From d8ef5f69915c2941a88f58dbe0a0b6eb53d67346 Mon Sep 17 00:00:00 2001 From: Steve Plimpton Date: Tue, 5 Nov 2019 12:57:34 -0700 Subject: [PATCH 001/717] added internal fix dummy command to enable more control of fix ordering --- src/GRANULAR/pair_gran_hooke_history.cpp | 25 +++++++-- src/GRANULAR/pair_gran_hooke_history.h | 1 + src/GRANULAR/pair_granular.cpp | 41 ++++++++++----- src/GRANULAR/pair_granular.h | 3 +- src/USER-BOCS/fix_bocs.cpp | 4 +- src/USER-MISC/fix_srp.cpp | 17 ++++--- src/USER-MISC/pair_srp.cpp | 13 +++-- src/fix.cpp | 1 + src/fix.h | 1 + src/fix_balance.cpp | 1 + src/fix_deform.cpp | 1 + src/fix_dummy.cpp | 65 ++++++++++++++++++++++++ src/fix_dummy.h | 53 +++++++++++++++++++ src/fix_neigh_history.cpp | 14 +++++ src/fix_nh.cpp | 4 +- src/modify.cpp | 40 +++++++++++++++ src/modify.h | 1 + 17 files changed, 253 insertions(+), 32 deletions(-) create mode 100644 src/fix_dummy.cpp create mode 100644 src/fix_dummy.h diff --git a/src/GRANULAR/pair_gran_hooke_history.cpp b/src/GRANULAR/pair_gran_hooke_history.cpp index de205dce91..3375d9a7a3 100644 --- a/src/GRANULAR/pair_gran_hooke_history.cpp +++ b/src/GRANULAR/pair_gran_hooke_history.cpp @@ -24,6 +24,7 @@ #include "update.h" #include "modify.h" #include "fix.h" +#include "fix_dummy.h" #include "fix_neigh_history.h" #include "comm.h" #include "neighbor.h" @@ -43,7 +44,6 @@ PairGranHookeHistory::PairGranHookeHistory(LAMMPS *lmp) : Pair(lmp) no_virial_fdotr_compute = 1; history = 1; size_history = 3; - fix_history = NULL; single_extra = 10; svector = new double[10]; @@ -60,6 +60,19 @@ PairGranHookeHistory::PairGranHookeHistory(LAMMPS *lmp) : Pair(lmp) // keep default behavior of history[i][j] = -history[j][i] nondefault_history_transfer = 0; + + // create dummy fix as placeholder for FixNeighHistory + // this is so final order of Modify:fix will conform to input script + + fix_history = NULL; + + char **fixarg = new char*[3]; + fixarg[0] = (char *) "NEIGH_HISTORY_DUMMY"; + fixarg[1] = (char *) "all"; + fixarg[2] = (char *) "DUMMY"; + modify->add_fix(3,fixarg,1); + delete [] fixarg; + fix_dummy = (FixDummy *) modify->fix[modify->nfix-1]; } /* ---------------------------------------------------------------------- */ @@ -69,7 +82,9 @@ PairGranHookeHistory::~PairGranHookeHistory() if (copymode) return; delete [] svector; - if (fix_history) modify->delete_fix("NEIGH_HISTORY"); + + if (!fix_history) modify->delete_fix("NEIGH_HISTORY_DUMMY"); + else modify->delete_fix("NEIGH_HISTORY"); if (allocated) { memory->destroy(setflag); @@ -412,7 +427,9 @@ void PairGranHookeHistory::init_style() dt = update->dt; - // if first init, create Fix needed for storing shear history + // if history is stored and first init, create Fix to store history + // it replaces FixDummy, created in the constructor + // this is so its order in the fix list is preserved if (history && fix_history == NULL) { char dnumstr[16]; @@ -422,7 +439,7 @@ void PairGranHookeHistory::init_style() fixarg[1] = (char *) "all"; fixarg[2] = (char *) "NEIGH_HISTORY"; fixarg[3] = dnumstr; - modify->add_fix(4,fixarg,1); + modify->replace_fix("NEIGH_HISTORY_DUMMY",4,fixarg,1); delete [] fixarg; fix_history = (FixNeighHistory *) modify->fix[modify->nfix-1]; fix_history->pair = this; diff --git a/src/GRANULAR/pair_gran_hooke_history.h b/src/GRANULAR/pair_gran_hooke_history.h index 81f2d8fd4a..309af54ee6 100644 --- a/src/GRANULAR/pair_gran_hooke_history.h +++ b/src/GRANULAR/pair_gran_hooke_history.h @@ -56,6 +56,7 @@ class PairGranHookeHistory : public Pair { int size_history; + class FixDummy *fix_dummy; class FixNeighHistory *fix_history; // storage of rigid body masses for use in granular interactions diff --git a/src/GRANULAR/pair_granular.cpp b/src/GRANULAR/pair_granular.cpp index 85eab1fb9e..d37ae8c00c 100644 --- a/src/GRANULAR/pair_granular.cpp +++ b/src/GRANULAR/pair_granular.cpp @@ -1,13 +1,14 @@ /* ---------------------------------------------------------------------- -http://lammps.sandia.gov, Sandia National Laboratories -Steve Plimpton, sjplimp@sandia.gov + 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. + 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. + See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ /* ---------------------------------------------------------------------- @@ -25,6 +26,7 @@ See the README file in the top-level LAMMPS directory. #include "update.h" #include "modify.h" #include "fix.h" +#include "fix_dummy.h" #include "fix_neigh_history.h" #include "comm.h" #include "neighbor.h" @@ -62,7 +64,6 @@ PairGranular::PairGranular(LAMMPS *lmp) : Pair(lmp) { single_enable = 1; no_virial_fdotr_compute = 1; - fix_history = NULL; single_extra = 12; svector = new double[single_extra]; @@ -90,6 +91,19 @@ PairGranular::PairGranular(LAMMPS *lmp) : Pair(lmp) nondefault_history_transfer = 0; tangential_history_index = 0; roll_history_index = twist_history_index = 0; + + // create dummy fix as placeholder for FixNeighHistory + // this is so final order of Modify:fix will conform to input script + + fix_history = NULL; + + char **fixarg = new char*[3]; + fixarg[0] = (char *) "NEIGH_HISTORY_DUMMY"; + fixarg[1] = (char *) "all"; + fixarg[2] = (char *) "DUMMY"; + modify->add_fix(3,fixarg,1); + delete [] fixarg; + fix_dummy = (FixDummy *) modify->fix[modify->nfix-1]; } /* ---------------------------------------------------------------------- */ @@ -97,7 +111,9 @@ PairGranular::PairGranular(LAMMPS *lmp) : Pair(lmp) PairGranular::~PairGranular() { delete [] svector; - if (fix_history) modify->delete_fix("NEIGH_HISTORY"); + + if (!fix_history) modify->delete_fix("NEIGH_HISTORY_DUMMY"); + else modify->delete_fix("NEIGH_HISTORY"); if (allocated) { memory->destroy(setflag); @@ -1021,8 +1037,9 @@ void PairGranular::init_style() dt = update->dt; - // if history is stored: - // if first init, create Fix needed for storing history + // if history is stored and first init, create Fix to store history + // it replaces FixDummy, created in the constructor + // this is so its order in the fix list is preserved if (use_history && fix_history == NULL) { char dnumstr[16]; @@ -1032,7 +1049,7 @@ void PairGranular::init_style() fixarg[1] = (char *) "all"; fixarg[2] = (char *) "NEIGH_HISTORY"; fixarg[3] = dnumstr; - modify->add_fix(4,fixarg,1); + modify->replace_fix("NEIGH_HISTORY_DUMMY",4,fixarg,1); delete [] fixarg; fix_history = (FixNeighHistory *) modify->fix[modify->nfix-1]; fix_history->pair = this; diff --git a/src/GRANULAR/pair_granular.h b/src/GRANULAR/pair_granular.h index d799acb733..e9ba629b49 100644 --- a/src/GRANULAR/pair_granular.h +++ b/src/GRANULAR/pair_granular.h @@ -51,6 +51,7 @@ class PairGranular : public Pair { double *maxrad_dynamic,*maxrad_frozen; double **cut; + class FixDummy *fix_dummy; class FixNeighHistory *fix_history; // storage of rigid body masses for use in granular interactions @@ -111,4 +112,4 @@ 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/USER-BOCS/fix_bocs.cpp b/src/USER-BOCS/fix_bocs.cpp index adce231bf1..0c5ebb7df4 100644 --- a/src/USER-BOCS/fix_bocs.cpp +++ b/src/USER-BOCS/fix_bocs.cpp @@ -302,10 +302,10 @@ FixBocs::FixBocs(LAMMPS *lmp, int narg, char **arg) : // pre_exchange only required if flips can occur due to shape changes if (flipflag && (p_flag[3] || p_flag[4] || p_flag[5])) - pre_exchange_flag = 1; + pre_exchange_flag = pre_exchange_migrate = 1; if (flipflag && (domain->yz != 0.0 || domain->xz != 0.0 || domain->xy != 0.0)) - pre_exchange_flag = 1; + pre_exchange_flag = pre_exchange_migrate = 1; } // convert input periods to frequencies diff --git a/src/USER-MISC/fix_srp.cpp b/src/USER-MISC/fix_srp.cpp index c0db252db4..2a96555fd7 100644 --- a/src/USER-MISC/fix_srp.cpp +++ b/src/USER-MISC/fix_srp.cpp @@ -22,6 +22,7 @@ #include "atom.h" #include "force.h" #include "domain.h" +#include "modify.h" #include "comm.h" #include "memory.h" #include "error.h" @@ -112,19 +113,21 @@ void FixSRP::init() if ((bptype < 1) || (bptype > atom->ntypes)) error->all(FLERR,"Illegal bond particle type"); - // fix SRP should be the first fix running at the PRE_EXCHANGE step. - // Otherwise it might conflict with, e.g. fix deform + // this fix must come before any fix which migrates atoms in its pre_exchange() + // b/c this fix's pre_exchange() creates per-atom data structure + // that data must be current for atom migration to carry it along - if (modify->n_pre_exchange > 1) { - char *first = modify->fix[modify->list_pre_exchange[0]]->id; - if ((comm->me == 0) && (strcmp(id,first) != 0)) - error->warning(FLERR,"Internal fix for pair srp defined too late." - " May lead to incorrect behavior."); + for (int i = 0; i < modify->nfix; i++) { + if (modify->fix[i] == this) break; + if (modify->fix[i]->pre_exchange_migrate) + error->all(FLERR,"Fix SRP comes after a fix which " + "migrates atoms in pre_exchange"); } // setup neigh exclusions for diff atom types // bond particles do not interact with other types // type bptype only interacts with itself + char* arg1[4]; arg1[0] = (char *) "exclude"; arg1[1] = (char *) "type"; diff --git a/src/USER-MISC/pair_srp.cpp b/src/USER-MISC/pair_srp.cpp index 606fdc9fc5..d0e73b265d 100644 --- a/src/USER-MISC/pair_srp.cpp +++ b/src/USER-MISC/pair_srp.cpp @@ -79,13 +79,18 @@ PairSRP::PairSRP(LAMMPS *lmp) : Pair(lmp) segment = NULL; // generate unique fix-id for this pair style instance + fix_id = strdup("XX_FIX_SRP"); fix_id[0] = '0' + srp_instance / 10; fix_id[1] = '0' + srp_instance % 10; ++srp_instance; - // create fix SRP instance here, as it has to - // be executed before all other fixes + // create fix SRP instance here + // similar to granular pair styles with history, + // this should be early enough that FixSRP::pre_exchange() + // will be invoked before other fixes that migrate atoms + // this is checked for in FixSRP + char **fixarg = new char*[3]; fixarg[0] = fix_id; fixarg[1] = (char *) "all"; @@ -143,7 +148,6 @@ PairSRP::~PairSRP() ------------------------------------------------------------------------- */ void PairSRP::compute(int eflag, int vflag) - { // setup energy and virial ev_init(eflag, vflag); @@ -458,6 +462,7 @@ void PairSRP::init_style() error->all(FLERR,"PairSRP: Pair srp requires newton pair on"); // verify that fix SRP is still defined and has not been changed. + int ifix = modify->find_fix(fix_id); if (f_srp != (FixSRP *)modify->fix[ifix]) error->all(FLERR,"Fix SRP has been changed unexpectedly"); @@ -471,6 +476,7 @@ void PairSRP::init_style() // bonds of this type will be represented by bond particles // if bond type is 0, then all bonds have bond particles // btype = bond type + char c0[20]; char* arg0[2]; sprintf(c0, "%d", btype); @@ -506,7 +512,6 @@ void PairSRP::init_style() double PairSRP::init_one(int i, int j) { - if (setflag[i][j] == 0) error->all(FLERR,"PairSRP: All pair coeffs are not set"); cut[j][i] = cut[i][j]; diff --git a/src/fix.cpp b/src/fix.cpp index d86acf0ae4..024d44e5bd 100644 --- a/src/fix.cpp +++ b/src/fix.cpp @@ -79,6 +79,7 @@ Fix::Fix(LAMMPS *lmp, int /*narg*/, char **arg) : respa_level = -1; maxexchange = 0; maxexchange_dynamic = 0; + pre_exchange_migrate = 0; scalar_flag = vector_flag = array_flag = 0; peratom_flag = local_flag = 0; diff --git a/src/fix.h b/src/fix.h index bcab6f289e..fa016232f0 100644 --- a/src/fix.h +++ b/src/fix.h @@ -58,6 +58,7 @@ class Fix : protected Pointers { int respa_level; // which respa level to apply fix (1-Nrespa) int maxexchange; // max # of per-atom values for Comm::exchange() int maxexchange_dynamic; // 1 if fix sets maxexchange dynamically + int pre_exchange_migrate; // 1 if fix migrates atoms in pre_exchange() int scalar_flag; // 0/1 if compute_scalar() function exists int vector_flag; // 0/1 if compute_vector() function exists diff --git a/src/fix_balance.cpp b/src/fix_balance.cpp index 5ca1ec124a..46525796a7 100644 --- a/src/fix_balance.cpp +++ b/src/fix_balance.cpp @@ -40,6 +40,7 @@ FixBalance::FixBalance(LAMMPS *lmp, int narg, char **arg) : if (narg < 6) error->all(FLERR,"Illegal fix balance command"); box_change_domain = 1; + pre_exchange_migrate = 1; scalar_flag = 1; extscalar = 0; vector_flag = 1; diff --git a/src/fix_deform.cpp b/src/fix_deform.cpp index 9d84c4bb62..7b3239f1af 100644 --- a/src/fix_deform.cpp +++ b/src/fix_deform.cpp @@ -48,6 +48,7 @@ rfix(NULL), irregular(NULL), set(NULL) no_change_box = 1; restart_global = 1; + pre_exchange_migrate = 1; nevery = force->inumeric(FLERR,arg[3]); if (nevery <= 0) error->all(FLERR,"Illegal fix deform command"); diff --git a/src/fix_dummy.cpp b/src/fix_dummy.cpp new file mode 100644 index 0000000000..fd9d0cf062 --- /dev/null +++ b/src/fix_dummy.cpp @@ -0,0 +1,65 @@ +/* ---------------------------------------------------------------------- + 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 "fix_dummy.h" +#include +#include "error.h" + +using namespace LAMMPS_NS; +using namespace FixConst; + +/* ---------------------------------------------------------------------- */ + +FixDummy::FixDummy(LAMMPS *lmp, int narg, char **arg) : + Fix(lmp, narg, arg) +{ + // process optional args + // customize here and in setmask() by adding a new keyword from fix.h + // only necessary if both of these are true: + // (a) the real fix you are placeholding for defines the method + // (b) the real fix will be defined so late in run initialization + // that the dummy fix will have already been processed by Modify::init() + // to add its index to its lists of fixes to invoke during timestepping + + initial_integrate_flag = final_integrate_flag = 0; + pre_exchange_flag = pre_neighbor_flag = 0; + pre_force_flag = post_force_flag = 0; + end_of_step_flag = 0; + + int iarg = 3; + while (iarg < narg) { + if (strcmp(arg[iarg],"initial_integrate") == 0) initial_integrate_flag = 1; + else if (strcmp(arg[iarg],"final_integrate") == 0) final_integrate_flag = 1; + else if (strcmp(arg[iarg],"final_integrate") == 0) final_integrate_flag = 1; + else if (strcmp(arg[iarg],"final_integrate") == 0) final_integrate_flag = 1; + else if (strcmp(arg[iarg],"final_integrate") == 0) final_integrate_flag = 1; + else if (strcmp(arg[iarg],"final_integrate") == 0) final_integrate_flag = 1; + else error->all(FLERR,"Illegal fix DUMMY command"); + iarg++; + } +} + +/* ---------------------------------------------------------------------- */ + +int FixDummy::setmask() +{ + int mask = 0; + if (initial_integrate_flag) mask |= INITIAL_INTEGRATE; + if (final_integrate_flag) mask |= FINAL_INTEGRATE; + if (pre_exchange_flag) mask |= PRE_EXCHANGE; + if (pre_neighbor_flag) mask |= PRE_NEIGHBOR; + if (pre_force_flag) mask |= PRE_FORCE; + if (post_force_flag) mask |= POST_FORCE; + if (end_of_step_flag) mask |= END_OF_STEP; + return mask; +} diff --git a/src/fix_dummy.h b/src/fix_dummy.h new file mode 100644 index 0000000000..ea8ce97c3a --- /dev/null +++ b/src/fix_dummy.h @@ -0,0 +1,53 @@ +/* -*- 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 FIX_CLASS + +FixStyle(DUMMY,FixDummy) + +#else + +#ifndef LMP_FIX_DUMMY_H +#define LMP_FIX_DUMMY_H + +#include "fix.h" + +namespace LAMMPS_NS { + +class FixDummy : public Fix { + public: + FixDummy(class LAMMPS *, int, char **); + virtual ~FixDummy() {} + int setmask(); + + protected: + int initial_integrate_flag,final_integrate_flag; + int pre_exchange_flag,pre_neighbor_flag; + int pre_force_flag,post_force_flag; + int end_of_step_flag; +}; + +} + +#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/fix_neigh_history.cpp b/src/fix_neigh_history.cpp index 673e2b1c06..1967e43336 100644 --- a/src/fix_neigh_history.cpp +++ b/src/fix_neigh_history.cpp @@ -19,6 +19,7 @@ #include "comm.h" #include "neighbor.h" #include "neigh_list.h" +#include "modify.h" #include "force.h" #include "pair.h" #include "memory.h" @@ -147,6 +148,19 @@ void FixNeighHistory::init() if (atom->tag_enable == 0) error->all(FLERR,"Neighbor history requires atoms have IDs"); + // this fix must come before any fix which migrates atoms in its pre_exchange() + // b/c this fix's pre_exchange() creates per-atom data structure + // that data must be current for atom migration to carry it along + + for (int i = 0; i < modify->nfix; i++) { + if (modify->fix[i] == this) break; + if (modify->fix[i]->pre_exchange_migrate) + error->all(FLERR,"Fix neigh_history comes after a fix which " + "migrates atoms in pre_exchange"); + } + + // setup data struct + allocate_pages(); } diff --git a/src/fix_nh.cpp b/src/fix_nh.cpp index bb3fe7559c..3098a8c72c 100644 --- a/src/fix_nh.cpp +++ b/src/fix_nh.cpp @@ -492,10 +492,10 @@ FixNH::FixNH(LAMMPS *lmp, int narg, char **arg) : // pre_exchange only required if flips can occur due to shape changes if (flipflag && (p_flag[3] || p_flag[4] || p_flag[5])) - pre_exchange_flag = 1; + pre_exchange_flag = pre_exchange_migrate = 1; if (flipflag && (domain->yz != 0.0 || domain->xz != 0.0 || domain->xy != 0.0)) - pre_exchange_flag = 1; + pre_exchange_flag = pre_exchange_migrate = 1; } // convert input periods to frequencies diff --git a/src/modify.cpp b/src/modify.cpp index 101540f786..732770f34e 100644 --- a/src/modify.cpp +++ b/src/modify.cpp @@ -953,6 +953,46 @@ void Modify::add_fix(int narg, char **arg, int trysuffix) fix[ifix]->post_constructor(); } +/* ---------------------------------------------------------------------- + replace replaceID fix with a new fix + this is used by callers to preserve ordering of fixes + e.g. create replaceID as a FixDummy instance early in the input script + replace it later with the desired Fix instance +------------------------------------------------------------------------- */ + +void Modify::replace_fix(const char *replaceID, + int narg, char **arg, int trysuffix) +{ + int ifix = find_fix(replaceID); + if (ifix < 0) error->all(FLERR,"Modify replace_fix ID could not be found"); + + // change ID, igroup, style of fix being replaced to match new fix + // requires some error checking on arguments for new fix + + if (narg < 3) error->all(FLERR,"Illegal replace_fix invocation"); + int jfix = find_fix(arg[0]); + if (jfix >= 0) error->all(FLERR,"Replace_fix ID is already in use"); + + delete [] fix[ifix]->id; + int n = strlen(arg[0]) + 1; + fix[ifix]->id = new char[n]; + strcpy(fix[ifix]->id,arg[0]); + + int jgroup = group->find(arg[1]); + if (jgroup == -1) error->all(FLERR,"Could not find replace_fix group ID"); + fix[ifix]->igroup = jgroup; + + delete [] fix[ifix]->style; + n = strlen(arg[2]) + 1; + fix[ifix]->style = new char[n]; + strcpy(fix[ifix]->style,arg[2]); + + // invoke add_fix + // it will find and overwrite the replaceID fix + + add_fix(narg,arg,trysuffix); +} + /* ---------------------------------------------------------------------- one instance per fix in style_fix.h ------------------------------------------------------------------------- */ diff --git a/src/modify.h b/src/modify.h index b736485196..0b809d4d6a 100644 --- a/src/modify.h +++ b/src/modify.h @@ -96,6 +96,7 @@ class Modify : protected Pointers { virtual int min_reset_ref(); void add_fix(int, char **, int trysuffix=1); + void replace_fix(const char *, int, char **, int trysuffix=1); void modify_fix(int, char **); void delete_fix(const char *); void delete_fix(int); -- GitLab From ca0cf23a4b56e62965c9eec8858b60d88578d7ef Mon Sep 17 00:00:00 2001 From: Steve Plimpton Date: Tue, 5 Nov 2019 16:59:44 -0700 Subject: [PATCH 002/717] fix a bug with indexing the replaced fix and optional args --- src/GRANULAR/pair_gran_hooke_history.cpp | 3 ++- src/GRANULAR/pair_granular.cpp | 3 ++- src/fix_dummy.cpp | 11 ++++++----- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/src/GRANULAR/pair_gran_hooke_history.cpp b/src/GRANULAR/pair_gran_hooke_history.cpp index 3375d9a7a3..3c27b9f423 100644 --- a/src/GRANULAR/pair_gran_hooke_history.cpp +++ b/src/GRANULAR/pair_gran_hooke_history.cpp @@ -441,7 +441,8 @@ void PairGranHookeHistory::init_style() fixarg[3] = dnumstr; modify->replace_fix("NEIGH_HISTORY_DUMMY",4,fixarg,1); delete [] fixarg; - fix_history = (FixNeighHistory *) modify->fix[modify->nfix-1]; + int ifix = modify->find_fix("NEIGH_HISTORY"); + fix_history = (FixNeighHistory *) modify->fix[modify->ifix]; fix_history->pair = this; } diff --git a/src/GRANULAR/pair_granular.cpp b/src/GRANULAR/pair_granular.cpp index d37ae8c00c..27547fff91 100644 --- a/src/GRANULAR/pair_granular.cpp +++ b/src/GRANULAR/pair_granular.cpp @@ -1051,7 +1051,8 @@ void PairGranular::init_style() fixarg[3] = dnumstr; modify->replace_fix("NEIGH_HISTORY_DUMMY",4,fixarg,1); delete [] fixarg; - fix_history = (FixNeighHistory *) modify->fix[modify->nfix-1]; + int ifix = modify->find_fix("NEIGH_HISTORY"); + fix_history = (FixNeighHistory *) modify->fix[modify->ifix]; fix_history->pair = this; } diff --git a/src/fix_dummy.cpp b/src/fix_dummy.cpp index fd9d0cf062..a08ac187ba 100644 --- a/src/fix_dummy.cpp +++ b/src/fix_dummy.cpp @@ -29,7 +29,7 @@ FixDummy::FixDummy(LAMMPS *lmp, int narg, char **arg) : // (a) the real fix you are placeholding for defines the method // (b) the real fix will be defined so late in run initialization // that the dummy fix will have already been processed by Modify::init() - // to add its index to its lists of fixes to invoke during timestepping + // so its index needs to be added to lists of fixes invoked during a run initial_integrate_flag = final_integrate_flag = 0; pre_exchange_flag = pre_neighbor_flag = 0; @@ -40,10 +40,11 @@ FixDummy::FixDummy(LAMMPS *lmp, int narg, char **arg) : while (iarg < narg) { if (strcmp(arg[iarg],"initial_integrate") == 0) initial_integrate_flag = 1; else if (strcmp(arg[iarg],"final_integrate") == 0) final_integrate_flag = 1; - else if (strcmp(arg[iarg],"final_integrate") == 0) final_integrate_flag = 1; - else if (strcmp(arg[iarg],"final_integrate") == 0) final_integrate_flag = 1; - else if (strcmp(arg[iarg],"final_integrate") == 0) final_integrate_flag = 1; - else if (strcmp(arg[iarg],"final_integrate") == 0) final_integrate_flag = 1; + else if (strcmp(arg[iarg],"pre_exchange") == 0) pre_exchange_flag = 1; + else if (strcmp(arg[iarg],"pre_neighbor") == 0) pre_neighbor_flag = 1; + else if (strcmp(arg[iarg],"pre_force") == 0) pre_force_flag = 1; + else if (strcmp(arg[iarg],"post_force") == 0) post_force_flag = 1; + else if (strcmp(arg[iarg],"end_of_step") == 0) end_of_step_flag = 1; else error->all(FLERR,"Illegal fix DUMMY command"); iarg++; } -- GitLab From 09e539cce198db21068db9a0023316b11b18dae6 Mon Sep 17 00:00:00 2001 From: Steve Plimpton Date: Wed, 6 Nov 2019 08:35:31 -0700 Subject: [PATCH 003/717] make IDs of 2 fix neigh history instances unique --- src/GRANULAR/pair_gran_hooke_history.cpp | 14 +++++++------- src/GRANULAR/pair_granular.cpp | 14 +++++++------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/src/GRANULAR/pair_gran_hooke_history.cpp b/src/GRANULAR/pair_gran_hooke_history.cpp index 3c27b9f423..87bc49e332 100644 --- a/src/GRANULAR/pair_gran_hooke_history.cpp +++ b/src/GRANULAR/pair_gran_hooke_history.cpp @@ -67,7 +67,7 @@ PairGranHookeHistory::PairGranHookeHistory(LAMMPS *lmp) : Pair(lmp) fix_history = NULL; char **fixarg = new char*[3]; - fixarg[0] = (char *) "NEIGH_HISTORY_DUMMY"; + fixarg[0] = (char *) "NEIGH_HISTORY_HOOKE_HERTZ_DUMMY"; fixarg[1] = (char *) "all"; fixarg[2] = (char *) "DUMMY"; modify->add_fix(3,fixarg,1); @@ -83,8 +83,8 @@ PairGranHookeHistory::~PairGranHookeHistory() delete [] svector; - if (!fix_history) modify->delete_fix("NEIGH_HISTORY_DUMMY"); - else modify->delete_fix("NEIGH_HISTORY"); + if (!fix_history) modify->delete_fix("NEIGH_HISTORY_HOOKE_HERTZ_DUMMY"); + else modify->delete_fix("NEIGH_HISTORY_HOOKE_HERTZ"); if (allocated) { memory->destroy(setflag); @@ -435,13 +435,13 @@ void PairGranHookeHistory::init_style() char dnumstr[16]; sprintf(dnumstr,"%d",size_history); char **fixarg = new char*[4]; - fixarg[0] = (char *) "NEIGH_HISTORY"; + fixarg[0] = (char *) "NEIGH_HISTORY_HOOKE_HERTZ"; fixarg[1] = (char *) "all"; fixarg[2] = (char *) "NEIGH_HISTORY"; fixarg[3] = dnumstr; - modify->replace_fix("NEIGH_HISTORY_DUMMY",4,fixarg,1); + modify->replace_fix("NEIGH_HISTORY_HOOKE_HERTZ_DUMMY",4,fixarg,1); delete [] fixarg; - int ifix = modify->find_fix("NEIGH_HISTORY"); + int ifix = modify->find_fix("NEIGH_HISTORY_HOOKE_HERTZ"); fix_history = (FixNeighHistory *) modify->fix[modify->ifix]; fix_history->pair = this; } @@ -509,7 +509,7 @@ void PairGranHookeHistory::init_style() // set fix which stores history info if (history) { - int ifix = modify->find_fix("NEIGH_HISTORY"); + int ifix = modify->find_fix("NEIGH_HISTORY_HOOKE_HERTZ"); if (ifix < 0) error->all(FLERR,"Could not find pair fix neigh history ID"); fix_history = (FixNeighHistory *) modify->fix[ifix]; } diff --git a/src/GRANULAR/pair_granular.cpp b/src/GRANULAR/pair_granular.cpp index 27547fff91..1fe0950986 100644 --- a/src/GRANULAR/pair_granular.cpp +++ b/src/GRANULAR/pair_granular.cpp @@ -98,7 +98,7 @@ PairGranular::PairGranular(LAMMPS *lmp) : Pair(lmp) fix_history = NULL; char **fixarg = new char*[3]; - fixarg[0] = (char *) "NEIGH_HISTORY_DUMMY"; + fixarg[0] = (char *) "NEIGH_HISTORY_GRANULAR_DUMMY"; fixarg[1] = (char *) "all"; fixarg[2] = (char *) "DUMMY"; modify->add_fix(3,fixarg,1); @@ -112,8 +112,8 @@ PairGranular::~PairGranular() { delete [] svector; - if (!fix_history) modify->delete_fix("NEIGH_HISTORY_DUMMY"); - else modify->delete_fix("NEIGH_HISTORY"); + if (!fix_history) modify->delete_fix("NEIGH_HISTORY_GRANULAR_DUMMY"); + else modify->delete_fix("NEIGH_HISTORY_GRANULAR"); if (allocated) { memory->destroy(setflag); @@ -1045,13 +1045,13 @@ void PairGranular::init_style() char dnumstr[16]; sprintf(dnumstr,"%d",size_history); char **fixarg = new char*[4]; - fixarg[0] = (char *) "NEIGH_HISTORY"; + fixarg[0] = (char *) "NEIGH_HISTORY_GRANULAR"; fixarg[1] = (char *) "all"; fixarg[2] = (char *) "NEIGH_HISTORY"; fixarg[3] = dnumstr; - modify->replace_fix("NEIGH_HISTORY_DUMMY",4,fixarg,1); + modify->replace_fix("NEIGH_HISTORY_GRANULAR_DUMMY",4,fixarg,1); delete [] fixarg; - int ifix = modify->find_fix("NEIGH_HISTORY"); + int ifix = modify->find_fix("NEIGH_HISTORY_GRANULAR"); fix_history = (FixNeighHistory *) modify->fix[modify->ifix]; fix_history->pair = this; } @@ -1122,7 +1122,7 @@ void PairGranular::init_style() // set fix which stores history info if (size_history > 0) { - int ifix = modify->find_fix("NEIGH_HISTORY"); + int ifix = modify->find_fix("NEIGH_HISTORY_GRANULAR"); if (ifix < 0) error->all(FLERR,"Could not find pair fix neigh history ID"); fix_history = (FixNeighHistory *) modify->fix[ifix]; } -- GitLab From d34502669c69992ebaccff5ab427db93d6b334cd Mon Sep 17 00:00:00 2001 From: Steve Plimpton Date: Wed, 6 Nov 2019 09:38:38 -0700 Subject: [PATCH 004/717] fixed a typo --- src/GRANULAR/pair_gran_hooke_history.cpp | 18 +++++++++--------- src/GRANULAR/pair_granular.cpp | 4 ++-- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/GRANULAR/pair_gran_hooke_history.cpp b/src/GRANULAR/pair_gran_hooke_history.cpp index 87bc49e332..0c88dd8eed 100644 --- a/src/GRANULAR/pair_gran_hooke_history.cpp +++ b/src/GRANULAR/pair_gran_hooke_history.cpp @@ -67,12 +67,12 @@ PairGranHookeHistory::PairGranHookeHistory(LAMMPS *lmp) : Pair(lmp) fix_history = NULL; char **fixarg = new char*[3]; - fixarg[0] = (char *) "NEIGH_HISTORY_HOOKE_HERTZ_DUMMY"; + fixarg[0] = (char *) "NEIGH_HISTORY_HH_DUMMY"; fixarg[1] = (char *) "all"; fixarg[2] = (char *) "DUMMY"; modify->add_fix(3,fixarg,1); delete [] fixarg; - fix_dummy = (FixDummy *) modify->fix[modify->nfix-1]; + fix_dummy = (FixDummy *) modify->fix[nfix-1]; } /* ---------------------------------------------------------------------- */ @@ -83,8 +83,8 @@ PairGranHookeHistory::~PairGranHookeHistory() delete [] svector; - if (!fix_history) modify->delete_fix("NEIGH_HISTORY_HOOKE_HERTZ_DUMMY"); - else modify->delete_fix("NEIGH_HISTORY_HOOKE_HERTZ"); + if (!fix_history) modify->delete_fix("NEIGH_HISTORY_HH_DUMMY"); + else modify->delete_fix("NEIGH_HISTORY_HH"); if (allocated) { memory->destroy(setflag); @@ -435,14 +435,14 @@ void PairGranHookeHistory::init_style() char dnumstr[16]; sprintf(dnumstr,"%d",size_history); char **fixarg = new char*[4]; - fixarg[0] = (char *) "NEIGH_HISTORY_HOOKE_HERTZ"; + fixarg[0] = (char *) "NEIGH_HISTORY_HH"; fixarg[1] = (char *) "all"; fixarg[2] = (char *) "NEIGH_HISTORY"; fixarg[3] = dnumstr; - modify->replace_fix("NEIGH_HISTORY_HOOKE_HERTZ_DUMMY",4,fixarg,1); + modify->replace_fix("NEIGH_HISTORY_HH_DUMMY",4,fixarg,1); delete [] fixarg; - int ifix = modify->find_fix("NEIGH_HISTORY_HOOKE_HERTZ"); - fix_history = (FixNeighHistory *) modify->fix[modify->ifix]; + int ifix = modify->find_fix("NEIGH_HISTORY_HH"); + fix_history = (FixNeighHistory *) modify->fix[ifix]; fix_history->pair = this; } @@ -509,7 +509,7 @@ void PairGranHookeHistory::init_style() // set fix which stores history info if (history) { - int ifix = modify->find_fix("NEIGH_HISTORY_HOOKE_HERTZ"); + int ifix = modify->find_fix("NEIGH_HISTORY_HH"); if (ifix < 0) error->all(FLERR,"Could not find pair fix neigh history ID"); fix_history = (FixNeighHistory *) modify->fix[ifix]; } diff --git a/src/GRANULAR/pair_granular.cpp b/src/GRANULAR/pair_granular.cpp index 1fe0950986..ba7a3bce50 100644 --- a/src/GRANULAR/pair_granular.cpp +++ b/src/GRANULAR/pair_granular.cpp @@ -103,7 +103,7 @@ PairGranular::PairGranular(LAMMPS *lmp) : Pair(lmp) fixarg[2] = (char *) "DUMMY"; modify->add_fix(3,fixarg,1); delete [] fixarg; - fix_dummy = (FixDummy *) modify->fix[modify->nfix-1]; + fix_dummy = (FixDummy *) modify->fix[nfix-1]; } /* ---------------------------------------------------------------------- */ @@ -1052,7 +1052,7 @@ void PairGranular::init_style() modify->replace_fix("NEIGH_HISTORY_GRANULAR_DUMMY",4,fixarg,1); delete [] fixarg; int ifix = modify->find_fix("NEIGH_HISTORY_GRANULAR"); - fix_history = (FixNeighHistory *) modify->fix[modify->ifix]; + fix_history = (FixNeighHistory *) modify->fix[ifix]; fix_history->pair = this; } -- GitLab From 6af726e58968ae2bd9baca795d868a17ad4b9543 Mon Sep 17 00:00:00 2001 From: Steve Plimpton Date: Wed, 6 Nov 2019 10:26:13 -0700 Subject: [PATCH 005/717] undo a re-bug change - sigh --- src/GRANULAR/pair_gran_hooke_history.cpp | 2 +- src/GRANULAR/pair_granular.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/GRANULAR/pair_gran_hooke_history.cpp b/src/GRANULAR/pair_gran_hooke_history.cpp index 0c88dd8eed..29ca53d361 100644 --- a/src/GRANULAR/pair_gran_hooke_history.cpp +++ b/src/GRANULAR/pair_gran_hooke_history.cpp @@ -72,7 +72,7 @@ PairGranHookeHistory::PairGranHookeHistory(LAMMPS *lmp) : Pair(lmp) fixarg[2] = (char *) "DUMMY"; modify->add_fix(3,fixarg,1); delete [] fixarg; - fix_dummy = (FixDummy *) modify->fix[nfix-1]; + fix_dummy = (FixDummy *) modify->fix[modify->nfix-1]; } /* ---------------------------------------------------------------------- */ diff --git a/src/GRANULAR/pair_granular.cpp b/src/GRANULAR/pair_granular.cpp index ba7a3bce50..fef8ded5f7 100644 --- a/src/GRANULAR/pair_granular.cpp +++ b/src/GRANULAR/pair_granular.cpp @@ -103,7 +103,7 @@ PairGranular::PairGranular(LAMMPS *lmp) : Pair(lmp) fixarg[2] = (char *) "DUMMY"; modify->add_fix(3,fixarg,1); delete [] fixarg; - fix_dummy = (FixDummy *) modify->fix[nfix-1]; + fix_dummy = (FixDummy *) modify->fix[modify->nfix-1]; } /* ---------------------------------------------------------------------- */ -- GitLab From 3736af0aaf5f1522e1e48ceb5fceeaada30cb3e2 Mon Sep 17 00:00:00 2001 From: Steve Plimpton Date: Tue, 26 Nov 2019 13:42:32 -0700 Subject: [PATCH 006/717] initial refactoring on AtomVec class --- src/DIPOLE/atom_vec_dipole.cpp | 884 +---------- src/DIPOLE/atom_vec_dipole.h | 45 - src/MOLECULE/atom_vec_angle.cpp | 940 ++---------- src/MOLECULE/atom_vec_angle.h | 53 +- src/MOLECULE/atom_vec_bond.cpp | 855 +---------- src/MOLECULE/atom_vec_bond.h | 47 +- src/MOLECULE/atom_vec_full.cpp | 1171 ++------------- src/MOLECULE/atom_vec_full.h | 60 +- src/MOLECULE/atom_vec_molecular.cpp | 1151 ++------------- src/MOLECULE/atom_vec_molecular.h | 56 +- src/MOLECULE/atom_vec_template.cpp | 804 +--------- src/MOLECULE/atom_vec_template.h | 50 +- src/PERI/atom_vec_peri.cpp | 899 +----------- src/PERI/atom_vec_peri.h | 48 - src/SPIN/atom_vec_spin.cpp | 924 +----------- src/SPIN/atom_vec_spin.h | 54 - src/atom.cpp | 220 ++- src/atom.h | 146 +- src/atom_vec.cpp | 2112 ++++++++++++++++++++++++++- src/atom_vec.h | 159 +- src/atom_vec_atomic.cpp | 677 +-------- src/atom_vec_atomic.h | 40 +- src/atom_vec_charge.cpp | 762 +--------- src/atom_vec_charge.h | 45 - src/atom_vec_sphere.cpp | 1153 +-------------- src/atom_vec_sphere.h | 52 - 26 files changed, 3151 insertions(+), 10256 deletions(-) diff --git a/src/DIPOLE/atom_vec_dipole.cpp b/src/DIPOLE/atom_vec_dipole.cpp index 0b6a27888f..dc3279227d 100644 --- a/src/DIPOLE/atom_vec_dipole.cpp +++ b/src/DIPOLE/atom_vec_dipole.cpp @@ -31,880 +31,40 @@ AtomVecDipole::AtomVecDipole(LAMMPS *lmp) : AtomVec(lmp) molecular = 0; mass_type = 1; - comm_x_only = 0; - comm_f_only = 1; - size_forward = 6; - size_reverse = 3; - size_border = 11; - size_velocity = 3; - size_data_atom = 9; - size_data_vel = 4; - xcol_data = 4; - atom->q_flag = atom->mu_flag = 1; -} - -/* ---------------------------------------------------------------------- - grow atom arrays - n = 0 grows arrays by a chunk - n > 0 allocates arrays to size n -------------------------------------------------------------------------- */ - -void AtomVecDipole::grow(int n) -{ - if (n == 0) grow_nmax(); - else nmax = n; - atom->nmax = nmax; - if (nmax < 0 || nmax > MAXSMALLINT) - error->one(FLERR,"Per-processor system is too big"); - - tag = memory->grow(atom->tag,nmax,"atom:tag"); - type = memory->grow(atom->type,nmax,"atom:type"); - mask = memory->grow(atom->mask,nmax,"atom:mask"); - image = memory->grow(atom->image,nmax,"atom:image"); - x = memory->grow(atom->x,nmax,3,"atom:x"); - v = memory->grow(atom->v,nmax,3,"atom:v"); - f = memory->grow(atom->f,nmax*comm->nthreads,3,"atom:f"); - - q = memory->grow(atom->q,nmax,"atom:q"); - mu = memory->grow(atom->mu,nmax,4,"atom:mu"); - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - modify->fix[atom->extra_grow[iextra]]->grow_arrays(nmax); -} - -/* ---------------------------------------------------------------------- - reset local array ptrs -------------------------------------------------------------------------- */ - -void AtomVecDipole::grow_reset() -{ - tag = atom->tag; type = atom->type; - mask = atom->mask; image = atom->image; - x = atom->x; v = atom->v; f = atom->f; - q = atom->q; mu = atom->mu; -} - -/* ---------------------------------------------------------------------- - copy atom I info to atom J -------------------------------------------------------------------------- */ - -void AtomVecDipole::copy(int i, int j, int delflag) -{ - tag[j] = tag[i]; - type[j] = type[i]; - mask[j] = mask[i]; - image[j] = image[i]; - x[j][0] = x[i][0]; - x[j][1] = x[i][1]; - x[j][2] = x[i][2]; - v[j][0] = v[i][0]; - v[j][1] = v[i][1]; - v[j][2] = v[i][2]; - - q[j] = q[i]; - mu[j][0] = mu[i][0]; - mu[j][1] = mu[i][1]; - mu[j][2] = mu[i][2]; - mu[j][3] = mu[i][3]; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - modify->fix[atom->extra_grow[iextra]]->copy_arrays(i,j,delflag); -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecDipole::pack_comm(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = mu[j][0]; - buf[m++] = mu[j][1]; - buf[m++] = mu[j][2]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]*domain->xprd + pbc[5]*domain->xy + pbc[4]*domain->xz; - dy = pbc[1]*domain->yprd + pbc[3]*domain->yz; - dz = pbc[2]*domain->zprd; - } - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = mu[j][0]; - buf[m++] = mu[j][1]; - buf[m++] = mu[j][2]; - } - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecDipole::pack_comm_vel(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz,dvx,dvy,dvz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = mu[j][0]; - buf[m++] = mu[j][1]; - buf[m++] = mu[j][2]; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]*domain->xprd + pbc[5]*domain->xy + pbc[4]*domain->xz; - dy = pbc[1]*domain->yprd + pbc[3]*domain->yz; - dz = pbc[2]*domain->zprd; - } - if (!deform_vremap) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = mu[j][0]; - buf[m++] = mu[j][1]; - buf[m++] = mu[j][2]; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } else { - dvx = pbc[0]*h_rate[0] + pbc[5]*h_rate[5] + pbc[4]*h_rate[4]; - dvy = pbc[1]*h_rate[1] + pbc[3]*h_rate[3]; - dvz = pbc[2]*h_rate[2]; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = mu[j][0]; - buf[m++] = mu[j][1]; - buf[m++] = mu[j][2]; - if (mask[i] & deform_groupbit) { - buf[m++] = v[j][0] + dvx; - buf[m++] = v[j][1] + dvy; - buf[m++] = v[j][2] + dvz; - } else { - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } - } - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecDipole::pack_comm_hybrid(int n, int *list, double *buf) -{ - int i,j,m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = mu[j][0]; - buf[m++] = mu[j][1]; - buf[m++] = mu[j][2]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecDipole::unpack_comm(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - mu[i][0] = buf[m++]; - mu[i][1] = buf[m++]; - mu[i][2] = buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecDipole::unpack_comm_vel(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - mu[i][0] = buf[m++]; - mu[i][1] = buf[m++]; - mu[i][2] = buf[m++]; - v[i][0] = buf[m++]; - v[i][1] = buf[m++]; - v[i][2] = buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecDipole::unpack_comm_hybrid(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - mu[i][0] = buf[m++]; - mu[i][1] = buf[m++]; - mu[i][2] = buf[m++]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecDipole::pack_reverse(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - buf[m++] = f[i][0]; - buf[m++] = f[i][1]; - buf[m++] = f[i][2]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecDipole::unpack_reverse(int n, int *list, double *buf) -{ - int i,j,m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - f[j][0] += buf[m++]; - f[j][1] += buf[m++]; - f[j][2] += buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecDipole::pack_border(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = q[j]; - buf[m++] = mu[j][0]; - buf[m++] = mu[j][1]; - buf[m++] = mu[j][2]; - buf[m++] = mu[j][3]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]; - dy = pbc[1]; - dz = pbc[2]; - } - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = q[j]; - buf[m++] = mu[j][0]; - buf[m++] = mu[j][1]; - buf[m++] = mu[j][2]; - buf[m++] = mu[j][3]; - } - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); - - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecDipole::pack_border_vel(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz,dvx,dvy,dvz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = q[j]; - buf[m++] = mu[j][0]; - buf[m++] = mu[j][1]; - buf[m++] = mu[j][2]; - buf[m++] = mu[j][3]; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]; - dy = pbc[1]; - dz = pbc[2]; - } - if (!deform_vremap) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = q[j]; - buf[m++] = mu[j][0]; - buf[m++] = mu[j][1]; - buf[m++] = mu[j][2]; - buf[m++] = mu[j][3]; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } else { - dvx = pbc[0]*h_rate[0] + pbc[5]*h_rate[5] + pbc[4]*h_rate[4]; - dvy = pbc[1]*h_rate[1] + pbc[3]*h_rate[3]; - dvz = pbc[2]*h_rate[2]; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = q[j]; - buf[m++] = mu[j][0]; - buf[m++] = mu[j][1]; - buf[m++] = mu[j][2]; - buf[m++] = mu[j][3]; - if (mask[i] & deform_groupbit) { - buf[m++] = v[j][0] + dvx; - buf[m++] = v[j][1] + dvy; - buf[m++] = v[j][2] + dvz; - } else { - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } - } - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); - - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecDipole::pack_border_hybrid(int n, int *list, double *buf) -{ - int i,j,m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = q[j]; - buf[m++] = mu[j][0]; - buf[m++] = mu[j][1]; - buf[m++] = mu[j][2]; - buf[m++] = mu[j][3]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecDipole::unpack_border(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - if (i == nmax) grow(0); - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - tag[i] = (tagint) ubuf(buf[m++]).i; - type[i] = (int) ubuf(buf[m++]).i; - mask[i] = (int) ubuf(buf[m++]).i; - q[i] = buf[m++]; - mu[i][0] = buf[m++]; - mu[i][1] = buf[m++]; - mu[i][2] = buf[m++]; - mu[i][3] = buf[m++]; - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]-> - unpack_border(n,first,&buf[m]); -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecDipole::unpack_border_vel(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - if (i == nmax) grow(0); - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - tag[i] = (tagint) ubuf(buf[m++]).i; - type[i] = (int) ubuf(buf[m++]).i; - mask[i] = (int) ubuf(buf[m++]).i; - q[i] = buf[m++]; - mu[i][0] = buf[m++]; - mu[i][1] = buf[m++]; - mu[i][2] = buf[m++]; - mu[i][3] = buf[m++]; - v[i][0] = buf[m++]; - v[i][1] = buf[m++]; - v[i][2] = buf[m++]; - } - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]-> - unpack_border(n,first,&buf[m]); -} + // strings with peratom variables to include in each AtomVec method + // strings cannot contain fields in corresponding AtomVec default strings + // order of fields in the string does not matter + // except fields_data_atom and fields_data_vel which must match data file -/* ---------------------------------------------------------------------- */ + fields_grow = (char *) "q mu"; + fields_copy = (char *) "q mu"; + fields_comm = (char *) "mu3"; + fields_comm_vel = (char *) "mu3"; + fields_reverse = NULL; + fields_border = (char *) "q mu"; + fields_border_vel = (char *) "q mu"; + fields_exchange = (char *) "q mu"; + fields_restart = (char *) "q mu"; + fields_create = (char *) "q mu"; + fields_data_atom = (char *) "id type q x mu3"; + fields_data_vel = NULL; -int AtomVecDipole::unpack_border_hybrid(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - q[i] = buf[m++]; - mu[i][0] = buf[m++]; - mu[i][1] = buf[m++]; - mu[i][2] = buf[m++]; - mu[i][3] = buf[m++]; - } - return m; -} - -/* ---------------------------------------------------------------------- - pack all atom quantities for shipping to another proc - xyz must be 1st 3 values, so that comm::exchange can test on them -------------------------------------------------------------------------- */ - -int AtomVecDipole::pack_exchange(int i, double *buf) -{ - int m = 1; - buf[m++] = x[i][0]; - buf[m++] = x[i][1]; - buf[m++] = x[i][2]; - buf[m++] = v[i][0]; - buf[m++] = v[i][1]; - buf[m++] = v[i][2]; - buf[m++] = ubuf(tag[i]).d; - buf[m++] = ubuf(type[i]).d; - buf[m++] = ubuf(mask[i]).d; - buf[m++] = ubuf(image[i]).d; - - buf[m++] = q[i]; - buf[m++] = mu[i][0]; - buf[m++] = mu[i][1]; - buf[m++] = mu[i][2]; - buf[m++] = mu[i][3]; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - m += modify->fix[atom->extra_grow[iextra]]->pack_exchange(i,&buf[m]); - - buf[0] = m; - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecDipole::unpack_exchange(double *buf) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - int m = 1; - x[nlocal][0] = buf[m++]; - x[nlocal][1] = buf[m++]; - x[nlocal][2] = buf[m++]; - v[nlocal][0] = buf[m++]; - v[nlocal][1] = buf[m++]; - v[nlocal][2] = buf[m++]; - tag[nlocal] = (tagint) ubuf(buf[m++]).i; - type[nlocal] = (int) ubuf(buf[m++]).i; - mask[nlocal] = (int) ubuf(buf[m++]).i; - image[nlocal] = (imageint) ubuf(buf[m++]).i; - - q[nlocal] = buf[m++]; - mu[nlocal][0] = buf[m++]; - mu[nlocal][1] = buf[m++]; - mu[nlocal][2] = buf[m++]; - mu[nlocal][3] = buf[m++]; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - m += modify->fix[atom->extra_grow[iextra]]-> - unpack_exchange(nlocal,&buf[m]); - - atom->nlocal++; - return m; -} - -/* ---------------------------------------------------------------------- - size of restart data for all atoms owned by this proc - include extra data stored by fixes -------------------------------------------------------------------------- */ - -int AtomVecDipole::size_restart() -{ - int i; - - int nlocal = atom->nlocal; - int n = 16 * nlocal; - - if (atom->nextra_restart) - for (int iextra = 0; iextra < atom->nextra_restart; iextra++) - for (i = 0; i < nlocal; i++) - n += modify->fix[atom->extra_restart[iextra]]->size_restart(i); - - return n; -} - -/* ---------------------------------------------------------------------- - pack atom I's data for restart file including extra quantities - xyz must be 1st 3 values, so that read_restart can test on them - molecular types may be negative, but write as positive -------------------------------------------------------------------------- */ - -int AtomVecDipole::pack_restart(int i, double *buf) -{ - int m = 1; - buf[m++] = x[i][0]; - buf[m++] = x[i][1]; - buf[m++] = x[i][2]; - buf[m++] = ubuf(tag[i]).d; - buf[m++] = ubuf(type[i]).d; - buf[m++] = ubuf(mask[i]).d; - buf[m++] = ubuf(image[i]).d; - buf[m++] = v[i][0]; - buf[m++] = v[i][1]; - buf[m++] = v[i][2]; - - buf[m++] = q[i]; - buf[m++] = mu[i][0]; - buf[m++] = mu[i][1]; - buf[m++] = mu[i][2]; - buf[m++] = mu[i][3]; - - if (atom->nextra_restart) - for (int iextra = 0; iextra < atom->nextra_restart; iextra++) - m += modify->fix[atom->extra_restart[iextra]]->pack_restart(i,&buf[m]); - - buf[0] = m; - return m; -} - -/* ---------------------------------------------------------------------- - unpack data for one atom from restart file including extra quantities -------------------------------------------------------------------------- */ - -int AtomVecDipole::unpack_restart(double *buf) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) { - grow(0); - if (atom->nextra_store) - memory->grow(atom->extra,nmax,atom->nextra_store,"atom:extra"); - } - - int m = 1; - x[nlocal][0] = buf[m++]; - x[nlocal][1] = buf[m++]; - x[nlocal][2] = buf[m++]; - tag[nlocal] = (tagint) ubuf(buf[m++]).i; - type[nlocal] = (int) ubuf(buf[m++]).i; - mask[nlocal] = (int) ubuf(buf[m++]).i; - image[nlocal] = (imageint) ubuf(buf[m++]).i; - v[nlocal][0] = buf[m++]; - v[nlocal][1] = buf[m++]; - v[nlocal][2] = buf[m++]; - - q[nlocal] = buf[m++]; - mu[nlocal][0] = buf[m++]; - mu[nlocal][1] = buf[m++]; - mu[nlocal][2] = buf[m++]; - mu[nlocal][3] = buf[m++]; - - double **extra = atom->extra; - if (atom->nextra_store) { - int size = static_cast (buf[0]) - m; - for (int i = 0; i < size; i++) extra[nlocal][i] = buf[m++]; - } - - atom->nlocal++; - return m; -} - -/* ---------------------------------------------------------------------- - create one atom of itype at coord - set other values to defaults -------------------------------------------------------------------------- */ - -void AtomVecDipole::create_atom(int itype, double *coord) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - tag[nlocal] = 0; - type[nlocal] = itype; - x[nlocal][0] = coord[0]; - x[nlocal][1] = coord[1]; - x[nlocal][2] = coord[2]; - mask[nlocal] = 1; - image[nlocal] = ((imageint) IMGMAX << IMG2BITS) | - ((imageint) IMGMAX << IMGBITS) | IMGMAX; - v[nlocal][0] = 0.0; - v[nlocal][1] = 0.0; - v[nlocal][2] = 0.0; - - q[nlocal] = 0.0; - mu[nlocal][0] = 0.0; - mu[nlocal][1] = 0.0; - mu[nlocal][2] = 0.0; - mu[nlocal][3] = 0.0; - - atom->nlocal++; + setup_fields(); } /* ---------------------------------------------------------------------- unpack one line from Atoms section of data file - initialize other atom quantities + modify what the default AtomVec::data_atom() just initialized ------------------------------------------------------------------------- */ void AtomVecDipole::data_atom(double *coord, imageint imagetmp, char **values) { - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - tag[nlocal] = utils::tnumeric(FLERR,values[0],true,lmp); - type[nlocal] = utils::inumeric(FLERR,values[1],true,lmp); - if (type[nlocal] <= 0 || type[nlocal] > atom->ntypes) - error->one(FLERR,"Invalid atom type in Atoms section of data file"); - - q[nlocal] = utils::numeric(FLERR,values[2],true,lmp); - - x[nlocal][0] = coord[0]; - x[nlocal][1] = coord[1]; - x[nlocal][2] = coord[2]; - - mu[nlocal][0] = utils::numeric(FLERR,values[6],true,lmp); - mu[nlocal][1] = utils::numeric(FLERR,values[7],true,lmp); - mu[nlocal][2] = utils::numeric(FLERR,values[8],true,lmp); - mu[nlocal][3] = sqrt(mu[nlocal][0]*mu[nlocal][0] + - mu[nlocal][1]*mu[nlocal][1] + - mu[nlocal][2]*mu[nlocal][2]); - - image[nlocal] = imagetmp; - - mask[nlocal] = 1; - v[nlocal][0] = 0.0; - v[nlocal][1] = 0.0; - v[nlocal][2] = 0.0; - - atom->nlocal++; -} - -/* ---------------------------------------------------------------------- - unpack hybrid quantities from one line in Atoms section of data file - initialize other atom quantities for this sub-style -------------------------------------------------------------------------- */ - -int AtomVecDipole::data_atom_hybrid(int nlocal, char **values) -{ - q[nlocal] = utils::numeric(FLERR,values[0],true,lmp); - mu[nlocal][0] = utils::numeric(FLERR,values[1],true,lmp); - mu[nlocal][1] = utils::numeric(FLERR,values[2],true,lmp); - mu[nlocal][2] = utils::numeric(FLERR,values[3],true,lmp); - mu[nlocal][3] = sqrt(mu[nlocal][0]*mu[nlocal][0] + - mu[nlocal][1]*mu[nlocal][1] + - mu[nlocal][2]*mu[nlocal][2]); - return 4; -} - -/* ---------------------------------------------------------------------- - pack atom info for data file including 3 image flags -------------------------------------------------------------------------- */ - -void AtomVecDipole::pack_data(double **buf) -{ - int nlocal = atom->nlocal; - for (int i = 0; i < nlocal; i++) { - buf[i][0] = ubuf(tag[i]).d; - buf[i][1] = ubuf(type[i]).d; - buf[i][2] = q[i]; - buf[i][3] = x[i][0]; - buf[i][4] = x[i][1]; - buf[i][5] = x[i][2]; - buf[i][6] = mu[i][0]; - buf[i][7] = mu[i][1]; - buf[i][8] = mu[i][2]; - buf[i][9] = ubuf((image[i] & IMGMASK) - IMGMAX).d; - buf[i][10] = ubuf((image[i] >> IMGBITS & IMGMASK) - IMGMAX).d; - buf[i][11] = ubuf((image[i] >> IMG2BITS) - IMGMAX).d; - } -} - -/* ---------------------------------------------------------------------- - pack hybrid atom info for data file -------------------------------------------------------------------------- */ - -int AtomVecDipole::pack_data_hybrid(int i, double *buf) -{ - buf[0] = q[i]; - buf[1] = mu[i][0]; - buf[2] = mu[i][1]; - buf[3] = mu[i][2]; - return 4; -} - -/* ---------------------------------------------------------------------- - write atom info to data file including 3 image flags -------------------------------------------------------------------------- */ - -void AtomVecDipole::write_data(FILE *fp, int n, double **buf) -{ - for (int i = 0; i < n; i++) - fprintf(fp,TAGINT_FORMAT \ - " %d %-1.16e %-1.16e %-1.16e %-1.16e %-1.16e %-1.16e " - "%-1.16e %d %d %d\n", - (tagint) ubuf(buf[i][0]).i,(int) ubuf(buf[i][1]).i, - buf[i][2],buf[i][3],buf[i][4], - buf[i][5],buf[i][6],buf[i][7],buf[i][8], - (int) ubuf(buf[i][9]).i,(int) ubuf(buf[i][10]).i, - (int) ubuf(buf[i][11]).i); -} - -/* ---------------------------------------------------------------------- - write hybrid atom info to data file -------------------------------------------------------------------------- */ + AtomVec::data_atom(coord,imagetmp,values); -int AtomVecDipole::write_data_hybrid(FILE *fp, double *buf) -{ - fprintf(fp," %-1.16e %-1.16e %-1.16e %-1.16e",buf[0],buf[1],buf[2],buf[3]); - return 4; + int ilocal = atom->nlocal-1; + double mu = atom->mu[ilocal]; + mu[3] = sqrt(mu[0]*mu[0] + mu[1]*mu[1] + mu[2]*mu[2]); } -/* ---------------------------------------------------------------------- - return # of bytes of allocated memory -------------------------------------------------------------------------- */ - -bigint AtomVecDipole::memory_usage() -{ - bigint bytes = 0; - - if (atom->memcheck("tag")) bytes += memory->usage(tag,nmax); - if (atom->memcheck("type")) bytes += memory->usage(type,nmax); - if (atom->memcheck("mask")) bytes += memory->usage(mask,nmax); - if (atom->memcheck("image")) bytes += memory->usage(image,nmax); - if (atom->memcheck("x")) bytes += memory->usage(x,nmax,3); - if (atom->memcheck("v")) bytes += memory->usage(v,nmax,3); - if (atom->memcheck("f")) bytes += memory->usage(f,nmax*comm->nthreads,3); - - if (atom->memcheck("q")) bytes += memory->usage(q,nmax); - if (atom->memcheck("mu")) bytes += memory->usage(mu,nmax,4); - - return bytes; -} diff --git a/src/DIPOLE/atom_vec_dipole.h b/src/DIPOLE/atom_vec_dipole.h index c6ee23def1..6abcb4e2ea 100644 --- a/src/DIPOLE/atom_vec_dipole.h +++ b/src/DIPOLE/atom_vec_dipole.h @@ -27,43 +27,7 @@ namespace LAMMPS_NS { class AtomVecDipole : public AtomVec { public: AtomVecDipole(class LAMMPS *); - void grow(int); - void grow_reset(); - void copy(int, int, int); - int pack_comm(int, int *, double *, int, int *); - int pack_comm_vel(int, int *, double *, int, int *); - int pack_comm_hybrid(int, int *, double *); - void unpack_comm(int, int, double *); - void unpack_comm_vel(int, int, double *); - int unpack_comm_hybrid(int, int, double *); - int pack_reverse(int, int, double *); - void unpack_reverse(int, int *, double *); - int pack_border(int, int *, double *, int, int *); - int pack_border_vel(int, int *, double *, int, int *); - int pack_border_hybrid(int, int *, double *); - void unpack_border(int, int, double *); - void unpack_border_vel(int, int, double *); - int unpack_border_hybrid(int, int, double *); - int pack_exchange(int, double *); - int unpack_exchange(double *); - int size_restart(); - int pack_restart(int, double *); - int unpack_restart(double *); - void create_atom(int, double *); void data_atom(double *, imageint, char **); - int data_atom_hybrid(int, char **); - void pack_data(double **); - int pack_data_hybrid(int, double *); - void write_data(FILE *, int, double **); - int write_data_hybrid(FILE *, double *); - bigint memory_usage(); - - private: - tagint *tag; - int *type,*mask; - imageint *image; - double **x,**v,**f; - double *q,**mu; }; } @@ -73,13 +37,4 @@ class AtomVecDipole : public AtomVec { /* ERROR/WARNING messages: -E: Per-processor system is too big - -The number of owned atoms plus ghost atoms on a single -processor must fit in 32-bit integer. - -E: Invalid atom type in Atoms section of data file - -Atom types must range from 1 to specified # of types. - */ diff --git a/src/MOLECULE/atom_vec_angle.cpp b/src/MOLECULE/atom_vec_angle.cpp index 4eba471b8f..79f5a7853e 100644 --- a/src/MOLECULE/atom_vec_angle.cpp +++ b/src/MOLECULE/atom_vec_angle.cpp @@ -13,13 +13,6 @@ #include "atom_vec_angle.h" #include "atom.h" -#include "comm.h" -#include "domain.h" -#include "modify.h" -#include "fix.h" -#include "memory.h" -#include "error.h" -#include "utils.h" using namespace LAMMPS_NS; @@ -31,895 +24,140 @@ AtomVecAngle::AtomVecAngle(LAMMPS *lmp) : AtomVec(lmp) bonds_allow = angles_allow = 1; mass_type = 1; - comm_x_only = comm_f_only = 1; - size_forward = 3; - size_reverse = 3; - size_border = 7; - size_velocity = 3; - size_data_atom = 6; - size_data_vel = 4; - xcol_data = 4; - atom->molecule_flag = 1; -} - -/* ---------------------------------------------------------------------- - grow atom arrays - n = 0 grows arrays by a chunk - n > 0 allocates arrays to size n -------------------------------------------------------------------------- */ - -void AtomVecAngle::grow(int n) -{ - if (n == 0) grow_nmax(); - else nmax = n; - atom->nmax = nmax; - if (nmax < 0 || nmax > MAXSMALLINT) - error->one(FLERR,"Per-processor system is too big"); - - tag = memory->grow(atom->tag,nmax,"atom:tag"); - type = memory->grow(atom->type,nmax,"atom:type"); - mask = memory->grow(atom->mask,nmax,"atom:mask"); - image = memory->grow(atom->image,nmax,"atom:image"); - x = memory->grow(atom->x,nmax,3,"atom:x"); - v = memory->grow(atom->v,nmax,3,"atom:v"); - f = memory->grow(atom->f,nmax*comm->nthreads,3,"atom:f"); - - molecule = memory->grow(atom->molecule,nmax,"atom:molecule"); - - nspecial = memory->grow(atom->nspecial,nmax,3,"atom:nspecial"); - special = memory->grow(atom->special,nmax,atom->maxspecial,"atom:special"); - - num_bond = memory->grow(atom->num_bond,nmax,"atom:num_bond"); - bond_type = memory->grow(atom->bond_type,nmax,atom->bond_per_atom, - "atom:bond_type"); - bond_atom = memory->grow(atom->bond_atom,nmax,atom->bond_per_atom, - "atom:bond_atom"); - - num_angle = memory->grow(atom->num_angle,nmax,"atom:num_angle"); - angle_type = memory->grow(atom->angle_type,nmax,atom->angle_per_atom, - "atom:angle_type"); - angle_atom1 = memory->grow(atom->angle_atom1,nmax,atom->angle_per_atom, - "atom:angle_atom1"); - angle_atom2 = memory->grow(atom->angle_atom2,nmax,atom->angle_per_atom, - "atom:angle_atom2"); - angle_atom3 = memory->grow(atom->angle_atom3,nmax,atom->angle_per_atom, - "atom:angle_atom3"); - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - modify->fix[atom->extra_grow[iextra]]->grow_arrays(nmax); -} - -/* ---------------------------------------------------------------------- - reset local array ptrs -------------------------------------------------------------------------- */ - -void AtomVecAngle::grow_reset() -{ - tag = atom->tag; type = atom->type; - mask = atom->mask; image = atom->image; - x = atom->x; v = atom->v; f = atom->f; - molecule = atom->molecule; - nspecial = atom->nspecial; special = atom->special; - num_bond = atom->num_bond; bond_type = atom->bond_type; - bond_atom = atom->bond_atom; - num_angle = atom->num_angle; angle_type = atom->angle_type; - angle_atom1 = atom->angle_atom1; angle_atom2 = atom->angle_atom2; - angle_atom3 = atom->angle_atom3; -} - -/* ---------------------------------------------------------------------- - copy atom I info to atom J -------------------------------------------------------------------------- */ - -void AtomVecAngle::copy(int i, int j, int delflag) -{ - int k; - - tag[j] = tag[i]; - type[j] = type[i]; - mask[j] = mask[i]; - image[j] = image[i]; - x[j][0] = x[i][0]; - x[j][1] = x[i][1]; - x[j][2] = x[i][2]; - v[j][0] = v[i][0]; - v[j][1] = v[i][1]; - v[j][2] = v[i][2]; - - molecule[j] = molecule[i]; - - num_bond[j] = num_bond[i]; - for (k = 0; k < num_bond[j]; k++) { - bond_type[j][k] = bond_type[i][k]; - bond_atom[j][k] = bond_atom[i][k]; - } - - num_angle[j] = num_angle[i]; - for (k = 0; k < num_angle[j]; k++) { - angle_type[j][k] = angle_type[i][k]; - angle_atom1[j][k] = angle_atom1[i][k]; - angle_atom2[j][k] = angle_atom2[i][k]; - angle_atom3[j][k] = angle_atom3[i][k]; - } - - nspecial[j][0] = nspecial[i][0]; - nspecial[j][1] = nspecial[i][1]; - nspecial[j][2] = nspecial[i][2]; - for (k = 0; k < nspecial[j][2]; k++) special[j][k] = special[i][k]; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - modify->fix[atom->extra_grow[iextra]]->copy_arrays(i,j,delflag); -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecAngle::pack_comm(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]*domain->xprd + pbc[5]*domain->xy + pbc[4]*domain->xz; - dy = pbc[1]*domain->yprd + pbc[3]*domain->yz; - dz = pbc[2]*domain->zprd; - } - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - } - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecAngle::pack_comm_vel(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz,dvx,dvy,dvz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]*domain->xprd + pbc[5]*domain->xy + pbc[4]*domain->xz; - dy = pbc[1]*domain->yprd + pbc[3]*domain->yz; - dz = pbc[2]*domain->zprd; - } - if (!deform_vremap) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } else { - dvx = pbc[0]*h_rate[0] + pbc[5]*h_rate[5] + pbc[4]*h_rate[4]; - dvy = pbc[1]*h_rate[1] + pbc[3]*h_rate[3]; - dvz = pbc[2]*h_rate[2]; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - if (mask[i] & deform_groupbit) { - buf[m++] = v[j][0] + dvx; - buf[m++] = v[j][1] + dvy; - buf[m++] = v[j][2] + dvz; - } else { - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } - } - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecAngle::unpack_comm(int n, int first, double *buf) -{ - int i,m,last; - m = 0; - last = first + n; - for (i = first; i < last; i++) { - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - } + // strings with peratom variables to include in each AtomVec method + // strings cannot contain fields in corresponding AtomVec default strings + // order of fields in the string does not matter + // except fields_data_atom and fields_data_vel which must match data file + + fields_grow = (char *) + "molecule num_bond bond_type bond_atom " + "num_angle angle_type angle_atom1 angle_atom2 angle_atom3 nspecial special"; + fields_copy = (char *) + "molecule num_bond bond_type bond_atom " + "num_angle angle_type angle_atom1 angle_atom2 angle_atom3 nspecial special"; + fields_comm = NULL; + fields_comm_vel = NULL; + fields_reverse = NULL; + fields_border = (char *) "molecule"; + fields_border_vel = (char *) "molecule"; + fields_exchange = (char *) + "molecule num_bond bond_type bond_atom " + "num_angle angle_type angle_atom1 angle_atom2 angle_atom3 nspecial special"; + fields_restart = (char *) + "molecule num_bond bond_type bond_atom " + "num_angle angle_type angle_atom1 angle_atom2 angle_atom3"; + fields_create = (char *) "molecule num_bond num_angle nspecial"; + fields_data_atom = (char *) "id molecule type x"; + fields_data_vel = NULL; + + setup_fields(); + + bond_per_atom = angle_per_atom = 0; + bond_negative = angle_negative = NULL; } /* ---------------------------------------------------------------------- */ -void AtomVecAngle::unpack_comm_vel(int n, int first, double *buf) +AtomVecAngle::~AtomVecAngle() { - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - v[i][0] = buf[m++]; - v[i][1] = buf[m++]; - v[i][2] = buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecAngle::pack_reverse(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - buf[m++] = f[i][0]; - buf[m++] = f[i][1]; - buf[m++] = f[i][2]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecAngle::unpack_reverse(int n, int *list, double *buf) -{ - int i,j,m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - f[j][0] += buf[m++]; - f[j][1] += buf[m++]; - f[j][2] += buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecAngle::pack_border(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = ubuf(molecule[j]).d; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]; - dy = pbc[1]; - dz = pbc[2]; - } - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = ubuf(molecule[j]).d; - } - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); - - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecAngle::pack_border_vel(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz,dvx,dvy,dvz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = ubuf(molecule[j]).d; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]; - dy = pbc[1]; - dz = pbc[2]; - } - if (!deform_vremap) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = ubuf(molecule[j]).d; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } else { - dvx = pbc[0]*h_rate[0] + pbc[5]*h_rate[5] + pbc[4]*h_rate[4]; - dvy = pbc[1]*h_rate[1] + pbc[3]*h_rate[3]; - dvz = pbc[2]*h_rate[2]; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = ubuf(molecule[j]).d; - if (mask[i] & deform_groupbit) { - buf[m++] = v[j][0] + dvx; - buf[m++] = v[j][1] + dvy; - buf[m++] = v[j][2] + dvz; - } else { - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } - } - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); - - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecAngle::pack_border_hybrid(int n, int *list, double *buf) -{ - int i,j,m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = ubuf(molecule[j]).d; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecAngle::unpack_border(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - if (i == nmax) grow(0); - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - tag[i] = (tagint) ubuf(buf[m++]).i; - type[i] = (int) ubuf(buf[m++]).i; - mask[i] = (int) ubuf(buf[m++]).i; - molecule[i] = (tagint) ubuf(buf[m++]).i; - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]-> - unpack_border(n,first,&buf[m]); -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecAngle::unpack_border_vel(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - if (i == nmax) grow(0); - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - tag[i] = (tagint) ubuf(buf[m++]).i; - type[i] = (int) ubuf(buf[m++]).i; - mask[i] = (int) ubuf(buf[m++]).i; - molecule[i] = (tagint) ubuf(buf[m++]).i; - v[i][0] = buf[m++]; - v[i][1] = buf[m++]; - v[i][2] = buf[m++]; - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]-> - unpack_border(n,first,&buf[m]); -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecAngle::unpack_border_hybrid(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) - molecule[i] = (tagint) ubuf(buf[m++]).i; - return m; + delete [] bond_negative; + delete [] angle_negative; } /* ---------------------------------------------------------------------- - pack data for atom I for sending to another proc - xyz must be 1st 3 values, so comm::exchange() can test on them + pack atom I's data for restart file + modify/unmodify values for default AtomVec::pack_restart() to pack ------------------------------------------------------------------------- */ -int AtomVecAngle::pack_exchange(int i, double *buf) +int AtomVecAngle::pack_restart(int i, double *buf) { - int k; - - int m = 1; - buf[m++] = x[i][0]; - buf[m++] = x[i][1]; - buf[m++] = x[i][2]; - buf[m++] = v[i][0]; - buf[m++] = v[i][1]; - buf[m++] = v[i][2]; - buf[m++] = ubuf(tag[i]).d; - buf[m++] = ubuf(type[i]).d; - buf[m++] = ubuf(mask[i]).d; - buf[m++] = ubuf(image[i]).d; + // insure negative vectors are needed length - buf[m++] = ubuf(molecule[i]).d; - - buf[m++] = ubuf(num_bond[i]).d; - for (k = 0; k < num_bond[i]; k++) { - buf[m++] = ubuf(bond_type[i][k]).d; - buf[m++] = ubuf(bond_atom[i][k]).d; + if (bond_per_atom < atom->bond_per_atom) { + delete [] bond_negative; + bond_per_atom = atom->bond_per_atom; + bond_negative = new int[bond_per_atom]; } - - buf[m++] = ubuf(num_angle[i]).d; - for (k = 0; k < num_angle[i]; k++) { - buf[m++] = ubuf(angle_type[i][k]).d; - buf[m++] = ubuf(angle_atom1[i][k]).d; - buf[m++] = ubuf(angle_atom2[i][k]).d; - buf[m++] = ubuf(angle_atom3[i][k]).d; + if (angle_per_atom < atom->angle_per_atom) { + delete [] angle_negative; + angle_per_atom = atom->angle_per_atom; + angle_negative = new int[angle_per_atom]; } - buf[m++] = ubuf(nspecial[i][0]).d; - buf[m++] = ubuf(nspecial[i][1]).d; - buf[m++] = ubuf(nspecial[i][2]).d; - for (k = 0; k < nspecial[i][2]; k++) buf[m++] = ubuf(special[i][k]).d; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - m += modify->fix[atom->extra_grow[iextra]]->pack_exchange(i,&buf[m]); - - buf[0] = m; - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecAngle::unpack_exchange(double *buf) -{ - int k; - - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - int m = 1; - x[nlocal][0] = buf[m++]; - x[nlocal][1] = buf[m++]; - x[nlocal][2] = buf[m++]; - v[nlocal][0] = buf[m++]; - v[nlocal][1] = buf[m++]; - v[nlocal][2] = buf[m++]; - tag[nlocal] = (tagint) ubuf(buf[m++]).i; - type[nlocal] = (int) ubuf(buf[m++]).i; - mask[nlocal] = (int) ubuf(buf[m++]).i; - image[nlocal] = (imageint) ubuf(buf[m++]).i; + // flip any negative types to positive and flag which ones - molecule[nlocal] = (tagint) ubuf(buf[m++]).i; + int *num_bond = atom->num_bond; + int **bond_type = atom->bond_type; + int *num_angle = atom->num_angle; + int **angle_type = atom->angle_type; - num_bond[nlocal] = (int) ubuf(buf[m++]).i; - for (k = 0; k < num_bond[nlocal]; k++) { - bond_type[nlocal][k] = (int) ubuf(buf[m++]).i; - bond_atom[nlocal][k] = (tagint) ubuf(buf[m++]).i; + int any_bond_negative = 0; + for (int m = 0; m < num_bond[i]; m++) { + if (bond_type[i][m] < 0) { + bond_negative[m] = 1; + bond_type[i][m] = -bond_type[i][m]; + any_bond_negative = 1; + } else bond_negative[m] = 0; } - num_angle[nlocal] = (int) ubuf(buf[m++]).i; - for (k = 0; k < num_angle[nlocal]; k++) { - angle_type[nlocal][k] = (int) ubuf(buf[m++]).i; - angle_atom1[nlocal][k] = (tagint) ubuf(buf[m++]).i; - angle_atom2[nlocal][k] = (tagint) ubuf(buf[m++]).i; - angle_atom3[nlocal][k] = (tagint) ubuf(buf[m++]).i; + int any_angle_negative = 0; + for (int m = 0; m < num_angle[i]; m++) { + if (angle_type[i][m] < 0) { + angle_negative[m] = 1; + angle_type[i][m] = -angle_type[i][m]; + any_angle_negative = 1; + } else angle_negative[m] = 0; } - nspecial[nlocal][0] = (int) ubuf(buf[m++]).i; - nspecial[nlocal][1] = (int) ubuf(buf[m++]).i; - nspecial[nlocal][2] = (int) ubuf(buf[m++]).i; - for (k = 0; k < nspecial[nlocal][2]; k++) - special[nlocal][k] = (tagint) ubuf(buf[m++]).i; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - m += modify->fix[atom->extra_grow[iextra]]-> - unpack_exchange(nlocal,&buf[m]); - - atom->nlocal++; - return m; -} - -/* ---------------------------------------------------------------------- - size of restart data for all atoms owned by this proc - include extra data stored by fixes -------------------------------------------------------------------------- */ + // perform the pack with adjusted values -int AtomVecAngle::size_restart() -{ - int i; + int n = AtomVec::pack_restart(i,buf); - int nlocal = atom->nlocal; - int n = 0; - for (i = 0; i < nlocal; i++) - n += 14 + 2*num_bond[i] + 4*num_angle[i]; + // restore the flagged types to their negative values - if (atom->nextra_restart) - for (int iextra = 0; iextra < atom->nextra_restart; iextra++) - for (i = 0; i < nlocal; i++) - n += modify->fix[atom->extra_restart[iextra]]->size_restart(i); - - return n; -} - -/* ---------------------------------------------------------------------- - pack atom I's data for restart file including extra quantities - xyz must be 1st 3 values, so that read_restart can test on them - molecular types may be negative, but write as positive -------------------------------------------------------------------------- */ - -int AtomVecAngle::pack_restart(int i, double *buf) -{ - int k; - - int m = 1; - buf[m++] = x[i][0]; - buf[m++] = x[i][1]; - buf[m++] = x[i][2]; - buf[m++] = ubuf(tag[i]).d; - buf[m++] = ubuf(type[i]).d; - buf[m++] = ubuf(mask[i]).d; - buf[m++] = ubuf(image[i]).d; - buf[m++] = v[i][0]; - buf[m++] = v[i][1]; - buf[m++] = v[i][2]; - - buf[m++] = ubuf(molecule[i]).d; - - buf[m++] = ubuf(num_bond[i]).d; - for (k = 0; k < num_bond[i]; k++) { - buf[m++] = ubuf(MAX(bond_type[i][k],-bond_type[i][k])).d; - buf[m++] = ubuf(bond_atom[i][k]).d; + if (any_bond_negative) { + for (int m = 0; m < num_bond[i]; m++) + if (bond_negative[m]) bond_type[i][m] = -bond_type[i][m]; } - - buf[m++] = ubuf(num_angle[i]).d; - for (k = 0; k < num_angle[i]; k++) { - buf[m++] = ubuf(MAX(angle_type[i][k],-angle_type[i][k])).d; - buf[m++] = ubuf(angle_atom1[i][k]).d; - buf[m++] = ubuf(angle_atom2[i][k]).d; - buf[m++] = ubuf(angle_atom3[i][k]).d; + if (any_angle_negative) { + for (int m = 0; m < num_angle[i]; m++) + if (angle_negative[m]) angle_type[i][m] = -angle_type[i][m]; } - if (atom->nextra_restart) - for (int iextra = 0; iextra < atom->nextra_restart; iextra++) - m += modify->fix[atom->extra_restart[iextra]]->pack_restart(i,&buf[m]); - - buf[0] = m; - return m; + return n; } /* ---------------------------------------------------------------------- unpack data for one atom from restart file including extra quantities + initialize other atom quantities ------------------------------------------------------------------------- */ int AtomVecAngle::unpack_restart(double *buf) { - int k; - - int nlocal = atom->nlocal; - if (nlocal == nmax) { - grow(0); - if (atom->nextra_store) - memory->grow(atom->extra,nmax,atom->nextra_store,"atom:extra"); - } - - int m = 1; - x[nlocal][0] = buf[m++]; - x[nlocal][1] = buf[m++]; - x[nlocal][2] = buf[m++]; - tag[nlocal] = (tagint) ubuf(buf[m++]).i; - type[nlocal] = (int) ubuf(buf[m++]).i; - mask[nlocal] = (int) ubuf(buf[m++]).i; - image[nlocal] = (imageint) ubuf(buf[m++]).i; - v[nlocal][0] = buf[m++]; - v[nlocal][1] = buf[m++]; - v[nlocal][2] = buf[m++]; - - molecule[nlocal] = (tagint) ubuf(buf[m++]).i; - - num_bond[nlocal] = (int) ubuf(buf[m++]).i; - for (k = 0; k < num_bond[nlocal]; k++) { - bond_type[nlocal][k] = (int) ubuf(buf[m++]).i; - bond_atom[nlocal][k] = (tagint) ubuf(buf[m++]).i; - } - - num_angle[nlocal] = (int) ubuf(buf[m++]).i; - for (k = 0; k < num_angle[nlocal]; k++) { - angle_type[nlocal][k] = (int) ubuf(buf[m++]).i; - angle_atom1[nlocal][k] = (tagint) ubuf(buf[m++]).i; - angle_atom2[nlocal][k] = (tagint) ubuf(buf[m++]).i; - angle_atom3[nlocal][k] = (tagint) ubuf(buf[m++]).i; - } - - nspecial[nlocal][0] = nspecial[nlocal][1] = nspecial[nlocal][2] = 0; - - double **extra = atom->extra; - if (atom->nextra_store) { - int size = static_cast (buf[0]) - m; - for (int i = 0; i < size; i++) extra[nlocal][i] = buf[m++]; - } - - atom->nlocal++; - return m; -} - -/* ---------------------------------------------------------------------- - create one atom of itype at coord - set other values to defaults -------------------------------------------------------------------------- */ - -void AtomVecAngle::create_atom(int itype, double *coord) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); + AtomVec::unpack_restart(buf); + int ilocal = atom->nlocal-1; - tag[nlocal] = 0; - type[nlocal] = itype; - x[nlocal][0] = coord[0]; - x[nlocal][1] = coord[1]; - x[nlocal][2] = coord[2]; - mask[nlocal] = 1; - image[nlocal] = ((imageint) IMGMAX << IMG2BITS) | - ((imageint) IMGMAX << IMGBITS) | IMGMAX; - v[nlocal][0] = 0.0; - v[nlocal][1] = 0.0; - v[nlocal][2] = 0.0; - - molecule[nlocal] = 0; - num_bond[nlocal] = 0; - num_angle[nlocal] = 0; - nspecial[nlocal][0] = nspecial[nlocal][1] = nspecial[nlocal][2] = 0; - - atom->nlocal++; + atom->nspecial[ilocal][0] = 0; + atom->nspecial[ilocal][1] = 0; + atom->nspecial[ilocal][2] = 0; } /* ---------------------------------------------------------------------- unpack one line from Atoms section of data file - initialize other atom quantities + modify what default AtomVec::data_atom() just unpacked + or initialize other atom quantities ------------------------------------------------------------------------- */ void AtomVecAngle::data_atom(double *coord, imageint imagetmp, char **values) { - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - tag[nlocal] = utils::tnumeric(FLERR,values[0],true,lmp); - molecule[nlocal] = utils::tnumeric(FLERR,values[1],true,lmp); - type[nlocal] = utils::inumeric(FLERR,values[2],true,lmp); - if (type[nlocal] <= 0 || type[nlocal] > atom->ntypes) - error->one(FLERR,"Invalid atom type in Atoms section of data file"); - - x[nlocal][0] = coord[0]; - x[nlocal][1] = coord[1]; - x[nlocal][2] = coord[2]; - - image[nlocal] = imagetmp; - - mask[nlocal] = 1; - v[nlocal][0] = 0.0; - v[nlocal][1] = 0.0; - v[nlocal][2] = 0.0; - num_bond[nlocal] = 0; - num_angle[nlocal] = 0; - - atom->nlocal++; -} - -/* ---------------------------------------------------------------------- - unpack hybrid quantities from one line in Atoms section of data file - initialize other atom quantities for this sub-style -------------------------------------------------------------------------- */ - -int AtomVecAngle::data_atom_hybrid(int nlocal, char **values) -{ - molecule[nlocal] = utils::tnumeric(FLERR,values[0],true,lmp); - - num_bond[nlocal] = 0; - num_angle[nlocal] = 0; - - return 1; -} - -/* ---------------------------------------------------------------------- - pack atom info for data file including 3 image flags -------------------------------------------------------------------------- */ - -void AtomVecAngle::pack_data(double **buf) -{ - int nlocal = atom->nlocal; - for (int i = 0; i < nlocal; i++) { - buf[i][0] = ubuf(tag[i]).d; - buf[i][1] = ubuf(molecule[i]).d; - buf[i][2] = ubuf(type[i]).d; - buf[i][3] = x[i][0]; - buf[i][4] = x[i][1]; - buf[i][5] = x[i][2]; - buf[i][6] = ubuf((image[i] & IMGMASK) - IMGMAX).d; - buf[i][7] = ubuf((image[i] >> IMGBITS & IMGMASK) - IMGMAX).d; - buf[i][8] = ubuf((image[i] >> IMG2BITS) - IMGMAX).d; - } -} - -/* ---------------------------------------------------------------------- - pack hybrid atom info for data file -------------------------------------------------------------------------- */ - -int AtomVecAngle::pack_data_hybrid(int i, double *buf) -{ - buf[0] = ubuf(molecule[i]).d; - return 1; -} - -/* ---------------------------------------------------------------------- - write atom info to data file including 3 image flags -------------------------------------------------------------------------- */ - -void AtomVecAngle::write_data(FILE *fp, int n, double **buf) -{ - for (int i = 0; i < n; i++) - fprintf(fp,TAGINT_FORMAT " " TAGINT_FORMAT - " %d %-1.16e %-1.16e %-1.16e %d %d %d\n", - (tagint) ubuf(buf[i][0]).i,(tagint) ubuf(buf[i][1]).i, - (int) ubuf(buf[i][2]).i, - buf[i][3],buf[i][4],buf[i][5], - (int) ubuf(buf[i][6]).i,(int) ubuf(buf[i][7]).i, - (int) ubuf(buf[i][8]).i); -} - -/* ---------------------------------------------------------------------- - write hybrid atom info to data file -------------------------------------------------------------------------- */ - -int AtomVecAngle::write_data_hybrid(FILE *fp, double *buf) -{ - fprintf(fp," " TAGINT_FORMAT,(tagint) ubuf(buf[0]).i); - return 1; -} - -/* ---------------------------------------------------------------------- - return # of bytes of allocated memory -------------------------------------------------------------------------- */ - -bigint AtomVecAngle::memory_usage() -{ - bigint bytes = 0; - - if (atom->memcheck("tag")) bytes += memory->usage(tag,nmax); - if (atom->memcheck("type")) bytes += memory->usage(type,nmax); - if (atom->memcheck("mask")) bytes += memory->usage(mask,nmax); - if (atom->memcheck("image")) bytes += memory->usage(image,nmax); - if (atom->memcheck("x")) bytes += memory->usage(x,nmax,3); - if (atom->memcheck("v")) bytes += memory->usage(v,nmax,3); - if (atom->memcheck("f")) bytes += memory->usage(f,nmax*comm->nthreads,3); - - if (atom->memcheck("molecule")) bytes += memory->usage(molecule,nmax); - if (atom->memcheck("nspecial")) bytes += memory->usage(nspecial,nmax,3); - if (atom->memcheck("special")) - bytes += memory->usage(special,nmax,atom->maxspecial); - - if (atom->memcheck("num_bond")) bytes += memory->usage(num_bond,nmax); - if (atom->memcheck("bond_type")) - bytes += memory->usage(bond_type,nmax,atom->bond_per_atom); - if (atom->memcheck("bond_atom")) - bytes += memory->usage(bond_atom,nmax,atom->bond_per_atom); - - if (atom->memcheck("num_angle")) bytes += memory->usage(num_angle,nmax); - if (atom->memcheck("angle_type")) - bytes += memory->usage(angle_type,nmax,atom->angle_per_atom); - if (atom->memcheck("angle_atom1")) - bytes += memory->usage(angle_atom1,nmax,atom->angle_per_atom); - if (atom->memcheck("angle_atom2")) - bytes += memory->usage(angle_atom2,nmax,atom->angle_per_atom); - if (atom->memcheck("angle_atom3")) - bytes += memory->usage(angle_atom3,nmax,atom->angle_per_atom); + AtomVec::data_atom(coord,imagetmp,values); + int ilocal = atom->nlocal-1; - return bytes; + atom->num_bond[ilocal] = 0; + atom->num_angle[ilocal] = 0; + atom->nspecial[ilocal][0] = 0; + atom->nspecial[ilocal][1] = 0; + atom->nspecial[ilocal][2] = 0; } diff --git a/src/MOLECULE/atom_vec_angle.h b/src/MOLECULE/atom_vec_angle.h index 9030cce0d8..6511b517ee 100644 --- a/src/MOLECULE/atom_vec_angle.h +++ b/src/MOLECULE/atom_vec_angle.h @@ -27,50 +27,14 @@ namespace LAMMPS_NS { class AtomVecAngle : public AtomVec { public: AtomVecAngle(class LAMMPS *); - virtual ~AtomVecAngle() {} - void grow(int); - void grow_reset(); - void copy(int, int, int); - virtual int pack_comm(int, int *, double *, int, int *); - virtual int pack_comm_vel(int, int *, double *, int, int *); - virtual void unpack_comm(int, int, double *); - virtual void unpack_comm_vel(int, int, double *); - int pack_reverse(int, int, double *); - void unpack_reverse(int, int *, double *); - virtual int pack_border(int, int *, double *, int, int *); - virtual int pack_border_vel(int, int *, double *, int, int *); - int pack_border_hybrid(int, int *, double *); - virtual void unpack_border(int, int, double *); - virtual void unpack_border_vel(int, int, double *); - int unpack_border_hybrid(int, int, double *); - virtual int pack_exchange(int, double *); - virtual int unpack_exchange(double *); - int size_restart(); + ~AtomVecAngle(); int pack_restart(int, double *); int unpack_restart(double *); - void create_atom(int, double *); void data_atom(double *, imageint, char **); - int data_atom_hybrid(int, char **); - void pack_data(double **); - int pack_data_hybrid(int, double *); - void write_data(FILE *, int, double **); - int write_data_hybrid(FILE *, double *); - bigint memory_usage(); - protected: - tagint *tag; - int *type,*mask; - imageint *image; - double **x,**v,**f; - tagint *molecule; - int **nspecial; - tagint **special; - int *num_bond; - int **bond_type; - tagint **bond_atom; - int *num_angle; - int **angle_type; - tagint **angle_atom1,**angle_atom2,**angle_atom3; + private: + int bond_per_atom,angle_per_atom; + int *bond_negative,*angle_negative; }; } @@ -80,13 +44,4 @@ class AtomVecAngle : public AtomVec { /* ERROR/WARNING messages: -E: Per-processor system is too big - -The number of owned atoms plus ghost atoms on a single -processor must fit in 32-bit integer. - -E: Invalid atom type in Atoms section of data file - -Atom types must range from 1 to specified # of types. - */ diff --git a/src/MOLECULE/atom_vec_bond.cpp b/src/MOLECULE/atom_vec_bond.cpp index 0bcd614f94..20cdfdd65a 100644 --- a/src/MOLECULE/atom_vec_bond.cpp +++ b/src/MOLECULE/atom_vec_bond.cpp @@ -13,13 +13,6 @@ #include "atom_vec_bond.h" #include "atom.h" -#include "comm.h" -#include "domain.h" -#include "modify.h" -#include "fix.h" -#include "memory.h" -#include "error.h" -#include "utils.h" using namespace LAMMPS_NS; @@ -31,829 +24,113 @@ AtomVecBond::AtomVecBond(LAMMPS *lmp) : AtomVec(lmp) bonds_allow = 1; mass_type = 1; - comm_x_only = comm_f_only = 1; - size_forward = 3; - size_reverse = 3; - size_border = 7; - size_velocity = 3; - size_data_atom = 6; - size_data_vel = 4; - xcol_data = 4; - atom->molecule_flag = 1; -} - -/* ---------------------------------------------------------------------- - grow atom arrays - n = 0 grows arrays by a chunk - n > 0 allocates arrays to size n -------------------------------------------------------------------------- */ - -void AtomVecBond::grow(int n) -{ - if (n == 0) grow_nmax(); - else nmax = n; - atom->nmax = nmax; - if (nmax < 0 || nmax > MAXSMALLINT) - error->one(FLERR,"Per-processor system is too big"); - - tag = memory->grow(atom->tag,nmax,"atom:tag"); - type = memory->grow(atom->type,nmax,"atom:type"); - mask = memory->grow(atom->mask,nmax,"atom:mask"); - image = memory->grow(atom->image,nmax,"atom:image"); - x = memory->grow(atom->x,nmax,3,"atom:x"); - v = memory->grow(atom->v,nmax,3,"atom:v"); - f = memory->grow(atom->f,nmax*comm->nthreads,3,"atom:f"); - - molecule = memory->grow(atom->molecule,nmax,"atom:molecule"); - - nspecial = memory->grow(atom->nspecial,nmax,3,"atom:nspecial"); - special = memory->grow(atom->special,nmax,atom->maxspecial,"atom:special"); - - num_bond = memory->grow(atom->num_bond,nmax,"atom:num_bond"); - bond_type = memory->grow(atom->bond_type,nmax,atom->bond_per_atom, - "atom:bond_type"); - bond_atom = memory->grow(atom->bond_atom,nmax,atom->bond_per_atom, - "atom:bond_atom"); - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - modify->fix[atom->extra_grow[iextra]]->grow_arrays(nmax); -} - -/* ---------------------------------------------------------------------- - reset local array ptrs -------------------------------------------------------------------------- */ - -void AtomVecBond::grow_reset() -{ - tag = atom->tag; type = atom->type; - mask = atom->mask; image = atom->image; - x = atom->x; v = atom->v; f = atom->f; - molecule = atom->molecule; - nspecial = atom->nspecial; special = atom->special; - num_bond = atom->num_bond; bond_type = atom->bond_type; - bond_atom = atom->bond_atom; -} - -/* ---------------------------------------------------------------------- - copy atom I info to atom J -------------------------------------------------------------------------- */ - -void AtomVecBond::copy(int i, int j, int delflag) -{ - int k; - - tag[j] = tag[i]; - type[j] = type[i]; - mask[j] = mask[i]; - image[j] = image[i]; - x[j][0] = x[i][0]; - x[j][1] = x[i][1]; - x[j][2] = x[i][2]; - v[j][0] = v[i][0]; - v[j][1] = v[i][1]; - v[j][2] = v[i][2]; - - molecule[j] = molecule[i]; - - num_bond[j] = num_bond[i]; - for (k = 0; k < num_bond[j]; k++) { - bond_type[j][k] = bond_type[i][k]; - bond_atom[j][k] = bond_atom[i][k]; - } - - nspecial[j][0] = nspecial[i][0]; - nspecial[j][1] = nspecial[i][1]; - nspecial[j][2] = nspecial[i][2]; - for (k = 0; k < nspecial[j][2]; k++) special[j][k] = special[i][k]; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - modify->fix[atom->extra_grow[iextra]]->copy_arrays(i,j,delflag); -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecBond::pack_comm(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz; - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]*domain->xprd + pbc[5]*domain->xy + pbc[4]*domain->xz; - dy = pbc[1]*domain->yprd + pbc[3]*domain->yz; - dz = pbc[2]*domain->zprd; - } - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - } - } - return m; + // strings with peratom variables to include in each AtomVec method + // strings cannot contain fields in corresponding AtomVec default strings + // order of fields in the string does not matter + // except fields_data_atom and fields_data_vel which must match data file + + fields_grow = (char *) + "molecule num_bond bond_type bond_atom nspecial special"; + fields_copy = (char *) + "molecule num_bond bond_type bond_atom nspecial special"; + fields_comm = NULL; + fields_comm_vel = NULL; + fields_reverse = NULL; + fields_border = (char *) "molecule"; + fields_border_vel = (char *) "molecule"; + fields_exchange = (char *) + "molecule num_bond bond_type bond_atom nspecial special"; + fields_restart = (char *) "molecule num_bond bond_type bond_atom"; + fields_create = (char *) "molecule num_bond nspecial"; + fields_data_atom = (char *) "id molecule type x"; + fields_data_vel = NULL; + + setup_fields(); + + bond_per_atom = 0; + bond_negative = NULL; } /* ---------------------------------------------------------------------- */ -int AtomVecBond::pack_comm_vel(int n, int *list, double *buf, - int pbc_flag, int *pbc) +AtomVecBond::~AtomVecBond() { - int i,j,m; - double dx,dy,dz,dvx,dvy,dvz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]*domain->xprd + pbc[5]*domain->xy + pbc[4]*domain->xz; - dy = pbc[1]*domain->yprd + pbc[3]*domain->yz; - dz = pbc[2]*domain->zprd; - } - if (!deform_vremap) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } else { - dvx = pbc[0]*h_rate[0] + pbc[5]*h_rate[5] + pbc[4]*h_rate[4]; - dvy = pbc[1]*h_rate[1] + pbc[3]*h_rate[3]; - dvz = pbc[2]*h_rate[2]; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - if (mask[i] & deform_groupbit) { - buf[m++] = v[j][0] + dvx; - buf[m++] = v[j][1] + dvy; - buf[m++] = v[j][2] + dvz; - } else { - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } - } - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecBond::unpack_comm(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecBond::unpack_comm_vel(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - v[i][0] = buf[m++]; - v[i][1] = buf[m++]; - v[i][2] = buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecBond::pack_reverse(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - buf[m++] = f[i][0]; - buf[m++] = f[i][1]; - buf[m++] = f[i][2]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecBond::unpack_reverse(int n, int *list, double *buf) -{ - int i,j,m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - f[j][0] += buf[m++]; - f[j][1] += buf[m++]; - f[j][2] += buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecBond::pack_border(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = ubuf(molecule[j]).d; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]; - dy = pbc[1]; - dz = pbc[2]; - } - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = ubuf(molecule[j]).d; - } - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); - - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecBond::pack_border_vel(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz,dvx,dvy,dvz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = ubuf(molecule[j]).d; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]; - dy = pbc[1]; - dz = pbc[2]; - } - if (!deform_vremap) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = ubuf(molecule[j]).d; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } else { - dvx = pbc[0]*h_rate[0] + pbc[5]*h_rate[5] + pbc[4]*h_rate[4]; - dvy = pbc[1]*h_rate[1] + pbc[3]*h_rate[3]; - dvz = pbc[2]*h_rate[2]; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = ubuf(molecule[j]).d; - if (mask[i] & deform_groupbit) { - buf[m++] = v[j][0] + dvx; - buf[m++] = v[j][1] + dvy; - buf[m++] = v[j][2] + dvz; - } else { - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } - } - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); - - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecBond::pack_border_hybrid(int n, int *list, double *buf) -{ - int i,j,m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = ubuf(molecule[j]).d; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecBond::unpack_border(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - if (i == nmax) grow(0); - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - tag[i] = (tagint) ubuf(buf[m++]).i; - type[i] = (int) ubuf(buf[m++]).i; - mask[i] = (int) ubuf(buf[m++]).i; - molecule[i] = (tagint) ubuf(buf[m++]).i; - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]-> - unpack_border(n,first,&buf[m]); -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecBond::unpack_border_vel(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - if (i == nmax) grow(0); - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - tag[i] = (tagint) ubuf(buf[m++]).i; - type[i] = (int) ubuf(buf[m++]).i; - mask[i] = (int) ubuf(buf[m++]).i; - molecule[i] = (tagint) ubuf(buf[m++]).i; - v[i][0] = buf[m++]; - v[i][1] = buf[m++]; - v[i][2] = buf[m++]; - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]-> - unpack_border(n,first,&buf[m]); -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecBond::unpack_border_hybrid(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) - molecule[i] = (tagint) ubuf(buf[m++]).i; - return m; + delete [] bond_negative; } /* ---------------------------------------------------------------------- - pack data for atom I for sending to another proc - xyz must be 1st 3 values, so comm::exchange() can test on them + pack atom I's data for restart file + modify/unmodify values for default AtomVec::pack_restart() to pack ------------------------------------------------------------------------- */ -int AtomVecBond::pack_exchange(int i, double *buf) +int AtomVecBond::pack_restart(int i, double *buf) { - int k; + // insure bond_negative vector is needed length - int m = 1; - buf[m++] = x[i][0]; - buf[m++] = x[i][1]; - buf[m++] = x[i][2]; - buf[m++] = v[i][0]; - buf[m++] = v[i][1]; - buf[m++] = v[i][2]; - buf[m++] = ubuf(tag[i]).d; - buf[m++] = ubuf(type[i]).d; - buf[m++] = ubuf(mask[i]).d; - buf[m++] = ubuf(image[i]).d; - - buf[m++] = ubuf(molecule[i]).d; - - buf[m++] = ubuf(num_bond[i]).d; - for (k = 0; k < num_bond[i]; k++) { - buf[m++] = ubuf(bond_type[i][k]).d; - buf[m++] = ubuf(bond_atom[i][k]).d; + if (bond_per_atom < atom->bond_per_atom) { + delete [] bond_negative; + bond_per_atom = atom->bond_per_atom; + bond_negative = new int[bond_per_atom]; } - buf[m++] = ubuf(nspecial[i][0]).d; - buf[m++] = ubuf(nspecial[i][1]).d; - buf[m++] = ubuf(nspecial[i][2]).d; - for (k = 0; k < nspecial[i][2]; k++) buf[m++] = ubuf(special[i][k]).d; + // flip any negative types to positive and flag which ones - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - m += modify->fix[atom->extra_grow[iextra]]->pack_exchange(i,&buf[m]); - - buf[0] = m; - return m; -} + int *num_bond = atom->num_bond; + int **bond_type = atom->bond_type; -/* ---------------------------------------------------------------------- */ - -int AtomVecBond::unpack_exchange(double *buf) -{ - int k; - - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - int m = 1; - x[nlocal][0] = buf[m++]; - x[nlocal][1] = buf[m++]; - x[nlocal][2] = buf[m++]; - v[nlocal][0] = buf[m++]; - v[nlocal][1] = buf[m++]; - v[nlocal][2] = buf[m++]; - tag[nlocal] = (tagint) ubuf(buf[m++]).i; - type[nlocal] = (int) ubuf(buf[m++]).i; - mask[nlocal] = (int) ubuf(buf[m++]).i; - image[nlocal] = (imageint) ubuf(buf[m++]).i; - - molecule[nlocal] = (tagint) ubuf(buf[m++]).i; - - num_bond[nlocal] = (int) ubuf(buf[m++]).i; - for (k = 0; k < num_bond[nlocal]; k++) { - bond_type[nlocal][k] = (int) ubuf(buf[m++]).i; - bond_atom[nlocal][k] = (tagint) ubuf(buf[m++]).i; + int any_bond_negative = 0; + for (int m = 0; m < num_bond[i]; m++) { + if (bond_type[i][m] < 0) { + bond_negative[m] = 1; + bond_type[i][m] = -bond_type[i][m]; + any_bond_negative = 1; + } else bond_negative[m] = 0; } - nspecial[nlocal][0] = (int) ubuf(buf[m++]).i; - nspecial[nlocal][1] = (int) ubuf(buf[m++]).i; - nspecial[nlocal][2] = (int) ubuf(buf[m++]).i; - for (k = 0; k < nspecial[nlocal][2]; k++) - special[nlocal][k] = (tagint) ubuf(buf[m++]).i; + // perform the pack with adjusted values - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - m += modify->fix[atom->extra_grow[iextra]]-> - unpack_exchange(nlocal,&buf[m]); + int n = AtomVec::pack_restart(i,buf); - atom->nlocal++; - return m; -} + // restore the flagged types to their negative values -/* ---------------------------------------------------------------------- - size of restart data for all atoms owned by this proc - include extra data stored by fixes -------------------------------------------------------------------------- */ - -int AtomVecBond::size_restart() -{ - int i; - - int nlocal = atom->nlocal; - int n = 0; - for (i = 0; i < nlocal; i++) - n += 13 + 2*num_bond[i]; - - if (atom->nextra_restart) - for (int iextra = 0; iextra < atom->nextra_restart; iextra++) - for (i = 0; i < nlocal; i++) - n += modify->fix[atom->extra_restart[iextra]]->size_restart(i); - - return n; -} - -/* ---------------------------------------------------------------------- - pack atom I's data for restart file including extra quantities - xyz must be 1st 3 values, so that read_restart can test on them - molecular types may be negative, but write as positive -------------------------------------------------------------------------- */ - -int AtomVecBond::pack_restart(int i, double *buf) -{ - int k; - - int m = 1; - buf[m++] = x[i][0]; - buf[m++] = x[i][1]; - buf[m++] = x[i][2]; - buf[m++] = ubuf(tag[i]).d; - buf[m++] = ubuf(type[i]).d; - buf[m++] = ubuf(mask[i]).d; - buf[m++] = ubuf(image[i]).d; - buf[m++] = v[i][0]; - buf[m++] = v[i][1]; - buf[m++] = v[i][2]; - - buf[m++] = ubuf(molecule[i]).d; - - buf[m++] = ubuf(num_bond[i]).d; - for (k = 0; k < num_bond[i]; k++) { - buf[m++] = ubuf(MAX(bond_type[i][k],-bond_type[i][k])).d; - buf[m++] = ubuf(bond_atom[i][k]).d; + if (any_bond_negative) { + for (int m = 0; m < num_bond[i]; m++) + if (bond_negative[m]) bond_type[i][m] = -bond_type[i][m]; } - if (atom->nextra_restart) - for (int iextra = 0; iextra < atom->nextra_restart; iextra++) - m += modify->fix[atom->extra_restart[iextra]]->pack_restart(i,&buf[m]); - - buf[0] = m; - return m; + return n; } /* ---------------------------------------------------------------------- unpack data for one atom from restart file including extra quantities + initialize other atom quantities ------------------------------------------------------------------------- */ int AtomVecBond::unpack_restart(double *buf) { - int k; - - int nlocal = atom->nlocal; - if (nlocal == nmax) { - grow(0); - if (atom->nextra_store) - memory->grow(atom->extra,nmax,atom->nextra_store,"atom:extra"); - } - - int m = 1; - x[nlocal][0] = buf[m++]; - x[nlocal][1] = buf[m++]; - x[nlocal][2] = buf[m++]; - tag[nlocal] = (tagint) ubuf(buf[m++]).i; - type[nlocal] = (int) ubuf(buf[m++]).i; - mask[nlocal] = (int) ubuf(buf[m++]).i; - image[nlocal] = (imageint) ubuf(buf[m++]).i; - v[nlocal][0] = buf[m++]; - v[nlocal][1] = buf[m++]; - v[nlocal][2] = buf[m++]; - - molecule[nlocal] = (tagint) ubuf(buf[m++]).i; - - num_bond[nlocal] = (int) ubuf(buf[m++]).i; - for (k = 0; k < num_bond[nlocal]; k++) { - bond_type[nlocal][k] = (int) ubuf(buf[m++]).i; - bond_atom[nlocal][k] = (tagint) ubuf(buf[m++]).i; - } - - nspecial[nlocal][0] = nspecial[nlocal][1] = nspecial[nlocal][2] = 0; - - double **extra = atom->extra; - if (atom->nextra_store) { - int size = static_cast (buf[0]) - m; - for (int i = 0; i < size; i++) extra[nlocal][i] = buf[m++]; - } - - atom->nlocal++; - return m; -} - -/* ---------------------------------------------------------------------- - create one atom of itype at coord - set other values to defaults -------------------------------------------------------------------------- */ - -void AtomVecBond::create_atom(int itype, double *coord) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - tag[nlocal] = 0; - type[nlocal] = itype; - x[nlocal][0] = coord[0]; - x[nlocal][1] = coord[1]; - x[nlocal][2] = coord[2]; - mask[nlocal] = 1; - image[nlocal] = ((imageint) IMGMAX << IMG2BITS) | - ((imageint) IMGMAX << IMGBITS) | IMGMAX; - v[nlocal][0] = 0.0; - v[nlocal][1] = 0.0; - v[nlocal][2] = 0.0; + AtomVec::unpack_restart(buf); + int ilocal = atom->nlocal-1; - molecule[nlocal] = 0; - num_bond[nlocal] = 0; - nspecial[nlocal][0] = nspecial[nlocal][1] = nspecial[nlocal][2] = 0; - - atom->nlocal++; + atom->nspecial[ilocal][0] = 0; + atom->nspecial[ilocal][1] = 0; + atom->nspecial[ilocal][2] = 0; } /* ---------------------------------------------------------------------- unpack one line from Atoms section of data file - initialize other atom quantities + modify what default AtomVec::data_atom() just unpacked + or initialize other atom quantities ------------------------------------------------------------------------- */ void AtomVecBond::data_atom(double *coord, imageint imagetmp, char **values) { - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - tag[nlocal] = utils::tnumeric(FLERR,values[0],true,lmp); - molecule[nlocal] = utils::tnumeric(FLERR,values[1],true,lmp); - type[nlocal] = utils::inumeric(FLERR,values[2],true,lmp); - if (type[nlocal] <= 0 || type[nlocal] > atom->ntypes) - error->one(FLERR,"Invalid atom type in Atoms section of data file"); - - x[nlocal][0] = coord[0]; - x[nlocal][1] = coord[1]; - x[nlocal][2] = coord[2]; - - image[nlocal] = imagetmp; - - mask[nlocal] = 1; - v[nlocal][0] = 0.0; - v[nlocal][1] = 0.0; - v[nlocal][2] = 0.0; - num_bond[nlocal] = 0; - - atom->nlocal++; -} - -/* ---------------------------------------------------------------------- - unpack hybrid quantities from one line in Atoms section of data file - initialize other atom quantities for this sub-style -------------------------------------------------------------------------- */ - -int AtomVecBond::data_atom_hybrid(int nlocal, char **values) -{ - molecule[nlocal] = utils::tnumeric(FLERR,values[0],true,lmp); - - num_bond[nlocal] = 0; - - return 1; -} - -/* ---------------------------------------------------------------------- - pack atom info for data file including 3 image flags -------------------------------------------------------------------------- */ - -void AtomVecBond::pack_data(double **buf) -{ - int nlocal = atom->nlocal; - for (int i = 0; i < nlocal; i++) { - buf[i][0] = ubuf(tag[i]).d; - buf[i][1] = ubuf(molecule[i]).d; - buf[i][2] = ubuf(type[i]).d; - buf[i][3] = x[i][0]; - buf[i][4] = x[i][1]; - buf[i][5] = x[i][2]; - buf[i][6] = ubuf((image[i] & IMGMASK) - IMGMAX).d; - buf[i][7] = ubuf((image[i] >> IMGBITS & IMGMASK) - IMGMAX).d; - buf[i][8] = ubuf((image[i] >> IMG2BITS) - IMGMAX).d; - } -} - -/* ---------------------------------------------------------------------- - pack hybrid atom info for data file -------------------------------------------------------------------------- */ - -int AtomVecBond::pack_data_hybrid(int i, double *buf) -{ - buf[0] = ubuf(molecule[i]).d; - return 1; -} - -/* ---------------------------------------------------------------------- - write atom info to data file including 3 image flags -------------------------------------------------------------------------- */ - -void AtomVecBond::write_data(FILE *fp, int n, double **buf) -{ - for (int i = 0; i < n; i++) - fprintf(fp,TAGINT_FORMAT " " TAGINT_FORMAT - " %d %-1.16e %-1.16e %-1.16e %d %d %d\n", - (tagint) ubuf(buf[i][0]).i,(tagint) ubuf(buf[i][1]).i, - (int) ubuf(buf[i][2]).i, - buf[i][3],buf[i][4],buf[i][5], - (int) ubuf(buf[i][6]).i,(int) ubuf(buf[i][7]).i, - (int) ubuf(buf[i][8]).i); -} - -/* ---------------------------------------------------------------------- - write hybrid atom info to data file -------------------------------------------------------------------------- */ - -int AtomVecBond::write_data_hybrid(FILE *fp, double *buf) -{ - fprintf(fp," " TAGINT_FORMAT,(tagint) ubuf(buf[0]).i); - return 1; -} - -/* ---------------------------------------------------------------------- - return # of bytes of allocated memory -------------------------------------------------------------------------- */ - -bigint AtomVecBond::memory_usage() -{ - bigint bytes = 0; - - if (atom->memcheck("tag")) bytes += memory->usage(tag,nmax); - if (atom->memcheck("type")) bytes += memory->usage(type,nmax); - if (atom->memcheck("mask")) bytes += memory->usage(mask,nmax); - if (atom->memcheck("image")) bytes += memory->usage(image,nmax); - if (atom->memcheck("x")) bytes += memory->usage(x,nmax,3); - if (atom->memcheck("v")) bytes += memory->usage(v,nmax,3); - if (atom->memcheck("f")) bytes += memory->usage(f,nmax*comm->nthreads,3); - - if (atom->memcheck("molecule")) bytes += memory->usage(molecule,nmax); - if (atom->memcheck("nspecial")) bytes += memory->usage(nspecial,nmax,3); - if (atom->memcheck("special")) - bytes += memory->usage(special,nmax,atom->maxspecial); - - if (atom->memcheck("num_bond")) bytes += memory->usage(num_bond,nmax); - if (atom->memcheck("bond_type")) - bytes += memory->usage(bond_type,nmax,atom->bond_per_atom); - if (atom->memcheck("bond_atom")) - bytes += memory->usage(bond_atom,nmax,atom->bond_per_atom); + AtomVec::data_atom(coord,imagetmp,values); + int ilocal = atom->nlocal-1; - return bytes; + atom->num_bond[ilocal] = 0; + atom->nspecial[ilocal][0] = 0; + atom->nspecial[ilocal][1] = 0; + atom->nspecial[ilocal][2] = 0; } diff --git a/src/MOLECULE/atom_vec_bond.h b/src/MOLECULE/atom_vec_bond.h index d7370d4659..9245bc317a 100644 --- a/src/MOLECULE/atom_vec_bond.h +++ b/src/MOLECULE/atom_vec_bond.h @@ -27,46 +27,14 @@ namespace LAMMPS_NS { class AtomVecBond : public AtomVec { public: AtomVecBond(class LAMMPS *); - void grow(int); - void grow_reset(); - void copy(int, int, int); - int pack_comm(int, int *, double *, int, int *); - int pack_comm_vel(int, int *, double *, int, int *); - void unpack_comm(int, int, double *); - void unpack_comm_vel(int, int, double *); - int pack_reverse(int, int, double *); - void unpack_reverse(int, int *, double *); - int pack_border(int, int *, double *, int, int *); - int pack_border_vel(int, int *, double *, int, int *); - int pack_border_hybrid(int, int *, double *); - void unpack_border(int, int, double *); - void unpack_border_vel(int, int, double *); - int unpack_border_hybrid(int, int, double *); - int pack_exchange(int, double *); - int unpack_exchange(double *); - int size_restart(); + ~AtomVecBond(); int pack_restart(int, double *); int unpack_restart(double *); - void create_atom(int, double *); void data_atom(double *, imageint, char **); - int data_atom_hybrid(int, char **); - void pack_data(double **); - int pack_data_hybrid(int, double *); - void write_data(FILE *, int, double **); - int write_data_hybrid(FILE *, double *); - bigint memory_usage(); private: - tagint *tag; - int *type,*mask; - imageint *image; - double **x,**v,**f; - tagint *molecule; - int **nspecial; - tagint **special; - int *num_bond; - int **bond_type; - tagint **bond_atom; + int bond_per_atom; + int *bond_negative; }; } @@ -76,13 +44,4 @@ class AtomVecBond : public AtomVec { /* ERROR/WARNING messages: -E: Per-processor system is too big - -The number of owned atoms plus ghost atoms on a single -processor must fit in 32-bit integer. - -E: Invalid atom type in Atoms section of data file - -Atom types must range from 1 to specified # of types. - */ diff --git a/src/MOLECULE/atom_vec_full.cpp b/src/MOLECULE/atom_vec_full.cpp index 76c60ba121..826d5fea4e 100644 --- a/src/MOLECULE/atom_vec_full.cpp +++ b/src/MOLECULE/atom_vec_full.cpp @@ -13,13 +13,6 @@ #include "atom_vec_full.h" #include "atom.h" -#include "comm.h" -#include "domain.h" -#include "modify.h" -#include "fix.h" -#include "memory.h" -#include "error.h" -#include "utils.h" using namespace LAMMPS_NS; @@ -31,1078 +24,204 @@ AtomVecFull::AtomVecFull(LAMMPS *lmp) : AtomVec(lmp) bonds_allow = angles_allow = dihedrals_allow = impropers_allow = 1; mass_type = 1; - comm_x_only = comm_f_only = 1; - size_forward = 3; - size_reverse = 3; - size_border = 8; - size_velocity = 3; - size_data_atom = 7; - size_data_vel = 4; - xcol_data = 5; - atom->molecule_flag = atom->q_flag = 1; -} - -/* ---------------------------------------------------------------------- - grow atom arrays - n = 0 grows arrays by a chunk - n > 0 allocates arrays to size n -------------------------------------------------------------------------- */ - -void AtomVecFull::grow(int n) -{ - if (n == 0) grow_nmax(); - else nmax = n; - atom->nmax = nmax; - if (nmax < 0 || nmax > MAXSMALLINT) - error->one(FLERR,"Per-processor system is too big"); - - tag = memory->grow(atom->tag,nmax,"atom:tag"); - type = memory->grow(atom->type,nmax,"atom:type"); - mask = memory->grow(atom->mask,nmax,"atom:mask"); - image = memory->grow(atom->image,nmax,"atom:image"); - x = memory->grow(atom->x,nmax,3,"atom:x"); - v = memory->grow(atom->v,nmax,3,"atom:v"); - f = memory->grow(atom->f,nmax*comm->nthreads,3,"atom:f"); - - q = memory->grow(atom->q,nmax,"atom:q"); - molecule = memory->grow(atom->molecule,nmax,"atom:molecule"); - - nspecial = memory->grow(atom->nspecial,nmax,3,"atom:nspecial"); - special = memory->grow(atom->special,nmax,atom->maxspecial,"atom:special"); - - num_bond = memory->grow(atom->num_bond,nmax,"atom:num_bond"); - bond_type = memory->grow(atom->bond_type,nmax,atom->bond_per_atom, - "atom:bond_type"); - bond_atom = memory->grow(atom->bond_atom,nmax,atom->bond_per_atom, - "atom:bond_atom"); - - num_angle = memory->grow(atom->num_angle,nmax,"atom:num_angle"); - angle_type = memory->grow(atom->angle_type,nmax,atom->angle_per_atom, - "atom:angle_type"); - angle_atom1 = memory->grow(atom->angle_atom1,nmax,atom->angle_per_atom, - "atom:angle_atom1"); - angle_atom2 = memory->grow(atom->angle_atom2,nmax,atom->angle_per_atom, - "atom:angle_atom2"); - angle_atom3 = memory->grow(atom->angle_atom3,nmax,atom->angle_per_atom, - "atom:angle_atom3"); - - num_dihedral = memory->grow(atom->num_dihedral,nmax,"atom:num_dihedral"); - dihedral_type = memory->grow(atom->dihedral_type,nmax, - atom->dihedral_per_atom,"atom:dihedral_type"); - dihedral_atom1 = - memory->grow(atom->dihedral_atom1,nmax,atom->dihedral_per_atom, - "atom:dihedral_atom1"); - dihedral_atom2 = - memory->grow(atom->dihedral_atom2,nmax,atom->dihedral_per_atom, - "atom:dihedral_atom2"); - dihedral_atom3 = - memory->grow(atom->dihedral_atom3,nmax,atom->dihedral_per_atom, - "atom:dihedral_atom3"); - dihedral_atom4 = - memory->grow(atom->dihedral_atom4,nmax,atom->dihedral_per_atom, - "atom:dihedral_atom4"); - - num_improper = memory->grow(atom->num_improper,nmax,"atom:num_improper"); - improper_type = - memory->grow(atom->improper_type,nmax,atom->improper_per_atom, - "atom:improper_type"); - improper_atom1 = - memory->grow(atom->improper_atom1,nmax,atom->improper_per_atom, - "atom:improper_atom1"); - improper_atom2 = - memory->grow(atom->improper_atom2,nmax,atom->improper_per_atom, - "atom:improper_atom2"); - improper_atom3 = - memory->grow(atom->improper_atom3,nmax,atom->improper_per_atom, - "atom:improper_atom3"); - improper_atom4 = - memory->grow(atom->improper_atom4,nmax,atom->improper_per_atom, - "atom:improper_atom4"); - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - modify->fix[atom->extra_grow[iextra]]->grow_arrays(nmax); -} - -/* ---------------------------------------------------------------------- - reset local array ptrs -------------------------------------------------------------------------- */ - -void AtomVecFull::grow_reset() -{ - tag = atom->tag; type = atom->type; - mask = atom->mask; image = atom->image; - x = atom->x; v = atom->v; f = atom->f; - q = atom->q; molecule = atom->molecule; - nspecial = atom->nspecial; special = atom->special; - num_bond = atom->num_bond; bond_type = atom->bond_type; - bond_atom = atom->bond_atom; - num_angle = atom->num_angle; angle_type = atom->angle_type; - angle_atom1 = atom->angle_atom1; angle_atom2 = atom->angle_atom2; - angle_atom3 = atom->angle_atom3; - num_dihedral = atom->num_dihedral; dihedral_type = atom->dihedral_type; - dihedral_atom1 = atom->dihedral_atom1; dihedral_atom2 = atom->dihedral_atom2; - dihedral_atom3 = atom->dihedral_atom3; dihedral_atom4 = atom->dihedral_atom4; - num_improper = atom->num_improper; improper_type = atom->improper_type; - improper_atom1 = atom->improper_atom1; improper_atom2 = atom->improper_atom2; - improper_atom3 = atom->improper_atom3; improper_atom4 = atom->improper_atom4; -} - -/* ---------------------------------------------------------------------- - copy atom I info to atom J -------------------------------------------------------------------------- */ - -void AtomVecFull::copy(int i, int j, int delflag) -{ - int k; - - tag[j] = tag[i]; - type[j] = type[i]; - mask[j] = mask[i]; - image[j] = image[i]; - x[j][0] = x[i][0]; - x[j][1] = x[i][1]; - x[j][2] = x[i][2]; - v[j][0] = v[i][0]; - v[j][1] = v[i][1]; - v[j][2] = v[i][2]; - - q[j] = q[i]; - molecule[j] = molecule[i]; - - num_bond[j] = num_bond[i]; - for (k = 0; k < num_bond[j]; k++) { - bond_type[j][k] = bond_type[i][k]; - bond_atom[j][k] = bond_atom[i][k]; - } - - num_angle[j] = num_angle[i]; - for (k = 0; k < num_angle[j]; k++) { - angle_type[j][k] = angle_type[i][k]; - angle_atom1[j][k] = angle_atom1[i][k]; - angle_atom2[j][k] = angle_atom2[i][k]; - angle_atom3[j][k] = angle_atom3[i][k]; - } - - num_dihedral[j] = num_dihedral[i]; - for (k = 0; k < num_dihedral[j]; k++) { - dihedral_type[j][k] = dihedral_type[i][k]; - dihedral_atom1[j][k] = dihedral_atom1[i][k]; - dihedral_atom2[j][k] = dihedral_atom2[i][k]; - dihedral_atom3[j][k] = dihedral_atom3[i][k]; - dihedral_atom4[j][k] = dihedral_atom4[i][k]; - } - - num_improper[j] = num_improper[i]; - for (k = 0; k < num_improper[j]; k++) { - improper_type[j][k] = improper_type[i][k]; - improper_atom1[j][k] = improper_atom1[i][k]; - improper_atom2[j][k] = improper_atom2[i][k]; - improper_atom3[j][k] = improper_atom3[i][k]; - improper_atom4[j][k] = improper_atom4[i][k]; - } - - nspecial[j][0] = nspecial[i][0]; - nspecial[j][1] = nspecial[i][1]; - nspecial[j][2] = nspecial[i][2]; - for (k = 0; k < nspecial[j][2]; k++) special[j][k] = special[i][k]; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - modify->fix[atom->extra_grow[iextra]]->copy_arrays(i,j,delflag); -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecFull::pack_comm(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]*domain->xprd + pbc[5]*domain->xy + pbc[4]*domain->xz; - dy = pbc[1]*domain->yprd + pbc[3]*domain->yz; - dz = pbc[2]*domain->zprd; - } - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - } - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecFull::pack_comm_vel(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz,dvx,dvy,dvz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]*domain->xprd + pbc[5]*domain->xy + pbc[4]*domain->xz; - dy = pbc[1]*domain->yprd + pbc[3]*domain->yz; - dz = pbc[2]*domain->zprd; - } - if (!deform_vremap) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } else { - dvx = pbc[0]*h_rate[0] + pbc[5]*h_rate[5] + pbc[4]*h_rate[4]; - dvy = pbc[1]*h_rate[1] + pbc[3]*h_rate[3]; - dvz = pbc[2]*h_rate[2]; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - if (mask[i] & deform_groupbit) { - buf[m++] = v[j][0] + dvx; - buf[m++] = v[j][1] + dvy; - buf[m++] = v[j][2] + dvz; - } else { - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } - } - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecFull::unpack_comm(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecFull::unpack_comm_vel(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - v[i][0] = buf[m++]; - v[i][1] = buf[m++]; - v[i][2] = buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecFull::pack_reverse(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - buf[m++] = f[i][0]; - buf[m++] = f[i][1]; - buf[m++] = f[i][2]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecFull::unpack_reverse(int n, int *list, double *buf) -{ - int i,j,m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - f[j][0] += buf[m++]; - f[j][1] += buf[m++]; - f[j][2] += buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecFull::pack_border(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = q[j]; - buf[m++] = ubuf(molecule[j]).d; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]; - dy = pbc[1]; - dz = pbc[2]; - } - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = q[j]; - buf[m++] = ubuf(molecule[j]).d; - } - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); - - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecFull::pack_border_vel(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz,dvx,dvy,dvz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = q[j]; - buf[m++] = ubuf(molecule[j]).d; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]; - dy = pbc[1]; - dz = pbc[2]; - } - if (!deform_vremap) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = q[j]; - buf[m++] = ubuf(molecule[j]).d; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } else { - dvx = pbc[0]*h_rate[0] + pbc[5]*h_rate[5] + pbc[4]*h_rate[4]; - dvy = pbc[1]*h_rate[1] + pbc[3]*h_rate[3]; - dvz = pbc[2]*h_rate[2]; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = q[j]; - buf[m++] = ubuf(molecule[j]).d; - if (mask[i] & deform_groupbit) { - buf[m++] = v[j][0] + dvx; - buf[m++] = v[j][1] + dvy; - buf[m++] = v[j][2] + dvz; - } else { - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } - } - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); - - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecFull::pack_border_hybrid(int n, int *list, double *buf) -{ - int i,j,m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = q[j]; - buf[m++] = ubuf(molecule[j]).d; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecFull::unpack_border(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - if (i == nmax) grow(0); - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - tag[i] = (tagint) ubuf(buf[m++]).i; - type[i] = (int) ubuf(buf[m++]).i; - mask[i] = (int) ubuf(buf[m++]).i; - q[i] = buf[m++]; - molecule[i] = (tagint) ubuf(buf[m++]).i; - } - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]-> - unpack_border(n,first,&buf[m]); + // strings with peratom variables to include in each AtomVec method + // strings cannot contain fields in corresponding AtomVec default strings + // order of fields in the string does not matter + // except fields_data_atom and fields_data_vel which must match data file + + fields_grow = (char *) + "q molecule num_bond bond_type bond_atom " + "num_angle angle_type angle_atom1 angle_atom2 angle_atom3 " + "num_dihedral dihedral_type dihedral_atom1 dihedral_atom2 " + "dihedral_atom3 dihedral_atom4 " + "num_improper improper_type improper_atom1 improper_atom2 " + "improper_atom3 improper_atom4 " + "nspecial special"; + fields_copy = (char *) + "q molecule num_bond bond_type bond_atom " + "num_angle angle_type angle_atom1 angle_atom2 angle_atom3 " + "num_dihedral dihedral_type dihedral_atom1 dihedral_atom2 " + "dihedral_atom3 dihedral_atom4 " + "num_improper improper_type improper_atom1 improper_atom2 " + "improper_atom3 improper_atom4 " + "nspecial special"; + fields_comm = NULL; + fields_comm_vel = NULL; + fields_reverse = NULL; + fields_border = (char *) "q molecule"; + fields_border_vel = (char *) "q molecule"; + fields_exchange = (char *) + "q molecule num_bond bond_type bond_atom " + "num_angle angle_type angle_atom1 angle_atom2 angle_atom3 " + "num_dihedral dihedral_type dihedral_atom1 dihedral_atom2 " + "dihedral_atom3 dihedral_atom4 " + "num_improper improper_type improper_atom1 improper_atom2 " + "improper_atom3 improper_atom4 " + "nspecial special"; + fields_restart = (char *) + "q molecule num_bond bond_type bond_atom " + "num_angle angle_type angle_atom1 angle_atom2 angle_atom3 " + "num_dihedral dihedral_type dihedral_atom1 dihedral_atom2 " + "dihedral_atom3 dihedral_atom4 " + "num_improper improper_type improper_atom1 improper_atom2 " + "improper_atom3 improper_atom4"; + fields_create = (char *) + "q molecule num_bond num_angle num_dihedral num_improper nspecial"; + fields_data_atom = (char *) "id molecule type q x"; + fields_data_vel = NULL; + + setup_fields(); + + bond_per_atom = angle_per_atom = dihedral_per_atom = improper_per_atom = 0; + bond_negative = angle_negative = dihedral_negative = improper_negative = NULL; } /* ---------------------------------------------------------------------- */ -void AtomVecFull::unpack_border_vel(int n, int first, double *buf) +AtomVecFull::~AtomVecFull() { - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - if (i == nmax) grow(0); - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - tag[i] = (tagint) ubuf(buf[m++]).i; - type[i] = (int) ubuf(buf[m++]).i; - mask[i] = (int) ubuf(buf[m++]).i; - q[i] = buf[m++]; - molecule[i] = (tagint) ubuf(buf[m++]).i; - v[i][0] = buf[m++]; - v[i][1] = buf[m++]; - v[i][2] = buf[m++]; - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]-> - unpack_border(n,first,&buf[m]); -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecFull::unpack_border_hybrid(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - q[i] = buf[m++]; - molecule[i] = (tagint) ubuf(buf[m++]).i; - } - return m; + delete [] bond_negative; + delete [] angle_negative; + delete [] dihedral_negative; + delete [] improper_negative; } /* ---------------------------------------------------------------------- - pack data for atom I for sending to another proc - xyz must be 1st 3 values, so comm::exchange() can test on them + pack atom I's data for restart file + modify/unmodify values for default AtomVec::pack_restart() to pack ------------------------------------------------------------------------- */ -int AtomVecFull::pack_exchange(int i, double *buf) +int AtomVecFull::pack_restart(int i, double *buf) { - int k; + // insure negative vectors are needed length - int m = 1; - buf[m++] = x[i][0]; - buf[m++] = x[i][1]; - buf[m++] = x[i][2]; - buf[m++] = v[i][0]; - buf[m++] = v[i][1]; - buf[m++] = v[i][2]; - buf[m++] = ubuf(tag[i]).d; - buf[m++] = ubuf(type[i]).d; - buf[m++] = ubuf(mask[i]).d; - buf[m++] = ubuf(image[i]).d; - - buf[m++] = q[i]; - buf[m++] = ubuf(molecule[i]).d; - - buf[m++] = ubuf(num_bond[i]).d; - for (k = 0; k < num_bond[i]; k++) { - buf[m++] = ubuf(bond_type[i][k]).d; - buf[m++] = ubuf(bond_atom[i][k]).d; + if (bond_per_atom < atom->bond_per_atom) { + delete [] bond_negative; + bond_per_atom = atom->bond_per_atom; + bond_negative = new int[bond_per_atom]; } - - buf[m++] = ubuf(num_angle[i]).d; - for (k = 0; k < num_angle[i]; k++) { - buf[m++] = ubuf(angle_type[i][k]).d; - buf[m++] = ubuf(angle_atom1[i][k]).d; - buf[m++] = ubuf(angle_atom2[i][k]).d; - buf[m++] = ubuf(angle_atom3[i][k]).d; + if (angle_per_atom < atom->angle_per_atom) { + delete [] angle_negative; + angle_per_atom = atom->angle_per_atom; + angle_negative = new int[angle_per_atom]; } - - buf[m++] = ubuf(num_dihedral[i]).d; - for (k = 0; k < num_dihedral[i]; k++) { - buf[m++] = ubuf(dihedral_type[i][k]).d; - buf[m++] = ubuf(dihedral_atom1[i][k]).d; - buf[m++] = ubuf(dihedral_atom2[i][k]).d; - buf[m++] = ubuf(dihedral_atom3[i][k]).d; - buf[m++] = ubuf(dihedral_atom4[i][k]).d; + if (dihedral_per_atom < atom->dihedral_per_atom) { + delete [] dihedral_negative; + dihedral_per_atom = atom->dihedral_per_atom; + dihedral_negative = new int[dihedral_per_atom]; } - - buf[m++] = ubuf(num_improper[i]).d; - for (k = 0; k < num_improper[i]; k++) { - buf[m++] = ubuf(improper_type[i][k]).d; - buf[m++] = ubuf(improper_atom1[i][k]).d; - buf[m++] = ubuf(improper_atom2[i][k]).d; - buf[m++] = ubuf(improper_atom3[i][k]).d; - buf[m++] = ubuf(improper_atom4[i][k]).d; + if (improper_per_atom < atom->improper_per_atom) { + delete [] improper_negative; + improper_per_atom = atom->improper_per_atom; + improper_negative = new int[improper_per_atom]; } - buf[m++] = ubuf(nspecial[i][0]).d; - buf[m++] = ubuf(nspecial[i][1]).d; - buf[m++] = ubuf(nspecial[i][2]).d; - for (k = 0; k < nspecial[i][2]; k++) buf[m++] = ubuf(special[i][k]).d; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - m += modify->fix[atom->extra_grow[iextra]]->pack_exchange(i,&buf[m]); - - buf[0] = m; - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecFull::unpack_exchange(double *buf) -{ - int k; - - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); + // flip any negative types to positive and flag which ones - int m = 1; - x[nlocal][0] = buf[m++]; - x[nlocal][1] = buf[m++]; - x[nlocal][2] = buf[m++]; - v[nlocal][0] = buf[m++]; - v[nlocal][1] = buf[m++]; - v[nlocal][2] = buf[m++]; - tag[nlocal] = (tagint) ubuf(buf[m++]).i; - type[nlocal] = (int) ubuf(buf[m++]).i; - mask[nlocal] = (int) ubuf(buf[m++]).i; - image[nlocal] = (imageint) ubuf(buf[m++]).i; + int *num_bond = atom->num_bond; + int **bond_type = atom->bond_type; + int *num_angle = atom->num_angle; + int **angle_type = atom->angle_type; + int *num_dihedral = atom->num_dihedral; + int **dihedral_type = atom->dihedral_type; + int *num_improper = atom->num_improper; + int **improper_type = atom->improper_type; - q[nlocal] = buf[m++]; - molecule[nlocal] = (tagint) ubuf(buf[m++]).i; - - num_bond[nlocal] = (int) ubuf(buf[m++]).i; - for (k = 0; k < num_bond[nlocal]; k++) { - bond_type[nlocal][k] = (int) ubuf(buf[m++]).i; - bond_atom[nlocal][k] = (tagint) ubuf(buf[m++]).i; + int any_bond_negative = 0; + for (int m = 0; m < num_bond[i]; m++) { + if (bond_type[i][m] < 0) { + bond_negative[m] = 1; + bond_type[i][m] = -bond_type[i][m]; + any_bond_negative = 1; + } else bond_negative[m] = 0; } - num_angle[nlocal] = (int) ubuf(buf[m++]).i; - for (k = 0; k < num_angle[nlocal]; k++) { - angle_type[nlocal][k] = (int) ubuf(buf[m++]).i; - angle_atom1[nlocal][k] = (tagint) ubuf(buf[m++]).i; - angle_atom2[nlocal][k] = (tagint) ubuf(buf[m++]).i; - angle_atom3[nlocal][k] = (tagint) ubuf(buf[m++]).i; + int any_angle_negative = 0; + for (int m = 0; m < num_angle[i]; m++) { + if (angle_type[i][m] < 0) { + angle_negative[m] = 1; + angle_type[i][m] = -angle_type[i][m]; + any_angle_negative = 1; + } else angle_negative[m] = 0; } - num_dihedral[nlocal] = (int) ubuf(buf[m++]).i; - for (k = 0; k < num_dihedral[nlocal]; k++) { - dihedral_type[nlocal][k] = (int) ubuf(buf[m++]).i; - dihedral_atom1[nlocal][k] = (tagint) ubuf(buf[m++]).i; - dihedral_atom2[nlocal][k] = (tagint) ubuf(buf[m++]).i; - dihedral_atom3[nlocal][k] = (tagint) ubuf(buf[m++]).i; - dihedral_atom4[nlocal][k] = (tagint) ubuf(buf[m++]).i; + int any_dihedral_negative = 0; + for (int m = 0; m < num_dihedral[i]; m++) { + if (dihedral_type[i][m] < 0) { + dihedral_negative[m] = 1; + dihedral_type[i][m] = -dihedral_type[i][m]; + any_dihedral_negative = 1; + } else dihedral_negative[m] = 0; } - num_improper[nlocal] = (int) ubuf(buf[m++]).i; - for (k = 0; k < num_improper[nlocal]; k++) { - improper_type[nlocal][k] = (int) ubuf(buf[m++]).i; - improper_atom1[nlocal][k] = (tagint) ubuf(buf[m++]).i; - improper_atom2[nlocal][k] = (tagint) ubuf(buf[m++]).i; - improper_atom3[nlocal][k] = (tagint) ubuf(buf[m++]).i; - improper_atom4[nlocal][k] = (tagint) ubuf(buf[m++]).i; + int any_improper_negative = 0; + for (int m = 0; m < num_improper[i]; m++) { + if (improper_type[i][m] < 0) { + improper_negative[m] = 1; + improper_type[i][m] = -improper_type[i][m]; + any_improper_negative = 1; + } else improper_negative[m] = 0; } - nspecial[nlocal][0] = (int) ubuf(buf[m++]).i; - nspecial[nlocal][1] = (int) ubuf(buf[m++]).i; - nspecial[nlocal][2] = (int) ubuf(buf[m++]).i; - for (k = 0; k < nspecial[nlocal][2]; k++) - special[nlocal][k] = (tagint) ubuf(buf[m++]).i; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - m += modify->fix[atom->extra_grow[iextra]]-> - unpack_exchange(nlocal,&buf[m]); - - atom->nlocal++; - return m; -} - -/* ---------------------------------------------------------------------- - size of restart data for all atoms owned by this proc - include extra data stored by fixes -------------------------------------------------------------------------- */ - -int AtomVecFull::size_restart() -{ - int i; - - int nlocal = atom->nlocal; - int n = 0; - for (i = 0; i < nlocal; i++) - n += 17 + 2*num_bond[i] + 4*num_angle[i] + - 5*num_dihedral[i] + 5*num_improper[i]; - - if (atom->nextra_restart) - for (int iextra = 0; iextra < atom->nextra_restart; iextra++) - for (i = 0; i < nlocal; i++) - n += modify->fix[atom->extra_restart[iextra]]->size_restart(i); - - return n; -} - -/* ---------------------------------------------------------------------- - pack atom I's data for restart file including extra quantities - xyz must be 1st 3 values, so that read_restart can test on them - molecular types may be negative, but write as positive -------------------------------------------------------------------------- */ - -int AtomVecFull::pack_restart(int i, double *buf) -{ - int k; + // perform the pack with adjusted values - int m = 1; - buf[m++] = x[i][0]; - buf[m++] = x[i][1]; - buf[m++] = x[i][2]; - buf[m++] = ubuf(tag[i]).d; - buf[m++] = ubuf(type[i]).d; - buf[m++] = ubuf(mask[i]).d; - buf[m++] = ubuf(image[i]).d; - buf[m++] = v[i][0]; - buf[m++] = v[i][1]; - buf[m++] = v[i][2]; + int n = AtomVec::pack_restart(i,buf); - buf[m++] = q[i]; - buf[m++] = ubuf(molecule[i]).d; + // restore the flagged types to their negative values - buf[m++] = ubuf(num_bond[i]).d; - for (k = 0; k < num_bond[i]; k++) { - buf[m++] = ubuf(MAX(bond_type[i][k],-bond_type[i][k])).d; - buf[m++] = ubuf(bond_atom[i][k]).d; + if (any_bond_negative) { + for (int m = 0; m < num_bond[i]; m++) + if (bond_negative[m]) bond_type[i][m] = -bond_type[i][m]; } - - buf[m++] = ubuf(num_angle[i]).d; - for (k = 0; k < num_angle[i]; k++) { - buf[m++] = ubuf(MAX(angle_type[i][k],-angle_type[i][k])).d; - buf[m++] = ubuf(angle_atom1[i][k]).d; - buf[m++] = ubuf(angle_atom2[i][k]).d; - buf[m++] = ubuf(angle_atom3[i][k]).d; + if (any_angle_negative) { + for (int m = 0; m < num_angle[i]; m++) + if (angle_negative[m]) angle_type[i][m] = -angle_type[i][m]; } - - buf[m++] = ubuf(num_dihedral[i]).d; - for (k = 0; k < num_dihedral[i]; k++) { - buf[m++] = ubuf(MAX(dihedral_type[i][k],-dihedral_type[i][k])).d; - buf[m++] = ubuf(dihedral_atom1[i][k]).d; - buf[m++] = ubuf(dihedral_atom2[i][k]).d; - buf[m++] = ubuf(dihedral_atom3[i][k]).d; - buf[m++] = ubuf(dihedral_atom4[i][k]).d; + if (any_dihedral_negative) { + for (int m = 0; m < num_dihedral[i]; m++) + if (dihedral_negative[m]) dihedral_type[i][m] = -dihedral_type[i][m]; } - - buf[m++] = ubuf(num_improper[i]).d; - for (k = 0; k < num_improper[i]; k++) { - buf[m++] = ubuf(MAX(improper_type[i][k],-improper_type[i][k])).d; - buf[m++] = ubuf(improper_atom1[i][k]).d; - buf[m++] = ubuf(improper_atom2[i][k]).d; - buf[m++] = ubuf(improper_atom3[i][k]).d; - buf[m++] = ubuf(improper_atom4[i][k]).d; + if (any_improper_negative) { + for (int m = 0; m < num_improper[i]; m++) + if (improper_negative[m]) improper_type[i][m] = -improper_type[i][m]; } - if (atom->nextra_restart) - for (int iextra = 0; iextra < atom->nextra_restart; iextra++) - m += modify->fix[atom->extra_restart[iextra]]->pack_restart(i,&buf[m]); - - buf[0] = m; - return m; + return n; } /* ---------------------------------------------------------------------- unpack data for one atom from restart file including extra quantities + initialize other atom quantities ------------------------------------------------------------------------- */ int AtomVecFull::unpack_restart(double *buf) { - int k; - - int nlocal = atom->nlocal; - if (nlocal == nmax) { - grow(0); - if (atom->nextra_store) - memory->grow(atom->extra,nmax,atom->nextra_store,"atom:extra"); - } + AtomVec::unpack_restart(buf); + int ilocal = atom->nlocal-1; - int m = 1; - x[nlocal][0] = buf[m++]; - x[nlocal][1] = buf[m++]; - x[nlocal][2] = buf[m++]; - tag[nlocal] = (tagint) ubuf(buf[m++]).i; - type[nlocal] = (int) ubuf(buf[m++]).i; - mask[nlocal] = (int) ubuf(buf[m++]).i; - image[nlocal] = (imageint) ubuf(buf[m++]).i; - v[nlocal][0] = buf[m++]; - v[nlocal][1] = buf[m++]; - v[nlocal][2] = buf[m++]; - - q[nlocal] = buf[m++]; - molecule[nlocal] = (tagint) ubuf(buf[m++]).i; - - num_bond[nlocal] = (int) ubuf(buf[m++]).i; - for (k = 0; k < num_bond[nlocal]; k++) { - bond_type[nlocal][k] = (int) ubuf(buf[m++]).i; - bond_atom[nlocal][k] = (tagint) ubuf(buf[m++]).i; - } - - num_angle[nlocal] = (int) ubuf(buf[m++]).i; - for (k = 0; k < num_angle[nlocal]; k++) { - angle_type[nlocal][k] = (int) ubuf(buf[m++]).i; - angle_atom1[nlocal][k] = (tagint) ubuf(buf[m++]).i; - angle_atom2[nlocal][k] = (tagint) ubuf(buf[m++]).i; - angle_atom3[nlocal][k] = (tagint) ubuf(buf[m++]).i; - } - - num_dihedral[nlocal] = (int) ubuf(buf[m++]).i; - for (k = 0; k < num_dihedral[nlocal]; k++) { - dihedral_type[nlocal][k] = (int) ubuf(buf[m++]).i; - dihedral_atom1[nlocal][k] = (tagint) ubuf(buf[m++]).i; - dihedral_atom2[nlocal][k] = (tagint) ubuf(buf[m++]).i; - dihedral_atom3[nlocal][k] = (tagint) ubuf(buf[m++]).i; - dihedral_atom4[nlocal][k] = (tagint) ubuf(buf[m++]).i; - } - - num_improper[nlocal] = (int) ubuf(buf[m++]).i; - for (k = 0; k < num_improper[nlocal]; k++) { - improper_type[nlocal][k] = (int) ubuf(buf[m++]).i; - improper_atom1[nlocal][k] = (tagint) ubuf(buf[m++]).i; - improper_atom2[nlocal][k] = (tagint) ubuf(buf[m++]).i; - improper_atom3[nlocal][k] = (tagint) ubuf(buf[m++]).i; - improper_atom4[nlocal][k] = (tagint) ubuf(buf[m++]).i; - } - - nspecial[nlocal][0] = nspecial[nlocal][1] = nspecial[nlocal][2] = 0; - - double **extra = atom->extra; - if (atom->nextra_store) { - int size = static_cast (buf[0]) - m; - for (int i = 0; i < size; i++) extra[nlocal][i] = buf[m++]; - } - - atom->nlocal++; - return m; -} - -/* ---------------------------------------------------------------------- - create one atom of itype at coord - set other values to defaults -------------------------------------------------------------------------- */ - -void AtomVecFull::create_atom(int itype, double *coord) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - tag[nlocal] = 0; - type[nlocal] = itype; - x[nlocal][0] = coord[0]; - x[nlocal][1] = coord[1]; - x[nlocal][2] = coord[2]; - mask[nlocal] = 1; - image[nlocal] = ((imageint) IMGMAX << IMG2BITS) | - ((imageint) IMGMAX << IMGBITS) | IMGMAX; - v[nlocal][0] = 0.0; - v[nlocal][1] = 0.0; - v[nlocal][2] = 0.0; - - q[nlocal] = 0.0; - molecule[nlocal] = 0; - num_bond[nlocal] = 0; - num_angle[nlocal] = 0; - num_dihedral[nlocal] = 0; - num_improper[nlocal] = 0; - nspecial[nlocal][0] = nspecial[nlocal][1] = nspecial[nlocal][2] = 0; - - atom->nlocal++; + atom->nspecial[ilocal][0] = 0; + atom->nspecial[ilocal][1] = 0; + atom->nspecial[ilocal][2] = 0; } /* ---------------------------------------------------------------------- unpack one line from Atoms section of data file - initialize other atom quantities + modify what default AtomVec::data_atom() just unpacked + or initialize other atom quantities ------------------------------------------------------------------------- */ void AtomVecFull::data_atom(double *coord, imageint imagetmp, char **values) { - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - tag[nlocal] = utils::tnumeric(FLERR,values[0],true,lmp); - molecule[nlocal] = utils::tnumeric(FLERR,values[1],true,lmp); - type[nlocal] = utils::inumeric(FLERR,values[2],true,lmp); - if (type[nlocal] <= 0 || type[nlocal] > atom->ntypes) - error->one(FLERR,"Invalid atom type in Atoms section of data file"); - - q[nlocal] = utils::numeric(FLERR,values[3],true,lmp); - - x[nlocal][0] = coord[0]; - x[nlocal][1] = coord[1]; - x[nlocal][2] = coord[2]; - - image[nlocal] = imagetmp; - - mask[nlocal] = 1; - v[nlocal][0] = 0.0; - v[nlocal][1] = 0.0; - v[nlocal][2] = 0.0; - num_bond[nlocal] = 0; - num_angle[nlocal] = 0; - num_dihedral[nlocal] = 0; - num_improper[nlocal] = 0; - - atom->nlocal++; -} - -/* ---------------------------------------------------------------------- - unpack hybrid quantities from one line in Atoms section of data file - initialize other atom quantities for this sub-style -------------------------------------------------------------------------- */ - -int AtomVecFull::data_atom_hybrid(int nlocal, char **values) -{ - molecule[nlocal] = utils::tnumeric(FLERR,values[0],true,lmp); - q[nlocal] = utils::numeric(FLERR,values[1],true,lmp); - - num_bond[nlocal] = 0; - num_angle[nlocal] = 0; - num_dihedral[nlocal] = 0; - num_improper[nlocal] = 0; - - return 2; -} - -/* ---------------------------------------------------------------------- - pack atom info for data file including 3 image flags -------------------------------------------------------------------------- */ - -void AtomVecFull::pack_data(double **buf) -{ - int nlocal = atom->nlocal; - for (int i = 0; i < nlocal; i++) { - buf[i][0] = ubuf(tag[i]).d; - buf[i][1] = ubuf(molecule[i]).d; - buf[i][2] = ubuf(type[i]).d; - buf[i][3] = q[i]; - buf[i][4] = x[i][0]; - buf[i][5] = x[i][1]; - buf[i][6] = x[i][2]; - buf[i][7] = ubuf((image[i] & IMGMASK) - IMGMAX).d; - buf[i][8] = ubuf((image[i] >> IMGBITS & IMGMASK) - IMGMAX).d; - buf[i][9] = ubuf((image[i] >> IMG2BITS) - IMGMAX).d; - } -} - -/* ---------------------------------------------------------------------- - pack hybrid atom info for data file -------------------------------------------------------------------------- */ - -int AtomVecFull::pack_data_hybrid(int i, double *buf) -{ - buf[0] = ubuf(molecule[i]).d; - buf[1] = q[i]; - return 2; -} - -/* ---------------------------------------------------------------------- - write atom info to data file including 3 image flags -------------------------------------------------------------------------- */ - -void AtomVecFull::write_data(FILE *fp, int n, double **buf) -{ - for (int i = 0; i < n; i++) - fprintf(fp,TAGINT_FORMAT " " TAGINT_FORMAT - " %d %-1.16e %-1.16e %-1.16e %-1.16e %d %d %d\n", - (tagint) ubuf(buf[i][0]).i,(tagint) ubuf(buf[i][1]).i, - (int) ubuf(buf[i][2]).i, - buf[i][3],buf[i][4],buf[i][5],buf[i][6], - (int) ubuf(buf[i][7]).i,(int) ubuf(buf[i][8]).i, - (int) ubuf(buf[i][9]).i); -} - -/* ---------------------------------------------------------------------- - write hybrid atom info to data file -------------------------------------------------------------------------- */ - -int AtomVecFull::write_data_hybrid(FILE *fp, double *buf) -{ - fprintf(fp," " TAGINT_FORMAT " %-1.16e",(tagint) ubuf(buf[0]).i,buf[1]); - return 2; -} - -/* ---------------------------------------------------------------------- - return # of bytes of allocated memory -------------------------------------------------------------------------- */ - -bigint AtomVecFull::memory_usage() -{ - bigint bytes = 0; - - if (atom->memcheck("tag")) bytes += memory->usage(tag,nmax); - if (atom->memcheck("type")) bytes += memory->usage(type,nmax); - if (atom->memcheck("mask")) bytes += memory->usage(mask,nmax); - if (atom->memcheck("image")) bytes += memory->usage(image,nmax); - if (atom->memcheck("x")) bytes += memory->usage(x,nmax,3); - if (atom->memcheck("v")) bytes += memory->usage(v,nmax,3); - if (atom->memcheck("f")) bytes += memory->usage(f,nmax*comm->nthreads,3); - - if (atom->memcheck("q")) bytes += memory->usage(q,nmax); - if (atom->memcheck("molecule")) bytes += memory->usage(molecule,nmax); - if (atom->memcheck("nspecial")) bytes += memory->usage(nspecial,nmax,3); - if (atom->memcheck("special")) - bytes += memory->usage(special,nmax,atom->maxspecial); - - if (atom->memcheck("num_bond")) bytes += memory->usage(num_bond,nmax); - if (atom->memcheck("bond_type")) - bytes += memory->usage(bond_type,nmax,atom->bond_per_atom); - if (atom->memcheck("bond_atom")) - bytes += memory->usage(bond_atom,nmax,atom->bond_per_atom); - - if (atom->memcheck("num_angle")) bytes += memory->usage(num_angle,nmax); - if (atom->memcheck("angle_type")) - bytes += memory->usage(angle_type,nmax,atom->angle_per_atom); - if (atom->memcheck("angle_atom1")) - bytes += memory->usage(angle_atom1,nmax,atom->angle_per_atom); - if (atom->memcheck("angle_atom2")) - bytes += memory->usage(angle_atom2,nmax,atom->angle_per_atom); - if (atom->memcheck("angle_atom3")) - bytes += memory->usage(angle_atom3,nmax,atom->angle_per_atom); - - if (atom->memcheck("num_dihedral")) bytes += memory->usage(num_dihedral,nmax); - if (atom->memcheck("dihedral_type")) - bytes += memory->usage(dihedral_type,nmax,atom->dihedral_per_atom); - if (atom->memcheck("dihedral_atom1")) - bytes += memory->usage(dihedral_atom1,nmax,atom->dihedral_per_atom); - if (atom->memcheck("dihedral_atom2")) - bytes += memory->usage(dihedral_atom2,nmax,atom->dihedral_per_atom); - if (atom->memcheck("dihedral_atom3")) - bytes += memory->usage(dihedral_atom3,nmax,atom->dihedral_per_atom); - if (atom->memcheck("dihedral_atom4")) - bytes += memory->usage(dihedral_atom4,nmax,atom->dihedral_per_atom); - - if (atom->memcheck("num_improper")) bytes += memory->usage(num_improper,nmax); - if (atom->memcheck("improper_type")) - bytes += memory->usage(improper_type,nmax,atom->improper_per_atom); - if (atom->memcheck("improper_atom1")) - bytes += memory->usage(improper_atom1,nmax,atom->improper_per_atom); - if (atom->memcheck("improper_atom2")) - bytes += memory->usage(improper_atom2,nmax,atom->improper_per_atom); - if (atom->memcheck("improper_atom3")) - bytes += memory->usage(improper_atom3,nmax,atom->improper_per_atom); - if (atom->memcheck("improper_atom4")) - bytes += memory->usage(improper_atom4,nmax,atom->improper_per_atom); + AtomVec::data_atom(coord,imagetmp,values); + int ilocal = atom->nlocal-1; - return bytes; + atom->num_bond[ilocal] = 0; + atom->num_angle[ilocal] = 0; + atom->num_dihedral[ilocal] = 0; + atom->num_improper[ilocal] = 0; + atom->nspecial[ilocal][0] = 0; + atom->nspecial[ilocal][1] = 0; + atom->nspecial[ilocal][2] = 0; } diff --git a/src/MOLECULE/atom_vec_full.h b/src/MOLECULE/atom_vec_full.h index abaf570b17..b194a86994 100644 --- a/src/MOLECULE/atom_vec_full.h +++ b/src/MOLECULE/atom_vec_full.h @@ -27,57 +27,14 @@ namespace LAMMPS_NS { class AtomVecFull : public AtomVec { public: AtomVecFull(class LAMMPS *); - virtual ~AtomVecFull() {} - void grow(int); - void grow_reset(); - void copy(int, int, int); - virtual int pack_comm(int, int *, double *, int, int *); - virtual int pack_comm_vel(int, int *, double *, int, int *); - virtual void unpack_comm(int, int, double *); - virtual void unpack_comm_vel(int, int, double *); - int pack_reverse(int, int, double *); - void unpack_reverse(int, int *, double *); - virtual int pack_border(int, int *, double *, int, int *); - virtual int pack_border_vel(int, int *, double *, int, int *); - int pack_border_hybrid(int, int *, double *); - virtual void unpack_border(int, int, double *); - virtual void unpack_border_vel(int, int, double *); - int unpack_border_hybrid(int, int, double *); - virtual int pack_exchange(int, double *); - virtual int unpack_exchange(double *); - int size_restart(); + ~AtomVecFull(); int pack_restart(int, double *); int unpack_restart(double *); - void create_atom(int, double *); void data_atom(double *, imageint, char **); - int data_atom_hybrid(int, char **); - void pack_data(double **); - int pack_data_hybrid(int, double *); - void write_data(FILE *, int, double **); - int write_data_hybrid(FILE *, double *); - bigint memory_usage(); - protected: - tagint *tag; - int *type,*mask; - imageint *image; - double **x,**v,**f; - double *q; - tagint *molecule; - int **nspecial; - tagint **special; - int *num_bond; - int **bond_type; - tagint **bond_atom; - int *num_angle; - int **angle_type; - tagint **angle_atom1,**angle_atom2,**angle_atom3; - int *num_dihedral; - int **dihedral_type; - tagint **dihedral_atom1,**dihedral_atom2,**dihedral_atom3,**dihedral_atom4; - int *num_improper; - int **improper_type; - tagint **improper_atom1,**improper_atom2,**improper_atom3,**improper_atom4; + private: + int bond_per_atom,angle_per_atom,dihedral_per_atom,improper_per_atom; + int *bond_negative,*angle_negative,*dihedral_negative,*improper_negative; }; } @@ -87,13 +44,4 @@ class AtomVecFull : public AtomVec { /* ERROR/WARNING messages: -E: Per-processor system is too big - -The number of owned atoms plus ghost atoms on a single -processor must fit in 32-bit integer. - -E: Invalid atom type in Atoms section of data file - -Atom types must range from 1 to specified # of types. - */ diff --git a/src/MOLECULE/atom_vec_molecular.cpp b/src/MOLECULE/atom_vec_molecular.cpp index 73cec70456..dad7c5cea6 100644 --- a/src/MOLECULE/atom_vec_molecular.cpp +++ b/src/MOLECULE/atom_vec_molecular.cpp @@ -13,13 +13,6 @@ #include "atom_vec_molecular.h" #include "atom.h" -#include "comm.h" -#include "domain.h" -#include "modify.h" -#include "fix.h" -#include "memory.h" -#include "error.h" -#include "utils.h" using namespace LAMMPS_NS; @@ -31,1056 +24,204 @@ AtomVecMolecular::AtomVecMolecular(LAMMPS *lmp) : AtomVec(lmp) bonds_allow = angles_allow = dihedrals_allow = impropers_allow = 1; mass_type = 1; - comm_x_only = comm_f_only = 1; - size_forward = 3; - size_reverse = 3; - size_border = 7; - size_velocity = 3; - size_data_atom = 6; - size_data_vel = 4; - xcol_data = 4; - atom->molecule_flag = 1; -} - -/* ---------------------------------------------------------------------- - grow atom arrays - n = 0 grows arrays by a chunk - n > 0 allocates arrays to size n -------------------------------------------------------------------------- */ - -void AtomVecMolecular::grow(int n) -{ - if (n == 0) grow_nmax(); - else nmax = n; - atom->nmax = nmax; - if (nmax < 0 || nmax > MAXSMALLINT) - error->one(FLERR,"Per-processor system is too big"); - - tag = memory->grow(atom->tag,nmax,"atom:tag"); - type = memory->grow(atom->type,nmax,"atom:type"); - mask = memory->grow(atom->mask,nmax,"atom:mask"); - image = memory->grow(atom->image,nmax,"atom:image"); - x = memory->grow(atom->x,nmax,3,"atom:x"); - v = memory->grow(atom->v,nmax,3,"atom:v"); - f = memory->grow(atom->f,nmax*comm->nthreads,3,"atom:f"); - - molecule = memory->grow(atom->molecule,nmax,"atom:molecule"); - - nspecial = memory->grow(atom->nspecial,nmax,3,"atom:nspecial"); - special = memory->grow(atom->special,nmax,atom->maxspecial,"atom:special"); - - num_bond = memory->grow(atom->num_bond,nmax,"atom:num_bond"); - bond_type = memory->grow(atom->bond_type,nmax,atom->bond_per_atom, - "atom:bond_type"); - bond_atom = memory->grow(atom->bond_atom,nmax,atom->bond_per_atom, - "atom:bond_atom"); - - num_angle = memory->grow(atom->num_angle,nmax,"atom:num_angle"); - angle_type = memory->grow(atom->angle_type,nmax,atom->angle_per_atom, - "atom:angle_type"); - angle_atom1 = memory->grow(atom->angle_atom1,nmax,atom->angle_per_atom, - "atom:angle_atom1"); - angle_atom2 = memory->grow(atom->angle_atom2,nmax,atom->angle_per_atom, - "atom:angle_atom2"); - angle_atom3 = memory->grow(atom->angle_atom3,nmax,atom->angle_per_atom, - "atom:angle_atom3"); - - num_dihedral = memory->grow(atom->num_dihedral,nmax,"atom:num_dihedral"); - dihedral_type = memory->grow(atom->dihedral_type,nmax, - atom->dihedral_per_atom,"atom:dihedral_type"); - dihedral_atom1 = - memory->grow(atom->dihedral_atom1,nmax,atom->dihedral_per_atom, - "atom:dihedral_atom1"); - dihedral_atom2 = - memory->grow(atom->dihedral_atom2,nmax,atom->dihedral_per_atom, - "atom:dihedral_atom2"); - dihedral_atom3 = - memory->grow(atom->dihedral_atom3,nmax,atom->dihedral_per_atom, - "atom:dihedral_atom3"); - dihedral_atom4 = - memory->grow(atom->dihedral_atom4,nmax,atom->dihedral_per_atom, - "atom:dihedral_atom4"); - - num_improper = memory->grow(atom->num_improper,nmax,"atom:num_improper"); - improper_type = - memory->grow(atom->improper_type,nmax,atom->improper_per_atom, - "atom:improper_type"); - improper_atom1 = - memory->grow(atom->improper_atom1,nmax,atom->improper_per_atom, - "atom:improper_atom1"); - improper_atom2 = - memory->grow(atom->improper_atom2,nmax,atom->improper_per_atom, - "atom:improper_atom2"); - improper_atom3 = - memory->grow(atom->improper_atom3,nmax,atom->improper_per_atom, - "atom:improper_atom3"); - improper_atom4 = - memory->grow(atom->improper_atom4,nmax,atom->improper_per_atom, - "atom:improper_atom4"); - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - modify->fix[atom->extra_grow[iextra]]->grow_arrays(nmax); -} - -/* ---------------------------------------------------------------------- - reset local array ptrs -------------------------------------------------------------------------- */ - -void AtomVecMolecular::grow_reset() -{ - tag = atom->tag; type = atom->type; - mask = atom->mask; image = atom->image; - x = atom->x; v = atom->v; f = atom->f; - molecule = atom->molecule; - nspecial = atom->nspecial; special = atom->special; - num_bond = atom->num_bond; bond_type = atom->bond_type; - bond_atom = atom->bond_atom; - num_angle = atom->num_angle; angle_type = atom->angle_type; - angle_atom1 = atom->angle_atom1; angle_atom2 = atom->angle_atom2; - angle_atom3 = atom->angle_atom3; - num_dihedral = atom->num_dihedral; dihedral_type = atom->dihedral_type; - dihedral_atom1 = atom->dihedral_atom1; dihedral_atom2 = atom->dihedral_atom2; - dihedral_atom3 = atom->dihedral_atom3; dihedral_atom4 = atom->dihedral_atom4; - num_improper = atom->num_improper; improper_type = atom->improper_type; - improper_atom1 = atom->improper_atom1; improper_atom2 = atom->improper_atom2; - improper_atom3 = atom->improper_atom3; improper_atom4 = atom->improper_atom4; -} - -/* ---------------------------------------------------------------------- - copy atom I info to atom J -------------------------------------------------------------------------- */ - -void AtomVecMolecular::copy(int i, int j, int delflag) -{ - int k; - - tag[j] = tag[i]; - type[j] = type[i]; - mask[j] = mask[i]; - image[j] = image[i]; - x[j][0] = x[i][0]; - x[j][1] = x[i][1]; - x[j][2] = x[i][2]; - v[j][0] = v[i][0]; - v[j][1] = v[i][1]; - v[j][2] = v[i][2]; - - molecule[j] = molecule[i]; - - num_bond[j] = num_bond[i]; - for (k = 0; k < num_bond[j]; k++) { - bond_type[j][k] = bond_type[i][k]; - bond_atom[j][k] = bond_atom[i][k]; - } - - num_angle[j] = num_angle[i]; - for (k = 0; k < num_angle[j]; k++) { - angle_type[j][k] = angle_type[i][k]; - angle_atom1[j][k] = angle_atom1[i][k]; - angle_atom2[j][k] = angle_atom2[i][k]; - angle_atom3[j][k] = angle_atom3[i][k]; - } - - num_dihedral[j] = num_dihedral[i]; - for (k = 0; k < num_dihedral[j]; k++) { - dihedral_type[j][k] = dihedral_type[i][k]; - dihedral_atom1[j][k] = dihedral_atom1[i][k]; - dihedral_atom2[j][k] = dihedral_atom2[i][k]; - dihedral_atom3[j][k] = dihedral_atom3[i][k]; - dihedral_atom4[j][k] = dihedral_atom4[i][k]; - } - - num_improper[j] = num_improper[i]; - for (k = 0; k < num_improper[j]; k++) { - improper_type[j][k] = improper_type[i][k]; - improper_atom1[j][k] = improper_atom1[i][k]; - improper_atom2[j][k] = improper_atom2[i][k]; - improper_atom3[j][k] = improper_atom3[i][k]; - improper_atom4[j][k] = improper_atom4[i][k]; - } - - nspecial[j][0] = nspecial[i][0]; - nspecial[j][1] = nspecial[i][1]; - nspecial[j][2] = nspecial[i][2]; - for (k = 0; k < nspecial[j][2]; k++) special[j][k] = special[i][k]; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - modify->fix[atom->extra_grow[iextra]]->copy_arrays(i,j,delflag); -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecMolecular::pack_comm(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]*domain->xprd + pbc[5]*domain->xy + pbc[4]*domain->xz; - dy = pbc[1]*domain->yprd + pbc[3]*domain->yz; - dz = pbc[2]*domain->zprd; - } - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - } - } - return m; -} - -/* ---------------------------------------------------------------------- */ -int AtomVecMolecular::pack_comm_vel(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz,dvx,dvy,dvz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]*domain->xprd + pbc[5]*domain->xy + pbc[4]*domain->xz; - dy = pbc[1]*domain->yprd + pbc[3]*domain->yz; - dz = pbc[2]*domain->zprd; - } - if (!deform_vremap) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } else { - dvx = pbc[0]*h_rate[0] + pbc[5]*h_rate[5] + pbc[4]*h_rate[4]; - dvy = pbc[1]*h_rate[1] + pbc[3]*h_rate[3]; - dvz = pbc[2]*h_rate[2]; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - if (mask[i] & deform_groupbit) { - buf[m++] = v[j][0] + dvx; - buf[m++] = v[j][1] + dvy; - buf[m++] = v[j][2] + dvz; - } else { - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } - } - } - return m; + // strings with peratom variables to include in each AtomVec method + // strings cannot contain fields in corresponding AtomVec default strings + // order of fields in the string does not matter + // except fields_data_atom and fields_data_vel which must match data file + + fields_grow = (char *) + "molecule num_bond bond_type bond_atom " + "num_angle angle_type angle_atom1 angle_atom2 angle_atom3 " + "num_dihedral dihedral_type dihedral_atom1 dihedral_atom2 " + "dihedral_atom3 dihedral_atom4 " + "num_improper improper_type improper_atom1 improper_atom2 " + "improper_atom3 improper_atom4 " + "nspecial special"; + fields_copy = (char *) + "molecule num_bond bond_type bond_atom " + "num_angle angle_type angle_atom1 angle_atom2 angle_atom3 " + "num_dihedral dihedral_type dihedral_atom1 dihedral_atom2 " + "dihedral_atom3 dihedral_atom4 " + "num_improper improper_type improper_atom1 improper_atom2 " + "improper_atom3 improper_atom4 " + "nspecial special"; + fields_comm = NULL; + fields_comm_vel = NULL; + fields_reverse = NULL; + fields_border = (char *) "molecule"; + fields_border_vel = (char *) "molecule"; + fields_exchange = (char *) + "molecule num_bond bond_type bond_atom " + "num_angle angle_type angle_atom1 angle_atom2 angle_atom3 " + "num_dihedral dihedral_type dihedral_atom1 dihedral_atom2 " + "dihedral_atom3 dihedral_atom4 " + "num_improper improper_type improper_atom1 improper_atom2 " + "improper_atom3 improper_atom4 " + "nspecial special"; + fields_restart = (char *) + "molecule num_bond bond_type bond_atom " + "num_angle angle_type angle_atom1 angle_atom2 angle_atom3 " + "num_dihedral dihedral_type dihedral_atom1 dihedral_atom2 " + "dihedral_atom3 dihedral_atom4 " + "num_improper improper_type improper_atom1 improper_atom2 " + "improper_atom3 improper_atom4"; + fields_create = (char *) + "molecule num_bond num_angle num_dihedral num_improper nspecial"; + fields_data_atom = (char *) "id molecule type x"; + fields_data_vel = NULL; + + setup_fields(); + + bond_per_atom = angle_per_atom = dihedral_per_atom = improper_per_atom = 0; + bond_negative = angle_negative = dihedral_negative = improper_negative = NULL; } /* ---------------------------------------------------------------------- */ -void AtomVecMolecular::unpack_comm(int n, int first, double *buf) +AtomVecMolecular::~AtomVecMolecular() { - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecMolecular::unpack_comm_vel(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - v[i][0] = buf[m++]; - v[i][1] = buf[m++]; - v[i][2] = buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecMolecular::pack_reverse(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - buf[m++] = f[i][0]; - buf[m++] = f[i][1]; - buf[m++] = f[i][2]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecMolecular::unpack_reverse(int n, int *list, double *buf) -{ - int i,j,m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - f[j][0] += buf[m++]; - f[j][1] += buf[m++]; - f[j][2] += buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecMolecular::pack_border(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = ubuf(molecule[j]).d; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]; - dy = pbc[1]; - dz = pbc[2]; - } - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = ubuf(molecule[j]).d; - } - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); - - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecMolecular::pack_border_vel(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz,dvx,dvy,dvz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = ubuf(molecule[j]).d; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]; - dy = pbc[1]; - dz = pbc[2]; - } - if (!deform_vremap) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = ubuf(molecule[j]).d; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } else { - dvx = pbc[0]*h_rate[0] + pbc[5]*h_rate[5] + pbc[4]*h_rate[4]; - dvy = pbc[1]*h_rate[1] + pbc[3]*h_rate[3]; - dvz = pbc[2]*h_rate[2]; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = ubuf(molecule[j]).d; - if (mask[i] & deform_groupbit) { - buf[m++] = v[j][0] + dvx; - buf[m++] = v[j][1] + dvy; - buf[m++] = v[j][2] + dvz; - } else { - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } - } - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); - - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecMolecular::pack_border_hybrid(int n, int *list, double *buf) -{ - int i,j,m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = ubuf(molecule[j]).d; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecMolecular::unpack_border(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - if (i == nmax) grow(0); - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - tag[i] = (tagint) ubuf(buf[m++]).i; - type[i] = (int) ubuf(buf[m++]).i; - mask[i] = (int) ubuf(buf[m++]).i; - molecule[i] = (tagint) ubuf(buf[m++]).i; - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]-> - unpack_border(n,first,&buf[m]); -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecMolecular::unpack_border_vel(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - if (i == nmax) grow(0); - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - tag[i] = (tagint) ubuf(buf[m++]).i; - type[i] = (int) ubuf(buf[m++]).i; - mask[i] = (int) ubuf(buf[m++]).i; - molecule[i] = (tagint) ubuf(buf[m++]).i; - v[i][0] = buf[m++]; - v[i][1] = buf[m++]; - v[i][2] = buf[m++]; - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]-> - unpack_border(n,first,&buf[m]); -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecMolecular::unpack_border_hybrid(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) - molecule[i] = (tagint) ubuf(buf[m++]).i; - return m; + delete [] bond_negative; + delete [] angle_negative; + delete [] dihedral_negative; + delete [] improper_negative; } /* ---------------------------------------------------------------------- - pack data for atom I for sending to another proc - xyz must be 1st 3 values, so comm::exchange() can test on them + pack atom I's data for restart file + modify/unmodify values for default AtomVec::pack_restart() to pack ------------------------------------------------------------------------- */ -int AtomVecMolecular::pack_exchange(int i, double *buf) +int AtomVecMolecular::pack_restart(int i, double *buf) { - int k; + // insure negative vectors are needed length - int m = 1; - buf[m++] = x[i][0]; - buf[m++] = x[i][1]; - buf[m++] = x[i][2]; - buf[m++] = v[i][0]; - buf[m++] = v[i][1]; - buf[m++] = v[i][2]; - buf[m++] = ubuf(tag[i]).d; - buf[m++] = ubuf(type[i]).d; - buf[m++] = ubuf(mask[i]).d; - buf[m++] = ubuf(image[i]).d; - - buf[m++] = ubuf(molecule[i]).d; - - buf[m++] = ubuf(num_bond[i]).d; - for (k = 0; k < num_bond[i]; k++) { - buf[m++] = ubuf(bond_type[i][k]).d; - buf[m++] = ubuf(bond_atom[i][k]).d; + if (bond_per_atom < atom->bond_per_atom) { + delete [] bond_negative; + bond_per_atom = atom->bond_per_atom; + bond_negative = new int[bond_per_atom]; } - - buf[m++] = ubuf(num_angle[i]).d; - for (k = 0; k < num_angle[i]; k++) { - buf[m++] = ubuf(angle_type[i][k]).d; - buf[m++] = ubuf(angle_atom1[i][k]).d; - buf[m++] = ubuf(angle_atom2[i][k]).d; - buf[m++] = ubuf(angle_atom3[i][k]).d; + if (angle_per_atom < atom->angle_per_atom) { + delete [] angle_negative; + angle_per_atom = atom->angle_per_atom; + angle_negative = new int[angle_per_atom]; } - - buf[m++] = ubuf(num_dihedral[i]).d; - for (k = 0; k < num_dihedral[i]; k++) { - buf[m++] = ubuf(dihedral_type[i][k]).d; - buf[m++] = ubuf(dihedral_atom1[i][k]).d; - buf[m++] = ubuf(dihedral_atom2[i][k]).d; - buf[m++] = ubuf(dihedral_atom3[i][k]).d; - buf[m++] = ubuf(dihedral_atom4[i][k]).d; + if (dihedral_per_atom < atom->dihedral_per_atom) { + delete [] dihedral_negative; + dihedral_per_atom = atom->dihedral_per_atom; + dihedral_negative = new int[dihedral_per_atom]; } - - buf[m++] = ubuf(num_improper[i]).d; - for (k = 0; k < num_improper[i]; k++) { - buf[m++] = ubuf(improper_type[i][k]).d; - buf[m++] = ubuf(improper_atom1[i][k]).d; - buf[m++] = ubuf(improper_atom2[i][k]).d; - buf[m++] = ubuf(improper_atom3[i][k]).d; - buf[m++] = ubuf(improper_atom4[i][k]).d; + if (improper_per_atom < atom->improper_per_atom) { + delete [] improper_negative; + improper_per_atom = atom->improper_per_atom; + improper_negative = new int[improper_per_atom]; } - buf[m++] = ubuf(nspecial[i][0]).d; - buf[m++] = ubuf(nspecial[i][1]).d; - buf[m++] = ubuf(nspecial[i][2]).d; - for (k = 0; k < nspecial[i][2]; k++) buf[m++] = ubuf(special[i][k]).d; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - m += modify->fix[atom->extra_grow[iextra]]->pack_exchange(i,&buf[m]); - - buf[0] = m; - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecMolecular::unpack_exchange(double *buf) -{ - int k; - - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); + // flip any negative types to positive and flag which ones - int m = 1; - x[nlocal][0] = buf[m++]; - x[nlocal][1] = buf[m++]; - x[nlocal][2] = buf[m++]; - v[nlocal][0] = buf[m++]; - v[nlocal][1] = buf[m++]; - v[nlocal][2] = buf[m++]; - tag[nlocal] = (tagint) ubuf(buf[m++]).i; - type[nlocal] = (int) ubuf(buf[m++]).i; - mask[nlocal] = (int) ubuf(buf[m++]).i; - image[nlocal] = (imageint) ubuf(buf[m++]).i; + int *num_bond = atom->num_bond; + int **bond_type = atom->bond_type; + int *num_angle = atom->num_angle; + int **angle_type = atom->angle_type; + int *num_dihedral = atom->num_dihedral; + int **dihedral_type = atom->dihedral_type; + int *num_improper = atom->num_improper; + int **improper_type = atom->improper_type; - molecule[nlocal] = (tagint) ubuf(buf[m++]).i; - - num_bond[nlocal] = (int) ubuf(buf[m++]).i; - for (k = 0; k < num_bond[nlocal]; k++) { - bond_type[nlocal][k] = (int) ubuf(buf[m++]).i; - bond_atom[nlocal][k] = (tagint) ubuf(buf[m++]).i; + int any_bond_negative = 0; + for (int m = 0; m < num_bond[i]; m++) { + if (bond_type[i][m] < 0) { + bond_negative[m] = 1; + bond_type[i][m] = -bond_type[i][m]; + any_bond_negative = 1; + } else bond_negative[m] = 0; } - num_angle[nlocal] = (int) ubuf(buf[m++]).i; - for (k = 0; k < num_angle[nlocal]; k++) { - angle_type[nlocal][k] = (int) ubuf(buf[m++]).i; - angle_atom1[nlocal][k] = (tagint) ubuf(buf[m++]).i; - angle_atom2[nlocal][k] = (tagint) ubuf(buf[m++]).i; - angle_atom3[nlocal][k] = (tagint) ubuf(buf[m++]).i; + int any_angle_negative = 0; + for (int m = 0; m < num_angle[i]; m++) { + if (angle_type[i][m] < 0) { + angle_negative[m] = 1; + angle_type[i][m] = -angle_type[i][m]; + any_angle_negative = 1; + } else angle_negative[m] = 0; } - num_dihedral[nlocal] = (int) ubuf(buf[m++]).i; - for (k = 0; k < num_dihedral[nlocal]; k++) { - dihedral_type[nlocal][k] = (int) ubuf(buf[m++]).i; - dihedral_atom1[nlocal][k] = (tagint) ubuf(buf[m++]).i; - dihedral_atom2[nlocal][k] = (tagint) ubuf(buf[m++]).i; - dihedral_atom3[nlocal][k] = (tagint) ubuf(buf[m++]).i; - dihedral_atom4[nlocal][k] = (tagint) ubuf(buf[m++]).i; + int any_dihedral_negative = 0; + for (int m = 0; m < num_dihedral[i]; m++) { + if (dihedral_type[i][m] < 0) { + dihedral_negative[m] = 1; + dihedral_type[i][m] = -dihedral_type[i][m]; + any_dihedral_negative = 1; + } else dihedral_negative[m] = 0; } - num_improper[nlocal] = (int) ubuf(buf[m++]).i; - for (k = 0; k < num_improper[nlocal]; k++) { - improper_type[nlocal][k] = (int) ubuf(buf[m++]).i; - improper_atom1[nlocal][k] = (tagint) ubuf(buf[m++]).i; - improper_atom2[nlocal][k] = (tagint) ubuf(buf[m++]).i; - improper_atom3[nlocal][k] = (tagint) ubuf(buf[m++]).i; - improper_atom4[nlocal][k] = (tagint) ubuf(buf[m++]).i; + int any_improper_negative = 0; + for (int m = 0; m < num_improper[i]; m++) { + if (improper_type[i][m] < 0) { + improper_negative[m] = 1; + improper_type[i][m] = -improper_type[i][m]; + any_improper_negative = 1; + } else improper_negative[m] = 0; } - nspecial[nlocal][0] = (int) ubuf(buf[m++]).i; - nspecial[nlocal][1] = (int) ubuf(buf[m++]).i; - nspecial[nlocal][2] = (int) ubuf(buf[m++]).i; - for (k = 0; k < nspecial[nlocal][2]; k++) - special[nlocal][k] = (int) ubuf(buf[m++]).i; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - m += modify->fix[atom->extra_grow[iextra]]-> - unpack_exchange(nlocal,&buf[m]); + // perform the pack with adjusted values - atom->nlocal++; - return m; -} + int n = AtomVec::pack_restart(i,buf); -/* ---------------------------------------------------------------------- - size of restart data for all atoms owned by this proc - include extra data stored by fixes -------------------------------------------------------------------------- */ + // restore the flagged types to their negative values -int AtomVecMolecular::size_restart() -{ - int i; - - int nlocal = atom->nlocal; - int n = 0; - for (i = 0; i < nlocal; i++) - n += 16 + 2*num_bond[i] + 4*num_angle[i] + - 5*num_dihedral[i] + 5*num_improper[i]; - - if (atom->nextra_restart) - for (int iextra = 0; iextra < atom->nextra_restart; iextra++) - for (i = 0; i < nlocal; i++) - n += modify->fix[atom->extra_restart[iextra]]->size_restart(i); - - return n; -} - -/* ---------------------------------------------------------------------- - pack atom I's data for restart file including extra quantities - xyz must be 1st 3 values, so that read_restart can test on them - molecular types may be negative, but write as positive -------------------------------------------------------------------------- */ - -int AtomVecMolecular::pack_restart(int i, double *buf) -{ - int k; - - int m = 1; - buf[m++] = x[i][0]; - buf[m++] = x[i][1]; - buf[m++] = x[i][2]; - buf[m++] = ubuf(tag[i]).d; - buf[m++] = ubuf(type[i]).d; - buf[m++] = ubuf(mask[i]).d; - buf[m++] = ubuf(image[i]).d; - buf[m++] = v[i][0]; - buf[m++] = v[i][1]; - buf[m++] = v[i][2]; - - buf[m++] = ubuf(molecule[i]).d; - - buf[m++] = ubuf(num_bond[i]).d; - for (k = 0; k < num_bond[i]; k++) { - buf[m++] = ubuf(MAX(bond_type[i][k],-bond_type[i][k])).d; - buf[m++] = ubuf(bond_atom[i][k]).d; + if (any_bond_negative) { + for (int m = 0; m < num_bond[i]; m++) + if (bond_negative[m]) bond_type[i][m] = -bond_type[i][m]; } - - buf[m++] = ubuf(num_angle[i]).d; - for (k = 0; k < num_angle[i]; k++) { - buf[m++] = ubuf(MAX(angle_type[i][k],-angle_type[i][k])).d; - buf[m++] = ubuf(angle_atom1[i][k]).d; - buf[m++] = ubuf(angle_atom2[i][k]).d; - buf[m++] = ubuf(angle_atom3[i][k]).d; + if (any_angle_negative) { + for (int m = 0; m < num_angle[i]; m++) + if (angle_negative[m]) angle_type[i][m] = -angle_type[i][m]; } - - buf[m++] = ubuf(num_dihedral[i]).d; - for (k = 0; k < num_dihedral[i]; k++) { - buf[m++] = ubuf(MAX(dihedral_type[i][k],-dihedral_type[i][k])).d; - buf[m++] = ubuf(dihedral_atom1[i][k]).d; - buf[m++] = ubuf(dihedral_atom2[i][k]).d; - buf[m++] = ubuf(dihedral_atom3[i][k]).d; - buf[m++] = ubuf(dihedral_atom4[i][k]).d; + if (any_dihedral_negative) { + for (int m = 0; m < num_dihedral[i]; m++) + if (dihedral_negative[m]) dihedral_type[i][m] = -dihedral_type[i][m]; } - - buf[m++] = ubuf(num_improper[i]).d; - for (k = 0; k < num_improper[i]; k++) { - buf[m++] = ubuf(MAX(improper_type[i][k],-improper_type[i][k])).d; - buf[m++] = ubuf(improper_atom1[i][k]).d; - buf[m++] = ubuf(improper_atom2[i][k]).d; - buf[m++] = ubuf(improper_atom3[i][k]).d; - buf[m++] = ubuf(improper_atom4[i][k]).d; + if (any_improper_negative) { + for (int m = 0; m < num_improper[i]; m++) + if (improper_negative[m]) improper_type[i][m] = -improper_type[i][m]; } - if (atom->nextra_restart) - for (int iextra = 0; iextra < atom->nextra_restart; iextra++) - m += modify->fix[atom->extra_restart[iextra]]->pack_restart(i,&buf[m]); - - buf[0] = m; - return m; + return n; } /* ---------------------------------------------------------------------- unpack data for one atom from restart file including extra quantities + initialize other atom quantities ------------------------------------------------------------------------- */ int AtomVecMolecular::unpack_restart(double *buf) { - int k; - - int nlocal = atom->nlocal; - if (nlocal == nmax) { - grow(0); - if (atom->nextra_store) - memory->grow(atom->extra,nmax,atom->nextra_store,"atom:extra"); - } - - int m = 1; - x[nlocal][0] = buf[m++]; - x[nlocal][1] = buf[m++]; - x[nlocal][2] = buf[m++]; - tag[nlocal] = (tagint) ubuf(buf[m++]).i; - type[nlocal] = (int) ubuf(buf[m++]).i; - mask[nlocal] = (int) ubuf(buf[m++]).i; - image[nlocal] = (imageint) ubuf(buf[m++]).i; - v[nlocal][0] = buf[m++]; - v[nlocal][1] = buf[m++]; - v[nlocal][2] = buf[m++]; - - molecule[nlocal] = (tagint) ubuf(buf[m++]).i; - - num_bond[nlocal] = (int) ubuf(buf[m++]).i; - for (k = 0; k < num_bond[nlocal]; k++) { - bond_type[nlocal][k] = (int) ubuf(buf[m++]).i; - bond_atom[nlocal][k] = (tagint) ubuf(buf[m++]).i; - } - - num_angle[nlocal] = (int) ubuf(buf[m++]).i; - for (k = 0; k < num_angle[nlocal]; k++) { - angle_type[nlocal][k] = (int) ubuf(buf[m++]).i; - angle_atom1[nlocal][k] = (tagint) ubuf(buf[m++]).i; - angle_atom2[nlocal][k] = (tagint) ubuf(buf[m++]).i; - angle_atom3[nlocal][k] = (tagint) ubuf(buf[m++]).i; - } - - num_dihedral[nlocal] = (int) ubuf(buf[m++]).i; - for (k = 0; k < num_dihedral[nlocal]; k++) { - dihedral_type[nlocal][k] = (int) ubuf(buf[m++]).i; - dihedral_atom1[nlocal][k] = (tagint) ubuf(buf[m++]).i; - dihedral_atom2[nlocal][k] = (tagint) ubuf(buf[m++]).i; - dihedral_atom3[nlocal][k] = (tagint) ubuf(buf[m++]).i; - dihedral_atom4[nlocal][k] = (tagint) ubuf(buf[m++]).i; - } - - num_improper[nlocal] = (int) ubuf(buf[m++]).i; - for (k = 0; k < num_improper[nlocal]; k++) { - improper_type[nlocal][k] = (int) ubuf(buf[m++]).i; - improper_atom1[nlocal][k] = (tagint) ubuf(buf[m++]).i; - improper_atom2[nlocal][k] = (tagint) ubuf(buf[m++]).i; - improper_atom3[nlocal][k] = (tagint) ubuf(buf[m++]).i; - improper_atom4[nlocal][k] = (tagint) ubuf(buf[m++]).i; - } - - nspecial[nlocal][0] = nspecial[nlocal][1] = nspecial[nlocal][2] = 0; - - double **extra = atom->extra; - if (atom->nextra_store) { - int size = static_cast (buf[0]) - m; - for (int i = 0; i < size; i++) extra[nlocal][i] = buf[m++]; - } - - atom->nlocal++; - return m; -} - -/* ---------------------------------------------------------------------- - create one atom of itype at coord - set other values to defaults -------------------------------------------------------------------------- */ - -void AtomVecMolecular::create_atom(int itype, double *coord) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - tag[nlocal] = 0; - type[nlocal] = itype; - x[nlocal][0] = coord[0]; - x[nlocal][1] = coord[1]; - x[nlocal][2] = coord[2]; - mask[nlocal] = 1; - image[nlocal] = ((imageint) IMGMAX << IMG2BITS) | - ((imageint) IMGMAX << IMGBITS) | IMGMAX; - v[nlocal][0] = 0.0; - v[nlocal][1] = 0.0; - v[nlocal][2] = 0.0; - - molecule[nlocal] = 0; - num_bond[nlocal] = 0; - num_angle[nlocal] = 0; - num_dihedral[nlocal] = 0; - num_improper[nlocal] = 0; - nspecial[nlocal][0] = nspecial[nlocal][1] = nspecial[nlocal][2] = 0; + AtomVec::unpack_restart(buf); + int ilocal = atom->nlocal-1; - atom->nlocal++; + atom->nspecial[ilocal][0] = 0; + atom->nspecial[ilocal][1] = 0; + atom->nspecial[ilocal][2] = 0; } /* ---------------------------------------------------------------------- unpack one line from Atoms section of data file - initialize other atom quantities -------------------------------------------------------------------------- */ - -void AtomVecMolecular::data_atom(double *coord, imageint imagetmp, - char **values) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - tag[nlocal] = utils::tnumeric(FLERR,values[0],true,lmp); - molecule[nlocal] = utils::tnumeric(FLERR,values[1],true,lmp); - type[nlocal] = utils::inumeric(FLERR,values[2],true,lmp); - if (type[nlocal] <= 0 || type[nlocal] > atom->ntypes) - error->one(FLERR,"Invalid atom type in Atoms section of data file"); - - x[nlocal][0] = coord[0]; - x[nlocal][1] = coord[1]; - x[nlocal][2] = coord[2]; - - image[nlocal] = imagetmp; - - mask[nlocal] = 1; - v[nlocal][0] = 0.0; - v[nlocal][1] = 0.0; - v[nlocal][2] = 0.0; - num_bond[nlocal] = 0; - num_angle[nlocal] = 0; - num_dihedral[nlocal] = 0; - num_improper[nlocal] = 0; - - atom->nlocal++; -} - -/* ---------------------------------------------------------------------- - unpack hybrid quantities from one line in Atoms section of data file - initialize other atom quantities for this sub-style + modify what default AtomVec::data_atom() just unpacked + or initialize other atom quantities ------------------------------------------------------------------------- */ -int AtomVecMolecular::data_atom_hybrid(int nlocal, char **values) +void AtomVecMolecular::data_atom(double *coord, imageint imagetmp, char **values) { - molecule[nlocal] = utils::tnumeric(FLERR,values[0],true,lmp); - - num_bond[nlocal] = 0; - num_angle[nlocal] = 0; - num_dihedral[nlocal] = 0; - num_improper[nlocal] = 0; - - return 1; -} - -/* ---------------------------------------------------------------------- - pack atom info for data file including 3 image flags -------------------------------------------------------------------------- */ - -void AtomVecMolecular::pack_data(double **buf) -{ - int nlocal = atom->nlocal; - for (int i = 0; i < nlocal; i++) { - buf[i][0] = ubuf(tag[i]).d; - buf[i][1] = ubuf(molecule[i]).d; - buf[i][2] = ubuf(type[i]).d; - buf[i][3] = x[i][0]; - buf[i][4] = x[i][1]; - buf[i][5] = x[i][2]; - buf[i][6] = ubuf((image[i] & IMGMASK) - IMGMAX).d; - buf[i][7] = ubuf((image[i] >> IMGBITS & IMGMASK) - IMGMAX).d; - buf[i][8] = ubuf((image[i] >> IMG2BITS) - IMGMAX).d; - } -} - -/* ---------------------------------------------------------------------- - pack hybrid atom info for data file -------------------------------------------------------------------------- */ - -int AtomVecMolecular::pack_data_hybrid(int i, double *buf) -{ - buf[0] = ubuf(molecule[i]).d; - return 1; -} - -/* ---------------------------------------------------------------------- - write atom info to data file including 3 image flags -------------------------------------------------------------------------- */ - -void AtomVecMolecular::write_data(FILE *fp, int n, double **buf) -{ - for (int i = 0; i < n; i++) - fprintf(fp,TAGINT_FORMAT " " TAGINT_FORMAT - " %d %-1.16e %-1.16e %-1.16e %d %d %d\n", - (tagint) ubuf(buf[i][0]).i,(tagint) ubuf(buf[i][1]).i, - (int) ubuf(buf[i][2]).i, - buf[i][3],buf[i][4],buf[i][5], - (int) ubuf(buf[i][6]).i,(int) ubuf(buf[i][7]).i, - (int) ubuf(buf[i][8]).i); -} - -/* ---------------------------------------------------------------------- - write hybrid atom info to data file -------------------------------------------------------------------------- */ - -int AtomVecMolecular::write_data_hybrid(FILE *fp, double *buf) -{ - fprintf(fp," " TAGINT_FORMAT,(tagint) ubuf(buf[0]).i); - return 1; -} - -/* ---------------------------------------------------------------------- - return # of bytes of allocated memory -------------------------------------------------------------------------- */ - -bigint AtomVecMolecular::memory_usage() -{ - bigint bytes = 0; - - if (atom->memcheck("tag")) bytes += memory->usage(tag,nmax); - if (atom->memcheck("type")) bytes += memory->usage(type,nmax); - if (atom->memcheck("mask")) bytes += memory->usage(mask,nmax); - if (atom->memcheck("image")) bytes += memory->usage(image,nmax); - if (atom->memcheck("x")) bytes += memory->usage(x,nmax,3); - if (atom->memcheck("v")) bytes += memory->usage(v,nmax,3); - if (atom->memcheck("f")) bytes += memory->usage(f,nmax*comm->nthreads,3); - - if (atom->memcheck("molecule")) bytes += memory->usage(molecule,nmax); - if (atom->memcheck("nspecial")) bytes += memory->usage(nspecial,nmax,3); - if (atom->memcheck("special")) - bytes += memory->usage(special,nmax,atom->maxspecial); - - if (atom->memcheck("num_bond")) bytes += memory->usage(num_bond,nmax); - if (atom->memcheck("bond_type")) - bytes += memory->usage(bond_type,nmax,atom->bond_per_atom); - if (atom->memcheck("bond_atom")) - bytes += memory->usage(bond_atom,nmax,atom->bond_per_atom); - - if (atom->memcheck("num_angle")) bytes += memory->usage(num_angle,nmax); - if (atom->memcheck("angle_type")) - bytes += memory->usage(angle_type,nmax,atom->angle_per_atom); - if (atom->memcheck("angle_atom1")) - bytes += memory->usage(angle_atom1,nmax,atom->angle_per_atom); - if (atom->memcheck("angle_atom2")) - bytes += memory->usage(angle_atom2,nmax,atom->angle_per_atom); - if (atom->memcheck("angle_atom3")) - bytes += memory->usage(angle_atom3,nmax,atom->angle_per_atom); - - if (atom->memcheck("num_dihedral")) bytes += memory->usage(num_dihedral,nmax); - if (atom->memcheck("dihedral_type")) - bytes += memory->usage(dihedral_type,nmax,atom->dihedral_per_atom); - if (atom->memcheck("dihedral_atom1")) - bytes += memory->usage(dihedral_atom1,nmax,atom->dihedral_per_atom); - if (atom->memcheck("dihedral_atom2")) - bytes += memory->usage(dihedral_atom2,nmax,atom->dihedral_per_atom); - if (atom->memcheck("dihedral_atom3")) - bytes += memory->usage(dihedral_atom3,nmax,atom->dihedral_per_atom); - if (atom->memcheck("dihedral_atom4")) - bytes += memory->usage(dihedral_atom4,nmax,atom->dihedral_per_atom); - - if (atom->memcheck("num_improper")) bytes += memory->usage(num_improper,nmax); - if (atom->memcheck("improper_type")) - bytes += memory->usage(improper_type,nmax,atom->improper_per_atom); - if (atom->memcheck("improper_atom1")) - bytes += memory->usage(improper_atom1,nmax,atom->improper_per_atom); - if (atom->memcheck("improper_atom2")) - bytes += memory->usage(improper_atom2,nmax,atom->improper_per_atom); - if (atom->memcheck("improper_atom3")) - bytes += memory->usage(improper_atom3,nmax,atom->improper_per_atom); - if (atom->memcheck("improper_atom4")) - bytes += memory->usage(improper_atom4,nmax,atom->improper_per_atom); + AtomVec::data_atom(coord,imagetmp,values); + int ilocal = atom->nlocal-1; - return bytes; + atom->num_bond[ilocal] = 0; + atom->num_angle[ilocal] = 0; + atom->num_dihedral[ilocal] = 0; + atom->num_improper[ilocal] = 0; + atom->nspecial[ilocal][0] = 0; + atom->nspecial[ilocal][1] = 0; + atom->nspecial[ilocal][2] = 0; } diff --git a/src/MOLECULE/atom_vec_molecular.h b/src/MOLECULE/atom_vec_molecular.h index 19104c3987..cba6d1b480 100644 --- a/src/MOLECULE/atom_vec_molecular.h +++ b/src/MOLECULE/atom_vec_molecular.h @@ -27,55 +27,14 @@ namespace LAMMPS_NS { class AtomVecMolecular : public AtomVec { public: AtomVecMolecular(class LAMMPS *); - void grow(int); - void grow_reset(); - void copy(int, int, int); - int pack_comm(int, int *, double *, int, int *); - int pack_comm_vel(int, int *, double *, int, int *); - void unpack_comm(int, int, double *); - void unpack_comm_vel(int, int, double *); - int pack_reverse(int, int, double *); - void unpack_reverse(int, int *, double *); - int pack_border(int, int *, double *, int, int *); - int pack_border_vel(int, int *, double *, int, int *); - int pack_border_hybrid(int, int *, double *); - void unpack_border(int, int, double *); - void unpack_border_vel(int, int, double *); - int unpack_border_hybrid(int, int, double *); - int pack_exchange(int, double *); - int unpack_exchange(double *); - int size_restart(); + ~AtomVecMolecular(); int pack_restart(int, double *); int unpack_restart(double *); - void create_atom(int, double *); void data_atom(double *, imageint, char **); - int data_atom_hybrid(int, char **); - void pack_data(double **); - int pack_data_hybrid(int, double *); - void write_data(FILE *, int, double **); - int write_data_hybrid(FILE *, double *); - bigint memory_usage(); private: - tagint *tag; - int *type,*mask; - imageint *image; - double **x,**v,**f; - tagint *molecule; - int **nspecial; - tagint **special; - int *num_bond; - int **bond_type; - tagint **bond_atom; - int *num_angle; - int **angle_type; - tagint **angle_atom1,**angle_atom2,**angle_atom3; - int *num_dihedral; - int **dihedral_type; - tagint **dihedral_atom1,**dihedral_atom2,**dihedral_atom3,**dihedral_atom4; - int *num_improper; - int **improper_type; - tagint **improper_atom1,**improper_atom2,**improper_atom3,**improper_atom4; + int bond_per_atom,angle_per_atom,dihedral_per_atom,improper_per_atom; + int *bond_negative,*angle_negative,*dihedral_negative,*improper_negative; }; } @@ -85,13 +44,4 @@ class AtomVecMolecular : public AtomVec { /* ERROR/WARNING messages: -E: Per-processor system is too big - -The number of owned atoms plus ghost atoms on a single -processor must fit in 32-bit integer. - -E: Invalid atom type in Atoms section of data file - -Atom types must range from 1 to specified # of types. - */ diff --git a/src/MOLECULE/atom_vec_template.cpp b/src/MOLECULE/atom_vec_template.cpp index c9ccfc6d2b..31d9af4caf 100644 --- a/src/MOLECULE/atom_vec_template.cpp +++ b/src/MOLECULE/atom_vec_template.cpp @@ -31,16 +31,27 @@ AtomVecTemplate::AtomVecTemplate(LAMMPS *lmp) : AtomVec(lmp) molecular = 2; mass_type = 1; - comm_x_only = comm_f_only = 1; - size_forward = 3; - size_reverse = 3; - size_border = 9; - size_velocity = 3; - size_data_atom = 8; - size_data_vel = 4; - xcol_data = 6; - atom->molecule_flag = 1; + + // strings with peratom variables to include in each AtomVec method + // strings cannot contain fields in corresponding AtomVec default strings + // order of fields in the string does not matter + // except fields_data_atom and fields_data_vel which must match data file + + fields_grow = (char *) "molecule molindex molatom"; + fields_copy = (char *) "molecule molindex molatom"; + fields_comm = NULL; + fields_comm_vel = NULL; + fields_reverse = NULL; + fields_border = (char *) "molecule molindex molatom"; + fields_border_vel = (char *) "molecule molindex molatom"; + fields_exchange = (char *) "molecule molindex molatom"; + fields_restart = (char *) "molecule molindex molatom"; + fields_create = (char *) "molecule molindex molatom"; + fields_data_atom = (char *) "id molecule molindex molatom type x"; + fields_data_vel = NULL; + + setup_fields(); } /* ---------------------------------------------------------------------- @@ -85,786 +96,35 @@ void AtomVecTemplate::process_args(int narg, char **arg) } } -/* ---------------------------------------------------------------------- - grow atom arrays - n = 0 grows arrays by a chunk - n > 0 allocates arrays to size n -------------------------------------------------------------------------- */ - -void AtomVecTemplate::grow(int n) -{ - if (n == 0) grow_nmax(); - else nmax = n; - atom->nmax = nmax; - if (nmax < 0 || nmax > MAXSMALLINT) - error->one(FLERR,"Per-processor system is too big"); - - tag = memory->grow(atom->tag,nmax,"atom:tag"); - type = memory->grow(atom->type,nmax,"atom:type"); - mask = memory->grow(atom->mask,nmax,"atom:mask"); - image = memory->grow(atom->image,nmax,"atom:image"); - x = memory->grow(atom->x,nmax,3,"atom:x"); - v = memory->grow(atom->v,nmax,3,"atom:v"); - f = memory->grow(atom->f,nmax*comm->nthreads,3,"atom:f"); - - molecule = memory->grow(atom->molecule,nmax,"atom:molecule"); - molindex = memory->grow(atom->molindex,nmax,"atom:molindex"); - molatom = memory->grow(atom->molatom,nmax,"atom:molatom"); - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - modify->fix[atom->extra_grow[iextra]]->grow_arrays(nmax); -} - -/* ---------------------------------------------------------------------- - reset local array ptrs -------------------------------------------------------------------------- */ - -void AtomVecTemplate::grow_reset() -{ - tag = atom->tag; type = atom->type; - mask = atom->mask; image = atom->image; - x = atom->x; v = atom->v; f = atom->f; - molecule = atom->molecule; - molindex = atom->molindex; molatom = atom->molatom; -} - -/* ---------------------------------------------------------------------- - copy atom I info to atom J -------------------------------------------------------------------------- */ - -void AtomVecTemplate::copy(int i, int j, int delflag) -{ - tag[j] = tag[i]; - type[j] = type[i]; - mask[j] = mask[i]; - image[j] = image[i]; - x[j][0] = x[i][0]; - x[j][1] = x[i][1]; - x[j][2] = x[i][2]; - v[j][0] = v[i][0]; - v[j][1] = v[i][1]; - v[j][2] = v[i][2]; - - molecule[j] = molecule[i]; - molindex[j] = molindex[i]; - molatom[j] = molatom[i]; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - modify->fix[atom->extra_grow[iextra]]->copy_arrays(i,j,delflag); -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecTemplate::pack_comm(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]*domain->xprd + pbc[5]*domain->xy + pbc[4]*domain->xz; - dy = pbc[1]*domain->yprd + pbc[3]*domain->yz; - dz = pbc[2]*domain->zprd; - } - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - } - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecTemplate::pack_comm_vel(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz,dvx,dvy,dvz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]*domain->xprd + pbc[5]*domain->xy + pbc[4]*domain->xz; - dy = pbc[1]*domain->yprd + pbc[3]*domain->yz; - dz = pbc[2]*domain->zprd; - } - if (!deform_vremap) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } else { - dvx = pbc[0]*h_rate[0] + pbc[5]*h_rate[5] + pbc[4]*h_rate[4]; - dvy = pbc[1]*h_rate[1] + pbc[3]*h_rate[3]; - dvz = pbc[2]*h_rate[2]; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - if (mask[i] & deform_groupbit) { - buf[m++] = v[j][0] + dvx; - buf[m++] = v[j][1] + dvy; - buf[m++] = v[j][2] + dvz; - } else { - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } - } - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecTemplate::unpack_comm(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecTemplate::unpack_comm_vel(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - v[i][0] = buf[m++]; - v[i][1] = buf[m++]; - v[i][2] = buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecTemplate::pack_reverse(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - buf[m++] = f[i][0]; - buf[m++] = f[i][1]; - buf[m++] = f[i][2]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecTemplate::unpack_reverse(int n, int *list, double *buf) -{ - int i,j,m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - f[j][0] += buf[m++]; - f[j][1] += buf[m++]; - f[j][2] += buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecTemplate::pack_border(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = ubuf(molecule[j]).d; - buf[m++] = ubuf(molindex[j]).d; - buf[m++] = ubuf(molatom[j]).d; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]; - dy = pbc[1]; - dz = pbc[2]; - } - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = ubuf(molecule[j]).d; - buf[m++] = ubuf(molindex[j]).d; - buf[m++] = ubuf(molatom[j]).d; - } - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); - - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecTemplate::pack_border_vel(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz,dvx,dvy,dvz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = ubuf(molecule[j]).d; - buf[m++] = ubuf(molindex[j]).d; - buf[m++] = ubuf(molatom[j]).d; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]; - dy = pbc[1]; - dz = pbc[2]; - } - if (!deform_vremap) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = ubuf(molecule[j]).d; - buf[m++] = ubuf(molindex[j]).d; - buf[m++] = ubuf(molatom[j]).d; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } else { - dvx = pbc[0]*h_rate[0] + pbc[5]*h_rate[5] + pbc[4]*h_rate[4]; - dvy = pbc[1]*h_rate[1] + pbc[3]*h_rate[3]; - dvz = pbc[2]*h_rate[2]; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = ubuf(molecule[j]).d; - buf[m++] = ubuf(molindex[j]).d; - buf[m++] = ubuf(molatom[j]).d; - if (mask[i] & deform_groupbit) { - buf[m++] = v[j][0] + dvx; - buf[m++] = v[j][1] + dvy; - buf[m++] = v[j][2] + dvz; - } else { - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } - } - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); - - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecTemplate::pack_border_hybrid(int n, int *list, double *buf) -{ - int i,j,m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = ubuf(molecule[j]).d; - buf[m++] = ubuf(molindex[j]).d; - buf[m++] = ubuf(molatom[j]).d; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecTemplate::unpack_border(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - if (i == nmax) grow(0); - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - tag[i] = (tagint) ubuf(buf[m++]).i; - type[i] = (int) ubuf(buf[m++]).i; - mask[i] = (int) ubuf(buf[m++]).i; - molecule[i] = (tagint) ubuf(buf[m++]).i; - molindex[i] = (int) ubuf(buf[m++]).i; - molatom[i] = (int) ubuf(buf[m++]).i; - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]-> - unpack_border(n,first,&buf[m]); -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecTemplate::unpack_border_vel(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - if (i == nmax) grow(0); - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - tag[i] = (tagint) ubuf(buf[m++]).i; - type[i] = (int) ubuf(buf[m++]).i; - mask[i] = (int) ubuf(buf[m++]).i; - molecule[i] = (tagint) ubuf(buf[m++]).i; - molindex[i] = (int) ubuf(buf[m++]).i; - molatom[i] = (int) ubuf(buf[m++]).i; - v[i][0] = buf[m++]; - v[i][1] = buf[m++]; - v[i][2] = buf[m++]; - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]-> - unpack_border(n,first,&buf[m]); -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecTemplate::unpack_border_hybrid(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - molecule[i] = (tagint) ubuf(buf[m++]).i; - molindex[i] = (int) ubuf(buf[m++]).i; - molatom[i] = (int) ubuf(buf[m++]).i; - } - return m; -} - -/* ---------------------------------------------------------------------- - pack data for atom I for sending to another proc - xyz must be 1st 3 values, so comm::exchange() can test on them -------------------------------------------------------------------------- */ - -int AtomVecTemplate::pack_exchange(int i, double *buf) -{ - int m = 1; - buf[m++] = x[i][0]; - buf[m++] = x[i][1]; - buf[m++] = x[i][2]; - buf[m++] = v[i][0]; - buf[m++] = v[i][1]; - buf[m++] = v[i][2]; - buf[m++] = ubuf(tag[i]).d; - buf[m++] = ubuf(type[i]).d; - buf[m++] = ubuf(mask[i]).d; - buf[m++] = ubuf(image[i]).d; - - buf[m++] = ubuf(molecule[i]).d; - buf[m++] = ubuf(molindex[i]).d; - buf[m++] = ubuf(molatom[i]).d; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - m += modify->fix[atom->extra_grow[iextra]]->pack_exchange(i,&buf[m]); - - buf[0] = m; - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecTemplate::unpack_exchange(double *buf) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - int m = 1; - x[nlocal][0] = buf[m++]; - x[nlocal][1] = buf[m++]; - x[nlocal][2] = buf[m++]; - v[nlocal][0] = buf[m++]; - v[nlocal][1] = buf[m++]; - v[nlocal][2] = buf[m++]; - tag[nlocal] = (tagint) ubuf(buf[m++]).i; - type[nlocal] = (int) ubuf(buf[m++]).i; - mask[nlocal] = (int) ubuf(buf[m++]).i; - image[nlocal] = (imageint) ubuf(buf[m++]).i; - - molecule[nlocal] = (tagint) ubuf(buf[m++]).i; - molindex[nlocal] = (int) ubuf(buf[m++]).i; - molatom[nlocal] = (int) ubuf(buf[m++]).i; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - m += modify->fix[atom->extra_grow[iextra]]-> - unpack_exchange(nlocal,&buf[m]); - - atom->nlocal++; - return m; -} - -/* ---------------------------------------------------------------------- - size of restart data for all atoms owned by this proc - include extra data stored by fixes -------------------------------------------------------------------------- */ - -int AtomVecTemplate::size_restart() -{ - int i; - - int nlocal = atom->nlocal; - int n = 14 * nlocal; - - if (atom->nextra_restart) - for (int iextra = 0; iextra < atom->nextra_restart; iextra++) - for (i = 0; i < nlocal; i++) - n += modify->fix[atom->extra_restart[iextra]]->size_restart(i); - - return n; -} - -/* ---------------------------------------------------------------------- - pack atom I's data for restart file including extra quantities - xyz must be 1st 3 values, so that read_restart can test on them - molecular types may be negative, but write as positive -------------------------------------------------------------------------- */ - -int AtomVecTemplate::pack_restart(int i, double *buf) -{ - int m = 1; - buf[m++] = x[i][0]; - buf[m++] = x[i][1]; - buf[m++] = x[i][2]; - buf[m++] = ubuf(tag[i]).d; - buf[m++] = ubuf(type[i]).d; - buf[m++] = ubuf(mask[i]).d; - buf[m++] = ubuf(image[i]).d; - buf[m++] = v[i][0]; - buf[m++] = v[i][1]; - buf[m++] = v[i][2]; - - buf[m++] = ubuf(molecule[i]).d; - buf[m++] = ubuf(molindex[i]).d; - buf[m++] = ubuf(molatom[i]).d; - - if (atom->nextra_restart) - for (int iextra = 0; iextra < atom->nextra_restart; iextra++) - m += modify->fix[atom->extra_restart[iextra]]->pack_restart(i,&buf[m]); - - buf[0] = m; - return m; -} - -/* ---------------------------------------------------------------------- - unpack data for one atom from restart file including extra quantities -------------------------------------------------------------------------- */ - -int AtomVecTemplate::unpack_restart(double *buf) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) { - grow(0); - if (atom->nextra_store) - memory->grow(atom->extra,nmax,atom->nextra_store,"atom:extra"); - } - - int m = 1; - x[nlocal][0] = buf[m++]; - x[nlocal][1] = buf[m++]; - x[nlocal][2] = buf[m++]; - tag[nlocal] = (tagint) ubuf(buf[m++]).i; - type[nlocal] = (int) ubuf(buf[m++]).i; - mask[nlocal] = (int) ubuf(buf[m++]).i; - image[nlocal] = (imageint) ubuf(buf[m++]).i; - v[nlocal][0] = buf[m++]; - v[nlocal][1] = buf[m++]; - v[nlocal][2] = buf[m++]; - - molecule[nlocal] = (tagint) ubuf(buf[m++]).i; - molindex[nlocal] = (int) ubuf(buf[m++]).i; - molatom[nlocal] = (int) ubuf(buf[m++]).i; - - double **extra = atom->extra; - if (atom->nextra_store) { - int size = static_cast (buf[0]) - m; - for (int i = 0; i < size; i++) extra[nlocal][i] = buf[m++]; - } - - atom->nlocal++; - return m; -} - /* ---------------------------------------------------------------------- create one atom of itype at coord - set other values to defaults + modify what default AtomVec::create_atom() just created ------------------------------------------------------------------------- */ void AtomVecTemplate::create_atom(int itype, double *coord) { - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - tag[nlocal] = 0; - type[nlocal] = itype; - x[nlocal][0] = coord[0]; - x[nlocal][1] = coord[1]; - x[nlocal][2] = coord[2]; - mask[nlocal] = 1; - image[nlocal] = ((imageint) IMGMAX << IMG2BITS) | - ((imageint) IMGMAX << IMGBITS) | IMGMAX; - v[nlocal][0] = 0.0; - v[nlocal][1] = 0.0; - v[nlocal][2] = 0.0; - - molecule[nlocal] = 0; - molindex[nlocal] = -1; - molatom[nlocal] = -1; + AtomVec::create_atom(itype,coord); - atom->nlocal++; + int ilocal = atom->nlocal-1; + atom->molindex[ilocal] = -1; + atom->molatom[ilocal] = -1; } /* ---------------------------------------------------------------------- unpack one line from Atoms section of data file - initialize other atom quantities + error check what default AtomVec::data_atom() just unpacked ------------------------------------------------------------------------- */ void AtomVecTemplate::data_atom(double *coord, imageint imagetmp, char **values) { - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); + AtomVec::data_atom(coord,imagetmp,values); - tag[nlocal] = utils::tnumeric(FLERR,values[0],true,lmp); - if (tag[nlocal] <= 0) - error->one(FLERR,"Invalid atom ID in Atoms section of data file"); + int ilocal = atom->nlocal-1; + int molindex = atom->molindex[ilocal]; + int molatom = atom->molatom[ilocal]; - molecule[nlocal] = utils::tnumeric(FLERR,values[1],true,lmp); - molindex[nlocal] = utils::inumeric(FLERR,values[2],true,lmp) - 1; - molatom[nlocal] = utils::inumeric(FLERR,values[3],true,lmp) - 1; - - if (molindex[nlocal] < 0 || molindex[nlocal] >= nset) + if (molindex < 0 || molindex >= nset) error->one(FLERR,"Invalid template index in Atoms section of data file"); - if (molatom[nlocal] < 0 || - molatom[nlocal] >= onemols[molindex[nlocal]]->natoms) + if (molatom < 0 || molatom >= onemols[molindex]->natoms) error->one(FLERR,"Invalid template atom in Atoms section of data file"); - - type[nlocal] = utils::inumeric(FLERR,values[4],true,lmp); - if (type[nlocal] <= 0 || type[nlocal] > atom->ntypes) - error->one(FLERR,"Invalid atom type in Atoms section of data file"); - - x[nlocal][0] = coord[0]; - x[nlocal][1] = coord[1]; - x[nlocal][2] = coord[2]; - - image[nlocal] = imagetmp; - - mask[nlocal] = 1; - v[nlocal][0] = 0.0; - v[nlocal][1] = 0.0; - v[nlocal][2] = 0.0; - - atom->nlocal++; -} - -/* ---------------------------------------------------------------------- - unpack hybrid quantities from one line in Atoms section of data file - initialize other atom quantities for this sub-style -------------------------------------------------------------------------- */ - -int AtomVecTemplate::data_atom_hybrid(int nlocal, char **values) -{ - molecule[nlocal] = utils::tnumeric(FLERR,values[0],true,lmp); - molindex[nlocal] = utils::inumeric(FLERR,values[1],true,lmp) - 1; - molatom[nlocal] = utils::inumeric(FLERR,values[2],true,lmp) - 1; - return 3; -} - -/* ---------------------------------------------------------------------- - pack atom info for data file including 3 image flags -------------------------------------------------------------------------- */ - -void AtomVecTemplate::pack_data(double **buf) -{ - int nlocal = atom->nlocal; - for (int i = 0; i < nlocal; i++) { - buf[i][0] = ubuf(tag[i]).d; - buf[i][1] = ubuf(molecule[i]).d; - buf[i][2] = ubuf(molindex[i]+1).d; - buf[i][3] = ubuf(molatom[i]+1).d; - buf[i][4] = ubuf(type[i]).d; - buf[i][5] = x[i][0]; - buf[i][6] = x[i][1]; - buf[i][7] = x[i][2]; - buf[i][8] = ubuf((image[i] & IMGMASK) - IMGMAX).d; - buf[i][9] = ubuf((image[i] >> IMGBITS & IMGMASK) - IMGMAX).d; - buf[i][10] = ubuf((image[i] >> IMG2BITS) - IMGMAX).d; - } -} - -/* ---------------------------------------------------------------------- - pack hybrid atom info for data file -------------------------------------------------------------------------- */ - -int AtomVecTemplate::pack_data_hybrid(int i, double *buf) -{ - buf[0] = ubuf(molecule[i]).d; - buf[1] = ubuf(molindex[i]+1).d; - buf[2] = ubuf(molatom[i]+1).d; - return 3; -} - -/* ---------------------------------------------------------------------- - write atom info to data file including 3 image flags -------------------------------------------------------------------------- */ - -void AtomVecTemplate::write_data(FILE *fp, int n, double **buf) -{ - for (int i = 0; i < n; i++) - fprintf(fp,TAGINT_FORMAT " " TAGINT_FORMAT - " %d %d %d %-1.16e %-1.16e %-1.16e %d %d %d\n", - (tagint) ubuf(buf[i][0]).i,(tagint) ubuf(buf[i][1]).i, - (int) ubuf(buf[i][2]).i,(int) ubuf(buf[i][3]).i, - (int) ubuf(buf[i][4]).i, - buf[i][5],buf[i][6],buf[i][7], - (int) ubuf(buf[i][8]).i,(int) ubuf(buf[i][9]).i, - (int) ubuf(buf[i][10]).i); -} - -/* ---------------------------------------------------------------------- - write hybrid atom info to data file -------------------------------------------------------------------------- */ - -int AtomVecTemplate::write_data_hybrid(FILE *fp, double *buf) -{ - fprintf(fp," " TAGINT_FORMAT " %d %d", - (tagint) ubuf(buf[0]).i,(int) ubuf(buf[1]).i,(int) ubuf(buf[2]).i); - return 3; -} - -/* ---------------------------------------------------------------------- - return # of bytes of allocated memory -------------------------------------------------------------------------- */ - -bigint AtomVecTemplate::memory_usage() -{ - bigint bytes = 0; - - if (atom->memcheck("tag")) bytes += memory->usage(tag,nmax); - if (atom->memcheck("type")) bytes += memory->usage(type,nmax); - if (atom->memcheck("mask")) bytes += memory->usage(mask,nmax); - if (atom->memcheck("image")) bytes += memory->usage(image,nmax); - if (atom->memcheck("x")) bytes += memory->usage(x,nmax,3); - if (atom->memcheck("v")) bytes += memory->usage(v,nmax,3); - if (atom->memcheck("f")) bytes += memory->usage(f,nmax*comm->nthreads,3); - - if (atom->memcheck("molecule")) bytes += memory->usage(molecule,nmax); - if (atom->memcheck("molindex")) bytes += memory->usage(molindex,nmax); - if (atom->memcheck("molatom")) bytes += memory->usage(molatom,nmax); - - return bytes; } diff --git a/src/MOLECULE/atom_vec_template.h b/src/MOLECULE/atom_vec_template.h index eee7fa9723..59a1386f2d 100644 --- a/src/MOLECULE/atom_vec_template.h +++ b/src/MOLECULE/atom_vec_template.h @@ -27,44 +27,9 @@ namespace LAMMPS_NS { class AtomVecTemplate : public AtomVec { public: AtomVecTemplate(class LAMMPS *); - virtual ~AtomVecTemplate() {} void process_args(int, char **); - void grow(int); - void grow_reset(); - void copy(int, int, int); - virtual int pack_comm(int, int *, double *, int, int *); - virtual int pack_comm_vel(int, int *, double *, int, int *); - virtual void unpack_comm(int, int, double *); - virtual void unpack_comm_vel(int, int, double *); - int pack_reverse(int, int, double *); - void unpack_reverse(int, int *, double *); - virtual int pack_border(int, int *, double *, int, int *); - virtual int pack_border_vel(int, int *, double *, int, int *); - int pack_border_hybrid(int, int *, double *); - virtual void unpack_border(int, int, double *); - virtual void unpack_border_vel(int, int, double *); - int unpack_border_hybrid(int, int, double *); - virtual int pack_exchange(int, double *); - virtual int unpack_exchange(double *); - int size_restart(); - int pack_restart(int, double *); - int unpack_restart(double *); void create_atom(int, double *); - void data_atom(double *, tagint, char **); - int data_atom_hybrid(int, char **); - void pack_data(double **); - int pack_data_hybrid(int, double *); - void write_data(FILE *, int, double **); - int write_data_hybrid(FILE *, double *); - bigint memory_usage(); - - protected: - tagint *tag; - int *type,*mask; - tagint *image; - double **x,**v,**f; - tagint *molecule; - int *molindex,*molatom; + void data_atom(double *, imageint, char **); }; } @@ -88,15 +53,6 @@ E: Atom style template molecule must have atom types The defined molecule(s) does not specify atom types. -E: Per-processor system is too big - -The number of owned atoms plus ghost atoms on a single -processor must fit in 32-bit integer. - -E: Invalid atom ID in Atoms section of data file - -Atom IDs must be positive integers. - E: Invalid template index in Atoms section of data file The template indices must be between 1 to N, where N is the number of @@ -107,8 +63,4 @@ E: Invalid template atom in Atoms section of data file The atom indices must be between 1 to N, where N is the number of atoms in the template molecule the atom belongs to. -E: Invalid atom type in Atoms section of data file - -Atom types must range from 1 to specified # of types. - */ diff --git a/src/PERI/atom_vec_peri.cpp b/src/PERI/atom_vec_peri.cpp index 3e3312bf01..29c4cb0d83 100644 --- a/src/PERI/atom_vec_peri.cpp +++ b/src/PERI/atom_vec_peri.cpp @@ -19,14 +19,9 @@ #include #include #include "atom.h" -#include "comm.h" -#include "domain.h" -#include "modify.h" -#include "fix.h" #include "citeme.h" #include "memory.h" #include "error.h" -#include "utils.h" using namespace LAMMPS_NS; @@ -49,859 +44,67 @@ AtomVecPeri::AtomVecPeri(LAMMPS *lmp) : AtomVec(lmp) molecular = 0; - comm_x_only = 0; - comm_f_only = 1; - size_forward = 4; - size_reverse = 3; - size_border = 12; - size_velocity = 3; - size_data_atom = 7; - size_data_vel = 4; - xcol_data = 5; - + atom->rmass_flag = 1; atom->peri_flag = 1; - atom->vfrac_flag = atom->rmass_flag = 1; -} - -/* ---------------------------------------------------------------------- - grow atom arrays - n = 0 grows arrays by a chunk - n > 0 allocates arrays to size n -------------------------------------------------------------------------- */ - -void AtomVecPeri::grow(int n) -{ - if (n == 0) grow_nmax(); - else nmax = n; - atom->nmax = nmax; - if (nmax < 0 || nmax > MAXSMALLINT) - error->one(FLERR,"Per-processor system is too big"); - - tag = memory->grow(atom->tag,nmax,"atom:tag"); - type = memory->grow(atom->type,nmax,"atom:type"); - mask = memory->grow(atom->mask,nmax,"atom:mask"); - image = memory->grow(atom->image,nmax,"atom:image"); - x = memory->grow(atom->x,nmax,3,"atom:x"); - v = memory->grow(atom->v,nmax,3,"atom:v"); - f = memory->grow(atom->f,nmax*comm->nthreads,3,"atom:f"); - - vfrac = memory->grow(atom->vfrac,nmax,"atom:vfrac"); - rmass = memory->grow(atom->rmass,nmax,"atom:rmass"); - s0 = memory->grow(atom->s0,nmax,"atom:s0"); - x0 = memory->grow(atom->x0,nmax,3,"atom:x0"); - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - modify->fix[atom->extra_grow[iextra]]->grow_arrays(nmax); -} - -/* ---------------------------------------------------------------------- - reset local array ptrs -------------------------------------------------------------------------- */ - -void AtomVecPeri::grow_reset() -{ - tag = atom->tag; type = atom->type; - mask = atom->mask; image = atom->image; - x = atom->x; v = atom->v; f = atom->f; - vfrac = atom->vfrac; rmass = atom->rmass; - s0 = atom->s0; x0 = atom->x0; -} - -/* ---------------------------------------------------------------------- - copy atom I info to atom J -------------------------------------------------------------------------- */ - -void AtomVecPeri::copy(int i, int j, int delflag) -{ - tag[j] = tag[i]; - type[j] = type[i]; - mask[j] = mask[i]; - image[j] = image[i]; - x[j][0] = x[i][0]; - x[j][1] = x[i][1]; - x[j][2] = x[i][2]; - v[j][0] = v[i][0]; - v[j][1] = v[i][1]; - v[j][2] = v[i][2]; - - vfrac[j] = vfrac[i]; - rmass[j] = rmass[i]; - s0[j] = s0[i]; - x0[j][0] = x0[i][0]; - x0[j][1] = x0[i][1]; - x0[j][2] = x0[i][2]; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - modify->fix[atom->extra_grow[iextra]]->copy_arrays(i,j,delflag); -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecPeri::pack_comm(int n, int *list, double *buf, - int pbc_flag, int *pbc) - -{ - int i,j,m; - double dx,dy,dz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = s0[j]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]*domain->xprd + pbc[5]*domain->xy + pbc[4]*domain->xz; - dy = pbc[1]*domain->yprd + pbc[3]*domain->yz; - dz = pbc[2]*domain->zprd; - } - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = s0[j]; - } - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecPeri::pack_comm_vel(int n, int *list, double *buf, - int pbc_flag, int *pbc) - -{ - int i,j,m; - double dx,dy,dz,dvx,dvy,dvz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = s0[j]; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]*domain->xprd + pbc[5]*domain->xy + pbc[4]*domain->xz; - dy = pbc[1]*domain->yprd + pbc[3]*domain->yz; - dz = pbc[2]*domain->zprd; - } - if (!deform_vremap) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = s0[j]; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } else { - dvx = pbc[0]*h_rate[0] + pbc[5]*h_rate[5] + pbc[4]*h_rate[4]; - dvy = pbc[1]*h_rate[1] + pbc[3]*h_rate[3]; - dvz = pbc[2]*h_rate[2]; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = s0[j]; - if (mask[i] & deform_groupbit) { - buf[m++] = v[j][0] + dvx; - buf[m++] = v[j][1] + dvy; - buf[m++] = v[j][2] + dvz; - } else { - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } - } - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecPeri::pack_comm_hybrid(int n, int *list, double *buf) -{ - int i,j,m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = s0[j]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecPeri::unpack_comm(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - s0[i] = buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecPeri::unpack_comm_vel(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - s0[i] = buf[m++]; - v[i][0] = buf[m++]; - v[i][1] = buf[m++]; - v[i][2] = buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecPeri::unpack_comm_hybrid(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) - s0[i] = buf[m++]; - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecPeri::pack_reverse(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - buf[m++] = f[i][0]; - buf[m++] = f[i][1]; - buf[m++] = f[i][2]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecPeri::unpack_reverse(int n, int *list, double *buf) -{ - int i,j,m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - f[j][0] += buf[m++]; - f[j][1] += buf[m++]; - f[j][2] += buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecPeri::pack_border(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = vfrac[j]; - buf[m++] = rmass[j]; - buf[m++] = s0[j]; - buf[m++] = x0[j][0]; - buf[m++] = x0[j][1]; - buf[m++] = x0[j][2]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]; - dy = pbc[1]; - dz = pbc[2]; - } - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = vfrac[j]; - buf[m++] = rmass[j]; - buf[m++] = s0[j]; - buf[m++] = x0[j][0]; - buf[m++] = x0[j][1]; - buf[m++] = x0[j][2]; - } - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); - - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecPeri::pack_border_vel(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz,dvx,dvy,dvz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = vfrac[j]; - buf[m++] = rmass[j]; - buf[m++] = s0[j]; - buf[m++] = x0[j][0]; - buf[m++] = x0[j][1]; - buf[m++] = x0[j][2]; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]; - dy = pbc[1]; - dz = pbc[2]; - } - if (!deform_vremap) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = vfrac[j]; - buf[m++] = rmass[j]; - buf[m++] = s0[j]; - buf[m++] = x0[j][0]; - buf[m++] = x0[j][1]; - buf[m++] = x0[j][2]; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } else { - dvx = pbc[0]*h_rate[0] + pbc[5]*h_rate[5] + pbc[4]*h_rate[4]; - dvy = pbc[1]*h_rate[1] + pbc[3]*h_rate[3]; - dvz = pbc[2]*h_rate[2]; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = vfrac[j]; - buf[m++] = rmass[j]; - buf[m++] = s0[j]; - buf[m++] = x0[j][0]; - buf[m++] = x0[j][1]; - buf[m++] = x0[j][2]; - if (mask[i] & deform_groupbit) { - buf[m++] = v[j][0] + dvx; - buf[m++] = v[j][1] + dvy; - buf[m++] = v[j][2] + dvz; - } else { - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } - } - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); - - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecPeri::pack_border_hybrid(int n, int *list, double *buf) -{ - int i,j,m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = vfrac[j]; - buf[m++] = rmass[j]; - buf[m++] = s0[j]; - buf[m++] = x0[j][0]; - buf[m++] = x0[j][1]; - buf[m++] = x0[j][2]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ + atom->vfrac_flag = 1; -void AtomVecPeri::unpack_border(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - if (i == nmax) grow(0); - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - tag[i] = (tagint) ubuf(buf[m++]).i; - type[i] = (int) ubuf(buf[m++]).i; - mask[i] = (int) ubuf(buf[m++]).i; - vfrac[i] = buf[m++]; - rmass[i] = buf[m++]; - s0[i] = buf[m++]; - x0[i][0] = buf[m++]; - x0[i][1] = buf[m++]; - x0[i][2] = buf[m++]; - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]-> - unpack_border(n,first,&buf[m]); -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecPeri::unpack_border_vel(int n, int first, double *buf) -{ - int i,m,last; + // strings with peratom variables to include in each AtomVec method + // strings cannot contain fields in corresponding AtomVec default strings + // order of fields in the string does not matter + // except fields_data_atom and fields_data_vel which must match data file - m = 0; - last = first + n; - for (i = first; i < last; i++) { - if (i == nmax) grow(0); - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - tag[i] = (tagint) ubuf(buf[m++]).i; - type[i] = (int) ubuf(buf[m++]).i; - mask[i] = (int) ubuf(buf[m++]).i; - vfrac[i] = buf[m++]; - rmass[i] = buf[m++]; - s0[i] = buf[m++]; - x0[i][0] = buf[m++]; - x0[i][1] = buf[m++]; - x0[i][2] = buf[m++]; - v[i][0] = buf[m++]; - v[i][1] = buf[m++]; - v[i][2] = buf[m++]; - } + fields_grow = (char *) "rmass vfrac s0 x0"; + fields_copy = (char *) "rmass vfrac s0 x0"; + fields_comm = (char *) "s0"; + fields_comm_vel = (char *) "s0"; + fields_reverse = NULL; + fields_border = (char *) "rmass vfrac s0 x0"; + fields_border_vel = (char *) "rmass vfrac s0 x0"; + fields_exchange = (char *) "rmass vfrac s0 x0"; + fields_restart = (char *) "rmass vfrac s0 x0"; + fields_create = (char *) "rmass vfrac s0 x0"; + fields_data_atom = (char *) "id type vfrac rmass x"; + fields_data_vel = (char *) "omega"; - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]-> - unpack_border(n,first,&buf[m]); -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecPeri::unpack_border_hybrid(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - vfrac[i] = buf[m++]; - rmass[i] = buf[m++]; - s0[i] = buf[m++]; - x0[i][0] = buf[m++]; - x0[i][1] = buf[m++]; - x0[i][2] = buf[m++]; - } - return m; -} - -/* ---------------------------------------------------------------------- - pack data for atom I for sending to another proc - xyz must be 1st 3 values, so comm::exchange() can test on them -------------------------------------------------------------------------- */ - -int AtomVecPeri::pack_exchange(int i, double *buf) -{ - int m = 1; - buf[m++] = x[i][0]; - buf[m++] = x[i][1]; - buf[m++] = x[i][2]; - buf[m++] = v[i][0]; - buf[m++] = v[i][1]; - buf[m++] = v[i][2]; - buf[m++] = ubuf(tag[i]).d; - buf[m++] = ubuf(type[i]).d; - buf[m++] = ubuf(mask[i]).d; - buf[m++] = ubuf(image[i]).d; - - buf[m++] = vfrac[i]; - buf[m++] = rmass[i]; - buf[m++] = s0[i]; - buf[m++] = x0[i][0]; - buf[m++] = x0[i][1]; - buf[m++] = x0[i][2]; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - m += modify->fix[atom->extra_grow[iextra]]->pack_exchange(i,&buf[m]); - - buf[0] = m; - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecPeri::unpack_exchange(double *buf) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - int m = 1; - x[nlocal][0] = buf[m++]; - x[nlocal][1] = buf[m++]; - x[nlocal][2] = buf[m++]; - v[nlocal][0] = buf[m++]; - v[nlocal][1] = buf[m++]; - v[nlocal][2] = buf[m++]; - tag[nlocal] = (tagint) ubuf(buf[m++]).i; - type[nlocal] = (int) ubuf(buf[m++]).i; - mask[nlocal] = (int) ubuf(buf[m++]).i; - image[nlocal] = (imageint) ubuf(buf[m++]).i; - - vfrac[nlocal] = buf[m++]; - rmass[nlocal] = buf[m++]; - s0[nlocal] = buf[m++]; - x0[nlocal][0] = buf[m++]; - x0[nlocal][1] = buf[m++]; - x0[nlocal][2] = buf[m++]; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - m += modify->fix[atom->extra_grow[iextra]]-> - unpack_exchange(nlocal,&buf[m]); - - atom->nlocal++; - return m; -} - - -/* ---------------------------------------------------------------------- - size of restart data for all atoms owned by this proc - include extra data stored by fixes -------------------------------------------------------------------------- */ - -int AtomVecPeri::size_restart() -{ - int i; - - int nlocal = atom->nlocal; - int n = 17 * nlocal; - - if (atom->nextra_restart) - for (int iextra = 0; iextra < atom->nextra_restart; iextra++) - for (i = 0; i < nlocal; i++) - n += modify->fix[atom->extra_restart[iextra]]->size_restart(i); - - return n; -} - -/* ---------------------------------------------------------------------- - pack atom I's data for restart file including extra quantities - xyz must be 1st 3 values, so that read_restart can test on them - molecular types may be negative, but write as positive -------------------------------------------------------------------------- */ - -int AtomVecPeri::pack_restart(int i, double *buf) -{ - int m = 1; - buf[m++] = x[i][0]; - buf[m++] = x[i][1]; - buf[m++] = x[i][2]; - buf[m++] = ubuf(tag[i]).d; - buf[m++] = ubuf(type[i]).d; - buf[m++] = ubuf(mask[i]).d; - buf[m++] = ubuf(image[i]).d; - buf[m++] = v[i][0]; - buf[m++] = v[i][1]; - buf[m++] = v[i][2]; - - buf[m++] = vfrac[i]; - buf[m++] = rmass[i]; - buf[m++] = s0[i]; - buf[m++] = x0[i][0]; - buf[m++] = x0[i][1]; - buf[m++] = x0[i][2]; - - if (atom->nextra_restart) - for (int iextra = 0; iextra < atom->nextra_restart; iextra++) - m += modify->fix[atom->extra_restart[iextra]]->pack_restart(i,&buf[m]); - - buf[0] = m; - return m; -} - -/* ---------------------------------------------------------------------- - unpack data for one atom from restart file including extra quantities -------------------------------------------------------------------------- */ - -int AtomVecPeri::unpack_restart(double *buf) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) { - grow(0); - if (atom->nextra_store) - memory->grow(atom->extra,nmax,atom->nextra_store,"atom:extra"); - } - - int m = 1; - x[nlocal][0] = buf[m++]; - x[nlocal][1] = buf[m++]; - x[nlocal][2] = buf[m++]; - tag[nlocal] = (tagint) ubuf(buf[m++]).i; - type[nlocal] = (int) ubuf(buf[m++]).i; - mask[nlocal] = (int) ubuf(buf[m++]).i; - image[nlocal] = (imageint) ubuf(buf[m++]).i; - v[nlocal][0] = buf[m++]; - v[nlocal][1] = buf[m++]; - v[nlocal][2] = buf[m++]; - - vfrac[nlocal] = buf[m++]; - rmass[nlocal] = buf[m++]; - s0[nlocal] = buf[m++]; - x0[nlocal][0] = buf[m++]; - x0[nlocal][1] = buf[m++]; - x0[nlocal][2] = buf[m++]; - - double **extra = atom->extra; - if (atom->nextra_store) { - int size = static_cast (buf[0]) - m; - for (int i = 0; i < size; i++) extra[nlocal][i] = buf[m++]; - } - - atom->nlocal++; - return m; + setup_fields(); } /* ---------------------------------------------------------------------- create one atom of itype at coord - set other values to defaults + modify what default AtomVec::create_atom() just created ------------------------------------------------------------------------- */ void AtomVecPeri::create_atom(int itype, double *coord) { - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - tag[nlocal] = 0; - type[nlocal] = itype; - x[nlocal][0] = coord[0]; - x[nlocal][1] = coord[1]; - x[nlocal][2] = coord[2]; - mask[nlocal] = 1; - image[nlocal] = ((imageint) IMGMAX << IMG2BITS) | - ((imageint) IMGMAX << IMGBITS) | IMGMAX; - v[nlocal][0] = 0.0; - v[nlocal][1] = 0.0; - v[nlocal][2] = 0.0; + AtomVec::create_atom(itype,coord); + int ilocal = atom->nlocal-1; - vfrac[nlocal] = 1.0; - rmass[nlocal] = 1.0; - s0[nlocal] = DBL_MAX; - x0[nlocal][0] = coord[0]; - x0[nlocal][1] = coord[1]; - x0[nlocal][2] = coord[2]; - - atom->nlocal++; + atom->vfrac[ilocal] = 1.0; + atom->rmass[ilocal] = 1.0; + atom->s0[ilocal] = DBL_MAX; + atom->x0[ilocal][0] = coord[0]; + atom->x0[ilocal][1] = coord[1]; + atom->x0[ilocal][2] = coord[2]; } /* ---------------------------------------------------------------------- unpack one line from Atoms section of data file - initialize other atom quantities + modify what default AtomVec::data_atom() just unpacked + or initialize other atom quantities ------------------------------------------------------------------------- */ void AtomVecPeri::data_atom(double *coord, imageint imagetmp, char **values) { - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - tag[nlocal] = utils::tnumeric(FLERR,values[0],true,lmp); - type[nlocal] = utils::inumeric(FLERR,values[1],true,lmp); - if (type[nlocal] <= 0 || type[nlocal] > atom->ntypes) - error->one(FLERR,"Invalid atom type in Atoms section of data file"); - - vfrac[nlocal] = utils::numeric(FLERR,values[2],true,lmp); - rmass[nlocal] = utils::numeric(FLERR,values[3],true,lmp); - if (rmass[nlocal] <= 0.0) error->one(FLERR,"Invalid mass value"); - - x[nlocal][0] = coord[0]; - x[nlocal][1] = coord[1]; - x[nlocal][2] = coord[2]; - - image[nlocal] = imagetmp; - - mask[nlocal] = 1; - v[nlocal][0] = 0.0; - v[nlocal][1] = 0.0; - v[nlocal][2] = 0.0; - - s0[nlocal] = DBL_MAX; - x0[nlocal][0] = coord[0]; - x0[nlocal][1] = coord[1]; - x0[nlocal][2] = coord[2]; - - atom->nlocal++; -} - -/* ---------------------------------------------------------------------- - unpack hybrid quantities from one line in Atoms section of data file - initialize other atom quantities for this sub-style -------------------------------------------------------------------------- */ - -int AtomVecPeri::data_atom_hybrid(int nlocal, char **values) -{ - vfrac[nlocal] = utils::numeric(FLERR,values[0],true,lmp); - rmass[nlocal] = utils::numeric(FLERR,values[1],true,lmp); - if (rmass[nlocal] <= 0.0) error->one(FLERR,"Invalid mass value"); - - s0[nlocal] = DBL_MAX; - x0[nlocal][0] = x[nlocal][0]; - x0[nlocal][1] = x[nlocal][1]; - x0[nlocal][2] = x[nlocal][2]; - - return 2; -} - -/* ---------------------------------------------------------------------- - pack atom info for data file including 3 image flags -------------------------------------------------------------------------- */ - -void AtomVecPeri::pack_data(double **buf) -{ - int nlocal = atom->nlocal; - for (int i = 0; i < nlocal; i++) { - buf[i][0] = ubuf(tag[i]).d; - buf[i][1] = ubuf(type[i]).d; - buf[i][2] = vfrac[i]; - buf[i][3] = rmass[i]; - buf[i][4] = x[i][0]; - buf[i][5] = x[i][1]; - buf[i][6] = x[i][2]; - buf[i][7] = ubuf((image[i] & IMGMASK) - IMGMAX).d; - buf[i][8] = ubuf((image[i] >> IMGBITS & IMGMASK) - IMGMAX).d; - buf[i][9] = ubuf((image[i] >> IMG2BITS) - IMGMAX).d; - } -} - -/* ---------------------------------------------------------------------- - pack hybrid atom info for data file -------------------------------------------------------------------------- */ - -int AtomVecPeri::pack_data_hybrid(int i, double *buf) -{ - buf[0] = vfrac[i]; - buf[1] = rmass[i]; - return 2; -} - -/* ---------------------------------------------------------------------- - write atom info to data file including 3 image flags -------------------------------------------------------------------------- */ - -void AtomVecPeri::write_data(FILE *fp, int n, double **buf) -{ - for (int i = 0; i < n; i++) - fprintf(fp,TAGINT_FORMAT - " %d %-1.16e %-1.16e %-1.16e %-1.16e %-1.16e %d %d %d\n", - (tagint) ubuf(buf[i][0]).i,(int) ubuf(buf[i][1]).i, - buf[i][2],buf[i][3],buf[i][4],buf[i][5],buf[i][6], - (int) ubuf(buf[i][7]).i,(int) ubuf(buf[i][8]).i, - (int) ubuf(buf[i][9]).i); -} + AtomVec::data_atom(coord,imagetmp,values); + int ilocal = atom->nlocal-1; -/* ---------------------------------------------------------------------- - write hybrid atom info to data file -------------------------------------------------------------------------- */ + atom->s0[ilocal] = DBL_MAX; + atom->x0[ilocal][0] = coord[0]; + atom->x0[ilocal][1] = coord[1]; + atom->x0[ilocal][2] = coord[2]; -int AtomVecPeri::write_data_hybrid(FILE *fp, double *buf) -{ - fprintf(fp," %-1.16e %-1.16e",buf[0],buf[1]); - return 2; + if (atom->rmass[ilocal] <= 0.0) + error->one(FLERR,"Invalid mass in Atoms section of data file"); } /* ---------------------------------------------------------------------- @@ -929,12 +132,14 @@ void AtomVecPeri::pack_property_atom(int index, double *buf, int n = 0; if (index == 0) { + double *vfrac = atom->vfrac; for (int i = 0; i < nlocal; i++) { if (mask[i] & groupbit) buf[n] = vfrac[i]; else buf[n] = 0.0; n += nvalues; } } else if (index == 1) { + double *s0 = atom->s0; for (int i = 0; i < nlocal; i++) { if (mask[i] & groupbit) buf[n] = s0[i]; else buf[n] = 0.0; @@ -942,27 +147,3 @@ void AtomVecPeri::pack_property_atom(int index, double *buf, } } } - -/* ---------------------------------------------------------------------- - return # of bytes of allocated memory -------------------------------------------------------------------------- */ - -bigint AtomVecPeri::memory_usage() -{ - bigint bytes = 0; - - if (atom->memcheck("tag")) bytes += memory->usage(tag,nmax); - if (atom->memcheck("type")) bytes += memory->usage(type,nmax); - if (atom->memcheck("mask")) bytes += memory->usage(mask,nmax); - if (atom->memcheck("image")) bytes += memory->usage(image,nmax); - if (atom->memcheck("x")) bytes += memory->usage(x,nmax,3); - if (atom->memcheck("v")) bytes += memory->usage(v,nmax,3); - if (atom->memcheck("f")) bytes += memory->usage(f,nmax*comm->nthreads,3); - - if (atom->memcheck("vfrac")) bytes += memory->usage(vfrac,nmax); - if (atom->memcheck("rmass")) bytes += memory->usage(rmass,nmax); - if (atom->memcheck("s0")) bytes += memory->usage(s0,nmax); - if (atom->memcheck("x0")) bytes += memory->usage(x0,nmax,3); - - return bytes; -} diff --git a/src/PERI/atom_vec_peri.h b/src/PERI/atom_vec_peri.h index 0fc30d6dc2..12ef650348 100644 --- a/src/PERI/atom_vec_peri.h +++ b/src/PERI/atom_vec_peri.h @@ -27,45 +27,10 @@ namespace LAMMPS_NS { class AtomVecPeri : public AtomVec { public: AtomVecPeri(class LAMMPS *); - void grow(int); - void grow_reset(); - void copy(int, int, int); - int pack_comm(int, int *, double *, int, int *); - int pack_comm_vel(int, int *, double *, int, int *); - int pack_comm_hybrid(int, int *, double *); - void unpack_comm(int, int, double *); - void unpack_comm_vel(int, int, double *); - int unpack_comm_hybrid(int, int, double *); - int pack_reverse(int, int, double *); - void unpack_reverse(int, int *, double *); - int pack_border(int, int *, double *, int, int *); - int pack_border_vel(int, int *, double *, int, int *); - int pack_border_hybrid(int, int *, double *); - void unpack_border(int, int, double *); - void unpack_border_vel(int, int, double *); - int unpack_border_hybrid(int, int, double *); - int pack_exchange(int, double *); - int unpack_exchange(double *); - int size_restart(); - int pack_restart(int, double *); - int unpack_restart(double *); void create_atom(int, double *); void data_atom(double *, imageint, char **); - int data_atom_hybrid(int, char **); - void pack_data(double **); - int pack_data_hybrid(int, double *); - void write_data(FILE *, int, double **); - int write_data_hybrid(FILE *, double *); int property_atom(char *); void pack_property_atom(int, double *, int, int); - bigint memory_usage(); - - private: - tagint *tag; - int *type,*mask; - imageint *image; - double **x,**v,**f; - double *vfrac,*rmass,*s0,**x0; }; } @@ -75,17 +40,4 @@ class AtomVecPeri : public AtomVec { /* ERROR/WARNING messages: -E: Per-processor system is too big - -The number of owned atoms plus ghost atoms on a single -processor must fit in 32-bit integer. - -E: Invalid atom type in Atoms section of data file - -Atom types must range from 1 to specified # of types. - -E: Invalid mass value - -Self-explanatory. - */ diff --git a/src/SPIN/atom_vec_spin.cpp b/src/SPIN/atom_vec_spin.cpp index ad1384ffd2..135f8936a1 100644 --- a/src/SPIN/atom_vec_spin.cpp +++ b/src/SPIN/atom_vec_spin.cpp @@ -27,13 +27,6 @@ #include #include #include "atom.h" -#include "comm.h" -#include "domain.h" -#include "error.h" -#include "fix.h" -#include "memory.h" -#include "modify.h" -#include "utils.h" using namespace LAMMPS_NS; @@ -45,908 +38,45 @@ AtomVecSpin::AtomVecSpin(LAMMPS *lmp) : AtomVec(lmp) mass_type = 1; forceclearflag = 1; - comm_x_only = 0; - comm_f_only = 0; - size_forward = 7; - size_reverse = 9; - size_border = 10; - size_velocity = 3; - size_data_atom = 9; - size_data_vel = 4; - xcol_data = 4; - atom->sp_flag = 1; -} - -/* ---------------------------------------------------------------------- - grow atom arrays - n = 0 grows arrays by a chunk - n > 0 allocates arrays to size n -------------------------------------------------------------------------- */ - -void AtomVecSpin::grow(int n) -{ - if (n == 0) grow_nmax(); - else nmax = n; - atom->nmax = nmax; - if (nmax < 0 || nmax > MAXSMALLINT) - error->one(FLERR,"Per-processor system is too big"); - tag = memory->grow(atom->tag,nmax,"atom:tag"); - type = memory->grow(atom->type,nmax,"atom:type"); - mask = memory->grow(atom->mask,nmax,"atom:mask"); - image = memory->grow(atom->image,nmax,"atom:image"); + // strings with peratom variables to include in each AtomVec method + // strings cannot contain fields in corresponding AtomVec default strings + // order of fields in the string does not matter + // except fields_data_atom and fields_data_vel which must match data file - // allocating mech. quantities - - x = memory->grow(atom->x,nmax,3,"atom:x"); - v = memory->grow(atom->v,nmax,3,"atom:v"); - f = memory->grow(atom->f,nmax*comm->nthreads,3,"atom:f"); - - // allocating mag. quantities - - sp = memory->grow(atom->sp,nmax,4,"atom:sp"); - fm = memory->grow(atom->fm,nmax*comm->nthreads,3,"atom:fm"); - fm_long = memory->grow(atom->fm_long,nmax*comm->nthreads,3,"atom:fm_long"); - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - modify->fix[atom->extra_grow[iextra]]->grow_arrays(nmax); -} - -/* ---------------------------------------------------------------------- - reset local array ptrs -------------------------------------------------------------------------- */ + fields_grow = (char *) "sp fm fm_long"; + fields_copy = (char *) "sp"; + fields_comm = (char *) "sp"; + fields_comm_vel = (char *) "sp"; + fields_reverse = (char *) "fm fm_long"; + fields_border = (char *) "sp"; + fields_border_vel = (char *) "sp"; + fields_exchange = (char *) "sp"; + fields_restart = (char *) "sp"; + fields_create = (char *) "sp"; + fields_data_atom = (char *) "id type x sp"; + fields_data_vel = (char *) "omega"; -void AtomVecSpin::grow_reset() -{ - tag = atom->tag; type = atom->type; - mask = atom->mask; image = atom->image; - x = atom->x; v = atom->v; f = atom->f; - sp = atom->sp; fm = atom->fm; fm_long = atom->fm_long; -} - -/* ---------------------------------------------------------------------- - copy atom I info to atom J -------------------------------------------------------------------------- */ - -void AtomVecSpin::copy(int i, int j, int delflag) -{ - tag[j] = tag[i]; - type[j] = type[i]; - mask[j] = mask[i]; - image[j] = image[i]; - x[j][0] = x[i][0]; - x[j][1] = x[i][1]; - x[j][2] = x[i][2]; - v[j][0] = v[i][0]; - v[j][1] = v[i][1]; - v[j][2] = v[i][2]; - - sp[j][0] = sp[i][0]; - sp[j][1] = sp[i][1]; - sp[j][2] = sp[i][2]; - sp[j][3] = sp[i][3]; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - modify->fix[atom->extra_grow[iextra]]->copy_arrays(i,j,delflag); -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecSpin::pack_comm(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = sp[j][0]; - buf[m++] = sp[j][1]; - buf[m++] = sp[j][2]; - buf[m++] = sp[j][3]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]*domain->xprd + pbc[5]*domain->xy + pbc[4]*domain->xz; - dy = pbc[1]*domain->yprd + pbc[3]*domain->yz; - dz = pbc[2]*domain->zprd; - } - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = sp[j][0]; - buf[m++] = sp[j][1]; - buf[m++] = sp[j][2]; - buf[m++] = sp[j][3]; - } - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecSpin::pack_comm_vel(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz,dvx,dvy,dvz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = sp[j][0]; - buf[m++] = sp[j][1]; - buf[m++] = sp[j][2]; - buf[m++] = sp[j][3]; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]*domain->xprd + pbc[5]*domain->xy + pbc[4]*domain->xz; - dy = pbc[1]*domain->yprd + pbc[3]*domain->yz; - dz = pbc[2]*domain->zprd; - } - if (!deform_vremap) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = sp[j][0]; - buf[m++] = sp[j][1]; - buf[m++] = sp[j][2]; - buf[m++] = sp[j][3]; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } else { - dvx = pbc[0]*h_rate[0] + pbc[5]*h_rate[5] + pbc[4]*h_rate[4]; - dvy = pbc[1]*h_rate[1] + pbc[3]*h_rate[3]; - dvz = pbc[2]*h_rate[2]; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = sp[j][0]; - buf[m++] = sp[j][1]; - buf[m++] = sp[j][2]; - buf[m++] = sp[j][3]; - if (mask[i] & deform_groupbit) { - buf[m++] = v[j][0] + dvx; - buf[m++] = v[j][1] + dvy; - buf[m++] = v[j][2] + dvz; - } else { - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } - } - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecSpin::pack_comm_hybrid(int n, int *list, double *buf) -{ - int i,j,m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = sp[j][3]; - buf[m++] = sp[j][0]; - buf[m++] = sp[j][1]; - buf[m++] = sp[j][2]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecSpin::unpack_comm(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - sp[i][0] = buf[m++]; - sp[i][1] = buf[m++]; - sp[i][2] = buf[m++]; - sp[i][3] = buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecSpin::unpack_comm_vel(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - sp[i][0] = buf[m++]; - sp[i][1] = buf[m++]; - sp[i][2] = buf[m++]; - sp[i][3] = buf[m++]; - v[i][0] = buf[m++]; - v[i][1] = buf[m++]; - v[i][2] = buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecSpin::unpack_comm_hybrid(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - sp[i][3] = buf[m++]; - sp[i][0] = buf[m++]; - sp[i][1] = buf[m++]; - sp[i][2] = buf[m++]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecSpin::pack_reverse(int n, int first, double *buf) -{ - int i,m,last; - m = 0; - last = first + n; - for (i = first; i < last; i++) { - buf[m++] = f[i][0]; - buf[m++] = f[i][1]; - buf[m++] = f[i][2]; - buf[m++] = fm[i][0]; - buf[m++] = fm[i][1]; - buf[m++] = fm[i][2]; - buf[m++] = fm_long[i][0]; - buf[m++] = fm_long[i][1]; - buf[m++] = fm_long[i][2]; - } - - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecSpin::unpack_reverse(int n, int *list, double *buf) -{ - int i,j,m; - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - f[j][0] += buf[m++]; - f[j][1] += buf[m++]; - f[j][2] += buf[m++]; - fm[j][0] += buf[m++]; - fm[j][1] += buf[m++]; - fm[j][2] += buf[m++]; - fm_long[j][0] += buf[m++]; - fm_long[j][1] += buf[m++]; - fm_long[j][2] += buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecSpin::pack_border(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = sp[j][0]; - buf[m++] = sp[j][1]; - buf[m++] = sp[j][2]; - buf[m++] = sp[j][3]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]; - dy = pbc[1]; - dz = pbc[2]; - } - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = sp[j][0]; - buf[m++] = sp[j][1]; - buf[m++] = sp[j][2]; - buf[m++] = sp[j][3]; - } - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); - - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecSpin::pack_border_vel(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz,dvx,dvy,dvz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = sp[j][0]; - buf[m++] = sp[j][1]; - buf[m++] = sp[j][2]; - buf[m++] = sp[j][3]; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]; - dy = pbc[1]; - dz = pbc[2]; - } - if (!deform_vremap) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = sp[j][0]; - buf[m++] = sp[j][1]; - buf[m++] = sp[j][2]; - buf[m++] = sp[j][3]; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } else { - dvx = pbc[0]*h_rate[0] + pbc[5]*h_rate[5] + pbc[4]*h_rate[4]; - dvy = pbc[1]*h_rate[1] + pbc[3]*h_rate[3]; - dvz = pbc[2]*h_rate[2]; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = sp[j][0]; - buf[m++] = sp[j][1]; - buf[m++] = sp[j][2]; - buf[m++] = sp[j][3]; - if (mask[i] & deform_groupbit) { - buf[m++] = v[j][0] + dvx; - buf[m++] = v[j][1] + dvy; - buf[m++] = v[j][2] + dvz; - } else { - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } - } - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); - - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecSpin::pack_border_hybrid(int n, int *list, double *buf) -{ - int i,j,m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = sp[j][3]; - buf[m++] = sp[j][0]; - buf[m++] = sp[j][1]; - buf[m++] = sp[j][2]; - } - - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecSpin::unpack_border(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - if (i == nmax) grow(0); - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - tag[i] = (tagint) ubuf(buf[m++]).i; - type[i] = (int) ubuf(buf[m++]).i; - mask[i] = (int) ubuf(buf[m++]).i; - sp[i][0] = buf[m++]; - sp[i][1] = buf[m++]; - sp[i][2] = buf[m++]; - sp[i][3] = buf[m++]; - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]-> - unpack_border(n,first,&buf[m]); - -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecSpin::unpack_border_vel(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - if (i == nmax) grow(0); - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - tag[i] = (tagint) ubuf(buf[m++]).i; - type[i] = (int) ubuf(buf[m++]).i; - mask[i] = (int) ubuf(buf[m++]).i; - sp[i][0] = buf[m++]; - sp[i][1] = buf[m++]; - sp[i][2] = buf[m++]; - sp[i][3] = buf[m++]; - v[i][0] = buf[m++]; - v[i][1] = buf[m++]; - v[i][2] = buf[m++]; - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]-> - unpack_border(n,first,&buf[m]); - -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecSpin::unpack_border_hybrid(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - sp[i][3] = buf[m++]; - sp[i][0] = buf[m++]; - sp[i][1] = buf[m++]; - sp[i][2] = buf[m++]; - } - - return m; -} - -/* ---------------------------------------------------------------------- - pack all atom quantities for shipping to another proc - xyz must be 1st 3 values, so that comm::exchange can test on them -------------------------------------------------------------------------- */ - -int AtomVecSpin::pack_exchange(int i, double *buf) -{ - int m = 1; - buf[m++] = x[i][0]; - buf[m++] = x[i][1]; - buf[m++] = x[i][2]; - buf[m++] = v[i][0]; - buf[m++] = v[i][1]; - buf[m++] = v[i][2]; - buf[m++] = ubuf(tag[i]).d; - buf[m++] = ubuf(type[i]).d; - buf[m++] = ubuf(mask[i]).d; - buf[m++] = ubuf(image[i]).d; - - buf[m++] = sp[i][0]; - buf[m++] = sp[i][1]; - buf[m++] = sp[i][2]; - buf[m++] = sp[i][3]; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - m += modify->fix[atom->extra_grow[iextra]]->pack_exchange(i,&buf[m]); - - buf[0] = m; - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecSpin::unpack_exchange(double *buf) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - int m = 1; - x[nlocal][0] = buf[m++]; - x[nlocal][1] = buf[m++]; - x[nlocal][2] = buf[m++]; - v[nlocal][0] = buf[m++]; - v[nlocal][1] = buf[m++]; - v[nlocal][2] = buf[m++]; - tag[nlocal] = (tagint) ubuf(buf[m++]).i; - type[nlocal] = (int) ubuf(buf[m++]).i; - mask[nlocal] = (int) ubuf(buf[m++]).i; - image[nlocal] = (imageint) ubuf(buf[m++]).i; - - sp[nlocal][0] = buf[m++]; - sp[nlocal][1] = buf[m++]; - sp[nlocal][2] = buf[m++]; - sp[nlocal][3] = buf[m++]; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - m += modify->fix[atom->extra_grow[iextra]]-> - unpack_exchange(nlocal,&buf[m]); - - atom->nlocal++; - - return m; -} - -/* ---------------------------------------------------------------------- - size of restart data for all atoms owned by this proc - include extra data stored by fixes -------------------------------------------------------------------------- */ - -int AtomVecSpin::size_restart() -{ - int i; - - int nlocal = atom->nlocal; - int n = 15 * nlocal; - - if (atom->nextra_restart) - for (int iextra = 0; iextra < atom->nextra_restart; iextra++) - for (i = 0; i < nlocal; i++) - n += modify->fix[atom->extra_restart[iextra]]->size_restart(i); - - return n; -} - -/* ---------------------------------------------------------------------- - pack atom I's data for restart file including extra quantities - xyz must be 1st 3 values, so that read_restart can test on them - molecular types may be negative, but write as positive -------------------------------------------------------------------------- */ - -int AtomVecSpin::pack_restart(int i, double *buf) -{ - int m = 1; - - buf[m++] = x[i][0]; - buf[m++] = x[i][1]; - buf[m++] = x[i][2]; - buf[m++] = ubuf(tag[i]).d; - buf[m++] = ubuf(type[i]).d; - buf[m++] = ubuf(mask[i]).d; - buf[m++] = ubuf(image[i]).d; - buf[m++] = v[i][0]; - buf[m++] = v[i][1]; - buf[m++] = v[i][2]; - - buf[m++] = sp[i][0]; - buf[m++] = sp[i][1]; - buf[m++] = sp[i][2]; - buf[m++] = sp[i][3]; - - if (atom->nextra_restart) - for (int iextra = 0; iextra < atom->nextra_restart; iextra++) - m += modify->fix[atom->extra_restart[iextra]]->pack_restart(i,&buf[m]); - - buf[0] = m; - return m; -} - -/* ---------------------------------------------------------------------- - unpack data for one atom from restart file including extra quantities -------------------------------------------------------------------------- */ - -int AtomVecSpin::unpack_restart(double *buf) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) { - grow(0); - if (atom->nextra_store) - memory->grow(atom->extra,nmax,atom->nextra_store,"atom:extra"); - } - - int m = 1; - x[nlocal][0] = buf[m++]; - x[nlocal][1] = buf[m++]; - x[nlocal][2] = buf[m++]; - tag[nlocal] = (tagint) ubuf(buf[m++]).i; - type[nlocal] = (int) ubuf(buf[m++]).i; - mask[nlocal] = (int) ubuf(buf[m++]).i; - image[nlocal] = (imageint) ubuf(buf[m++]).i; - v[nlocal][0] = buf[m++]; - v[nlocal][1] = buf[m++]; - v[nlocal][2] = buf[m++]; - - sp[nlocal][0] = buf[m++]; - sp[nlocal][1] = buf[m++]; - sp[nlocal][2] = buf[m++]; - sp[nlocal][3] = buf[m++]; - - double **extra = atom->extra; - if (atom->nextra_store) { - int size = static_cast (buf[0]) - m; - for (int i = 0; i < size; i++) extra[nlocal][i] = buf[m++]; - } - - atom->nlocal++; - return m; -} - -/* ---------------------------------------------------------------------- - create one atom of itype at coord - set other values to defaults -------------------------------------------------------------------------- */ - -void AtomVecSpin::create_atom(int itype, double *coord) -{ - - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - tag[nlocal] = 0; - type[nlocal] = itype; - x[nlocal][0] = coord[0]; - x[nlocal][1] = coord[1]; - x[nlocal][2] = coord[2]; - mask[nlocal] = 1; - image[nlocal] = ((imageint) IMGMAX << IMG2BITS) | - ((imageint) IMGMAX << IMGBITS) | IMGMAX; - v[nlocal][0] = 0.0; - v[nlocal][1] = 0.0; - v[nlocal][2] = 0.0; - - sp[nlocal][0] = 0.0; - sp[nlocal][1] = 0.0; - sp[nlocal][2] = 0.0; - sp[nlocal][3] = 0.0; - - atom->nlocal++; + setup_fields(); } /* ---------------------------------------------------------------------- unpack one line from Atoms section of data file - initialize other atom quantities + modify what default AtomVec::data_atom() just unpacked + or initialize other atom quantities ------------------------------------------------------------------------- */ void AtomVecSpin::data_atom(double *coord, imageint imagetmp, char **values) { - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - tag[nlocal] = utils::tnumeric(FLERR,values[0],true,lmp); - type[nlocal] = utils::inumeric(FLERR,values[1],true,lmp); - if (type[nlocal] <= 0 || type[nlocal] > atom->ntypes) - error->one(FLERR,"Invalid atom type in Atoms section of data file"); - - x[nlocal][0] = coord[0]; - x[nlocal][1] = coord[1]; - x[nlocal][2] = coord[2]; - - sp[nlocal][3] = utils::numeric(FLERR,values[2],true,lmp); - sp[nlocal][0] = utils::numeric(FLERR,values[6],true,lmp); - sp[nlocal][1] = utils::numeric(FLERR,values[7],true,lmp); - sp[nlocal][2] = utils::numeric(FLERR,values[8],true,lmp); - double inorm = 1.0/sqrt(sp[nlocal][0]*sp[nlocal][0] + - sp[nlocal][1]*sp[nlocal][1] + - sp[nlocal][2]*sp[nlocal][2]); - sp[nlocal][0] *= inorm; - sp[nlocal][1] *= inorm; - sp[nlocal][2] *= inorm; - - image[nlocal] = imagetmp; - - mask[nlocal] = 1; - v[nlocal][0] = 0.0; - v[nlocal][1] = 0.0; - v[nlocal][2] = 0.0; - - atom->nlocal++; -} - -/* ---------------------------------------------------------------------- - unpack hybrid quantities from one line in Atoms section of data file - initialize other atom quantities for this sub-style -------------------------------------------------------------------------- */ - -int AtomVecSpin::data_atom_hybrid(int nlocal, char **values) -{ - - sp[nlocal][0] = utils::numeric(FLERR,values[0],true,lmp); - sp[nlocal][1] = utils::numeric(FLERR,values[1],true,lmp); - sp[nlocal][2] = utils::numeric(FLERR,values[2],true,lmp); - double inorm = 1.0/sqrt(sp[nlocal][0]*sp[nlocal][0] + - sp[nlocal][1]*sp[nlocal][1] + - sp[nlocal][2]*sp[nlocal][2]); - sp[nlocal][0] *= inorm; - sp[nlocal][1] *= inorm; - sp[nlocal][2] *= inorm; - sp[nlocal][3] = utils::numeric(FLERR,values[3],true,lmp); - - return 4; -} - -/* ---------------------------------------------------------------------- - pack atom info for data file including 3 image flags -------------------------------------------------------------------------- */ + AtomVec::data_atom(coord,imagetmp,values); + int ilocal = atom->nlocal-1; -void AtomVecSpin::pack_data(double **buf) -{ - int nlocal = atom->nlocal; - for (int i = 0; i < nlocal; i++) { - buf[i][0] = ubuf(tag[i]).d; - buf[i][1] = ubuf(type[i]).d; - buf[i][2] = sp[i][3]; - buf[i][3] = x[i][0]; - buf[i][4] = x[i][1]; - buf[i][5] = x[i][2]; - buf[i][6] = sp[i][0]; - buf[i][7] = sp[i][1]; - buf[i][8] = sp[i][2]; - buf[i][9] = ubuf((image[i] & IMGMASK) - IMGMAX).d; - buf[i][10] = ubuf((image[i] >> IMGBITS & IMGMASK) - IMGMAX).d; - buf[i][11] = ubuf((image[i] >> IMG2BITS) - IMGMAX).d; - } -} - -/* ---------------------------------------------------------------------- - pack hybrid atom info for data file -------------------------------------------------------------------------- */ - -int AtomVecSpin::pack_data_hybrid(int i, double *buf) -{ - buf[0] = sp[i][3]; - buf[1] = sp[i][0]; - buf[2] = sp[i][1]; - buf[3] = sp[i][2]; - return 4; -} - -/* ---------------------------------------------------------------------- - write atom info to data file including 3 image flags -------------------------------------------------------------------------- */ - -void AtomVecSpin::write_data(FILE *fp, int n, double **buf) -{ - for (int i = 0; i < n; i++) - fprintf(fp,TAGINT_FORMAT \ - " %d %-1.16e %-1.16e %-1.16e %-1.16e %-1.16e %-1.16e " - "%-1.16e %d %d %d\n", - (tagint) ubuf(buf[i][0]).i,(int) ubuf(buf[i][1]).i, - buf[i][2],buf[i][3],buf[i][4], - buf[i][5],buf[i][6],buf[i][7],buf[i][8], - (int) ubuf(buf[i][9]).i,(int) ubuf(buf[i][10]).i, - (int) ubuf(buf[i][11]).i); -} - -/* ---------------------------------------------------------------------- - write hybrid atom info to data file -------------------------------------------------------------------------- */ - -int AtomVecSpin::write_data_hybrid(FILE *fp, double *buf) -{ - fprintf(fp," %-1.16e %-1.16e %-1.16e %-1.16e",buf[0],buf[1],buf[2],buf[3]); - return 4; -} - -/* ---------------------------------------------------------------------- - return # of bytes of allocated memory -------------------------------------------------------------------------- */ - -bigint AtomVecSpin::memory_usage() -{ - bigint bytes = 0; - - if (atom->memcheck("tag")) bytes += memory->usage(tag,nmax); - if (atom->memcheck("type")) bytes += memory->usage(type,nmax); - if (atom->memcheck("mask")) bytes += memory->usage(mask,nmax); - if (atom->memcheck("image")) bytes += memory->usage(image,nmax); - if (atom->memcheck("x")) bytes += memory->usage(x,nmax,3); - if (atom->memcheck("v")) bytes += memory->usage(v,nmax,3); - if (atom->memcheck("f")) bytes += memory->usage(f,nmax*comm->nthreads,3); - - if (atom->memcheck("sp")) bytes += memory->usage(sp,nmax,4); - if (atom->memcheck("fm")) bytes += memory->usage(fm,nmax*comm->nthreads,3); - if (atom->memcheck("fm_long")) bytes += memory->usage(fm_long,nmax*comm->nthreads,3); - - return bytes; + double *sp = atom->sp[ilocal]; + double inorm = 1.0/sqrt(sp[0]*sp[0] + sp[1]*sp[1] + sp[2]*sp[2]); + sp[0] *= inorm; + sp[1] *= inorm; + sp[2] *= inorm; } /* ---------------------------------------------------------------------- @@ -959,5 +89,3 @@ void AtomVecSpin::force_clear(int /*n*/, size_t nbytes) memset(&atom->fm[0][0],0,3*nbytes); memset(&atom->fm_long[0][0],0,3*nbytes); } - - diff --git a/src/SPIN/atom_vec_spin.h b/src/SPIN/atom_vec_spin.h index 6ce2c9dc7d..ca92cccc2e 100644 --- a/src/SPIN/atom_vec_spin.h +++ b/src/SPIN/atom_vec_spin.h @@ -27,53 +27,8 @@ namespace LAMMPS_NS { class AtomVecSpin : public AtomVec { public: AtomVecSpin(class LAMMPS *); - void grow(int); - void grow_reset(); - void copy(int, int, int); - int pack_comm(int, int *, double *, int, int *); - int pack_comm_vel(int, int *, double *, int, int *); - int pack_comm_hybrid(int, int *, double *); - void unpack_comm(int, int, double *); - void unpack_comm_vel(int, int, double *); - int unpack_comm_hybrid(int, int, double *); - int pack_reverse(int, int, double *); - void unpack_reverse(int, int *, double *); - int pack_border(int, int *, double *, int, int *); - int pack_border_vel(int, int *, double *, int, int *); - int pack_border_hybrid(int, int *, double *); - void unpack_border(int, int, double *); - void unpack_border_vel(int, int, double *); - int unpack_border_hybrid(int, int, double *); - int pack_exchange(int, double *); - int unpack_exchange(double *); - int size_restart(); - int pack_restart(int, double *); - int unpack_restart(double *); - void create_atom(int, double *); void data_atom(double *, imageint, char **); - int data_atom_hybrid(int, char **); - void pack_data(double **); - int pack_data_hybrid(int, double *); - void write_data(FILE *, int, double **); - int write_data_hybrid(FILE *, double *); - bigint memory_usage(); - - // clear magnetic and mechanic forces - void force_clear(int, size_t); - - - private: - tagint *tag; - int *type,*mask; - imageint *image; - double **x,**v,**f; // lattice quantities - - // spin quantities - double **sp; // sp[i][0-2] direction of the spin i - // sp[i][3] atomic magnetic moment of the spin i - double **fm; // fm[i][0-2] direction of magnetic precession - double **fm_long; // storage of long-range spin prec. components }; } @@ -83,13 +38,4 @@ class AtomVecSpin : public AtomVec { /* ERROR/WARNING messages: -E: Per-processor system is too big - -The number of owned atoms plus ghost atoms on a single -processor must fit in 32-bit integer. - -E: Invalid atom type in Atoms section of data file - -Atom types must range from 1 to specified # of types. - */ diff --git a/src/atom.cpp b/src/atom.cpp index de5d30930a..7f1a5a6022 100644 --- a/src/atom.cpp +++ b/src/atom.cpp @@ -44,9 +44,11 @@ using namespace LAMMPS_NS; using namespace MathConst; #define DELTA 1 -#define DELTA_MEMSTR 1024 +#define DELTA_PERATOM 64 #define EPSILON 1.0e-6 +enum{DOUBLE,INT,BIGINT}; + /* ---------------------------------------------------------------------- */ Atom::Atom(LAMMPS *lmp) : Pointers(lmp) @@ -66,6 +68,11 @@ Atom::Atom(LAMMPS *lmp) : Pointers(lmp) binhead = NULL; next = permute = NULL; + // data structure with info on per-atom vectors/arrays + + nperatom = maxperatom = 0; + peratom = NULL; + // initialize atom arrays // customize by adding new array @@ -193,6 +200,10 @@ Atom::Atom(LAMMPS *lmp) : Pointers(lmp) pdscale = 1.0; + // initialize peratom data structure + + peratom_create(); + // ntype-length arrays mass = NULL; @@ -245,6 +256,12 @@ Atom::~Atom() memory->destroy(next); memory->destroy(permute); + // delete peratom data struct + + for (int i = 0; i < nperatom; i++) + delete [] peratom[i].name; + memory->sfree(peratom); + // delete atom arrays // customize by adding new array @@ -403,6 +420,175 @@ void Atom::settings(Atom *old) } } +/* ---------------------------------------------------------------------- + one-time creation of peratom data structure +------------------------------------------------------------------------- */ + +void Atom::peratom_create() +{ + for (int i = 0; i < nperatom; i++) + delete [] peratom[i].name; + memory->sfree(peratom); + + peratom = NULL; + nperatom = maxperatom = 0; + + // customize: add new peratom variables here, order does not matter + // register tagint & imageint variables as INT or BIGINT + + int tagintsize = INT; + if (sizeof(tagint) == 8) tagintsize = BIGINT; + int imageintsize = INT; + if (sizeof(imageint) == 8) imageintsize = BIGINT; + + add_peratom("id",&tag,tagintsize,0); + add_peratom("type",&type,INT,0); + add_peratom("mask",&mask,INT,0); + add_peratom("image",&image,imageintsize,0); + + add_peratom("x",&x,DOUBLE,3); + add_peratom("v",&v,DOUBLE,3); + add_peratom("f",&f,DOUBLE,3,1); // set per-thread flag + + add_peratom("rmass",&rmass,DOUBLE,0); + add_peratom("q",&q,DOUBLE,0); + add_peratom("mu",&mu,DOUBLE,4); + add_peratom("mu3",&mu,DOUBLE,3); // just first 3 values of mu[4] + + // finite size particles + + add_peratom("radius",&radius,DOUBLE,0); + add_peratom("omega",&omega,DOUBLE,3); + add_peratom("amgmom",&angmom,DOUBLE,3); + add_peratom("torque",&torque,DOUBLE,3,1); // set per-thread flag + + add_peratom("ellipsoid",&ellipsoid,INT,0); + add_peratom("line",&line,INT,0); + add_peratom("tri",&tri,INT,0); + add_peratom("body",&body,INT,0); + + // MOLECULE package + + add_peratom("molecule",&molecule,tagintsize,0); + add_peratom("molindex",&molindex,INT,0); + add_peratom("molatom",&molatom,INT,0); + + add_peratom("nspecial",&nspecial,INT,3); + add_peratom_vary("special",&special,tagintsize,&maxspecial,&nspecial,3); + + add_peratom("num_bond",&num_bond,INT,0); + add_peratom_vary("bond_type",&bond_type,INT,&bond_per_atom,&num_bond); + add_peratom_vary("bond_atom",&bond_atom,tagintsize,&bond_per_atom,&num_bond); + + add_peratom("num_angle",&num_angle,INT,0); + add_peratom_vary("angle_type",&angle_type,INT,&angle_per_atom,&num_angle); + add_peratom_vary("angle_atom1",&angle_atom1,tagintsize, + &angle_per_atom,&num_angle); + add_peratom_vary("angle_atom2",&angle_atom2,tagintsize, + &angle_per_atom,&num_angle); + add_peratom_vary("angle_atom3",&angle_atom3,tagintsize, + &angle_per_atom,&num_angle); + + add_peratom("num_dihedral",&num_dihedral,INT,0); + add_peratom_vary("dihedral_type",&dihedral_type,INT, + &dihedral_per_atom,&num_dihedral); + add_peratom_vary("dihedral_atom1",&dihedral_atom1,tagintsize, + &dihedral_per_atom,&num_dihedral); + add_peratom_vary("dihedral_atom2",&dihedral_atom2,tagintsize, + &dihedral_per_atom,&num_dihedral); + add_peratom_vary("dihedral_atom3",&dihedral_atom3,tagintsize, + &dihedral_per_atom,&num_dihedral); + add_peratom_vary("dihedral_atom4",&dihedral_atom4,tagintsize, + &dihedral_per_atom,&num_dihedral); + + add_peratom("num_improper",&num_improper,INT,0); + add_peratom_vary("improper_type",&improper_type,INT, + &improper_per_atom,&num_improper); + add_peratom_vary("improper_atom1",&improper_atom1,tagintsize, + &improper_per_atom,&num_improper); + add_peratom_vary("improper_atom2",&improper_atom2,tagintsize, + &improper_per_atom,&num_improper); + add_peratom_vary("improper_atom3",&improper_atom3,tagintsize, + &improper_per_atom,&num_improper); + add_peratom_vary("improper_atom4",&improper_atom4,tagintsize, + &improper_per_atom,&num_improper); + + // PERI package + + add_peratom("vfrac",&vfrac,DOUBLE,0); + add_peratom("s0",&s0,DOUBLE,0); + add_peratom("x0",&x0,DOUBLE,3); + + // SPIN package + + add_peratom("sp",&sp,DOUBLE,4); + add_peratom("fm",&fm,DOUBLE,3,1); + add_peratom("fm_long",&fm_long,DOUBLE,3,1); +} + +/* ---------------------------------------------------------------------- + add info for a single per-atom vector/array to PerAtom data struct + cols = 0: per-atom vector + cols = N: static per-atom array with N columns + use add_peratom_vary() when column count varies per atom +------------------------------------------------------------------------- */ + +void Atom::add_peratom(const char *name, void *address, + int datatype, int cols, int threadflag) +{ + if (nperatom == maxperatom) { + maxperatom += DELTA_PERATOM; + peratom = (PerAtom *) + memory->srealloc(peratom,maxperatom*sizeof(PerAtom),"atom:peratom"); + } + + int n = strlen(name) + 1; + peratom[nperatom].name = new char[n]; + strcpy(peratom[nperatom].name,name); + peratom[nperatom].address = address; + peratom[nperatom].datatype = datatype; + peratom[nperatom].cols = cols; + peratom[nperatom].threadflag = threadflag; + peratom[nperatom].address_length = NULL; + + nperatom++; +} + +/* ---------------------------------------------------------------------- + add info for a single per-atom array to PerAtom data struct + cols = address of int variable with max columns per atom + for collength = 0: + length = address of peratom vector with column count per atom + e.g. num_bond + for collength = N: + length = address of peratom array with column count per atom + collength = index of column (1 to N) in peratom array with count + e.g. nspecial +------------------------------------------------------------------------- */ + +void Atom::add_peratom_vary(const char *name, void *address, + int datatype, int *cols, void *length, int collength) +{ + if (nperatom == maxperatom) { + maxperatom += DELTA_PERATOM; + peratom = (PerAtom *) + memory->srealloc(peratom,maxperatom*sizeof(PerAtom),"atom:peratom"); + } + + int n = strlen(name) + 1; + peratom[nperatom].name = new char[n]; + strcpy(peratom[nperatom].name,name); + peratom[nperatom].address = address; + peratom[nperatom].datatype = datatype; + peratom[nperatom].cols = -1; + peratom[nperatom].threadflag = 0; + peratom[nperatom].address_maxcols = cols; + peratom[nperatom].address_length = length; + peratom[nperatom].collength = collength; + + nperatom++; +} + /* ---------------------------------------------------------------------- create an AtomVec style called from lammps.cpp, input script, restart file, replicate @@ -2296,11 +2482,7 @@ void *Atom::extract(char *name) bigint Atom::memory_usage() { - memlength = DELTA_MEMSTR; - memory->create(memstr,memlength,"atom:memstr"); - memstr[0] = '\0'; bigint bytes = avec->memory_usage(); - memory->destroy(memstr); bytes += max_same*sizeof(int); if (map_style == 1) @@ -2316,31 +2498,3 @@ bigint Atom::memory_usage() return bytes; } - -/* ---------------------------------------------------------------------- - accumulate per-atom vec names in memstr, padded by spaces - return 1 if padded str is not already in memlist, else 0 -------------------------------------------------------------------------- */ - -int Atom::memcheck(const char *str) -{ - int n = strlen(str) + 3; - char *padded = new char[n]; - strcpy(padded," "); - strcat(padded,str); - strcat(padded," "); - - if (strstr(memstr,padded)) { - delete [] padded; - return 0; - } - - if ((int)strlen(memstr) + n >= memlength) { - memlength += DELTA_MEMSTR; - memory->grow(memstr,memlength,"atom:memstr"); - } - - strcat(memstr,padded); - delete [] padded; - return 1; -} diff --git a/src/atom.h b/src/atom.h index 81f643c007..6cc5dff72a 100644 --- a/src/atom.h +++ b/src/atom.h @@ -38,6 +38,8 @@ class Atom : protected Pointers { bigint nlines; // number of lines bigint ntris; // number of triangles bigint nbodies; // number of bodies + + // system properties bigint nbonds,nangles,ndihedrals,nimpropers; int ntypes,nbondtypes,nangletypes,ndihedraltypes,nimpropertypes; @@ -49,54 +51,67 @@ class Atom : protected Pointers { int nfirst; // # of atoms in first group on this proc char *firstgroupname; // group-ID to store first, NULL if unset - // per-atom arrays - // customize by adding new array + // -------------------------------------------------------------------- + // 1st customization section: customize by adding new per-atom variable + // per-atom vectors and arrays tagint *tag; int *type,*mask; imageint *image; double **x,**v,**f; - tagint *molecule; - int *molindex,*molatom; - + double *rmass; double *q,**mu; + + // finite-size particles + + double *radius; double **omega,**angmom,**torque; - double *radius,*rmass; int *ellipsoid,*line,*tri,*body; - // SPIN package + // MOLECULE package - double **sp; - double **fm; - double **fm_long; + tagint *molecule; + int *molindex,*molatom; + + int **nspecial; // 0,1,2 = cumulative # of 1-2,1-3,1-4 neighs + tagint **special; // IDs of 1-2,1-3,1-4 neighs of each atom + int maxspecial; // special[nlocal][maxspecial] + + int *num_bond; + int **bond_type; + tagint **bond_atom; + + int *num_angle; + int **angle_type; + tagint **angle_atom1,**angle_atom2,**angle_atom3; + + int *num_dihedral; + int **dihedral_type; + tagint **dihedral_atom1,**dihedral_atom2,**dihedral_atom3,**dihedral_atom4; + + int *num_improper; + int **improper_type; + tagint **improper_atom1,**improper_atom2,**improper_atom3,**improper_atom4; // PERI package double *vfrac,*s0; double **x0; - // USER-EFF and USER-AWPMD packages + // SPIN package + + double **sp; + double **fm; + double **fm_long; + + // USER-AWPMD and USER_EFF packages int *spin; double *eradius,*ervel,*erforce,*ervelforce; double *cs,*csforce,*vforce; int *etag; - // USER-SPH package - - double *rho,*drho,*e,*de,*cv; - double **vest; - - // USER-SMD package - - double *contact_radius; - double **smd_data_9; - double **smd_stress; - double *eff_plastic_strain; - double *eff_plastic_strain_rate; - double *damage; - // USER-DPD package double *uCond,*uMech,*uChem,*uCGnew,*uCG; @@ -111,37 +126,24 @@ class Atom : protected Pointers { double *edpd_cv; // heat capacity int cc_species; - // molecular info - - int **nspecial; // 0,1,2 = cumulative # of 1-2,1-3,1-4 neighs - tagint **special; // IDs of 1-2,1-3,1-4 neighs of each atom - int maxspecial; // special[nlocal][maxspecial] - - int *num_bond; - int **bond_type; - tagint **bond_atom; - - int *num_angle; - int **angle_type; - tagint **angle_atom1,**angle_atom2,**angle_atom3; - - int *num_dihedral; - int **dihedral_type; - tagint **dihedral_atom1,**dihedral_atom2,**dihedral_atom3,**dihedral_atom4; + // USER-SMD package - int *num_improper; - int **improper_type; - tagint **improper_atom1,**improper_atom2,**improper_atom3,**improper_atom4; + double *contact_radius; + double **smd_data_9; + double **smd_stress; + double *eff_plastic_strain; + double *eff_plastic_strain_rate; + double *damage; - // custom arrays used by fix property/atom + // USER-SPH package - int **ivector; - double **dvector; - char **iname,**dname; - int nivector,ndvector; + double *rho,*drho,*e,*de,*cv; + double **vest; - // atom style and per-atom array existence flags - // customize by adding new flag + // -------------------------------------------------------------------- + // 1st customization section: customize by adding new flag + // existence flags for per-atom vectors and arrays + // 1 if variable is used, 0 if not int sphere_flag,ellipsoid_flag,line_flag,tri_flag,body_flag; int peri_flag,electron_flag; @@ -156,7 +158,7 @@ class Atom : protected Pointers { int rho_flag,e_flag,cv_flag,vest_flag; int dpd_flag,edpd_flag,tdpd_flag; - //USER-SPIN package + // USER-SPIN package int sp_flag; @@ -175,6 +177,32 @@ class Atom : protected Pointers { double pdscale; + // end of 2 customization sections + // -------------------------------------------------------------------- + + // per-atom data struct describing all per-atom vectors/arrays + + struct PerAtom { + char *name; + void *address; + void *address_length; + int *address_maxcols; + int datatype; + int cols; + int collength; + int threadflag; + }; + + PerAtom *peratom; + int nperatom,maxperatom; + + // custom arrays used by fix property/atom + + int **ivector; + double **dvector; + char **iname,**dname; + int nivector,ndvector; + // molecule templates // each template can be a set of consecutive molecules // each with same ID (stored in molecules) @@ -221,12 +249,17 @@ class Atom : protected Pointers { typedef std::map AtomVecCreatorMap; AtomVecCreatorMap *avec_map; + // -------------------------------------------------------------------- // functions Atom(class LAMMPS *); ~Atom(); void settings(class Atom *); + void peratom_create(); + void add_peratom(const char *, void *, int, int, int threadflag=0); + void add_peratom_vary(const char *, void *, int, int *, + void *, int collength=0); void create_avec(const char *, int, char **, int); virtual class AtomVec *new_avec(const char *, int, int &); void init(); @@ -289,8 +322,10 @@ class Atom : protected Pointers { inline int get_map_size() {return map_tag_max+1;}; inline int get_map_maxarray() {return map_maxarray+1;}; + // NOTE: placeholder method until AtomVec is refactored + int memcheck(const char *) {return 1;} + bigint memory_usage(); - int memcheck(const char *); // functions for global to local ID mapping // map lookup function inlined for efficiency @@ -343,9 +378,6 @@ class Atom : protected Pointers { double bininvx,bininvy,bininvz; // inverse actual bin sizes double bboxlo[3],bboxhi[3]; // bounding box of my sub-domain - int memlength; // allocated size of memstr - char *memstr; // string of array names already counted - void setup_sort_bins(); int next_prime(int); diff --git a/src/atom_vec.cpp b/src/atom_vec.cpp index bc94e36e7a..428117f0db 100644 --- a/src/atom_vec.cpp +++ b/src/atom_vec.cpp @@ -12,18 +12,27 @@ ------------------------------------------------------------------------- */ #include "atom_vec.h" +#include #include #include "atom.h" -#include "force.h" +#include "comm.h" #include "domain.h" +#include "force.h" +#include "modify.h" +#include "fix.h" +#include "math_const.h" +#include "memory.h" #include "error.h" #include "utils.h" using namespace LAMMPS_NS; +using namespace MathConst; #define DELTA 16384 #define DELTA_BONUS 8192 +enum{DOUBLE,INT,BIGINT}; + /* ---------------------------------------------------------------------- */ AtomVec::AtomVec(LAMMPS *lmp) : Pointers(lmp) @@ -39,6 +48,40 @@ AtomVec::AtomVec(LAMMPS *lmp) : Pointers(lmp) nargcopy = 0; argcopy = NULL; + + nthreads = comm->nthreads; + + // peratom variables auto-included in corresponding child style fields string + // these fields cannot be specified in the fields string + // leading/trailing whitespace just facilitates matching in process_args() + + default_grow = " id type mask image x v f "; + default_copy = " id type mask image x v "; + default_comm = " x "; + default_comm_vel = " x v "; + default_reverse = " f "; + default_border = " id type mask x "; + default_border_vel = " id type mask x v "; + default_exchange = " id type mask image x v "; + default_restart = " id type mask image x v "; + default_create = " id type mask image x v "; + default_data_atom = ""; + default_data_vel = " v "; + + // initializations + + init_method(&mgrow); + init_method(&mcopy); + init_method(&mcomm); + init_method(&mcomm_vel); + init_method(&mreverse); + init_method(&mborder); + init_method(&mborder_vel); + init_method(&mexchange); + init_method(&mrestart); + init_method(&mcreate); + init_method(&mdata_atom); + init_method(&mdata_vel); } /* ---------------------------------------------------------------------- */ @@ -47,6 +90,21 @@ AtomVec::~AtomVec() { for (int i = 0; i < nargcopy; i++) delete [] argcopy[i]; delete [] argcopy; + + destroy_method(&mgrow); + destroy_method(&mcopy); + destroy_method(&mcomm); + destroy_method(&mcomm_vel); + destroy_method(&mreverse); + destroy_method(&mborder); + destroy_method(&mborder_vel); + destroy_method(&mexchange); + destroy_method(&mrestart); + destroy_method(&mcreate); + destroy_method(&mdata_atom); + destroy_method(&mdata_vel); + + delete [] threads; } /* ---------------------------------------------------------------------- @@ -87,6 +145,223 @@ void AtomVec::init() error->all(FLERR,"KOKKOS package requires a kokkos enabled atom_style"); } +/* ---------------------------------------------------------------------- + process field strings to initialize data structs for all other methods +------------------------------------------------------------------------- */ + +void AtomVec::setup_fields() +{ + int n,cols; + + if (!fields_data_atom) + error->all(FLERR,"Atom style requires fields_data_atom"); + + // process field strings + // return # of fields and matching index into atom->peratom (in Method struct) + + ngrow = process_fields(fields_grow,default_grow,&mgrow); + ncopy = process_fields(fields_copy,default_copy,&mcopy); + ncomm = process_fields(fields_comm,default_comm,&mcomm); + ncomm_vel = process_fields(fields_comm_vel,default_comm_vel,&mcomm_vel); + nreverse = process_fields(fields_reverse,default_reverse,&mreverse); + nborder = process_fields(fields_border,default_border,&mborder); + nborder_vel = process_fields(fields_border_vel,default_border_vel,&mborder_vel); + nexchange = process_fields(fields_exchange,default_exchange,&mexchange); + nrestart = process_fields(fields_restart,default_restart,&mrestart); + ncreate = process_fields(fields_create,default_create,&mcreate); + ndata_atom = process_fields(fields_data_atom,default_data_atom,&mdata_atom); + ndata_vel = process_fields(fields_data_vel,default_data_vel,&mdata_vel); + + // populate field-based data struct for each method to use + + create_method(ngrow,&mgrow); + create_method(ncopy,&mcopy); + create_method(ncomm,&mcomm); + create_method(ncomm_vel,&mcomm_vel); + create_method(nreverse,&mreverse); + create_method(nborder,&mborder); + create_method(nborder_vel,&mborder_vel); + create_method(nexchange,&mexchange); + create_method(nrestart,&mrestart); + create_method(ncreate,&mcreate); + create_method(ndata_atom,&mdata_atom); + create_method(ndata_vel,&mdata_vel); + + // create threads data struct for grow and memory_usage to use + + threads = new int[ngrow]; + for (int i = 0; i < ngrow; i++) { + Atom::PerAtom *field = &atom->peratom[mgrow.index[i]]; + if (field->threadflag) threads[i] = nthreads; + else threads[i] = 1; + } + + // set style-specific variables + // NOTE: check for others vars in atom_vec.cpp/h ?? + + if (ncomm == 0) comm_x_only = 1; + else comm_x_only = 0; + + if (nreverse == 0) comm_f_only = 1; + else comm_f_only = 0; + + size_forward = 3; + for (n = 0; n < ncomm; n++) { + cols = mcomm.cols[n]; + if (cols == 0) size_forward++; + else size_forward += cols; + } + + size_reverse = 3; + for (n = 0; n < nreverse; n++) { + cols = mreverse.cols[n]; + if (cols == 0) size_reverse++; + else size_reverse += cols; + } + + size_border = 6; + for (n = 0; n < nborder; n++) { + cols = mborder.cols[n]; + if (cols == 0) size_border++; + else size_border += cols; + } + + size_velocity = 3; + for (n = 0; n < ncomm_vel; n++) { + cols = mcomm_vel.cols[n]; + if (cols == 0) size_velocity++; + else size_velocity += cols; + } + + size_data_atom = 0; + for (n = 0; n < ndata_atom; n++) { + cols = mdata_atom.cols[n]; + if (strcmp(atom->peratom[mdata_atom.index[n]].name,"x") == 0) + xcol_data = size_data_atom + 1; + if (cols == 0) size_data_atom++; + else size_data_atom += cols; + } + + size_data_vel = 4; + for (n = 0; n < ndata_vel; n++) { + cols = mdata_vel.cols[n]; + if (cols == 0) size_data_vel++; + else size_data_vel += cols; + } +} + +/* ---------------------------------------------------------------------- + process a single field string +------------------------------------------------------------------------- */ + +int AtomVec::process_fields(char *list, const char *default_list, Method *method) +{ + int i,n; + char match[128]; + + if (list == NULL) { + method->index = NULL; + return 0; + } + + // make copy of list of fields so can tokenize it + + n = strlen(list) + 1; + char *copy = new char[n]; + strcpy(copy,list); + + int nfield = atom->count_words(copy); + int *index = new int[nfield]; + + Atom::PerAtom *peratom = atom->peratom; + int nperatom = atom->nperatom; + + nfield = 0; + char *field = strtok(copy," "); + while (field) { + + // find field in master Atom::peratom list + + for (i = 0; i < nperatom; i++) + if (strcmp(field,peratom[i].name) == 0) break; + if (i == nperatom) error->all(FLERR,"Atom_style unrecognized peratom field"); + index[nfield++] = i; + + // error if field is in default list or appears multiple times + + sprintf(match," %s ",field); + if (strstr(default_list,match)) + error->all(FLERR,"Atom_style repeat of default peratom field"); + + for (i = 0; i < nfield-1; i++) + if (index[i] == index[nfield-1]) + error->all(FLERR,"Atom_style duplicated peratom field"); + + field = strtok(NULL," "); + } + + delete [] copy; + + method->index = index; + return nfield; +} + +/* ---------------------------------------------------------------------- + create a method data structs for processing fields +------------------------------------------------------------------------- */ + +void AtomVec::create_method(int nfield, Method *method) +{ + method->pdata = new void*[nfield]; + method->datatype = new int[nfield]; + method->cols = new int[nfield]; + method->maxcols = new int*[nfield]; + method->collength = new int[nfield]; + method->plength = new void*[nfield]; + + for (int i = 0; i < nfield; i++) { + Atom::PerAtom *field = &atom->peratom[method->index[i]]; + method->pdata[i] = (void *) field->address; + method->datatype[i] = field->datatype; + method->cols[i] = field->cols; + if (method->cols[i] < 0) { + method->maxcols[i] = field->address_maxcols; + method->collength[i] = field->collength; + method->plength[i] = field->address_length; + } + } +} + +/* ---------------------------------------------------------------------- + free memory in a method data structs +------------------------------------------------------------------------- */ + +void AtomVec::init_method(Method *method) +{ + method->pdata = NULL; + method->datatype = NULL; + method->cols = NULL; + method->maxcols = NULL; + method->collength = NULL; + method->plength = NULL; + method->index = NULL; +} + +/* ---------------------------------------------------------------------- + free memory in a method data structs +------------------------------------------------------------------------- */ + +void AtomVec::destroy_method(Method *method) +{ + delete [] method->pdata; + delete [] method->datatype; + delete [] method->cols; + delete [] method->maxcols; + delete [] method->collength; + delete [] method->plength; + delete [] method->index; +} + /* ---------------------------------------------------------------------- grow nmax so it is a multiple of DELTA ------------------------------------------------------------------------- */ @@ -108,16 +383,1700 @@ int AtomVec::grow_nmax_bonus(int nmax_bonus) return nmax_bonus; } +/* ---------------------------------------------------------------------- + grow atom arrays + n = 0 grows arrays by a chunk + n > 0 allocates arrays to size n +------------------------------------------------------------------------- */ + +void AtomVec::grow(int n) +{ + int i,datatype,cols,maxcols; + void *pdata,*plength; + + if (n == 0) grow_nmax(); + else nmax = n; + atom->nmax = nmax; + if (nmax < 0 || nmax > MAXSMALLINT) + error->one(FLERR,"Per-processor system is too big"); + + tag = memory->grow(atom->tag,nmax,"atom:tag"); + type = memory->grow(atom->type,nmax,"atom:type"); + mask = memory->grow(atom->mask,nmax,"atom:mask"); + image = memory->grow(atom->image,nmax,"atom:image"); + x = memory->grow(atom->x,nmax,3,"atom:x"); + v = memory->grow(atom->v,nmax,3,"atom:v"); + f = memory->grow(atom->f,nmax*nthreads,3,"atom:f"); + + for (i = 0; i < ngrow; i++) { + pdata = mgrow.pdata[i]; + datatype = mgrow.datatype[i]; + cols = mgrow.cols[i]; + if (datatype == DOUBLE) { + if (cols == 0) + memory->grow(*((double **) pdata),nmax*threads[i],"atom:dvec"); + else if (cols > 0) + memory->grow(*((double ***) pdata),nmax*threads[i],cols,"atom:darray"); + else { + maxcols = *(mgrow.maxcols[i]); + memory->grow(*((double ***) pdata),nmax*threads[i],maxcols,"atom:darray"); + } + } else if (datatype == INT) { + if (cols == 0) + memory->grow(*((int **) pdata),nmax*threads[i],"atom:ivec"); + else if (cols > 0) + memory->grow(*((int ***) pdata),nmax*threads[i],cols,"atom:iarray"); + else { + maxcols = *(mgrow.maxcols[i]); + memory->grow(*((int ***) pdata),nmax*threads[i],maxcols,"atom:iarray"); + } + } else if (datatype == BIGINT) { + if (cols == 0) + memory->grow(*((bigint **) pdata),nmax*threads[i],"atom:bvec"); + else if (cols > 0) + memory->grow(*((bigint ***) pdata),nmax*threads[i],cols,"atom:barray"); + else { + maxcols = *(mgrow.maxcols[i]); + memory->grow(*((int ***) pdata),nmax*threads[i],maxcols,"atom:barray"); + } + } + } + + for (int iextra = 0; iextra < atom->nextra_grow; iextra++) + modify->fix[atom->extra_grow[iextra]]->grow_arrays(nmax); +} + +/* ---------------------------------------------------------------------- + reset local array ptrs +------------------------------------------------------------------------- */ + +void AtomVec::grow_reset() +{ + // NOTE: is this method needed anymore + tag = atom->tag; type = atom->type; + mask = atom->mask; image = atom->image; + x = atom->x; v = atom->v; f = atom->f; +} + +/* ---------------------------------------------------------------------- + copy atom I info to atom J +------------------------------------------------------------------------- */ + +void AtomVec::copy(int i, int j, int delflag) +{ + int m,n,datatype,cols,collength,ncols; + void *pdata,*plength; + + tag[j] = tag[i]; + type[j] = type[i]; + mask[j] = mask[i]; + image[j] = image[i]; + x[j][0] = x[i][0]; + x[j][1] = x[i][1]; + x[j][2] = x[i][2]; + v[j][0] = v[i][0]; + v[j][1] = v[i][1]; + v[j][2] = v[i][2]; + + if (ncopy) { + for (n = 0; n < ncopy; n++) { + pdata = mcopy.pdata[n]; + datatype = mcopy.datatype[n]; + cols = mcopy.cols[n]; + if (datatype == DOUBLE) { + if (cols == 0) { + double *vec = *((double **) pdata); + vec[j] = vec[i]; + } else if (cols > 0) { + double **array = *((double ***) pdata); + for (m = 0; m < cols; m++) + array[j][m] = array[i][m]; + } else { + double **array = *((double ***) pdata); + collength = mcopy.collength[n]; + plength = mcopy.plength[n]; + if (collength) ncols = (*((int ***) plength))[i][collength-1]; + else ncols = (*((int **) plength))[i]; + for (m = 0; m < ncols; m++) + array[j][m] = array[i][m]; + } + } else if (datatype == INT) { + if (cols == 0) { + int *vec = *((int **) pdata); + vec[j] = vec[i]; + } else if (cols > 0) { + int **array = *((int ***) pdata); + for (m = 0; m < cols; m++) + array[j][m] = array[i][m]; + } else { + int **array = *((int ***) pdata); + collength = mcopy.collength[n]; + plength = mcopy.plength[n]; + if (collength) ncols = (*((int ***) plength))[i][collength-1]; + else ncols = (*((int **) plength))[i]; + for (m = 0; m < ncols; m++) + array[j][m] = array[i][m]; + } + } else if (datatype == BIGINT) { + if (cols == 0) { + bigint *vec = *((bigint **) pdata); + vec[j] = vec[i]; + } else if (cols > 0) { + bigint **array = *((bigint ***) pdata); + for (m = 0; m < cols; m++) + array[j][m] = array[i][m]; + } else { + bigint **array = *((bigint ***) pdata); + collength = mcopy.collength[n]; + plength = mcopy.plength[n]; + if (collength) ncols = (*((int ***) plength))[i][collength-1]; + else ncols = (*((int **) plength))[i]; + for (m = 0; m < ncols; m++) + array[j][m] = array[i][m]; + } + } + } + } + + if (atom->nextra_grow) + for (int iextra = 0; iextra < atom->nextra_grow; iextra++) + modify->fix[atom->extra_grow[iextra]]->copy_arrays(i,j,delflag); +} + +/* ---------------------------------------------------------------------- */ + +int AtomVec::pack_comm(int n, int *list, double *buf, + int pbc_flag, int *pbc) +{ + int i,j,m,mm,nn,datatype,cols; + double dx,dy,dz; + void *pdata; + + m = 0; + if (pbc_flag == 0) { + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = x[j][0]; + buf[m++] = x[j][1]; + buf[m++] = x[j][2]; + } + } else { + if (domain->triclinic == 0) { + dx = pbc[0]*domain->xprd; + dy = pbc[1]*domain->yprd; + dz = pbc[2]*domain->zprd; + } else { + dx = pbc[0]*domain->xprd + pbc[5]*domain->xy + pbc[4]*domain->xz; + dy = pbc[1]*domain->yprd + pbc[3]*domain->yz; + dz = pbc[2]*domain->zprd; + } + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = x[j][0] + dx; + buf[m++] = x[j][1] + dy; + buf[m++] = x[j][2] + dz; + } + } + + if (comm) { + for (nn = 0; nn < ncomm; nn++) { + pdata = mcomm.pdata[nn]; + datatype = mcomm.datatype[nn]; + cols = mcomm.cols[nn]; + if (datatype == DOUBLE) { + if (cols == 0) { + double *vec = *((double **) pdata); + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = vec[j]; + } + } else { + double **array = *((double ***) pdata); + for (i = 0; i < n; i++) { + j = list[i]; + for (mm = 0; mm < cols; mm++) + buf[m++] = array[j][mm]; + } + } + } else if (datatype == INT) { + if (cols == 0) { + int *vec = *((int **) pdata); + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = ubuf(vec[j]).d; + } + } else { + int **array = *((int ***) pdata); + for (i = 0; i < n; i++) { + j = list[i]; + for (mm = 0; mm < cols; mm++) + buf[m++] = ubuf(array[j][mm]).d; + } + } + } else if (datatype == BIGINT) { + if (cols == 0) { + bigint *vec = *((bigint **) pdata); + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = ubuf(vec[j]).d; + } + } else { + bigint **array = *((bigint ***) pdata); + for (i = 0; i < n; i++) { + j = list[i]; + for (mm = 0; mm < cols; mm++) + buf[m++] = ubuf(array[j][mm]).d; + } + } + } + } + } + + return m; +} + +/* ---------------------------------------------------------------------- */ + +int AtomVec::pack_comm_vel(int n, int *list, double *buf, + int pbc_flag, int *pbc) +{ + int i,j,m,mm,nn,datatype,cols; + double dx,dy,dz,dvx,dvy,dvz; + void *pdata; + + m = 0; + if (pbc_flag == 0) { + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = x[j][0]; + buf[m++] = x[j][1]; + buf[m++] = x[j][2]; + buf[m++] = v[j][0]; + buf[m++] = v[j][1]; + buf[m++] = v[j][2]; + } + } else { + if (domain->triclinic == 0) { + dx = pbc[0]*domain->xprd; + dy = pbc[1]*domain->yprd; + dz = pbc[2]*domain->zprd; + } else { + dx = pbc[0]*domain->xprd + pbc[5]*domain->xy + pbc[4]*domain->xz; + dy = pbc[1]*domain->yprd + pbc[3]*domain->yz; + dz = pbc[2]*domain->zprd; + } + if (!deform_vremap) { + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = x[j][0] + dx; + buf[m++] = x[j][1] + dy; + buf[m++] = x[j][2] + dz; + buf[m++] = v[j][0]; + buf[m++] = v[j][1]; + buf[m++] = v[j][2]; + } + } else { + dvx = pbc[0]*h_rate[0] + pbc[5]*h_rate[5] + pbc[4]*h_rate[4]; + dvy = pbc[1]*h_rate[1] + pbc[3]*h_rate[3]; + dvz = pbc[2]*h_rate[2]; + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = x[j][0] + dx; + buf[m++] = x[j][1] + dy; + buf[m++] = x[j][2] + dz; + if (mask[i] & deform_groupbit) { + buf[m++] = v[j][0] + dvx; + buf[m++] = v[j][1] + dvy; + buf[m++] = v[j][2] + dvz; + } else { + buf[m++] = v[j][0]; + buf[m++] = v[j][1]; + buf[m++] = v[j][2]; + } + } + } + } + + if (ncomm_vel) { + for (nn = 0; nn < ncomm_vel; nn++) { + pdata = mcomm_vel.pdata[nn]; + datatype = mcomm_vel.datatype[nn]; + cols = mcomm_vel.cols[nn]; + if (datatype == DOUBLE) { + if (cols == 0) { + double *vec = *((double **) pdata); + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = vec[j]; + } + } else { + double **array = *((double ***) pdata); + for (i = 0; i < n; i++) { + j = list[i]; + for (mm = 0; mm < cols; mm++) + buf[m++] = array[j][mm]; + } + } + } else if (datatype == INT) { + if (cols == 0) { + int *vec = *((int **) pdata); + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = ubuf(vec[j]).d; + } + } else { + int **array = *((int ***) pdata); + for (i = 0; i < n; i++) { + j = list[i]; + for (mm = 0; mm < cols; mm++) + buf[m++] = ubuf(array[j][mm]).d; + } + } + } else if (datatype == BIGINT) { + if (cols == 0) { + bigint *vec = *((bigint **) pdata); + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = ubuf(vec[j]).d; + } + } else { + bigint **array = *((bigint ***) pdata); + for (i = 0; i < n; i++) { + j = list[i]; + for (mm = 0; mm < cols; mm++) + buf[m++] = ubuf(array[j][mm]).d; + } + } + } + } + } + + return m; +} + +/* ---------------------------------------------------------------------- */ + +void AtomVec::unpack_comm(int n, int first, double *buf) +{ + int i,m,last,mm,nn,datatype,cols; + void *pdata; + + m = 0; + last = first + n; + for (i = first; i < last; i++) { + x[i][0] = buf[m++]; + x[i][1] = buf[m++]; + x[i][2] = buf[m++]; + } + + if (ncomm) { + for (nn = 0; nn < ncomm; nn++) { + pdata = mcomm.pdata[nn]; + datatype = mcomm.datatype[nn]; + cols = mcomm.cols[nn]; + if (datatype == DOUBLE) { + if (cols == 0) { + double *vec = *((double **) pdata); + for (i = first; i < last; i++) + vec[i] = buf[m++]; + } else { + double **array = *((double ***) pdata); + for (i = first; i < last; i++) + for (mm = 0; mm < cols; mm++) + array[i][mm] = buf[m++]; + } + } else if (datatype == INT) { + if (cols == 0) { + int *vec = *((int **) pdata); + for (i = first; i < last; i++) + vec[i] = ubuf(buf[m++]).i; + } else { + int **array = *((int ***) pdata); + for (i = first; i < last; i++) + for (mm = 0; mm < cols; mm++) + array[i][mm] = (int) ubuf(buf[m++]).i; + } + } else if (datatype == BIGINT) { + if (cols == 0) { + bigint *vec = *((bigint **) pdata); + for (i = first; i < last; i++) + vec[i] = (bigint) ubuf(buf[m++]).i; + } else { + bigint **array = *((bigint ***) pdata); + for (i = first; i < last; i++) + for (mm = 0; mm < cols; mm++) + array[i][mm] = (bigint) ubuf(buf[m++]).i; + } + } + } + } +} + +/* ---------------------------------------------------------------------- */ + +void AtomVec::unpack_comm_vel(int n, int first, double *buf) +{ + int i,m,last,mm,nn,datatype,cols; + void *pdata; + + m = 0; + last = first + n; + for (i = first; i < last; i++) { + x[i][0] = buf[m++]; + x[i][1] = buf[m++]; + x[i][2] = buf[m++]; + v[i][0] = buf[m++]; + v[i][1] = buf[m++]; + v[i][2] = buf[m++]; + } + + if (ncomm_vel) { + for (nn = 0; nn < ncomm_vel; nn++) { + pdata = mcomm_vel.pdata[nn]; + datatype = mcomm_vel.datatype[nn]; + cols = mcomm_vel.cols[nn]; + if (datatype == DOUBLE) { + if (cols == 0) { + double *vec = *((double **) pdata); + for (i = first; i < last; i++) + vec[i] = buf[m++]; + } else { + double **array = *((double ***) pdata); + for (i = first; i < last; i++) + for (mm = 0; mm < cols; mm++) + array[i][mm] = buf[m++]; + } + } else if (datatype == INT) { + if (cols == 0) { + int *vec = *((int **) pdata); + for (i = first; i < last; i++) + vec[i] = ubuf(buf[m++]).i; + } else { + int **array = *((int ***) pdata); + for (i = first; i < last; i++) + for (mm = 0; mm < cols; mm++) + array[i][mm] = (int) ubuf(buf[m++]).i; + } + } else if (datatype == BIGINT) { + if (cols == 0) { + bigint *vec = *((bigint **) pdata); + for (i = first; i < last; i++) + vec[i] = (bigint) ubuf(buf[m++]).i; + } else { + bigint **array = *((bigint ***) pdata); + for (i = first; i < last; i++) + for (mm = 0; mm < cols; mm++) + array[i][mm] = (bigint) ubuf(buf[m++]).i; + } + } + } + } +} + +/* ---------------------------------------------------------------------- */ + +int AtomVec::pack_reverse(int n, int first, double *buf) +{ + int i,m,last,mm,nn,datatype,cols; + void *pdata; + + m = 0; + last = first + n; + for (i = first; i < last; i++) { + buf[m++] = f[i][0]; + buf[m++] = f[i][1]; + buf[m++] = f[i][2]; + } + + if (nreverse) { + for (nn = 0; nn < nreverse; nn++) { + pdata = mreverse.pdata[nn]; + datatype = mreverse.datatype[nn]; + cols = mreverse.cols[nn]; + if (datatype == DOUBLE) { + if (cols == 0) { + double *vec = *((double **) pdata); + for (i = first; i < last; i++) { + buf[m++] = vec[i]; + } + } else { + double **array = *((double ***) pdata); + for (i = first; i < last; i++) { + for (mm = 0; mm < cols; mm++) + buf[m++] = array[i][mm]; + } + } + } else if (datatype == INT) { + if (cols == 0) { + int *vec = *((int **) pdata); + for (i = first; i < last; i++) { + buf[m++] = ubuf(vec[i]).d; + } + } else { + int **array = *((int ***) pdata); + for (i = first; i < last; i++) { + for (mm = 0; mm < cols; mm++) + buf[m++] = ubuf(array[i][mm]).d; + } + } + } else if (datatype == BIGINT) { + if (cols == 0) { + bigint *vec = *((bigint **) pdata); + for (i = first; i < last; i++) { + buf[m++] = ubuf(vec[i]).d; + } + } else { + bigint **array = *((bigint ***) pdata); + for (i = first; i < last; i++) { + for (mm = 0; mm < cols; mm++) + buf[m++] = ubuf(array[i][mm]).d; + } + } + } + } + } + + return m; +} + +/* ---------------------------------------------------------------------- */ + +void AtomVec::unpack_reverse(int n, int *list, double *buf) +{ + int i,j,m,mm,nn,datatype,cols; + void *pdata; + + m = 0; + for (i = 0; i < n; i++) { + j = list[i]; + f[j][0] += buf[m++]; + f[j][1] += buf[m++]; + f[j][2] += buf[m++]; + } + + if (nreverse) { + for (nn = 0; nn < nreverse; nn++) { + pdata = mreverse.pdata[nn]; + datatype = mreverse.datatype[nn]; + cols = mreverse.cols[nn]; + if (datatype == DOUBLE) { + if (cols == 0) { + double *vec = *((double **) pdata); + for (i = 0; i < n; i++) { + j = list[i]; + vec[j] += buf[m++]; + } + } else { + double **array = *((double ***) pdata); + for (i = 0; i < n; i++) { + j = list[i]; + for (mm = 0; mm < cols; mm++) + array[j][mm] += buf[m++]; + } + } + } else if (datatype == INT) { + if (cols == 0) { + int *vec = *((int **) pdata); + for (i = 0; i < n; i++) { + j = list[i]; + vec[j] += buf[m++]; + } + } else { + int **array = *((int ***) pdata); + for (i = 0; i < n; i++) { + j = list[i]; + for (mm = 0; mm < cols; mm++) + array[j][mm] += buf[m++]; + } + } + } else if (datatype == BIGINT) { + if (cols == 0) { + bigint *vec = *((bigint **) pdata); + for (i = 0; i < n; i++) { + j = list[i]; + vec[j] += buf[m++]; + } + } else { + bigint **array = *((bigint ***) pdata); + for (i = 0; i < n; i++) { + j = list[i]; + for (mm = 0; mm < cols; mm++) + array[j][mm] += buf[m++]; + } + } + } + } + } +} + +/* ---------------------------------------------------------------------- */ + +int AtomVec::pack_border(int n, int *list, double *buf, int pbc_flag, int *pbc) +{ + int i,j,m,mm,nn,datatype,cols; + double dx,dy,dz; + void *pdata; + + m = 0; + if (pbc_flag == 0) { + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = x[j][0]; + buf[m++] = x[j][1]; + buf[m++] = x[j][2]; + buf[m++] = ubuf(tag[j]).d; + buf[m++] = ubuf(type[j]).d; + buf[m++] = ubuf(mask[j]).d; + } + } else { + if (domain->triclinic == 0) { + dx = pbc[0]*domain->xprd; + dy = pbc[1]*domain->yprd; + dz = pbc[2]*domain->zprd; + } else { + dx = pbc[0]; + dy = pbc[1]; + dz = pbc[2]; + } + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = x[j][0] + dx; + buf[m++] = x[j][1] + dy; + buf[m++] = x[j][2] + dz; + buf[m++] = ubuf(tag[j]).d; + buf[m++] = ubuf(type[j]).d; + buf[m++] = ubuf(mask[j]).d; + } + } + + if (nborder) { + for (nn = 0; nn < nborder; nn++) { + pdata = mborder.pdata[nn]; + datatype = mborder.datatype[nn]; + cols = mborder.cols[nn]; + if (datatype == DOUBLE) { + if (cols == 0) { + double *vec = *((double **) pdata); + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = vec[j]; + } + } else { + double **array = *((double ***) pdata); + for (i = 0; i < n; i++) { + j = list[i]; + for (mm = 0; mm < cols; mm++) + buf[m++] = array[j][mm]; + } + } + } else if (datatype == INT) { + if (cols == 0) { + int *vec = *((int **) pdata); + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = ubuf(vec[j]).d; + } + } else { + int **array = *((int ***) pdata); + for (i = 0; i < n; i++) { + j = list[i]; + for (mm = 0; mm < cols; mm++) + buf[m++] = ubuf(array[j][mm]).d; + } + } + } else if (datatype == BIGINT) { + if (cols == 0) { + bigint *vec = *((bigint **) pdata); + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = ubuf(vec[j]).d; + } + } else { + bigint **array = *((bigint ***) pdata); + for (i = 0; i < n; i++) { + j = list[i]; + for (mm = 0; mm < cols; mm++) + buf[m++] = ubuf(array[j][mm]).d; + } + } + } + } + } + + if (atom->nextra_border) + for (int iextra = 0; iextra < atom->nextra_border; iextra++) + m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); + + return m; +} + +/* ---------------------------------------------------------------------- */ + +int AtomVec::pack_border_vel(int n, int *list, double *buf, + int pbc_flag, int *pbc) +{ + int i,j,m,mm,nn,datatype,cols; + double dx,dy,dz,dvx,dvy,dvz; + void *pdata; + + m = 0; + if (pbc_flag == 0) { + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = x[j][0]; + buf[m++] = x[j][1]; + buf[m++] = x[j][2]; + buf[m++] = ubuf(tag[j]).d; + buf[m++] = ubuf(type[j]).d; + buf[m++] = ubuf(mask[j]).d; + buf[m++] = v[j][0]; + buf[m++] = v[j][1]; + buf[m++] = v[j][2]; + } + } else { + if (domain->triclinic == 0) { + dx = pbc[0]*domain->xprd; + dy = pbc[1]*domain->yprd; + dz = pbc[2]*domain->zprd; + } else { + dx = pbc[0]; + dy = pbc[1]; + dz = pbc[2]; + } + if (!deform_vremap) { + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = x[j][0] + dx; + buf[m++] = x[j][1] + dy; + buf[m++] = x[j][2] + dz; + buf[m++] = ubuf(tag[j]).d; + buf[m++] = ubuf(type[j]).d; + buf[m++] = ubuf(mask[j]).d; + buf[m++] = v[j][0]; + buf[m++] = v[j][1]; + buf[m++] = v[j][2]; + } + } else { + dvx = pbc[0]*h_rate[0] + pbc[5]*h_rate[5] + pbc[4]*h_rate[4]; + dvy = pbc[1]*h_rate[1] + pbc[3]*h_rate[3]; + dvz = pbc[2]*h_rate[2]; + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = x[j][0] + dx; + buf[m++] = x[j][1] + dy; + buf[m++] = x[j][2] + dz; + buf[m++] = ubuf(tag[j]).d; + buf[m++] = ubuf(type[j]).d; + buf[m++] = ubuf(mask[j]).d; + if (mask[i] & deform_groupbit) { + buf[m++] = v[j][0] + dvx; + buf[m++] = v[j][1] + dvy; + buf[m++] = v[j][2] + dvz; + } else { + buf[m++] = v[j][0]; + buf[m++] = v[j][1]; + buf[m++] = v[j][2]; + } + } + } + } + + if (nborder_vel) { + for (nn = 0; nn < nborder_vel; nn++) { + pdata = mborder_vel.pdata[nn]; + datatype = mborder_vel.datatype[nn]; + cols = mborder_vel.cols[nn]; + if (datatype == DOUBLE) { + if (cols == 0) { + double *vec = *((double **) pdata); + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = vec[j]; + } + } else { + double **array = *((double ***) pdata); + for (i = 0; i < n; i++) { + j = list[i]; + for (mm = 0; mm < cols; mm++) + buf[m++] = array[j][mm]; + } + } + } else if (datatype == INT) { + if (cols == 0) { + int *vec = *((int **) pdata); + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = ubuf(vec[j]).d; + } + } else { + int **array = *((int ***) pdata); + for (i = 0; i < n; i++) { + j = list[i]; + for (mm = 0; mm < cols; mm++) + buf[m++] = ubuf(array[j][mm]).d; + } + } + } else if (datatype == BIGINT) { + if (cols == 0) { + bigint *vec = *((bigint **) pdata); + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = ubuf(vec[j]).d; + } + } else { + bigint **array = *((bigint ***) pdata); + for (i = 0; i < n; i++) { + j = list[i]; + for (mm = 0; mm < cols; mm++) + buf[m++] = ubuf(array[j][mm]).d; + } + } + } + } + } + + if (atom->nextra_border) + for (int iextra = 0; iextra < atom->nextra_border; iextra++) + m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); + + return m; +} + +/* ---------------------------------------------------------------------- */ + +void AtomVec::unpack_border(int n, int first, double *buf) +{ + int i,m,last,mm,nn,datatype,cols; + void *pdata; + + m = 0; + last = first + n; + for (i = first; i < last; i++) { + if (i == nmax) grow(0); + x[i][0] = buf[m++]; + x[i][1] = buf[m++]; + x[i][2] = buf[m++]; + tag[i] = (tagint) ubuf(buf[m++]).i; + type[i] = (int) ubuf(buf[m++]).i; + mask[i] = (int) ubuf(buf[m++]).i; + } + + if (nborder) { + for (nn = 0; nn < nborder; nn++) { + pdata = mborder.pdata[nn]; + datatype = mborder.datatype[nn]; + cols = mborder.cols[nn]; + if (datatype == DOUBLE) { + if (cols == 0) { + double *vec = *((double **) pdata); + for (i = first; i < last; i++) + vec[i] = buf[m++]; + } else { + double **array = *((double ***) pdata); + for (i = first; i < last; i++) + for (mm = 0; mm < cols; mm++) + array[i][mm] = buf[m++]; + } + } else if (datatype == INT) { + if (cols == 0) { + int *vec = *((int **) pdata); + for (i = first; i < last; i++) + vec[i] = ubuf(buf[m++]).i; + } else { + int **array = *((int ***) pdata); + for (i = first; i < last; i++) + for (mm = 0; mm < cols; mm++) + array[i][mm] = (int) ubuf(buf[m++]).i; + } + } else if (datatype == BIGINT) { + if (cols == 0) { + bigint *vec = *((bigint **) pdata); + for (i = first; i < last; i++) + vec[i] = (bigint) ubuf(buf[m++]).i; + } else { + bigint **array = *((bigint ***) pdata); + for (i = first; i < last; i++) + for (mm = 0; mm < cols; mm++) + array[i][mm] = (bigint) ubuf(buf[m++]).i; + } + } + } + } + + if (atom->nextra_border) + for (int iextra = 0; iextra < atom->nextra_border; iextra++) + m += modify->fix[atom->extra_border[iextra]]-> + unpack_border(n,first,&buf[m]); +} + +/* ---------------------------------------------------------------------- */ + +void AtomVec::unpack_border_vel(int n, int first, double *buf) +{ + int i,m,last,mm,nn,datatype,cols; + void *pdata; + + m = 0; + last = first + n; + for (i = first; i < last; i++) { + if (i == nmax) grow(0); + x[i][0] = buf[m++]; + x[i][1] = buf[m++]; + x[i][2] = buf[m++]; + tag[i] = (tagint) ubuf(buf[m++]).i; + type[i] = (int) ubuf(buf[m++]).i; + mask[i] = (int) ubuf(buf[m++]).i; + v[i][0] = buf[m++]; + v[i][1] = buf[m++]; + v[i][2] = buf[m++]; + } + + if (nborder_vel) { + for (nn = 0; nn < nborder_vel; nn++) { + pdata = mborder_vel.pdata[nn]; + datatype = mborder_vel.datatype[nn]; + cols = mborder_vel.cols[nn]; + if (datatype == DOUBLE) { + if (cols == 0) { + double *vec = *((double **) pdata); + for (i = first; i < last; i++) + vec[i] = buf[m++]; + } else { + double **array = *((double ***) pdata); + for (i = first; i < last; i++) + for (mm = 0; mm < cols; mm++) + array[i][mm] = buf[m++]; + } + } else if (datatype == INT) { + if (cols == 0) { + int *vec = *((int **) pdata); + for (i = first; i < last; i++) + vec[i] = ubuf(buf[m++]).i; + } else { + int **array = *((int ***) pdata); + for (i = first; i < last; i++) + for (mm = 0; mm < cols; mm++) + array[i][mm] = (int) ubuf(buf[m++]).i; + } + } else if (datatype == BIGINT) { + if (cols == 0) { + bigint *vec = *((bigint **) pdata); + for (i = first; i < last; i++) + vec[i] = (bigint) ubuf(buf[m++]).i; + } else { + bigint **array = *((bigint ***) pdata); + for (i = first; i < last; i++) + for (mm = 0; mm < cols; mm++) + array[i][mm] = (bigint) ubuf(buf[m++]).i; + } + } + } + } + + if (atom->nextra_border) + for (int iextra = 0; iextra < atom->nextra_border; iextra++) + m += modify->fix[atom->extra_border[iextra]]-> + unpack_border(n,first,&buf[m]); +} + +/* ---------------------------------------------------------------------- + pack data for atom I for sending to another proc + xyz must be 1st 3 values, so comm::exchange() can test on them +------------------------------------------------------------------------- */ + +int AtomVec::pack_exchange(int i, double *buf) +{ + int mm,nn,datatype,cols,collength,ncols; + void *pdata,*plength; + + int m = 1; + buf[m++] = x[i][0]; + buf[m++] = x[i][1]; + buf[m++] = x[i][2]; + buf[m++] = v[i][0]; + buf[m++] = v[i][1]; + buf[m++] = v[i][2]; + buf[m++] = ubuf(tag[i]).d; + buf[m++] = ubuf(type[i]).d; + buf[m++] = ubuf(mask[i]).d; + buf[m++] = ubuf(image[i]).d; + + if (nexchange) { + for (nn = 0; nn < nexchange; nn++) { + pdata = mexchange.pdata[nn]; + datatype = mexchange.datatype[nn]; + cols = mexchange.cols[nn]; + if (datatype == DOUBLE) { + if (cols == 0) { + double *vec = *((double **) pdata); + buf[m++] = vec[i]; + } else if (cols > 0) { + double **array = *((double ***) pdata); + for (mm = 0; mm < cols; mm++) + buf[m++] = array[i][mm]; + } else { + double **array = *((double ***) pdata); + collength = mexchange.collength[nn]; + plength = mexchange.plength[nn]; + if (collength) ncols = (*((int ***) plength))[i][collength-1]; + else ncols = (*((int **) plength))[i]; + for (mm = 0; mm < ncols; mm++) + buf[m++] = array[i][mm]; + } + } if (datatype == INT) { + if (cols == 0) { + int *vec = *((int **) pdata); + buf[m++] = ubuf(vec[i]).d; + } else if (cols > 0) { + int **array = *((int ***) pdata); + for (mm = 0; mm < cols; mm++) + buf[m++] = ubuf(array[i][mm]).d; + } else { + int **array = *((int ***) pdata); + collength = mexchange.collength[nn]; + plength = mexchange.plength[nn]; + if (collength) ncols = (*((int ***) plength))[i][collength-1]; + else ncols = (*((int **) plength))[i]; + for (mm = 0; mm < ncols; mm++) + buf[m++] = ubuf(array[i][mm]).d; + } + } if (datatype == BIGINT) { + if (cols == 0) { + bigint *vec = *((bigint **) pdata); + buf[m++] = ubuf(vec[i]).d; + } else if (cols > 0) { + bigint **array = *((bigint ***) pdata); + for (mm = 0; mm < cols; mm++) + buf[m++] = ubuf(array[i][mm]).d; + } else { + bigint **array = *((bigint ***) pdata); + collength = mexchange.collength[nn]; + plength = mexchange.plength[nn]; + if (collength) ncols = (*((int ***) plength))[i][collength-1]; + else ncols = (*((int **) plength))[i]; + for (mm = 0; mm < ncols; mm++) + buf[m++] = ubuf(array[i][mm]).d; + } + } + } + } + + if (atom->nextra_grow) + for (int iextra = 0; iextra < atom->nextra_grow; iextra++) + m += modify->fix[atom->extra_grow[iextra]]->pack_exchange(i,&buf[m]); + + buf[0] = m; + return m; +} + +/* ---------------------------------------------------------------------- */ + +int AtomVec::unpack_exchange(double *buf) +{ + int mm,nn,datatype,cols,collength,ncols; + void *pdata,*plength; + + int nlocal = atom->nlocal; + if (nlocal == nmax) grow(0); + + int m = 1; + x[nlocal][0] = buf[m++]; + x[nlocal][1] = buf[m++]; + x[nlocal][2] = buf[m++]; + v[nlocal][0] = buf[m++]; + v[nlocal][1] = buf[m++]; + v[nlocal][2] = buf[m++]; + tag[nlocal] = (tagint) ubuf(buf[m++]).i; + type[nlocal] = (int) ubuf(buf[m++]).i; + mask[nlocal] = (int) ubuf(buf[m++]).i; + image[nlocal] = (imageint) ubuf(buf[m++]).i; + + if (nexchange) { + for (nn = 0; nn < nexchange; nn++) { + pdata = mexchange.pdata[nn]; + datatype = mexchange.datatype[nn]; + cols = mexchange.cols[nn]; + if (datatype == DOUBLE) { + if (cols == 0) { + double *vec = *((double **) pdata); + vec[nlocal] = buf[m++]; + } else if (cols > 0) { + double **array = *((double ***) pdata); + for (mm = 0; mm < cols; mm++) + array[nlocal][mm] = buf[m++]; + } else { + double **array = *((double ***) pdata); + collength = mexchange.collength[nn]; + plength = mexchange.plength[nn]; + if (collength) ncols = (*((int ***) plength))[nlocal][collength-1]; + else ncols = (*((int **) plength))[nlocal]; + for (mm = 0; mm < ncols; mm++) + array[nlocal][mm] = buf[m++]; + } + } else if (datatype == INT) { + if (cols == 0) { + int *vec = *((int **) pdata); + vec[nlocal] = ubuf(buf[m++]).i; + } else if (cols > 0) { + int **array = *((int ***) pdata); + for (mm = 0; mm < cols; mm++) + array[nlocal][mm] = (int) ubuf(buf[m++]).i; + } else { + int **array = *((int ***) pdata); + collength = mexchange.collength[nn]; + plength = mexchange.plength[nn]; + if (collength) ncols = (*((int ***) plength))[nlocal][collength-1]; + else ncols = (*((int **) plength))[nlocal]; + for (mm = 0; mm < ncols; mm++) + array[nlocal][mm] = (int) ubuf(buf[m++]).i; + } + } else if (datatype == BIGINT) { + if (cols == 0) { + bigint *vec = *((bigint **) pdata); + vec[nlocal] = (bigint) ubuf(buf[m++]).i; + } else if (cols > 0) { + bigint **array = *((bigint ***) pdata); + for (mm = 0; mm < cols; mm++) + array[nlocal][mm] = (bigint) ubuf(buf[m++]).i; + } else { + bigint **array = *((bigint ***) pdata); + collength = mexchange.collength[nn]; + plength = mexchange.plength[nn]; + if (collength) ncols = (*((int ***) plength))[nlocal][collength-1]; + else ncols = (*((int **) plength))[nlocal]; + for (mm = 0; mm < ncols; mm++) + array[nlocal][mm] = (bigint) ubuf(buf[m++]).i; + } + } + } + } + + if (atom->nextra_grow) + for (int iextra = 0; iextra < atom->nextra_grow; iextra++) + m += modify->fix[atom->extra_grow[iextra]]-> + unpack_exchange(nlocal,&buf[m]); + + atom->nlocal++; + return m; +} + +/* ---------------------------------------------------------------------- + size of restart data for all atoms owned by this proc + include extra data stored by fixes +------------------------------------------------------------------------- */ + +int AtomVec::size_restart() +{ + int i,nn,cols,collength,ncols; + void *plength; + + // NOTE: need to worry about overflow of returned int ?? + + int nlocal = atom->nlocal; + + // 11 = length storage + id,type,mask,image,x,v + + int n = 11 * nlocal; + + if (nrestart) { + for (nn = 0; nn < nrestart; nn++) { + cols = mrestart.cols[i]; + if (cols == 0) n += nlocal; + else if (cols > 0) n += cols*nlocal; + else { + collength = mrestart.collength[nn]; + plength = mrestart.plength[nn]; + for (i = 0; i < nlocal; i++) { + if (collength) ncols = (*((int ***) plength))[nlocal][collength-1]; + else ncols = (*((int **) plength))[nlocal]; + n += ncols; + } + } + } + } + + if (atom->nextra_restart) + for (int iextra = 0; iextra < atom->nextra_restart; iextra++) + for (i = 0; i < nlocal; i++) + n += modify->fix[atom->extra_restart[iextra]]->size_restart(i); + + return n; +} + +/* ---------------------------------------------------------------------- + pack atom I's data for restart file including extra quantities + xyz must be 1st 3 values, so that read_restart can test on them + molecular types may be negative, but write as positive +------------------------------------------------------------------------- */ + +int AtomVec::pack_restart(int i, double *buf) +{ + int mm,nn,datatype,cols,collength,ncols; + void *pdata,*plength; + + int m = 1; + buf[m++] = x[i][0]; + buf[m++] = x[i][1]; + buf[m++] = x[i][2]; + buf[m++] = ubuf(tag[i]).d; + buf[m++] = ubuf(type[i]).d; + buf[m++] = ubuf(mask[i]).d; + buf[m++] = ubuf(image[i]).d; + buf[m++] = v[i][0]; + buf[m++] = v[i][1]; + buf[m++] = v[i][2]; + + for (nn = 0; nn < nrestart; nn++) { + pdata = mrestart.pdata[nn]; + datatype = mrestart.datatype[nn]; + cols = mrestart.cols[nn]; + if (datatype == DOUBLE) { + if (cols == 0) { + double *vec = *((double **) pdata); + buf[m++] = vec[i]; + } else if (ncols > 0) { + double **array = *((double ***) pdata); + for (mm = 0; mm < cols; mm++) + buf[m++] = array[i][mm]; + } else { + double **array = *((double ***) pdata); + collength = mexchange.collength[nn]; + plength = mexchange.plength[nn]; + if (collength) ncols = (*((int ***) plength))[i][collength-1]; + else ncols = (*((int **) plength))[i]; + for (mm = 0; mm < ncols; mm++) + buf[m++] = array[i][mm]; + } + } else if (datatype == INT) { + if (cols == 0) { + int *vec = *((int **) pdata); + buf[m++] = ubuf(vec[i]).d; + } else if (cols > 0) { + int **array = *((int ***) pdata); + for (mm = 0; mm < cols; mm++) + buf[m++] = ubuf(array[i][mm]).d; + } else { + int **array = *((int ***) pdata); + collength = mexchange.collength[nn]; + plength = mexchange.plength[nn]; + if (collength) ncols = (*((int ***) plength))[i][collength-1]; + else ncols = (*((int **) plength))[i]; + for (mm = 0; mm < ncols; mm++) + buf[m++] = ubuf(array[i][mm]).d; + } + } else if (datatype == BIGINT) { + if (cols == 0) { + bigint *vec = *((bigint **) pdata); + buf[m++] = ubuf(vec[i]).d; + } else if (ncols > 0) { + bigint **array = *((bigint ***) pdata); + for (mm = 0; mm < cols; mm++) + buf[m++] = ubuf(array[i][mm]).d; + } else { + bigint **array = *((bigint ***) pdata); + collength = mexchange.collength[nn]; + plength = mexchange.plength[nn]; + if (collength) ncols = (*((int ***) plength))[i][collength-1]; + else ncols = (*((int **) plength))[i]; + for (mm = 0; mm < ncols; mm++) + buf[m++] = ubuf(array[i][mm]).d; + } + } + } + + for (int iextra = 0; iextra < atom->nextra_restart; iextra++) + m += modify->fix[atom->extra_restart[iextra]]->pack_restart(i,&buf[m]); + + buf[0] = m; + return m; +} + +/* ---------------------------------------------------------------------- + unpack data for one atom from restart file including extra quantities +------------------------------------------------------------------------- */ + +int AtomVec::unpack_restart(double *buf) +{ + int mm,nn,datatype,cols,collength,ncols; + void *pdata,*plength; + + int nlocal = atom->nlocal; + if (nlocal == nmax) { + grow(0); + if (atom->nextra_store) + memory->grow(atom->extra,nmax,atom->nextra_store,"atom:extra"); + } + + int m = 1; + x[nlocal][0] = buf[m++]; + x[nlocal][1] = buf[m++]; + x[nlocal][2] = buf[m++]; + tag[nlocal] = (tagint) ubuf(buf[m++]).i; + type[nlocal] = (int) ubuf(buf[m++]).i; + mask[nlocal] = (int) ubuf(buf[m++]).i; + image[nlocal] = (imageint) ubuf(buf[m++]).i; + v[nlocal][0] = buf[m++]; + v[nlocal][1] = buf[m++]; + v[nlocal][2] = buf[m++]; + + for (nn = 0; nn < nrestart; nn++) { + pdata = mrestart.pdata[nn]; + datatype = mrestart.datatype[nn]; + cols = mrestart.cols[nn]; + if (datatype == DOUBLE) { + if (cols == 0) { + double *vec = *((double **) pdata); + vec[nlocal] = buf[m++]; + } else if (cols > 0) { + double **array = *((double ***) pdata); + for (mm = 0; mm < cols; mm++) + array[nlocal][mm] = buf[m++]; + } else { + double **array = *((double ***) pdata); + collength = mexchange.collength[nn]; + plength = mexchange.plength[nn]; + if (collength) ncols = (*((int ***) plength))[nlocal][collength-1]; + else ncols = (*((int **) plength))[nlocal]; + for (mm = 0; mm < ncols; mm++) + array[nlocal][mm] = buf[m++]; + } + } else if (datatype == INT) { + if (cols == 0) { + int *vec = *((int **) pdata); + vec[nlocal] = ubuf(buf[m++]).i; + } else if (cols > 0) { + int **array = *((int ***) pdata); + for (mm = 0; mm < cols; mm++) + array[nlocal][mm] = (int) ubuf(buf[m++]).i; + } else { + int **array = *((int ***) pdata); + collength = mexchange.collength[nn]; + plength = mexchange.plength[nn]; + if (collength) ncols = (*((int ***) plength))[nlocal][collength-1]; + else ncols = (*((int **) plength))[nlocal]; + for (mm = 0; mm < ncols; mm++) + array[nlocal][mm] = (int) ubuf(buf[m++]).i; + } + } else if (datatype == BIGINT) { + if (cols == 0) { + bigint *vec = *((bigint **) pdata); + vec[nlocal] = (bigint) ubuf(buf[m++]).i; + } else if (cols > 0) { + bigint **array = *((bigint ***) pdata); + for (mm = 0; mm < cols; mm++) + array[nlocal][mm] = (bigint) ubuf(buf[m++]).i; + } else { + int **array = *((int ***) pdata); + collength = mexchange.collength[nn]; + plength = mexchange.plength[nn]; + if (collength) ncols = (*((int ***) plength))[nlocal][collength-1]; + else ncols = (*((int **) plength))[nlocal]; + for (mm = 0; mm < ncols; mm++) + array[nlocal][mm] = (bigint) ubuf(buf[m++]).i; + } + } + } + + double **extra = atom->extra; + if (atom->nextra_store) { + int size = static_cast (buf[0]) - m; + for (int i = 0; i < size; i++) extra[nlocal][i] = buf[m++]; + } + + atom->nlocal++; + return m; +} + +/* ---------------------------------------------------------------------- + create one atom of itype at coord + set other values to defaults +------------------------------------------------------------------------- */ + +void AtomVec::create_atom(int itype, double *coord) +{ + int m,n,datatype,cols; + void *pdata; + + int nlocal = atom->nlocal; + if (nlocal == nmax) grow(0); + + tag[nlocal] = 0; + type[nlocal] = itype; + x[nlocal][0] = coord[0]; + x[nlocal][1] = coord[1]; + x[nlocal][2] = coord[2]; + mask[nlocal] = 1; + image[nlocal] = ((imageint) IMGMAX << IMG2BITS) | + ((imageint) IMGMAX << IMGBITS) | IMGMAX; + v[nlocal][0] = 0.0; + v[nlocal][1] = 0.0; + v[nlocal][2] = 0.0; + + // special-case initialization for some fields + + for (n = 0; n < ncreate; n++) { + pdata = mcreate.pdata[n]; + datatype = mcreate.datatype[n]; + cols = mcreate.cols[n]; + if (datatype == DOUBLE) { + if (cols == 0) { + double *vec = *((double **) pdata); + vec[nlocal] = 0.0; + } else { + double **array = *((double ***) pdata); + for (m = 0; m < cols; m++) + array[nlocal][m] = 0.0; + } + } else if (datatype == INT) { + if (cols == 0) { + int *vec = *((int **) pdata); + vec[nlocal] = 0; + } else { + int **array = *((int ***) pdata); + for (m = 0; m < cols; m++) + array[nlocal][m] = 0; + } + } else if (datatype == BIGINT) { + if (cols == 0) { + bigint *vec = *((bigint **) pdata); + vec[nlocal] = 0; + } else { + bigint **array = *((bigint ***) pdata); + for (m = 0; m < cols; m++) + array[nlocal][m] = 0; + } + } + } + + atom->nlocal++; +} + +/* ---------------------------------------------------------------------- + unpack one line from Atoms section of data file + initialize other atom quantities +------------------------------------------------------------------------- */ + +void AtomVec::data_atom(double *coord, imageint imagetmp, char **values) +{ + int m,n,datatype,cols; + void *pdata; + + int nlocal = atom->nlocal; + if (nlocal == nmax) grow(0); + + x[nlocal][0] = coord[0]; + x[nlocal][1] = coord[1]; + x[nlocal][2] = coord[2]; + mask[nlocal] = 1; + image[nlocal] = imagetmp; + v[nlocal][0] = 0.0; + v[nlocal][1] = 0.0; + v[nlocal][2] = 0.0; + + int ivalue = 0; + for (n = 0; n < ndata_atom; n++) { + pdata = mdata_atom.pdata[n]; + datatype = mdata_atom.datatype[n]; + cols = mdata_atom.cols[n]; + if (datatype == DOUBLE) { + if (cols == 0) { + double *vec = *((double **) pdata); + vec[nlocal] = utils::numeric(FLERR,values[ivalue++],true,lmp); + } else { + double **array = *((double ***) pdata); + if (array == atom->x) { // already set by coord arg + ivalue += cols; + continue; + } + for (m = 0; m < cols; m++) + array[nlocal][m] = utils::numeric(FLERR,values[ivalue++],true,lmp); + } + } else if (datatype == INT) { + if (cols == 0) { + int *vec = *((int **) pdata); + vec[nlocal] = utils::inumeric(FLERR,values[ivalue++],true,lmp); + } else { + int **array = *((int ***) pdata); + for (m = 0; m < cols; m++) + array[nlocal][m] = utils::inumeric(FLERR,values[ivalue++],true,lmp); + } + } else if (datatype == BIGINT) { + if (cols == 0) { + bigint *vec = *((bigint **) pdata); + vec[nlocal] = utils::bnumeric(FLERR,values[ivalue++],true,lmp); + } else { + bigint **array = *((bigint ***) pdata); + for (m = 0; m < cols; m++) + array[nlocal][m] = utils::bnumeric(FLERR,values[ivalue++],true,lmp); + } + } + } + + // error checks applicable to all styles + + if (atom->tag[nlocal] <= 0) + error->one(FLERR,"Invalid atom ID in Atoms section of data file"); + if (atom->type[nlocal] <= 0 || atom->type[nlocal] > atom->ntypes) + error->one(FLERR,"Invalid atom type in Atoms section of data file"); + + atom->nlocal++; +} + +/* ---------------------------------------------------------------------- + pack atom info for data file including 3 image flags +------------------------------------------------------------------------- */ + +void AtomVec::pack_data(double **buf) +{ + int i,j,m,n,datatype,cols; + void *pdata; + + int nlocal = atom->nlocal; + for (int i = 0; i < nlocal; i++) { + j = 0; + for (n = 0; n < ndata_atom; n++) { + pdata = mdata_atom.pdata[n]; + datatype = mdata_atom.datatype[n]; + cols = mdata_atom.cols[n]; + if (datatype == DOUBLE) { + if (cols == 0) { + double *vec = *((double **) pdata); + buf[i][j++] = vec[i]; + } else { + double **array = *((double ***) pdata); + for (m = 0; m < cols; m++) + buf[i][j++] = array[i][m]; + } + } else if (datatype == INT) { + if (cols == 0) { + int *vec = *((int **) pdata); + buf[i][j++] = ubuf(vec[i]).d; + } else { + int **array = *((int ***) pdata); + for (m = 0; m < cols; m++) + buf[i][j++] = ubuf(array[i][m]).d; + } + } else if (datatype == BIGINT) { + if (cols == 0) { + bigint *vec = *((bigint **) pdata); + buf[i][j++] = ubuf(vec[i]).d; + } else { + bigint **array = *((bigint ***) pdata); + for (m = 0; m < cols; m++) + buf[i][j++] = ubuf(array[i][m]).d; + } + } + } + + buf[i][j++] = ubuf((image[i] & IMGMASK) - IMGMAX).d; + buf[i][j++] = ubuf((image[i] >> IMGBITS & IMGMASK) - IMGMAX).d; + buf[i][j++] = ubuf((image[i] >> IMG2BITS) - IMGMAX).d; + } +} + +/* ---------------------------------------------------------------------- + write atom info to data file + id is first field, 3 image flags are final fields +------------------------------------------------------------------------- */ + +void AtomVec::write_data(FILE *fp, int n, double **buf) +{ + int i,j,m,nn,datatype,cols; + void *pdata; + + for (i = 0; i < n; i++) { + fprintf(fp,TAGINT_FORMAT,(tagint) ubuf(buf[i][0]).i); + + j = 1; + for (nn = 1; nn < ndata_atom; nn++) { + pdata = mdata_atom.pdata[nn]; + datatype = mdata_atom.datatype[nn]; + cols = mdata_atom.cols[nn]; + if (datatype == DOUBLE) { + if (cols == 0) { + double *vec = *((double **) pdata); + fprintf(fp," %-1.16e",buf[i][j++]); + } else { + double **array = *((double ***) pdata); + for (m = 0; m < cols; m++) + fprintf(fp," %-1.16e",buf[i][j++]); + } + } else if (datatype == INT) { + if (cols == 0) { + int *vec = *((int **) pdata); + fprintf(fp," %d",(int) ubuf(buf[i][j++]).i); + } else { + int **array = *((int ***) pdata); + for (m = 0; m < cols; m++) + fprintf(fp," %d",(int) ubuf(buf[i][j++]).i); + } + } else if (datatype == BIGINT) { + if (cols == 0) { + bigint *vec = *((bigint **) pdata); + fprintf(fp," " BIGINT_FORMAT,(bigint) ubuf(buf[i][j++]).i); + } else { + bigint **array = *((bigint ***) pdata); + for (m = 0; m < cols; m++) + fprintf(fp," " BIGINT_FORMAT,(bigint) ubuf(buf[i][j++]).i); + } + } + } + + fprintf(fp," %d %d %d\n", + (int) ubuf(buf[i][j]).i, + (int) ubuf(buf[i][j+1]).i, + (int) ubuf(buf[i][j+2]).i); + } +} + /* ---------------------------------------------------------------------- unpack one line from Velocities section of data file ------------------------------------------------------------------------- */ -void AtomVec::data_vel(int m, char **values) +void AtomVec::data_vel(int ilocal, char **values) { + int m,n,datatype,cols; + void *pdata; + double **v = atom->v; - v[m][0] = utils::numeric(FLERR,values[0],true,lmp); - v[m][1] = utils::numeric(FLERR,values[1],true,lmp); - v[m][2] = utils::numeric(FLERR,values[2],true,lmp); + v[ilocal][0] = utils::numeric(FLERR,values[0],true,lmp); + v[ilocal][1] = utils::numeric(FLERR,values[1],true,lmp); + v[ilocal][2] = utils::numeric(FLERR,values[2],true,lmp); + + int ivalue = 3; + for (n = 0; n < ndata_vel; n++) { + pdata = mdata_vel.pdata[n]; + datatype = mdata_vel.datatype[n]; + cols = mdata_vel.cols[n]; + if (datatype == DOUBLE) { + if (cols == 0) { + double *vec = *((double **) pdata); + vec[ilocal] = utils::numeric(FLERR,values[ivalue++],true,lmp); + } else { + double **array = *((double ***) pdata); + for (m = 0; m < cols; m++) + array[ilocal][m] = utils::numeric(FLERR,values[ivalue++],true,lmp); + } + } else if (datatype == INT) { + if (cols == 0) { + int *vec = *((int **) pdata); + vec[ilocal] = utils::inumeric(FLERR,values[ivalue++],true,lmp); + } else { + int **array = *((int ***) pdata); + for (m = 0; m < cols; m++) + array[ilocal][m] = utils::inumeric(FLERR,values[ivalue++],true,lmp); + } + } else if (datatype == BIGINT) { + if (cols == 0) { + bigint *vec = *((bigint **) pdata); + vec[ilocal] = utils::bnumeric(FLERR,values[ivalue++],true,lmp); + } else { + bigint **array = *((bigint ***) pdata); + for (m = 0; m < cols; m++) + array[ilocal][m] = utils::bnumeric(FLERR,values[ivalue++],true,lmp); + } + } + } } /* ---------------------------------------------------------------------- @@ -126,27 +2085,109 @@ void AtomVec::data_vel(int m, char **values) void AtomVec::pack_vel(double **buf) { + int i,j,m,n,datatype,cols; + void *pdata; + double **v = atom->v; tagint *tag = atom->tag; int nlocal = atom->nlocal; - for (int i = 0; i < nlocal; i++) { + for (i = 0; i < nlocal; i++) { buf[i][0] = ubuf(tag[i]).d; buf[i][1] = v[i][0]; buf[i][2] = v[i][1]; buf[i][3] = v[i][2]; + + j = 4; + if (ndata_vel) { + for (n = 0; n < ndata_vel; n++) { + pdata = mdata_vel.pdata[n]; + datatype = mdata_vel.datatype[n]; + cols = mdata_vel.cols[n]; + if (datatype == DOUBLE) { + if (cols == 0) { + double *vec = *((double **) pdata); + buf[i][j++] = vec[i]; + } else { + double **array = *((double ***) pdata); + for (m = 0; m < cols; m++) + buf[i][j++] = array[i][m]; + } + } else if (datatype == INT) { + if (cols == 0) { + int *vec = *((int **) pdata); + buf[i][j++] = ubuf(vec[i]).d; + } else { + int **array = *((int ***) pdata); + for (m = 0; m < cols; m++) + buf[i][j++] = ubuf(array[i][m]).d; + } + } else if (datatype == BIGINT) { + if (cols == 0) { + bigint *vec = *((bigint **) pdata); + buf[i][j++] = ubuf(vec[i]).d; + } else { + bigint **array = *((bigint ***) pdata); + for (m = 0; m < cols; m++) + buf[i][j++] = ubuf(array[i][m]).d; + } + } + } + } } } /* ---------------------------------------------------------------------- write velocity info to data file + id and velocity vector are first 4 fields ------------------------------------------------------------------------- */ void AtomVec::write_vel(FILE *fp, int n, double **buf) { - for (int i = 0; i < n; i++) + int i,j,m,nn,datatype,cols; + void *pdata; + + for (i = 0; i < n; i++) { fprintf(fp,TAGINT_FORMAT " %-1.16e %-1.16e %-1.16e\n", (tagint) ubuf(buf[i][0]).i,buf[i][1],buf[i][2],buf[i][3]); + + j = 4; + for (nn = 0; nn < ndata_vel; nn++) { + pdata = mdata_vel.pdata[nn]; + datatype = mdata_vel.datatype[nn]; + cols = mdata_vel.cols[nn]; + if (datatype == DOUBLE) { + if (cols == 0) { + double *vec = *((double **) pdata); + fprintf(fp," %-1.16e",buf[i][j++]); + } else { + double **array = *((double ***) pdata); + for (m = 0; m < cols; m++) + fprintf(fp," %-1.16e",buf[i][j++]); + } + } else if (datatype == INT) { + if (cols == 0) { + int *vec = *((int **) pdata); + fprintf(fp," %d",(int) ubuf(buf[i][j++]).i); + } else { + int **array = *((int ***) pdata); + for (m = 0; m < cols; m++) + fprintf(fp," %d",(int) ubuf(buf[i][j++]).i); + } + } else if (datatype == BIGINT) { + if (cols == 0) { + bigint *vec = *((bigint **) pdata); + fprintf(fp," " BIGINT_FORMAT,(bigint) ubuf(buf[i][j++]).i); + } else { + bigint **array = *((bigint ***) pdata); + for (m = 0; m < cols; m++) + fprintf(fp," " BIGINT_FORMAT,(bigint) ubuf(buf[i][j++]).i); + } + } + } + + fprintf(fp,"\n"); + } } /* ---------------------------------------------------------------------- @@ -395,3 +2436,60 @@ void AtomVec::write_improper(FILE *fp, int n, tagint **buf, int index) index++; } } + +/* ---------------------------------------------------------------------- + return # of bytes of allocated memory +------------------------------------------------------------------------- */ + +bigint AtomVec::memory_usage() +{ + int datatype,cols,index,maxcols; + void *pdata; + + bigint bytes = 0; + + bytes += memory->usage(tag,nmax); + bytes += memory->usage(type,nmax); + bytes += memory->usage(mask,nmax); + bytes += memory->usage(image,nmax); + bytes += memory->usage(x,nmax,3); + bytes += memory->usage(v,nmax,3); + bytes += memory->usage(f,nmax*nthreads,3); + + for (int i = 0; i < ngrow; i++) { + pdata = mgrow.pdata[i]; + datatype = mgrow.datatype[i]; + cols = mgrow.cols[i]; + index = mgrow.index[i]; + if (datatype == DOUBLE) { + if (cols == 0) { + bytes += memory->usage(*((double **) pdata),nmax*threads[i]); + } else if (cols > 0) { + bytes += memory->usage(*((double ***) pdata),nmax*threads[i],cols); + } else { + maxcols = *(mgrow.maxcols[i]); + bytes += memory->usage(*((double ***) pdata),nmax*threads[i],maxcols); + } + } else if (datatype == INT) { + if (cols == 0) { + bytes += memory->usage(*((int **) pdata),nmax*threads[i]); + } else if (cols > 0) { + bytes += memory->usage(*((int ***) pdata),nmax*threads[i],cols); + } else { + maxcols = *(mgrow.maxcols[i]); + bytes += memory->usage(*((int ***) pdata),nmax*threads[i],maxcols); + } + } else if (datatype == BIGINT) { + if (cols == 0) { + bytes += memory->usage(*((bigint **) pdata),nmax*threads[i]); + } else if (cols > 0) { + bytes += memory->usage(*((bigint ***) pdata),nmax*threads[i],cols); + } else { + maxcols = *(mgrow.maxcols[i]); + bytes += memory->usage(*((bigint ***) pdata),nmax*threads[i],maxcols); + } + } + } + + return bytes; +} diff --git a/src/atom_vec.h b/src/atom_vec.h index 2b57238c3b..c3551b541d 100644 --- a/src/atom_vec.h +++ b/src/atom_vec.h @@ -55,54 +55,54 @@ class AtomVec : protected Pointers { virtual void process_args(int, char **); virtual void init(); - virtual void grow(int) = 0; - virtual void grow_reset() = 0; - virtual void copy(int, int, int) = 0; - virtual void clear_bonus() {} - virtual void force_clear(int, size_t) {} - - virtual int pack_comm(int, int *, double *, int, int *) = 0; - virtual int pack_comm_vel(int, int *, double *, int, int *) = 0; - virtual int pack_comm_hybrid(int, int *, double *) {return 0;} - virtual void unpack_comm(int, int, double *) = 0; - virtual void unpack_comm_vel(int, int, double *) = 0; - virtual int unpack_comm_hybrid(int, int, double *) {return 0;} - - virtual int pack_reverse(int, int, double *) = 0; - virtual int pack_reverse_hybrid(int, int, double *) {return 0;} - virtual void unpack_reverse(int, int *, double *) = 0; - virtual int unpack_reverse_hybrid(int, int *, double *) {return 0;} - - virtual int pack_border(int, int *, double *, int, int *) = 0; - virtual int pack_border_vel(int, int *, double *, int, int *) = 0; - virtual int pack_border_hybrid(int, int *, double *) {return 0;} - virtual void unpack_border(int, int, double *) = 0; - virtual void unpack_border_vel(int, int, double *) = 0; - virtual int unpack_border_hybrid(int, int, double *) {return 0;} - - virtual int pack_exchange(int, double *) = 0; - virtual int unpack_exchange(double *) = 0; - - virtual int size_restart() = 0; - virtual int pack_restart(int, double *) = 0; - virtual int unpack_restart(double *) = 0; - - virtual void create_atom(int, double *) = 0; - - virtual void data_atom(double *, imageint, char **) = 0; - virtual void data_atom_bonus(int, char **) {} - virtual int data_atom_hybrid(int, char **) {return 0;} - virtual void data_vel(int, char **); - virtual int data_vel_hybrid(int, char **) {return 0;} - - virtual void pack_data(double **) = 0; - virtual int pack_data_hybrid(int, double *) {return 0;} - virtual void write_data(FILE *, int, double **) = 0; - virtual int write_data_hybrid(FILE *, double *) {return 0;} - virtual void pack_vel(double **); - virtual int pack_vel_hybrid(int, double *) {return 0;} - virtual void write_vel(FILE *, int, double **); - virtual int write_vel_hybrid(FILE *, double *) {return 0;} + void grow(int); + void grow_reset(); + void copy(int, int, int); + void clear_bonus() {} + void force_clear(int, size_t) {} + + int pack_comm(int, int *, double *, int, int *); + int pack_comm_vel(int, int *, double *, int, int *); + int pack_comm_hybrid(int, int *, double *) {return 0;} + void unpack_comm(int, int, double *); + void unpack_comm_vel(int, int, double *); + int unpack_comm_hybrid(int, int, double *) {return 0;} + + int pack_reverse(int, int, double *); + int pack_reverse_hybrid(int, int, double *) {return 0;} + void unpack_reverse(int, int *, double *); + int unpack_reverse_hybrid(int, int *, double *) {return 0;} + + int pack_border(int, int *, double *, int, int *); + int pack_border_vel(int, int *, double *, int, int *); + int pack_border_hybrid(int, int *, double *) {return 0;} + void unpack_border(int, int, double *); + void unpack_border_vel(int, int, double *); + int unpack_border_hybrid(int, int, double *) {return 0;} + + int pack_exchange(int, double *); + int unpack_exchange(double *); + + int size_restart(); + virtual int pack_restart(int, double *); + virtual int unpack_restart(double *); + + virtual void create_atom(int, double *); + + virtual void data_atom(double *, imageint, char **); + void data_atom_bonus(int, char **) {} + int data_atom_hybrid(int, char **) {return 0;} + void data_vel(int, char **); + int data_vel_hybrid(int, char **) {return 0;} + + void pack_data(double **); + int pack_data_hybrid(int, double *) {return 0;} + void write_data(FILE *, int, double **); + int write_data_hybrid(FILE *, double *) {return 0;} + void pack_vel(double **); + int pack_vel_hybrid(int, double *) {return 0;} + void write_vel(FILE *, int, double **); + int write_vel_hybrid(FILE *, double *) {return 0;} int pack_bond(tagint **); void write_bond(FILE *, int, tagint **, int); @@ -113,10 +113,10 @@ class AtomVec : protected Pointers { int pack_improper(tagint **); void write_improper(FILE *, int, tagint **, int); - virtual int property_atom(char *) {return -1;} - virtual void pack_property_atom(int, double *, int, int) {} + int property_atom(char *) {return -1;} + void pack_property_atom(int, double *, int, int) {} - virtual bigint memory_usage() = 0; + bigint memory_usage(); protected: int nmax; // local copy of atom->nmax @@ -124,6 +124,47 @@ class AtomVec : protected Pointers { int deform_groupbit; double *h_rate; + tagint *tag; // peratom fields common to all styles + int *type,*mask; + imageint *image; + double **x,**v,**f; + + const char *default_grow,*default_copy; + const char *default_comm,*default_comm_vel,*default_reverse; + const char *default_border,*default_border_vel; + const char *default_exchange,*default_restart; + const char *default_create,*default_data_atom,*default_data_vel; + + char *fields_grow,*fields_copy; + char *fields_comm,*fields_comm_vel,*fields_reverse; + char *fields_border,*fields_border_vel; + char *fields_exchange,*fields_restart; + char *fields_create,*fields_data_atom,*fields_data_vel; + + struct Method { + void **pdata; + int *datatype; + int *cols; + int **maxcols; + int *collength; + void **plength; + int *index; + }; + + Method mgrow,mcopy; + Method mcomm,mcomm_vel,mreverse,mborder,mborder_vel,mexchange,mrestart; + Method mcreate,mdata_atom,mdata_vel; + + int ngrow,ncopy; + int ncomm,ncomm_vel,nreverse,nborder,nborder_vel,nexchange,nrestart; + int ncreate,ndata_atom,ndata_vel; + + // thread info for fields that are duplicated over threads + // used by fields in grow() and memory_usage() + + int nthreads; + int *threads; + // union data struct for packing 32-bit and 64-bit ints into double bufs // this avoids aliasing issues by having 2 pointers (double,int) // to same buf memory @@ -143,8 +184,15 @@ class AtomVec : protected Pointers { ubuf(int arg) : i(arg) {} }; + // local methods + void grow_nmax(); int grow_nmax_bonus(int); + void setup_fields(); + int process_fields(char *, const char *, Method *); + void create_method(int, Method *); + void init_method(Method *); + void destroy_method(Method *); }; } @@ -161,4 +209,13 @@ E: KOKKOS package requires a kokkos enabled atom_style Self-explanatory. +E: Per-processor system is too big + +The number of owned atoms plus ghost atoms on a single +processor must fit in 32-bit integer. + +E: Invalid atom type in Atoms section of data file + +Atom types must range from 1 to specified # of types. + */ diff --git a/src/atom_vec_atomic.cpp b/src/atom_vec_atomic.cpp index 25a28f1668..a283e99081 100644 --- a/src/atom_vec_atomic.cpp +++ b/src/atom_vec_atomic.cpp @@ -12,14 +12,6 @@ ------------------------------------------------------------------------- */ #include "atom_vec_atomic.h" -#include "atom.h" -#include "comm.h" -#include "domain.h" -#include "modify.h" -#include "fix.h" -#include "memory.h" -#include "error.h" -#include "utils.h" using namespace LAMMPS_NS; @@ -30,654 +22,23 @@ AtomVecAtomic::AtomVecAtomic(LAMMPS *lmp) : AtomVec(lmp) molecular = 0; mass_type = 1; - comm_x_only = comm_f_only = 1; - size_forward = 3; - size_reverse = 3; - size_border = 6; - size_velocity = 3; - size_data_atom = 5; - size_data_vel = 4; - xcol_data = 3; -} - -/* ---------------------------------------------------------------------- - grow atom arrays - n = 0 grows arrays by a chunk - n > 0 allocates arrays to size n -------------------------------------------------------------------------- */ - -void AtomVecAtomic::grow(int n) -{ - if (n == 0) grow_nmax(); - else nmax = n; - atom->nmax = nmax; - if (nmax < 0 || nmax > MAXSMALLINT) - error->one(FLERR,"Per-processor system is too big"); - - tag = memory->grow(atom->tag,nmax,"atom:tag"); - type = memory->grow(atom->type,nmax,"atom:type"); - mask = memory->grow(atom->mask,nmax,"atom:mask"); - image = memory->grow(atom->image,nmax,"atom:image"); - x = memory->grow(atom->x,nmax,3,"atom:x"); - v = memory->grow(atom->v,nmax,3,"atom:v"); - f = memory->grow(atom->f,nmax*comm->nthreads,3,"atom:f"); - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - modify->fix[atom->extra_grow[iextra]]->grow_arrays(nmax); -} - -/* ---------------------------------------------------------------------- - reset local array ptrs -------------------------------------------------------------------------- */ - -void AtomVecAtomic::grow_reset() -{ - tag = atom->tag; type = atom->type; - mask = atom->mask; image = atom->image; - x = atom->x; v = atom->v; f = atom->f; -} - -/* ---------------------------------------------------------------------- - copy atom I info to atom J -------------------------------------------------------------------------- */ - -void AtomVecAtomic::copy(int i, int j, int delflag) -{ - tag[j] = tag[i]; - type[j] = type[i]; - mask[j] = mask[i]; - image[j] = image[i]; - x[j][0] = x[i][0]; - x[j][1] = x[i][1]; - x[j][2] = x[i][2]; - v[j][0] = v[i][0]; - v[j][1] = v[i][1]; - v[j][2] = v[i][2]; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - modify->fix[atom->extra_grow[iextra]]->copy_arrays(i,j,delflag); -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecAtomic::pack_comm(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]*domain->xprd + pbc[5]*domain->xy + pbc[4]*domain->xz; - dy = pbc[1]*domain->yprd + pbc[3]*domain->yz; - dz = pbc[2]*domain->zprd; - } - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - } - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecAtomic::pack_comm_vel(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz,dvx,dvy,dvz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]*domain->xprd + pbc[5]*domain->xy + pbc[4]*domain->xz; - dy = pbc[1]*domain->yprd + pbc[3]*domain->yz; - dz = pbc[2]*domain->zprd; - } - if (!deform_vremap) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } else { - dvx = pbc[0]*h_rate[0] + pbc[5]*h_rate[5] + pbc[4]*h_rate[4]; - dvy = pbc[1]*h_rate[1] + pbc[3]*h_rate[3]; - dvz = pbc[2]*h_rate[2]; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - if (mask[i] & deform_groupbit) { - buf[m++] = v[j][0] + dvx; - buf[m++] = v[j][1] + dvy; - buf[m++] = v[j][2] + dvz; - } else { - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } - } - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecAtomic::unpack_comm(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecAtomic::unpack_comm_vel(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - v[i][0] = buf[m++]; - v[i][1] = buf[m++]; - v[i][2] = buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecAtomic::pack_reverse(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - buf[m++] = f[i][0]; - buf[m++] = f[i][1]; - buf[m++] = f[i][2]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecAtomic::unpack_reverse(int n, int *list, double *buf) -{ - int i,j,m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - f[j][0] += buf[m++]; - f[j][1] += buf[m++]; - f[j][2] += buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecAtomic::pack_border(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]; - dy = pbc[1]; - dz = pbc[2]; - } - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - } - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); - - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecAtomic::pack_border_vel(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz,dvx,dvy,dvz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]; - dy = pbc[1]; - dz = pbc[2]; - } - if (!deform_vremap) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } else { - dvx = pbc[0]*h_rate[0] + pbc[5]*h_rate[5] + pbc[4]*h_rate[4]; - dvy = pbc[1]*h_rate[1] + pbc[3]*h_rate[3]; - dvz = pbc[2]*h_rate[2]; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - if (mask[i] & deform_groupbit) { - buf[m++] = v[j][0] + dvx; - buf[m++] = v[j][1] + dvy; - buf[m++] = v[j][2] + dvz; - } else { - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } - } - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); - - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecAtomic::unpack_border(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - if (i == nmax) grow(0); - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - tag[i] = (tagint) ubuf(buf[m++]).i; - type[i] = (int) ubuf(buf[m++]).i; - mask[i] = (int) ubuf(buf[m++]).i; - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]-> - unpack_border(n,first,&buf[m]); -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecAtomic::unpack_border_vel(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - if (i == nmax) grow(0); - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - tag[i] = (tagint) ubuf(buf[m++]).i; - type[i] = (int) ubuf(buf[m++]).i; - mask[i] = (int) ubuf(buf[m++]).i; - v[i][0] = buf[m++]; - v[i][1] = buf[m++]; - v[i][2] = buf[m++]; - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]-> - unpack_border(n,first,&buf[m]); -} - -/* ---------------------------------------------------------------------- - pack data for atom I for sending to another proc - xyz must be 1st 3 values, so comm::exchange() can test on them -------------------------------------------------------------------------- */ - -int AtomVecAtomic::pack_exchange(int i, double *buf) -{ - int m = 1; - buf[m++] = x[i][0]; - buf[m++] = x[i][1]; - buf[m++] = x[i][2]; - buf[m++] = v[i][0]; - buf[m++] = v[i][1]; - buf[m++] = v[i][2]; - buf[m++] = ubuf(tag[i]).d; - buf[m++] = ubuf(type[i]).d; - buf[m++] = ubuf(mask[i]).d; - buf[m++] = ubuf(image[i]).d; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - m += modify->fix[atom->extra_grow[iextra]]->pack_exchange(i,&buf[m]); - - buf[0] = m; - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecAtomic::unpack_exchange(double *buf) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - int m = 1; - x[nlocal][0] = buf[m++]; - x[nlocal][1] = buf[m++]; - x[nlocal][2] = buf[m++]; - v[nlocal][0] = buf[m++]; - v[nlocal][1] = buf[m++]; - v[nlocal][2] = buf[m++]; - tag[nlocal] = (tagint) ubuf(buf[m++]).i; - type[nlocal] = (int) ubuf(buf[m++]).i; - mask[nlocal] = (int) ubuf(buf[m++]).i; - image[nlocal] = (imageint) ubuf(buf[m++]).i; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - m += modify->fix[atom->extra_grow[iextra]]-> - unpack_exchange(nlocal,&buf[m]); - - atom->nlocal++; - return m; -} - -/* ---------------------------------------------------------------------- - size of restart data for all atoms owned by this proc - include extra data stored by fixes -------------------------------------------------------------------------- */ - -int AtomVecAtomic::size_restart() -{ - int i; - - int nlocal = atom->nlocal; - int n = 11 * nlocal; - - if (atom->nextra_restart) - for (int iextra = 0; iextra < atom->nextra_restart; iextra++) - for (i = 0; i < nlocal; i++) - n += modify->fix[atom->extra_restart[iextra]]->size_restart(i); - - return n; -} - -/* ---------------------------------------------------------------------- - pack atom I's data for restart file including extra quantities - xyz must be 1st 3 values, so that read_restart can test on them - molecular types may be negative, but write as positive -------------------------------------------------------------------------- */ - -int AtomVecAtomic::pack_restart(int i, double *buf) -{ - int m = 1; - buf[m++] = x[i][0]; - buf[m++] = x[i][1]; - buf[m++] = x[i][2]; - buf[m++] = ubuf(tag[i]).d; - buf[m++] = ubuf(type[i]).d; - buf[m++] = ubuf(mask[i]).d; - buf[m++] = ubuf(image[i]).d; - buf[m++] = v[i][0]; - buf[m++] = v[i][1]; - buf[m++] = v[i][2]; - - if (atom->nextra_restart) - for (int iextra = 0; iextra < atom->nextra_restart; iextra++) - m += modify->fix[atom->extra_restart[iextra]]->pack_restart(i,&buf[m]); - - buf[0] = m; - return m; -} - -/* ---------------------------------------------------------------------- - unpack data for one atom from restart file including extra quantities -------------------------------------------------------------------------- */ - -int AtomVecAtomic::unpack_restart(double *buf) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) { - grow(0); - if (atom->nextra_store) - memory->grow(atom->extra,nmax,atom->nextra_store,"atom:extra"); - } - - int m = 1; - x[nlocal][0] = buf[m++]; - x[nlocal][1] = buf[m++]; - x[nlocal][2] = buf[m++]; - tag[nlocal] = (tagint) ubuf(buf[m++]).i; - type[nlocal] = (int) ubuf(buf[m++]).i; - mask[nlocal] = (int) ubuf(buf[m++]).i; - image[nlocal] = (imageint) ubuf(buf[m++]).i; - v[nlocal][0] = buf[m++]; - v[nlocal][1] = buf[m++]; - v[nlocal][2] = buf[m++]; - - double **extra = atom->extra; - if (atom->nextra_store) { - int size = static_cast (buf[0]) - m; - for (int i = 0; i < size; i++) extra[nlocal][i] = buf[m++]; - } - - atom->nlocal++; - return m; -} - -/* ---------------------------------------------------------------------- - create one atom of itype at coord - set other values to defaults -------------------------------------------------------------------------- */ - -void AtomVecAtomic::create_atom(int itype, double *coord) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - tag[nlocal] = 0; - type[nlocal] = itype; - x[nlocal][0] = coord[0]; - x[nlocal][1] = coord[1]; - x[nlocal][2] = coord[2]; - mask[nlocal] = 1; - image[nlocal] = ((imageint) IMGMAX << IMG2BITS) | - ((imageint) IMGMAX << IMGBITS) | IMGMAX; - v[nlocal][0] = 0.0; - v[nlocal][1] = 0.0; - v[nlocal][2] = 0.0; - - atom->nlocal++; -} - -/* ---------------------------------------------------------------------- - unpack one line from Atoms section of data file - initialize other atom quantities -------------------------------------------------------------------------- */ - -void AtomVecAtomic::data_atom(double *coord, imageint imagetmp, char **values) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - tag[nlocal] = utils::tnumeric(FLERR,values[0],true,lmp); - type[nlocal] = utils::inumeric(FLERR,values[1],true,lmp); - if (type[nlocal] <= 0 || type[nlocal] > atom->ntypes) - error->one(FLERR,"Invalid atom type in Atoms section of data file"); - - x[nlocal][0] = coord[0]; - x[nlocal][1] = coord[1]; - x[nlocal][2] = coord[2]; - - image[nlocal] = imagetmp; - - mask[nlocal] = 1; - v[nlocal][0] = 0.0; - v[nlocal][1] = 0.0; - v[nlocal][2] = 0.0; - - atom->nlocal++; -} - -/* ---------------------------------------------------------------------- - pack atom info for data file including 3 image flags -------------------------------------------------------------------------- */ - -void AtomVecAtomic::pack_data(double **buf) -{ - int nlocal = atom->nlocal; - for (int i = 0; i < nlocal; i++) { - buf[i][0] = ubuf(tag[i]).d; - buf[i][1] = ubuf(type[i]).d; - buf[i][2] = x[i][0]; - buf[i][3] = x[i][1]; - buf[i][4] = x[i][2]; - buf[i][5] = ubuf((image[i] & IMGMASK) - IMGMAX).d; - buf[i][6] = ubuf((image[i] >> IMGBITS & IMGMASK) - IMGMAX).d; - buf[i][7] = ubuf((image[i] >> IMG2BITS) - IMGMAX).d; - } -} - -/* ---------------------------------------------------------------------- - write atom info to data file including 3 image flags -------------------------------------------------------------------------- */ - -void AtomVecAtomic::write_data(FILE *fp, int n, double **buf) -{ - for (int i = 0; i < n; i++) - fprintf(fp,TAGINT_FORMAT " %d %-1.16e %-1.16e %-1.16e %d %d %d\n", - (tagint) ubuf(buf[i][0]).i,(int) ubuf(buf[i][1]).i, - buf[i][2],buf[i][3],buf[i][4], - (int) ubuf(buf[i][5]).i,(int) ubuf(buf[i][6]).i, - (int) ubuf(buf[i][7]).i); -} - -/* ---------------------------------------------------------------------- - return # of bytes of allocated memory -------------------------------------------------------------------------- */ - -bigint AtomVecAtomic::memory_usage() -{ - bigint bytes = 0; - - if (atom->memcheck("tag")) bytes += memory->usage(tag,nmax); - if (atom->memcheck("type")) bytes += memory->usage(type,nmax); - if (atom->memcheck("mask")) bytes += memory->usage(mask,nmax); - if (atom->memcheck("image")) bytes += memory->usage(image,nmax); - if (atom->memcheck("x")) bytes += memory->usage(x,nmax,3); - if (atom->memcheck("v")) bytes += memory->usage(v,nmax,3); - if (atom->memcheck("f")) bytes += memory->usage(f,nmax*comm->nthreads,3); - - return bytes; + // strings with peratom variables to include in each AtomVec method + // strings cannot contain fields in corresponding AtomVec default strings + // order of fields in the string does not matter + // except fields_data_atom and fields_data_vel which must match data file + + fields_grow = NULL; + fields_copy = NULL; + fields_comm = NULL; + fields_comm_vel = NULL; + fields_reverse = NULL; + fields_border = NULL; + fields_border_vel = NULL; + fields_exchange = NULL; + fields_restart = NULL; + fields_create = NULL; + fields_data_atom = (char *) "id type x"; + fields_data_vel = NULL; + + setup_fields(); } diff --git a/src/atom_vec_atomic.h b/src/atom_vec_atomic.h index afcede89b1..3caf1a5a94 100644 --- a/src/atom_vec_atomic.h +++ b/src/atom_vec_atomic.h @@ -27,36 +27,7 @@ namespace LAMMPS_NS { class AtomVecAtomic : public AtomVec { public: AtomVecAtomic(class LAMMPS *); - virtual ~AtomVecAtomic() {} - void grow(int); - void grow_reset(); - void copy(int, int, int); - virtual int pack_comm(int, int *, double *, int, int *); - virtual int pack_comm_vel(int, int *, double *, int, int *); - virtual void unpack_comm(int, int, double *); - virtual void unpack_comm_vel(int, int, double *); - int pack_reverse(int, int, double *); - void unpack_reverse(int, int *, double *); - virtual int pack_border(int, int *, double *, int, int *); - virtual int pack_border_vel(int, int *, double *, int, int *); - virtual void unpack_border(int, int, double *); - virtual void unpack_border_vel(int, int, double *); - virtual int pack_exchange(int, double *); - virtual int unpack_exchange(double *); - int size_restart(); - int pack_restart(int, double *); - int unpack_restart(double *); - void create_atom(int, double *); - void data_atom(double *, imageint, char **); - void pack_data(double **); - void write_data(FILE *, int, double **); - bigint memory_usage(); - - protected: - tagint *tag; - int *type,*mask; - imageint *image; - double **x,**v,**f; + ~AtomVecAtomic() {} }; } @@ -66,13 +37,4 @@ class AtomVecAtomic : public AtomVec { /* ERROR/WARNING messages: -E: Per-processor system is too big - -The number of owned atoms plus ghost atoms on a single -processor must fit in 32-bit integer. - -E: Invalid atom type in Atoms section of data file - -Atom types must range from 1 to specified # of types. - */ diff --git a/src/atom_vec_charge.cpp b/src/atom_vec_charge.cpp index 9f35d16ff0..9c8f18a846 100644 --- a/src/atom_vec_charge.cpp +++ b/src/atom_vec_charge.cpp @@ -13,13 +13,6 @@ #include "atom_vec_charge.h" #include "atom.h" -#include "comm.h" -#include "domain.h" -#include "modify.h" -#include "fix.h" -#include "memory.h" -#include "error.h" -#include "utils.h" using namespace LAMMPS_NS; @@ -30,742 +23,25 @@ AtomVecCharge::AtomVecCharge(LAMMPS *lmp) : AtomVec(lmp) molecular = 0; mass_type = 1; - comm_x_only = comm_f_only = 1; - size_forward = 3; - size_reverse = 3; - size_border = 7; - size_velocity = 3; - size_data_atom = 6; - size_data_vel = 4; - xcol_data = 4; - atom->q_flag = 1; -} - -/* ---------------------------------------------------------------------- - grow atom arrays - n = 0 grows arrays by a chunk - n > 0 allocates arrays to size n -------------------------------------------------------------------------- */ - -void AtomVecCharge::grow(int n) -{ - if (n == 0) grow_nmax(); - else nmax = n; - atom->nmax = nmax; - if (nmax < 0 || nmax > MAXSMALLINT) - error->one(FLERR,"Per-processor system is too big"); - - tag = memory->grow(atom->tag,nmax,"atom:tag"); - type = memory->grow(atom->type,nmax,"atom:type"); - mask = memory->grow(atom->mask,nmax,"atom:mask"); - image = memory->grow(atom->image,nmax,"atom:image"); - x = memory->grow(atom->x,nmax,3,"atom:x"); - v = memory->grow(atom->v,nmax,3,"atom:v"); - f = memory->grow(atom->f,nmax*comm->nthreads,3,"atom:f"); - - q = memory->grow(atom->q,nmax,"atom:q"); - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - modify->fix[atom->extra_grow[iextra]]->grow_arrays(nmax); -} - -/* ---------------------------------------------------------------------- - reset local array ptrs -------------------------------------------------------------------------- */ - -void AtomVecCharge::grow_reset() -{ - tag = atom->tag; type = atom->type; - mask = atom->mask; image = atom->image; - x = atom->x; v = atom->v; f = atom->f; - q = atom->q; -} - -/* ---------------------------------------------------------------------- - copy atom I info to atom J -------------------------------------------------------------------------- */ - -void AtomVecCharge::copy(int i, int j, int delflag) -{ - tag[j] = tag[i]; - type[j] = type[i]; - mask[j] = mask[i]; - image[j] = image[i]; - x[j][0] = x[i][0]; - x[j][1] = x[i][1]; - x[j][2] = x[i][2]; - v[j][0] = v[i][0]; - v[j][1] = v[i][1]; - v[j][2] = v[i][2]; - - q[j] = q[i]; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - modify->fix[atom->extra_grow[iextra]]->copy_arrays(i,j,delflag); -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecCharge::pack_comm(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]*domain->xprd + pbc[5]*domain->xy + pbc[4]*domain->xz; - dy = pbc[1]*domain->yprd + pbc[3]*domain->yz; - dz = pbc[2]*domain->zprd; - } - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - } - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecCharge::pack_comm_vel(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz,dvx,dvy,dvz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]*domain->xprd + pbc[5]*domain->xy + pbc[4]*domain->xz; - dy = pbc[1]*domain->yprd + pbc[3]*domain->yz; - dz = pbc[2]*domain->zprd; - } - if (!deform_vremap) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } else { - dvx = pbc[0]*h_rate[0] + pbc[5]*h_rate[5] + pbc[4]*h_rate[4]; - dvy = pbc[1]*h_rate[1] + pbc[3]*h_rate[3]; - dvz = pbc[2]*h_rate[2]; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - if (mask[i] & deform_groupbit) { - buf[m++] = v[j][0] + dvx; - buf[m++] = v[j][1] + dvy; - buf[m++] = v[j][2] + dvz; - } else { - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } - } - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecCharge::unpack_comm(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecCharge::unpack_comm_vel(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - v[i][0] = buf[m++]; - v[i][1] = buf[m++]; - v[i][2] = buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecCharge::pack_reverse(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - buf[m++] = f[i][0]; - buf[m++] = f[i][1]; - buf[m++] = f[i][2]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecCharge::unpack_reverse(int n, int *list, double *buf) -{ - int i,j,m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - f[j][0] += buf[m++]; - f[j][1] += buf[m++]; - f[j][2] += buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecCharge::pack_border(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = q[j]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]; - dy = pbc[1]; - dz = pbc[2]; - } - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = q[j]; - } - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); - - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecCharge::pack_border_vel(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz,dvx,dvy,dvz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = q[j]; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]; - dy = pbc[1]; - dz = pbc[2]; - } - if (!deform_vremap) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = q[j]; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } else { - dvx = pbc[0]*h_rate[0] + pbc[5]*h_rate[5] + pbc[4]*h_rate[4]; - dvy = pbc[1]*h_rate[1] + pbc[3]*h_rate[3]; - dvz = pbc[2]*h_rate[2]; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = q[j]; - if (mask[i] & deform_groupbit) { - buf[m++] = v[j][0] + dvx; - buf[m++] = v[j][1] + dvy; - buf[m++] = v[j][2] + dvz; - } else { - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } - } - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); - - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecCharge::pack_border_hybrid(int n, int *list, double *buf) -{ - int i,j,m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = q[j]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecCharge::unpack_border(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - if (i == nmax) grow(0); - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - tag[i] = (tagint) ubuf(buf[m++]).i; - type[i] = (int) ubuf(buf[m++]).i; - mask[i] = (int) ubuf(buf[m++]).i; - q[i] = buf[m++]; - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]-> - unpack_border(n,first,&buf[m]); -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecCharge::unpack_border_vel(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - if (i == nmax) grow(0); - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - tag[i] = (tagint) ubuf(buf[m++]).i; - type[i] = (int) ubuf(buf[m++]).i; - mask[i] = (int) ubuf(buf[m++]).i; - q[i] = buf[m++]; - v[i][0] = buf[m++]; - v[i][1] = buf[m++]; - v[i][2] = buf[m++]; - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]-> - unpack_border(n,first,&buf[m]); -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecCharge::unpack_border_hybrid(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) - q[i] = buf[m++]; - return m; -} - -/* ---------------------------------------------------------------------- - pack data for atom I for sending to another proc - xyz must be 1st 3 values, so comm::exchange() can test on them -------------------------------------------------------------------------- */ - -int AtomVecCharge::pack_exchange(int i, double *buf) -{ - int m = 1; - buf[m++] = x[i][0]; - buf[m++] = x[i][1]; - buf[m++] = x[i][2]; - buf[m++] = v[i][0]; - buf[m++] = v[i][1]; - buf[m++] = v[i][2]; - buf[m++] = ubuf(tag[i]).d; - buf[m++] = ubuf(type[i]).d; - buf[m++] = ubuf(mask[i]).d; - buf[m++] = ubuf(image[i]).d; - - buf[m++] = q[i]; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - m += modify->fix[atom->extra_grow[iextra]]->pack_exchange(i,&buf[m]); - - buf[0] = m; - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecCharge::unpack_exchange(double *buf) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - int m = 1; - x[nlocal][0] = buf[m++]; - x[nlocal][1] = buf[m++]; - x[nlocal][2] = buf[m++]; - v[nlocal][0] = buf[m++]; - v[nlocal][1] = buf[m++]; - v[nlocal][2] = buf[m++]; - tag[nlocal] = (tagint) ubuf(buf[m++]).i; - type[nlocal] = (int) ubuf(buf[m++]).i; - mask[nlocal] = (int) ubuf(buf[m++]).i; - image[nlocal] = (imageint) ubuf(buf[m++]).i; - - q[nlocal] = buf[m++]; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - m += modify->fix[atom->extra_grow[iextra]]-> - unpack_exchange(nlocal,&buf[m]); - - atom->nlocal++; - return m; -} - -/* ---------------------------------------------------------------------- - size of restart data for all atoms owned by this proc - include extra data stored by fixes -------------------------------------------------------------------------- */ - -int AtomVecCharge::size_restart() -{ - int i; - - int nlocal = atom->nlocal; - int n = 12 * nlocal; - - if (atom->nextra_restart) - for (int iextra = 0; iextra < atom->nextra_restart; iextra++) - for (i = 0; i < nlocal; i++) - n += modify->fix[atom->extra_restart[iextra]]->size_restart(i); - - return n; -} - -/* ---------------------------------------------------------------------- - pack atom I's data for restart file including extra quantities - xyz must be 1st 3 values, so that read_restart can test on them - molecular types may be negative, but write as positive -------------------------------------------------------------------------- */ - -int AtomVecCharge::pack_restart(int i, double *buf) -{ - int m = 1; - buf[m++] = x[i][0]; - buf[m++] = x[i][1]; - buf[m++] = x[i][2]; - buf[m++] = ubuf(tag[i]).d; - buf[m++] = ubuf(type[i]).d; - buf[m++] = ubuf(mask[i]).d; - buf[m++] = ubuf(image[i]).d; - buf[m++] = v[i][0]; - buf[m++] = v[i][1]; - buf[m++] = v[i][2]; - - buf[m++] = q[i]; - - if (atom->nextra_restart) - for (int iextra = 0; iextra < atom->nextra_restart; iextra++) - m += modify->fix[atom->extra_restart[iextra]]->pack_restart(i,&buf[m]); - - buf[0] = m; - return m; -} - -/* ---------------------------------------------------------------------- - unpack data for one atom from restart file including extra quantities -------------------------------------------------------------------------- */ - -int AtomVecCharge::unpack_restart(double *buf) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) { - grow(0); - if (atom->nextra_store) - memory->grow(atom->extra,nmax,atom->nextra_store,"atom:extra"); - } - - int m = 1; - x[nlocal][0] = buf[m++]; - x[nlocal][1] = buf[m++]; - x[nlocal][2] = buf[m++]; - tag[nlocal] = (tagint) ubuf(buf[m++]).i; - type[nlocal] = (int) ubuf(buf[m++]).i; - mask[nlocal] = (int) ubuf(buf[m++]).i; - image[nlocal] = (imageint) ubuf(buf[m++]).i; - v[nlocal][0] = buf[m++]; - v[nlocal][1] = buf[m++]; - v[nlocal][2] = buf[m++]; - - q[nlocal] = buf[m++]; - - double **extra = atom->extra; - if (atom->nextra_store) { - int size = static_cast (buf[0]) - m; - for (int i = 0; i < size; i++) extra[nlocal][i] = buf[m++]; - } - - atom->nlocal++; - return m; -} - -/* ---------------------------------------------------------------------- - create one atom of itype at coord - set other values to defaults -------------------------------------------------------------------------- */ - -void AtomVecCharge::create_atom(int itype, double *coord) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - tag[nlocal] = 0; - type[nlocal] = itype; - x[nlocal][0] = coord[0]; - x[nlocal][1] = coord[1]; - x[nlocal][2] = coord[2]; - mask[nlocal] = 1; - image[nlocal] = ((imageint) IMGMAX << IMG2BITS) | - ((imageint) IMGMAX << IMGBITS) | IMGMAX; - v[nlocal][0] = 0.0; - v[nlocal][1] = 0.0; - v[nlocal][2] = 0.0; - - q[nlocal] = 0.0; - - atom->nlocal++; -} - -/* ---------------------------------------------------------------------- - unpack one line from Atoms section of data file - initialize other atom quantities -------------------------------------------------------------------------- */ - -void AtomVecCharge::data_atom(double *coord, imageint imagetmp, char **values) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - tag[nlocal] = utils::tnumeric(FLERR,values[0],true,lmp); - type[nlocal] = utils::inumeric(FLERR,values[1],true,lmp); - if (type[nlocal] <= 0 || type[nlocal] > atom->ntypes) - error->one(FLERR,"Invalid atom type in Atoms section of data file"); - - q[nlocal] = utils::numeric(FLERR,values[2],true,lmp); - - x[nlocal][0] = coord[0]; - x[nlocal][1] = coord[1]; - x[nlocal][2] = coord[2]; - - image[nlocal] = imagetmp; - - mask[nlocal] = 1; - v[nlocal][0] = 0.0; - v[nlocal][1] = 0.0; - v[nlocal][2] = 0.0; - - atom->nlocal++; -} - -/* ---------------------------------------------------------------------- - unpack hybrid quantities from one line in Atoms section of data file - initialize other atom quantities for this sub-style -------------------------------------------------------------------------- */ - -int AtomVecCharge::data_atom_hybrid(int nlocal, char **values) -{ - q[nlocal] = utils::numeric(FLERR,values[0],true,lmp); - - return 1; -} - -/* ---------------------------------------------------------------------- - pack atom info for data file including 3 image flags -------------------------------------------------------------------------- */ - -void AtomVecCharge::pack_data(double **buf) -{ - int nlocal = atom->nlocal; - for (int i = 0; i < nlocal; i++) { - buf[i][0] = ubuf(tag[i]).d; - buf[i][1] = ubuf(type[i]).d; - buf[i][2] = q[i]; - buf[i][3] = x[i][0]; - buf[i][4] = x[i][1]; - buf[i][5] = x[i][2]; - buf[i][6] = ubuf((image[i] & IMGMASK) - IMGMAX).d; - buf[i][7] = ubuf((image[i] >> IMGBITS & IMGMASK) - IMGMAX).d; - buf[i][8] = ubuf((image[i] >> IMG2BITS) - IMGMAX).d; - } -} - -/* ---------------------------------------------------------------------- - pack hybrid atom info for data file -------------------------------------------------------------------------- */ - -int AtomVecCharge::pack_data_hybrid(int i, double *buf) -{ - buf[0] = q[i]; - return 1; -} - -/* ---------------------------------------------------------------------- - write atom info to data file including 3 image flags -------------------------------------------------------------------------- */ - -void AtomVecCharge::write_data(FILE *fp, int n, double **buf) -{ - for (int i = 0; i < n; i++) - fprintf(fp,TAGINT_FORMAT " %d %-1.16e %-1.16e %-1.16e %-1.16e %d %d %d\n", - (tagint) ubuf(buf[i][0]).i,(int) ubuf(buf[i][1]).i, - buf[i][2],buf[i][3],buf[i][4],buf[i][5], - (int) ubuf(buf[i][6]).i,(int) ubuf(buf[i][7]).i, - (int) ubuf(buf[i][8]).i); -} - -/* ---------------------------------------------------------------------- - write hybrid atom info to data file -------------------------------------------------------------------------- */ - -int AtomVecCharge::write_data_hybrid(FILE *fp, double *buf) -{ - fprintf(fp," %-1.16e",buf[0]); - return 1; -} - -/* ---------------------------------------------------------------------- - return # of bytes of allocated memory -------------------------------------------------------------------------- */ - -bigint AtomVecCharge::memory_usage() -{ - bigint bytes = 0; - - if (atom->memcheck("tag")) bytes += memory->usage(tag,nmax); - if (atom->memcheck("type")) bytes += memory->usage(type,nmax); - if (atom->memcheck("mask")) bytes += memory->usage(mask,nmax); - if (atom->memcheck("image")) bytes += memory->usage(image,nmax); - if (atom->memcheck("x")) bytes += memory->usage(x,nmax,3); - if (atom->memcheck("v")) bytes += memory->usage(v,nmax,3); - if (atom->memcheck("f")) bytes += memory->usage(f,nmax*comm->nthreads,3); - - if (atom->memcheck("q")) bytes += memory->usage(q,nmax); - return bytes; + // strings with peratom variables to include in each AtomVec method + // strings cannot contain fields in corresponding AtomVec default strings + // order of fields in the string does not matter + // except fields_data_atom and fields_data_vel which must match data file + + fields_grow = (char *) "q"; + fields_copy = (char *) "q"; + fields_comm = NULL; + fields_comm_vel = NULL; + fields_reverse = NULL; + fields_border = (char *) "q"; + fields_border_vel = (char *) "q"; + fields_exchange = (char *) "q"; + fields_restart = (char *) "q"; + fields_create = (char *) "q"; + fields_data_atom = (char *) "id type q x"; + fields_data_vel = NULL; + + setup_fields(); } diff --git a/src/atom_vec_charge.h b/src/atom_vec_charge.h index 10f1d8d141..d52b4a068a 100644 --- a/src/atom_vec_charge.h +++ b/src/atom_vec_charge.h @@ -27,42 +27,6 @@ namespace LAMMPS_NS { class AtomVecCharge : public AtomVec { public: AtomVecCharge(class LAMMPS *); - virtual ~AtomVecCharge() {} - void grow(int); - void grow_reset(); - void copy(int, int, int); - virtual int pack_comm(int, int *, double *, int, int *); - virtual int pack_comm_vel(int, int *, double *, int, int *); - virtual void unpack_comm(int, int, double *); - virtual void unpack_comm_vel(int, int, double *); - int pack_reverse(int, int, double *); - void unpack_reverse(int, int *, double *); - virtual int pack_border(int, int *, double *, int, int *); - virtual int pack_border_vel(int, int *, double *, int, int *); - int pack_border_hybrid(int, int *, double *); - virtual void unpack_border(int, int, double *); - virtual void unpack_border_vel(int, int, double *); - int unpack_border_hybrid(int, int, double *); - virtual int pack_exchange(int, double *); - virtual int unpack_exchange(double *); - int size_restart(); - int pack_restart(int, double *); - int unpack_restart(double *); - void create_atom(int, double *); - void data_atom(double *, imageint, char **); - int data_atom_hybrid(int, char **); - void pack_data(double **); - int pack_data_hybrid(int, double *); - void write_data(FILE *, int, double **); - int write_data_hybrid(FILE *, double *); - bigint memory_usage(); - - protected: - tagint *tag; - int *type,*mask; - imageint *image; - double **x,**v,**f; - double *q; }; } @@ -72,13 +36,4 @@ class AtomVecCharge : public AtomVec { /* ERROR/WARNING messages: -E: Per-processor system is too big - -The number of owned atoms plus ghost atoms on a single -processor must fit in 32-bit integer. - -E: Invalid atom type in Atoms section of data file - -Atom types must range from 1 to specified # of types. - */ diff --git a/src/atom_vec_sphere.cpp b/src/atom_vec_sphere.cpp index 75136503ea..7a14ea26e6 100644 --- a/src/atom_vec_sphere.cpp +++ b/src/atom_vec_sphere.cpp @@ -5,7 +5,7 @@ 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 + certain rights in this software. This software is distributead under the GNU General Public License. See the README file in the top-level LAMMPS directory. @@ -14,15 +14,11 @@ #include "atom_vec_sphere.h" #include #include "atom.h" -#include "comm.h" -#include "domain.h" #include "modify.h" #include "fix.h" #include "fix_adapt.h" #include "math_const.h" -#include "memory.h" #include "error.h" -#include "utils.h" using namespace LAMMPS_NS; using namespace MathConst; @@ -33,19 +29,29 @@ AtomVecSphere::AtomVecSphere(LAMMPS *lmp) : AtomVec(lmp) { molecular = 0; - comm_x_only = 1; - comm_f_only = 0; - size_forward = 3; - size_reverse = 6; - size_border = 8; - size_velocity = 6; - size_data_atom = 7; - size_data_vel = 7; - xcol_data = 5; - atom->sphere_flag = 1; atom->radius_flag = atom->rmass_flag = atom->omega_flag = atom->torque_flag = 1; + + // strings with peratom variables to include in each AtomVec method + // strings cannot contain fields in corresponding AtomVec default strings + // order of fields in the string does not matter + // except fields_data_atom and fields_data_vel which must match data file + + fields_grow = (char *) "radius rmass omega torque"; + fields_copy = (char *) "radius rmass omega"; + fields_comm = NULL; + fields_comm_vel = (char *) "omega"; + fields_reverse = (char *) "torque"; + fields_border = (char *) "radius rmass"; + fields_border_vel = (char *) "radius rmass omega"; + fields_exchange = (char *) "radius rmass omega"; + fields_restart = (char *) "radius rmass omega"; + fields_create = (char *) "radius rmass omega"; + fields_data_atom = (char *) "id type radius rmass x"; + fields_data_vel = (char *) "omega"; + + setup_fields(); } /* ---------------------------------------------------------------------- */ @@ -55,10 +61,11 @@ void AtomVecSphere::init() AtomVec::init(); // set radvary if particle diameters are time-varying due to fix adapt + // NOTE: change this to a atom_style sphere optional arg radvary = 0; - comm_x_only = 1; - size_forward = 3; + //comm_x_only = 1; + //size_forward = 3; for (int i = 0; i < modify->nfix; i++) if (strcmp(modify->fix[i]->style,"adapt") == 0) { @@ -69,1118 +76,42 @@ void AtomVecSphere::init() size_forward = 5; } } -} - -/* ---------------------------------------------------------------------- - grow atom arrays - n = 0 grows arrays by a chunk - n > 0 allocates arrays to size n -------------------------------------------------------------------------- */ - -void AtomVecSphere::grow(int n) -{ - if (n == 0) grow_nmax(); - else nmax = n; - atom->nmax = nmax; - if (nmax < 0 || nmax > MAXSMALLINT) - error->one(FLERR,"Per-processor system is too big"); - tag = memory->grow(atom->tag,nmax,"atom:tag"); - type = memory->grow(atom->type,nmax,"atom:type"); - mask = memory->grow(atom->mask,nmax,"atom:mask"); - image = memory->grow(atom->image,nmax,"atom:image"); - x = memory->grow(atom->x,nmax,3,"atom:x"); - v = memory->grow(atom->v,nmax,3,"atom:v"); - f = memory->grow(atom->f,nmax*comm->nthreads,3,"atom:f"); - - radius = memory->grow(atom->radius,nmax,"atom:radius"); - rmass = memory->grow(atom->rmass,nmax,"atom:rmass"); - omega = memory->grow(atom->omega,nmax,3,"atom:omega"); - torque = memory->grow(atom->torque,nmax*comm->nthreads,3,"atom:torque"); - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - modify->fix[atom->extra_grow[iextra]]->grow_arrays(nmax); -} - -/* ---------------------------------------------------------------------- - reset local array ptrs -------------------------------------------------------------------------- */ - -void AtomVecSphere::grow_reset() -{ - tag = atom->tag; type = atom->type; - mask = atom->mask; image = atom->image; - x = atom->x; v = atom->v; f = atom->f; - radius = atom->radius; rmass = atom->rmass; - omega = atom->omega; torque = atom->torque; -} - -/* ---------------------------------------------------------------------- - copy atom I info to atom J -------------------------------------------------------------------------- */ - -void AtomVecSphere::copy(int i, int j, int delflag) -{ - tag[j] = tag[i]; - type[j] = type[i]; - mask[j] = mask[i]; - image[j] = image[i]; - x[j][0] = x[i][0]; - x[j][1] = x[i][1]; - x[j][2] = x[i][2]; - v[j][0] = v[i][0]; - v[j][1] = v[i][1]; - v[j][2] = v[i][2]; - - radius[j] = radius[i]; - rmass[j] = rmass[i]; - omega[j][0] = omega[i][0]; - omega[j][1] = omega[i][1]; - omega[j][2] = omega[i][2]; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - modify->fix[atom->extra_grow[iextra]]->copy_arrays(i,j,delflag); -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecSphere::pack_comm(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz; - - if (radvary == 0) { - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]*domain->xprd + pbc[5]*domain->xy + pbc[4]*domain->xz; - dy = pbc[1]*domain->yprd + pbc[3]*domain->yz; - dz = pbc[2]*domain->zprd; - } - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - } - } - - } else { - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = radius[j]; - buf[m++] = rmass[j]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]*domain->xprd + pbc[5]*domain->xy + pbc[4]*domain->xz; - dy = pbc[1]*domain->yprd + pbc[3]*domain->yz; - dz = pbc[2]*domain->zprd; - } - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = radius[j]; - buf[m++] = rmass[j]; - } - } - } - - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecSphere::pack_comm_vel(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz,dvx,dvy,dvz; - - if (radvary == 0) { - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - buf[m++] = omega[j][0]; - buf[m++] = omega[j][1]; - buf[m++] = omega[j][2]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]*domain->xprd + pbc[5]*domain->xy + pbc[4]*domain->xz; - dy = pbc[1]*domain->yprd + pbc[3]*domain->yz; - dz = pbc[2]*domain->zprd; - } - if (!deform_vremap) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - buf[m++] = omega[j][0]; - buf[m++] = omega[j][1]; - buf[m++] = omega[j][2]; - } - } else { - dvx = pbc[0]*h_rate[0] + pbc[5]*h_rate[5] + pbc[4]*h_rate[4]; - dvy = pbc[1]*h_rate[1] + pbc[3]*h_rate[3]; - dvz = pbc[2]*h_rate[2]; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - if (mask[i] & deform_groupbit) { - buf[m++] = v[j][0] + dvx; - buf[m++] = v[j][1] + dvy; - buf[m++] = v[j][2] + dvz; - } else { - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - buf[m++] = omega[j][0]; - buf[m++] = omega[j][1]; - buf[m++] = omega[j][2]; - } - } - } - - } else { - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = radius[j]; - buf[m++] = rmass[j]; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - buf[m++] = omega[j][0]; - buf[m++] = omega[j][1]; - buf[m++] = omega[j][2]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]*domain->xprd + pbc[5]*domain->xy + pbc[4]*domain->xz; - dy = pbc[1]*domain->yprd + pbc[3]*domain->yz; - dz = pbc[2]*domain->zprd; - } - if (!deform_vremap) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = radius[j]; - buf[m++] = rmass[j]; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - buf[m++] = omega[j][0]; - buf[m++] = omega[j][1]; - buf[m++] = omega[j][2]; - } - } else { - dvx = pbc[0]*h_rate[0] + pbc[5]*h_rate[5] + pbc[4]*h_rate[4]; - dvy = pbc[1]*h_rate[1] + pbc[3]*h_rate[3]; - dvz = pbc[2]*h_rate[2]; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = radius[j]; - buf[m++] = rmass[j]; - if (mask[i] & deform_groupbit) { - buf[m++] = v[j][0] + dvx; - buf[m++] = v[j][1] + dvy; - buf[m++] = v[j][2] + dvz; - } else { - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - buf[m++] = omega[j][0]; - buf[m++] = omega[j][1]; - buf[m++] = omega[j][2]; - } - } - } - } - - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecSphere::pack_comm_hybrid(int n, int *list, double *buf) -{ - int i,j,m; - - if (radvary == 0) return 0; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = radius[j]; - buf[m++] = rmass[j]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecSphere::unpack_comm(int n, int first, double *buf) -{ - int i,m,last; - - if (radvary == 0) { - m = 0; - last = first + n; - for (i = first; i < last; i++) { - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - } - } else { - m = 0; - last = first + n; - for (i = first; i < last; i++) { - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - radius[i] = buf[m++]; - rmass[i] = buf[m++]; - } - } -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecSphere::unpack_comm_vel(int n, int first, double *buf) -{ - int i,m,last; - - if (radvary == 0) { - m = 0; - last = first + n; - for (i = first; i < last; i++) { - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - v[i][0] = buf[m++]; - v[i][1] = buf[m++]; - v[i][2] = buf[m++]; - omega[i][0] = buf[m++]; - omega[i][1] = buf[m++]; - omega[i][2] = buf[m++]; - } - } else { - m = 0; - last = first + n; - for (i = first; i < last; i++) { - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - radius[i] = buf[m++]; - rmass[i] = buf[m++]; - v[i][0] = buf[m++]; - v[i][1] = buf[m++]; - v[i][2] = buf[m++]; - omega[i][0] = buf[m++]; - omega[i][1] = buf[m++]; - omega[i][2] = buf[m++]; - } - } -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecSphere::unpack_comm_hybrid(int n, int first, double *buf) -{ - int i,m,last; - - if (radvary == 0) return 0; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - radius[i] = buf[m++]; - rmass[i] = buf[m++]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecSphere::pack_reverse(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - buf[m++] = f[i][0]; - buf[m++] = f[i][1]; - buf[m++] = f[i][2]; - buf[m++] = torque[i][0]; - buf[m++] = torque[i][1]; - buf[m++] = torque[i][2]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecSphere::pack_reverse_hybrid(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - buf[m++] = torque[i][0]; - buf[m++] = torque[i][1]; - buf[m++] = torque[i][2]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecSphere::unpack_reverse(int n, int *list, double *buf) -{ - int i,j,m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - f[j][0] += buf[m++]; - f[j][1] += buf[m++]; - f[j][2] += buf[m++]; - torque[j][0] += buf[m++]; - torque[j][1] += buf[m++]; - torque[j][2] += buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecSphere::unpack_reverse_hybrid(int n, int *list, double *buf) -{ - int i,j,m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - torque[j][0] += buf[m++]; - torque[j][1] += buf[m++]; - torque[j][2] += buf[m++]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecSphere::pack_border(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = radius[j]; - buf[m++] = rmass[j]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]; - dy = pbc[1]; - dz = pbc[2]; - } - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = radius[j]; - buf[m++] = rmass[j]; - } - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); - - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecSphere::pack_border_vel(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz,dvx,dvy,dvz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = radius[j]; - buf[m++] = rmass[j]; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - buf[m++] = omega[j][0]; - buf[m++] = omega[j][1]; - buf[m++] = omega[j][2]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]; - dy = pbc[1]; - dz = pbc[2]; - } - if (!deform_vremap) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = radius[j]; - buf[m++] = rmass[j]; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - buf[m++] = omega[j][0]; - buf[m++] = omega[j][1]; - buf[m++] = omega[j][2]; - } - } else { - dvx = pbc[0]*h_rate[0] + pbc[5]*h_rate[5] + pbc[4]*h_rate[4]; - dvy = pbc[1]*h_rate[1] + pbc[3]*h_rate[3]; - dvz = pbc[2]*h_rate[2]; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = radius[j]; - buf[m++] = rmass[j]; - if (mask[i] & deform_groupbit) { - buf[m++] = v[j][0] + dvx; - buf[m++] = v[j][1] + dvy; - buf[m++] = v[j][2] + dvz; - } else { - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - buf[m++] = omega[j][0]; - buf[m++] = omega[j][1]; - buf[m++] = omega[j][2]; - } - } - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); - - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecSphere::pack_border_hybrid(int n, int *list, double *buf) -{ - int i,j,m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = radius[j]; - buf[m++] = rmass[j]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecSphere::unpack_border(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - if (i == nmax) grow(0); - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - tag[i] = (tagint) ubuf(buf[m++]).i; - type[i] = (int) ubuf(buf[m++]).i; - mask[i] = (int) ubuf(buf[m++]).i; - radius[i] = buf[m++]; - rmass[i] = buf[m++]; - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]-> - unpack_border(n,first,&buf[m]); -} - - -/* ---------------------------------------------------------------------- */ - -void AtomVecSphere::unpack_border_vel(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - if (i == nmax) grow(0); - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - tag[i] = (tagint) ubuf(buf[m++]).i; - type[i] = (int) ubuf(buf[m++]).i; - mask[i] = (int) ubuf(buf[m++]).i; - radius[i] = buf[m++]; - rmass[i] = buf[m++]; - v[i][0] = buf[m++]; - v[i][1] = buf[m++]; - v[i][2] = buf[m++]; - omega[i][0] = buf[m++]; - omega[i][1] = buf[m++]; - omega[i][2] = buf[m++]; - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]-> - unpack_border(n,first,&buf[m]); -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecSphere::unpack_border_hybrid(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - radius[i] = buf[m++]; - rmass[i] = buf[m++]; - } - return m; -} - -/* ---------------------------------------------------------------------- - pack data for atom I for sending to another proc - xyz must be 1st 3 values, so comm::exchange() can test on them -------------------------------------------------------------------------- */ - -int AtomVecSphere::pack_exchange(int i, double *buf) -{ - int m = 1; - buf[m++] = x[i][0]; - buf[m++] = x[i][1]; - buf[m++] = x[i][2]; - buf[m++] = v[i][0]; - buf[m++] = v[i][1]; - buf[m++] = v[i][2]; - buf[m++] = ubuf(tag[i]).d; - buf[m++] = ubuf(type[i]).d; - buf[m++] = ubuf(mask[i]).d; - buf[m++] = ubuf(image[i]).d; - - buf[m++] = radius[i]; - buf[m++] = rmass[i]; - buf[m++] = omega[i][0]; - buf[m++] = omega[i][1]; - buf[m++] = omega[i][2]; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - m += modify->fix[atom->extra_grow[iextra]]->pack_exchange(i,&buf[m]); - - buf[0] = m; - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecSphere::unpack_exchange(double *buf) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - int m = 1; - x[nlocal][0] = buf[m++]; - x[nlocal][1] = buf[m++]; - x[nlocal][2] = buf[m++]; - v[nlocal][0] = buf[m++]; - v[nlocal][1] = buf[m++]; - v[nlocal][2] = buf[m++]; - tag[nlocal] = (tagint) ubuf(buf[m++]).i; - type[nlocal] = (int) ubuf(buf[m++]).i; - mask[nlocal] = (int) ubuf(buf[m++]).i; - image[nlocal] = (imageint) ubuf(buf[m++]).i; - - radius[nlocal] = buf[m++]; - rmass[nlocal] = buf[m++]; - omega[nlocal][0] = buf[m++]; - omega[nlocal][1] = buf[m++]; - omega[nlocal][2] = buf[m++]; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - m += modify->fix[atom->extra_grow[iextra]]-> - unpack_exchange(nlocal,&buf[m]); - - atom->nlocal++; - return m; -} - -/* ---------------------------------------------------------------------- - size of restart data for all atoms owned by this proc - include extra data stored by fixes -------------------------------------------------------------------------- */ - -int AtomVecSphere::size_restart() -{ - int i; - - int nlocal = atom->nlocal; - int n = 16 * nlocal; - - if (atom->nextra_restart) - for (int iextra = 0; iextra < atom->nextra_restart; iextra++) - for (i = 0; i < nlocal; i++) - n += modify->fix[atom->extra_restart[iextra]]->size_restart(i); - - return n; -} - -/* ---------------------------------------------------------------------- - pack atom I's data for restart file including extra quantities - xyz must be 1st 3 values, so that read_restart can test on them - molecular types may be negative, but write as positive -------------------------------------------------------------------------- */ - -int AtomVecSphere::pack_restart(int i, double *buf) -{ - int m = 1; - buf[m++] = x[i][0]; - buf[m++] = x[i][1]; - buf[m++] = x[i][2]; - buf[m++] = ubuf(tag[i]).d; - buf[m++] = ubuf(type[i]).d; - buf[m++] = ubuf(mask[i]).d; - buf[m++] = ubuf(image[i]).d; - buf[m++] = v[i][0]; - buf[m++] = v[i][1]; - buf[m++] = v[i][2]; - - buf[m++] = radius[i]; - buf[m++] = rmass[i]; - buf[m++] = omega[i][0]; - buf[m++] = omega[i][1]; - buf[m++] = omega[i][2]; - - if (atom->nextra_restart) - for (int iextra = 0; iextra < atom->nextra_restart; iextra++) - m += modify->fix[atom->extra_restart[iextra]]->pack_restart(i,&buf[m]); - - buf[0] = m; - return m; -} - -/* ---------------------------------------------------------------------- - unpack data for one atom from restart file including extra quantities -------------------------------------------------------------------------- */ - -int AtomVecSphere::unpack_restart(double *buf) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) { - grow(0); - if (atom->nextra_store) - memory->grow(atom->extra,nmax,atom->nextra_store,"atom:extra"); - } - - int m = 1; - x[nlocal][0] = buf[m++]; - x[nlocal][1] = buf[m++]; - x[nlocal][2] = buf[m++]; - tag[nlocal] = (tagint) ubuf(buf[m++]).i; - type[nlocal] = (int) ubuf(buf[m++]).i; - mask[nlocal] = (int) ubuf(buf[m++]).i; - image[nlocal] = (imageint) ubuf(buf[m++]).i; - v[nlocal][0] = buf[m++]; - v[nlocal][1] = buf[m++]; - v[nlocal][2] = buf[m++]; - - radius[nlocal] = buf[m++]; - rmass[nlocal] = buf[m++]; - omega[nlocal][0] = buf[m++]; - omega[nlocal][1] = buf[m++]; - omega[nlocal][2] = buf[m++]; - - double **extra = atom->extra; - if (atom->nextra_store) { - int size = static_cast (buf[0]) - m; - for (int i = 0; i < size; i++) extra[nlocal][i] = buf[m++]; - } - - atom->nlocal++; - return m; + //fields_comm = (char *) "radius rmass"; + //fields_comm_vel = (char *) "radius rmass"; } /* ---------------------------------------------------------------------- create one atom of itype at coord - set other values to defaults + modify what default AtomVec::create_atom() just created ------------------------------------------------------------------------- */ void AtomVecSphere::create_atom(int itype, double *coord) { - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); + AtomVec::create_atom(itype,coord); + int ilocal = atom->nlocal-1; - tag[nlocal] = 0; - type[nlocal] = itype; - x[nlocal][0] = coord[0]; - x[nlocal][1] = coord[1]; - x[nlocal][2] = coord[2]; - mask[nlocal] = 1; - image[nlocal] = ((imageint) IMGMAX << IMG2BITS) | - ((imageint) IMGMAX << IMGBITS) | IMGMAX; - v[nlocal][0] = 0.0; - v[nlocal][1] = 0.0; - v[nlocal][2] = 0.0; - - radius[nlocal] = 0.5; - rmass[nlocal] = 4.0*MY_PI/3.0 * radius[nlocal]*radius[nlocal]*radius[nlocal]; - omega[nlocal][0] = 0.0; - omega[nlocal][1] = 0.0; - omega[nlocal][2] = 0.0; - - atom->nlocal++; + atom->radius[ilocal] = 0.5; + atom->rmass[ilocal] = 4.0*MY_PI/3.0 * 0.5*0.5*0.5; } /* ---------------------------------------------------------------------- unpack one line from Atoms section of data file - initialize other atom quantities + modify what default AtomVec::data_atom() just unpacked + or initialize other atom quantities ------------------------------------------------------------------------- */ void AtomVecSphere::data_atom(double *coord, imageint imagetmp, char **values) { - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - tag[nlocal] = utils::tnumeric(FLERR,values[0],true,lmp); - type[nlocal] = utils::inumeric(FLERR,values[1],true,lmp); - if (type[nlocal] <= 0 || type[nlocal] > atom->ntypes) - error->one(FLERR,"Invalid atom type in Atoms section of data file"); - - radius[nlocal] = 0.5 * utils::numeric(FLERR,values[2],true,lmp); - if (radius[nlocal] < 0.0) - error->one(FLERR,"Invalid radius in Atoms section of data file"); - - double density = utils::numeric(FLERR,values[3],true,lmp); - if (density <= 0.0) - error->one(FLERR,"Invalid density in Atoms section of data file"); - - if (radius[nlocal] == 0.0) rmass[nlocal] = density; - else - rmass[nlocal] = 4.0*MY_PI/3.0 * - radius[nlocal]*radius[nlocal]*radius[nlocal] * density; - - x[nlocal][0] = coord[0]; - x[nlocal][1] = coord[1]; - x[nlocal][2] = coord[2]; - - image[nlocal] = imagetmp; - - mask[nlocal] = 1; - v[nlocal][0] = 0.0; - v[nlocal][1] = 0.0; - v[nlocal][2] = 0.0; - omega[nlocal][0] = 0.0; - omega[nlocal][1] = 0.0; - omega[nlocal][2] = 0.0; - - atom->nlocal++; -} - -/* ---------------------------------------------------------------------- - unpack hybrid quantities from one line in Atoms section of data file - initialize other atom quantities for this sub-style -------------------------------------------------------------------------- */ - -int AtomVecSphere::data_atom_hybrid(int nlocal, char **values) -{ - radius[nlocal] = 0.5 * utils::numeric(FLERR,values[0],true,lmp); - if (radius[nlocal] < 0.0) - error->one(FLERR,"Invalid radius in Atoms section of data file"); - - double density = utils::numeric(FLERR,values[1],true,lmp); - if (density <= 0.0) - error->one(FLERR,"Invalid density in Atoms section of data file"); - - if (radius[nlocal] == 0.0) rmass[nlocal] = density; - else - rmass[nlocal] = 4.0*MY_PI/3.0 * - radius[nlocal]*radius[nlocal]*radius[nlocal] * density; - - return 2; -} - -/* ---------------------------------------------------------------------- - unpack one line from Velocities section of data file -------------------------------------------------------------------------- */ - -void AtomVecSphere::data_vel(int m, char **values) -{ - v[m][0] = utils::numeric(FLERR,values[0],true,lmp); - v[m][1] = utils::numeric(FLERR,values[1],true,lmp); - v[m][2] = utils::numeric(FLERR,values[2],true,lmp); - omega[m][0] = utils::numeric(FLERR,values[3],true,lmp); - omega[m][1] = utils::numeric(FLERR,values[4],true,lmp); - omega[m][2] = utils::numeric(FLERR,values[5],true,lmp); -} - -/* ---------------------------------------------------------------------- - unpack hybrid quantities from one line in Velocities section of data file -------------------------------------------------------------------------- */ - -int AtomVecSphere::data_vel_hybrid(int m, char **values) -{ - omega[m][0] = utils::numeric(FLERR,values[0],true,lmp); - omega[m][1] = utils::numeric(FLERR,values[1],true,lmp); - omega[m][2] = utils::numeric(FLERR,values[2],true,lmp); - return 3; -} - -/* ---------------------------------------------------------------------- - pack atom info for data file including 3 image flags -------------------------------------------------------------------------- */ - -void AtomVecSphere::pack_data(double **buf) -{ - int nlocal = atom->nlocal; - for (int i = 0; i < nlocal; i++) { - buf[i][0] = ubuf(tag[i]).d; - buf[i][1] = ubuf(type[i]).d; - buf[i][2] = 2.0*radius[i]; - if (radius[i] == 0.0) buf[i][3] = rmass[i]; - else - buf[i][3] = rmass[i] / (4.0*MY_PI/3.0 * radius[i]*radius[i]*radius[i]); - buf[i][4] = x[i][0]; - buf[i][5] = x[i][1]; - buf[i][6] = x[i][2]; - buf[i][7] = ubuf((image[i] & IMGMASK) - IMGMAX).d; - buf[i][8] = ubuf((image[i] >> IMGBITS & IMGMASK) - IMGMAX).d; - buf[i][9] = ubuf((image[i] >> IMG2BITS) - IMGMAX).d; - } -} - -/* ---------------------------------------------------------------------- - pack hybrid atom info for data file -------------------------------------------------------------------------- */ - -int AtomVecSphere::pack_data_hybrid(int i, double *buf) -{ - buf[0] = 2.0*radius[i]; - if (radius[i] == 0.0) buf[1] = rmass[i]; - else buf[1] = rmass[i] / (4.0*MY_PI/3.0 * radius[i]*radius[i]*radius[i]); - return 2; -} - -/* ---------------------------------------------------------------------- - write atom info to data file including 3 image flags -------------------------------------------------------------------------- */ - -void AtomVecSphere::write_data(FILE *fp, int n, double **buf) -{ - for (int i = 0; i < n; i++) - fprintf(fp,TAGINT_FORMAT - " %d %-1.16e %-1.16e %-1.16e %-1.16e %-1.16e %d %d %d\n", - (tagint) ubuf(buf[i][0]).i,(int) ubuf(buf[i][1]).i, - buf[i][2],buf[i][3], - buf[i][4],buf[i][5],buf[i][6], - (int) ubuf(buf[i][7]).i,(int) ubuf(buf[i][8]).i, - (int) ubuf(buf[i][9]).i); -} - -/* ---------------------------------------------------------------------- - write hybrid atom info to data file -------------------------------------------------------------------------- */ - -int AtomVecSphere::write_data_hybrid(FILE *fp, double *buf) -{ - fprintf(fp," %-1.16e %-1.16e",buf[0],buf[1]); - return 2; -} - -/* ---------------------------------------------------------------------- - pack velocity info for data file -------------------------------------------------------------------------- */ - -void AtomVecSphere::pack_vel(double **buf) -{ - int nlocal = atom->nlocal; - for (int i = 0; i < nlocal; i++) { - buf[i][0] = ubuf(tag[i]).d; - buf[i][1] = v[i][0]; - buf[i][2] = v[i][1]; - buf[i][3] = v[i][2]; - buf[i][4] = omega[i][0]; - buf[i][5] = omega[i][1]; - buf[i][6] = omega[i][2]; - } -} - -/* ---------------------------------------------------------------------- - pack hybrid velocity info for data file -------------------------------------------------------------------------- */ - -int AtomVecSphere::pack_vel_hybrid(int i, double *buf) -{ - buf[0] = omega[i][0]; - buf[1] = omega[i][1]; - buf[2] = omega[i][2]; - return 3; -} - -/* ---------------------------------------------------------------------- - write velocity info to data file -------------------------------------------------------------------------- */ - -void AtomVecSphere::write_vel(FILE *fp, int n, double **buf) -{ - for (int i = 0; i < n; i++) - fprintf(fp,TAGINT_FORMAT - " %-1.16e %-1.16e %-1.16e %-1.16e %-1.16e %-1.16e\n", - (tagint) ubuf(buf[i][0]).i,buf[i][1],buf[i][2],buf[i][3], - buf[i][4],buf[i][5],buf[i][6]); -} - -/* ---------------------------------------------------------------------- - write hybrid velocity info to data file -------------------------------------------------------------------------- */ - -int AtomVecSphere::write_vel_hybrid(FILE *fp, double *buf) -{ - fprintf(fp," %-1.16e %-1.16e %-1.16e",buf[0],buf[1],buf[2]); - return 3; -} - -/* ---------------------------------------------------------------------- - return # of bytes of allocated memory -------------------------------------------------------------------------- */ - -bigint AtomVecSphere::memory_usage() -{ - bigint bytes = 0; - - if (atom->memcheck("tag")) bytes += memory->usage(tag,nmax); - if (atom->memcheck("type")) bytes += memory->usage(type,nmax); - if (atom->memcheck("mask")) bytes += memory->usage(mask,nmax); - if (atom->memcheck("image")) bytes += memory->usage(image,nmax); - if (atom->memcheck("x")) bytes += memory->usage(x,nmax,3); - if (atom->memcheck("v")) bytes += memory->usage(v,nmax,3); - if (atom->memcheck("f")) bytes += memory->usage(f,nmax*comm->nthreads,3); + AtomVec::data_atom(coord,imagetmp,values); + int ilocal = atom->nlocal-1; - if (atom->memcheck("radius")) bytes += memory->usage(radius,nmax); - if (atom->memcheck("rmass")) bytes += memory->usage(rmass,nmax); - if (atom->memcheck("omega")) bytes += memory->usage(omega,nmax,3); - if (atom->memcheck("torque")) - bytes += memory->usage(torque,nmax*comm->nthreads,3); + double radius = 0.5 * atom->radius[ilocal]; + atom->radius[ilocal] = radius; + if (radius > 0.0) + atom->rmass[ilocal] = + 4.0*MY_PI/3.0 * radius*radius*radius * atom->rmass[ilocal]; - return bytes; + if (atom->rmass[ilocal] <= 0.0) + error->one(FLERR,"Invalid mass in Atoms section of data file"); } diff --git a/src/atom_vec_sphere.h b/src/atom_vec_sphere.h index 28b1198d59..98762dba49 100644 --- a/src/atom_vec_sphere.h +++ b/src/atom_vec_sphere.h @@ -27,54 +27,11 @@ namespace LAMMPS_NS { class AtomVecSphere : public AtomVec { public: AtomVecSphere(class LAMMPS *); - ~AtomVecSphere() {} void init(); - void grow(int); - void grow_reset(); - void copy(int, int, int); - int pack_comm(int, int *, double *, int, int *); - int pack_comm_vel(int, int *, double *, int, int *); - int pack_comm_hybrid(int, int *, double *); - void unpack_comm(int, int, double *); - void unpack_comm_vel(int, int, double *); - int unpack_comm_hybrid(int, int, double *); - int pack_reverse(int, int, double *); - int pack_reverse_hybrid(int, int, double *); - void unpack_reverse(int, int *, double *); - int unpack_reverse_hybrid(int, int *, double *); - int pack_border(int, int *, double *, int, int *); - int pack_border_vel(int, int *, double *, int, int *); - int pack_border_hybrid(int, int *, double *); - void unpack_border(int, int, double *); - void unpack_border_vel(int, int, double *); - int unpack_border_hybrid(int, int, double *); - int pack_exchange(int, double *); - int unpack_exchange(double *); - int size_restart(); - int pack_restart(int, double *); - int unpack_restart(double *); void create_atom(int, double *); void data_atom(double *, imageint, char **); - int data_atom_hybrid(int, char **); - void data_vel(int, char **); - int data_vel_hybrid(int, char **); - void pack_data(double **); - int pack_data_hybrid(int, double *); - void write_data(FILE *, int, double **); - int write_data_hybrid(FILE *, double *); - void pack_vel(double **); - int pack_vel_hybrid(int, double *); - void write_vel(FILE *, int, double **); - int write_vel_hybrid(FILE *, double *); - bigint memory_usage(); private: - tagint *tag; - int *type,*mask; - imageint *image; - double **x,**v,**f; - double *radius,*rmass; - double **omega,**torque; int radvary; }; @@ -85,15 +42,6 @@ class AtomVecSphere : public AtomVec { /* ERROR/WARNING messages: -E: Per-processor system is too big - -The number of owned atoms plus ghost atoms on a single -processor must fit in 32-bit integer. - -E: Invalid atom type in Atoms section of data file - -Atom types must range from 1 to specified # of types. - E: Invalid radius in Atoms section of data file Radius must be >= 0.0. -- GitLab From 6c18e366d7d2972a1bf79e6e5f5bd0dd7c0bb6af Mon Sep 17 00:00:00 2001 From: Steve Plimpton Date: Tue, 26 Nov 2019 18:34:51 -0700 Subject: [PATCH 007/717] changes to start to make atom style hybrid work --- src/DIPOLE/atom_vec_dipole.cpp | 12 +- src/DIPOLE/atom_vec_dipole.h | 2 +- src/MOLECULE/atom_vec_angle.cpp | 37 +- src/MOLECULE/atom_vec_angle.h | 8 +- src/MOLECULE/atom_vec_bond.cpp | 36 +- src/MOLECULE/atom_vec_bond.h | 8 +- src/MOLECULE/atom_vec_full.cpp | 43 +- src/MOLECULE/atom_vec_full.h | 9 +- src/MOLECULE/atom_vec_molecular.cpp | 43 +- src/MOLECULE/atom_vec_molecular.h | 9 +- src/MOLECULE/atom_vec_template.cpp | 17 +- src/MOLECULE/atom_vec_template.h | 4 +- src/PERI/atom_vec_peri.cpp | 14 +- src/PERI/atom_vec_peri.h | 2 +- src/SPIN/atom_vec_spin.cpp | 30 +- src/SPIN/atom_vec_spin.h | 2 +- src/atom.cpp | 1 + src/atom_vec.cpp | 490 +++++++------- src/atom_vec.h | 51 +- src/atom_vec_hybrid.cpp | 949 ++-------------------------- src/atom_vec_hybrid.h | 36 +- src/atom_vec_sphere.cpp | 80 ++- src/atom_vec_sphere.h | 8 +- src/special.cpp | 1 - 24 files changed, 523 insertions(+), 1369 deletions(-) diff --git a/src/DIPOLE/atom_vec_dipole.cpp b/src/DIPOLE/atom_vec_dipole.cpp index dc3279227d..650bc14d8f 100644 --- a/src/DIPOLE/atom_vec_dipole.cpp +++ b/src/DIPOLE/atom_vec_dipole.cpp @@ -55,16 +55,12 @@ AtomVecDipole::AtomVecDipole(LAMMPS *lmp) : AtomVec(lmp) } /* ---------------------------------------------------------------------- - unpack one line from Atoms section of data file - modify what the default AtomVec::data_atom() just initialized + modify what AtomVec::data_atom() just unpacked + or initialize other atom quantities ------------------------------------------------------------------------- */ -void AtomVecDipole::data_atom(double *coord, imageint imagetmp, char **values) +void AtomVecDipole::data_atom_post(int ilocal) { - AtomVec::data_atom(coord,imagetmp,values); - - int ilocal = atom->nlocal-1; - double mu = atom->mu[ilocal]; + double *mu = atom->mu[ilocal]; mu[3] = sqrt(mu[0]*mu[0] + mu[1]*mu[1] + mu[2]*mu[2]); } - diff --git a/src/DIPOLE/atom_vec_dipole.h b/src/DIPOLE/atom_vec_dipole.h index 6abcb4e2ea..45f33d109d 100644 --- a/src/DIPOLE/atom_vec_dipole.h +++ b/src/DIPOLE/atom_vec_dipole.h @@ -27,7 +27,7 @@ namespace LAMMPS_NS { class AtomVecDipole : public AtomVec { public: AtomVecDipole(class LAMMPS *); - void data_atom(double *, imageint, char **); + void data_atom_post(int); }; } diff --git a/src/MOLECULE/atom_vec_angle.cpp b/src/MOLECULE/atom_vec_angle.cpp index 79f5a7853e..df48c4b2a0 100644 --- a/src/MOLECULE/atom_vec_angle.cpp +++ b/src/MOLECULE/atom_vec_angle.cpp @@ -67,11 +67,10 @@ AtomVecAngle::~AtomVecAngle() } /* ---------------------------------------------------------------------- - pack atom I's data for restart file - modify/unmodify values for default AtomVec::pack_restart() to pack + modify values for AtomVec::pack_restart() to pack ------------------------------------------------------------------------- */ -int AtomVecAngle::pack_restart(int i, double *buf) +void AtomVecAngle::pack_restart_pre(int i) { // insure negative vectors are needed length @@ -110,51 +109,49 @@ int AtomVecAngle::pack_restart(int i, double *buf) any_angle_negative = 1; } else angle_negative[m] = 0; } +} - // perform the pack with adjusted values - - int n = AtomVec::pack_restart(i,buf); +/* ---------------------------------------------------------------------- + unmodify values packed by AtomVec::pack_restart() +------------------------------------------------------------------------- */ +void AtomVecAngle::pack_restart_post(int i) +{ // restore the flagged types to their negative values if (any_bond_negative) { + int *num_bond = atom->num_bond; + int **bond_type = atom->bond_type; for (int m = 0; m < num_bond[i]; m++) if (bond_negative[m]) bond_type[i][m] = -bond_type[i][m]; } + if (any_angle_negative) { + int *num_angle = atom->num_angle; + int **angle_type = atom->angle_type; for (int m = 0; m < num_angle[i]; m++) if (angle_negative[m]) angle_type[i][m] = -angle_type[i][m]; } - - return n; } /* ---------------------------------------------------------------------- - unpack data for one atom from restart file including extra quantities - initialize other atom quantities + initialize other atom quantities after AtomVec::unpack_restart() ------------------------------------------------------------------------- */ -int AtomVecAngle::unpack_restart(double *buf) +void AtomVecAngle::unpack_restart_init(int ilocal) { - AtomVec::unpack_restart(buf); - int ilocal = atom->nlocal-1; - atom->nspecial[ilocal][0] = 0; atom->nspecial[ilocal][1] = 0; atom->nspecial[ilocal][2] = 0; } /* ---------------------------------------------------------------------- - unpack one line from Atoms section of data file - modify what default AtomVec::data_atom() just unpacked + modify what AtomVec::data_atom() just unpacked or initialize other atom quantities ------------------------------------------------------------------------- */ -void AtomVecAngle::data_atom(double *coord, imageint imagetmp, char **values) +void AtomVecAngle::data_atom_post(int ilocal) { - AtomVec::data_atom(coord,imagetmp,values); - int ilocal = atom->nlocal-1; - atom->num_bond[ilocal] = 0; atom->num_angle[ilocal] = 0; atom->nspecial[ilocal][0] = 0; diff --git a/src/MOLECULE/atom_vec_angle.h b/src/MOLECULE/atom_vec_angle.h index 6511b517ee..48e55b0988 100644 --- a/src/MOLECULE/atom_vec_angle.h +++ b/src/MOLECULE/atom_vec_angle.h @@ -28,11 +28,13 @@ class AtomVecAngle : public AtomVec { public: AtomVecAngle(class LAMMPS *); ~AtomVecAngle(); - int pack_restart(int, double *); - int unpack_restart(double *); - void data_atom(double *, imageint, char **); + void pack_restart_pre(int); + void pack_restart_post(int); + void unpack_restart_init(int); + void data_atom_post(int); private: + int any_bond_negative,any_angle_negative; int bond_per_atom,angle_per_atom; int *bond_negative,*angle_negative; }; diff --git a/src/MOLECULE/atom_vec_bond.cpp b/src/MOLECULE/atom_vec_bond.cpp index 20cdfdd65a..fd3f08979d 100644 --- a/src/MOLECULE/atom_vec_bond.cpp +++ b/src/MOLECULE/atom_vec_bond.cpp @@ -61,11 +61,10 @@ AtomVecBond::~AtomVecBond() } /* ---------------------------------------------------------------------- - pack atom I's data for restart file - modify/unmodify values for default AtomVec::pack_restart() to pack + modify values for AtomVec::pack_restart() to pack ------------------------------------------------------------------------- */ -int AtomVecBond::pack_restart(int i, double *buf) +void AtomVecBond::pack_restart_pre(int i) { // insure bond_negative vector is needed length @@ -80,7 +79,7 @@ int AtomVecBond::pack_restart(int i, double *buf) int *num_bond = atom->num_bond; int **bond_type = atom->bond_type; - int any_bond_negative = 0; + any_bond_negative = 0; for (int m = 0; m < num_bond[i]; m++) { if (bond_type[i][m] < 0) { bond_negative[m] = 1; @@ -88,47 +87,42 @@ int AtomVecBond::pack_restart(int i, double *buf) any_bond_negative = 1; } else bond_negative[m] = 0; } +} - // perform the pack with adjusted values - - int n = AtomVec::pack_restart(i,buf); +/* ---------------------------------------------------------------------- + unmodify values packed by AtomVec::pack_restart() +------------------------------------------------------------------------- */ +void AtomVecBond::pack_restart_post(int i) +{ // restore the flagged types to their negative values if (any_bond_negative) { + int *num_bond = atom->num_bond; + int **bond_type = atom->bond_type; for (int m = 0; m < num_bond[i]; m++) if (bond_negative[m]) bond_type[i][m] = -bond_type[i][m]; } - - return n; } /* ---------------------------------------------------------------------- - unpack data for one atom from restart file including extra quantities - initialize other atom quantities + initialize other atom quantities after AtomVec::unpack_restart() ------------------------------------------------------------------------- */ -int AtomVecBond::unpack_restart(double *buf) +void AtomVecBond::unpack_restart_init(int ilocal) { - AtomVec::unpack_restart(buf); - int ilocal = atom->nlocal-1; - atom->nspecial[ilocal][0] = 0; atom->nspecial[ilocal][1] = 0; atom->nspecial[ilocal][2] = 0; } /* ---------------------------------------------------------------------- - unpack one line from Atoms section of data file - modify what default AtomVec::data_atom() just unpacked + modify what AtomVec::data_atom() just unpacked or initialize other atom quantities ------------------------------------------------------------------------- */ -void AtomVecBond::data_atom(double *coord, imageint imagetmp, char **values) +void AtomVecBond::data_atom_post(int ilocal) { - AtomVec::data_atom(coord,imagetmp,values); - int ilocal = atom->nlocal-1; - atom->num_bond[ilocal] = 0; atom->nspecial[ilocal][0] = 0; atom->nspecial[ilocal][1] = 0; diff --git a/src/MOLECULE/atom_vec_bond.h b/src/MOLECULE/atom_vec_bond.h index 9245bc317a..c2bf7d6680 100644 --- a/src/MOLECULE/atom_vec_bond.h +++ b/src/MOLECULE/atom_vec_bond.h @@ -28,11 +28,13 @@ class AtomVecBond : public AtomVec { public: AtomVecBond(class LAMMPS *); ~AtomVecBond(); - int pack_restart(int, double *); - int unpack_restart(double *); - void data_atom(double *, imageint, char **); + void pack_restart_pre(int); + void pack_restart_post(int); + void unpack_restart_init(int); + void data_atom_post(int); private: + int any_bond_negative; int bond_per_atom; int *bond_negative; }; diff --git a/src/MOLECULE/atom_vec_full.cpp b/src/MOLECULE/atom_vec_full.cpp index 826d5fea4e..ed838aa0e3 100644 --- a/src/MOLECULE/atom_vec_full.cpp +++ b/src/MOLECULE/atom_vec_full.cpp @@ -89,11 +89,10 @@ AtomVecFull::~AtomVecFull() } /* ---------------------------------------------------------------------- - pack atom I's data for restart file - modify/unmodify values for default AtomVec::pack_restart() to pack + modify values for AtomVec::pack_restart() to pack ------------------------------------------------------------------------- */ -int AtomVecFull::pack_restart(int i, double *buf) +void AtomVecFull::pack_restart_pre(int i) { // insure negative vectors are needed length @@ -164,59 +163,63 @@ int AtomVecFull::pack_restart(int i, double *buf) any_improper_negative = 1; } else improper_negative[m] = 0; } +} - // perform the pack with adjusted values - - int n = AtomVec::pack_restart(i,buf); +/* ---------------------------------------------------------------------- + unmodify values packed by AtomVec::pack_restart() +------------------------------------------------------------------------- */ +void AtomVecFull::pack_restart_post(int i) +{ // restore the flagged types to their negative values if (any_bond_negative) { + int *num_bond = atom->num_bond; + int **bond_type = atom->bond_type; for (int m = 0; m < num_bond[i]; m++) if (bond_negative[m]) bond_type[i][m] = -bond_type[i][m]; } + if (any_angle_negative) { + int *num_angle = atom->num_angle; + int **angle_type = atom->angle_type; for (int m = 0; m < num_angle[i]; m++) if (angle_negative[m]) angle_type[i][m] = -angle_type[i][m]; } + if (any_dihedral_negative) { + int *num_dihedral = atom->num_dihedral; + int **dihedral_type = atom->dihedral_type; for (int m = 0; m < num_dihedral[i]; m++) if (dihedral_negative[m]) dihedral_type[i][m] = -dihedral_type[i][m]; } + if (any_improper_negative) { + int *num_improper = atom->num_improper; + int **improper_type = atom->improper_type; for (int m = 0; m < num_improper[i]; m++) if (improper_negative[m]) improper_type[i][m] = -improper_type[i][m]; } - - return n; } /* ---------------------------------------------------------------------- - unpack data for one atom from restart file including extra quantities - initialize other atom quantities + initialize other atom quantities after AtomVec::unpack_restart() ------------------------------------------------------------------------- */ -int AtomVecFull::unpack_restart(double *buf) +void AtomVecFull::unpack_restart_init(int ilocal) { - AtomVec::unpack_restart(buf); - int ilocal = atom->nlocal-1; - atom->nspecial[ilocal][0] = 0; atom->nspecial[ilocal][1] = 0; atom->nspecial[ilocal][2] = 0; } /* ---------------------------------------------------------------------- - unpack one line from Atoms section of data file - modify what default AtomVec::data_atom() just unpacked + modify what AtomVec::data_atom() just unpacked or initialize other atom quantities ------------------------------------------------------------------------- */ -void AtomVecFull::data_atom(double *coord, imageint imagetmp, char **values) +void AtomVecFull::data_atom_post(int ilocal) { - AtomVec::data_atom(coord,imagetmp,values); - int ilocal = atom->nlocal-1; - atom->num_bond[ilocal] = 0; atom->num_angle[ilocal] = 0; atom->num_dihedral[ilocal] = 0; diff --git a/src/MOLECULE/atom_vec_full.h b/src/MOLECULE/atom_vec_full.h index b194a86994..455bbd0d5e 100644 --- a/src/MOLECULE/atom_vec_full.h +++ b/src/MOLECULE/atom_vec_full.h @@ -28,11 +28,14 @@ class AtomVecFull : public AtomVec { public: AtomVecFull(class LAMMPS *); ~AtomVecFull(); - int pack_restart(int, double *); - int unpack_restart(double *); - void data_atom(double *, imageint, char **); + void pack_restart_pre(int); + void pack_restart_post(int); + void unpack_restart_init(int); + void data_atom_post(int); private: + int any_bond_negative,any_angle_negative, + any_dihedral_negative,any_improper_negative; int bond_per_atom,angle_per_atom,dihedral_per_atom,improper_per_atom; int *bond_negative,*angle_negative,*dihedral_negative,*improper_negative; }; diff --git a/src/MOLECULE/atom_vec_molecular.cpp b/src/MOLECULE/atom_vec_molecular.cpp index dad7c5cea6..77aec2cf50 100644 --- a/src/MOLECULE/atom_vec_molecular.cpp +++ b/src/MOLECULE/atom_vec_molecular.cpp @@ -89,11 +89,10 @@ AtomVecMolecular::~AtomVecMolecular() } /* ---------------------------------------------------------------------- - pack atom I's data for restart file - modify/unmodify values for default AtomVec::pack_restart() to pack + modify values for AtomVec::pack_restart() to pack ------------------------------------------------------------------------- */ -int AtomVecMolecular::pack_restart(int i, double *buf) +void AtomVecMolecular::pack_restart_pre(int i) { // insure negative vectors are needed length @@ -164,59 +163,63 @@ int AtomVecMolecular::pack_restart(int i, double *buf) any_improper_negative = 1; } else improper_negative[m] = 0; } +} - // perform the pack with adjusted values - - int n = AtomVec::pack_restart(i,buf); +/* ---------------------------------------------------------------------- + unmodify values packed by AtomVec::pack_restart() +------------------------------------------------------------------------- */ +void AtomVecMolecular::pack_restart_post(int i) +{ // restore the flagged types to their negative values if (any_bond_negative) { + int *num_bond = atom->num_bond; + int **bond_type = atom->bond_type; for (int m = 0; m < num_bond[i]; m++) if (bond_negative[m]) bond_type[i][m] = -bond_type[i][m]; } + if (any_angle_negative) { + int *num_angle = atom->num_angle; + int **angle_type = atom->angle_type; for (int m = 0; m < num_angle[i]; m++) if (angle_negative[m]) angle_type[i][m] = -angle_type[i][m]; } + if (any_dihedral_negative) { + int *num_dihedral = atom->num_dihedral; + int **dihedral_type = atom->dihedral_type; for (int m = 0; m < num_dihedral[i]; m++) if (dihedral_negative[m]) dihedral_type[i][m] = -dihedral_type[i][m]; } + if (any_improper_negative) { + int *num_improper = atom->num_improper; + int **improper_type = atom->improper_type; for (int m = 0; m < num_improper[i]; m++) if (improper_negative[m]) improper_type[i][m] = -improper_type[i][m]; } - - return n; } /* ---------------------------------------------------------------------- - unpack data for one atom from restart file including extra quantities - initialize other atom quantities + initialize other atom quantities after AtomVec::unpack_restart() ------------------------------------------------------------------------- */ -int AtomVecMolecular::unpack_restart(double *buf) +void AtomVecMolecular::unpack_restart_init(int ilocal) { - AtomVec::unpack_restart(buf); - int ilocal = atom->nlocal-1; - atom->nspecial[ilocal][0] = 0; atom->nspecial[ilocal][1] = 0; atom->nspecial[ilocal][2] = 0; } /* ---------------------------------------------------------------------- - unpack one line from Atoms section of data file - modify what default AtomVec::data_atom() just unpacked + modify what AtomVec::data_atom() just unpacked or initialize other atom quantities ------------------------------------------------------------------------- */ -void AtomVecMolecular::data_atom(double *coord, imageint imagetmp, char **values) +void AtomVecMolecular::data_atom_post(int ilocal) { - AtomVec::data_atom(coord,imagetmp,values); - int ilocal = atom->nlocal-1; - atom->num_bond[ilocal] = 0; atom->num_angle[ilocal] = 0; atom->num_dihedral[ilocal] = 0; diff --git a/src/MOLECULE/atom_vec_molecular.h b/src/MOLECULE/atom_vec_molecular.h index cba6d1b480..5b79f8b5c6 100644 --- a/src/MOLECULE/atom_vec_molecular.h +++ b/src/MOLECULE/atom_vec_molecular.h @@ -28,11 +28,14 @@ class AtomVecMolecular : public AtomVec { public: AtomVecMolecular(class LAMMPS *); ~AtomVecMolecular(); - int pack_restart(int, double *); - int unpack_restart(double *); - void data_atom(double *, imageint, char **); + void pack_restart_pre(int); + void pack_restart_post(int); + void unpack_restart_init(int); + void data_atom_post(int); private: + int any_bond_negative,any_angle_negative, + any_dihedral_negative,any_improper_negative; int bond_per_atom,angle_per_atom,dihedral_per_atom,improper_per_atom; int *bond_negative,*angle_negative,*dihedral_negative,*improper_negative; }; diff --git a/src/MOLECULE/atom_vec_template.cpp b/src/MOLECULE/atom_vec_template.cpp index 31d9af4caf..d22e9abfb3 100644 --- a/src/MOLECULE/atom_vec_template.cpp +++ b/src/MOLECULE/atom_vec_template.cpp @@ -97,29 +97,22 @@ void AtomVecTemplate::process_args(int narg, char **arg) } /* ---------------------------------------------------------------------- - create one atom of itype at coord - modify what default AtomVec::create_atom() just created + initialize other atom quantities ------------------------------------------------------------------------- */ -void AtomVecTemplate::create_atom(int itype, double *coord) +void AtomVecTemplate::create_atom_post(int ilocal) { - AtomVec::create_atom(itype,coord); - - int ilocal = atom->nlocal-1; atom->molindex[ilocal] = -1; atom->molatom[ilocal] = -1; } /* ---------------------------------------------------------------------- - unpack one line from Atoms section of data file - error check what default AtomVec::data_atom() just unpacked + modify what AtomVec::data_atom() just unpacked + or initialize other atom quantities ------------------------------------------------------------------------- */ -void AtomVecTemplate::data_atom(double *coord, imageint imagetmp, char **values) +void AtomVecTemplate::data_atom_post(int ilocal) { - AtomVec::data_atom(coord,imagetmp,values); - - int ilocal = atom->nlocal-1; int molindex = atom->molindex[ilocal]; int molatom = atom->molatom[ilocal]; diff --git a/src/MOLECULE/atom_vec_template.h b/src/MOLECULE/atom_vec_template.h index 59a1386f2d..52ef5e70e1 100644 --- a/src/MOLECULE/atom_vec_template.h +++ b/src/MOLECULE/atom_vec_template.h @@ -28,8 +28,8 @@ class AtomVecTemplate : public AtomVec { public: AtomVecTemplate(class LAMMPS *); void process_args(int, char **); - void create_atom(int, double *); - void data_atom(double *, imageint, char **); + void create_atom_post(int); + void data_atom_post(int); }; } diff --git a/src/PERI/atom_vec_peri.cpp b/src/PERI/atom_vec_peri.cpp index 29c4cb0d83..5450b23293 100644 --- a/src/PERI/atom_vec_peri.cpp +++ b/src/PERI/atom_vec_peri.cpp @@ -88,20 +88,16 @@ void AtomVecPeri::create_atom(int itype, double *coord) } /* ---------------------------------------------------------------------- - unpack one line from Atoms section of data file - modify what default AtomVec::data_atom() just unpacked + modify what AtomVec::data_atom() just unpacked or initialize other atom quantities ------------------------------------------------------------------------- */ -void AtomVecPeri::data_atom(double *coord, imageint imagetmp, char **values) +void AtomVecPeri::data_atom_post(int ilocal) { - AtomVec::data_atom(coord,imagetmp,values); - int ilocal = atom->nlocal-1; - atom->s0[ilocal] = DBL_MAX; - atom->x0[ilocal][0] = coord[0]; - atom->x0[ilocal][1] = coord[1]; - atom->x0[ilocal][2] = coord[2]; + atom->x0[ilocal][0] = atom->x[ilocal][0]; + atom->x0[ilocal][1] = atom->x[ilocal][1]; + atom->x0[ilocal][2] = atom->x[ilocal][2]; if (atom->rmass[ilocal] <= 0.0) error->one(FLERR,"Invalid mass in Atoms section of data file"); diff --git a/src/PERI/atom_vec_peri.h b/src/PERI/atom_vec_peri.h index 12ef650348..3b41950a6f 100644 --- a/src/PERI/atom_vec_peri.h +++ b/src/PERI/atom_vec_peri.h @@ -28,7 +28,7 @@ class AtomVecPeri : public AtomVec { public: AtomVecPeri(class LAMMPS *); void create_atom(int, double *); - void data_atom(double *, imageint, char **); + void data_atom_post(int); int property_atom(char *); void pack_property_atom(int, double *, int, int); }; diff --git a/src/SPIN/atom_vec_spin.cpp b/src/SPIN/atom_vec_spin.cpp index 135f8936a1..6c88fb1a9e 100644 --- a/src/SPIN/atom_vec_spin.cpp +++ b/src/SPIN/atom_vec_spin.cpp @@ -62,30 +62,26 @@ AtomVecSpin::AtomVecSpin(LAMMPS *lmp) : AtomVec(lmp) } /* ---------------------------------------------------------------------- - unpack one line from Atoms section of data file - modify what default AtomVec::data_atom() just unpacked - or initialize other atom quantities + clear all forces (mechanical and magnetic) ------------------------------------------------------------------------- */ -void AtomVecSpin::data_atom(double *coord, imageint imagetmp, char **values) +void AtomVecSpin::force_clear(int /*n*/, size_t nbytes) { - AtomVec::data_atom(coord,imagetmp,values); - int ilocal = atom->nlocal-1; - - double *sp = atom->sp[ilocal]; - double inorm = 1.0/sqrt(sp[0]*sp[0] + sp[1]*sp[1] + sp[2]*sp[2]); - sp[0] *= inorm; - sp[1] *= inorm; - sp[2] *= inorm; + memset(&atom->f[0][0],0,3*nbytes); + memset(&atom->fm[0][0],0,3*nbytes); + memset(&atom->fm_long[0][0],0,3*nbytes); } /* ---------------------------------------------------------------------- - clear all forces (mech and mag) + modify what AtomVec::data_atom() just unpacked + or initialize other atom quantities ------------------------------------------------------------------------- */ -void AtomVecSpin::force_clear(int /*n*/, size_t nbytes) +void AtomVecSpin::data_atom_post(int ilocal) { - memset(&atom->f[0][0],0,3*nbytes); - memset(&atom->fm[0][0],0,3*nbytes); - memset(&atom->fm_long[0][0],0,3*nbytes); + double *sp = atom->sp[ilocal]; + double inorm = 1.0/sqrt(sp[0]*sp[0] + sp[1]*sp[1] + sp[2]*sp[2]); + sp[0] *= inorm; + sp[1] *= inorm; + sp[2] *= inorm; } diff --git a/src/SPIN/atom_vec_spin.h b/src/SPIN/atom_vec_spin.h index ca92cccc2e..c68f3a0419 100644 --- a/src/SPIN/atom_vec_spin.h +++ b/src/SPIN/atom_vec_spin.h @@ -27,8 +27,8 @@ namespace LAMMPS_NS { class AtomVecSpin : public AtomVec { public: AtomVecSpin(class LAMMPS *); - void data_atom(double *, imageint, char **); void force_clear(int, size_t); + void data_atom_post(int); }; } diff --git a/src/atom.cpp b/src/atom.cpp index 7f1a5a6022..e1736e321c 100644 --- a/src/atom.cpp +++ b/src/atom.cpp @@ -2498,3 +2498,4 @@ bigint Atom::memory_usage() return bytes; } + diff --git a/src/atom_vec.cpp b/src/atom_vec.cpp index 428117f0db..776d7a4619 100644 --- a/src/atom_vec.cpp +++ b/src/atom_vec.cpp @@ -145,223 +145,6 @@ void AtomVec::init() error->all(FLERR,"KOKKOS package requires a kokkos enabled atom_style"); } -/* ---------------------------------------------------------------------- - process field strings to initialize data structs for all other methods -------------------------------------------------------------------------- */ - -void AtomVec::setup_fields() -{ - int n,cols; - - if (!fields_data_atom) - error->all(FLERR,"Atom style requires fields_data_atom"); - - // process field strings - // return # of fields and matching index into atom->peratom (in Method struct) - - ngrow = process_fields(fields_grow,default_grow,&mgrow); - ncopy = process_fields(fields_copy,default_copy,&mcopy); - ncomm = process_fields(fields_comm,default_comm,&mcomm); - ncomm_vel = process_fields(fields_comm_vel,default_comm_vel,&mcomm_vel); - nreverse = process_fields(fields_reverse,default_reverse,&mreverse); - nborder = process_fields(fields_border,default_border,&mborder); - nborder_vel = process_fields(fields_border_vel,default_border_vel,&mborder_vel); - nexchange = process_fields(fields_exchange,default_exchange,&mexchange); - nrestart = process_fields(fields_restart,default_restart,&mrestart); - ncreate = process_fields(fields_create,default_create,&mcreate); - ndata_atom = process_fields(fields_data_atom,default_data_atom,&mdata_atom); - ndata_vel = process_fields(fields_data_vel,default_data_vel,&mdata_vel); - - // populate field-based data struct for each method to use - - create_method(ngrow,&mgrow); - create_method(ncopy,&mcopy); - create_method(ncomm,&mcomm); - create_method(ncomm_vel,&mcomm_vel); - create_method(nreverse,&mreverse); - create_method(nborder,&mborder); - create_method(nborder_vel,&mborder_vel); - create_method(nexchange,&mexchange); - create_method(nrestart,&mrestart); - create_method(ncreate,&mcreate); - create_method(ndata_atom,&mdata_atom); - create_method(ndata_vel,&mdata_vel); - - // create threads data struct for grow and memory_usage to use - - threads = new int[ngrow]; - for (int i = 0; i < ngrow; i++) { - Atom::PerAtom *field = &atom->peratom[mgrow.index[i]]; - if (field->threadflag) threads[i] = nthreads; - else threads[i] = 1; - } - - // set style-specific variables - // NOTE: check for others vars in atom_vec.cpp/h ?? - - if (ncomm == 0) comm_x_only = 1; - else comm_x_only = 0; - - if (nreverse == 0) comm_f_only = 1; - else comm_f_only = 0; - - size_forward = 3; - for (n = 0; n < ncomm; n++) { - cols = mcomm.cols[n]; - if (cols == 0) size_forward++; - else size_forward += cols; - } - - size_reverse = 3; - for (n = 0; n < nreverse; n++) { - cols = mreverse.cols[n]; - if (cols == 0) size_reverse++; - else size_reverse += cols; - } - - size_border = 6; - for (n = 0; n < nborder; n++) { - cols = mborder.cols[n]; - if (cols == 0) size_border++; - else size_border += cols; - } - - size_velocity = 3; - for (n = 0; n < ncomm_vel; n++) { - cols = mcomm_vel.cols[n]; - if (cols == 0) size_velocity++; - else size_velocity += cols; - } - - size_data_atom = 0; - for (n = 0; n < ndata_atom; n++) { - cols = mdata_atom.cols[n]; - if (strcmp(atom->peratom[mdata_atom.index[n]].name,"x") == 0) - xcol_data = size_data_atom + 1; - if (cols == 0) size_data_atom++; - else size_data_atom += cols; - } - - size_data_vel = 4; - for (n = 0; n < ndata_vel; n++) { - cols = mdata_vel.cols[n]; - if (cols == 0) size_data_vel++; - else size_data_vel += cols; - } -} - -/* ---------------------------------------------------------------------- - process a single field string -------------------------------------------------------------------------- */ - -int AtomVec::process_fields(char *list, const char *default_list, Method *method) -{ - int i,n; - char match[128]; - - if (list == NULL) { - method->index = NULL; - return 0; - } - - // make copy of list of fields so can tokenize it - - n = strlen(list) + 1; - char *copy = new char[n]; - strcpy(copy,list); - - int nfield = atom->count_words(copy); - int *index = new int[nfield]; - - Atom::PerAtom *peratom = atom->peratom; - int nperatom = atom->nperatom; - - nfield = 0; - char *field = strtok(copy," "); - while (field) { - - // find field in master Atom::peratom list - - for (i = 0; i < nperatom; i++) - if (strcmp(field,peratom[i].name) == 0) break; - if (i == nperatom) error->all(FLERR,"Atom_style unrecognized peratom field"); - index[nfield++] = i; - - // error if field is in default list or appears multiple times - - sprintf(match," %s ",field); - if (strstr(default_list,match)) - error->all(FLERR,"Atom_style repeat of default peratom field"); - - for (i = 0; i < nfield-1; i++) - if (index[i] == index[nfield-1]) - error->all(FLERR,"Atom_style duplicated peratom field"); - - field = strtok(NULL," "); - } - - delete [] copy; - - method->index = index; - return nfield; -} - -/* ---------------------------------------------------------------------- - create a method data structs for processing fields -------------------------------------------------------------------------- */ - -void AtomVec::create_method(int nfield, Method *method) -{ - method->pdata = new void*[nfield]; - method->datatype = new int[nfield]; - method->cols = new int[nfield]; - method->maxcols = new int*[nfield]; - method->collength = new int[nfield]; - method->plength = new void*[nfield]; - - for (int i = 0; i < nfield; i++) { - Atom::PerAtom *field = &atom->peratom[method->index[i]]; - method->pdata[i] = (void *) field->address; - method->datatype[i] = field->datatype; - method->cols[i] = field->cols; - if (method->cols[i] < 0) { - method->maxcols[i] = field->address_maxcols; - method->collength[i] = field->collength; - method->plength[i] = field->address_length; - } - } -} - -/* ---------------------------------------------------------------------- - free memory in a method data structs -------------------------------------------------------------------------- */ - -void AtomVec::init_method(Method *method) -{ - method->pdata = NULL; - method->datatype = NULL; - method->cols = NULL; - method->maxcols = NULL; - method->collength = NULL; - method->plength = NULL; - method->index = NULL; -} - -/* ---------------------------------------------------------------------- - free memory in a method data structs -------------------------------------------------------------------------- */ - -void AtomVec::destroy_method(Method *method) -{ - delete [] method->pdata; - delete [] method->datatype; - delete [] method->cols; - delete [] method->maxcols; - delete [] method->collength; - delete [] method->plength; - delete [] method->index; -} - /* ---------------------------------------------------------------------- grow nmax so it is a multiple of DELTA ------------------------------------------------------------------------- */ @@ -446,18 +229,6 @@ void AtomVec::grow(int n) modify->fix[atom->extra_grow[iextra]]->grow_arrays(nmax); } -/* ---------------------------------------------------------------------- - reset local array ptrs -------------------------------------------------------------------------- */ - -void AtomVec::grow_reset() -{ - // NOTE: is this method needed anymore - tag = atom->tag; type = atom->type; - mask = atom->mask; image = atom->image; - x = atom->x; v = atom->v; f = atom->f; -} - /* ---------------------------------------------------------------------- copy atom I info to atom J ------------------------------------------------------------------------- */ @@ -1614,6 +1385,10 @@ int AtomVec::pack_restart(int i, double *buf) int mm,nn,datatype,cols,collength,ncols; void *pdata,*plength; + // if needed, change values before packing + + pack_restart_pre(i); + int m = 1; buf[m++] = x[i][0]; buf[m++] = x[i][1]; @@ -1684,6 +1459,12 @@ int AtomVec::pack_restart(int i, double *buf) } } + // if needed, restore values after packing + + pack_restart_post(i); + + // invoke fixes which store peratom restart info + for (int iextra = 0; iextra < atom->nextra_restart; iextra++) m += modify->fix[atom->extra_restart[iextra]]->pack_restart(i,&buf[m]); @@ -1777,6 +1558,12 @@ int AtomVec::unpack_restart(double *buf) } } + // if needed, initialize other peratom values + + unpack_restart_init(nlocal); + + // store extra restart info which fixes can unpack when instantiated + double **extra = atom->extra; if (atom->nextra_store) { int size = static_cast (buf[0]) - m; @@ -1812,7 +1599,7 @@ void AtomVec::create_atom(int itype, double *coord) v[nlocal][1] = 0.0; v[nlocal][2] = 0.0; - // special-case initialization for some fields + // initialization additional fields for (n = 0; n < ncreate; n++) { pdata = mcreate.pdata[n]; @@ -1848,12 +1635,16 @@ void AtomVec::create_atom(int itype, double *coord) } } + // if needed, initialize other peratom values + + create_atom_post(nlocal); + atom->nlocal++; } /* ---------------------------------------------------------------------- unpack one line from Atoms section of data file - initialize other atom quantities + initialize other peratom quantities ------------------------------------------------------------------------- */ void AtomVec::data_atom(double *coord, imageint imagetmp, char **values) @@ -1919,6 +1710,10 @@ void AtomVec::data_atom(double *coord, imageint imagetmp, char **values) if (atom->type[nlocal] <= 0 || atom->type[nlocal] > atom->ntypes) error->one(FLERR,"Invalid atom type in Atoms section of data file"); + // if needed, modify unpacked values or initialize other peratom values + + data_atom_post(nlocal); + atom->nlocal++; } @@ -1933,6 +1728,11 @@ void AtomVec::pack_data(double **buf) int nlocal = atom->nlocal; for (int i = 0; i < nlocal; i++) { + + // if needed, change values before packing + + pack_data_pre(i); + j = 0; for (n = 0; n < ndata_atom; n++) { pdata = mdata_atom.pdata[n]; @@ -1971,6 +1771,10 @@ void AtomVec::pack_data(double **buf) buf[i][j++] = ubuf((image[i] & IMGMASK) - IMGMAX).d; buf[i][j++] = ubuf((image[i] >> IMGBITS & IMGMASK) - IMGMAX).d; buf[i][j++] = ubuf((image[i] >> IMG2BITS) - IMGMAX).d; + + // if needed, restore values after packing + + pack_data_post(i); } } @@ -2493,3 +2297,227 @@ bigint AtomVec::memory_usage() return bytes; } + +// ---------------------------------------------------------------------- +// internal methods +// ---------------------------------------------------------------------- + +/* ---------------------------------------------------------------------- + process field strings to initialize data structs for all other methods +------------------------------------------------------------------------- */ + +void AtomVec::setup_fields() +{ + int n,cols; + + if (!fields_data_atom) + error->all(FLERR,"Atom style requires fields_data_atom"); + if (strstr(fields_data_atom,"id ") != fields_data_atom) + error->all(FLERR,"Atom style fields_data_atom must have id as first field"); + + // process field strings + // return # of fields and matching index into atom->peratom (in Method struct) + + ngrow = process_fields(fields_grow,default_grow,&mgrow); + ncopy = process_fields(fields_copy,default_copy,&mcopy); + ncomm = process_fields(fields_comm,default_comm,&mcomm); + ncomm_vel = process_fields(fields_comm_vel,default_comm_vel,&mcomm_vel); + nreverse = process_fields(fields_reverse,default_reverse,&mreverse); + nborder = process_fields(fields_border,default_border,&mborder); + nborder_vel = process_fields(fields_border_vel,default_border_vel,&mborder_vel); + nexchange = process_fields(fields_exchange,default_exchange,&mexchange); + nrestart = process_fields(fields_restart,default_restart,&mrestart); + ncreate = process_fields(fields_create,default_create,&mcreate); + ndata_atom = process_fields(fields_data_atom,default_data_atom,&mdata_atom); + ndata_vel = process_fields(fields_data_vel,default_data_vel,&mdata_vel); + + // populate field-based data struct for each method to use + + create_method(ngrow,&mgrow); + create_method(ncopy,&mcopy); + create_method(ncomm,&mcomm); + create_method(ncomm_vel,&mcomm_vel); + create_method(nreverse,&mreverse); + create_method(nborder,&mborder); + create_method(nborder_vel,&mborder_vel); + create_method(nexchange,&mexchange); + create_method(nrestart,&mrestart); + create_method(ncreate,&mcreate); + create_method(ndata_atom,&mdata_atom); + create_method(ndata_vel,&mdata_vel); + + // create threads data struct for grow and memory_usage to use + + threads = new int[ngrow]; + for (int i = 0; i < ngrow; i++) { + Atom::PerAtom *field = &atom->peratom[mgrow.index[i]]; + if (field->threadflag) threads[i] = nthreads; + else threads[i] = 1; + } + + // set style-specific variables + // NOTE: check for others vars in atom_vec.cpp/h ?? + // NOTE: need to set maxexchange, e.g for style hybrid? + + if (ncomm == 0) comm_x_only = 1; + else comm_x_only = 0; + + if (nreverse == 0) comm_f_only = 1; + else comm_f_only = 0; + + size_forward = 3; + for (n = 0; n < ncomm; n++) { + cols = mcomm.cols[n]; + if (cols == 0) size_forward++; + else size_forward += cols; + } + + size_reverse = 3; + for (n = 0; n < nreverse; n++) { + cols = mreverse.cols[n]; + if (cols == 0) size_reverse++; + else size_reverse += cols; + } + + size_border = 6; + for (n = 0; n < nborder; n++) { + cols = mborder.cols[n]; + if (cols == 0) size_border++; + else size_border += cols; + } + + size_velocity = 3; + for (n = 0; n < ncomm_vel; n++) { + cols = mcomm_vel.cols[n]; + if (cols == 0) size_velocity++; + else size_velocity += cols; + } + + size_data_atom = 0; + for (n = 0; n < ndata_atom; n++) { + cols = mdata_atom.cols[n]; + if (strcmp(atom->peratom[mdata_atom.index[n]].name,"x") == 0) + xcol_data = size_data_atom + 1; + if (cols == 0) size_data_atom++; + else size_data_atom += cols; + } + + size_data_vel = 4; + for (n = 0; n < ndata_vel; n++) { + cols = mdata_vel.cols[n]; + if (cols == 0) size_data_vel++; + else size_data_vel += cols; + } +} + +/* ---------------------------------------------------------------------- + process a single field string +------------------------------------------------------------------------- */ + +int AtomVec::process_fields(char *list, const char *default_list, Method *method) +{ + int i,n; + char match[128]; + + if (list == NULL) { + method->index = NULL; + return 0; + } + + // make copy of list of fields so can tokenize it + + n = strlen(list) + 1; + char *copy = new char[n]; + strcpy(copy,list); + + int nfield = atom->count_words(copy); + int *index = new int[nfield]; + + Atom::PerAtom *peratom = atom->peratom; + int nperatom = atom->nperatom; + + nfield = 0; + char *field = strtok(copy," "); + while (field) { + + // find field in master Atom::peratom list + + for (i = 0; i < nperatom; i++) + if (strcmp(field,peratom[i].name) == 0) break; + if (i == nperatom) error->all(FLERR,"Atom_style unrecognized peratom field"); + index[nfield++] = i; + + // error if field is in default list or appears multiple times + + sprintf(match," %s ",field); + if (strstr(default_list,match)) + error->all(FLERR,"Atom_style repeat of default peratom field"); + + for (i = 0; i < nfield-1; i++) + if (index[i] == index[nfield-1]) + error->all(FLERR,"Atom_style duplicated peratom field"); + + field = strtok(NULL," "); + } + + delete [] copy; + + method->index = index; + return nfield; +} + +/* ---------------------------------------------------------------------- + create a method data structs for processing fields +------------------------------------------------------------------------- */ + +void AtomVec::create_method(int nfield, Method *method) +{ + method->pdata = new void*[nfield]; + method->datatype = new int[nfield]; + method->cols = new int[nfield]; + method->maxcols = new int*[nfield]; + method->collength = new int[nfield]; + method->plength = new void*[nfield]; + + for (int i = 0; i < nfield; i++) { + Atom::PerAtom *field = &atom->peratom[method->index[i]]; + method->pdata[i] = (void *) field->address; + method->datatype[i] = field->datatype; + method->cols[i] = field->cols; + if (method->cols[i] < 0) { + method->maxcols[i] = field->address_maxcols; + method->collength[i] = field->collength; + method->plength[i] = field->address_length; + } + } +} + +/* ---------------------------------------------------------------------- + free memory in a method data structs +------------------------------------------------------------------------- */ + +void AtomVec::init_method(Method *method) +{ + method->pdata = NULL; + method->datatype = NULL; + method->cols = NULL; + method->maxcols = NULL; + method->collength = NULL; + method->plength = NULL; + method->index = NULL; +} + +/* ---------------------------------------------------------------------- + free memory in a method data structs +------------------------------------------------------------------------- */ + +void AtomVec::destroy_method(Method *method) +{ + delete [] method->pdata; + delete [] method->datatype; + delete [] method->cols; + delete [] method->maxcols; + delete [] method->collength; + delete [] method->plength; + delete [] method->index; +} diff --git a/src/atom_vec.h b/src/atom_vec.h index c3551b541d..8ed6fff35f 100644 --- a/src/atom_vec.h +++ b/src/atom_vec.h @@ -49,60 +49,68 @@ class AtomVec : protected Pointers { int nargcopy; // copy of command-line args for atom_style command char **argcopy; // used when AtomVec is realloced (restart,replicate) + // additional list of peratom fields operated on by different methods + // set by child styles + + char *fields_grow,*fields_copy; + char *fields_comm,*fields_comm_vel,*fields_reverse; + char *fields_border,*fields_border_vel; + char *fields_exchange,*fields_restart; + char *fields_create,*fields_data_atom,*fields_data_vel; + + // methods + AtomVec(class LAMMPS *); virtual ~AtomVec(); void store_args(int, char **); virtual void process_args(int, char **); virtual void init(); + virtual void force_clear(int, size_t) {} + void grow(int); - void grow_reset(); void copy(int, int, int); void clear_bonus() {} - void force_clear(int, size_t) {} int pack_comm(int, int *, double *, int, int *); int pack_comm_vel(int, int *, double *, int, int *); - int pack_comm_hybrid(int, int *, double *) {return 0;} void unpack_comm(int, int, double *); void unpack_comm_vel(int, int, double *); - int unpack_comm_hybrid(int, int, double *) {return 0;} int pack_reverse(int, int, double *); - int pack_reverse_hybrid(int, int, double *) {return 0;} void unpack_reverse(int, int *, double *); - int unpack_reverse_hybrid(int, int *, double *) {return 0;} int pack_border(int, int *, double *, int, int *); int pack_border_vel(int, int *, double *, int, int *); - int pack_border_hybrid(int, int *, double *) {return 0;} void unpack_border(int, int, double *); void unpack_border_vel(int, int, double *); - int unpack_border_hybrid(int, int, double *) {return 0;} int pack_exchange(int, double *); int unpack_exchange(double *); int size_restart(); - virtual int pack_restart(int, double *); - virtual int unpack_restart(double *); + virtual void pack_restart_pre(int) {} + int pack_restart(int, double *); + virtual void pack_restart_post(int) {} + int unpack_restart(double *); + virtual void unpack_restart_init(int) {} - virtual void create_atom(int, double *); + void create_atom(int, double *); + virtual void create_atom_post(int) {} + + void data_atom(double *, imageint, char **); + virtual void data_atom_post(int) {} - virtual void data_atom(double *, imageint, char **); void data_atom_bonus(int, char **) {} - int data_atom_hybrid(int, char **) {return 0;} void data_vel(int, char **); - int data_vel_hybrid(int, char **) {return 0;} + virtual void pack_data_pre(int) {} void pack_data(double **); + virtual void pack_data_post(int) {} int pack_data_hybrid(int, double *) {return 0;} void write_data(FILE *, int, double **); - int write_data_hybrid(FILE *, double *) {return 0;} void pack_vel(double **); - int pack_vel_hybrid(int, double *) {return 0;} void write_vel(FILE *, int, double **); - int write_vel_hybrid(FILE *, double *) {return 0;} int pack_bond(tagint **); void write_bond(FILE *, int, tagint **, int); @@ -129,18 +137,15 @@ class AtomVec : protected Pointers { imageint *image; double **x,**v,**f; + // standard list of peratom fields always operated on by different methods + // common to all styles, so not listed in field strings + const char *default_grow,*default_copy; const char *default_comm,*default_comm_vel,*default_reverse; const char *default_border,*default_border_vel; const char *default_exchange,*default_restart; const char *default_create,*default_data_atom,*default_data_vel; - char *fields_grow,*fields_copy; - char *fields_comm,*fields_comm_vel,*fields_reverse; - char *fields_border,*fields_border_vel; - char *fields_exchange,*fields_restart; - char *fields_create,*fields_data_atom,*fields_data_vel; - struct Method { void **pdata; int *datatype; diff --git a/src/atom_vec_hybrid.cpp b/src/atom_vec_hybrid.cpp index 4ca0dfbba5..d96494544c 100644 --- a/src/atom_vec_hybrid.cpp +++ b/src/atom_vec_hybrid.cpp @@ -35,6 +35,15 @@ AtomVecHybrid::~AtomVecHybrid() delete [] styles; for (int k = 0; k < nstyles; k++) delete [] keywords[k]; delete [] keywords; + + // these strings will be concatenated from sub-style strings + // fields_data_atom must start with fields common to all styles + + fields_grow = fields_copy = fields_comm = fields_comm_vel = NULL; + fields_reverse = fields_border = fields_border_vel = NULL; + fields_exchange = fields_restart = fields_create = NULL; + fields_data_atom = (char *) "id type x"; + fields_data_vel = NULL; } /* ---------------------------------------------------------------------- @@ -81,930 +90,65 @@ void AtomVecHybrid::process_args(int narg, char **arg) for (int i = 0; i < nallstyles; i++) delete [] allstyles[i]; delete [] allstyles; - // hybrid settings are MAX or MIN of sub-style settings - // hybrid sizes are minimal values plus extra values for each sub-style - - molecular = 0; - comm_x_only = comm_f_only = 1; - - size_forward = 3; - size_reverse = 3; - size_border = 6; - size_data_atom = 5; - size_data_vel = 4; - xcol_data = 3; - maxexchange = 0; - - for (int k = 0; k < nstyles; k++) { - if ((styles[k]->molecular == 1 && molecular == 2) || - (styles[k]->molecular == 2 && molecular == 1)) - error->all(FLERR,"Cannot mix molecular and molecule template " - "atom styles"); - molecular = MAX(molecular,styles[k]->molecular); - - bonds_allow = MAX(bonds_allow,styles[k]->bonds_allow); - angles_allow = MAX(angles_allow,styles[k]->angles_allow); - dihedrals_allow = MAX(dihedrals_allow,styles[k]->dihedrals_allow); - impropers_allow = MAX(impropers_allow,styles[k]->impropers_allow); - mass_type = MAX(mass_type,styles[k]->mass_type); - dipole_type = MAX(dipole_type,styles[k]->dipole_type); - forceclearflag = MAX(forceclearflag,styles[k]->forceclearflag); - - if (styles[k]->molecular == 2) onemols = styles[k]->onemols; - - comm_x_only = MIN(comm_x_only,styles[k]->comm_x_only); - comm_f_only = MIN(comm_f_only,styles[k]->comm_f_only); - size_forward += styles[k]->size_forward - 3; - size_reverse += styles[k]->size_reverse - 3; - size_border += styles[k]->size_border - 6; - size_data_atom += styles[k]->size_data_atom - 5; - size_data_vel += styles[k]->size_data_vel - 4; - - maxexchange += styles[k]->maxexchange; - } - - size_velocity = 3; - if (atom->omega_flag) size_velocity += 3; - if (atom->angmom_flag) size_velocity += 3; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecHybrid::init() -{ - AtomVec::init(); - for (int k = 0; k < nstyles; k++) styles[k]->init(); -} - -/* ---------------------------------------------------------------------- - grow atom arrays - n = 0 grows arrays by a chunk - n > 0 allocates arrays to size n -------------------------------------------------------------------------- */ - -void AtomVecHybrid::grow(int n) -{ - if (n == 0) grow_nmax(); - else nmax = n; - atom->nmax = nmax; - if (nmax < 0 || nmax > MAXSMALLINT) - error->one(FLERR,"Per-processor system is too big"); - - // sub-styles perform all reallocation - // turn off nextra_grow so hybrid can do that once below - - int tmp = atom->nextra_grow; - atom->nextra_grow = 0; - for (int k = 0; k < nstyles; k++) styles[k]->grow(nmax); - atom->nextra_grow = tmp; - - // insure hybrid local ptrs and sub-style ptrs are up to date - // for sub-styles, do this in case - // multiple sub-style reallocs of same array occurred - - grow_reset(); - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - modify->fix[atom->extra_grow[iextra]]->grow_arrays(nmax); -} - -/* ---------------------------------------------------------------------- - reset local array ptrs -------------------------------------------------------------------------- */ - -void AtomVecHybrid::grow_reset() -{ - tag = atom->tag; type = atom->type; - mask = atom->mask; image = atom->image; - x = atom->x; v = atom->v; f = atom->f; - omega = atom->omega; angmom = atom->angmom; - - for (int k = 0; k < nstyles; k++) styles[k]->grow_reset(); -} - -/* ---------------------------------------------------------------------- - copy atom I info to atom J for all sub-styles -------------------------------------------------------------------------- */ - -void AtomVecHybrid::copy(int i, int j, int delflag) -{ - int tmp = atom->nextra_grow; - atom->nextra_grow = 0; - for (int k = 0; k < nstyles; k++) styles[k]->copy(i,j,delflag); - atom->nextra_grow = tmp; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - modify->fix[atom->extra_grow[iextra]]->copy_arrays(i,j,delflag); -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecHybrid::clear_bonus() -{ - for (int k = 0; k < nstyles; k++) styles[k]->clear_bonus(); -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecHybrid::force_clear(int n, size_t nbytes) -{ - for (int k = 0; k < nstyles; k++) - if (styles[k]->forceclearflag) styles[k]->force_clear(n,nbytes); -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecHybrid::pack_comm(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,k,m; - double dx,dy,dz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]*domain->xprd + pbc[5]*domain->xy + pbc[4]*domain->xz; - dy = pbc[1]*domain->yprd + pbc[3]*domain->yz; - dz = pbc[2]*domain->zprd; - } - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - } - } - - // pack sub-style contributions as contiguous chunks - - for (k = 0; k < nstyles; k++) - m += styles[k]->pack_comm_hybrid(n,list,&buf[m]); - - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecHybrid::pack_comm_vel(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,k,m; - double dx,dy,dz,dvx,dvy,dvz; - int omega_flag = atom->omega_flag; - int angmom_flag = atom->angmom_flag; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - if (omega_flag) { - buf[m++] = omega[j][0]; - buf[m++] = omega[j][1]; - buf[m++] = omega[j][2]; - } - if (angmom_flag) { - buf[m++] = angmom[j][0]; - buf[m++] = angmom[j][1]; - buf[m++] = angmom[j][2]; - } - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]*domain->xprd + pbc[5]*domain->xy + pbc[4]*domain->xz; - dy = pbc[1]*domain->yprd + pbc[3]*domain->yz; - dz = pbc[2]*domain->zprd; - } - if (!deform_vremap) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - if (omega_flag) { - buf[m++] = omega[j][0]; - buf[m++] = omega[j][1]; - buf[m++] = omega[j][2]; - } - if (angmom_flag) { - buf[m++] = angmom[j][0]; - buf[m++] = angmom[j][1]; - buf[m++] = angmom[j][2]; - } - } - } else { - dvx = pbc[0]*h_rate[0] + pbc[5]*h_rate[5] + pbc[4]*h_rate[4]; - dvy = pbc[1]*h_rate[1] + pbc[3]*h_rate[3]; - dvz = pbc[2]*h_rate[2]; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - if (mask[i] & deform_groupbit) { - buf[m++] = v[j][0] + dvx; - buf[m++] = v[j][1] + dvy; - buf[m++] = v[j][2] + dvz; - } else { - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - if (omega_flag) { - buf[m++] = omega[j][0]; - buf[m++] = omega[j][1]; - buf[m++] = omega[j][2]; - } - if (angmom_flag) { - buf[m++] = angmom[j][0]; - buf[m++] = angmom[j][1]; - buf[m++] = angmom[j][2]; - } - } - } - } - - // pack sub-style contributions as contiguous chunks - - for (k = 0; k < nstyles; k++) - m += styles[k]->pack_comm_hybrid(n,list,&buf[m]); - - return m; -} + // concatenate field strings from all sub-styles -/* ---------------------------------------------------------------------- */ + concatenate_fields(); -void AtomVecHybrid::unpack_comm(int n, int first, double *buf) -{ - int i,k,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - } + // parent AtomVec will now operate on concatenated fields - // unpack sub-style contributions as contiguous chunks - - for (k = 0; k < nstyles; k++) - m += styles[k]->unpack_comm_hybrid(n,first,&buf[m]); + setup_fields(); } /* ---------------------------------------------------------------------- */ -void AtomVecHybrid::unpack_comm_vel(int n, int first, double *buf) +void AtomVecHybrid::concatenate_fields() { - int i,k,m,last; - int omega_flag = atom->omega_flag; - int angmom_flag = atom->angmom_flag; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - v[i][0] = buf[m++]; - v[i][1] = buf[m++]; - v[i][2] = buf[m++]; - if (omega_flag) { - omega[i][0] = buf[m++]; - omega[i][1] = buf[m++]; - omega[i][2] = buf[m++]; - } - if (angmom_flag) { - angmom[i][0] = buf[m++]; - angmom[i][1] = buf[m++]; - angmom[i][2] = buf[m++]; - } - } - - // unpack sub-style contributions as contiguous chunks - - for (k = 0; k < nstyles; k++) - m += styles[k]->unpack_comm_hybrid(n,first,&buf[m]); -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecHybrid::pack_reverse(int n, int first, double *buf) -{ - int i,k,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - buf[m++] = f[i][0]; - buf[m++] = f[i][1]; - buf[m++] = f[i][2]; - } - - // pack sub-style contributions as contiguous chunks - - for (k = 0; k < nstyles; k++) - m += styles[k]->pack_reverse_hybrid(n,first,&buf[m]); - - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecHybrid::unpack_reverse(int n, int *list, double *buf) -{ - int i,j,k,m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - f[j][0] += buf[m++]; - f[j][1] += buf[m++]; - f[j][2] += buf[m++]; - } - - // unpack sub-style contributions as contiguous chunks - - for (k = 0; k < nstyles; k++) - m += styles[k]->unpack_reverse_hybrid(n,list,&buf[m]); -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecHybrid::pack_border(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,k,m; - double dx,dy,dz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]; - dy = pbc[1]; - dz = pbc[2]; - } - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - } + for (int k = 0; k < nstyles; k++) { + concatenate(fields_grow,styles[k]->fields_grow); + concatenate(fields_copy,styles[k]->fields_copy); + concatenate(fields_comm,styles[k]->fields_comm); + concatenate(fields_comm_vel,styles[k]->fields_comm_vel); + concatenate(fields_reverse,styles[k]->fields_reverse); + concatenate(fields_border,styles[k]->fields_border); + concatenate(fields_border_vel,styles[k]->fields_border_vel); + concatenate(fields_exchange,styles[k]->fields_exchange); + concatenate(fields_restart,styles[k]->fields_restart); + concatenate(fields_create,styles[k]->fields_create); + concatenate(fields_data_atom,styles[k]->fields_data_atom); + concatenate(fields_data_vel,styles[k]->fields_data_vel); } - - // pack sub-style contributions as contiguous chunks - - for (k = 0; k < nstyles; k++) - m += styles[k]->pack_border_hybrid(n,list,&buf[m]); - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); - - return m; } /* ---------------------------------------------------------------------- */ -int AtomVecHybrid::pack_border_vel(int n, int *list, double *buf, - int pbc_flag, int *pbc) +void AtomVecHybrid::concatenate(char *&root, char *add) { - int i,j,k,m; - double dx,dy,dz,dvx,dvy,dvz; - int omega_flag = atom->omega_flag; - int angmom_flag = atom->angmom_flag; + /* + char **rootwords,**addwords; + int nroot = parse(root,rootwords); + int nadd = parse(add,addwords); - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - if (omega_flag) { - buf[m++] = omega[j][0]; - buf[m++] = omega[j][1]; - buf[m++] = omega[j][2]; - } - if (angmom_flag) { - buf[m++] = angmom[j][0]; - buf[m++] = angmom[j][1]; - buf[m++] = angmom[j][2]; - } - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]; - dy = pbc[1]; - dz = pbc[2]; - } - if (!deform_vremap) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - if (omega_flag) { - buf[m++] = omega[j][0]; - buf[m++] = omega[j][1]; - buf[m++] = omega[j][2]; - } - if (angmom_flag) { - buf[m++] = angmom[j][0]; - buf[m++] = angmom[j][1]; - buf[m++] = angmom[j][2]; - } - } - } else { - dvx = pbc[0]*h_rate[0] + pbc[5]*h_rate[5] + pbc[4]*h_rate[4]; - dvy = pbc[1]*h_rate[1] + pbc[3]*h_rate[3]; - dvz = pbc[2]*h_rate[2]; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - if (mask[i] & deform_groupbit) { - buf[m++] = v[j][0] + dvx; - buf[m++] = v[j][1] + dvy; - buf[m++] = v[j][2] + dvz; - } else { - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - if (omega_flag) { - buf[m++] = omega[j][0]; - buf[m++] = omega[j][1]; - buf[m++] = omega[j][2]; - } - if (angmom_flag) { - buf[m++] = angmom[j][0]; - buf[m++] = angmom[j][1]; - buf[m++] = angmom[j][2]; - } - } - } + for (int iadd = 0; iadd < nadd; iadd++) { + if (check(addwords[iadd],nroot,rootwords)) continue; + addone(addwords[iadd],nroot,rootwords); } - - // pack sub-style contributions as contiguous chunks - - for (k = 0; k < nstyles; k++) - m += styles[k]->pack_border_hybrid(n,list,&buf[m]); - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); - - return m; + */ } /* ---------------------------------------------------------------------- */ -void AtomVecHybrid::unpack_border(int n, int first, double *buf) +void AtomVecHybrid::init() { - int i,k,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - if (i == nmax) grow(0); - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - tag[i] = (tagint) ubuf(buf[m++]).i; - type[i] = (int) ubuf(buf[m++]).i; - mask[i] = (int) ubuf(buf[m++]).i; - } - - // unpack sub-style contributions as contiguous chunks - - for (k = 0; k < nstyles; k++) - m += styles[k]->unpack_border_hybrid(n,first,&buf[m]); - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]-> - unpack_border(n,first,&buf[m]); + AtomVec::init(); + for (int k = 0; k < nstyles; k++) styles[k]->init(); } /* ---------------------------------------------------------------------- */ -void AtomVecHybrid::unpack_border_vel(int n, int first, double *buf) -{ - int i,k,m,last; - int omega_flag = atom->omega_flag; - int angmom_flag = atom->angmom_flag; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - if (i == nmax) grow(0); - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - tag[i] = (tagint) ubuf(buf[m++]).i; - type[i] = (int) ubuf(buf[m++]).i; - mask[i] = (int) ubuf(buf[m++]).i; - v[i][0] = buf[m++]; - v[i][1] = buf[m++]; - v[i][2] = buf[m++]; - if (omega_flag) { - omega[i][0] = buf[m++]; - omega[i][1] = buf[m++]; - omega[i][2] = buf[m++]; - } - if (angmom_flag) { - angmom[i][0] = buf[m++]; - angmom[i][1] = buf[m++]; - angmom[i][2] = buf[m++]; - } - } - - // unpack sub-style contributions as contiguous chunks - - for (k = 0; k < nstyles; k++) - m += styles[k]->unpack_border_hybrid(n,first,&buf[m]); - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]-> - unpack_border(n,first,&buf[m]); -} - -/* ---------------------------------------------------------------------- - pack data for atom I for sending to another proc - pack each sub-style one after the other -------------------------------------------------------------------------- */ - -int AtomVecHybrid::pack_exchange(int i, double *buf) -{ - int k,m; - - int tmp = atom->nextra_grow; - atom->nextra_grow = 0; - - m = 0; - for (k = 0; k < nstyles; k++) - m += styles[k]->pack_exchange(i,&buf[m]); - - atom->nextra_grow = tmp; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - m += modify->fix[atom->extra_grow[iextra]]->pack_exchange(i,&buf[m]); - - buf[0] = m; - return m; -} - -/* ---------------------------------------------------------------------- - unpack data for single atom received from another proc - unpack each sub-style one after the other - grow() occurs here so arrays for all sub-styles are grown -------------------------------------------------------------------------- */ - -int AtomVecHybrid::unpack_exchange(double *buf) -{ - int k,m; - - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - int tmp = atom->nextra_grow; - atom->nextra_grow = 0; - - m = 0; - for (k = 0; k < nstyles; k++) { - m += styles[k]->unpack_exchange(&buf[m]); - atom->nlocal--; - } - - atom->nextra_grow = tmp; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - m += modify->fix[atom->extra_grow[iextra]]-> - unpack_exchange(nlocal,&buf[m]); - - atom->nlocal++; - return m; -} - -/* ---------------------------------------------------------------------- - size of restart data for all atoms owned by this proc - include extra data stored by fixes -------------------------------------------------------------------------- */ - -int AtomVecHybrid::size_restart() -{ - int tmp = atom->nextra_restart; - atom->nextra_restart = 0; - - int n = 0; - for (int k = 0; k < nstyles; k++) - n += styles[k]->size_restart(); - - atom->nextra_restart = tmp; - - int nlocal = atom->nlocal; - if (atom->nextra_restart) - for (int iextra = 0; iextra < atom->nextra_restart; iextra++) - for (int i = 0; i < nlocal; i++) - n += modify->fix[atom->extra_restart[iextra]]->size_restart(i); - - return n; -} - -/* ---------------------------------------------------------------------- - pack atom I's data for restart file including extra quantities - xyz must be 1st 3 values, so that read_restart can test on them - pack each sub-style one after the other -------------------------------------------------------------------------- */ - -int AtomVecHybrid::pack_restart(int i, double *buf) -{ - int tmp = atom->nextra_restart; - atom->nextra_restart = 0; - - int m = 0; - for (int k = 0; k < nstyles; k++) - m += styles[k]->pack_restart(i,&buf[m]); - - atom->nextra_restart = tmp; - - if (atom->nextra_restart) - for (int iextra = 0; iextra < atom->nextra_restart; iextra++) - m += modify->fix[atom->extra_restart[iextra]]->pack_restart(i,&buf[m]); - - buf[0] = m; - return m; -} - -/* ---------------------------------------------------------------------- - unpack data for one atom from restart file including extra quantities - unpack each sub-style one after the other - grow() occurs here so arrays for all sub-styles are grown -------------------------------------------------------------------------- */ - -int AtomVecHybrid::unpack_restart(double *buf) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) { - grow(0); - if (atom->nextra_store) - memory->grow(atom->extra,nmax,atom->nextra_store,"atom:extra"); - } - - int tmp = atom->nextra_store; - atom->nextra_store = 0; - - int m = 0; - for (int k = 0; k < nstyles; k++) { - m += styles[k]->unpack_restart(&buf[m]); - atom->nlocal--; - } - atom->nextra_store = tmp; - - double **extra = atom->extra; - if (atom->nextra_store) { - int size = static_cast (buf[0]) - m; - for (int i = 0; i < size; i++) extra[nlocal][i] = buf[m++]; - } - - atom->nlocal++; - return m; -} - -/* ---------------------------------------------------------------------- - create one atom of itype at coord - create each sub-style one after the other - grow() occurs here so arrays for all sub-styles are grown -------------------------------------------------------------------------- */ - -void AtomVecHybrid::create_atom(int itype, double *coord) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - for (int k = 0; k < nstyles; k++) { - styles[k]->create_atom(itype,coord); - atom->nlocal--; - } - atom->nlocal++; -} - -/* ---------------------------------------------------------------------- - unpack one line from Atoms section of data file - grow() occurs here so arrays for all sub-styles are grown -------------------------------------------------------------------------- */ - -void AtomVecHybrid::data_atom(double *coord, imageint imagetmp, char **values) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - tag[nlocal] = utils::tnumeric(FLERR,values[0],true,lmp); - type[nlocal] = utils::inumeric(FLERR,values[1],true,lmp); - if (type[nlocal] <= 0 || type[nlocal] > atom->ntypes) - error->one(FLERR,"Invalid atom type in Atoms section of data file"); - - x[nlocal][0] = coord[0]; - x[nlocal][1] = coord[1]; - x[nlocal][2] = coord[2]; - - image[nlocal] = imagetmp; - mask[nlocal] = 1; - - v[nlocal][0] = 0.0; - v[nlocal][1] = 0.0; - v[nlocal][2] = 0.0; - if (atom->omega_flag) { - omega[nlocal][0] = 0.0; - omega[nlocal][1] = 0.0; - omega[nlocal][2] = 0.0; - } - if (atom->angmom_flag) { - angmom[nlocal][0] = 0.0; - angmom[nlocal][1] = 0.0; - angmom[nlocal][2] = 0.0; - } - - // each sub-style parses sub-style specific values - - int m = 5; - for (int k = 0; k < nstyles; k++) - m += styles[k]->data_atom_hybrid(nlocal,&values[m]); - - atom->nlocal++; -} - -/* ---------------------------------------------------------------------- - unpack one line from Velocities section of data file -------------------------------------------------------------------------- */ - -void AtomVecHybrid::data_vel(int m, char **values) +void AtomVecHybrid::force_clear(int n, size_t nbytes) { - v[m][0] = utils::numeric(FLERR,values[0],true,lmp); - v[m][1] = utils::numeric(FLERR,values[1],true,lmp); - v[m][2] = utils::numeric(FLERR,values[2],true,lmp); - - // each sub-style parses sub-style specific values - - int n = 3; for (int k = 0; k < nstyles; k++) - n += styles[k]->data_vel_hybrid(m,&values[n]); -} - -/* ---------------------------------------------------------------------- - pack atom info for data file including 3 image flags -------------------------------------------------------------------------- */ - -void AtomVecHybrid::pack_data(double **buf) -{ - int k,m; - - int nlocal = atom->nlocal; - for (int i = 0; i < nlocal; i++) { - buf[i][0] = ubuf(tag[i]).d; - buf[i][1] = ubuf(type[i]).d; - buf[i][2] = x[i][0]; - buf[i][3] = x[i][1]; - buf[i][4] = x[i][2]; - - m = 5; - for (k = 0; k < nstyles; k++) - m += styles[k]->pack_data_hybrid(i,&buf[i][m]); - - buf[i][m] = ubuf((image[i] & IMGMASK) - IMGMAX).d; - buf[i][m+1] = ubuf((image[i] >> IMGBITS & IMGMASK) - IMGMAX).d; - buf[i][m+2] = ubuf((image[i] >> IMG2BITS) - IMGMAX).d; - } -} - -/* ---------------------------------------------------------------------- - write atom info to data file including 3 image flags -------------------------------------------------------------------------- */ - -void AtomVecHybrid::write_data(FILE *fp, int n, double **buf) -{ - int k,m; - - for (int i = 0; i < n; i++) { - fprintf(fp,TAGINT_FORMAT " %d %-1.16e %-1.16e %-1.16e", - (tagint) ubuf(buf[i][0]).i,(int) ubuf(buf[i][1]).i, - buf[i][2],buf[i][3],buf[i][4]); - - m = 5; - for (k = 0; k < nstyles; k++) - m += styles[k]->write_data_hybrid(fp,&buf[i][m]); - - fprintf(fp," %d %d %d\n", - (int) ubuf(buf[i][m]).i,(int) ubuf(buf[i][m+1]).i, - (int) ubuf(buf[i][m+2]).i); - } -} - -/* ---------------------------------------------------------------------- - pack velocity info for data file -------------------------------------------------------------------------- */ - -void AtomVecHybrid::pack_vel(double **buf) -{ - int k,m; - - int nlocal = atom->nlocal; - for (int i = 0; i < nlocal; i++) { - buf[i][0] = ubuf(tag[i]).d; - buf[i][1] = v[i][0]; - buf[i][2] = v[i][1]; - buf[i][3] = v[i][2]; - - m = 4; - for (k = 0; k < nstyles; k++) - m += styles[k]->pack_vel_hybrid(i,&buf[i][m]); - } -} - -/* ---------------------------------------------------------------------- - write velocity info to data file -------------------------------------------------------------------------- */ - -void AtomVecHybrid::write_vel(FILE *fp, int n, double **buf) -{ - int k,m; - - for (int i = 0; i < n; i++) { - fprintf(fp,TAGINT_FORMAT " %g %g %g", - (tagint) ubuf(buf[i][0]).i,buf[i][1],buf[i][2],buf[i][3]); - - m = 4; - for (k = 0; k < nstyles; k++) - m += styles[k]->write_vel_hybrid(fp,&buf[i][m]); - - fprintf(fp,"\n"); - } + if (styles[k]->forceclearflag) styles[k]->force_clear(n,nbytes); } /* ---------------------------------------------------------------------- @@ -1073,14 +217,3 @@ int AtomVecHybrid::known_style(char *str) if (strcmp(str,allstyles[i]) == 0) return 1; return 0; } - -/* ---------------------------------------------------------------------- - return # of bytes of allocated memory -------------------------------------------------------------------------- */ - -bigint AtomVecHybrid::memory_usage() -{ - bigint bytes = 0; - for (int k = 0; k < nstyles; k++) bytes += styles[k]->memory_usage(); - return bytes; -} diff --git a/src/atom_vec_hybrid.h b/src/atom_vec_hybrid.h index 8129baccba..41067d44f2 100644 --- a/src/atom_vec_hybrid.h +++ b/src/atom_vec_hybrid.h @@ -34,48 +34,16 @@ class AtomVecHybrid : public AtomVec { ~AtomVecHybrid(); void process_args(int, char **); void init(); - void grow(int); - void grow_reset(); - void copy(int, int, int); - void clear_bonus(); void force_clear(int, size_t); - int pack_comm(int, int *, double *, int, int *); - int pack_comm_vel(int, int *, double *, int, int *); - void unpack_comm(int, int, double *); - void unpack_comm_vel(int, int, double *); - int pack_reverse(int, int, double *); - void unpack_reverse(int, int *, double *); - int pack_border(int, int *, double *, int, int *); - int pack_border_vel(int, int *, double *, int, int *); - void unpack_border(int, int, double *); - void unpack_border_vel(int, int, double *); - int pack_exchange(int, double *); - int unpack_exchange(double *); - int size_restart(); - int pack_restart(int, double *); - int unpack_restart(double *); - void create_atom(int, double *); - void data_atom(double *, imageint, char **); - int data_atom_hybrid(int, char **) {return 0;} - void data_vel(int, char **); - void pack_data(double **); - void write_data(FILE *, int, double **); - void pack_vel(double **); - void write_vel(FILE *, int, double **); int property_atom(char *); void pack_property_atom(int, double *, int, int); - bigint memory_usage(); private: - tagint *tag; - int *type,*mask; - imageint *image; - double **x,**v,**f; - double **omega,**angmom; - int nallstyles; char **allstyles; + void concatenate_fields(); + void concatenate(char *&, char *); void build_styles(); int known_style(char *); }; diff --git a/src/atom_vec_sphere.cpp b/src/atom_vec_sphere.cpp index 7a14ea26e6..b44aa69035 100644 --- a/src/atom_vec_sphere.cpp +++ b/src/atom_vec_sphere.cpp @@ -19,6 +19,7 @@ #include "fix_adapt.h" #include "math_const.h" #include "error.h" +#include "utils.h" using namespace LAMMPS_NS; using namespace MathConst; @@ -54,58 +55,61 @@ AtomVecSphere::AtomVecSphere(LAMMPS *lmp) : AtomVec(lmp) setup_fields(); } +/* ---------------------------------------------------------------------- + process sub-style args + optional arg = 0/1 for static/dynamic particle radii +------------------------------------------------------------------------- */ + +void AtomVecSphere::process_args(int narg, char **arg) +{ + if (narg == 0) return; + if (narg != 1) error->all(FLERR,"Illegal atom_style sphere command"); + + radvary = utils::numeric(FLERR,arg[0],true,lmp); + if (radvary < 0 || radvary > 1) + error->all(FLERR,"Illegal atom_style sphere command"); + if (radvary == 0) return; + + // dynamic particle radius and mass must be communicated every step + + fields_comm = (char *) "radius rmass"; + fields_comm_vel = (char *) "radius rmass omega"; +} + /* ---------------------------------------------------------------------- */ void AtomVecSphere::init() { AtomVec::init(); - // set radvary if particle diameters are time-varying due to fix adapt - // NOTE: change this to a atom_style sphere optional arg - - radvary = 0; - //comm_x_only = 1; - //size_forward = 3; + // check if optional radvary setting should have been set to 1 for (int i = 0; i < modify->nfix; i++) if (strcmp(modify->fix[i]->style,"adapt") == 0) { FixAdapt *fix = (FixAdapt *) modify->fix[i]; - if (fix->diamflag) { - radvary = 1; - comm_x_only = 0; - size_forward = 5; - } + if (fix->diamflag && radvary == 0) + error->all(FLERR,"Fix adapt changes particle radii " + "but atom_style sphere is not dynamic"); } - - //fields_comm = (char *) "radius rmass"; - //fields_comm_vel = (char *) "radius rmass"; } /* ---------------------------------------------------------------------- - create one atom of itype at coord - modify what default AtomVec::create_atom() just created + initialize other atom quantities ------------------------------------------------------------------------- */ -void AtomVecSphere::create_atom(int itype, double *coord) +void AtomVecSphere::create_atom_post(int ilocal) { - AtomVec::create_atom(itype,coord); - int ilocal = atom->nlocal-1; - atom->radius[ilocal] = 0.5; atom->rmass[ilocal] = 4.0*MY_PI/3.0 * 0.5*0.5*0.5; } /* ---------------------------------------------------------------------- - unpack one line from Atoms section of data file - modify what default AtomVec::data_atom() just unpacked + modify what AtomVec::data_atom() just unpacked or initialize other atom quantities ------------------------------------------------------------------------- */ -void AtomVecSphere::data_atom(double *coord, imageint imagetmp, char **values) +void AtomVecSphere::data_atom_post(int ilocal) { - AtomVec::data_atom(coord,imagetmp,values); - int ilocal = atom->nlocal-1; - double radius = 0.5 * atom->radius[ilocal]; atom->radius[ilocal] = radius; if (radius > 0.0) @@ -115,3 +119,27 @@ void AtomVecSphere::data_atom(double *coord, imageint imagetmp, char **values) if (atom->rmass[ilocal] <= 0.0) error->one(FLERR,"Invalid mass in Atoms section of data file"); } + +/* ---------------------------------------------------------------------- + modify values for AtomVec::pack_data() to pack +------------------------------------------------------------------------- */ + +void AtomVecSphere::pack_data_pre(int ilocal) +{ + radius = atom->radius[ilocal]; + rmass = atom->rmass[ilocal]; + + atom->radius[ilocal] *= 2.0; + if (radius == 0.0) + atom->rmass[ilocal] = rmass / (4.0*MY_PI/3.0 * radius*radius*radius); +} + +/* ---------------------------------------------------------------------- + unmodify values packed by AtomVec::pack_data() +------------------------------------------------------------------------- */ + +void AtomVecSphere::pack_data_post(int ilocal) +{ + atom->radius[ilocal] = radius; + atom->rmass[ilocal] = rmass; +} diff --git a/src/atom_vec_sphere.h b/src/atom_vec_sphere.h index 98762dba49..c205ba43de 100644 --- a/src/atom_vec_sphere.h +++ b/src/atom_vec_sphere.h @@ -27,12 +27,16 @@ namespace LAMMPS_NS { class AtomVecSphere : public AtomVec { public: AtomVecSphere(class LAMMPS *); + void process_args(int, char **); void init(); - void create_atom(int, double *); - void data_atom(double *, imageint, char **); + void create_atom_post(int); + void data_atom_post(int); + void pack_data_pre(int); + void pack_data_post(int); private: int radvary; + double radius,rmass; }; } diff --git a/src/special.cpp b/src/special.cpp index 3dd817bc7f..f859f4ff53 100644 --- a/src/special.cpp +++ b/src/special.cpp @@ -715,7 +715,6 @@ void Special::combine() memory->create(atom->special,atom->nmax,atom->maxspecial,"atom:special"); } - atom->avec->grow_reset(); tagint **special = atom->special; // ---------------------------------------------------- -- GitLab From 4f6cb135920c7788b8501b96155678430740172e Mon Sep 17 00:00:00 2001 From: Steve Plimpton Date: Wed, 27 Nov 2019 16:03:50 -0700 Subject: [PATCH 008/717] added atom styles with bonus data, also a few USER packages --- src/MOLECULE/atom_vec_template.cpp | 2 +- src/PERI/atom_vec_peri.cpp | 14 +- src/PERI/atom_vec_peri.h | 2 +- src/USER-DPD/atom_vec_dpd.cpp | 921 +---------------- src/USER-DPD/atom_vec_dpd.h | 51 +- src/USER-EFF/atom_vec_electron.cpp | 954 +----------------- src/USER-EFF/atom_vec_electron.h | 49 +- src/USER-MESO/atom_vec_edpd.cpp | 819 +--------------- src/USER-MESO/atom_vec_edpd.h | 34 +- src/atom.cpp | 30 +- src/atom.h | 15 +- src/atom_vec.cpp | 50 +- src/atom_vec.h | 41 +- src/atom_vec_body.cpp | 1179 +++------------------- src/atom_vec_body.h | 72 +- src/atom_vec_ellipsoid.cpp | 1170 +++------------------- src/atom_vec_ellipsoid.h | 69 +- src/atom_vec_line.cpp | 1111 +++------------------ src/atom_vec_line.h | 70 +- src/atom_vec_sphere.cpp | 4 +- src/atom_vec_tri.cpp | 1473 ++++------------------------ src/atom_vec_tri.h | 70 +- src/read_data.cpp | 6 +- src/read_data.h | 2 +- 24 files changed, 923 insertions(+), 7285 deletions(-) diff --git a/src/MOLECULE/atom_vec_template.cpp b/src/MOLECULE/atom_vec_template.cpp index d22e9abfb3..f8f99ae8a8 100644 --- a/src/MOLECULE/atom_vec_template.cpp +++ b/src/MOLECULE/atom_vec_template.cpp @@ -97,7 +97,7 @@ void AtomVecTemplate::process_args(int narg, char **arg) } /* ---------------------------------------------------------------------- - initialize other atom quantities + initialize non-zero atom quantities ------------------------------------------------------------------------- */ void AtomVecTemplate::create_atom_post(int ilocal) diff --git a/src/PERI/atom_vec_peri.cpp b/src/PERI/atom_vec_peri.cpp index 5450b23293..4fcebc2f84 100644 --- a/src/PERI/atom_vec_peri.cpp +++ b/src/PERI/atom_vec_peri.cpp @@ -70,21 +70,17 @@ AtomVecPeri::AtomVecPeri(LAMMPS *lmp) : AtomVec(lmp) } /* ---------------------------------------------------------------------- - create one atom of itype at coord - modify what default AtomVec::create_atom() just created + initialize non-zero atom quantities ------------------------------------------------------------------------- */ -void AtomVecPeri::create_atom(int itype, double *coord) +void AtomVecPeri::create_atom_post(int ilocal) { - AtomVec::create_atom(itype,coord); - int ilocal = atom->nlocal-1; - atom->vfrac[ilocal] = 1.0; atom->rmass[ilocal] = 1.0; atom->s0[ilocal] = DBL_MAX; - atom->x0[ilocal][0] = coord[0]; - atom->x0[ilocal][1] = coord[1]; - atom->x0[ilocal][2] = coord[2]; + atom->x0[ilocal][0] = atom->x[ilocal][0]; + atom->x0[ilocal][1] = atom->x[ilocal][1]; + atom->x0[ilocal][2] = atom->x[ilocal][2]; } /* ---------------------------------------------------------------------- diff --git a/src/PERI/atom_vec_peri.h b/src/PERI/atom_vec_peri.h index 3b41950a6f..13a62eb194 100644 --- a/src/PERI/atom_vec_peri.h +++ b/src/PERI/atom_vec_peri.h @@ -27,7 +27,7 @@ namespace LAMMPS_NS { class AtomVecPeri : public AtomVec { public: AtomVecPeri(class LAMMPS *); - void create_atom(int, double *); + void create_atom_post(int); void data_atom_post(int); int property_atom(char *); void pack_property_atom(int, double *, int, int); diff --git a/src/USER-DPD/atom_vec_dpd.cpp b/src/USER-DPD/atom_vec_dpd.cpp index d1768d473e..27e0f70a20 100644 --- a/src/USER-DPD/atom_vec_dpd.cpp +++ b/src/USER-DPD/atom_vec_dpd.cpp @@ -17,13 +17,7 @@ #include "atom_vec_dpd.h" #include "atom.h" -#include "comm.h" -#include "domain.h" -#include "modify.h" -#include "fix.h" -#include "memory.h" #include "error.h" -#include "utils.h" using namespace LAMMPS_NS; @@ -34,904 +28,55 @@ AtomVecDPD::AtomVecDPD(LAMMPS *lmp) : AtomVec(lmp) molecular = 0; mass_type = 1; - comm_x_only = comm_f_only = 0; // we communicate not only x forward but also dpdTheta - size_forward = 7; // 3 + dpdTheta + uCond + uMech + uChem - size_reverse = 3; // 3 - size_border = 12; // 6 + dpdTheta + uCond + uMech + uChem + uCG + uCGnew - size_velocity = 3; - size_data_atom = 6; // we read id + type + dpdTheta + x + y + z - size_data_vel = 4; - xcol_data = 4; // 1=id 2=type 3=dpdTheta 4=x - atom->rho_flag = 1; atom->dpd_flag = 1; -} - -/* ---------------------------------------------------------------------- - grow atom arrays - n = 0 grows arrays by a chunk - n > 0 allocates arrays to size n -------------------------------------------------------------------------- */ - -void AtomVecDPD::grow(int n) -{ - if (n == 0) grow_nmax(); - else nmax = n; - atom->nmax = nmax; - if (nmax < 0) - error->one(FLERR,"Per-processor system is too big"); - tag = memory->grow(atom->tag,nmax,"atom:tag"); - type = memory->grow(atom->type,nmax,"atom:type"); - mask = memory->grow(atom->mask,nmax,"atom:mask"); - image = memory->grow(atom->image,nmax,"atom:image"); - x = memory->grow(atom->x,nmax,3,"atom:x"); - v = memory->grow(atom->v,nmax,3,"atom:v"); - f = memory->grow(atom->f,nmax*comm->nthreads,3,"atom:f"); + // strings with peratom variables to include in each AtomVec method + // strings cannot contain fields in corresponding AtomVec default strings + // order of fields in the string does not matter + // except fields_data_atom and fields_data_vel which must match data file - rho = memory->grow(atom->rho, nmax, "atom:rho"); - dpdTheta = memory->grow(atom->dpdTheta, nmax, "atom:dpdTheta"); - uCond = memory->grow(atom->uCond,nmax,"atom:uCond"); - uMech = memory->grow(atom->uMech,nmax,"atom:uMech"); - uChem = memory->grow(atom->uChem,nmax,"atom:uChem"); - uCG = memory->grow(atom->uCG,nmax,"atom:uCG"); - uCGnew = memory->grow(atom->uCGnew,nmax,"atom:uCGnew"); - duChem = memory->grow(atom->duChem,nmax,"atom:duChem"); + fields_grow = (char *) "rho dpdTheta uCond uMech uChem uCG uCGnew duChem"; + fields_copy = (char *) "dpdTheta uCond uMech uChem uCG uCGnew"; + fields_comm = (char *) "dpdTheta uCond uMech uChem"; + fields_comm_vel = (char *) "dpdTheta uCond uMech uChem"; + fields_reverse = NULL; + fields_border = (char *) "dpdTheta uCond uMech uChem uCG uCGnew"; + fields_border_vel = (char *) "dpdTheta uCond uMech uChem uCG uCGnew"; + fields_exchange = (char *) "dpdTheta uCond uMech uChem uCG uCGnew"; + fields_restart = (char *) "dpdTheta uCond uMech uChem"; + fields_create = (char *) "rho dpdTheta uCond uMech uChem uCG uCGnew duChem"; + fields_data_atom = (char *) "id type dpdTheta x"; + fields_data_vel = (char *) "omega"; - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - modify->fix[atom->extra_grow[iextra]]->grow_arrays(nmax); + setup_fields(); } /* ---------------------------------------------------------------------- - reset local array ptrs + initialize other atom quantities after AtomVec::unpack_restart() ------------------------------------------------------------------------- */ -void AtomVecDPD::grow_reset() +void AtomVecDPD::unpack_restart_init(int ilocal) { - tag = atom->tag; type = atom->type; - mask = atom->mask; image = atom->image; - x = atom->x; v = atom->v; f = atom->f; - rho = atom->rho; - dpdTheta = atom->dpdTheta; - uCond = atom->uCond; - uMech = atom->uMech; - uChem = atom->uChem; - uCG = atom->uCG; - uCGnew = atom->uCGnew; - duChem = atom->duChem; + atom->uCG[ilocal] = 0.0; + atom->uCGnew[ilocal] = 0.0; } /* ---------------------------------------------------------------------- - copy atom I info to atom J + modify what AtomVec::data_atom() just unpacked + or initialize other atom quantities ------------------------------------------------------------------------- */ -void AtomVecDPD::copy(int i, int j, int delflag) -{ - tag[j] = tag[i]; - type[j] = type[i]; - mask[j] = mask[i]; - image[j] = image[i]; - x[j][0] = x[i][0]; - x[j][1] = x[i][1]; - x[j][2] = x[i][2]; - v[j][0] = v[i][0]; - v[j][1] = v[i][1]; - v[j][2] = v[i][2]; - dpdTheta[j] = dpdTheta[i]; - uCond[j] = uCond[i]; - uMech[j] = uMech[i]; - uChem[j] = uChem[i]; - uCG[j] = uCG[i]; - uCGnew[j] = uCGnew[i]; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - modify->fix[atom->extra_grow[iextra]]->copy_arrays(i,j,delflag); -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecDPD::pack_comm(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = dpdTheta[j]; - buf[m++] = uCond[j]; - buf[m++] = uMech[j]; - buf[m++] = uChem[j]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]*domain->xprd + pbc[5]*domain->xy + pbc[4]*domain->xz; - dy = pbc[1]*domain->yprd + pbc[3]*domain->yz; - dz = pbc[2]*domain->zprd; - } - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = dpdTheta[j]; - buf[m++] = uCond[j]; - buf[m++] = uMech[j]; - buf[m++] = uChem[j]; - } - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecDPD::pack_comm_vel(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz,dvx,dvy,dvz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - buf[m++] = dpdTheta[j]; - buf[m++] = uCond[j]; - buf[m++] = uMech[j]; - buf[m++] = uChem[j]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]*domain->xprd + pbc[5]*domain->xy + pbc[4]*domain->xz; - dy = pbc[1]*domain->yprd + pbc[3]*domain->yz; - dz = pbc[2]*domain->zprd; - } - if (!deform_vremap) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - buf[m++] = dpdTheta[j]; - buf[m++] = uCond[j]; - buf[m++] = uMech[j]; - buf[m++] = uChem[j]; - } - } else { - dvx = pbc[0]*h_rate[0] + pbc[5]*h_rate[5] + pbc[4]*h_rate[4]; - dvy = pbc[1]*h_rate[1] + pbc[3]*h_rate[3]; - dvz = pbc[2]*h_rate[2]; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - if (mask[i] & deform_groupbit) { - buf[m++] = v[j][0] + dvx; - buf[m++] = v[j][1] + dvy; - buf[m++] = v[j][2] + dvz; - } else { - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - buf[m++] = dpdTheta[j]; - buf[m++] = uCond[j]; - buf[m++] = uMech[j]; - buf[m++] = uChem[j]; - } - } - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecDPD::unpack_comm(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - dpdTheta[i] = buf[m++]; - uCond[i] = buf[m++]; - uMech[i] = buf[m++]; - uChem[i] = buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecDPD::unpack_comm_vel(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - v[i][0] = buf[m++]; - v[i][1] = buf[m++]; - v[i][2] = buf[m++]; - dpdTheta[i] = buf[m++]; - uCond[i] = buf[m++]; - uMech[i] = buf[m++]; - uChem[i] = buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecDPD::pack_reverse(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - buf[m++] = f[i][0]; - buf[m++] = f[i][1]; - buf[m++] = f[i][2]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecDPD::unpack_reverse(int n, int *list, double *buf) -{ - int i,j,m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - f[j][0] += buf[m++]; - f[j][1] += buf[m++]; - f[j][2] += buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecDPD::pack_border(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = dpdTheta[j]; - buf[m++] = uCond[j]; - buf[m++] = uMech[j]; - buf[m++] = uChem[j]; - buf[m++] = uCG[j]; - buf[m++] = uCGnew[j]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]; - dy = pbc[1]; - dz = pbc[2]; - } - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = dpdTheta[j]; - buf[m++] = uCond[j]; - buf[m++] = uMech[j]; - buf[m++] = uChem[j]; - buf[m++] = uCG[j]; - buf[m++] = uCGnew[j]; - } - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); - - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecDPD::pack_border_vel(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz,dvx,dvy,dvz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - buf[m++] = dpdTheta[j]; - buf[m++] = uCond[j]; - buf[m++] = uMech[j]; - buf[m++] = uChem[j]; - buf[m++] = uCG[j]; - buf[m++] = uCGnew[j]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]; - dy = pbc[1]; - dz = pbc[2]; - } - if (!deform_vremap) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - buf[m++] = dpdTheta[j]; - buf[m++] = uCond[j]; - buf[m++] = uMech[j]; - buf[m++] = uChem[j]; - buf[m++] = uCG[j]; - buf[m++] = uCGnew[j]; - } - } else { - dvx = pbc[0]*h_rate[0] + pbc[5]*h_rate[5] + pbc[4]*h_rate[4]; - dvy = pbc[1]*h_rate[1] + pbc[3]*h_rate[3]; - dvz = pbc[2]*h_rate[2]; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - if (mask[i] & deform_groupbit) { - buf[m++] = v[j][0] + dvx; - buf[m++] = v[j][1] + dvy; - buf[m++] = v[j][2] + dvz; - } else { - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - buf[m++] = dpdTheta[j]; - buf[m++] = uCond[j]; - buf[m++] = uMech[j]; - buf[m++] = uChem[j]; - buf[m++] = uCG[j]; - buf[m++] = uCGnew[j]; - } - } - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); - - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecDPD::pack_comm_hybrid(int n, int *list, double *buf) -{ - int i,j,m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = dpdTheta[j]; - buf[m++] = uCond[j]; - buf[m++] = uMech[j]; - buf[m++] = uChem[j]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecDPD::pack_border_hybrid(int n, int *list, double *buf) -{ - int i,j,m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = dpdTheta[j]; - buf[m++] = uCond[j]; - buf[m++] = uMech[j]; - buf[m++] = uChem[j]; - buf[m++] = uCG[j]; - buf[m++] = uCGnew[j]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecDPD::unpack_border(int n, int first, double *buf) +void AtomVecDPD::data_atom_post(int ilocal) { - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - if (i == nmax) grow(0); - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - tag[i] = (tagint) ubuf(buf[m++]).i; - type[i] = (int) ubuf(buf[m++]).i; - mask[i] = (int) ubuf(buf[m++]).i; - dpdTheta[i] = buf[m++]; - uCond[i] = buf[m++]; - uMech[i] = buf[m++]; - uChem[i] = buf[m++]; - uCG[i] = buf[m++]; - uCGnew[i] = buf[m++]; - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]-> - unpack_border(n,first,&buf[m]); -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecDPD::unpack_border_vel(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - if (i == nmax) grow(0); - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - tag[i] = (tagint) ubuf(buf[m++]).i; - type[i] = (int) ubuf(buf[m++]).i; - mask[i] = (int) ubuf(buf[m++]).i; - v[i][0] = buf[m++]; - v[i][1] = buf[m++]; - v[i][2] = buf[m++]; - dpdTheta[i] = buf[m++]; - uCond[i] = buf[m++]; - uMech[i] = buf[m++]; - uChem[i] = buf[m++]; - uCG[i] = buf[m++]; - uCGnew[i] = buf[m++]; - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]-> - unpack_border(n,first,&buf[m]); -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecDPD::unpack_comm_hybrid(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - dpdTheta[i] = buf[m++]; - uCond[i] = buf[m++]; - uMech[i] = buf[m++]; - uChem[i] = buf[m++]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecDPD::unpack_border_hybrid(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - dpdTheta[i] = buf[m++]; - uCond[i] = buf[m++]; - uMech[i] = buf[m++]; - uChem[i] = buf[m++]; - uCG[i] = buf[m++]; - uCGnew[i] = buf[m++]; - } - return m; -} - -/* ---------------------------------------------------------------------- - pack data for atom I for sending to another proc - xyz must be 1st 3 values, so comm::exchange() can test on them -------------------------------------------------------------------------- */ - -int AtomVecDPD::pack_exchange(int i, double *buf) -{ - int m = 1; - buf[m++] = x[i][0]; - buf[m++] = x[i][1]; - buf[m++] = x[i][2]; - buf[m++] = v[i][0]; - buf[m++] = v[i][1]; - buf[m++] = v[i][2]; - buf[m++] = ubuf(tag[i]).d; - buf[m++] = ubuf(type[i]).d; - buf[m++] = ubuf(mask[i]).d; - buf[m++] = ubuf(image[i]).d; - buf[m++] = dpdTheta[i]; - buf[m++] = uCond[i]; - buf[m++] = uMech[i]; - buf[m++] = uChem[i]; - buf[m++] = uCG[i]; - buf[m++] = uCGnew[i]; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - m += modify->fix[atom->extra_grow[iextra]]->pack_exchange(i,&buf[m]); - - buf[0] = m; - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecDPD::unpack_exchange(double *buf) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - int m = 1; - x[nlocal][0] = buf[m++]; - x[nlocal][1] = buf[m++]; - x[nlocal][2] = buf[m++]; - v[nlocal][0] = buf[m++]; - v[nlocal][1] = buf[m++]; - v[nlocal][2] = buf[m++]; - tag[nlocal] = (tagint) ubuf(buf[m++]).i; - type[nlocal] = (int) ubuf(buf[m++]).i; - mask[nlocal] = (int) ubuf(buf[m++]).i; - image[nlocal] = (imageint) ubuf(buf[m++]).i; - dpdTheta[nlocal] = buf[m++]; - uCond[nlocal] = buf[m++]; - uMech[nlocal] = buf[m++]; - uChem[nlocal] = buf[m++]; - uCG[nlocal] = buf[m++]; - uCGnew[nlocal] = buf[m++]; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - m += modify->fix[atom->extra_grow[iextra]]-> - unpack_exchange(nlocal,&buf[m]); - - atom->nlocal++; - return m; -} - -/* ---------------------------------------------------------------------- - size of restart data for all atoms owned by this proc - include extra data stored by fixes -------------------------------------------------------------------------- */ - -int AtomVecDPD::size_restart() -{ - int i; - - int nlocal = atom->nlocal; - int n = 15 * nlocal; // 11 + dpdTheta + uCond + uMech + uChem - - if (atom->nextra_restart) - for (int iextra = 0; iextra < atom->nextra_restart; iextra++) - for (i = 0; i < nlocal; i++) - n += modify->fix[atom->extra_restart[iextra]]->size_restart(i); - - return n; -} - -/* ---------------------------------------------------------------------- - pack atom I's data for restart file including extra quantities - xyz must be 1st 3 values, so that read_restart can test on them - molecular types may be negative, but write as positive -------------------------------------------------------------------------- */ - -int AtomVecDPD::pack_restart(int i, double *buf) -{ - int m = 1; - buf[m++] = x[i][0]; - buf[m++] = x[i][1]; - buf[m++] = x[i][2]; - buf[m++] = ubuf(tag[i]).d; - buf[m++] = ubuf(type[i]).d; - buf[m++] = ubuf(mask[i]).d; - buf[m++] = ubuf(image[i]).d; - buf[m++] = v[i][0]; - buf[m++] = v[i][1]; - buf[m++] = v[i][2]; - buf[m++] = dpdTheta[i]; - buf[m++] = uCond[i]; - buf[m++] = uMech[i]; - buf[m++] = uChem[i]; - - if (atom->nextra_restart) - for (int iextra = 0; iextra < atom->nextra_restart; iextra++) - m += modify->fix[atom->extra_restart[iextra]]->pack_restart(i,&buf[m]); - - buf[0] = m; - return m; -} - -/* ---------------------------------------------------------------------- - unpack data for one atom from restart file including extra quantities -------------------------------------------------------------------------- */ - -int AtomVecDPD::unpack_restart(double *buf) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) { - grow(0); - if (atom->nextra_store) - memory->grow(atom->extra,nmax,atom->nextra_store,"atom:extra"); - } - - int m = 1; - x[nlocal][0] = buf[m++]; - x[nlocal][1] = buf[m++]; - x[nlocal][2] = buf[m++]; - tag[nlocal] = (tagint) ubuf(buf[m++]).i; - type[nlocal] = (int) ubuf(buf[m++]).i; - mask[nlocal] = (int) ubuf(buf[m++]).i; - image[nlocal] = (imageint) ubuf(buf[m++]).i; - v[nlocal][0] = buf[m++]; - v[nlocal][1] = buf[m++]; - v[nlocal][2] = buf[m++]; - dpdTheta[nlocal] = buf[m++]; - uCond[nlocal] = buf[m++]; - uMech[nlocal] = buf[m++]; - uChem[nlocal] = buf[m++]; - uCG[nlocal] = 0.0; - uCGnew[nlocal] = 0.0; - - double **extra = atom->extra; - if (atom->nextra_store) { - int size = static_cast (buf[0]) - m; - for (int i = 0; i < size; i++) extra[nlocal][i] = buf[m++]; - } - - atom->nlocal++; - return m; -} - -/* ---------------------------------------------------------------------- - create one atom of itype at coord - set other values to defaults -------------------------------------------------------------------------- */ - -void AtomVecDPD::create_atom(int itype, double *coord) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - tag[nlocal] = 0; - type[nlocal] = itype; - x[nlocal][0] = coord[0]; - x[nlocal][1] = coord[1]; - x[nlocal][2] = coord[2]; - mask[nlocal] = 1; - image[nlocal] = ((imageint) IMGMAX << IMG2BITS) | - ((imageint) IMGMAX << IMGBITS) | IMGMAX; - v[nlocal][0] = 0.0; - v[nlocal][1] = 0.0; - v[nlocal][2] = 0.0; - rho[nlocal] = 0.0; - dpdTheta[nlocal] = 0.0; - uCond[nlocal] = 0.0; - uMech[nlocal] = 0.0; - uChem[nlocal] = 0.0; - uCG[nlocal] = 0.0; - uCGnew[nlocal] = 0.0; - duChem[nlocal] = 0.0; - - atom->nlocal++; -} - -/* ---------------------------------------------------------------------- - unpack one line from Atoms section of data file - initialize other atom quantities -------------------------------------------------------------------------- */ - -void AtomVecDPD::data_atom(double *coord, tagint imagetmp, char **values) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - tag[nlocal] = utils::tnumeric(FLERR,values[0],true,lmp); - type[nlocal] = utils::inumeric(FLERR,values[1],true,lmp); - if (type[nlocal] <= 0 || type[nlocal] > atom->ntypes) - error->one(FLERR,"Invalid atom type in Atoms section of data file"); - - dpdTheta[nlocal] = utils::numeric(FLERR,values[2],true,lmp); - if (dpdTheta[nlocal] <= 0) - error->one(FLERR,"Internal temperature in Atoms section of date file must be > zero"); - - x[nlocal][0] = coord[0]; - x[nlocal][1] = coord[1]; - x[nlocal][2] = coord[2]; - - image[nlocal] = imagetmp; - - mask[nlocal] = 1; - v[nlocal][0] = 0.0; - v[nlocal][1] = 0.0; - v[nlocal][2] = 0.0; - - rho[nlocal] = 0.0; - uCond[nlocal] = 0.0; - uMech[nlocal] = 0.0; - uChem[nlocal] = 0.0; - uCG[nlocal] = 0.0; - uCGnew[nlocal] = 0.0; - - atom->nlocal++; -} - -/* ---------------------------------------------------------------------- - unpack hybrid quantities from one line in Atoms section of data file - initialize other atom quantities for this sub-style -------------------------------------------------------------------------- */ - -int AtomVecDPD::data_atom_hybrid(int nlocal, char **values) -{ - dpdTheta[nlocal] = utils::numeric(FLERR,values[0],true,lmp); - - return 1; -} - -/* ---------------------------------------------------------------------- - pack atom info for data file including 3 image flags -------------------------------------------------------------------------- */ - -void AtomVecDPD::pack_data(double **buf) -{ - int nlocal = atom->nlocal; - for (int i = 0; i < nlocal; i++) { - buf[i][0] = ubuf(tag[i]).d; - buf[i][1] = ubuf(type[i]).d; - buf[i][2] = dpdTheta[i]; - buf[i][3] = x[i][0]; - buf[i][4] = x[i][1]; - buf[i][5] = x[i][2]; - buf[i][6] = ubuf((image[i] & IMGMASK) - IMGMAX).d; - buf[i][7] = ubuf((image[i] >> IMGBITS & IMGMASK) - IMGMAX).d; - buf[i][8] = ubuf((image[i] >> IMG2BITS) - IMGMAX).d; - } -} - -/* ---------------------------------------------------------------------- - pack hybrid atom info for data file -------------------------------------------------------------------------- */ - -int AtomVecDPD::pack_data_hybrid(int i, double *buf) -{ - buf[0] = dpdTheta[i]; - return 1; -} - -/* ---------------------------------------------------------------------- - write atom info to data file including 3 image flags -------------------------------------------------------------------------- */ - -void AtomVecDPD::write_data(FILE *fp, int n, double **buf) -{ - for (int i = 0; i < n; i++) - fprintf(fp,TAGINT_FORMAT " %d %-1.16e %-1.16e %-1.16e %-1.16e %d %d %d\n", - (tagint) ubuf(buf[i][0]).i,(int) ubuf(buf[i][1]).i, - buf[i][2],buf[i][3],buf[i][4],buf[i][5], - (int) ubuf(buf[i][6]).i,(int) ubuf(buf[i][7]).i, - (int) ubuf(buf[i][8]).i); -} - -/* ---------------------------------------------------------------------- - write hybrid atom info to data file -------------------------------------------------------------------------- */ - -int AtomVecDPD::write_data_hybrid(FILE *fp, double *buf) -{ - fprintf(fp," %-1.16e",buf[0]); - return 1; -} - -/* ---------------------------------------------------------------------- - return # of bytes of allocated memory -------------------------------------------------------------------------- */ - -bigint AtomVecDPD::memory_usage() -{ - bigint bytes = 0; - - if (atom->memcheck("tag")) bytes += memory->usage(tag,nmax); - if (atom->memcheck("type")) bytes += memory->usage(type,nmax); - if (atom->memcheck("mask")) bytes += memory->usage(mask,nmax); - if (atom->memcheck("image")) bytes += memory->usage(image,nmax); - if (atom->memcheck("x")) bytes += memory->usage(x,nmax,3); - if (atom->memcheck("v")) bytes += memory->usage(v,nmax,3); - if (atom->memcheck("f")) bytes += memory->usage(f,nmax*comm->nthreads,3); - if (atom->memcheck("rho")) bytes += memory->usage(rho,nmax); - if (atom->memcheck("dpdTheta")) bytes += memory->usage(dpdTheta,nmax); - if (atom->memcheck("uCond")) bytes += memory->usage(uCond,nmax); - if (atom->memcheck("uMech")) bytes += memory->usage(uMech,nmax); - if (atom->memcheck("uChem")) bytes += memory->usage(uChem,nmax); - if (atom->memcheck("uCG")) bytes += memory->usage(uCG,nmax); - if (atom->memcheck("uCGnew")) bytes += memory->usage(uCGnew,nmax); - if (atom->memcheck("duChem")) bytes += memory->usage(duChem,nmax); + atom->rho[ilocal] = 0.0; + atom->uCond[ilocal] = 0.0; + atom->uMech[ilocal] = 0.0; + atom->uChem[ilocal] = 0.0; + atom->uCG[ilocal] = 0.0; + atom->uCGnew[ilocal] = 0.0; - return bytes; + if (atom->dpdTheta[ilocal] <= 0) + error->one(FLERR,"Internal temperature in Atoms section of date file " + "must be > zero"); } diff --git a/src/USER-DPD/atom_vec_dpd.h b/src/USER-DPD/atom_vec_dpd.h index 234d2ccce7..20c8a9a2d2 100644 --- a/src/USER-DPD/atom_vec_dpd.h +++ b/src/USER-DPD/atom_vec_dpd.h @@ -27,46 +27,8 @@ namespace LAMMPS_NS { class AtomVecDPD : public AtomVec { public: AtomVecDPD(class LAMMPS *); - virtual ~AtomVecDPD() {} - void grow(int); - void grow_reset(); - void copy(int, int, int); - virtual int pack_comm(int, int *, double *, int, int *); - virtual int pack_comm_vel(int, int *, double *, int, int *); - int pack_comm_hybrid(int, int *, double *); - virtual void unpack_comm(int, int, double *); - virtual void unpack_comm_vel(int, int, double *); - int unpack_comm_hybrid(int, int, double *); - int pack_reverse(int, int, double *); - void unpack_reverse(int, int *, double *); - virtual int pack_border(int, int *, double *, int, int *); - virtual int pack_border_vel(int, int *, double *, int, int *); - int pack_border_hybrid(int, int *, double *); - virtual void unpack_border(int, int, double *); - virtual void unpack_border_vel(int, int, double *); - int unpack_border_hybrid(int, int, double *); - virtual int pack_exchange(int, double *); - virtual int unpack_exchange(double *); - int size_restart(); - int pack_restart(int, double *); - int unpack_restart(double *); - void create_atom(int, double *); - void data_atom(double *, imageint, char **); - int data_atom_hybrid(int, char **); - void pack_data(double **); - int pack_data_hybrid(int, double *); - void write_data(FILE *, int, double **); - int write_data_hybrid(FILE *, double *); - bigint memory_usage(); - double *uCond,*uMech,*uChem,*uCG,*uCGnew,*rho,*dpdTheta; - double *duChem; - - protected: - tagint *tag; - int *type,*mask; - imageint *image; - double **x,**v,**f; - + void unpack_restart_init(int); + void data_atom_post(int); }; } @@ -76,15 +38,6 @@ class AtomVecDPD : public AtomVec { /* ERROR/WARNING messages: -E: Per-processor system is too big - -The number of owned atoms plus ghost atoms on a single -processor must fit in 32-bit integer. - -E: Invalid atom type in Atoms section of data file - -Atom types must range from 1 to specified # of types. - E: Internal temperature in Atoms section of data file must be > zero All internal temperatures must be > zero diff --git a/src/USER-EFF/atom_vec_electron.cpp b/src/USER-EFF/atom_vec_electron.cpp index 552a89c04a..fc73bf4dd5 100644 --- a/src/USER-EFF/atom_vec_electron.cpp +++ b/src/USER-EFF/atom_vec_electron.cpp @@ -46,929 +46,61 @@ AtomVecElectron::AtomVecElectron(LAMMPS *lmp) : AtomVec(lmp) { if (lmp->citeme) lmp->citeme->add(cite_user_eff_package); - comm_x_only = comm_f_only = 0; - - mass_type = 1; - molecular = 0; forceclearflag = 1; - size_forward = 4; - size_reverse = 4; - size_border = 9; - size_velocity = 3; - size_data_atom = 8; - size_data_vel = 5; - xcol_data = 6; - atom->ecp_flag = 0; atom->electron_flag = 1; atom->q_flag = atom->spin_flag = atom->eradius_flag = atom->ervel_flag = atom->erforce_flag = 1; -} - -/* ---------------------------------------------------------------------- - grow atom-electron arrays - n = 0 grows arrays by a chunk - n > 0 allocates arrays to size n -------------------------------------------------------------------------- */ - -void AtomVecElectron::grow(int n) -{ - if (n == 0) grow_nmax(); - else nmax = n; - atom->nmax = nmax; - - tag = memory->grow(atom->tag,nmax,"atom:tag"); - type = memory->grow(atom->type,nmax,"atom:type"); - mask = memory->grow(atom->mask,nmax,"atom:mask"); - image = memory->grow(atom->image,nmax,"atom:image"); - x = memory->grow(atom->x,nmax,3,"atom:x"); - v = memory->grow(atom->v,nmax,3,"atom:v"); - f = memory->grow(atom->f,nmax*comm->nthreads,3,"atom:f"); - - q = memory->grow(atom->q,nmax,"atom:q"); - spin = memory->grow(atom->spin,nmax,"atom:spin"); - eradius = memory->grow(atom->eradius,nmax,"atom:eradius"); - ervel = memory->grow(atom->ervel,nmax,"atom:ervel"); - erforce = memory->grow(atom->erforce,nmax*comm->nthreads,"atom:erforce"); - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - modify->fix[atom->extra_grow[iextra]]->grow_arrays(nmax); -} - -/* ---------------------------------------------------------------------- - reset local array ptrs -------------------------------------------------------------------------- */ - -void AtomVecElectron::grow_reset() -{ - tag = atom->tag; type = atom->type; - mask = atom->mask; image = atom->image; - x = atom->x; v = atom->v; f = atom->f; - q = atom->q; - eradius = atom->eradius; ervel = atom->ervel; erforce = atom->erforce; -} - -/* ---------------------------------------------------------------------- - copy atom I info to atom J -------------------------------------------------------------------------- */ - -void AtomVecElectron::copy(int i, int j, int delflag) -{ - tag[j] = tag[i]; - type[j] = type[i]; - mask[j] = mask[i]; - image[j] = image[i]; - x[j][0] = x[i][0]; - x[j][1] = x[i][1]; - x[j][2] = x[i][2]; - v[j][0] = v[i][0]; - v[j][1] = v[i][1]; - v[j][2] = v[i][2]; - - q[j] = q[i]; - spin[j] = spin[i]; - eradius[j] = eradius[i]; - ervel[j] = ervel[i]; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - modify->fix[atom->extra_grow[iextra]]->copy_arrays(i,j,delflag); -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecElectron::force_clear(int n, size_t nbytes) -{ - memset(&erforce[n],0,nbytes); -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecElectron::pack_comm(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = eradius[j]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]*domain->xprd + pbc[5]*domain->xy + pbc[4]*domain->xz; - dy = pbc[1]*domain->yprd + pbc[3]*domain->yz; - dz = pbc[2]*domain->zprd; - } - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = eradius[j]; - } - } - return m; -} -/* ---------------------------------------------------------------------- */ + // strings with peratom variables to include in each AtomVec method + // strings cannot contain fields in corresponding AtomVec default strings + // order of fields in the string does not matter + // except fields_data_atom and fields_data_vel which must match data file -int AtomVecElectron::pack_comm_vel(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz,dvx,dvy,dvz; + fields_grow = (char *) "q spin eradius ervel erforce"; + fields_copy = (char *) "q spin eradius ervel"; + fields_comm = (char *) "eradius"; + fields_comm_vel = (char *) "eradius"; + fields_reverse = (char *) "erforce"; + fields_border = (char *) "q spin eradius"; + fields_border_vel = (char *) "q spin eradius"; + fields_exchange = (char *) "q spin eradius ervel"; + fields_restart = (char *) "q spin eradius ervel"; + fields_create = (char *) "q spin eradius ervel"; + fields_data_atom = (char *) "id type q spin eradius x"; + fields_data_vel = (char *) "ervel"; - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = eradius[j]; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]*domain->xprd + pbc[5]*domain->xy + pbc[4]*domain->xz; - dy = pbc[1]*domain->yprd + pbc[3]*domain->yz; - dz = pbc[2]*domain->zprd; - } - if (!deform_vremap) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = eradius[j]; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } else { - dvx = pbc[0]*h_rate[0] + pbc[5]*h_rate[5] + pbc[4]*h_rate[4]; - dvy = pbc[1]*h_rate[1] + pbc[3]*h_rate[3]; - dvz = pbc[2]*h_rate[2]; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = eradius[j]; - if (mask[i] & deform_groupbit) { - buf[m++] = v[j][0] + dvx; - buf[m++] = v[j][1] + dvy; - buf[m++] = v[j][2] + dvz; - } else { - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } - } - } - return m; + setup_fields(); } /* ---------------------------------------------------------------------- */ -int AtomVecElectron::pack_comm_hybrid(int n, int *list, double *buf) +void AtomVecElectron::force_clear(int /*n*/, size_t nbytes) { - int i,j,m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = eradius[j]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecElectron::unpack_comm(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - eradius[i] = buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecElectron::unpack_comm_vel(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - eradius[i] = buf[m++]; - v[i][0] = buf[m++]; - v[i][1] = buf[m++]; - v[i][2] = buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecElectron::unpack_comm_hybrid(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) - eradius[i] = buf[m++]; - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecElectron::pack_reverse(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - buf[m++] = f[i][0]; - buf[m++] = f[i][1]; - buf[m++] = f[i][2]; - buf[m++] = erforce[i]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecElectron::pack_reverse_hybrid(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) - buf[m++] = erforce[i]; - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecElectron::unpack_reverse(int n, int *list, double *buf) -{ - int i,j,m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - f[j][0] += buf[m++]; - f[j][1] += buf[m++]; - f[j][2] += buf[m++]; - erforce[j] += buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecElectron::unpack_reverse_hybrid(int n, int *list, double *buf) -{ - int i,j,m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - erforce[j] += buf[m++]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecElectron::pack_border(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = q[j]; - buf[m++] = ubuf(spin[j]).d; - buf[m++] = eradius[j]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]; - dy = pbc[1]; - dz = pbc[2]; - } - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = q[j]; - buf[m++] = ubuf(spin[j]).d; - buf[m++] = eradius[j]; - } - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); - - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecElectron::pack_border_vel(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz,dvx,dvy,dvz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = q[j]; - buf[m++] = ubuf(spin[j]).d; - buf[m++] = eradius[j]; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]; - dy = pbc[1]; - dz = pbc[2]; - } - if (domain->triclinic == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = q[j]; - buf[m++] = ubuf(spin[j]).d; - buf[m++] = eradius[j]; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } else { - dvx = pbc[0]*h_rate[0] + pbc[5]*h_rate[5] + pbc[4]*h_rate[4]; - dvy = pbc[1]*h_rate[1] + pbc[3]*h_rate[3]; - dvz = pbc[2]*h_rate[2]; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = q[j]; - buf[m++] = ubuf(spin[j]).d; - buf[m++] = eradius[j]; - if (mask[i] & deform_groupbit) { - buf[m++] = v[j][0] + dvx; - buf[m++] = v[j][1] + dvy; - buf[m++] = v[j][2] + dvz; - } else { - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } - } - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); - - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecElectron::pack_border_hybrid(int n, int *list, double *buf) -{ - int i,j,m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = q[j]; - buf[m++] = ubuf(spin[j]).d; - buf[m++] = eradius[j]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecElectron::unpack_border(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - if (i == nmax) grow(0); - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - tag[i] = (tagint) ubuf(buf[m++]).i; - type[i] = (int) ubuf(buf[m++]).i; - mask[i] = (int) ubuf(buf[m++]).i; - q[i] = buf[m++]; - spin[i] = (int) ubuf(buf[m++]).i; - eradius[i] = buf[m++]; - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]-> - unpack_border(n,first,&buf[m]); -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecElectron::unpack_border_vel(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - if (i == nmax) grow(0); - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - tag[i] = (tagint) ubuf(buf[m++]).i; - type[i] = (int) ubuf(buf[m++]).i; - mask[i] = (int) ubuf(buf[m++]).i; - q[i] = buf[m++]; - spin[i] = (int) ubuf(buf[m++]).i; - eradius[i] = buf[m++]; - v[i][0] = buf[m++]; - v[i][1] = buf[m++]; - v[i][2] = buf[m++]; - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]-> - unpack_border(n,first,&buf[m]); -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecElectron::unpack_border_hybrid(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - q[i] = buf[m++]; - spin[i] = (int) ubuf(buf[m++]).i; - eradius[i] = buf[m++]; - } - return m; -} - -/* ---------------------------------------------------------------------- - pack data for atom I for sending to another proc - xyz must be 1st 3 values, so comm::exchange() can test on them -------------------------------------------------------------------------- */ - -int AtomVecElectron::pack_exchange(int i, double *buf) -{ - int m = 1; - buf[m++] = x[i][0]; - buf[m++] = x[i][1]; - buf[m++] = x[i][2]; - buf[m++] = v[i][0]; - buf[m++] = v[i][1]; - buf[m++] = v[i][2]; - buf[m++] = ubuf(tag[i]).d; - buf[m++] = ubuf(type[i]).d; - buf[m++] = ubuf(mask[i]).d; - buf[m++] = ubuf(image[i]).d; - buf[m++] = q[i]; - buf[m++] = ubuf(spin[i]).d; - buf[m++] = eradius[i]; - buf[m++] = ervel[i]; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - m += modify->fix[atom->extra_grow[iextra]]->pack_exchange(i,&buf[m]); - - buf[0] = m; - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecElectron::unpack_exchange(double *buf) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - int m = 1; - x[nlocal][0] = buf[m++]; - x[nlocal][1] = buf[m++]; - x[nlocal][2] = buf[m++]; - v[nlocal][0] = buf[m++]; - v[nlocal][1] = buf[m++]; - v[nlocal][2] = buf[m++]; - tag[nlocal] = (tagint) ubuf(buf[m++]).i; - type[nlocal] = (int) ubuf(buf[m++]).i; - mask[nlocal] = (int) ubuf(buf[m++]).i; - image[nlocal] = (imageint) ubuf(buf[m++]).i; - q[nlocal] = buf[m++]; - spin[nlocal] = (int) ubuf(buf[m++]).i; - eradius[nlocal] = buf[m++]; - ervel[nlocal] = buf[m++]; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - m += modify->fix[atom->extra_grow[iextra]]-> - unpack_exchange(nlocal,&buf[m]); - - atom->nlocal++; - return m; -} - -/* ---------------------------------------------------------------------- - size of restart data for all atoms owned by this proc - include extra data stored by fixes -------------------------------------------------------------------------- */ - -int AtomVecElectron::size_restart() -{ - int i; - - int nlocal = atom->nlocal; - int n = 15 * nlocal; // Associated with pack_restart - - if (atom->nextra_restart) - for (int iextra = 0; iextra < atom->nextra_restart; iextra++) - for (i = 0; i < nlocal; i++) - n += modify->fix[atom->extra_restart[iextra]]->size_restart(i); - - return n; -} - -/* ---------------------------------------------------------------------- - pack atom I's data for restart file including extra quantities - xyz must be 1st 3 values, so that read_restart can test on them - molecular types may be negative, but write as positive -------------------------------------------------------------------------- */ - -int AtomVecElectron::pack_restart(int i, double *buf) -{ - int m = 1; - buf[m++] = x[i][0]; - buf[m++] = x[i][1]; - buf[m++] = x[i][2]; - buf[m++] = ubuf(tag[i]).d; - buf[m++] = ubuf(type[i]).d; - buf[m++] = ubuf(mask[i]).d; - buf[m++] = ubuf(image[i]).d; - buf[m++] = v[i][0]; - buf[m++] = v[i][1]; - buf[m++] = v[i][2]; - - buf[m++] = q[i]; - buf[m++] = ubuf(spin[i]).d; - buf[m++] = eradius[i]; - buf[m++] = ervel[i]; - - if (atom->nextra_restart) - for (int iextra = 0; iextra < atom->nextra_restart; iextra++) - m += modify->fix[atom->extra_restart[iextra]]->pack_restart(i,&buf[m]); - - buf[0] = m; - return m; -} - -/* ---------------------------------------------------------------------- - unpack data for one atom from restart file including extra quantities -------------------------------------------------------------------------- */ - -int AtomVecElectron::unpack_restart(double *buf) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) { - grow(0); - if (atom->nextra_store) - memory->grow(atom->extra,nmax,atom->nextra_store,"atom:extra"); - } - - int m = 1; - x[nlocal][0] = buf[m++]; - x[nlocal][1] = buf[m++]; - x[nlocal][2] = buf[m++]; - tag[nlocal] = (tagint) ubuf(buf[m++]).i; - type[nlocal] = (int) ubuf(buf[m++]).i; - mask[nlocal] = (int) ubuf(buf[m++]).i; - image[nlocal] = (imageint) ubuf(buf[m++]).i; - v[nlocal][0] = buf[m++]; - v[nlocal][1] = buf[m++]; - v[nlocal][2] = buf[m++]; - - q[nlocal] = buf[m++]; - spin[nlocal] = (int) ubuf(buf[m++]).i; - eradius[nlocal] = buf[m++]; - ervel[nlocal] = buf[m++]; - - double **extra = atom->extra; - if (atom->nextra_store) { - int size = static_cast (buf[0]) - m; - for (int i = 0; i < size; i++) extra[nlocal][i] = buf[m++]; - } - - atom->nlocal++; - return m; -} - -/* ---------------------------------------------------------------------- - create one atom of itype at coord - set other values to defaults -------------------------------------------------------------------------- */ - -void AtomVecElectron::create_atom(int itype, double *coord) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - tag[nlocal] = 0; - type[nlocal] = itype; - x[nlocal][0] = coord[0]; - x[nlocal][1] = coord[1]; - x[nlocal][2] = coord[2]; - mask[nlocal] = 1; - image[nlocal] = ((imageint) IMGMAX << IMG2BITS) | - ((imageint) IMGMAX << IMGBITS) | IMGMAX; - v[nlocal][0] = 0.0; - v[nlocal][1] = 0.0; - v[nlocal][2] = 0.0; - - q[nlocal] = 0.0; - spin[nlocal] = 1; - eradius[nlocal] = 1.0; - ervel[nlocal] = 0.0; - - atom->nlocal++; -} - -/* ---------------------------------------------------------------------- - unpack one line from Atoms section of data file - initialize other atom quantities -------------------------------------------------------------------------- */ - -void AtomVecElectron::data_atom(double *coord, imageint imagetmp, char **values) -{ - int nlocal = atom->nlocal; - - if (nlocal == nmax) grow(0); - - tag[nlocal] = utils::tnumeric(FLERR,values[0],true,lmp); - type[nlocal] = utils::inumeric(FLERR,values[1],true,lmp); - if (type[nlocal] <= 0 || type[nlocal] > atom->ntypes) - error->one(FLERR,"Invalid atom type in Atoms section of data file"); - - q[nlocal] = utils::numeric(FLERR,values[2],true,lmp); - spin[nlocal] = utils::inumeric(FLERR,values[3],true,lmp); - if (spin[nlocal] == 3) atom->ecp_flag = 1; - - eradius[nlocal] = utils::numeric(FLERR,values[4],true,lmp); - - x[nlocal][0] = coord[0]; - x[nlocal][1] = coord[1]; - x[nlocal][2] = coord[2]; - - image[nlocal] = imagetmp; - - mask[nlocal] = 1; - v[nlocal][0] = 0.0; - v[nlocal][1] = 0.0; - v[nlocal][2] = 0.0; - ervel[nlocal] = 0.0; - - atom->nlocal++; + memset(&atom->erforce[0],0,nbytes); } /* ---------------------------------------------------------------------- - unpack hybrid quantities from one line in Atoms section of data file - initialize other atom quantities for this sub-style + initialize non-zero atom quantities ------------------------------------------------------------------------- */ -int AtomVecElectron::data_atom_hybrid(int nlocal, char **values) +void AtomVecElectron::create_atom_post(int ilocal) { - q[nlocal] = utils::numeric(FLERR,values[0],true,lmp); - spin[nlocal] = utils::inumeric(FLERR,values[1],true,lmp); - eradius[nlocal] = utils::numeric(FLERR,values[2],true,lmp); - if (eradius[nlocal] < 0.0) - error->one(FLERR,"Invalid eradius in Atoms section of data file"); - - v[nlocal][0] = 0.0; - v[nlocal][1] = 0.0; - v[nlocal][2] = 0.0; - ervel[nlocal] = 0.0; - - return 3; + atom->spin[ilocal] = 1; + atom->eradius[ilocal] = 1.0; } /* ---------------------------------------------------------------------- - unpack one line from Velocities section of data file + modify what AtomVec::data_atom() just unpacked + or initialize other atom quantities ------------------------------------------------------------------------- */ -void AtomVecElectron::data_vel(int m, char **values) +void AtomVecElectron::data_atom_post(int ilocal) { - v[m][0] = utils::numeric(FLERR,values[0],true,lmp); - v[m][1] = utils::numeric(FLERR,values[1],true,lmp); - v[m][2] = utils::numeric(FLERR,values[2],true,lmp); - ervel[m] = utils::numeric(FLERR,values[3],true,lmp); -} - -/* ---------------------------------------------------------------------- - unpack hybrid quantities from one line in Velocities section of data file -------------------------------------------------------------------------- */ - -int AtomVecElectron::data_vel_hybrid(int m, char **values) -{ - ervel[m] = utils::numeric(FLERR,values[0],true,lmp); - return 1; -} - -/* ---------------------------------------------------------------------- - pack atom info for data file including 3 image flags -------------------------------------------------------------------------- */ - -void AtomVecElectron::pack_data(double **buf) -{ - int nlocal = atom->nlocal; - for (int i = 0; i < nlocal; i++) { - buf[i][0] = ubuf(tag[i]).d; - buf[i][1] = ubuf(type[i]).d; - buf[i][2] = q[i]; - buf[i][3] = ubuf(spin[i]).d; - buf[i][4] = eradius[i]; - buf[i][5] = x[i][0]; - buf[i][6] = x[i][1]; - buf[i][7] = x[i][2]; - buf[i][8] = ubuf((image[i] & IMGMASK) - IMGMAX).d; - buf[i][9] = ubuf((image[i] >> IMGBITS & IMGMASK) - IMGMAX).d; - buf[i][10] = ubuf((image[i] >> IMG2BITS) - IMGMAX).d; - } -} - -/* ---------------------------------------------------------------------- - pack hybrid atom info for data file -------------------------------------------------------------------------- */ - -int AtomVecElectron::pack_data_hybrid(int i, double *buf) -{ - buf[0] = q[i]; - buf[1] = ubuf(spin[i]).d; - buf[2] = eradius[i]; - return 3; -} - -/* ---------------------------------------------------------------------- - write atom info to data file including 3 image flags -------------------------------------------------------------------------- */ - -void AtomVecElectron::write_data(FILE *fp, int n, double **buf) -{ - for (int i = 0; i < n; i++) - fprintf(fp,TAGINT_FORMAT - " %d %-1.16e %d %-1.16e %-1.16e %-1.16e %-1.16e %d %d %d\n", - (tagint) ubuf(buf[i][0]).i,(int) ubuf(buf[i][1]).i,buf[i][2], - (int) ubuf(buf[i][3]).i,buf[i][4],buf[i][5],buf[i][6],buf[i][7], - (int) ubuf(buf[i][8]).i,(int) ubuf(buf[i][9]).i, - (int) ubuf(buf[i][10]).i); -} - -/* ---------------------------------------------------------------------- - write hybrid atom info to data file -------------------------------------------------------------------------- */ - -int AtomVecElectron::write_data_hybrid(FILE *fp, double *buf) -{ - fprintf(fp," %-1.16e %d %-1.16e",buf[0],(int) ubuf(buf[1]).i,buf[2]); - return 3; -} - -/* ---------------------------------------------------------------------- - pack velocity info for data file -------------------------------------------------------------------------- */ - -void AtomVecElectron::pack_vel(double **buf) -{ - int nlocal = atom->nlocal; - for (int i = 0; i < nlocal; i++) { - buf[i][0] = ubuf(tag[i]).d; - buf[i][1] = v[i][0]; - buf[i][2] = v[i][1]; - buf[i][3] = v[i][2]; - buf[i][4] = ervel[i]; - } -} - -/* ---------------------------------------------------------------------- - pack velocity info for data file -------------------------------------------------------------------------- */ - -int AtomVecElectron::pack_vel_hybrid(int i, double *buf) -{ - buf[0] = ervel[i]; - return 1; -} - -/* ---------------------------------------------------------------------- - write hybrid velocity info to data file -------------------------------------------------------------------------- */ - -void AtomVecElectron::write_vel(FILE *fp, int n, double **buf) -{ - for (int i = 0; i < n; i++) - fprintf(fp,TAGINT_FORMAT " %-1.16e %-1.16e %-1.16e %-1.16e\n", - (tagint) ubuf(buf[i][0]).i,buf[i][1],buf[i][2],buf[i][3],buf[i][4]); -} - -/* ---------------------------------------------------------------------- - write hybrid velocity info to data file -------------------------------------------------------------------------- */ - -int AtomVecElectron::write_vel_hybrid(FILE *fp, double *buf) -{ - fprintf(fp," %-1.16e",buf[0]); - return 1; + atom->ervel[ilocal] = 0.0; + if (atom->spin[ilocal] == 3) atom->ecp_flag = 1; } /* ---------------------------------------------------------------------- @@ -998,24 +130,28 @@ void AtomVecElectron::pack_property_atom(int index, double *buf, int n = 0; if (index == 0) { + int *spin = atom->spin; for (int i = 0; i < nlocal; i++) { if (mask[i] & groupbit) buf[n] = spin[i]; else buf[n] = 0.0; n += nvalues; } } else if (index == 1) { + double *eradius = atom->eradius; for (int i = 0; i < nlocal; i++) { if (mask[i] & groupbit) buf[n] = eradius[i]; else buf[n] = 0.0; n += nvalues; } } else if (index == 2) { + double *ervel = atom->ervel; for (int i = 0; i < nlocal; i++) { if (mask[i] & groupbit) buf[n] = ervel[i]; else buf[n] = 0.0; n += nvalues; } } else if (index == 3) { + double *erforce = atom->erforce; for (int i = 0; i < nlocal; i++) { if (mask[i] & groupbit) buf[n] = erforce[i]; else buf[n] = 0.0; @@ -1023,29 +159,3 @@ void AtomVecElectron::pack_property_atom(int index, double *buf, } } } - -/* ---------------------------------------------------------------------- - return # of bytes of allocated memory -------------------------------------------------------------------------- */ - -bigint AtomVecElectron::memory_usage() -{ - bigint bytes = 0; - - if (atom->memcheck("tag")) bytes += memory->usage(tag,nmax); - if (atom->memcheck("type")) bytes += memory->usage(type,nmax); - if (atom->memcheck("mask")) bytes += memory->usage(mask,nmax); - if (atom->memcheck("image")) bytes += memory->usage(image,nmax); - if (atom->memcheck("x")) bytes += memory->usage(x,nmax,3); - if (atom->memcheck("v")) bytes += memory->usage(v,nmax,3); - if (atom->memcheck("f")) bytes += memory->usage(f,nmax*comm->nthreads,3); - - if (atom->memcheck("q")) bytes += memory->usage(q,nmax); - if (atom->memcheck("spin")) bytes += memory->usage(spin,nmax); - if (atom->memcheck("eradius")) bytes += memory->usage(eradius,nmax); - if (atom->memcheck("ervel")) bytes += memory->usage(ervel,nmax); - if (atom->memcheck("erforce")) - bytes += memory->usage(erforce,nmax*comm->nthreads); - - return bytes; -} diff --git a/src/USER-EFF/atom_vec_electron.h b/src/USER-EFF/atom_vec_electron.h index 6e79775c3d..fabb03438d 100644 --- a/src/USER-EFF/atom_vec_electron.h +++ b/src/USER-EFF/atom_vec_electron.h @@ -27,56 +27,11 @@ namespace LAMMPS_NS { class AtomVecElectron : public AtomVec { public: AtomVecElectron(class LAMMPS *); - ~AtomVecElectron() {} - void grow(int); - void grow_reset(); - void copy(int, int, int); void force_clear(int, size_t); - int pack_comm(int, int *, double *, int, int *); - int pack_comm_vel(int, int *, double *, int, int *); - int pack_comm_hybrid(int, int *, double *); - void unpack_comm(int, int, double *); - void unpack_comm_vel(int, int, double *); - int unpack_comm_hybrid(int, int, double *); - int pack_reverse(int, int, double *); - int pack_reverse_hybrid(int, int, double *); - void unpack_reverse(int, int *, double *); - int unpack_reverse_hybrid(int, int *, double *); - int pack_border(int, int *, double *, int, int *); - int pack_border_vel(int, int *, double *, int, int *); - int pack_border_hybrid(int, int *, double *); - void unpack_border(int, int, double *); - void unpack_border_vel(int, int, double *); - int unpack_border_hybrid(int, int, double *); - int pack_exchange(int, double *); - int unpack_exchange(double *); - int size_restart(); - int pack_restart(int, double *); - int unpack_restart(double *); - void create_atom(int, double *); - void data_atom(double *, imageint, char **); - int data_atom_hybrid(int, char **); - void data_vel(int, char **); - int data_vel_hybrid(int, char **); - void pack_data(double **); - int pack_data_hybrid(int, double *); - void write_data(FILE *, int, double **); - int write_data_hybrid(FILE *, double *); - void pack_vel(double **); - int pack_vel_hybrid(int, double *); - void write_vel(FILE *, int, double **); - int write_vel_hybrid(FILE *, double *); + void create_atom_post(int); + void data_atom_post(int); int property_atom(char *); void pack_property_atom(int, double *, int, int); - bigint memory_usage(); - - private: - tagint *tag; - int *type,*mask; - imageint *image; - double **x,**v,**f; - int *spin; - double *q,*eradius,*ervel,*erforce; }; } diff --git a/src/USER-MESO/atom_vec_edpd.cpp b/src/USER-MESO/atom_vec_edpd.cpp index edc7a34331..59cee397b5 100644 --- a/src/USER-MESO/atom_vec_edpd.cpp +++ b/src/USER-MESO/atom_vec_edpd.cpp @@ -10,6 +10,7 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ + #include "atom_vec_edpd.h" #include #include "atom.h" @@ -28,817 +29,65 @@ using namespace LAMMPS_NS; AtomVecEDPD::AtomVecEDPD(LAMMPS *lmp) : AtomVec(lmp) { - if(strcmp(update->unit_style,"lj") != 0) + if (strcmp(update->unit_style,"lj") != 0) error->all(FLERR,"Atom style edpd requires lj units"); molecular = 0; mass_type = 1; forceclearflag = 1; - comm_x_only = comm_f_only = 0; - comm->ghost_velocity = 1; - - size_forward = 3 + 5; // edpd_temp + vest[4] - size_reverse = 3 + 1; // edpd_flux - size_border = 6 + 6; // edpd_temp + edpd_cv + vest[4] - size_velocity = 3; - size_data_atom = 5 + 2; // we read id + type + edpd_temp + edpd_cv + xyz[3] - size_data_vel = 4; - xcol_data = 5; - atom->edpd_flag = 1; atom->vest_flag = 1; -} -/* ---------------------------------------------------------------------- - grow atom arrays - n = 0 grows arrays by a chunk - n > 0 allocates arrays to size n -------------------------------------------------------------------------- */ + // strings with peratom variables to include in each AtomVec method + // strings cannot contain fields in corresponding AtomVec default strings + // order of fields in the string does not matter + // except fields_data_atom and fields_data_vel which must match data file -void AtomVecEDPD::grow(int n) -{ - if (n == 0) grow_nmax(); - else nmax = n; - atom->nmax = nmax; - if (nmax < 0 || nmax > MAXSMALLINT) - error->one(FLERR,"Per-processor system is too big"); - - tag = memory->grow(atom->tag,nmax,"atom:tag"); - type = memory->grow(atom->type,nmax,"atom:type"); - mask = memory->grow(atom->mask,nmax,"atom:mask"); - image = memory->grow(atom->image,nmax,"atom:image"); - x = memory->grow(atom->x,nmax,3,"atom:x"); - v = memory->grow(atom->v,nmax,3,"atom:v"); - f = memory->grow(atom->f,nmax*comm->nthreads,3,"atom:f"); - edpd_cv= memory->grow(atom->edpd_cv, nmax, "atom:edpd_cv"); - edpd_temp = memory->grow(atom->edpd_temp, nmax, "atom:edpd_temp"); - edpd_flux = memory->grow(atom->edpd_flux, nmax*comm->nthreads,"atom:edpd_flux"); - vest = memory->grow(atom->vest, nmax, 4, "atom:vest"); + fields_grow = (char *) "edpd_cv edpd_temp edpd_flux vest"; + fields_copy = (char *) "edpd_cv edpd_temp edpd_flux vest"; + fields_comm = (char *) "edpd_temp vest"; + fields_comm_vel = (char *) "edpd_temp vest"; + fields_reverse = (char *) "edpd_flux"; + fields_border = (char *) "edpd_cv edpd_temp vest"; + fields_border_vel = (char *) "edpd_cv edpd_temp vest"; + fields_exchange = (char *) "edpd_cv edpd_temp vest"; + fields_restart = (char * ) "edpd_cv edpd_temp vest"; + fields_create = (char *) "edpd_cv edpd_temp edpd_flux vest"; + fields_data_atom = (char *) "id type edpd_temp edpd_cv x"; + fields_data_vel = NULL; - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - modify->fix[atom->extra_grow[iextra]]->grow_arrays(nmax); -} - -/* ---------------------------------------------------------------------- - reset local array ptrs -------------------------------------------------------------------------- */ - -void AtomVecEDPD::grow_reset() -{ - tag = atom->tag; type = atom->type; - mask = atom->mask; image = atom->image; - x = atom->x; v = atom->v; f = atom->f; - edpd_cv = atom->cv; edpd_temp = atom->edpd_temp; edpd_flux = atom->edpd_flux; - vest = atom->vest; -} - -/* ---------------------------------------------------------------------- - copy atom I info to atom J -------------------------------------------------------------------------- */ - -void AtomVecEDPD::copy(int i, int j, int delflag) -{ - tag[j] = tag[i]; - type[j] = type[i]; - mask[j] = mask[i]; - image[j] = image[i]; - x[j][0] = x[i][0]; - x[j][1] = x[i][1]; - x[j][2] = x[i][2]; - v[j][0] = v[i][0]; - v[j][1] = v[i][1]; - v[j][2] = v[i][2]; - - edpd_temp[j] = edpd_temp[i]; - edpd_flux[j] = edpd_flux[i]; - edpd_cv[j] = edpd_cv[i]; - vest[j][0] = vest[i][0]; - vest[j][1] = vest[i][1]; - vest[j][2] = vest[i][2]; - vest[j][3] = vest[i][3]; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - modify->fix[atom->extra_grow[iextra]]->copy_arrays(i,j,delflag); -} - - -void AtomVecEDPD::force_clear(int n, size_t nbytes) -{ - memset(&edpd_flux[n],0,nbytes); -} - - -/* ---------------------------------------------------------------------- */ - -int AtomVecEDPD::pack_comm(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = edpd_temp[j]; - buf[m++] = vest[j][0]; - buf[m++] = vest[j][1]; - buf[m++] = vest[j][2]; - buf[m++] = vest[j][3]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]*domain->xprd + pbc[5]*domain->xy + pbc[4]*domain->xz; - dy = pbc[1]*domain->yprd + pbc[3]*domain->yz; - dz = pbc[2]*domain->zprd; - } - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = edpd_temp[j]; - buf[m++] = vest[j][0]; - buf[m++] = vest[j][1]; - buf[m++] = vest[j][2]; - buf[m++] = vest[j][3]; - } - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecEDPD::pack_comm_vel(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz,dvx,dvy,dvz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - buf[m++] = edpd_temp[j]; - buf[m++] = vest[j][0]; - buf[m++] = vest[j][1]; - buf[m++] = vest[j][2]; - buf[m++] = vest[j][3]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]*domain->xprd + pbc[5]*domain->xy + pbc[4]*domain->xz; - dy = pbc[1]*domain->yprd + pbc[3]*domain->yz; - dz = pbc[2]*domain->zprd; - } - if (!deform_vremap) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - buf[m++] = edpd_temp[j]; - buf[m++] = vest[j][0]; - buf[m++] = vest[j][1]; - buf[m++] = vest[j][2]; - buf[m++] = vest[j][3]; - } - } else { - dvx = pbc[0]*h_rate[0] + pbc[5]*h_rate[5] + pbc[4]*h_rate[4]; - dvy = pbc[1]*h_rate[1] + pbc[3]*h_rate[3]; - dvz = pbc[2]*h_rate[2]; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - if (mask[i] & deform_groupbit) { - buf[m++] = v[j][0] + dvx; - buf[m++] = v[j][1] + dvy; - buf[m++] = v[j][2] + dvz; - } else { - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - buf[m++] = edpd_temp[j]; - buf[m++] = vest[j][0]; - buf[m++] = vest[j][1]; - buf[m++] = vest[j][2]; - buf[m++] = vest[j][3]; - } - } - } - return m; + setup_fields(); } /* ---------------------------------------------------------------------- */ -void AtomVecEDPD::unpack_comm(int n, int first, double *buf) +void AtomVecEDPD::force_clear(int /*n*/, size_t nbytes) { - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - edpd_temp[i] = buf[m++]; - vest[i][0] = buf[m++]; - vest[i][1] = buf[m++]; - vest[i][2] = buf[m++]; - vest[i][3] = buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecEDPD::unpack_comm_vel(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - v[i][0] = buf[m++]; - v[i][1] = buf[m++]; - v[i][2] = buf[m++]; - edpd_temp[i] = buf[m++]; - vest[i][0] = buf[m++]; - vest[i][1] = buf[m++]; - vest[i][2] = buf[m++]; - vest[i][3] = buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecEDPD::pack_reverse(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - buf[m++] = f[i][0]; - buf[m++] = f[i][1]; - buf[m++] = f[i][2]; - buf[m++] = edpd_flux[i]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecEDPD::unpack_reverse(int n, int *list, double *buf) -{ - int i,j,m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - f[j][0] += buf[m++]; - f[j][1] += buf[m++]; - f[j][2] += buf[m++]; - edpd_flux[j] += buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecEDPD::pack_border(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = edpd_temp[j]; - buf[m++] = edpd_cv[j]; - buf[m++] = vest[j][0]; - buf[m++] = vest[j][1]; - buf[m++] = vest[j][2]; - buf[m++] = vest[j][3]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]; - dy = pbc[1]; - dz = pbc[2]; - } - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = edpd_temp[j]; - buf[m++] = edpd_cv[j]; - buf[m++] = vest[j][0]; - buf[m++] = vest[j][1]; - buf[m++] = vest[j][2]; - buf[m++] = vest[j][3]; - } - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); - - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecEDPD::pack_border_vel(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz,dvx,dvy,dvz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = edpd_temp[j]; - buf[m++] = edpd_cv[j]; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - buf[m++] = vest[j][0]; - buf[m++] = vest[j][1]; - buf[m++] = vest[j][2]; - buf[m++] = vest[j][3]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]; - dy = pbc[1]; - dz = pbc[2]; - } - if (!deform_vremap) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = edpd_temp[j]; - buf[m++] = edpd_cv[j]; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - buf[m++] = vest[j][0]; - buf[m++] = vest[j][1]; - buf[m++] = vest[j][2]; - buf[m++] = vest[j][3]; - } - } else { - dvx = pbc[0]*h_rate[0] + pbc[5]*h_rate[5] + pbc[4]*h_rate[4]; - dvy = pbc[1]*h_rate[1] + pbc[3]*h_rate[3]; - dvz = pbc[2]*h_rate[2]; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = edpd_temp[j]; - buf[m++] = edpd_cv[j]; - if (mask[i] & deform_groupbit) { - buf[m++] = v[j][0] + dvx; - buf[m++] = v[j][1] + dvy; - buf[m++] = v[j][2] + dvz; - buf[m++] = vest[j][0] + dvx; - buf[m++] = vest[j][1] + dvy; - buf[m++] = vest[j][2] + dvz; - buf[m++] = vest[j][3]; - } else { - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - buf[m++] = vest[j][0]; - buf[m++] = vest[j][1]; - buf[m++] = vest[j][2]; - buf[m++] = vest[j][3]; - } - } - } - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); - - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecEDPD::unpack_border(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - if (i == nmax) grow(0); - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - tag[i] = (tagint) ubuf(buf[m++]).i; - type[i] = (int) ubuf(buf[m++]).i; - mask[i] = (int) ubuf(buf[m++]).i; - edpd_temp[i] = buf[m++]; - edpd_cv[i] = buf[m++]; - vest[i][0] = buf[m++]; - vest[i][1] = buf[m++]; - vest[i][2] = buf[m++]; - vest[i][3] = buf[m++]; - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]-> - unpack_border(n,first,&buf[m]); -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecEDPD::unpack_border_vel(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - if (i == nmax) grow(0); - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - tag[i] = (tagint) ubuf(buf[m++]).i; - type[i] = (int) ubuf(buf[m++]).i; - mask[i] = (int) ubuf(buf[m++]).i; - edpd_temp[i] = buf[m++]; - edpd_cv[i] = buf[m++]; - v[i][0] = buf[m++]; - v[i][1] = buf[m++]; - v[i][2] = buf[m++]; - vest[i][0] = buf[m++]; - vest[i][1] = buf[m++]; - vest[i][2] = buf[m++]; - vest[i][3] = buf[m++]; - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]-> - unpack_border(n,first,&buf[m]); -} - -/* ---------------------------------------------------------------------- - pack data for atom I for sending to another proc - xyz must be 1st 3 values, so comm::exchange() can test on them -------------------------------------------------------------------------- */ - -int AtomVecEDPD::pack_exchange(int i, double *buf) -{ - int m = 1; - buf[m++] = x[i][0]; - buf[m++] = x[i][1]; - buf[m++] = x[i][2]; - buf[m++] = v[i][0]; - buf[m++] = v[i][1]; - buf[m++] = v[i][2]; - buf[m++] = ubuf(tag[i]).d; - buf[m++] = ubuf(type[i]).d; - buf[m++] = ubuf(mask[i]).d; - buf[m++] = ubuf(image[i]).d; - buf[m++] = edpd_temp[i]; - buf[m++] = edpd_cv[i]; - buf[m++] = vest[i][0]; - buf[m++] = vest[i][1]; - buf[m++] = vest[i][2]; - buf[m++] = vest[i][3]; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - m += modify->fix[atom->extra_grow[iextra]]->pack_exchange(i,&buf[m]); - - buf[0] = m; - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecEDPD::unpack_exchange(double *buf) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - int m = 1; - x[nlocal][0] = buf[m++]; - x[nlocal][1] = buf[m++]; - x[nlocal][2] = buf[m++]; - v[nlocal][0] = buf[m++]; - v[nlocal][1] = buf[m++]; - v[nlocal][2] = buf[m++]; - tag[nlocal] = (tagint) ubuf(buf[m++]).i; - type[nlocal] = (int) ubuf(buf[m++]).i; - mask[nlocal] = (int) ubuf(buf[m++]).i; - image[nlocal] = (imageint) ubuf(buf[m++]).i; - edpd_temp[nlocal] = buf[m++]; - edpd_cv[nlocal] = buf[m++]; - vest[nlocal][0] = buf[m++]; - vest[nlocal][1] = buf[m++]; - vest[nlocal][2] = buf[m++]; - vest[nlocal][3] = buf[m++]; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - m += modify->fix[atom->extra_grow[iextra]]-> - unpack_exchange(nlocal,&buf[m]); - - atom->nlocal++; - return m; -} - -/* ---------------------------------------------------------------------- - size of restart data for all atoms owned by this proc - include extra data stored by fixes -------------------------------------------------------------------------- */ - -int AtomVecEDPD::size_restart() -{ - int i; - - int nlocal = atom->nlocal; - int n = (11 + 6) * nlocal; // 11 + edpd_temp + edpd_cv + vest[4] - - if (atom->nextra_restart) - for (int iextra = 0; iextra < atom->nextra_restart; iextra++) - for (i = 0; i < nlocal; i++) - n += modify->fix[atom->extra_restart[iextra]]->size_restart(i); - - return n; -} - -/* ---------------------------------------------------------------------- - pack atom I's data for restart file including extra quantities - xyz must be 1st 3 values, so that read_restart can test on them - molecular types may be negative, but write as positive -------------------------------------------------------------------------- */ - -int AtomVecEDPD::pack_restart(int i, double *buf) -{ - int m = 1; - buf[m++] = x[i][0]; - buf[m++] = x[i][1]; - buf[m++] = x[i][2]; - buf[m++] = ubuf(tag[i]).d; - buf[m++] = ubuf(type[i]).d; - buf[m++] = ubuf(mask[i]).d; - buf[m++] = ubuf(image[i]).d; - buf[m++] = v[i][0]; - buf[m++] = v[i][1]; - buf[m++] = v[i][2]; - buf[m++] = edpd_temp[i]; - buf[m++] = edpd_cv[i]; - buf[m++] = vest[i][0]; - buf[m++] = vest[i][1]; - buf[m++] = vest[i][2]; - buf[m++] = vest[i][3]; - - if (atom->nextra_restart) - for (int iextra = 0; iextra < atom->nextra_restart; iextra++) - m += modify->fix[atom->extra_restart[iextra]]->pack_restart(i,&buf[m]); - - buf[0] = m; - return m; + memset(&atom->edpd_flux[0],0,nbytes); } /* ---------------------------------------------------------------------- - unpack data for one atom from restart file including extra quantities + initialize non-zero atom quantities ------------------------------------------------------------------------- */ -int AtomVecEDPD::unpack_restart(double *buf) +void AtomVecEDPD::create_atom_post(int ilocal) { - int nlocal = atom->nlocal; - if (nlocal == nmax) { - grow(0); - if (atom->nextra_store) - memory->grow(atom->extra,nmax,atom->nextra_store,"atom:extra"); - } - - int m = 1; - x[nlocal][0] = buf[m++]; - x[nlocal][1] = buf[m++]; - x[nlocal][2] = buf[m++]; - tag[nlocal] = (tagint) ubuf(buf[m++]).i; - type[nlocal] = (int) ubuf(buf[m++]).i; - mask[nlocal] = (int) ubuf(buf[m++]).i; - image[nlocal] = (imageint) ubuf(buf[m++]).i; - v[nlocal][0] = buf[m++]; - v[nlocal][1] = buf[m++]; - v[nlocal][2] = buf[m++]; - - edpd_temp[nlocal] = buf[m++]; - edpd_cv[nlocal]= buf[m++]; - vest[nlocal][0] = buf[m++]; - vest[nlocal][1] = buf[m++]; - vest[nlocal][2] = buf[m++]; - vest[nlocal][3] = buf[m++]; - - double **extra = atom->extra; - if (atom->nextra_store) { - int size = static_cast (buf[0]) - m; - for (int i = 0; i < size; i++) extra[nlocal][i] = buf[m++]; - } - - atom->nlocal++; - return m; -} - -/* ---------------------------------------------------------------------- - create one atom of itype at coord - set other values to defaults -------------------------------------------------------------------------- */ - -void AtomVecEDPD::create_atom(int itype, double *coord) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - tag[nlocal] = 0; - type[nlocal] = itype; - x[nlocal][0] = coord[0]; - x[nlocal][1] = coord[1]; - x[nlocal][2] = coord[2]; - mask[nlocal] = 1; - image[nlocal] = ((imageint) IMGMAX << IMG2BITS) | - ((imageint) IMGMAX << IMGBITS) | IMGMAX; - v[nlocal][0] = 0.0; - v[nlocal][1] = 0.0; - v[nlocal][2] = 0.0; - - edpd_temp[nlocal] = 1.0; - edpd_flux[nlocal] = 0.0; - edpd_cv[nlocal]= 1.0E5; - vest[nlocal][0] = 0.0; - vest[nlocal][1] = 0.0; - vest[nlocal][2] = 0.0; - vest[nlocal][3] = edpd_temp[nlocal]; - - atom->nlocal++; -} - -/* ---------------------------------------------------------------------- - unpack one line from Atoms section of data file - initialize other atom quantities -------------------------------------------------------------------------- */ - -void AtomVecEDPD::data_atom(double *coord, imageint imagetmp, char **values) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - tag[nlocal] = utils::tnumeric(FLERR,values[0],true,lmp); - type[nlocal] = utils::inumeric(FLERR,values[1],true,lmp); - if (type[nlocal] <= 0 || type[nlocal] > atom->ntypes) - error->one(FLERR,"Invalid atom type in Atoms section of data file"); - - edpd_temp[nlocal] = utils::numeric(FLERR,values[2],true,lmp); - edpd_cv[nlocal] = utils::numeric(FLERR,values[3],true,lmp); - - x[nlocal][0] = coord[0]; - x[nlocal][1] = coord[1]; - x[nlocal][2] = coord[2]; - - image[nlocal] = imagetmp; - - mask[nlocal] = 1; - v[nlocal][0] = 0.0; - v[nlocal][1] = 0.0; - v[nlocal][2] = 0.0; - - vest[nlocal][0] = 0.0; - vest[nlocal][1] = 0.0; - vest[nlocal][2] = 0.0; - vest[nlocal][3] = edpd_temp[nlocal]; - edpd_flux[nlocal] = 0.0; - - atom->nlocal++; -} - -/* ---------------------------------------------------------------------- - pack atom info for data file including 3 image flags -------------------------------------------------------------------------- */ - -void AtomVecEDPD::pack_data(double **buf) -{ - int nlocal = atom->nlocal; - for (int i = 0; i < nlocal; i++) { - buf[i][0] = ubuf(tag[i]).d; - buf[i][1] = ubuf(type[i]).d; - buf[i][2] = edpd_temp[i]; - buf[i][3] = edpd_cv[i]; - buf[i][4] = x[i][0]; - buf[i][5] = x[i][1]; - buf[i][6] = x[i][2]; - buf[i][7] = ubuf((image[i] & IMGMASK) - IMGMAX).d; - buf[i][8] = ubuf((image[i] >> IMGBITS & IMGMASK) - IMGMAX).d; - buf[i][9] = ubuf((image[i] >> IMG2BITS) - IMGMAX).d; - } -} - -/* ---------------------------------------------------------------------- - write atom info to data file including 3 image flags -------------------------------------------------------------------------- */ - -void AtomVecEDPD::write_data(FILE *fp, int n, double **buf) -{ - for (int i = 0; i < n; i++) - fprintf(fp,TAGINT_FORMAT " %d %-1.16e %-1.16e %-1.16e %-1.16e %-1.16e %d %d %d\n", - (tagint) ubuf(buf[i][0]).i,(int) ubuf(buf[i][1]).i, - buf[i][2],buf[i][3],buf[i][4],buf[i][5],buf[i][6], - (int) ubuf(buf[i][7]).i,(int) ubuf(buf[i][8]).i,(int) ubuf(buf[i][9]).i); + atom->edpd_temp[ilocal] = 1.0; + atom->edpd_cv[ilocal]= 1.0e5; + atom->vest[ilocal][3] = atom->edpd_temp[ilocal]; } /* ---------------------------------------------------------------------- - return # of bytes of allocated memory + modify what AtomVec::data_atom() just unpacked + or initialize other atom quantities ------------------------------------------------------------------------- */ -bigint AtomVecEDPD::memory_usage() +void AtomVecEDPD::data_atom_post(int ilocal) { - bigint bytes = 0; - - if (atom->memcheck("tag")) bytes += memory->usage(tag,nmax); - if (atom->memcheck("type")) bytes += memory->usage(type,nmax); - if (atom->memcheck("mask")) bytes += memory->usage(mask,nmax); - if (atom->memcheck("image")) bytes += memory->usage(image,nmax); - if (atom->memcheck("x")) bytes += memory->usage(x,nmax,3); - if (atom->memcheck("v")) bytes += memory->usage(v,nmax,3); - if (atom->memcheck("f")) bytes += memory->usage(f,nmax*comm->nthreads,3); - if (atom->memcheck("edpd_temp")) bytes += memory->usage(edpd_temp,nmax); - if (atom->memcheck("edpd_flux")) bytes += memory->usage(edpd_flux,nmax*comm->nthreads); - if (atom->memcheck("edpd_cv")) bytes += memory->usage(edpd_cv,nmax); - if (atom->memcheck("vest")) bytes += memory->usage(vest,nmax,4); - - return bytes; + atom->edpd_flux[ilocal] = 0.0; + atom->vest[ilocal][0] = 0.0; + atom->vest[ilocal][1] = 0.0; + atom->vest[ilocal][2] = 0.0; + atom->vest[ilocal][3] = atom->edpd_temp[ilocal]; } diff --git a/src/USER-MESO/atom_vec_edpd.h b/src/USER-MESO/atom_vec_edpd.h index 36a4cae97b..7d41b51665 100644 --- a/src/USER-MESO/atom_vec_edpd.h +++ b/src/USER-MESO/atom_vec_edpd.h @@ -27,39 +27,9 @@ namespace LAMMPS_NS { class AtomVecEDPD : public AtomVec { public: AtomVecEDPD(class LAMMPS *); - virtual ~AtomVecEDPD() {} - void grow(int); - void grow_reset(); - void copy(int, int, int); void force_clear(int, size_t); - virtual int pack_comm(int, int *, double *, int, int *); - virtual int pack_comm_vel(int, int *, double *, int, int *); - virtual void unpack_comm(int, int, double *); - virtual void unpack_comm_vel(int, int, double *); - int pack_reverse(int, int, double *); - void unpack_reverse(int, int *, double *); - virtual int pack_border(int, int *, double *, int, int *); - virtual int pack_border_vel(int, int *, double *, int, int *); - virtual void unpack_border(int, int, double *); - virtual void unpack_border_vel(int, int, double *); - virtual int pack_exchange(int, double *); - virtual int unpack_exchange(double *); - int size_restart(); - int pack_restart(int, double *); - int unpack_restart(double *); - void create_atom(int, double *); - void data_atom(double *, imageint, char **); - void pack_data(double **); - void write_data(FILE *, int, double **); - bigint memory_usage(); - - protected: - tagint *tag; - int *type,*mask; - imageint *image; - double **x,**v,**f; - double **vest; // store intermediate velocity for using mvv integrator - double *edpd_temp,*edpd_flux,*edpd_cv; // temperature, heat flux, and heat capacity + void create_atom_post(int); + void data_atom_post(int); }; } diff --git a/src/atom.cpp b/src/atom.cpp index e1736e321c..d238db5e65 100644 --- a/src/atom.cpp +++ b/src/atom.cpp @@ -459,8 +459,8 @@ void Atom::peratom_create() add_peratom("radius",&radius,DOUBLE,0); add_peratom("omega",&omega,DOUBLE,3); - add_peratom("amgmom",&angmom,DOUBLE,3); add_peratom("torque",&torque,DOUBLE,3,1); // set per-thread flag + add_peratom("angmom",&angmom,DOUBLE,3); add_peratom("ellipsoid",&ellipsoid,INT,0); add_peratom("line",&line,INT,0); @@ -524,6 +524,31 @@ void Atom::peratom_create() add_peratom("sp",&sp,DOUBLE,4); add_peratom("fm",&fm,DOUBLE,3,1); add_peratom("fm_long",&fm_long,DOUBLE,3,1); + + // USER-EFF package + + add_peratom("spin",&spin,INT,0); + add_peratom("eradius",&eradius,DOUBLE,0); + add_peratom("ervel",&ervel,DOUBLE,0); + add_peratom("erforce",&erforce,DOUBLE,0,1); // set per-thread flag + + // USER-DPD package + + add_peratom("rho",&eradius,DOUBLE,0); + add_peratom("dpdTheta",&dpdTheta,DOUBLE,0); + add_peratom("uCond",&uCond,DOUBLE,0); + add_peratom("uMech",&uMech,DOUBLE,0); + add_peratom("uChem",&uChem,DOUBLE,0); + add_peratom("uCG",&uCG,DOUBLE,0); + add_peratom("uCGnew",&uCGnew,DOUBLE,0); + add_peratom("duChem",&duChem,DOUBLE,0); + + // USER-MESO package + + add_peratom("edpd_cv",&edpd_cv,DOUBLE,0); + add_peratom("edpd_temp",&edpd_temp,DOUBLE,0); + add_peratom("edpd_flux",&edpd_flux,DOUBLE,0,1); // set per-thread flag + add_peratom("vest",&vest,DOUBLE,4); } /* ---------------------------------------------------------------------- @@ -1605,8 +1630,7 @@ void Atom::data_bonus(int n, char *buf, AtomVec *avec_bonus, tagint id_offset) call style-specific routine to parse line ------------------------------------------------------------------------- */ -void Atom::data_bodies(int n, char *buf, AtomVecBody *avec_body, - tagint id_offset) +void Atom::data_bodies(int n, char *buf, AtomVec *avec_body, tagint id_offset) { int j,m,nvalues,tagdata,ninteger,ndouble; diff --git a/src/atom.h b/src/atom.h index 6cc5dff72a..a105b3e5b1 100644 --- a/src/atom.h +++ b/src/atom.h @@ -121,7 +121,7 @@ class Atom : protected Pointers { // USER-MESO package - double **cc, **cc_flux; // cc = chemical concentration + double **cc,**cc_flux; // cc = chemical concentration double *edpd_temp,*edpd_flux; // temperature and heat flux double *edpd_cv; // heat capacity int cc_species; @@ -141,13 +141,12 @@ class Atom : protected Pointers { double **vest; // -------------------------------------------------------------------- - // 1st customization section: customize by adding new flag - // existence flags for per-atom vectors and arrays + // 1st customization section: customize by adding new flags + // most are existence flags for per-atom vectors and arrays // 1 if variable is used, 0 if not int sphere_flag,ellipsoid_flag,line_flag,tri_flag,body_flag; int peri_flag,electron_flag; - int ecp_flag; int wavepacket_flag,sph_flag; int molecule_flag,molindex_flag,molatom_flag; @@ -158,10 +157,14 @@ class Atom : protected Pointers { int rho_flag,e_flag,cv_flag,vest_flag; int dpd_flag,edpd_flag,tdpd_flag; - // USER-SPIN package + // SPIN package int sp_flag; + // USER-EFF package + + int ecp_flag; + // USER-SMD package int smd_flag; @@ -286,7 +289,7 @@ class Atom : protected Pointers { void data_dihedrals(int, char *, int *, tagint, int); void data_impropers(int, char *, int *, tagint, int); void data_bonus(int, char *, class AtomVec *, tagint); - void data_bodies(int, char *, class AtomVecBody *, tagint); + void data_bodies(int, char *, class AtomVec *, tagint); void data_fix_compute_variable(int, int); virtual void allocate_type_arrays(); diff --git a/src/atom_vec.cpp b/src/atom_vec.cpp index 776d7a4619..ed56151d33 100644 --- a/src/atom_vec.cpp +++ b/src/atom_vec.cpp @@ -38,11 +38,13 @@ enum{DOUBLE,INT,BIGINT}; AtomVec::AtomVec(LAMMPS *lmp) : Pointers(lmp) { nmax = 0; + + molecular = 0; bonds_allow = angles_allow = dihedrals_allow = impropers_allow = 0; mass_type = dipole_type = 0; forceclearflag = 0; - size_data_bonus = 0; maxexchange = 0; + bonus_flag = 0; kokkosable = 0; @@ -309,6 +311,8 @@ void AtomVec::copy(int i, int j, int delflag) } } + if (bonus_flag) copy_bonus(i,j,delflag); + if (atom->nextra_grow) for (int iextra = 0; iextra < atom->nextra_grow; iextra++) modify->fix[atom->extra_grow[iextra]]->copy_arrays(i,j,delflag); @@ -349,7 +353,7 @@ int AtomVec::pack_comm(int n, int *list, double *buf, } } - if (comm) { + if (ncomm) { for (nn = 0; nn < ncomm; nn++) { pdata = mcomm.pdata[nn]; datatype = mcomm.datatype[nn]; @@ -403,6 +407,8 @@ int AtomVec::pack_comm(int n, int *list, double *buf, } } + if (bonus_flag) m += pack_comm_bonus(n,list,&buf[m]); + return m; } @@ -522,6 +528,8 @@ int AtomVec::pack_comm_vel(int n, int *list, double *buf, } } + if (bonus_flag) m += pack_comm_bonus(n,list,&buf[m]); + return m; } @@ -581,6 +589,8 @@ void AtomVec::unpack_comm(int n, int first, double *buf) } } } + + if (bonus_flag) unpack_comm_bonus(n,first,&buf[m]); } /* ---------------------------------------------------------------------- */ @@ -642,6 +652,8 @@ void AtomVec::unpack_comm_vel(int n, int first, double *buf) } } } + + if (bonus_flag) unpack_comm_bonus(n,first,&buf[m]); } /* ---------------------------------------------------------------------- */ @@ -874,6 +886,8 @@ int AtomVec::pack_border(int n, int *list, double *buf, int pbc_flag, int *pbc) } } + if (bonus_flag) m += pack_border_bonus(n,list,&buf[m]); + if (atom->nextra_border) for (int iextra = 0; iextra < atom->nextra_border; iextra++) m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); @@ -1006,6 +1020,8 @@ int AtomVec::pack_border_vel(int n, int *list, double *buf, } } + if (bonus_flag) m += pack_border_bonus(n,list,&buf[m]); + if (atom->nextra_border) for (int iextra = 0; iextra < atom->nextra_border; iextra++) m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); @@ -1074,6 +1090,8 @@ void AtomVec::unpack_border(int n, int first, double *buf) } } + if (bonus_flag) m += unpack_border_bonus(n,first,&buf[m]); + if (atom->nextra_border) for (int iextra = 0; iextra < atom->nextra_border; iextra++) m += modify->fix[atom->extra_border[iextra]]-> @@ -1144,6 +1162,8 @@ void AtomVec::unpack_border_vel(int n, int first, double *buf) } } + if (bonus_flag) m += unpack_border_bonus(n,first,&buf[m]); + if (atom->nextra_border) for (int iextra = 0; iextra < atom->nextra_border; iextra++) m += modify->fix[atom->extra_border[iextra]]-> @@ -1232,6 +1252,8 @@ int AtomVec::pack_exchange(int i, double *buf) } } + if (bonus_flag) m += pack_exchange_bonus(i,&buf[m]); + if (atom->nextra_grow) for (int iextra = 0; iextra < atom->nextra_grow; iextra++) m += modify->fix[atom->extra_grow[iextra]]->pack_exchange(i,&buf[m]); @@ -1322,6 +1344,8 @@ int AtomVec::unpack_exchange(double *buf) } } + if (bonus_flag) m += unpack_exchange_bonus(nlocal,&buf[m]); + if (atom->nextra_grow) for (int iextra = 0; iextra < atom->nextra_grow; iextra++) m += modify->fix[atom->extra_grow[iextra]]-> @@ -1366,6 +1390,8 @@ int AtomVec::size_restart() } } + if (bonus_flag) n += size_restart_bonus(); + if (atom->nextra_restart) for (int iextra = 0; iextra < atom->nextra_restart; iextra++) for (i = 0; i < nlocal; i++) @@ -1459,6 +1485,8 @@ int AtomVec::pack_restart(int i, double *buf) } } + if (bonus_flag) m += pack_restart_bonus(i,&buf[m]); + // if needed, restore values after packing pack_restart_post(i); @@ -1558,6 +1586,8 @@ int AtomVec::unpack_restart(double *buf) } } + if (bonus_flag) m += unpack_restart_bonus(nlocal,&buf[m]); + // if needed, initialize other peratom values unpack_restart_init(nlocal); @@ -1635,7 +1665,7 @@ void AtomVec::create_atom(int itype, double *coord) } } - // if needed, initialize other peratom values + // if needed, initialize non-zero peratom values create_atom_post(nlocal); @@ -2295,6 +2325,8 @@ bigint AtomVec::memory_usage() } } + if (bonus_flag) bytes += memory_usage_bonus(); + return bytes; } @@ -2359,8 +2391,9 @@ void AtomVec::setup_fields() // NOTE: check for others vars in atom_vec.cpp/h ?? // NOTE: need to set maxexchange, e.g for style hybrid? - if (ncomm == 0) comm_x_only = 1; - else comm_x_only = 0; + comm_x_only = 1; + if (ncomm) comm_x_only = 0; + if (bonus_flag && size_forward_bonus) comm_x_only = 0; if (nreverse == 0) comm_f_only = 1; else comm_f_only = 0; @@ -2371,6 +2404,7 @@ void AtomVec::setup_fields() if (cols == 0) size_forward++; else size_forward += cols; } + if (bonus_flag) size_forward += size_forward_bonus; size_reverse = 3; for (n = 0; n < nreverse; n++) { @@ -2385,6 +2419,7 @@ void AtomVec::setup_fields() if (cols == 0) size_border++; else size_border += cols; } + if (bonus_flag) size_border += size_border_bonus; size_velocity = 3; for (n = 0; n < ncomm_vel; n++) { @@ -2444,7 +2479,10 @@ int AtomVec::process_fields(char *list, const char *default_list, Method *method for (i = 0; i < nperatom; i++) if (strcmp(field,peratom[i].name) == 0) break; - if (i == nperatom) error->all(FLERR,"Atom_style unrecognized peratom field"); + if (i == nperatom) { + printf("FIELD %s\n",field); + error->all(FLERR,"Atom_style unrecognized peratom field"); + } index[nfield++] = i; // error if field is in default list or appears multiple times diff --git a/src/atom_vec.h b/src/atom_vec.h index 8ed6fff35f..33bf4a3ccd 100644 --- a/src/atom_vec.h +++ b/src/atom_vec.h @@ -36,11 +36,16 @@ class AtomVec : protected Pointers { int size_velocity; // # of velocity based quantities int size_data_atom; // number of values in Atom line int size_data_vel; // number of values in Velocity line - int size_data_bonus; // number of values in Bonus line int xcol_data; // column (1-N) where x is in Atom line int maxexchange; // max size of exchanged atom // only needs to be set if size > BUFEXTRA + int bonus_flag; // 1 if stores bonus data + int size_forward_bonus; // # in forward bonus comm + int size_border_bonus; // # in border bonus comm + int size_restart_bonus_one; // # in restart bonus comm + int size_data_bonus; // number of values in Bonus line + class Molecule **onemols; // list of molecules for style template int nset; // # of molecules in list @@ -62,6 +67,7 @@ class AtomVec : protected Pointers { AtomVec(class LAMMPS *); virtual ~AtomVec(); + void store_args(int, char **); virtual void process_args(int, char **); virtual void init(); @@ -70,13 +76,18 @@ class AtomVec : protected Pointers { void grow(int); void copy(int, int, int); - void clear_bonus() {} + + virtual void copy_bonus(int, int, int) {} + virtual void clear_bonus() {} int pack_comm(int, int *, double *, int, int *); int pack_comm_vel(int, int *, double *, int, int *); void unpack_comm(int, int, double *); void unpack_comm_vel(int, int, double *); + virtual int pack_comm_bonus(int, int *, double *) {} + virtual void unpack_comm_bonus(int, int, double *) {} + int pack_reverse(int, int, double *); void unpack_reverse(int, int *, double *); @@ -85,16 +96,27 @@ class AtomVec : protected Pointers { void unpack_border(int, int, double *); void unpack_border_vel(int, int, double *); + virtual int pack_border_bonus(int, int *, double *) {} + virtual int unpack_border_bonus(int, int, double *) {} + int pack_exchange(int, double *); int unpack_exchange(double *); + virtual int pack_exchange_bonus(int, double *) {} + virtual int unpack_exchange_bonus(int, double *) {} + int size_restart(); - virtual void pack_restart_pre(int) {} int pack_restart(int, double *); - virtual void pack_restart_post(int) {} int unpack_restart(double *); + + virtual void pack_restart_pre(int) {} + virtual void pack_restart_post(int) {} virtual void unpack_restart_init(int) {} + virtual int size_restart_bonus() {} + virtual int pack_restart_bonus(int, double *) {} + virtual int unpack_restart_bonus(int, double *) {} + void create_atom(int, double *); virtual void create_atom_post(int) {} @@ -102,13 +124,15 @@ class AtomVec : protected Pointers { virtual void data_atom_post(int) {} void data_atom_bonus(int, char **) {} - void data_vel(int, char **); + void data_body(int, int, int, int *, double *) {} - virtual void pack_data_pre(int) {} void pack_data(double **); - virtual void pack_data_post(int) {} - int pack_data_hybrid(int, double *) {return 0;} void write_data(FILE *, int, double **); + + virtual void pack_data_pre(int) {} + virtual void pack_data_post(int) {} + + void data_vel(int, char **); void pack_vel(double **); void write_vel(FILE *, int, double **); @@ -125,6 +149,7 @@ class AtomVec : protected Pointers { void pack_property_atom(int, double *, int, int) {} bigint memory_usage(); + virtual bigint memory_usage_bonus() {} protected: int nmax; // local copy of atom->nmax diff --git a/src/atom_vec_body.cpp b/src/atom_vec_body.cpp index 5e83946078..1a8c2defd9 100644 --- a/src/atom_vec_body.cpp +++ b/src/atom_vec_body.cpp @@ -18,7 +18,6 @@ #include "style_body.h" #include "body.h" #include "atom.h" -#include "comm.h" #include "domain.h" #include "modify.h" #include "fix.h" @@ -33,17 +32,17 @@ using namespace LAMMPS_NS; AtomVecBody::AtomVecBody(LAMMPS *lmp) : AtomVec(lmp) { molecular = 0; + bonus_flag = 1; - // size_forward and size_border set in settings(), via Body class + // first 3 sizes do not include values from body itself + // 1st,2nd body counts are added in process_args() via body style + // 3rd body count is added in size_restart_bonus() + // size_data_bonus is not used by Atom class for body style - comm_x_only = comm_f_only = 0; - size_forward = 0; - size_reverse = 6; - size_border = 0; - size_velocity = 6; - size_data_atom = 7; - size_data_vel = 7; - xcol_data = 5; + size_forward_bonus = 4; + size_border_bonus = 9; + size_restart_bonus_one = 9; + size_data_bonus = 0; atom->body_flag = 1; atom->rmass_flag = 1; @@ -58,6 +57,26 @@ AtomVecBody::AtomVecBody(LAMMPS *lmp) : AtomVec(lmp) if (sizeof(double) == sizeof(int)) intdoubleratio = 1; else if (sizeof(double) == 2*sizeof(int)) intdoubleratio = 2; else error->all(FLERR,"Internal error in atom_style body"); + + // strings with peratom variables to include in each AtomVec method + // strings cannot contain fields in corresponding AtomVec default strings + // order of fields in the string does not matter + // except fields_data_atom and fields_data_vel which must match data file + + fields_grow = (char *) "radius rmass angmom torque body"; + fields_copy = (char *) "radius rmass angmom"; + fields_comm = NULL; + fields_comm_vel = (char *) "angmom"; + fields_reverse = (char *) "torque"; + fields_border = (char *) "radius rmass"; + fields_border_vel = (char *) "radius rmass angmom"; + fields_exchange = (char *) "radius rmass angmom"; + fields_restart = (char *) "radius rmass angmom"; + fields_create = (char *) "radius rmass angmom tri"; + fields_data_atom = (char *) "id type body rmass x"; + fields_data_vel = (char *) "angmom"; + + setup_fields(); } /* ---------------------------------------------------------------------- */ @@ -96,65 +115,18 @@ void AtomVecBody::process_args(int narg, char **arg) #undef BodyStyle #undef BODY_CLASS - else error->all(FLERR,utils::check_packages_for_style("body",arg[0],lmp).c_str()); + else error->all(FLERR,utils:: + check_packages_for_style("body",arg[0],lmp).c_str()); bptr->avec = this; icp = bptr->icp; dcp = bptr->dcp; // max size of forward/border comm - // 7,16 are packed in pack_comm/pack_border // bptr values = max number of additional ivalues/dvalues from Body class - size_forward = 7 + bptr->size_forward; - size_border = 18 + bptr->size_border; -} - -/* ---------------------------------------------------------------------- - grow atom arrays - n = 0 grows arrays by a chunk - n > 0 allocates arrays to size n -------------------------------------------------------------------------- */ - -void AtomVecBody::grow(int n) -{ - if (n == 0) grow_nmax(); - else nmax = n; - atom->nmax = nmax; - if (nmax < 0 || nmax > MAXSMALLINT) - error->one(FLERR,"Per-processor system is too big"); - - tag = memory->grow(atom->tag,nmax,"atom:tag"); - type = memory->grow(atom->type,nmax,"atom:type"); - mask = memory->grow(atom->mask,nmax,"atom:mask"); - image = memory->grow(atom->image,nmax,"atom:image"); - x = memory->grow(atom->x,nmax,3,"atom:x"); - v = memory->grow(atom->v,nmax,3,"atom:v"); - f = memory->grow(atom->f,nmax*comm->nthreads,3,"atom:f"); - - radius = memory->grow(atom->radius,nmax,"atom:radius"); - rmass = memory->grow(atom->rmass,nmax,"atom:rmass"); - angmom = memory->grow(atom->angmom,nmax,3,"atom:angmom"); - torque = memory->grow(atom->torque,nmax*comm->nthreads,3,"atom:torque"); - body = memory->grow(atom->body,nmax,"atom:body"); - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - modify->fix[atom->extra_grow[iextra]]->grow_arrays(nmax); -} - -/* ---------------------------------------------------------------------- - reset local array ptrs -------------------------------------------------------------------------- */ - -void AtomVecBody::grow_reset() -{ - tag = atom->tag; type = atom->type; - mask = atom->mask; image = atom->image; - x = atom->x; v = atom->v; f = atom->f; - radius = atom->radius; rmass = atom->rmass; - angmom = atom->angmom; torque = atom->torque; - body = atom->body; + size_forward_bonus += bptr->size_forward; + size_border_bonus += bptr->size_border; } /* ---------------------------------------------------------------------- @@ -176,24 +148,9 @@ void AtomVecBody::grow_bonus() if delflag and atom J has bonus data, then delete it ------------------------------------------------------------------------- */ -void AtomVecBody::copy(int i, int j, int delflag) +void AtomVecBody::copy_bonus(int i, int j, int delflag) { - tag[j] = tag[i]; - type[j] = type[i]; - mask[j] = mask[i]; - image[j] = image[i]; - x[j][0] = x[i][0]; - x[j][1] = x[i][1]; - x[j][2] = x[i][2]; - v[j][0] = v[i][0]; - v[j][1] = v[i][1]; - v[j][2] = v[i][2]; - - radius[j] = radius[i]; - rmass[j] = rmass[i]; - angmom[j][0] = angmom[i][0]; - angmom[j][1] = angmom[i][1]; - angmom[j][2] = angmom[i][2]; + int *body = atom->body; // if deleting atom J via delflag and J has bonus data, then delete it @@ -201,7 +158,7 @@ void AtomVecBody::copy(int i, int j, int delflag) int k = body[j]; icp->put(bonus[k].iindex); dcp->put(bonus[k].dindex); - copy_bonus(nlocal_bonus-1,k); + copy_bonus_all(nlocal_bonus-1,k); nlocal_bonus--; } @@ -210,10 +167,6 @@ void AtomVecBody::copy(int i, int j, int delflag) if (body[i] >= 0 && i != j) bonus[body[i]].ilocal = j; body[j] = body[i]; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - modify->fix[atom->extra_grow[iextra]]->copy_arrays(i,j,delflag); } /* ---------------------------------------------------------------------- @@ -221,9 +174,9 @@ void AtomVecBody::copy(int i, int j, int delflag) also reset body that points to I to now point to J ------------------------------------------------------------------------- */ -void AtomVecBody::copy_bonus(int i, int j) +void AtomVecBody::copy_bonus_all(int i, int j) { - body[bonus[i].ilocal] = j; + atom->body[bonus[i].ilocal] = j; memcpy(&bonus[j],&bonus[i],sizeof(Bonus)); } @@ -240,166 +193,20 @@ void AtomVecBody::clear_bonus() dcp->put(bonus[i].dindex); } nghost_bonus = 0; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecBody::pack_comm(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz; - double *quat; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - if (body[j] >= 0) { - quat = bonus[body[j]].quat; - buf[m++] = quat[0]; - buf[m++] = quat[1]; - buf[m++] = quat[2]; - buf[m++] = quat[3]; - m += bptr->pack_comm_body(&bonus[body[j]],&buf[m]); - } - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]*domain->xprd + pbc[5]*domain->xy + pbc[4]*domain->xz; - dy = pbc[1]*domain->yprd + pbc[3]*domain->yz; - dz = pbc[2]*domain->zprd; - } - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - if (body[j] >= 0) { - quat = bonus[body[j]].quat; - buf[m++] = quat[0]; - buf[m++] = quat[1]; - buf[m++] = quat[2]; - buf[m++] = quat[3]; - m += bptr->pack_comm_body(&bonus[body[j]],&buf[m]); - } - } - } - return m; + if (atom->nextra_grow) + for (int iextra = 0; iextra < atom->nextra_grow; iextra++) + modify->fix[atom->extra_grow[iextra]]->clear_bonus(); } /* ---------------------------------------------------------------------- */ -int AtomVecBody::pack_comm_vel(int n, int *list, double *buf, - int pbc_flag, int *pbc) +int AtomVecBody::pack_comm_bonus(int n, int *list, double *buf) { int i,j,m; - double dx,dy,dz,dvx,dvy,dvz; double *quat; - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - if (body[j] >= 0) { - quat = bonus[body[j]].quat; - buf[m++] = quat[0]; - buf[m++] = quat[1]; - buf[m++] = quat[2]; - buf[m++] = quat[3]; - m += bptr->pack_comm_body(&bonus[body[j]],&buf[m]); - } - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - buf[m++] = angmom[j][0]; - buf[m++] = angmom[j][1]; - buf[m++] = angmom[j][2]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]*domain->xprd + pbc[5]*domain->xy + pbc[4]*domain->xz; - dy = pbc[1]*domain->yprd + pbc[3]*domain->yz; - dz = pbc[2]*domain->zprd; - } - if (!deform_vremap) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - if (body[j] >= 0) { - quat = bonus[body[j]].quat; - buf[m++] = quat[0]; - buf[m++] = quat[1]; - buf[m++] = quat[2]; - buf[m++] = quat[3]; - m += bptr->pack_comm_body(&bonus[body[j]],&buf[m]); - } - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - buf[m++] = angmom[j][0]; - buf[m++] = angmom[j][1]; - buf[m++] = angmom[j][2]; - } - } else { - dvx = pbc[0]*h_rate[0] + pbc[5]*h_rate[5] + pbc[4]*h_rate[4]; - dvy = pbc[1]*h_rate[1] + pbc[3]*h_rate[3]; - dvz = pbc[2]*h_rate[2]; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - if (body[j] >= 0) { - quat = bonus[body[j]].quat; - buf[m++] = quat[0]; - buf[m++] = quat[1]; - buf[m++] = quat[2]; - buf[m++] = quat[3]; - m += bptr->pack_comm_body(&bonus[body[j]],&buf[m]); - } - if (mask[i] & deform_groupbit) { - buf[m++] = v[j][0] + dvx; - buf[m++] = v[j][1] + dvy; - buf[m++] = v[j][2] + dvz; - } else { - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - buf[m++] = angmom[j][0]; - buf[m++] = angmom[j][1]; - buf[m++] = angmom[j][2]; - } - } - } - - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecBody::pack_comm_hybrid(int n, int *list, double *buf) -{ - int i,j,m; - double *quat; + int *body = atom->body; m = 0; for (i = 0; i < n; i++) { @@ -413,73 +220,22 @@ int AtomVecBody::pack_comm_hybrid(int n, int *list, double *buf) m += bptr->pack_comm_body(&bonus[body[j]],&buf[m]); } } + return m; } /* ---------------------------------------------------------------------- */ -void AtomVecBody::unpack_comm(int n, int first, double *buf) +void AtomVecBody::unpack_comm_bonus(int n, int first, double *buf) { int i,m,last; double *quat; - m = 0; - last = first + n; - for (i = first; i < last; i++) { - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - if (body[i] >= 0) { - quat = bonus[body[i]].quat; - quat[0] = buf[m++]; - quat[1] = buf[m++]; - quat[2] = buf[m++]; - quat[3] = buf[m++]; - m += bptr->unpack_comm_body(&bonus[body[i]],&buf[m]); - } - } -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecBody::unpack_comm_vel(int n, int first, double *buf) -{ - int i,m,last; - double *quat; + int *body = atom->body; m = 0; last = first + n; for (i = first; i < last; i++) { - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - if (body[i] >= 0) { - quat = bonus[body[i]].quat; - quat[0] = buf[m++]; - quat[1] = buf[m++]; - quat[2] = buf[m++]; - quat[3] = buf[m++]; - m += bptr->unpack_comm_body(&bonus[body[i]],&buf[m]); - } - v[i][0] = buf[m++]; - v[i][1] = buf[m++]; - v[i][2] = buf[m++]; - angmom[i][0] = buf[m++]; - angmom[i][1] = buf[m++]; - angmom[i][2] = buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecBody::unpack_comm_hybrid(int n, int first, double *buf) -{ - int i,m,last; - double *quat; - - m = 0; - last = first + n; - for (i = first; i < last; i++) if (body[i] >= 0) { quat = bonus[body[i]].quat; quat[0] = buf[m++]; @@ -488,313 +244,21 @@ int AtomVecBody::unpack_comm_hybrid(int n, int first, double *buf) quat[3] = buf[m++]; m += bptr->unpack_comm_body(&bonus[body[i]],&buf[m]); } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecBody::pack_reverse(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - buf[m++] = f[i][0]; - buf[m++] = f[i][1]; - buf[m++] = f[i][2]; - buf[m++] = torque[i][0]; - buf[m++] = torque[i][1]; - buf[m++] = torque[i][2]; } - return m; } /* ---------------------------------------------------------------------- */ -int AtomVecBody::pack_reverse_hybrid(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - buf[m++] = torque[i][0]; - buf[m++] = torque[i][1]; - buf[m++] = torque[i][2]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecBody::unpack_reverse(int n, int *list, double *buf) -{ - int i,j,m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - f[j][0] += buf[m++]; - f[j][1] += buf[m++]; - f[j][2] += buf[m++]; - torque[j][0] += buf[m++]; - torque[j][1] += buf[m++]; - torque[j][2] += buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecBody::unpack_reverse_hybrid(int n, int *list, double *buf) +int AtomVecBody::pack_border_bonus(int n, int *list, double *buf) { int i,j,m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - torque[j][0] += buf[m++]; - torque[j][1] += buf[m++]; - torque[j][2] += buf[m++]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecBody::pack_border(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz; - double *quat,*inertia; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = radius[j]; - buf[m++] = rmass[j]; - if (body[j] < 0) buf[m++] = ubuf(0).d; - else { - buf[m++] = ubuf(1).d; - quat = bonus[body[j]].quat; - inertia = bonus[body[j]].inertia; - buf[m++] = quat[0]; - buf[m++] = quat[1]; - buf[m++] = quat[2]; - buf[m++] = quat[3]; - buf[m++] = inertia[0]; - buf[m++] = inertia[1]; - buf[m++] = inertia[2]; - buf[m++] = ubuf(bonus[body[j]].ninteger).d; - buf[m++] = ubuf(bonus[body[j]].ndouble).d; - m += bptr->pack_border_body(&bonus[body[j]],&buf[m]); - } - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]; - dy = pbc[1]; - dz = pbc[2]; - } - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = radius[j]; - buf[m++] = rmass[j]; - if (body[j] < 0) buf[m++] = ubuf(0).d; - else { - buf[m++] = ubuf(1).d; - quat = bonus[body[j]].quat; - inertia = bonus[body[j]].inertia; - buf[m++] = quat[0]; - buf[m++] = quat[1]; - buf[m++] = quat[2]; - buf[m++] = quat[3]; - buf[m++] = inertia[0]; - buf[m++] = inertia[1]; - buf[m++] = inertia[2]; - buf[m++] = ubuf(bonus[body[j]].ninteger).d; - buf[m++] = ubuf(bonus[body[j]].ndouble).d; - m += bptr->pack_border_body(&bonus[body[j]],&buf[m]); - } - } - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); - - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecBody::pack_border_vel(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz,dvx,dvy,dvz; double *quat,*inertia; - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = radius[j]; - buf[m++] = rmass[j]; - if (body[j] < 0) buf[m++] = ubuf(0).d; - else { - buf[m++] = ubuf(1).d; - quat = bonus[body[j]].quat; - inertia = bonus[body[j]].inertia; - buf[m++] = quat[0]; - buf[m++] = quat[1]; - buf[m++] = quat[2]; - buf[m++] = quat[3]; - buf[m++] = inertia[0]; - buf[m++] = inertia[1]; - buf[m++] = inertia[2]; - buf[m++] = ubuf(bonus[body[j]].ninteger).d; - buf[m++] = ubuf(bonus[body[j]].ndouble).d; - m += bptr->pack_border_body(&bonus[body[j]],&buf[m]); - } - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - buf[m++] = angmom[j][0]; - buf[m++] = angmom[j][1]; - buf[m++] = angmom[j][2]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]; - dy = pbc[1]; - dz = pbc[2]; - } - if (!deform_vremap) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = radius[j]; - buf[m++] = rmass[j]; - if (body[j] < 0) buf[m++] = ubuf(0).d; - else { - buf[m++] = ubuf(1).d; - quat = bonus[body[j]].quat; - inertia = bonus[body[j]].inertia; - buf[m++] = quat[0]; - buf[m++] = quat[1]; - buf[m++] = quat[2]; - buf[m++] = quat[3]; - buf[m++] = inertia[0]; - buf[m++] = inertia[1]; - buf[m++] = inertia[2]; - buf[m++] = ubuf(bonus[body[j]].ninteger).d; - buf[m++] = ubuf(bonus[body[j]].ndouble).d; - m += bptr->pack_border_body(&bonus[body[j]],&buf[m]); - } - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - buf[m++] = angmom[j][0]; - buf[m++] = angmom[j][1]; - buf[m++] = angmom[j][2]; - } - } else { - dvx = pbc[0]*h_rate[0] + pbc[5]*h_rate[5] + pbc[4]*h_rate[4]; - dvy = pbc[1]*h_rate[1] + pbc[3]*h_rate[3]; - dvz = pbc[2]*h_rate[2]; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - if (body[j] < 0) buf[m++] = ubuf(0).d; - else { - buf[m++] = ubuf(1).d; - quat = bonus[body[j]].quat; - inertia = bonus[body[j]].inertia; - buf[m++] = quat[0]; - buf[m++] = quat[1]; - buf[m++] = quat[2]; - buf[m++] = quat[3]; - buf[m++] = inertia[0]; - buf[m++] = inertia[1]; - buf[m++] = inertia[2]; - buf[m++] = ubuf(bonus[body[j]].ninteger).d; - buf[m++] = ubuf(bonus[body[j]].ndouble).d; - m += bptr->pack_border_body(&bonus[body[j]],&buf[m]); - } - if (mask[i] & deform_groupbit) { - buf[m++] = v[j][0] + dvx; - buf[m++] = v[j][1] + dvy; - buf[m++] = v[j][2] + dvz; - } else { - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - buf[m++] = angmom[j][0]; - buf[m++] = angmom[j][1]; - buf[m++] = angmom[j][2]; - } - } - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); - - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecBody::pack_border_hybrid(int n, int *list, double *buf) -{ - int i,j,m; - double *quat,*inertia; + int *body = atom->body; m = 0; for (i = 0; i < n; i++) { j = list[i]; - buf[m++] = radius[j]; - buf[m++] = rmass[j]; if (body[j] < 0) buf[m++] = ubuf(0).d; else { buf[m++] = ubuf(1).d; @@ -811,80 +275,23 @@ int AtomVecBody::pack_border_hybrid(int n, int *list, double *buf) buf[m++] = ubuf(bonus[body[j]].ndouble).d; m += bptr->pack_border_body(&bonus[body[j]],&buf[m]); } - } + } + return m; } /* ---------------------------------------------------------------------- */ -void AtomVecBody::unpack_border(int n, int first, double *buf) +int AtomVecBody::unpack_border_bonus(int n, int first, double *buf) { int i,j,m,last; double *quat,*inertia; - m = 0; - last = first + n; - for (i = first; i < last; i++) { - if (i == nmax) grow(0); - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - tag[i] = (tagint) ubuf(buf[m++]).i; - type[i] = (int) ubuf(buf[m++]).i; - mask[i] = (int) ubuf(buf[m++]).i; - radius[i] = buf[m++]; - rmass[i] = buf[m++]; - body[i] = (int) ubuf(buf[m++]).i; - if (body[i] == 0) body[i] = -1; - else { - j = nlocal_bonus + nghost_bonus; - if (j == nmax_bonus) grow_bonus(); - quat = bonus[j].quat; - inertia = bonus[j].inertia; - quat[0] = buf[m++]; - quat[1] = buf[m++]; - quat[2] = buf[m++]; - quat[3] = buf[m++]; - inertia[0] = buf[m++]; - inertia[1] = buf[m++]; - inertia[2] = buf[m++]; - bonus[j].ninteger = (int) ubuf(buf[m++]).i; - bonus[j].ndouble = (int) ubuf(buf[m++]).i; - // corresponding put() calls are in clear_bonus() - bonus[j].ivalue = icp->get(bonus[j].ninteger,bonus[j].iindex); - bonus[j].dvalue = dcp->get(bonus[j].ndouble,bonus[j].dindex); - m += bptr->unpack_border_body(&bonus[j],&buf[m]); - bonus[j].ilocal = i; - body[i] = j; - nghost_bonus++; - } - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]-> - unpack_border(n,first,&buf[m]); -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecBody::unpack_border_vel(int n, int first, double *buf) -{ - int i,j,m,last; - double *quat,*inertia; + int *body = atom->body; m = 0; last = first + n; for (i = first; i < last; i++) { - if (i == nmax) grow(0); - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - tag[i] = (tagint) ubuf(buf[m++]).i; - type[i] = (int) ubuf(buf[m++]).i; - mask[i] = (int) ubuf(buf[m++]).i; - radius[i] = buf[m++]; - rmass[i] = buf[m++]; body[i] = (int) ubuf(buf[m++]).i; if (body[i] == 0) body[i] = -1; else { @@ -909,57 +316,8 @@ void AtomVecBody::unpack_border_vel(int n, int first, double *buf) body[i] = j; nghost_bonus++; } - v[i][0] = buf[m++]; - v[i][1] = buf[m++]; - v[i][2] = buf[m++]; - angmom[i][0] = buf[m++]; - angmom[i][1] = buf[m++]; - angmom[i][2] = buf[m++]; } - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]-> - unpack_border(n,first,&buf[m]); -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecBody::unpack_border_hybrid(int n, int first, double *buf) -{ - int i,j,m,last; - double *quat,*inertia; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - radius[i] = buf[m++]; - rmass[i] = buf[m++]; - body[i] = (int) ubuf(buf[m++]).i; - if (body[i] == 0) body[i] = -1; - else { - j = nlocal_bonus + nghost_bonus; - if (j == nmax_bonus) grow_bonus(); - quat = bonus[j].quat; - inertia = bonus[j].inertia; - quat[0] = buf[m++]; - quat[1] = buf[m++]; - quat[2] = buf[m++]; - quat[3] = buf[m++]; - inertia[0] = buf[m++]; - inertia[1] = buf[m++]; - inertia[2] = buf[m++]; - bonus[j].ninteger = (int) ubuf(buf[m++]).i; - bonus[j].ndouble = (int) ubuf(buf[m++]).i; - // corresponding put() calls are in clear_bonus() - bonus[j].ivalue = icp->get(bonus[j].ninteger,bonus[j].iindex); - bonus[j].dvalue = dcp->get(bonus[j].ndouble,bonus[j].dindex); - m += bptr->unpack_border_body(&bonus[j],&buf[m]); - bonus[j].ilocal = i; - body[i] = j; - nghost_bonus++; - } - } return m; } @@ -968,24 +326,11 @@ int AtomVecBody::unpack_border_hybrid(int n, int first, double *buf) xyz must be 1st 3 values, so comm::exchange() can test on them ------------------------------------------------------------------------- */ -int AtomVecBody::pack_exchange(int i, double *buf) +int AtomVecBody::pack_exchange_bonus(int i, double *buf) { - int m = 1; - buf[m++] = x[i][0]; - buf[m++] = x[i][1]; - buf[m++] = x[i][2]; - buf[m++] = v[i][0]; - buf[m++] = v[i][1]; - buf[m++] = v[i][2]; - buf[m++] = ubuf(tag[i]).d; - buf[m++] = ubuf(type[i]).d; - buf[m++] = ubuf(mask[i]).d; - buf[m++] = ubuf(image[i]).d; - buf[m++] = radius[i]; - buf[m++] = rmass[i]; - buf[m++] = angmom[i][0]; - buf[m++] = angmom[i][1]; - buf[m++] = angmom[i][2]; + int m = 0; + + int *body = atom->body; if (body[i] < 0) buf[m++] = ubuf(0).d; else { @@ -1009,40 +354,19 @@ int AtomVecBody::pack_exchange(int i, double *buf) m += bonus[j].ndouble; } - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - m += modify->fix[atom->extra_grow[iextra]]->pack_exchange(i,&buf[m]); - - buf[0] = m; return m; } /* ---------------------------------------------------------------------- */ -int AtomVecBody::unpack_exchange(double *buf) +int AtomVecBody::unpack_exchange_bonus(int ilocal, double *buf) { - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - int m = 1; - x[nlocal][0] = buf[m++]; - x[nlocal][1] = buf[m++]; - x[nlocal][2] = buf[m++]; - v[nlocal][0] = buf[m++]; - v[nlocal][1] = buf[m++]; - v[nlocal][2] = buf[m++]; - tag[nlocal] = (tagint) ubuf(buf[m++]).i; - type[nlocal] = (int) ubuf(buf[m++]).i; - mask[nlocal] = (int) ubuf(buf[m++]).i; - image[nlocal] = (imageint) ubuf(buf[m++]).i; - radius[nlocal] = buf[m++]; - rmass[nlocal] = buf[m++]; - angmom[nlocal][0] = buf[m++]; - angmom[nlocal][1] = buf[m++]; - angmom[nlocal][2] = buf[m++]; - - body[nlocal] = (int) ubuf(buf[m++]).i; - if (body[nlocal] == 0) body[nlocal] = -1; + int m = 0; + + int *body = atom->body; + + body[ilocal] = (int) ubuf(buf[m++]).i; + if (body[ilocal] == 0) body[ilocal] = -1; else { if (nlocal_bonus == nmax_bonus) grow_bonus(); double *quat = bonus[nlocal_bonus].quat; @@ -1069,42 +393,34 @@ int AtomVecBody::unpack_exchange(double *buf) bonus[nlocal_bonus].ndouble*sizeof(double)); m += bonus[nlocal_bonus].ndouble; - bonus[nlocal_bonus].ilocal = nlocal; - body[nlocal] = nlocal_bonus++; + bonus[nlocal_bonus].ilocal = ilocal; + body[ilocal] = nlocal_bonus++; } - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - m += modify->fix[atom->extra_grow[iextra]]-> - unpack_exchange(nlocal,&buf[m]); - - atom->nlocal++; return m; } /* ---------------------------------------------------------------------- - size of restart data for all atoms owned by this proc - include extra data stored by fixes + unpack data for one atom from restart file including bonus data ------------------------------------------------------------------------- */ -int AtomVecBody::size_restart() +int AtomVecBody::size_restart_bonus() { int i; + int *body = atom->body; + int n = 0; int nlocal = atom->nlocal; - for (i = 0; i < nlocal; i++) + for (i = 0; i < nlocal; i++) { if (body[i] >= 0) { - n += 26; + n += size_restart_bonus_one; if (intdoubleratio == 1) n += bonus[body[i]].ninteger; else n += (bonus[body[i]].ninteger+1)/2; n += bonus[body[i]].ndouble; - } else n += 17; - - if (atom->nextra_restart) - for (int iextra = 0; iextra < atom->nextra_restart; iextra++) - for (i = 0; i < nlocal; i++) - n += modify->fix[atom->extra_restart[iextra]]->size_restart(i); + } + n++; + } return n; } @@ -1115,25 +431,11 @@ int AtomVecBody::size_restart() molecular types may be negative, but write as positive ------------------------------------------------------------------------- */ -int AtomVecBody::pack_restart(int i, double *buf) +int AtomVecBody::pack_restart_bonus(int i, double *buf) { - int m = 1; - buf[m++] = x[i][0]; - buf[m++] = x[i][1]; - buf[m++] = x[i][2]; - buf[m++] = ubuf(tag[i]).d; - buf[m++] = ubuf(type[i]).d; - buf[m++] = ubuf(mask[i]).d; - buf[m++] = ubuf(image[i]).d; - buf[m++] = v[i][0]; - buf[m++] = v[i][1]; - buf[m++] = v[i][2]; - - buf[m++] = radius[i]; - buf[m++] = rmass[i]; - buf[m++] = angmom[i][0]; - buf[m++] = angmom[i][1]; - buf[m++] = angmom[i][2]; + int m = 0; + + int *body = atom->body; if (body[i] < 0) buf[m++] = ubuf(0).d; else { @@ -1157,47 +459,21 @@ int AtomVecBody::pack_restart(int i, double *buf) m += bonus[j].ndouble; } - if (atom->nextra_restart) - for (int iextra = 0; iextra < atom->nextra_restart; iextra++) - m += modify->fix[atom->extra_restart[iextra]]->pack_restart(i,&buf[m]); - - buf[0] = m; return m; } /* ---------------------------------------------------------------------- - unpack data for one atom from restart file including extra quantities + unpack data for one atom from restart file including bonus data ------------------------------------------------------------------------- */ -int AtomVecBody::unpack_restart(double *buf) +int AtomVecBody::unpack_restart_bonus(int ilocal, double *buf) { - int nlocal = atom->nlocal; - if (nlocal == nmax) { - grow(0); - if (atom->nextra_store) - memory->grow(atom->extra,nmax,atom->nextra_store,"atom:extra"); - } + int m = 0; + + int *body = atom->body; - int m = 1; - x[nlocal][0] = buf[m++]; - x[nlocal][1] = buf[m++]; - x[nlocal][2] = buf[m++]; - tag[nlocal] = (tagint) ubuf(buf[m++]).i; - type[nlocal] = (int) ubuf(buf[m++]).i; - mask[nlocal] = (int) ubuf(buf[m++]).i; - image[nlocal] = (imageint) ubuf(buf[m++]).i; - v[nlocal][0] = buf[m++]; - v[nlocal][1] = buf[m++]; - v[nlocal][2] = buf[m++]; - - radius[nlocal] = buf[m++]; - rmass[nlocal] = buf[m++]; - angmom[nlocal][0] = buf[m++]; - angmom[nlocal][1] = buf[m++]; - angmom[nlocal][2] = buf[m++]; - - body[nlocal] = (int) ubuf(buf[m++]).i; - if (body[nlocal] == 0) body[nlocal] = -1; + body[ilocal] = (int) ubuf(buf[m++]).i; + if (body[ilocal] == 0) body[ilocal] = -1; else { if (nlocal_bonus == nmax_bonus) grow_bonus(); double *quat = bonus[nlocal_bonus].quat; @@ -1222,17 +498,10 @@ int AtomVecBody::unpack_restart(double *buf) memcpy(bonus[nlocal_bonus].dvalue,&buf[m], bonus[nlocal_bonus].ndouble*sizeof(double)); m += bonus[nlocal_bonus].ndouble; - bonus[nlocal_bonus].ilocal = nlocal; - body[nlocal] = nlocal_bonus++; + bonus[nlocal_bonus].ilocal = ilocal; + body[ilocal] = nlocal_bonus++; } - double **extra = atom->extra; - if (atom->nextra_store) { - int size = static_cast (buf[0]) - m; - for (int i = 0; i < size; i++) extra[nlocal][i] = buf[m++]; - } - - atom->nlocal++; return m; } @@ -1241,92 +510,33 @@ int AtomVecBody::unpack_restart(double *buf) set other values to defaults ------------------------------------------------------------------------- */ -void AtomVecBody::create_atom(int itype, double *coord) +void AtomVecBody::create_atom_post(int ilocal) { - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - tag[nlocal] = 0; - type[nlocal] = itype; - x[nlocal][0] = coord[0]; - x[nlocal][1] = coord[1]; - x[nlocal][2] = coord[2]; - mask[nlocal] = 1; - image[nlocal] = ((imageint) IMGMAX << IMG2BITS) | - ((imageint) IMGMAX << IMGBITS) | IMGMAX; - v[nlocal][0] = 0.0; - v[nlocal][1] = 0.0; - v[nlocal][2] = 0.0; - - radius[nlocal] = 0.5; - rmass[nlocal] = 1.0; - angmom[nlocal][0] = 0.0; - angmom[nlocal][1] = 0.0; - angmom[nlocal][2] = 0.0; - body[nlocal] = -1; - - atom->nlocal++; + atom->radius[ilocal] = 0.5; + atom->rmass[ilocal] = 1.0; + atom->body[ilocal] = -1; } /* ---------------------------------------------------------------------- - unpack one line from Atoms section of data file - initialize other atom quantities + modify what AtomVec::data_atom() just unpacked + or initialize other atom quantities ------------------------------------------------------------------------- */ -void AtomVecBody::data_atom(double *coord, imageint imagetmp, char **values) +void AtomVecBody::data_atom_post(int ilocal) { - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - tag[nlocal] = utils::tnumeric(FLERR,values[0],true,lmp); - type[nlocal] = utils::inumeric(FLERR,values[1],true,lmp); - if (type[nlocal] <= 0 || type[nlocal] > atom->ntypes) - error->one(FLERR,"Invalid atom type in Atoms section of data file"); - - body[nlocal] = utils::inumeric(FLERR,values[2],true,lmp); - if (body[nlocal] == 0) body[nlocal] = -1; - else if (body[nlocal] == 1) body[nlocal] = 0; - else error->one(FLERR,"Invalid bodyflag in Atoms section of data file"); - - rmass[nlocal] = utils::numeric(FLERR,values[3],true,lmp); - if (rmass[nlocal] <= 0.0) - error->one(FLERR,"Invalid density in Atoms section of data file"); - - x[nlocal][0] = coord[0]; - x[nlocal][1] = coord[1]; - x[nlocal][2] = coord[2]; - - image[nlocal] = imagetmp; - - mask[nlocal] = 1; - v[nlocal][0] = 0.0; - v[nlocal][1] = 0.0; - v[nlocal][2] = 0.0; - angmom[nlocal][0] = 0.0; - angmom[nlocal][1] = 0.0; - angmom[nlocal][2] = 0.0; - radius[nlocal] = 0.5; - - atom->nlocal++; -} - -/* ---------------------------------------------------------------------- - unpack hybrid quantities from one line in Atoms section of data file - initialize other atom quantities for this sub-style -------------------------------------------------------------------------- */ - -int AtomVecBody::data_atom_hybrid(int nlocal, char **values) -{ - body[nlocal] = utils::inumeric(FLERR,values[0],true,lmp); - if (body[nlocal] == 0) body[nlocal] = -1; - else if (body[nlocal] == 1) body[nlocal] = 0; - else error->one(FLERR,"Invalid atom type in Atoms section of data file"); + body_flag = atom->body[ilocal]; + if (body_flag == 0) body_flag = -1; + else if (body_flag == 1) body_flag = 0; + else error->one(FLERR,"Invalid body flag in Atoms section of data file"); + atom->body[ilocal] = body_flag; - rmass[nlocal] = utils::numeric(FLERR,values[1],true,lmp); - if (rmass[nlocal] <= 0.0) + if (atom->rmass[ilocal] <= 0.0) error->one(FLERR,"Invalid density in Atoms section of data file"); - return 2; + atom->radius[ilocal] = 0.5; + atom->angmom[ilocal][0] = 0.0; + atom->angmom[ilocal][1] = 0.0; + atom->angmom[ilocal][2] = 0.0; } /* ---------------------------------------------------------------------- @@ -1336,148 +546,52 @@ int AtomVecBody::data_atom_hybrid(int nlocal, char **values) void AtomVecBody::data_body(int m, int ninteger, int ndouble, int *ivalues, double *dvalues) { - if (body[m]) error->one(FLERR,"Assigning body parameters to non-body atom"); + if (atom->body[m]) + error->one(FLERR,"Assigning body parameters to non-body atom"); if (nlocal_bonus == nmax_bonus) grow_bonus(); bonus[nlocal_bonus].ilocal = m; bptr->data_body(nlocal_bonus,ninteger,ndouble,ivalues,dvalues); - body[m] = nlocal_bonus++; + atom->body[m] = nlocal_bonus++; } /* ---------------------------------------------------------------------- - unpack one tri from Velocities section of data file -------------------------------------------------------------------------- */ - -void AtomVecBody::data_vel(int m, char **values) -{ - v[m][0] = utils::numeric(FLERR,values[0],true,lmp); - v[m][1] = utils::numeric(FLERR,values[1],true,lmp); - v[m][2] = utils::numeric(FLERR,values[2],true,lmp); - angmom[m][0] = utils::numeric(FLERR,values[3],true,lmp); - angmom[m][1] = utils::numeric(FLERR,values[4],true,lmp); - angmom[m][2] = utils::numeric(FLERR,values[5],true,lmp); -} - -/* ---------------------------------------------------------------------- - unpack hybrid quantities from one body in Velocities section of data file + return # of bytes of allocated memory ------------------------------------------------------------------------- */ -int AtomVecBody::data_vel_hybrid(int m, char **values) +bigint AtomVecBody::memory_usage_bonus() { - angmom[m][0] = utils::numeric(FLERR,values[0],true,lmp); - angmom[m][1] = utils::numeric(FLERR,values[1],true,lmp); - angmom[m][2] = utils::numeric(FLERR,values[2],true,lmp); - return 3; -} - -/* ---------------------------------------------------------------------- - pack atom info for data file including 3 image flags -------------------------------------------------------------------------- */ + bigint bytes = 0; + bytes += nmax_bonus*sizeof(Bonus); + bytes += icp->size + dcp->size; -void AtomVecBody::pack_data(double **buf) -{ - int nlocal = atom->nlocal; - for (int i = 0; i < nlocal; i++) { - buf[i][0] = ubuf(tag[i]).d; - buf[i][1] = ubuf(type[i]).d; - if (body[i] < 0) buf[i][2] = ubuf(0).d; - else buf[i][2] = ubuf(1).d; - buf[i][3] = rmass[i]; - buf[i][4] = x[i][0]; - buf[i][5] = x[i][1]; - buf[i][6] = x[i][2]; - buf[i][7] = ubuf((image[i] & IMGMASK) - IMGMAX).d; - buf[i][8] = ubuf((image[i] >> IMGBITS & IMGMASK) - IMGMAX).d; - buf[i][9] = ubuf((image[i] >> IMG2BITS) - IMGMAX).d; + int nall = nlocal_bonus + nghost_bonus; + for (int i = 0; i < nall; i++) { + bytes += bonus[i].ninteger * sizeof(int); + bytes += bonus[i].ndouble * sizeof(double); } -} - -/* ---------------------------------------------------------------------- - pack hybrid atom info for data file -------------------------------------------------------------------------- */ - -int AtomVecBody::pack_data_hybrid(int i, double *buf) -{ - if (body[i] < 0) buf[0] = ubuf(0).d; - else buf[0] = ubuf(1).d; - buf[1] = rmass[i]; - return 2; -} - -/* ---------------------------------------------------------------------- - write atom info to data file including 3 image flags -------------------------------------------------------------------------- */ - -void AtomVecBody::write_data(FILE *fp, int n, double **buf) -{ - for (int i = 0; i < n; i++) - fprintf(fp,TAGINT_FORMAT " %d %d %g %g %g %g %d %d %d\n", - (tagint) ubuf(buf[i][0]).i,(int) ubuf(buf[i][1]).i, - (int) ubuf(buf[i][2]).i, - buf[i][3],buf[i][4],buf[i][5],buf[i][6], - (int) ubuf(buf[i][7]).i,(int) ubuf(buf[i][8]).i, - (int) ubuf(buf[i][9]).i); -} - -/* ---------------------------------------------------------------------- - write hybrid atom info to data file -------------------------------------------------------------------------- */ - -int AtomVecBody::write_data_hybrid(FILE *fp, double *buf) -{ - fprintf(fp," %d %g",(int) ubuf(buf[0]).i,buf[1]); - return 2; -} - -/* ---------------------------------------------------------------------- - pack velocity info for data file -------------------------------------------------------------------------- */ -void AtomVecBody::pack_vel(double **buf) -{ - int nlocal = atom->nlocal; - for (int i = 0; i < nlocal; i++) { - buf[i][0] = ubuf(tag[i]).d; - buf[i][1] = v[i][0]; - buf[i][2] = v[i][1]; - buf[i][3] = v[i][2]; - buf[i][4] = angmom[i][0]; - buf[i][5] = angmom[i][1]; - buf[i][6] = angmom[i][2]; - } + return bytes; } /* ---------------------------------------------------------------------- - pack hybrid velocity info for data file + modify values for AtomVec::pack_data() to pack ------------------------------------------------------------------------- */ -int AtomVecBody::pack_vel_hybrid(int i, double *buf) -{ - buf[0] = angmom[i][0]; - buf[1] = angmom[i][1]; - buf[2] = angmom[i][2]; - return 3; -} - -/* ---------------------------------------------------------------------- - write velocity info to data file -------------------------------------------------------------------------- */ +void AtomVecBody::pack_data_pre(int ilocal) +{ + body_flag = atom->body[ilocal]; -void AtomVecBody::write_vel(FILE *fp, int n, double **buf) -{ - for (int i = 0; i < n; i++) - fprintf(fp,TAGINT_FORMAT " %g %g %g %g %g %g\n", - (tagint) ubuf(buf[i][0]).i,buf[i][1],buf[i][2],buf[i][3], - buf[i][4],buf[i][5],buf[i][6]); + if (body_flag < 0) atom->body[ilocal] = 0; + else atom->body[ilocal] = 1; } /* ---------------------------------------------------------------------- - write hybrid velocity info to data file + unmodify values packed by AtomVec::pack_data() ------------------------------------------------------------------------- */ -int AtomVecBody::write_vel_hybrid(FILE *fp, double *buf) -{ - fprintf(fp," %g %g %g",buf[0],buf[1],buf[2]); - return 3; +void AtomVecBody::pack_data_post(int ilocal) +{ + atom->body[ilocal] = body_flag; } /* ---------------------------------------------------------------------- @@ -1497,47 +611,12 @@ double AtomVecBody::radius_body(int ninteger, int ndouble, void AtomVecBody::set_quat(int m, double *quat_external) { - if (body[m] < 0) error->one(FLERR,"Assigning quat to non-body atom"); - double *quat = bonus[body[m]].quat; + if (atom->body[m] < 0) error->one(FLERR,"Assigning quat to non-body atom"); + double *quat = bonus[atom->body[m]].quat; quat[0] = quat_external[0]; quat[1] = quat_external[1]; quat[2] = quat_external[2]; quat[3] = quat_external[3]; } -/* ---------------------------------------------------------------------- - return # of bytes of allocated memory -------------------------------------------------------------------------- */ - -bigint AtomVecBody::memory_usage() -{ - bigint bytes = 0; - - if (atom->memcheck("tag")) bytes += memory->usage(tag,nmax); - if (atom->memcheck("type")) bytes += memory->usage(type,nmax); - if (atom->memcheck("mask")) bytes += memory->usage(mask,nmax); - if (atom->memcheck("image")) bytes += memory->usage(image,nmax); - if (atom->memcheck("x")) bytes += memory->usage(x,nmax,3); - if (atom->memcheck("v")) bytes += memory->usage(v,nmax,3); - if (atom->memcheck("f")) bytes += memory->usage(f,nmax*comm->nthreads,3); - - if (atom->memcheck("radius")) bytes += memory->usage(radius,nmax); - if (atom->memcheck("rmass")) bytes += memory->usage(rmass,nmax); - if (atom->memcheck("angmom")) bytes += memory->usage(angmom,nmax,3); - if (atom->memcheck("torque")) bytes += - memory->usage(torque,nmax*comm->nthreads,3); - if (atom->memcheck("body")) bytes += memory->usage(body,nmax); - - bytes += nmax_bonus*sizeof(Bonus); - bytes += icp->size + dcp->size; - - int nall = nlocal_bonus + nghost_bonus; - for (int i = 0; i < nall; i++) { - bytes += bonus[i].ninteger * sizeof(int); - bytes += bonus[i].ndouble * sizeof(double); - } - - return bytes; -} - /* ---------------------------------------------------------------------- debug method for sanity checking of own/bonus data pointers ------------------------------------------------------------------------- */ diff --git a/src/atom_vec_body.h b/src/atom_vec_body.h index 38309648fb..183b4ea8ea 100644 --- a/src/atom_vec_body.h +++ b/src/atom_vec_body.h @@ -42,49 +42,26 @@ class AtomVecBody : public AtomVec { AtomVecBody(class LAMMPS *); ~AtomVecBody(); void process_args(int, char **); - void grow(int); - void grow_reset(); - void copy(int, int, int); - int pack_comm(int, int *, double *, int, int *); - int pack_comm_vel(int, int *, double *, int, int *); - int pack_comm_hybrid(int, int *, double *); - void unpack_comm(int, int, double *); - void unpack_comm_vel(int, int, double *); - int unpack_comm_hybrid(int, int, double *); - int pack_reverse(int, int, double *); - int pack_reverse_hybrid(int, int, double *); - void unpack_reverse(int, int *, double *); - int unpack_reverse_hybrid(int, int *, double *); - int pack_border(int, int *, double *, int, int *); - int pack_border_vel(int, int *, double *, int, int *); - int pack_border_hybrid(int, int *, double *); - void unpack_border(int, int, double *); - void unpack_border_vel(int, int, double *); - int unpack_border_hybrid(int, int, double *); - int pack_exchange(int, double *); - int unpack_exchange(double *); - int size_restart(); - int pack_restart(int, double *); - int unpack_restart(double *); - void create_atom(int, double *); - void data_atom(double *, imageint, char **); - int data_atom_hybrid(int, char **); - void data_vel(int, char **); - int data_vel_hybrid(int, char **); - void pack_data(double **); - int pack_data_hybrid(int, double *); - void write_data(FILE *, int, double **); - int write_data_hybrid(FILE *, double *); - void pack_vel(double **); - int pack_vel_hybrid(int, double *); - void write_vel(FILE *, int, double **); - int write_vel_hybrid(FILE *, double *); - bigint memory_usage(); - - // manipulate Bonus data structure for extra atom info + void copy_bonus(int, int, int); void clear_bonus(); + int pack_comm_bonus(int, int *, double *); + void unpack_comm_bonus(int, int, double *); + int pack_reverse_bonus(int, int, double *); + int pack_border_bonus(int, int *, double *); + int unpack_border_bonus(int, int, double *); + int pack_exchange_bonus(int, double *); + int unpack_exchange_bonus(int, double *); + int size_restart_bonus(); + int pack_restart_bonus(int, double *); + int unpack_restart_bonus(int, double *); void data_body(int, int, int, int *, double *); + bigint memory_usage_bonus(); + + void create_atom_post(int); + void data_atom_post(int); + void pack_data_pre(int); + void pack_data_post(int); // methods used by other classes to query/set body info @@ -94,23 +71,16 @@ class AtomVecBody : public AtomVec { int nlocal_bonus; private: - tagint *tag; - int *type,*mask; - imageint *image; - double **x,**v,**f; - double *radius; - double *rmass; - double **angmom,**torque; - int *body; - int nghost_bonus,nmax_bonus; - int intdoubleratio; // sizeof(double) / sizeof(int) + int intdoubleratio; // sizeof(double) / sizeof(int) + int body_flag; MyPoolChunk *icp; MyPoolChunk *dcp; void grow_bonus(); - void copy_bonus(int, int); + void copy_bonus_all(int, int); + // check(int); }; } diff --git a/src/atom_vec_ellipsoid.cpp b/src/atom_vec_ellipsoid.cpp index 5565b82a10..7ba26c1c34 100644 --- a/src/atom_vec_ellipsoid.cpp +++ b/src/atom_vec_ellipsoid.cpp @@ -19,8 +19,6 @@ #include #include "math_extra.h" #include "atom.h" -#include "comm.h" -#include "domain.h" #include "modify.h" #include "fix.h" #include "math_const.h" @@ -36,74 +34,45 @@ using namespace MathConst; AtomVecEllipsoid::AtomVecEllipsoid(LAMMPS *lmp) : AtomVec(lmp) { molecular = 0; + bonus_flag = 1; - comm_x_only = comm_f_only = 0; - size_forward = 7; - size_reverse = 6; - size_border = 15; - size_velocity = 6; - size_data_atom = 7; - size_data_vel = 7; + size_forward_bonus = 4; + size_border_bonus = 8; + size_restart_bonus_one = 7; size_data_bonus = 8; - xcol_data = 5; atom->ellipsoid_flag = 1; atom->rmass_flag = atom->angmom_flag = atom->torque_flag = 1; nlocal_bonus = nghost_bonus = nmax_bonus = 0; bonus = NULL; -} - -/* ---------------------------------------------------------------------- */ -AtomVecEllipsoid::~AtomVecEllipsoid() -{ - memory->sfree(bonus); -} - -/* ---------------------------------------------------------------------- - grow atom arrays - n = 0 grows arrays by a chunk - n > 0 allocates arrays to size n -------------------------------------------------------------------------- */ - -void AtomVecEllipsoid::grow(int n) -{ - if (n == 0) grow_nmax(); - else nmax = n; - atom->nmax = nmax; - if (nmax < 0 || nmax > MAXSMALLINT) - error->one(FLERR,"Per-processor system is too big"); + // strings with peratom variables to include in each AtomVec method + // strings cannot contain fields in corresponding AtomVec default strings + // order of fields in the string does not matter + // except fields_data_atom and fields_data_vel which must match data file - tag = memory->grow(atom->tag,nmax,"atom:tag"); - type = memory->grow(atom->type,nmax,"atom:type"); - mask = memory->grow(atom->mask,nmax,"atom:mask"); - image = memory->grow(atom->image,nmax,"atom:image"); - x = memory->grow(atom->x,nmax,3,"atom:x"); - v = memory->grow(atom->v,nmax,3,"atom:v"); - f = memory->grow(atom->f,nmax*comm->nthreads,3,"atom:f"); + fields_grow = (char *) "rmass angmom torque ellipsoid"; + fields_copy = (char *) "rmass angmom"; + fields_comm = NULL; + fields_comm_vel = (char *) "angmom"; + fields_reverse = (char *) "torque"; + fields_border = (char *) "rmass"; + fields_border_vel = (char *) "rmass angmom"; + fields_exchange = (char *) "rmass angmom"; + fields_restart = (char *) "rmass angmom"; + fields_create = (char *) "rmass angmom ellipsoid"; + fields_data_atom = (char *) "id type ellipsoid rmass x"; + fields_data_vel = (char *) "angmom"; - rmass = memory->grow(atom->rmass,nmax,"atom:rmass"); - angmom = memory->grow(atom->angmom,nmax,3,"atom:angmom"); - torque = memory->grow(atom->torque,nmax*comm->nthreads,3,"atom:torque"); - ellipsoid = memory->grow(atom->ellipsoid,nmax,"atom:ellipsoid"); - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - modify->fix[atom->extra_grow[iextra]]->grow_arrays(nmax); + setup_fields(); } -/* ---------------------------------------------------------------------- - reset local array ptrs -------------------------------------------------------------------------- */ +/* ---------------------------------------------------------------------- */ -void AtomVecEllipsoid::grow_reset() +AtomVecEllipsoid::~AtomVecEllipsoid() { - tag = atom->tag; type = atom->type; - mask = atom->mask; image = atom->image; - x = atom->x; v = atom->v; f = atom->f; - rmass = atom->rmass; angmom = atom->angmom; torque = atom->torque; - ellipsoid = atom->ellipsoid; + memory->sfree(bonus); } /* ---------------------------------------------------------------------- @@ -121,31 +90,17 @@ void AtomVecEllipsoid::grow_bonus() } /* ---------------------------------------------------------------------- - copy atom I info to atom J + copy atom I bonus info to atom J ------------------------------------------------------------------------- */ -void AtomVecEllipsoid::copy(int i, int j, int delflag) +void AtomVecEllipsoid::copy_bonus(int i, int j, int delflag) { - tag[j] = tag[i]; - type[j] = type[i]; - mask[j] = mask[i]; - image[j] = image[i]; - x[j][0] = x[i][0]; - x[j][1] = x[i][1]; - x[j][2] = x[i][2]; - v[j][0] = v[i][0]; - v[j][1] = v[i][1]; - v[j][2] = v[i][2]; - - rmass[j] = rmass[i]; - angmom[j][0] = angmom[i][0]; - angmom[j][1] = angmom[i][1]; - angmom[j][2] = angmom[i][2]; + int *ellipsoid = atom->ellipsoid; // if deleting atom J via delflag and J has bonus data, then delete it if (delflag && ellipsoid[j] >= 0) { - copy_bonus(nlocal_bonus-1,ellipsoid[j]); + copy_bonus_all(nlocal_bonus-1,ellipsoid[j]); nlocal_bonus--; } @@ -154,10 +109,6 @@ void AtomVecEllipsoid::copy(int i, int j, int delflag) if (ellipsoid[i] >= 0 && i != j) bonus[ellipsoid[i]].ilocal = j; ellipsoid[j] = ellipsoid[i]; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - modify->fix[atom->extra_grow[iextra]]->copy_arrays(i,j,delflag); } /* ---------------------------------------------------------------------- @@ -165,9 +116,9 @@ void AtomVecEllipsoid::copy(int i, int j, int delflag) also reset ellipsoid that points to I to now point to J ------------------------------------------------------------------------- */ -void AtomVecEllipsoid::copy_bonus(int i, int j) +void AtomVecEllipsoid::copy_bonus_all(int i, int j) { - ellipsoid[bonus[i].ilocal] = j; + atom->ellipsoid[bonus[i].ilocal] = j; memcpy(&bonus[j],&bonus[i],sizeof(Bonus)); } @@ -179,194 +130,20 @@ void AtomVecEllipsoid::copy_bonus(int i, int j) void AtomVecEllipsoid::clear_bonus() { nghost_bonus = 0; -} -/* ---------------------------------------------------------------------- - set shape values in bonus data for particle I - oriented aligned with xyz axes - this may create or delete entry in bonus data -------------------------------------------------------------------------- */ - -void AtomVecEllipsoid::set_shape(int i, - double shapex, double shapey, double shapez) -{ - if (ellipsoid[i] < 0) { - if (shapex == 0.0 && shapey == 0.0 && shapez == 0.0) return; - if (nlocal_bonus == nmax_bonus) grow_bonus(); - double *shape = bonus[nlocal_bonus].shape; - double *quat = bonus[nlocal_bonus].quat; - shape[0] = shapex; - shape[1] = shapey; - shape[2] = shapez; - quat[0] = 1.0; - quat[1] = 0.0; - quat[2] = 0.0; - quat[3] = 0.0; - bonus[nlocal_bonus].ilocal = i; - ellipsoid[i] = nlocal_bonus++; - } else if (shapex == 0.0 && shapey == 0.0 && shapez == 0.0) { - copy_bonus(nlocal_bonus-1,ellipsoid[i]); - nlocal_bonus--; - ellipsoid[i] = -1; - } else { - double *shape = bonus[ellipsoid[i]].shape; - shape[0] = shapex; - shape[1] = shapey; - shape[2] = shapez; - } + if (atom->nextra_grow) + for (int iextra = 0; iextra < atom->nextra_grow; iextra++) + modify->fix[atom->extra_grow[iextra]]->clear_bonus(); } /* ---------------------------------------------------------------------- */ -int AtomVecEllipsoid::pack_comm(int n, int *list, double *buf, - int pbc_flag, int *pbc) +int AtomVecEllipsoid::pack_comm_bonus(int n, int *list, double *buf) { int i,j,m; - double dx,dy,dz; double *quat; - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - if (ellipsoid[j] >= 0) { - quat = bonus[ellipsoid[j]].quat; - buf[m++] = quat[0]; - buf[m++] = quat[1]; - buf[m++] = quat[2]; - buf[m++] = quat[3]; - } - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]*domain->xprd + pbc[5]*domain->xy + pbc[4]*domain->xz; - dy = pbc[1]*domain->yprd + pbc[3]*domain->yz; - dz = pbc[2]*domain->zprd; - } - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - if (ellipsoid[j] >= 0) { - quat = bonus[ellipsoid[j]].quat; - buf[m++] = quat[0]; - buf[m++] = quat[1]; - buf[m++] = quat[2]; - buf[m++] = quat[3]; - } - } - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecEllipsoid::pack_comm_vel(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz,dvx,dvy,dvz; - double *quat; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - if (ellipsoid[j] >= 0) { - quat = bonus[ellipsoid[j]].quat; - buf[m++] = quat[0]; - buf[m++] = quat[1]; - buf[m++] = quat[2]; - buf[m++] = quat[3]; - } - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - buf[m++] = angmom[j][0]; - buf[m++] = angmom[j][1]; - buf[m++] = angmom[j][2]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]*domain->xprd + pbc[5]*domain->xy + pbc[4]*domain->xz; - dy = pbc[1]*domain->yprd + pbc[3]*domain->yz; - dz = pbc[2]*domain->zprd; - } - if (!deform_vremap) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - if (ellipsoid[j] >= 0) { - quat = bonus[ellipsoid[j]].quat; - buf[m++] = quat[0]; - buf[m++] = quat[1]; - buf[m++] = quat[2]; - buf[m++] = quat[3]; - } - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - buf[m++] = angmom[j][0]; - buf[m++] = angmom[j][1]; - buf[m++] = angmom[j][2]; - } - } else { - dvx = pbc[0]*h_rate[0] + pbc[5]*h_rate[5] + pbc[4]*h_rate[4]; - dvy = pbc[1]*h_rate[1] + pbc[3]*h_rate[3]; - dvz = pbc[2]*h_rate[2]; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - if (ellipsoid[j] >= 0) { - quat = bonus[ellipsoid[j]].quat; - buf[m++] = quat[0]; - buf[m++] = quat[1]; - buf[m++] = quat[2]; - buf[m++] = quat[3]; - } - if (mask[i] & deform_groupbit) { - buf[m++] = v[j][0] + dvx; - buf[m++] = v[j][1] + dvy; - buf[m++] = v[j][2] + dvz; - } else { - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - buf[m++] = angmom[j][0]; - buf[m++] = angmom[j][1]; - buf[m++] = angmom[j][2]; - } - } - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecEllipsoid::pack_comm_hybrid(int n, int *list, double *buf) -{ - int i,j,m; - double *quat; + int *ellipsoid = atom->ellipsoid; m = 0; for (i = 0; i < n; i++) { @@ -379,67 +156,18 @@ int AtomVecEllipsoid::pack_comm_hybrid(int n, int *list, double *buf) buf[m++] = quat[3]; } } - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecEllipsoid::unpack_comm(int n, int first, double *buf) -{ - int i,m,last; - double *quat; - m = 0; - last = first + n; - for (i = first; i < last; i++) { - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - if (ellipsoid[i] >= 0) { - quat = bonus[ellipsoid[i]].quat; - quat[0] = buf[m++]; - quat[1] = buf[m++]; - quat[2] = buf[m++]; - quat[3] = buf[m++]; - } - } + return m; } /* ---------------------------------------------------------------------- */ -void AtomVecEllipsoid::unpack_comm_vel(int n, int first, double *buf) +void AtomVecEllipsoid::unpack_comm_bonus(int n, int first, double *buf) { int i,m,last; double *quat; - m = 0; - last = first + n; - for (i = first; i < last; i++) { - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - if (ellipsoid[i] >= 0) { - quat = bonus[ellipsoid[i]].quat; - quat[0] = buf[m++]; - quat[1] = buf[m++]; - quat[2] = buf[m++]; - quat[3] = buf[m++]; - } - v[i][0] = buf[m++]; - v[i][1] = buf[m++]; - v[i][2] = buf[m++]; - angmom[i][0] = buf[m++]; - angmom[i][1] = buf[m++]; - angmom[i][2] = buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecEllipsoid::unpack_comm_hybrid(int n, int first, double *buf) -{ - int i,m,last; - double *quat; + int *ellipsoid = atom->ellipsoid; m = 0; last = first + n; @@ -452,294 +180,21 @@ int AtomVecEllipsoid::unpack_comm_hybrid(int n, int first, double *buf) quat[3] = buf[m++]; } } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecEllipsoid::pack_reverse(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - buf[m++] = f[i][0]; - buf[m++] = f[i][1]; - buf[m++] = f[i][2]; - buf[m++] = torque[i][0]; - buf[m++] = torque[i][1]; - buf[m++] = torque[i][2]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecEllipsoid::pack_reverse_hybrid(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - buf[m++] = torque[i][0]; - buf[m++] = torque[i][1]; - buf[m++] = torque[i][2]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecEllipsoid::unpack_reverse(int n, int *list, double *buf) -{ - int i,j,m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - f[j][0] += buf[m++]; - f[j][1] += buf[m++]; - f[j][2] += buf[m++]; - torque[j][0] += buf[m++]; - torque[j][1] += buf[m++]; - torque[j][2] += buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecEllipsoid::unpack_reverse_hybrid(int n, int *list, double *buf) -{ - int i,j,m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - torque[j][0] += buf[m++]; - torque[j][1] += buf[m++]; - torque[j][2] += buf[m++]; - } - return m; } /* ---------------------------------------------------------------------- */ -int AtomVecEllipsoid::pack_border(int n, int *list, double *buf, - int pbc_flag, int *pbc) +int AtomVecEllipsoid::pack_border_bonus(int n, int *list, double *buf) { int i,j,m; double dx,dy,dz; double *shape,*quat; - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = rmass[j]; - if (ellipsoid[j] < 0) buf[m++] = ubuf(0).d; - else { - buf[m++] = ubuf(1).d; - shape = bonus[ellipsoid[j]].shape; - quat = bonus[ellipsoid[j]].quat; - buf[m++] = shape[0]; - buf[m++] = shape[1]; - buf[m++] = shape[2]; - buf[m++] = quat[0]; - buf[m++] = quat[1]; - buf[m++] = quat[2]; - buf[m++] = quat[3]; - } - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]; - dy = pbc[1]; - dz = pbc[2]; - } - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = rmass[j]; - if (ellipsoid[j] < 0) buf[m++] = ubuf(0).d; - else { - buf[m++] = ubuf(1).d; - shape = bonus[ellipsoid[j]].shape; - quat = bonus[ellipsoid[j]].quat; - buf[m++] = shape[0]; - buf[m++] = shape[1]; - buf[m++] = shape[2]; - buf[m++] = quat[0]; - buf[m++] = quat[1]; - buf[m++] = quat[2]; - buf[m++] = quat[3]; - } - } - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); - - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecEllipsoid::pack_border_vel(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz,dvx,dvy,dvz; - double *shape,*quat; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = rmass[j]; - if (ellipsoid[j] < 0) buf[m++] = ubuf(0).d; - else { - buf[m++] = ubuf(1).d; - shape = bonus[ellipsoid[j]].shape; - quat = bonus[ellipsoid[j]].quat; - buf[m++] = shape[0]; - buf[m++] = shape[1]; - buf[m++] = shape[2]; - buf[m++] = quat[0]; - buf[m++] = quat[1]; - buf[m++] = quat[2]; - buf[m++] = quat[3]; - } - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - buf[m++] = angmom[j][0]; - buf[m++] = angmom[j][1]; - buf[m++] = angmom[j][2]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]; - dy = pbc[1]; - dz = pbc[2]; - } - if (!deform_vremap) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = rmass[j]; - if (ellipsoid[j] < 0) buf[m++] = ubuf(0).d; - else { - buf[m++] = ubuf(1).d; - shape = bonus[ellipsoid[j]].shape; - quat = bonus[ellipsoid[j]].quat; - buf[m++] = shape[0]; - buf[m++] = shape[1]; - buf[m++] = shape[2]; - buf[m++] = quat[0]; - buf[m++] = quat[1]; - buf[m++] = quat[2]; - buf[m++] = quat[3]; - } - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - buf[m++] = angmom[j][0]; - buf[m++] = angmom[j][1]; - buf[m++] = angmom[j][2]; - } - } else { - dvx = pbc[0]*h_rate[0] + pbc[5]*h_rate[5] + pbc[4]*h_rate[4]; - dvy = pbc[1]*h_rate[1] + pbc[3]*h_rate[3]; - dvz = pbc[2]*h_rate[2]; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = rmass[j]; - if (ellipsoid[j] < 0) buf[m++] = ubuf(0).d; - else { - buf[m++] = ubuf(1).d; - shape = bonus[ellipsoid[j]].shape; - quat = bonus[ellipsoid[j]].quat; - buf[m++] = shape[0]; - buf[m++] = shape[1]; - buf[m++] = shape[2]; - buf[m++] = quat[0]; - buf[m++] = quat[1]; - buf[m++] = quat[2]; - buf[m++] = quat[3]; - } - if (mask[i] & deform_groupbit) { - buf[m++] = v[j][0] + dvx; - buf[m++] = v[j][1] + dvy; - buf[m++] = v[j][2] + dvz; - } else { - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - buf[m++] = angmom[j][0]; - buf[m++] = angmom[j][1]; - buf[m++] = angmom[j][2]; - } - } - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); - - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecEllipsoid::pack_border_hybrid(int n, int *list, double *buf) -{ - int i,j,m; - double *shape,*quat; + int *ellipsoid = atom->ellipsoid; m = 0; for (i = 0; i < n; i++) { j = list[i]; - buf[m++] = rmass[j]; if (ellipsoid[j] < 0) buf[m++] = ubuf(0).d; else { buf[m++] = ubuf(1).d; @@ -754,71 +209,22 @@ int AtomVecEllipsoid::pack_border_hybrid(int n, int *list, double *buf) buf[m++] = quat[3]; } } + return m; } /* ---------------------------------------------------------------------- */ -void AtomVecEllipsoid::unpack_border(int n, int first, double *buf) +int AtomVecEllipsoid::unpack_border_bonus(int n, int first, double *buf) { int i,j,m,last; double *shape,*quat; - m = 0; - last = first + n; - for (i = first; i < last; i++) { - if (i == nmax) grow(0); - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - tag[i] = (tagint) ubuf(buf[m++]).i; - type[i] = (int) ubuf(buf[m++]).i; - mask[i] = (int) ubuf(buf[m++]).i; - rmass[i] = buf[m++]; - ellipsoid[i] = (int) ubuf(buf[m++]).i; - if (ellipsoid[i] == 0) ellipsoid[i] = -1; - else { - j = nlocal_bonus + nghost_bonus; - if (j == nmax_bonus) grow_bonus(); - shape = bonus[j].shape; - quat = bonus[j].quat; - shape[0] = buf[m++]; - shape[1] = buf[m++]; - shape[2] = buf[m++]; - quat[0] = buf[m++]; - quat[1] = buf[m++]; - quat[2] = buf[m++]; - quat[3] = buf[m++]; - bonus[j].ilocal = i; - ellipsoid[i] = j; - nghost_bonus++; - } - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]-> - unpack_border(n,first,&buf[m]); -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecEllipsoid::unpack_border_vel(int n, int first, double *buf) -{ - int i,j,m,last; - double *shape,*quat; + int *ellipsoid = atom->ellipsoid; m = 0; last = first + n; for (i = first; i < last; i++) { - if (i == nmax) grow(0); - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - tag[i] = (tagint) ubuf(buf[m++]).i; - type[i] = (int) ubuf(buf[m++]).i; - mask[i] = (int) ubuf(buf[m++]).i; - rmass[i] = buf[m++]; ellipsoid[i] = (int) ubuf(buf[m++]).i; if (ellipsoid[i] == 0) ellipsoid[i] = -1; else { @@ -837,50 +243,8 @@ void AtomVecEllipsoid::unpack_border_vel(int n, int first, double *buf) ellipsoid[i] = j; nghost_bonus++; } - v[i][0] = buf[m++]; - v[i][1] = buf[m++]; - v[i][2] = buf[m++]; - angmom[i][0] = buf[m++]; - angmom[i][1] = buf[m++]; - angmom[i][2] = buf[m++]; } - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]-> - unpack_border(n,first,&buf[m]); -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecEllipsoid::unpack_border_hybrid(int n, int first, double *buf) -{ - int i,j,m,last; - double *shape,*quat; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - rmass[i] = buf[m++]; - ellipsoid[i] = (int) ubuf(buf[m++]).i; - if (ellipsoid[i] == 0) ellipsoid[i] = -1; - else { - j = nlocal_bonus + nghost_bonus; - if (j == nmax_bonus) grow_bonus(); - shape = bonus[j].shape; - quat = bonus[j].quat; - shape[0] = buf[m++]; - shape[1] = buf[m++]; - shape[2] = buf[m++]; - quat[0] = buf[m++]; - quat[1] = buf[m++]; - quat[2] = buf[m++]; - quat[3] = buf[m++]; - bonus[j].ilocal = i; - ellipsoid[i] = j; - nghost_bonus++; - } - } return m; } @@ -889,24 +253,11 @@ int AtomVecEllipsoid::unpack_border_hybrid(int n, int first, double *buf) xyz must be 1st 3 values, so comm::exchange() can test on them ------------------------------------------------------------------------- */ -int AtomVecEllipsoid::pack_exchange(int i, double *buf) +int AtomVecEllipsoid::pack_exchange_bonus(int i, double *buf) { - int m = 1; - buf[m++] = x[i][0]; - buf[m++] = x[i][1]; - buf[m++] = x[i][2]; - buf[m++] = v[i][0]; - buf[m++] = v[i][1]; - buf[m++] = v[i][2]; - buf[m++] = ubuf(tag[i]).d; - buf[m++] = ubuf(type[i]).d; - buf[m++] = ubuf(mask[i]).d; - buf[m++] = ubuf(image[i]).d; - - buf[m++] = rmass[i]; - buf[m++] = angmom[i][0]; - buf[m++] = angmom[i][1]; - buf[m++] = angmom[i][2]; + int m = 0; + + int *ellipsoid = atom->ellipsoid; if (ellipsoid[i] < 0) buf[m++] = ubuf(0).d; else { @@ -923,40 +274,19 @@ int AtomVecEllipsoid::pack_exchange(int i, double *buf) buf[m++] = quat[3]; } - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - m += modify->fix[atom->extra_grow[iextra]]->pack_exchange(i,&buf[m]); - - buf[0] = m; return m; } /* ---------------------------------------------------------------------- */ -int AtomVecEllipsoid::unpack_exchange(double *buf) +int AtomVecEllipsoid::unpack_exchange_bonus(int ilocal, double *buf) { - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - int m = 1; - x[nlocal][0] = buf[m++]; - x[nlocal][1] = buf[m++]; - x[nlocal][2] = buf[m++]; - v[nlocal][0] = buf[m++]; - v[nlocal][1] = buf[m++]; - v[nlocal][2] = buf[m++]; - tag[nlocal] = (tagint) ubuf(buf[m++]).i; - type[nlocal] = (int) ubuf(buf[m++]).i; - mask[nlocal] = (int) ubuf(buf[m++]).i; - image[nlocal] = (imageint) ubuf(buf[m++]).i; - - rmass[nlocal] = buf[m++]; - angmom[nlocal][0] = buf[m++]; - angmom[nlocal][1] = buf[m++]; - angmom[nlocal][2] = buf[m++]; - - ellipsoid[nlocal] = (int) ubuf(buf[m++]).i; - if (ellipsoid[nlocal] == 0) ellipsoid[nlocal] = -1; + int m = 0; + + int *ellipsoid = atom->ellipsoid; + + ellipsoid[ilocal] = (int) ubuf(buf[m++]).i; + if (ellipsoid[ilocal] == 0) ellipsoid[ilocal] = -1; else { if (nlocal_bonus == nmax_bonus) grow_bonus(); double *shape = bonus[nlocal_bonus].shape; @@ -968,16 +298,10 @@ int AtomVecEllipsoid::unpack_exchange(double *buf) quat[1] = buf[m++]; quat[2] = buf[m++]; quat[3] = buf[m++]; - bonus[nlocal_bonus].ilocal = nlocal; - ellipsoid[nlocal] = nlocal_bonus++; + bonus[nlocal_bonus].ilocal = ilocal; + ellipsoid[ilocal] = nlocal_bonus++; } - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - m += modify->fix[atom->extra_grow[iextra]]-> - unpack_exchange(nlocal,&buf[m]); - - atom->nlocal++; return m; } @@ -986,20 +310,18 @@ int AtomVecEllipsoid::unpack_exchange(double *buf) include extra data stored by fixes ------------------------------------------------------------------------- */ -int AtomVecEllipsoid::size_restart() +int AtomVecEllipsoid::size_restart_bonus() { int i; + int *ellipsoid = atom->ellipsoid; + int n = 0; int nlocal = atom->nlocal; - for (i = 0; i < nlocal; i++) - if (ellipsoid[i] >= 0) n += 23; - else n += 16; - - if (atom->nextra_restart) - for (int iextra = 0; iextra < atom->nextra_restart; iextra++) - for (i = 0; i < nlocal; i++) - n += modify->fix[atom->extra_restart[iextra]]->size_restart(i); + for (i = 0; i < nlocal; i++) { + if (ellipsoid[i] >= 0) n += size_restart_bonus_one; + n++; + } return n; } @@ -1010,24 +332,11 @@ int AtomVecEllipsoid::size_restart() molecular types may be negative, but write as positive ------------------------------------------------------------------------- */ -int AtomVecEllipsoid::pack_restart(int i, double *buf) +int AtomVecEllipsoid::pack_restart_bonus(int i, double *buf) { - int m = 1; - buf[m++] = x[i][0]; - buf[m++] = x[i][1]; - buf[m++] = x[i][2]; - buf[m++] = ubuf(tag[i]).d; - buf[m++] = ubuf(type[i]).d; - buf[m++] = ubuf(mask[i]).d; - buf[m++] = ubuf(image[i]).d; - buf[m++] = v[i][0]; - buf[m++] = v[i][1]; - buf[m++] = v[i][2]; - - buf[m++] = rmass[i]; - buf[m++] = angmom[i][0]; - buf[m++] = angmom[i][1]; - buf[m++] = angmom[i][2]; + int m = 0; + + int *ellipsoid = atom->ellipsoid; if (ellipsoid[i] < 0) buf[m++] = ubuf(0).d; else { @@ -1042,11 +351,6 @@ int AtomVecEllipsoid::pack_restart(int i, double *buf) buf[m++] = bonus[j].quat[3]; } - if (atom->nextra_restart) - for (int iextra = 0; iextra < atom->nextra_restart; iextra++) - m += modify->fix[atom->extra_restart[iextra]]->pack_restart(i,&buf[m]); - - buf[0] = m; return m; } @@ -1054,34 +358,14 @@ int AtomVecEllipsoid::pack_restart(int i, double *buf) unpack data for one atom from restart file including bonus data ------------------------------------------------------------------------- */ -int AtomVecEllipsoid::unpack_restart(double *buf) +int AtomVecEllipsoid::unpack_restart_bonus(int ilocal, double *buf) { - int nlocal = atom->nlocal; - if (nlocal == nmax) { - grow(0); - if (atom->nextra_store) - memory->grow(atom->extra,nmax,atom->nextra_store,"atom:extra"); - } + int m = 0; - int m = 1; - x[nlocal][0] = buf[m++]; - x[nlocal][1] = buf[m++]; - x[nlocal][2] = buf[m++]; - tag[nlocal] = (tagint) ubuf(buf[m++]).i; - type[nlocal] = (int) ubuf(buf[m++]).i; - mask[nlocal] = (int) ubuf(buf[m++]).i; - image[nlocal] = (imageint) ubuf(buf[m++]).i; - v[nlocal][0] = buf[m++]; - v[nlocal][1] = buf[m++]; - v[nlocal][2] = buf[m++]; - - rmass[nlocal] = buf[m++]; - angmom[nlocal][0] = buf[m++]; - angmom[nlocal][1] = buf[m++]; - angmom[nlocal][2] = buf[m++]; - - ellipsoid[nlocal] = (int) ubuf(buf[m++]).i; - if (ellipsoid[nlocal] == 0) ellipsoid[nlocal] = -1; + int *ellipsoid = atom->ellipsoid; + + ellipsoid[ilocal] = (int) ubuf(buf[m++]).i; + if (ellipsoid[ilocal] == 0) ellipsoid[ilocal] = -1; else { if (nlocal_bonus == nmax_bonus) grow_bonus(); double *shape = bonus[nlocal_bonus].shape; @@ -1093,118 +377,21 @@ int AtomVecEllipsoid::unpack_restart(double *buf) quat[1] = buf[m++]; quat[2] = buf[m++]; quat[3] = buf[m++]; - bonus[nlocal_bonus].ilocal = nlocal; - ellipsoid[nlocal] = nlocal_bonus++; - } - - double **extra = atom->extra; - if (atom->nextra_store) { - int size = static_cast (buf[0]) - m; - for (int i = 0; i < size; i++) extra[nlocal][i] = buf[m++]; + bonus[nlocal_bonus].ilocal = ilocal; + ellipsoid[ilocal] = nlocal_bonus++; } - atom->nlocal++; return m; } -/* ---------------------------------------------------------------------- - create one atom of itype at coord - set other values to defaults -------------------------------------------------------------------------- */ - -void AtomVecEllipsoid::create_atom(int itype, double *coord) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - tag[nlocal] = 0; - type[nlocal] = itype; - x[nlocal][0] = coord[0]; - x[nlocal][1] = coord[1]; - x[nlocal][2] = coord[2]; - mask[nlocal] = 1; - image[nlocal] = ((imageint) IMGMAX << IMG2BITS) | - ((imageint) IMGMAX << IMGBITS) | IMGMAX; - v[nlocal][0] = 0.0; - v[nlocal][1] = 0.0; - v[nlocal][2] = 0.0; - - rmass[nlocal] = 1.0; - angmom[nlocal][0] = 0.0; - angmom[nlocal][1] = 0.0; - angmom[nlocal][2] = 0.0; - ellipsoid[nlocal] = -1; - - atom->nlocal++; -} - -/* ---------------------------------------------------------------------- - unpack one line from Atoms section of data file - initialize other atom quantities -------------------------------------------------------------------------- */ - -void AtomVecEllipsoid::data_atom(double *coord, imageint imagetmp, - char **values) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - tag[nlocal] = utils::tnumeric(FLERR,values[0],true,lmp); - type[nlocal] = utils::inumeric(FLERR,values[1],true,lmp); - if (type[nlocal] <= 0 || type[nlocal] > atom->ntypes) - error->one(FLERR,"Invalid atom type in Atoms section of data file"); - - ellipsoid[nlocal] = utils::inumeric(FLERR,values[2],true,lmp); - if (ellipsoid[nlocal] == 0) ellipsoid[nlocal] = -1; - else if (ellipsoid[nlocal] == 1) ellipsoid[nlocal] = 0; - else error->one(FLERR,"Invalid ellipsoidflag in Atoms section of data file"); - - rmass[nlocal] = utils::numeric(FLERR,values[3],true,lmp); - if (rmass[nlocal] <= 0.0) - error->one(FLERR,"Invalid density in Atoms section of data file"); - - x[nlocal][0] = coord[0]; - x[nlocal][1] = coord[1]; - x[nlocal][2] = coord[2]; - - image[nlocal] = imagetmp; - - mask[nlocal] = 1; - v[nlocal][0] = 0.0; - v[nlocal][1] = 0.0; - v[nlocal][2] = 0.0; - angmom[nlocal][0] = 0.0; - angmom[nlocal][1] = 0.0; - angmom[nlocal][2] = 0.0; - - atom->nlocal++; -} - -/* ---------------------------------------------------------------------- - unpack hybrid quantities from one line in Atoms section of data file - initialize other atom quantities for this sub-style -------------------------------------------------------------------------- */ - -int AtomVecEllipsoid::data_atom_hybrid(int nlocal, char **values) -{ - ellipsoid[nlocal] = utils::inumeric(FLERR,values[0],true,lmp); - if (ellipsoid[nlocal] == 0) ellipsoid[nlocal] = -1; - else if (ellipsoid[nlocal] == 1) ellipsoid[nlocal] = 0; - else error->one(FLERR,"Invalid atom type in Atoms section of data file"); - - rmass[nlocal] = utils::numeric(FLERR,values[1],true,lmp); - if (rmass[nlocal] <= 0.0) - error->one(FLERR,"Invalid density in Atoms section of data file"); - - return 2; -} - /* ---------------------------------------------------------------------- unpack one line from Ellipsoids section of data file ------------------------------------------------------------------------- */ void AtomVecEllipsoid::data_atom_bonus(int m, char **values) { + int *ellipsoid = atom->ellipsoid; + if (ellipsoid[m]) error->one(FLERR,"Assigning ellipsoid parameters to non-ellipsoid atom"); @@ -1227,184 +414,113 @@ void AtomVecEllipsoid::data_atom_bonus(int m, char **values) // reset ellipsoid mass // previously stored density in rmass - rmass[m] *= 4.0*MY_PI/3.0 * shape[0]*shape[1]*shape[2]; + atom->rmass[m] *= 4.0*MY_PI/3.0 * shape[0]*shape[1]*shape[2]; bonus[nlocal_bonus].ilocal = m; ellipsoid[m] = nlocal_bonus++; } /* ---------------------------------------------------------------------- - unpack one line from Velocities section of data file + return # of bytes of allocated bonus memory ------------------------------------------------------------------------- */ -void AtomVecEllipsoid::data_vel(int m, char **values) +bigint AtomVecEllipsoid::memory_usage_bonus() { - v[m][0] = utils::numeric(FLERR,values[0],true,lmp); - v[m][1] = utils::numeric(FLERR,values[1],true,lmp); - v[m][2] = utils::numeric(FLERR,values[2],true,lmp); - angmom[m][0] = utils::numeric(FLERR,values[3],true,lmp); - angmom[m][1] = utils::numeric(FLERR,values[4],true,lmp); - angmom[m][2] = utils::numeric(FLERR,values[5],true,lmp); + bigint bytes = 0; + bytes += nmax_bonus*sizeof(Bonus); + return bytes; } /* ---------------------------------------------------------------------- - unpack hybrid quantities from one line in Velocities section of data file + initialize non-zero atom quantities ------------------------------------------------------------------------- */ -int AtomVecEllipsoid::data_vel_hybrid(int m, char **values) +void AtomVecEllipsoid::create_atom_post(int ilocal) { - angmom[m][0] = utils::numeric(FLERR,values[0],true,lmp); - angmom[m][1] = utils::numeric(FLERR,values[1],true,lmp); - angmom[m][2] = utils::numeric(FLERR,values[2],true,lmp); - return 3; + atom->rmass[ilocal] = 1.0; + atom->ellipsoid[ilocal] = -1; } /* ---------------------------------------------------------------------- - pack atom info for data file including 3 image flags + modify what AtomVec::data_atom() just unpacked + or initialize other atom quantities ------------------------------------------------------------------------- */ -void AtomVecEllipsoid::pack_data(double **buf) +void AtomVecEllipsoid::data_atom_post(int ilocal) { - double *shape; - - int nlocal = atom->nlocal; - for (int i = 0; i < nlocal; i++) { - buf[i][0] = ubuf(tag[i]).d; - buf[i][1] = ubuf(type[i]).d; - if (ellipsoid[i] < 0) buf[i][2] = ubuf(0).d; - else buf[i][2] = ubuf(1).d; - if (ellipsoid[i] < 0) buf[i][3] = rmass[i]; - else { - shape = bonus[ellipsoid[i]].shape; - buf[i][3] = rmass[i] / (4.0*MY_PI/3.0 * shape[0]*shape[1]*shape[2]); - } - buf[i][4] = x[i][0]; - buf[i][5] = x[i][1]; - buf[i][6] = x[i][2]; - buf[i][7] = ubuf((image[i] & IMGMASK) - IMGMAX).d; - buf[i][8] = ubuf((image[i] >> IMGBITS & IMGMASK) - IMGMAX).d; - buf[i][9] = ubuf((image[i] >> IMG2BITS) - IMGMAX).d; - } -} - -/* ---------------------------------------------------------------------- - pack hybrid atom info for data file -------------------------------------------------------------------------- */ + ellipsoid_flag = atom->ellipsoid[ilocal]; + if (ellipsoid_flag == 0) ellipsoid_flag = -1; + else if (ellipsoid_flag == 1) ellipsoid_flag = 0; + else error->one(FLERR,"Invalid ellipsoid flag in Atoms section of data file"); + atom->ellipsoid[ilocal] = ellipsoid_flag; -int AtomVecEllipsoid::pack_data_hybrid(int i, double *buf) -{ - if (ellipsoid[i] < 0) buf[0] = ubuf(0).d; - else buf[0] = ubuf(1).d; - if (ellipsoid[i] < 0) buf[1] = rmass[i]; - else { - double *shape = bonus[ellipsoid[i]].shape; - buf[1] = rmass[i] / (4.0*MY_PI/3.0 * shape[0]*shape[1]*shape[2]); - } - return 2; + if (atom->rmass[ilocal] <= 0.0) + error->one(FLERR,"Invalid density in Atoms section of data file"); } /* ---------------------------------------------------------------------- - write atom info to data file including 3 image flags + modify values for AtomVec::pack_data() to pack ------------------------------------------------------------------------- */ -void AtomVecEllipsoid::write_data(FILE *fp, int n, double **buf) -{ - for (int i = 0; i < n; i++) - fprintf(fp,TAGINT_FORMAT - " %d %d %-1.16e %-1.16e %-1.16e %-1.16e %d %d %d\n", - (tagint) ubuf(buf[i][0]).i,(int) ubuf(buf[i][1]).i, - (int) ubuf(buf[i][2]).i, - buf[i][3],buf[i][4],buf[i][5],buf[i][6], - (int) ubuf(buf[i][7]).i,(int) ubuf(buf[i][8]).i, - (int) ubuf(buf[i][9]).i); -} - -/* ---------------------------------------------------------------------- - write hybrid atom info to data file -------------------------------------------------------------------------- */ +void AtomVecEllipsoid::pack_data_pre(int ilocal) +{ + double *shape; -int AtomVecEllipsoid::write_data_hybrid(FILE *fp, double *buf) -{ - fprintf(fp," %d %-1.16e",(int) ubuf(buf[0]).i,buf[1]); - return 2; -} + ellipsoid_flag = atom->ellipsoid[ilocal]; + rmass = atom->rmass[ilocal]; -/* ---------------------------------------------------------------------- - pack velocity info for data file -------------------------------------------------------------------------- */ + if (ellipsoid_flag < 0) atom->ellipsoid[ilocal] = 0; + else atom->ellipsoid[ilocal] = 1; -void AtomVecEllipsoid::pack_vel(double **buf) -{ - int nlocal = atom->nlocal; - for (int i = 0; i < nlocal; i++) { - buf[i][0] = ubuf(tag[i]).d; - buf[i][1] = v[i][0]; - buf[i][2] = v[i][1]; - buf[i][3] = v[i][2]; - buf[i][4] = angmom[i][0]; - buf[i][5] = angmom[i][1]; - buf[i][6] = angmom[i][2]; + if (ellipsoid_flag >= 0) { + shape = bonus[ellipsoid_flag].shape; + atom->rmass[ilocal] /= 4.0*MY_PI/3.0 * shape[0]*shape[1]*shape[2]; } } /* ---------------------------------------------------------------------- - pack hybrid velocity info for data file + unmodify values packed by AtomVec::pack_data() ------------------------------------------------------------------------- */ -int AtomVecEllipsoid::pack_vel_hybrid(int i, double *buf) -{ - buf[0] = angmom[i][0]; - buf[1] = angmom[i][1]; - buf[2] = angmom[i][2]; - return 3; +void AtomVecEllipsoid::pack_data_post(int ilocal) +{ + atom->ellipsoid[ilocal] = ellipsoid_flag; + atom->rmass[ilocal] = rmass; } /* ---------------------------------------------------------------------- - write velocity info to data file -------------------------------------------------------------------------- */ - -void AtomVecEllipsoid::write_vel(FILE *fp, int n, double **buf) -{ - for (int i = 0; i < n; i++) - fprintf(fp,TAGINT_FORMAT - " %-1.16e %-1.16e %-1.16e %-1.16e %-1.16e %-1.16e\n", - (tagint) ubuf(buf[i][0]).i,buf[i][1],buf[i][2],buf[i][3], - buf[i][4],buf[i][5],buf[i][6]); -} - -/* ---------------------------------------------------------------------- - write hybrid velocity info to data file -------------------------------------------------------------------------- */ - -int AtomVecEllipsoid::write_vel_hybrid(FILE *fp, double *buf) -{ - fprintf(fp," %-1.16e %-1.16e %-1.16e",buf[0],buf[1],buf[2]); - return 3; -} - -/* ---------------------------------------------------------------------- - return # of bytes of allocated memory + set shape values in bonus data for particle I + oriented aligned with xyz axes + this may create or delete entry in bonus data ------------------------------------------------------------------------- */ -bigint AtomVecEllipsoid::memory_usage() +void AtomVecEllipsoid:: +set_shape(int i, double shapex, double shapey, double shapez) { - bigint bytes = 0; - - if (atom->memcheck("tag")) bytes += memory->usage(tag,nmax); - if (atom->memcheck("type")) bytes += memory->usage(type,nmax); - if (atom->memcheck("mask")) bytes += memory->usage(mask,nmax); - if (atom->memcheck("image")) bytes += memory->usage(image,nmax); - if (atom->memcheck("x")) bytes += memory->usage(x,nmax,3); - if (atom->memcheck("v")) bytes += memory->usage(v,nmax,3); - if (atom->memcheck("f")) bytes += memory->usage(f,nmax*comm->nthreads,3); - - if (atom->memcheck("rmass")) bytes += memory->usage(rmass,nmax); - if (atom->memcheck("angmom")) bytes += memory->usage(angmom,nmax,3); - if (atom->memcheck("torque")) - bytes += memory->usage(torque,nmax*comm->nthreads,3); - if (atom->memcheck("ellipsoid")) bytes += memory->usage(ellipsoid,nmax); - - bytes += nmax_bonus*sizeof(Bonus); + int *ellipsoid = atom->ellipsoid; - return bytes; + if (ellipsoid[i] < 0) { + if (shapex == 0.0 && shapey == 0.0 && shapez == 0.0) return; + if (nlocal_bonus == nmax_bonus) grow_bonus(); + double *shape = bonus[nlocal_bonus].shape; + double *quat = bonus[nlocal_bonus].quat; + shape[0] = shapex; + shape[1] = shapey; + shape[2] = shapez; + quat[0] = 1.0; + quat[1] = 0.0; + quat[2] = 0.0; + quat[3] = 0.0; + bonus[nlocal_bonus].ilocal = i; + ellipsoid[i] = nlocal_bonus++; + } else if (shapex == 0.0 && shapey == 0.0 && shapez == 0.0) { + copy_bonus_all(nlocal_bonus-1,ellipsoid[i]); + nlocal_bonus--; + ellipsoid[i] = -1; + } else { + double *shape = bonus[ellipsoid[i]].shape; + shape[0] = shapex; + shape[1] = shapey; + shape[2] = shapez; + } } diff --git a/src/atom_vec_ellipsoid.h b/src/atom_vec_ellipsoid.h index d71859624e..70797c59d5 100644 --- a/src/atom_vec_ellipsoid.h +++ b/src/atom_vec_ellipsoid.h @@ -35,49 +35,26 @@ class AtomVecEllipsoid : public AtomVec { AtomVecEllipsoid(class LAMMPS *); ~AtomVecEllipsoid(); - void grow(int); - void grow_reset(); - void copy(int, int, int); - int pack_comm(int, int *, double *, int, int *); - int pack_comm_vel(int, int *, double *, int, int *); - int pack_comm_hybrid(int, int *, double *); - void unpack_comm(int, int, double *); - void unpack_comm_vel(int, int, double *); - int unpack_comm_hybrid(int, int, double *); - int pack_reverse(int, int, double *); - int pack_reverse_hybrid(int, int, double *); - void unpack_reverse(int, int *, double *); - int unpack_reverse_hybrid(int, int *, double *); - int pack_border(int, int *, double *, int, int *); - int pack_border_vel(int, int *, double *, int, int *); - int pack_border_hybrid(int, int *, double *); - void unpack_border(int, int, double *); - void unpack_border_vel(int, int, double *); - int unpack_border_hybrid(int, int, double *); - int pack_exchange(int, double *); - int unpack_exchange(double *); - int size_restart(); - int pack_restart(int, double *); - int unpack_restart(double *); - void create_atom(int, double *); - void data_atom(double *, imageint, char **); - int data_atom_hybrid(int, char **); - void data_vel(int, char **); - int data_vel_hybrid(int, char **); - void pack_data(double **); - int pack_data_hybrid(int, double *); - void write_data(FILE *, int, double **); - int write_data_hybrid(FILE *, double *); - void pack_vel(double **); - int pack_vel_hybrid(int, double *); - void write_vel(FILE *, int, double **); - int write_vel_hybrid(FILE *, double *); - bigint memory_usage(); - - // manipulate Bonus data structure for extra atom info + void copy_bonus(int, int, int); void clear_bonus(); + int pack_comm_bonus(int, int *, double *); + void unpack_comm_bonus(int, int, double *); + int pack_reverse_bonus(int, int, double *); + int pack_border_bonus(int, int *, double *); + int unpack_border_bonus(int, int, double *); + int pack_exchange_bonus(int, double *); + int unpack_exchange_bonus(int, double *); + int size_restart_bonus(); + int pack_restart_bonus(int, double *); + int unpack_restart_bonus(int, double *); void data_atom_bonus(int, char **); + bigint memory_usage_bonus(); + + void create_atom_post(int); + void data_atom_post(int); + void pack_data_pre(int); + void pack_data_post(int); // unique to AtomVecEllipsoid @@ -86,18 +63,12 @@ class AtomVecEllipsoid : public AtomVec { int nlocal_bonus; private: - tagint *tag; - int *type,*mask; - imageint *image; - double **x,**v,**f; - double *rmass; - double **angmom,**torque; - int *ellipsoid; - int nghost_bonus,nmax_bonus; + int ellipsoid_flag; + double rmass; void grow_bonus(); - void copy_bonus(int, int); + void copy_bonus_all(int, int); }; } diff --git a/src/atom_vec_line.cpp b/src/atom_vec_line.cpp index 695ced13fd..3b806c959e 100644 --- a/src/atom_vec_line.cpp +++ b/src/atom_vec_line.cpp @@ -15,7 +15,6 @@ #include #include #include "atom.h" -#include "comm.h" #include "domain.h" #include "modify.h" #include "fix.h" @@ -34,16 +33,12 @@ using namespace MathConst; AtomVecLine::AtomVecLine(LAMMPS *lmp) : AtomVec(lmp) { molecular = 0; + bonus_flag = 1; - comm_x_only = comm_f_only = 0; - size_forward = 4; - size_reverse = 6; - size_border = 12; - size_velocity = 6; - size_data_atom = 8; - size_data_vel = 7; + size_forward_bonus = 1; + size_border_bonus = 3; + size_restart_bonus_one = 2; size_data_bonus = 5; - xcol_data = 6; atom->line_flag = 1; atom->molecule_flag = atom->rmass_flag = 1; @@ -52,6 +47,26 @@ AtomVecLine::AtomVecLine(LAMMPS *lmp) : AtomVec(lmp) nlocal_bonus = nghost_bonus = nmax_bonus = 0; bonus = NULL; + + // strings with peratom variables to include in each AtomVec method + // strings cannot contain fields in corresponding AtomVec default strings + // order of fields in the string does not matter + // except fields_data_atom and fields_data_vel which must match data file + + fields_grow = (char *) "molecule radius rmass omega torque line"; + fields_copy = (char *) "molecule radius rmass omega"; + fields_comm = NULL; + fields_comm_vel = (char *) "omega"; + fields_reverse = (char *) "torque"; + fields_border = (char *) "molecule radius rmass"; + fields_border_vel = (char *) "molecule radius rmass omega"; + fields_exchange = (char *) "molecule radius rmass omega"; + fields_restart = (char *) "molecule radius rmass omega"; + fields_create = (char *) "molecule radius rmass omega line"; + fields_data_atom = (char *) "id molecule type line rmass x"; + fields_data_vel = (char *) "omega"; + + setup_fields(); } /* ---------------------------------------------------------------------- */ @@ -71,54 +86,6 @@ void AtomVecLine::init() error->all(FLERR,"Atom_style line can only be used in 2d simulations"); } -/* ---------------------------------------------------------------------- - grow atom arrays - n = 0 grows arrays by a chunk - n > 0 allocates arrays to size n -------------------------------------------------------------------------- */ - -void AtomVecLine::grow(int n) -{ - if (n == 0) grow_nmax(); - else nmax = n; - atom->nmax = nmax; - if (nmax < 0 || nmax > MAXSMALLINT) - error->one(FLERR,"Per-processor system is too big"); - - tag = memory->grow(atom->tag,nmax,"atom:tag"); - type = memory->grow(atom->type,nmax,"atom:type"); - mask = memory->grow(atom->mask,nmax,"atom:mask"); - image = memory->grow(atom->image,nmax,"atom:image"); - x = memory->grow(atom->x,nmax,3,"atom:x"); - v = memory->grow(atom->v,nmax,3,"atom:v"); - f = memory->grow(atom->f,nmax*comm->nthreads,3,"atom:f"); - - molecule = memory->grow(atom->molecule,nmax,"atom:molecule"); - rmass = memory->grow(atom->rmass,nmax,"atom:rmass"); - radius = memory->grow(atom->radius,nmax,"atom:radius"); - omega = memory->grow(atom->omega,nmax,3,"atom:omega"); - torque = memory->grow(atom->torque,nmax*comm->nthreads,3,"atom:torque"); - line = memory->grow(atom->line,nmax,"atom:line"); - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - modify->fix[atom->extra_grow[iextra]]->grow_arrays(nmax); -} - -/* ---------------------------------------------------------------------- - reset local array ptrs -------------------------------------------------------------------------- */ - -void AtomVecLine::grow_reset() -{ - tag = atom->tag; type = atom->type; - mask = atom->mask; image = atom->image; - x = atom->x; v = atom->v; f = atom->f; - molecule = atom->molecule; rmass = atom->rmass; - radius = atom->radius; omega = atom->omega; torque = atom->torque; - line = atom->line; -} - /* ---------------------------------------------------------------------- grow bonus data structure ------------------------------------------------------------------------- */ @@ -137,30 +104,14 @@ void AtomVecLine::grow_bonus() copy atom I info to atom J ------------------------------------------------------------------------- */ -void AtomVecLine::copy(int i, int j, int delflag) +void AtomVecLine::copy_bonus(int i, int j, int delflag) { - tag[j] = tag[i]; - type[j] = type[i]; - mask[j] = mask[i]; - image[j] = image[i]; - x[j][0] = x[i][0]; - x[j][1] = x[i][1]; - x[j][2] = x[i][2]; - v[j][0] = v[i][0]; - v[j][1] = v[i][1]; - v[j][2] = v[i][2]; - - molecule[j] = molecule[i]; - rmass[j] = rmass[i]; - radius[j] = radius[i]; - omega[j][0] = omega[i][0]; - omega[j][1] = omega[i][1]; - omega[j][2] = omega[i][2]; + int *line = atom->line; // if deleting atom J via delflag and J has bonus data, then delete it if (delflag && line[j] >= 0) { - copy_bonus(nlocal_bonus-1,line[j]); + copy_bonus_all(nlocal_bonus-1,line[j]); nlocal_bonus--; } @@ -169,10 +120,6 @@ void AtomVecLine::copy(int i, int j, int delflag) if (line[i] >= 0 && i != j) bonus[line[i]].ilocal = j; line[j] = line[i]; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - modify->fix[atom->extra_grow[iextra]]->copy_arrays(i,j,delflag); } /* ---------------------------------------------------------------------- @@ -180,9 +127,9 @@ void AtomVecLine::copy(int i, int j, int delflag) also reset line that points to I to now point to J ------------------------------------------------------------------------- */ -void AtomVecLine::copy_bonus(int i, int j) +void AtomVecLine::copy_bonus_all(int i, int j) { - line[bonus[i].ilocal] = j; + atom->line[bonus[i].ilocal] = j; memcpy(&bonus[j],&bonus[i],sizeof(Bonus)); } @@ -200,473 +147,49 @@ void AtomVecLine::clear_bonus() modify->fix[atom->extra_grow[iextra]]->clear_bonus(); } -/* ---------------------------------------------------------------------- - set length value in bonus data for particle I - oriented along x axis - this may create or delete entry in bonus data -------------------------------------------------------------------------- */ - -void AtomVecLine::set_length(int i, double value) -{ - if (line[i] < 0) { - if (value == 0.0) return; - if (nlocal_bonus == nmax_bonus) grow_bonus(); - bonus[nlocal_bonus].length = value; - bonus[nlocal_bonus].theta = 0.0; - bonus[nlocal_bonus].ilocal = i; - line[i] = nlocal_bonus++; - } else if (value == 0.0) { - copy_bonus(nlocal_bonus-1,line[i]); - nlocal_bonus--; - line[i] = -1; - } else bonus[line[i]].length = value; - - // also set radius = half of length - // unless value = 0.0, then set diameter = 1.0 - - radius[i] = 0.5 * value; - if (value == 0.0) radius[i] = 0.5; -} - /* ---------------------------------------------------------------------- */ -int AtomVecLine::pack_comm(int n, int *list, double *buf, - int pbc_flag, int *pbc) +int AtomVecLine::pack_comm_bonus(int n, int *list, double *buf) { int i,j,m; - double dx,dy,dz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - if (line[j] >= 0) buf[m++] = bonus[line[j]].theta; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]*domain->xprd + pbc[5]*domain->xy + pbc[4]*domain->xz; - dy = pbc[1]*domain->yprd + pbc[3]*domain->yz; - dz = pbc[2]*domain->zprd; - } - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - if (line[j] >= 0) buf[m++] = bonus[line[j]].theta; - } - } - - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecLine::pack_comm_vel(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz,dvx,dvy,dvz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - if (line[j] >= 0) buf[m++] = bonus[line[j]].theta; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - buf[m++] = omega[j][0]; - buf[m++] = omega[j][1]; - buf[m++] = omega[j][2]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]*domain->xprd + pbc[5]*domain->xy + pbc[4]*domain->xz; - dy = pbc[1]*domain->yprd + pbc[3]*domain->yz; - dz = pbc[2]*domain->zprd; - } - if (!deform_vremap) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - if (line[j] >= 0) buf[m++] = bonus[line[j]].theta; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - buf[m++] = omega[j][0]; - buf[m++] = omega[j][1]; - buf[m++] = omega[j][2]; - } - } else { - dvx = pbc[0]*h_rate[0] + pbc[5]*h_rate[5] + pbc[4]*h_rate[4]; - dvy = pbc[1]*h_rate[1] + pbc[3]*h_rate[3]; - dvz = pbc[2]*h_rate[2]; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - if (line[j] >= 0) buf[m++] = bonus[line[j]].theta; - if (mask[i] & deform_groupbit) { - buf[m++] = v[j][0] + dvx; - buf[m++] = v[j][1] + dvy; - buf[m++] = v[j][2] + dvz; - } else { - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - buf[m++] = omega[j][0]; - buf[m++] = omega[j][1]; - buf[m++] = omega[j][2]; - } - } - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecLine::pack_comm_hybrid(int n, int *list, double *buf) -{ - int i,j,m; + int *line = atom->line; m = 0; for (i = 0; i < n; i++) { j = list[i]; if (line[j] >= 0) buf[m++] = bonus[line[j]].theta; } - return m; -} - -/* ---------------------------------------------------------------------- */ -void AtomVecLine::unpack_comm(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - if (line[i] >= 0) bonus[line[i]].theta = buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecLine::unpack_comm_vel(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - if (line[i] >= 0) bonus[line[i]].theta = buf[m++]; - v[i][0] = buf[m++]; - v[i][1] = buf[m++]; - v[i][2] = buf[m++]; - omega[i][0] = buf[m++]; - omega[i][1] = buf[m++]; - omega[i][2] = buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecLine::unpack_comm_hybrid(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) - if (line[i] >= 0) bonus[line[i]].theta = buf[m++]; return m; } /* ---------------------------------------------------------------------- */ -int AtomVecLine::pack_reverse(int n, int first, double *buf) +void AtomVecLine::unpack_comm_bonus(int n, int first, double *buf) { int i,m,last; - m = 0; - last = first + n; - for (i = first; i < last; i++) { - buf[m++] = f[i][0]; - buf[m++] = f[i][1]; - buf[m++] = f[i][2]; - buf[m++] = torque[i][0]; - buf[m++] = torque[i][1]; - buf[m++] = torque[i][2]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecLine::pack_reverse_hybrid(int n, int first, double *buf) -{ - int i,m,last; + int *line = atom->line; m = 0; last = first + n; for (i = first; i < last; i++) { - buf[m++] = torque[i][0]; - buf[m++] = torque[i][1]; - buf[m++] = torque[i][2]; + if (line[i] >= 0) bonus[line[i]].theta = buf[m++]; } - return m; } /* ---------------------------------------------------------------------- */ -void AtomVecLine::unpack_reverse(int n, int *list, double *buf) +int AtomVecLine::pack_border_bonus(int n, int *list, double *buf) { int i,j,m; - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - f[j][0] += buf[m++]; - f[j][1] += buf[m++]; - f[j][2] += buf[m++]; - torque[j][0] += buf[m++]; - torque[j][1] += buf[m++]; - torque[j][2] += buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecLine::unpack_reverse_hybrid(int n, int *list, double *buf) -{ - int i,j,m; + int *line = atom->line; m = 0; for (i = 0; i < n; i++) { j = list[i]; - torque[j][0] += buf[m++]; - torque[j][1] += buf[m++]; - torque[j][2] += buf[m++]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecLine::pack_border(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = ubuf(molecule[j]).d; - buf[m++] = radius[j]; - buf[m++] = rmass[j]; - if (line[j] < 0) buf[m++] = ubuf(0).d; - else { - buf[m++] = ubuf(1).d; - buf[m++] = bonus[line[j]].length; - buf[m++] = bonus[line[j]].theta; - } - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]; - dy = pbc[1]; - dz = pbc[2]; - } - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = ubuf(molecule[j]).d; - buf[m++] = radius[j]; - buf[m++] = rmass[j]; - if (line[j] < 0) buf[m++] = ubuf(0).d; - else { - buf[m++] = ubuf(1).d; - buf[m++] = bonus[line[j]].length; - buf[m++] = bonus[line[j]].theta; - } - } - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); - - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecLine::pack_border_vel(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz,dvx,dvy,dvz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = ubuf(molecule[j]).d; - buf[m++] = radius[j]; - buf[m++] = rmass[j]; - if (line[j] < 0) buf[m++] = ubuf(0).d; - else { - buf[m++] = ubuf(1).d; - buf[m++] = bonus[line[j]].length; - buf[m++] = bonus[line[j]].theta; - } - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - buf[m++] = omega[j][0]; - buf[m++] = omega[j][1]; - buf[m++] = omega[j][2]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]; - dy = pbc[1]; - dz = pbc[2]; - } - if (!deform_vremap) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = ubuf(molecule[j]).d; - buf[m++] = radius[j]; - buf[m++] = rmass[j]; - if (line[j] < 0) buf[m++] = ubuf(0).d; - else { - buf[m++] = ubuf(1).d; - buf[m++] = bonus[line[j]].length; - buf[m++] = bonus[line[j]].theta; - } - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - buf[m++] = omega[j][0]; - buf[m++] = omega[j][1]; - buf[m++] = omega[j][2]; - } - } else { - dvx = pbc[0]*h_rate[0] + pbc[5]*h_rate[5] + pbc[4]*h_rate[4]; - dvy = pbc[1]*h_rate[1] + pbc[3]*h_rate[3]; - dvz = pbc[2]*h_rate[2]; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = ubuf(molecule[j]).d; - buf[m++] = radius[j]; - buf[m++] = rmass[j]; - if (line[j] < 0) buf[m++] = ubuf(0).d; - else { - buf[m++] = ubuf(1).d; - buf[m++] = bonus[line[j]].length; - buf[m++] = bonus[line[j]].theta; - } - if (mask[i] & deform_groupbit) { - buf[m++] = v[j][0] + dvx; - buf[m++] = v[j][1] + dvy; - buf[m++] = v[j][2] + dvz; - } else { - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - buf[m++] = omega[j][0]; - buf[m++] = omega[j][1]; - buf[m++] = omega[j][2]; - } - } - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); - - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecLine::pack_border_hybrid(int n, int *list, double *buf) -{ - int i,j,m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = ubuf(molecule[j]).d; - buf[m++] = radius[j]; - buf[m++] = rmass[j]; if (line[j] < 0) buf[m++] = ubuf(0).d; else { buf[m++] = ubuf(1).d; @@ -674,66 +197,21 @@ int AtomVecLine::pack_border_hybrid(int n, int *list, double *buf) buf[m++] = bonus[line[j]].theta; } } + return m; } /* ---------------------------------------------------------------------- */ -void AtomVecLine::unpack_border(int n, int first, double *buf) +int AtomVecLine::unpack_border_bonus(int n, int first, double *buf) { int i,j,m,last; - m = 0; - last = first + n; - for (i = first; i < last; i++) { - if (i == nmax) grow(0); - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - tag[i] = (tagint) ubuf(buf[m++]).i; - type[i] = (int) ubuf(buf[m++]).i; - mask[i] = (int) ubuf(buf[m++]).i; - molecule[i] = (tagint) ubuf(buf[m++]).i; - radius[i] = buf[m++]; - rmass[i] = buf[m++]; - line[i] = (int) ubuf(buf[m++]).i; - if (line[i] == 0) line[i] = -1; - else { - j = nlocal_bonus + nghost_bonus; - if (j == nmax_bonus) grow_bonus(); - bonus[j].length = buf[m++]; - bonus[j].theta = buf[m++]; - bonus[j].ilocal = i; - line[i] = j; - nghost_bonus++; - } - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]-> - unpack_border(n,first,&buf[m]); -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecLine::unpack_border_vel(int n, int first, double *buf) -{ - int i,j,m,last; + int *line = atom->line; m = 0; last = first + n; for (i = first; i < last; i++) { - if (i == nmax) grow(0); - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - tag[i] = (tagint) ubuf(buf[m++]).i; - type[i] = (int) ubuf(buf[m++]).i; - mask[i] = (int) ubuf(buf[m++]).i; - molecule[i] = (tagint) ubuf(buf[m++]).i; - radius[i] = buf[m++]; - rmass[i] = buf[m++]; line[i] = (int) ubuf(buf[m++]).i; if (line[i] == 0) line[i] = -1; else { @@ -745,44 +223,8 @@ void AtomVecLine::unpack_border_vel(int n, int first, double *buf) line[i] = j; nghost_bonus++; } - v[i][0] = buf[m++]; - v[i][1] = buf[m++]; - v[i][2] = buf[m++]; - omega[i][0] = buf[m++]; - omega[i][1] = buf[m++]; - omega[i][2] = buf[m++]; } - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]-> - unpack_border(n,first,&buf[m]); -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecLine::unpack_border_hybrid(int n, int first, double *buf) -{ - int i,j,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - molecule[i] = (tagint) ubuf(buf[m++]).i; - radius[i] = buf[m++]; - rmass[i] = buf[m++]; - line[i] = (int) ubuf(buf[m++]).i; - if (line[i] == 0) line[i] = -1; - else { - j = nlocal_bonus + nghost_bonus; - if (j == nmax_bonus) grow_bonus(); - bonus[j].length = buf[m++]; - bonus[j].theta = buf[m++]; - bonus[j].ilocal = i; - line[i] = j; - nghost_bonus++; - } - } return m; } @@ -791,26 +233,11 @@ int AtomVecLine::unpack_border_hybrid(int n, int first, double *buf) xyz must be 1st 3 values, so comm::exchange() can test on them ------------------------------------------------------------------------- */ -int AtomVecLine::pack_exchange(int i, double *buf) +int AtomVecLine::pack_exchange_bonus(int i, double *buf) { - int m = 1; - buf[m++] = x[i][0]; - buf[m++] = x[i][1]; - buf[m++] = x[i][2]; - buf[m++] = v[i][0]; - buf[m++] = v[i][1]; - buf[m++] = v[i][2]; - buf[m++] = ubuf(tag[i]).d; - buf[m++] = ubuf(type[i]).d; - buf[m++] = ubuf(mask[i]).d; - buf[m++] = ubuf(image[i]).d; - - buf[m++] = ubuf(molecule[i]).d; - buf[m++] = rmass[i]; - buf[m++] = radius[i]; - buf[m++] = omega[i][0]; - buf[m++] = omega[i][1]; - buf[m++] = omega[i][2]; + int m = 0; + + int *line = atom->line; if (line[i] < 0) buf[m++] = ubuf(0).d; else { @@ -820,56 +247,27 @@ int AtomVecLine::pack_exchange(int i, double *buf) buf[m++] = bonus[j].theta; } - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - m += modify->fix[atom->extra_grow[iextra]]->pack_exchange(i,&buf[m]); - - buf[0] = m; return m; } /* ---------------------------------------------------------------------- */ -int AtomVecLine::unpack_exchange(double *buf) +int AtomVecLine::unpack_exchange_bonus(int ilocal, double *buf) { - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - int m = 1; - x[nlocal][0] = buf[m++]; - x[nlocal][1] = buf[m++]; - x[nlocal][2] = buf[m++]; - v[nlocal][0] = buf[m++]; - v[nlocal][1] = buf[m++]; - v[nlocal][2] = buf[m++]; - tag[nlocal] = (tagint) ubuf(buf[m++]).i; - type[nlocal] = (int) ubuf(buf[m++]).i; - mask[nlocal] = (int) ubuf(buf[m++]).i; - image[nlocal] = (imageint) ubuf(buf[m++]).i; - - molecule[nlocal] = (tagint) ubuf(buf[m++]).i; - rmass[nlocal] = buf[m++]; - radius[nlocal] = buf[m++]; - omega[nlocal][0] = buf[m++]; - omega[nlocal][1] = buf[m++]; - omega[nlocal][2] = buf[m++]; - - line[nlocal] = (int) ubuf(buf[m++]).i; - if (line[nlocal] == 0) line[nlocal] = -1; + int m = 0; + + int *line = atom->line; + + line[ilocal] = (int) ubuf(buf[m++]).i; + if (line[ilocal] == 0) line[ilocal] = -1; else { if (nlocal_bonus == nmax_bonus) grow_bonus(); bonus[nlocal_bonus].length = buf[m++]; bonus[nlocal_bonus].theta = buf[m++]; - bonus[nlocal_bonus].ilocal = nlocal; - line[nlocal] = nlocal_bonus++; + bonus[nlocal_bonus].ilocal = ilocal; + line[ilocal] = nlocal_bonus++; } - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - m += modify->fix[atom->extra_grow[iextra]]-> - unpack_exchange(nlocal,&buf[m]); - - atom->nlocal++; return m; } @@ -878,20 +276,18 @@ int AtomVecLine::unpack_exchange(double *buf) include extra data stored by fixes ------------------------------------------------------------------------- */ -int AtomVecLine::size_restart() +int AtomVecLine::size_restart_bonus() { int i; + int *line = atom->line; + int n = 0; int nlocal = atom->nlocal; - for (i = 0; i < nlocal; i++) - if (line[i] >= 0) n += 20; - else n += 18; - - if (atom->nextra_restart) - for (int iextra = 0; iextra < atom->nextra_restart; iextra++) - for (i = 0; i < nlocal; i++) - n += modify->fix[atom->extra_restart[iextra]]->size_restart(i); + for (i = 0; i < nlocal; i++) { + if (line[i] >= 0) n += size_restart_bonus_one; + n++; + } return n; } @@ -902,26 +298,11 @@ int AtomVecLine::size_restart() molecular types may be negative, but write as positive ------------------------------------------------------------------------- */ -int AtomVecLine::pack_restart(int i, double *buf) +int AtomVecLine::pack_restart_bonus(int i, double *buf) { - int m = 1; - buf[m++] = x[i][0]; - buf[m++] = x[i][1]; - buf[m++] = x[i][2]; - buf[m++] = ubuf(tag[i]).d; - buf[m++] = ubuf(type[i]).d; - buf[m++] = ubuf(mask[i]).d; - buf[m++] = ubuf(image[i]).d; - buf[m++] = v[i][0]; - buf[m++] = v[i][1]; - buf[m++] = v[i][2]; - - buf[m++] = ubuf(molecule[i]).d; - buf[m++] = rmass[i]; - buf[m++] = radius[i]; - buf[m++] = omega[i][0]; - buf[m++] = omega[i][1]; - buf[m++] = omega[i][2]; + int m = 0; + + int *line = atom->line; if (line[i] < 0) buf[m++] = ubuf(0).d; else { @@ -931,180 +312,40 @@ int AtomVecLine::pack_restart(int i, double *buf) buf[m++] = bonus[j].theta; } - if (atom->nextra_restart) - for (int iextra = 0; iextra < atom->nextra_restart; iextra++) - m += modify->fix[atom->extra_restart[iextra]]->pack_restart(i,&buf[m]); - - buf[0] = m; return m; } /* ---------------------------------------------------------------------- - unpack data for one atom from restart file including extra quantities + unpack data for one atom from restart file including bonus data ------------------------------------------------------------------------- */ -int AtomVecLine::unpack_restart(double *buf) +int AtomVecLine::unpack_restart_bonus(int ilocal, double *buf) { - int nlocal = atom->nlocal; - if (nlocal == nmax) { - grow(0); - if (atom->nextra_store) - memory->grow(atom->extra,nmax,atom->nextra_store,"atom:extra"); - } + int m = 0; + + int *line = atom->line; - int m = 1; - x[nlocal][0] = buf[m++]; - x[nlocal][1] = buf[m++]; - x[nlocal][2] = buf[m++]; - tag[nlocal] = (tagint) ubuf(buf[m++]).i; - type[nlocal] = (int) ubuf(buf[m++]).i; - mask[nlocal] = (int) ubuf(buf[m++]).i; - image[nlocal] = (imageint) ubuf(buf[m++]).i; - v[nlocal][0] = buf[m++]; - v[nlocal][1] = buf[m++]; - v[nlocal][2] = buf[m++]; - - molecule[nlocal] = (tagint) ubuf(buf[m++]).i; - rmass[nlocal] = buf[m++]; - radius[nlocal] = buf[m++]; - omega[nlocal][0] = buf[m++]; - omega[nlocal][1] = buf[m++]; - omega[nlocal][2] = buf[m++]; - - line[nlocal] = (int) ubuf(buf[m++]).i; - if (line[nlocal] == 0) line[nlocal] = -1; + line[ilocal] = (int) ubuf(buf[m++]).i; + if (line[ilocal] == 0) line[ilocal] = -1; else { if (nlocal_bonus == nmax_bonus) grow_bonus(); bonus[nlocal_bonus].length = buf[m++]; bonus[nlocal_bonus].theta = buf[m++]; - bonus[nlocal_bonus].ilocal = nlocal; - line[nlocal] = nlocal_bonus++; + bonus[nlocal_bonus].ilocal = ilocal; + line[ilocal] = nlocal_bonus++; } - double **extra = atom->extra; - if (atom->nextra_store) { - int size = static_cast (buf[0]) - m; - for (int i = 0; i < size; i++) extra[nlocal][i] = buf[m++]; - } - - atom->nlocal++; return m; } -/* ---------------------------------------------------------------------- - create one atom of itype at coord - set other values to defaults -------------------------------------------------------------------------- */ - -void AtomVecLine::create_atom(int itype, double *coord) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - tag[nlocal] = 0; - type[nlocal] = itype; - x[nlocal][0] = coord[0]; - x[nlocal][1] = coord[1]; - x[nlocal][2] = coord[2]; - mask[nlocal] = 1; - image[nlocal] = ((imageint) IMGMAX << IMG2BITS) | - ((imageint) IMGMAX << IMGBITS) | IMGMAX; - v[nlocal][0] = 0.0; - v[nlocal][1] = 0.0; - v[nlocal][2] = 0.0; - - molecule[nlocal] = 0; - radius[nlocal] = 0.5; - rmass[nlocal] = 4.0*MY_PI/3.0 * radius[nlocal]*radius[nlocal]*radius[nlocal]; - omega[nlocal][0] = 0.0; - omega[nlocal][1] = 0.0; - omega[nlocal][2] = 0.0; - line[nlocal] = -1; - - atom->nlocal++; -} - -/* ---------------------------------------------------------------------- - unpack one line from Atoms section of data file - initialize other atom quantities -------------------------------------------------------------------------- */ - -void AtomVecLine::data_atom(double *coord, imageint imagetmp, char **values) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - tag[nlocal] = utils::tnumeric(FLERR,values[0],true,lmp); - molecule[nlocal] = utils::tnumeric(FLERR,values[1],true,lmp); - type[nlocal] = utils::inumeric(FLERR,values[2],true,lmp); - if (type[nlocal] <= 0 || type[nlocal] > atom->ntypes) - error->one(FLERR,"Invalid atom type in Atoms section of data file"); - - line[nlocal] = utils::inumeric(FLERR,values[3],true,lmp); - if (line[nlocal] == 0) line[nlocal] = -1; - else if (line[nlocal] == 1) line[nlocal] = 0; - else error->one(FLERR,"Invalid lineflag in Atoms section of data file"); - - rmass[nlocal] = utils::numeric(FLERR,values[4],true,lmp); - if (rmass[nlocal] <= 0.0) - error->one(FLERR,"Invalid density in Atoms section of data file"); - - if (line[nlocal] < 0) { - radius[nlocal] = 0.5; - rmass[nlocal] *= 4.0*MY_PI/3.0 * - radius[nlocal]*radius[nlocal]*radius[nlocal]; - } else radius[nlocal] = 0.0; - - x[nlocal][0] = coord[0]; - x[nlocal][1] = coord[1]; - x[nlocal][2] = coord[2]; - - image[nlocal] = imagetmp; - - mask[nlocal] = 1; - v[nlocal][0] = 0.0; - v[nlocal][1] = 0.0; - v[nlocal][2] = 0.0; - omega[nlocal][0] = 0.0; - omega[nlocal][1] = 0.0; - omega[nlocal][2] = 0.0; - - atom->nlocal++; -} - -/* ---------------------------------------------------------------------- - unpack hybrid quantities from one line in Atoms section of data file - initialize other atom quantities for this sub-style -------------------------------------------------------------------------- */ - -int AtomVecLine::data_atom_hybrid(int nlocal, char **values) -{ - molecule[nlocal] = utils::tnumeric(FLERR,values[0],true,lmp); - - line[nlocal] = utils::inumeric(FLERR,values[1],true,lmp); - if (line[nlocal] == 0) line[nlocal] = -1; - else if (line[nlocal] == 1) line[nlocal] = 0; - else error->one(FLERR,"Invalid atom type in Atoms section of data file"); - - rmass[nlocal] = utils::numeric(FLERR,values[2],true,lmp); - if (rmass[nlocal] <= 0.0) - error->one(FLERR,"Invalid density in Atoms section of data file"); - - if (line[nlocal] < 0) { - radius[nlocal] = 0.5; - rmass[nlocal] *= 4.0*MY_PI/3.0 * - radius[nlocal]*radius[nlocal]*radius[nlocal]; - } else radius[nlocal] = 0.0; - - return 3; -} - /* ---------------------------------------------------------------------- unpack one line from Lines section of data file ------------------------------------------------------------------------- */ void AtomVecLine::data_atom_bonus(int m, char **values) { + int *line = atom->line; + if (line[m]) error->one(FLERR,"Assigning line parameters to non-line atom"); if (nlocal_bonus == nmax_bonus) grow_bonus(); @@ -1136,186 +377,120 @@ void AtomVecLine::data_atom_bonus(int m, char **values) // reset line radius and mass // rmass currently holds density - radius[m] = 0.5 * length; - rmass[m] *= length; + atom->radius[m] = 0.5 * length; + atom->rmass[m] *= length; bonus[nlocal_bonus].ilocal = m; line[m] = nlocal_bonus++; } /* ---------------------------------------------------------------------- - unpack one line from Velocities section of data file -------------------------------------------------------------------------- */ - -void AtomVecLine::data_vel(int m, char **values) -{ - v[m][0] = utils::numeric(FLERR,values[0],true,lmp); - v[m][1] = utils::numeric(FLERR,values[1],true,lmp); - v[m][2] = utils::numeric(FLERR,values[2],true,lmp); - omega[m][0] = utils::numeric(FLERR,values[3],true,lmp); - omega[m][1] = utils::numeric(FLERR,values[4],true,lmp); - omega[m][2] = utils::numeric(FLERR,values[5],true,lmp); -} - -/* ---------------------------------------------------------------------- - unpack hybrid quantities from one line in Velocities section of data file + return # of bytes of allocated bonus memory ------------------------------------------------------------------------- */ -int AtomVecLine::data_vel_hybrid(int m, char **values) +bigint AtomVecLine::memory_usage_bonus() { - omega[m][0] = utils::numeric(FLERR,values[0],true,lmp); - omega[m][1] = utils::numeric(FLERR,values[1],true,lmp); - omega[m][2] = utils::numeric(FLERR,values[2],true,lmp); - return 3; -} - -/* ---------------------------------------------------------------------- - pack atom info for data file including 3 image flags -------------------------------------------------------------------------- */ - -void AtomVecLine::pack_data(double **buf) -{ - int nlocal = atom->nlocal; - for (int i = 0; i < nlocal; i++) { - buf[i][0] = ubuf(tag[i]).d; - buf[i][1] = ubuf(molecule[i]).d; - buf[i][2] = ubuf(type[i]).d; - if (line[i] < 0) buf[i][3] = ubuf(0).d; - else buf[i][3] = ubuf(1).d; - if (line[i] < 0) - buf[i][4] = rmass[i] / (4.0*MY_PI/3.0 * radius[i]*radius[i]*radius[i]); - else buf[i][4] = rmass[i]/bonus[line[i]].length; - buf[i][5] = x[i][0]; - buf[i][6] = x[i][1]; - buf[i][7] = x[i][2]; - buf[i][8] = ubuf((image[i] & IMGMASK) - IMGMAX).d; - buf[i][9] = ubuf((image[i] >> IMGBITS & IMGMASK) - IMGMAX).d; - buf[i][10] = ubuf((image[i] >> IMG2BITS) - IMGMAX).d; - } + bigint bytes = 0; + bytes += nmax_bonus*sizeof(Bonus); + return bytes; } /* ---------------------------------------------------------------------- - pack hybrid atom info for data file + create one atom of itype at coord + set other values to defaults ------------------------------------------------------------------------- */ -int AtomVecLine::pack_data_hybrid(int i, double *buf) +void AtomVecLine::create_atom_post(int ilocal) { - buf[0] = ubuf(molecule[i]).d; - if (line[i] < 0) buf[1] = ubuf(0).d; - else buf[1] = ubuf(1).d; - if (line[i] < 0) - buf[2] = rmass[i] / (4.0*MY_PI/3.0 * radius[i]*radius[i]*radius[i]); - else buf[2] = rmass[i]/bonus[line[i]].length; - return 3; + double radius = 0.5; + atom->radius[ilocal] = radius; + atom->rmass[ilocal] = 4.0*MY_PI/3.0 * radius*radius*radius; + atom->line[ilocal] = -1; } /* ---------------------------------------------------------------------- - write atom info to data file including 3 image flags + modify what AtomVec::data_atom() just unpacked + or initialize other atom quantities ------------------------------------------------------------------------- */ -void AtomVecLine::write_data(FILE *fp, int n, double **buf) +void AtomVecLine::data_atom_post(int ilocal) { - for (int i = 0; i < n; i++) - fprintf(fp,TAGINT_FORMAT " " TAGINT_FORMAT - " %d %d %-1.16e %-1.16e %-1.16e %-1.16e %d %d %d\n", - (tagint) ubuf(buf[i][0]).i,(tagint) ubuf(buf[i][1]).i, - (int) ubuf(buf[i][2]).i,(int) ubuf(buf[i][3]).i, - buf[i][4],buf[i][5],buf[i][6],buf[i][7], - (int) ubuf(buf[i][8]).i,(int) ubuf(buf[i][9]).i, - (int) ubuf(buf[i][10]).i); -} + line_flag = atom->line[ilocal]; + if (line_flag == 0) line_flag = -1; + else if (line_flag == 1) line_flag = 0; + else error->one(FLERR,"Invalid line flag in Atoms section of data file"); + atom->line[ilocal] = line_flag; -/* ---------------------------------------------------------------------- - write hybrid atom info to data file -------------------------------------------------------------------------- */ + if (atom->rmass[ilocal] <= 0.0) + error->one(FLERR,"Invalid density in Atoms section of data file"); -int AtomVecLine::write_data_hybrid(FILE *fp, double *buf) -{ - fprintf(fp," " TAGINT_FORMAT " %d %-1.16e", - (tagint) ubuf(buf[0]).i,(int) ubuf(buf[1]).i,buf[2]); - return 3; -} + if (line_flag < 0) { + double radius = 0.5; + atom->radius[ilocal] = radius; + atom->rmass[ilocal] *= 4.0*MY_PI/3.0 * radius*radius*radius; + } else atom->radius[ilocal] = 0.0; -/* ---------------------------------------------------------------------- - pack velocity info for data file -------------------------------------------------------------------------- */ - -void AtomVecLine::pack_vel(double **buf) -{ - int nlocal = atom->nlocal; - for (int i = 0; i < nlocal; i++) { - buf[i][0] = ubuf(tag[i]).d; - buf[i][1] = v[i][0]; - buf[i][2] = v[i][1]; - buf[i][3] = v[i][2]; - buf[i][4] = omega[i][0]; - buf[i][5] = omega[i][1]; - buf[i][6] = omega[i][2]; - } + atom->omega[ilocal][0] = 0.0; + atom->omega[ilocal][1] = 0.0; + atom->omega[ilocal][2] = 0.0; } /* ---------------------------------------------------------------------- - pack hybrid velocity info for data file + modify values for AtomVec::pack_data() to pack ------------------------------------------------------------------------- */ -int AtomVecLine::pack_vel_hybrid(int i, double *buf) -{ - buf[0] = omega[i][0]; - buf[1] = omega[i][1]; - buf[2] = omega[i][2]; - return 3; -} +void AtomVecLine::pack_data_pre(int ilocal) +{ + line_flag = atom->line[ilocal]; + rmass = atom->rmass[ilocal]; -/* ---------------------------------------------------------------------- - write velocity info to data file -------------------------------------------------------------------------- */ + if (line_flag < 0) atom->line[ilocal] = 0; + else atom->line[ilocal] = 1; -void AtomVecLine::write_vel(FILE *fp, int n, double **buf) -{ - for (int i = 0; i < n; i++) - fprintf(fp,TAGINT_FORMAT - " %-1.16e %-1.16e %-1.16e %-1.16e %-1.16e %-1.16e\n", - (tagint) ubuf(buf[i][0]).i,buf[i][1],buf[i][2],buf[i][3], - buf[i][4],buf[i][5],buf[i][6]); + if (line_flag < 0) { + double radius = atom->radius[ilocal]; + atom->rmass[ilocal] /= 4.0*MY_PI/3.0 * radius*radius*radius; + } else atom->rmass[ilocal] /= bonus[line_flag].length; } /* ---------------------------------------------------------------------- - write hybrid velocity info to data file + unmodify values packed by AtomVec::pack_data() ------------------------------------------------------------------------- */ -int AtomVecLine::write_vel_hybrid(FILE *fp, double *buf) -{ - fprintf(fp," %-1.16e %-1.16e %-1.16e",buf[0],buf[1],buf[2]); - return 3; +void AtomVecLine::pack_data_post(int ilocal) +{ + atom->line[ilocal] = line_flag; + atom->rmass[ilocal] = rmass; } /* ---------------------------------------------------------------------- - return # of bytes of allocated memory + set length value in bonus data for particle I + oriented along x axis + this may create or delete entry in bonus data ------------------------------------------------------------------------- */ -bigint AtomVecLine::memory_usage() +void AtomVecLine::set_length(int i, double value) { - bigint bytes = 0; + int *line = atom->line; - if (atom->memcheck("tag")) bytes += memory->usage(tag,nmax); - if (atom->memcheck("type")) bytes += memory->usage(type,nmax); - if (atom->memcheck("mask")) bytes += memory->usage(mask,nmax); - if (atom->memcheck("image")) bytes += memory->usage(image,nmax); - if (atom->memcheck("x")) bytes += memory->usage(x,nmax,3); - if (atom->memcheck("v")) bytes += memory->usage(v,nmax,3); - if (atom->memcheck("f")) bytes += memory->usage(f,nmax*comm->nthreads,3); - - if (atom->memcheck("molecule")) bytes += memory->usage(molecule,nmax); - if (atom->memcheck("rmass")) bytes += memory->usage(rmass,nmax); - if (atom->memcheck("radius")) bytes += memory->usage(radius,nmax); - if (atom->memcheck("omega")) bytes += memory->usage(omega,nmax,3); - if (atom->memcheck("torque")) - bytes += memory->usage(torque,nmax*comm->nthreads,3); - if (atom->memcheck("line")) bytes += memory->usage(line,nmax); + if (line[i] < 0) { + if (value == 0.0) return; + if (nlocal_bonus == nmax_bonus) grow_bonus(); + bonus[nlocal_bonus].length = value; + bonus[nlocal_bonus].theta = 0.0; + bonus[nlocal_bonus].ilocal = i; + line[i] = nlocal_bonus++; + } else if (value == 0.0) { + copy_bonus_all(nlocal_bonus-1,line[i]); + nlocal_bonus--; + line[i] = -1; + } else bonus[line[i]].length = value; - bytes += nmax_bonus*sizeof(Bonus); + // also set radius = half of length + // unless value = 0.0, then set diameter = 1.0 - return bytes; + atom->radius[i] = 0.5 * value; + if (value == 0.0) atom->radius[i] = 0.5; } /* ---------------------------------------------------------------------- diff --git a/src/atom_vec_line.h b/src/atom_vec_line.h index 6c8701cfc2..a8bc8fd1bc 100644 --- a/src/atom_vec_line.h +++ b/src/atom_vec_line.h @@ -35,49 +35,26 @@ class AtomVecLine : public AtomVec { AtomVecLine(class LAMMPS *); ~AtomVecLine(); void init(); - void grow(int); - void grow_reset(); - void copy(int, int, int); - int pack_comm(int, int *, double *, int, int *); - int pack_comm_vel(int, int *, double *, int, int *); - int pack_comm_hybrid(int, int *, double *); - void unpack_comm(int, int, double *); - void unpack_comm_vel(int, int, double *); - int unpack_comm_hybrid(int, int, double *); - int pack_reverse(int, int, double *); - int pack_reverse_hybrid(int, int, double *); - void unpack_reverse(int, int *, double *); - int unpack_reverse_hybrid(int, int *, double *); - int pack_border(int, int *, double *, int, int *); - int pack_border_vel(int, int *, double *, int, int *); - int pack_border_hybrid(int, int *, double *); - void unpack_border(int, int, double *); - void unpack_border_vel(int, int, double *); - int unpack_border_hybrid(int, int, double *); - int pack_exchange(int, double *); - int unpack_exchange(double *); - int size_restart(); - int pack_restart(int, double *); - int unpack_restart(double *); - void create_atom(int, double *); - void data_atom(double *, imageint, char **); - int data_atom_hybrid(int, char **); - void data_vel(int, char **); - int data_vel_hybrid(int, char **); - void pack_data(double **); - int pack_data_hybrid(int, double *); - void write_data(FILE *, int, double **); - int write_data_hybrid(FILE *, double *); - void pack_vel(double **); - int pack_vel_hybrid(int, double *); - void write_vel(FILE *, int, double **); - int write_vel_hybrid(FILE *, double *); - bigint memory_usage(); - - // manipulate Bonus data structure for extra atom info + void copy_bonus(int, int, int); void clear_bonus(); + int pack_comm_bonus(int, int *, double *); + void unpack_comm_bonus(int, int, double *); + int pack_reverse_bonus(int, int, double *); + int pack_border_bonus(int, int *, double *); + int unpack_border_bonus(int, int, double *); + int pack_exchange_bonus(int, double *); + int unpack_exchange_bonus(int, double *); + int size_restart_bonus(); + int pack_restart_bonus(int, double *); + int unpack_restart_bonus(int, double *); void data_atom_bonus(int, char **); + bigint memory_usage_bonus(); + + void create_atom_post(int); + void data_atom_post(int); + void pack_data_pre(int); + void pack_data_post(int); // unique to AtomVecLine @@ -86,19 +63,12 @@ class AtomVecLine : public AtomVec { int nlocal_bonus; private: - tagint *tag; - int *type,*mask; - imageint *image; - double **x,**v,**f; - tagint *molecule; - double *rmass,*radius; - double **omega,**torque; - int *line; - int nghost_bonus,nmax_bonus; + int line_flag; + double rmass; void grow_bonus(); - void copy_bonus(int, int); + void copy_bonus_all(int, int); // void consistency_check(int, char *); }; diff --git a/src/atom_vec_sphere.cpp b/src/atom_vec_sphere.cpp index b44aa69035..5ae4c0ca21 100644 --- a/src/atom_vec_sphere.cpp +++ b/src/atom_vec_sphere.cpp @@ -94,7 +94,7 @@ void AtomVecSphere::init() } /* ---------------------------------------------------------------------- - initialize other atom quantities + initialize non-zero atom quantities ------------------------------------------------------------------------- */ void AtomVecSphere::create_atom_post(int ilocal) @@ -117,7 +117,7 @@ void AtomVecSphere::data_atom_post(int ilocal) 4.0*MY_PI/3.0 * radius*radius*radius * atom->rmass[ilocal]; if (atom->rmass[ilocal] <= 0.0) - error->one(FLERR,"Invalid mass in Atoms section of data file"); + error->one(FLERR,"Invalid density in Atoms section of data file"); } /* ---------------------------------------------------------------------- diff --git a/src/atom_vec_tri.cpp b/src/atom_vec_tri.cpp index 3b7bfe5377..6da0ef7015 100644 --- a/src/atom_vec_tri.cpp +++ b/src/atom_vec_tri.cpp @@ -16,7 +16,6 @@ #include #include "math_extra.h" #include "atom.h" -#include "comm.h" #include "domain.h" #include "modify.h" #include "fix.h" @@ -35,16 +34,12 @@ using namespace MathConst; AtomVecTri::AtomVecTri(LAMMPS *lmp) : AtomVec(lmp) { molecular = 0; + bonus_flag = 1; - comm_x_only = comm_f_only = 0; - size_forward = 7; - size_reverse = 6; - size_border = 26; - size_velocity = 9; - size_data_atom = 8; - size_data_vel = 7; + size_forward_bonus = 4; + size_border_bonus = 17; + size_restart_bonus_one = 16; size_data_bonus = 10; - xcol_data = 6; atom->tri_flag = 1; atom->molecule_flag = atom->rmass_flag = 1; @@ -55,8 +50,25 @@ AtomVecTri::AtomVecTri(LAMMPS *lmp) : AtomVec(lmp) nlocal_bonus = nghost_bonus = nmax_bonus = 0; bonus = NULL; - if (domain->dimension != 3) - error->all(FLERR,"Atom_style tri can only be used in 3d simulations"); + // strings with peratom variables to include in each AtomVec method + // strings cannot contain fields in corresponding AtomVec default strings + // order of fields in the string does not matter + // except fields_data_atom and fields_data_vel which must match data file + + fields_grow = (char *) "molecule radius rmass omega angmom torque tri"; + fields_copy = (char *) "molecule radius rmass omega angmom"; + fields_comm = NULL; + fields_comm_vel = (char *) "omega angmom"; + fields_reverse = (char *) "torque"; + fields_border = (char *) "molecule radius rmass"; + fields_border_vel = (char *) "molecule radius rmass omega"; + fields_exchange = (char *) "molecule radius rmass omega angmom"; + fields_restart = (char *) "molecule radius rmass omega angmom"; + fields_create = (char *) "molecule radius rmass omega angmom line"; + fields_data_atom = (char *) "id molecule type tri rmass x"; + fields_data_vel = (char *) "omega angmom"; + + setup_fields(); } /* ---------------------------------------------------------------------- */ @@ -76,56 +88,6 @@ void AtomVecTri::init() error->all(FLERR,"Atom_style tri can only be used in 3d simulations"); } -/* ---------------------------------------------------------------------- - grow atom arrays - n = 0 grows arrays by a chunk - n > 0 allocates arrays to size n -------------------------------------------------------------------------- */ - -void AtomVecTri::grow(int n) -{ - if (n == 0) grow_nmax(); - else nmax = n; - atom->nmax = nmax; - if (nmax < 0 || nmax > MAXSMALLINT) - error->one(FLERR,"Per-processor system is too big"); - - tag = memory->grow(atom->tag,nmax,"atom:tag"); - type = memory->grow(atom->type,nmax,"atom:type"); - mask = memory->grow(atom->mask,nmax,"atom:mask"); - image = memory->grow(atom->image,nmax,"atom:image"); - x = memory->grow(atom->x,nmax,3,"atom:x"); - v = memory->grow(atom->v,nmax,3,"atom:v"); - f = memory->grow(atom->f,nmax*comm->nthreads,3,"atom:f"); - - molecule = memory->grow(atom->molecule,nmax,"atom:molecule"); - rmass = memory->grow(atom->rmass,nmax,"atom:rmass"); - radius = memory->grow(atom->radius,nmax,"atom:radius"); - omega = memory->grow(atom->omega,nmax,3,"atom:omega"); - angmom = memory->grow(atom->angmom,nmax,3,"atom:angmom"); - torque = memory->grow(atom->torque,nmax*comm->nthreads,3,"atom:torque"); - tri = memory->grow(atom->tri,nmax,"atom:tri"); - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - modify->fix[atom->extra_grow[iextra]]->grow_arrays(nmax); -} - -/* ---------------------------------------------------------------------- - reset local array ptrs -------------------------------------------------------------------------- */ - -void AtomVecTri::grow_reset() -{ - tag = atom->tag; type = atom->type; - mask = atom->mask; image = atom->image; - x = atom->x; v = atom->v; f = atom->f; - molecule = atom->molecule; rmass = atom->rmass; - radius = atom->radius; omega = atom->omega; - angmom = atom->angmom; torque = atom->torque; - tri = atom->tri; -} - /* ---------------------------------------------------------------------- grow bonus data structure ------------------------------------------------------------------------- */ @@ -145,33 +107,14 @@ void AtomVecTri::grow_bonus() if delflag and atom J has bonus data, then delete it ------------------------------------------------------------------------- */ -void AtomVecTri::copy(int i, int j, int delflag) +void AtomVecTri::copy_bonus(int i, int j, int delflag) { - tag[j] = tag[i]; - type[j] = type[i]; - mask[j] = mask[i]; - image[j] = image[i]; - x[j][0] = x[i][0]; - x[j][1] = x[i][1]; - x[j][2] = x[i][2]; - v[j][0] = v[i][0]; - v[j][1] = v[i][1]; - v[j][2] = v[i][2]; - - molecule[j] = molecule[i]; - rmass[j] = rmass[i]; - radius[j] = radius[i]; - omega[j][0] = omega[i][0]; - omega[j][1] = omega[i][1]; - omega[j][2] = omega[i][2]; - angmom[j][0] = angmom[i][0]; - angmom[j][1] = angmom[i][1]; - angmom[j][2] = angmom[i][2]; + int *tri = atom->tri; // if deleting atom J via delflag and J has bonus data, then delete it if (delflag && tri[j] >= 0) { - copy_bonus(nlocal_bonus-1,tri[j]); + copy_bonus_all(nlocal_bonus-1,tri[j]); nlocal_bonus--; } @@ -180,10 +123,6 @@ void AtomVecTri::copy(int i, int j, int delflag) if (tri[i] >= 0 && i != j) bonus[tri[i]].ilocal = j; tri[j] = tri[i]; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - modify->fix[atom->extra_grow[iextra]]->copy_arrays(i,j,delflag); } /* ---------------------------------------------------------------------- @@ -191,9 +130,9 @@ void AtomVecTri::copy(int i, int j, int delflag) also reset tri that points to I to now point to J ------------------------------------------------------------------------- */ -void AtomVecTri::copy_bonus(int i, int j) +void AtomVecTri::copy_bonus_all(int i, int j) { - tri[bonus[i].ilocal] = j; + atom->tri[bonus[i].ilocal] = j; memcpy(&bonus[j],&bonus[i],sizeof(Bonus)); } @@ -211,232 +150,14 @@ void AtomVecTri::clear_bonus() modify->fix[atom->extra_grow[iextra]]->clear_bonus(); } -/* ---------------------------------------------------------------------- - set equilateral tri of size in bonus data for particle I - oriented symmetrically in xy plane - this may create or delete entry in bonus data -------------------------------------------------------------------------- */ - -void AtomVecTri::set_equilateral(int i, double size) -{ - // also set radius = distance from center to corner-pt = len(c1) - // unless size = 0.0, then set diameter = 1.0 - - if (tri[i] < 0) { - if (size == 0.0) return; - if (nlocal_bonus == nmax_bonus) grow_bonus(); - double *quat = bonus[nlocal_bonus].quat; - double *c1 = bonus[nlocal_bonus].c1; - double *c2 = bonus[nlocal_bonus].c2; - double *c3 = bonus[nlocal_bonus].c3; - double *inertia = bonus[nlocal_bonus].inertia; - quat[0] = 1.0; - quat[1] = 0.0; - quat[2] = 0.0; - quat[3] = 0.0; - c1[0] = -size/2.0; - c1[1] = -sqrt(3.0)/2.0 * size / 3.0; - c1[2] = 0.0; - c2[0] = size/2.0; - c2[1] = -sqrt(3.0)/2.0 * size / 3.0; - c2[2] = 0.0; - c3[0] = 0.0; - c3[1] = sqrt(3.0)/2.0 * size * 2.0/3.0; - c3[2] = 0.0; - inertia[0] = sqrt(3.0)/96.0 * size*size*size*size; - inertia[1] = sqrt(3.0)/96.0 * size*size*size*size; - inertia[2] = sqrt(3.0)/48.0 * size*size*size*size; - radius[i] = MathExtra::len3(c1); - bonus[nlocal_bonus].ilocal = i; - tri[i] = nlocal_bonus++; - } else if (size == 0.0) { - radius[i] = 0.5; - copy_bonus(nlocal_bonus-1,tri[i]); - nlocal_bonus--; - tri[i] = -1; - } else { - double *c1 = bonus[tri[i]].c1; - double *c2 = bonus[tri[i]].c2; - double *c3 = bonus[tri[i]].c3; - double *inertia = bonus[tri[i]].inertia; - c1[0] = -size/2.0; - c1[1] = -sqrt(3.0)/2.0 * size / 3.0; - c1[2] = 0.0; - c2[0] = size/2.0; - c2[1] = -sqrt(3.0)/2.0 * size / 3.0; - c2[2] = 0.0; - c3[0] = 0.0; - c3[1] = sqrt(3.0)/2.0 * size * 2.0/3.0; - c3[2] = 0.0; - inertia[0] = sqrt(3.0)/96.0 * size*size*size*size; - inertia[1] = sqrt(3.0)/96.0 * size*size*size*size; - inertia[2] = sqrt(3.0)/48.0 * size*size*size*size; - radius[i] = MathExtra::len3(c1); - } -} - /* ---------------------------------------------------------------------- */ -int AtomVecTri::pack_comm(int n, int *list, double *buf, - int pbc_flag, int *pbc) +int AtomVecTri::pack_comm_bonus(int n, int *list, double *buf) { int i,j,m; - double dx,dy,dz; double *quat; - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - if (tri[j] >= 0) { - quat = bonus[tri[j]].quat; - buf[m++] = quat[0]; - buf[m++] = quat[1]; - buf[m++] = quat[2]; - buf[m++] = quat[3]; - } - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]*domain->xprd + pbc[5]*domain->xy + pbc[4]*domain->xz; - dy = pbc[1]*domain->yprd + pbc[3]*domain->yz; - dz = pbc[2]*domain->zprd; - } - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - if (tri[j] >= 0) { - quat = bonus[tri[j]].quat; - buf[m++] = quat[0]; - buf[m++] = quat[1]; - buf[m++] = quat[2]; - buf[m++] = quat[3]; - } - } - } - - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecTri::pack_comm_vel(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz,dvx,dvy,dvz; - double *quat; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - if (tri[j] >= 0) { - quat = bonus[tri[j]].quat; - buf[m++] = quat[0]; - buf[m++] = quat[1]; - buf[m++] = quat[2]; - buf[m++] = quat[3]; - } - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - buf[m++] = omega[j][0]; - buf[m++] = omega[j][1]; - buf[m++] = omega[j][2]; - buf[m++] = angmom[j][0]; - buf[m++] = angmom[j][1]; - buf[m++] = angmom[j][2]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]*domain->xprd + pbc[5]*domain->xy + pbc[4]*domain->xz; - dy = pbc[1]*domain->yprd + pbc[3]*domain->yz; - dz = pbc[2]*domain->zprd; - } - if (!deform_vremap) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - if (tri[j] >= 0) { - quat = bonus[tri[j]].quat; - buf[m++] = quat[0]; - buf[m++] = quat[1]; - buf[m++] = quat[2]; - buf[m++] = quat[3]; - } - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - buf[m++] = omega[j][0]; - buf[m++] = omega[j][1]; - buf[m++] = omega[j][2]; - buf[m++] = angmom[j][0]; - buf[m++] = angmom[j][1]; - buf[m++] = angmom[j][2]; - } - } else { - dvx = pbc[0]*h_rate[0] + pbc[5]*h_rate[5] + pbc[4]*h_rate[4]; - dvy = pbc[1]*h_rate[1] + pbc[3]*h_rate[3]; - dvz = pbc[2]*h_rate[2]; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - if (tri[j] >= 0) { - quat = bonus[tri[j]].quat; - buf[m++] = quat[0]; - buf[m++] = quat[1]; - buf[m++] = quat[2]; - buf[m++] = quat[3]; - } - if (mask[i] & deform_groupbit) { - buf[m++] = v[j][0] + dvx; - buf[m++] = v[j][1] + dvy; - buf[m++] = v[j][2] + dvz; - } else { - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - buf[m++] = omega[j][0]; - buf[m++] = omega[j][1]; - buf[m++] = omega[j][2]; - buf[m++] = angmom[j][0]; - buf[m++] = angmom[j][1]; - buf[m++] = angmom[j][2]; - } - } - } - - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecTri::pack_comm_hybrid(int n, int *list, double *buf) -{ - int i,j,m; - double *quat; + int *tri = atom->tri; m = 0; for (i = 0; i < n; i++) { @@ -449,74 +170,22 @@ int AtomVecTri::pack_comm_hybrid(int n, int *list, double *buf) buf[m++] = quat[3]; } } + return m; } /* ---------------------------------------------------------------------- */ -void AtomVecTri::unpack_comm(int n, int first, double *buf) +void AtomVecTri::unpack_comm_bonus(int n, int first, double *buf) { int i,m,last; double *quat; - m = 0; - last = first + n; - for (i = first; i < last; i++) { - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - if (tri[i] >= 0) { - quat = bonus[tri[i]].quat; - quat[0] = buf[m++]; - quat[1] = buf[m++]; - quat[2] = buf[m++]; - quat[3] = buf[m++]; - } - } -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecTri::unpack_comm_vel(int n, int first, double *buf) -{ - int i,m,last; - double *quat; + int *tri = atom->tri; m = 0; last = first + n; for (i = first; i < last; i++) { - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - if (tri[i] >= 0) { - quat = bonus[tri[i]].quat; - quat[0] = buf[m++]; - quat[1] = buf[m++]; - quat[2] = buf[m++]; - quat[3] = buf[m++]; - } - v[i][0] = buf[m++]; - v[i][1] = buf[m++]; - v[i][2] = buf[m++]; - omega[i][0] = buf[m++]; - omega[i][1] = buf[m++]; - omega[i][2] = buf[m++]; - angmom[i][0] = buf[m++]; - angmom[i][1] = buf[m++]; - angmom[i][2] = buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecTri::unpack_comm_hybrid(int n, int first, double *buf) -{ - int i,m,last; - double *quat; - - m = 0; - last = first + n; - for (i = first; i < last; i++) if (tri[i] >= 0) { quat = bonus[tri[i]].quat; quat[0] = buf[m++]; @@ -524,375 +193,21 @@ int AtomVecTri::unpack_comm_hybrid(int n, int first, double *buf) quat[2] = buf[m++]; quat[3] = buf[m++]; } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecTri::pack_reverse(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - buf[m++] = f[i][0]; - buf[m++] = f[i][1]; - buf[m++] = f[i][2]; - buf[m++] = torque[i][0]; - buf[m++] = torque[i][1]; - buf[m++] = torque[i][2]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecTri::pack_reverse_hybrid(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - buf[m++] = torque[i][0]; - buf[m++] = torque[i][1]; - buf[m++] = torque[i][2]; } - return m; } /* ---------------------------------------------------------------------- */ -void AtomVecTri::unpack_reverse(int n, int *list, double *buf) +int AtomVecTri::pack_border_bonus(int n, int *list, double *buf) { int i,j,m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - f[j][0] += buf[m++]; - f[j][1] += buf[m++]; - f[j][2] += buf[m++]; - torque[j][0] += buf[m++]; - torque[j][1] += buf[m++]; - torque[j][2] += buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecTri::unpack_reverse_hybrid(int n, int *list, double *buf) -{ - int i,j,m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - torque[j][0] += buf[m++]; - torque[j][1] += buf[m++]; - torque[j][2] += buf[m++]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecTri::pack_border(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz; double *quat,*c1,*c2,*c3,*inertia; - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = ubuf(molecule[j]).d; - buf[m++] = radius[j]; - buf[m++] = rmass[j]; - if (tri[j] < 0) buf[m++] = ubuf(0).d; - else { - buf[m++] = ubuf(1).d; - quat = bonus[tri[j]].quat; - c1 = bonus[tri[j]].c1; - c2 = bonus[tri[j]].c2; - c3 = bonus[tri[j]].c3; - inertia = bonus[tri[j]].inertia; - buf[m++] = quat[0]; - buf[m++] = quat[1]; - buf[m++] = quat[2]; - buf[m++] = quat[3]; - buf[m++] = c1[0]; - buf[m++] = c1[1]; - buf[m++] = c1[2]; - buf[m++] = c2[0]; - buf[m++] = c2[1]; - buf[m++] = c2[2]; - buf[m++] = c3[0]; - buf[m++] = c3[1]; - buf[m++] = c3[2]; - buf[m++] = inertia[0]; - buf[m++] = inertia[1]; - buf[m++] = inertia[2]; - } - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]; - dy = pbc[1]; - dz = pbc[2]; - } - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = ubuf(molecule[j]).d; - buf[m++] = radius[j]; - buf[m++] = rmass[j]; - if (tri[j] < 0) buf[m++] = ubuf(0).d; - else { - buf[m++] = ubuf(1).d; - quat = bonus[tri[j]].quat; - c1 = bonus[tri[j]].c1; - c2 = bonus[tri[j]].c2; - c3 = bonus[tri[j]].c3; - inertia = bonus[tri[j]].inertia; - buf[m++] = quat[0]; - buf[m++] = quat[1]; - buf[m++] = quat[2]; - buf[m++] = quat[3]; - buf[m++] = c1[0]; - buf[m++] = c1[1]; - buf[m++] = c1[2]; - buf[m++] = c2[0]; - buf[m++] = c2[1]; - buf[m++] = c2[2]; - buf[m++] = c3[0]; - buf[m++] = c3[1]; - buf[m++] = c3[2]; - buf[m++] = inertia[0]; - buf[m++] = inertia[1]; - buf[m++] = inertia[2]; - } - } - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); - - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecTri::pack_border_vel(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz,dvx,dvy,dvz; - double *quat,*c1,*c2,*c3,*inertia; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = ubuf(molecule[j]).d; - buf[m++] = radius[j]; - buf[m++] = rmass[j]; - if (tri[j] < 0) buf[m++] = ubuf(0).d; - else { - buf[m++] = ubuf(1).d; - quat = bonus[tri[j]].quat; - c1 = bonus[tri[j]].c1; - c2 = bonus[tri[j]].c2; - c3 = bonus[tri[j]].c3; - inertia = bonus[tri[j]].inertia; - buf[m++] = quat[0]; - buf[m++] = quat[1]; - buf[m++] = quat[2]; - buf[m++] = quat[3]; - buf[m++] = c1[0]; - buf[m++] = c1[1]; - buf[m++] = c1[2]; - buf[m++] = c2[0]; - buf[m++] = c2[1]; - buf[m++] = c2[2]; - buf[m++] = c3[0]; - buf[m++] = c3[1]; - buf[m++] = c3[2]; - buf[m++] = inertia[0]; - buf[m++] = inertia[1]; - buf[m++] = inertia[2]; - } - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - buf[m++] = omega[j][0]; - buf[m++] = omega[j][1]; - buf[m++] = omega[j][2]; - buf[m++] = angmom[j][0]; - buf[m++] = angmom[j][1]; - buf[m++] = angmom[j][2]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]; - dy = pbc[1]; - dz = pbc[2]; - } - if (!deform_vremap) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = ubuf(molecule[j]).d; - buf[m++] = radius[j]; - buf[m++] = rmass[j]; - if (tri[j] < 0) buf[m++] = ubuf(0).d; - else { - buf[m++] = ubuf(1).d; - quat = bonus[tri[j]].quat; - c1 = bonus[tri[j]].c1; - c2 = bonus[tri[j]].c2; - c3 = bonus[tri[j]].c3; - inertia = bonus[tri[j]].inertia; - buf[m++] = quat[0]; - buf[m++] = quat[1]; - buf[m++] = quat[2]; - buf[m++] = quat[3]; - buf[m++] = c1[0]; - buf[m++] = c1[1]; - buf[m++] = c1[2]; - buf[m++] = c2[0]; - buf[m++] = c2[1]; - buf[m++] = c2[2]; - buf[m++] = c3[0]; - buf[m++] = c3[1]; - buf[m++] = c3[2]; - buf[m++] = inertia[0]; - buf[m++] = inertia[1]; - buf[m++] = inertia[2]; - } - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - buf[m++] = omega[j][0]; - buf[m++] = omega[j][1]; - buf[m++] = omega[j][2]; - buf[m++] = angmom[j][0]; - buf[m++] = angmom[j][1]; - buf[m++] = angmom[j][2]; - } - } else { - dvx = pbc[0]*h_rate[0] + pbc[5]*h_rate[5] + pbc[4]*h_rate[4]; - dvy = pbc[1]*h_rate[1] + pbc[3]*h_rate[3]; - dvz = pbc[2]*h_rate[2]; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = ubuf(molecule[j]).d; - buf[m++] = radius[j]; - buf[m++] = rmass[j]; - if (tri[j] < 0) buf[m++] = ubuf(0).d; - else { - buf[m++] = ubuf(1).d; - quat = bonus[tri[j]].quat; - c1 = bonus[tri[j]].c1; - c2 = bonus[tri[j]].c2; - c3 = bonus[tri[j]].c3; - inertia = bonus[tri[j]].inertia; - buf[m++] = quat[0]; - buf[m++] = quat[1]; - buf[m++] = quat[2]; - buf[m++] = quat[3]; - buf[m++] = c1[0]; - buf[m++] = c1[1]; - buf[m++] = c1[2]; - buf[m++] = c2[0]; - buf[m++] = c2[1]; - buf[m++] = c2[2]; - buf[m++] = c3[0]; - buf[m++] = c3[1]; - buf[m++] = c3[2]; - buf[m++] = inertia[0]; - buf[m++] = inertia[1]; - buf[m++] = inertia[2]; - } - if (mask[i] & deform_groupbit) { - buf[m++] = v[j][0] + dvx; - buf[m++] = v[j][1] + dvy; - buf[m++] = v[j][2] + dvz; - } else { - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - buf[m++] = omega[j][0]; - buf[m++] = omega[j][1]; - buf[m++] = omega[j][2]; - buf[m++] = angmom[j][0]; - buf[m++] = angmom[j][1]; - buf[m++] = angmom[j][2]; - } - } - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); - - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecTri::pack_border_hybrid(int n, int *list, double *buf) -{ - int i,j,m; - double *quat,*c1,*c2,*c3,*inertia; + int *tri = atom->tri; m = 0; for (i = 0; i < n; i++) { j = list[i]; - buf[m++] = ubuf(molecule[j]).d; - buf[m++] = radius[j]; - buf[m++] = rmass[j]; if (tri[j] < 0) buf[m++] = ubuf(0).d; else { buf[m++] = ubuf(1).d; @@ -919,87 +234,22 @@ int AtomVecTri::pack_border_hybrid(int n, int *list, double *buf) buf[m++] = inertia[2]; } } + return m; } /* ---------------------------------------------------------------------- */ -void AtomVecTri::unpack_border(int n, int first, double *buf) +int AtomVecTri::unpack_border_bonus(int n, int first, double *buf) { int i,j,m,last; double *quat,*c1,*c2,*c3,*inertia; - m = 0; - last = first + n; - for (i = first; i < last; i++) { - if (i == nmax) grow(0); - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - tag[i] = (tagint) ubuf(buf[m++]).i; - type[i] = (int) ubuf(buf[m++]).i; - mask[i] = (int) ubuf(buf[m++]).i; - molecule[i] = (tagint) ubuf(buf[m++]).i; - radius[i] = buf[m++]; - rmass[i] = buf[m++]; - tri[i] = (int) ubuf(buf[m++]).i; - if (tri[i] == 0) tri[i] = -1; - else { - j = nlocal_bonus + nghost_bonus; - if (j == nmax_bonus) grow_bonus(); - quat = bonus[j].quat; - c1 = bonus[j].c1; - c2 = bonus[j].c2; - c3 = bonus[j].c3; - inertia = bonus[j].inertia; - quat[0] = buf[m++]; - quat[1] = buf[m++]; - quat[2] = buf[m++]; - quat[3] = buf[m++]; - c1[0] = buf[m++]; - c1[1] = buf[m++]; - c1[2] = buf[m++]; - c2[0] = buf[m++]; - c2[1] = buf[m++]; - c2[2] = buf[m++]; - c3[0] = buf[m++]; - c3[1] = buf[m++]; - c3[2] = buf[m++]; - inertia[0] = buf[m++]; - inertia[1] = buf[m++]; - inertia[2] = buf[m++]; - bonus[j].ilocal = i; - tri[i] = j; - nghost_bonus++; - } - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]-> - unpack_border(n,first,&buf[m]); -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecTri::unpack_border_vel(int n, int first, double *buf) -{ - int i,j,m,last; - double *quat,*c1,*c2,*c3,*inertia; + int *tri = atom->tri; m = 0; last = first + n; for (i = first; i < last; i++) { - if (i == nmax) grow(0); - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - tag[i] = (tagint) ubuf(buf[m++]).i; - type[i] = (int) ubuf(buf[m++]).i; - mask[i] = (int) ubuf(buf[m++]).i; - molecule[i] = (tagint) ubuf(buf[m++]).i; - radius[i] = buf[m++]; - rmass[i] = buf[m++]; tri[i] = (int) ubuf(buf[m++]).i; if (tri[i] == 0) tri[i] = -1; else { @@ -1030,67 +280,8 @@ void AtomVecTri::unpack_border_vel(int n, int first, double *buf) tri[i] = j; nghost_bonus++; } - v[i][0] = buf[m++]; - v[i][1] = buf[m++]; - v[i][2] = buf[m++]; - omega[i][0] = buf[m++]; - omega[i][1] = buf[m++]; - omega[i][2] = buf[m++]; - angmom[i][0] = buf[m++]; - angmom[i][1] = buf[m++]; - angmom[i][2] = buf[m++]; } - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]-> - unpack_border(n,first,&buf[m]); -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecTri::unpack_border_hybrid(int n, int first, double *buf) -{ - int i,j,m,last; - double *quat,*c1,*c2,*c3,*inertia; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - molecule[i] = (tagint) ubuf(buf[m++]).i; - radius[i] = buf[m++]; - rmass[i] = buf[m++]; - tri[i] = (int) ubuf(buf[m++]).i; - if (tri[i] == 0) tri[i] = -1; - else { - j = nlocal_bonus + nghost_bonus; - if (j == nmax_bonus) grow_bonus(); - quat = bonus[j].quat; - c1 = bonus[j].c1; - c2 = bonus[j].c2; - c3 = bonus[j].c3; - inertia = bonus[j].inertia; - quat[0] = buf[m++]; - quat[1] = buf[m++]; - quat[2] = buf[m++]; - quat[3] = buf[m++]; - c1[0] = buf[m++]; - c1[1] = buf[m++]; - c1[2] = buf[m++]; - c2[0] = buf[m++]; - c2[1] = buf[m++]; - c2[2] = buf[m++]; - c3[0] = buf[m++]; - c3[1] = buf[m++]; - c3[2] = buf[m++]; - inertia[0] = buf[m++]; - inertia[1] = buf[m++]; - inertia[2] = buf[m++]; - bonus[j].ilocal = i; - tri[i] = j; - nghost_bonus++; - } - } return m; } @@ -1099,29 +290,11 @@ int AtomVecTri::unpack_border_hybrid(int n, int first, double *buf) xyz must be 1st 3 values, so comm::exchange() can test on them ------------------------------------------------------------------------- */ -int AtomVecTri::pack_exchange(int i, double *buf) +int AtomVecTri::pack_exchange_bonus(int i, double *buf) { - int m = 1; - buf[m++] = x[i][0]; - buf[m++] = x[i][1]; - buf[m++] = x[i][2]; - buf[m++] = v[i][0]; - buf[m++] = v[i][1]; - buf[m++] = v[i][2]; - buf[m++] = ubuf(tag[i]).d; - buf[m++] = ubuf(type[i]).d; - buf[m++] = ubuf(mask[i]).d; - buf[m++] = ubuf(image[i]).d; - - buf[m++] = ubuf(molecule[i]).d; - buf[m++] = rmass[i]; - buf[m++] = radius[i]; - buf[m++] = omega[i][0]; - buf[m++] = omega[i][1]; - buf[m++] = omega[i][2]; - buf[m++] = angmom[i][0]; - buf[m++] = angmom[i][1]; - buf[m++] = angmom[i][2]; + int m = 0; + + int *tri = atom->tri; if (tri[i] < 0) buf[m++] = ubuf(0).d; else { @@ -1150,45 +323,19 @@ int AtomVecTri::pack_exchange(int i, double *buf) buf[m++] = inertia[2]; } - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - m += modify->fix[atom->extra_grow[iextra]]->pack_exchange(i,&buf[m]); - - buf[0] = m; return m; } /* ---------------------------------------------------------------------- */ -int AtomVecTri::unpack_exchange(double *buf) +int AtomVecTri::unpack_exchange_bonus(int ilocal, double *buf) { - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - int m = 1; - x[nlocal][0] = buf[m++]; - x[nlocal][1] = buf[m++]; - x[nlocal][2] = buf[m++]; - v[nlocal][0] = buf[m++]; - v[nlocal][1] = buf[m++]; - v[nlocal][2] = buf[m++]; - tag[nlocal] = (tagint) ubuf(buf[m++]).i; - type[nlocal] = (int) ubuf(buf[m++]).i; - mask[nlocal] = (int) ubuf(buf[m++]).i; - image[nlocal] = (imageint) ubuf(buf[m++]).i; - - molecule[nlocal] = (tagint) ubuf(buf[m++]).i; - rmass[nlocal] = buf[m++]; - radius[nlocal] = buf[m++]; - omega[nlocal][0] = buf[m++]; - omega[nlocal][1] = buf[m++]; - omega[nlocal][2] = buf[m++]; - angmom[nlocal][0] = buf[m++]; - angmom[nlocal][1] = buf[m++]; - angmom[nlocal][2] = buf[m++]; - - tri[nlocal] = (int) ubuf(buf[m++]).i; - if (tri[nlocal] == 0) tri[nlocal] = -1; + int m = 0; + + int *tri = atom->tri; + + tri[ilocal] = (int) ubuf(buf[m++]).i; + if (tri[ilocal] == 0) tri[ilocal] = -1; else { if (nlocal_bonus == nmax_bonus) grow_bonus(); double *quat = bonus[nlocal_bonus].quat; @@ -1212,16 +359,10 @@ int AtomVecTri::unpack_exchange(double *buf) inertia[0] = buf[m++]; inertia[1] = buf[m++]; inertia[2] = buf[m++]; - bonus[nlocal_bonus].ilocal = nlocal; - tri[nlocal] = nlocal_bonus++; + bonus[nlocal_bonus].ilocal = ilocal; + tri[ilocal] = nlocal_bonus++; } - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - m += modify->fix[atom->extra_grow[iextra]]-> - unpack_exchange(nlocal,&buf[m]); - - atom->nlocal++; return m; } @@ -1230,53 +371,31 @@ int AtomVecTri::unpack_exchange(double *buf) include extra data stored by fixes ------------------------------------------------------------------------- */ -int AtomVecTri::size_restart() +int AtomVecTri::size_restart_bonus() { int i; + int *tri = atom->tri; + int n = 0; int nlocal = atom->nlocal; - for (i = 0; i < nlocal; i++) - if (tri[i] >= 0) n += 37; - else n += 21; - - if (atom->nextra_restart) - for (int iextra = 0; iextra < atom->nextra_restart; iextra++) - for (i = 0; i < nlocal; i++) - n += modify->fix[atom->extra_restart[iextra]]->size_restart(i); + for (i = 0; i < nlocal; i++) { + if (tri[i] >= 0) n += size_restart_bonus_one; + n++; + } return n; } /* ---------------------------------------------------------------------- - pack atom I's data for restart file including extra quantities - xyz must be 1st 3 values, so that read_restart can test on them - molecular types may be negative, but write as positive + unpack data for one atom from restart file including bonus data ------------------------------------------------------------------------- */ -int AtomVecTri::pack_restart(int i, double *buf) +int AtomVecTri::pack_restart_bonus(int i, double *buf) { - int m = 1; - buf[m++] = x[i][0]; - buf[m++] = x[i][1]; - buf[m++] = x[i][2]; - buf[m++] = ubuf(tag[i]).d; - buf[m++] = ubuf(type[i]).d; - buf[m++] = ubuf(mask[i]).d; - buf[m++] = ubuf(image[i]).d; - buf[m++] = v[i][0]; - buf[m++] = v[i][1]; - buf[m++] = v[i][2]; - - buf[m++] = ubuf(molecule[i]).d; - buf[m++] = rmass[i]; - buf[m++] = radius[i]; - buf[m++] = omega[i][0]; - buf[m++] = omega[i][1]; - buf[m++] = omega[i][2]; - buf[m++] = angmom[i][0]; - buf[m++] = angmom[i][1]; - buf[m++] = angmom[i][2]; + int m = 0; + + int *tri = atom->tri; if (tri[i] < 0) buf[m++] = ubuf(0).d; else { @@ -1305,51 +424,21 @@ int AtomVecTri::pack_restart(int i, double *buf) buf[m++] = inertia[2]; } - if (atom->nextra_restart) - for (int iextra = 0; iextra < atom->nextra_restart; iextra++) - m += modify->fix[atom->extra_restart[iextra]]->pack_restart(i,&buf[m]); - - buf[0] = m; return m; } /* ---------------------------------------------------------------------- - unpack data for one atom from restart file including extra quantities + unpack data for one atom from restart file including bonus data ------------------------------------------------------------------------- */ -int AtomVecTri::unpack_restart(double *buf) +int AtomVecTri::unpack_restart_bonus(int ilocal, double *buf) { - int nlocal = atom->nlocal; - if (nlocal == nmax) { - grow(0); - if (atom->nextra_store) - memory->grow(atom->extra,nmax,atom->nextra_store,"atom:extra"); - } + int m = 0; - int m = 1; - x[nlocal][0] = buf[m++]; - x[nlocal][1] = buf[m++]; - x[nlocal][2] = buf[m++]; - tag[nlocal] = (tagint) ubuf(buf[m++]).i; - type[nlocal] = (int) ubuf(buf[m++]).i; - mask[nlocal] = (int) ubuf(buf[m++]).i; - image[nlocal] = (imageint) ubuf(buf[m++]).i; - v[nlocal][0] = buf[m++]; - v[nlocal][1] = buf[m++]; - v[nlocal][2] = buf[m++]; - - molecule[nlocal] = (tagint) ubuf(buf[m++]).i; - rmass[nlocal] = buf[m++]; - radius[nlocal] = buf[m++]; - omega[nlocal][0] = buf[m++]; - omega[nlocal][1] = buf[m++]; - omega[nlocal][2] = buf[m++]; - angmom[nlocal][0] = buf[m++]; - angmom[nlocal][1] = buf[m++]; - angmom[nlocal][2] = buf[m++]; - - tri[nlocal] = (int) ubuf(buf[m++]).i; - if (tri[nlocal] == 0) tri[nlocal] = -1; + int *tri = atom->tri; + + tri[ilocal] = (int) ubuf(buf[m++]).i; + if (tri[ilocal] == 0) tri[ilocal] = -1; else { if (nlocal_bonus == nmax_bonus) grow_bonus(); double *quat = bonus[nlocal_bonus].quat; @@ -1373,140 +462,21 @@ int AtomVecTri::unpack_restart(double *buf) inertia[0] = buf[m++]; inertia[1] = buf[m++]; inertia[2] = buf[m++]; - bonus[nlocal_bonus].ilocal = nlocal; - tri[nlocal] = nlocal_bonus++; + bonus[nlocal_bonus].ilocal = ilocal; + tri[ilocal] = nlocal_bonus++; } - double **extra = atom->extra; - if (atom->nextra_store) { - int size = static_cast (buf[0]) - m; - for (int i = 0; i < size; i++) extra[nlocal][i] = buf[m++]; - } - - atom->nlocal++; return m; } -/* ---------------------------------------------------------------------- - create one atom of itype at coord - set other values to defaults -------------------------------------------------------------------------- */ - -void AtomVecTri::create_atom(int itype, double *coord) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - tag[nlocal] = 0; - type[nlocal] = itype; - x[nlocal][0] = coord[0]; - x[nlocal][1] = coord[1]; - x[nlocal][2] = coord[2]; - mask[nlocal] = 1; - image[nlocal] = ((imageint) IMGMAX << IMG2BITS) | - ((imageint) IMGMAX << IMGBITS) | IMGMAX; - v[nlocal][0] = 0.0; - v[nlocal][1] = 0.0; - v[nlocal][2] = 0.0; - - molecule[nlocal] = 0; - radius[nlocal] = 0.5; - rmass[nlocal] = 4.0*MY_PI/3.0 * radius[nlocal]*radius[nlocal]*radius[nlocal]; - omega[nlocal][0] = 0.0; - omega[nlocal][1] = 0.0; - omega[nlocal][2] = 0.0; - angmom[nlocal][0] = 0.0; - angmom[nlocal][1] = 0.0; - angmom[nlocal][2] = 0.0; - tri[nlocal] = -1; - - atom->nlocal++; -} - -/* ---------------------------------------------------------------------- - unpack one line from Atoms section of data file - initialize other atom quantities -------------------------------------------------------------------------- */ - -void AtomVecTri::data_atom(double *coord, imageint imagetmp, char **values) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - tag[nlocal] = utils::tnumeric(FLERR,values[0],true,lmp); - molecule[nlocal] = utils::tnumeric(FLERR,values[1],true,lmp); - type[nlocal] = utils::inumeric(FLERR,values[2],true,lmp); - if (type[nlocal] <= 0 || type[nlocal] > atom->ntypes) - error->one(FLERR,"Invalid atom type in Atoms section of data file"); - - tri[nlocal] = utils::inumeric(FLERR,values[3],true,lmp); - if (tri[nlocal] == 0) tri[nlocal] = -1; - else if (tri[nlocal] == 1) tri[nlocal] = 0; - else error->one(FLERR,"Invalid triflag in Atoms section of data file"); - - rmass[nlocal] = utils::numeric(FLERR,values[4],true,lmp); - if (rmass[nlocal] <= 0.0) - error->one(FLERR,"Invalid density in Atoms section of data file"); - - if (tri[nlocal] < 0) { - radius[nlocal] = 0.5; - rmass[nlocal] *= 4.0*MY_PI/3.0 * - radius[nlocal]*radius[nlocal]*radius[nlocal]; - } else radius[nlocal] = 0.0; - - x[nlocal][0] = coord[0]; - x[nlocal][1] = coord[1]; - x[nlocal][2] = coord[2]; - - image[nlocal] = imagetmp; - - mask[nlocal] = 1; - v[nlocal][0] = 0.0; - v[nlocal][1] = 0.0; - v[nlocal][2] = 0.0; - omega[nlocal][0] = 0.0; - omega[nlocal][1] = 0.0; - omega[nlocal][2] = 0.0; - angmom[nlocal][0] = 0.0; - angmom[nlocal][1] = 0.0; - angmom[nlocal][2] = 0.0; - - atom->nlocal++; -} - -/* ---------------------------------------------------------------------- - unpack hybrid quantities from one tri in Atoms section of data file - initialize other atom quantities for this sub-style -------------------------------------------------------------------------- */ - -int AtomVecTri::data_atom_hybrid(int nlocal, char **values) -{ - molecule[nlocal] = utils::tnumeric(FLERR,values[0],true,lmp); - - tri[nlocal] = utils::inumeric(FLERR,values[1],true,lmp); - if (tri[nlocal] == 0) tri[nlocal] = -1; - else if (tri[nlocal] == 1) tri[nlocal] = 0; - else error->one(FLERR,"Invalid atom type in Atoms section of data file"); - - rmass[nlocal] = utils::numeric(FLERR,values[2],true,lmp); - if (rmass[nlocal] <= 0.0) - error->one(FLERR,"Invalid density in Atoms section of data file"); - - if (tri[nlocal] < 0) { - radius[nlocal] = 0.5; - rmass[nlocal] *= 4.0*MY_PI/3.0 * - radius[nlocal]*radius[nlocal]*radius[nlocal]; - } else radius[nlocal] = 0.0; - - return 3; -} - /* ---------------------------------------------------------------------- unpack one line from Tris section of data file ------------------------------------------------------------------------- */ void AtomVecTri::data_atom_bonus(int m, char **values) { + int *tri = atom->tri; + if (tri[m]) error->one(FLERR,"Assigning tri parameters to non-tri atom"); if (nlocal_bonus == nmax_bonus) grow_bonus(); @@ -1553,9 +523,9 @@ void AtomVecTri::data_atom_bonus(int m, char **values) if (delta/size > EPSILON) error->one(FLERR,"Inconsistent triangle in data file"); - x[m][0] = centroid[0]; - x[m][1] = centroid[1]; - x[m][2] = centroid[2]; + atom->x[m][0] = centroid[0]; + atom->x[m][1] = centroid[1]; + atom->x[m][2] = centroid[2]; // reset tri radius and mass // rmass currently holds density @@ -1563,22 +533,22 @@ void AtomVecTri::data_atom_bonus(int m, char **values) double c4[3]; MathExtra::sub3(c1,centroid,c4); - radius[m] = MathExtra::lensq3(c4); + atom->radius[m] = MathExtra::lensq3(c4); MathExtra::sub3(c2,centroid,c4); - radius[m] = MAX(radius[m],MathExtra::lensq3(c4)); + atom->radius[m] = MAX(atom->radius[m],MathExtra::lensq3(c4)); MathExtra::sub3(c3,centroid,c4); - radius[m] = MAX(radius[m],MathExtra::lensq3(c4)); - radius[m] = sqrt(radius[m]); + atom->radius[m] = MAX(atom->radius[m],MathExtra::lensq3(c4)); + atom->radius[m] = sqrt(atom->radius[m]); double norm[3]; MathExtra::cross3(c2mc1,c3mc1,norm); double area = 0.5 * MathExtra::len3(norm); - rmass[m] *= area; + atom->rmass[m] *= area; // inertia = inertia tensor of triangle as 6-vector in Voigt notation double inertia[6]; - MathExtra::inertia_triangle(c1,c2,c3,rmass[m],inertia); + MathExtra::inertia_triangle(c1,c2,c3,atom->rmass[m],inertia); // diagonalize inertia tensor via Jacobi rotations // bonus[].inertia = 3 eigenvalues = principal moments of inertia @@ -1635,207 +605,156 @@ void AtomVecTri::data_atom_bonus(int m, char **values) } /* ---------------------------------------------------------------------- - unpack one line from Velocities section of data file + return # of bytes of allocated bonus memory ------------------------------------------------------------------------- */ -void AtomVecTri::data_vel(int m, char **values) +bigint AtomVecTri::memory_usage_bonus() { - v[m][0] = utils::numeric(FLERR,values[0],true,lmp); - v[m][1] = utils::numeric(FLERR,values[1],true,lmp); - v[m][2] = utils::numeric(FLERR,values[2],true,lmp); - omega[m][0] = utils::numeric(FLERR,values[3],true,lmp); - omega[m][1] = utils::numeric(FLERR,values[4],true,lmp); - omega[m][2] = utils::numeric(FLERR,values[5],true,lmp); - angmom[m][0] = utils::numeric(FLERR,values[6],true,lmp); - angmom[m][1] = utils::numeric(FLERR,values[7],true,lmp); - angmom[m][2] = utils::numeric(FLERR,values[8],true,lmp); + bigint bytes = 0; + bytes += nmax_bonus*sizeof(Bonus); + return bytes; } /* ---------------------------------------------------------------------- - unpack hybrid quantities from one line in Velocities section of data file + create one atom of itype at coord + set other values to defaults ------------------------------------------------------------------------- */ -int AtomVecTri::data_vel_hybrid(int m, char **values) +void AtomVecTri::create_atom_post(int ilocal) { - omega[m][0] = utils::numeric(FLERR,values[0],true,lmp); - omega[m][1] = utils::numeric(FLERR,values[1],true,lmp); - omega[m][2] = utils::numeric(FLERR,values[2],true,lmp); - angmom[m][0] = utils::numeric(FLERR,values[3],true,lmp); - angmom[m][1] = utils::numeric(FLERR,values[4],true,lmp); - angmom[m][2] = utils::numeric(FLERR,values[5],true,lmp); - return 6; + double radius = 0.5; + atom->radius[ilocal] = radius; + atom->rmass[ilocal] = 4.0*MY_PI/3.0 * radius*radius*radius; + atom->tri[ilocal] = -1; } /* ---------------------------------------------------------------------- - pack atom info for data file including 3 image flags + modify what AtomVec::data_atom() just unpacked + or initialize other atom quantities ------------------------------------------------------------------------- */ -void AtomVecTri::pack_data(double **buf) +void AtomVecTri::data_atom_post(int ilocal) { - double c2mc1[3],c3mc1[3],norm[3]; - double area; + tri_flag = atom->tri[ilocal]; + if (tri_flag == 0) tri_flag = -1; + else if (tri_flag == 1) tri_flag = 0; + else error->one(FLERR,"Invalid tri flag in Atoms section of data file"); + atom->tri[ilocal] = tri_flag; - int nlocal = atom->nlocal; - for (int i = 0; i < nlocal; i++) { - buf[i][0] = ubuf(tag[i]).d; - buf[i][1] = ubuf(molecule[i]).d; - buf[i][2] = ubuf(type[i]).d; - if (tri[i] < 0) buf[i][3] = ubuf(0).d; - else buf[i][3] = ubuf(1).d; - if (tri[i] < 0) - buf[i][4] = rmass[i] / (4.0*MY_PI/3.0 * radius[i]*radius[i]*radius[i]); - else { - MathExtra::sub3(bonus[tri[i]].c2,bonus[tri[i]].c1,c2mc1); - MathExtra::sub3(bonus[tri[i]].c3,bonus[tri[i]].c1,c3mc1); - MathExtra::cross3(c2mc1,c3mc1,norm); - area = 0.5 * MathExtra::len3(norm); - buf[i][4] = rmass[i]/area; - } - buf[i][5] = x[i][0]; - buf[i][6] = x[i][1]; - buf[i][7] = x[i][2]; - buf[i][8] = ubuf((image[i] & IMGMASK) - IMGMAX).d; - buf[i][9] = ubuf((image[i] >> IMGBITS & IMGMASK) - IMGMAX).d; - buf[i][10] = ubuf((image[i] >> IMG2BITS) - IMGMAX).d; - } -} - -/* ---------------------------------------------------------------------- - pack hybrid atom info for data file -------------------------------------------------------------------------- */ - -int AtomVecTri::pack_data_hybrid(int i, double *buf) -{ - buf[0] = ubuf(molecule[i]).d; - if (tri[i] < 0) buf[1] = ubuf(0).d; - else buf[1] = ubuf(1).d; - if (tri[i] < 0) - buf[2] = rmass[i] / (4.0*MY_PI/3.0 * radius[i]*radius[i]*radius[i]); - else { - double c2mc1[3],c3mc1[3],norm[3]; - MathExtra::sub3(bonus[tri[i]].c2,bonus[tri[i]].c1,c2mc1); - MathExtra::sub3(bonus[tri[i]].c3,bonus[tri[i]].c1,c3mc1); - MathExtra::cross3(c2mc1,c3mc1,norm); - double area = 0.5 * MathExtra::len3(norm); - buf[2] = rmass[i]/area; - } - return 3; -} + if (atom->rmass[ilocal] <= 0.0) + error->one(FLERR,"Invalid density in Atoms section of data file"); -/* ---------------------------------------------------------------------- - write atom info to data file including 3 image flags -------------------------------------------------------------------------- */ + if (tri_flag < 0) { + double radius = 0.5; + atom->radius[ilocal] = radius; + atom->rmass[ilocal] *= 4.0*MY_PI/3.0 * radius*radius*radius; + } else atom->radius[ilocal] = 0.0; -void AtomVecTri::write_data(FILE *fp, int n, double **buf) -{ - for (int i = 0; i < n; i++) - fprintf(fp,TAGINT_FORMAT " " TAGINT_FORMAT - " %d %d %-1.16e %-1.16e %-1.16e %-1.16e %d %d %d\n", - (tagint) ubuf(buf[i][0]).i,(tagint) ubuf(buf[i][1]).i, - (int) ubuf(buf[i][2]).i,(int) ubuf(buf[i][3]).i, - buf[i][4],buf[i][5],buf[i][6],buf[i][7], - (int) ubuf(buf[i][8]).i,(int) ubuf(buf[i][9]).i, - (int) ubuf(buf[i][10]).i); + atom->omega[ilocal][0] = 0.0; + atom->omega[ilocal][1] = 0.0; + atom->omega[ilocal][2] = 0.0; + atom->angmom[ilocal][0] = 0.0; + atom->angmom[ilocal][1] = 0.0; + atom->angmom[ilocal][2] = 0.0; } /* ---------------------------------------------------------------------- - write hybrid atom info to data file + modify values for AtomVec::pack_data() to pack ------------------------------------------------------------------------- */ -int AtomVecTri::write_data_hybrid(FILE *fp, double *buf) -{ - fprintf(fp," " TAGINT_FORMAT " %d %-1.16e", - (tagint) ubuf(buf[0]).i,(int) ubuf(buf[1]).i,buf[2]); - return 3; -} +void AtomVecTri::pack_data_pre(int ilocal) +{ + tri_flag = atom->tri[ilocal]; + rmass = atom->rmass[ilocal]; -/* ---------------------------------------------------------------------- - pack velocity info for data file -------------------------------------------------------------------------- */ + if (tri_flag < 0) atom->tri[ilocal] = 0; + else atom->tri[ilocal] = 1; -void AtomVecTri::pack_vel(double **buf) -{ - int nlocal = atom->nlocal; - for (int i = 0; i < nlocal; i++) { - buf[i][0] = ubuf(tag[i]).d; - buf[i][1] = v[i][0]; - buf[i][2] = v[i][1]; - buf[i][3] = v[i][2]; - buf[i][4] = omega[i][0]; - buf[i][5] = omega[i][1]; - buf[i][6] = omega[i][2]; - buf[i][7] = angmom[i][0]; - buf[i][8] = angmom[i][1]; - buf[i][9] = angmom[i][2]; + if (tri_flag < 0) { + double radius = atom->radius[ilocal]; + atom->rmass[ilocal] /= 4.0*MY_PI/3.0 * radius*radius*radius; + } else { + double c2mc1[3],c3mc1[3],norm[3]; + MathExtra::sub3(bonus[tri_flag].c2,bonus[tri_flag].c1,c2mc1); + MathExtra::sub3(bonus[tri_flag].c3,bonus[tri_flag].c1,c3mc1); + MathExtra::cross3(c2mc1,c3mc1,norm); + double area = 0.5 * MathExtra::len3(norm); + atom->rmass[ilocal] /= area; } } /* ---------------------------------------------------------------------- - pack hybrid velocity info for data file -------------------------------------------------------------------------- */ - -int AtomVecTri::pack_vel_hybrid(int i, double *buf) -{ - buf[0] = omega[i][0]; - buf[1] = omega[i][1]; - buf[2] = omega[i][2]; - buf[3] = angmom[i][0]; - buf[4] = angmom[i][1]; - buf[5] = angmom[i][2]; - return 6; -} - -/* ---------------------------------------------------------------------- - write velocity info to data file -------------------------------------------------------------------------- */ - -void AtomVecTri::write_vel(FILE *fp, int n, double **buf) -{ - for (int i = 0; i < n; i++) - fprintf(fp,TAGINT_FORMAT - " %-1.16e %-1.16e %-1.16e %-1.16e %-1.16e %-1.16e " - "%-1.16e %-1.16e %-1.16e\n", - (tagint) ubuf(buf[i][0]).i,buf[i][1],buf[i][2],buf[i][3], - buf[i][4],buf[i][5],buf[i][6],buf[i][7],buf[i][8],buf[i][9]); -} - -/* ---------------------------------------------------------------------- - write hybrid velocity info to data file + unmodify values packed by AtomVec::pack_data() ------------------------------------------------------------------------- */ -int AtomVecTri::write_vel_hybrid(FILE *fp, double *buf) -{ - fprintf(fp," %-1.16e %-1.16e %-1.16e %-1.16e %-1.16e %-1.16e", - buf[0],buf[1],buf[2],buf[3],buf[4],buf[5]); - return 6; +void AtomVecTri::pack_data_post(int ilocal) +{ + atom->tri[ilocal] = tri_flag; + atom->rmass[ilocal] = rmass; } /* ---------------------------------------------------------------------- - return # of bytes of allocated memory + set equilateral tri of size in bonus data for particle I + oriented symmetrically in xy plane + this may create or delete entry in bonus data ------------------------------------------------------------------------- */ -bigint AtomVecTri::memory_usage() +void AtomVecTri::set_equilateral(int i, double size) { - bigint bytes = 0; - - if (atom->memcheck("tag")) bytes += memory->usage(tag,nmax); - if (atom->memcheck("type")) bytes += memory->usage(type,nmax); - if (atom->memcheck("mask")) bytes += memory->usage(mask,nmax); - if (atom->memcheck("image")) bytes += memory->usage(image,nmax); - if (atom->memcheck("x")) bytes += memory->usage(x,nmax,3); - if (atom->memcheck("v")) bytes += memory->usage(v,nmax,3); - if (atom->memcheck("f")) bytes += memory->usage(f,nmax*comm->nthreads,3); - - if (atom->memcheck("molecule")) bytes += memory->usage(molecule,nmax); - if (atom->memcheck("rmass")) bytes += memory->usage(rmass,nmax); - if (atom->memcheck("radius")) bytes += memory->usage(radius,nmax); - if (atom->memcheck("omega")) bytes += memory->usage(omega,nmax,3); - if (atom->memcheck("angmom")) bytes += memory->usage(angmom,nmax,3); - if (atom->memcheck("torque")) bytes += - memory->usage(torque,nmax*comm->nthreads,3); - if (atom->memcheck("tri")) bytes += memory->usage(tri,nmax); + // also set radius = distance from center to corner-pt = len(c1) + // unless size = 0.0, then set diameter = 1.0 - bytes += nmax_bonus*sizeof(Bonus); + int *tri = atom->tri; - return bytes; + if (tri[i] < 0) { + if (size == 0.0) return; + if (nlocal_bonus == nmax_bonus) grow_bonus(); + double *quat = bonus[nlocal_bonus].quat; + double *c1 = bonus[nlocal_bonus].c1; + double *c2 = bonus[nlocal_bonus].c2; + double *c3 = bonus[nlocal_bonus].c3; + double *inertia = bonus[nlocal_bonus].inertia; + quat[0] = 1.0; + quat[1] = 0.0; + quat[2] = 0.0; + quat[3] = 0.0; + c1[0] = -size/2.0; + c1[1] = -sqrt(3.0)/2.0 * size / 3.0; + c1[2] = 0.0; + c2[0] = size/2.0; + c2[1] = -sqrt(3.0)/2.0 * size / 3.0; + c2[2] = 0.0; + c3[0] = 0.0; + c3[1] = sqrt(3.0)/2.0 * size * 2.0/3.0; + c3[2] = 0.0; + inertia[0] = sqrt(3.0)/96.0 * size*size*size*size; + inertia[1] = sqrt(3.0)/96.0 * size*size*size*size; + inertia[2] = sqrt(3.0)/48.0 * size*size*size*size; + atom->radius[i] = MathExtra::len3(c1); + bonus[nlocal_bonus].ilocal = i; + tri[i] = nlocal_bonus++; + } else if (size == 0.0) { + atom->radius[i] = 0.5; + copy_bonus_all(nlocal_bonus-1,tri[i]); + nlocal_bonus--; + tri[i] = -1; + } else { + double *c1 = bonus[tri[i]].c1; + double *c2 = bonus[tri[i]].c2; + double *c3 = bonus[tri[i]].c3; + double *inertia = bonus[tri[i]].inertia; + c1[0] = -size/2.0; + c1[1] = -sqrt(3.0)/2.0 * size / 3.0; + c1[2] = 0.0; + c2[0] = size/2.0; + c2[1] = -sqrt(3.0)/2.0 * size / 3.0; + c2[2] = 0.0; + c3[0] = 0.0; + c3[1] = sqrt(3.0)/2.0 * size * 2.0/3.0; + c3[2] = 0.0; + inertia[0] = sqrt(3.0)/96.0 * size*size*size*size; + inertia[1] = sqrt(3.0)/96.0 * size*size*size*size; + inertia[2] = sqrt(3.0)/48.0 * size*size*size*size; + atom->radius[i] = MathExtra::len3(c1); + } } diff --git a/src/atom_vec_tri.h b/src/atom_vec_tri.h index 81b4c1ada9..3c701067b2 100644 --- a/src/atom_vec_tri.h +++ b/src/atom_vec_tri.h @@ -37,49 +37,26 @@ class AtomVecTri : public AtomVec { AtomVecTri(class LAMMPS *); ~AtomVecTri(); void init(); - void grow(int); - void grow_reset(); - void copy(int, int, int); - int pack_comm(int, int *, double *, int, int *); - int pack_comm_vel(int, int *, double *, int, int *); - int pack_comm_hybrid(int, int *, double *); - void unpack_comm(int, int, double *); - void unpack_comm_vel(int, int, double *); - int unpack_comm_hybrid(int, int, double *); - int pack_reverse(int, int, double *); - int pack_reverse_hybrid(int, int, double *); - void unpack_reverse(int, int *, double *); - int unpack_reverse_hybrid(int, int *, double *); - int pack_border(int, int *, double *, int, int *); - int pack_border_vel(int, int *, double *, int, int *); - int pack_border_hybrid(int, int *, double *); - void unpack_border(int, int, double *); - void unpack_border_vel(int, int, double *); - int unpack_border_hybrid(int, int, double *); - int pack_exchange(int, double *); - int unpack_exchange(double *); - int size_restart(); - int pack_restart(int, double *); - int unpack_restart(double *); - void create_atom(int, double *); - void data_atom(double *, imageint, char **); - int data_atom_hybrid(int, char **); - void data_vel(int, char **); - int data_vel_hybrid(int, char **); - void pack_data(double **); - int pack_data_hybrid(int, double *); - void write_data(FILE *, int, double **); - int write_data_hybrid(FILE *, double *); - void pack_vel(double **); - int pack_vel_hybrid(int, double *); - void write_vel(FILE *, int, double **); - int write_vel_hybrid(FILE *, double *); - bigint memory_usage(); - - // manipulate Bonus data structure for extra atom info + void copy_bonus(int, int, int); void clear_bonus(); + int pack_comm_bonus(int, int *, double *); + void unpack_comm_bonus(int, int, double *); + int pack_reverse_bonus(int, int, double *); + int pack_border_bonus(int, int *, double *); + int unpack_border_bonus(int, int, double *); + int pack_exchange_bonus(int, double *); + int unpack_exchange_bonus(int, double *); + int size_restart_bonus(); + int pack_restart_bonus(int, double *); + int unpack_restart_bonus(int, double *); void data_atom_bonus(int, char **); + bigint memory_usage_bonus(); + + void create_atom_post(int); + void data_atom_post(int); + void pack_data_pre(int); + void pack_data_post(int); // unique to AtomVecTri @@ -88,19 +65,12 @@ class AtomVecTri : public AtomVec { int nlocal_bonus; private: - tagint *tag; - int *type,*mask; - imageint *image; - double **x,**v,**f; - tagint *molecule; - double *rmass,*radius; - double **omega,**angmom,**torque; - int *tri; - int nghost_bonus,nmax_bonus; + int tri_flag; + double rmass; void grow_bonus(); - void copy_bonus(int, int); + void copy_bonus_all(int, int); }; } diff --git a/src/read_data.cpp b/src/read_data.cpp index d558b87633..aa4e758744 100644 --- a/src/read_data.cpp +++ b/src/read_data.cpp @@ -568,7 +568,7 @@ void ReadData::command(int narg, char **arg) if (!avec_body) error->all(FLERR,"Invalid data file section: Bodies"); if (atomflag == 0) error->all(FLERR,"Must read Atoms before Bodies"); - bodies(firstpass); + bodies(firstpass,(AtomVec *) avec_body); } else if (strcmp(keyword,"Masses") == 0) { if (firstpass) mass(); @@ -1686,7 +1686,7 @@ void ReadData::bonus(bigint nbonus, AtomVec *ptr, const char *type) if not firstpass, just read past data, but no processing of data ------------------------------------------------------------------------- */ -void ReadData::bodies(int firstpass) +void ReadData::bodies(int firstpass, AtomVec *ptr) { int m,nchunk,nline,nmax,ninteger,ndouble,nword,ncount,onebody,tmp,rv; char *eof; @@ -1770,7 +1770,7 @@ void ReadData::bodies(int firstpass) MPI_Bcast(&m,1,MPI_INT,0,world); MPI_Bcast(buffer,m,MPI_CHAR,0,world); - if (firstpass) atom->data_bodies(nchunk,buffer,avec_body,id_offset); + if (firstpass) atom->data_bodies(nchunk,buffer,ptr,id_offset); nread += nchunk; } diff --git a/src/read_data.h b/src/read_data.h index 98de607f6b..aee54ef3ed 100644 --- a/src/read_data.h +++ b/src/read_data.h @@ -97,7 +97,7 @@ class ReadData : protected Pointers { void impropers(int); void bonus(bigint, class AtomVec *, const char *); - void bodies(int); + void bodies(int, class AtomVec *); void mass(); void paircoeffs(); -- GitLab From ccca80a6a5e5ba9b3d42a5aebaa11552fbd123fe Mon Sep 17 00:00:00 2001 From: Steve Plimpton Date: Mon, 2 Dec 2019 15:39:54 -0700 Subject: [PATCH 009/717] changes to enable atom_style hybrid to work --- src/DIPOLE/atom_vec_dipole.cpp | 8 +- src/MOLECULE/atom_vec_angle.cpp | 36 +-- src/MOLECULE/atom_vec_bond.cpp | 26 +- src/MOLECULE/atom_vec_full.cpp | 58 ++-- src/MOLECULE/atom_vec_molecular.cpp | 58 ++-- src/MOLECULE/atom_vec_template.cpp | 8 +- src/PERI/atom_vec_peri.cpp | 8 +- src/SPIN/atom_vec_spin.cpp | 6 +- src/USER-DPD/atom_vec_dpd.cpp | 8 +- src/USER-EFF/atom_vec_electron.cpp | 6 +- src/USER-MESO/atom_vec_edpd.cpp | 6 +- src/atom_vec.cpp | 325 +++++++++++---------- src/atom_vec.h | 3 +- src/atom_vec_atomic.cpp | 28 +- src/atom_vec_body.cpp | 8 +- src/atom_vec_body.h | 1 - src/atom_vec_charge.cpp | 14 +- src/atom_vec_ellipsoid.cpp | 8 +- src/atom_vec_ellipsoid.h | 1 - src/atom_vec_hybrid.cpp | 436 +++++++++++++++++++++++++--- src/atom_vec_hybrid.h | 38 ++- src/atom_vec_line.cpp | 8 +- src/atom_vec_line.h | 1 - src/atom_vec_sphere.cpp | 8 +- src/atom_vec_tri.cpp | 8 +- src/atom_vec_tri.h | 1 - 26 files changed, 761 insertions(+), 355 deletions(-) diff --git a/src/DIPOLE/atom_vec_dipole.cpp b/src/DIPOLE/atom_vec_dipole.cpp index 650bc14d8f..5cdbab1b33 100644 --- a/src/DIPOLE/atom_vec_dipole.cpp +++ b/src/DIPOLE/atom_vec_dipole.cpp @@ -35,21 +35,21 @@ AtomVecDipole::AtomVecDipole(LAMMPS *lmp) : AtomVec(lmp) // strings with peratom variables to include in each AtomVec method // strings cannot contain fields in corresponding AtomVec default strings - // order of fields in the string does not matter - // except fields_data_atom and fields_data_vel which must match data file + // order of fields in a string does not matter + // except: fields_data_atom & fields_data_vel must match data file fields_grow = (char *) "q mu"; fields_copy = (char *) "q mu"; fields_comm = (char *) "mu3"; fields_comm_vel = (char *) "mu3"; - fields_reverse = NULL; + fields_reverse = (char *) ""; fields_border = (char *) "q mu"; fields_border_vel = (char *) "q mu"; fields_exchange = (char *) "q mu"; fields_restart = (char *) "q mu"; fields_create = (char *) "q mu"; fields_data_atom = (char *) "id type q x mu3"; - fields_data_vel = NULL; + fields_data_vel = (char *) "id v"; setup_fields(); } diff --git a/src/MOLECULE/atom_vec_angle.cpp b/src/MOLECULE/atom_vec_angle.cpp index df48c4b2a0..1bd6f9a071 100644 --- a/src/MOLECULE/atom_vec_angle.cpp +++ b/src/MOLECULE/atom_vec_angle.cpp @@ -28,8 +28,8 @@ AtomVecAngle::AtomVecAngle(LAMMPS *lmp) : AtomVec(lmp) // strings with peratom variables to include in each AtomVec method // strings cannot contain fields in corresponding AtomVec default strings - // order of fields in the string does not matter - // except fields_data_atom and fields_data_vel which must match data file + // order of fields in a string does not matter + // except: fields_data_atom & fields_data_vel must match data file fields_grow = (char *) "molecule num_bond bond_type bond_atom " @@ -37,9 +37,9 @@ AtomVecAngle::AtomVecAngle(LAMMPS *lmp) : AtomVec(lmp) fields_copy = (char *) "molecule num_bond bond_type bond_atom " "num_angle angle_type angle_atom1 angle_atom2 angle_atom3 nspecial special"; - fields_comm = NULL; - fields_comm_vel = NULL; - fields_reverse = NULL; + fields_comm = (char *) ""; + fields_comm_vel = (char *) ""; + fields_reverse = (char *) ""; fields_border = (char *) "molecule"; fields_border_vel = (char *) "molecule"; fields_exchange = (char *) @@ -50,7 +50,7 @@ AtomVecAngle::AtomVecAngle(LAMMPS *lmp) : AtomVec(lmp) "num_angle angle_type angle_atom1 angle_atom2 angle_atom3"; fields_create = (char *) "molecule num_bond num_angle nspecial"; fields_data_atom = (char *) "id molecule type x"; - fields_data_vel = NULL; + fields_data_vel = (char *) "id v"; setup_fields(); @@ -70,7 +70,7 @@ AtomVecAngle::~AtomVecAngle() modify values for AtomVec::pack_restart() to pack ------------------------------------------------------------------------- */ -void AtomVecAngle::pack_restart_pre(int i) +void AtomVecAngle::pack_restart_pre(int ilocal) { // insure negative vectors are needed length @@ -93,19 +93,19 @@ void AtomVecAngle::pack_restart_pre(int i) int **angle_type = atom->angle_type; int any_bond_negative = 0; - for (int m = 0; m < num_bond[i]; m++) { - if (bond_type[i][m] < 0) { + for (int m = 0; m < num_bond[ilocal]; m++) { + if (bond_type[ilocal][m] < 0) { bond_negative[m] = 1; - bond_type[i][m] = -bond_type[i][m]; + bond_type[ilocal][m] = -bond_type[ilocal][m]; any_bond_negative = 1; } else bond_negative[m] = 0; } int any_angle_negative = 0; - for (int m = 0; m < num_angle[i]; m++) { - if (angle_type[i][m] < 0) { + for (int m = 0; m < num_angle[ilocal]; m++) { + if (angle_type[ilocal][m] < 0) { angle_negative[m] = 1; - angle_type[i][m] = -angle_type[i][m]; + angle_type[ilocal][m] = -angle_type[ilocal][m]; any_angle_negative = 1; } else angle_negative[m] = 0; } @@ -115,22 +115,22 @@ void AtomVecAngle::pack_restart_pre(int i) unmodify values packed by AtomVec::pack_restart() ------------------------------------------------------------------------- */ -void AtomVecAngle::pack_restart_post(int i) +void AtomVecAngle::pack_restart_post(int ilocal) { // restore the flagged types to their negative values if (any_bond_negative) { int *num_bond = atom->num_bond; int **bond_type = atom->bond_type; - for (int m = 0; m < num_bond[i]; m++) - if (bond_negative[m]) bond_type[i][m] = -bond_type[i][m]; + for (int m = 0; m < num_bond[ilocal]; m++) + if (bond_negative[m]) bond_type[ilocal][m] = -bond_type[ilocal][m]; } if (any_angle_negative) { int *num_angle = atom->num_angle; int **angle_type = atom->angle_type; - for (int m = 0; m < num_angle[i]; m++) - if (angle_negative[m]) angle_type[i][m] = -angle_type[i][m]; + for (int m = 0; m < num_angle[ilocal]; m++) + if (angle_negative[m]) angle_type[ilocal][m] = -angle_type[ilocal][m]; } } diff --git a/src/MOLECULE/atom_vec_bond.cpp b/src/MOLECULE/atom_vec_bond.cpp index fd3f08979d..30ad7d83e1 100644 --- a/src/MOLECULE/atom_vec_bond.cpp +++ b/src/MOLECULE/atom_vec_bond.cpp @@ -28,16 +28,16 @@ AtomVecBond::AtomVecBond(LAMMPS *lmp) : AtomVec(lmp) // strings with peratom variables to include in each AtomVec method // strings cannot contain fields in corresponding AtomVec default strings - // order of fields in the string does not matter - // except fields_data_atom and fields_data_vel which must match data file + // order of fields in a string does not matter + // except: fields_data_atom & fields_data_vel must match data file fields_grow = (char *) "molecule num_bond bond_type bond_atom nspecial special"; fields_copy = (char *) "molecule num_bond bond_type bond_atom nspecial special"; - fields_comm = NULL; - fields_comm_vel = NULL; - fields_reverse = NULL; + fields_comm = (char *) ""; + fields_comm_vel = (char *) ""; + fields_reverse = (char *) ""; fields_border = (char *) "molecule"; fields_border_vel = (char *) "molecule"; fields_exchange = (char *) @@ -45,7 +45,7 @@ AtomVecBond::AtomVecBond(LAMMPS *lmp) : AtomVec(lmp) fields_restart = (char *) "molecule num_bond bond_type bond_atom"; fields_create = (char *) "molecule num_bond nspecial"; fields_data_atom = (char *) "id molecule type x"; - fields_data_vel = NULL; + fields_data_vel = (char *) "id v"; setup_fields(); @@ -64,7 +64,7 @@ AtomVecBond::~AtomVecBond() modify values for AtomVec::pack_restart() to pack ------------------------------------------------------------------------- */ -void AtomVecBond::pack_restart_pre(int i) +void AtomVecBond::pack_restart_pre(int ilocal) { // insure bond_negative vector is needed length @@ -80,10 +80,10 @@ void AtomVecBond::pack_restart_pre(int i) int **bond_type = atom->bond_type; any_bond_negative = 0; - for (int m = 0; m < num_bond[i]; m++) { - if (bond_type[i][m] < 0) { + for (int m = 0; m < num_bond[ilocal]; m++) { + if (bond_type[ilocal][m] < 0) { bond_negative[m] = 1; - bond_type[i][m] = -bond_type[i][m]; + bond_type[ilocal][m] = -bond_type[ilocal][m]; any_bond_negative = 1; } else bond_negative[m] = 0; } @@ -93,15 +93,15 @@ void AtomVecBond::pack_restart_pre(int i) unmodify values packed by AtomVec::pack_restart() ------------------------------------------------------------------------- */ -void AtomVecBond::pack_restart_post(int i) +void AtomVecBond::pack_restart_post(int ilocal) { // restore the flagged types to their negative values if (any_bond_negative) { int *num_bond = atom->num_bond; int **bond_type = atom->bond_type; - for (int m = 0; m < num_bond[i]; m++) - if (bond_negative[m]) bond_type[i][m] = -bond_type[i][m]; + for (int m = 0; m < num_bond[ilocal]; m++) + if (bond_negative[m]) bond_type[ilocal][m] = -bond_type[ilocal][m]; } } diff --git a/src/MOLECULE/atom_vec_full.cpp b/src/MOLECULE/atom_vec_full.cpp index ed838aa0e3..9ab0a296e0 100644 --- a/src/MOLECULE/atom_vec_full.cpp +++ b/src/MOLECULE/atom_vec_full.cpp @@ -28,8 +28,8 @@ AtomVecFull::AtomVecFull(LAMMPS *lmp) : AtomVec(lmp) // strings with peratom variables to include in each AtomVec method // strings cannot contain fields in corresponding AtomVec default strings - // order of fields in the string does not matter - // except fields_data_atom and fields_data_vel which must match data file + // order of fields in a string does not matter + // except: fields_data_atom & fields_data_vel must match data file fields_grow = (char *) "q molecule num_bond bond_type bond_atom " @@ -47,9 +47,9 @@ AtomVecFull::AtomVecFull(LAMMPS *lmp) : AtomVec(lmp) "num_improper improper_type improper_atom1 improper_atom2 " "improper_atom3 improper_atom4 " "nspecial special"; - fields_comm = NULL; - fields_comm_vel = NULL; - fields_reverse = NULL; + fields_comm = (char *) ""; + fields_comm_vel = (char *) ""; + fields_reverse = (char *) ""; fields_border = (char *) "q molecule"; fields_border_vel = (char *) "q molecule"; fields_exchange = (char *) @@ -70,7 +70,7 @@ AtomVecFull::AtomVecFull(LAMMPS *lmp) : AtomVec(lmp) fields_create = (char *) "q molecule num_bond num_angle num_dihedral num_improper nspecial"; fields_data_atom = (char *) "id molecule type q x"; - fields_data_vel = NULL; + fields_data_vel = (char *) "id v"; setup_fields(); @@ -92,7 +92,7 @@ AtomVecFull::~AtomVecFull() modify values for AtomVec::pack_restart() to pack ------------------------------------------------------------------------- */ -void AtomVecFull::pack_restart_pre(int i) +void AtomVecFull::pack_restart_pre(int ilocal) { // insure negative vectors are needed length @@ -129,37 +129,37 @@ void AtomVecFull::pack_restart_pre(int i) int **improper_type = atom->improper_type; int any_bond_negative = 0; - for (int m = 0; m < num_bond[i]; m++) { - if (bond_type[i][m] < 0) { + for (int m = 0; m < num_bond[ilocal]; m++) { + if (bond_type[ilocal][m] < 0) { bond_negative[m] = 1; - bond_type[i][m] = -bond_type[i][m]; + bond_type[ilocal][m] = -bond_type[ilocal][m]; any_bond_negative = 1; } else bond_negative[m] = 0; } int any_angle_negative = 0; - for (int m = 0; m < num_angle[i]; m++) { - if (angle_type[i][m] < 0) { + for (int m = 0; m < num_angle[ilocal]; m++) { + if (angle_type[ilocal][m] < 0) { angle_negative[m] = 1; - angle_type[i][m] = -angle_type[i][m]; + angle_type[ilocal][m] = -angle_type[ilocal][m]; any_angle_negative = 1; } else angle_negative[m] = 0; } int any_dihedral_negative = 0; - for (int m = 0; m < num_dihedral[i]; m++) { - if (dihedral_type[i][m] < 0) { + for (int m = 0; m < num_dihedral[ilocal]; m++) { + if (dihedral_type[ilocal][m] < 0) { dihedral_negative[m] = 1; - dihedral_type[i][m] = -dihedral_type[i][m]; + dihedral_type[ilocal][m] = -dihedral_type[ilocal][m]; any_dihedral_negative = 1; } else dihedral_negative[m] = 0; } int any_improper_negative = 0; - for (int m = 0; m < num_improper[i]; m++) { - if (improper_type[i][m] < 0) { + for (int m = 0; m < num_improper[ilocal]; m++) { + if (improper_type[ilocal][m] < 0) { improper_negative[m] = 1; - improper_type[i][m] = -improper_type[i][m]; + improper_type[ilocal][m] = -improper_type[ilocal][m]; any_improper_negative = 1; } else improper_negative[m] = 0; } @@ -169,36 +169,38 @@ void AtomVecFull::pack_restart_pre(int i) unmodify values packed by AtomVec::pack_restart() ------------------------------------------------------------------------- */ -void AtomVecFull::pack_restart_post(int i) +void AtomVecFull::pack_restart_post(int ilocal) { // restore the flagged types to their negative values if (any_bond_negative) { int *num_bond = atom->num_bond; int **bond_type = atom->bond_type; - for (int m = 0; m < num_bond[i]; m++) - if (bond_negative[m]) bond_type[i][m] = -bond_type[i][m]; + for (int m = 0; m < num_bond[ilocal]; m++) + if (bond_negative[m]) bond_type[ilocal][m] = -bond_type[ilocal][m]; } if (any_angle_negative) { int *num_angle = atom->num_angle; int **angle_type = atom->angle_type; - for (int m = 0; m < num_angle[i]; m++) - if (angle_negative[m]) angle_type[i][m] = -angle_type[i][m]; + for (int m = 0; m < num_angle[ilocal]; m++) + if (angle_negative[m]) angle_type[ilocal][m] = -angle_type[ilocal][m]; } if (any_dihedral_negative) { int *num_dihedral = atom->num_dihedral; int **dihedral_type = atom->dihedral_type; - for (int m = 0; m < num_dihedral[i]; m++) - if (dihedral_negative[m]) dihedral_type[i][m] = -dihedral_type[i][m]; + for (int m = 0; m < num_dihedral[ilocal]; m++) + if (dihedral_negative[m]) + dihedral_type[ilocal][m] = -dihedral_type[ilocal][m]; } if (any_improper_negative) { int *num_improper = atom->num_improper; int **improper_type = atom->improper_type; - for (int m = 0; m < num_improper[i]; m++) - if (improper_negative[m]) improper_type[i][m] = -improper_type[i][m]; + for (int m = 0; m < num_improper[ilocal]; m++) + if (improper_negative[m]) + improper_type[ilocal][m] = -improper_type[ilocal][m]; } } diff --git a/src/MOLECULE/atom_vec_molecular.cpp b/src/MOLECULE/atom_vec_molecular.cpp index 77aec2cf50..52947ceb71 100644 --- a/src/MOLECULE/atom_vec_molecular.cpp +++ b/src/MOLECULE/atom_vec_molecular.cpp @@ -28,8 +28,8 @@ AtomVecMolecular::AtomVecMolecular(LAMMPS *lmp) : AtomVec(lmp) // strings with peratom variables to include in each AtomVec method // strings cannot contain fields in corresponding AtomVec default strings - // order of fields in the string does not matter - // except fields_data_atom and fields_data_vel which must match data file + // order of fields in a string does not matter + // except: fields_data_atom & fields_data_vel must match data file fields_grow = (char *) "molecule num_bond bond_type bond_atom " @@ -47,9 +47,9 @@ AtomVecMolecular::AtomVecMolecular(LAMMPS *lmp) : AtomVec(lmp) "num_improper improper_type improper_atom1 improper_atom2 " "improper_atom3 improper_atom4 " "nspecial special"; - fields_comm = NULL; - fields_comm_vel = NULL; - fields_reverse = NULL; + fields_comm = (char *) ""; + fields_comm_vel = (char *) ""; + fields_reverse = (char *) ""; fields_border = (char *) "molecule"; fields_border_vel = (char *) "molecule"; fields_exchange = (char *) @@ -70,7 +70,7 @@ AtomVecMolecular::AtomVecMolecular(LAMMPS *lmp) : AtomVec(lmp) fields_create = (char *) "molecule num_bond num_angle num_dihedral num_improper nspecial"; fields_data_atom = (char *) "id molecule type x"; - fields_data_vel = NULL; + fields_data_vel = (char *) "id v"; setup_fields(); @@ -92,7 +92,7 @@ AtomVecMolecular::~AtomVecMolecular() modify values for AtomVec::pack_restart() to pack ------------------------------------------------------------------------- */ -void AtomVecMolecular::pack_restart_pre(int i) +void AtomVecMolecular::pack_restart_pre(int ilocal) { // insure negative vectors are needed length @@ -129,37 +129,37 @@ void AtomVecMolecular::pack_restart_pre(int i) int **improper_type = atom->improper_type; int any_bond_negative = 0; - for (int m = 0; m < num_bond[i]; m++) { - if (bond_type[i][m] < 0) { + for (int m = 0; m < num_bond[ilocal]; m++) { + if (bond_type[ilocal][m] < 0) { bond_negative[m] = 1; - bond_type[i][m] = -bond_type[i][m]; + bond_type[ilocal][m] = -bond_type[ilocal][m]; any_bond_negative = 1; } else bond_negative[m] = 0; } int any_angle_negative = 0; - for (int m = 0; m < num_angle[i]; m++) { - if (angle_type[i][m] < 0) { + for (int m = 0; m < num_angle[ilocal]; m++) { + if (angle_type[ilocal][m] < 0) { angle_negative[m] = 1; - angle_type[i][m] = -angle_type[i][m]; + angle_type[ilocal][m] = -angle_type[ilocal][m]; any_angle_negative = 1; } else angle_negative[m] = 0; } int any_dihedral_negative = 0; - for (int m = 0; m < num_dihedral[i]; m++) { - if (dihedral_type[i][m] < 0) { + for (int m = 0; m < num_dihedral[ilocal]; m++) { + if (dihedral_type[ilocal][m] < 0) { dihedral_negative[m] = 1; - dihedral_type[i][m] = -dihedral_type[i][m]; + dihedral_type[ilocal][m] = -dihedral_type[ilocal][m]; any_dihedral_negative = 1; } else dihedral_negative[m] = 0; } int any_improper_negative = 0; - for (int m = 0; m < num_improper[i]; m++) { - if (improper_type[i][m] < 0) { + for (int m = 0; m < num_improper[ilocal]; m++) { + if (improper_type[ilocal][m] < 0) { improper_negative[m] = 1; - improper_type[i][m] = -improper_type[i][m]; + improper_type[ilocal][m] = -improper_type[ilocal][m]; any_improper_negative = 1; } else improper_negative[m] = 0; } @@ -169,36 +169,38 @@ void AtomVecMolecular::pack_restart_pre(int i) unmodify values packed by AtomVec::pack_restart() ------------------------------------------------------------------------- */ -void AtomVecMolecular::pack_restart_post(int i) +void AtomVecMolecular::pack_restart_post(int ilocal) { // restore the flagged types to their negative values if (any_bond_negative) { int *num_bond = atom->num_bond; int **bond_type = atom->bond_type; - for (int m = 0; m < num_bond[i]; m++) - if (bond_negative[m]) bond_type[i][m] = -bond_type[i][m]; + for (int m = 0; m < num_bond[ilocal]; m++) + if (bond_negative[m]) bond_type[ilocal][m] = -bond_type[ilocal][m]; } if (any_angle_negative) { int *num_angle = atom->num_angle; int **angle_type = atom->angle_type; - for (int m = 0; m < num_angle[i]; m++) - if (angle_negative[m]) angle_type[i][m] = -angle_type[i][m]; + for (int m = 0; m < num_angle[ilocal]; m++) + if (angle_negative[m]) angle_type[ilocal][m] = -angle_type[ilocal][m]; } if (any_dihedral_negative) { int *num_dihedral = atom->num_dihedral; int **dihedral_type = atom->dihedral_type; - for (int m = 0; m < num_dihedral[i]; m++) - if (dihedral_negative[m]) dihedral_type[i][m] = -dihedral_type[i][m]; + for (int m = 0; m < num_dihedral[ilocal]; m++) + if (dihedral_negative[m]) + dihedral_type[ilocal][m] = -dihedral_type[ilocal][m]; } if (any_improper_negative) { int *num_improper = atom->num_improper; int **improper_type = atom->improper_type; - for (int m = 0; m < num_improper[i]; m++) - if (improper_negative[m]) improper_type[i][m] = -improper_type[i][m]; + for (int m = 0; m < num_improper[ilocal]; m++) + if (improper_negative[m]) + improper_type[ilocal][m] = -improper_type[ilocal][m]; } } diff --git a/src/MOLECULE/atom_vec_template.cpp b/src/MOLECULE/atom_vec_template.cpp index f8f99ae8a8..546c19da12 100644 --- a/src/MOLECULE/atom_vec_template.cpp +++ b/src/MOLECULE/atom_vec_template.cpp @@ -40,16 +40,16 @@ AtomVecTemplate::AtomVecTemplate(LAMMPS *lmp) : AtomVec(lmp) fields_grow = (char *) "molecule molindex molatom"; fields_copy = (char *) "molecule molindex molatom"; - fields_comm = NULL; - fields_comm_vel = NULL; - fields_reverse = NULL; + fields_comm = (char *) ""; + fields_comm_vel = (char *) ""; + fields_reverse = (char *) ""; fields_border = (char *) "molecule molindex molatom"; fields_border_vel = (char *) "molecule molindex molatom"; fields_exchange = (char *) "molecule molindex molatom"; fields_restart = (char *) "molecule molindex molatom"; fields_create = (char *) "molecule molindex molatom"; fields_data_atom = (char *) "id molecule molindex molatom type x"; - fields_data_vel = NULL; + fields_data_vel = (char *) ""; setup_fields(); } diff --git a/src/PERI/atom_vec_peri.cpp b/src/PERI/atom_vec_peri.cpp index 4fcebc2f84..58ff9c54d9 100644 --- a/src/PERI/atom_vec_peri.cpp +++ b/src/PERI/atom_vec_peri.cpp @@ -50,21 +50,21 @@ AtomVecPeri::AtomVecPeri(LAMMPS *lmp) : AtomVec(lmp) // strings with peratom variables to include in each AtomVec method // strings cannot contain fields in corresponding AtomVec default strings - // order of fields in the string does not matter - // except fields_data_atom and fields_data_vel which must match data file + // order of fields in a string does not matter + // except: fields_data_atom & fields_data_vel must match data file fields_grow = (char *) "rmass vfrac s0 x0"; fields_copy = (char *) "rmass vfrac s0 x0"; fields_comm = (char *) "s0"; fields_comm_vel = (char *) "s0"; - fields_reverse = NULL; + fields_reverse = (char *) ""; fields_border = (char *) "rmass vfrac s0 x0"; fields_border_vel = (char *) "rmass vfrac s0 x0"; fields_exchange = (char *) "rmass vfrac s0 x0"; fields_restart = (char *) "rmass vfrac s0 x0"; fields_create = (char *) "rmass vfrac s0 x0"; fields_data_atom = (char *) "id type vfrac rmass x"; - fields_data_vel = (char *) "omega"; + fields_data_vel = (char *) "id v omega"; setup_fields(); } diff --git a/src/SPIN/atom_vec_spin.cpp b/src/SPIN/atom_vec_spin.cpp index 6c88fb1a9e..a8ff15492a 100644 --- a/src/SPIN/atom_vec_spin.cpp +++ b/src/SPIN/atom_vec_spin.cpp @@ -42,8 +42,8 @@ AtomVecSpin::AtomVecSpin(LAMMPS *lmp) : AtomVec(lmp) // strings with peratom variables to include in each AtomVec method // strings cannot contain fields in corresponding AtomVec default strings - // order of fields in the string does not matter - // except fields_data_atom and fields_data_vel which must match data file + // order of fields in a string does not matter + // except: fields_data_atom & fields_data_vel must match data file fields_grow = (char *) "sp fm fm_long"; fields_copy = (char *) "sp"; @@ -56,7 +56,7 @@ AtomVecSpin::AtomVecSpin(LAMMPS *lmp) : AtomVec(lmp) fields_restart = (char *) "sp"; fields_create = (char *) "sp"; fields_data_atom = (char *) "id type x sp"; - fields_data_vel = (char *) "omega"; + fields_data_vel = (char *) "id v omega"; setup_fields(); } diff --git a/src/USER-DPD/atom_vec_dpd.cpp b/src/USER-DPD/atom_vec_dpd.cpp index 27e0f70a20..ce35178d8d 100644 --- a/src/USER-DPD/atom_vec_dpd.cpp +++ b/src/USER-DPD/atom_vec_dpd.cpp @@ -33,21 +33,21 @@ AtomVecDPD::AtomVecDPD(LAMMPS *lmp) : AtomVec(lmp) // strings with peratom variables to include in each AtomVec method // strings cannot contain fields in corresponding AtomVec default strings - // order of fields in the string does not matter - // except fields_data_atom and fields_data_vel which must match data file + // order of fields in a string does not matter + // except: fields_data_atom & fields_data_vel must match data file fields_grow = (char *) "rho dpdTheta uCond uMech uChem uCG uCGnew duChem"; fields_copy = (char *) "dpdTheta uCond uMech uChem uCG uCGnew"; fields_comm = (char *) "dpdTheta uCond uMech uChem"; fields_comm_vel = (char *) "dpdTheta uCond uMech uChem"; - fields_reverse = NULL; + fields_reverse = (char *) ""; fields_border = (char *) "dpdTheta uCond uMech uChem uCG uCGnew"; fields_border_vel = (char *) "dpdTheta uCond uMech uChem uCG uCGnew"; fields_exchange = (char *) "dpdTheta uCond uMech uChem uCG uCGnew"; fields_restart = (char *) "dpdTheta uCond uMech uChem"; fields_create = (char *) "rho dpdTheta uCond uMech uChem uCG uCGnew duChem"; fields_data_atom = (char *) "id type dpdTheta x"; - fields_data_vel = (char *) "omega"; + fields_data_vel = (char *) "id v omega"; setup_fields(); } diff --git a/src/USER-EFF/atom_vec_electron.cpp b/src/USER-EFF/atom_vec_electron.cpp index fc73bf4dd5..0bad0f115f 100644 --- a/src/USER-EFF/atom_vec_electron.cpp +++ b/src/USER-EFF/atom_vec_electron.cpp @@ -56,8 +56,8 @@ AtomVecElectron::AtomVecElectron(LAMMPS *lmp) : AtomVec(lmp) // strings with peratom variables to include in each AtomVec method // strings cannot contain fields in corresponding AtomVec default strings - // order of fields in the string does not matter - // except fields_data_atom and fields_data_vel which must match data file + // order of fields in a string does not matter + // except: fields_data_atom & fields_data_vel must match data file fields_grow = (char *) "q spin eradius ervel erforce"; fields_copy = (char *) "q spin eradius ervel"; @@ -70,7 +70,7 @@ AtomVecElectron::AtomVecElectron(LAMMPS *lmp) : AtomVec(lmp) fields_restart = (char *) "q spin eradius ervel"; fields_create = (char *) "q spin eradius ervel"; fields_data_atom = (char *) "id type q spin eradius x"; - fields_data_vel = (char *) "ervel"; + fields_data_vel = (char *) "id v ervel"; setup_fields(); } diff --git a/src/USER-MESO/atom_vec_edpd.cpp b/src/USER-MESO/atom_vec_edpd.cpp index 59cee397b5..b4602c760c 100644 --- a/src/USER-MESO/atom_vec_edpd.cpp +++ b/src/USER-MESO/atom_vec_edpd.cpp @@ -41,8 +41,8 @@ AtomVecEDPD::AtomVecEDPD(LAMMPS *lmp) : AtomVec(lmp) // strings with peratom variables to include in each AtomVec method // strings cannot contain fields in corresponding AtomVec default strings - // order of fields in the string does not matter - // except fields_data_atom and fields_data_vel which must match data file + // order of fields in a string does not matter + // except: fields_data_atom & fields_data_vel must match data file fields_grow = (char *) "edpd_cv edpd_temp edpd_flux vest"; fields_copy = (char *) "edpd_cv edpd_temp edpd_flux vest"; @@ -55,7 +55,7 @@ AtomVecEDPD::AtomVecEDPD(LAMMPS *lmp) : AtomVec(lmp) fields_restart = (char * ) "edpd_cv edpd_temp vest"; fields_create = (char *) "edpd_cv edpd_temp edpd_flux vest"; fields_data_atom = (char *) "id type edpd_temp edpd_cv x"; - fields_data_vel = NULL; + fields_data_vel = (char *) "id v"; setup_fields(); } diff --git a/src/atom_vec.cpp b/src/atom_vec.cpp index ed56151d33..cfbc8b12a6 100644 --- a/src/atom_vec.cpp +++ b/src/atom_vec.cpp @@ -55,20 +55,19 @@ AtomVec::AtomVec(LAMMPS *lmp) : Pointers(lmp) // peratom variables auto-included in corresponding child style fields string // these fields cannot be specified in the fields string - // leading/trailing whitespace just facilitates matching in process_args() - - default_grow = " id type mask image x v f "; - default_copy = " id type mask image x v "; - default_comm = " x "; - default_comm_vel = " x v "; - default_reverse = " f "; - default_border = " id type mask x "; - default_border_vel = " id type mask x v "; - default_exchange = " id type mask image x v "; - default_restart = " id type mask image x v "; - default_create = " id type mask image x v "; + + default_grow = "id type mask image x v f"; + default_copy = "id type mask image x v"; + default_comm = "x"; + default_comm_vel = "x v"; + default_reverse = "f"; + default_border = "id type mask x"; + default_border_vel = "id type mask x v"; + default_exchange = "id type mask image x v"; + default_restart = "id type mask image x v"; + default_create = "id type mask image x v"; default_data_atom = ""; - default_data_vel = " v "; + default_data_vel = ""; // initializations @@ -1757,6 +1756,7 @@ void AtomVec::pack_data(double **buf) void *pdata; int nlocal = atom->nlocal; + for (int i = 0; i < nlocal; i++) { // if needed, change values before packing @@ -1877,37 +1877,39 @@ void AtomVec::data_vel(int ilocal, char **values) v[ilocal][1] = utils::numeric(FLERR,values[1],true,lmp); v[ilocal][2] = utils::numeric(FLERR,values[2],true,lmp); - int ivalue = 3; - for (n = 0; n < ndata_vel; n++) { - pdata = mdata_vel.pdata[n]; - datatype = mdata_vel.datatype[n]; - cols = mdata_vel.cols[n]; - if (datatype == DOUBLE) { - if (cols == 0) { - double *vec = *((double **) pdata); - vec[ilocal] = utils::numeric(FLERR,values[ivalue++],true,lmp); - } else { - double **array = *((double ***) pdata); - for (m = 0; m < cols; m++) - array[ilocal][m] = utils::numeric(FLERR,values[ivalue++],true,lmp); - } - } else if (datatype == INT) { - if (cols == 0) { - int *vec = *((int **) pdata); - vec[ilocal] = utils::inumeric(FLERR,values[ivalue++],true,lmp); - } else { - int **array = *((int ***) pdata); - for (m = 0; m < cols; m++) - array[ilocal][m] = utils::inumeric(FLERR,values[ivalue++],true,lmp); - } - } else if (datatype == BIGINT) { - if (cols == 0) { - bigint *vec = *((bigint **) pdata); - vec[ilocal] = utils::bnumeric(FLERR,values[ivalue++],true,lmp); - } else { - bigint **array = *((bigint ***) pdata); - for (m = 0; m < cols; m++) - array[ilocal][m] = utils::bnumeric(FLERR,values[ivalue++],true,lmp); + if (ndata_vel) { + int ivalue = 3; + for (n = 0; n < ndata_vel; n++) { + pdata = mdata_vel.pdata[n]; + datatype = mdata_vel.datatype[n]; + cols = mdata_vel.cols[n]; + if (datatype == DOUBLE) { + if (cols == 0) { + double *vec = *((double **) pdata); + vec[ilocal] = utils::numeric(FLERR,values[ivalue++],true,lmp); + } else { + double **array = *((double ***) pdata); + for (m = 0; m < cols; m++) + array[ilocal][m] = utils::numeric(FLERR,values[ivalue++],true,lmp); + } + } else if (datatype == INT) { + if (cols == 0) { + int *vec = *((int **) pdata); + vec[ilocal] = utils::inumeric(FLERR,values[ivalue++],true,lmp); + } else { + int **array = *((int ***) pdata); + for (m = 0; m < cols; m++) + array[ilocal][m] = utils::inumeric(FLERR,values[ivalue++],true,lmp); + } + } else if (datatype == BIGINT) { + if (cols == 0) { + bigint *vec = *((bigint **) pdata); + vec[ilocal] = utils::bnumeric(FLERR,values[ivalue++],true,lmp); + } else { + bigint **array = *((bigint ***) pdata); + for (m = 0; m < cols; m++) + array[ilocal][m] = utils::bnumeric(FLERR,values[ivalue++],true,lmp); + } } } } @@ -1922,49 +1924,40 @@ void AtomVec::pack_vel(double **buf) int i,j,m,n,datatype,cols; void *pdata; - double **v = atom->v; - tagint *tag = atom->tag; int nlocal = atom->nlocal; for (i = 0; i < nlocal; i++) { - buf[i][0] = ubuf(tag[i]).d; - buf[i][1] = v[i][0]; - buf[i][2] = v[i][1]; - buf[i][3] = v[i][2]; - - j = 4; - if (ndata_vel) { - for (n = 0; n < ndata_vel; n++) { - pdata = mdata_vel.pdata[n]; - datatype = mdata_vel.datatype[n]; - cols = mdata_vel.cols[n]; - if (datatype == DOUBLE) { - if (cols == 0) { - double *vec = *((double **) pdata); - buf[i][j++] = vec[i]; - } else { - double **array = *((double ***) pdata); - for (m = 0; m < cols; m++) - buf[i][j++] = array[i][m]; - } - } else if (datatype == INT) { - if (cols == 0) { - int *vec = *((int **) pdata); - buf[i][j++] = ubuf(vec[i]).d; - } else { - int **array = *((int ***) pdata); - for (m = 0; m < cols; m++) - buf[i][j++] = ubuf(array[i][m]).d; - } - } else if (datatype == BIGINT) { - if (cols == 0) { - bigint *vec = *((bigint **) pdata); - buf[i][j++] = ubuf(vec[i]).d; - } else { - bigint **array = *((bigint ***) pdata); - for (m = 0; m < cols; m++) - buf[i][j++] = ubuf(array[i][m]).d; - } + j = 0; + for (n = 0; n < ndata_vel; n++) { + pdata = mdata_vel.pdata[n]; + datatype = mdata_vel.datatype[n]; + cols = mdata_vel.cols[n]; + if (datatype == DOUBLE) { + if (cols == 0) { + double *vec = *((double **) pdata); + buf[i][j++] = vec[i]; + } else { + double **array = *((double ***) pdata); + for (m = 0; m < cols; m++) + buf[i][j++] = array[i][m]; + } + } else if (datatype == INT) { + if (cols == 0) { + int *vec = *((int **) pdata); + buf[i][j++] = ubuf(vec[i]).d; + } else { + int **array = *((int ***) pdata); + for (m = 0; m < cols; m++) + buf[i][j++] = ubuf(array[i][m]).d; + } + } else if (datatype == BIGINT) { + if (cols == 0) { + bigint *vec = *((bigint **) pdata); + buf[i][j++] = ubuf(vec[i]).d; + } else { + bigint **array = *((bigint ***) pdata); + for (m = 0; m < cols; m++) + buf[i][j++] = ubuf(array[i][m]).d; } } } @@ -1985,37 +1978,39 @@ void AtomVec::write_vel(FILE *fp, int n, double **buf) fprintf(fp,TAGINT_FORMAT " %-1.16e %-1.16e %-1.16e\n", (tagint) ubuf(buf[i][0]).i,buf[i][1],buf[i][2],buf[i][3]); - j = 4; - for (nn = 0; nn < ndata_vel; nn++) { - pdata = mdata_vel.pdata[nn]; - datatype = mdata_vel.datatype[nn]; - cols = mdata_vel.cols[nn]; - if (datatype == DOUBLE) { - if (cols == 0) { - double *vec = *((double **) pdata); - fprintf(fp," %-1.16e",buf[i][j++]); - } else { - double **array = *((double ***) pdata); - for (m = 0; m < cols; m++) + if (ndata_vel) { + j = 4; + for (nn = 0; nn < ndata_vel; nn++) { + pdata = mdata_vel.pdata[nn]; + datatype = mdata_vel.datatype[nn]; + cols = mdata_vel.cols[nn]; + if (datatype == DOUBLE) { + if (cols == 0) { + double *vec = *((double **) pdata); fprintf(fp," %-1.16e",buf[i][j++]); - } - } else if (datatype == INT) { - if (cols == 0) { - int *vec = *((int **) pdata); - fprintf(fp," %d",(int) ubuf(buf[i][j++]).i); - } else { - int **array = *((int ***) pdata); - for (m = 0; m < cols; m++) + } else { + double **array = *((double ***) pdata); + for (m = 0; m < cols; m++) + fprintf(fp," %-1.16e",buf[i][j++]); + } + } else if (datatype == INT) { + if (cols == 0) { + int *vec = *((int **) pdata); fprintf(fp," %d",(int) ubuf(buf[i][j++]).i); - } - } else if (datatype == BIGINT) { - if (cols == 0) { - bigint *vec = *((bigint **) pdata); - fprintf(fp," " BIGINT_FORMAT,(bigint) ubuf(buf[i][j++]).i); - } else { - bigint **array = *((bigint ***) pdata); - for (m = 0; m < cols; m++) + } else { + int **array = *((int ***) pdata); + for (m = 0; m < cols; m++) + fprintf(fp," %d",(int) ubuf(buf[i][j++]).i); + } + } else if (datatype == BIGINT) { + if (cols == 0) { + bigint *vec = *((bigint **) pdata); fprintf(fp," " BIGINT_FORMAT,(bigint) ubuf(buf[i][j++]).i); + } else { + bigint **array = *((bigint ***) pdata); + for (m = 0; m < cols; m++) + fprintf(fp," " BIGINT_FORMAT,(bigint) ubuf(buf[i][j++]).i); + } } } } @@ -2342,10 +2337,11 @@ void AtomVec::setup_fields() { int n,cols; - if (!fields_data_atom) - error->all(FLERR,"Atom style requires fields_data_atom"); if (strstr(fields_data_atom,"id ") != fields_data_atom) error->all(FLERR,"Atom style fields_data_atom must have id as first field"); + if (strstr(fields_data_vel,"id v") != fields_data_vel) + error->all(FLERR,"Atom style fields_data_vel must have " + "'id v' as first fields"); // process field strings // return # of fields and matching index into atom->peratom (in Method struct) @@ -2387,7 +2383,7 @@ void AtomVec::setup_fields() else threads[i] = 1; } - // set style-specific variables + // set style-specific sizes // NOTE: check for others vars in atom_vec.cpp/h ?? // NOTE: need to set maxexchange, e.g for style hybrid? @@ -2437,7 +2433,7 @@ void AtomVec::setup_fields() else size_data_atom += cols; } - size_data_vel = 4; + size_data_vel = 0; for (n = 0; n < ndata_vel; n++) { cols = mdata_vel.cols[n]; if (cols == 0) size_data_vel++; @@ -2449,61 +2445,96 @@ void AtomVec::setup_fields() process a single field string ------------------------------------------------------------------------- */ -int AtomVec::process_fields(char *list, const char *default_list, Method *method) +int AtomVec::process_fields(char *str, const char *default_str, Method *method) { - int i,n; - char match[128]; - - if (list == NULL) { + if (str == NULL) { method->index = NULL; return 0; } - // make copy of list of fields so can tokenize it - - n = strlen(list) + 1; - char *copy = new char[n]; - strcpy(copy,list); + // tokenize words in both strings - int nfield = atom->count_words(copy); - int *index = new int[nfield]; + char *copy1,*copy2; + char **words,**defwords; + int nfield = tokenize(str,words,copy1); + int ndef = tokenize((char *) default_str,defwords,copy2); + // process fields one by one, add to index vector + Atom::PerAtom *peratom = atom->peratom; int nperatom = atom->nperatom; - - nfield = 0; - char *field = strtok(copy," "); - while (field) { + + int *index = new int[nfield]; + int match; + + for (int i = 0; i < nfield; i++) { // find field in master Atom::peratom list - for (i = 0; i < nperatom; i++) - if (strcmp(field,peratom[i].name) == 0) break; - if (i == nperatom) { - printf("FIELD %s\n",field); - error->all(FLERR,"Atom_style unrecognized peratom field"); + for (match = 0; match < nperatom; match++) + if (strcmp(words[i],peratom[match].name) == 0) break; + if (match == nperatom) { + char str[128]; + sprintf(str,"Peratom field %s not recognized",words[i]); + error->all(FLERR,str); } - index[nfield++] = i; + index[i] = match; + + // error if field appears multiple times - // error if field is in default list or appears multiple times + for (match = 0; match < i; match++) + if (index[i] == index[match]) { + char str[128]; + sprintf(str,"Peratom field %s is repeated",words[i]); + error->all(FLERR,str); + } - sprintf(match," %s ",field); - if (strstr(default_list,match)) - error->all(FLERR,"Atom_style repeat of default peratom field"); + // error if field is in default str - for (i = 0; i < nfield-1; i++) - if (index[i] == index[nfield-1]) - error->all(FLERR,"Atom_style duplicated peratom field"); + for (match = 0; match < ndef; match++) + if (strcmp(words[i],defwords[match]) == 0) { + char str[128]; + sprintf(str,"Peratom field %s is a default",words[i]); + error->all(FLERR,str); + } - field = strtok(NULL," "); } - delete [] copy; + delete [] copy1; + delete [] copy2; + delete [] words; + delete [] defwords; method->index = index; return nfield; } +/* ---------------------------------------------------------------------- + tokenize str into white-space separated words + return nwords = number of words + return words = vector of ptrs to each word + also return copystr since words points into it, caller will delete copystr +------------------------------------------------------------------------- */ + +int AtomVec::tokenize(char *str, char **&words, char *©str) +{ + int n = strlen(str) + 1; + copystr = new char[n]; + strcpy(copystr,str); + + int nword = atom->count_words(copystr); + words = new char*[nword]; + + nword = 0; + char *word = strtok(copystr," "); + while (word) { + words[nword++] = word; + word = strtok(NULL," "); + } + + return nword; +} + /* ---------------------------------------------------------------------- create a method data structs for processing fields ------------------------------------------------------------------------- */ diff --git a/src/atom_vec.h b/src/atom_vec.h index 33bf4a3ccd..69ea1d51ab 100644 --- a/src/atom_vec.h +++ b/src/atom_vec.h @@ -55,7 +55,7 @@ class AtomVec : protected Pointers { char **argcopy; // used when AtomVec is realloced (restart,replicate) // additional list of peratom fields operated on by different methods - // set by child styles + // set or created by child styles char *fields_grow,*fields_copy; char *fields_comm,*fields_comm_vel,*fields_reverse; @@ -220,6 +220,7 @@ class AtomVec : protected Pointers { int grow_nmax_bonus(int); void setup_fields(); int process_fields(char *, const char *, Method *); + int tokenize(char *, char **&, char *&); void create_method(int, Method *); void init_method(Method *); void destroy_method(Method *); diff --git a/src/atom_vec_atomic.cpp b/src/atom_vec_atomic.cpp index a283e99081..eb8dfc1b7e 100644 --- a/src/atom_vec_atomic.cpp +++ b/src/atom_vec_atomic.cpp @@ -24,21 +24,21 @@ AtomVecAtomic::AtomVecAtomic(LAMMPS *lmp) : AtomVec(lmp) // strings with peratom variables to include in each AtomVec method // strings cannot contain fields in corresponding AtomVec default strings - // order of fields in the string does not matter - // except fields_data_atom and fields_data_vel which must match data file - - fields_grow = NULL; - fields_copy = NULL; - fields_comm = NULL; - fields_comm_vel = NULL; - fields_reverse = NULL; - fields_border = NULL; - fields_border_vel = NULL; - fields_exchange = NULL; - fields_restart = NULL; - fields_create = NULL; + // order of fields in a string does not matter + // except: fields_data_atom & fields_data_vel must match data file + + fields_grow = (char *) ""; + fields_copy = (char *) ""; + fields_comm = (char *) ""; + fields_comm_vel = (char *) ""; + fields_reverse = (char *) ""; + fields_border = (char *) ""; + fields_border_vel = (char *) ""; + fields_exchange = (char *) ""; + fields_restart = (char *) ""; + fields_create = (char *) ""; fields_data_atom = (char *) "id type x"; - fields_data_vel = NULL; + fields_data_vel = (char *) "id v"; setup_fields(); } diff --git a/src/atom_vec_body.cpp b/src/atom_vec_body.cpp index 1a8c2defd9..19ac69cef3 100644 --- a/src/atom_vec_body.cpp +++ b/src/atom_vec_body.cpp @@ -60,12 +60,12 @@ AtomVecBody::AtomVecBody(LAMMPS *lmp) : AtomVec(lmp) // strings with peratom variables to include in each AtomVec method // strings cannot contain fields in corresponding AtomVec default strings - // order of fields in the string does not matter - // except fields_data_atom and fields_data_vel which must match data file + // order of fields in a string does not matter + // except: fields_data_atom & fields_data_vel must match data file fields_grow = (char *) "radius rmass angmom torque body"; fields_copy = (char *) "radius rmass angmom"; - fields_comm = NULL; + fields_comm = (char *) ""; fields_comm_vel = (char *) "angmom"; fields_reverse = (char *) "torque"; fields_border = (char *) "radius rmass"; @@ -74,7 +74,7 @@ AtomVecBody::AtomVecBody(LAMMPS *lmp) : AtomVec(lmp) fields_restart = (char *) "radius rmass angmom"; fields_create = (char *) "radius rmass angmom tri"; fields_data_atom = (char *) "id type body rmass x"; - fields_data_vel = (char *) "angmom"; + fields_data_vel = (char *) "id v angmom"; setup_fields(); } diff --git a/src/atom_vec_body.h b/src/atom_vec_body.h index 183b4ea8ea..939b01878d 100644 --- a/src/atom_vec_body.h +++ b/src/atom_vec_body.h @@ -47,7 +47,6 @@ class AtomVecBody : public AtomVec { void clear_bonus(); int pack_comm_bonus(int, int *, double *); void unpack_comm_bonus(int, int, double *); - int pack_reverse_bonus(int, int, double *); int pack_border_bonus(int, int *, double *); int unpack_border_bonus(int, int, double *); int pack_exchange_bonus(int, double *); diff --git a/src/atom_vec_charge.cpp b/src/atom_vec_charge.cpp index 9c8f18a846..5957ef5215 100644 --- a/src/atom_vec_charge.cpp +++ b/src/atom_vec_charge.cpp @@ -27,21 +27,21 @@ AtomVecCharge::AtomVecCharge(LAMMPS *lmp) : AtomVec(lmp) // strings with peratom variables to include in each AtomVec method // strings cannot contain fields in corresponding AtomVec default strings - // order of fields in the string does not matter - // except fields_data_atom and fields_data_vel which must match data file + // order of fields in a string does not matter + // except: fields_data_atom & fields_data_vel must match data file fields_grow = (char *) "q"; fields_copy = (char *) "q"; - fields_comm = NULL; - fields_comm_vel = NULL; - fields_reverse = NULL; + fields_comm = (char *) ""; + fields_comm_vel = (char *) ""; + fields_reverse = (char *) ""; fields_border = (char *) "q"; fields_border_vel = (char *) "q"; fields_exchange = (char *) "q"; fields_restart = (char *) "q"; fields_create = (char *) "q"; - fields_data_atom = (char *) "id type q x"; - fields_data_vel = NULL; + fields_data_atom = (char *) "id type q x"; + fields_data_vel = (char *) "id v"; setup_fields(); } diff --git a/src/atom_vec_ellipsoid.cpp b/src/atom_vec_ellipsoid.cpp index 7ba26c1c34..9166293384 100644 --- a/src/atom_vec_ellipsoid.cpp +++ b/src/atom_vec_ellipsoid.cpp @@ -49,12 +49,12 @@ AtomVecEllipsoid::AtomVecEllipsoid(LAMMPS *lmp) : AtomVec(lmp) // strings with peratom variables to include in each AtomVec method // strings cannot contain fields in corresponding AtomVec default strings - // order of fields in the string does not matter - // except fields_data_atom and fields_data_vel which must match data file + // order of fields in a string does not matter + // except: fields_data_atom & fields_data_vel must match data file fields_grow = (char *) "rmass angmom torque ellipsoid"; fields_copy = (char *) "rmass angmom"; - fields_comm = NULL; + fields_comm = (char *) ""; fields_comm_vel = (char *) "angmom"; fields_reverse = (char *) "torque"; fields_border = (char *) "rmass"; @@ -63,7 +63,7 @@ AtomVecEllipsoid::AtomVecEllipsoid(LAMMPS *lmp) : AtomVec(lmp) fields_restart = (char *) "rmass angmom"; fields_create = (char *) "rmass angmom ellipsoid"; fields_data_atom = (char *) "id type ellipsoid rmass x"; - fields_data_vel = (char *) "angmom"; + fields_data_vel = (char *) "id v angmom"; setup_fields(); } diff --git a/src/atom_vec_ellipsoid.h b/src/atom_vec_ellipsoid.h index 70797c59d5..79d17a2206 100644 --- a/src/atom_vec_ellipsoid.h +++ b/src/atom_vec_ellipsoid.h @@ -40,7 +40,6 @@ class AtomVecEllipsoid : public AtomVec { void clear_bonus(); int pack_comm_bonus(int, int *, double *); void unpack_comm_bonus(int, int, double *); - int pack_reverse_bonus(int, int, double *); int pack_border_bonus(int, int *, double *); int unpack_border_bonus(int, int, double *); int pack_exchange_bonus(int, double *); diff --git a/src/atom_vec_hybrid.cpp b/src/atom_vec_hybrid.cpp index d96494544c..9a79f66972 100644 --- a/src/atom_vec_hybrid.cpp +++ b/src/atom_vec_hybrid.cpp @@ -14,18 +14,39 @@ #include "atom_vec_hybrid.h" #include #include "atom.h" -#include "domain.h" -#include "modify.h" -#include "fix.h" +#include "comm.h" #include "memory.h" #include "error.h" -#include "utils.h" using namespace LAMMPS_NS; +#define NFIELDSTRINGS 12 // # of field strings + /* ---------------------------------------------------------------------- */ -AtomVecHybrid::AtomVecHybrid(LAMMPS *lmp) : AtomVec(lmp) {} +AtomVecHybrid::AtomVecHybrid(LAMMPS *lmp) : AtomVec(lmp) +{ + nstyles = 0; + styles = NULL; + keywords = NULL; + fieldstrings = NULL; + + nstyles_bonus = 0; + styles_bonus = NULL; + + // NOTE: set bonus_flag if any substyle does + // set nstyles_bonus, styles_bonus + // NOTE: call method in each sub-style to set q_flag ?? + + // these strings will be concatenated from sub-style strings + // fields_data_atom & fields_data_vel start with fields common to all styles + + fields_grow = fields_copy = fields_comm = fields_comm_vel = (char *) ""; + fields_reverse = fields_border = fields_border_vel = (char *) ""; + fields_exchange = fields_restart = fields_create = (char *) ""; + fields_data_atom = (char *) "id type x"; + fields_data_vel = (char *) "id v"; +} /* ---------------------------------------------------------------------- */ @@ -36,14 +57,23 @@ AtomVecHybrid::~AtomVecHybrid() for (int k = 0; k < nstyles; k++) delete [] keywords[k]; delete [] keywords; - // these strings will be concatenated from sub-style strings - // fields_data_atom must start with fields common to all styles - - fields_grow = fields_copy = fields_comm = fields_comm_vel = NULL; - fields_reverse = fields_border = fields_border_vel = NULL; - fields_exchange = fields_restart = fields_create = NULL; - fields_data_atom = (char *) "id type x"; - fields_data_vel = NULL; + // NOTE: need to check these have actually been allocated + + delete [] fields_grow; + delete [] fields_copy; + delete [] fields_comm; + delete [] fields_comm_vel; + delete [] fields_reverse; + delete [] fields_border; + delete [] fields_border_vel; + delete [] fields_exchange; + delete [] fields_restart; + delete [] fields_create; + delete [] fields_data_atom; + delete [] fields_data_vel; + + for (int k = 0; k < nstyles; k++) delete [] fieldstrings[k].fstr; + delete [] fieldstrings; } /* ---------------------------------------------------------------------- @@ -52,7 +82,7 @@ AtomVecHybrid::~AtomVecHybrid() void AtomVecHybrid::process_args(int narg, char **arg) { - // build list of all known atom styles + // create list of all known atom styles build_styles(); @@ -85,70 +115,311 @@ void AtomVecHybrid::process_args(int narg, char **arg) nstyles++; } + // hybrid settings are MAX or MIN of sub-style settings + // check for both mass_type = 0 and 1, so can warn + + molecular = 0; + maxexchange = 0; + + for (int k = 0; k < nstyles; k++) { + if ((styles[k]->molecular == 1 && molecular == 2) || + (styles[k]->molecular == 2 && molecular == 1)) + error->all(FLERR,"Cannot mix molecular and molecule template " + "atom styles"); + molecular = MAX(molecular,styles[k]->molecular); + + bonds_allow = MAX(bonds_allow,styles[k]->bonds_allow); + angles_allow = MAX(angles_allow,styles[k]->angles_allow); + dihedrals_allow = MAX(dihedrals_allow,styles[k]->dihedrals_allow); + impropers_allow = MAX(impropers_allow,styles[k]->impropers_allow); + mass_type = MAX(mass_type,styles[k]->mass_type); + dipole_type = MAX(dipole_type,styles[k]->dipole_type); + forceclearflag = MAX(forceclearflag,styles[k]->forceclearflag); + + if (styles[k]->molecular == 2) onemols = styles[k]->onemols; + + // NOTE: need to sum this one? + maxexchange += styles[k]->maxexchange; + } + + // issue a warning if both per-type mass and per-atom rmass are defined + + int mass_pertype = 0; + int mass_peratom = 0; + + for (int k = 0; k < nstyles; k++) { + if (styles[k]->mass_type == 0) mass_peratom = 1; + if (styles[k]->mass_type == 1) mass_pertype = 1; + } + + if (mass_pertype && mass_peratom && comm->me == 0) + error->warning(FLERR, + "Atom_style hybrid defines both pertype and peratom masses " + "- both must be set, only peratom masses will be used"); + // free allstyles created by build_styles() for (int i = 0; i < nallstyles; i++) delete [] allstyles[i]; delete [] allstyles; - // concatenate field strings from all sub-styles + // set field strings from all substyles + + fieldstrings = new FieldStrings[nstyles]; + + for (int k = 0; k < nstyles; k++) { + fieldstrings[k].fstr = new char*[NFIELDSTRINGS]; + fieldstrings[k].fstr[0] = styles[k]->fields_grow; + fieldstrings[k].fstr[1] = styles[k]->fields_copy; + fieldstrings[k].fstr[2] = styles[k]->fields_comm; + fieldstrings[k].fstr[3] = styles[k]->fields_comm_vel; + fieldstrings[k].fstr[4] = styles[k]->fields_reverse; + fieldstrings[k].fstr[5] = styles[k]->fields_border; + fieldstrings[k].fstr[6] = styles[k]->fields_border_vel; + fieldstrings[k].fstr[7] = styles[k]->fields_exchange; + fieldstrings[k].fstr[8] = styles[k]->fields_restart; + fieldstrings[k].fstr[9] = styles[k]->fields_create; + fieldstrings[k].fstr[10] = styles[k]->fields_data_atom; + fieldstrings[k].fstr[11] = styles[k]->fields_data_vel; + } + + // merge field strings from all sub-styles + // save concat_grow to check for duplicates of special-case fields + + char *concat_grow;; + char *null = NULL; + + fields_grow = merge_fields(0,fields_grow,1,concat_grow); + fields_copy = merge_fields(1,fields_copy,0,null); + fields_comm = merge_fields(2,fields_comm,0,null); + fields_comm_vel = merge_fields(3,fields_comm_vel,0,null); + fields_reverse = merge_fields(4,fields_reverse,0,null); + fields_border = merge_fields(5,fields_border,0,null); + fields_border_vel = merge_fields(6,fields_border_vel,0,null); + fields_exchange = merge_fields(7,fields_exchange,0,null); + fields_restart = merge_fields(8,fields_restart,0,null); + fields_create = merge_fields(9,fields_create,0,null); + fields_data_atom = merge_fields(10,fields_data_atom,0,null); + fields_data_vel = merge_fields(11,fields_data_vel,0,null); + + // check concat_grow for multiple special-case fields + // may cause issues with style-specific create_atom() and data_atom() methods + // issue warnings if appear in multiple sub-styles + + const char *dupfield[] = {"radius","rmass"}; + int ndupfield = 2; + char *ptr; + + for (int idup = 0; idup < ndupfield; idup++) { + char *dup = (char *) dupfield[idup]; + ptr = strstr(concat_grow,dup); + if (strstr(ptr+1,dup)) { + char str[128]; + sprintf(str,"Peratom %s is in multiple sub-styles - " + "must be used consistently",dup); + if (comm->me == 0) error->warning(FLERR,str); + } + } - concatenate_fields(); + delete [] concat_grow; - // parent AtomVec will now operate on concatenated fields + // parent AtomVec can now operate on merged fields setup_fields(); } /* ---------------------------------------------------------------------- */ -void AtomVecHybrid::concatenate_fields() +void AtomVecHybrid::init() { - for (int k = 0; k < nstyles; k++) { - concatenate(fields_grow,styles[k]->fields_grow); - concatenate(fields_copy,styles[k]->fields_copy); - concatenate(fields_comm,styles[k]->fields_comm); - concatenate(fields_comm_vel,styles[k]->fields_comm_vel); - concatenate(fields_reverse,styles[k]->fields_reverse); - concatenate(fields_border,styles[k]->fields_border); - concatenate(fields_border_vel,styles[k]->fields_border_vel); - concatenate(fields_exchange,styles[k]->fields_exchange); - concatenate(fields_restart,styles[k]->fields_restart); - concatenate(fields_create,styles[k]->fields_create); - concatenate(fields_data_atom,styles[k]->fields_data_atom); - concatenate(fields_data_vel,styles[k]->fields_data_vel); - } + AtomVec::init(); + for (int k = 0; k < nstyles; k++) styles[k]->init(); } /* ---------------------------------------------------------------------- */ -void AtomVecHybrid::concatenate(char *&root, char *add) +void AtomVecHybrid::force_clear(int n, size_t nbytes) { - /* - char **rootwords,**addwords; - int nroot = parse(root,rootwords); - int nadd = parse(add,addwords); + for (int k = 0; k < nstyles; k++) + if (styles[k]->forceclearflag) styles[k]->force_clear(n,nbytes); +} - for (int iadd = 0; iadd < nadd; iadd++) { - if (check(addwords[iadd],nroot,rootwords)) continue; - addone(addwords[iadd],nroot,rootwords); - } - */ +/* ---------------------------------------------------------------------- + modify values for AtomVec::pack_restart() to pack +------------------------------------------------------------------------- */ + +void AtomVecHybrid::pack_restart_pre(int ilocal) +{ + for (int k = 0; k < nstyles; k++) + styles[k]->pack_restart_pre(ilocal); +} + +/* ---------------------------------------------------------------------- + unmodify values packed by AtomVec::pack_restart() +------------------------------------------------------------------------- */ + +void AtomVecHybrid::pack_restart_post(int ilocal) +{ + for (int k = 0; k < nstyles; k++) + styles[k]->pack_restart_post(ilocal); +} + +/* ---------------------------------------------------------------------- + initialize other atom quantities after AtomVec::unpack_restart() +------------------------------------------------------------------------- */ + +void AtomVecHybrid::unpack_restart_init(int ilocal) +{ + for (int k = 0; k < nstyles; k++) + styles[k]->unpack_restart_init(ilocal); +} + +/* ---------------------------------------------------------------------- + initialize non-zero atom quantities +------------------------------------------------------------------------- */ + +void AtomVecHybrid::create_atom_post(int ilocal) +{ + for (int k = 0; k < nstyles; k++) + styles[k]->create_atom_post(ilocal); +} + +/* ---------------------------------------------------------------------- + modify what AtomVec::data_atom() just unpacked + or initialize other atom quantities +------------------------------------------------------------------------- */ + +void AtomVecHybrid::data_atom_post(int ilocal) +{ + for (int k = 0; k < nstyles; k++) + styles[k]->data_atom_post(ilocal); +} + +/* ---------------------------------------------------------------------- + modify values for AtomVec::pack_data() to pack +------------------------------------------------------------------------- */ + +void AtomVecHybrid::pack_data_pre(int ilocal) +{ + for (int k = 0; k < nstyles; k++) + styles[k]->pack_data_pre(ilocal); +} + +/* ---------------------------------------------------------------------- + unmodify values packed by AtomVec::pack_data() +------------------------------------------------------------------------- */ + +void AtomVecHybrid::pack_data_post(int ilocal) +{ + for (int k = 0; k < nstyles; k++) + styles[k]->pack_data_post(ilocal); } /* ---------------------------------------------------------------------- */ -void AtomVecHybrid::init() +void AtomVecHybrid::copy_bonus(int i, int j, int delflag) { - AtomVec::init(); - for (int k = 0; k < nstyles; k++) styles[k]->init(); + for (int k = 0; k < nstyles_bonus; k++) + styles_bonus[k]->copy_bonus(i,j,delflag); } +// NOTE: need a clear_bonus() ? + /* ---------------------------------------------------------------------- */ -void AtomVecHybrid::force_clear(int n, size_t nbytes) +int AtomVecHybrid::pack_comm_bonus(int n, int *list, double *buf) { - for (int k = 0; k < nstyles; k++) - if (styles[k]->forceclearflag) styles[k]->force_clear(n,nbytes); + int m = 0; + for (int k = 0; k < nstyles_bonus; k++) + m += styles_bonus[k]->pack_comm_bonus(n,list,buf); + return m; +} + +/* ---------------------------------------------------------------------- */ + +void AtomVecHybrid::unpack_comm_bonus(int n, int first, double *buf) +{ + for (int k = 0; k < nstyles_bonus; k++) + styles_bonus[k]->unpack_comm_bonus(n,first,buf); +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecHybrid::pack_border_bonus(int n, int *list, double *buf) +{ + int m = 0; + for (int k = 0; k < nstyles_bonus; k++) + m += styles_bonus[k]->pack_border_bonus(n,list,buf); + return m; +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecHybrid::unpack_border_bonus(int n, int first, double *buf) +{ + int m = 0; + for (int k = 0; k < nstyles_bonus; k++) + m += styles_bonus[k]->unpack_border_bonus(n,first,buf); + return m; +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecHybrid::pack_exchange_bonus(int i, double *buf) +{ + int m = 0; + for (int k = 0; k < nstyles_bonus; k++) + m += styles_bonus[k]->pack_exchange_bonus(i,buf); + return m; +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecHybrid::unpack_exchange_bonus(int ilocal, double *buf) +{ + int m = 0; + for (int k = 0; k < nstyles_bonus; k++) + m += styles_bonus[k]->unpack_exchange_bonus(ilocal,buf); + return m; +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecHybrid::size_restart_bonus() +{ + int n = 0; + for (int k = 0; k < nstyles_bonus; k++) + n += styles_bonus[k]->size_restart_bonus(); + return n; +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecHybrid::pack_restart_bonus(int i, double *buf) +{ + int m = 0; + for (int k = 0; k < nstyles_bonus; k++) + m += styles_bonus[k]->pack_restart_bonus(i,buf); + return m; +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecHybrid::unpack_restart_bonus(int ilocal, double *buf) +{ + int m = 0; + for (int k = 0; k < nstyles_bonus; k++) + m += styles_bonus[k]->unpack_restart_bonus(ilocal,buf); + return m; +} + +/* ---------------------------------------------------------------------- */ + +bigint AtomVecHybrid::memory_usage_bonus() +{ + bigint bytes = 0; + for (int k = 0; k < nstyles_bonus; k++) + bytes += styles_bonus[k]->memory_usage_bonus(); + return bytes; } /* ---------------------------------------------------------------------- @@ -179,6 +450,75 @@ void AtomVecHybrid::pack_property_atom(int multiindex, double *buf, styles[k]->pack_property_atom(index,buf,nvalues,groupbit); } +// ---------------------------------------------------------------------- +// internal methods +// ---------------------------------------------------------------------- + +/* ---------------------------------------------------------------------- + merge fields and remove duplicate fields + concat = root + Inum fields string from all substyles + return dedup = concat with duplicate fields removed + if concat_flag set, also return concat (w/ duplicates) + so caller can check for problematic fields, call will free it +------------------------------------------------------------------------- */ + +char *AtomVecHybrid::merge_fields(int inum, char *root, + int concat_flag, char *&concat_str) +{ + // create concatenated string of length size from root + all substyles + + int size = strlen(root) + 1; + for (int k = 0; k < nstyles; k++) + size += strlen(fieldstrings[k].fstr[inum]) + 1; + + char *concat = new char[size]; + strcpy(concat,root); + + for (int k = 0; k < nstyles; k++) { + if (strlen(concat)) strcat(concat," "); + strcat(concat,fieldstrings[k].fstr[inum]); + } + + // identify unique words in concatenated string + + char *copystr; + char **words; + int nwords = tokenize(concat,words,copystr); + int *unique = new int[nwords]; + + for (int i = 0; i < nwords; i++) { + unique[i] = 1; + for (int j = 0; j < i; j++) + if (strcmp(words[i],words[j]) == 0) unique[i] = 0; + } + + // construct a new deduped string + + char *dedup = new char[size]; + dedup[0] = '\0'; + + for (int i = 0; i < nwords; i++) { + if (!unique[i]) continue; + strcat(dedup,words[i]); + if (i < nwords-1) strcat(dedup," "); + } + + // clean up or return concat + + if (concat_flag) concat_str = concat; + else delete [] concat; + + // clean up + + delete [] copystr; + delete [] words; + delete [] unique; + + // return final concatenated, deduped string + + return dedup; +} + /* ---------------------------------------------------------------------- allstyles = list of all atom styles in this LAMMPS executable ------------------------------------------------------------------------- */ diff --git a/src/atom_vec_hybrid.h b/src/atom_vec_hybrid.h index 41067d44f2..83d29112dd 100644 --- a/src/atom_vec_hybrid.h +++ b/src/atom_vec_hybrid.h @@ -35,6 +35,33 @@ class AtomVecHybrid : public AtomVec { void process_args(int, char **); void init(); void force_clear(int, size_t); + + void copy_bonus(int, int, int); + void clear_bonus() {} + int pack_comm_bonus(int, int *, double *); + void unpack_comm_bonus(int, int, double *); + int pack_border_bonus(int, int *, double *); + int unpack_border_bonus(int, int, double *); + int pack_exchange_bonus(int, double *); + int unpack_exchange_bonus(int, double *); + int size_restart_bonus(); + int pack_restart_bonus(int, double *); + int unpack_restart_bonus(int, double *); + bigint memory_usage_bonus(); + + void pack_restart_pre(int); + void pack_restart_post(int); + void unpack_restart_init(int); + void create_atom_post(int); + void data_atom_post(int); + void pack_data_pre(int); + void pack_data_post(int); + + //void create_atom_post(int); + //void data_atom_post(int); + //void pack_data_pre(int); + //void pack_data_post(int); + int property_atom(char *); void pack_property_atom(int, double *, int, int); @@ -42,8 +69,15 @@ class AtomVecHybrid : public AtomVec { int nallstyles; char **allstyles; - void concatenate_fields(); - void concatenate(char *&, char *); + struct FieldStrings { + char **fstr; + }; + FieldStrings *fieldstrings; + + int nstyles_bonus; + class AtomVec **styles_bonus; + + char *merge_fields(int, char *, int, char *&); void build_styles(); int known_style(char *); }; diff --git a/src/atom_vec_line.cpp b/src/atom_vec_line.cpp index 3b806c959e..ded2f88c2f 100644 --- a/src/atom_vec_line.cpp +++ b/src/atom_vec_line.cpp @@ -50,12 +50,12 @@ AtomVecLine::AtomVecLine(LAMMPS *lmp) : AtomVec(lmp) // strings with peratom variables to include in each AtomVec method // strings cannot contain fields in corresponding AtomVec default strings - // order of fields in the string does not matter - // except fields_data_atom and fields_data_vel which must match data file + // order of fields in a string does not matter + // except: fields_data_atom & fields_data_vel must match data file fields_grow = (char *) "molecule radius rmass omega torque line"; fields_copy = (char *) "molecule radius rmass omega"; - fields_comm = NULL; + fields_comm = (char *) ""; fields_comm_vel = (char *) "omega"; fields_reverse = (char *) "torque"; fields_border = (char *) "molecule radius rmass"; @@ -64,7 +64,7 @@ AtomVecLine::AtomVecLine(LAMMPS *lmp) : AtomVec(lmp) fields_restart = (char *) "molecule radius rmass omega"; fields_create = (char *) "molecule radius rmass omega line"; fields_data_atom = (char *) "id molecule type line rmass x"; - fields_data_vel = (char *) "omega"; + fields_data_vel = (char *) "id v omega"; setup_fields(); } diff --git a/src/atom_vec_line.h b/src/atom_vec_line.h index a8bc8fd1bc..a47843f4f2 100644 --- a/src/atom_vec_line.h +++ b/src/atom_vec_line.h @@ -40,7 +40,6 @@ class AtomVecLine : public AtomVec { void clear_bonus(); int pack_comm_bonus(int, int *, double *); void unpack_comm_bonus(int, int, double *); - int pack_reverse_bonus(int, int, double *); int pack_border_bonus(int, int *, double *); int unpack_border_bonus(int, int, double *); int pack_exchange_bonus(int, double *); diff --git a/src/atom_vec_sphere.cpp b/src/atom_vec_sphere.cpp index 5ae4c0ca21..6796f9c8f2 100644 --- a/src/atom_vec_sphere.cpp +++ b/src/atom_vec_sphere.cpp @@ -36,12 +36,12 @@ AtomVecSphere::AtomVecSphere(LAMMPS *lmp) : AtomVec(lmp) // strings with peratom variables to include in each AtomVec method // strings cannot contain fields in corresponding AtomVec default strings - // order of fields in the string does not matter - // except fields_data_atom and fields_data_vel which must match data file + // order of fields in a string does not matter + // except: fields_data_atom & fields_data_vel must match data file fields_grow = (char *) "radius rmass omega torque"; fields_copy = (char *) "radius rmass omega"; - fields_comm = NULL; + fields_comm = (char *) ""; fields_comm_vel = (char *) "omega"; fields_reverse = (char *) "torque"; fields_border = (char *) "radius rmass"; @@ -50,7 +50,7 @@ AtomVecSphere::AtomVecSphere(LAMMPS *lmp) : AtomVec(lmp) fields_restart = (char *) "radius rmass omega"; fields_create = (char *) "radius rmass omega"; fields_data_atom = (char *) "id type radius rmass x"; - fields_data_vel = (char *) "omega"; + fields_data_vel = (char *) "id v omega"; setup_fields(); } diff --git a/src/atom_vec_tri.cpp b/src/atom_vec_tri.cpp index 6da0ef7015..32d75c16f3 100644 --- a/src/atom_vec_tri.cpp +++ b/src/atom_vec_tri.cpp @@ -52,12 +52,12 @@ AtomVecTri::AtomVecTri(LAMMPS *lmp) : AtomVec(lmp) // strings with peratom variables to include in each AtomVec method // strings cannot contain fields in corresponding AtomVec default strings - // order of fields in the string does not matter - // except fields_data_atom and fields_data_vel which must match data file + // order of fields in a string does not matter + // except: fields_data_atom & fields_data_vel must match data file fields_grow = (char *) "molecule radius rmass omega angmom torque tri"; fields_copy = (char *) "molecule radius rmass omega angmom"; - fields_comm = NULL; + fields_comm = (char *) ""; fields_comm_vel = (char *) "omega angmom"; fields_reverse = (char *) "torque"; fields_border = (char *) "molecule radius rmass"; @@ -66,7 +66,7 @@ AtomVecTri::AtomVecTri(LAMMPS *lmp) : AtomVec(lmp) fields_restart = (char *) "molecule radius rmass omega angmom"; fields_create = (char *) "molecule radius rmass omega angmom line"; fields_data_atom = (char *) "id molecule type tri rmass x"; - fields_data_vel = (char *) "omega angmom"; + fields_data_vel = (char *) "id v omega angmom"; setup_fields(); } diff --git a/src/atom_vec_tri.h b/src/atom_vec_tri.h index 3c701067b2..ad4c0103ca 100644 --- a/src/atom_vec_tri.h +++ b/src/atom_vec_tri.h @@ -42,7 +42,6 @@ class AtomVecTri : public AtomVec { void clear_bonus(); int pack_comm_bonus(int, int *, double *); void unpack_comm_bonus(int, int, double *); - int pack_reverse_bonus(int, int, double *); int pack_border_bonus(int, int *, double *); int unpack_border_bonus(int, int, double *); int pack_exchange_bonus(int, double *); -- GitLab From 9e52980aaae343c0c2dc912ff5b44ee7a46b8eb5 Mon Sep 17 00:00:00 2001 From: Steve Plimpton Date: Tue, 3 Dec 2019 11:15:16 -0700 Subject: [PATCH 010/717] all of remaining USER package styles except AWPMD --- src/SPIN/atom_vec_spin.cpp | 12 +- src/USER-EFF/atom_vec_electron.cpp | 17 +- src/USER-MESO/atom_vec_edpd.cpp | 20 +- src/USER-MESO/atom_vec_edpd.h | 1 + src/USER-MESO/atom_vec_mdpd.cpp | 895 +------------------ src/USER-MESO/atom_vec_mdpd.h | 43 +- src/USER-MESO/atom_vec_tdpd.cpp | 846 +----------------- src/USER-MESO/atom_vec_tdpd.h | 32 +- src/USER-SMD/atom_vec_smd.cpp | 1338 +++------------------------- src/USER-SMD/atom_vec_smd.h | 59 +- src/USER-SPH/atom_vec_meso.cpp | 971 +------------------- src/USER-SPH/atom_vec_meso.h | 43 +- src/atom.cpp | 128 ++- src/atom.h | 16 +- src/atom_vec_hybrid.h | 5 - src/atom_vec_sphere.cpp | 7 +- 16 files changed, 362 insertions(+), 4071 deletions(-) diff --git a/src/SPIN/atom_vec_spin.cpp b/src/SPIN/atom_vec_spin.cpp index a8ff15492a..638a3b8021 100644 --- a/src/SPIN/atom_vec_spin.cpp +++ b/src/SPIN/atom_vec_spin.cpp @@ -62,14 +62,16 @@ AtomVecSpin::AtomVecSpin(LAMMPS *lmp) : AtomVec(lmp) } /* ---------------------------------------------------------------------- - clear all forces (mechanical and magnetic) + clear extra forces starting at atom N + nbytes = # of bytes to clear for a per-atom vector + include f b/c this is invoked from within SPIN pair styles ------------------------------------------------------------------------- */ -void AtomVecSpin::force_clear(int /*n*/, size_t nbytes) +void AtomVecSpin::force_clear(int n, size_t nbytes) { - memset(&atom->f[0][0],0,3*nbytes); - memset(&atom->fm[0][0],0,3*nbytes); - memset(&atom->fm_long[0][0],0,3*nbytes); + memset(&atom->f[n][0],0,3*nbytes); + memset(&atom->fm[n][0],0,3*nbytes); + memset(&atom->fm_long[n][0],0,3*nbytes); } /* ---------------------------------------------------------------------- diff --git a/src/USER-EFF/atom_vec_electron.cpp b/src/USER-EFF/atom_vec_electron.cpp index 0bad0f115f..3688f7f582 100644 --- a/src/USER-EFF/atom_vec_electron.cpp +++ b/src/USER-EFF/atom_vec_electron.cpp @@ -18,14 +18,8 @@ #include "atom_vec_electron.h" #include #include "atom.h" -#include "comm.h" -#include "domain.h" -#include "modify.h" -#include "fix.h" #include "citeme.h" -#include "memory.h" #include "error.h" -#include "utils.h" using namespace LAMMPS_NS; @@ -46,6 +40,8 @@ AtomVecElectron::AtomVecElectron(LAMMPS *lmp) : AtomVec(lmp) { if (lmp->citeme) lmp->citeme->add(cite_user_eff_package); + mass_type = 1; + molecular = 0; forceclearflag = 1; atom->ecp_flag = 0; @@ -75,11 +71,14 @@ AtomVecElectron::AtomVecElectron(LAMMPS *lmp) : AtomVec(lmp) setup_fields(); } -/* ---------------------------------------------------------------------- */ +/* ---------------------------------------------------------------------- + clear extra forces starting at atom N + nbytes = # of bytes to clear for a per-atom vector +------------------------------------------------------------------------- */ -void AtomVecElectron::force_clear(int /*n*/, size_t nbytes) +void AtomVecElectron::force_clear(int n, size_t nbytes) { - memset(&atom->erforce[0],0,nbytes); + memset(&atom->erforce[n],0,nbytes); } /* ---------------------------------------------------------------------- diff --git a/src/USER-MESO/atom_vec_edpd.cpp b/src/USER-MESO/atom_vec_edpd.cpp index b4602c760c..7a031c256b 100644 --- a/src/USER-MESO/atom_vec_edpd.cpp +++ b/src/USER-MESO/atom_vec_edpd.cpp @@ -29,9 +29,6 @@ using namespace LAMMPS_NS; AtomVecEDPD::AtomVecEDPD(LAMMPS *lmp) : AtomVec(lmp) { - if (strcmp(update->unit_style,"lj") != 0) - error->all(FLERR,"Atom style edpd requires lj units"); - molecular = 0; mass_type = 1; forceclearflag = 1; @@ -62,9 +59,22 @@ AtomVecEDPD::AtomVecEDPD(LAMMPS *lmp) : AtomVec(lmp) /* ---------------------------------------------------------------------- */ -void AtomVecEDPD::force_clear(int /*n*/, size_t nbytes) +void AtomVecEDPD::init() +{ + AtomVec::init(); + + if (strcmp(update->unit_style,"lj") != 0) + error->all(FLERR,"Atom style edpd requires lj units"); +} + +/* ---------------------------------------------------------------------- + clear extra forces starting at atom N + nbytes = # of bytes to clear for a per-atom vector +------------------------------------------------------------------------- */ + +void AtomVecEDPD::force_clear(int n, size_t nbytes) { - memset(&atom->edpd_flux[0],0,nbytes); + memset(&atom->edpd_flux[n],0,nbytes); } /* ---------------------------------------------------------------------- diff --git a/src/USER-MESO/atom_vec_edpd.h b/src/USER-MESO/atom_vec_edpd.h index 7d41b51665..bb667ae792 100644 --- a/src/USER-MESO/atom_vec_edpd.h +++ b/src/USER-MESO/atom_vec_edpd.h @@ -27,6 +27,7 @@ namespace LAMMPS_NS { class AtomVecEDPD : public AtomVec { public: AtomVecEDPD(class LAMMPS *); + void init(); void force_clear(int, size_t); void create_atom_post(int); void data_atom_post(int); diff --git a/src/USER-MESO/atom_vec_mdpd.cpp b/src/USER-MESO/atom_vec_mdpd.cpp index 4c9db36645..eefda1ff6a 100644 --- a/src/USER-MESO/atom_vec_mdpd.cpp +++ b/src/USER-MESO/atom_vec_mdpd.cpp @@ -14,14 +14,8 @@ #include "atom_vec_mdpd.h" #include #include "atom.h" -#include "comm.h" -#include "domain.h" -#include "modify.h" -#include "fix.h" #include "update.h" -#include "memory.h" #include "error.h" -#include "utils.h" using namespace LAMMPS_NS; @@ -29,865 +23,63 @@ using namespace LAMMPS_NS; AtomVecMDPD::AtomVecMDPD(LAMMPS *lmp) : AtomVec(lmp) { - if(strcmp(update->unit_style,"lj") != 0) - error->all(FLERR,"Atom style mdpd requires lj units"); - molecular = 0; mass_type = 1; forceclearflag = 1; - comm_x_only = comm_f_only = 0; - comm->ghost_velocity = 1; - - size_forward = 3 + 4; // 3 + rho + vest[3], that means we may only communicate 4 in hybrid - size_reverse = 3 + 1; // 3 + drho - size_border = 6 + 4; // 6 + rho + vest[3] - size_velocity = 3; - size_data_atom = 6; - size_data_vel = 4; - xcol_data = 4; - atom->rho_flag = 1; atom->vest_flag = 1; -} - -/* ---------------------------------------------------------------------- - grow atom arrays - n = 0 grows arrays by a chunk - n > 0 allocates arrays to size n - ------------------------------------------------------------------------- */ - -void AtomVecMDPD::grow(int n) -{ - if (n == 0) grow_nmax(); - else nmax = n; - atom->nmax = nmax; - if (nmax < 0 || nmax > MAXSMALLINT) - error->one(FLERR,"Per-processor system is too big"); - - tag = memory->grow(atom->tag, nmax, "atom:tag"); - type = memory->grow(atom->type, nmax, "atom:type"); - mask = memory->grow(atom->mask, nmax, "atom:mask"); - image = memory->grow(atom->image, nmax, "atom:image"); - x = memory->grow(atom->x, nmax, 3, "atom:x"); - v = memory->grow(atom->v, nmax, 3, "atom:v"); - f = memory->grow(atom->f, nmax*comm->nthreads, 3, "atom:f"); - - rho = memory->grow(atom->rho, nmax, "atom:rho"); - drho = memory->grow(atom->drho, nmax*comm->nthreads, "atom:drho"); - vest = memory->grow(atom->vest, nmax, 3, "atom:vest"); - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - modify->fix[atom->extra_grow[iextra]]->grow_arrays(nmax); -} - -/* ---------------------------------------------------------------------- - reset local array ptrs - ------------------------------------------------------------------------- */ - -void AtomVecMDPD::grow_reset() { - tag = atom->tag; - type = atom->type; - mask = atom->mask; - image = atom->image; - x = atom->x; - v = atom->v; - f = atom->f; - rho = atom->rho; - drho = atom->drho; - vest = atom->vest; -} -/* ---------------------------------------------------------------------- */ + // strings with peratom variables to include in each AtomVec method + // strings cannot contain fields in corresponding AtomVec default strings + // order of fields in a string does not matter + // except: fields_data_atom & fields_data_vel must match data file -void AtomVecMDPD::copy(int i, int j, int delflag) { - //printf("in AtomVecMDPD::copy\n"); - tag[j] = tag[i]; - type[j] = type[i]; - mask[j] = mask[i]; - image[j] = image[i]; - x[j][0] = x[i][0]; - x[j][1] = x[i][1]; - x[j][2] = x[i][2]; - v[j][0] = v[i][0]; - v[j][1] = v[i][1]; - v[j][2] = v[i][2]; + fields_grow = (char *) "rho drho vest"; + fields_copy = (char *) "rho drho vest"; + fields_comm = (char *) "rho vest"; + fields_comm_vel = (char *) "rho vest"; + fields_reverse = (char *) "drho"; + fields_border = (char *) "rho vest"; + fields_border_vel = (char *) "rho vest"; + fields_exchange = (char *) "rho vest"; + fields_restart = (char * ) "rho vest"; + fields_create = (char *) "rho drho vest"; + fields_data_atom = (char *) "id type rho x"; + fields_data_vel = (char *) "id v"; - rho[j] = rho[i]; - drho[j] = drho[i]; - vest[j][0] = vest[i][0]; - vest[j][1] = vest[i][1]; - vest[j][2] = vest[i][2]; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - modify->fix[atom->extra_grow[iextra]]->copy_arrays(i, j,delflag); + setup_fields(); } /* ---------------------------------------------------------------------- */ -void AtomVecMDPD::force_clear(int n, size_t nbytes) +void AtomVecMDPD::init() { - memset(&drho[n],0,nbytes); -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecMDPD::pack_comm_hybrid(int n, int *list, double *buf) { - //printf("in AtomVecMDPD::pack_comm_hybrid\n"); - int i, j, m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = rho[j]; - buf[m++] = vest[j][0]; - buf[m++] = vest[j][1]; - buf[m++] = vest[j][2]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecMDPD::unpack_comm_hybrid(int n, int first, double *buf) { - //printf("in AtomVecMDPD::unpack_comm_hybrid\n"); - int i, m, last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - rho[i] = buf[m++]; - vest[i][0] = buf[m++]; - vest[i][1] = buf[m++]; - vest[i][2] = buf[m++]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecMDPD::pack_border_hybrid(int n, int *list, double *buf) { - //printf("in AtomVecMDPD::pack_border_hybrid\n"); - int i, j, m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = rho[j]; - buf[m++] = vest[j][0]; - buf[m++] = vest[j][1]; - buf[m++] = vest[j][2]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecMDPD::unpack_border_hybrid(int n, int first, double *buf) { - //printf("in AtomVecMDPD::unpack_border_hybrid\n"); - int i, m, last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - rho[i] = buf[m++]; - vest[i][0] = buf[m++]; - vest[i][1] = buf[m++]; - vest[i][2] = buf[m++]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecMDPD::pack_reverse_hybrid(int n, int first, double *buf) { - //printf("in AtomVecMDPD::pack_reverse_hybrid\n"); - int i, m, last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - buf[m++] = drho[i]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecMDPD::unpack_reverse_hybrid(int n, int *list, double *buf) { - //printf("in AtomVecMDPD::unpack_reverse_hybrid\n"); - int i, j, m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - drho[j] += buf[m++]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecMDPD::pack_comm(int n, int *list, double *buf, int pbc_flag, - int *pbc) { - //printf("in AtomVecMDPD::pack_comm\n"); - int i, j, m; - double dx, dy, dz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = rho[j]; - buf[m++] = vest[j][0]; - buf[m++] = vest[j][1]; - buf[m++] = vest[j][2]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0] * domain->xprd; - dy = pbc[1] * domain->yprd; - dz = pbc[2] * domain->zprd; - } else { - dx = pbc[0] * domain->xprd + pbc[5] * domain->xy + pbc[4] * domain->xz; - dy = pbc[1] * domain->yprd + pbc[3] * domain->yz; - dz = pbc[2] * domain->zprd; - } - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = rho[j]; - buf[m++] = vest[j][0]; - buf[m++] = vest[j][1]; - buf[m++] = vest[j][2]; - } - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecMDPD::pack_comm_vel(int n, int *list, double *buf, int pbc_flag, - int *pbc) { - //printf("in AtomVecMDPD::pack_comm_vel\n"); - int i, j, m; - double dx, dy, dz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - buf[m++] = rho[j]; - buf[m++] = vest[j][0]; - buf[m++] = vest[j][1]; - buf[m++] = vest[j][2]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0] * domain->xprd; - dy = pbc[1] * domain->yprd; - dz = pbc[2] * domain->zprd; - } else { - dx = pbc[0] * domain->xprd + pbc[5] * domain->xy + pbc[4] * domain->xz; - dy = pbc[1] * domain->yprd + pbc[3] * domain->yz; - dz = pbc[2] * domain->zprd; - } - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - buf[m++] = rho[j]; - buf[m++] = vest[j][0]; - buf[m++] = vest[j][1]; - buf[m++] = vest[j][2]; - } - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecMDPD::unpack_comm(int n, int first, double *buf) { - //printf("in AtomVecMDPD::unpack_comm\n"); - int i, m, last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - rho[i] = buf[m++]; - vest[i][0] = buf[m++]; - vest[i][1] = buf[m++]; - vest[i][2] = buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecMDPD::unpack_comm_vel(int n, int first, double *buf) { - //printf("in AtomVecMDPD::unpack_comm_vel\n"); - int i, m, last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - v[i][0] = buf[m++]; - v[i][1] = buf[m++]; - v[i][2] = buf[m++]; - rho[i] = buf[m++]; - vest[i][0] = buf[m++]; - vest[i][1] = buf[m++]; - vest[i][2] = buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecMDPD::pack_reverse(int n, int first, double *buf) { - //printf("in AtomVecMDPD::pack_reverse\n"); - int i, m, last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - buf[m++] = f[i][0]; - buf[m++] = f[i][1]; - buf[m++] = f[i][2]; - buf[m++] = drho[i]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecMDPD::unpack_reverse(int n, int *list, double *buf) { - //printf("in AtomVecMDPD::unpack_reverse\n"); - int i, j, m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - f[j][0] += buf[m++]; - f[j][1] += buf[m++]; - f[j][2] += buf[m++]; - drho[j] += buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecMDPD::pack_border(int n, int *list, double *buf, int pbc_flag, - int *pbc) { - //printf("in AtomVecMDPD::pack_border\n"); - int i, j, m; - double dx, dy, dz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = rho[j]; - buf[m++] = vest[j][0]; - buf[m++] = vest[j][1]; - buf[m++] = vest[j][2]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0] * domain->xprd; - dy = pbc[1] * domain->yprd; - dz = pbc[2] * domain->zprd; - } else { - dx = pbc[0]; - dy = pbc[1]; - dz = pbc[2]; - } - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = rho[j]; - buf[m++] = vest[j][0]; - buf[m++] = vest[j][1]; - buf[m++] = vest[j][2]; - } - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); - - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecMDPD::pack_border_vel(int n, int *list, double *buf, int pbc_flag, - int *pbc) -{ - int i,j,m; - double dx,dy,dz,dvx,dvy,dvz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - buf[m++] = rho[j]; - buf[m++] = vest[j][0]; - buf[m++] = vest[j][1]; - buf[m++] = vest[j][2]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0] * domain->xprd; - dy = pbc[1] * domain->yprd; - dz = pbc[2] * domain->zprd; - } else { - dx = pbc[0]; - dy = pbc[1]; - dz = pbc[2]; - } - if (!deform_vremap) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - buf[m++] = rho[j]; - buf[m++] = vest[j][0]; - buf[m++] = vest[j][1]; - buf[m++] = vest[j][2]; - } - } else { - dvx = pbc[0] * h_rate[0] + pbc[5] * h_rate[5] + pbc[4] * h_rate[4]; - dvy = pbc[1] * h_rate[1] + pbc[3] * h_rate[3]; - dvz = pbc[2] * h_rate[2]; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - if (mask[i] & deform_groupbit) { - buf[m++] = v[j][0] + dvx; - buf[m++] = v[j][1] + dvy; - buf[m++] = v[j][2] + dvz; - buf[m++] = rho[j]; - buf[m++] = vest[j][0] + dvx; - buf[m++] = vest[j][1] + dvy; - buf[m++] = vest[j][2] + dvz; - } else { - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - buf[m++] = rho[j]; - buf[m++] = vest[j][0]; - buf[m++] = vest[j][1]; - buf[m++] = vest[j][2]; - } - } - } - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); - - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecMDPD::unpack_border(int n, int first, double *buf) { - //printf("in AtomVecMDPD::unpack_border\n"); - int i, m, last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - if (i == nmax) - grow(0); - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - tag[i] = (tagint) ubuf(buf[m++]).i; - type[i] = (int) ubuf(buf[m++]).i; - mask[i] = (int) ubuf(buf[m++]).i; - rho[i] = buf[m++]; - vest[i][0] = buf[m++]; - vest[i][1] = buf[m++]; - vest[i][2] = buf[m++]; - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]-> - unpack_border(n,first,&buf[m]); -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecMDPD::unpack_border_vel(int n, int first, double *buf) { - //printf("in AtomVecMDPD::unpack_border_vel\n"); - int i, m, last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - if (i == nmax) - grow(0); - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - tag[i] = (tagint) ubuf(buf[m++]).i; - type[i] = (int) ubuf(buf[m++]).i; - mask[i] = (int) ubuf(buf[m++]).i; - v[i][0] = buf[m++]; - v[i][1] = buf[m++]; - v[i][2] = buf[m++]; - rho[i] = buf[m++]; - vest[i][0] = buf[m++]; - vest[i][1] = buf[m++]; - vest[i][2] = buf[m++]; - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]-> - unpack_border(n,first,&buf[m]); -} - -/* ---------------------------------------------------------------------- - pack data for atom I for sending to another proc - xyz must be 1st 3 values, so comm::exchange() can test on them - ------------------------------------------------------------------------- */ - -int AtomVecMDPD::pack_exchange(int i, double *buf) { - //printf("in AtomVecMDPD::pack_exchange\n"); - int m = 1; - buf[m++] = x[i][0]; - buf[m++] = x[i][1]; - buf[m++] = x[i][2]; - buf[m++] = v[i][0]; - buf[m++] = v[i][1]; - buf[m++] = v[i][2]; - buf[m++] = ubuf(tag[i]).d; - buf[m++] = ubuf(type[i]).d; - buf[m++] = ubuf(mask[i]).d; - buf[m++] = ubuf(image[i]).d; - buf[m++] = rho[i]; - buf[m++] = vest[i][0]; - buf[m++] = vest[i][1]; - buf[m++] = vest[i][2]; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - m += modify->fix[atom->extra_grow[iextra]]->pack_exchange(i, &buf[m]); - - buf[0] = m; - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecMDPD::unpack_exchange(double *buf) { - //printf("in AtomVecMDPD::unpack_exchange\n"); - int nlocal = atom->nlocal; - if (nlocal == nmax) - grow(0); - - int m = 1; - x[nlocal][0] = buf[m++]; - x[nlocal][1] = buf[m++]; - x[nlocal][2] = buf[m++]; - v[nlocal][0] = buf[m++]; - v[nlocal][1] = buf[m++]; - v[nlocal][2] = buf[m++]; - tag[nlocal] = (tagint) ubuf(buf[m++]).i; - type[nlocal] = (int) ubuf(buf[m++]).i; - mask[nlocal] = (int) ubuf(buf[m++]).i; - image[nlocal] = (imageint) ubuf(buf[m++]).i; - rho[nlocal] = buf[m++]; - vest[nlocal][0] = buf[m++]; - vest[nlocal][1] = buf[m++]; - vest[nlocal][2] = buf[m++]; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - m += modify->fix[atom->extra_grow[iextra]]-> unpack_exchange(nlocal, - &buf[m]); - - atom->nlocal++; - return m; -} - -/* ---------------------------------------------------------------------- - size of restart data for all atoms owned by this proc - include extra data stored by fixes - ------------------------------------------------------------------------- */ - -int AtomVecMDPD::size_restart() { - int i; - - int nlocal = atom->nlocal; - int n = 15 * nlocal; // 11 + rho + vest[3] - - if (atom->nextra_restart) - for (int iextra = 0; iextra < atom->nextra_restart; iextra++) - for (i = 0; i < nlocal; i++) - n += modify->fix[atom->extra_restart[iextra]]->size_restart(i); - - return n; -} - -/* ---------------------------------------------------------------------- - pack atom I's data for restart file including extra quantities - xyz must be 1st 3 values, so that read_restart can test on them - molecular types may be negative, but write as positive - ------------------------------------------------------------------------- */ - -int AtomVecMDPD::pack_restart(int i, double *buf) { - int m = 1; - buf[m++] = x[i][0]; - buf[m++] = x[i][1]; - buf[m++] = x[i][2]; - buf[m++] = ubuf(tag[i]).d; - buf[m++] = ubuf(type[i]).d; - buf[m++] = ubuf(mask[i]).d; - buf[m++] = ubuf(image[i]).d; - buf[m++] = v[i][0]; - buf[m++] = v[i][1]; - buf[m++] = v[i][2]; - buf[m++] = rho[i]; - buf[m++] = vest[i][0]; - buf[m++] = vest[i][1]; - buf[m++] = vest[i][2]; - - if (atom->nextra_restart) - for (int iextra = 0; iextra < atom->nextra_restart; iextra++) - m += modify->fix[atom->extra_restart[iextra]]->pack_restart(i, &buf[m]); - - buf[0] = m; - return m; -} - -/* ---------------------------------------------------------------------- - unpack data for one atom from restart file including extra quantities - ------------------------------------------------------------------------- */ - -int AtomVecMDPD::unpack_restart(double *buf) { - int nlocal = atom->nlocal; - if (nlocal == nmax) { - grow(0); - if (atom->nextra_store) - memory->grow(atom->extra, nmax, atom->nextra_store, "atom:extra"); - } - - int m = 1; - x[nlocal][0] = buf[m++]; - x[nlocal][1] = buf[m++]; - x[nlocal][2] = buf[m++]; - tag[nlocal] = (tagint) ubuf(buf[m++]).i; - type[nlocal] = (int) ubuf(buf[m++]).i; - mask[nlocal] = (int) ubuf(buf[m++]).i; - image[nlocal] = (imageint) ubuf(buf[m++]).i; - v[nlocal][0] = buf[m++]; - v[nlocal][1] = buf[m++]; - v[nlocal][2] = buf[m++]; - rho[nlocal] = buf[m++]; - vest[nlocal][0] = buf[m++]; - vest[nlocal][1] = buf[m++]; - vest[nlocal][2] = buf[m++]; - - double **extra = atom->extra; - if (atom->nextra_store) { - int size = static_cast (buf[0]) - m; - for (int i = 0; i < size; i++) - extra[nlocal][i] = buf[m++]; - } - - atom->nlocal++; - return m; -} - -/* ---------------------------------------------------------------------- - create one atom of itype at coord - set other values to defaults - ------------------------------------------------------------------------- */ - -void AtomVecMDPD::create_atom(int itype, double *coord) { - int nlocal = atom->nlocal; - if (nlocal == nmax) - grow(0); - - tag[nlocal] = 0; - type[nlocal] = itype; - x[nlocal][0] = coord[0]; - x[nlocal][1] = coord[1]; - x[nlocal][2] = coord[2]; - mask[nlocal] = 1; - image[nlocal] = ((imageint) IMGMAX << IMG2BITS) | - ((imageint) IMGMAX << IMGBITS) | IMGMAX; - v[nlocal][0] = 0.0; - v[nlocal][1] = 0.0; - v[nlocal][2] = 0.0; - rho[nlocal] = 0.0; - vest[nlocal][0] = 0.0; - vest[nlocal][1] = 0.0; - vest[nlocal][2] = 0.0; - drho[nlocal] = 0.0; - - atom->nlocal++; -} - -/* ---------------------------------------------------------------------- - unpack one line from Atoms section of data file - initialize other atom quantities - ------------------------------------------------------------------------- */ - -void AtomVecMDPD::data_atom(double *coord, imageint imagetmp, char **values) { - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - tag[nlocal] = utils::tnumeric(FLERR,values[0],true,lmp); - type[nlocal] = utils::inumeric(FLERR,values[1],true,lmp); - if (type[nlocal] <= 0 || type[nlocal] > atom->ntypes) - error->one(FLERR,"Invalid atom type in Atoms section of data file"); - - x[nlocal][0] = coord[0]; - x[nlocal][1] = coord[1]; - x[nlocal][2] = coord[2]; - - image[nlocal] = imagetmp; - - mask[nlocal] = 1; - v[nlocal][0] = 0.0; - v[nlocal][1] = 0.0; - v[nlocal][2] = 0.0; - - vest[nlocal][0] = 0.0; - vest[nlocal][1] = 0.0; - vest[nlocal][2] = 0.0; - - rho[nlocal] = utils::numeric(FLERR,values[2],true,lmp); - drho[nlocal] = 0.0; - - atom->nlocal++; -} - -/* ---------------------------------------------------------------------- - unpack hybrid quantities from one line in Atoms section of data file - initialize other atom quantities for this sub-style - ------------------------------------------------------------------------- */ - -int AtomVecMDPD::data_atom_hybrid(int nlocal, char **values) -{ - rho[nlocal] = utils::numeric(FLERR,values[0],true,lmp); - return 3; -} - -/* ---------------------------------------------------------------------- - pack atom info for data file including 3 image flags -------------------------------------------------------------------------- */ - -void AtomVecMDPD::pack_data(double **buf) -{ - int nlocal = atom->nlocal; - for (int i = 0; i < nlocal; i++) { - buf[i][0] = ubuf(tag[i]).d; - buf[i][1] = ubuf(type[i]).d; - buf[i][2] = rho[i]; - buf[i][3] = x[i][0]; - buf[i][4] = x[i][1]; - buf[i][5] = x[i][2]; - buf[i][6] = ubuf((image[i] & IMGMASK) - IMGMAX).d; - buf[i][7] = ubuf((image[i] >> IMGBITS & IMGMASK) - IMGMAX).d; - buf[i][8] = ubuf((image[i] >> IMG2BITS) - IMGMAX).d; - } -} - -/* ---------------------------------------------------------------------- - pack hybrid atom info for data file -------------------------------------------------------------------------- */ - -int AtomVecMDPD::pack_data_hybrid(int i, double *buf) -{ - buf[0] = rho[i]; - return 3; + if (strcmp(update->unit_style,"lj") != 0) + error->all(FLERR,"Atom style mdpd requires lj units"); } /* ---------------------------------------------------------------------- - write atom info to data file including 3 image flags + clear extra forces starting at atom N + nbytes = # of bytes to clear for a per-atom vector ------------------------------------------------------------------------- */ -void AtomVecMDPD::write_data(FILE *fp, int n, double **buf) +void AtomVecMDPD::force_clear(int n, size_t nbytes) { - for (int i = 0; i < n; i++) - fprintf(fp,TAGINT_FORMAT - " %d %-1.16e %-1.16e %-1.16e %-1.16e " - "%d %d %d\n", - (tagint) ubuf(buf[i][0]).i,(int) ubuf(buf[i][1]).i, - buf[i][2],buf[i][3],buf[i][4],buf[i][5], - (int) ubuf(buf[i][6]).i,(int) ubuf(buf[i][7]).i, - (int) ubuf(buf[i][8]).i); + memset(&atom->drho[n],0,nbytes); } /* ---------------------------------------------------------------------- - write hybrid atom info to data file + modify what AtomVec::data_atom() just unpacked + or initialize other atom quantities ------------------------------------------------------------------------- */ -int AtomVecMDPD::write_data_hybrid(FILE *fp, double *buf) +void AtomVecMDPD::data_atom_post(int ilocal) { - fprintf(fp," %-1.16e",buf[0]); - return 3; + atom->drho[ilocal] = 0.0; + atom->vest[ilocal][0] = 0.0; + atom->vest[ilocal][1] = 0.0; + atom->vest[ilocal][2] = 0.0; } /* ---------------------------------------------------------------------- @@ -912,15 +104,17 @@ void AtomVecMDPD::pack_property_atom(int index, double *buf, { int *mask = atom->mask; int nlocal = atom->nlocal; - int n = 0; + int n = 0; if (index == 0) { + double *rho = atom->rho; for (int i = 0; i < nlocal; i++) { if (mask[i] & groupbit) buf[n] = rho[i]; else buf[n] = 0.0; n += nvalues; } } else if (index == 1) { + double *drho = atom->drho; for (int i = 0; i < nlocal; i++) { if (mask[i] & groupbit) buf[n] = drho[i]; else buf[n] = 0.0; @@ -928,24 +122,3 @@ void AtomVecMDPD::pack_property_atom(int index, double *buf, } } } - -/* ---------------------------------------------------------------------- - return # of bytes of allocated memory - ------------------------------------------------------------------------- */ - -bigint AtomVecMDPD::memory_usage() { - bigint bytes = 0; - - if (atom->memcheck("tag")) bytes += memory->usage(tag, nmax); - if (atom->memcheck("type")) bytes += memory->usage(type, nmax); - if (atom->memcheck("mask")) bytes += memory->usage(mask, nmax); - if (atom->memcheck("image")) bytes += memory->usage(image, nmax); - if (atom->memcheck("x")) bytes += memory->usage(x, nmax, 3); - if (atom->memcheck("v")) bytes += memory->usage(v, nmax, 3); - if (atom->memcheck("f")) bytes += memory->usage(f, nmax*comm->nthreads, 3); - if (atom->memcheck("rho")) bytes += memory->usage(rho, nmax); - if (atom->memcheck("drho")) bytes += memory->usage(drho, nmax*comm->nthreads); - if (atom->memcheck("vest")) bytes += memory->usage(vest, nmax, 3); - - return bytes; -} diff --git a/src/USER-MESO/atom_vec_mdpd.h b/src/USER-MESO/atom_vec_mdpd.h index 9e9ffcdcf2..0eb4fff2df 100644 --- a/src/USER-MESO/atom_vec_mdpd.h +++ b/src/USER-MESO/atom_vec_mdpd.h @@ -27,50 +27,11 @@ namespace LAMMPS_NS { class AtomVecMDPD : public AtomVec { public: AtomVecMDPD(class LAMMPS *); - ~AtomVecMDPD() {} - void grow(int); - void grow_reset(); - void copy(int, int, int); + void init(); void force_clear(int, size_t); - int pack_comm(int, int *, double *, int, int *); - int pack_comm_vel(int, int *, double *, int, int *); - void unpack_comm(int, int, double *); - void unpack_comm_vel(int, int, double *); - int pack_reverse(int, int, double *); - void unpack_reverse(int, int *, double *); - int pack_comm_hybrid(int, int *, double *); - int unpack_comm_hybrid(int, int, double *); - int pack_border_hybrid(int, int *, double *); - int unpack_border_hybrid(int, int, double *); - int pack_reverse_hybrid(int, int, double *); - int unpack_reverse_hybrid(int, int *, double *); - int pack_border(int, int *, double *, int, int *); - int pack_border_vel(int, int *, double *, int, int *); - void unpack_border(int, int, double *); - void unpack_border_vel(int, int, double *); - int pack_exchange(int, double *); - int unpack_exchange(double *); - int size_restart(); - int pack_restart(int, double *); - int unpack_restart(double *); - void create_atom(int, double *); - void data_atom(double *, imageint, char **); - int data_atom_hybrid(int, char **); - void pack_data(double **); - int pack_data_hybrid(int, double *); - void write_data(FILE *, int, double **); - int write_data_hybrid(FILE *, double *); + void data_atom_post(int); int property_atom(char *); void pack_property_atom(int, double *, int, int); - bigint memory_usage(); - - private: - tagint *tag; - int *type,*mask; - imageint *image; - double **x,**v,**f; - double *rho, *drho; - double **vest; // estimated velocity during force computation }; } diff --git a/src/USER-MESO/atom_vec_tdpd.cpp b/src/USER-MESO/atom_vec_tdpd.cpp index 74ac47066b..55284f69a2 100644 --- a/src/USER-MESO/atom_vec_tdpd.cpp +++ b/src/USER-MESO/atom_vec_tdpd.cpp @@ -14,12 +14,7 @@ #include "atom_vec_tdpd.h" #include #include "atom.h" -#include "comm.h" -#include "domain.h" -#include "modify.h" -#include "fix.h" #include "update.h" -#include "memory.h" #include "error.h" #include "utils.h" @@ -29,29 +24,30 @@ using namespace LAMMPS_NS; AtomVecTDPD::AtomVecTDPD(LAMMPS *lmp) : AtomVec(lmp) { - if(strcmp(update->unit_style,"lj") != 0) - error->all(FLERR,"Atom style edpd requires lj units"); - molecular = 0; mass_type = 1; forceclearflag = 1; - comm_x_only = comm_f_only = 0; - comm->ghost_velocity = 1; - - cc_species = 0; // for now, reset in process_args() - - size_forward = 3 + cc_species + 3; //vest[3] - size_reverse = 3 + cc_species; - size_border = 6 + cc_species + 3; //vest[3] - size_velocity = 3; - // for data_atom, we read id + type + xyz[3] + cc[i] where i=1,cc_species - size_data_atom = 5 + cc_species; - size_data_vel = 4; - xcol_data = 3; - atom->tdpd_flag = 1; atom->vest_flag = 1; + + // strings with peratom variables to include in each AtomVec method + // strings cannot contain fields in corresponding AtomVec default strings + // order of fields in a string does not matter + // except: fields_data_atom & fields_data_vel must match data file + + fields_grow = (char *) "cc cc_flux vest"; + fields_copy = (char *) "cc vest"; + fields_comm = (char *) "cc vest"; + fields_comm_vel = (char *) "cc vest"; + fields_reverse = (char *) "cc_flux"; + fields_border = (char *) "cc vest"; + fields_border_vel = (char *) "cc vest"; + fields_exchange = (char *) "cc vest"; + fields_restart = (char * ) "cc vest"; + fields_create = (char *) "cc vest"; + fields_data_atom = (char *) "id type x cc"; + fields_data_vel = (char *) "id v"; } /* ---------------------------------------------------------------------- @@ -66,812 +62,42 @@ void AtomVecTDPD::process_args(int narg, char **arg) atom->cc_species = utils::inumeric(FLERR,arg[0],false,lmp); cc_species = atom->cc_species; - // reset sizes that depend on cc_species - - size_forward = 3 + cc_species + 3; - size_reverse = 3 + cc_species; - size_border = 6 + cc_species + 3; - size_data_atom = 5 + cc_species; -} - -/* ---------------------------------------------------------------------- - grow atom arrays - n = 0 grows arrays by a chunk - n > 0 allocates arrays to size n -------------------------------------------------------------------------- */ - -void AtomVecTDPD::grow(int n) -{ - if (n == 0) grow_nmax(); - else nmax = n; - atom->nmax = nmax; - if (nmax < 0 || nmax > MAXSMALLINT) - error->one(FLERR,"Per-processor system is too big"); - - tag = memory->grow(atom->tag,nmax,"atom:tag"); - type = memory->grow(atom->type,nmax,"atom:type"); - mask = memory->grow(atom->mask,nmax,"atom:mask"); - image = memory->grow(atom->image,nmax,"atom:image"); - x = memory->grow(atom->x,nmax,3,"atom:x"); - v = memory->grow(atom->v,nmax,3,"atom:v"); - f = memory->grow(atom->f,nmax*comm->nthreads,3,"atom:f"); - cc = memory->grow(atom->cc,nmax*comm->nthreads,cc_species,"atom:cc"); - cc_flux = memory->grow(atom->cc_flux,nmax*comm->nthreads,cc_species, - "atom:cc_flux"); - vest = memory->grow(atom->vest, nmax, 3, "atom:vest"); - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - modify->fix[atom->extra_grow[iextra]]->grow_arrays(nmax); -} - -/* ---------------------------------------------------------------------- - reset local array ptrs -------------------------------------------------------------------------- */ - -void AtomVecTDPD::grow_reset() -{ - tag = atom->tag; type = atom->type; - mask = atom->mask; image = atom->image; - x = atom->x; v = atom->v; f = atom->f; - cc = atom->cc; cc_flux = atom->cc_flux; - vest = atom->vest; -} - -/* ---------------------------------------------------------------------- - copy atom I info to atom J -------------------------------------------------------------------------- */ - -void AtomVecTDPD::copy(int i, int j, int delflag) -{ - tag[j] = tag[i]; - type[j] = type[i]; - mask[j] = mask[i]; - image[j] = image[i]; - x[j][0] = x[i][0]; - x[j][1] = x[i][1]; - x[j][2] = x[i][2]; - v[j][0] = v[i][0]; - v[j][1] = v[i][1]; - v[j][2] = v[i][2]; - - for(int k = 0; k < cc_species; k++) - cc[j][k] = cc[i][k]; - - vest[j][0] = vest[i][0]; - vest[j][1] = vest[i][1]; - vest[j][2] = vest[i][2]; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - modify->fix[atom->extra_grow[iextra]]->copy_arrays(i,j,delflag); -} - - -void AtomVecTDPD::force_clear(int n, size_t nbytes) -{ - memset(&cc_flux[n][0],0,cc_species*nbytes); -} - - -/* ---------------------------------------------------------------------- */ - -int AtomVecTDPD::pack_comm(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,k,m; - double dx,dy,dz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - - for(k = 0; k < cc_species; k++) - buf[m++] = cc[j][k]; - - buf[m++] = vest[j][0]; - buf[m++] = vest[j][1]; - buf[m++] = vest[j][2]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]*domain->xprd + pbc[5]*domain->xy + pbc[4]*domain->xz; - dy = pbc[1]*domain->yprd + pbc[3]*domain->yz; - dz = pbc[2]*domain->zprd; - } - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - - for(k = 0; k < cc_species; k++) - buf[m++] = cc[j][k]; - - buf[m++] = vest[j][0]; - buf[m++] = vest[j][1]; - buf[m++] = vest[j][2]; - } - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecTDPD::pack_comm_vel(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,k,m; - double dx,dy,dz,dvx,dvy,dvz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - - for(k = 0; k < cc_species; k++) - buf[m++] = cc[j][k]; - - buf[m++] = vest[j][0]; - buf[m++] = vest[j][1]; - buf[m++] = vest[j][2]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]*domain->xprd + pbc[5]*domain->xy + pbc[4]*domain->xz; - dy = pbc[1]*domain->yprd + pbc[3]*domain->yz; - dz = pbc[2]*domain->zprd; - } - if (!deform_vremap) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - - for(k = 0; k < cc_species; k++) - buf[m++] = cc[j][k]; - - buf[m++] = vest[j][0]; - buf[m++] = vest[j][1]; - buf[m++] = vest[j][2]; - } - } else { - dvx = pbc[0]*h_rate[0] + pbc[5]*h_rate[5] + pbc[4]*h_rate[4]; - dvy = pbc[1]*h_rate[1] + pbc[3]*h_rate[3]; - dvz = pbc[2]*h_rate[2]; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - if (mask[i] & deform_groupbit) { - buf[m++] = v[j][0] + dvx; - buf[m++] = v[j][1] + dvy; - buf[m++] = v[j][2] + dvz; - } else { - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - for(k = 0; k < cc_species; k++) - buf[m++] = cc[j][k]; - - buf[m++] = vest[j][0]; - buf[m++] = vest[j][1]; - buf[m++] = vest[j][2]; - } - } - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecTDPD::unpack_comm(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - - for(int k = 0; k < cc_species; k++) - cc[i][k] = buf[m++]; - - vest[i][0] = buf[m++]; - vest[i][1] = buf[m++]; - vest[i][2] = buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecTDPD::unpack_comm_vel(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - v[i][0] = buf[m++]; - v[i][1] = buf[m++]; - v[i][2] = buf[m++]; - for(int k = 0; k < cc_species; k++) - cc[i][k] = buf[m++]; - - vest[i][0] = buf[m++]; - vest[i][1] = buf[m++]; - vest[i][2] = buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecTDPD::pack_reverse(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - buf[m++] = f[i][0]; - buf[m++] = f[i][1]; - buf[m++] = f[i][2]; - for(int k = 0; k < cc_species; k++) - buf[m++] = cc_flux[i][k]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecTDPD::unpack_reverse(int n, int *list, double *buf) -{ - int i,j,m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - f[j][0] += buf[m++]; - f[j][1] += buf[m++]; - f[j][2] += buf[m++]; - for(int k = 0; k < cc_species; k++) - cc_flux[j][k] += buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecTDPD::pack_border(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - for(int k = 0; k < cc_species; k++) - buf[m++] = cc[j][k]; - - buf[m++] = vest[j][0]; - buf[m++] = vest[j][1]; - buf[m++] = vest[j][2]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]; - dy = pbc[1]; - dz = pbc[2]; - } - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - for(int k = 0; k < cc_species; k++) - buf[m++] = cc[j][k]; - - buf[m++] = vest[j][0]; - buf[m++] = vest[j][1]; - buf[m++] = vest[j][2]; - } - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); - - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecTDPD::pack_border_vel(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz,dvx,dvy,dvz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - for(int k = 0; k < cc_species; k++) - buf[m++] = cc[j][k]; - - buf[m++] = vest[j][0]; - buf[m++] = vest[j][1]; - buf[m++] = vest[j][2]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]; - dy = pbc[1]; - dz = pbc[2]; - } - if (!deform_vremap) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - for(int k = 0; k < cc_species; k++) - buf[m++] = cc[j][k]; - - buf[m++] = vest[j][0]; - buf[m++] = vest[j][1]; - buf[m++] = vest[j][2]; - } - } else { - dvx = pbc[0]*h_rate[0] + pbc[5]*h_rate[5] + pbc[4]*h_rate[4]; - dvy = pbc[1]*h_rate[1] + pbc[3]*h_rate[3]; - dvz = pbc[2]*h_rate[2]; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - if (mask[i] & deform_groupbit) { - buf[m++] = v[j][0] + dvx; - buf[m++] = v[j][1] + dvy; - buf[m++] = v[j][2] + dvz; - } else { - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - for(int k = 0; k < cc_species; k++) - buf[m++] = cc[j][k]; - - buf[m++] = vest[j][0]; - buf[m++] = vest[j][1]; - buf[m++] = vest[j][2]; - } - } - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); - - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecTDPD::unpack_border(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - if (i == nmax) grow(0); - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - tag[i] = (tagint) ubuf(buf[m++]).i; - type[i] = (int) ubuf(buf[m++]).i; - mask[i] = (int) ubuf(buf[m++]).i; - for(int k = 0; k < cc_species; k++) - cc[i][k] = buf[m++]; - - vest[i][0] = buf[m++]; - vest[i][1] = buf[m++]; - vest[i][2] = buf[m++]; - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]-> - unpack_border(n,first,&buf[m]); -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecTDPD::unpack_border_vel(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - if (i == nmax) grow(0); - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - tag[i] = (tagint) ubuf(buf[m++]).i; - type[i] = (int) ubuf(buf[m++]).i; - mask[i] = (int) ubuf(buf[m++]).i; - v[i][0] = buf[m++]; - v[i][1] = buf[m++]; - v[i][2] = buf[m++]; - for(int k = 0; k < cc_species; k++) - cc[i][k] = buf[m++]; - - vest[i][0] = buf[m++]; - vest[i][1] = buf[m++]; - vest[i][2] = buf[m++]; - } + atom->add_peratom_change_columns("cc",cc_species); + atom->add_peratom_change_columns("cc_species",cc_species); - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]-> - unpack_border(n,first,&buf[m]); -} - -/* ---------------------------------------------------------------------- - pack data for atom I for sending to another proc - xyz must be 1st 3 values, so comm::exchange() can test on them -------------------------------------------------------------------------- */ - -int AtomVecTDPD::pack_exchange(int i, double *buf) -{ - int m = 1; - buf[m++] = x[i][0]; - buf[m++] = x[i][1]; - buf[m++] = x[i][2]; - buf[m++] = v[i][0]; - buf[m++] = v[i][1]; - buf[m++] = v[i][2]; - buf[m++] = ubuf(tag[i]).d; - buf[m++] = ubuf(type[i]).d; - buf[m++] = ubuf(mask[i]).d; - buf[m++] = ubuf(image[i]).d; - for(int k = 0; k < cc_species; k++) - buf[m++] = cc[i][k]; + // delay setting up of fields until now - buf[m++] = vest[i][0]; - buf[m++] = vest[i][1]; - buf[m++] = vest[i][2]; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - m += modify->fix[atom->extra_grow[iextra]]->pack_exchange(i,&buf[m]); - - buf[0] = m; - return m; + setup_fields(); } /* ---------------------------------------------------------------------- */ -int AtomVecTDPD::unpack_exchange(double *buf) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - int m = 1; - x[nlocal][0] = buf[m++]; - x[nlocal][1] = buf[m++]; - x[nlocal][2] = buf[m++]; - v[nlocal][0] = buf[m++]; - v[nlocal][1] = buf[m++]; - v[nlocal][2] = buf[m++]; - tag[nlocal] = (tagint) ubuf(buf[m++]).i; - type[nlocal] = (int) ubuf(buf[m++]).i; - mask[nlocal] = (int) ubuf(buf[m++]).i; - image[nlocal] = (imageint) ubuf(buf[m++]).i; - for(int k = 0; k < cc_species; k++) - cc[nlocal][k] = buf[m++]; - - vest[nlocal][0] = buf[m++]; - vest[nlocal][1] = buf[m++]; - vest[nlocal][2] = buf[m++]; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - m += modify->fix[atom->extra_grow[iextra]]-> - unpack_exchange(nlocal,&buf[m]); - - atom->nlocal++; - return m; -} - -/* ---------------------------------------------------------------------- - size of restart data for all atoms owned by this proc - include extra data stored by fixes -------------------------------------------------------------------------- */ - -int AtomVecTDPD::size_restart() +void AtomVecTDPD::init() { - int i; + AtomVec::init(); - int nlocal = atom->nlocal; - int n = (11 + cc_species + 3) * nlocal; // 11 + cc[i] + vest[3] - - if (atom->nextra_restart) - for (int iextra = 0; iextra < atom->nextra_restart; iextra++) - for (i = 0; i < nlocal; i++) - n += modify->fix[atom->extra_restart[iextra]]->size_restart(i); - - return n; + if (strcmp(update->unit_style,"lj") != 0) + error->all(FLERR,"Atom style tdpd requires lj units"); } /* ---------------------------------------------------------------------- - pack atom I's data for restart file including extra quantities - xyz must be 1st 3 values, so that read_restart can test on them - molecular types may be negative, but write as positive + clear extra forces starting at atom N + nbytes = # of bytes to clear for a per-atom vector ------------------------------------------------------------------------- */ -int AtomVecTDPD::pack_restart(int i, double *buf) -{ - int m = 1; - buf[m++] = x[i][0]; - buf[m++] = x[i][1]; - buf[m++] = x[i][2]; - buf[m++] = ubuf(tag[i]).d; - buf[m++] = ubuf(type[i]).d; - buf[m++] = ubuf(mask[i]).d; - buf[m++] = ubuf(image[i]).d; - buf[m++] = v[i][0]; - buf[m++] = v[i][1]; - buf[m++] = v[i][2]; - for(int k = 0; k < cc_species; k++) - buf[m++] = cc[i][k]; - - buf[m++] = vest[i][0]; - buf[m++] = vest[i][1]; - buf[m++] = vest[i][2]; - - if (atom->nextra_restart) - for (int iextra = 0; iextra < atom->nextra_restart; iextra++) - m += modify->fix[atom->extra_restart[iextra]]->pack_restart(i,&buf[m]); - - buf[0] = m; - return m; -} - -/* ---------------------------------------------------------------------- - unpack data for one atom from restart file including extra quantities -------------------------------------------------------------------------- */ - -int AtomVecTDPD::unpack_restart(double *buf) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) { - grow(0); - if (atom->nextra_store) - memory->grow(atom->extra,nmax,atom->nextra_store,"atom:extra"); - } - - int m = 1; - x[nlocal][0] = buf[m++]; - x[nlocal][1] = buf[m++]; - x[nlocal][2] = buf[m++]; - tag[nlocal] = (tagint) ubuf(buf[m++]).i; - type[nlocal] = (int) ubuf(buf[m++]).i; - mask[nlocal] = (int) ubuf(buf[m++]).i; - image[nlocal] = (imageint) ubuf(buf[m++]).i; - v[nlocal][0] = buf[m++]; - v[nlocal][1] = buf[m++]; - v[nlocal][2] = buf[m++]; - for(int k = 0; k < cc_species; k++) - cc[nlocal][k] = buf[m++]; - - vest[nlocal][0] = buf[m++]; - vest[nlocal][1] = buf[m++]; - vest[nlocal][2] = buf[m++]; - - double **extra = atom->extra; - if (atom->nextra_store) { - int size = static_cast (buf[0]) - m; - for (int i = 0; i < size; i++) extra[nlocal][i] = buf[m++]; - } - - atom->nlocal++; - return m; -} - -/* ---------------------------------------------------------------------- - create one atom of itype at coord - set other values to defaults -------------------------------------------------------------------------- */ - -void AtomVecTDPD::create_atom(int itype, double *coord) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - tag[nlocal] = 0; - type[nlocal] = itype; - x[nlocal][0] = coord[0]; - x[nlocal][1] = coord[1]; - x[nlocal][2] = coord[2]; - mask[nlocal] = 1; - image[nlocal] = ((imageint) IMGMAX << IMG2BITS) | - ((imageint) IMGMAX << IMGBITS) | IMGMAX; - v[nlocal][0] = 0.0; - v[nlocal][1] = 0.0; - v[nlocal][2] = 0.0; - - for(int k = 0; k < cc_species; k++) - cc[nlocal][k] = 0.0; - - vest[nlocal][0] = 0.0; - vest[nlocal][1] = 0.0; - vest[nlocal][2] = 0.0; - - atom->nlocal++; -} - -/* ---------------------------------------------------------------------- - unpack one line from Atoms section of data file - initialize other atom quantities -------------------------------------------------------------------------- */ - -void AtomVecTDPD::data_atom(double *coord, imageint imagetmp, char **values) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - tag[nlocal] = utils::tnumeric(FLERR,values[0],true,lmp); - type[nlocal] = utils::inumeric(FLERR,values[1],true,lmp); - if (type[nlocal] <= 0 || type[nlocal] > atom->ntypes) - error->one(FLERR,"Invalid atom type in Atoms section of data file"); - - x[nlocal][0] = coord[0]; - x[nlocal][1] = coord[1]; - x[nlocal][2] = coord[2]; - - for(int k = 0; k < cc_species; k++) - cc[nlocal][k] = utils::numeric(FLERR,values[5+k],true,lmp); - - image[nlocal] = imagetmp; - - mask[nlocal] = 1; - v[nlocal][0] = 0.0; - v[nlocal][1] = 0.0; - v[nlocal][2] = 0.0; - - vest[nlocal][0] = 0.0; - vest[nlocal][1] = 0.0; - vest[nlocal][2] = 0.0; - - atom->nlocal++; -} - -/* ---------------------------------------------------------------------- - pack atom info for data file including 3 image flags -------------------------------------------------------------------------- */ - -void AtomVecTDPD::pack_data(double **buf) -{ - int nlocal = atom->nlocal; - for (int i = 0; i < nlocal; i++) { - buf[i][0] = ubuf(tag[i]).d; - buf[i][1] = ubuf(type[i]).d; - buf[i][2] = x[i][0]; - buf[i][3] = x[i][1]; - buf[i][4] = x[i][2]; - buf[i][5] = ubuf((image[i] & IMGMASK) - IMGMAX).d; - buf[i][6] = ubuf((image[i] >> IMGBITS & IMGMASK) - IMGMAX).d; - buf[i][7] = ubuf((image[i] >> IMG2BITS) - IMGMAX).d; - for(int k = 0; k < cc_species; k++) - buf[i][8+k] = cc[i][k]; - } -} - -/* ---------------------------------------------------------------------- - write atom info to data file including 3 image flags -------------------------------------------------------------------------- */ - -void AtomVecTDPD::write_data(FILE *fp, int n, double **buf) +void AtomVecTDPD::force_clear(int n, size_t nbytes) { - for (int i = 0; i < n; i++){ - fprintf(fp,TAGINT_FORMAT " %d %-1.16e %-1.16e %-1.16e %d %d %d", - (tagint) ubuf(buf[i][0]).i,(int) ubuf(buf[i][1]).i, - buf[i][2],buf[i][3],buf[i][4], - (int) ubuf(buf[i][5]).i,(int) ubuf(buf[i][6]).i, - (int) ubuf(buf[i][7]).i); - for(int k = 0; k < cc_species; k++) - fprintf(fp," %-1.16e",buf[i][8+k]); - fprintf(fp,"\n"); - } + memset(&atom->cc_flux[n][0],0,cc_species*nbytes); } /* ---------------------------------------------------------------------- - return # of bytes of allocated memory + modify what AtomVec::data_atom() just unpacked + or initialize other atom quantities ------------------------------------------------------------------------- */ -bigint AtomVecTDPD::memory_usage() +void AtomVecTDPD::data_atom_post(int ilocal) { - bigint bytes = 0; - - if (atom->memcheck("tag")) bytes += memory->usage(tag,nmax); - if (atom->memcheck("type")) bytes += memory->usage(type,nmax); - if (atom->memcheck("mask")) bytes += memory->usage(mask,nmax); - if (atom->memcheck("image")) bytes += memory->usage(image,nmax); - if (atom->memcheck("x")) bytes += memory->usage(x,nmax,3); - if (atom->memcheck("v")) bytes += memory->usage(v,nmax,3); - if (atom->memcheck("f")) bytes += memory->usage(f,nmax*comm->nthreads,3); - if (atom->memcheck("cc")) bytes += memory->usage(cc,nmax*comm->nthreads,cc_species); - if (atom->memcheck("cc_flux")) bytes += memory->usage(cc_flux,nmax*comm->nthreads,cc_species); - if (atom->memcheck("vest")) bytes += memory->usage(vest, nmax); - - return bytes; + atom->vest[ilocal][0] = 0.0; + atom->vest[ilocal][1] = 0.0; + atom->vest[ilocal][2] = 0.0; } diff --git a/src/USER-MESO/atom_vec_tdpd.h b/src/USER-MESO/atom_vec_tdpd.h index 86e9ae4bb8..7321859fb4 100644 --- a/src/USER-MESO/atom_vec_tdpd.h +++ b/src/USER-MESO/atom_vec_tdpd.h @@ -27,40 +27,12 @@ namespace LAMMPS_NS { class AtomVecTDPD : public AtomVec { public: AtomVecTDPD(class LAMMPS *); - virtual ~AtomVecTDPD() {} void process_args(int, char **); - void grow(int); - void grow_reset(); - void copy(int, int, int); + void init(); void force_clear(int, size_t); - virtual int pack_comm(int, int *, double *, int, int *); - virtual int pack_comm_vel(int, int *, double *, int, int *); - virtual void unpack_comm(int, int, double *); - virtual void unpack_comm_vel(int, int, double *); - int pack_reverse(int, int, double *); - void unpack_reverse(int, int *, double *); - virtual int pack_border(int, int *, double *, int, int *); - virtual int pack_border_vel(int, int *, double *, int, int *); - virtual void unpack_border(int, int, double *); - virtual void unpack_border_vel(int, int, double *); - virtual int pack_exchange(int, double *); - virtual int unpack_exchange(double *); - int size_restart(); - int pack_restart(int, double *); - int unpack_restart(double *); - void create_atom(int, double *); - void data_atom(double *, imageint, char **); - void pack_data(double **); - void write_data(FILE *, int, double **); - bigint memory_usage(); + void data_atom_post(int); protected: - tagint *tag; - int *type,*mask; - imageint *image; - double **x,**v,**f; - double **vest; // store intermediate velocity for using mvv integrator - double **cc,**cc_flux; int cc_species; }; diff --git a/src/USER-SMD/atom_vec_smd.cpp b/src/USER-SMD/atom_vec_smd.cpp index 604504c5a7..0fada3dc2a 100644 --- a/src/USER-SMD/atom_vec_smd.cpp +++ b/src/USER-SMD/atom_vec_smd.cpp @@ -25,13 +25,7 @@ #include "atom_vec_smd.h" #include #include "atom.h" -#include "comm.h" -#include "domain.h" -#include "modify.h" -#include "fix.h" -#include "memory.h" #include "error.h" -#include "utils.h" using namespace LAMMPS_NS; @@ -40,1247 +34,139 @@ using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- */ -AtomVecSMD::AtomVecSMD(LAMMPS *lmp) : - AtomVec(lmp) { - molecular = 0; +AtomVecSMD::AtomVecSMD(LAMMPS *lmp) : AtomVec(lmp) +{ + molecular = 0; + mass_type = 1; + forceclearflag = 1; + + atom->smd_flag = 1; + + atom->radius_flag = 1; + atom->rmass_flag = 1; + atom->vfrac_flag = 1; + atom->contact_radius_flag = 1; + atom->molecule_flag = 1; + atom->smd_data_9_flag = 1; + atom->e_flag = 1; + atom->vest_flag = 1; + atom->smd_stress_flag = 1; + atom->eff_plastic_strain_flag = 1; + atom->x0_flag = 1; + atom->damage_flag = 1; + atom->eff_plastic_strain_rate_flag = 1; + + // strings with peratom variables to include in each AtomVec method + // strings cannot contain fields in corresponding AtomVec default strings + // order of fields in a string does not matter + // except: fields_data_atom & fields_data_vel must match data file + + fields_grow = (char *) + "de vfrac rmass x0 radius contact_radius molecule " + "smd_data_9 e vest tlsph_stress " + "eff_plastic_strain eff_plastic_strain_rate damage"; + fields_copy = (char *) + "vfrac rmass x0 radius contact_radius molecule e " + "eff_plastic_strain eff_plastic_strain_rate vest " + "smd_data_9 smd_stress damage"; + fields_comm = (char *) "radius vfrac vest e"; + fields_comm_vel = (char *) "radius vfrac vest e"; + fields_reverse = (char *) "de"; + fields_border = (char *) + "x0 molecule radius rmass vfrac contact_radius e " + "eff_plastic_strain smd_data_9 smd_stress"; + fields_border_vel = (char *) + "x0 molecule radius rmass vfrac contact_radius e " + "eff_plastic_strain smd_data_9 smd_stress vest"; + fields_exchange = (char *) + "x0 molecule radius rmass vfrac contact_radius e " + "eff_plastic_strain eff_plastic_strain_rate smd_data_9 smd_stress " + "vest damage"; + fields_restart = (char *) + "x0 molecule radius rmass vfrac contact_radius e " + "eff_plastic_strain eff_plastic_strain_rate smd_data_9 smd_stress " + "vest damage"; + fields_create = (char *) + "x0 vest vfrac rmass radius contact_radius molecule e " + "eff_plastic_strain eff_plastic_strain_rate smd_data_9 smd_stress damage"; + fields_data_atom = (char *) + "id type molecule vfrac rmass radius contact_radius x"; + fields_data_vel = (char *) "id v vest"; - comm_x_only = 0; - comm_f_only = 0; - size_forward = 6; // variables that are changed by time integration - size_reverse = 4; // f[3] + de - size_border = 31; - size_velocity = 6; // v + vest - size_data_atom = 13; // 7 + 3 x0 + 3 x - size_data_vel = 4; - xcol_data = 11; + // set these array sizes based on defines - atom->radius_flag = 1; - atom->rmass_flag = 1; - atom->vfrac_flag = 1; - atom->contact_radius_flag = 1; - atom->molecule_flag = 1; - atom->smd_data_9_flag = 1; - atom->e_flag = 1; - atom->vest_flag = 1; - atom->smd_stress_flag = 1; - atom->eff_plastic_strain_flag = 1; - atom->x0_flag = 1; - atom->damage_flag = 1; - atom->eff_plastic_strain_rate_flag = 1; + atom->add_peratom_change_columns("smd_data_9",NMAT_FULL); + atom->add_peratom_change_columns("smd_stress",NMAT_SYMM); - forceclearflag = 1; - - atom->smd_flag = 1; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecSMD::init() { - AtomVec::init(); - - // do nothing here + setup_fields(); } /* ---------------------------------------------------------------------- - grow atom arrays - n = 0 grows arrays by a chunk - n > 0 allocates arrays to size n - ------------------------------------------------------------------------- */ - -void AtomVecSMD::grow(int n) { - if (n == 0) - grow_nmax(); - else - nmax = n; - atom->nmax = nmax; - if (nmax < 0 || nmax > MAXSMALLINT) - error->one(FLERR, "Per-processor system is too big"); - - //printf("in grow, nmax is now %d\n", nmax); - - tag = memory->grow(atom->tag, nmax, "atom:tag"); - type = memory->grow(atom->type, nmax, "atom:type"); - mask = memory->grow(atom->mask, nmax, "atom:mask"); - image = memory->grow(atom->image, nmax, "atom:image"); - x = memory->grow(atom->x, nmax, 3, "atom:x"); - v = memory->grow(atom->v, nmax, 3, "atom:v"); + clear extra forces starting at atom N + nbytes = # of bytes to clear for a per-atom vector + NOTE: does f need to be re-cleared? +------------------------------------------------------------------------- */ - f = memory->grow(atom->f, nmax * comm->nthreads, 3, "atom:f"); - de = memory->grow(atom->de, nmax * comm->nthreads, "atom:de"); - - vfrac = memory->grow(atom->vfrac, nmax, "atom:vfrac"); - rmass = memory->grow(atom->rmass, nmax, "atom:rmass"); - x0 = memory->grow(atom->x0, nmax, 3, "atom:x0"); - radius = memory->grow(atom->radius, nmax, "atom:radius"); - contact_radius = memory->grow(atom->contact_radius, nmax, "atom:contact_radius"); - molecule = memory->grow(atom->molecule, nmax, "atom:molecule"); - smd_data_9 = memory->grow(atom->smd_data_9, nmax, NMAT_FULL, "atom:defgrad_old"); - e = memory->grow(atom->e, nmax, "atom:e"); - vest = memory->grow(atom->vest, nmax, 3, "atom:vest"); - tlsph_stress = memory->grow(atom->smd_stress, nmax, NMAT_SYMM, "atom:tlsph_stress"); - eff_plastic_strain = memory->grow(atom->eff_plastic_strain, nmax, "atom:eff_plastic_strain"); - eff_plastic_strain_rate = memory->grow(atom->eff_plastic_strain_rate, nmax, "atom:eff_plastic_strain_rate"); - damage = memory->grow(atom->damage, nmax, "atom:damage"); - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - modify->fix[atom->extra_grow[iextra]]->grow_arrays(nmax); +void AtomVecSMD::force_clear(int n, size_t nbytes) +{ + memset(&atom->de[n],0,nbytes); + memset(&atom->f[n][0],0,3*nbytes); } /* ---------------------------------------------------------------------- - reset local array ptrs - ------------------------------------------------------------------------- */ - -void AtomVecSMD::grow_reset() { - tag = atom->tag; - type = atom->type; - mask = atom->mask; - image = atom->image; - x = atom->x; - v = atom->v; - f = atom->f; - radius = atom->radius; - rmass = atom->rmass; - - vfrac = atom->vfrac; - x0 = atom->x0; - contact_radius = atom->contact_radius; - molecule = atom->molecule; - smd_data_9 = atom->smd_data_9; - e = atom->e; - de = atom->de; - tlsph_stress = atom->smd_stress; - eff_plastic_strain = atom->eff_plastic_strain; - eff_plastic_strain_rate = atom->eff_plastic_strain_rate; - damage = atom->damage; - vest = atom->vest; -} - -/* ---------------------------------------------------------------------- - copy atom I info to atom J - ------------------------------------------------------------------------- */ - -void AtomVecSMD::copy(int i, int j, int delflag) { - tag[j] = tag[i]; - type[j] = type[i]; - mask[j] = mask[i]; - image[j] = image[i]; - x[j][0] = x[i][0]; - x[j][1] = x[i][1]; - x[j][2] = x[i][2]; - v[j][0] = v[i][0]; - v[j][1] = v[i][1]; - v[j][2] = v[i][2]; - - vfrac[j] = vfrac[i]; - rmass[j] = rmass[i]; - x0[j][0] = x0[i][0]; - x0[j][1] = x0[i][1]; - x0[j][2] = x0[i][2]; - radius[j] = radius[i]; - contact_radius[j] = contact_radius[i]; - molecule[j] = molecule[i]; - e[j] = e[i]; - eff_plastic_strain[j] = eff_plastic_strain[i]; - eff_plastic_strain_rate[j] = eff_plastic_strain_rate[i]; - vest[j][0] = vest[i][0]; - vest[j][1] = vest[i][1]; - vest[j][2] = vest[i][2]; - - for (int k = 0; k < NMAT_FULL; k++) { - smd_data_9[j][k] = smd_data_9[i][k]; - } - - for (int k = 0; k < NMAT_SYMM; k++) { - tlsph_stress[j][k] = tlsph_stress[i][k]; - } - - damage[j] = damage[i]; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - modify->fix[atom->extra_grow[iextra]]->copy_arrays(i, j, delflag); -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecSMD::pack_comm(int /*n*/, int * /*list*/, double * /*buf*/, int /*pbc_flag*/, int * /*pbc*/) { - error->one(FLERR, "atom vec tlsph can only be used with ghost velocities turned on"); - return -1; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecSMD::pack_comm_vel(int n, int *list, double *buf, int pbc_flag, int *pbc) { - // communicate quantities to ghosts, which are changed by time-integration AND are required on ghost atoms. - - //no need to pack stress or defgrad information here, as these quantities are not required for ghost atoms. - // Inside pair_style tlsph, these quantities are computed and communicated to ghosts. - - // no need to communicate x0 here, as it is not changed by time integration - // if x0 is changed when the ref config is updated, this communication is performed in the fix_integrate/tlsph - // similarily, rmass could be removed here. - // radius should be communicated here for future time-integration of the radius with ulsph (not implemented yet) - int i, j, m; - double dx, dy, dz, dvx, dvy, dvz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; //3 - buf[m++] = radius[j]; - buf[m++] = vfrac[j]; // 5 - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; // 8 - - buf[m++] = vest[j][0]; - buf[m++] = vest[j][1]; - buf[m++] = vest[j][2]; // 11 - buf[m++] = e[j]; // 12 - - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0] * domain->xprd; - dy = pbc[1] * domain->yprd; - dz = pbc[2] * domain->zprd; - } else { - dx = pbc[0] * domain->xprd + pbc[5] * domain->xy + pbc[4] * domain->xz; - dy = pbc[1] * domain->yprd + pbc[3] * domain->yz; - dz = pbc[2] * domain->zprd; - } - if (!deform_vremap) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = radius[j]; - buf[m++] = vfrac[j]; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; // 8 - - buf[m++] = vest[j][0]; - buf[m++] = vest[j][1]; - buf[m++] = vest[j][2]; // 11 - buf[m++] = e[j]; // 12 - - } - } else { - dvx = pbc[0] * h_rate[0] + pbc[5] * h_rate[5] + pbc[4] * h_rate[4]; - dvy = pbc[1] * h_rate[1] + pbc[3] * h_rate[3]; - dvz = pbc[2] * h_rate[2]; -// printf("\ndvx = %f, dvy=%f, dvz=%f\n", dvx, dvy, dvz); -// printf("dx = %f, dy=%f, dz=%f\n", dx, dy, dz); - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = radius[j]; - buf[m++] = vfrac[j]; - if (mask[i] & deform_groupbit) { - buf[m++] = v[j][0] + dvx; - buf[m++] = v[j][1] + dvy; - buf[m++] = v[j][2] + dvz; - buf[m++] = vest[j][0] + dvx; - buf[m++] = vest[j][1] + dvy; - buf[m++] = vest[j][2] + dvz; - } else { - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; // 8 - buf[m++] = vest[j][0]; - buf[m++] = vest[j][1]; - buf[m++] = vest[j][2]; // 11 - } - - buf[m++] = e[j]; // 12 - - } - } - } - - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecSMD::pack_comm_hybrid(int n, int *list, double *buf) { - int i, j, m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = radius[j]; - buf[m++] = vfrac[j]; - buf[m++] = vest[j][0]; - buf[m++] = vest[j][1]; - buf[m++] = vest[j][2]; - buf[m++] = e[j]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecSMD::unpack_comm(int /*n*/, int /*first*/, double * /*buf*/) { - error->one(FLERR, "atom vec tlsph can only be used with ghost velocities turned on"); -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecSMD::unpack_comm_vel(int n, int first, double *buf) { - int i, m, last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; //3 - radius[i] = buf[m++]; - vfrac[i] = buf[m++]; // 5 - v[i][0] = buf[m++]; - v[i][1] = buf[m++]; - v[i][2] = buf[m++]; // 8 - - vest[i][0] = buf[m++]; - vest[i][1] = buf[m++]; - vest[i][2] = buf[m++]; // 11 - e[i] = buf[m++]; - - } -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecSMD::unpack_comm_hybrid(int n, int first, double *buf) { - int i, m, last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - radius[i] = buf[m++]; - vfrac[i] = buf[m++]; - vest[i][0] = buf[m++]; - vest[i][1] = buf[m++]; - vest[i][2] = buf[m++]; - e[i] = buf[m++]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecSMD::pack_reverse(int n, int first, double *buf) { - int i, m, last; - - printf("in pack_reverse\n"); - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - buf[m++] = f[i][0]; - buf[m++] = f[i][1]; - buf[m++] = f[i][2]; - buf[m++] = de[i]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecSMD::pack_reverse_hybrid(int n, int first, double *buf) { - int i, m, last; + initialize non-zero atom quantities +------------------------------------------------------------------------- */ - m = 0; - last = first + n; - for (i = first; i < last; i++) { - buf[m++] = de[i]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecSMD::unpack_reverse(int n, int *list, double *buf) { - int i, j, m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - f[j][0] += buf[m++]; - f[j][1] += buf[m++]; - f[j][2] += buf[m++]; - de[j] += buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecSMD::unpack_reverse_hybrid(int n, int *list, double *buf) { - int i, j, m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - de[j] += buf[m++]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecSMD::pack_border(int /*n*/, int * /*list*/, double * /*buf*/, int /*pbc_flag*/, int * /*pbc*/) { - error->one(FLERR, "atom vec tlsph can only be used with ghost velocities turned on"); - return -1; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecSMD::pack_border_vel(int n, int *list, double *buf, int pbc_flag, int *pbc) { - int i, j, m; - double dx, dy, dz, dvx, dvy, dvz; - - //printf("AtomVecSMD::pack_border_vel\n"); - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; // 3 - buf[m++] = x0[j][0]; - buf[m++] = x0[j][1]; - buf[m++] = x0[j][2]; // 6 - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = ubuf(molecule[j]).d; // 10 - buf[m++] = radius[j]; - buf[m++] = rmass[j]; - buf[m++] = vfrac[j]; - buf[m++] = contact_radius[j]; - buf[m++] = e[j]; - buf[m++] = eff_plastic_strain[j]; // 16 - - for (int k = 0; k < NMAT_FULL; k++) { - buf[m++] = smd_data_9[j][k]; - } // 25 - - for (int k = 0; k < NMAT_SYMM; k++) { - buf[m++] = tlsph_stress[j][k]; - } // 31 - - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; // 34 - buf[m++] = vest[j][0]; - buf[m++] = vest[j][1]; - buf[m++] = vest[j][2]; // 37 - } - } else { - - if (domain->triclinic == 0) { - dx = pbc[0] * domain->xprd; - dy = pbc[1] * domain->yprd; - dz = pbc[2] * domain->zprd; - } else { - dx = pbc[0]; - dy = pbc[1]; - dz = pbc[2]; - } - if (!deform_vremap) { - //printf("dx = %f\n", dx); - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; // 3 - buf[m++] = x0[j][0]; // this is correct - buf[m++] = x0[j][1]; - buf[m++] = x0[j][2]; // 6 - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = ubuf(molecule[j]).d; // 10 - buf[m++] = radius[j]; - buf[m++] = rmass[j]; - buf[m++] = vfrac[j]; - buf[m++] = contact_radius[j]; - buf[m++] = e[j]; - buf[m++] = eff_plastic_strain[j]; // 17 - - for (int k = 0; k < NMAT_FULL; k++) { - buf[m++] = smd_data_9[j][k]; - } // 26 - - for (int k = 0; k < NMAT_SYMM; k++) { - buf[m++] = tlsph_stress[j][k]; - } // 32 - - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; // 35 - buf[m++] = vest[j][0]; - buf[m++] = vest[j][1]; - buf[m++] = vest[j][2]; // 38 - - } - } else { - dvx = pbc[0] * h_rate[0] + pbc[5] * h_rate[5] + pbc[4] * h_rate[4]; - dvy = pbc[1] * h_rate[1] + pbc[3] * h_rate[3]; - dvz = pbc[2] * h_rate[2]; -// printf("\ndvx = %f, dvy=%f, dvz=%f\n", dvx, dvy, dvz); -// printf("dx = %f, dy=%f, dz=%f\n", dx, dy, dz); - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; // 3 - buf[m++] = x0[j][0]; - buf[m++] = x0[j][1]; - buf[m++] = x0[j][2]; // 6 - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = ubuf(molecule[j]).d; // 10 - buf[m++] = radius[j]; - buf[m++] = rmass[j]; - buf[m++] = vfrac[j]; - buf[m++] = contact_radius[j]; - buf[m++] = e[j]; - buf[m++] = eff_plastic_strain[j]; // 16 - - for (int k = 0; k < NMAT_FULL; k++) { - buf[m++] = smd_data_9[j][k]; - } // 25 - - for (int k = 0; k < NMAT_SYMM; k++) { - buf[m++] = tlsph_stress[j][k]; - } // 31 - - if (mask[i] & deform_groupbit) { - buf[m++] = v[j][0] + dvx; - buf[m++] = v[j][1] + dvy; - buf[m++] = v[j][2] + dvz; // 34 - buf[m++] = vest[j][0] + dvx; - buf[m++] = vest[j][1] + dvy; - buf[m++] = vest[j][2] + dvz; // 37 - - } else { - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; // 34 - buf[m++] = vest[j][0]; - buf[m++] = vest[j][1]; - buf[m++] = vest[j][2]; // 37 - } - - } - } - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]->pack_border(n, list, &buf[m]); - - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecSMD::pack_border_hybrid(int n, int *list, double *buf) { - int i, j, m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - - buf[m++] = x0[j][0]; - buf[m++] = x0[j][1]; - buf[m++] = x0[j][2]; // 3 - buf[m++] = ubuf(molecule[j]).d; // 4 - buf[m++] = radius[j]; - buf[m++] = rmass[j]; - buf[m++] = vfrac[j]; - buf[m++] = contact_radius[j]; - buf[m++] = e[j]; - buf[m++] = eff_plastic_strain[j]; // 11 - - for (int k = 0; k < NMAT_FULL; k++) { - buf[m++] = smd_data_9[j][k]; - } // 20 +void AtomVecSMD::create_atom_post(int ilocal) +{ + atom->x0[ilocal][0] = atom->x[ilocal][0]; + atom->x0[ilocal][1] = atom->x[ilocal][1]; + atom->x0[ilocal][2] = atom->x[ilocal][2]; - for (int k = 0; k < NMAT_SYMM; k++) { - buf[m++] = tlsph_stress[j][k]; - } // 26 - - } - return m; + atom->vfrac[ilocal] = 1.0; + atom->rmass[ilocal] = 1.0; + atom->radius[ilocal] = 0.5; + atom->contact_radius[ilocal] = 0.5; + atom->molecule[ilocal] = 1; + + atom->smd_data_9[ilocal][0] = 1.0; // xx + atom->smd_data_9[ilocal][4] = 1.0; // yy + atom->smd_data_9[ilocal][8] = 1.0; // zz } -/* ---------------------------------------------------------------------- */ +/* ---------------------------------------------------------------------- + modify what AtomVec::data_atom() just unpacked + or initialize other atom quantities +------------------------------------------------------------------------- */ + +void AtomVecSMD::data_atom_post(int ilocal) +{ + atom->e[ilocal] = 0.0; + atom->x0[ilocal][0] = atom->x[ilocal][0]; + atom->x0[ilocal][1] = atom->x[ilocal][1]; + atom->x0[ilocal][2] = atom->x[ilocal][2]; + + atom->vest[ilocal][0] = 0.0; + atom->vest[ilocal][1] = 0.0; + atom->vest[ilocal][2] = 0.0; + + atom->damage[ilocal] = 0.0; -void AtomVecSMD::unpack_border(int /*n*/, int /*first*/, double * /*buf*/) { - error->one(FLERR, "atom vec tlsph can only be used with ghost velocities turned on"); -} - -/* ---------------------------------------------------------------------- */ + atom->eff_plastic_strain[ilocal] = 0.0; + atom->eff_plastic_strain_rate[ilocal] = 0.0; -void AtomVecSMD::unpack_border_vel(int n, int first, double *buf) { - int i, m, last; + for (int k = 0; k < NMAT_FULL; k++) + atom->smd_data_9[ilocal][k] = 0.0; - m = 0; - last = first + n; - for (i = first; i < last; i++) { - if (i == nmax) - grow(0); - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; // 3 - x0[i][0] = buf[m++]; - x0[i][1] = buf[m++]; - x0[i][2] = buf[m++]; // 6 - tag[i] = (tagint) ubuf(buf[m++]).i; - type[i] = (int) ubuf(buf[m++]).i; - mask[i] = (int) ubuf(buf[m++]).i; - molecule[i] = (tagint) ubuf(buf[m++]).i; // 10 + for (int k = 0; k < NMAT_SYMM; k++) + atom->smd_stress[ilocal][k] = 0.0; - radius[i] = buf[m++]; - rmass[i] = buf[m++]; - vfrac[i] = buf[m++]; - contact_radius[i] = buf[m++]; - e[i] = buf[m++]; - eff_plastic_strain[i] = buf[m++]; // 16 - - for (int k = 0; k < NMAT_FULL; k++) { - smd_data_9[i][k] = buf[m++]; - } // 25 - - for (int k = 0; k < NMAT_SYMM; k++) { - tlsph_stress[i][k] = buf[m++]; - } // 31 - - v[i][0] = buf[m++]; - v[i][1] = buf[m++]; - v[i][2] = buf[m++]; // 34 - vest[i][0] = buf[m++]; - vest[i][1] = buf[m++]; - vest[i][2] = buf[m++]; // 37 - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]->unpack_border(n, first, &buf[m]); + atom->smd_data_9[ilocal][0] = 1.0; // xx + atom->smd_data_9[ilocal][4] = 1.0; // yy + atom->smd_data_9[ilocal][8] = 1.0; // zz } -/* ---------------------------------------------------------------------- */ - -int AtomVecSMD::unpack_border_hybrid(int n, int first, double *buf) { - int i, m, last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - x0[i][0] = buf[m++]; - x0[i][1] = buf[m++]; - x0[i][2] = buf[m++]; // 3 - molecule[i] = (tagint) ubuf(buf[m++]).i; // 4 - radius[i] = buf[m++]; - rmass[i] = buf[m++]; - vfrac[i] = buf[m++]; - contact_radius[i] = buf[m++]; - e[i] = buf[m++]; - eff_plastic_strain[i] = buf[m++]; // 11 - - for (int k = 0; k < NMAT_FULL; k++) { - smd_data_9[i][k] = buf[m++]; - } // 20 - - for (int k = 0; k < NMAT_SYMM; k++) { - tlsph_stress[i][k] = buf[m++]; - } // 26 - } - return m; -} - -/* ---------------------------------------------------------------------- - pack data for atom I for sending to another proc - xyz must be 1st 3 values, so comm::exchange() can test on them - ------------------------------------------------------------------------- */ - -int AtomVecSMD::pack_exchange(int i, double *buf) { - int m = 1; - - //printf("in AtomVecSMD::pack_exchange tag %d\n", tag[i]); - - buf[m++] = x[i][0]; - buf[m++] = x[i][1]; - buf[m++] = x[i][2]; // 3 - buf[m++] = x0[i][0]; - buf[m++] = x0[i][1]; - buf[m++] = x0[i][2]; // 6 - buf[m++] = ubuf(tag[i]).d; - buf[m++] = ubuf(type[i]).d; - buf[m++] = ubuf(mask[i]).d; - buf[m++] = ubuf(image[i]).d; - buf[m++] = ubuf(molecule[i]).d; // 11 - buf[m++] = radius[i]; - buf[m++] = rmass[i]; - buf[m++] = vfrac[i]; - buf[m++] = contact_radius[i]; - buf[m++] = e[i]; - buf[m++] = eff_plastic_strain[i]; // 18 - buf[m++] = eff_plastic_strain_rate[i]; // 19 - - for (int k = 0; k < NMAT_FULL; k++) { - buf[m++] = smd_data_9[i][k]; - } // 27 - - for (int k = 0; k < NMAT_SYMM; k++) { - buf[m++] = tlsph_stress[i][k]; - } // 33 - - buf[m++] = v[i][0]; - buf[m++] = v[i][1]; - buf[m++] = v[i][2]; // 36 - buf[m++] = vest[i][0]; - buf[m++] = vest[i][1]; - buf[m++] = vest[i][2]; // 39 - - buf[m++] = damage[i]; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - m += modify->fix[atom->extra_grow[iextra]]->pack_exchange(i, &buf[m]); - - buf[0] = m; - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecSMD::unpack_exchange(double *buf) { - int nlocal = atom->nlocal; - if (nlocal == nmax) - grow(0); - - int m = 1; - x[nlocal][0] = buf[m++]; - x[nlocal][1] = buf[m++]; - x[nlocal][2] = buf[m++]; // 3 - x0[nlocal][0] = buf[m++]; - x0[nlocal][1] = buf[m++]; - x0[nlocal][2] = buf[m++]; // 6 - tag[nlocal] = (tagint) ubuf(buf[m++]).i; - type[nlocal] = (int) ubuf(buf[m++]).i; - mask[nlocal] = (int) ubuf(buf[m++]).i; - image[nlocal] = (imageint) ubuf(buf[m++]).i; - molecule[nlocal] = (tagint) ubuf(buf[m++]).i; // 11 - radius[nlocal] = buf[m++]; - rmass[nlocal] = buf[m++]; - vfrac[nlocal] = buf[m++]; - contact_radius[nlocal] = buf[m++]; - e[nlocal] = buf[m++]; - eff_plastic_strain[nlocal] = buf[m++]; // 18 - eff_plastic_strain_rate[nlocal] = buf[m++]; // 19 - for (int k = 0; k < NMAT_FULL; k++) { - smd_data_9[nlocal][k] = buf[m++]; - } // 27 - for (int k = 0; k < NMAT_SYMM; k++) { - tlsph_stress[nlocal][k] = buf[m++]; - } // 33 - - v[nlocal][0] = buf[m++]; - v[nlocal][1] = buf[m++]; - v[nlocal][2] = buf[m++]; // 36 - vest[nlocal][0] = buf[m++]; - vest[nlocal][1] = buf[m++]; - vest[nlocal][2] = buf[m++]; // 39 - - damage[nlocal] = buf[m++]; //40 - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - m += modify->fix[atom->extra_grow[iextra]]->unpack_exchange(nlocal, &buf[m]); - - atom->nlocal++; - return m; -} - -/* ---------------------------------------------------------------------- - size of restart data for all atoms owned by this proc - include extra data stored by fixes - ------------------------------------------------------------------------- */ - -int AtomVecSMD::size_restart() { - int i; - - int nlocal = atom->nlocal; - int n = 43 * nlocal; // count pack_restart + 1 (size of buffer) - - if (atom->nextra_restart) - for (int iextra = 0; iextra < atom->nextra_restart; iextra++) - for (i = 0; i < nlocal; i++) - n += modify->fix[atom->extra_restart[iextra]]->size_restart(i); - - return n; -} - -/* ---------------------------------------------------------------------- - pack atom I's data for restart file including extra quantities - xyz must be 1st 3 values, so that read_restart can test on them - molecular types may be negative, but write as positive - ------------------------------------------------------------------------- */ -int AtomVecSMD::pack_restart(int i, double *buf) { - int m = 1; // 1 - - buf[m++] = x[i][0]; - buf[m++] = x[i][1]; - buf[m++] = x[i][2]; // 4 - buf[m++] = x0[i][0]; - buf[m++] = x0[i][1]; - buf[m++] = x0[i][2]; // 7 - buf[m++] = ubuf(tag[i]).d; - buf[m++] = ubuf(type[i]).d; - buf[m++] = ubuf(mask[i]).d; // 10 - buf[m++] = ubuf(image[i]).d; - buf[m++] = ubuf(molecule[i]).d; - buf[m++] = radius[i]; - buf[m++] = rmass[i]; - buf[m++] = vfrac[i]; // 15 - buf[m++] = contact_radius[i]; - buf[m++] = e[i]; - buf[m++] = eff_plastic_strain[i]; - buf[m++] = eff_plastic_strain_rate[i]; // 19 - - for (int k = 0; k < NMAT_FULL; k++) { - buf[m++] = smd_data_9[i][k]; - } // 28 - - for (int k = 0; k < NMAT_SYMM; k++) { - buf[m++] = tlsph_stress[i][k]; - } // 34 - - buf[m++] = v[i][0]; - buf[m++] = v[i][1]; - buf[m++] = v[i][2]; // 37 - buf[m++] = vest[i][0]; - buf[m++] = vest[i][1]; - buf[m++] = vest[i][2]; // 40 - - buf[m++] = damage[i]; // 41 - - if (atom->nextra_restart) - for (int iextra = 0; iextra < atom->nextra_restart; iextra++) - m += modify->fix[atom->extra_restart[iextra]]->pack_restart(i, &buf[m]); - - buf[0] = m; - return m; -} - -/* ---------------------------------------------------------------------- - unpack data for one atom from restart file including extra quantities - ------------------------------------------------------------------------- */ - -int AtomVecSMD::unpack_restart(double *buf) { - int nlocal = atom->nlocal; - if (nlocal == nmax) { - grow(0); - if (atom->nextra_store) - memory->grow(atom->extra, nmax, atom->nextra_store, "atom:extra"); - } - - int m = 1; - - x[nlocal][0] = buf[m++]; - x[nlocal][1] = buf[m++]; - x[nlocal][2] = buf[m++]; // 3 - x0[nlocal][0] = buf[m++]; - x0[nlocal][1] = buf[m++]; - x0[nlocal][2] = buf[m++]; // 6 - tag[nlocal] = (tagint) ubuf(buf[m++]).i; - type[nlocal] = (int) ubuf(buf[m++]).i; - mask[nlocal] = (int) ubuf(buf[m++]).i; - image[nlocal] = (imageint) ubuf(buf[m++]).i; - molecule[nlocal] = (tagint) ubuf(buf[m++]).i; // 11 - - radius[nlocal] = buf[m++]; - rmass[nlocal] = buf[m++]; - vfrac[nlocal] = buf[m++]; //14 - contact_radius[nlocal] = buf[m++]; //15 - e[nlocal] = buf[m++]; - eff_plastic_strain[nlocal] = buf[m++]; // 18 - eff_plastic_strain_rate[nlocal] = buf[m++]; // 29 - - for (int k = 0; k < NMAT_FULL; k++) { - smd_data_9[nlocal][k] = buf[m++]; - } // 28 - - for (int k = 0; k < NMAT_SYMM; k++) { - tlsph_stress[nlocal][k] = buf[m++]; - } // 34 - - v[nlocal][0] = buf[m++]; - v[nlocal][1] = buf[m++]; - v[nlocal][2] = buf[m++]; // 37 - vest[nlocal][0] = buf[m++]; - vest[nlocal][1] = buf[m++]; - vest[nlocal][2] = buf[m++]; // 40 - - damage[nlocal] = buf[m++]; //41 - - //printf("nlocal in restart is %d\n", nlocal); - - double **extra = atom->extra; - if (atom->nextra_store) { - int size = static_cast(buf[0]) - m; - for (int i = 0; i < size; i++) - extra[nlocal][i] = buf[m++]; - } - - atom->nlocal++; - - //printf("returning m=%d in unpack_restart\n", m); - - return m; -} - -/* ---------------------------------------------------------------------- - create one atom of itype at coord - set other values to defaults - ------------------------------------------------------------------------- */ - -void AtomVecSMD::create_atom(int itype, double *coord) { - int nlocal = atom->nlocal; - if (nlocal == nmax) { - printf("nlocal = %d, nmax = %d, calling grow\n", nlocal, nmax); - grow(0); - printf("... finished growing\n"); - } - - tag[nlocal] = 0; - type[nlocal] = itype; - x[nlocal][0] = coord[0]; - x[nlocal][1] = coord[1]; - x[nlocal][2] = coord[2]; - x0[nlocal][0] = coord[0]; - x0[nlocal][1] = coord[1]; - x0[nlocal][2] = coord[2]; - mask[nlocal] = 1; - image[nlocal] = ((imageint) IMGMAX << IMG2BITS) | ((imageint) IMGMAX << IMGBITS) | IMGMAX; - v[nlocal][0] = 0.0; - v[nlocal][1] = 0.0; - v[nlocal][2] = 0.0; - vest[nlocal][0] = 0.0; - vest[nlocal][1] = 0.0; - vest[nlocal][2] = 0.0; - - vfrac[nlocal] = 1.0; - rmass[nlocal] = 1.0; - radius[nlocal] = 0.5; - contact_radius[nlocal] = 0.5; - molecule[nlocal] = 1; - e[nlocal] = 0.0; - eff_plastic_strain[nlocal] = 0.0; - eff_plastic_strain_rate[nlocal] = 0.0; - - for (int k = 0; k < NMAT_FULL; k++) { - smd_data_9[nlocal][k] = 0.0; - } - smd_data_9[nlocal][0] = 1.0; // xx - smd_data_9[nlocal][4] = 1.0; // yy - smd_data_9[nlocal][8] = 1.0; // zz - - for (int k = 0; k < NMAT_SYMM; k++) { - tlsph_stress[nlocal][k] = 0.0; - } - - damage[nlocal] = 0.0; - - atom->nlocal++; -} - -/* ---------------------------------------------------------------------- - unpack one line from Atoms section of data file - initialize other atom quantities - ------------------------------------------------------------------------- */ - -void AtomVecSMD::data_atom(double *coord, imageint imagetmp, char **values) { - int nlocal = atom->nlocal; - if (nlocal == nmax) - grow(0); - - tag[nlocal] = utils::tnumeric(FLERR,values[0],true,lmp); - - type[nlocal] = utils::inumeric(FLERR,values[1],true,lmp); - if (type[nlocal] <= 0 || type[nlocal] > atom->ntypes) - error->one(FLERR, "Invalid atom type in Atoms section of data file"); - - molecule[nlocal] = utils::tnumeric(FLERR,values[2],true,lmp); - if (molecule[nlocal] <= 0) - error->one(FLERR, "Invalid molecule in Atoms section of data file"); - - vfrac[nlocal] = utils::numeric(FLERR,values[3],true,lmp); - if (vfrac[nlocal] < 0.0) - error->one(FLERR, "Invalid volume in Atoms section of data file"); - - rmass[nlocal] = utils::numeric(FLERR,values[4],true,lmp); - if (rmass[nlocal] == 0.0) - error->one(FLERR, "Invalid mass in Atoms section of data file"); - - radius[nlocal] = utils::numeric(FLERR,values[5],true,lmp); - if (radius[nlocal] < 0.0) - error->one(FLERR, "Invalid radius in Atoms section of data file"); - - contact_radius[nlocal] = utils::numeric(FLERR,values[6],true,lmp); - if (contact_radius[nlocal] < 0.0) - error->one(FLERR, "Invalid contact radius in Atoms section of data file"); - - e[nlocal] = 0.0; - - x0[nlocal][0] = utils::numeric(FLERR,values[7],true,lmp); - x0[nlocal][1] = utils::numeric(FLERR,values[8],true,lmp); - x0[nlocal][2] = utils::numeric(FLERR,values[9],true,lmp); - - x[nlocal][0] = coord[0]; - x[nlocal][1] = coord[1]; - x[nlocal][2] = coord[2]; - - image[nlocal] = imagetmp; - - mask[nlocal] = 1; - v[nlocal][0] = 0.0; - v[nlocal][1] = 0.0; - v[nlocal][2] = 0.0; - vest[nlocal][0] = 0.0; - vest[nlocal][1] = 0.0; - vest[nlocal][2] = 0.0; - - damage[nlocal] = 0.0; - - eff_plastic_strain[nlocal] = 0.0; - eff_plastic_strain_rate[nlocal] = 0.0; - - for (int k = 0; k < NMAT_FULL; k++) { - smd_data_9[nlocal][k] = 0.0; - } - - for (int k = 0; k < NMAT_SYMM; k++) { - tlsph_stress[nlocal][k] = 0.0; - } - - smd_data_9[nlocal][0] = 1.0; // xx - smd_data_9[nlocal][4] = 1.0; // yy - smd_data_9[nlocal][8] = 1.0; // zz - - atom->nlocal++; -} - -/* ---------------------------------------------------------------------- - unpack hybrid quantities from one line in Atoms section of data file - initialize other atom quantities for this sub-style - ------------------------------------------------------------------------- */ - -int AtomVecSMD::data_atom_hybrid(int /*nlocal*/, char **/*values*/) { - error->one(FLERR, "hybrid atom style functionality not yet implemented for atom style smd"); - return -1; -} - -/* ---------------------------------------------------------------------- - unpack one line from Velocities section of data file - ------------------------------------------------------------------------- */ - -void AtomVecSMD::data_vel(int m, char **values) { - v[m][0] = utils::numeric(FLERR,values[0],true,lmp); - v[m][1] = utils::numeric(FLERR,values[1],true,lmp); - v[m][2] = utils::numeric(FLERR,values[2],true,lmp); - vest[m][0] = utils::numeric(FLERR,values[0],true,lmp); - vest[m][1] = utils::numeric(FLERR,values[1],true,lmp); - vest[m][2] = utils::numeric(FLERR,values[2],true,lmp); -} - -/* ---------------------------------------------------------------------- - unpack hybrid quantities from one line in Velocities section of data file - ------------------------------------------------------------------------- */ - -int AtomVecSMD::data_vel_hybrid(int /*m*/, char **/*values*/) { - error->one(FLERR, "hybrid atom style functionality not yet implemented for atom style smd"); - return 0; -} - -/* ---------------------------------------------------------------------- - pack atom info for data file including 3 image flags - ------------------------------------------------------------------------- */ - -void AtomVecSMD::pack_data(double **buf) { - int nlocal = atom->nlocal; - for (int i = 0; i < nlocal; i++) { - buf[i][0] = ubuf(tag[i]).d; - buf[i][1] = ubuf(type[i]).d; - buf[i][2] = ubuf(molecule[i]).d; - buf[i][3] = vfrac[i]; - buf[i][4] = rmass[i]; - buf[i][5] = radius[i]; - buf[i][6] = contact_radius[i]; - - buf[i][7] = x[i][0]; - buf[i][8] = x[i][1]; - buf[i][9] = x[i][2]; - - buf[i][10] = x0[i][0]; - buf[i][11] = x0[i][1]; - buf[i][12] = x0[i][2]; - - buf[i][13] = ubuf((image[i] & IMGMASK) - IMGMAX).d; - buf[i][14] = ubuf((image[i] >> IMGBITS & IMGMASK) - IMGMAX).d; - buf[i][15] = ubuf((image[i] >> IMG2BITS) - IMGMAX).d; - } -} - -/* ---------------------------------------------------------------------- - pack hybrid atom info for data file - ------------------------------------------------------------------------- */ - -int AtomVecSMD::pack_data_hybrid(int /*i*/, double * /*buf*/) { - error->one(FLERR, "hybrid atom style functionality not yet implemented for atom style smd"); - return -1; -} - -/* ---------------------------------------------------------------------- - write atom info to data file including 3 image flags - ------------------------------------------------------------------------- */ - -void AtomVecSMD::write_data(FILE *fp, int n, double **buf) { - for (int i = 0; i < n; i++) - fprintf(fp, - TAGINT_FORMAT - " %d %d %-1.16e %-1.16e %-1.16e %-1.16e %-1.16e %-1.16e %-1.16e %-1.16e %-1.16e %-1.16e\n", (tagint) ubuf(buf[i][0]).i, - (int) ubuf(buf[i][1]).i, (int) ubuf(buf[i][2]).i, buf[i][3], buf[i][4], buf[i][5], buf[i][6], buf[i][7], buf[i][8], - buf[i][9], buf[i][10], buf[i][11], buf[i][12]); -} - -/* ---------------------------------------------------------------------- - write hybrid atom info to data file - ------------------------------------------------------------------------- */ - -int AtomVecSMD::write_data_hybrid(FILE * /*fp*/, double * /*buf*/) { - error->one(FLERR, "hybrid atom style functionality not yet implemented for atom style smd"); - return -1; -} - -/* ---------------------------------------------------------------------- - pack velocity info for data file - ------------------------------------------------------------------------- */ - -void AtomVecSMD::pack_vel(double **buf) { - int nlocal = atom->nlocal; - for (int i = 0; i < nlocal; i++) { - buf[i][0] = ubuf(tag[i]).d; - buf[i][1] = v[i][0]; - buf[i][2] = v[i][1]; - buf[i][3] = v[i][2]; - } -} - -/* ---------------------------------------------------------------------- - pack hybrid velocity info for data file - ------------------------------------------------------------------------- */ - -int AtomVecSMD::pack_vel_hybrid(int /*i*/, double * /*buf*/) { - error->one(FLERR, "hybrid atom style functionality not yet implemented for atom style smd"); - return 0; -} - -/* ---------------------------------------------------------------------- - write velocity info to data file - ------------------------------------------------------------------------- */ - -void AtomVecSMD::write_vel(FILE *fp, int n, double **buf) { - for (int i = 0; i < n; i++) - fprintf(fp, TAGINT_FORMAT - " %-1.16e %-1.16e %-1.16e\n", (tagint) ubuf(buf[i][0]).i, buf[i][1], buf[i][2], buf[i][3]); -} - -/* ---------------------------------------------------------------------- - write hybrid velocity info to data file - ------------------------------------------------------------------------- */ - -int AtomVecSMD::write_vel_hybrid(FILE * /*fp*/, double * /*buf*/) { - error->one(FLERR, "hybrid atom style functionality not yet implemented for atom style smd"); - return 3; -} - -/* ---------------------------------------------------------------------- - return # of bytes of allocated memory - ------------------------------------------------------------------------- */ - -bigint AtomVecSMD::memory_usage() { - bigint bytes = 0; - - if (atom->memcheck("tag")) - bytes += memory->usage(tag, nmax); - if (atom->memcheck("type")) - bytes += memory->usage(type, nmax); - if (atom->memcheck("molecule")) - bytes += memory->usage(molecule, nmax); - if (atom->memcheck("mask")) - bytes += memory->usage(mask, nmax); - if (atom->memcheck("image")) - bytes += memory->usage(image, nmax); - if (atom->memcheck("x")) - bytes += memory->usage(x, nmax, 3); - if (atom->memcheck("v")) - bytes += memory->usage(v, nmax, 3); - if (atom->memcheck("vest")) - bytes += memory->usage(vest, nmax, 3); - if (atom->memcheck("f")) - bytes += memory->usage(f, nmax * comm->nthreads, 3); - - if (atom->memcheck("radius")) - bytes += memory->usage(radius, nmax); - if (atom->memcheck("contact_radius")) - bytes += memory->usage(contact_radius, nmax); - if (atom->memcheck("vfrac")) - bytes += memory->usage(vfrac, nmax); - if (atom->memcheck("rmass")) - bytes += memory->usage(rmass, nmax); - if (atom->memcheck("eff_plastic_strain")) - bytes += memory->usage(eff_plastic_strain, nmax); - if (atom->memcheck("eff_plastic_strain_rate")) - bytes += memory->usage(eff_plastic_strain_rate, nmax); - if (atom->memcheck("e")) - bytes += memory->usage(e, nmax); - if (atom->memcheck("de")) - bytes += memory->usage(de, nmax); - - if (atom->memcheck("smd_data_9")) - bytes += memory->usage(smd_data_9, nmax, NMAT_FULL); - if (atom->memcheck("tlsph_stress")) - bytes += memory->usage(tlsph_stress, nmax, NMAT_SYMM); - - if (atom->memcheck("damage")) - bytes += memory->usage(damage, nmax); - - return bytes; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecSMD::force_clear(int n, size_t nbytes) { - //printf("clearing force on atom %d", n); - memset(&de[n], 0, nbytes); - memset(&f[0][0], 0, 3 * nbytes); -} diff --git a/src/USER-SMD/atom_vec_smd.h b/src/USER-SMD/atom_vec_smd.h index 34fdfc1f76..539f209ca7 100644 --- a/src/USER-SMD/atom_vec_smd.h +++ b/src/USER-SMD/atom_vec_smd.h @@ -9,7 +9,6 @@ * * ----------------------------------------------------------------------- */ - /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator http://lammps.sandia.gov, Sandia National Laboratories @@ -39,63 +38,9 @@ namespace LAMMPS_NS { class AtomVecSMD : public AtomVec { public: AtomVecSMD(class LAMMPS *); - ~AtomVecSMD() {} - void init(); - void grow(int); - void grow_reset(); - void copy(int, int, int); void force_clear(int, size_t); - int pack_comm(int, int *, double *, int, int *); - int pack_comm_vel(int, int *, double *, int, int *); - int pack_comm_hybrid(int, int *, double *); - void unpack_comm(int, int, double *); - void unpack_comm_vel(int, int, double *); - int unpack_comm_hybrid(int, int, double *); - int pack_reverse(int, int, double *); - int pack_reverse_hybrid(int, int, double *); - void unpack_reverse(int, int *, double *); - int unpack_reverse_hybrid(int, int *, double *); - int pack_border(int, int *, double *, int, int *); - int pack_border_vel(int, int *, double *, int, int *); - int pack_border_hybrid(int, int *, double *); - void unpack_border(int, int, double *); - void unpack_border_vel(int, int, double *); - int unpack_border_hybrid(int, int, double *); - int pack_exchange(int, double *); - int unpack_exchange(double *); - int size_restart(); - int pack_restart(int, double *); - int unpack_restart(double *); - void create_atom(int, double *); - void data_atom(double *, imageint, char **); - int data_atom_hybrid(int, char **); - void data_vel(int, char **); - int data_vel_hybrid(int, char **); - void pack_data(double **); - int pack_data_hybrid(int, double *); - void write_data(FILE *, int, double **); - int write_data_hybrid(FILE *, double *); - void pack_vel(double **); - int pack_vel_hybrid(int, double *); - void write_vel(FILE *, int, double **); - int write_vel_hybrid(FILE *, double *); - bigint memory_usage(); - - private: - tagint *tag; - int *type,*mask; - imageint *image; - double **x,**v,**f; - double *radius,*rmass; - - tagint *molecule; - double *vfrac,**x0,*contact_radius, **smd_data_9, *e, *de, **vest; - double **tlsph_stress; - double *eff_plastic_strain; - double *damage; - double *eff_plastic_strain_rate; - - + void create_atom_post(int); + void data_atom_post(int); }; } diff --git a/src/USER-SPH/atom_vec_meso.cpp b/src/USER-SPH/atom_vec_meso.cpp index cd7c2251ab..a80ab91d2e 100644 --- a/src/USER-SPH/atom_vec_meso.cpp +++ b/src/USER-SPH/atom_vec_meso.cpp @@ -14,13 +14,7 @@ #include "atom_vec_meso.h" #include #include "atom.h" -#include "comm.h" -#include "domain.h" -#include "modify.h" -#include "fix.h" -#include "memory.h" #include "error.h" -#include "utils.h" using namespace LAMMPS_NS; @@ -32,921 +26,64 @@ AtomVecMeso::AtomVecMeso(LAMMPS *lmp) : AtomVec(lmp) mass_type = 1; forceclearflag = 1; - comm_x_only = 0; // we communicate not only x forward but also vest ... - comm_f_only = 0; // we also communicate de and drho in reverse direction - size_forward = 8; // 3 + rho + e + vest[3], that means we may only communicate 5 in hybrid - size_reverse = 5; // 3 + drho + de - size_border = 12; // 6 + rho + e + vest[3] + cv - size_velocity = 3; - size_data_atom = 8; - size_data_vel = 4; - xcol_data = 6; - atom->e_flag = 1; atom->rho_flag = 1; atom->cv_flag = 1; atom->vest_flag = 1; -} -/* ---------------------------------------------------------------------- - grow atom arrays - n = 0 grows arrays by a chunk - n > 0 allocates arrays to size n - ------------------------------------------------------------------------- */ + // strings with peratom variables to include in each AtomVec method + // strings cannot contain fields in corresponding AtomVec default strings + // order of fields in a string does not matter + // except: fields_data_atom & fields_data_vel must match data file -void AtomVecMeso::grow(int n) -{ - if (n == 0) grow_nmax(); - else nmax = n; - atom->nmax = nmax; - if (nmax < 0 || nmax > MAXSMALLINT) - error->one(FLERR,"Per-processor system is too big"); + fields_grow = (char *) "rho drho e de cv vest"; + fields_copy = (char *) "rho drho e de cv vest"; + fields_comm = (char *) "rho e vest"; + fields_comm_vel = (char *) "rho e vest"; + fields_reverse = (char *) "drho de"; + fields_border = (char *) "rho e cv vest"; + fields_border_vel = (char *) "rho e cv vest"; + fields_exchange = (char *) "rho e cv vest"; + fields_restart = (char * ) "rho e cv vest"; + fields_create = (char *) "rho e cv vest de drho"; + fields_data_atom = (char *) "id type rho e cv x"; + fields_data_vel = (char *) "id v"; - tag = memory->grow(atom->tag, nmax, "atom:tag"); - type = memory->grow(atom->type, nmax, "atom:type"); - mask = memory->grow(atom->mask, nmax, "atom:mask"); - image = memory->grow(atom->image, nmax, "atom:image"); - x = memory->grow(atom->x, nmax, 3, "atom:x"); - v = memory->grow(atom->v, nmax, 3, "atom:v"); - f = memory->grow(atom->f, nmax*comm->nthreads, 3, "atom:f"); - - rho = memory->grow(atom->rho, nmax, "atom:rho"); - drho = memory->grow(atom->drho, nmax*comm->nthreads, "atom:drho"); - e = memory->grow(atom->e, nmax, "atom:e"); - de = memory->grow(atom->de, nmax*comm->nthreads, "atom:de"); - vest = memory->grow(atom->vest, nmax, 3, "atom:vest"); - cv = memory->grow(atom->cv, nmax, "atom:cv"); - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - modify->fix[atom->extra_grow[iextra]]->grow_arrays(nmax); + setup_fields(); } /* ---------------------------------------------------------------------- - reset local array ptrs - ------------------------------------------------------------------------- */ - -void AtomVecMeso::grow_reset() { - tag = atom->tag; - type = atom->type; - mask = atom->mask; - image = atom->image; - x = atom->x; - v = atom->v; - f = atom->f; - rho = atom->rho; - drho = atom->drho; - e = atom->e; - de = atom->de; - vest = atom->vest; - cv = atom->cv; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecMeso::copy(int i, int j, int delflag) { - //printf("in AtomVecMeso::copy\n"); - tag[j] = tag[i]; - type[j] = type[i]; - mask[j] = mask[i]; - image[j] = image[i]; - x[j][0] = x[i][0]; - x[j][1] = x[i][1]; - x[j][2] = x[i][2]; - v[j][0] = v[i][0]; - v[j][1] = v[i][1]; - v[j][2] = v[i][2]; - - rho[j] = rho[i]; - drho[j] = drho[i]; - e[j] = e[i]; - de[j] = de[i]; - cv[j] = cv[i]; - vest[j][0] = vest[i][0]; - vest[j][1] = vest[i][1]; - vest[j][2] = vest[i][2]; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - modify->fix[atom->extra_grow[iextra]]->copy_arrays(i, j,delflag); -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecMeso::force_clear(int n, size_t nbytes) -{ - memset(&de[n],0,nbytes); - memset(&drho[n],0,nbytes); -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecMeso::pack_comm_hybrid(int n, int *list, double *buf) { - //printf("in AtomVecMeso::pack_comm_hybrid\n"); - int i, j, m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = rho[j]; - buf[m++] = e[j]; - buf[m++] = vest[j][0]; - buf[m++] = vest[j][1]; - buf[m++] = vest[j][2]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecMeso::unpack_comm_hybrid(int n, int first, double *buf) { - //printf("in AtomVecMeso::unpack_comm_hybrid\n"); - int i, m, last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - rho[i] = buf[m++]; - e[i] = buf[m++]; - vest[i][0] = buf[m++]; - vest[i][1] = buf[m++]; - vest[i][2] = buf[m++]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecMeso::pack_border_hybrid(int n, int *list, double *buf) { - //printf("in AtomVecMeso::pack_border_hybrid\n"); - int i, j, m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = rho[j]; - buf[m++] = e[j]; - buf[m++] = vest[j][0]; - buf[m++] = vest[j][1]; - buf[m++] = vest[j][2]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecMeso::unpack_border_hybrid(int n, int first, double *buf) { - //printf("in AtomVecMeso::unpack_border_hybrid\n"); - int i, m, last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - rho[i] = buf[m++]; - e[i] = buf[m++]; - vest[i][0] = buf[m++]; - vest[i][1] = buf[m++]; - vest[i][2] = buf[m++]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecMeso::pack_reverse_hybrid(int n, int first, double *buf) { - //printf("in AtomVecMeso::pack_reverse_hybrid\n"); - int i, m, last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - buf[m++] = drho[i]; - buf[m++] = de[i]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecMeso::unpack_reverse_hybrid(int n, int *list, double *buf) { - //printf("in AtomVecMeso::unpack_reverse_hybrid\n"); - int i, j, m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - drho[j] += buf[m++]; - de[j] += buf[m++]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecMeso::pack_comm(int n, int *list, double *buf, int pbc_flag, - int *pbc) { - //printf("in AtomVecMeso::pack_comm\n"); - int i, j, m; - double dx, dy, dz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = rho[j]; - buf[m++] = e[j]; - buf[m++] = vest[j][0]; - buf[m++] = vest[j][1]; - buf[m++] = vest[j][2]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0] * domain->xprd; - dy = pbc[1] * domain->yprd; - dz = pbc[2] * domain->zprd; - } else { - dx = pbc[0] * domain->xprd + pbc[5] * domain->xy + pbc[4] * domain->xz; - dy = pbc[1] * domain->yprd + pbc[3] * domain->yz; - dz = pbc[2] * domain->zprd; - } - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = rho[j]; - buf[m++] = e[j]; - buf[m++] = vest[j][0]; - buf[m++] = vest[j][1]; - buf[m++] = vest[j][2]; - } - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecMeso::pack_comm_vel(int n, int *list, double *buf, int pbc_flag, - int *pbc) { - //printf("in AtomVecMeso::pack_comm_vel\n"); - int i, j, m; - double dx, dy, dz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - buf[m++] = rho[j]; - buf[m++] = e[j]; - buf[m++] = vest[j][0]; - buf[m++] = vest[j][1]; - buf[m++] = vest[j][2]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0] * domain->xprd; - dy = pbc[1] * domain->yprd; - dz = pbc[2] * domain->zprd; - } else { - dx = pbc[0] * domain->xprd + pbc[5] * domain->xy + pbc[4] * domain->xz; - dy = pbc[1] * domain->yprd + pbc[3] * domain->yz; - dz = pbc[2] * domain->zprd; - } - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - buf[m++] = rho[j]; - buf[m++] = e[j]; - buf[m++] = vest[j][0]; - buf[m++] = vest[j][1]; - buf[m++] = vest[j][2]; - } - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecMeso::unpack_comm(int n, int first, double *buf) { - //printf("in AtomVecMeso::unpack_comm\n"); - int i, m, last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - rho[i] = buf[m++]; - e[i] = buf[m++]; - vest[i][0] = buf[m++]; - vest[i][1] = buf[m++]; - vest[i][2] = buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecMeso::unpack_comm_vel(int n, int first, double *buf) { - //printf("in AtomVecMeso::unpack_comm_vel\n"); - int i, m, last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - v[i][0] = buf[m++]; - v[i][1] = buf[m++]; - v[i][2] = buf[m++]; - rho[i] = buf[m++]; - e[i] = buf[m++]; - vest[i][0] = buf[m++]; - vest[i][1] = buf[m++]; - vest[i][2] = buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecMeso::pack_reverse(int n, int first, double *buf) { - //printf("in AtomVecMeso::pack_reverse\n"); - int i, m, last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - buf[m++] = f[i][0]; - buf[m++] = f[i][1]; - buf[m++] = f[i][2]; - buf[m++] = drho[i]; - buf[m++] = de[i]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecMeso::unpack_reverse(int n, int *list, double *buf) { - //printf("in AtomVecMeso::unpack_reverse\n"); - int i, j, m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - f[j][0] += buf[m++]; - f[j][1] += buf[m++]; - f[j][2] += buf[m++]; - drho[j] += buf[m++]; - de[j] += buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecMeso::pack_border(int n, int *list, double *buf, int pbc_flag, - int *pbc) { - //printf("in AtomVecMeso::pack_border\n"); - int i, j, m; - double dx, dy, dz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = rho[j]; - buf[m++] = e[j]; - buf[m++] = cv[j]; - buf[m++] = vest[j][0]; - buf[m++] = vest[j][1]; - buf[m++] = vest[j][2]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0] * domain->xprd; - dy = pbc[1] * domain->yprd; - dz = pbc[2] * domain->zprd; - } else { - dx = pbc[0]; - dy = pbc[1]; - dz = pbc[2]; - } - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = rho[j]; - buf[m++] = e[j]; - buf[m++] = cv[j]; - buf[m++] = vest[j][0]; - buf[m++] = vest[j][1]; - buf[m++] = vest[j][2]; - } - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); - - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecMeso::pack_border_vel(int n, int *list, double *buf, int pbc_flag, - int *pbc) -{ - int i,j,m; - double dx,dy,dz,dvx,dvy,dvz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - buf[m++] = rho[j]; - buf[m++] = e[j]; - buf[m++] = cv[j]; - buf[m++] = vest[j][0]; - buf[m++] = vest[j][1]; - buf[m++] = vest[j][2]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0] * domain->xprd; - dy = pbc[1] * domain->yprd; - dz = pbc[2] * domain->zprd; - } else { - dx = pbc[0]; - dy = pbc[1]; - dz = pbc[2]; - } - if (!deform_vremap) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - buf[m++] = rho[j]; - buf[m++] = e[j]; - buf[m++] = cv[j]; - buf[m++] = vest[j][0]; - buf[m++] = vest[j][1]; - buf[m++] = vest[j][2]; - } - } else { - dvx = pbc[0] * h_rate[0] + pbc[5] * h_rate[5] + pbc[4] * h_rate[4]; - dvy = pbc[1] * h_rate[1] + pbc[3] * h_rate[3]; - dvz = pbc[2] * h_rate[2]; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - if (mask[i] & deform_groupbit) { - buf[m++] = v[j][0] + dvx; - buf[m++] = v[j][1] + dvy; - buf[m++] = v[j][2] + dvz; - buf[m++] = vest[j][0] + dvx; - buf[m++] = vest[j][1] + dvy; - buf[m++] = vest[j][2] + dvz; - } else { - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - buf[m++] = vest[j][0]; - buf[m++] = vest[j][1]; - buf[m++] = vest[j][2]; - } - buf[m++] = rho[j]; - buf[m++] = e[j]; - buf[m++] = cv[j]; - } - } - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); - - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecMeso::unpack_border(int n, int first, double *buf) { - //printf("in AtomVecMeso::unpack_border\n"); - int i, m, last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - if (i == nmax) - grow(0); - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - tag[i] = (tagint) ubuf(buf[m++]).i; - type[i] = (int) ubuf(buf[m++]).i; - mask[i] = (int) ubuf(buf[m++]).i; - rho[i] = buf[m++]; - e[i] = buf[m++]; - cv[i] = buf[m++]; - vest[i][0] = buf[m++]; - vest[i][1] = buf[m++]; - vest[i][2] = buf[m++]; - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]-> - unpack_border(n,first,&buf[m]); -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecMeso::unpack_border_vel(int n, int first, double *buf) { - //printf("in AtomVecMeso::unpack_border_vel\n"); - int i, m, last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - if (i == nmax) - grow(0); - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - tag[i] = (tagint) ubuf(buf[m++]).i; - type[i] = (int) ubuf(buf[m++]).i; - mask[i] = (int) ubuf(buf[m++]).i; - v[i][0] = buf[m++]; - v[i][1] = buf[m++]; - v[i][2] = buf[m++]; - vest[i][0] = buf[m++]; - vest[i][1] = buf[m++]; - vest[i][2] = buf[m++]; - rho[i] = buf[m++]; - e[i] = buf[m++]; - cv[i] = buf[m++]; - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]-> - unpack_border(n,first,&buf[m]); -} - -/* ---------------------------------------------------------------------- - pack data for atom I for sending to another proc - xyz must be 1st 3 values, so comm::exchange() can test on them - ------------------------------------------------------------------------- */ - -int AtomVecMeso::pack_exchange(int i, double *buf) { - //printf("in AtomVecMeso::pack_exchange\n"); - int m = 1; - buf[m++] = x[i][0]; - buf[m++] = x[i][1]; - buf[m++] = x[i][2]; - buf[m++] = v[i][0]; - buf[m++] = v[i][1]; - buf[m++] = v[i][2]; - buf[m++] = ubuf(tag[i]).d; - buf[m++] = ubuf(type[i]).d; - buf[m++] = ubuf(mask[i]).d; - buf[m++] = ubuf(image[i]).d; - buf[m++] = rho[i]; - buf[m++] = e[i]; - buf[m++] = cv[i]; - buf[m++] = vest[i][0]; - buf[m++] = vest[i][1]; - buf[m++] = vest[i][2]; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - m += modify->fix[atom->extra_grow[iextra]]->pack_exchange(i, &buf[m]); - - buf[0] = m; - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecMeso::unpack_exchange(double *buf) { - //printf("in AtomVecMeso::unpack_exchange\n"); - int nlocal = atom->nlocal; - if (nlocal == nmax) - grow(0); - - int m = 1; - x[nlocal][0] = buf[m++]; - x[nlocal][1] = buf[m++]; - x[nlocal][2] = buf[m++]; - v[nlocal][0] = buf[m++]; - v[nlocal][1] = buf[m++]; - v[nlocal][2] = buf[m++]; - tag[nlocal] = (tagint) ubuf(buf[m++]).i; - type[nlocal] = (int) ubuf(buf[m++]).i; - mask[nlocal] = (int) ubuf(buf[m++]).i; - image[nlocal] = (imageint) ubuf(buf[m++]).i; - rho[nlocal] = buf[m++]; - e[nlocal] = buf[m++]; - cv[nlocal] = buf[m++]; - vest[nlocal][0] = buf[m++]; - vest[nlocal][1] = buf[m++]; - vest[nlocal][2] = buf[m++]; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - m += modify->fix[atom->extra_grow[iextra]]-> unpack_exchange(nlocal, - &buf[m]); - - atom->nlocal++; - return m; -} - -/* ---------------------------------------------------------------------- - size of restart data for all atoms owned by this proc - include extra data stored by fixes - ------------------------------------------------------------------------- */ - -int AtomVecMeso::size_restart() { - int i; - - int nlocal = atom->nlocal; - int n = 17 * nlocal; // 11 + rho + e + cv + vest[3] - - if (atom->nextra_restart) - for (int iextra = 0; iextra < atom->nextra_restart; iextra++) - for (i = 0; i < nlocal; i++) - n += modify->fix[atom->extra_restart[iextra]]->size_restart(i); - - return n; -} - -/* ---------------------------------------------------------------------- - pack atom I's data for restart file including extra quantities - xyz must be 1st 3 values, so that read_restart can test on them - molecular types may be negative, but write as positive - ------------------------------------------------------------------------- */ - -int AtomVecMeso::pack_restart(int i, double *buf) { - int m = 1; - buf[m++] = x[i][0]; - buf[m++] = x[i][1]; - buf[m++] = x[i][2]; - buf[m++] = ubuf(tag[i]).d; - buf[m++] = ubuf(type[i]).d; - buf[m++] = ubuf(mask[i]).d; - buf[m++] = ubuf(image[i]).d; - buf[m++] = v[i][0]; - buf[m++] = v[i][1]; - buf[m++] = v[i][2]; - buf[m++] = rho[i]; - buf[m++] = e[i]; - buf[m++] = cv[i]; - buf[m++] = vest[i][0]; - buf[m++] = vest[i][1]; - buf[m++] = vest[i][2]; - - if (atom->nextra_restart) - for (int iextra = 0; iextra < atom->nextra_restart; iextra++) - m += modify->fix[atom->extra_restart[iextra]]->pack_restart(i, &buf[m]); - - buf[0] = m; - return m; -} - -/* ---------------------------------------------------------------------- - unpack data for one atom from restart file including extra quantities - ------------------------------------------------------------------------- */ - -int AtomVecMeso::unpack_restart(double *buf) { - int nlocal = atom->nlocal; - if (nlocal == nmax) { - grow(0); - if (atom->nextra_store) - memory->grow(atom->extra, nmax, atom->nextra_store, "atom:extra"); - } - - int m = 1; - x[nlocal][0] = buf[m++]; - x[nlocal][1] = buf[m++]; - x[nlocal][2] = buf[m++]; - tag[nlocal] = (tagint) ubuf(buf[m++]).i; - type[nlocal] = (int) ubuf(buf[m++]).i; - mask[nlocal] = (int) ubuf(buf[m++]).i; - image[nlocal] = (imageint) ubuf(buf[m++]).i; - v[nlocal][0] = buf[m++]; - v[nlocal][1] = buf[m++]; - v[nlocal][2] = buf[m++]; - rho[nlocal] = buf[m++]; - e[nlocal] = buf[m++]; - cv[nlocal] = buf[m++]; - vest[nlocal][0] = buf[m++]; - vest[nlocal][1] = buf[m++]; - vest[nlocal][2] = buf[m++]; - - double **extra = atom->extra; - if (atom->nextra_store) { - int size = static_cast (buf[0]) - m; - for (int i = 0; i < size; i++) - extra[nlocal][i] = buf[m++]; - } - - atom->nlocal++; - return m; -} - -/* ---------------------------------------------------------------------- - create one atom of itype at coord - set other values to defaults - ------------------------------------------------------------------------- */ - -void AtomVecMeso::create_atom(int itype, double *coord) { - int nlocal = atom->nlocal; - if (nlocal == nmax) - grow(0); - - tag[nlocal] = 0; - type[nlocal] = itype; - x[nlocal][0] = coord[0]; - x[nlocal][1] = coord[1]; - x[nlocal][2] = coord[2]; - mask[nlocal] = 1; - image[nlocal] = ((imageint) IMGMAX << IMG2BITS) | - ((imageint) IMGMAX << IMGBITS) | IMGMAX; - v[nlocal][0] = 0.0; - v[nlocal][1] = 0.0; - v[nlocal][2] = 0.0; - rho[nlocal] = 0.0; - e[nlocal] = 0.0; - cv[nlocal] = 1.0; - vest[nlocal][0] = 0.0; - vest[nlocal][1] = 0.0; - vest[nlocal][2] = 0.0; - de[nlocal] = 0.0; - drho[nlocal] = 0.0; - - atom->nlocal++; -} - -/* ---------------------------------------------------------------------- - unpack one line from Atoms section of data file - initialize other atom quantities - ------------------------------------------------------------------------- */ - -void AtomVecMeso::data_atom(double *coord, imageint imagetmp, char **values) { - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - tag[nlocal] = utils::tnumeric(FLERR,values[0],true,lmp); - type[nlocal] = utils::inumeric(FLERR,values[1],true,lmp); - if (type[nlocal] <= 0 || type[nlocal] > atom->ntypes) - error->one(FLERR,"Invalid atom type in Atoms section of data file"); - - rho[nlocal] = utils::numeric(FLERR,values[2],true,lmp); - e[nlocal] = utils::numeric(FLERR,values[3],true,lmp); - cv[nlocal] = utils::numeric(FLERR,values[4],true,lmp); - - x[nlocal][0] = coord[0]; - x[nlocal][1] = coord[1]; - x[nlocal][2] = coord[2]; - - //printf("rho=%f, e=%f, cv=%f, x=%f\n", rho[nlocal], e[nlocal], cv[nlocal], x[nlocal][0]); - - image[nlocal] = imagetmp; - - mask[nlocal] = 1; - v[nlocal][0] = 0.0; - v[nlocal][1] = 0.0; - v[nlocal][2] = 0.0; - - vest[nlocal][0] = 0.0; - vest[nlocal][1] = 0.0; - vest[nlocal][2] = 0.0; - - de[nlocal] = 0.0; - drho[nlocal] = 0.0; - - atom->nlocal++; -} - -/* ---------------------------------------------------------------------- - unpack hybrid quantities from one line in Atoms section of data file - initialize other atom quantities for this sub-style - ------------------------------------------------------------------------- */ - -int AtomVecMeso::data_atom_hybrid(int nlocal, char **values) { - - rho[nlocal] = utils::numeric(FLERR,values[0],true,lmp); - e[nlocal] = utils::numeric(FLERR,values[1],true,lmp); - cv[nlocal] = utils::numeric(FLERR,values[2],true,lmp); - - return 3; -} - -/* ---------------------------------------------------------------------- - pack atom info for data file including 3 image flags + clear extra forces starting at atom N + nbytes = # of bytes to clear for a per-atom vector ------------------------------------------------------------------------- */ -void AtomVecMeso::pack_data(double **buf) -{ - int nlocal = atom->nlocal; - for (int i = 0; i < nlocal; i++) { - buf[i][0] = ubuf(tag[i]).d; - buf[i][1] = ubuf(type[i]).d; - buf[i][2] = rho[i]; - buf[i][3] = e[i]; - buf[i][4] = cv[i]; - buf[i][5] = x[i][0]; - buf[i][6] = x[i][1]; - buf[i][7] = x[i][2]; - buf[i][8] = ubuf((image[i] & IMGMASK) - IMGMAX).d; - buf[i][9] = ubuf((image[i] >> IMGBITS & IMGMASK) - IMGMAX).d; - buf[i][10] = ubuf((image[i] >> IMG2BITS) - IMGMAX).d; - } -} - -/* ---------------------------------------------------------------------- - pack hybrid atom info for data file -------------------------------------------------------------------------- */ - -int AtomVecMeso::pack_data_hybrid(int i, double *buf) +void AtomVecMeso::force_clear(int n, size_t nbytes) { - buf[0] = rho[i]; - buf[1] = e[i]; - buf[2] = cv[i]; - return 3; + memset(&atom->de[n],0,nbytes); + memset(&atom->drho[n],0,nbytes); } /* ---------------------------------------------------------------------- - write atom info to data file including 3 image flags + initialize non-zero atom quantities ------------------------------------------------------------------------- */ -void AtomVecMeso::write_data(FILE *fp, int n, double **buf) +void AtomVecMeso::create_atom_post(int ilocal) { - for (int i = 0; i < n; i++) - fprintf(fp,TAGINT_FORMAT - " %d %-1.16e %-1.16e %-1.16e %-1.16e %-1.16e %-1.16e " - "%d %d %d\n", - (tagint) ubuf(buf[i][0]).i,(int) ubuf(buf[i][1]).i, - buf[i][2],buf[i][3],buf[i][4], - buf[i][5],buf[i][6],buf[i][7], - (int) ubuf(buf[i][8]).i,(int) ubuf(buf[i][9]).i, - (int) ubuf(buf[i][10]).i); + atom->cv[ilocal] = 1.0; } /* ---------------------------------------------------------------------- - write hybrid atom info to data file + modify what AtomVec::data_atom() just unpacked + or initialize other atom quantities ------------------------------------------------------------------------- */ -int AtomVecMeso::write_data_hybrid(FILE *fp, double *buf) +void AtomVecMeso::data_atom_post(int ilocal) { - fprintf(fp," %-1.16e %-1.16e %-1.16e",buf[0],buf[1],buf[2]); - return 3; + atom->vest[ilocal][0] = 0.0; + atom->vest[ilocal][1] = 0.0; + atom->vest[ilocal][2] = 0.0; + atom->de[ilocal] = 0.0; + atom->drho[ilocal] = 0.0; } /* ---------------------------------------------------------------------- @@ -977,30 +114,35 @@ void AtomVecMeso::pack_property_atom(int index, double *buf, int n = 0; if (index == 0) { + double *rho = atom->rho; for (int i = 0; i < nlocal; i++) { if (mask[i] & groupbit) buf[n] = rho[i]; else buf[n] = 0.0; n += nvalues; } } else if (index == 1) { + double *drho = atom->drho; for (int i = 0; i < nlocal; i++) { if (mask[i] & groupbit) buf[n] = drho[i]; else buf[n] = 0.0; n += nvalues; } } else if (index == 2) { + double *e = atom->e; for (int i = 0; i < nlocal; i++) { if (mask[i] & groupbit) buf[n] = e[i]; else buf[n] = 0.0; n += nvalues; } } else if (index == 3) { + double *de = atom->de; for (int i = 0; i < nlocal; i++) { if (mask[i] & groupbit) buf[n] = de[i]; else buf[n] = 0.0; n += nvalues; } } else if (index == 4) { + double *cv = atom->cv; for (int i = 0; i < nlocal; i++) { if (mask[i] & groupbit) buf[n] = cv[i]; else buf[n] = 0.0; @@ -1008,40 +150,3 @@ void AtomVecMeso::pack_property_atom(int index, double *buf, } } } - -/* ---------------------------------------------------------------------- - return # of bytes of allocated memory - ------------------------------------------------------------------------- */ - -bigint AtomVecMeso::memory_usage() { - bigint bytes = 0; - - if (atom->memcheck("tag")) - bytes += memory->usage(tag, nmax); - if (atom->memcheck("type")) - bytes += memory->usage(type, nmax); - if (atom->memcheck("mask")) - bytes += memory->usage(mask, nmax); - if (atom->memcheck("image")) - bytes += memory->usage(image, nmax); - if (atom->memcheck("x")) - bytes += memory->usage(x, nmax, 3); - if (atom->memcheck("v")) - bytes += memory->usage(v, nmax, 3); - if (atom->memcheck("f")) - bytes += memory->usage(f, nmax*comm->nthreads, 3); - if (atom->memcheck("rho")) - bytes += memory->usage(rho, nmax); - if (atom->memcheck("drho")) - bytes += memory->usage(drho, nmax*comm->nthreads); - if (atom->memcheck("e")) - bytes += memory->usage(e, nmax); - if (atom->memcheck("de")) - bytes += memory->usage(de, nmax*comm->nthreads); - if (atom->memcheck("cv")) - bytes += memory->usage(cv, nmax); - if (atom->memcheck("vest")) - bytes += memory->usage(vest, nmax); - - return bytes; -} diff --git a/src/USER-SPH/atom_vec_meso.h b/src/USER-SPH/atom_vec_meso.h index da68222e29..c8a1090474 100644 --- a/src/USER-SPH/atom_vec_meso.h +++ b/src/USER-SPH/atom_vec_meso.h @@ -27,50 +27,11 @@ namespace LAMMPS_NS { class AtomVecMeso : public AtomVec { public: AtomVecMeso(class LAMMPS *); - ~AtomVecMeso() {} - void grow(int); - void grow_reset(); - void copy(int, int, int); void force_clear(int, size_t); - int pack_comm(int, int *, double *, int, int *); - int pack_comm_vel(int, int *, double *, int, int *); - void unpack_comm(int, int, double *); - void unpack_comm_vel(int, int, double *); - int pack_reverse(int, int, double *); - void unpack_reverse(int, int *, double *); - int pack_comm_hybrid(int, int *, double *); - int unpack_comm_hybrid(int, int, double *); - int pack_border_hybrid(int, int *, double *); - int unpack_border_hybrid(int, int, double *); - int pack_reverse_hybrid(int, int, double *); - int unpack_reverse_hybrid(int, int *, double *); - int pack_border(int, int *, double *, int, int *); - int pack_border_vel(int, int *, double *, int, int *); - void unpack_border(int, int, double *); - void unpack_border_vel(int, int, double *); - int pack_exchange(int, double *); - int unpack_exchange(double *); - int size_restart(); - int pack_restart(int, double *); - int unpack_restart(double *); - void create_atom(int, double *); - void data_atom(double *, imageint, char **); - int data_atom_hybrid(int, char **); - void pack_data(double **); - int pack_data_hybrid(int, double *); - void write_data(FILE *, int, double **); - int write_data_hybrid(FILE *, double *); + void create_atom_post(int); + void data_atom_post(int); int property_atom(char *); void pack_property_atom(int, double *, int, int); - bigint memory_usage(); - - private: - tagint *tag; - int *type,*mask; - imageint *image; - double **x,**v,**f; - double *rho, *drho, *e, *de, *cv; - double **vest; // estimated velocity during force computation }; } diff --git a/src/atom.cpp b/src/atom.cpp index d238db5e65..8fd859478f 100644 --- a/src/atom.cpp +++ b/src/atom.cpp @@ -81,50 +81,21 @@ Atom::Atom(LAMMPS *lmp) : Pointers(lmp) image = NULL; x = v = f = NULL; - molecule = NULL; - molindex = molatom = NULL; + // charged and dipolar particles + q = NULL; mu = NULL; + + // finite-size particles + omega = angmom = torque = NULL; radius = rmass = NULL; ellipsoid = line = tri = body = NULL; - vfrac = s0 = NULL; - x0 = NULL; - - spin = NULL; - eradius = ervel = erforce = NULL; - cs = csforce = vforce = ervelforce = NULL; - etag = NULL; - - rho = drho = e = de = cv = NULL; - vest = NULL; - - // SPIN package - - sp = fm = fm_long = NULL; + // molecular systems - // USER-DPD - - uCond = uMech = uChem = uCG = uCGnew = NULL; - duChem = NULL; - dpdTheta = NULL; - - // USER-MESO - - cc = cc_flux = NULL; - edpd_temp = edpd_flux = edpd_cv = NULL; - - // USER-SMD - - contact_radius = NULL; - smd_data_9 = NULL; - smd_stress = NULL; - eff_plastic_strain = NULL; - eff_plastic_strain_rate = NULL; - damage = NULL; - - // molecular info + molecule = NULL; + molindex = molatom = NULL; bond_per_atom = extra_bond_per_atom = 0; num_bond = NULL; @@ -150,6 +121,47 @@ Atom::Atom(LAMMPS *lmp) : Pointers(lmp) nspecial = NULL; special = NULL; + // PERI package + + vfrac = s0 = NULL; + x0 = NULL; + + // SPIN package + + sp = fm = fm_long = NULL; + + // USER-EFF and USER-AWPMD packages + + spin = NULL; + eradius = ervel = erforce = NULL; + ervelforce = cs = csforce = NULL; + vforce = NULL; + etag = NULL; + + // USER-DPD package + + uCond = uMech = uChem = uCG = uCGnew = NULL; + duChem = dpdTheta = NULL; + + // USER-MESO package + + cc = cc_flux = NULL; + edpd_temp = edpd_flux = edpd_cv = NULL; + + // USER-SMD package + + contact_radius = NULL; + smd_data_9 = NULL; + smd_stress = NULL; + eff_plastic_strain = NULL; + eff_plastic_strain_rate = NULL; + damage = NULL; + + // USER-SPH package + + rho = drho = e = de = cv = NULL; + vest = NULL; + // user-defined molecules nmolecule = 0; @@ -532,9 +544,16 @@ void Atom::peratom_create() add_peratom("ervel",&ervel,DOUBLE,0); add_peratom("erforce",&erforce,DOUBLE,0,1); // set per-thread flag + // USER-AWPMD package + + add_peratom("cs",&cs,DOUBLE,0); + add_peratom("csforce",&csforce,DOUBLE,0); + add_peratom("vforce",&vforce,DOUBLE,3); + add_peratom("ervelforce",&ervelforce,DOUBLE,0); + add_peratom("etag",&etag,INT,0); + // USER-DPD package - add_peratom("rho",&eradius,DOUBLE,0); add_peratom("dpdTheta",&dpdTheta,DOUBLE,0); add_peratom("uCond",&uCond,DOUBLE,0); add_peratom("uMech",&uMech,DOUBLE,0); @@ -548,7 +567,26 @@ void Atom::peratom_create() add_peratom("edpd_cv",&edpd_cv,DOUBLE,0); add_peratom("edpd_temp",&edpd_temp,DOUBLE,0); add_peratom("edpd_flux",&edpd_flux,DOUBLE,0,1); // set per-thread flag - add_peratom("vest",&vest,DOUBLE,4); + add_peratom("cc",&cc,DOUBLE,1); + add_peratom("cc_flux",&cc_flux,DOUBLE,1,1); // set per-thread flag + + // USER-SPH package + + add_peratom("rho",&rho,DOUBLE,0); + add_peratom("drho",&drho,DOUBLE,0,1); // set per-thread flag + add_peratom("e",&e,DOUBLE,0); + add_peratom("de",&de,DOUBLE,0,1); // set per-thread flag + add_peratom("vest",&vest,DOUBLE,3); + add_peratom("cv",&cv,DOUBLE,0); + + // USER-SMD package + + add_peratom("contact_radius",&contact_radius,DOUBLE,0); + add_peratom("smd_data_9",&smd_data_9,DOUBLE,1); + add_peratom("smd_stress",&smd_stress,DOUBLE,1); + add_peratom("eff_plastic_strain",&eff_plastic_strain,DOUBLE,0); + add_peratom("eff_plastic_strain_rate",&eff_plastic_strain_rate,DOUBLE,0); + add_peratom("damage",&damage,DOUBLE,0); } /* ---------------------------------------------------------------------- @@ -579,6 +617,18 @@ void Atom::add_peratom(const char *name, void *address, nperatom++; } +/* ---------------------------------------------------------------------- + change the column count fof an existing peratom array entry + allows atom_style to specify column count as an argument + see atom_style tdpd as an example +------------------------------------------------------------------------- */ + +void Atom::add_peratom_change_columns(const char *name, int cols) +{ + for (int i = 0; i < nperatom; i++) + if (strcmp(name,peratom[i].name) == 0) peratom[i].cols = cols; +} + /* ---------------------------------------------------------------------- add info for a single per-atom array to PerAtom data struct cols = address of int variable with max columns per atom diff --git a/src/atom.h b/src/atom.h index a105b3e5b1..007d364a7b 100644 --- a/src/atom.h +++ b/src/atom.h @@ -60,6 +60,8 @@ class Atom : protected Pointers { imageint *image; double **x,**v,**f; + // charged and dipolar particles + double *rmass; double *q,**mu; @@ -69,7 +71,7 @@ class Atom : protected Pointers { double **omega,**angmom,**torque; int *ellipsoid,*line,*tri,*body; - // MOLECULE package + // molecular systems tagint *molecule; int *molindex,*molatom; @@ -101,15 +103,14 @@ class Atom : protected Pointers { // SPIN package - double **sp; - double **fm; - double **fm_long; + double **sp,**fm,**fm_long; - // USER-AWPMD and USER_EFF packages + // USER_EFF and USER-AWPMD packages int *spin; - double *eradius,*ervel,*erforce,*ervelforce; - double *cs,*csforce,*vforce; + double *eradius,*ervel,*erforce; + double *ervelforce,*cs,*csforce; + double **vforce; int *etag; // USER-DPD package @@ -261,6 +262,7 @@ class Atom : protected Pointers { void settings(class Atom *); void peratom_create(); void add_peratom(const char *, void *, int, int, int threadflag=0); + void add_peratom_change_columns(const char *, int); void add_peratom_vary(const char *, void *, int, int *, void *, int collength=0); void create_avec(const char *, int, char **, int); diff --git a/src/atom_vec_hybrid.h b/src/atom_vec_hybrid.h index 83d29112dd..7d838b7a7f 100644 --- a/src/atom_vec_hybrid.h +++ b/src/atom_vec_hybrid.h @@ -57,11 +57,6 @@ class AtomVecHybrid : public AtomVec { void pack_data_pre(int); void pack_data_post(int); - //void create_atom_post(int); - //void data_atom_post(int); - //void pack_data_pre(int); - //void pack_data_post(int); - int property_atom(char *); void pack_property_atom(int, double *, int, int); diff --git a/src/atom_vec_sphere.cpp b/src/atom_vec_sphere.cpp index 6796f9c8f2..81f1b02fdb 100644 --- a/src/atom_vec_sphere.cpp +++ b/src/atom_vec_sphere.cpp @@ -28,6 +28,7 @@ using namespace MathConst; AtomVecSphere::AtomVecSphere(LAMMPS *lmp) : AtomVec(lmp) { + mass_type = 0; molecular = 0; atom->sphere_flag = 1; @@ -51,8 +52,6 @@ AtomVecSphere::AtomVecSphere(LAMMPS *lmp) : AtomVec(lmp) fields_create = (char *) "radius rmass omega"; fields_data_atom = (char *) "id type radius rmass x"; fields_data_vel = (char *) "id v omega"; - - setup_fields(); } /* ---------------------------------------------------------------------- @@ -74,6 +73,10 @@ void AtomVecSphere::process_args(int narg, char **arg) fields_comm = (char *) "radius rmass"; fields_comm_vel = (char *) "radius rmass omega"; + + // delay setting up of fields until now + + setup_fields(); } /* ---------------------------------------------------------------------- */ -- GitLab From f51ee40640c98b0b238638313598591d14078d64 Mon Sep 17 00:00:00 2001 From: Steve Plimpton Date: Tue, 3 Dec 2019 11:24:12 -0700 Subject: [PATCH 011/717] atom_vec.cpp --- src/atom_vec.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/atom_vec.cpp b/src/atom_vec.cpp index cfbc8b12a6..bbfccadb89 100644 --- a/src/atom_vec.cpp +++ b/src/atom_vec.cpp @@ -133,7 +133,8 @@ void AtomVec::process_args(int narg, char ** /*arg*/) } /* ---------------------------------------------------------------------- - copy of velocity remap settings from Domain + pull settings from Domain needed for pack_comm_vel and pack_border_vel + child classes may override this method, but should also invoke it ------------------------------------------------------------------------- */ void AtomVec::init() -- GitLab From 9af08f2d5405dd781166f239c41ae1adb4eed34e Mon Sep 17 00:00:00 2001 From: Steve Plimpton Date: Fri, 6 Dec 2019 10:06:16 -0700 Subject: [PATCH 012/717] small change for atom_style mdpd --- src/USER-MESO/atom_vec_mdpd.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/USER-MESO/atom_vec_mdpd.cpp b/src/USER-MESO/atom_vec_mdpd.cpp index eefda1ff6a..b87ff14c3c 100644 --- a/src/USER-MESO/atom_vec_mdpd.cpp +++ b/src/USER-MESO/atom_vec_mdpd.cpp @@ -55,6 +55,8 @@ AtomVecMDPD::AtomVecMDPD(LAMMPS *lmp) : AtomVec(lmp) void AtomVecMDPD::init() { + AtomVec::init(); + if (strcmp(update->unit_style,"lj") != 0) error->all(FLERR,"Atom style mdpd requires lj units"); } -- GitLab From db6d272303dfa748953c04f60b7041af00aa4ccb Mon Sep 17 00:00:00 2001 From: Steve Plimpton Date: Fri, 13 Dec 2019 13:54:12 -0700 Subject: [PATCH 013/717] more additions to USER atom styles and bug fixes --- src/GRANULAR/fix_pour.cpp | 5 + src/MOLECULE/atom_vec_bond.cpp | 22 +- src/MOLECULE/atom_vec_bond.h | 4 + src/MOLECULE/atom_vec_full.cpp | 8 +- src/MOLECULE/atom_vec_molecular.cpp | 8 +- src/USER-AWPMD/atom_vec_wavepacket.cpp | 1122 +----------------------- src/USER-AWPMD/atom_vec_wavepacket.h | 75 +- src/USER-AWPMD/fix_nve_awpmd.cpp | 6 +- src/USER-DPD/atom_vec_dpd.cpp | 2 +- src/USER-EFF/atom_vec_electron.cpp | 3 - src/USER-EFF/pair_eff_cut.cpp | 27 +- src/USER-EFF/pair_eff_cut.h | 4 +- src/USER-MESO/atom_vec_edpd.cpp | 22 +- src/USER-MESO/atom_vec_tdpd.cpp | 2 +- src/USER-MESO/fix_mvv_edpd.cpp | 6 +- src/USER-SMD/atom_vec_smd.cpp | 4 +- src/atom.cpp | 4 + src/atom.h | 5 +- src/atom_vec.cpp | 24 +- src/atom_vec.h | 18 +- src/atom_vec_body.cpp | 45 +- src/atom_vec_body.h | 3 + src/atom_vec_ellipsoid.cpp | 4 +- src/atom_vec_line.cpp | 4 +- src/atom_vec_sphere.cpp | 20 +- src/atom_vec_tri.cpp | 6 +- src/fix_gravity.cpp | 21 +- src/replicate.cpp | 27 +- src/verlet.cpp | 2 +- 29 files changed, 216 insertions(+), 1287 deletions(-) diff --git a/src/GRANULAR/fix_pour.cpp b/src/GRANULAR/fix_pour.cpp index 2255f64eb2..b54920f7b2 100644 --- a/src/GRANULAR/fix_pour.cpp +++ b/src/GRANULAR/fix_pour.cpp @@ -40,6 +40,7 @@ using namespace MathConst; enum{ATOM,MOLECULE}; enum{ONE,RANGE,POLY}; +enum{CONSTANT,EQUAL}; // same as FixGravity #define EPSILON 0.001 #define SMALL 1.0e-10 @@ -318,6 +319,10 @@ void FixPour::init() if (ifix == -1) error->all(FLERR,"No fix gravity defined for fix pour"); + int varflag = ((FixGravity *) modify->fix[ifix])->varflag; + if (varflag != CONSTANT) + error->all(FLERR,"Fix gravity for fix pour must be constant"); + double xgrav = ((FixGravity *) modify->fix[ifix])->xgrav; double ygrav = ((FixGravity *) modify->fix[ifix])->ygrav; double zgrav = ((FixGravity *) modify->fix[ifix])->zgrav; diff --git a/src/MOLECULE/atom_vec_bond.cpp b/src/MOLECULE/atom_vec_bond.cpp index 30ad7d83e1..00e8e3260d 100644 --- a/src/MOLECULE/atom_vec_bond.cpp +++ b/src/MOLECULE/atom_vec_bond.cpp @@ -60,6 +60,20 @@ AtomVecBond::~AtomVecBond() delete [] bond_negative; } +/* ---------------------------------------------------------------------- + grow atom arrays + must set local copy of body ptr + needed in replicate when 2 atom classes exist and pack_restart() is called +------------------------------------------------------------------------- */ + +void AtomVecBond::grow(int n) +{ + AtomVec::grow(n); + num_bond = atom->num_bond; + bond_type = atom->bond_type; +} + + /* ---------------------------------------------------------------------- modify values for AtomVec::pack_restart() to pack ------------------------------------------------------------------------- */ @@ -76,8 +90,8 @@ void AtomVecBond::pack_restart_pre(int ilocal) // flip any negative types to positive and flag which ones - int *num_bond = atom->num_bond; - int **bond_type = atom->bond_type; + //int *num_bond = atom->num_bond; + //int **bond_type = atom->bond_type; any_bond_negative = 0; for (int m = 0; m < num_bond[ilocal]; m++) { @@ -98,8 +112,8 @@ void AtomVecBond::pack_restart_post(int ilocal) // restore the flagged types to their negative values if (any_bond_negative) { - int *num_bond = atom->num_bond; - int **bond_type = atom->bond_type; + //int *num_bond = atom->num_bond; + //int **bond_type = atom->bond_type; for (int m = 0; m < num_bond[ilocal]; m++) if (bond_negative[m]) bond_type[ilocal][m] = -bond_type[ilocal][m]; } diff --git a/src/MOLECULE/atom_vec_bond.h b/src/MOLECULE/atom_vec_bond.h index c2bf7d6680..90c4b1f217 100644 --- a/src/MOLECULE/atom_vec_bond.h +++ b/src/MOLECULE/atom_vec_bond.h @@ -28,6 +28,7 @@ class AtomVecBond : public AtomVec { public: AtomVecBond(class LAMMPS *); ~AtomVecBond(); + void grow(int); void pack_restart_pre(int); void pack_restart_post(int); void unpack_restart_init(int); @@ -37,6 +38,9 @@ class AtomVecBond : public AtomVec { int any_bond_negative; int bond_per_atom; int *bond_negative; + + int *num_bond; + int **bond_type; }; } diff --git a/src/MOLECULE/atom_vec_full.cpp b/src/MOLECULE/atom_vec_full.cpp index 9ab0a296e0..be7c92ce93 100644 --- a/src/MOLECULE/atom_vec_full.cpp +++ b/src/MOLECULE/atom_vec_full.cpp @@ -128,7 +128,7 @@ void AtomVecFull::pack_restart_pre(int ilocal) int *num_improper = atom->num_improper; int **improper_type = atom->improper_type; - int any_bond_negative = 0; + any_bond_negative = 0; for (int m = 0; m < num_bond[ilocal]; m++) { if (bond_type[ilocal][m] < 0) { bond_negative[m] = 1; @@ -137,7 +137,7 @@ void AtomVecFull::pack_restart_pre(int ilocal) } else bond_negative[m] = 0; } - int any_angle_negative = 0; + any_angle_negative = 0; for (int m = 0; m < num_angle[ilocal]; m++) { if (angle_type[ilocal][m] < 0) { angle_negative[m] = 1; @@ -146,7 +146,7 @@ void AtomVecFull::pack_restart_pre(int ilocal) } else angle_negative[m] = 0; } - int any_dihedral_negative = 0; + any_dihedral_negative = 0; for (int m = 0; m < num_dihedral[ilocal]; m++) { if (dihedral_type[ilocal][m] < 0) { dihedral_negative[m] = 1; @@ -155,7 +155,7 @@ void AtomVecFull::pack_restart_pre(int ilocal) } else dihedral_negative[m] = 0; } - int any_improper_negative = 0; + any_improper_negative = 0; for (int m = 0; m < num_improper[ilocal]; m++) { if (improper_type[ilocal][m] < 0) { improper_negative[m] = 1; diff --git a/src/MOLECULE/atom_vec_molecular.cpp b/src/MOLECULE/atom_vec_molecular.cpp index 52947ceb71..ea15216aee 100644 --- a/src/MOLECULE/atom_vec_molecular.cpp +++ b/src/MOLECULE/atom_vec_molecular.cpp @@ -128,7 +128,7 @@ void AtomVecMolecular::pack_restart_pre(int ilocal) int *num_improper = atom->num_improper; int **improper_type = atom->improper_type; - int any_bond_negative = 0; + any_bond_negative = 0; for (int m = 0; m < num_bond[ilocal]; m++) { if (bond_type[ilocal][m] < 0) { bond_negative[m] = 1; @@ -137,7 +137,7 @@ void AtomVecMolecular::pack_restart_pre(int ilocal) } else bond_negative[m] = 0; } - int any_angle_negative = 0; + any_angle_negative = 0; for (int m = 0; m < num_angle[ilocal]; m++) { if (angle_type[ilocal][m] < 0) { angle_negative[m] = 1; @@ -146,7 +146,7 @@ void AtomVecMolecular::pack_restart_pre(int ilocal) } else angle_negative[m] = 0; } - int any_dihedral_negative = 0; + any_dihedral_negative = 0; for (int m = 0; m < num_dihedral[ilocal]; m++) { if (dihedral_type[ilocal][m] < 0) { dihedral_negative[m] = 1; @@ -155,7 +155,7 @@ void AtomVecMolecular::pack_restart_pre(int ilocal) } else dihedral_negative[m] = 0; } - int any_improper_negative = 0; + any_improper_negative = 0; for (int m = 0; m < num_improper[ilocal]; m++) { if (improper_type[ilocal][m] < 0) { improper_negative[m] = 1; diff --git a/src/USER-AWPMD/atom_vec_wavepacket.cpp b/src/USER-AWPMD/atom_vec_wavepacket.cpp index bce334a7b3..d643ae8e0a 100644 --- a/src/USER-AWPMD/atom_vec_wavepacket.cpp +++ b/src/USER-AWPMD/atom_vec_wavepacket.cpp @@ -18,13 +18,7 @@ #include "atom_vec_wavepacket.h" #include #include "atom.h" -#include "comm.h" -#include "domain.h" -#include "modify.h" -#include "fix.h" -#include "memory.h" #include "error.h" -#include "utils.h" using namespace LAMMPS_NS; @@ -32,1079 +26,69 @@ using namespace LAMMPS_NS; AtomVecWavepacket::AtomVecWavepacket(LAMMPS *lmp) : AtomVec(lmp) { - comm_x_only = comm_f_only = 0; - mass_type = 1; molecular = 0; forceclearflag = 1; - size_forward = 4; // coords[3]+radius[1] - size_reverse = 10; // force[3]+erforce[1]+ervelforce[1]+vforce[3]+csforce[2] - size_border = 10; // coords[3]+tag[1]+type[1]+mask[1]+q[1]+spin[1]+eradius[1]+etag[1] - size_velocity = 6; // +velocities[3]+ ervel[1]+cs[2] - size_data_atom = 11; // for input file: 1-tag 2-type 3-q 4-spin 5-eradius 6-etag 7-cs_re 8-cs_im 9-x 10-y 11-z - size_data_vel = 5; // for input file: vx vy vz ervel - xcol_data = 9; // starting column for x data - atom->wavepacket_flag = 1; - atom->electron_flag = 1; // compatible with eff + + atom->electron_flag = 1; // compatible with eff atom->q_flag = atom->spin_flag = atom->eradius_flag = atom->ervel_flag = atom->erforce_flag = 1; + atom->cs_flag = atom->csforce_flag = + atom->vforce_flag = atom->ervelforce_flag = atom->etag_flag = 1; - atom->cs_flag = atom->csforce_flag = atom->vforce_flag = atom->ervelforce_flag = atom->etag_flag = 1; -} - -/* ---------------------------------------------------------------------- - grow atom-electron arrays - n = 0 grows arrays by a chunk - n > 0 allocates arrays to size n -------------------------------------------------------------------------- */ - -void AtomVecWavepacket::grow(int n) -{ - if (n == 0) grow_nmax(); - else nmax = n; - atom->nmax = nmax; - - tag = memory->grow(atom->tag,nmax,"atom:tag"); - type = memory->grow(atom->type,nmax,"atom:type"); - mask = memory->grow(atom->mask,nmax,"atom:mask"); - image = memory->grow(atom->image,nmax,"atom:image"); - x = memory->grow(atom->x,nmax,3,"atom:x"); - v = memory->grow(atom->v,nmax,3,"atom:v"); - f = memory->grow(atom->f,nmax*comm->nthreads,3,"atom:f"); - - q = memory->grow(atom->q,nmax,"atom:q"); - spin = memory->grow(atom->spin,nmax,"atom:spin"); - eradius = memory->grow(atom->eradius,nmax,"atom:eradius"); - ervel = memory->grow(atom->ervel,nmax,"atom:ervel"); - erforce = memory->grow(atom->erforce,nmax*comm->nthreads,"atom:erforce"); + // strings with peratom variables to include in each AtomVec method + // strings cannot contain fields in corresponding AtomVec default strings + // order of fields in a string does not matter + // except: fields_data_atom & fields_data_vel must match data file - cs = memory->grow(atom->cs,2*nmax,"atom:cs"); - csforce = memory->grow(atom->csforce,2*nmax,"atom:csforce"); - vforce = memory->grow(atom->vforce,3*nmax,"atom:vforce"); - ervelforce = memory->grow(atom->ervelforce,nmax,"atom:ervelforce"); - etag = memory->grow(atom->etag,nmax,"atom:etag"); + fields_grow = (char *) + "q spin eradius ervel erforce cs csforce " + "vforce ervelforce etag"; + fields_copy = (char *) "q spin eradius ervel cs etag"; + fields_comm = (char *) "eradius"; + fields_comm_vel = (char *) "eradius ervel cs"; + fields_reverse = (char *) "erforce ervelforce vforce csforce"; + fields_border = (char *) "q spin eradius etag"; + fields_border_vel = (char *) "q spin eradius etag ervel cs"; + fields_exchange = (char *) "q spin eradius ervel etag cs"; + fields_restart = (char *) "q spin eradius ervel etag cs"; + fields_create = (char *) "q spin eradius ervel etag cs"; + fields_data_atom = (char *) "id type q spin eradius etag cs x"; + fields_data_vel = (char *) "id v ervel"; - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - modify->fix[atom->extra_grow[iextra]]->grow_arrays(nmax); + setup_fields(); } /* ---------------------------------------------------------------------- - reset local array ptrs + clear extra forces starting at atom N + nbytes = # of bytes to clear for a per-atom vector ------------------------------------------------------------------------- */ -void AtomVecWavepacket::grow_reset() -{ - tag = atom->tag; type = atom->type; - mask = atom->mask; image = atom->image; - x = atom->x; v = atom->v; f = atom->f; - q = atom->q; - eradius = atom->eradius; ervel = atom->ervel; erforce = atom->erforce; - - cs = atom->cs; - csforce = atom->csforce; - vforce = atom->vforce; - ervelforce = atom->ervelforce; - etag = atom->etag; -} - -/* ---------------------------------------------------------------------- - copy atom I info to atom J -------------------------------------------------------------------------- */ - -void AtomVecWavepacket::copy(int i, int j, int delflag) -{ - tag[j] = tag[i]; - type[j] = type[i]; - mask[j] = mask[i]; - image[j] = image[i]; - x[j][0] = x[i][0]; - x[j][1] = x[i][1]; - x[j][2] = x[i][2]; - v[j][0] = v[i][0]; - v[j][1] = v[i][1]; - v[j][2] = v[i][2]; - - q[j] = q[i]; - spin[j] = spin[i]; - eradius[j] = eradius[i]; - ervel[j] = ervel[i]; - - cs[2*j] = cs[2*i]; - cs[2*j+1] = cs[2*i+1]; - etag[j] = etag[i]; - - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - modify->fix[atom->extra_grow[iextra]]->copy_arrays(i,j,delflag); -} - -/* ---------------------------------------------------------------------- */ - void AtomVecWavepacket::force_clear(int n, size_t nbytes) { - memset(&erforce[n],0,nbytes); -} - -/* ---------------------------------------------------------------------- */ -// this will be used as partial pack for unsplit Hartree packets (v, ervel not regarded as separate variables) - -int AtomVecWavepacket::pack_comm(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = eradius[j]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]*domain->xprd + pbc[5]*domain->xy + pbc[4]*domain->xz; - dy = pbc[1]*domain->yprd + pbc[3]*domain->yz; - dz = pbc[2]*domain->zprd; - } - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = eradius[j]; - } - } - return m; -} - -/* ---------------------------------------------------------------------- */ -// this is a complete pack of all 'position' variables of AWPMD - -int AtomVecWavepacket::pack_comm_vel(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz,dvx,dvy,dvz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = eradius[j]; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - - buf[m++] = ervel[j]; - buf[m++] = cs[2*j]; - buf[m++] = cs[2*j+1]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]*domain->xprd + pbc[5]*domain->xy + pbc[4]*domain->xz; - dy = pbc[1]*domain->yprd + pbc[3]*domain->yz; - dz = pbc[2]*domain->zprd; - } - if (!deform_vremap) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = eradius[j]; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - - buf[m++] = ervel[j]; - buf[m++] = cs[2*j]; - buf[m++] = cs[2*j+1]; - } - } else { - dvx = pbc[0]*h_rate[0] + pbc[5]*h_rate[5] + pbc[4]*h_rate[4]; - dvy = pbc[1]*h_rate[1] + pbc[3]*h_rate[3]; - dvz = pbc[2]*h_rate[2]; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = eradius[j]; - if (mask[i] & deform_groupbit) { - buf[m++] = v[j][0] + dvx; - buf[m++] = v[j][1] + dvy; - buf[m++] = v[j][2] + dvz; - } else { - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - buf[m++] = ervel[j]; - buf[m++] = cs[2*j]; - buf[m++] = cs[2*j+1]; - } - } - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecWavepacket::pack_comm_hybrid(int n, int *list, double *buf) -{ - int i,j,m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = eradius[j]; - buf[m++] = ervel[j]; - buf[m++] = cs[2*j]; - buf[m++] = cs[2*j+1]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecWavepacket::unpack_comm(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - eradius[i] = buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecWavepacket::unpack_comm_vel(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - eradius[i] = buf[m++]; - v[i][0] = buf[m++]; - v[i][1] = buf[m++]; - v[i][2] = buf[m++]; - - ervel[i] = buf[m++]; - cs[2*i] = buf[m++]; - cs[2*i+1] = buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecWavepacket::unpack_comm_hybrid(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++){ - eradius[i] = buf[m++]; - ervel[i] = buf[m++]; - cs[2*i] = buf[m++]; - cs[2*i+1] = buf[m++]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecWavepacket::pack_reverse(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { //10 - buf[m++] = f[i][0]; - buf[m++] = f[i][1]; - buf[m++] = f[i][2]; - buf[m++] = erforce[i]; - - buf[m++] = ervelforce[i]; - buf[m++] = vforce[3*i]; - buf[m++] = vforce[3*i+1]; - buf[m++] = vforce[3*i+2]; - buf[m++] = csforce[2*i]; - buf[m++] = csforce[2*i+1]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecWavepacket::pack_reverse_hybrid(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++){ - buf[m++] = erforce[i]; - - buf[m++] = ervelforce[i]; - buf[m++] = vforce[3*i]; - buf[m++] = vforce[3*i+1]; - buf[m++] = vforce[3*i+2]; - buf[m++] = csforce[2*i]; - buf[m++] = csforce[2*i+1]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecWavepacket::unpack_reverse(int n, int *list, double *buf) -{ - int i,j,m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - f[j][0] += buf[m++]; - f[j][1] += buf[m++]; - f[j][2] += buf[m++]; - erforce[j] += buf[m++]; - - ervelforce[j] += buf[m++]; - vforce[3*j] += buf[m++]; - vforce[3*j+1] += buf[m++]; - vforce[3*j+2] += buf[m++]; - csforce[2*j] += buf[m++]; - csforce[2*j+1] += buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecWavepacket::unpack_reverse_hybrid(int n, int *list, double *buf) -{ - int i,j,m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - erforce[j] += buf[m++]; - - ervelforce[j] += buf[m++]; - vforce[3*j] += buf[m++]; - vforce[3*j+1] += buf[m++]; - vforce[3*j+2] += buf[m++]; - csforce[2*j] += buf[m++]; - csforce[2*j+1] += buf[m++]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ -// will be used for Hartree unsplit version (the etag is added however) -int AtomVecWavepacket::pack_border(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = q[j]; - buf[m++] = ubuf(spin[j]).d; - buf[m++] = eradius[j]; - buf[m++] = ubuf(etag[j]).d; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]; - dy = pbc[1]; - dz = pbc[2]; - } - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = q[j]; - buf[m++] = ubuf(spin[j]).d; - buf[m++] = eradius[j]; - buf[m++] = ubuf(etag[j]).d; - } - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); - - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecWavepacket::pack_border_vel(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz,dvx,dvy,dvz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = q[j]; - buf[m++] = ubuf(spin[j]).d; - buf[m++] = eradius[j]; - buf[m++] = ubuf(etag[j]).d; - - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - - buf[m++] = ervel[j]; - buf[m++] = cs[2*j]; - buf[m++] = cs[2*j+1]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]; - dy = pbc[1]; - dz = pbc[2]; - } - if (domain->triclinic == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = q[j]; - buf[m++] = ubuf(spin[j]).d; - buf[m++] = eradius[j]; - buf[m++] = ubuf(etag[j]).d; - - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - - - buf[m++] = ervel[j]; - buf[m++] = cs[2*j]; - buf[m++] = cs[2*j+1]; - } - } else { - dvx = pbc[0]*h_rate[0] + pbc[5]*h_rate[5] + pbc[4]*h_rate[4]; - dvy = pbc[1]*h_rate[1] + pbc[3]*h_rate[3]; - dvz = pbc[2]*h_rate[2]; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = q[j]; - buf[m++] = ubuf(spin[j]).d; - buf[m++] = eradius[j]; - buf[m++] = ubuf(etag[j]).d; - - if (mask[i] & deform_groupbit) { - buf[m++] = v[j][0] + dvx; - buf[m++] = v[j][1] + dvy; - buf[m++] = v[j][2] + dvz; - } else { - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - - buf[m++] = ervel[j]; - buf[m++] = cs[2*j]; - buf[m++] = cs[2*j+1]; - } - } - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); - - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecWavepacket::pack_border_hybrid(int n, int *list, double *buf) -{ - int i,j,m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = q[j]; - buf[m++] = ubuf(spin[j]).d; - buf[m++] = eradius[j]; - - buf[m++] = ubuf(etag[j]).d; - buf[m++] = ervel[j]; - buf[m++] = cs[2*j]; - buf[m++] = cs[2*j+1]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecWavepacket::unpack_border(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - if (i == nmax) grow(0); - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - tag[i] = (tagint) ubuf(buf[m++]).i; - type[i] = (int) ubuf(buf[m++]).i; - mask[i] = (int) ubuf(buf[m++]).i; - q[i] = buf[m++]; - spin[i] = (int) ubuf(buf[m++]).i; - eradius[i] = buf[m++]; - etag[i] = (int) ubuf(buf[m++]).i; - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]-> - unpack_border(n,first,&buf[m]); -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecWavepacket::unpack_border_vel(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - if (i == nmax) grow(0); - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - tag[i] = (tagint) ubuf(buf[m++]).i; - type[i] = (int) ubuf(buf[m++]).i; - mask[i] = (int) ubuf(buf[m++]).i; - q[i] = buf[m++]; - spin[i] = (int) ubuf(buf[m++]).i; - eradius[i] = buf[m++]; - etag[i] = (int) ubuf(buf[m++]).i; - v[i][0] = buf[m++]; - v[i][1] = buf[m++]; - v[i][2] = buf[m++]; - ervel[i] = buf[m++]; - cs[2*i] = buf[m++]; - cs[2*i+1] = buf[m++]; - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]-> - unpack_border(n,first,&buf[m]); -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecWavepacket::unpack_border_hybrid(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - q[i] = buf[m++]; - spin[i] = (int) ubuf(buf[m++]).i; - eradius[i] = buf[m++]; - etag[i] = (int) ubuf(buf[m++]).i; - ervel[i] = buf[m++]; - cs[2*i] = buf[m++]; - cs[2*i+1] = buf[m++]; - } - return m; -} - -/* ---------------------------------------------------------------------- - pack data for atom I for sending to another proc - xyz must be 1st 3 values, so comm::exchange() can test on them -------------------------------------------------------------------------- */ - -int AtomVecWavepacket::pack_exchange(int i, double *buf) -{ - int m = 1; - buf[m++] = x[i][0]; - buf[m++] = x[i][1]; - buf[m++] = x[i][2]; - buf[m++] = v[i][0]; - buf[m++] = v[i][1]; - buf[m++] = v[i][2]; - buf[m++] = ubuf(tag[i]).d; - buf[m++] = ubuf(type[i]).d; - buf[m++] = ubuf(mask[i]).d; - buf[m++] = ubuf(image[i]).d; - - buf[m++] = q[i]; - buf[m++] = ubuf(spin[i]).d; - buf[m++] = eradius[i]; - buf[m++] = ervel[i]; - - buf[m++] = ubuf(etag[i]).d; - buf[m++] = cs[2*i]; - buf[m++] = cs[2*i+1]; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - m += modify->fix[atom->extra_grow[iextra]]->pack_exchange(i,&buf[m]); - - buf[0] = m; - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecWavepacket::unpack_exchange(double *buf) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - int m = 1; - x[nlocal][0] = buf[m++]; - x[nlocal][1] = buf[m++]; - x[nlocal][2] = buf[m++]; - v[nlocal][0] = buf[m++]; - v[nlocal][1] = buf[m++]; - v[nlocal][2] = buf[m++]; - tag[nlocal] = (tagint) ubuf(buf[m++]).i; - type[nlocal] = (int) ubuf(buf[m++]).i; - mask[nlocal] = (int) ubuf(buf[m++]).i; - image[nlocal] = (imageint) ubuf(buf[m++]).i; - - q[nlocal] = buf[m++]; - spin[nlocal] = (int) ubuf(buf[m++]).i; - eradius[nlocal] = buf[m++]; - ervel[nlocal] = buf[m++]; - - etag[nlocal] = (int) ubuf(buf[m++]).i; - cs[2*nlocal] = buf[m++]; - cs[2*nlocal+1] = buf[m++]; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - m += modify->fix[atom->extra_grow[iextra]]-> - unpack_exchange(nlocal,&buf[m]); - - atom->nlocal++; - return m; -} - -/* ---------------------------------------------------------------------- - size of restart data for all atoms owned by this proc - include extra data stored by fixes -------------------------------------------------------------------------- */ - -int AtomVecWavepacket::size_restart() -{ - int i; - - int nlocal = atom->nlocal; - int n = 18 * nlocal; // Associated with pack_restart - - if (atom->nextra_restart) - for (int iextra = 0; iextra < atom->nextra_restart; iextra++) - for (i = 0; i < nlocal; i++) - n += modify->fix[atom->extra_restart[iextra]]->size_restart(i); - - return n; -} - -/* ---------------------------------------------------------------------- - pack atom I's data for restart file including extra quantities - xyz must be 1st 3 values, so that read_restart can test on them - molecular types may be negative, but write as positive -------------------------------------------------------------------------- */ - -int AtomVecWavepacket::pack_restart(int i, double *buf) -{ - int m = 1; - buf[m++] = x[i][0]; - buf[m++] = x[i][1]; - buf[m++] = x[i][2]; - buf[m++] = ubuf(tag[i]).d; - buf[m++] = ubuf(type[i]).d; - buf[m++] = ubuf(mask[i]).d; - buf[m++] = ubuf(image[i]).d; - buf[m++] = v[i][0]; - buf[m++] = v[i][1]; - buf[m++] = v[i][2]; - - buf[m++] = q[i]; - buf[m++] = ubuf(spin[i]).d; - buf[m++] = eradius[i]; - buf[m++] = ervel[i]; - - buf[m++] = ubuf(etag[i]).d; - buf[m++] = cs[2*i]; - buf[m++] = cs[2*i+1]; - - if (atom->nextra_restart) - for (int iextra = 0; iextra < atom->nextra_restart; iextra++) - m += modify->fix[atom->extra_restart[iextra]]->pack_restart(i,&buf[m]); - - buf[0] = m; - return m; -} - -/* ---------------------------------------------------------------------- - unpack data for one atom from restart file including extra quantities -------------------------------------------------------------------------- */ - -int AtomVecWavepacket::unpack_restart(double *buf) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) { - grow(0); - if (atom->nextra_store) - memory->grow(atom->extra,nmax,atom->nextra_store,"atom:extra"); - } - - int m = 1; - x[nlocal][0] = buf[m++]; - x[nlocal][1] = buf[m++]; - x[nlocal][2] = buf[m++]; - tag[nlocal] = (tagint) ubuf(buf[m++]).i; - type[nlocal] = (int) ubuf(buf[m++]).i; - mask[nlocal] = (int) ubuf(buf[m++]).i; - image[nlocal] = (imageint) ubuf(buf[m++]).i; - v[nlocal][0] = buf[m++]; - v[nlocal][1] = buf[m++]; - v[nlocal][2] = buf[m++]; - - q[nlocal] = buf[m++]; - spin[nlocal] = (int) ubuf(buf[m++]).i; - eradius[nlocal] = buf[m++]; - ervel[nlocal] = buf[m++]; - - etag[nlocal] = (int) ubuf(buf[m++]).i; - cs[2*nlocal] = buf[m++]; - cs[2*nlocal+1] = buf[m++]; - - double **extra = atom->extra; - if (atom->nextra_store) { - int size = static_cast (buf[0]) - m; - for (int i = 0; i < size; i++) extra[nlocal][i] = buf[m++]; - } - - atom->nlocal++; - return m; -} - -/* ---------------------------------------------------------------------- - create one atom of itype at coord - set other values to defaults - AWPMD: creates a proton -------------------------------------------------------------------------- */ - -void AtomVecWavepacket::create_atom(int itype, double *coord) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - tag[nlocal] = 0; - type[nlocal] = itype; - x[nlocal][0] = coord[0]; - x[nlocal][1] = coord[1]; - x[nlocal][2] = coord[2]; - mask[nlocal] = 1; - image[nlocal] = ((imageint) IMGMAX << IMG2BITS) | - ((imageint) IMGMAX << IMGBITS) | IMGMAX; - v[nlocal][0] = 0.0; - v[nlocal][1] = 0.0; - v[nlocal][2] = 0.0; - - q[nlocal] = 1.; - spin[nlocal] = 0; - eradius[nlocal] = 0.0; - ervel[nlocal] = 0.0; - - etag[nlocal] = 0; - cs[2*nlocal] = 0.; - cs[2*nlocal+1] = 0.; - - atom->nlocal++; -} - -/* ---------------------------------------------------------------------- - unpack one line from Atoms section of data file - initialize other atom quantities - AWPMD: 0-tag 1-type 2-q 3-spin 4-eradius 5-etag 6-cs_re 7-cs_im -------------------------------------------------------------------------- */ - -void AtomVecWavepacket::data_atom(double *coord, imageint imagetmp, - char **values) -{ - int nlocal = atom->nlocal; - - if (nlocal == nmax) grow(0); - - tag[nlocal] = utils::tnumeric(FLERR,values[0],true,lmp); - type[nlocal] = utils::inumeric(FLERR,values[1],true,lmp); - if (type[nlocal] <= 0 || type[nlocal] > atom->ntypes) - error->one(FLERR,"Invalid atom type in Atoms section of data file"); - - q[nlocal] = utils::numeric(FLERR,values[2],true,lmp); - spin[nlocal] = utils::inumeric(FLERR,values[3],true,lmp); - eradius[nlocal] = utils::numeric(FLERR,values[4],true,lmp); - if (eradius[nlocal] < 0.0) - error->one(FLERR,"Invalid eradius in Atoms section of data file"); - - etag[nlocal] = utils::inumeric(FLERR,values[5],true,lmp); - cs[2*nlocal] = utils::numeric(FLERR,values[6],true,lmp); - cs[2*nlocal+1] = utils::numeric(FLERR,values[7],true,lmp); - - x[nlocal][0] = coord[0]; - x[nlocal][1] = coord[1]; - x[nlocal][2] = coord[2]; - - image[nlocal] = imagetmp; - - mask[nlocal] = 1; - v[nlocal][0] = 0.0; - v[nlocal][1] = 0.0; - v[nlocal][2] = 0.0; - ervel[nlocal] = 0.0; - - atom->nlocal++; + memset(&atom->erforce[n],0,nbytes); } /* ---------------------------------------------------------------------- - unpack hybrid quantities from one line in Atoms section of data file - initialize other atom quantities for this sub-style + initialize non-zero atom quantities + make each atom a proton ------------------------------------------------------------------------- */ -int AtomVecWavepacket::data_atom_hybrid(int nlocal, char **values) +void AtomVecWavepacket::create_atom_post(int ilocal) { - q[nlocal] = utils::numeric(FLERR,values[0],true,lmp); - spin[nlocal] = utils::inumeric(FLERR,values[1],true,lmp); - eradius[nlocal] = utils::numeric(FLERR,values[2],true,lmp); - if (eradius[nlocal] < 0.0) - error->one(FLERR,"Invalid eradius in Atoms section of data file"); - - etag[nlocal] = utils::inumeric(FLERR,values[3],true,lmp); - cs[2*nlocal] = utils::inumeric(FLERR,values[4],true,lmp); - cs[2*nlocal+1] = utils::numeric(FLERR,values[5],true,lmp); - - v[nlocal][0] = 0.0; - v[nlocal][1] = 0.0; - v[nlocal][2] = 0.0; - ervel[nlocal] = 0.0; - - return 3; + atom->q[ilocal] = 1.0; } /* ---------------------------------------------------------------------- - unpack one line from Velocities section of data file + modify what AtomVec::data_atom() just unpacked + or initialize other atom quantities ------------------------------------------------------------------------- */ -void AtomVecWavepacket::data_vel(int m, char **values) +void AtomVecWavepacket::data_atom_post(int ilocal) { - v[m][0] = utils::numeric(FLERR,values[0],true,lmp); - v[m][1] = utils::numeric(FLERR,values[1],true,lmp); - v[m][2] = utils::numeric(FLERR,values[2],true,lmp); - ervel[m] = utils::numeric(FLERR,values[3],true,lmp); -} - -/* ---------------------------------------------------------------------- - unpack hybrid quantities from one line in Velocities section of data file -------------------------------------------------------------------------- */ - -int AtomVecWavepacket::data_vel_hybrid(int m, char **values) -{ - ervel[m] = utils::numeric(FLERR,values[0],true,lmp); - return 1; -} - -/* ---------------------------------------------------------------------- - pack atom info for data file including 3 image flags -------------------------------------------------------------------------- */ - -void AtomVecWavepacket::pack_data(double **buf) -{ - int nlocal = atom->nlocal; - for (int i = 0; i < nlocal; i++) { - buf[i][0] = ubuf(tag[i]).d; - buf[i][1] = ubuf(type[i]).d; - buf[i][2] = q[i]; - buf[i][3] = ubuf(spin[i]).d; - buf[i][4] = eradius[i]; - buf[i][5] = ubuf(etag[i]).d; - buf[i][6] = cs[2*i]; - buf[i][7] = cs[2*i+1]; - buf[i][8] = x[i][0]; - buf[i][9] = x[i][1]; - buf[i][10] = x[i][2]; - buf[i][11] = ubuf((image[i] & IMGMASK) - IMGMAX).d; - buf[i][12] = ubuf((image[i] >> IMGBITS & IMGMASK) - IMGMAX).d; - buf[i][13] = ubuf((image[i] >> IMG2BITS) - IMGMAX).d; - } -} - -/* ---------------------------------------------------------------------- - pack hybrid atom info for data file -------------------------------------------------------------------------- */ - -int AtomVecWavepacket::pack_data_hybrid(int i, double *buf) -{ - buf[0] = q[i]; - buf[1] = ubuf(spin[i]).d; - buf[2] = eradius[i]; - buf[3] = ubuf(etag[i]).d; - buf[4] = cs[2*i]; - buf[5] = cs[2*i+1]; - return 6; -} - -/* ---------------------------------------------------------------------- - write atom info to data file including 3 image flags -------------------------------------------------------------------------- */ - -void AtomVecWavepacket::write_data(FILE *fp, int n, double **buf) -{ - for (int i = 0; i < n; i++) - fprintf(fp,TAGINT_FORMAT - " %d %-1.16e %d %-1.16e %d %-1.16e %-1.16e %-1.16e " - "%-1.16e %-1.16e %d %d %d\n", - (tagint) ubuf(buf[i][0]).i,(int) ubuf(buf[i][1]).i, - buf[i][2],(int) ubuf(buf[i][3]).i,buf[i][4], - (int) ubuf(buf[i][5]).i,buf[i][6],buf[i][8], - buf[i][8],buf[i][9],buf[i][10], - (int) ubuf(buf[i][11]).i,(int) ubuf(buf[i][12]).i, - (int) ubuf(buf[i][13]).i); -} - -/* ---------------------------------------------------------------------- - write hybrid atom info to data file -------------------------------------------------------------------------- */ - -int AtomVecWavepacket::write_data_hybrid(FILE *fp, double *buf) -{ - fprintf(fp," %-1.16e %d %-1.16e %d %-1.16e %-1.16e", - buf[0],(int) ubuf(buf[1]).i,buf[2],(int) ubuf(buf[3]).i, - buf[4],buf[5]); - return 6; -} - -/* ---------------------------------------------------------------------- - pack velocity info for data file -------------------------------------------------------------------------- */ - -void AtomVecWavepacket::pack_vel(double **buf) -{ - int nlocal = atom->nlocal; - for (int i = 0; i < nlocal; i++) { - buf[i][0] = ubuf(tag[i]).d; - buf[i][1] = v[i][0]; - buf[i][2] = v[i][1]; - buf[i][3] = v[i][2]; - buf[i][4] = ervel[i]; - } -} - -/* ---------------------------------------------------------------------- - pack hybrid velocity info for data file -------------------------------------------------------------------------- */ - -int AtomVecWavepacket::pack_vel_hybrid(int i, double *buf) -{ - buf[0] = ervel[i]; - return 1; -} - -/* ---------------------------------------------------------------------- - write velocity info to data file -------------------------------------------------------------------------- */ - -void AtomVecWavepacket::write_vel(FILE *fp, int n, double **buf) -{ - for (int i = 0; i < n; i++) - fprintf(fp,TAGINT_FORMAT " %-1.16e %-1.16e %-1.16e %-1.16e\n", - (tagint) ubuf(buf[i][0]).i,buf[i][1],buf[i][2],buf[i][3],buf[i][4]); -} - -/* ---------------------------------------------------------------------- - write hybrid velocity info to data file -------------------------------------------------------------------------- */ - -int AtomVecWavepacket::write_vel_hybrid(FILE *fp, double *buf) -{ - fprintf(fp," %-1.16e",buf[0]); - return 1; + atom->ervel[ilocal] = 0.0; } /* ---------------------------------------------------------------------- @@ -1131,27 +115,31 @@ void AtomVecWavepacket::pack_property_atom(int index, double *buf, { int *mask = atom->mask; int nlocal = atom->nlocal; - int n = 0; + int n = 0; if (index == 0) { + int *spin = atom->spin; for (int i = 0; i < nlocal; i++) { if (mask[i] & groupbit) buf[n] = spin[i]; else buf[n] = 0.0; n += nvalues; } } else if (index == 1) { + double *eradius = atom->eradius; for (int i = 0; i < nlocal; i++) { if (mask[i] & groupbit) buf[n] = eradius[i]; else buf[n] = 0.0; n += nvalues; } } else if (index == 2) { + double *ervel = atom->ervel; for (int i = 0; i < nlocal; i++) { if (mask[i] & groupbit) buf[n] = ervel[i]; else buf[n] = 0.0; n += nvalues; } } else if (index == 3) { + double *erforce = atom->erforce; for (int i = 0; i < nlocal; i++) { if (mask[i] & groupbit) buf[n] = erforce[i]; else buf[n] = 0.0; @@ -1159,35 +147,3 @@ void AtomVecWavepacket::pack_property_atom(int index, double *buf, } } } - -/* ---------------------------------------------------------------------- - return # of bytes of allocated memory -------------------------------------------------------------------------- */ - -bigint AtomVecWavepacket::memory_usage() -{ - bigint bytes = 0; - - if (atom->memcheck("tag")) bytes += memory->usage(tag,nmax); - if (atom->memcheck("type")) bytes += memory->usage(type,nmax); - if (atom->memcheck("mask")) bytes += memory->usage(mask,nmax); - if (atom->memcheck("image")) bytes += memory->usage(image,nmax); - if (atom->memcheck("x")) bytes += memory->usage(x,nmax,3); - if (atom->memcheck("v")) bytes += memory->usage(v,nmax,3); - if (atom->memcheck("f")) bytes += memory->usage(f,nmax*comm->nthreads,3); - - if (atom->memcheck("q")) bytes += memory->usage(q,nmax); - if (atom->memcheck("spin")) bytes += memory->usage(spin,nmax); - if (atom->memcheck("eradius")) bytes += memory->usage(eradius,nmax); - if (atom->memcheck("ervel")) bytes += memory->usage(ervel,nmax); - if (atom->memcheck("erforce")) - bytes += memory->usage(erforce,nmax*comm->nthreads); - - if (atom->memcheck("ervelforce")) bytes += memory->usage(ervelforce,nmax); - if (atom->memcheck("cs")) bytes += memory->usage(cs,2*nmax); - if (atom->memcheck("csforce")) bytes += memory->usage(csforce,2*nmax); - if (atom->memcheck("vforce")) bytes += memory->usage(vforce,3*nmax); - if (atom->memcheck("etag")) bytes += memory->usage(etag,nmax); - - return bytes; -} diff --git a/src/USER-AWPMD/atom_vec_wavepacket.h b/src/USER-AWPMD/atom_vec_wavepacket.h index d1a0c7c7f2..e7db15db14 100644 --- a/src/USER-AWPMD/atom_vec_wavepacket.h +++ b/src/USER-AWPMD/atom_vec_wavepacket.h @@ -11,11 +11,6 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ -/* ---------------------------------------------------------------------- - Contributing author: Ilya Valuev (JIHT RAS) -------------------------------------------------------------------------- */ - - #ifdef ATOM_CLASS AtomStyle(wavepacket,AtomVecWavepacket) @@ -32,77 +27,11 @@ namespace LAMMPS_NS { class AtomVecWavepacket : public AtomVec { public: AtomVecWavepacket(class LAMMPS *); - ~AtomVecWavepacket() {} - void grow(int); - void grow_reset(); - void copy(int, int, int); void force_clear(int, size_t); - int pack_comm(int, int *, double *, int, int *); - int pack_comm_vel(int, int *, double *, int, int *); - int pack_comm_hybrid(int, int *, double *); - void unpack_comm(int, int, double *); - void unpack_comm_vel(int, int, double *); - int unpack_comm_hybrid(int, int, double *); - int pack_reverse(int, int, double *); - int pack_reverse_hybrid(int, int, double *); - void unpack_reverse(int, int *, double *); - int unpack_reverse_hybrid(int, int *, double *); - int pack_border(int, int *, double *, int, int *); - int pack_border_vel(int, int *, double *, int, int *); - int pack_border_hybrid(int, int *, double *); - void unpack_border(int, int, double *); - void unpack_border_vel(int, int, double *); - int unpack_border_hybrid(int, int, double *); - int pack_exchange(int, double *); - int unpack_exchange(double *); - int size_restart(); - int pack_restart(int, double *); - int unpack_restart(double *); - void create_atom(int, double *); - void data_atom(double *, imageint, char **); - int data_atom_hybrid(int, char **); - void data_vel(int, char **); - int data_vel_hybrid(int, char **); - void pack_data(double **); - int pack_data_hybrid(int, double *); - void write_data(FILE *, int, double **); - int write_data_hybrid(FILE *, double *); - void pack_vel(double **); - int pack_vel_hybrid(int, double *); - void write_vel(FILE *, int, double **); - int write_vel_hybrid(FILE *, double *); + void create_atom_post(int); + void data_atom_post(int); int property_atom(char *); void pack_property_atom(int, double *, int, int); - bigint memory_usage(); - -private: - tagint *tag; - int *type,*mask; - imageint *image; - double **x,**v,**f; - - ///\en spin: -1 or 1 for electron, 0 for ion (compatible with eff) - int *spin; - ///\en charge: must be specified in the corresponding units (-1 for electron in real units, eff compatible) - double *q; - ///\en width of the wavepacket (compatible with eff) - double *eradius; - ///\en width velocity for the wavepacket (compatible with eff) - double *ervel; - ///\en (generalized) force on width (compatible with eff) - double *erforce; - - // AWPMD- specific: - ///\en electron tag: must be the same for the WPs belonging to the same electron - int *etag; - ///\en wavepacket split coefficients: cre, cim, size is 2*N - double *cs; - ///\en force on wavepacket split coefficients: re, im, size is 2*N - double *csforce; - ///\en (generalized) force on velocity, size is 3*N - double *vforce; - ///\en (generalized) force on radius velocity, size is N - double *ervelforce; }; } diff --git a/src/USER-AWPMD/fix_nve_awpmd.cpp b/src/USER-AWPMD/fix_nve_awpmd.cpp index b4a1cbf72a..2aa2e7680b 100644 --- a/src/USER-AWPMD/fix_nve_awpmd.cpp +++ b/src/USER-AWPMD/fix_nve_awpmd.cpp @@ -74,8 +74,6 @@ void FixNVEAwpmd::init() void FixNVEAwpmd::initial_integrate(int /* vflag */) { - - // update v,vr and x,radius of atoms in group double **x = atom->x; @@ -84,7 +82,7 @@ void FixNVEAwpmd::initial_integrate(int /* vflag */) double *ervel = atom->ervel; double **f = atom->f; double *erforce = atom->erforce; - double *vforce=atom->vforce; + double **vforce=atom->vforce; double *ervelforce=atom->ervelforce; double *mass = atom->mass; @@ -101,7 +99,7 @@ void FixNVEAwpmd::initial_integrate(int /* vflag */) double dtfm = dtf / mass[type[i]]; double dtfmr=dtfm; for(int j=0;j<3;j++){ - x[i][j] += dtv*vforce[3*i+j]; + x[i][j] += dtv*vforce[i][j]; v[i][j] += dtfm*f[i][j]; } eradius[i]+= dtv*ervelforce[i]; diff --git a/src/USER-DPD/atom_vec_dpd.cpp b/src/USER-DPD/atom_vec_dpd.cpp index ce35178d8d..124a081191 100644 --- a/src/USER-DPD/atom_vec_dpd.cpp +++ b/src/USER-DPD/atom_vec_dpd.cpp @@ -47,7 +47,7 @@ AtomVecDPD::AtomVecDPD(LAMMPS *lmp) : AtomVec(lmp) fields_restart = (char *) "dpdTheta uCond uMech uChem"; fields_create = (char *) "rho dpdTheta uCond uMech uChem uCG uCGnew duChem"; fields_data_atom = (char *) "id type dpdTheta x"; - fields_data_vel = (char *) "id v omega"; + fields_data_vel = (char *) "id v"; setup_fields(); } diff --git a/src/USER-EFF/atom_vec_electron.cpp b/src/USER-EFF/atom_vec_electron.cpp index 3688f7f582..0ac56c48a3 100644 --- a/src/USER-EFF/atom_vec_electron.cpp +++ b/src/USER-EFF/atom_vec_electron.cpp @@ -44,8 +44,6 @@ AtomVecElectron::AtomVecElectron(LAMMPS *lmp) : AtomVec(lmp) molecular = 0; forceclearflag = 1; - atom->ecp_flag = 0; - atom->electron_flag = 1; atom->q_flag = atom->spin_flag = atom->eradius_flag = atom->ervel_flag = atom->erforce_flag = 1; @@ -99,7 +97,6 @@ void AtomVecElectron::create_atom_post(int ilocal) void AtomVecElectron::data_atom_post(int ilocal) { atom->ervel[ilocal] = 0.0; - if (atom->spin[ilocal] == 3) atom->ecp_flag = 1; } /* ---------------------------------------------------------------------- diff --git a/src/USER-EFF/pair_eff_cut.cpp b/src/USER-EFF/pair_eff_cut.cpp index e7aed14030..f9333f4bec 100644 --- a/src/USER-EFF/pair_eff_cut.cpp +++ b/src/USER-EFF/pair_eff_cut.cpp @@ -801,7 +801,7 @@ void PairEffCut::settings(int narg, char **arg) int atype; int iarg = 1; - int ecp_found = 0; + ecp_found = 0; while (iarg < narg) { if (strcmp(arg[iarg],"limit/eradius") == 0) { @@ -821,17 +821,15 @@ void PairEffCut::settings(int narg, char **arg) else if (strcmp(arg[iarg+1],"O") == 0) ecp_type[atype] = 8; else if (strcmp(arg[iarg+1],"Al") == 0) ecp_type[atype] = 13; else if (strcmp(arg[iarg+1],"Si") == 0) ecp_type[atype] = 14; - else error->all(FLERR, "Note: there are no default parameters for this atom ECP\n"); + else error->all(FLERR, "No default parameters for this atom ECP\n"); iarg += 2; ecp_found = 1; } - } + } else error->all(FLERR,"Illegal pair style command"); } - if (!ecp_found && atom->ecp_flag) - error->all(FLERR,"Need to specify ECP type on pair_style command"); - // Need to introduce 2 new constants w/out changing update.cpp + if (force->qqr2e==332.06371) { // i.e. Real units chosen h2e = 627.509; // hartree->kcal/mol hhmss2e = 175.72044219620075; // hartree->kcal/mol * (Bohr->Angstrom)^2 @@ -872,9 +870,24 @@ void PairEffCut::init_style() if (update->whichflag == 1) { if (force->qqr2e == 332.06371 && update->dt == 1.0) - error->all(FLERR,"You must lower the default real units timestep for pEFF "); + error->all(FLERR,"Must lower the default real units timestep for pEFF "); } + // check if any atom's spin = 3 and ECP type was not set + + int *spin = atom->spin; + int nlocal = atom->nlocal; + + int flag = 0; + for (int i = 0; i < nlocal; i++) + if (spin[i] == 3) flag = 1; + + int flagall; + MPI_Allreduce(&flag,&flagall,1,MPI_INT,MPI_SUM,world); + + if (flagall && !ecp_found) + error->all(FLERR,"Need to specify ECP type on pair_style command"); + // need a half neigh list and optionally a granular history neigh list neighbor->request(this,instance_me); diff --git a/src/USER-EFF/pair_eff_cut.h b/src/USER-EFF/pair_eff_cut.h index 63dabe5db8..bd04344373 100644 --- a/src/USER-EFF/pair_eff_cut.h +++ b/src/USER-EFF/pair_eff_cut.h @@ -46,10 +46,12 @@ class PairEffCut : public Pair { private: int limit_eradius_flag, pressure_with_evirials_flag; + int ecp_found; double cut_global; double **cut; int ecp_type[100]; - double PAULI_CORE_A[100], PAULI_CORE_B[100], PAULI_CORE_C[100], PAULI_CORE_D[100], PAULI_CORE_E[100]; + double PAULI_CORE_A[100],PAULI_CORE_B[100],PAULI_CORE_C[100]; + double PAULI_CORE_D[100],PAULI_CORE_E[100]; double hhmss2e, h2e; int nmax; diff --git a/src/USER-MESO/atom_vec_edpd.cpp b/src/USER-MESO/atom_vec_edpd.cpp index 7a031c256b..e06ac633ec 100644 --- a/src/USER-MESO/atom_vec_edpd.cpp +++ b/src/USER-MESO/atom_vec_edpd.cpp @@ -41,16 +41,16 @@ AtomVecEDPD::AtomVecEDPD(LAMMPS *lmp) : AtomVec(lmp) // order of fields in a string does not matter // except: fields_data_atom & fields_data_vel must match data file - fields_grow = (char *) "edpd_cv edpd_temp edpd_flux vest"; - fields_copy = (char *) "edpd_cv edpd_temp edpd_flux vest"; - fields_comm = (char *) "edpd_temp vest"; - fields_comm_vel = (char *) "edpd_temp vest"; + fields_grow = (char *) "edpd_cv edpd_temp edpd_flux vest vest_temp"; + fields_copy = (char *) "edpd_cv edpd_temp edpd_flux vest vest_temp"; + fields_comm = (char *) "edpd_temp vest vest_temp"; + fields_comm_vel = (char *) "edpd_temp vest vest_temp"; fields_reverse = (char *) "edpd_flux"; - fields_border = (char *) "edpd_cv edpd_temp vest"; - fields_border_vel = (char *) "edpd_cv edpd_temp vest"; - fields_exchange = (char *) "edpd_cv edpd_temp vest"; - fields_restart = (char * ) "edpd_cv edpd_temp vest"; - fields_create = (char *) "edpd_cv edpd_temp edpd_flux vest"; + fields_border = (char *) "edpd_cv edpd_temp vest vest_temp"; + fields_border_vel = (char *) "edpd_cv edpd_temp vest vest_temp"; + fields_exchange = (char *) "edpd_cv edpd_temp vest vest_temp"; + fields_restart = (char * ) "edpd_cv edpd_temp vest vest_temp"; + fields_create = (char *) "edpd_cv edpd_temp edpd_flux vest vest_temp"; fields_data_atom = (char *) "id type edpd_temp edpd_cv x"; fields_data_vel = (char *) "id v"; @@ -85,7 +85,7 @@ void AtomVecEDPD::create_atom_post(int ilocal) { atom->edpd_temp[ilocal] = 1.0; atom->edpd_cv[ilocal]= 1.0e5; - atom->vest[ilocal][3] = atom->edpd_temp[ilocal]; + atom->vest_temp[ilocal] = atom->edpd_temp[ilocal]; } /* ---------------------------------------------------------------------- @@ -99,5 +99,5 @@ void AtomVecEDPD::data_atom_post(int ilocal) atom->vest[ilocal][0] = 0.0; atom->vest[ilocal][1] = 0.0; atom->vest[ilocal][2] = 0.0; - atom->vest[ilocal][3] = atom->edpd_temp[ilocal]; + atom->vest_temp[ilocal] = atom->edpd_temp[ilocal]; } diff --git a/src/USER-MESO/atom_vec_tdpd.cpp b/src/USER-MESO/atom_vec_tdpd.cpp index 55284f69a2..5734fcf9ad 100644 --- a/src/USER-MESO/atom_vec_tdpd.cpp +++ b/src/USER-MESO/atom_vec_tdpd.cpp @@ -63,7 +63,7 @@ void AtomVecTDPD::process_args(int narg, char **arg) cc_species = atom->cc_species; atom->add_peratom_change_columns("cc",cc_species); - atom->add_peratom_change_columns("cc_species",cc_species); + atom->add_peratom_change_columns("cc_flux",cc_species); // delay setting up of fields until now diff --git a/src/USER-MESO/fix_mvv_edpd.cpp b/src/USER-MESO/fix_mvv_edpd.cpp index bd9cd9cc2a..3294d8d682 100644 --- a/src/USER-MESO/fix_mvv_edpd.cpp +++ b/src/USER-MESO/fix_mvv_edpd.cpp @@ -88,6 +88,7 @@ void FixMvvEDPD::initial_integrate(int /*vflag*/) double *edpd_flux = atom->edpd_flux; double *edpd_cv = atom->edpd_cv; double **vest = atom->vest; + double *vest_temp = atom->vest_temp; double *rmass = atom->rmass; double *mass = atom->mass; int *type = atom->type; @@ -105,7 +106,7 @@ void FixMvvEDPD::initial_integrate(int /*vflag*/) vest[i][0] = v[i][0] + dtfm * f[i][0]; vest[i][1] = v[i][1] + dtfm * f[i][1]; vest[i][2] = v[i][2] + dtfm * f[i][2]; - vest[i][3] = edpd_temp[i] + dtT * edpd_flux[i]; + vest_temp[i] = edpd_temp[i] + dtT * edpd_flux[i]; x[i][0] += dtv * vest[i][0]; x[i][1] += dtv * vest[i][1]; @@ -131,6 +132,7 @@ void FixMvvEDPD::final_integrate() double *edpd_flux = atom->edpd_flux; double *edpd_cv = atom->edpd_cv; double **vest = atom->vest; + double *vest_temp = atom->vest_temp; double *rmass = atom->rmass; double *mass = atom->mass; int *type = atom->type; @@ -148,7 +150,7 @@ void FixMvvEDPD::final_integrate() v[i][0] = vest[i][0] + dtfm * f[i][0]; v[i][1] = vest[i][1] + dtfm * f[i][1]; v[i][2] = vest[i][2] + dtfm * f[i][2]; - edpd_temp[i] = vest[i][3] + dtT * edpd_flux[i]; + edpd_temp[i] = vest_temp[i] + dtT * edpd_flux[i]; } } diff --git a/src/USER-SMD/atom_vec_smd.cpp b/src/USER-SMD/atom_vec_smd.cpp index 0fada3dc2a..9f0ed04a09 100644 --- a/src/USER-SMD/atom_vec_smd.cpp +++ b/src/USER-SMD/atom_vec_smd.cpp @@ -63,7 +63,7 @@ AtomVecSMD::AtomVecSMD(LAMMPS *lmp) : AtomVec(lmp) fields_grow = (char *) "de vfrac rmass x0 radius contact_radius molecule " - "smd_data_9 e vest tlsph_stress " + "smd_data_9 e vest smd_stress " "eff_plastic_strain eff_plastic_strain_rate damage"; fields_copy = (char *) "vfrac rmass x0 radius contact_radius molecule e " @@ -91,7 +91,7 @@ AtomVecSMD::AtomVecSMD(LAMMPS *lmp) : AtomVec(lmp) "eff_plastic_strain eff_plastic_strain_rate smd_data_9 smd_stress damage"; fields_data_atom = (char *) "id type molecule vfrac rmass radius contact_radius x"; - fields_data_vel = (char *) "id v vest"; + fields_data_vel = (char *) "id v"; // set these array sizes based on defines diff --git a/src/atom.cpp b/src/atom.cpp index 8fd859478f..0fbee8f583 100644 --- a/src/atom.cpp +++ b/src/atom.cpp @@ -566,6 +566,7 @@ void Atom::peratom_create() add_peratom("edpd_cv",&edpd_cv,DOUBLE,0); add_peratom("edpd_temp",&edpd_temp,DOUBLE,0); + add_peratom("vest_temp",&vest_temp,DOUBLE,0); add_peratom("edpd_flux",&edpd_flux,DOUBLE,0,1); // set per-thread flag add_peratom("cc",&cc,DOUBLE,1); add_peratom("cc_flux",&cc_flux,DOUBLE,1,1); // set per-thread flag @@ -625,8 +626,11 @@ void Atom::add_peratom(const char *name, void *address, void Atom::add_peratom_change_columns(const char *name, int cols) { + int i; for (int i = 0; i < nperatom; i++) if (strcmp(name,peratom[i].name) == 0) peratom[i].cols = cols; + if (i == nperatom) + error->all(FLERR,"Could not find name of peratom array for column change"); } /* ---------------------------------------------------------------------- diff --git a/src/atom.h b/src/atom.h index 007d364a7b..bc1eb1a7d7 100644 --- a/src/atom.h +++ b/src/atom.h @@ -124,6 +124,7 @@ class Atom : protected Pointers { double **cc,**cc_flux; // cc = chemical concentration double *edpd_temp,*edpd_flux; // temperature and heat flux + double *vest_temp; double *edpd_cv; // heat capacity int cc_species; @@ -162,10 +163,6 @@ class Atom : protected Pointers { int sp_flag; - // USER-EFF package - - int ecp_flag; - // USER-SMD package int smd_flag; diff --git a/src/atom_vec.cpp b/src/atom_vec.cpp index bbfccadb89..e31c235760 100644 --- a/src/atom_vec.cpp +++ b/src/atom_vec.cpp @@ -45,6 +45,7 @@ AtomVec::AtomVec(LAMMPS *lmp) : Pointers(lmp) forceclearflag = 0; maxexchange = 0; bonus_flag = 0; + size_forward_bonus = size_border_bonus = 0; kokkosable = 0; @@ -176,7 +177,7 @@ int AtomVec::grow_nmax_bonus(int nmax_bonus) void AtomVec::grow(int n) { - int i,datatype,cols,maxcols; + int datatype,cols,maxcols; void *pdata,*plength; if (n == 0) grow_nmax(); @@ -193,7 +194,7 @@ void AtomVec::grow(int n) v = memory->grow(atom->v,nmax,3,"atom:v"); f = memory->grow(atom->f,nmax*nthreads,3,"atom:f"); - for (i = 0; i < ngrow; i++) { + for (int i = 0; i < ngrow; i++) { pdata = mgrow.pdata[i]; datatype = mgrow.datatype[i]; cols = mgrow.cols[i]; @@ -415,7 +416,7 @@ int AtomVec::pack_comm(int n, int *list, double *buf, /* ---------------------------------------------------------------------- */ int AtomVec::pack_comm_vel(int n, int *list, double *buf, - int pbc_flag, int *pbc) + int pbc_flag, int *pbc) { int i,j,m,mm,nn,datatype,cols; double dx,dy,dz,dvx,dvy,dvz; @@ -1375,15 +1376,15 @@ int AtomVec::size_restart() if (nrestart) { for (nn = 0; nn < nrestart; nn++) { - cols = mrestart.cols[i]; + cols = mrestart.cols[nn]; if (cols == 0) n += nlocal; else if (cols > 0) n += cols*nlocal; else { collength = mrestart.collength[nn]; plength = mrestart.plength[nn]; for (i = 0; i < nlocal; i++) { - if (collength) ncols = (*((int ***) plength))[nlocal][collength-1]; - else ncols = (*((int **) plength))[nlocal]; + if (collength) ncols = (*((int ***) plength))[i][collength-1]; + else ncols = (*((int **) plength))[i]; n += ncols; } } @@ -1435,7 +1436,7 @@ int AtomVec::pack_restart(int i, double *buf) if (cols == 0) { double *vec = *((double **) pdata); buf[m++] = vec[i]; - } else if (ncols > 0) { + } else if (cols > 0) { double **array = *((double ***) pdata); for (mm = 0; mm < cols; mm++) buf[m++] = array[i][mm]; @@ -1469,7 +1470,7 @@ int AtomVec::pack_restart(int i, double *buf) if (cols == 0) { bigint *vec = *((bigint **) pdata); buf[m++] = ubuf(vec[i]).d; - } else if (ncols > 0) { + } else if (cols > 0) { bigint **array = *((bigint ***) pdata); for (mm = 0; mm < cols; mm++) buf[m++] = ubuf(array[i][mm]).d; @@ -1705,7 +1706,7 @@ void AtomVec::data_atom(double *coord, imageint imagetmp, char **values) vec[nlocal] = utils::numeric(FLERR,values[ivalue++],true,lmp); } else { double **array = *((double ***) pdata); - if (array == atom->x) { // already set by coord arg + if (array == atom->x) { // x was already set by coord arg ivalue += cols; continue; } @@ -1878,9 +1879,9 @@ void AtomVec::data_vel(int ilocal, char **values) v[ilocal][1] = utils::numeric(FLERR,values[1],true,lmp); v[ilocal][2] = utils::numeric(FLERR,values[2],true,lmp); - if (ndata_vel) { + if (ndata_vel > 2) { int ivalue = 3; - for (n = 0; n < ndata_vel; n++) { + for (n = 2; n < ndata_vel; n++) { pdata = mdata_vel.pdata[n]; datatype = mdata_vel.datatype[n]; cols = mdata_vel.cols[n]; @@ -2434,6 +2435,7 @@ void AtomVec::setup_fields() else size_data_atom += cols; } + size_data_vel = 0; for (n = 0; n < ndata_vel; n++) { cols = mdata_vel.cols[n]; diff --git a/src/atom_vec.h b/src/atom_vec.h index 69ea1d51ab..5911c8414b 100644 --- a/src/atom_vec.h +++ b/src/atom_vec.h @@ -74,7 +74,7 @@ class AtomVec : protected Pointers { virtual void force_clear(int, size_t) {} - void grow(int); + virtual void grow(int); void copy(int, int, int); virtual void copy_bonus(int, int, int) {} @@ -122,13 +122,11 @@ class AtomVec : protected Pointers { void data_atom(double *, imageint, char **); virtual void data_atom_post(int) {} - - void data_atom_bonus(int, char **) {} - void data_body(int, int, int, int *, double *) {} + virtual void data_atom_bonus(int, char **) {} + virtual void data_body(int, int, int, int *, double *) {} void pack_data(double **); void write_data(FILE *, int, double **); - virtual void pack_data_pre(int) {} virtual void pack_data_post(int) {} @@ -145,19 +143,19 @@ class AtomVec : protected Pointers { int pack_improper(tagint **); void write_improper(FILE *, int, tagint **, int); - int property_atom(char *) {return -1;} - void pack_property_atom(int, double *, int, int) {} + virtual int property_atom(char *) {return -1;} + virtual void pack_property_atom(int, double *, int, int) {} bigint memory_usage(); virtual bigint memory_usage_bonus() {} protected: - int nmax; // local copy of atom->nmax - int deform_vremap; // local copy of domain properties + int nmax; // local copy of atom->nmax + int deform_vremap; // local copy of domain properties int deform_groupbit; double *h_rate; - tagint *tag; // peratom fields common to all styles + tagint *tag; // peratom fields common to all styles int *type,*mask; imageint *image; double **x,**v,**f; diff --git a/src/atom_vec_body.cpp b/src/atom_vec_body.cpp index 19ac69cef3..a04f23a47c 100644 --- a/src/atom_vec_body.cpp +++ b/src/atom_vec_body.cpp @@ -40,8 +40,8 @@ AtomVecBody::AtomVecBody(LAMMPS *lmp) : AtomVec(lmp) // size_data_bonus is not used by Atom class for body style size_forward_bonus = 4; - size_border_bonus = 9; - size_restart_bonus_one = 9; + size_border_bonus = 10; + size_restart_bonus_one = 10; size_data_bonus = 0; atom->body_flag = 1; @@ -72,11 +72,9 @@ AtomVecBody::AtomVecBody(LAMMPS *lmp) : AtomVec(lmp) fields_border_vel = (char *) "radius rmass angmom"; fields_exchange = (char *) "radius rmass angmom"; fields_restart = (char *) "radius rmass angmom"; - fields_create = (char *) "radius rmass angmom tri"; + fields_create = (char *) "radius rmass angmom body"; fields_data_atom = (char *) "id type body rmass x"; fields_data_vel = (char *) "id v angmom"; - - setup_fields(); } /* ---------------------------------------------------------------------- */ @@ -127,6 +125,20 @@ void AtomVecBody::process_args(int narg, char **arg) size_forward_bonus += bptr->size_forward; size_border_bonus += bptr->size_border; + + setup_fields(); +} + +/* ---------------------------------------------------------------------- + grow atom arrays + must set local copy of body ptr + needed in replicate when 2 atom classes exist and pack_restart() is called +------------------------------------------------------------------------- */ + +void AtomVecBody::grow(int n) +{ + AtomVec::grow(n); + body = atom->body; } /* ---------------------------------------------------------------------- @@ -150,8 +162,6 @@ void AtomVecBody::grow_bonus() void AtomVecBody::copy_bonus(int i, int j, int delflag) { - int *body = atom->body; - // if deleting atom J via delflag and J has bonus data, then delete it if (delflag && body[j] >= 0) { @@ -206,8 +216,6 @@ int AtomVecBody::pack_comm_bonus(int n, int *list, double *buf) int i,j,m; double *quat; - int *body = atom->body; - m = 0; for (i = 0; i < n; i++) { j = list[i]; @@ -231,8 +239,6 @@ void AtomVecBody::unpack_comm_bonus(int n, int first, double *buf) int i,m,last; double *quat; - int *body = atom->body; - m = 0; last = first + n; for (i = first; i < last; i++) { @@ -254,8 +260,6 @@ int AtomVecBody::pack_border_bonus(int n, int *list, double *buf) int i,j,m; double *quat,*inertia; - int *body = atom->body; - m = 0; for (i = 0; i < n; i++) { j = list[i]; @@ -287,8 +291,6 @@ int AtomVecBody::unpack_border_bonus(int n, int first, double *buf) int i,j,m,last; double *quat,*inertia; - int *body = atom->body; - m = 0; last = first + n; for (i = first; i < last; i++) { @@ -330,8 +332,6 @@ int AtomVecBody::pack_exchange_bonus(int i, double *buf) { int m = 0; - int *body = atom->body; - if (body[i] < 0) buf[m++] = ubuf(0).d; else { buf[m++] = ubuf(1).d; @@ -363,8 +363,6 @@ int AtomVecBody::unpack_exchange_bonus(int ilocal, double *buf) { int m = 0; - int *body = atom->body; - body[ilocal] = (int) ubuf(buf[m++]).i; if (body[ilocal] == 0) body[ilocal] = -1; else { @@ -408,8 +406,6 @@ int AtomVecBody::size_restart_bonus() { int i; - int *body = atom->body; - int n = 0; int nlocal = atom->nlocal; for (i = 0; i < nlocal; i++) { @@ -418,8 +414,7 @@ int AtomVecBody::size_restart_bonus() if (intdoubleratio == 1) n += bonus[body[i]].ninteger; else n += (bonus[body[i]].ninteger+1)/2; n += bonus[body[i]].ndouble; - } - n++; + } else n++; } return n; @@ -435,8 +430,6 @@ int AtomVecBody::pack_restart_bonus(int i, double *buf) { int m = 0; - int *body = atom->body; - if (body[i] < 0) buf[m++] = ubuf(0).d; else { buf[m++] = ubuf(1).d; @@ -470,8 +463,6 @@ int AtomVecBody::unpack_restart_bonus(int ilocal, double *buf) { int m = 0; - int *body = atom->body; - body[ilocal] = (int) ubuf(buf[m++]).i; if (body[ilocal] == 0) body[ilocal] = -1; else { diff --git a/src/atom_vec_body.h b/src/atom_vec_body.h index 939b01878d..3f32c8223c 100644 --- a/src/atom_vec_body.h +++ b/src/atom_vec_body.h @@ -43,6 +43,7 @@ class AtomVecBody : public AtomVec { ~AtomVecBody(); void process_args(int, char **); + void grow(int); void copy_bonus(int, int, int); void clear_bonus(); int pack_comm_bonus(int, int *, double *); @@ -74,6 +75,8 @@ class AtomVecBody : public AtomVec { int intdoubleratio; // sizeof(double) / sizeof(int) int body_flag; + int *body; + MyPoolChunk *icp; MyPoolChunk *dcp; diff --git a/src/atom_vec_ellipsoid.cpp b/src/atom_vec_ellipsoid.cpp index 9166293384..e8ab6d5613 100644 --- a/src/atom_vec_ellipsoid.cpp +++ b/src/atom_vec_ellipsoid.cpp @@ -38,7 +38,7 @@ AtomVecEllipsoid::AtomVecEllipsoid(LAMMPS *lmp) : AtomVec(lmp) size_forward_bonus = 4; size_border_bonus = 8; - size_restart_bonus_one = 7; + size_restart_bonus_one = 8; size_data_bonus = 8; atom->ellipsoid_flag = 1; @@ -320,7 +320,7 @@ int AtomVecEllipsoid::size_restart_bonus() int nlocal = atom->nlocal; for (i = 0; i < nlocal; i++) { if (ellipsoid[i] >= 0) n += size_restart_bonus_one; - n++; + else n++; } return n; diff --git a/src/atom_vec_line.cpp b/src/atom_vec_line.cpp index ded2f88c2f..7ab697b349 100644 --- a/src/atom_vec_line.cpp +++ b/src/atom_vec_line.cpp @@ -37,7 +37,7 @@ AtomVecLine::AtomVecLine(LAMMPS *lmp) : AtomVec(lmp) size_forward_bonus = 1; size_border_bonus = 3; - size_restart_bonus_one = 2; + size_restart_bonus_one = 3; size_data_bonus = 5; atom->line_flag = 1; @@ -286,7 +286,7 @@ int AtomVecLine::size_restart_bonus() int nlocal = atom->nlocal; for (i = 0; i < nlocal; i++) { if (line[i] >= 0) n += size_restart_bonus_one; - n++; + else n++; } return n; diff --git a/src/atom_vec_sphere.cpp b/src/atom_vec_sphere.cpp index 81f1b02fdb..b601fc8f7c 100644 --- a/src/atom_vec_sphere.cpp +++ b/src/atom_vec_sphere.cpp @@ -61,18 +61,22 @@ AtomVecSphere::AtomVecSphere(LAMMPS *lmp) : AtomVec(lmp) void AtomVecSphere::process_args(int narg, char **arg) { - if (narg == 0) return; - if (narg != 1) error->all(FLERR,"Illegal atom_style sphere command"); - - radvary = utils::numeric(FLERR,arg[0],true,lmp); - if (radvary < 0 || radvary > 1) + if (narg != 0 && narg != 1) error->all(FLERR,"Illegal atom_style sphere command"); - if (radvary == 0) return; + + radvary = 0; + if (narg == 1) { + radvary = utils::numeric(FLERR,arg[0],true,lmp); + if (radvary < 0 || radvary > 1) + error->all(FLERR,"Illegal atom_style sphere command"); + } // dynamic particle radius and mass must be communicated every step - fields_comm = (char *) "radius rmass"; - fields_comm_vel = (char *) "radius rmass omega"; + if (radvary) { + fields_comm = (char *) "radius rmass"; + fields_comm_vel = (char *) "radius rmass omega"; + } // delay setting up of fields until now diff --git a/src/atom_vec_tri.cpp b/src/atom_vec_tri.cpp index 32d75c16f3..7345646a1e 100644 --- a/src/atom_vec_tri.cpp +++ b/src/atom_vec_tri.cpp @@ -38,7 +38,7 @@ AtomVecTri::AtomVecTri(LAMMPS *lmp) : AtomVec(lmp) size_forward_bonus = 4; size_border_bonus = 17; - size_restart_bonus_one = 16; + size_restart_bonus_one = 17; size_data_bonus = 10; atom->tri_flag = 1; @@ -64,7 +64,7 @@ AtomVecTri::AtomVecTri(LAMMPS *lmp) : AtomVec(lmp) fields_border_vel = (char *) "molecule radius rmass omega"; fields_exchange = (char *) "molecule radius rmass omega angmom"; fields_restart = (char *) "molecule radius rmass omega angmom"; - fields_create = (char *) "molecule radius rmass omega angmom line"; + fields_create = (char *) "molecule radius rmass omega angmom tri"; fields_data_atom = (char *) "id molecule type tri rmass x"; fields_data_vel = (char *) "id v omega angmom"; @@ -381,7 +381,7 @@ int AtomVecTri::size_restart_bonus() int nlocal = atom->nlocal; for (i = 0; i < nlocal; i++) { if (tri[i] >= 0) n += size_restart_bonus_one; - n++; + else n++; } return n; diff --git a/src/fix_gravity.cpp b/src/fix_gravity.cpp index 14ba913c01..e00bbb4e17 100644 --- a/src/fix_gravity.cpp +++ b/src/fix_gravity.cpp @@ -31,7 +31,7 @@ using namespace FixConst; using namespace MathConst; enum{CHUTE,SPHERICAL,VECTOR}; -enum{CONSTANT,EQUAL}; +enum{CONSTANT,EQUAL}; // same as FixPour /* ---------------------------------------------------------------------- */ @@ -134,6 +134,16 @@ FixGravity::FixGravity(LAMMPS *lmp, int narg, char **arg) : eflag = 0; egrav = 0.0; + + // set gravity components once and for all if CONSTANT + + varflag = CONSTANT; + if (mstyle != CONSTANT || vstyle != CONSTANT || pstyle != CONSTANT || + tstyle != CONSTANT || xstyle != CONSTANT || ystyle != CONSTANT || + zstyle != CONSTANT) varflag = EQUAL; + + if (varflag == CONSTANT) set_acceleration(); + } /* ---------------------------------------------------------------------- */ @@ -222,15 +232,6 @@ void FixGravity::init() if (!input->variable->equalstyle(zvar)) error->all(FLERR,"Variable for fix gravity is invalid style"); } - - varflag = CONSTANT; - if (mstyle != CONSTANT || vstyle != CONSTANT || pstyle != CONSTANT || - tstyle != CONSTANT || xstyle != CONSTANT || ystyle != CONSTANT || - zstyle != CONSTANT) varflag = EQUAL; - - // set gravity components once and for all - - if (varflag == CONSTANT) set_acceleration(); } /* ---------------------------------------------------------------------- */ diff --git a/src/replicate.cpp b/src/replicate.cpp index 1617ab0313..3659f7cf7a 100644 --- a/src/replicate.cpp +++ b/src/replicate.cpp @@ -331,35 +331,43 @@ void Replicate::command(int narg, char **arg) if (me == 0 && screen) { fprintf(screen," bounding box image = (%i %i %i) to (%i %i %i)\n", - _imagelo[0],_imagelo[1],_imagelo[2],_imagehi[0],_imagehi[1],_imagehi[2]); + _imagelo[0],_imagelo[1],_imagelo[2], + _imagehi[0],_imagehi[1],_imagehi[2]); fprintf(screen," bounding box extra memory = %.2f MB\n", (double)size_buf_all*sizeof(double)/1024/1024); } // rnk offsets - int * disp_buf_rnk; + int *disp_buf_rnk; memory->create(disp_buf_rnk, nprocs, "replicate:disp_buf_rnk"); disp_buf_rnk[0] = 0; - for (i=1; icreate(buf_all, size_buf_all, "replicate:buf_all"); - MPI_Allgatherv(buf, n, MPI_DOUBLE, buf_all, size_buf_rnk, disp_buf_rnk, MPI_DOUBLE, world); + MPI_Allgatherv(buf,n,MPI_DOUBLE,buf_all,size_buf_rnk,disp_buf_rnk, + MPI_DOUBLE,world); // bounding box of original unwrapped system double _orig_lo[3], _orig_hi[3]; if (triclinic) { - _orig_lo[0] = domain->boxlo[0] + _imagelo[0] * old_xprd + _imagelo[1] * old_xy + _imagelo[2] * old_xz; - _orig_lo[1] = domain->boxlo[1] + _imagelo[1] * old_yprd + _imagelo[2] * old_yz; + _orig_lo[0] = domain->boxlo[0] + + _imagelo[0] * old_xprd + _imagelo[1] * old_xy + _imagelo[2] * old_xz; + _orig_lo[1] = domain->boxlo[1] + + _imagelo[1] * old_yprd + _imagelo[2] * old_yz; _orig_lo[2] = domain->boxlo[2] + _imagelo[2] * old_zprd; - _orig_hi[0] = domain->boxlo[0] + (_imagehi[0]+1) * old_xprd + (_imagehi[1]+1) * old_xy + (_imagehi[2]+1) * old_xz; - _orig_hi[1] = domain->boxlo[1] + (_imagehi[1]+1) * old_yprd + (_imagehi[2]+1) * old_yz; + _orig_hi[0] = domain->boxlo[0] + + (_imagehi[0]+1) * old_xprd + + (_imagehi[1]+1) * old_xy + (_imagehi[2]+1) * old_xz; + _orig_hi[1] = domain->boxlo[1] + + (_imagehi[1]+1) * old_yprd + (_imagehi[2]+1) * old_yz; _orig_hi[2] = domain->boxlo[2] + (_imagehi[2]+1) * old_zprd; } else { _orig_lo[0] = domain->boxlo[0] + _imagelo[0] * old_xprd; @@ -605,7 +613,8 @@ void Replicate::command(int narg, char **arg) MPI_Reduce(&num_replicas_added, &sum, 1, MPI_INT, MPI_SUM, 0, world); double avg = (double) sum / nprocs; if (me == 0 && screen) - fprintf(screen," average # of replicas added to proc = %.2f out of %i (%.2f %%)\n", + fprintf(screen," average # of replicas added to proc = %.2f " + "out of %i (%.2f %%)\n", avg,nx*ny*nz,avg/(nx*ny*nz)*100.0); } else { diff --git a/src/verlet.cpp b/src/verlet.cpp index 8cd6fe940d..fe9645618a 100644 --- a/src/verlet.cpp +++ b/src/verlet.cpp @@ -109,7 +109,7 @@ void Verlet::setup(int flag) domain->pbc(); domain->reset_box(); comm->setup(); - if (neighbor->style) neighbor->setup_bins(); + if (neighbor->style) neighbor->setup_bins(); comm->exchange(); if (atom->sortfreq > 0) atom->sort(); comm->borders(); -- GitLab From b6374bacfb13a4b9c7273c2d07dd5dd1dd055ba0 Mon Sep 17 00:00:00 2001 From: Steve Plimpton Date: Wed, 18 Dec 2019 08:56:03 -0700 Subject: [PATCH 014/717] enable replicate to work with local ptrs --- src/DIPOLE/atom_vec_dipole.cpp | 15 +++- src/DIPOLE/atom_vec_dipole.h | 5 ++ src/MOLECULE/atom_vec_angle.cpp | 39 +++++---- src/MOLECULE/atom_vec_angle.h | 6 ++ src/MOLECULE/atom_vec_bond.cpp | 29 +++---- src/MOLECULE/atom_vec_bond.h | 10 ++- src/MOLECULE/atom_vec_full.cpp | 55 ++++++------- src/MOLECULE/atom_vec_full.h | 6 ++ src/MOLECULE/atom_vec_molecular.cpp | 55 ++++++------- src/MOLECULE/atom_vec_molecular.h | 6 ++ src/MOLECULE/atom_vec_template.cpp | 23 ++++-- src/MOLECULE/atom_vec_template.h | 5 ++ src/PERI/atom_vec_peri.cpp | 37 ++++++--- src/PERI/atom_vec_peri.h | 7 ++ src/SPIN/atom_vec_spin.cpp | 29 +++++-- src/SPIN/atom_vec_spin.h | 5 ++ src/USER-DPD/atom_vec_dpd.cpp | 36 ++++++--- src/USER-DPD/atom_vec_dpd.h | 7 ++ src/USER-EFF/atom_vec_electron.cpp | 25 ++++-- src/USER-EFF/atom_vec_electron.h | 6 ++ src/USER-MESO/atom_vec_edpd.cpp | 32 +++++--- src/USER-MESO/atom_vec_edpd.h | 7 ++ src/USER-MESO/atom_vec_mdpd.cpp | 24 ++++-- src/USER-MESO/atom_vec_mdpd.h | 6 ++ src/USER-MESO/atom_vec_tdpd.cpp | 14 +++- src/USER-MESO/atom_vec_tdpd.h | 5 ++ src/USER-SMD/atom_vec_smd.cpp | 92 +++++++++++++--------- src/USER-SMD/atom_vec_smd.h | 8 ++ src/USER-SPH/atom_vec_meso.cpp | 36 ++++++--- src/USER-SPH/atom_vec_meso.h | 6 ++ src/atom.cpp | 83 +++++++------------ src/atom.h | 15 ++-- src/atom_vec.cpp | 6 +- src/atom_vec.h | 3 +- src/atom_vec_body.cpp | 58 ++++++++------ src/atom_vec_body.h | 6 +- src/atom_vec_ellipsoid.cpp | 61 ++++++-------- src/atom_vec_ellipsoid.h | 6 +- src/atom_vec_hybrid.cpp | 16 ++-- src/atom_vec_hybrid.h | 3 +- src/atom_vec_line.cpp | 95 ++++++++++------------ src/atom_vec_line.h | 7 +- src/atom_vec_sphere.cpp | 45 +++++++---- src/atom_vec_sphere.h | 6 +- src/atom_vec_tri.cpp | 118 +++++++++++++--------------- src/atom_vec_tri.h | 7 +- src/replicate.cpp | 3 +- 47 files changed, 690 insertions(+), 484 deletions(-) diff --git a/src/DIPOLE/atom_vec_dipole.cpp b/src/DIPOLE/atom_vec_dipole.cpp index 5cdbab1b33..074a59d5a1 100644 --- a/src/DIPOLE/atom_vec_dipole.cpp +++ b/src/DIPOLE/atom_vec_dipole.cpp @@ -54,6 +54,16 @@ AtomVecDipole::AtomVecDipole(LAMMPS *lmp) : AtomVec(lmp) setup_fields(); } +/* ---------------------------------------------------------------------- + set local copies of all grow ptrs used by this class, except defaults + needed in replicate when 2 atom classes exist and it calls pack_restart() +------------------------------------------------------------------------- */ + +void AtomVecDipole::grow_pointers() +{ + mu = atom->mu; +} + /* ---------------------------------------------------------------------- modify what AtomVec::data_atom() just unpacked or initialize other atom quantities @@ -61,6 +71,7 @@ AtomVecDipole::AtomVecDipole(LAMMPS *lmp) : AtomVec(lmp) void AtomVecDipole::data_atom_post(int ilocal) { - double *mu = atom->mu[ilocal]; - mu[3] = sqrt(mu[0]*mu[0] + mu[1]*mu[1] + mu[2]*mu[2]); + double *mu_one = mu[ilocal]; + mu_one[3] = + sqrt(mu_one[0]*mu_one[0] + mu_one[1]*mu_one[1] + mu_one[2]*mu_one[2]); } diff --git a/src/DIPOLE/atom_vec_dipole.h b/src/DIPOLE/atom_vec_dipole.h index 45f33d109d..2030892a43 100644 --- a/src/DIPOLE/atom_vec_dipole.h +++ b/src/DIPOLE/atom_vec_dipole.h @@ -27,7 +27,12 @@ namespace LAMMPS_NS { class AtomVecDipole : public AtomVec { public: AtomVecDipole(class LAMMPS *); + + void grow_pointers(); void data_atom_post(int); + + private: + double **mu; }; } diff --git a/src/MOLECULE/atom_vec_angle.cpp b/src/MOLECULE/atom_vec_angle.cpp index 1bd6f9a071..f3ebe3258b 100644 --- a/src/MOLECULE/atom_vec_angle.cpp +++ b/src/MOLECULE/atom_vec_angle.cpp @@ -66,6 +66,20 @@ AtomVecAngle::~AtomVecAngle() delete [] angle_negative; } +/* ---------------------------------------------------------------------- + set local copies of all grow ptrs used by this class, except defaults + needed in replicate when 2 atom classes exist and it calls pack_restart() +------------------------------------------------------------------------- */ + +void AtomVecAngle::grow_pointers() +{ + num_bond = atom->num_bond; + bond_type = atom->bond_type; + num_angle = atom->num_angle; + angle_type = atom->angle_type; + nspecial = atom->nspecial; +} + /* ---------------------------------------------------------------------- modify values for AtomVec::pack_restart() to pack ------------------------------------------------------------------------- */ @@ -87,11 +101,6 @@ void AtomVecAngle::pack_restart_pre(int ilocal) // flip any negative types to positive and flag which ones - int *num_bond = atom->num_bond; - int **bond_type = atom->bond_type; - int *num_angle = atom->num_angle; - int **angle_type = atom->angle_type; - int any_bond_negative = 0; for (int m = 0; m < num_bond[ilocal]; m++) { if (bond_type[ilocal][m] < 0) { @@ -120,15 +129,11 @@ void AtomVecAngle::pack_restart_post(int ilocal) // restore the flagged types to their negative values if (any_bond_negative) { - int *num_bond = atom->num_bond; - int **bond_type = atom->bond_type; for (int m = 0; m < num_bond[ilocal]; m++) if (bond_negative[m]) bond_type[ilocal][m] = -bond_type[ilocal][m]; } if (any_angle_negative) { - int *num_angle = atom->num_angle; - int **angle_type = atom->angle_type; for (int m = 0; m < num_angle[ilocal]; m++) if (angle_negative[m]) angle_type[ilocal][m] = -angle_type[ilocal][m]; } @@ -140,9 +145,9 @@ void AtomVecAngle::pack_restart_post(int ilocal) void AtomVecAngle::unpack_restart_init(int ilocal) { - atom->nspecial[ilocal][0] = 0; - atom->nspecial[ilocal][1] = 0; - atom->nspecial[ilocal][2] = 0; + nspecial[ilocal][0] = 0; + nspecial[ilocal][1] = 0; + nspecial[ilocal][2] = 0; } /* ---------------------------------------------------------------------- @@ -152,9 +157,9 @@ void AtomVecAngle::unpack_restart_init(int ilocal) void AtomVecAngle::data_atom_post(int ilocal) { - atom->num_bond[ilocal] = 0; - atom->num_angle[ilocal] = 0; - atom->nspecial[ilocal][0] = 0; - atom->nspecial[ilocal][1] = 0; - atom->nspecial[ilocal][2] = 0; + num_bond[ilocal] = 0; + num_angle[ilocal] = 0; + nspecial[ilocal][0] = 0; + nspecial[ilocal][1] = 0; + nspecial[ilocal][2] = 0; } diff --git a/src/MOLECULE/atom_vec_angle.h b/src/MOLECULE/atom_vec_angle.h index 48e55b0988..0ce0b4baab 100644 --- a/src/MOLECULE/atom_vec_angle.h +++ b/src/MOLECULE/atom_vec_angle.h @@ -28,12 +28,18 @@ class AtomVecAngle : public AtomVec { public: AtomVecAngle(class LAMMPS *); ~AtomVecAngle(); + + void grow_pointers(); void pack_restart_pre(int); void pack_restart_post(int); void unpack_restart_init(int); void data_atom_post(int); private: + int *num_bond,*num_angle; + int **bond_type,**angle_type; + int **nspecial; + int any_bond_negative,any_angle_negative; int bond_per_atom,angle_per_atom; int *bond_negative,*angle_negative; diff --git a/src/MOLECULE/atom_vec_bond.cpp b/src/MOLECULE/atom_vec_bond.cpp index 00e8e3260d..64a52fa80a 100644 --- a/src/MOLECULE/atom_vec_bond.cpp +++ b/src/MOLECULE/atom_vec_bond.cpp @@ -61,19 +61,17 @@ AtomVecBond::~AtomVecBond() } /* ---------------------------------------------------------------------- - grow atom arrays - must set local copy of body ptr - needed in replicate when 2 atom classes exist and pack_restart() is called + set local copies of all grow ptrs used by this class, except defaults + needed in replicate when 2 atom classes exist and it calls pack_restart() ------------------------------------------------------------------------- */ -void AtomVecBond::grow(int n) +void AtomVecBond::grow_pointers() { - AtomVec::grow(n); num_bond = atom->num_bond; bond_type = atom->bond_type; + nspecial = atom->nspecial; } - /* ---------------------------------------------------------------------- modify values for AtomVec::pack_restart() to pack ------------------------------------------------------------------------- */ @@ -90,9 +88,6 @@ void AtomVecBond::pack_restart_pre(int ilocal) // flip any negative types to positive and flag which ones - //int *num_bond = atom->num_bond; - //int **bond_type = atom->bond_type; - any_bond_negative = 0; for (int m = 0; m < num_bond[ilocal]; m++) { if (bond_type[ilocal][m] < 0) { @@ -112,8 +107,6 @@ void AtomVecBond::pack_restart_post(int ilocal) // restore the flagged types to their negative values if (any_bond_negative) { - //int *num_bond = atom->num_bond; - //int **bond_type = atom->bond_type; for (int m = 0; m < num_bond[ilocal]; m++) if (bond_negative[m]) bond_type[ilocal][m] = -bond_type[ilocal][m]; } @@ -125,9 +118,9 @@ void AtomVecBond::pack_restart_post(int ilocal) void AtomVecBond::unpack_restart_init(int ilocal) { - atom->nspecial[ilocal][0] = 0; - atom->nspecial[ilocal][1] = 0; - atom->nspecial[ilocal][2] = 0; + nspecial[ilocal][0] = 0; + nspecial[ilocal][1] = 0; + nspecial[ilocal][2] = 0; } /* ---------------------------------------------------------------------- @@ -137,8 +130,8 @@ void AtomVecBond::unpack_restart_init(int ilocal) void AtomVecBond::data_atom_post(int ilocal) { - atom->num_bond[ilocal] = 0; - atom->nspecial[ilocal][0] = 0; - atom->nspecial[ilocal][1] = 0; - atom->nspecial[ilocal][2] = 0; + num_bond[ilocal] = 0; + nspecial[ilocal][0] = 0; + nspecial[ilocal][1] = 0; + nspecial[ilocal][2] = 0; } diff --git a/src/MOLECULE/atom_vec_bond.h b/src/MOLECULE/atom_vec_bond.h index 90c4b1f217..c938655127 100644 --- a/src/MOLECULE/atom_vec_bond.h +++ b/src/MOLECULE/atom_vec_bond.h @@ -28,19 +28,21 @@ class AtomVecBond : public AtomVec { public: AtomVecBond(class LAMMPS *); ~AtomVecBond(); - void grow(int); + + void grow_pointers(); void pack_restart_pre(int); void pack_restart_post(int); void unpack_restart_init(int); void data_atom_post(int); private: + int *num_bond; + int **bond_type; + int **nspecial; + int any_bond_negative; int bond_per_atom; int *bond_negative; - - int *num_bond; - int **bond_type; }; } diff --git a/src/MOLECULE/atom_vec_full.cpp b/src/MOLECULE/atom_vec_full.cpp index be7c92ce93..89afae5005 100644 --- a/src/MOLECULE/atom_vec_full.cpp +++ b/src/MOLECULE/atom_vec_full.cpp @@ -88,6 +88,24 @@ AtomVecFull::~AtomVecFull() delete [] improper_negative; } +/* ---------------------------------------------------------------------- + set local copies of all grow ptrs used by this class, except defaults + needed in replicate when 2 atom classes exist and it calls pack_restart() +------------------------------------------------------------------------- */ + +void AtomVecFull::grow_pointers() +{ + num_bond = atom->num_bond; + bond_type = atom->bond_type; + num_angle = atom->num_angle; + angle_type = atom->angle_type; + num_dihedral = atom->num_dihedral; + dihedral_type = atom->dihedral_type; + num_improper = atom->num_improper; + improper_type = atom->improper_type; + nspecial = atom->nspecial; +} + /* ---------------------------------------------------------------------- modify values for AtomVec::pack_restart() to pack ------------------------------------------------------------------------- */ @@ -119,15 +137,6 @@ void AtomVecFull::pack_restart_pre(int ilocal) // flip any negative types to positive and flag which ones - int *num_bond = atom->num_bond; - int **bond_type = atom->bond_type; - int *num_angle = atom->num_angle; - int **angle_type = atom->angle_type; - int *num_dihedral = atom->num_dihedral; - int **dihedral_type = atom->dihedral_type; - int *num_improper = atom->num_improper; - int **improper_type = atom->improper_type; - any_bond_negative = 0; for (int m = 0; m < num_bond[ilocal]; m++) { if (bond_type[ilocal][m] < 0) { @@ -174,30 +183,22 @@ void AtomVecFull::pack_restart_post(int ilocal) // restore the flagged types to their negative values if (any_bond_negative) { - int *num_bond = atom->num_bond; - int **bond_type = atom->bond_type; for (int m = 0; m < num_bond[ilocal]; m++) if (bond_negative[m]) bond_type[ilocal][m] = -bond_type[ilocal][m]; } if (any_angle_negative) { - int *num_angle = atom->num_angle; - int **angle_type = atom->angle_type; for (int m = 0; m < num_angle[ilocal]; m++) if (angle_negative[m]) angle_type[ilocal][m] = -angle_type[ilocal][m]; } if (any_dihedral_negative) { - int *num_dihedral = atom->num_dihedral; - int **dihedral_type = atom->dihedral_type; for (int m = 0; m < num_dihedral[ilocal]; m++) if (dihedral_negative[m]) dihedral_type[ilocal][m] = -dihedral_type[ilocal][m]; } if (any_improper_negative) { - int *num_improper = atom->num_improper; - int **improper_type = atom->improper_type; for (int m = 0; m < num_improper[ilocal]; m++) if (improper_negative[m]) improper_type[ilocal][m] = -improper_type[ilocal][m]; @@ -210,9 +211,9 @@ void AtomVecFull::pack_restart_post(int ilocal) void AtomVecFull::unpack_restart_init(int ilocal) { - atom->nspecial[ilocal][0] = 0; - atom->nspecial[ilocal][1] = 0; - atom->nspecial[ilocal][2] = 0; + nspecial[ilocal][0] = 0; + nspecial[ilocal][1] = 0; + nspecial[ilocal][2] = 0; } /* ---------------------------------------------------------------------- @@ -222,11 +223,11 @@ void AtomVecFull::unpack_restart_init(int ilocal) void AtomVecFull::data_atom_post(int ilocal) { - atom->num_bond[ilocal] = 0; - atom->num_angle[ilocal] = 0; - atom->num_dihedral[ilocal] = 0; - atom->num_improper[ilocal] = 0; - atom->nspecial[ilocal][0] = 0; - atom->nspecial[ilocal][1] = 0; - atom->nspecial[ilocal][2] = 0; + num_bond[ilocal] = 0; + num_angle[ilocal] = 0; + num_dihedral[ilocal] = 0; + num_improper[ilocal] = 0; + nspecial[ilocal][0] = 0; + nspecial[ilocal][1] = 0; + nspecial[ilocal][2] = 0; } diff --git a/src/MOLECULE/atom_vec_full.h b/src/MOLECULE/atom_vec_full.h index 455bbd0d5e..1abd3351d3 100644 --- a/src/MOLECULE/atom_vec_full.h +++ b/src/MOLECULE/atom_vec_full.h @@ -28,12 +28,18 @@ class AtomVecFull : public AtomVec { public: AtomVecFull(class LAMMPS *); ~AtomVecFull(); + + void grow_pointers(); void pack_restart_pre(int); void pack_restart_post(int); void unpack_restart_init(int); void data_atom_post(int); private: + int *num_bond,*num_angle,*num_dihedral,*num_improper; + int **bond_type,**angle_type,**dihedral_type,**improper_type; + int **nspecial; + int any_bond_negative,any_angle_negative, any_dihedral_negative,any_improper_negative; int bond_per_atom,angle_per_atom,dihedral_per_atom,improper_per_atom; diff --git a/src/MOLECULE/atom_vec_molecular.cpp b/src/MOLECULE/atom_vec_molecular.cpp index ea15216aee..c2b71468c0 100644 --- a/src/MOLECULE/atom_vec_molecular.cpp +++ b/src/MOLECULE/atom_vec_molecular.cpp @@ -88,6 +88,24 @@ AtomVecMolecular::~AtomVecMolecular() delete [] improper_negative; } +/* ---------------------------------------------------------------------- + set local copies of all grow ptrs used by this class, except defaults + needed in replicate when 2 atom classes exist and it calls pack_restart() +------------------------------------------------------------------------- */ + +void AtomVecMolecular::grow_pointers() +{ + num_bond = atom->num_bond; + bond_type = atom->bond_type; + num_angle = atom->num_angle; + angle_type = atom->angle_type; + num_dihedral = atom->num_dihedral; + dihedral_type = atom->dihedral_type; + num_improper = atom->num_improper; + improper_type = atom->improper_type; + nspecial = atom->nspecial; +} + /* ---------------------------------------------------------------------- modify values for AtomVec::pack_restart() to pack ------------------------------------------------------------------------- */ @@ -119,15 +137,6 @@ void AtomVecMolecular::pack_restart_pre(int ilocal) // flip any negative types to positive and flag which ones - int *num_bond = atom->num_bond; - int **bond_type = atom->bond_type; - int *num_angle = atom->num_angle; - int **angle_type = atom->angle_type; - int *num_dihedral = atom->num_dihedral; - int **dihedral_type = atom->dihedral_type; - int *num_improper = atom->num_improper; - int **improper_type = atom->improper_type; - any_bond_negative = 0; for (int m = 0; m < num_bond[ilocal]; m++) { if (bond_type[ilocal][m] < 0) { @@ -174,30 +183,22 @@ void AtomVecMolecular::pack_restart_post(int ilocal) // restore the flagged types to their negative values if (any_bond_negative) { - int *num_bond = atom->num_bond; - int **bond_type = atom->bond_type; for (int m = 0; m < num_bond[ilocal]; m++) if (bond_negative[m]) bond_type[ilocal][m] = -bond_type[ilocal][m]; } if (any_angle_negative) { - int *num_angle = atom->num_angle; - int **angle_type = atom->angle_type; for (int m = 0; m < num_angle[ilocal]; m++) if (angle_negative[m]) angle_type[ilocal][m] = -angle_type[ilocal][m]; } if (any_dihedral_negative) { - int *num_dihedral = atom->num_dihedral; - int **dihedral_type = atom->dihedral_type; for (int m = 0; m < num_dihedral[ilocal]; m++) if (dihedral_negative[m]) dihedral_type[ilocal][m] = -dihedral_type[ilocal][m]; } if (any_improper_negative) { - int *num_improper = atom->num_improper; - int **improper_type = atom->improper_type; for (int m = 0; m < num_improper[ilocal]; m++) if (improper_negative[m]) improper_type[ilocal][m] = -improper_type[ilocal][m]; @@ -210,9 +211,9 @@ void AtomVecMolecular::pack_restart_post(int ilocal) void AtomVecMolecular::unpack_restart_init(int ilocal) { - atom->nspecial[ilocal][0] = 0; - atom->nspecial[ilocal][1] = 0; - atom->nspecial[ilocal][2] = 0; + nspecial[ilocal][0] = 0; + nspecial[ilocal][1] = 0; + nspecial[ilocal][2] = 0; } /* ---------------------------------------------------------------------- @@ -222,11 +223,11 @@ void AtomVecMolecular::unpack_restart_init(int ilocal) void AtomVecMolecular::data_atom_post(int ilocal) { - atom->num_bond[ilocal] = 0; - atom->num_angle[ilocal] = 0; - atom->num_dihedral[ilocal] = 0; - atom->num_improper[ilocal] = 0; - atom->nspecial[ilocal][0] = 0; - atom->nspecial[ilocal][1] = 0; - atom->nspecial[ilocal][2] = 0; + num_bond[ilocal] = 0; + num_angle[ilocal] = 0; + num_dihedral[ilocal] = 0; + num_improper[ilocal] = 0; + nspecial[ilocal][0] = 0; + nspecial[ilocal][1] = 0; + nspecial[ilocal][2] = 0; } diff --git a/src/MOLECULE/atom_vec_molecular.h b/src/MOLECULE/atom_vec_molecular.h index 5b79f8b5c6..bcfa13d9d3 100644 --- a/src/MOLECULE/atom_vec_molecular.h +++ b/src/MOLECULE/atom_vec_molecular.h @@ -28,12 +28,18 @@ class AtomVecMolecular : public AtomVec { public: AtomVecMolecular(class LAMMPS *); ~AtomVecMolecular(); + + void grow_pointers(); void pack_restart_pre(int); void pack_restart_post(int); void unpack_restart_init(int); void data_atom_post(int); private: + int *num_bond,*num_angle,*num_dihedral,*num_improper; + int **bond_type,**angle_type,**dihedral_type,**improper_type; + int **nspecial; + int any_bond_negative,any_angle_negative, any_dihedral_negative,any_improper_negative; int bond_per_atom,angle_per_atom,dihedral_per_atom,improper_per_atom; diff --git a/src/MOLECULE/atom_vec_template.cpp b/src/MOLECULE/atom_vec_template.cpp index 546c19da12..97d4c865ba 100644 --- a/src/MOLECULE/atom_vec_template.cpp +++ b/src/MOLECULE/atom_vec_template.cpp @@ -96,14 +96,25 @@ void AtomVecTemplate::process_args(int narg, char **arg) } } +/* ---------------------------------------------------------------------- + set local copies of all grow ptrs used by this class, except defaults + needed in replicate when 2 atom classes exist and it calls pack_restart() +------------------------------------------------------------------------- */ + +void AtomVecTemplate::grow_pointers() +{ + molindex = atom->molindex; + molatom = atom->molatom; +} + /* ---------------------------------------------------------------------- initialize non-zero atom quantities ------------------------------------------------------------------------- */ void AtomVecTemplate::create_atom_post(int ilocal) { - atom->molindex[ilocal] = -1; - atom->molatom[ilocal] = -1; + molindex[ilocal] = -1; + molatom[ilocal] = -1; } /* ---------------------------------------------------------------------- @@ -113,11 +124,11 @@ void AtomVecTemplate::create_atom_post(int ilocal) void AtomVecTemplate::data_atom_post(int ilocal) { - int molindex = atom->molindex[ilocal]; - int molatom = atom->molatom[ilocal]; + int molindex_one = molindex[ilocal]; + int molatom_one = molatom[ilocal]; - if (molindex < 0 || molindex >= nset) + if (molindex_one < 0 || molindex_one >= nset) error->one(FLERR,"Invalid template index in Atoms section of data file"); - if (molatom < 0 || molatom >= onemols[molindex]->natoms) + if (molatom_one < 0 || molatom_one >= onemols[molindex_one]->natoms) error->one(FLERR,"Invalid template atom in Atoms section of data file"); } diff --git a/src/MOLECULE/atom_vec_template.h b/src/MOLECULE/atom_vec_template.h index 52ef5e70e1..3bf2ec6273 100644 --- a/src/MOLECULE/atom_vec_template.h +++ b/src/MOLECULE/atom_vec_template.h @@ -27,9 +27,14 @@ namespace LAMMPS_NS { class AtomVecTemplate : public AtomVec { public: AtomVecTemplate(class LAMMPS *); + + void grow_pointers(); void process_args(int, char **); void create_atom_post(int); void data_atom_post(int); + + private: + int *molindex,*molatom; }; } diff --git a/src/PERI/atom_vec_peri.cpp b/src/PERI/atom_vec_peri.cpp index 58ff9c54d9..46d03c35eb 100644 --- a/src/PERI/atom_vec_peri.cpp +++ b/src/PERI/atom_vec_peri.cpp @@ -69,18 +69,31 @@ AtomVecPeri::AtomVecPeri(LAMMPS *lmp) : AtomVec(lmp) setup_fields(); } +/* ---------------------------------------------------------------------- + set local copies of all grow ptrs used by this class, except defaults + needed in replicate when 2 atom classes exist and it calls pack_restart() +------------------------------------------------------------------------- */ + +void AtomVecPeri::grow_pointers() +{ + rmass = atom->rmass; + vfrac = atom->vfrac; + s0 = atom->s0; + x0 = atom->x0; +} + /* ---------------------------------------------------------------------- initialize non-zero atom quantities ------------------------------------------------------------------------- */ void AtomVecPeri::create_atom_post(int ilocal) { - atom->vfrac[ilocal] = 1.0; - atom->rmass[ilocal] = 1.0; - atom->s0[ilocal] = DBL_MAX; - atom->x0[ilocal][0] = atom->x[ilocal][0]; - atom->x0[ilocal][1] = atom->x[ilocal][1]; - atom->x0[ilocal][2] = atom->x[ilocal][2]; + vfrac[ilocal] = 1.0; + rmass[ilocal] = 1.0; + s0[ilocal] = DBL_MAX; + x0[ilocal][0] = x[ilocal][0]; + x0[ilocal][1] = x[ilocal][1]; + x0[ilocal][2] = x[ilocal][2]; } /* ---------------------------------------------------------------------- @@ -90,12 +103,12 @@ void AtomVecPeri::create_atom_post(int ilocal) void AtomVecPeri::data_atom_post(int ilocal) { - atom->s0[ilocal] = DBL_MAX; - atom->x0[ilocal][0] = atom->x[ilocal][0]; - atom->x0[ilocal][1] = atom->x[ilocal][1]; - atom->x0[ilocal][2] = atom->x[ilocal][2]; + s0[ilocal] = DBL_MAX; + x0[ilocal][0] = x[ilocal][0]; + x0[ilocal][1] = x[ilocal][1]; + x0[ilocal][2] = x[ilocal][2]; - if (atom->rmass[ilocal] <= 0.0) + if (rmass[ilocal] <= 0.0) error->one(FLERR,"Invalid mass in Atoms section of data file"); } @@ -124,14 +137,12 @@ void AtomVecPeri::pack_property_atom(int index, double *buf, int n = 0; if (index == 0) { - double *vfrac = atom->vfrac; for (int i = 0; i < nlocal; i++) { if (mask[i] & groupbit) buf[n] = vfrac[i]; else buf[n] = 0.0; n += nvalues; } } else if (index == 1) { - double *s0 = atom->s0; for (int i = 0; i < nlocal; i++) { if (mask[i] & groupbit) buf[n] = s0[i]; else buf[n] = 0.0; diff --git a/src/PERI/atom_vec_peri.h b/src/PERI/atom_vec_peri.h index 13a62eb194..5739ea55c1 100644 --- a/src/PERI/atom_vec_peri.h +++ b/src/PERI/atom_vec_peri.h @@ -27,10 +27,17 @@ namespace LAMMPS_NS { class AtomVecPeri : public AtomVec { public: AtomVecPeri(class LAMMPS *); + + void grow_pointers(); void create_atom_post(int); void data_atom_post(int); int property_atom(char *); void pack_property_atom(int, double *, int, int); + + private: + double *rmass,*vfrac,*s0; + double **x0; + }; } diff --git a/src/SPIN/atom_vec_spin.cpp b/src/SPIN/atom_vec_spin.cpp index 638a3b8021..1e745fd0c1 100644 --- a/src/SPIN/atom_vec_spin.cpp +++ b/src/SPIN/atom_vec_spin.cpp @@ -61,6 +61,18 @@ AtomVecSpin::AtomVecSpin(LAMMPS *lmp) : AtomVec(lmp) setup_fields(); } +/* ---------------------------------------------------------------------- + set local copies of all grow ptrs used by this class, except defaults + needed in replicate when 2 atom classes exist and it calls pack_restart() +------------------------------------------------------------------------- */ + +void AtomVecSpin::grow_pointers() +{ + sp = atom->sp; + fm = atom->fm; + fm_long = atom->fm_long; +} + /* ---------------------------------------------------------------------- clear extra forces starting at atom N nbytes = # of bytes to clear for a per-atom vector @@ -69,9 +81,9 @@ AtomVecSpin::AtomVecSpin(LAMMPS *lmp) : AtomVec(lmp) void AtomVecSpin::force_clear(int n, size_t nbytes) { - memset(&atom->f[n][0],0,3*nbytes); - memset(&atom->fm[n][0],0,3*nbytes); - memset(&atom->fm_long[n][0],0,3*nbytes); + memset(&f[n][0],0,3*nbytes); + memset(&fm[n][0],0,3*nbytes); + memset(&fm_long[n][0],0,3*nbytes); } /* ---------------------------------------------------------------------- @@ -81,9 +93,10 @@ void AtomVecSpin::force_clear(int n, size_t nbytes) void AtomVecSpin::data_atom_post(int ilocal) { - double *sp = atom->sp[ilocal]; - double inorm = 1.0/sqrt(sp[0]*sp[0] + sp[1]*sp[1] + sp[2]*sp[2]); - sp[0] *= inorm; - sp[1] *= inorm; - sp[2] *= inorm; + double *sp_one = sp[ilocal]; + double norm = + 1.0/sqrt(sp_one[0]*sp_one[0] + sp_one[1]*sp_one[1] + sp_one[2]*sp_one[2]); + sp_one[0] *= norm; + sp_one[1] *= norm; + sp_one[2] *= norm; } diff --git a/src/SPIN/atom_vec_spin.h b/src/SPIN/atom_vec_spin.h index c68f3a0419..f24791605d 100644 --- a/src/SPIN/atom_vec_spin.h +++ b/src/SPIN/atom_vec_spin.h @@ -27,8 +27,13 @@ namespace LAMMPS_NS { class AtomVecSpin : public AtomVec { public: AtomVecSpin(class LAMMPS *); + + void grow_pointers(); void force_clear(int, size_t); void data_atom_post(int); + + private: + double **sp,**fm,**fm_long; }; } diff --git a/src/USER-DPD/atom_vec_dpd.cpp b/src/USER-DPD/atom_vec_dpd.cpp index 124a081191..34efd9bc2b 100644 --- a/src/USER-DPD/atom_vec_dpd.cpp +++ b/src/USER-DPD/atom_vec_dpd.cpp @@ -52,14 +52,30 @@ AtomVecDPD::AtomVecDPD(LAMMPS *lmp) : AtomVec(lmp) setup_fields(); } +/* ---------------------------------------------------------------------- + set local copies of all grow ptrs used by this class, except defaults + needed in replicate when 2 atom classes exist and it calls pack_restart() +------------------------------------------------------------------------- */ + +void AtomVecDPD::grow_pointers() +{ + rho = atom->rho; + dpdTheta = atom->dpdTheta; + uCond = atom->uCond; + uMech = atom->uMech; + uChem = atom->uChem; + uCG = atom->uCG; + uCGnew = atom->uCGnew; +} + /* ---------------------------------------------------------------------- initialize other atom quantities after AtomVec::unpack_restart() ------------------------------------------------------------------------- */ void AtomVecDPD::unpack_restart_init(int ilocal) { - atom->uCG[ilocal] = 0.0; - atom->uCGnew[ilocal] = 0.0; + uCG[ilocal] = 0.0; + uCGnew[ilocal] = 0.0; } /* ---------------------------------------------------------------------- @@ -69,14 +85,14 @@ void AtomVecDPD::unpack_restart_init(int ilocal) void AtomVecDPD::data_atom_post(int ilocal) { - atom->rho[ilocal] = 0.0; - atom->uCond[ilocal] = 0.0; - atom->uMech[ilocal] = 0.0; - atom->uChem[ilocal] = 0.0; - atom->uCG[ilocal] = 0.0; - atom->uCGnew[ilocal] = 0.0; - - if (atom->dpdTheta[ilocal] <= 0) + rho[ilocal] = 0.0; + uCond[ilocal] = 0.0; + uMech[ilocal] = 0.0; + uChem[ilocal] = 0.0; + uCG[ilocal] = 0.0; + uCGnew[ilocal] = 0.0; + + if (dpdTheta[ilocal] <= 0) error->one(FLERR,"Internal temperature in Atoms section of date file " "must be > zero"); } diff --git a/src/USER-DPD/atom_vec_dpd.h b/src/USER-DPD/atom_vec_dpd.h index 20c8a9a2d2..61abc658b8 100644 --- a/src/USER-DPD/atom_vec_dpd.h +++ b/src/USER-DPD/atom_vec_dpd.h @@ -27,8 +27,15 @@ namespace LAMMPS_NS { class AtomVecDPD : public AtomVec { public: AtomVecDPD(class LAMMPS *); + + void grow_pointers(); void unpack_restart_init(int); void data_atom_post(int); + +private: + double *rho,*dpdTheta; + double *uCond,*uMech,*uChem; + double *uCG,*uCGnew; }; } diff --git a/src/USER-EFF/atom_vec_electron.cpp b/src/USER-EFF/atom_vec_electron.cpp index 0ac56c48a3..0912fb0498 100644 --- a/src/USER-EFF/atom_vec_electron.cpp +++ b/src/USER-EFF/atom_vec_electron.cpp @@ -69,6 +69,19 @@ AtomVecElectron::AtomVecElectron(LAMMPS *lmp) : AtomVec(lmp) setup_fields(); } +/* ---------------------------------------------------------------------- + set local copies of all grow ptrs used by this class, except defaults + needed in replicate when 2 atom classes exist and it calls pack_restart() +------------------------------------------------------------------------- */ + +void AtomVecElectron::grow_pointers() +{ + spin = atom->spin; + eradius = atom->eradius; + ervel = atom->ervel; + erforce = atom->erforce; +} + /* ---------------------------------------------------------------------- clear extra forces starting at atom N nbytes = # of bytes to clear for a per-atom vector @@ -76,7 +89,7 @@ AtomVecElectron::AtomVecElectron(LAMMPS *lmp) : AtomVec(lmp) void AtomVecElectron::force_clear(int n, size_t nbytes) { - memset(&atom->erforce[n],0,nbytes); + memset(&erforce[n],0,nbytes); } /* ---------------------------------------------------------------------- @@ -85,8 +98,8 @@ void AtomVecElectron::force_clear(int n, size_t nbytes) void AtomVecElectron::create_atom_post(int ilocal) { - atom->spin[ilocal] = 1; - atom->eradius[ilocal] = 1.0; + spin[ilocal] = 1; + eradius[ilocal] = 1.0; } /* ---------------------------------------------------------------------- @@ -96,7 +109,7 @@ void AtomVecElectron::create_atom_post(int ilocal) void AtomVecElectron::data_atom_post(int ilocal) { - atom->ervel[ilocal] = 0.0; + ervel[ilocal] = 0.0; } /* ---------------------------------------------------------------------- @@ -126,28 +139,24 @@ void AtomVecElectron::pack_property_atom(int index, double *buf, int n = 0; if (index == 0) { - int *spin = atom->spin; for (int i = 0; i < nlocal; i++) { if (mask[i] & groupbit) buf[n] = spin[i]; else buf[n] = 0.0; n += nvalues; } } else if (index == 1) { - double *eradius = atom->eradius; for (int i = 0; i < nlocal; i++) { if (mask[i] & groupbit) buf[n] = eradius[i]; else buf[n] = 0.0; n += nvalues; } } else if (index == 2) { - double *ervel = atom->ervel; for (int i = 0; i < nlocal; i++) { if (mask[i] & groupbit) buf[n] = ervel[i]; else buf[n] = 0.0; n += nvalues; } } else if (index == 3) { - double *erforce = atom->erforce; for (int i = 0; i < nlocal; i++) { if (mask[i] & groupbit) buf[n] = erforce[i]; else buf[n] = 0.0; diff --git a/src/USER-EFF/atom_vec_electron.h b/src/USER-EFF/atom_vec_electron.h index fabb03438d..9175ca52f7 100644 --- a/src/USER-EFF/atom_vec_electron.h +++ b/src/USER-EFF/atom_vec_electron.h @@ -27,11 +27,17 @@ namespace LAMMPS_NS { class AtomVecElectron : public AtomVec { public: AtomVecElectron(class LAMMPS *); + + void grow_pointers(); void force_clear(int, size_t); void create_atom_post(int); void data_atom_post(int); int property_atom(char *); void pack_property_atom(int, double *, int, int); + +private: + int *spin; + double *eradius,*ervel,*erforce; }; } diff --git a/src/USER-MESO/atom_vec_edpd.cpp b/src/USER-MESO/atom_vec_edpd.cpp index e06ac633ec..d08a626fad 100644 --- a/src/USER-MESO/atom_vec_edpd.cpp +++ b/src/USER-MESO/atom_vec_edpd.cpp @@ -67,6 +67,20 @@ void AtomVecEDPD::init() error->all(FLERR,"Atom style edpd requires lj units"); } +/* ---------------------------------------------------------------------- + set local copies of all grow ptrs used by this class, except defaults + needed in replicate when 2 atom classes exist and it calls pack_restart() +------------------------------------------------------------------------- */ + +void AtomVecEDPD::grow_pointers() +{ + edpd_cv = atom->edpd_cv; + edpd_temp = atom->edpd_temp; + edpd_flux = atom->edpd_flux; + vest = atom->vest; + vest_temp = atom->vest_temp; +} + /* ---------------------------------------------------------------------- clear extra forces starting at atom N nbytes = # of bytes to clear for a per-atom vector @@ -74,7 +88,7 @@ void AtomVecEDPD::init() void AtomVecEDPD::force_clear(int n, size_t nbytes) { - memset(&atom->edpd_flux[n],0,nbytes); + memset(&edpd_flux[n],0,nbytes); } /* ---------------------------------------------------------------------- @@ -83,9 +97,9 @@ void AtomVecEDPD::force_clear(int n, size_t nbytes) void AtomVecEDPD::create_atom_post(int ilocal) { - atom->edpd_temp[ilocal] = 1.0; - atom->edpd_cv[ilocal]= 1.0e5; - atom->vest_temp[ilocal] = atom->edpd_temp[ilocal]; + edpd_temp[ilocal] = 1.0; + edpd_cv[ilocal]= 1.0e5; + vest_temp[ilocal] = edpd_temp[ilocal]; } /* ---------------------------------------------------------------------- @@ -95,9 +109,9 @@ void AtomVecEDPD::create_atom_post(int ilocal) void AtomVecEDPD::data_atom_post(int ilocal) { - atom->edpd_flux[ilocal] = 0.0; - atom->vest[ilocal][0] = 0.0; - atom->vest[ilocal][1] = 0.0; - atom->vest[ilocal][2] = 0.0; - atom->vest_temp[ilocal] = atom->edpd_temp[ilocal]; + edpd_flux[ilocal] = 0.0; + vest[ilocal][0] = 0.0; + vest[ilocal][1] = 0.0; + vest[ilocal][2] = 0.0; + vest_temp[ilocal] = edpd_temp[ilocal]; } diff --git a/src/USER-MESO/atom_vec_edpd.h b/src/USER-MESO/atom_vec_edpd.h index bb667ae792..a69c44a035 100644 --- a/src/USER-MESO/atom_vec_edpd.h +++ b/src/USER-MESO/atom_vec_edpd.h @@ -28,9 +28,16 @@ class AtomVecEDPD : public AtomVec { public: AtomVecEDPD(class LAMMPS *); void init(); + + void grow_pointers(); void force_clear(int, size_t); void create_atom_post(int); void data_atom_post(int); + + private: + double *edpd_cv,*edpd_temp,*edpd_flux; + double **vest; + double *vest_temp; }; } diff --git a/src/USER-MESO/atom_vec_mdpd.cpp b/src/USER-MESO/atom_vec_mdpd.cpp index b87ff14c3c..0acaaf6253 100644 --- a/src/USER-MESO/atom_vec_mdpd.cpp +++ b/src/USER-MESO/atom_vec_mdpd.cpp @@ -61,6 +61,18 @@ void AtomVecMDPD::init() error->all(FLERR,"Atom style mdpd requires lj units"); } +/* ---------------------------------------------------------------------- + set local copies of all grow ptrs used by this class, except defaults + needed in replicate when 2 atom classes exist and it calls pack_restart() +------------------------------------------------------------------------- */ + +void AtomVecMDPD::grow_pointers() +{ + rho = atom->rho; + drho = atom->drho; + vest = atom->vest; +} + /* ---------------------------------------------------------------------- clear extra forces starting at atom N nbytes = # of bytes to clear for a per-atom vector @@ -68,7 +80,7 @@ void AtomVecMDPD::init() void AtomVecMDPD::force_clear(int n, size_t nbytes) { - memset(&atom->drho[n],0,nbytes); + memset(&drho[n],0,nbytes); } /* ---------------------------------------------------------------------- @@ -78,10 +90,10 @@ void AtomVecMDPD::force_clear(int n, size_t nbytes) void AtomVecMDPD::data_atom_post(int ilocal) { - atom->drho[ilocal] = 0.0; - atom->vest[ilocal][0] = 0.0; - atom->vest[ilocal][1] = 0.0; - atom->vest[ilocal][2] = 0.0; + drho[ilocal] = 0.0; + vest[ilocal][0] = 0.0; + vest[ilocal][1] = 0.0; + vest[ilocal][2] = 0.0; } /* ---------------------------------------------------------------------- @@ -109,14 +121,12 @@ void AtomVecMDPD::pack_property_atom(int index, double *buf, int n = 0; if (index == 0) { - double *rho = atom->rho; for (int i = 0; i < nlocal; i++) { if (mask[i] & groupbit) buf[n] = rho[i]; else buf[n] = 0.0; n += nvalues; } } else if (index == 1) { - double *drho = atom->drho; for (int i = 0; i < nlocal; i++) { if (mask[i] & groupbit) buf[n] = drho[i]; else buf[n] = 0.0; diff --git a/src/USER-MESO/atom_vec_mdpd.h b/src/USER-MESO/atom_vec_mdpd.h index 0eb4fff2df..55f5e9bb2d 100644 --- a/src/USER-MESO/atom_vec_mdpd.h +++ b/src/USER-MESO/atom_vec_mdpd.h @@ -28,10 +28,16 @@ class AtomVecMDPD : public AtomVec { public: AtomVecMDPD(class LAMMPS *); void init(); + + void grow_pointers(); void force_clear(int, size_t); void data_atom_post(int); int property_atom(char *); void pack_property_atom(int, double *, int, int); + + private: + double *rho,*drho; + double **vest; }; } diff --git a/src/USER-MESO/atom_vec_tdpd.cpp b/src/USER-MESO/atom_vec_tdpd.cpp index 5734fcf9ad..f50fe168d6 100644 --- a/src/USER-MESO/atom_vec_tdpd.cpp +++ b/src/USER-MESO/atom_vec_tdpd.cpp @@ -80,6 +80,18 @@ void AtomVecTDPD::init() error->all(FLERR,"Atom style tdpd requires lj units"); } +/* ---------------------------------------------------------------------- + set local copies of all grow ptrs used by this class, except defaults + needed in replicate when 2 atom classes exist and it calls pack_restart() +------------------------------------------------------------------------- */ + +void AtomVecTDPD::grow_pointers() +{ + cc_flux = atom->cc_flux; + vest = atom->vest; +} + + /* ---------------------------------------------------------------------- clear extra forces starting at atom N nbytes = # of bytes to clear for a per-atom vector @@ -87,7 +99,7 @@ void AtomVecTDPD::init() void AtomVecTDPD::force_clear(int n, size_t nbytes) { - memset(&atom->cc_flux[n][0],0,cc_species*nbytes); + memset(&cc_flux[n][0],0,cc_species*nbytes); } /* ---------------------------------------------------------------------- diff --git a/src/USER-MESO/atom_vec_tdpd.h b/src/USER-MESO/atom_vec_tdpd.h index 7321859fb4..971696cc5c 100644 --- a/src/USER-MESO/atom_vec_tdpd.h +++ b/src/USER-MESO/atom_vec_tdpd.h @@ -29,10 +29,15 @@ class AtomVecTDPD : public AtomVec { AtomVecTDPD(class LAMMPS *); void process_args(int, char **); void init(); + + void grow_pointers(); void force_clear(int, size_t); void data_atom_post(int); protected: + double **cc_flux; + double **vest; + int cc_species; }; diff --git a/src/USER-SMD/atom_vec_smd.cpp b/src/USER-SMD/atom_vec_smd.cpp index 9f0ed04a09..4c8126d2cc 100644 --- a/src/USER-SMD/atom_vec_smd.cpp +++ b/src/USER-SMD/atom_vec_smd.cpp @@ -62,11 +62,11 @@ AtomVecSMD::AtomVecSMD(LAMMPS *lmp) : AtomVec(lmp) // except: fields_data_atom & fields_data_vel must match data file fields_grow = (char *) - "de vfrac rmass x0 radius contact_radius molecule " - "smd_data_9 e vest smd_stress " + "e de vfrac rmass x0 radius contact_radius molecule " + "smd_data_9 vest smd_stress " "eff_plastic_strain eff_plastic_strain_rate damage"; fields_copy = (char *) - "vfrac rmass x0 radius contact_radius molecule e " + "e vfrac rmass x0 radius contact_radius molecule " "eff_plastic_strain eff_plastic_strain_rate vest " "smd_data_9 smd_stress damage"; fields_comm = (char *) "radius vfrac vest e"; @@ -101,6 +101,29 @@ AtomVecSMD::AtomVecSMD(LAMMPS *lmp) : AtomVec(lmp) setup_fields(); } +/* ---------------------------------------------------------------------- + set local copies of all grow ptrs used by this class, except defaults + needed in replicate when 2 atom classes exist and it calls pack_restart() +------------------------------------------------------------------------- */ + +void AtomVecSMD::grow_pointers() +{ + e = atom->e; + de = atom->de; + vfrac = atom->vfrac; + rmass = atom->rmass; + x0 = atom->x0; + radius = atom->radius; + contact_radius = atom->contact_radius; + molecule = atom->molecule; + smd_data_9 = atom->smd_data_9; + vest = atom->vest; + smd_stress = atom->smd_stress; + eff_plastic_strain = atom->eff_plastic_strain; + eff_plastic_strain_rate = atom->eff_plastic_strain_rate; + damage = atom->damage; +} + /* ---------------------------------------------------------------------- clear extra forces starting at atom N nbytes = # of bytes to clear for a per-atom vector @@ -109,8 +132,8 @@ AtomVecSMD::AtomVecSMD(LAMMPS *lmp) : AtomVec(lmp) void AtomVecSMD::force_clear(int n, size_t nbytes) { - memset(&atom->de[n],0,nbytes); - memset(&atom->f[n][0],0,3*nbytes); + memset(&de[n],0,nbytes); + memset(&f[n][0],0,3*nbytes); } /* ---------------------------------------------------------------------- @@ -119,19 +142,19 @@ void AtomVecSMD::force_clear(int n, size_t nbytes) void AtomVecSMD::create_atom_post(int ilocal) { - atom->x0[ilocal][0] = atom->x[ilocal][0]; - atom->x0[ilocal][1] = atom->x[ilocal][1]; - atom->x0[ilocal][2] = atom->x[ilocal][2]; - - atom->vfrac[ilocal] = 1.0; - atom->rmass[ilocal] = 1.0; - atom->radius[ilocal] = 0.5; - atom->contact_radius[ilocal] = 0.5; - atom->molecule[ilocal] = 1; + x0[ilocal][0] = x[ilocal][0]; + x0[ilocal][1] = x[ilocal][1]; + x0[ilocal][2] = x[ilocal][2]; + + vfrac[ilocal] = 1.0; + rmass[ilocal] = 1.0; + radius[ilocal] = 0.5; + contact_radius[ilocal] = 0.5; + molecule[ilocal] = 1; - atom->smd_data_9[ilocal][0] = 1.0; // xx - atom->smd_data_9[ilocal][4] = 1.0; // yy - atom->smd_data_9[ilocal][8] = 1.0; // zz + smd_data_9[ilocal][0] = 1.0; // xx + smd_data_9[ilocal][4] = 1.0; // yy + smd_data_9[ilocal][8] = 1.0; // zz } /* ---------------------------------------------------------------------- @@ -141,32 +164,27 @@ void AtomVecSMD::create_atom_post(int ilocal) void AtomVecSMD::data_atom_post(int ilocal) { - atom->e[ilocal] = 0.0; - atom->x0[ilocal][0] = atom->x[ilocal][0]; - atom->x0[ilocal][1] = atom->x[ilocal][1]; - atom->x0[ilocal][2] = atom->x[ilocal][2]; + e[ilocal] = 0.0; + x0[ilocal][0] = x[ilocal][0]; + x0[ilocal][1] = x[ilocal][1]; + x0[ilocal][2] = x[ilocal][2]; - atom->vest[ilocal][0] = 0.0; - atom->vest[ilocal][1] = 0.0; - atom->vest[ilocal][2] = 0.0; + vest[ilocal][0] = 0.0; + vest[ilocal][1] = 0.0; + vest[ilocal][2] = 0.0; - atom->damage[ilocal] = 0.0; + damage[ilocal] = 0.0; - atom->eff_plastic_strain[ilocal] = 0.0; - atom->eff_plastic_strain_rate[ilocal] = 0.0; + eff_plastic_strain[ilocal] = 0.0; + eff_plastic_strain_rate[ilocal] = 0.0; for (int k = 0; k < NMAT_FULL; k++) - atom->smd_data_9[ilocal][k] = 0.0; + smd_data_9[ilocal][k] = 0.0; for (int k = 0; k < NMAT_SYMM; k++) - atom->smd_stress[ilocal][k] = 0.0; + smd_stress[ilocal][k] = 0.0; - atom->smd_data_9[ilocal][0] = 1.0; // xx - atom->smd_data_9[ilocal][4] = 1.0; // yy - atom->smd_data_9[ilocal][8] = 1.0; // zz + smd_data_9[ilocal][0] = 1.0; // xx + smd_data_9[ilocal][4] = 1.0; // yy + smd_data_9[ilocal][8] = 1.0; // zz } - - - - - diff --git a/src/USER-SMD/atom_vec_smd.h b/src/USER-SMD/atom_vec_smd.h index 539f209ca7..00709aeada 100644 --- a/src/USER-SMD/atom_vec_smd.h +++ b/src/USER-SMD/atom_vec_smd.h @@ -38,9 +38,17 @@ namespace LAMMPS_NS { class AtomVecSMD : public AtomVec { public: AtomVecSMD(class LAMMPS *); + + void grow_pointers(); void force_clear(int, size_t); void create_atom_post(int); void data_atom_post(int); + + private: + int *molecule; + double *e,*de,*vfrac,*rmass,*radius,*contact_radius; + double *eff_plastic_strain,*eff_plastic_strain_rate,*damage; + double **x0,**smd_data_9,**smd_stress,**vest; }; } diff --git a/src/USER-SPH/atom_vec_meso.cpp b/src/USER-SPH/atom_vec_meso.cpp index a80ab91d2e..fdddd15f27 100644 --- a/src/USER-SPH/atom_vec_meso.cpp +++ b/src/USER-SPH/atom_vec_meso.cpp @@ -52,6 +52,21 @@ AtomVecMeso::AtomVecMeso(LAMMPS *lmp) : AtomVec(lmp) setup_fields(); } +/* ---------------------------------------------------------------------- + set local copies of all grow ptrs used by this class, except defaults + needed in replicate when 2 atom classes exist and it calls pack_restart() +------------------------------------------------------------------------- */ + +void AtomVecMeso::grow_pointers() +{ + rho = atom->rho; + drho = atom->drho; + e = atom->e; + de = atom->de; + cv = atom->cv; + vest = atom->vest; +} + /* ---------------------------------------------------------------------- clear extra forces starting at atom N nbytes = # of bytes to clear for a per-atom vector @@ -59,8 +74,8 @@ AtomVecMeso::AtomVecMeso(LAMMPS *lmp) : AtomVec(lmp) void AtomVecMeso::force_clear(int n, size_t nbytes) { - memset(&atom->de[n],0,nbytes); - memset(&atom->drho[n],0,nbytes); + memset(&de[n],0,nbytes); + memset(&drho[n],0,nbytes); } /* ---------------------------------------------------------------------- @@ -69,7 +84,7 @@ void AtomVecMeso::force_clear(int n, size_t nbytes) void AtomVecMeso::create_atom_post(int ilocal) { - atom->cv[ilocal] = 1.0; + cv[ilocal] = 1.0; } /* ---------------------------------------------------------------------- @@ -79,11 +94,11 @@ void AtomVecMeso::create_atom_post(int ilocal) void AtomVecMeso::data_atom_post(int ilocal) { - atom->vest[ilocal][0] = 0.0; - atom->vest[ilocal][1] = 0.0; - atom->vest[ilocal][2] = 0.0; - atom->de[ilocal] = 0.0; - atom->drho[ilocal] = 0.0; + vest[ilocal][0] = 0.0; + vest[ilocal][1] = 0.0; + vest[ilocal][2] = 0.0; + de[ilocal] = 0.0; + drho[ilocal] = 0.0; } /* ---------------------------------------------------------------------- @@ -114,35 +129,30 @@ void AtomVecMeso::pack_property_atom(int index, double *buf, int n = 0; if (index == 0) { - double *rho = atom->rho; for (int i = 0; i < nlocal; i++) { if (mask[i] & groupbit) buf[n] = rho[i]; else buf[n] = 0.0; n += nvalues; } } else if (index == 1) { - double *drho = atom->drho; for (int i = 0; i < nlocal; i++) { if (mask[i] & groupbit) buf[n] = drho[i]; else buf[n] = 0.0; n += nvalues; } } else if (index == 2) { - double *e = atom->e; for (int i = 0; i < nlocal; i++) { if (mask[i] & groupbit) buf[n] = e[i]; else buf[n] = 0.0; n += nvalues; } } else if (index == 3) { - double *de = atom->de; for (int i = 0; i < nlocal; i++) { if (mask[i] & groupbit) buf[n] = de[i]; else buf[n] = 0.0; n += nvalues; } } else if (index == 4) { - double *cv = atom->cv; for (int i = 0; i < nlocal; i++) { if (mask[i] & groupbit) buf[n] = cv[i]; else buf[n] = 0.0; diff --git a/src/USER-SPH/atom_vec_meso.h b/src/USER-SPH/atom_vec_meso.h index c8a1090474..bd84c34fbc 100644 --- a/src/USER-SPH/atom_vec_meso.h +++ b/src/USER-SPH/atom_vec_meso.h @@ -27,11 +27,17 @@ namespace LAMMPS_NS { class AtomVecMeso : public AtomVec { public: AtomVecMeso(class LAMMPS *); + + void grow_pointers(); void force_clear(int, size_t); void create_atom_post(int); void data_atom_post(int); int property_atom(char *); void pack_property_atom(int, double *, int, int); + + private: + double *rho,*drho,*e,*de,*cv; + double **vest; }; } diff --git a/src/atom.cpp b/src/atom.cpp index 0fbee8f583..353ed510a4 100644 --- a/src/atom.cpp +++ b/src/atom.cpp @@ -175,42 +175,8 @@ Atom::Atom(LAMMPS *lmp) : Pointers(lmp) iname = dname = NULL; // initialize atom style and array existence flags - // customize by adding new flag - sphere_flag = peri_flag = electron_flag = 0; - wavepacket_flag = sph_flag = 0; - - molecule_flag = 0; - q_flag = mu_flag = 0; - omega_flag = torque_flag = angmom_flag = 0; - radius_flag = rmass_flag = 0; - ellipsoid_flag = line_flag = tri_flag = body_flag = 0; - - // magnetic flags - - sp_flag = 0; - - vfrac_flag = 0; - spin_flag = eradius_flag = ervel_flag = erforce_flag = ervelforce_flag = 0; - cs_flag = csforce_flag = vforce_flag = etag_flag = 0; - - rho_flag = e_flag = cv_flag = vest_flag = 0; - dpd_flag = edpd_flag = tdpd_flag = 0; - - // USER-SMD - - smd_flag = 0; - contact_radius_flag = 0; - smd_data_9_flag = 0; - smd_stress_flag = 0; - x0_flag = 0; - eff_plastic_strain_flag = 0; - eff_plastic_strain_rate_flag = 0; - damage_flag = 0; - - // Peridynamic scale factor - - pdscale = 1.0; + set_atomflag_defaults(); // initialize peratom data structure @@ -668,6 +634,32 @@ void Atom::add_peratom_vary(const char *name, void *address, nperatom++; } +/* ---------------------------------------------------------------------- + add info for a single per-atom array to PerAtom data struct + customize by adding new flag, identical list as atom.h 2nd customization +------------------------------------------------------------------------- */ + +void Atom::set_atomflag_defaults() +{ + sphere_flag = ellipsoid_flag = line_flag = tri_flag = body_flag = 0; + peri_flag = electron_flag = 0; + wavepacket_flag = sph_flag = 0; + molecule_flag = molindex_flag = molatom_flag = 0; + q_flag = mu_flag = 0; + rmass_flag = radius_flag = omega_flag = torque_flag = angmom_flag = 0; + vfrac_flag = spin_flag = eradius_flag = ervel_flag = erforce_flag = 0; + cs_flag = csforce_flag = vforce_flag = ervelforce_flag = etag_flag = 0; + rho_flag = e_flag = cv_flag = vest_flag = 0; + dpd_flag = edpd_flag = tdpd_flag = 0; + sp_flag = 0; + x0_flag = 0; + smd_flag = damage_flag = 0; + contact_radius_flag = smd_data_9_flag = smd_stress_flag = 0; + eff_plastic_strain_flag = eff_plastic_strain_rate_flag = 0; + + pdscale = 1.0; +} + /* ---------------------------------------------------------------------- create an AtomVec style called from lammps.cpp, input script, restart file, replicate @@ -682,26 +674,8 @@ void Atom::create_avec(const char *style, int narg, char **arg, int trysuffix) // unset atom style and array existence flags // may have been set by old avec - // customize by adding new flag - sphere_flag = peri_flag = electron_flag = 0; - wavepacket_flag = sph_flag = 0; - - molecule_flag = 0; - q_flag = mu_flag = 0; - omega_flag = torque_flag = angmom_flag = 0; - radius_flag = rmass_flag = 0; - ellipsoid_flag = line_flag = tri_flag = body_flag = 0; - - // magnetic flags - - sp_flag = 0; - - vfrac_flag = 0; - spin_flag = eradius_flag = ervel_flag = erforce_flag = ervelforce_flag = 0; - cs_flag = csforce_flag = vforce_flag = etag_flag = 0; - - rho_flag = e_flag = cv_flag = vest_flag = 0; + set_atomflag_defaults(); // create instance of AtomVec // use grow() to initialize atom-based arrays to length 1 @@ -785,6 +759,7 @@ AtomVec *Atom::avec_creator(LAMMPS *lmp) return new T(lmp); } + /* ---------------------------------------------------------------------- */ void Atom::init() diff --git a/src/atom.h b/src/atom.h index bc1eb1a7d7..6c7110b5be 100644 --- a/src/atom.h +++ b/src/atom.h @@ -143,7 +143,8 @@ class Atom : protected Pointers { double **vest; // -------------------------------------------------------------------- - // 1st customization section: customize by adding new flags + // 2nd customization section: customize by adding new flags + // identical list as Atom::set_atomflag_defaults() // most are existence flags for per-atom vectors and arrays // 1 if variable is used, 0 if not @@ -165,14 +166,10 @@ class Atom : protected Pointers { // USER-SMD package - int smd_flag; - int contact_radius_flag; - int smd_data_9_flag; - int smd_stress_flag; int x0_flag; - int eff_plastic_strain_flag; - int eff_plastic_strain_rate_flag; - int damage_flag; + int smd_flag,damage_flag; + int contact_radius_flag,smd_data_9_flag,smd_stress_flag; + int eff_plastic_strain_flag,eff_plastic_strain_rate_flag; // Peridynamics scale factor, used by dump cfg @@ -264,6 +261,7 @@ class Atom : protected Pointers { void *, int collength=0); void create_avec(const char *, int, char **, int); virtual class AtomVec *new_avec(const char *, int, int &); + void init(); void setup(); @@ -380,6 +378,7 @@ class Atom : protected Pointers { double bininvx,bininvy,bininvz; // inverse actual bin sizes double bboxlo[3],bboxhi[3]; // bounding box of my sub-domain + void set_atomflag_defaults(); void setup_sort_bins(); int next_prime(int); diff --git a/src/atom_vec.cpp b/src/atom_vec.cpp index e31c235760..fac4cc2f6e 100644 --- a/src/atom_vec.cpp +++ b/src/atom_vec.cpp @@ -185,7 +185,7 @@ void AtomVec::grow(int n) atom->nmax = nmax; if (nmax < 0 || nmax > MAXSMALLINT) error->one(FLERR,"Per-processor system is too big"); - + tag = memory->grow(atom->tag,nmax,"atom:tag"); type = memory->grow(atom->type,nmax,"atom:type"); mask = memory->grow(atom->mask,nmax,"atom:mask"); @@ -230,6 +230,8 @@ void AtomVec::grow(int n) for (int iextra = 0; iextra < atom->nextra_grow; iextra++) modify->fix[atom->extra_grow[iextra]]->grow_arrays(nmax); + + grow_pointers(); } /* ---------------------------------------------------------------------- @@ -2387,7 +2389,6 @@ void AtomVec::setup_fields() // set style-specific sizes // NOTE: check for others vars in atom_vec.cpp/h ?? - // NOTE: need to set maxexchange, e.g for style hybrid? comm_x_only = 1; if (ncomm) comm_x_only = 0; @@ -2435,7 +2436,6 @@ void AtomVec::setup_fields() else size_data_atom += cols; } - size_data_vel = 0; for (n = 0; n < ndata_vel; n++) { cols = mdata_vel.cols[n]; diff --git a/src/atom_vec.h b/src/atom_vec.h index 5911c8414b..94517f80ad 100644 --- a/src/atom_vec.h +++ b/src/atom_vec.h @@ -74,7 +74,8 @@ class AtomVec : protected Pointers { virtual void force_clear(int, size_t) {} - virtual void grow(int); + void grow(int); + virtual void grow_pointers() {} void copy(int, int, int); virtual void copy_bonus(int, int, int) {} diff --git a/src/atom_vec_body.cpp b/src/atom_vec_body.cpp index a04f23a47c..0f3557596f 100644 --- a/src/atom_vec_body.cpp +++ b/src/atom_vec_body.cpp @@ -100,6 +100,7 @@ AtomVecBody::~AtomVecBody() void AtomVecBody::process_args(int narg, char **arg) { // suppress unused parameter warning dependent on style_body.h + (void)(arg); if (narg < 1) error->all(FLERR,"Invalid atom_style body command"); @@ -120,11 +121,12 @@ void AtomVecBody::process_args(int narg, char **arg) icp = bptr->icp; dcp = bptr->dcp; - // max size of forward/border comm + // max size of forward/border and exchange comm // bptr values = max number of additional ivalues/dvalues from Body class size_forward_bonus += bptr->size_forward; size_border_bonus += bptr->size_border; + maxexchange = bptr->maxexchange; setup_fields(); } @@ -138,7 +140,11 @@ void AtomVecBody::process_args(int narg, char **arg) void AtomVecBody::grow(int n) { AtomVec::grow(n); + body = atom->body; + rmass = atom->rmass; + radius = atom->radius; + angmom = atom->angmom; } /* ---------------------------------------------------------------------- @@ -186,7 +192,7 @@ void AtomVecBody::copy_bonus(int i, int j, int delflag) void AtomVecBody::copy_bonus_all(int i, int j) { - atom->body[bonus[i].ilocal] = j; + body[bonus[i].ilocal] = j; memcpy(&bonus[j],&bonus[i],sizeof(Bonus)); } @@ -503,9 +509,9 @@ int AtomVecBody::unpack_restart_bonus(int ilocal, double *buf) void AtomVecBody::create_atom_post(int ilocal) { - atom->radius[ilocal] = 0.5; - atom->rmass[ilocal] = 1.0; - atom->body[ilocal] = -1; + radius[ilocal] = 0.5; + rmass[ilocal] = 1.0; + body[ilocal] = -1; } /* ---------------------------------------------------------------------- @@ -515,19 +521,19 @@ void AtomVecBody::create_atom_post(int ilocal) void AtomVecBody::data_atom_post(int ilocal) { - body_flag = atom->body[ilocal]; + body_flag = body[ilocal]; if (body_flag == 0) body_flag = -1; else if (body_flag == 1) body_flag = 0; else error->one(FLERR,"Invalid body flag in Atoms section of data file"); - atom->body[ilocal] = body_flag; + body[ilocal] = body_flag; - if (atom->rmass[ilocal] <= 0.0) + if (rmass[ilocal] <= 0.0) error->one(FLERR,"Invalid density in Atoms section of data file"); - atom->radius[ilocal] = 0.5; - atom->angmom[ilocal][0] = 0.0; - atom->angmom[ilocal][1] = 0.0; - atom->angmom[ilocal][2] = 0.0; + radius[ilocal] = 0.5; + angmom[ilocal][0] = 0.0; + angmom[ilocal][1] = 0.0; + angmom[ilocal][2] = 0.0; } /* ---------------------------------------------------------------------- @@ -537,12 +543,12 @@ void AtomVecBody::data_atom_post(int ilocal) void AtomVecBody::data_body(int m, int ninteger, int ndouble, int *ivalues, double *dvalues) { - if (atom->body[m]) + if (body[m]) error->one(FLERR,"Assigning body parameters to non-body atom"); if (nlocal_bonus == nmax_bonus) grow_bonus(); bonus[nlocal_bonus].ilocal = m; bptr->data_body(nlocal_bonus,ninteger,ndouble,ivalues,dvalues); - atom->body[m] = nlocal_bonus++; + body[m] = nlocal_bonus++; } /* ---------------------------------------------------------------------- @@ -570,10 +576,10 @@ bigint AtomVecBody::memory_usage_bonus() void AtomVecBody::pack_data_pre(int ilocal) { - body_flag = atom->body[ilocal]; + body_flag = body[ilocal]; - if (body_flag < 0) atom->body[ilocal] = 0; - else atom->body[ilocal] = 1; + if (body_flag < 0) body[ilocal] = 0; + else body[ilocal] = 1; } /* ---------------------------------------------------------------------- @@ -582,7 +588,7 @@ void AtomVecBody::pack_data_pre(int ilocal) void AtomVecBody::pack_data_post(int ilocal) { - atom->body[ilocal] = body_flag; + body[ilocal] = body_flag; } /* ---------------------------------------------------------------------- @@ -602,8 +608,8 @@ double AtomVecBody::radius_body(int ninteger, int ndouble, void AtomVecBody::set_quat(int m, double *quat_external) { - if (atom->body[m] < 0) error->one(FLERR,"Assigning quat to non-body atom"); - double *quat = bonus[atom->body[m]].quat; + if (body[m] < 0) error->one(FLERR,"Assigning quat to non-body atom"); + double *quat = bonus[body[m]].quat; quat[0] = quat_external[0]; quat[1] = quat_external[1]; quat[2] = quat_external[2]; quat[3] = quat_external[3]; } @@ -616,15 +622,15 @@ void AtomVecBody::set_quat(int m, double *quat_external) void AtomVecBody::check(int flag) { for (int i = 0; i < atom->nlocal; i++) { - if (atom->body[i] >= 0 && atom->body[i] >= nlocal_bonus) { + if (body[i] >= 0 && body[i] >= nlocal_bonus) { printf("Proc %d, step %ld, flag %d\n",comm->me,update->ntimestep,flag); errorx->one(FLERR,"BAD AAA"); } } for (int i = atom->nlocal; i < atom->nlocal+atom->nghost; i++) { - if (atom->body[i] >= 0 && - (atom->body[i] < nlocal_bonus || - atom->body[i] >= nlocal_bonus+nghost_bonus)) { + if (body[i] >= 0 && + (body[i] < nlocal_bonus || + body[i] >= nlocal_bonus+nghost_bonus)) { printf("Proc %d, step %ld, flag %d\n",comm->me,update->ntimestep,flag); errorx->one(FLERR,"BAD BBB"); } @@ -636,7 +642,7 @@ void AtomVecBody::check(int flag) } } for (int i = 0; i < nlocal_bonus; i++) { - if (atom->body[bonus[i].ilocal] != i) { + if (body[bonus[i].ilocal] != i) { printf("Proc %d, step %ld, flag %d\n",comm->me,update->ntimestep,flag); errorx->one(FLERR,"BAD DDD"); } @@ -649,7 +655,7 @@ void AtomVecBody::check(int flag) } } for (int i = nlocal_bonus; i < nlocal_bonus+nghost_bonus; i++) { - if (atom->body[bonus[i].ilocal] != i) { + if (body[bonus[i].ilocal] != i) { printf("Proc %d, step %ld, flag %d\n",comm->me,update->ntimestep,flag); errorx->one(FLERR,"BAD FFF"); } diff --git a/src/atom_vec_body.h b/src/atom_vec_body.h index 3f32c8223c..adfc7768eb 100644 --- a/src/atom_vec_body.h +++ b/src/atom_vec_body.h @@ -71,12 +71,14 @@ class AtomVecBody : public AtomVec { int nlocal_bonus; private: + int *body; + double *rmass,*radius; + double **angmom; + int nghost_bonus,nmax_bonus; int intdoubleratio; // sizeof(double) / sizeof(int) int body_flag; - int *body; - MyPoolChunk *icp; MyPoolChunk *dcp; diff --git a/src/atom_vec_ellipsoid.cpp b/src/atom_vec_ellipsoid.cpp index e8ab6d5613..2537fe2538 100644 --- a/src/atom_vec_ellipsoid.cpp +++ b/src/atom_vec_ellipsoid.cpp @@ -75,6 +75,17 @@ AtomVecEllipsoid::~AtomVecEllipsoid() memory->sfree(bonus); } +/* ---------------------------------------------------------------------- + set local copies of all grow ptrs used by this class, except defaults + needed in replicate when 2 atom classes exist and it calls pack_restart() +------------------------------------------------------------------------- */ + +void AtomVecEllipsoid::grow_pointers() +{ + ellipsoid = atom->ellipsoid; + rmass = atom->rmass; +} + /* ---------------------------------------------------------------------- grow bonus data structure ------------------------------------------------------------------------- */ @@ -95,8 +106,6 @@ void AtomVecEllipsoid::grow_bonus() void AtomVecEllipsoid::copy_bonus(int i, int j, int delflag) { - int *ellipsoid = atom->ellipsoid; - // if deleting atom J via delflag and J has bonus data, then delete it if (delflag && ellipsoid[j] >= 0) { @@ -118,7 +127,7 @@ void AtomVecEllipsoid::copy_bonus(int i, int j, int delflag) void AtomVecEllipsoid::copy_bonus_all(int i, int j) { - atom->ellipsoid[bonus[i].ilocal] = j; + ellipsoid[bonus[i].ilocal] = j; memcpy(&bonus[j],&bonus[i],sizeof(Bonus)); } @@ -143,8 +152,6 @@ int AtomVecEllipsoid::pack_comm_bonus(int n, int *list, double *buf) int i,j,m; double *quat; - int *ellipsoid = atom->ellipsoid; - m = 0; for (i = 0; i < n; i++) { j = list[i]; @@ -167,8 +174,6 @@ void AtomVecEllipsoid::unpack_comm_bonus(int n, int first, double *buf) int i,m,last; double *quat; - int *ellipsoid = atom->ellipsoid; - m = 0; last = first + n; for (i = first; i < last; i++) { @@ -190,8 +195,6 @@ int AtomVecEllipsoid::pack_border_bonus(int n, int *list, double *buf) double dx,dy,dz; double *shape,*quat; - int *ellipsoid = atom->ellipsoid; - m = 0; for (i = 0; i < n; i++) { j = list[i]; @@ -220,8 +223,6 @@ int AtomVecEllipsoid::unpack_border_bonus(int n, int first, double *buf) int i,j,m,last; double *shape,*quat; - int *ellipsoid = atom->ellipsoid; - m = 0; last = first + n; for (i = first; i < last; i++) { @@ -257,8 +258,6 @@ int AtomVecEllipsoid::pack_exchange_bonus(int i, double *buf) { int m = 0; - int *ellipsoid = atom->ellipsoid; - if (ellipsoid[i] < 0) buf[m++] = ubuf(0).d; else { buf[m++] = ubuf(1).d; @@ -283,8 +282,6 @@ int AtomVecEllipsoid::unpack_exchange_bonus(int ilocal, double *buf) { int m = 0; - int *ellipsoid = atom->ellipsoid; - ellipsoid[ilocal] = (int) ubuf(buf[m++]).i; if (ellipsoid[ilocal] == 0) ellipsoid[ilocal] = -1; else { @@ -314,8 +311,6 @@ int AtomVecEllipsoid::size_restart_bonus() { int i; - int *ellipsoid = atom->ellipsoid; - int n = 0; int nlocal = atom->nlocal; for (i = 0; i < nlocal; i++) { @@ -336,8 +331,6 @@ int AtomVecEllipsoid::pack_restart_bonus(int i, double *buf) { int m = 0; - int *ellipsoid = atom->ellipsoid; - if (ellipsoid[i] < 0) buf[m++] = ubuf(0).d; else { buf[m++] = ubuf(1).d; @@ -362,8 +355,6 @@ int AtomVecEllipsoid::unpack_restart_bonus(int ilocal, double *buf) { int m = 0; - int *ellipsoid = atom->ellipsoid; - ellipsoid[ilocal] = (int) ubuf(buf[m++]).i; if (ellipsoid[ilocal] == 0) ellipsoid[ilocal] = -1; else { @@ -390,8 +381,6 @@ int AtomVecEllipsoid::unpack_restart_bonus(int ilocal, double *buf) void AtomVecEllipsoid::data_atom_bonus(int m, char **values) { - int *ellipsoid = atom->ellipsoid; - if (ellipsoid[m]) error->one(FLERR,"Assigning ellipsoid parameters to non-ellipsoid atom"); @@ -414,7 +403,7 @@ void AtomVecEllipsoid::data_atom_bonus(int m, char **values) // reset ellipsoid mass // previously stored density in rmass - atom->rmass[m] *= 4.0*MY_PI/3.0 * shape[0]*shape[1]*shape[2]; + rmass[m] *= 4.0*MY_PI/3.0 * shape[0]*shape[1]*shape[2]; bonus[nlocal_bonus].ilocal = m; ellipsoid[m] = nlocal_bonus++; @@ -437,8 +426,8 @@ bigint AtomVecEllipsoid::memory_usage_bonus() void AtomVecEllipsoid::create_atom_post(int ilocal) { - atom->rmass[ilocal] = 1.0; - atom->ellipsoid[ilocal] = -1; + rmass[ilocal] = 1.0; + ellipsoid[ilocal] = -1; } /* ---------------------------------------------------------------------- @@ -448,13 +437,13 @@ void AtomVecEllipsoid::create_atom_post(int ilocal) void AtomVecEllipsoid::data_atom_post(int ilocal) { - ellipsoid_flag = atom->ellipsoid[ilocal]; + ellipsoid_flag = ellipsoid[ilocal]; if (ellipsoid_flag == 0) ellipsoid_flag = -1; else if (ellipsoid_flag == 1) ellipsoid_flag = 0; else error->one(FLERR,"Invalid ellipsoid flag in Atoms section of data file"); - atom->ellipsoid[ilocal] = ellipsoid_flag; + ellipsoid[ilocal] = ellipsoid_flag; - if (atom->rmass[ilocal] <= 0.0) + if (rmass[ilocal] <= 0.0) error->one(FLERR,"Invalid density in Atoms section of data file"); } @@ -467,14 +456,14 @@ void AtomVecEllipsoid::pack_data_pre(int ilocal) double *shape; ellipsoid_flag = atom->ellipsoid[ilocal]; - rmass = atom->rmass[ilocal]; + rmass_one = atom->rmass[ilocal]; - if (ellipsoid_flag < 0) atom->ellipsoid[ilocal] = 0; - else atom->ellipsoid[ilocal] = 1; + if (ellipsoid_flag < 0) ellipsoid[ilocal] = 0; + else ellipsoid[ilocal] = 1; if (ellipsoid_flag >= 0) { shape = bonus[ellipsoid_flag].shape; - atom->rmass[ilocal] /= 4.0*MY_PI/3.0 * shape[0]*shape[1]*shape[2]; + rmass[ilocal] /= 4.0*MY_PI/3.0 * shape[0]*shape[1]*shape[2]; } } @@ -484,8 +473,8 @@ void AtomVecEllipsoid::pack_data_pre(int ilocal) void AtomVecEllipsoid::pack_data_post(int ilocal) { - atom->ellipsoid[ilocal] = ellipsoid_flag; - atom->rmass[ilocal] = rmass; + ellipsoid[ilocal] = ellipsoid_flag; + rmass[ilocal] = rmass_one; } /* ---------------------------------------------------------------------- @@ -497,8 +486,6 @@ void AtomVecEllipsoid::pack_data_post(int ilocal) void AtomVecEllipsoid:: set_shape(int i, double shapex, double shapey, double shapez) { - int *ellipsoid = atom->ellipsoid; - if (ellipsoid[i] < 0) { if (shapex == 0.0 && shapey == 0.0 && shapez == 0.0) return; if (nlocal_bonus == nmax_bonus) grow_bonus(); diff --git a/src/atom_vec_ellipsoid.h b/src/atom_vec_ellipsoid.h index 79d17a2206..bbf3922bb3 100644 --- a/src/atom_vec_ellipsoid.h +++ b/src/atom_vec_ellipsoid.h @@ -36,6 +36,7 @@ class AtomVecEllipsoid : public AtomVec { AtomVecEllipsoid(class LAMMPS *); ~AtomVecEllipsoid(); + void grow_pointers(); void copy_bonus(int, int, int); void clear_bonus(); int pack_comm_bonus(int, int *, double *); @@ -62,9 +63,12 @@ class AtomVecEllipsoid : public AtomVec { int nlocal_bonus; private: + int *ellipsoid; + double *rmass; + int nghost_bonus,nmax_bonus; int ellipsoid_flag; - double rmass; + double rmass_one; void grow_bonus(); void copy_bonus_all(int, int); diff --git a/src/atom_vec_hybrid.cpp b/src/atom_vec_hybrid.cpp index 9a79f66972..d1166e5a8e 100644 --- a/src/atom_vec_hybrid.cpp +++ b/src/atom_vec_hybrid.cpp @@ -36,7 +36,6 @@ AtomVecHybrid::AtomVecHybrid(LAMMPS *lmp) : AtomVec(lmp) // NOTE: set bonus_flag if any substyle does // set nstyles_bonus, styles_bonus - // NOTE: call method in each sub-style to set q_flag ?? // these strings will be concatenated from sub-style strings // fields_data_atom & fields_data_vel start with fields common to all styles @@ -124,8 +123,8 @@ void AtomVecHybrid::process_args(int narg, char **arg) for (int k = 0; k < nstyles; k++) { if ((styles[k]->molecular == 1 && molecular == 2) || (styles[k]->molecular == 2 && molecular == 1)) - error->all(FLERR,"Cannot mix molecular and molecule template " - "atom styles"); + error->all(FLERR, + "Cannot mix molecular and molecule template atom styles"); molecular = MAX(molecular,styles[k]->molecular); bonds_allow = MAX(bonds_allow,styles[k]->bonds_allow); @@ -135,11 +134,9 @@ void AtomVecHybrid::process_args(int narg, char **arg) mass_type = MAX(mass_type,styles[k]->mass_type); dipole_type = MAX(dipole_type,styles[k]->dipole_type); forceclearflag = MAX(forceclearflag,styles[k]->forceclearflag); + maxexchange += styles[k]->maxexchange; if (styles[k]->molecular == 2) onemols = styles[k]->onemols; - - // NOTE: need to sum this one? - maxexchange += styles[k]->maxexchange; } // issue a warning if both per-type mass and per-atom rmass are defined @@ -237,6 +234,13 @@ void AtomVecHybrid::init() /* ---------------------------------------------------------------------- */ +void AtomVecHybrid::grow_pointers() +{ + for (int k = 0; k < nstyles; k++) styles[k]->grow_pointers(); +} + +/* ---------------------------------------------------------------------- */ + void AtomVecHybrid::force_clear(int n, size_t nbytes) { for (int k = 0; k < nstyles; k++) diff --git a/src/atom_vec_hybrid.h b/src/atom_vec_hybrid.h index 7d838b7a7f..7d8e45c579 100644 --- a/src/atom_vec_hybrid.h +++ b/src/atom_vec_hybrid.h @@ -34,8 +34,9 @@ class AtomVecHybrid : public AtomVec { ~AtomVecHybrid(); void process_args(int, char **); void init(); - void force_clear(int, size_t); + void grow_pointers(); + void force_clear(int, size_t); void copy_bonus(int, int, int); void clear_bonus() {} int pack_comm_bonus(int, int *, double *); diff --git a/src/atom_vec_line.cpp b/src/atom_vec_line.cpp index 7ab697b349..e178d1f78a 100644 --- a/src/atom_vec_line.cpp +++ b/src/atom_vec_line.cpp @@ -86,6 +86,19 @@ void AtomVecLine::init() error->all(FLERR,"Atom_style line can only be used in 2d simulations"); } +/* ---------------------------------------------------------------------- + set local copies of all grow ptrs used by this class, except defaults + needed in replicate when 2 atom classes exist and it calls pack_restart() +------------------------------------------------------------------------- */ + +void AtomVecLine::grow_pointers() +{ + line = atom->line; + radius = atom->radius; + rmass = atom->rmass; + omega = atom->omega; +} + /* ---------------------------------------------------------------------- grow bonus data structure ------------------------------------------------------------------------- */ @@ -106,8 +119,6 @@ void AtomVecLine::grow_bonus() void AtomVecLine::copy_bonus(int i, int j, int delflag) { - int *line = atom->line; - // if deleting atom J via delflag and J has bonus data, then delete it if (delflag && line[j] >= 0) { @@ -129,7 +140,7 @@ void AtomVecLine::copy_bonus(int i, int j, int delflag) void AtomVecLine::copy_bonus_all(int i, int j) { - atom->line[bonus[i].ilocal] = j; + line[bonus[i].ilocal] = j; memcpy(&bonus[j],&bonus[i],sizeof(Bonus)); } @@ -153,8 +164,6 @@ int AtomVecLine::pack_comm_bonus(int n, int *list, double *buf) { int i,j,m; - int *line = atom->line; - m = 0; for (i = 0; i < n; i++) { j = list[i]; @@ -170,8 +179,6 @@ void AtomVecLine::unpack_comm_bonus(int n, int first, double *buf) { int i,m,last; - int *line = atom->line; - m = 0; last = first + n; for (i = first; i < last; i++) { @@ -185,8 +192,6 @@ int AtomVecLine::pack_border_bonus(int n, int *list, double *buf) { int i,j,m; - int *line = atom->line; - m = 0; for (i = 0; i < n; i++) { j = list[i]; @@ -207,8 +212,6 @@ int AtomVecLine::unpack_border_bonus(int n, int first, double *buf) { int i,j,m,last; - int *line = atom->line; - m = 0; last = first + n; for (i = first; i < last; i++) { @@ -237,8 +240,6 @@ int AtomVecLine::pack_exchange_bonus(int i, double *buf) { int m = 0; - int *line = atom->line; - if (line[i] < 0) buf[m++] = ubuf(0).d; else { buf[m++] = ubuf(1).d; @@ -256,8 +257,6 @@ int AtomVecLine::unpack_exchange_bonus(int ilocal, double *buf) { int m = 0; - int *line = atom->line; - line[ilocal] = (int) ubuf(buf[m++]).i; if (line[ilocal] == 0) line[ilocal] = -1; else { @@ -280,8 +279,6 @@ int AtomVecLine::size_restart_bonus() { int i; - int *line = atom->line; - int n = 0; int nlocal = atom->nlocal; for (i = 0; i < nlocal; i++) { @@ -302,8 +299,6 @@ int AtomVecLine::pack_restart_bonus(int i, double *buf) { int m = 0; - int *line = atom->line; - if (line[i] < 0) buf[m++] = ubuf(0).d; else { buf[m++] = ubuf(1).d; @@ -323,8 +318,6 @@ int AtomVecLine::unpack_restart_bonus(int ilocal, double *buf) { int m = 0; - int *line = atom->line; - line[ilocal] = (int) ubuf(buf[m++]).i; if (line[ilocal] == 0) line[ilocal] = -1; else { @@ -344,8 +337,6 @@ int AtomVecLine::unpack_restart_bonus(int ilocal, double *buf) void AtomVecLine::data_atom_bonus(int m, char **values) { - int *line = atom->line; - if (line[m]) error->one(FLERR,"Assigning line parameters to non-line atom"); if (nlocal_bonus == nmax_bonus) grow_bonus(); @@ -377,8 +368,8 @@ void AtomVecLine::data_atom_bonus(int m, char **values) // reset line radius and mass // rmass currently holds density - atom->radius[m] = 0.5 * length; - atom->rmass[m] *= length; + radius[m] = 0.5 * length; + rmass[m] *= length; bonus[nlocal_bonus].ilocal = m; line[m] = nlocal_bonus++; @@ -402,10 +393,10 @@ bigint AtomVecLine::memory_usage_bonus() void AtomVecLine::create_atom_post(int ilocal) { - double radius = 0.5; - atom->radius[ilocal] = radius; - atom->rmass[ilocal] = 4.0*MY_PI/3.0 * radius*radius*radius; - atom->line[ilocal] = -1; + double radius_one = 0.5; + radius[ilocal] = radius_one; + rmass[ilocal] = 4.0*MY_PI/3.0 * radius_one*radius_one*radius_one; + line[ilocal] = -1; } /* ---------------------------------------------------------------------- @@ -415,24 +406,24 @@ void AtomVecLine::create_atom_post(int ilocal) void AtomVecLine::data_atom_post(int ilocal) { - line_flag = atom->line[ilocal]; + line_flag = line[ilocal]; if (line_flag == 0) line_flag = -1; else if (line_flag == 1) line_flag = 0; else error->one(FLERR,"Invalid line flag in Atoms section of data file"); - atom->line[ilocal] = line_flag; + line[ilocal] = line_flag; - if (atom->rmass[ilocal] <= 0.0) + if (rmass[ilocal] <= 0.0) error->one(FLERR,"Invalid density in Atoms section of data file"); if (line_flag < 0) { - double radius = 0.5; - atom->radius[ilocal] = radius; - atom->rmass[ilocal] *= 4.0*MY_PI/3.0 * radius*radius*radius; - } else atom->radius[ilocal] = 0.0; - - atom->omega[ilocal][0] = 0.0; - atom->omega[ilocal][1] = 0.0; - atom->omega[ilocal][2] = 0.0; + double radius_one = 0.5; + radius[ilocal] = radius_one; + rmass[ilocal] *= 4.0*MY_PI/3.0 * radius_one*radius_one*radius_one; + } else radius[ilocal] = 0.0; + + omega[ilocal][0] = 0.0; + omega[ilocal][1] = 0.0; + omega[ilocal][2] = 0.0; } /* ---------------------------------------------------------------------- @@ -441,16 +432,16 @@ void AtomVecLine::data_atom_post(int ilocal) void AtomVecLine::pack_data_pre(int ilocal) { - line_flag = atom->line[ilocal]; - rmass = atom->rmass[ilocal]; + line_flag = line[ilocal]; + rmass_one = rmass[ilocal]; - if (line_flag < 0) atom->line[ilocal] = 0; - else atom->line[ilocal] = 1; + if (line_flag < 0) line[ilocal] = 0; + else line[ilocal] = 1; if (line_flag < 0) { - double radius = atom->radius[ilocal]; - atom->rmass[ilocal] /= 4.0*MY_PI/3.0 * radius*radius*radius; - } else atom->rmass[ilocal] /= bonus[line_flag].length; + double radius_one = radius[ilocal]; + rmass[ilocal] /= 4.0*MY_PI/3.0 * radius_one*radius_one*radius_one; + } else rmass[ilocal] /= bonus[line_flag].length; } /* ---------------------------------------------------------------------- @@ -459,8 +450,8 @@ void AtomVecLine::pack_data_pre(int ilocal) void AtomVecLine::pack_data_post(int ilocal) { - atom->line[ilocal] = line_flag; - atom->rmass[ilocal] = rmass; + line[ilocal] = line_flag; + rmass[ilocal] = rmass_one; } /* ---------------------------------------------------------------------- @@ -471,8 +462,6 @@ void AtomVecLine::pack_data_post(int ilocal) void AtomVecLine::set_length(int i, double value) { - int *line = atom->line; - if (line[i] < 0) { if (value == 0.0) return; if (nlocal_bonus == nmax_bonus) grow_bonus(); @@ -489,8 +478,8 @@ void AtomVecLine::set_length(int i, double value) // also set radius = half of length // unless value = 0.0, then set diameter = 1.0 - atom->radius[i] = 0.5 * value; - if (value == 0.0) atom->radius[i] = 0.5; + radius[i] = 0.5 * value; + if (value == 0.0) radius[i] = 0.5; } /* ---------------------------------------------------------------------- diff --git a/src/atom_vec_line.h b/src/atom_vec_line.h index a47843f4f2..7bca58c64b 100644 --- a/src/atom_vec_line.h +++ b/src/atom_vec_line.h @@ -36,6 +36,7 @@ class AtomVecLine : public AtomVec { ~AtomVecLine(); void init(); + void grow_pointers(); void copy_bonus(int, int, int); void clear_bonus(); int pack_comm_bonus(int, int *, double *); @@ -62,9 +63,13 @@ class AtomVecLine : public AtomVec { int nlocal_bonus; private: + int *line; + double *radius,*rmass; + double **omega; + int nghost_bonus,nmax_bonus; int line_flag; - double rmass; + double rmass_one; void grow_bonus(); void copy_bonus_all(int, int); diff --git a/src/atom_vec_sphere.cpp b/src/atom_vec_sphere.cpp index b601fc8f7c..64a198c94d 100644 --- a/src/atom_vec_sphere.cpp +++ b/src/atom_vec_sphere.cpp @@ -100,14 +100,25 @@ void AtomVecSphere::init() } } +/* ---------------------------------------------------------------------- + set local copies of all grow ptrs used by this class, except defaults + needed in replicate when 2 atom classes exist and it calls pack_restart() +------------------------------------------------------------------------- */ + +void AtomVecSphere::grow_pointers() +{ + radius = atom->radius; + rmass = atom->rmass; +} + /* ---------------------------------------------------------------------- initialize non-zero atom quantities ------------------------------------------------------------------------- */ void AtomVecSphere::create_atom_post(int ilocal) { - atom->radius[ilocal] = 0.5; - atom->rmass[ilocal] = 4.0*MY_PI/3.0 * 0.5*0.5*0.5; + radius[ilocal] = 0.5; + rmass[ilocal] = 4.0*MY_PI/3.0 * 0.5*0.5*0.5; } /* ---------------------------------------------------------------------- @@ -117,13 +128,12 @@ void AtomVecSphere::create_atom_post(int ilocal) void AtomVecSphere::data_atom_post(int ilocal) { - double radius = 0.5 * atom->radius[ilocal]; - atom->radius[ilocal] = radius; - if (radius > 0.0) - atom->rmass[ilocal] = - 4.0*MY_PI/3.0 * radius*radius*radius * atom->rmass[ilocal]; + radius_one = 0.5 * atom->radius[ilocal]; + radius[ilocal] = radius_one; + if (radius_one > 0.0) + rmass[ilocal] *= 4.0*MY_PI/3.0 * radius_one*radius_one*radius_one; - if (atom->rmass[ilocal] <= 0.0) + if (rmass[ilocal] <= 0.0) error->one(FLERR,"Invalid density in Atoms section of data file"); } @@ -132,13 +142,14 @@ void AtomVecSphere::data_atom_post(int ilocal) ------------------------------------------------------------------------- */ void AtomVecSphere::pack_data_pre(int ilocal) -{ - radius = atom->radius[ilocal]; - rmass = atom->rmass[ilocal]; +{ + radius_one = radius[ilocal]; + rmass_one = rmass[ilocal]; - atom->radius[ilocal] *= 2.0; - if (radius == 0.0) - atom->rmass[ilocal] = rmass / (4.0*MY_PI/3.0 * radius*radius*radius); + radius[ilocal] *= 2.0; + if (radius_one!= 0.0) + rmass[ilocal] = + rmass_one / (4.0*MY_PI/3.0 * radius_one*radius_one*radius_one); } /* ---------------------------------------------------------------------- @@ -146,7 +157,7 @@ void AtomVecSphere::pack_data_pre(int ilocal) ------------------------------------------------------------------------- */ void AtomVecSphere::pack_data_post(int ilocal) -{ - atom->radius[ilocal] = radius; - atom->rmass[ilocal] = rmass; +{ + radius[ilocal] = radius_one; + rmass[ilocal] = rmass_one; } diff --git a/src/atom_vec_sphere.h b/src/atom_vec_sphere.h index c205ba43de..2b735f1163 100644 --- a/src/atom_vec_sphere.h +++ b/src/atom_vec_sphere.h @@ -29,14 +29,18 @@ class AtomVecSphere : public AtomVec { AtomVecSphere(class LAMMPS *); void process_args(int, char **); void init(); + + void grow_pointers(); void create_atom_post(int); void data_atom_post(int); void pack_data_pre(int); void pack_data_post(int); private: + double *radius,*rmass; + int radvary; - double radius,rmass; + double radius_one,rmass_one; }; } diff --git a/src/atom_vec_tri.cpp b/src/atom_vec_tri.cpp index 7345646a1e..b130198075 100644 --- a/src/atom_vec_tri.cpp +++ b/src/atom_vec_tri.cpp @@ -88,6 +88,20 @@ void AtomVecTri::init() error->all(FLERR,"Atom_style tri can only be used in 3d simulations"); } +/* ---------------------------------------------------------------------- + set local copies of all grow ptrs used by this class, except defaults + needed in replicate when 2 atom classes exist and it calls pack_restart() +------------------------------------------------------------------------- */ + +void AtomVecTri::grow_pointers() +{ + tri = atom->tri; + radius = atom->radius; + rmass = atom->rmass; + omega = atom->omega; + angmom = atom->angmom; +} + /* ---------------------------------------------------------------------- grow bonus data structure ------------------------------------------------------------------------- */ @@ -109,8 +123,6 @@ void AtomVecTri::grow_bonus() void AtomVecTri::copy_bonus(int i, int j, int delflag) { - int *tri = atom->tri; - // if deleting atom J via delflag and J has bonus data, then delete it if (delflag && tri[j] >= 0) { @@ -132,7 +144,7 @@ void AtomVecTri::copy_bonus(int i, int j, int delflag) void AtomVecTri::copy_bonus_all(int i, int j) { - atom->tri[bonus[i].ilocal] = j; + tri[bonus[i].ilocal] = j; memcpy(&bonus[j],&bonus[i],sizeof(Bonus)); } @@ -157,8 +169,6 @@ int AtomVecTri::pack_comm_bonus(int n, int *list, double *buf) int i,j,m; double *quat; - int *tri = atom->tri; - m = 0; for (i = 0; i < n; i++) { j = list[i]; @@ -181,8 +191,6 @@ void AtomVecTri::unpack_comm_bonus(int n, int first, double *buf) int i,m,last; double *quat; - int *tri = atom->tri; - m = 0; last = first + n; for (i = first; i < last; i++) { @@ -203,8 +211,6 @@ int AtomVecTri::pack_border_bonus(int n, int *list, double *buf) int i,j,m; double *quat,*c1,*c2,*c3,*inertia; - int *tri = atom->tri; - m = 0; for (i = 0; i < n; i++) { j = list[i]; @@ -245,8 +251,6 @@ int AtomVecTri::unpack_border_bonus(int n, int first, double *buf) int i,j,m,last; double *quat,*c1,*c2,*c3,*inertia; - int *tri = atom->tri; - m = 0; last = first + n; for (i = first; i < last; i++) { @@ -294,8 +298,6 @@ int AtomVecTri::pack_exchange_bonus(int i, double *buf) { int m = 0; - int *tri = atom->tri; - if (tri[i] < 0) buf[m++] = ubuf(0).d; else { buf[m++] = ubuf(1).d; @@ -332,8 +334,6 @@ int AtomVecTri::unpack_exchange_bonus(int ilocal, double *buf) { int m = 0; - int *tri = atom->tri; - tri[ilocal] = (int) ubuf(buf[m++]).i; if (tri[ilocal] == 0) tri[ilocal] = -1; else { @@ -375,8 +375,6 @@ int AtomVecTri::size_restart_bonus() { int i; - int *tri = atom->tri; - int n = 0; int nlocal = atom->nlocal; for (i = 0; i < nlocal; i++) { @@ -395,8 +393,6 @@ int AtomVecTri::pack_restart_bonus(int i, double *buf) { int m = 0; - int *tri = atom->tri; - if (tri[i] < 0) buf[m++] = ubuf(0).d; else { buf[m++] = ubuf(1).d; @@ -435,8 +431,6 @@ int AtomVecTri::unpack_restart_bonus(int ilocal, double *buf) { int m = 0; - int *tri = atom->tri; - tri[ilocal] = (int) ubuf(buf[m++]).i; if (tri[ilocal] == 0) tri[ilocal] = -1; else { @@ -475,8 +469,6 @@ int AtomVecTri::unpack_restart_bonus(int ilocal, double *buf) void AtomVecTri::data_atom_bonus(int m, char **values) { - int *tri = atom->tri; - if (tri[m]) error->one(FLERR,"Assigning tri parameters to non-tri atom"); if (nlocal_bonus == nmax_bonus) grow_bonus(); @@ -523,9 +515,9 @@ void AtomVecTri::data_atom_bonus(int m, char **values) if (delta/size > EPSILON) error->one(FLERR,"Inconsistent triangle in data file"); - atom->x[m][0] = centroid[0]; - atom->x[m][1] = centroid[1]; - atom->x[m][2] = centroid[2]; + x[m][0] = centroid[0]; + x[m][1] = centroid[1]; + x[m][2] = centroid[2]; // reset tri radius and mass // rmass currently holds density @@ -533,22 +525,22 @@ void AtomVecTri::data_atom_bonus(int m, char **values) double c4[3]; MathExtra::sub3(c1,centroid,c4); - atom->radius[m] = MathExtra::lensq3(c4); + radius[m] = MathExtra::lensq3(c4); MathExtra::sub3(c2,centroid,c4); - atom->radius[m] = MAX(atom->radius[m],MathExtra::lensq3(c4)); + radius[m] = MAX(radius[m],MathExtra::lensq3(c4)); MathExtra::sub3(c3,centroid,c4); - atom->radius[m] = MAX(atom->radius[m],MathExtra::lensq3(c4)); - atom->radius[m] = sqrt(atom->radius[m]); + radius[m] = MAX(radius[m],MathExtra::lensq3(c4)); + radius[m] = sqrt(radius[m]); double norm[3]; MathExtra::cross3(c2mc1,c3mc1,norm); double area = 0.5 * MathExtra::len3(norm); - atom->rmass[m] *= area; + rmass[m] *= area; // inertia = inertia tensor of triangle as 6-vector in Voigt notation double inertia[6]; - MathExtra::inertia_triangle(c1,c2,c3,atom->rmass[m],inertia); + MathExtra::inertia_triangle(c1,c2,c3,rmass[m],inertia); // diagonalize inertia tensor via Jacobi rotations // bonus[].inertia = 3 eigenvalues = principal moments of inertia @@ -622,10 +614,10 @@ bigint AtomVecTri::memory_usage_bonus() void AtomVecTri::create_atom_post(int ilocal) { - double radius = 0.5; - atom->radius[ilocal] = radius; - atom->rmass[ilocal] = 4.0*MY_PI/3.0 * radius*radius*radius; - atom->tri[ilocal] = -1; + double radius_one = 0.5; + radius[ilocal] = radius_one; + rmass[ilocal] = 4.0*MY_PI/3.0 * radius_one*radius_one*radius_one; + tri[ilocal] = -1; } /* ---------------------------------------------------------------------- @@ -635,27 +627,27 @@ void AtomVecTri::create_atom_post(int ilocal) void AtomVecTri::data_atom_post(int ilocal) { - tri_flag = atom->tri[ilocal]; + tri_flag = tri[ilocal]; if (tri_flag == 0) tri_flag = -1; else if (tri_flag == 1) tri_flag = 0; else error->one(FLERR,"Invalid tri flag in Atoms section of data file"); - atom->tri[ilocal] = tri_flag; + tri[ilocal] = tri_flag; - if (atom->rmass[ilocal] <= 0.0) + if (rmass[ilocal] <= 0.0) error->one(FLERR,"Invalid density in Atoms section of data file"); if (tri_flag < 0) { - double radius = 0.5; - atom->radius[ilocal] = radius; - atom->rmass[ilocal] *= 4.0*MY_PI/3.0 * radius*radius*radius; - } else atom->radius[ilocal] = 0.0; - - atom->omega[ilocal][0] = 0.0; - atom->omega[ilocal][1] = 0.0; - atom->omega[ilocal][2] = 0.0; - atom->angmom[ilocal][0] = 0.0; - atom->angmom[ilocal][1] = 0.0; - atom->angmom[ilocal][2] = 0.0; + double radius_one = 0.5; + radius[ilocal] = radius_one; + rmass[ilocal] *= 4.0*MY_PI/3.0 * radius_one*radius_one*radius_one; + } else radius[ilocal] = 0.0; + + omega[ilocal][0] = 0.0; + omega[ilocal][1] = 0.0; + omega[ilocal][2] = 0.0; + angmom[ilocal][0] = 0.0; + angmom[ilocal][1] = 0.0; + angmom[ilocal][2] = 0.0; } /* ---------------------------------------------------------------------- @@ -664,22 +656,22 @@ void AtomVecTri::data_atom_post(int ilocal) void AtomVecTri::pack_data_pre(int ilocal) { - tri_flag = atom->tri[ilocal]; - rmass = atom->rmass[ilocal]; + tri_flag = tri[ilocal]; + rmass_one = rmass[ilocal]; - if (tri_flag < 0) atom->tri[ilocal] = 0; - else atom->tri[ilocal] = 1; + if (tri_flag < 0) tri[ilocal] = 0; + else tri[ilocal] = 1; if (tri_flag < 0) { - double radius = atom->radius[ilocal]; - atom->rmass[ilocal] /= 4.0*MY_PI/3.0 * radius*radius*radius; + double radius_one = radius[ilocal]; + rmass[ilocal] /= 4.0*MY_PI/3.0 * radius_one*radius_one*radius_one; } else { double c2mc1[3],c3mc1[3],norm[3]; MathExtra::sub3(bonus[tri_flag].c2,bonus[tri_flag].c1,c2mc1); MathExtra::sub3(bonus[tri_flag].c3,bonus[tri_flag].c1,c3mc1); MathExtra::cross3(c2mc1,c3mc1,norm); double area = 0.5 * MathExtra::len3(norm); - atom->rmass[ilocal] /= area; + rmass[ilocal] /= area; } } @@ -689,8 +681,8 @@ void AtomVecTri::pack_data_pre(int ilocal) void AtomVecTri::pack_data_post(int ilocal) { - atom->tri[ilocal] = tri_flag; - atom->rmass[ilocal] = rmass; + tri[ilocal] = tri_flag; + rmass[ilocal] = rmass_one; } /* ---------------------------------------------------------------------- @@ -704,8 +696,6 @@ void AtomVecTri::set_equilateral(int i, double size) // also set radius = distance from center to corner-pt = len(c1) // unless size = 0.0, then set diameter = 1.0 - int *tri = atom->tri; - if (tri[i] < 0) { if (size == 0.0) return; if (nlocal_bonus == nmax_bonus) grow_bonus(); @@ -730,11 +720,11 @@ void AtomVecTri::set_equilateral(int i, double size) inertia[0] = sqrt(3.0)/96.0 * size*size*size*size; inertia[1] = sqrt(3.0)/96.0 * size*size*size*size; inertia[2] = sqrt(3.0)/48.0 * size*size*size*size; - atom->radius[i] = MathExtra::len3(c1); + radius[i] = MathExtra::len3(c1); bonus[nlocal_bonus].ilocal = i; tri[i] = nlocal_bonus++; } else if (size == 0.0) { - atom->radius[i] = 0.5; + radius[i] = 0.5; copy_bonus_all(nlocal_bonus-1,tri[i]); nlocal_bonus--; tri[i] = -1; @@ -755,6 +745,6 @@ void AtomVecTri::set_equilateral(int i, double size) inertia[0] = sqrt(3.0)/96.0 * size*size*size*size; inertia[1] = sqrt(3.0)/96.0 * size*size*size*size; inertia[2] = sqrt(3.0)/48.0 * size*size*size*size; - atom->radius[i] = MathExtra::len3(c1); + radius[i] = MathExtra::len3(c1); } } diff --git a/src/atom_vec_tri.h b/src/atom_vec_tri.h index ad4c0103ca..0b16285fe6 100644 --- a/src/atom_vec_tri.h +++ b/src/atom_vec_tri.h @@ -38,6 +38,7 @@ class AtomVecTri : public AtomVec { ~AtomVecTri(); void init(); + void grow_pointers(); void copy_bonus(int, int, int); void clear_bonus(); int pack_comm_bonus(int, int *, double *); @@ -64,9 +65,13 @@ class AtomVecTri : public AtomVec { int nlocal_bonus; private: + int *tri; + double *radius,*rmass; + double **omega,**angmom; + int nghost_bonus,nmax_bonus; int tri_flag; - double rmass; + double rmass_one; void grow_bonus(); void copy_bonus_all(int, int); diff --git a/src/replicate.cpp b/src/replicate.cpp index 3659f7cf7a..26b61769b0 100644 --- a/src/replicate.cpp +++ b/src/replicate.cpp @@ -100,7 +100,8 @@ void Replicate::command(int narg, char **arg) maxmol = maxmol_all; } - // check image flags maximum extent; only efficient small image flags compared to new system + // check image flags maximum extent + // only efficient small image flags compared to new system int _imagelo[3], _imagehi[3]; _imagelo[0] = 0; -- GitLab From ccc8f29d60cabd9971c7db62b9db1e84b95d6aa8 Mon Sep 17 00:00:00 2001 From: Steve Plimpton Date: Wed, 18 Dec 2019 12:04:37 -0700 Subject: [PATCH 015/717] added support for USER-AWPMD package --- src/USER-AWPMD/atom_vec_wavepacket.cpp | 25 +++++++++++------ src/USER-AWPMD/atom_vec_wavepacket.h | 6 ++++ src/USER-AWPMD/pair_awpmd_cut.cpp | 26 +++++++++--------- src/USER-SMD/atom_vec_smd.cpp | 2 +- src/atom.cpp | 8 +++--- src/atom.h | 6 ++-- src/atom_vec.cpp | 7 ++--- src/atom_vec_body.cpp | 9 ++---- src/atom_vec_body.h | 2 +- src/atom_vec_hybrid.cpp | 38 ++++++++++++++++++++++---- src/atom_vec_hybrid.h | 3 +- 11 files changed, 86 insertions(+), 46 deletions(-) diff --git a/src/USER-AWPMD/atom_vec_wavepacket.cpp b/src/USER-AWPMD/atom_vec_wavepacket.cpp index d643ae8e0a..c71a3cb6c2 100644 --- a/src/USER-AWPMD/atom_vec_wavepacket.cpp +++ b/src/USER-AWPMD/atom_vec_wavepacket.cpp @@ -61,6 +61,20 @@ AtomVecWavepacket::AtomVecWavepacket(LAMMPS *lmp) : AtomVec(lmp) setup_fields(); } +/* ---------------------------------------------------------------------- + set local copies of all grow ptrs used by this class, except defaults + needed in replicate when 2 atom classes exist and it calls pack_restart() +------------------------------------------------------------------------- */ + +void AtomVecWavepacket::grow_pointers() +{ + q = atom->q; + spin = atom->spin; + eradius = atom->eradius; + ervel = atom->ervel; + erforce = atom->erforce; +} + /* ---------------------------------------------------------------------- clear extra forces starting at atom N nbytes = # of bytes to clear for a per-atom vector @@ -68,7 +82,7 @@ AtomVecWavepacket::AtomVecWavepacket(LAMMPS *lmp) : AtomVec(lmp) void AtomVecWavepacket::force_clear(int n, size_t nbytes) { - memset(&atom->erforce[n],0,nbytes); + memset(&erforce[n],0,nbytes); } /* ---------------------------------------------------------------------- @@ -78,7 +92,7 @@ void AtomVecWavepacket::force_clear(int n, size_t nbytes) void AtomVecWavepacket::create_atom_post(int ilocal) { - atom->q[ilocal] = 1.0; + q[ilocal] = 1.0; } /* ---------------------------------------------------------------------- @@ -88,7 +102,7 @@ void AtomVecWavepacket::create_atom_post(int ilocal) void AtomVecWavepacket::data_atom_post(int ilocal) { - atom->ervel[ilocal] = 0.0; + ervel[ilocal] = 0.0; } /* ---------------------------------------------------------------------- @@ -113,33 +127,28 @@ int AtomVecWavepacket::property_atom(char *name) void AtomVecWavepacket::pack_property_atom(int index, double *buf, int nvalues, int groupbit) { - int *mask = atom->mask; int nlocal = atom->nlocal; int n = 0; if (index == 0) { - int *spin = atom->spin; for (int i = 0; i < nlocal; i++) { if (mask[i] & groupbit) buf[n] = spin[i]; else buf[n] = 0.0; n += nvalues; } } else if (index == 1) { - double *eradius = atom->eradius; for (int i = 0; i < nlocal; i++) { if (mask[i] & groupbit) buf[n] = eradius[i]; else buf[n] = 0.0; n += nvalues; } } else if (index == 2) { - double *ervel = atom->ervel; for (int i = 0; i < nlocal; i++) { if (mask[i] & groupbit) buf[n] = ervel[i]; else buf[n] = 0.0; n += nvalues; } } else if (index == 3) { - double *erforce = atom->erforce; for (int i = 0; i < nlocal; i++) { if (mask[i] & groupbit) buf[n] = erforce[i]; else buf[n] = 0.0; diff --git a/src/USER-AWPMD/atom_vec_wavepacket.h b/src/USER-AWPMD/atom_vec_wavepacket.h index e7db15db14..123414eeb7 100644 --- a/src/USER-AWPMD/atom_vec_wavepacket.h +++ b/src/USER-AWPMD/atom_vec_wavepacket.h @@ -27,11 +27,17 @@ namespace LAMMPS_NS { class AtomVecWavepacket : public AtomVec { public: AtomVecWavepacket(class LAMMPS *); + + void grow_pointers(); void force_clear(int, size_t); void create_atom_post(int); void data_atom_post(int); int property_atom(char *); void pack_property_atom(int, double *, int, int); + + private: + int *spin; + double *q,*eradius,*ervel,*erforce; }; } diff --git a/src/USER-AWPMD/pair_awpmd_cut.cpp b/src/USER-AWPMD/pair_awpmd_cut.cpp index 092327c367..e382a1cb9c 100644 --- a/src/USER-AWPMD/pair_awpmd_cut.cpp +++ b/src/USER-AWPMD/pair_awpmd_cut.cpp @@ -259,7 +259,7 @@ void PairAWPMDCut::compute(int eflag, int vflag) Vector_3 xx=Vector_3(x[i][0],x[i][1],x[i][2]); Vector_3 rv=m*Vector_3(v[i][0],v[i][1],v[i][2]); double pv=ermscale*m*atom->ervel[i]; - Vector_2 cc=Vector_2(atom->cs[2*i],atom->cs[2*i+1]); + Vector_2 cc=Vector_2(atom->cs[i][0],atom->cs[i][1]); gmap[i]=wpmd->add_split(xx,rv,atom->eradius[i],pv,cc,1.,atom->q[i],itag[i] : -atom->tag[i]); // resetting for the case constraints were applied v[i][0]=rv[0]/m; @@ -284,7 +284,7 @@ void PairAWPMDCut::compute(int eflag, int vflag) } else { // electron int iel=gmap[i]; int s=spin[i] >0 ? 0 : 1; - wpmd->get_wp_force(s,iel,(Vector_3 *)f[i],(Vector_3 *)(atom->vforce+3*i),atom->erforce+i,atom->ervelforce+i,(Vector_2 *)(atom->csforce+2*i)); + wpmd->get_wp_force(s,iel,(Vector_3 *)f[i],(Vector_3 *)(atom->vforce[i]),atom->erforce+i,atom->ervelforce+i,(Vector_2 *)(atom->csforce[i])); } } @@ -671,11 +671,11 @@ void PairAWPMDCut::min_xf_get(int /* ignore */) double *eradius = atom->eradius; double *erforce = atom->erforce; double **v=atom->v; - double *vforce=atom->vforce; + double **vforce=atom->vforce; double *ervel=atom->ervel; double *ervelforce=atom->ervelforce; - double *cs=atom->cs; - double *csforce=atom->csforce; + double **cs=atom->cs; + double **csforce=atom->csforce; int *spin = atom->spin; int nlocal = atom->nlocal; @@ -686,14 +686,14 @@ void PairAWPMDCut::min_xf_get(int /* ignore */) min_varforce[7*i] = eradius[i]*erforce[i]; for(int j=0;j<3;j++){ min_var[7*i+1+3*j] = v[i][j]; - min_varforce[7*i+1+3*j] = vforce[3*i+j]; + min_varforce[7*i+1+3*j] = vforce[i][j]; } min_var[7*i+4] = ervel[i]; min_varforce[7*i+4] = ervelforce[i]; - min_var[7*i+5] = cs[2*i]; - min_varforce[7*i+5] = csforce[2*i]; - min_var[7*i+6] = cs[2*i+1]; - min_varforce[7*i+6] = csforce[2*i+1]; + min_var[7*i+5] = cs[i][0]; + min_varforce[7*i+5] = csforce[i][0]; + min_var[7*i+6] = cs[i][1]; + min_varforce[7*i+6] = csforce[i][1]; } else { for(int j=0;j<7;j++) @@ -710,7 +710,7 @@ void PairAWPMDCut::min_x_set(int /* ignore */) double *eradius = atom->eradius; double **v=atom->v; double *ervel=atom->ervel; - double *cs=atom->cs; + double **cs=atom->cs; int *spin = atom->spin; int nlocal = atom->nlocal; @@ -721,8 +721,8 @@ void PairAWPMDCut::min_x_set(int /* ignore */) for(int j=0;j<3;j++) v[i][j]=min_var[7*i+1+3*j]; ervel[i]=min_var[7*i+4]; - cs[2*i]=min_var[7*i+5]; - cs[2*i+1]=min_var[7*i+6]; + cs[i][0]=min_var[7*i+5]; + cs[i][1]=min_var[7*i+6]; } } } diff --git a/src/USER-SMD/atom_vec_smd.cpp b/src/USER-SMD/atom_vec_smd.cpp index 4c8126d2cc..42978d67d6 100644 --- a/src/USER-SMD/atom_vec_smd.cpp +++ b/src/USER-SMD/atom_vec_smd.cpp @@ -90,7 +90,7 @@ AtomVecSMD::AtomVecSMD(LAMMPS *lmp) : AtomVec(lmp) "x0 vest vfrac rmass radius contact_radius molecule e " "eff_plastic_strain eff_plastic_strain_rate smd_data_9 smd_stress damage"; fields_data_atom = (char *) - "id type molecule vfrac rmass radius contact_radius x"; + "id type molecule vfrac rmass radius contact_radius x0 x"; fields_data_vel = (char *) "id v"; // set these array sizes based on defines diff --git a/src/atom.cpp b/src/atom.cpp index 353ed510a4..1470c873a6 100644 --- a/src/atom.cpp +++ b/src/atom.cpp @@ -134,8 +134,8 @@ Atom::Atom(LAMMPS *lmp) : Pointers(lmp) spin = NULL; eradius = ervel = erforce = NULL; - ervelforce = cs = csforce = NULL; - vforce = NULL; + ervelforce = NULL; + cs = csforce = vforce = NULL; etag = NULL; // USER-DPD package @@ -512,8 +512,8 @@ void Atom::peratom_create() // USER-AWPMD package - add_peratom("cs",&cs,DOUBLE,0); - add_peratom("csforce",&csforce,DOUBLE,0); + add_peratom("cs",&cs,DOUBLE,2); + add_peratom("csforce",&csforce,DOUBLE,2); add_peratom("vforce",&vforce,DOUBLE,3); add_peratom("ervelforce",&ervelforce,DOUBLE,0); add_peratom("etag",&etag,INT,0); diff --git a/src/atom.h b/src/atom.h index 6c7110b5be..ab1ad35f5f 100644 --- a/src/atom.h +++ b/src/atom.h @@ -109,8 +109,8 @@ class Atom : protected Pointers { int *spin; double *eradius,*ervel,*erforce; - double *ervelforce,*cs,*csforce; - double **vforce; + double *ervelforce; + double **cs,**csforce,**vforce; int *etag; // USER-DPD package @@ -322,7 +322,7 @@ class Atom : protected Pointers { inline int get_map_size() {return map_tag_max+1;}; inline int get_map_maxarray() {return map_maxarray+1;}; - // NOTE: placeholder method until AtomVec is refactored + // NOTE: placeholder method until KOKKOS/AtomVec is refactored int memcheck(const char *) {return 1;} bigint memory_usage(); diff --git a/src/atom_vec.cpp b/src/atom_vec.cpp index fac4cc2f6e..77ba68f651 100644 --- a/src/atom_vec.cpp +++ b/src/atom_vec.cpp @@ -1368,7 +1368,7 @@ int AtomVec::size_restart() int i,nn,cols,collength,ncols; void *plength; - // NOTE: need to worry about overflow of returned int ?? + // NOTE: need to worry about overflow of returned int N int nlocal = atom->nlocal; @@ -1738,9 +1738,9 @@ void AtomVec::data_atom(double *coord, imageint imagetmp, char **values) // error checks applicable to all styles - if (atom->tag[nlocal] <= 0) + if (tag[nlocal] <= 0) error->one(FLERR,"Invalid atom ID in Atoms section of data file"); - if (atom->type[nlocal] <= 0 || atom->type[nlocal] > atom->ntypes) + if (type[nlocal] <= 0 || type[nlocal] > atom->ntypes) error->one(FLERR,"Invalid atom type in Atoms section of data file"); // if needed, modify unpacked values or initialize other peratom values @@ -2388,7 +2388,6 @@ void AtomVec::setup_fields() } // set style-specific sizes - // NOTE: check for others vars in atom_vec.cpp/h ?? comm_x_only = 1; if (ncomm) comm_x_only = 0; diff --git a/src/atom_vec_body.cpp b/src/atom_vec_body.cpp index 0f3557596f..c262f1a5b6 100644 --- a/src/atom_vec_body.cpp +++ b/src/atom_vec_body.cpp @@ -132,15 +132,12 @@ void AtomVecBody::process_args(int narg, char **arg) } /* ---------------------------------------------------------------------- - grow atom arrays - must set local copy of body ptr - needed in replicate when 2 atom classes exist and pack_restart() is called + set local copies of all grow ptrs used by this class, except defaults + needed in replicate when 2 atom classes exist and it calls pack_restart() ------------------------------------------------------------------------- */ -void AtomVecBody::grow(int n) +void AtomVecBody::grow_pointers() { - AtomVec::grow(n); - body = atom->body; rmass = atom->rmass; radius = atom->radius; diff --git a/src/atom_vec_body.h b/src/atom_vec_body.h index adfc7768eb..a47cfb3b54 100644 --- a/src/atom_vec_body.h +++ b/src/atom_vec_body.h @@ -43,7 +43,7 @@ class AtomVecBody : public AtomVec { ~AtomVecBody(); void process_args(int, char **); - void grow(int); + void grow_pointers(); void copy_bonus(int, int, int); void clear_bonus(); int pack_comm_bonus(int, int *, double *); diff --git a/src/atom_vec_hybrid.cpp b/src/atom_vec_hybrid.cpp index d1166e5a8e..965bfe8543 100644 --- a/src/atom_vec_hybrid.cpp +++ b/src/atom_vec_hybrid.cpp @@ -31,12 +31,10 @@ AtomVecHybrid::AtomVecHybrid(LAMMPS *lmp) : AtomVec(lmp) keywords = NULL; fieldstrings = NULL; + bonus_flag = 0; nstyles_bonus = 0; styles_bonus = NULL; - // NOTE: set bonus_flag if any substyle does - // set nstyles_bonus, styles_bonus - // these strings will be concatenated from sub-style strings // fields_data_atom & fields_data_vel start with fields common to all styles @@ -45,6 +43,8 @@ AtomVecHybrid::AtomVecHybrid(LAMMPS *lmp) : AtomVec(lmp) fields_exchange = fields_restart = fields_create = (char *) ""; fields_data_atom = (char *) "id type x"; fields_data_vel = (char *) "id v"; + + fields_allocated = 0; } /* ---------------------------------------------------------------------- */ @@ -56,7 +56,10 @@ AtomVecHybrid::~AtomVecHybrid() for (int k = 0; k < nstyles; k++) delete [] keywords[k]; delete [] keywords; - // NOTE: need to check these have actually been allocated + for (int k = 0; k < nstyles_bonus; k++) delete styles_bonus[k]; + delete [] styles_bonus; + + if (!fields_allocated) return; delete [] fields_grow; delete [] fields_copy; @@ -198,6 +201,8 @@ void AtomVecHybrid::process_args(int narg, char **arg) fields_data_atom = merge_fields(10,fields_data_atom,0,null); fields_data_vel = merge_fields(11,fields_data_vel,0,null); + fields_allocated = 1; + // check concat_grow for multiple special-case fields // may cause issues with style-specific create_atom() and data_atom() methods // issue warnings if appear in multiple sub-styles @@ -219,6 +224,23 @@ void AtomVecHybrid::process_args(int narg, char **arg) delete [] concat_grow; + // set bonus_flag if any substyle has bonus data + // set nstyles_bonus & styles_bonus + + nstyles_bonus = 0; + for (int k = 0; k < nstyles; k++) + if (styles[k]->bonus_flag) nstyles_bonus++; + + if (nstyles_bonus) { + bonus_flag = 1; + styles_bonus = new AtomVec*[nstyles_bonus]; + nstyles_bonus = 0; + for (int k = 0; k < nstyles; k++) { + if (styles[k]->bonus_flag) + styles_bonus[nstyles_bonus++] = styles[k]; + } + } + // parent AtomVec can now operate on merged fields setup_fields(); @@ -326,7 +348,13 @@ void AtomVecHybrid::copy_bonus(int i, int j, int delflag) styles_bonus[k]->copy_bonus(i,j,delflag); } -// NOTE: need a clear_bonus() ? +/* ---------------------------------------------------------------------- */ + +void AtomVecHybrid::clear_bonus() +{ + for (int k = 0; k < nstyles_bonus; k++) + styles_bonus[k]->clear_bonus(); +} /* ---------------------------------------------------------------------- */ diff --git a/src/atom_vec_hybrid.h b/src/atom_vec_hybrid.h index 7d8e45c579..69b0aab7b7 100644 --- a/src/atom_vec_hybrid.h +++ b/src/atom_vec_hybrid.h @@ -38,7 +38,7 @@ class AtomVecHybrid : public AtomVec { void grow_pointers(); void force_clear(int, size_t); void copy_bonus(int, int, int); - void clear_bonus() {} + void clear_bonus(); int pack_comm_bonus(int, int *, double *); void unpack_comm_bonus(int, int, double *); int pack_border_bonus(int, int *, double *); @@ -64,6 +64,7 @@ class AtomVecHybrid : public AtomVec { private: int nallstyles; char **allstyles; + int fields_allocated; struct FieldStrings { char **fstr; -- GitLab From b3a7aa6541bffb443c1de4823ec7e26691c99bed Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Wed, 22 Jan 2020 17:48:50 -0500 Subject: [PATCH 016/717] correct whitespace issue --- src/modify.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/modify.cpp b/src/modify.cpp index 732770f34e..be6624e6c1 100644 --- a/src/modify.cpp +++ b/src/modify.cpp @@ -960,12 +960,12 @@ void Modify::add_fix(int narg, char **arg, int trysuffix) replace it later with the desired Fix instance ------------------------------------------------------------------------- */ -void Modify::replace_fix(const char *replaceID, +void Modify::replace_fix(const char *replaceID, int narg, char **arg, int trysuffix) { int ifix = find_fix(replaceID); if (ifix < 0) error->all(FLERR,"Modify replace_fix ID could not be found"); - + // change ID, igroup, style of fix being replaced to match new fix // requires some error checking on arguments for new fix -- GitLab From 66c5fa2abd78c0de8fce4caafd4629b670cfc7c0 Mon Sep 17 00:00:00 2001 From: Vsevak Date: Tue, 28 Jan 2020 20:09:40 +0300 Subject: [PATCH 017/717] Merge 'gpu_hip_port' into master --- lib/gpu/Makefile.hip | 148 ++++++++ lib/gpu/geryon/hip_device.h | 519 +++++++++++++++++++++++++++++ lib/gpu/geryon/hip_kernel.h | 298 +++++++++++++++++ lib/gpu/geryon/hip_macros.h | 83 +++++ lib/gpu/geryon/hip_mat.h | 43 +++ lib/gpu/geryon/hip_memory.h | 279 ++++++++++++++++ lib/gpu/geryon/hip_texture.h | 113 +++++++ lib/gpu/geryon/hip_timer.h | 107 ++++++ lib/gpu/geryon/ucl_get_devices.cpp | 5 + lib/gpu/lal_answer.cpp | 17 +- lib/gpu/lal_answer.h | 4 + lib/gpu/lal_atom.cpp | 75 +++++ lib/gpu/lal_atom.cu | 2 +- lib/gpu/lal_atom.h | 13 + lib/gpu/lal_aux_fun1.h | 2 +- lib/gpu/lal_base_atomic.h | 2 + lib/gpu/lal_base_charge.h | 2 + lib/gpu/lal_base_dipole.h | 2 + lib/gpu/lal_base_dpd.h | 2 + lib/gpu/lal_base_ellipsoid.h | 2 + lib/gpu/lal_base_three.h | 2 + lib/gpu/lal_beck.cu | 6 +- lib/gpu/lal_born.cu | 6 +- lib/gpu/lal_born_coul_long.cu | 10 +- lib/gpu/lal_born_coul_long_cs.cu | 11 +- lib/gpu/lal_born_coul_wolf.cu | 10 +- lib/gpu/lal_born_coul_wolf_cs.cu | 10 +- lib/gpu/lal_buck.cu | 6 +- lib/gpu/lal_buck_coul.cu | 10 +- lib/gpu/lal_buck_coul_long.cu | 10 +- lib/gpu/lal_charmm_long.cu | 10 +- lib/gpu/lal_colloid.cu | 6 +- lib/gpu/lal_coul.cu | 10 +- lib/gpu/lal_coul_debye.cu | 10 +- lib/gpu/lal_coul_dsf.cu | 10 +- lib/gpu/lal_coul_long.cu | 10 +- lib/gpu/lal_coul_long_cs.cu | 10 +- lib/gpu/lal_device.cpp | 6 +- lib/gpu/lal_device.cu | 2 +- lib/gpu/lal_dipole_lj.cu | 14 +- lib/gpu/lal_dipole_lj_sf.cu | 14 +- lib/gpu/lal_dipole_long_lj.cu | 14 +- lib/gpu/lal_dpd.cu | 10 +- lib/gpu/lal_eam.cu | 34 +- lib/gpu/lal_ellipsoid_extra.h | 8 +- lib/gpu/lal_ellipsoid_nbor.cu | 6 +- lib/gpu/lal_gauss.cu | 6 +- lib/gpu/lal_gayberne.cu | 2 +- lib/gpu/lal_gayberne_lj.cu | 2 +- lib/gpu/lal_lj.cu | 6 +- lib/gpu/lal_lj96.cu | 6 +- lib/gpu/lal_lj_class2_long.cu | 10 +- lib/gpu/lal_lj_coul.cu | 10 +- lib/gpu/lal_lj_coul_debye.cu | 10 +- lib/gpu/lal_lj_coul_long.cu | 10 +- lib/gpu/lal_lj_coul_msm.cu | 18 +- lib/gpu/lal_lj_cubic.cu | 6 +- lib/gpu/lal_lj_dsf.cu | 10 +- lib/gpu/lal_lj_expand.cu | 6 +- lib/gpu/lal_lj_expand_coul_long.cu | 10 +- lib/gpu/lal_lj_gromacs.cu | 6 +- lib/gpu/lal_lj_sdk.cu | 6 +- lib/gpu/lal_lj_sdk_long.cu | 10 +- lib/gpu/lal_lj_tip4p_long.cpp | 5 +- lib/gpu/lal_lj_tip4p_long.cu | 10 +- lib/gpu/lal_mie.cu | 6 +- lib/gpu/lal_morse.cu | 6 +- lib/gpu/lal_neighbor_cpu.cu | 2 +- lib/gpu/lal_neighbor_gpu.cu | 6 +- lib/gpu/lal_neighbor_shared.h | 4 + lib/gpu/lal_pppm.cu | 10 +- lib/gpu/lal_pppm.h | 2 + lib/gpu/lal_precision.h | 2 + lib/gpu/lal_preprocessor.h | 146 +++++++- lib/gpu/lal_re_squared.cu | 2 +- lib/gpu/lal_re_squared_lj.cu | 2 +- lib/gpu/lal_soft.cu | 6 +- lib/gpu/lal_sw.cu | 18 +- lib/gpu/lal_table.cu | 6 +- lib/gpu/lal_tersoff.cu | 26 +- lib/gpu/lal_tersoff_extra.h | 2 +- lib/gpu/lal_tersoff_mod.cu | 26 +- lib/gpu/lal_tersoff_mod_extra.h | 2 +- lib/gpu/lal_tersoff_zbl.cu | 30 +- lib/gpu/lal_tersoff_zbl_extra.h | 2 +- lib/gpu/lal_ufm.cu | 6 +- lib/gpu/lal_vashishta.cu | 26 +- lib/gpu/lal_yukawa.cu | 6 +- lib/gpu/lal_yukawa_colloid.cu | 10 +- lib/gpu/lal_zbl.cu | 6 +- src/MAKE/OPTIONS/Makefile.hip | 120 +++++++ 91 files changed, 2290 insertions(+), 312 deletions(-) create mode 100644 lib/gpu/Makefile.hip create mode 100644 lib/gpu/geryon/hip_device.h create mode 100644 lib/gpu/geryon/hip_kernel.h create mode 100644 lib/gpu/geryon/hip_macros.h create mode 100644 lib/gpu/geryon/hip_mat.h create mode 100644 lib/gpu/geryon/hip_memory.h create mode 100644 lib/gpu/geryon/hip_texture.h create mode 100644 lib/gpu/geryon/hip_timer.h create mode 100644 src/MAKE/OPTIONS/Makefile.hip diff --git a/lib/gpu/Makefile.hip b/lib/gpu/Makefile.hip new file mode 100644 index 0000000000..5c9f251004 --- /dev/null +++ b/lib/gpu/Makefile.hip @@ -0,0 +1,148 @@ +# /* ---------------------------------------------------------------------- +# Generic Linux Makefile for HIP +# - export HIP_PLATFORM=hcc (or nvcc) before execution +# - change HIP_ARCH for your GPU +# ------------------------------------------------------------------------- */ + +# this setting should match LAMMPS Makefile +# one of LAMMPS_SMALLBIG (default), LAMMPS_BIGBIG and LAMMPS_SMALLSMALL + +LMP_INC = -DLAMMPS_SMALLBIG + +# precision for GPU calculations +# -D_SINGLE_SINGLE # Single precision for all calculations +# -D_DOUBLE_DOUBLE # Double precision for all calculations +# -D_SINGLE_DOUBLE # Accumulation of forces, etc. in double + +HIP_PRECISION = -D_SINGLE_DOUBLE + +HIP_OPTS = -O3 +HIP_HOST_OPTS = -Wno-deprecated-declarations +HIP_HOST_INCLUDE = + +# use device sort +# requires linking with hipcc and hipCUB + (rocPRIM or CUB for AMD or Nvidia respectively) +HIP_HOST_OPTS += -DUSE_HIP_DEVICE_SORT +# path to cub +HIP_HOST_INCLUDE += -I./ +# path to hipcub +HIP_HOST_INCLUDE += -I$(HIP_PATH)/../include + +# use mpi +HIP_HOST_OPTS += -DMPI_GERYON -DUCL_NO_EXIT +# this settings should match LAMMPS Makefile +MPI_COMP_OPTS = $(shell mpicxx --showme:compile) +MPI_LINK_OPTS = $(shell mpicxx --showme:link) +#MPI_COMP_OPTS += -I/usr/include/mpi -DMPICH_IGNORE_CXX_SEEK -DOMPI_SKIP_MPICXX=1 + +HIP_PATH ?= $(wildcard /opt/rocm/hip) +HIP_PLATFORM=$(shell $(HIP_PATH)/bin/hipconfig --compiler) + +ifeq (hcc,$(HIP_PLATFORM)) + HIP_OPTS += -ffast-math + # possible values: gfx803,gfx900,gfx906 + HIP_ARCH = gfx906 +else ifeq (nvcc,$(HIP_PLATFORM)) + HIP_OPTS += --use_fast_math + HIP_ARCH = -gencode arch=compute_30,code=[sm_30,compute_30] -gencode arch=compute_32,code=[sm_32,compute_32] -gencode arch=compute_35,code=[sm_35,compute_35] \ + -gencode arch=compute_50,code=[sm_50,compute_50] -gencode arch=compute_52,code=[sm_52,compute_52] -gencode arch=compute_53,code=[sm_53,compute_53]\ + -gencode arch=compute_60,code=[sm_60,compute_60] -gencode arch=compute_61,code=[sm_61,compute_61] -gencode arch=compute_62,code=[sm_62,compute_62]\ + -gencode arch=compute_70,code=[sm_70,compute_70] -gencode arch=compute_72,code=[sm_72,compute_72] -gencode arch=compute_75,code=[sm_75,compute_75] +else + $(error Specify HIP platform using 'export HIP_PLATFORM=(hcc,nvcc)') +endif + +BIN_DIR = . +OBJ_DIR = ./obj +LIB_DIR = . +AR = ar +BSH = /bin/sh + + +# /* ---------------------------------------------------------------------- +# don't change section below without need +# ------------------------------------------------------------------------- */ + +HIP_OPTS += -DUSE_HIP $(HIP_PRECISION) +HIP_GPU_OPTS += $(HIP_OPTS) -I./ + +ifeq (hcc,$(HIP_PLATFORM)) + HIP_HOST_OPTS += -fPIC + HIP_GPU_CC = $(HIP_PATH)/bin/hipcc --genco + HIP_GPU_OPTS_S = -t="$(HIP_ARCH)" -f=\" + HIP_GPU_OPTS_E = \" + HIP_KERNEL_SUFFIX = .cpp + HIP_LIBS_TARGET = export HCC_AMDGPU_TARGET := $(HIP_ARCH) + export HCC_AMDGPU_TARGET := $(HIP_ARCH) +else ifeq (nvcc,$(HIP_PLATFORM)) + HIP_GPU_CC = $(HIP_PATH)/bin/hipcc --fatbin + HIP_GPU_OPTS += $(HIP_ARCH) + HIP_GPU_SORT_ARCH = $(HIP_ARCH) + # fix nvcc can't handle -pthread flag + MPI_COMP_OPTS := $(subst -pthread,-Xcompiler -pthread,$(MPI_COMP_OPTS)) + MPI_LINK_OPTS := $(subst -pthread,-Xcompiler -pthread,$(MPI_LINK_OPTS)) +endif + +# hipcc is essential for device sort, because of hipcub is header only library and ROCm gpu code generation is deferred to the linking stage +HIP_HOST_CC = $(HIP_PATH)/bin/hipcc +HIP_HOST_OPTS += $(HIP_OPTS) $(MPI_COMP_OPTS) $(LMP_INC) +HIP_HOST_CC_CMD = $(HIP_HOST_CC) $(HIP_HOST_OPTS) $(HIP_HOST_INCLUDE) + +# sources + +ALL_H = $(wildcard ./geryon/ucl*.h) $(wildcard ./geryon/hip*.h) $(wildcard ./lal_*.h) +SRCS := $(wildcard ./lal_*.cpp) +OBJS := $(subst ./,$(OBJ_DIR)/,$(SRCS:%.cpp=%.o)) +CUS := $(wildcard lal_*.cu) +CUHS := $(filter-out pppm_cubin.h, $(CUS:lal_%.cu=%_cubin.h)) pppm_f_cubin.h pppm_d_cubin.h +CUHS := $(addprefix $(OBJ_DIR)/, $(CUHS)) + +all: $(OBJ_DIR) $(CUHS) $(LIB_DIR)/libgpu.a $(BIN_DIR)/hip_get_devices + +$(OBJ_DIR): + mkdir -p $@ + +# GPU kernels compilation + +$(OBJ_DIR)/pppm_f_cubin.h: lal_pppm.cu $(ALL_H) + @cp $< $(OBJ_DIR)/temp_pppm_f.cu$(HIP_KERNEL_SUFFIX) + $(HIP_GPU_CC) $(HIP_GPU_OPTS_S) $(HIP_GPU_OPTS) -Dgrdtyp=float -Dgrdtyp4=float4 $(HIP_GPU_OPTS_E) -o $(OBJ_DIR)/pppm_f.cubin $(OBJ_DIR)/temp_pppm_f.cu$(HIP_KERNEL_SUFFIX) + @xxd -i $(OBJ_DIR)/pppm_f.cubin $@ + @sed -i "s/[a-zA-Z0-9_]*pppm_f_cubin/pppm_f/g" $@ + @rm $(OBJ_DIR)/temp_pppm_f.cu$(HIP_KERNEL_SUFFIX) $(OBJ_DIR)/pppm_f.cubin + +$(OBJ_DIR)/pppm_d_cubin.h: lal_pppm.cu $(ALL_H) + @cp $< $(OBJ_DIR)/temp_pppm_d.cu$(HIP_KERNEL_SUFFIX) + $(HIP_GPU_CC) $(HIP_GPU_OPTS_S) $(HIP_GPU_OPTS) -Dgrdtyp=double -Dgrdtyp4=double4 $(HIP_GPU_OPTS_E) -o $(OBJ_DIR)/pppm_d.cubin $(OBJ_DIR)/temp_pppm_d.cu$(HIP_KERNEL_SUFFIX) + @xxd -i $(OBJ_DIR)/pppm_d.cubin $@ + @sed -i "s/[a-zA-Z0-9_]*pppm_d_cubin/pppm_d/g" $@ + @rm $(OBJ_DIR)/temp_pppm_d.cu$(HIP_KERNEL_SUFFIX) $(OBJ_DIR)/pppm_d.cubin + +$(OBJ_DIR)/%_cubin.h: lal_%.cu $(ALL_H) + @cp $< $(OBJ_DIR)/temp_$*.cu$(HIP_KERNEL_SUFFIX) + $(HIP_GPU_CC) $(HIP_GPU_OPTS_S) $(HIP_GPU_OPTS) $(HIP_GPU_OPTS_E) -o $(OBJ_DIR)/$*.cubin $(OBJ_DIR)/temp_$*.cu$(HIP_KERNEL_SUFFIX) + @xxd -i $(OBJ_DIR)/$*.cubin $@ + @sed -i "s/[a-zA-Z0-9_]*$*_cubin/$*/g" $@ + @rm $(OBJ_DIR)/temp_$*.cu$(HIP_KERNEL_SUFFIX) $(OBJ_DIR)/$*.cubin + +# host sources compilation + +$(OBJ_DIR)/lal_atom.o: lal_atom.cpp $(CUHS) $(ALL_H) + $(HIP_HOST_CC_CMD) -o $@ -c $< -I$(OBJ_DIR) $(HIP_GPU_SORT_ARCH) + +$(OBJ_DIR)/lal_%.o: lal_%.cpp $(CUHS) $(ALL_H) + $(HIP_HOST_CC_CMD) -o $@ -c $< -I$(OBJ_DIR) + +# libgpu building + +$(LIB_DIR)/libgpu.a: $(OBJS) + $(AR) -crs $@ $(OBJS) + echo "export HIP_PLATFORM := $(HIP_PLATFORM)\n$(HIP_LIBS_TARGET)" > 'Makefile.lammps' + +# test app building + +$(BIN_DIR)/hip_get_devices: ./geryon/ucl_get_devices.cpp $(ALL_H) + $(HIP_HOST_CC_CMD) -o $@ $< -DUCL_HIP $(MPI_LINK_OPTS) + +clean: + -rm -f $(BIN_DIR)/hip_get_devices $(LIB_DIR)/libgpu.a $(OBJS) $(OBJ_DIR)/temp_* $(CUHS) diff --git a/lib/gpu/geryon/hip_device.h b/lib/gpu/geryon/hip_device.h new file mode 100644 index 0000000000..93f38d28bb --- /dev/null +++ b/lib/gpu/geryon/hip_device.h @@ -0,0 +1,519 @@ +/* ----------------------------------------------------------------------- + Copyright (2009) 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 Simplified BSD License. + ----------------------------------------------------------------------- */ + +#ifndef HIP_DEVICE +#define HIP_DEVICE + + +#include +#include +#include +#include +#include +#include "hip_macros.h" +#include "ucl_types.h" + +namespace ucl_hip { + +// -------------------------------------------------------------------------- +// - COMMAND QUEUE STUFF +// -------------------------------------------------------------------------- +typedef hipStream_t command_queue; + +inline void ucl_sync(hipStream_t &stream) { + CU_SAFE_CALL(hipStreamSynchronize(stream)); +} + +struct NVDProperties { + int device_id; + std::string name; + int major; + int minor; + CUDA_INT_TYPE totalGlobalMem; + int multiProcessorCount; + + int maxThreadsPerBlock; + int maxThreadsDim[3]; + int maxGridSize[3]; + int sharedMemPerBlock; + int totalConstantMemory; + int SIMDWidth; + int memPitch; + int regsPerBlock; + int clockRate; + int textureAlign; + + int kernelExecTimeoutEnabled; + int integrated; + int canMapHostMemory; + int concurrentKernels; + int ECCEnabled; + int computeMode; +}; + +/// Class for looking at device properties +/** \note Calls to change the device outside of the class results in incorrect + * behavior + * \note There is no error checking for indexing past the number of devices **/ +class UCL_Device { + public: + /// Collect properties for every GPU on the node + /** \note You must set the active GPU with set() before using the device **/ + inline UCL_Device(); + + inline ~UCL_Device(); + + /// Returns 1 (For compatibility with OpenCL) + inline int num_platforms() { return 1; } + + /// Return a string with name and info of the current platform + inline std::string platform_name() + { return "HIP platform"; } + + /// Delete any contexts/data and set the platform number to be used + inline int set_platform(const int pid); + + /// Return the number of devices that support CUDA + inline int num_devices() { return _properties.size(); } + + /// Set the CUDA device to the specified device number + /** A context and default command queue will be created for the device + * Returns UCL_SUCCESS if successful or UCL_ERROR if the device could not + * be allocated for use. clear() is called to delete any contexts and + * associated data from previous calls to set(). **/ + inline int set(int num); + + /// Delete any context and associated data stored from a call to set() + inline void clear(); + + /// Get the current device number + inline int device_num() { return _device; } + + /// Returns the default stream for the current device + inline command_queue & cq() { return cq(0); } + + /// Returns the stream indexed by i + inline command_queue & cq(const int i) { return _cq[i]; } + + /// Block until all commands in the default stream have completed + inline void sync() { sync(0); } + + /// Block until all commands in the specified stream have completed + inline void sync(const int i) { ucl_sync(cq(i)); } + + /// Get the number of command queues currently available on device + inline int num_queues() + { return _cq.size(); } + + /// Add a stream for device computations + inline void push_command_queue() { + _cq.push_back(hipStream_t()); + CU_SAFE_CALL(hipStreamCreateWithFlags(&_cq.back(),0)); + } + + /// Remove a stream for device computations + /** \note You cannot delete the default stream **/ + inline void pop_command_queue() { + if (_cq.size()<2) return; + CU_SAFE_CALL_NS(hipStreamDestroy(_cq.back())); + _cq.pop_back(); + } + + /// Set the default command queue (by default this is the null stream) + /** \param i index of the command queue (as added by push_command_queue()) + If i is 0, the default command queue is set to the null stream **/ + inline void set_command_queue(const int i) { + if (i==0) _cq[0]=0; + else _cq[0]=_cq[i]; + } + + /// Get the current CUDA device name + inline std::string name() { return name(_device); } + /// Get the CUDA device name + inline std::string name(const int i) + { return std::string(_properties[i].name); } + + /// Get a string telling the type of the current device + inline std::string device_type_name() { return device_type_name(_device); } + /// Get a string telling the type of the device + inline std::string device_type_name(const int i) { return "GPU"; } + + /// Get current device type (UCL_CPU, UCL_GPU, UCL_ACCELERATOR, UCL_DEFAULT) + inline int device_type() { return device_type(_device); } + /// Get device type (UCL_CPU, UCL_GPU, UCL_ACCELERATOR, UCL_DEFAULT) + inline int device_type(const int i) { return UCL_GPU; } + + /// Returns true if host memory is efficiently addressable from device + inline bool shared_memory() { return shared_memory(_device); } + /// Returns true if host memory is efficiently addressable from device + inline bool shared_memory(const int i) { return device_type(i)==UCL_CPU; } + + /// Returns true if double precision is support for the current device + inline bool double_precision() { return double_precision(_device); } + /// Returns true if double precision is support for the device + inline bool double_precision(const int i) {return arch(i)>=1.3;} + + /// Get the number of compute units on the current device + inline unsigned cus() { return cus(_device); } + /// Get the number of compute units + inline unsigned cus(const int i) + { return _properties[i].multiProcessorCount; } + + /// Get the number of cores in the current device + inline unsigned cores() { return cores(_device); } + /// Get the number of cores + inline unsigned cores(const int i) + { if (arch(i)<2.0) return _properties[i].multiProcessorCount*8; + else if (arch(i)<2.1) return _properties[i].multiProcessorCount*32; + else if (arch(i)<3.0) return _properties[i].multiProcessorCount*48; + else return _properties[i].multiProcessorCount*192; } + + /// Get the gigabytes of global memory in the current device + inline double gigabytes() { return gigabytes(_device); } + /// Get the gigabytes of global memory + inline double gigabytes(const int i) + { return static_cast(_properties[i].totalGlobalMem)/1073741824; } + + /// Get the bytes of global memory in the current device + inline size_t bytes() { return bytes(_device); } + /// Get the bytes of global memory + inline size_t bytes(const int i) { return _properties[i].totalGlobalMem; } + + // Get the gigabytes of free memory in the current device + inline double free_gigabytes() { return free_gigabytes(_device); } + // Get the gigabytes of free memory + inline double free_gigabytes(const int i) + { return static_cast(free_bytes(i))/1073741824; } + + // Get the bytes of free memory in the current device + inline size_t free_bytes() { return free_bytes(_device); } + // Get the bytes of free memory + inline size_t free_bytes(const int i) { + CUDA_INT_TYPE dfree, dtotal; + CU_SAFE_CALL_NS(hipMemGetInfo(&dfree, &dtotal)); + return static_cast(dfree); + } + + /// Return the GPGPU compute capability for current device + inline double arch() { return arch(_device); } + /// Return the GPGPU compute capability + inline double arch(const int i) + { return static_cast(_properties[i].minor)/10+_properties[i].major;} + + /// Clock rate in GHz for current device + inline double clock_rate() { return clock_rate(_device); } + /// Clock rate in GHz + inline double clock_rate(const int i) + { return _properties[i].clockRate*1e-6;} + + /// Get the maximum number of threads per block + inline size_t group_size() { return group_size(_device); } + /// Get the maximum number of threads per block + inline size_t group_size(const int i) + { return _properties[i].maxThreadsPerBlock; } + + /// Return the maximum memory pitch in bytes for current device + inline size_t max_pitch() { return max_pitch(_device); } + /// Return the maximum memory pitch in bytes + inline size_t max_pitch(const int i) { return _properties[i].memPitch; } + + /// Returns false if accelerator cannot be shared by multiple processes + /** If it cannot be determined, true is returned **/ + inline bool sharing_supported() { return sharing_supported(_device); } + /// Returns false if accelerator cannot be shared by multiple processes + /** If it cannot be determined, true is returned **/ + inline bool sharing_supported(const int i) + { return (_properties[i].computeMode == hipComputeModeDefault); } + + /// True if splitting device into equal subdevices supported + inline bool fission_equal() + { return fission_equal(_device); } + /// True if splitting device into equal subdevices supported + inline bool fission_equal(const int i) + { return false; } + /// True if splitting device into subdevices by specified counts supported + inline bool fission_by_counts() + { return fission_by_counts(_device); } + /// True if splitting device into subdevices by specified counts supported + inline bool fission_by_counts(const int i) + { return false; } + /// True if splitting device into subdevices by affinity domains supported + inline bool fission_by_affinity() + { return fission_by_affinity(_device); } + /// True if splitting device into subdevices by affinity domains supported + inline bool fission_by_affinity(const int i) + { return false; } + + /// Maximum number of subdevices allowed from device fission + inline int max_sub_devices() + { return max_sub_devices(_device); } + /// Maximum number of subdevices allowed from device fission + inline int max_sub_devices(const int i) + { return 0; } + + /// List all devices along with all properties + inline void print_all(std::ostream &out); + + /// Select the platform that has accelerators (for compatibility with OpenCL) + inline int set_platform_accelerator(int pid=-1) { return UCL_SUCCESS; } + + inline int load_module(const void* program, hipModule_t& module, std::string *log=NULL){ + auto it = _loaded_modules.emplace(program, hipModule_t()); + if(!it.second){ + module = it.first->second; + return UCL_SUCCESS; + } + const unsigned int num_opts=2; + hipJitOption options[num_opts]; + void *values[num_opts]; + + // set up size of compilation log buffer + options[0] = hipJitOptionInfoLogBufferSizeBytes; + values[0] = (void *)(int)10240; + // set up pointer to the compilation log buffer + options[1] = hipJitOptionInfoLogBuffer; + char clog[10240] = { 0 }; + values[1] = clog; + + hipError_t err=hipModuleLoadDataEx(&module,program,num_opts, options,(void **)values); + + if (log!=NULL) + *log=std::string(clog); + + if (err != hipSuccess) { + #ifndef UCL_NO_EXIT + std::cerr << std::endl + << "----------------------------------------------------------\n" + << " UCL Error: Error compiling PTX Program...\n" + << "----------------------------------------------------------\n"; + std::cerr << log << std::endl; + #endif + _loaded_modules.erase(it.first); + return UCL_COMPILE_ERROR; + } + it.first->second = module; + return UCL_SUCCESS; + } + private: + std::unordered_map _loaded_modules; + int _device, _num_devices; + std::vector _properties; + std::vector _cq; + hipDevice_t _cu_device; +}; + +// Grabs the properties for all devices +UCL_Device::UCL_Device() { + CU_SAFE_CALL_NS(hipInit(0)); + CU_SAFE_CALL_NS(hipGetDeviceCount(&_num_devices)); + for (int i=0; i<_num_devices; ++i) { + hipDevice_t dev; + CU_SAFE_CALL_NS(hipDeviceGet(&dev,i)); + int major, minor; + CU_SAFE_CALL_NS(hipDeviceGetAttribute(&major, hipDeviceAttributeComputeCapabilityMajor, dev)); + CU_SAFE_CALL_NS(hipDeviceGetAttribute(&minor, hipDeviceAttributeComputeCapabilityMinor, dev)); + if (major==9999) + continue; + + NVDProperties prop; + prop.device_id = i; + prop.major=major; + prop.minor=minor; + + char namecstr[1024]; + CU_SAFE_CALL_NS(hipDeviceGetName(namecstr,1024,dev)); + prop.name=namecstr; + + CU_SAFE_CALL_NS(hipDeviceTotalMem(&prop.totalGlobalMem,dev)); + CU_SAFE_CALL_NS(hipDeviceGetAttribute(&prop.multiProcessorCount, hipDeviceAttributeMultiprocessorCount, dev)); + + CU_SAFE_CALL_NS(hipDeviceGetAttribute(&prop.maxThreadsPerBlock, hipDeviceAttributeMaxThreadsPerBlock, dev)); + CU_SAFE_CALL_NS(hipDeviceGetAttribute(&prop.maxThreadsDim[0], hipDeviceAttributeMaxBlockDimX, dev)); + CU_SAFE_CALL_NS(hipDeviceGetAttribute(&prop.maxThreadsDim[1], hipDeviceAttributeMaxBlockDimY, dev)); + CU_SAFE_CALL_NS(hipDeviceGetAttribute(&prop.maxThreadsDim[2], hipDeviceAttributeMaxBlockDimZ, dev)); + CU_SAFE_CALL_NS(hipDeviceGetAttribute(&prop.maxGridSize[0], hipDeviceAttributeMaxGridDimX, dev)); + CU_SAFE_CALL_NS(hipDeviceGetAttribute(&prop.maxGridSize[1], hipDeviceAttributeMaxGridDimY, dev)); + CU_SAFE_CALL_NS(hipDeviceGetAttribute(&prop.maxGridSize[2], hipDeviceAttributeMaxGridDimZ, dev)); + CU_SAFE_CALL_NS(hipDeviceGetAttribute(&prop.sharedMemPerBlock, hipDeviceAttributeMaxSharedMemoryPerBlock, dev)); + CU_SAFE_CALL_NS(hipDeviceGetAttribute(&prop.totalConstantMemory, hipDeviceAttributeTotalConstantMemory, dev)); + CU_SAFE_CALL_NS(hipDeviceGetAttribute(&prop.SIMDWidth, hipDeviceAttributeWarpSize, dev)); + //CU_SAFE_CALL_NS(hipDeviceGetAttribute(&prop.memPitch, CU_DEVICE_ATTRIBUTE_MAX_PITCH, dev)); + CU_SAFE_CALL_NS(hipDeviceGetAttribute(&prop.regsPerBlock, hipDeviceAttributeMaxRegistersPerBlock, dev)); + CU_SAFE_CALL_NS(hipDeviceGetAttribute(&prop.clockRate, hipDeviceAttributeClockRate, dev)); + //CU_SAFE_CALL_NS(hipDeviceGetAttribute(&prop.textureAlign, CU_DEVICE_ATTRIBUTE_TEXTURE_ALIGNMENT, dev)); + + //#if CUDA_VERSION >= 2020 + //CU_SAFE_CALL_NS(hipDeviceGetAttribute(&prop.kernelExecTimeoutEnabled, CU_DEVICE_ATTRIBUTE_KERNEL_EXEC_TIMEOUT,dev)); + CU_SAFE_CALL_NS(hipDeviceGetAttribute(&prop.integrated, hipDeviceAttributeIntegrated, dev)); + //CU_SAFE_CALL_NS(hipDeviceGetAttribute(&prop.canMapHostMemory, CU_DEVICE_ATTRIBUTE_CAN_MAP_HOST_MEMORY, dev)); + CU_SAFE_CALL_NS(hipDeviceGetAttribute(&prop.computeMode, hipDeviceAttributeComputeMode,dev)); + //#endif + //#if CUDA_VERSION >= 3010 + CU_SAFE_CALL_NS(hipDeviceGetAttribute(&prop.concurrentKernels, hipDeviceAttributeConcurrentKernels, dev)); + //CU_SAFE_CALL_NS(hipDeviceGetAttribute(&prop.ECCEnabled, CU_DEVICE_ATTRIBUTE_ECC_ENABLED, dev)); + //#endif + + _properties.push_back(prop); + } + _device=-1; + _cq.push_back(hipStream_t()); + _cq.back()=0; +} + +UCL_Device::~UCL_Device() { + clear(); +} + +int UCL_Device::set_platform(const int pid) { + clear(); + #ifdef UCL_DEBUG + assert(pid-1) { + for (int i=1; i= 2020 + int driver_version; + hipDriverGetVersion(&driver_version); + out << "Driver Version: " + << driver_version/1000 << "." << driver_version%100 + << std::endl; + //#endif + + if (num_devices() == 0) + out << "There is no device supporting HIP\n"; + for (int i=0; i= 2000 + out << " Number of compute units/multiprocessors: " + << _properties[i].multiProcessorCount << std::endl; + out << " Number of cores: " + << cores(i) << std::endl; + //#endif + out << " Total amount of constant memory: " + << _properties[i].totalConstantMemory << " bytes\n"; + out << " Total amount of local/shared memory per block: " + << _properties[i].sharedMemPerBlock << " bytes\n"; + out << " Total number of registers available per block: " + << _properties[i].regsPerBlock << std::endl; + out << " Warp size: " + << _properties[i].SIMDWidth << std::endl; + out << " Maximum number of threads per block: " + << _properties[i].maxThreadsPerBlock << std::endl; + out << " Maximum group size (# of threads per block) " + << _properties[i].maxThreadsDim[0] << " x " + << _properties[i].maxThreadsDim[1] << " x " + << _properties[i].maxThreadsDim[2] << std::endl; + out << " Maximum item sizes (# threads for each dim) " + << _properties[i].maxGridSize[0] << " x " + << _properties[i].maxGridSize[1] << " x " + << _properties[i].maxGridSize[2] << std::endl; + //out << " Maximum memory pitch: " + // << max_pitch(i) << " bytes\n"; + //out << " Texture alignment: " + // << _properties[i].textureAlign << " bytes\n"; + out << " Clock rate: " + << clock_rate(i) << " GHz\n"; + //#if CUDA_VERSION >= 2020 + //out << " Run time limit on kernels: "; + //if (_properties[i].kernelExecTimeoutEnabled) + // out << "Yes\n"; + //else + // out << "No\n"; + out << " Integrated: "; + if (_properties[i].integrated) + out << "Yes\n"; + else + out << "No\n"; + //out << " Support host page-locked memory mapping: "; + //if (_properties[i].canMapHostMemory) + // out << "Yes\n"; + //else + // out << "No\n"; + out << " Compute mode: "; + if (_properties[i].computeMode == hipComputeModeDefault) + out << "Default\n"; // multiple threads can use device +//#if CUDA_VERSION >= 8000 +// else if (_properties[i].computeMode == hipComputeModeExclusiveProcess) +//#else + else if (_properties[i].computeMode == hipComputeModeExclusive) +//#endif + out << "Exclusive\n"; // only thread can use device + else if (_properties[i].computeMode == hipComputeModeProhibited) + out << "Prohibited\n"; // no thread can use device + //#if CUDART_VERSION >= 4000 + else if (_properties[i].computeMode == hipComputeModeExclusiveProcess) + out << "Exclusive Process\n"; // multiple threads 1 process + //#endif + else + out << "Unknown\n"; + //#endif + //#if CUDA_VERSION >= 3010 + out << " Concurrent kernel execution: "; + if (_properties[i].concurrentKernels) + out << "Yes\n"; + else + out << "No\n"; + //out << " Device has ECC support enabled: "; + //if (_properties[i].ECCEnabled) + // out << "Yes\n"; + //else + // out << "No\n"; + //#endif + } +} + +} + +#endif diff --git a/lib/gpu/geryon/hip_kernel.h b/lib/gpu/geryon/hip_kernel.h new file mode 100644 index 0000000000..654eb44772 --- /dev/null +++ b/lib/gpu/geryon/hip_kernel.h @@ -0,0 +1,298 @@ +/* ----------------------------------------------------------------------- + Copyright (2010) 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 Simplified BSD License. + ----------------------------------------------------------------------- */ + +#ifndef HIP_KERNEL +#define HIP_KERNEL + + +#include +#include "hip_device.h" +#include +#include +#include + +namespace ucl_hip { + +class UCL_Texture; +template class UCL_D_Vec; +template class UCL_D_Mat; +template class UCL_Vector; +template class UCL_Matrix; +#define UCL_MAX_KERNEL_ARGS 256 + +/// Class storing 1 or more kernel functions from a single string or file +class UCL_Program { + UCL_Device* _device_ptr; + public: + inline UCL_Program(UCL_Device &device) { _device_ptr = &device; _cq=device.cq(); } + inline UCL_Program(UCL_Device &device, const void *program, + const char *flags="", std::string *log=NULL) { + _device_ptr = &device; _cq=device.cq(); + init(device); + load_string(program,flags,log); + } + + inline ~UCL_Program() {} + + /// Initialize the program with a device + inline void init(UCL_Device &device) { _device_ptr = &device; _cq=device.cq(); } + + /// Clear any data associated with program + /** \note Must call init() after each clear **/ + inline void clear() { } + + /// Load a program from a file and compile with flags + inline int load(const char *filename, const char *flags="", std::string *log=NULL) { + std::ifstream in(filename); + if (!in || in.is_open()==false) { + #ifndef UCL_NO_EXIT + std::cerr << "UCL Error: Could not open kernel file: " + << filename << std::endl; + UCL_GERYON_EXIT; + #endif + return UCL_FILE_NOT_FOUND; + } + + std::string program((std::istreambuf_iterator(in)), + std::istreambuf_iterator()); + in.close(); + return load_string(program.c_str(),flags,log); + } + + /// Load a program from a string and compile with flags + inline int load_string(const void *program, const char *flags="", std::string *log=NULL) { + return _device_ptr->load_module(program, _module, log); + } + + friend class UCL_Kernel; + private: + hipModule_t _module; + hipStream_t _cq; + friend class UCL_Texture; +}; + +/// Class for dealing with CUDA Driver kernels +class UCL_Kernel { + public: + UCL_Kernel() : _dimensions(1), _num_args(0) { + _num_blocks[0]=0; + } + + UCL_Kernel(UCL_Program &program, const char *function) : + _dimensions(1), _num_args(0) { + _num_blocks[0]=0; + set_function(program,function); + _cq=program._cq; + } + + ~UCL_Kernel() {} + + /// Clear any function associated with the kernel + inline void clear() { } + + /// Get the kernel function from a program + /** \ret UCL_ERROR_FLAG (UCL_SUCCESS, UCL_FILE_NOT_FOUND, UCL_ERROR) **/ + inline int set_function(UCL_Program &program, const char *function) { + hipError_t err=hipModuleGetFunction(&_kernel,program._module,function); + if (err!=hipSuccess) { + #ifndef UCL_NO_EXIT + std::cerr << "UCL Error: Could not find function: " << function + << " in program.\n"; + UCL_GERYON_EXIT; + #endif + return UCL_FUNCTION_NOT_FOUND; + } + _cq=program._cq; + return UCL_SUCCESS; + } + + /// Set the kernel argument. + /** If not a device pointer, this must be repeated each time the argument + * changes + * \note To set kernel parameter i (i>0), parameter i-1 must be set **/ + template + inline void set_arg(const unsigned index, const dtype * const arg) { + if (index==_num_args) + add_arg(arg); + else if (index<_num_args){ + assert(0==1); // not implemented + } + else + assert(0==1); // Must add kernel parameters in sequential order + } + + /// Set a geryon container as a kernel argument. + template + inline void set_arg(const UCL_D_Vec * const arg) + { set_arg(&arg->begin()); } + + /// Set a geryon container as a kernel argument. + template + inline void set_arg(const UCL_D_Mat * const arg) + { set_arg(&arg->begin()); } + + /// Set a geryon container as a kernel argument. + template + inline void set_arg(const UCL_Vector * const arg) + { set_arg(&arg->device.begin()); } + + /// Set a geryon container as a kernel argument. + template + inline void set_arg(const UCL_Matrix * const arg) + { set_arg(&arg->device.begin()); } + + /// Add a kernel argument. + inline void add_arg(const hipDeviceptr_t* const arg) { + add_arg((void**)arg); + } + + /// Add a kernel argument. + template + inline void add_arg(const dtype* const arg) { + const auto old_size = _hip_kernel_args.size(); + const auto aligned_size = (old_size+alignof(dtype)-1) & ~(alignof(dtype)-1); + const auto arg_size = sizeof(dtype); + _hip_kernel_args.resize(aligned_size + arg_size); + *((dtype*)(&_hip_kernel_args[aligned_size])) = *arg; + _num_args++; + if (_num_args>UCL_MAX_KERNEL_ARGS) assert(0==1); + } + + /// Add a geryon container as a kernel argument. + template + inline void add_arg(const UCL_D_Vec * const arg) + { add_arg(&arg->begin()); } + + /// Add a geryon container as a kernel argument. + template + inline void add_arg(const UCL_D_Mat * const arg) + { add_arg(&arg->begin()); } + + /// Add a geryon container as a kernel argument. + template + inline void add_arg(const UCL_Vector * const arg) + { add_arg(&arg->device.begin()); } + + /// Add a geryon container as a kernel argument. + template + inline void add_arg(const UCL_Matrix * const arg) + { add_arg(&arg->device.begin()); } + + /// Set the number of thread blocks and the number of threads in each block + /** \note This should be called before any arguments have been added + \note The default command queue is used for the kernel execution **/ + inline void set_size(const size_t num_blocks, const size_t block_size) { + _dimensions=1; + _num_blocks[0]=num_blocks; + _num_blocks[1]=1; + _num_blocks[2]=1; + + _block_size[0]=block_size; + _block_size[1]=1; + _block_size[2]=1; + } + + /// Set the number of thread blocks and the number of threads in each block + /** \note This should be called before any arguments have been added + \note The default command queue for the kernel is changed to cq **/ + inline void set_size(const size_t num_blocks, const size_t block_size, + command_queue &cq) + { _cq=cq; set_size(num_blocks,block_size); } + + /// Set the number of thread blocks and the number of threads in each block + /** \note This should be called before any arguments have been added + \note The default command queue is used for the kernel execution **/ + inline void set_size(const size_t num_blocks_x, const size_t num_blocks_y, + const size_t block_size_x, const size_t block_size_y) { + _dimensions=2; + _num_blocks[0]=num_blocks_x; + _num_blocks[1]=num_blocks_y; + _num_blocks[2]=1; + + _block_size[0]=block_size_x; + _block_size[1]=block_size_y; + _block_size[2]=1; + } + + /// Set the number of thread blocks and the number of threads in each block + /** \note This should be called before any arguments have been added + \note The default command queue for the kernel is changed to cq **/ + inline void set_size(const size_t num_blocks_x, const size_t num_blocks_y, + const size_t block_size_x, const size_t block_size_y, + command_queue &cq) + {_cq=cq; set_size(num_blocks_x, num_blocks_y, block_size_x, block_size_y);} + + /// Set the number of thread blocks and the number of threads in each block + /** \note This should be called before any arguments have been added + \note The default command queue is used for the kernel execution **/ + inline void set_size(const size_t num_blocks_x, const size_t num_blocks_y, + const size_t block_size_x, + const size_t block_size_y, const size_t block_size_z) { + _dimensions=2; + _num_blocks[0]=num_blocks_x; + _num_blocks[1]=num_blocks_y; + _num_blocks[2]=1; + + _block_size[0]=block_size_x; + _block_size[1]=block_size_y; + _block_size[2]=block_size_z; + } + + /// Set the number of thread blocks and the number of threads in each block + /** \note This should be called before any arguments have been added + \note The default command queue is used for the kernel execution **/ + inline void set_size(const size_t num_blocks_x, const size_t num_blocks_y, + const size_t block_size_x, const size_t block_size_y, + const size_t block_size_z, command_queue &cq) { + _cq=cq; + set_size(num_blocks_x, num_blocks_y, block_size_x, block_size_y, + block_size_z); + } + + /// Run the kernel in the default command queue + inline void run() { + size_t args_size = _hip_kernel_args.size(); + void *config[] = { + HIP_LAUNCH_PARAM_BUFFER_POINTER, (void*)_hip_kernel_args.data(), + HIP_LAUNCH_PARAM_BUFFER_SIZE, &args_size, + HIP_LAUNCH_PARAM_END + }; + const auto res = hipModuleLaunchKernel(_kernel,_num_blocks[0],_num_blocks[1], + _num_blocks[2],_block_size[0],_block_size[1], + _block_size[2],0,_cq, NULL, config); + CU_SAFE_CALL(res); +//#endif + } + + /// Clear any arguments associated with the kernel + inline void clear_args() { + _num_args=0; + _hip_kernel_args.clear(); + } + + /// Return the default command queue/stream associated with this data + inline command_queue & cq() { return _cq; } + /// Change the default command queue associated with matrix + inline void cq(command_queue &cq_in) { _cq=cq_in; } + #include "ucl_arg_kludge.h" + + private: + hipFunction_t _kernel; + hipStream_t _cq; + unsigned _dimensions; + unsigned _num_blocks[3]; + unsigned _num_args; + friend class UCL_Texture; + + unsigned _block_size[3]; + std::vector _hip_kernel_args; +}; + +} // namespace + +#endif + diff --git a/lib/gpu/geryon/hip_macros.h b/lib/gpu/geryon/hip_macros.h new file mode 100644 index 0000000000..9c9971b896 --- /dev/null +++ b/lib/gpu/geryon/hip_macros.h @@ -0,0 +1,83 @@ +#ifndef HIP_MACROS_H +#define HIP_MACROS_H + +#include +#include +#include + +//#if CUDA_VERSION >= 3020 +#define CUDA_INT_TYPE size_t +//#else +//#define CUDA_INT_TYPE unsigned +//#endif + +#ifdef MPI_GERYON +#include "mpi.h" +#define NVD_GERYON_EXIT do { \ + int is_final; \ + MPI_Finalized(&is_final); \ + if (!is_final) \ + MPI_Abort(MPI_COMM_WORLD,-1); \ + } while(0) +#else +#define NVD_GERYON_EXIT assert(0==1) +#endif + +#ifndef UCL_GERYON_EXIT +#define UCL_GERYON_EXIT NVD_GERYON_EXIT +#endif + +#ifdef UCL_DEBUG +#define UCL_SYNC_DEBUG +#define UCL_DESTRUCT_CHECK +#endif + +#ifndef UCL_NO_API_CHECK + +#define CU_SAFE_CALL_NS( call ) do { \ + hipError_t err = call; \ + if( hipSuccess != err) { \ + fprintf(stderr, "HIP runtime error %d in call at file '%s' in line %i.\n", \ + err, __FILE__, __LINE__ ); \ + NVD_GERYON_EXIT; \ + } } while (0) + +#ifdef UCL_SYNC_DEBUG + +#define CU_SAFE_CALL( call ) do { \ + CU_SAFE_CALL_NS( call ); \ + hipError_t err=hipCtxSynchronize(); \ + if( hipSuccess != err) { \ + fprintf(stderr, "HIP runtime error %d in file '%s' in line %i.\n", \ + err, __FILE__, __LINE__ ); \ + NVD_GERYON_EXIT; \ + } } while (0) + +#else + +#define CU_SAFE_CALL( call ) CU_SAFE_CALL_NS( call ) + +#endif + +#else // not DEBUG + +// void macros for performance reasons +#define CU_SAFE_CALL_NS( call ) call +#define CU_SAFE_CALL( call) call + +#endif + +#ifdef UCL_DESTRUCT_CHECK + +#define CU_DESTRUCT_CALL( call) CU_SAFE_CALL( call) +#define CU_DESTRUCT_CALL_NS( call) CU_SAFE_CALL_NS( call) + +#else + +#define CU_DESTRUCT_CALL( call) call +#define CU_DESTRUCT_CALL_NS( call) call + +#endif + +#endif + diff --git a/lib/gpu/geryon/hip_mat.h b/lib/gpu/geryon/hip_mat.h new file mode 100644 index 0000000000..d9bbb4e521 --- /dev/null +++ b/lib/gpu/geryon/hip_mat.h @@ -0,0 +1,43 @@ +/* ----------------------------------------------------------------------- + Copyright (2010) 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 Simplified BSD License. + ----------------------------------------------------------------------- */ + +/*! \file */ + +#ifndef HIP_MAT_H +#define HIP_MAT_H + + +#include +#include "hip_memory.h" + +/// Namespace for CUDA Driver routines +namespace ucl_hip { + +#define _UCL_MAT_ALLOW +#define _UCL_DEVICE_PTR_MAT +#include "ucl_basemat.h" +#include "ucl_h_vec.h" +#include "ucl_h_mat.h" +#include "ucl_d_vec.h" +#include "ucl_d_mat.h" +#include "ucl_s_obj_help.h" +#include "ucl_vector.h" +#include "ucl_matrix.h" +#undef _UCL_DEVICE_PTR_MAT +#undef _UCL_MAT_ALLOW + +#define UCL_COPY_ALLOW +#include "ucl_copy.h" +#undef UCL_COPY_ALLOW + +#define UCL_PRINT_ALLOW +#include "ucl_print.h" +#undef UCL_PRINT_ALLOW + +} // namespace ucl_cudadr + +#endif diff --git a/lib/gpu/geryon/hip_memory.h b/lib/gpu/geryon/hip_memory.h new file mode 100644 index 0000000000..13f60ad939 --- /dev/null +++ b/lib/gpu/geryon/hip_memory.h @@ -0,0 +1,279 @@ +/* ----------------------------------------------------------------------- + Copyright (2010) 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 Simplified BSD License. + ----------------------------------------------------------------------- */ + +#ifndef HIP_MEMORY_H +#define HIP_MEMORY_H + + +#include +#include +#include +#include +#include "hip_macros.h" +#include "hip_device.h" +#include "ucl_types.h" + +namespace ucl_hip { + +// -------------------------------------------------------------------------- +// - API Specific Types +// -------------------------------------------------------------------------- +//typedef dim3 ucl_kernel_dim; + +#ifdef __HIP_PLATFORM_NVCC__ +typedef enum hipArray_Format { + HIP_AD_FORMAT_UNSIGNED_INT8 = 0x01, + HIP_AD_FORMAT_UNSIGNED_INT16 = 0x02, + HIP_AD_FORMAT_UNSIGNED_INT32 = 0x03, + HIP_AD_FORMAT_SIGNED_INT8 = 0x08, + HIP_AD_FORMAT_SIGNED_INT16 = 0x09, + HIP_AD_FORMAT_SIGNED_INT32 = 0x0a, + HIP_AD_FORMAT_HALF = 0x10, + HIP_AD_FORMAT_FLOAT = 0x20 +}hipArray_Format; +#endif + +// -------------------------------------------------------------------------- +// - API SPECIFIC DEVICE POINTERS +// -------------------------------------------------------------------------- +typedef hipDeviceptr_t device_ptr; + +// -------------------------------------------------------------------------- +// - HOST MEMORY ALLOCATION ROUTINES +// -------------------------------------------------------------------------- +template +inline int _host_alloc(mat_type &mat, copy_type &cm, const size_t n, + const enum UCL_MEMOPT kind, const enum UCL_MEMOPT kind2){ + hipError_t err=hipSuccess; + if (kind==UCL_NOT_PINNED) + *(mat.host_ptr())=(typename mat_type::data_type*)malloc(n); + else if (kind==UCL_WRITE_ONLY) + err=hipHostMalloc((void **)mat.host_ptr(),n,hipHostMallocWriteCombined); + else + err=hipHostMalloc((void **)mat.host_ptr(),n,hipHostMallocDefault); + if (err!=hipSuccess || *(mat.host_ptr())==NULL) + return UCL_MEMORY_ERROR; + mat.cq()=cm.cq(); + return UCL_SUCCESS; +} + +template +inline int _host_alloc(mat_type &mat, UCL_Device &dev, const size_t n, + const enum UCL_MEMOPT kind, const enum UCL_MEMOPT kind2){ + hipError_t err=hipSuccess; + if (kind==UCL_NOT_PINNED) + *(mat.host_ptr())=(typename mat_type::data_type*)malloc(n); + else if (kind==UCL_WRITE_ONLY) + err=hipHostMalloc((void **)mat.host_ptr(),n,hipHostMallocWriteCombined); + else + err=hipHostMalloc((void **)mat.host_ptr(),n,hipHostMallocDefault); + if (err!=hipSuccess || *(mat.host_ptr())==NULL) + return UCL_MEMORY_ERROR; + mat.cq()=dev.cq(); + return UCL_SUCCESS; +} + +template +inline void _host_free(mat_type &mat) { + if (mat.kind()==UCL_VIEW) + return; + else if (mat.kind()!=UCL_NOT_PINNED) + CU_DESTRUCT_CALL(hipHostFree(mat.begin())); + else + free(mat.begin()); +} + +template +inline int _host_resize(mat_type &mat, const size_t n) { + _host_free(mat); + hipError_t err=hipSuccess; + if (mat.kind()==UCL_NOT_PINNED) + *(mat.host_ptr())=(typename mat_type::data_type*)malloc(n); + else if (mat.kind()==UCL_WRITE_ONLY) + err=hipHostMalloc((void **)mat.host_ptr(),n,hipHostMallocWriteCombined); + else + err=hipHostMalloc((void **)mat.host_ptr(),n,hipHostMallocDefault); + if (err!=hipSuccess || *(mat.host_ptr())==NULL) + return UCL_MEMORY_ERROR; + return UCL_SUCCESS; +} + +// -------------------------------------------------------------------------- +// - DEVICE MEMORY ALLOCATION ROUTINES +// -------------------------------------------------------------------------- +template +inline int _device_alloc(mat_type &mat, copy_type &cm, const size_t n, + const enum UCL_MEMOPT kind) { + hipError_t err=hipMalloc((void**)&mat.cbegin(),n); + if (err!=hipSuccess) + return UCL_MEMORY_ERROR; + mat.cq()=cm.cq(); + return UCL_SUCCESS; +} + +template +inline int _device_alloc(mat_type &mat, UCL_Device &dev, const size_t n, + const enum UCL_MEMOPT kind) { + hipError_t err=hipMalloc((void**)&mat.cbegin(),n); + if (err!=hipSuccess) + return UCL_MEMORY_ERROR; + mat.cq()=dev.cq(); + return UCL_SUCCESS; +} + +template +inline int _device_alloc(mat_type &mat, copy_type &cm, const size_t rows, + const size_t cols, size_t &pitch, + const enum UCL_MEMOPT kind) { + hipError_t err; + size_t upitch; + err=hipMallocPitch((void**)&mat.cbegin(),&upitch, + cols*sizeof(typename mat_type::data_type),rows); + pitch=static_cast(upitch); + if (err!=hipSuccess) + return UCL_MEMORY_ERROR; + mat.cq()=cm.cq(); + return UCL_SUCCESS; +} + +template +inline int _device_alloc(mat_type &mat, UCL_Device &d, const size_t rows, + const size_t cols, size_t &pitch, + const enum UCL_MEMOPT kind) { + hipError_t err; + size_t upitch; + err=hipMallocPitch((void**)&mat.cbegin(),&upitch, + cols*sizeof(typename mat_type::data_type),rows); + pitch=static_cast(upitch); + if (err!=hipSuccess) + return UCL_MEMORY_ERROR; + mat.cq()=d.cq(); + return UCL_SUCCESS; +} + +template +inline void _device_free(mat_type &mat) { + if (mat.kind()!=UCL_VIEW){ + CU_DESTRUCT_CALL(hipFree((void*)mat.cbegin())); + } +} + +template +inline int _device_resize(mat_type &mat, const size_t n) { + _device_free(mat); + hipError_t err=hipMalloc((void**)&mat.cbegin(),n); + if (err!=hipSuccess) + return UCL_MEMORY_ERROR; + return UCL_SUCCESS; +} + +template +inline int _device_resize(mat_type &mat, const size_t rows, + const size_t cols, size_t &pitch) { + _device_free(mat); + hipError_t err; + size_t upitch; + err=hipMallocPitch((void**)&mat.cbegin(),&upitch, + cols*sizeof(typename mat_type::data_type),rows); + pitch=static_cast(upitch); + if (err!=hipSuccess) + return UCL_MEMORY_ERROR; + return UCL_SUCCESS; +} + +inline void _device_view(hipDeviceptr_t *ptr, hipDeviceptr_t &in) { + *ptr=in; +} + +template +inline void _device_view(hipDeviceptr_t *ptr, numtyp *in) { + *ptr=0; +} + +inline void _device_view(hipDeviceptr_t *ptr, hipDeviceptr_t &in, + const size_t offset, const size_t numsize) { + *ptr=(hipDeviceptr_t)(((char*)in)+offset*numsize); +} + +template +inline void _device_view(hipDeviceptr_t *ptr, numtyp *in, + const size_t offset, const size_t numsize) { + *ptr=0; +} + +// -------------------------------------------------------------------------- +// - DEVICE IMAGE ALLOCATION ROUTINES +// -------------------------------------------------------------------------- +template +inline void _device_image_alloc(mat_type &mat, copy_type &cm, const size_t rows, + const size_t cols) { + assert(0==1); +} + +template +inline void _device_image_alloc(mat_type &mat, UCL_Device &d, const size_t rows, + const size_t cols) { + assert(0==1); +} + +template +inline void _device_image_free(mat_type &mat) { + assert(0==1); +} + +// -------------------------------------------------------------------------- +// - ZERO ROUTINES +// -------------------------------------------------------------------------- +inline void _host_zero(void *ptr, const size_t n) { + memset(ptr,0,n); +} + +template +inline void _device_zero(mat_type &mat, const size_t n, command_queue &cq) { + CU_SAFE_CALL(hipMemsetAsync((void*)mat.cbegin(),0,n,cq)); +} + + +// -------------------------------------------------------------------------- +// - MEMCPY ROUTINES +// -------------------------------------------------------------------------- + + +template +hipMemcpyKind _memcpy_kind(mat1 &dst, const mat2 &src){ + assert(mat1::MEM_TYPE < 2 && mat2::MEM_TYPE < 2); + return (hipMemcpyKind)((1 - mat2::MEM_TYPE)*2 + (1 - mat1::MEM_TYPE)); +} + +template +inline void ucl_mv_cpy(mat1 &dst, const mat2 &src, const size_t n) { + CU_SAFE_CALL(hipMemcpy((void*)dst.begin(), (void*)src.begin(), n, _memcpy_kind(dst, src))); +} + +template +inline void ucl_mv_cpy(mat1 &dst, const mat2 &src, const size_t n, hipStream_t &cq) { + CU_SAFE_CALL(hipMemcpyAsync((void*)dst.begin(), (void*)src.begin(), n, _memcpy_kind(dst, src), cq)); +} + +template +inline void ucl_mv_cpy(mat1 &dst, const size_t dpitch, const mat2 &src, + const size_t spitch, const size_t cols, + const size_t rows) { + CU_SAFE_CALL(hipMemcpy2D((void*)dst.begin(), dpitch, (void*)src.begin(), spitch, cols, rows, _memcpy_kind(dst, src))); +} + +template +inline void ucl_mv_cpy(mat1 &dst, const size_t dpitch, const mat2 &src, + const size_t spitch, const size_t cols, + const size_t rows,hipStream_t &cq) { + CU_SAFE_CALL(hipMemcpy2DAsync((void*)dst.begin(), dpitch, (void*)src.begin(), spitch, cols, rows, _memcpy_kind(dst, src), cq)); +} + +} // namespace ucl_cudart + +#endif + diff --git a/lib/gpu/geryon/hip_texture.h b/lib/gpu/geryon/hip_texture.h new file mode 100644 index 0000000000..e7aa4e1461 --- /dev/null +++ b/lib/gpu/geryon/hip_texture.h @@ -0,0 +1,113 @@ +/* ----------------------------------------------------------------------- + Copyright (2010) 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 Simplified BSD License. + ----------------------------------------------------------------------- */ + +#ifndef HIP_TEXTURE +#define HIP_TEXTURE + + +#include +#include "hip_kernel.h" +#include "hip_mat.h" + +namespace ucl_hip { + +#ifdef __HIP_PLATFORM_NVCC__ +inline hipError_t hipModuleGetTexRef(CUtexref* texRef, hipModule_t hmod, const char* name){ + return hipCUResultTohipError(cuModuleGetTexRef(texRef, hmod, name)); +} +inline hipError_t hipTexRefSetFormat(CUtexref tex, hipArray_Format fmt, int NumPackedComponents) { + return hipCUResultTohipError(cuTexRefSetFormat(tex, (CUarray_format)fmt, NumPackedComponents )); +} +inline hipError_t hipTexRefSetAddress(size_t* offset, CUtexref tex, hipDeviceptr_t devPtr, size_t size) { + return hipCUResultTohipError(cuTexRefSetAddress(offset, tex, devPtr, size)); +} +#endif + +/// Class storing a texture reference +class UCL_Texture { + public: + UCL_Texture() {} + ~UCL_Texture() {} + /// Construct with a specified texture reference + inline UCL_Texture(UCL_Program &prog, const char *texture_name) + { get_texture(prog,texture_name); } + /// Set the texture reference for this object + inline void get_texture(UCL_Program &prog, const char *texture_name) + { + #ifdef __HIP_PLATFORM_NVCC__ + CU_SAFE_CALL(hipModuleGetTexRef(&_tex, prog._module, texture_name)); + #else + size_t _global_var_size; + CU_SAFE_CALL(hipModuleGetGlobal(&_device_ptr_to_global_var, &_global_var_size, prog._module, texture_name)); + #endif + } + + /// Bind a float array where each fetch grabs a vector of length numel + template + inline void bind_float(UCL_D_Vec &vec, const unsigned numel) + { _bind_float(vec,numel); } + + /// Bind a float array where each fetch grabs a vector of length numel + template + inline void bind_float(UCL_D_Mat &vec, const unsigned numel) + { _bind_float(vec,numel); } + + /// Bind a float array where each fetch grabs a vector of length numel + template + inline void bind_float(UCL_Vector &vec, const unsigned numel) + { _bind_float(vec.device,numel); } + + /// Bind a float array where each fetch grabs a vector of length numel + template + inline void bind_float(UCL_Matrix &vec, const unsigned numel) + { _bind_float(vec.device,numel); } + + /// Unbind the texture reference from the memory allocation + inline void unbind() { } + + /// Make a texture reference available to kernel + inline void allow(UCL_Kernel &kernel) { + //#if CUDA_VERSION < 4000 + //CU_SAFE_CALL(cuParamSetTexRef(kernel._kernel, CU_PARAM_TR_DEFAULT, _tex)); + //#endif + } + + private: +#ifdef __HIP_PLATFORM_NVCC__ + CUtexref _tex; +#else + void* _device_ptr_to_global_var; +#endif + friend class UCL_Kernel; + + template + inline void _bind_float(mat_typ &vec, const unsigned numel) { + #ifdef UCL_DEBUG + assert(numel!=0 && numel<5); + #endif + +#ifdef __HIP_PLATFORM_NVCC__ + if (vec.element_size()==sizeof(float)) + CU_SAFE_CALL(hipTexRefSetFormat(_tex, HIP_AD_FORMAT_FLOAT, numel)); + else { + if (numel>2) + CU_SAFE_CALL(hipTexRefSetFormat(_tex, HIP_AD_FORMAT_SIGNED_INT32, numel)); + else + CU_SAFE_CALL(hipTexRefSetFormat(_tex,HIP_AD_FORMAT_SIGNED_INT32,numel*2)); + } + CU_SAFE_CALL(hipTexRefSetAddress(NULL, _tex, vec.cbegin(), vec.numel()*vec.element_size())); +#else + void* data_ptr = (void*)vec.cbegin(); + CU_SAFE_CALL(hipMemcpyHtoD(hipDeviceptr_t(_device_ptr_to_global_var), &data_ptr, sizeof(void*))); +#endif + } +}; + +} // namespace + +#endif + diff --git a/lib/gpu/geryon/hip_timer.h b/lib/gpu/geryon/hip_timer.h new file mode 100644 index 0000000000..3be0b8cfd6 --- /dev/null +++ b/lib/gpu/geryon/hip_timer.h @@ -0,0 +1,107 @@ +/* ----------------------------------------------------------------------- + Copyright (2010) 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 Simplified BSD License. + ----------------------------------------------------------------------- */ + +#ifndef HIP_TIMER_H +#define HIP_TIMER_H + + +#include +#include "hip_macros.h" +#include "hip_device.h" + +namespace ucl_hip { + +/// Class for timing CUDA Driver events +class UCL_Timer { + public: + inline UCL_Timer() : _total_time(0.0f), _initialized(false) { } + inline UCL_Timer(UCL_Device &dev) : _total_time(0.0f), _initialized(false) + { init(dev); } + + inline ~UCL_Timer() { clear(); } + + /// Clear any data associated with timer + /** \note init() must be called to reuse timer after a clear() **/ + inline void clear() { + if (_initialized) { + CU_DESTRUCT_CALL(hipEventDestroy(start_event)); + CU_DESTRUCT_CALL(hipEventDestroy(stop_event)); + _initialized=false; + _total_time=0.0; + } + } + + /// Initialize default command queue for timing + inline void init(UCL_Device &dev) { init(dev, dev.cq()); } + + /// Initialize command queue for timing + inline void init(UCL_Device &dev, command_queue &cq) { + clear(); + _cq=cq; + _initialized=true; + CU_SAFE_CALL( hipEventCreateWithFlags(&start_event,0) ); + CU_SAFE_CALL( hipEventCreateWithFlags(&stop_event,0) ); + } + + /// Start timing on command queue + inline void start() { CU_SAFE_CALL(hipEventRecord(start_event,_cq)); } + + /// Stop timing on command queue + inline void stop() { CU_SAFE_CALL(hipEventRecord(stop_event,_cq)); } + + /// Block until the start event has been reached on device + inline void sync_start() + { CU_SAFE_CALL(hipEventSynchronize(start_event)); } + + /// Block until the stop event has been reached on device + inline void sync_stop() + { CU_SAFE_CALL(hipEventSynchronize(stop_event)); } + + /// Set the time elapsed to zero (not the total_time) + inline void zero() { + CU_SAFE_CALL(hipEventRecord(start_event,_cq)); + CU_SAFE_CALL(hipEventRecord(stop_event,_cq)); + } + + /// Set the total time to zero + inline void zero_total() { _total_time=0.0; } + + /// Add time from previous start and stop to total + /** Forces synchronization **/ + inline double add_to_total() + { double t=time(); _total_time+=t; return t/1000.0; } + + /// Add a user specified time to the total (ms) + inline void add_time_to_total(const double t) { _total_time+=t; } + + /// Return the time (ms) of last start to stop - Forces synchronization + inline double time() { + float timer; + CU_SAFE_CALL(hipEventSynchronize(stop_event)); + CU_SAFE_CALL( hipEventElapsedTime(&timer,start_event,stop_event) ); + return timer; + } + + /// Return the time (s) of last start to stop - Forces synchronization + inline double seconds() { return time()/1000.0; } + + /// Return the total time in ms + inline double total_time() { return _total_time; } + + /// Return the total time in seconds + inline double total_seconds() { return _total_time/1000.0; } + + private: + hipEvent_t start_event, stop_event; + hipStream_t _cq; + double _total_time; + bool _initialized; +}; + +} // namespace + +#endif diff --git a/lib/gpu/geryon/ucl_get_devices.cpp b/lib/gpu/geryon/ucl_get_devices.cpp index 1fa758fb46..b8dfc6f7b1 100644 --- a/lib/gpu/geryon/ucl_get_devices.cpp +++ b/lib/gpu/geryon/ucl_get_devices.cpp @@ -36,6 +36,11 @@ using namespace ucl_cudadr; using namespace ucl_cudart; #endif +#ifdef UCL_HIP +#include "hip_device.h" +using namespace ucl_hip; +#endif + int main(int argc, char** argv) { UCL_Device cop; std::cout << "Found " << cop.num_platforms() << " platform(s).\n"; diff --git a/lib/gpu/lal_answer.cpp b/lib/gpu/lal_answer.cpp index aa6d33d334..95d40c0d0a 100644 --- a/lib/gpu/lal_answer.cpp +++ b/lib/gpu/lal_answer.cpp @@ -179,13 +179,15 @@ double AnswerT::energy_virial(double *eatom, double **vatom, if (_eflag) { for (int i=0; i<_inum; i++) evdwl+=engv[i]; - if (_ef_atom) - if (_ilist==NULL) + if (_ef_atom) { + if (_ilist==NULL) { for (int i=0; i<_inum; i++) eatom[i]+=engv[i]; - else + } else { for (int i=0; i<_inum; i++) eatom[_ilist[i]]+=engv[i]; + } + } vstart=_inum; } if (_vflag) { @@ -193,7 +195,7 @@ double AnswerT::energy_virial(double *eatom, double **vatom, for (int j=0; j<6; j++) { for (int i=vstart; i +#include +#endif + namespace LAMMPS_AL { #define AtomT Atom @@ -70,6 +75,26 @@ bool AtomT::alloc(const int nall) { } #endif + #ifdef USE_HIP_DEVICE_SORT + if (_gpu_nbor==1) { + size_t temp_storage_bytes = 0; + if(hipSuccess != hipcub::DeviceRadixSort::SortPairs(nullptr, temp_storage_bytes, sort_out_keys, sort_out_keys, sort_out_values, sort_out_values, _max_atoms)) + return false; + if(sort_out_size < _max_atoms){ + if (sort_out_keys ) hipFree(sort_out_keys); + if (sort_out_values) hipFree(sort_out_values); + hipMalloc(&sort_out_keys , _max_atoms * sizeof(unsigned)); + hipMalloc(&sort_out_values, _max_atoms * sizeof(int )); + sort_out_size = _max_atoms; + } + if(temp_storage_bytes > sort_temp_storage_size){ + if(sort_temp_storage) hipFree(sort_temp_storage); + hipMalloc(&sort_temp_storage, temp_storage_bytes); + sort_temp_storage_size = temp_storage_bytes; + } + } + #endif + // --------------------------- Device allocations int gpu_bytes=0; success=success && (x.alloc(_max_atoms*4,*dev,UCL_WRITE_ONLY, @@ -184,6 +209,27 @@ bool AtomT::add_fields(const bool charge, const bool rot, return false; } #endif + + #ifdef USE_HIP_DEVICE_SORT + if (_gpu_nbor==1) { + size_t temp_storage_bytes = 0; + if(hipSuccess != hipcub::DeviceRadixSort::SortPairs(nullptr, temp_storage_bytes, sort_out_keys, sort_out_keys, sort_out_values, sort_out_values, _max_atoms)) + return false; + if(sort_out_size < _max_atoms){ + if (sort_out_keys ) hipFree(sort_out_keys); + if (sort_out_values) hipFree(sort_out_values); + hipMalloc(&sort_out_keys , _max_atoms * sizeof(unsigned)); + hipMalloc(&sort_out_values, _max_atoms * sizeof(int )); + sort_out_size = _max_atoms; + } + if(temp_storage_bytes > sort_temp_storage_size){ + if(sort_temp_storage) hipFree(sort_temp_storage); + hipMalloc(&sort_temp_storage, temp_storage_bytes); + sort_temp_storage_size = temp_storage_bytes; + } + } + #endif + success=success && (dev_particle_id.alloc(_max_atoms,*dev, UCL_READ_ONLY)==UCL_SUCCESS); gpu_bytes+=dev_particle_id.row_bytes(); @@ -275,6 +321,19 @@ void AtomT::clear_resize() { if (_gpu_nbor==1) cudppDestroyPlan(sort_plan); #endif + #ifdef USE_HIP_DEVICE_SORT + if (_gpu_nbor==1) { + if(sort_out_keys) hipFree(sort_out_keys); + if(sort_out_values) hipFree(sort_out_values); + if(sort_temp_storage) hipFree(sort_temp_storage); + sort_out_keys = nullptr; + sort_out_values = nullptr; + sort_temp_storage = nullptr; + sort_temp_storage_size = 0; + sort_out_size = 0; + } + #endif + if (_gpu_nbor==2) { host_particle_id.clear(); host_cell_id.clear(); @@ -326,6 +385,22 @@ void AtomT::sort_neighbor(const int num_atoms) { UCL_GERYON_EXIT; } #endif + + #ifdef USE_HIP_DEVICE_SORT + if(sort_out_size < num_atoms){ + printf("AtomT::sort_neighbor: invalid temp buffer size\n"); + UCL_GERYON_EXIT; + } + if(hipSuccess != hipcub::DeviceRadixSort::SortPairs(sort_temp_storage, sort_temp_storage_size, (unsigned *)dev_cell_id.begin(), sort_out_keys, (int *)dev_particle_id.begin(), sort_out_values, num_atoms)){ + printf("AtomT::sort_neighbor: DeviceRadixSort error\n"); + UCL_GERYON_EXIT; + } + if(hipSuccess != hipMemcpy((unsigned *)dev_cell_id.begin(), sort_out_keys , num_atoms*sizeof(unsigned), hipMemcpyDeviceToDevice) || + hipSuccess != hipMemcpy((int *) dev_particle_id.begin(), sort_out_values, num_atoms*sizeof(int ), hipMemcpyDeviceToDevice)){ + printf("AtomT::sort_neighbor: copy output error\n"); + UCL_GERYON_EXIT; + } + #endif } #ifdef GPU_CAST diff --git a/lib/gpu/lal_atom.cu b/lib/gpu/lal_atom.cu index 28ff31c566..99c76ba625 100644 --- a/lib/gpu/lal_atom.cu +++ b/lib/gpu/lal_atom.cu @@ -13,7 +13,7 @@ // email : brownw@ornl.gov // ***************************************************************************/ -#ifdef NV_KERNEL +#if defined(NV_KERNEL) || defined(USE_HIP) #include "lal_preprocessor.h" #endif diff --git a/lib/gpu/lal_atom.h b/lib/gpu/lal_atom.h index 57880d7ca9..e39740d6c8 100644 --- a/lib/gpu/lal_atom.h +++ b/lib/gpu/lal_atom.h @@ -29,6 +29,11 @@ using namespace ucl_opencl; #include "geryon/nvc_mat.h" #include "geryon/nvc_kernel.h" using namespace ucl_cudart; +#elif defined(USE_HIP) +#include "geryon/hip_timer.h" +#include "geryon/hip_mat.h" +#include "geryon/hip_kernel.h" +using namespace ucl_hip; #else #include "geryon/nvd_timer.h" #include "geryon/nvd_mat.h" @@ -477,6 +482,14 @@ class Atom { CUDPPConfiguration sort_config; CUDPPHandle sort_plan; #endif + + #ifdef USE_HIP_DEVICE_SORT + unsigned* sort_out_keys = nullptr; + int* sort_out_values = nullptr; + void* sort_temp_storage = nullptr; + size_t sort_temp_storage_size = 0; + size_t sort_out_size = 0; + #endif }; } diff --git a/lib/gpu/lal_aux_fun1.h b/lib/gpu/lal_aux_fun1.h index 47a216ff6f..5b7150d950 100644 --- a/lib/gpu/lal_aux_fun1.h +++ b/lib/gpu/lal_aux_fun1.h @@ -13,7 +13,7 @@ // email : brownw@ornl.gov // ***************************************************************************/ -#ifdef NV_KERNEL +#if defined(NV_KERNEL) || defined(USE_HIP) #include "lal_preprocessor.h" #endif diff --git a/lib/gpu/lal_base_atomic.h b/lib/gpu/lal_base_atomic.h index e3e9829abc..fef810b17b 100644 --- a/lib/gpu/lal_base_atomic.h +++ b/lib/gpu/lal_base_atomic.h @@ -24,6 +24,8 @@ #include "geryon/ocl_texture.h" #elif defined(USE_CUDART) #include "geryon/nvc_texture.h" +#elif defined(USE_HIP) +#include "geryon/hip_texture.h" #else #include "geryon/nvd_texture.h" #endif diff --git a/lib/gpu/lal_base_charge.h b/lib/gpu/lal_base_charge.h index 64c19554b9..ea81dcdc4e 100644 --- a/lib/gpu/lal_base_charge.h +++ b/lib/gpu/lal_base_charge.h @@ -25,6 +25,8 @@ #include "geryon/ocl_texture.h" #elif defined(USE_CUDART) #include "geryon/nvc_texture.h" +#elif defined(USE_HIP) +#include "geryon/hip_texture.h" #else #include "geryon/nvd_texture.h" #endif diff --git a/lib/gpu/lal_base_dipole.h b/lib/gpu/lal_base_dipole.h index b51c4303cf..31a2a2d5f7 100644 --- a/lib/gpu/lal_base_dipole.h +++ b/lib/gpu/lal_base_dipole.h @@ -23,6 +23,8 @@ #ifdef USE_OPENCL #include "geryon/ocl_texture.h" +#elif defined(USE_HIP) +#include "geryon/hip_texture.h" #else #include "geryon/nvd_texture.h" #endif diff --git a/lib/gpu/lal_base_dpd.h b/lib/gpu/lal_base_dpd.h index 7a75282d0a..1e6f2ab1f2 100644 --- a/lib/gpu/lal_base_dpd.h +++ b/lib/gpu/lal_base_dpd.h @@ -23,6 +23,8 @@ #ifdef USE_OPENCL #include "geryon/ocl_texture.h" +#elif defined(USE_HIP) +#include "geryon/hip_texture.h" #else #include "geryon/nvd_texture.h" #endif diff --git a/lib/gpu/lal_base_ellipsoid.h b/lib/gpu/lal_base_ellipsoid.h index 7deeccbf44..061baac5b6 100644 --- a/lib/gpu/lal_base_ellipsoid.h +++ b/lib/gpu/lal_base_ellipsoid.h @@ -24,6 +24,8 @@ #include "geryon/ocl_texture.h" #elif defined(USE_CUDART) #include "geryon/nvc_texture.h" +#elif defined(USE_HIP) +#include "geryon/hip_texture.h" #else #include "geryon/nvd_texture.h" #endif diff --git a/lib/gpu/lal_base_three.h b/lib/gpu/lal_base_three.h index f5f36863c4..75589f705d 100644 --- a/lib/gpu/lal_base_three.h +++ b/lib/gpu/lal_base_three.h @@ -24,6 +24,8 @@ #include "geryon/ocl_texture.h" #elif defined(USE_CUDART) #include "geryon/nvc_texture.h" +#elif defined(USE_HIP) +#include "geryon/hip_texture.h" #else #include "geryon/nvd_texture.h" #endif diff --git a/lib/gpu/lal_beck.cu b/lib/gpu/lal_beck.cu index 7d72128b5f..bdfa57a0ce 100644 --- a/lib/gpu/lal_beck.cu +++ b/lib/gpu/lal_beck.cu @@ -13,12 +13,12 @@ // email : nguyentd@ornl.gov // ***************************************************************************/ -#ifdef NV_KERNEL +#if defined(NV_KERNEL) || defined(USE_HIP) #include "lal_aux_fun1.h" #ifndef _DOUBLE_DOUBLE -texture pos_tex; +_texture( pos_tex,float4); #else -texture pos_tex; +_texture_2d( pos_tex,int4); #endif #else #define pos_tex x_ diff --git a/lib/gpu/lal_born.cu b/lib/gpu/lal_born.cu index 0ca7fea5fe..6e1d7d95a0 100644 --- a/lib/gpu/lal_born.cu +++ b/lib/gpu/lal_born.cu @@ -13,12 +13,12 @@ // email : nguyentd@ornl.gov // ***************************************************************************/ -#ifdef NV_KERNEL +#if defined(NV_KERNEL) || defined(USE_HIP) #include "lal_aux_fun1.h" #ifndef _DOUBLE_DOUBLE -texture pos_tex; +_texture( pos_tex,float4); #else -texture pos_tex; +_texture_2d( pos_tex,int4); #endif #else #define pos_tex x_ diff --git a/lib/gpu/lal_born_coul_long.cu b/lib/gpu/lal_born_coul_long.cu index 71e5e0ae50..441ce4beb5 100644 --- a/lib/gpu/lal_born_coul_long.cu +++ b/lib/gpu/lal_born_coul_long.cu @@ -13,15 +13,15 @@ // email : nguyentd@ornl.gov // ***************************************************************************/ -#ifdef NV_KERNEL +#if defined(NV_KERNEL) || defined(USE_HIP) #include "lal_aux_fun1.h" #ifndef _DOUBLE_DOUBLE -texture pos_tex; -texture q_tex; +_texture( pos_tex,float4); +_texture( q_tex,float); #else -texture pos_tex; -texture q_tex; +_texture_2d( pos_tex,int4); +_texture( q_tex,int2); #endif #else diff --git a/lib/gpu/lal_born_coul_long_cs.cu b/lib/gpu/lal_born_coul_long_cs.cu index b3e79d9ec8..f4b6da2d0d 100644 --- a/lib/gpu/lal_born_coul_long_cs.cu +++ b/lib/gpu/lal_born_coul_long_cs.cu @@ -13,15 +13,16 @@ // email : ndactrung@gmail.com // ***************************************************************************/ -#ifdef NV_KERNEL +#if defined(NV_KERNEL) || defined(USE_HIP) #include "lal_aux_fun1.h" + #ifndef _DOUBLE_DOUBLE -texture pos_tex; -texture q_tex; +_texture( pos_tex,float4); +_texture( q_tex,float); #else -texture pos_tex; -texture q_tex; +_texture_2d( pos_tex,int4); +_texture( q_tex,int2); #endif #else diff --git a/lib/gpu/lal_born_coul_wolf.cu b/lib/gpu/lal_born_coul_wolf.cu index 2c2249feeb..e34367e18b 100644 --- a/lib/gpu/lal_born_coul_wolf.cu +++ b/lib/gpu/lal_born_coul_wolf.cu @@ -13,15 +13,15 @@ // email : nguyentd@ornl.gov // ***************************************************************************/ -#ifdef NV_KERNEL +#if defined(NV_KERNEL) || defined(USE_HIP) #include "lal_aux_fun1.h" #ifndef _DOUBLE_DOUBLE -texture pos_tex; -texture q_tex; +_texture( pos_tex,float4); +_texture( q_tex,float); #else -texture pos_tex; -texture q_tex; +_texture_2d( pos_tex,int4); +_texture( q_tex,int2); #endif #else diff --git a/lib/gpu/lal_born_coul_wolf_cs.cu b/lib/gpu/lal_born_coul_wolf_cs.cu index 847387bfe8..1a02420736 100644 --- a/lib/gpu/lal_born_coul_wolf_cs.cu +++ b/lib/gpu/lal_born_coul_wolf_cs.cu @@ -13,15 +13,15 @@ // email : ndactrung@gmail.com // ***************************************************************************/ -#ifdef NV_KERNEL +#if defined(NV_KERNEL) || defined(USE_HIP) #include "lal_aux_fun1.h" #ifndef _DOUBLE_DOUBLE -texture pos_tex; -texture q_tex; +_texture( pos_tex,float4); +_texture( q_tex,float); #else -texture pos_tex; -texture q_tex; +_texture_2d( pos_tex,int4); +_texture( q_tex,int2); #endif #else diff --git a/lib/gpu/lal_buck.cu b/lib/gpu/lal_buck.cu index c1e1c7d7e2..c23186f2d8 100644 --- a/lib/gpu/lal_buck.cu +++ b/lib/gpu/lal_buck.cu @@ -13,12 +13,12 @@ // email : nguyentd@ornl.gov // ***************************************************************************/ -#ifdef NV_KERNEL +#if defined(NV_KERNEL) || defined(USE_HIP) #include "lal_aux_fun1.h" #ifndef _DOUBLE_DOUBLE -texture pos_tex; +_texture( pos_tex,float4); #else -texture pos_tex; +_texture_2d( pos_tex,int4); #endif #else #define pos_tex x_ diff --git a/lib/gpu/lal_buck_coul.cu b/lib/gpu/lal_buck_coul.cu index 6f0d414825..2282532f4a 100644 --- a/lib/gpu/lal_buck_coul.cu +++ b/lib/gpu/lal_buck_coul.cu @@ -13,15 +13,15 @@ // email : nguyentd@ornl.gov // ***************************************************************************/ -#ifdef NV_KERNEL +#if defined(NV_KERNEL) || defined(USE_HIP) #include "lal_aux_fun1.h" #ifndef _DOUBLE_DOUBLE -texture pos_tex; -texture q_tex; +_texture( pos_tex,float4); +_texture( q_tex,float); #else -texture pos_tex; -texture q_tex; +_texture_2d( pos_tex,int4); +_texture( q_tex,int2); #endif #else diff --git a/lib/gpu/lal_buck_coul_long.cu b/lib/gpu/lal_buck_coul_long.cu index da3237a31f..469c235571 100644 --- a/lib/gpu/lal_buck_coul_long.cu +++ b/lib/gpu/lal_buck_coul_long.cu @@ -13,15 +13,15 @@ // email : nguyentd@ornl.gov // ***************************************************************************/ -#ifdef NV_KERNEL +#if defined(NV_KERNEL) || defined(USE_HIP) #include "lal_aux_fun1.h" #ifndef _DOUBLE_DOUBLE -texture pos_tex; -texture q_tex; +_texture( pos_tex,float4); +_texture( q_tex,float); #else -texture pos_tex; -texture q_tex; +_texture_2d( pos_tex,int4); +_texture( q_tex,int2); #endif #else diff --git a/lib/gpu/lal_charmm_long.cu b/lib/gpu/lal_charmm_long.cu index 244131f833..a797707057 100644 --- a/lib/gpu/lal_charmm_long.cu +++ b/lib/gpu/lal_charmm_long.cu @@ -13,15 +13,15 @@ // email : brownw@ornl.gov // ***************************************************************************/ -#ifdef NV_KERNEL +#if defined(NV_KERNEL) || defined(USE_HIP) #include "lal_aux_fun1.h" #ifndef _DOUBLE_DOUBLE -texture pos_tex; -texture q_tex; +_texture( pos_tex,float4); +_texture( q_tex,float); #else -texture pos_tex; -texture q_tex; +_texture_2d( pos_tex,int4); +_texture( q_tex,int2); #endif #else diff --git a/lib/gpu/lal_colloid.cu b/lib/gpu/lal_colloid.cu index 28a9809b19..437faff25b 100644 --- a/lib/gpu/lal_colloid.cu +++ b/lib/gpu/lal_colloid.cu @@ -13,12 +13,12 @@ // email : nguyentd@ornl.gov // ***************************************************************************/ -#ifdef NV_KERNEL +#if defined(NV_KERNEL) || defined(USE_HIP) #include "lal_aux_fun1.h" #ifndef _DOUBLE_DOUBLE -texture pos_tex; +_texture( pos_tex,float4); #else -texture pos_tex; +_texture_2d( pos_tex,int4); #endif #else #define pos_tex x_ diff --git a/lib/gpu/lal_coul.cu b/lib/gpu/lal_coul.cu index 503e674c81..21d849bb6f 100644 --- a/lib/gpu/lal_coul.cu +++ b/lib/gpu/lal_coul.cu @@ -13,15 +13,15 @@ // email : ndtrung@umich.edu // ***************************************************************************/ -#ifdef NV_KERNEL +#if defined(NV_KERNEL) || defined(USE_HIP) #include "lal_aux_fun1.h" #ifndef _DOUBLE_DOUBLE -texture pos_tex; -texture q_tex; +_texture( pos_tex,float4); +_texture( q_tex,float); #else -texture pos_tex; -texture q_tex; +_texture_2d( pos_tex,int4); +_texture( q_tex,int2); #endif #else diff --git a/lib/gpu/lal_coul_debye.cu b/lib/gpu/lal_coul_debye.cu index 464a1b18de..ab8bc5b961 100644 --- a/lib/gpu/lal_coul_debye.cu +++ b/lib/gpu/lal_coul_debye.cu @@ -13,15 +13,15 @@ // email : ndtrung@umich.edu // ***************************************************************************/ -#ifdef NV_KERNEL +#if defined(NV_KERNEL) || defined(USE_HIP) #include "lal_aux_fun1.h" #ifndef _DOUBLE_DOUBLE -texture pos_tex; -texture q_tex; +_texture( pos_tex,float4); +_texture( q_tex,float); #else -texture pos_tex; -texture q_tex; +_texture_2d( pos_tex,int4); +_texture( q_tex,int2); #endif #else diff --git a/lib/gpu/lal_coul_dsf.cu b/lib/gpu/lal_coul_dsf.cu index 82c44cd382..147ac68552 100644 --- a/lib/gpu/lal_coul_dsf.cu +++ b/lib/gpu/lal_coul_dsf.cu @@ -13,15 +13,15 @@ // email : nguyentd@ornl.gov // ***************************************************************************/ -#ifdef NV_KERNEL +#if defined(NV_KERNEL) || defined(USE_HIP) #include "lal_aux_fun1.h" #ifndef _DOUBLE_DOUBLE -texture pos_tex; -texture q_tex; +_texture( pos_tex,float4); +_texture( q_tex,float); #else -texture pos_tex; -texture q_tex; +_texture_2d( pos_tex,int4); +_texture( q_tex,int2); #endif #else diff --git a/lib/gpu/lal_coul_long.cu b/lib/gpu/lal_coul_long.cu index 365195e00c..f97a039629 100644 --- a/lib/gpu/lal_coul_long.cu +++ b/lib/gpu/lal_coul_long.cu @@ -13,15 +13,15 @@ // email : a.kohlmeyer@temple.edu // ***************************************************************************/ -#ifdef NV_KERNEL +#if defined(NV_KERNEL) || defined(USE_HIP) #include "lal_aux_fun1.h" #ifndef _DOUBLE_DOUBLE -texture pos_tex; -texture q_tex; +_texture( pos_tex,float4); +_texture( q_tex,float); #else -texture pos_tex; -texture q_tex; +_texture_2d( pos_tex,int4); +_texture( q_tex,int2); #endif #else diff --git a/lib/gpu/lal_coul_long_cs.cu b/lib/gpu/lal_coul_long_cs.cu index 3c34666131..1479157944 100644 --- a/lib/gpu/lal_coul_long_cs.cu +++ b/lib/gpu/lal_coul_long_cs.cu @@ -13,15 +13,15 @@ // email : ndactrung@gmail.com // ***************************************************************************/ -#ifdef NV_KERNEL +#if defined(NV_KERNEL) || defined(USE_HIP) #include "lal_aux_fun1.h" #ifndef _DOUBLE_DOUBLE -texture pos_tex; -texture q_tex; +_texture( pos_tex,float4); +_texture( q_tex,float); #else -texture pos_tex; -texture q_tex; +_texture_2d( pos_tex,int4); +_texture( q_tex,int2); #endif #else diff --git a/lib/gpu/lal_device.cpp b/lib/gpu/lal_device.cpp index 5bd306ea5b..aaf74ed28c 100644 --- a/lib/gpu/lal_device.cpp +++ b/lib/gpu/lal_device.cpp @@ -268,7 +268,7 @@ int DeviceT::init(Answer &ans, const bool charge, gpu_nbor=1; else if (_gpu_mode==Device::GPU_HYB_NEIGH) gpu_nbor=2; - #ifndef USE_CUDPP + #if !defined(USE_CUDPP) && !defined(USE_HIP_DEVICE_SORT) if (gpu_nbor==1) gpu_nbor=2; #endif @@ -341,7 +341,7 @@ int DeviceT::init_nbor(Neighbor *nbor, const int nlocal, gpu_nbor=1; else if (_gpu_mode==Device::GPU_HYB_NEIGH) gpu_nbor=2; - #ifndef USE_CUDPP + #if !defined(USE_CUDPP) && !defined(USE_HIP_DEVICE_SORT) if (gpu_nbor==1) gpu_nbor=2; #endif @@ -712,7 +712,7 @@ int DeviceT::compile_kernels() { gpu_lib_data.update_host(false); _ptx_arch=static_cast(gpu_lib_data[0])/100.0; - #ifndef USE_OPENCL + #if !(defined(USE_OPENCL) || defined(USE_HIP)) if (_ptx_arch>gpu->arch() || floor(_ptx_arch)arch())) return -4; #endif diff --git a/lib/gpu/lal_device.cu b/lib/gpu/lal_device.cu index 37d0758845..afc7a0b988 100644 --- a/lib/gpu/lal_device.cu +++ b/lib/gpu/lal_device.cu @@ -13,7 +13,7 @@ // email : brownw@ornl.gov // *************************************************************************** -#ifdef NV_KERNEL +#if defined(NV_KERNEL) || defined(USE_HIP) #include "lal_preprocessor.h" #endif diff --git a/lib/gpu/lal_dipole_lj.cu b/lib/gpu/lal_dipole_lj.cu index 745bdb7f27..8ea49e7f60 100644 --- a/lib/gpu/lal_dipole_lj.cu +++ b/lib/gpu/lal_dipole_lj.cu @@ -13,16 +13,16 @@ // email : nguyentd@ornl.gov // ***************************************************************************/ -#ifdef NV_KERNEL +#if defined(NV_KERNEL) || defined(USE_HIP) #include "lal_aux_fun1.h" #ifndef _DOUBLE_DOUBLE -texture pos_tex; -texture q_tex; -texture mu_tex; +_texture( pos_tex,float4); +_texture( q_tex,float); +_texture( mu_tex,float4); #else -texture pos_tex; -texture q_tex; -texture mu_tex; +_texture_2d( pos_tex,int4); +_texture( q_tex,int2); +_texture_2d( mu_tex,int4); #endif #else diff --git a/lib/gpu/lal_dipole_lj_sf.cu b/lib/gpu/lal_dipole_lj_sf.cu index 9847e84823..9d753d9b63 100644 --- a/lib/gpu/lal_dipole_lj_sf.cu +++ b/lib/gpu/lal_dipole_lj_sf.cu @@ -13,17 +13,17 @@ // email : nguyentd@ornl.gov // ***************************************************************************/ -#ifdef NV_KERNEL +#if defined(NV_KERNEL) || defined(USE_HIP) #include "lal_aux_fun1.h" #ifndef _DOUBLE_DOUBLE -texture pos_tex; -texture q_tex; -texture mu_tex; +_texture( pos_tex,float4); +_texture( q_tex,float); +_texture( mu_tex,float4); #else -texture pos_tex; -texture q_tex; -texture mu_tex; +_texture_2d( pos_tex,int4); +_texture( q_tex,int2); +_texture_2d( mu_tex,int4); #endif #else diff --git a/lib/gpu/lal_dipole_long_lj.cu b/lib/gpu/lal_dipole_long_lj.cu index f888dece9b..95c3b7a3db 100644 --- a/lib/gpu/lal_dipole_long_lj.cu +++ b/lib/gpu/lal_dipole_long_lj.cu @@ -13,16 +13,16 @@ // email : nguyentd@ornl.gov // ***************************************************************************/ -#ifdef NV_KERNEL +#if defined(NV_KERNEL) || defined(USE_HIP) #include "lal_aux_fun1.h" #ifndef _DOUBLE_DOUBLE -texture pos_tex; -texture q_tex; -texture mu_tex; +_texture( pos_tex,float4); +_texture( q_tex,float); +_texture( mu_tex,float4); #else -texture pos_tex; -texture q_tex; -texture mu_tex; +_texture_2d( pos_tex,int4); +_texture( q_tex,int2); +_texture_2d( mu_tex,int4); #endif #else diff --git a/lib/gpu/lal_dpd.cu b/lib/gpu/lal_dpd.cu index 462401ad70..d97f430f77 100644 --- a/lib/gpu/lal_dpd.cu +++ b/lib/gpu/lal_dpd.cu @@ -13,14 +13,14 @@ // email : nguyentd@ornl.gov // ***************************************************************************/ -#ifdef NV_KERNEL +#if defined(NV_KERNEL) || defined(USE_HIP) #include "lal_aux_fun1.h" #ifndef _DOUBLE_DOUBLE -texture pos_tex; -texture vel_tex; +_texture( pos_tex,float4); +_texture( vel_tex,float4); #else -texture pos_tex; -texture vel_tex; +_texture_2d( pos_tex,int4); +_texture_2d( vel_tex,int4); #endif #else #define pos_tex x_ diff --git a/lib/gpu/lal_eam.cu b/lib/gpu/lal_eam.cu index 13440b7d45..9427b1832f 100644 --- a/lib/gpu/lal_eam.cu +++ b/lib/gpu/lal_eam.cu @@ -13,27 +13,27 @@ // email : brownw@ornl.gov nguyentd@ornl.gov // ***************************************************************************/ -#ifdef NV_KERNEL +#if defined(NV_KERNEL) || defined(USE_HIP) #include "lal_aux_fun1.h" #ifndef _DOUBLE_DOUBLE -texture pos_tex; -texture fp_tex; -texture rhor_sp1_tex; -texture rhor_sp2_tex; -texture frho_sp1_tex; -texture frho_sp2_tex; -texture z2r_sp1_tex; -texture z2r_sp2_tex; +_texture( pos_tex,float4); +_texture( fp_tex,float); +_texture( rhor_sp1_tex,float4); +_texture( rhor_sp2_tex,float4); +_texture( frho_sp1_tex,float4); +_texture( frho_sp2_tex,float4); +_texture( z2r_sp1_tex,float4); +_texture( z2r_sp2_tex,float4); #else -texture pos_tex; -texture fp_tex; -texture rhor_sp1_tex; -texture rhor_sp2_tex; -texture frho_sp1_tex; -texture frho_sp2_tex; -texture z2r_sp1_tex; -texture z2r_sp2_tex; +_texture( pos_tex,int4); +_texture( fp_tex,int2); +_texture( rhor_sp1_tex,int4); +_texture( rhor_sp2_tex,int4); +_texture( frho_sp1_tex,int4); +_texture( frho_sp2_tex,int4); +_texture( z2r_sp1_tex,int4); +_texture( z2r_sp2_tex,int4); #endif #else diff --git a/lib/gpu/lal_ellipsoid_extra.h b/lib/gpu/lal_ellipsoid_extra.h index 71668f5e02..e6122c7404 100644 --- a/lib/gpu/lal_ellipsoid_extra.h +++ b/lib/gpu/lal_ellipsoid_extra.h @@ -18,12 +18,14 @@ enum{SPHERE_SPHERE,SPHERE_ELLIPSE,ELLIPSE_SPHERE,ELLIPSE_ELLIPSE}; -#ifdef NV_KERNEL +#if defined(NV_KERNEL) || defined(USE_HIP) #include "lal_aux_fun1.h" #ifndef _DOUBLE_DOUBLE -texture pos_tex, quat_tex; +_texture( pos_tex, float4); +_texture( quat_tex,float4); #else -texture pos_tex, quat_tex; +_texture_2d( pos_tex,int4); +_texture_2d( quat_tex,int4); #endif #else #define pos_tex x_ diff --git a/lib/gpu/lal_ellipsoid_nbor.cu b/lib/gpu/lal_ellipsoid_nbor.cu index cac77f5dd3..e6eedc7159 100644 --- a/lib/gpu/lal_ellipsoid_nbor.cu +++ b/lib/gpu/lal_ellipsoid_nbor.cu @@ -13,12 +13,12 @@ // email : brownw@ornl.gov // ***************************************************************************/ -#ifdef NV_KERNEL +#if defined(NV_KERNEL) || defined(USE_HIP) #include "lal_preprocessor.h" #ifndef _DOUBLE_DOUBLE -texture pos_tex; +_texture( pos_tex,float4); #else -texture pos_tex; +_texture_2d( pos_tex,int4); #endif #else #define pos_tex x_ diff --git a/lib/gpu/lal_gauss.cu b/lib/gpu/lal_gauss.cu index 98e71ea413..f9d3741537 100644 --- a/lib/gpu/lal_gauss.cu +++ b/lib/gpu/lal_gauss.cu @@ -13,12 +13,12 @@ // email : nguyentd@ornl.gov // ***************************************************************************/ -#ifdef NV_KERNEL +#if defined(NV_KERNEL) || defined(USE_HIP) #include "lal_aux_fun1.h" #ifndef _DOUBLE_DOUBLE -texture pos_tex; +_texture( pos_tex,float4); #else -texture pos_tex; +_texture_2d( pos_tex,int4); #endif #else #define pos_tex x_ diff --git a/lib/gpu/lal_gayberne.cu b/lib/gpu/lal_gayberne.cu index cd1ee59fc6..5c035da004 100644 --- a/lib/gpu/lal_gayberne.cu +++ b/lib/gpu/lal_gayberne.cu @@ -13,7 +13,7 @@ // email : brownw@ornl.gov // ***************************************************************************/ -#ifdef NV_KERNEL +#if defined(NV_KERNEL) || defined(USE_HIP) #include "lal_ellipsoid_extra.h" #endif diff --git a/lib/gpu/lal_gayberne_lj.cu b/lib/gpu/lal_gayberne_lj.cu index 7925b72784..eb9c797dc7 100644 --- a/lib/gpu/lal_gayberne_lj.cu +++ b/lib/gpu/lal_gayberne_lj.cu @@ -13,7 +13,7 @@ // email : brownw@ornl.gov // ***************************************************************************/ -#ifdef NV_KERNEL +#if defined(NV_KERNEL) || defined(USE_HIP) #include "lal_ellipsoid_extra.h" #endif diff --git a/lib/gpu/lal_lj.cu b/lib/gpu/lal_lj.cu index 5838ac95cf..716346a83d 100644 --- a/lib/gpu/lal_lj.cu +++ b/lib/gpu/lal_lj.cu @@ -13,12 +13,12 @@ // email : brownw@ornl.gov // ***************************************************************************/ -#ifdef NV_KERNEL +#if defined(NV_KERNEL) || defined(USE_HIP) #include "lal_aux_fun1.h" #ifndef _DOUBLE_DOUBLE -texture pos_tex; +_texture( pos_tex,float4); #else -texture pos_tex; +_texture_2d( pos_tex,int4); #endif #else #define pos_tex x_ diff --git a/lib/gpu/lal_lj96.cu b/lib/gpu/lal_lj96.cu index 8dd63ef920..aa06caa4ae 100644 --- a/lib/gpu/lal_lj96.cu +++ b/lib/gpu/lal_lj96.cu @@ -13,12 +13,12 @@ // email : brownw@ornl.gov // ***************************************************************************/ -#ifdef NV_KERNEL +#if defined(NV_KERNEL) || defined(USE_HIP) #include "lal_aux_fun1.h" #ifndef _DOUBLE_DOUBLE -texture pos_tex; +_texture( pos_tex,float4); #else -texture pos_tex; +_texture_2d( pos_tex,int4); #endif #else #define pos_tex x_ diff --git a/lib/gpu/lal_lj_class2_long.cu b/lib/gpu/lal_lj_class2_long.cu index 41ceca35d7..4e1bf9c1f7 100644 --- a/lib/gpu/lal_lj_class2_long.cu +++ b/lib/gpu/lal_lj_class2_long.cu @@ -13,15 +13,15 @@ // email : brownw@ornl.gov // ***************************************************************************/ -#ifdef NV_KERNEL +#if defined(NV_KERNEL) || defined(USE_HIP) #include "lal_aux_fun1.h" #ifndef _DOUBLE_DOUBLE -texture pos_tex; -texture q_tex; +_texture( pos_tex,float4); +_texture( q_tex,float); #else -texture pos_tex; -texture q_tex; +_texture_2d( pos_tex,int4); +_texture( q_tex,int2); #endif #else diff --git a/lib/gpu/lal_lj_coul.cu b/lib/gpu/lal_lj_coul.cu index 5c7f0da46f..cd72f72d97 100644 --- a/lib/gpu/lal_lj_coul.cu +++ b/lib/gpu/lal_lj_coul.cu @@ -13,15 +13,15 @@ // email : brownw@ornl.gov // ***************************************************************************/ -#ifdef NV_KERNEL +#if defined(NV_KERNEL) || defined(USE_HIP) #include "lal_aux_fun1.h" #ifndef _DOUBLE_DOUBLE -texture pos_tex; -texture q_tex; +_texture( pos_tex,float4); +_texture( q_tex,float); #else -texture pos_tex; -texture q_tex; +_texture_2d( pos_tex,int4); +_texture( q_tex,int2); #endif #else diff --git a/lib/gpu/lal_lj_coul_debye.cu b/lib/gpu/lal_lj_coul_debye.cu index 91b105b3da..40b7046623 100644 --- a/lib/gpu/lal_lj_coul_debye.cu +++ b/lib/gpu/lal_lj_coul_debye.cu @@ -13,15 +13,15 @@ // email : nguyentd@ornl.gov // ***************************************************************************/ -#ifdef NV_KERNEL +#if defined(NV_KERNEL) || defined(USE_HIP) #include "lal_aux_fun1.h" #ifndef _DOUBLE_DOUBLE -texture pos_tex; -texture q_tex; +_texture( pos_tex,float4); +_texture( q_tex,float); #else -texture pos_tex; -texture q_tex; +_texture_2d( pos_tex,int4); +_texture( q_tex,int2); #endif #else diff --git a/lib/gpu/lal_lj_coul_long.cu b/lib/gpu/lal_lj_coul_long.cu index 0e25bb2dbc..6a09cc4b75 100644 --- a/lib/gpu/lal_lj_coul_long.cu +++ b/lib/gpu/lal_lj_coul_long.cu @@ -13,15 +13,15 @@ // email : brownw@ornl.gov // ***************************************************************************/ -#ifdef NV_KERNEL +#if defined(NV_KERNEL) || defined(USE_HIP) #include "lal_aux_fun1.h" #ifndef _DOUBLE_DOUBLE -texture pos_tex; -texture q_tex; +_texture( pos_tex,float4); +_texture( q_tex,float); #else -texture pos_tex; -texture q_tex; +_texture_2d( pos_tex,int4); +_texture( q_tex,int2); #endif #else diff --git a/lib/gpu/lal_lj_coul_msm.cu b/lib/gpu/lal_lj_coul_msm.cu index 3f73c6f47d..c8eaa47b3d 100644 --- a/lib/gpu/lal_lj_coul_msm.cu +++ b/lib/gpu/lal_lj_coul_msm.cu @@ -13,19 +13,19 @@ // email : nguyentd@ornl.gov // ***************************************************************************/ -#ifdef NV_KERNEL +#if defined(NV_KERNEL) || defined(USE_HIP) #include "lal_aux_fun1.h" #ifndef _DOUBLE_DOUBLE -texture pos_tex; -texture q_tex; -texture gcons_tex; -texture dgcons_tex; +_texture( pos_tex,float4); +_texture( q_tex,float); +_texture( gcons_tex,float); +_texture( dgcons_tex,float); #else -texture pos_tex; -texture q_tex; -texture gcons_tex; -texture dgcons_tex; +_texture_2d( pos_tex,int4); +_texture( q_tex,int2); +_texture( gcons_tex,int2); +_texture( dgcons_tex,int2); #endif #else diff --git a/lib/gpu/lal_lj_cubic.cu b/lib/gpu/lal_lj_cubic.cu index 683c6b2aac..b6a0768a36 100644 --- a/lib/gpu/lal_lj_cubic.cu +++ b/lib/gpu/lal_lj_cubic.cu @@ -13,12 +13,12 @@ // email : ndactrung@gmail.com // ***************************************************************************/ -#ifdef NV_KERNEL +#if defined(NV_KERNEL) || defined(USE_HIP) #include "lal_aux_fun1.h" #ifndef _DOUBLE_DOUBLE -texture pos_tex; +_texture( pos_tex,float4); #else -texture pos_tex; +_texture_2d( pos_tex,int4); #endif #else #define pos_tex x_ diff --git a/lib/gpu/lal_lj_dsf.cu b/lib/gpu/lal_lj_dsf.cu index 323576fe77..2475743ccc 100644 --- a/lib/gpu/lal_lj_dsf.cu +++ b/lib/gpu/lal_lj_dsf.cu @@ -13,15 +13,15 @@ // email : brownw@ornl.gov // ***************************************************************************/ -#ifdef NV_KERNEL +#if defined(NV_KERNEL) || defined(USE_HIP) #include "lal_aux_fun1.h" #ifndef _DOUBLE_DOUBLE -texture pos_tex; -texture q_tex; +_texture( pos_tex,float4); +_texture( q_tex,float); #else -texture pos_tex; -texture q_tex; +_texture_2d( pos_tex,int4); +_texture( q_tex,int2); #endif #else diff --git a/lib/gpu/lal_lj_expand.cu b/lib/gpu/lal_lj_expand.cu index 9281ad27bd..4496835588 100644 --- a/lib/gpu/lal_lj_expand.cu +++ b/lib/gpu/lal_lj_expand.cu @@ -13,13 +13,13 @@ // email : ibains@nvidia.com // ***************************************************************************/ -#ifdef NV_KERNEL +#if defined(NV_KERNEL) || defined(USE_HIP) #include "lal_aux_fun1.h" #ifndef _DOUBLE_DOUBLE -texture pos_tex; +_texture( pos_tex,float4); #else -texture pos_tex; +_texture_2d( pos_tex,int4); #endif #else diff --git a/lib/gpu/lal_lj_expand_coul_long.cu b/lib/gpu/lal_lj_expand_coul_long.cu index aa8f02be8c..e9de9bab27 100644 --- a/lib/gpu/lal_lj_expand_coul_long.cu +++ b/lib/gpu/lal_lj_expand_coul_long.cu @@ -13,15 +13,15 @@ // email : ndactrung@gmail.com // ***************************************************************************/ -#ifdef NV_KERNEL +#if defined(NV_KERNEL) || defined(USE_HIP) #include "lal_aux_fun1.h" #ifndef _DOUBLE_DOUBLE -texture pos_tex; -texture q_tex; +_texture( pos_tex,float4); +_texture( q_tex,float); #else -texture pos_tex; -texture q_tex; +_texture_2d( pos_tex,int4); +_texture( q_tex,int2); #endif #else diff --git a/lib/gpu/lal_lj_gromacs.cu b/lib/gpu/lal_lj_gromacs.cu index 93dc3d9456..dcef79dc90 100644 --- a/lib/gpu/lal_lj_gromacs.cu +++ b/lib/gpu/lal_lj_gromacs.cu @@ -13,13 +13,13 @@ // email : nguyentd@ornl.gov // ***************************************************************************/ -#ifdef NV_KERNEL +#if defined(NV_KERNEL) || defined(USE_HIP) #include "lal_aux_fun1.h" #ifndef _DOUBLE_DOUBLE -texture pos_tex; +_texture( pos_tex,float4); #else -texture pos_tex; +_texture_2d( pos_tex,int4); #endif #else diff --git a/lib/gpu/lal_lj_sdk.cu b/lib/gpu/lal_lj_sdk.cu index 01b2cdd18d..a11b1c7887 100644 --- a/lib/gpu/lal_lj_sdk.cu +++ b/lib/gpu/lal_lj_sdk.cu @@ -13,12 +13,12 @@ // email : brownw@ornl.gov // ***************************************************************************/ -#ifdef NV_KERNEL +#if defined(NV_KERNEL) || defined(USE_HIP) #include "lal_aux_fun1.h" #ifndef _DOUBLE_DOUBLE -texture pos_tex; +_texture( pos_tex,float4); #else -texture pos_tex; +_texture_2d( pos_tex,int4); #endif #else #define pos_tex x_ diff --git a/lib/gpu/lal_lj_sdk_long.cu b/lib/gpu/lal_lj_sdk_long.cu index 5ff64b2254..e28fa19db4 100644 --- a/lib/gpu/lal_lj_sdk_long.cu +++ b/lib/gpu/lal_lj_sdk_long.cu @@ -13,15 +13,15 @@ // email : brownw@ornl.gov // ***************************************************************************/ -#ifdef NV_KERNEL +#if defined(NV_KERNEL) || defined(USE_HIP) #include "lal_aux_fun1.h" #ifndef _DOUBLE_DOUBLE -texture pos_tex; -texture q_tex; +_texture( pos_tex,float4); +_texture( q_tex,float); #else -texture pos_tex; -texture q_tex; +_texture_2d( pos_tex,int4); +_texture( q_tex,int2); #endif #else diff --git a/lib/gpu/lal_lj_tip4p_long.cpp b/lib/gpu/lal_lj_tip4p_long.cpp index d44edc8cbd..0b781300c7 100644 --- a/lib/gpu/lal_lj_tip4p_long.cpp +++ b/lib/gpu/lal_lj_tip4p_long.cpp @@ -23,7 +23,7 @@ const char *lj_tip4p=0; #include "lal_lj_tip4p_long.h" #include -using namespace LAMMPS_AL; +namespace LAMMPS_AL { #define LJTIP4PLongT LJ_TIP4PLong extern Device device; @@ -370,6 +370,5 @@ int** LJTIP4PLongT::compute(const int ago, const int inum_full, } - - template class LJ_TIP4PLong; +} diff --git a/lib/gpu/lal_lj_tip4p_long.cu b/lib/gpu/lal_lj_tip4p_long.cu index 147c460795..092513da4d 100644 --- a/lib/gpu/lal_lj_tip4p_long.cu +++ b/lib/gpu/lal_lj_tip4p_long.cu @@ -13,7 +13,7 @@ // email : thevsevak@gmail.com // *************************************************************************** -#ifdef NV_KERNEL +#if defined(NV_KERNEL) || defined(USE_HIP) #include "lal_aux_fun1.h" #ifdef LAMMPS_SMALLBIG @@ -27,11 +27,11 @@ #define tagint int #endif #ifndef _DOUBLE_DOUBLE -texture pos_tex; -texture q_tex; +_texture( pos_tex,float4); +_texture( q_tex,float); #else -texture pos_tex; -texture q_tex; +_texture_2d( pos_tex,int4); +_texture( q_tex,int2); #endif #else diff --git a/lib/gpu/lal_mie.cu b/lib/gpu/lal_mie.cu index 33018566eb..e2ede4d3a1 100644 --- a/lib/gpu/lal_mie.cu +++ b/lib/gpu/lal_mie.cu @@ -13,12 +13,12 @@ // email : nguyentd@ornl.gov // ***************************************************************************/ -#ifdef NV_KERNEL +#if defined(NV_KERNEL) || defined(USE_HIP) #include "lal_aux_fun1.h" #ifndef _DOUBLE_DOUBLE -texture pos_tex; +_texture( pos_tex,float4); #else -texture pos_tex; +_texture_2d( pos_tex,int4); #endif #else #define pos_tex x_ diff --git a/lib/gpu/lal_morse.cu b/lib/gpu/lal_morse.cu index 0a14071d19..7e4e0e54fa 100644 --- a/lib/gpu/lal_morse.cu +++ b/lib/gpu/lal_morse.cu @@ -13,13 +13,13 @@ // email : brownw@ornl.gov // ***************************************************************************/ -#ifdef NV_KERNEL +#if defined(NV_KERNEL) || defined(USE_HIP) #include "lal_aux_fun1.h" #ifndef _DOUBLE_DOUBLE -texture pos_tex; +_texture( pos_tex,float4); #else -texture pos_tex; +_texture_2d( pos_tex,int4); #endif #else diff --git a/lib/gpu/lal_neighbor_cpu.cu b/lib/gpu/lal_neighbor_cpu.cu index d005eb9f97..29141a8b90 100644 --- a/lib/gpu/lal_neighbor_cpu.cu +++ b/lib/gpu/lal_neighbor_cpu.cu @@ -13,7 +13,7 @@ // email : brownw@ornl.gov // ***************************************************************************/ -#ifdef NV_KERNEL +#if defined(NV_KERNEL) || defined(USE_HIP) #include "lal_preprocessor.h" #endif diff --git a/lib/gpu/lal_neighbor_gpu.cu b/lib/gpu/lal_neighbor_gpu.cu index 83692a24e4..8a2b603217 100644 --- a/lib/gpu/lal_neighbor_gpu.cu +++ b/lib/gpu/lal_neighbor_gpu.cu @@ -14,7 +14,7 @@ // email : penwang@nvidia.com, brownw@ornl.gov // ***************************************************************************/ -#ifdef NV_KERNEL +#if defined(NV_KERNEL) || defined(USE_HIP) #include "lal_preprocessor.h" #ifdef LAMMPS_SMALLBIG #define tagint int @@ -27,9 +27,9 @@ #define tagint int #endif #ifndef _DOUBLE_DOUBLE -texture pos_tex; +_texture( pos_tex,float4); #else -texture pos_tex; +_texture_2d( pos_tex,int4); #endif __kernel void calc_cell_id(const numtyp4 *restrict pos, diff --git a/lib/gpu/lal_neighbor_shared.h b/lib/gpu/lal_neighbor_shared.h index 834ee8406d..5cfc4e4767 100644 --- a/lib/gpu/lal_neighbor_shared.h +++ b/lib/gpu/lal_neighbor_shared.h @@ -24,6 +24,10 @@ using namespace ucl_opencl; #include "geryon/nvc_kernel.h" #include "geryon/nvc_texture.h" using namespace ucl_cudart; +#elif defined(USE_HIP) +#include "geryon/hip_kernel.h" +#include "geryon/hip_texture.h" +using namespace ucl_hip; #else #include "geryon/nvd_kernel.h" #include "geryon/nvd_texture.h" diff --git a/lib/gpu/lal_pppm.cu b/lib/gpu/lal_pppm.cu index 24636b9a93..6a7408c720 100644 --- a/lib/gpu/lal_pppm.cu +++ b/lib/gpu/lal_pppm.cu @@ -13,15 +13,15 @@ // email : brownw@ornl.gov // ***************************************************************************/ -#ifdef NV_KERNEL +#if defined(NV_KERNEL) || defined(USE_HIP) #include "lal_preprocessor.h" #ifndef _DOUBLE_DOUBLE -texture pos_tex; -texture q_tex; +_texture( pos_tex,float4); +_texture( q_tex,float); #else -texture pos_tex; -texture q_tex; +_texture_2d( pos_tex,int4); +_texture( q_tex,int2); #endif // Allow PPPM to compile without atomics for NVIDIA 1.0 cards, error diff --git a/lib/gpu/lal_pppm.h b/lib/gpu/lal_pppm.h index 045423e079..bc5f216076 100644 --- a/lib/gpu/lal_pppm.h +++ b/lib/gpu/lal_pppm.h @@ -23,6 +23,8 @@ #include "geryon/ocl_texture.h" #elif defined(USE_CUDART) #include "geryon/nvc_texture.h" +#elif defined(USE_HIP) +#include "geryon/hip_texture.h" #else #include "geryon/nvd_texture.h" #endif diff --git a/lib/gpu/lal_precision.h b/lib/gpu/lal_precision.h index d5b1b9b6c0..7f82ba18aa 100644 --- a/lib/gpu/lal_precision.h +++ b/lib/gpu/lal_precision.h @@ -24,9 +24,11 @@ struct _lgpu_int2 { int x; int y; }; +#ifndef USE_HIP #ifndef int2 #define int2 _lgpu_int2 #endif +#endif struct _lgpu_float2 { float x; float y; diff --git a/lib/gpu/lal_preprocessor.h b/lib/gpu/lal_preprocessor.h index 566a451c21..cd95355ee4 100644 --- a/lib/gpu/lal_preprocessor.h +++ b/lib/gpu/lal_preprocessor.h @@ -1,4 +1,4 @@ -// ************************************************************************** +// ************************************************************************** // preprocessor.cu // ------------------- // W. Michael Brown (ORNL) @@ -60,6 +60,150 @@ // //*************************************************************************/ +#define _texture(name, type) texture name +#define _texture_2d(name, type) texture name + +// ------------------------------------------------------------------------- +// HIP DEFINITIONS +// ------------------------------------------------------------------------- + +#ifdef USE_HIP + #include + #ifdef __HIP_PLATFORM_HCC__ + #define mul24(x, y) __mul24(x, y) + #undef _texture + #undef _texture_2d + #define _texture(name, type) __device__ type* name + #define _texture_2d(name, type) __device__ type* name + #endif + #define GLOBAL_ID_X threadIdx.x+mul24(blockIdx.x,blockDim.x) + #define GLOBAL_ID_Y threadIdx.y+mul24(blockIdx.y,blockDim.y) + #define GLOBAL_SIZE_X mul24(gridDim.x,blockDim.x); + #define GLOBAL_SIZE_Y mul24(gridDim.y,blockDim.y); + #define THREAD_ID_X threadIdx.x + #define THREAD_ID_Y threadIdx.y + #define BLOCK_ID_X blockIdx.x + #define BLOCK_ID_Y blockIdx.y + #define BLOCK_SIZE_X blockDim.x + #define BLOCK_SIZE_Y blockDim.y + #define __kernel extern "C" __global__ + #ifdef __local + #undef __local + #endif + #define __local __shared__ + #define __global + #define restrict __restrict__ + #define atom_add atomicAdd + #define ucl_inline static __inline__ __device__ + + #define THREADS_PER_ATOM 4 + #define THREADS_PER_CHARGE 8 + #define BLOCK_NBOR_BUILD 128 + #define BLOCK_PAIR 256 + #define BLOCK_BIO_PAIR 256 + #define BLOCK_ELLIPSE 128 + #define MAX_SHARED_TYPES 11 + + #ifdef _SINGLE_SINGLE + ucl_inline double shfl_xor(double var, int laneMask, int width) { + #ifdef __HIP_PLATFORM_HCC__ + return __shfl_xor(var, laneMask, width); + #else + return __shfl_xor_sync(0xffffffff, var, laneMask, width); + #endif + } + #else + ucl_inline double shfl_xor(double var, int laneMask, int width) { + int2 tmp; + tmp.x = __double2hiint(var); + tmp.y = __double2loint(var); + #ifdef __HIP_PLATFORM_HCC__ + tmp.x = __shfl_xor(tmp.x,laneMask,width); + tmp.y = __shfl_xor(tmp.y,laneMask,width); + #else + tmp.x = __shfl_xor_sync(0xffffffff, tmp.x,laneMask,width); + tmp.y = __shfl_xor_sync(0xffffffff, tmp.y,laneMask,width); + #endif + return __hiloint2double(tmp.x,tmp.y); + } + #endif + + #ifdef __HIP_PLATFORM_HCC__ + #define ARCH 600 + #define WARP_SIZE 64 + #endif + + #ifdef __HIP_PLATFORM_NVCC__ + #define ARCH __CUDA_ARCH__ + #define WARP_SIZE 32 + #endif + + #define fast_mul(X,Y) (X)*(Y) + + #define MEM_THREADS WARP_SIZE + #define PPPM_BLOCK_1D 64 + #define BLOCK_CELL_2D 8 + #define BLOCK_CELL_ID 128 + #define MAX_BIO_SHARED_TYPES 128 + + #ifdef __HIP_PLATFORM_NVCC__ + #ifdef _DOUBLE_DOUBLE + #define fetch4(ans,i,pos_tex) { \ + int4 xy = tex1Dfetch(pos_tex,i*2); \ + int4 zt = tex1Dfetch(pos_tex,i*2+1); \ + ans.x=__hiloint2double(xy.y, xy.x); \ + ans.y=__hiloint2double(xy.w, xy.z); \ + ans.z=__hiloint2double(zt.y, zt.x); \ + ans.w=__hiloint2double(zt.w, zt.z); \ + } + #define fetch(ans,i,q_tex) { \ + int2 qt = tex1Dfetch(q_tex,i); \ + ans=__hiloint2double(qt.y, qt.x); \ + } + #else + #define fetch4(ans,i,pos_tex) ans=tex1Dfetch(pos_tex, i); + #define fetch(ans,i,q_tex) ans=tex1Dfetch(q_tex,i); + #endif + #else + #ifdef _DOUBLE_DOUBLE + #define fetch4(ans,i,pos_tex) (ans=*(((double4*)pos_tex) + i)) + #define fetch(ans,i,q_tex) (ans=*(((double *) q_tex) + i)) + #else + #define fetch4(ans,i,pos_tex) (ans=*(((float4*)pos_tex) + i)) + #define fetch(ans,i,q_tex) (ans=*(((float *) q_tex) + i)) + #endif + #endif + + #ifdef _DOUBLE_DOUBLE + #define ucl_exp exp + #define ucl_powr pow + #define ucl_atan atan + #define ucl_cbrt cbrt + #define ucl_ceil ceil + #define ucl_abs fabs + #define ucl_rsqrt rsqrt + #define ucl_sqrt sqrt + #define ucl_recip(x) ((numtyp)1.0/(x)) + + #else + #define ucl_atan atanf + #define ucl_cbrt cbrtf + #define ucl_ceil ceilf + #define ucl_abs fabsf + #define ucl_recip(x) ((numtyp)1.0/(x)) + #define ucl_rsqrt rsqrtf + #define ucl_sqrt sqrtf + + #ifdef NO_HARDWARE_TRANSCENDENTALS + #define ucl_exp expf + #define ucl_powr powf + #else + #define ucl_exp __expf + #define ucl_powr __powf + #endif + #endif +#endif + // ------------------------------------------------------------------------- // CUDA DEFINITIONS // ------------------------------------------------------------------------- diff --git a/lib/gpu/lal_re_squared.cu b/lib/gpu/lal_re_squared.cu index e238734074..cd525a1ade 100644 --- a/lib/gpu/lal_re_squared.cu +++ b/lib/gpu/lal_re_squared.cu @@ -13,7 +13,7 @@ // email : brownw@ornl.gov // ***************************************************************************/ -#ifdef NV_KERNEL +#if defined(NV_KERNEL) || defined(USE_HIP) #include "lal_ellipsoid_extra.h" #endif diff --git a/lib/gpu/lal_re_squared_lj.cu b/lib/gpu/lal_re_squared_lj.cu index d69dae2461..b3c44febe7 100644 --- a/lib/gpu/lal_re_squared_lj.cu +++ b/lib/gpu/lal_re_squared_lj.cu @@ -13,7 +13,7 @@ // email : brownw@ornl.gov // ***************************************************************************/ -#ifdef NV_KERNEL +#if defined(NV_KERNEL) || defined(USE_HIP) #include "lal_ellipsoid_extra.h" #endif diff --git a/lib/gpu/lal_soft.cu b/lib/gpu/lal_soft.cu index 831b986725..bccfa85ed5 100644 --- a/lib/gpu/lal_soft.cu +++ b/lib/gpu/lal_soft.cu @@ -13,12 +13,12 @@ // email : nguyentd@ornl.gov // ***************************************************************************/ -#ifdef NV_KERNEL +#if defined(NV_KERNEL) || defined(USE_HIP) #include "lal_aux_fun1.h" #ifndef _DOUBLE_DOUBLE -texture pos_tex; +_texture( pos_tex,float4); #else -texture pos_tex; +_texture_2d( pos_tex,int4); #endif #else #define pos_tex x_ diff --git a/lib/gpu/lal_sw.cu b/lib/gpu/lal_sw.cu index 3b6de5a683..de36d29efb 100644 --- a/lib/gpu/lal_sw.cu +++ b/lib/gpu/lal_sw.cu @@ -13,19 +13,19 @@ // email : brownw@ornl.gov // ***************************************************************************/ -#ifdef NV_KERNEL +#if defined(NV_KERNEL) || defined(USE_HIP) #include "lal_aux_fun1.h" #ifndef _DOUBLE_DOUBLE -texture pos_tex; -texture sw1_tex; -texture sw2_tex; -texture sw3_tex; +_texture( pos_tex,float4); +_texture( sw1_tex,float4); +_texture( sw2_tex,float4); +_texture( sw3_tex,float4); #else -texture pos_tex; -texture sw1_tex; -texture sw2_tex; -texture sw3_tex; +_texture_2d( pos_tex,int4); +_texture( sw1_tex,int4); +_texture( sw2_tex,int4); +_texture( sw3_tex,int4); #endif #else diff --git a/lib/gpu/lal_table.cu b/lib/gpu/lal_table.cu index 971b56d96e..8c0b52e05f 100644 --- a/lib/gpu/lal_table.cu +++ b/lib/gpu/lal_table.cu @@ -13,12 +13,12 @@ // email : nguyentd@ornl.gov // ***************************************************************************/ -#ifdef NV_KERNEL +#if defined(NV_KERNEL) || defined(USE_HIP) #include "lal_aux_fun1.h" #ifndef _DOUBLE_DOUBLE -texture pos_tex; +_texture( pos_tex,float4); #else -texture pos_tex; +_texture_2d( pos_tex,int4); #endif #else #define pos_tex x_ diff --git a/lib/gpu/lal_tersoff.cu b/lib/gpu/lal_tersoff.cu index 2e29ca721b..d57efaf15c 100644 --- a/lib/gpu/lal_tersoff.cu +++ b/lib/gpu/lal_tersoff.cu @@ -13,23 +13,23 @@ // email : ndactrung@gmail.com // ***************************************************************************/ -#ifdef NV_KERNEL +#if defined(NV_KERNEL) || defined(USE_HIP) #include "lal_tersoff_extra.h" #ifndef _DOUBLE_DOUBLE -texture pos_tex; -texture ts1_tex; -texture ts2_tex; -texture ts3_tex; -texture ts4_tex; -texture ts5_tex; +_texture( pos_tex,float4); +_texture( ts1_tex,float4); +_texture( ts2_tex,float4); +_texture( ts3_tex,float4); +_texture( ts4_tex,float4); +_texture( ts5_tex,float4); #else -texture pos_tex; -texture ts1_tex; -texture ts2_tex; -texture ts3_tex; -texture ts4_tex; -texture ts5_tex; +_texture_2d( pos_tex,int4); +_texture( ts1_tex,int4); +_texture( ts2_tex,int4); +_texture( ts3_tex,int4); +_texture( ts4_tex,int4); +_texture( ts5_tex,int4); #endif #else diff --git a/lib/gpu/lal_tersoff_extra.h b/lib/gpu/lal_tersoff_extra.h index 47d16678f0..7ee29751b7 100644 --- a/lib/gpu/lal_tersoff_extra.h +++ b/lib/gpu/lal_tersoff_extra.h @@ -16,7 +16,7 @@ #ifndef LAL_TERSOFF_EXTRA_H #define LAL_TERSOFF_EXTRA_H -#ifdef NV_KERNEL +#if defined(NV_KERNEL) || defined(USE_HIP) #include "lal_aux_fun1.h" #else #endif diff --git a/lib/gpu/lal_tersoff_mod.cu b/lib/gpu/lal_tersoff_mod.cu index c85f5e08ca..da284f39ee 100644 --- a/lib/gpu/lal_tersoff_mod.cu +++ b/lib/gpu/lal_tersoff_mod.cu @@ -13,23 +13,23 @@ // email : ndactrung@gmail.com // ***************************************************************************/ -#ifdef NV_KERNEL +#if defined(NV_KERNEL) || defined(USE_HIP) #include "lal_tersoff_mod_extra.h" #ifndef _DOUBLE_DOUBLE -texture pos_tex; -texture ts1_tex; -texture ts2_tex; -texture ts3_tex; -texture ts4_tex; -texture ts5_tex; +_texture( pos_tex,float4); +_texture( ts1_tex,float4); +_texture( ts2_tex,float4); +_texture( ts3_tex,float4); +_texture( ts4_tex,float4); +_texture( ts5_tex,float4); #else -texture pos_tex; -texture ts1_tex; -texture ts2_tex; -texture ts3_tex; -texture ts4_tex; -texture ts5_tex; +_texture_2d( pos_tex,int4); +_texture( ts1_tex,int4); +_texture( ts2_tex,int4); +_texture( ts3_tex,int4); +_texture( ts4_tex,int4); +_texture( ts5_tex,int4); #endif #else diff --git a/lib/gpu/lal_tersoff_mod_extra.h b/lib/gpu/lal_tersoff_mod_extra.h index a130d98488..fb658cb0da 100644 --- a/lib/gpu/lal_tersoff_mod_extra.h +++ b/lib/gpu/lal_tersoff_mod_extra.h @@ -16,7 +16,7 @@ #ifndef LAL_TERSOFF_MOD_EXTRA_H #define LAL_TERSOFF_MOD_EXTRA_H -#ifdef NV_KERNEL +#if defined(NV_KERNEL) || defined(USE_HIP) #include "lal_aux_fun1.h" #else #endif diff --git a/lib/gpu/lal_tersoff_zbl.cu b/lib/gpu/lal_tersoff_zbl.cu index b574a529c0..a170715f57 100644 --- a/lib/gpu/lal_tersoff_zbl.cu +++ b/lib/gpu/lal_tersoff_zbl.cu @@ -13,25 +13,25 @@ // email : ndactrung@gmail.com // ***************************************************************************/ -#ifdef NV_KERNEL +#if defined(NV_KERNEL) || defined(USE_HIP) #include "lal_tersoff_zbl_extra.h" #ifndef _DOUBLE_DOUBLE -texture pos_tex; -texture ts1_tex; -texture ts2_tex; -texture ts3_tex; -texture ts4_tex; -texture ts5_tex; -texture ts6_tex; +_texture( pos_tex,float4); +_texture( ts1_tex,float4); +_texture( ts2_tex,float4); +_texture( ts3_tex,float4); +_texture( ts4_tex,float4); +_texture( ts5_tex,float4); +_texture( ts6_tex,float4); #else -texture pos_tex; -texture ts1_tex; -texture ts2_tex; -texture ts3_tex; -texture ts4_tex; -texture ts5_tex; -texture ts6_tex; +_texture_2d( pos_tex,int4); +_texture( ts1_tex,int4); +_texture( ts2_tex,int4); +_texture( ts3_tex,int4); +_texture( ts4_tex,int4); +_texture( ts5_tex,int4); +_texture( ts6_tex,int4); #endif #else diff --git a/lib/gpu/lal_tersoff_zbl_extra.h b/lib/gpu/lal_tersoff_zbl_extra.h index 32c05a3716..9e5bcb10b4 100644 --- a/lib/gpu/lal_tersoff_zbl_extra.h +++ b/lib/gpu/lal_tersoff_zbl_extra.h @@ -16,7 +16,7 @@ #ifndef LAL_TERSOFF_ZBL_EXTRA_H #define LAL_TERSOFF_ZBL_EXTRA_H -#ifdef NV_KERNEL +#if defined(NV_KERNEL) || defined(USE_HIP) #include "lal_aux_fun1.h" #else #endif diff --git a/lib/gpu/lal_ufm.cu b/lib/gpu/lal_ufm.cu index 51c4df3b5b..33d0f3c956 100644 --- a/lib/gpu/lal_ufm.cu +++ b/lib/gpu/lal_ufm.cu @@ -15,12 +15,12 @@ dekoning@ifi.unicamp.br ***************************************************************************/ -#ifdef NV_KERNEL +#if defined(NV_KERNEL) || defined(USE_HIP) #include "lal_aux_fun1.h" #ifndef _DOUBLE_DOUBLE -texture pos_tex; +_texture( pos_tex,float4); #else -texture pos_tex; +_texture_2d( pos_tex,int4); #endif #else #define pos_tex x_ diff --git a/lib/gpu/lal_vashishta.cu b/lib/gpu/lal_vashishta.cu index 0da46c3b53..d13bc659e7 100644 --- a/lib/gpu/lal_vashishta.cu +++ b/lib/gpu/lal_vashishta.cu @@ -13,23 +13,23 @@ // email : andershaf@gmail.com // ***************************************************************************/ -#ifdef NV_KERNEL +#if defined(NV_KERNEL) || defined(USE_HIP) #include "lal_aux_fun1.h" #ifndef _DOUBLE_DOUBLE -texture pos_tex; -texture param1_tex; -texture param2_tex; -texture param3_tex; -texture param4_tex; -texture param5_tex; +_texture( pos_tex,float4); +_texture( param1_tex,float4); +_texture( param2_tex,float4); +_texture( param3_tex,float4); +_texture( param4_tex,float4); +_texture( param5_tex,float4); #else -texture pos_tex; -texture param1_tex; -texture param2_tex; -texture param3_tex; -texture param4_tex; -texture param5_tex; +_texture_2d( pos_tex,int4); +_texture( param1_tex,int4); +_texture( param2_tex,int4); +_texture( param3_tex,int4); +_texture( param4_tex,int4); +_texture( param5_tex,int4); #endif #else diff --git a/lib/gpu/lal_yukawa.cu b/lib/gpu/lal_yukawa.cu index a8d637ec97..5237549b0a 100644 --- a/lib/gpu/lal_yukawa.cu +++ b/lib/gpu/lal_yukawa.cu @@ -13,12 +13,12 @@ // email : nguyentd@ornl.gov // ***************************************************************************/ -#ifdef NV_KERNEL +#if defined(NV_KERNEL) || defined(USE_HIP) #include "lal_aux_fun1.h" #ifndef _DOUBLE_DOUBLE -texture pos_tex; +_texture( pos_tex,float4); #else -texture pos_tex; +_texture_2d( pos_tex,int4); #endif #else #define pos_tex x_ diff --git a/lib/gpu/lal_yukawa_colloid.cu b/lib/gpu/lal_yukawa_colloid.cu index a3cbbbc11c..8c006a09be 100644 --- a/lib/gpu/lal_yukawa_colloid.cu +++ b/lib/gpu/lal_yukawa_colloid.cu @@ -13,15 +13,15 @@ // email : nguyentd@ornl.gov // ***************************************************************************/ -#ifdef NV_KERNEL +#if defined(NV_KERNEL) || defined(USE_HIP) #include "lal_aux_fun1.h" #ifndef _DOUBLE_DOUBLE -texture pos_tex; -texture rad_tex; +_texture( pos_tex,float4); +_texture( rad_tex,float); #else -texture pos_tex; -texture rad_tex; +_texture_2d( pos_tex,int4); +_texture( rad_tex,int2); #endif #else diff --git a/lib/gpu/lal_zbl.cu b/lib/gpu/lal_zbl.cu index 33c850e134..fbedfe2de2 100644 --- a/lib/gpu/lal_zbl.cu +++ b/lib/gpu/lal_zbl.cu @@ -13,12 +13,12 @@ // email : ndactrung@gmail.com // ***************************************************************************/ -#ifdef NV_KERNEL +#if defined(NV_KERNEL) || defined(USE_HIP) #include "lal_aux_fun1.h" #ifndef _DOUBLE_DOUBLE -texture pos_tex; +_texture( pos_tex,float4); #else -texture pos_tex; +_texture_2d( pos_tex,int4); #endif #else #define pos_tex x_ diff --git a/src/MAKE/OPTIONS/Makefile.hip b/src/MAKE/OPTIONS/Makefile.hip new file mode 100644 index 0000000000..12158a32cb --- /dev/null +++ b/src/MAKE/OPTIONS/Makefile.hip @@ -0,0 +1,120 @@ +# hip = MPI with HIP(clang) + +SHELL = /bin/sh + +# --------------------------------------------------------------------- +# compiler/linker settings +# specify flags and libraries needed for your compiler + +CC = mpicxx +CCFLAGS = -g -O3 +SHFLAGS = -fPIC +DEPFLAGS = -M + +HIP_PATH ?= $(wildcard /opt/rocm/hip) +LINK = $(HIP_PATH)/bin/hipcc +LINKFLAGS = -g -O3 $(shell mpicxx --showme:link) +LIB = +SIZE = size + +ARCHIVE = ar +ARFLAGS = -rc +SHLIBFLAGS = -shared + +# --------------------------------------------------------------------- +# LAMMPS-specific settings, all OPTIONAL +# specify settings for LAMMPS features you will use +# if you change any -D setting, do full re-compile after "make clean" + +# LAMMPS ifdef settings +# see possible settings in Section 2.2 (step 4) of manual + +LMP_INC = -DLAMMPS_GZIP -DLAMMPS_MEMALIGN=64 + +# MPI library +# see discussion in Section 2.2 (step 5) of manual +# MPI wrapper compiler/linker can provide this info +# can point to dummy MPI library in src/STUBS as in Makefile.serial +# use -D MPICH and OMPI settings in INC to avoid C++ lib conflicts +# INC = path for mpi.h, MPI compiler settings +# PATH = path for MPI library +# LIB = name of MPI library + +MPI_INC = -DMPICH_SKIP_MPICXX -DOMPI_SKIP_MPICXX=1 +MPI_PATH = +MPI_LIB = + +# FFT library +# see discussion in Section 2.2 (step 6) of manual +# can be left blank to use provided KISS FFT library +# INC = -DFFT setting, e.g. -DFFT_FFTW, FFT compiler settings +# PATH = path for FFT library +# LIB = name of FFT library + +FFT_INC = +FFT_PATH = +FFT_LIB = + +# JPEG and/or PNG library +# see discussion in Section 2.2 (step 7) of manual +# only needed if -DLAMMPS_JPEG or -DLAMMPS_PNG listed with LMP_INC +# INC = path(s) for jpeglib.h and/or png.h +# PATH = path(s) for JPEG library and/or PNG library +# LIB = name(s) of JPEG library and/or PNG library + +JPG_INC = +JPG_PATH = +JPG_LIB = + +# --------------------------------------------------------------------- +# build rules and dependencies +# do not edit this section + +include Makefile.package.settings +include Makefile.package + +ifeq (nvcc,${HIP_PLATFORM}) + # fix nvcc can't handle -pthread flag + LINKFLAGS := $(subst -pthread,-Xcompiler -pthread,$(LINKFLAGS)) +endif + +EXTRA_INC = $(LMP_INC) $(PKG_INC) $(MPI_INC) $(FFT_INC) $(JPG_INC) $(PKG_SYSINC) +EXTRA_PATH = $(PKG_PATH) $(MPI_PATH) $(FFT_PATH) $(JPG_PATH) $(PKG_SYSPATH) +EXTRA_LIB = $(PKG_LIB) $(MPI_LIB) $(FFT_LIB) $(JPG_LIB) $(PKG_SYSLIB) +EXTRA_CPP_DEPENDS = $(PKG_CPP_DEPENDS) +EXTRA_LINK_DEPENDS = $(PKG_LINK_DEPENDS) + +# Path to src files + +vpath %.cpp .. +vpath %.h .. + +# Link target + +$(EXE): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(LINK) $(LINKFLAGS) $(EXTRA_PATH) $(OBJ) $(EXTRA_LIB) $(LIB) -o $(EXE) + $(SIZE) $(EXE) + +# Library targets + +lib: $(OBJ) $(EXTRA_LINK_DEPENDS) + $(ARCHIVE) $(ARFLAGS) $(EXE) $(OBJ) + +shlib: $(OBJ) $(EXTRA_LINK_DEPENDS) + $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o $(EXE) \ + $(OBJ) $(EXTRA_LIB) $(LIB) + +# Compilation rules + +%.o:%.cpp + $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< + +# Individual dependencies + +depend : fastdep.exe $(SRC) + @./fastdep.exe $(EXTRA_INC) -- $^ > .depend || exit 1 + +fastdep.exe: ../DEPEND/fastdep.c + cc -O -o $@ $< + +sinclude .depend -- GitLab From 44178a335e37dbe33d4a10988baedb15afd22424 Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Wed, 29 Jan 2020 13:56:34 -0700 Subject: [PATCH 018/717] Propagate rename to Kokkos styles --- src/KOKKOS/atom_kokkos.cpp | 2 +- src/KOKKOS/atom_vec_angle_kokkos.cpp | 4 ++-- src/KOKKOS/atom_vec_angle_kokkos.h | 2 +- src/KOKKOS/atom_vec_atomic_kokkos.cpp | 4 ++-- src/KOKKOS/atom_vec_atomic_kokkos.h | 2 +- src/KOKKOS/atom_vec_bond_kokkos.cpp | 4 ++-- src/KOKKOS/atom_vec_bond_kokkos.h | 2 +- src/KOKKOS/atom_vec_charge_kokkos.cpp | 4 ++-- src/KOKKOS/atom_vec_charge_kokkos.h | 2 +- src/KOKKOS/atom_vec_dpd_kokkos.cpp | 4 ++-- src/KOKKOS/atom_vec_dpd_kokkos.h | 2 +- src/KOKKOS/atom_vec_full_kokkos.cpp | 4 ++-- src/KOKKOS/atom_vec_full_kokkos.h | 2 +- src/KOKKOS/atom_vec_hybrid_kokkos.cpp | 6 +++--- src/KOKKOS/atom_vec_hybrid_kokkos.h | 2 +- src/KOKKOS/atom_vec_molecular_kokkos.cpp | 4 ++-- src/KOKKOS/atom_vec_molecular_kokkos.h | 2 +- src/KOKKOS/atom_vec_sphere_kokkos.cpp | 4 ++-- src/KOKKOS/atom_vec_sphere_kokkos.h | 2 +- 19 files changed, 29 insertions(+), 29 deletions(-) diff --git a/src/KOKKOS/atom_kokkos.cpp b/src/KOKKOS/atom_kokkos.cpp index 4637a9a21c..49fdbb95bb 100644 --- a/src/KOKKOS/atom_kokkos.cpp +++ b/src/KOKKOS/atom_kokkos.cpp @@ -237,7 +237,7 @@ void AtomKokkos::grow(unsigned int mask){ sync(Device, mask); modified(Device, mask); memoryKK->grow_kokkos(k_special,special,nmax,maxspecial,"atom:special"); - avec->grow_reset(); + avec->grow_pointers(); sync(Host, mask); } } diff --git a/src/KOKKOS/atom_vec_angle_kokkos.cpp b/src/KOKKOS/atom_vec_angle_kokkos.cpp index 736e1c1fca..bbb5d2617d 100644 --- a/src/KOKKOS/atom_vec_angle_kokkos.cpp +++ b/src/KOKKOS/atom_vec_angle_kokkos.cpp @@ -98,7 +98,7 @@ void AtomVecAngleKokkos::grow(int n) memoryKK->grow_kokkos(atomKK->k_angle_atom3,atomKK->angle_atom3,nmax,atomKK->angle_per_atom, "atom:angle_atom3"); - grow_reset(); + grow_pointers(); atomKK->sync(Host,ALL_MASK); if (atom->nextra_grow) @@ -110,7 +110,7 @@ void AtomVecAngleKokkos::grow(int n) reset local array ptrs ------------------------------------------------------------------------- */ -void AtomVecAngleKokkos::grow_reset() +void AtomVecAngleKokkos::grow_pointers() { tag = atomKK->tag; d_tag = atomKK->k_tag.d_view; diff --git a/src/KOKKOS/atom_vec_angle_kokkos.h b/src/KOKKOS/atom_vec_angle_kokkos.h index abdd48fce5..4fc71725b0 100644 --- a/src/KOKKOS/atom_vec_angle_kokkos.h +++ b/src/KOKKOS/atom_vec_angle_kokkos.h @@ -58,7 +58,7 @@ class AtomVecAngleKokkos : public AtomVecKokkos { int write_data_hybrid(FILE *, double *); bigint memory_usage(); - void grow_reset(); + void grow_pointers(); int pack_comm_kokkos(const int &n, const DAT::tdual_int_2d &k_sendlist, const int & iswap, const DAT::tdual_xfloat_2d &buf, diff --git a/src/KOKKOS/atom_vec_atomic_kokkos.cpp b/src/KOKKOS/atom_vec_atomic_kokkos.cpp index 4fec5740d6..7b657fa0d1 100644 --- a/src/KOKKOS/atom_vec_atomic_kokkos.cpp +++ b/src/KOKKOS/atom_vec_atomic_kokkos.cpp @@ -74,7 +74,7 @@ void AtomVecAtomicKokkos::grow(int n) memoryKK->grow_kokkos(atomKK->k_v,atomKK->v,nmax,3,"atom:v"); memoryKK->grow_kokkos(atomKK->k_f,atomKK->f,nmax,3,"atom:f"); - grow_reset(); + grow_pointers(); atomKK->sync(Host,ALL_MASK); if (atom->nextra_grow) @@ -86,7 +86,7 @@ void AtomVecAtomicKokkos::grow(int n) reset local array ptrs ------------------------------------------------------------------------- */ -void AtomVecAtomicKokkos::grow_reset() +void AtomVecAtomicKokkos::grow_pointers() { tag = atomKK->tag; d_tag = atomKK->k_tag.d_view; diff --git a/src/KOKKOS/atom_vec_atomic_kokkos.h b/src/KOKKOS/atom_vec_atomic_kokkos.h index e4d2654e2c..212132ef60 100644 --- a/src/KOKKOS/atom_vec_atomic_kokkos.h +++ b/src/KOKKOS/atom_vec_atomic_kokkos.h @@ -48,7 +48,7 @@ class AtomVecAtomicKokkos : public AtomVecKokkos { void write_data(FILE *, int, double **); bigint memory_usage(); - void grow_reset(); + void grow_pointers(); int pack_border_kokkos(int n, DAT::tdual_int_2d k_sendlist, DAT::tdual_xfloat_2d buf,int iswap, int pbc_flag, int *pbc, ExecutionSpace space); diff --git a/src/KOKKOS/atom_vec_bond_kokkos.cpp b/src/KOKKOS/atom_vec_bond_kokkos.cpp index 74c05a506c..60ea024c08 100644 --- a/src/KOKKOS/atom_vec_bond_kokkos.cpp +++ b/src/KOKKOS/atom_vec_bond_kokkos.cpp @@ -84,7 +84,7 @@ void AtomVecBondKokkos::grow(int n) memoryKK->grow_kokkos(atomKK->k_bond_type,atomKK->bond_type,nmax,atomKK->bond_per_atom,"atom:bond_type"); memoryKK->grow_kokkos(atomKK->k_bond_atom,atomKK->bond_atom,nmax,atomKK->bond_per_atom,"atom:bond_atom"); - grow_reset(); + grow_pointers(); atomKK->sync(Host,ALL_MASK); if (atom->nextra_grow) @@ -96,7 +96,7 @@ void AtomVecBondKokkos::grow(int n) reset local array ptrs ------------------------------------------------------------------------- */ -void AtomVecBondKokkos::grow_reset() +void AtomVecBondKokkos::grow_pointers() { tag = atomKK->tag; d_tag = atomKK->k_tag.d_view; diff --git a/src/KOKKOS/atom_vec_bond_kokkos.h b/src/KOKKOS/atom_vec_bond_kokkos.h index 7ec15450ef..f38ade8f64 100644 --- a/src/KOKKOS/atom_vec_bond_kokkos.h +++ b/src/KOKKOS/atom_vec_bond_kokkos.h @@ -52,7 +52,7 @@ class AtomVecBondKokkos : public AtomVecKokkos { int write_data_hybrid(FILE *, double *); bigint memory_usage(); - void grow_reset(); + void grow_pointers(); int pack_border_kokkos(int n, DAT::tdual_int_2d k_sendlist, DAT::tdual_xfloat_2d buf,int iswap, int pbc_flag, int *pbc, ExecutionSpace space); diff --git a/src/KOKKOS/atom_vec_charge_kokkos.cpp b/src/KOKKOS/atom_vec_charge_kokkos.cpp index 3f26b1e9ea..f50bc6bd62 100644 --- a/src/KOKKOS/atom_vec_charge_kokkos.cpp +++ b/src/KOKKOS/atom_vec_charge_kokkos.cpp @@ -79,7 +79,7 @@ void AtomVecChargeKokkos::grow(int n) memoryKK->grow_kokkos(atomKK->k_q,atomKK->q,nmax,"atom:q"); - grow_reset(); + grow_pointers(); atomKK->sync(Host,ALL_MASK); if (atom->nextra_grow) @@ -91,7 +91,7 @@ void AtomVecChargeKokkos::grow(int n) reset local array ptrs ------------------------------------------------------------------------- */ -void AtomVecChargeKokkos::grow_reset() +void AtomVecChargeKokkos::grow_pointers() { tag = atomKK->tag; d_tag = atomKK->k_tag.d_view; diff --git a/src/KOKKOS/atom_vec_charge_kokkos.h b/src/KOKKOS/atom_vec_charge_kokkos.h index e9ff70bbe1..39d641b844 100644 --- a/src/KOKKOS/atom_vec_charge_kokkos.h +++ b/src/KOKKOS/atom_vec_charge_kokkos.h @@ -53,7 +53,7 @@ class AtomVecChargeKokkos : public AtomVecKokkos { int write_data_hybrid(FILE *, double *); bigint memory_usage(); - void grow_reset(); + void grow_pointers(); int pack_border_kokkos(int n, DAT::tdual_int_2d k_sendlist, DAT::tdual_xfloat_2d buf,int iswap, int pbc_flag, int *pbc, ExecutionSpace space); diff --git a/src/KOKKOS/atom_vec_dpd_kokkos.cpp b/src/KOKKOS/atom_vec_dpd_kokkos.cpp index 144ef26f19..2885c292c1 100644 --- a/src/KOKKOS/atom_vec_dpd_kokkos.cpp +++ b/src/KOKKOS/atom_vec_dpd_kokkos.cpp @@ -93,7 +93,7 @@ void AtomVecDPDKokkos::grow(int n) for (int iextra = 0; iextra < atom->nextra_grow; iextra++) modify->fix[atom->extra_grow[iextra]]->grow_arrays(nmax); - grow_reset(); + grow_pointers(); atomKK->sync(Host,ALL_MASK); } @@ -101,7 +101,7 @@ void AtomVecDPDKokkos::grow(int n) reset local array ptrs ------------------------------------------------------------------------- */ -void AtomVecDPDKokkos::grow_reset() +void AtomVecDPDKokkos::grow_pointers() { tag = atomKK->tag; d_tag = atomKK->k_tag.d_view; diff --git a/src/KOKKOS/atom_vec_dpd_kokkos.h b/src/KOKKOS/atom_vec_dpd_kokkos.h index cec1b82357..e969a28cb8 100644 --- a/src/KOKKOS/atom_vec_dpd_kokkos.h +++ b/src/KOKKOS/atom_vec_dpd_kokkos.h @@ -61,7 +61,7 @@ class AtomVecDPDKokkos : public AtomVecKokkos { int write_data_hybrid(FILE *, double *); bigint memory_usage(); - void grow_reset(); + void grow_pointers(); int pack_comm_kokkos(const int &n, const DAT::tdual_int_2d &k_sendlist, const int & iswap, const DAT::tdual_xfloat_2d &buf, diff --git a/src/KOKKOS/atom_vec_full_kokkos.cpp b/src/KOKKOS/atom_vec_full_kokkos.cpp index 1fdbcbec8c..0f8aaade8a 100644 --- a/src/KOKKOS/atom_vec_full_kokkos.cpp +++ b/src/KOKKOS/atom_vec_full_kokkos.cpp @@ -123,7 +123,7 @@ void AtomVecFullKokkos::grow(int n) memoryKK->grow_kokkos(atomKK->k_improper_atom4,atomKK->improper_atom4,nmax, atomKK->improper_per_atom,"atom:improper_atom4"); - grow_reset(); + grow_pointers(); atomKK->sync(Host,ALL_MASK); if (atom->nextra_grow) @@ -135,7 +135,7 @@ void AtomVecFullKokkos::grow(int n) reset local array ptrs ------------------------------------------------------------------------- */ -void AtomVecFullKokkos::grow_reset() +void AtomVecFullKokkos::grow_pointers() { tag = atomKK->tag; d_tag = atomKK->k_tag.d_view; diff --git a/src/KOKKOS/atom_vec_full_kokkos.h b/src/KOKKOS/atom_vec_full_kokkos.h index 33760a8b5f..a2d4fa9cf4 100644 --- a/src/KOKKOS/atom_vec_full_kokkos.h +++ b/src/KOKKOS/atom_vec_full_kokkos.h @@ -52,7 +52,7 @@ class AtomVecFullKokkos : public AtomVecKokkos { int write_data_hybrid(FILE *, double *); bigint memory_usage(); - void grow_reset(); + void grow_pointers(); int pack_border_kokkos(int n, DAT::tdual_int_2d k_sendlist, DAT::tdual_xfloat_2d buf,int iswap, int pbc_flag, int *pbc, ExecutionSpace space); diff --git a/src/KOKKOS/atom_vec_hybrid_kokkos.cpp b/src/KOKKOS/atom_vec_hybrid_kokkos.cpp index 40303051b2..8f8a0c8c00 100644 --- a/src/KOKKOS/atom_vec_hybrid_kokkos.cpp +++ b/src/KOKKOS/atom_vec_hybrid_kokkos.cpp @@ -163,7 +163,7 @@ void AtomVecHybridKokkos::grow(int n) // for sub-styles, do this in case // multiple sub-style reallocs of same array occurred - grow_reset(); + grow_pointers(); if (atom->nextra_grow) for (int iextra = 0; iextra < atom->nextra_grow; iextra++) @@ -174,7 +174,7 @@ void AtomVecHybridKokkos::grow(int n) reset local array ptrs ------------------------------------------------------------------------- */ -void AtomVecHybridKokkos::grow_reset() +void AtomVecHybridKokkos::grow_pointers() { tag = atomKK->tag; d_tag = atomKK->k_tag.d_view; @@ -216,7 +216,7 @@ void AtomVecHybridKokkos::grow_reset() d_angmom = atomKK->k_angmom.d_view; h_angmom = atomKK->k_angmom.h_view; - for (int k = 0; k < nstyles; k++) styles[k]->grow_reset(); + for (int k = 0; k < nstyles; k++) styles[k]->grow_pointers(); } /* ---------------------------------------------------------------------- diff --git a/src/KOKKOS/atom_vec_hybrid_kokkos.h b/src/KOKKOS/atom_vec_hybrid_kokkos.h index 4cfb186b17..02f9044d73 100644 --- a/src/KOKKOS/atom_vec_hybrid_kokkos.h +++ b/src/KOKKOS/atom_vec_hybrid_kokkos.h @@ -36,7 +36,7 @@ class AtomVecHybridKokkos : public AtomVecKokkos { void process_args(int, char **); void init(); void grow(int); - void grow_reset(); + void grow_pointers(); void copy(int, int, int); void clear_bonus(); void force_clear(int, size_t); diff --git a/src/KOKKOS/atom_vec_molecular_kokkos.cpp b/src/KOKKOS/atom_vec_molecular_kokkos.cpp index f3b4ae98ca..0c4bf483d3 100644 --- a/src/KOKKOS/atom_vec_molecular_kokkos.cpp +++ b/src/KOKKOS/atom_vec_molecular_kokkos.cpp @@ -121,7 +121,7 @@ void AtomVecMolecularKokkos::grow(int n) memoryKK->grow_kokkos(atomKK->k_improper_atom4,atomKK->improper_atom4,nmax, atomKK->improper_per_atom,"atom:improper_atom4"); - grow_reset(); + grow_pointers(); atomKK->sync(Host,ALL_MASK); if (atom->nextra_grow) @@ -133,7 +133,7 @@ void AtomVecMolecularKokkos::grow(int n) reset local array ptrs ------------------------------------------------------------------------- */ -void AtomVecMolecularKokkos::grow_reset() +void AtomVecMolecularKokkos::grow_pointers() { tag = atomKK->tag; d_tag = atomKK->k_tag.d_view; diff --git a/src/KOKKOS/atom_vec_molecular_kokkos.h b/src/KOKKOS/atom_vec_molecular_kokkos.h index 06444510e0..cede4f42a8 100644 --- a/src/KOKKOS/atom_vec_molecular_kokkos.h +++ b/src/KOKKOS/atom_vec_molecular_kokkos.h @@ -58,7 +58,7 @@ class AtomVecMolecularKokkos : public AtomVecKokkos { int write_data_hybrid(FILE *, double *); bigint memory_usage(); - void grow_reset(); + void grow_pointers(); int pack_comm_kokkos(const int &n, const DAT::tdual_int_2d &k_sendlist, const int & iswap, const DAT::tdual_xfloat_2d &buf, diff --git a/src/KOKKOS/atom_vec_sphere_kokkos.cpp b/src/KOKKOS/atom_vec_sphere_kokkos.cpp index 67aaa32c21..35f93294a8 100644 --- a/src/KOKKOS/atom_vec_sphere_kokkos.cpp +++ b/src/KOKKOS/atom_vec_sphere_kokkos.cpp @@ -119,7 +119,7 @@ void AtomVecSphereKokkos::grow(int n) for (int iextra = 0; iextra < atom->nextra_grow; iextra++) modify->fix[atom->extra_grow[iextra]]->grow_arrays(nmax); - grow_reset(); + grow_pointers(); atomKK->sync(Host,ALL_MASK); } @@ -127,7 +127,7 @@ void AtomVecSphereKokkos::grow(int n) reset local array ptrs ------------------------------------------------------------------------- */ -void AtomVecSphereKokkos::grow_reset() +void AtomVecSphereKokkos::grow_pointers() { tag = atomKK->tag; d_tag = atomKK->k_tag.d_view; diff --git a/src/KOKKOS/atom_vec_sphere_kokkos.h b/src/KOKKOS/atom_vec_sphere_kokkos.h index 28c8a3c8f6..3f6d34e8b2 100644 --- a/src/KOKKOS/atom_vec_sphere_kokkos.h +++ b/src/KOKKOS/atom_vec_sphere_kokkos.h @@ -33,7 +33,7 @@ class AtomVecSphereKokkos : public AtomVecKokkos { ~AtomVecSphereKokkos() {} void init(); void grow(int); - void grow_reset(); + void grow_pointers(); void copy(int, int, int); int pack_comm(int, int *, double *, int, int *); int pack_comm_vel(int, int *, double *, int, int *); -- GitLab From 34778c4919d21fd12d8e9a5ff870c1862bb28157 Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Wed, 29 Jan 2020 14:10:42 -0700 Subject: [PATCH 019/717] Restore virtual keyword for Kokkos package --- src/atom_vec.h | 66 +++++++++++++++++++++++++------------------------- 1 file changed, 33 insertions(+), 33 deletions(-) diff --git a/src/atom_vec.h b/src/atom_vec.h index 94517f80ad..b34ee5adb4 100644 --- a/src/atom_vec.h +++ b/src/atom_vec.h @@ -74,41 +74,41 @@ class AtomVec : protected Pointers { virtual void force_clear(int, size_t) {} - void grow(int); + virtual void grow(int); virtual void grow_pointers() {} - void copy(int, int, int); + virtual void copy(int, int, int); virtual void copy_bonus(int, int, int) {} virtual void clear_bonus() {} - int pack_comm(int, int *, double *, int, int *); - int pack_comm_vel(int, int *, double *, int, int *); - void unpack_comm(int, int, double *); - void unpack_comm_vel(int, int, double *); + virtual int pack_comm(int, int *, double *, int, int *); + virtual int pack_comm_vel(int, int *, double *, int, int *); + virtual void unpack_comm(int, int, double *); + virtual void unpack_comm_vel(int, int, double *); virtual int pack_comm_bonus(int, int *, double *) {} virtual void unpack_comm_bonus(int, int, double *) {} - int pack_reverse(int, int, double *); - void unpack_reverse(int, int *, double *); + virtual int pack_reverse(int, int, double *); + virtual void unpack_reverse(int, int *, double *); - int pack_border(int, int *, double *, int, int *); - int pack_border_vel(int, int *, double *, int, int *); - void unpack_border(int, int, double *); - void unpack_border_vel(int, int, double *); + virtual int pack_border(int, int *, double *, int, int *); + virtual int pack_border_vel(int, int *, double *, int, int *); + virtual void unpack_border(int, int, double *); + virtual void unpack_border_vel(int, int, double *); virtual int pack_border_bonus(int, int *, double *) {} virtual int unpack_border_bonus(int, int, double *) {} - int pack_exchange(int, double *); - int unpack_exchange(double *); + virtual int pack_exchange(int, double *); + virtual int unpack_exchange(double *); virtual int pack_exchange_bonus(int, double *) {} virtual int unpack_exchange_bonus(int, double *) {} - int size_restart(); - int pack_restart(int, double *); - int unpack_restart(double *); + virtual int size_restart(); + virtual int pack_restart(int, double *); + virtual int unpack_restart(double *); virtual void pack_restart_pre(int) {} virtual void pack_restart_post(int) {} @@ -118,36 +118,36 @@ class AtomVec : protected Pointers { virtual int pack_restart_bonus(int, double *) {} virtual int unpack_restart_bonus(int, double *) {} - void create_atom(int, double *); + virtual void create_atom(int, double *); virtual void create_atom_post(int) {} - void data_atom(double *, imageint, char **); + virtual void data_atom(double *, imageint, char **); virtual void data_atom_post(int) {} virtual void data_atom_bonus(int, char **) {} virtual void data_body(int, int, int, int *, double *) {} - void pack_data(double **); - void write_data(FILE *, int, double **); + virtual void pack_data(double **); + virtual void write_data(FILE *, int, double **); virtual void pack_data_pre(int) {} virtual void pack_data_post(int) {} - void data_vel(int, char **); - void pack_vel(double **); - void write_vel(FILE *, int, double **); + virtual void data_vel(int, char **); + virtual void pack_vel(double **); + virtual void write_vel(FILE *, int, double **); - int pack_bond(tagint **); - void write_bond(FILE *, int, tagint **, int); - int pack_angle(tagint **); - void write_angle(FILE *, int, tagint **, int); - int pack_dihedral(tagint **); - void write_dihedral(FILE *, int, tagint **, int); - int pack_improper(tagint **); - void write_improper(FILE *, int, tagint **, int); + virtual int pack_bond(tagint **); + virtual void write_bond(FILE *, int, tagint **, int); + virtual int pack_angle(tagint **); + virtual void write_angle(FILE *, int, tagint **, int); + virtual int pack_dihedral(tagint **); + virtual void write_dihedral(FILE *, int, tagint **, int); + virtual int pack_improper(tagint **); + virtual void write_improper(FILE *, int, tagint **, int); virtual int property_atom(char *) {return -1;} virtual void pack_property_atom(int, double *, int, int) {} - bigint memory_usage(); + virtual bigint memory_usage(); virtual bigint memory_usage_bonus() {} protected: -- GitLab From d34f9af2914ff8aa3e214a022509979bb29b638d Mon Sep 17 00:00:00 2001 From: Steve Plimpton Date: Thu, 30 Jan 2020 14:27:45 -0700 Subject: [PATCH 020/717] fixed bug with writing of data file velocities --- src/atom_vec.cpp | 66 +++++++++++++++++++++++------------------------- 1 file changed, 31 insertions(+), 35 deletions(-) diff --git a/src/atom_vec.cpp b/src/atom_vec.cpp index 77ba68f651..08f9c54e56 100644 --- a/src/atom_vec.cpp +++ b/src/atom_vec.cpp @@ -1979,47 +1979,43 @@ void AtomVec::write_vel(FILE *fp, int n, double **buf) void *pdata; for (i = 0; i < n; i++) { - fprintf(fp,TAGINT_FORMAT " %-1.16e %-1.16e %-1.16e\n", - (tagint) ubuf(buf[i][0]).i,buf[i][1],buf[i][2],buf[i][3]); - - if (ndata_vel) { - j = 4; - for (nn = 0; nn < ndata_vel; nn++) { - pdata = mdata_vel.pdata[nn]; - datatype = mdata_vel.datatype[nn]; - cols = mdata_vel.cols[nn]; - if (datatype == DOUBLE) { - if (cols == 0) { - double *vec = *((double **) pdata); + fprintf(fp,TAGINT_FORMAT,(tagint) ubuf(buf[i][0]).i); + + j = 1; + for (nn = 1; nn < ndata_vel; nn++) { + pdata = mdata_vel.pdata[nn]; + datatype = mdata_vel.datatype[nn]; + cols = mdata_vel.cols[nn]; + if (datatype == DOUBLE) { + if (cols == 0) { + double *vec = *((double **) pdata); + fprintf(fp," %-1.16e",buf[i][j++]); + } else { + double **array = *((double ***) pdata); + for (m = 0; m < cols; m++) fprintf(fp," %-1.16e",buf[i][j++]); - } else { - double **array = *((double ***) pdata); - for (m = 0; m < cols; m++) - fprintf(fp," %-1.16e",buf[i][j++]); - } - } else if (datatype == INT) { - if (cols == 0) { - int *vec = *((int **) pdata); + } + } else if (datatype == INT) { + if (cols == 0) { + int *vec = *((int **) pdata); + fprintf(fp," %d",(int) ubuf(buf[i][j++]).i); + } else { + int **array = *((int ***) pdata); + for (m = 0; m < cols; m++) fprintf(fp," %d",(int) ubuf(buf[i][j++]).i); - } else { - int **array = *((int ***) pdata); - for (m = 0; m < cols; m++) - fprintf(fp," %d",(int) ubuf(buf[i][j++]).i); - } - } else if (datatype == BIGINT) { - if (cols == 0) { - bigint *vec = *((bigint **) pdata); + } + } else if (datatype == BIGINT) { + if (cols == 0) { + bigint *vec = *((bigint **) pdata); + fprintf(fp," " BIGINT_FORMAT,(bigint) ubuf(buf[i][j++]).i); + } else { + bigint **array = *((bigint ***) pdata); + for (m = 0; m < cols; m++) fprintf(fp," " BIGINT_FORMAT,(bigint) ubuf(buf[i][j++]).i); - } else { - bigint **array = *((bigint ***) pdata); - for (m = 0; m < cols; m++) - fprintf(fp," " BIGINT_FORMAT,(bigint) ubuf(buf[i][j++]).i); - } } } } - - fprintf(fp,"\n"); + fprintf(fp,"\n"); } } -- GitLab From 9e8806bd2239d88a83b1c15b1724541b0e8f4d6d Mon Sep 17 00:00:00 2001 From: Vsevak Date: Fri, 31 Jan 2020 21:26:52 +0300 Subject: [PATCH 021/717] Addition to lib/gpu/README for HIP --- lib/gpu/README | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/lib/gpu/README b/lib/gpu/README index 2d98749a40..969417a865 100644 --- a/lib/gpu/README +++ b/lib/gpu/README @@ -67,8 +67,8 @@ library requires installing the CUDA GPU driver and CUDA toolkit for your operating system. Installation of the CUDA SDK is not necessary. In addition to the LAMMPS library, the binary nvc_get_devices will also be built. This can be used to query the names and properties of GPU -devices on your system. A Makefile for OpenCL compilation is provided, -but support for OpenCL use is not currently provided by the developers. +devices on your system. A Makefile for OpenCL and ROCm HIP compilation +is provided, but support for it is not currently provided by the developers. Details of the implementation are provided in: ---- @@ -169,6 +169,25 @@ NOTE: The system-specific setting LAMMPS_SMALLBIG (default), LAMMPS_BIGBIG, src/MAKE/Makefile.foo) should be consistent with that specified when building libgpu.a (i.e. by LMP_INC in the lib/gpu/Makefile.bar). + BUILDING FOR HIP FRAMEWORK + -------------------------------- +1. Install the latest ROCm framework (https://github.com/RadeonOpenCompute/ROCm). +2. GPU sorting requires installing hipcub +(https://github.com/ROCmSoftwarePlatform/hipCUB). The HIP CUDA-backend +additionally requires cub (https://nvlabs.github.io/cub). Download and +extract the cub directory to lammps/lib/gpu/ or specify an appropriate +path in lammps/lib/gpu/Makefile.hip. +3. In Makefile.hip it is possible to specify the target platform via +export HIP_PLATFORM=hcc or HIP_PLATFORM=nvcc as well as the target +architecture (gfx803, gfx900, gfx906 etc.) +4. If your MPI implementation does not support `mpicxx --showme` command, +it is required to specify the corresponding MPI compiler and linker flags +in lammps/lib/gpu/Makefile.hip and in lammps/src/MAKE/OPTIONS/Makefile.hip. +5. Building the GPU library (libgpu.a): + cd lammps/lib/gpu; make -f Makefile.hip -j +6. Building the LAMMPS executable (lmp_hip): + cd ../../src; make hip -j + EXAMPLE CONVENTIONAL BUILD PROCESS -------------------------------- -- GitLab From 33fc22b752c3652df832662a91a1e5fc887c9200 Mon Sep 17 00:00:00 2001 From: Vsevak Date: Mon, 3 Feb 2020 01:55:20 +0300 Subject: [PATCH 022/717] Fix echo in Makefile --- lib/gpu/Makefile.hip | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/gpu/Makefile.hip b/lib/gpu/Makefile.hip index 5c9f251004..1c8e0683ca 100644 --- a/lib/gpu/Makefile.hip +++ b/lib/gpu/Makefile.hip @@ -137,7 +137,7 @@ $(OBJ_DIR)/lal_%.o: lal_%.cpp $(CUHS) $(ALL_H) $(LIB_DIR)/libgpu.a: $(OBJS) $(AR) -crs $@ $(OBJS) - echo "export HIP_PLATFORM := $(HIP_PLATFORM)\n$(HIP_LIBS_TARGET)" > 'Makefile.lammps' + echo -e "export HIP_PLATFORM := $(HIP_PLATFORM)\n$(HIP_LIBS_TARGET)" > 'Makefile.lammps' # test app building -- GitLab From 5f68f3006f1eafaffdb13b3e85220b5d8ac0dd2a Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 8 Feb 2020 15:12:26 -0500 Subject: [PATCH 023/717] replace Fix::box_change_xxx variables with Fix::box_change bitmask and add check to Domain::init() This allows a more specific tracking of whether multiple fixes are modifying the same box parameter and error out in that case. --- src/RIGID/fix_rigid_nh.cpp | 4 ++++ src/RIGID/fix_rigid_nh_small.cpp | 4 ++++ src/RIGID/fix_rigid_nph.cpp | 1 - src/RIGID/fix_rigid_nph_small.cpp | 1 - src/RIGID/fix_rigid_npt.cpp | 1 - src/RIGID/fix_rigid_npt_small.cpp | 1 - src/SHOCK/fix_msst.cpp | 15 +++++++++----- src/SRD/fix_srd.cpp | 11 ++++++---- src/USER-BOCS/fix_bocs.cpp | 8 ++++++-- src/USER-MISC/fix_npt_cauchy.cpp | 8 ++++++-- src/USER-OMP/fix_rigid_nph_omp.cpp | 1 - src/USER-OMP/fix_rigid_npt_omp.cpp | 1 - src/USER-QTB/fix_qbmsst.cpp | 12 ++++++----- src/USER-UEF/fix_nh_uef.cpp | 2 +- src/domain.cpp | 33 +++++++++++++++++++++++++++--- src/fix.cpp | 2 +- src/fix.h | 11 +++++++--- src/fix_balance.cpp | 2 +- src/fix_box_relax.cpp | 9 ++++++-- src/fix_deform.cpp | 8 ++++++-- src/fix_nh.cpp | 8 ++++++-- src/fix_press_berendsen.cpp | 6 ++++-- 22 files changed, 108 insertions(+), 41 deletions(-) diff --git a/src/RIGID/fix_rigid_nh.cpp b/src/RIGID/fix_rigid_nh.cpp index 6ffb997ffa..1df7f34532 100644 --- a/src/RIGID/fix_rigid_nh.cpp +++ b/src/RIGID/fix_rigid_nh.cpp @@ -106,6 +106,10 @@ FixRigidNH::FixRigidNH(LAMMPS *lmp, int narg, char **arg) : p_period[0] != p_period[2])) error->all(FLERR,"Invalid fix rigid npt/nph command pressure settings"); + if (p_flag[0]) box_change |= BOX_CHANGE_X; + if (p_flag[1]) box_change |= BOX_CHANGE_Y; + if (p_flag[2]) box_change |= BOX_CHANGE_Z; + if ((tstat_flag && t_period <= 0.0) || (p_flag[0] && p_period[0] <= 0.0) || (p_flag[1] && p_period[1] <= 0.0) || diff --git a/src/RIGID/fix_rigid_nh_small.cpp b/src/RIGID/fix_rigid_nh_small.cpp index 136796ce18..5b75640549 100644 --- a/src/RIGID/fix_rigid_nh_small.cpp +++ b/src/RIGID/fix_rigid_nh_small.cpp @@ -120,6 +120,10 @@ FixRigidNHSmall::FixRigidNHSmall(LAMMPS *lmp, int narg, char **arg) : p_period[0] != p_period[2])) error->all(FLERR,"Invalid fix rigid/small npt/nph command pressure settings"); + if (p_flag[0]) box_change |= BOX_CHANGE_X; + if (p_flag[1]) box_change |= BOX_CHANGE_Y; + if (p_flag[2]) box_change |= BOX_CHANGE_Z; + if ((tstat_flag && t_period <= 0.0) || (p_flag[0] && p_period[0] <= 0.0) || (p_flag[1] && p_period[1] <= 0.0) || diff --git a/src/RIGID/fix_rigid_nph.cpp b/src/RIGID/fix_rigid_nph.cpp index 706e08ec12..5c3b5390aa 100644 --- a/src/RIGID/fix_rigid_nph.cpp +++ b/src/RIGID/fix_rigid_nph.cpp @@ -33,7 +33,6 @@ FixRigidNPH::FixRigidNPH(LAMMPS *lmp, int narg, char **arg) : scalar_flag = 1; restart_global = 1; - box_change_size = 1; extscalar = 1; // error checks diff --git a/src/RIGID/fix_rigid_nph_small.cpp b/src/RIGID/fix_rigid_nph_small.cpp index 32ac58220d..7769ced807 100644 --- a/src/RIGID/fix_rigid_nph_small.cpp +++ b/src/RIGID/fix_rigid_nph_small.cpp @@ -33,7 +33,6 @@ FixRigidNPHSmall::FixRigidNPHSmall(LAMMPS *lmp, int narg, char **arg) : scalar_flag = 1; restart_global = 1; - box_change_size = 1; extscalar = 1; // error checks diff --git a/src/RIGID/fix_rigid_npt.cpp b/src/RIGID/fix_rigid_npt.cpp index 1f19fb4ec7..5f3fde669c 100644 --- a/src/RIGID/fix_rigid_npt.cpp +++ b/src/RIGID/fix_rigid_npt.cpp @@ -33,7 +33,6 @@ FixRigidNPT::FixRigidNPT(LAMMPS *lmp, int narg, char **arg) : scalar_flag = 1; restart_global = 1; - box_change_size = 1; extscalar = 1; // error checks diff --git a/src/RIGID/fix_rigid_npt_small.cpp b/src/RIGID/fix_rigid_npt_small.cpp index e8924be79f..d3bd5b8f57 100644 --- a/src/RIGID/fix_rigid_npt_small.cpp +++ b/src/RIGID/fix_rigid_npt_small.cpp @@ -33,7 +33,6 @@ FixRigidNPTSmall::FixRigidNPTSmall(LAMMPS *lmp, int narg, char **arg) : scalar_flag = 1; restart_global = 1; - box_change_size = 1; extscalar = 1; // error checks diff --git a/src/SHOCK/fix_msst.cpp b/src/SHOCK/fix_msst.cpp index 2e9f751824..67b2a7fb0f 100644 --- a/src/SHOCK/fix_msst.cpp +++ b/src/SHOCK/fix_msst.cpp @@ -46,7 +46,6 @@ FixMSST::FixMSST(LAMMPS *lmp, int narg, char **arg) : if (narg < 4) error->all(FLERR,"Illegal fix msst command"); restart_global = 1; - box_change_size = 1; time_integrate = 1; scalar_flag = 1; vector_flag = 1; @@ -78,10 +77,16 @@ FixMSST::FixMSST(LAMMPS *lmp, int narg, char **arg) : dftb = 0; beta = 0.0; - if (strcmp(arg[3],"x") == 0) direction = 0; - else if (strcmp(arg[3],"y") == 0) direction = 1; - else if (strcmp(arg[3],"z") == 0) direction = 2; - else error->all(FLERR,"Illegal fix msst command"); + if (strcmp(arg[3],"x") == 0) { + direction = 0; + box_change |= BOX_CHANGE_X; + } else if (strcmp(arg[3],"y") == 0) { + direction = 1; + box_change |= BOX_CHANGE_Y; + } else if (strcmp(arg[3],"z") == 0) { + direction = 2; + box_change |= BOX_CHANGE_Z; + } else error->all(FLERR,"Illegal fix msst command"); velocity = force->numeric(FLERR,arg[4]); if (velocity < 0) error->all(FLERR,"Illegal fix msst command"); diff --git a/src/SRD/fix_srd.cpp b/src/SRD/fix_srd.cpp index d5eec91f50..d87851381f 100644 --- a/src/SRD/fix_srd.cpp +++ b/src/SRD/fix_srd.cpp @@ -375,13 +375,16 @@ void FixSRD::init() change_size = change_shape = deformflag = 0; if (domain->nonperiodic == 2) change_size = 1; + + Fix **fixes = modify->fix; for (int i = 0; i < modify->nfix; i++) { - if (modify->fix[i]->box_change_size) change_size = 1; - if (modify->fix[i]->box_change_shape) change_shape = 1; - if (strcmp(modify->fix[i]->style,"deform") == 0) { + if (fixes[i]->box_change & BOX_CHANGE_SIZE) change_size = 1; + if (fixes[i]->box_change & BOX_CHANGE_SHAPE) change_shape = 1; + if (strcmp(fixes[i]->style,"deform") == 0) { deformflag = 1; FixDeform *deform = (FixDeform *) modify->fix[i]; - if (deform->box_change_shape && deform->remapflag != Domain::V_REMAP) + if ((deform->box_change & BOX_CHANGE_SHAPE) + && deform->remapflag != Domain::V_REMAP) error->all(FLERR,"Using fix srd with inconsistent " "fix deform remap option"); } diff --git a/src/USER-BOCS/fix_bocs.cpp b/src/USER-BOCS/fix_bocs.cpp index adce231bf1..3543c2f156 100644 --- a/src/USER-BOCS/fix_bocs.cpp +++ b/src/USER-BOCS/fix_bocs.cpp @@ -292,8 +292,12 @@ FixBocs::FixBocs(LAMMPS *lmp, int narg, char **arg) : if (p_flag[i]) pstat_flag = 1; if (pstat_flag) { - if (p_flag[0] || p_flag[1] || p_flag[2]) box_change_size = 1; - if (p_flag[3] || p_flag[4] || p_flag[5]) box_change_shape = 1; + if (p_flag[0]) box_change |= BOX_CHANGE_X; + if (p_flag[1]) box_change |= BOX_CHANGE_Y; + if (p_flag[2]) box_change |= BOX_CHANGE_Z; + if (p_flag[3]) box_change |= BOX_CHANGE_YZ; + if (p_flag[4]) box_change |= BOX_CHANGE_XZ; + if (p_flag[5]) box_change |= BOX_CHANGE_XY; no_change_box = 1; if (allremap == 0) restart_pbc = 1; diff --git a/src/USER-MISC/fix_npt_cauchy.cpp b/src/USER-MISC/fix_npt_cauchy.cpp index 1b0deb5ae3..7a4a34bd00 100644 --- a/src/USER-MISC/fix_npt_cauchy.cpp +++ b/src/USER-MISC/fix_npt_cauchy.cpp @@ -492,8 +492,12 @@ FixNPTCauchy::FixNPTCauchy(LAMMPS *lmp, int narg, char **arg) : if (p_flag[i]) pstat_flag = 1; if (pstat_flag) { - if (p_flag[0] || p_flag[1] || p_flag[2]) box_change_size = 1; - if (p_flag[3] || p_flag[4] || p_flag[5]) box_change_shape = 1; + if (p_flag[0]) box_change |= BOX_CHANGE_X; + if (p_flag[1]) box_change |= BOX_CHANGE_Y; + if (p_flag[2]) box_change |= BOX_CHANGE_Z; + if (p_flag[3]) box_change |= BOX_CHANGE_YZ; + if (p_flag[4]) box_change |= BOX_CHANGE_XZ; + if (p_flag[5]) box_change |= BOX_CHANGE_XY; no_change_box = 1; if (allremap == 0) restart_pbc = 1; diff --git a/src/USER-OMP/fix_rigid_nph_omp.cpp b/src/USER-OMP/fix_rigid_nph_omp.cpp index 31d53868c8..ff192341e4 100644 --- a/src/USER-OMP/fix_rigid_nph_omp.cpp +++ b/src/USER-OMP/fix_rigid_nph_omp.cpp @@ -33,7 +33,6 @@ FixRigidNPHOMP::FixRigidNPHOMP(LAMMPS *lmp, int narg, char **arg) : scalar_flag = 1; restart_global = 1; - box_change_size = 1; extscalar = 1; // error checks diff --git a/src/USER-OMP/fix_rigid_npt_omp.cpp b/src/USER-OMP/fix_rigid_npt_omp.cpp index 1e7c139d52..6da51e6220 100644 --- a/src/USER-OMP/fix_rigid_npt_omp.cpp +++ b/src/USER-OMP/fix_rigid_npt_omp.cpp @@ -33,7 +33,6 @@ FixRigidNPTOMP::FixRigidNPTOMP(LAMMPS *lmp, int narg, char **arg) : scalar_flag = 1; restart_global = 1; - box_change_size = 1; extscalar = 1; // error checks diff --git a/src/USER-QTB/fix_qbmsst.cpp b/src/USER-QTB/fix_qbmsst.cpp index abbf1701b8..27b1dcd4df 100644 --- a/src/USER-QTB/fix_qbmsst.cpp +++ b/src/USER-QTB/fix_qbmsst.cpp @@ -45,13 +45,16 @@ FixQBMSST::FixQBMSST(LAMMPS *lmp, int narg, char **arg) : { if (narg < 5) error->all(FLERR,"Illegal fix qbmsst command"); - if ( strcmp(arg[3],"x") == 0 ) + if ( strcmp(arg[3],"x") == 0 ) { direction = 0; - else if ( strcmp(arg[3],"y") == 0 ) + box_change |= BOX_CHANGE_X; + } else if ( strcmp(arg[3],"y") == 0 ) { direction = 1; - else if ( strcmp(arg[3],"z") == 0 ) + box_change |= BOX_CHANGE_Y; + } else if ( strcmp(arg[3],"z") == 0 ) { direction = 2; - else { + box_change |= BOX_CHANGE_Z; + } else { error->all(FLERR,"Illegal fix qbmsst command"); } velocity = atof(arg[4]); @@ -64,7 +67,6 @@ FixQBMSST::FixQBMSST(LAMMPS *lmp, int narg, char **arg) : extvector = 0; nevery = 1; restart_global = 1; - box_change_size = 1; time_integrate = 1; scalar_flag = 1; vector_flag = 1; diff --git a/src/USER-UEF/fix_nh_uef.cpp b/src/USER-UEF/fix_nh_uef.cpp index 8873688eb7..5c98a2dc85 100644 --- a/src/USER-UEF/fix_nh_uef.cpp +++ b/src/USER-UEF/fix_nh_uef.cpp @@ -163,7 +163,7 @@ FixNHUef::FixNHUef(LAMMPS *lmp, int narg, char **arg) : // flag that I change the box here (in case of nvt) - box_change_shape = 1; + box_change |= BOX_CHANGE_SHAPE; // initialize the UEFBox class which computes the box at each step diff --git a/src/domain.cpp b/src/domain.cpp index e894682556..efa2ef00cf 100644 --- a/src/domain.cpp +++ b/src/domain.cpp @@ -19,6 +19,7 @@ #include #include #include +#include #include "style_region.h" #include "atom.h" #include "atom_vec.h" @@ -133,13 +134,39 @@ void Domain::init() box_change_size = box_change_shape = box_change_domain = 0; + // flags for detecting, if multiple fixes try to change the + // same box size or shape parameter + + int box_change_x=0, box_change_y=0, box_change_z=0; + int box_change_yz=0, box_change_xz=0, box_change_xy=0; + Fix **fixes = modify->fix; + if (nonperiodic == 2) box_change_size = 1; for (int i = 0; i < modify->nfix; i++) { - if (modify->fix[i]->box_change_size) box_change_size = 1; - if (modify->fix[i]->box_change_shape) box_change_shape = 1; - if (modify->fix[i]->box_change_domain) box_change_domain = 1; + if (fixes[i]->box_change & Fix::BOX_CHANGE_SIZE) box_change_size = 1; + if (fixes[i]->box_change & Fix::BOX_CHANGE_SHAPE) box_change_shape = 1; + if (fixes[i]->box_change & Fix::BOX_CHANGE_DOMAIN) box_change_domain = 1; + if (fixes[i]->box_change & Fix::BOX_CHANGE_X) box_change_x++; + if (fixes[i]->box_change & Fix::BOX_CHANGE_Y) box_change_y++; + if (fixes[i]->box_change & Fix::BOX_CHANGE_Z) box_change_z++; + if (fixes[i]->box_change & Fix::BOX_CHANGE_YZ) box_change_yz++; + if (fixes[i]->box_change & Fix::BOX_CHANGE_XZ) box_change_xz++; + if (fixes[i]->box_change & Fix::BOX_CHANGE_XY) box_change_xy++; } + std::string mesg = "Must not have multiple fixes change box parameter "; + +#define CHECK_BOX_FIX_ERROR(par) \ + if (box_change_ ## par > 1) error->all(FLERR,(mesg + #par).c_str()) + + CHECK_BOX_FIX_ERROR(x); + CHECK_BOX_FIX_ERROR(y); + CHECK_BOX_FIX_ERROR(z); + CHECK_BOX_FIX_ERROR(yz); + CHECK_BOX_FIX_ERROR(xz); + CHECK_BOX_FIX_ERROR(xy); +#undef CHECK_BOX_FIX_ERROR + box_change = 0; if (box_change_size || box_change_shape || box_change_domain) box_change = 1; diff --git a/src/fix.cpp b/src/fix.cpp index d86acf0ae4..9c883a6897 100644 --- a/src/fix.cpp +++ b/src/fix.cpp @@ -58,7 +58,7 @@ Fix::Fix(LAMMPS *lmp, int /*narg*/, char **arg) : restart_global = restart_peratom = restart_file = 0; force_reneighbor = 0; - box_change_size = box_change_shape = box_change_domain = 0; + box_change = NO_BOX_CHANGE; thermo_energy = 0; thermo_virial = 0; rigid_flag = 0; diff --git a/src/fix.h b/src/fix.h index bcab6f289e..921778ae98 100644 --- a/src/fix.h +++ b/src/fix.h @@ -30,9 +30,14 @@ class Fix : protected Pointers { int restart_file; // 1 if Fix writes own restart file, 0 if not int force_reneighbor; // 1 if Fix forces reneighboring, 0 if not - int box_change_size; // 1 if Fix changes box size, 0 if not - int box_change_shape; // 1 if Fix changes box shape, 0 if not - int box_change_domain; // 1 if Fix changes proc sub-domains, 0 if not + int box_change; // >0 if Fix changes box size, shape, or sub-domains, 0 if not + enum { + NO_BOX_CHANGE = 0, BOX_CHANGE_ANY = 1<<0, BOX_CHANGE_DOMAIN = 1<<1, + BOX_CHANGE_X = 1<<2, BOX_CHANGE_Y = 1<<3, BOX_CHANGE_Z = 1<<4, + BOX_CHANGE_YZ = 1<<5, BOX_CHANGE_XZ = 1<<6, BOX_CHANGE_XY = 1<<7, + BOX_CHANGE_SIZE = BOX_CHANGE_X | BOX_CHANGE_Y | BOX_CHANGE_Z, + BOX_CHANGE_SHAPE = BOX_CHANGE_YZ | BOX_CHANGE_XZ | BOX_CHANGE_XY + }; bigint next_reneighbor; // next timestep to force a reneighboring int thermo_energy; // 1 if fix_modify enabled ThEng, 0 if not diff --git a/src/fix_balance.cpp b/src/fix_balance.cpp index 5ca1ec124a..b178cca83b 100644 --- a/src/fix_balance.cpp +++ b/src/fix_balance.cpp @@ -39,7 +39,7 @@ FixBalance::FixBalance(LAMMPS *lmp, int narg, char **arg) : { if (narg < 6) error->all(FLERR,"Illegal fix balance command"); - box_change_domain = 1; + box_change = BOX_CHANGE_DOMAIN; scalar_flag = 1; extscalar = 0; vector_flag = 1; diff --git a/src/fix_box_relax.cpp b/src/fix_box_relax.cpp index c19ea918b4..8d6111c0a0 100644 --- a/src/fix_box_relax.cpp +++ b/src/fix_box_relax.cpp @@ -218,8 +218,13 @@ FixBoxRelax::FixBoxRelax(LAMMPS *lmp, int narg, char **arg) : } else error->all(FLERR,"Illegal fix box/relax command"); } - if (p_flag[0] || p_flag[1] || p_flag[2]) box_change_size = 1; - if (p_flag[3] || p_flag[4] || p_flag[5]) box_change_shape = 1; + if (p_flag[0]) box_change |= BOX_CHANGE_X; + if (p_flag[1]) box_change |= BOX_CHANGE_Y; + if (p_flag[2]) box_change |= BOX_CHANGE_Z; + if (p_flag[3]) box_change |= BOX_CHANGE_YZ; + if (p_flag[4]) box_change |= BOX_CHANGE_XZ; + if (p_flag[5]) box_change |= BOX_CHANGE_XY; + if (allremap == 0) restart_pbc = 1; // error checks diff --git a/src/fix_deform.cpp b/src/fix_deform.cpp index 9d84c4bb62..4ecfa6f433 100644 --- a/src/fix_deform.cpp +++ b/src/fix_deform.cpp @@ -211,8 +211,12 @@ rfix(NULL), irregular(NULL), set(NULL) if (set[i].style == NONE) dimflag[i] = 0; else dimflag[i] = 1; - if (dimflag[0] || dimflag[1] || dimflag[2]) box_change_size = 1; - if (dimflag[3] || dimflag[4] || dimflag[5]) box_change_shape = 1; + if (dimflag[0]) box_change |= BOX_CHANGE_X; + if (dimflag[1]) box_change |= BOX_CHANGE_Y; + if (dimflag[2]) box_change |= BOX_CHANGE_Z; + if (dimflag[3]) box_change |= BOX_CHANGE_YZ; + if (dimflag[4]) box_change |= BOX_CHANGE_XZ; + if (dimflag[5]) box_change |= BOX_CHANGE_XY; // no tensile deformation on shrink-wrapped dims // b/c shrink wrap will change box-length diff --git a/src/fix_nh.cpp b/src/fix_nh.cpp index bb3fe7559c..e397e3367a 100644 --- a/src/fix_nh.cpp +++ b/src/fix_nh.cpp @@ -476,8 +476,12 @@ FixNH::FixNH(LAMMPS *lmp, int narg, char **arg) : if (p_flag[i]) pstat_flag = 1; if (pstat_flag) { - if (p_flag[0] || p_flag[1] || p_flag[2]) box_change_size = 1; - if (p_flag[3] || p_flag[4] || p_flag[5]) box_change_shape = 1; + if (p_flag[0]) box_change |= BOX_CHANGE_X; + if (p_flag[1]) box_change |= BOX_CHANGE_Y; + if (p_flag[2]) box_change |= BOX_CHANGE_Z; + if (p_flag[3]) box_change |= BOX_CHANGE_YZ; + if (p_flag[4]) box_change |= BOX_CHANGE_XZ; + if (p_flag[5]) box_change |= BOX_CHANGE_XY; no_change_box = 1; if (allremap == 0) restart_pbc = 1; diff --git a/src/fix_press_berendsen.cpp b/src/fix_press_berendsen.cpp index c090c554e2..184f02c440 100644 --- a/src/fix_press_berendsen.cpp +++ b/src/fix_press_berendsen.cpp @@ -40,8 +40,6 @@ FixPressBerendsen::FixPressBerendsen(LAMMPS *lmp, int narg, char **arg) : { if (narg < 5) error->all(FLERR,"Illegal fix press/berendsen command"); - box_change_size = 1; - // Berendsen barostat applied every step nevery = 1; @@ -204,6 +202,10 @@ FixPressBerendsen::FixPressBerendsen(LAMMPS *lmp, int narg, char **arg) : (p_flag[2] && p_period[2] <= 0.0)) error->all(FLERR,"Fix press/berendsen damping parameters must be > 0.0"); + if (p_flag[0]) box_change |= BOX_CHANGE_X; + if (p_flag[1]) box_change |= BOX_CHANGE_Y; + if (p_flag[2]) box_change |= BOX_CHANGE_Z; + // pstyle = ISO if XYZ coupling or XY coupling in 2d -> 1 dof // else pstyle = ANISO -> 3 dof -- GitLab From 8f3c94f33b3eb1fc2a6b4e722a3c30eece4fa831 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 8 Feb 2020 15:22:54 -0500 Subject: [PATCH 024/717] document new error message --- doc/src/Errors_messages.rst | 3 +++ src/domain.h | 4 ++++ 2 files changed, 7 insertions(+) diff --git a/doc/src/Errors_messages.rst b/doc/src/Errors_messages.rst index bbe84de065..f89b5f5b88 100644 --- a/doc/src/Errors_messages.rst +++ b/doc/src/Errors_messages.rst @@ -5815,6 +5815,9 @@ Doc page with :doc:`WARNING messages ` Cannot use the temper command with only one processor partition. Use the -partition command-line option. +*Must not have multiple fixes change box parameter ...* + Self-explanatory. + *Must read Atoms before Angles* The Atoms section of a data file must come before an Angles section. diff --git a/src/domain.h b/src/domain.h index a0bda8ae72..0ce31a8b4a 100644 --- a/src/domain.h +++ b/src/domain.h @@ -282,6 +282,10 @@ E: Both sides of boundary must be periodic Cannot specify a boundary as periodic only on the lo or hi side. Must be periodic on both sides. +E: Must not have multiple fixes change box parameter ... + +Self-explanatory. + U: Box bounds are invalid The box boundaries specified in the read_data file are invalid. The -- GitLab From f82892c45a5ca45fa01856f4e031e3e9cec855da Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 8 Feb 2020 15:28:10 -0500 Subject: [PATCH 025/717] refactor one more fix --- src/SHOCK/fix_append_atoms.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/SHOCK/fix_append_atoms.cpp b/src/SHOCK/fix_append_atoms.cpp index 5e85b39076..1a6b128cd5 100644 --- a/src/SHOCK/fix_append_atoms.cpp +++ b/src/SHOCK/fix_append_atoms.cpp @@ -40,7 +40,6 @@ FixAppendAtoms::FixAppendAtoms(LAMMPS *lmp, int narg, char **arg) : { force_reneighbor = 1; next_reneighbor = -1; - box_change_size = 1; time_depend = 1; if (narg < 4) error->all(FLERR,"Illegal fix append/atoms command"); @@ -75,35 +74,41 @@ FixAppendAtoms::FixAppendAtoms(LAMMPS *lmp, int narg, char **arg) : if (strcmp(arg[iarg],"xlo") == 0) { error->all(FLERR,"Only zhi currently implemented for fix append/atoms"); xloflag = 1; + box_change |= BOX_CHANGE_X; iarg++; if (domain->boundary[0][0] != 3) error->all(FLERR,"Append boundary must be shrink/minimum"); } else if (strcmp(arg[iarg],"xhi") == 0) { error->all(FLERR,"Only zhi currently implemented for fix append/atoms"); xhiflag = 1; + box_change |= BOX_CHANGE_X; iarg++; if (domain->boundary[0][1] != 3) error->all(FLERR,"Append boundary must be shrink/minimum"); } else if (strcmp(arg[iarg],"ylo") == 0) { error->all(FLERR,"Only zhi currently implemented for fix append/atoms"); yloflag = 1; + box_change |= BOX_CHANGE_Y; iarg++; if (domain->boundary[1][0] != 3) error->all(FLERR,"Append boundary must be shrink/minimum"); } else if (strcmp(arg[iarg],"yhi") == 0) { error->all(FLERR,"Only zhi currently implemented for fix append/atoms"); yhiflag = 1; + box_change |= BOX_CHANGE_Y; iarg++; if (domain->boundary[1][1] != 3) error->all(FLERR,"Append boundary must be shrink/minimum"); } else if (strcmp(arg[iarg],"zlo") == 0) { error->all(FLERR,"Only zhi currently implemented for fix append/atoms"); zloflag = 1; + box_change |= BOX_CHANGE_Z; iarg++; if (domain->boundary[2][0] != 3) error->all(FLERR,"Append boundary must be shrink/minimum"); } else if (strcmp(arg[iarg],"zhi") == 0) { zhiflag = 1; + box_change |= BOX_CHANGE_Z; iarg++; if (domain->boundary[2][1] != 3) error->all(FLERR,"Append boundary must be shrink/minimum"); -- GitLab From 1430d1cb126fa7df1bf35527a82760923e1cbb93 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 8 Feb 2020 15:30:13 -0500 Subject: [PATCH 026/717] ...and one more --- src/USER-UEF/fix_nh_uef.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/USER-UEF/fix_nh_uef.cpp b/src/USER-UEF/fix_nh_uef.cpp index 5c98a2dc85..01e2081aca 100644 --- a/src/USER-UEF/fix_nh_uef.cpp +++ b/src/USER-UEF/fix_nh_uef.cpp @@ -244,7 +244,7 @@ void FixNHUef::init() for (int i=0; i < modify->nfix; i++) { if (strcmp(modify->fix[i]->id,id) != 0) - if (modify->fix[i]->box_change_shape != 0) + if ((modify->fix[i]->box_change & BOX_CHANGE_SHAPE) != 0) error->all(FLERR,"Can't use another fix which changes box shape with fix/nvt/npt/uef"); } -- GitLab From 994e1318dd1866201546e98f76064853edeb5731 Mon Sep 17 00:00:00 2001 From: julient31 Date: Mon, 17 Feb 2020 16:59:01 -0700 Subject: [PATCH 027/717] Commit JT 021720 - initial commit - added corrected Neel, new E and w calc. --- src/SPIN/pair_spin_neel.cpp | 127 +++++++++++++++++++++++++----------- src/SPIN/pair_spin_neel.h | 1 + 2 files changed, 89 insertions(+), 39 deletions(-) diff --git a/src/SPIN/pair_spin_neel.cpp b/src/SPIN/pair_spin_neel.cpp index 4a5d453de2..811276cac5 100644 --- a/src/SPIN/pair_spin_neel.cpp +++ b/src/SPIN/pair_spin_neel.cpp @@ -259,7 +259,8 @@ void PairSpinNeel::compute(int eflag, int vflag) } if (eflag) { - evdwl = (spi[0]*fmi[0] + spi[1]*fmi[1] + spi[2]*fmi[2]); + // evdwl = (spi[0]*fmi[0] + spi[1]*fmi[1] + spi[2]*fmi[2]); + evdwl = compute_neel_energy(i,j,rsq,eij,spi,spj); evdwl *= 0.5*hbar; } else evdwl = 0.0; @@ -365,65 +366,69 @@ void PairSpinNeel::compute_single_pair(int ii, double fmi[3]) /* ---------------------------------------------------------------------- */ -void PairSpinNeel::compute_neel(int i, int j, double rsq, double eij[3], double fmi[3], double spi[3], double spj[3]) +void PairSpinNeel::compute_neel(int i, int j, double rsq, double eij[3], double fmi[3], double spi[3], double spj[3]) { int *type = atom->type; int itype, jtype; itype = type[i]; jtype = type[j]; - double gij, q1ij, q2ij, ra; + double qr,gr,g1r,q1r,q2r,ra; double pdx, pdy, pdz; double pq1x, pq1y, pq1z; double pq2x, pq2y, pq2z; + double eij_si,eij_sj,si_sj,eij_si_2,eij_sj_3,coeff1; - // pseudo-dipolar component + // compute Neel's functions ra = rsq/g3[itype][jtype]/g3[itype][jtype]; - gij = 4.0*g1[itype][jtype]*ra; - gij *= (1.0-g2[itype][jtype]*ra); - gij *= exp(-ra); + gr = 4.0*g1[itype][jtype]*ra; + gr *= (1.0-g2[itype][jtype]*ra); + gr *= exp(-ra); - double scalar_eij_si = eij[0]*spi[0] + eij[1]*spi[1] + eij[2]*spi[2]; - double scalar_eij_sj = eij[0]*spj[0] + eij[1]*spj[1] + eij[2]*spj[2]; - double scalar_si_sj = spi[0]*spj[0] + spi[1]*spj[1] + spi[2]*spj[2]; + ra = rsq/q3[itype][jtype]/q3[itype][jtype]; + qr = 4.0*q1[itype][jtype]*ra; + qr *= (1.0-q2[itype][jtype]*ra); + qr *= exp(-ra); - double gij_eij_sj = gij*scalar_eij_sj; - double gij_3 = gij/3.0; - pdx = gij_eij_sj*eij[0] - gij_3*spj[0]; - pdy = gij_eij_sj*eij[1] - gij_3*spj[1]; - pdz = gij_eij_sj*eij[2] - gij_3*spj[2]; + g1r = (gr + 12.0*qr/35.0); + q1r = 9.0*qr/5.0; + q2r = -2.0*qr/5.0; - // pseudo-quadrupolar component + // pseudo-dipolar component + + eij_si = eij[0]*spi[0] + eij[1]*spi[1] + eij[2]*spi[2]; + eij_sj = eij[0]*spj[0] + eij[1]*spj[1] + eij[2]*spj[2]; + si_sj = spi[0]*spj[0] + spi[1]*spj[1] + spi[2]*spj[2]; - ra = rsq/q3[itype][jtype]/q3[itype][jtype]; - q1ij = 4.0*q1[itype][jtype]*ra; - q1ij *= (1.0-q2[itype][jtype]*ra); - q1ij *= exp(-ra); - q2ij = (-2.0*q1ij/9.0); + pdx = g1r*(eij_sj*eij[0] - spj[0]/3.0); + pdy = g1r*(eij_sj*eij[1] - spj[1]/3.0); + pdz = g1r*(eij_sj*eij[2] - spj[2]/3.0); - double scalar_eij_si_2 = scalar_eij_si*scalar_eij_si; - pq1x = -(scalar_eij_si_2*scalar_eij_si_2 - scalar_si_sj/3.0)*spj[0]/3.0; - pq1y = -(scalar_eij_si_2*scalar_eij_si_2 - scalar_si_sj/3.0)*spj[1]/3.0; - pq1z = -(scalar_eij_si_2*scalar_eij_si_2 - scalar_si_sj/3.0)*spj[2]/3.0; + // pseudo-quadrupolar components - double pqt1 = (scalar_eij_sj*scalar_eij_sj-scalar_si_sj/3.0); - pq1x += pqt1*(2.0*scalar_eij_si*eij[0] - spj[0]/3.0); - pq1y += pqt1*(2.0*scalar_eij_si*eij[1] - spj[1]/3.0); - pq1z += pqt1*(2.0*scalar_eij_si*eij[2] - spj[2]/3.0); + eij_si_2 = eij_si*eij_si; + pq1x = -(eij_si_2 - si_sj/3.0)*spj[0]/3.0; + pq1y = -(eij_si_2 - si_sj/3.0)*spj[1]/3.0; + pq1z = -(eij_si_2 - si_sj/3.0)*spj[2]/3.0; - pq1x *= q1ij; - pq1y *= q1ij; - pq1z *= q1ij; + coeff1 = (eij_sj*eij_sj-si_sj/3.0); + pq1x += coeff1*(2.0*eij_si*eij[0] - spj[0]/3.0); + pq1y += coeff1*(2.0*eij_si*eij[1] - spj[1]/3.0); + pq1z += coeff1*(2.0*eij_si*eij[2] - spj[2]/3.0); - double scalar_eij_sj_3 = scalar_eij_sj*scalar_eij_sj*scalar_eij_sj; - pq2x = 3.0*scalar_eij_si_2*scalar_eij_sj*eij[0] + scalar_eij_sj_3*eij[0]; - pq2y = 3.0*scalar_eij_si_2*scalar_eij_sj*eij[1] + scalar_eij_sj_3*eij[1]; - pq2z = 3.0*scalar_eij_si_2*scalar_eij_sj*eij[2] + scalar_eij_sj_3*eij[2]; + pq1x *= q1r; + pq1y *= q1r; + pq1z *= q1r; - pq2x *= q2ij; - pq2y *= q2ij; - pq2z *= q2ij; + eij_sj_3 = eij_sj*eij_sj*eij_sj; + pq2x = 3.0*eij_si_2*eij_sj*eij[0] + eij_sj_3*eij[0]; + pq2y = 3.0*eij_si_2*eij_sj*eij[1] + eij_sj_3*eij[1]; + pq2z = 3.0*eij_si_2*eij_sj*eij[2] + eij_sj_3*eij[2]; + + pq2x *= q2r; + pq2y *= q2r; + pq2z *= q2r; // adding three contributions @@ -563,6 +568,50 @@ void PairSpinNeel::compute_neel_mech(int i, int j, double rsq, double eij[3], do fi[2] = pdz + pq1z + pq2z; } +/* ---------------------------------------------------------------------- */ + +double PairSpinNeel::compute_neel_energy(int i, int j, double rsq, double eij[3], double spi[3], double spj[3]) +{ + int *type = atom->type; + int itype, jtype; + itype = type[i]; + jtype = type[j]; + + double qr,gr,g1r,q1r,q2r,ra; + double epd,epq1,epq2; + double eij_si,eij_sj,si_sj; + double eij_si_2,eij_sj_2,eij_si_3,eij_sj_3; + + // compute Neel's functions + + ra = rsq/g3[itype][jtype]/g3[itype][jtype]; + gr = 4.0*g1[itype][jtype]*ra; + gr *= (1.0-g2[itype][jtype]*ra); + gr *= exp(-ra); + + ra = rsq/q3[itype][jtype]/q3[itype][jtype]; + qr = 4.0*q1[itype][jtype]*ra; + qr *= (1.0-q2[itype][jtype]*ra); + qr *= exp(-ra); + + g1r = (gr + 12.0*qr/35.0); + q1r = 9.0*qr/5.0; + q2r = -2.0*qr/5.0; + + eij_si = eij[0]*spi[0] + eij[1]*spi[1] + eij[2]*spi[2]; + eij_sj = eij[0]*spj[0] + eij[1]*spj[1] + eij[2]*spj[2]; + si_sj = spi[0]*spj[0] + spi[1]*spj[1] + spi[2]*spj[2]; + epd = g1r*(eij_si*eij_sj-si_sj/3.0); + eij_si_2 = eij_si*eij_si; + eij_sj_2 = eij_sj*eij_sj; + epq1 = q1r*(eij_si_2-si_sj/3.0)*(eij_sj_2-si_sj/3.0); + eij_si_3 = eij_si*eij_si*eij_si; + eij_sj_3 = eij_sj*eij_sj*eij_sj; + epq2 = q2r*(eij_si*eij_sj_3+eij_sj*eij_si_3); + + return (epd+epq1+epq2); +} + /* ---------------------------------------------------------------------- allocate all arrays ------------------------------------------------------------------------- */ diff --git a/src/SPIN/pair_spin_neel.h b/src/SPIN/pair_spin_neel.h index 5261a7f746..a39cf839c9 100644 --- a/src/SPIN/pair_spin_neel.h +++ b/src/SPIN/pair_spin_neel.h @@ -38,6 +38,7 @@ class PairSpinNeel : public PairSpin { void compute_neel(int, int, double, double *, double *, double *, double *); void compute_neel_mech(int, int, double, double *, double *, double *, double *); + double compute_neel_energy(int, int, double, double *, double *, double *); void write_restart(FILE *); void read_restart(FILE *); -- GitLab From a7878096f0e48c4fc9bce241094bc45225564462 Mon Sep 17 00:00:00 2001 From: julient31 Date: Mon, 17 Feb 2020 17:35:59 -0700 Subject: [PATCH 028/717] Commit2 JT 021720 - small change in energy - to do: check w and rework F --- src/SPIN/pair_spin_neel.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/SPIN/pair_spin_neel.cpp b/src/SPIN/pair_spin_neel.cpp index 811276cac5..6cf5d4843f 100644 --- a/src/SPIN/pair_spin_neel.cpp +++ b/src/SPIN/pair_spin_neel.cpp @@ -605,8 +605,8 @@ double PairSpinNeel::compute_neel_energy(int i, int j, double rsq, double eij[3] eij_si_2 = eij_si*eij_si; eij_sj_2 = eij_sj*eij_sj; epq1 = q1r*(eij_si_2-si_sj/3.0)*(eij_sj_2-si_sj/3.0); - eij_si_3 = eij_si*eij_si*eij_si; - eij_sj_3 = eij_sj*eij_sj*eij_sj; + eij_si_3 = eij_si*eij_si_2; + eij_sj_3 = eij_sj*eij_sj_2; epq2 = q2r*(eij_si*eij_sj_3+eij_sj*eij_si_3); return (epd+epq1+epq2); -- GitLab From b9a9bebd37e21692d8c732e47a2910794f9c3244 Mon Sep 17 00:00:00 2001 From: Steve Plimpton Date: Thu, 20 Feb 2020 12:48:44 -0700 Subject: [PATCH 029/717] delay change_box error check on per-atom restart data existing --- doc/src/change_box.rst | 40 ++++++++++++++++++++++++++++------------ src/change_box.cpp | 22 +++++++++++++++++++--- 2 files changed, 47 insertions(+), 15 deletions(-) diff --git a/doc/src/change_box.rst b/doc/src/change_box.rst index 02f06ac681..f481658849 100644 --- a/doc/src/change_box.rst +++ b/doc/src/change_box.rst @@ -147,24 +147,40 @@ new owning processors. .. note:: - The simulation box size/shape can be changed by arbitrarily - large amounts by this command. This is not a problem, except that the + The simulation box size/shape can be changed by arbitrarily large + amounts by this command. This is not a problem, except that the mapping of processors to the simulation box is not changed from its initial 3d configuration; see the :doc:`processors ` command. Thus, if the box size/shape changes dramatically, the - mapping of processors to the simulation box may not end up as optimal - as the initial mapping attempted to be. + mapping of processors to the simulation box may not end up as + optimal as the initial mapping attempted to be. You may wish to + re-balance the atoms by using the :doc:`balance ` command + if that is the case. .. note:: - Because the keywords used in this command are applied one at a - time to the simulation box and the atoms in it, care must be taken - with triclinic cells to avoid exceeding the limits on skew after each - transformation in the sequence. If skew is exceeded before the final - transformation this can be avoided by changing the order of the - sequence, or breaking the transformation into two or more smaller - transformations. For more information on the allowed limits for box - skew see the discussion on triclinic boxes on :doc:`Howto triclinic ` doc page. + You cannot use this command after reading a restart file (and + before a run is performed) if the restart file stored per-atom + information from a fix and any of the specified keywords change the + box size or shape or boundary conditions. This is because atoms + may be moved to new processors and the restart info will not + migrate with them. LAMMPS will generate an error if this could + happen. Only the *ortho* and *triclinic* keywords do not trigger + this error. One solution is to perform a "run 0" command before + using the change_box command. This clears the per-atom restart + data, whether it has been re-assigned to a new fix or not. + +.. note:: + + Because the keywords used in this command are applied one at a time + to the simulation box and the atoms in it, care must be taken with + triclinic cells to avoid exceeding the limits on skew after each + transformation in the sequence. If skew is exceeded before the + final transformation this can be avoided by changing the order of + the sequence, or breaking the transformation into two or more + smaller transformations. For more information on the allowed + limits for box skew see the discussion on triclinic boxes on + :doc:`Howto triclinic ` doc page. ---------- diff --git a/src/change_box.cpp b/src/change_box.cpp index 98119fb3bf..7ae49ca776 100644 --- a/src/change_box.cpp +++ b/src/change_box.cpp @@ -46,9 +46,6 @@ void ChangeBox::command(int narg, char **arg) if (domain->box_exist == 0) error->all(FLERR,"Change_box command before simulation box is defined"); if (narg < 2) error->all(FLERR,"Illegal change_box command"); - if (modify->nfix_restart_peratom) - error->all(FLERR,"Cannot change_box after " - "reading restart file with per-atom info"); if (comm->me == 0 && screen) fprintf(screen,"Changing box ...\n"); @@ -174,6 +171,21 @@ void ChangeBox::command(int narg, char **arg) if (nops == 0) error->all(FLERR,"Illegal change_box command"); + // move_atoms = 1 if need to move atoms to new procs after box changes + // anything other than ORTHO or TRICLINIC may cause atom movement + + int move_atoms = 0; + for (int m = 0; m < nops; m++) { + if (ops[m].style != ORTHO || ops[m].style != TRICLINIC) move_atoms = 1; + } + + // error if moving atoms and there is stored per-atom restart state + // disallowed b/c restart per-atom fix info will not move with atoms + + if (move_atoms && modify->nfix_restart_peratom) + error->all(FLERR,"Change_box parameter not allowed after " + "reading restart file with per-atom info"); + // read options from end of input line options(narg-iarg,&arg[iarg]); @@ -350,6 +362,10 @@ void ChangeBox::command(int narg, char **arg) if (domain->triclinic) domain->lamda2x(atom->nlocal); } + // done if don't need to move atoms + + if (!move_atoms) return; + // move atoms back inside simulation box and to new processors // use remap() instead of pbc() // in case box moved a long distance relative to atoms -- GitLab From 361f7bb0fd7e386d91a47436ec4dcf65a0b4eaac Mon Sep 17 00:00:00 2001 From: julient31 Date: Fri, 21 Feb 2020 12:07:42 -0700 Subject: [PATCH 030/717] Commit JT 022120 - added precession_spin management in compute_spin - to do: add it for pairs - make sure users only declare 1 precession/spin --- src/SPIN/compute_spin.cpp | 70 +++++++++++++++++++++++++++++++- src/SPIN/compute_spin.h | 14 +++++++ src/SPIN/fix_precession_spin.cpp | 10 +++++ src/SPIN/fix_precession_spin.h | 4 ++ 4 files changed, 96 insertions(+), 2 deletions(-) diff --git a/src/SPIN/compute_spin.cpp b/src/SPIN/compute_spin.cpp index 7ee2b5bcfc..0612e5720e 100644 --- a/src/SPIN/compute_spin.cpp +++ b/src/SPIN/compute_spin.cpp @@ -24,11 +24,15 @@ #include "compute_spin.h" #include #include +#include #include "atom.h" #include "error.h" +#include "fix_precession_spin.h" #include "force.h" #include "math_const.h" #include "memory.h" +#include "modify.h" +#include "pair_spin.h" #include "update.h" using namespace LAMMPS_NS; @@ -64,6 +68,50 @@ void ComputeSpin::init() { hbar = force->hplanck/MY_2PI; kb = force->boltz; + + // init length of vector of ptrs to Pair/Spin styles + + if (npairspin > 0) { + spin_pairs = new PairSpin*[npairspin]; + } + + // loop 2: fill vector with ptrs to Pair/Spin styles + + int count = 0; + if (npairspin == 1) { + count = 1; + spin_pairs[0] = (PairSpin *) force->pair_match("spin",0,0); + } else if (npairspin > 1) { + for (int i = 0; ipair_match("spin",0,i)) { + spin_pairs[count] = (PairSpin *) force->pair_match("spin",0,i); + count++; + } + } + } + + if (count != npairspin) + error->all(FLERR,"Incorrect number of spin pairs"); + + // set pair/spin and long/spin flags + + if (npairspin >= 1) pair_spin_flag = 1; + + for (int i = 0; ipair_match("spin/long",0,i)) { + long_spin_flag = 1; + } + } + + // ptrs FixPrecessionSpin classes + + int iforce; + for (iforce = 0; iforce < modify->nfix; iforce++) { + if (strstr(modify->fix[iforce]->style,"precession/spin")) { + precession_spin_flag = 1; + lockprecessionspin = (FixPrecessionSpin *) modify->fix[iforce]; + } + } } /* ---------------------------------------------------------------------- */ @@ -104,7 +152,24 @@ void ComputeSpin::compute_vector() mag[0] += sp[i][0]; mag[1] += sp[i][1]; mag[2] += sp[i][2]; - magenergy -= (sp[i][0]*fm[i][0] + sp[i][1]*fm[i][1] + sp[i][2]*fm[i][2]); + // magenergy -= (sp[i][0]*fm[i][0] + sp[i][1]*fm[i][1] + sp[i][2]*fm[i][2]); + + // update magnetic precession energies + + if (precession_spin_flag) { + magenergy -= lockprecessionspin->compute_zeeman_energy(sp[i]); + magenergy -= lockprecessionspin->compute_anisotropy_energy(sp[i]); + magenergy -= lockprecessionspin->compute_cubic_energy(sp[i]); + } + + // update magnetic pair interactions + + if (pair_spin_flag) { + for (int k = 0; k < npairspin; k++) { + // spin_pairs[k]->compute_single_pair(i,fmi); + } + } + tx = sp[i][1]*fm[i][2]-sp[i][2]*fm[i][1]; ty = sp[i][2]*fm[i][0]-sp[i][0]*fm[i][2]; tz = sp[i][0]*fm[i][1]-sp[i][1]*fm[i][0]; @@ -134,7 +199,8 @@ void ComputeSpin::compute_vector() vector[1] = magtot[1]; vector[2] = magtot[2]; vector[3] = magtot[3]; - vector[4] = magenergytot*hbar; + // vector[4] = magenergytot*hbar; + vector[4] = magenergytot; vector[5] = spintemperature; } diff --git a/src/SPIN/compute_spin.h b/src/SPIN/compute_spin.h index c5d55b84cb..2ff0ba8eee 100644 --- a/src/SPIN/compute_spin.h +++ b/src/SPIN/compute_spin.h @@ -32,7 +32,21 @@ class ComputeSpin : public Compute { void compute_vector(); private: + int pair_spin_flag; // magnetic pair flags + int long_spin_flag; // magnetic long-range flag + int precession_spin_flag; // magnetic precession flags + double kb,hbar; + + // pointers to magnetic fixes + + class FixPrecessionSpin *lockprecessionspin; + + // pointers to magnetic pair styles + + int npairs, npairspin; // # of pairs, and # of spin pairs + class Pair *pair; + class PairSpin **spin_pairs; // vector of spin pairs void allocate(); }; diff --git a/src/SPIN/fix_precession_spin.cpp b/src/SPIN/fix_precession_spin.cpp index 2d55de33ea..f9307d7ad0 100644 --- a/src/SPIN/fix_precession_spin.cpp +++ b/src/SPIN/fix_precession_spin.cpp @@ -302,6 +302,16 @@ void FixPrecessionSpin::compute_zeeman(int i, double fmi[3]) /* ---------------------------------------------------------------------- */ +double FixPrecessionSpin::compute_zeeman_energy(double spi[4]) +{ + double energy = 0.0; + double scalar = nhx*spi[0]+nhy*spi[1]+nhz*spi[2]; + energy = hbar*H_field*spi[3]*scalar; + return energy; +} + +/* ---------------------------------------------------------------------- */ + void FixPrecessionSpin::compute_anisotropy(double spi[3], double fmi[3]) { double scalar = nax*spi[0] + nay*spi[1] + naz*spi[2]; diff --git a/src/SPIN/fix_precession_spin.h b/src/SPIN/fix_precession_spin.h index 6ece653ca7..3c809506c1 100644 --- a/src/SPIN/fix_precession_spin.h +++ b/src/SPIN/fix_precession_spin.h @@ -41,7 +41,11 @@ class FixPrecessionSpin : public Fix { int zeeman_flag, aniso_flag, cubic_flag; void compute_single_precession(int, double *, double *); + + // zeeman calculations + void compute_zeeman(int, double *); + double compute_zeeman_energy(double *); // uniaxial aniso calculations -- GitLab From 09d0df43e215e6ce646334b5b60c3e8e53ff85f0 Mon Sep 17 00:00:00 2001 From: julient31 Date: Fri, 21 Feb 2020 17:53:14 -0700 Subject: [PATCH 031/717] Commit JT 022120 - added message for only one precession/spin (+doc) - added a per pair/spin class emag table --- doc/src/fix_precession_spin.rst | 7 +++++- src/SPIN/compute_spin.cpp | 18 +++++++++++++- src/SPIN/fix_precession_spin.cpp | 9 +++++++ src/SPIN/pair_spin.cpp | 6 +++++ src/SPIN/pair_spin.h | 4 +++ src/SPIN/pair_spin_dipole_cut.cpp | 10 ++++++++ src/SPIN/pair_spin_dipole_long.cpp | 24 ++++++++++++++---- src/SPIN/pair_spin_dmi.cpp | 15 ++++++++++- src/SPIN/pair_spin_exchange.cpp | 40 ++++++++++++++++++++++++++++++ src/SPIN/pair_spin_exchange.h | 2 ++ src/SPIN/pair_spin_magelec.cpp | 14 +++++++++++ src/SPIN/pair_spin_neel.cpp | 14 +++++++++++ 12 files changed, 155 insertions(+), 8 deletions(-) diff --git a/doc/src/fix_precession_spin.rst b/doc/src/fix_precession_spin.rst index 9cd15119bd..2d23ed1037 100644 --- a/doc/src/fix_precession_spin.rst +++ b/doc/src/fix_precession_spin.rst @@ -82,6 +82,7 @@ function for the same parameters. .. image:: JPG/zeeman_langevin.jpg :align: center + :width: 600 The temperature effects are accounted for by connecting the spin :math:`i` to a thermal bath using a Langevin thermostat (see @@ -159,11 +160,15 @@ No information about this fix is written to :doc:`binary restart files Restrictions """""""""""" - The *precession/spin* style is part of the SPIN package. This style is only enabled if LAMMPS was built with this package, and if the atom\_style "spin" was declared. See the :doc:`Build package ` doc page for more info. +The *precession/spin* style can only be declared once. If more +than one precession type (for example combining an anisotropy and a Zeeman interactions) +has to be declared, they have to be chained in the same command +line (as shown in the examples above). + Related commands """""""""""""""" diff --git a/src/SPIN/compute_spin.cpp b/src/SPIN/compute_spin.cpp index 0612e5720e..8a71be019b 100644 --- a/src/SPIN/compute_spin.cpp +++ b/src/SPIN/compute_spin.cpp @@ -69,6 +69,22 @@ void ComputeSpin::init() hbar = force->hplanck/MY_2PI; kb = force->boltz; + // loop 1: obtain # of Pairs, and # of Pair/Spin styles + + if (force->pair_match("spin",0,0)) { // only one Pair/Spin style + pair = force->pair_match("spin",0,0); + npairs = pair->instance_total; + npairspin = 1; + } else if (force->pair_match("spin",0,1)) { // more than one Pair/Spin style + pair = force->pair_match("spin",0,1); + npairs = pair->instance_total; + for (int i = 0; ipair_match("spin",0,i)) { + npairspin ++; + } + } + } + // init length of vector of ptrs to Pair/Spin styles if (npairspin > 0) { @@ -166,7 +182,7 @@ void ComputeSpin::compute_vector() if (pair_spin_flag) { for (int k = 0; k < npairspin; k++) { - // spin_pairs[k]->compute_single_pair(i,fmi); + magenergy += spin_pairs[k]->emag[i]; } } diff --git a/src/SPIN/fix_precession_spin.cpp b/src/SPIN/fix_precession_spin.cpp index f9307d7ad0..57e4549718 100644 --- a/src/SPIN/fix_precession_spin.cpp +++ b/src/SPIN/fix_precession_spin.cpp @@ -197,6 +197,15 @@ void FixPrecessionSpin::init() error->all(FLERR,"Illegal precession/spin command"); } + // check that fix precession/spin is only declared once + + int iprec = 0; + for (int iforce = 0; iforce < modify->nfix; iforce++) + if (strstr(modify->fix[iforce]->style,"precession/spin")) iprec++; + if (iprec > 1) + error->all(FLERR,"precession/spin command can only be declared once"); + + varflag = CONSTANT; if (magfieldstyle != CONSTANT) varflag = EQUAL; diff --git a/src/SPIN/pair_spin.cpp b/src/SPIN/pair_spin.cpp index f167e3455c..01b8775eab 100644 --- a/src/SPIN/pair_spin.cpp +++ b/src/SPIN/pair_spin.cpp @@ -29,6 +29,7 @@ #include "fix.h" #include "force.h" #include "math_const.h" +#include "memory.h" #include "modify.h" #include "neighbor.h" #include "neigh_request.h" @@ -98,4 +99,9 @@ void PairSpin::init_style() if (ifix >=0) lattice_flag = ((FixNVESpin *) modify->fix[ifix])->lattice_flag; + // test emag list storing mag energies + // init. size of energy stacking lists + + nlocal_max = atom->nlocal; + memory->grow(emag,nlocal_max,"pair/spin:emag"); } diff --git a/src/SPIN/pair_spin.h b/src/SPIN/pair_spin.h index 34f12d8d59..c8292236a3 100644 --- a/src/SPIN/pair_spin.h +++ b/src/SPIN/pair_spin.h @@ -31,6 +31,10 @@ friend class FixNVESpin; virtual void compute(int, int) {} virtual void compute_single_pair(int, double *) {} + + // test emag list storing mag energies + int nlocal_max; // max value of nlocal (for size of lists) + double *emag; // energy list protected: double hbar; // Planck constant (eV.ps.rad-1) diff --git a/src/SPIN/pair_spin_dipole_cut.cpp b/src/SPIN/pair_spin_dipole_cut.cpp index a7372b480d..6029f8bdbb 100644 --- a/src/SPIN/pair_spin_dipole_cut.cpp +++ b/src/SPIN/pair_spin_dipole_cut.cpp @@ -64,6 +64,9 @@ PairSpinDipoleCut::~PairSpinDipoleCut() memory->destroy(setflag); memory->destroy(cut_spin_long); memory->destroy(cutsq); + + // test emag list storing mag energies + memory->destroy(emag); } } @@ -185,6 +188,13 @@ void PairSpinDipoleCut::compute(int eflag, int vflag) numneigh = list->numneigh; firstneigh = list->firstneigh; + // test emag list storing mag energies + // checking size of emag + if (nlocal_max < nlocal) { // grow emag lists if necessary + nlocal_max = nlocal; + memory->grow(emag,nlocal_max,"pair/spin:emag"); + } + // computation of the exchange interaction // loop over atoms and their neighbors diff --git a/src/SPIN/pair_spin_dipole_long.cpp b/src/SPIN/pair_spin_dipole_long.cpp index 124522a9b9..7856035159 100644 --- a/src/SPIN/pair_spin_dipole_long.cpp +++ b/src/SPIN/pair_spin_dipole_long.cpp @@ -69,6 +69,9 @@ PairSpinDipoleLong::~PairSpinDipoleLong() memory->destroy(setflag); memory->destroy(cut_spin_long); memory->destroy(cutsq); + + // test emag list storing mag energies + memory->destroy(emag); } } @@ -212,6 +215,13 @@ void PairSpinDipoleLong::compute(int eflag, int vflag) numneigh = list->numneigh; firstneigh = list->firstneigh; + // test emag list storing mag energies + // checking size of emag + if (nlocal_max < nlocal) { // grow emag lists if necessary + nlocal_max = nlocal; + memory->grow(emag,nlocal_max,"pair/spin:emag"); + } + pre1 = 2.0 * g_ewald / MY_PIS; pre2 = 4.0 * pow(g_ewald,3.0) / MY_PIS; pre3 = 8.0 * pow(g_ewald,5.0) / MY_PIS; @@ -221,16 +231,20 @@ void PairSpinDipoleLong::compute(int eflag, int vflag) for (ii = 0; ii < inum; ii++) { i = ilist[ii]; + itype = type[i]; + + jlist = firstneigh[i]; + jnum = numneigh[i]; xi[0] = x[i][0]; xi[1] = x[i][1]; xi[2] = x[i][2]; - jlist = firstneigh[i]; - jnum = numneigh[i]; spi[0] = sp[i][0]; spi[1] = sp[i][1]; spi[2] = sp[i][2]; spi[3] = sp[i][3]; - itype = type[i]; + + // test emag list storing mag energies + emag[i] = 0.0; for (jj = 0; jj < jnum; jj++) { j = jlist[jj]; @@ -294,9 +308,9 @@ void PairSpinDipoleLong::compute(int eflag, int vflag) if (eflag) { if (rsq <= local_cut2) { - evdwl -= spi[0]*fmi[0] + spi[1]*fmi[1] + - spi[2]*fmi[2]; + evdwl -= (spi[0]*fmi[0] + spi[1]*fmi[1] + spi[2]*fmi[2]); evdwl *= 0.5*hbar; + emag[i] += evdwl; } } else evdwl = 0.0; diff --git a/src/SPIN/pair_spin_dmi.cpp b/src/SPIN/pair_spin_dmi.cpp index 04c2dc408d..266bc05da4 100644 --- a/src/SPIN/pair_spin_dmi.cpp +++ b/src/SPIN/pair_spin_dmi.cpp @@ -53,6 +53,9 @@ PairSpinDmi::~PairSpinDmi() memory->destroy(vmech_dmy); memory->destroy(vmech_dmz); memory->destroy(cutsq); + + // test emag list storing mag energies + memory->destroy(emag); } } @@ -191,6 +194,13 @@ void PairSpinDmi::compute(int eflag, int vflag) numneigh = list->numneigh; firstneigh = list->firstneigh; + // test emag list storing mag energies + // checking size of emag + if (nlocal_max < nlocal) { // grow emag lists if necessary + nlocal_max = nlocal; + memory->grow(emag,nlocal_max,"pair/spin:emag"); + } + // dmi computation // loop over all atoms @@ -206,7 +216,9 @@ void PairSpinDmi::compute(int eflag, int vflag) spi[0] = sp[i][0]; spi[1] = sp[i][1]; spi[2] = sp[i][2]; - + + // test emag list storing mag energies + emag[i] = 0.0; // loop on neighbors @@ -260,6 +272,7 @@ void PairSpinDmi::compute(int eflag, int vflag) if (eflag) { evdwl -= (spi[0]*fmi[0] + spi[1]*fmi[1] + spi[2]*fmi[2]); evdwl *= 0.5*hbar; + emag[i] += evdwl; } else evdwl = 0.0; if (evflag) ev_tally_xyz(i,j,nlocal,newton_pair, diff --git a/src/SPIN/pair_spin_exchange.cpp b/src/SPIN/pair_spin_exchange.cpp index 6eacb04ee3..d645515506 100644 --- a/src/SPIN/pair_spin_exchange.cpp +++ b/src/SPIN/pair_spin_exchange.cpp @@ -50,6 +50,9 @@ PairSpinExchange::~PairSpinExchange() memory->destroy(J2); memory->destroy(J3); memory->destroy(cutsq); // to be implemented + + // test emag list storing mag energies + memory->destroy(emag); } } @@ -176,6 +179,13 @@ void PairSpinExchange::compute(int eflag, int vflag) numneigh = list->numneigh; firstneigh = list->firstneigh; + // test emag list storing mag energies + // checking size of emag + if (nlocal_max < nlocal) { // grow emag lists if necessary + nlocal_max = nlocal; + memory->grow(emag,nlocal_max,"pair/spin:emag"); + } + // computation of the exchange interaction // loop over atoms and their neighbors @@ -191,6 +201,9 @@ void PairSpinExchange::compute(int eflag, int vflag) spi[0] = sp[i][0]; spi[1] = sp[i][1]; spi[2] = sp[i][2]; + + // test emag list storing mag energies + emag[i] = 0.0; // loop on neighbors @@ -243,6 +256,10 @@ void PairSpinExchange::compute(int eflag, int vflag) if (eflag) { evdwl -= (spi[0]*fmi[0] + spi[1]*fmi[1] + spi[2]*fmi[2]); evdwl *= 0.5*hbar; + // printf("test ex energy: %g \n",evdwl); + // evdwl = -0.5*compute_energy(i,j,rsq,spi,spj); + // printf("test ex energy: %g \n",evdwl); + emag[i] += evdwl; // evdwl *= hbar; } else evdwl = 0.0; @@ -385,6 +402,29 @@ void PairSpinExchange::compute_exchange_mech(int i, int j, double rsq, double ei fi[2] -= Jex_mech*eij[2]; } +/* ---------------------------------------------------------------------- + compute energy of spin pair i and j +------------------------------------------------------------------------- */ + +// double PairSpinExchange::compute_energy(int i, int j, double rsq, double spi[3], double spj[3]) +// { +// int *type = atom->type; +// int itype, jtype; +// double Jex, ra; +// double energy = 0.0; +// itype = type[i]; +// jtype = type[j]; +// +// Jex = J1_mech[itype][jtype]; +// ra = rsq/J3[itype][jtype]/J3[itype][jtype]; +// Jex = 4.0*Jex*ra; +// Jex *= (1.0-J2[itype][jtype]*ra); +// Jex *= exp(-ra); +// +// energy = Jex*(spi[0]*spj[0]+spi[1]*spj[1]+spi[2]*spj[2]); +// return energy; +// } + /* ---------------------------------------------------------------------- allocate all arrays ------------------------------------------------------------------------- */ diff --git a/src/SPIN/pair_spin_exchange.h b/src/SPIN/pair_spin_exchange.h index 19eafeb5ca..4e9e6bfac8 100644 --- a/src/SPIN/pair_spin_exchange.h +++ b/src/SPIN/pair_spin_exchange.h @@ -39,6 +39,8 @@ class PairSpinExchange : public PairSpin { void compute_exchange(int, int, double, double *, double *); void compute_exchange_mech(int, int, double, double *, double *, double *, double *); + // double compute_energy(int , int , double , double *, double *); + void write_restart(FILE *); void read_restart(FILE *); void write_restart_settings(FILE *); diff --git a/src/SPIN/pair_spin_magelec.cpp b/src/SPIN/pair_spin_magelec.cpp index fabad4ae4d..ef91ab764a 100644 --- a/src/SPIN/pair_spin_magelec.cpp +++ b/src/SPIN/pair_spin_magelec.cpp @@ -51,6 +51,9 @@ PairSpinMagelec::~PairSpinMagelec() memory->destroy(v_mey); memory->destroy(v_mez); memory->destroy(cutsq); // to be deteled + + // test emag list storing mag energies + memory->destroy(emag); } } @@ -185,6 +188,13 @@ void PairSpinMagelec::compute(int eflag, int vflag) numneigh = list->numneigh; firstneigh = list->firstneigh; + // test emag list storing mag energies + // checking size of emag + if (nlocal_max < nlocal) { // grow emag lists if necessary + nlocal_max = nlocal; + memory->grow(emag,nlocal_max,"pair/spin:emag"); + } + // magneto-electric computation // loop over atoms and their neighbors @@ -200,6 +210,9 @@ void PairSpinMagelec::compute(int eflag, int vflag) spi[0] = sp[i][0]; spi[1] = sp[i][1]; spi[2] = sp[i][2]; + + // test emag list storing mag energies + emag[i] = 0.0; // loop on neighbors @@ -252,6 +265,7 @@ void PairSpinMagelec::compute(int eflag, int vflag) if (eflag) { evdwl -= (spi[0]*fmi[0] + spi[1]*fmi[1] + spi[2]*fmi[2]); evdwl *= 0.5*hbar; + emag[i] += evdwl; } else evdwl = 0.0; if (evflag) ev_tally_xyz(i,j,nlocal,newton_pair, diff --git a/src/SPIN/pair_spin_neel.cpp b/src/SPIN/pair_spin_neel.cpp index 6cf5d4843f..e158906b75 100644 --- a/src/SPIN/pair_spin_neel.cpp +++ b/src/SPIN/pair_spin_neel.cpp @@ -54,6 +54,9 @@ PairSpinNeel::~PairSpinNeel() memory->destroy(q2); memory->destroy(q3); memory->destroy(cutsq); // to be deleted + + // test emag list storing mag energies + memory->destroy(emag); } } @@ -190,6 +193,13 @@ void PairSpinNeel::compute(int eflag, int vflag) numneigh = list->numneigh; firstneigh = list->firstneigh; + // test emag list storing mag energies + // checking size of emag + if (nlocal_max < nlocal) { // grow emag lists if necessary + nlocal_max = nlocal; + memory->grow(emag,nlocal_max,"pair/spin:emag"); + } + // computation of the neel interaction // loop over atoms and their neighbors @@ -206,6 +216,9 @@ void PairSpinNeel::compute(int eflag, int vflag) spi[1] = sp[i][1]; spi[2] = sp[i][2]; + // test emag list storing mag energies + emag[i] = 0.0; + // loop on neighbors for (jj = 0; jj < jnum; jj++) { @@ -262,6 +275,7 @@ void PairSpinNeel::compute(int eflag, int vflag) // evdwl = (spi[0]*fmi[0] + spi[1]*fmi[1] + spi[2]*fmi[2]); evdwl = compute_neel_energy(i,j,rsq,eij,spi,spj); evdwl *= 0.5*hbar; + emag[i] += evdwl; } else evdwl = 0.0; if (evflag) ev_tally_xyz(i,j,nlocal,newton_pair, -- GitLab From 674781fe0e77828cbb2a946670e55103451f7c55 Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Mon, 24 Feb 2020 13:27:40 -0700 Subject: [PATCH 032/717] Add Kokkos version of compute orientorder/atom --- cmake/Modules/Packages/USER-PLUMED.cmake | 4 +- doc/Makefile | 3 + doc/lammps.1 | 11 +- doc/src/Build_extras.rst | 14 +- doc/src/Build_windows.rst | 28 +- doc/src/Eqs/centro_symmetry.jpg | Bin 4111 -> 0 bytes doc/src/Eqs/centro_symmetry.tex | 9 - doc/src/Eqs/cna_cutoff1.jpg | Bin 13431 -> 0 bytes doc/src/Eqs/cna_cutoff1.tex | 14 - doc/src/Eqs/cna_cutoff2.jpg | Bin 2518 -> 0 bytes doc/src/Eqs/cna_cutoff2.tex | 12 - doc/src/Eqs/cnp_cutoff.jpg | Bin 13431 -> 0 bytes doc/src/Eqs/cnp_cutoff.tex | 14 - doc/src/Eqs/cnp_cutoff2.jpg | Bin 2518 -> 0 bytes doc/src/Eqs/cnp_cutoff2.tex | 12 - doc/src/Eqs/cnp_eq.jpg | Bin 23959 -> 0 bytes doc/src/Eqs/cnp_eq.tex | 9 - doc/src/Eqs/compute_dpd.jpg | Bin 21381 -> 0 bytes doc/src/Eqs/compute_dpd.tex | 13 - doc/src/Eqs/compute_fep_bar.jpg | Bin 18106 -> 0 bytes doc/src/Eqs/compute_fep_bar.tex | 7 - doc/src/Eqs/compute_fep_fdti.jpg | Bin 15544 -> 0 bytes doc/src/Eqs/compute_fep_fdti.tex | 10 - doc/src/Eqs/compute_fep_fep.jpg | Bin 18055 -> 0 bytes doc/src/Eqs/compute_fep_fep.tex | 9 - doc/src/Eqs/compute_fep_lambda.jpg | Bin 10511 -> 0 bytes doc/src/Eqs/compute_fep_lambda.tex | 10 - doc/src/Eqs/compute_fep_ti.jpg | Bin 18149 -> 0 bytes doc/src/Eqs/compute_fep_ti.tex | 10 - doc/src/Eqs/compute_fep_u.jpg | Bin 9337 -> 0 bytes doc/src/Eqs/compute_fep_u.tex | 7 - doc/src/Eqs/compute_fep_vol.jpg | Bin 15209 -> 0 bytes doc/src/Eqs/compute_fep_vol.tex | 9 - doc/src/Eqs/compute_gyration.jpg | Bin 3658 -> 0 bytes doc/src/Eqs/compute_gyration.tex | 9 - doc/src/Eqs/compute_msd_nongauss.jpg | Bin 7277 -> 0 bytes doc/src/Eqs/compute_msd_nongauss.tex | 9 - doc/src/Eqs/compute_saed1.jpg | Bin 1471 -> 0 bytes doc/src/Eqs/compute_saed1.tex | 10 - doc/src/Eqs/compute_saed2.jpg | Bin 4911 -> 0 bytes doc/src/Eqs/compute_saed2.tex | 9 - doc/src/Eqs/compute_saed3.jpg | Bin 7048 -> 0 bytes doc/src/Eqs/compute_saed3.tex | 10 - doc/src/Eqs/compute_shape_parameters.jpg | Bin 7007 -> 0 bytes doc/src/Eqs/compute_shape_parameters.tex | 13 - doc/src/Eqs/compute_sna_atom1.jpg | Bin 19001 -> 0 bytes doc/src/Eqs/compute_sna_atom1.tex | 11 - doc/src/Eqs/compute_sna_atom2.jpg | Bin 17114 -> 0 bytes doc/src/Eqs/compute_sna_atom2.tex | 11 - doc/src/Eqs/compute_sna_atom3.jpg | Bin 19644 -> 0 bytes doc/src/Eqs/compute_sna_atom3.tex | 16 - doc/src/Eqs/compute_sna_atom4.jpg | Bin 35933 -> 0 bytes doc/src/Eqs/compute_sna_atom4.tex | 14 - doc/src/Eqs/compute_sna_atom5.jpg | Bin 14734 -> 0 bytes doc/src/Eqs/compute_sna_atom5.tex | 12 - doc/src/Eqs/compute_sna_atom6.jpg | Bin 17274 -> 0 bytes doc/src/Eqs/compute_sna_atom6.tex | 12 - doc/src/Eqs/compute_xrd1.jpg | Bin 2363 -> 0 bytes doc/src/Eqs/compute_xrd1.tex | 10 - doc/src/Eqs/compute_xrd2.jpg | Bin 4778 -> 0 bytes doc/src/Eqs/compute_xrd2.tex | 9 - doc/src/Eqs/compute_xrd3.jpg | Bin 4745 -> 0 bytes doc/src/Eqs/compute_xrd3.tex | 9 - doc/src/Eqs/compute_xrd4.jpg | Bin 2278 -> 0 bytes doc/src/Eqs/compute_xrd4.tex | 9 - doc/src/Eqs/compute_xrd5.jpg | Bin 7603 -> 0 bytes doc/src/Eqs/compute_xrd5.tex | 10 - doc/src/Eqs/fix_bond_react.jpg | Bin 2427 -> 0 bytes doc/src/Eqs/fix_bond_react.tex | 9 - doc/src/Eqs/fix_box_relax1.jpg | Bin 3375 -> 0 bytes doc/src/Eqs/fix_box_relax1.tex | 9 - doc/src/Eqs/fix_box_relax2.jpg | Bin 3029 -> 0 bytes doc/src/Eqs/fix_box_relax2.tex | 9 - doc/src/Eqs/fix_controller1.jpg | Bin 4832 -> 0 bytes doc/src/Eqs/fix_controller1.tex | 12 - doc/src/Eqs/fix_controller2.jpg | Bin 5571 -> 0 bytes doc/src/Eqs/fix_controller2.tex | 12 - doc/src/Eqs/fix_ehex_eom.jpg | Bin 3272 -> 0 bytes doc/src/Eqs/fix_ehex_eom.tex | 8 - doc/src/Eqs/fix_ehex_f.jpg | Bin 10352 -> 0 bytes doc/src/Eqs/fix_ehex_f.tex | 12 - doc/src/Eqs/fix_eos-cv.jpg | Bin 3016 -> 0 bytes doc/src/Eqs/fix_eos-cv.tex | 9 - doc/src/Eqs/fix_eos_table_rx.jpg | Bin 17367 -> 0 bytes doc/src/Eqs/fix_eos_table_rx.tex | 9 - doc/src/Eqs/fix_gcmc1.jpg | Bin 5617 -> 0 bytes doc/src/Eqs/fix_gcmc1.tex | 9 - doc/src/Eqs/fix_gcmc2.jpg | Bin 10626 -> 0 bytes doc/src/Eqs/fix_gcmc2.tex | 10 - doc/src/Eqs/fix_gcmc3.jpg | Bin 7437 -> 0 bytes doc/src/Eqs/fix_gcmc3.tex | 9 - doc/src/Eqs/fix_gld1.jpg | Bin 14274 -> 0 bytes doc/src/Eqs/fix_gld1.tex | 13 - doc/src/Eqs/fix_grem.jpg | Bin 6224 -> 0 bytes doc/src/Eqs/fix_grem.tex | 9 - .../fix_integration_spin_stdecomposition.tex | 40 - doc/src/Eqs/fix_lb_fluid_boltzmann.jpg | Bin 4643 -> 0 bytes doc/src/Eqs/fix_lb_fluid_boltzmann.tex | 14 - doc/src/Eqs/fix_lb_fluid_fluidforce.jpg | Bin 2358 -> 0 bytes doc/src/Eqs/fix_lb_fluid_fluidforce.tex | 14 - doc/src/Eqs/fix_lb_fluid_gammadefault.jpg | Bin 4793 -> 0 bytes doc/src/Eqs/fix_lb_fluid_gammadefault.tex | 14 - doc/src/Eqs/fix_lb_fluid_navierstokes.jpg | Bin 9311 -> 0 bytes doc/src/Eqs/fix_lb_fluid_navierstokes.tex | 16 - doc/src/Eqs/fix_lb_fluid_properties.jpg | Bin 3471 -> 0 bytes doc/src/Eqs/fix_lb_fluid_properties.tex | 17 - doc/src/Eqs/fix_lb_fluid_stress.jpg | Bin 2530 -> 0 bytes doc/src/Eqs/fix_lb_fluid_stress.tex | 14 - doc/src/Eqs/fix_lb_fluid_viscosity.jpg | Bin 6522 -> 0 bytes doc/src/Eqs/fix_lb_fluid_viscosity.tex | 14 - doc/src/Eqs/fix_mvv_dpd.jpg | Bin 26880 -> 0 bytes doc/src/Eqs/fix_mvv_dpd.tex | 21 - doc/src/Eqs/fix_nh1.jpg | Bin 68243 -> 0 bytes doc/src/Eqs/fix_nh1.tex | 36 - doc/src/Eqs/fix_nphug.jpg | Bin 7506 -> 0 bytes doc/src/Eqs/fix_nphug.tex | 9 - doc/src/Eqs/fix_orient_fcc.jpg | Bin 26005 -> 0 bytes doc/src/Eqs/fix_orient_fcc.tex | 30 - doc/src/Eqs/fix_pimd.jpg | Bin 14569 -> 0 bytes doc/src/Eqs/fix_pimd.tex | 17 - doc/src/Eqs/fix_rattle_constraints.jpg | Bin 4556 -> 0 bytes doc/src/Eqs/fix_rattle_constraints.tex | 9 - doc/src/Eqs/fix_rattle_rij.jpg | Bin 1812 -> 0 bytes doc/src/Eqs/fix_rattle_rij.tex | 8 - doc/src/Eqs/fix_rhok.jpg | Bin 18330 -> 0 bytes doc/src/Eqs/fix_rhok.tex | 11 - doc/src/Eqs/fix_rx.jpg | Bin 2427 -> 0 bytes doc/src/Eqs/fix_rx.tex | 9 - doc/src/Eqs/fix_rx_localTemp.jpg | Bin 16562 -> 0 bytes doc/src/Eqs/fix_rx_localTemp.tex | 9 - doc/src/Eqs/fix_rx_localTemp2.jpg | Bin 16284 -> 0 bytes doc/src/Eqs/fix_rx_localTemp2.tex | 9 - doc/src/Eqs/fix_rx_reaction.jpg | Bin 2896 -> 0 bytes doc/src/Eqs/fix_rx_reaction.tex | 9 - doc/src/Eqs/fix_rx_reactionRate.jpg | Bin 2939 -> 0 bytes doc/src/Eqs/fix_rx_reactionRate.tex | 9 - doc/src/Eqs/fix_spring_rg.jpg | Bin 16204 -> 0 bytes doc/src/Eqs/fix_spring_rg.tex | 19 - doc/src/Eqs/fix_ttm.jpg | Bin 5869 -> 0 bytes doc/src/Eqs/fix_ttm.tex | 15 - doc/src/Eqs/fix_ttm_blast.jpg | Bin 4449 -> 0 bytes doc/src/Eqs/fix_ttm_blast.tex | 13 - doc/src/Eqs/fix_ttm_blast1.jpg | Bin 8657 -> 0 bytes doc/src/Eqs/fix_ttm_blast1.tex | 13 - doc/src/Eqs/fix_ttm_ce.jpg | Bin 7446 -> 0 bytes doc/src/Eqs/fix_ttm_ce.tex | 13 - doc/src/Eqs/fix_ttm_mod.jpg | Bin 10179 -> 0 bytes doc/src/Eqs/fix_ttm_mod.tex | 15 - doc/src/Eqs/fix_wall_colloid.jpg | Bin 17879 -> 0 bytes doc/src/Eqs/fix_wall_colloid.tex | 14 - doc/src/Eqs/fix_wall_ees.jpg | Bin 106786 -> 0 bytes doc/src/Eqs/fix_wall_ees.tex | 10 - doc/src/Eqs/fix_wall_harmonic.jpg | Bin 2413 -> 0 bytes doc/src/Eqs/fix_wall_harmonic.tex | 9 - doc/src/Eqs/fix_wall_lj1043.jpg | Bin 10996 -> 0 bytes doc/src/Eqs/fix_wall_lj1043.tex | 12 - doc/src/Eqs/fix_wall_lj93.jpg | Bin 4883 -> 0 bytes doc/src/Eqs/fix_wall_lj93.tex | 11 - doc/src/Eqs/hexorder.jpg | Bin 16870 -> 0 bytes doc/src/Eqs/hexorder.tex | 8 - doc/src/Eqs/orientorder.jpg | Bin 34695 -> 0 bytes doc/src/Eqs/orientorder.tex | 12 - doc/src/Eqs/pair_adp.jpg | Bin 20391 -> 0 bytes doc/src/Eqs/pair_adp.tex | 16 - doc/src/Eqs/pair_agni.jpg | Bin 15178 -> 0 bytes doc/src/Eqs/pair_agni.tex | 18 - doc/src/Eqs/pair_airebo.jpg | Bin 9380 -> 0 bytes doc/src/Eqs/pair_airebo.tex | 11 - doc/src/Eqs/pair_atm.jpg | Bin 5474 -> 0 bytes doc/src/Eqs/pair_atm.tex | 9 - doc/src/Eqs/pair_beck.jpg | Bin 9451 -> 0 bytes doc/src/Eqs/pair_beck.tex | 11 - doc/src/Eqs/pair_body_rounded.jpg | Bin 146978 -> 0 bytes doc/src/Eqs/pair_body_rounded.tex | 13 - doc/src/Eqs/pair_coul_soft.jpg | Bin 11309 -> 0 bytes doc/src/Eqs/pair_coul_soft.tex | 10 - doc/src/Eqs/pair_lj_soft.jpg | Bin 17984 -> 0 bytes doc/src/Eqs/pair_lj_soft.tex | 15 - doc/src/Eqs/pair_morse_soft.jpg | Bin 20988 -> 0 bytes doc/src/Eqs/pair_morse_soft.tex | 13 - doc/src/Eqs/pair_nm.jpg | Bin 6304 -> 0 bytes doc/src/Eqs/pair_nm.tex | 10 - doc/src/Eqs/pair_srp1.jpg | Bin 3537 -> 0 bytes doc/src/Eqs/pair_srp1.tex | 9 - doc/src/Eqs/pair_srp2.jpg | Bin 5648 -> 0 bytes doc/src/Eqs/pair_srp2.tex | 10 - doc/src/Eqs/pair_sw.jpg | Bin 28707 -> 0 bytes doc/src/Eqs/pair_sw.tex | 18 - doc/src/Eqs/pair_tersoff.jpg | Bin 36139 -> 0 bytes doc/src/Eqs/pair_tersoff_1.jpg | Bin 36584 -> 0 bytes doc/src/Eqs/pair_tersoff_1.tex | 24 - doc/src/Eqs/pair_tersoff_2.jpg | Bin 13756 -> 0 bytes doc/src/Eqs/pair_tersoff_2.tex | 14 - doc/src/Eqs/pair_tersoff_mod.jpg | Bin 91727 -> 0 bytes doc/src/Eqs/pair_tersoff_mod.tex | 24 - doc/src/Eqs/pair_tersoff_mod_c.jpg | Bin 4211 -> 0 bytes doc/src/Eqs/pair_tersoff_mod_c.tex | 10 - doc/src/Eqs/pair_tersoff_zbl.jpg | Bin 392677 -> 0 bytes doc/src/Eqs/pair_tersoff_zbl.tex | 33 - doc/src/Eqs/pair_ufm.jpg | Bin 17830 -> 0 bytes doc/src/Eqs/pair_ufm.tex | 14 - doc/src/Eqs/pair_vashishta.jpg | Bin 73306 -> 0 bytes doc/src/Eqs/pair_vashishta.tex | 22 - doc/src/Eqs/pair_yukawa.jpg | Bin 2189 -> 0 bytes doc/src/Eqs/pair_yukawa.tex | 9 - doc/src/Eqs/pair_yukawa_colloid.jpg | Bin 3067 -> 0 bytes doc/src/Eqs/pair_yukawa_colloid.tex | 9 - doc/src/Eqs/pair_zbl.jpg | Bin 32209 -> 0 bytes doc/src/Eqs/pair_zbl.tex | 11 - doc/src/Eqs/pressure.jpg | Bin 4333 -> 0 bytes doc/src/Eqs/pressure.tex | 9 - doc/src/Eqs/pressure_tensor.jpg | Bin 5457 -> 0 bytes doc/src/Eqs/pressure_tensor.tex | 10 - doc/src/Eqs/ptm_rmsd.jpg | Bin 6833 -> 0 bytes doc/src/Eqs/ptm_rmsd.tex | 21 - doc/src/Install_linux.rst | 25 +- .../fix_integration_spin_stdecomposition.jpg | Bin doc/src/compute_centro_atom.rst | 39 +- doc/src/compute_cna_atom.rst | 17 +- doc/src/compute_cnp_atom.rst | 32 +- doc/src/compute_dpd.rst | 24 +- doc/src/compute_dpd_atom.rst | 18 +- doc/src/compute_entropy_atom.rst | 26 +- doc/src/compute_fep.rst | 56 +- doc/src/compute_gyration.rst | 35 +- doc/src/compute_gyration_chunk.rst | 20 +- doc/src/compute_gyration_shape.rst | 10 +- doc/src/compute_gyration_shape_chunk.rst | 10 +- doc/src/compute_hexorder_atom.rst | 33 +- doc/src/compute_msd_nongauss.rst | 6 +- doc/src/compute_orientorder_atom.rst | 74 +- doc/src/compute_pressure.rst | 13 +- doc/src/compute_ptm_atom.rst | 7 +- doc/src/compute_saed.rst | 140 +++- doc/src/compute_sna_atom.rst | 44 +- doc/src/compute_xrd.rst | 27 +- doc/src/fix_ave_correlate_long.rst | 23 +- doc/src/fix_bond_react.rst | 10 +- doc/src/fix_box_relax.rst | 25 +- doc/src/fix_controller.rst | 48 +- doc/src/fix_ehex.rst | 15 +- doc/src/fix_eos_cv.rst | 18 +- doc/src/fix_eos_table_rx.rst | 55 +- doc/src/fix_gcmc.rst | 46 +- doc/src/fix_gld.rst | 10 +- doc/src/fix_grem.rst | 38 +- doc/src/fix_hyper_global.rst | 84 ++- doc/src/fix_hyper_local.rst | 243 +++--- doc/src/fix_langevin_spin.rst | 15 +- doc/src/fix_lb_fluid.rst | 89 ++- doc/src/fix_mvv_dpd.rst | 10 +- doc/src/fix_nh.rst | 25 +- doc/src/fix_nphug.rst | 51 +- doc/src/fix_npt_cauchy.rst | 22 +- doc/src/fix_nve_spin.rst | 2 +- doc/src/fix_orient.rst | 18 +- doc/src/fix_pimd.rst | 7 +- doc/src/fix_rhok.rst | 8 +- doc/src/fix_rx.rst | 32 +- doc/src/fix_shake.rst | 13 +- doc/src/fix_spring_rg.rst | 18 +- doc/src/fix_ti_spring.rst | 18 +- doc/src/fix_ttm.rst | 34 +- doc/src/fix_wall.rst | 47 +- doc/src/fix_wall_ees.rst | 41 +- doc/src/fix_wall_region.rst | 52 +- doc/src/min_style.rst | 16 +- doc/src/pair_adp.rst | 86 ++- doc/src/pair_agni.rst | 40 +- doc/src/pair_airebo.rst | 115 +-- doc/src/pair_atm.rst | 114 +-- doc/src/pair_beck.rst | 40 +- doc/src/pair_body_nparticle.rst | 30 +- doc/src/pair_body_rounded_polygon.rst | 61 +- doc/src/pair_body_rounded_polyhedron.rst | 55 +- doc/src/pair_fep_soft.rst | 224 +++--- doc/src/pair_nm.rst | 43 +- doc/src/pair_srp.rst | 34 +- doc/src/pair_sw.rst | 52 +- doc/src/pair_tersoff.rst | 65 +- doc/src/pair_tersoff_mod.rst | 83 ++- doc/src/pair_tersoff_zbl.rst | 86 ++- doc/src/pair_ufm.rst | 24 +- doc/src/pair_vashishta.rst | 62 +- doc/src/pair_yukawa.rst | 8 +- doc/src/pair_yukawa_colloid.rst | 26 +- doc/src/pair_zbl.rst | 35 +- doc/src/set.rst | 2 +- ....g++.1 => log.4Feb20.peptide-plumed.g++.1} | 34 +- ....g++.4 => log.4Feb20.peptide-plumed.g++.4} | 34 +- examples/USER/plumed/reference/p.log | 33 +- lib/gpu/lal_lj_tip4p_long.cpp | 25 +- lib/gpu/lal_lj_tip4p_long.cu | 326 +++++++- lib/plumed/Install.py | 4 +- lib/qmmm/Makefile.gfortran | 14 +- lib/qmmm/Makefile.ifort | 24 +- lib/qmmm/README | 13 +- src/GPU/pair_born_coul_long_gpu.cpp | 4 + src/GPU/pair_buck_coul_long_gpu.cpp | 4 + src/GPU/pair_lj_class2_coul_long_gpu.cpp | 4 + src/KOKKOS/Install.sh | 2 + .../compute_orientorder_atom_kokkos.cpp | 698 ++++++++++++++++++ src/KOKKOS/compute_orientorder_atom_kokkos.h | 150 ++++ src/KSPACE/pair_born_coul_long.cpp | 1 + src/KSPACE/pair_buck_long_coul_long.cpp | 1 + src/KSPACE/pair_coul_long.cpp | 1 + src/KSPACE/pair_lj_charmm_coul_long.cpp | 1 + src/KSPACE/pair_lj_charmmfsw_coul_long.cpp | 1 + src/KSPACE/pair_lj_cut_coul_long.cpp | 1 + src/KSPACE/pair_lj_long_coul_long.cpp | 1 + src/USER-PLUMED/fix_plumed.cpp | 5 +- src/compute_orientorder_atom.cpp | 2 + src/compute_orientorder_atom.h | 8 +- src/lmptype.h | 7 - src/modify.cpp | 14 + src/pair_coul_streitz.h | 1 - src/pair_lj96_cut.cpp | 1 + src/pair_mie_cut.cpp | 1 + src/reader_native.cpp | 10 +- src/set.cpp | 9 +- src/suffix.h | 19 +- src/version.h | 2 +- 322 files changed, 3244 insertions(+), 2678 deletions(-) delete mode 100644 doc/src/Eqs/centro_symmetry.jpg delete mode 100644 doc/src/Eqs/centro_symmetry.tex delete mode 100644 doc/src/Eqs/cna_cutoff1.jpg delete mode 100644 doc/src/Eqs/cna_cutoff1.tex delete mode 100644 doc/src/Eqs/cna_cutoff2.jpg delete mode 100644 doc/src/Eqs/cna_cutoff2.tex delete mode 100644 doc/src/Eqs/cnp_cutoff.jpg delete mode 100644 doc/src/Eqs/cnp_cutoff.tex delete mode 100644 doc/src/Eqs/cnp_cutoff2.jpg delete mode 100644 doc/src/Eqs/cnp_cutoff2.tex delete mode 100644 doc/src/Eqs/cnp_eq.jpg delete mode 100644 doc/src/Eqs/cnp_eq.tex delete mode 100644 doc/src/Eqs/compute_dpd.jpg delete mode 100644 doc/src/Eqs/compute_dpd.tex delete mode 100644 doc/src/Eqs/compute_fep_bar.jpg delete mode 100644 doc/src/Eqs/compute_fep_bar.tex delete mode 100644 doc/src/Eqs/compute_fep_fdti.jpg delete mode 100644 doc/src/Eqs/compute_fep_fdti.tex delete mode 100644 doc/src/Eqs/compute_fep_fep.jpg delete mode 100644 doc/src/Eqs/compute_fep_fep.tex delete mode 100644 doc/src/Eqs/compute_fep_lambda.jpg delete mode 100644 doc/src/Eqs/compute_fep_lambda.tex delete mode 100644 doc/src/Eqs/compute_fep_ti.jpg delete mode 100644 doc/src/Eqs/compute_fep_ti.tex delete mode 100644 doc/src/Eqs/compute_fep_u.jpg delete mode 100644 doc/src/Eqs/compute_fep_u.tex delete mode 100644 doc/src/Eqs/compute_fep_vol.jpg delete mode 100644 doc/src/Eqs/compute_fep_vol.tex delete mode 100644 doc/src/Eqs/compute_gyration.jpg delete mode 100644 doc/src/Eqs/compute_gyration.tex delete mode 100644 doc/src/Eqs/compute_msd_nongauss.jpg delete mode 100644 doc/src/Eqs/compute_msd_nongauss.tex delete mode 100644 doc/src/Eqs/compute_saed1.jpg delete mode 100644 doc/src/Eqs/compute_saed1.tex delete mode 100644 doc/src/Eqs/compute_saed2.jpg delete mode 100644 doc/src/Eqs/compute_saed2.tex delete mode 100644 doc/src/Eqs/compute_saed3.jpg delete mode 100644 doc/src/Eqs/compute_saed3.tex delete mode 100644 doc/src/Eqs/compute_shape_parameters.jpg delete mode 100644 doc/src/Eqs/compute_shape_parameters.tex delete mode 100644 doc/src/Eqs/compute_sna_atom1.jpg delete mode 100644 doc/src/Eqs/compute_sna_atom1.tex delete mode 100644 doc/src/Eqs/compute_sna_atom2.jpg delete mode 100644 doc/src/Eqs/compute_sna_atom2.tex delete mode 100644 doc/src/Eqs/compute_sna_atom3.jpg delete mode 100644 doc/src/Eqs/compute_sna_atom3.tex delete mode 100644 doc/src/Eqs/compute_sna_atom4.jpg delete mode 100644 doc/src/Eqs/compute_sna_atom4.tex delete mode 100644 doc/src/Eqs/compute_sna_atom5.jpg delete mode 100644 doc/src/Eqs/compute_sna_atom5.tex delete mode 100644 doc/src/Eqs/compute_sna_atom6.jpg delete mode 100644 doc/src/Eqs/compute_sna_atom6.tex delete mode 100644 doc/src/Eqs/compute_xrd1.jpg delete mode 100644 doc/src/Eqs/compute_xrd1.tex delete mode 100644 doc/src/Eqs/compute_xrd2.jpg delete mode 100644 doc/src/Eqs/compute_xrd2.tex delete mode 100644 doc/src/Eqs/compute_xrd3.jpg delete mode 100644 doc/src/Eqs/compute_xrd3.tex delete mode 100644 doc/src/Eqs/compute_xrd4.jpg delete mode 100644 doc/src/Eqs/compute_xrd4.tex delete mode 100644 doc/src/Eqs/compute_xrd5.jpg delete mode 100644 doc/src/Eqs/compute_xrd5.tex delete mode 100644 doc/src/Eqs/fix_bond_react.jpg delete mode 100644 doc/src/Eqs/fix_bond_react.tex delete mode 100644 doc/src/Eqs/fix_box_relax1.jpg delete mode 100644 doc/src/Eqs/fix_box_relax1.tex delete mode 100644 doc/src/Eqs/fix_box_relax2.jpg delete mode 100644 doc/src/Eqs/fix_box_relax2.tex delete mode 100644 doc/src/Eqs/fix_controller1.jpg delete mode 100644 doc/src/Eqs/fix_controller1.tex delete mode 100644 doc/src/Eqs/fix_controller2.jpg delete mode 100644 doc/src/Eqs/fix_controller2.tex delete mode 100644 doc/src/Eqs/fix_ehex_eom.jpg delete mode 100644 doc/src/Eqs/fix_ehex_eom.tex delete mode 100644 doc/src/Eqs/fix_ehex_f.jpg delete mode 100644 doc/src/Eqs/fix_ehex_f.tex delete mode 100644 doc/src/Eqs/fix_eos-cv.jpg delete mode 100644 doc/src/Eqs/fix_eos-cv.tex delete mode 100644 doc/src/Eqs/fix_eos_table_rx.jpg delete mode 100644 doc/src/Eqs/fix_eos_table_rx.tex delete mode 100644 doc/src/Eqs/fix_gcmc1.jpg delete mode 100644 doc/src/Eqs/fix_gcmc1.tex delete mode 100644 doc/src/Eqs/fix_gcmc2.jpg delete mode 100644 doc/src/Eqs/fix_gcmc2.tex delete mode 100644 doc/src/Eqs/fix_gcmc3.jpg delete mode 100644 doc/src/Eqs/fix_gcmc3.tex delete mode 100644 doc/src/Eqs/fix_gld1.jpg delete mode 100644 doc/src/Eqs/fix_gld1.tex delete mode 100644 doc/src/Eqs/fix_grem.jpg delete mode 100644 doc/src/Eqs/fix_grem.tex delete mode 100644 doc/src/Eqs/fix_integration_spin_stdecomposition.tex delete mode 100644 doc/src/Eqs/fix_lb_fluid_boltzmann.jpg delete mode 100755 doc/src/Eqs/fix_lb_fluid_boltzmann.tex delete mode 100644 doc/src/Eqs/fix_lb_fluid_fluidforce.jpg delete mode 100755 doc/src/Eqs/fix_lb_fluid_fluidforce.tex delete mode 100644 doc/src/Eqs/fix_lb_fluid_gammadefault.jpg delete mode 100755 doc/src/Eqs/fix_lb_fluid_gammadefault.tex delete mode 100644 doc/src/Eqs/fix_lb_fluid_navierstokes.jpg delete mode 100755 doc/src/Eqs/fix_lb_fluid_navierstokes.tex delete mode 100644 doc/src/Eqs/fix_lb_fluid_properties.jpg delete mode 100755 doc/src/Eqs/fix_lb_fluid_properties.tex delete mode 100644 doc/src/Eqs/fix_lb_fluid_stress.jpg delete mode 100755 doc/src/Eqs/fix_lb_fluid_stress.tex delete mode 100644 doc/src/Eqs/fix_lb_fluid_viscosity.jpg delete mode 100755 doc/src/Eqs/fix_lb_fluid_viscosity.tex delete mode 100644 doc/src/Eqs/fix_mvv_dpd.jpg delete mode 100644 doc/src/Eqs/fix_mvv_dpd.tex delete mode 100644 doc/src/Eqs/fix_nh1.jpg delete mode 100644 doc/src/Eqs/fix_nh1.tex delete mode 100644 doc/src/Eqs/fix_nphug.jpg delete mode 100644 doc/src/Eqs/fix_nphug.tex delete mode 100644 doc/src/Eqs/fix_orient_fcc.jpg delete mode 100644 doc/src/Eqs/fix_orient_fcc.tex delete mode 100644 doc/src/Eqs/fix_pimd.jpg delete mode 100644 doc/src/Eqs/fix_pimd.tex delete mode 100644 doc/src/Eqs/fix_rattle_constraints.jpg delete mode 100644 doc/src/Eqs/fix_rattle_constraints.tex delete mode 100644 doc/src/Eqs/fix_rattle_rij.jpg delete mode 100644 doc/src/Eqs/fix_rattle_rij.tex delete mode 100644 doc/src/Eqs/fix_rhok.jpg delete mode 100644 doc/src/Eqs/fix_rhok.tex delete mode 100644 doc/src/Eqs/fix_rx.jpg delete mode 100644 doc/src/Eqs/fix_rx.tex delete mode 100644 doc/src/Eqs/fix_rx_localTemp.jpg delete mode 100644 doc/src/Eqs/fix_rx_localTemp.tex delete mode 100644 doc/src/Eqs/fix_rx_localTemp2.jpg delete mode 100644 doc/src/Eqs/fix_rx_localTemp2.tex delete mode 100644 doc/src/Eqs/fix_rx_reaction.jpg delete mode 100644 doc/src/Eqs/fix_rx_reaction.tex delete mode 100644 doc/src/Eqs/fix_rx_reactionRate.jpg delete mode 100644 doc/src/Eqs/fix_rx_reactionRate.tex delete mode 100644 doc/src/Eqs/fix_spring_rg.jpg delete mode 100644 doc/src/Eqs/fix_spring_rg.tex delete mode 100644 doc/src/Eqs/fix_ttm.jpg delete mode 100644 doc/src/Eqs/fix_ttm.tex delete mode 100644 doc/src/Eqs/fix_ttm_blast.jpg delete mode 100644 doc/src/Eqs/fix_ttm_blast.tex delete mode 100644 doc/src/Eqs/fix_ttm_blast1.jpg delete mode 100644 doc/src/Eqs/fix_ttm_blast1.tex delete mode 100644 doc/src/Eqs/fix_ttm_ce.jpg delete mode 100644 doc/src/Eqs/fix_ttm_ce.tex delete mode 100644 doc/src/Eqs/fix_ttm_mod.jpg delete mode 100644 doc/src/Eqs/fix_ttm_mod.tex delete mode 100644 doc/src/Eqs/fix_wall_colloid.jpg delete mode 100644 doc/src/Eqs/fix_wall_colloid.tex delete mode 100644 doc/src/Eqs/fix_wall_ees.jpg delete mode 100644 doc/src/Eqs/fix_wall_ees.tex delete mode 100644 doc/src/Eqs/fix_wall_harmonic.jpg delete mode 100644 doc/src/Eqs/fix_wall_harmonic.tex delete mode 100644 doc/src/Eqs/fix_wall_lj1043.jpg delete mode 100644 doc/src/Eqs/fix_wall_lj1043.tex delete mode 100644 doc/src/Eqs/fix_wall_lj93.jpg delete mode 100644 doc/src/Eqs/fix_wall_lj93.tex delete mode 100644 doc/src/Eqs/hexorder.jpg delete mode 100644 doc/src/Eqs/hexorder.tex delete mode 100644 doc/src/Eqs/orientorder.jpg delete mode 100644 doc/src/Eqs/orientorder.tex delete mode 100644 doc/src/Eqs/pair_adp.jpg delete mode 100644 doc/src/Eqs/pair_adp.tex delete mode 100644 doc/src/Eqs/pair_agni.jpg delete mode 100644 doc/src/Eqs/pair_agni.tex delete mode 100644 doc/src/Eqs/pair_airebo.jpg delete mode 100644 doc/src/Eqs/pair_airebo.tex delete mode 100644 doc/src/Eqs/pair_atm.jpg delete mode 100644 doc/src/Eqs/pair_atm.tex delete mode 100644 doc/src/Eqs/pair_beck.jpg delete mode 100644 doc/src/Eqs/pair_beck.tex delete mode 100644 doc/src/Eqs/pair_body_rounded.jpg delete mode 100644 doc/src/Eqs/pair_body_rounded.tex delete mode 100644 doc/src/Eqs/pair_coul_soft.jpg delete mode 100644 doc/src/Eqs/pair_coul_soft.tex delete mode 100644 doc/src/Eqs/pair_lj_soft.jpg delete mode 100644 doc/src/Eqs/pair_lj_soft.tex delete mode 100644 doc/src/Eqs/pair_morse_soft.jpg delete mode 100644 doc/src/Eqs/pair_morse_soft.tex delete mode 100644 doc/src/Eqs/pair_nm.jpg delete mode 100644 doc/src/Eqs/pair_nm.tex delete mode 100644 doc/src/Eqs/pair_srp1.jpg delete mode 100644 doc/src/Eqs/pair_srp1.tex delete mode 100644 doc/src/Eqs/pair_srp2.jpg delete mode 100644 doc/src/Eqs/pair_srp2.tex delete mode 100644 doc/src/Eqs/pair_sw.jpg delete mode 100644 doc/src/Eqs/pair_sw.tex delete mode 100644 doc/src/Eqs/pair_tersoff.jpg delete mode 100644 doc/src/Eqs/pair_tersoff_1.jpg delete mode 100644 doc/src/Eqs/pair_tersoff_1.tex delete mode 100644 doc/src/Eqs/pair_tersoff_2.jpg delete mode 100644 doc/src/Eqs/pair_tersoff_2.tex delete mode 100644 doc/src/Eqs/pair_tersoff_mod.jpg delete mode 100644 doc/src/Eqs/pair_tersoff_mod.tex delete mode 100644 doc/src/Eqs/pair_tersoff_mod_c.jpg delete mode 100644 doc/src/Eqs/pair_tersoff_mod_c.tex delete mode 100644 doc/src/Eqs/pair_tersoff_zbl.jpg delete mode 100644 doc/src/Eqs/pair_tersoff_zbl.tex delete mode 100644 doc/src/Eqs/pair_ufm.jpg delete mode 100644 doc/src/Eqs/pair_ufm.tex delete mode 100644 doc/src/Eqs/pair_vashishta.jpg delete mode 100644 doc/src/Eqs/pair_vashishta.tex delete mode 100644 doc/src/Eqs/pair_yukawa.jpg delete mode 100644 doc/src/Eqs/pair_yukawa.tex delete mode 100644 doc/src/Eqs/pair_yukawa_colloid.jpg delete mode 100644 doc/src/Eqs/pair_yukawa_colloid.tex delete mode 100644 doc/src/Eqs/pair_zbl.jpg delete mode 100644 doc/src/Eqs/pair_zbl.tex delete mode 100644 doc/src/Eqs/pressure.jpg delete mode 100644 doc/src/Eqs/pressure.tex delete mode 100644 doc/src/Eqs/pressure_tensor.jpg delete mode 100644 doc/src/Eqs/pressure_tensor.tex delete mode 100644 doc/src/Eqs/ptm_rmsd.jpg delete mode 100644 doc/src/Eqs/ptm_rmsd.tex rename doc/src/{Eqs => JPG}/fix_integration_spin_stdecomposition.jpg (100%) rename examples/USER/plumed/{log.27Nov18.peptide-plumed.g++.1 => log.4Feb20.peptide-plumed.g++.1} (82%) rename examples/USER/plumed/{log.27Nov18.peptide-plumed.g++.4 => log.4Feb20.peptide-plumed.g++.4} (82%) create mode 100644 src/KOKKOS/compute_orientorder_atom_kokkos.cpp create mode 100644 src/KOKKOS/compute_orientorder_atom_kokkos.h diff --git a/cmake/Modules/Packages/USER-PLUMED.cmake b/cmake/Modules/Packages/USER-PLUMED.cmake index bf5c502d84..e10176f9fd 100644 --- a/cmake/Modules/Packages/USER-PLUMED.cmake +++ b/cmake/Modules/Packages/USER-PLUMED.cmake @@ -49,8 +49,8 @@ if(PKG_USER-PLUMED) message(STATUS "PLUMED download requested - we will build our own") include(ExternalProject) ExternalProject_Add(plumed_build - URL https://github.com/plumed/plumed2/releases/download/v2.5.3/plumed-src-2.5.3.tgz - URL_MD5 de30d6e7c2dcc0973298e24a6da24286 + URL https://github.com/plumed/plumed2/releases/download/v2.6.0/plumed-src-2.6.0.tgz + URL_MD5 204d2edae58d9b10ba3ad460cad64191 BUILD_IN_SOURCE 1 CONFIGURE_COMMAND /configure --prefix= ${CONFIGURE_REQUEST_PIC} diff --git a/doc/Makefile b/doc/Makefile index 82c099ff70..7fba611361 100644 --- a/doc/Makefile +++ b/doc/Makefile @@ -75,8 +75,11 @@ html: $(ANCHORCHECK) @rm -rf html/_sources @rm -rf html/PDF @rm -rf html/USER + @rm -rf html/JPG @cp -r src/PDF html/PDF @cp -r src/USER html/USER + @mkdir -p html/JPG + @cp `grep -A2 '\.\. image::' src/*.rst | grep ':target:' | sed -e 's,.*:target: JPG/,src/JPG/,' | sort | uniq` html/JPG/ @rm -rf html/PDF/.[sg]* @rm -rf html/USER/.[sg]* @rm -rf html/USER/*/.[sg]* diff --git a/doc/lammps.1 b/doc/lammps.1 index 492a600e9d..ee2299f4b5 100644 --- a/doc/lammps.1 +++ b/doc/lammps.1 @@ -1,4 +1,4 @@ -.TH LAMMPS "4 February 2020" "2020-02-04" +.TH LAMMPS "18 February 2020" "2020-02-18" .SH NAME .B LAMMPS \- Molecular Dynamics Simulator. @@ -11,13 +11,18 @@ or mpirun \-np 2 .B lmp - [OPTIONS] ... +\-in [OPTIONS] ... or .B lmp \-r2data file.restart file.data +or + +.B lmp +\-h + .SH DESCRIPTION .B LAMMPS is a classical molecular dynamics code, and an acronym for \fBL\fRarge-scale @@ -249,7 +254,7 @@ the chapter on errors in the manual gives some additional information about error messages, if possible. .SH COPYRIGHT -© 2003--2019 Sandia Corporation +© 2003--2020 Sandia Corporation This package is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License version 2 as diff --git a/doc/src/Build_extras.rst b/doc/src/Build_extras.rst index d2d47f694c..e1d3b52165 100644 --- a/doc/src/Build_extras.rst +++ b/doc/src/Build_extras.rst @@ -880,6 +880,9 @@ USER-PLUMED package Before building LAMMPS with this package, you must first build PLUMED. PLUMED can be built as part of the LAMMPS build or installed separately from LAMMPS using the generic `plumed installation instructions `_. +The USER-PLUMED package has been tested to work with Plumed versions +2.4.x, 2.5.x, and 2.6.x and will error out, when trying to run calculations +with a different version of the Plumed kernel. PLUMED can be linked into MD codes in three different modes: static, @@ -1212,13 +1215,10 @@ USER-QMMM package for a QM/MM simulation. You must also build Quantum ESPRESSO and create a new executable (pwqmmm.x) which links LAMMPS and Quantum ESPRESSO together. These are steps 3 and 4 described in the - lib/qmmm/README file. Unfortunately, the Quantum ESPRESSO developers - have been breaking the interface that the QM/MM code in LAMMPS is using, - so that currently (Summer 2018) using this feature requires either - correcting the library interface feature in recent Quantum ESPRESSO - releases, or using an outdated version of QE. The last version of - Quantum ESPRESSO known to work with this QM/MM interface was version - 5.4.1 from 2016. + lib/qmmm/README file. This requires a compatible Quantum espresso + and LAMMPS version. The current interface and makefiles have + last been verified to work in February 2020 with Quantum Espresso + versions 6.3 to 6.5. **CMake build**\ : diff --git a/doc/src/Build_windows.rst b/doc/src/Build_windows.rst index fd76f3ac80..264e4bf44f 100644 --- a/doc/src/Build_windows.rst +++ b/doc/src/Build_windows.rst @@ -17,9 +17,9 @@ General remarks LAMMPS is developed and tested primarily on Linux machines. The vast majority of HPC clusters and supercomputers today runs on Linux as well. -Thus portability to other platforms is desired, but not always achieved. +While portability to other platforms is desired, it is not always achieved. The LAMMPS developers strongly rely on LAMMPS users giving feedback and -providing assistance in resolving portability issues. This particularly +providing assistance in resolving portability issues. This is particularly true for compiling LAMMPS on Windows, since this platform has significant differences with some low-level functionality. @@ -31,18 +31,20 @@ Running Linux on Windows So before trying to build LAMMPS on Windows, please consider if using the pre-compiled Windows binary packages are sufficient for your needs (as an aside, those packages themselves are build on a Linux machine -using cross-compilers). If it is necessary for your to compile LAMMPS +using cross-compilers). If it is necessary for you to compile LAMMPS on a Windows machine (e.g. because it is your main desktop), please also -consider using a virtual machine software and run a Linux virtual machine, -or - if have a recently updated Windows 10 installation - consider using -the Windows subsystem for Linux, which allows to run a bash shell from -Ubuntu and from there on, you can pretty much use that shell like you -are running on an Ubuntu Linux machine (e.g. installing software via -apt-get). For more details on that, please see :doc:`this tutorial ` +consider using a virtual machine software and compile and run LAMMPS in +a Linux virtual machine, or - if you have a recently updated Windows 10 +installation - consider using the Windows subsystem for Linux. This +optional Windows feature allows you to run the bash shell from Ubuntu +from within Windows and from there on, you can pretty much use that +shell like you are running on an Ubuntu Linux machine (e.g. installing +software via apt-get and more). For more details on that, please +see :doc:`this tutorial ` .. _gnu: -Using GNU GCC ported to Windows +Using a GNU GCC ported to Windows ----------------------------------------- One option for compiling LAMMPS on Windows natively, that has been known @@ -83,13 +85,13 @@ traditional build system, but CMake has also been successfully tested using the mingw32-cmake and mingw64-cmake wrappers that are bundled with the cross-compiler environment on Fedora machines. A CMake preset selecting all packages compatible with this cross-compilation build -is provided. You likely need to disable the GPU package unless you +is provided. You will likely need to disable the GPU package unless you download and install the contents of the pre-compiled `OpenCL ICD loader library `_ into your MinGW64 cross-compiler environment. The cross-compilation currently will only produce non-MPI serial binaries. -Please keep in mind, though, that this only applies to compiling LAMMPS. -Whether the resulting binaries do work correctly is no tested by the +Please keep in mind, though, that this only applies to **compiling** LAMMPS. +Whether the resulting binaries do work correctly is not tested by the LAMMPS developers. We instead rely on the feedback of the users of these pre-compiled LAMMPS packages for Windows. We will try to resolve issues to the best of our abilities if we become aware of them. However diff --git a/doc/src/Eqs/centro_symmetry.jpg b/doc/src/Eqs/centro_symmetry.jpg deleted file mode 100644 index 1e89d11a11bea81ba00ddb2a65d62a3f2e0e2398..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4111 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 Qyr}=6b5W2iQ2+lX08>=9$p8QV diff --git a/doc/src/Eqs/cna_cutoff2.tex b/doc/src/Eqs/cna_cutoff2.tex deleted file mode 100644 index fcec31fd24..0000000000 --- a/doc/src/Eqs/cna_cutoff2.tex +++ /dev/null @@ -1,12 +0,0 @@ -\documentclass[12pt,article]{article} - -\usepackage{indentfirst} -\usepackage{amsmath} - -\begin{document} - -$$ - Rc + Rs > 2*{\rm cutoff} -$$ - -\end{document} diff --git a/doc/src/Eqs/cnp_cutoff.jpg b/doc/src/Eqs/cnp_cutoff.jpg deleted file mode 100644 index fae5c6b636c0f818f8677fd7fce4f402cb03a95d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13431 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 Qyr}=6b5W2iQ2+lX08>=9$p8QV diff --git a/doc/src/Eqs/cnp_cutoff2.tex b/doc/src/Eqs/cnp_cutoff2.tex deleted file mode 100644 index fcec31fd24..0000000000 --- a/doc/src/Eqs/cnp_cutoff2.tex +++ /dev/null @@ -1,12 +0,0 @@ -\documentclass[12pt,article]{article} - -\usepackage{indentfirst} -\usepackage{amsmath} - -\begin{document} - -$$ - Rc + Rs > 2*{\rm cutoff} -$$ - -\end{document} diff --git a/doc/src/Eqs/cnp_eq.jpg b/doc/src/Eqs/cnp_eq.jpg deleted file mode 100644 index d4213144424331690936b0fd96014ba8ea8eaca0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23959 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 TuTRbW_1poph7hgB`hODucj-gp diff --git a/doc/src/Eqs/cnp_eq.tex b/doc/src/Eqs/cnp_eq.tex deleted file mode 100644 index e5f157e6ba..0000000000 --- a/doc/src/Eqs/cnp_eq.tex +++ /dev/null @@ -1,9 +0,0 @@ -\documentclass[12pt]{article} - -\begin{document} - -$$ - Q_{i} = \frac{1}{n_i}\sum_{j = 1}^{n_i} | \sum_{k = 1}^{n_{ij}} \vec{R}_{ik} + \vec{R}_{jk} |^2 -$$ - -\end{document} diff --git a/doc/src/Eqs/compute_dpd.jpg b/doc/src/Eqs/compute_dpd.jpg deleted file mode 100644 index 549f259c6cbbb89c8c6a8218b5b43af2a688ce3d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21381 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 J7SI3R1OQR31p)v7 diff --git a/doc/src/Eqs/compute_dpd.tex b/doc/src/Eqs/compute_dpd.tex deleted file mode 100644 index e46b0b4dd6..0000000000 --- a/doc/src/Eqs/compute_dpd.tex +++ /dev/null @@ -1,13 +0,0 @@ -\documentstyle[12pt]{article} -\pagestyle{empty} -\begin{document} - -\begin{eqnarray*} - U^{cond} = \displaystyle\sum_{i=1}^{N} u_{i}^{cond} \\ - U^{mech} = \displaystyle\sum_{i=1}^{N} u_{i}^{mech} \\ - U^{chem} = \displaystyle\sum_{i=1}^{N} u_{i}^{chem} \\ - U = \displaystyle\sum_{i=1}^{N} (u_{i}^{cond} + u_{i}^{mech} + u_{i}^{chem}) \\ - \theta_{avg} = (\frac{1}{N}\displaystyle\sum_{i=1}^{N} \frac{1}{\theta_{i}})^{-1} \\ -\end{eqnarray*} - -\end{document} diff --git a/doc/src/Eqs/compute_fep_bar.jpg b/doc/src/Eqs/compute_fep_bar.jpg deleted file mode 100644 index 772ec9c0450a35c52b5b927cbf20e7d77e373c93..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18106 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 A;Q#;t diff --git a/doc/src/Eqs/compute_fep_bar.tex b/doc/src/Eqs/compute_fep_bar.tex deleted file mode 100644 index a40aa1c297..0000000000 --- a/doc/src/Eqs/compute_fep_bar.tex +++ /dev/null @@ -1,7 +0,0 @@ -\documentstyle[12pt]{article} - -\begin{document} - -\[ \left< \frac{1}{1 + \exp\left[\left(U_1 - U_0 - \Delta_0^1A \right) /kT \right]} \right>_0 = \left< \frac{1}{1 + \exp\left[\left(U_0 - U_1 + \Delta_0^1A \right) /kT \right]} \right>_1 \] - -\end{document} diff --git a/doc/src/Eqs/compute_fep_fdti.jpg b/doc/src/Eqs/compute_fep_fdti.jpg deleted file mode 100644 index ae8de241cc132dfbe0d932baf99a9e066ab178e1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15544 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 Mx)?Nw#Q$#s0RPi0IsgCw diff --git a/doc/src/Eqs/compute_fep_fdti.tex b/doc/src/Eqs/compute_fep_fdti.tex deleted file mode 100644 index fdea6faa3d..0000000000 --- a/doc/src/Eqs/compute_fep_fdti.tex +++ /dev/null @@ -1,10 +0,0 @@ -\documentstyle[12pt]{article} - -\begin{document} - -\[ \Delta_0^1 A = \int_{\lambda=0}^{\lambda=1} \left( \frac{\partial - A(\lambda)}{\partial\lambda} \right)_\lambda \mathrm{d}\lambda -\approx \sum_{i=0}^{n-1} w_i \frac{A(\lambda_{i} + \delta) - - A(\lambda_i)}{\delta} \] - -\end{document} diff --git a/doc/src/Eqs/compute_fep_fep.jpg b/doc/src/Eqs/compute_fep_fep.jpg deleted file mode 100644 index d84a76b0ddfcca48421c272f9f7fe64a6ece5cd6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18055 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
RV5KF^a>KW}~);Q0PO!^2tsbpA73{P`#PKf}TD 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 J1^oYS0s!>$BGCW< diff --git a/doc/src/Eqs/compute_fep_fep.tex b/doc/src/Eqs/compute_fep_fep.tex deleted file mode 100644 index 718aad3c40..0000000000 --- a/doc/src/Eqs/compute_fep_fep.tex +++ /dev/null @@ -1,9 +0,0 @@ -\documentstyle[12pt]{article} - -\begin{document} - -\[ \Delta_0^1 A = \sum_{i=0}^{n-1} \Delta_{\lambda_i}^{\lambda_{i+1}} A = -- kT \sum_{i=0}^{n-1} \ln \left< \exp \left( - \frac{U(\lambda_{i+1}) - - U(\lambda_i)}{kT} \right) \right>_{\lambda_i} \] - -\end{document} diff --git a/doc/src/Eqs/compute_fep_lambda.jpg b/doc/src/Eqs/compute_fep_lambda.jpg deleted file mode 100644 index 5ef9e8b9f2fbce24c23d751f23986e87f2a16445..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10511 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 I4d(wh0i*$1IsgCw diff --git a/doc/src/Eqs/compute_fep_ti.tex b/doc/src/Eqs/compute_fep_ti.tex deleted file mode 100644 index 6222dbd503..0000000000 --- a/doc/src/Eqs/compute_fep_ti.tex +++ /dev/null @@ -1,10 +0,0 @@ -\documentstyle[12pt]{article} - -\begin{document} - -\[ \Delta_0^1 A = \int_{\lambda=0}^{\lambda=1} \left< \frac{\partial - U(\lambda)}{\partial\lambda} \right>_\lambda \mathrm{d}\lambda -\approx \sum_{i=0}^{n-1} w_i \left< \frac{U(\lambda_{i} + \delta) - - U(\lambda_i)}{\delta} \right>_{\lambda_i} \] - -\end{document} diff --git a/doc/src/Eqs/compute_fep_u.jpg b/doc/src/Eqs/compute_fep_u.jpg deleted file mode 100644 index 62df5dd0c03a6d20cca157cbc46053adb77ae90a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9337 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 diff --git a/doc/src/Eqs/compute_fep_u.tex b/doc/src/Eqs/compute_fep_u.tex deleted file mode 100644 index e847a9ac44..0000000000 --- a/doc/src/Eqs/compute_fep_u.tex +++ /dev/null @@ -1,7 +0,0 @@ -\documentstyle[12pt]{article} - -\begin{document} - -\[ U(\lambda) = U_{\mathrm{bg}} + U_1(\lambda) + U_0(\lambda) \] - -\end{document} diff --git a/doc/src/Eqs/compute_fep_vol.jpg b/doc/src/Eqs/compute_fep_vol.jpg deleted file mode 100644 index a66facad39308af7e4193c82b3012ead5f51a225..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15209 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 JG+h7xCIF}CWMKdR diff --git a/doc/src/Eqs/compute_fep_vol.tex b/doc/src/Eqs/compute_fep_vol.tex deleted file mode 100644 index 0301e39788..0000000000 --- a/doc/src/Eqs/compute_fep_vol.tex +++ /dev/null @@ -1,9 +0,0 @@ -\documentstyle[12pt]{article} - -\begin{document} - -\[ \Delta_0^1 A = - kT \sum_{i=0}^{n-1} \ln \frac{\left< V \exp \left( - - \frac{U(\lambda_{i+1}) - U(\lambda_i)}{kT} \right) -\right>_{\lambda_i}}{\left< V \right>_{\lambda_i}} \] - -\end{document} diff --git a/doc/src/Eqs/compute_gyration.jpg b/doc/src/Eqs/compute_gyration.jpg deleted file mode 100644 index 228544443459e2c13b9ba1e860d8abd5e02f9ffb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3658 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 mO/(5<(r(t)-r(0))^2>^2) - 1 -$$ - -\end{document} diff --git a/doc/src/Eqs/compute_saed1.jpg b/doc/src/Eqs/compute_saed1.jpg deleted file mode 100644 index 6bad3a6104904ff97ac5982d63f88cf68bb8b50f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1471 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 XG^Ozd1B29hNInE-MskU%|8D{S85C)u diff --git a/doc/src/Eqs/compute_saed3.tex b/doc/src/Eqs/compute_saed3.tex deleted file mode 100644 index 5988a620c7..0000000000 --- a/doc/src/Eqs/compute_saed3.tex +++ /dev/null @@ -1,10 +0,0 @@ -\documentstyle[12pt]{article} - -\begin{document} - -$$ - f_j\left ( \frac{sin(\theta)}{\lambda} \right )=\sum_{i}^{5} -a_i exp\left ( -b_i \frac{sin^{2}(\theta)}{\lambda^{2}} \right ) -$$ -\end{document} - diff --git a/doc/src/Eqs/compute_shape_parameters.jpg b/doc/src/Eqs/compute_shape_parameters.jpg deleted file mode 100644 index 9e2374561b40690173497a2e1c9a28c869b0c819..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7007 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 rt@pmkOd$@waOXj3ANA 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�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 diff --git a/doc/src/Eqs/compute_sna_atom2.tex b/doc/src/Eqs/compute_sna_atom2.tex deleted file mode 100644 index 98d8f2efa6..0000000000 --- a/doc/src/Eqs/compute_sna_atom2.tex +++ /dev/null @@ -1,11 +0,0 @@ -\documentclass[24pt]{article} - -\pagestyle{empty} - -\begin{document} - -\begin{eqnarray*} -u^j_{m,m'} = U^j_{m,m'}(0,0,0) + \sum_{r_{ii'} < R_{ii'}}{f_c(r_{ii'}) w_{i'} U^j_{m,m'}(\theta_0,\theta,\phi)} -\end{eqnarray*} - -\end{document} diff --git a/doc/src/Eqs/compute_sna_atom3.jpg b/doc/src/Eqs/compute_sna_atom3.jpg deleted file mode 100644 index 41d6774e9c8ec8309c3be5ce151a8095a633098c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19644 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 ZsXBT3-KW_7=CAJi!VakzX*B=;n*iZS#}xno diff --git a/doc/src/Eqs/compute_sna_atom3.tex b/doc/src/Eqs/compute_sna_atom3.tex deleted file mode 100644 index 5e3212f7bd..0000000000 --- a/doc/src/Eqs/compute_sna_atom3.tex +++ /dev/null @@ -1,16 +0,0 @@ -\documentclass[24pt]{article} - -\pagestyle{empty} - -\begin{document} - -\newcommand{\hcoeff}[9]{H\!\!{\tiny\begin{array}{l}#1 #2 #3 \\ #4 #5 #6 \\ #7 #8 #9 \end{array}}} - -\begin{equation} -B_{j_1,j_2,j} = \\ -\sum_{m_1,m'_1=-j_1}^{j_1}\sum_{m_2,m'_2=-j_2}^{j_2}\sum_{m,m'=-j}^{j} (u^j_{m,m'})^* -\hcoeff{j}{m}{m'}{j_1}{\!m_1}{\!m'_1}{j_2}{m_2}{m'_2} -u^{j_1}_{m_1,m'_1} u^{j_2}_{m_2,m'_2} -\end{equation} - -\end{document} diff --git a/doc/src/Eqs/compute_sna_atom4.jpg b/doc/src/Eqs/compute_sna_atom4.jpg deleted file mode 100644 index 5d53943bf40b052fe5dc5193db04270c7069a1ec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35933 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

    ^TKj};VA(R-rR2bxbe)(@FQA3&t=Yi z8q_DZ%+St-};|H;E&CA!%RE#AGsgZ5A534_}HHHM;EvCTX)ahyDxm59kF#j z|Epd5+rFMKwPg;!^5ync|5<(J+%q1&3OW3EgSQ};#4MwyvkyPcIL+IC;E|%LR>Yp& zhKD^b9Dn*_SLug}6-5Hug&hZzZCh49d}X<0^+RoU;ihAW zuY=~=xN#dCc%&%xL*_VZG=JZrkY^P&uBJhY=Fj8rTjt8z2ire*W!UNcnElcFn0VCPqf_em`|MeM zSUb)>YA638zNw^h-_eJ^^LZn@D-EBYU*#`*Sag%*(+_8i*649tPLpo`u&#~CvQ670 zX#I?xk77Q&s$5naC6e*TxTa3?kxb@;m!U^5A4(|LaQOYCptjf}Uv~8K_WV0{?)9Tj z{+UNa|84AC-MDztwS0{yEsC8hz4cF~MhkWxdiq1hWTn&EoY<_0s2OYGltMv^PGnO+Iuhy+Qhr*gvc5*B`Fyess3{_$~WGGwRg;_Y0x=2(Ry2*ncGT zj`<-Q+paSOJL*>@8r#Hkf7s@Kc*dH`oUIi(vN3kT#z#_13x7mK%rVu;G5FDyEw{Ay z*O8}BQ@uaP2&^@v6}u-x!_^pKL!r(0}v(L;bgu4{@tM{C+UM#l5*kdtHs=kM58DksE8X zkJu^gzFJfJG5MI){{EWkN7jGSk6LZpx;8d8yH4%8DfiK~T*tR2x5KtxDp_4Et9Izv zsrv^HJ0=?4nXj?v*``13ItwR14N(s&jT6^9d}VFaG}+MAn%7om-RSz78no4GYI@L` zr<%K8z6cFmJ0tDplEc8v80t?g6a-~7+;NNxSc)BYdU?f;nl zZPG`syNB1+UEaUNyt{OM?|%8T%j@&fcGmM%lpo(`F+X7P!|ja^GVki_ldaL*@In3X zZI)-}4}CcG>7?2Y&st}888JS?!~7E6luAG>nw(e-W9uW4OBl=yTVw|2`%i5^!Ov&fczd}4iqk5*kg z91=KBH(ZTl(mI<3F1p<&U}lGw{dXd}UttYk!;G*Oz-N*SdUMw|?opzw>UN zdV1u+h8@?PUza3zE_Yh$H9vIS({RSl(1NcUwq~SR*4)`(xsGqCjBBV3UwZq|2T$$1 z&NZ*~>h&m1EZi|ieA_gstf^iXmhs#D)-na9l1v{38ANt4ppW&dTee(W>`pxT)#NSkZxct!HqRZd1e=J|{WB#Fex<5=G z{b%Tjm;R^mL(@k4u{UqD???YO8^z@{K|dxwHvf_T@N6D$dHB5VPCtsxTT7N**~&dP zRaZE?emmcqr|0cY|7X~2oVE31M5%<6=+vw&#!`k0otfJXu9Dm)RkGPj@N{PC42h?P zOM6<1W+qlgmeJ9PQM`8N+gE`I!< zp~H^9#_rmmz(o~q_MK6ue$1Wp`q<=~S)uci<0}4y#oCY|LW8j^n8_ zTa0SXYn-r{EP3$qYMq)*YuF_d=OrJLQS3PK;6vf+U}4`M6W!a5Yf4rZg`SafKfFVx zE_?dZJ(d$5ZQ_=f`OlE*-(RQsWAA?kmO~%!x74TZ=U1Ekq0qgfPAy}bo%M&c?q2Ed8yq^{y1MXQ;KOI}vl5K{u*w|nd6g!4SEgy5waqc-XD=TZMCkJ>AG#T8wWCHa zc5aGfn*ZU7RUxsF1!0cC;z#yad+p^CeLCT3#Ep;NnJbiMeXP@Gotb7aXSe>tGk((T z1u@||aD| R_{ii'} -\end{eqnarray*} - - -\end{document} diff --git a/doc/src/Eqs/compute_sna_atom5.jpg b/doc/src/Eqs/compute_sna_atom5.jpg deleted file mode 100644 index 732731fe13becfbb3e5c6c003b87a90f3dceb287..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14734 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

    l}4UeWq+`sE} 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 diff --git a/doc/src/Eqs/compute_sna_atom5.tex b/doc/src/Eqs/compute_sna_atom5.tex deleted file mode 100644 index 72f5a0fe7c..0000000000 --- a/doc/src/Eqs/compute_sna_atom5.tex +++ /dev/null @@ -1,12 +0,0 @@ -\documentclass[24pt]{article} - -\pagestyle{empty} - -\begin{document} - - -\begin{equation} -- \sum_{i' \in I} \frac{\partial {B^{i'}_{j_1,j_2,j} }}{\partial {\bf r}_i} -\end{equation} - -\end{document} diff --git a/doc/src/Eqs/compute_sna_atom6.jpg b/doc/src/Eqs/compute_sna_atom6.jpg deleted file mode 100644 index 963dd814167b7e3fbec54165368c35fcd9e28635..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17274 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 diff --git a/doc/src/Eqs/compute_xrd2.tex b/doc/src/Eqs/compute_xrd2.tex deleted file mode 100644 index d005602339..0000000000 --- a/doc/src/Eqs/compute_xrd2.tex +++ /dev/null @@ -1,9 +0,0 @@ -\documentstyle[12pt]{article} - -\begin{document} - -$$ - F(\mathbf{k})=\sum_{j=1}^{N}f_j(\theta)exp(2\pi i \mathbf{k}\cdot \mathbf{r}_j) -$$ -\end{document} - diff --git a/doc/src/Eqs/compute_xrd3.jpg b/doc/src/Eqs/compute_xrd3.jpg deleted file mode 100644 index 19f7aa99b5f79024726f836e35358a98666436e4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4745 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 iO%MB*QlUkQuT1jwxCGA2L=aQ|-vj`j(|0QX diff --git a/doc/src/Eqs/compute_xrd5.tex b/doc/src/Eqs/compute_xrd5.tex deleted file mode 100644 index 2d97a3288b..0000000000 --- a/doc/src/Eqs/compute_xrd5.tex +++ /dev/null @@ -1,10 +0,0 @@ -\documentstyle[12pt]{article} - -\begin{document} - -$$ - f_j\left ( \frac{sin(\theta)}{\lambda} \right )=\sum_{i}^{4} -a_i exp\left ( -b_i \frac{sin^{2}(\theta)}{\lambda^{2}} \right )+c -$$ -\end{document} - diff --git a/doc/src/Eqs/fix_bond_react.jpg b/doc/src/Eqs/fix_bond_react.jpg deleted file mode 100644 index d63b983230c0c26a7bf9c50b38593bdd65196a35..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2427 zcmex=pQIfdgcOJ;VLuhaZ0UQDZ01-+uVvC#9lGbFQ8}p`kv%^sQ98*VX5*PR+_@T_hBl z_WFFL=5e;x?Mj9p)0W#5UOJu`{&?l>?Rl1~v(EcJy}c^&EAutq<4>2W&f08{aBKde z@)&*LpcThHtXc45zVGbp@b$|~dn?Y(y5qK1JmLsz27jaE6p53fthxn%e|hOPZ#P}} z-8go$xPOw>nFn`fEIFgO?wtN#adx{0Z>Pv7T#T3OOW}GX9Fn4-c>9v=CYJ?%=jMuU zKKP64k#)Rx`@&}X9+$;;YaV<0T$`F$=BRBrb>}(rwO@9pSRN3wl5r}qYPn-|V4C3~ zp3oV_Stk#C`kdBc7&)muyCh|^Q`NTRQJTMI9=d*o;ds~2Q`1vI`Jc|Ro3(Re|K$^R zEcBRfh5Hn<{vrX=+ z|D*nu)$S|)&DH&PRkP@#p12)@BDjQ-z0=3Z7x3R z+3v%?@29guP)GQJlKHNSvJ0zp-)IC+=r-09ea2?(Cfd33{_Y3XM)O@$%McLNg<_ia694l>8zh9q!>)M`&Os#MBZ_A!%r6-~x@L|8# zTDf;WUeDg1m3i{?mY-9EW21Sw&pw^bBGC7>bN2~}Z?7kFC!XBD$8Cj9fk>}Nu2aMp zv5dpFT{b)ox=k-vTo%bY`{KC6Wfbk7NA*`IgfT-O^t6AwSXO}wqIYc~IWd}Wqj zv*%T3xo`J3?yB(Tz4rO>U(KjY^#^y-acKr4{6(p*v(xgVtE)fEFT9W)AkOS* zX?6S2cBjDp)z@d0t~&VbKf@WDZ*MtY>E8G6M*L@(Gk3|$-*W#M4!=EqE+FsEw5wJ3->C2It#cOe zu=lzDc>Zgy)O|0tF8s~-#&%4e2@zTckYneTh&mO*e#j|_Ku?_p3C(JZkdUx_Brke`qo>twFvGH{? zJM*Q(S$MPB>_tjz_cg9!2{6iEk;e4OGEG?`{p$3q3#*uTyccU2HcKR(Dx31!Nnb!j zVehGspXKd479BfsQTJe=S@qYhC0CT2mTaC^Ho5NCiz?ZD9{W|@U%r2oGoOK9cHZB# zrfGNIxb2qS{4;TH#p8KfPaN!hzT?B}xt5QYt~z|abdulatCrDAqpS25EUSB9#2$Lx z_kKiD@7}DB19j)f0}LQ>k^(sEisayI=Nm>U#>W6f_ZQb!p-usoXD`VcoyGy6AFaFA2y0>!9r->6%iWgQW znyh)xekNr1w#^}XcHT_M&StRUY+$~ubLdLKw27CuFR0*gYkcXwZF@~C+DJ6|VfL)S08dH+67?N?%6)t#%vy0wI*I_w00 zMxctn)};OZy_V6w=XlT)QHtFFzOd+OQqEQ$5kB(zzk9Z!6ex8dlu;}uWmcl;`}nQ-(L zN6PHJJ%#EO3*MXdeK>x9|EIT?^uDRTm5-}@w~sA9xgs>wEbfK$-Zo(6FVL( zeR+A^s@{g(-vmx=dUAC2FQaDWtdAG}T-Okt@l@>DE;oMOtr07&dfu46yFE|XWmn{7 zwHlLx6qQCMjUW+~pr#8Kla5_&>Ug+#McdM_saztfj*DiMti0Bx^)>5ymxcC0nL<~2 zk6)#)kFWnx(`4(Fu<84ZzY;Z!P73Fm51C$O^kv_jl9=$cE&YwTyNHz@V>oucktPJv-kDhZo69S^6Q%D&h@X%IzMgR z_QGc3<^^W{_0umheke$a{kc;!@0(@5n0OxxU+OdeJD0?dGrx}QS}vddeEolhzJFIY zS=74MCOdAAx*Vmkt13KJ<*{$)$0c{e4r%YWtC;=$X7*(5EaB~ryaFl()vi`ib5aGH zR|QSt`m)+x?DfCO=>ZD2f}_JE4|63)Cr8?_wpM(2m3nY4TTJN2r_GW=PSPS=T$)Zt zyHwoc*4tWdc|L3FjMTQczt(C08D4B&lp*!*OxnD4Umh>Na^7%9?}E?^H+y$ob2HX- tJ-X6+`GJ!abG%ia#HzTkOh5E>Y4(oj@2+LjXPGT;@-+rETju}22>@RNoE!iE diff --git a/doc/src/Eqs/fix_bond_react.tex b/doc/src/Eqs/fix_bond_react.tex deleted file mode 100644 index 9400656038..0000000000 --- a/doc/src/Eqs/fix_bond_react.tex +++ /dev/null @@ -1,9 +0,0 @@ -\documentstyle[12pt]{article} -\pagestyle{empty} -\begin{document} - -\begin{eqnarray*} - k = AT^{n}e^{\frac{-E_{a}}{k_{B}T}} -\end{eqnarray*} - -\end{document} diff --git a/doc/src/Eqs/fix_box_relax1.jpg b/doc/src/Eqs/fix_box_relax1.jpg deleted file mode 100644 index d425526046e14d2757882564421d996aa944efb0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3375 zcmex=$<%PwSRFvdYWaQ-K{vTlA=3wwZEf2c<1Q((>iB) znCD01ZR$S%88%(|ckkMJ_dESb>ohu6$!uS-r@s4>P8qW%U-avrmOLeqY<7{Z?QHE9 z23rJ5_|D&1veRAj_{V)Z?>r~3og|XneQl1jmuE`j+}3l&H!j3nxWIRAPtEoHtdsi< zd;0#E>W8MxyLfliuTTAF`xy^^<-XIg=cjb;Vz21@wj*bIa*ngOdCESIld_rW`?xmf z@t(;7MnAM<+7(^)e%w}3C@i+~OksAzkD3=vHZ_Mfeav%jd-CJ@6NBllE0Sk^ea6@O z@g&b0tCAwO5AxE-d$%4C-1zv^)PNm%j$&apQ+G{GohZI+`c>B! zykY+_M|R-??nOWR1AhExFgW#O$i@T*M3brzUuRiA3ht>`0^rpJ|4Q0vo3of{~M$B#@jded*AwhnsZmr{P_Cx zO-=`wx(VAhv*=BIoABF@H$$bt%x|B=)Z-Fo!=6ZVY?`X|MB7pSM((XiVH0|p_>&J5 z$kip*1fM;wue`l+GvnGKjn=N;6~#FRJTfQl?~bXCxnH<#emYa?L_xQrp1XF|t@HKk zto>KVF8ws?gH^cU0-+dZM=J&)uk{bD`rFPXzItXDG0!urbw|t9XK8YIHznK-x82?= z_-5&jaP1?X{*=zX(O9@lG1@4%Zj|`d+IGN zI`+_5GV4ZG>5i}F7g{%!edCWi%wIhF`4we{{Q9P=7F+%^?3<&{I&VMA)Yk2;Q`d9P zV!kO^IEigf&L79txwq^dthQM%cYm@x;J+M8s_TSI2{|p61`5!v>f7sbS zBfO?J;lQVW7>C;%jT-EYm!?LX-T!6&%UU=2?ZK^uJJs+1ww^A3bN%6h?bT8I0nuM~ zN!-z}vhD7WU2Z;JEf@UdEKYOTfQXs6#n=q`8s^n z zIgxSWA=w3T&$ci;XIxafjqS|!@XymK?tAal%j;Bn8;Ayw(l2iRTaR z|F|cQYqE28@~h)f2J9a;F5La++_p{YdS6R_X?!ileY1ai?@8Cc>!Wsl<$t)`gx~(o z7CsxldcA)>A9o3|J9cD#tLFUApqc*e$BE1QpLm;Ba)hP0M4S&c?fDf@vRuQ)ST$I? zcgEkl8@5FpfA#iXywMh(gEq|*%o!!#9S_u*ukrrj#DB7)`PYy1%b&i%q2!v}m$9Vy zrp%h^#a0#Bjk@-Qzo&|?*0Z>?ocl>&jd92mgP`jDv!rLQdnSKi?}y!=lk1+=y86GU zndEyhj#p=sm8bl1!*|tp%3^#ozIpzfS`cY}>AGRM_=Po3bt;NKS#B1So0I!}>Nh#% zV)y5g6TLs`ync~dao+#qpK{~A_2FXAXTEnh=9V3nQqX3y_4(uX(}dUW5G^_SIN`X} z}tgY!>2wjQ^7+jWy$m)*%K zWa(z@zD@=sv&o;nTQMIy5%K=wv6qkjTF>~j#$0vfiOrGGGjq1s@4mj2cUGo<-!rGE z_l;}5sm58@IlWhY5~kN@KjpxK4Hvm8ZscDxy_@CE5O2`&Gh5=qHG{dr_thI0tmk9d z(%|hW_xQ=`_}!N4U-M6{KmBwYYdL-yqmmzU;43!cO@A2uI0PDPt&^LcIZr})F1uAXJSj=?3Xx{qHDo6^KC#^ zB!}GLooCe@19!-?J{116Zh@;g-{Vb2`xUz^qW+|)xE=0Z@aS68ede9#%G%E!`E%-$ z!H+p{QuD8D_;IV^)xx9qdLyKTt^0Sr&0x+}`Q>kSU*T|)g|CiY*{` zwF)hPPqO}970Du0=2Yv#wX-Z*;o2 z$<)XHDkbiHGyhub@Hcchf8DllL4Qr(M_$(zQaj@8JNq+={l5!r-1A=iNm$+Fo05iK z)7lwlKbrdJREqSrHnGSGLxb0E_cm`o$hx+&;1koWhg}+qDF(+*Eb3jjCRvI(>VgRa z^9}v2!6!=2FZ(I|`TmKL{|ueCw6SYNuylcV3|@O|$s+ci>o z=k_oy+tqh_kM@E;o9>z2nUuOZN%vOm+bmC=8F!xhKECl?w(-pc1~~>UY2~QxlIOon z+`;wnfL=tM)ydWc(xPWMQ!oE^Kf3(bNwd0y`7^`hHoE1@$+z~r%bv5S=PX0cx2uKQ zKL6kizxJPD3;Ry4AFGQ#@Nw$&O^XvgcJKS7=ax5ia2DDQv@{H;+bY;_FnX!&yx;k&pxgiTv-txXH{5kL1mYhEg@~SsFR&V(5 zCnsjpe+H%8+4t6dKdjqzZ*eXANp5T9O4+^l*iY}?o?so#uv)13;SW!Xr;#5;?+YGr zRjjiz;3%!Q<7tq6dt>_>!8ezr*Ei?QadB~ptC_1cQ>S!J=?}@Ir7PlDKJ3Ze0P^W*-+ z_44o7*lf0HU*+8uc;%RDSFVQ&Z|m3O@?xa|h22}^+5Kb>AKqr88NxwUmq1_I_cas!=~72 z;`!S&w%z?EcW~R>-L;A%Z$uZT|j=xpJ ze#Bea&3~{-BG0#bqv~aO)or@>CwN((KCF}+b$M+W+o6NE99eQ?n?k#V-E2zLuJuKx k*`BMJbjq=&zqotO^9;sKo>mNuZx|R@U%OBUT>sw$0Mm|JC;$Ke diff --git a/doc/src/Eqs/fix_box_relax1.tex b/doc/src/Eqs/fix_box_relax1.tex deleted file mode 100644 index a332360666..0000000000 --- a/doc/src/Eqs/fix_box_relax1.tex +++ /dev/null @@ -1,9 +0,0 @@ -\documentclass[12pt]{article} - -\begin{document} - -$$ -E = U + P_t \left(V-V_0 \right) + E_{strain} -$$ - -\end{document} diff --git a/doc/src/Eqs/fix_box_relax2.jpg b/doc/src/Eqs/fix_box_relax2.jpg deleted file mode 100644 index 8fac42e0fa8305c2deb45e5043f865c3a9e35134..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3029 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 diff --git a/doc/src/Eqs/fix_box_relax2.tex b/doc/src/Eqs/fix_box_relax2.tex deleted file mode 100644 index bc9cddef4e..0000000000 --- a/doc/src/Eqs/fix_box_relax2.tex +++ /dev/null @@ -1,9 +0,0 @@ -\documentclass[12pt]{article} - -\begin{document} - -$$ -\mathbf P = P_t \mathbf I + {\mathbf S_t} \left( \mathbf h_0^{-1} \right)^t \mathbf h_{0d} -$$ - -\end{document} diff --git a/doc/src/Eqs/fix_controller1.jpg b/doc/src/Eqs/fix_controller1.jpg deleted file mode 100644 index 25f381543fda256370cc881e6b57e3b2fd38063b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4832 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 diff --git a/doc/src/Eqs/fix_controller1.tex b/doc/src/Eqs/fix_controller1.tex deleted file mode 100644 index 14f98fc303..0000000000 --- a/doc/src/Eqs/fix_controller1.tex +++ /dev/null @@ -1,12 +0,0 @@ -\documentclass[24pt]{article} - -\pagestyle{empty} -\Huge - -\begin{document} - -\begin{eqnarray*} -\frac{dc}{dt} &=&Ê -\alpha (K_p e + K_i \int_0^t e \, dt + K_d \frac{de}{dt} ) \\ -\end{eqnarray*} - -\end{document} diff --git a/doc/src/Eqs/fix_controller2.jpg b/doc/src/Eqs/fix_controller2.jpg deleted file mode 100644 index 178fd5a67eb618a0929d9b1d52be195221071797..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5571 zcmex=$<%PwSRFvdYWaQ-K{vTlA=3sDP5@%!- zWcYuCL56{mfr%Mp2LlYSurjl;Gcj`fKf>T7z`)4D#K_Fd#KO$X#?Qb2R?WgH$i^q%saVxHC@eg!Y|7MW7cX7D^7#KP1`b9>1_pbEztcJ} zL3i}|&pK(+6D}S&8}_$*`^nU_>n#>`e#iG;zNzfK&D>)0+YE*s+mnkc<|`~dSs0X} zVU}@QbhpT}z69pSvp8c#daYDsE!$71$WI8}r9=QM*?;_I@vNksD%WD_b(W{?G2Lyu z_p_B!>b-x?NxIDOLY6Ksw~J11|2U&yQ)>LAFWqxr&2Wi5SA6IDo-M-fi|;+Rcz@E4 zK~C%prY}Gu-Mqg`R|L)bdh_x6s6BbpGE>U4BaZb>7yiP)`pEmsqvJfi-8^eUHm)~{ z_$QEIb-lc7xBtWkFV<9?Ii{}he7oe7#U;lWE7m7&DtrI9cFD_{W6umFHRZ*uwcQ>+ zmafjek&qKY>uBk3W+snH${2&RBG%{a*10-Q^TCANNiH9r?WjE{$8~C@@pt2#(~mdK z=vugDtIQ|g3DfqkWi2{)?wai)H|zZORtobkILei2{|Y~qTl7v}&FyW(f_eL#uCkwG zRO43ToGZRo(5}|}+nfBVPiCc?4^^E#x%0lC)x-YTlRw8iu{C=lG~>ZWFAIq`ImhFU z@4RT8oB7H7$%eT(8`j+v=h~~2J56tCvG~RZmg{n^oG7qokw5%Lqq1(^Cuz|;hI^x) zO-a8t>$%yKHTUmqxz6&R!JYN_;;%dZam6f`dc~Hyr!C{@pD<&i6E5)`>)x7P+}kUa zeBC=wIqHZ5qvPN%Z7oW(OdSj2X&(=CqS zpSHt7z>%SeL$m9|rBgxT8h$qy>J@V`G+j46x-Pr%({*+x4g~>6Rxj7U(?8|3yB?&U zO;f8WU8I{FEzSL8n)?pZiN_8;Jzw0B!Te+@JNK!(#Z%^)*NZ00Pq276DJSJuEZXke(B4cd<8r&Y_~P4lf1F9}ntkuD`^7XXjbK%ct(G&iACC$m%BhQI-j(`}UjJ zozSgMoTbbDE3Y^z?ttI!EsP3(r#{jVUw3)YiTh=DtJX{lbCg~-!NAUahiQ-W&*Dx7 z{z-mK=Q9+?uX?T$4NY;>V|V7ypJEy=Ze6ZFv00 zeCdou8L8=yA1fv+Wml^g6c}$}7hIXbKk@jEw`=7}-Yb;;vpjAPQ^u)yC}~xo(B4Zv zKNd57wmqI#efQIMAy3sKlQyS+nwa>p=-#xwvt4)Pl)iSqZ*pGUH(7cEr}`@o=94N6 z9+x)8IzF}J>FvsSX|9~OI(6&Xy*G6-1uV~`%qvY#_nFxD?fvuj596Qi%rW@1;>R+z z*`H=Ej)|J5c0##piORHXp7Y9Y-*M#4cAit>w}mroPPVRGF*l!=g-V0R^9>uH$XfOn z%Pz99T(V`t!-of&>_WS=_!Nt-?za4PbLJ(ko0*C&@?RvBd)oSM=h;76e_ibLoEv-Q zhyO}FRwQ^-Md0?vIa}^~UzvDlkLv~l6Qk$OYOrl>MSGjO+%3KahPnNdN*{Z(2V10xuaMDJK5Bg7`<2~t&9~TVjQDjX zw!e5bSMVSELB&G(HwVue$JkGaejy(4^zG@SMhoeFyW3mcP9%H&yj*+sKSPS;K5mnG zPo-;{?rf8&45Ox=`J}7IO}8%WyyWwopRqycQGIT1UD*q9?W2z>rpsn$yGPq!k=gtE*yq)G zTQgOPpXRtec06ymwQ*w;+xJa2?BzA$5{DAk-rVokB0n>xy!Q0_&ix&m-ZI|#-oW{R zfgywO0fUX^?-E=KQ*HN`YQP+Bs#cAg|d|Rr$Z|=9VZoi|ezclRr{HHSa zC*5G!WpibQ*SzwV*OxJS$mgDUd8dBHZ&uyEPOEJsbJ~<8?VR~LW?qQicQfkPX>Hlt zDy6q-&ODnh|Dx%Aw)fnJc_;AX@_>hyB|o_(CMPo&wdNeJT$Da>-@aLg)oV8L{>s&r z<2%W+bset?>sBQlQN7DMe)Fu%+uMG1%E82q9x_Q2OsqHF`m1+&R!Pmv1AoK%gI;g= zTfVg^f7^V;L;o_a&2P-w)6?e8fA^v%+kb|;bx*Zo%jDO6+u-}{@)L{rvr?Bo=!Q?6 zaN^2GGk^T@B8F=*Lx?} zEP6xGR<)H$izEHjOxr+mlOwfa4L*LLtd^3?mmxbIb-`H4yw zndkipJK6m9OuqT}*t;}FZsoqc(@zR3q*%%Rd!+Mz$J}2jeRnfUjzkz4cxO%7`e1ib zPrp=dhty$}`W^h)v-dx{w8DP3<@#UFPws!ODgVz98u?)3_QFGn#S@-cEqsqI-f{LU z%VR!iRQ~4Et4|S@WywaHt{r2SSUj)HRm69S#TL_9VmxQqoxe<|Gh4gg?#cbnQt$sM zM*nB1x?c4(inE|5?aP%%xyL@uk#@dwZKg82GNUfv@BB9z`6hYMB=;8#X3tF~KVbYTKBt`P;f~iEvBj-63 z53PT+AhSd0zWj6T`PaVidD|aY$_36bp77zFt<9fy=E^f8!g38vjiT@+<59gLtLgbPoRa#&Lxs6>4n+*J**Vw z_Uy4Yp0@c4pXc#s+ulsG7mu20E-S43W~ch9mkF{BOcx~@56JG^x2)4zYU-sod2#Ks zo0BIvWIx?xsa?M2NJ{o!gP(I>8t1CW-Ei^!;Qun}iH%9}u7#(6%D&S$=ge0TJZaB@ z@aomS41W2wbk4iPcA!G{hV8q1Tc71yp8Rws{d>?nqjP4xXXg1%=`C}9b^Mm|()trD z+boo(yea!`!GFm{GuHV0-P5U+zS1)VtM=LJtNPSzGVPt^@u*AfOq_Cd^umNQ2TJ(2 zG=JP$Kl{<2Y|F%H#x>=FlV_Qg8F^1xJo9Yc_XRPW%qc&j+WB67=QgWke^lWvuPa%} zVz*37wyY{JdwcF*>-)!h-57ycNoVhk0~(vZXFA+qxiwfq{X)VQ0DU z(W27v9)H9>%#~znWH&!b)neF^^CM8?7Fthly!`pW^` z#QM=wyP>hS{(SXp*6n+0%C_0^Pq(V`m!7`&s*dUP1JTXLl5*V|QBR-P|=+OhiDdg-OJGUKF9+_<>i^2iSc22a(ZfBFrpuh><) zui81srQq_hLoY1$6g%IxnYiQab=66lro_Wp`qL%G)2jNinLdGP;s-=!l^!Lj`YPW%aGM(=2bj<@;pwGT^Is>l359oW~3Q={D>Q zH|;3(+%VC~>&&F7T}P^lY<{)bW-gJtZt?OzgY>;^cEP82vdJ&on3no@*?fh~wo!r? z=Y@I7gys0l@D|UN?l5fky!(lhIqp(T=!f?~=cA1K_RlH{im}t<$*q)^mUtf)>z~4K zfPsN)`TOTCb6J%ao8Ip@U3||zq3k@r`o;+f7r!4YFe|gEJzl&ty?;%fyleEOJjwLd z4}0>Z^ZA#n#moIvmYmtbrs==pJ2&gWdmB~P-OtakJ+eKadWu}+Y0F-&SeKpgrqYoO zg5k$DNnPA=a^lR!i`P}pewP3EYD;hVblY3SHLTY+UX#w661**9={vc2!Q0&J&9~|n zC;SYxw39siY5LOrlOI(`Z+oh6(zd50$m1^q+nr~VY8dPneeQc0V=h~!edC{M!}2WQ zyCNTw7xuZy?MmhYAE)KK^fzu+|Cf0yPq zt$Cr_{@9{6h9|ZCdd=C!NuCeBZCu1|k-ht*o}K9f*|&Q>6#Yx&6aFk|y!C0#oP9QW zmiya!Cq{Nz-a6ekVdB1P9c!n3E1TAFu&{pWWuwZTEkVZ$Yl@BqZJB81c3yTxGJCzR z?SVhpf5KvH-^_Ep>^$Z1=Hx|hKBR3FS>*de_cG_N+G|TM&iW8~wp4C!L~@hF&%|uy z-i2#3{_N^+U~dq=9QZT;Ezg;j+;?k_?|A(B)W?4t^U^Ggzbje&JyOfkYah_I_|yGc zk~2AO-;M4sJbr!Zslwn?pCY`pSpCDt2XnD zZ}TTOesDVWr_A=JTFQO5)$85mmz-8pn;CU>@-6wbjZc2uzv}7Y;^Nwsb#>V+$z|(B zCS5Nq(Jy8!$5&MpRPd!6_ z_Q(kvzpN{4KmMdvdB=YS(a1^P{*Vi>$2OY?Oejn&MV-c?4lX^xFqy(=Vwpj83!(_ z%z9VJ{8g60tgeQ^KJ{((ocld;euaX*SrRWV>^r?VeA@O^w^bY3Hr{)ENJvPel|{ke7>bqZNKe`&tEk#9#Bv-8r}NQU~Wp7mb?jAN^}M(ys?UUWC|M8vgQH!a>w zIR2-5o5#Oit@*p_jq)16T=l} zhn)ATSIm@2GgnEll&STe-!{dUeLZ)|mn94h-`>bw&zQLJ`N^P*f@0EFweGLfwZ6J= zYgE{`lROvOH$Hw7RU@!CdBcvJ(&l9O&V_zS=Y3AHrnx;j`+j>ue)Q+1&vI-nEmUv?$j(b$h4$MY&$30 zl>MH^ak+o%KL0-xzXd%?R_fj8a%^J{D?766-+sLD`%kW_*4exDtR+oPtn@9t zXtMiK@0-jE(l_-KvfqEIJFucg+RD9`LK`}be^nw{O>bxWWHnZnE+}9I(@c8bn8~qC!4wQZG{q|=i zdn@mcrH4)bGo<}z_&as-$IFj)%so|VxHZRLSx%bGXtmbXqlcs4*38}gd(!(w-4}mJ z>eze#ILB?+KdtvonATd!$2Al8SblUmW_ebpxG_`Vb(NhR)2)l3aUNo^`2U*#Z?%h1 diff --git a/doc/src/Eqs/fix_controller2.tex b/doc/src/Eqs/fix_controller2.tex deleted file mode 100644 index 7bcaa333ad..0000000000 --- a/doc/src/Eqs/fix_controller2.tex +++ /dev/null @@ -1,12 +0,0 @@ -\documentclass[24pt]{article} - -\pagestyle{empty} -\Huge - -\begin{document} - -\begin{eqnarray*} -c_n &=&Ê c_{n-1} -\alpha (K_p \tau e_n + K_i \tau^2 \sum_{i=1}^n e_i + K_d (e_n - e_{n-1}) ) -\end{eqnarray*} - -\end{document} diff --git a/doc/src/Eqs/fix_ehex_eom.jpg b/doc/src/Eqs/fix_ehex_eom.jpg deleted file mode 100644 index 67fa7c092a8f24372f557f1fe086536a7d829b98..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3272 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 diff --git a/doc/src/Eqs/fix_ehex_eom.tex b/doc/src/Eqs/fix_ehex_eom.tex deleted file mode 100644 index 344ebcef76..0000000000 --- a/doc/src/Eqs/fix_ehex_eom.tex +++ /dev/null @@ -1,8 +0,0 @@ -\documentclass[12pt]{article} -\usepackage{amsmath} -\begin{document} - \begin{align*} - \dot{\mathbf r}_i &= \mathbf v_i, \\ - \dot{\mathbf v}_i &= \frac{\mathbf f_i}{m_i} + \frac{\mathbf g_i}{m_i}. - \end{align*} -\end{document} diff --git a/doc/src/Eqs/fix_ehex_f.jpg b/doc/src/Eqs/fix_ehex_f.jpg deleted file mode 100644 index b74a28d907d1682c3a95ba59cef84f6914ae7eba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10352 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 diff --git a/doc/src/Eqs/fix_ehex_f.tex b/doc/src/Eqs/fix_ehex_f.tex deleted file mode 100644 index f6ffe1d720..0000000000 --- a/doc/src/Eqs/fix_ehex_f.tex +++ /dev/null @@ -1,12 +0,0 @@ -\documentclass[12pt]{article} -\usepackage{amsmath} -\begin{document} - \begin{equation*} - \mathbf g_i = - \begin{cases} \frac{m_i}{2} \frac{ F_{\Gamma_{k(\mathbf r_i)}}}{ K_{\Gamma_{k(\mathbf r_i)}}} - \left(\mathbf v_i - \mathbf v_{\Gamma_{k(\mathbf r_i)}} \right) & \mbox{$k(\mathbf r_i)> 0$ (inside a reservoir),} \\ - 0 & \mbox{otherwise, } - \end{cases} - \end{equation*} -\end{document} - diff --git a/doc/src/Eqs/fix_eos-cv.jpg b/doc/src/Eqs/fix_eos-cv.jpg deleted file mode 100644 index 37eeac8e2dfdefc78688b40a5f64393296eb5810..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3016 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 diff --git a/doc/src/Eqs/fix_eos-cv.tex b/doc/src/Eqs/fix_eos-cv.tex deleted file mode 100644 index e084bac9bc..0000000000 --- a/doc/src/Eqs/fix_eos-cv.tex +++ /dev/null @@ -1,9 +0,0 @@ -\documentstyle[12pt]{article} -\pagestyle{empty} -\begin{document} - -$$ - u_{i} = u^{mech}_{i} + u^{cond}_{i} = C_{V} \theta_{i} -$$ - -\end{document} diff --git a/doc/src/Eqs/fix_eos_table_rx.jpg b/doc/src/Eqs/fix_eos_table_rx.jpg deleted file mode 100644 index 0172281b6ccfb25e31b923f8e0a2c7f027812caf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17367 zcmex=Bm<7<_#hv=|r|I2c$Mtr?gY7#JiO z7&yGzGZ|PI7#J8C7&ubq%mvX5MhpxBcV5Xburn}l@Gvki*fB6LFvz?D>jg1K@n{H) zhQMeDjE2By2#kin2n+$A#G=%^lB)b-9R;t%+|*))00j+a&oE5}1_ss%%;2_#2m^z_ zrU@)?_OVG5!E9zT0|tgklMrk~JA-2xC@4qU8K6)Y#iJoG8UmvsFd71*Auw`7z{tSR z%*w#T%D`N~(8$Wfz{=Q|0h<^DgAYR@LlHwNLmop3Llr|lLotI6g93vWLn1>iLn=ct zg91YUg93vFgENCCLl^_7q4NJBw{}KJNr9EVeqOO&VoH8es$Oz_u6{*gfxe-hfj)zc zeMLcHa&~HoLQ-maW}dD3``!E16*5z7)x%AF4SWlnQ!_F>s)|yBtNcQetFn_VQ`GJ4 zc)4sUtSWK~a#KqZ6)JLb@`|l0Y?Z*KTjdp7frRyy>}-ls(yW49+@LCoQqpXdpl&HI zFV`zK*2^zS*Eh7ZwA42+(l;{FElNq#Ew0QfNvzP#D^`XY;F4OLT$EW*l9`{U05UK! zDZjMDR;jc!GsP+`G0ik7CB;-XDbYAZ*U&H}Q8zKg*ibjc*f_=9)X>5x%`iy`YJEyF z-1dUfq8zZ@Darb&IjOm+c_qdAhI)qjO8O8-Q_IeZ+yc0zSc6~5&ZZ)_z{;7)TDKuFHuEEjyc(WUFM5+w+Sc)(58+ zLW7&k*v`qc!`1AD_&6ui4#EgdEwtn1;^gGC(MNU#X0U)of?V9}Z1mxY){d7;fev8Q z5|RRWG`L2Ci=+@BN%3gv8VxRzLVzU2qp53%1s9^>o0^wmt6r{dZ}7bho|D8B%YpoFNDq=cx1xU`(QqO`24thj`do|3ADrnZi@l!Cso zzLt@?mbMni5Jq+m4lYhE5pHe~Eg1EDnVDFaSy@?F7#J998JUwh=DOELf4NWZ*Q!{f5ODks=S2uSL zPp{yR(6I1`$f)F$)U@=B%&g*)(z5c3%Btp;*0%PJ&aO$5r%atTea6gLixw|gx@`H1 zm8&*w-m-Pu_8mKS9XfpE=&|D`PM*4S`O4L6*Kgds_3+W-Cr_U}fAR9w$4{TXeEs(Q z$Io9Ne=#yJgM9@eAU;F$mmmWZBNGb?GYdP&UyMxU42(?7f-J0xhHOHPf$WKe!b(Ps z93oB=7j8VrscandK{To8BA1wo$wSqTAg_UaMx4i*$nqK7V+eoUV&GwBWMC3x7G$tz z_~q86v4Ck<;iskl8DtJG$P(LdHd*(GxcJNE?5&&C=e*p*FyrSGo|NZ3Umje3UlXr4 z{gJM@`<0SI>Q{rpwuoJ>Tr%T>*A6YF4>!+wJox-dw|@PMoRTkLqVqfM`HP->`1`j@ z(}&3JD;a4(x&?R+}j2XrYLPG zf3b`U-a@f=PNqM%=u_XbZ5m6Nt%&uCApZn@)6EX7qG!%Oo~@lP9q}VB*FG@%_CsZ7 z#nzfd9h_-*cUwH*n|rk6O39AW4S}x7Ke~@>nfv^>bCiC;ZG?x8siC z)2iqUEQbk$Nn=cW?%a+zHK@8;#*lKKT02o zntFBin(M~Vx1#n;+}N43IQGoJU3qEc66YL`xv`dq1iHI4uRTPqtg^FTx*|H@qwBtD zyTbO`b?dhNirq3{*?Ut5g@ux`j^E|3UcOr0>vZl?g~IOLO`Pi@mI$8I2%Ea=p`)ex zOZO02KHgpPE8l4=HD`Uh zcTQvZggNgD8Vt|ZWzYP0ujiJ0`};ki3%nJsewiWnOu5qd&f-PA=jConyy0P#^j*H( z;?cGm*~i@RVn6s!AGx@GqUaGe&wx2UeRlF0zj0h>?G~^7&+Kpg+T&%9KmXPLRUcg} zWoG)m|JT1oo(2{5e(iq!wk(t88=m;iz!)Ud(g|=@hCVFjt)0@ih&f@^{q6yU#jQH1iKm05A zJ7(kcrJLKbe_PD5j-E65>Ef@q&soa;{rhTd%H)^(*S-H(UtnH#>)+btPkOx;T+=n% zH+?g!;q3!KjPslgf1b1JS|DGx#-8Ixckp%7^MbeTb-Qi3lrMIUbM504qa6m z_IjIk#WWS>4S|h+R-d*Bv45!Yckv$0#r?B*`Od}qmA>8Ecjb>GSH0BNRfRwF@9sbB zf3ansc3J$q{ZqTFe7hqK7e8a=x4p7icJE=s+dtkOja$^^AQI@xKnhmg;BoV|ipI%X zOXi;_%AO%FxW}ke{>}TXvAxcxKGz*8xjnIP^Y44%)A!4_mWn=^&-+hTPlcQ=eAuu4(^l z*z@@GvA_4fQq_|QcAqA1Gycy|cU9w+EblIjMGag~EUi>Iag)&L9fDIWlwV{&|UPOZ`}WRJ=}lXHw$M?(iLMhQbXuc~2|;KK#eEHaVvJ$ouwd^@26>X44C| zX`lG4JN2Z@Q3d&5oG;vegzP^0S=TEpd+OA;|72cnFS{5MU9tY?q{CY5eJ&q)5ArNY z5hyQNY5y?d=6{9@XCJ-)qoG&-W7Vhq4fh4|O?cDt+x8jX&o9l@c2Bx2zvJ*4%P+Pe z|Kz5A@y%4(9&K!L?|ez+vBe)6-!+=a3)ti){dmBe7zyEA{f!h~|3Z|k#GtXrF~ck85E?@XsjvdK#C zSSl-fs%o{+MOTpqjaA*NGtZZPOTD5S^|B?6HFDJNNVph3q z(ZwPB-skzE{sTh(4vgxJ;n@=}uCw3%Pbu4cO?h-iW6A5p8(ybWX71Zzxc)(HM$~S0 z@3~oGhAStq*3=yIbFh#5vgM|VM^dI*X`hK?T5`kUE3^7;y}R{I-t62X?T$}wKjs*m zcx9x)l%*xIdt3ER-JnNmJ35_DaumdhJZD)Sz{khG)z^VlB+!9XB+S0ORJ+&D)^%Oi zd9&T@Typr2^=ppsJ+a|U3tF=q% zG}DS3Mh2`AGEMwdrIq~$-V5E0{}J{0u+{UEYb&yXlM8w(Gmbf#?>KO*{^t3rFRym0 z%$qH=KDS&mYu4U%{Y<`9+g)Y1J-c@)^4rHb8+s#FJbo|3Uv=i9P4R+?2}eq_SH6Ed z^_0$sNS}*r%qk|c&DKA1U+VZ#Ip#k@Oa8-kyH~N@`fzhc$MYXIa^wG0bS?eR?DC(X zrT(E_W7^40?pwu$n6H=2w>qu{<#0AU03&c{o#Ky*RJo$URaT^@%p=E z8#|dM7pl&==YRG>Acom*h>pP}61eO%$k z%~n_cGc@l}lsx}!-?~YD^EMnYy7}kxkMPwDq7KXqJd94)%xnKMoRI6)*Z=&VK`~=d z7lY;|aY4gQ=N;@>n{!#dNgh1@)NfIP=F3@gtd?%}6xvec_Dpl(Wf*rH}Gg1}e>u(O+67@+-#bhQ^}iOA}Z{CqDG` zdK~^?YwzEO!8Rwnr%K3I^v!S0zQ7nWy?c*f`Xk+Pm+PrpyicDMa+}1FI&*Q@$>2FX ze-5lrR%pKPt8ZJE)g7ydhks&hydUl7eI+M<>5Jx;ZTos|pRTVjlbx7Uo@Q}^ zq4n40d>hH)1vR2OKTL1Fer{K^*tXUs1+8~~l&gH;KXYvNDovAF**h+0F2C{EbU(}K z;tzTG?3qRGB8PpWJ!YO0*|g$SEvIbl>oB!x=Pu^2Ur?>>Yjkp>NZ*o4BB_0s+!$i` zs^`rK`|4VrE&6rJwe6bwBp+uyi4Rp~sdJliXYQ@LU7FhJoBlI2{&S!3;^X;;?;E!N z)0y?_)&1bzUA1vWn?*vVh3Rz#B-j-#e#XAeDtu{g++UNqW`&F5;?9Ce;5Soval;@A8gkY-o%>t9ok%~hMU?Wn`9E6Up^7o0y4 z+If6GQ^Sj!8(l>L7-Rl3bk-CutZ?<2r!ei)Ezy9p1+z+zY*?YrY^0L2;Q2<&bxj-g zIA-!~tWR8gS7Fk$*OtO2Od^-M&$A5;Y!CSBE zosXaPWc911yG%@ezbMs~c=vW%X;aj{Phe+y4}F!LYbI#n-~!TBh{#_s!%t9p_x zVfTDy)-IT4dAo;!-}3nL=&jGb#ecN_yYMS_L;39=`JUdX62CW}yWRhI1EbTmu&;mi zFR@*8|Le||BB3Q$be8NkTUpK=qgTu^)w}-(UvZcwqkq`dHzvATwcg>oyuGbU@9JDC z37k`J9NGCeSI9emi@WM;$L-~_cIBRoDLq%SCuwcgt@3Yc-?oSgbm}~ua_97J*2v3p zQ4{}ty!+KLB3|t4`5*54M6$o1_^oQTjHBcAKK}{zFG7uST{kV-xnyFs|BuFpXQR%< zzAP^n-*(1BI65N6qor@Z(L&L3mydqEk1W?cytv-(qV8m^JI9hrGCI#O@-Utko%`Xs z6S(YJ*1B}cO_i{WOa0$&Xr zR+;|Uyv)d)*YSV zk8CsRw$G~Z&X^o|^JF3Kp#_I_R9tCcVLbfy;NwekN}m0!+y0j+YU$_y42{3$>UX?b zviZZ?C)1wi9zOom@jpYX%p3ndm94RxxAmPm#vS3N++^CzzCl9%)Mmw|_u>26-Un{a z_Kr@wpP%)Hd-oS1&nAcC7BTa7+C1QnIxzW-WpraMliBZ?<)Wz_OwpOLoChQyGfc8% zn)+rd?~T{eyKi^ze(~YyVwZ))deDu4j@#<)d}i)jwSO_Mai-Lrm1P zg*xk|Up`xyvDq-a@8+DJUJ;+_Vr1r3uG=&_>|$f@+KgMvmKI9C+^4qx;ze;@*|mH3 zG@h%Ptdm##MIkKxkJ3D){|t*-*VaD}ZU4`pd~M#=hraqp#0Af;l>YE>-PPZEOAB)h z=X_F{=xFzR)|vkdt=SLnzt4{UVZZ-B!{e(OiT@cmmUrxbu`oOS2W#Sgh7(`+FS!{T z5uqdgYw59-21&kWj}$JR__E__c>mIb`a@eky#Ky+{U7=J{~12Mx__x;cC66BoHuqC z62o-tE|#hue)6ATyRvcJRwq4BbL1ocE$)XcyY4pqIDI(d<(ikPq)OY{W|=-QIR0^Y ze2`t!Zu{ms(|sSWAKo479kz9n^o|*~Pa5lqJy`!|OZ@u!f-HW)Eb%y->(4*bw?D5a z*&W2Td!%vsK4 znt0;g9U;r(*Y+~)n0=NjSO3waimkd&c5K;o=|98fcRU)g4^k&rZM!%rq^G%|z~Su) z(VbJj{by)+`{RcEp|^jt|GBO2_@n)I;~&efvfBPZ zyY_DGy8qkSFZH+^}uuH$$_3LV(#&4dvBk~U2xspU`w|6AJz?L zYS|25xfXrjzH7#hxr;Il;yuz63#;oUp78O^VDy-r__#1Fc(>%K?G}$_?JoPbf3^P0 z=3CFpeWuP-EblW`UNvb22W$T_U%MUeJIc#v#kZL54T(9;e>0c=M$oM^H)Fxpv}4Af zMHwsQcAgjdCKGzMZ@$ltUAr&6eSRgUxAn@zwrN*RseGEf>z#~DRoCNv!sfFVWQXg{ zH+meuzg*?{M8m*e8tYE`i7R_=6+a{Q`lP>Q!vXy*c@}TaWl#K3DS5e6Uo2x&is`n^ zs%H|u_mxJ5{56WHV_ToO-~Hzz{R;JG`_)RVTKCU25svX#ou0cZGjM-r!%xp|GV@mi z-`cUi#mIlv%c$#J={g%LnnR|&x@BazP4q}c-4eBWt=E6Nm*2^{Cvvsqx1>wBd0Ek6 zk@g>v6B_D`W8Sy=zMJ{sw$H^}lhYlg+0iW94E=>w3Qw)vvT?Gs*Yi0mRlcqCJLP}+ z^VNSI+t#N(|67;;&bUsz|82cc#pR;C<#e7og!=bN`u zpB`Dk7J%Qc|wr^``+NF73)=h)hYSC zJ^AZDLtMvO-IQt39w|H9Pt3evGBKZbW5?4Xs|O!v^#|;pbliX1GimGY=RGOWw{t$L ze2aavdj3k$#3GSAON%F$u555u|Ifg=Z0UanC-KhxpS=GwOv>gyv`_DfVteS#2lEAe z_lN8#O8%{W!n^kJ?8X!Cd-|)s%zADk{cmyPe})Z5um5ZJtch3uxuBlw>t9K;iI1$$ z2K|V>QxP3?>2hZNmbkyOPe0!N?pfN&Utw=Wf|;#j_D}Y|EOD#hd+~;*tNd;gcSwGd z+4zlZ`DGpDOJ7dtJXCG*ZhCw5_G-iLDwAr@R^IQfDX(Aj$06eSK|9rJYjbpuPc)mK z@Lq7{zt4Hc_{6z5{(Zh;|6y0D{x8*gX8#!uCI`%GxH@zCM;`gM`{E|`^0%30#jSFi zyJl4%Tiu)X4-Eeq4%oiFdGYGSSdP@h362lCKKy5ps&UxyaenhxUbf#4^Lv?MkA%v+ z%&FNfv--;$2h+kY{v2Nn38*v#A4%J;w)|gZ=B~?;9@3}(FjsQRRy%v9T z?dDJZ&!GOZWuMCLfAc@sE43egUK{NG;d@K&-D&XxSr?stS9MHz+W)|7{-NC#dsJ6B za=D84m459rel_R* zh4P1Q?e!11y5MqRm*=BB6THe6-HtqMoi6!AY3^RDZR}az9#z}_#V`Gr@OAp4{|rt4 z8SD>ys+BtSJml}v<=%VaK1Z}4wu)o9-pRG4*!Pd}sb2QGwg+uW*Qc)6_~9-3ba_XO z|B8xk?<;FcZL5PT6NMvAZ-`#-)7(R3(Fc!%3LoRv`)3@jtgHIBP5jp6e_JkpvGf=C zu{dzs^>eKcPiwq4Rk^(6iloZ#C2U+1|2}2doIa_5Y1Ye}dyl*&F;qa{4|&-t|RXAkH7X_6CamMh=dtJc41&wqyX zrw-SPfBl&|kTw!v$d-Yzud$n#SZp3;@Waj!T^4HwG?%~1X zE7m1HlD+$E`a|CQP;sNf-=dwriENuWvFAu)8f7tlt-|qVO%42^*^3|>%7WbZS#4mU=_xNw0fPX#NyVt27 zpD62pWFFro<)^blf7dK1>tjhf`R&dLd#Sf8*SA0W&!Dp3P3Xt;<*!az?OSX%J^5RA zt={L5+JklHQ=k5v^ZoDR1qXgzW*-dSb>O zIDvnK=!HNJzWjeez48BA`~~Xo|F!?mFlohqhL*+Q{}~nvACdq5pTYk>!;@7nH5Lq% zI-Xwb$bDDxW@(@2&6*XYB_LwMa0-n$`MW<_l$+OP;#Dq-^z@8=s{=^Ua^?yZY6KjBBfHkBDz)oS(FG z?wsv>{yTd8*k%3L_oh^6ht|6L&3;>zw|IHno=g5F=G*$^m`~hxC^Fl~C6ef=+;d?& z`^F;`{~7E!ew=)`Uh4R#h^+Y^HLjdb+&$yQe}?|wrZ1)Pf4S{kb@y9X-&Ou3!E)jM z47DDI|1n3#3;ofs$^7s=r`FKEFYT6+uy`{= zUBGg6iIZ||d)~YE)$`Y|?*Eu_{d(B1xp#tJeVjUD(UMIYOM;piKTnl6ur0ha@A{kl z;r|&JJL5dd>!1E-;Hj3a)IavAboG1o3OnQZZ+l}^=GG>5Py5esVe^mhMeDZc*4U@k zuRK_yGSA}s@$5|9!`hpk^ln^j!0`PTYvtN2+pGGIpN+;4W9e++qBr9#nSaS7h z+ibrVr!STyE_MBVQYf-!#RE2rJzG332&`H?x$&f}zxoTdr6Qqbw|A?mOq~$uD$)iT zEEYXdar}r?>$_F+_&(G$mUb_>Us>I=Zf0JEk^HywuJLhITyJNjda$fiUhy{0v;4PJ zMb-C^U03pId>>8Qy?eq*n?>IgQu1qD|1-Q=dOfy%)8*nzHr5Z{+8_EQBNaAT&_hvX zv&^2J%Jk&Bolj<6Sug*ep)K#j^S?a*bpA6OY^nc~)&C>yJzxEW^N-H|k#PUdaBS7= z+`E&e_DAj9y=_y=>B>UUJ;|$2Jq)Q++w(g3$I2x?nvaUb@qO_9a7F*U%6|sWy<2mR zW-@(NW|tAu;*fYC#8(~0vVYV0X7#B{W=DJ!nPhm{_^y-ZpPE&#?BxH5f4F|QH|cTk z#q=wBdCS{R-mO-$J9 zp_iEP>8O%QYuNcyYj;1BuzWso*2|2=YY#8&%Ma}j*!FSV?0UIvA2S!-3*B`&O7+vJ zRntCiFO{%ne;gsFdu6RnCVy+mS-$vfQCZtR#(TY3!oTTI`80)|h8U&K*G*r@g`_#F zPuqR7Y})OUax=d?Te$ghPRZN*H@}5_+x_qRM4@Hx*Rh-EN`1QiasSu95w$h{8BQIY z^}IA&(&W70;YZ#Yw_FYWP7my4i+sqgsUUkwsN&t4yBrsUdh*C~3X ztEY1nY+NPC_P||w<|fAHPwl4OJ1ONY?XIoC9FtDHb#`ylG+TBC20uU6j1ciMv*{l@-mgvE>1y3{R-%A^9WO&s zJ&(?k{=?gMtvxh#a@3V|ri}BJnb)}0zi$oxarO6!_it-TSwCKTB9$EJp$>|c$K2=V z?q6Z4kbK$n5`zc>8^Z&}TQi@!KQoyZ^}dwr?DlEQ7A(Jt>aFCb`+wR{zCZr+&gcIK zN1xDX8G${Ut&YoNMc(XVYP>S5?Y!^C%iHVIZ${sG|NEYc*X(^eWUkJt)!AFWeuvfF zIp2B{b^q-ze&qdPmf0l5++?0+UJ-^T8)awSX6ZW^B3Gona8XyB<115^sZQ*|Hlxgnn=Tr~bnD)vdNU*DvW_KCEIjb%!?d$`cV+ zo-i=V8$6lk$IpC0i+lCzSfgXvyLTpU+t%tc>BJMQ6*7}DE@mCy*YWAEap3L`@y8?f z$nswKE+w}$>3Z3=&nHsMiq^e7)l+c%8t4otw7r z$?!ent+;)PuULKS0R{OhSH1)=q7`#2;bj}+BYm@rW)$iV$c_H2Jvm0Nyu z7r&am=(FeLn*CZgoHv|)`k!I-=jg(FY>WrEIAuN_Ej0<)@^3fWLo@@?EkNOiY)xL- zYrB8LwTtV`_3m#I6KuU>F1&rt+jF)b!?VxtiO*G$Q~a=YiSfIuro8EAtCvd0>OKma zII-%XS!xp~@4%H6FZXCgm>m^2n^^hRsJ>o0UH;AE z^`>Y4Gvxdz{?}dnpW(q_um22>MHpXBJ>~nTHt6;vzKIWC@0PZBbVc`Fy3tWCEXe14Dd$Ku2LtUsEroBGgtcjr9Q>h87Q z-gG~0y~P$$dgoNdm-UW|x~e!d$e6qYWe;pP?MHLW_7BfG%~n>69=UKR#3GN0F0?^^!+!>WkWiLBBab)P+ZVMi-v4!L zVH3JehFX>Gx6WCYUdY;b#dPh+|T>yJ8!>w$JdfQ zoBBK!goxc1RXO&sne)8kmFN9yOG5&$J-l={IcTER<}IxbthXieiyPRVXkH0~&U}s1 OkQuBm<7<_#hv=|r|I2f21g&3F_7#J8C z7#SGaGZ|RGYz7831`uFgz=)7tzyz0lw164TwgoBt|BzELqokz3N?$*(ST8XpKPgo& zIX_pwBC$ZRwL~E)H9a%WR_Xoj{Yna%DYi=CroINg16w1-Ypui3%0DIeEoa6}C!X!>#g)tw6&1N(x{lCE2!0 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 diff --git a/doc/src/Eqs/fix_gcmc2.tex b/doc/src/Eqs/fix_gcmc2.tex deleted file mode 100644 index fc4d90355d..0000000000 --- a/doc/src/Eqs/fix_gcmc2.tex +++ /dev/null @@ -1,10 +0,0 @@ -\documentclass[12pt]{article} - -\begin{document} - -\begin{eqnarray*} -\mu^{id} &=& k T \ln{\rho \Lambda^3} \\ -&=& k T \ln{\frac{\phi P \Lambda^3}{k T}} -\end{eqnarray*} - -\end{document} \ No newline at end of file diff --git a/doc/src/Eqs/fix_gcmc3.jpg b/doc/src/Eqs/fix_gcmc3.jpg deleted file mode 100644 index e87764afd9181dd6c4707c0a33b0a80abd2170d0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7437 zcmex=Bm<7<_#hv=|r|I2f21g&3F_7#J8C z7#SGaGZ|RGYz7831`uFgz=)7tzyz0lvVa-Rjsq$D|BzELqokz3N?$*(ST8XpKPgo& zIX_pwBC$ZRwL~E)H9a%WR_Xoj{Yna%DYi=CroINg16w1-Ypui3%0DIeEoa6}C!X!>#g)tw6&1N(x{lCE2!0 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] (v1) -- (s1); -\draw[line width=2pt, ->] (s1) -- (r); -\draw[line width=2pt, ->] (r) -- (s2); -\draw[line width=2pt, ->] (s2) -- (v2); - -%Spin -\node (s01) at (6,6.0) [draw,thick,minimum width=0.2cm,minimum height=0.2cm] {$\bm{s}_0 \leftarrow \bm{s}_0+L_{s_0}.\Delta t/4$ }; -\node (sN1) at (6,4.5) [draw,thick,minimum width=0.2cm,minimum height=0.2cm] {$\bm{s}_{\rm N-1}\leftarrow\bm{s}_{\rm N-1}+L_{s_{\rm N-1}}.\Delta t/4$}; -\node (sN) at (6,3.0) [draw,thick,minimum width=0.2cm,minimum height=0.2cm] {$\bm{s}_{\rm N} \leftarrow \bm{s}_{\rm N}+L_{s_{\rm N}}.\Delta t/2$ }; -\node (sN2) at (6,1.5) [draw,thick,minimum width=0.2cm,minimum height=0.2cm] {$\bm{s}_{\rm N-1}\leftarrow\bm{s}_{\rm N-1}+L_{s_{\rm N-1}}.\Delta t/4$}; -\node (s02) at (6,0.0) [draw,thick,minimum width=0.2cm,minimum height=0.2cm] {$\bm{s}_0 \leftarrow \bm{s}_0+L_{s_0}.\Delta t/4$ }; - -\draw[line width=2pt,dashed, ->] (s01) -- (sN1); -\draw[line width=2pt, ->] (sN1) -- (sN); -\draw[line width=2pt, ->] (sN) -- (sN2); -\draw[line width=2pt,dashed, ->] (sN2) -- (s02); - -%from Global to Spin -\draw[line width=2pt, dashed, ->] (s1) -- (s01.west); -\draw[line width=2pt, dashed, ->] (s1) -- (s02.west); - -\end{tikzpicture} -\end{varwidth} -\end{document} diff --git a/doc/src/Eqs/fix_lb_fluid_boltzmann.jpg b/doc/src/Eqs/fix_lb_fluid_boltzmann.jpg deleted file mode 100644 index 9d82b40ecb009745f6b984f5092b42008a057380..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4643 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

    hYrQ3%vayG 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 diff --git a/doc/src/Eqs/fix_lb_fluid_fluidforce.tex b/doc/src/Eqs/fix_lb_fluid_fluidforce.tex deleted file mode 100755 index 8433c9264a..0000000000 --- a/doc/src/Eqs/fix_lb_fluid_fluidforce.tex +++ /dev/null @@ -1,14 +0,0 @@ -\documentclass[12pt]{article} - -\begin{document} - -$$ -{\bf F}_{j \alpha} = \gamma \left({\bf v}_n - {\bf u}_f \right) \zeta_{j\alpha} -$$ - - -\end{document} - - - - diff --git a/doc/src/Eqs/fix_lb_fluid_gammadefault.jpg b/doc/src/Eqs/fix_lb_fluid_gammadefault.jpg deleted file mode 100644 index cd10239c9b366fcd33c079aaa7e0ad1c4ea0e829..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4793 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 diff --git a/doc/src/Eqs/fix_lb_fluid_gammadefault.tex b/doc/src/Eqs/fix_lb_fluid_gammadefault.tex deleted file mode 100755 index 1af82c4972..0000000000 --- a/doc/src/Eqs/fix_lb_fluid_gammadefault.tex +++ /dev/null @@ -1,14 +0,0 @@ -\documentclass[12pt]{article} - -\begin{document} - -$$ -\gamma = \frac{2m_um_v}{m_u+m_v}\left(\frac{1}{\Delta t_{collision}}\right) -$$ - - -\end{document} - - - - diff --git a/doc/src/Eqs/fix_lb_fluid_navierstokes.jpg b/doc/src/Eqs/fix_lb_fluid_navierstokes.jpg deleted file mode 100644 index 0a1c10414120eed3ea5f2f82db596d7eb60b978b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9311 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 diff --git a/doc/src/Eqs/fix_lb_fluid_navierstokes.tex b/doc/src/Eqs/fix_lb_fluid_navierstokes.tex deleted file mode 100755 index 41ca4674e9..0000000000 --- a/doc/src/Eqs/fix_lb_fluid_navierstokes.tex +++ /dev/null @@ -1,16 +0,0 @@ -\documentclass[12pt]{article} - -\begin{document} - -$$ -\partial_t \rho + \partial_{\beta}\left(\rho u_{\beta}\right)= 0 -$$ -$$ -\partial_t\left(\rho u_{\alpha}\right) + \partial_{\beta}\left(\rho u_{\alpha} u_{\beta}\right) = \partial_{\beta}\sigma_{\alpha \beta} + F_{\alpha} + \partial_{\beta}\left(\eta_{\alpha \beta \gamma \nu}\partial_{\gamma} u_{\nu}\right) -$$ - -\end{document} - - - - diff --git a/doc/src/Eqs/fix_lb_fluid_properties.jpg b/doc/src/Eqs/fix_lb_fluid_properties.jpg deleted file mode 100644 index 3d70cd7667461b8f4f8c96c5d271ad2662e88bb5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3471 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 diff --git a/doc/src/Eqs/fix_lb_fluid_stress.tex b/doc/src/Eqs/fix_lb_fluid_stress.tex deleted file mode 100755 index b4e0982536..0000000000 --- a/doc/src/Eqs/fix_lb_fluid_stress.tex +++ /dev/null @@ -1,14 +0,0 @@ -\documentclass[12pt]{article} - -\begin{document} - -$$ -\sigma_{\alpha \beta} = -P_{\alpha \beta} = -\rho a_0 \delta_{\alpha \beta} -$$ - - -\end{document} - - - - diff --git a/doc/src/Eqs/fix_lb_fluid_viscosity.jpg b/doc/src/Eqs/fix_lb_fluid_viscosity.jpg deleted file mode 100644 index 1816317ee6a908724a969464c4bcfbf85b44bd37..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6522 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 U-IS%yPE&Bj7LNVB^8arF0FPW@DgXcg diff --git a/doc/src/Eqs/fix_mvv_dpd.tex b/doc/src/Eqs/fix_mvv_dpd.tex deleted file mode 100644 index 685d527763..0000000000 --- a/doc/src/Eqs/fix_mvv_dpd.tex +++ /dev/null @@ -1,21 +0,0 @@ -\documentclass[12pt]{article} - -\begin{document} - -$$ - v(t+\frac{\Delta t}{2}) = v(t) + \frac{\Delta t}{2}\cdot a(t), -$$ - -$$ - r(t+\Delta t) = r(t) + \Delta t\cdot v(t+\frac{\Delta t}{2}), -$$ - -$$ - a(t+\Delta t) = \frac{1}{m}\cdot F\left[ r(t+\Delta t), v(t) +\lambda \cdot \Delta t\cdot a(t)\right], -$$ - -$$ - v(t+\Delta t) = v(t+\frac{\Delta t}{2}) + \frac{\Delta t}{2}\cdot a(t+\Delta t) -$$ - -\end{document} diff --git a/doc/src/Eqs/fix_nh1.jpg b/doc/src/Eqs/fix_nh1.jpg deleted file mode 100644 index af07ea3a4b3a197d6b415937d1325a7c2a5a4a00..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 68243 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 t$<%PwSRFvdYWaQ-K{vTlA=3w~Ac$AS* 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 Pr}kCoC?z$h`u{fp`iY_6 diff --git a/doc/src/Eqs/fix_pimd.tex b/doc/src/Eqs/fix_pimd.tex deleted file mode 100644 index 983fead8e4..0000000000 --- a/doc/src/Eqs/fix_pimd.tex +++ /dev/null @@ -1,17 +0,0 @@ -\documentclass[12pt]{article} - -\begin{document} - -$$ - Z = \int d{\bf q} d{\bf p} \cdot \textrm{exp} [ -\beta H_{eff} ] -$$ - -$$ - H_{eff} = \bigg(\sum_{i=1}^P \frac{p_i^2}{2m_i}\bigg) + V_{eff} -$$ - -$$ - V_{eff} = \sum_{i=1}^P \bigg[ \frac{mP}{2\beta^2 \hbar^2} (q_i - q_{i+1})^2 + \frac{1}{P} V(q_i)\bigg] -$$ - -\end{document} diff --git a/doc/src/Eqs/fix_rattle_constraints.jpg b/doc/src/Eqs/fix_rattle_constraints.jpg deleted file mode 100644 index 2ba86095cd3c3682160dedebb745413be563243b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4556 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 P3bGek9e^r^`2RNno;F+a diff --git a/doc/src/Eqs/fix_rattle_rij.tex b/doc/src/Eqs/fix_rattle_rij.tex deleted file mode 100644 index fae0457c60..0000000000 --- a/doc/src/Eqs/fix_rattle_rij.tex +++ /dev/null @@ -1,8 +0,0 @@ -\documentclass[12pt]{article} -\usepackage{amsmath} -\begin{document} -$$ - \mathbf r^{n+1}_{ij} = \mathbf r^n_j - \mathbf r^n_i -$$ -\end{document} - diff --git a/doc/src/Eqs/fix_rhok.jpg b/doc/src/Eqs/fix_rhok.jpg deleted file mode 100644 index 829a866be449ecb0f23dc77f547c5b7d053c0469..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18330 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 diff --git a/doc/src/Eqs/fix_rhok.tex b/doc/src/Eqs/fix_rhok.tex deleted file mode 100644 index a468dfedc9..0000000000 --- a/doc/src/Eqs/fix_rhok.tex +++ /dev/null @@ -1,11 +0,0 @@ -\documentclass[12pt]{article} - -\begin{document} - -\begin{eqnarray*} - U &=& \frac{1}{2} K (|\rho_{\vec{k}}| - a)^2 \\ - \rho_{\vec{k}} &=& \sum_j^N \exp(-i\vec{k} \cdot \vec{r}_j )/\sqrt{N} \\ - \vec{k} &=& (2\pi n_x /L_x , 2\pi n_y /L_y , 2\pi n_z/L_z ) -\end{eqnarray*} - -\end{document} diff --git a/doc/src/Eqs/fix_rx.jpg b/doc/src/Eqs/fix_rx.jpg deleted file mode 100644 index d63b983230c0c26a7bf9c50b38593bdd65196a35..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2427 zcmex=pQIfdgcOJ;VLuhaZ0UQDZ01-+uVvC#9lGbFQ8}p`kv%^sQ98*VX5*PR+_@T_hBl z_WFFL=5e;x?Mj9p)0W#5UOJu`{&?l>?Rl1~v(EcJy}c^&EAutq<4>2W&f08{aBKde z@)&*LpcThHtXc45zVGbp@b$|~dn?Y(y5qK1JmLsz27jaE6p53fthxn%e|hOPZ#P}} z-8go$xPOw>nFn`fEIFgO?wtN#adx{0Z>Pv7T#T3OOW}GX9Fn4-c>9v=CYJ?%=jMuU zKKP64k#)Rx`@&}X9+$;;YaV<0T$`F$=BRBrb>}(rwO@9pSRN3wl5r}qYPn-|V4C3~ zp3oV_Stk#C`kdBc7&)muyCh|^Q`NTRQJTMI9=d*o;ds~2Q`1vI`Jc|Ro3(Re|K$^R zEcBRfh5Hn<{vrX=+ z|D*nu)$S|)&DH&PRkP@#p12)@BDjQ-z0=3Z7x3R z+3v%?@29guP)GQJlKHNSvJ0zp-)IC+=r-09ea2?(Cfd33{_Y3XM)O@$%McLNg<_ia694l>8zh9q!>)M`&Os#MBZ_A!%r6-~x@L|8# zTDf;WUeDg1m3i{?mY-9EW21Sw&pw^bBGC7>bN2~}Z?7kFC!XBD$8Cj9fk>}Nu2aMp zv5dpFT{b)ox=k-vTo%bY`{KC6Wfbk7NA*`IgfT-O^t6AwSXO}wqIYc~IWd}Wqj zv*%T3xo`J3?yB(Tz4rO>U(KjY^#^y-acKr4{6(p*v(xgVtE)fEFT9W)AkOS* zX?6S2cBjDp)z@d0t~&VbKf@WDZ*MtY>E8G6M*L@(Gk3|$-*W#M4!=EqE+FsEw5wJ3->C2It#cOe zu=lzDc>Zgy)O|0tF8s~-#&%4e2@zTckYneTh&mO*e#j|_Ku?_p3C(JZkdUx_Brke`qo>twFvGH{? zJM*Q(S$MPB>_tjz_cg9!2{6iEk;e4OGEG?`{p$3q3#*uTyccU2HcKR(Dx31!Nnb!j zVehGspXKd479BfsQTJe=S@qYhC0CT2mTaC^Ho5NCiz?ZD9{W|@U%r2oGoOK9cHZB# zrfGNIxb2qS{4;TH#p8KfPaN!hzT?B}xt5QYt~z|abdulatCrDAqpS25EUSB9#2$Lx z_kKiD@7}DB19j)f0}LQ>k^(sEisayI=Nm>U#>W6f_ZQb!p-usoXD`VcoyGy6AFaFA2y0>!9r->6%iWgQW znyh)xekNr1w#^}XcHT_M&StRUY+$~ubLdLKw27CuFR0*gYkcXwZF@~C+DJ6|VfL)S08dH+67?N?%6)t#%vy0wI*I_w00 zMxctn)};OZy_V6w=XlT)QHtFFzOd+OQqEQ$5kB(zzk9Z!6ex8dlu;}uWmcl;`}nQ-(L zN6PHJJ%#EO3*MXdeK>x9|EIT?^uDRTm5-}@w~sA9xgs>wEbfK$-Zo(6FVL( zeR+A^s@{g(-vmx=dUAC2FQaDWtdAG}T-Okt@l@>DE;oMOtr07&dfu46yFE|XWmn{7 zwHlLx6qQCMjUW+~pr#8Kla5_&>Ug+#McdM_saztfj*DiMti0Bx^)>5ymxcC0nL<~2 zk6)#)kFWnx(`4(Fu<84ZzY;Z!P73Fm51C$O^kv_jl9=$cE&YwTyNHz@V>oucktPJv-kDhZo69S^6Q%D&h@X%IzMgR z_QGc3<^^W{_0umheke$a{kc;!@0(@5n0OxxU+OdeJD0?dGrx}QS}vddeEolhzJFIY zS=74MCOdAAx*Vmkt13KJ<*{$)$0c{e4r%YWtC;=$X7*(5EaB~ryaFl()vi`ib5aGH zR|QSt`m)+x?DfCO=>ZD2f}_JE4|63)Cr8?_wpM(2m3nY4TTJN2r_GW=PSPS=T$)Zt zyHwoc*4tWdc|L3FjMTQczt(C08D4B&lp*!*OxnD4Umh>Na^7%9?}E?^H+y$ob2HX- tJ-X6+`GJ!abG%ia#HzTkOh5E>Y4(oj@2+LjXPGT;@-+rETju}22>@RNoE!iE diff --git a/doc/src/Eqs/fix_rx.tex b/doc/src/Eqs/fix_rx.tex deleted file mode 100644 index 9400656038..0000000000 --- a/doc/src/Eqs/fix_rx.tex +++ /dev/null @@ -1,9 +0,0 @@ -\documentstyle[12pt]{article} -\pagestyle{empty} -\begin{document} - -\begin{eqnarray*} - k = AT^{n}e^{\frac{-E_{a}}{k_{B}T}} -\end{eqnarray*} - -\end{document} diff --git a/doc/src/Eqs/fix_rx_localTemp.jpg b/doc/src/Eqs/fix_rx_localTemp.jpg deleted file mode 100644 index 2b5147b93042028546e9fd67a3aec8e276d74ad7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16562 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 ZWw2^71HXgj73^(dTy5n+AkO~(CIAwd*bM*x diff --git a/doc/src/Eqs/fix_rx_localTemp.tex b/doc/src/Eqs/fix_rx_localTemp.tex deleted file mode 100644 index cbb191f8f4..0000000000 --- a/doc/src/Eqs/fix_rx_localTemp.tex +++ /dev/null @@ -1,9 +0,0 @@ -\documentstyle[12pt]{article} -\pagestyle{empty} -\begin{document} - -\begin{eqnarray*} - \theta_i^{-1} = \frac{\sum_{j=1}\omega_{Lucy}\left(r_{ij}\right)\theta_j^{-1}}{\sum_{j=1}\omega_{Lucy}\left(r_{ij}\right)} -\end{eqnarray*} - -\end{document} diff --git a/doc/src/Eqs/fix_rx_localTemp2.jpg b/doc/src/Eqs/fix_rx_localTemp2.jpg deleted file mode 100644 index c838d7d45302da5f69bc98293afb3307c9bef6cf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16284 zcmex=Bm<7<_#hv=|r|I2c$Mtr?gY7#JiO z7&yGzGZ|PI7#J8C7&ubq%mvX5MhpxBcV5Xburn}l@Gvki*fB6LFvz?D>jg1K@n{H) zhQMeDjE2By2#kin2n+$A#G=%^lB)b-9R;t%+|*))00j+a&oE5}1_ss%%;2_#2m^z_ zrU@)?_OVG5!E9y|V+MvvlMrk~JA-2xC@4qU8K6)Y#iJoG8UmvsFd71*Auw`7z{tSR z%*w#T%D`N~(9p`z)XLbL0h<^DgAYR@LlHwNLmop3Llr|lLotI6g93vWLn1>iLn=ct zg91YUg93vFgENCCLl^_7q4NJBw{}KJNr9EVeqOO&VoH8es$Oz_u6{*gfxe-hfj)zc zeMLcHa&~HoLQ-maW}dD3``!E16*5z7)x%AF4SWlnQ!_F>s)|yBtNcQetFn_VQ`GJ4 zc)4sUtSWK~a#KqZ6)JLb@`|l0Y?Z*KTjdp7frRyy>}-ls(yW49+@LCoQqpXdpl&HI zFV`zK*2^zS*Eh7ZwA42+(l;{FElNq#Ew0QfNvzP#D^`XY;F4OLT$EW*l9`{U05UK! zDZjMDR;jc!GsP+`G0ik7CB;-XDbYAZ*U&H}Q8zKg*ibjc*f_=9)X>5x%`iy`YJEyF z-1dUfq8zZ@Darb&IjOm+c_qdAhI)qjO8O8-Q_IeZ+yc0zSc6~5&ZZ)_z{;7)TDKuFHuEEjyc(WUFM5+w+Sc)(58+ zLW7&k*v`qc!`1AD_&6ui4#EgdEwtn1;^gGC(MNU#X0U)of?V9}Z1mxY){d7;fev8Q z5|RRWG`L2Ci=+@BN%3gv8VxRzLVzU2qp53%1s9^>o0^wmt6r{dZ}7bho|D8B%YpoFNDq=cx1xU`(QqO`24thj`do|3ADrnZi@l!Cso zzLt@?mbMni5Jq+m4lYhE5pHe~Eg1xo=LsQGd)Xdz%(#qMz)y>_* z(j7{Xt-7OX zyYA;|wjZ#R_H)*nXJll#Zdu=SeuYI{8Vq2((0tnIs%^Q20=p{CtY$3SJ3)Y(^>u@X z!U7yT>`spC^NyiA6*-dHZhgA-!7Eo! zasJ7Pizc5cxGh_?^0NP@!TW4ssn)HR-?9qw^yFLP6YtDB zAoW7~%$G>}ho(PnugdEG{BoX9|8Kh!_1v*1jE(zC12=zMbiM4~+P|5fd8htoSpAX-7m56j!7oiy{e|K!>q4kOHJgu(;`tI(~Sk&drrLm|1 zjGxzUsL_A8ULea(d#di1-+x_$v{&DJ$EDrC!2B$C@w>i;bkU39rVsPwUfeUdx^=I; z$8Yz!i(>xHdU96mYT9X@mFJbU4$qOZDp{Dn>_5YTk}FT%Y+3&C__5voQc?4NOvot9 z%}y_zr=OmC@TP5Yz>~Ze9*>o0z4_z)DF281ma|TOqH34j_t|D1o__X*6N8^{ljMgb z52n7_^Es~iBX{upgZriah}SL>YCmFZ+P6HX{prqt6RY0rzZY-taMuIIIfc>kQU*0b zvt%cHdbh`aRdnXlDMjT*?~?yBF!YOLJ(P?4_VfNfj(@j{-qufw|G?Xu{z!D+%!jNW zUHA5Euk!v`7p(VC=l2Qjr^iH|t8U;HJ^4*x-d^b{?S$UL7RoHax)1uU-O{cQPzh9U z2`~_KI3U{n$os5SMX<-NYkFUH<}K?}nRm9!p!VQ2d*jRy{hove6AG*@m+hTi6#BL- zKQJIR&N-ETX2B7rf`tLQ4ZnmkOtX<=cpLdo_P5Tp?cv*`)?Qo6`}E4BXODb-^4K{G ztz&dp>T%1>@m%Fu#fd+bA8tNkmDQa+ZR3@<(&sL}e=KjhWygcxD_@+dNL2~VXZf*o zkM9yM{Rh#$$$m3#Wra2TXIM3}YU=rr#J1o&@>wsn&;0RM|D#whVPY?E^!Hx-BQq|U zDp*xMR=el?{%Y}!K-stVKmTWF-hPKa``e#g{~6~0v3xlt(3L^-WX1I(;oG*0*-3x6 zt#SQp(;-R8a@{%F|292r|E=80zFNRGdrf)7#knU!11I@AXrHYUHLh45biGdDF3*34 ztUJ=a#^rxDZ))vYXKQYerhFw}>fK%S@$;V++>HPAZ-2DxwdRG9KgvD&{WtIhdRD4V z-R^1AK5gRd)y8t3Yo#=n-94PJs7sR}&{YJC`(8^K@8nu#>dudMr0P3L&Z-A) zoMgGRLuIyK#O&%*!I>Jb9Bv#ju=SA0nb`G8z0G=drNUg6iC#-(`Q2C&x<0Sf;jRAG zb}irTi=6bOg&Q5*nKIAMIAi;*K_lv$4?x!*F*Sk-WR4&%JGT~^v`x4!#b-4ik?^0l~IwRMnh(?*Z9KDS4?OWkJ} zwP-hmPk!z6MlS8EXzwH4V83mb^Kwghy>cylIo)?{XD{7QKgA~`px}2H`s6c{tYwJx9;psZ40rn+HgYogQ>Mfs@4GkHxAp^XX~VVYD^#P z7yM&4Vzv^$@hx)UBE9n0 zN!)T2QPx*uD_il--!VqMW67nh{~21Z+ZpY;%-6e8ZPxd&?Zrx}cNe#+8Y(;~?lV4- zBY0BuMX2i+TQ%?d+w5khU5`He^VwbQcQ5DOI9L19wB-7iF2A$(FK7N^+kdsxpDE+| zJ*9?&E6->27qynnJyNQDW8RLpbHcuggnHiH<`O!|(N!c!0uuRQ-sjDOrd_l6uA{*- z>3M7NMY|nOelhJWKEOIlV_lKI*o-9_0EBP(+=^XF7vwmh`1ns3RxQxe}+mx+Cjj$9Rc zM|yViXKzIb*8bSlf3#oNT1_hQSFN}IHviaJZQq<3CADg~?vjtsPCcSg&m#1n;eP1# z_}IUFcPyM$`d-TvHus)6&OGn%PTK~x)(`jh|GfSAFXQ{X`yc)@On()zXlJhWv6ZW{ ztJbyVr_N3Gnwq?`!^=l&P2<%+XZLbg9J_myy@@ev>qC3dqmOpiI(g)#ZZ{L(6lqy- zTczZfml(su$$bt_q|E>PbI8BwD#AE-t?I9vwW~dnu9w{`-LBiRQ}(f4%eTB$g;!D} zOM1hu$6S0{YHNG?cC4F9&%`FiH||MRf;XDOwL3nD96Ehup5ccVImeg3YI-I5?@76a z>Va?fQvSSLo42oi`RgCdxBfF+|N1XI-&J((>L2ZH7lhQWmsax{rm47H->%6~WYxH% z=MuA9*R%f&50if=|7+Lh|IhH?68}G~{vQ$lIQ}y%Jbm~-!w-|@{|sFV_$GCozf}5G zKEBPfL^tesaG%<3<(qew9ORD?TJqppD?`w=tr}l)+5R&G&;J`bb<1@AFRnWEQw#Pp zzERos!#}mYbaLhD^JWW+p0D21S8)8*s;$+JU0+AkNPg5=eK6Z!z28$p@jt_b)yWV4 zuD`KQx+3qsgyGAw10VZpww{0OXP@~?|NNf`-Wh-XGjP|>wvu{U6Zw(p@S!NV3RHh<*UBV{|rk1=Kg1h+gSgCX?@scPtPUEzB?VwZ)i$h zHQd|u&O*}S!EvX9As{P^(vZ(i5`42zzucs0Fj`n}UH?x);NDMlxGk1n6jKEp5a+iGPt+kZ9bb5bUiy;#8KcmBY}(~n-*1U`y>ygKXK zMv1jdho9WO#r(ae@M+)U$&=0;zbvu3>VC_j>o(C3|7JaVd(D>j*;HL8rcEbaiAK!% zxFw~}YTn&nQW|fc$o@IB=lM}P*Xu{tYWo_BZn%_OFPNpGsg~*fZUOU^Cx*v=bJ=QN zT(#$#Sh;w>ojXyEx<@2GEv-0gQu%tzJa@ka%x{}cd7Iyf-95YKu|?eem{QAwKSGmrrytgpeYYuZeNy(%lQPri_AIyme$Sq3 z?IT(Hqj6f7O4swn-n@MyD(=ot!T6&Z2|69IPkP=NZ9li;mPq=_<7aOj=88TjW3a;G zaX`o74a^L|(dPH=f2jB0A@BP7KLhjE-^Z^re%$Y!>;I5#(}jCg2a zn0CAu`r~=|k7a6Z!L7387CZO%`#XK>&s*f4#HbdqWIfAMXXgHz>&bDkA0Pj7UC&p4 z<7E1OhRv6vPU@TfZ2pn*TkYSIo3Bh@Ep1SeJ6{oeD6k@_Ht+G<{K~>LSwZ)`l^4V= z+#qIn@}a}Ay1iE6&aTqz-h$^@%FQl08mL(YEN(a=#BuORkv-Sv{|qcKy8jt^OwSAW zbN6qLGn>5Z*ed(d+zbihiC05T@BgS_eSJ|_>C>4TH(k;D!fSW_cTmR6$yFUkJ~fne zO7Kja_a*M!zxeB~_9gDx{`GIpKX>JiZnq>$xMTTP64g6PXGceFn={S#)Frv<%0j`| z9}*I>+P&K@Zk=0yRElr=Bkht6u~IirYzyaocK1|c?2j}?(Q?+4I^{BtWxj=c3;X<^ zLG@SsGwr+o8RD=1F$kafZWc71tmzTEHQy!Fd7%s=lvdu(!!h`iys z=Qqvo^+rtcTEFsH-+~f3@xAjyu5A7NxJplF-~DgdChj~N*LbY@Ydy2(%wJZ2{+nCv z#rIyZC|+{lTbo0X%}FooOkQ}pQKbM}asptNO!XNV%Kin(!K6B@#H;O)a zT;e5ul^qint1x*!H@)-Xm+iFXB?p(ioLCulp-Dtc=ZxpcwB*xtte|Un$bjXs%*0t=q`5gtUI()7zGKBa z=T6K?>-zgahWXd_{44&u_qW@vy|i+b>bjMQ%NKR( z=}VrwdqY!7FY^2b)$mu3rqqc(umAK{|Fg_KeV6^`zizaOzj?A&bxL`F?G^7`9%2r$ z>?`9I6xmzNOzmA#arNq4!@Z7Ai!Up0EwBn*bhjpHo=UmdKdDR86yl|q&U<-!_eP16 zw}qbft;w=)5C3r2zO%;dh_~71RWY_J96YDpyTK7GcVF{A!@d=}yxwoF@7=HKc6slf zOTVw4d-Xl!@|U~wZ<$}aHv9AD^D~3XtRAb+D*4qqbUIx1%UuKx_p--WAJuQ&f*Kl9~Tos1WK zuhuFmip&wSI4`#+cy;p*=BOVZGv$~MKfEjZOhtaD?diA7ub&>fKev3Ut?<9?8MRUW zw(UF=F?YWF*4E-P`{cJ)9RICU>G;><&+BdTETU63ubQve({c6>dnU_2m;Pfr_9yQz>HHredH*xCZH*W4vafuk8};a`r%Xrl zo8Gzx&EwbhibV!V%!{0x+{>6&Zo$PK-qM|^%i6ljVa)-i-)`nI zP<-H+VgI+Ny-%xE%^vi$Mwcmfr zHO7dyp8L^v@LnKS^3Z|$Pd24D zDgv7;%w1CzniCmW2SP6`uM-*FgwY6>lS|4eAt}p z_U2^{YwB->aMcH79)CFLbNmXg>)l`fGu-xDwCD5V<9{ad3)Ww^*#D&{eBpK3$Me}< z-7~+im6tEK=+bHLJsM`mmmB*m^xDQfvuw_${|p6%$M?ES&N_N|QqPt7&WkVFKZ(D* z|MfNfzYL+Tj$J5uo9)vko$DR4dEd6CyGj092NzD*aNy3_XPf4+J1m~}cXis<*?zu@ zr819k+O>(TT<~i9_qVpwyGwnIlo-UWUHjJ8gIIe&qzEAM>v3`1|dD7`Hht@VCp6mmi*;59wbwdG+nsdDcwf zKXZ{a4o6HBg z>Bp{JyLSDa(v~ev=lH~c$o_p*IoF5bNu zVsfH1qvrnG?$_2E3ZK?aJG(&p_3o1OyX|fq-y6SxFFoMHz5V4Yd~N6VnOaMzOYR{Lk=5;QW7vlT&JmQZ{w*636vUpZ+uC zXGN91nqadrb@|Dhknblmmz>Y{Kepw?0;WCP-=_ZDC+aHk`%~7mSBq`^&mOIMTWNlL zid5_R<}Cq5x7s`2URh^6m9f#j?V+E&Ol|nHw)tAQW%ZM76Du6QEM3&)6s3UH=Vn;8 zi&Hrz_ke-I+oa_mlqdQvYOw5%Z=WZ(>B@Rj?vN{s_Uya;ZRYie-S^Edw%)0^SHQ=< zH2PAF{Gu1T&K_Hv%6j;fxFJW%&Ru(FJw3%dVZo`lThiz7ggq5udscd`aoOE0{#xDL z+?~o1Pb;2Q{CN`O5zggMU{sOwRe9%X3TDznl^3K(T-lun{v3h@K?E z;F}rfkeBNIaIc>3X%Qh6oioR7=BWtC-mj>P-j?uWl3|mlZMJ%BWXea?JyLB`pS`$t z?ND}hx5u;Wsk`okXG!e8y28m(rRV)|hpSgFI>@v){LwY*RNJ^F%b>$lw&;n!id^QD zgHn1Y7N@JcPcVvj(tD=BL(;ZZB$#R2;^nuqZsmM4zxZ?7=VjMpCe$tHb7Y_3uF&AB zHdplS-bsh+Ep|?`pW@#m8B&ra%Ut!i=abbop&@C5>md%Fox9VE{WUU zUE}zu)=#YYx69$&RF?U5))|e54gLweIdj`zA=$!`dF`V4v;Xa1f3@AaKK}Yo$z9iG zt8L8Ek&4$kmD9azllIwvEN4~cH@)AZUsiwVkNL`&h!gx_u}`n=YcD*0X|LIy z+oApc1nPUjZvFUaQZK3$5x@Pz;fndMRP4?e&5zrg(SJ1WSIw`w)z5@})SCWhu>bs1 zZnCRL03#Y^F)t6i89j699XF>{E1u4nAnLwTh3ojHk8N}7D=QQ8CeIBz6|Yrm&;4BS zmW*)Q?JcXBcb8c*TRz&RzP+!!_38O{DxbyKnXNsZUwgD9ky7bhK zf4WwK*Hh2nD@B}tUMDTsvT@6X-b=@>NvBM5n|e*+5L=mLn#C*6C-c7Ag6BO%pWT;T zulk>%HLt{5sP66~?i(hzQ)N%@Q2%giNuB9S(`Of4|1)r2KbBl)S1Wz+)d#1$Vc9Fa08pSbxaWd5;Tw?5}{9{1Ek(Hp z4;$nU`3l}$_n%?ue+IXI4^OB3uG{}1$X2aOV+l%hg|5#JJF9%A$X8|kCXL0%p63WR zPGWcPS1DO-I(N;TsF!8tQg)YfTgrF0Qs4Z?w#H$b zr{x-W7pv|*DSLL;+wg4}H&%CY8-yNY|FQF+_5|awKbDVlt&diTSncaJpPOlz8m26> zS~T(f37ekg8?&C;alh0}{jlrUyHBRS(>7ho3eWBT+G{Mv@}J=VSJ%6oH*ZURTfEiL zUAT2yM{b`)GDn9kQy*)zpWgZU>nke^fhc{BW!}cgf3))A@Nj?mX937M@mS zd$UtzesEMsz!rzE;JLO#AM@LkKDtfVzp{6}*LRk#yNenO z|Cp|PWz{z;IQH_r!@=9~wVpCf=ILR--+7*=$5QrKL4o7iE{$bhg)X4Z;n^uv)ct2T z8pnENi>=lxZSU?U5k8lmXB~^FoNGPhj^X>;YfDOkHdXhU&ArGvb%|Bo{QUHs-HO{g zlX~4#0~_oWW7hYVcK^uRBG32Y^WL@h_E#lTFZq4Jp(8FV_~y4B=G&I9v^TE#8}7RG z>e)4ur*}O%7jJd#nG*A%-(Hi9I4r{ynm8<9hTOe-W0GfN*?)#MFyj51O zFqw5t(2{Q-op!JHW)L~8`Ez!@`kW_oCLgzD4cva|Nb!>I;o;(&j(PSj*J7!Zco-O3 z+|x60j*xLv)>nqYS;wZAKJG0o`Te>w_mA;%Ke>l$PQ5G7EZ1uE|Fbc;$=_Xp@xaM9 azXDzLrtxj(g3V}-(vX>5BErG`|4jf!2T{HN diff --git a/doc/src/Eqs/fix_rx_localTemp2.tex b/doc/src/Eqs/fix_rx_localTemp2.tex deleted file mode 100644 index 0b524adc00..0000000000 --- a/doc/src/Eqs/fix_rx_localTemp2.tex +++ /dev/null @@ -1,9 +0,0 @@ -\documentstyle[12pt]{article} -\pagestyle{empty} -\begin{document} - -\begin{eqnarray*} - \omega_{Lucy}\left(r_{ij}\right) = \left( 1 + \frac{3r_{ij}}{r_c} \right) \left( 1 - \frac{r_{ij}}{r_c} \right)^3 -\end{eqnarray*} - -\end{document} diff --git a/doc/src/Eqs/fix_rx_reaction.jpg b/doc/src/Eqs/fix_rx_reaction.jpg deleted file mode 100644 index e656cd8362ec846c0c1ebfc76f4bbe26934d4c32..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2896 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 E0K~p$<%PwSRFvdYWaQ-K{vTlA=3o?I{K?2D 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 diff --git a/doc/src/Eqs/fix_spring_rg.tex b/doc/src/Eqs/fix_spring_rg.tex deleted file mode 100644 index b772aaf652..0000000000 --- a/doc/src/Eqs/fix_spring_rg.tex +++ /dev/null @@ -1,19 +0,0 @@ -\documentstyle[12pt]{article} - -\begin{document} - -$$ -{R_G}^2 = \frac{1}{M}\sum_{i}^{N}{m_{i}\left( x_{i} - -\frac{1}{M}\sum_{j}^{N}{m_{j}x_{j}} \right)^{2}} -$$ - -$$ - E = K\left( R_G - R_{G0} \right)^{2} -$$ - -$$ -F_{i} = 2K\frac{m_{i}}{M}\left( 1-\frac{R_{G0}}{R_G} -\right)\left( x_{i} - \frac{1}{M}\sum_{j}^{N}{m_{j}x_{j}} \right) -$$ - -\end{document} \ No newline at end of file diff --git a/doc/src/Eqs/fix_ttm.jpg b/doc/src/Eqs/fix_ttm.jpg deleted file mode 100644 index 8d9fac3fed5340a7a37c19f213bf45f051561f2c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5869 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 F0ss-+LgxSg diff --git a/doc/src/Eqs/fix_ttm.tex b/doc/src/Eqs/fix_ttm.tex deleted file mode 100644 index d5a3238f82..0000000000 --- a/doc/src/Eqs/fix_ttm.tex +++ /dev/null @@ -1,15 +0,0 @@ -\documentclass[12pt]{article} - -\begin{document} - -$$ - C_e \rho_e \frac{\partial T_e}{\partial t} = - \bigtriangledown (\kappa_e \bigtriangledown T_e) - - g_p (T_e - T_a) + g_s T_a' -$$ - -\end{document} - - - - diff --git a/doc/src/Eqs/fix_ttm_blast.jpg b/doc/src/Eqs/fix_ttm_blast.jpg deleted file mode 100644 index d4ffe05f129715572923fcd32c547b64aee902f1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4449 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 diff --git a/doc/src/Eqs/fix_ttm_blast.tex b/doc/src/Eqs/fix_ttm_blast.tex deleted file mode 100644 index 6871ed5cc6..0000000000 --- a/doc/src/Eqs/fix_ttm_blast.tex +++ /dev/null @@ -1,13 +0,0 @@ -\documentclass[12pt]{article} - -\begin{document} - -$$ - {\vec F}_i = - \partial U / \partial {\vec r}_i + {\vec F}_{langevin} - \nabla P_e/n_{ion} -$$ - -\end{document} - - - - diff --git a/doc/src/Eqs/fix_ttm_blast1.jpg b/doc/src/Eqs/fix_ttm_blast1.jpg deleted file mode 100644 index 1106c627cbdc5c8d48cf9272513c799e4e65524a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8657 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⩔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 gAF$<%PwSRFvdYWaQ-K{vTlA=3sDSn#{;3 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 diff --git a/doc/src/Eqs/fix_ttm_ce.tex b/doc/src/Eqs/fix_ttm_ce.tex deleted file mode 100644 index f787590b8f..0000000000 --- a/doc/src/Eqs/fix_ttm_ce.tex +++ /dev/null @@ -1,13 +0,0 @@ -\documentclass[12pt]{article} - -\begin{document} - -$$ - C_e = C_0 + (a_0 + a_1 X + a_2 X^2 + a_3 X^3 + a_4 X^4) \exp (-(AX)^2) -$$ - -\end{document} - - - - diff --git a/doc/src/Eqs/fix_ttm_mod.jpg b/doc/src/Eqs/fix_ttm_mod.jpg deleted file mode 100644 index 7cc67200f96bae3be7633d8d0c52ed76eabd1474..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10179 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 diff --git a/doc/src/Eqs/fix_ttm_mod.tex b/doc/src/Eqs/fix_ttm_mod.tex deleted file mode 100644 index d0a313e676..0000000000 --- a/doc/src/Eqs/fix_ttm_mod.tex +++ /dev/null @@ -1,15 +0,0 @@ -\documentclass[12pt]{article} - -\begin{document} - -$$ - C_e \rho_e \frac{\partial T_e}{\partial t} = - \bigtriangledown (\kappa_e \bigtriangledown T_e) - - g_p (T_e - T_a) + g_s T_a' + \theta (x-x_{surface})I_0 \exp(-x/l_{skin}) -$$ - -\end{document} - - - - diff --git a/doc/src/Eqs/fix_wall_colloid.jpg b/doc/src/Eqs/fix_wall_colloid.jpg deleted file mode 100644 index 8168d3a792d2e4dbf7d4df3e767771f61a57da84..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17879 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 D9dxe2 diff --git a/doc/src/Eqs/fix_wall_colloid.tex b/doc/src/Eqs/fix_wall_colloid.tex deleted file mode 100644 index 3ed716c263..0000000000 --- a/doc/src/Eqs/fix_wall_colloid.tex +++ /dev/null @@ -1,14 +0,0 @@ -\documentstyle[12pt]{article} - -\begin{document} - -\begin{eqnarray} -E &=& \epsilon \left[ \frac{\sigma^{6}}{7560} - \left(\frac{6R-D}{D^{7}} + \frac{D+8R}{(D+2R)^{7}} \right) - - \frac{}{} \right. \nonumber \\ - &&\qquad \left. \frac{1}{6} \left(\frac{2R(D+R) + D(D+2R) - \left[ \ln D - \ln (D+2R) \right]}{D(D+2R)} \right) \right] -\qquad r < r_c \nonumber -\end{eqnarray} - -\end{document} diff --git a/doc/src/Eqs/fix_wall_ees.jpg b/doc/src/Eqs/fix_wall_ees.jpg deleted file mode 100644 index 0f99dae8f717cdf5456b943a3ffb7e246a1078e5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 106786 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 diff --git a/doc/src/Eqs/fix_wall_harmonic.tex b/doc/src/Eqs/fix_wall_harmonic.tex deleted file mode 100644 index 86dcb80a0e..0000000000 --- a/doc/src/Eqs/fix_wall_harmonic.tex +++ /dev/null @@ -1,9 +0,0 @@ -\documentstyle[12pt]{article} - -\begin{document} - -$$ - E = \epsilon \hspace{0.1cm} (r - r_c)^2 \qquad r < r_c -$$ - -\end{document} diff --git a/doc/src/Eqs/fix_wall_lj1043.jpg b/doc/src/Eqs/fix_wall_lj1043.jpg deleted file mode 100644 index 303743bf3e84dd0631cc4f1976aea6eaeaf90a26..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10996 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 Y)CEiH-0gOsZ`3FKhG-+1jQ@WV0Hf%6RsaA1 diff --git a/doc/src/Eqs/fix_wall_lj1043.tex b/doc/src/Eqs/fix_wall_lj1043.tex deleted file mode 100644 index 06fc4dd33e..0000000000 --- a/doc/src/Eqs/fix_wall_lj1043.tex +++ /dev/null @@ -1,12 +0,0 @@ -\documentstyle[12pt]{article} - -\begin{document} - -$$ - E = 2 \pi \epsilon \left[ \frac{2}{5} \left(\frac{\sigma}{r}\right)^{10} - - \left(\frac{\sigma}{r}\right)^4 - - \frac{\sqrt(2)\sigma^3}{3\left(r+\left(0.61/\sqrt(2)\right)\sigma\right)^3}\right] - \qquad r < r_c -$$ - -\end{document} \ No newline at end of file diff --git a/doc/src/Eqs/fix_wall_lj93.jpg b/doc/src/Eqs/fix_wall_lj93.jpg deleted file mode 100644 index 18e502cfbfeb8b63f4b9b0df3558f8192058273f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4883 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 A@c;k- diff --git a/doc/src/Eqs/fix_wall_lj93.tex b/doc/src/Eqs/fix_wall_lj93.tex deleted file mode 100644 index 7372e55c15..0000000000 --- a/doc/src/Eqs/fix_wall_lj93.tex +++ /dev/null @@ -1,11 +0,0 @@ -\documentstyle[12pt]{article} - -\begin{document} - -$$ - E = \epsilon \left[ \frac{2}{15} \left(\frac{\sigma}{r}\right)^{9} - - \left(\frac{\sigma}{r}\right)^3 \right] - \qquad r < r_c -$$ - -\end{document} \ No newline at end of file diff --git a/doc/src/Eqs/hexorder.jpg b/doc/src/Eqs/hexorder.jpg deleted file mode 100644 index dafa25cabec6733d1f5714501df3098b937a50a5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16870 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 C%3N3g diff --git a/doc/src/Eqs/pair_adp.tex b/doc/src/Eqs/pair_adp.tex deleted file mode 100644 index 07e441f3fa..0000000000 --- a/doc/src/Eqs/pair_adp.tex +++ /dev/null @@ -1,16 +0,0 @@ -\documentclass[12pt]{article} - -\begin{document} - -\begin{eqnarray*} -E_i & = & F_\alpha \left( \sum_{j\neq i} \rho_\beta (r_{ij}) \right) + \frac{1}{2} \sum_{j\neq i}\phi_{\alpha\beta}(r_{ij})+ \frac{1}{2} \sum_s (\mu_i^s)^2 + \frac{1}{2} \sum_{s,t} (\lambda_i^{st})^2 - \frac{1}{6} \nu_i^2 \\ -% -\mu_i^s & = & \sum_{j\neq i}u_{\alpha\beta}(r_{ij})r_{ij}^s\\ -% -\lambda_i^{st} & = & \sum_{j\neq i}w_{\alpha\beta}(r_{ij})r_{ij}^sr_{ij}^t\\ -% -\nu_i & = & \sum_s\lambda_i^{ss} -\end{eqnarray*} - -\end{document} - diff --git a/doc/src/Eqs/pair_agni.jpg b/doc/src/Eqs/pair_agni.jpg deleted file mode 100644 index e0842225c6769d15fd38205c20cf52d606f29dcd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15178 zcmex=oIr{vTiv|EDQ{cwTw*63@n1ILW+itY{G$w>`H|qMvW5}awt1(JSZA; z@q>zSQc)8pmzcPOq?D?fx`w8fiK&^ng{76Vi>sTvho@I?NN8AiL}XNQN@`kqMrKxV zNoiSmMP*fUOKV$uM`zch$y26In?7UatVN5LEM2yI#mZHiHgDOwZTpU$yAB;ba`f2o z6DLnyx_ss8wd*%--g@}x@sp>|p1*kc>f@)+U%r0({^RE_kiQrin8CgR5fG1|`Ad+2 ziIItgg_(sNL#FfEu$rZc*x#hF|XSfmipW(}_tk)|T7IkSbtct%i?Rdn$ z)4rc#I`+I|;^~+&M>F}xMt0_v2j6JkTDO>O;*z+maFq^Sg~}(#V^?w7pW3uXcKP|t z1@5Kw=a#RSzb$V2l0L?pUtDiB-*jat5eX9B>S=jE@&rH%~wF>~q#WIYz}OiM+eK@3kG&*5WS z(jB;UcJPkNi>H@f-BNg3i`8ChXTqK@&yx$U_ZNn(V4UbJ^I^$_T_;7lBxU`anNKKu z7wunl+vEDAyYctBYsI9U&L!`d#O}#>GUFrlOxCVSU-K!pZ^^bv{;`ZCsN&D|^ zpE75`w@A?gUs&C39snMxdHfVb&f95+@Vv}dsdaio%y;Ye-Kbn0%{@vHVGW&VR*7-iO zUa)QH6Y87fws@+{hiAKbl`efc?$gKX^q=AF^~AYLb_o7V>^8LEp1g&@fmwZN@pt=A z;U)KfGv2L#@k4`o9VmVXqO&zw+n4 zpFK}Jg=iYn&$S-D-+@0Lm#>? zxbma-KPC5w|7S=H|IctKbM?9fOkEla`0O85rynRUd+_*exY)JhcjGFqw*UR)TPAwE zCLqX$xw44;PnB-HWt@lj5YSb6JiL2U*zXB#jF+B0 z?7dm9S#M*H>``}?NsDdL*ICx{zA&G)|8T9{^PKwZE2ga1@{*@a71s7syWznu88CN$ zOW7)co3EIEG{OwG*pi`m#J&8gk)yJvfSL9cNCv+ND)tOJ8fKju62R*FT%-g*D_nT?0Njr@u0 z$quYV=156Vd)+#>=l{Ik&Hm4jV7>mYJS#)#l|WYp5hN^nBszPa$`w0>Y$?{Y*CuVN zDiQShY}(WF>Ql;^^zR4cr=;7|YHwe!{-NqebHK$tfsfV-y*inCHGiGzR?oLmVH1^3 zxiNE!)N?X7|M;?i?^JfbNW|-^8YBND_ab9{u6ixIW`f6>jhpo(PCaJnk+WFyVo&(W z{|u=%yK__L1xgV2u&e zsVX^X>i9=-k@t49OQN3l9+`>@vG(3C`?SD}?d{t+^%WP`9w<&Rn&9|E@ZPiu3=9kj zd<{Vt7+pnA@4dE7w&A0H+m-Z&Tg8*?_P-2ayb>6*{npm=zohn<{%2@<{-5E=s#oIH zZXW6~6E9p~x@4u(apIL^M8Zl*ma3qO4sr@M=bQG~AH4gYfg^6GzUv6TWu>RNgiEiAv54nS6Ot@A0j^rH0$K%qng3oMmzINMO(A z2k9B#Z8eypwEB8ioLrspZTqJicW&%?xp(cl@SKUi4c=r=n;*I3%0A`zj5GSIZ8OtF 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 BOnv|W diff --git a/doc/src/Eqs/pair_agni.tex b/doc/src/Eqs/pair_agni.tex deleted file mode 100644 index b9aa7882fc..0000000000 --- a/doc/src/Eqs/pair_agni.tex +++ /dev/null @@ -1,18 +0,0 @@ -\documentclass[12pt]{article} - -\pagestyle{empty} -\begin{document} - -\begin{eqnarray*} - F_i^u & = & \sum_t^{N_t}\alpha_t \cdot \exp\left[-\frac{\left(d_{i,t}^u\right)^2}{2l^2}\right] \\ - d_{i,t}^u & = & \left|\left| V_i^u(\eta) - V_t^u(\eta) \right|\right| \\ - V_i^u(\eta) & = & \sum_{j \neq i}\frac{r^u_{ij}}{r_{ij}} \cdot e^{-\left(\frac{r_{ij}}{\eta} \right)^2} \cdot f_d\left(r_{ij}\right) \\ - f_d\left(r_{ij}\right) & = & \frac{1}{2} \left[\cos\left(\frac{\pi r_{ij}}{R_c}\right) + 1 \right] -\end{eqnarray*} - -\end{document} - -%%% Local Variables: -%%% mode: latex -%%% TeX-master: t -%%% End: diff --git a/doc/src/Eqs/pair_airebo.jpg b/doc/src/Eqs/pair_airebo.jpg deleted file mode 100644 index a3259879f1689af00465286b11d3b17145a2fd4a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9380 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 E0IZHD5C8xG diff --git a/doc/src/Eqs/pair_airebo.tex b/doc/src/Eqs/pair_airebo.tex deleted file mode 100644 index 6c40b2ef58..0000000000 --- a/doc/src/Eqs/pair_airebo.tex +++ /dev/null @@ -1,11 +0,0 @@ -\documentclass[12pt]{article} - -\begin{document} - -$$ - E = \frac{1}{2} \sum_i \sum_{j \neq i} - \left[ E^{REBO}_{ij} + E^{LJ}_{ij} + - \sum_{k \neq i,j} \sum_{l \neq i,j,k} E^{TORSION}_{kijl} \right] -$$ - -\end{document} \ No newline at end of file diff --git a/doc/src/Eqs/pair_atm.jpg b/doc/src/Eqs/pair_atm.jpg deleted file mode 100644 index d2e6d704e930c2def4801301c928998f7542f54b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5474 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 diff --git a/doc/src/Eqs/pair_atm.tex b/doc/src/Eqs/pair_atm.tex deleted file mode 100644 index fce1db99b8..0000000000 --- a/doc/src/Eqs/pair_atm.tex +++ /dev/null @@ -1,9 +0,0 @@ -\documentclass[12pt]{article} - -\begin{document} - -\begin{equation} -E=\nu\frac{1+3\cos\gamma_1\cos\gamma_2\cos\gamma_3}{r_{12}^3r_{23}^3r_{31}^3} -\end{equation} - -\end{document} diff --git a/doc/src/Eqs/pair_beck.jpg b/doc/src/Eqs/pair_beck.jpg deleted file mode 100644 index a6da8a87d1c5f38313d1d35df5fdc618056f2ace..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9451 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 LlABaI{{Kw?!3$@z diff --git a/doc/src/Eqs/pair_beck.tex b/doc/src/Eqs/pair_beck.tex deleted file mode 100644 index dde6b6ef51..0000000000 --- a/doc/src/Eqs/pair_beck.tex +++ /dev/null @@ -1,11 +0,0 @@ -\documentstyle[12pt]{article} - -\begin{document} - -$$ -E\left(r\right) = A \exp\left[-\alpha r - \beta r^6\right] - -\frac{B}{\left(r^2+a^2\right)^3} \left(1+\frac{2.709+3a^2}{r^2+a^2}\right) - \qquad r < R_c -$$ - -\end{document} diff --git a/doc/src/Eqs/pair_body_rounded.jpg b/doc/src/Eqs/pair_body_rounded.jpg deleted file mode 100644 index e7136ddd20c2acea0e89fa8412497333f15cb541..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 146978 zcmex=Bm<7<_#hv=|r|I2c$Mr5IQl7#J8C z7#QprrQvKhMhymLus9O~LwhCz3z*Ho;Ku+4Ak#p4pfuA0CYTE5+y%@qHe)SF@&C6B z76BRgCHch}`2`BbdIk&@PM*FjAQKrFAZ%5TItGC&vOPEZ88)%JY~Y;n=7&?=|3^#? zp3ctk0YUz5o<6Q1k1#M9IJ!8wG6^s+eaSj6mgGf>~n7skSE(!^9W?*1E!oa}5mkwcH0kM-H>?a_0QAA`E0|Vn1 zkot5mn~4L&PJ*yyK9XZ3R<7E#dCS&q+js2Tb?ESsqsNY)IC<*QfcOl}UxExwj7%&n%q;96e=#zZ zgFG(C!m4P(ZXWYowZ;xuvL#)F*7#z7xMlZq~KiK&=8RQ(9@8rWyVd8~;n zpTRwb@YihyX9kdmD8c`4GdNSCAFTKPT?Q70y#Kctc$gU(m;{*x8SEMU{nKDrz|_FS zFk~tI{}+aXCoV!gVQ2Ao@%{%3>o>fA)BI>J|AGBm{xiG{{^0%~yl0R1!>=FHnjiLe z##vw7W4!j&Jjq(O-yZ$3TQ9F)9zFfiva2R{z5ScM9NTcde0jVh_la-i+G2rg-AY$o z==Jd0$`QCSYSN_Qsf+v3Re=|TI1`qHOgJrdM2=f&k?4^vGgt}T1|`TQTd-~TuT|1)@s z{hhr3!@D2Z{~7wPE!U_&{C@v~iSl12=HImb&%pP-ZU2wI3|0LH`+sOn|0CS}t?S3s zhwGc?GyP}C^}l)l(fXtQ65E!|6aB#7v`-}?>VD_f?-xsQ-H$|V%8UwKbL`Q_FMs(x zuY8SO+8Mcc)5cwM8YWt!$VCq}G z^5reP*(4D!8Y z(4BWJ?M97lO`KAjIImafM~hikHvFhEdGs`BYt`jmtB{pPV^5W8c^UKs?Vd6zeCLnb zng1EsdFl_!Y|ZbiWBB3taR2S(LvhAG+CMrUiTx0d)`eSe3_@i~&*G=B@ zWk{vmQ~hxLaIE*CSq@iBd!r6rvOb#~bNS5_Z`C7{mu_8q=R(o9sTc?J(GRX zeAXY?NB=WOZOs=szoO#z(SRTP57Q6(x6Nbw7=F~hM_$~fyg0FZ<>3ea8QSW3{_rk+ zZKv_kZ-dEe?%l6X>b^<7v}LwO>$%Mo?7ud0Oz&u48GDQwp~hRLJm2 zZPOOCF^g{hbuGDf^_xd86AdJ!`1pnUj)fk6sCjLD%OR~x$C3*ws{V?6I2V!QXSO!R zPMEQIn%F#b*`Bph5?P@ex9(ftbl5Fu&+A7YODm_zv$wUzgnE^1lxX#SbtA?%OTIVw zKf}Sx@gIElv(~um`Vsrvqayy>nZJF15>sXO9(^|Px9`7G|4cqiTbrF;z9T9=wj%!E z_Iq|8=dPW5+TG}&?eVt7kv_t?ESjeG8^2k${GBH+-u$gw(4XsZu&|%N^0?*d?_NLB z`>-QEZB_8x$VaOKTD6LMBhQ(RsV!Nqo|>vw#XXZI1$n-jyh}e!?V$rJ z12q20q1d0;zm5LSz`E@3wEd~`W&XJQ$WQ;U``ezsEB=Ikh>O;)?>qTh{@>YshCgmT zoZmQoR$s4tht8MtUHb(V%|3je?~n1CeZ3}9t@m30GjOKf+rH%XdEsoS+|E0~XBW>- z)V_H1(Zjckr#&eAv1ir3{J1F_b_So>Ah_h?4;wRc;WwGdS_!IAB8F29^7cvd_Jn>g zEfhTVu&|;^cJqO&%Y*vliWhDC(W53U@2=f)H|A7@Ov-Z}HLVISfz>vqHbKj+c7%3+ z6D_pJPwiglSCQib+F!GDG~=RYbRJNvQg^dYJ3{dxN& zYn*<>Kl;zW@p@u~zvKRkU(Uvd`qt)bjc@<%cIejvU z>=&H%*G6-99lbD>>q>#a!eFt5VFqiR=Bcg82wwR{yISjN=Bm$2-PXp~XkS_!w3XxP zO8$KB`N!s2P1U*)CDC!7KUg}dB1dWEN!7T$Hl{TxE8RlU1KqrNTaR4(`&_ATp~-r^ zQ2iTO53Mm93vG{{-8*-$diTzUTeog)^X{HKyEBNpy1F88$*js}6V?};O@DeZUS9$J;N{dKua z9$bd=Ot>Cr9_G=T*t694YEP<`=aN^h=Dy~eihl%`hh1MEy(sOfRo7Ivg`xMZEc=;d zt-agv)5)7^_jfP4dh7c1C0BZgZ3o%^zXYwZ?KSHkY@IJ)CsD)mpP?zW?$&(SKcx@$ zx8GB}_DA)%UB%_YavXa<9&g@b`Dn}bkH?Q#gddRSdpk+C+V_f3bo~$iJ<$teq?MMj z7hLj`l)hOP-lHtF)6{35R^4^GW2u$g)8sfGO_Mh~9(*`?qln65y{Mge;qgXiGOtd` z=GpKydtF>)ajiYaPIsGwkM3k%TRQ2|nc|;`A4OwrbnD;Lu*O`9u)6fDUDxK)GG_ki zApuje!b@KUEI%6-vZ&tvKf{N#=WqNUaP!|NejNWc_@nT{yI zmt-dVNN@cxWqJF`aN~d1AL+z;g(&+Aa$Gs1Rq&5n?^t-yRG*N7`d8nK4G+21Z2557 z_J~%8>g=fuwXxw<~~ zoBf>X_#bNNZ}$GSsy}$be$)J;=Wp(QsNZhKfAh!YZ<>FX|I`2R{h%DfrQAQ3A0FL5 zwol}mjrfPG`$zZ5ewa2nTde(I^xt~-ALm8;_Abx3kZC8sch9A_TW@T6vBz`e>+oCW z_DFXhc{-zC#Hh>5Uwt}DK}*5(rJBzA$I@-mCC}?E?I6YFL1hrMmb%R^HNOMYDL_%LJFl+4RZb<%`&AKHXjvqwv8W8ULEFHvs`g%qe7E` zm$7@|fpclgpcZBiG8lGr1ErCAw$P<(|o#eY0j|oi+LD zYira0;QC|z1{>kuIrRr0-e=n<`@{XfKdCJri?iXSmQxh(otuhV}9?;pEACO!ZrmPMbw;rl(y*!p0C|o4U%Ght`Bv`twe|Sl*iTp`vDw<6<|< zdX|)s=bh8^%~nngIcq!D^5U;0^HOJi%-L{bjmuoAt)JeUZ#7!Os~NP|#!V`8^UTEM zo>o8G^}o-Im<6r04)|LGa=KW{b7XC+w{~wp&qq9=4qyEmRllwcJ^!D;M=nx1rz_V+RD``gRQ56b zh_UfH>Eo9Ve%xoQe(Y@G2AR@>rk~{BYOT}epO&;KPw}+z9Q7?LKF$brnr3XedWyf% z>Y%=4j+Dx}+|I?Vede4k-}YJ_i;gyW(6!^tu4&5RvkTg#p2+xn>nwSBoWJ+LBcnRy zhkFi-cF*;(P4yRSIQU$mXSd2~tDALVmiq+*4nHm|T-+VB^mpmU{BJ3Ld+hV_xoXTm z#veQ1xSzp3%bxvqWad4yAEA%p<$nkttQY<=V@tnKr}HkXFM>Ji19b|v0gQO zYxCj98g9!s=N^-o6|h!h)gd8^4V6obZ5GWwn4H>ma&uIO;g`i;YyPe7?2XcY^<#(A zOSkP;Uwa9xnWBApdDvRLietqs|5kKqEa{V^RlnyJ6>L1?lng1Nm!*c0TbGD$ut0$i{av_EyzcCNmO9x#B|j#nRxhvk{OEeqKFJ^6 zhwbb>=1yC=A~NgO5vk{$CB0gggZE3_Tf6M#t#x}Y-H|js>+QE;|J7OF-krOZvEiWk z^aSmv6>J|W^VIejhJKJpe^W3u`|{Mv%PVbcO{IJfEz=eb)4H>9b;sIJ*O1kg;@xvT z{^+vUQ}VR?XySu~?t-0@*G6%fgvsfK%zg5d$0#DII4^j4>wku{_1lDUe8h|AF=sJjps-HBe%-i*KXy$()v7B*!^U&2P^tI=)dGh>H zlS5XX7w%lCRbudAZlv23^{BNL=hiIr(>>><{<-zh{2%)IZ<~MD{pb$<;s2k3Mfq>* zpZJf5y_!R<*mnOesk^*OZ|R5Q-;zEQ_Wft@*?wiKF1!2H{6DtUkE&P8>Icpa>Grz* z$9usahb`H{w(Af2OW#gARrkj%eD*UDF|9o>3hqT)gif_dOSURCoUxR(ciA+yR*uKX zp?l)QL_%xi%@B9=RW@Me%dx+R;l}8hr_;E*u-cg zulmoh`O3nuZQ>$xG#+QA>g9!Ol!*Fq#<=GG;`$Fh_CM6$zdiih{Kxf2@^2;oGq5uJ zXK3pF6aII@Kf6EiAEwQH_%{Dx-o(oChx>0jKXmAN?sg?l`r-P+lXI86`23^o+Gnp> zr%oT6#ozc(BE&J)5sArOF*`aQ7t7pcpYW3P_L%f}mM@zAk8zI{rjg%ME|J-L#PH*R@#sbqgz z_6cjI2K%1#(lw4(_CMHL{~>yRkNk%AZX5SUjsF=~_Wx&SDtdA2%YErOk&5i2v#z(A z#NR4@yuZ~Zc=-=EU*kvKKdOT-mY$71T;+b`{9A8drh|I=UuMS&KXhBWD)W0)*vgNr zdbyt-+}YQb+r%WYVUd#llnTR{m!== z`N!mM&Of^U!%2HaJIT7^@mrT4is#O@GyOYlpKaZ#f1(%b)B8K>1b-}lI9EI1ijDr# zSMzj!1TT9bwQlRfe3AQ-du$(hl$Ku2*U9<%*ZD}D+;snsrR(OdzWsCOJ9GJ|7mgL` z#YT(r9M?S@b}W2x+e(Z2%m*88SX?~%^xv^LFCCMzQ!6SSY`Wv3>Q~`;=}_WR&8Oa? z)01`;#mI%vNcv!@R(zUgv3$?LL_>>{4_`hmlq{NC;Uqalv15vA@2@G(zplEW^h!<9&mj{_F?SkG&0vihQ~J z*sp0b7iZ48-fE{dSM79)RPOa28_Si>xsNOqw_aW||9G7I$C_V$QX| z0SB%hPPK8IdT6eWSh>@dLW?Y|eE!CBpZ+r>%be$KTd8G|dF60YMpDt6&)hsltDPBJ z&#g#}k34ei^y~2XrxN7MnP)uvV?A@%{P>frf>v@|4_(~b7TvS9XK~Bo8HWXb|49B& zv1Yg7>FiyXRz?f*@am)~Ws7zl30(O5db~w7Xxs%y!wPtNVQG zZOp?{fA%H*yLr^cw)yY-&8I%>+%9l+s_MJoqq_`F6uq*Txns-1?nBQdpGKKnS*$g+ z=(%mOTjBIePcQ!3&R3{rd3kB@>#0U{^2=8FPg`o*dDP!_ZTDeEPp>sE>|_r=cpYc7 z)N5MWT)(KT2JhlC>JO^y&yWA1s{h9OKLg92zx{UXKidCsvHzC*QGR3|(+}Q<^M(F+ zet1=Pp`Pd69_M9$JU{+1{^Rvy`ZC{#uk8hV*WY<w1Wto&!zE0d~ontkHKPyb{NJ^u77Z=1Bi;euZy!Jt1chCa3sBAPhGi|+^|#JHWbdyj zT>I~6Jl}#JvcJ{-os;rgT>0oP`yo61kMT`k&WrvD{BiqZXPxBhk1sF0s8jeT`u)gx z<{!o0*Ggr@E+3s9$NAx3XZ{-ZW$&b1mp4vL+-Oqaw=aEG;zx;`8?SCSn4J0W zX|VRgKFQMsl40S&?466_1to(X*_@W1`)tRFz_}Wir}FTzOMAcmnVQO9Z?@hk#(8?G z1y^5*MRn`lnCrr>mwzowpI>N~AGb8ruVA^K2lGqa*mGQP%8G}Z zrGE6pzh3j7Ve|V#(d%#V`~F?I&PFTk$IHckSI>!{afer z-mb`bwfxY;(<^?gcD(pidTmKY@{u6-<+n4Rhgl`n_U+uT%0hjvjftXHjmwTQ%cFiC zUhDK^G=5BcVlp@KSg6Lu1E;$;|LW`IytK4)WpA%fi1vBT=Bd1^ug+6zi*8%<^F^w~ zn(LActy4l}!it@B4n2PDdFQ2X8U$kMzRn<#huJ1S< zbJuzKt@GtZ$9gs#X*h8z&fw0cqlpW<7B^0<3Otrn@MBIWkMXR~)rlKI4Yq77edzya zs*Y_;8QO9NXqbXy(e;RwlkqdhC_Y>$H|jbhYa5U8Nhnwruz^`#;0{sSDeV z_z6Vq2v}?1H07y$@BW8B_kZx<|K&0N&G!Ec?fSm|86KBjNRt2X=l%~B_P;9r-=hCB z9G<@HKf}je4E9(QmoUDw-+cd%$nAfeKYxe+ag1-3-(3E-@`L$f^CQzQn%WBfR5Xoxwf^}`tU8g zwd-Gt2S&VyL8lMhEYmWbJG1{b6~V$@}KAg){e;rt^eNWLP!v^ve{^ zg7y{(9=+s_Ll=%d`*}}jU2V&upt;%UmTIwYKUT~#U3vJmWN)0(`5n*YUOZg!FuC(s z@`sI6GLsA~R+(fb9x1KA<}dQGWYeu3YwDPlPGwyJMLiT5Os4 zx3^|~dxg`U!iqhI`JEzc_!70Yel(g}bEx32*^-1`C(^1>*UI5pIKq`cW(dI{YT$3WXkjYQ>qELR1+)S zxkaA$=*rta!hZceSZDXqztR4o)`z9bwpOlq^-WIhV@aK~zrf2~c?(x&P0n1o!nCDo z-^Seh{8jgU|NIv1uXE(VLO;`&wdLw3KSw5Rv^#%0@#)N`UkvB$-@Q80#!SgHx$kt$ z^RMkwAARr_TijK;Sl(FkjNN{js&88g1rI!%ac7ss9((d(N}UxYNg#b?73=M8y~WJ`-aOV zdyW0KPkZ;DA@EB6x+QJbP8~aTO)@X<-MiGTd$;ass?Bogm3=Mar_SGe`1;XDuY(UK z7Hr9SWN6WKx!1}>Bd~d8*w&~?Sq97f=A>Gl^VK+Nc58Fml#HuKLYF$VYE4~zeI=Jk z#-)~3p=-mIOwqiw)Q>B8uGi#AEs7GSf~HLB%DwT=(>^=Dzh1Qd!4v+r{aec4*#2i= z`T4{6!~1^{s}Ie3H+^x%?|)pnzujUh)*U`H>;2L5j9Js{3@_TK{?@Ir`EYdZ{*JGA zW8!bVFnqONu*Pu(ud?3<`wr7>*Y+r9&AQ(7@ZPQM~_YEWy{&*L0V zCD&TrtQY#o>!ZhSc+hS0!mh)i?YvJbZf(tavg40mcJn-=Y0}a&5(|E0*|<(k`@z$H z>0o+gnE#x|6;(p>@_W}dO^ZD;b;E}~<@TZ+u|zAmbE}ReehjhSzPX0itN84vGh*z5 z&g?wrHBWt<(c@;Vbf(}&Px$HiA2QYdi10sFoBwEj|9^%L?&ohcy$-cA`#UrI=sm?B z#@Uawr|iB~Be?8`@Ue{*(vRH_a?k$HVC7hv_~5+wtEjTw4{obuuPk|OeO~J2hgkjg zE&cp2f7Rbj+*skK`QVRQZF~0XnXxh}t)^y$^_iPIJaet*UU=8qmi3;Y3-#nz@|Xoi zt$B6#p>a&NUYjtd%(~*EHFf5k@og2G1t)txd_FDB^s|=WJpReAX4I*k-YC)a<9Yi^ ztyjyGrVBo_+d4Bi#K1%&@JPzdK5Ox)b>=o*_B(EU;Lm^-un3C(!1~+u|F|93Rd|0} zbD{phtojeW{mr+;-**0IU}gCze#^fn@%q-+Z{@$0{+(8mogFei@MHg5#z%V@%vRUg z7;TR#ecoZi|M2!(@u0R_pLpf`g>U?L9r9s&vyJc3DOZjZ%4y5HtFLTbJpIY5-DivM z)NhHbwS1_3oV)ALgG9Hl8^3P2vGeljkESbDURXHu`ts=)Bi@urn;d%j_r{I~Mm}b8 z`^r8}I-300^=YLVlgYH?-inSx+a#~8jGr}+X`Vjo+mAootxTWm@X1B?=}GV`S|@L^ z`oVvO4*}B&HuaUKSRQQh903;_p~n7m?r+#etCc6e}?1o ztwn$QKk^>ka_fG_9_A0zANRN0+112cE76TReYh%ZXXU~lj~~S!a`_Nr9=5AQPUqj* z>0z6;O-(I4f#%De~?^^j*PF!oL zUq#Pq!(&OGJpajSz%hv7E`LMQoUz5r^Vved$ zc`tWu{nGQFx^}Wv&Q6)SI`~M)sm(lbOc7n?Ase}Qqe>QcELmFVHn-wvXiMt*W5$6~ zm&~&9SuOY3W;bWwJgH@TYpd$tN?2`P9<+>K)Gugh*CD^P>RP5t+m2jb?RagmX5iYB zZ!=DXJe8C?8t3?em7&h<--YlShkL}2k;|TrG3W} zjNXJicjxqGJbc5(jW6<>)trq}S0r!N5sO<9xK`@U-5KXsJ)L57%5>q^Gtcb~B^Ar4 z#dCcv_|I@tQchmhpV8m`%>65?FRgVqKNfJV=*?tie^F=2XvxWs4MSJ#*){u!yj}f4 z9{UHY6eyYf~ph`D_@?Xpkr{pn6^#Si~8uzh?c zCU`jLQT^Hrs~aQMuRS(RnR{x%w_+JTxiu>iU+I|Us0%$TxHDBb%wM?S$fK)KAseR{ zSm-NDZJg;YS*XtWINfje$>)*}SFZ{<{Ah||-x;GbVbbz#ZQ8;o!{+Jh&8@Lh)v=ZO zQs~d>Ced}%&s@6e=kkAC!v7gq>;LZl&yalohwl70roTmA#xw8X`_Hg(`CHpZ`Ym?c zn?7z^{jgu))jq=?Q&;|R{@A*|sZJ^DpUB6h(>va7(dGL5;NRl)KZ>6HKBWKf^;)l6 zCl#*!aW=W7-}}exn#7O#_SHvaB9G4G%NL&>cxuz1&(c%;gqPgYW}NmxOu6$zCV@JKoE_N$$-m5Co-3q9MiST zzr5*a%7#U&j;&hTb+WKBOj+~DsVSM^XN$cmDy|(_qo>d5{i}P8C;mlKKg|DeDgI|* zmHIo|{=v+6hWBv#m9|rpDav$aG&voactz# z@>-R^nO}9o19xBkBFlFAuXfm#wLRAg?pEGdQ|ghtY0Yf?1CNbse%l?b^;SD&^h9bTQh!WmCz=9zD56Ad~1xbVjuR~f#@ zX@TEtE>y<9}GFACu>_ldn7U&-O>=+8T`y+w{EQj5&uyjsEOn|IYiLfo1*Q9b3--&^Z4_{I^ZrwQt+R zs`U1Mls;s1B8_t;6xyP2j>4?X%@#{SyINHhJ{ zmU`ww8-7$=JNER)tceTVjCw8pOy_@WIAaaZi?lp_(^DTqH|;rBxZJD9(4t3QWyLd- z4_~q$t$di7F2S|K=2;u}YtvT=E7C+hOnqhJDz)M-`+AP=;Q4vxL;o2v^KXSenE$5! zgZ(4+x3a%oE1q3`c>Lh`HmTHQDsxd6-7b~vRrlMofB%*BZ*$i^D4+cF$+6^&gha29#-Vk}!eM=KQ@u94JoHfev6kOlj+Is=h7z+jOwMs!)_;bk_PQINURJp`|1n(czAVn)`iJ<#qdPyU_8!~4yms;7sH2NyjUV^z z%w7KaSH{Qf2m5)V=nz!WiM+ILjrcE>E59XIkpOspX6YC=<)$@5zo>)kn)~wd72rjSn zwkxl!l$w#L={0#_&vL07chn3Yrp-R}WYvW^|0eyN^Pl0t?f$0n{ersnnf^bt;*Zbo zvi}fr|5lslyf61_imrT(_HU@;H;%ve%5%XF>jy8dZjI32W1gt`XIo)K{*hmM-yiN& z*uHJH>yP+{Dxn)X4hNn3bTVXKWaDxh--uPEpJfhBweiyy#NgBGp_buGbsJAIghPk*Ufo3D|AkaYlUd6*cF)YeHE7>GaWU%7sTTIGdzk_gCrB!%1-TbaFtWZre|Grl)>E5pLfNx!)uqh+MPFSsd?J0vN>VBCf_pe9lKHCwoIwja@j+xD+^WT&hA+*sxog|S$=fpvwBwh z52^pwuln)%@$^5U%OB-;=f5+ZFI_P|?g#hk*T1g3QLYUR{aD`ppCRMDKt;^vyyYLYcWo?PZlCHuef1HolE;tU3uy$mY6P6Icr;haWam|>kXIkg*k{c( z4Jyt06*!-<)g9>|co?BX;i@$fLYh7R8!ig8BPHoUSb)YSbU7?ASMX<@jay_#+ zN64Y1l~;PwIUl}uDwyPF+_LhdmyzGgW1d?shh^Tp_nb%Nv4xlJvA`**lCE1GUG_D( zwsQHZ?2xbSAN2n-u$5ITcu~Ji{Ez7Dhi3CONB$^#9{9n&%jB%mMa6E{%l*y!G-_f$ zT+$Ic^(r^b%uaL5w(Z^-KKhv{$ul4SHeKZP$LeVEXMN@$Vf(B_Z9)n{ER;okuVt0q zv+w-jENpXM)asqwtt}r{w{1F~_c}Do`0$~U1pC{~N{s3@l$R&#iHMaK0`5!Su$O+J)|)*UdLSDlfAB=zoUZ@<|hS z$j)cht&uM;Xh;kFhoE zS6{6-Ec|!*?4-|qaz{?BUhRG>xK}f1)e65k?~ib8E&9iJs_2dNT%No_XZd*UzJu2a zk3aa#r+;?C9_eX2KV9uUbounFrx7;y=7yf^3^CklXwd6nV>JD{_9Oip{@;{8y0@3= zbN}f7X8Cve9_NQ={SLk{<>!A@&+t#=-pgC9^DcIK=IZUy%Dw66aYpsfPopJ4i;sL< zyxuOEBmB^#)OdcKlEspblHGKxt9Epmul0QR$}+fQW7d{r9oveK0zRZ7RL%J z+&)}dvf*Dxz=wEr_Cey|JeJd-*rsYs6X;T|@7 ziJw!_=Oq{PcUa7tYN{2Y`ewr(-?`5vtb(RW_$}43wVLb|lx1_HBVhHBKjpI%3oaf? z_`J^i5l>ijdn=Ef)D)v0KGl?+t}$lvTvK`UxaAv8y?A!RMpcxnBFeHSV^zVFRN-%I zdmf{#`TaD%yPms_y(a8p$yw#c`w!1=wHK9#8$i*$^yXyo#wD*+6TF3qty*ulb zRqFJflD|&JE{FX)zjOaq@v@CaE5B)X?_inda(VHymlsPjuTIh2^@qdPyyDpruf7n<5U~c@EZ267x|0Mo1 zG|vBX_5$O72A<;o3@oqyGc1ny+x4H}!|^{n{~4a;HP|XYjDPd>w@QuiN0)i(KU6>1 ze=Gh`|JeV{?6XGk0)MoBWPUh*Xr9Ku!+YkPi~eip8+|Csv~Ts_$>qh_%THEjT$fLt zSDkG>%Y2dqS2owwg??)kgVtnR{g$;yQFB$PW$Jm~(5@`wr?Z|dTQ+ye&c$gx&;6!6 z^$Jz=3tnn&B{V1Lso&z|L35US?oBlJS{juXuw}00mG1AUruvJul^q~UubDqS|Hu9I zw@3Y9-TH${^||LerfuIG@uT_3e$IS5?jL^Ho_o5#d=x((>vs5|>E37a6%?nvcG>tb zZ{Z_>kN-YtlyokOk=V3f^XP|P_n4U{tqRHh&#*@FTIAI0haaV$ZaeaH!rH&9=RaKi zd#cF8&WCq4n=e|iNqp!(KL5t@Z>)c3*QxzyIOz7D zAz8oIUhF@^gWg-$dlvlNu;jz}H}i`>{5~?FCi=(1N3YL{-F~>ed;fz4c03>Td)}D- zXArAV{7^Rap+Co~{d{}4zs+y2XZyM~*M_f7{p@4kn8=E%$6qT8^~BpZ?`i)XEbOm; zW>d{>)zdqeEstqD`eY|v6WVp=^RJy-v=bitZGJq*G*0p0(+ZtBW&I=J2iz)F)tEO_ zp4Bpa{PSPO2>m@Z0KUp5DIV_^y><$F40rBAR?S^wXJ1eavcyuTJ)ETlt?M zEj{vBV*BYitAkf+-MptJlHs*3ar%FTMd@$;GkkpfE$#3A{|ssS+5e>da9s7n`*Hf4 z?;opOE4O^PX2OxbrTfK~yH4J+!H4TKKeTu1lxN<$-fnu=tkyX4!@upz-HVrH?J8dF zNW} zaGmrDiVQ+4$8C*Z=!rRt2t@PuX>!TVK`1DEl!XTj~FLx$xtkAk* zSmCwxgTxx!s{NjsyYl8P&b(&j)}NTVG}9_}?zZ{MGOKdeh*_1*O-$#CzIo%u&8Q`1 z*UHMKeLT*(b?ctO!z>yTUAnqf?YOcsXwCDmHP3^VdRm@a>giQH=gE6bzoI=$HLbU6 zT5n&yZ`p_CTmijS1+5mYQ3fp`ilVm+yF9gDFZ%se?~0fRwkug z&kwx6vHU^TYweHx|F~E`hCP3{Z^|}lz<#X@b{lM1h)g=!p>-`;eMjw|S zzR!36)|T~r8y|Yw_%DdPbv|`XOwOl_)U7{O_f>c|zqoSv;fqHbLkxfP_?fNAc>3Y^ zl`|V6tA=_Z=t-!qdk3cj-!=1V3`nJcrc zS7+h5xm-I|-H4K$7dt2Ub4)6as+2_6j8&ka3q5n) z$K_+xjSLm#eYR4|W#fT~Zu^suM9$T@ZGQAo!IXK@y2~{leCmRi0|#0Re*e7eOgnLaaVec#!1$#YB6XFhrx zEiP56}6Uy;|4*@mu}f_T+=_(ghd4 z*f;%C{J6gJ@y5%OeYao!nlJK)@9+GCkE$p8bdHx+uK02N=>6;~`5%Svzmi(}^vdsb zQR(xKez+NQxL|vS$;+T`6rz&v00jUv|;{mw~&%e{(Mo^+oVdRNDLsf=me8SyK% zOY`6IulcRN@^Nj`p>uOB_mp4F`p=O5+cRWwY;9z+ZO=x7UelnptU*()Ze*Ubm=)h< z|6${Qh6iu<|5C93;ClX#%)iU~|NP3{@R}){m_0` zV#n84-~Ma5_WuCdcNO&+Zw?)HSUQYxsS;iUQ+#VWS)F&(8G0a)h}(8_6@r4 z-)6B@JNxzY%hfLr>sF@eEsff-boQFEcphGk;AJ0zPd{}ws$3f58+J7!DKklN%3)T& zSyQxvR`*R!mke68{AA$cy4`Idj~yS#$%}m~ns0wCOx2(BtHy;bJ8h?|+>?Ez_~5>b z3k7p>EzW;!+QGN^^YMRNhkwVvirOERm5PF_FY08}5Mn{7e&v<50H8pBEk6-B2+Ir)|#Vc1nGALQOD)gzvh4~i> zjxkNMH;s>2?zc`_|3KQ!Yf7z=7C}dYPJB8Om;F_0vY%0lG1m-_1eulh7X3Q=a=EFf z{=xnq#_zv{$cg^#s?+^Crgzrq?LTr};K!_=DxdebtHjCfy1H!lY|o7u_FiW+f==v+Zrzd1**=YJ zs*m>hk2@k07B>wzEZ%*S2aIJc>C~A)#e)^ZL;mU7Ij{ zt4DoG=L)~gjj>a*%#&KKEBaRJvBtyVJ&+}z-P-zO+N0lo8+L8~DOC}pt8-ufeBJ8y z)ia+?DYVE@t#OsAnBmUddnEP8o;a~}QhT%#H%jEVscW5Hb!~B6Z&az>TCU>e#a0(q zfAJRY>|+<6c5KVT=A+jSC#}BJy=j^{ySJn>cZc7dQ%kub+l&M@Ki#I3dn_nmirwK4 z+gtxwKIrH9QGRe9|3#DYJU_e-S;WSZM$Y>HoL_XZG5tHi^=WbuJ)~`*jMcJ!YL$~%u za8J^@cW=wfi_3QQO<2HxsQ-t?x4jSgf2hd+5#IlgtNV9+jowG~UOhYGx{Gr9ALWnS zt{1CV^xOG*>0RT;*N^o|ADGWzCwB8kq_F#?+{Yi}4|(YPF<mhsgS>Y@e`j|h>8dE>V(EGK9TG!e6(Vp=9$G!Q;Pm9);tn=_))=(u9-0#{zy)E zShP>>WcJ0=p*F{s3EQ973}{P^tJrZhvR~+#={0+uQ;*x*qCe07Bh~v`>OaF_gZ~T% zwf{(ej6Pzv-LS^}@1{NBtLrYvDNXx&$$N&4xc;A@`G__)1SXTSFHS&x>std3hIw=ea`l!BYnxAkNnn|1i= z;S}%oPdQ=I{9Y1K6?>KoTIuaxZ4;*a`OdnvG1tu>*{K}eHMKCZ&92g?Frq#1(MJoP zcG142QR|FCv%{uleXVGgJYxE=YmaK@!D|Q4EfKl0RDbz@h6fAxv0wPlkiq{$OaG7H z`UmU3$xhq8;*b2t?{DRQ=T)2zs93vf*N5qi`*{9XU$hZ_$ladS`7WXP$bRX4N;TG9 zcZDL>zRR;QSNWtf`Q^5^>}Lw@YU-JuvuK)HkvN~@NBofrt+f}Xdd>Lb-x;~j|F8tl zrn#x7WsED+!jJsiv&yfyxX_?+jZ>xJcE!GD^o3VG>@5PhpwM{v3=98#mBBL{oUz+zr$b8U(YEY_@AK( zw7B}xe(|mMJAc(JUi!rJwAHHdl zbca|V@e=FD#Mx3qjHe0XNM{qZZMAGrmmrvC|a7j~LzW#@V(-+U$ZZTqxOD&Ict`mbFd*LdLd6F2D8I7Hh=D-I=r9Pgnl3Y|X(hji98$c>KqIhKKJP_G$kxJ~E%rPNPEmP`%(j`HJJ- zJ1*KpKggG@sP_Dr-eTjw_-^uBtFZkK&z4>K?Q!+X&u=TIUHW&aLUwAzu}H@?*$-bN zCBFG6vM`LR%}=3=Ev_z(n*C$twZ&nAtKGIpt@K)>7&K?G#Y*?6&{Y@aZ&@5v z^89qr>?yK4S6*AL6}s~Dl9$((T3%Z17v35bJlCr8P*BhQ+3`K|KjgViKbYTP_5H2< ze+HKLzia+!)*m$fXPZ@Iw|GsB`DN4G@JIY_R)5rbcPIOLSd@GBKG`2_v00BjFWnBk zt}^M`<>0M9W`B5p$SlB}zom}4kjCOb=j;Jmw1u)aMI(of0s6{b{3ZYEpu6W_R@|;uaY#b zu6dOh8)dN8_0m$SkPkCt;{3g5ElKT|TV*m$DyFUXKLhK5zdP$6%&pot_rvRd+_Qi4 zR`ehE$1T+(B{uVS-Mli8)-CAYa}JdNxPciL<9$9%@Q(785piJVsthWDiQt`u!P@^IBNq1hER zx|)aDr1llZ%_%f_m3HZr-pk`n``C>SI)*K^l6=Qxxcsf5g{NDeQFAsgr?;@%8iOrg zk0h!3URm#~x#VxJ$J5s)HJj&uasF-m@7n#%?r$f5cz5~H{x>^6?tb|EI6vc^zw<1= z&S(75bUk>-Mg6?o#e4eQKBl!i;}`g0e8e+bCphLu_R(Eo-Ro~IUVhu;2IuYA8GG3D znI3+fWwT-R`8S3l&;12kj;sovsx|4*V}sADTaG%-jW{*sdHdQh!IhkjTP;o*K0Wx% z!lr8a)m7Vr1Y1@;d>yp5^;qIn54WYJod+JRym%}z)xyuXr%)u*^O%>Hrtyoe$JR~_ z8d=*u-hEj$bz>Cwp$4Hxu1T#7*3HT67VFjRm%M%wd6ktt z^xCOnEw5RAev4N&uVrNwT{GwQQ_rmTDWwTnUVY~5QNrJfmUbP!((AqAx24k>mE~vN zEIxJJ^!BE$cl#fN|Kpiz_RIZ9{|_zuHuW}N>yT~rH`nwkRY!M6zSaHGTm7x`^1FxA zBo%w2P9_(Y=4R`zIcD8)ciT_p)06XWKAqVnZ}4Ha(l?74Nv{suPD_kiYgrvteE4~c z?Uerv>5mdSdtW?K?3ori!^>!~xirG6ga3!W98<hqnsWigMQRG)Uwi-ZkV zUhXP+@vy+gyCHX$!hud-Cl{<*z-S z%heypm51t=P18Ses`&ohsdYLJZwC8DPc7E5jf+d0{bagU&E~>?{~2Cyc!GcW7`D!a z`Tte$s5bu$JG;8u^&9uUS-T?Q1!$Yf+sNNmf0(Y9=JGv0a!bG6PXABZkLnMfkNo=A zm|bi-=hpW2J*JQ53%s25y+fzf^WRi+NlnuRQIIu&kdK|3`@V+y1}P z_SyYsICyOS*7iRl_TLu$UGR_ZkK~W)9Q%y=4tb`U@Q;^|@00owx+LpTMSJwcf4qM* zFXoim%f6D5n_=3k|G;hY%E`-O;v82gWxh2j>;INLIsf&KO0RX^5C1a=gda=NOe|jW zoO}9%jXT|x)=55o*!5`5ul17YS3hiC8a*k(XSwVYn_0UKyX~=U%Wv&IqLo*?`sDFV zZK+3pnu)VYO*PuHUQ*=a4vT9mrzL;bqdQ@p-04+G%brTQZOiOh+5AYxMC0Os-~@9@G5udYpdFSlUJ;r`sdl{;Ej7W>=cZR_7_U+IP|Ds(sG_K zseMwVD-u73EbLeu)UztFFeEXayJNZ3#OAp?zFZU5I;{y=7&hf$kkFJ=Nj}lcE2W}V z6J{?CytHbe#o5cN7E4+cKh2+(CEW5eHT|T8cf?7rxYh`Z~ikZtV#d7=%2xBJBE+;N7mnB zkKg%W&Mw>Q$Kv@aT=%3utZ(@xHg$ED)cM9Q-TGWLiG7FtH-BvTK5O07N7s%%-gIU+ z`>cnn9@<}v`F^BlyUs}iixTGV_5oM8+SFRHm+wtpKc=yVqAKFEeRt6n^+P7ze zC7a92M@yT}tO{S*Hy`wEbVKzsdeB`tREP+4pbMAGF`5|3|d= z+oiutZB!rU3;sL1E4}BB^oQf$f`6R-DE!UpgZaVv4E^m@b(@nvhChnke(=3Og?8|d zslS~oHXS4)0~cCFi4`=Fn*#`=PZuHCzP_31}e1V7|4mw&A7H!X7Z z(+}r9+tgoOU7M`&;ML7IdC{ol`~_ca{IrGJk39XE8Wp^}_xQ7jp7Vme>-}#8p7|(Y zBPVZk{LgmwYpajU*eA8Pb+OmF;Ep2?H@(?4MeEcy_0E^c#T=Ix&wW* z@a2=4Pp7W95SfzktYSylna?({I`*sU4{qAO<^Egk-x2i(wf4#V@%p=>Ci_u*=RN&P zcIq{LKdK+R@BC-F=ilXz>-+b~R2TYU;$zuH^_jKnUf;@F_fPS|)_Z%`#Aoe# zw_%@L*YD`7UwwnJcfammdj4hNJ^t3u9Mv3;Klillv$t5$zZbX~TIbY`NfJKO_URcc?_53o z`oll%CX-kDS**!nd;V*h>}l4vLswS+WxjrP-UrBz6vmJCZx8-w zV0rtufB%EU`7va%gp&_oSRf}M^9X`X<_`V%*%%! zzj~1U=*5ba)n=dm7Hm5jwlw2bMUSja zsE(;$cJXqrdDfz=qNCHupbE|KoK2KLd;Ye}=_6d;c>Wnf7;0{m&oaf#>8u za@+qA*#EC*)A#=jLebwg{%3gp(19JR@&NX${~0!}|05{;k8|RG2A2N}KMviO`_GVa z|K_3m*8dEmw-3#_-(>$#bN*xbbuIs*4XOAN*O;{-hcQocUR2Dy6gNrVbao4>|pr6>P zXNy+33Aev`T0B<~)Br>pMkyqPryg@UOTC}1M(mI|1-4bn%?iX&$7Se_$N?o za;{}>{_R6%ztRu;v%Hj=q>x@6TYjuwQfb%bFn6~-A9nk!x)ilyy}I_Pmxbn?do(8{ zWk38dLq=As_~j_S%(i+7r5KKzu6ob~X-o-0$+TTgwM6Yejl+Ije#Nuhjr&(Ffi zbM@mzXC80+!QS=xq>az3N4E1s6AX4#gsz{R@>5T0zhHVqjBV7%UM`ES$Z6s&PrdYo z+g3-FK4vv*~xuKmRivl-ZwItNu;zKSOhRjpC#C?fSh{v(2uMRwUYv#osOeKXgjI^$jV ziygmp&J@p)XZzsK|5)p^$@v}8?9(0=*Q^U%9;|k{c+G8-vlWZG)H_yw?UJxDZ@*!4 z-(>BqG}DDPcGBV#y}A#F9J{u-Vg18`I%Un1oBMPh+58K6^`z2WC~Tfelv+c4U2Se|7(@@rT{tS}yL9{H<1Z zX1_?CdEMnW;lGpjr`q3$f5d`GgA>v@;X9@#~=v%~e5y$Zi@|IdF0nP-uuKJ{HP z!Oe#seL6F}?UU7weQYN`m}XzBY^yvH(WkhuA)nc=O=(%ZoY+Yt>-u#6S>2E9R3F|6 zGiIOVoA}|v*B{Qh=L{qG7*43`=xKLVZ137op{KfLWyld{-O~nN3T~`9&)(ScJT^h| z`5n)>Pb=%p9{JXU7 z#(#z_e67FLYb-v>_v}&qkna4$_M`tXdv5!T`L`D33PC7;$sWoLn(+X!iD7ad1+T#4?U4cC>f{uHOPEOd=qZd6_%d%e} z-J<8P{s)5}cYHqQJl8)ZQ}D;W{n(XhYRi&2(stfDnlvr8|L~I?JjeD)^E?s= zb$=88TlRh*$I`h}04h!*Z#-X57&IqSj7%j@kl9_egWKl_-+RO{zA z@75!J`=pi`O%q$Q^4vOU?IQ)>(*31gT$-k4<83AQEh0xuTJLmip3>ofQ$Joly_u&c zYA~Zu_++uqW&Oqdeb)R_(|+{qR$Hy=>3!?^!K+7-3oXB~%eJiSc(SnPq}IcyuE`sI zyxLk*{Eu(K56MS+)norNG$s9KIOx8nMsdxL+YjU4u>KByF;D&PqLTZ3ndQ6gZCq5N z^-=zae2bjke}HYoYaIL|>YmJ%l<;j6vg!;z{M>nEP07>UJDZQ4GL|vt zujoGBO^_4g{@?3e~=R_H&LK*OKK@#%DL( z*{(T_+w#cs2%BB8H`j4h-fzDXIr-@i$ut>9w>EwGX^DwJb5!H?R!>SRF+SyGnjN@2 zv^q;tHplhnt3(44!<+3}4n8QDIZe&}Lj2MH3_mpd-*kRR{$_J+f8Kq;KRF-FR{u7O zs8Fc5?fCI|TaEM5Y_U3<=+nmL?SJ$i)GK}9tv^<$u|LB^SNyPn!BzR_9b)1WZtW3o z|gE8YkyS#hk5)rgCAFuSO2>q{~;{@*6oAe_p$w5u>ZkQdBIYB`5)pB zpY8d4=STO$^f%vE{+Jx{vA^A9_DlUYYqshd{Mhz9_~Lcn3+s~Iw|y-{>6X;$6GASbsrqp^tPC16!~7#Ph@F(Z_HPn^bL!HIW}6%D%s4DWbE^w!Q#y1 zf}@Ea@3=>69uICa)>_T+bH+wIX%*XQ?{+-#saoy&R(#PtAekdpZR;)3c)#?I^G6LLD^@-F{%B8p%JmZOT7A#S{y+bTEbm%<#7^c( zL}hi&>u!s1@uM;6GIt*v%gon4o<6mrY@NLFQMWeH)9nT^$`ha22OLY>kp23LvCr~u zwa)w?q!|c5Aom5e*%A4{mff(+19U%`eFAy{Kwpf`=x5UKGw}tTmI<1VD`)Eid}m1`-L8DxMLrz+0Id0 zEgAYz%)Pnd&bz`hhI73AD(;vVpE+%C>f_W`sghxmDO-$Xp7l9S3RpNj^}@kJy;+rK z-Dg}m>nDEr(dPdQ>(*)Zg*N)P@0czwBNiL@)Iw+G!%b%{8=Tw_ve`8*=%!R)vYzZLZ{AMJ8!1xlWAtxJ{)FJ zt?d^}NSyXjF2A9V&obx3j-5eAo))ZneOT-G3g_SMn#*Ia9wYdcSFn7TSC&eHO+=EIMl=4wqkV<1v^W0qxJqSX}5z=c5-fA-Cj z7Pp#`=``hO2CpT9l%&(IW6cWwXXH7em&o1 zb-#HFzjTewhc6Mo<2(O^f0%#lpX87E%YS(L8pUT`JH7hHP8(JGHj_&Ibz#SJgTuE> zdm|xuw&uA|@Ol}$*qIMsdhPY;H#_vKRMW{cD`Xl|$VbVv{GeVfk&U7sML*oMOP-PR z;fI$*)sLRsERhct8Sa8{b3Ll>*haJR#OZU-2>v!B=d|WoqaW&>eL{j~vL3t&J@M+= zk+X;9>e%x9YKx2))Vivf__x(+e&k9S^R3T*%Kzh?`FH6)&Kl4E3{Al`Tt9Rl)@J*B zIDYj0&7k8)>$&!4$hTNMTlr02uEzS~)am_yV(ZnmKFa5N_3VD+r7iQNmOg&{tMtyb z)k|+@31`QN^*uDL=gyX@ZGTzg*}Z(ug%cHvnWH53Og4HrPx4^GXD(BNtp%S}Px$aH za^fRRuWfw$)LK-7BCF0A1g?y-=n3=hJ8i6aaVbxUQeElc8Iez}etsu?EO2$}*$p&Mh6}jWclA%dH&^phFjnN zajkwhpC@bj{mtTkgx`C9_|Ne6=zj)Q#*fY?AO2_HsZsusy~g#?`nGt+ck3FO^1JSD z{m*cupC{J;;r-@%-WuuWhgZb>sE)mEQZM`CKSMyS`Js8D8#haBect(nzi+v}!P)0u zYi3?r>=?S(-|&%5s?~X=lNwj2)@5DYD6-;e#G7uAwZSRx3eA?(%M7xw^sg0{o8gJ6)J(ofZ zB-5C-=A3kw)-gI5{wMxFL(}0OtG`|U5dY>e=m?c~`TZI7xAGrMiQn-3VE@hd2j*{f z*ZwyC@%WMcoAn=_f9v|Y(N0IcZJyGPm%sg77gbb;#)dz#Km1oX_G4T3htmh=319!? z`Di`+k7VZ$*N@KDuDE=xzj|$E#Iqas-@MSduUxQn*7JMn4>p|>KfSp>y>sQ%0(GuE zcE+aD(i>KNtaQ^CJtmU*(akXMSn5@+HEPZi5A|8C<2Ib*_hwV8PKd!yy?k$Gna%tM zB%ccxiWN5fdg^txV!hRTfz&zXhkwM>#fC}T(UWe^dhjD}_No^NT91tLRR3K#llkz| z9bLBC_TLKsPSV@`a+cbK zsNY`2*1G)e?eljZg=l_glkWdGb-B0B*-t;xE9cq2y1H-Ul!DTn_559HgWGph%~Kcc zJp8EW&!)ASmybREtmBs6aqRl?HyY0>dgS=|XD0uvZ+;#6$S0mR@X*Dj;hIO13T~Fg zdWoh+3m^Hiac4{B#dDu+j?LLP1r^5M%TTRxq-lA*K7q}V1#JFRk_-Zc5E`ybql zzm@-O>fbf?52nWR*QwTBu`~Usf8@RROL^ga>NU0>%8&eKkh)i&`Q!TW`+PQ%D>8r8 zwXdnz9WnXLzU!rL&BN;jenh>GyQaT2wmc%9-?et_t6$4jn%@0-{L=F;8{V@Y`q^UJ zQuy)sCjPgRe~Z;v{by(j{dcy0%N%*>I`JR+-y(h#|2C{qy_EiO?)%O!FHH0~ z_*pCX9X@QmfB5%~Y2Uv6tf^e^x~lkxmOsN0{hCDc?zP8T-zkJcONUz@PTu%qO`OoaP`6ggursQ?i&d>eUIb6|^xSbu zV2;)y`MDL<)6*>5oF}9f9=`VP`k~YaEy=qwu@zqH;%6j&Fj@8N>*kzXud5otty1&u zOLm`mofOBnPAdLZ;L(tSSKE~8a{n{1ocNG`w7x%Hct2>;-T$rdhyM&m;<@)E{tmkF zBmQCgoAn>6kDE=qHqY{h@^79$CVQ@Y&2JBzr+0bME$e>X8pj{+AKMF5bU#i%qR;DH zzeZNl)SflNe}(vk-nq-CwjaKB;uGtXM|Y+Rq|coF$j@+j*}}$S0ZXIx9tPR-RRmC?=8?p&REQ;wZgGNE9q{e~Uss#Bi!1os*3|NQnp1M8L_ z&wm%x@c#(>sQ>MA^W*ln(?9TkYx|i0M`XV9->Lr@9?ZAje7||0LdEF=^*me7H^j3n z{y1%Z_2d2G|IP??1_}`u+d%jNBQC(d;LF(yn0jD zSMIU4xz$(x(2rT?P^#s9;ljGo`RRMyCq6fRcF?y2|Ro!efY`GYjWGP z`NK^g#iSVVDL>MAwXd+@h*ijk8!@VRYNrZHK2Ft0{bF=aY`sjZ>a67D?e;GJ8FKzJ z+_e5S@q_&zVf}Ag|L)kI`~LRsZ_6*#=f3ByJ11xUWBtM#b*JucX+L`Z=KgOPf9LE| z$h2ZxxTePDhx>>Ahx~`@WqxEI{%3wUr^df{(GTq-^UQy2FMhmU?vLw^O#Q{zOP1Hl z-8+2lkxra^tHF$@nPtge_k`MMKKx~ByylpRp~z<+x56VkQ_Ob9l zf@Xc1vwX)=%jAz!?rDqKu>ey*w|yd0Kq)%1KGDY?gDno)?_<(CEx`@!lh8 zGuD6W2s>UV^4Mu#>WsvDsov^KJGTWkl^DG-G2B`o_MhQF-+t+T=Kn6)fAI0YvH$V( zx6)O=_8;@__|L#rGPnBZJ%w5K4qbYFH1qG$Rgo3N$IQ3wik&xqx#Nn8!-uBLlJDHg z@n+52xBG6dI(Om7#Hmrg>og8M*f4XcL_(@$(2j_%yCb*nK<4-$x(#9EkHtpHCs_ruHypMLVPN8Yb!zy@IcN)iR z*PH6OYHDgwec+*ok6wqZw(+ftUz0Sa&@|i0e)j$k(f=8KSeVowl>KM&?|ePS+Wo0F z_u1$l-Orw7FSsZC5qE#*>kq%|`74qRAC3Revu^Uk-4=huA01v-(f9mK)z&YcUKPK% zl{cqz@uB&*+=KT__V_Vpx5dGv9jj#z-&oqQ&{_L*k<5A7uEU4sDGPti`7J#!QBlWC zXlahA)#gL)ibq02Ry|tbEN!)M;nyCirB^`W^L))t}5RuzSG-zvl(%k25`{xdvSAg6TsKSM_T zP3B|w)QcDW@P72X{rx}XKOP^it$onXSy&vy8<&eYaB;z#YH zz`SoBvs{;LK7XKeY8~&{9e(-T-klcVW(TTk)=l+^^*L_vaF4FcZ}uta03$^M~zJF55&t*6)lLGnF;d{%NE5 z&|biI;msGq>(=HAUfm<|&tlh>u5Zt-`(E0*-fkN6-|R;|n^ip5bgLY>{76pkoUD|^ zn*Ex~r(HdKTIbO9o{tfkA!lAbvzQ}R+j2Ny&TAdN@M)=EH7_44lyj8{U+rzO^w7>Q zYsVH(H}-hZ!ylEDf7|^#C1ro~KLh8FG+Fns zAJGebd_NW?*7@=Cx8+xJl$rf6ney{h#C?9Ge`M=bJIT>mTIH{z>>Tb#aZy#jm>I;TQjSFQ{O4{jk5oCj4P^tohMfW$oGP6AxWHR4C8+ z?B=(c)rZv%6{b}-pZxTO>5NfKUD1DrEuZhm32QE&_i*3(85bYch;g&Foc$Q_M$F9e zYLwxLf}44EU5|XO+pWHSWJ}>4)A=cqW#Ol7zDpmjlruM8KQB0PS>)HK8#a@zk39c) z@~Vs-_wT5E!X}4Oz8I9Q{u{Kk=CY<_mAvV=I6KF~k1@`@2OoX7 zQDeSk?Zl+V?Q^v%Y|e@PXIS& zbgaMURg>R4Zb`4^b@$ubRc(FSdPeM{9b0#{MX2@8vQ$n<+B!AMq)=qJv!K`1DpPS? zFVmHW)@n_>Kdt21QcmsFw>%eng=Sq`DYYdlWN8@Rhm~GMtsZtC=R{43ogMD~-hQt9 zt>}Ne+y2hlYTxmx?$Z4azURB^h5j=gIh`v7WanQ&7#y`1=lTJN+nEmW$(27lKj@5^+ z)i^CU?V0)UghD_0h{A9CBfedl^H|3>)UD!1n#hL2sT*cQnf2>CPmAp7UOp@J)w0Ro zBF?b7HXch{^*5@b%2acO{_3Kj$*oxz7kabz9xd_`JoDl5Y8#h*YyUGerTyst$L;uV zzg&&u5BC2Itj<3QKd>La$N53MIj2;=&3-%of%oDWyMq2CUUyr%EW*6?PxyyAi;~); z(?^UmH)rkow)|1GefxdxKgP?vmpL!G@gnMV)`ZuBRT5D%Y|4Clk3QD8a`N*VxzuS1 zFP={MSy&-+pSk1o#;KcaZgX}o56kD}*)Q+R-SRDBSA^D$?=!sCNo$?{a6|f$O^&Ng z7`NG>hXq?xXFa*GhA**eT4IpE;YUS#e0kEO=5gyCyFAz9+}4~tp}k&L{;l>mSlkw& zby{@pqwMQTnZNn%ICo(I|HJ{gJo1{~0#z;Vk~B9r~k{y?={6)BPV^@1lMAJ+9cOK8hFqeXj;oJkR_h-Pn#cRdph9PTr)<@^K56|k^TPkS)*tlVpEti{ z{s+JR3^#5+Hh-)7G5DyJUT@)o3j6rWb>ctre*L>8oBSyK=w5%f{r-#<%!hVmPuqRX z)HgjcLhTCc)U9W##M|C{-7oT5KJ|i$ZP2&-&ws31TAA|W&SvIQpL3q`cAollt7z}a z>qjqDR3@)pvQ*>2rW4nGy|Y@>vt-4kl9g`D)V9g>#xH!>!*uLf$;OHf-zPuaH=o_S z$3@m+m1UaH60OiytEsClF8H|P+v4d@BdT_E*~gvv7~vypwQ+8##y^AlgDdPm`0IDn zZ=C-|@zML<{n9nYg%9<6gLZqWf|sr_>R2anrEN7X7&}%c=%M( zG4(*oSI^3Yg4suVLb2b^G2s%IeD{kef`JG-gES$xL_f_#G}`> zNs>o4+^E?v$n|NSyy4+XYkSXZy!n<#Co}QG4E?t;mrai*F8-<&s*xsH7C1G{WMk=u ziaDY(>R+|v)v6CdCc_CGx>^7K8f0nLJUgAb6ZMoPV^xX+Q5ir5~GJKK!~Lla=gr$;S23e+J%csbjMj^Lo8|9UzrD_l=m-uV;_m zIDYF~GI8@#uc=&LKbmA-Ufg*!Xt}#+$5M{V>pK^FhJ>uRzFJgj>dN5ItW_niyb79D z2f7(PpKp3)Wzbd`Gr6svR}Vk z<(j%OXu02#r5tYR^W*9dTGc<8AJw|%TU7fS&EL}ZBV&#w?cBWQ?~Hw%cW&Krxtl!i zUOvldk&W|Ss^l!+@jmR*q{2zQCYOC?d)x5G? zo%8Y>sVVB5M_0NPP73N-bh+De*{q#k+z-8PxzF{Fy+YdcN8*R@hw~5rXK4PU20rfm2TqpCGy)>rLw^MqO3m$x2#n0ao^a*f0fGonm3 z+=vn^T<*;8HCHOI*TPB7V7cFX>*am|rE0H23R;riYMD%4X&2v>>!x`wd~%@Yn<=$S zJ5SqBivM91=bQhn^(v?`kpJLwo@d#vy#EZj^0&RcuGWO=b<4cl@Pq&1iVHT%>rU4x z_fCqo)zk0U^y6IZ??)TE5B9E%)hWEKGF3*uVeyh?v*)K zvvHf8@VaSIvzI*%Tc_PtlxKE&dDg}i|Mt4GOL(RU&9T~Cb8MgY!~5coivHBv$d%9Y z*L!$o*_03U(ZB9*o9h!2oHymMlZnMV8OiFfL)VY2`n23{$%le7$@~}ee^~54E-(C# z>p#Om(f!#6Kgb`BYJK|jdqa)-hvhL=VsndEn77#R{y2YBPVPhak+Z39-jtnZo1XmP z-S3D?`lcdo+b-mM6~C_U5>+>|*r-A#Ic{5Wyhfkd)=+ozM`u`LZcB@M@fj`D39D>v z&6>K{%5d@Q=R4~nCxJG>escP6y?;mU zZ+PDG$MR$JH+pqrZ^#C=TxG{ui^E+{gF-e2oc#3XP;cqf4_C9^i}U!(Tz>uISHWVZZQCKew|}0%}(9?Z|dvE{7b>D9;OBiiuvF^wSTAUH@6?_@A%KaxljL3)DPJY`ybgK zm2Z?<^XvJ+_3{T>E2o{irk`k&#=@Ba)eS$|hOyO=V`Uf@sq)(_=xzAh1M z%M5(;Py5Gm|4TKwEXzdlHDdmlZu_`)3%|CzaO~+^&a}$pw)iQJOm*_in|G9TAFa*r ztT?W9C}HJ;3>!av;jWVz$rXqCxO!E+wp*W3KU{dgPq2U6T$#{_hjR+`rab=g$CBf6 zzd+j5f{RB3PFbXzu8x|rT8m5mw%p;?f*boYUS5g+Fu(T^k6GfIpY`=$;}hRzRQs<9 z`sMvC@Q3q9=6{^u|1+?p{K)?B_+fp+`K~(iy7ToLo-KY9tN!rW%v7Dt6}!JRG(ViS z_M>prhrfG!43C$Vmp-cRuIgKw|71yg?w(oy88X~=PSLGx@3HKyihn)jQ%q@8x9aJv z6idBa8=H?;GapzK>n=TfGp$fZjIZQX(mi>`=@-r{Z#sBR)KF&9;fG7lTX_7e=lb-A zEwS^VR^;gl8Fs<+9X038zD-s3tMD-wdd_crG;vkc`doA8h+tKRkB7zBFF!-jC)--@9xQm)u%6 zd12&h-8Wj2dHjM0=a^0nSoA}_Wrwx!+>c`RjBnMaCl~jrKFmq62yQRBJ#6b=*Y?_0p$3{IGSyjF|0Oho9N__Z$pZ>8y3|nZ=sN?M6D{R|^Y|?6LnI zyfSlF+2-Z(FQxXjPFua?)wb}cvXx6;g>8t>yftlpE%WWT8}T<|-F3G9<66$wCWXi&MH8k5w+en%D6) z^U6xMC0du}ybN7xabg~Z96Z$PiXt>Kk42xi6?$*=AcQFm|oyi9#OU-10O ztg5i(jMId375a~Ssynyo_PO3|*1NTr3U{v%5~-67Yx#U%Y{#N`+OmGjd7s>nV_)nw zSK>IsXP(+Ij3roKpIYrGBRKw=O^YWuBa2uT9PA$5~o7mJi>#>xjQM z{_|V-Nbnia?E89$l7BvITiq6NIb`LdKXykRE)5D@E_L3nN7Zdk!S|z){~4M$U^;uYwP&_ot(d={O$6Gf7QRu|GUuC*U47=kUZ~}dcMO;qAH3`AKi8L zv-`q`8+SAA>3sap(Eld+BhR&8$*=BnuhD-xPr_vN%0~}Ru1LM{Ug$?yzkoldOuN>} z9rHU=TaFzUc9YzfIOXArkP05XbZ6oA2$?#4t;*^A4>OMbEf){&QjTU;`Siy{{ms?Y zy$61jAN$$o%{61ryLI|)M)s?N4_rK>?5=UvaK;%|pVQ)Ac^0cAc=!cV_ZWst_a5+T ztw>CcX0&k$OZDgM2TdL{71dp+v-`Wk^!+X7NA*o_6fV|3nD|oJd5L19?p|FU6hlT%;SDd zBTXjITYQGjVfM!9S65!1C*1aFR-|5Vyuraog)?~0Tg@x<=huqA*;mnjrRuTuA*8yR z`JsHz{SV&ff2ixf6@0wb|55v~_c!Xl#s8T3Q8{Ku-}@tSHXr>D&S#FV*nebu!R>>Y zyw|&IoJ=yd#tYqX&dknD=lS*a-eR4w0_SYW=!!`ur+T?8%GI6bXcnIOaL8NWSG6)klWf3nyw==(x9 znM)-v-Mj?y{0x1!)vAApf53m>{LSMBFV@)nonOcMNAHLH0}s8lz5eVqsvpE#|H=Kx zxF56Ivvh^$;)-DJOF3#+^q!Vad-pFxW%sU`_adK7axYuAYU=CIUW<^GmcdJwthk*2 zy(Hwxb5pNbHB+uUyYpKqt{kU`ZhI2`80djvdt?V zN;}DXnywZ+Jz4{>u24F`Y|;wu#5kA{HXq5{12t=Z!7GWe`E*j*|YBhf6G6S*X>T1*Ojt;Xg|1L^2g%C_qcw{ zT(fs>-^~Y?-qgw7&z5q1wy5LUE#7&Hem#BB?SEM>&7Zj^``Vf8r-H|>ty=NyPh`XD z*~v*S9gl^mcAYoaur_E*x|>OH&3FCNMp<8;ira)3yEh%SNZM#oHR0_;Es;-M7VXn- znSQd9U&}ME``e|}XE_o-ZI5c%@M&?B#hT?hN0L6Tu~QQ2DcHK{MAB=w5{=NM`V9XW znl%5oUVfAFpCR@BjoII1KF)8q)2=%*f1~@G`E~Z$=Wp2`j*{KC^27T_=ijdUxajwx ze>Ru)iT+Xh_~g<_w&g2+D7?Ne^iQoOP)=yqwKX<|>^*hz6~;%R=I+~Z>4y5NJx;41 zZ?;o9_fh1koy6gXMeBGz{4#x|B{{9=N7`DM&9X-g4+kDzWie;cw9v^HPRAv_-EgDk zc*ka+Ys=WV`4=J+Va%$Wv{}@cD2o25p_PbKCw1m z^zPKRQ?K~5UR`>3%}W(=v+V}fhi!zFkDB;>Jkis0I$k(zs@0X}Zd)xvmxdX&dW9xR zUS7$m?IqkYWwFIcv!#-1vo3zMTO_LPRj|^pczMvA#a5+?>YRrPGmjO_$<;Wes}8L= z57Y_%XK3>M&v4MNhWR76*N?Ri*5Ba%=K5j#5nlGt=GY51?h9*Je&jDZ|L||orIOv7 zu5IDA&gWN~y(n9%_Dk)BT^}U`$SaeNO%l3*&zr$A9x4&Rlc1 z!u$c-{73S)>mOwuv_6&I=ig@$XoK_skr%B z*?7i_-|mzi-4hti-LSUxK^@QPmIIFrjsG*`9(r!M)!c8%29s1@O|8mpl@Fh#iu!)4JiVMA=-BZO@oLc7_ zeT2(kslT9nx>mrEM;|WN-`q5R?SF=YH=~{($-e(X{rkcCCOi473Lo?j+26AMcI=1Z zht1!*f1F$sbymOmpU5AxY5)E+#9b==&mjFu@XoE^VdMGEgG$)i@e&7BF)8l2H{kZvPeutg(-x;^K z`+umef3y5U`-AOorvKKd__@bwLUi2)d(nTww_ne)KNjB!TFF_mAfoYTq}G$YJS^S+oyHytQyJx(9Y1W_`au5XqLJjKbp3C z)xV4TrQW(9=5Lh~`;njcn4iC*>CxdM^K?Eg+rKd4p8tZ|OP^Hf?)|s0e7FDQJURVy z6_eR}&lIdyI#C#Wx?+8={ICAQH<$4Xwj6j?VG}QKXr0tLW6u6#VTUd*m6^}<@#fcz zYez0Ec=2@VoFz*Z)oyc*XKp>>ZG1ji#+|!hS55j63m+djW%g*s!`i=HFV7Rayq@dE znNqKkPjj|u^T%!VsY`Ae(u~XVZ~tf5RDY<}{ek|Q?Z3@y_^#>YzBjFJu4mjQ z@JHwBdR=pF@3sC1&ss`vKW_#ehOFK9JvH{$?p?3-vyc z4IkX!T7M9KsDFGv*GutFS-0f+KSm#@ll{0xPVVZnZPl7v>v>PFi-^5jQ64_+l&8*; zt0tar^zWVX%#C}vVB+JP^!CL;OR~LYeY?=J^3axiu8Yepor;&NI&{@`%5%Rt%l+QX zdFsbkm?v0xP4v~}mY2u!Z-z`swJHjntLZ1WlB-nKa;4*yfrTRx60<)9zF7_YQnWk3yi9CC`Ys$-==5JPBnW`1E zlB;IoN~@Bm7N-Jw`YV1+f4o-xVfo>H`9D6_|J;A0-(JW0F}$yIy^^Kc{NL(_qC~&# zU-8r6$Rux_{mGY~eR|wwsZxGuk+Epl&vR<$6c69Aod5i4&dVn|&C+L`wK(OuWD+WbwMpN4NwzHzeX)Xr;#Q=WX0U7fab8oTb2`(88NgzA{ct<_ZxwT;?ey7SNB z`h!d7^VWE;syq6hVaxotM?Z?4yZ=wj|Lw=$aWx@7*00PKbU3NE`r&<^SKDVb4${*|Pe#7FXd?J(b8@&ttvv*}>Z1CNJkcG*$oXe+K5d%ai|@{%2@< zRDUpSfA;*IjrU*O-_CwG*VyN8_kV^5v-WQcDZ3uE{fK_A)bidnvps$!KB{M}2sn0Y zN*&w25C0hszvrxYee|F1ri?wx3o5c7{b%T{310t7EZ}ZtfBnZjwtpA@XApR7+0SpI zr+!3V;KyzI6HfyZvx94ln@<)RuKm04$c~sWyEfL8pJ{AuuA0woPE%%VK9f;VA2lz! zZz0dKshYLrqK9>s9*dFX`L{HyhW+3k@d+Pg3@;wM+*)&QUvcw_k2}rzuOB$HOxxmY z_Vb(f#ZyH-Y&!hdSWDu~Wz9q9Dr)rndk#LZ-@d=Gs{UxL`h(?%bd4V$?=YzstI5Co zPpU%h{A2dcJ+{kky|~4;|D)CY!%;bL)>psSYMruJ^X0A5e}*HkSH-;CR<_ZVMXbnK zCeW=*ux`EWv|ydrrj2QDv%(HvUf+M{;#wYG88Nj@-?kQ*d<L1Ll|KeMpH~)`IzRZ7yPq7U0A4T~82(SOwx&H0t{|p_ykLUmMUckSz zKH>cj?eA|k{%2qn`qBAVzfGR0M)SA(3pv#f=FQ^AtBxK&Cf~5n@JIH;n9D9;v5=0f)}>bImzD`dG&-Zu1e}=UB zo1ed}|5083VfnWyKTJQoe_Vg~^y!v;cA`J}AJ*z0xm7!FIZx2x{53D$*0W5H;@g`k z^7(k``i$vPbsJMQd+F*g{2aH_(1J(KsG@4e99yfY8z#^7QByi6F-O&F%Tu>CA9l>J z2tVw#Rq|YKWZ+8nu%72`%S|oMsk`#TDf3EgSR7TbyrU66Ls_DKEo9 zUb&fOu9`4^^J|d{&Zd%%RYzwb8f2EBbRo zudaA?W%isW1)+xn*0#3^g)Ed2H4mT6=vmFf5?ab}b=d|J+iAi#{Y)Nm2A0T*`w1>T zc~auQ-=KBH1(5Sh833QpddUh&-A)$ zxoB3;+U-U`ll)7TT*`XuRqirX&QdU?&oyO|dB9603#}Kg4y@MJ)H-#biIYX3&~wRU zU$t48%ht`RGP!(l*>?Z0Qn@CVGnbcK>owi%zu0GeYGU%T+wQ5$BX7O@R`CAQTAj5I zw{Gh`Q#SF>4h4@#zMrhE-^S0pIpgWf-q71yZ`m=`?@ns(>(pyq<%}_Bff8D4%hS{A1)6?cy7h@s$CxAULDwTi(>>iLLLJZC{mmpN zs}O7vF3goC%wy-=GL}c|J*$M(ydzu^HtxTJeQ|;PvhdcbcH#m4J-Nl z&z{uLRhH0I#DThDBSO z?4I;DS9jX4jO1;zz9w|Up3ddoeKcS7fTQtY;gib8g{_sWcWbRo)6o@~bkQ$x%B725 zfqsTl_Rk9JF6_>FX*P9oa_+w9Z9hd8bH6?74lBm@A#!n1g&8h6|HUgPB-uQmTj|M9XWF?+~}al zbg|q*`N;*jX{AQdGavoEa!k!xB|Z6_^S0K-xfxI8+^+Q=p6Pk?d%sDtUU=zQk?-N1 zyEb1f){I_m5*#>n+cU2q&v#R1`NppFdogM8aV4FJC)P}IdnK#l&KfHlA)1=18W|zr zsL;fxX)-Hw$z@-YtC#)VW>uM7d--p%@3L9BChullT(&LqOXk!!YjjF(XS~_++B(+m zob12QrBnBqZM#_6cgcP_3#W|dKKJz6)t{}6Wi}hG+FiCg@1$#`o7PFaliDiNIy1aH z<4)?Om#1d$RxQ7KQ?>k}>V>Tyi4Lp`VZTLZ?vZNTvh8=pHnXJPC%WG@U0f<`x?<<; z=iJFgYnCzm3!LiG>fMkLRUGYVF0P$<=Hb~BPwyU|=Vc!E-ehfF8h>FyN=AQo3q`vTy|S?eX;NIyO~#N1RS$j%&u)Xnwy(1 z<;=QAaEXB+uhrBx$pm$tEx<$ob?uM!NAI(lRKFLg zXtk5Cs6W0>=Thz#;g90MKPvNAI6ssZsrY>8mQDG$I>wLsohEyOejm7$J?q@^hl`hI zi;Mm0-FLH2ZC!Zx8N(mu63NCgvz9s9_`JNlI-Y%6QueBwy*lgGM))m@3^#Ald{A8D z#ulRe%reD(vtej@!^(L6c$-o#%V}(V(LGDKZfIF94*JnA*IrY9kU{1NPL1^1z_W&H(+1W^kAo~SO&li_ zdIS%iRh#T7VF|Kgc0Gx|NjDVMFp*|h8V^F|Kf1)#3gb(!QAv?@kjTE?+@Cy z#~J_F{xSXNFZG5xsXsO!zAb*VU%KM_k?GmV3xDJvzU9MPxFTy-?`bwo7D0V(DQ}ZY zCItsYE_=)Pp6x!CSYWa^UNUZ;T+c@d8Mj{gzQ{>SP5+vVSdc?^H2)v^7%_DlXKfA4<=;rIDp{xh&vL?4>ZyU*nA zORK&2W-fYdr?{`>$EW&svHScvQM~dFSMwv{e=NH*WqYq%%I;0xeRou)cHEk(nfUTl z@KSftxSH2D)~7Zdx_T@rRXj2{INkb$JLjufJ}Rj2 zIAu6B`jO#}QxZHnx?aX*E4z*aE_-%qxu4Out*Tssa~}VC961+M??WrZ3jMd*zkO>& z{!aKO@T2+h^yB{-B#%DmZ=WZ-^WvA2`pK8R&KJy{^}M6TedX;J`y@Y1Z>dp#xSBWm z$Ups$<(*q+?~XNg{BXV9WUhDE6}?n7?O+yjVaMa$#{&5Tzn>{@BlPp*4-J2**yttKHpW;x?6s)cqJ3qp>-EKM`{WEuKYUd`AJ;s4R*QD< z;os$6!6mPXikEU$TXp*GFqZl-SJbayxs5N^^=}rd1Pd32PcwO{?iaCs^{FhaHTkEO zT)liNp!o00AG#kWKivP8|HI^m$B+9r-&6IM_@n(}>w~xK$Nw|%{|T0xx#q>{^%ed{ zZq-=L>s>il{zz2ad5YU8os-(%qldVTD9J^Th;qtdB zS9AR2{4RC(*2t-?;}`Yv^0cdxSS7mR{F|MZ^K_3c*Y{iJyaZ8*l2u%O=APfXpG{{^ z+b0mcg|{scoqPt2$3hleQ~J*k z{`c?B^>6B{^TIRZCw+Tb<-Pgh?Ke~F3q`g5Gwke{G$l3sd*P(4m&@%!F8jS)b~$Qw z%$Hy2RRr@>`CIqDUHl>VTjYoS;W+&tS65dot93qpPpkbvJ-3}yjmZb|u6>Xq`N#-_{y6!LVt@ z(#?mjzgXT@bU3MSYu3XLGk9b+Z24&MCN<;2;h?p>YrocrNf}Lj9xvX#`pkwOHYQq+ zRs}EZIHDCFcIZ)dz@M!7|M+J8XJ|_Oq5Vkp`l0u?oDcnH*p~jL{4ux2+jsgV{kQVJ zg@0V$vNb!}dhel2zg{2u$Gh+2_nx;o@1iWHalW%Ll{%F$J44ZP-5>sqXVl+(__0TR zOGH;ixYUeU1+7+JE$z$W1gaZ1du%f+;Icx~>Y^{XO^Ga*2AkU2)5k*JjQt+qm@3(q}VQN8HM) zD!r35BcZo6s;%?=Q?22JYiQ-!PgBlx_BA zl%;!{N1pC8PsLf9B2z1#xVgtkdYoADSTfR6ZOUTR(rPcE;Ff9Mrl>5|*!x&z)@IK> zqbaeE?!?a86YX~?Y|^gHo4YgDt-Kw*rJkeygXezM3h!?x|1&f%{m<}VN&VLSt$!33 zyxh-IpDOWBslxk^(Tk|O`Ac7#?X%m`?(}!s9_zJ{k(m>tZ<)+9`q19IPrqW~`#sC2 zy^3C$w=8YP&dRc*O|4hY!p$InP$4;YOjtSiA3V|TkQb~^ z@4p%RE$r{s8uo|lfB2T%zft~=i}|;8-NkspKdMGIPbROaV7hnyxIOPyj_1+4r4Qy; z+HL&E?|Sh|Z=5mDJh>}dXPEvt?YrD@`*hYh!4Kb=J@|83)NilPc3C;~hc>4wD%{q_ zhzWO9luNcAOMVeN&0H_&c<|{BH~y%FpYN)ud{*&BOkkHl*08kR7x?4);rm1Vx4yqEYN9S|vG1&7-ST7dgSE`ZqC)q47yEQ< zy0X_t*4{V!#6GTX&x;QF@N9p+#D?pC>{s7gDL4{MJ0*)qLtugg4o0|OU zKLcBZ@gaM@8s&%m3^n#2jx|1*&s?GHc&SGB!G8w!AK{)GFW4AAtmn-zGk7^mt#Lud ztQ4_bWs?`bv?|@Yw{Pz9h}({t>Dep+jv|GNRQ>eDyN*A~PBz@pbz@DO+LBe*kA$z( z+PXSq_MYWIOWtdGey=qN^Ex&q^Fy;>rVz2?NsY7w1o>UnCZ=e|vIy(UfdnmoC9 zWl-=+ORu6SOD|owToHiOI)OG)h^Okc>^~IPzdiZ!e)!*o`;*p#_PLdRl#c)5`EmWX z=O4>k-rJe}iT}{HT(A2vf7^Zr)BEE0egr0bIJTbkZ0ptD`yK4CahJZ-*@JNKnee_9!rtfkNEB~sBX*nT9@*k?6o@4>p+ z8Sx(+=l@VCYyWL${^s8O4f_w&<{z4FCp+Eo%Ae{-{H&Q#%a5-Od-v$xGwu1JcWUZq z34ScQe2m}r>C>mnb}#v{+i$w-q^EC9I7;?vDqLRh{_LINXjQJt7!AkEr(ZrbXycO1 zwTm%Plrag(T6KOpYg5F^G;T?qiw`wUTU7S!yz^(z-q3@VAxDx5E%&JlM(tCV?>eV_ z?fCUGh8DY~YCYBtTNxEJl|MghYv$$UO%+}h@|h>6t&vgmb^cWSkE8i_L{0wR8TJnr z$#2X5BT)Zs_K$^+^?Rq)Z(j53_!0jb&mVn1(wpR4ef)Yn>n(epipjn|vLEdijN{H; zTlLURw&Fj-!GHQ6?(PxGO@A0^vcIEF^74A&Ls8{TUwp+co-AD7^}}6s=3|A0M{P`J zJo>QnsmI?WZ}ZcOXJ0${>e;1GyA2=q2cNyh|LQ+O%o**+g*W4co|+{48J;wh=y9`r z#?;PJ$QRyr`qkCxydTYC8`n+^I-2-zZ7}z&^BVIqyACHzkv^RC!6b~|^3+F*H97@T zw9;hkbxI5*a@?}}4=3zjJL@yw1jxuK^Hcj-sg~RGBmdjz->!eOe@Lc2 z;=IPs7y0A)QL(Z(rH|Twmq|z7KWrzs)x1voqv+nA?E-Vd-n(2}|F)z<{%zEpZDp%I zhm~YqI+7OQv#2+!)L5r9DrCbCi!1Hh>Ta#ka9SH$vf)N(*jlaPV@avroL->{tFE@& zRBrpVw|>?2EftqO1(O+oX6HmeR+9paS-3fm0oK?UY^tUK2|VkQrT6zmZ@ru4)SNN z{}GS>HtWj%2lM_jYzzM*#Q%>=@X=YR*HM4x)JgvF`@3j=dVhboK<3L;XCKOnf1C8d zzbRqU$Gq-zzPY6<*X>>O(w_fM;3F5QoYR$SBPzmPA1eEpe#F>#o%Hd`2S4sJRzG$& zaf3|hLDNt2Z?)EG^G{3Kl&5&wc#is(6(47WI!!Y+T|LF$XmwCuGDk{fU2f;%);@F2 zmT!A4k3~ltJ?PqTX4f=j@!19KQcq<3y>*tnJkH;H;E_?C^20rcMZ4$v*rxgmHXM8| z(X(4+wbji!G0Xje0f!$K7B21%TKc>6WB#|4zdiPO`CK*TALEamZ`{vdpJmT}J2La0 z*^kgi@$x@}57rBRnX#o`DDr03HLLs0Tj$36T@C)te`HtX<@KpjrH3=4zRuWOy<>es zgxQzS1CNY+zP~mtxO{p?yXujUL)GQ{i8CG;O2qh^`dF`;zP0)AV-2_En{$sz%nDd5 zvg(kK#fHiy#x{#)A52c|I=MM2#PG{vuQmTxclJi80EDtFOHT)=bg9ygY2J zUd6HEmVYa{G!}GOB=#z{iFhpPQi*ufrEx{2@VHdN3eezc!>R=g3=Cnxb6)v{YIz0E zd8&D?c=D9zme!|&rmWZW^4+d!UiP(o$IHvhz2;~JwP*${<+!}uZ%#5-$;(4p1}%yr zi#eP$-3+?|dxAVwCdmgyK+1GR*0X1~PThL+>C+=()22=EE-o!C)+vaNj&_vxwmo{} z)25?50!MmPHk~*vQ@GlCL#S$6siK$g%AmsKesf};2NeahD2i5k6-`|%aa8Tj>`hU- zBUT&>o|4FMs(8+nWRB&UUO{C&$)aUXZg298-7EU8|M}r>2mUiO_uD7?H{COAmLHtIxm;fNr}*L1Yq^TEocTNdX=g~KcbY`JS-YeuqO|`< zc$E2(xA}+P^_8CG_HD5}5_7XOCal_2rkzu#l$|Sd`K*vhho72!*qYwjQ#kSHl_$M5 z(rreqS(QDpHq(}*JPfv2Xma}a-(dBw%5z5Z*!H}-a`@uu{|wzT!;fBG*tPD%ghNMn z>O@88IIV8%o|oOxNAXa5=6|1)fS|3`fLKQ8~r`?+c&|L*(GkZnC5G_CaJ z^}>q9{vX5J?UVQ4Xg@M3;!p0iH(%!Zhfnt3^kebI$&S}cJ+{2u%4_B;^z5JYdC5N> z7fjXL;Ta^F6D~E9^UZxbw5mcF~sO?m8hmE0S+tjPP+jl)N(J zve6+MmqH7lGWHvf6~me*9W0csG7Swrf7Vc<=f38dO*#8{HuIU-oE>C-JweokOTuAvq#*GiKX$*KYM>>{%!7W zv48t)Odr0N_;+Q$Y@JLE$A{zHrPn{4Z!2Bj@lR>%hriQyu6Io=T;;v=<@&;DJ9oAF zZ=LrpwO2B+lX2pdJ&8M?b{%#Wb!XQ4vbg8S!;coLB+^Y*haFB>m6)0I`q2ENS`k${ z-pE>Qj&iD4C75fqA?TJx)u+SPjvkwGPpUOaL_5s;d&%phshNo{&HpplYdiCH%u(1{ zurR8gRr8d+bp7Ga^$#Yty;`ba^5W0VW!o?RyP5OdO;Gu$NL!erkf%~f(4j}#myU)lb}P+HSm`X-JxBDK zT&s_(jEZ)scf_TNHGcB^Z{>Ha4qxoMRck}g^R-=vAHGV=xVF}BYD{kB!wm&{*54xjPTHRt zf6F;UD|a9JAO0V+KbmPstT4Ydy`@HR)vI52)5ZR1$7J2wyR~m-R{P)7qjv&(rZMd+ z?=G~MW6qbhKX6Loj7J|{YoB^<)z_muJKZ$%sb$Eju%2|SkZH-ihjvX(<~%jmRC9&z z@hRVaKl%@ArJXOWd9?GIP59${(Lc!_rytqR|0Dmf=bwB*j!@`Qgj~Dl@pI=xnQ)pM%^J|Sk$P0I?v!A237(}`WU0L&%ZxC|0eUJ{6qD^fAW8PTwhW5+2{J6Nb~OfS^pV2XW1Xq zZ`;THLvT%&9ruU3$5zT8s&AK*`7!%ZKi})BZ8IP2tv>QG?smoWBXJTxU!AJ-D{VPx zEK?WSf99h_&S`_S?mEA&=1gX6JM|)U%Et(f=OXXJtO%6>U3PIHRX#?6o z(dsU-`dNq}_p2YPM5cNbwSW2fTmDb(_5GRgH{HMG{9X7b@WIYHnIHX+`wyIN-7jW( zpYg2Cb@fA0>-+zRFRqyP+p+K2Gwtft-MLnegDZ5^_iW#`XWCW8N$+mmd%CpI_Mg(J zhm)S~To=l}M&p6u)(!X0ORQLvCwnOFo3PA=&nw#_{>aQe^mv-wk{7jEz4^)NzK*9) zpEQ<#8?&BshUSH}GA>zG6?2sL@k@Kn&6=_@O+x)`_J4*A&rDVxmTmg`xBgp`h0xH2j-`3>cx^?Ha)#-Exe7JhA_o1{s=b|6;AL}1I9l5sj`iIi>?WX(rUv9HA z`S5n#($wYsNUguD+wdcIh1N4(d+)1X*Nd7h{dz~gKPK{!MOVcd zTN}CJi4Q-{_@it2SUY?r`}Ak}j7Mb*TS^VKgxT{p9;>alJCK~|&gx`Qv)lHVGj~Vj z6|Ka7;hhHlZ5I8U@$6C4v^CGZdQfn4ZdS-b*K?KonAxM-Hm~tX?at~mleyt1eWoCy z%Hoc%k6UVEYfSzXi#nnCzXY#Ossdkt2(7yyRGmisLErrkHruiNZU3kE$Mo-{I;I-! zYxX($KQ!u(SHIQv{^9vs`-gDUwo86f#df^^rY}(w_c1&Ae)JFF!-6*s)~|KUFUbD@-?rv%L#u7k(%FE(kCNZ<5oK7$_XQj3#)q$E!R13aP;KmQ=2M|^L~99eDrE? z^ZMT9)9)LtZCq&K%{^TsY2(!m^J7nCro~>>OxSd0pXIUYxNXABq5iK-48H7LXK%dn zyp5^;s*6>}xuXqxj7}s?F%;b>@oUndr!!>E3%4G-aOemBTj!7G|8ZUX&0lxop3dKG z_SycoyZ>?S|8Opz`NgiV#p`R>Hi8zmWyFj8(cST}Z*OJp(jWN`%ep^KKYV{n-_noO zfqOo(?W|2-u)ee8KSPVuqRb%g!u9tu^B=x7`uA0=bXHzP~-3#^)7Ta$WKj42``tUuW-5*5kC2TBLonKp__US*v?}#7a$K(V* zy6t}8FZE(t)%hD=9QB09`kFQo_m~sZfb?krMX;_o-98b&9Tv+GcIeY#+9{BOT9`S`xUsKe;V;> z$1RK2jzu4StP!&oZ#d$7_sN_MSM7_tm!1sU)hkmc6j4(vrMER|M@CYZxS;-;i)$8t zcdaI-3_na=eqsG+g8F;*qt#nq{{HsMa zn>HPKtQl~$KK)^F%yZ%HqZj+wIj24OacjpKS5B{X`)Be8@_%Tae_Q#X`yaRK!}mW_ z!r$gU?r+?`W#NyxA6V_QE2ed{}Dv(fn?! zvh@!;YZM>+UfpYbgzdBYm3zz|_bNOrAR zp`$Jqyk2UDclD2``w{02Ze-oe(^^_py75L;M4$YT3r7Rzu|7)o7ybI=Lq*JdNu9%& z?H@d<|DkdG?dJasET{iY+9&&``fuMq@gLepua(ai%c;@-IRBA&e~s~)it~s6GjP}F zugLs#{9*d;3nu;oKZ?9XKJM>cy6MA}I^C;z>r8z0KHRD(eslVfyu^>9ch{d5R!%eK zJu;Io{%gj6hLp!2BF|?1xap@o-~52T*2?KA=gdPbjb*lNtL>lj;!|i(QM8V$$WtEo zOAn3y*lDYr`?y+=wg2?0r+pHhAhiBJw-A0e1+*kPb9oPA9+|5 z^WF5c!PQs0^0r1v=;Y?uN?!XGzw6t(Im&PM&VP3`u9Uy*`0*zeuWnBBou0f==y1sT zjzgEHX5CP`$1NCU-tsX*T=UB0gGo!pI}YyjEBduHD(3R!J^c$;KRX|THtf#;8ODK7 z|JdqOURUk!tAFs_zx9`X=U2|Jvc?bJO{OB0*QI=QRaX~23KvWg^;%an>v`~E zuUX#$m+~iiO_7PY>b13gU)F(7{tw*0^?x+@k^7&4eN_$1HIs@bm+v3_X3tY&{D}X} zjt5=7DL)>63;xL7IL|jgtW#e(BK=b9nMs?^%dVT5bM3Xxw`muzv$uTxICb-Vu}>?K zWC|jB>IDPVw$ImjX(Jc^@I3d&IR#&KuDntrviZ-hzVzSy=~^@PXS@mtIFe+!>yQ7G z#KUpokLH?MeKDA0FC|);sI?`v=VN-urmU@+=W5pRMdq0cH?Pzpp|`Q6~(<@zn`?IrI!4jr<7tNg&f;p0c<$J6#~ z4~RRz^rt<)3Fp#%AMVXvYc{_!duhe$|5%wYwPR8 zO@FMGb6q-;{JL87je7WvV_Rixl7nS?maU5QeNeDtx}U-7pe3PNp;Ods zKLcyTgqw9I?U_x^|4{zV@TPywslfV7`&;Xs+Kc4qf*w3h^ILEe}Rcijtt+^I|Yk$kuAKWLuVf&lwj|)G(e;gxc{&!z}_Uzwx&0{~Z zzt#VpmR(#E`%(GFY+ql4n_2(FKlFE`Ua8St5R>t}%6IPd)~|b$?jPMRU}K`tb?fx; zP0@$B)-QLLb=GZKJmEpclM6l1?blqYyKb`D^4yxgTVoDSnzXp1V6B#D*3&6QPrDXN z)kn7}ZAlNSDSh$SSZm&Gn=^%yYo=;mXcJt&>ZwGIZOGglHDR44PgxsRMqWGO&e^-Z zua#@ZnvjBf$6Di)h0@aobgS3*0S}hUrjIjCY3gQ zS?0G-ckjQl>iv3U!mXPTH*Ou)J$v`=nT^r6qmQaw_L#VMZ*u36haW1ce(Z_Os>sn3 z>y2?!7mO-g?$*j>P^xupb&#){$ji$;%PmhXl~{H=Eay_M)Q+w#D*~1VZLRvM=+-M0 zFx6}8swO zve|||((f>3T#|W@{Uh79Ti081gQGsg*jawsSZP-{`@^@$qwl#ktqNElZ}CuOvFY+? z{YP<%D_ajfv(UI!Vi=LN;o+Y3(qU_3rptGpEhs(~bU3+~M^B#Dy<^jw`-~HRMd-ZO zI{A4{KEG4&*^gT{1fAY7X`7tjk%D)=O=r}dZ(fZ!W2e>r?OT51O25i|kxd64X(T+H z`P4GbSg_-GN@Sn3VAs#$f4nOH8JZgZq+I?J{P91-KaQWj17fq5AG^O<>&NaR_H4N| zu0_+U&NrFdXR5fS&s>x7L$SF2xrg2w8_7q1z5TA&NT>9c>dj5Bd>m`Xz4XJki4XtU z`~O~Jrq6lQM!x0zhPSoF+KZ>E2d(wGcV-pz%2Ur(tnWYeQ2WDqu_U8R8=FsOj_pfzGCugJHkkj&&N5}ec$p7hRbxYr z1U<4*zqVN`tBtLd%c5tt;qj!`p~s$2bpI|L$M}|&0X)MbfA&0hYrRyB;*Z4NE?M(8 zw7=p1!2YQGkBIWOkJ~?%cht$8|8V#~+4OmQKe8X3m;Mn{`QT&Q%t!wjI;6JEEv#L6 z`oWBxud&`oCRGF-bv|MvWEN2$n%<&BAr*PX7gHGWJ! zzTw`FZqJWA*Q}P!t>t~&`)=XK=K)*2Z|3dc|JZ-%QT!&y+rgSA4Zbe639bC7rqr4m zHf6O_$);1KE0PvRb4T+_P1$gDxrCF}G z=`7m5wrZ=KT1m$B#Zkh)_WFdzu%=6_iSt?&6g2&d;cun7gZ~*e z@xPIM;QFKVx9T6JAN3#N9jD#9#GCe?;qa`;T_5|q=bbc*j;nb6h;6gl;>Yze@kh)n z!}n=j|C;$A%<#62L2GaM`o1HNG!L~bTiCW-)v6-Ouvf-JORHe<+r7P}5+O%UO|=MK z-M#v)Vd-OzU0+w7jCpwYLBWrz$!jGnA7!aa%~ zuekG^?ZuN0Us%e1T7K>839q>rG?+h||KsBQ9r~y6N93dZH|xIz{+(!Yo-w}e+Wl?e z{WbmzLD##AlZ_qd z%=Gr68as9F*7dWW|7^()3tn&I8X6}l=Q{0S;mvckouHZYT&oa+2(5|;Z{s#&?jPMB zPXFV+`#Y*e|L^wy3|a4gsJb8HZ<)vPcjNwCf2JSzoj$m~X?!%lVV~%=e{2=XkNwuK z&5-i%GClI+_TnFtkKPy7trO0$=e1E?dGE*XWBYV2ncj^%b^h=^(T{fBxv49%%x2~7 zUVWY4UH0frHg(adi3JrpkM+-Q_StVZPg}C<$P>$QzNePwawn(Bgw9M>Y+M{S{fePv z9^agzE`f?Q@68|atZx6bKfPnAO_}z&b5RfP+?rGPUcB#QcFN4MMBfJ=wj|E>w>ecb|3`TK zKQ8m%Ty@9xZ*lLePxHT3f24k^agFYke}*;2KlFcF)Hwcd1)bqg<$uh-%lMDlhkFx0 z7(W*8va_pr9{*$NBVO|(Qs!NzmdifAKdjGn!))TR7t?}Qzlzh^wc|ti(g}fw(qp_k zAO4ZqSg}WyCr?_xa-LGxq2!l)!uYn?txFHrKeVSzN;1#CX&S%$EYC;LtDQdy=CwV?A3k!krr|wn#cT_Kem6^{-FG5uDH)7 zJL^A|KY~B1AD$Jr#?)8Z=g0Pk{2Ud>T`zCFzcKday2Z;PD~|hL(aANv?pH{To z^VB;5lU}b?bG-`Zx_TA0tU6>gX}P8I?3-2-C<`(zga%twz+a~rDDUf4J)HWUL6wE zI@TMXw)&9JtmVPeV!m9BShmV_^Y5P0^*=QDT0f-w?D@~olwaZeE%oE_ zt)-z^xxH4{rx5X8QKeKENZpma?5^u%k!Jg=g$_e)9sJ;=Q+6i_TATEQAsb$ zrLLaYpSio~+_gHZ_p)F22p#?#nXta2vUxS^!s# z7R=2|GWa{Ae#PH-`LFBO{LOy#W&h^do|lLEuhs2r`*vPzsoR=YK@sw6SCzc<=ht83 z)f*XJuvEuR`Qzt*V)lPzr~hYgVgJXm^FKrL{9EP!8Rq+z$t3<~;FkZ#cltlWBIf@L zEHVEX4xWE&{h#6dvIhPi5&s!Jl*RuQkpH3d{2yO^=KX)QCXBzjK|O_!{C`CCk4Ui} z*$(RKSFnGx`e5Gic56T1`a`aNCzi%{ZogHxe35tR%K4)5GEp^dAH}=wUHf$Im#s`j zxs}_7?n>5k%SGSK%*x4K_m%J0gwtV>EpxSYtW5iKJWcS}g{fBA%-(vfJX@bm)d=0c zb)Mcfwa6`n1(UvoytsJa)SRVOTNm?r?8(2rTJu=b>1*OVFFcF?WAZ^Ub%j|1)frKc?R{pM62J z<)7ILAMWM*_xjQE?(`(P;^lX4)>v)%@N8kjsgFMDl}xyr+@N?>mF5=f${s{gV5&GI__L-hHZ%#Yju80EitocwU*{=~cf-zv9#@IMlNQ~aU$(f)MB|J~GAVo#NS|H^&VQKdniR=Z)wxY z>L%wu{+wq#+wO4ED>r|&(;I%QnXP?tF;}akKgVe&L3Id{_E_&iHm<6KNR(C`pO%wt1IG$dA9b| z9h-KUeRw6Nt25DH+YVv3`KBF*uAlz6%5>4nQ$;4 zwp8Ql;YS~)E_WApT55HpYHP+hVcQrrvo>qaw;Q&m26Oi;wF*tt2wn1A;>wftEyohG z-R4GxW?WyYWwA$0Z;E!}Mw8{v!fv83{RF>$U|?WiU}oTBU|ztyfobRMee1)%=6*Hz zbk#VjaZFR=C}>BJ%9=^uE|V^wh+=~@aU1JD6m5Td__6+t+JYr z;m7+&toYwteULBma#CD$e1%(nr&WGODZfO;q{9IlCvnf!j@yD)=bH|aHddX zgQcEPOXjte!Hlz#o=O~^6uPoDocrQb{kLm=8T5L7I2W?n#zZ}B{}#i@Y4MYuUj3Qs zwMFIApSVnalU}PWcey?vaORF&aov5>e};oB{~40x`RfkZfAD^PbNa)l``i0EKgvJK zZ~UU)KVL>qKUZPf_4WHS|3qFi*)No3mAB)fyX2&LrWe5(_IzssKV5jaPiU)<_|EE? zOaF%V?7#6j{qUB1k`I3b&Hu*wAv8Unz4Oe5;3>s-PV;xHp~M%L{+w=0mnmbb{QBIokk$XKj?Js!BY|^@D(_kHinbkH+Ie8pU-)xRaOOL&{I9fPL@L%13h6juOaa>w&|KNlE4>ji>ZkI0Zaa;%Lb3E3UcFtX{ zx@6OxA5Q+a{5-eTx_z^m>-Wu`xx(MKQGKS(>uO$Qzl}yS6t@f1%x^n2O}fj*VYT0M zU3KTqRY|LZo4O+QROVcj|qUEc~1Ad^BF& z*;aV?%EHFEk~NuFQYDSL+OKR|p@S{72)`Kc(2LZFUS->XeTzxWB(CrzXF8 zLEE*rHmaqMTrVel6g}2wzvbbjxOd(%F>72aKE9XPFm?ZCyR~0mI|fwj@LMLQd!=j6 ztDxoK{8oFW%z4h`E!ZBKE^&EkmEn|Chd1m0>OP)mzvbWNzjMEK#mD}d^YZdh8*{5~ zr}=}{%D7sU#^@~!s;F_vJo$N-=-M|=|9q}Lbo@U<^QQj{FB<+c92B?zQ2g8PKf~vj z>kjwWKTHOlq*DLIq5eVl{2!Kom)HONa)A+dJ!H4;Z?{eQe+Jfn*XrzkR2}~I>xb)q z29}E-w!gWm*Z(N&W7y8$7TNP<`H#-F&C`{8=Fi#7b^X{p+mG$-`fJ{me%-wF+S~PS zbY|JAWv{;N>#O(X?VJ4H9|}&Vwx3n)Tivz1vyE-eri#Rum*;Bz>^@TvbIZ#_ z<*DArYnFS@T7B&D!QiLgOtrmiW=!u5HSp$?5?b=nH;r$*y-h)V=uuN0bDc%|Hhw+Y z(!XEw;Dyr3fsFnRyptM`^UGA2d3f)=8m3=!{uJ;~^oLVzq`K+;wnrza?9XYDu(;qy! zlH7A9OFwyfqPnHuoXo?*y(`-nT1{H*CGt4%T&SYRbNS@Hb}BpTYk_L;jDL@VA~x z`jUUrezbm+t8b~}|ET&pE=Iq7YrpXAh(9hrw)3~IE#>ZBa%sz1^TV^IABtzGFtg5# z%jc^wIv@OD-h2}&+p|Zv{Ab9YmY{g(pM1imTl_*FZCqzuo2M<_eJE&Y*YT&7+O6*W zZB`~L&x?C^RLqv2m9%+Qi82pw%=31GtxHxVZOD>{pLX^$*B!@WTMI=EzHIm*vsm|V z(uRtvJmIC@g8dO|mg^tB^!JLEQ>B>e)GG&_wmjE-oRMy{va@G(aOm>CjsI@gZ=C<; z{_m<9p{xHH((7-net0Ebc%N`~)V0P(*6aD@1%50)R6gz3_cs0O0T)ekjgQRZzP88y zQLNghOZjG!DwnrLm+sxLYu{!4NzeWE?b$Z{X`y8uzhu1Lkw*m|*2Zfd^Ov7~W$Moj zJ9f>G$%_nIYi+VVm~lpO!KP=szEyN?nd-`U{Py9;h89r~w@kE7&DA-~D7PuE;*ao$ zx8u1h#1GDL+5SCjm)XRuPiI_q^{ua5@!IOx^7_ic(v`2H-tAnORrPG|nz;MfQrDK& zuZoY2J^%JuksX3m?!)r{XxP@ZP&`&$GL8=-mcHT zaZi8ip&eB>`P)lXd-^2P_k_-H=bd$`OmxhW!(M!Ib##69%g%dNDSRsX z-a4f|d4;ttEe1Q%_H8|V%wmmM`SBewYQ+*bTI`t(x^T%;bvv1pEbDZ7Z zXx&E>)!7d+Ke`pqeemjG!79sb`TnBbyp7*B9d!OB^q-;WYi#%ZAFAzdbw3>Tzm!|! z`Z)fU{y)+7H>W>rKRjKVrFU&j(2t)V(+}G7?h%-_@s6v3xs~18b;~=aMNGJJ^XS5} zwK*ToW=&du?(wFKLbJ?+bM&=79Q@Ca|M5NhrFnL1Ig=JnOW2h2n)j&XxojO9U8~bN zCpPh1mVI;Oh30Q=e?h1DwpDT0!e?AQX|Tuti0R8muO1f3aXywQQ|e>0`LV}mqmA{9 zR0$qlj$Kn${`NU*Yf9F z-@onbW}CXyQ1h}?$s0opjl(}p4co8$WE0QEl$~ z#Zzssyd^7lo+|$S?8#H@lPBl?txR77Zo5H8DbcC=`TIK;Z2oZmk393k-LrSQU&{UZ z`m9lPX56Vq5?`awCja9+Te;+LIWvc0(e$b%{wdd2?z$6m(4@$38D~@e!!o^A8~x76 zn%C~HMOPI13G=r3o(ow2ck`4&+bC0!ybYV?g?o$6I+`SF8aCCdX!%*2Fgek`{(=wN zmrkyz?CMeEe6(qw>^!3_%I}j51seRwMrIueCTf9)MffA zYyU!NX2%eta`DJN%tBpxZ@Uvg@c|*OUcU<^5-};E}YPI{i zR>8Aho)&v@MPyF>1*W~mJsQkE{`_ZX`csqgpP}jY59!DJ-^>r))qZS$*#3uVn2kc6 z@}IK*3{ABa@{T{||4z_v)%&9H?8id+j(^*8drJ!dshqxn`b?|9aZs=mR5Fn;L_VO}|1Dr-yePzOZtdzv;0{ zhaSBO&KC3*<~di{r>u7>j$1I8x$WfUKNnLk9sMn_tMppr^wX^xsXyBaRbHw*+(9HC|W%A^5MiyD}vgjN{yzf zN?xd$Q4w@Jyr9jhm&a#Az-oWJqsQ5sr+URl9DI5uQC0bIh{29KDca92t?xRk9u=`F zWOF*FRYl9Ht8;T$SzafsdZghj9%gFHWAd@$N8q{-H}=%}Cdd#-*Kf01mfCdcN8P+s?XWc)L^kf&6IL3wO`bcf!pG0GY1NaR3%&O5_7-+--(lTd zaav@_i>F&MQ~63>gdPn$bm7dWH;?6KJ=RFnxNs!oX!ySqCkuDx+L&7Cxca~K3_G~J z^RT1*Me#R=zg7R({cZivkTSpFKf|W^hpnZn^Z9CIf7CCoD0=r#x
    rq3;&3JzOkH7u<$g^McPvD2&;XgQk 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 F0stOiW6S^m diff --git a/doc/src/Eqs/pair_body_rounded.tex b/doc/src/Eqs/pair_body_rounded.tex deleted file mode 100644 index 54e095340f..0000000000 --- a/doc/src/Eqs/pair_body_rounded.tex +++ /dev/null @@ -1,13 +0,0 @@ -\documentstyle[12pt]{article} - -\begin{document} - -\begin{eqnarray*} - F_n &=& k_n \delta_n - c_n v_n, \qquad \delta_n \le 0 \\ - &=& -k_{na} \delta_n - c_n v_n, \qquad 0 < \delta_n \le r_c \\ - &=& 0 \qquad \qquad \qquad \qquad \delta_n > r_c \\ - F_t &=& \mu k_n \delta_n - c_t v_t, \qquad \delta_n \le 0 \\ - &=& 0 \qquad \qquad \qquad \qquad \delta_n > 0 -\end{eqnarray*} - -\end{document} diff --git a/doc/src/Eqs/pair_coul_soft.jpg b/doc/src/Eqs/pair_coul_soft.jpg deleted file mode 100644 index dad9c745ba6bbb555427ca7b6fb448bc2853caed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11309 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 diff --git a/doc/src/Eqs/pair_lj_soft.tex b/doc/src/Eqs/pair_lj_soft.tex deleted file mode 100644 index e32f11f0aa..0000000000 --- a/doc/src/Eqs/pair_lj_soft.tex +++ /dev/null @@ -1,15 +0,0 @@ -\documentstyle[12pt]{article} - -\begin{document} - -\[ -E = \lambda^n 4 \epsilon -\left\{ - \frac{1}{ \left[ \alpha_{\mathrm{LJ}} (1-\lambda)^2 + - \left( \displaystyle\frac{r}{\sigma} \right)^6 \right]^2 } - - \frac{1}{ \alpha_{\mathrm{LJ}} (1-\lambda)^2 + - \left( \displaystyle\frac{r}{\sigma} \right)^6 } -\right\} \qquad r < r_c - \] - -\end{document} diff --git a/doc/src/Eqs/pair_morse_soft.jpg b/doc/src/Eqs/pair_morse_soft.jpg deleted file mode 100644 index 9c8321eba798943de9ad293f80e95d946e872f95..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20988 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 TmSyXa@`{yCpivd-;Qu!P`n?t+ diff --git a/doc/src/Eqs/pair_nm.tex b/doc/src/Eqs/pair_nm.tex deleted file mode 100644 index 4adf9331cc..0000000000 --- a/doc/src/Eqs/pair_nm.tex +++ /dev/null @@ -1,10 +0,0 @@ -\documentstyle[12pt]{article} - -\begin{document} - -$$ - E = \frac{E_0}{(n-m)} \left[ m \left(\frac{r_0}{r}\right)^n - - n \left(\frac{r_0}{r}\right)^m \right] \qquad r < r_c -$$ - -\end{document} diff --git a/doc/src/Eqs/pair_srp1.jpg b/doc/src/Eqs/pair_srp1.jpg deleted file mode 100644 index bbbdc43e059778ea54c2d297deade4cd99f735f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3537 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 S`Q_=^cix>8q!tkWe-i*dtf3_U diff --git a/doc/src/Eqs/pair_srp1.tex b/doc/src/Eqs/pair_srp1.tex deleted file mode 100644 index 45aa005d86..0000000000 --- a/doc/src/Eqs/pair_srp1.tex +++ /dev/null @@ -1,9 +0,0 @@ -\documentclass[12pt]{article} - -\begin{document} - -\begin{eqnarray*} - F^{SRP}_{ij} & = & C(1-r/r_c)\hat{r}_{ij} \qquad r < r_c \\ -\end{eqnarray*} - -\end{document} diff --git a/doc/src/Eqs/pair_srp2.jpg b/doc/src/Eqs/pair_srp2.jpg deleted file mode 100644 index c5d20dc212782398d5130d026444315148d1866b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5648 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 diff --git a/doc/src/Eqs/pair_srp2.tex b/doc/src/Eqs/pair_srp2.tex deleted file mode 100644 index 19cb19ae72..0000000000 --- a/doc/src/Eqs/pair_srp2.tex +++ /dev/null @@ -1,10 +0,0 @@ -\documentclass[12pt]{article} - -\begin{document} - -\begin{eqnarray*} - F_{i1}^{SRP} & = & F^{SRP}_{ij}(L) \\ - F_{i2}^{SRP} & = & F^{SRP}_{ij}(1-L) -\end{eqnarray*} - -\end{document} diff --git a/doc/src/Eqs/pair_sw.jpg b/doc/src/Eqs/pair_sw.jpg deleted file mode 100644 index f60f07fd27d233eb6e5446aad7c3c42fd6f1bfb5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28707 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 H|8D{S{YM^) diff --git a/doc/src/Eqs/pair_sw.tex b/doc/src/Eqs/pair_sw.tex deleted file mode 100644 index ebcc39d77b..0000000000 --- a/doc/src/Eqs/pair_sw.tex +++ /dev/null @@ -1,18 +0,0 @@ -\documentclass[12pt]{article} - -\begin{document} - -\begin{eqnarray*} - E & = & \sum_i \sum_{j > i} \phi_2 (r_{ij}) + - \sum_i \sum_{j \neq i} \sum_{k > j} - \phi_3 (r_{ij}, r_{ik}, \theta_{ijk}) \\ - \phi_2(r_{ij}) & = & A_{ij} \epsilon_{ij} \left[ B_{ij} (\frac{\sigma_{ij}}{r_{ij}})^{p_{ij}} - - (\frac{\sigma_{ij}}{r_{ij}})^{q_{ij}} \right] - \exp \left( \frac{\sigma_{ij}}{r_{ij} - a_{ij} \sigma_{ij}} \right) \\ - \phi_3(r_{ij},r_{ik},\theta_{ijk}) & = & \lambda_{ijk} \epsilon_{ijk} \left[ \cos \theta_{ijk} - - \cos \theta_{0ijk} \right]^2 - \exp \left( \frac{\gamma_{ij} \sigma_{ij}}{r_{ij} - a_{ij} \sigma_{ij}} \right) - \exp \left( \frac{\gamma_{ik} \sigma_{ik}}{r_{ik} - a_{ik} \sigma_{ik}} \right) -\end{eqnarray*} - -\end{document} diff --git a/doc/src/Eqs/pair_tersoff.jpg b/doc/src/Eqs/pair_tersoff.jpg deleted file mode 100644 index bd3e147192707ee8845611fb31abb71410e67006..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 36139 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 C!yV@U diff --git a/doc/src/Eqs/pair_tersoff_1.jpg b/doc/src/Eqs/pair_tersoff_1.jpg deleted file mode 100644 index 79600b499c33addbdf11e16602f2867fb02f2b4f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 36584 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 R + D - \end{array} \right. \\ - f_R(r) & = & A \exp (-\lambda_1 r) \\ - f_A(r) & = & -B \exp (-\lambda_2 r) \\ - b_{ij} & = & \left( 1 + \beta^n {\zeta_{ij}}^n \right)^{-\frac{1}{2n}} \\ - \zeta_{ij} & = & \sum_{k \neq i,j} f_C(r_{ik}) g(\theta_{ijk}) - \exp \left[ {\lambda_3}^m (r_{ij} - r_{ik})^m \right] \\ - g(\theta) & = & \gamma_{ijk} \left( 1 + \frac{c^2}{d^2} - - \frac{c^2}{\left[ d^2 + - (\cos \theta - \cos \theta_0)^2\right]} \right) -\end{eqnarray*} - -\end{document} diff --git a/doc/src/Eqs/pair_tersoff_2.jpg b/doc/src/Eqs/pair_tersoff_2.jpg deleted file mode 100644 index 6cb8778a094253cc38776e110baef3e89948b75b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13756 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

    OT~H=0i{em;LIfvJ%t#RX49s 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 diff --git a/doc/src/Eqs/pair_tersoff_2.tex b/doc/src/Eqs/pair_tersoff_2.tex deleted file mode 100644 index 7b5beb8ef3..0000000000 --- a/doc/src/Eqs/pair_tersoff_2.tex +++ /dev/null @@ -1,14 +0,0 @@ -\documentclass[12pt]{article} - -\begin{document} - -\begin{eqnarray*} -\lambda_1^{i,j} &=& \frac{1}{2}(\lambda_1^i + \lambda_1^j)\\ -\lambda_2^{i,j} &=& \frac{1}{2}(\lambda_2^i + \lambda_2^j)\\ -A_{i,j} &=& (A_{i}A_{j})^{1/2}\\ -B_{i,j} &=& \chi_{ij}(B_{i}B_{j})^{1/2}\\ -R_{i,j} &=& (R_{i}R_{j})^{1/2}\\ -S_{i,j} &=& (S_{i}S_{j})^{1/2}\\ -\end{eqnarray*} - -\end{document} \ No newline at end of file diff --git a/doc/src/Eqs/pair_tersoff_mod.jpg b/doc/src/Eqs/pair_tersoff_mod.jpg deleted file mode 100644 index 2618943d85d79e82873253fea293fb98c4d5ac21..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 91727 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 diff --git a/doc/src/Eqs/pair_tersoff_mod.tex b/doc/src/Eqs/pair_tersoff_mod.tex deleted file mode 100644 index eafc4fdeeb..0000000000 --- a/doc/src/Eqs/pair_tersoff_mod.tex +++ /dev/null @@ -1,24 +0,0 @@ -\documentclass[12pt]{article} - -\begin{document} - -\begin{eqnarray*} - E & = & \frac{1}{2} \sum_i \sum_{j \neq i} V_{ij} \\ - V_{ij} & = & f_C(r_{ij}) \left[ f_R(r_{ij}) + b_{ij} f_A(r_{ij}) \right] \\ - f_C(r) & = & \left\{ \begin{array} {r@{\quad:\quad}l} - 1 & r < R - D \\ - \frac{1}{2} - \frac{9}{16} \sin \left( \frac{\pi}{2} \frac{r-R}{D} \right) - \frac{1}{16} \sin \left( \frac{3\pi}{2} \frac{r-R}{D} \right) & - R-D < r < R + D \\ - 0 & r > R + D - \end{array} \right. \\ - f_R(r) & = & A \exp (-\lambda_1 r) \\ - f_A(r) & = & -B \exp (-\lambda_2 r) \\ - b_{ij} & = & \left( 1 + {\zeta_{ij}}^\eta \right)^{-\frac{1}{2n}} \\ - \zeta_{ij} & = & \sum_{k \neq i,j} f_C(r_{ik}) g(\theta_{ijk}) - \exp \left[ \alpha (r_{ij} - r_{ik})^\beta \right] \\ - g(\theta) & = & c_1 + g_o(\theta) g_a(\theta) \\ - g_o(\theta) & = & \frac{c_2 (h - \cos \theta)^2}{c_3 + (h - \cos \theta)^2} \\ - g_a(\theta) & = & 1 + c_4 \exp \left[ -c_5 (h - \cos \theta)^2 \right] \\ -\end{eqnarray*} - -\end{document} diff --git a/doc/src/Eqs/pair_tersoff_mod_c.jpg b/doc/src/Eqs/pair_tersoff_mod_c.jpg deleted file mode 100644 index 311ccc81ebaa809dea7da497439a7c79a405acd3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4211 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 QJD1fz097gs_5W`I03NQqJ^%m! diff --git a/doc/src/Eqs/pair_tersoff_mod_c.tex b/doc/src/Eqs/pair_tersoff_mod_c.tex deleted file mode 100644 index 8cea2d382c..0000000000 --- a/doc/src/Eqs/pair_tersoff_mod_c.tex +++ /dev/null @@ -1,10 +0,0 @@ -\documentclass[12pt]{article} -\pagestyle{empty} - -\begin{document} - -\begin{eqnarray*} - V_{ij} & = & f_C(r_{ij}) \left[ f_R(r_{ij}) + b_{ij} f_A(r_{ij}) + c_0 \right] -\end{eqnarray*} - -\end{document} diff --git a/doc/src/Eqs/pair_tersoff_zbl.jpg b/doc/src/Eqs/pair_tersoff_zbl.jpg deleted file mode 100644 index 20d60d225689e11d7f347cfec1106a6e2356da05..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 392677 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

    #oG1d9n}W#6@*nBg0n9 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 z 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ⅈ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 b^JTQ3ksGyPG>REUgJ3iWXtXGR`TtD-mPd6^ diff --git a/doc/src/Eqs/pair_tersoff_zbl.tex b/doc/src/Eqs/pair_tersoff_zbl.tex deleted file mode 100644 index 902819aa1b..0000000000 --- a/doc/src/Eqs/pair_tersoff_zbl.tex +++ /dev/null @@ -1,33 +0,0 @@ -\documentclass[12pt]{article} - -\begin{document} - -\begin{eqnarray*} - E & = & \frac{1}{2} \sum_i \sum_{j \neq i} V_{ij} \\ - V_{ij} & = & (1 - f_F(r_{ij})) V^{ZBL}_{ij} + f_F(r_{ij}) V^{Tersoff}_{ij} \\ -f_F(r_{ij}) & = & \frac{1}{1 + e^{-A_F(r_{ij} - r_C)}}\\ - \\ - \\ - V^{ZBL}_{ij} & = & \frac{1}{4\pi\epsilon_0} \frac{Z_1 Z_2 \,e^2}{r_{ij}} \phi(r_{ij}/a) \\ - a & = & \frac{0.8854\,a_0}{Z_{1}^{0.23} + Z_{2}^{0.23}}\\ - \phi(x) & = & 0.1818e^{-3.2x} + 0.5099e^{-0.9423x} + 0.2802e^{-0.4029x} + 0.02817e^{-0.2016x}\\ - \\ - \\ - V^{Tersoff}_{ij} & = & f_C(r_{ij}) \left[ f_R(r_{ij}) + b_{ij} f_A(r_{ij}) \right] \\ - f_C(r) & = & \left\{ \begin{array} {r@{\quad:\quad}l} - 1 & r < R - D \\ - \frac{1}{2} - \frac{1}{2} \sin \left( \frac{\pi}{2} \frac{r-R}{D} \right) & - R-D < r < R + D \\ - 0 & r > R + D - \end{array} \right. \\ - f_R(r) & = & A \exp (-\lambda_1 r) \\ - f_A(r) & = & -B \exp (-\lambda_2 r) \\ - b_{ij} & = & \left( 1 + \beta^n {\zeta_{ij}}^n \right)^{-\frac{1}{2n}} \\ - \zeta_{ij} & = & \sum_{k \neq i,j} f_C(r_{ik}) g(\theta_{ijk}) - \exp \left[ {\lambda_3}^m (r_{ij} - r_{ik})^m \right] \\ - g(\theta) & = & \gamma_{ijk} \left( 1 + \frac{c^2}{d^2} - - \frac{c^2}{\left[ d^2 + - (\cos \theta - \cos \theta_0)^2\right]} \right) -\end{eqnarray*} - -\end{document} diff --git a/doc/src/Eqs/pair_ufm.jpg b/doc/src/Eqs/pair_ufm.jpg deleted file mode 100644 index 40273da68063274cd6d6496d38f93ff97121df91..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17830 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 diff --git a/doc/src/Eqs/pair_vashishta.tex b/doc/src/Eqs/pair_vashishta.tex deleted file mode 100644 index b65056a254..0000000000 --- a/doc/src/Eqs/pair_vashishta.tex +++ /dev/null @@ -1,22 +0,0 @@ -\documentclass[12pt]{article} - -\begin{document} - -\begin{eqnarray*} - U & = & \sum_i^N \sum_{j > i}^N U_{ij}^{(2)} (r_{ij}) + - \sum_i^N \sum_{j \neq i}^N \sum_{k > j, k \neq i}^N - U_{ijk}^{(3)} (r_{ij}, r_{ik}, \theta_{ijk}) - \\ - U_{ij}^{(2)} (r) & = & \frac{H_{ij}}{r^{\eta_{ij}}} - + \frac{Z_i Z_j}{r}\exp(-r/\lambda_{1,ij}) - - \frac{D_{ij}}{r^4}\exp(-r/\lambda_{4,ij}) - - \frac{W_{ij}}{r^6}, r < r_{c,{ij}} - \\ - U_{ijk}^{(3)}(r_{ij},r_{ik},\theta_{ijk}) & = & B_{ijk} - \frac{\left[ \cos \theta_{ijk} - \cos \theta_{0ijk} \right]^2} - {1+C_{ijk}\left[ \cos \theta_{ijk} - \cos \theta_{0ijk} \right]^2} \times \\ -& & \exp \left( \frac{\gamma_{ij}}{r_{ij} - r_{0,ij}} \right) - \exp \left( \frac{\gamma_{ik}}{r_{ik} - r_{0,ik}} \right), r_{ij} < r_{0,ij}, r_{ik} < r_{0,ik} -\end{eqnarray*} - -\end{document} diff --git a/doc/src/Eqs/pair_yukawa.jpg b/doc/src/Eqs/pair_yukawa.jpg deleted file mode 100644 index 103edc604321d02e39545dd4e55acac3884edc8c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2189 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 diff --git a/doc/src/Eqs/pair_yukawa_colloid.tex b/doc/src/Eqs/pair_yukawa_colloid.tex deleted file mode 100644 index dbdbbcd140..0000000000 --- a/doc/src/Eqs/pair_yukawa_colloid.tex +++ /dev/null @@ -1,9 +0,0 @@ -\documentclass[12pt]{article} - -\begin{document} - -$$ - E = \frac{A}{\kappa} e^{- \kappa (r - (r_i + r_j))} \qquad r < r_c -$$ - -\end{document} diff --git a/doc/src/Eqs/pair_zbl.jpg b/doc/src/Eqs/pair_zbl.jpg deleted file mode 100644 index 88656af5eb4f6ef617e1bc400e6f4eb894da4695..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32209 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%0AptX1Wi#{xwICBD93Xi#lEvKx* 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


    Z0*0{WUKD;k^QKz@0Pb! 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 diff --git a/doc/src/Eqs/pair_zbl.tex b/doc/src/Eqs/pair_zbl.tex deleted file mode 100644 index 3d68dbed23..0000000000 --- a/doc/src/Eqs/pair_zbl.tex +++ /dev/null @@ -1,11 +0,0 @@ -\documentclass[12pt]{article} - -\begin{document} - -\begin{eqnarray*} - E^{ZBL}_{ij} & = & \frac{1}{4\pi\epsilon_0} \frac{Z_i Z_j \,e^2}{r_{ij}} \phi(r_{ij}/a)+ S(r_{ij})\\ - a & = & \frac{0.46850}{Z_{i}^{0.23} + Z_{j}^{0.23}}\\ - \phi(x) & = & 0.18175e^{-3.19980x} + 0.50986e^{-0.94229x} + 0.28022e^{-0.40290x} + 0.02817e^{-0.20162x}\\ - \end{eqnarray*} - -\end{document} diff --git a/doc/src/Eqs/pressure.jpg b/doc/src/Eqs/pressure.jpg deleted file mode 100644 index 525d8a75ee0747ad5b552a6020eddad600656ab2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4333 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 PL1m%)o4V` | :ref:`Pre-built OpenSuse Linux executables ` | :ref:`Gentoo Linux executable ` -| :ref:`Arch Linux build-script ` -| +| :ref:`Arch Linux build-script ` +| ---------- @@ -132,11 +132,21 @@ mirrors. The "module load" command is needed once per (shell) session or shell terminal instance, unless it is automatically loaded from the shell profile. +The LAMMPS binary is built with the :ref:`KIM package ` which +results in the above command also installing the `kim-api` binaries when LAMMPS +is installed. In order to use potentials from `openkim.org `_, you +can install the `openkim-models` package + +.. parsed-literal:: + + dnf install openkim-models + Please use "lmp -help" to see which compilation options, packages, and styles are included in the binary. Thanks to Christoph Junghans (LANL) for making LAMMPS available in Fedora. +.. _openkim: https://openkim.org ---------- @@ -146,7 +156,7 @@ Thanks to Christoph Junghans (LANL) for making LAMMPS available in Fedora. Pre-built EPEL Linux executable ------------------------------------------ -Pre-built LAMMPS packages for stable releases are available +Pre-built LAMMPS (and KIM) packages for stable releases are available in the `Extra Packages for Enterprise Linux (EPEL) repository `_ for use with Red Hat Enterprise Linux (RHEL) or CentOS version 7.x and compatible Linux distributions. Names of packages, executable, @@ -187,6 +197,15 @@ is *lmp*\ . Thus to run an input in parallel on 2 CPUs you would do: Please use "lmp -help" to see which compilation options, packages, and styles are included in the binary. +The LAMMPS binary is built with the :ref:`KIM package ` which +results in the above command also installing the `kim-api` binaries when LAMMPS +is installed. In order to use potentials from `openkim.org `_, you +can install the `openkim-models` package + +.. parsed-literal:: + + zypper install openkim-models + Thanks to Christoph Junghans (LANL) for making LAMMPS available in OpenSuse. diff --git a/doc/src/Eqs/fix_integration_spin_stdecomposition.jpg b/doc/src/JPG/fix_integration_spin_stdecomposition.jpg similarity index 100% rename from doc/src/Eqs/fix_integration_spin_stdecomposition.jpg rename to doc/src/JPG/fix_integration_spin_stdecomposition.jpg diff --git a/doc/src/compute_centro_atom.rst b/doc/src/compute_centro_atom.rst index f00cc179f8..6e706d9f97 100644 --- a/doc/src/compute_centro_atom.rst +++ b/doc/src/compute_centro_atom.rst @@ -52,20 +52,23 @@ in the specified compute group. This parameter is computed using the following formula from :ref:`(Kelchner) ` -.. image:: Eqs/centro_symmetry.jpg - :align: center - -where the *N* nearest neighbors of each atom are identified and Ri and -Ri+N/2 are vectors from the central atom to a particular pair of -nearest neighbors. There are N\*(N-1)/2 possible neighbor pairs that -can contribute to this formula. The quantity in the sum is computed -for each, and the N/2 smallest are used. This will typically be for -pairs of atoms in symmetrically opposite positions with respect to the -central atom; hence the i+N/2 notation. - -*N* is an input parameter, which should be set to correspond to the -number of nearest neighbors in the underlying lattice of atoms. If -the keyword *fcc* or *bcc* is used, *N* is set to 12 and 8 +.. math:: + + CS = \sum_{i = 1}^{N/2} | \vec{R}_i + \vec{R}_{i+N/2} |^2 + + +where the :math:`N` nearest neighbors of each atom are identified and +:math:`\vec{R}_i` and :math:`\vec{R}_{i+N/2}` are vectors from the +central atom to a particular pair of nearest neighbors. There are +:math:`N (N-1)/2` possible neighbor pairs that can contribute to this +formula. The quantity in the sum is computed for each, and the +:math:`N/2` smallest are used. This will typically be for pairs of +atoms in symmetrically opposite positions with respect to the central +atom; hence the :math:`i+N/2` notation. + +:math:`N` is an input parameter, which should be set to correspond to +the number of nearest neighbors in the underlying lattice of atoms. +If the keyword *fcc* or *bcc* is used, *N* is set to 12 and 8 respectively. More generally, *N* can be set to a positive, even integer. @@ -74,9 +77,9 @@ lattice, the centro-symmetry parameter will be 0. It will be near 0 for small thermal perturbations of a perfect lattice. If a point defect exists, the symmetry is broken, and the parameter will be a larger positive value. An atom at a surface will have a large -positive parameter. If the atom does not have *N* neighbors (within -the potential cutoff), then its centro-symmetry parameter is set to -0.0. +positive parameter. If the atom does not have :math:`N` neighbors +(within the potential cutoff), then its centro-symmetry parameter is +set to 0.0. If the keyword *axes* has the setting *yes*\ , then this compute also estimates three symmetry axes for each atom's local neighborhood. The @@ -95,7 +98,7 @@ of any atom. Only atoms within the cutoff of the pairwise neighbor list are considered as possible neighbors. Atoms not in the compute group are -included in the *N* neighbors used in this calculation. +included in the :math:`N` neighbors used in this calculation. The neighbor list needed to compute this quantity is constructed each time the calculation is performed (e.g. each time a snapshot of atoms diff --git a/doc/src/compute_cna_atom.rst b/doc/src/compute_cna_atom.rst index 16ce67d7af..f270891d82 100644 --- a/doc/src/compute_cna_atom.rst +++ b/doc/src/compute_cna_atom.rst @@ -51,8 +51,12 @@ E.g. 12 nearest neighbor for perfect FCC and HCP crystals, 14 nearest neighbors for perfect BCC crystals. These formulas can be used to obtain a good cutoff distance: -.. image:: Eqs/cna_cutoff1.jpg - :align: center +.. math:: + + r_{c}^{fcc} = & \frac{1}{2} \left(\frac{\sqrt{2}}{2} + 1\right) \mathrm{a} \simeq 0.8536 \:\mathrm{a} \\ + r_{c}^{bcc} = & \frac{1}{2}(\sqrt{2} + 1) \mathrm{a} \simeq 1.207 \:\mathrm{a} \\ + r_{c}^{hcp} = & \frac{1}{2}\left(1+\sqrt{\frac{4+2x^{2}}{3}}\right) \mathrm{a} + where a is the lattice constant for the crystal structure concerned and in the HCP case, x = (c/a) / 1.633, where 1.633 is the ideal c/a @@ -62,10 +66,13 @@ Also note that since the CNA calculation in LAMMPS uses the neighbors of an owned atom to find the nearest neighbors of a ghost atom, the following relation should also be satisfied: -.. image:: Eqs/cna_cutoff2.jpg - :align: center +.. math:: + + r_c + r_s > 2*{\rm cutoff} + -where Rc is the cutoff distance of the potential, Rs is the skin +where :math:`r_c` is the cutoff distance of the potential, :math:`r_s` +is the skin distance as specified by the :doc:`neighbor ` command, and cutoff is the argument used with the compute cna/atom command. LAMMPS will issue a warning if this is not the case. diff --git a/doc/src/compute_cnp_atom.rst b/doc/src/compute_cnp_atom.rst index 3290f67508..42e187ba69 100644 --- a/doc/src/compute_cnp_atom.rst +++ b/doc/src/compute_cnp_atom.rst @@ -40,13 +40,16 @@ only be performed on single component systems. This parameter is computed using the following formula from :ref:`(Tsuzuki) ` -.. image:: Eqs/cnp_eq.jpg - :align: center +.. math:: -where the index *j* goes over the *n*\ i nearest neighbors of atom -*i*\ , and the index *k* goes over the *n*\ ij common nearest neighbors -between atom *i* and atom *j*\ . Rik and Rjk are the vectors connecting atom -*k* to atoms *i* and *j*\ . The quantity in the double sum is computed + Q_{i} = \frac{1}{n_i}\sum_{j = 1}^{n_i} | \sum_{k = 1}^{n_{ij}} \vec{R}_{ik} + \vec{R}_{jk} |^2 + + +where the index *j* goes over the :math:`n_i` nearest neighbors of atom +*i*\ , and the index *k* goes over the :math:`n_{ij}` common nearest neighbors +between atom *i* and atom *j*\ . :math:`\vec{R}_{ik}` and +:math:`\vec{R}_{jk}` are the vectors connecting atom *k* to atoms *i* +and *j*\ . The quantity in the double sum is computed for each atom. The CNP calculation is sensitive to the specified cutoff value. @@ -56,8 +59,12 @@ E.g. 12 nearest neighbor for perfect FCC and HCP crystals, 14 nearest neighbors for perfect BCC crystals. These formulas can be used to obtain a good cutoff distance: -.. image:: Eqs/cnp_cutoff.jpg - :align: center +.. math:: + + r_{c}^{fcc} = & \frac{1}{2} \left(\frac{\sqrt{2}}{2} + 1\right) \mathrm{a} \simeq 0.8536 \:\mathrm{a} \\ + r_{c}^{bcc} = & \frac{1}{2}(\sqrt{2} + 1) \mathrm{a} \simeq 1.207 \:\mathrm{a} \\ + r_{c}^{hcp} = & \frac{1}{2}\left(1+\sqrt{\frac{4+2x^{2}}{3}}\right) \mathrm{a} + where a is the lattice constant for the crystal structure concerned and in the HCP case, x = (c/a) / 1.633, where 1.633 is the ideal c/a @@ -67,10 +74,13 @@ Also note that since the CNP calculation in LAMMPS uses the neighbors of an owned atom to find the nearest neighbors of a ghost atom, the following relation should also be satisfied: -.. image:: Eqs/cnp_cutoff2.jpg - :align: center +.. math:: + + r_c + r_s > 2*{\rm cutoff} + -where Rc is the cutoff distance of the potential, Rs is the skin +where :math:`r_c` is the cutoff distance of the potential, :math:`r_s` is +the skin distance as specified by the :doc:`neighbor ` command, and cutoff is the argument used with the compute cnp/atom command. LAMMPS will issue a warning if this is not the case. diff --git a/doc/src/compute_dpd.rst b/doc/src/compute_dpd.rst index bca72efdcd..cb3008a73c 100644 --- a/doc/src/compute_dpd.rst +++ b/doc/src/compute_dpd.rst @@ -26,19 +26,26 @@ Description """"""""""" Define a computation that accumulates the total internal conductive -energy (U\_cond), the total internal mechanical energy (U\_mech), the -total chemical energy (U\_chem) and the *harmonic* average of the internal -temperature (dpdTheta) for the entire system of particles. See the +energy (:math:`U^{cond}`), the total internal mechanical energy +(:math:`U^{mech}`), the total chemical energy (:math:`U^{chem}`) +and the *harmonic* average of the internal temperature (:math:`\theta_{avg}`) +for the entire system of particles. See the :doc:`compute dpd/atom ` command if you want per-particle internal energies and internal temperatures. The system internal properties are computed according to the following relations: -.. image:: Eqs/compute_dpd.jpg - :align: center +.. math:: -where N is the number of particles in the system + U^{cond} = & \displaystyle\sum_{i=1}^{N} u_{i}^{cond} \\ + U^{mech} = & \displaystyle\sum_{i=1}^{N} u_{i}^{mech} \\ + U^{chem} = & \displaystyle\sum_{i=1}^{N} u_{i}^{chem} \\ + U = & \displaystyle\sum_{i=1}^{N} (u_{i}^{cond} + u_{i}^{mech} + u_{i}^{chem}) \\ + \theta_{avg} = & (\frac{1}{N}\displaystyle\sum_{i=1}^{N} \frac{1}{\theta_{i}})^{-1} \\ + + +where :math:`N` is the number of particles in the system ---------- @@ -46,8 +53,9 @@ where N is the number of particles in the system **Output info:** -This compute calculates a global vector of length 5 (U\_cond, U\_mech, -U\_chem, dpdTheta, N\_particles), which can be accessed by indices 1-5. +This compute calculates a global vector of length 5 (:math:`U^{cond}`, +:math:`U^{mech}`, :math:`U^{chem}`, :math:`\theta_{avg}`, :math:`N`), +which can be accessed by indices 1-5. See the :doc:`Howto output ` doc page for an overview of LAMMPS output options. diff --git a/doc/src/compute_dpd_atom.rst b/doc/src/compute_dpd_atom.rst index 12956cc5d6..215e16a9c9 100644 --- a/doc/src/compute_dpd_atom.rst +++ b/doc/src/compute_dpd_atom.rst @@ -23,10 +23,10 @@ Description """"""""""" Define a computation that accesses the per-particle internal -conductive energy (u\_cond), internal mechanical energy (u\_mech), -internal chemical energy (u\_chem) and -internal temperatures (dpdTheta) for each particle in a group. See -the :doc:`compute dpd ` command if you want the total +conductive energy (:math:`u^{cond}`), internal mechanical +energy (:math:`u^{mech}`), internal chemical energy (:math:`u^{chem}`) +and internal temperatures (:math:`\theta`) for each particle in a group. +See the :doc:`compute dpd ` command if you want the total internal conductive energy, the total internal mechanical energy, the total chemical energy and average internal temperature of the entire system or group of dpd @@ -34,14 +34,16 @@ particles. **Output info:** -This compute calculates a per-particle array with 4 columns (u\_cond, -u\_mech, u\_chem, dpdTheta), which can be accessed by indices 1-4 by any +This compute calculates a per-particle array with 4 columns (:math:`u^{cond}`, +:math:`u^{mech}`, :math:`u^{chem}`, :math:`\theta`), which can be accessed +by indices 1-4 by any command that uses per-particle values from a compute as input. See the :doc:`Howto output ` doc page for an overview of LAMMPS output options. -The per-particle array values will be in energy (u\_cond, u\_mech, u\_chem) -and temperature (dpdTheta) :doc:`units `. +The per-particle array values will be in energy (:math:`u^{cond}`, +:math:`u^{mech}`, :math:`u^{chem}`) +and temperature (:math:`theta`) :doc:`units `. Restrictions """""""""""" diff --git a/doc/src/compute_entropy_atom.rst b/doc/src/compute_entropy_atom.rst index 96d55bbb0d..9b4bb5f62b 100644 --- a/doc/src/compute_entropy_atom.rst +++ b/doc/src/compute_entropy_atom.rst @@ -53,27 +53,33 @@ information about the solid structure is required. This parameter for atom i is computed using the following formula from :ref:`(Piaggi) ` and :ref:`(Nettleton) ` , -.. image:: Eqs/pair_entropy.jpg - :align: center +.. math:: + + s_S^i=-2\pi\rho k_B \int\limits_0^{r_m} \left [ g(r) \ln g(r) - g(r) + 1 \right ] r^2 dr + where r is a distance, g(r) is the radial distribution function of atom i and rho is the density of the system. The g(r) computed for each atom i can be noisy and therefore it is smoothed using: -.. image:: Eqs/pair_entropy2.jpg - :align: center +.. math:: + + g_m^i(r) = \frac{1}{4 \pi \rho r^2} \sum\limits_{j} \frac{1}{\sqrt{2 \pi \sigma^2}} e^{-(r-r_{ij})^2/(2\sigma^2)} -where the sum in j goes through the neighbors of atom i, and sigma is a -parameter to control the smoothing. -The input parameters are *sigma* the smoothing parameter, and the -*cutoff* for the calculation of g(r). +where the sum in j goes through the neighbors of atom i, and :math:`\sigma` +is a parameter to control the smoothing. + +The input parameters are *sigma* the smoothing parameter :math:`\sigma`, +and the *cutoff* for the calculation of g(r). If the keyword *avg* has the setting *yes*\ , then this compute also averages the parameter over the neighbors of atom i according to: -.. image:: Eqs/pair_entropy3.jpg - :align: center +.. math:: + + \left< s_S^i \right> = \frac{\sum_j s_S^j + s_S^i}{N + 1} + where the sum j goes over the neighbors of atom i and N is the number of neighbors. This procedure provides a sharper distinction between diff --git a/doc/src/compute_fep.rst b/doc/src/compute_fep.rst index 1cbabef023..84b62a7f4a 100644 --- a/doc/src/compute_fep.rst +++ b/doc/src/compute_fep.rst @@ -70,14 +70,17 @@ initial interactions of the atoms that will undergo perturbation, and a term :math:`U_1` corresponding to the final interactions of these atoms: -.. image:: Eqs/compute_fep_u.jpg - :align: center +.. math:: + + U(\lambda) = U_{\mathrm{bg}} + U_1(\lambda) + U_0(\lambda) A coupling parameter :math:`\lambda` varying from 0 to 1 connects the reference and perturbed systems: -.. image:: Eqs/compute_fep_lambda.jpg - :align: center +.. math:: + + \lambda &= 0 \quad\Rightarrow\quad U = U_{\mathrm{bg}} + U_0 \\ + \lambda &= 1 \quad\Rightarrow\quad U = U_{\mathrm{bg}} + U_1 It is possible but not necessary that the coupling parameter (or a function thereof) appears as a multiplication factor of the potential @@ -89,16 +92,22 @@ This command can be combined with :doc:`fix adapt ` to perform multistage free-energy perturbation calculations along stepwise alchemical transformations during a simulation run: -.. image:: Eqs/compute_fep_fep.jpg - :align: center +.. math:: + + \Delta_0^1 A = \sum_{i=0}^{n-1} \Delta_{\lambda_i}^{\lambda_{i+1}} A = - kT + \sum_{i=0}^{n-1} \ln \left< \exp \left( - \frac{U(\lambda_{i+1}) - + U(\lambda_i)}{kT} \right) \right>_{\lambda_i} This compute is suitable for the finite-difference thermodynamic integration (FDTI) method :ref:`(Mezei) `, which is based on an evaluation of the numerical derivative of the free energy by a perturbation method using a very small :math:`\delta`: -.. image:: Eqs/compute_fep_fdti.jpg - :align: center +.. math:: + + \Delta_0^1 A = \int_{\lambda=0}^{\lambda=1} \left( \frac{\partial + A(\lambda)}{\partial\lambda} \right)_\lambda \mathrm{d}\lambda \approx + \sum_{i=0}^{n-1} w_i \frac{A(\lambda_{i} + \delta) - A(\lambda_i)}{\delta} where :math:`w_i` are weights of a numerical quadrature. The :doc:`fix adapt ` command can be used to define the stages of :math:`\lambda` at which the derivative is calculated and averaged. @@ -109,16 +118,23 @@ choosing a very small perturbation :math:`\delta` the thermodynamic integration method can be implemented using a numerical evaluation of the derivative of the potential energy with respect to :math:`\lambda`: -.. image:: Eqs/compute_fep_ti.jpg - :align: center +.. math:: + + \Delta_0^1 A = \int_{\lambda=0}^{\lambda=1} \left< \frac{\partial + U(\lambda)}{\partial\lambda} \right>_\lambda \mathrm{d}\lambda \approx + \sum_{i=0}^{n-1} w_i \left< \frac{U(\lambda_{i} + \delta) - + U(\lambda_i)}{\delta} \right>_{\lambda_i} Another technique to calculate free energy differences is the acceptance ratio method :ref:`(Bennet) `, which can be implemented by calculating the potential energy differences with :math:`\delta` = 1.0 on both the forward and reverse routes: -.. image:: Eqs/compute_fep_bar.jpg - :align: center +.. math:: + + \left< \frac{1}{1 + \exp\left[\left(U_1 - U_0 - \Delta_0^1A \right) /kT + \right]} \right>_0 = \left< \frac{1}{1 + \exp\left[\left(U_0 - U_1 + + \Delta_0^1A \right) /kT \right]} \right>_1 The value of the free energy difference is determined by numerical root finding to establish the equality. @@ -265,9 +281,11 @@ If the keyword *volume* = *yes*\ , then the Boltzmann term is multiplied by the volume so that correct ensemble averaging can be performed over trajectories during which the volume fluctuates or changes :ref:`(Allen and Tildesley) `: -.. image:: Eqs/compute_fep_vol.jpg - :align: center +.. math:: + \Delta_0^1 A = - kT \sum_{i=0}^{n-1} \ln \frac{\left< V \exp \left( - + \frac{U(\lambda_{i+1}) - U(\lambda_i)}{kT} \right) + \right>_{\lambda_i}}{\left< V \right>_{\lambda_i}} ---------- @@ -314,31 +332,21 @@ The option defaults are *tail* = *no*\ , *volume* = *no*\ . .. _Pearlman: - - **(Pearlman)** Pearlman, J Chem Phys, 98, 1487 (1994) .. _Mezei: - - **(Mezei)** Mezei, J Chem Phys, 86, 7084 (1987) .. _Bennet: - - **(Bennet)** Bennet, J Comput Phys, 22, 245 (1976) .. _BoreschKarplus: - - **(BoreschKarplus)** Boresch and Karplus, J Phys Chem A, 103, 103 (1999) .. _AllenTildesley: - - **(AllenTildesley)** Allen and Tildesley, Computer Simulation of Liquids, Oxford University Press (1987) diff --git a/doc/src/compute_gyration.rst b/doc/src/compute_gyration.rst index 6eb629c85b..fa3b6acbc5 100644 --- a/doc/src/compute_gyration.rst +++ b/doc/src/compute_gyration.rst @@ -32,24 +32,27 @@ periodic boundaries. Rg is a measure of the size of the group of atoms, and is computed as the square root of the Rg\^2 value in this formula -.. image:: Eqs/compute_gyration.jpg - :align: center - -where M is the total mass of the group, Rcm is the center-of-mass -position of the group, and the sum is over all atoms in the group. - -A Rg\^2 tensor, stored as a 6-element vector, is also calculated by -this compute. The formula for the components of the tensor is the -same as the above formula, except that (Ri - Rcm)\^2 is replaced by -(Rix - Rcmx) \* (Riy - Rcmy) for the xy component, etc. The 6 -components of the vector are ordered xx, yy, zz, xy, xz, yz. Note -that unlike the scalar Rg, each of the 6 values of the tensor is -effectively a "squared" value, since the cross-terms may be negative +.. math:: + + {R_g}^2 = \frac{1}{M} \sum_i m_i (r_i - r_{cm})^2 + + +where :math:`M` is the total mass of the group, :math:`r_{cm}` is the +center-of-mass position of the group, and the sum is over all atoms in +the group. + +A :math:`{R_g}^2` tensor, stored as a 6-element vector, is also calculated +by this compute. The formula for the components of the tensor is the +same as the above formula, except that :math:`(r_i - r_{cm})^2` is replaced +by :math:`(r_{i,x} - r_{cm,x}) \cdot (r_{i,y} - r_{cm,y})` for the xy component, +and so on. The 6 components of the vector are ordered xx, yy, zz, xy, xz, yz. +Note that unlike the scalar :math:`R_g`, each of the 6 values of the tensor +is effectively a "squared" value, since the cross-terms may be negative and taking a sqrt() would be invalid. .. note:: - The coordinates of an atom contribute to Rg in "unwrapped" form, + The coordinates of an atom contribute to :math:`R_g` in "unwrapped" form, by using the image flags associated with each atom. See the :doc:`dump custom ` command for a discussion of "unwrapped" coordinates. See the Atoms section of the :doc:`read_data ` command for a discussion of image flags and how they are set for each atom. You can @@ -58,8 +61,8 @@ and taking a sqrt() would be invalid. **Output info:** -This compute calculates a global scalar (Rg) and a global vector of -length 6 (Rg\^2 tensor), which can be accessed by indices 1-6. These +This compute calculates a global scalar (:math:`R_g`) and a global vector of +length 6 (:math:`{R_g}^2` tensor), which can be accessed by indices 1-6. These values can be used by any command that uses a global scalar value or vector values from a compute as input. See the :doc:`Howto output ` doc page for an overview of LAMMPS output options. diff --git a/doc/src/compute_gyration_chunk.rst b/doc/src/compute_gyration_chunk.rst index 4cdb6fa4d6..987cb7fa4c 100644 --- a/doc/src/compute_gyration_chunk.rst +++ b/doc/src/compute_gyration_chunk.rst @@ -52,11 +52,13 @@ boundaries. Rg is a measure of the size of a chunk, and is computed by this formula -.. image:: Eqs/compute_gyration.jpg - :align: center +.. math:: -where M is the total mass of the chunk, Rcm is the center-of-mass -position of the chunk, and the sum is over all atoms in the + {R_g}^2 = \frac{1}{M} \sum_i m_i (r_i - r_{cm})^2 + + +where :math:`M` is the total mass of the chunk, :math:`r_{cm}` is +the center-of-mass position of the chunk, and the sum is over all atoms in the chunk. Note that only atoms in the specified group contribute to the @@ -70,14 +72,16 @@ non-zero chunk IDs. If the *tensor* keyword is specified, then the scalar Rg value is not calculated, but an Rg tensor is instead calculated for each chunk. The formula for the components of the tensor is the same as the above -formula, except that (Ri - Rcm)\^2 is replaced by (Rix - Rcmx) \* (Riy - -Rcmy) for the xy component, etc. The 6 components of the tensor are +formula, except that :math:`(r_i - r_{cm})^2` is replaced by +:math:`(r_{i,x} - r_{cm,x}) \cdot (r_{i,y} - r_{cm,y})` for the xy +component, and so on. The 6 components of the tensor are ordered xx, yy, zz, xy, xz, yz. .. note:: - The coordinates of an atom contribute to Rg in "unwrapped" form, - by using the image flags associated with each atom. See the :doc:`dump custom ` command for a discussion of "unwrapped" coordinates. + The coordinates of an atom contribute to :math:`R_g` in "unwrapped" form, + by using the image flags associated with each atom. See the :doc:`dump custom ` + command for a discussion of "unwrapped" coordinates. See the Atoms section of the :doc:`read_data ` command for a discussion of image flags and how they are set for each atom. You can reset the image flags (e.g. to 0) before invoking this compute by diff --git a/doc/src/compute_gyration_shape.rst b/doc/src/compute_gyration_shape.rst index 590aca59a2..96c0346926 100644 --- a/doc/src/compute_gyration_shape.rst +++ b/doc/src/compute_gyration_shape.rst @@ -33,10 +33,14 @@ due to atoms passing through periodic boundaries. The three computed shape parameters are the asphericity, b, the acylindricity, c, and the relative shape anisotropy, k: -.. image:: Eqs/compute_shape_parameters.jpg - :align: center +.. math:: -where lx <= ly <= lz are the three eigenvalues of the gyration tensor. A general description + c = & l_z - 0.5(l_y+l_x) \\ + b = & l_y - l_x \\ + k = & \frac{3}{2} \frac{l_x^2+l_y^2+l_z^2}{(l_x+l_y+l_z)^2} - \frac{1}{2} + + +where :math:`l_x` <= :math:`l_y` <= :math:`l_z` are the three eigenvalues of the gyration tensor. A general description of these parameters is provided in :ref:`(Mattice) ` while an application to polymer systems can be found in :ref:`(Theodorou) `. The asphericity is always non-negative and zero only when the three principal diff --git a/doc/src/compute_gyration_shape_chunk.rst b/doc/src/compute_gyration_shape_chunk.rst index 309b9d7b6d..72fec2ddc7 100644 --- a/doc/src/compute_gyration_shape_chunk.rst +++ b/doc/src/compute_gyration_shape_chunk.rst @@ -33,10 +33,14 @@ all effects due to atoms passing through periodic boundaries. The three computed shape parameters are the asphericity, b, the acylindricity, c, and the relative shape anisotropy, k: -.. image:: Eqs/compute_shape_parameters.jpg - :align: center +.. math:: -where lx <= ly <= lz are the three eigenvalues of the gyration tensor. A general description + c = & l_z - 0.5(l_y+l_x) \\ + b = & l_y - l_x \\ + k = & \frac{3}{2} \frac{l_x^2+l_y^2+l_z^2}{(l_x+l_y+l_z)^2} - \frac{1}{2} + + +where :math:`l_x` <= :math:`l_y` <= :math`l_z` are the three eigenvalues of the gyration tensor. A general description of these parameters is provided in :ref:`(Mattice) ` while an application to polymer systems can be found in :ref:`(Theodorou) `. The asphericity is always non-negative and zero only when the three principal moments are equal. This zero condition is met when the distribution diff --git a/doc/src/compute_hexorder_atom.rst b/doc/src/compute_hexorder_atom.rst index 66cbcf2409..45560a2aff 100644 --- a/doc/src/compute_hexorder_atom.rst +++ b/doc/src/compute_hexorder_atom.rst @@ -36,19 +36,22 @@ Examples Description """"""""""" -Define a computation that calculates *qn* the bond-orientational +Define a computation that calculates :math:`q_n` the bond-orientational order parameter for each atom in a group. The hexatic (\ *n* = 6) order parameter was introduced by :ref:`Nelson and Halperin ` as a way to detect -hexagonal symmetry in two-dimensional systems. For each atom, *qn* +hexagonal symmetry in two-dimensional systems. For each atom, :math:`q_n` is a complex number (stored as two real numbers) defined as follows: -.. image:: Eqs/hexorder.jpg - :align: center +.. math:: + + q_n = \frac{1}{nnn}\sum_{j = 1}^{nnn} e^{n i \theta({\bf r}_{ij})} + where the sum is over the *nnn* nearest neighbors -of the central atom. The angle theta -is formed by the bond vector rij and the *x* axis. theta is calculated -only using the *x* and *y* components, whereas the distance from the +of the central atom. The angle :math:`\theta` +is formed by the bond vector :math:`r_{ij}` and the *x* axis. +:math:`\theta` is calculated only using the *x* and *y* components, +whereas the distance from the central atom is calculated using all three *x*\ , *y*\ , and *z* components of the bond vector. Neighbor atoms not in the group @@ -60,22 +63,22 @@ the maximum allowable value, is the cutoff specified by the pair style. The optional keyword *nnn* defines the number of nearest -neighbors used to calculate *qn*\ . The default value is 6. +neighbors used to calculate :math:`q_n`. The default value is 6. If the value is NULL, then all neighbors up to the distance cutoff are used. The optional keyword *degree* sets the degree *n* of the order parameter. The default value is 6. For a perfect hexagonal lattice with *nnn* = 6, -*q*\ 6 = exp(6 i phi) for all atoms, where the constant 0 < phi < pi/3 +:math:`q_6 = e^{6 i \phi}` for all atoms, where the constant :math:`0 < \phi < \frac{\pi}{3}` depends only on the orientation of the lattice relative to the *x* axis. In an isotropic liquid, local neighborhoods may still exhibit weak hexagonal symmetry, but because the orientational correlation -decays quickly with distance, the value of phi will be different for -different atoms, and so when *q*\ 6 is averaged over all the atoms -in the system, \|<\ *q*\ 6>\| << 1. +decays quickly with distance, the value of :math:`\phi` will be different for +different atoms, and so when :math:`q_6` is averaged over all the atoms +in the system, :math:`| \left< q_6 \right> | << 1`. -The value of *qn* is set to zero for atoms not in the +The value of :math:`q_n` is set to zero for atoms not in the specified compute group, as well as for atoms that have less than *nnn* neighbors within the distance cutoff. @@ -102,8 +105,8 @@ too frequently. **Output info:** This compute calculates a per-atom array with 2 columns, giving the -real and imaginary parts *qn*\ , a complex number restricted to the -unit disk of the complex plane i.e. Re(\ *qn*\ )\^2 + Im(\ *qn*\ )\^2 <= 1 . +real and imaginary parts :math:`q_n`, a complex number restricted to the +unit disk of the complex plane i.e. :math:`Re(q_n)^2 + Im(q_n)^2 <= 1`. These values can be accessed by any command that uses per-atom values from a compute as input. See the :doc:`Howto output ` doc diff --git a/doc/src/compute_msd_nongauss.rst b/doc/src/compute_msd_nongauss.rst index 180b922097..8168d25ca6 100644 --- a/doc/src/compute_msd_nongauss.rst +++ b/doc/src/compute_msd_nongauss.rst @@ -46,8 +46,10 @@ dz\*dz)\*(dx\*dx + dy\*dy + dz\*dz), summed and averaged over atoms in the group. The 3rd component is the nonGaussian diffusion parameter NGP = 3\*drfourth/(5\*drsquared\*drsquared), i.e. -.. image:: Eqs/compute_msd_nongauss.jpg - :align: center +.. math:: + + NGP(t) = 3<(r(t)-r(0))^4>/(5<(r(t)-r(0))^2>^2) - 1 + The NGP is a commonly used quantity in studies of dynamical heterogeneity. Its minimum theoretical value (-0.4) occurs when all diff --git a/doc/src/compute_orientorder_atom.rst b/doc/src/compute_orientorder_atom.rst index 401f6b46a2..b864db82a7 100644 --- a/doc/src/compute_orientorder_atom.rst +++ b/doc/src/compute_orientorder_atom.rst @@ -42,23 +42,25 @@ Description """"""""""" Define a computation that calculates a set of bond-orientational -order parameters *Ql* for each atom in a group. These order parameters +order parameters :math:`Q_l` for each atom in a group. These order parameters were introduced by :ref:`Steinhardt et al. ` as a way to characterize the local orientational order in atomic structures. -For each atom, *Ql* is a real number defined as follows: +For each atom, :math:`Q_l` is a real number defined as follows: -.. image:: Eqs/orientorder.jpg - :align: center +.. math:: + + \bar{Y}_{lm} = & \frac{1}{nnn}\sum_{j = 1}^{nnn} Y_{lm}( \theta( {\bf r}_{ij} ), \phi( {\bf r}_{ij} ) ) \\ + Q_l = & \sqrt{\frac{4 \pi}{2 l + 1} \sum_{m = -l}^{m = l} \bar{Y}_{lm} \bar{Y}^*_{lm}} The first equation defines the spherical harmonic order parameters. These are complex number components of the 3D analog of the 2D order -parameter *qn*\ , which is implemented as LAMMPS compute +parameter :math:`q_n`, which is implemented as LAMMPS compute :doc:`hexorder/atom `. The summation is over the *nnn* nearest neighbors of the central atom. The angles theta and phi are the standard spherical polar angles -defining the direction of the bond vector *rij*\ . -The second equation defines *Ql*\ , which is a +defining the direction of the bond vector :math:`r_{ij}`. +The second equation defines :math:`Q_l`, which is a rotationally invariant non-negative amplitude obtained by summing over all the components of degree *l*\ . @@ -68,42 +70,45 @@ the maximum allowable value, is the cutoff specified by the pair style. The optional keyword *nnn* defines the number of nearest -neighbors used to calculate *Ql*\ . The default value is 12. +neighbors used to calculate :math:`Q_l`. The default value is 12. If the value is NULL, then all neighbors up to the specified distance cutoff are used. The optional keyword *degrees* defines the list of order parameters to be computed. The first argument *nlvalues* is the number of order parameters. This is followed by that number of non-negative integers giving the -degree of each order parameter. Because *Q*\ 2 and all odd-degree order +degree of each order parameter. Because :math:`Q_2` and all odd-degree order parameters are zero for atoms in cubic crystals (see -:ref:`Steinhardt `), the default order parameters are *Q*\ 4, -*Q*\ 6, *Q*\ 8, *Q*\ 10, and *Q*\ 12. For the FCC crystal with *nnn* =12, *Q*\ 4 -= sqrt(7/3)/8 = 0.19094.... The numerical values of all order -parameters up to *Q*\ 12 for a range of commonly encountered -high-symmetry structures are given in Table I of :ref:`Mickel et al. `, and these can be reproduced with this compute - -The optional keyword *wl* will output the third-order invariants *Wl* +:ref:`Steinhardt `), the default order parameters are :math:`Q_4`, +:math:`Q_6`, :math:`Q_8`, :math:`Q_{10}`, and :math:`Q_{12}`. For the FCC +crystal with *nnn* =12, :math:`Q_4 = \sqrt{\frac{7}{192}} = 0.19094...`. +The numerical values of all order +parameters up to :math:`Q_12` for a range of commonly encountered +high-symmetry structures are given in Table I of :ref:`Mickel et al. `, +and these can be reproduced with this compute. + +The optional keyword *wl* will output the third-order invariants :math:`W_l` (see Eq. 1.4 in :ref:`Steinhardt `) for the same degrees as -for the *Ql* parameters. For the FCC crystal with *nnn* =12, -*W*\ 4 = -sqrt(14/143).(49/4096)/Pi\^1.5 = -0.0006722136... +for the :math:`Q_l` parameters. For the FCC crystal with *nnn* =12, +:math:`W_4` = -sqrt(14/143).(49/4096)/Pi\^1.5 = -0.0006722136... The optional keyword *wl/hat* will output the normalized third-order -invariants *Wlhat* (see Eq. 2.2 in :ref:`Steinhardt `) -for the same degrees as for the *Ql* parameters. For the FCC crystal -with *nnn* =12, *W*\ 4hat = -7/3\*sqrt(2/429) = -0.159317...The numerical -values of *Wlhat* for a range of commonly encountered high-symmetry +invariants :math:`\hat{W}_l` (see Eq. 2.2 in :ref:`Steinhardt `) +for the same degrees as for the :math:`Q_l` parameters. For the FCC crystal +with *nnn* =12, :math:`\hat{W}_4 = -\frac{7}{3} \sqrt{\frac{2}{429}} = -0.159317...` +The numerical +values of :math:`\hat{W}_l` for a range of commonly encountered high-symmetry structures are given in Table I of :ref:`Steinhardt `, and these can be reproduced with this keyword. The optional keyword *components* will output the components of the -normalized complex vector *Ybar\_lm* of degree *ldegree*\ , which must be +normalized complex vector :math:`\bar{Y}_{lm}` of degree *ldegree*\ , which must be explicitly included in the keyword *degrees*\ . This option can be used in conjunction with :doc:`compute coord\_atom ` to calculate the ten Wolde's criterion to identify crystal-like particles, as discussed in :ref:`ten Wolde `. -The value of *Ql* is set to zero for atoms not in the +The value of :math:`Q_l` is set to zero for atoms not in the specified compute group, as well as for atoms that have less than *nnn* neighbors within the distance cutoff, unless *nnn* is NULL. @@ -130,19 +135,19 @@ too frequently. **Output info:** This compute calculates a per-atom array with *nlvalues* columns, -giving the *Ql* values for each atom, which are real numbers on the -range 0 <= *Ql* <= 1. +giving the :math:`Q_l` values for each atom, which are real numbers on the +range :math:`0 <= Q_l <= 1`. -If the keyword *wl* is set to yes, then the *Wl* values for each +If the keyword *wl* is set to yes, then the :math:`W_l` values for each atom will be added to the output array, which are real numbers. -If the keyword *wl/hat* is set to yes, then the *Wl\_hat* +If the keyword *wl/hat* is set to yes, then the :math:`\hat{W}_l` values for each atom will be added to the output array, which are real numbers. If the keyword *components* is set, then the real and imaginary parts -of each component of (normalized) *Ybar\_lm* will be added to the -output array in the following order: Re(*Ybar\_-m*) Im(*Ybar\_-m*) -Re(*Ybar\_-m+1*) Im(*Ybar\_-m+1*) ... Re(*Ybar\_m*) Im(*Ybar\_m*). This +of each component of (normalized) :math:`\bar{Y}_{lm}` will be added to the +output array in the following order: :math:`Re(\bar{Y}_{-m}) Im(\bar{Y}_{-m}) +Re(\bar{Y}_{-m+1}) Im(\bar{Y}_{-m+1}) ... Re(\bar{Y}_m) Im(\bar{Y}_m)`. This way, the per-atom array will have a total of *nlvalues*\ +2\*(2\ *l*\ +1) columns. @@ -163,7 +168,7 @@ Default """"""" The option defaults are *cutoff* = pair style cutoff, *nnn* = 12, -*degrees* = 5 4 6 8 10 12 i.e. *Q*\ 4, *Q*\ 6, *Q*\ 8, *Q*\ 10, and *Q*\ 12, +*degrees* = 5 4 6 8 10 12 i.e. :math:`Q_4`, :math:`Q_6`, :math:`Q_8`, :math:`Q_{10}`, and :math:`Q_{12}`, *wl* = no, *wl/hat* = no, and *components* off @@ -172,21 +177,16 @@ The option defaults are *cutoff* = pair style cutoff, *nnn* = 12, .. _Steinhardt: - - **(Steinhardt)** P. Steinhardt, D. Nelson, and M. Ronchetti, Phys. Rev. B 28, 784 (1983). .. _Mickel: - - **(Mickel)** W. Mickel, S. C. Kapfer, G. E. Schroeder-Turkand, K. Mecke, J. Chem. Phys. 138, 044501 (2013). .. _tenWolde2: - **(tenWolde)** P. R. ten Wolde, M. J. Ruiz-Montero, D. Frenkel, J. Chem. Phys. 104, 9932 (1996). diff --git a/doc/src/compute_pressure.rst b/doc/src/compute_pressure.rst index c6530ed11e..ed3b90c8e1 100644 --- a/doc/src/compute_pressure.rst +++ b/doc/src/compute_pressure.rst @@ -37,8 +37,10 @@ of atoms via the :doc:`compute reduce ` command. The pressure is computed by the formula -.. image:: Eqs/pressure.jpg - :align: center +.. math:: + + P = \frac{N k_B T}{V} + \frac{\sum_{i}^{N'} r_i \bullet f_i}{dV} + where N is the number of atoms in the system (see discussion of DOF below), Kb is the Boltzmann constant, T is the temperature, d is the @@ -62,8 +64,11 @@ ordered xx, yy, zz, xy, xz, yz. The equation for the I,J components the first term uses components of the kinetic energy tensor and the second term uses components of the virial tensor: -.. image:: Eqs/pressure_tensor.jpg - :align: center +.. math:: + + P_{IJ} = \frac{\sum_{k}^{N} m_k v_{k_I} v_{k_J}}{V} + + \frac{\sum_{k}^{N'} r_{k_I} f_{k_J}}{V} + If no extra keywords are listed, the entire equations above are calculated. This includes a kinetic energy (temperature) term and the diff --git a/doc/src/compute_ptm_atom.rst b/doc/src/compute_ptm_atom.rst index e7667adae9..1b5066e473 100644 --- a/doc/src/compute_ptm_atom.rst +++ b/doc/src/compute_ptm_atom.rst @@ -62,8 +62,11 @@ to identify potential structure matches. Next, the deviation is computed betwee local structure (in the simulation) and a template of the ideal lattice structure. The deviation is calculated as: -.. image:: Eqs/ptm_rmsd.jpg - :align: center +.. math:: + + \text{RMSD}(\mathbf{u}, \mathbf{v}) = \min_{s, \mathbf{Q}} \sqrt{\frac{1}{N} \sum\limits_{i=1}^{N} + {\left|\left| s[\vec{u_i} - \overline{\mathbf{u}}] - \mathbf{Q} \vec{v_i} \right|\right|}^2} + Here, u and v contain the coordinates of the local and ideal structures respectively, s is a scale factor, and Q is a rotation. The best match is identified by the diff --git a/doc/src/compute_saed.rst b/doc/src/compute_saed.rst index 9b4067043f..2a9c05f218 100644 --- a/doc/src/compute_saed.rst +++ b/doc/src/compute_saed.rst @@ -59,14 +59,14 @@ radiation of wavelength lambda. The electron diffraction intensity I at each reciprocal lattice point is computed from the structure factor F using the equations: -.. image:: Eqs/compute_saed1.jpg - :align: center +.. math:: + + I = & \frac{F^{*}F}{N} \\ + F(\mathbf{k}) = & \sum_{j=1}^{N}f_j(\theta)exp(2\pi i \mathbf{k} \cdot \mathbf{r}_j) -.. image:: Eqs/compute_saed2.jpg - :align: center -Here, K is the location of the reciprocal lattice node, rj is the -position of each atom, fj are atomic scattering factors. +Here, K is the location of the reciprocal lattice node, :math:`r_j` is the +position of each atom, :math:`f_j` are atomic scattering factors. Diffraction intensities are calculated on a three-dimensional mesh of reciprocal lattice nodes. The mesh spacing is defined either (a) by @@ -119,33 +119,117 @@ for each atom type (type1 type2 ... typeN) and angle of diffraction. The analytic approximation is computed using the formula :ref:`(Brown) `: -.. image:: Eqs/compute_saed3.jpg - :align: center +.. math:: + + f_j\left ( \frac{sin(\theta)}{\lambda} \right )=\sum_{i}^{5} + a_i exp\left ( -b_i \frac{sin^{2}(\theta)}{\lambda^{2}} \right ) + Coefficients parameterized by :ref:`(Fox) ` are assigned for each atom type designating the chemical symbol and charge of each atom type. Valid chemical symbols for compute saed are: -H: He: Li: Be: B: -C: N: O: F: Ne: -Na: Mg: Al: Si: P: -S: Cl: Ar: K: Ca: -Sc: Ti: V: Cr: Mn: -Fe: Co: Ni: Cu: Zn: -Ga: Ge: As: Se: Br: -Kr: Rb: Sr: Y: Zr: -Nb: Mo: Tc: Ru: Rh: -Pd: Ag: Cd: In: Sn: -Sb: Te: I: Xe: Cs: -Ba: La: Ce: Pr: Nd: -Pm: Sm: Eu: Gd: Tb: -Dy: Ho: Er: Tm: Yb: -Lu: Hf: Ta: W: Re: -Os: Ir: Pt: Au: Hg: -Tl: Pb: Bi: Po: At: -Rn: Fr: Ra: Ac: Th: -Pa: U: Np: Pu: Am: -Cm: Bk: Cf:tb(c=5,s=:) +.. table_from_list:: + :columns: 20 + + * H + * He + * Li + * Be + * B + * C + * N + * O + * F + * Ne + * Na + * Mg + * Al + * Si + * P + * S + * Cl + * Ar + * K + * Ca + * Sc + * Ti + * V + * Cr + * Mn + * Fe + * Co + * Ni + * Cu + * Zn + * Ga + * Ge + * As + * Se + * Br + * Kr + * Rb + * Sr + * Y + * Zr + * Nb + * Mo + * Tc + * Ru + * Rh + * Pd + * Ag + * Cd + * In + * Sn + * Sb + * Te + * I + * Xe + * Cs + * Ba + * La + * Ce + * Pr + * Nd + * Pm + * Sm + * Eu + * Gd + * Tb + * Dy + * Ho + * Er + * Tm + * Yb + * Lu + * Hf + * Ta + * W + * Re + * Os + * Ir + * Pt + * Au + * Hg + * Tl + * Pb + * Bi + * Po + * At + * Rn + * Fr + * Ra + * Ac + * Th + * Pa + * U + * Np + * Pu + * Am + * Cm + * Bk + * Cf If the *echo* keyword is specified, compute saed will provide extra reporting information to the screen. diff --git a/doc/src/compute_sna_atom.rst b/doc/src/compute_sna_atom.rst index be3deaf36a..6da3ab45ea 100644 --- a/doc/src/compute_sna_atom.rst +++ b/doc/src/compute_sna_atom.rst @@ -82,8 +82,10 @@ onto the 3-sphere, the surface of the unit ball in a four-dimensional space. The radial distance *r* within *R\_ii'* is mapped on to a third polar angle *theta0* defined by, -.. image:: Eqs/compute_sna_atom1.jpg - :align: center +.. math:: + + \theta_0 = {\tt rfac0} \frac{r-r_{min0}}{R_{ii'}-r_{min0}} \pi + In this way, all possible neighbor positions are mapped on to a subset of the 3-sphere. Points south of the latitude *theta0max=rfac0\*Pi* @@ -101,8 +103,10 @@ radial distance. Expanding this density function as a generalized Fourier series in the basis functions, we can write each Fourier coefficient as -.. image:: Eqs/compute_sna_atom2.jpg - :align: center +.. math:: + + u^j_{m,m'} = U^j_{m,m'}(0,0,0) + \sum_{r_{ii'} < R_{ii'}}{f_c(r_{ii'}) w_{i'} U^j_{m,m'}(\theta_0,\theta,\phi)} + The *w\_i'* neighbor weights are dimensionless numbers that are chosen to distinguish atoms of different types, while the central atom is @@ -110,8 +114,11 @@ arbitrarily assigned a unit weight. The function *fc(r)* ensures that the contribution of each neighbor atom goes smoothly to zero at *R\_ii'*: -.. image:: Eqs/compute_sna_atom4.jpg - :align: center +.. math:: + + f_c(r) = & \frac{1}{2}(\cos(\pi \frac{r-r_{min0}}{R_{ii'}-r_{min0}}) + 1), r \leq R_{ii'} \\ + = & 0, r > R_{ii'} + The expansion coefficients *u\^j\_m,m'* are complex-valued and they are not directly useful as descriptors, because they are not invariant @@ -119,8 +126,15 @@ under rotation of the polar coordinate frame. However, the following scalar triple products of expansion coefficients can be shown to be real-valued and invariant under rotation :ref:`(Bartok) `. -.. image:: Eqs/compute_sna_atom3.jpg - :align: center +.. math:: + + B_{j_1,j_2,j} = + \sum_{m_1,m'_1=-j_1}^{j_1}\sum_{m_2,m'_2=-j_2}^{j_2}\sum_{m,m'=-j}^{j} (u^j_{m,m'})^* + H {\scriptscriptstyle \begin{array}{l} {j} {m} {m'} \\ + {j_1} {m_1} {m'_1} \\ + {j_2} {m_2} {m'_2} \end{array}} + u^{j_1}_{m_1,m'_1} u^{j_2}_{m_2,m'_2} + The constants *H\^jmm'\_j1m1m1'\_j2m2m2'* are coupling coefficients, analogous to Clebsch-Gordan coefficients for rotations on the @@ -138,8 +152,10 @@ atom. Compute *snad/atom* calculates the derivative of the bispectrum components summed separately for each atom type: -.. image:: Eqs/compute_sna_atom5.jpg - :align: center +.. math:: + + -\sum_{i' \in I} \frac{\partial {B^{i'}_{j_1,j_2,j} }}{\partial {\bf r}_i} + The sum is over all atoms *i'* of atom type *I*\ . For each atom *i*\ , this compute evaluates the above expression for each direction, each @@ -149,8 +165,10 @@ for a detailed explanation. Compute *snav/atom* calculates the virial contribution due to the derivatives: -.. image:: Eqs/compute_sna_atom6.jpg - :align: center +.. math:: + + -{\bf r}_i \otimes \sum_{i' \in I} \frac{\partial {B^{i'}_{j_1,j_2,j}}}{\partial {\bf r}_i} + Again, the sum is over all atoms *i'* of atom type *I*\ . For each atom *i*\ , this compute evaluates the above expression for each of the six @@ -233,7 +251,7 @@ ordered in which they are listed. file. The rerun script can use a :doc:`special_bonds ` command that includes all pairs in the neighbor list. -;line +---------- **Output info:** diff --git a/doc/src/compute_xrd.rst b/doc/src/compute_xrd.rst index b7ed547572..d95fad79e4 100644 --- a/doc/src/compute_xrd.rst +++ b/doc/src/compute_xrd.rst @@ -57,21 +57,16 @@ of wavelength lambda. The x-ray diffraction intensity, I, at each reciprocal lattice point, k, is computed from the structure factor, F, using the equations: -.. image:: Eqs/compute_xrd1.jpg - :align: center - -.. image:: Eqs/compute_xrd2.jpg - :align: center - -.. image:: Eqs/compute_xrd3.jpg - :align: center +.. math:: -.. image:: Eqs/compute_xrd4.jpg - :align: center + I = & Lp(\theta)\frac{F^{*}F}{N} \\ + F(\mathbf{k}) = & \sum_{j=1}^{N}f_j(\theta)exp(2\pi i \mathbf{k}\cdot \mathbf{r}_j) \\ + Lp(\theta) = & \frac{1+cos^{2}(2\theta)}{cos(\theta)sin^{2}(\theta)} \\ + \frac{sin(\theta)}{\lambda} = & \frac{\left | \mathbf{k} \right |}{2} -Here, K is the location of the reciprocal lattice node, rj is the -position of each atom, fj are atomic scattering factors, LP is the -Lorentz-polarization factor, and theta is the scattering angle of +Here, K is the location of the reciprocal lattice node, :math:`r_j` is the +position of each atom, :math:`f_j` are atomic scattering factors, *Lp* is the +Lorentz-polarization factor, and :math:`\theta` is the scattering angle of diffraction. The Lorentz-polarization factor can be turned off using the optional *LP* keyword. @@ -114,8 +109,10 @@ for each atom type (type1 type2 ... typeN) and angle of diffraction. The analytic approximation is computed using the formula :ref:`(Colliex) `: -.. image:: Eqs/compute_xrd5.jpg - :align: center +.. math:: + + f_j\left ( \frac{sin(\theta)}{\lambda} \right )=\sum_{i}^{4} + a_i exp\left ( -b_i \frac{sin^{2}(\theta)}{\lambda^{2}} \right )+c Coefficients parameterized by :ref:`(Peng) ` are assigned for each atom type designating the chemical symbol and charge of each atom diff --git a/doc/src/fix_ave_correlate_long.rst b/doc/src/fix_ave_correlate_long.rst index 6c9d7c076b..dd84daaa75 100644 --- a/doc/src/fix_ave_correlate_long.rst +++ b/doc/src/fix_ave_correlate_long.rst @@ -70,11 +70,12 @@ Examples Description """"""""""" -This fix is similar in spirit and syntax to the :doc:`fix ave/correlate `. However, this fix allows the -efficient calculation of time correlation functions on the fly over -extremely long time windows without too much CPU overhead, using a -multiple-tau method :ref:`(Ramirez) ` that decreases the resolution -of the stored correlation function with time. +This fix is similar in spirit and syntax to the :doc:`fix ave/correlate `. +However, this fix allows the efficient calculation of time correlation +functions on-the-fly over extremely long time windows with little +additional CPU overhead, using a multiple-tau method +:ref:`(Ramirez) ` that decreases the resolution of the stored +correlation function with time. It is not a full drop-in replacement. The group specified with this command is ignored. However, note that specified values may represent calculations performed by computes and @@ -115,11 +116,13 @@ For the meaning of the additional optional keywords, see the :doc:`fix ave/corre **Restart, fix\_modify, output, run start/stop, minimize info:** -Since this fix in intended for the calculation of time correlation -functions over very long MD simulations, the information about this -fix is written automatically to binary restart files, so that the time -correlation calculation can continue in subsequent simulations. None -of the fix\_modify options are relevant to this fix. +Contrary to doc:`fix ave/correlate `_ this fix +does **not** provide access to its internal data to various output +options. Since this fix in intended for the calculation of time +correlation functions over very long MD simulations, the information +about this fix is written automatically to binary restart files, so +that the time correlation calculation can continue in subsequent +simulations. None of the fix\_modify options are relevant to this fix. No parameter of this fix can be used with the start/stop keywords of the run command. This fix is not invoked during energy minimization. diff --git a/doc/src/fix_bond_react.rst b/doc/src/fix_bond_react.rst index ec431168b8..14d04009e7 100644 --- a/doc/src/fix_bond_react.rst +++ b/doc/src/fix_bond_react.rst @@ -374,8 +374,10 @@ reacting molecules. The constraint of type 'arrhenius' imposes an additional reaction probability according to the temperature-dependent Arrhenius equation: -.. image:: Eqs/fix_bond_react.jpg - :align: center +.. math:: + + k = AT^{n}e^{\frac{-E_{a}}{k_{B}T}} + The Arrhenius constraint has the following syntax: @@ -385,8 +387,8 @@ The Arrhenius constraint has the following syntax: arrhenius *A* *n* *E_a* *seed* where 'arrhenius' is the required keyword, *A* is the pre-exponential -factor, *n* is the exponent of the temperature dependence, *E\_a* is -the activation energy (:doc:`units ` of energy), and *seed* is a +factor, *n* is the exponent of the temperature dependence, :math:`E_a` +is the activation energy (:doc:`units ` of energy), and *seed* is a random number seed. The temperature is defined as the instantaneous temperature averaged over all atoms in the reaction site, and is calculated in the same manner as for example diff --git a/doc/src/fix_box_relax.rst b/doc/src/fix_box_relax.rst index d915d1a2a0..0c4cad7ad0 100644 --- a/doc/src/fix_box_relax.rst +++ b/doc/src/fix_box_relax.rst @@ -228,23 +228,28 @@ With this fix, the potential energy used by the minimizer is augmented by an additional energy provided by the fix. The overall objective function then is: -.. image:: Eqs/fix_box_relax1.jpg - :align: center +.. math:: -where *U* is the system potential energy, *P*\ \_t is the desired -hydrostatic pressure, *V* and *V*\ \_0 are the system and reference -volumes, respectively. *E*\ \_\ *strain* is the strain energy expression + E = U + P_t \left(V-V_0 \right) + E_{strain} + + +where *U* is the system potential energy, :math:`P_t` is the desired +hydrostatic pressure, :math:`V` and :math:`V_0` are the system and reference +volumes, respectively. :math:`E_{strain}` is the strain energy expression proposed by Parrinello and Rahman :ref:`(Parrinello1981) `. Taking derivatives of *E* w.r.t. the box dimensions, and setting these to zero, we find that at the minimum of the objective function, the global system stress tensor **P** will satisfy the relation: -.. image:: Eqs/fix_box_relax2.jpg - :align: center +.. math:: + + \mathbf P = P_t \mathbf I + {\mathbf S_t} \left( \mathbf h_0^{-1} \right)^t \mathbf h_{0d} + -where **I** is the identity matrix, **h**\ \_0 is the box dimension tensor of -the reference cell, and **h**\ \_0\ *d* is the diagonal part of -**h**\ \_0. **S**\ \_\ *t* is a symmetric stress tensor that is chosen by LAMMPS +where **I** is the identity matrix, :math:`\mathbf{h_0}` is the box +dimension tensor of the reference cell, and ::math:`\mathbf{h_{0d}}` +is the diagonal part of :math:`\mathbf{h_0}`. :math:`\mathbf{S_t}` +is a symmetric stress tensor that is chosen by LAMMPS so that the upper-triangular components of **P** equal the stress tensor specified by the user. diff --git a/doc/src/fix_controller.rst b/doc/src/fix_controller.rst index 7561df6856..839c01ef5f 100644 --- a/doc/src/fix_controller.rst +++ b/doc/src/fix_controller.rst @@ -97,43 +97,49 @@ The PID controller is invoked once each *Nevery* timesteps. The PID controller is implemented as a discretized version of the following dynamic equation: -.. image:: Eqs/fix_controller1.jpg - :align: center +.. math:: + \frac{dc}{dt} = \hat{E} -\alpha (K_p e + K_i \int_0^t e \, dt + K_d \frac{de}{dt} ) + where *c* is the continuous time analog of the control variable, *e* =\ *pvar*\ -\ *setpoint* is the error in the process variable, and -*alpha*\ , *Kp*\ , *Ki*\ , and *Kd* are constants set by the corresponding +:math:`\alpha`, :math:`K_p`, :math:`K_i` , and :math:`K_d` are constants +set by the corresponding keywords described above. The discretized version of this equation is: -.. image:: Eqs/fix_controller2.jpg - :align: center +.. math:: -where *tau* = *Nevery* \* *timestep* is the time interval between updates, + c_n = \hat{E} c_{n-1} -\alpha \left( K_p \tau e_n + K_i \tau^2 \sum_{i=1}^n e_i + K_d (e_n - e_{n-1}) \right) + + +where :math:`\tau = \mathtt{Nevery} \cdot \mathtt{timestep}` is the time +interval between updates, and the subscripted variables indicate the values of *c* and *e* at successive updates. From the first equation, it is clear that if the three gain values -*Kp*\ , *Ki*\ , *Kd* are dimensionless constants, then *alpha* must have +:math:`K_p`, :math:`K_i`, :math:`K_d` are dimensionless constants, +then :math:`\alpha` must have units of [unit *cvar*\ ]/[unit *pvar*\ ]/[unit time] e.g. [ eV/K/ps ]. The advantage of this unit scheme is that the value of the constants should be invariant under a change of either the MD timestep size or the value of *Nevery*\ . Similarly, if the LAMMPS :doc:`unit style ` is changed, it should only be necessary to change -the value of *alpha* to reflect this, while leaving *Kp*\ , *Ki*\ , and -*Kd* unaltered. +the value of :math:`\alpha` to reflect this, while leaving :math:`K_p`, +:math:`K_i`, and :math:`K_d` unaltered. When choosing the values of the four constants, it is best to first -pick a value and sign for *alpha* that is consistent with the -magnitudes and signs of *pvar* and *cvar*\ . The magnitude of *Kp* -should then be tested over a large positive range keeping *Ki* = *Kd* =0. -A good value for *Kp* will produce a fast response in *pvar*\ , without -overshooting the *setpoint*\ . For many applications, proportional -feedback is sufficient, and so *Ki* = *Kd* =0 can be used. In cases where -there is a substantial lag time in the response of *pvar* to a change -in *cvar*\ , this can be counteracted by increasing *Kd*\ . In situations +pick a value and sign for :math:`\alpha` that is consistent with the +magnitudes and signs of *pvar* and *cvar*\ . The magnitude of :math:`K_p` +should then be tested over a large positive range keeping :math:`K_i = K_d =0`. +A good value for :math:`K_p` will produce a fast response in *pvar*\ , +without overshooting the *setpoint*\ . For many applications, proportional +feedback is sufficient, and so :math:`K_i` = K_d =0` can be used. In cases +where there is a substantial lag time in the response of *pvar* to a change +in *cvar*\ , this can be counteracted by increasing :math:`K_d`. In situations where *pvar* plateaus without reaching *setpoint*\ , this can be -counteracted by increasing *Ki*\ . In the language of Charles Dickens, -*Kp* represents the error of the present, *Ki* the error of the past, -and *Kd* the error yet to come. +counteracted by increasing :math:`K_i`. In the language of Charles Dickens, +:math:`K_p` represents the error of the present, :math:`K_i` the error of +the past, and :math:`K_d` the error yet to come. Because this fix updates *cvar*\ , but does not initialize its value, the initial value is that assigned by the user in the input script via @@ -141,7 +147,7 @@ the :doc:`internal-style variable ` command. This value is used (by the other LAMMPS command that used the variable) until this fix performs its first update of *cvar* after *Nevery* timesteps. On the first update, the value of the derivative term is set to zero, -because the value of *e\_n-1* is not yet defined. +because the value of :math:`e_n-1` is not yet defined. ---------- diff --git a/doc/src/fix_ehex.rst b/doc/src/fix_ehex.rst index 34445fd284..9cc02261c7 100644 --- a/doc/src/fix_ehex.rst +++ b/doc/src/fix_ehex.rst @@ -78,13 +78,20 @@ additional thermostatting force to the equations of motion, such that the time evolution of coordinates and momenta of particle :math:`i` becomes :ref:`(Wirnsberger) ` -.. image:: Eqs/fix_ehex_eom.jpg - :align: center +.. math:: + + \dot{\mathbf r}_i &= \mathbf v_i, \\ + \dot{\mathbf v}_i &= \frac{\mathbf f_i}{m_i} + \frac{\mathbf g_i}{m_i}. The thermostatting force is given by -.. image:: Eqs/fix_ehex_f.jpg - :align: center +.. math:: + + \mathbf g_i = \begin{cases} + \frac{m_i}{2} \frac{ F_{\Gamma_{k(\mathbf r_i)}}}{ K_{\Gamma_{k(\mathbf r_i)}}} + \left(\mathbf v_i - \mathbf v_{\Gamma_{k(\mathbf r_i)}} \right) & \mbox{$k(\mathbf r_i)> 0$ (inside a reservoir),} \\ + 0 & \mbox{otherwise, } + \end{cases} where :math:`m_i` is the mass and :math:`k(\mathbf r_i)` maps the particle position to the respective reservoir. The quantity diff --git a/doc/src/fix_eos_cv.rst b/doc/src/fix_eos_cv.rst index b871429ffa..da1459970f 100644 --- a/doc/src/fix_eos_cv.rst +++ b/doc/src/fix_eos_cv.rst @@ -27,17 +27,19 @@ Description """"""""""" Fix *eos/cv* applies a mesoparticle equation of state to relate the -particle internal energy (u\_i) to the particle internal temperature -(dpdTheta\_i). The *eos/cv* mesoparticle equation of state requires +particle internal energy (:math:`u_i`) to the particle internal temperature +(:math:`\theta_i`). The *eos/cv* mesoparticle equation of state requires the constant-volume heat capacity, and is defined as follows: -.. image:: Eqs/fix_eos-cv.jpg - :align: center +.. math:: -where Cv is the constant-volume heat capacity, u\_cond is the internal -conductive energy, and u\_mech is the internal mechanical energy. Note -that alternative definitions of the mesoparticle equation of state are -possible. + u_{i} = u^{mech}_{i} + u^{cond}_{i} = C_{V} \theta_{i} + + +where :math:`C_V` is the constant-volume heat capacity, :math:`u^{cond}` +is the internal conductive energy, and :math:`u^{mech}` is the internal +mechanical energy. Note that alternative definitions of the mesoparticle +equation of state are possible. ---------- diff --git a/doc/src/fix_eos_table_rx.rst b/doc/src/fix_eos_table_rx.rst index a41ac404b7..681b656b53 100644 --- a/doc/src/fix_eos_table_rx.rst +++ b/doc/src/fix_eos_table_rx.rst @@ -40,30 +40,34 @@ Description Fix *eos/table/rx* applies a tabulated mesoparticle equation of state to relate the concentration-dependent particle internal -energy (u\_i) to the particle internal temperature (dpdTheta\_i). +energy (:math:`u_i`) to the particle internal temperature (:math:`\theta_i`). -The concentration-dependent particle internal energy (u\_i) is +The concentration-dependent particle internal energy (:math:`u_i`) is computed according to the following relation: -.. image:: Eqs/fix_eos_table_rx.jpg - :align: center +.. math:: -where *m* is the number of species, *c\_i,j* is the concentration of -species *j* in particle *i*\ , *u\_j* is the internal energy of species j, -*DeltaH\_f,j* is the heat of formation of species *j*\ , N is the number of -molecules represented by the coarse-grained particle, kb is the -Boltzmann constant, and T is the temperature of the system. Additionally, -it is possible to modify the concentration-dependent particle internal + U_{i} = \displaystyle\sum_{j=1}^{m} c_{i,j}(u_{j} + \Delta H_{f,j}) + \frac{3k_{b}T}{2} + Nk_{b}T \\ + + +where *m* is the number of species, :math:`c_{i,j}` is the +concentration of species *j* in particle *i*\ , :math:`u_j` is the +internal energy of species j, :math:`\Delta H_{f,j} is the heat of +formation of species *j*\ , N is the number of molecules represented +by the coarse-grained particle, :math:`k_b` is the Boltzmann constant, +and *T* is the temperature of the system. Additionally, it is +possible to modify the concentration-dependent particle internal energy relation by adding an energy correction, temperature-dependent -correction, and/or a molecule-dependent correction. An energy correction can -be specified as a constant (in energy units). A temperature correction can be -specified by multiplying a temperature correction coefficient by the -internal temperature. A molecular correction can be specified by -by multiplying a molecule correction coefficient by the average number of -product gas particles in the coarse-grain particle. +correction, and/or a molecule-dependent correction. An energy +correction can be specified as a constant (in energy units). A +temperature correction can be specified by multiplying a temperature +correction coefficient by the internal temperature. A molecular +correction can be specified by by multiplying a molecule correction +coefficient by the average number of product gas particles in the +coarse-grain particle. Fix *eos/table/rx* creates interpolation tables of length *N* from *m* -internal energy values of each species *u\_j* listed in a file as a +internal energy values of each species :math:`u_j` listed in a file as a function of internal temperature. During a simulation, these tables are used to interpolate internal energy or temperature values as needed. The interpolation is done with the *linear* style. For the *linear* style, @@ -72,20 +76,21 @@ which an internal energy is computed by linear interpolation. A secant solver is used to determine the internal temperature from the internal energy. The first filename specifies a file containing tabulated internal -temperature and *m* internal energy values for each species *u\_j*. +temperature and *m* internal energy values for each species :math:`u_j`. The keyword specifies a section of the file. The format of this file is described below. The second filename specifies a file containing heat of formation -*DeltaH\_f,j* for each species. +:math:`\Delta H_{f,j}` for each species. In cases where the coarse-grain particle represents a single molecular -species (i.e., no reactions occur and fix *rx* is not present in the input file), -fix *eos/table/rx* can be applied in a similar manner to fix *eos/table* -within a non-reactive DPD simulation. In this case, the heat of formation -filename is replaced with the heat of formation value for the single species. -Additionally, the energy correction and temperature correction coefficients may -also be specified as fix arguments. +species (i.e., no reactions occur and fix *rx* is not present in the +input file), fix *eos/table/rx* can be applied in a similar manner to +fix *eos/table* within a non-reactive DPD simulation. In this case, +the heat of formation filename is replaced with the heat of formation +value for the single species. Additionally, the energy correction and +temperature correction coefficients may also be specified as fix +arguments. ---------- diff --git a/doc/src/fix_gcmc.rst b/doc/src/fix_gcmc.rst index a0717dd6ae..dd06d074a4 100644 --- a/doc/src/fix_gcmc.rst +++ b/doc/src/fix_gcmc.rst @@ -248,8 +248,10 @@ two groups: the default group "all" and the fix group The chemical potential is a user-specified input parameter defined as: -.. image:: Eqs/fix_gcmc1.jpg - :align: center +.. math:: + + \mu = \mu^{id} + \mu^{ex} + The second term mu\_ex is the excess chemical potential due to energetic interactions and is formally zero for the fictitious gas @@ -260,31 +262,35 @@ quite different. The first term mu\_id is the ideal gas contribution to the chemical potential. mu\_id can be related to the density or pressure of the fictitious gas reservoir by: -.. image:: Eqs/fix_gcmc2.jpg - :align: center +.. math:: + + \mu^{id} = & k T \ln{\rho \Lambda^3} \\ + = & k T \ln{\frac{\phi P \Lambda^3}{k T}} + + +where *k* is Boltzman's constant, *T* is the user-specified +temperature, :math:`\rho` is the number density, *P* is the pressure, +and :math:`\phi` is the fugacity coefficient. The constant +:math:`\Lambda` is required for dimensional consistency. For all unit +styles except *lj* it is defined as the thermal de Broglie wavelength + +.. math:: -where k is Boltzman's constant, -T is the user-specified temperature, rho is the number density, -P is the pressure, and phi is the fugacity coefficient. -The constant Lambda is required for dimensional consistency. -For all unit styles except *lj* it is defined as the thermal -de Broglie wavelength + \Lambda = \sqrt{ \frac{h^2}{2 \pi m k T}} -.. image:: Eqs/fix_gcmc3.jpg - :align: center -where h is Planck's constant, and m is the mass of the exchanged atom -or molecule. For unit style *lj*\ , Lambda is simply set to the -unity. Note that prior to March 2017, lambda for unit style *lj* was -calculated using the above formula with h set to the rather specific +where *h* is Planck's constant, and *m* is the mass of the exchanged atom +or molecule. For unit style *lj*\ , :math:`\Lambda` is simply set to +unity. Note that prior to March 2017, :math:`\Lambda` for unit style *lj* +was calculated using the above formula with *h* set to the rather specific value of 0.18292026. Chemical potential under the old definition can be converted to an equivalent value under the new definition by -subtracting 3kTln(Lambda\_old). +subtracting :math:`3 k T \ln(\Lambda_{old})`. As an alternative to specifying mu directly, the ideal gas reservoir -can be defined by its pressure P using the *pressure* keyword, in +can be defined by its pressure *P* using the *pressure* keyword, in which case the user-specified chemical potential is ignored. The user -may also specify the fugacity coefficient phi using the +may also specify the fugacity coefficient :math:`\phi` using the *fugacity\_coeff* keyword, which defaults to unity. The *full\_energy* option means that the fix calculates the total @@ -322,7 +328,7 @@ this will ensure roughly the same behavior whether or not the *full\_energy* option is used. Inserted atoms and molecules are assigned random velocities based on -the specified temperature T. Because the relative velocity of all +the specified temperature *T*. Because the relative velocity of all atoms in the molecule is zero, this may result in inserted molecules that are systematically too cold. In addition, the intramolecular potential energy of the inserted molecule may cause the kinetic energy diff --git a/doc/src/fix_gld.rst b/doc/src/fix_gld.rst index fdc1bd3c6a..8dc2b9dd98 100644 --- a/doc/src/fix_gld.rst +++ b/doc/src/fix_gld.rst @@ -62,8 +62,12 @@ to be a Prony series. With this fix active, the force on the *j*\ th atom is given as -.. image:: Eqs/fix_gld1.jpg - :align: center +.. math:: + + {\bf F}_{j}(t) = & {\bf F}^C_j(t)-\int \limits_{0}^{t} \Gamma_j(t-s) {\bf v}_j(s)~\text{d}s + {\bf F}^R_j(t) \\ + \Gamma_j(t-s) = & \sum \limits_{k=1}^{N_k} \frac{c_k}{\tau_k} e^{-(t-s)/\tau_k} \\ + \langle{\bf F}^R_j(t),{\bf F}^R_j(s)\rangle = & \text{k$_\text{B}$T} ~\Gamma_j(t-s) + Here, the first term is representative of all conservative (pairwise, bonded, etc) forces external to this fix, the second is the temporally @@ -72,7 +76,7 @@ the colored Gaussian random force. The Prony series form of the memory kernel is chosen to enable an extended variable formalism, with a number of exemplary mathematical -features discussed in :ref:`(Baczewski) `. In particular, 3N\_k +features discussed in :ref:`(Baczewski) `. In particular, :math:`3N_k` extended variables are added to each atom, which effect the action of the memory kernel without having to explicitly evaluate the integral over time in the second term of the force. This also has the benefit diff --git a/doc/src/fix_grem.rst b/doc/src/fix_grem.rst index 4c2054e0c0..53b815ec36 100644 --- a/doc/src/fix_grem.rst +++ b/doc/src/fix_grem.rst @@ -38,17 +38,19 @@ which uses non-Boltzmann ensembles to sample over first order phase transitions. The is done by defining replicas with an enthalpy dependent effective temperature -.. image:: Eqs/fix_grem.jpg - :align: center +.. math:: -with *eta* negative and steep enough to only intersect the + T_{eff} = \lambda + \eta (H - H_0) + + +with :math:`\eta` negative and steep enough to only intersect the characteristic microcanonical temperature (Ts) of the system once, -ensuring a unimodal enthalpy distribution in that replica. *Lambda* is -the intercept and effects the generalized ensemble similar to how -temperature effects a Boltzmann ensemble. *H0* is a reference -enthalpy, and is typically set as the lowest desired sampled enthalpy. -Further explanation can be found in our recent papers -:ref:`(Malolepsza) `. +ensuring a unimodal enthalpy distribution in that replica. +:math:`\lambda` is the intercept and effects the generalized ensemble +similar to how temperature effects a Boltzmann ensemble. :math:`H_0` +is a reference enthalpy, and is typically set as the lowest desired +sampled enthalpy. Further explanation can be found in our recent +papers :ref:`(Malolepsza) `. This fix requires a Nose-Hoover thermostat fix reference passed to the grem as *thermostat-ID*\ . Two distinct temperatures exist in this @@ -59,13 +61,13 @@ algorithms can be used. The fix enforces a generalized ensemble in a single replica only. Typically, this ideology is combined with replica exchange with -replicas differing by *lambda* only for simplicity, but this is not +replicas differing by :math:`\lambda` only for simplicity, but this is not required. A multi-replica simulation can be run within the LAMMPS environment using the :doc:`temper/grem ` command. This utilizes LAMMPS partition mode and requires the number of available processors be on the order of the number of desired replicas. A 100-replica simulation would require at least 100 processors (1 per -world at minimum). If a many replicas are needed on a small number of +world at minimum). If many replicas are needed on a small number of processors, multi-replica runs can be run outside of LAMMPS. An example of this can be found in examples/USER/misc/grem and has no limit on the number of replicas per processor. However, this is very @@ -74,13 +76,13 @@ inefficient and error prone and should be avoided if possible. In general, defining the generalized ensembles is unique for every system. When starting a many-replica simulation without any knowledge of the underlying microcanonical temperature, there are several tricks -we have utilized to optimize the process. Choosing a less-steep *eta* -yields broader distributions, requiring fewer replicas to map the -microcanonical temperature. While this likely struggles from the same -sampling problems gREM was built to avoid, it provides quick insight -to Ts. Initially using an evenly-spaced *lambda* distribution -identifies regions where small changes in enthalpy lead to large -temperature changes. Replicas are easily added where needed. +we have utilized to optimize the process. Choosing a less-steep +:math:`\eta` yields broader distributions, requiring fewer replicas to +map the microcanonical temperature. While this likely struggles from +the same sampling problems gREM was built to avoid, it provides quick +insight to Ts. Initially using an evenly-spaced :math:`\lambda` +distribution identifies regions where small changes in enthalpy lead +to large temperature changes. Replicas are easily added where needed. ---------- diff --git a/doc/src/fix_hyper_global.rst b/doc/src/fix_hyper_global.rst index 809bd37981..2d0cda5970 100644 --- a/doc/src/fix_hyper_global.rst +++ b/doc/src/fix_hyper_global.rst @@ -58,65 +58,67 @@ Fichthorn as described in :ref:`(Miron) `. In LAMMPS we use a simplified version of bond-boost GHD where a single bond in the system is biased at any one timestep. -Bonds are defined between each pair of I,J atoms whose R0ij distance -is less than *cutbond*\ , when the system is in a quenched state +Bonds are defined between each pair of atoms *ij*\ , whose :math:`R^0_{ij}` +distance is less than *cutbond*\ , when the system is in a quenched state (minimum) energy. Note that these are not "bonds" in a covalent sense. A bond is simply any pair of atoms that meet the distance criterion. *Cutbond* is an argument to this fix; it is discussed -below. A bond is only formed if one or both of the I.J atoms are in +below. A bond is only formed if one or both of the *ij* atoms are in the specified group. -The current strain of bond IJ (when running dynamics) is defined as +The current strain of bond *ij* (when running dynamics) is defined as -.. parsed-literal:: +.. math:: - Eij = (Rij - R0ij) / R0ij + E_{ij} = \frac{R_{ij} - R^0_{ij}}{R^0_{ij}} -where Rij is the current distance between atoms I,J, and R0ij is the -equilibrium distance in the quenched state. +where :math:`R_{ij}` is the current distance between atoms *i* and *j*\ , +and :math:`R^0_{ij}` is the equilibrium distance in the quenched state. -The bias energy Vij of any bond IJ is defined as +The bias energy :math:`V_{ij}` of any bond between atoms *i* and *j* +is defined as -.. parsed-literal:: +.. math:: - Vij = Vmax \* (1 - (Eij/q)\^2) for abs(Eij) < qfactor - = 0 otherwise + V_{ij} = V^{max} \cdot \left( 1 - \left(\frac{E_{ij}}{q}\right)^2 \right) \textrm{ for } \left|E_{ij}\right| < qfactor \textrm{ or } 0 \textrm{ otherwise} -where the prefactor *Vmax* and the cutoff *qfactor* are arguments to +where the prefactor :math:`V^{max}` and the cutoff *qfactor* are arguments to this fix; they are discussed below. This functional form is an -inverse parabola centered at 0.0 with height Vmax and which goes to -0.0 at +/- qfactor. +inverse parabola centered at 0.0 with height :math:`V^{max}` and +which goes to 0.0 at +/- qfactor. -Let Emax = the maximum of abs(Eij) for all IJ bonds in the system on a -given timestep. On that step, Vij is added as a bias potential to -only the single bond with strain Emax, call it Vij(max). Note that -Vij(max) will be 0.0 if Emax >= qfactor on that timestep. Also note -that Vij(max) is added to the normal interatomic potential that is -computed between all atoms in the system at every step. +Let :math:`E^{max}` be the maximum of :math:`\left| E_{ij} \right|` +for all *ij* bonds in the system on a +given timestep. On that step, :math:`V_{ij}` is added as a bias potential +to only the single bond with strain :math:`E^{max}`, call it +:math:`V^{max}_{ij}`. Note that :math:`V^{max}_{ij}` will be 0.0 +if :math:`E^{max} >= \textrm{qfactor}` on that timestep. Also note +that :math:`V^{max}_{ij}` is added to the normal interatomic potential +that is computed between all atoms in the system at every step. -The derivative of Vij(max) with respect to the position of each atom -in the Emax bond gives a bias force Fij(max) acting on the bond as +The derivative of :math:`V^{max}_{ij}` with respect to the position of +each atom in the :math:`E^{max}` bond gives a bias force +:math:`F^{max}_{ij}` acting on the bond as -.. parsed-literal:: +.. math:: - Fij(max) = - dVij(max)/dEij = 2 Vmax Eij / qfactor\^2 for abs(Eij) < qfactor - = 0 otherwise + F^{max}_{ij} = - \frac{dV^{max}_{ij}}{dE_{ij}} = \frac{2 V^{max} E-{ij}}{\textrm{qfactor}^2} \textrm{ for } \left|E_{ij}\right| < \textrm{qfactor} \textrm{ or } 0 \textrm{ otherwise} which can be decomposed into an equal and opposite force acting on -only the two I,J atoms in the Emax bond. +only the two *ij* atoms in the :math:`E^{max}` bond. The time boost factor for the system is given each timestep I by -.. parsed-literal:: +.. math:: - Bi = exp(beta \* Vij(max)) + B_i = e^{\beta V^{max}_{ij}} -where beta = 1/kTequil, and *Tequil* is the temperature of the system -and an argument to this fix. Note that Bi >= 1 at every step. +where :math:`\beta = \frac{1}{kT_{equil}}`, and :math:`T_{equil}` is the temperature of the system +and an argument to this fix. Note that :math:`B_i >= 1` at every step. .. note:: @@ -125,21 +127,21 @@ and an argument to this fix. Note that Bi >= 1 at every step. constant-temperature (NVT) dynamics. LAMMPS does not check that this is done. -The elapsed time t\_hyper for a GHD simulation running for *N* +The elapsed time :math:`t_{hyper}` for a GHD simulation running for *N* timesteps is simply -.. parsed-literal:: +.. math:: - t_hyper = Sum (i = 1 to N) Bi \* dt + t_{hyper} = \sum_{i=1,N} B-i \cdot dt -where dt is the timestep size defined by the :doc:`timestep ` +where *dt* is the timestep size defined by the :doc:`timestep ` command. The effective time acceleration due to GHD is thus t\_hyper / N\*dt, where N\*dt is elapsed time for a normal MD run of N timesteps. Note that in GHD, the boost factor varies from timestep to timestep. -Likewise, which bond has Emax strain and thus which pair of atoms the -bias potential is added to, will also vary from timestep to timestep. +Likewise, which bond has :math:`E^{max}` strain and thus which pair of +atoms the bias potential is added to, will also vary from timestep to timestep. This is in contrast to local hyperdynamics (LHD) where the boost factor is an input parameter; see the :doc:`fix hyper/local ` doc page for details. @@ -150,9 +152,9 @@ factor is an input parameter; see the :doc:`fix hyper/local ` d Here is additional information on the input parameters for GHD. The *cutbond* argument is the cutoff distance for defining bonds -between pairs of nearby atoms. A pair of I,J atoms in their +between pairs of nearby atoms. A pair of *ij* atoms in their equilibrium, minimum-energy configuration, which are separated by a -distance Rij < *cutbond*\ , are flagged as a bonded pair. Setting +distance :math:`R_{ij} < cutbond`, are flagged as a bonded pair. Setting *cubond* to be ~25% larger than the nearest-neighbor distance in a crystalline lattice is a typical choice for solids, so that bonds exist only between nearest neighbor pairs. @@ -166,7 +168,7 @@ could still experience a non-zero bias force. If *qfactor* is set too large, then transitions from one energy basin to another are affected because the bias potential is non-zero at the transition state (e.g. saddle point). If *qfactor* is set too small -than little boost is achieved because the Eij strain of some bond in +than little boost is achieved because the :math:`E_{ij}` strain of some bond in the system will (nearly) always exceed *qfactor*\ . A value of 0.3 for *qfactor* is typically reasonable. @@ -220,7 +222,7 @@ scalar is the magnitude of the bias potential (energy units) applied on the current timestep. The vector stores the following quantities: * 1 = boost factor on this step (unitless) -* 2 = max strain Eij of any bond on this step (absolute value, unitless) +* 2 = max strain :math:`E_{ij}` of any bond on this step (absolute value, unitless) * 3 = ID of first atom in the max-strain bond * 4 = ID of second atom in the max-strain bond * 5 = average # of bonds/atom on this step diff --git a/doc/src/fix_hyper_local.rst b/doc/src/fix_hyper_local.rst index 335cd10f69..d7d0f012b6 100644 --- a/doc/src/fix_hyper_local.rst +++ b/doc/src/fix_hyper_local.rst @@ -77,66 +77,66 @@ To understand this description, you should first read the description of the GHD algorithm on the :doc:`fix hyper/global ` doc page. This description of LHD builds on the GHD description. -The definition of bonds and Eij are the same for GHD and LHD. The -formulas for Vij(max) and Fij(max) are also the same except for a -pre-factor Cij, explained below. +The definition of bonds and :math:`E_{ij}` are the same for GHD and LHD. +The formulas for :math:`V^{max}_{ij}` and :math:`F^{max}_{ij}` are also +the same except for a pre-factor :math:`C_{ij}`, explained below. -The bias energy Vij applied to a bond IJ with maximum strain is +The bias energy :math:`V_{ij}` applied to a bond *ij* with maximum strain is -.. parsed-literal:: +.. math:: - Vij(max) = Cij \* Vmax \* (1 - (Eij/q)\^2) for abs(Eij) < qfactor - = 0 otherwise + V^{max}_{ij} = C_{ij} \cdot V^{max} \cdot \left(1 - \left(\frac{E_{ij}}{q}\right)^2\right) \textrm{ for } \left|E_{ij}\right| < qfactor \textrm{ or } 0 \textrm{ otherwise} -The derivative of Vij(max) with respect to the position of each atom -in the IJ bond gives a bias force Fij(max) acting on the bond as +The derivative of :math:`V^{max}_{ij}` with respect to the position of +each atom in the *ij* bond gives a bias force :math:`F^{max}_{ij}` acting +on the bond as -.. parsed-literal:: +.. math:: - Fij(max) = - dVij(max)/dEij = 2 Cij Vmax Eij / qfactor\^2 for abs(Eij) < qfactor - = 0 otherwise + F^{max}_{ij} = - \frac{dV^{max}_{ij}}{dE_{ij}} = 2 C_{ij} V^{max} \frac{E_{ij}}{qfactor^2} \textrm{ for } \left|E_{ij}\right| < qfactor \textrm{ or } 0 \textrm{ otherwise} which can be decomposed into an equal and opposite force acting on -only the two I,J atoms in the IJ bond. +only the two atoms *i* and *j* in the *ij* bond. The key difference is that in GHD a bias energy and force is added (on a particular timestep) to only one bond (pair of atoms) in the system, -which is the bond with maximum strain Emax. +which is the bond with maximum strain :math:`E^{max}`. In LHD, a bias energy and force can be added to multiple bonds -separated by the specified *Dcut* distance or more. A bond IJ is +separated by the specified *Dcut* distance or more. A bond *ij* is biased if it is the maximum strain bond within its local -"neighborhood", which is defined as the bond IJ plus any neighbor -bonds within a distance *Dcut* from IJ. The "distance" between bond -IJ and bond KL is the minimum distance between any of the IK, IL, JK, -JL pairs of atoms. +"neighborhood", which is defined as the bond *ij* plus any neighbor +bonds within a distance *Dcut* from *ij*. The "distance" between bond +*ij* and bond *kl* is the minimum distance between any of the *ik*, *il*, +*jk*, and *jl* pairs of atoms. For a large system, multiple bonds will typically meet this -requirement, and thus a bias potential Vij(max) will be applied to -many bonds on the same timestep. +requirement, and thus a bias potential :math:`V^{max}_{ij}` will be +applied to many bonds on the same timestep. -In LHD, all bonds store a Cij prefactor which appears in the Vij(max) -and Fij(max) equations above. Note that the Cij factor scales the -strength of the bias energy and forces whenever bond IJ is the maximum -strain bond in its neighborhood. +In LHD, all bonds store a :math:`C_{ij}` prefactor which appears in +the :math:`V^{max}_{ij}` and :math:`F^{max}_{ij}equations above. Note +that the :math:`C_{ij}` factor scales the strength of the bias energy +and forces whenever bond *ij* is the maximum strain bond in its neighborhood. -Cij is initialized to 1.0 when a bond between the I,J atoms is first -defined. The specified *Btarget* factor is then used to adjust the -Cij prefactors for each bond every timestep in the following manner. +:math:`C_{ij}` is initialized to 1.0 when a bond between the *ij* atoms +is first defined. The specified *Btarget* factor is then used to adjust the +:math:`C_{ij}` prefactors for each bond every timestep in the following manner. -An instantaneous boost factor Bij is computed each timestep +An instantaneous boost factor :math:`B_{ij}` is computed each timestep for each bond, as -.. parsed-literal:: +.. math:: - Bij = exp(beta \* Vkl(max)) + B_{ij} = e^{\beta V^{max}_{kl}} -where Vkl(max) is the bias energy of the maxstrain bond KL within bond -IJ's neighborhood, beta = 1/kTequil, and *Tequil* is the temperature -of the system and an argument to this fix. +where :math:`V^{max}_{kl}` is the bias energy of the maxstrain bond *kl* +within bond *ij*\ 's neighborhood, :math:`\beta = \frac{1}{kT_{equil}}`, +and :math:`T_{equil}` is the temperature of the system and an argument +to this fix. .. note:: @@ -146,28 +146,32 @@ of the system and an argument to this fix. running constant-temperature (NVT) dynamics. LAMMPS does not check that this is done. -Note that if IJ = KL, then bond IJ is a biased bond on that timestep, -otherwise it is not. But regardless, the boost factor Bij can be -thought of an estimate of time boost currently being applied within a -local region centered on bond IJ. For LHD, we want this to be the -specified *Btarget* value everywhere in the simulation domain. - -To accomplish this, if Bij < Btarget, the Cij prefactor for bond IJ is -incremented on the current timestep by an amount proportional to the -inverse of the specified *alpha* and the difference (Bij - Btarget). -Conversely if Bij > Btarget, Cij is decremented by the same amount. -This procedure is termed "boostostatting" in -:ref:`(Voter2013) `. It drives all of the individual Cij to -values such that when Vij\ *max* is applied as a bias to bond IJ, the -resulting boost factor Bij will be close to *Btarget* on average. +Note that if *ij*\ == *kl*\ , then bond *ij* is a biased bond on that +timestep, otherwise it is not. But regardless, the boost factor +:math:`B_{ij}` can be thought of an estimate of time boost currently +being applied within a local region centered on bond *ij*. For LHD, +we want this to be the specified *Btarget* value everywhere in the +simulation domain. + +To accomplish this, if :math:`B_{ij} < B_{target}`, the :math:`C_{ij}` +prefactor for bond *ij* is incremented on the current timestep by an +amount proportional to the inverse of the specified *alpha* and the +difference (:math:`B_{ij} - B_{target}`). +Conversely if :math:`B_{ij} > B_{target}`, :math:`C_{ij}` is decremented +by the same amount. +This procedure is termed "boostostatting" in :ref:`(Voter2013) `. +It drives all of the individual :math:`C_{ij}` to +values such that when :math:`V^{max}_{ij}` is applied as a bias to +bond *ij*, the resulting boost factor :math:`B_{ij}` will be close +to :math:`B_{target}` on average. Thus the LHD time acceleration factor for the overall system is effectively *Btarget*\ . -Note that in LHD, the boost factor *Btarget* is specified by the user. +Note that in LHD, the boost factor :math:`B_{target}` is specified by the user. This is in contrast to global hyperdynamics (GHD) where the boost -factor varies each timestep and is computed as a function of *Vmax*\ , -Emax, and *Tequil*\ ; see the :doc:`fix hyper/global ` -doc page for details. +factor varies each timestep and is computed as a function of :math:`V_{max}`, +:math:`E_{max}`, and :math:`T_{equil}`; see the +:doc:`fix hyper/global ` doc page for details. ---------- @@ -182,7 +186,7 @@ The *Dcut*\ , *alpha*\ , and *Btarget* parameters are unique to LHD. The *cutbond* argument is the cutoff distance for defining bonds between pairs of nearby atoms. A pair of I,J atoms in their equilibrium, minimum-energy configuration, which are separated by a -distance Rij < *cutbond*\ , are flagged as a bonded pair. Setting +distance :math:`R_{ij} < cutbond`, are flagged as a bonded pair. Setting *cubond* to be ~25% larger than the nearest-neighbor distance in a crystalline lattice is a typical choice for solids, so that bonds exist only between nearest neighbor pairs. @@ -190,37 +194,40 @@ exist only between nearest neighbor pairs. The *qfactor* argument is the limiting strain at which the bias potential goes to 0.0. It is dimensionless, so a value of 0.3 means a bond distance can be up to 30% larger or 30% smaller than the -equilibrium (quenched) R0ij distance and the two atoms in the bond +equilibrium (quenched) :math:`R^0_{ij}` distance and the two atoms in the bond could still experience a non-zero bias force. If *qfactor* is set too large, then transitions from one energy basin to another are affected because the bias potential is non-zero at the transition state (e.g. saddle point). If *qfactor* is set too small -than little boost can be achieved because the Eij strain of some bond in +than little boost can be achieved because the :math:`E_{ij}` strain of +some bond in the system will (nearly) always exceed *qfactor*\ . A value of 0.3 for *qfactor* is typically a reasonable value. The *Vmax* argument is a fixed prefactor on the bias potential. There -is a also a dynamic prefactor Cij, driven by the choice of *Btarget* -as discussed above. The product of these should be a value less than +is a also a dynamic prefactor :math:`C_{ij}`, driven by the choice of +*Btarget* as discussed above. The product of these should be a value less than the smallest barrier height for an event to occur. Otherwise the applied bias potential may be large enough (when added to the interatomic potential) to produce a local energy basin with a maxima in the center. This can produce artificial energy minima in the same -basin that trap an atom. Or if Cij\*\ *Vmax* is even larger, it may +basin that trap an atom. Or if :math:`C_{ij} \cdot V^{max}` is even +larger, it may induce an atom(s) to rapidly transition to another energy basin. Both cases are "bad dynamics" which violate the assumptions of LHD that guarantee an accelerated time-accurate trajectory of the system. .. note:: - It may seem that *Vmax* can be set to any value, and Cij will - compensate to reduce the overall prefactor if necessary. However the - Cij are initialized to 1.0 and the boostostatting procedure typically - operates slowly enough that there can be a time period of bad dynamics - if *Vmax* is set too large. A better strategy is to set *Vmax* to the + It may seem that :math:`V^{max}` can be set to any value, and + :math:`C_{ij}` will compensate to reduce the overall prefactor + if necessary. However the :math:`C_{ij}` are initialized to 1.0 + and the boostostatting procedure typically operates slowly enough + that there can be a time period of bad dynamics if :math:`V^{max}` + is set too large. A better strategy is to set :math:`V^{max}` to the slightly smaller than the lowest barrier height for an event (the same - as for GHD), so that the Cij remain near unity. + as for GHD), so that the :math:`C_{ij}` remain near unity. The *Tequil* argument is the temperature at which the system is simulated; see the comment above about the :doc:`fix langevin ` thermostatting. It is also part of the @@ -262,11 +269,11 @@ half the *cutbond* parameter as an estimate to warn if the ghost cutoff is not long enough. As described above the *alpha* argument is a pre-factor in the -boostostat update equation for each bond's Cij prefactor. *Alpha* is -specified in time units, similar to other thermostat or barostat +boostostat update equation for each bond's :math:`C_{ij}` prefactor. +*Alpha* is specified in time units, similar to other thermostat or barostat damping parameters. It is roughly the physical time it will take the -boostostat to adjust a Cij value from a too high (or too low) value to -a correct one. An *alpha* setting of a few ps is typically good for +boostostat to adjust a :math:`C_{ij}` value from a too high (or too low) +value to a correct one. An *alpha* setting of a few ps is typically good for solid-state systems. Note that the *alpha* argument here is the inverse of the alpha parameter discussed in :ref:`(Voter2013) `. @@ -276,25 +283,26 @@ that all the atoms in the system will experience. The elapsed time t\_hyper for an LHD simulation running for *N* timesteps is simply -.. parsed-literal:: +.. math:: - t_hyper = Btarget \* N\*dt + t_{hyper} = B_{target} \cdot N \cdot dt -where dt is the timestep size defined by the :doc:`timestep ` -command. The effective time acceleration due to LHD is thus t\_hyper / -N\*dt = Btarget, where N\*dt is elapsed time for a normal MD run -of N timesteps. +where *dt* is the timestep size defined by the :doc:`timestep ` +command. The effective time acceleration due to LHD is thus +:math:`\frac{t_{hyper}}{N\cdot dt} = B_{target}`, where :math:`N\cdot dt` +is the elapsed time for a normal MD run of N timesteps. You cannot choose an arbitrarily large setting for *Btarget*\ . The maximum value you should choose is -.. parsed-literal:: +.. math:: - Btarget = exp(beta \* Vsmall) + B_{target} = e^{\beta V_{small}} -where Vsmall is the smallest event barrier height in your system, beta -= 1/kTequil, and *Tequil* is the specified temperature of the system +where :math:`V_{small}` is the smallest event barrier height in your +system, :math:`\beta = \frac{1}{kT_{equil}}`, and :math:`T_{equil}` +is the specified temperature of the system (both by this fix and the Langevin thermostat). Note that if *Btarget* is set smaller than this, the LHD simulation @@ -315,41 +323,42 @@ time (t\_hyper equation above) will be shorter. Here is additional information on the optional keywords for this fix. -The *bound* keyword turns on min/max bounds for bias coefficients Cij -for all bonds. Cij is a prefactor for each bond on the bias potential -of maximum strength Vmax. Depending on the choice of *alpha* and -*Btarget* and *Vmax*\ , the boostostatting can cause individual Cij -values to fluctuate. If the fluctuations are too large Cij\*Vmax can -exceed low barrier heights and induce bad event dynamics. Bounding -the Cij values is a way to prevent this. If *Bfrac* is set to -1 or -any negative value (the default) then no bounds are enforced on Cij -values (except they must always be >= 0.0). A *Bfrac* setting >= 0.0 -sets a lower bound of 1.0 - Bfrac and upper bound of 1.0 + Bfrac on -each Cij value. Note that all Cij values are initialized to 1.0 when -a bond is created for the first time. Thus *Bfrac* limits the bias -potential height to *Vmax* +/- *Bfrac*\ \*\ *Vmax*\ . - -The *reset* keyword allow *Vmax* to be adjusted dynamically depending -on the average value of all Cij prefactors. This can be useful if you +The *bound* keyword turns on min/max bounds for bias coefficients +:math:`C_{ij}` for all bonds. :math:`C_{ij}` is a prefactor for each bond on +the bias potential of maximum strength :math:`V^{max}`. Depending on the +choice of *alpha* and *Btarget* and *Vmax*\ , the boostostatting can cause +individual :math:`C_{ij}` values to fluctuate. If the fluctuations are too +large :math:`C_{ij} \cdot V^{max}` can exceed low barrier heights and induce +bad event dynamics. Bounding the :math:`C_{ij}` values is a way to prevent +this. If *Bfrac* is set to -1 or any negative value (the default) then no +bounds are enforced on :math:`C_{ij}` values (except they must always +be >= 0.0). A *Bfrac* setting >= 0.0 +sets a lower bound of 1.0 - Bfrac and upper bound of 1.0 + Bfrac on each +:math:`C_{ij}` value. Note that all :math:`C_{ij}` values are initialized +to 1.0 when a bond is created for the first time. Thus *Bfrac* limits the +bias potential height to *Vmax* +/- *Bfrac*\ \*\ *Vmax*\ . + +The *reset* keyword allow *Vmax* to be adjusted dynamically depending on the +average value of all :math:`C_{ij}` prefactors. This can be useful if you are unsure what value of *Vmax* will match the *Btarget* boost for the -system. The Cij values will then adjust in aggregate (up or down) so -that Cij\*Vmax produces a boost of *Btarget*\ , but this may conflict -with the *bound* keyword settings. By using *bound* and *reset* -together, *Vmax* itself can be reset, and desired bounds still applied -to the Cij values. +system. The :math:`C_{ij}` values will then adjust in aggregate (up or down) +so that :math:`C_{ij} \cdot V^{max}` produces a boost of *Btarget*\ , but this +may conflict with the *bound* keyword settings. By using *bound* and *reset* +together, :math:`V^{max}` itself can be reset, and desired bounds still applied +to the :math:`C_{ij}` values. A setting for *Rfreq* of -1 (the default) means *Vmax* never changes. -A setting of 0 means *Vmax* is adjusted every time an event occurs and +A setting of 0 means :math:`V^{max}` is adjusted every time an event occurs and bond pairs are recalculated. A setting of N > 0 timesteps means -*Vmax* is adjusted on the first time an event occurs on a timestep >= -N steps after the previous adjustment. The adjustment to *Vmax* is -computed as follows. The current average of all Cij\*Vmax values is -computed and the *Vmax* is reset to that value. All Cij values are -changed to new prefactors such the new Cij\*Vmax is the same as it was -previously. If the *bound* keyword was used, those bounds are -enforced on the new Cij values. Henceforth, new bonds are assigned a -Cij = 1.0, which means their bias potential magnitude is the new -*Vmax*\ . +:math:`V^{max}` is adjusted on the first time an event occurs on a timestep >= +N steps after the previous adjustment. The adjustment to :math:`V^{max}` is +computed as follows. The current average of all :math:`C_{ij} \cdot V^{max}` +values is computed and the :math:`V^{max}` is reset to that value. All +:math:`C_{ij}` values are changed to new prefactors such the new +:math:`C_{ij} \cdot V^{max}` is the same as it was previously. If the +*bound* keyword was used, those bounds are enforced on the new :math:`C_{ij}` +values. Henceforth, new bonds are assigned a :math:`C_{ij} = 1.0`, which +means their bias potential magnitude is the new :math:`V^{max}`. The *check/ghost* keyword turns on extra computation each timestep to compute statistics about ghost atoms used to determine which bonds to @@ -390,8 +399,8 @@ vector stores the following quantities: * 1 = average boost for all bonds on this step (unitless) * 2 = # of biased bonds on this step -* 3 = max strain Eij of any bond on this step (absolute value, unitless) -* 4 = value of Vmax on this step (energy units) +* 3 = max strain :math:`E_{ij}` of any bond on this step (absolute value, unitless) +* 4 = value of :math:`V^{max}` on this step (energy units) * 5 = average bias coeff for all bonds on this step (unitless) * 6 = min bias coeff for all bonds on this step (unitless) * 7 = max bias coeff for all bonds on this step (unitless) @@ -428,12 +437,12 @@ multiple runs (since the point in the input script the fix was defined). For value 10, each bond instantaneous boost factor is given by the -equation for Bij above. The total system boost (average across all +equation for :math:`B_{ij}` above. The total system boost (average across all bonds) fluctuates, but should average to a value close to the -specified Btarget. +specified :math:`B_{target}`. For value 12, the numerator is a count of all biased bonds on each -timestep whose bias energy = 0.0 due to Eij >= *qfactor*\ . The +timestep whose bias energy = 0.0 due to :math:`E_{ij} >= qfactor`. The denominator is the count of all biased bonds on all timesteps. For value 13, the numerator is a count of all biased bonds on each @@ -522,12 +531,12 @@ The scalar and vector values calculated by this fix are all "intensive". This fix also computes a local vector of length the number of bonds -currently in the system. The value for each bond is its Cij prefactor -(bias coefficient). These values can be can be accessed by various +currently in the system. The value for each bond is its :math:`C_{ij}` +prefactor (bias coefficient). These values can be can be accessed by various :doc:`output commands `. A particularly useful one is the :doc:`fix ave/histo ` command which can be used to histogram the Cij values to see if they are distributed reasonably -close to 1.0, which indicates a good choice of *Vmax*\ . +close to 1.0, which indicates a good choice of :math:`V^{max}`. The local values calculated by this fix are unitless. diff --git a/doc/src/fix_langevin_spin.rst b/doc/src/fix_langevin_spin.rst index bccedc8520..b229a2ae8d 100644 --- a/doc/src/fix_langevin_spin.rst +++ b/doc/src/fix_langevin_spin.rst @@ -36,16 +36,19 @@ Brownian dynamics (BD). A random torque and a transverse dissipation are applied to each spin i according to the following stochastic differential equation: -.. image:: Eqs/fix_langevin_spin_sLLG.jpg - :align: center +.. math:: -with lambda the transverse damping, and eta a random vector. + \frac{d \vec{s}_{i}}{dt} = \frac{1}{\left(1+\lambda^2 \right)} \left( \left( + \vec{\omega}_{i} +\vec{\eta} \right) \times \vec{s}_{i} + \lambda\, \vec{s}_{i} + \times\left( \vec{\omega}_{i} \times\vec{s}_{i} \right) \right) + +with :math:`\lambda` the transverse damping, and :math:`\eta` a random vector. This equation is referred to as the stochastic Landau-Lifshitz-Gilbert (sLLG) equation. -The components of eta are drawn from a Gaussian probability law. Their amplitude -is defined as a proportion of the temperature of the external thermostat T (in K -in metal units). +The components of :math:`\eta` are drawn from a Gaussian probability +law. Their amplitude is defined as a proportion of the temperature of +the external thermostat T (in K in metal units). More details about this implementation are reported in :ref:`(Tranchida) `. diff --git a/doc/src/fix_lb_fluid.rst b/doc/src/fix_lb_fluid.rst index b7ce7ffdc8..0c923d923b 100644 --- a/doc/src/fix_lb_fluid.rst +++ b/doc/src/fix_lb_fluid.rst @@ -69,33 +69,42 @@ dependent force to the fluid. The lattice-Boltzmann algorithm solves for the fluid motion governed by the Navier Stokes equations, -.. image:: Eqs/fix_lb_fluid_navierstokes.jpg - :align: center +.. math:: + + \partial_t \rho + \partial_{\beta}\left(\rho u_{\beta}\right)= & 0 \\ + \partial_t\left(\rho u_{\alpha}\right) + \partial_{\beta}\left(\rho u_{\alpha} u_{\beta}\right) = & \partial_{\beta}\sigma_{\alpha \beta} + F_{\alpha} + \partial_{\beta}\left(\eta_{\alpha \beta \gamma \nu}\partial_{\gamma} u_{\nu}\right) + with, -.. image:: Eqs/fix_lb_fluid_viscosity.jpg - :align: center +.. math:: + + \eta_{\alpha \beta \gamma \nu} = \eta\left[\delta_{\alpha \gamma}\delta_{\beta \nu} + \delta_{\alpha \nu}\delta_{\beta \gamma} - \frac{2}{3}\delta_{\alpha \beta}\delta_{\gamma \nu}\right] + \Lambda \delta_{\alpha \beta}\delta_{\gamma \nu} + + +where :math:`\rho` is the fluid density, *u* is the local +fluid velocity, :math:`\sigma` is the stress tensor, *F* is a local external +force, and :math:`\eta` and :math:`\Lambda` are the shear and bulk viscosities +respectively. Here, we have implemented -where rho is the fluid density, u is the local fluid velocity, sigma -is the stress tensor, F is a local external force, and eta and Lambda -are the shear and bulk viscosities respectively. Here, we have -implemented +.. math:: -.. image:: Eqs/fix_lb_fluid_stress.jpg - :align: center + \sigma_{\alpha \beta} = -P_{\alpha \beta} = -\rho a_0 \delta_{\alpha \beta} -with a\_0 set to 1/3 (dx/dt)\^2 by default. + +with :math:`a_0` set to :math:`\frac{1}{3} \frac{dx}{dt}^2` by default. The algorithm involves tracking the time evolution of a set of partial distribution functions which evolve according to a velocity discretized version of the Boltzmann equation, -.. image:: Eqs/fix_lb_fluid_boltzmann.jpg - :align: center +.. math:: + + \left(\partial_t + e_{i\alpha}\partial_{\alpha}\right)f_i = -\frac{1}{\tau}\left(f_i - f_i^{eq}\right) + W_i + where the first term on the right hand side represents a single time -relaxation towards the equilibrium distribution function, and tau is a +relaxation towards the equilibrium distribution function, and :math:`\tau` is a parameter physically related to the viscosity. On a technical note, we have implemented a 15 velocity model (D3Q15) as default; however, the user can switch to a 19 velocity model (D3Q19) through the use of @@ -108,8 +117,10 @@ finite difference LB integrator is used. If *LBtype* is set equal to Physical variables are then defined in terms of moments of the distribution functions, -.. image:: Eqs/fix_lb_fluid_properties.jpg - :align: center +.. math:: + + \rho = & \displaystyle\sum\limits_{i} f_i \\ + \rho u_{\alpha} = & \displaystyle\sum\limits_{i} f_i e_{i\alpha} Full details of the lattice-Boltzmann algorithm used can be found in :ref:`Mackay et al. `. @@ -119,12 +130,15 @@ through a velocity dependent force. The contribution to the fluid force on a given lattice mesh site j due to MD particle alpha is calculated as: -.. image:: Eqs/fix_lb_fluid_fluidforce.jpg - :align: center +.. math:: + + {\bf F}_{j \alpha} = \gamma \left({\bf v}_n - {\bf u}_f \right) \zeta_{j\alpha} -where v\_n is the velocity of the MD particle, u\_f is the fluid + +where :math:`\mathbf{v}_n` is the velocity of the MD particle, +:math:`\mathbf{u}_f` is the fluid velocity interpolated to the particle location, and gamma is the force -coupling constant. Zeta is a weight assigned to the grid point, +coupling constant. :math:`\zeta` is a weight assigned to the grid point, obtained by distributing the particle to the nearest lattice sites. For this, the user has the choice between a trilinear stencil, which provides a support of 8 lattice sites, or the immersed boundary method @@ -135,20 +149,25 @@ to walls, due to its smaller support. Therefore, by default, the Peskin stencil is used; however the user may switch to the trilinear stencil by specifying the keyword, *trilinear*\ . -By default, the force coupling constant, gamma, is calculated according to +By default, the force coupling constant, :math:`\gamma`, is calculated +according to + +.. math:: -.. image:: Eqs/fix_lb_fluid_gammadefault.jpg - :align: center + \gamma = \frac{2m_um_v}{m_u+m_v}\left(\frac{1}{\Delta t_{collision}}\right) -Here, m\_v is the mass of the MD particle, m\_u is a representative -fluid mass at the particle location, and dt\_collision is a collision -time, chosen such that tau/dt\_collision = 1 (see :ref:`Mackay and Denniston ` for full details). In order to calculate m\_u, the -fluid density is interpolated to the MD particle location, and -multiplied by a volume, node\_area\*dx\_lb, where node\_area represents -the portion of the surface area of the composite object associated -with a given MD particle. By default, node\_area is set equal to -dx\_lb\*dx\_lb; however specific values for given atom types can be set -using the *setArea* keyword. + +Here, :math:`m_v` is the mass of the MD particle, :math:`m_u` is a +representative fluid mass at the particle location, and :math:`\Delta +t_{collision}` is a collision time, chosen such that +:math:`\frac{\tau}{\Delta t_{collision}} = 1` (see :ref:`Mackay and +Denniston ` for full details). In order to calculate :math:`m_u`, +the fluid density is interpolated to the MD particle location, and +multiplied by a volume, node\_area\*dx\_lb, where node\_area +represents the portion of the surface area of the composite object +associated with a given MD particle. By default, node\_area is set +equal to dx\_lb\*dx\_lb; however specific values for given atom types +can be set using the *setArea* keyword. The user also has the option of specifying their own value for the force coupling constant, for all the MD particles associated with the @@ -364,8 +383,10 @@ Default By default, the force coupling constant is set according to -.. image:: Eqs/fix_lb_fluid_gammadefault.jpg - :align: center +.. math:: + + \gamma = \frac{2m_um_v}{m_u+m_v}\left(\frac{1}{\Delta t_{collision}}\right) + and an area of dx\_lb\^2 per node, used to calculate the fluid mass at the particle node location, is assumed. diff --git a/doc/src/fix_mvv_dpd.rst b/doc/src/fix_mvv_dpd.rst index 55066c8ce4..211642e7ec 100644 --- a/doc/src/fix_mvv_dpd.rst +++ b/doc/src/fix_mvv_dpd.rst @@ -50,10 +50,14 @@ The modified velocity-Verlet (MVV) algorithm aims to improve the stability of the time integrator by using an extrapolated version of the velocity for the force evaluation: -.. image:: Eqs/fix_mvv_dpd.jpg - :align: center +.. math:: -where the parameter λ depends on the + v(t+\frac{\Delta t}{2}) = & v(t) + \frac{\Delta t}{2}\cdot a(t) \\ + r(t+\Delta t) = & r(t) + \Delta t\cdot v(t+\frac{\Delta t}{2}) \\ + a(t+\Delta t) = & \frac{1}{m}\cdot F\left[ r(t+\Delta t), v(t) +\lambda \cdot \Delta t\cdot a(t)\right] \\ + v(t+\Delta t) = & v(t+\frac{\Delta t}{2}) + \frac{\Delta t}{2}\cdot a(t+\Delta t) + +where the parameter :math:`\lambda` depends on the specific choice of DPD parameters, and needs to be tuned on a case-by-case basis. Specification of a *lambda* value is optional. If specified, the setting must be from 0.0 to 1.0. If not specified, diff --git a/doc/src/fix_nh.rst b/doc/src/fix_nh.rst index 36f2d6c8f3..88ece95e95 100644 --- a/doc/src/fix_nh.rst +++ b/doc/src/fix_nh.rst @@ -511,9 +511,28 @@ with *respa*\ , LAMMPS uses an integrator constructed according to the following factorization of the Liouville propagator (for two rRESPA levels): -.. image:: Eqs/fix_nh1.jpg - :align: center - +.. math:: + + \exp \left(\mathrm{i} L \Delta t \right) = & \hat{E} + \exp \left(\mathrm{i} L_{\rm T\textrm{-}baro} \frac{\Delta t}{2} \right) + \exp \left(\mathrm{i} L_{\rm T\textrm{-}part} \frac{\Delta t}{2} \right) + \exp \left(\mathrm{i} L_{\epsilon , 2} \frac{\Delta t}{2} \right) + \exp \left(\mathrm{i} L_{2}^{(2)} \frac{\Delta t}{2} \right) \\ + &\times \left[ + \exp \left(\mathrm{i} L_{2}^{(1)} \frac{\Delta t}{2n} \right) + \exp \left(\mathrm{i} L_{\epsilon , 1} \frac{\Delta t}{2n} \right) + \exp \left(\mathrm{i} L_1 \frac{\Delta t}{n} \right) + \exp \left(\mathrm{i} L_{\epsilon , 1} \frac{\Delta t}{2n} \right) + \exp \left(\mathrm{i} L_{2}^{(1)} \frac{\Delta t}{2n} \right) + \right]^n \\ + &\times + \exp \left(\mathrm{i} L_{2}^{(2)} \frac{\Delta t}{2} \right) + \exp \left(\mathrm{i} L_{\epsilon , 2} \frac{\Delta t}{2} \right) + \exp \left(\mathrm{i} L_{\rm T\textrm{-}part} \frac{\Delta t}{2} \right) + \exp \left(\mathrm{i} L_{\rm T\textrm{-}baro} \frac{\Delta t}{2} \right) \\ + &+ \mathcal{O} \left(\Delta t^3 \right) + + This factorization differs somewhat from that of Tuckerman et al, in that the barostat is only updated at the outermost rRESPA level, whereas Tuckerman's factorization requires splitting the pressure into diff --git a/doc/src/fix_nphug.rst b/doc/src/fix_nphug.rst index 2261600f93..1d946e5f83 100644 --- a/doc/src/fix_nphug.rst +++ b/doc/src/fix_nphug.rst @@ -88,21 +88,23 @@ Essentially, a Hugoniostat simulation is an NPT simulation in which the user-specified target temperature is replaced with a time-dependent target temperature Tt obtained from the following equation: -.. image:: Eqs/fix_nphug.jpg - :align: center +.. math:: -where T and Tt are the instantaneous and target temperatures, -P and P0 are the instantaneous and reference pressures or axial stresses, + T_t - T = \frac{\left(\frac{1}{2}\left(P + P_0\right)\left(V_0 - V\right) + E_0 - E\right)}{N_{dof} k_B } = \Delta + + +where *T* and :math:`T_t` are the instantaneous and target temperatures, +*P* and :math:`P_0` are the instantaneous and reference pressures or axial stresses, depending on whether hydrostatic or uniaxial compression is being -performed, V and V0 are the instantaneous and reference volumes, -E and E0 are the instantaneous and reference internal energy (potential -plus kinetic), Ndof is the number of degrees of freedom used in the -definition of temperature, and kB is the Boltzmann constant. Delta is the +performed, *V* and :math:`V_0` are the instantaneous and reference volumes, +*E* and :math:`E_0` are the instantaneous and reference internal energy (potential +plus kinetic), :math:`N_{dof}` is the number of degrees of freedom used in the +definition of temperature, and :math:`k_B` is the Boltzmann constant. :math:`\Delta` is the negative deviation of the instantaneous temperature from the target temperature. -When the system reaches a stable equilibrium, the value of Delta should +When the system reaches a stable equilibrium, the value of :math:`\Delta` should fluctuate about zero. -The values of E0, V0, and P0 are the instantaneous values at the start of +The values of :math:`E_0`, :math:`V_0`, and :math:`P_0` are the instantaneous values at the start of the simulation. These can be overridden using the fix\_modify keywords *e0*\ , *v0*\ , and *p0* described below. @@ -179,19 +181,20 @@ instructions on how to use the accelerated styles effectively. **Restart, fix\_modify, output, run start/stop, minimize info:** -This fix writes the values of E0, V0, and P0, as well as the -state of all the thermostat and barostat -variables to :doc:`binary restart files `. See the -:doc:`read_restart ` command for info on how to re-specify -a fix in an input script that reads a restart file, so that the -operation of the fix continues in an uninterrupted fashion. - -The :doc:`fix_modify ` *e0*\ , *v0* and *p0* keywords -can be used to define the values of E0, V0, and P0. Note the -the values for *e0* and *v0* are extensive, and so must correspond -to the total energy and volume of the entire system, not energy and -volume per atom. If any of these quantities are not specified, then the -instantaneous value in the system at the start of the simulation is used. +This fix writes the values of :math:`E_0`, :math:`V_0`, and :math:`P_0`, +as well as the state of all the thermostat and barostat variables to +:doc:`binary restart files `. See the :doc:`read_restart +` command for info on how to re-specify a fix in an input +script that reads a restart file, so that the operation of the fix +continues in an uninterrupted fashion. + +The :doc:`fix_modify ` *e0*\ , *v0* and *p0* keywords can be +used to define the values of :math:`E_0`, :math:`V_0`, and +:math:`P_0`. Note the the values for *e0* and *v0* are extensive, and so +must correspond to the total energy and volume of the entire system, not +energy and volume per atom. If any of these quantities are not +specified, then the instantaneous value in the system at the start of +the simulation is used. The :doc:`fix_modify ` *temp* and *press* options are supported by these fixes. You can use them to assign a @@ -216,7 +219,7 @@ values are "intensive". The scalar is the cumulative energy change due to the fix. -The vector stores three quantities unique to this fix (Delta, Us, and up), +The vector stores three quantities unique to this fix (:math:`\Delta`, Us, and up), followed by all the internal Nose/Hoover thermostat and barostat variables defined for :doc:`fix npt `. Delta is the deviation of the temperature from the target temperature, given by the above equation. diff --git a/doc/src/fix_npt_cauchy.rst b/doc/src/fix_npt_cauchy.rst index 133305f13c..e9a98b813f 100644 --- a/doc/src/fix_npt_cauchy.rst +++ b/doc/src/fix_npt_cauchy.rst @@ -444,8 +444,26 @@ with *respa*\ , LAMMPS uses an integrator constructed according to the following factorization of the Liouville propagator (for two rRESPA levels): -.. image:: Eqs/fix_nh1.jpg - :align: center +.. math:: + + \exp \left(\mathrm{i} L \Delta t \right) = & \hat{E} + \exp \left(\mathrm{i} L_{\rm T\textrm{-}baro} \frac{\Delta t}{2} \right) + \exp \left(\mathrm{i} L_{\rm T\textrm{-}part} \frac{\Delta t}{2} \right) + \exp \left(\mathrm{i} L_{\epsilon , 2} \frac{\Delta t}{2} \right) + \exp \left(\mathrm{i} L_{2}^{(2)} \frac{\Delta t}{2} \right) \\ + &\times \left[ + \exp \left(\mathrm{i} L_{2}^{(1)} \frac{\Delta t}{2n} \right) + \exp \left(\mathrm{i} L_{\epsilon , 1} \frac{\Delta t}{2n} \right) + \exp \left(\mathrm{i} L_1 \frac{\Delta t}{n} \right) + \exp \left(\mathrm{i} L_{\epsilon , 1} \frac{\Delta t}{2n} \right) + \exp \left(\mathrm{i} L_{2}^{(1)} \frac{\Delta t}{2n} \right) + \right]^n \\ + &\times + \exp \left(\mathrm{i} L_{2}^{(2)} \frac{\Delta t}{2} \right) + \exp \left(\mathrm{i} L_{\epsilon , 2} \frac{\Delta t}{2} \right) + \exp \left(\mathrm{i} L_{\rm T\textrm{-}part} \frac{\Delta t}{2} \right) + \exp \left(\mathrm{i} L_{\rm T\textrm{-}baro} \frac{\Delta t}{2} \right) \\ + &+ \mathcal{O} \left(\Delta t^3 \right) This factorization differs somewhat from that of Tuckerman et al, in that the barostat is only updated at the outermost rRESPA level, diff --git a/doc/src/fix_nve_spin.rst b/doc/src/fix_nve_spin.rst index 6caa7cc8a6..c66d107089 100644 --- a/doc/src/fix_nve_spin.rst +++ b/doc/src/fix_nve_spin.rst @@ -47,7 +47,7 @@ By default a spin-lattice integration is performed (lattice = moving). The *nve/spin* fix applies a Suzuki-Trotter decomposition to the equations of motion of the spin lattice system, following the scheme: -.. image:: Eqs/fix_integration_spin_stdecomposition.jpg +.. image:: JPG/fix_integration_spin_stdecomposition.jpg :align: center according to the implementation reported in :ref:`(Omelyan) `. diff --git a/doc/src/fix_orient.rst b/doc/src/fix_orient.rst index 7100efc4e5..a23b98fbae 100644 --- a/doc/src/fix_orient.rst +++ b/doc/src/fix_orient.rst @@ -58,8 +58,22 @@ accounted for in measuring the grain boundary velocity. The potential energy added to atom I is given by these formulas -.. image:: Eqs/fix_orient_fcc.jpg - :align: center +.. math:: + + \xi_{i} = & \sum_{j=1}^{12} \left| \mathbf{r}_{j} - \mathbf{r}_{j}^{\rm I} \right| \qquad\qquad\left(1\right) \\ + \\ + \xi_{\rm IJ} = & \sum_{j=1}^{12} \left| \mathbf{r}_{j}^{\rm J} - \mathbf{r}_{j}^{\rm I} \right| \qquad\qquad\left(2\right)\\ + \\ + \xi_{\rm low} = & {\rm cutlo} \, \xi_{\rm IJ} \qquad\qquad\qquad\left(3\right)\\ + \xi_{\rm high} = & {\rm cuthi} \, \xi_{\rm IJ} \qquad\qquad\qquad\left(4\right) \\ + \\ + \omega_{i} = & \frac{\pi}{2} \frac{\xi_{i} - \xi_{\rm low}}{\xi_{\rm high} - \xi_{\rm low}} \qquad\qquad\left(5\right)\\ + \\ + u_{i} = & 0 \quad\quad\qquad\qquad\qquad \textrm{ for } \qquad \xi_{i} < \xi_{\rm low}\\ + = & {\rm dE}\,\frac{1 - \cos(2 \omega_{i})}{2} + \qquad \mathrm{ for }\qquad \xi_{\rm low} < \xi_{i} < \xi_{\rm high} \quad \left(6\right) \\ + = & {\rm dE} \quad\qquad\qquad\qquad\textrm{ for } \qquad \xi_{\rm high} < \xi_{i} + which are fully explained in :ref:`(Janssens) `. For fcc crystals this order parameter Xi for atom I in equation (1) is a sum over the diff --git a/doc/src/fix_pimd.rst b/doc/src/fix_pimd.rst index 436b13d9bc..d71c969acf 100644 --- a/doc/src/fix_pimd.rst +++ b/doc/src/fix_pimd.rst @@ -46,8 +46,11 @@ configurations from the canonical ensemble :ref:`(Feynman) `. The classical partition function and its components are given by the following equations: -.. image:: Eqs/fix_pimd.jpg - :align: center +.. math:: + + Z = & \int d{\bf q} d{\bf p} \cdot \textrm{exp} [ -\beta H_{eff} ] \\ + H_{eff} = & \bigg(\sum_{i=1}^P \frac{p_i^2}{2m_i}\bigg) + V_{eff} \\ + V_{eff} = & \sum_{i=1}^P \bigg[ \frac{mP}{2\beta^2 \hbar^2} (q_i - q_{i+1})^2 + \frac{1}{P} V(q_i)\bigg] The interested user is referred to any of the numerous references on this methodology, but briefly, each quantum particle in a path diff --git a/doc/src/fix_rhok.rst b/doc/src/fix_rhok.rst index ba381a37d3..9374f43798 100644 --- a/doc/src/fix_rhok.rst +++ b/doc/src/fix_rhok.rst @@ -29,8 +29,12 @@ Description The fix applies a force to atoms given by the potential -.. image:: Eqs/fix_rhok.jpg - :align: center +.. math:: + + U = & \frac{1}{2} K (|\rho_{\vec{k}}| - a)^2 \\ + \rho_{\vec{k}} = & \sum_j^N \exp(-i\vec{k} \cdot \vec{r}_j )/\sqrt{N} \\ + \vec{k} = & (2\pi n_x /L_x , 2\pi n_y /L_y , 2\pi n_z/L_z ) + as described in :ref:`(Pedersen) `. diff --git a/doc/src/fix_rx.rst b/doc/src/fix_rx.rst index ce40a58524..2f0df1ebd5 100644 --- a/doc/src/fix_rx.rst +++ b/doc/src/fix_rx.rst @@ -46,13 +46,17 @@ defined within the file associated with this command. For a general reaction such that -.. image:: Eqs/fix_rx_reaction.jpg - :align: center +.. math:: + + \nu_{A}A + \nu_{B}B \rightarrow \nu_{C}C + the reaction rate equation is defined to be of the form -.. image:: Eqs/fix_rx_reactionRate.jpg - :align: center +.. math:: + + r = k(T)[A]^{\nu_{A}}[B]^{\nu_{B}} + In the current implementation, the exponents are defined to be equal to the stoichiometric coefficients. A given reaction set consisting @@ -121,12 +125,14 @@ irreversible reaction. After specifying the reaction, the reaction rate constant is determined through the temperature dependent Arrhenius equation: -.. image:: Eqs/fix_rx.jpg - :align: center +.. math:: + + k = AT^{n}e^{\frac{-E_{a}}{k_{B}T}} + where *A* is the Arrhenius factor in time units or concentration/time units, *n* is the unitless exponent of the temperature dependence, and -*E\_a* is the activation energy in energy units. The temperature +:math:`E_a` is the activation energy in energy units. The temperature dependence can be removed by specifying the exponent as zero. The internal temperature of the coarse-grained particles can be used @@ -136,13 +142,17 @@ be specified to compute a local-average particle internal temperature for use in the reaction rate constant expressions. The local-average particle internal temperature is defined as: -.. image:: Eqs/fix_rx_localTemp.jpg - :align: center +.. math:: + + \theta_i^{-1} = \frac{\sum_{j=1}\omega_{Lucy}\left(r_{ij}\right)\theta_j^{-1}}{\sum_{j=1}\omega_{Lucy}\left(r_{ij}\right)} + where the Lucy function is expressed as: -.. image:: Eqs/fix_rx_localTemp2.jpg - :align: center +.. math:: + + \omega_{Lucy}\left(r_{ij}\right) = \left( 1 + \frac{3r_{ij}}{r_c} \right) \left( 1 - \frac{r_{ij}}{r_c} \right)^3 + The self-particle interaction is included in the above equation. diff --git a/doc/src/fix_shake.rst b/doc/src/fix_shake.rst index bca1a55d16..624d5cf455 100644 --- a/doc/src/fix_shake.rst +++ b/doc/src/fix_shake.rst @@ -75,13 +75,18 @@ be the position and velocity of atom *i* at time *n*\ , for *i* =1,...,\ *N*\ , where *N* is the number of sites of our reference molecule. The distance vector between sites *i* and *j* is given by -.. image:: Eqs/fix_rattle_rij.jpg - :align: center +.. math:: + + \mathbf r^{n+1}_{ij} = \mathbf r^n_j - \mathbf r^n_i + The constraints can then be formulated as -.. image:: Eqs/fix_rattle_constraints.jpg - :align: center +.. math:: + + \mathbf r^{n+1}_{ij} \cdot \mathbf r^{n+1}_{ij} &= d^2_{ij} \quad \text{and} \\ + \mathbf v^{n+1}_{ij} \cdot \mathbf r^{n+1}_{ij} &= 0 + The SHAKE algorithm satisfies the first condition, i.e. the sites at time *n+1* will have the desired separations Dij immediately after the diff --git a/doc/src/fix_spring_rg.rst b/doc/src/fix_spring_rg.rst index e1463dc4e3..fd3b09754b 100644 --- a/doc/src/fix_spring_rg.rst +++ b/doc/src/fix_spring_rg.rst @@ -44,15 +44,21 @@ energy of the constraint and associated force on each atom is given by the second and third formulas, when the group is at a different RG than the target value RG0. -.. image:: Eqs/fix_spring_rg.jpg - :align: center +.. math:: -The (xi - center-of-mass) term is computed taking into account -periodic boundary conditions, m\_i is the mass of the atom, and M is -the mass of the entire group. Note that K is thus a force constant + {R_G}^2 & = \frac{1}{M}\sum_{i}^{N}{m_{i}\left( x_{i} - + \frac{1}{M}\sum_{j}^{N}{m_{j}x_{j}} \right)^{2}} \\ + E & = K\left( R_G - R_{G0} \right)^{2} \\ + F_{i} & = 2K\frac{m_{i}}{M}\left( 1-\frac{R_{G0}}{R_G} + \right)\left( x_{i} - \frac{1}{M}\sum_{j}^{N}{m_{j}x_{j}} \right) + + +The (:math:`x_i` - center-of-mass) term is computed taking into account +periodic boundary conditions, :math:`m_i` is the mass of the atom, and +*M* is the mass of the entire group. Note that K is thus a force constant for the aggregate force on the group of atoms, not a per-atom force. -If RG0 is specified as NULL, then the RG of the group is computed at +If :math:`R_{G0}` is specified as NULL, then the RG of the group is computed at the time the fix is specified, and that value is used as the target. **Restart, fix\_modify, output, run start/stop, minimize info:** diff --git a/doc/src/fix_ti_spring.rst b/doc/src/fix_ti_spring.rst index ec4599b519..152e3fbcac 100644 --- a/doc/src/fix_ti_spring.rst +++ b/doc/src/fix_ti_spring.rst @@ -48,8 +48,10 @@ The thermodynamic integration procedure is performed by rescaling the force on each atom. Given an atomic configuration the force (F) on each atom is given by -.. image:: Eqs/fix_ti_spring_force.jpg - :align: center +.. math:: + + F = \left( 1-\lambda \right) F_{\text{solid}} + \lambda F_{\text{harm}} + where F\_solid is the force that acts on an atom due to an interatomic potential (\ *e.g.* EAM potential), F\_harm is the force due to the @@ -87,15 +89,19 @@ The *function* keyword allows the use of two different lambda paths. Option *1* results in a constant rate of change of lambda with time: -.. image:: Eqs/fix_ti_spring_function_1.jpg - :align: center +.. math:: + + \lambda(\tau) = \tau + where tau is the scaled time variable *t/t\_s*. The option *2* performs the lambda switching at a rate defined by the following switching function -.. image:: Eqs/fix_ti_spring_function_2.jpg - :align: center +.. math:: + + \lambda(\tau) = \tau^5 \left( 70 \tau^4 - 315 \tau^3 + 540 \tau^2 - 420 \tau + 126 \right) + This function has zero slope as lambda approaches its extreme values (0 and 1), according to :ref:`de Koning ` this results in diff --git a/doc/src/fix_ttm.rst b/doc/src/fix_ttm.rst index eeafd8bfe0..022afc67b5 100644 --- a/doc/src/fix_ttm.rst +++ b/doc/src/fix_ttm.rst @@ -109,8 +109,12 @@ Energy transport within the electronic subsystem is solved according to the heat diffusion equation with added source terms for heat transfer between the subsystems: -.. image:: Eqs/fix_ttm.jpg - :align: center +.. math:: + + C_e \rho_e \frac{\partial T_e}{\partial t} = + \bigtriangledown (\kappa_e \bigtriangledown T_e) - + g_p (T_e - T_a) + g_s T_a' + where C\_e is the specific heat, rho\_e is the density, kappa\_e is the thermal conductivity, T is temperature, the "e" and "a" subscripts @@ -194,8 +198,12 @@ temperature controlled by another fix - e.g. :doc:`fix nvt ` or Fix ttm/mod uses the heat diffusion equation with possible external heat sources (e.g. laser heating in ablation simulations): -.. image:: Eqs/fix_ttm_mod.jpg - :align: center +.. math:: + + C_e \rho_e \frac{\partial T_e}{\partial t} = + \bigtriangledown (\kappa_e \bigtriangledown T_e) - + g_p (T_e - T_a) + g_s T_a' + \theta (x-x_{surface})I_0 \exp(-x/l_{skin}) + where theta is the Heaviside step function, I\_0 is the (absorbed) laser pulse intensity for ablation simulations, l\_skin is the depth @@ -207,8 +215,10 @@ Fix ttm/mod also allows users to specify the dependencies of C\_e and kappa\_e on the electronic temperature. The specific heat is expressed as -.. image:: Eqs/fix_ttm_ce.jpg - :align: center +.. math:: + + C_e = C_0 + (a_0 + a_1 X + a_2 X^2 + a_3 X^3 + a_4 X^4) \exp (-(AX)^2) + where *X* = T\_e/1000, and the thermal conductivity is defined as kappa\_e = D\_e\*rho\_e\*C\_e, where D\_e is the thermal diffusion @@ -219,8 +229,10 @@ for the blast force acting on ions because of electronic pressure gradient (see :ref:`(Chen) `, :ref:`(Norman) `). The total force acting on an ion is: -.. image:: Eqs/fix_ttm_blast.jpg - :align: center +.. math:: + + {\vec F}_i = - \partial U / \partial {\vec r}_i + {\vec F}_{langevin} - \nabla P_e/n_{ion} + where F\_langevin is a force from Langevin thermostat simulating electron-phonon coupling, and nabla P\_e/n\_ion is the electron blast @@ -242,8 +254,10 @@ initial borders of vacuum can be set in the *init\_file* via *lsurface* and *rsurface* parameters. In this case, electronic pressure gradient is calculated as -.. image:: Eqs/fix_ttm_blast1.jpg - :align: center +.. math:: + + \nabla_x P_e = \left[\frac{C_e{}T_e(x)\lambda}{(x+\lambda)^2} + \frac{x}{x+\lambda}\frac{(C_e{}T_e)_{x+\Delta x}-(C_e{}T_e)_{x}}{\Delta x} \right] + where lambda is the electron mean free path (see :ref:`(Norman) `, :ref:`(Pisarev) `) diff --git a/doc/src/fix_wall.rst b/doc/src/fix_wall.rst index ba37b19205..600c880f20 100644 --- a/doc/src/fix_wall.rst +++ b/doc/src/fix_wall.rst @@ -104,35 +104,58 @@ wall-particle interactions depends on the style. For style *wall/lj93*\ , the energy E is given by the 9/3 potential: -.. image:: Eqs/fix_wall_lj93.jpg - :align: center +.. math:: + + E = \epsilon \left[ \frac{2}{15} \left(\frac{\sigma}{r}\right)^{9} - + \left(\frac{\sigma}{r}\right)^3 \right] + \qquad r < r_c + For style *wall/lj126*\ , the energy E is given by the 12/6 potential: -.. image:: Eqs/pair_lj.jpg - :align: center +.. math:: + + E = 4 \epsilon \left[ \left(\frac{\sigma}{r}\right)^{12} - + \left(\frac{\sigma}{r}\right)^6 \right] + \qquad r < r_c + For style *wall/lj1043*\ , the energy E is given by the 10/4/3 potential: -.. image:: Eqs/fix_wall_lj1043.jpg - :align: center +.. math:: + + E = 2 \pi \epsilon \left[ \frac{2}{5} \left(\frac{\sigma}{r}\right)^{10} - + \left(\frac{\sigma}{r}\right)^4 - + \frac{\sqrt(2)\sigma^3}{3\left(r+\left(0.61/\sqrt(2)\right)\sigma\right)^3}\right] + \qquad r < r_c + For style *wall/colloid*\ , the energy E is given by an integrated form of the :doc:`pair_style colloid ` potential: -.. image:: Eqs/fix_wall_colloid.jpg - :align: center +.. math:: + + E = & \epsilon \left[ \frac{\sigma^{6}}{7560} + \left(\frac{6R-D}{D^{7}} + \frac{D+8R}{(D+2R)^{7}} \right) \right. \\ + & \left. - \frac{1}{6} \left(\frac{2R(D+R) + D(D+2R) + \left[ \ln D - \ln (D+2R) \right]}{D(D+2R)} \right) \right] \qquad r < r_c + For style *wall/harmonic*\ , the energy E is given by a harmonic spring potential: -.. image:: Eqs/fix_wall_harmonic.jpg - :align: center +.. math:: + + E = \epsilon \quad (r - r_c)^2 \qquad r < r_c + For style *wall/morse*\ , the energy E is given by a Morse potential: -.. image:: Eqs/pair_morse.jpg - :align: center +.. math:: + + E = D_0 \left[ e^{- 2 \alpha (r - r_0)} - 2 e^{- \alpha (r - r_0)} \right] + \qquad r < r_c + In all cases, *r* is the distance from the particle to the wall at position *coord*\ , and Rc is the *cutoff* distance at which the diff --git a/doc/src/fix_wall_ees.rst b/doc/src/fix_wall_ees.rst index 6374109cc6..334228d85b 100644 --- a/doc/src/fix_wall_ees.rst +++ b/doc/src/fix_wall_ees.rst @@ -65,15 +65,16 @@ group by generating a force on the atom in a direction perpendicular to the wall and a torque parallel with the wall. The energy of wall-particle interactions E is given by: -.. image:: Eqs/fix_wall_ees.jpg - :align: center +.. math:: + + E = \epsilon \left[ \frac{2 \sigma_{LJ}^{12} \left(7 r^5+14 r^3 \sigma_{n}^2+3 r \sigma_{n}^4\right) }{945 \left(r^2-\sigma_{n}^2\right)^7} -\frac{ \sigma_{LJ}^6 \left(2 r \sigma_{n}^3+\sigma_{n}^2 \left(r^2-\sigma_{n}^2\right)\log{ \left[\frac{r-\sigma_{n}}{r+\sigma_{n}}\right]}\right) }{12 \sigma_{n}^5 \left(r^2-\sigma_{n}^2\right)} \right]\qquad \sigma_n < r < r_c + Introduced by Babadi and Ejtehadi in :ref:`(Babadi) `. Here, *r* is the distance from the particle to the wall at position *coord*\ , and Rc is the *cutoff* distance at which the particle and wall no -longer interact. Also, sigma\_n is the distance between center of -ellipsoid and the nearest point of its surface to the wall. The energy -of the wall is: +longer interact. Also, :math:`\sigma_n` is the distance between center of +ellipsoid and the nearest point of its surface to the wall as shown below. .. image:: JPG/fix_wall_ees_image.jpg :align: center @@ -82,24 +83,30 @@ Details of using this command and specifications are the same as fix/wall command. You can also find an example in USER/ees/ under examples/ directory. -The prefactor *epsilon* can be thought of as an +The prefactor :math:`\epsilon` can be thought of as an effective Hamaker constant with energy units for the strength of the -ellipsoid-wall interaction. More specifically, the *epsilon* pre-factor -= 8 \* pi\^2 \* rho\_wall \* rho\_ellipsoid \* epsilon -\* sigma\_a \* sigma\_b \* sigma\_c, where epsilon is the LJ parameters for -the constituent LJ particles and sigma\_a, sigma\_b, and sigma\_c are radii -of ellipsoidal particles. Rho\_wall and rho\_ellipsoid are the number -density of the constituent particles, in the wall and ellipsoid -respectively, in units of 1/volume. +ellipsoid-wall interaction. More specifically, the :math:`\epsilon` +pre-factor is + +.. math:: + + 8 \pi^2 \quad \rho_{wall} \quad \rho_{ellipsoid} \quad \epsilon \quad \sigma_a \quad \sigma_b \quad \sigma_c + + +where :math:`\epsilon` is the LJ energy parameter for the constituent LJ +particles and :math:`\sigma_a`, :math:`\sigma_b`, and :math:`\sigma_c` +are the radii of the ellipsoidal particles. :math:`\rho_{wall}` and +:math:`\rho_{ellipsoid}` are the number density of the constituent +particles, in the wall and ellipsoid respectively, in units of 1/volume. .. note:: - You must insure that r is always bigger than sigma\_n for + You must insure that r is always bigger than :math:`\sigma_n` for all particles in the group, or LAMMPS will generate an error. This means you cannot start your simulation with particles touching the wall - position *coord* (r = sigma\_n) or with particles penetrating the wall - (0 =< r < sigma\_n) or with particles on the wrong side of the - wall (r < 0). + position *coord* (:math:`r = \sigma_n`) or with particles penetrating + the wall (:math:`0 =< r < \sigma_n`) or with particles on the wrong + side of the wall (:math:`r < 0`). Fix *wall/region/ees* treats the surface of the geometric region defined by the *region-ID* as a bounding wall which interacts with nearby diff --git a/doc/src/fix_wall_region.rst b/doc/src/fix_wall_region.rst index 162b9d6994..a6f719e142 100644 --- a/doc/src/fix_wall_region.rst +++ b/doc/src/fix_wall_region.rst @@ -132,38 +132,62 @@ style. For style *lj93*\ , the energy E is given by the 9/3 potential: -.. image:: Eqs/fix_wall_lj93.jpg - :align: center +.. math:: + + E = \epsilon \left[ \frac{2}{15} \left(\frac{\sigma}{r}\right)^{9} - + \left(\frac{\sigma}{r}\right)^3 \right] + \qquad r < r_c + For style *lj126*\ , the energy E is given by the 12/6 potential: -.. image:: Eqs/pair_lj.jpg - :align: center +.. math:: + + E = 4 \epsilon \left[ \left(\frac{\sigma}{r}\right)^{12} - + \left(\frac{\sigma}{r}\right)^6 \right] + \qquad r < r_c + For style *wall/lj1043*\ , the energy E is given by the 10/4/3 potential: -.. image:: Eqs/fix_wall_lj1043.jpg - :align: center +.. math:: + + E = 2 \pi \epsilon \left[ \frac{2}{5} \left(\frac{\sigma}{r}\right)^{10} - + \left(\frac{\sigma}{r}\right)^4 - + \frac{\sqrt(2)\sigma^3}{3\left(r+\left(0.61/\sqrt(2)\right)\sigma\right)^3}\right] + \qquad r < r_c + For style *colloid*\ , the energy E is given by an integrated form of the :doc:`pair_style colloid ` potential: -.. image:: Eqs/fix_wall_colloid.jpg - :align: center +.. math:: + + E = & \epsilon \left[ \frac{\sigma^{6}}{7560} + \left(\frac{6R-D}{D^{7}} + \frac{D+8R}{(D+2R)^{7}} \right) \right. \\ + & \left. - \frac{1}{6} \left(\frac{2R(D+R) + D(D+2R) + \left[ \ln D - \ln (D+2R) \right]}{D(D+2R)} \right) \right] \qquad r < r_c + For style *wall/harmonic*\ , the energy E is given by a harmonic spring potential (the distance parameter is ignored): -.. image:: Eqs/fix_wall_harmonic.jpg - :align: center +.. math:: + + E = \epsilon \quad (r - r_c)^2 \qquad r < r_c + For style *wall/morse*\ , the energy E is given by the Morse potential: -.. image:: Eqs/pair_morse.jpg - :align: center +.. math:: + + E = D_0 \left[ e^{- 2 \alpha (r - r_0)} - 2 e^{- \alpha (r - r_0)} \right] + \qquad r < r_c + -Unlike other styles, this requires three parameters (*D\_0*, *alpha*\ , *r\_0* -in this order) instead of two like for the other wall styles. +Unlike other styles, this requires three parameters (:math:`D_0`, +:math:`\alpha`, and :math:`r_0` in this order) instead of two like +for the other wall styles. In all cases, *r* is the distance from the particle to the region surface, and Rc is the *cutoff* distance at which the particle and diff --git a/doc/src/min_style.rst b/doc/src/min_style.rst index 5de407b6a9..dffacab8a5 100644 --- a/doc/src/min_style.rst +++ b/doc/src/min_style.rst @@ -65,21 +65,21 @@ Style *fire* is a damped dynamics method described in :ref:`(Bitzek) and alters the projection operation to maintain components of the velocity non-parallel to the current force vector. The velocity of each atom is initialized to 0.0 by this style, at the beginning of a -minimization. This style correspond to an optimized version described +minimization. This style correspond to an optimized version described in :ref:`(Guenole) ` that include different time integration -schemes and defaults parameters. The default parameters can be +schemes and defaults parameters. The default parameters can be modified with the command :doc:`min_modify `. -Style *fire/old* is the original implementation of *fire* in Lammps, -conserved for backward compatibility. The main differences regarding +Style *fire/old* is the original implementation of *fire* in Lammps, +conserved for backward compatibility. The main differences regarding the current version *fire* are: time integration by Explicit Euler only, different sequence in maintaining velocity components non-parallel to the current force vector and hard-coded minimization parameters. -A complete description of the differences between *fire/old* and *fire* -can be found in :ref:`(Guenole) ` (where the current *fire* -in lammps is named *fire2.0*). By using an appropriate set of -parameters, *fire* can behave similarly than *fire/old*, as described +A complete description of the differences between *fire/old* and *fire* +can be found in :ref:`(Guenole) ` (where the current *fire* +in LAMMPS is called *fire2.0*). By using an appropriate set of +parameters, *fire* can behave similar to *fire/old*, as described in the :doc:`min_modify ` command. Style *spin* is a damped spin dynamics with an adaptive timestep. diff --git a/doc/src/pair_adp.rst b/doc/src/pair_adp.rst index 69051f545e..43a94933ad 100644 --- a/doc/src/pair_adp.rst +++ b/doc/src/pair_adp.rst @@ -1,16 +1,16 @@ -.. index:: pair\_style adp +.. index:: pair_style adp -pair\_style adp command -======================= +pair_style adp command +====================== -pair\_style adp/omp command -=========================== +pair_style adp/omp command +========================== Syntax """""" -.. parsed-literal:: +.. code-block:: LAMMPS pair_style adp @@ -18,11 +18,11 @@ Examples """""""" -.. parsed-literal:: +.. code-block:: LAMMPS pair_style adp - pair_coeff \* \* Ta.adp Ta - pair_coeff \* \* ../potentials/AlCu.adp Al Al Cu + pair_coeff * * Ta.adp Ta + pair_coeff * * ../potentials/AlCu.adp Al Al Cu Description """"""""""" @@ -32,15 +32,21 @@ using the angular dependent potential (ADP) of :ref:`(Mishin) `, which is a generalization of the :doc:`embedded atom method (EAM) potential `. The LAMMPS implementation is discussed in :ref:`(Singh) `. The total energy Ei of an atom I is given by -.. image:: Eqs/pair_adp.jpg - :align: center +.. math:: -where F is the embedding energy which is a function of the atomic -electron density rho, phi is a pair potential interaction, alpha and -beta are the element types of atoms I and J, and s and t = 1,2,3 and -refer to the cartesian coordinates. The mu and lambda terms represent -the dipole and quadruple distortions of the local atomic environment -which extend the original EAM framework by introducing angular forces. + E_i & = F_\alpha \left( \sum_{j\neq i} \rho_\beta (r_{ij}) \right) + \frac{1}{2} \sum_{j\neq i}\phi_{\alpha\beta}(r_{ij})+ \frac{1}{2} \sum_s (\mu_i^s)^2 + \frac{1}{2} \sum_{s,t} (\lambda_i^{st})^2 - \frac{1}{6} \nu_i^2 \\ + \mu_i^s & = \sum_{j\neq i}u_{\alpha\beta}(r_{ij})r_{ij}^s\\ + \lambda_i^{st} & = \sum_{j\neq i}w_{\alpha\beta}(r_{ij})r_{ij}^sr_{ij}^t\\ + \nu_i & = \sum_s\lambda_i^{ss} + + +where :math:`F` is the embedding energy which is a function of the atomic +electron density :math:`\rho`, :math:`\phi` is a pair potential interaction, +:math:`\alpha` and :math:`\beta` are the element types of atoms :math:`I` and +:math:`J`, and :math:`s` and :math:`t = 1,2,3` and refer to the cartesian +coordinates. The :math:`\mu` and :math:`\lambda` terms represent the dipole +and quadruple distortions of the local atomic environment which extend the +original EAM framework by introducing angular forces. Note that unlike for other potentials, cutoffs for ADP potentials are not set in the pair\_style or pair\_coeff command; they are specified in @@ -61,12 +67,12 @@ command to specify them. Only a single pair\_coeff command is used with the *adp* style which specifies an extended DYNAMO *setfl* file, which contains information -for M elements. These are mapped to LAMMPS atom types by specifying N +for :math:`M` elements. These are mapped to LAMMPS atom types by specifying :math:`N` additional arguments after the filename in the pair\_coeff command, -where N is the number of LAMMPS atom types: +where :math:`N` is the number of LAMMPS atom types: * filename -* N element names = mapping of extended *setfl* elements to atom types +* :math:`N` element names = mapping of extended *setfl* elements to atom types See the :doc:`pair_coeff ` doc page for alternate ways to specify the path for the potential file. @@ -79,9 +85,9 @@ and you want the 1st 3 to be Al, and the 4th to be Cu, you would use the following pair\_coeff command: -.. parsed-literal:: +.. code-block:: LAMMPS - pair_coeff \* \* AlCu.adp Al Al Al Cu + pair_coeff * * AlCu.adp Al Al Al Cu The 1st 2 arguments must be \* \* so as to span all LAMMPS atom types. The first three Al arguments map LAMMPS atom types 1,2,3 to the Al @@ -103,29 +109,33 @@ the tabulated pair potentials. See the :doc:`pair_eam ` command for further details on the *setfl* format. * lines 1,2,3 = comments (ignored) -* line 4: Nelements Element1 Element2 ... ElementN -* line 5: Nrho, drho, Nr, dr, cutoff +* line 4: :math:`N_{\text{elements}}` Element1 Element2 ... ElementN +* line 5: :math:`N_\rho`, :math:`d_\rho`, :math:`N_r`, :math:`d_r`, cutoff -Following the 5 header lines are Nelements sections, one for each +Following the 5 header lines are :math:`N_{\text{elements}}` sections, one for each element, each with the following format: * line 1 = atomic number, mass, lattice constant, lattice type (e.g. FCC) -* embedding function F(rho) (Nrho values) -* density function rho(r) (Nr values) - -Following the Nelements sections, Nr values for each pair potential -phi(r) array are listed for all i,j element pairs in the same format -as other arrays. Since these interactions are symmetric (i,j = j,i) -only phi arrays with i >= j are listed, in the following order: i,j = -(1,1), (2,1), (2,2), (3,1), (3,2), (3,3), (4,1), ..., (Nelements, -Nelements). The tabulated values for each phi function are listed as -r\*phi (in units of eV-Angstroms), since they are for atom pairs, the +* embedding function :math:`F(\rho)` (:math:`N_\rho` values) +* density function :math:`\rho(r)` (:math:`N_r` values) + +Following the :math:`N_{\text{elements}}` sections, :math:`N_r` values for each pair potential +:math:`\phi(r)` array are listed for all :math:`i,j` element pairs in the same format +as other arrays. Since these interactions are symmetric (:math:`i,j = j,i`) +only :math:`\phi` arrays with :math:`i \geq j` are listed, in the following order: + +.. math:: + + i,j = (1,1), (2,1), (2,2), (3,1), (3,2), (3,3), (4,1), ..., (N_{\text{elements}},N_{\text{elements}}). + +The tabulated values for each :math:`\phi` function are listed as +:math:`r*\phi` (in units of eV-Angstroms), since they are for atom pairs, the same as for :doc:`other EAM files `. -After the phi(r) arrays, each of the u(r) arrays are listed in the +After the :math:`\phi(r)` arrays, each of the :math:`u(r)` arrays are listed in the same order with the same assumptions of symmetry. Directly following -the u(r), the w(r) arrays are listed. Note that phi(r) is the only -array tabulated with a scaling by r. +the :math:`u(r)`, the :math:`w(r)` arrays are listed. Note that :math:`\phi(r)` is the only +array tabulated with a scaling by :math:`r`. ---------- diff --git a/doc/src/pair_agni.rst b/doc/src/pair_agni.rst index fc2b47b63d..bb7408f363 100644 --- a/doc/src/pair_agni.rst +++ b/doc/src/pair_agni.rst @@ -1,23 +1,26 @@ -.. index:: pair\_style agni +.. index:: pair_style agni -pair\_style agni command +pair_style agni command ======================== -pair\_style agni/omp command +pair_style agni/omp command ============================ Syntax """""" -.. parsed-literal:: +.. code-block:: LAMMPS pair_style agni Examples """""""" -pair\_style agni -pair\_coeff \* \* Al.agni Al + +.. code-block:: LAMMPS + + pair_style agni + pair_coeff * * Al.agni Al Description """"""""""" @@ -25,14 +28,19 @@ Description Style *agni* style computes the many-body vectorial force components for an atom as -.. image:: Eqs/pair_agni.jpg - :align: center +.. math:: + + F_i^u & = \sum_t^{N_t}\alpha_t \cdot \exp\left[-\frac{\left(d_{i,t}^u\right)^2}{2l^2}\right] \\ + d_{i,t}^u & = \left|\left| V_i^u(\eta) - V_t^u(\eta) \right|\right| \\ + V_i^u(\eta) & = \sum_{j \neq i}\frac{r^u_{ij}}{r_{ij}} \cdot e^{-\left(\frac{r_{ij}}{\eta} \right)^2} \cdot f_d\left(r_{ij}\right) \\ + f_d\left(r_{ij}\right) & = \frac{1}{2} \left[\cos\left(\frac{\pi r_{ij}}{R_c}\right) + 1 \right] + -*u* labels the individual components, i.e. x, y or z, and *V* is the -corresponding atomic fingerprint. *d* is the Euclidean distance between -any two atomic fingerprints. A total of N\_t reference atomic -environments are considered to construct the force field file. *alpha\_t* -and *l* are the weight coefficients and length scale parameter of the +:math:`u` labels the individual components, i.e. :math:`x`, :math:`y` or :math:`z`, and :math:`V` is the +corresponding atomic fingerprint. :math:`d` is the Euclidean distance between +any two atomic fingerprints. A total of :math:`N_t` reference atomic +environments are considered to construct the force field file. :math:`\alpha_t` +and :math:`l` are the weight coefficients and length scale parameter of the non-linear regression model. The method implements the recently proposed machine learning access to @@ -45,11 +53,11 @@ vectorial atomic forces. Only a single pair\_coeff command is used with the *agni* style which specifies an AGNI potential file containing the parameters of the force field for the needed elements. These are mapped to LAMMPS atom -types by specifying N additional arguments after the filename in the -pair\_coeff command, where N is the number of LAMMPS atom types: +types by specifying :math:`N` additional arguments after the filename in the +pair\_coeff command, where :math:`N` is the number of LAMMPS atom types: * filename -* N element names = mapping of AGNI elements to atom types +* :math:`N` element names = mapping of AGNI elements to atom types See the :doc:`pair_coeff ` doc page for alternate ways to specify the path for the force field file. diff --git a/doc/src/pair_airebo.rst b/doc/src/pair_airebo.rst index 0cd2a79fe8..e2ef285f91 100644 --- a/doc/src/pair_airebo.rst +++ b/doc/src/pair_airebo.rst @@ -1,61 +1,61 @@ -.. index:: pair\_style airebo +.. index:: pair_style airebo -pair\_style airebo command -========================== +pair_style airebo command +========================= -pair\_style airebo/intel command -================================ +pair_style airebo/intel command +=============================== -pair\_style airebo/omp command -============================== +pair_style airebo/omp command +============================= -pair\_style airebo/morse command -================================ +pair_style airebo/morse command +=============================== -pair\_style airebo/morse/intel command -====================================== +pair_style airebo/morse/intel command +===================================== -pair\_style airebo/morse/omp command -==================================== +pair_style airebo/morse/omp command +=================================== -pair\_style rebo command -======================== +pair_style rebo command +======================= -pair\_style rebo/intel command -============================== +pair_style rebo/intel command +============================= -pair\_style rebo/omp command -============================ +pair_style rebo/omp command +=========================== Syntax """""" -.. parsed-literal:: +.. code-block:: LAMMPS pair_style style cutoff LJ_flag TORSION_flag cutoff_min * style = *airebo* or *airebo/morse* or *rebo* -* cutoff = LJ or Morse cutoff (sigma scale factor) (AIREBO and AIREBO-M only) +* cutoff = LJ or Morse cutoff (:math:`\sigma` scale factor) (AIREBO and AIREBO-M only) * LJ\_flag = 0/1 to turn off/on the LJ or Morse term (AIREBO and AIREBO-M only, optional) * TORSION\_flag = 0/1 to turn off/on the torsion term (AIREBO and AIREBO-M only, optional) -* cutoff\_min = Start of the transition region of cutoff (sigma scale factor) (AIREBO and AIREBO-M only, optional) +* cutoff\_min = Start of the transition region of cutoff (:math:`\sigma` scale factor) (AIREBO and AIREBO-M only, optional) Examples """""""" -.. parsed-literal:: +.. code-block:: LAMMPS pair_style airebo 3.0 pair_style airebo 2.5 1 0 - pair_coeff \* \* ../potentials/CH.airebo H C + pair_coeff * * ../potentials/CH.airebo H C pair_style airebo/morse 3.0 - pair_coeff \* \* ../potentials/CH.airebo-m H C + pair_coeff * * ../potentials/CH.airebo-m H C pair_style rebo - pair_coeff \* \* ../potentials/CH.rebo H C + pair_coeff * * ../potentials/CH.rebo H C Description """"""""""" @@ -82,8 +82,11 @@ with a few slightly different parameters The AIREBO potential consists of three terms: -.. image:: Eqs/pair_airebo.jpg - :align: center +.. math:: + + E & = \frac{1}{2} \sum_i \sum_{j \neq i} + \left[ E^{\text{REBO}}_{ij} + E^{\text{LJ}}_{ij} + + \sum_{k \neq i,j} \sum_{l \neq i,j,k} E^{\text{TORSION}}_{kijl} \right] \\ By default, all three terms are included. For the *airebo* style, if the first two optional flag arguments to the pair\_style command are @@ -91,73 +94,73 @@ included, the LJ and torsional terms can be turned off. Note that both or neither of the flags must be included. If both of the LJ an torsional terms are turned off, it becomes the 2nd-generation REBO potential, with a small caveat on the spline fitting procedure -mentioned below. This can be specified directly as pair\_style *rebo* +mentioned below. This can be specified directly as pair_style *rebo* with no additional arguments. The detailed formulas for this potential are given in :ref:`(Stuart) `; here we provide only a brief description. -The E\_REBO term has the same functional form as the hydrocarbon REBO +The :math:`E^{\text{REBO}}` term has the same functional form as the hydrocarbon REBO potential developed in :ref:`(Brenner) `. The coefficients for -E\_REBO in AIREBO are essentially the same as Brenner's potential, but +:math:`E^{\text{REBO}}` in AIREBO are essentially the same as Brenner's potential, but a few fitted spline values are slightly different. For most cases the -E\_REBO term in AIREBO will produce the same energies, forces and +:math:`E^{\text{REBO}}` term in AIREBO will produce the same energies, forces and statistical averages as the original REBO potential from which it was -derived. The E\_REBO term in the AIREBO potential gives the model its +derived. The :math:`E^{\text{REBO}}` term in the AIREBO potential gives the model its reactive capabilities and only describes short-ranged C-C, C-H and H-H -interactions (r < 2 Angstroms). These interactions have strong +interactions (:math:`r < 2` Angstroms). These interactions have strong coordination-dependence through a bond order parameter, which adjusts the attraction between the I,J atoms based on the position of other nearby atoms and thus has 3- and 4-body dependence. -The E\_LJ term adds longer-ranged interactions (2 < r < cutoff) using a +The :math:`E^{\text{LJ}}` term adds longer-ranged interactions (:math:`2 < r < \text{cutoff}`) using a form similar to the standard :doc:`Lennard Jones potential `. -The E\_LJ term in AIREBO contains a series of switching functions so -that the short-ranged LJ repulsion (1/r\^12) does not interfere with -the energetics captured by the E\_REBO term. The extent of the E\_LJ -interactions is determined by the *cutoff* argument to the pair\_style +The :math:`E^{\text{LJ}}` term in AIREBO contains a series of switching functions so +that the short-ranged LJ repulsion (:math:`1/r^{12}`) does not interfere with +the energetics captured by the :math:`E^{\text{REBO}}` term. The extent of the :math:`E^{\text{LJ}}` +interactions is determined by the *cutoff* argument to the pair_style command which is a scale factor. For each type pair (C-C, C-H, H-H) the cutoff is obtained by multiplying the scale factor by the sigma value defined in the potential file for that type pair. In the -standard AIREBO potential, sigma\_CC = 3.4 Angstroms, so with a scale -factor of 3.0 (the argument in pair\_style), the resulting E\_LJ cutoff +standard AIREBO potential, :math:`\sigma_{CC} = 3.4` Angstroms, so with a scale +factor of 3.0 (the argument in pair_style), the resulting :math:`E^{\text{LJ}}` cutoff would be 10.2 Angstroms. By default, the longer-ranged interaction is smoothly switched off -between 2.16 and 3.0 sigma. By specifying *cutoff\_min* in addition +between 2.16 and 3.0 :math:`\sigma`. By specifying *cutoff\_min* in addition to *cutoff*\ , the switching can be configured to take place between *cutoff\_min* and *cutoff*\ . *cutoff\_min* can only be specified if all optional arguments are given. -The E\_TORSION term is an explicit 4-body potential that describes +The :math:`E^{\text{TORSION}}` term is an explicit 4-body potential that describes various dihedral angle preferences in hydrocarbon configurations. ---------- -Only a single pair\_coeff command is used with the *airebo*\ , *airebo* +Only a single pair_coeff command is used with the *airebo*\ , *airebo* or *rebo* style which specifies an AIREBO, REBO, or AIREBO-M potential file with parameters for C and H. Note that as of LAMMPS version 15 May 2019 the *rebo* style in LAMMPS uses its own potential file (CH.rebo). These are mapped to LAMMPS atom types by specifying -N additional arguments after the filename in the pair\_coeff command, +N additional arguments after the filename in the pair_coeff command, where N is the number of LAMMPS atom types: * filename -* N element names = mapping of AIREBO elements to atom types +* :math:`N` element names = mapping of AIREBO elements to atom types See the :doc:`pair_coeff ` doc page for alternate ways to specify the path for the potential file. As an example, if your LAMMPS simulation has 4 atom types and you want the 1st 3 to be C, and the 4th to be H, you would use the following -pair\_coeff command: +pair_coeff command: -.. parsed-literal:: +.. code-block:: LAMMPS - pair_coeff \* \* CH.airebo C C C H + pair_coeff * * CH.airebo C C C H The 1st 2 arguments must be \* \* so as to span all LAMMPS atom types. The first three C arguments map LAMMPS atom types 1,2,3 to the C @@ -178,21 +181,21 @@ listed in the CH.airebo-m file to agree with the :ref:`(O'Connor) ` paper. Thus the parameters are specific to this potential and the way it was fit, so modifying the file should be done cautiously. The AIREBO-M Morse potentials were parameterized using a cutoff of -3.0 (sigma). Modifying this cutoff may impact simulation accuracy. +3.0 (:math:`\sigma`). Modifying this cutoff may impact simulation accuracy. This pair style tallies a breakdown of the total AIREBO potential energy into sub-categories, which can be accessed via the :doc:`compute pair ` command as a vector of values of length 3. The 3 values correspond to the following sub-categories: -1. *E\_REBO* = REBO energy -2. *E\_LJ* = Lennard-Jones energy -3. *E\_TORSION* = Torsion energy +1. :math:`E_{\text{REBO}}` = REBO energy +2. :math:`E_{\text{LJ}}` = Lennard-Jones energy +3. :math:`E_{\text{TORSION}}` = Torsion energy To print these quantities to the log file (with descriptive column headings) the following commands could be included in an input script: -.. parsed-literal:: +.. code-block:: LAMMPS compute 0 all pair airebo variable REBO equal c_0[1] @@ -232,12 +235,12 @@ These pair styles do not support the :doc:`pair_modify ` mix, shift, table, and tail options. These pair styles do not write their information to :doc:`binary restart files `, since it is stored in potential files. Thus, you -need to re-specify the pair\_style and pair\_coeff commands in an input +need to re-specify the pair_style and pair_coeff commands in an input script that reads a restart file. These pair styles can only be used via the *pair* keyword of the :doc:`run_style respa ` command. They do not support the -*inner*\ , *middle*\ , *outer* keywords. +*inner* , *middle*, *outer* keywords. Restrictions """""""""""" diff --git a/doc/src/pair_atm.rst b/doc/src/pair_atm.rst index 6118b0943f..c8c4edeb54 100644 --- a/doc/src/pair_atm.rst +++ b/doc/src/pair_atm.rst @@ -1,13 +1,13 @@ -.. index:: pair\_style atm +.. index:: pair_style atm -pair\_style atm command -======================= +pair_style atm command +====================== Syntax """""" -.. parsed-literal:: +.. code-block:: LAMMPS pair_style atm cutoff cutoff_triple @@ -18,13 +18,13 @@ Examples """""""" -.. parsed-literal:: +.. code-block:: LAMMPS pair_style atm 4.5 2.5 - pair_coeff \* \* \* 0.072 + pair_coeff * * * 0.072 pair_style hybrid/overlay lj/cut 6.5 atm 4.5 2.5 - pair_coeff \* \* lj/cut 1.0 1.0 + pair_coeff * * lj/cut 1.0 1.0 pair_coeff 1 1 atm 1 0.064 pair_coeff 1 1 atm 2 0.080 pair_coeff 1 2 atm 2 0.100 @@ -36,91 +36,95 @@ Description The *atm* style computes a 3-body :ref:`Axilrod-Teller-Muto ` potential for the energy E of a system of atoms as -.. image:: Eqs/pair_atm.jpg - :align: center +.. math:: + + E & = \nu\frac{1+3\cos\gamma_1\cos\gamma_2\cos\gamma_3}{r_{12}^3r_{23}^3r_{31}^3} \\ + -where nu is the three-body interaction strength. The distances -between pairs of atoms r12, r23, r31 and the angles gamma1, gamma2, -gamma3 are as shown in this diagram: +where :math:`\nu` is the three-body interaction strength. The distances +between pairs of atoms :math:`r_{12}`, :math:`r_{23}`, :math:`r_{31}` and the angles :math:`\gamma_1`, :math:`\gamma_2`, +:math:`\gamma_3` are as shown in this diagram: .. image:: JPG/pair_atm_dia.jpg :align: center -Note that for the interaction between a triplet of atoms I,J,K, there +Note that for the interaction between a triplet of atoms :math:`I,J,K`, there is no "central" atom. The interaction is symmetric with respect to -permutation of the three atoms. Thus the nu value is -the same for all those permutations of the atom types of I,J,K +permutation of the three atoms. Thus the :math:`\nu` value is +the same for all those permutations of the atom types of :math:`I,J,K` and needs to be specified only once, as discussed below. The *atm* potential is typically used in combination with a two-body potential using the :doc:`pair_style hybrid/overlay ` command as in the example above. -The potential for a triplet of atom is calculated only if all 3 -distances r12, r23, r31 between the 3 atoms satisfy rIJ < cutoff. -In addition, the product of the 3 distances r12\*r23\*r31 < -cutoff\_triple\^3 is required, which excludes from calculation the -triplets with small contribution to the interaction. +The potential for a triplet of atom is calculated only if all 3 distances +:math:`r_{12}`, :math:`r_{23}`, :math:`r_{31}` between the 3 atoms satisfy +:math:`r_{IJ} < \text{cutoff}`. In addition, the product of the 3 distances +:math:`r_{12} r_{23} r_{31}` < cutoff_triple :math:`^3` is required, which +excludes from calculation the triplets with small contribution to the +interaction. The following coefficients must be defined for each pair of atoms types via the :doc:`pair_coeff ` command as in the examples above, or in the restart files read by the :doc:`read_restart ` commands: -* K = atom type of the third atom (1 to Ntypes) -* nu = prefactor (energy/distance\^9 units) +* :math:`K` = atom type of the third atom (1 to :math:`N_{\text{types}}`) +* :math:`\nu` = prefactor (energy/distance\^9 units) -K can be specified in one of two ways. An explicit numeric value can -be used, as in the 2nd example above. J <= K is required. LAMMPS -sets the coefficients for the other 5 symmetric interactions to the -same values. E.g. if I = 1, J = 2, K = 3, then these 6 values are set -to the specified nu: nu123, nu132, nu213, nu231, nu312, nu321. This -enforces the symmetry discussed above. +:math:`K` can be specified in one of two ways. An explicit numeric value can +be used, as in the 2nd example above. :math:`J \leq K` is required. LAMMPS +sets the coefficients for the other 5 symmetric interactions to the same +values. E.g. if :math:`I = 1`, :math:`J = 2`, :math:`K = 3`, then these 6 +values are set to the specified :math:`\nu`: :math:`\nu_{123}`, +:math:`\nu_{132}`, :math:`\nu_{213}`, :math:`\nu_{231}`, :math:`\nu_{312}`, +:math:`\nu_{321}`. This enforces the symmetry discussed above. A wildcard asterisk can be used for K to set the coefficients for multiple triplets of atom types. This takes the form "\*" or "\*n" or -"n\*" or "m\*n". If N = the number of atom types, then an asterisk with -no numeric values means all types from 1 to N. A leading asterisk -means all types from 1 to n (inclusive). A trailing asterisk means -all types from n to N (inclusive). A middle asterisk means all types -from m to n (inclusive). Note that only type triplets with J <= K are -considered; if asterisks imply type triplets where K < J, they are +"n\*" or "m\*n". If :math:`N` equals the number of atom types, then an asterisk with +no numeric values means all types from 1 to :math:`N`. A leading asterisk +means all types from 1 to :math:`n` (inclusive). A trailing asterisk means +all types from :math:`n` to :math:`N` (inclusive). A middle asterisk means all types +from :math:`m` to :math:`n` (inclusive). Note that only type triplets with :math:`J \leq K` are +considered; if asterisks imply type triplets where :math:`K < J`, they are ignored. -Note that a pair\_coeff command can override a previous setting for the -same I,J,K triplet. For example, these commands set nu for all I,J.K -triplets, then overwrite nu for just the I,J,K = 2,3,4 triplet: +Note that a pair_coeff command can override a previous setting for the +same :math:`I,J,K` triplet. For example, these commands set :math:`\nu` for all :math:`I,J.K` +triplets, then overwrite nu for just the :math:`I,J,K = 2,3,4` triplet: -.. parsed-literal:: +.. code-block:: LAMMPS - pair_coeff \* \* \* 0.25 + pair_coeff * * * 0.25 pair_coeff 2 3 4 0.1 Note that for a simulation with a single atom type, only a single entry is required, e.g. -.. parsed-literal:: +.. code-block:: LAMMPS pair_coeff 1 1 1 0.25 -For a simulation with two atom types, four pair\_coeff commands will +For a simulation with two atom types, four pair_coeff commands will specify all possible nu values: -.. parsed-literal:: +.. code-block:: LAMMPS pair_coeff 1 1 1 nu1 pair_coeff 1 1 2 nu2 pair_coeff 1 2 2 nu3 pair_coeff 2 2 2 nu4 -For a simulation with three atom types, ten pair\_coeff commands will +For a simulation with three atom types, ten pair_coeff commands will specify all possible nu values: -.. parsed-literal:: +.. code-block:: LAMMPS pair_coeff 1 1 1 nu1 pair_coeff 1 1 2 nu2 @@ -133,12 +137,12 @@ specify all possible nu values: pair_coeff 2 3 3 nu9 pair_coeff 3 3 3 nu10 -By default the nu value for all triplets is set to 0.0. Thus it is -not required to provide pair\_coeff commands that enumerate triplet -interactions for all K types. If some I,J,K combination is not +By default the :math:`\nu` value for all triplets is set to 0.0. Thus it is +not required to provide pair_coeff commands that enumerate triplet +interactions for all :math:`K` types. If some :math:`I,J,K` combination is not specified, then there will be no 3-body ATM interactions for that combination and all its permutations. However, as with all pair -styles, it is required to specify a pair\_coeff command for all I,J +styles, it is required to specify a pair_coeff command for all :math:`I,J` combinations, else an error will result. @@ -150,16 +154,16 @@ combinations, else an error will result. This pair styles do not support the :doc:`pair_modify ` mix, shift, table, and tail options. -This pair style writes its information to :doc:`binary restart files `, so pair\_style and pair\_coeff commands do not need -to be specified in an input script that reads a restart file. -However, if the *atm* potential is used in combination with other -potentials using the :doc:`pair_style hybrid/overlay ` -command then pair\_coeff commands need to be re-specified -in the restart input script. +This pair style writes its information to :doc:`binary restart files +`, so pair_style and pair_coeff commands do not need to be specified +in an input script that reads a restart file. However, if the *atm* potential +is used in combination with other potentials using the :doc:`pair_style +hybrid/overlay ` command then pair_coeff commands need to be +re-specified in the restart input script. This pair style can only be used via the *pair* keyword of the :doc:`run_style respa ` command. It does not support the -*inner*\ , *middle*\ , *outer* keywords. +*inner* , *middle* , *outer* keywords. ---------- diff --git a/doc/src/pair_beck.rst b/doc/src/pair_beck.rst index 6a407e11a9..88abfe9798 100644 --- a/doc/src/pair_beck.rst +++ b/doc/src/pair_beck.rst @@ -1,19 +1,19 @@ -.. index:: pair\_style beck +.. index:: pair_style beck -pair\_style beck command -======================== +pair_style beck command +======================= -pair\_style beck/gpu command -============================ +pair_style beck/gpu command +=========================== -pair\_style beck/omp command -============================ +pair_style beck/omp command +=========================== Syntax """""" -.. parsed-literal:: +.. code-block:: LAMMPS pair_style beck Rc @@ -23,10 +23,10 @@ Examples """""""" -.. parsed-literal:: +.. code-block:: LAMMPS pair_style beck 8.0 - pair_coeff \* \* 399.671876712 0.0000867636112694 0.675 4.390 0.0003746 + pair_coeff * * 399.671876712 0.0000867636112694 0.675 4.390 0.0003746 pair_coeff 1 1 399.671876712 0.0000867636112694 0.675 4.390 0.0003746 6.0 Description @@ -36,8 +36,10 @@ Style *beck* computes interactions based on the potential by :ref:`(Beck) `, originally designed for simulation of Helium. It includes truncation at a cutoff distance Rc. -.. image:: Eqs/pair_beck.jpg - :align: center +.. math:: + + E(r) &= A \exp\left[-\alpha r - \beta r^6\right] - \frac{B}{\left(r^2+a^2\right)^3} \left(1+\frac{2.709+3a^2}{r^2+a^2}\right) \qquad r < R_c \\ + The following coefficients must be defined for each pair of atoms types via the :doc:`pair_coeff ` command as in the examples @@ -45,15 +47,15 @@ above, or in the data file or restart files read by the :doc:`read_data ` or :doc:`read_restart ` commands. -* A (energy units) -* B (energy-distance\^6 units) -* a (distance units) -* alpha (1/distance units) -* beta (1/distance\^6 units) +* :math:`A` (energy units) +* :math:`B` (energy-distance\^6 units) +* :math:`a` (distance units) +* :math:`\alpha` (1/distance units) +* :math:`\beta` (1/distance\^6 units) * cutoff (distance units) The last coefficient is optional. If not specified, the global cutoff -Rc is used. +:math:`R_c` is used. ---------- @@ -108,7 +110,7 @@ This pair style can only be used via the *pair* keyword of the Restrictions """""""""""" - none +none Related commands """""""""""""""" diff --git a/doc/src/pair_body_nparticle.rst b/doc/src/pair_body_nparticle.rst index 1214890070..edfd4f3ab2 100644 --- a/doc/src/pair_body_nparticle.rst +++ b/doc/src/pair_body_nparticle.rst @@ -1,13 +1,13 @@ -.. index:: pair\_style body/nparticle +.. index:: pair_style body/nparticle -pair\_style body/nparticle command -================================== +pair_style body/nparticle command +================================= Syntax """""" -.. parsed-literal:: +.. code-block:: LAMMPS pair_style body/nparticle cutoff @@ -17,10 +17,10 @@ Examples """""""" -.. parsed-literal:: +.. code-block:: LAMMPS pair_style body/nparticle 3.0 - pair_coeff \* \* 1.0 1.0 + pair_coeff * * 1.0 1.0 pair_coeff 1 1 1.0 1.5 2.5 Description @@ -67,11 +67,15 @@ The interaction between two sub-particles, or a sub-particle and point particle, or between two point particles is computed as a Lennard-Jones interaction, using the standard formula -.. image:: Eqs/pair_lj.jpg - :align: center +.. math:: -where Rc is the cutoff. As explained above, an interaction involving -one or two body sub-particles may be computed even for r > Rc. + E & = 4 \epsilon \left[ \left(\frac{\sigma}{r}\right)^{12} - + \left(\frac{\sigma}{r}\right)^6 \right] + \qquad r < R_c \\ + + +where :math:`R_c` is the cutoff. As explained above, an interaction involving +one or two body sub-particles may be computed even for :math:`r > R_c`. For style *body*\ , the following coefficients must be defined for each pair of atoms types via the :doc:`pair_coeff ` command as in @@ -79,8 +83,8 @@ the examples above, or in the data file or restart files read by the :doc:`read_data ` or :doc:`read_restart ` commands: -* epsilon (energy units) -* sigma (distance units) +* :math:`\epsilon` (energy units) +* :math:`\sigma` (distance units) * cutoff (distance units) The last coefficient is optional. If not specified, the global cutoff @@ -94,7 +98,7 @@ is used. For atom type pairs I,J and I != J, the epsilon and sigma coefficients and cutoff distance for all of this pair style can be mixed. The -default mix value is *geometric*\ . See the "pair\_modify" command for +default mix value is *geometric*\ . See the :doc:`pair_modify ` command for details. This pair style does not support the :doc:`pair_modify ` diff --git a/doc/src/pair_body_rounded_polygon.rst b/doc/src/pair_body_rounded_polygon.rst index 9a042b5b5a..652c618d4a 100644 --- a/doc/src/pair_body_rounded_polygon.rst +++ b/doc/src/pair_body_rounded_polygon.rst @@ -1,16 +1,19 @@ -.. index:: pair\_style body/rounded/polygon +.. index:: pair_style body/rounded/polygon -pair\_style body/rounded/polygon command -======================================== +pair_style body/rounded/polygon command +======================================= Syntax """""" -.. parsed-literal:: +.. code-block:: LAMMPS pair_style body/rounded/polygon c_n c_t mu delta_ua cutoff + +.. parsed-literal:: + c_n = normal damping coefficient c_t = tangential damping coefficient mu = normal friction coefficient during gross sliding @@ -21,10 +24,10 @@ Examples """""""" -.. parsed-literal:: +.. code-block:: LAMMPS pair_style body/rounded/polygon 20.0 5.0 0.0 1.0 0.5 - pair_coeff \* \* 100.0 1.0 + pair_coeff * * 100.0 1.0 pair_coeff 1 1 100.0 1.0 Description @@ -33,7 +36,8 @@ Description Style *body/rounded/polygon* is for use with 2d models of body particles of style *rounded/polygon*\ . It calculates pairwise body/body interactions which can include body particles modeled as -1-vertex circular disks with a specified diameter. See the :doc:`Howto body ` doc page for more details on using body +1-vertex circular disks with a specified diameter. See the +:doc:`Howto body ` doc page for more details on using body rounded/polygon particles. This pairwise interaction between rounded polygons is described in @@ -54,34 +58,44 @@ their respective rounded surfaces, not by the separation of the vertices and edges themselves. This means that the specified cutoff in the pair\_style command is the -cutoff distance, r\_c, for the surface separation, \delta\_n (see figure +cutoff distance, :math:`r_c`, for the surface separation, :math:`\delta_n` (see figure below). This is the distance at which two particles no longer -interact. If r\_c is specified as 0.0, then it is a contact-only +interact. If :math:`r_c` is specified as 0.0, then it is a contact-only interaction. I.e. the two particles must overlap in order to exert a -repulsive force on each other. If r\_c > 0.0, then the force between +repulsive force on each other. If :math:`r_c > 0.0`, then the force between two particles will be attractive for surface separations from 0 to -r\_c, and repulsive once the particles overlap. +:math:`r_c`, and repulsive once the particles overlap. Note that unlike for other pair styles, the specified cutoff is not the distance between the centers of two particles at which they stop interacting. This center-to-center distance depends on the shape and size of the two particles and their relative orientation. LAMMPS takes that into account when computing the surface separation distance -and applying the r\_c cutoff. +and applying the :math:`r_c` cutoff. The forces between vertex-vertex, vertex-edge, and edge-edge overlaps are given by: -.. image:: Eqs/pair_body_rounded.jpg - :align: center +.. math:: + + F_n &= \begin{cases} + k_n \delta_n - c_n v_n & \delta_n \le 0 \\ + -k_{na} \delta_n - c_n v_n & 0 < \delta_n \le r_c \\ + 0 & \delta_n > r_c \\ + \end{cases} \\ + F_t &= \begin{cases} + \mu k_n \delta_n - c_t v_t & \delta_n \le 0 \\ + 0 & \delta_n > 0 + \end{cases} .. image:: JPG/pair_body_rounded.jpg :align: center -Note that F\_n and F\_t are functions of the surface separation \delta\_n -= d - (R\_i + R\_j). In this model, when (R\_i + R\_j) < d < (R\_i + R\_j) -+ r\_c, that is, 0 < \delta\_n < r\_c, the cohesive region of the two -surfaces overlap and the two surfaces are attractive to each other. +Note that :math:`F_n` and :math:`F_t` are functions of the surface separation +:math:`\delta_n = d - (R_i + R_j)`. In this model, when +:math:`(R_i + R_j) < d < (R_i + R_j) + r_c`, that is, :math:`0 < \delta_n < r_c`, +the cohesive region of the two surfaces overlap and the two surfaces are +attractive to each other. In :ref:`Fraige `, the tangential friction force between two particles that are in contact is modeled differently prior to gross @@ -98,12 +112,12 @@ The following coefficients must be defined for each pair of atom types via the :doc:`pair_coeff ` command as in the examples above, or in the data file read by the :doc:`read_data ` command: -* k\_n (energy/distance\^2 units) -* k\_na (energy/distance\^2 units) +* :math:`k_n` (energy/distance\^2 units) +* :math:`k_{na}` (energy/distance\^2 units) -Effectively, k\_n and k\_na are the slopes of the red lines in the plot -above for force versus surface separation, for \delta\_n < 0 and 0 < -\delta\_n < r\_c respectively. +Effectively, :math:`k_n` and :math:`k_{na}` are the slopes of the red lines in the plot +above for force versus surface separation, for :math:`\delta_n < 0` and +:math:`0 < \delta_n < r_c` respectively. **Mixing, shift, table, tail correction, restart, rRESPA info**\ : @@ -120,7 +134,6 @@ This pair style can only be used via the *pair* keyword of the Restrictions """""""""""" - These pair styles are part of the BODY package. They are only enabled if LAMMPS was built with that package. See the :doc:`Build package ` doc page for more info. diff --git a/doc/src/pair_body_rounded_polyhedron.rst b/doc/src/pair_body_rounded_polyhedron.rst index 23623a640e..20dbbafb13 100644 --- a/doc/src/pair_body_rounded_polyhedron.rst +++ b/doc/src/pair_body_rounded_polyhedron.rst @@ -1,16 +1,18 @@ -.. index:: pair\_style body/rounded/polyhedron +.. index:: pair_style body/rounded/polyhedron -pair\_style body/rounded/polyhedron command -=========================================== +pair_style body/rounded/polyhedron command +========================================== Syntax """""" -.. parsed-literal:: +.. code-block:: LAMMPS pair_style body/rounded/polyhedron c_n c_t mu delta_ua cutoff +.. parsed-literal:: + c_n = normal damping coefficient c_t = tangential damping coefficient mu = normal friction coefficient during gross sliding @@ -21,10 +23,10 @@ Examples """""""" -.. parsed-literal:: +.. code-block:: LAMMPS pair_style body/rounded/polyhedron 20.0 5.0 0.0 1.0 0.5 - pair_coeff \* \* 100.0 1.0 + pair_coeff * * 100.0 1.0 pair_coeff 1 1 100.0 1.0 Description @@ -33,7 +35,8 @@ Description Style *body/rounded/polygon* is for use with 3d models of body particles of style *rounded/polyhedron*\ . It calculates pairwise body/body interactions which can include body particles modeled as -1-vertex spheres with a specified diameter. See the :doc:`Howto body ` doc page for more details on using body +1-vertex spheres with a specified diameter. See the +:doc:`Howto body ` doc page for more details on using body rounded/polyhedron particles. This pairwise interaction between the rounded polyhedra is described @@ -54,26 +57,35 @@ separation of their respective rounded surfaces, not by the separation of the vertices, edges, and faces themselves. This means that the specified cutoff in the pair\_style command is the -cutoff distance, r\_c, for the surface separation, \delta\_n (see figure +cutoff distance, :math:`r_c`, for the surface separation, :math:`\delta_n` (see figure below). This is the distance at which two particles no longer -interact. If r\_c is specified as 0.0, then it is a contact-only +interact. If :math:`r_c` is specified as 0.0, then it is a contact-only interaction. I.e. the two particles must overlap in order to exert a -repulsive force on each other. If r\_c > 0.0, then the force between +repulsive force on each other. If :math:`r_c > 0.0`, then the force between two particles will be attractive for surface separations from 0 to -r\_c, and repulsive once the particles overlap. +:math:`r_c`, and repulsive once the particles overlap. Note that unlike for other pair styles, the specified cutoff is not the distance between the centers of two particles at which they stop interacting. This center-to-center distance depends on the shape and size of the two particles and their relative orientation. LAMMPS takes that into account when computing the surface separation distance -and applying the r\_c cutoff. +and applying the :math:`r_c` cutoff. The forces between vertex-vertex, vertex-edge, vertex-face, edge-edge, and edge-face overlaps are given by: -.. image:: Eqs/pair_body_rounded.jpg - :align: center +.. math:: + + F_n &= \begin{cases} + k_n \delta_n - c_n v_n, & \delta_n \le 0 \\ + -k_{na} \delta_n - c_n v_n & 0 < \delta_n \le r_c \\ + 0 & \delta_n > r_c \\ + \end{cases} \\ + F_t &= \begin{cases} + \mu k_n \delta_n - c_t v_t & \delta_n \le 0 \\ + 0 & \delta_n > 0 + \end{cases} .. image:: JPG/pair_body_rounded.jpg :align: center @@ -93,20 +105,21 @@ The following coefficients must be defined for each pair of atom types via the :doc:`pair_coeff ` command as in the examples above, or in the data file read by the :doc:`read_data ` command: -* k\_n (energy/distance\^2 units) -* k\_na (energy/distance\^2 units) +* :math:`k_n` (energy/distance\^2 units) +* :math:`k_{na}` (energy/distance\^2 units) -Effectively, k\_n and k\_na are the slopes of the red lines in the plot -above for force versus surface separation, for \delta\_n < 0 and 0 < -\delta\_n < r\_c respectively. +Effectively, :math:`k_n` and :math:`k_{na}` are the slopes of the red lines in the plot +above for force versus surface separation, for :math:`\delta_n` < 0 and +:math:`0 < \delta_n < r_c` respectively. **Mixing, shift, table, tail correction, restart, rRESPA info**\ : This pair style does not support the :doc:`pair_modify ` mix, shift, table, and tail options. -This pair style does not write its information to :doc:`binary restart files `. Thus, you need to re-specify the pair\_style and -pair\_coeff commands in an input script that reads a restart file. +This pair style does not write its information to :doc:`binary restart files `. +Thus, you need to re-specify the pair\_style and pair\_coeff +commands in an input script that reads a restart file. This pair style can only be used via the *pair* keyword of the :doc:`run_style respa ` command. It does not support the diff --git a/doc/src/pair_fep_soft.rst b/doc/src/pair_fep_soft.rst index 20bd84a567..263b52cacf 100644 --- a/doc/src/pair_fep_soft.rst +++ b/doc/src/pair_fep_soft.rst @@ -187,8 +187,14 @@ are suited for "alchemical" free energy calculations using the :doc:`fix adapt/f The *lj/cut/soft* style and related sub-styles compute the 12-6 Lennard-Jones and Coulomb potentials modified by a soft core, with the functional form -.. image:: Eqs/pair_lj_soft.jpg - :align: center +.. math:: + + E = \lambda^n 4 \epsilon \left\{ + \frac{1}{ \left[ \alpha_{\mathrm{LJ}} (1-\lambda)^2 + + \left( \displaystyle\frac{r}{\sigma} \right)^6 \right]^2 } - + \frac{1}{ \alpha_{\mathrm{LJ}} (1-\lambda)^2 + + \left( \displaystyle\frac{r}{\sigma} \right)^6 } + \right\} \qquad r < r_c The *lj/class2/soft* style is a 9-6 potential with the exponent of the denominator of the first term in brackets taking the value 1.5 instead of 2 @@ -197,25 +203,30 @@ denominator of the first term in brackets taking the value 1.5 instead of 2 Coulomb interactions can also be damped with a soft core at short distance, -.. image:: Eqs/pair_coul_soft.jpg - :align: center +.. math:: + + E = \lambda^n \frac{ C q_i q_j}{\epsilon \left[ \alpha_{\mathrm{C}} + (1-\lambda)^2 + r^2 \right]^{1/2}} \qquad r < r_c -In the Coulomb part C is an energy-conversion constant, q\_i and q\_j -are the charges on the 2 atoms, and epsilon is the dielectric constant -which can be set by the :doc:`dielectric ` command. +In the Coulomb part :math:`C` is an energy-conversion constant, :math:`q_i` and +:math:`q_j` are the charges on the 2 atoms, and epsilon is the dielectric +constant which can be set by the :doc:`dielectric ` command. -The coefficient lambda is an activation parameter. When lambda = 1 the pair -potential is identical to a Lennard-Jones term or a Coulomb term or a -combination of both. When lambda = 0 the interactions are deactivated. The -transition between these two extrema is smoothed by a soft repulsive core in -order to avoid singularities in potential energy and forces when sites are -created or annihilated and can overlap :ref:`(Beutler) `. +The coefficient lambda is an activation parameter. When :math:`\lambda = 1` the +pair potential is identical to a Lennard-Jones term or a Coulomb term or a +combination of both. When :math:`\lambda = 0` the interactions are +deactivated. The transition between these two extrema is smoothed by a soft +repulsive core in order to avoid singularities in potential energy and forces +when sites are created or annihilated and can overlap :ref:`(Beutler) +`. -The parameters n, alpha\_LJ and alpha\_C are set in the -:doc:`pair_style ` command, before the cutoffs. Usual choices for the -exponent are n = 2 or n = 1. For the remaining coefficients alpha\_LJ = 0.5 and -alpha\_C = 10 Angstrom\^2 are appropriate choices. Plots of the 12/6 LJ and -Coulomb terms are shown below, for lambda ranging from 1 to 0 every 0.1. +The parameters :math:`n`, :math:`\alpha_\mathrm{LJ}` and +:math:`\alpha_\mathrm{C}` are set in the :doc:`pair_style ` command, +before the cutoffs. Usual choices for the exponent are :math:`n = 2` or +:math:`n = 1`. For the remaining coefficients :math:`\alpha_\mathrm{LJ} = 0.5` +and :math:`\alpha_\mathrm{C} = 10~\text{A}^2` are appropriate choices. Plots of +the 12-6 LJ and Coulomb terms are shown below, for lambda ranging from 1 to 0 +every 0.1. .. image:: JPG/lj_soft.jpg .. image:: JPG/coul_soft.jpg @@ -225,12 +236,12 @@ For the *lj/cut/coul/cut/soft* or *lj/cut/coul/long/soft* pair styles, as well as for the equivalent *class2* versions, the following coefficients must be defined for each pair of atoms types via the :doc:`pair_coeff ` command as in the examples above, or in the data file or restart files read by -the :doc:`read_data ` or :doc:`read_restart ` commands, or -by mixing as described below: +the :doc:`read_data ` or :doc:`read_restart ` commands, +or by mixing as described below: -* epsilon (energy units) -* sigma (distance units) -* lambda (activation parameter, between 0 and 1) +* :math:`\epsilon` (energy units) +* :math:`\sigma` (distance units) +* :math:`\lambda` (activation parameter, between 0 and 1) * cutoff1 (distance units) * cutoff2 (distance units) @@ -245,61 +256,62 @@ since it has no Coulombic terms. For the *coul/cut/soft* and specified. Style *lj/cut/tip4p/long/soft* implements a soft-core version of the TIP4P water -model. The usage of the TIP4P pair style is documented in the -:doc:`pair_lj ` styles. In the soft version the parameters n, alpha\_LJ -and alpha\_C are set in the :doc:`pair_style ` command, after the -specific parameters of the TIP4P water model and before the cutoffs. The -activation parameter lambda is supplied as an argument of the -:doc:`pair_coeff ` command, after epsilon and sigma and before the -optional cutoffs. +model. The usage of the TIP4P pair style is documented in the :doc:`pair_lj +` styles. In the soft version the parameters :math:`n`, +:math:`\alpha_\mathrm{LJ}` and :math:`\alpha_\mathrm {C}` are set in the +:doc:`pair_style ` command, after the specific parameters of the +TIP4P water model and before the cutoffs. The activation parameter lambda is +supplied as an argument of the :doc:`pair_coeff ` command, after +epsilon and sigma and before the optional cutoffs. Style *lj/charmm/coul/long/soft* implements a soft-core version of the modified -12-6 LJ potential used in CHARMM and documented in the -:doc:`pair_style lj/charmm/coul/long ` style. In the soft version the parameters n, -alpha\_LJ and alpha\_C are set in the :doc:`pair_style ` command, before -the global cutoffs. The activation parameter lambda is introduced as an argument -of the :doc:`pair_coeff ` command, after epsilon and sigma and -before the optional eps14 and sigma14. +12-6 LJ potential used in CHARMM and documented in the :doc:`pair_style +lj/charmm/coul/long ` style. In the soft version the parameters +:math:`n`, :math:`\alpha_\mathrm{LJ}` and :math:`\alpha_\mathrm{C}` are set in +the :doc:`pair_style ` command, before the global cutoffs. The +activation parameter lambda is introduced as an argument of the :doc:`pair_coeff +` command, after :math:`\epsilon` and :math:`\sigma` and before the +optional eps14 and sigma14. Style *lj/class2/soft* implements a soft-core version of the 9-6 potential in -:doc:`pair_style lj/class2 `. In the soft version the parameters n, alpha\_LJ -and alpha\_C are set in the :doc:`pair_style ` command, before the -global cutoffs. The activation parameter lambda is introduced as an argument of -the the :doc:`pair_coeff ` command, after epsilon and sigma and before -the optional cutoffs. - -The *coul/cut/soft*\ , *coul/long/soft* and *tip4p/long/soft* sub-styles -are designed to be combined with other pair potentials via the -:doc:`pair_style hybrid/overlay ` command. This is because -they have no repulsive core. Hence, if used by themselves, there will -be no repulsion to keep two oppositely charged particles from -overlapping each other. In this case, if lambda = 1, a singularity may -occur. These sub-styles are suitable to represent charges embedded in -the Lennard-Jones radius of another site (for example hydrogen atoms -in several water models). +:doc:`pair_style lj/class2 `. In the soft version the parameters +:math:`n`, :math:`\alpha_\mathrm{LJ}` and :math:`\alpha_\mathrm{C}` are set in the +:doc:`pair_style ` command, before the global cutoffs. The +activation parameter lambda is introduced as an argument of the the +:doc:`pair_coeff ` command, after :math:`\epsilon` and +:math:`\sigma` and before the optional cutoffs. + +The *coul/cut/soft*\ , *coul/long/soft* and *tip4p/long/soft* sub-styles are +designed to be combined with other pair potentials via the :doc:`pair_style +hybrid/overlay ` command. This is because they have no repulsive +core. Hence, if used by themselves, there will be no repulsion to keep two +oppositely charged particles from overlapping each other. In this case, if +:math:`\lambda = 1`, a singularity may occur. These sub-styles are suitable to +represent charges embedded in the Lennard-Jones radius of another site (for +example hydrogen atoms in several water models). .. note:: - When using the soft-core Coulomb potentials with long-range - solvers (\ *coul/long/soft*\ , *lj/cut/coul/long/soft*\ , etc.) in a free - energy calculation in which sites holding electrostatic charges are - being created or annihilated (using :doc:`fix adapt/fep ` - and :doc:`compute fep `) it is important to adapt both the - lambda activation parameter (from 0 to 1, or the reverse) and the - value of the charge (from 0 to its final value, or the reverse). This - ensures that long-range electrostatic terms (kspace) are correct. It - is not necessary to use soft-core Coulomb potentials if the van der - Waals site is present during the free-energy route, thus avoiding - overlap of the charges. Examples are provided in the LAMMPS source - directory tree, under examples/USER/fep. + When using the soft-core Coulomb potentials with long-range solvers (\ + *coul/long/soft*\ , *lj/cut/coul/long/soft*\ , etc.) in a free energy + calculation in which sites holding electrostatic charges are being created or + annihilated (using :doc:`fix adapt/fep ` and :doc:`compute fep + `) it is important to adapt both the :math:`\lambda` activation + parameter (from 0 to 1, or the reverse) and the value of the charge (from 0 + to its final value, or the reverse). This ensures that long-range + electrostatic terms (kspace) are correct. It is not necessary to use + soft-core Coulomb potentials if the van der Waals site is present during the + free-energy route, thus avoiding overlap of the charges. Examples are + provided in the LAMMPS source directory tree, under examples/USER/fep. .. note:: - To avoid division by zero do not set sigma = 0 in the *lj/cut/soft* and - related styles; use the lambda parameter instead to activate/deactivate - interactions, or use epsilon = 0 and sigma = 1. Alternatively, when sites do not - interact though the Lennard-Jones term the *coul/long/soft* or similar sub-style - can be used via the :doc:`pair_style hybrid/overlay ` command. + To avoid division by zero do not set :math:`\sigma = 0` in the *lj/cut/soft* + and related styles; use the lambda parameter instead to activate/deactivate + interactions, or use :math:`\epsilon = 0` and :math:`\sigma = 1`. + Alternatively, when sites do not interact though the Lennard-Jones term + the *coul/long/soft* or similar sub-style can be used via the + :doc:`pair_style hybrid/overlay ` command. ---------- @@ -309,15 +321,25 @@ The *morse/soft* variant modifies the :doc:`pair_morse ` style at short range to have a soft core. The functional form differs from that of the *lj/soft* styles, and is instead given by: -.. image:: Eqs/pair_morse_soft.jpg - :align: center +.. math:: + + \begin{split} + s(\lambda) =& (1 - \lambda) / (1 - \lambda_f), \qquad B = -2D e^{-2 \alpha + r_0} (e^{\alpha r_0} - 1) / 3 \\ + E =& D_0 \left[ e^{- 2 \alpha (r - r_0)} - 2 e^{- \alpha (r - r_0)} \right] + + s(\lambda) B e^{-3\alpha(r-r_0)}, \qquad \hspace{2.85em}\lambda \geq + \lambda_f,\quad r < r_c \\ + E =& \left( D_0 \left[ e^{- 2 \alpha (r - r_0)} - 2 e^{- \alpha (r - r_0)} + \right] + B e^{-3\alpha(r-r_0)} \right)(\lambda/\lambda_f)^n, \qquad \lambda + < \lambda_f,\quad r < r_c + \end{split} The *morse/soft* style requires the following pair coefficients: -* D0 (energy units) -* alpha (1/distance units) -* r0 (distance units) -* lambda (unitless, between 0.0 and 1.0) +* :math:`D_0` (energy units) +* :math:`\alpha` (1/distance units) +* :math:`r_0` (distance units) +* :math:`\lambda` (unitless, between 0.0 and 1.0) * cutoff (distance units) The last coefficient is optional. If not specified, the global morse cutoff is @@ -338,9 +360,10 @@ These accelerated styles are part of the GPU, USER-INTEL, KOKKOS, USER-OMP and OPT packages, respectively. They are only enabled if LAMMPS was built with those packages. See the :doc:`Build package ` doc page for more info. -You can specify the accelerated styles explicitly in your input script -by including their suffix, or you can use the :doc:`-suffix command-line switch ` when you invoke LAMMPS, or you can use the -:doc:`suffix ` command in your input script. +You can specify the accelerated styles explicitly in your input script by +including their suffix, or you can use the :doc:`-suffix command-line switch +` when you invoke LAMMPS, or you can use the :doc:`suffix ` +command in your input script. See the :doc:`Speed packages ` doc page for more instructions on how to use the accelerated styles effectively. @@ -351,16 +374,16 @@ instructions on how to use the accelerated styles effectively. **Mixing, shift, tail correction, restart info**\ : -The different versions of the *lj/cut/soft* pair styles support mixing. For atom -type pairs I,J and I != J, the epsilon and sigma coefficients and cutoff -distance for these pair style can be mixed. The default mix value is -*geometric* for 12-6 styles. +The different versions of the *lj/cut/soft* pair styles support mixing. For +atom type pairs I,J and I != J, the :math:`\epsilon` and :math:`\sigma` +coefficients and cutoff distance for these pair style can be mixed. The default +mix value is *geometric* for 12-6 styles. -The mixing rule for epsilon and sigma for *lj/class2/soft* 9-6 potentials is to use the -*sixthpower* formulas. The :doc:`pair_modify mix ` setting is thus -ignored for class2 potentials for epsilon and sigma. However it is still -followed for mixing the cutoff distance. See the :doc:`pair_modify ` -command for details. +The mixing rule for epsilon and sigma for *lj/class2/soft* 9-6 potentials is to +use the *sixthpower* formulas. The :doc:`pair_modify mix ` setting +is thus ignored for class2 potentials for :math:`\epsilon` and +:math:`\sigma`. However it is still followed for mixing the cutoff distance. See +the :doc:`pair_modify ` command for details. The *morse/soft* pair style does not support mixing. Thus, coefficients for all LJ pairs must be specified explicitly. @@ -376,22 +399,25 @@ interaction. .. note:: - The analytical form of the tail corrections for energy and pressure used - in the *lj/cut/soft* potentials are approximate, being identical to that of the - corresponding non-soft potentials scaled by a factor lambda\^n. The errors due to - this approximation should be negligible. For example, for a cutoff of 2.5 sigma - this approximation leads to maximum relative errors in tail corrections of the - order of 1e-4 for energy and virial (alpha\_LJ = 0.5, n = 2). The error vanishes - when lambda approaches 0 or 1. Note that these are the errors affecting the - long-range tail (itself a correction to the interaction energy) which includes - other approximations, namely that the system is homogeneous (local density equal + The analytical form of the tail corrections for energy and pressure used in + the *lj/cut/soft* potentials are approximate, being identical to that of the + corresponding non-soft potentials scaled by a factor :math:`\lambda^n`. The + errors due to this approximation should be negligible. For example, for a + cutoff of :math:`2.5\sigma` this approximation leads to maximum relative + errors in tail corrections of the order of 1e-4 for energy and virial + (:math:`\alpha_\mathrm{LJ} = 0.5, n = 2`). The error vanishes when lambda + approaches 0 or 1. Note that these are the errors affecting the long-range + tail (itself a correction to the interaction energy) which includes other + approximations, namely that the system is homogeneous (local density equal the average density) beyond the cutoff. -The *morse/soft* pair style does not support the :doc:`pair_modify ` -tail option for adding long-range tail corrections to energy and pressure. +The *morse/soft* pair style does not support the :doc:`pair_modify +` tail option for adding long-range tail corrections to energy and +pressure. -All of these pair styles write information to :doc:`binary restart files `, so pair\_style and pair\_coeff commands do not need to be -specified in an input script that reads a restart file. +All of these pair styles write information to :doc:`binary restart files +`, so pair\_style and pair\_coeff commands do not need to be specified +in an input script that reads a restart file. ---------- diff --git a/doc/src/pair_nm.rst b/doc/src/pair_nm.rst index f8ae4f7a91..6d319c6d06 100644 --- a/doc/src/pair_nm.rst +++ b/doc/src/pair_nm.rst @@ -68,22 +68,25 @@ by :ref:`Clarke `, mainly used for ionic liquids. A site can represent a single atom or a united-atom site. The energy of an interaction has the following form: -.. image:: Eqs/pair_nm.jpg - :align: center +.. math:: -Rc is the cutoff. + E = \frac{E_0}{(n-m)} \left[ m \left(\frac{r_0}{r}\right)^n - n + \left(\frac{r_0}{r}\right)^m \right] \qquad r < r_c + +where :math:`r_c` is the cutoff. Style *nm/cut/coul/cut* adds a Coulombic pairwise interaction given by -.. image:: Eqs/pair_coulomb.jpg - :align: center +.. math:: + + E = \frac{C q_i q_j}{\epsilon r} \qquad r < r_c -where C is an energy-conversion constant, Qi and Qj are the charges on -the 2 atoms, and epsilon is the dielectric constant which can be set -by the :doc:`dielectric ` command. If one cutoff is -specified in the pair\_style command, it is used for both the NM and -Coulombic terms. If two cutoffs are specified, they are used as -cutoffs for the NM and Coulombic terms respectively. +where :math:`C` is an energy-conversion constant, :math:`q_i` and :math:`q_j` +are the charges on the 2 atoms, and epsilon is the dielectric constant which can +be set by the :doc:`dielectric ` command. If one cutoff is +specified in the pair\_style command, it is used for both the N-M and Coulombic +terms. If two cutoffs are specified, they are used as cutoffs for the N-M and +Coulombic terms respectively. Styles *nm/cut/coul/long* compute the same Coulombic interactions as style *nm/cut/coul/cut* except that an @@ -101,22 +104,22 @@ examples above, or in the data file or restart files read by the :doc:`read_data ` or :doc:`read_restart ` commands. -* E0 (energy units) -* r0 (distance units) -* n (unitless) -* m (unitless) +* :math:`E_0` (energy units) +* :math:`r_0` (distance units) +* :math:`n` (unitless) +* :math:`m` (unitless) * cutoff1 (distance units) * cutoff2 (distance units) The latter 2 coefficients are optional. If not specified, the global -NM and Coulombic cutoffs specified in the pair\_style command are used. -If only one cutoff is specified, it is used as the cutoff for both NM +N-M and Coulombic cutoffs specified in the pair\_style command are used. +If only one cutoff is specified, it is used as the cutoff for both N-M and Coulombic interactions for this type pair. If both coefficients -are specified, they are used as the NM and Coulombic cutoffs for this +are specified, they are used as the N-M and Coulombic cutoffs for this type pair. You cannot specify 2 cutoffs for style *nm*\ , since it has no Coulombic terms. -For *nm/cut/coul/long* only the NM cutoff can be specified since a +For *nm/cut/coul/long* only the N-M cutoff can be specified since a Coulombic cutoff cannot be specified for an individual I,J type pair. All type pairs use the same global Coulombic cutoff specified in the pair\_style command. @@ -140,7 +143,7 @@ the short-range portion of the long-range Coulombic interaction. All of the *nm* pair styles support the :doc:`pair_modify ` tail option for adding a long-range tail correction to the energy and -pressure for the NM portion of the pair interaction. +pressure for the N-M portion of the pair interaction. All of the *nm* pair styles write their information to :doc:`binary restart files `, so pair\_style and pair\_coeff commands do not need to be specified in an input script that reads a restart file. diff --git a/doc/src/pair_srp.rst b/doc/src/pair_srp.rst index a1138db382..822bd0dddb 100644 --- a/doc/src/pair_srp.rst +++ b/doc/src/pair_srp.rst @@ -56,19 +56,25 @@ Bonds of specified type *btype* interact with one another through a bond-pairwise potential, such that the force on bond *i* due to bond *j* is as follows -.. image:: Eqs/pair_srp1.jpg - :align: center +.. math:: -where *r* and *rij* are the distance and unit vector between the two -bonds. Note that *btype* can be specified as an asterisk "\*", which -case the interaction is applied to all bond types. The *mid* option -computes *r* and *rij* from the midpoint distance between bonds. The -*min* option computes *r* and *rij* from the minimum distance between -bonds. The force acting on a bond is mapped onto the two bond atoms -according to the lever rule, + F^{SRP}_{ij} & = C(1-r/r_c)\hat{r}_{ij} \qquad r < r_c + + +where *r* and :math:`\hat{r}_{ij}` are the distance and unit vector +between the two bonds. Note that *btype* can be specified as an +asterisk "\*", which case the interaction is applied to all bond types. +The *mid* option computes *r* and :math:`\hat{r}_{ij}` from the midpoint +distance between bonds. The *min* option computes *r* and +:math:`\hat{r}_{ij}` from the minimum distance between bonds. The force +acting on a bond is mapped onto the two bond atoms according to the +lever rule, + +.. math:: + + F_{i1}^{SRP} & = F^{SRP}_{ij}(L) \\ + F_{i2}^{SRP} & = F^{SRP}_{ij}(1-L) -.. image:: Eqs/pair_srp2.jpg - :align: center where *L* is the normalized distance from the atom to the point of closest approach of bond *i* and *j*\ . The *mid* option takes *L* as @@ -80,7 +86,7 @@ the data file or restart file read by the :doc:`read_data ` or :doc:`read_restart ` commands: * *C* (force units) -* *rc* (distance units) +* :math:`r_c` (distance units) The last coefficient is optional. If not specified, the global cutoff is used. @@ -114,7 +120,7 @@ Pair style *srp* turns off normalization of thermodynamic properties by particle number, as if the command :doc:`thermo_modify norm no ` had been issued. The pairwise energy associated with style *srp* is shifted to be zero -at the cutoff distance *rc*\ . +at the cutoff distance :math:`r_c`. ---------- @@ -127,7 +133,7 @@ This pair styles does not support mixing. This pair style does not support the :doc:`pair_modify ` shift option for the energy of the pair interaction. Note that as discussed above, the energy term is already shifted to be 0.0 at the -cutoff distance *rc*\ . +cutoff distance :math:`r_c`. The :doc:`pair_modify ` table option is not relevant for this pair style. diff --git a/doc/src/pair_sw.rst b/doc/src/pair_sw.rst index 425dcf1f16..2df9958ba1 100644 --- a/doc/src/pair_sw.rst +++ b/doc/src/pair_sw.rst @@ -39,12 +39,23 @@ Description The *sw* style computes a 3-body :ref:`Stillinger-Weber ` potential for the energy E of a system of atoms as -.. image:: Eqs/pair_sw.jpg - :align: center +.. math:: -where phi2 is a two-body term and phi3 is a three-body term. The -summations in the formula are over all neighbors J and K of atom I -within a cutoff distance = a\*sigma. + E & = \sum_i \sum_{j > i} \phi_2 (r_{ij}) + + \sum_i \sum_{j \neq i} \sum_{k > j} + \phi_3 (r_{ij}, r_{ik}, \theta_{ijk}) \\ + \phi_2(r_{ij}) & = A_{ij} \epsilon_{ij} \left[ B_{ij} (\frac{\sigma_{ij}}{r_{ij}})^{p_{ij}} - + (\frac{\sigma_{ij}}{r_{ij}})^{q_{ij}} \right] + \exp \left( \frac{\sigma_{ij}}{r_{ij} - a_{ij} \sigma_{ij}} \right) \\ + \phi_3(r_{ij},r_{ik},\theta_{ijk}) & = \lambda_{ijk} \epsilon_{ijk} \left[ \cos \theta_{ijk} - + \cos \theta_{0ijk} \right]^2 + \exp \left( \frac{\gamma_{ij} \sigma_{ij}}{r_{ij} - a_{ij} \sigma_{ij}} \right) + \exp \left( \frac{\gamma_{ik} \sigma_{ik}}{r_{ik} - a_{ik} \sigma_{ik}} \right) + + +where :math:`\phi_2` is a two-body term and :math:`\phi_3` is a +three-body term. The summations in the formula are over all neighbors J +and K of atom I within a cutoff distance :math:`a `\sigma`. Only a single pair\_coeff command is used with the *sw* style which specifies a Stillinger-Weber potential file with parameters for all @@ -86,24 +97,25 @@ and three-body coefficients in the formula above: * element 1 (the center atom in a 3-body interaction) * element 2 * element 3 -* epsilon (energy units) -* sigma (distance units) +* :math:`\epsilon` (energy units) +* :math:`\sigma` (distance units) * a -* lambda -* gamma -* costheta0 +* :math:`\lambda` +* :math:`\gamma` +* :math:`\cos\theta_0` * A * B * p * q * tol -The A, B, p, and q parameters are used only for two-body -interactions. The lambda and costheta0 parameters are used only for -three-body interactions. The epsilon, sigma and a parameters are used -for both two-body and three-body interactions. gamma is used only in the -three-body interactions, but is defined for pairs of atoms. -The non-annotated parameters are unitless. +The A, B, p, and q parameters are used only for two-body interactions. +The :math:`\lambda` and :math:`\cos\theta_0` parameters are used only +for three-body interactions. The :math:`\epsilon`, :math:`\sigma` and +*a* parameters are used for both two-body and three-body +interactions. :math:`\gamma` is used only in the three-body +interactions, but is defined for pairs of atoms. The non-annotated +parameters are unitless. LAMMPS introduces an additional performance-optimization parameter tol that is used for both two-body and three-body interactions. In the @@ -141,9 +153,9 @@ are usually defined by simple formulas involving two sets of pair-wise parameters, corresponding to the ij and ik pairs, where i is the center atom. The user must ensure that the correct combining rule is used to calculate the values of the three-body parameters for -alloys. Note also that the function phi3 contains two exponential +alloys. Note also that the function :math:`\phi_3` contains two exponential screening factors with parameter values from the ij pair and ik -pairs. So phi3 for a C atom bonded to a Si atom and a second C atom +pairs. So :math:`\phi_3` for a C atom bonded to a Si atom and a second C atom will depend on the three-body parameters for the CSiC entry, and also on the two-body parameters for the CCC and CSiSi entries. Since the order of the two neighbors is arbitrary, the three-body parameters for @@ -152,8 +164,8 @@ parameters for entries SiCC and CSiSi should also be the same. The parameters used only for two-body interactions (A, B, p, and q) in entries whose 2nd and 3rd element are different (e.g. SiCSi) are not used for anything and can be set to 0.0 if desired. -This is also true for the parameters in phi3 that are -taken from the ij and ik pairs (sigma, a, gamma) +This is also true for the parameters in :math:`\phi_3` that are +taken from the ij and ik pairs (:math:`\sigma`, *a*\ , :math:`\gamma`) ---------- diff --git a/doc/src/pair_tersoff.rst b/doc/src/pair_tersoff.rst index ab9d714499..f2e44d0362 100644 --- a/doc/src/pair_tersoff.rst +++ b/doc/src/pair_tersoff.rst @@ -50,12 +50,28 @@ Description The *tersoff* style computes a 3-body Tersoff potential :ref:`(Tersoff\_1) ` for the energy E of a system of atoms as -.. image:: Eqs/pair_tersoff_1.jpg - :align: center - -where f\_R is a two-body term and f\_A includes three-body interactions. -The summations in the formula are over all neighbors J and K of atom I -within a cutoff distance = R + D. +.. math:: + + E & = \frac{1}{2} \sum_i \sum_{j \neq i} V_{ij} \\ + V_{ij} & = f_C(r_{ij}) \left[ f_R(r_{ij}) + b_{ij} f_A(r_{ij}) \right] \\ + f_C(r) & = \left\{ \begin{array} {r@{\quad:\quad}l} + 1 & r < R - D \\ + \frac{1}{2} - \frac{1}{2} \sin \left( \frac{\pi}{2} \frac{r-R}{D} \right) & + R-D < r < R + D \\ + 0 & r > R + D + \end{array} \right. \\ + f_R(r) & = A \exp (-\lambda_1 r) \\ + f_A(r) & = -B \exp (-\lambda_2 r) \\ + b_{ij} & = \left( 1 + \beta^n {\zeta_{ij}}^n \right)^{-\frac{1}{2n}} \\ + \zeta_{ij} & = \sum_{k \neq i,j} f_C(r_{ik}) g(\theta_{ijk}) + \exp \left[ {\lambda_3}^m (r_{ij} - r_{ik})^m \right] \\ + g(\theta) & = \gamma_{ijk} \left( 1 + \frac{c^2}{d^2} - + \frac{c^2}{\left[ d^2 + (\cos \theta - \cos \theta_0)^2\right]} \right) + + +where :math:`f_R` is a two-body term and :math:`f_A` includes three-body +interactions. The summations in the formula are over all neighbors +J and K of atom I within a cutoff distance = R + D. The *tersoff/table* style uses tabulated forms for the two-body, environment and angular functions. Linear interpolation is performed @@ -104,22 +120,24 @@ above: * element 2 (the atom bonded to the center atom) * element 3 (the atom influencing the 1-2 bond in a bond-order sense) * m -* gamma -* lambda3 (1/distance units) +* :math:`\gamma` +* :math:`\lambda_3` (1/distance units) * c * d -* costheta0 (can be a value < -1 or > 1) +* :math:`\cos\theta_0` (can be a value < -1 or > 1) * n -* beta -* lambda2 (1/distance units) +* :math:`\beta` +* :math:`\lambda_2` (1/distance units) * B (energy units) * R (distance units) * D (distance units) -* lambda1 (1/distance units) +* :math:`\lambda_1` (1/distance units) * A (energy units) -The n, beta, lambda2, B, lambda1, and A parameters are only used for -two-body interactions. The m, gamma, lambda3, c, d, and costheta0 +The n, :math:`\beta`, :math:`\lambda_2`, B, :math:`\lambda_1`, and A +parameters are only used for +two-body interactions. The m, :math:`\gamma`, :math:`\lambda_3`, c, d, +and :math:`\cos\theta_0` parameters are only used for three-body interactions. The R and D parameters are used for both two-body and three-body interactions. The non-annotated parameters are unitless. The value of m must be 3 or 1. @@ -149,7 +167,8 @@ SiCC entry. The parameters used for a particular three-body interaction come from the entry with the corresponding three elements. The parameters used only for two-body interactions -(n, beta, lambda2, B, lambda1, and A) in entries whose 2nd and 3rd +(n, :math:`\beta`, :math:`\lambda_2`, B, :math:`\lambda_1`, and A) +in entries whose 2nd and 3rd element are different (e.g. SiCSi) are not used for anything and can be set to 0.0 if desired. @@ -165,16 +184,24 @@ it reduces to the form of :ref:`Albe et al. ` when beta = 1 and m = 1. Note that in the current Tersoff implementation in LAMMPS, m must be specified as either 3 or 1. Tersoff used a slightly different but equivalent form for alloys, which we will refer to as Tersoff\_2 -potential :ref:`(Tersoff\_2) `. The *tersoff/table* style implements +potential :ref:`(Tersoff\_2) `. +The *tersoff/table* style implements Tersoff\_2 parameterization only. LAMMPS parameter values for Tersoff\_2 can be obtained as follows: -gamma\_ijk = omega\_ik, lambda3 = 0 and the value of +:math:`\gamma_{ijk} = \omega_{ik}`, :math:`\lambda_3 = 0` and the value of m has no effect. The parameters for species i and j can be calculated using the Tersoff\_2 mixing rules: -.. image:: Eqs/pair_tersoff_2.jpg - :align: center +.. math:: + + \lambda_1^{i,j} & = \frac{1}{2}(\lambda_1^i + \lambda_1^j)\\ + \lambda_2^{i,j} & = \frac{1}{2}(\lambda_2^i + \lambda_2^j)\\ + A_{i,j} & = (A_{i}A_{j})^{1/2}\\ + B_{i,j} & = \chi_{ij}(B_{i}B_{j})^{1/2}\\ + R_{i,j} & = (R_{i}R_{j})^{1/2}\\ + S_{i,j} & = (S_{i}S_{j})^{1/2} + Tersoff\_2 parameters R and S must be converted to the LAMMPS parameters R and D (R is different in both forms), using the following diff --git a/doc/src/pair_tersoff_mod.rst b/doc/src/pair_tersoff_mod.rst index dbe0b4d95b..94cc9300ed 100644 --- a/doc/src/pair_tersoff_mod.rst +++ b/doc/src/pair_tersoff_mod.rst @@ -49,21 +49,40 @@ potential :ref:`(Tersoff\_1) `, :ref:`(Tersoff\_2) ` wit modified cutoff function and angular-dependent term, giving the energy E of a system of atoms as -.. image:: Eqs/pair_tersoff_mod.jpg - :align: center - -where f\_R is a two-body term and f\_A includes three-body interactions. +.. math:: + + E & = \frac{1}{2} \sum_i \sum_{j \neq i} V_{ij} \\ + V_{ij} & = f_C(r_{ij}) \left[ f_R(r_{ij}) + b_{ij} f_A(r_{ij}) \right] \\ + f_C(r) & = \left\{ \begin{array} {r@{\quad:\quad}l} + 1 & r < R - D \\ + \frac{1}{2} - \frac{9}{16} \sin \left( \frac{\pi}{2} \frac{r-R}{D} \right) - \frac{1}{16} \sin \left( \frac{3\pi}{2} \frac{r-R}{D} \right) & + R-D < r < R + D \\ + 0 & r > R + D + \end{array} \right. \\ + f_R(r) & = A \exp (-\lambda_1 r) \\ + f_A(r) & = -B \exp (-\lambda_2 r) \\ + b_{ij} & = \left( 1 + {\zeta_{ij}}^\eta \right)^{-\frac{1}{2n}} \\ + \zeta_{ij} & = \sum_{k \neq i,j} f_C(r_{ik}) g(\theta_{ijk}) + \exp \left[ \alpha (r_{ij} - r_{ik})^\beta \right] \\ + g(\theta) & = c_1 + g_o(\theta) g_a(\theta) \\ + g_o(\theta) & = \frac{c_2 (h - \cos \theta)^2}{c_3 + (h - \cos \theta)^2} \\ + g_a(\theta) & = 1 + c_4 \exp \left[ -c_5 (h - \cos \theta)^2 \right] \\ + + +where :math:`f_R` is a two-body term and :math:`f_A` includes three-body interactions. The summations in the formula are over all neighbors J and K of atom I within a cutoff distance = R + D. The *tersoff/mod/c* style differs from *tersoff/mod* only in the formulation of the V\_ij term, where it contains an additional c0 term. -.. image:: Eqs/pair_tersoff_mod_c.jpg - :align: center +.. math:: + + V_{ij} & = f_C(r_{ij}) \left[ f_R(r_{ij}) + b_{ij} f_A(r_{ij}) + c_0 \right] + -The modified cutoff function f\_C proposed by :ref:`(Murty) ` and +The modified cutoff function :math:`f_C` proposed by :ref:`(Murty) ` and having a continuous second-order differential is employed. The -angular-dependent term g(theta) was modified to increase the +angular-dependent term :math:`g(\theta)` was modified to increase the flexibility of the potential. The *tersoff/mod* potential is fitted to both the elastic constants @@ -105,30 +124,30 @@ not blank or comments (starting with #) define parameters for a triplet of elements. The parameters in a single entry correspond to coefficients in the formulae above: -element 1 (the center atom in a 3-body interaction) -element 2 (the atom bonded to the center atom) -element 3 (the atom influencing the 1-2 bond in a bond-order sense) -beta -alpha -h -eta -beta\_ters = 1 (dummy parameter) -lambda2 (1/distance units) -B (energy units) -R (distance units) -D (distance units) -lambda1 (1/distance units) -A (energy units) -n -c1 -c2 -c3 -c4 -c5 -c0 (energy units, tersoff/mod/c only):ul - -The n, eta, lambda2, B, lambda1, and A parameters are only used for -two-body interactions. The beta, alpha, c1, c2, c3, c4, c5, h +* element 1 (the center atom in a 3-body interaction) +* element 2 (the atom bonded to the center atom) +* element 3 (the atom influencing the 1-2 bond in a bond-order sense) +* :math:`\beta` +* :math:`\alpha` +* h +* :math:`\eta` +* :math:`\beta_{ters}` = 1 (dummy parameter) +* :math:`\lambda_2` (1/distance units) +* B (energy units) +* R (distance units) +* D (distance units) +* :math:`\lambda_1` (1/distance units) +* A (energy units) +* n +* c1 +* c2 +* c3 +* c4 +* c5 +* c0 (energy units, tersoff/mod/c only):ul + +The n, :math:`\eta`, :math:`\lambda_2`, B, :math:`\lambda_1`, and A parameters are only used for +two-body interactions. The :math:`\beta`, :math:`\alpha`, c1, c2, c3, c4, c5, h parameters are only used for three-body interactions. The R and D parameters are used for both two-body and three-body interactions. The c0 term applies to *tersoff/mod/c* only. The non-annotated diff --git a/doc/src/pair_tersoff_zbl.rst b/doc/src/pair_tersoff_zbl.rst index 2ad3be9d7d..e60de64f28 100644 --- a/doc/src/pair_tersoff_zbl.rst +++ b/doc/src/pair_tersoff_zbl.rst @@ -38,26 +38,53 @@ based on a Coulomb potential and the Ziegler-Biersack-Littmark universal screening function :ref:`(ZBL) `, giving the energy E of a system of atoms as -.. image:: Eqs/pair_tersoff_zbl.jpg - :align: center - -The f\_F term is a fermi-like function used to smoothly connect the ZBL +.. math:: + + E & = \frac{1}{2} \sum_i \sum_{j \neq i} V_{ij} \\ + V_{ij} & = (1 - f_F(r_{ij})) V^{ZBL}_{ij} + f_F(r_{ij}) V^{Tersoff}_{ij} \\ + f_F(r_{ij}) & = \frac{1}{1 + e^{-A_F(r_{ij} - r_C)}}\\ + \\ + \\ + V^{ZBL}_{ij} & = \frac{1}{4\pi\epsilon_0} \frac{Z_1 Z_2 \,e^2}{r_{ij}} \phi(r_{ij}/a) \\ + a & = \frac{0.8854\,a_0}{Z_{1}^{0.23} + Z_{2}^{0.23}}\\ + \phi(x) & = 0.1818e^{-3.2x} + 0.5099e^{-0.9423x} + 0.2802e^{-0.4029x} + 0.02817e^{-0.2016x}\\ + \\ + \\ + V^{Tersoff}_{ij} & = f_C(r_{ij}) \left[ f_R(r_{ij}) + b_{ij} f_A(r_{ij}) \right] \\ + f_C(r) & = \left\{ \begin{array} {r@{\quad:\quad}l} + 1 & r < R - D \\ + \frac{1}{2} - \frac{1}{2} \sin \left( \frac{\pi}{2} \frac{r-R}{D} \right) & + R-D < r < R + D \\ + 0 & r > R + D + \end{array} \right. \\ + f_R(r) & = A \exp (-\lambda_1 r) \\ + f_A(r) & = -B \exp (-\lambda_2 r) \\ + b_{ij} & = \left( 1 + \beta^n {\zeta_{ij}}^n \right)^{-\frac{1}{2n}} \\ + \zeta_{ij} & = \sum_{k \neq i,j} f_C(r_{ik}) g(\theta_{ijk}) + \exp \left[ {\lambda_3}^m (r_{ij} - r_{ik})^m \right] \\ + g(\theta) & = \gamma_{ijk} \left( 1 + \frac{c^2}{d^2} - + \frac{c^2}{\left[ d^2 + (\cos \theta - \cos \theta_0)^2\right]} \right) + + +The :math:`f_F` term is a fermi-like function used to smoothly connect the ZBL repulsive potential with the Tersoff potential. There are 2 -parameters used to adjust it: A\_F and r\_C. A\_F controls how "sharp" -the transition is between the two, and r\_C is essentially the cutoff +parameters used to adjust it: :math:`A_F` and :math:`r_C`. :math:`A_F` +controls how "sharp" +the transition is between the two, and :math:`r_C` is essentially the cutoff for the ZBL potential. For the ZBL portion, there are two terms. The first is the Coulomb repulsive term, with Z1, Z2 as the number of protons in each nucleus, -e as the electron charge (1 for metal and real units) and epsilon0 as -the permittivity of vacuum. The second part is the ZBL universal +e as the electron charge (1 for metal and real units) and :math:`\epsilon_0` +as the permittivity of vacuum. The second part is the ZBL universal screening function, with a0 being the Bohr radius (typically 0.529 Angstroms), and the remainder of the coefficients provided by the original paper. This screening function should be applicable to most systems. However, it is only accurate for small separations (i.e. less than 1 Angstrom). -For the Tersoff portion, f\_R is a two-body term and f\_A includes +For the Tersoff portion, :math:`f_R` is a two-body term and :math:`f_A` +includes three-body interactions. The summations in the formula are over all neighbors J and K of atom I within a cutoff distance = R + D. @@ -102,29 +129,32 @@ in the formula above: * element 2 (the atom bonded to the center atom) * element 3 (the atom influencing the 1-2 bond in a bond-order sense) * m -* gamma -* lambda3 (1/distance units) +* :math:`\gamma` +* :math:`\lambda_3` (1/distance units) * c * d -* costheta0 (can be a value < -1 or > 1) +* :math:`\cos\theta_0` (can be a value < -1 or > 1) * n -* beta -* lambda2 (1/distance units) +* :math:`\beta` +* :math:`\lambda_2` (1/distance units) * B (energy units) * R (distance units) * D (distance units) -* lambda1 (1/distance units) +* :math:`\lambda_1` (1/distance units) * A (energy units) -* Z\_i -* Z\_j +* :math:`Z_i` +* :math:`Z_j` * ZBLcut (distance units) * ZBLexpscale (1/distance units) -The n, beta, lambda2, B, lambda1, and A parameters are only used for -two-body interactions. The m, gamma, lambda3, c, d, and costheta0 +The n, :math:`\beta`, :math:`\lambda_2`, B, :math:`\lambda_1`, and A +parameters are only used for +two-body interactions. The m, :math:`\gamma`, :math:`\lambda_3`, c, d, +and :math:`\cos\theta_0` parameters are only used for three-body interactions. The R and D parameters are used for both two-body and three-body interactions. The -Z\_i,Z\_j, ZBLcut, ZBLexpscale parameters are used in the ZBL repulsive +:math:`Z_i`, :math:`Z_j`, ZBLcut, ZBLexpscale parameters are used in the +ZBL repulsive portion of the potential and in the Fermi-like function. The non-annotated parameters are unitless. The value of m must be 3 or 1. @@ -153,7 +183,8 @@ SiCC entry. The parameters used for a particular three-body interaction come from the entry with the corresponding three elements. The parameters used only for two-body interactions -(n, beta, lambda2, B, lambda1, and A) in entries whose 2nd and 3rd +(n, :math:`\beta`, :math:`\lambda_2`, B, :math:`\lambda_1`, and A) +in entries whose 2nd and 3rd element are different (e.g. SiCSi) are not used for anything and can be set to 0.0 if desired. @@ -172,12 +203,19 @@ different but equivalent form for alloys, which we will refer to as Tersoff\_2 potential :ref:`(Tersoff\_2) `. LAMMPS parameter values for Tersoff\_2 can be obtained as follows: -gamma = omega\_ijk, lambda3 = 0 and the value of +:math:`\gamma = \omega_{ijk}`, :math:`\lambda_3 = 0` and the value of m has no effect. The parameters for species i and j can be calculated using the Tersoff\_2 mixing rules: -.. image:: Eqs/pair_tersoff_2.jpg - :align: center +.. math:: + + \lambda_1^{i,j} & = \frac{1}{2}(\lambda_1^i + \lambda_1^j)\\ + \lambda_2^{i,j} & = \frac{1}{2}(\lambda_2^i + \lambda_2^j)\\ + A_{i,j} & = (A_{i}A_{j})^{1/2}\\ + B_{i,j} & = \chi_{ij}(B_{i}B_{j})^{1/2}\\ + R_{i,j} & = (R_{i}R_{j})^{1/2}\\ + S_{i,j} & = (S_{i}S_{j})^{1/2}\\ + Tersoff\_2 parameters R and S must be converted to the LAMMPS parameters R and D (R is different in both forms), using the following diff --git a/doc/src/pair_ufm.rst b/doc/src/pair_ufm.rst index 3bb4e83a0e..c8a7e42743 100644 --- a/doc/src/pair_ufm.rst +++ b/doc/src/pair_ufm.rst @@ -42,10 +42,16 @@ Description Style *ufm* computes pairwise interactions using the Uhlenbeck-Ford model (UFM) potential :ref:`(Paula Leite2016) ` which is given by -.. image:: Eqs/pair_ufm.jpg - :align: center +.. math:: -where rc is the cutoff, sigma is a distance-scale and epsilon is an energy-scale, i.e., a product of Boltzmann constant kB, temperature T and the Uhlenbeck-Ford p-parameter which is responsible + E & = -\varepsilon\, \ln{\left[1-\exp{\left(-r^{2}/\sigma^{2}\right)}\right]} \qquad r < r_c \\ + \varepsilon & = p\,k_B\,T + + +where :math:`r_c` is the cutoff, :math:`\sigma` is a distance-scale and +:math:`\epsilon` is an energy-scale, i.e., a product of Boltzmann constant +:math:`k_B`, temperature *T* and the Uhlenbeck-Ford p-parameter which +is responsible to control the softness of the interactions :ref:`(Paula Leite2017) `. This model is useful as a reference system for fluid-phase free-energy calculations :ref:`(Paula Leite2016) `. @@ -55,8 +61,8 @@ or in the data file or restart files read by the :doc:`read_data ` or :doc:`read_restart ` commands, or by mixing as described below: -* epsilon (energy units) -* sigma (distance units) +* :math:`\epsilon` (energy units) +* :math:`\sigma` (distance units) * cutoff (distance units) The last coefficient is optional. If not specified, the global *ufm* @@ -76,7 +82,13 @@ of a run: .. note:: - The thermodynamic integration procedure can be performed with this potential using :doc:`fix adapt `. This command will rescale the force on each atom by varying a scale variable, which always starts with value 1.0. The syntax is the same described above, however, changing epsilon to scale. A detailed explanation of how to use this command and perform nonequilibrium thermodynamic integration in LAMMPS is given in the paper by :ref:`(Freitas) `. + The thermodynamic integration procedure can be performed with this + potential using :doc:`fix adapt `. This command will + rescale the force on each atom by varying a scale variable, which + always starts with value 1.0. The syntax is the same described above, + however, changing epsilon to scale. A detailed explanation of how to + use this command and perform nonequilibrium thermodynamic integration + in LAMMPS is given in the paper by :ref:`(Freitas) `. ---------- diff --git a/doc/src/pair_vashishta.rst b/doc/src/pair_vashishta.rst index de29985f56..2dde0482be 100644 --- a/doc/src/pair_vashishta.rst +++ b/doc/src/pair_vashishta.rst @@ -63,16 +63,21 @@ including SiO2 :ref:`Vashishta1990 `, SiC The potential for the energy U of a system of atoms is -.. image:: Eqs/pair_vashishta.jpg - :align: center +.. math:: + + U & = \sum_i^N \sum_{j > i}^N U_{ij}^{(2)} (r_{ij}) + \sum_i^N \sum_{j \neq i}^N \sum_{k > j, k \neq i}^N U_{ijk}^{(3)} (r_{ij}, r_{ik}, \theta_{ijk}) \\ + U_{ij}^{(2)} (r) & = \frac{H_{ij}}{r^{\eta_{ij}}} + \frac{Z_i Z_j}{r}\exp(-r/\lambda_{1,ij}) - \frac{D_{ij}}{r^4}\exp(-r/\lambda_{4,ij}) - \frac{W_{ij}}{r^6}, r < r_{c,{ij}} \\ + U_{ijk}^{(3)}(r_{ij},r_{ik},\theta_{ijk}) & = B_{ijk} \frac{\left[ \cos \theta_{ijk} - \cos \theta_{0ijk} \right]^2} {1+C_{ijk}\left[ \cos \theta_{ijk} - \cos \theta_{0ijk} \right]^2} \times \\ + & \exp \left( \frac{\gamma_{ij}}{r_{ij} - r_{0,ij}} \right) \exp \left( \frac{\gamma_{ik}}{r_{ik} - r_{0,ik}} \right), r_{ij} < r_{0,ij}, r_{ik} < r_{0,ik} + where we follow the notation used in :ref:`Branicio2009 `. -U2 is a two-body term and U3 is a three-body term. The +:math:`U^2` is a two-body term and U3 is a three-body term. The summation over two-body terms is over all neighbors J within -a cutoff distance = *rc*\ . The twobody terms are shifted and +a cutoff distance = :math:`r_c`. The twobody terms are shifted and tilted by a linear function so that the energy and force are -both zero at *rc*\ . The summation over three-body terms -is over all neighbors J and K within a cut-off distance = *r0*\ , +both zero at :math:`r_c`. The summation over three-body terms +is over all neighbors *i* and *k* within a cut-off distance :math:`= r_0`, where the exponential screening function becomes zero. The *vashishta* style computes these formulas analytically. The @@ -126,20 +131,20 @@ and three-body coefficients in the formulae above: * element 1 (the center atom in a 3-body interaction) * element 2 * element 3 -* H (energy units) -* eta -* Zi (electron charge units) -* Zj (electron charge units) -* lambda1 (distance units) -* D (energy units) -* lambda4 (distance units) -* W (energy units) -* rc (distance units) -* B (energy units) -* gamma -* r0 (distance units) -* C -* costheta0 +* *H* (energy units) +* :math:`\eta` +* :math:`Z_i` (electron charge units) +* :math:`Z_j` (electron charge units) +* :math:`\lambda_1` (distance units) +* *D* (energy units) +* :math:`\lambda_4` (distance units) +* *W* (energy units) +* :math:`r_c` (distance units) +* *B* (energy units) +* :math:`\gamma` +* :math:`r_0` (distance units) +* *C* +* :math:`\cos\theta_0` The non-annotated parameters are unitless. The Vashishta potential file must contain entries for all the elements listed in the @@ -159,12 +164,14 @@ unambiguous, general, and simple to code, LAMMPS uses a slightly confusing method for specifying parameters. All parameters are divided into two classes: two-body and three-body. Two-body and three-body parameters are handled differently, as described below. -The two-body parameters are H, eta, lambda1, D, lambda4, W, rc, gamma, -and r0. They appear in the above formulae with two subscripts. The -parameters Zi and Zj are also classified as two-body parameters, even -though they only have 1 subscript. The three-body parameters are B, -C, costheta0. They appear in the above formulae with three -subscripts. Two-body and three-body parameters are handled +The two-body parameters are *H*\ , :math:`\eta`, :math:`\lambda_1`, +*D*\ , :math:`\lambda_4`, *W*, :math:`r_c`, :math:`\gamma`, +and :math:`r_0`. They appear in the above formulae with two subscripts. +The parameters :math:`Z_i` and :math:`Z_j` are also classified +as two-body parameters, even +though they only have 1 subscript. The three-body parameters are *B*\ , +*C*\ , :math:`\cos\theta_0`. They appear in the above formulae with +three subscripts. Two-body and three-body parameters are handled differently, as described below. The first element in each entry is the center atom in a three-body @@ -184,7 +191,8 @@ ensure that these values are equal. Two-body parameters appearing in entries where the 2nd and 3rd elements are different are stored but never used. It is good practice to enter zero for these values. Note that the three-body function U3 above contains the two-body parameters -gamma and r0. So U3 for a central C atom bonded to an Si atom and a +:math:`\gamma` and :math:`r_0`. So U3 for a central C atom bonded to +an Si atom and a second C atom will take three-body parameters from the CSiC entry, but two-body parameters from the CCC and CSiSi entries. diff --git a/doc/src/pair_yukawa.rst b/doc/src/pair_yukawa.rst index c3a8e9fc71..b7cb6818d2 100644 --- a/doc/src/pair_yukawa.rst +++ b/doc/src/pair_yukawa.rst @@ -38,10 +38,12 @@ Description Style *yukawa* computes pairwise interactions with the formula -.. image:: Eqs/pair_yukawa.jpg - :align: center +.. math:: -Rc is the cutoff. + E = A \frac{e^{- \kappa r}}{r} \qquad r < r_c + + +:math:`r_c` is the cutoff. The following coefficients must be defined for each pair of atoms types via the :doc:`pair_coeff ` command as in the examples diff --git a/doc/src/pair_yukawa_colloid.rst b/doc/src/pair_yukawa_colloid.rst index 76bf010fb9..2c337bdb94 100644 --- a/doc/src/pair_yukawa_colloid.rst +++ b/doc/src/pair_yukawa_colloid.rst @@ -35,11 +35,13 @@ Description Style *yukawa/colloid* computes pairwise interactions with the formula -.. image:: Eqs/pair_yukawa_colloid.jpg - :align: center +.. math:: -where Ri and Rj are the radii of the two particles and Rc is the -cutoff. + E = \frac{A}{\kappa} e^{- \kappa (r - (r_i + r_j))} \qquad r < r_c + + +where :math:`r_i` and :math:`r_j` are the radii of the two particles +and :math:`r_c` is the cutoff. In contrast to :doc:`pair_style yukawa `, this functional form arises from the Coulombic interaction between two colloid @@ -49,7 +51,7 @@ theory. :doc:`Pair\_style yukawa ` is a screened Coulombic potential between two point-charges and uses no such approximation. This potential applies to nearby particle pairs for which the Derjagin -approximation holds, meaning h << Ri + Rj, where h is the +approximation holds, meaning :math:`h << r_i + r_j`, where *h* is the surface-to-surface separation of the two particles. When used in combination with :doc:`pair_style colloid `, @@ -72,17 +74,17 @@ used in :doc:`pair_style yukawa `. For low surface potentials, i.e. less than about 25 mV, A can be written as: -.. parsed-literal:: +.. math:: - A = 2 \* PI \* R\*eps\*eps0 \* kappa \* psi\^2 + A = 2 \pi R\varepsilon\varepsilon_0 \kappa \psi^2 where -* R = colloid radius (distance units) -* eps0 = permittivity of free space (charge\^2/energy/distance units) -* eps = relative permittivity of fluid medium (dimensionless) -* kappa = inverse screening length (1/distance units) -* psi = surface potential (energy/charge units) +* *R* = colloid radius (distance units) +* :math:`\varepsilon_0` = permittivity of free space (charge\^2/energy/distance units) +* :math:`\varepsilon` = relative permittivity of fluid medium (dimensionless) +* :math:`\kappa` = inverse screening length (1/distance units) +* :math:`\psi` = surface potential (energy/charge units) The last coefficient is optional. If not specified, the global yukawa/colloid cutoff is used. diff --git a/doc/src/pair_zbl.rst b/doc/src/pair_zbl.rst index 8e34341172..bffcf9fbda 100644 --- a/doc/src/pair_zbl.rst +++ b/doc/src/pair_zbl.rst @@ -43,12 +43,16 @@ that ramps the energy, force, and curvature smoothly to zero between an inner and outer cutoff. The potential energy due to a pair of atoms at a distance r\_ij is given by: -.. image:: Eqs/pair_zbl.jpg - :align: center +.. math:: -where e is the electron charge, epsilon\_0 is the electrical -permittivity of vacuum, and Z\_i and Z\_j are the nuclear charges of the -two atoms. The switching function S(r) is identical to that used by + E^{ZBL}_{ij} & = \frac{1}{4\pi\epsilon_0} \frac{Z_i Z_j \,e^2}{r_{ij}} \phi(r_{ij}/a)+ S(r_{ij})\\ + a & = \frac{0.46850}{Z_{i}^{0.23} + Z_{j}^{0.23}}\\ + \phi(x) & = 0.18175e^{-3.19980x} + 0.50986e^{-0.94229x} + 0.28022e^{-0.40290x} + 0.02817e^{-0.20162x}\\ + +where *e* is the electron charge, :math:`\epsilon_0` is the electrical +permittivity of vacuum, and :math:`Z_i` and :math:`Z_j` are the nuclear +charges of the +two atoms. The switching function :math:`S(r)` is identical to that used by :doc:`pair_style lj/gromacs `. Here, the inner and outer cutoff are the same for all pairs of atom types. @@ -56,16 +60,17 @@ The following coefficients must be defined for each pair of atom types via the :doc:`pair_coeff ` command as in the examples above, or in the LAMMPS data file. -* Z\_i (atomic number for first atom type, e.g. 13.0 for aluminum) +* :math:`Z_i` (atomic number for first atom type, e.g. 13.0 for aluminum) -* Z\_j (ditto for second atom type) +* :math:`Z_j` (ditto for second atom type) -The values of Z\_i and Z\_j are normally equal to the atomic +The values of :math:`Z_i` and :math:`Z_j` are normally equal to the atomic numbers of the two atom types. Thus, the user may optionally -specify only the coefficients for each I==I pair, and rely +specify only the coefficients for each :math:`i==i` pair, and rely on the obvious mixing rule for cross interactions (see below). -Note that when I==I it is required that Z\_i == Z\_j. When used -with :doc:`hybrid/overlay ` and pairs are assigned +Note that when :math:`i==i` it is required that :math:`Z_i == Z_j`. +When used with :doc:`hybrid/overlay ` and pairs are +assigned to more than one sub-style, the mixing rule is not used and each pair of types interacting with the ZBL sub-style must be included in a pair\_coeff command. @@ -108,9 +113,11 @@ instructions on how to use the accelerated styles effectively. **Mixing, shift, table, tail correction, restart, rRESPA info**\ : -For atom type pairs I,J and I != J, the Z\_i and Z\_j coefficients -can be mixed by taking Z\_i and Z\_j from the values specified for -I == I and J == J cases. When used +For atom type pairs *i,j* and :math:`i \neq i`, the :math:`Z_i` and +:math:`Z_j` coefficients +can be mixed by taking :math:`Z_i` and :math:`Z_j` from the values +specified for +:math:`i == i` and :math:`j == j` cases. When used with :doc:`hybrid/overlay ` and pairs are assigned to more than one sub-style, the mixing rule is not used and each pair of types interacting with the ZBL sub-style diff --git a/doc/src/set.rst b/doc/src/set.rst index 8214ce8ba9..c633587b25 100644 --- a/doc/src/set.rst +++ b/doc/src/set.rst @@ -235,7 +235,7 @@ that a particular atom is changed or not changed, regardless of how many processors are being used. This keyword does not allow use of an atom-style variable. -Keywords *type/ratio* and *type/subset" also set the atom type for a +Keywords *type/ratio* and *type/subset* also set the atom type for a fraction of the selected atoms. The actual number of atoms changed will be exactly the requested number. For *type/ratio* the specified fraction (0 <= *fraction* <= 1) determines the number. For diff --git a/examples/USER/plumed/log.27Nov18.peptide-plumed.g++.1 b/examples/USER/plumed/log.4Feb20.peptide-plumed.g++.1 similarity index 82% rename from examples/USER/plumed/log.27Nov18.peptide-plumed.g++.1 rename to examples/USER/plumed/log.4Feb20.peptide-plumed.g++.1 index eb67b96fce..fb77bee0cc 100644 --- a/examples/USER/plumed/log.27Nov18.peptide-plumed.g++.1 +++ b/examples/USER/plumed/log.4Feb20.peptide-plumed.g++.1 @@ -1,5 +1,4 @@ -LAMMPS (27 Nov 2018) - using 1 OpenMP thread(s) per MPI task +LAMMPS (4 Feb 2020) # Solvated 5-mer peptide units real @@ -39,6 +38,8 @@ read_data data.peptide 7 = max # of 1-3 neighbors 14 = max # of 1-4 neighbors 18 = max # of special neighbors + special bonds CPU = 0.000809431 secs + read_data CPU = 0.0102327 secs neighbor 2.0 bin neigh_modify delay 5 @@ -66,6 +67,7 @@ fix 4 all shake 0.0001 10 100 b 4 6 8 10 12 14 18 a 31 6 = # of size 3 clusters 3 = # of size 4 clusters 640 = # of frozen angles + find clusters CPU = 0.000631809 secs #dump 1 colvar custom 1 dump.colvar.lammpstrj id xu yu zu fx fy fz #dump_modify 1 sort id @@ -77,13 +79,13 @@ variable pe equal pe run 101 PPPM initialization ... - using 12-bit tables for long-range coulomb (src/kspace.cpp:321) + using 12-bit tables for long-range coulomb (src/kspace.cpp:332) G vector (1/distance) = 0.268725 grid = 15 15 15 stencil order = 5 estimated absolute RMS force accuracy = 0.0228209 estimated relative force accuracy = 6.87243e-05 - using double precision FFTs + using double precision FFTW3 3d grid and FFT values/proc = 10648 3375 Neighbor list info ... update every 1 steps, delay 5 steps, check yes @@ -106,7 +108,7 @@ SHAKE stats (type/ave/delta) on step 0 14 0.96 0 18 0.957206 4.37979e-05 31 104.519 0.00396029 -Per MPI rank memory allocation (min/avg/max) = 18.74 | 18.74 | 18.74 Mbytes +Per MPI rank memory allocation (min/avg/max) = 19.07 | 19.07 | 19.07 Mbytes Step Temp TotEng PotEng KinEng E_pair E_bond f_2 0 282.10052 -5237.458 -6372.3766 1134.9186 -6442.768 16.557152 0 10 276.9783 -5234.3057 -6348.6171 1114.3114 -6421.6171 17.024361 0.47785504 @@ -129,22 +131,22 @@ SHAKE stats (type/ave/delta) on step 100 31 104.52 0.000760401 100 270.40648 -5234.9604 -6322.8327 1087.8723 -6417.73 19.666404 0.0094784372 101 270.99811 -5235.8295 -6326.082 1090.2525 -6418.8974 17.285816 0.086681332 -Loop time of 2.73445 on 1 procs for 101 steps with 2004 atoms +Loop time of 2.69839 on 1 procs for 101 steps with 2004 atoms -Performance: 6.383 ns/day, 3.760 hours/ns, 36.936 timesteps/s -99.7% CPU use with 1 MPI tasks x 1 OpenMP threads +Performance: 6.468 ns/day, 3.711 hours/ns, 37.430 timesteps/s +99.7% CPU use with 1 MPI tasks x no OpenMP threads MPI task timing breakdown: Section | min time | avg time | max time |%varavg| %total --------------------------------------------------------------- -Pair | 2.2617 | 2.2617 | 2.2617 | 0.0 | 82.71 -Bond | 0.0044148 | 0.0044148 | 0.0044148 | 0.0 | 0.16 -Kspace | 0.17883 | 0.17883 | 0.17883 | 0.0 | 6.54 -Neigh | 0.23945 | 0.23945 | 0.23945 | 0.0 | 8.76 -Comm | 0.011672 | 0.011672 | 0.011672 | 0.0 | 0.43 -Output | 0.00028348 | 0.00028348 | 0.00028348 | 0.0 | 0.01 -Modify | 0.0365 | 0.0365 | 0.0365 | 0.0 | 1.33 -Other | | 0.001611 | | | 0.06 +Pair | 2.2853 | 2.2853 | 2.2853 | 0.0 | 84.69 +Bond | 0.0065637 | 0.0065637 | 0.0065637 | 0.0 | 0.24 +Kspace | 0.14949 | 0.14949 | 0.14949 | 0.0 | 5.54 +Neigh | 0.1938 | 0.1938 | 0.1938 | 0.0 | 7.18 +Comm | 0.0096588 | 0.0096588 | 0.0096588 | 0.0 | 0.36 +Output | 0.00039172 | 0.00039172 | 0.00039172 | 0.0 | 0.01 +Modify | 0.050643 | 0.050643 | 0.050643 | 0.0 | 1.88 +Other | | 0.00258 | | | 0.10 Nlocal: 2004 ave 2004 max 2004 min Histogram: 1 0 0 0 0 0 0 0 0 0 diff --git a/examples/USER/plumed/log.27Nov18.peptide-plumed.g++.4 b/examples/USER/plumed/log.4Feb20.peptide-plumed.g++.4 similarity index 82% rename from examples/USER/plumed/log.27Nov18.peptide-plumed.g++.4 rename to examples/USER/plumed/log.4Feb20.peptide-plumed.g++.4 index 72b851c2ff..1bbbed6cd8 100644 --- a/examples/USER/plumed/log.27Nov18.peptide-plumed.g++.4 +++ b/examples/USER/plumed/log.4Feb20.peptide-plumed.g++.4 @@ -1,5 +1,4 @@ -LAMMPS (27 Nov 2018) - using 1 OpenMP thread(s) per MPI task +LAMMPS (4 Feb 2020) # Solvated 5-mer peptide units real @@ -39,6 +38,8 @@ read_data data.peptide 7 = max # of 1-3 neighbors 14 = max # of 1-4 neighbors 18 = max # of special neighbors + special bonds CPU = 0.00095129 secs + read_data CPU = 0.0199838 secs neighbor 2.0 bin neigh_modify delay 5 @@ -66,6 +67,7 @@ fix 4 all shake 0.0001 10 100 b 4 6 8 10 12 14 18 a 31 6 = # of size 3 clusters 3 = # of size 4 clusters 640 = # of frozen angles + find clusters CPU = 0.000829935 secs #dump 1 colvar custom 1 dump.colvar.lammpstrj id xu yu zu fx fy fz #dump_modify 1 sort id @@ -77,13 +79,13 @@ variable pe equal pe run 101 PPPM initialization ... - using 12-bit tables for long-range coulomb (src/kspace.cpp:321) + using 12-bit tables for long-range coulomb (src/kspace.cpp:332) G vector (1/distance) = 0.268725 grid = 15 15 15 stencil order = 5 estimated absolute RMS force accuracy = 0.0228209 estimated relative force accuracy = 6.87243e-05 - using double precision FFTs + using double precision FFTW3 3d grid and FFT values/proc = 4312 960 Neighbor list info ... update every 1 steps, delay 5 steps, check yes @@ -106,7 +108,7 @@ SHAKE stats (type/ave/delta) on step 0 14 0.96 0 18 0.957206 4.37979e-05 31 104.519 0.00396029 -Per MPI rank memory allocation (min/avg/max) = 15.66 | 15.87 | 16.06 Mbytes +Per MPI rank memory allocation (min/avg/max) = 16.02 | 16.23 | 16.42 Mbytes Step Temp TotEng PotEng KinEng E_pair E_bond f_2 0 282.10052 -5237.458 -6372.3766 1134.9186 -6442.768 16.557152 0 10 276.9783 -5234.3057 -6348.6171 1114.3114 -6421.6171 17.024361 0.47785504 @@ -129,22 +131,22 @@ SHAKE stats (type/ave/delta) on step 100 31 104.52 0.000760401 100 270.40648 -5234.9604 -6322.8327 1087.8723 -6417.73 19.666404 0.0094784372 101 270.99811 -5235.8295 -6326.082 1090.2525 -6418.8974 17.285816 0.086681332 -Loop time of 0.812799 on 4 procs for 101 steps with 2004 atoms +Loop time of 0.873215 on 4 procs for 101 steps with 2004 atoms -Performance: 21.472 ns/day, 1.118 hours/ns, 124.262 timesteps/s -97.5% CPU use with 4 MPI tasks x 1 OpenMP threads +Performance: 19.987 ns/day, 1.201 hours/ns, 115.664 timesteps/s +92.5% CPU use with 4 MPI tasks x no OpenMP threads MPI task timing breakdown: Section | min time | avg time | max time |%varavg| %total --------------------------------------------------------------- -Pair | 0.57957 | 0.59988 | 0.62504 | 2.6 | 73.80 -Bond | 0.00080013 | 0.0017412 | 0.0028315 | 2.1 | 0.21 -Kspace | 0.075724 | 0.10008 | 0.12023 | 6.4 | 12.31 -Neigh | 0.067733 | 0.067947 | 0.068168 | 0.1 | 8.36 -Comm | 0.01375 | 0.014175 | 0.014681 | 0.3 | 1.74 -Output | 0.00025511 | 0.00051183 | 0.001277 | 0.0 | 0.06 -Modify | 0.026406 | 0.026436 | 0.026462 | 0.0 | 3.25 -Other | | 0.002027 | | | 0.25 +Pair | 0.58191 | 0.61681 | 0.66371 | 3.8 | 70.64 +Bond | 0.00099587 | 0.0023546 | 0.0041356 | 2.8 | 0.27 +Kspace | 0.096162 | 0.14486 | 0.18119 | 8.1 | 16.59 +Neigh | 0.059843 | 0.059864 | 0.059876 | 0.0 | 6.86 +Comm | 0.013623 | 0.01368 | 0.013723 | 0.0 | 1.57 +Output | 0.00031137 | 0.0010193 | 0.0024326 | 2.6 | 0.12 +Modify | 0.031552 | 0.031697 | 0.032087 | 0.1 | 3.63 +Other | | 0.002938 | | | 0.34 Nlocal: 501 ave 512 max 492 min Histogram: 1 0 0 1 0 1 0 0 0 1 diff --git a/examples/USER/plumed/reference/p.log b/examples/USER/plumed/reference/p.log index 79d0bbd84c..29d99077e4 100644 --- a/examples/USER/plumed/reference/p.log +++ b/examples/USER/plumed/reference/p.log @@ -1,12 +1,12 @@ PLUMED: PLUMED is starting -PLUMED: Version: 2.4.2 (git: Unknown) compiled on Jul 11 2018 at 19:09:03 -PLUMED: Please cite this paper when using PLUMED [1] +PLUMED: Version: 2.6.0 (git: Unknown) compiled on Feb 13 2020 at 15:49:44 +PLUMED: Please cite these papers when using PLUMED [1][2] PLUMED: For further information see the PLUMED web page at http://www.plumed.org -PLUMED: Root: /Users/gareth/MD_code/lammps-permanent/lammps/lib/plumed/plumed2-2.4.2/ -PLUMED: For installed feature, see /Users/gareth/MD_code/lammps-permanent/lammps/lib/plumed/plumed2-2.4.2//src/config/config.txt +PLUMED: Root: /home/akohlmey/compile/lammps/build-gcc/plumed_build-prefix/lib/plumed +PLUMED: For installed feature, see /home/akohlmey/compile/lammps/build-gcc/plumed_build-prefix/lib/plumed/src/config/config.txt PLUMED: Molecular dynamics engine: LAMMPS PLUMED: Precision of reals: 8 -PLUMED: Running over 1 node +PLUMED: Running over 4 nodes PLUMED: Number of threads: 1 PLUMED: Cache line size: 512 PLUMED: Number of atoms: 2004 @@ -14,13 +14,13 @@ PLUMED: File suffix: PLUMED: FILE: plumed.dat PLUMED: Action UNITS PLUMED: with label @0 -PLUMED: length: A -PLUMED: energy: kcal/mol +PLUMED: length: A = 0.1 nm +PLUMED: energy: kcal/mol = 4.184 kj/mol PLUMED: time: ps PLUMED: charge: e PLUMED: mass: amu PLUMED: using physical units -PLUMED: inside PLUMED, Boltzmann constant is 0.001987 +PLUMED: inside PLUMED, Boltzmann constant is 0.0019872 PLUMED: Action DISTANCE PLUMED: with label dd PLUMED: between atoms 45 48 @@ -44,14 +44,15 @@ PLUMED: Timestep: 0.002000 PLUMED: KbT has not been set by the MD engine PLUMED: It should be set by hand where needed PLUMED: Relevant bibliography: -PLUMED: [1] Tribello, Bonomi, Branduardi, Camilloni, and Bussi, Comput. Phys. Commun. 185, 604 (2014) +PLUMED: [1] The PLUMED consortium, Nat. Methods 16, 670 (2019) +PLUMED: [2] Tribello, Bonomi, Branduardi, Camilloni, and Bussi, Comput. Phys. Commun. 185, 604 (2014) PLUMED: Please read and cite where appropriate! PLUMED: Finished setup PLUMED: Cycles Total Average Minumum Maximum -PLUMED: 1 0.020354 0.020354 0.020354 0.020354 -PLUMED: 1 Prepare dependencies 102 0.000256 0.000003 0.000001 0.000006 -PLUMED: 2 Sharing data 102 0.010002 0.000098 0.000078 0.000546 -PLUMED: 3 Waiting for data 102 0.001398 0.000014 0.000011 0.000072 -PLUMED: 4 Calculating (forward loop) 102 0.001797 0.000018 0.000013 0.000058 -PLUMED: 5 Applying (backward loop) 102 0.002666 0.000026 0.000022 0.000062 -PLUMED: 6 Update 102 0.001126 0.000011 0.000007 0.000055 +PLUMED: 1 0.010018 0.010018 0.010018 0.010018 +PLUMED: 1 Prepare dependencies 102 0.000241 0.000002 0.000001 0.000003 +PLUMED: 2 Sharing data 102 0.002132 0.000021 0.000006 0.000151 +PLUMED: 3 Waiting for data 102 0.001640 0.000016 0.000008 0.000067 +PLUMED: 4 Calculating (forward loop) 102 0.000825 0.000008 0.000005 0.000013 +PLUMED: 5 Applying (backward loop) 102 0.000522 0.000005 0.000002 0.000015 +PLUMED: 6 Update 102 0.001755 0.000017 0.000011 0.000067 diff --git a/lib/gpu/lal_lj_tip4p_long.cpp b/lib/gpu/lal_lj_tip4p_long.cpp index d44edc8cbd..f60f162d7b 100644 --- a/lib/gpu/lal_lj_tip4p_long.cpp +++ b/lib/gpu/lal_lj_tip4p_long.cpp @@ -74,11 +74,11 @@ int LJTIP4PLongT::init(const int ntypes, // If atom type constants fit in shared memory use fast kernel int lj_types=ntypes; shared_types=false; -// int max_shared_types=this->device->max_shared_types(); -// if (lj_types<=max_shared_types && this->_block_size>=max_shared_types) { -// lj_types=max_shared_types; -// shared_types=true; -// } + int max_shared_types=this->device->max_shared_types(); + if (lj_types<=max_shared_types && this->_block_size>=max_shared_types) { + lj_types=max_shared_types; + shared_types=true; + } _lj_types=lj_types; // Allocate a host write buffer for data initialization @@ -202,7 +202,6 @@ void LJTIP4PLongT::loop(const bool _eflag, const bool _vflag) { GX=static_cast(ceil(static_cast(this->ans->inum())/ (BX/this->_threads_per_atom))); - this->k_pair.set_size(GX,BX); if (vflag) { this->ansO.resize_ib(ainum*3); } else { @@ -210,13 +209,25 @@ void LJTIP4PLongT::loop(const bool _eflag, const bool _vflag) { } this->ansO.zero(); this->device->gpu->sync(); - this->k_pair.run(&this->atom->x, &lj1, &lj3, &_lj_types, &sp_lj, + if(shared_types) { + this->k_pair_fast.set_size(GX,BX); + this->k_pair_fast.run(&this->atom->x, &lj1, &lj3, &_lj_types, &sp_lj, &this->nbor->dev_nbor, &this->_nbor_data->begin(), &this->ans->force, &this->ans->engv, &eflag, &vflag, &ainum, &nbor_pitch, &this->_threads_per_atom, &hneight, &m, &TypeO, &TypeH, &alpha, &this->atom->q, &cutsq, &_qqrd2e, &_g_ewald, &cut_coulsq, &cut_coulsqplus, &this->ansO); + } else { + this->k_pair.set_size(GX,BX); + this->k_pair.run(&this->atom->x, &lj1, &lj3, &_lj_types, &sp_lj, + &this->nbor->dev_nbor, &this->_nbor_data->begin(), + &this->ans->force, &this->ans->engv, &eflag, &vflag, + &ainum, &nbor_pitch, &this->_threads_per_atom, + &hneight, &m, &TypeO, &TypeH, &alpha, + &this->atom->q, &cutsq, &_qqrd2e, &_g_ewald, + &cut_coulsq, &cut_coulsqplus, &this->ansO); + } GX=static_cast(ceil(static_cast(this->ans->inum())/BX)); this->k_pair_distrib.set_size(GX,BX); this->k_pair_distrib.run(&this->atom->x, &this->ans->force, &this->ans->engv, diff --git a/lib/gpu/lal_lj_tip4p_long.cu b/lib/gpu/lal_lj_tip4p_long.cu index 147c460795..c101196433 100644 --- a/lib/gpu/lal_lj_tip4p_long.cu +++ b/lib/gpu/lal_lj_tip4p_long.cu @@ -572,4 +572,328 @@ __kernel void k_lj_tip4p_long(const __global numtyp4 *restrict x_, } // if ii } -__kernel void k_lj_tip4p_long_fast() {} +__kernel void k_lj_tip4p_long_fast(const __global numtyp4 *restrict x_, + const __global numtyp4 *restrict lj1_in, + const __global numtyp4 *restrict lj3_in, + const int lj_types, + const __global numtyp *restrict sp_lj_in, + const __global int * dev_nbor, + const __global int * dev_packed, + __global acctyp4 *restrict ans, + __global acctyp *restrict engv, + const int eflag, const int vflag, const int inum, + const int nbor_pitch, const int t_per_atom, + __global int *restrict hneigh, + __global numtyp4 *restrict m, + const int typeO, const int typeH, + const numtyp alpha, + const __global numtyp *restrict q_, + const __global numtyp *restrict cutsq, + const numtyp qqrd2e, const numtyp g_ewald, + const numtyp cut_coulsq, const numtyp cut_coulsqplus, + __global acctyp4 *restrict ansO) { + int tid, ii, offset; + atom_info(t_per_atom,ii,tid,offset); + + const numtyp eq_zero = 1e-6; + + __local numtyp4 lj1[MAX_SHARED_TYPES*MAX_SHARED_TYPES]; + __local numtyp4 lj3[MAX_SHARED_TYPES*MAX_SHARED_TYPES]; + __local numtyp sp_lj[8]; + if (tid<8) + sp_lj[tid]=sp_lj_in[tid]; + if (tid0) + lj3[tid]=lj3_in[tid]; + } + acctyp energy = (acctyp)0; + acctyp e_coul = (acctyp)0; + acctyp4 f, fO; + f.x=(acctyp)0; f.y=(acctyp)0; f.z=(acctyp)0; + fO.x=(acctyp)0; fO.y=(acctyp)0; fO.z=(acctyp)0; + acctyp virial[6],vO[6]; + for (int i=0; i<6; i++) { + virial[i]=(acctyp)0; + vO[i]=(acctyp)0; + } + + __syncthreads(); + if (ii= inum) { + non_local_oxy = 1; + } + } + + for ( ; nbor0) { + numtyp e = r6inv * (lj3[mtype].x*r6inv-lj3[mtype].y); + energy += factor_lj * (e - lj3[mtype].z); + } + if (vflag>0) { + virial[0] += delx*delx*forcelj; + virial[1] += dely*dely*forcelj; + virial[2] += delz*delz*forcelj; + virial[3] += delx*dely*forcelj; + virial[4] += delx*delz*forcelj; + virial[5] += dely*delz*forcelj; + } + } // if LJ + + if (rsq < cut_coulsqplus) { //cut_coulsqplus + int jH1, jH2, jO; + numtyp qj; fetch(qj,j,q_tex); + numtyp4 x2 = jx; + if(itype == typeO || jtype == typeO) { + if (jtype == typeO) { + jO = j; + jH1 = hneigh[j*4 ]; + jH2 = hneigh[j*4+1]; + x2 = m[j]; + } + delx = x1.x-x2.x; + dely = x1.y-x2.y; + delz = x1.z-x2.z; + rsq = delx*delx+dely*dely+delz*delz; + } + if (rsq < cut_coulsq) { + numtyp r2inv = ucl_recip(rsq); + numtyp r = ucl_rsqrt(r2inv); + numtyp grij = g_ewald * r; + numtyp expm2 = ucl_exp(-grij*grij); + numtyp t = ucl_recip((numtyp)1.0 + EWALD_P*grij); + numtyp _erfc = t * (A1+t*(A2+t*(A3+t*(A4+t*A5)))) * expm2; + + numtyp prefactor = qj; + prefactor *= qqrd2e*qtmp/r; + numtyp force_coul = r2inv*prefactor * (_erfc + EWALD_F*grij*expm2 - factor_coul); + + if (itype == typeH) { + f.x += delx * force_coul; + f.y += dely * force_coul; + f.z += delz * force_coul; + f.w += 0; + } else { + fO.x += delx * force_coul; + fO.y += dely * force_coul; + fO.z += delz * force_coul; + fO.w += 0; + } + if (eflag>0) { + e_coul += prefactor*(_erfc-factor_coul); + } + if (vflag>0) { + acctyp4 fd; + fd.x = delx*force_coul; + fd.y = dely*force_coul; + fd.z = delz*force_coul; + if (itype == typeH) { + if (jtype == typeH) { + virial[0] += delx*fd.x; + virial[1] += dely*fd.y; + virial[2] += delz*fd.z; + virial[3] += delx*fd.y; + virial[4] += delx*fd.z; + virial[5] += dely*fd.z; + } else { + numtyp cO = 1 - alpha, cH = 0.5*alpha; + numtyp4 vdj; + numtyp4 xjH1; fetch4(xjH1,jH1,pos_tex); + numtyp4 xjH2; fetch4(xjH2,jH2,pos_tex); + numtyp4 xjO; fetch4(xjO,jO,pos_tex); + vdj.x = xjO.x*cO + xjH1.x*cH + xjH2.x*cH; + vdj.y = xjO.y*cO + xjH1.y*cH + xjH2.y*cH; + vdj.z = xjO.z*cO + xjH1.z*cH + xjH2.z*cH; + //vdj.w = vdj.w; + virial[0] += (ix.x - vdj.x)*fd.x; + virial[1] += (ix.y - vdj.y)*fd.y; + virial[2] += (ix.z - vdj.z)*fd.z; + virial[3] += (ix.x - vdj.x)*fd.y; + virial[4] += (ix.x - vdj.x)*fd.z; + virial[5] += (ix.y - vdj.y)*fd.z; + } + } else { + numtyp cO = 1 - alpha, cH = 0.5*alpha; + numtyp4 vdi, vdj; + numtyp4 xH1; fetch4(xH1,iH1,pos_tex); + numtyp4 xH2; fetch4(xH2,iH2,pos_tex); + numtyp4 xO; fetch4(xO,iO,pos_tex); + vdi.x = xO.x*cO + xH1.x*cH + xH2.x*cH; + vdi.y = xO.y*cO + xH1.y*cH + xH2.y*cH; + vdi.z = xO.z*cO + xH1.z*cH + xH2.z*cH; + //vdi.w = vdi.w; + if (jtype != typeH) { + numtyp4 xjH1; fetch4(xjH1,jH1,pos_tex); + numtyp4 xjH2; fetch4(xjH2,jH2,pos_tex); + numtyp4 xjO; fetch4(xjO,jO,pos_tex); + vdj.x = xjO.x*cO + xjH1.x*cH + xjH2.x*cH; + vdj.y = xjO.y*cO + xjH1.y*cH + xjH2.y*cH; + vdj.z = xjO.z*cO + xjH1.z*cH + xjH2.z*cH; + //vdj.w = vdj.w; + } else vdj = jx; + vO[0] += 0.5*(vdi.x - vdj.x)*fd.x; + vO[1] += 0.5*(vdi.y - vdj.y)*fd.y; + vO[2] += 0.5*(vdi.z - vdj.z)*fd.z; + vO[3] += 0.5*(vdi.x - vdj.x)*fd.y; + vO[4] += 0.5*(vdi.x - vdj.x)*fd.z; + vO[5] += 0.5*(vdi.y - vdj.y)*fd.z; + } + } + } + if (non_local_oxy == 1) { + if (iO == j) { + x2 = ix; + qj = qtmp; + } + numtyp4 x1m = m[iO]; + delx = x1m.x-x2.x; + dely = x1m.y-x2.y; + delz = x1m.z-x2.z; + rsq = delx*delx+dely*dely+delz*delz; + if (rsq < cut_coulsq) { + numtyp r2inv = ucl_recip(rsq); + numtyp r = ucl_rsqrt(r2inv); + numtyp grij = g_ewald * r; + numtyp expm2 = ucl_exp(-grij*grij); + numtyp t = ucl_recip((numtyp)1.0 + EWALD_P*grij); + numtyp _erfc = t * (A1+t*(A2+t*(A3+t*(A4+t*A5)))) * expm2; + + numtyp prefactor = qj; + prefactor *= qqrd2e*x1m.w/r; + numtyp force_coul = r2inv*prefactor * (_erfc + EWALD_F*grij*expm2 - factor_coul); + + numtyp cO = 1 - alpha, cH = 0.5*alpha; + numtyp4 fd; + fd.x = delx * force_coul * cH; + fd.y = dely * force_coul * cH; + fd.z = delz * force_coul * cH; + + f.x += fd.x; + f.y += fd.y; + f.z += fd.z; + + if (eflag>0) { + e_coul += prefactor*(_erfc-factor_coul) * (acctyp)0.5 * alpha; + } + if (vflag>0) { + numtyp4 xH1; fetch4(xH1,iH1,pos_tex); + numtyp4 xH2; fetch4(xH2,iH2,pos_tex); + numtyp4 xO; fetch4(xO,iO,pos_tex); + + virial[0] += ((xO.x*cO + xH1.x*cH + xH2.x*cH) - x2.x) * fd.x; + virial[1] += ((xO.y*cO + xH1.y*cH + xH2.y*cH) - x2.y) * fd.y; + virial[2] += ((xO.z*cO + xH1.z*cH + xH2.z*cH) - x2.z) * fd.z; + virial[3] += ((xO.x*cO + xH1.x*cH + xH2.x*cH) - x2.x) * fd.y; + virial[4] += ((xO.x*cO + xH1.x*cH + xH2.x*cH) - x2.x) * fd.z; + virial[5] += ((xO.y*cO + xH1.y*cH + xH2.y*cH) - x2.y) * fd.z; + } + } + } + } // if cut_coulsqplus + } // for nbor + if (t_per_atom>1) { +#if (ARCH < 300) + __local acctyp red_acc[6][BLOCK_PAIR]; + red_acc[0][tid]=fO.x; + red_acc[1][tid]=fO.y; + red_acc[2][tid]=fO.z; + red_acc[3][tid]=fO.w; + for (unsigned int s=t_per_atom/2; s>0; s>>=1) { + if (offset < s) { + for (int r=0; r<4; r++) + red_acc[r][tid] += red_acc[r][tid+s]; + } + } + fO.x=red_acc[0][tid]; + fO.y=red_acc[1][tid]; + fO.z=red_acc[2][tid]; + fO.w=red_acc[3][tid]; + if (vflag>0) { + for (int r=0; r<6; r++) red_acc[r][tid]=vO[r]; + for (unsigned int s=t_per_atom/2; s>0; s>>=1) { + if (offset < s) { + for (int r=0; r<6; r++) + red_acc[r][tid] += red_acc[r][tid+s]; + } + } + for (int r=0; r<6; r++) vO[r]=red_acc[r][tid]; + } +#else + for (unsigned int s=t_per_atom/2; s>0; s>>=1) { + fO.x += shfl_xor(fO.x, s, t_per_atom); + fO.y += shfl_xor(fO.y, s, t_per_atom); + fO.z += shfl_xor(fO.z, s, t_per_atom); + fO.w += shfl_xor(fO.w, s, t_per_atom); + } + if (vflag>0) { + for (unsigned int s=t_per_atom/2; s>0; s>>=1) { + for (int r=0; r<6; r++) + vO[r] += shfl_xor(vO[r], s, t_per_atom); + } + } +#endif + } + if(offset == 0) { + ansO[i] = fO; + if (vflag>0) { + ansO[inum + i].x = vO[0]; + ansO[inum + i].y = vO[1]; + ansO[inum + i].z = vO[2]; + ansO[inum*2 + i].x = vO[3]; + ansO[inum*2 + i].y = vO[4]; + ansO[inum*2 + i].z = vO[5]; + } + } + store_answers_q(f,energy,e_coul,virial,ii,inum,tid,t_per_atom,offset,eflag, + vflag,ans,engv); + } // if ii +} diff --git a/lib/plumed/Install.py b/lib/plumed/Install.py index 668e681b3c..b6b00d1511 100644 --- a/lib/plumed/Install.py +++ b/lib/plumed/Install.py @@ -17,7 +17,7 @@ parser = ArgumentParser(prog='Install.py', # settings -version = "2.5.3" +version = "2.6.0" mode = "static" # help message @@ -46,6 +46,8 @@ checksums = { \ '2.5.1' : 'c2a7b519e32197a120cdf47e0f194f81', \ '2.5.2' : 'bd2f18346c788eb54e1e52f4f6acf41a', \ '2.5.3' : 'de30d6e7c2dcc0973298e24a6da24286', \ + '2.5.4' : 'f31b7d16a4be2e30aa7d5c19c3d37853', \ + '2.6.0' : '204d2edae58d9b10ba3ad460cad64191', \ } # parse and process arguments diff --git a/lib/qmmm/Makefile.gfortran b/lib/qmmm/Makefile.gfortran index 717922b4b6..9b43d2eaa0 100644 --- a/lib/qmmm/Makefile.gfortran +++ b/lib/qmmm/Makefile.gfortran @@ -7,9 +7,9 @@ EXTRAMAKE = Makefile.lammps.empty QETOPDIR=$(HOME)/compile/espresso # import compiler settings from Quantum ESPRESSO -sinclude $(QETOPDIR)/make.sys +sinclude $(QETOPDIR)/make.inc -# FLAGS for c++ OpenMPI 1.8.8 or later when QE was compiled with GNU Fortran 4.x +# FLAGS for c++ OpenMPI 3.x.x or later when QE was compiled with GNU Fortran 6.x or 7.x MPICXX=mpicxx MPICXXFLAGS=-DOMPI_SKIP_MPICXX=1 -O2 -Wall -g -fPIC\ -I../../src -I$(QETOPDIR)/COUPLE/include @@ -24,13 +24,21 @@ $(QETOPDIR)/Modules/libqemod.a # part 2: lo-level libraries for all of Q-E LIBOBJS = \ $(QETOPDIR)/FFTXlib/libqefft.a \ +$(QETOPDIR)/dft-d3/libdftd3qe.a \ +$(QETOPDIR)/KS_Solvers/PPCG/libppcg.a \ +$(QETOPDIR)/KS_Solvers/CG/libcg.a \ +$(QETOPDIR)/KS_Solvers/Davidson/libdavid.a \ +$(QETOPDIR)/UtilXlib/libutil.a \ $(QETOPDIR)/LAXlib/libqela.a \ $(QETOPDIR)/clib/clib.a \ $(QETOPDIR)/iotk/src/libiotk.a +# foxlibs + +LIBS += -L${QETOPDIR}/FoX/lib -lFoX_dom -lFoX_sax -lFoX_wxml -lFoX_common -lFoX_utils -lFoX_fsys -L${LAPACK_LIB} -L${BLAS_LIB} -llapack -lblas # part 3: add-on libraries and main library for LAMMPS sinclude ../../src/Makefile.package -LAMMPSCFG = openmpi-omp +LAMMPSCFG = mpi LAMMPSLIB = ../../src/liblammps_$(LAMMPSCFG).a # part 4: local QM/MM library and progams diff --git a/lib/qmmm/Makefile.ifort b/lib/qmmm/Makefile.ifort index d03e67b8a0..1a4f4b600e 100644 --- a/lib/qmmm/Makefile.ifort +++ b/lib/qmmm/Makefile.ifort @@ -3,17 +3,20 @@ # this file will be copied to Makefile.lammps EXTRAMAKE = Makefile.lammps.empty -# top level directory of Quantum ESPRESSO 5.4.1 or later +# top level directory of Quantum ESPRESSO 6.4 or later QETOPDIR=$(HOME)/compile/espresso # import compiler settings from Quantum ESPRESSO -sinclude $(QETOPDIR)/make.sys +sinclude $(QETOPDIR)/make.inc # FLAGS for c++ with IntelMPI when QE was compiled with Intel Fortran -MPICXX=icpc -MPICXXFLAGS=-DOMPI_SKIP_MPICXX=1 -O2 -Wall -g -fPIC\ - -I../../src -I$(QETOPDIR)/COUPLE/include -I${INTELMPI_HOME}/include64 -MPILIBS=-openmp -L${INTELMPI_HOME}/lib64 -lz -lifcore -L$(I_MPI_ROOT)/lib64 -lmpi -lmpiif + +MPICXX=mpiicpc +MPICXXFLAGS=-DOMPI_SKIP_MPICXX=1 -DFC_ABORT_ARG -O2 -Wall -g -fPIC -I${INTEL_HOME}/include -I${INTELMPI_HOME}/include64 \ + -I../../src -I$(QETOPDIR)/COUPLE/include -I$(QETOPDIR)/LAXlib -I$(QETOPDIR)/UtilXlib -I$(QETOPDIR)/FoX/finclude -tbb + +MPILIBS=-qopenmp -L${INTELMPI_HOME}/lib64 -lz -lifcore -lifport -L$(I_MPI_ROOT)/lib64 -lmpi -lmpifort + # location of required libraries # part 1: hi-level libraries for building pw.x @@ -24,13 +27,20 @@ $(QETOPDIR)/Modules/libqemod.a # part 2: lo-level libraries for all of Q-E LIBOBJS = \ $(QETOPDIR)/FFTXlib/libqefft.a \ +$(QETOPDIR)/dft-d3/libdftd3qe.a \ +$(QETOPDIR)/KS_Solvers/PPCG/libppcg.a \ +$(QETOPDIR)/KS_Solvers/CG/libcg.a \ +$(QETOPDIR)/KS_Solvers/Davidson/libdavid.a \ +$(QETOPDIR)/UtilXlib/libutil.a \ $(QETOPDIR)/LAXlib/libqela.a \ $(QETOPDIR)/clib/clib.a \ $(QETOPDIR)/iotk/src/libiotk.a +# foxlibs +LIBS += -L${QETOPDIR}/FoX/lib -lFoX_dom -lFoX_sax -lFoX_wxml -lFoX_common -lFoX_utils -lFoX_fsys -mkl -ltbbmalloc # part 3: add-on libraries and main library for LAMMPS sinclude ../../src/Makefile.package -LAMMPSCFG = galileo-omp +LAMMPSCFG =intel_cpu LAMMPSLIB = ../../src/liblammps_$(LAMMPSCFG).a # part 4: local QM/MM library and progams diff --git a/lib/qmmm/README b/lib/qmmm/README index 2746c9e86e..9046cf59de 100644 --- a/lib/qmmm/README +++ b/lib/qmmm/README @@ -4,7 +4,7 @@ Axel Kohlmeyer, akohlmey@gmail.com Temple University, Philadelphia and ICTP, Trieste with contributions by -Carlo Cavazzoni & Mariella Ippolito +Mariella Ippolito & Carlo Cavazzoni Cineca, Italy This library provides the basic glue code to combine LAMMPS with the @@ -32,9 +32,7 @@ and 4 manually, as outlined below. WARNING: This is experimental code under developement and is provided at this early stage to encourage others to write interfaces to other QM codes. Please test *very* carefully before using this software for -production calculations. At the time of the last update of this README -(July 2016) you have to download a QE snapshot (revision 12611) from -the QE subversion repository. +production calculations. At this point, both mechanical and multipole based electrostatic coupling have been successfully tested on a cluster of water @@ -70,12 +68,7 @@ to confirm that the classical part of the code is set up correctly. Step 3) Build a standalone pw.x executable in the Quantum ESPRESSO directory -and also make the "couple" target. At the time of this writing -(July 2016) you have to download a QE snapshot (revision 12611) -from the SVN repository, since no official release with the -completed QM/MM support code has been made available yet. The current -plan is to have a usable QM/MM interface released with the next -Quantum ESPRESSO release version 6.0. Building the standalone pw.x +and also make the "couple" target. Building the standalone pw.x binary is also needed to confirm that corresponding QM input is working correctly and to run test calculations on QM atoms only. diff --git a/src/GPU/pair_born_coul_long_gpu.cpp b/src/GPU/pair_born_coul_long_gpu.cpp index 39d34420a8..1b548edab6 100644 --- a/src/GPU/pair_born_coul_long_gpu.cpp +++ b/src/GPU/pair_born_coul_long_gpu.cpp @@ -177,6 +177,10 @@ void PairBornCoulLongGPU::init_style() error->all(FLERR,"Pair style requires a KSpace style"); g_ewald = force->kspace->g_ewald; + // setup force tables + + if (ncoultablebits) init_tables(cut_coul,cut_respa); + int maxspecial=0; if (atom->molecular) maxspecial=atom->maxspecial; diff --git a/src/GPU/pair_buck_coul_long_gpu.cpp b/src/GPU/pair_buck_coul_long_gpu.cpp index e30230d5a0..7e59562ebf 100644 --- a/src/GPU/pair_buck_coul_long_gpu.cpp +++ b/src/GPU/pair_buck_coul_long_gpu.cpp @@ -173,6 +173,10 @@ void PairBuckCoulLongGPU::init_style() error->all(FLERR,"Pair style requires a KSpace style"); g_ewald = force->kspace->g_ewald; + // setup force tables + + if (ncoultablebits) init_tables(cut_coul,cut_respa); + int maxspecial=0; if (atom->molecular) maxspecial=atom->maxspecial; diff --git a/src/GPU/pair_lj_class2_coul_long_gpu.cpp b/src/GPU/pair_lj_class2_coul_long_gpu.cpp index 4ee776b4ff..96ba4e0a09 100644 --- a/src/GPU/pair_lj_class2_coul_long_gpu.cpp +++ b/src/GPU/pair_lj_class2_coul_long_gpu.cpp @@ -170,6 +170,10 @@ void PairLJClass2CoulLongGPU::init_style() error->all(FLERR,"Pair style requires a KSpace style"); g_ewald = force->kspace->g_ewald; + // setup force tables + + if (ncoultablebits) init_tables(cut_coul,cut_respa); + int maxspecial=0; if (atom->molecular) maxspecial=atom->maxspecial; diff --git a/src/KOKKOS/Install.sh b/src/KOKKOS/Install.sh index e0b1c92821..540389f599 100755 --- a/src/KOKKOS/Install.sh +++ b/src/KOKKOS/Install.sh @@ -85,6 +85,8 @@ action comm_kokkos.cpp action comm_kokkos.h action comm_tiled_kokkos.cpp action comm_tiled_kokkos.h +action compute_orientorder_atom_kokkos.cpp +action compute_orientorder_atom_kokkos.h action compute_temp_kokkos.cpp action compute_temp_kokkos.h action dihedral_charmm_kokkos.cpp dihedral_charmm.cpp diff --git a/src/KOKKOS/compute_orientorder_atom_kokkos.cpp b/src/KOKKOS/compute_orientorder_atom_kokkos.cpp new file mode 100644 index 0000000000..7915e4faa9 --- /dev/null +++ b/src/KOKKOS/compute_orientorder_atom_kokkos.cpp @@ -0,0 +1,698 @@ +/* ---------------------------------------------------------------------- + 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 author: Stan Moore (SNL) +------------------------------------------------------------------------- */ + +#include "compute_orientorder_atom_kokkos.h" +#include +#include +#include +#include "atom_kokkos.h" +#include "update.h" +#include "modify.h" +#include "neighbor_kokkos.h" +#include "neigh_list.h" +#include "neigh_request.h" +#include "force.h" +#include "pair.h" +#include "comm.h" +#include "memory_kokkos.h" +#include "error.h" +#include "math_const.h" +#include "atom_masks.h" +#include "kokkos.h" + +using namespace LAMMPS_NS; +using namespace MathConst; +using namespace std; + +#ifdef DBL_EPSILON + #define MY_EPSILON (10.0*DBL_EPSILON) +#else + #define MY_EPSILON (10.0*2.220446049250313e-16) +#endif + +#define QEPSILON 1.0e-6 + +/* ---------------------------------------------------------------------- */ + +template +ComputeOrientOrderAtomKokkos::ComputeOrientOrderAtomKokkos(LAMMPS *lmp, int narg, char **arg) : + ComputeOrientOrderAtom(lmp, narg, arg) +{ + atomKK = (AtomKokkos *) atom; + execution_space = ExecutionSpaceFromDevice::space; + datamask_read = EMPTY_MASK; + datamask_modify = EMPTY_MASK; +} + +/* ---------------------------------------------------------------------- */ + +template +ComputeOrientOrderAtomKokkos::~ComputeOrientOrderAtomKokkos() +{ + if (copymode) return; + + memoryKK->destroy_kokkos(k_qnarray,qnarray); +} + +/* ---------------------------------------------------------------------- */ + +template +void ComputeOrientOrderAtomKokkos::init() +{ + ComputeOrientOrderAtom::init(); + + d_qlist = t_sna_1i("orientorder/atom:qlist",nqlist); + auto h_qlist = Kokkos::create_mirror_view(d_qlist); + for (int i = 0; i < nqlist; i++) + h_qlist(i) = qlist[i]; + Kokkos::deep_copy(d_qlist,h_qlist); + + // need an occasional full neighbor list + + // irequest = neigh request made by parent class + + int irequest = neighbor->nrequest - 1; + + neighbor->requests[irequest]-> + kokkos_host = Kokkos::Impl::is_same::value && + !Kokkos::Impl::is_same::value; + neighbor->requests[irequest]-> + kokkos_device = Kokkos::Impl::is_same::value; +} + +/* ---------------------------------------------------------------------- */ + +template +struct FindMaxNumNeighs { + typedef DeviceType device_type; + NeighListKokkos k_list; + + FindMaxNumNeighs(NeighListKokkos* nl): k_list(*nl) {} + ~FindMaxNumNeighs() {k_list.copymode = 1;} + + KOKKOS_INLINE_FUNCTION + void operator() (const int& ii, int& maxneigh) const { + const int i = k_list.d_ilist[ii]; + const int num_neighs = k_list.d_numneigh[i]; + if (maxneigh < num_neighs) maxneigh = num_neighs; + } +}; + +/* ---------------------------------------------------------------------- */ + +template +void ComputeOrientOrderAtomKokkos::compute_peratom() +{ + invoked_peratom = update->ntimestep; + + // invoke full neighbor list (will copy or build if necessary) + + neighbor->build_one(list); + + inum = list->inum; + NeighListKokkos* k_list = static_cast*>(list); + d_numneigh = k_list->d_numneigh; + d_neighbors = k_list->d_neighbors; + d_ilist = k_list->d_ilist; + + maxneigh = 0; + Kokkos::parallel_reduce("ComputeOrientOrderAtomKokkos::find_max_neighs",inum, FindMaxNumNeighs(k_list), Kokkos::Experimental::Max(maxneigh)); + + // grow order parameter array if necessary + + if (atom->nmax > nmax) { + memoryKK->destroy_kokkos(k_qnarray,qnarray); + nmax = atom->nmax; + memoryKK->create_kokkos(k_qnarray,qnarray,nmax,ncol,"orientorder/atom:qnarray"); + array_atom = qnarray; + d_qnarray = k_qnarray.template view(); + + d_qnm = t_sna_3c("orientorder/atom:qnm",nmax,nqlist,2*qmax+1); + d_ncount = t_sna_1i("orientorder/atom:ncount",nmax); + + // insure distsq and nearest arrays are long enough + + if (maxneigh > d_distsq.extent(1)) { + d_distsq = t_sna_2d_lr("orientorder/atom:distsq",nmax,maxneigh); + d_nearest = t_sna_2i_lr("orientorder/atom:nearest",nmax,maxneigh); + d_rlist = t_sna_3d_lr("orientorder/atom:rlist",nmax,maxneigh,3); + + d_distsq_um = d_distsq; + d_rlist_um = d_rlist; + d_nearest_um = d_nearest; + } + } + + // compute order parameter for each atom in group + // use full neighbor list to count atoms less than cutoff + + atomKK->sync(execution_space,X_MASK|MASK_MASK); + x = atomKK->k_x.view(); + mask = atomKK->k_mask.view(); + + Kokkos::deep_copy(d_qnm,{0.0,0.0}); + + int vector_length = 1; + int team_size = 1; + int team_size_max = Kokkos::TeamPolicy::team_size_max(*this); +#ifdef KOKKOS_ENABLE_CUDA + team_size = 32;//maxneigh; + if (team_size*vector_length > team_size_max) + team_size = team_size_max/vector_length; +#endif + + copymode = 1; + + //Neigh + typename Kokkos::TeamPolicy policy_neigh(inum,team_size,vector_length); + Kokkos::parallel_for("ComputeOrientOrderAtomNeigh",policy_neigh,*this); + + //Select3 + typename Kokkos::RangePolicy policy_select3(0,inum); + Kokkos::parallel_for("ComputeOrientOrderAtomSelect3",policy_select3,*this); + + //BOOP1 + typename Kokkos::TeamPolicy policy_boop1(((inum+team_size-1)/team_size)*maxneigh,team_size,vector_length); + Kokkos::parallel_for("ComputeOrientOrderAtomBOOP1",policy_boop1,*this); + + //BOOP2 + typename Kokkos::RangePolicy policy_boop2(0,inum); + Kokkos::parallel_for("ComputeOrientOrderAtomBOOP2",policy_boop2,*this); + + copymode = 0; + + k_qnarray.template modify(); + k_qnarray.template sync(); +} + +/* ---------------------------------------------------------------------- */ + +template +KOKKOS_INLINE_FUNCTION +void ComputeOrientOrderAtomKokkos::operator() (TagComputeOrientOrderAtomNeigh,const typename Kokkos::TeamPolicy::member_type& team) const +{ + const int ii = team.league_rank(); + const int i = d_ilist[ii]; + if (mask[i] & groupbit) { + const X_FLOAT xtmp = x(i,0); + const X_FLOAT ytmp = x(i,1); + const X_FLOAT ztmp = x(i,2); + const int jnum = d_numneigh[i]; + + // loop over list of all neighbors within force cutoff + // distsq[] = distance sq to each + // rlist[] = distance vector to each + // nearest[] = atom indices of neighbors + + int ncount = 0; + Kokkos::parallel_reduce(Kokkos::TeamThreadRange(team,jnum), + [&] (const int jj, int& count) { + Kokkos::single(Kokkos::PerThread(team), [&] (){ + int j = d_neighbors(i,jj); + j &= NEIGHMASK; + const F_FLOAT delx = x(j,0) - xtmp; + const F_FLOAT dely = x(j,1) - ytmp; + const F_FLOAT delz = x(j,2) - ztmp; + const F_FLOAT rsq = delx*delx + dely*dely + delz*delz; + if (rsq < cutsq) + count++; + }); + },ncount); + + d_ncount(ii) = ncount; + + if (team.team_rank() == 0) + Kokkos::parallel_scan(Kokkos::ThreadVectorRange(team,jnum), + [&] (const int jj, int& offset, bool final) { + int j = d_neighbors(i,jj); + j &= NEIGHMASK; + const F_FLOAT delx = x(j,0) - xtmp; + const F_FLOAT dely = x(j,1) - ytmp; + const F_FLOAT delz = x(j,2) - ztmp; + const F_FLOAT rsq = delx*delx + dely*dely + delz*delz; + if (rsq < cutsq) { + if (final) { + d_distsq(ii,offset) = rsq; + d_rlist(ii,offset,0) = delx; + d_rlist(ii,offset,1) = dely; + d_rlist(ii,offset,2) = delz; + d_nearest(ii,offset) = j; + } + offset++; + } + }); + } +} + +template +KOKKOS_INLINE_FUNCTION +void ComputeOrientOrderAtomKokkos::operator() (TagComputeOrientOrderAtomSelect3,const int& ii) const { + + const int i = d_ilist[ii]; + const int ncount = d_ncount(ii); + + // if not nnn neighbors, order parameter = 0; + + if ((ncount == 0) || (ncount < nnn)) { + for (int jj = 0; jj < ncol; jj++) + d_qnarray(i,jj) = 0.0; + return; + } + + // if nnn > 0, use only nearest nnn neighbors + + if (nnn > 0) { + select3(nnn, ncount, ii); + d_ncount(ii) = nnn; + } +} + +template +KOKKOS_INLINE_FUNCTION +void ComputeOrientOrderAtomKokkos::operator() (TagComputeOrientOrderAtomBOOP1,const typename Kokkos::TeamPolicy::member_type& team) const { + + // Extract the atom number + int ii = team.team_rank() + team.team_size() * (team.league_rank() % ((inum+team.team_size()-1)/team.team_size())); + if (ii >= inum) return; + + // Extract the neighbor number + const int jj = team.league_rank() / ((inum+team.team_size()-1)/team.team_size()); + const int ncount = d_ncount(ii); + if (jj >= ncount) return; + + // if not nnn neighbors, order parameter = 0; + + if ((ncount == 0) || (ncount < nnn)) + return; + + calc_boop1(ncount, ii, jj); +} + +template +KOKKOS_INLINE_FUNCTION +void ComputeOrientOrderAtomKokkos::operator() (TagComputeOrientOrderAtomBOOP2,const int& ii) const { + const int i = d_ilist[ii]; + const int ncount = d_ncount(ii); + calc_boop2(ncount, ii); +} + + +/* ---------------------------------------------------------------------- + select3 routine from Numerical Recipes (slightly modified) + find k smallest values in array of length n + sort auxiliary arrays at same time +------------------------------------------------------------------------- */ + +// Use no-op do while to create single statement + +#define SWAP(view,i,j) do { \ + tmp = view(i); view(i) = view(j); view(j) = tmp; \ + } while(0) + +#define ISWAP(view,i,j) do { \ + itmp = view(i); view(i) = view(j); view(j) = itmp; \ + } while(0) + +#define SWAP3(view,i,j) do { \ + tmp = view(i,0); view(i,0) = view(j,0); view(j,0) = tmp; \ + tmp = view(i,1); view(i,1) = view(j,1); view(j,1) = tmp; \ + tmp = view(i,2); view(i,2) = view(j,2); view(j,2) = tmp; \ + } while(0) + +/* ---------------------------------------------------------------------- */ + +template +KOKKOS_INLINE_FUNCTION +void ComputeOrientOrderAtomKokkos::select3(int k, int n, int iatom) const +{ + int i,ir,j,l,mid,ia,itmp; + double a,tmp,a3[3]; + + auto arr = Kokkos::subview(d_distsq_um, iatom, Kokkos::ALL); + auto iarr = Kokkos::subview(d_nearest_um, iatom, Kokkos::ALL); + auto arr3 = Kokkos::subview(d_rlist_um, iatom, Kokkos::ALL, Kokkos::ALL); + + l = 0; + ir = n-1; + for (;;) { + if (ir <= l+1) { + if (ir == l+1 && arr[ir] < arr[l]) { + SWAP(arr,l,ir); + ISWAP(iarr,l,ir); + SWAP3(arr3,l,ir); + } + return; + } else { + mid=((l+ir+2) >> 1) - 1; + SWAP(arr,mid,l+1); + ISWAP(iarr,mid,l+1); + SWAP3(arr3,mid,l+1); + if (arr[l] > arr[ir]) { + SWAP(arr,l,ir); + ISWAP(iarr,l,ir); + SWAP3(arr3,l,ir); + } + if (arr[l+1] > arr[ir]) { + SWAP(arr,l+1,ir); + ISWAP(iarr,l+1,ir); + SWAP3(arr3,l+1,ir); + } + if (arr[l] > arr[l+1]) { + SWAP(arr,l,l+1); + ISWAP(iarr,l,l+1); + SWAP3(arr3,l,l+1); + } + i = l+1; + j = ir; + a = arr[l+1]; + ia = iarr[l+1]; + a3[0] = arr3(l+1,0); + a3[1] = arr3(l+1,1); + a3[2] = arr3(l+1,2); + for (;;) { + do i++; while (arr[i] < a); + do j--; while (arr[j] > a); + if (j < i) break; + SWAP(arr,i,j); + ISWAP(iarr,i,j); + SWAP3(arr3,i,j); + } + arr[l+1] = arr[j]; + arr[j] = a; + iarr[l+1] = iarr[j]; + iarr[j] = ia; + arr3(l+1,0) = arr3(j,0); + arr3(l+1,1) = arr3(j,1); + arr3(l+1,2) = arr3(j,2); + arr3(j,0) = a3[0]; + arr3(j,1) = a3[1]; + arr3(j,2) = a3[2]; + if (j+1 >= k) ir = j-1; + if (j+1 <= k) l = i; + } + } +} + +/* ---------------------------------------------------------------------- + calculate the bond orientational order parameters +------------------------------------------------------------------------- */ + +template +KOKKOS_INLINE_FUNCTION +void ComputeOrientOrderAtomKokkos::calc_boop1(int ncount, int iatom, int ineigh) const +{ + const double r0 = d_rlist(iatom,ineigh,0); + const double r1 = d_rlist(iatom,ineigh,1); + const double r2 = d_rlist(iatom,ineigh,2); + const double rmag = sqrt(r0*r0 + r1*r1 + r2*r2); + if(rmag <= MY_EPSILON) { + return; + } + + const double costheta = r2 / rmag; + SNAcomplex expphi = {r0,r1}; + const double rxymag = sqrt(expphi.re*expphi.re+expphi.im*expphi.im); + if(rxymag <= MY_EPSILON) { + expphi.re = 1.0; + expphi.im = 0.0; + } else { + const double rxymaginv = 1.0/rxymag; + expphi.re *= rxymaginv; + expphi.im *= rxymaginv; + } + + for (int il = 0; il < nqlist; il++) { + const int l = d_qlist[il]; + + //d_qnm(iatom,il,l).re += polar_prefactor(l, 0, costheta); + const double polar_pf = polar_prefactor(l, 0, costheta); + Kokkos::atomic_add(&(d_qnm(iatom,il,l).re), polar_pf); + SNAcomplex expphim = {expphi.re,expphi.im}; + for(int m = 1; m <= +l; m++) { + const double prefactor = polar_prefactor(l, m, costheta); + SNAcomplex c = {prefactor * expphim.re, prefactor * expphim.im}; + //d_qnm(iatom,il,m+l).re += c.re; + //d_qnm(iatom,il,m+l).im += c.im; + Kokkos::atomic_add(&(d_qnm(iatom,il,m+l).re), c.re); + Kokkos::atomic_add(&(d_qnm(iatom,il,m+l).im), c.im); + if(m & 1) { + //d_qnm(iatom,il,-m+l).re -= c.re; + //d_qnm(iatom,il,-m+l).im += c.im; + Kokkos::atomic_add(&(d_qnm(iatom,il,-m+l).re), -c.re); + Kokkos::atomic_add(&(d_qnm(iatom,il,-m+l).im), c.im); + } else { + //d_qnm(iatom,il,-m+l).re += c.re; + //d_qnm(iatom,il,-m+l).im -= c.im; + Kokkos::atomic_add(&(d_qnm(iatom,il,-m+l).re), c.re); + Kokkos::atomic_add(&(d_qnm(iatom,il,-m+l).im), -c.im); + } + SNAcomplex tmp; + tmp.re = expphim.re*expphi.re - expphim.im*expphi.im; + tmp.im = expphim.re*expphi.im + expphim.im*expphi.re; + expphim.re = tmp.re; + expphim.im = tmp.im; + } + } +} + +/* ---------------------------------------------------------------------- + calculate the bond orientational order parameters +------------------------------------------------------------------------- */ + +template +KOKKOS_INLINE_FUNCTION +void ComputeOrientOrderAtomKokkos::calc_boop2(int ncount, int iatom) const +{ + // convert sums to averages + + double facn = 1.0 / ncount; + for (int il = 0; il < nqlist; il++) { + int l = d_qlist[il]; + for(int m = 0; m < 2*l+1; m++) { + d_qnm(iatom,il,m).re *= facn; + d_qnm(iatom,il,m).im *= facn; + } + } + + // calculate Q_l + // NOTE: optional W_l_hat and components of Q_qlcomp use these stored Q_l values + + int jj = 0; + for (int il = 0; il < nqlist; il++) { + int l = d_qlist[il]; + double qnormfac = sqrt(MY_4PI/(2*l+1)); + double qm_sum = 0.0; + for(int m = 0; m < 2*l+1; m++) + qm_sum += d_qnm(iatom,il,m).re*d_qnm(iatom,il,m).re + d_qnm(iatom,il,m).im*d_qnm(iatom,il,m).im; + d_qnarray(iatom,jj++) = qnormfac * sqrt(qm_sum); + } + + // calculate W_l + + if (wlflag) { + int idxcg_count = 0; + for (int il = 0; il < nqlist; il++) { + int l = d_qlist[il]; + double wlsum = 0.0; + for(int m1 = 0; m1 < 2*l+1; m1++) { + for(int m2 = MAX(0,l-m1); m2 < MIN(2*l+1,3*l-m1+1); m2++) { + int m = m1 + m2 - l; + SNAcomplex qm1qm2; + qm1qm2.re = d_qnm(iatom,il,m1).re*d_qnm(iatom,il,m2).re - d_qnm(iatom,il,m1).im*d_qnm(iatom,il,m2).im; + qm1qm2.im = d_qnm(iatom,il,m1).re*d_qnm(iatom,il,m2).im + d_qnm(iatom,il,m1).im*d_qnm(iatom,il,m2).re; + wlsum += (qm1qm2.re*d_qnm(iatom,il,m).re + qm1qm2.im*d_qnm(iatom,il,m).im)*d_cglist[idxcg_count]; + idxcg_count++; + } + } + d_qnarray(iatom,jj++) = wlsum/sqrt(2.0*l+1.0); + } + } + + // calculate W_l_hat + + if (wlhatflag) { + int idxcg_count = 0; + for (int il = 0; il < nqlist; il++) { + int l = d_qlist[il]; + double wlsum = 0.0; + for(int m1 = 0; m1 < 2*l+1; m1++) { + for(int m2 = MAX(0,l-m1); m2 < MIN(2*l+1,3*l-m1+1); m2++) { + const int m = m1 + m2 - l; + SNAcomplex qm1qm2; + qm1qm2.re = d_qnm(iatom,il,m1).re*d_qnm(iatom,il,m2).re - d_qnm(iatom,il,m1).im*d_qnm(iatom,il,m2).im; + qm1qm2.im = d_qnm(iatom,il,m1).re*d_qnm(iatom,il,m2).im + d_qnm(iatom,il,m1).im*d_qnm(iatom,il,m2).re; + wlsum += (qm1qm2.re*d_qnm(iatom,il,m).re + qm1qm2.im*d_qnm(iatom,il,m).im)*d_cglist[idxcg_count]; + idxcg_count++; + } + } + // Whats = [w/(q/np.sqrt(np.pi * 4 / (2 * l + 1)))**3 if abs(q) > 1.0e-6 else 0.0 for l,q,w in zip(range(1,max_l+1),Qs,Ws)] + if (d_qnarray(iatom,il) < QEPSILON) + d_qnarray(iatom,jj++) = 0.0; + else { + const double qnormfac = sqrt(MY_4PI/(2*l+1)); + const double qnfac = qnormfac/d_qnarray(iatom,il); + d_qnarray(iatom,jj++) = wlsum/sqrt(2.0*l+1.0)*(qnfac*qnfac*qnfac); + } + } + } + + // Calculate components of Q_l, for l=qlcomp + + if (qlcompflag) { + const int il = iqlcomp; + const int l = qlcomp; + if (d_qnarray(iatom,il) < QEPSILON) + for(int m = 0; m < 2*l+1; m++) { + d_qnarray(iatom,jj++) = 0.0; + d_qnarray(iatom,jj++) = 0.0; + } + else { + const double qnormfac = sqrt(MY_4PI/(2*l+1)); + const double qnfac = qnormfac/d_qnarray(iatom,il); + for(int m = 0; m < 2*l+1; m++) { + d_qnarray(iatom,jj++) = d_qnm(iatom,il,m).re * qnfac; + d_qnarray(iatom,jj++) = d_qnm(iatom,il,m).im * qnfac; + } + } + } + +} + +/* ---------------------------------------------------------------------- + polar prefactor for spherical harmonic Y_l^m, where + Y_l^m (theta, phi) = prefactor(l, m, cos(theta)) * exp(i*m*phi) +------------------------------------------------------------------------- */ + +template +KOKKOS_INLINE_FUNCTION +double ComputeOrientOrderAtomKokkos::polar_prefactor(int l, int m, double costheta) const +{ + const int mabs = abs(m); + + double prefactor = 1.0; + for (int i=l-mabs+1; i < l+mabs+1; ++i) + prefactor *= static_cast(i); + + prefactor = sqrt(static_cast(2*l+1)/(MY_4PI*prefactor)) + * associated_legendre(l,mabs,costheta); + + if ((m < 0) && (m % 2)) prefactor = -prefactor; + + return prefactor; +} + +/* ---------------------------------------------------------------------- + associated legendre polynomial +------------------------------------------------------------------------- */ + +template +KOKKOS_INLINE_FUNCTION +double ComputeOrientOrderAtomKokkos::associated_legendre(int l, int m, double x) const +{ + if (l < m) return 0.0; + + double p(1.0), pm1(0.0), pm2(0.0); + + if (m != 0) { + const double sqx = sqrt(1.0-x*x); + for (int i=1; i < m+1; ++i) + p *= static_cast(2*i-1) * sqx; + } + + for (int i=m+1; i < l+1; ++i) { + pm2 = pm1; + pm1 = p; + p = (static_cast(2*i-1)*x*pm1 + - static_cast(i+m-1)*pm2) / static_cast(i-m); + } + + return p; +} + +/* ---------------------------------------------------------------------- + assign Clebsch-Gordan coefficients + using the quasi-binomial formula VMK 8.2.1(3) + specialized for case j1=j2=j=l +------------------------------------------------------------------------- */ + +template +void ComputeOrientOrderAtomKokkos::init_clebsch_gordan() +{ + double sum,dcg,sfaccg, sfac1, sfac2; + int m, aa2, bb2, cc2; + int ifac, idxcg_count; + + idxcg_count = 0; + for (int il = 0; il < nqlist; il++) { + int l = qlist[il]; + for(int m1 = 0; m1 < 2*l+1; m1++) + for(int m2 = MAX(0,l-m1); m2 < MIN(2*l+1,3*l-m1+1); m2++) + idxcg_count++; + } + idxcg_max = idxcg_count; + d_cglist = t_sna_1d("orientorder/atom:d_cglist",idxcg_max); + auto h_cglist = Kokkos::create_mirror_view(d_cglist); + + idxcg_count = 0; + for (int il = 0; il < nqlist; il++) { + int l = qlist[il]; + for(int m1 = 0; m1 < 2*l+1; m1++) { + aa2 = m1 - l; + for(int m2 = MAX(0,l-m1); m2 < MIN(2*l+1,3*l-m1+1); m2++) { + bb2 = m2 - l; + m = aa2 + bb2 + l; + + sum = 0.0; + for (int z = MAX(0, MAX(-aa2, bb2)); + z <= MIN(l, MIN(l - aa2, l + bb2)); z++) { + ifac = z % 2 ? -1 : 1; + sum += ifac / + (factorial(z) * + factorial(l - z) * + factorial(l - aa2 - z) * + factorial(l + bb2 - z) * + factorial(aa2 + z) * + factorial(-bb2 + z)); + } + + cc2 = m - l; + sfaccg = sqrt(factorial(l + aa2) * + factorial(l - aa2) * + factorial(l + bb2) * + factorial(l - bb2) * + factorial(l + cc2) * + factorial(l - cc2) * + (2*l + 1)); + + sfac1 = factorial(3*l + 1); + sfac2 = factorial(l); + dcg = sqrt(sfac2*sfac2*sfac2 / sfac1); + + h_cglist[idxcg_count] = sum * dcg * sfaccg; + idxcg_count++; + } + } + } + Kokkos::deep_copy(d_cglist,h_cglist); +} + +namespace LAMMPS_NS { +template class ComputeOrientOrderAtomKokkos; +#ifdef KOKKOS_ENABLE_CUDA +template class ComputeOrientOrderAtomKokkos; +#endif +} diff --git a/src/KOKKOS/compute_orientorder_atom_kokkos.h b/src/KOKKOS/compute_orientorder_atom_kokkos.h new file mode 100644 index 0000000000..b0e96df0ec --- /dev/null +++ b/src/KOKKOS/compute_orientorder_atom_kokkos.h @@ -0,0 +1,150 @@ +/* -*- 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(orientorder/atom/kk,ComputeOrientOrderAtomKokkos) +ComputeStyle(orientorder/atom/kk/device,ComputeOrientOrderAtomKokkos) +ComputeStyle(orientorder/atom/kk/host,ComputeOrientOrderAtomKokkos) + +#else + +#ifndef LMP_COMPUTE_ORIENTORDER_ATOM_KOKKOS_H +#define LMP_COMPUTE_ORIENTORDER_ATOM_KOKKOS_H + +#include "compute_orientorder_atom.h" +#include "kokkos_type.h" + +namespace LAMMPS_NS { + +typedef double SNAreal; + +struct alignas(2*sizeof(SNAreal)) SNAcomplex{ + SNAreal re, im; + + KOKKOS_INLINE_FUNCTION + SNAcomplex() : re(0),im(0) + {} + + KOKKOS_INLINE_FUNCTION + SNAcomplex(SNAreal real_in, SNAreal imag_in) + :re(real_in),im(imag_in) + {} +}; + +struct TagComputeOrientOrderAtomNeigh{}; +struct TagComputeOrientOrderAtomSelect3{}; +struct TagComputeOrientOrderAtomBOOP1{}; +struct TagComputeOrientOrderAtomBOOP2{}; + +template +class ComputeOrientOrderAtomKokkos : public ComputeOrientOrderAtom { + 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_2i_lr; + typedef Kokkos::View > t_sna_2i_lr_um; + typedef Kokkos::View t_sna_2i; + typedef Kokkos::View t_sna_2d; + typedef Kokkos::View t_sna_2d_lr; + typedef Kokkos::DualView tdual_sna_2d_lr; + typedef Kokkos::View > t_sna_2d_lr_um; + typedef Kokkos::View t_sna_3d; + typedef Kokkos::View t_sna_3d_lr; + typedef Kokkos::View > t_sna_3d_lr_um; + typedef Kokkos::View t_sna_4d; + typedef Kokkos::View t_sna_3d3; + typedef Kokkos::View t_sna_5d; + + typedef Kokkos::View t_sna_1c; + typedef Kokkos::View > t_sna_1c_atomic; + typedef Kokkos::View t_sna_2c; + typedef Kokkos::View t_sna_2c_lr; + typedef Kokkos::View t_sna_3c; + typedef Kokkos::View t_sna_4c; + typedef Kokkos::View t_sna_3c3; + typedef Kokkos::View t_sna_5c; + + typedef DeviceType device_type; + typedef ArrayTypes AT; + typedef int value_type; + + ComputeOrientOrderAtomKokkos(class LAMMPS *, int, char **); + ~ComputeOrientOrderAtomKokkos(); + void init(); + void compute_peratom(); + t_sna_1i d_qlist; + + KOKKOS_INLINE_FUNCTION + void operator() (TagComputeOrientOrderAtomNeigh, const typename Kokkos::TeamPolicy::member_type& team) const; + + KOKKOS_INLINE_FUNCTION + void operator() (TagComputeOrientOrderAtomSelect3, const int& ii) const; + + KOKKOS_INLINE_FUNCTION + void operator() (TagComputeOrientOrderAtomBOOP1, const typename Kokkos::TeamPolicy::member_type& team) const; + + KOKKOS_INLINE_FUNCTION + void operator() (TagComputeOrientOrderAtomBOOP2, const int& ii) const; + + private: + int inum; + + typename AT::t_x_array_randomread x; + typename ArrayTypes::t_int_1d mask; + + typename AT::t_neighbors_2d d_neighbors; + typename AT::t_int_1d_randomread d_ilist; + typename AT::t_int_1d_randomread d_numneigh; + + t_sna_1i d_ncount; + t_sna_2d_lr d_distsq; + t_sna_2i_lr d_nearest; + t_sna_3d_lr d_rlist; + + t_sna_2d_lr_um d_distsq_um; + t_sna_2i_lr_um d_nearest_um; + t_sna_3d_lr_um d_rlist_um; + + tdual_sna_2d_lr k_qnarray; + t_sna_2d_lr d_qnarray; + t_sna_3c d_qnm; + + KOKKOS_INLINE_FUNCTION + void select3(int, int, int) const; + + KOKKOS_INLINE_FUNCTION + void calc_boop1(int, int, int) const; + + KOKKOS_INLINE_FUNCTION + void calc_boop2(int, int) const; + + KOKKOS_INLINE_FUNCTION + double polar_prefactor(int, int, double) const; + + KOKKOS_INLINE_FUNCTION + double associated_legendre(int, int, double) const; + + void init_clebsch_gordan(); + t_sna_1d d_cglist; // Clebsch-Gordan coeffs +}; + +} + +#endif +#endif + +/* ERROR/WARNING messages: + +*/ diff --git a/src/KSPACE/pair_born_coul_long.cpp b/src/KSPACE/pair_born_coul_long.cpp index b5b3eda64f..b4d050412a 100644 --- a/src/KSPACE/pair_born_coul_long.cpp +++ b/src/KSPACE/pair_born_coul_long.cpp @@ -47,6 +47,7 @@ PairBornCoulLong::PairBornCoulLong(LAMMPS *lmp) : Pair(lmp) ewaldflag = pppmflag = 1; ftable = NULL; writedata = 1; + cut_respa = NULL; } /* ---------------------------------------------------------------------- */ diff --git a/src/KSPACE/pair_buck_long_coul_long.cpp b/src/KSPACE/pair_buck_long_coul_long.cpp index 7f369045c3..6c731b73b3 100644 --- a/src/KSPACE/pair_buck_long_coul_long.cpp +++ b/src/KSPACE/pair_buck_long_coul_long.cpp @@ -52,6 +52,7 @@ PairBuckLongCoulLong::PairBuckLongCoulLong(LAMMPS *lmp) : Pair(lmp) writedata = 1; ftable = NULL; fdisptable = NULL; + cut_respa = NULL; } /* ---------------------------------------------------------------------- diff --git a/src/KSPACE/pair_coul_long.cpp b/src/KSPACE/pair_coul_long.cpp index 004835007d..9a9f2f3783 100644 --- a/src/KSPACE/pair_coul_long.cpp +++ b/src/KSPACE/pair_coul_long.cpp @@ -46,6 +46,7 @@ PairCoulLong::PairCoulLong(LAMMPS *lmp) : Pair(lmp) ewaldflag = pppmflag = 1; ftable = NULL; qdist = 0.0; + cut_respa = NULL; } /* ---------------------------------------------------------------------- */ diff --git a/src/KSPACE/pair_lj_charmm_coul_long.cpp b/src/KSPACE/pair_lj_charmm_coul_long.cpp index 22ed923b49..390005d80e 100644 --- a/src/KSPACE/pair_lj_charmm_coul_long.cpp +++ b/src/KSPACE/pair_lj_charmm_coul_long.cpp @@ -51,6 +51,7 @@ PairLJCharmmCoulLong::PairLJCharmmCoulLong(LAMMPS *lmp) : Pair(lmp) implicit = 0; mix_flag = ARITHMETIC; writedata = 1; + cut_respa = NULL; } /* ---------------------------------------------------------------------- */ diff --git a/src/KSPACE/pair_lj_charmmfsw_coul_long.cpp b/src/KSPACE/pair_lj_charmmfsw_coul_long.cpp index ce7fda5f18..0371ac42c5 100644 --- a/src/KSPACE/pair_lj_charmmfsw_coul_long.cpp +++ b/src/KSPACE/pair_lj_charmmfsw_coul_long.cpp @@ -55,6 +55,7 @@ PairLJCharmmfswCoulLong::PairLJCharmmfswCoulLong(LAMMPS *lmp) : Pair(lmp) implicit = 0; mix_flag = ARITHMETIC; writedata = 1; + cut_respa = NULL; // short-range/long-range flag accessed by DihedralCharmmfsw diff --git a/src/KSPACE/pair_lj_cut_coul_long.cpp b/src/KSPACE/pair_lj_cut_coul_long.cpp index 23e182435d..ff20dc2570 100644 --- a/src/KSPACE/pair_lj_cut_coul_long.cpp +++ b/src/KSPACE/pair_lj_cut_coul_long.cpp @@ -53,6 +53,7 @@ PairLJCutCoulLong::PairLJCutCoulLong(LAMMPS *lmp) : Pair(lmp) writedata = 1; ftable = NULL; qdist = 0.0; + cut_respa = NULL; } /* ---------------------------------------------------------------------- */ diff --git a/src/KSPACE/pair_lj_long_coul_long.cpp b/src/KSPACE/pair_lj_long_coul_long.cpp index 4af3cdeecd..94955d2d6d 100644 --- a/src/KSPACE/pair_lj_long_coul_long.cpp +++ b/src/KSPACE/pair_lj_long_coul_long.cpp @@ -55,6 +55,7 @@ PairLJLongCoulLong::PairLJLongCoulLong(LAMMPS *lmp) : Pair(lmp) ftable = NULL; fdisptable = NULL; qdist = 0.0; + cut_respa = NULL; } /* ---------------------------------------------------------------------- diff --git a/src/USER-PLUMED/fix_plumed.cpp b/src/USER-PLUMED/fix_plumed.cpp index b02de2af0d..e1f0ea0bfe 100644 --- a/src/USER-PLUMED/fix_plumed.cpp +++ b/src/USER-PLUMED/fix_plumed.cpp @@ -78,8 +78,9 @@ FixPlumed::FixPlumed(LAMMPS *lmp, int narg, char **arg) : int api_version; p->cmd("getApiVersion",&api_version); - if (api_version > 6) - error->all(FLERR,"Incompatible API version for PLUMED in fix plumed"); + if ((api_version < 5) || (api_version > 7)) + error->all(FLERR,"Incompatible API version for PLUMED in fix plumed. " + "Only Plumed 2.4.x, 2.5.x, and 2.6.x are tested and supported."); // If the -partition option is activated then enable // inter-partition communication diff --git a/src/compute_orientorder_atom.cpp b/src/compute_orientorder_atom.cpp index dcb104fc3a..2abe4e3bb3 100644 --- a/src/compute_orientorder_atom.cpp +++ b/src/compute_orientorder_atom.cpp @@ -162,6 +162,8 @@ ComputeOrientOrderAtom::ComputeOrientOrderAtom(LAMMPS *lmp, int narg, char **arg ComputeOrientOrderAtom::~ComputeOrientOrderAtom() { + if (copymode) return; + memory->destroy(qnarray); memory->destroy(distsq); memory->destroy(rlist); diff --git a/src/compute_orientorder_atom.h b/src/compute_orientorder_atom.h index 643875ccd0..46894db373 100644 --- a/src/compute_orientorder_atom.h +++ b/src/compute_orientorder_atom.h @@ -28,16 +28,16 @@ class ComputeOrientOrderAtom : public Compute { public: ComputeOrientOrderAtom(class LAMMPS *, int, char **); ~ComputeOrientOrderAtom(); - void init(); + virtual void init(); void init_list(int, class NeighList *); - void compute_peratom(); + virtual void compute_peratom(); double memory_usage(); double cutsq; int iqlcomp, qlcomp, qlcompflag, wlflag, wlhatflag; int *qlist; int nqlist; - private: + protected: int nmax,maxneigh,ncol,nnn; class NeighList *list; double *distsq; @@ -59,7 +59,7 @@ class ComputeOrientOrderAtom : public Compute { static const int nmaxfactorial = 167; static const double nfac_table[]; double factorial(int); - void init_clebsch_gordan(); + virtual void init_clebsch_gordan(); double *cglist; // Clebsch-Gordan coeffs int idxcg_max; }; diff --git a/src/lmptype.h b/src/lmptype.h index c1902e7ebe..65e46535fc 100644 --- a/src/lmptype.h +++ b/src/lmptype.h @@ -28,13 +28,6 @@ #ifndef LMP_LMPTYPE_H #define LMP_LMPTYPE_H -// C++11 check -#ifndef LAMMPS_CXX98 -#if __cplusplus <= 199711L - #error LAMMPS is planning to transition to C++11. To disable this error please use a C++11 compliant compiler, enable C++11 (or later) compliance, or define LAMMPS_CXX98 in your makefile -#endif -#endif - #ifndef __STDC_LIMIT_MACROS #define __STDC_LIMIT_MACROS #endif diff --git a/src/modify.cpp b/src/modify.cpp index 101540f786..864bc8f2b4 100644 --- a/src/modify.cpp +++ b/src/modify.cpp @@ -50,6 +50,7 @@ Modify::Modify(LAMMPS *lmp) : Pointers(lmp) n_pre_force_respa = n_post_force_respa = n_final_integrate_respa = 0; n_min_pre_exchange = n_min_pre_force = n_min_pre_reverse = 0; n_min_post_force = n_min_energy = 0; + n_timeflag = -1; fix = NULL; fmask = NULL; @@ -526,6 +527,11 @@ void Modify::thermo_energy_atom(int nlocal, double *energy) void Modify::post_run() { for (int i = 0; i < nfix; i++) fix[i]->post_run(); + + // must reset this to its default value, since computes may be added + // or removed between runs and with this change we will redirect any + // calls to addstep_compute() to addstep_compute_all() instead. + n_timeflag = -1; } /* ---------------------------------------------------------------------- @@ -1283,6 +1289,14 @@ void Modify::clearstep_compute() void Modify::addstep_compute(bigint newstep) { + // If we are called before the first run init, n_timeflag is not yet + // initialized, thus defer to addstep_compute_all() instead + + if (n_timeflag < 0) { + addstep_compute_all(newstep); + return; + } + for (int icompute = 0; icompute < n_timeflag; icompute++) if (compute[list_timeflag[icompute]]->invoked_flag) compute[list_timeflag[icompute]]->addstep(newstep); diff --git a/src/pair_coul_streitz.h b/src/pair_coul_streitz.h index c304365270..0f23c111c7 100644 --- a/src/pair_coul_streitz.h +++ b/src/pair_coul_streitz.h @@ -55,7 +55,6 @@ class PairCoulStreitz : public Pair { // Kspace parameters int kspacetype; double cut_coul, cut_coulsq; - double *cut_respa; double **scale; // Wolf diff --git a/src/pair_lj96_cut.cpp b/src/pair_lj96_cut.cpp index f554872965..8be6fefa44 100644 --- a/src/pair_lj96_cut.cpp +++ b/src/pair_lj96_cut.cpp @@ -41,6 +41,7 @@ PairLJ96Cut::PairLJ96Cut(LAMMPS *lmp) : Pair(lmp) { respa_enable = 1; writedata = 1; + cut_respa = NULL; } /* ---------------------------------------------------------------------- */ diff --git a/src/pair_mie_cut.cpp b/src/pair_mie_cut.cpp index 4ce82381f3..f031401a00 100644 --- a/src/pair_mie_cut.cpp +++ b/src/pair_mie_cut.cpp @@ -40,6 +40,7 @@ using namespace MathConst; PairMIECut::PairMIECut(LAMMPS *lmp) : Pair(lmp) { respa_enable = 1; + cut_respa = NULL; } /* ---------------------------------------------------------------------- */ diff --git a/src/reader_native.cpp b/src/reader_native.cpp index da2c97bbe5..26cb45a686 100644 --- a/src/reader_native.cpp +++ b/src/reader_native.cpp @@ -17,6 +17,7 @@ #include "atom.h" #include "memory.h" #include "error.h" +#include "utils.h" using namespace LAMMPS_NS; @@ -56,12 +57,15 @@ int ReaderNative::read_time(bigint &ntimestep) char *eof = fgets(line,MAXLINE,fp); if (eof == NULL) return 1; - // skip over unit information, if present. + // skip over unit and time information, if present. - if (strstr(line,"ITEM: UNITS") == line) + if (utils::strmatch(line,"^\\s*ITEM: UNITS\\s*$")) read_lines(2); - if (strstr(line,"ITEM: TIMESTEP") != line) + if (utils::strmatch(line,"^\\s*ITEM: TIME\\s*$")) + read_lines(2); + + if (!utils::strmatch(line,"^\\s*ITEM: TIMESTEP\\s*$")) error->one(FLERR,"Dump file is incorrectly formatted"); read_lines(1); diff --git a/src/set.cpp b/src/set.cpp index 9807b07ea4..e3b1962d5d 100644 --- a/src/set.cpp +++ b/src/set.cpp @@ -1084,13 +1084,18 @@ void Set::setrandom(int keyword) ranmars->select_subset(nsubset,count,flag,work); // change types of selected atoms + // flag vector from select_subset() is only for eligible atoms count = 0; - for (i = 0; i < nlocal; i++) - if (select[i] && flag[i]) { + int eligible = 0; + for (i = 0; i < nlocal; i++) { + if (!select[i]) continue; + if (flag[eligible]) { atom->type[i] = newtype; count++; } + eligible++; + } // clean up diff --git a/src/suffix.h b/src/suffix.h index 88629aa796..177990eb68 100644 --- a/src/suffix.h +++ b/src/suffix.h @@ -16,15 +16,16 @@ namespace LAMMPS_NS { -enum Suffix { - NONE = 0, - OPT = 1<<0, - GPU = 1<<1, - OMP = 1<<2, - INTEL = 1<<3, - KOKKOS = 1<<4 -}; - +namespace Suffix { + enum { + NONE = 0, + OPT = 1<<0, + GPU = 1<<1, + OMP = 1<<2, + INTEL = 1<<3, + KOKKOS = 1<<4 + }; +} } #endif diff --git a/src/version.h b/src/version.h index e43844a567..352680380b 100644 --- a/src/version.h +++ b/src/version.h @@ -1 +1 @@ -#define LAMMPS_VERSION "4 Feb 2020" +#define LAMMPS_VERSION "18 Feb 2020" -- GitLab From 796e1ac4e90d94bfdefb962af4b48c6eb659908e Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Mon, 24 Feb 2020 13:29:22 -0700 Subject: [PATCH 033/717] Update docs --- doc/src/compute_orientorder_atom.rst | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/doc/src/compute_orientorder_atom.rst b/doc/src/compute_orientorder_atom.rst index b864db82a7..7a294bed5e 100644 --- a/doc/src/compute_orientorder_atom.rst +++ b/doc/src/compute_orientorder_atom.rst @@ -3,6 +3,9 @@ compute orientorder/atom command ================================ +compute orientorder/atom/kk command +======================= + Syntax """""" @@ -132,6 +135,30 @@ too frequently. :doc:`special_bonds ` command that includes all pairs in the neighbor list. +---------- + + +Styles with a *gpu*\ , *intel*\ , *kk*\ , *omp*\ , or *opt* suffix are +functionally the same as the corresponding style without the suffix. +They have been optimized to run faster, depending on your available +hardware, as discussed on the :doc:`Speed packages ` doc +page. The accelerated styles take the same arguments and should +produce the same results, except for round-off and precision issues. + +These accelerated styles are part of the GPU, USER-INTEL, KOKKOS, +USER-OMP and OPT packages, respectively. They are only enabled if +LAMMPS was built with those packages. See the :doc:`Build package ` doc page for more info. + +You can specify the accelerated styles explicitly in your input script +by including their suffix, or you can use the :doc:`-suffix command-line switch ` when you invoke LAMMPS, or you can use the +:doc:`suffix ` command in your input script. + +See the :doc:`Speed packages ` doc page for more +instructions on how to use the accelerated styles effectively. + + +---------- + **Output info:** This compute calculates a per-atom array with *nlvalues* columns, -- GitLab From 29075c8257b20a6bb6df2b9bd9e8f89f672ce9b9 Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Mon, 24 Feb 2020 13:31:13 -0700 Subject: [PATCH 034/717] Fix compile issue --- src/KOKKOS/compute_orientorder_atom_kokkos.h | 15 ------------ src/KOKKOS/kokkos_type.h | 18 +++++++++++++++ src/KOKKOS/sna_kokkos.h | 24 -------------------- 3 files changed, 18 insertions(+), 39 deletions(-) diff --git a/src/KOKKOS/compute_orientorder_atom_kokkos.h b/src/KOKKOS/compute_orientorder_atom_kokkos.h index b0e96df0ec..9caa17136b 100644 --- a/src/KOKKOS/compute_orientorder_atom_kokkos.h +++ b/src/KOKKOS/compute_orientorder_atom_kokkos.h @@ -27,21 +27,6 @@ ComputeStyle(orientorder/atom/kk/host,ComputeOrientOrderAtomKokkos) namespace LAMMPS_NS { -typedef double SNAreal; - -struct alignas(2*sizeof(SNAreal)) SNAcomplex{ - SNAreal re, im; - - KOKKOS_INLINE_FUNCTION - SNAcomplex() : re(0),im(0) - {} - - KOKKOS_INLINE_FUNCTION - SNAcomplex(SNAreal real_in, SNAreal imag_in) - :re(real_in),im(imag_in) - {} -}; - struct TagComputeOrientOrderAtomNeigh{}; struct TagComputeOrientOrderAtomSelect3{}; struct TagComputeOrientOrderAtomBOOP1{}; diff --git a/src/KOKKOS/kokkos_type.h b/src/KOKKOS/kokkos_type.h index d21b9eecd2..7b6e86106d 100644 --- a/src/KOKKOS/kokkos_type.h +++ b/src/KOKKOS/kokkos_type.h @@ -1023,6 +1023,24 @@ struct params_lj_coul { F_FLOAT cut_ljsq,cut_coulsq,lj1,lj2,lj3,lj4,offset; }; +// Pair SNAP + +typedef double SNAreal; + +//typedef struct { SNAreal re, im; } SNAcomplex; +struct alignas(2*sizeof(SNAreal)) SNAcomplex{ + SNAreal re, im; + + KOKKOS_INLINE_FUNCTION + SNAcomplex() : re(0),im(0) + {} + + KOKKOS_INLINE_FUNCTION + SNAcomplex(SNAreal real_in, SNAreal imag_in) + :re(real_in),im(imag_in) + {} +}; + #if defined(KOKKOS_ENABLE_CXX11) #undef ISFINITE #define ISFINITE(x) std::isfinite(x) diff --git a/src/KOKKOS/sna_kokkos.h b/src/KOKKOS/sna_kokkos.h index 775c8eead4..12c986cc93 100644 --- a/src/KOKKOS/sna_kokkos.h +++ b/src/KOKKOS/sna_kokkos.h @@ -25,30 +25,6 @@ namespace LAMMPS_NS { -typedef double SNAreal; - -//typedef struct { SNAreal re, im; } SNAcomplex; -struct alignas(2*sizeof(SNAreal)) SNAcomplex{ - SNAreal re, im; - - KOKKOS_INLINE_FUNCTION - SNAcomplex() : re(0),im(0) - {} - - KOKKOS_INLINE_FUNCTION - SNAcomplex(SNAreal real_in, SNAreal imag_in) - :re(real_in),im(imag_in) - {} -}; - -//struct SNAKK_ZINDICES { -// int j1, j2, j, ma1min, ma2max, mb1min, mb2max, na, nb, jju; -//}; -// -//struct SNAKK_BINDICES { -// int j1, j2, j; -//}; - template class SNAKokkos { -- GitLab From c505058c5c7b9235e0d7e8e580d686974ddc0a96 Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Mon, 24 Feb 2020 15:43:29 -0700 Subject: [PATCH 035/717] Add flag for Kokkos computes --- src/KOKKOS/compute_orientorder_atom_kokkos.cpp | 1 + src/KOKKOS/compute_temp_kokkos.cpp | 1 + src/compute.cpp | 1 + src/compute.h | 2 +- 4 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/KOKKOS/compute_orientorder_atom_kokkos.cpp b/src/KOKKOS/compute_orientorder_atom_kokkos.cpp index 7915e4faa9..65bb08b18d 100644 --- a/src/KOKKOS/compute_orientorder_atom_kokkos.cpp +++ b/src/KOKKOS/compute_orientorder_atom_kokkos.cpp @@ -52,6 +52,7 @@ template ComputeOrientOrderAtomKokkos::ComputeOrientOrderAtomKokkos(LAMMPS *lmp, int narg, char **arg) : ComputeOrientOrderAtom(lmp, narg, arg) { + kokkosable = 1; atomKK = (AtomKokkos *) atom; execution_space = ExecutionSpaceFromDevice::space; datamask_read = EMPTY_MASK; diff --git a/src/KOKKOS/compute_temp_kokkos.cpp b/src/KOKKOS/compute_temp_kokkos.cpp index a2fcf63125..f5547d0200 100644 --- a/src/KOKKOS/compute_temp_kokkos.cpp +++ b/src/KOKKOS/compute_temp_kokkos.cpp @@ -31,6 +31,7 @@ template ComputeTempKokkos::ComputeTempKokkos(LAMMPS *lmp, int narg, char **arg) : ComputeTemp(lmp, narg, arg) { + kokkosable = 1; atomKK = (AtomKokkos *) atom; execution_space = ExecutionSpaceFromDevice::space; diff --git a/src/compute.cpp b/src/compute.cpp index cc92d2b5d3..4009396eb0 100644 --- a/src/compute.cpp +++ b/src/compute.cpp @@ -102,6 +102,7 @@ Compute::Compute(LAMMPS *lmp, int narg, char **arg) : datamask_modify = ALL_MASK; copymode = 0; + kokkosable = 0; } /* ---------------------------------------------------------------------- */ diff --git a/src/compute.h b/src/compute.h index c28af32c26..66974bf106 100644 --- a/src/compute.h +++ b/src/compute.h @@ -91,7 +91,7 @@ class Compute : protected Pointers { ExecutionSpace execution_space; unsigned int datamask_read,datamask_modify; - int copymode; + int copymode,kokkosable; Compute(class LAMMPS *, int, char **); virtual ~Compute(); -- GitLab From 59370d797f46ae2bfb66cc3ace93173f646bdc20 Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Tue, 25 Feb 2020 08:58:01 -0700 Subject: [PATCH 036/717] Use more generic type for k_qnarray --- src/KOKKOS/compute_orientorder_atom_kokkos.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/KOKKOS/compute_orientorder_atom_kokkos.h b/src/KOKKOS/compute_orientorder_atom_kokkos.h index 9caa17136b..d99942533f 100644 --- a/src/KOKKOS/compute_orientorder_atom_kokkos.h +++ b/src/KOKKOS/compute_orientorder_atom_kokkos.h @@ -102,8 +102,8 @@ class ComputeOrientOrderAtomKokkos : public ComputeOrientOrderAtom { t_sna_2i_lr_um d_nearest_um; t_sna_3d_lr_um d_rlist_um; - tdual_sna_2d_lr k_qnarray; - t_sna_2d_lr d_qnarray; + DAT::tdual_float_2d k_qnarray; + typename AT::t_float_2d d_qnarray; t_sna_3c d_qnm; KOKKOS_INLINE_FUNCTION -- GitLab From a3c5c49a6b8316fa4a4a9fcf2ca1513d2f42f6be Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Tue, 25 Feb 2020 10:20:21 -0700 Subject: [PATCH 037/717] Make k_qnarray public --- src/KOKKOS/compute_orientorder_atom_kokkos.h | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/KOKKOS/compute_orientorder_atom_kokkos.h b/src/KOKKOS/compute_orientorder_atom_kokkos.h index d99942533f..01d9993af2 100644 --- a/src/KOKKOS/compute_orientorder_atom_kokkos.h +++ b/src/KOKKOS/compute_orientorder_atom_kokkos.h @@ -83,6 +83,9 @@ class ComputeOrientOrderAtomKokkos : public ComputeOrientOrderAtom { KOKKOS_INLINE_FUNCTION void operator() (TagComputeOrientOrderAtomBOOP2, const int& ii) const; + DAT::tdual_float_2d k_qnarray; + typename AT::t_float_2d d_qnarray; + private: int inum; @@ -102,8 +105,6 @@ class ComputeOrientOrderAtomKokkos : public ComputeOrientOrderAtom { t_sna_2i_lr_um d_nearest_um; t_sna_3d_lr_um d_rlist_um; - DAT::tdual_float_2d k_qnarray; - typename AT::t_float_2d d_qnarray; t_sna_3c d_qnm; KOKKOS_INLINE_FUNCTION -- GitLab From a44e49e27630eb92873b0a93cd95ea600883fa1d Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Tue, 25 Feb 2020 10:22:30 -0700 Subject: [PATCH 038/717] Add Kokkos version of compute coord/atom --- src/KOKKOS/Install.sh | 2 + src/KOKKOS/compute_coord_atom_kokkos.cpp | 249 +++++++++++++++++++++++ src/KOKKOS/compute_coord_atom_kokkos.h | 78 +++++++ src/compute_coord_atom.cpp | 2 + src/compute_coord_atom.h | 8 +- 5 files changed, 335 insertions(+), 4 deletions(-) create mode 100644 src/KOKKOS/compute_coord_atom_kokkos.cpp create mode 100644 src/KOKKOS/compute_coord_atom_kokkos.h diff --git a/src/KOKKOS/Install.sh b/src/KOKKOS/Install.sh index 540389f599..e9a8ff96c8 100755 --- a/src/KOKKOS/Install.sh +++ b/src/KOKKOS/Install.sh @@ -85,6 +85,8 @@ action comm_kokkos.cpp action comm_kokkos.h action comm_tiled_kokkos.cpp action comm_tiled_kokkos.h +action compute_coord_atom_kokkos.cpp +action compute_coord_atom_kokkos.h action compute_orientorder_atom_kokkos.cpp action compute_orientorder_atom_kokkos.h action compute_temp_kokkos.cpp diff --git a/src/KOKKOS/compute_coord_atom_kokkos.cpp b/src/KOKKOS/compute_coord_atom_kokkos.cpp new file mode 100644 index 0000000000..3ce4e3b852 --- /dev/null +++ b/src/KOKKOS/compute_coord_atom_kokkos.cpp @@ -0,0 +1,249 @@ +/* ---------------------------------------------------------------------- + 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 "compute_coord_atom_kokkos.h" +#include +#include +#include "compute_orientorder_atom_kokkos.h" +#include "atom_kokkos.h" +#include "update.h" +#include "modify.h" +#include "neighbor_kokkos.h" +#include "neigh_list.h" +#include "neigh_request.h" +#include "force.h" +#include "pair.h" +#include "comm.h" +#include "group.h" +#include "memory_kokkos.h" +#include "error.h" +#include "atom_masks.h" + +using namespace LAMMPS_NS; + +#define INVOKED_PERATOM 8 + +/* ---------------------------------------------------------------------- */ + +template +ComputeCoordAtomKokkos::ComputeCoordAtomKokkos(LAMMPS *lmp, int narg, char **arg) : + ComputeCoordAtom(lmp, narg, arg) +{ + kokkosable = 1; + atomKK = (AtomKokkos *) atom; + execution_space = ExecutionSpaceFromDevice::space; + datamask_read = EMPTY_MASK; + datamask_modify = EMPTY_MASK; + + d_typelo = typename AT::t_int_1d("coord/atom:typelo",ncol); + d_typehi = typename AT::t_int_1d("coord/atom:typehi",ncol); + + auto h_typelo = Kokkos::create_mirror_view(d_typelo); + auto h_typehi = Kokkos::create_mirror_view(d_typehi); + + for (int i = 0; i < ncol; i++) { + h_typelo(i) = typelo[i]; + h_typehi(i) = typehi[i]; + } + + Kokkos::deep_copy(d_typelo,h_typelo); + Kokkos::deep_copy(d_typehi,h_typehi); +} + +/* ---------------------------------------------------------------------- */ + +template +ComputeCoordAtomKokkos::~ComputeCoordAtomKokkos() +{ + if (copymode) return; + + memoryKK->destroy_kokkos(k_cvec,cvec); + memoryKK->destroy_kokkos(k_carray,carray); +} + +/* ---------------------------------------------------------------------- */ + +template +void ComputeCoordAtomKokkos::init() +{ + ComputeCoordAtom::init(); + + // need an occasional full neighbor list + + // irequest = neigh request made by parent class + + int irequest = neighbor->nrequest - 1; + + neighbor->requests[irequest]-> + kokkos_host = Kokkos::Impl::is_same::value && + !Kokkos::Impl::is_same::value; + neighbor->requests[irequest]-> + kokkos_device = Kokkos::Impl::is_same::value; +} + +/* ---------------------------------------------------------------------- */ + +template +void ComputeCoordAtomKokkos::compute_peratom() +{ + invoked_peratom = update->ntimestep; + + // grow coordination array if necessary + + if (atom->nmax > nmax) { + if (ncol == 1) { + memoryKK->destroy_kokkos(k_cvec,cvec); + nmax = atom->nmax; + memoryKK->create_kokkos(k_cvec,cvec,nmax,"coord/atom:cvec"); + vector_atom = cvec; + d_cvec = k_cvec.template view(); + } else { + memoryKK->destroy_kokkos(k_carray,carray); + nmax = atom->nmax; + memoryKK->create_kokkos(k_carray,carray,nmax,ncol,"coord/atom:carray"); + array_atom = carray; + d_carray = k_carray.template view(); + } + } + + if (cstyle == ORIENT) { + if (!(c_orientorder->invoked_flag & INVOKED_PERATOM)) { + c_orientorder->compute_peratom(); + c_orientorder->invoked_flag |= INVOKED_PERATOM; + } + nqlist = c_orientorder->nqlist; + normv = c_orientorder->array_atom; + comm->forward_comm_compute(this); + + if (!c_orientorder->kokkosable) + error->all(FLERR,"Must use compute orientorder/atom/kk with compute coord/atom/kk"); + + if (c_orientorder->execution_space == Host) { + ComputeOrientOrderAtomKokkos* c_orientorder_kk; + c_orientorder_kk = (ComputeOrientOrderAtomKokkos*) c_orientorder; + c_orientorder_kk->k_qnarray.modify(); + c_orientorder_kk->k_qnarray.sync(); + d_normv = c_orientorder_kk->k_qnarray.view(); + } else { + ComputeOrientOrderAtomKokkos* c_orientorder_kk; + c_orientorder_kk = (ComputeOrientOrderAtomKokkos*) c_orientorder; + c_orientorder_kk->k_qnarray.modify(); + c_orientorder_kk->k_qnarray.sync(); + d_normv = c_orientorder_kk->k_qnarray.view(); + } + } + + // invoke full neighbor list (will copy or build if necessary) + + neighbor->build_one(list); + + inum = list->inum; + NeighListKokkos* k_list = static_cast*>(list); + d_numneigh = k_list->d_numneigh; + d_neighbors = k_list->d_neighbors; + d_ilist = k_list->d_ilist; + + // compute coordination number(s) for each atom in group + // use full neighbor list to count atoms less than cutoff + + atomKK->sync(execution_space,X_MASK|TYPE_MASK|MASK_MASK); + x = atomKK->k_x.view(); + type = atomKK->k_type.view(); + mask = atomKK->k_mask.view(); + + copymode = 1; + if (cstyle == CUTOFF) { + if (ncol == 1) { + typename Kokkos::RangePolicy > policy(0,inum); + Kokkos::parallel_for("ComputeCoordAtom",policy,*this); + } else { + typename Kokkos::RangePolicy > policy(0,inum); + Kokkos::parallel_for("ComputeCoordAtom",policy,*this); + } + } else if (cstyle == ORIENT) { + typename Kokkos::RangePolicy > policy(0,inum); + Kokkos::parallel_for("ComputeCoordAtom",policy,*this); + } + copymode = 0; + + if (ncol == 1 || cstyle == ORIENT) { + k_cvec.modify(); + k_cvec.sync(); + } else { + k_carray.modify(); + k_carray.sync(); + } + +} + +template +template +KOKKOS_INLINE_FUNCTION +void ComputeCoordAtomKokkos::operator()(TagComputeCoordAtom, const int &ii) const +{ + const int i = d_ilist[ii]; + if (NCOL == 1 || CSTYLE == ORIENT) + d_cvec(i) = 0.0; + else + for (int m = 0; m < ncol; m++) d_carray(i,m) = 0.0; + if (mask[i] & groupbit) { + const X_FLOAT xtmp = x(i,0); + const X_FLOAT ytmp = x(i,1); + const X_FLOAT ztmp = x(i,2); + const int jnum = d_numneigh[i]; + + int n = 0; + for (int jj = 0; jj < jnum; jj++) { + int j = d_neighbors(i,jj); + j &= NEIGHMASK; + + if (NCOL == 1) + if (!(mask[j] & jgroupbit)) continue; + + const int jtype = type[j]; + const F_FLOAT delx = x(j,0) - xtmp; + const F_FLOAT dely = x(j,1) - ytmp; + const F_FLOAT delz = x(j,2) - ztmp; + const F_FLOAT rsq = delx*delx + dely*dely + delz*delz; + if (rsq < cutsq) { + if (CSTYLE == CUTOFF) { + if (NCOL == 1) { + if (jtype >= d_typelo[0] && jtype <= d_typehi[0]) + n++; + } else { + for (int m = 0; m < ncol; m++) + if (jtype >= d_typelo[m] && jtype <= d_typehi[m]) + d_carray(i,m) += 1.0; + } + } else if (CSTYLE == ORIENT) { + double dot_product = 0.0; + for (int m=0; m < 2*(2*l+1); m++) { + dot_product += d_normv(i,nqlist+m)*d_normv(j,nqlist+m); + } + if (dot_product > threshold) n++; + } + } + } + + if (NCOL == 1 || CSTYLE == ORIENT) + d_cvec[i] = n; + } + +} + +namespace LAMMPS_NS { +template class ComputeCoordAtomKokkos; +#ifdef KOKKOS_ENABLE_CUDA +template class ComputeCoordAtomKokkos; +#endif +} diff --git a/src/KOKKOS/compute_coord_atom_kokkos.h b/src/KOKKOS/compute_coord_atom_kokkos.h new file mode 100644 index 0000000000..c77e8f8b45 --- /dev/null +++ b/src/KOKKOS/compute_coord_atom_kokkos.h @@ -0,0 +1,78 @@ +/* -*- 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(orientorder/atom/kk,ComputeCoordAtomKokkos) +ComputeStyle(orientorder/atom/kk/device,ComputeCoordAtomKokkos) +ComputeStyle(orientorder/atom/kk/host,ComputeCoordAtomKokkos) + +#else + +#ifndef LMP_COMPUTE_COORD_ATOM_KOKKOS_H +#define LMP_COMPUTE_COORD_ATOM_KOKKOS_H + +#include "compute_coord_atom.h" +#include "kokkos_type.h" + +namespace LAMMPS_NS { + +template +struct TagComputeCoordAtom{}; + +template +class ComputeCoordAtomKokkos : public ComputeCoordAtom { + public: + typedef DeviceType device_type; + typedef ArrayTypes AT; + + ComputeCoordAtomKokkos(class LAMMPS *, int, char **); + virtual ~ComputeCoordAtomKokkos(); + void init(); + void compute_peratom(); + enum {NONE,CUTOFF,ORIENT}; + + template + KOKKOS_INLINE_FUNCTION + void operator()(TagComputeCoordAtom, const int&) const; + + private: + int inum; + + typename AT::t_x_array_randomread x; + typename ArrayTypes::t_int_1d_randomread type; + typename ArrayTypes::t_int_1d mask; + + typename AT::t_neighbors_2d d_neighbors; + typename AT::t_int_1d_randomread d_ilist; + typename AT::t_int_1d_randomread d_numneigh; + + typename AT::t_int_1d d_typelo; + typename AT::t_int_1d d_typehi; + + DAT::tdual_float_1d k_cvec; + typename AT::t_float_1d d_cvec; + DAT::tdual_float_2d k_carray; + typename AT::t_float_2d d_carray; + + typename AT::t_float_2d d_normv; +}; + +} + +#endif +#endif + +/* ERROR/WARNING messages: + +*/ diff --git a/src/compute_coord_atom.cpp b/src/compute_coord_atom.cpp index 30747c1314..8f5e028390 100644 --- a/src/compute_coord_atom.cpp +++ b/src/compute_coord_atom.cpp @@ -119,6 +119,8 @@ ComputeCoordAtom::ComputeCoordAtom(LAMMPS *lmp, int narg, char **arg) : ComputeCoordAtom::~ComputeCoordAtom() { + if (copymode) return; + delete [] group2; delete [] typelo; delete [] typehi; diff --git a/src/compute_coord_atom.h b/src/compute_coord_atom.h index 2a54613cc6..31bab18d87 100644 --- a/src/compute_coord_atom.h +++ b/src/compute_coord_atom.h @@ -27,16 +27,16 @@ namespace LAMMPS_NS { class ComputeCoordAtom : public Compute { public: ComputeCoordAtom(class LAMMPS *, int, char **); - ~ComputeCoordAtom(); - void init(); + virtual ~ComputeCoordAtom(); + virtual void init(); void init_list(int, class NeighList *); - void compute_peratom(); + virtual void compute_peratom(); int pack_forward_comm(int, int *, double *, int, int *); void unpack_forward_comm(int, int, double *); double memory_usage(); enum {NONE,CUTOFF,ORIENT}; - private: + protected: int nmax,ncol; double cutsq; class NeighList *list; -- GitLab From 928ac7f2711021568691a981d115083e14973f0c Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Tue, 25 Feb 2020 10:34:29 -0700 Subject: [PATCH 039/717] Fix typo --- src/KOKKOS/compute_coord_atom_kokkos.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/KOKKOS/compute_coord_atom_kokkos.h b/src/KOKKOS/compute_coord_atom_kokkos.h index c77e8f8b45..f292994a18 100644 --- a/src/KOKKOS/compute_coord_atom_kokkos.h +++ b/src/KOKKOS/compute_coord_atom_kokkos.h @@ -13,9 +13,9 @@ #ifdef COMPUTE_CLASS -ComputeStyle(orientorder/atom/kk,ComputeCoordAtomKokkos) -ComputeStyle(orientorder/atom/kk/device,ComputeCoordAtomKokkos) -ComputeStyle(orientorder/atom/kk/host,ComputeCoordAtomKokkos) +ComputeStyle(coord/atom/kk,ComputeCoordAtomKokkos) +ComputeStyle(coord/atom/kk/device,ComputeCoordAtomKokkos) +ComputeStyle(coord/atom/kk/host,ComputeCoordAtomKokkos) #else -- GitLab From eb80fd303192df6fd7e5904131004d6bd7772831 Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Wed, 26 Feb 2020 14:26:46 -0700 Subject: [PATCH 040/717] Add method to copy Kokkos neighbor list to CPU list --- src/KOKKOS/neigh_list_kokkos.cpp | 24 ++++----- src/KOKKOS/neigh_list_kokkos.h | 16 +++--- src/KOKKOS/npair_copy_kokkos.cpp | 76 ++++++++++++++++++++++++++++ src/KOKKOS/npair_copy_kokkos.h | 3 ++ src/KOKKOS/npair_halffull_kokkos.cpp | 6 ++- src/KOKKOS/npair_kokkos.cpp | 5 +- src/KOKKOS/npair_ssa_kokkos.cpp | 2 + src/neigh_list.cpp | 6 ++- src/neigh_list.h | 1 + src/neighbor.cpp | 27 ++++++---- 10 files changed, 133 insertions(+), 33 deletions(-) diff --git a/src/KOKKOS/neigh_list_kokkos.cpp b/src/KOKKOS/neigh_list_kokkos.cpp index 2b9c5ef645..afaf0dd1b8 100644 --- a/src/KOKKOS/neigh_list_kokkos.cpp +++ b/src/KOKKOS/neigh_list_kokkos.cpp @@ -19,20 +19,20 @@ using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- */ -template -NeighListKokkos::NeighListKokkos(class LAMMPS *lmp):NeighList(lmp) +template +NeighListKokkos::NeighListKokkos(class LAMMPS *lmp):NeighList(lmp) { _stride = 1; maxneighs = 16; kokkos = 1; maxatoms = 0; - execution_space = ExecutionSpaceFromDevice::space; + execution_space = ExecutionSpaceFromDevice::space; }; /* ---------------------------------------------------------------------- */ -template -void NeighListKokkos::grow(int nmax) +template +void NeighListKokkos::grow(int nmax) { // skip if this list is already long enough to store nmax atoms // and maxneighs neighbors @@ -40,14 +40,12 @@ void NeighListKokkos::grow(int nmax) if (nmax <= maxatoms && d_neighbors.extent(1) >= maxneighs) return; maxatoms = nmax; - k_ilist = - DAT::tdual_int_1d("neighlist:ilist",maxatoms); - d_ilist = k_ilist.view(); - d_numneigh = - typename ArrayTypes::t_int_1d("neighlist:numneigh",maxatoms); - d_neighbors = - typename ArrayTypes::t_neighbors_2d("neighlist:neighbors", - maxatoms,maxneighs); + k_ilist = DAT::tdual_int_1d("neighlist:ilist",maxatoms); + d_ilist = k_ilist.view(); + k_numneigh = DAT::tdual_int_1d("neighlist:numneigh",maxatoms); + d_numneigh = k_numneigh.view(); + k_neighbors = DAT::tdual_neighbors_2d("neighlist:neighbors",maxatoms,maxneighs); + d_neighbors = k_neighbors.view(); } /* ---------------------------------------------------------------------- */ diff --git a/src/KOKKOS/neigh_list_kokkos.h b/src/KOKKOS/neigh_list_kokkos.h index 585422c54f..f8195a01f4 100644 --- a/src/KOKKOS/neigh_list_kokkos.h +++ b/src/KOKKOS/neigh_list_kokkos.h @@ -59,7 +59,7 @@ class AtomNeighborsConst const int _stride; }; -template +template class NeighListKokkos: public NeighList { int _stride; @@ -67,10 +67,12 @@ public: int maxneighs; void grow(int nmax); - typename ArrayTypes::t_neighbors_2d d_neighbors; - typename DAT::tdual_int_1d k_ilist; // local indices of I atoms - typename ArrayTypes::t_int_1d d_ilist; - typename ArrayTypes::t_int_1d d_numneigh; // # of J neighs for each I + DAT::tdual_neighbors_2d k_neighbors; + typename ArrayTypes::t_neighbors_2d d_neighbors; + DAT::tdual_int_1d k_ilist; // local indices of I atoms + typename ArrayTypes::t_int_1d d_ilist; + DAT::tdual_int_1d k_numneigh; // # of J neighs for each I + typename ArrayTypes::t_int_1d d_numneigh; NeighListKokkos(class LAMMPS *lmp); @@ -82,8 +84,8 @@ public: KOKKOS_INLINE_FUNCTION static AtomNeighborsConst static_neighbors_const(int i, - typename ArrayTypes::t_neighbors_2d_const const& d_neighbors, - typename ArrayTypes::t_int_1d_const const& d_numneigh) { + typename ArrayTypes::t_neighbors_2d_const const& d_neighbors, + typename ArrayTypes::t_int_1d_const const& d_numneigh) { return AtomNeighborsConst(&d_neighbors(i,0),d_numneigh(i), &d_neighbors(i,1)-&d_neighbors(i,0)); } diff --git a/src/KOKKOS/npair_copy_kokkos.cpp b/src/KOKKOS/npair_copy_kokkos.cpp index 0ce0f4d3ff..b0554db9ea 100644 --- a/src/KOKKOS/npair_copy_kokkos.cpp +++ b/src/KOKKOS/npair_copy_kokkos.cpp @@ -13,6 +13,8 @@ #include "npair_copy_kokkos.h" #include "neigh_list_kokkos.h" +#include "my_page.h" +#include "error.h" using namespace LAMMPS_NS; @@ -30,6 +32,24 @@ void NPairCopyKokkos::build(NeighList *list) { NeighList *listcopy = list->listcopy; + if (list->kokkos) { + if (!listcopy->kokkos) + error->all(FLERR,"Cannot copy non-Kokkos neighbor list to Kokkos neigh list"); + copy_to_kokkos(list); + } else { + if (!listcopy->kokkos) + error->all(FLERR,"Missing Kokkos neighbor list for copy"); + copy_to_cpu(list); + } +} + +/* ---------------------------------------------------------------------- */ + +template +void NPairCopyKokkos::copy_to_kokkos(NeighList *list) +{ + NeighList *listcopy = list->listcopy; + list->inum = listcopy->inum; list->gnum = listcopy->gnum; list->ilist = listcopy->ilist; @@ -44,6 +64,62 @@ void NPairCopyKokkos::build(NeighList *list) list_kk->d_neighbors = listcopy_kk->d_neighbors; } +/* ---------------------------------------------------------------------- */ + +template +void NPairCopyKokkos::copy_to_cpu(NeighList *list) +{ + NeighList *listcopy = list->listcopy; + NeighListKokkos* listcopy_kk = (NeighListKokkos*) listcopy; + + listcopy_kk->k_ilist.template sync(); + listcopy_kk->k_numneigh.template sync(); + listcopy_kk->k_neighbors.template sync(); + + int inum = listcopy->inum; + int gnum = listcopy->gnum; + int inum_all = inum; + if (list->ghost) inum_all += gnum; + auto h_ilist = listcopy_kk->k_ilist.h_view; + auto h_numneigh = listcopy_kk->k_numneigh.h_view; + auto h_neighbors = listcopy_kk->k_neighbors.h_view; + + list->inum = inum; + list->gnum = gnum; + auto ilist = list->ilist; + auto numneigh = list->numneigh; + + // Kokkos neighbor data is stored differently than regular CPU, + // must copy element by element + + int *neighptr; + int **firstneigh = list->firstneigh; + MyPage *ipage = list->ipage; + ipage->reset(); + + for (int ii = 0; ii < inum_all; ii++) { + neighptr = ipage->vget(); + + const int i = h_ilist[ii]; + ilist[ii] = i; + + // loop over Kokkos neighbor list + + const int jnum = h_numneigh[i]; + numneigh[i] = jnum; + + for (int jj = 0; jj < jnum; jj++) { + const int joriginal = h_neighbors(i,jj); + neighptr[jj] = joriginal; + } + + firstneigh[i] = neighptr; + ipage->vgot(jnum); + if (ipage->status()) + error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); + } +} + namespace LAMMPS_NS { template class NPairCopyKokkos; #ifdef KOKKOS_ENABLE_CUDA diff --git a/src/KOKKOS/npair_copy_kokkos.h b/src/KOKKOS/npair_copy_kokkos.h index 84eb10b204..4bbb2749e5 100644 --- a/src/KOKKOS/npair_copy_kokkos.h +++ b/src/KOKKOS/npair_copy_kokkos.h @@ -36,6 +36,9 @@ class NPairCopyKokkos : public NPair { NPairCopyKokkos(class LAMMPS *); ~NPairCopyKokkos() {} void build(class NeighList *); + private: + void copy_to_kokkos(class NeighList *); + void copy_to_cpu(class NeighList *); }; } diff --git a/src/KOKKOS/npair_halffull_kokkos.cpp b/src/KOKKOS/npair_halffull_kokkos.cpp index cc8f663ef2..754a5ca010 100644 --- a/src/KOKKOS/npair_halffull_kokkos.cpp +++ b/src/KOKKOS/npair_halffull_kokkos.cpp @@ -68,12 +68,14 @@ void NPairHalffullKokkos::build(NeighList *list) copymode = 1; Kokkos::parallel_for(Kokkos::RangePolicy(0,inum_full),*this); + copymode = 0; list->inum = k_list_full->inum; list->gnum = k_list_full->gnum; - k_list->k_ilist.template modify(); - copymode = 0; + k_list->k_ilist.template modify(); + k_list->k_numneigh.template modify(); + k_list->k_neighbors.template modify(); } template diff --git a/src/KOKKOS/npair_kokkos.cpp b/src/KOKKOS/npair_kokkos.cpp index aa2a1fc5ff..8dce226ef0 100644 --- a/src/KOKKOS/npair_kokkos.cpp +++ b/src/KOKKOS/npair_kokkos.cpp @@ -273,7 +273,8 @@ void NPairKokkos::build(NeighList *list_) if(data.h_resize()) { list->maxneighs = data.h_new_maxneighs() * 1.2; - list->d_neighbors = typename ArrayTypes::t_neighbors_2d("neighbors", list->d_neighbors.extent(0), list->maxneighs); + list->k_neighbors = DAT::tdual_neighbors_2d("neighbors", list->d_neighbors.extent(0), list->maxneighs); + list->d_neighbors = list->k_neighbors.template view(); data.neigh_list.d_neighbors = list->d_neighbors; data.neigh_list.maxneighs = list->maxneighs; } @@ -288,6 +289,8 @@ void NPairKokkos::build(NeighList *list_) } list->k_ilist.template modify(); + list->k_numneigh.template modify(); + list->k_neighbors.template modify(); } /* ---------------------------------------------------------------------- */ diff --git a/src/KOKKOS/npair_ssa_kokkos.cpp b/src/KOKKOS/npair_ssa_kokkos.cpp index 5234c4e6d2..b5f892958b 100644 --- a/src/KOKKOS/npair_ssa_kokkos.cpp +++ b/src/KOKKOS/npair_ssa_kokkos.cpp @@ -519,6 +519,8 @@ fprintf(stdout, "Fina%03d %6d inum %6d gnum, total used %6d, allocated %6d\n" #endif list->k_ilist.template modify(); + list->k_numneigh.template modify(); + list->k_neighbors.template modify(); } diff --git a/src/neigh_list.cpp b/src/neigh_list.cpp index 1c53b2f7a4..c01f8ca595 100644 --- a/src/neigh_list.cpp +++ b/src/neigh_list.cpp @@ -80,6 +80,7 @@ NeighList::NeighList(LAMMPS *lmp) : Pointers(lmp) // Kokkos package kokkos = 0; + kk2cpu = 0; execution_space = Host; // USER-DPD package @@ -143,8 +144,11 @@ void NeighList::post_constructor(NeighRequest *nq) respainner = nq->respainner; copy = nq->copy; - if (nq->copy) + if (nq->copy) { listcopy = neighbor->lists[nq->copylist]; + if (listcopy->kokkos && !this->kokkos) + kk2cpu = 1; + } if (nq->skip) { listskip = neighbor->lists[nq->skiplist]; diff --git a/src/neigh_list.h b/src/neigh_list.h index 146a01e7b5..501188a724 100644 --- a/src/neigh_list.h +++ b/src/neigh_list.h @@ -42,6 +42,7 @@ class NeighList : protected Pointers { int respamiddle; // 1 if there is also a rRespa middle list int respainner; // 1 if there is also a rRespa inner list int copy; // 1 if this list is copied from another list + int kk2cpu; // 1 if this list is copied from Kokkos to CPU int copymode; // 1 if this is a Kokkos on-device copy // data structs to store neighbor pairs I,J and associated values diff --git a/src/neighbor.cpp b/src/neighbor.cpp index 3d1f37a03b..5783c24d2d 100644 --- a/src/neighbor.cpp +++ b/src/neighbor.cpp @@ -849,7 +849,8 @@ int Neighbor::init_pair() // allocate initial pages for each list, except if copy flag set for (i = 0; i < nlist; i++) { - if (lists[i]->copy) continue; + if (lists[i]->copy && !lists[i]->kk2cpu) + continue; lists[i]->setup_pages(pgsize,oneatom); } @@ -860,8 +861,10 @@ int Neighbor::init_pair() // also Kokkos list initialization int maxatom = atom->nmax; - for (i = 0; i < nlist; i++) - if (neigh_pair[i] && !lists[i]->copy) lists[i]->grow(maxatom,maxatom); + for (i = 0; i < nlist; i++) { + if (neigh_pair[i] && (!lists[i]->copy || lists[i]->kk2cpu)) + lists[i]->grow(maxatom,maxatom); + } // plist = indices of perpetual NPair classes // perpetual = non-occasional, re-built at every reneighboring @@ -1257,8 +1260,8 @@ void Neighbor::morph_copy() if (irq->history != jrq->history) continue; if (irq->bond != jrq->bond) continue; if (irq->intel != jrq->intel) continue; - if (irq->kokkos_host != jrq->kokkos_host) continue; - if (irq->kokkos_device != jrq->kokkos_device) continue; + if (irq->kokkos_host && !jrq->kokkos_host) continue; + if (irq->kokkos_device && !jrq->kokkos_device) continue; if (irq->ssa != jrq->ssa) continue; if (irq->cut != jrq->cut) continue; if (irq->cutoff != jrq->cutoff) continue; @@ -1789,8 +1792,12 @@ int Neighbor::choose_pair(NeighRequest *rq) if (rq->copy) { if (!(mask & NP_COPY)) continue; - if (!rq->kokkos_device != !(mask & NP_KOKKOS_DEVICE)) continue; - if (!rq->kokkos_host != !(mask & NP_KOKKOS_HOST)) continue; + if (rq->kokkos_device || rq->kokkos_host) { + if (!rq->kokkos_device != !(mask & NP_KOKKOS_DEVICE)) continue; + if (!rq->kokkos_host != !(mask & NP_KOKKOS_HOST)) continue; + } + if (!requests[rq->copylist]->kokkos_device != !(mask & NP_KOKKOS_DEVICE)) continue; + if (!requests[rq->copylist]->kokkos_host != !(mask & NP_KOKKOS_HOST)) continue; return i+1; } @@ -2102,7 +2109,8 @@ void Neighbor::build(int topoflag) for (i = 0; i < npair_perpetual; i++) { m = plist[i]; - if (!lists[m]->copy) lists[m]->grow(nlocal,nall); + if (!lists[i]->copy || lists[i]->kk2cpu) + lists[m]->grow(nlocal,nall); neigh_pair[m]->build_setup(); neigh_pair[m]->build(lists[m]); } @@ -2191,7 +2199,8 @@ void Neighbor::build_one(class NeighList *mylist, int preflag) // build the list - if (!mylist->copy) mylist->grow(atom->nlocal,atom->nlocal+atom->nghost); + if (!mylist->copy || mylist->kk2cpu) + mylist->grow(atom->nlocal,atom->nlocal+atom->nghost); np->build_setup(); np->build(mylist); } -- GitLab From c31917186ec6d5dd3be52a327df36c36c840b417 Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Wed, 26 Feb 2020 14:34:42 -0700 Subject: [PATCH 041/717] Tweak error message --- src/KOKKOS/npair_copy_kokkos.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/KOKKOS/npair_copy_kokkos.cpp b/src/KOKKOS/npair_copy_kokkos.cpp index b0554db9ea..016d68400f 100644 --- a/src/KOKKOS/npair_copy_kokkos.cpp +++ b/src/KOKKOS/npair_copy_kokkos.cpp @@ -34,7 +34,7 @@ void NPairCopyKokkos::build(NeighList *list) if (list->kokkos) { if (!listcopy->kokkos) - error->all(FLERR,"Cannot copy non-Kokkos neighbor list to Kokkos neigh list"); + error->all(FLERR,"Cannot copy non-Kokkos neighbor list to Kokkos neighbor list"); copy_to_kokkos(list); } else { if (!listcopy->kokkos) -- GitLab From a739b8c6b766709a67265966753c9b401f9180af Mon Sep 17 00:00:00 2001 From: julient31 Date: Tue, 3 Mar 2020 07:32:13 -0700 Subject: [PATCH 042/717] Commit JT 030320 - modified fix/precession for correct mag energy calc. - reran all benchmark / examples in serial for verif - to do: rerun mpi examples, and clean code --- examples/SPIN/bfo/in.spin.bfo | 8 +- examples/SPIN/cobalt_fcc/in.spin.cobalt_fcc | 4 +- examples/SPIN/cobalt_hcp/in.spin.cobalt_hcp | 9 +- examples/SPIN/iron/in.spin.iron | 1 + examples/SPIN/nickel/in.spin.nickel | 3 +- examples/SPIN/nickel/in.spin.nickel_cubic | 2 +- examples/SPIN/read_restart/in.spin.read_data | 4 +- examples/SPIN/read_restart/in.spin.restart | 4 +- .../SPIN/read_restart/in.spin.write_restart | 3 +- examples/SPIN/run_spin_examples.sh | 2 +- examples/SPIN/run_spin_examples_serial.sh | 120 ++++++++++++++++++ examples/SPIN/setforce_spin/in.spin.setforce | 2 +- examples/SPIN/test_problems/README | 22 ++-- .../run-test-exchange.sh | 2 +- ...-precession.in => test-spin-precession.in} | 0 .../validation_damped_exchange/two_spins.data | 22 ++++ .../run-test-prec.sh | 2 +- ...-precession.in => test-spin-precession.in} | 1 + .../bench-prec-spin.in | 46 +++++++ .../run-test-prec.sh | 7 +- ...-spin.template => test-prec-spin.template} | 0 src/SPIN/compute_spin.cpp | 21 ++- src/SPIN/fix_precession_spin.cpp | 28 +++- src/SPIN/fix_precession_spin.h | 4 + src/SPIN/pair_spin.cpp | 2 +- 25 files changed, 272 insertions(+), 47 deletions(-) create mode 100755 examples/SPIN/run_spin_examples_serial.sh rename examples/SPIN/test_problems/validation_damped_exchange/{bench-spin-precession.in => test-spin-precession.in} (100%) create mode 100644 examples/SPIN/test_problems/validation_damped_exchange/two_spins.data rename examples/SPIN/test_problems/validation_damped_precession/{bench-spin-precession.in => test-spin-precession.in} (92%) create mode 100644 examples/SPIN/test_problems/validation_langevin_precession/bench-prec-spin.in rename examples/SPIN/test_problems/validation_langevin_precession/{bench-prec-spin.template => test-prec-spin.template} (100%) diff --git a/examples/SPIN/bfo/in.spin.bfo b/examples/SPIN/bfo/in.spin.bfo index b97f7e2d61..47ba535ab6 100644 --- a/examples/SPIN/bfo/in.spin.bfo +++ b/examples/SPIN/bfo/in.spin.bfo @@ -27,7 +27,8 @@ pair_coeff * * spin/dmi dmi 4.5 0.00005 1.0 1.0 1.0 neighbor 0.1 bin neigh_modify every 10 check yes delay 20 -fix 1 all precession/spin anisotropy 0.0000033 0.0 0.0 1.0 +fix 1 all precession/spin zeeman 0.0 0.0 0.0 1.0 anisotropy 0.00033 0.0 0.0 1.0 +fix_modify 1 energy yes fix 2 all langevin/spin 0.0 0.1 21 fix 3 all nve/spin lattice frozen @@ -43,9 +44,8 @@ variable magnorm equal c_out_mag[4] variable emag equal c_out_mag[5] variable tmag equal c_out_mag[6] -#thermo_style custom step time v_magnorm v_emag temp etotal -thermo_style custom step time v_magnorm pe ke v_emag temp etotal -thermo 10 +thermo_style custom step time v_magnorm pe v_emag temp etotal +thermo 50 compute outsp all property/atom spx spy spz sp fmx fmy fmz dump 1 all custom 100 dump_bfo.lammpstrj type x y z c_outsp[1] c_outsp[2] c_outsp[3] diff --git a/examples/SPIN/cobalt_fcc/in.spin.cobalt_fcc b/examples/SPIN/cobalt_fcc/in.spin.cobalt_fcc index dd9ed890ee..f81a962e3f 100644 --- a/examples/SPIN/cobalt_fcc/in.spin.cobalt_fcc +++ b/examples/SPIN/cobalt_fcc/in.spin.cobalt_fcc @@ -45,8 +45,6 @@ compute out_pe all pe compute out_ke all ke compute out_temp all temp -thermo_style custom f_1 - variable magx equal c_out_mag[1] variable magy equal c_out_mag[2] variable magz equal c_out_mag[3] @@ -54,7 +52,7 @@ variable magnorm equal c_out_mag[4] variable emag equal c_out_mag[5] variable tmag equal c_out_mag[6] -thermo_style custom step time f_1 v_magx v_magy v_magnorm v_emag temp etotal +thermo_style custom step time v_magx v_magy v_magnorm pe v_emag temp etotal thermo 50 # compute outsp all property/atom spx spy spz sp fmx fmy fmz diff --git a/examples/SPIN/cobalt_hcp/in.spin.cobalt_hcp b/examples/SPIN/cobalt_hcp/in.spin.cobalt_hcp index dd114202cb..2bfa8393f3 100644 --- a/examples/SPIN/cobalt_hcp/in.spin.cobalt_hcp +++ b/examples/SPIN/cobalt_hcp/in.spin.cobalt_hcp @@ -32,10 +32,9 @@ pair_coeff * * spin/exchange exchange 4.0 -0.3593 1.135028015e-05 1.064568567 neighbor 0.1 bin neigh_modify every 10 check yes delay 20 -#fix 1 all precession/spin zeeman 1.0 0.0 0.0 1.0 fix 1 all precession/spin anisotropy 0.01 0.0 0.0 1.0 -#fix 2 all langevin/spin 0.0 0.0 21 -fix 2 all langevin/spin 0.0 0.1 21 +fix_modify 1 energy yes +fix 2 all langevin/spin 0.0 0.0 21 fix 3 all nve/spin lattice moving timestep 0.0001 @@ -51,8 +50,8 @@ variable magnorm equal c_out_mag[4] variable emag equal c_out_mag[5] variable tmag equal c_out_mag[6] -thermo_style custom step time v_magnorm v_emag temp press etotal -thermo 10 +thermo_style custom step time v_magnorm pe v_emag temp press etotal +thermo 50 compute outsp all property/atom spx spy spz sp fmx fmy fmz dump 1 all custom 100 dump_cobalt_hcp.lammpstrj type x y z c_outsp[1] c_outsp[2] c_outsp[3] diff --git a/examples/SPIN/iron/in.spin.iron b/examples/SPIN/iron/in.spin.iron index d60e6b86f5..58c0537af7 100644 --- a/examples/SPIN/iron/in.spin.iron +++ b/examples/SPIN/iron/in.spin.iron @@ -31,6 +31,7 @@ neighbor 0.1 bin neigh_modify every 10 check yes delay 20 fix 1 all precession/spin zeeman 0.0 0.0 0.0 1.0 +fix_modify 1 energy yes fix 2 all langevin/spin 0.0 0.0 21 fix 3 all nve/spin lattice moving diff --git a/examples/SPIN/nickel/in.spin.nickel b/examples/SPIN/nickel/in.spin.nickel index 1d62188d8f..0fd2e5f345 100644 --- a/examples/SPIN/nickel/in.spin.nickel +++ b/examples/SPIN/nickel/in.spin.nickel @@ -31,6 +31,7 @@ neighbor 0.1 bin neigh_modify every 10 check yes delay 20 fix 1 all precession/spin zeeman 0.0 0.0 0.0 1.0 +fix_modify 1 energy yes fix 2 all langevin/spin 0.0 0.0 21 fix 3 all nve/spin lattice moving @@ -48,7 +49,7 @@ variable magnorm equal c_out_mag[4] variable emag equal c_out_mag[5] variable tmag equal c_out_mag[6] -thermo_style custom step time v_magnorm v_emag temp v_tmag etotal +thermo_style custom step time v_magnorm pe v_emag temp v_tmag etotal thermo 50 compute outsp all property/atom spx spy spz sp fmx fmy fmz diff --git a/examples/SPIN/nickel/in.spin.nickel_cubic b/examples/SPIN/nickel/in.spin.nickel_cubic index 1ae069a64f..88c477132e 100644 --- a/examples/SPIN/nickel/in.spin.nickel_cubic +++ b/examples/SPIN/nickel/in.spin.nickel_cubic @@ -50,7 +50,7 @@ variable magnorm equal c_out_mag[4] variable emag equal c_out_mag[5] variable tmag equal c_out_mag[6] -thermo_style custom step time v_magnorm v_emag temp v_tmag etotal +thermo_style custom step time v_magnorm pe v_emag temp v_tmag etotal thermo 50 compute outsp all property/atom spx spy spz sp fmx fmy fmz diff --git a/examples/SPIN/read_restart/in.spin.read_data b/examples/SPIN/read_restart/in.spin.read_data index e788ecf67e..b2b55a9fcb 100644 --- a/examples/SPIN/read_restart/in.spin.read_data +++ b/examples/SPIN/read_restart/in.spin.read_data @@ -35,8 +35,8 @@ variable magnorm equal c_out_mag[4] variable emag equal c_out_mag[5] variable tmag equal c_out_mag[6] -thermo 10 -thermo_style custom step time v_magnorm v_emag v_tmag temp etotal +thermo 20 +thermo_style custom step time v_magnorm pe v_emag v_tmag temp etotal thermo_modify format float %20.15g compute outsp all property/atom spx spy spz sp fmx fmy fmz diff --git a/examples/SPIN/read_restart/in.spin.restart b/examples/SPIN/read_restart/in.spin.restart index ccce25b254..985da65eb4 100644 --- a/examples/SPIN/read_restart/in.spin.restart +++ b/examples/SPIN/read_restart/in.spin.restart @@ -39,8 +39,8 @@ variable magnorm equal c_out_mag[4] variable emag equal c_out_mag[5] variable tmag equal c_out_mag[6] -thermo 10 -thermo_style custom step time v_magnorm v_emag v_tmag temp etotal +thermo 20 +thermo_style custom step time v_magnorm pe v_emag v_tmag temp etotal thermo_modify format float %20.15g compute outsp all property/atom spx spy spz sp fmx fmy fmz diff --git a/examples/SPIN/read_restart/in.spin.write_restart b/examples/SPIN/read_restart/in.spin.write_restart index c127101093..19ab8e6b30 100644 --- a/examples/SPIN/read_restart/in.spin.write_restart +++ b/examples/SPIN/read_restart/in.spin.write_restart @@ -44,7 +44,7 @@ variable magnorm equal c_out_mag[4] variable emag equal c_out_mag[5] variable tmag equal c_out_mag[6] -thermo_style custom step time v_magnorm v_emag temp etotal +thermo_style custom step time v_magnorm pe v_emag temp etotal thermo 100 compute outsp all property/atom spx spy spz sp fmx fmy fmz @@ -52,4 +52,3 @@ dump 100 all custom 1 dump.lammpstrj type x y z c_outsp[1] c_outsp[2] c_outsp[ run 1000 write_restart restart_hcp_cobalt.equil - diff --git a/examples/SPIN/run_spin_examples.sh b/examples/SPIN/run_spin_examples.sh index a71da82a04..b2188503ee 100755 --- a/examples/SPIN/run_spin_examples.sh +++ b/examples/SPIN/run_spin_examples.sh @@ -1,6 +1,6 @@ #!/bin/bash -DATE=19Nov19 +DATE=21Fev20 # bfo cd bfo/ diff --git a/examples/SPIN/run_spin_examples_serial.sh b/examples/SPIN/run_spin_examples_serial.sh new file mode 100755 index 0000000000..f367dfd8f4 --- /dev/null +++ b/examples/SPIN/run_spin_examples_serial.sh @@ -0,0 +1,120 @@ +#!/bin/bash + +DATE=21Fev20 + +# bfo +cd bfo/ +../../../src/lmp_serial -in in.spin.bfo +cp log.lammps log.${DATE}.spin.bfo.g++.1 +../../../src/lmp_serial -in in.spin.bfo +cp log.lammps log.${DATE}.spin.bfo.g++.4 +rm log.lammps log.cite dump*.lammpstrj +cd .. + +# fcc cobalt +cd cobalt_fcc/ +../../../src/lmp_serial -in in.spin.cobalt_fcc +cp log.lammps log.${DATE}.spin.cobalt_fcc.g++.1 +../../../src/lmp_serial -in in.spin.cobalt_fcc +cp log.lammps log.${DATE}.spin.cobalt_fcc.g++.4 +rm log.lammps log.cite dump*.lammpstrj +cd .. + +# hcp cobalt +cd cobalt_hcp/ +../../../src/lmp_serial -in in.spin.cobalt_hcp +cp log.lammps log.${DATE}.spin.cobalt_hcp.g++.1 +../../../src/lmp_serial -in in.spin.cobalt_hcp +cp log.lammps log.${DATE}.spin.cobalt_hcp.g++.4 +rm log.lammps log.cite dump*.lammpstrj +cd .. + +# dipole spin +cd dipole_spin/ +../../../src/lmp_serial -in in.spin.iron_dipole_cut +cp log.lammps log.${DATE}.spin.iron_dipole_cut.g++.1 +../../../src/lmp_serial -in in.spin.iron_dipole_cut +cp log.lammps log.${DATE}.spin.iron_dipole_cut.g++.4 +../../../src/lmp_serial -in in.spin.iron_dipole_ewald +cp log.lammps log.${DATE}.spin.iron_dipole_ewald.g++.1 +../../../src/lmp_serial -in in.spin.iron_dipole_ewald +cp log.lammps log.${DATE}.spin.iron_dipole_ewald.g++.4 +../../../src/lmp_serial -in in.spin.iron_dipole_pppm +cp log.lammps log.${DATE}.spin.iron_dipole_pppm.g++.1 +../../../src/lmp_serial -in in.spin.iron_dipole_pppm +cp log.lammps log.${DATE}.spin.iron_dipole_pppm.g++.4 +rm log.lammps log.cite dump*.lammpstrj +cd .. + +# bcc iron +cd iron/ +../../../src/lmp_serial -in in.spin.iron +cp log.lammps log.${DATE}.spin.iron.g++.1 +../../../src/lmp_serial -in in.spin.iron +cp log.lammps log.${DATE}.spin.iron.g++.4 +../../../src/lmp_serial -in in.spin.iron_cubic +cp log.lammps log.${DATE}.spin.iron_cubic.g++.1 +../../../src/lmp_serial -in in.spin.iron_cubic +cp log.lammps log.${DATE}.spin.iron_cubic.g++.4 +rm log.lammps log.cite dump*.lammpstrj +cd .. + +# fcc nickel +cd nickel/ +../../../src/lmp_serial -in in.spin.nickel +cp log.lammps log.${DATE}.spin.nickel.g++.1 +../../../src/lmp_serial -in in.spin.nickel +cp log.lammps log.${DATE}.spin.nickel.g++.4 +../../../src/lmp_serial -in in.spin.nickel_cubic +cp log.lammps log.${DATE}.spin.nickel_cubic.g++.1 +../../../src/lmp_serial -in in.spin.nickel_cubic +cp log.lammps log.${DATE}.spin.nickel_cubic.g++.4 +rm log.lammps log.cite dump*.lammpstrj +cd .. + +# read restart +cd read_restart/ +../../../src/lmp_serial -in in.spin.write_restart +cp log.lammps log.${DATE}.spin.write_restart.g++.1 +../../../src/lmp_serial -in in.spin.write_restart +cp log.lammps log.${DATE}.spin.write_restart.g++.4 +../../../src/lmp_serial -in in.spin.restart +cp log.lammps log.${DATE}.spin.restart.g++.1 +../../../src/lmp_serial -in in.spin.restart +cp log.lammps log.${DATE}.spin.restart.g++.4 +../../../src/lmp_serial -in in.spin.read_data +cp log.lammps log.${DATE}.spin.read_data.g++.1 +../../../src/lmp_serial -in in.spin.read_data +cp log.lammps log.${DATE}.spin.read_data.g++.4 +rm log.lammps log.cite dump*.lammpstrj +cd .. + +# setforce +cd setforce_spin/ +../../../src/lmp_serial -in in.spin.setforce +cp log.lammps log.${DATE}.spin.setforce.g++.1 +../../../src/lmp_serial -in in.spin.setforce +cp log.lammps log.${DATE}.spin.setforce.g++.4 +rm log.lammps log.cite dump*.lammpstrj +cd .. + +# spin minimizers +cd spinmin/ +../../../src/lmp_serial -in in.spin.bfo_min +cp log.lammps log.${DATE}.spin.bfo_min.g++.1 +../../../src/lmp_serial -in in.spin.bfo_min +cp log.lammps log.${DATE}.spin.bfo_min.g++.4 +../../../src/lmp_serial -in in.spin.bfo_min_cg +cp log.lammps log.${DATE}.spin.bfo_min_cg.g++.1 +../../../src/lmp_serial -in in.spin.bfo_min_cg +cp log.lammps log.${DATE}.spin.bfo_min_cg.g++.4 +../../../src/lmp_serial -in in.spin.bfo_min_lbfgs +cp log.lammps log.${DATE}.spin.bfo_min_lbfgs.g++.1 +../../../src/lmp_serial -in in.spin.bfo_min_lbfgs +cp log.lammps log.${DATE}.spin.bfo_min_lbfgs.g++.4 +../../../src/lmp_serial -in in.spin.iron_min +cp log.lammps log.${DATE}.spin.iron_min.g++.1 +../../../src/lmp_serial -in in.spin.iron_min +cp log.lammps log.${DATE}.spin.iron_min.g++.4 +rm log.lammps log.cite dump*.lammpstrj +cd .. diff --git a/examples/SPIN/setforce_spin/in.spin.setforce b/examples/SPIN/setforce_spin/in.spin.setforce index 0d65955a29..4edf70eb52 100644 --- a/examples/SPIN/setforce_spin/in.spin.setforce +++ b/examples/SPIN/setforce_spin/in.spin.setforce @@ -48,7 +48,7 @@ variable emag equal c_out_mag[5] variable tmag equal c_out_mag[6] thermo 100 -thermo_style custom step time v_magx v_magz v_magnorm v_tmag etotal +thermo_style custom step time v_magx v_magz v_magnorm v_tmag pe v_emag etotal thermo_modify format float %20.15g compute outsp all property/atom spx spy spz sp fmx fmy fmz diff --git a/examples/SPIN/test_problems/README b/examples/SPIN/test_problems/README index 5557e3d42b..0a1362ec9c 100644 --- a/examples/SPIN/test_problems/README +++ b/examples/SPIN/test_problems/README @@ -1,4 +1,4 @@ -** The objective of the benchmark examples in this directory +** The objective of the test problems in this directory is the following twofold: - verify the implementation of the LAMMPS' SPIN package by comparing its results to well-known analytic results, or @@ -6,39 +6,39 @@ - provide users with simple comparisons, allowing them to better understand what is implemented in the code. -The LAMMPS input file (bench-*) can be modified, as well as the +The LAMMPS input file (test-*) can be modified, as well as the associated python script, in order to try different comparisons. All scripts can be run by executing the shell script from its directory. Example: -./run-bench-exchange.sh from the benchmarck_damped_exchange/ +./run-test-exchange.sh from the validation_damped_exchange/ directory. -** Below a brief description of the different benchmark +** Below a brief description of the different validation problems: -- benchmarck_damped_precession: +- validation_damped_precession: simulates the damped precession of a single spin in a magnetic field. - Run as: ./run-bench-prec.sh + Run as: ./run-test-prec.sh Output: x, y and z components of the magnetization, and magnetic energy. -- benchmarck_damped_exchange: +- validation_damped_exchange: simulates two spins interacting through the exchange interaction. The parameters in the LAMMPS input script - (bench-spin-precession.in) are calibrated to match the + (test-spin-precession.in) are calibrated to match the exchange definition in the python script (llg_exchange.py). - Run as: ./run-bench-exchange.sh + Run as: ./run-test-exchange.sh Output: average magnetization resulting from the damped precession of the two interacting spins. Also plots the evolution of the magnetic energy. -- benchmarck_langevin_precession: +- validation_langevin_precession: simulates a single spin in a magnetic field and in contact with a thermal bath, and compares the statistical averages of the output to the analytical result of the Langevin function. - Run as: ./run-bench-prec.sh + Run as: ./run-test-prec.sh Output: statistical average of the z-component of the magnetization (along the applied field) and of the magnetic energy versus temperature. Comparison to the Langevin function diff --git a/examples/SPIN/test_problems/validation_damped_exchange/run-test-exchange.sh b/examples/SPIN/test_problems/validation_damped_exchange/run-test-exchange.sh index 15de8d350e..599730fe7b 100755 --- a/examples/SPIN/test_problems/validation_damped_exchange/run-test-exchange.sh +++ b/examples/SPIN/test_problems/validation_damped_exchange/run-test-exchange.sh @@ -5,7 +5,7 @@ rm res_*.dat # compute Lammps ./../../../../src/lmp_serial \ - -in bench-spin-precession.in + -in test-spin-precession.in in="$(grep -n Step log.lammps | awk -F ':' '{print $1}')" en="$(grep -n Loop log.lammps | awk -F ':' '{print $1}')" in="$(echo "$in+1" | bc -l)" diff --git a/examples/SPIN/test_problems/validation_damped_exchange/bench-spin-precession.in b/examples/SPIN/test_problems/validation_damped_exchange/test-spin-precession.in similarity index 100% rename from examples/SPIN/test_problems/validation_damped_exchange/bench-spin-precession.in rename to examples/SPIN/test_problems/validation_damped_exchange/test-spin-precession.in diff --git a/examples/SPIN/test_problems/validation_damped_exchange/two_spins.data b/examples/SPIN/test_problems/validation_damped_exchange/two_spins.data new file mode 100644 index 0000000000..013f813751 --- /dev/null +++ b/examples/SPIN/test_problems/validation_damped_exchange/two_spins.data @@ -0,0 +1,22 @@ +LAMMPS data file via write_data, version 19 Sep 2019, timestep = 0 + +2 atoms +1 atom types + +0.0 6.0 xlo xhi +0.0 3.0 ylo yhi +0.0 3.0 zlo zhi + +Masses + +1 1 + +Atoms # spin + +1 1 2.0 0.0 0.0 0.0 1.0 0.0 0.0 0 0 0 +2 1 2.0 3.0 0.0 0.0 0.0 1.0 0.0 0 0 0 + +Velocities + +1 0.0 0.0 0.0 +2 0.0 0.0 0.0 diff --git a/examples/SPIN/test_problems/validation_damped_precession/run-test-prec.sh b/examples/SPIN/test_problems/validation_damped_precession/run-test-prec.sh index 49ebc2ac4e..e21f28521a 100755 --- a/examples/SPIN/test_problems/validation_damped_precession/run-test-prec.sh +++ b/examples/SPIN/test_problems/validation_damped_precession/run-test-prec.sh @@ -5,7 +5,7 @@ rm res_*.dat # compute Lammps ./../../../../src/lmp_serial \ - -in bench-spin-precession.in + -in test-spin-precession.in in="$(grep -n Step log.lammps | awk -F ':' '{print $1}')" en="$(grep -n Loop log.lammps | awk -F ':' '{print $1}')" in="$(echo "$in+1" | bc -l)" diff --git a/examples/SPIN/test_problems/validation_damped_precession/bench-spin-precession.in b/examples/SPIN/test_problems/validation_damped_precession/test-spin-precession.in similarity index 92% rename from examples/SPIN/test_problems/validation_damped_precession/bench-spin-precession.in rename to examples/SPIN/test_problems/validation_damped_precession/test-spin-precession.in index ed8a5caeaf..6722e2a5ed 100644 --- a/examples/SPIN/test_problems/validation_damped_precession/bench-spin-precession.in +++ b/examples/SPIN/test_problems/validation_damped_precession/test-spin-precession.in @@ -26,6 +26,7 @@ variable Temperature equal 0.0 variable Nsteps equal 500000 fix 1 all nve/spin lattice no +# fix 2 all precession/spin zeeman ${H} 0.0 0.0 1.0 anisotropy ${Kan} 0.0 0.0 1.0 fix 2 all precession/spin zeeman ${H} 0.0 0.0 1.0 anisotropy ${Kan} 0.0 0.0 1.0 fix_modify 2 energy yes fix 3 all langevin/spin ${Temperature} 0.01 12345 diff --git a/examples/SPIN/test_problems/validation_langevin_precession/bench-prec-spin.in b/examples/SPIN/test_problems/validation_langevin_precession/bench-prec-spin.in new file mode 100644 index 0000000000..45da087477 --- /dev/null +++ b/examples/SPIN/test_problems/validation_langevin_precession/bench-prec-spin.in @@ -0,0 +1,46 @@ +#LAMMPS in.run + +units metal +atom_style spin +atom_modify map array +boundary p p p + +# read_data singlespin.data + +lattice sc 3.0 +region box block 0.0 1.0 0.0 1.0 0.0 1.0 +create_box 1 box +create_atoms 1 box + +mass 1 1.0 +set type 1 spin 1.0 0.0 0.0 1.0 + +# defines a pair/style for neighbor list, but do not use it +pair_style spin/exchange 4.0 +pair_coeff * * exchange 1.0 0.0 0.0 1.0 + +group bead type 1 + +variable H equal 10.0 +variable Kan equal 0.0 +variable Temperature equal 19.00000000000000000000 +variable RUN equal 1000000 + +fix 1 all nve/spin lattice no +fix 2 all precession/spin zeeman ${H} 0.0 0.0 1.0 anisotropy ${Kan} 0.0 0.0 1.0 +fix_modify 2 energy yes +fix 3 all langevin/spin ${Temperature} 0.01 12345 + +compute compute_spin all spin +compute outsp all property/atom spx spy spz sp +compute magsz all reduce ave c_outsp[3] + +thermo 50000 +thermo_style custom step time temp vol pe c_compute_spin[5] etotal + +variable magnetic_energy equal c_compute_spin[5] + +fix avespin all ave/time 1 ${RUN} ${RUN} v_Temperature v_H v_Kan c_magsz v_magnetic_energy file average_spin + +timestep 0.1 +run ${RUN} diff --git a/examples/SPIN/test_problems/validation_langevin_precession/run-test-prec.sh b/examples/SPIN/test_problems/validation_langevin_precession/run-test-prec.sh index 98fceeca95..2427e20095 100755 --- a/examples/SPIN/test_problems/validation_langevin_precession/run-test-prec.sh +++ b/examples/SPIN/test_problems/validation_langevin_precession/run-test-prec.sh @@ -10,10 +10,9 @@ N=20 for (( i=0; i<$N; i++ )) do temp="$(echo "$tempi+$i*($tempf-$tempi)/$N" | bc -l)" - sed s/temperature/${temp}/g bench-prec-spin.template > \ - bench-prec-spin.in - ./../../../../src/lmp_serial \ - -in bench-prec-spin.in + sed s/temperature/${temp}/g test-prec-spin.template > \ + test-prec-spin.in + ./../../../../src/lmp_serial -in test-prec-spin.in Hz="$(tail -n 1 average_spin | awk -F " " '{print $3}')" sz="$(tail -n 1 average_spin | awk -F " " '{print $5}')" en="$(tail -n 1 average_spin | awk -F " " '{print $6}')" diff --git a/examples/SPIN/test_problems/validation_langevin_precession/bench-prec-spin.template b/examples/SPIN/test_problems/validation_langevin_precession/test-prec-spin.template similarity index 100% rename from examples/SPIN/test_problems/validation_langevin_precession/bench-prec-spin.template rename to examples/SPIN/test_problems/validation_langevin_precession/test-prec-spin.template diff --git a/src/SPIN/compute_spin.cpp b/src/SPIN/compute_spin.cpp index 8a71be019b..9a759134b4 100644 --- a/src/SPIN/compute_spin.cpp +++ b/src/SPIN/compute_spin.cpp @@ -41,13 +41,20 @@ using namespace MathConst; /* ---------------------------------------------------------------------- */ ComputeSpin::ComputeSpin(LAMMPS *lmp, int narg, char **arg) : - Compute(lmp, narg, arg) + Compute(lmp, narg, arg), pair(NULL), spin_pairs(NULL) { if ((narg != 3) && (narg != 4)) error->all(FLERR,"Illegal compute compute/spin command"); vector_flag = 1; size_vector = 6; extvector = 0; + // npairs = npairspin = 0; + + // initialize the magnetic interaction flags + + pair_spin_flag = 0; + long_spin_flag = 0; + precession_spin_flag = 0; init(); @@ -60,6 +67,7 @@ ComputeSpin::ComputeSpin(LAMMPS *lmp, int narg, char **arg) : ComputeSpin::~ComputeSpin() { memory->destroy(vector); + delete [] spin_pairs; } /* ---------------------------------------------------------------------- */ @@ -68,7 +76,11 @@ void ComputeSpin::init() { hbar = force->hplanck/MY_2PI; kb = force->boltz; + npairs = npairspin = 0; + precession_spin_flag = 0; + // set ptrs on Pair/Spin styles + // loop 1: obtain # of Pairs, and # of Pair/Spin styles if (force->pair_match("spin",0,0)) { // only one Pair/Spin style @@ -173,9 +185,10 @@ void ComputeSpin::compute_vector() // update magnetic precession energies if (precession_spin_flag) { - magenergy -= lockprecessionspin->compute_zeeman_energy(sp[i]); - magenergy -= lockprecessionspin->compute_anisotropy_energy(sp[i]); - magenergy -= lockprecessionspin->compute_cubic_energy(sp[i]); + magenergy += lockprecessionspin->emag[i]; + // magenergy -= lockprecessionspin->compute_zeeman_energy(sp[i]); + // magenergy -= lockprecessionspin->compute_anisotropy_energy(sp[i]); + // magenergy -= lockprecessionspin->compute_cubic_energy(sp[i]); } // update magnetic pair interactions diff --git a/src/SPIN/fix_precession_spin.cpp b/src/SPIN/fix_precession_spin.cpp index 57e4549718..ffe3fc838c 100644 --- a/src/SPIN/fix_precession_spin.cpp +++ b/src/SPIN/fix_precession_spin.cpp @@ -30,6 +30,7 @@ #include "force.h" #include "input.h" #include "math_const.h" +#include "memory.h" #include "modify.h" #include "respa.h" #include "update.h" @@ -43,7 +44,7 @@ enum{CONSTANT,EQUAL}; /* ---------------------------------------------------------------------- */ -FixPrecessionSpin::FixPrecessionSpin(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) +FixPrecessionSpin::FixPrecessionSpin(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg), emag(NULL) { if (narg < 7) error->all(FLERR,"Illegal precession/spin command"); @@ -154,6 +155,9 @@ FixPrecessionSpin::FixPrecessionSpin(LAMMPS *lmp, int narg, char **arg) : Fix(lm FixPrecessionSpin::~FixPrecessionSpin() { delete [] magstr; + + // test emag list storing mag energies + memory->destroy(emag); } /* ---------------------------------------------------------------------- */ @@ -213,6 +217,11 @@ void FixPrecessionSpin::init() if (varflag == CONSTANT) set_magneticprecession(); + // test emag list storing mag energies + // init. size of energy stacking lists + + nlocal_max = atom->nlocal; + memory->grow(emag,nlocal_max,"pair/spin:emag"); } /* ---------------------------------------------------------------------- */ @@ -252,21 +261,33 @@ void FixPrecessionSpin::post_force(int /* vflag */) double **fm = atom->fm; double **sp = atom->sp; const int nlocal = atom->nlocal; - double spi[3], fmi[3], epreci; + double spi[4], fmi[3], epreci; + // test emag list storing mag energies + // checking size of emag + if (nlocal_max < nlocal) { // grow emag lists if necessary + nlocal_max = nlocal; + memory->grow(emag,nlocal_max,"pair/spin:emag"); + } + eflag = 0; eprec = 0.0; for (int i = 0; i < nlocal; i++) { + + // test emag list storing mag energies + emag[i] = 0.0; + if (mask[i] & groupbit) { epreci = 0.0; spi[0] = sp[i][0]; spi[1] = sp[i][1]; spi[2] = sp[i][2]; + spi[3] = sp[i][3]; fmi[0] = fmi[1] = fmi[2] = 0.0; if (zeeman_flag) { // compute Zeeman interaction compute_zeeman(i,fmi); - epreci -= hbar*(spi[0]*fmi[0] + spi[1]*fmi[1] + spi[2]*fmi[2]); + epreci -= compute_zeeman_energy(spi); } if (aniso_flag) { // compute magnetic anisotropy @@ -279,6 +300,7 @@ void FixPrecessionSpin::post_force(int /* vflag */) epreci -= compute_cubic_energy(spi); } + emag[i] += epreci; eprec += epreci; fm[i][0] += fmi[0]; fm[i][1] += fmi[1]; diff --git a/src/SPIN/fix_precession_spin.h b/src/SPIN/fix_precession_spin.h index 3c809506c1..7767864655 100644 --- a/src/SPIN/fix_precession_spin.h +++ b/src/SPIN/fix_precession_spin.h @@ -57,6 +57,10 @@ class FixPrecessionSpin : public Fix { void compute_cubic(double *, double *); double compute_cubic_energy(double *); + // test emag list storing mag energies + int nlocal_max; // max value of nlocal (for size of lists) + double *emag; // energy list + protected: int style; // style of the magnetic precession diff --git a/src/SPIN/pair_spin.cpp b/src/SPIN/pair_spin.cpp index 01b8775eab..112f404bc0 100644 --- a/src/SPIN/pair_spin.cpp +++ b/src/SPIN/pair_spin.cpp @@ -42,7 +42,7 @@ using namespace MathConst; /* ---------------------------------------------------------------------- */ -PairSpin::PairSpin(LAMMPS *lmp) : Pair(lmp) +PairSpin::PairSpin(LAMMPS *lmp) : Pair(lmp), emag(NULL) { hbar = force->hplanck/MY_2PI; single_enable = 0; -- GitLab From 72a9ce0f323f00375cfaed51df0c868c2e21eaff Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Wed, 4 Mar 2020 12:31:37 -0700 Subject: [PATCH 043/717] Add loop chunking option to compute_orientorder_atom_kokkos --- .../compute_orientorder_atom_kokkos.cpp | 173 ++++++++++-------- src/KOKKOS/compute_orientorder_atom_kokkos.h | 2 +- src/compute_orientorder_atom.cpp | 8 + src/compute_orientorder_atom.h | 1 + 4 files changed, 105 insertions(+), 79 deletions(-) diff --git a/src/KOKKOS/compute_orientorder_atom_kokkos.cpp b/src/KOKKOS/compute_orientorder_atom_kokkos.cpp index 65bb08b18d..a4a4451197 100644 --- a/src/KOKKOS/compute_orientorder_atom_kokkos.cpp +++ b/src/KOKKOS/compute_orientorder_atom_kokkos.cpp @@ -130,9 +130,6 @@ void ComputeOrientOrderAtomKokkos::compute_peratom() d_neighbors = k_list->d_neighbors; d_ilist = k_list->d_ilist; - maxneigh = 0; - Kokkos::parallel_reduce("ComputeOrientOrderAtomKokkos::find_max_neighs",inum, FindMaxNumNeighs(k_list), Kokkos::Experimental::Max(maxneigh)); - // grow order parameter array if necessary if (atom->nmax > nmax) { @@ -141,21 +138,29 @@ void ComputeOrientOrderAtomKokkos::compute_peratom() memoryKK->create_kokkos(k_qnarray,qnarray,nmax,ncol,"orientorder/atom:qnarray"); array_atom = qnarray; d_qnarray = k_qnarray.template view(); + } - d_qnm = t_sna_3c("orientorder/atom:qnm",nmax,nqlist,2*qmax+1); - d_ncount = t_sna_1i("orientorder/atom:ncount",nmax); + chunk_size = MIN(chunksize,inum); // "chunksize" variable is set by user + chunk_offset = 0; - // insure distsq and nearest arrays are long enough - - if (maxneigh > d_distsq.extent(1)) { - d_distsq = t_sna_2d_lr("orientorder/atom:distsq",nmax,maxneigh); - d_nearest = t_sna_2i_lr("orientorder/atom:nearest",nmax,maxneigh); - d_rlist = t_sna_3d_lr("orientorder/atom:rlist",nmax,maxneigh,3); - - d_distsq_um = d_distsq; - d_rlist_um = d_rlist; - d_nearest_um = d_nearest; - } + if (chunk_size > d_ncount.extent(0)) { + d_qnm = t_sna_3c("orientorder/atom:qnm",chunk_size,nqlist,2*qmax+1); + d_ncount = t_sna_1i("orientorder/atom:ncount",chunk_size); + } + + // insure distsq and nearest arrays are long enough + + maxneigh = 0; + Kokkos::parallel_reduce("ComputeOrientOrderAtomKokkos::find_max_neighs",inum, FindMaxNumNeighs(k_list), Kokkos::Experimental::Max(maxneigh)); + + if (chunk_size > d_distsq.extent(0) || maxneigh > d_distsq.extent(1)) { + d_distsq = t_sna_2d_lr("orientorder/atom:distsq",nmax,maxneigh); + d_nearest = t_sna_2i_lr("orientorder/atom:nearest",nmax,maxneigh); + d_rlist = t_sna_3d_lr("orientorder/atom:rlist",nmax,maxneigh,3); + + d_distsq_um = d_distsq; + d_rlist_um = d_rlist; + d_nearest_um = d_nearest; } // compute order parameter for each atom in group @@ -178,21 +183,29 @@ void ComputeOrientOrderAtomKokkos::compute_peratom() copymode = 1; - //Neigh - typename Kokkos::TeamPolicy policy_neigh(inum,team_size,vector_length); - Kokkos::parallel_for("ComputeOrientOrderAtomNeigh",policy_neigh,*this); + while (chunk_offset < inum) { // chunk up loop to prevent running out of memory - //Select3 - typename Kokkos::RangePolicy policy_select3(0,inum); - Kokkos::parallel_for("ComputeOrientOrderAtomSelect3",policy_select3,*this); + if (chunk_size > inum - chunk_offset) + chunk_size = inum - chunk_offset; - //BOOP1 - typename Kokkos::TeamPolicy policy_boop1(((inum+team_size-1)/team_size)*maxneigh,team_size,vector_length); - Kokkos::parallel_for("ComputeOrientOrderAtomBOOP1",policy_boop1,*this); + //Neigh + typename Kokkos::TeamPolicy policy_neigh(chunk_size,team_size,vector_length); + Kokkos::parallel_for("ComputeOrientOrderAtomNeigh",policy_neigh,*this); + + //Select3 + typename Kokkos::RangePolicy policy_select3(0,chunk_size); + Kokkos::parallel_for("ComputeOrientOrderAtomSelect3",policy_select3,*this); + + //BOOP1 + typename Kokkos::TeamPolicy policy_boop1(((chunk_size+team_size-1)/team_size)*maxneigh,team_size,vector_length); + Kokkos::parallel_for("ComputeOrientOrderAtomBOOP1",policy_boop1,*this); + + //BOOP2 + typename Kokkos::RangePolicy policy_boop2(0,chunk_size); + Kokkos::parallel_for("ComputeOrientOrderAtomBOOP2",policy_boop2,*this); - //BOOP2 - typename Kokkos::RangePolicy policy_boop2(0,inum); - Kokkos::parallel_for("ComputeOrientOrderAtomBOOP2",policy_boop2,*this); + chunk_offset += chunk_size; + } // end while copymode = 0; @@ -207,7 +220,7 @@ KOKKOS_INLINE_FUNCTION void ComputeOrientOrderAtomKokkos::operator() (TagComputeOrientOrderAtomNeigh,const typename Kokkos::TeamPolicy::member_type& team) const { const int ii = team.league_rank(); - const int i = d_ilist[ii]; + const int i = d_ilist[ii + chunk_offset]; if (mask[i] & groupbit) { const X_FLOAT xtmp = x(i,0); const X_FLOAT ytmp = x(i,1); @@ -263,7 +276,7 @@ template KOKKOS_INLINE_FUNCTION void ComputeOrientOrderAtomKokkos::operator() (TagComputeOrientOrderAtomSelect3,const int& ii) const { - const int i = d_ilist[ii]; + const int i = d_ilist[ii + chunk_offset]; const int ncount = d_ncount(ii); // if not nnn neighbors, order parameter = 0; @@ -287,11 +300,12 @@ KOKKOS_INLINE_FUNCTION void ComputeOrientOrderAtomKokkos::operator() (TagComputeOrientOrderAtomBOOP1,const typename Kokkos::TeamPolicy::member_type& team) const { // Extract the atom number - int ii = team.team_rank() + team.team_size() * (team.league_rank() % ((inum+team.team_size()-1)/team.team_size())); - if (ii >= inum) return; + int ii = team.team_rank() + team.team_size() * (team.league_rank() % + ((chunk_size+team.team_size()-1)/team.team_size())); + if (ii >= chunk_size) return; // Extract the neighbor number - const int jj = team.league_rank() / ((inum+team.team_size()-1)/team.team_size()); + const int jj = team.league_rank() / ((chunk_size+team.team_size()-1)/team.team_size()); const int ncount = d_ncount(ii); if (jj >= ncount) return; @@ -306,7 +320,6 @@ void ComputeOrientOrderAtomKokkos::operator() (TagComputeOrientOrder template KOKKOS_INLINE_FUNCTION void ComputeOrientOrderAtomKokkos::operator() (TagComputeOrientOrderAtomBOOP2,const int& ii) const { - const int i = d_ilist[ii]; const int ncount = d_ncount(ii); calc_boop2(ncount, ii); } @@ -338,14 +351,14 @@ void ComputeOrientOrderAtomKokkos::operator() (TagComputeOrientOrder template KOKKOS_INLINE_FUNCTION -void ComputeOrientOrderAtomKokkos::select3(int k, int n, int iatom) const +void ComputeOrientOrderAtomKokkos::select3(int k, int n, int ii) const { int i,ir,j,l,mid,ia,itmp; double a,tmp,a3[3]; - auto arr = Kokkos::subview(d_distsq_um, iatom, Kokkos::ALL); - auto iarr = Kokkos::subview(d_nearest_um, iatom, Kokkos::ALL); - auto arr3 = Kokkos::subview(d_rlist_um, iatom, Kokkos::ALL, Kokkos::ALL); + auto arr = Kokkos::subview(d_distsq_um, ii, Kokkos::ALL); + auto iarr = Kokkos::subview(d_nearest_um, ii, Kokkos::ALL); + auto arr3 = Kokkos::subview(d_rlist_um, ii, Kokkos::ALL, Kokkos::ALL); l = 0; ir = n-1; @@ -414,11 +427,13 @@ void ComputeOrientOrderAtomKokkos::select3(int k, int n, int iatom) template KOKKOS_INLINE_FUNCTION -void ComputeOrientOrderAtomKokkos::calc_boop1(int ncount, int iatom, int ineigh) const +void ComputeOrientOrderAtomKokkos::calc_boop1(int ncount, int ii, int ineigh) const { - const double r0 = d_rlist(iatom,ineigh,0); - const double r1 = d_rlist(iatom,ineigh,1); - const double r2 = d_rlist(iatom,ineigh,2); + const int i = d_ilist[ii + chunk_offset]; + + const double r0 = d_rlist(ii,ineigh,0); + const double r1 = d_rlist(ii,ineigh,1); + const double r2 = d_rlist(ii,ineigh,2); const double rmag = sqrt(r0*r0 + r1*r1 + r2*r2); if(rmag <= MY_EPSILON) { return; @@ -439,27 +454,27 @@ void ComputeOrientOrderAtomKokkos::calc_boop1(int ncount, int iatom, for (int il = 0; il < nqlist; il++) { const int l = d_qlist[il]; - //d_qnm(iatom,il,l).re += polar_prefactor(l, 0, costheta); + //d_qnm(ii,il,l).re += polar_prefactor(l, 0, costheta); const double polar_pf = polar_prefactor(l, 0, costheta); - Kokkos::atomic_add(&(d_qnm(iatom,il,l).re), polar_pf); + Kokkos::atomic_add(&(d_qnm(ii,il,l).re), polar_pf); SNAcomplex expphim = {expphi.re,expphi.im}; for(int m = 1; m <= +l; m++) { const double prefactor = polar_prefactor(l, m, costheta); SNAcomplex c = {prefactor * expphim.re, prefactor * expphim.im}; - //d_qnm(iatom,il,m+l).re += c.re; - //d_qnm(iatom,il,m+l).im += c.im; - Kokkos::atomic_add(&(d_qnm(iatom,il,m+l).re), c.re); - Kokkos::atomic_add(&(d_qnm(iatom,il,m+l).im), c.im); + //d_qnm(ii,il,m+l).re += c.re; + //d_qnm(ii,il,m+l).im += c.im; + Kokkos::atomic_add(&(d_qnm(ii,il,m+l).re), c.re); + Kokkos::atomic_add(&(d_qnm(ii,il,m+l).im), c.im); if(m & 1) { - //d_qnm(iatom,il,-m+l).re -= c.re; - //d_qnm(iatom,il,-m+l).im += c.im; - Kokkos::atomic_add(&(d_qnm(iatom,il,-m+l).re), -c.re); - Kokkos::atomic_add(&(d_qnm(iatom,il,-m+l).im), c.im); + //d_qnm(ii,il,-m+l).re -= c.re; + //d_qnm(ii,il,-m+l).im += c.im; + Kokkos::atomic_add(&(d_qnm(ii,il,-m+l).re), -c.re); + Kokkos::atomic_add(&(d_qnm(ii,il,-m+l).im), c.im); } else { - //d_qnm(iatom,il,-m+l).re += c.re; - //d_qnm(iatom,il,-m+l).im -= c.im; - Kokkos::atomic_add(&(d_qnm(iatom,il,-m+l).re), c.re); - Kokkos::atomic_add(&(d_qnm(iatom,il,-m+l).im), -c.im); + //d_qnm(ii,il,-m+l).re += c.re; + //d_qnm(ii,il,-m+l).im -= c.im; + Kokkos::atomic_add(&(d_qnm(ii,il,-m+l).re), c.re); + Kokkos::atomic_add(&(d_qnm(ii,il,-m+l).im), -c.im); } SNAcomplex tmp; tmp.re = expphim.re*expphi.re - expphim.im*expphi.im; @@ -476,16 +491,18 @@ void ComputeOrientOrderAtomKokkos::calc_boop1(int ncount, int iatom, template KOKKOS_INLINE_FUNCTION -void ComputeOrientOrderAtomKokkos::calc_boop2(int ncount, int iatom) const +void ComputeOrientOrderAtomKokkos::calc_boop2(int ncount, int ii) const { + const int i = d_ilist[ii + chunk_offset]; + // convert sums to averages double facn = 1.0 / ncount; for (int il = 0; il < nqlist; il++) { int l = d_qlist[il]; for(int m = 0; m < 2*l+1; m++) { - d_qnm(iatom,il,m).re *= facn; - d_qnm(iatom,il,m).im *= facn; + d_qnm(ii,il,m).re *= facn; + d_qnm(ii,il,m).im *= facn; } } @@ -498,8 +515,8 @@ void ComputeOrientOrderAtomKokkos::calc_boop2(int ncount, int iatom) double qnormfac = sqrt(MY_4PI/(2*l+1)); double qm_sum = 0.0; for(int m = 0; m < 2*l+1; m++) - qm_sum += d_qnm(iatom,il,m).re*d_qnm(iatom,il,m).re + d_qnm(iatom,il,m).im*d_qnm(iatom,il,m).im; - d_qnarray(iatom,jj++) = qnormfac * sqrt(qm_sum); + qm_sum += d_qnm(ii,il,m).re*d_qnm(ii,il,m).re + d_qnm(ii,il,m).im*d_qnm(ii,il,m).im; + d_qnarray(i,jj++) = qnormfac * sqrt(qm_sum); } // calculate W_l @@ -513,13 +530,13 @@ void ComputeOrientOrderAtomKokkos::calc_boop2(int ncount, int iatom) for(int m2 = MAX(0,l-m1); m2 < MIN(2*l+1,3*l-m1+1); m2++) { int m = m1 + m2 - l; SNAcomplex qm1qm2; - qm1qm2.re = d_qnm(iatom,il,m1).re*d_qnm(iatom,il,m2).re - d_qnm(iatom,il,m1).im*d_qnm(iatom,il,m2).im; - qm1qm2.im = d_qnm(iatom,il,m1).re*d_qnm(iatom,il,m2).im + d_qnm(iatom,il,m1).im*d_qnm(iatom,il,m2).re; - wlsum += (qm1qm2.re*d_qnm(iatom,il,m).re + qm1qm2.im*d_qnm(iatom,il,m).im)*d_cglist[idxcg_count]; + qm1qm2.re = d_qnm(ii,il,m1).re*d_qnm(ii,il,m2).re - d_qnm(ii,il,m1).im*d_qnm(ii,il,m2).im; + qm1qm2.im = d_qnm(ii,il,m1).re*d_qnm(ii,il,m2).im + d_qnm(ii,il,m1).im*d_qnm(ii,il,m2).re; + wlsum += (qm1qm2.re*d_qnm(ii,il,m).re + qm1qm2.im*d_qnm(ii,il,m).im)*d_cglist[idxcg_count]; idxcg_count++; } } - d_qnarray(iatom,jj++) = wlsum/sqrt(2.0*l+1.0); + d_qnarray(i,jj++) = wlsum/sqrt(2.0*l+1.0); } } @@ -534,19 +551,19 @@ void ComputeOrientOrderAtomKokkos::calc_boop2(int ncount, int iatom) for(int m2 = MAX(0,l-m1); m2 < MIN(2*l+1,3*l-m1+1); m2++) { const int m = m1 + m2 - l; SNAcomplex qm1qm2; - qm1qm2.re = d_qnm(iatom,il,m1).re*d_qnm(iatom,il,m2).re - d_qnm(iatom,il,m1).im*d_qnm(iatom,il,m2).im; - qm1qm2.im = d_qnm(iatom,il,m1).re*d_qnm(iatom,il,m2).im + d_qnm(iatom,il,m1).im*d_qnm(iatom,il,m2).re; - wlsum += (qm1qm2.re*d_qnm(iatom,il,m).re + qm1qm2.im*d_qnm(iatom,il,m).im)*d_cglist[idxcg_count]; + qm1qm2.re = d_qnm(ii,il,m1).re*d_qnm(ii,il,m2).re - d_qnm(ii,il,m1).im*d_qnm(ii,il,m2).im; + qm1qm2.im = d_qnm(ii,il,m1).re*d_qnm(ii,il,m2).im + d_qnm(ii,il,m1).im*d_qnm(ii,il,m2).re; + wlsum += (qm1qm2.re*d_qnm(ii,il,m).re + qm1qm2.im*d_qnm(ii,il,m).im)*d_cglist[idxcg_count]; idxcg_count++; } } // Whats = [w/(q/np.sqrt(np.pi * 4 / (2 * l + 1)))**3 if abs(q) > 1.0e-6 else 0.0 for l,q,w in zip(range(1,max_l+1),Qs,Ws)] - if (d_qnarray(iatom,il) < QEPSILON) - d_qnarray(iatom,jj++) = 0.0; + if (d_qnarray(i,il) < QEPSILON) + d_qnarray(i,jj++) = 0.0; else { const double qnormfac = sqrt(MY_4PI/(2*l+1)); - const double qnfac = qnormfac/d_qnarray(iatom,il); - d_qnarray(iatom,jj++) = wlsum/sqrt(2.0*l+1.0)*(qnfac*qnfac*qnfac); + const double qnfac = qnormfac/d_qnarray(i,il); + d_qnarray(i,jj++) = wlsum/sqrt(2.0*l+1.0)*(qnfac*qnfac*qnfac); } } } @@ -556,17 +573,17 @@ void ComputeOrientOrderAtomKokkos::calc_boop2(int ncount, int iatom) if (qlcompflag) { const int il = iqlcomp; const int l = qlcomp; - if (d_qnarray(iatom,il) < QEPSILON) + if (d_qnarray(i,il) < QEPSILON) for(int m = 0; m < 2*l+1; m++) { - d_qnarray(iatom,jj++) = 0.0; - d_qnarray(iatom,jj++) = 0.0; + d_qnarray(i,jj++) = 0.0; + d_qnarray(i,jj++) = 0.0; } else { const double qnormfac = sqrt(MY_4PI/(2*l+1)); - const double qnfac = qnormfac/d_qnarray(iatom,il); + const double qnfac = qnormfac/d_qnarray(i,il); for(int m = 0; m < 2*l+1; m++) { - d_qnarray(iatom,jj++) = d_qnm(iatom,il,m).re * qnfac; - d_qnarray(iatom,jj++) = d_qnm(iatom,il,m).im * qnfac; + d_qnarray(i,jj++) = d_qnm(ii,il,m).re * qnfac; + d_qnarray(i,jj++) = d_qnm(ii,il,m).im * qnfac; } } } diff --git a/src/KOKKOS/compute_orientorder_atom_kokkos.h b/src/KOKKOS/compute_orientorder_atom_kokkos.h index 01d9993af2..4964df52d4 100644 --- a/src/KOKKOS/compute_orientorder_atom_kokkos.h +++ b/src/KOKKOS/compute_orientorder_atom_kokkos.h @@ -87,7 +87,7 @@ class ComputeOrientOrderAtomKokkos : public ComputeOrientOrderAtom { typename AT::t_float_2d d_qnarray; private: - int inum; + int inum,chunk_size,chunk_offset; typename AT::t_x_array_randomread x; typename ArrayTypes::t_int_1d mask; diff --git a/src/compute_orientorder_atom.cpp b/src/compute_orientorder_atom.cpp index 2abe4e3bb3..c759d14030 100644 --- a/src/compute_orientorder_atom.cpp +++ b/src/compute_orientorder_atom.cpp @@ -61,6 +61,7 @@ ComputeOrientOrderAtom::ComputeOrientOrderAtom(LAMMPS *lmp, int narg, char **arg wlflag = 0; wlhatflag = 0; qlcompflag = 0; + chunksize = 16384; // specify which orders to request @@ -143,6 +144,13 @@ ComputeOrientOrderAtom::ComputeOrientOrderAtom(LAMMPS *lmp, int narg, char **arg error->all(FLERR,"Illegal compute orientorder/atom command"); cutsq = cutoff*cutoff; iarg += 2; + } else if (strcmp(arg[iarg],"chunksize") == 0) { + if (iarg+2 > narg) + error->all(FLERR,"Illegal compute orientorder/atom command"); + chunksize = force->numeric(FLERR,arg[iarg+1]); + if (chunksize <= 0) + error->all(FLERR,"Illegal compute orientorder/atom command"); + iarg += 2; } else error->all(FLERR,"Illegal compute orientorder/atom command"); } diff --git a/src/compute_orientorder_atom.h b/src/compute_orientorder_atom.h index 46894db373..4e5084bfcd 100644 --- a/src/compute_orientorder_atom.h +++ b/src/compute_orientorder_atom.h @@ -62,6 +62,7 @@ class ComputeOrientOrderAtom : public Compute { virtual void init_clebsch_gordan(); double *cglist; // Clebsch-Gordan coeffs int idxcg_max; + int chunksize; }; } -- GitLab From 60bba3e238d7adbc0f5705f9db112ab34c1df4a2 Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Wed, 4 Mar 2020 13:08:55 -0700 Subject: [PATCH 044/717] Fix var name --- src/KOKKOS/compute_orientorder_atom_kokkos.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/KOKKOS/compute_orientorder_atom_kokkos.cpp b/src/KOKKOS/compute_orientorder_atom_kokkos.cpp index a4a4451197..0b32d10ace 100644 --- a/src/KOKKOS/compute_orientorder_atom_kokkos.cpp +++ b/src/KOKKOS/compute_orientorder_atom_kokkos.cpp @@ -154,9 +154,9 @@ void ComputeOrientOrderAtomKokkos::compute_peratom() Kokkos::parallel_reduce("ComputeOrientOrderAtomKokkos::find_max_neighs",inum, FindMaxNumNeighs(k_list), Kokkos::Experimental::Max(maxneigh)); if (chunk_size > d_distsq.extent(0) || maxneigh > d_distsq.extent(1)) { - d_distsq = t_sna_2d_lr("orientorder/atom:distsq",nmax,maxneigh); - d_nearest = t_sna_2i_lr("orientorder/atom:nearest",nmax,maxneigh); - d_rlist = t_sna_3d_lr("orientorder/atom:rlist",nmax,maxneigh,3); + d_distsq = t_sna_2d_lr("orientorder/atom:distsq",chunk_size,maxneigh); + d_nearest = t_sna_2i_lr("orientorder/atom:nearest",chunk_size,maxneigh); + d_rlist = t_sna_3d_lr("orientorder/atom:rlist",chunk_size,maxneigh,3); d_distsq_um = d_distsq; d_rlist_um = d_rlist; -- GitLab From 437055f9130b1e083ec78d9a6cceb37503f14189 Mon Sep 17 00:00:00 2001 From: "Jibril B. Coulibaly" Date: Thu, 12 Mar 2020 11:11:38 -0500 Subject: [PATCH 045/717] implement the `scale` keyword of `fix adapt` for diameter and charge --- src/fix_adapt.cpp | 51 ++++++++++++++++++++++++----------------------- 1 file changed, 26 insertions(+), 25 deletions(-) diff --git a/src/fix_adapt.cpp b/src/fix_adapt.cpp index 8668690e1d..10ac290d02 100644 --- a/src/fix_adapt.cpp +++ b/src/fix_adapt.cpp @@ -235,7 +235,7 @@ int FixAdapt::setmask() void FixAdapt::post_constructor() { - if (!resetflag) return; + // Create local Fix Store even when ressetflag == false, to be able to use `scale` keyword for charge and diameter if (!diamflag && !chgflag) return; // new id = fix-ID + FIX_STORE_ATTRIBUTE @@ -251,7 +251,7 @@ void FixAdapt::post_constructor() newarg[4] = (char *) "1"; newarg[5] = (char *) "1"; - if (diamflag) { + if (diamflag && atom->radius_flag) {// Previously unsafe! The radius_flag was not checked, could run an atom_style w/o radius attribute and get here without a previous check / error ! int n = strlen(id) + strlen("_FIX_STORE_DIAM") + 1; id_fix_diam = new char[n]; strcpy(id_fix_diam,id); @@ -274,7 +274,7 @@ void FixAdapt::post_constructor() } } - if (chgflag) { + if (chgflag && atom->q_flag) {// Previously unsafe! The q_flag was not checked, could run an atom_style w/o charge attribute and get here without a previous check / error ! int n = strlen(id) + strlen("_FIX_STORE_CHG") + 1; id_fix_chg = new char[n]; strcpy(id_fix_chg,id); @@ -455,7 +455,7 @@ void FixAdapt::init() } // fixes that store initial per-atom values - + /* Unnecessary ? `fix_diam` and `fix_chg` seem to be already defined in FixAdapt::post_constructor(), commenting them out does not crash my MWE if (id_fix_diam) { int ifix = modify->find_fix(id_fix_diam); if (ifix < 0) error->all(FLERR,"Could not find fix adapt storage fix ID"); @@ -465,7 +465,7 @@ void FixAdapt::init() int ifix = modify->find_fix(id_fix_chg); if (ifix < 0) error->all(FLERR,"Could not find fix adapt storage fix ID"); fix_chg = (FixStore *) modify->fix[ifix]; - } + }*/ if (strstr(update->integrate_style,"respa")) nlevels_respa = ((Respa *) update->integrate)->nlevels; @@ -568,38 +568,39 @@ void FixAdapt::change_settings() // also scale rmass to new value if (ad->aparam == DIAMETER) { - int mflag = 0; - if (atom->rmass_flag) mflag = 1; + /* `mflag` unnecessary ? the test if (!atom->radius_flag) in FixAdapt::init() should perevent `atom->rmass_flag == false`. Unless there can be combinations of atoms with `radius` but without `rmass` + It could also be unsafe since rmass_flag could be added using `fix property/atom` even for an atom_style that does not have radius attributes */ double density; - double *radius = atom->radius; + double *vec = fix_diam->vstore; // Get initial radius to use `scale` keyword + double *radius = atom->radius; double *rmass = atom->rmass; int *mask = atom->mask; int nlocal = atom->nlocal; int nall = nlocal + atom->nghost; - if (mflag == 0) { - for (i = 0; i < nall; i++) - if (mask[i] & groupbit) - radius[i] = 0.5*value; - } else { - for (i = 0; i < nall; i++) - if (mask[i] & groupbit) { - density = rmass[i] / (4.0*MY_PI/3.0 * - radius[i]*radius[i]*radius[i]); - radius[i] = 0.5*value; - rmass[i] = 4.0*MY_PI/3.0 * - radius[i]*radius[i]*radius[i] * density; - } - } + for (i = 0; i < nall; i++) + if (mask[i] & groupbit) { + density = rmass[i] / (4.0*MY_PI/3.0 * + radius[i]*radius[i]*radius[i]); + if (scaleflag) radius[i] = value * vec[i]; + else radius[i] = 0.5*value; + rmass[i] = 4.0*MY_PI/3.0 * + radius[i]*radius[i]*radius[i] * density; + } + } else if (ad->aparam == CHARGE) { - double *q = atom->q; + double *vec = fix_chg->vstore; // Get initial charge to use `scale` keyword + double *q = atom->q; int *mask = atom->mask; int nlocal = atom->nlocal; int nall = nlocal + atom->nghost; for (i = 0; i < nall; i++) - if (mask[i] & groupbit) q[i] = value; + if (mask[i] & groupbit) { + if (scaleflag) q[i] = value * vec[i]; + else q[i] = value; + } } } } @@ -607,7 +608,7 @@ void FixAdapt::change_settings() modify->addstep_compute(update->ntimestep + nevery); // re-initialize pair styles if any PAIR settings were changed - // ditto for bond styles if any BOND setitings were changes + // ditto for bond styles if any BOND settings were changed // this resets other coeffs that may depend on changed values, // and also offset and tail corrections -- GitLab From 14bade977e8064c9cc5b09f3701940832585d080 Mon Sep 17 00:00:00 2001 From: "Jibril B. Coulibaly" Date: Fri, 13 Mar 2020 10:59:11 -0500 Subject: [PATCH 046/717] implement diameter/disc option for 2d simulations --- src/fix_adapt.cpp | 30 ++++++++++++++++++++---------- src/fix_adapt.h | 1 + 2 files changed, 21 insertions(+), 10 deletions(-) diff --git a/src/fix_adapt.cpp b/src/fix_adapt.cpp index 10ac290d02..ee85d054c8 100644 --- a/src/fix_adapt.cpp +++ b/src/fix_adapt.cpp @@ -15,6 +15,7 @@ #include #include "atom.h" #include "bond.h" +#include "domain.h" #include "update.h" #include "group.h" #include "modify.h" @@ -139,9 +140,11 @@ nadapt(0), id_fix_diam(NULL), id_fix_chg(NULL), adapt(NULL) } else if (strcmp(arg[iarg],"atom") == 0) { if (iarg+3 > narg) error->all(FLERR,"Illegal fix adapt command"); adapt[nadapt].which = ATOM; - if (strcmp(arg[iarg+1],"diameter") == 0) { + if (strcmp(arg[iarg+1],"diameter") == 0 || strcmp(arg[iarg+1],"diameter/disc") == 0) { adapt[nadapt].aparam = DIAMETER; diamflag = 1; + discflag = 0; + if(strcmp(arg[iarg+1],"diameter/disc") == 0) discflag = 1; } else if (strcmp(arg[iarg+1],"charge") == 0) { adapt[nadapt].aparam = CHARGE; chgflag = 1; @@ -428,6 +431,8 @@ void FixAdapt::init() if (ad->aparam == DIAMETER) { if (!atom->radius_flag) error->all(FLERR,"Fix adapt requires atom attribute diameter"); + if(discflag && domain->dimension!=2) + error->all(FLERR,"Fix adapt requires 2d simulation"); } if (ad->aparam == CHARGE) { if (!atom->q_flag) @@ -568,8 +573,8 @@ void FixAdapt::change_settings() // also scale rmass to new value if (ad->aparam == DIAMETER) { - /* `mflag` unnecessary ? the test if (!atom->radius_flag) in FixAdapt::init() should perevent `atom->rmass_flag == false`. Unless there can be combinations of atoms with `radius` but without `rmass` - It could also be unsafe since rmass_flag could be added using `fix property/atom` even for an atom_style that does not have radius attributes */ + /* `mflag` unnecessary ? the test `if(!atom->radius_flag)` in `FixAdapt::init()` should perevent `atom->rmass_flag == false`. Unless there can be combinations of atom styles with `radius` but without `rmass` + It could also be unsafe since rmass_flag could be added using `fix property/atom` even for an atom_style that does not have radius attribute, although that possibility should be avoided as well with the test `if(!atom->radius_flag)` in `FixAdapt::init()` */ double density; double *vec = fix_diam->vstore; // Get initial radius to use `scale` keyword @@ -581,12 +586,14 @@ void FixAdapt::change_settings() for (i = 0; i < nall; i++) if (mask[i] & groupbit) { - density = rmass[i] / (4.0*MY_PI/3.0 * - radius[i]*radius[i]*radius[i]); + if(discflag) density = rmass[i] / (MY_PI * radius[i]*radius[i]); + else density = rmass[i] / (4.0*MY_PI/3.0 * + radius[i]*radius[i]*radius[i]); if (scaleflag) radius[i] = value * vec[i]; else radius[i] = 0.5*value; - rmass[i] = 4.0*MY_PI/3.0 * - radius[i]*radius[i]*radius[i] * density; + if(discflag) rmass[i] = MY_PI * radius[i]*radius[i] * density; + else rmass[i] = 4.0*MY_PI/3.0 * + radius[i]*radius[i]*radius[i] * density; } } else if (ad->aparam == CHARGE) { @@ -671,10 +678,13 @@ void FixAdapt::restore_settings() for (int i = 0; i < nlocal; i++) if (mask[i] & groupbit) { - density = rmass[i] / (4.0*MY_PI/3.0 * - radius[i]*radius[i]*radius[i]); + if(discflag) density = rmass[i] / (MY_PI * radius[i]*radius[i]); + else density = rmass[i] / (4.0*MY_PI/3.0 * + radius[i]*radius[i]*radius[i]); radius[i] = vec[i]; - rmass[i] = 4.0*MY_PI/3.0 * radius[i]*radius[i]*radius[i] * density; + if(discflag) rmass[i] = MY_PI * radius[i]*radius[i] * density; + else rmass[i] = 4.0*MY_PI/3.0 * + radius[i]*radius[i]*radius[i] * density; } } if (chgflag) { diff --git a/src/fix_adapt.h b/src/fix_adapt.h index 0bb594b7a4..dbf8f5f792 100644 --- a/src/fix_adapt.h +++ b/src/fix_adapt.h @@ -47,6 +47,7 @@ class FixAdapt : public Fix { int nlevels_respa; char *id_fix_diam,*id_fix_chg; class FixStore *fix_diam,*fix_chg; + int discflag; struct Adapt { int which,ivar; -- GitLab From 8b8f928347812d959d940f9d9e0132e187df16fc Mon Sep 17 00:00:00 2001 From: "Jibril B. Coulibaly" Date: Fri, 13 Mar 2020 12:19:16 -0500 Subject: [PATCH 047/717] update documentation --- doc/src/fix_adapt.rst | 25 +++++++++++-------------- 1 file changed, 11 insertions(+), 14 deletions(-) diff --git a/doc/src/fix_adapt.rst b/doc/src/fix_adapt.rst index 0e57ec98c1..e96a4ed654 100644 --- a/doc/src/fix_adapt.rst +++ b/doc/src/fix_adapt.rst @@ -15,7 +15,7 @@ Syntax * adapt = style name of this fix command * N = adapt simulation settings every this many timesteps * one or more attribute/arg pairs may be appended -* attribute = *pair* or *kspace* or *atom* +* attribute = *pair* or *bond* or *kspace* or *atom* .. parsed-literal:: @@ -90,8 +90,8 @@ the end of a simulation. Even if *reset* is specified as *yes*\ , a restart file written during a simulation will contain the modified settings. -If the *scale* keyword is set to *no*\ , then the value the parameter is -set to will be whatever the variable generates. If the *scale* +If the *scale* keyword is set to *no*\ , then the value of the altered +parameter will be whatever the variable generates. If the *scale* keyword is set to *yes*\ , then the value of the altered parameter will be the initial value of that parameter multiplied by whatever the variable generates. I.e. the variable is now a "scale factor" applied @@ -324,26 +324,23 @@ The *atom* keyword enables various atom properties to be changed. The current list of atom parameters that can be varied by this fix: * charge = charge on particle -* diameter = diameter of particle +* diameter, or, diameter/disc = diameter of particle The *v\_name* argument of the *atom* keyword is the name of an :doc:`equal-style variable ` which will be evaluated each time -this fix is invoked to set the parameter to a new value. It should be -specified as v\_name, where name is the variable name. See the +this fix is invoked to set, or scale, the parameter to a new value. +It should be specified as v\_name, where name is the variable name. See the discussion above describing the formulas associated with equal-style variables. The new value is assigned to the corresponding attribute for all atoms in the fix group. -.. note:: - - The *atom* keyword works this way whether the *scale* keyword is - set to *no* or *yes*\ . I.e. the use of scale yes is not yet supported - by the *atom* keyword. - If the atom parameter is *diameter* and per-atom density and per-atom mass are defined for particles (e.g. :doc:`atom_style granular `), then the mass of each particle is also -changed when the diameter changes (density is assumed to stay -constant). +changed when the diameter changes. The mass is set from the particle volume +for 3d systems (density is assumed to stay constant). For 2d, the default is +for LAMMPS to model particles with a radius attribute as spheres. +However, if the atom parameter is *diameter/disc*, then the mass is +set from the particle area (the density is assumed to be in mass/distance^2 units). For example, these commands would shrink the diameter of all granular particles in the "center" group from 1.0 to 0.1 in a linear fashion -- GitLab From 986e5b746e1c9a2ed8e7fd3c0585ec693ca3961a Mon Sep 17 00:00:00 2001 From: Steve Plimpton Date: Wed, 18 Mar 2020 16:40:29 -0600 Subject: [PATCH 048/717] new doc edits for refactored AtomVec styles --- doc/src/Modify.rst | 6 - doc/src/Modify_atom.rst | 274 +++++++++++-------- doc/src/atom_style.rst | 64 +++-- doc/src/compute_property_atom.rst | 86 +++--- doc/src/read_data.rst | 428 +++++++++++------------------- 5 files changed, 384 insertions(+), 474 deletions(-) diff --git a/doc/src/Modify.rst b/doc/src/Modify.rst index f875084d50..531fb6b1f3 100644 --- a/doc/src/Modify.rst +++ b/doc/src/Modify.rst @@ -10,7 +10,6 @@ If you add a new feature to LAMMPS and think it will be of interest to general users, we encourage you to submit it for inclusion in LAMMPS as a pull request on our `GitHub site `_, after reading the :doc:`Modify contribute ` doc page. - .. toctree:: :maxdepth: 1 @@ -33,8 +32,3 @@ as a pull request on our `GitHub site `_, afte Modify_body Modify_thermo Modify_variable - - -.. _lws: http://lammps.sandia.gov -.. _ld: Manual.html -.. _lc: Commands_all.html diff --git a/doc/src/Modify_atom.rst b/doc/src/Modify_atom.rst index d44a805161..64f44797b5 100644 --- a/doc/src/Modify_atom.rst +++ b/doc/src/Modify_atom.rst @@ -3,122 +3,168 @@ Atom styles Classes that define an :doc:`atom style ` are derived from the AtomVec class and managed by the Atom class. The atom style -determines what attributes are associated with an atom. A new atom -style can be created if one of the existing atom styles does not -define all the attributes you need to store and communicate with -atoms. +determines what attributes are associated with an atom and +communicated when it is a ghost atom or migrates to a new processor. +A new atom style can be created if one of the existing atom styles +does not define all the attributes you need to store and communicate +with atoms. -Atom\_vec\_atomic.cpp is a simple example of an atom style. +Atom\_vec\_atomic.cpp is the simplest example of an atom style. +Examining the code for others will make these instructions more clear. -Here is a brief description of methods you define in your new derived -class. See atom\_vec.h for details. +Note that the :doc:`atom style hybrid ` command can be +used to define atoms or particles which have the union of properties +of individual styles. Also the :doc:`fix property/atom ` command can be used to add a single property (e.g. charge +or a molecule ID) to a style that does not have it. It can also be +used to add custom properties to an atom, with options to communicate +them with ghost atoms or read them from a data file. Other LAMMPS +commands can access these custom properties, as can new pair, fix, +compute styles that are written to work with these properties. For +example, the :doc:`set ` command can be used to set the values of +custom per-atom properties from an input script. All of these methods +are less work than writing code for a new atom style. -+-------------------------+--------------------------------------------------------------------------------+ -| init | one time setup (optional) | -+-------------------------+--------------------------------------------------------------------------------+ -| grow | re-allocate atom arrays to longer lengths (required) | -+-------------------------+--------------------------------------------------------------------------------+ -| grow\_reset | make array pointers in Atom and AtomVec classes consistent (required) | -+-------------------------+--------------------------------------------------------------------------------+ -| copy | copy info for one atom to another atom's array locations (required) | -+-------------------------+--------------------------------------------------------------------------------+ -| pack\_comm | store an atom's info in a buffer communicated every timestep (required) | -+-------------------------+--------------------------------------------------------------------------------+ -| pack\_comm\_vel | add velocity info to communication buffer (required) | -+-------------------------+--------------------------------------------------------------------------------+ -| pack\_comm\_hybrid | store extra info unique to this atom style (optional) | -+-------------------------+--------------------------------------------------------------------------------+ -| unpack\_comm | retrieve an atom's info from the buffer (required) | -+-------------------------+--------------------------------------------------------------------------------+ -| unpack\_comm\_vel | also retrieve velocity info (required) | -+-------------------------+--------------------------------------------------------------------------------+ -| unpack\_comm\_hybrid | retrieve extra info unique to this atom style (optional) | -+-------------------------+--------------------------------------------------------------------------------+ -| pack\_reverse | store an atom's info in a buffer communicating partial forces (required) | -+-------------------------+--------------------------------------------------------------------------------+ -| pack\_reverse\_hybrid | store extra info unique to this atom style (optional) | -+-------------------------+--------------------------------------------------------------------------------+ -| unpack\_reverse | retrieve an atom's info from the buffer (required) | -+-------------------------+--------------------------------------------------------------------------------+ -| unpack\_reverse\_hybrid | retrieve extra info unique to this atom style (optional) | -+-------------------------+--------------------------------------------------------------------------------+ -| pack\_border | store an atom's info in a buffer communicated on neighbor re-builds (required) | -+-------------------------+--------------------------------------------------------------------------------+ -| pack\_border\_vel | add velocity info to buffer (required) | -+-------------------------+--------------------------------------------------------------------------------+ -| pack\_border\_hybrid | store extra info unique to this atom style (optional) | -+-------------------------+--------------------------------------------------------------------------------+ -| unpack\_border | retrieve an atom's info from the buffer (required) | -+-------------------------+--------------------------------------------------------------------------------+ -| unpack\_border\_vel | also retrieve velocity info (required) | -+-------------------------+--------------------------------------------------------------------------------+ -| unpack\_border\_hybrid | retrieve extra info unique to this atom style (optional) | -+-------------------------+--------------------------------------------------------------------------------+ -| pack\_exchange | store all an atom's info to migrate to another processor (required) | -+-------------------------+--------------------------------------------------------------------------------+ -| unpack\_exchange | retrieve an atom's info from the buffer (required) | -+-------------------------+--------------------------------------------------------------------------------+ -| size\_restart | number of restart quantities associated with proc's atoms (required) | -+-------------------------+--------------------------------------------------------------------------------+ -| pack\_restart | pack atom quantities into a buffer (required) | -+-------------------------+--------------------------------------------------------------------------------+ -| unpack\_restart | unpack atom quantities from a buffer (required) | -+-------------------------+--------------------------------------------------------------------------------+ -| create\_atom | create an individual atom of this style (required) | -+-------------------------+--------------------------------------------------------------------------------+ -| data\_atom | parse an atom line from the data file (required) | -+-------------------------+--------------------------------------------------------------------------------+ -| data\_atom\_hybrid | parse additional atom info unique to this atom style (optional) | -+-------------------------+--------------------------------------------------------------------------------+ -| data\_vel | parse one line of velocity information from data file (optional) | -+-------------------------+--------------------------------------------------------------------------------+ -| data\_vel\_hybrid | parse additional velocity data unique to this atom style (optional) | -+-------------------------+--------------------------------------------------------------------------------+ -| memory\_usage | tally memory allocated by atom arrays (required) | -+-------------------------+--------------------------------------------------------------------------------+ - -The constructor of the derived class sets values for several variables -that you must set when defining a new atom style, which are documented -in atom\_vec.h. New atom arrays are defined in atom.cpp. Search for -the word "customize" and you will find locations you will need to -modify. - -.. note:: - - It is possible to add some attributes, such as a molecule ID, to - atom styles that do not have them via the :doc:`fix property/atom ` command. This command also - allows new custom attributes consisting of extra integer or - floating-point values to be added to atoms. See the :doc:`fix property/atom ` doc page for examples of cases - where this is useful and details on how to initialize, access, and - output the custom values. - -New :doc:`pair styles `, :doc:`fixes `, or -:doc:`computes ` can be added to LAMMPS, as discussed below. -The code for these classes can use the per-atom properties defined by -fix property/atom. The Atom class has a find\_custom() method that is -useful in this context: - - -.. parsed-literal:: - - int index = atom->find_custom(char \*name, int &flag); - -The "name" of a custom attribute, as specified in the :doc:`fix property/atom ` command, is checked to verify -that it exists and its index is returned. The method also sets flag = -0/1 depending on whether it is an integer or floating-point attribute. -The vector of values associated with the attribute can then be -accessed using the returned index as - - -.. parsed-literal:: - - int \*ivector = atom->ivector[index]; - double \*dvector = atom->dvector[index]; - -Ivector or dvector are vectors of length Nlocal = # of owned atoms, -which store the attributes of individual atoms. +If you follow these directions your new style will automatically work +in tandem with others via the :doc:`atom_style hybrid ` +command. +The first step is to define a set of strings in the constructor of the +new derived class. Each string will have zero or more space-separated +variable names which are identical to those used in the atom.h header +file for per-atom properties. Note that some represent per-atom +vectors (q, molecule) while other are per-atom arrays (x,v). For all +but the last 2 strings you do not need to specify any of +(id,type,x,v,f). Those are included automatically as needed in the +other strings. + ++-------------------------+--------------------------------------------------------------------------------+ +| fields\_grow | full list of properties which is allocated and stored | ++-------------------------+--------------------------------------------------------------------------------+ +| fields\_copy | list of properties to copy atoms are rearranged on-processor | ++-------------------------+--------------------------------------------------------------------------------+ +| fields\_comm | list of properties communicated to ghost atoms every step | ++-------------------------+--------------------------------------------------------------------------------+ +| fields\_comm\_vel | additional properties communicated if :doc:`comm_modify vel ` is used | ++-------------------------+--------------------------------------------------------------------------------+ +| fields\_reverse | list of properties summed from ghost atoms every step | ++-------------------------+--------------------------------------------------------------------------------+ +| fields\_border | list of properties communicated with ghost atoms every reneighboring step | ++-------------------------+--------------------------------------------------------------------------------+ +| fields\_border\_vel | additional properties communicated if :doc:`comm_modify vel ` is used | ++-------------------------+--------------------------------------------------------------------------------+ +| fields\_exchange | list of properties communicated when an atom migrates to another processor | ++-------------------------+--------------------------------------------------------------------------------+ +| fields\_restart | list of properties written/read to/from a restart file | ++-------------------------+--------------------------------------------------------------------------------+ +| fields\_create | list of properties defined when an atom is created by :doc:`create_atoms ` | ++-------------------------+--------------------------------------------------------------------------------+ +| fields\_data\_atom | list of properties (in order) in the Atoms section of a data file, as read by :doc:`read_data ` | ++-------------------------+--------------------------------------------------------------------------------+ +| fields\_data\_vel | list of properties (in order) in the Velocities section of a data file, as read by :doc:`read_data ` | ++-------------------------+--------------------------------------------------------------------------------+ + +In these strings you can list variable names which LAMMPS already +defines (in some other atom style), or you can create new variable +names. You should not re-use a LAMMPS variable for something with +different meaning in your atom style. If the meaning is related, but +interpreted differently by your atom style, then using the same +variable name means a user should not use your style and the other +style together in a :doc:`atom_style hybrid ` command. +Because there will only be one value of the variable and different +parts of LAMMPS will then likely use it differently. LAMMPS has +no way of checking for this. + +If you are defining new variable names then make them descriptive and +unique to your new atom style. For example choosing "e" for energy is +a bad choice; it is too generic. A better choice would be "e\_foo", +where "foo" is specific to your style. + +If any of the variable names in your new atom style do not exist in +LAMMPS, you need to add them to the src/atom.h and atom.cpp files. + +Search for the word "customize" or "customization" in these 2 files to +see where to add your variable. Adding a flag to the 2nd +customization section in atom.h is only necessary if your code (e.g. a +pair style) needs to check that a per-atom property is defined. These +flags should also be set in the constructor of the atom style child +class. + +In atom.cpp, aside from the constructor and destructor, there are 3 +methods that a new variable name or flag needs to be added to. + +In Atom::peratom\_create() when using the add_peratom() method, a +final length argument of 0 is for per-atom vectors, a length > 1 is +for per-atom arrays. Note the use of an extra per-thread flag and the +add_peratom_vary() method when last dimension of the array is +variable-length. + +Adding the variable name to Atom::extract() enable the per-atom data +to be accessed through the :doc:`LAMMPS library interface +` by a calling code, including from :doc:`Python +`. + +The constructor of the new atom style will also typically set a few +flags which are defined at the top of atom_vec.h. If these are +unclear, see how other atom styles use them. + +The grow_pointers() method is also required to make +a copy of peratom data pointers, as explained in the code. + +There are a number of other optional methods which your atom style can +implement. These are only needed if you need to do something +out-of-the-oridinary which the default operation of the AtomVec parent +class does not take care of. The best way to figure out why they are +sometimes useful is to look at how other atom styles use them. + +* process_args = use if the atom style has arguments +* init = called before each run +* force_clear = called before force computations each timestep + +A few atom styles define "bonus" data associated with some or all of +their particles, such as :doc:`atom_style ellipsoid or tri +`. These methods work with that data: + +* copy_bonus +* clear_bonus +* pack_comm_bonus +* unpack_comm_bonus +* pack_border_bonus +* unpack_border_bonus +* pack_exchange_bonus +* unpack_exchange_bonus +* size_restart_bonus +* pack_restart_bonus +* unpack_restart_bonus +* data_atom_bonus +* memory_usage_bonus -.. _lws: http://lammps.sandia.gov -.. _ld: Manual.html -.. _lc: Commands_all.html +The :doc:`atom_style body ` command can define a particle +geomerty with an arbitrary number of values. This method reads it +from a data file: + +* data_body + +These methods are called before or after operations handled by the +parent AtomVec class. They allow an atom style to do customized +operations on the per-atom values. For example :doc:`atom_style +sphere ` reads a diameter and density of each particle +from a data file. But these need to be converted internally to a +radius and mass. That operation is done in the data_\atom\_post() +method. + +* pack_restart_pre +* pack_restart_post +* unpack_restart_init +* create_atom_post +* data_atom_post +* pack_data_pre +* pack_data_post + +These methods enable the :doc:`compute property/atom ` command to access per-atom variables it does not +already define as arguments, so that they can be written to a dump +file or used by other LAMMPS commands. + +* property_atom +* pack_property_atom diff --git a/doc/src/atom_style.rst b/doc/src/atom_style.rst index d2ebc220d6..a44741f891 100644 --- a/doc/src/atom_style.rst +++ b/doc/src/atom_style.rst @@ -6,20 +6,21 @@ atom_style command Syntax """""" - .. code-block:: LAMMPS atom_style style args -* style = *angle* or *atomic* or *body* or *bond* or *charge* or *dipole* or *dpd* or *edpd* or *mdpd* or *tdpd* or *electron* or *ellipsoid* or *full* or *line* or *meso* or *molecular* or *peri* or *smd* or *sphere* or *spin* or *tri* or *template* or *hybrid* - +* style = *angle* or *atomic* or *body* or *bond* or *charge* or *dipole* or *dpd* or *edpd* or *electron* or *ellipsoid* or *full* or *line* or *mdpd* or *meso* or *molecular* or *peri* or *smd* or *sphere* or *spin* or *tdpd* or *tri* or *template* or *hybrid* + .. parsed-literal:: - + args = none for any style except the following *body* args = bstyle bstyle-args bstyle = style of body particles bstyle-args = additional arguments specific to the bstyle - see the :doc:`Howto body ` doc page for details + see the :doc:`Howto body ` doc + page for details + *sphere* arg = 0/1 (optional) for static/dynamic particle radii *tdpd* arg = Nspecies Nspecies = # of chemical species *template* arg = template-ID @@ -28,11 +29,9 @@ Syntax * accelerated styles (with same args) = *angle/kk* or *atomic/kk* or *bond/kk* or *charge/kk* or *full/kk* or *molecular/kk* - Examples """""""" - .. code-block:: LAMMPS atom_style atomic @@ -50,8 +49,8 @@ Description Define what style of atoms to use in a simulation. This determines what attributes are associated with the atoms. This command must be -used before a simulation is setup via a :doc:`read\_data `, -:doc:`read\_restart `, or :doc:`create\_box ` +used before a simulation is setup via a :doc:`read_data `, +:doc:`read_restart `, or :doc:`create_box ` command. .. note:: @@ -68,12 +67,12 @@ style more general than needed, though it may be slightly inefficient. The choice of style affects what quantities are stored by each atom, what quantities are communicated between processors to enable forces to be computed, and what quantities are listed in the data file read -by the :doc:`read\_data ` command. +by the :doc:`read_data ` command. These are the additional attributes of each style and the typical kinds of physical systems they are used to model. All styles store coordinates, velocities, atom IDs and types. See the -:doc:`read\_data `, :doc:`create\_atoms `, and +:doc:`read_data `, :doc:`create_atoms `, and :doc:`set ` commands for info on how to set these various quantities. @@ -94,10 +93,6 @@ quantities. +--------------+-----------------------------------------------------+--------------------------------------+ | *edpd* | temperature and heat capacity | eDPD particles | +--------------+-----------------------------------------------------+--------------------------------------+ -| *mdpd* | density | mDPD particles | -+--------------+-----------------------------------------------------+--------------------------------------+ -| *tdpd* | chemical concentration | tDPD particles | -+--------------+-----------------------------------------------------+--------------------------------------+ | *electron* | charge and spin and eradius | electronic force field | +--------------+-----------------------------------------------------+--------------------------------------+ | *ellipsoid* | shape, quaternion, angular momentum | aspherical particles | @@ -106,6 +101,8 @@ quantities. +--------------+-----------------------------------------------------+--------------------------------------+ | *line* | end points, angular velocity | rigid bodies | +--------------+-----------------------------------------------------+--------------------------------------+ +| *mdpd* | density | mDPD particles | ++--------------+-----------------------------------------------------+--------------------------------------+ | *meso* | rho, e, cv | SPH particles | +--------------+-----------------------------------------------------+--------------------------------------+ | *molecular* | bonds, angles, dihedrals, impropers | uncharged molecules | @@ -118,6 +115,8 @@ quantities. +--------------+-----------------------------------------------------+--------------------------------------+ | *spin* | magnetic moment | system with magnetic particles | +--------------+-----------------------------------------------------+--------------------------------------+ +| *tdpd* | chemical concentration | tDPD particles | ++--------------+-----------------------------------------------------+--------------------------------------+ | *template* | template index, template atom | small molecules with fixed topology | +--------------+-----------------------------------------------------+--------------------------------------+ | *tri* | corner points, angular momentum | rigid bodies | @@ -147,9 +146,16 @@ basis. For the *sphere* style, the particles are spheres and each stores a per-particle diameter and mass. If the diameter > 0.0, the particle is a finite-size sphere. If the diameter = 0.0, it is a point -particle. Note that by use of the *disc* keyword with the :doc:`fix nve/sphere `, :doc:`fix nvt/sphere `, -:doc:`fix nph/sphere `, :doc:`fix npt/sphere ` commands, spheres can be effectively -treated as 2d discs for a 2d simulation if desired. See also the :doc:`set density/disc ` command. +particle. Note that by use of the *disc* keyword with the :doc:`fix +nve/sphere `, :doc:`fix nvt/sphere `, +:doc:`fix nph/sphere `, :doc:`fix npt/sphere +` commands, spheres can be effectively treated as 2d +discs for a 2d simulation if desired. See also the :doc:`set +density/disc ` command. The *sphere* style takes an optional 0 +or 1 argument. A value of 0 means the radius of each sphere is +constant for the duration of the simulation. A value of 1 means the +radii may vary dynamically during the simulation, e.g. due to use of +the :doc:`fix adapt ` command. For the *ellipsoid* style, the particles are ellipsoids and each stores a flag which indicates whether it is a finite-size ellipsoid or @@ -173,7 +179,7 @@ per-particle mass and volume. The *dpd* style is for dissipative particle dynamics (DPD) particles. Note that it is part of the USER-DPD package, and is not for use with -the :doc:`pair\_style dpd or dpd/stat ` commands, which can +the :doc:`pair_style dpd or dpd/stat ` commands, which can simply use atom\_style atomic. Atom\_style dpd extends DPD particle properties with internal temperature (dpdTheta), internal conductive energy (uCond), internal mechanical energy (uMech), and internal @@ -240,7 +246,7 @@ can be advantageous for large-scale coarse-grained systems. another CO2, then you probably do not want each molecule file to define 2 atom types and a single bond type, because they will conflict with each other when a mixture system of H2O and CO2 molecules is - defined, e.g. by the :doc:`read\_data ` command. Rather the + defined, e.g. by the :doc:`read_data ` command. Rather the H2O molecule should define atom types 1 and 2, and bond type 1. And the CO2 molecule should define atom types 3 and 4 (or atom types 3 and 2 if a single oxygen type is desired), and bond type 2. @@ -262,10 +268,8 @@ Note that there may be additional arguments required along with the *bstyle* specification, in the atom\_style body command. These arguments are described on the :doc:`Howto body ` doc page. - ---------- - Typically, simulations require only a single (non-hybrid) atom style. If some atoms in the simulation do not have all the properties defined by a particular style, use the simplest style that defines all the @@ -287,10 +291,8 @@ per-atom basis. LAMMPS can be extended with new atom styles as well as new body styles; see the :doc:`Modify ` doc page. - ---------- - Styles with a *kk* suffix are functionally the same as the corresponding style without the suffix. They have been optimized to run faster, depending on your available hardware, as discussed in on @@ -315,9 +317,8 @@ instructions on how to use the accelerated styles effectively. Restrictions """""""""""" - This command cannot be used after the simulation box is defined by a -:doc:`read\_data ` or :doc:`create\_box ` command. +:doc:`read_data ` or :doc:`create_box ` command. Many of the styles listed above are only enabled if LAMMPS was built with a specific package, as listed below. See the :doc:`Build package ` doc page for more info. @@ -338,7 +339,7 @@ The *electron* style is part of the USER-EFF package for :doc:`electronic force The *dpd* style is part of the USER-DPD package for dissipative particle dynamics (DPD). -The *edpd*\ , *mdpd*\ , and *tdpd* styles are part of the USER-MESO package +The *edpd*\ , *mdpd*\ , and *tdpd* styles are part of the USER-MESODPD package for energy-conserving dissipative particle dynamics (eDPD), many-body dissipative particle dynamics (mDPD), and transport dissipative particle dynamics (tDPD), respectively. @@ -354,20 +355,17 @@ The *wavepacket* style is part of the USER-AWPMD package for the Related commands """""""""""""""" -:doc:`read\_data `, :doc:`pair\_style ` +:doc:`read_data `, :doc:`pair_style ` Default """"""" -atom\_style atomic - +The default atom style is atomic. If atom\_style sphere is used its +default argument is 0. ---------- - .. _Grime: - - **(Grime)** Grime and Voth, to appear in J Chem Theory & Computation (2014). diff --git a/doc/src/compute_property_atom.rst b/doc/src/compute_property_atom.rst index f78798e6f5..0ce0f32e96 100644 --- a/doc/src/compute_property_atom.rst +++ b/doc/src/compute_property_atom.rst @@ -6,7 +6,6 @@ compute property/atom command Syntax """""" - .. parsed-literal:: compute ID group-ID property/atom input1 input2 ... @@ -14,9 +13,9 @@ Syntax * ID, group-ID are documented in :doc:`compute ` command * property/atom = style name of this compute command * input = one or more atom attributes - + .. parsed-literal:: - + possible attributes = id, mol, proc, type, mass, x, y, z, xs, ys, zs, xu, yu, zu, ix, iy, iz, vx, vy, vz, fx, fy, fz, @@ -36,9 +35,8 @@ Syntax rho, drho, e, de, cv, i_name, d_name - .. parsed-literal:: - + id = atom ID mol = molecule ID proc = ID of processor that owns atom @@ -66,46 +64,39 @@ Syntax corner123x, corner123y, corner123z = corner points of triangle nbonds = number of bonds assigned to an atom - .. parsed-literal:: - + PERI package per-atom properties: - vfrac = ??? - s0 = ??? + vfrac = volume fraction + s0 = max stretch of any bond a particle is part of - .. parsed-literal:: - + USER-EFF and USER-AWPMD package per-atom properties: spin = electron spin eradius = electron radius ervel = electron radial velocity erforce = electron radial force - .. parsed-literal:: - + USER-SPH package per-atom properties: - rho = ??? - drho = ??? - e = ??? - de = ??? - cv = ??? + rho = density of SPH particles + drho = change in density + e = energy + de = change in thermal energy + cv = heat capacity - .. parsed-literal:: - + :doc:`fix property/atom ` per-atom properties: i_name = custom integer vector with name d_name = custom integer vector with name - - Examples """""""" - -.. parsed-literal:: +.. code-block:: LAMMPS compute 1 all property/atom xs vx fx mux compute 2 all property/atom type @@ -117,13 +108,17 @@ Description Define a computation that simply stores atom attributes for each atom in the group. This is useful so that the values can be used by other -:doc:`output commands ` that take computes as inputs. See -for example, the :doc:`compute reduce `, :doc:`fix ave/atom `, :doc:`fix ave/histo `, :doc:`fix ave/chunk `, and :doc:`atom-style variable ` -commands. - -The list of possible attributes is the same as that used by the :doc:`dump custom ` command, which describes their meaning, with some -additional quantities that are only defined for certain :doc:`atom styles `. Basically, this augmented list gives an -input script access to any per-atom quantity stored by LAMMPS. +:doc:`output commands ` that take computes as inputs. +See for example, the :doc:`compute reduce `, :doc:`fix +ave/atom `, :doc:`fix ave/histo `, +:doc:`fix ave/chunk `, and :doc:`atom-style variable +` commands. + +The list of possible attributes is the same as that used by the +:doc:`dump custom ` command, which describes their meaning, with +some additional quantities that are only defined for certain +:doc:`atom styles `. Basically, this augmented list gives +an input script access to any per-atom quantity stored by LAMMPS. The values are stored in a per-atom vector or array as discussed below. Zeroes are stored for atoms not in the specified group or for @@ -141,8 +136,9 @@ particles and body particles and store the 4-vector quaternion representing the orientation of each particle. See the :doc:`set ` command for an explanation of the quaternion vector. -*End1x*\ , *end1y*\ , *end1z*\ , *end2x*\ , *end2y*\ , *end2z*\ , are defined for -line segment particles and define the end points of each line segment. +*End1x*\ , *end1y*\ , *end1z*\ , *end2x*\ , *end2y*\ , *end2z*\ , are +defined for line segment particles and define the end points of each +line segment. *Corner1x*\ , *corner1y*\ , *corner1z*\ , *corner2x*\ , *corner2y*\ , *corner2z*\ , *corner3x*\ , *corner3y*\ , *corner3z*\ , are defined for @@ -153,14 +149,14 @@ number of explicit bonds assigned to an atom. Note that if the :doc:`newton bond ` command is set to *on*\ , which is the default, then every bond in the system is assigned to only one of the two atoms in the bond. Thus a bond between atoms I,J may be tallied -for either atom I or atom J. If :doc:`newton bond off ` is set, -it will be tallied with both atom I and atom J. +for either atom I or atom J. If :doc:`newton bond off ` is +set, it will be tallied with both atom I and atom J. The *i\_name* and *d\_name* attributes refer to custom integer and floating-point properties that have been added to each atom via the -:doc:`fix property/atom ` command. When that command -is used specific names are given to each attribute which are what is -specified as the "name" portion of *i\_name* or *d\_name*. +:doc:`fix property/atom ` command. When that +command is used specific names are given to each attribute which are +what is specified as the "name" portion of *i\_name* or *d\_name*. **Output info:** @@ -169,8 +165,8 @@ on the number of input values. If a single input is specified, a per-atom vector is produced. If two or more inputs are specified, a per-atom array is produced where the number of columns = the number of inputs. The vector or array can be accessed by any command that uses -per-atom values from a compute as input. See the :doc:`Howto output ` doc page for an overview of LAMMPS output -options. +per-atom values from a compute as input. See the :doc:`Howto output +` doc page for an overview of LAMMPS output options. The vector or array values will be in whatever :doc:`units ` the corresponding attribute is in, e.g. velocity units for vx, charge @@ -187,12 +183,8 @@ Restrictions Related commands """""""""""""""" -:doc:`dump custom `, :doc:`compute reduce `, :doc:`fix ave/atom `, :doc:`fix ave/chunk `, -:doc:`fix property/atom ` +:doc:`dump custom `, :doc:`compute reduce `, +:doc::doc:`fix ave/atom `, :doc:`fix ave/chunk +:doc:`, `fix property/atom ` **Default:** none - - -.. _lws: http://lammps.sandia.gov -.. _ld: Manual.html -.. _lc: Commands_all.html diff --git a/doc/src/read_data.rst b/doc/src/read_data.rst index 798f95e5ec..410a372a34 100644 --- a/doc/src/read_data.rst +++ b/doc/src/read_data.rst @@ -1,22 +1,21 @@ -.. index:: read\_data +.. index:: read_data -read\_data command -================== +read_data command +================= Syntax """""" - -.. parsed-literal:: +.. code-block:: LAMMPS read_data file keyword args ... * file = name of data file to read in * zero or more keyword/arg pairs may be appended * keyword = *add* or *offset* or *shift* or *extra/atom/types* or *extra/bond/types* or *extra/angle/types* or *extra/dihedral/types* or *extra/improper/types* or *extra/bond/per/atom* or *extra/angle/per/atom* or *extra/dihedral/per/atom* or *extra/improper/per/atom* or *group* or *nocoeff* or *fix* - + .. parsed-literal:: - + *add* arg = *append* or *IDoffset* or *IDoffset MOLoffset* or *merge* append = add new atoms with atom IDs appended to current IDs IDoffset = add new atoms with atom IDs having IDoffset added @@ -48,13 +47,10 @@ Syntax header-string = header lines containing this string will be passed to fix section-string = section names with this string will be passed to fix - - Examples """""""" - -.. parsed-literal:: +.. code-block:: LAMMPS read_data data.lj read_data ../run7/data.polymer.gz @@ -68,8 +64,8 @@ Description Read in a data file containing information LAMMPS needs to run a simulation. The file can be ASCII text or a gzipped text file (detected by a .gz suffix). This is one of 3 ways to specify initial -atom coordinates; see the :doc:`read\_restart ` and -:doc:`create\_atoms ` commands for alternative methods. +atom coordinates; see the :doc:`read_restart ` and +:doc:`create_atoms ` commands for alternative methods. Also see the explanation of the :doc:`-restart command-line switch ` which can convert a restart file to a data file. @@ -83,7 +79,7 @@ specified group-ID. The group will be created if it does not already exist. This is useful if you are reading multiple data files and wish to put sets of atoms into different groups so they can be operated on later. E.g. a group of added atoms can be moved to new positions via -the :doc:`displace\_atoms ` command. Note that atoms +the :doc:`displace_atoms ` command. Note that atoms read from the data file are also always added to the "all" group. The :doc:`group ` command discusses atom groups, as used in LAMMPS. @@ -95,10 +91,8 @@ styles defined, or to read a data file for a different force field. The use of the *fix* keyword is discussed below. - ---------- - **Reading multiple data files** The read\_data command can be used multiple times with the same or @@ -107,7 +101,7 @@ contained in individual data files. For example one data file could contain fluid in a confined domain; a second could contain wall atoms, and the second file could be read a third time to create a wall on the other side of the fluid. The third set of atoms could be rotated to -an opposing direction using the :doc:`displace\_atoms ` +an opposing direction using the :doc:`displace_atoms ` command, after the third read\_data command is used. The *add*\ , *offset*\ , *shift*\ , *extra*\ , and *group* keywords are @@ -116,7 +110,7 @@ useful in this context. If a simulation box does not yet exist, the *add* keyword cannot be used; the read\_data command is being used for the first time. If a simulation box does exist, due to using the -:doc:`create\_box ` command, or a previous read\_data command, +:doc:`create_box ` command, or a previous read\_data command, then the *add* keyword must be used. .. note:: @@ -175,9 +169,9 @@ for a 2d simulation. This is a mechanism for adding structured collections of atoms at different locations within the simulation box, to build up a complex geometry. It is up to you to insure atoms do not end up overlapping unphysically which would lead to bad dynamics. -Note that the :doc:`displace\_atoms ` command can be used +Note that the :doc:`displace_atoms ` command can be used to move a subset of atoms after they have been read from a data file. -Likewise, the :doc:`delete\_atoms ` command can be used to +Likewise, the :doc:`delete_atoms ` command can be used to remove overlapping atoms. Note that the shift values (Sx, Sy, Sz) are also added to the simulation box information (xlo, xhi, ylo, yhi, zlo, zhi) in the data file to shift its boundaries. E.g. xlo\_new = xlo + @@ -212,17 +206,15 @@ interactions in your input script to have a complete pairwise interaction model. An alternative to using the *extra* keywords with the read\_data -command, is to use the :doc:`create\_box ` command to +command, is to use the :doc:`create_box ` command to initialize the simulation box and all the various type limits you need via its *extra* keywords. Then use the read\_data command one or more times to populate the system with atoms, bonds, angles, etc, using the *offset* keyword if desired to alter types used in the various data files you read. - ---------- - **Format of a data file** The structure of the data file is important, though many settings and @@ -266,10 +258,8 @@ be capitalized as shown and can't have extra white-space between their words - e.g. two spaces or a tab between the 2 words in "xlo xhi" or the 2 words in "Bond Coeffs", is not valid. - ---------- - **Format of the header of a data file** These are the recognized header keywords. Header lines can come in @@ -408,7 +398,7 @@ molecules defined in the data file. Using this header flag is deprecated; please use the *extra/special/per/atom* keyword instead. Using this setting will pre-allocate space in the LAMMPS data structures for storing these neighbors. See the -:doc:`special\_bonds ` and :doc:`molecule ` doc +:doc:`special_bonds ` and :doc:`molecule ` doc pages for more discussion of 1-2,1-3,1-4 neighbors. .. note:: @@ -421,7 +411,7 @@ pages for more discussion of 1-2,1-3,1-4 neighbors. If they appear in later data files, they are ignored. The "ellipsoids" and "lines" and "triangles" and "bodies" settings are -only used with :doc:`atom\_style ellipsoid or line or tri or body ` and specify how many of the atoms are +only used with :doc:`atom_style ellipsoid or line or tri or body ` and specify how many of the atoms are finite-size ellipsoids or lines or triangles or bodies; the remainder are point particles. See the discussion of ellipsoidflag and the *Ellipsoids* section below. See the discussion of lineflag and the @@ -431,7 +421,7 @@ are point particles. See the discussion of ellipsoidflag and the .. note:: - For :doc:`atom\_style template `, the molecular + For :doc:`atom_style template `, the molecular topology (bonds,angles,etc) is contained in the molecule templates read-in by the :doc:`molecule ` command. This means you cannot set the *bonds*\ , *angles*\ , etc header keywords in the data @@ -440,10 +430,8 @@ are point particles. See the discussion of ellipsoidflag and the keywords, though it is not necessary. If specified, they must match the maximum values defined in any of the template molecules. - ---------- - **Format of the body of a data file** These are the section keywords for the body of the file. @@ -460,14 +448,13 @@ currently defined style: For example, these lines: - .. parsed-literal:: Atoms # sphere Pair Coeffs # lj/cut -will check if the currently-defined :doc:`atom\_style ` is -*sphere*\ , and the current :doc:`pair\_style ` is *lj/cut*\ . +will check if the currently-defined :doc:`atom_style ` is +*sphere*\ , and the current :doc:`pair_style ` is *lj/cut*\ . If not, LAMMPS will issue a warning to indicate that the data file section likely does not contain the correct number or type of parameters expected for the currently-defined style. @@ -480,93 +467,76 @@ Any individual line in the various sections can have a trailing comment starting with "#" for annotation purposes. E.g. in the Atoms section: - .. parsed-literal:: 10 1 17 -1.0 10.0 5.0 6.0 # salt ion - ---------- - *Angle Coeffs* section: * one line per angle type * line syntax: ID coeffs - + .. parsed-literal:: - + ID = angle type (1-N) coeffs = list of coeffs * example: - - .. parsed-literal:: - - 6 70 108.5 0 0 + .. parsed-literal:: + 6 70 108.5 0 0 The number and meaning of the coefficients are specific to the defined -angle style. See the :doc:`angle\_style ` and -:doc:`angle\_coeff ` commands for details. Coefficients can -also be set via the :doc:`angle\_coeff ` command in the +angle style. See the :doc:`angle_style ` and +:doc:`angle_coeff ` commands for details. Coefficients can +also be set via the :doc:`angle_coeff ` command in the input script. - ---------- - *AngleAngle Coeffs* section: * one line per improper type * line syntax: ID coeffs - + .. parsed-literal:: - + ID = improper type (1-N) coeffs = list of coeffs (see :doc:`improper_coeff `) - - - ---------- - *AngleAngleTorsion Coeffs* section: * one line per dihedral type * line syntax: ID coeffs - + .. parsed-literal:: - + ID = dihedral type (1-N) coeffs = list of coeffs (see :doc:`dihedral_coeff `) - - - ---------- - *Angles* section: * one line per angle * line syntax: ID type atom1 atom2 atom3 - + .. parsed-literal:: - + ID = number of angle (1-Nangles) type = angle type (1-Nangletype) atom1,atom2,atom3 = IDs of 1st,2nd,3rd atoms in angle example: - - .. parsed-literal:: - - 2 2 17 29 430 + .. parsed-literal:: + 2 2 17 29 430 The 3 atoms are ordered linearly within the angle. Thus the central atom (around which the angle is computed) is the atom2 in the list. @@ -574,26 +544,20 @@ E.g. H,O,H for a water molecule. The *Angles* section must appear after the *Atoms* section. All values in this section must be integers (1, not 1.0). - ---------- - *AngleTorsion Coeffs* section: * one line per dihedral type * line syntax: ID coeffs - + .. parsed-literal:: - + ID = dihedral type (1-N) coeffs = list of coeffs (see :doc:`dihedral_coeff `) - - - ---------- - *Atoms* section: * one line per atom @@ -624,10 +588,6 @@ of analysis. +------------+---------------------------------------------------------------------------+ | edpd | atom-ID atom-type edpd\_temp edpd\_cv x y z | +------------+---------------------------------------------------------------------------+ -| mdpd | atom-ID atom-type rho x y z | -+------------+---------------------------------------------------------------------------+ -| tdpd | atom-ID atom-type x y z cc1 cc2 ... ccNspecies | -+------------+---------------------------------------------------------------------------+ | electron | atom-ID atom-type q spin eradius x y z | +------------+---------------------------------------------------------------------------+ | ellipsoid | atom-ID atom-type ellipsoidflag density x y z | @@ -636,17 +596,22 @@ of analysis. +------------+---------------------------------------------------------------------------+ | line | atom-ID molecule-ID atom-type lineflag density x y z | +------------+---------------------------------------------------------------------------+ +| mdpd | atom-ID atom-type rho x y z | ++------------+---------------------------------------------------------------------------+ | meso | atom-ID atom-type rho e cv x y z | +------------+---------------------------------------------------------------------------+ | molecular | atom-ID molecule-ID atom-type x y z | +------------+---------------------------------------------------------------------------+ | peri | atom-ID atom-type volume density x y z | +------------+---------------------------------------------------------------------------+ -| smd | atom-ID atom-type molecule volume mass kernel-radius contact-radius x y z | +| smd | atom-ID atom-type molecule volume mass kernel-radius +contact-radius x0 y0 z0 x y z | +------------+---------------------------------------------------------------------------+ | sphere | atom-ID atom-type diameter density x y z | +------------+---------------------------------------------------------------------------+ -| spin | atom-ID atom-type sp x y z spx spy spz | +| spin | atom-ID atom-type x y z spx spy spz sp | ++------------+---------------------------------------------------------------------------+ +| tdpd | atom-ID atom-type x y z cc1 cc2 ... ccNspecies | +------------+---------------------------------------------------------------------------+ | template | atom-ID molecule-ID template-index template-atom atom-type x y z | +------------+---------------------------------------------------------------------------+ @@ -662,7 +627,7 @@ The per-atom values have these meanings and units, listed alphabetically: * atom-ID = integer ID of atom * atom-type = type of atom (1-Ntype) * bodyflag = 1 for body particles, 0 for point particles -* cc = chemical concentration for tDPD particles for each species (mole/volume units) +* ccN = chemical concentration for tDPD particles for each species (mole/volume units) * contact-radius = ??? (distance units) * cs\_re,cs\_im = real/imaginary parts of wave packet coefficients * cv = heat capacity (need units) for SPH particles @@ -682,14 +647,15 @@ The per-atom values have these meanings and units, listed alphabetically: * q = charge on atom (charge units) * rho = density (need units) for SPH particles * spin = electron spin (+1/-1), 0 = nuclei, 2 = fixed-core, 3 = pseudo-cores (i.e. ECP) -* sp = norm of magnetic spin of atom (in number of Bohr magnetons) -* spx,spy,spz = components of magnetic spin of atom (adim normalized vector) +* sp = magnitude of magnetic spin of atom (Bohr magnetons) +* spx,spy,spz = components of magnetic spin of atom (unit vector) * template-atom = which atom within a template molecule the atom is * template-index = which molecule within the molecule template the atom is part of * theta = internal temperature of a DPD particle * triangleflag = 1 for triangular particles, 0 for point or spherical particles * volume = volume of Peridynamic particle (distance\^3 units) * x,y,z = coordinates of atom (distance units) +* x0,y0,z0 = original (strain-free) coordinates of atom (distance units) The units for these quantities depend on the unit style; see the :doc:`units ` command for details. @@ -702,7 +668,7 @@ in dump files. Normally, it is a unique value from 1 to Natoms for each atom. Unique values larger than Natoms can be used, but they will cause extra memory to be allocated on each processor, if an atom map array is used, but not if an atom map hash is used; see the -:doc:`atom\_modify ` command for details. If an atom map is +:doc:`atom_modify ` command for details. If an atom map is not used (e.g. an atomic system with no bonds), and you don't care if unique atom IDs appear in dump files, then the atom-IDs can all be set to 0. @@ -723,7 +689,7 @@ triangle, or body in the corresponding *Ellipsoids*\ , *Lines*\ , *Triangles*\ , or *Bodies* section. The *template-index* and *template-atom* are only defined used by -:doc:`atom\_style template `. In this case the +:doc:`atom_style template `. In this case the :doc:`molecule ` command is used to define a molecule template which contains one or more molecules. If an atom belongs to one of those molecules, its *template-index* and *template-atom* are both set @@ -754,15 +720,14 @@ used. A *disc* keyword can also be used with time integration fixes, such as :doc:`fix nve/sphere ` and :doc:`fix nvt/sphere ` to time integrate their motion as 2d discs (not 3d spheres), by changing their moment of inertia. -For atom\_style hybrid, following the 5 initial values (ID,type,x,y,z), -specific values for each sub-style must be listed. The order of the -sub-styles is the same as they were listed in the -:doc:`atom\_style ` command. The sub-style specific values -are those that are not the 5 standard ones (ID,type,x,y,z). For -example, for the "charge" sub-style, a "q" value would appear. For -the "full" sub-style, a "molecule-ID" and "q" would appear. These are -listed in the same order they appear as listed above. Thus if - +For atom\_style hybrid, following the 5 initial values +(ID,type,x,y,z), specific values for each sub-style must be listed. +The order of the sub-styles is the same as they were listed in the +:doc:`atom_style ` command. The specific values for each +sub-style are those that are not the 5 standard ones (ID,type,x,y,z). +For example, for the "charge" sub-style, a "q" value would appear. +For the "full" sub-style, a "molecule-ID" and "q" would appear. These +are listed in the same order they appear as listed above. Thus if .. parsed-literal:: @@ -770,19 +735,19 @@ listed in the same order they appear as listed above. Thus if were used in the input script, each atom line would have these fields: - .. parsed-literal:: atom-ID atom-type x y z q diameter density Note that if a non-standard value is defined by multiple sub-styles, -it must appear multiple times in the atom line. E.g. the atom line -for atom\_style hybrid dipole full would list "q" twice: - +it only appears once in the atom line. E.g. the atom line for +atom\_style hybrid dipole full would list "q" only once, with the +dipole sub-style fields; "q" does not appear with the full sub-style +fields. .. parsed-literal:: - atom-ID atom-type x y z q mux muy myz molecule-ID q + atom-ID atom-type x y z q mux muy myz molecule-ID Atom lines specify the (x,y,z) coordinates of atoms. These can be inside or outside the simulation box. When the data file is read, @@ -827,7 +792,6 @@ that use unwrapped coordinates internally are as follows: continued run (restarted from a data file) begins with image flags that are consistent with the previous run. - .. note:: If your system is an infinite periodic crystal with bonds then @@ -841,41 +805,37 @@ a *Velocities* section in the data file or by a :doc:`velocity ` or :doc:`set ` command in the input script. - ---------- - *Bodies* section: * one or more lines per body * first line syntax: atom-ID Ninteger Ndouble - + .. parsed-literal:: - + Ninteger = # of integer quantities for this particle Ndouble = # of floating-point quantities for this particle * 0 or more integer lines with total of Ninteger values * 0 or more double lines with total of Ndouble values * example: - + .. parsed-literal:: - + 12 3 6 2 3 2 1.0 2.0 3.0 1.0 2.0 4.0 * example: - + .. parsed-literal:: - + 12 0 14 1.0 2.0 3.0 1.0 2.0 4.0 1.0 2.0 3.0 1.0 2.0 4.0 4.0 2.0 - - -The *Bodies* section must appear if :doc:`atom\_style body ` +The *Bodies* section must appear if :doc:`atom_style body ` is used and any atoms listed in the *Atoms* section have a bodyflag = 1. The number of bodies should be specified in the header section via the "bodies" keyword. @@ -883,7 +843,7 @@ the "bodies" keyword. Each body can have a variable number of integer and/or floating-point values. The number and meaning of the values is defined by the body style, as described in the :doc:`Howto body ` doc page. The -body style is given as an argument to the :doc:`atom\_style body ` command. +body style is given as an argument to the :doc:`atom_style body ` command. The Ninteger and Ndouble values determine how many integer and floating-point values are specified for this particle. Ninteger and @@ -896,187 +856,155 @@ particular type, no lines appear for that type. The *Bodies* section must appear after the *Atoms* section. - ---------- - *Bond Coeffs* section: * one line per bond type * line syntax: ID coeffs - + .. parsed-literal:: - + ID = bond type (1-N) coeffs = list of coeffs * example: - - .. parsed-literal:: - - 4 250 1.49 + .. parsed-literal:: + 4 250 1.49 The number and meaning of the coefficients are specific to the defined -bond style. See the :doc:`bond\_style ` and -:doc:`bond\_coeff ` commands for details. Coefficients can -also be set via the :doc:`bond\_coeff ` command in the input +bond style. See the :doc:`bond_style ` and +:doc:`bond_coeff ` commands for details. Coefficients can +also be set via the :doc:`bond_coeff ` command in the input script. - ---------- - *BondAngle Coeffs* section: * one line per angle type * line syntax: ID coeffs - + .. parsed-literal:: - + ID = angle type (1-N) coeffs = list of coeffs (see class 2 section of :doc:`angle_coeff `) - - - ---------- - *BondBond Coeffs* section: * one line per angle type * line syntax: ID coeffs - + .. parsed-literal:: - + ID = angle type (1-N) coeffs = list of coeffs (see class 2 section of :doc:`angle_coeff `) - - - ---------- - *BondBond13 Coeffs* section: * one line per dihedral type * line syntax: ID coeffs - + .. parsed-literal:: - + ID = dihedral type (1-N) coeffs = list of coeffs (see class 2 section of :doc:`dihedral_coeff `) - - - ---------- - *Bonds* section: * one line per bond * line syntax: ID type atom1 atom2 - + .. parsed-literal:: - + ID = bond number (1-Nbonds) type = bond type (1-Nbondtype) atom1,atom2 = IDs of 1st,2nd atoms in bond * example: - - .. parsed-literal:: - - 12 3 17 29 + .. parsed-literal:: + 12 3 17 29 The *Bonds* section must appear after the *Atoms* section. All values in this section must be integers (1, not 1.0). - ---------- - *Dihedral Coeffs* section: * one line per dihedral type * line syntax: ID coeffs - + .. parsed-literal:: - + ID = dihedral type (1-N) coeffs = list of coeffs * example: - - .. parsed-literal:: - - 3 0.6 1 0 1 + .. parsed-literal:: + 3 0.6 1 0 1 The number and meaning of the coefficients are specific to the defined -dihedral style. See the :doc:`dihedral\_style ` and -:doc:`dihedral\_coeff ` commands for details. +dihedral style. See the :doc:`dihedral_style ` and +:doc:`dihedral_coeff ` commands for details. Coefficients can also be set via the -:doc:`dihedral\_coeff ` command in the input script. - +:doc:`dihedral_coeff ` command in the input script. ---------- - *Dihedrals* section: * one line per dihedral * line syntax: ID type atom1 atom2 atom3 atom4 - + .. parsed-literal:: - + ID = number of dihedral (1-Ndihedrals) type = dihedral type (1-Ndihedraltype) atom1,atom2,atom3,atom4 = IDs of 1st,2nd,3rd,4th atoms in dihedral * example: - - .. parsed-literal:: - - 12 4 17 29 30 21 + .. parsed-literal:: + 12 4 17 29 30 21 The 4 atoms are ordered linearly within the dihedral. The *Dihedrals* section must appear after the *Atoms* section. All values in this section must be integers (1, not 1.0). - ---------- - *Ellipsoids* section: * one line per ellipsoid * line syntax: atom-ID shapex shapey shapez quatw quati quatj quatk - + .. parsed-literal:: - + atom-ID = ID of atom which is an ellipsoid shapex,shapey,shapez = 3 diameters of ellipsoid (distance units) quatw,quati,quatj,quatk = quaternion components for orientation of atom * example: - - .. parsed-literal:: - - 12 1 2 1 1 0 0 0 + .. parsed-literal:: + 12 1 2 1 1 0 0 0 -The *Ellipsoids* section must appear if :doc:`atom\_style ellipsoid ` is used and any atoms are listed in the +The *Ellipsoids* section must appear if :doc:`atom_style ellipsoid ` is used and any atoms are listed in the *Atoms* section with an ellipsoidflag = 1. The number of ellipsoids should be specified in the header section via the "ellipsoids" keyword. @@ -1099,72 +1027,60 @@ specified as a unit vector. The *Ellipsoids* section must appear after the *Atoms* section. - ---------- - *EndBondTorsion Coeffs* section: * one line per dihedral type * line syntax: ID coeffs - + .. parsed-literal:: - + ID = dihedral type (1-N) coeffs = list of coeffs (see class 2 section of :doc:`dihedral_coeff `) - - - ---------- - *Improper Coeffs* section: * one line per improper type * line syntax: ID coeffs - + .. parsed-literal:: - + ID = improper type (1-N) coeffs = list of coeffs * example: - - .. parsed-literal:: - - 2 20 0.0548311 + .. parsed-literal:: + 2 20 0.0548311 The number and meaning of the coefficients are specific to the defined -improper style. See the :doc:`improper\_style ` and -:doc:`improper\_coeff ` commands for details. +improper style. See the :doc:`improper_style ` and +:doc:`improper_coeff ` commands for details. Coefficients can also be set via the -:doc:`improper\_coeff ` command in the input script. - +:doc:`improper_coeff ` command in the input script. ---------- - *Impropers* section: * one line per improper * line syntax: ID type atom1 atom2 atom3 atom4 - + .. parsed-literal:: - + ID = number of improper (1-Nimpropers) type = improper type (1-Nimpropertype) atom1,atom2,atom3,atom4 = IDs of 1st,2nd,3rd,4th atoms in improper * example: - - .. parsed-literal:: - - 12 3 17 29 13 100 + .. parsed-literal:: + 12 3 17 29 13 100 The ordering of the 4 atoms determines the definition of the improper angle used in the formula for each :doc:`improper style `. See the doc pages for individual styles @@ -1173,30 +1089,26 @@ for details. The *Impropers* section must appear after the *Atoms* section. All values in this section must be integers (1, not 1.0). - ---------- - *Lines* section: * one line per line segment * line syntax: atom-ID x1 y1 x2 y2 - + .. parsed-literal:: - + atom-ID = ID of atom which is a line segment x1,y1 = 1st end point x2,y2 = 2nd end point * example: - - .. parsed-literal:: - - 12 1.0 0.0 2.0 0.0 + .. parsed-literal:: + 12 1.0 0.0 2.0 0.0 -The *Lines* section must appear if :doc:`atom\_style line ` +The *Lines* section must appear if :doc:`atom_style line ` is used and any atoms are listed in the *Atoms* section with a lineflag = 1. The number of lines should be specified in the header section via the "lines" keyword. @@ -1210,139 +1122,119 @@ for defining some interactions. The *Lines* section must appear after the *Atoms* section. - ---------- - *Masses* section: * one line per atom type * line syntax: ID mass - + .. parsed-literal:: - + ID = atom type (1-N) mass = mass value * example: - - .. parsed-literal:: - - 3 1.01 + .. parsed-literal:: + 3 1.01 This defines the mass of each atom type. This can also be set via the :doc:`mass ` command in the input script. This section cannot be used for atom styles that define a mass for individual atoms - -e.g. :doc:`atom\_style sphere `. - +e.g. :doc:`atom_style sphere `. ---------- - *MiddleBondTorsion Coeffs* section: * one line per dihedral type * line syntax: ID coeffs - + .. parsed-literal:: - + ID = dihedral type (1-N) coeffs = list of coeffs (see class 2 section of :doc:`dihedral_coeff `) - - - ---------- - *Pair Coeffs* section: * one line per atom type * line syntax: ID coeffs - + .. parsed-literal:: - + ID = atom type (1-N) coeffs = list of coeffs * example: - - .. parsed-literal:: - - 3 0.022 2.35197 0.022 2.35197 + .. parsed-literal:: + 3 0.022 2.35197 0.022 2.35197 The number and meaning of the coefficients are specific to the defined -pair style. See the :doc:`pair\_style ` and -:doc:`pair\_coeff ` commands for details. Since pair +pair style. See the :doc:`pair_style ` and +:doc:`pair_coeff ` commands for details. Since pair coefficients for types I != J are not specified, these will be generated automatically by the pair style's mixing rule. See the -individual pair\_style doc pages and the :doc:`pair\_modify mix ` command for details. Pair coefficients can also -be set via the :doc:`pair\_coeff ` command in the input +individual pair\_style doc pages and the :doc:`pair_modify mix ` command for details. Pair coefficients can also +be set via the :doc:`pair_coeff ` command in the input script. - ---------- - *PairIJ Coeffs* section: * one line per pair of atom types for all I,J with I <= J * line syntax: ID1 ID2 coeffs - + .. parsed-literal:: - + ID1 = atom type I = 1-N ID2 = atom type J = I-N, with I <= J coeffs = list of coeffs * examples: - + .. parsed-literal:: - + 3 3 0.022 2.35197 0.022 2.35197 3 5 0.022 2.35197 0.022 2.35197 - - This section must have N\*(N+1)/2 lines where N = # of atom types. The number and meaning of the coefficients are specific to the defined -pair style. See the :doc:`pair\_style ` and -:doc:`pair\_coeff ` commands for details. Since pair +pair style. See the :doc:`pair_style ` and +:doc:`pair_coeff ` commands for details. Since pair coefficients for types I != J are all specified, these values will turn off the default mixing rule defined by the pair style. See the -individual pair\_style doc pages and the :doc:`pair\_modify mix ` command for details. Pair coefficients can also -be set via the :doc:`pair\_coeff ` command in the input +individual pair\_style doc pages and the :doc:`pair_modify mix ` command for details. Pair coefficients can also +be set via the :doc:`pair_coeff ` command in the input script. - ---------- - *Triangles* section: * one line per triangle * line syntax: atom-ID x1 y1 z1 x2 y2 z2 x3 y3 z3 - + .. parsed-literal:: - + atom-ID = ID of atom which is a line segment x1,y1,z1 = 1st corner point x2,y2,z2 = 2nd corner point x3,y3,z3 = 3rd corner point * example: - - .. parsed-literal:: - - 12 0.0 0.0 0.0 2.0 0.0 1.0 0.0 2.0 1.0 + .. parsed-literal:: + 12 0.0 0.0 0.0 2.0 0.0 1.0 0.0 2.0 1.0 -The *Triangles* section must appear if :doc:`atom\_style tri ` is used and any atoms are listed in the *Atoms* +The *Triangles* section must appear if :doc:`atom_style tri ` is used and any atoms are listed in the *Atoms* section with a triangleflag = 1. The number of lines should be specified in the header section via the "triangles" keyword. @@ -1354,10 +1246,8 @@ orientation may be important for defining some interactions. The *Triangles* section must appear after the *Atoms* section. - ---------- - *Velocities* section: * one line per atom @@ -1394,21 +1284,19 @@ Wz are in units of angular velocity (radians/time). For atom\_style hybrid, following the 4 initial values (ID,vx,vy,vz), specific values for each sub-style must be listed. The order of the sub-styles is the same as they were listed in the -:doc:`atom\_style ` command. The sub-style specific values +:doc:`atom_style ` command. The sub-style specific values are those that are not the 5 standard ones (ID,vx,vy,vz). For example, for the "sphere" sub-style, "wx", "wy", "wz" values would appear. These are listed in the same order they appear as listed above. Thus if - -.. parsed-literal:: +.. code-block:: LAMMPS atom_style hybrid electron sphere were used in the input script, each velocity line would have these fields: - .. parsed-literal:: atom-ID vx vy vz ervel wx wy wz @@ -1416,14 +1304,11 @@ fields: Translational velocities can also be set by the :doc:`velocity ` command in the input script. - ---------- - Restrictions """""""""""" - To read gzipped data files, you must compile LAMMPS with the -DLAMMPS\_GZIP option. See the :doc:`Build settings ` doc page for details. @@ -1431,15 +1316,10 @@ doc page for details. Related commands """""""""""""""" -:doc:`read\_dump `, :doc:`read\_restart `, -:doc:`create\_atoms `, :doc:`write\_data ` +:doc:`read_dump `, :doc:`read_restart `, +:doc:`create_atoms `, :doc:`write_data ` Default """"""" The default for all the *extra* keywords is 0. - - -.. _lws: http://lammps.sandia.gov -.. _ld: Manual.html -.. _lc: Commands_all.html -- GitLab From 9a1b4a8edb9f1d19f79b0f6ab65a9ec4b1ebc9eb Mon Sep 17 00:00:00 2001 From: Michael Lamparski Date: Wed, 28 Aug 2019 11:09:57 -0400 Subject: [PATCH 049/717] Add infrastructure for openmp4 compat --- cmake/CMakeLists.txt | 18 ++++++------ doc/src/Build_basics.rst | 8 ++---- src/USER-OMP/README | 8 ------ src/USER-OMP/hack_openmp_for_pgi_gcc9.sh | 12 -------- src/omp_compat.h | 35 ++++++++++++++++++++++++ 5 files changed, 46 insertions(+), 35 deletions(-) delete mode 100755 src/USER-OMP/hack_openmp_for_pgi_gcc9.sh create mode 100644 src/omp_compat.h diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index 4dd079eaae..3dea0db8b0 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -229,16 +229,7 @@ pkg_depends(USER-SCAFACOS MPI) find_package(OpenMP QUIET) -# TODO: this is a temporary workaround until a better solution is found. AK 2019-05-30 -# GNU GCC 9.x uses settings incompatible with our use of 'default(none)' in OpenMP pragmas -# where we assume older GCC semantics. For the time being, we disable OpenMP by default -# for GCC 9.x and beyond. People may manually turn it on, but need to run the script -# src/USER-OMP/hack_openmp_for_pgi_gcc9.sh on all sources to make it compatible with gcc 9. -if ((CMAKE_CXX_COMPILER_ID STREQUAL "GNU") AND (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 8.99.9)) - option(BUILD_OMP "Build with OpenMP support" OFF) -else() - option(BUILD_OMP "Build with OpenMP support" ${OpenMP_FOUND}) -endif() +option(BUILD_OMP "Build with OpenMP support" ${OpenMP_FOUND}) if(BUILD_OMP) find_package(OpenMP REQUIRED) @@ -248,6 +239,13 @@ if(BUILD_OMP) endif() set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}") set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}") + + if ((CMAKE_CXX_COMPILER_ID STREQUAL "GNU") AND (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 8.99.9)) + # GCC 9.x strictly implements OpenMP 4.0 semantics for consts. + add_definitions(-DLMP_OMP_COMPAT=4) + else() + add_definitions(-DLMP_OMP_COMPAT=3) + endif() endif() if(PKG_MSCG OR PKG_USER-ATC OR PKG_USER-AWPMD OR PKG_USER-QUIP OR PKG_LATTE) diff --git a/doc/src/Build_basics.rst b/doc/src/Build_basics.rst index 8ad48b0810..96bc0f5bd1 100644 --- a/doc/src/Build_basics.rst +++ b/doc/src/Build_basics.rst @@ -145,11 +145,9 @@ Some compilers do not fully support the ``default(none)`` directive and others (e.g. GCC version 9 and beyond) may implement OpenMP 4.0 semantics, which are incompatible with the OpenMP 3.1 semantics used in LAMMPS (for maximal compatibility with compiler versions in use). -In those case, all ``default(none)`` directives (which aid in detecting -incorrect and unwanted sharing) can be replaced with ``default(shared)`` -while dropping all ``shared()`` directives. The script -'src/USER-OMP/hack_openmp_for_pgi_gcc9.sh' can be used to automate -this conversion. +LAMMPS will try to detect compilers that use OpenMP 4.0 semantics and +change the directives accordingly, but if your compiler is not +detected, you may set the CMake variable ``-D LMP_OMP_COMPAT=4``. ---------- diff --git a/src/USER-OMP/README b/src/USER-OMP/README index 46f63f646b..0aef853bca 100644 --- a/src/USER-OMP/README +++ b/src/USER-OMP/README @@ -9,11 +9,3 @@ doc/Section_accelerate.html, sub-section 5.2 The person who created this package is Axel Kohlmeyer at Temple U (akohlmey at gmail.com). Contact him directly if you have questions. --------------------------- - -This directory also contains a shell script: - -hack_openmp_for_pgi.sh - -which will convert OpenMP directives in src files -into a form compatible with the PGI compiler. diff --git a/src/USER-OMP/hack_openmp_for_pgi_gcc9.sh b/src/USER-OMP/hack_openmp_for_pgi_gcc9.sh deleted file mode 100755 index 6f9f30cedd..0000000000 --- a/src/USER-OMP/hack_openmp_for_pgi_gcc9.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/sh - -# convert default(none) directives for OpenMP pragmas to default(shared) and remove shared() directive -# this allows compiling OpenMP pragmas in LAMMPS with compilers that don't support default(none) properly -# or require backward incompatible OpenMP 4 and OpenMP 5 semantics - -for f in *.h *.cpp -do \ - sed -e '/#pragma omp/s/^\(.*default\)(none)\(.*\)$/\1(shared)\2/' \ - -e '/#pragma omp/s/shared([a-z0-9,_]\+)//' \ - -i.bak $f -done diff --git a/src/omp_compat.h b/src/omp_compat.h new file mode 100644 index 0000000000..8abf1c54bc --- /dev/null +++ b/src/omp_compat.h @@ -0,0 +1,35 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2020) 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. +------------------------------------------------------------------------- */ + +// There is no way to annotate an OpenMP construct that +// (a) accesses const variables, (b) has default(none), +// and (c) is valid in both OpenMP 3.0 and 4.0. +// +// (in OpenMP 3.0, the const variables have a predetermined +// sharing attribute and are *forbidden* from being declared +// in the omp construct. In OpenMP 4.0, this predetermined +// sharing attribute is removed, and thus they are *required* +// to be declared in the omp construct) +// +// To date, most compilers still accept the OpenMP 3.0 form, +// so this is what LAMMPS primarily uses. For those compilers +// that strictly implement OpenMP 4.0 (such as GCC 9.0), we +// give up default(none). +#if LMP_OMP_COMPAT == 4 +# define LMP_SHARED(...) +# define LMP_DEFAULT_NONE default(shared) +#else +# define LMP_SHARED(...) shared(__VA_ARGS__) +# define LMP_DEFAULT_NONE default(none) +#endif + -- GitLab From 0bedebc083d326a4a8c32554dc46c98d2c379016 Mon Sep 17 00:00:00 2001 From: Michael Lamparski Date: Fri, 20 Mar 2020 12:16:22 -0400 Subject: [PATCH 050/717] migrate omp constructs to new macros These changes were automatically generated using the script posted in https://github.com/lammps/lammps/pull/1651#issuecomment-525814475 --- src/MPIIO/dump_atom_mpiio.cpp | 5 ++- src/MPIIO/dump_cfg_mpiio.cpp | 3 +- src/MPIIO/dump_custom_mpiio.cpp | 3 +- src/MPIIO/dump_xyz_mpiio.cpp | 3 +- src/USER-DIFFRACTION/compute_saed.cpp | 3 +- src/USER-DIFFRACTION/compute_xrd.cpp | 3 +- src/USER-INTEL/angle_charmm_intel.cpp | 3 +- src/USER-INTEL/angle_harmonic_intel.cpp | 3 +- src/USER-INTEL/bond_fene_intel.cpp | 3 +- src/USER-INTEL/bond_harmonic_intel.cpp | 3 +- src/USER-INTEL/dihedral_charmm_intel.cpp | 5 ++- src/USER-INTEL/dihedral_fourier_intel.cpp | 3 +- src/USER-INTEL/dihedral_harmonic_intel.cpp | 3 +- src/USER-INTEL/dihedral_opls_intel.cpp | 3 +- src/USER-INTEL/fix_intel.cpp | 3 +- src/USER-INTEL/improper_cvff_intel.cpp | 3 +- src/USER-INTEL/improper_harmonic_intel.cpp | 3 +- src/USER-INTEL/npair_intel.cpp | 3 +- src/USER-INTEL/pppm_disp_intel.cpp | 31 ++++++++-------- src/USER-INTEL/pppm_intel.cpp | 11 +++--- src/USER-OMP/angle_charmm_omp.cpp | 3 +- src/USER-OMP/angle_class2_omp.cpp | 3 +- src/USER-OMP/angle_cosine_delta_omp.cpp | 3 +- src/USER-OMP/angle_cosine_omp.cpp | 3 +- src/USER-OMP/angle_cosine_periodic_omp.cpp | 3 +- src/USER-OMP/angle_cosine_shift_exp_omp.cpp | 3 +- src/USER-OMP/angle_cosine_shift_omp.cpp | 3 +- src/USER-OMP/angle_cosine_squared_omp.cpp | 3 +- src/USER-OMP/angle_dipole_omp.cpp | 3 +- src/USER-OMP/angle_fourier_omp.cpp | 3 +- src/USER-OMP/angle_fourier_simple_omp.cpp | 3 +- src/USER-OMP/angle_harmonic_omp.cpp | 3 +- src/USER-OMP/angle_quartic_omp.cpp | 3 +- src/USER-OMP/angle_sdk_omp.cpp | 3 +- src/USER-OMP/angle_table_omp.cpp | 3 +- src/USER-OMP/bond_class2_omp.cpp | 3 +- src/USER-OMP/bond_fene_expand_omp.cpp | 3 +- src/USER-OMP/bond_fene_omp.cpp | 3 +- src/USER-OMP/bond_gromos_omp.cpp | 3 +- src/USER-OMP/bond_harmonic_omp.cpp | 3 +- src/USER-OMP/bond_harmonic_shift_cut_omp.cpp | 3 +- src/USER-OMP/bond_harmonic_shift_omp.cpp | 3 +- src/USER-OMP/bond_morse_omp.cpp | 3 +- src/USER-OMP/bond_nonlinear_omp.cpp | 3 +- src/USER-OMP/bond_quartic_omp.cpp | 3 +- src/USER-OMP/bond_table_omp.cpp | 3 +- src/USER-OMP/dihedral_charmm_omp.cpp | 3 +- src/USER-OMP/dihedral_class2_omp.cpp | 3 +- .../dihedral_cosine_shift_exp_omp.cpp | 3 +- src/USER-OMP/dihedral_fourier_omp.cpp | 3 +- src/USER-OMP/dihedral_harmonic_omp.cpp | 3 +- src/USER-OMP/dihedral_helix_omp.cpp | 3 +- src/USER-OMP/dihedral_multi_harmonic_omp.cpp | 3 +- src/USER-OMP/dihedral_nharmonic_omp.cpp | 3 +- src/USER-OMP/dihedral_opls_omp.cpp | 3 +- src/USER-OMP/dihedral_quadratic_omp.cpp | 3 +- src/USER-OMP/dihedral_table_omp.cpp | 3 +- src/USER-OMP/domain_omp.cpp | 7 ++-- src/USER-OMP/ewald_omp.cpp | 5 ++- src/USER-OMP/fix_gravity_omp.cpp | 5 ++- src/USER-OMP/fix_neigh_history_omp.cpp | 9 +++-- src/USER-OMP/fix_nh_asphere_omp.cpp | 9 +++-- src/USER-OMP/fix_nh_omp.cpp | 19 +++++----- src/USER-OMP/fix_nh_sphere_omp.cpp | 7 ++-- src/USER-OMP/fix_nve_omp.cpp | 9 +++-- src/USER-OMP/fix_nve_sphere_omp.cpp | 9 +++-- src/USER-OMP/fix_nvt_sllod_omp.cpp | 3 +- src/USER-OMP/fix_omp.cpp | 9 +++-- src/USER-OMP/fix_rigid_nh_omp.cpp | 23 ++++++------ src/USER-OMP/fix_rigid_omp.cpp | 19 +++++----- src/USER-OMP/fix_rigid_small_omp.cpp | 17 +++++---- src/USER-OMP/improper_class2_omp.cpp | 3 +- src/USER-OMP/improper_cossq_omp.cpp | 3 +- src/USER-OMP/improper_cvff_omp.cpp | 3 +- src/USER-OMP/improper_fourier_omp.cpp | 3 +- src/USER-OMP/improper_harmonic_omp.cpp | 3 +- src/USER-OMP/improper_ring_omp.cpp | 3 +- src/USER-OMP/improper_umbrella_omp.cpp | 3 +- src/USER-OMP/msm_cg_omp.cpp | 3 +- src/USER-OMP/msm_omp.cpp | 5 ++- src/USER-OMP/npair_full_bin_atomonly_omp.cpp | 3 +- src/USER-OMP/npair_full_bin_ghost_omp.cpp | 3 +- src/USER-OMP/npair_full_bin_omp.cpp | 3 +- src/USER-OMP/npair_full_multi_omp.cpp | 3 +- src/USER-OMP/npair_full_nsq_ghost_omp.cpp | 3 +- src/USER-OMP/npair_full_nsq_omp.cpp | 3 +- .../npair_half_bin_atomonly_newton_omp.cpp | 3 +- .../npair_half_bin_newtoff_ghost_omp.cpp | 3 +- src/USER-OMP/npair_half_bin_newtoff_omp.cpp | 3 +- src/USER-OMP/npair_half_bin_newton_omp.cpp | 3 +- .../npair_half_bin_newton_tri_omp.cpp | 3 +- src/USER-OMP/npair_half_multi_newtoff_omp.cpp | 3 +- src/USER-OMP/npair_half_multi_newton_omp.cpp | 3 +- .../npair_half_multi_newton_tri_omp.cpp | 3 +- .../npair_half_nsq_newtoff_ghost_omp.cpp | 3 +- src/USER-OMP/npair_half_nsq_newtoff_omp.cpp | 3 +- src/USER-OMP/npair_half_nsq_newton_omp.cpp | 3 +- .../npair_half_respa_bin_newtoff_omp.cpp | 3 +- .../npair_half_respa_bin_newton_omp.cpp | 3 +- .../npair_half_respa_bin_newton_tri_omp.cpp | 3 +- .../npair_half_respa_nsq_newtoff_omp.cpp | 3 +- .../npair_half_respa_nsq_newton_omp.cpp | 3 +- .../npair_half_size_bin_newtoff_omp.cpp | 3 +- .../npair_half_size_bin_newton_omp.cpp | 3 +- .../npair_half_size_bin_newton_tri_omp.cpp | 3 +- .../npair_half_size_nsq_newtoff_omp.cpp | 3 +- .../npair_half_size_nsq_newton_omp.cpp | 3 +- src/USER-OMP/npair_halffull_newtoff_omp.cpp | 3 +- src/USER-OMP/npair_halffull_newton_omp.cpp | 3 +- src/USER-OMP/pair_adp_omp.cpp | 3 +- src/USER-OMP/pair_agni_omp.cpp | 3 +- src/USER-OMP/pair_airebo_omp.cpp | 5 ++- src/USER-OMP/pair_beck_omp.cpp | 3 +- src/USER-OMP/pair_born_coul_long_omp.cpp | 3 +- src/USER-OMP/pair_born_coul_msm_omp.cpp | 3 +- src/USER-OMP/pair_born_coul_wolf_omp.cpp | 3 +- src/USER-OMP/pair_born_omp.cpp | 3 +- src/USER-OMP/pair_brownian_omp.cpp | 3 +- src/USER-OMP/pair_brownian_poly_omp.cpp | 3 +- src/USER-OMP/pair_buck_coul_cut_omp.cpp | 3 +- src/USER-OMP/pair_buck_coul_long_omp.cpp | 3 +- src/USER-OMP/pair_buck_coul_msm_omp.cpp | 3 +- src/USER-OMP/pair_buck_long_coul_long_omp.cpp | 9 +++-- src/USER-OMP/pair_buck_omp.cpp | 3 +- src/USER-OMP/pair_colloid_omp.cpp | 3 +- src/USER-OMP/pair_comb_omp.cpp | 7 ++-- src/USER-OMP/pair_coul_cut_omp.cpp | 3 +- src/USER-OMP/pair_coul_cut_soft_omp.cpp | 3 +- src/USER-OMP/pair_coul_debye_omp.cpp | 3 +- src/USER-OMP/pair_coul_diel_omp.cpp | 3 +- src/USER-OMP/pair_coul_dsf_omp.cpp | 3 +- src/USER-OMP/pair_coul_long_omp.cpp | 3 +- src/USER-OMP/pair_coul_long_soft_omp.cpp | 3 +- src/USER-OMP/pair_coul_msm_omp.cpp | 3 +- src/USER-OMP/pair_coul_wolf_omp.cpp | 3 +- src/USER-OMP/pair_dpd_omp.cpp | 3 +- src/USER-OMP/pair_dpd_tstat_omp.cpp | 3 +- src/USER-OMP/pair_eam_cd_omp.cpp | 3 +- src/USER-OMP/pair_eam_omp.cpp | 3 +- src/USER-OMP/pair_edip_omp.cpp | 3 +- src/USER-OMP/pair_eim_omp.cpp | 3 +- src/USER-OMP/pair_gauss_cut_omp.cpp | 3 +- src/USER-OMP/pair_gauss_omp.cpp | 3 +- src/USER-OMP/pair_gayberne_omp.cpp | 3 +- src/USER-OMP/pair_gran_hertz_history_omp.cpp | 3 +- src/USER-OMP/pair_gran_hooke_history_omp.cpp | 3 +- src/USER-OMP/pair_gran_hooke_omp.cpp | 3 +- src/USER-OMP/pair_hbond_dreiding_lj_omp.cpp | 3 +- .../pair_hbond_dreiding_morse_omp.cpp | 3 +- src/USER-OMP/pair_lj96_cut_omp.cpp | 3 +- ...air_lj_charmm_coul_charmm_implicit_omp.cpp | 3 +- .../pair_lj_charmm_coul_charmm_omp.cpp | 3 +- src/USER-OMP/pair_lj_charmm_coul_long_omp.cpp | 3 +- .../pair_lj_charmm_coul_long_soft_omp.cpp | 3 +- src/USER-OMP/pair_lj_charmm_coul_msm_omp.cpp | 3 +- src/USER-OMP/pair_lj_class2_coul_cut_omp.cpp | 3 +- src/USER-OMP/pair_lj_class2_coul_long_omp.cpp | 3 +- src/USER-OMP/pair_lj_class2_omp.cpp | 3 +- src/USER-OMP/pair_lj_cubic_omp.cpp | 3 +- src/USER-OMP/pair_lj_cut_coul_cut_omp.cpp | 3 +- .../pair_lj_cut_coul_cut_soft_omp.cpp | 3 +- src/USER-OMP/pair_lj_cut_coul_debye_omp.cpp | 3 +- src/USER-OMP/pair_lj_cut_coul_dsf_omp.cpp | 3 +- src/USER-OMP/pair_lj_cut_coul_long_omp.cpp | 3 +- .../pair_lj_cut_coul_long_soft_omp.cpp | 3 +- src/USER-OMP/pair_lj_cut_coul_msm_omp.cpp | 3 +- src/USER-OMP/pair_lj_cut_coul_wolf_omp.cpp | 3 +- src/USER-OMP/pair_lj_cut_dipole_cut_omp.cpp | 3 +- src/USER-OMP/pair_lj_cut_omp.cpp | 3 +- src/USER-OMP/pair_lj_cut_soft_omp.cpp | 3 +- src/USER-OMP/pair_lj_cut_thole_long_omp.cpp | 3 +- src/USER-OMP/pair_lj_cut_tip4p_cut_omp.cpp | 3 +- src/USER-OMP/pair_lj_cut_tip4p_long_omp.cpp | 3 +- .../pair_lj_cut_tip4p_long_soft_omp.cpp | 3 +- src/USER-OMP/pair_lj_expand_omp.cpp | 3 +- .../pair_lj_gromacs_coul_gromacs_omp.cpp | 3 +- src/USER-OMP/pair_lj_gromacs_omp.cpp | 3 +- src/USER-OMP/pair_lj_long_coul_long_omp.cpp | 9 +++-- src/USER-OMP/pair_lj_long_tip4p_long_omp.cpp | 9 +++-- src/USER-OMP/pair_lj_sdk_coul_long_omp.cpp | 3 +- src/USER-OMP/pair_lj_sdk_coul_msm_omp.cpp | 3 +- src/USER-OMP/pair_lj_sdk_omp.cpp | 3 +- src/USER-OMP/pair_lj_sf_dipole_sf_omp.cpp | 3 +- src/USER-OMP/pair_lj_smooth_linear_omp.cpp | 3 +- src/USER-OMP/pair_lj_smooth_omp.cpp | 3 +- src/USER-OMP/pair_lubricate_omp.cpp | 3 +- src/USER-OMP/pair_lubricate_poly_omp.cpp | 3 +- src/USER-OMP/pair_meam_spline_omp.cpp | 3 +- src/USER-OMP/pair_morse_omp.cpp | 3 +- src/USER-OMP/pair_morse_smooth_linear_omp.cpp | 3 +- src/USER-OMP/pair_nm_cut_coul_cut_omp.cpp | 3 +- src/USER-OMP/pair_nm_cut_coul_long_omp.cpp | 3 +- src/USER-OMP/pair_nm_cut_omp.cpp | 3 +- src/USER-OMP/pair_peri_lps_omp.cpp | 3 +- src/USER-OMP/pair_peri_pmb_omp.cpp | 3 +- src/USER-OMP/pair_resquared_omp.cpp | 3 +- src/USER-OMP/pair_soft_omp.cpp | 3 +- src/USER-OMP/pair_sw_omp.cpp | 3 +- src/USER-OMP/pair_table_omp.cpp | 3 +- src/USER-OMP/pair_tersoff_mod_c_omp.cpp | 3 +- src/USER-OMP/pair_tersoff_mod_omp.cpp | 3 +- src/USER-OMP/pair_tersoff_omp.cpp | 3 +- src/USER-OMP/pair_tersoff_table_omp.cpp | 3 +- src/USER-OMP/pair_tip4p_cut_omp.cpp | 3 +- src/USER-OMP/pair_tip4p_long_omp.cpp | 3 +- src/USER-OMP/pair_tip4p_long_soft_omp.cpp | 3 +- src/USER-OMP/pair_ufm_omp.cpp | 3 +- src/USER-OMP/pair_vashishta_omp.cpp | 3 +- src/USER-OMP/pair_vashishta_table_omp.cpp | 3 +- src/USER-OMP/pair_yukawa_colloid_omp.cpp | 3 +- src/USER-OMP/pair_yukawa_omp.cpp | 3 +- src/USER-OMP/pair_zbl_omp.cpp | 3 +- src/USER-OMP/pppm_cg_omp.cpp | 19 +++++----- src/USER-OMP/pppm_disp_omp.cpp | 37 ++++++++++--------- src/USER-OMP/pppm_disp_tip4p_omp.cpp | 37 ++++++++++--------- src/USER-OMP/pppm_omp.cpp | 19 +++++----- src/USER-OMP/pppm_tip4p_omp.cpp | 19 +++++----- src/USER-OMP/reaxc_forces_omp.cpp | 3 +- src/USER-OMP/reaxc_hydrogen_bonds_omp.cpp | 3 +- src/USER-OMP/respa_omp.cpp | 7 ++-- 220 files changed, 587 insertions(+), 367 deletions(-) diff --git a/src/MPIIO/dump_atom_mpiio.cpp b/src/MPIIO/dump_atom_mpiio.cpp index 2b663554cc..d59ed7bde8 100644 --- a/src/MPIIO/dump_atom_mpiio.cpp +++ b/src/MPIIO/dump_atom_mpiio.cpp @@ -15,6 +15,7 @@ Contributing author: Paul Coffman (IBM) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include "dump_atom_mpiio.h" #include #include @@ -587,7 +588,7 @@ int DumpAtomMPIIO::convert_image_omp(int n, double *mybuf) mpifh_buffer_line_per_thread[i] = (char *) malloc(DUMP_BUF_CHUNK_SIZE * sizeof(char)); mpifh_buffer_line_per_thread[i][0] = '\0'; -#pragma omp parallel default(none) shared(bufOffset, bufRange, bufLength, mpifhStringCountPerThread, mpifh_buffer_line_per_thread, mybuf) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(bufOffset, bufRange, bufLength, mpifhStringCountPerThread, mpifh_buffer_line_per_thread, mybuf) { int tid = omp_get_thread_num(); int m=0; @@ -677,7 +678,7 @@ int DumpAtomMPIIO::convert_noimage_omp(int n, double *mybuf) mpifh_buffer_line_per_thread[i] = (char *) malloc(DUMP_BUF_CHUNK_SIZE * sizeof(char)); mpifh_buffer_line_per_thread[i][0] = '\0'; -#pragma omp parallel default(none) shared(bufOffset, bufRange, bufLength, mpifhStringCountPerThread, mpifh_buffer_line_per_thread, mybuf) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(bufOffset, bufRange, bufLength, mpifhStringCountPerThread, mpifh_buffer_line_per_thread, mybuf) { int tid = omp_get_thread_num(); int m=0; diff --git a/src/MPIIO/dump_cfg_mpiio.cpp b/src/MPIIO/dump_cfg_mpiio.cpp index 31848b550c..18368db330 100644 --- a/src/MPIIO/dump_cfg_mpiio.cpp +++ b/src/MPIIO/dump_cfg_mpiio.cpp @@ -15,6 +15,7 @@ Contributing author: Paul Coffman (IBM) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include "dump_cfg_mpiio.h" #include #include @@ -365,7 +366,7 @@ int DumpCFGMPIIO::convert_string_omp(int n, double *mybuf) mpifh_buffer_line_per_thread[i] = (char *) malloc(DUMP_BUF_CHUNK_SIZE * sizeof(char)); mpifh_buffer_line_per_thread[i][0] = '\0'; -#pragma omp parallel default(none) shared(bufOffset, bufRange, bufLength, mpifhStringCountPerThread, mpifh_buffer_line_per_thread, mybuf) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(bufOffset, bufRange, bufLength, mpifhStringCountPerThread, mpifh_buffer_line_per_thread, mybuf) { int tid = omp_get_thread_num(); int m=0; diff --git a/src/MPIIO/dump_custom_mpiio.cpp b/src/MPIIO/dump_custom_mpiio.cpp index dca5833c5b..526021d895 100644 --- a/src/MPIIO/dump_custom_mpiio.cpp +++ b/src/MPIIO/dump_custom_mpiio.cpp @@ -15,6 +15,7 @@ Contributing author: Paul Coffman (IBM) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include "dump_custom_mpiio.h" #include #include @@ -612,7 +613,7 @@ int DumpCustomMPIIO::convert_string_omp(int n, double *mybuf) mpifh_buffer_line_per_thread[i] = (char *) malloc(DUMP_BUF_CHUNK_SIZE * sizeof(char)); mpifh_buffer_line_per_thread[i][0] = '\0'; -#pragma omp parallel default(none) shared(bufOffset, bufRange, bufLength, mpifhStringCountPerThread, mpifh_buffer_line_per_thread, mybuf) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(bufOffset, bufRange, bufLength, mpifhStringCountPerThread, mpifh_buffer_line_per_thread, mybuf) { int tid = omp_get_thread_num(); int m=0; diff --git a/src/MPIIO/dump_xyz_mpiio.cpp b/src/MPIIO/dump_xyz_mpiio.cpp index f5caab3a9c..a1e4f21a79 100644 --- a/src/MPIIO/dump_xyz_mpiio.cpp +++ b/src/MPIIO/dump_xyz_mpiio.cpp @@ -15,6 +15,7 @@ Contributing author: Paul Coffman (IBM) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include "dump_xyz_mpiio.h" #include #include @@ -350,7 +351,7 @@ int DumpXYZMPIIO::convert_string_omp(int n, double *mybuf) mpifh_buffer_line_per_thread[i] = (char *) malloc(DUMP_BUF_CHUNK_SIZE * sizeof(char)); mpifh_buffer_line_per_thread[i][0] = '\0'; -#pragma omp parallel default(none) shared(bufOffset, bufRange, bufLength, mpifhStringCountPerThread, mpifh_buffer_line_per_thread, mybuf) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(bufOffset, bufRange, bufLength, mpifhStringCountPerThread, mpifh_buffer_line_per_thread, mybuf) { int tid = omp_get_thread_num(); int m=0; diff --git a/src/USER-DIFFRACTION/compute_saed.cpp b/src/USER-DIFFRACTION/compute_saed.cpp index 7b5b2f4f5b..5dd47b28bd 100644 --- a/src/USER-DIFFRACTION/compute_saed.cpp +++ b/src/USER-DIFFRACTION/compute_saed.cpp @@ -15,6 +15,7 @@ Contributing authors: Shawn Coleman & Douglas Spearot (Arkansas) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include "compute_saed.h" #include #include @@ -418,7 +419,7 @@ void ComputeSAED::compute_vector() double frac = 0.1; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(offset,ASFSAED,typelocal,xlocal,Fvec,m,frac) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(offset,ASFSAED,typelocal,xlocal,Fvec,m,frac) #endif { double *f = new double[ntypes]; // atomic structure factor by type diff --git a/src/USER-DIFFRACTION/compute_xrd.cpp b/src/USER-DIFFRACTION/compute_xrd.cpp index 7f69449282..e75546b548 100644 --- a/src/USER-DIFFRACTION/compute_xrd.cpp +++ b/src/USER-DIFFRACTION/compute_xrd.cpp @@ -16,6 +16,7 @@ Updated: 06/17/2015-2 ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include "compute_xrd.h" #include #include @@ -353,7 +354,7 @@ void ComputeXRD::compute_array() double frac = 0.1; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(typelocal,xlocal,Fvec,m,frac,ASFXRD) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(typelocal,xlocal,Fvec,m,frac,ASFXRD) #endif { double *f = new double[ntypes]; // atomic structure factor by type diff --git a/src/USER-INTEL/angle_charmm_intel.cpp b/src/USER-INTEL/angle_charmm_intel.cpp index 43de50e7fa..9275e82f1c 100644 --- a/src/USER-INTEL/angle_charmm_intel.cpp +++ b/src/USER-INTEL/angle_charmm_intel.cpp @@ -15,6 +15,7 @@ Contributing author: W. Michael Brown (Intel) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include #include "angle_charmm_intel.h" @@ -134,7 +135,7 @@ void AngleCharmmIntel::eval(const int vflag, } #if defined(_OPENMP) - #pragma omp parallel default(none) \ + #pragma omp parallel LMP_DEFAULT_NONE \ shared(f_start,f_stride,fc) \ reduction(+:oeangle,ov0,ov1,ov2,ov3,ov4,ov5) #endif diff --git a/src/USER-INTEL/angle_harmonic_intel.cpp b/src/USER-INTEL/angle_harmonic_intel.cpp index d073e7bc56..49a71038da 100644 --- a/src/USER-INTEL/angle_harmonic_intel.cpp +++ b/src/USER-INTEL/angle_harmonic_intel.cpp @@ -15,6 +15,7 @@ Contributing author: W. Michael Brown (Intel) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include #include "angle_harmonic_intel.h" @@ -134,7 +135,7 @@ void AngleHarmonicIntel::eval(const int vflag, } #if defined(_OPENMP) - #pragma omp parallel default(none) \ + #pragma omp parallel LMP_DEFAULT_NONE \ shared(f_start,f_stride,fc) \ reduction(+:oeangle,ov0,ov1,ov2,ov3,ov4,ov5) #endif diff --git a/src/USER-INTEL/bond_fene_intel.cpp b/src/USER-INTEL/bond_fene_intel.cpp index 6578706a9b..5c58e7bf10 100644 --- a/src/USER-INTEL/bond_fene_intel.cpp +++ b/src/USER-INTEL/bond_fene_intel.cpp @@ -15,6 +15,7 @@ Contributing author: Stan Moore (Sandia) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include #include "bond_fene_intel.h" @@ -127,7 +128,7 @@ void BondFENEIntel::eval(const int vflag, } #if defined(_OPENMP) - #pragma omp parallel default(none) \ + #pragma omp parallel LMP_DEFAULT_NONE \ shared(f_start,f_stride,fc) \ reduction(+:oebond,ov0,ov1,ov2,ov3,ov4,ov5) #endif diff --git a/src/USER-INTEL/bond_harmonic_intel.cpp b/src/USER-INTEL/bond_harmonic_intel.cpp index 55dda9fa15..8bf0a82218 100644 --- a/src/USER-INTEL/bond_harmonic_intel.cpp +++ b/src/USER-INTEL/bond_harmonic_intel.cpp @@ -15,6 +15,7 @@ Contributing author: W. Michael Brown (Intel) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include #include "bond_harmonic_intel.h" @@ -127,7 +128,7 @@ void BondHarmonicIntel::eval(const int vflag, } #if defined(_OPENMP) - #pragma omp parallel default(none) \ + #pragma omp parallel LMP_DEFAULT_NONE \ shared(f_start,f_stride,fc) \ reduction(+:oebond,ov0,ov1,ov2,ov3,ov4,ov5) #endif diff --git a/src/USER-INTEL/dihedral_charmm_intel.cpp b/src/USER-INTEL/dihedral_charmm_intel.cpp index 2ea4eb6d21..61fc1dfbd5 100644 --- a/src/USER-INTEL/dihedral_charmm_intel.cpp +++ b/src/USER-INTEL/dihedral_charmm_intel.cpp @@ -15,6 +15,7 @@ Contributing author: W. Michael Brown (Intel) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include #include "dihedral_charmm_intel.h" @@ -148,7 +149,7 @@ void DihedralCharmmIntel::eval(const int vflag, } #if defined(_OPENMP) - #pragma omp parallel default(none) \ + #pragma omp parallel LMP_DEFAULT_NONE \ shared(f_start,f_stride,fc) \ reduction(+:oevdwl,oecoul,oedihedral,ov0,ov1,ov2,ov3,ov4,ov5, \ opv0,opv1,opv2,opv3,opv4,opv5) @@ -522,7 +523,7 @@ void DihedralCharmmIntel::eval(const int vflag, } #if defined(_OPENMP) - #pragma omp parallel default(none) \ + #pragma omp parallel LMP_DEFAULT_NONE \ shared(f_start,f_stride,fc) \ reduction(+:oevdwl,oecoul,oedihedral,ov0,ov1,ov2,ov3,ov4,ov5, \ opv0,opv1,opv2,opv3,opv4,opv5) diff --git a/src/USER-INTEL/dihedral_fourier_intel.cpp b/src/USER-INTEL/dihedral_fourier_intel.cpp index 8c4a2ce921..fb8051474e 100644 --- a/src/USER-INTEL/dihedral_fourier_intel.cpp +++ b/src/USER-INTEL/dihedral_fourier_intel.cpp @@ -15,6 +15,7 @@ Contributing author: W. Michael Brown (Intel) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include #include "dihedral_fourier_intel.h" @@ -127,7 +128,7 @@ void DihedralFourierIntel::eval(const int vflag, } #if defined(_OPENMP) - #pragma omp parallel default(none) \ + #pragma omp parallel LMP_DEFAULT_NONE \ shared(f_start,f_stride,fc) \ reduction(+:oedihedral,ov0,ov1,ov2,ov3,ov4,ov5) #endif diff --git a/src/USER-INTEL/dihedral_harmonic_intel.cpp b/src/USER-INTEL/dihedral_harmonic_intel.cpp index 60655f2618..f6c4ea0fde 100644 --- a/src/USER-INTEL/dihedral_harmonic_intel.cpp +++ b/src/USER-INTEL/dihedral_harmonic_intel.cpp @@ -15,6 +15,7 @@ Contributing author: W. Michael Brown (Intel) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include #include "dihedral_harmonic_intel.h" @@ -127,7 +128,7 @@ void DihedralHarmonicIntel::eval(const int vflag, } #if defined(_OPENMP) - #pragma omp parallel default(none) \ + #pragma omp parallel LMP_DEFAULT_NONE \ shared(f_start,f_stride,fc) \ reduction(+:oedihedral,ov0,ov1,ov2,ov3,ov4,ov5) #endif diff --git a/src/USER-INTEL/dihedral_opls_intel.cpp b/src/USER-INTEL/dihedral_opls_intel.cpp index 5b580cd7d9..79a8874a72 100644 --- a/src/USER-INTEL/dihedral_opls_intel.cpp +++ b/src/USER-INTEL/dihedral_opls_intel.cpp @@ -15,6 +15,7 @@ Contributing author: W. Michael Brown (Intel) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include #include "dihedral_opls_intel.h" @@ -131,7 +132,7 @@ void DihedralOPLSIntel::eval(const int vflag, } #if defined(_OPENMP) - #pragma omp parallel default(none) \ + #pragma omp parallel LMP_DEFAULT_NONE \ shared(f_start,f_stride,fc) \ reduction(+:oedihedral,ov0,ov1,ov2,ov3,ov4,ov5) #endif diff --git a/src/USER-INTEL/fix_intel.cpp b/src/USER-INTEL/fix_intel.cpp index 5ecae79b30..c62a6a432a 100644 --- a/src/USER-INTEL/fix_intel.cpp +++ b/src/USER-INTEL/fix_intel.cpp @@ -16,6 +16,7 @@ Anupama Kurpad (Intel) - Host Affinitization ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include "fix_intel.h" #include "comm.h" #include "error.h" @@ -220,7 +221,7 @@ FixIntel::FixIntel(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) comm->nthreads = nomp; } else { int nthreads; - #pragma omp parallel default(none) shared(nthreads) + #pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(nthreads) nthreads = omp_get_num_threads(); comm->nthreads = nthreads; } diff --git a/src/USER-INTEL/improper_cvff_intel.cpp b/src/USER-INTEL/improper_cvff_intel.cpp index f198e47d5c..4562c63cdb 100644 --- a/src/USER-INTEL/improper_cvff_intel.cpp +++ b/src/USER-INTEL/improper_cvff_intel.cpp @@ -15,6 +15,7 @@ Contributing author: W. Michael Brown (Intel) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include #include @@ -138,7 +139,7 @@ void ImproperCvffIntel::eval(const int vflag, } #if defined(_OPENMP) - #pragma omp parallel default(none) \ + #pragma omp parallel LMP_DEFAULT_NONE \ shared(f_start,f_stride,fc) \ reduction(+:oeimproper,ov0,ov1,ov2,ov3,ov4,ov5) #endif diff --git a/src/USER-INTEL/improper_harmonic_intel.cpp b/src/USER-INTEL/improper_harmonic_intel.cpp index d638e6a66e..fc5cf08c52 100644 --- a/src/USER-INTEL/improper_harmonic_intel.cpp +++ b/src/USER-INTEL/improper_harmonic_intel.cpp @@ -15,6 +15,7 @@ Contributing author: W. Michael Brown (Intel) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include #include @@ -139,7 +140,7 @@ void ImproperHarmonicIntel::eval(const int vflag, } #if defined(_OPENMP) - #pragma omp parallel default(none) \ + #pragma omp parallel LMP_DEFAULT_NONE \ shared(f_start,f_stride,fc) \ reduction(+:oeimproper,ov0,ov1,ov2,ov3,ov4,ov5) #endif diff --git a/src/USER-INTEL/npair_intel.cpp b/src/USER-INTEL/npair_intel.cpp index 4256e03b3c..f7a233efc9 100644 --- a/src/USER-INTEL/npair_intel.cpp +++ b/src/USER-INTEL/npair_intel.cpp @@ -15,6 +15,7 @@ Contributing author: W. Michael Brown (Intel) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include "comm.h" #include "domain.h" #include "timer.h" @@ -263,7 +264,7 @@ void NPairIntel::bin_newton(const int offload, NeighList *list, } #if defined(_OPENMP) - #pragma omp parallel default(none) \ + #pragma omp parallel LMP_DEFAULT_NONE \ shared(overflow, nstencilp, binstart, binend) #endif { diff --git a/src/USER-INTEL/pppm_disp_intel.cpp b/src/USER-INTEL/pppm_disp_intel.cpp index fd1302da98..75fdc3b1df 100644 --- a/src/USER-INTEL/pppm_disp_intel.cpp +++ b/src/USER-INTEL/pppm_disp_intel.cpp @@ -15,6 +15,7 @@ Contributing authors: William McDoniel (RWTH Aachen University) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include #include @@ -729,7 +730,7 @@ void PPPMDispIntel::particle_map(double delx, double dely, double delz, int flag = 0; #if defined(_OPENMP) - #pragma omp parallel default(none) \ + #pragma omp parallel LMP_DEFAULT_NONE \ shared(nlocal, nthr, delx, dely, delz, sft, p2g, nup, nlow, nxlo,\ nylo, nzlo, nxhi, nyhi, nzhi) reduction(+:flag) if(!_use_lrt) #endif @@ -803,7 +804,7 @@ void PPPMDispIntel::make_rho_c(IntelBuffers * /*buffers*/) int nthr = comm->nthreads; #if defined(_OPENMP) - #pragma omp parallel default(none) \ + #pragma omp parallel LMP_DEFAULT_NONE \ shared(nthr, nlocal, global_density) if(!_use_lrt) #endif { @@ -909,7 +910,7 @@ void PPPMDispIntel::make_rho_c(IntelBuffers * /*buffers*/) // reduce all the perthread_densities into global_density #if defined(_OPENMP) - #pragma omp parallel default(none) \ + #pragma omp parallel LMP_DEFAULT_NONE \ shared(nthr, global_density) if(!_use_lrt) #endif { @@ -951,7 +952,7 @@ void PPPMDispIntel::make_rho_g(IntelBuffers * /*buffers*/) int nthr = comm->nthreads; #if defined(_OPENMP) - #pragma omp parallel default(none) \ + #pragma omp parallel LMP_DEFAULT_NONE \ shared(nthr, nlocal, global_density) if(!_use_lrt) #endif { @@ -1059,7 +1060,7 @@ void PPPMDispIntel::make_rho_g(IntelBuffers * /*buffers*/) // reduce all the perthread_densities into global_density #if defined(_OPENMP) - #pragma omp parallel default(none) \ + #pragma omp parallel LMP_DEFAULT_NONE \ shared(nthr, global_density) if(!_use_lrt) #endif { @@ -1234,7 +1235,7 @@ void PPPMDispIntel::make_rho_none(IntelBuffers * /*buffers*/) int nthr = comm->nthreads; #if defined(_OPENMP) - #pragma omp parallel default(none) \ + #pragma omp parallel LMP_DEFAULT_NONE \ shared(nthr, nlocal, global_density) if(!_use_lrt) #endif { @@ -1343,7 +1344,7 @@ void PPPMDispIntel::make_rho_none(IntelBuffers * /*buffers*/) // reduce all the perthread_densities into global_density #if defined(_OPENMP) - #pragma omp parallel default(none) \ + #pragma omp parallel LMP_DEFAULT_NONE \ shared(nthr, global_density) if(!_use_lrt) #endif { @@ -1386,7 +1387,7 @@ void PPPMDispIntel::fieldforce_c_ik(IntelBuffers * /*buffers*/) #if defined(_OPENMP) - #pragma omp parallel default(none) \ + #pragma omp parallel LMP_DEFAULT_NONE \ shared(nlocal, nthr) if(!_use_lrt) #endif { @@ -1536,7 +1537,7 @@ void PPPMDispIntel::fieldforce_c_ad(IntelBuffers * /*buffers*/) FFT_SCALAR * _noalias const particle_ekz = this->particle_ekz; #if defined(_OPENMP) - #pragma omp parallel default(none) \ + #pragma omp parallel LMP_DEFAULT_NONE \ shared(nlocal, nthr) if(!_use_lrt) #endif { @@ -1734,7 +1735,7 @@ void PPPMDispIntel::fieldforce_g_ik(IntelBuffers * /*buffers*/) #if defined(_OPENMP) - #pragma omp parallel default(none) \ + #pragma omp parallel LMP_DEFAULT_NONE \ shared(nlocal, nthr) if(!_use_lrt) #endif { @@ -1881,7 +1882,7 @@ void PPPMDispIntel::fieldforce_g_ad(IntelBuffers * /*buffers*/) FFT_SCALAR * _noalias const particle_ekz = this->particle_ekz; #if defined(_OPENMP) - #pragma omp parallel default(none) \ + #pragma omp parallel LMP_DEFAULT_NONE \ shared(nlocal, nthr) if(!_use_lrt) #endif { @@ -2078,7 +2079,7 @@ void PPPMDispIntel::fieldforce_a_ik(IntelBuffers * /*buffers*/) #if defined(_OPENMP) - #pragma omp parallel default(none) \ + #pragma omp parallel LMP_DEFAULT_NONE \ shared(nlocal, nthr) if(!_use_lrt) #endif { @@ -2312,7 +2313,7 @@ void PPPMDispIntel::fieldforce_a_ad(IntelBuffers * /*buffers*/) FFT_SCALAR * _noalias const particle_ekz6 = this->particle_ekz6; #if defined(_OPENMP) - #pragma omp parallel default(none) \ + #pragma omp parallel LMP_DEFAULT_NONE \ shared(nlocal, nthr) if(!_use_lrt) #endif { @@ -2603,7 +2604,7 @@ void PPPMDispIntel::fieldforce_none_ik(IntelBuffers * /*buffers*/) #if defined(_OPENMP) - #pragma omp parallel default(none) \ + #pragma omp parallel LMP_DEFAULT_NONE \ shared(nlocal, nthr) if(!_use_lrt) #endif { @@ -2762,7 +2763,7 @@ void PPPMDispIntel::fieldforce_none_ad(IntelBuffers * /*buffers*/) int nthr = comm->nthreads; #if defined(_OPENMP) - #pragma omp parallel default(none) \ + #pragma omp parallel LMP_DEFAULT_NONE \ shared(nlocal, nthr) if(!_use_lrt) #endif { diff --git a/src/USER-INTEL/pppm_intel.cpp b/src/USER-INTEL/pppm_intel.cpp index e3bf779cc1..d643da96b2 100644 --- a/src/USER-INTEL/pppm_intel.cpp +++ b/src/USER-INTEL/pppm_intel.cpp @@ -18,6 +18,7 @@ W. Michael Brown (Intel) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include #include @@ -372,7 +373,7 @@ void PPPMIntel::particle_map(IntelBuffers *buffers) error->one(FLERR,"Non-numeric box dimensions - simulation unstable"); #if defined(_OPENMP) - #pragma omp parallel default(none) \ + #pragma omp parallel LMP_DEFAULT_NONE \ shared(nlocal, nthr) reduction(+:flag) if(!_use_lrt) #endif { @@ -446,7 +447,7 @@ void PPPMIntel::make_rho(IntelBuffers *buffers) nthr = comm->nthreads; #if defined(_OPENMP) - #pragma omp parallel default(none) \ + #pragma omp parallel LMP_DEFAULT_NONE \ shared(nthr, nlocal, global_density) if(!_use_lrt) #endif { @@ -549,7 +550,7 @@ void PPPMIntel::make_rho(IntelBuffers *buffers) // reduce all the perthread_densities into global_density if (nthr > 1) { #if defined(_OPENMP) - #pragma omp parallel default(none) \ + #pragma omp parallel LMP_DEFAULT_NONE \ shared(nthr, global_density) if(!_use_lrt) #endif { @@ -598,7 +599,7 @@ void PPPMIntel::fieldforce_ik(IntelBuffers *buffers) } #if defined(_OPENMP) - #pragma omp parallel default(none) \ + #pragma omp parallel LMP_DEFAULT_NONE \ shared(nlocal, nthr) if(!_use_lrt) #endif { @@ -749,7 +750,7 @@ void PPPMIntel::fieldforce_ad(IntelBuffers *buffers) } #if defined(_OPENMP) - #pragma omp parallel default(none) \ + #pragma omp parallel LMP_DEFAULT_NONE \ shared(nlocal, nthr) if(!_use_lrt) #endif { diff --git a/src/USER-OMP/angle_charmm_omp.cpp b/src/USER-OMP/angle_charmm_omp.cpp index 116c937788..6933afdcd9 100644 --- a/src/USER-OMP/angle_charmm_omp.cpp +++ b/src/USER-OMP/angle_charmm_omp.cpp @@ -15,6 +15,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include "angle_charmm_omp.h" #include #include "atom.h" @@ -47,7 +48,7 @@ void AngleCharmmOMP::compute(int eflag, int vflag) const int inum = neighbor->nanglelist; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/angle_class2_omp.cpp b/src/USER-OMP/angle_class2_omp.cpp index 9aab1d73b3..09ee59d5af 100644 --- a/src/USER-OMP/angle_class2_omp.cpp +++ b/src/USER-OMP/angle_class2_omp.cpp @@ -15,6 +15,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include "angle_class2_omp.h" #include #include "atom.h" @@ -47,7 +48,7 @@ void AngleClass2OMP::compute(int eflag, int vflag) const int inum = neighbor->nanglelist; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/angle_cosine_delta_omp.cpp b/src/USER-OMP/angle_cosine_delta_omp.cpp index 44326c124e..ca5afe1449 100644 --- a/src/USER-OMP/angle_cosine_delta_omp.cpp +++ b/src/USER-OMP/angle_cosine_delta_omp.cpp @@ -15,6 +15,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include "angle_cosine_delta_omp.h" #include #include "atom.h" @@ -47,7 +48,7 @@ void AngleCosineDeltaOMP::compute(int eflag, int vflag) const int inum = neighbor->nanglelist; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/angle_cosine_omp.cpp b/src/USER-OMP/angle_cosine_omp.cpp index 3bfa2aa39c..48fdd9ba60 100644 --- a/src/USER-OMP/angle_cosine_omp.cpp +++ b/src/USER-OMP/angle_cosine_omp.cpp @@ -15,6 +15,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include "angle_cosine_omp.h" #include #include "atom.h" @@ -47,7 +48,7 @@ void AngleCosineOMP::compute(int eflag, int vflag) const int inum = neighbor->nanglelist; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/angle_cosine_periodic_omp.cpp b/src/USER-OMP/angle_cosine_periodic_omp.cpp index 700179119c..a0e45fe131 100644 --- a/src/USER-OMP/angle_cosine_periodic_omp.cpp +++ b/src/USER-OMP/angle_cosine_periodic_omp.cpp @@ -15,6 +15,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include "angle_cosine_periodic_omp.h" #include #include "atom.h" @@ -49,7 +50,7 @@ void AngleCosinePeriodicOMP::compute(int eflag, int vflag) const int inum = neighbor->nanglelist; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/angle_cosine_shift_exp_omp.cpp b/src/USER-OMP/angle_cosine_shift_exp_omp.cpp index 1e37688425..21019336b3 100644 --- a/src/USER-OMP/angle_cosine_shift_exp_omp.cpp +++ b/src/USER-OMP/angle_cosine_shift_exp_omp.cpp @@ -15,6 +15,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include "angle_cosine_shift_exp_omp.h" #include #include "atom.h" @@ -47,7 +48,7 @@ void AngleCosineShiftExpOMP::compute(int eflag, int vflag) const int inum = neighbor->nanglelist; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/angle_cosine_shift_omp.cpp b/src/USER-OMP/angle_cosine_shift_omp.cpp index 35b409edf1..1e6d712b62 100644 --- a/src/USER-OMP/angle_cosine_shift_omp.cpp +++ b/src/USER-OMP/angle_cosine_shift_omp.cpp @@ -15,6 +15,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include "angle_cosine_shift_omp.h" #include #include "atom.h" @@ -47,7 +48,7 @@ void AngleCosineShiftOMP::compute(int eflag, int vflag) const int inum = neighbor->nanglelist; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/angle_cosine_squared_omp.cpp b/src/USER-OMP/angle_cosine_squared_omp.cpp index 9da5a0fce3..6df1e028a0 100644 --- a/src/USER-OMP/angle_cosine_squared_omp.cpp +++ b/src/USER-OMP/angle_cosine_squared_omp.cpp @@ -15,6 +15,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include "angle_cosine_squared_omp.h" #include #include "atom.h" @@ -47,7 +48,7 @@ void AngleCosineSquaredOMP::compute(int eflag, int vflag) const int inum = neighbor->nanglelist; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/angle_dipole_omp.cpp b/src/USER-OMP/angle_dipole_omp.cpp index 33ec216f6a..26d8a7817e 100644 --- a/src/USER-OMP/angle_dipole_omp.cpp +++ b/src/USER-OMP/angle_dipole_omp.cpp @@ -15,6 +15,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include "angle_dipole_omp.h" #include #include "atom.h" @@ -51,7 +52,7 @@ void AngleDipoleOMP::compute(int eflag, int vflag) const int inum = neighbor->nanglelist; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/angle_fourier_omp.cpp b/src/USER-OMP/angle_fourier_omp.cpp index 64ff99e6c6..b6ddea3ff9 100644 --- a/src/USER-OMP/angle_fourier_omp.cpp +++ b/src/USER-OMP/angle_fourier_omp.cpp @@ -15,6 +15,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include "angle_fourier_omp.h" #include #include "atom.h" @@ -47,7 +48,7 @@ void AngleFourierOMP::compute(int eflag, int vflag) const int inum = neighbor->nanglelist; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/angle_fourier_simple_omp.cpp b/src/USER-OMP/angle_fourier_simple_omp.cpp index 2ae8c5561d..992acf7c99 100644 --- a/src/USER-OMP/angle_fourier_simple_omp.cpp +++ b/src/USER-OMP/angle_fourier_simple_omp.cpp @@ -15,6 +15,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include "angle_fourier_simple_omp.h" #include #include "atom.h" @@ -47,7 +48,7 @@ void AngleFourierSimpleOMP::compute(int eflag, int vflag) const int inum = neighbor->nanglelist; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/angle_harmonic_omp.cpp b/src/USER-OMP/angle_harmonic_omp.cpp index 66c0602396..0cfc6f95af 100644 --- a/src/USER-OMP/angle_harmonic_omp.cpp +++ b/src/USER-OMP/angle_harmonic_omp.cpp @@ -15,6 +15,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include "angle_harmonic_omp.h" #include #include "atom.h" @@ -47,7 +48,7 @@ void AngleHarmonicOMP::compute(int eflag, int vflag) const int inum = neighbor->nanglelist; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/angle_quartic_omp.cpp b/src/USER-OMP/angle_quartic_omp.cpp index 903b0e4225..a774edb8c4 100644 --- a/src/USER-OMP/angle_quartic_omp.cpp +++ b/src/USER-OMP/angle_quartic_omp.cpp @@ -15,6 +15,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include "angle_quartic_omp.h" #include #include "atom.h" @@ -47,7 +48,7 @@ void AngleQuarticOMP::compute(int eflag, int vflag) const int inum = neighbor->nanglelist; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/angle_sdk_omp.cpp b/src/USER-OMP/angle_sdk_omp.cpp index 3c8ee9cde8..e0bc021f1b 100644 --- a/src/USER-OMP/angle_sdk_omp.cpp +++ b/src/USER-OMP/angle_sdk_omp.cpp @@ -15,6 +15,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include "angle_sdk_omp.h" #include #include "atom.h" @@ -49,7 +50,7 @@ void AngleSDKOMP::compute(int eflag, int vflag) const int inum = neighbor->nanglelist; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/angle_table_omp.cpp b/src/USER-OMP/angle_table_omp.cpp index de36d09980..1af60f85f6 100644 --- a/src/USER-OMP/angle_table_omp.cpp +++ b/src/USER-OMP/angle_table_omp.cpp @@ -15,6 +15,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include "angle_table_omp.h" #include #include "atom.h" @@ -47,7 +48,7 @@ void AngleTableOMP::compute(int eflag, int vflag) const int inum = neighbor->nanglelist; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/bond_class2_omp.cpp b/src/USER-OMP/bond_class2_omp.cpp index 9da50d1aa0..06edf46024 100644 --- a/src/USER-OMP/bond_class2_omp.cpp +++ b/src/USER-OMP/bond_class2_omp.cpp @@ -15,6 +15,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include "bond_class2_omp.h" #include "atom.h" #include "comm.h" @@ -47,7 +48,7 @@ void BondClass2OMP::compute(int eflag, int vflag) const int inum = neighbor->nbondlist; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/bond_fene_expand_omp.cpp b/src/USER-OMP/bond_fene_expand_omp.cpp index a937cb6c34..5f3dd48841 100644 --- a/src/USER-OMP/bond_fene_expand_omp.cpp +++ b/src/USER-OMP/bond_fene_expand_omp.cpp @@ -15,6 +15,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include "bond_fene_expand_omp.h" #include "atom.h" #include "comm.h" @@ -48,7 +49,7 @@ void BondFENEExpandOMP::compute(int eflag, int vflag) const int inum = neighbor->nbondlist; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/bond_fene_omp.cpp b/src/USER-OMP/bond_fene_omp.cpp index 3c653fedae..ebf5afdc57 100644 --- a/src/USER-OMP/bond_fene_omp.cpp +++ b/src/USER-OMP/bond_fene_omp.cpp @@ -15,6 +15,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include "bond_fene_omp.h" #include "atom.h" #include "comm.h" @@ -48,7 +49,7 @@ void BondFENEOMP::compute(int eflag, int vflag) const int inum = neighbor->nbondlist; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/bond_gromos_omp.cpp b/src/USER-OMP/bond_gromos_omp.cpp index cedd5f96b7..e5eebfebfc 100644 --- a/src/USER-OMP/bond_gromos_omp.cpp +++ b/src/USER-OMP/bond_gromos_omp.cpp @@ -15,6 +15,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include "bond_gromos_omp.h" #include "atom.h" #include "comm.h" @@ -44,7 +45,7 @@ void BondGromosOMP::compute(int eflag, int vflag) const int inum = neighbor->nbondlist; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/bond_harmonic_omp.cpp b/src/USER-OMP/bond_harmonic_omp.cpp index 4144f02a39..9160ee7023 100644 --- a/src/USER-OMP/bond_harmonic_omp.cpp +++ b/src/USER-OMP/bond_harmonic_omp.cpp @@ -15,6 +15,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include "bond_harmonic_omp.h" #include "atom.h" #include "comm.h" @@ -46,7 +47,7 @@ void BondHarmonicOMP::compute(int eflag, int vflag) const int inum = neighbor->nbondlist; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/bond_harmonic_shift_cut_omp.cpp b/src/USER-OMP/bond_harmonic_shift_cut_omp.cpp index 10e4cdcd1c..7a6c616e4a 100644 --- a/src/USER-OMP/bond_harmonic_shift_cut_omp.cpp +++ b/src/USER-OMP/bond_harmonic_shift_cut_omp.cpp @@ -15,6 +15,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include "bond_harmonic_shift_cut_omp.h" #include "atom.h" #include "comm.h" @@ -46,7 +47,7 @@ void BondHarmonicShiftCutOMP::compute(int eflag, int vflag) const int inum = neighbor->nbondlist; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/bond_harmonic_shift_omp.cpp b/src/USER-OMP/bond_harmonic_shift_omp.cpp index a0a7750890..19f0a08510 100644 --- a/src/USER-OMP/bond_harmonic_shift_omp.cpp +++ b/src/USER-OMP/bond_harmonic_shift_omp.cpp @@ -15,6 +15,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include "bond_harmonic_shift_omp.h" #include "atom.h" #include "comm.h" @@ -46,7 +47,7 @@ void BondHarmonicShiftOMP::compute(int eflag, int vflag) const int inum = neighbor->nbondlist; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/bond_morse_omp.cpp b/src/USER-OMP/bond_morse_omp.cpp index 32361cb5de..90318c8faf 100644 --- a/src/USER-OMP/bond_morse_omp.cpp +++ b/src/USER-OMP/bond_morse_omp.cpp @@ -15,6 +15,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include "bond_morse_omp.h" #include "atom.h" #include "comm.h" @@ -46,7 +47,7 @@ void BondMorseOMP::compute(int eflag, int vflag) const int inum = neighbor->nbondlist; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/bond_nonlinear_omp.cpp b/src/USER-OMP/bond_nonlinear_omp.cpp index f21772435f..809950f2b7 100644 --- a/src/USER-OMP/bond_nonlinear_omp.cpp +++ b/src/USER-OMP/bond_nonlinear_omp.cpp @@ -15,6 +15,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include "bond_nonlinear_omp.h" #include "atom.h" #include "comm.h" @@ -46,7 +47,7 @@ void BondNonlinearOMP::compute(int eflag, int vflag) const int inum = neighbor->nbondlist; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/bond_quartic_omp.cpp b/src/USER-OMP/bond_quartic_omp.cpp index 46ee4ab96b..0efaa10e37 100644 --- a/src/USER-OMP/bond_quartic_omp.cpp +++ b/src/USER-OMP/bond_quartic_omp.cpp @@ -15,6 +15,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include "bond_quartic_omp.h" #include "atom.h" #include "comm.h" @@ -52,7 +53,7 @@ void BondQuarticOMP::compute(int eflag, int vflag) const int inum = neighbor->nbondlist; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/bond_table_omp.cpp b/src/USER-OMP/bond_table_omp.cpp index db1599fbcc..f503bcab26 100644 --- a/src/USER-OMP/bond_table_omp.cpp +++ b/src/USER-OMP/bond_table_omp.cpp @@ -15,6 +15,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include "bond_table_omp.h" #include "atom.h" #include "comm.h" @@ -46,7 +47,7 @@ void BondTableOMP::compute(int eflag, int vflag) const int inum = neighbor->nbondlist; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/dihedral_charmm_omp.cpp b/src/USER-OMP/dihedral_charmm_omp.cpp index 242a0a1d86..afd3071434 100644 --- a/src/USER-OMP/dihedral_charmm_omp.cpp +++ b/src/USER-OMP/dihedral_charmm_omp.cpp @@ -15,6 +15,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include "dihedral_charmm_omp.h" #include #include "atom.h" @@ -56,7 +57,7 @@ void DihedralCharmmOMP::compute(int eflag, int vflag) const int inum = neighbor->ndihedrallist; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/dihedral_class2_omp.cpp b/src/USER-OMP/dihedral_class2_omp.cpp index 215677612b..49b8659e2f 100644 --- a/src/USER-OMP/dihedral_class2_omp.cpp +++ b/src/USER-OMP/dihedral_class2_omp.cpp @@ -15,6 +15,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include "dihedral_class2_omp.h" #include "atom.h" @@ -50,7 +51,7 @@ void DihedralClass2OMP::compute(int eflag, int vflag) const int inum = neighbor->ndihedrallist; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/dihedral_cosine_shift_exp_omp.cpp b/src/USER-OMP/dihedral_cosine_shift_exp_omp.cpp index f42121f8a9..cea22adf1b 100644 --- a/src/USER-OMP/dihedral_cosine_shift_exp_omp.cpp +++ b/src/USER-OMP/dihedral_cosine_shift_exp_omp.cpp @@ -15,6 +15,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include "dihedral_cosine_shift_exp_omp.h" #include "atom.h" @@ -50,7 +51,7 @@ void DihedralCosineShiftExpOMP::compute(int eflag, int vflag) const int inum = neighbor->ndihedrallist; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/dihedral_fourier_omp.cpp b/src/USER-OMP/dihedral_fourier_omp.cpp index cd12b3630e..756931774a 100644 --- a/src/USER-OMP/dihedral_fourier_omp.cpp +++ b/src/USER-OMP/dihedral_fourier_omp.cpp @@ -15,6 +15,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include "dihedral_fourier_omp.h" #include #include "atom.h" @@ -49,7 +50,7 @@ void DihedralFourierOMP::compute(int eflag, int vflag) const int inum = neighbor->ndihedrallist; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/dihedral_harmonic_omp.cpp b/src/USER-OMP/dihedral_harmonic_omp.cpp index c3adb113e2..d1f511954e 100644 --- a/src/USER-OMP/dihedral_harmonic_omp.cpp +++ b/src/USER-OMP/dihedral_harmonic_omp.cpp @@ -15,6 +15,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include "dihedral_harmonic_omp.h" #include "atom.h" @@ -50,7 +51,7 @@ void DihedralHarmonicOMP::compute(int eflag, int vflag) const int inum = neighbor->ndihedrallist; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/dihedral_helix_omp.cpp b/src/USER-OMP/dihedral_helix_omp.cpp index b38ff2739a..5289fc2c62 100644 --- a/src/USER-OMP/dihedral_helix_omp.cpp +++ b/src/USER-OMP/dihedral_helix_omp.cpp @@ -15,6 +15,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include "dihedral_helix_omp.h" #include "atom.h" @@ -53,7 +54,7 @@ void DihedralHelixOMP::compute(int eflag, int vflag) const int inum = neighbor->ndihedrallist; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/dihedral_multi_harmonic_omp.cpp b/src/USER-OMP/dihedral_multi_harmonic_omp.cpp index 7b79a63722..edf8a20899 100644 --- a/src/USER-OMP/dihedral_multi_harmonic_omp.cpp +++ b/src/USER-OMP/dihedral_multi_harmonic_omp.cpp @@ -15,6 +15,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include "dihedral_multi_harmonic_omp.h" #include "atom.h" @@ -50,7 +51,7 @@ void DihedralMultiHarmonicOMP::compute(int eflag, int vflag) const int inum = neighbor->ndihedrallist; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/dihedral_nharmonic_omp.cpp b/src/USER-OMP/dihedral_nharmonic_omp.cpp index f3d8471c95..bf51a01713 100644 --- a/src/USER-OMP/dihedral_nharmonic_omp.cpp +++ b/src/USER-OMP/dihedral_nharmonic_omp.cpp @@ -15,6 +15,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include "dihedral_nharmonic_omp.h" #include "atom.h" @@ -50,7 +51,7 @@ void DihedralNHarmonicOMP::compute(int eflag, int vflag) const int inum = neighbor->ndihedrallist; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/dihedral_opls_omp.cpp b/src/USER-OMP/dihedral_opls_omp.cpp index 24cc4cd064..8814d3f3f0 100644 --- a/src/USER-OMP/dihedral_opls_omp.cpp +++ b/src/USER-OMP/dihedral_opls_omp.cpp @@ -15,6 +15,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include "dihedral_opls_omp.h" #include "atom.h" @@ -51,7 +52,7 @@ void DihedralOPLSOMP::compute(int eflag, int vflag) const int inum = neighbor->ndihedrallist; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/dihedral_quadratic_omp.cpp b/src/USER-OMP/dihedral_quadratic_omp.cpp index 6f82c1e6b0..e61c5f0d85 100644 --- a/src/USER-OMP/dihedral_quadratic_omp.cpp +++ b/src/USER-OMP/dihedral_quadratic_omp.cpp @@ -15,6 +15,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include "dihedral_quadratic_omp.h" #include "atom.h" @@ -51,7 +52,7 @@ void DihedralQuadraticOMP::compute(int eflag, int vflag) const int inum = neighbor->ndihedrallist; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/dihedral_table_omp.cpp b/src/USER-OMP/dihedral_table_omp.cpp index a760fc6094..bf5332a1c1 100644 --- a/src/USER-OMP/dihedral_table_omp.cpp +++ b/src/USER-OMP/dihedral_table_omp.cpp @@ -15,6 +15,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include "dihedral_table_omp.h" #include #include "atom.h" @@ -113,7 +114,7 @@ void DihedralTableOMP::compute(int eflag, int vflag) const int inum = neighbor->ndihedrallist; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/domain_omp.cpp b/src/USER-OMP/domain_omp.cpp index 18d2a587ca..dfd3d3590f 100644 --- a/src/USER-OMP/domain_omp.cpp +++ b/src/USER-OMP/domain_omp.cpp @@ -15,6 +15,7 @@ Contributing author : Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include "accelerator_omp.h" #include "atom.h" @@ -45,7 +46,7 @@ void DomainOMP::pbc() const int nlocal = atom->nlocal; #if defined(_OPENMP) -#pragma omp parallel for default(none) schedule(static) +#pragma omp parallel for LMP_DEFAULT_NONE schedule(static) #endif for (int i = 0; i < nlocal; i++) { imageint idim,otherdims; @@ -143,7 +144,7 @@ void DomainOMP::lamda2x(int n) const int num = n; #if defined(_OPENMP) -#pragma omp parallel for default(none) schedule(static) +#pragma omp parallel for LMP_DEFAULT_NONE schedule(static) #endif for (int i = 0; i < num; i++) { x[i].x = h[0]*x[i].x + h[5]*x[i].y + h[4]*x[i].z + boxlo[0]; @@ -163,7 +164,7 @@ void DomainOMP::x2lamda(int n) const int num = n; #if defined(_OPENMP) -#pragma omp parallel for default(none) schedule(static) +#pragma omp parallel for LMP_DEFAULT_NONE schedule(static) #endif for (int i = 0; i < num; i++) { double delta0 = x[i].x - boxlo[0]; diff --git a/src/USER-OMP/ewald_omp.cpp b/src/USER-OMP/ewald_omp.cpp index a539394f69..fd776e46a6 100644 --- a/src/USER-OMP/ewald_omp.cpp +++ b/src/USER-OMP/ewald_omp.cpp @@ -15,6 +15,7 @@ Contributing authors: Roy Pollock (LLNL), Paul Crozier (SNL) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include "ewald_omp.h" #include #include @@ -104,7 +105,7 @@ void EwaldOMP::compute(int eflag, int vflag) v0=v1=v2=v3=v4=v5=0.0; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) reduction(+:eng_tmp,v0,v1,v2,v3,v4,v5) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) reduction(+:eng_tmp,v0,v1,v2,v3,v4,v5) #endif { @@ -234,7 +235,7 @@ void EwaldOMP::eik_dot_r() const int nthreads = comm->nthreads; #if defined(_OPENMP) -#pragma omp parallel default(none) +#pragma omp parallel LMP_DEFAULT_NONE #endif { int i,ifrom,ito,k,l,m,n,ic,tid; diff --git a/src/USER-OMP/fix_gravity_omp.cpp b/src/USER-OMP/fix_gravity_omp.cpp index 5bc1085f34..830fa0c4eb 100644 --- a/src/USER-OMP/fix_gravity_omp.cpp +++ b/src/USER-OMP/fix_gravity_omp.cpp @@ -15,6 +15,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include "fix_gravity_omp.h" #include "atom.h" #include "update.h" @@ -69,7 +70,7 @@ void FixGravityOMP::post_force(int /* vflag */) if (rmass) { #if defined(_OPENMP) -#pragma omp parallel for default(none) reduction(-:grav) +#pragma omp parallel for LMP_DEFAULT_NONE reduction(-:grav) #endif for (int i = 0; i < nlocal; i++) if (mask[i] & groupbit) { @@ -81,7 +82,7 @@ void FixGravityOMP::post_force(int /* vflag */) } } else { #if defined(_OPENMP) -#pragma omp parallel for default(none) reduction(-:grav) +#pragma omp parallel for LMP_DEFAULT_NONE reduction(-:grav) #endif for (int i = 0; i < nlocal; i++) if (mask[i] & groupbit) { diff --git a/src/USER-OMP/fix_neigh_history_omp.cpp b/src/USER-OMP/fix_neigh_history_omp.cpp index 22d3fa944c..7acded0ab2 100644 --- a/src/USER-OMP/fix_neigh_history_omp.cpp +++ b/src/USER-OMP/fix_neigh_history_omp.cpp @@ -11,6 +11,7 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include "fix_neigh_history_omp.h" #include #include "my_page.h" @@ -73,7 +74,7 @@ void FixNeighHistoryOMP::pre_exchange_onesided() maxpartner = 0; #if defined(_OPENMP) -#pragma omp parallel default(none) +#pragma omp parallel LMP_DEFAULT_NONE #endif { @@ -199,7 +200,7 @@ void FixNeighHistoryOMP::pre_exchange_newton() for (int i = 0; i < nall_neigh; i++) npartner[i] = 0; #if defined(_OPENMP) -#pragma omp parallel default(none) +#pragma omp parallel LMP_DEFAULT_NONE #endif { @@ -373,7 +374,7 @@ void FixNeighHistoryOMP::pre_exchange_no_newton() maxpartner = 0; #if defined(_OPENMP) -#pragma omp parallel default(none) +#pragma omp parallel LMP_DEFAULT_NONE #endif { @@ -525,7 +526,7 @@ void FixNeighHistoryOMP::post_neighbor() #if defined(_OPENMP) -#pragma omp parallel default(none) +#pragma omp parallel LMP_DEFAULT_NONE #endif { diff --git a/src/USER-OMP/fix_nh_asphere_omp.cpp b/src/USER-OMP/fix_nh_asphere_omp.cpp index 185eab5f47..9c7317bebd 100644 --- a/src/USER-OMP/fix_nh_asphere_omp.cpp +++ b/src/USER-OMP/fix_nh_asphere_omp.cpp @@ -15,6 +15,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include #include @@ -82,7 +83,7 @@ void FixNHAsphereOMP::nve_v() // merged with FixNHOMP instead of calling it for the COM update. #if defined(_OPENMP) -#pragma omp parallel for default(none) schedule(static) +#pragma omp parallel for LMP_DEFAULT_NONE schedule(static) #endif for (int i = 0; i < nlocal; i++) { if (mask[i] & groupbit) { @@ -122,7 +123,7 @@ void FixNHAsphereOMP::nve_x() // principal moments of inertia #if defined(_OPENMP) -#pragma omp parallel for default(none) schedule(static) +#pragma omp parallel for LMP_DEFAULT_NONE schedule(static) #endif for (int i = 0; i < nlocal; i++) if (mask[i] & groupbit) { @@ -163,7 +164,7 @@ void FixNHAsphereOMP::nh_v_temp() if (which == NOBIAS) { #if defined(_OPENMP) -#pragma omp parallel for default(none) schedule(static) +#pragma omp parallel for LMP_DEFAULT_NONE schedule(static) #endif for (int i = 0; i < nlocal; i++) { if (mask[i] & groupbit) { @@ -177,7 +178,7 @@ void FixNHAsphereOMP::nh_v_temp() } } else if (which == BIAS) { #if defined(_OPENMP) -#pragma omp parallel for default(none) schedule(static) +#pragma omp parallel for LMP_DEFAULT_NONE schedule(static) #endif for (int i = 0; i < nlocal; i++) { double buf[3]; diff --git a/src/USER-OMP/fix_nh_omp.cpp b/src/USER-OMP/fix_nh_omp.cpp index d584bcd11f..b30169b2dc 100644 --- a/src/USER-OMP/fix_nh_omp.cpp +++ b/src/USER-OMP/fix_nh_omp.cpp @@ -15,6 +15,7 @@ Contributing authors: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include "fix_nh_omp.h" #include #include "atom.h" @@ -57,7 +58,7 @@ void FixNHOMP::remap() if (allremap) domain->x2lamda(nlocal); else { #if defined (_OPENMP) -#pragma omp parallel for default(none) schedule(static) +#pragma omp parallel for LMP_DEFAULT_NONE schedule(static) #endif for (int i = 0; i < nlocal; i++) if (mask[i] & dilate_group_bit) @@ -207,7 +208,7 @@ void FixNHOMP::remap() if (allremap) domain->lamda2x(nlocal); else { #if defined (_OPENMP) -#pragma omp parallel for default(none) schedule(static) +#pragma omp parallel for LMP_DEFAULT_NONE schedule(static) #endif for (int i = 0; i < nlocal; i++) if (mask[i] & dilate_group_bit) @@ -235,7 +236,7 @@ void FixNHOMP::nh_v_press() if (which == NOBIAS) { #if defined(_OPENMP) -#pragma omp parallel for default(none) schedule(static) +#pragma omp parallel for LMP_DEFAULT_NONE schedule(static) #endif for (int i = 0; i < nlocal; i++) { if (mask[i] & groupbit) { @@ -253,7 +254,7 @@ void FixNHOMP::nh_v_press() } } else if (which == BIAS) { #if defined(_OPENMP) -#pragma omp parallel for default(none) schedule(static) +#pragma omp parallel for LMP_DEFAULT_NONE schedule(static) #endif for (int i = 0; i < nlocal; i++) { double buf[3]; @@ -289,7 +290,7 @@ void FixNHOMP::nve_v() if (atom->rmass) { const double * _noalias const rmass = atom->rmass; #if defined(_OPENMP) -#pragma omp parallel for default(none) schedule(static) +#pragma omp parallel for LMP_DEFAULT_NONE schedule(static) #endif for (int i = 0; i < nlocal; i++) { if (mask[i] & groupbit) { @@ -303,7 +304,7 @@ void FixNHOMP::nve_v() const double *_noalias const mass = atom->mass; const int * _noalias const type = atom->type; #if defined(_OPENMP) -#pragma omp parallel for default(none) schedule(static) +#pragma omp parallel for LMP_DEFAULT_NONE schedule(static) #endif for (int i = 0; i < nlocal; i++) { if (mask[i] & groupbit) { @@ -330,7 +331,7 @@ void FixNHOMP::nve_x() // x update by full step only for atoms in group #if defined(_OPENMP) -#pragma omp parallel for default(none) schedule(static) +#pragma omp parallel for LMP_DEFAULT_NONE schedule(static) #endif for (int i = 0; i < nlocal; i++) { if (mask[i] & groupbit) { @@ -352,7 +353,7 @@ void FixNHOMP::nh_v_temp() if (which == NOBIAS) { #if defined(_OPENMP) -#pragma omp parallel for default(none) schedule(static) +#pragma omp parallel for LMP_DEFAULT_NONE schedule(static) #endif for (int i = 0; i < nlocal; i++) { if (mask[i] & groupbit) { @@ -363,7 +364,7 @@ void FixNHOMP::nh_v_temp() } } else if (which == BIAS) { #if defined(_OPENMP) -#pragma omp parallel for default(none) schedule(static) +#pragma omp parallel for LMP_DEFAULT_NONE schedule(static) #endif for (int i = 0; i < nlocal; i++) { double buf[3]; diff --git a/src/USER-OMP/fix_nh_sphere_omp.cpp b/src/USER-OMP/fix_nh_sphere_omp.cpp index 0048ae7ff7..dd9a8addf4 100644 --- a/src/USER-OMP/fix_nh_sphere_omp.cpp +++ b/src/USER-OMP/fix_nh_sphere_omp.cpp @@ -15,6 +15,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include "fix_nh_sphere_omp.h" #include "atom.h" #include "compute.h" @@ -85,7 +86,7 @@ void FixNHSphereOMP::nve_v() // 4 cases depending on radius vs shape and rmass vs mass #if defined(_OPENMP) -#pragma omp parallel for default(none) schedule(static) +#pragma omp parallel for LMP_DEFAULT_NONE schedule(static) #endif for (int i = 0; i < nlocal; i++) { if (mask[i] & groupbit) { @@ -115,7 +116,7 @@ void FixNHSphereOMP::nh_v_temp() if (which == NOBIAS) { #if defined(_OPENMP) -#pragma omp parallel for default(none) schedule(static) +#pragma omp parallel for LMP_DEFAULT_NONE schedule(static) #endif for (int i = 0; i < nlocal; i++) { if (mask[i] & groupbit) { @@ -129,7 +130,7 @@ void FixNHSphereOMP::nh_v_temp() } } else if (which == BIAS) { #if defined(_OPENMP) -#pragma omp parallel for default(none) schedule(static) +#pragma omp parallel for LMP_DEFAULT_NONE schedule(static) #endif for (int i = 0; i < nlocal; i++) { double buf[3]; diff --git a/src/USER-OMP/fix_nve_omp.cpp b/src/USER-OMP/fix_nve_omp.cpp index f693c2fa20..13c1dfb642 100644 --- a/src/USER-OMP/fix_nve_omp.cpp +++ b/src/USER-OMP/fix_nve_omp.cpp @@ -11,6 +11,7 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include "fix_nve_omp.h" #include "atom.h" @@ -41,7 +42,7 @@ void FixNVEOMP::initial_integrate(int /* vflag */) if (atom->rmass) { const double * const rmass = atom->rmass; #if defined (_OPENMP) -#pragma omp parallel for default(none) schedule(static) +#pragma omp parallel for LMP_DEFAULT_NONE schedule(static) #endif for (int i = 0; i < nlocal; i++) if (mask[i] & groupbit) { @@ -58,7 +59,7 @@ void FixNVEOMP::initial_integrate(int /* vflag */) const double * const mass = atom->mass; const int * const type = atom->type; #if defined (_OPENMP) -#pragma omp parallel for default(none) schedule(static) +#pragma omp parallel for LMP_DEFAULT_NONE schedule(static) #endif for (int i = 0; i < nlocal; i++) if (mask[i] & groupbit) { @@ -87,7 +88,7 @@ void FixNVEOMP::final_integrate() if (atom->rmass) { const double * const rmass = atom->rmass; #if defined (_OPENMP) -#pragma omp parallel for default(none) schedule(static) +#pragma omp parallel for LMP_DEFAULT_NONE schedule(static) #endif for (int i = 0; i < nlocal; i++) if (mask[i] & groupbit) { @@ -101,7 +102,7 @@ void FixNVEOMP::final_integrate() const double * const mass = atom->mass; const int * const type = atom->type; #if defined (_OPENMP) -#pragma omp parallel for default(none) schedule(static) +#pragma omp parallel for LMP_DEFAULT_NONE schedule(static) #endif for (int i = 0; i < nlocal; i++) if (mask[i] & groupbit) { diff --git a/src/USER-OMP/fix_nve_sphere_omp.cpp b/src/USER-OMP/fix_nve_sphere_omp.cpp index bc7be4019c..4a1bd4dfda 100644 --- a/src/USER-OMP/fix_nve_sphere_omp.cpp +++ b/src/USER-OMP/fix_nve_sphere_omp.cpp @@ -11,6 +11,7 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include "fix_nve_sphere_omp.h" #include #include "atom.h" @@ -49,7 +50,7 @@ void FixNVESphereOMP::initial_integrate(int /* vflag */) // update v,x,omega for all particles // d_omega/dt = torque / inertia #if defined(_OPENMP) -#pragma omp parallel for default(none) +#pragma omp parallel for LMP_DEFAULT_NONE #endif for (int i = 0; i < nlocal; i++) { if (mask[i] & groupbit) { @@ -76,7 +77,7 @@ void FixNVESphereOMP::initial_integrate(int /* vflag */) double * const * const mu = atom->mu; if (dlm == NODLM) { #if defined(_OPENMP) -#pragma omp parallel for default(none) +#pragma omp parallel for LMP_DEFAULT_NONE #endif for (int i = 0; i < nlocal; i++) { double g0,g1,g2,msq,scale; @@ -95,7 +96,7 @@ void FixNVESphereOMP::initial_integrate(int /* vflag */) } } else { #if defined(_OPENMP) -#pragma omp parallel for default(none) +#pragma omp parallel for LMP_DEFAULT_NONE #endif // Integrate orientation following Dullweber-Leimkuhler-Maclachlan scheme for (int i = 0; i < nlocal; i++) { @@ -223,7 +224,7 @@ void FixNVESphereOMP::final_integrate() // d_omega/dt = torque / inertia #if defined(_OPENMP) -#pragma omp parallel for default(none) +#pragma omp parallel for LMP_DEFAULT_NONE #endif for (int i = 0; i < nlocal; i++) if (mask[i] & groupbit) { diff --git a/src/USER-OMP/fix_nvt_sllod_omp.cpp b/src/USER-OMP/fix_nvt_sllod_omp.cpp index 9b3b515415..0d23d6c03f 100644 --- a/src/USER-OMP/fix_nvt_sllod_omp.cpp +++ b/src/USER-OMP/fix_nvt_sllod_omp.cpp @@ -15,6 +15,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include "fix_nvt_sllod_omp.h" #include #include "math_extra.h" @@ -114,7 +115,7 @@ void FixNVTSllodOMP::nh_v_temp() MathExtra::multiply_shape_shape(domain->h_rate,domain->h_inv,h_two); #if defined(_OPENMP) -#pragma omp parallel for default(none) shared(h_two) schedule(static) +#pragma omp parallel for LMP_DEFAULT_NONE LMP_SHARED(h_two) schedule(static) #endif for (int i = 0; i < nlocal; i++) { double vdelu0,vdelu1,vdelu2,buf[3]; diff --git a/src/USER-OMP/fix_omp.cpp b/src/USER-OMP/fix_omp.cpp index 1fca1e739b..25a3a09816 100644 --- a/src/USER-OMP/fix_omp.cpp +++ b/src/USER-OMP/fix_omp.cpp @@ -16,6 +16,7 @@ OpenMP based threading support for LAMMPS ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include "atom.h" #include "comm.h" #include "error.h" @@ -70,7 +71,7 @@ FixOMP::FixOMP(LAMMPS *lmp, int narg, char **arg) if (narg > 3) { #if defined(_OPENMP) if (strcmp(arg[3],"0") == 0) -#pragma omp parallel default(none) shared(nthreads) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(nthreads) nthreads = omp_get_num_threads(); else nthreads = force->inumeric(FLERR,arg[3]); @@ -134,7 +135,7 @@ FixOMP::FixOMP(LAMMPS *lmp, int narg, char **arg) thr = new ThrData *[nthreads]; _nthr = nthreads; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(lmp) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(lmp) #endif { const int tid = get_tid(); @@ -186,7 +187,7 @@ void FixOMP::init() thr = new ThrData *[nthreads]; _nthr = nthreads; #if defined(_OPENMP) -#pragma omp parallel default(none) +#pragma omp parallel LMP_DEFAULT_NONE #endif { const int tid = get_tid(); @@ -350,7 +351,7 @@ void FixOMP::pre_force(int) double *drho = atom->drho; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(f,torque,erforce,de,drho) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(f,torque,erforce,de,drho) #endif { const int tid = get_tid(); diff --git a/src/USER-OMP/fix_rigid_nh_omp.cpp b/src/USER-OMP/fix_rigid_nh_omp.cpp index da512cb428..63084fcc9e 100644 --- a/src/USER-OMP/fix_rigid_nh_omp.cpp +++ b/src/USER-OMP/fix_rigid_nh_omp.cpp @@ -15,6 +15,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include "fix_rigid_nh_omp.h" #include #include @@ -89,7 +90,7 @@ void FixRigidNHOMP::initial_integrate(int vflag) double akt=0.0, akr=0.0; #if defined(_OPENMP) -#pragma omp parallel for default(none) shared(scale_r,scale_t,scale_v) schedule(static) reduction(+:akt,akr) +#pragma omp parallel for LMP_DEFAULT_NONE LMP_SHARED(scale_r,scale_t,scale_v) schedule(static) reduction(+:akt,akr) #endif for (int ibody = 0; ibody < nbody; ibody++) { double mbody[3],tbody[3],fquat[4]; @@ -250,7 +251,7 @@ void FixRigidNHOMP::compute_forces_and_torques() int i; #if defined(_OPENMP) -#pragma omp parallel for default(none) private(i) reduction(+:s0,s1,s2,s3,s4,s5) +#pragma omp parallel for LMP_DEFAULT_NONE private(i) reduction(+:s0,s1,s2,s3,s4,s5) #endif for (i = 0; i < nlocal; i++) { const int ibody = body[i]; @@ -289,7 +290,7 @@ void FixRigidNHOMP::compute_forces_and_torques() int i; #if defined(_OPENMP) -#pragma omp parallel for default(none) private(i) shared(ib) reduction(+:s0,s1,s2,s3,s4,s5) +#pragma omp parallel for LMP_DEFAULT_NONE private(i) LMP_SHARED(ib) reduction(+:s0,s1,s2,s3,s4,s5) #endif for (i = 0; i < nlocal; i++) { const int ibody = body[i]; @@ -330,7 +331,7 @@ void FixRigidNHOMP::compute_forces_and_torques() memset(&sum[0][0],0,6*nbody*sizeof(double)); #if defined(_OPENMP) -#pragma omp parallel default(none) +#pragma omp parallel LMP_DEFAULT_NONE #endif { #if defined(_OPENMP) @@ -373,7 +374,7 @@ void FixRigidNHOMP::compute_forces_and_torques() MPI_Allreduce(sum[0],all[0],6*nbody,MPI_DOUBLE,MPI_SUM,world); #if defined(_OPENMP) -#pragma omp parallel for default(none) private(ibody) schedule(static) +#pragma omp parallel for LMP_DEFAULT_NONE private(ibody) schedule(static) #endif for (ibody = 0; ibody < nbody; ibody++) { fcm[ibody][0] = all[ibody][0] + langextra[ibody][0]; @@ -388,7 +389,7 @@ void FixRigidNHOMP::compute_forces_and_torques() if (id_gravity) { #if defined(_OPENMP) -#pragma omp parallel for default(none) private(ibody) schedule(static) +#pragma omp parallel for LMP_DEFAULT_NONE private(ibody) schedule(static) #endif for (ibody = 0; ibody < nbody; ibody++) { fcm[ibody][0] += gvec[0]*masstotal[ibody]; @@ -433,7 +434,7 @@ void FixRigidNHOMP::final_integrate() const double dtf2 = dtf * 2.0; #if defined(_OPENMP) -#pragma omp parallel for default(none) shared(scale_t,scale_r) schedule(static) reduction(+:akt,akr) +#pragma omp parallel for LMP_DEFAULT_NONE LMP_SHARED(scale_t,scale_r) schedule(static) reduction(+:akt,akr) #endif for (int ibody = 0; ibody < nbody; ibody++) { double mbody[3],tbody[3],fquat[4]; @@ -554,7 +555,7 @@ void FixRigidNHOMP::remap() if (allremap) domain->x2lamda(nlocal); else { #if defined (_OPENMP) -#pragma omp parallel for default(none) schedule(static) +#pragma omp parallel for LMP_DEFAULT_NONE schedule(static) #endif for (int i = 0; i < nlocal; i++) if (mask[i] & dilate_group_bit) @@ -586,7 +587,7 @@ void FixRigidNHOMP::remap() if (allremap) domain->lamda2x(nlocal); else { #if defined (_OPENMP) -#pragma omp parallel for default(none) schedule(static) +#pragma omp parallel for LMP_DEFAULT_NONE schedule(static) #endif for (int i = 0; i < nlocal; i++) if (mask[i] & dilate_group_bit) @@ -631,7 +632,7 @@ void FixRigidNHOMP::set_xv_thr() int i; #if defined(_OPENMP) -#pragma omp parallel for default(none) private(i) reduction(+:v0,v1,v2,v3,v4,v5) +#pragma omp parallel for LMP_DEFAULT_NONE private(i) reduction(+:v0,v1,v2,v3,v4,v5) #endif for (i = 0; i < nlocal; i++) { const int ibody = body[i]; @@ -832,7 +833,7 @@ void FixRigidNHOMP::set_v_thr() int i; #if defined(_OPENMP) -#pragma omp parallel for default(none) private(i) reduction(+:v0,v1,v2,v3,v4,v5) +#pragma omp parallel for LMP_DEFAULT_NONE private(i) reduction(+:v0,v1,v2,v3,v4,v5) #endif for (i = 0; i < nlocal; i++) { const int ibody = body[i]; diff --git a/src/USER-OMP/fix_rigid_omp.cpp b/src/USER-OMP/fix_rigid_omp.cpp index 770361d557..9f78f6dc26 100644 --- a/src/USER-OMP/fix_rigid_omp.cpp +++ b/src/USER-OMP/fix_rigid_omp.cpp @@ -15,6 +15,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include "fix_rigid_omp.h" #include #include @@ -47,7 +48,7 @@ typedef struct { double x,y,z; } dbl3_t; void FixRigidOMP::initial_integrate(int vflag) { #if defined(_OPENMP) -#pragma omp parallel for default(none) schedule(static) +#pragma omp parallel for LMP_DEFAULT_NONE schedule(static) #endif for (int ibody = 0; ibody < nbody; ibody++) { @@ -120,7 +121,7 @@ void FixRigidOMP::compute_forces_and_torques() double s0=0.0,s1=0.0,s2=0.0,s3=0.0,s4=0.0,s5=0.0; #if defined(_OPENMP) -#pragma omp parallel for default(none) reduction(+:s0,s1,s2,s3,s4,s5) +#pragma omp parallel for LMP_DEFAULT_NONE reduction(+:s0,s1,s2,s3,s4,s5) #endif for (int i = 0; i < nlocal; i++) { const int ibody = body[i]; @@ -158,7 +159,7 @@ void FixRigidOMP::compute_forces_and_torques() double s0=0.0,s1=0.0,s2=0.0,s3=0.0,s4=0.0,s5=0.0; #if defined(_OPENMP) -#pragma omp parallel for default(none) shared(ib) reduction(+:s0,s1,s2,s3,s4,s5) +#pragma omp parallel for LMP_DEFAULT_NONE LMP_SHARED(ib) reduction(+:s0,s1,s2,s3,s4,s5) #endif for (int i = 0; i < nlocal; i++) { const int ibody = body[i]; @@ -199,7 +200,7 @@ void FixRigidOMP::compute_forces_and_torques() memset(&sum[0][0],0,6*nbody*sizeof(double)); #if defined(_OPENMP) -#pragma omp parallel default(none) +#pragma omp parallel LMP_DEFAULT_NONE #endif { #if defined(_OPENMP) @@ -246,7 +247,7 @@ void FixRigidOMP::compute_forces_and_torques() // fflag,tflag = 0 for some dimensions in 2d #if defined(_OPENMP) -#pragma omp parallel for default(none) schedule(static) +#pragma omp parallel for LMP_DEFAULT_NONE schedule(static) #endif for (int ibody = 0; ibody < nbody; ibody++) { fcm[ibody][0] = all[ibody][0] + langextra[ibody][0]; @@ -261,7 +262,7 @@ void FixRigidOMP::compute_forces_and_torques() if (id_gravity) { #if defined(_OPENMP) -#pragma omp parallel for default(none) schedule(static) +#pragma omp parallel for LMP_DEFAULT_NONE schedule(static) #endif for (int ibody = 0; ibody < nbody; ibody++) { fcm[ibody][0] += gvec[0]*masstotal[ibody]; @@ -280,7 +281,7 @@ void FixRigidOMP::final_integrate() // update vcm and angmom #if defined(_OPENMP) -#pragma omp parallel for default(none) schedule(static) +#pragma omp parallel for LMP_DEFAULT_NONE schedule(static) #endif for (int ibody = 0; ibody < nbody; ibody++) { @@ -346,7 +347,7 @@ void FixRigidOMP::set_xv_thr() const int nlocal = atom->nlocal; #if defined(_OPENMP) -#pragma omp parallel for default(none) reduction(+:v0,v1,v2,v3,v4,v5) +#pragma omp parallel for LMP_DEFAULT_NONE reduction(+:v0,v1,v2,v3,v4,v5) #endif for (int i = 0; i < nlocal; i++) { const int ibody = body[i]; @@ -546,7 +547,7 @@ void FixRigidOMP::set_v_thr() const int nlocal = atom->nlocal; #if defined(_OPENMP) -#pragma omp parallel for default(none) reduction(+:v0,v1,v2,v3,v4,v5) +#pragma omp parallel for LMP_DEFAULT_NONE reduction(+:v0,v1,v2,v3,v4,v5) #endif for (int i = 0; i < nlocal; i++) { const int ibody = body[i]; diff --git a/src/USER-OMP/fix_rigid_small_omp.cpp b/src/USER-OMP/fix_rigid_small_omp.cpp index fc6b6fa57a..227b0e1f8a 100644 --- a/src/USER-OMP/fix_rigid_small_omp.cpp +++ b/src/USER-OMP/fix_rigid_small_omp.cpp @@ -15,6 +15,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include "fix_rigid_small_omp.h" #include #include "atom.h" @@ -46,7 +47,7 @@ void FixRigidSmallOMP::initial_integrate(int vflag) { #if defined(_OPENMP) -#pragma omp parallel for default(none) schedule(static) +#pragma omp parallel for LMP_DEFAULT_NONE schedule(static) #endif for (int ibody = 0; ibody < nlocal_body; ibody++) { @@ -117,7 +118,7 @@ void FixRigidSmallOMP::compute_forces_and_torques() const int nthreads=comm->nthreads; #if defined(_OPENMP) -#pragma omp parallel for default(none) schedule(static) +#pragma omp parallel for LMP_DEFAULT_NONE schedule(static) #endif for (int ibody = 0; ibody < nlocal_body+nghost_body; ibody++) { double * _noalias const fcm = body[ibody].fcm; @@ -132,7 +133,7 @@ void FixRigidSmallOMP::compute_forces_and_torques() // and then each thread only processes some bodies. #if defined(_OPENMP) -#pragma omp parallel default(none) +#pragma omp parallel LMP_DEFAULT_NONE #endif { #if defined(_OPENMP) @@ -183,7 +184,7 @@ void FixRigidSmallOMP::compute_forces_and_torques() if (langflag) { #if defined(_OPENMP) -#pragma omp parallel for default(none) schedule(static) +#pragma omp parallel for LMP_DEFAULT_NONE schedule(static) #endif for (int ibody = 0; ibody < nlocal_body; ibody++) { double * _noalias const fcm = body[ibody].fcm; @@ -201,7 +202,7 @@ void FixRigidSmallOMP::compute_forces_and_torques() if (id_gravity) { #if defined(_OPENMP) -#pragma omp parallel for default(none) schedule(static) +#pragma omp parallel for LMP_DEFAULT_NONE schedule(static) #endif for (int ibody = 0; ibody < nbody; ibody++) { double * _noalias const fcm = body[ibody].fcm; @@ -222,7 +223,7 @@ void FixRigidSmallOMP::final_integrate() // update vcm and angmom, recompute omega #if defined(_OPENMP) -#pragma omp parallel for default(none) schedule(static) +#pragma omp parallel for LMP_DEFAULT_NONE schedule(static) #endif for (int ibody = 0; ibody < nlocal_body; ibody++) { Body &b = body[ibody]; @@ -294,7 +295,7 @@ void FixRigidSmallOMP::set_xv_thr() const int nlocal = atom->nlocal; #if defined(_OPENMP) -#pragma omp parallel for default(none) reduction(+:v0,v1,v2,v3,v4,v5) +#pragma omp parallel for LMP_DEFAULT_NONE reduction(+:v0,v1,v2,v3,v4,v5) #endif for (int i = 0; i < nlocal; i++) { const int ibody = atom2body[i]; @@ -489,7 +490,7 @@ void FixRigidSmallOMP::set_v_thr() const int nlocal = atom->nlocal; #if defined(_OPENMP) -#pragma omp parallel for default(none) reduction(+:v0,v1,v2,v3,v4,v5) +#pragma omp parallel for LMP_DEFAULT_NONE reduction(+:v0,v1,v2,v3,v4,v5) #endif for (int i = 0; i < nlocal; i++) { const int ibody = atom2body[i]; diff --git a/src/USER-OMP/improper_class2_omp.cpp b/src/USER-OMP/improper_class2_omp.cpp index 32c7406ada..8927980951 100644 --- a/src/USER-OMP/improper_class2_omp.cpp +++ b/src/USER-OMP/improper_class2_omp.cpp @@ -15,6 +15,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include "improper_class2_omp.h" #include "atom.h" @@ -50,7 +51,7 @@ void ImproperClass2OMP::compute(int eflag, int vflag) const int inum = neighbor->nimproperlist; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/improper_cossq_omp.cpp b/src/USER-OMP/improper_cossq_omp.cpp index 230f13eac7..72d76e8c42 100644 --- a/src/USER-OMP/improper_cossq_omp.cpp +++ b/src/USER-OMP/improper_cossq_omp.cpp @@ -15,6 +15,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include "improper_cossq_omp.h" #include "atom.h" @@ -50,7 +51,7 @@ void ImproperCossqOMP::compute(int eflag, int vflag) const int inum = neighbor->nimproperlist; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/improper_cvff_omp.cpp b/src/USER-OMP/improper_cvff_omp.cpp index f5ff590775..e9ff4bfc73 100644 --- a/src/USER-OMP/improper_cvff_omp.cpp +++ b/src/USER-OMP/improper_cvff_omp.cpp @@ -15,6 +15,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include "improper_cvff_omp.h" #include "atom.h" @@ -50,7 +51,7 @@ void ImproperCvffOMP::compute(int eflag, int vflag) const int inum = neighbor->nimproperlist; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/improper_fourier_omp.cpp b/src/USER-OMP/improper_fourier_omp.cpp index 4e83c025d0..0671bdc375 100644 --- a/src/USER-OMP/improper_fourier_omp.cpp +++ b/src/USER-OMP/improper_fourier_omp.cpp @@ -15,6 +15,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include "improper_fourier_omp.h" #include "atom.h" @@ -50,7 +51,7 @@ void ImproperFourierOMP::compute(int eflag, int vflag) const int inum = neighbor->nimproperlist; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/improper_harmonic_omp.cpp b/src/USER-OMP/improper_harmonic_omp.cpp index f2f19557d9..8bef42bf23 100644 --- a/src/USER-OMP/improper_harmonic_omp.cpp +++ b/src/USER-OMP/improper_harmonic_omp.cpp @@ -15,6 +15,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include "improper_harmonic_omp.h" #include "atom.h" @@ -50,7 +51,7 @@ void ImproperHarmonicOMP::compute(int eflag, int vflag) const int inum = neighbor->nimproperlist; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/improper_ring_omp.cpp b/src/USER-OMP/improper_ring_omp.cpp index 1d0cc6cc46..4ba67aab70 100644 --- a/src/USER-OMP/improper_ring_omp.cpp +++ b/src/USER-OMP/improper_ring_omp.cpp @@ -15,6 +15,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include "improper_ring_omp.h" #include #include "atom.h" @@ -50,7 +51,7 @@ void ImproperRingOMP::compute(int eflag, int vflag) const int inum = neighbor->nimproperlist; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/improper_umbrella_omp.cpp b/src/USER-OMP/improper_umbrella_omp.cpp index 4cea8a4b63..bf466afb19 100644 --- a/src/USER-OMP/improper_umbrella_omp.cpp +++ b/src/USER-OMP/improper_umbrella_omp.cpp @@ -15,6 +15,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include "improper_umbrella_omp.h" #include "atom.h" @@ -50,7 +51,7 @@ void ImproperUmbrellaOMP::compute(int eflag, int vflag) const int inum = neighbor->nimproperlist; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/msm_cg_omp.cpp b/src/USER-OMP/msm_cg_omp.cpp index 7ca01dbd6a..16db4857d6 100644 --- a/src/USER-OMP/msm_cg_omp.cpp +++ b/src/USER-OMP/msm_cg_omp.cpp @@ -16,6 +16,7 @@ Original MSM class by: Paul Crozier, Stan Moore, Stephen Bond, (all SNL) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include "msm_cg_omp.h" #include #include @@ -310,7 +311,7 @@ void MSMCGOMP::compute(int eflag, int vflag) } #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { #if defined(_OPENMP) diff --git a/src/USER-OMP/msm_omp.cpp b/src/USER-OMP/msm_omp.cpp index 81f84e8f6f..2689226725 100644 --- a/src/USER-OMP/msm_omp.cpp +++ b/src/USER-OMP/msm_omp.cpp @@ -15,6 +15,7 @@ Contributing authors: Axel Kohlmeyer (Temple U), Stan Moore (SNL) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include "msm_omp.h" #include #include "comm.h" @@ -52,7 +53,7 @@ void MSMOMP::compute(int eflag, int vflag) MSM::compute(eflag,vflag); #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { #if defined(_OPENMP) @@ -158,7 +159,7 @@ void MSMOMP::direct_eval(const int nn) const int n=nn; #if defined(_OPENMP) -#pragma omp parallel default(none) reduction(+:v0,v1,v2,v3,v4,v5,emsm) +#pragma omp parallel LMP_DEFAULT_NONE reduction(+:v0,v1,v2,v3,v4,v5,emsm) #endif { double esum,v0sum,v1sum,v2sum,v3sum,v4sum,v5sum; diff --git a/src/USER-OMP/npair_full_bin_atomonly_omp.cpp b/src/USER-OMP/npair_full_bin_atomonly_omp.cpp index 3bda2e4c5a..226b2dcf6d 100644 --- a/src/USER-OMP/npair_full_bin_atomonly_omp.cpp +++ b/src/USER-OMP/npair_full_bin_atomonly_omp.cpp @@ -11,6 +11,7 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include "npair_full_bin_atomonly_omp.h" #include "npair_omp.h" #include "neigh_list.h" @@ -36,7 +37,7 @@ void NPairFullBinAtomonlyOmp::build(NeighList *list) NPAIR_OMP_INIT; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(list) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(list) #endif NPAIR_OMP_SETUP(nlocal); diff --git a/src/USER-OMP/npair_full_bin_ghost_omp.cpp b/src/USER-OMP/npair_full_bin_ghost_omp.cpp index b0b0070df5..e9297538d9 100644 --- a/src/USER-OMP/npair_full_bin_ghost_omp.cpp +++ b/src/USER-OMP/npair_full_bin_ghost_omp.cpp @@ -11,6 +11,7 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include "npair_full_bin_ghost_omp.h" #include "npair_omp.h" #include "neigh_list.h" @@ -42,7 +43,7 @@ void NPairFullBinGhostOmp::build(NeighList *list) NPAIR_OMP_INIT; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(list) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(list) #endif NPAIR_OMP_SETUP(nall); diff --git a/src/USER-OMP/npair_full_bin_omp.cpp b/src/USER-OMP/npair_full_bin_omp.cpp index d3e30b4932..35835cae1d 100644 --- a/src/USER-OMP/npair_full_bin_omp.cpp +++ b/src/USER-OMP/npair_full_bin_omp.cpp @@ -11,6 +11,7 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include "npair_full_bin_omp.h" #include "npair_omp.h" #include "neigh_list.h" @@ -40,7 +41,7 @@ void NPairFullBinOmp::build(NeighList *list) NPAIR_OMP_INIT; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(list) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(list) #endif NPAIR_OMP_SETUP(nlocal); diff --git a/src/USER-OMP/npair_full_multi_omp.cpp b/src/USER-OMP/npair_full_multi_omp.cpp index 707db2edcf..b4b0ea3033 100644 --- a/src/USER-OMP/npair_full_multi_omp.cpp +++ b/src/USER-OMP/npair_full_multi_omp.cpp @@ -11,6 +11,7 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include "npair_full_multi_omp.h" #include "npair_omp.h" #include "neigh_list.h" @@ -41,7 +42,7 @@ void NPairFullMultiOmp::build(NeighList *list) NPAIR_OMP_INIT; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(list) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(list) #endif NPAIR_OMP_SETUP(nlocal); diff --git a/src/USER-OMP/npair_full_nsq_ghost_omp.cpp b/src/USER-OMP/npair_full_nsq_ghost_omp.cpp index 527df58fd6..8b940f3724 100644 --- a/src/USER-OMP/npair_full_nsq_ghost_omp.cpp +++ b/src/USER-OMP/npair_full_nsq_ghost_omp.cpp @@ -11,6 +11,7 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include "npair_full_nsq_ghost_omp.h" #include "npair_omp.h" #include "neigh_list.h" @@ -42,7 +43,7 @@ void NPairFullNsqGhostOmp::build(NeighList *list) NPAIR_OMP_INIT; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(list) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(list) #endif NPAIR_OMP_SETUP(nall); diff --git a/src/USER-OMP/npair_full_nsq_omp.cpp b/src/USER-OMP/npair_full_nsq_omp.cpp index 2719f5dc2c..95c5caa148 100644 --- a/src/USER-OMP/npair_full_nsq_omp.cpp +++ b/src/USER-OMP/npair_full_nsq_omp.cpp @@ -11,6 +11,7 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include "npair_full_nsq_omp.h" #include "npair_omp.h" #include "neigh_list.h" @@ -42,7 +43,7 @@ void NPairFullNsqOmp::build(NeighList *list) NPAIR_OMP_INIT; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(list) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(list) #endif NPAIR_OMP_SETUP(nlocal); diff --git a/src/USER-OMP/npair_half_bin_atomonly_newton_omp.cpp b/src/USER-OMP/npair_half_bin_atomonly_newton_omp.cpp index a69779d96d..230d10a267 100644 --- a/src/USER-OMP/npair_half_bin_atomonly_newton_omp.cpp +++ b/src/USER-OMP/npair_half_bin_atomonly_newton_omp.cpp @@ -11,6 +11,7 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include "npair_half_bin_atomonly_newton_omp.h" #include "npair_omp.h" #include "neigh_list.h" @@ -37,7 +38,7 @@ void NPairHalfBinAtomonlyNewtonOmp::build(NeighList *list) NPAIR_OMP_INIT; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(list) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(list) #endif NPAIR_OMP_SETUP(nlocal); diff --git a/src/USER-OMP/npair_half_bin_newtoff_ghost_omp.cpp b/src/USER-OMP/npair_half_bin_newtoff_ghost_omp.cpp index 5f8ffdab29..33fa4ed685 100644 --- a/src/USER-OMP/npair_half_bin_newtoff_ghost_omp.cpp +++ b/src/USER-OMP/npair_half_bin_newtoff_ghost_omp.cpp @@ -11,6 +11,7 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include "npair_half_bin_newtoff_ghost_omp.h" #include "npair_omp.h" #include "neigh_list.h" @@ -46,7 +47,7 @@ void NPairHalfBinNewtoffGhostOmp::build(NeighList *list) NPAIR_OMP_INIT; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(list) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(list) #endif NPAIR_OMP_SETUP(nall); diff --git a/src/USER-OMP/npair_half_bin_newtoff_omp.cpp b/src/USER-OMP/npair_half_bin_newtoff_omp.cpp index 35807645cf..8e756d5072 100644 --- a/src/USER-OMP/npair_half_bin_newtoff_omp.cpp +++ b/src/USER-OMP/npair_half_bin_newtoff_omp.cpp @@ -11,6 +11,7 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include "npair_half_bin_newtoff_omp.h" #include "npair_omp.h" #include "neigh_list.h" @@ -42,7 +43,7 @@ void NPairHalfBinNewtoffOmp::build(NeighList *list) NPAIR_OMP_INIT; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(list) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(list) #endif NPAIR_OMP_SETUP(nlocal); diff --git a/src/USER-OMP/npair_half_bin_newton_omp.cpp b/src/USER-OMP/npair_half_bin_newton_omp.cpp index 2700d6863b..e27a58de46 100644 --- a/src/USER-OMP/npair_half_bin_newton_omp.cpp +++ b/src/USER-OMP/npair_half_bin_newton_omp.cpp @@ -11,6 +11,7 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include "npair_half_bin_newton_omp.h" #include "npair_omp.h" #include "neigh_list.h" @@ -41,7 +42,7 @@ void NPairHalfBinNewtonOmp::build(NeighList *list) NPAIR_OMP_INIT; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(list) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(list) #endif NPAIR_OMP_SETUP(nlocal); diff --git a/src/USER-OMP/npair_half_bin_newton_tri_omp.cpp b/src/USER-OMP/npair_half_bin_newton_tri_omp.cpp index d94845898c..f88df4aed4 100644 --- a/src/USER-OMP/npair_half_bin_newton_tri_omp.cpp +++ b/src/USER-OMP/npair_half_bin_newton_tri_omp.cpp @@ -11,6 +11,7 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include "npair_half_bin_newton_tri_omp.h" #include "npair_omp.h" #include "neigh_list.h" @@ -41,7 +42,7 @@ void NPairHalfBinNewtonTriOmp::build(NeighList *list) NPAIR_OMP_INIT; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(list) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(list) #endif NPAIR_OMP_SETUP(nlocal); diff --git a/src/USER-OMP/npair_half_multi_newtoff_omp.cpp b/src/USER-OMP/npair_half_multi_newtoff_omp.cpp index c06737dc1c..586809c174 100644 --- a/src/USER-OMP/npair_half_multi_newtoff_omp.cpp +++ b/src/USER-OMP/npair_half_multi_newtoff_omp.cpp @@ -11,6 +11,7 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include "npair_half_multi_newtoff_omp.h" #include "npair_omp.h" #include "neigh_list.h" @@ -43,7 +44,7 @@ void NPairHalfMultiNewtoffOmp::build(NeighList *list) NPAIR_OMP_INIT; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(list) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(list) #endif NPAIR_OMP_SETUP(nlocal); diff --git a/src/USER-OMP/npair_half_multi_newton_omp.cpp b/src/USER-OMP/npair_half_multi_newton_omp.cpp index 50df756be4..9b8fc78f09 100644 --- a/src/USER-OMP/npair_half_multi_newton_omp.cpp +++ b/src/USER-OMP/npair_half_multi_newton_omp.cpp @@ -11,6 +11,7 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include "npair_half_multi_newton_omp.h" #include "npair_omp.h" #include "neigh_list.h" @@ -42,7 +43,7 @@ void NPairHalfMultiNewtonOmp::build(NeighList *list) NPAIR_OMP_INIT; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(list) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(list) #endif NPAIR_OMP_SETUP(nlocal); diff --git a/src/USER-OMP/npair_half_multi_newton_tri_omp.cpp b/src/USER-OMP/npair_half_multi_newton_tri_omp.cpp index 8b78b311dd..fec687d075 100644 --- a/src/USER-OMP/npair_half_multi_newton_tri_omp.cpp +++ b/src/USER-OMP/npair_half_multi_newton_tri_omp.cpp @@ -11,6 +11,7 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include "npair_half_multi_newton_tri_omp.h" #include "npair_omp.h" #include "neigh_list.h" @@ -43,7 +44,7 @@ void NPairHalfMultiNewtonTriOmp::build(NeighList *list) NPAIR_OMP_INIT; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(list) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(list) #endif NPAIR_OMP_SETUP(nlocal); diff --git a/src/USER-OMP/npair_half_nsq_newtoff_ghost_omp.cpp b/src/USER-OMP/npair_half_nsq_newtoff_ghost_omp.cpp index f0eb211425..316c63d541 100644 --- a/src/USER-OMP/npair_half_nsq_newtoff_ghost_omp.cpp +++ b/src/USER-OMP/npair_half_nsq_newtoff_ghost_omp.cpp @@ -11,6 +11,7 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include "npair_half_nsq_newtoff_ghost_omp.h" #include "npair_omp.h" #include "neigh_list.h" @@ -47,7 +48,7 @@ void NPairHalfNsqNewtoffGhostOmp::build(NeighList *list) NPAIR_OMP_INIT; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(list) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(list) #endif NPAIR_OMP_SETUP(nall); diff --git a/src/USER-OMP/npair_half_nsq_newtoff_omp.cpp b/src/USER-OMP/npair_half_nsq_newtoff_omp.cpp index 55b9f9e512..c937b5bc68 100644 --- a/src/USER-OMP/npair_half_nsq_newtoff_omp.cpp +++ b/src/USER-OMP/npair_half_nsq_newtoff_omp.cpp @@ -11,6 +11,7 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include "npair_half_nsq_newtoff_omp.h" #include "npair_omp.h" #include "neigh_list.h" @@ -44,7 +45,7 @@ void NPairHalfNsqNewtoffOmp::build(NeighList *list) NPAIR_OMP_INIT; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(list) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(list) #endif NPAIR_OMP_SETUP(nlocal); diff --git a/src/USER-OMP/npair_half_nsq_newton_omp.cpp b/src/USER-OMP/npair_half_nsq_newton_omp.cpp index 223da622e8..6baab97aa0 100644 --- a/src/USER-OMP/npair_half_nsq_newton_omp.cpp +++ b/src/USER-OMP/npair_half_nsq_newton_omp.cpp @@ -11,6 +11,7 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include "npair_half_nsq_newton_omp.h" #include "npair_omp.h" #include "neigh_list.h" @@ -43,7 +44,7 @@ void NPairHalfNsqNewtonOmp::build(NeighList *list) NPAIR_OMP_INIT; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(list) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(list) #endif NPAIR_OMP_SETUP(nlocal); diff --git a/src/USER-OMP/npair_half_respa_bin_newtoff_omp.cpp b/src/USER-OMP/npair_half_respa_bin_newtoff_omp.cpp index 9bb4d277fe..c8dc37f978 100644 --- a/src/USER-OMP/npair_half_respa_bin_newtoff_omp.cpp +++ b/src/USER-OMP/npair_half_respa_bin_newtoff_omp.cpp @@ -11,6 +11,7 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include "npair_half_respa_bin_newtoff_omp.h" #include "npair_omp.h" #include "neigh_list.h" @@ -47,7 +48,7 @@ void NPairHalfRespaBinNewtoffOmp::build(NeighList *list) const int respamiddle = list->respamiddle; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(list) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(list) #endif NPAIR_OMP_SETUP(nlocal); diff --git a/src/USER-OMP/npair_half_respa_bin_newton_omp.cpp b/src/USER-OMP/npair_half_respa_bin_newton_omp.cpp index 9ed0ae482d..98732a62ea 100644 --- a/src/USER-OMP/npair_half_respa_bin_newton_omp.cpp +++ b/src/USER-OMP/npair_half_respa_bin_newton_omp.cpp @@ -11,6 +11,7 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include "npair_half_respa_bin_newton_omp.h" #include "npair_omp.h" #include "neigh_list.h" @@ -46,7 +47,7 @@ void NPairHalfRespaBinNewtonOmp::build(NeighList *list) const int respamiddle = list->respamiddle; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(list) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(list) #endif NPAIR_OMP_SETUP(nlocal); diff --git a/src/USER-OMP/npair_half_respa_bin_newton_tri_omp.cpp b/src/USER-OMP/npair_half_respa_bin_newton_tri_omp.cpp index cd03684940..65315a2905 100644 --- a/src/USER-OMP/npair_half_respa_bin_newton_tri_omp.cpp +++ b/src/USER-OMP/npair_half_respa_bin_newton_tri_omp.cpp @@ -11,6 +11,7 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include "npair_half_respa_bin_newton_tri_omp.h" #include "npair_omp.h" #include "neigh_list.h" @@ -46,7 +47,7 @@ void NPairHalfRespaBinNewtonTriOmp::build(NeighList *list) const int respamiddle = list->respamiddle; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(list) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(list) #endif NPAIR_OMP_SETUP(nlocal); diff --git a/src/USER-OMP/npair_half_respa_nsq_newtoff_omp.cpp b/src/USER-OMP/npair_half_respa_nsq_newtoff_omp.cpp index b1e7467ec7..45d81069fc 100644 --- a/src/USER-OMP/npair_half_respa_nsq_newtoff_omp.cpp +++ b/src/USER-OMP/npair_half_respa_nsq_newtoff_omp.cpp @@ -11,6 +11,7 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include "npair_half_respa_nsq_newtoff_omp.h" #include "npair_omp.h" #include "neigh_list.h" @@ -48,7 +49,7 @@ void NPairHalfRespaNsqNewtoffOmp::build(NeighList *list) const int respamiddle = list->respamiddle; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(list) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(list) #endif NPAIR_OMP_SETUP(nlocal); diff --git a/src/USER-OMP/npair_half_respa_nsq_newton_omp.cpp b/src/USER-OMP/npair_half_respa_nsq_newton_omp.cpp index c22965895d..1237ce7858 100644 --- a/src/USER-OMP/npair_half_respa_nsq_newton_omp.cpp +++ b/src/USER-OMP/npair_half_respa_nsq_newton_omp.cpp @@ -11,6 +11,7 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include "npair_half_respa_nsq_newton_omp.h" #include "npair_omp.h" #include "neigh_list.h" @@ -49,7 +50,7 @@ void NPairHalfRespaNsqNewtonOmp::build(NeighList *list) const int respamiddle = list->respamiddle; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(list) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(list) #endif NPAIR_OMP_SETUP(nlocal); diff --git a/src/USER-OMP/npair_half_size_bin_newtoff_omp.cpp b/src/USER-OMP/npair_half_size_bin_newtoff_omp.cpp index 1b437482c4..c979c1384d 100644 --- a/src/USER-OMP/npair_half_size_bin_newtoff_omp.cpp +++ b/src/USER-OMP/npair_half_size_bin_newtoff_omp.cpp @@ -11,6 +11,7 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include "npair_half_size_bin_newtoff_omp.h" #include "npair_omp.h" #include "neigh_list.h" @@ -43,7 +44,7 @@ void NPairHalfSizeBinNewtoffOmp::build(NeighList *list) NPAIR_OMP_INIT; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(list) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(list) #endif NPAIR_OMP_SETUP(nlocal); diff --git a/src/USER-OMP/npair_half_size_bin_newton_omp.cpp b/src/USER-OMP/npair_half_size_bin_newton_omp.cpp index 8e0581d4ce..c83cf77e50 100644 --- a/src/USER-OMP/npair_half_size_bin_newton_omp.cpp +++ b/src/USER-OMP/npair_half_size_bin_newton_omp.cpp @@ -11,6 +11,7 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include "npair_half_size_bin_newton_omp.h" #include "npair_omp.h" #include "neigh_list.h" @@ -42,7 +43,7 @@ void NPairHalfSizeBinNewtonOmp::build(NeighList *list) NPAIR_OMP_INIT; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(list) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(list) #endif NPAIR_OMP_SETUP(nlocal); diff --git a/src/USER-OMP/npair_half_size_bin_newton_tri_omp.cpp b/src/USER-OMP/npair_half_size_bin_newton_tri_omp.cpp index 38a2c0d61f..a615b11d93 100644 --- a/src/USER-OMP/npair_half_size_bin_newton_tri_omp.cpp +++ b/src/USER-OMP/npair_half_size_bin_newton_tri_omp.cpp @@ -11,6 +11,7 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include "npair_half_size_bin_newton_tri_omp.h" #include "npair_omp.h" #include "neigh_list.h" @@ -41,7 +42,7 @@ void NPairHalfSizeBinNewtonTriOmp::build(NeighList *list) NPAIR_OMP_INIT; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(list) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(list) #endif NPAIR_OMP_SETUP(nlocal); diff --git a/src/USER-OMP/npair_half_size_nsq_newtoff_omp.cpp b/src/USER-OMP/npair_half_size_nsq_newtoff_omp.cpp index d1505e1b2e..f42cc3e9bf 100644 --- a/src/USER-OMP/npair_half_size_nsq_newtoff_omp.cpp +++ b/src/USER-OMP/npair_half_size_nsq_newtoff_omp.cpp @@ -11,6 +11,7 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include "npair_half_size_nsq_newtoff_omp.h" #include "npair_omp.h" #include "neigh_list.h" @@ -45,7 +46,7 @@ void NPairHalfSizeNsqNewtoffOmp::build(NeighList *list) NPAIR_OMP_INIT; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(list) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(list) #endif NPAIR_OMP_SETUP(nlocal); diff --git a/src/USER-OMP/npair_half_size_nsq_newton_omp.cpp b/src/USER-OMP/npair_half_size_nsq_newton_omp.cpp index 9027b0728d..10d7d26b3d 100644 --- a/src/USER-OMP/npair_half_size_nsq_newton_omp.cpp +++ b/src/USER-OMP/npair_half_size_nsq_newton_omp.cpp @@ -11,6 +11,7 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include "npair_half_size_nsq_newton_omp.h" #include "npair_omp.h" #include "neigh_list.h" @@ -46,7 +47,7 @@ void NPairHalfSizeNsqNewtonOmp::build(NeighList *list) NPAIR_OMP_INIT; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(list) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(list) #endif NPAIR_OMP_SETUP(nlocal); diff --git a/src/USER-OMP/npair_halffull_newtoff_omp.cpp b/src/USER-OMP/npair_halffull_newtoff_omp.cpp index 7d2fe4f109..7ad0157076 100644 --- a/src/USER-OMP/npair_halffull_newtoff_omp.cpp +++ b/src/USER-OMP/npair_halffull_newtoff_omp.cpp @@ -11,6 +11,7 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include "npair_halffull_newtoff_omp.h" #include "npair_omp.h" #include "neigh_list.h" @@ -38,7 +39,7 @@ void NPairHalffullNewtoffOmp::build(NeighList *list) NPAIR_OMP_INIT; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(list) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(list) #endif NPAIR_OMP_SETUP(inum_full); diff --git a/src/USER-OMP/npair_halffull_newton_omp.cpp b/src/USER-OMP/npair_halffull_newton_omp.cpp index 3fcc8c2e98..9e248ee609 100644 --- a/src/USER-OMP/npair_halffull_newton_omp.cpp +++ b/src/USER-OMP/npair_halffull_newton_omp.cpp @@ -11,6 +11,7 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include "npair_halffull_newton_omp.h" #include "npair_omp.h" #include "neigh_list.h" @@ -38,7 +39,7 @@ void NPairHalffullNewtonOmp::build(NeighList *list) NPAIR_OMP_INIT; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(list) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(list) #endif NPAIR_OMP_SETUP(inum_full); diff --git a/src/USER-OMP/pair_adp_omp.cpp b/src/USER-OMP/pair_adp_omp.cpp index 0a48de453e..63a539c93c 100644 --- a/src/USER-OMP/pair_adp_omp.cpp +++ b/src/USER-OMP/pair_adp_omp.cpp @@ -12,6 +12,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include @@ -62,7 +63,7 @@ void PairADPOMP::compute(int eflag, int vflag) } #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/pair_agni_omp.cpp b/src/USER-OMP/pair_agni_omp.cpp index 1580256e35..b61bf52e4e 100644 --- a/src/USER-OMP/pair_agni_omp.cpp +++ b/src/USER-OMP/pair_agni_omp.cpp @@ -12,6 +12,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include #include // requires C++-11 @@ -49,7 +50,7 @@ void PairAGNIOMP::compute(int eflag, int vflag) const int inum = list->inum; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/pair_airebo_omp.cpp b/src/USER-OMP/pair_airebo_omp.cpp index aedf5056a6..25d6c35174 100644 --- a/src/USER-OMP/pair_airebo_omp.cpp +++ b/src/USER-OMP/pair_airebo_omp.cpp @@ -12,6 +12,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include "pair_airebo_omp.h" #include "atom.h" @@ -58,7 +59,7 @@ void PairAIREBOOMP::compute(int eflag, int vflag) const int inum = list->inum; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) reduction(+:pv0,pv1,pv2) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) reduction(+:pv0,pv1,pv2) #endif { int ifrom, ito, tid; @@ -104,7 +105,7 @@ void PairAIREBOOMP::REBO_neigh_thr() } #if defined(_OPENMP) -#pragma omp parallel default(none) +#pragma omp parallel LMP_DEFAULT_NONE #endif { int i,j,ii,jj,n,jnum,itype,jtype; diff --git a/src/USER-OMP/pair_beck_omp.cpp b/src/USER-OMP/pair_beck_omp.cpp index 72e41f074c..48e6f9b0fe 100644 --- a/src/USER-OMP/pair_beck_omp.cpp +++ b/src/USER-OMP/pair_beck_omp.cpp @@ -12,6 +12,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include "pair_beck_omp.h" #include #include "atom.h" @@ -45,7 +46,7 @@ void PairBeckOMP::compute(int eflag, int vflag) const int inum = list->inum; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/pair_born_coul_long_omp.cpp b/src/USER-OMP/pair_born_coul_long_omp.cpp index f7e3fced46..7f92ab6734 100644 --- a/src/USER-OMP/pair_born_coul_long_omp.cpp +++ b/src/USER-OMP/pair_born_coul_long_omp.cpp @@ -12,6 +12,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include "pair_born_coul_long_omp.h" #include "atom.h" @@ -51,7 +52,7 @@ void PairBornCoulLongOMP::compute(int eflag, int vflag) const int inum = list->inum; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/pair_born_coul_msm_omp.cpp b/src/USER-OMP/pair_born_coul_msm_omp.cpp index b057cbc706..eec1765859 100644 --- a/src/USER-OMP/pair_born_coul_msm_omp.cpp +++ b/src/USER-OMP/pair_born_coul_msm_omp.cpp @@ -12,6 +12,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include "pair_born_coul_msm_omp.h" #include "atom.h" @@ -48,7 +49,7 @@ void PairBornCoulMSMOMP::compute(int eflag, int vflag) const int inum = list->inum; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/pair_born_coul_wolf_omp.cpp b/src/USER-OMP/pair_born_coul_wolf_omp.cpp index bac38ae43a..ffa069ec4e 100644 --- a/src/USER-OMP/pair_born_coul_wolf_omp.cpp +++ b/src/USER-OMP/pair_born_coul_wolf_omp.cpp @@ -12,6 +12,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include "pair_born_coul_wolf_omp.h" #include #include "atom.h" @@ -45,7 +46,7 @@ void PairBornCoulWolfOMP::compute(int eflag, int vflag) const int inum = list->inum; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/pair_born_omp.cpp b/src/USER-OMP/pair_born_omp.cpp index 6cacd5625b..aaac28d07c 100644 --- a/src/USER-OMP/pair_born_omp.cpp +++ b/src/USER-OMP/pair_born_omp.cpp @@ -12,6 +12,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include "pair_born_omp.h" #include #include "atom.h" @@ -43,7 +44,7 @@ void PairBornOMP::compute(int eflag, int vflag) const int inum = list->inum; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/pair_brownian_omp.cpp b/src/USER-OMP/pair_brownian_omp.cpp index 907a447332..ca28fa14bb 100644 --- a/src/USER-OMP/pair_brownian_omp.cpp +++ b/src/USER-OMP/pair_brownian_omp.cpp @@ -12,6 +12,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include "pair_brownian_omp.h" #include #include "atom.h" @@ -135,7 +136,7 @@ void PairBrownianOMP::compute(int eflag, int vflag) } #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/pair_brownian_poly_omp.cpp b/src/USER-OMP/pair_brownian_poly_omp.cpp index f6f5f269a5..939bc223eb 100644 --- a/src/USER-OMP/pair_brownian_poly_omp.cpp +++ b/src/USER-OMP/pair_brownian_poly_omp.cpp @@ -12,6 +12,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include "pair_brownian_poly_omp.h" #include #include "atom.h" @@ -135,7 +136,7 @@ void PairBrownianPolyOMP::compute(int eflag, int vflag) } #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/pair_buck_coul_cut_omp.cpp b/src/USER-OMP/pair_buck_coul_cut_omp.cpp index c9ccb12447..2cff0d749d 100644 --- a/src/USER-OMP/pair_buck_coul_cut_omp.cpp +++ b/src/USER-OMP/pair_buck_coul_cut_omp.cpp @@ -12,6 +12,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include "pair_buck_coul_cut_omp.h" #include "atom.h" @@ -43,7 +44,7 @@ void PairBuckCoulCutOMP::compute(int eflag, int vflag) const int inum = list->inum; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/pair_buck_coul_long_omp.cpp b/src/USER-OMP/pair_buck_coul_long_omp.cpp index 0929157895..759a8b2118 100644 --- a/src/USER-OMP/pair_buck_coul_long_omp.cpp +++ b/src/USER-OMP/pair_buck_coul_long_omp.cpp @@ -12,6 +12,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include "pair_buck_coul_long_omp.h" #include "atom.h" @@ -51,7 +52,7 @@ void PairBuckCoulLongOMP::compute(int eflag, int vflag) const int inum = list->inum; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/pair_buck_coul_msm_omp.cpp b/src/USER-OMP/pair_buck_coul_msm_omp.cpp index a4d322890a..b26243b19a 100644 --- a/src/USER-OMP/pair_buck_coul_msm_omp.cpp +++ b/src/USER-OMP/pair_buck_coul_msm_omp.cpp @@ -12,6 +12,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include "pair_buck_coul_msm_omp.h" #include "atom.h" @@ -48,7 +49,7 @@ void PairBuckCoulMSMOMP::compute(int eflag, int vflag) const int inum = list->inum; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/pair_buck_long_coul_long_omp.cpp b/src/USER-OMP/pair_buck_long_coul_long_omp.cpp index d30e8949b3..a2e34b9a1b 100644 --- a/src/USER-OMP/pair_buck_long_coul_long_omp.cpp +++ b/src/USER-OMP/pair_buck_long_coul_long_omp.cpp @@ -12,6 +12,7 @@ ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include "math_vector.h" #include "pair_buck_long_coul_long_omp.h" @@ -56,7 +57,7 @@ void PairBuckLongCoulLongOMP::compute(int eflag, int vflag) const int inum = list->inum; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; @@ -320,7 +321,7 @@ void PairBuckLongCoulLongOMP::compute_inner() const int nthreads = comm->nthreads; const int inum = list->inum_inner; #if defined(_OPENMP) -#pragma omp parallel default(none) +#pragma omp parallel LMP_DEFAULT_NONE #endif { int ifrom, ito, tid; @@ -345,7 +346,7 @@ void PairBuckLongCoulLongOMP::compute_middle() const int inum = list->inum_middle; #if defined(_OPENMP) -#pragma omp parallel default(none) +#pragma omp parallel LMP_DEFAULT_NONE #endif { int ifrom, ito, tid; @@ -375,7 +376,7 @@ void PairBuckLongCoulLongOMP::compute_outer(int eflag, int vflag) const int inum = list->inum; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/pair_buck_omp.cpp b/src/USER-OMP/pair_buck_omp.cpp index 563133e1cd..fc85d79c81 100644 --- a/src/USER-OMP/pair_buck_omp.cpp +++ b/src/USER-OMP/pair_buck_omp.cpp @@ -12,6 +12,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include "pair_buck_omp.h" #include #include "atom.h" @@ -43,7 +44,7 @@ void PairBuckOMP::compute(int eflag, int vflag) const int inum = list->inum; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/pair_colloid_omp.cpp b/src/USER-OMP/pair_colloid_omp.cpp index 0fc4b1bdf2..cce588f516 100644 --- a/src/USER-OMP/pair_colloid_omp.cpp +++ b/src/USER-OMP/pair_colloid_omp.cpp @@ -12,6 +12,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include "pair_colloid_omp.h" #include "atom.h" @@ -46,7 +47,7 @@ void PairColloidOMP::compute(int eflag, int vflag) const int inum = list->inum; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/pair_comb_omp.cpp b/src/USER-OMP/pair_comb_omp.cpp index 4b5f0ea6c7..8912cbc243 100644 --- a/src/USER-OMP/pair_comb_omp.cpp +++ b/src/USER-OMP/pair_comb_omp.cpp @@ -12,6 +12,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include "pair_comb_omp.h" #include "atom.h" @@ -52,7 +53,7 @@ void PairCombOMP::compute(int eflag, int vflag) Short_neigh_thr(); #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; @@ -411,7 +412,7 @@ double PairCombOMP::yasu_char(double *qf_fix, int &igroup) // loop over full neighbor list of my atoms #if defined(_OPENMP) -#pragma omp parallel for private(ii) default(none) shared(potal,fac11e) +#pragma omp parallel for private(ii) LMP_DEFAULT_NONE LMP_SHARED(potal,fac11e) #endif for (ii = 0; ii < inum; ii ++) { double fqi,fqj,fqij,fqji,fqjj,delr1[3]; @@ -564,7 +565,7 @@ void PairCombOMP::Short_neigh_thr() const int nthreads = comm->nthreads; #if defined(_OPENMP) -#pragma omp parallel default(none) +#pragma omp parallel LMP_DEFAULT_NONE #endif { int nj,*neighptrj; diff --git a/src/USER-OMP/pair_coul_cut_omp.cpp b/src/USER-OMP/pair_coul_cut_omp.cpp index ce858666cb..69eb9ac0f3 100644 --- a/src/USER-OMP/pair_coul_cut_omp.cpp +++ b/src/USER-OMP/pair_coul_cut_omp.cpp @@ -12,6 +12,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include "pair_coul_cut_omp.h" #include #include "atom.h" @@ -43,7 +44,7 @@ void PairCoulCutOMP::compute(int eflag, int vflag) const int inum = list->inum; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/pair_coul_cut_soft_omp.cpp b/src/USER-OMP/pair_coul_cut_soft_omp.cpp index 7b6ed22f0c..89222903ec 100644 --- a/src/USER-OMP/pair_coul_cut_soft_omp.cpp +++ b/src/USER-OMP/pair_coul_cut_soft_omp.cpp @@ -12,6 +12,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include "pair_coul_cut_soft_omp.h" #include "atom.h" @@ -43,7 +44,7 @@ void PairCoulCutSoftOMP::compute(int eflag, int vflag) const int inum = list->inum; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/pair_coul_debye_omp.cpp b/src/USER-OMP/pair_coul_debye_omp.cpp index 270770ee5d..c22f7340c4 100644 --- a/src/USER-OMP/pair_coul_debye_omp.cpp +++ b/src/USER-OMP/pair_coul_debye_omp.cpp @@ -12,6 +12,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include "pair_coul_debye_omp.h" #include #include "atom.h" @@ -43,7 +44,7 @@ void PairCoulDebyeOMP::compute(int eflag, int vflag) const int inum = list->inum; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/pair_coul_diel_omp.cpp b/src/USER-OMP/pair_coul_diel_omp.cpp index 67e09690de..656cdc9421 100644 --- a/src/USER-OMP/pair_coul_diel_omp.cpp +++ b/src/USER-OMP/pair_coul_diel_omp.cpp @@ -12,6 +12,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include "pair_coul_diel_omp.h" #include "atom.h" @@ -43,7 +44,7 @@ void PairCoulDielOMP::compute(int eflag, int vflag) const int inum = list->inum; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/pair_coul_dsf_omp.cpp b/src/USER-OMP/pair_coul_dsf_omp.cpp index 40e285e7c8..ddcc8dbeb0 100644 --- a/src/USER-OMP/pair_coul_dsf_omp.cpp +++ b/src/USER-OMP/pair_coul_dsf_omp.cpp @@ -12,6 +12,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include "pair_coul_dsf_omp.h" #include #include "atom.h" @@ -52,7 +53,7 @@ void PairCoulDSFOMP::compute(int eflag, int vflag) const int inum = list->inum; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/pair_coul_long_omp.cpp b/src/USER-OMP/pair_coul_long_omp.cpp index b135ffa7e6..6c9b9d034d 100644 --- a/src/USER-OMP/pair_coul_long_omp.cpp +++ b/src/USER-OMP/pair_coul_long_omp.cpp @@ -12,6 +12,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include "pair_coul_long_omp.h" #include "atom.h" @@ -52,7 +53,7 @@ void PairCoulLongOMP::compute(int eflag, int vflag) const int inum = list->inum; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/pair_coul_long_soft_omp.cpp b/src/USER-OMP/pair_coul_long_soft_omp.cpp index 891123b8b3..ff3267fb38 100644 --- a/src/USER-OMP/pair_coul_long_soft_omp.cpp +++ b/src/USER-OMP/pair_coul_long_soft_omp.cpp @@ -12,6 +12,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include "pair_coul_long_soft_omp.h" #include "atom.h" @@ -51,7 +52,7 @@ void PairCoulLongSoftOMP::compute(int eflag, int vflag) const int inum = list->inum; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/pair_coul_msm_omp.cpp b/src/USER-OMP/pair_coul_msm_omp.cpp index 9417df7ac6..32a657e286 100644 --- a/src/USER-OMP/pair_coul_msm_omp.cpp +++ b/src/USER-OMP/pair_coul_msm_omp.cpp @@ -12,6 +12,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include "pair_coul_msm_omp.h" #include "atom.h" @@ -49,7 +50,7 @@ void PairCoulMSMOMP::compute(int eflag, int vflag) const int inum = list->inum; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/pair_coul_wolf_omp.cpp b/src/USER-OMP/pair_coul_wolf_omp.cpp index 9163eff086..d0f6fdb125 100644 --- a/src/USER-OMP/pair_coul_wolf_omp.cpp +++ b/src/USER-OMP/pair_coul_wolf_omp.cpp @@ -12,6 +12,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include "pair_coul_wolf_omp.h" #include #include "atom.h" @@ -45,7 +46,7 @@ void PairCoulWolfOMP::compute(int eflag, int vflag) const int inum = list->inum; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/pair_dpd_omp.cpp b/src/USER-OMP/pair_dpd_omp.cpp index 7c265b2b7b..f3a1c29a70 100644 --- a/src/USER-OMP/pair_dpd_omp.cpp +++ b/src/USER-OMP/pair_dpd_omp.cpp @@ -12,6 +12,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include "pair_dpd_omp.h" #include #include "atom.h" @@ -80,7 +81,7 @@ void PairDPDOMP::compute(int eflag, int vflag) } #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/pair_dpd_tstat_omp.cpp b/src/USER-OMP/pair_dpd_tstat_omp.cpp index 076e27a299..06e80274bd 100644 --- a/src/USER-OMP/pair_dpd_tstat_omp.cpp +++ b/src/USER-OMP/pair_dpd_tstat_omp.cpp @@ -12,6 +12,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include "pair_dpd_tstat_omp.h" #include "atom.h" @@ -79,7 +80,7 @@ void PairDPDTstatOMP::compute(int eflag, int vflag) random_thr[0] = random; } #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/pair_eam_cd_omp.cpp b/src/USER-OMP/pair_eam_cd_omp.cpp index 1d945e06a8..874a2fa252 100644 --- a/src/USER-OMP/pair_eam_cd_omp.cpp +++ b/src/USER-OMP/pair_eam_cd_omp.cpp @@ -12,6 +12,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include @@ -77,7 +78,7 @@ void PairEAMCDOMP::compute(int eflag, int vflag) } #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/pair_eam_omp.cpp b/src/USER-OMP/pair_eam_omp.cpp index 899323a680..60ae65def5 100644 --- a/src/USER-OMP/pair_eam_omp.cpp +++ b/src/USER-OMP/pair_eam_omp.cpp @@ -12,6 +12,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include @@ -59,7 +60,7 @@ void PairEAMOMP::compute(int eflag, int vflag) } #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/pair_edip_omp.cpp b/src/USER-OMP/pair_edip_omp.cpp index d1fa4c1c7a..efba197153 100644 --- a/src/USER-OMP/pair_edip_omp.cpp +++ b/src/USER-OMP/pair_edip_omp.cpp @@ -12,6 +12,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include "pair_edip_omp.h" #include "atom.h" @@ -50,7 +51,7 @@ void PairEDIPOMP::compute(int eflag, int vflag) const int inum = list->inum; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/pair_eim_omp.cpp b/src/USER-OMP/pair_eim_omp.cpp index dd590b75e2..02b765a956 100644 --- a/src/USER-OMP/pair_eim_omp.cpp +++ b/src/USER-OMP/pair_eim_omp.cpp @@ -12,6 +12,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include @@ -57,7 +58,7 @@ void PairEIMOMP::compute(int eflag, int vflag) } #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/pair_gauss_cut_omp.cpp b/src/USER-OMP/pair_gauss_cut_omp.cpp index e14a85fc95..6d5344701d 100644 --- a/src/USER-OMP/pair_gauss_cut_omp.cpp +++ b/src/USER-OMP/pair_gauss_cut_omp.cpp @@ -12,6 +12,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include "pair_gauss_cut_omp.h" #include "atom.h" @@ -43,7 +44,7 @@ void PairGaussCutOMP::compute(int eflag, int vflag) const int inum = list->inum; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/pair_gauss_omp.cpp b/src/USER-OMP/pair_gauss_omp.cpp index de212c9213..106d520fa1 100644 --- a/src/USER-OMP/pair_gauss_omp.cpp +++ b/src/USER-OMP/pair_gauss_omp.cpp @@ -12,6 +12,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include "pair_gauss_omp.h" #include "atom.h" @@ -45,7 +46,7 @@ void PairGaussOMP::compute(int eflag, int vflag) double occ = 0.0; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) reduction(+:occ) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) reduction(+:occ) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/pair_gayberne_omp.cpp b/src/USER-OMP/pair_gayberne_omp.cpp index a58c16eafc..f0fd60a309 100644 --- a/src/USER-OMP/pair_gayberne_omp.cpp +++ b/src/USER-OMP/pair_gayberne_omp.cpp @@ -12,6 +12,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include "pair_gayberne_omp.h" #include "math_extra.h" @@ -45,7 +46,7 @@ void PairGayBerneOMP::compute(int eflag, int vflag) const int inum = list->inum; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/pair_gran_hertz_history_omp.cpp b/src/USER-OMP/pair_gran_hertz_history_omp.cpp index 1e3d86a1a5..9ad84afb92 100644 --- a/src/USER-OMP/pair_gran_hertz_history_omp.cpp +++ b/src/USER-OMP/pair_gran_hertz_history_omp.cpp @@ -12,6 +12,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include "pair_gran_hertz_history_omp.h" #include "fix_neigh_history.h" @@ -69,7 +70,7 @@ void PairGranHertzHistoryOMP::compute(int eflag, int vflag) } #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/pair_gran_hooke_history_omp.cpp b/src/USER-OMP/pair_gran_hooke_history_omp.cpp index d0e44cc430..3e519fc0d0 100644 --- a/src/USER-OMP/pair_gran_hooke_history_omp.cpp +++ b/src/USER-OMP/pair_gran_hooke_history_omp.cpp @@ -12,6 +12,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include #include "pair_gran_hooke_history_omp.h" @@ -70,7 +71,7 @@ void PairGranHookeHistoryOMP::compute(int eflag, int vflag) const int inum = list->inum; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/pair_gran_hooke_omp.cpp b/src/USER-OMP/pair_gran_hooke_omp.cpp index 33296e22fa..8de959a91d 100644 --- a/src/USER-OMP/pair_gran_hooke_omp.cpp +++ b/src/USER-OMP/pair_gran_hooke_omp.cpp @@ -12,6 +12,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include "pair_gran_hooke_omp.h" #include "atom.h" @@ -65,7 +66,7 @@ void PairGranHookeOMP::compute(int eflag, int vflag) } #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/pair_hbond_dreiding_lj_omp.cpp b/src/USER-OMP/pair_hbond_dreiding_lj_omp.cpp index 77cc60e437..bb8bbcc984 100644 --- a/src/USER-OMP/pair_hbond_dreiding_lj_omp.cpp +++ b/src/USER-OMP/pair_hbond_dreiding_lj_omp.cpp @@ -12,6 +12,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include "pair_hbond_dreiding_lj_omp.h" #include "atom.h" @@ -74,7 +75,7 @@ void PairHbondDreidingLJOMP::compute(int eflag, int vflag) } #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/pair_hbond_dreiding_morse_omp.cpp b/src/USER-OMP/pair_hbond_dreiding_morse_omp.cpp index 47b2818be8..4ad3a8f057 100644 --- a/src/USER-OMP/pair_hbond_dreiding_morse_omp.cpp +++ b/src/USER-OMP/pair_hbond_dreiding_morse_omp.cpp @@ -12,6 +12,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include "pair_hbond_dreiding_morse_omp.h" #include "atom.h" @@ -74,7 +75,7 @@ void PairHbondDreidingMorseOMP::compute(int eflag, int vflag) } #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/pair_lj96_cut_omp.cpp b/src/USER-OMP/pair_lj96_cut_omp.cpp index b48946b3f9..adf0aac9b2 100644 --- a/src/USER-OMP/pair_lj96_cut_omp.cpp +++ b/src/USER-OMP/pair_lj96_cut_omp.cpp @@ -12,6 +12,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include "pair_lj96_cut_omp.h" #include "atom.h" @@ -44,7 +45,7 @@ void PairLJ96CutOMP::compute(int eflag, int vflag) const int inum = list->inum; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/pair_lj_charmm_coul_charmm_implicit_omp.cpp b/src/USER-OMP/pair_lj_charmm_coul_charmm_implicit_omp.cpp index 10a253de6c..1c8e4c3e6b 100644 --- a/src/USER-OMP/pair_lj_charmm_coul_charmm_implicit_omp.cpp +++ b/src/USER-OMP/pair_lj_charmm_coul_charmm_implicit_omp.cpp @@ -12,6 +12,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include "pair_lj_charmm_coul_charmm_implicit_omp.h" #include "atom.h" @@ -43,7 +44,7 @@ void PairLJCharmmCoulCharmmImplicitOMP::compute(int eflag, int vflag) const int inum = list->inum; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/pair_lj_charmm_coul_charmm_omp.cpp b/src/USER-OMP/pair_lj_charmm_coul_charmm_omp.cpp index c4c5a9650e..55227e2e10 100644 --- a/src/USER-OMP/pair_lj_charmm_coul_charmm_omp.cpp +++ b/src/USER-OMP/pair_lj_charmm_coul_charmm_omp.cpp @@ -12,6 +12,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include "pair_lj_charmm_coul_charmm_omp.h" #include "atom.h" @@ -43,7 +44,7 @@ void PairLJCharmmCoulCharmmOMP::compute(int eflag, int vflag) const int inum = list->inum; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/pair_lj_charmm_coul_long_omp.cpp b/src/USER-OMP/pair_lj_charmm_coul_long_omp.cpp index 949ea3ded7..437bd183ed 100644 --- a/src/USER-OMP/pair_lj_charmm_coul_long_omp.cpp +++ b/src/USER-OMP/pair_lj_charmm_coul_long_omp.cpp @@ -12,6 +12,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include "pair_lj_charmm_coul_long_omp.h" #include "atom.h" @@ -44,7 +45,7 @@ void PairLJCharmmCoulLongOMP::compute(int eflag, int vflag) const int inum = list->inum; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/pair_lj_charmm_coul_long_soft_omp.cpp b/src/USER-OMP/pair_lj_charmm_coul_long_soft_omp.cpp index 2a41b0690b..b32f108098 100644 --- a/src/USER-OMP/pair_lj_charmm_coul_long_soft_omp.cpp +++ b/src/USER-OMP/pair_lj_charmm_coul_long_soft_omp.cpp @@ -12,6 +12,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include "pair_lj_charmm_coul_long_soft_omp.h" #include "atom.h" @@ -44,7 +45,7 @@ void PairLJCharmmCoulLongSoftOMP::compute(int eflag, int vflag) const int inum = list->inum; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/pair_lj_charmm_coul_msm_omp.cpp b/src/USER-OMP/pair_lj_charmm_coul_msm_omp.cpp index cecd27bfdc..9a0b44c1ec 100644 --- a/src/USER-OMP/pair_lj_charmm_coul_msm_omp.cpp +++ b/src/USER-OMP/pair_lj_charmm_coul_msm_omp.cpp @@ -12,6 +12,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include "pair_lj_charmm_coul_msm_omp.h" #include "atom.h" @@ -49,7 +50,7 @@ void PairLJCharmmCoulMSMOMP::compute(int eflag, int vflag) const int inum = list->inum; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/pair_lj_class2_coul_cut_omp.cpp b/src/USER-OMP/pair_lj_class2_coul_cut_omp.cpp index 9e4dc08fd5..59a6841c9e 100644 --- a/src/USER-OMP/pair_lj_class2_coul_cut_omp.cpp +++ b/src/USER-OMP/pair_lj_class2_coul_cut_omp.cpp @@ -12,6 +12,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include "pair_lj_class2_coul_cut_omp.h" #include "atom.h" @@ -43,7 +44,7 @@ void PairLJClass2CoulCutOMP::compute(int eflag, int vflag) const int inum = list->inum; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/pair_lj_class2_coul_long_omp.cpp b/src/USER-OMP/pair_lj_class2_coul_long_omp.cpp index 4fd371e2eb..c0734e39d6 100644 --- a/src/USER-OMP/pair_lj_class2_coul_long_omp.cpp +++ b/src/USER-OMP/pair_lj_class2_coul_long_omp.cpp @@ -12,6 +12,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include "pair_lj_class2_coul_long_omp.h" #include "atom.h" @@ -51,7 +52,7 @@ void PairLJClass2CoulLongOMP::compute(int eflag, int vflag) const int inum = list->inum; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/pair_lj_class2_omp.cpp b/src/USER-OMP/pair_lj_class2_omp.cpp index fa9b6ae703..2b91e10cfa 100644 --- a/src/USER-OMP/pair_lj_class2_omp.cpp +++ b/src/USER-OMP/pair_lj_class2_omp.cpp @@ -12,6 +12,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include "pair_lj_class2_omp.h" #include "atom.h" @@ -43,7 +44,7 @@ void PairLJClass2OMP::compute(int eflag, int vflag) const int inum = list->inum; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/pair_lj_cubic_omp.cpp b/src/USER-OMP/pair_lj_cubic_omp.cpp index 3fe6fab5de..778c25393d 100644 --- a/src/USER-OMP/pair_lj_cubic_omp.cpp +++ b/src/USER-OMP/pair_lj_cubic_omp.cpp @@ -12,6 +12,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include "pair_lj_cubic_omp.h" #include "atom.h" @@ -44,7 +45,7 @@ void PairLJCubicOMP::compute(int eflag, int vflag) const int inum = list->inum; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/pair_lj_cut_coul_cut_omp.cpp b/src/USER-OMP/pair_lj_cut_coul_cut_omp.cpp index 6c0a3706f7..d560b803f1 100644 --- a/src/USER-OMP/pair_lj_cut_coul_cut_omp.cpp +++ b/src/USER-OMP/pair_lj_cut_coul_cut_omp.cpp @@ -12,6 +12,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include "pair_lj_cut_coul_cut_omp.h" #include "atom.h" @@ -43,7 +44,7 @@ void PairLJCutCoulCutOMP::compute(int eflag, int vflag) const int inum = list->inum; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/pair_lj_cut_coul_cut_soft_omp.cpp b/src/USER-OMP/pair_lj_cut_coul_cut_soft_omp.cpp index 742565d19c..1c88600e7a 100644 --- a/src/USER-OMP/pair_lj_cut_coul_cut_soft_omp.cpp +++ b/src/USER-OMP/pair_lj_cut_coul_cut_soft_omp.cpp @@ -12,6 +12,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include "pair_lj_cut_coul_cut_soft_omp.h" #include "atom.h" @@ -43,7 +44,7 @@ void PairLJCutCoulCutSoftOMP::compute(int eflag, int vflag) const int inum = list->inum; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/pair_lj_cut_coul_debye_omp.cpp b/src/USER-OMP/pair_lj_cut_coul_debye_omp.cpp index 413758cc4a..79754e704b 100644 --- a/src/USER-OMP/pair_lj_cut_coul_debye_omp.cpp +++ b/src/USER-OMP/pair_lj_cut_coul_debye_omp.cpp @@ -12,6 +12,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include "pair_lj_cut_coul_debye_omp.h" #include "atom.h" @@ -43,7 +44,7 @@ void PairLJCutCoulDebyeOMP::compute(int eflag, int vflag) const int inum = list->inum; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/pair_lj_cut_coul_dsf_omp.cpp b/src/USER-OMP/pair_lj_cut_coul_dsf_omp.cpp index 3295ede132..ec69a1a1ca 100644 --- a/src/USER-OMP/pair_lj_cut_coul_dsf_omp.cpp +++ b/src/USER-OMP/pair_lj_cut_coul_dsf_omp.cpp @@ -12,6 +12,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include "pair_lj_cut_coul_dsf_omp.h" #include "atom.h" @@ -53,7 +54,7 @@ void PairLJCutCoulDSFOMP::compute(int eflag, int vflag) const int inum = list->inum; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/pair_lj_cut_coul_long_omp.cpp b/src/USER-OMP/pair_lj_cut_coul_long_omp.cpp index d32ec58607..618986389c 100644 --- a/src/USER-OMP/pair_lj_cut_coul_long_omp.cpp +++ b/src/USER-OMP/pair_lj_cut_coul_long_omp.cpp @@ -12,6 +12,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include "pair_lj_cut_coul_long_omp.h" #include "atom.h" @@ -52,7 +53,7 @@ void PairLJCutCoulLongOMP::compute(int eflag, int vflag) const int inum = list->inum; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/pair_lj_cut_coul_long_soft_omp.cpp b/src/USER-OMP/pair_lj_cut_coul_long_soft_omp.cpp index d1f97941f5..ce84ba01c3 100644 --- a/src/USER-OMP/pair_lj_cut_coul_long_soft_omp.cpp +++ b/src/USER-OMP/pair_lj_cut_coul_long_soft_omp.cpp @@ -12,6 +12,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include "pair_lj_cut_coul_long_soft_omp.h" #include "atom.h" @@ -52,7 +53,7 @@ void PairLJCutCoulLongSoftOMP::compute(int eflag, int vflag) const int inum = list->inum; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/pair_lj_cut_coul_msm_omp.cpp b/src/USER-OMP/pair_lj_cut_coul_msm_omp.cpp index 9c48e03a13..58e5cee0c2 100644 --- a/src/USER-OMP/pair_lj_cut_coul_msm_omp.cpp +++ b/src/USER-OMP/pair_lj_cut_coul_msm_omp.cpp @@ -12,6 +12,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include "pair_lj_cut_coul_msm_omp.h" #include "atom.h" @@ -49,7 +50,7 @@ void PairLJCutCoulMSMOMP::compute(int eflag, int vflag) const int inum = list->inum; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/pair_lj_cut_coul_wolf_omp.cpp b/src/USER-OMP/pair_lj_cut_coul_wolf_omp.cpp index 09403b893c..4111c5b22c 100644 --- a/src/USER-OMP/pair_lj_cut_coul_wolf_omp.cpp +++ b/src/USER-OMP/pair_lj_cut_coul_wolf_omp.cpp @@ -12,6 +12,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include "pair_lj_cut_coul_wolf_omp.h" #include "atom.h" @@ -45,7 +46,7 @@ void PairLJCutCoulWolfOMP::compute(int eflag, int vflag) const int inum = list->inum; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/pair_lj_cut_dipole_cut_omp.cpp b/src/USER-OMP/pair_lj_cut_dipole_cut_omp.cpp index c259b006c5..7d5d25c39b 100644 --- a/src/USER-OMP/pair_lj_cut_dipole_cut_omp.cpp +++ b/src/USER-OMP/pair_lj_cut_dipole_cut_omp.cpp @@ -12,6 +12,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include "pair_lj_cut_dipole_cut_omp.h" #include "atom.h" @@ -43,7 +44,7 @@ void PairLJCutDipoleCutOMP::compute(int eflag, int vflag) const int inum = list->inum; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/pair_lj_cut_omp.cpp b/src/USER-OMP/pair_lj_cut_omp.cpp index f8670b7c28..3e7e92de21 100644 --- a/src/USER-OMP/pair_lj_cut_omp.cpp +++ b/src/USER-OMP/pair_lj_cut_omp.cpp @@ -12,6 +12,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include "pair_lj_cut_omp.h" #include "atom.h" @@ -44,7 +45,7 @@ void PairLJCutOMP::compute(int eflag, int vflag) const int inum = list->inum; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/pair_lj_cut_soft_omp.cpp b/src/USER-OMP/pair_lj_cut_soft_omp.cpp index 988af13938..5064c4705e 100644 --- a/src/USER-OMP/pair_lj_cut_soft_omp.cpp +++ b/src/USER-OMP/pair_lj_cut_soft_omp.cpp @@ -12,6 +12,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include "pair_lj_cut_soft_omp.h" #include "atom.h" @@ -44,7 +45,7 @@ void PairLJCutSoftOMP::compute(int eflag, int vflag) const int inum = list->inum; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/pair_lj_cut_thole_long_omp.cpp b/src/USER-OMP/pair_lj_cut_thole_long_omp.cpp index a8f2d2a081..72a7d5f16a 100644 --- a/src/USER-OMP/pair_lj_cut_thole_long_omp.cpp +++ b/src/USER-OMP/pair_lj_cut_thole_long_omp.cpp @@ -15,6 +15,7 @@ Contributing author: Paul Crozier (SNL) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include "pair_lj_cut_thole_long_omp.h" #include #include @@ -70,7 +71,7 @@ void PairLJCutTholeLongOMP::compute(int eflag, int vflag) const int inum = list->inum; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/pair_lj_cut_tip4p_cut_omp.cpp b/src/USER-OMP/pair_lj_cut_tip4p_cut_omp.cpp index 40cfcb6bc2..2d1b828822 100644 --- a/src/USER-OMP/pair_lj_cut_tip4p_cut_omp.cpp +++ b/src/USER-OMP/pair_lj_cut_tip4p_cut_omp.cpp @@ -12,6 +12,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include "pair_lj_cut_tip4p_cut_omp.h" #include "atom.h" @@ -93,7 +94,7 @@ void PairLJCutTIP4PCutOMP::compute(int eflag, int vflag) const int inum = list->inum; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/pair_lj_cut_tip4p_long_omp.cpp b/src/USER-OMP/pair_lj_cut_tip4p_long_omp.cpp index d51382c0f1..a60f9d6a57 100644 --- a/src/USER-OMP/pair_lj_cut_tip4p_long_omp.cpp +++ b/src/USER-OMP/pair_lj_cut_tip4p_long_omp.cpp @@ -12,6 +12,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include "pair_lj_cut_tip4p_long_omp.h" #include #include "atom.h" @@ -93,7 +94,7 @@ void PairLJCutTIP4PLongOMP::compute(int eflag, int vflag) const int inum = list->inum; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/pair_lj_cut_tip4p_long_soft_omp.cpp b/src/USER-OMP/pair_lj_cut_tip4p_long_soft_omp.cpp index 350bea884d..f4a75b9af8 100644 --- a/src/USER-OMP/pair_lj_cut_tip4p_long_soft_omp.cpp +++ b/src/USER-OMP/pair_lj_cut_tip4p_long_soft_omp.cpp @@ -12,6 +12,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include "pair_lj_cut_tip4p_long_soft_omp.h" #include "atom.h" @@ -93,7 +94,7 @@ void PairLJCutTIP4PLongSoftOMP::compute(int eflag, int vflag) const int inum = list->inum; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/pair_lj_expand_omp.cpp b/src/USER-OMP/pair_lj_expand_omp.cpp index d3d1da263c..70b5e436fa 100644 --- a/src/USER-OMP/pair_lj_expand_omp.cpp +++ b/src/USER-OMP/pair_lj_expand_omp.cpp @@ -12,6 +12,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include "pair_lj_expand_omp.h" #include "atom.h" @@ -43,7 +44,7 @@ void PairLJExpandOMP::compute(int eflag, int vflag) const int inum = list->inum; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/pair_lj_gromacs_coul_gromacs_omp.cpp b/src/USER-OMP/pair_lj_gromacs_coul_gromacs_omp.cpp index 2fe7c39afe..0f0a8de2ff 100644 --- a/src/USER-OMP/pair_lj_gromacs_coul_gromacs_omp.cpp +++ b/src/USER-OMP/pair_lj_gromacs_coul_gromacs_omp.cpp @@ -12,6 +12,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include "pair_lj_gromacs_coul_gromacs_omp.h" #include "atom.h" @@ -43,7 +44,7 @@ void PairLJGromacsCoulGromacsOMP::compute(int eflag, int vflag) const int inum = list->inum; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/pair_lj_gromacs_omp.cpp b/src/USER-OMP/pair_lj_gromacs_omp.cpp index 4a4e68ec6e..ea2c9e8f55 100644 --- a/src/USER-OMP/pair_lj_gromacs_omp.cpp +++ b/src/USER-OMP/pair_lj_gromacs_omp.cpp @@ -12,6 +12,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include "pair_lj_gromacs_omp.h" #include "atom.h" @@ -43,7 +44,7 @@ void PairLJGromacsOMP::compute(int eflag, int vflag) const int inum = list->inum; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/pair_lj_long_coul_long_omp.cpp b/src/USER-OMP/pair_lj_long_coul_long_omp.cpp index 7286771c26..e74f487129 100644 --- a/src/USER-OMP/pair_lj_long_coul_long_omp.cpp +++ b/src/USER-OMP/pair_lj_long_coul_long_omp.cpp @@ -12,6 +12,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include "pair_lj_long_coul_long_omp.h" #include "atom.h" @@ -56,7 +57,7 @@ void PairLJLongCoulLongOMP::compute(int eflag, int vflag) const int inum = list->inum; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; @@ -318,7 +319,7 @@ void PairLJLongCoulLongOMP::compute_inner() const int nthreads = comm->nthreads; const int inum = list->inum_inner; #if defined(_OPENMP) -#pragma omp parallel default(none) +#pragma omp parallel LMP_DEFAULT_NONE #endif { int ifrom, ito, tid; @@ -343,7 +344,7 @@ void PairLJLongCoulLongOMP::compute_middle() const int inum = list->inum_middle; #if defined(_OPENMP) -#pragma omp parallel default(none) +#pragma omp parallel LMP_DEFAULT_NONE #endif { int ifrom, ito, tid; @@ -373,7 +374,7 @@ void PairLJLongCoulLongOMP::compute_outer(int eflag, int vflag) const int inum = list->inum; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/pair_lj_long_tip4p_long_omp.cpp b/src/USER-OMP/pair_lj_long_tip4p_long_omp.cpp index d8eedc6c0b..9c8de110d7 100644 --- a/src/USER-OMP/pair_lj_long_tip4p_long_omp.cpp +++ b/src/USER-OMP/pair_lj_long_tip4p_long_omp.cpp @@ -12,6 +12,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include "pair_lj_long_tip4p_long_omp.h" #include "atom.h" @@ -96,7 +97,7 @@ void PairLJLongTIP4PLongOMP::compute(int eflag, int vflag) const int inum = list->inum; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; @@ -379,7 +380,7 @@ void PairLJLongTIP4PLongOMP::compute_inner() const int nthreads = comm->nthreads; const int inum = list->inum_inner; #if defined(_OPENMP) -#pragma omp parallel default(none) +#pragma omp parallel LMP_DEFAULT_NONE #endif { int ifrom, ito, tid; @@ -404,7 +405,7 @@ void PairLJLongTIP4PLongOMP::compute_middle() const int inum = list->inum_middle; #if defined(_OPENMP) -#pragma omp parallel default(none) +#pragma omp parallel LMP_DEFAULT_NONE #endif { int ifrom, ito, tid; @@ -458,7 +459,7 @@ void PairLJLongTIP4PLongOMP::compute_outer(int eflag, int vflag) const int inum = list->inum; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/pair_lj_sdk_coul_long_omp.cpp b/src/USER-OMP/pair_lj_sdk_coul_long_omp.cpp index 15fea32f53..4ad082cde1 100644 --- a/src/USER-OMP/pair_lj_sdk_coul_long_omp.cpp +++ b/src/USER-OMP/pair_lj_sdk_coul_long_omp.cpp @@ -12,6 +12,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include "pair_lj_sdk_coul_long_omp.h" #include "atom.h" @@ -45,7 +46,7 @@ void PairLJSDKCoulLongOMP::compute(int eflag, int vflag) const int inum = list->inum; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/pair_lj_sdk_coul_msm_omp.cpp b/src/USER-OMP/pair_lj_sdk_coul_msm_omp.cpp index 3326034da8..4871356b18 100644 --- a/src/USER-OMP/pair_lj_sdk_coul_msm_omp.cpp +++ b/src/USER-OMP/pair_lj_sdk_coul_msm_omp.cpp @@ -13,6 +13,7 @@ This style is a simplified re-implementation of the CG/CMM pair style ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include "pair_lj_sdk_coul_msm_omp.h" #include "atom.h" @@ -51,7 +52,7 @@ void PairLJSDKCoulMSMOMP::compute(int eflag, int vflag) const int inum = list->inum; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/pair_lj_sdk_omp.cpp b/src/USER-OMP/pair_lj_sdk_omp.cpp index 9ba90a2937..9f0671c61c 100644 --- a/src/USER-OMP/pair_lj_sdk_omp.cpp +++ b/src/USER-OMP/pair_lj_sdk_omp.cpp @@ -13,6 +13,7 @@ This style is a simplified re-implementation of the CG/CMM pair style ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include "pair_lj_sdk_omp.h" #include "atom.h" @@ -47,7 +48,7 @@ void PairLJSDKOMP::compute(int eflag, int vflag) const int inum = list->inum; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/pair_lj_sf_dipole_sf_omp.cpp b/src/USER-OMP/pair_lj_sf_dipole_sf_omp.cpp index ca08f817dc..1adaf93953 100644 --- a/src/USER-OMP/pair_lj_sf_dipole_sf_omp.cpp +++ b/src/USER-OMP/pair_lj_sf_dipole_sf_omp.cpp @@ -12,6 +12,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include "pair_lj_sf_dipole_sf_omp.h" #include "atom.h" @@ -43,7 +44,7 @@ void PairLJSFDipoleSFOMP::compute(int eflag, int vflag) const int inum = list->inum; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/pair_lj_smooth_linear_omp.cpp b/src/USER-OMP/pair_lj_smooth_linear_omp.cpp index 0b29a8fc30..497c2c3a43 100644 --- a/src/USER-OMP/pair_lj_smooth_linear_omp.cpp +++ b/src/USER-OMP/pair_lj_smooth_linear_omp.cpp @@ -12,6 +12,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include "pair_lj_smooth_linear_omp.h" #include "atom.h" @@ -43,7 +44,7 @@ void PairLJSmoothLinearOMP::compute(int eflag, int vflag) const int inum = list->inum; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/pair_lj_smooth_omp.cpp b/src/USER-OMP/pair_lj_smooth_omp.cpp index fe3d64cbf6..bdb9b3141e 100644 --- a/src/USER-OMP/pair_lj_smooth_omp.cpp +++ b/src/USER-OMP/pair_lj_smooth_omp.cpp @@ -12,6 +12,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include "pair_lj_smooth_omp.h" #include "atom.h" @@ -43,7 +44,7 @@ void PairLJSmoothOMP::compute(int eflag, int vflag) const int inum = list->inum; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/pair_lubricate_omp.cpp b/src/USER-OMP/pair_lubricate_omp.cpp index dc6be0b96a..9db4239587 100644 --- a/src/USER-OMP/pair_lubricate_omp.cpp +++ b/src/USER-OMP/pair_lubricate_omp.cpp @@ -12,6 +12,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include "pair_lubricate_omp.h" #include "atom.h" @@ -109,7 +110,7 @@ void PairLubricateOMP::compute(int eflag, int vflag) #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/pair_lubricate_poly_omp.cpp b/src/USER-OMP/pair_lubricate_poly_omp.cpp index 648b10b114..dc143a3160 100644 --- a/src/USER-OMP/pair_lubricate_poly_omp.cpp +++ b/src/USER-OMP/pair_lubricate_poly_omp.cpp @@ -12,6 +12,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include "pair_lubricate_poly_omp.h" #include #include "atom.h" @@ -106,7 +107,7 @@ void PairLubricatePolyOMP::compute(int eflag, int vflag) #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/pair_meam_spline_omp.cpp b/src/USER-OMP/pair_meam_spline_omp.cpp index f4aff69881..19fb09dd7b 100644 --- a/src/USER-OMP/pair_meam_spline_omp.cpp +++ b/src/USER-OMP/pair_meam_spline_omp.cpp @@ -12,6 +12,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include @@ -57,7 +58,7 @@ void PairMEAMSplineOMP::compute(int eflag, int vflag) } #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/pair_morse_omp.cpp b/src/USER-OMP/pair_morse_omp.cpp index c77196d1c5..1f566dbd42 100644 --- a/src/USER-OMP/pair_morse_omp.cpp +++ b/src/USER-OMP/pair_morse_omp.cpp @@ -12,6 +12,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include "pair_morse_omp.h" #include "atom.h" @@ -43,7 +44,7 @@ void PairMorseOMP::compute(int eflag, int vflag) const int inum = list->inum; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/pair_morse_smooth_linear_omp.cpp b/src/USER-OMP/pair_morse_smooth_linear_omp.cpp index e30a774bf2..ac73344c67 100644 --- a/src/USER-OMP/pair_morse_smooth_linear_omp.cpp +++ b/src/USER-OMP/pair_morse_smooth_linear_omp.cpp @@ -13,6 +13,7 @@ Most code borrowed from pair_morse_omp.cpp ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include "pair_morse_smooth_linear_omp.h" #include "atom.h" @@ -47,7 +48,7 @@ void PairMorseSmoothLinearOMP::compute(int eflag, int vflag) const int inum = list->inum; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/pair_nm_cut_coul_cut_omp.cpp b/src/USER-OMP/pair_nm_cut_coul_cut_omp.cpp index 7ffd189a5b..4326434450 100644 --- a/src/USER-OMP/pair_nm_cut_coul_cut_omp.cpp +++ b/src/USER-OMP/pair_nm_cut_coul_cut_omp.cpp @@ -12,6 +12,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include "pair_nm_cut_coul_cut_omp.h" #include "atom.h" @@ -43,7 +44,7 @@ void PairNMCutCoulCutOMP::compute(int eflag, int vflag) const int inum = list->inum; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/pair_nm_cut_coul_long_omp.cpp b/src/USER-OMP/pair_nm_cut_coul_long_omp.cpp index 0a0a861b6f..970b383f7e 100644 --- a/src/USER-OMP/pair_nm_cut_coul_long_omp.cpp +++ b/src/USER-OMP/pair_nm_cut_coul_long_omp.cpp @@ -12,6 +12,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include "pair_nm_cut_coul_long_omp.h" #include "atom.h" @@ -51,7 +52,7 @@ void PairNMCutCoulLongOMP::compute(int eflag, int vflag) const int inum = list->inum; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/pair_nm_cut_omp.cpp b/src/USER-OMP/pair_nm_cut_omp.cpp index cb74eed3f1..ef68071b68 100644 --- a/src/USER-OMP/pair_nm_cut_omp.cpp +++ b/src/USER-OMP/pair_nm_cut_omp.cpp @@ -12,6 +12,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include "pair_nm_cut_omp.h" #include "atom.h" @@ -43,7 +44,7 @@ void PairNMCutOMP::compute(int eflag, int vflag) const int inum = list->inum; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/pair_peri_lps_omp.cpp b/src/USER-OMP/pair_peri_lps_omp.cpp index 3ea41321a7..cf29b5cab8 100644 --- a/src/USER-OMP/pair_peri_lps_omp.cpp +++ b/src/USER-OMP/pair_peri_lps_omp.cpp @@ -12,6 +12,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include #include "pair_peri_lps_omp.h" @@ -62,7 +63,7 @@ void PairPeriLPSOMP::compute(int eflag, int vflag) } #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/pair_peri_pmb_omp.cpp b/src/USER-OMP/pair_peri_pmb_omp.cpp index 95e50df50d..1990b46fe5 100644 --- a/src/USER-OMP/pair_peri_pmb_omp.cpp +++ b/src/USER-OMP/pair_peri_pmb_omp.cpp @@ -12,6 +12,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include #include "pair_peri_pmb_omp.h" @@ -58,7 +59,7 @@ void PairPeriPMBOMP::compute(int eflag, int vflag) } #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/pair_resquared_omp.cpp b/src/USER-OMP/pair_resquared_omp.cpp index 65f1c7289f..557d212531 100644 --- a/src/USER-OMP/pair_resquared_omp.cpp +++ b/src/USER-OMP/pair_resquared_omp.cpp @@ -12,6 +12,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include "pair_resquared_omp.h" #include "math_extra.h" @@ -45,7 +46,7 @@ void PairRESquaredOMP::compute(int eflag, int vflag) const int inum = list->inum; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/pair_soft_omp.cpp b/src/USER-OMP/pair_soft_omp.cpp index 7de94a2cd1..85425974cc 100644 --- a/src/USER-OMP/pair_soft_omp.cpp +++ b/src/USER-OMP/pair_soft_omp.cpp @@ -12,6 +12,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include "pair_soft_omp.h" #include "atom.h" @@ -47,7 +48,7 @@ void PairSoftOMP::compute(int eflag, int vflag) const int inum = list->inum; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/pair_sw_omp.cpp b/src/USER-OMP/pair_sw_omp.cpp index 9812cf06ba..ebe501ff8e 100644 --- a/src/USER-OMP/pair_sw_omp.cpp +++ b/src/USER-OMP/pair_sw_omp.cpp @@ -12,6 +12,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include "pair_sw_omp.h" #include "atom.h" @@ -44,7 +45,7 @@ void PairSWOMP::compute(int eflag, int vflag) const int inum = list->inum; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/pair_table_omp.cpp b/src/USER-OMP/pair_table_omp.cpp index bf18d53d2e..2546bfdc9a 100644 --- a/src/USER-OMP/pair_table_omp.cpp +++ b/src/USER-OMP/pair_table_omp.cpp @@ -12,6 +12,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include "pair_table_omp.h" #include "atom.h" @@ -44,7 +45,7 @@ void PairTableOMP::compute(int eflag, int vflag) const int inum = list->inum; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/pair_tersoff_mod_c_omp.cpp b/src/USER-OMP/pair_tersoff_mod_c_omp.cpp index 6b6b130c65..5e1e6b1b0e 100644 --- a/src/USER-OMP/pair_tersoff_mod_c_omp.cpp +++ b/src/USER-OMP/pair_tersoff_mod_c_omp.cpp @@ -12,6 +12,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include "pair_tersoff_mod_c_omp.h" #include "atom.h" @@ -43,7 +44,7 @@ void PairTersoffMODCOMP::compute(int eflag, int vflag) const int inum = list->inum; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/pair_tersoff_mod_omp.cpp b/src/USER-OMP/pair_tersoff_mod_omp.cpp index 634676ee49..aa90b88375 100644 --- a/src/USER-OMP/pair_tersoff_mod_omp.cpp +++ b/src/USER-OMP/pair_tersoff_mod_omp.cpp @@ -12,6 +12,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include "pair_tersoff_mod_omp.h" #include "atom.h" @@ -43,7 +44,7 @@ void PairTersoffMODOMP::compute(int eflag, int vflag) const int inum = list->inum; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/pair_tersoff_omp.cpp b/src/USER-OMP/pair_tersoff_omp.cpp index 9735ccaa1f..34dbfb73b6 100644 --- a/src/USER-OMP/pair_tersoff_omp.cpp +++ b/src/USER-OMP/pair_tersoff_omp.cpp @@ -12,6 +12,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include "pair_tersoff_omp.h" #include "atom.h" @@ -44,7 +45,7 @@ void PairTersoffOMP::compute(int eflag, int vflag) const int inum = list->inum; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/pair_tersoff_table_omp.cpp b/src/USER-OMP/pair_tersoff_table_omp.cpp index fa9512bf71..a0a7f4c810 100644 --- a/src/USER-OMP/pair_tersoff_table_omp.cpp +++ b/src/USER-OMP/pair_tersoff_table_omp.cpp @@ -12,6 +12,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include "pair_tersoff_table_omp.h" #include "atom.h" @@ -68,7 +69,7 @@ void PairTersoffTableOMP::compute(int eflag, int vflag) const int inum = list->inum; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/pair_tip4p_cut_omp.cpp b/src/USER-OMP/pair_tip4p_cut_omp.cpp index c8584b4fe3..5b983d3db5 100644 --- a/src/USER-OMP/pair_tip4p_cut_omp.cpp +++ b/src/USER-OMP/pair_tip4p_cut_omp.cpp @@ -12,6 +12,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include "pair_tip4p_cut_omp.h" #include "atom.h" @@ -92,7 +93,7 @@ void PairTIP4PCutOMP::compute(int eflag, int vflag) const int inum = list->inum; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/pair_tip4p_long_omp.cpp b/src/USER-OMP/pair_tip4p_long_omp.cpp index 89c3c17684..86bebdbeff 100644 --- a/src/USER-OMP/pair_tip4p_long_omp.cpp +++ b/src/USER-OMP/pair_tip4p_long_omp.cpp @@ -12,6 +12,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include "pair_tip4p_long_omp.h" #include "atom.h" @@ -93,7 +94,7 @@ void PairTIP4PLongOMP::compute(int eflag, int vflag) const int inum = list->inum; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/pair_tip4p_long_soft_omp.cpp b/src/USER-OMP/pair_tip4p_long_soft_omp.cpp index 88da3d02a8..26e0420955 100644 --- a/src/USER-OMP/pair_tip4p_long_soft_omp.cpp +++ b/src/USER-OMP/pair_tip4p_long_soft_omp.cpp @@ -12,6 +12,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include "pair_tip4p_long_soft_omp.h" #include "atom.h" @@ -93,7 +94,7 @@ void PairTIP4PLongSoftOMP::compute(int eflag, int vflag) const int inum = list->inum; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/pair_ufm_omp.cpp b/src/USER-OMP/pair_ufm_omp.cpp index 23e76186c0..605d6dd2c6 100644 --- a/src/USER-OMP/pair_ufm_omp.cpp +++ b/src/USER-OMP/pair_ufm_omp.cpp @@ -14,6 +14,7 @@ Maurice de Koning (Unicamp/Brazil) - dekoning@ifi.unicamp.br ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include "pair_ufm_omp.h" #include "atom.h" @@ -45,7 +46,7 @@ void PairUFMOMP::compute(int eflag, int vflag) const int inum = list->inum; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/pair_vashishta_omp.cpp b/src/USER-OMP/pair_vashishta_omp.cpp index a218ddf3ed..425a06c296 100644 --- a/src/USER-OMP/pair_vashishta_omp.cpp +++ b/src/USER-OMP/pair_vashishta_omp.cpp @@ -12,6 +12,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include "pair_vashishta_omp.h" #include "atom.h" @@ -44,7 +45,7 @@ void PairVashishtaOMP::compute(int eflag, int vflag) const int inum = list->inum; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/pair_vashishta_table_omp.cpp b/src/USER-OMP/pair_vashishta_table_omp.cpp index 0986128bf6..36c86a8995 100644 --- a/src/USER-OMP/pair_vashishta_table_omp.cpp +++ b/src/USER-OMP/pair_vashishta_table_omp.cpp @@ -12,6 +12,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include "pair_vashishta_table_omp.h" #include "atom.h" @@ -44,7 +45,7 @@ void PairVashishtaTableOMP::compute(int eflag, int vflag) const int inum = list->inum; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/pair_yukawa_colloid_omp.cpp b/src/USER-OMP/pair_yukawa_colloid_omp.cpp index 9b8428c648..e6ac3fa9fb 100644 --- a/src/USER-OMP/pair_yukawa_colloid_omp.cpp +++ b/src/USER-OMP/pair_yukawa_colloid_omp.cpp @@ -12,6 +12,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include "pair_yukawa_colloid_omp.h" #include "atom.h" @@ -43,7 +44,7 @@ void PairYukawaColloidOMP::compute(int eflag, int vflag) const int inum = list->inum; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/pair_yukawa_omp.cpp b/src/USER-OMP/pair_yukawa_omp.cpp index 20d557e605..f222876cb5 100644 --- a/src/USER-OMP/pair_yukawa_omp.cpp +++ b/src/USER-OMP/pair_yukawa_omp.cpp @@ -12,6 +12,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include "pair_yukawa_omp.h" #include "atom.h" @@ -43,7 +44,7 @@ void PairYukawaOMP::compute(int eflag, int vflag) const int inum = list->inum; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/pair_zbl_omp.cpp b/src/USER-OMP/pair_zbl_omp.cpp index 3a300ce477..284ebbf09c 100644 --- a/src/USER-OMP/pair_zbl_omp.cpp +++ b/src/USER-OMP/pair_zbl_omp.cpp @@ -12,6 +12,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include #include "pair_zbl_omp.h" #include "atom.h" @@ -44,7 +45,7 @@ void PairZBLOMP::compute(int eflag, int vflag) const int inum = list->inum; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { int ifrom, ito, tid; diff --git a/src/USER-OMP/pppm_cg_omp.cpp b/src/USER-OMP/pppm_cg_omp.cpp index f9967bf52a..31098d2675 100644 --- a/src/USER-OMP/pppm_cg_omp.cpp +++ b/src/USER-OMP/pppm_cg_omp.cpp @@ -15,6 +15,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include "pppm_cg_omp.h" #include #include @@ -59,7 +60,7 @@ PPPMCGOMP::PPPMCGOMP(LAMMPS *lmp) : PPPMCG(lmp), ThrOMP(lmp, THR_KSPACE) PPPMCGOMP::~PPPMCGOMP() { #if defined(_OPENMP) -#pragma omp parallel default(none) +#pragma omp parallel LMP_DEFAULT_NONE #endif { #if defined(_OPENMP) @@ -81,7 +82,7 @@ void PPPMCGOMP::allocate() PPPMCG::allocate(); #if defined(_OPENMP) -#pragma omp parallel default(none) +#pragma omp parallel LMP_DEFAULT_NONE #endif { #if defined(_OPENMP) @@ -122,7 +123,7 @@ void PPPMCGOMP::compute_gf_ik() const int twoorder = 2*order; #if defined(_OPENMP) -#pragma omp parallel default(none) +#pragma omp parallel LMP_DEFAULT_NONE #endif { double snx,sny,snz; @@ -216,7 +217,7 @@ void PPPMCGOMP::compute_gf_ad() double sf0=0.0,sf1=0.0,sf2=0.0,sf3=0.0,sf4=0.0,sf5=0.0; #if defined(_OPENMP) -#pragma omp parallel default(none) reduction(+:sf0,sf1,sf2,sf3,sf4,sf5) +#pragma omp parallel LMP_DEFAULT_NONE reduction(+:sf0,sf1,sf2,sf3,sf4,sf5) #endif { double snx,sny,snz,sqk; @@ -314,7 +315,7 @@ void PPPMCGOMP::compute(int eflag, int vflag) PPPMCG::compute(eflag,vflag); #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { #if defined(_OPENMP) @@ -351,7 +352,7 @@ void PPPMCGOMP::make_rho() const int iy = nyhi_out - nylo_out + 1; #if defined(_OPENMP) -#pragma omp parallel default(none) +#pragma omp parallel LMP_DEFAULT_NONE #endif { const double * _noalias const q = atom->q; @@ -443,7 +444,7 @@ void PPPMCGOMP::fieldforce_ik() const int nthreads = comm->nthreads; #if defined(_OPENMP) -#pragma omp parallel default(none) +#pragma omp parallel LMP_DEFAULT_NONE #endif { FFT_SCALAR dx,dy,dz,x0,y0,z0,ekx,eky,ekz; @@ -524,7 +525,7 @@ void PPPMCGOMP::fieldforce_ad() const int nthreads = comm->nthreads; #if defined(_OPENMP) -#pragma omp parallel default(none) +#pragma omp parallel LMP_DEFAULT_NONE #endif { int i,ifrom,ito,tid,l,m,n,nx,ny,nz,mx,my,mz; @@ -617,7 +618,7 @@ void PPPMCGOMP::fieldforce_peratom() const int nthreads = comm->nthreads; #if defined(_OPENMP) -#pragma omp parallel default(none) +#pragma omp parallel LMP_DEFAULT_NONE #endif { FFT_SCALAR dx,dy,dz,x0,y0,z0; diff --git a/src/USER-OMP/pppm_disp_omp.cpp b/src/USER-OMP/pppm_disp_omp.cpp index 6b2c180a3f..aad77cffc7 100644 --- a/src/USER-OMP/pppm_disp_omp.cpp +++ b/src/USER-OMP/pppm_disp_omp.cpp @@ -16,6 +16,7 @@ Rolf Isele-Holder (RWTH Aachen University) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include "pppm_disp_omp.h" #include #include @@ -59,7 +60,7 @@ PPPMDispOMP::PPPMDispOMP(LAMMPS *lmp) : PPPMDisp(lmp), ThrOMP(lmp, THR_KSPACE) PPPMDispOMP::~PPPMDispOMP() { #if defined(_OPENMP) -#pragma omp parallel default(none) +#pragma omp parallel LMP_DEFAULT_NONE #endif { #if defined(_OPENMP) @@ -87,7 +88,7 @@ void PPPMDispOMP::allocate() PPPMDisp::allocate(); #if defined(_OPENMP) -#pragma omp parallel default(none) +#pragma omp parallel LMP_DEFAULT_NONE #endif { #if defined(_OPENMP) @@ -114,7 +115,7 @@ void PPPMDispOMP::allocate() void PPPMDispOMP::compute_gf() { #if defined(_OPENMP) -#pragma omp parallel default(none) +#pragma omp parallel LMP_DEFAULT_NONE #endif { @@ -204,7 +205,7 @@ void PPPMDispOMP::compute_gf() void PPPMDispOMP::compute_gf_6() { #if defined(_OPENMP) -#pragma omp parallel default(none) +#pragma omp parallel LMP_DEFAULT_NONE #endif { double *prd; @@ -311,7 +312,7 @@ void PPPMDispOMP::compute(int eflag, int vflag) PPPMDisp::compute(eflag,vflag); #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { #if defined(_OPENMP) @@ -366,7 +367,7 @@ void PPPMDispOMP::particle_map(double dxinv, double dyinv, int flag = 0; #if defined(_OPENMP) -#pragma omp parallel for default(none) reduction(+:flag) schedule(static) +#pragma omp parallel for LMP_DEFAULT_NONE reduction(+:flag) schedule(static) #endif for (int i = 0; i < nlocal; i++) { @@ -419,7 +420,7 @@ void PPPMDispOMP::make_rho_c() const int iy = nyhi_out - nylo_out + 1; #if defined(_OPENMP) -#pragma omp parallel default(none) +#pragma omp parallel LMP_DEFAULT_NONE #endif { const double * _noalias const q = atom->q; @@ -509,7 +510,7 @@ void PPPMDispOMP::make_rho_g() const int iy = nyhi_out_6 - nylo_out_6 + 1; #if defined(_OPENMP) -#pragma omp parallel default(none) +#pragma omp parallel LMP_DEFAULT_NONE #endif { const dbl3_t * _noalias const x = (dbl3_t *) atom->x[0]; @@ -613,7 +614,7 @@ void PPPMDispOMP::make_rho_a() const int iy = nyhi_out_6 - nylo_out_6 + 1; #if defined(_OPENMP) -#pragma omp parallel default(none) +#pragma omp parallel LMP_DEFAULT_NONE #endif { const dbl3_t * _noalias const x = (dbl3_t *) atom->x[0]; @@ -723,7 +724,7 @@ void PPPMDispOMP::fieldforce_c_ik() #if defined(_OPENMP) const int nthreads = comm->nthreads; -#pragma omp parallel default(none) +#pragma omp parallel LMP_DEFAULT_NONE #endif { #if defined(_OPENMP) @@ -828,7 +829,7 @@ void PPPMDispOMP::fieldforce_c_ad() #if defined(_OPENMP) const int nthreads = comm->nthreads; -#pragma omp parallel default(none) +#pragma omp parallel LMP_DEFAULT_NONE #endif { #if defined(_OPENMP) @@ -935,7 +936,7 @@ void PPPMDispOMP::fieldforce_c_peratom() #if defined(_OPENMP) const int nthreads = comm->nthreads; -#pragma omp parallel default(none) +#pragma omp parallel LMP_DEFAULT_NONE #endif { #if defined(_OPENMP) @@ -1034,7 +1035,7 @@ void PPPMDispOMP::fieldforce_g_ik() #if defined(_OPENMP) const int nthreads = comm->nthreads; -#pragma omp parallel default(none) +#pragma omp parallel LMP_DEFAULT_NONE #endif { #if defined(_OPENMP) @@ -1138,7 +1139,7 @@ void PPPMDispOMP::fieldforce_g_ad() #if defined(_OPENMP) const int nthreads = comm->nthreads; -#pragma omp parallel default(none) +#pragma omp parallel LMP_DEFAULT_NONE #endif { #if defined(_OPENMP) @@ -1248,7 +1249,7 @@ void PPPMDispOMP::fieldforce_g_peratom() #if defined(_OPENMP) const int nthreads = comm->nthreads; -#pragma omp parallel default(none) +#pragma omp parallel LMP_DEFAULT_NONE #endif { #if defined(_OPENMP) @@ -1350,7 +1351,7 @@ void PPPMDispOMP::fieldforce_a_ik() #if defined(_OPENMP) const int nthreads = comm->nthreads; -#pragma omp parallel default(none) +#pragma omp parallel LMP_DEFAULT_NONE #endif { #if defined(_OPENMP) @@ -1486,7 +1487,7 @@ void PPPMDispOMP::fieldforce_a_ad() #if defined(_OPENMP) const int nthreads = comm->nthreads; -#pragma omp parallel default(none) +#pragma omp parallel LMP_DEFAULT_NONE #endif { #if defined(_OPENMP) @@ -1663,7 +1664,7 @@ void PPPMDispOMP::fieldforce_a_peratom() #if defined(_OPENMP) const int nthreads = comm->nthreads; -#pragma omp parallel default(none) +#pragma omp parallel LMP_DEFAULT_NONE #endif { #if defined(_OPENMP) diff --git a/src/USER-OMP/pppm_disp_tip4p_omp.cpp b/src/USER-OMP/pppm_disp_tip4p_omp.cpp index ec294cd56d..7da4257e07 100644 --- a/src/USER-OMP/pppm_disp_tip4p_omp.cpp +++ b/src/USER-OMP/pppm_disp_tip4p_omp.cpp @@ -15,6 +15,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include "pppm_disp_tip4p_omp.h" #include #include @@ -56,7 +57,7 @@ PPPMDispTIP4POMP::~PPPMDispTIP4POMP() { #if defined(_OPENMP) -#pragma omp parallel default(none) +#pragma omp parallel LMP_DEFAULT_NONE #endif { #if defined(_OPENMP) @@ -84,7 +85,7 @@ void PPPMDispTIP4POMP::allocate() PPPMDispTIP4P::allocate(); #if defined(_OPENMP) -#pragma omp parallel default(none) +#pragma omp parallel LMP_DEFAULT_NONE #endif { #if defined(_OPENMP) @@ -111,7 +112,7 @@ void PPPMDispTIP4POMP::allocate() void PPPMDispTIP4POMP::compute_gf() { #if defined(_OPENMP) -#pragma omp parallel default(none) +#pragma omp parallel LMP_DEFAULT_NONE #endif { @@ -198,7 +199,7 @@ void PPPMDispTIP4POMP::compute_gf() void PPPMDispTIP4POMP::compute_gf_6() { #if defined(_OPENMP) -#pragma omp parallel default(none) +#pragma omp parallel LMP_DEFAULT_NONE #endif { double *prd; @@ -302,7 +303,7 @@ void PPPMDispTIP4POMP::compute(int eflag, int vflag) PPPMDispTIP4P::compute(eflag,vflag); #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { #if defined(_OPENMP) @@ -358,7 +359,7 @@ void PPPMDispTIP4POMP::particle_map_c(double dxinv, double dyinv, int flag = 0; #if defined(_OPENMP) -#pragma omp parallel for default(none) reduction(+:flag) schedule(static) +#pragma omp parallel for LMP_DEFAULT_NONE reduction(+:flag) schedule(static) #endif for (int i = 0; i < nlocal; i++) { dbl3_t xM; @@ -434,7 +435,7 @@ void PPPMDispTIP4POMP::particle_map(double dxinv, double dyinv, int flag = 0; #if defined(_OPENMP) -#pragma omp parallel for default(none) reduction(+:flag) schedule(static) +#pragma omp parallel for LMP_DEFAULT_NONE reduction(+:flag) schedule(static) #endif for (int i = 0; i < nlocal; i++) { @@ -487,7 +488,7 @@ void PPPMDispTIP4POMP::make_rho_c() const int iy = nyhi_out - nylo_out + 1; #if defined(_OPENMP) -#pragma omp parallel default(none) +#pragma omp parallel LMP_DEFAULT_NONE #endif { const double * _noalias const q = atom->q; @@ -582,7 +583,7 @@ void PPPMDispTIP4POMP::make_rho_g() const int iy = nyhi_out_6 - nylo_out_6 + 1; #if defined(_OPENMP) -#pragma omp parallel default(none) +#pragma omp parallel LMP_DEFAULT_NONE #endif { const dbl3_t * _noalias const x = (dbl3_t *) atom->x[0]; @@ -684,7 +685,7 @@ void PPPMDispTIP4POMP::make_rho_a() const int iy = nyhi_out_6 - nylo_out_6 + 1; #if defined(_OPENMP) -#pragma omp parallel default(none) +#pragma omp parallel LMP_DEFAULT_NONE #endif { const dbl3_t * _noalias const x = (dbl3_t *) atom->x[0]; @@ -795,7 +796,7 @@ void PPPMDispTIP4POMP::fieldforce_c_ik() const double boxloz = boxlo[2]; #if defined(_OPENMP) -#pragma omp parallel default(none) +#pragma omp parallel LMP_DEFAULT_NONE #endif { dbl3_t xM; @@ -903,7 +904,7 @@ void PPPMDispTIP4POMP::fieldforce_c_ad() const double boxloz = boxlo[2]; #if defined(_OPENMP) -#pragma omp parallel default(none) +#pragma omp parallel LMP_DEFAULT_NONE #endif { double s1,s2,s3,sf; @@ -1018,7 +1019,7 @@ void PPPMDispTIP4POMP::fieldforce_g_ik() const double * const * const x = atom->x; #if defined(_OPENMP) -#pragma omp parallel default(none) +#pragma omp parallel LMP_DEFAULT_NONE #endif { #if defined(_OPENMP) @@ -1119,7 +1120,7 @@ void PPPMDispTIP4POMP::fieldforce_g_ad() const double hz_inv = nz_pppm_6/zprd_slab; #if defined(_OPENMP) -#pragma omp parallel default(none) +#pragma omp parallel LMP_DEFAULT_NONE #endif { #if defined(_OPENMP) @@ -1226,7 +1227,7 @@ void PPPMDispTIP4POMP::fieldforce_g_peratom() const double * const * const x = atom->x; #if defined(_OPENMP) -#pragma omp parallel default(none) +#pragma omp parallel LMP_DEFAULT_NONE #endif { #if defined(_OPENMP) @@ -1325,7 +1326,7 @@ void PPPMDispTIP4POMP::fieldforce_a_ik() const double * const * const x = atom->x; #if defined(_OPENMP) -#pragma omp parallel default(none) +#pragma omp parallel LMP_DEFAULT_NONE #endif { #if defined(_OPENMP) @@ -1458,7 +1459,7 @@ void PPPMDispTIP4POMP::fieldforce_a_ad() const double hz_inv = nz_pppm_6/zprd_slab; #if defined(_OPENMP) -#pragma omp parallel default(none) +#pragma omp parallel LMP_DEFAULT_NONE #endif { #if defined(_OPENMP) @@ -1632,7 +1633,7 @@ void PPPMDispTIP4POMP::fieldforce_a_peratom() const double * const * const x = atom->x; #if defined(_OPENMP) -#pragma omp parallel default(none) +#pragma omp parallel LMP_DEFAULT_NONE #endif { #if defined(_OPENMP) diff --git a/src/USER-OMP/pppm_omp.cpp b/src/USER-OMP/pppm_omp.cpp index b9b39826ff..e3e46f4de0 100644 --- a/src/USER-OMP/pppm_omp.cpp +++ b/src/USER-OMP/pppm_omp.cpp @@ -15,6 +15,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include "pppm_omp.h" #include #include @@ -61,7 +62,7 @@ void PPPMOMP::allocate() PPPM::allocate(); #if defined(_OPENMP) -#pragma omp parallel default(none) +#pragma omp parallel LMP_DEFAULT_NONE #endif { #if defined(_OPENMP) @@ -81,7 +82,7 @@ void PPPMOMP::allocate() PPPMOMP::~PPPMOMP() { #if defined(_OPENMP) -#pragma omp parallel default(none) +#pragma omp parallel LMP_DEFAULT_NONE #endif { #if defined(_OPENMP) @@ -122,7 +123,7 @@ void PPPMOMP::compute_gf_ik() const int twoorder = 2*order; #if defined(_OPENMP) -#pragma omp parallel default(none) +#pragma omp parallel LMP_DEFAULT_NONE #endif { double snx,sny,snz; @@ -216,7 +217,7 @@ void PPPMOMP::compute_gf_ad() double sf0=0.0,sf1=0.0,sf2=0.0,sf3=0.0,sf4=0.0,sf5=0.0; #if defined(_OPENMP) -#pragma omp parallel default(none) reduction(+:sf0,sf1,sf2,sf3,sf4,sf5) +#pragma omp parallel LMP_DEFAULT_NONE reduction(+:sf0,sf1,sf2,sf3,sf4,sf5) #endif { double snx,sny,snz,sqk; @@ -314,7 +315,7 @@ void PPPMOMP::compute(int eflag, int vflag) PPPM::compute(eflag,vflag); #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { #if defined(_OPENMP) @@ -352,7 +353,7 @@ void PPPMOMP::make_rho() const int iy = nyhi_out - nylo_out + 1; #if defined(_OPENMP) -#pragma omp parallel default(none) +#pragma omp parallel LMP_DEFAULT_NONE #endif { const double * _noalias const q = atom->q; @@ -449,7 +450,7 @@ void PPPMOMP::fieldforce_ik() const double boxloz = boxlo[2]; #if defined(_OPENMP) -#pragma omp parallel default(none) +#pragma omp parallel LMP_DEFAULT_NONE #endif { FFT_SCALAR x0,y0,z0,ekx,eky,ekz; @@ -534,7 +535,7 @@ void PPPMOMP::fieldforce_ad() const double boxloz = boxlo[2]; #if defined(_OPENMP) -#pragma omp parallel default(none) +#pragma omp parallel LMP_DEFAULT_NONE #endif { double s1,s2,s3,sf; @@ -627,7 +628,7 @@ void PPPMOMP::fieldforce_peratom() const double * _noalias const q = atom->q; #if defined(_OPENMP) -#pragma omp parallel default(none) +#pragma omp parallel LMP_DEFAULT_NONE #endif { FFT_SCALAR dx,dy,dz,x0,y0,z0; diff --git a/src/USER-OMP/pppm_tip4p_omp.cpp b/src/USER-OMP/pppm_tip4p_omp.cpp index 359b5dcc8d..6b3316943e 100644 --- a/src/USER-OMP/pppm_tip4p_omp.cpp +++ b/src/USER-OMP/pppm_tip4p_omp.cpp @@ -15,6 +15,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include "pppm_tip4p_omp.h" #include #include @@ -61,7 +62,7 @@ PPPMTIP4POMP::PPPMTIP4POMP(LAMMPS *lmp) : PPPMTIP4POMP::~PPPMTIP4POMP() { #if defined(_OPENMP) -#pragma omp parallel default(none) +#pragma omp parallel LMP_DEFAULT_NONE #endif { #if defined(_OPENMP) @@ -83,7 +84,7 @@ void PPPMTIP4POMP::allocate() PPPMTIP4P::allocate(); #if defined(_OPENMP) -#pragma omp parallel default(none) +#pragma omp parallel LMP_DEFAULT_NONE #endif { #if defined(_OPENMP) @@ -124,7 +125,7 @@ void PPPMTIP4POMP::compute_gf_ik() const int twoorder = 2*order; #if defined(_OPENMP) -#pragma omp parallel default(none) +#pragma omp parallel LMP_DEFAULT_NONE #endif { double snx,sny,snz; @@ -218,7 +219,7 @@ void PPPMTIP4POMP::compute_gf_ad() double sf0=0.0,sf1=0.0,sf2=0.0,sf3=0.0,sf4=0.0,sf5=0.0; #if defined(_OPENMP) -#pragma omp parallel default(none) reduction(+:sf0,sf1,sf2,sf3,sf4,sf5) +#pragma omp parallel LMP_DEFAULT_NONE reduction(+:sf0,sf1,sf2,sf3,sf4,sf5) #endif { double snx,sny,snz,sqk; @@ -316,7 +317,7 @@ void PPPMTIP4POMP::compute(int eflag, int vflag) PPPMTIP4P::compute(eflag,vflag); #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag,vflag) #endif { #if defined(_OPENMP) @@ -355,7 +356,7 @@ void PPPMTIP4POMP::particle_map() int flag = 0; #if defined(_OPENMP) -#pragma omp parallel for default(none) reduction(+:flag) schedule(static) +#pragma omp parallel for LMP_DEFAULT_NONE reduction(+:flag) schedule(static) #endif for (int i = 0; i < nlocal; i++) { dbl3_t xM; @@ -416,7 +417,7 @@ void PPPMTIP4POMP::make_rho() const int iy = nyhi_out - nylo_out + 1; #if defined(_OPENMP) -#pragma omp parallel default(none) +#pragma omp parallel LMP_DEFAULT_NONE #endif { const double * _noalias const q = atom->q; @@ -521,7 +522,7 @@ void PPPMTIP4POMP::fieldforce_ik() const double boxloz = boxlo[2]; #if defined(_OPENMP) -#pragma omp parallel default(none) +#pragma omp parallel LMP_DEFAULT_NONE #endif { dbl3_t xM; @@ -632,7 +633,7 @@ void PPPMTIP4POMP::fieldforce_ad() const double boxloz = boxlo[2]; #if defined(_OPENMP) -#pragma omp parallel default(none) +#pragma omp parallel LMP_DEFAULT_NONE #endif { double s1,s2,s3,sf; diff --git a/src/USER-OMP/reaxc_forces_omp.cpp b/src/USER-OMP/reaxc_forces_omp.cpp index e48a5c11d4..381b2e5525 100644 --- a/src/USER-OMP/reaxc_forces_omp.cpp +++ b/src/USER-OMP/reaxc_forces_omp.cpp @@ -26,6 +26,7 @@ . ----------------------------------------------------------------------*/ +#include "omp_compat.h" #include "reaxc_forces_omp.h" #include #include @@ -146,7 +147,7 @@ void Compute_Total_ForceOMP( reax_system *system, control_params *control, reax_list *bonds = (*lists) + BONDS; #if defined(_OPENMP) -#pragma omp parallel default(shared) //default(none) +#pragma omp parallel default(shared) //LMP_DEFAULT_NONE #endif { int i, j, k, pj, pk, start_j, end_j; diff --git a/src/USER-OMP/reaxc_hydrogen_bonds_omp.cpp b/src/USER-OMP/reaxc_hydrogen_bonds_omp.cpp index d06966a92d..22d9df7702 100644 --- a/src/USER-OMP/reaxc_hydrogen_bonds_omp.cpp +++ b/src/USER-OMP/reaxc_hydrogen_bonds_omp.cpp @@ -26,6 +26,7 @@ . ----------------------------------------------------------------------*/ +#include "omp_compat.h" #include "reaxc_hydrogen_bonds_omp.h" #include #include @@ -57,7 +58,7 @@ void Hydrogen_BondsOMP( reax_system *system, control_params *control, const int nthreads = control->nthreads; #if defined(_OPENMP) -#pragma omp parallel default(shared) //default(none) +#pragma omp parallel default(shared) //LMP_DEFAULT_NONE #endif { int i, j, k, pi, pk; diff --git a/src/USER-OMP/respa_omp.cpp b/src/USER-OMP/respa_omp.cpp index 5add419253..b5e5293aa4 100644 --- a/src/USER-OMP/respa_omp.cpp +++ b/src/USER-OMP/respa_omp.cpp @@ -15,6 +15,7 @@ Contributing authors: Mark Stevens (SNL), Paul Crozier (SNL) ------------------------------------------------------------------------- */ +#include "omp_compat.h" #include "respa_omp.h" #include "neighbor.h" #include "comm.h" @@ -146,7 +147,7 @@ void RespaOMP::setup(int flag) const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; #if defined(_OPENMP) -#pragma omp parallel default(none) +#pragma omp parallel LMP_DEFAULT_NONE #endif { #if defined(_OPENMP) @@ -241,7 +242,7 @@ void RespaOMP::setup_minimal(int flag) const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; #if defined(_OPENMP) -#pragma omp parallel default(none) +#pragma omp parallel LMP_DEFAULT_NONE #endif { #if defined(_OPENMP) @@ -394,7 +395,7 @@ void RespaOMP::recurse(int ilevel) const int nall = atom->nlocal + atom->nghost; const int nthreads = comm->nthreads; #if defined(_OPENMP) -#pragma omp parallel default(none) +#pragma omp parallel LMP_DEFAULT_NONE #endif { #if defined(_OPENMP) -- GitLab From 6563331d6e11da18a763143562a3b80b61ee9761 Mon Sep 17 00:00:00 2001 From: Michael Lamparski Date: Fri, 20 Mar 2020 13:21:21 -0400 Subject: [PATCH 051/717] rename to LAMMPS_OMP_COMPAT, improve docs --- cmake/CMakeLists.txt | 4 ++-- cmake/README.md | 10 ++++++++++ doc/src/Build_basics.rst | 3 ++- src/omp_compat.h | 2 +- 4 files changed, 15 insertions(+), 4 deletions(-) diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index 3dea0db8b0..60cbc8e5c0 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -242,9 +242,9 @@ if(BUILD_OMP) if ((CMAKE_CXX_COMPILER_ID STREQUAL "GNU") AND (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 8.99.9)) # GCC 9.x strictly implements OpenMP 4.0 semantics for consts. - add_definitions(-DLMP_OMP_COMPAT=4) + add_definitions(-DLAMMPS_OMP_COMPAT=4) else() - add_definitions(-DLMP_OMP_COMPAT=3) + add_definitions(-DLAMMPS_OMP_COMPAT=3) endif() endif() diff --git a/cmake/README.md b/cmake/README.md index b9dd6d4373..cd90bc7020 100644 --- a/cmake/README.md +++ b/cmake/README.md @@ -264,6 +264,16 @@ cmake -C ../cmake/presets/all_on.cmake -C ../cmake/presets/nolib.cmake -D PKG_GP + + LAMMPS_OMP_COMPAT + Workaround for backwards-incompatible changes regarding predetermined sharing modes in OpenMP 4.x. A value of 3 or 4 should be used, reflecting the version of the OpenMP spec that is implemented by the compiler. + +
    +
    3 (default except for known OMP 4.0 compilers)
    +
    4
    +
    + + LAMMPS_MEMALIGN controls the alignment of blocks of memory allocated by LAMMPS diff --git a/doc/src/Build_basics.rst b/doc/src/Build_basics.rst index 96bc0f5bd1..62b16d9a03 100644 --- a/doc/src/Build_basics.rst +++ b/doc/src/Build_basics.rst @@ -147,7 +147,8 @@ semantics, which are incompatible with the OpenMP 3.1 semantics used in LAMMPS (for maximal compatibility with compiler versions in use). LAMMPS will try to detect compilers that use OpenMP 4.0 semantics and change the directives accordingly, but if your compiler is not -detected, you may set the CMake variable ``-D LMP_OMP_COMPAT=4``. +detected, you may set the define ``-D LAMMPS_OMP_COMPAT=4`` in ``LMP_INC`` +or the CMake build command. ---------- diff --git a/src/omp_compat.h b/src/omp_compat.h index 8abf1c54bc..add429eea8 100644 --- a/src/omp_compat.h +++ b/src/omp_compat.h @@ -25,7 +25,7 @@ // so this is what LAMMPS primarily uses. For those compilers // that strictly implement OpenMP 4.0 (such as GCC 9.0), we // give up default(none). -#if LMP_OMP_COMPAT == 4 +#if LAMMPS_OMP_COMPAT == 4 # define LMP_SHARED(...) # define LMP_DEFAULT_NONE default(shared) #else -- GitLab From 62cb760ee2ea8172f621201f04417c9d60bf9474 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Sun, 22 Mar 2020 14:42:29 -0600 Subject: [PATCH 052/717] cmake: remove LIB_SOURCES and LMP_SOURCES --- cmake/CMakeLists.txt | 30 ++++++++++++------------- cmake/Modules/Packages/CORESHELL.cmake | 2 +- cmake/Modules/Packages/GPU.cmake | 2 +- cmake/Modules/Packages/KOKKOS.cmake | 2 +- cmake/Modules/Packages/OPT.cmake | 2 +- cmake/Modules/Packages/QEQ.cmake | 2 +- cmake/Modules/Packages/USER-INTEL.cmake | 2 +- cmake/Modules/Packages/USER-OMP.cmake | 2 +- cmake/Modules/Packages/USER-SDPD.cmake | 4 +++- 9 files changed, 25 insertions(+), 23 deletions(-) diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index 4dd079eaae..eb5700b19d 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -21,11 +21,6 @@ if (CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) set(CMAKE_INSTALL_PREFIX "$ENV{HOME}/.local" CACHE PATH "default install path" FORCE ) endif() -# To avoid conflicts with the conventional Makefile build system, we build everything here -file(GLOB LIB_SOURCES ${LAMMPS_SOURCE_DIR}/[^.]*.cpp) -file(GLOB LMP_SOURCES ${LAMMPS_SOURCE_DIR}/main.cpp) -list(REMOVE_ITEM LIB_SOURCES ${LMP_SOURCES}) - # Cmake modules/macros are in a subdirectory to keep this file cleaner set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/Modules) @@ -110,8 +105,19 @@ endif() option(BUILD_TOOLS "Build and install LAMMPS tools (msi2lmp, binary2txt, chain)" OFF) -if(NOT BUILD_EXE AND NOT BUILD_LIB) - message(FATAL_ERROR "You need to at least enable one of two following options: BUILD_LIB or BUILD_EXE") +if(BUILD_LIB) + file(GLOB MAIN_SOURCES ${LAMMPS_SOURCE_DIR}/main.cpp) + list(REMOVE_ITEM ALL_SOURCES ${MAIN_SOURCES}) + add_library(lammps ${ALL_SOURCES}) + if(BUILD_EXE) + add_executable(lmp ${MAIN_SOURCES}) + target_link_libraries(lmp PRIVATE lammps) + endif() +else() + if(NOT BUILD_EXE) + message(FATAL_ERROR "You need to at least enable one of two following options: BUILD_LIB or BUILD_EXE") + endif() + add_executable(lammps ${ALL_SOURCES}) endif() option(CMAKE_VERBOSE_MAKEFILE "Generate verbose Makefiles" OFF) @@ -391,7 +397,7 @@ foreach(PKG ${DEFAULT_PACKAGES}) # detects styles in package and adds them to global list RegisterStyles(${${PKG}_SOURCES_DIR}) - list(APPEND LIB_SOURCES ${${PKG}_SOURCES}) + target_sources(lammps PRIVATE ${${PKG}_SOURCES}) include_directories(${${PKG}_SOURCES_DIR}) endif() @@ -533,7 +539,6 @@ if (${_index} GREATER -1) endif() list(REMOVE_DUPLICATES LAMMPS_LINK_LIBS) if(BUILD_LIB) - add_library(lammps ${LIB_SOURCES}) target_link_libraries(lammps ${LAMMPS_LINK_LIBS}) if(LAMMPS_DEPS) add_dependencies(lammps ${LAMMPS_DEPS}) @@ -579,15 +584,10 @@ if(BUILD_LIB) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/liblammps${LAMMPS_LIB_SUFFIX}.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) configure_file(FindLAMMPS.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/FindLAMMPS${LAMMPS_LIB_SUFFIX}.cmake @ONLY) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/FindLAMMPS${LAMMPS_LIB_SUFFIX}.cmake DESTINATION ${CMAKE_INSTALL_DATADIR}/cmake/Modules) -else() - list(APPEND LMP_SOURCES ${LIB_SOURCES}) endif() if(BUILD_EXE) - add_executable(lmp ${LMP_SOURCES}) - if(BUILD_LIB) - target_link_libraries(lmp lammps) - else() + if(NOT BUILD_LIB) target_link_libraries(lmp ${LAMMPS_LINK_LIBS}) if(LAMMPS_DEPS) add_dependencies(lmp ${LAMMPS_DEPS}) diff --git a/cmake/Modules/Packages/CORESHELL.cmake b/cmake/Modules/Packages/CORESHELL.cmake index 591477c899..2afe2b8c1b 100644 --- a/cmake/Modules/Packages/CORESHELL.cmake +++ b/cmake/Modules/Packages/CORESHELL.cmake @@ -8,6 +8,6 @@ if(PKG_CORESHELL) get_property(CORESHELL_SOURCES GLOBAL PROPERTY CORESHELL_SOURCES) - list(APPEND LIB_SOURCES ${CORESHELL_SOURCES}) + target_sources(lammps PRIVATE ${CORESHELL_SOURCES}) include_directories(${CORESHELL_SOURCES_DIR}) endif() diff --git a/cmake/Modules/Packages/GPU.cmake b/cmake/Modules/Packages/GPU.cmake index abbcb1f495..e8ca4d35ab 100644 --- a/cmake/Modules/Packages/GPU.cmake +++ b/cmake/Modules/Packages/GPU.cmake @@ -192,6 +192,6 @@ if(PKG_GPU) get_property(GPU_SOURCES GLOBAL PROPERTY GPU_SOURCES) - list(APPEND LIB_SOURCES ${GPU_SOURCES}) + target_sources(lammps PRIVATE ${GPU_SOURCES}) include_directories(${GPU_SOURCES_DIR}) endif() diff --git a/cmake/Modules/Packages/KOKKOS.cmake b/cmake/Modules/Packages/KOKKOS.cmake index 29beaca957..4b871ccb46 100644 --- a/cmake/Modules/Packages/KOKKOS.cmake +++ b/cmake/Modules/Packages/KOKKOS.cmake @@ -69,6 +69,6 @@ if(PKG_KOKKOS) get_property(KOKKOS_PKG_SOURCES GLOBAL PROPERTY KOKKOS_PKG_SOURCES) - list(APPEND LIB_SOURCES ${KOKKOS_PKG_SOURCES}) + target_sources(lammps PRIVATE ${KOKKOS_PKG_SOURCES}) include_directories(${KOKKOS_PKG_SOURCES_DIR}) endif() diff --git a/cmake/Modules/Packages/OPT.cmake b/cmake/Modules/Packages/OPT.cmake index f2802c757b..02e3877c59 100644 --- a/cmake/Modules/Packages/OPT.cmake +++ b/cmake/Modules/Packages/OPT.cmake @@ -8,6 +8,6 @@ if(PKG_OPT) get_property(OPT_SOURCES GLOBAL PROPERTY OPT_SOURCES) - list(APPEND LIB_SOURCES ${OPT_SOURCES}) + target_sources(lammps PRIVATE ${OPT_SOURCES}) include_directories(${OPT_SOURCES_DIR}) endif() diff --git a/cmake/Modules/Packages/QEQ.cmake b/cmake/Modules/Packages/QEQ.cmake index 94cca30540..9b151c2610 100644 --- a/cmake/Modules/Packages/QEQ.cmake +++ b/cmake/Modules/Packages/QEQ.cmake @@ -15,6 +15,6 @@ if(PKG_QEQ) endforeach() get_property(QEQ_SOURCES GLOBAL PROPERTY QEQ_SOURCES) - list(APPEND LIB_SOURCES ${QEQ_SOURCES}) + target_sources(lammps PRIVATE ${QEQ_SOURCES}) include_directories(${QEQ_SOURCES_DIR}) endif() diff --git a/cmake/Modules/Packages/USER-INTEL.cmake b/cmake/Modules/Packages/USER-INTEL.cmake index d0941a0a12..7b08a7b459 100644 --- a/cmake/Modules/Packages/USER-INTEL.cmake +++ b/cmake/Modules/Packages/USER-INTEL.cmake @@ -108,6 +108,6 @@ if(PKG_USER-INTEL) RegisterIntegrateStyle(${USER-INTEL_SOURCES_DIR}/verlet_lrt_intel.h) endif() - list(APPEND LIB_SOURCES ${USER-INTEL_SOURCES}) + target_sources(lammps PRIVATE ${USER-INTEL_SOURCES}) include_directories(${USER-INTEL_SOURCES_DIR}) endif() diff --git a/cmake/Modules/Packages/USER-OMP.cmake b/cmake/Modules/Packages/USER-OMP.cmake index 668f42f10a..4b1a4b1571 100644 --- a/cmake/Modules/Packages/USER-OMP.cmake +++ b/cmake/Modules/Packages/USER-OMP.cmake @@ -37,6 +37,6 @@ if(PKG_USER-OMP) ${USER-OMP_SOURCES_DIR}/reaxc_valence_angles_omp.cpp) endif() - list(APPEND LIB_SOURCES ${USER-OMP_SOURCES}) + target_sources(lammps PRIVATE ${USER-OMP_SOURCES}) include_directories(${USER-OMP_SOURCES_DIR}) endif() diff --git a/cmake/Modules/Packages/USER-SDPD.cmake b/cmake/Modules/Packages/USER-SDPD.cmake index 530dcf2bd9..1105fbd7ce 100644 --- a/cmake/Modules/Packages/USER-SDPD.cmake +++ b/cmake/Modules/Packages/USER-SDPD.cmake @@ -5,7 +5,9 @@ if(PKG_USER-SDPD) get_property(hlist GLOBAL PROPERTY FIX) if(NOT PKG_RIGID) list(REMOVE_ITEM hlist ${USER-SDPD_SOURCES_DIR}/fix_rigid_meso.h) - list(REMOVE_ITEM LIB_SOURCES ${USER-SDPD_SOURCES_DIR}/fix_rigid_meso.cpp) + get_target_property(LAMMPS_SOURCES lammps SOURCES) + list(REMOVE_ITEM LAMMPS_SOURCES ${USER-SDPD_SOURCES_DIR}/fix_rigid_meso.cpp) + set_property(TARGET lammps PROPERTY SOURCES ${LAMMPS_SOURCES}) endif() set_property(GLOBAL PROPERTY FIX "${hlist}") -- GitLab From cd89a7c4b7edb877694e07a91edc558a94845f12 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Sun, 22 Mar 2020 18:03:07 -0600 Subject: [PATCH 053/717] cmake: fix renamed target for exe --- cmake/CMakeLists.txt | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index eb5700b19d..0fae7f55bf 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -105,12 +105,14 @@ endif() option(BUILD_TOOLS "Build and install LAMMPS tools (msi2lmp, binary2txt, chain)" OFF) +file(GLOB ALL_SOURCES ${LAMMPS_SOURCE_DIR}/[^.]*.cpp) if(BUILD_LIB) file(GLOB MAIN_SOURCES ${LAMMPS_SOURCE_DIR}/main.cpp) list(REMOVE_ITEM ALL_SOURCES ${MAIN_SOURCES}) add_library(lammps ${ALL_SOURCES}) if(BUILD_EXE) add_executable(lmp ${MAIN_SOURCES}) + set(LAMMPS_EXE lmp) target_link_libraries(lmp PRIVATE lammps) endif() else() @@ -118,6 +120,7 @@ else() message(FATAL_ERROR "You need to at least enable one of two following options: BUILD_LIB or BUILD_EXE") endif() add_executable(lammps ${ALL_SOURCES}) + set(LAMMPS_EXE lammps) endif() option(CMAKE_VERBOSE_MAKEFILE "Generate verbose Makefiles" OFF) @@ -588,14 +591,14 @@ endif() if(BUILD_EXE) if(NOT BUILD_LIB) - target_link_libraries(lmp ${LAMMPS_LINK_LIBS}) + target_link_libraries(${LAMMPS_EXE} ${LAMMPS_LINK_LIBS}) if(LAMMPS_DEPS) - add_dependencies(lmp ${LAMMPS_DEPS}) + add_dependencies(${LAMMPS_EXE} ${LAMMPS_DEPS}) endif() endif() - set_target_properties(lmp PROPERTIES OUTPUT_NAME ${LAMMPS_BINARY}) - install(TARGETS lmp DESTINATION ${CMAKE_INSTALL_BINDIR}) + set_target_properties(${LAMMPS_EXE} PROPERTIES OUTPUT_NAME ${LAMMPS_BINARY}) + install(TARGETS ${LAMMPS_EXE} DESTINATION ${CMAKE_INSTALL_BINDIR}) install(FILES ${LAMMPS_DOC_DIR}/lammps.1 DESTINATION ${CMAKE_INSTALL_MANDIR}/man1 RENAME ${LAMMPS_BINARY}.1) endif() -- GitLab From 5828815b3ec50845be1a312056de559c05bbff1a Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Sun, 22 Mar 2020 18:55:53 -0600 Subject: [PATCH 054/717] cmake: remove LAMMPS_LINK_LIBS --- cmake/CMakeLists.txt | 28 ++++++---------- cmake/Modules/Packages/COMPRESS.cmake | 3 +- cmake/Modules/Packages/GPU.cmake | 4 +-- cmake/Modules/Packages/KIM.cmake | 5 ++- cmake/Modules/Packages/KOKKOS.cmake | 6 ++-- cmake/Modules/Packages/KSPACE.cmake | 6 ++-- cmake/Modules/Packages/LATTE.cmake | 2 +- cmake/Modules/Packages/MESSAGE.cmake | 2 +- cmake/Modules/Packages/MSCG.cmake | 2 +- cmake/Modules/Packages/PYTHON.cmake | 2 +- cmake/Modules/Packages/USER-COLVARS.cmake | 4 +-- cmake/Modules/Packages/USER-INTEL.cmake | 6 ++-- cmake/Modules/Packages/USER-MOLFILE.cmake | 2 +- cmake/Modules/Packages/USER-NETCDF.cmake | 4 +-- cmake/Modules/Packages/USER-PLUMED.cmake | 8 ++--- cmake/Modules/Packages/USER-QMMM.cmake | 2 +- cmake/Modules/Packages/USER-QUIP.cmake | 2 +- cmake/Modules/Packages/USER-SCAFACOS.cmake | 38 +++++++++++----------- cmake/Modules/Packages/USER-VTK.cmake | 2 +- cmake/Modules/Packages/VORONOI.cmake | 2 +- 20 files changed, 60 insertions(+), 70 deletions(-) diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index 0fae7f55bf..9190374a2e 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -126,7 +126,6 @@ endif() option(CMAKE_VERBOSE_MAKEFILE "Generate verbose Makefiles" OFF) include(GNUInstallDirs) -set(LAMMPS_LINK_LIBS) set(LAMMPS_DEPS) set(LAMMPS_API_DEFINES) @@ -173,7 +172,7 @@ if(PKG_USER-ADIOS) # script that defines the MPI::MPI_C target enable_language(C) find_package(ADIOS2 REQUIRED) - list(APPEND LAMMPS_LINK_LIBS adios2::adios2) + target_link_libraries(lammps PRIVATE adios2::adios2) endif() # do MPI detection after language activation, @@ -188,9 +187,8 @@ if(BUILD_MPI) include(MPI4WIN) else() find_package(MPI REQUIRED) - include_directories(${MPI_CXX_INCLUDE_PATH}) add_definitions(-DMPICH_SKIP_MPICXX -DOMPI_SKIP_MPICXX=1) - list(APPEND LAMMPS_LINK_LIBS ${MPI_CXX_LIBRARIES}) + target_link_libraries(lammps PRIVATE MPI::MPI_CXX) option(LAMMPS_LONGLONG_TO_LONG "Workaround if your system or MPI version does not recognize 'long long' data types" OFF) if(LAMMPS_LONGLONG_TO_LONG) add_definitions(-DLAMMPS_LONGLONG_TO_LONG) @@ -201,7 +199,7 @@ else() file(GLOB MPI_SOURCES ${LAMMPS_SOURCE_DIR}/STUBS/mpi.c) add_library(mpi_stubs STATIC ${MPI_SOURCES}) include_directories(${LAMMPS_SOURCE_DIR}/STUBS) - list(APPEND LAMMPS_LINK_LIBS mpi_stubs) + target_link_libraries(lammps PRIVATE mpi_stubs) endif() set(LAMMPS_SIZES "smallbig" CACHE STRING "LAMMPS integer sizes (smallsmall: all 32-bit, smallbig: 64-bit #atoms #timesteps, bigbig: also 64-bit imageint, 64-bit atom ids)") @@ -284,8 +282,7 @@ option(WITH_JPEG "Enable JPEG support" ${JPEG_FOUND}) if(WITH_JPEG) find_package(JPEG REQUIRED) add_definitions(-DLAMMPS_JPEG) - include_directories(${JPEG_INCLUDE_DIR}) - list(APPEND LAMMPS_LINK_LIBS ${JPEG_LIBRARIES}) + target_link_libraries(lammps PRIVATE JPEG::JPEG) endif() find_package(PNG QUIET) @@ -298,8 +295,7 @@ endif() if(WITH_PNG) find_package(PNG REQUIRED) find_package(ZLIB REQUIRED) - include_directories(${PNG_INCLUDE_DIRS} ${ZLIB_INCLUDE_DIRS}) - list(APPEND LAMMPS_LINK_LIBS ${PNG_LIBRARIES} ${ZLIB_LIBRARIES}) + target_link_libraries(lammps PRIVATE PNG::PNG ZLIB::ZLIB) add_definitions(-DLAMMPS_PNG) endif() @@ -376,7 +372,7 @@ include(CheckLibraryExists) # message(FATAL_ERROR "Could not find needed math function - ${FUNC}") # endif(NOT FOUND_${FUNC}_${MATH_LIBRARIES}) #endforeach(FUNC) -list(APPEND LAMMPS_LINK_LIBS ${MATH_LIBRARIES}) +target_link_libraries(lammps PRIVATE ${MATH_LIBRARIES}) ###################################### # Generate Basic Style files @@ -442,7 +438,7 @@ foreach(SIMPLE_LIB POEMS USER-ATC USER-AWPMD USER-H5MD) if(LAMMPS_USE_MPI4WIN) add_dependencies(${PKG_LIB} mpi4win_build) endif() - list(APPEND LAMMPS_LINK_LIBS ${PKG_LIB}) + target_link_libraries(lammps PRIVATE ${PKG_LIB}) if(PKG_LIB STREQUAL awpmd) target_include_directories(awpmd PUBLIC ${LAMMPS_LIB_SOURCE_DIR}/awpmd/systems/interact ${LAMMPS_LIB_SOURCE_DIR}/awpmd/ivutils/include) elseif(PKG_LIB STREQUAL h5md) @@ -486,9 +482,9 @@ include(Packages/GPU) ###################################################################### if(${CMAKE_SYSTEM_NAME} STREQUAL "Windows") if(LAMMPS_USE_MPI4WIN) - list(APPEND LAMMPS_LINK_LIBS ${MPI4WIN_LIBRARIES}) + target_link_libraries(lammps PRIVATE ${MPI4WIN_LIBRARIES}) endif() - list(APPEND LAMMPS_LINK_LIBS -lwsock32 -lpsapi) + target_link_libraries(lammps PRIVATE -lwsock32 -lpsapi) endif() ###################################################### @@ -538,11 +534,9 @@ list(APPEND LAMMPS_DEPS gitversion) get_property(LANGUAGES GLOBAL PROPERTY ENABLED_LANGUAGES) list (FIND LANGUAGES "Fortran" _index) if (${_index} GREATER -1) - list(APPEND LAMMPS_LINK_LIBS ${CMAKE_Fortran_IMPLICIT_LINK_LIBRARIES}) + target_link_libraries(lammps PRIVATE ${CMAKE_Fortran_IMPLICIT_LINK_LIBRARIES}) endif() -list(REMOVE_DUPLICATES LAMMPS_LINK_LIBS) if(BUILD_LIB) - target_link_libraries(lammps ${LAMMPS_LINK_LIBS}) if(LAMMPS_DEPS) add_dependencies(lammps ${LAMMPS_DEPS}) endif() @@ -591,7 +585,6 @@ endif() if(BUILD_EXE) if(NOT BUILD_LIB) - target_link_libraries(${LAMMPS_EXE} ${LAMMPS_LINK_LIBS}) if(LAMMPS_DEPS) add_dependencies(${LAMMPS_EXE} ${LAMMPS_DEPS}) endif() @@ -736,7 +729,6 @@ if(BUILD_SHARED_LIBS) else() message(STATUS "Static library flags: ${CMAKE_STATIC_LINKER_FLAGS}") endif() -message(STATUS "Link libraries: ${LAMMPS_LINK_LIBS}") if(BUILD_MPI) message(STATUS "Using MPI with headers in ${MPI_CXX_INCLUDE_PATH} and these libraries: ${MPI_CXX_LIBRARIES};${MPI_Fortran_LIBRARIES}") endif() diff --git a/cmake/Modules/Packages/COMPRESS.cmake b/cmake/Modules/Packages/COMPRESS.cmake index 864b868865..ea5d5e37bd 100644 --- a/cmake/Modules/Packages/COMPRESS.cmake +++ b/cmake/Modules/Packages/COMPRESS.cmake @@ -1,5 +1,4 @@ if(PKG_COMPRESS) find_package(ZLIB REQUIRED) - include_directories(${ZLIB_INCLUDE_DIRS}) - list(APPEND LAMMPS_LINK_LIBS ${ZLIB_LIBRARIES}) + target_link_libraries(lammps PRIVATE ZLIB::ZLIB) endif() diff --git a/cmake/Modules/Packages/GPU.cmake b/cmake/Modules/Packages/GPU.cmake index e8ca4d35ab..427644f9c7 100644 --- a/cmake/Modules/Packages/GPU.cmake +++ b/cmake/Modules/Packages/GPU.cmake @@ -107,7 +107,7 @@ if(PKG_GPU) target_compile_definitions(gpu PRIVATE -DUSE_CUDPP) endif() - list(APPEND LAMMPS_LINK_LIBS gpu) + target_link_libraries(lammps PRIVATE gpu) if(LAMMPS_USE_MPI4WIN) add_dependencies(gpu mpi4win_build) endif() @@ -171,7 +171,7 @@ if(PKG_GPU) target_compile_definitions(gpu PRIVATE -D_${GPU_PREC_SETTING} -D${OCL_TUNE}_OCL -DMPI_GERYON -DUCL_NO_EXIT) target_compile_definitions(gpu PRIVATE -DUSE_OPENCL) - list(APPEND LAMMPS_LINK_LIBS gpu) + target_link_libraries(lammps PRIVATE gpu) if(LAMMPS_USE_MPI4WIN) add_dependencies(gpu mpi4win_build) endif() diff --git a/cmake/Modules/Packages/KIM.cmake b/cmake/Modules/Packages/KIM.cmake index 617068ce13..002fbbcaed 100644 --- a/cmake/Modules/Packages/KIM.cmake +++ b/cmake/Modules/Packages/KIM.cmake @@ -2,8 +2,7 @@ if(PKG_KIM) set(KIM-API_MIN_VERSION 2.1) find_package(CURL) if(CURL_FOUND) - include_directories(${CURL_INCLUDE_DIRS}) - list(APPEND LAMMPS_LINK_LIBS ${CURL_LIBRARIES}) + target_link_libraries(lammps PRIVATE CURL::libcurl) add_definitions(-DLMP_KIM_CURL) set(LMP_DEBUG_CURL OFF CACHE STRING "Set libcurl verbose mode on/off. If on, it displays a lot of verbose information about its operations.") mark_as_advanced(LMP_DEBUG_CURL) @@ -62,6 +61,6 @@ if(PKG_KIM) else() find_package(KIM-API ${KIM-API_MIN_VERSION} REQUIRED) endif() - list(APPEND LAMMPS_LINK_LIBS "${KIM-API_LDFLAGS}") + target_link_libraries(lammps PRIVATE "${KIM-API_LDFLAGS}") include_directories(${KIM-API_INCLUDE_DIRS}) endif() diff --git a/cmake/Modules/Packages/KOKKOS.cmake b/cmake/Modules/Packages/KOKKOS.cmake index 4b871ccb46..58d2c139f6 100644 --- a/cmake/Modules/Packages/KOKKOS.cmake +++ b/cmake/Modules/Packages/KOKKOS.cmake @@ -5,7 +5,7 @@ if(PKG_KOKKOS) option(EXTERNAL_KOKKOS "Build against external kokkos library") if(EXTERNAL_KOKKOS) find_package(Kokkos REQUIRED) - list(APPEND LAMMPS_LINK_LIBS Kokkos::kokkos) + target_link_libraries(lammps PRIVATE Kokkos::kokkos) else() set(LAMMPS_LIB_KOKKOS_SRC_DIR ${LAMMPS_LIB_SOURCE_DIR}/kokkos) set(LAMMPS_LIB_KOKKOS_BIN_DIR ${LAMMPS_LIB_BINARY_DIR}/kokkos) @@ -16,7 +16,7 @@ if(PKG_KOKKOS) ${LAMMPS_LIB_KOKKOS_SRC_DIR}/algorithms/src ${LAMMPS_LIB_KOKKOS_BIN_DIR}) include_directories(${Kokkos_INCLUDE_DIRS}) - list(APPEND LAMMPS_LINK_LIBS kokkos) + target_link_libraries(lammps PRIVATE kokkos) endif() add_definitions(-DLMP_KOKKOS) @@ -45,7 +45,7 @@ if(PKG_KOKKOS) if(KOKKOS_ENABLE_CUDA) if(NOT ${FFT} STREQUAL "KISS") add_definitions(-DFFT_CUFFT) - list(APPEND LAMMPS_LINK_LIBS cufft) + target_link_libraries(lammps PRIVATE cufft) endif() endif() endif() diff --git a/cmake/Modules/Packages/KSPACE.cmake b/cmake/Modules/Packages/KSPACE.cmake index 07612447f9..4f92a6963c 100644 --- a/cmake/Modules/Packages/KSPACE.cmake +++ b/cmake/Modules/Packages/KSPACE.cmake @@ -20,7 +20,7 @@ if(PKG_KSPACE) find_package(${FFTW} REQUIRED) add_definitions(-DFFT_FFTW3) include_directories(${${FFTW}_INCLUDE_DIRS}) - list(APPEND LAMMPS_LINK_LIBS ${${FFTW}_LIBRARIES}) + target_link_libraries(lammps PRIVATE ${${FFTW}_LIBRARIES}) if(FFTW3_OMP_LIBRARY OR FFTW3F_OMP_LIBRARY) option(FFT_FFTW_THREADS "Use threaded FFTW library" ON) else() @@ -30,7 +30,7 @@ if(PKG_KSPACE) if(FFT_FFTW_THREADS) if(FFTW3_OMP_LIBRARY OR FFTW3F_OMP_LIBRARY) add_definitions(-DFFT_FFTW_THREADS) - list(APPEND LAMMPS_LINK_LIBS ${${FFTW}_OMP_LIBRARIES}) + target_link_libraries(lammps PRIVATE ${${FFTW}_OMP_LIBRARIES}) else() message(FATAL_ERROR "Need OpenMP enabled FFTW3 library for FFT_THREADS") endif() @@ -43,7 +43,7 @@ if(PKG_KSPACE) add_definitions(-DFFT_MKL_THREADS) endif() include_directories(${MKL_INCLUDE_DIRS}) - list(APPEND LAMMPS_LINK_LIBS ${MKL_LIBRARIES}) + target_link_libraries(lammps PRIVATE ${MKL_LIBRARIES}) else() # last option is KISSFFT add_definitions(-DFFT_KISS) diff --git a/cmake/Modules/Packages/LATTE.cmake b/cmake/Modules/Packages/LATTE.cmake index 9f665d7f0e..55d9b31797 100644 --- a/cmake/Modules/Packages/LATTE.cmake +++ b/cmake/Modules/Packages/LATTE.cmake @@ -36,5 +36,5 @@ if(PKG_LATTE) if(NOT LAPACK_FOUND) add_dependencies(latte_build linalg) endif() - list(APPEND LAMMPS_LINK_LIBS ${LATTE_LIBRARIES} ${LAPACK_LIBRARIES}) + target_link_libraries(lammps PRIVATE ${LATTE_LIBRARIES} ${LAPACK_LIBRARIES}) endif() diff --git a/cmake/Modules/Packages/MESSAGE.cmake b/cmake/Modules/Packages/MESSAGE.cmake index aff9c2964a..c28c50c507 100644 --- a/cmake/Modules/Packages/MESSAGE.cmake +++ b/cmake/Modules/Packages/MESSAGE.cmake @@ -27,6 +27,6 @@ if(PKG_MESSAGE) target_include_directories(cslib PRIVATE ${LAMMPS_LIB_SOURCE_DIR}/message/cslib/src/STUBS_ZMQ) endif() - list(APPEND LAMMPS_LINK_LIBS cslib) + target_link_libraries(lammps PRIVATE cslib) include_directories(${LAMMPS_LIB_SOURCE_DIR}/message/cslib/src) endif() diff --git a/cmake/Modules/Packages/MSCG.cmake b/cmake/Modules/Packages/MSCG.cmake index 35f0c57449..e300ed6ae2 100644 --- a/cmake/Modules/Packages/MSCG.cmake +++ b/cmake/Modules/Packages/MSCG.cmake @@ -43,6 +43,6 @@ if(PKG_MSCG) message(FATAL_ERROR "MSCG not found, help CMake to find it by setting MSCG_LIBRARY and MSCG_INCLUDE_DIRS, or set DOWNLOAD_MSCG=ON to download it") endif() endif() - list(APPEND LAMMPS_LINK_LIBS ${MSCG_LIBRARIES} ${GSL_LIBRARIES} ${LAPACK_LIBRARIES}) + target_link_libraries(lammps PRIVATE ${MSCG_LIBRARIES} GSL::gsl ${LAPACK_LIBRARIES}) include_directories(${MSCG_INCLUDE_DIRS}) endif() diff --git a/cmake/Modules/Packages/PYTHON.cmake b/cmake/Modules/Packages/PYTHON.cmake index 4f8959ae38..7d6e2999f7 100644 --- a/cmake/Modules/Packages/PYTHON.cmake +++ b/cmake/Modules/Packages/PYTHON.cmake @@ -2,5 +2,5 @@ if(PKG_PYTHON) find_package(PythonLibs REQUIRED) add_definitions(-DLMP_PYTHON) include_directories(${PYTHON_INCLUDE_DIR}) - list(APPEND LAMMPS_LINK_LIBS ${PYTHON_LIBRARY}) + target_link_libraries(lammps PRIVATE ${PYTHON_LIBRARY}) endif() diff --git a/cmake/Modules/Packages/USER-COLVARS.cmake b/cmake/Modules/Packages/USER-COLVARS.cmake index a112fbb6aa..2a337b9c8b 100644 --- a/cmake/Modules/Packages/USER-COLVARS.cmake +++ b/cmake/Modules/Packages/USER-COLVARS.cmake @@ -16,10 +16,10 @@ if(PKG_USER-COLVARS) add_library(colvars STATIC ${COLVARS_SOURCES}) target_include_directories(colvars PUBLIC ${LAMMPS_LIB_SOURCE_DIR}/colvars) - list(APPEND LAMMPS_LINK_LIBS colvars) + target_link_libraries(lammps PRIVATE colvars) if(COLVARS_LEPTON) - list(APPEND LAMMPS_LINK_LIBS lepton) + target_link_libraries(lammps PRIVATE lepton) target_compile_options(colvars PRIVATE -DLEPTON) target_include_directories(colvars PUBLIC ${LEPTON_DIR}/include) endif() diff --git a/cmake/Modules/Packages/USER-INTEL.cmake b/cmake/Modules/Packages/USER-INTEL.cmake index 7b08a7b459..0a9b634bc7 100644 --- a/cmake/Modules/Packages/USER-INTEL.cmake +++ b/cmake/Modules/Packages/USER-INTEL.cmake @@ -25,7 +25,7 @@ if(PKG_USER-INTEL) if(INTEL_LRT_MODE STREQUAL "THREADS") if(Threads_FOUND) add_definitions(-DLMP_INTEL_USELRT) - list(APPEND LAMMPS_LINK_LIBS ${CMAKE_THREAD_LIBS_INIT}) + target_link_libraries(lammps PRIVATE Threads::Threads) else() message(FATAL_ERROR "Must have working threads library for Long-range thread support") endif() @@ -44,7 +44,7 @@ if(PKG_USER-INTEL) find_package(TBB QUIET) if(TBB_FOUND) - list(APPEND LAMMPS_LINK_LIBS ${TBB_MALLOC_LIBRARIES}) + target_link_libraries(lammps PRIVATE ${TBB_MALLOC_LIBRARIES}) else() add_definitions(-DLMP_INTEL_NO_TBB) if(CMAKE_CXX_COMPILER_ID STREQUAL "Intel") @@ -55,7 +55,7 @@ if(PKG_USER-INTEL) find_package(MKL QUIET) if(MKL_FOUND) add_definitions(-DLMP_USE_MKL_RNG) - list(APPEND LAMMPS_LINK_LIBS ${MKL_LIBRARIES}) + target_link_libraries(lammps PRIVATE ${MKL_LIBRARIES}) else() message(STATUS "Pair style dpd/intel will be faster with MKL libraries") endif() diff --git a/cmake/Modules/Packages/USER-MOLFILE.cmake b/cmake/Modules/Packages/USER-MOLFILE.cmake index 16ffc34994..cbba1eee7b 100644 --- a/cmake/Modules/Packages/USER-MOLFILE.cmake +++ b/cmake/Modules/Packages/USER-MOLFILE.cmake @@ -6,5 +6,5 @@ if(PKG_USER-MOLFILE) if(NOT ${CMAKE_SYSTEM_NAME} STREQUAL "Windows") target_link_libraries(molfile INTERFACE ${CMAKE_DL_LIBS}) endif() - list(APPEND LAMMPS_LINK_LIBS molfile) + target_link_libraries(lammps PRIVATE molfile) endif() diff --git a/cmake/Modules/Packages/USER-NETCDF.cmake b/cmake/Modules/Packages/USER-NETCDF.cmake index 921156f1e0..8d62f5f7ec 100644 --- a/cmake/Modules/Packages/USER-NETCDF.cmake +++ b/cmake/Modules/Packages/USER-NETCDF.cmake @@ -10,13 +10,13 @@ if(PKG_USER-NETCDF) if(NETCDF_FOUND) include_directories(${NETCDF_INCLUDE_DIRS}) - list(APPEND LAMMPS_LINK_LIBS ${NETCDF_LIBRARIES}) + target_link_libraries(lammps PRIVATE ${NETCDF_LIBRARIES}) add_definitions(-DLMP_HAS_NETCDF) endif(NETCDF_FOUND) if(PNETCDF_FOUND) include_directories(${PNETCDF_INCLUDES}) - list(APPEND LAMMPS_LINK_LIBS ${PNETCDF_LIBRARIES}) + target_link_libraries(lammps PRIVATE ${PNETCDF_LIBRARIES}) add_definitions(-DLMP_HAS_PNETCDF) endif(PNETCDF_FOUND) diff --git a/cmake/Modules/Packages/USER-PLUMED.cmake b/cmake/Modules/Packages/USER-PLUMED.cmake index 426ae2df2a..9669f1955c 100644 --- a/cmake/Modules/Packages/USER-PLUMED.cmake +++ b/cmake/Modules/Packages/USER-PLUMED.cmake @@ -70,12 +70,12 @@ if(PKG_USER-PLUMED) list(APPEND LAMMPS_DEPS plumed_build) if(PLUMED_MODE STREQUAL "STATIC") add_definitions(-D__PLUMED_WRAPPER_CXX=1) - list(APPEND LAMMPS_LINK_LIBS ${PLUMED_INSTALL_DIR}/lib/libplumed.a ${PLUMED_LINK_LIBS} ${CMAKE_DL_LIBS}) + target_link_libraries(lammps ${PLUMED_INSTALL_DIR}/lib/libplumed.a ${PLUMED_LINK_LIBS} ${CMAKE_DL_LIBS}) elseif(PLUMED_MODE STREQUAL "SHARED") - list(APPEND LAMMPS_LINK_LIBS ${PLUMED_INSTALL_DIR}/lib/libplumed${CMAKE_SHARED_LIBRARY_SUFFIX} ${PLUMED_INSTALL_DIR}/lib/libplumedKernel${CMAKE_SHARED_LIBRARY_SUFFIX} ${CMAKE_DL_LIBS}) + target_link_libraries(lammps PRIVATE ${PLUMED_INSTALL_DIR}/lib/libplumed${CMAKE_SHARED_LIBRARY_SUFFIX} ${PLUMED_INSTALL_DIR}/lib/libplumedKernel${CMAKE_SHARED_LIBRARY_SUFFIX} ${CMAKE_DL_LIBS}) elseif(PLUMED_MODE STREQUAL "RUNTIME") add_definitions(-D__PLUMED_HAS_DLOPEN=1 -D__PLUMED_DEFAULT_KERNEL=${PLUMED_INSTALL_DIR}/lib/libplumedKernel${CMAKE_SHARED_LIBRARY_SUFFIX}) - list(APPEND LAMMPS_LINK_LIBS ${PLUMED_INSTALL_DIR}/lib/libplumedWrapper.a -rdynamic ${CMAKE_DL_LIBS}) + target_link_libraries(lammps PRIVATE ${PLUMED_INSTALL_DIR}/lib/libplumedWrapper.a -rdynamic ${CMAKE_DL_LIBS}) endif() set(PLUMED_INCLUDE_DIRS "${PLUMED_INSTALL_DIR}/include") else() @@ -90,7 +90,7 @@ if(PKG_USER-PLUMED) add_definitions(-D__PLUMED_HAS_DLOPEN=1 -D__PLUMED_DEFAULT_KERNEL=${PLUMED_LIBDIR}/libplumedKernel${CMAKE_SHARED_LIBRARY_SUFFIX}) include(${PLUMED_LIBDIR}/plumed/src/lib/Plumed.cmake.runtime) endif() - list(APPEND LAMMPS_LINK_LIBS ${PLUMED_LOAD}) + target_link_libraries(lammps PRIVATE ${PLUMED_LOAD}) endif() include_directories(${PLUMED_INCLUDE_DIRS}) endif() diff --git a/cmake/Modules/Packages/USER-QMMM.cmake b/cmake/Modules/Packages/USER-QMMM.cmake index 544455868e..0f3fa93b2a 100644 --- a/cmake/Modules/Packages/USER-QMMM.cmake +++ b/cmake/Modules/Packages/USER-QMMM.cmake @@ -8,6 +8,6 @@ if(PKG_USER-QMMM) message(WARNING "It is recommended to use BUILD_SHARED_LIBS=yes with USER-QMMM") endif() add_library(qmmm STATIC ${LAMMPS_LIB_SOURCE_DIR}/qmmm/libqmmm.c) - list(APPEND LAMMPS_LINK_LIBS qmmm) + target_link_libraries(lammps PRIVATE qmmm) target_include_directories(qmmm PUBLIC ${LAMMPS_LIB_SOURCE_DIR}/qmmm) endif() diff --git a/cmake/Modules/Packages/USER-QUIP.cmake b/cmake/Modules/Packages/USER-QUIP.cmake index 93096a2f54..52ba7e9c47 100644 --- a/cmake/Modules/Packages/USER-QUIP.cmake +++ b/cmake/Modules/Packages/USER-QUIP.cmake @@ -1,5 +1,5 @@ if(PKG_USER-QUIP) enable_language(Fortran) find_package(QUIP REQUIRED) - list(APPEND LAMMPS_LINK_LIBS ${QUIP_LIBRARIES} ${LAPACK_LIBRARIES}) + target_link_libraries(lammps PRIVATE ${LAPACK_LIBRARIES}) endif() diff --git a/cmake/Modules/Packages/USER-SCAFACOS.cmake b/cmake/Modules/Packages/USER-SCAFACOS.cmake index 8bb9e63605..0fac1fe919 100644 --- a/cmake/Modules/Packages/USER-SCAFACOS.cmake +++ b/cmake/Modules/Packages/USER-SCAFACOS.cmake @@ -49,28 +49,28 @@ if(PKG_USER-SCAFACOS) set(SCAFACOS_INCLUDE_DIRS ${SCAFACOS_BUILD_DIR}/include) list(APPEND LAMMPS_DEPS scafacos_build) # list and order from pkg_config file of ScaFaCoS build - list(APPEND LAMMPS_LINK_LIBS ${SCAFACOS_BUILD_DIR}/lib/libfcs.a) - list(APPEND LAMMPS_LINK_LIBS ${SCAFACOS_BUILD_DIR}/lib/libfcs_direct.a) - list(APPEND LAMMPS_LINK_LIBS ${SCAFACOS_BUILD_DIR}/lib/libfcs_ewald.a) - list(APPEND LAMMPS_LINK_LIBS ${SCAFACOS_BUILD_DIR}/lib/libfcs_fmm.a) - list(APPEND LAMMPS_LINK_LIBS ${SCAFACOS_BUILD_DIR}/lib/libfcs_p2nfft.a) - list(APPEND LAMMPS_LINK_LIBS ${SCAFACOS_BUILD_DIR}/lib/libfcs_p3m.a) - list(APPEND LAMMPS_LINK_LIBS ${GSL_LIBRARIES}) - list(APPEND LAMMPS_LINK_LIBS ${SCAFACOS_BUILD_DIR}/lib/libfcs_near.a) - list(APPEND LAMMPS_LINK_LIBS ${SCAFACOS_BUILD_DIR}/lib/libfcs_gridsort.a) - list(APPEND LAMMPS_LINK_LIBS ${SCAFACOS_BUILD_DIR}/lib/libfcs_resort.a) - list(APPEND LAMMPS_LINK_LIBS ${SCAFACOS_BUILD_DIR}/lib/libfcs_redist.a) - list(APPEND LAMMPS_LINK_LIBS ${SCAFACOS_BUILD_DIR}/lib/libfcs_common.a) - list(APPEND LAMMPS_LINK_LIBS ${SCAFACOS_BUILD_DIR}/lib/libfcs_pnfft.a) - list(APPEND LAMMPS_LINK_LIBS ${SCAFACOS_BUILD_DIR}/lib/libfcs_pfft.a) - list(APPEND LAMMPS_LINK_LIBS ${SCAFACOS_BUILD_DIR}/lib/libfcs_fftw3_mpi.a) - list(APPEND LAMMPS_LINK_LIBS ${SCAFACOS_BUILD_DIR}/lib/libfcs_fftw3.a) - list(APPEND LAMMPS_LINK_LIBS ${MPI_Fortran_LIBRARIES}) - list(APPEND LAMMPS_LINK_LIBS ${MPI_C_LIBRARIES}) + target_link_libraries(lammps PRIVATE ${SCAFACOS_BUILD_DIR}/lib/libfcs.a) + target_link_libraries(lammps PRIVATE ${SCAFACOS_BUILD_DIR}/lib/libfcs_direct.a) + target_link_libraries(lammps PRIVATE ${SCAFACOS_BUILD_DIR}/lib/libfcs_ewald.a) + target_link_libraries(lammps PRIVATE ${SCAFACOS_BUILD_DIR}/lib/libfcs_fmm.a) + target_link_libraries(lammps PRIVATE ${SCAFACOS_BUILD_DIR}/lib/libfcs_p2nfft.a) + target_link_libraries(lammps PRIVATE ${SCAFACOS_BUILD_DIR}/lib/libfcs_p3m.a) + target_link_libraries(lammps PRIVATE ${GSL_LIBRARIES}) + target_link_libraries(lammps PRIVATE ${SCAFACOS_BUILD_DIR}/lib/libfcs_near.a) + target_link_libraries(lammps PRIVATE ${SCAFACOS_BUILD_DIR}/lib/libfcs_gridsort.a) + target_link_libraries(lammps PRIVATE ${SCAFACOS_BUILD_DIR}/lib/libfcs_resort.a) + target_link_libraries(lammps PRIVATE ${SCAFACOS_BUILD_DIR}/lib/libfcs_redist.a) + target_link_libraries(lammps PRIVATE ${SCAFACOS_BUILD_DIR}/lib/libfcs_common.a) + target_link_libraries(lammps PRIVATE ${SCAFACOS_BUILD_DIR}/lib/libfcs_pnfft.a) + target_link_libraries(lammps PRIVATE ${SCAFACOS_BUILD_DIR}/lib/libfcs_pfft.a) + target_link_libraries(lammps PRIVATE ${SCAFACOS_BUILD_DIR}/lib/libfcs_fftw3_mpi.a) + target_link_libraries(lammps PRIVATE ${SCAFACOS_BUILD_DIR}/lib/libfcs_fftw3.a) + target_link_libraries(lammps PRIVATE ${MPI_Fortran_LIBRARIES}) + target_link_libraries(lammps PRIVATE ${MPI_C_LIBRARIES}) else() find_package(PkgConfig REQUIRED) pkg_check_modules(SCAFACOS REQUIRED scafacos) - list(APPEND LAMMPS_LINK_LIBS ${SCAFACOS_LDFLAGS}) + target_link_libraries(lammps PRIVATE ${SCAFACOS_LDFLAGS}) endif() include_directories(${SCAFACOS_INCLUDE_DIRS}) endif() diff --git a/cmake/Modules/Packages/USER-VTK.cmake b/cmake/Modules/Packages/USER-VTK.cmake index d264577ca2..fb69f115b2 100644 --- a/cmake/Modules/Packages/USER-VTK.cmake +++ b/cmake/Modules/Packages/USER-VTK.cmake @@ -2,5 +2,5 @@ if(PKG_USER-VTK) find_package(VTK REQUIRED NO_MODULE) include(${VTK_USE_FILE}) add_definitions(-DLAMMPS_VTK) - list(APPEND LAMMPS_LINK_LIBS ${VTK_LIBRARIES}) + target_link_libraries(lammps PRIVATE ${VTK_LIBRARIES}) endif() diff --git a/cmake/Modules/Packages/VORONOI.cmake b/cmake/Modules/Packages/VORONOI.cmake index 5418132034..f567c35597 100644 --- a/cmake/Modules/Packages/VORONOI.cmake +++ b/cmake/Modules/Packages/VORONOI.cmake @@ -39,5 +39,5 @@ if(PKG_VORONOI) endif() endif() include_directories(${VORO_INCLUDE_DIRS}) - list(APPEND LAMMPS_LINK_LIBS ${VORO_LIBRARIES}) + target_link_libraries(lammps PRIVATE ${VORO_LIBRARIES}) endif() -- GitLab From 0e3f4f3de2bd7ad50a70353e9e749758796cb10d Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Sun, 22 Mar 2020 19:07:23 -0600 Subject: [PATCH 055/717] cmake: remove LAMMPS_DEPS --- cmake/CMakeLists.txt | 12 +----------- cmake/Modules/MPI4WIN.cmake | 2 +- cmake/Modules/Packages/KIM.cmake | 2 +- cmake/Modules/Packages/LATTE.cmake | 2 +- cmake/Modules/Packages/MSCG.cmake | 2 +- cmake/Modules/Packages/USER-PLUMED.cmake | 2 +- cmake/Modules/Packages/USER-SCAFACOS.cmake | 2 +- cmake/Modules/Packages/USER-SMD.cmake | 2 +- cmake/Modules/Packages/VORONOI.cmake | 2 +- 9 files changed, 9 insertions(+), 19 deletions(-) diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index 9190374a2e..b9e8d5b919 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -126,7 +126,6 @@ endif() option(CMAKE_VERBOSE_MAKEFILE "Generate verbose Makefiles" OFF) include(GNUInstallDirs) -set(LAMMPS_DEPS) set(LAMMPS_API_DEFINES) set(DEFAULT_PACKAGES ASPHERE BODY CLASS2 COLLOID COMPRESS CORESHELL DIPOLE @@ -526,7 +525,7 @@ add_custom_target(gitversion COMMAND ${CMAKE_COMMAND} -DLAMMPS_STYLE_HEADERS_DIR="${LAMMPS_STYLE_HEADERS_DIR}" -P ${CMAKE_CURRENT_SOURCE_DIR}/Modules/generate_lmpgitversion.cmake) set_property(DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES ${LAMMPS_STYLE_HEADERS_DIR}/gitversion.h) -list(APPEND LAMMPS_DEPS gitversion) +add_dependencies(lammps gitversion) ########################################### # Actually add executable and lib to build @@ -537,9 +536,6 @@ if (${_index} GREATER -1) target_link_libraries(lammps PRIVATE ${CMAKE_Fortran_IMPLICIT_LINK_LIBRARIES}) endif() if(BUILD_LIB) - if(LAMMPS_DEPS) - add_dependencies(lammps ${LAMMPS_DEPS}) - endif() set(LAMMPS_CXX_HEADERS ${LAMMPS_SOURCE_DIR}/angle.h ${LAMMPS_SOURCE_DIR}/atom.h @@ -584,12 +580,6 @@ if(BUILD_LIB) endif() if(BUILD_EXE) - if(NOT BUILD_LIB) - if(LAMMPS_DEPS) - add_dependencies(${LAMMPS_EXE} ${LAMMPS_DEPS}) - endif() - endif() - set_target_properties(${LAMMPS_EXE} PROPERTIES OUTPUT_NAME ${LAMMPS_BINARY}) install(TARGETS ${LAMMPS_EXE} DESTINATION ${CMAKE_INSTALL_BINDIR}) install(FILES ${LAMMPS_DOC_DIR}/lammps.1 DESTINATION ${CMAKE_INSTALL_MANDIR}/man1 RENAME ${LAMMPS_BINARY}.1) diff --git a/cmake/Modules/MPI4WIN.cmake b/cmake/Modules/MPI4WIN.cmake index 1f3195041a..1fe6daada3 100644 --- a/cmake/Modules/MPI4WIN.cmake +++ b/cmake/Modules/MPI4WIN.cmake @@ -19,5 +19,5 @@ ExternalProject_get_property(mpi4win_build SOURCE_DIR) add_definitions(-DMPICH_SKIP_MPICXX) include_directories("${SOURCE_DIR}/include") set(MPI4WIN_LIBRARIES "${SOURCE_DIR}/lib/libmpi.a") -list(APPEND LAMMPS_DEPS mpi4win_build) +add_dependencies(lammps mpi4win_build) set(LAMMPS_USE_MPI4WIN ON) diff --git a/cmake/Modules/Packages/KIM.cmake b/cmake/Modules/Packages/KIM.cmake index 002fbbcaed..56fc1449fa 100644 --- a/cmake/Modules/Packages/KIM.cmake +++ b/cmake/Modules/Packages/KIM.cmake @@ -57,7 +57,7 @@ if(PKG_KIM) ExternalProject_get_property(kim_build INSTALL_DIR) set(KIM-API_INCLUDE_DIRS ${INSTALL_DIR}/include/kim-api) set(KIM-API_LDFLAGS ${INSTALL_DIR}/${_KIM_LIBDIR}/libkim-api${CMAKE_SHARED_LIBRARY_SUFFIX}) - list(APPEND LAMMPS_DEPS kim_build) + add_dependencies(lammps kim_build) else() find_package(KIM-API ${KIM-API_MIN_VERSION} REQUIRED) endif() diff --git a/cmake/Modules/Packages/LATTE.cmake b/cmake/Modules/Packages/LATTE.cmake index 55d9b31797..abadd1cd97 100644 --- a/cmake/Modules/Packages/LATTE.cmake +++ b/cmake/Modules/Packages/LATTE.cmake @@ -24,7 +24,7 @@ if(PKG_LATTE) -DCMAKE_MAKE_PROGRAM=${CMAKE_MAKE_PROGRAM} -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE} BUILD_BYPRODUCTS /${_LATTE_LIBDIR}/liblatte.a ) - list(APPEND LAMMPS_DEPS latte_build) + add_dependencies(lammps latte_build) ExternalProject_get_property(latte_build INSTALL_DIR) set(LATTE_LIBRARIES ${INSTALL_DIR}/${_LATTE_LIBDIR}/liblatte.a) else() diff --git a/cmake/Modules/Packages/MSCG.cmake b/cmake/Modules/Packages/MSCG.cmake index e300ed6ae2..2c63e69fa7 100644 --- a/cmake/Modules/Packages/MSCG.cmake +++ b/cmake/Modules/Packages/MSCG.cmake @@ -32,7 +32,7 @@ if(PKG_MSCG) set(MSCG_LIBRARIES ${BINARY_DIR}/libmscg.a) ExternalProject_get_property(mscg_build SOURCE_DIR) set(MSCG_INCLUDE_DIRS ${SOURCE_DIR}/src) - list(APPEND LAMMPS_DEPS mscg_build) + add_dependencies(lammps mscg_build) if(NOT LAPACK_FOUND) file(MAKE_DIRECTORY ${MSCG_INCLUDE_DIRS}) add_dependencies(mscg_build linalg) diff --git a/cmake/Modules/Packages/USER-PLUMED.cmake b/cmake/Modules/Packages/USER-PLUMED.cmake index 9669f1955c..2bca281fa8 100644 --- a/cmake/Modules/Packages/USER-PLUMED.cmake +++ b/cmake/Modules/Packages/USER-PLUMED.cmake @@ -67,7 +67,7 @@ if(PKG_USER-PLUMED) ) ExternalProject_get_property(plumed_build INSTALL_DIR) set(PLUMED_INSTALL_DIR ${INSTALL_DIR}) - list(APPEND LAMMPS_DEPS plumed_build) + add_dependencies(lammps plumed_build) if(PLUMED_MODE STREQUAL "STATIC") add_definitions(-D__PLUMED_WRAPPER_CXX=1) target_link_libraries(lammps ${PLUMED_INSTALL_DIR}/lib/libplumed.a ${PLUMED_LINK_LIBS} ${CMAKE_DL_LIBS}) diff --git a/cmake/Modules/Packages/USER-SCAFACOS.cmake b/cmake/Modules/Packages/USER-SCAFACOS.cmake index 0fac1fe919..ebd750c04b 100644 --- a/cmake/Modules/Packages/USER-SCAFACOS.cmake +++ b/cmake/Modules/Packages/USER-SCAFACOS.cmake @@ -47,7 +47,7 @@ if(PKG_USER-SCAFACOS) ExternalProject_get_property(scafacos_build INSTALL_DIR) set(SCAFACOS_BUILD_DIR ${INSTALL_DIR}) set(SCAFACOS_INCLUDE_DIRS ${SCAFACOS_BUILD_DIR}/include) - list(APPEND LAMMPS_DEPS scafacos_build) + add_dependencies(lammps scafacos_build) # list and order from pkg_config file of ScaFaCoS build target_link_libraries(lammps PRIVATE ${SCAFACOS_BUILD_DIR}/lib/libfcs.a) target_link_libraries(lammps PRIVATE ${SCAFACOS_BUILD_DIR}/lib/libfcs_direct.a) diff --git a/cmake/Modules/Packages/USER-SMD.cmake b/cmake/Modules/Packages/USER-SMD.cmake index a868918e37..eed60ae8bd 100644 --- a/cmake/Modules/Packages/USER-SMD.cmake +++ b/cmake/Modules/Packages/USER-SMD.cmake @@ -16,7 +16,7 @@ if(PKG_USER-SMD) ) ExternalProject_get_property(Eigen3_build SOURCE_DIR) set(EIGEN3_INCLUDE_DIR ${SOURCE_DIR}) - list(APPEND LAMMPS_DEPS Eigen3_build) + add_dependencies(lammps Eigen3_build) else() find_package(Eigen3 NO_MODULE) mark_as_advanced(Eigen3_DIR) diff --git a/cmake/Modules/Packages/VORONOI.cmake b/cmake/Modules/Packages/VORONOI.cmake index f567c35597..d2bb185228 100644 --- a/cmake/Modules/Packages/VORONOI.cmake +++ b/cmake/Modules/Packages/VORONOI.cmake @@ -31,7 +31,7 @@ if(PKG_VORONOI) ExternalProject_get_property(voro_build SOURCE_DIR) set(VORO_LIBRARIES ${SOURCE_DIR}/src/libvoro++.a) set(VORO_INCLUDE_DIRS ${SOURCE_DIR}/src) - list(APPEND LAMMPS_DEPS voro_build) + add_dependencies(lammps voro_build) else() find_package(VORO) if(NOT VORO_FOUND) -- GitLab From 3076e267073f7501467933cb846a1b129373e2fb Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Sun, 22 Mar 2020 19:20:00 -0600 Subject: [PATCH 056/717] cmake: create imported target for FFTW --- cmake/Modules/FindFFTW3.cmake | 28 +++++++++++++++++++++++---- cmake/Modules/FindFFTW3F.cmake | 30 ++++++++++++++++++++++++----- cmake/Modules/Packages/KSPACE.cmake | 5 ++--- 3 files changed, 51 insertions(+), 12 deletions(-) diff --git a/cmake/Modules/FindFFTW3.cmake b/cmake/Modules/FindFFTW3.cmake index 63752f85df..708ec49509 100644 --- a/cmake/Modules/FindFFTW3.cmake +++ b/cmake/Modules/FindFFTW3.cmake @@ -14,14 +14,34 @@ find_path(FFTW3_INCLUDE_DIR fftw3.h HINTS ${PC_FFTW3_INCLUDE_DIRS}) find_library(FFTW3_LIBRARY NAMES fftw3 HINTS ${PC_FFTW3_LIBRARY_DIRS}) find_library(FFTW3_OMP_LIBRARY NAMES fftw3_omp HINTS ${PC_FFTW3_LIBRARY_DIRS}) -set(FFTW3_INCLUDE_DIRS ${FFTW3_INCLUDE_DIR}) -set(FFTW3_LIBRARIES ${FFTW3_LIBRARY}) -set(FFTW3_OMP_LIBRARIES ${FFTW3_OMP_LIBRARY}) - include(FindPackageHandleStandardArgs) # handle the QUIETLY and REQUIRED arguments and set FFTW3_FOUND to TRUE # if all listed variables are TRUE find_package_handle_standard_args(FFTW3 DEFAULT_MSG FFTW3_LIBRARY FFTW3_INCLUDE_DIR) +# Copy the results to the output variables and target. +if(FFTW3_FOUND) + set(FFTW3_LIBRARIES ${FFTW3_LIBRARY} ) + set(FFTW3_INCLUDE_DIRS ${FFTW3_INCLUDE_DIR} ) + + if(NOT TARGET FFTW3::FFTW3) + add_library(FFTW3::FFTW3 UNKNOWN IMPORTED) + set_target_properties(FFTW3::FFTW3 PROPERTIES + IMPORTED_LINK_INTERFACE_LANGUAGES "C" + IMPORTED_LOCATION "${FFTW3_LIBRARY}" + INTERFACE_INCLUDE_DIRECTORIES "${FFTW3_INCLUDE_DIRS}") + endif() + if(FFTW3_OMP_LIBRARY) + set(FFTW3_OMP_LIBRARIES ${FFTW3_OMP_LIBRARY}) + if(NOT TARGET FFTW3::FFTW3_OMP) + add_library(FFTW3::FFTW3_OMP UNKNOWN IMPORTED) + set_target_properties(FFTW3::FFTW3_OMP PROPERTIES + IMPORTED_LINK_INTERFACE_LANGUAGES "C" + IMPORTED_LOCATION "${FFTW3_OMP_LIBRARY}" + INTERFACE_INCLUDE_DIRECTORIES "${FFTW3_INCLUDE_DIRS}") + endif() + endif() +endif() + mark_as_advanced(FFTW3_INCLUDE_DIR FFTW3_LIBRARY FFTW3_OMP_LIBRARY) diff --git a/cmake/Modules/FindFFTW3F.cmake b/cmake/Modules/FindFFTW3F.cmake index c67aa5faf1..3dbcdaa04e 100644 --- a/cmake/Modules/FindFFTW3F.cmake +++ b/cmake/Modules/FindFFTW3F.cmake @@ -13,14 +13,34 @@ find_path(FFTW3F_INCLUDE_DIR fftw3.h HINTS ${PC_FFTW3F_INCLUDE_DIRS}) find_library(FFTW3F_LIBRARY NAMES fftw3f HINTS ${PC_FFTW3F_LIBRARY_DIRS}) find_library(FFTW3F_OMP_LIBRARY NAMES fftw3f_omp HINTS ${PC_FFTW3F_LIBRARY_DIRS}) -set(FFTW3F_INCLUDE_DIRS ${FFTW3F_INCLUDE_DIR}) -set(FFTW3F_LIBRARIES ${FFTW3F_LIBRARY}) -set(FFTW3F_OMP_LIBRARIES ${FFTW3F_OMP_LIBRARY}) - include(FindPackageHandleStandardArgs) # handle the QUIETLY and REQUIRED arguments and set FFTW3F_FOUND to TRUE # if all listed variables are TRUE find_package_handle_standard_args(FFTW3F DEFAULT_MSG FFTW3F_LIBRARY FFTW3F_INCLUDE_DIR) -mark_as_advanced(FFTW3F_INCLUDE_DIR FFTW3F_LIBRARY) +# Copy the results to the output variables and target. +if(FFTW3F_FOUND) + set(FFTW3F_LIBRARIES ${FFTW3F_LIBRARY} ) + set(FFTW3F_INCLUDE_DIRS ${FFTW3F_INCLUDE_DIR} ) + + if(NOT TARGET FFTW3F::FFTW3F) + add_library(FFTW3F::FFTW3F UNKNOWN IMPORTED) + set_target_properties(FFTW3F::FFTW3F PROPERTIES + IMPORTED_LINK_INTERFACE_LANGUAGES "C" + IMPORTED_LOCATION "${FFTW3F_LIBRARY}" + INTERFACE_INCLUDE_DIRECTORIES "${FFTW3F_INCLUDE_DIRS}") + endif() + if(FFTW3F_OMP_LIBRARY) + set(FFTW3F_OMP_LIBRARIES ${FFTW3F_OMP_LIBRARY}) + if(NOT TARGET FFTW3F::FFTW3F_OMP) + add_library(FFTW3F::FFTW3F_OMP UNKNOWN IMPORTED) + set_target_properties(FFTW3F::FFTW3F_OMP PROPERTIES + IMPORTED_LINK_INTERFACE_LANGUAGES "C" + IMPORTED_LOCATION "${FFTW3F_OMP_LIBRARY}" + INTERFACE_INCLUDE_DIRECTORIES "${FFTW3F_INCLUDE_DIRS}") + endif() + endif() +endif() + +mark_as_advanced(FFTW3F_INCLUDE_DIR FFTW3F_LIBRARY FFTW3F_OMP_LIBRARY) diff --git a/cmake/Modules/Packages/KSPACE.cmake b/cmake/Modules/Packages/KSPACE.cmake index 4f92a6963c..db12787013 100644 --- a/cmake/Modules/Packages/KSPACE.cmake +++ b/cmake/Modules/Packages/KSPACE.cmake @@ -19,8 +19,7 @@ if(PKG_KSPACE) if(FFT STREQUAL "FFTW3") find_package(${FFTW} REQUIRED) add_definitions(-DFFT_FFTW3) - include_directories(${${FFTW}_INCLUDE_DIRS}) - target_link_libraries(lammps PRIVATE ${${FFTW}_LIBRARIES}) + target_link_libraries(lammps PRIVATE ${FFTW}::${FFTW}) if(FFTW3_OMP_LIBRARY OR FFTW3F_OMP_LIBRARY) option(FFT_FFTW_THREADS "Use threaded FFTW library" ON) else() @@ -30,7 +29,7 @@ if(PKG_KSPACE) if(FFT_FFTW_THREADS) if(FFTW3_OMP_LIBRARY OR FFTW3F_OMP_LIBRARY) add_definitions(-DFFT_FFTW_THREADS) - target_link_libraries(lammps PRIVATE ${${FFTW}_OMP_LIBRARIES}) + target_link_libraries(lammps PRIVATE ${FFTW}::${FFTW}_OMP) else() message(FATAL_ERROR "Need OpenMP enabled FFTW3 library for FFT_THREADS") endif() -- GitLab From 591212af3ac3a6c0d5f9fce59199b39b279929e8 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Sun, 22 Mar 2020 19:57:48 -0600 Subject: [PATCH 057/717] cmake: add back include path for now --- cmake/CMakeLists.txt | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index b9e8d5b919..c6d149e7d6 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -112,15 +112,17 @@ if(BUILD_LIB) add_library(lammps ${ALL_SOURCES}) if(BUILD_EXE) add_executable(lmp ${MAIN_SOURCES}) - set(LAMMPS_EXE lmp) target_link_libraries(lmp PRIVATE lammps) + set_target_properties(lmp PROPERTIES OUTPUT_NAME ${LAMMPS_BINARY}) + install(TARGETS lmp DESTINATION ${CMAKE_INSTALL_BINDIR}) endif() else() if(NOT BUILD_EXE) message(FATAL_ERROR "You need to at least enable one of two following options: BUILD_LIB or BUILD_EXE") endif() add_executable(lammps ${ALL_SOURCES}) - set(LAMMPS_EXE lammps) + set_target_properties(lammps PROPERTIES OUTPUT_NAME ${LAMMPS_BINARY}) + install(TARGETS lammps DESTINATION ${CMAKE_INSTALL_BINDIR}) endif() option(CMAKE_VERBOSE_MAKEFILE "Generate verbose Makefiles" OFF) @@ -186,6 +188,7 @@ if(BUILD_MPI) include(MPI4WIN) else() find_package(MPI REQUIRED) + include_directories(${MPI_CXX_INCLUDE_PATH}) add_definitions(-DMPICH_SKIP_MPICXX -DOMPI_SKIP_MPICXX=1) target_link_libraries(lammps PRIVATE MPI::MPI_CXX) option(LAMMPS_LONGLONG_TO_LONG "Workaround if your system or MPI version does not recognize 'long long' data types" OFF) @@ -580,8 +583,6 @@ if(BUILD_LIB) endif() if(BUILD_EXE) - set_target_properties(${LAMMPS_EXE} PROPERTIES OUTPUT_NAME ${LAMMPS_BINARY}) - install(TARGETS ${LAMMPS_EXE} DESTINATION ${CMAKE_INSTALL_BINDIR}) install(FILES ${LAMMPS_DOC_DIR}/lammps.1 DESTINATION ${CMAKE_INSTALL_MANDIR}/man1 RENAME ${LAMMPS_BINARY}.1) endif() -- GitLab From a42f7163d222367003c291e7c307521966c9a266 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Sun, 22 Mar 2020 21:29:15 -0600 Subject: [PATCH 058/717] cmake: move include up --- cmake/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index c6d149e7d6..ae80996196 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -105,6 +105,7 @@ endif() option(BUILD_TOOLS "Build and install LAMMPS tools (msi2lmp, binary2txt, chain)" OFF) +include(GNUInstallDirs) file(GLOB ALL_SOURCES ${LAMMPS_SOURCE_DIR}/[^.]*.cpp) if(BUILD_LIB) file(GLOB MAIN_SOURCES ${LAMMPS_SOURCE_DIR}/main.cpp) @@ -126,7 +127,6 @@ else() endif() option(CMAKE_VERBOSE_MAKEFILE "Generate verbose Makefiles" OFF) -include(GNUInstallDirs) set(LAMMPS_API_DEFINES) -- GitLab From 6ee25db32a46c80da89a69ccfa667e283404ff3a Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Mon, 23 Mar 2020 08:00:51 -0600 Subject: [PATCH 059/717] cmake: fftw needs to be public due to DSO --- cmake/Modules/Packages/KSPACE.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/Modules/Packages/KSPACE.cmake b/cmake/Modules/Packages/KSPACE.cmake index db12787013..2a586dccf3 100644 --- a/cmake/Modules/Packages/KSPACE.cmake +++ b/cmake/Modules/Packages/KSPACE.cmake @@ -19,7 +19,7 @@ if(PKG_KSPACE) if(FFT STREQUAL "FFTW3") find_package(${FFTW} REQUIRED) add_definitions(-DFFT_FFTW3) - target_link_libraries(lammps PRIVATE ${FFTW}::${FFTW}) + target_link_libraries(lammps PUBLIC ${FFTW}::${FFTW}) if(FFTW3_OMP_LIBRARY OR FFTW3F_OMP_LIBRARY) option(FFT_FFTW_THREADS "Use threaded FFTW library" ON) else() -- GitLab From 9b8266173faff9ab80e77461be42e566e658491e Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Mon, 23 Mar 2020 08:23:16 -0600 Subject: [PATCH 060/717] cmake: JPEG imported target is >=cmake-3.12 only --- cmake/CMakeLists.txt | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index ae80996196..6dd80d3253 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -284,7 +284,12 @@ option(WITH_JPEG "Enable JPEG support" ${JPEG_FOUND}) if(WITH_JPEG) find_package(JPEG REQUIRED) add_definitions(-DLAMMPS_JPEG) - target_link_libraries(lammps PRIVATE JPEG::JPEG) + if(CMAKE_VERSION VERSION_LESS 3.12) + include_directories(${JPEG_INCLUDE_DIR}) + target_link_libraries(lammps PRIVATE ${JPEG_LIBRARIES}) + else() + target_link_libraries(lammps PRIVATE JPEG::JPEG) + endif() endif() find_package(PNG QUIET) -- GitLab From d92b9ba8d0c38de37c1699dbcaecfce7931766db Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Mon, 23 Mar 2020 08:51:29 -0600 Subject: [PATCH 061/717] cmake: mpi needs to be public due to DSO --- cmake/CMakeLists.txt | 2 +- cmake/Modules/Packages/USER-PLUMED.cmake | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index 6dd80d3253..362cce94db 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -190,7 +190,7 @@ if(BUILD_MPI) find_package(MPI REQUIRED) include_directories(${MPI_CXX_INCLUDE_PATH}) add_definitions(-DMPICH_SKIP_MPICXX -DOMPI_SKIP_MPICXX=1) - target_link_libraries(lammps PRIVATE MPI::MPI_CXX) + target_link_libraries(lammps PUBLIC MPI::MPI_CXX) option(LAMMPS_LONGLONG_TO_LONG "Workaround if your system or MPI version does not recognize 'long long' data types" OFF) if(LAMMPS_LONGLONG_TO_LONG) add_definitions(-DLAMMPS_LONGLONG_TO_LONG) diff --git a/cmake/Modules/Packages/USER-PLUMED.cmake b/cmake/Modules/Packages/USER-PLUMED.cmake index 2bca281fa8..a6cd20adbb 100644 --- a/cmake/Modules/Packages/USER-PLUMED.cmake +++ b/cmake/Modules/Packages/USER-PLUMED.cmake @@ -70,7 +70,7 @@ if(PKG_USER-PLUMED) add_dependencies(lammps plumed_build) if(PLUMED_MODE STREQUAL "STATIC") add_definitions(-D__PLUMED_WRAPPER_CXX=1) - target_link_libraries(lammps ${PLUMED_INSTALL_DIR}/lib/libplumed.a ${PLUMED_LINK_LIBS} ${CMAKE_DL_LIBS}) + target_link_libraries(lammps PRIVATE ${PLUMED_INSTALL_DIR}/lib/libplumed.a ${PLUMED_LINK_LIBS} ${CMAKE_DL_LIBS}) elseif(PLUMED_MODE STREQUAL "SHARED") target_link_libraries(lammps PRIVATE ${PLUMED_INSTALL_DIR}/lib/libplumed${CMAKE_SHARED_LIBRARY_SUFFIX} ${PLUMED_INSTALL_DIR}/lib/libplumedKernel${CMAKE_SHARED_LIBRARY_SUFFIX} ${CMAKE_DL_LIBS}) elseif(PLUMED_MODE STREQUAL "RUNTIME") -- GitLab From 0f00bb1ca6c08c3d5fcc14857f2a629fd9c8292d Mon Sep 17 00:00:00 2001 From: david-castillo Date: Mon, 23 Mar 2020 16:48:08 +0100 Subject: [PATCH 062/717] Added new argument r0stop to fix restrain bond Added new fix restrain lowerbound harmonic --- doc/src/fix_restrain.rst | 33 +++++++++- src/fix_restrain.cpp | 133 ++++++++++++++++++++++++++++++++++++--- src/fix_restrain.h | 4 +- 3 files changed, 160 insertions(+), 10 deletions(-) diff --git a/doc/src/fix_restrain.rst b/doc/src/fix_restrain.rst index 3965cee04d..9b9beaa5ac 100644 --- a/doc/src/fix_restrain.rst +++ b/doc/src/fix_restrain.rst @@ -17,10 +17,18 @@ Syntax .. parsed-literal:: - *bond* args = atom1 atom2 Kstart Kstop r0 + *bond* args = atom1 atom2 Kstart Kstop r0start r0stop atom1,atom2 = IDs of 2 atoms in bond Kstart,Kstop = restraint coefficients at start/end of run (energy units) - r0 = equilibrium bond distance (distance units) + r0start = equilibrium bond distance at start of run (distance units) + r0stop = equilibrium bond distance at end of run (distance units). If not + specified it's assumed to be equal to r0start + *lbond* args = atom1 atom2 Kstart Kstop r0start r0stop + atom1,atom2 = IDs of 2 atoms in bond + Kstart,Kstop = restraint coefficients at start/end of run (energy units) + r0start = equilibrium bond distance at start of run (distance units) + r0stop = equilibrium bond distance at end of run (distance units). If not + specified it's assumed to be equal to r0start *angle* args = atom1 atom2 atom3 Kstart Kstop theta0 atom1,atom2,atom3 = IDs of 3 atoms in angle, atom2 = middle atom Kstart,Kstop = restraint coefficients at start/end of run (energy units) @@ -38,6 +46,7 @@ Examples .. code-block:: LAMMPS fix holdem all restrain bond 45 48 2000.0 2000.0 2.75 + fix holdem all restrain lbond 45 48 2000.0 2000.0 2.75 fix holdem all restrain dihedral 1 2 3 4 2000.0 2000.0 120.0 fix holdem all restrain bond 45 48 2000.0 2000.0 2.75 dihedral 1 2 3 4 2000.0 2000.0 120.0 fix texas_holdem all restrain dihedral 1 2 3 4 0.0 2000.0 120.0 dihedral 1 2 3 5 0.0 2000.0 -120.0 dihedral 1 2 3 6 0.0 2000.0 0.0 @@ -141,6 +150,26 @@ is included in :math:`K`. ---------- +The *lbond* keyword applies a lowerbound bond restraint to the specified atoms +using the same functional form used by the :doc:`bond_style harmonic ` command if the distance between +the atoms is smaller than the equilibrium bond distance and 0 otherwise. The potential associated with +the restraint is + +.. math:: + + E = K (r - r_0)^2 if r < r_0 + E = 0 if r >= r_0 + +with the following coefficients: + +* :math:`K` (energy/distance\^2) +* :math:`r_0` (distance) + +:math:`K` and :math:`r_0` are specified with the fix. Note that the usual 1/2 factor +is included in :math:`K`. + +---------- + The *angle* keyword applies an angle restraint to the specified atoms using the same functional form used by the :doc:`angle_style harmonic ` command. The potential associated with the restraint is diff --git a/src/fix_restrain.cpp b/src/fix_restrain.cpp index 5a0d4fb662..5f65d7069b 100644 --- a/src/fix_restrain.cpp +++ b/src/fix_restrain.cpp @@ -34,7 +34,7 @@ using namespace LAMMPS_NS; using namespace FixConst; using namespace MathConst; -enum{BOND,ANGLE,DIHEDRAL}; +enum{BOND,LBOUND,ANGLE,DIHEDRAL}; #define TOLERANCE 0.05 #define SMALL 0.001 @@ -45,7 +45,7 @@ enum{BOND,ANGLE,DIHEDRAL}; FixRestrain::FixRestrain(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg), rstyle(NULL), mult(NULL), ids(NULL), kstart(NULL), kstop(NULL), target(NULL), - cos_target(NULL), sin_target(NULL) + deqstart(NULL), deqstop(NULL), cos_target(NULL), sin_target(NULL) { if (narg < 4) error->all(FLERR,"Illegal fix restrain command"); @@ -72,6 +72,8 @@ FixRestrain::FixRestrain(LAMMPS *lmp, int narg, char **arg) : memory->grow(kstart,maxrestrain,"restrain:kstart"); memory->grow(kstop,maxrestrain,"restrain:kstop"); memory->grow(target,maxrestrain,"restrain:target"); + memory->grow(deqstart,maxrestrain,"restrain:deqstart"); + memory->grow(deqstop,maxrestrain,"restrain:deqstop"); memory->grow(cos_target,maxrestrain,"restrain:cos_target"); memory->grow(sin_target,maxrestrain,"restrain:sin_target"); } @@ -83,8 +85,29 @@ FixRestrain::FixRestrain(LAMMPS *lmp, int narg, char **arg) : ids[nrestrain][1] = force->inumeric(FLERR,arg[iarg+2]); kstart[nrestrain] = force->numeric(FLERR,arg[iarg+3]); kstop[nrestrain] = force->numeric(FLERR,arg[iarg+4]); - target[nrestrain] = force->numeric(FLERR,arg[iarg+5]); - iarg += 6; + deqstart[nrestrain] = force->numeric(FLERR,arg[iarg+5]); + if (iarg+6 == narg) { + deqstop[nrestrain] = force->numeric(FLERR,arg[iarg+5]); + iarg += 6; + } else { + deqstop[nrestrain] = force->numeric(FLERR,arg[iarg+6]); + iarg += 7; + } + } else if (strcmp(arg[iarg],"lbound") == 0) { + if (iarg+6 > narg) error->all(FLERR,"Illegal fix restrain command"); + rstyle[nrestrain] = LBOUND; + ids[nrestrain][0] = force->inumeric(FLERR,arg[iarg+1]); + ids[nrestrain][1] = force->inumeric(FLERR,arg[iarg+2]); + kstart[nrestrain] = force->numeric(FLERR,arg[iarg+3]); + kstop[nrestrain] = force->numeric(FLERR,arg[iarg+4]); + deqstart[nrestrain] = force->numeric(FLERR,arg[iarg+5]); + if (iarg+6 == narg) { + deqstop[nrestrain] = force->numeric(FLERR,arg[iarg+5]); + iarg += 6; + } else { + deqstop[nrestrain] = force->numeric(FLERR,arg[iarg+6]); + iarg += 7; + } } else if (strcmp(arg[iarg],"angle") == 0) { if (iarg+7 > narg) error->all(FLERR,"Illegal fix restrain command"); rstyle[nrestrain] = ANGLE; @@ -139,6 +162,8 @@ FixRestrain::~FixRestrain() memory->destroy(kstart); memory->destroy(kstop); memory->destroy(target); + memory->destroy(deqstart); + memory->destroy(deqstop); memory->destroy(cos_target); memory->destroy(sin_target); } @@ -192,11 +217,13 @@ void FixRestrain::post_force(int /*vflag*/) energy = 0.0; ebond = 0.0; + elbound = 0.0; eangle = 0.0; edihed = 0.0; for (int m = 0; m < nrestrain; m++) if (rstyle[m] == BOND) restrain_bond(m); + else if (rstyle[m] == LBOUND) restrain_lbound(m); else if (rstyle[m] == ANGLE) restrain_angle(m); else if (rstyle[m] == DIHEDRAL) restrain_dihedral(m); } @@ -233,6 +260,7 @@ void FixRestrain::restrain_bond(int m) double delta = update->ntimestep - update->beginstep; if (delta != 0.0) delta /= update->endstep - update->beginstep; double k = kstart[m] + delta * (kstop[m] - kstart[m]); + double deq = deqstart[m] + delta * (deqstop[m] - deqstart[m]); i1 = atom->map(ids[m][0]); i2 = atom->map(ids[m][1]); @@ -269,7 +297,7 @@ void FixRestrain::restrain_bond(int m) rsq = delx*delx + dely*dely + delz*delz; r = sqrt(rsq); - dr = r - target[m]; + dr = r - deq; rk = k * dr; // force & energy @@ -277,7 +305,7 @@ void FixRestrain::restrain_bond(int m) if (r > 0.0) fbond = -2.0*rk/r; else fbond = 0.0; - ebond += rk*dr; + ebond += rk*dr; energy += rk*dr; // apply force to each of 2 atoms @@ -295,6 +323,94 @@ void FixRestrain::restrain_bond(int m) } } +/* ---------------------------------------------------------------------- + apply harmonic lower-bound bond restraints +---------------------------------------------------------------------- */ + +void FixRestrain::restrain_lbound(int m) +{ + int i1,i2; + double delx,dely,delz,fbond; + double rsq,r,dr,rk; + + double **x = atom->x; + double **f = atom->f; + int nlocal = atom->nlocal; + int newton_bond = force->newton_bond; + + double delta = update->ntimestep - update->beginstep; + if (delta != 0.0) delta /= update->endstep - update->beginstep; + double k = kstart[m] + delta * (kstop[m] - kstart[m]); + double deq = deqstart[m] + delta * (deqstop[m] - deqstart[m]); + + i1 = atom->map(ids[m][0]); + i2 = atom->map(ids[m][1]); + + // newton_bond on: only processor owning i2 computes restraint + // newton_bond off: only processors owning either of i1,i2 computes restraint + + if (newton_bond) { + if (i2 == -1 || i2 >= nlocal) return; + if (i1 == -1) { + char str[128]; + sprintf(str, + "Restrain atoms %d %d missing on proc %d at step " BIGINT_FORMAT, + ids[m][0],ids[m][1], + comm->me,update->ntimestep); + error->one(FLERR,str); + } + } else { + if ((i1 == -1 || i1 >= nlocal) && (i2 == -1 || i2 >= nlocal)) return; + if (i1 == -1 || i2 == -1) { + char str[128]; + sprintf(str, + "Restrain atoms %d %d missing on proc %d at step " BIGINT_FORMAT, + ids[m][0],ids[m][1], + comm->me,update->ntimestep); + error->one(FLERR,str); + } + } + + delx = x[i1][0] - x[i2][0]; + dely = x[i1][1] - x[i2][1]; + delz = x[i1][2] - x[i2][2]; + domain->minimum_image(delx,dely,delz); + + rsq = delx*delx + dely*dely + delz*delz; + r = sqrt(rsq); + dr = r - deq; + rk = k * dr; + + // force & energy + + if (dr < 0) { + if (r > 0.0) fbond = -2.0*rk/r; + else fbond = 0.0; + + elbound += rk*dr; + energy += rk*dr; + } else { + fbond = 0.0; + + elbound += 0.0; + energy += 0.0; + } + + // apply force to each of 2 atoms + + if (newton_bond || i1 < nlocal) { + f[i1][0] += delx*fbond; + f[i1][1] += dely*fbond; + f[i1][2] += delz*fbond; + } + + if (newton_bond || i2 < nlocal) { + f[i2][0] -= delx*fbond; + f[i2][1] -= dely*fbond; + f[i2][2] -= delz*fbond; + } +} + /* ---------------------------------------------------------------------- apply harmonic angle restraints ---------------------------------------------------------------------- */ @@ -655,9 +771,12 @@ double FixRestrain::compute_vector(int n) MPI_Allreduce(&ebond,&ebond_all,1,MPI_DOUBLE,MPI_SUM,world); return ebond_all; } else if (n == 1) { + MPI_Allreduce(&elbound,&elbound_all,1,MPI_DOUBLE,MPI_SUM,world); + return elbound_all; + } else if (n == 3) { MPI_Allreduce(&eangle,&eangle_all,1,MPI_DOUBLE,MPI_SUM,world); return eangle_all; - } else if (n == 2) { + } else if (n == 4) { MPI_Allreduce(&edihed,&edihed_all,1,MPI_DOUBLE,MPI_SUM,world); return edihed_all; } else { diff --git a/src/fix_restrain.h b/src/fix_restrain.h index 4572905d46..3497b7daf5 100644 --- a/src/fix_restrain.h +++ b/src/fix_restrain.h @@ -44,14 +44,16 @@ class FixRestrain : public Fix { int *rstyle; int *mult; int **ids; - double *kstart,*kstop,*target; + double *kstart,*kstop,*deqstart,*deqstop,*target; double *cos_target,*sin_target; double energy,energy_all; double ebond,ebond_all; + double elbound,elbound_all; double eangle,eangle_all; double edihed,edihed_all; void restrain_bond(int); + void restrain_lbound(int); void restrain_angle(int); void restrain_dihedral(int); }; -- GitLab From 6209479797e29df62dd17476127e30a64d73d08f Mon Sep 17 00:00:00 2001 From: david-castillo Date: Mon, 23 Mar 2020 17:57:58 +0100 Subject: [PATCH 063/717] Removed some tabs Changed mathjax for multiline formula --- doc/src/fix_restrain.rst | 9 ++++++--- src/fix_restrain.cpp | 16 ++++++++-------- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/doc/src/fix_restrain.rst b/doc/src/fix_restrain.rst index 9b9beaa5ac..110b26680d 100644 --- a/doc/src/fix_restrain.rst +++ b/doc/src/fix_restrain.rst @@ -150,16 +150,19 @@ is included in :math:`K`. ---------- -The *lbond* keyword applies a lowerbound bond restraint to the specified atoms +The *lbond* keyword applies a lower bound bond restraint to the specified atoms using the same functional form used by the :doc:`bond_style harmonic ` command if the distance between the atoms is smaller than the equilibrium bond distance and 0 otherwise. The potential associated with the restraint is .. math:: - E = K (r - r_0)^2 if r < r_0 - E = 0 if r >= r_0 + E = K (r - r_0)^2 ,if\;r < r_0 +.. math:: + + E = 0 \qquad\quad\quad ,if\;r \ge r_0 + with the following coefficients: * :math:`K` (energy/distance\^2) diff --git a/src/fix_restrain.cpp b/src/fix_restrain.cpp index 5f65d7069b..a6793a36be 100644 --- a/src/fix_restrain.cpp +++ b/src/fix_restrain.cpp @@ -87,11 +87,11 @@ FixRestrain::FixRestrain(LAMMPS *lmp, int narg, char **arg) : kstop[nrestrain] = force->numeric(FLERR,arg[iarg+4]); deqstart[nrestrain] = force->numeric(FLERR,arg[iarg+5]); if (iarg+6 == narg) { - deqstop[nrestrain] = force->numeric(FLERR,arg[iarg+5]); - iarg += 6; + deqstop[nrestrain] = force->numeric(FLERR,arg[iarg+5]); + iarg += 6; } else { - deqstop[nrestrain] = force->numeric(FLERR,arg[iarg+6]); - iarg += 7; + deqstop[nrestrain] = force->numeric(FLERR,arg[iarg+6]); + iarg += 7; } } else if (strcmp(arg[iarg],"lbound") == 0) { if (iarg+6 > narg) error->all(FLERR,"Illegal fix restrain command"); @@ -102,11 +102,11 @@ FixRestrain::FixRestrain(LAMMPS *lmp, int narg, char **arg) : kstop[nrestrain] = force->numeric(FLERR,arg[iarg+4]); deqstart[nrestrain] = force->numeric(FLERR,arg[iarg+5]); if (iarg+6 == narg) { - deqstop[nrestrain] = force->numeric(FLERR,arg[iarg+5]); - iarg += 6; + deqstop[nrestrain] = force->numeric(FLERR,arg[iarg+5]); + iarg += 6; } else { - deqstop[nrestrain] = force->numeric(FLERR,arg[iarg+6]); - iarg += 7; + deqstop[nrestrain] = force->numeric(FLERR,arg[iarg+6]); + iarg += 7; } } else if (strcmp(arg[iarg],"angle") == 0) { if (iarg+7 > narg) error->all(FLERR,"Illegal fix restrain command"); -- GitLab From e76afb33edc939ee63d2033e750d186bc2799c5a Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Mon, 23 Mar 2020 12:06:58 -0600 Subject: [PATCH 064/717] cmake: update to new target_link_libraries() signature --- cmake/CMakeLists.txt | 8 ++++---- cmake/Modules/Packages/GPU.cmake | 4 ++-- cmake/Modules/Packages/USER-H5MD.cmake | 2 +- cmake/pkgconfig/liblammps.pc.in | 2 +- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index 362cce94db..cc9b3fc56a 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -457,14 +457,14 @@ foreach(SIMPLE_LIB POEMS USER-ATC USER-AWPMD USER-H5MD) endforeach() if(PKG_USER-AWPMD) - target_link_libraries(awpmd ${LAPACK_LIBRARIES}) + target_link_libraries(awpmd PRIVATE ${LAPACK_LIBRARIES}) endif() if(PKG_USER-ATC) if(LAMMPS_SIZES STREQUAL BIGBIG) message(FATAL_ERROR "The USER-ATC Package is not compatible with -DLAMMPS_BIGBIG") endif() - target_link_libraries(atc ${LAPACK_LIBRARIES}) + target_link_libraries(atc PRIVATE ${LAPACK_LIBRARIES}) endif() include(Packages/USER-H5MD) @@ -599,7 +599,7 @@ if(BUILD_TOOLS) if(CMAKE_GENERATOR_SUPPORT_FORTRAN) enable_language(Fortran) add_executable(chain.x ${LAMMPS_TOOLS_DIR}/chain.f) - target_link_libraries(chain.x ${CMAKE_Fortran_IMPLICIT_LINK_LIBRARIES}) + target_link_libraries(chain.x PRIVATE ${CMAKE_Fortran_IMPLICIT_LINK_LIBRARIES}) install(TARGETS chain.x DESTINATION ${CMAKE_INSTALL_BINDIR}) else() message(WARNING "CMake build doesn't support fortran, skipping building 'chain.x'") @@ -609,7 +609,7 @@ if(BUILD_TOOLS) get_filename_component(MSI2LMP_SOURCE_DIR ${LAMMPS_TOOLS_DIR}/msi2lmp/src ABSOLUTE) file(GLOB MSI2LMP_SOURCES ${MSI2LMP_SOURCE_DIR}/[^.]*.c) add_executable(msi2lmp ${MSI2LMP_SOURCES}) - target_link_libraries(msi2lmp m) + target_link_libraries(msi2lmp PRIVATE ${MATH_LIBRARIES}) install(TARGETS msi2lmp DESTINATION ${CMAKE_INSTALL_BINDIR}) install(FILES ${LAMMPS_DOC_DIR}/msi2lmp.1 DESTINATION ${CMAKE_INSTALL_MANDIR}/man1) endif() diff --git a/cmake/Modules/Packages/GPU.cmake b/cmake/Modules/Packages/GPU.cmake index 427644f9c7..95bb525dd5 100644 --- a/cmake/Modules/Packages/GPU.cmake +++ b/cmake/Modules/Packages/GPU.cmake @@ -99,7 +99,7 @@ if(PKG_GPU) add_library(gpu STATIC ${GPU_LIB_SOURCES} ${GPU_LIB_CUDPP_SOURCES} ${GPU_OBJS}) - target_link_libraries(gpu ${CUDA_LIBRARIES} ${CUDA_CUDA_LIBRARY}) + target_link_libraries(gpu PRIVATE ${CUDA_LIBRARIES} ${CUDA_CUDA_LIBRARY}) target_include_directories(gpu PRIVATE ${LAMMPS_LIB_BINARY_DIR}/gpu ${CUDA_INCLUDE_DIRS}) target_compile_definitions(gpu PRIVATE -D_${GPU_PREC_SETTING} -DMPI_GERYON -DUCL_NO_EXIT ${GPU_CUDA_MPS_FLAGS}) if(CUDPP_OPT) @@ -166,7 +166,7 @@ if(PKG_GPU) ) add_library(gpu STATIC ${GPU_LIB_SOURCES}) - target_link_libraries(gpu ${OpenCL_LIBRARIES}) + target_link_libraries(gpu PRIVATE ${OpenCL_LIBRARIES}) target_include_directories(gpu PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/gpu ${OpenCL_INCLUDE_DIRS}) target_compile_definitions(gpu PRIVATE -D_${GPU_PREC_SETTING} -D${OCL_TUNE}_OCL -DMPI_GERYON -DUCL_NO_EXIT) target_compile_definitions(gpu PRIVATE -DUSE_OPENCL) diff --git a/cmake/Modules/Packages/USER-H5MD.cmake b/cmake/Modules/Packages/USER-H5MD.cmake index 40ea7b7444..1e3fcf82ce 100644 --- a/cmake/Modules/Packages/USER-H5MD.cmake +++ b/cmake/Modules/Packages/USER-H5MD.cmake @@ -2,7 +2,7 @@ if(PKG_USER-H5MD) enable_language(C) find_package(HDF5 REQUIRED) - target_link_libraries(h5md ${HDF5_LIBRARIES}) + target_link_libraries(h5md PRIVATE ${HDF5_LIBRARIES}) target_include_directories(h5md PRIVATE ${HDF5_INCLUDE_DIRS}) include_directories(${HDF5_INCLUDE_DIRS}) endif() diff --git a/cmake/pkgconfig/liblammps.pc.in b/cmake/pkgconfig/liblammps.pc.in index a8710ca224..a89f992c4a 100644 --- a/cmake/pkgconfig/liblammps.pc.in +++ b/cmake/pkgconfig/liblammps.pc.in @@ -22,7 +22,7 @@ # CMakeLists.txt: # find_package(PkgConfig) # pkg_check_modules(LAMMPS IMPORTED_TARGET lammps) -# target_link_libraries( PkgConfig::LAMMPS) +# target_link_libraries( PRIVATE PkgConfig::LAMMPS) prefix=@CMAKE_INSTALL_PREFIX@ libdir=@CMAKE_INSTALL_FULL_LIBDIR@ -- GitLab From 572502b33d86a7b834dbbe5d646dee42c65e00e9 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Tue, 24 Mar 2020 09:35:57 -0600 Subject: [PATCH 065/717] cmake: add_definitions() -> target_compile_definitions() --- cmake/CMakeLists.txt | 20 ++++++++++---------- cmake/Modules/MPI4WIN.cmake | 2 +- cmake/Modules/Packages/KIM.cmake | 6 +++--- cmake/Modules/Packages/KOKKOS.cmake | 4 ++-- cmake/Modules/Packages/KSPACE.cmake | 14 +++++++------- cmake/Modules/Packages/PYTHON.cmake | 2 +- cmake/Modules/Packages/USER-INTEL.cmake | 12 ++++++------ cmake/Modules/Packages/USER-NETCDF.cmake | 6 +++--- cmake/Modules/Packages/USER-OMP.cmake | 2 +- cmake/Modules/Packages/USER-PLUMED.cmake | 8 ++++---- cmake/Modules/Packages/USER-VTK.cmake | 2 +- 11 files changed, 39 insertions(+), 39 deletions(-) diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index cc9b3fc56a..b1d90af045 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -189,11 +189,11 @@ if(BUILD_MPI) else() find_package(MPI REQUIRED) include_directories(${MPI_CXX_INCLUDE_PATH}) - add_definitions(-DMPICH_SKIP_MPICXX -DOMPI_SKIP_MPICXX=1) + target_compile_definitions(lammps PRIVATE -DMPICH_SKIP_MPICXX -DOMPI_SKIP_MPICXX=1) target_link_libraries(lammps PUBLIC MPI::MPI_CXX) option(LAMMPS_LONGLONG_TO_LONG "Workaround if your system or MPI version does not recognize 'long long' data types" OFF) if(LAMMPS_LONGLONG_TO_LONG) - add_definitions(-DLAMMPS_LONGLONG_TO_LONG) + target_compile_definitions(lammps PRIVATE -DLAMMPS_LONGLONG_TO_LONG) endif() endif() else() @@ -209,7 +209,7 @@ set(LAMMPS_SIZES_VALUES smallbig bigbig smallsmall) set_property(CACHE LAMMPS_SIZES PROPERTY STRINGS ${LAMMPS_SIZES_VALUES}) validate_option(LAMMPS_SIZES LAMMPS_SIZES_VALUES) string(TOUPPER ${LAMMPS_SIZES} LAMMPS_SIZES) -add_definitions(-DLAMMPS_${LAMMPS_SIZES}) +target_compile_definitions(lammps PRIVATE -DLAMMPS_${LAMMPS_SIZES}) set(LAMMPS_API_DEFINES "${LAMMPS_API_DEFINES} -DLAMMPS_${LAMMPS_SIZES}") # posix_memalign is not available on Windows @@ -219,12 +219,12 @@ else() set(LAMMPS_MEMALIGN "64" CACHE STRING "enables the use of the posix_memalign() call instead of malloc() when large chunks or memory are allocated by LAMMPS. Set to 0 to disable") endif() if(NOT ${LAMMPS_MEMALIGN} STREQUAL "0") - add_definitions(-DLAMMPS_MEMALIGN=${LAMMPS_MEMALIGN}) + target_compile_definitions(lammps PRIVATE -DLAMMPS_MEMALIGN=${LAMMPS_MEMALIGN}) endif() option(LAMMPS_EXCEPTIONS "enable the use of C++ exceptions for error messages (useful for library interface)" OFF) if(LAMMPS_EXCEPTIONS) - add_definitions(-DLAMMPS_EXCEPTIONS) + target_compile_definitions(lammps PUBLIC -DLAMMPS_EXCEPTIONS) set(LAMMPS_API_DEFINES "${LAMMPS_API_DEFINES} -DLAMMPS_EXCEPTIONS") endif() @@ -283,7 +283,7 @@ find_package(JPEG QUIET) option(WITH_JPEG "Enable JPEG support" ${JPEG_FOUND}) if(WITH_JPEG) find_package(JPEG REQUIRED) - add_definitions(-DLAMMPS_JPEG) + target_compile_definitions(lammps PRIVATE -DLAMMPS_JPEG) if(CMAKE_VERSION VERSION_LESS 3.12) include_directories(${JPEG_INCLUDE_DIR}) target_link_libraries(lammps PRIVATE ${JPEG_LIBRARIES}) @@ -303,7 +303,7 @@ if(WITH_PNG) find_package(PNG REQUIRED) find_package(ZLIB REQUIRED) target_link_libraries(lammps PRIVATE PNG::PNG ZLIB::ZLIB) - add_definitions(-DLAMMPS_PNG) + target_compile_definitions(lammps PRIVATE -DLAMMPS_PNG) endif() find_program(GZIP_EXECUTABLE gzip) @@ -313,7 +313,7 @@ if(WITH_GZIP) if(NOT GZIP_FOUND) message(FATAL_ERROR "gzip executable not found") endif() - add_definitions(-DLAMMPS_GZIP) + target_compile_definitions(lammps PRIVATE -DLAMMPS_GZIP) endif() find_program(FFMPEG_EXECUTABLE ffmpeg) @@ -323,7 +323,7 @@ if(WITH_FFMPEG) if(NOT FFMPEG_FOUND) message(FATAL_ERROR "ffmpeg executable not found") endif() - add_definitions(-DLAMMPS_FFMPEG) + target_compile_definitions(lammps PRIVATE -DLAMMPS_FFMPEG) endif() if(BUILD_SHARED_LIBS) @@ -413,7 +413,7 @@ endforeach() # packages that need defines set foreach(PKG MPIIO) if(PKG_${PKG}) - add_definitions(-DLMP_${PKG}) + target_compile_definitions(lammps PRIVATE -DLMP_${PKG}) endif() endforeach() diff --git a/cmake/Modules/MPI4WIN.cmake b/cmake/Modules/MPI4WIN.cmake index 1fe6daada3..a02adca77d 100644 --- a/cmake/Modules/MPI4WIN.cmake +++ b/cmake/Modules/MPI4WIN.cmake @@ -16,7 +16,7 @@ else() endif() ExternalProject_get_property(mpi4win_build SOURCE_DIR) -add_definitions(-DMPICH_SKIP_MPICXX) +target_compile_definitions(lammps PRIVATE -DMPICH_SKIP_MPICXX) include_directories("${SOURCE_DIR}/include") set(MPI4WIN_LIBRARIES "${SOURCE_DIR}/lib/libmpi.a") add_dependencies(lammps mpi4win_build) diff --git a/cmake/Modules/Packages/KIM.cmake b/cmake/Modules/Packages/KIM.cmake index 56fc1449fa..7d349f496b 100644 --- a/cmake/Modules/Packages/KIM.cmake +++ b/cmake/Modules/Packages/KIM.cmake @@ -3,16 +3,16 @@ if(PKG_KIM) find_package(CURL) if(CURL_FOUND) target_link_libraries(lammps PRIVATE CURL::libcurl) - add_definitions(-DLMP_KIM_CURL) + target_compile_definitions(lammps PRIVATE -DLMP_KIM_CURL) set(LMP_DEBUG_CURL OFF CACHE STRING "Set libcurl verbose mode on/off. If on, it displays a lot of verbose information about its operations.") mark_as_advanced(LMP_DEBUG_CURL) if(LMP_DEBUG_CURL) - add_definitions(-DLMP_DEBUG_CURL) + target_compile_definitions(lammps PRIVATE -DLMP_DEBUG_CURL) endif() set(LMP_NO_SSL_CHECK OFF CACHE STRING "Tell libcurl to not verify the peer. If on, the connection succeeds regardless of the names in the certificate. Insecure - Use with caution!") mark_as_advanced(LMP_NO_SSL_CHECK) if(LMP_NO_SSL_CHECK) - add_definitions(-DLMP_NO_SSL_CHECK) + target_compile_definitions(lammps PRIVATE -DLMP_NO_SSL_CHECK) endif() endif() find_package(KIM-API QUIET) diff --git a/cmake/Modules/Packages/KOKKOS.cmake b/cmake/Modules/Packages/KOKKOS.cmake index 58d2c139f6..34c924790e 100644 --- a/cmake/Modules/Packages/KOKKOS.cmake +++ b/cmake/Modules/Packages/KOKKOS.cmake @@ -18,7 +18,7 @@ if(PKG_KOKKOS) include_directories(${Kokkos_INCLUDE_DIRS}) target_link_libraries(lammps PRIVATE kokkos) endif() - add_definitions(-DLMP_KOKKOS) + target_compile_definitions(lammps PRIVATE -DLMP_KOKKOS) set(KOKKOS_PKG_SOURCES_DIR ${LAMMPS_SOURCE_DIR}/KOKKOS) set(KOKKOS_PKG_SOURCES ${KOKKOS_PKG_SOURCES_DIR}/kokkos.cpp @@ -44,7 +44,7 @@ if(PKG_KOKKOS) ${KOKKOS_PKG_SOURCES_DIR}/remap_kokkos.cpp) if(KOKKOS_ENABLE_CUDA) if(NOT ${FFT} STREQUAL "KISS") - add_definitions(-DFFT_CUFFT) + target_compile_definitions(lammps PRIVATE -DFFT_CUFFT) target_link_libraries(lammps PRIVATE cufft) endif() endif() diff --git a/cmake/Modules/Packages/KSPACE.cmake b/cmake/Modules/Packages/KSPACE.cmake index 2a586dccf3..e2a42f3981 100644 --- a/cmake/Modules/Packages/KSPACE.cmake +++ b/cmake/Modules/Packages/KSPACE.cmake @@ -3,7 +3,7 @@ if(PKG_KSPACE) set(FFTW "FFTW3") if(FFT_SINGLE) set(FFTW "FFTW3F") - add_definitions(-DFFT_SINGLE) + target_compile_definitions(lammps PUBLIC -DFFT_SINGLE) endif() find_package(${FFTW} QUIET) if(${FFTW}_FOUND) @@ -18,7 +18,7 @@ if(PKG_KSPACE) if(FFT STREQUAL "FFTW3") find_package(${FFTW} REQUIRED) - add_definitions(-DFFT_FFTW3) + target_compile_definitions(lammps PUBLIC -DFFT_FFTW3) target_link_libraries(lammps PUBLIC ${FFTW}::${FFTW}) if(FFTW3_OMP_LIBRARY OR FFTW3F_OMP_LIBRARY) option(FFT_FFTW_THREADS "Use threaded FFTW library" ON) @@ -28,7 +28,7 @@ if(PKG_KSPACE) if(FFT_FFTW_THREADS) if(FFTW3_OMP_LIBRARY OR FFTW3F_OMP_LIBRARY) - add_definitions(-DFFT_FFTW_THREADS) + target_compile_definitions(lammps PRIVATE -DFFT_FFTW_THREADS) target_link_libraries(lammps PRIVATE ${FFTW}::${FFTW}_OMP) else() message(FATAL_ERROR "Need OpenMP enabled FFTW3 library for FFT_THREADS") @@ -36,16 +36,16 @@ if(PKG_KSPACE) endif() elseif(FFT STREQUAL "MKL") find_package(MKL REQUIRED) - add_definitions(-DFFT_MKL) + target_compile_definitions(lammps PRIVATE -DFFT_MKL) option(FFT_MKL_THREADS "Use threaded MKL FFT" ON) if(FFT_MKL_THREADS) - add_definitions(-DFFT_MKL_THREADS) + target_compile_definitions(lammps PRIVATE -DFFT_MKL_THREADS) endif() include_directories(${MKL_INCLUDE_DIRS}) target_link_libraries(lammps PRIVATE ${MKL_LIBRARIES}) else() # last option is KISSFFT - add_definitions(-DFFT_KISS) + target_compile_definitions(lammps PRIVATE -DFFT_KISS) endif() set(FFT_PACK "array" CACHE STRING "Optimization for FFT") @@ -54,6 +54,6 @@ if(PKG_KSPACE) validate_option(FFT_PACK FFT_PACK_VALUES) if(NOT FFT_PACK STREQUAL "array") string(TOUPPER ${FFT_PACK} FFT_PACK) - add_definitions(-DFFT_PACK_${FFT_PACK}) + target_compile_definitions(lammps PRIVATE -DFFT_PACK_${FFT_PACK}) endif() endif() diff --git a/cmake/Modules/Packages/PYTHON.cmake b/cmake/Modules/Packages/PYTHON.cmake index 7d6e2999f7..4611fddb98 100644 --- a/cmake/Modules/Packages/PYTHON.cmake +++ b/cmake/Modules/Packages/PYTHON.cmake @@ -1,6 +1,6 @@ if(PKG_PYTHON) find_package(PythonLibs REQUIRED) - add_definitions(-DLMP_PYTHON) + target_compile_definitions(lammps PRIVATE -DLMP_PYTHON) include_directories(${PYTHON_INCLUDE_DIR}) target_link_libraries(lammps PRIVATE ${PYTHON_LIBRARY}) endif() diff --git a/cmake/Modules/Packages/USER-INTEL.cmake b/cmake/Modules/Packages/USER-INTEL.cmake index 0a9b634bc7..96a897297f 100644 --- a/cmake/Modules/Packages/USER-INTEL.cmake +++ b/cmake/Modules/Packages/USER-INTEL.cmake @@ -4,7 +4,7 @@ if(PKG_USER-INTEL) message(FATAL_ERROR "immintrin.h header not found, Intel package won't work without it") endif() - add_definitions(-DLMP_USER_INTEL) + target_compile_definitions(lammps PRIVATE -DLMP_USER_INTEL) set(INTEL_ARCH "cpu" CACHE STRING "Architectures used by USER-INTEL (cpu or knl)") set(INTEL_ARCH_VALUES cpu knl) @@ -24,14 +24,14 @@ if(PKG_USER-INTEL) string(TOUPPER ${INTEL_LRT_MODE} INTEL_LRT_MODE) if(INTEL_LRT_MODE STREQUAL "THREADS") if(Threads_FOUND) - add_definitions(-DLMP_INTEL_USELRT) + target_compile_definitions(lammps PRIVATE -DLMP_INTEL_USELRT) target_link_libraries(lammps PRIVATE Threads::Threads) else() message(FATAL_ERROR "Must have working threads library for Long-range thread support") endif() endif() if(INTEL_LRT_MODE STREQUAL "C++11") - add_definitions(-DLMP_INTEL_USERLRT -DLMP_INTEL_LRT11) + target_compile_definitions(lammps PRIVATE -DLMP_INTEL_USERLRT -DLMP_INTEL_LRT11) endif() if(CMAKE_CXX_COMPILER_ID STREQUAL "Intel") @@ -46,7 +46,7 @@ if(PKG_USER-INTEL) if(TBB_FOUND) target_link_libraries(lammps PRIVATE ${TBB_MALLOC_LIBRARIES}) else() - add_definitions(-DLMP_INTEL_NO_TBB) + target_compile_definitions(lammps PRIVATE -DLMP_INTEL_NO_TBB) if(CMAKE_CXX_COMPILER_ID STREQUAL "Intel") message(WARNING "USER-INTEL with Intel compilers should use TBB malloc libraries") endif() @@ -54,7 +54,7 @@ if(PKG_USER-INTEL) find_package(MKL QUIET) if(MKL_FOUND) - add_definitions(-DLMP_USE_MKL_RNG) + target_compile_definitions(lammps PRIVATE -DLMP_USE_MKL_RNG) target_link_libraries(lammps PRIVATE ${MKL_LIBRARIES}) else() message(STATUS "Pair style dpd/intel will be faster with MKL libraries") @@ -71,7 +71,7 @@ if(PKG_USER-INTEL) set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -xHost -qopenmp -qoffload") set(MIC_OPTIONS "-qoffload-option,mic,compiler,\"-fp-model fast=2 -mGLOB_default_function_attrs=\\\"gather_scatter_loop_unroll=4\\\"\"") add_compile_options(-xMIC-AVX512 -qoffload -fno-alias -ansi-alias -restrict -qoverride-limits ${MIC_OPTIONS}) - add_definitions(-DLMP_INTEL_OFFLOAD) + target_compile_definitions(lammps PRIVATE -DLMP_INTEL_OFFLOAD) else() if(CMAKE_CXX_COMPILER_ID STREQUAL "Intel") include(CheckCXXCompilerFlag) diff --git a/cmake/Modules/Packages/USER-NETCDF.cmake b/cmake/Modules/Packages/USER-NETCDF.cmake index 8d62f5f7ec..2c12d2b799 100644 --- a/cmake/Modules/Packages/USER-NETCDF.cmake +++ b/cmake/Modules/Packages/USER-NETCDF.cmake @@ -11,14 +11,14 @@ if(PKG_USER-NETCDF) if(NETCDF_FOUND) include_directories(${NETCDF_INCLUDE_DIRS}) target_link_libraries(lammps PRIVATE ${NETCDF_LIBRARIES}) - add_definitions(-DLMP_HAS_NETCDF) + target_compile_definitions(lammps PRIVATE -DLMP_HAS_NETCDF) endif(NETCDF_FOUND) if(PNETCDF_FOUND) include_directories(${PNETCDF_INCLUDES}) target_link_libraries(lammps PRIVATE ${PNETCDF_LIBRARIES}) - add_definitions(-DLMP_HAS_PNETCDF) + target_compile_definitions(lammps PRIVATE -DLMP_HAS_PNETCDF) endif(PNETCDF_FOUND) - add_definitions(-DNC_64BIT_DATA=0x0020) + target_compile_definitions(lammps PRIVATE -DNC_64BIT_DATA=0x0020) endif() diff --git a/cmake/Modules/Packages/USER-OMP.cmake b/cmake/Modules/Packages/USER-OMP.cmake index 4b1a4b1571..91f0467a17 100644 --- a/cmake/Modules/Packages/USER-OMP.cmake +++ b/cmake/Modules/Packages/USER-OMP.cmake @@ -6,7 +6,7 @@ if(PKG_USER-OMP) ${USER-OMP_SOURCES_DIR}/fix_nh_omp.cpp ${USER-OMP_SOURCES_DIR}/fix_nh_sphere_omp.cpp ${USER-OMP_SOURCES_DIR}/domain_omp.cpp) - add_definitions(-DLMP_USER_OMP) + target_compile_definitions(lammps PRIVATE -DLMP_USER_OMP) set_property(GLOBAL PROPERTY "OMP_SOURCES" "${USER-OMP_SOURCES}") # detects styles which have USER-OMP version diff --git a/cmake/Modules/Packages/USER-PLUMED.cmake b/cmake/Modules/Packages/USER-PLUMED.cmake index a6cd20adbb..cfd187ed9d 100644 --- a/cmake/Modules/Packages/USER-PLUMED.cmake +++ b/cmake/Modules/Packages/USER-PLUMED.cmake @@ -69,12 +69,12 @@ if(PKG_USER-PLUMED) set(PLUMED_INSTALL_DIR ${INSTALL_DIR}) add_dependencies(lammps plumed_build) if(PLUMED_MODE STREQUAL "STATIC") - add_definitions(-D__PLUMED_WRAPPER_CXX=1) + target_compile_definitions(lammps PRIVATE -D__PLUMED_WRAPPER_CXX=1) target_link_libraries(lammps PRIVATE ${PLUMED_INSTALL_DIR}/lib/libplumed.a ${PLUMED_LINK_LIBS} ${CMAKE_DL_LIBS}) elseif(PLUMED_MODE STREQUAL "SHARED") target_link_libraries(lammps PRIVATE ${PLUMED_INSTALL_DIR}/lib/libplumed${CMAKE_SHARED_LIBRARY_SUFFIX} ${PLUMED_INSTALL_DIR}/lib/libplumedKernel${CMAKE_SHARED_LIBRARY_SUFFIX} ${CMAKE_DL_LIBS}) elseif(PLUMED_MODE STREQUAL "RUNTIME") - add_definitions(-D__PLUMED_HAS_DLOPEN=1 -D__PLUMED_DEFAULT_KERNEL=${PLUMED_INSTALL_DIR}/lib/libplumedKernel${CMAKE_SHARED_LIBRARY_SUFFIX}) + target_compile_definitions(lammps PRIVATE -D__PLUMED_HAS_DLOPEN=1 -D__PLUMED_DEFAULT_KERNEL=${PLUMED_INSTALL_DIR}/lib/libplumedKernel${CMAKE_SHARED_LIBRARY_SUFFIX}) target_link_libraries(lammps PRIVATE ${PLUMED_INSTALL_DIR}/lib/libplumedWrapper.a -rdynamic ${CMAKE_DL_LIBS}) endif() set(PLUMED_INCLUDE_DIRS "${PLUMED_INSTALL_DIR}/include") @@ -82,12 +82,12 @@ if(PKG_USER-PLUMED) find_package(PkgConfig REQUIRED) pkg_check_modules(PLUMED REQUIRED plumed) if(PLUMED_MODE STREQUAL "STATIC") - add_definitions(-D__PLUMED_WRAPPER_CXX=1) + target_compile_definitions(lammps PRIVATE -D__PLUMED_WRAPPER_CXX=1) include(${PLUMED_LIBDIR}/plumed/src/lib/Plumed.cmake.static) elseif(PLUMED_MODE STREQUAL "SHARED") include(${PLUMED_LIBDIR}/plumed/src/lib/Plumed.cmake.shared) elseif(PLUMED_MODE STREQUAL "RUNTIME") - add_definitions(-D__PLUMED_HAS_DLOPEN=1 -D__PLUMED_DEFAULT_KERNEL=${PLUMED_LIBDIR}/libplumedKernel${CMAKE_SHARED_LIBRARY_SUFFIX}) + target_compile_definitions(lammps PRIVATE -D__PLUMED_HAS_DLOPEN=1 -D__PLUMED_DEFAULT_KERNEL=${PLUMED_LIBDIR}/libplumedKernel${CMAKE_SHARED_LIBRARY_SUFFIX}) include(${PLUMED_LIBDIR}/plumed/src/lib/Plumed.cmake.runtime) endif() target_link_libraries(lammps PRIVATE ${PLUMED_LOAD}) diff --git a/cmake/Modules/Packages/USER-VTK.cmake b/cmake/Modules/Packages/USER-VTK.cmake index fb69f115b2..61defcbf82 100644 --- a/cmake/Modules/Packages/USER-VTK.cmake +++ b/cmake/Modules/Packages/USER-VTK.cmake @@ -1,6 +1,6 @@ if(PKG_USER-VTK) find_package(VTK REQUIRED NO_MODULE) include(${VTK_USE_FILE}) - add_definitions(-DLAMMPS_VTK) + target_compile_definitions(lammps PRIVATE -DLAMMPS_VTK) target_link_libraries(lammps PRIVATE ${VTK_LIBRARIES}) endif() -- GitLab From f2ab654662fbba0a43a3919d13bb48590d8d08a9 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Tue, 24 Mar 2020 10:41:19 -0600 Subject: [PATCH 066/717] cmake: some include_directories() -> target_include_directories() --- cmake/CMakeLists.txt | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index b1d90af045..aaafd9c3f6 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -165,7 +165,7 @@ endif() ###################################################### # packages with special compiler needs or external libs ###################################################### -include_directories(${LAMMPS_SOURCE_DIR}) +target_include_directories(lammps PRIVATE ${LAMMPS_SOURCE_DIR}) if(PKG_USER-ADIOS) # The search for ADIOS2 must come before MPI because @@ -200,7 +200,7 @@ else() enable_language(C) file(GLOB MPI_SOURCES ${LAMMPS_SOURCE_DIR}/STUBS/mpi.c) add_library(mpi_stubs STATIC ${MPI_SOURCES}) - include_directories(${LAMMPS_SOURCE_DIR}/STUBS) + target_include_directories(mpi_stubs PUBLIC ${LAMMPS_SOURCE_DIR}/STUBS) target_link_libraries(lammps PRIVATE mpi_stubs) endif() @@ -285,7 +285,7 @@ if(WITH_JPEG) find_package(JPEG REQUIRED) target_compile_definitions(lammps PRIVATE -DLAMMPS_JPEG) if(CMAKE_VERSION VERSION_LESS 3.12) - include_directories(${JPEG_INCLUDE_DIR}) + target_include_directories(lammps PRIVATE ${JPEG_INCLUDE_DIR}) target_link_libraries(lammps PRIVATE ${JPEG_LIBRARIES}) else() target_link_libraries(lammps PRIVATE JPEG::JPEG) @@ -404,7 +404,7 @@ foreach(PKG ${DEFAULT_PACKAGES}) RegisterStyles(${${PKG}_SOURCES_DIR}) target_sources(lammps PRIVATE ${${PKG}_SOURCES}) - include_directories(${${PKG}_SOURCES_DIR}) + target_include_directories(lammps PRIVATE ${${PKG}_SOURCES_DIR}) endif() RegisterPackages(${${PKG}_SOURCES_DIR}) @@ -504,7 +504,7 @@ set(LAMMPS_STYLE_HEADERS_DIR ${CMAKE_CURRENT_BINARY_DIR}/styles) GenerateStyleHeaders(${LAMMPS_STYLE_HEADERS_DIR}) GeneratePackagesHeaders(${LAMMPS_STYLE_HEADERS_DIR}) -include_directories(${LAMMPS_STYLE_HEADERS_DIR}) +target_include_directories(lammps PRIVATE ${LAMMPS_STYLE_HEADERS_DIR}) ###################################### # Generate lmpinstalledpkgs.h -- GitLab From 31930139c6a5ffcb956ec7da462df330590b3a77 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Tue, 24 Mar 2020 10:49:13 -0600 Subject: [PATCH 067/717] USER-SMD.cmake: use Eigen3 imported target --- cmake/Modules/Packages/USER-SMD.cmake | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cmake/Modules/Packages/USER-SMD.cmake b/cmake/Modules/Packages/USER-SMD.cmake index eed60ae8bd..9d2c48fe1d 100644 --- a/cmake/Modules/Packages/USER-SMD.cmake +++ b/cmake/Modules/Packages/USER-SMD.cmake @@ -15,7 +15,7 @@ if(PKG_USER-SMD) CONFIGURE_COMMAND "" BUILD_COMMAND "" INSTALL_COMMAND "" ) ExternalProject_get_property(Eigen3_build SOURCE_DIR) - set(EIGEN3_INCLUDE_DIR ${SOURCE_DIR}) + target_include_directories(lammps ${SOURCE_DIR}) add_dependencies(lammps Eigen3_build) else() find_package(Eigen3 NO_MODULE) @@ -23,6 +23,6 @@ if(PKG_USER-SMD) if(NOT EIGEN3_FOUND) message(FATAL_ERROR "Eigen3 not found, help CMake to find it by setting EIGEN3_INCLUDE_DIR, or set DOWNLOAD_EIGEN3=ON to download it") endif() + target_link_libraries(lammps PRIVATE Eigen3::Eigen) endif() - include_directories(${EIGEN3_INCLUDE_DIR}) endif() -- GitLab From 9b244b14a6f00f14237e51b3124cda8b420d63a8 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Tue, 24 Mar 2020 10:56:49 -0600 Subject: [PATCH 068/717] atc: needs lammps.h --- cmake/CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index aaafd9c3f6..a93f1ee42a 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -465,6 +465,7 @@ if(PKG_USER-ATC) message(FATAL_ERROR "The USER-ATC Package is not compatible with -DLAMMPS_BIGBIG") endif() target_link_libraries(atc PRIVATE ${LAPACK_LIBRARIES}) + target_include_directories(atc PRIVATE ${LAMMPS_SOURCE_DIR}) endif() include(Packages/USER-H5MD) -- GitLab From 51eb865d6342ec32cd1262635a86d78802f75c7c Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Tue, 24 Mar 2020 11:05:25 -0600 Subject: [PATCH 069/717] VORONOI.cmake: use VORO imported target --- cmake/Modules/FindVORO.cmake | 16 +++++++++++++--- cmake/Modules/Packages/VORONOI.cmake | 7 +++---- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/cmake/Modules/FindVORO.cmake b/cmake/Modules/FindVORO.cmake index b0cccbcd1d..3f0fe98ff1 100644 --- a/cmake/Modules/FindVORO.cmake +++ b/cmake/Modules/FindVORO.cmake @@ -10,13 +10,23 @@ find_path(VORO_INCLUDE_DIR voro++.hh PATH_SUFFIXES voro++) find_library(VORO_LIBRARY NAMES voro++) -set(VORO_LIBRARIES ${VORO_LIBRARY}) -set(VORO_INCLUDE_DIRS ${VORO_INCLUDE_DIR}) - include(FindPackageHandleStandardArgs) # handle the QUIETLY and REQUIRED arguments and set VORO_FOUND to TRUE # if all listed variables are TRUE find_package_handle_standard_args(VORO DEFAULT_MSG VORO_LIBRARY VORO_INCLUDE_DIR) +# Copy the results to the output variables and target. +if(VORO_FOUND) + set(VORO_LIBRARIES ${VORO_LIBRARY}) + set(VORO_INCLUDE_DIRS ${VORO_INCLUDE_DIR}) + + if(NOT TARGET VORO::VORO) + add_library(VORO::VORO UNKNOWN IMPORTED) + set_target_properties(VORO::VORO PROPERTIES + IMPORTED_LOCATION "${VORO_LIBRARY}" + INTERFACE_INCLUDE_DIRECTORIES "${VORO_INCLUDE_DIR}") + endif() +endif() + mark_as_advanced(VORO_INCLUDE_DIR VORO_LIBRARY ) diff --git a/cmake/Modules/Packages/VORONOI.cmake b/cmake/Modules/Packages/VORONOI.cmake index d2bb185228..e7f2b6b46d 100644 --- a/cmake/Modules/Packages/VORONOI.cmake +++ b/cmake/Modules/Packages/VORONOI.cmake @@ -29,15 +29,14 @@ if(PKG_VORONOI) BUILD_BYPRODUCTS /src/libvoro++.a ) ExternalProject_get_property(voro_build SOURCE_DIR) - set(VORO_LIBRARIES ${SOURCE_DIR}/src/libvoro++.a) - set(VORO_INCLUDE_DIRS ${SOURCE_DIR}/src) + target_link_libraries(lammps PRIVATE ${SOURCE_DIR}/src/libvoro++.a) + target_include_directories(lammps PRIVATE ${SOURCE_DIR}/src) add_dependencies(lammps voro_build) else() find_package(VORO) if(NOT VORO_FOUND) message(FATAL_ERROR "Voro++ library not found. Help CMake to find it by setting VORO_LIBRARY and VORO_INCLUDE_DIR, or set DOWNLOAD_VORO=ON to download it") endif() + target_link_libraries(lammps PRIVATE VORO::VORO) endif() - include_directories(${VORO_INCLUDE_DIRS}) - target_link_libraries(lammps PRIVATE ${VORO_LIBRARIES}) endif() -- GitLab From 4736402dd944d773a081fbf7cc6933010644da64 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Tue, 24 Mar 2020 11:07:45 -0600 Subject: [PATCH 070/717] cmake: atc needs mpi itself --- cmake/CMakeLists.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index a93f1ee42a..0001f37fce 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -202,6 +202,7 @@ else() add_library(mpi_stubs STATIC ${MPI_SOURCES}) target_include_directories(mpi_stubs PUBLIC ${LAMMPS_SOURCE_DIR}/STUBS) target_link_libraries(lammps PRIVATE mpi_stubs) + add_library(MPI::MPI_CXX ALIAS mpi_stubs) endif() set(LAMMPS_SIZES "smallbig" CACHE STRING "LAMMPS integer sizes (smallsmall: all 32-bit, smallbig: 64-bit #atoms #timesteps, bigbig: also 64-bit imageint, 64-bit atom ids)") @@ -464,7 +465,7 @@ if(PKG_USER-ATC) if(LAMMPS_SIZES STREQUAL BIGBIG) message(FATAL_ERROR "The USER-ATC Package is not compatible with -DLAMMPS_BIGBIG") endif() - target_link_libraries(atc PRIVATE ${LAPACK_LIBRARIES}) + target_link_libraries(atc PRIVATE ${LAPACK_LIBRARIES} MPI::MPI_CXX) target_include_directories(atc PRIVATE ${LAMMPS_SOURCE_DIR}) endif() -- GitLab From 33a57ed21592615a752021c789df4db142747edd Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Tue, 24 Mar 2020 11:36:21 -0600 Subject: [PATCH 071/717] cmake: some more include_directories() -> target_include_directories() --- cmake/Modules/MPI4WIN.cmake | 2 +- cmake/Modules/Packages/CORESHELL.cmake | 2 +- cmake/Modules/Packages/GPU.cmake | 2 +- cmake/Modules/Packages/KIM.cmake | 2 +- cmake/Modules/Packages/KOKKOS.cmake | 4 ++-- cmake/Modules/Packages/KSPACE.cmake | 2 +- cmake/Modules/Packages/MESSAGE.cmake | 2 +- cmake/Modules/Packages/OPT.cmake | 2 +- cmake/Modules/Packages/PYTHON.cmake | 2 +- cmake/Modules/Packages/QEQ.cmake | 2 +- cmake/Modules/Packages/USER-H5MD.cmake | 1 - cmake/Modules/Packages/USER-INTEL.cmake | 2 +- cmake/Modules/Packages/USER-OMP.cmake | 2 +- cmake/Modules/Packages/USER-PLUMED.cmake | 2 +- cmake/Modules/Packages/USER-SDPD.cmake | 2 +- 15 files changed, 15 insertions(+), 16 deletions(-) diff --git a/cmake/Modules/MPI4WIN.cmake b/cmake/Modules/MPI4WIN.cmake index a02adca77d..4447289668 100644 --- a/cmake/Modules/MPI4WIN.cmake +++ b/cmake/Modules/MPI4WIN.cmake @@ -17,7 +17,7 @@ endif() ExternalProject_get_property(mpi4win_build SOURCE_DIR) target_compile_definitions(lammps PRIVATE -DMPICH_SKIP_MPICXX) -include_directories("${SOURCE_DIR}/include") +target_include_directories(lammps PRIVATE "${SOURCE_DIR}/include") set(MPI4WIN_LIBRARIES "${SOURCE_DIR}/lib/libmpi.a") add_dependencies(lammps mpi4win_build) set(LAMMPS_USE_MPI4WIN ON) diff --git a/cmake/Modules/Packages/CORESHELL.cmake b/cmake/Modules/Packages/CORESHELL.cmake index 2afe2b8c1b..e550b1989f 100644 --- a/cmake/Modules/Packages/CORESHELL.cmake +++ b/cmake/Modules/Packages/CORESHELL.cmake @@ -9,5 +9,5 @@ if(PKG_CORESHELL) get_property(CORESHELL_SOURCES GLOBAL PROPERTY CORESHELL_SOURCES) target_sources(lammps PRIVATE ${CORESHELL_SOURCES}) - include_directories(${CORESHELL_SOURCES_DIR}) + target_include_directories(lammps PRIVATE ${CORESHELL_SOURCES_DIR}) endif() diff --git a/cmake/Modules/Packages/GPU.cmake b/cmake/Modules/Packages/GPU.cmake index 95bb525dd5..cd359068e7 100644 --- a/cmake/Modules/Packages/GPU.cmake +++ b/cmake/Modules/Packages/GPU.cmake @@ -193,5 +193,5 @@ if(PKG_GPU) get_property(GPU_SOURCES GLOBAL PROPERTY GPU_SOURCES) target_sources(lammps PRIVATE ${GPU_SOURCES}) - include_directories(${GPU_SOURCES_DIR}) + target_include_directories(lammps PRIVATE ${GPU_SOURCES_DIR}) endif() diff --git a/cmake/Modules/Packages/KIM.cmake b/cmake/Modules/Packages/KIM.cmake index 7d349f496b..5a4b12956e 100644 --- a/cmake/Modules/Packages/KIM.cmake +++ b/cmake/Modules/Packages/KIM.cmake @@ -62,5 +62,5 @@ if(PKG_KIM) find_package(KIM-API ${KIM-API_MIN_VERSION} REQUIRED) endif() target_link_libraries(lammps PRIVATE "${KIM-API_LDFLAGS}") - include_directories(${KIM-API_INCLUDE_DIRS}) + target_include_directories(lammps PRIVATE ${KIM-API_INCLUDE_DIRS}) endif() diff --git a/cmake/Modules/Packages/KOKKOS.cmake b/cmake/Modules/Packages/KOKKOS.cmake index 34c924790e..083b55840c 100644 --- a/cmake/Modules/Packages/KOKKOS.cmake +++ b/cmake/Modules/Packages/KOKKOS.cmake @@ -15,7 +15,7 @@ if(PKG_KOKKOS) ${LAMMPS_LIB_KOKKOS_SRC_DIR}/containers/src ${LAMMPS_LIB_KOKKOS_SRC_DIR}/algorithms/src ${LAMMPS_LIB_KOKKOS_BIN_DIR}) - include_directories(${Kokkos_INCLUDE_DIRS}) + target_include_directories(lammps PRIVATE ${Kokkos_INCLUDE_DIRS}) target_link_libraries(lammps PRIVATE kokkos) endif() target_compile_definitions(lammps PRIVATE -DLMP_KOKKOS) @@ -70,5 +70,5 @@ if(PKG_KOKKOS) get_property(KOKKOS_PKG_SOURCES GLOBAL PROPERTY KOKKOS_PKG_SOURCES) target_sources(lammps PRIVATE ${KOKKOS_PKG_SOURCES}) - include_directories(${KOKKOS_PKG_SOURCES_DIR}) + target_include_directories(lammps PRIVATE ${KOKKOS_PKG_SOURCES_DIR}) endif() diff --git a/cmake/Modules/Packages/KSPACE.cmake b/cmake/Modules/Packages/KSPACE.cmake index e2a42f3981..184a70f746 100644 --- a/cmake/Modules/Packages/KSPACE.cmake +++ b/cmake/Modules/Packages/KSPACE.cmake @@ -41,7 +41,7 @@ if(PKG_KSPACE) if(FFT_MKL_THREADS) target_compile_definitions(lammps PRIVATE -DFFT_MKL_THREADS) endif() - include_directories(${MKL_INCLUDE_DIRS}) + target_include_directories(lammps PRIVATE ${MKL_INCLUDE_DIRS}) target_link_libraries(lammps PRIVATE ${MKL_LIBRARIES}) else() # last option is KISSFFT diff --git a/cmake/Modules/Packages/MESSAGE.cmake b/cmake/Modules/Packages/MESSAGE.cmake index c28c50c507..54d9f3eef7 100644 --- a/cmake/Modules/Packages/MESSAGE.cmake +++ b/cmake/Modules/Packages/MESSAGE.cmake @@ -28,5 +28,5 @@ if(PKG_MESSAGE) endif() target_link_libraries(lammps PRIVATE cslib) - include_directories(${LAMMPS_LIB_SOURCE_DIR}/message/cslib/src) + target_include_directories(lammps PRIVATE ${LAMMPS_LIB_SOURCE_DIR}/message/cslib/src) endif() diff --git a/cmake/Modules/Packages/OPT.cmake b/cmake/Modules/Packages/OPT.cmake index 02e3877c59..5d006bfd58 100644 --- a/cmake/Modules/Packages/OPT.cmake +++ b/cmake/Modules/Packages/OPT.cmake @@ -9,5 +9,5 @@ if(PKG_OPT) get_property(OPT_SOURCES GLOBAL PROPERTY OPT_SOURCES) target_sources(lammps PRIVATE ${OPT_SOURCES}) - include_directories(${OPT_SOURCES_DIR}) + target_include_directories(lammps PRIVATE ${OPT_SOURCES_DIR}) endif() diff --git a/cmake/Modules/Packages/PYTHON.cmake b/cmake/Modules/Packages/PYTHON.cmake index 4611fddb98..b2451ebbdf 100644 --- a/cmake/Modules/Packages/PYTHON.cmake +++ b/cmake/Modules/Packages/PYTHON.cmake @@ -1,6 +1,6 @@ if(PKG_PYTHON) find_package(PythonLibs REQUIRED) target_compile_definitions(lammps PRIVATE -DLMP_PYTHON) - include_directories(${PYTHON_INCLUDE_DIR}) + target_include_directories(lammps PRIVATE ${PYTHON_INCLUDE_DIR}) target_link_libraries(lammps PRIVATE ${PYTHON_LIBRARY}) endif() diff --git a/cmake/Modules/Packages/QEQ.cmake b/cmake/Modules/Packages/QEQ.cmake index 9b151c2610..d69fb23440 100644 --- a/cmake/Modules/Packages/QEQ.cmake +++ b/cmake/Modules/Packages/QEQ.cmake @@ -16,5 +16,5 @@ if(PKG_QEQ) get_property(QEQ_SOURCES GLOBAL PROPERTY QEQ_SOURCES) target_sources(lammps PRIVATE ${QEQ_SOURCES}) - include_directories(${QEQ_SOURCES_DIR}) + target_include_directories(lammps PRIVATE ${QEQ_SOURCES_DIR}) endif() diff --git a/cmake/Modules/Packages/USER-H5MD.cmake b/cmake/Modules/Packages/USER-H5MD.cmake index 1e3fcf82ce..cf5623f46d 100644 --- a/cmake/Modules/Packages/USER-H5MD.cmake +++ b/cmake/Modules/Packages/USER-H5MD.cmake @@ -4,5 +4,4 @@ if(PKG_USER-H5MD) find_package(HDF5 REQUIRED) target_link_libraries(h5md PRIVATE ${HDF5_LIBRARIES}) target_include_directories(h5md PRIVATE ${HDF5_INCLUDE_DIRS}) - include_directories(${HDF5_INCLUDE_DIRS}) endif() diff --git a/cmake/Modules/Packages/USER-INTEL.cmake b/cmake/Modules/Packages/USER-INTEL.cmake index 96a897297f..d81f793f50 100644 --- a/cmake/Modules/Packages/USER-INTEL.cmake +++ b/cmake/Modules/Packages/USER-INTEL.cmake @@ -109,5 +109,5 @@ if(PKG_USER-INTEL) endif() target_sources(lammps PRIVATE ${USER-INTEL_SOURCES}) - include_directories(${USER-INTEL_SOURCES_DIR}) + target_include_directories(lammps PRIVATE ${USER-INTEL_SOURCES_DIR}) endif() diff --git a/cmake/Modules/Packages/USER-OMP.cmake b/cmake/Modules/Packages/USER-OMP.cmake index 91f0467a17..42f91495d5 100644 --- a/cmake/Modules/Packages/USER-OMP.cmake +++ b/cmake/Modules/Packages/USER-OMP.cmake @@ -38,5 +38,5 @@ if(PKG_USER-OMP) endif() target_sources(lammps PRIVATE ${USER-OMP_SOURCES}) - include_directories(${USER-OMP_SOURCES_DIR}) + target_include_directories(lammps PRIVATE ${USER-OMP_SOURCES_DIR}) endif() diff --git a/cmake/Modules/Packages/USER-PLUMED.cmake b/cmake/Modules/Packages/USER-PLUMED.cmake index cfd187ed9d..75b2db2f93 100644 --- a/cmake/Modules/Packages/USER-PLUMED.cmake +++ b/cmake/Modules/Packages/USER-PLUMED.cmake @@ -92,5 +92,5 @@ if(PKG_USER-PLUMED) endif() target_link_libraries(lammps PRIVATE ${PLUMED_LOAD}) endif() - include_directories(${PLUMED_INCLUDE_DIRS}) + target_include_directories(lammps PRIVATE ${PLUMED_INCLUDE_DIRS}) endif() diff --git a/cmake/Modules/Packages/USER-SDPD.cmake b/cmake/Modules/Packages/USER-SDPD.cmake index 1105fbd7ce..750194bcc6 100644 --- a/cmake/Modules/Packages/USER-SDPD.cmake +++ b/cmake/Modules/Packages/USER-SDPD.cmake @@ -11,5 +11,5 @@ if(PKG_USER-SDPD) endif() set_property(GLOBAL PROPERTY FIX "${hlist}") - include_directories(${USER-SDPD_SOURCES_DIR}) + target_include_directories(lammps PRIVATE ${USER-SDPD_SOURCES_DIR}) endif() -- GitLab From d8b6d10f3b9d65f99232980510011ace2db068a6 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Tue, 24 Mar 2020 11:42:36 -0600 Subject: [PATCH 072/717] MSCG.cmake: create an use imported target --- cmake/Modules/FindMSCG.cmake | 16 +++++++++++++--- cmake/Modules/Packages/MSCG.cmake | 12 ++++++++---- 2 files changed, 21 insertions(+), 7 deletions(-) diff --git a/cmake/Modules/FindMSCG.cmake b/cmake/Modules/FindMSCG.cmake index 311ff78038..b301303dbe 100644 --- a/cmake/Modules/FindMSCG.cmake +++ b/cmake/Modules/FindMSCG.cmake @@ -10,13 +10,23 @@ find_path(MSCG_INCLUDE_DIR mscg.h PATH_SUFFIXES mscg) find_library(MSCG_LIBRARY NAMES mscg) -set(MSCG_LIBRARIES ${MSCG_LIBRARY}) -set(MSCG_INCLUDE_DIRS ${MSCG_INCLUDE_DIR}) - include(FindPackageHandleStandardArgs) # handle the QUIETLY and REQUIRED arguments and set MSCG_FOUND to TRUE # if all listed variables are TRUE find_package_handle_standard_args(MSCG DEFAULT_MSG MSCG_LIBRARY MSCG_INCLUDE_DIR) +# Copy the results to the output variables and target. +if(MSCG_FOUND) + set(MSCG_LIBRARIES ${MSCG_LIBRARY}) + set(MSCG_INCLUDE_DIRS ${MSCG_INCLUDE_DIR}) + + if(NOT TARGET MSCG::MSCG) + add_library(MSCG::MSCG UNKNOWN IMPORTED) + set_target_properties(MSCG::MSCG PROPERTIES + IMPORTED_LOCATION "${MSCG_LIBRARY}" + INTERFACE_INCLUDE_DIRECTORIES "${MSCG_INCLUDE_DIR}") + endif() +endif() + mark_as_advanced(MSCG_INCLUDE_DIR MSCG_LIBRARY ) diff --git a/cmake/Modules/Packages/MSCG.cmake b/cmake/Modules/Packages/MSCG.cmake index 2c63e69fa7..750a1a8c37 100644 --- a/cmake/Modules/Packages/MSCG.cmake +++ b/cmake/Modules/Packages/MSCG.cmake @@ -29,12 +29,17 @@ if(PKG_MSCG) BUILD_BYPRODUCTS /libmscg.a ) ExternalProject_get_property(mscg_build BINARY_DIR) - set(MSCG_LIBRARIES ${BINARY_DIR}/libmscg.a) ExternalProject_get_property(mscg_build SOURCE_DIR) set(MSCG_INCLUDE_DIRS ${SOURCE_DIR}/src) + if(NOT TARGET MSCG::MSCG) + add_library(MSCG::MSCG UNKNOWN IMPORTED) + set_target_properties(MSCG::MSCG PROPERTIES + IMPORTED_LOCATION "${BINARY_DIR}/libmscg.a" + INTERFACE_INCLUDE_DIRECTORIES "${MSCG_INCLUDE_DIRS}") + endif() add_dependencies(lammps mscg_build) if(NOT LAPACK_FOUND) - file(MAKE_DIRECTORY ${MSCG_INCLUDE_DIRS}) + file(MAKE_DIRECTORY ) add_dependencies(mscg_build linalg) endif() else() @@ -43,6 +48,5 @@ if(PKG_MSCG) message(FATAL_ERROR "MSCG not found, help CMake to find it by setting MSCG_LIBRARY and MSCG_INCLUDE_DIRS, or set DOWNLOAD_MSCG=ON to download it") endif() endif() - target_link_libraries(lammps PRIVATE ${MSCG_LIBRARIES} GSL::gsl ${LAPACK_LIBRARIES}) - include_directories(${MSCG_INCLUDE_DIRS}) + target_link_libraries(lammps PRIVATE MSCG::MSCG GSL::gsl ${LAPACK_LIBRARIES}) endif() -- GitLab From 72c94f0fbf7c70c18fb44820247fe2b83667efb6 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Tue, 24 Mar 2020 11:49:24 -0600 Subject: [PATCH 073/717] USER-SCAFACOS.cmake: use imported pkg-config target --- cmake/Modules/Packages/USER-SCAFACOS.cmake | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/cmake/Modules/Packages/USER-SCAFACOS.cmake b/cmake/Modules/Packages/USER-SCAFACOS.cmake index ebd750c04b..6725472c07 100644 --- a/cmake/Modules/Packages/USER-SCAFACOS.cmake +++ b/cmake/Modules/Packages/USER-SCAFACOS.cmake @@ -46,7 +46,7 @@ if(PKG_USER-SCAFACOS) ) ExternalProject_get_property(scafacos_build INSTALL_DIR) set(SCAFACOS_BUILD_DIR ${INSTALL_DIR}) - set(SCAFACOS_INCLUDE_DIRS ${SCAFACOS_BUILD_DIR}/include) + target_include_directories(lammps PRIVATE ${SCAFACOS_BUILD_DIR}/include) add_dependencies(lammps scafacos_build) # list and order from pkg_config file of ScaFaCoS build target_link_libraries(lammps PRIVATE ${SCAFACOS_BUILD_DIR}/lib/libfcs.a) @@ -69,8 +69,7 @@ if(PKG_USER-SCAFACOS) target_link_libraries(lammps PRIVATE ${MPI_C_LIBRARIES}) else() find_package(PkgConfig REQUIRED) - pkg_check_modules(SCAFACOS REQUIRED scafacos) - target_link_libraries(lammps PRIVATE ${SCAFACOS_LDFLAGS}) + pkg_check_modules(SCAFACOS REQUIRED IMPORTED_TARGET scafacos) + target_link_libraries(lammps PRIVATE PkgConfig::SCAFACOS) endif() - include_directories(${SCAFACOS_INCLUDE_DIRS}) endif() -- GitLab From d19f112c754e8345813e23d1743bca837c87d27b Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Tue, 24 Mar 2020 12:18:10 -0600 Subject: [PATCH 074/717] MSCG.cmake: fix up imported target --- cmake/Modules/Packages/MSCG.cmake | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/cmake/Modules/Packages/MSCG.cmake b/cmake/Modules/Packages/MSCG.cmake index 750a1a8c37..f4bac7d422 100644 --- a/cmake/Modules/Packages/MSCG.cmake +++ b/cmake/Modules/Packages/MSCG.cmake @@ -31,15 +31,11 @@ if(PKG_MSCG) ExternalProject_get_property(mscg_build BINARY_DIR) ExternalProject_get_property(mscg_build SOURCE_DIR) set(MSCG_INCLUDE_DIRS ${SOURCE_DIR}/src) - if(NOT TARGET MSCG::MSCG) - add_library(MSCG::MSCG UNKNOWN IMPORTED) - set_target_properties(MSCG::MSCG PROPERTIES - IMPORTED_LOCATION "${BINARY_DIR}/libmscg.a" - INTERFACE_INCLUDE_DIRECTORIES "${MSCG_INCLUDE_DIRS}") - endif() + target_include_directories(lammps PRIVATE ${MSCG_INCLUDE_DIRS}) + target_link_libraries(lammps PRIVATE "${BINARY_DIR}/libmscg.a") add_dependencies(lammps mscg_build) if(NOT LAPACK_FOUND) - file(MAKE_DIRECTORY ) + file(MAKE_DIRECTORY ${MSCG_INCLUDE_DIRS}) add_dependencies(mscg_build linalg) endif() else() @@ -47,6 +43,7 @@ if(PKG_MSCG) if(NOT MSCG_FOUND) message(FATAL_ERROR "MSCG not found, help CMake to find it by setting MSCG_LIBRARY and MSCG_INCLUDE_DIRS, or set DOWNLOAD_MSCG=ON to download it") endif() + target_link_libraries(lammps PRIVATE MSCG::MSCG) endif() - target_link_libraries(lammps PRIVATE MSCG::MSCG GSL::gsl ${LAPACK_LIBRARIES}) + target_link_libraries(lammps PRIVATE GSL::gsl ${LAPACK_LIBRARIES}) endif() -- GitLab From f5279a291e93195054e4099ef0fec0ccb5f61093 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Tue, 24 Mar 2020 12:23:39 -0600 Subject: [PATCH 075/717] USER-QUIP.cmake: create and use imported target --- cmake/Modules/FindQUIP.cmake | 13 +++++++++++-- cmake/Modules/Packages/USER-QUIP.cmake | 2 +- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/cmake/Modules/FindQUIP.cmake b/cmake/Modules/FindQUIP.cmake index b6d87d11fa..277cfae49e 100644 --- a/cmake/Modules/FindQUIP.cmake +++ b/cmake/Modules/FindQUIP.cmake @@ -7,12 +7,21 @@ find_library(QUIP_LIBRARY NAMES quip) -set(QUIP_LIBRARIES ${QUIP_LIBRARY}) - include(FindPackageHandleStandardArgs) # handle the QUIETLY and REQUIRED arguments and set QUIP_FOUND to TRUE # if all listed variables are TRUE find_package_handle_standard_args(QUIP DEFAULT_MSG QUIP_LIBRARY) +# Copy the results to the output variables and target. +if(QUIP_FOUND) + set(QUIP_LIBRARIES ${QUIP_LIBRARY}) + + if(NOT TARGET QUIP::QUIP) + add_library(QUIP::QUIP UNKNOWN IMPORTED) + set_target_properties(QUIP::QUIP PROPERTIES + IMPORTED_LOCATION "${QUIP_LIBRARY}") + endif() +endif() + mark_as_advanced(QUIP_LIBRARY) diff --git a/cmake/Modules/Packages/USER-QUIP.cmake b/cmake/Modules/Packages/USER-QUIP.cmake index 52ba7e9c47..4f41f9ef98 100644 --- a/cmake/Modules/Packages/USER-QUIP.cmake +++ b/cmake/Modules/Packages/USER-QUIP.cmake @@ -1,5 +1,5 @@ if(PKG_USER-QUIP) enable_language(Fortran) find_package(QUIP REQUIRED) - target_link_libraries(lammps PRIVATE ${LAPACK_LIBRARIES}) + target_link_libraries(lammps PRIVATE QUIP::QUIP ${LAPACK_LIBRARIES}) endif() -- GitLab From 99d4a226b5d0f74927b118dbd1bb4b90edaa7606 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Tue, 24 Mar 2020 12:33:36 -0600 Subject: [PATCH 076/717] USER-NETCDF.cmake: create and use imported targets --- cmake/Modules/FindNetCDF.cmake | 16 ++++++++++++++-- cmake/Modules/FindPNetCDF.cmake | 9 +++++++++ cmake/Modules/Packages/USER-NETCDF.cmake | 6 ++---- 3 files changed, 25 insertions(+), 6 deletions(-) diff --git a/cmake/Modules/FindNetCDF.cmake b/cmake/Modules/FindNetCDF.cmake index 2a992b6b3b..7f0ee93520 100644 --- a/cmake/Modules/FindNetCDF.cmake +++ b/cmake/Modules/FindNetCDF.cmake @@ -112,11 +112,23 @@ NetCDF_check_interface (F90 netcdf.mod netcdff) #export accumulated results to internal varS that rest of project can depend on list (APPEND NetCDF_libs "${NETCDF_C_LIBRARIES}") -set (NETCDF_LIBRARIES ${NetCDF_libs}) -set (NETCDF_INCLUDE_DIRS ${NetCDF_includes}) # handle the QUIETLY and REQUIRED arguments and set NETCDF_FOUND to TRUE if # all listed variables are TRUE include (FindPackageHandleStandardArgs) find_package_handle_standard_args (NetCDF DEFAULT_MSG NETCDF_LIBRARIES NETCDF_INCLUDE_DIRS NETCDF_HAS_INTERFACES) + +# Copy the results to the output variables and target. +if(NetCDF_FOUND) + set (NETCDF_LIBRARIES ${NetCDF_libs}) + set (NETCDF_INCLUDE_DIRS ${NetCDF_includes}) + + if(NOT TARGET NetCDF::NetCDF) + add_library(NetCDF::NetCDF UNKNOWN IMPORTED) + set_target_properties(NetCDF::NetCDF PROPERTIES + IMPORTED_LOCATION "${NETCDF_LIBRARY}" + INTERFACE_INCLUDE_DIRECTORIES "${NetCDF_includes}" + INTERFACE_LINK_LIBRARIES "${NETCDF_LIBRARIES}") + endif() +endif() diff --git a/cmake/Modules/FindPNetCDF.cmake b/cmake/Modules/FindPNetCDF.cmake index bc3a5f9538..e501e9af49 100644 --- a/cmake/Modules/FindPNetCDF.cmake +++ b/cmake/Modules/FindPNetCDF.cmake @@ -53,3 +53,12 @@ include (FindPackageHandleStandardArgs) find_package_handle_standard_args (PNetCDF DEFAULT_MSG PNETCDF_LIBRARIES PNETCDF_INCLUDES) mark_as_advanced (PNETCDF_LIBRARIES PNETCDF_INCLUDES) + +if(PNetCDF_FOUND) + if(NOT TARGET PNetCDF::PNetCDF) + add_library(PNetCDF::PNetCDF UNKNOWN IMPORTED) + set_target_properties(PNetCDF::PNetCDF PROPERTIES + IMPORTED_LOCATION "${PNETCDF_LIBRARIES}" + INTERFACE_INCLUDE_DIRECTORIES "${PNETCDF_INCLUDES}") + endif() +endif() diff --git a/cmake/Modules/Packages/USER-NETCDF.cmake b/cmake/Modules/Packages/USER-NETCDF.cmake index 2c12d2b799..a149c7357d 100644 --- a/cmake/Modules/Packages/USER-NETCDF.cmake +++ b/cmake/Modules/Packages/USER-NETCDF.cmake @@ -9,14 +9,12 @@ if(PKG_USER-NETCDF) endif(NETCDF_FOUND) if(NETCDF_FOUND) - include_directories(${NETCDF_INCLUDE_DIRS}) - target_link_libraries(lammps PRIVATE ${NETCDF_LIBRARIES}) + target_link_libraries(lammps PRIVATE NetCDF::NetCDF) target_compile_definitions(lammps PRIVATE -DLMP_HAS_NETCDF) endif(NETCDF_FOUND) if(PNETCDF_FOUND) - include_directories(${PNETCDF_INCLUDES}) - target_link_libraries(lammps PRIVATE ${PNETCDF_LIBRARIES}) + target_link_libraries(lammps PRIVATE PNetCDF::PNetCDF) target_compile_definitions(lammps PRIVATE -DLMP_HAS_PNETCDF) endif(PNETCDF_FOUND) -- GitLab From 5eb77f2e9a2c3045f0b5c080ce7ef07a6eb903d2 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Tue, 24 Mar 2020 14:29:14 -0600 Subject: [PATCH 077/717] FindNetCDF.cmake: fix target --- cmake/Modules/FindNetCDF.cmake | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/cmake/Modules/FindNetCDF.cmake b/cmake/Modules/FindNetCDF.cmake index 7f0ee93520..5c8caa9208 100644 --- a/cmake/Modules/FindNetCDF.cmake +++ b/cmake/Modules/FindNetCDF.cmake @@ -112,6 +112,8 @@ NetCDF_check_interface (F90 netcdf.mod netcdff) #export accumulated results to internal varS that rest of project can depend on list (APPEND NetCDF_libs "${NETCDF_C_LIBRARIES}") +set (NETCDF_LIBRARIES ${NetCDF_libs}) +set (NETCDF_INCLUDE_DIRS ${NetCDF_includes}) # handle the QUIETLY and REQUIRED arguments and set NETCDF_FOUND to TRUE if # all listed variables are TRUE @@ -121,14 +123,11 @@ find_package_handle_standard_args (NetCDF # Copy the results to the output variables and target. if(NetCDF_FOUND) - set (NETCDF_LIBRARIES ${NetCDF_libs}) - set (NETCDF_INCLUDE_DIRS ${NetCDF_includes}) - if(NOT TARGET NetCDF::NetCDF) add_library(NetCDF::NetCDF UNKNOWN IMPORTED) set_target_properties(NetCDF::NetCDF PROPERTIES IMPORTED_LOCATION "${NETCDF_LIBRARY}" - INTERFACE_INCLUDE_DIRECTORIES "${NetCDF_includes}" + INTERFACE_INCLUDE_DIRECTORIES "${NETCDF_INCLUDE_DIRS}" INTERFACE_LINK_LIBRARIES "${NETCDF_LIBRARIES}") endif() endif() -- GitLab From 0da108f06fe2b7372a0ade40378b4368edbaa257 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Tue, 24 Mar 2020 14:50:38 -0600 Subject: [PATCH 078/717] cmake: remove last include_directories() call --- cmake/CMakeLists.txt | 1 - 1 file changed, 1 deletion(-) diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index 0001f37fce..3569ffc555 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -188,7 +188,6 @@ if(BUILD_MPI) include(MPI4WIN) else() find_package(MPI REQUIRED) - include_directories(${MPI_CXX_INCLUDE_PATH}) target_compile_definitions(lammps PRIVATE -DMPICH_SKIP_MPICXX -DOMPI_SKIP_MPICXX=1) target_link_libraries(lammps PUBLIC MPI::MPI_CXX) option(LAMMPS_LONGLONG_TO_LONG "Workaround if your system or MPI version does not recognize 'long long' data types" OFF) -- GitLab From b8464da71ffbe6c1697b2c2071924d75c2ea30d0 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Wed, 25 Mar 2020 07:45:21 -0600 Subject: [PATCH 079/717] cmake: remove FindLAMMPS.cmake --- cmake/CMakeLists.txt | 2 -- cmake/FindLAMMPS.cmake.in | 48 --------------------------------------- 2 files changed, 50 deletions(-) delete mode 100644 cmake/FindLAMMPS.cmake.in diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index 3569ffc555..02d7b50f1b 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -584,8 +584,6 @@ if(BUILD_LIB) install(FILES ${LAMMPS_CXX_HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/lammps) configure_file(pkgconfig/liblammps.pc.in ${CMAKE_CURRENT_BINARY_DIR}/liblammps${LAMMPS_LIB_SUFFIX}.pc @ONLY) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/liblammps${LAMMPS_LIB_SUFFIX}.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) - configure_file(FindLAMMPS.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/FindLAMMPS${LAMMPS_LIB_SUFFIX}.cmake @ONLY) - install(FILES ${CMAKE_CURRENT_BINARY_DIR}/FindLAMMPS${LAMMPS_LIB_SUFFIX}.cmake DESTINATION ${CMAKE_INSTALL_DATADIR}/cmake/Modules) endif() if(BUILD_EXE) diff --git a/cmake/FindLAMMPS.cmake.in b/cmake/FindLAMMPS.cmake.in deleted file mode 100644 index 586df83c2d..0000000000 --- a/cmake/FindLAMMPS.cmake.in +++ /dev/null @@ -1,48 +0,0 @@ -# - Find liblammps -# Find the native liblammps headers and libraries. -# -# The following variables will set: -# LAMMPS_INCLUDE_DIRS - where to find lammps/library.h, etc. -# LAMMPS_LIBRARIES - List of libraries when using lammps. -# LAMMPS_API_DEFINES - lammps library api defines -# LAMMPS_VERSION - lammps library version -# LAMMPS_FOUND - True if liblammps found. -# -# In addition a LAMMPS::LAMMPS imported target is getting created. -# -# 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. -# - -find_package(PkgConfig) - -pkg_check_modules(PC_LAMMPS liblammps@LAMMPS_LIB_SUFFIX@) -find_path(LAMMPS_INCLUDE_DIR lammps/library.h HINTS ${PC_LAMMPS_INCLUDE_DIRS} @CMAKE_INSTALL_FULL_INCLUDEDIR@) - -set(LAMMPS_VERSION @LAMMPS_VERSION@) -set(LAMMPS_API_DEFINES @LAMMPS_API_DEFINES@) - -find_library(LAMMPS_LIBRARY NAMES lammps@LAMMPS_LIB_SUFFIX@ HINTS ${PC_LAMMPS_LIBRARY_DIRS} @CMAKE_INSTALL_FULL_LIBDIR@) - -set(LAMMPS_INCLUDE_DIRS "${LAMMPS_INCLUDE_DIR}") -set(LAMMPS_LIBRARIES "${LAMMPS_LIBRARY}") - -include(FindPackageHandleStandardArgs) -# handle the QUIETLY and REQUIRED arguments and set LAMMPS_FOUND to TRUE -# if all listed variables are TRUE -find_package_handle_standard_args(LAMMPS REQUIRED_VARS LAMMPS_LIBRARY LAMMPS_INCLUDE_DIR VERSION_VAR LAMMPS_VERSION) - -mark_as_advanced(LAMMPS_INCLUDE_DIR LAMMPS_LIBRARY) - -if(LAMMPS_FOUND AND NOT TARGET LAMMPS::LAMMPS) - add_library(LAMMPS::LAMMPS UNKNOWN IMPORTED) - set_target_properties(LAMMPS::LAMMPS PROPERTIES IMPORTED_LOCATION "${LAMMPS_LIBRARY}" INTERFACE_INCLUDE_DIRECTORIES "${LAMMPS_INCLUDE_DIR}" INTERFACE_COMPILE_DEFINITIONS "${LAMMPS_API_DEFINES}") -endif() -- GitLab From 0e9f65e0219b86d959ba66c948a6951c8003d80b Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Wed, 25 Mar 2020 08:43:57 -0600 Subject: [PATCH 080/717] cmake: add exported target --- cmake/CMakeLists.txt | 9 +++++++-- cmake/LAMMPSConfig.cmake.in | 5 +++++ cmake/pkgconfig/liblammps.pc.in | 8 +------- 3 files changed, 13 insertions(+), 9 deletions(-) create mode 100644 cmake/LAMMPSConfig.cmake.in diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index 02d7b50f1b..97bb00e250 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -26,7 +26,7 @@ set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/Modules) include(LAMMPSUtils) -get_lammps_version(${LAMMPS_SOURCE_DIR}/version.h LAMMPS_VERSION) +get_lammps_version(${LAMMPS_SOURCE_DIR}/version.h PROJECT_VERSION) include(PreventInSourceBuilds) @@ -579,11 +579,16 @@ if(BUILD_LIB) set_target_properties(lammps PROPERTIES OUTPUT_NAME lammps${LAMMPS_LIB_SUFFIX}) set_target_properties(lammps PROPERTIES SOVERSION ${SOVERSION}) - install(TARGETS lammps LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) + install(TARGETS lammps EXPORT LAMMPS_Targets LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) install(FILES ${LAMMPS_SOURCE_DIR}/library.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/lammps) install(FILES ${LAMMPS_CXX_HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/lammps) configure_file(pkgconfig/liblammps.pc.in ${CMAKE_CURRENT_BINARY_DIR}/liblammps${LAMMPS_LIB_SUFFIX}.pc @ONLY) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/liblammps${LAMMPS_LIB_SUFFIX}.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) + install(EXPORT LAMMPS_Targets FILE LAMMPS_Targets.cmake NAMESPACE LAMMPS:: DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/LAMMPS) + include(CMakePackageConfigHelpers) + configure_file(LAMMPSConfig.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/LAMMPSConfig.cmake @ONLY) + write_basic_package_version_file("LAMMPSConfigVersion.cmake" VERSION ${PROJECT_VERSION} COMPATIBILITY ExactVersion) + install(FILES "${CMAKE_CURRENT_BINARY_DIR}/LAMMPSConfig.cmake" "${CMAKE_CURRENT_BINARY_DIR}/LAMMPSConfigVersion.cmake" DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/LAMMPS) endif() if(BUILD_EXE) diff --git a/cmake/LAMMPSConfig.cmake.in b/cmake/LAMMPSConfig.cmake.in new file mode 100644 index 0000000000..0dacfc2089 --- /dev/null +++ b/cmake/LAMMPSConfig.cmake.in @@ -0,0 +1,5 @@ +include(CMakeFindDependencyMacro) +if(@BUILD_MPI@) + find_dependency(MPI REQUIRED CXX) +endif() +include("${CMAKE_CURRENT_LIST_DIR}/LAMMPS_Targets.cmake") diff --git a/cmake/pkgconfig/liblammps.pc.in b/cmake/pkgconfig/liblammps.pc.in index a89f992c4a..96dab89161 100644 --- a/cmake/pkgconfig/liblammps.pc.in +++ b/cmake/pkgconfig/liblammps.pc.in @@ -18,12 +18,6 @@ # myapp_CFLAGS = $(LAMMPS_CFLAGS) # myapp_LDADD = $(LAMMPS_LIBS) -# Use this in CMake: -# CMakeLists.txt: -# find_package(PkgConfig) -# pkg_check_modules(LAMMPS IMPORTED_TARGET lammps) -# target_link_libraries( PRIVATE PkgConfig::LAMMPS) - prefix=@CMAKE_INSTALL_PREFIX@ libdir=@CMAKE_INSTALL_FULL_LIBDIR@ includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@ @@ -31,7 +25,7 @@ includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@ Name: liblammps@LAMMPS_MACHINE@ Description: Large-scale Atomic/Molecular Massively Parallel Simulator Library URL: http://lammps.sandia.gov -Version: @LAMMPS_VERSION@ +Version: @PROJECT_VERSION@ Requires: Libs: -L${libdir} -llammps@LAMMPS_LIB_SUFFIX@ Libs.private: -lm -- GitLab From ee3249676e726d5173d8b1efdf1f63c6b72ea2e3 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Wed, 25 Mar 2020 09:09:59 -0600 Subject: [PATCH 081/717] cmake: use OpenMP imported target --- cmake/CMakeLists.txt | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index 97bb00e250..befbe4ecda 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -255,8 +255,7 @@ if(BUILD_OMP) if(NOT HAVE_OMP_H_INCLUDE) message(FATAL_ERROR "Cannot find required 'omp.h' header file") endif() - set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}") - set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}") + target_link_libraries(lammps PRIVATE OpenMP::OpenMP_CXX) endif() if(PKG_MSCG OR PKG_USER-ATC OR PKG_USER-AWPMD OR PKG_USER-QUIP OR PKG_LATTE) -- GitLab From 58c9c4c64bc02d279b163cfb766ca6a4060f107d Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Wed, 25 Mar 2020 10:14:42 -0600 Subject: [PATCH 082/717] USER-H5MD.cmake: make hdf5 incldir public --- cmake/Modules/Packages/USER-H5MD.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/Modules/Packages/USER-H5MD.cmake b/cmake/Modules/Packages/USER-H5MD.cmake index cf5623f46d..2893f7903c 100644 --- a/cmake/Modules/Packages/USER-H5MD.cmake +++ b/cmake/Modules/Packages/USER-H5MD.cmake @@ -3,5 +3,5 @@ if(PKG_USER-H5MD) find_package(HDF5 REQUIRED) target_link_libraries(h5md PRIVATE ${HDF5_LIBRARIES}) - target_include_directories(h5md PRIVATE ${HDF5_INCLUDE_DIRS}) + target_include_directories(h5md PUBLIC ${HDF5_INCLUDE_DIRS}) endif() -- GitLab From 2571b6058e82315fc7031b083b34fb05b9da06cc Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Wed, 25 Mar 2020 11:26:19 -0600 Subject: [PATCH 083/717] LATTE.cmake: create and use imported target --- cmake/Modules/FindLATTE.cmake | 13 +++++++++++-- cmake/Modules/Packages/LATTE.cmake | 10 +++++----- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/cmake/Modules/FindLATTE.cmake b/cmake/Modules/FindLATTE.cmake index 74d5173bf0..ac5c639b79 100644 --- a/cmake/Modules/FindLATTE.cmake +++ b/cmake/Modules/FindLATTE.cmake @@ -7,12 +7,21 @@ find_library(LATTE_LIBRARY NAMES latte) -set(LATTE_LIBRARIES ${LATTE_LIBRARY}) - include(FindPackageHandleStandardArgs) # handle the QUIETLY and REQUIRED arguments and set LATTE_FOUND to TRUE # if all listed variables are TRUE find_package_handle_standard_args(LATTE DEFAULT_MSG LATTE_LIBRARY) +# Copy the results to the output variables and target. +if(LATTE_FOUND) + set(LATTE_LIBRARIES ${LATTE_LIBRARY}) + + if(NOT TARGET LATTE::latte) + add_library(LATTE::latte UNKNOWN IMPORTED) + set_target_properties(LATTE::latte PROPERTIES + IMPORTED_LOCATION "${LATTE_LIBRARY}") + endif() +endif() + mark_as_advanced(LATTE_LIBRARY) diff --git a/cmake/Modules/Packages/LATTE.cmake b/cmake/Modules/Packages/LATTE.cmake index abadd1cd97..20944db1a9 100644 --- a/cmake/Modules/Packages/LATTE.cmake +++ b/cmake/Modules/Packages/LATTE.cmake @@ -26,15 +26,15 @@ if(PKG_LATTE) ) add_dependencies(lammps latte_build) ExternalProject_get_property(latte_build INSTALL_DIR) - set(LATTE_LIBRARIES ${INSTALL_DIR}/${_LATTE_LIBDIR}/liblatte.a) + target_link_libraries(lammps PRIVATE ${INSTALL_DIR}/${_LATTE_LIBDIR}/liblatte.a ${LAPACK_LIBRARIES}) + if(NOT LAPACK_FOUND) + add_dependencies(latte_build linalg) + endif() else() find_package(LATTE) if(NOT LATTE_FOUND) message(FATAL_ERROR "LATTE library not found, help CMake to find it by setting LATTE_LIBRARY, or set DOWNLOAD_LATTE=ON to download it") endif() + target_link_libraries(lammps PRIVATE LATTE::latte) endif() - if(NOT LAPACK_FOUND) - add_dependencies(latte_build linalg) - endif() - target_link_libraries(lammps PRIVATE ${LATTE_LIBRARIES} ${LAPACK_LIBRARIES}) endif() -- GitLab From ad37c0a8064439d3684fd59125642b74731ee58b Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Wed, 25 Mar 2020 14:42:23 -0600 Subject: [PATCH 084/717] USER-SMD.cmake: fix a typo --- cmake/Modules/Packages/USER-SMD.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/Modules/Packages/USER-SMD.cmake b/cmake/Modules/Packages/USER-SMD.cmake index 9d2c48fe1d..4aa2b7ad04 100644 --- a/cmake/Modules/Packages/USER-SMD.cmake +++ b/cmake/Modules/Packages/USER-SMD.cmake @@ -15,7 +15,7 @@ if(PKG_USER-SMD) CONFIGURE_COMMAND "" BUILD_COMMAND "" INSTALL_COMMAND "" ) ExternalProject_get_property(Eigen3_build SOURCE_DIR) - target_include_directories(lammps ${SOURCE_DIR}) + target_include_directories(lammps PRIVATE ${SOURCE_DIR}) add_dependencies(lammps Eigen3_build) else() find_package(Eigen3 NO_MODULE) -- GitLab From 1e59101606fdcf10c63b3a7f00f69b3a04a0abae Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Wed, 25 Mar 2020 14:51:26 -0600 Subject: [PATCH 085/717] cmake: fix exported target --- cmake/CMakeLists.txt | 3 +++ cmake/Modules/Packages/USER-COLVARS.cmake | 2 ++ 2 files changed, 5 insertions(+) diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index 02be3a2e55..ceba03d2ea 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -199,6 +199,7 @@ else() enable_language(C) file(GLOB MPI_SOURCES ${LAMMPS_SOURCE_DIR}/STUBS/mpi.c) add_library(mpi_stubs STATIC ${MPI_SOURCES}) + install(TARGETS mpi_stubs EXPORT LAMMPS_Targets LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) target_include_directories(mpi_stubs PUBLIC ${LAMMPS_SOURCE_DIR}/STUBS) target_link_libraries(lammps PRIVATE mpi_stubs) add_library(MPI::MPI_CXX ALIAS mpi_stubs) @@ -278,6 +279,7 @@ if(PKG_MSCG OR PKG_USER-ATC OR PKG_USER-AWPMD OR PKG_USER-QUIP OR PKG_LATTE) enable_language(Fortran) file(GLOB LAPACK_SOURCES ${LAMMPS_LIB_SOURCE_DIR}/linalg/[^.]*.[fF]) add_library(linalg STATIC ${LAPACK_SOURCES}) + install(TARGETS linalg EXPORT LAMMPS_Targets LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) set(BLAS_LIBRARIES "$") set(LAPACK_LIBRARIES "$") else() @@ -449,6 +451,7 @@ foreach(SIMPLE_LIB POEMS USER-ATC USER-AWPMD USER-H5MD) ${LAMMPS_LIB_SOURCE_DIR}/${PKG_LIB}/[^.]*.c ${LAMMPS_LIB_SOURCE_DIR}/${PKG_LIB}/[^.]*.cpp) add_library(${PKG_LIB} STATIC ${${PKG_LIB}_SOURCES}) + install(TARGETS ${PKG_LIB} EXPORT LAMMPS_Targets LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) if(LAMMPS_USE_MPI4WIN) add_dependencies(${PKG_LIB} mpi4win_build) endif() diff --git a/cmake/Modules/Packages/USER-COLVARS.cmake b/cmake/Modules/Packages/USER-COLVARS.cmake index 2a337b9c8b..20e63fd99f 100644 --- a/cmake/Modules/Packages/USER-COLVARS.cmake +++ b/cmake/Modules/Packages/USER-COLVARS.cmake @@ -11,10 +11,12 @@ if(PKG_USER-COLVARS) set(LEPTON_DIR ${LAMMPS_LIB_SOURCE_DIR}/colvars/lepton) file(GLOB LEPTON_SOURCES ${LEPTON_DIR}/src/[^.]*.cpp) add_library(lepton STATIC ${LEPTON_SOURCES}) + install(TARGETS lepton EXPORT LAMMPS_Targets LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) target_include_directories(lepton PRIVATE ${LEPTON_DIR}/include) endif() add_library(colvars STATIC ${COLVARS_SOURCES}) + install(TARGETS colvars EXPORT LAMMPS_Targets LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) target_include_directories(colvars PUBLIC ${LAMMPS_LIB_SOURCE_DIR}/colvars) target_link_libraries(lammps PRIVATE colvars) -- GitLab From 568aaeca221de3a5d65ab938a3457bff057ededa Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Wed, 25 Mar 2020 15:04:20 -0600 Subject: [PATCH 086/717] cmake: needs mpi --- cmake/Modules/Packages/GPU.cmake | 1 + 1 file changed, 1 insertion(+) diff --git a/cmake/Modules/Packages/GPU.cmake b/cmake/Modules/Packages/GPU.cmake index cd359068e7..1a59a9975c 100644 --- a/cmake/Modules/Packages/GPU.cmake +++ b/cmake/Modules/Packages/GPU.cmake @@ -192,6 +192,7 @@ if(PKG_GPU) get_property(GPU_SOURCES GLOBAL PROPERTY GPU_SOURCES) + target_link_libraries(gpu PRIVATE MPI::MPI_CXX) target_sources(lammps PRIVATE ${GPU_SOURCES}) target_include_directories(lammps PRIVATE ${GPU_SOURCES_DIR}) endif() -- GitLab From ad731869d7eaef0c3cd7ccda7ae8ff7df01a557f Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Wed, 25 Mar 2020 16:18:19 -0600 Subject: [PATCH 087/717] cmake: fix atc compile --- cmake/CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index ceba03d2ea..71c6d002fa 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -476,6 +476,7 @@ if(PKG_USER-ATC) endif() target_link_libraries(atc PRIVATE ${LAPACK_LIBRARIES} MPI::MPI_CXX) target_include_directories(atc PRIVATE ${LAMMPS_SOURCE_DIR}) + target_compile_definitions(atc PRIVATE -DLAMMPS_${LAMMPS_SIZES}) endif() include(Packages/USER-H5MD) -- GitLab From cad63320659f69ee7e81bcfc24f8ffa9310f1ce1 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Wed, 25 Mar 2020 18:01:01 -0600 Subject: [PATCH 088/717] cmake: add gpu to export target --- cmake/Modules/Packages/GPU.cmake | 1 + 1 file changed, 1 insertion(+) diff --git a/cmake/Modules/Packages/GPU.cmake b/cmake/Modules/Packages/GPU.cmake index 1a59a9975c..820764d2ef 100644 --- a/cmake/Modules/Packages/GPU.cmake +++ b/cmake/Modules/Packages/GPU.cmake @@ -193,6 +193,7 @@ if(PKG_GPU) get_property(GPU_SOURCES GLOBAL PROPERTY GPU_SOURCES) target_link_libraries(gpu PRIVATE MPI::MPI_CXX) + install(TARGETS gpu EXPORT LAMMPS_Targets LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) target_sources(lammps PRIVATE ${GPU_SOURCES}) target_include_directories(lammps PRIVATE ${GPU_SOURCES_DIR}) endif() -- GitLab From 761de9b13c25f1a1bf98776907bee40ae756646d Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Wed, 25 Mar 2020 18:05:36 -0600 Subject: [PATCH 089/717] cmake: add more libs to export target --- cmake/Modules/Packages/MESSAGE.cmake | 1 + cmake/Modules/Packages/USER-MOLFILE.cmake | 1 + cmake/Modules/Packages/USER-QMMM.cmake | 1 + 3 files changed, 3 insertions(+) diff --git a/cmake/Modules/Packages/MESSAGE.cmake b/cmake/Modules/Packages/MESSAGE.cmake index 54d9f3eef7..6e5d0717db 100644 --- a/cmake/Modules/Packages/MESSAGE.cmake +++ b/cmake/Modules/Packages/MESSAGE.cmake @@ -8,6 +8,7 @@ if(PKG_MESSAGE) ${LAMMPS_LIB_SOURCE_DIR}/message/cslib/[^.]*.cpp) add_library(cslib STATIC ${cslib_SOURCES}) + install(TARGETS cslib EXPORT LAMMPS_Targets LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) if(BUILD_MPI) target_compile_definitions(cslib PRIVATE -DMPI_YES) set_target_properties(cslib PROPERTIES OUTPUT_NAME "csmpi") diff --git a/cmake/Modules/Packages/USER-MOLFILE.cmake b/cmake/Modules/Packages/USER-MOLFILE.cmake index cbba1eee7b..7660f21348 100644 --- a/cmake/Modules/Packages/USER-MOLFILE.cmake +++ b/cmake/Modules/Packages/USER-MOLFILE.cmake @@ -1,6 +1,7 @@ if(PKG_USER-MOLFILE) set(MOLFILE_INCLUDE_DIRS "${LAMMPS_LIB_SOURCE_DIR}/molfile" CACHE STRING "Path to VMD molfile plugin headers") add_library(molfile INTERFACE) + install(TARGETS molfile EXPORT LAMMPS_Targets LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) target_include_directories(molfile INTERFACE ${MOLFILE_INCLUDE_DIRS}) # no need to link with -ldl on windows if(NOT ${CMAKE_SYSTEM_NAME} STREQUAL "Windows") diff --git a/cmake/Modules/Packages/USER-QMMM.cmake b/cmake/Modules/Packages/USER-QMMM.cmake index 0f3fa93b2a..ae9d1715ea 100644 --- a/cmake/Modules/Packages/USER-QMMM.cmake +++ b/cmake/Modules/Packages/USER-QMMM.cmake @@ -8,6 +8,7 @@ if(PKG_USER-QMMM) message(WARNING "It is recommended to use BUILD_SHARED_LIBS=yes with USER-QMMM") endif() add_library(qmmm STATIC ${LAMMPS_LIB_SOURCE_DIR}/qmmm/libqmmm.c) + install(TARGETS qmmm EXPORT LAMMPS_Targets LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) target_link_libraries(lammps PRIVATE qmmm) target_include_directories(qmmm PUBLIC ${LAMMPS_LIB_SOURCE_DIR}/qmmm) endif() -- GitLab From af6849f7831a78445ca378b7718a738898f61543 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Wed, 25 Mar 2020 18:10:52 -0600 Subject: [PATCH 090/717] cmake: fix up MESSAGE.cmake --- cmake/Modules/FindZMQ.cmake | 17 ++++++++++++++--- cmake/Modules/Packages/MESSAGE.cmake | 5 ++--- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/cmake/Modules/FindZMQ.cmake b/cmake/Modules/FindZMQ.cmake index 608ccda777..7d612c2eb3 100644 --- a/cmake/Modules/FindZMQ.cmake +++ b/cmake/Modules/FindZMQ.cmake @@ -1,8 +1,19 @@ find_path(ZMQ_INCLUDE_DIR zmq.h) find_library(ZMQ_LIBRARY NAMES zmq) -set(ZMQ_LIBRARIES ${ZMQ_LIBRARY}) -set(ZMQ_INCLUDE_DIRS ${ZMQ_INCLUDE_DIR}) - include(FindPackageHandleStandardArgs) find_package_handle_standard_args(ZMQ DEFAULT_MSG ZMQ_LIBRARY ZMQ_INCLUDE_DIR) + +# Copy the results to the output variables and target. +if(ZMQ_FOUND) + set(ZMQ_LIBRARIES ${ZMQ_LIBRARY}) + set(ZMQ_INCLUDE_DIRS ${ZMQ_INCLUDE_DIR}) + + if(NOT TARGET ZMQ::ZMQ) + add_library(ZMQ::ZMQ UNKNOWN IMPORTED) + set_target_properties(ZMQ::ZMQ PROPERTIES + IMPORTED_LINK_INTERFACE_LANGUAGES "C" + IMPORTED_LOCATION "${ZMQ_LIBRARY}" + INTERFACE_INCLUDE_DIRECTORIES "${ZMQ_INCLUDE_DIR}") + endif() +endif() diff --git a/cmake/Modules/Packages/MESSAGE.cmake b/cmake/Modules/Packages/MESSAGE.cmake index 6e5d0717db..28336c76cd 100644 --- a/cmake/Modules/Packages/MESSAGE.cmake +++ b/cmake/Modules/Packages/MESSAGE.cmake @@ -14,15 +14,14 @@ if(PKG_MESSAGE) set_target_properties(cslib PROPERTIES OUTPUT_NAME "csmpi") else() target_compile_definitions(cslib PRIVATE -DMPI_NO) - target_include_directories(cslib PRIVATE ${LAMMPS_LIB_SOURCE_DIR}/message/cslib/src/STUBS_MPI) set_target_properties(cslib PROPERTIES OUTPUT_NAME "csnompi") endif() + target_link_libraries(cslib PRIVATE MPI::MPI_CXX) if(MESSAGE_ZMQ) target_compile_definitions(cslib PRIVATE -DZMQ_YES) find_package(ZMQ REQUIRED) - target_include_directories(cslib PRIVATE ${ZMQ_INCLUDE_DIRS}) - target_link_libraries(cslib PUBLIC ${ZMQ_LIBRARIES}) + target_link_libraries(cslib PUBLIC ZMQ::ZMQ) else() target_compile_definitions(cslib PRIVATE -DZMQ_NO) target_include_directories(cslib PRIVATE ${LAMMPS_LIB_SOURCE_DIR}/message/cslib/src/STUBS_ZMQ) -- GitLab From b60acaa657d00dcd3ed8e28221294a66f4910c8a Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Wed, 25 Mar 2020 19:19:00 -0600 Subject: [PATCH 091/717] MESSAGE.cmake: fix up --- cmake/Modules/Packages/MESSAGE.cmake | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/cmake/Modules/Packages/MESSAGE.cmake b/cmake/Modules/Packages/MESSAGE.cmake index 28336c76cd..0b7ca5e9af 100644 --- a/cmake/Modules/Packages/MESSAGE.cmake +++ b/cmake/Modules/Packages/MESSAGE.cmake @@ -12,11 +12,12 @@ if(PKG_MESSAGE) if(BUILD_MPI) target_compile_definitions(cslib PRIVATE -DMPI_YES) set_target_properties(cslib PROPERTIES OUTPUT_NAME "csmpi") + target_link_libraries(cslib PRIVATE MPI::MPI_CXX) else() target_compile_definitions(cslib PRIVATE -DMPI_NO) + target_include_directories(cslib PRIVATE ${LAMMPS_LIB_SOURCE_DIR}/message/cslib/src/STUBS_MPI) set_target_properties(cslib PROPERTIES OUTPUT_NAME "csnompi") endif() - target_link_libraries(cslib PRIVATE MPI::MPI_CXX) if(MESSAGE_ZMQ) target_compile_definitions(cslib PRIVATE -DZMQ_YES) -- GitLab From a08cf6d6097b2ca674cc6fafc0ccf2fc24e6171e Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Wed, 25 Mar 2020 19:41:34 -0600 Subject: [PATCH 092/717] cmake: mpi_stubs needs to be public --- cmake/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index 71c6d002fa..a1eaf3f177 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -201,7 +201,7 @@ else() add_library(mpi_stubs STATIC ${MPI_SOURCES}) install(TARGETS mpi_stubs EXPORT LAMMPS_Targets LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) target_include_directories(mpi_stubs PUBLIC ${LAMMPS_SOURCE_DIR}/STUBS) - target_link_libraries(lammps PRIVATE mpi_stubs) + target_link_libraries(lammps PUBLIC mpi_stubs) add_library(MPI::MPI_CXX ALIAS mpi_stubs) endif() -- GitLab From 73b8c5ec6be12121748222c920b0985558585a64 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Wed, 25 Mar 2020 19:46:10 -0600 Subject: [PATCH 093/717] USER-PLUMED.cmake: fix fftw3 linkage --- cmake/Modules/Packages/USER-PLUMED.cmake | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/cmake/Modules/Packages/USER-PLUMED.cmake b/cmake/Modules/Packages/USER-PLUMED.cmake index 75b2db2f93..dc1d75e925 100644 --- a/cmake/Modules/Packages/USER-PLUMED.cmake +++ b/cmake/Modules/Packages/USER-PLUMED.cmake @@ -11,10 +11,14 @@ if(PKG_USER-PLUMED) find_package(BLAS REQUIRED) find_package(GSL REQUIRED) list(APPEND LAPACK_LIBRARIES ${BLAS_LIBRARIES}) - list(APPEND PLUMED_LINK_LIBS ${LAPACK_LIBRARIES} ${GSL_LIBRARIES}) + list(APPEND PLUMED_LINK_LIBS ${LAPACK_LIBRARIES} GSL::gsl) find_package(ZLIB QUIET) if(ZLIB_FOUND) - list(APPEND PLUMED_LINK_LIBS ${ZLIB_LIBRARIES}) + list(APPEND PLUMED_LINK_LIBS ZLIB::ZLIB) + endif() + find_package(FFTW3 QUIET) + if(FFTW3_FOUND) + list(APPEND PLUMED_LINK_LIBS FFTW3::FFTW3) endif() endif() -- GitLab From 897f5b19be4a321bb2a400841e89bdffa2ddf182 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Thu, 26 Mar 2020 08:41:05 -0600 Subject: [PATCH 094/717] cmake: improve exported target a bit --- cmake/CMakeLists.txt | 5 ++++- cmake/LAMMPSConfig.cmake.in | 7 +++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index a1eaf3f177..0a47c261d4 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -165,7 +165,7 @@ endif() ###################################################### # packages with special compiler needs or external libs ###################################################### -target_include_directories(lammps PRIVATE ${LAMMPS_SOURCE_DIR}) +target_include_directories(lammps PUBLIC $) if(PKG_USER-ADIOS) # The search for ADIOS2 must come before MPI because @@ -575,6 +575,7 @@ if(BUILD_LIB) ${LAMMPS_SOURCE_DIR}/lammps.h ${LAMMPS_SOURCE_DIR}/lattice.h ${LAMMPS_SOURCE_DIR}/lmppython.h + ${LAMMPS_SOURCE_DIR}/lmptype.h ${LAMMPS_SOURCE_DIR}/memory.h ${LAMMPS_SOURCE_DIR}/modify.h ${LAMMPS_SOURCE_DIR}/neighbor.h @@ -591,6 +592,8 @@ if(BUILD_LIB) set_target_properties(lammps PROPERTIES OUTPUT_NAME lammps${LAMMPS_LIB_SUFFIX}) set_target_properties(lammps PROPERTIES SOVERSION ${SOVERSION}) install(TARGETS lammps EXPORT LAMMPS_Targets LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) + target_include_directories(lammps PUBLIC $) + add_library(LAMMPS::lammps ALIAS lammps) install(FILES ${LAMMPS_SOURCE_DIR}/library.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/lammps) install(FILES ${LAMMPS_CXX_HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/lammps) configure_file(pkgconfig/liblammps.pc.in ${CMAKE_CURRENT_BINARY_DIR}/liblammps${LAMMPS_LIB_SUFFIX}.pc @ONLY) diff --git a/cmake/LAMMPSConfig.cmake.in b/cmake/LAMMPSConfig.cmake.in index 0dacfc2089..ab756333ac 100644 --- a/cmake/LAMMPSConfig.cmake.in +++ b/cmake/LAMMPSConfig.cmake.in @@ -2,4 +2,11 @@ include(CMakeFindDependencyMacro) if(@BUILD_MPI@) find_dependency(MPI REQUIRED CXX) endif() +if(@WITH_JPEG@) + find_dependency(JPEG REQUIRED) +endif() +if(@WITH_PNG@) + find_dependency(PNG REQUIRED) + find_dependency(ZLIB REQUIRED) +endif() include("${CMAKE_CURRENT_LIST_DIR}/LAMMPS_Targets.cmake") -- GitLab From e601fa4e8db5330d13d401b8863ed1e801d8c74e Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Thu, 26 Mar 2020 08:42:00 -0600 Subject: [PATCH 095/717] cmake: add example CMakeLists.txt for xamples/COUPLE/simple --- examples/COUPLE/simple/CMakeLists.txt | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 examples/COUPLE/simple/CMakeLists.txt diff --git a/examples/COUPLE/simple/CMakeLists.txt b/examples/COUPLE/simple/CMakeLists.txt new file mode 100644 index 0000000000..507c033d65 --- /dev/null +++ b/examples/COUPLE/simple/CMakeLists.txt @@ -0,0 +1,14 @@ +cmake_minimum_required(VERSION 3.10) +project(simple CXX) + +set(LAMMPS_SRC_DIRECTORY "" CACHE PATH "Path for lammps source") +if(NOT LAMMPS_SRC_DIRECTORY STREQUAL "" AND EXISTS ${LAMMPS_SRC_DIRECTORY}/cmake/CMakeLists.txt) + set(BUILD_LIB ON) + execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink ${LAMMPS_SRC_DIRECTORY}/src ${LAMMPS_SRC_DIRECTORY}/src/lammps) + add_subdirectory(${LAMMPS_SRC_DIRECTORY}/cmake lammps) +else() + find_package(LAMMPS REQUIRED) +endif() + +add_executable(simple simple.cpp) +target_link_libraries(simple LAMMPS::lammps) -- GitLab From e88e8bdabe8a748b948c02b66ba5363413df9cf2 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Thu, 26 Mar 2020 15:00:46 -0600 Subject: [PATCH 096/717] cmake: improve install of support libs --- cmake/CMakeLists.txt | 20 ++++++++++++++++---- cmake/Modules/Packages/GPU.cmake | 5 ++++- cmake/Modules/Packages/MESSAGE.cmake | 5 ++++- cmake/Modules/Packages/USER-COLVARS.cmake | 10 ++++++++-- cmake/Modules/Packages/USER-MOLFILE.cmake | 4 +++- cmake/Modules/Packages/USER-QMMM.cmake | 5 ++++- 6 files changed, 39 insertions(+), 10 deletions(-) diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index 0a47c261d4..85e6af3d11 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -199,9 +199,15 @@ else() enable_language(C) file(GLOB MPI_SOURCES ${LAMMPS_SOURCE_DIR}/STUBS/mpi.c) add_library(mpi_stubs STATIC ${MPI_SOURCES}) - install(TARGETS mpi_stubs EXPORT LAMMPS_Targets LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) + if(BUILD_LIB AND NOT BUILD_SHARED_LIBS) + install(TARGETS mpi_stubs EXPORT LAMMPS_Targets LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) + endif() + set_target_properties(mpi_stubs PROPERTIES OUTPUT_NAME lammps_mpi_stubs${LAMMPS_LIB_SUFFIX}) target_include_directories(mpi_stubs PUBLIC ${LAMMPS_SOURCE_DIR}/STUBS) - target_link_libraries(lammps PUBLIC mpi_stubs) + target_link_libraries(lammps PRIVATE mpi_stubs) + if(BUILD_EXE AND BUILD_LIB) + target_link_libraries(lmp PRIVATE mpi_stubs) + endif() add_library(MPI::MPI_CXX ALIAS mpi_stubs) endif() @@ -279,7 +285,10 @@ if(PKG_MSCG OR PKG_USER-ATC OR PKG_USER-AWPMD OR PKG_USER-QUIP OR PKG_LATTE) enable_language(Fortran) file(GLOB LAPACK_SOURCES ${LAMMPS_LIB_SOURCE_DIR}/linalg/[^.]*.[fF]) add_library(linalg STATIC ${LAPACK_SOURCES}) - install(TARGETS linalg EXPORT LAMMPS_Targets LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) + if(BUILD_LIB AND NOT BUILD_SHARED_LIBS) + install(TARGETS linalg EXPORT LAMMPS_Targets LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) + endif() + set_target_properties(linalg PROPERTIES OUTPUT_NAME lammps_linalg${LAMMPS_LIB_SUFFIX}) set(BLAS_LIBRARIES "$") set(LAPACK_LIBRARIES "$") else() @@ -451,7 +460,10 @@ foreach(SIMPLE_LIB POEMS USER-ATC USER-AWPMD USER-H5MD) ${LAMMPS_LIB_SOURCE_DIR}/${PKG_LIB}/[^.]*.c ${LAMMPS_LIB_SOURCE_DIR}/${PKG_LIB}/[^.]*.cpp) add_library(${PKG_LIB} STATIC ${${PKG_LIB}_SOURCES}) - install(TARGETS ${PKG_LIB} EXPORT LAMMPS_Targets LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) + if(BUILD_LIB AND NOT BUILD_SHARED_LIBS) + install(TARGETS ${PKG_LIB} EXPORT LAMMPS_Targets LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) + endif() + set_target_properties(${PKG_LIB} PROPERTIES OUTPUT_NAME lammps_${PKG_LIB}${LAMMPS_LIB_SUFFIX}) if(LAMMPS_USE_MPI4WIN) add_dependencies(${PKG_LIB} mpi4win_build) endif() diff --git a/cmake/Modules/Packages/GPU.cmake b/cmake/Modules/Packages/GPU.cmake index 820764d2ef..4e2ab70243 100644 --- a/cmake/Modules/Packages/GPU.cmake +++ b/cmake/Modules/Packages/GPU.cmake @@ -193,7 +193,10 @@ if(PKG_GPU) get_property(GPU_SOURCES GLOBAL PROPERTY GPU_SOURCES) target_link_libraries(gpu PRIVATE MPI::MPI_CXX) - install(TARGETS gpu EXPORT LAMMPS_Targets LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) + if(BUILD_LIB AND NOT BUILD_SHARED_LIBS) + install(TARGETS gpu EXPORT LAMMPS_Targets LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) + endif() + set_target_properties(gpu PROPERTIES OUTPUT_NAME lammps_gpu${LAMMPS_LIB_SUFFIX}) target_sources(lammps PRIVATE ${GPU_SOURCES}) target_include_directories(lammps PRIVATE ${GPU_SOURCES_DIR}) endif() diff --git a/cmake/Modules/Packages/MESSAGE.cmake b/cmake/Modules/Packages/MESSAGE.cmake index 0b7ca5e9af..f4ad35b3e0 100644 --- a/cmake/Modules/Packages/MESSAGE.cmake +++ b/cmake/Modules/Packages/MESSAGE.cmake @@ -8,7 +8,10 @@ if(PKG_MESSAGE) ${LAMMPS_LIB_SOURCE_DIR}/message/cslib/[^.]*.cpp) add_library(cslib STATIC ${cslib_SOURCES}) - install(TARGETS cslib EXPORT LAMMPS_Targets LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) + if(BUILD_LIB AND NOT BUILD_SHARED_LIBS) + install(TARGETS cslib EXPORT LAMMPS_Targets LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) + endif() + set_target_properties(cslib PROPERTIES OUTPUT_NAME lammps_cslib${LAMMPS_LIB_SUFFIX}) if(BUILD_MPI) target_compile_definitions(cslib PRIVATE -DMPI_YES) set_target_properties(cslib PROPERTIES OUTPUT_NAME "csmpi") diff --git a/cmake/Modules/Packages/USER-COLVARS.cmake b/cmake/Modules/Packages/USER-COLVARS.cmake index 20e63fd99f..1b13ffc30a 100644 --- a/cmake/Modules/Packages/USER-COLVARS.cmake +++ b/cmake/Modules/Packages/USER-COLVARS.cmake @@ -11,12 +11,18 @@ if(PKG_USER-COLVARS) set(LEPTON_DIR ${LAMMPS_LIB_SOURCE_DIR}/colvars/lepton) file(GLOB LEPTON_SOURCES ${LEPTON_DIR}/src/[^.]*.cpp) add_library(lepton STATIC ${LEPTON_SOURCES}) - install(TARGETS lepton EXPORT LAMMPS_Targets LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) + if(BUILD_LIB AND NOT BUILD_SHARED_LIBS) + install(TARGETS lepton EXPORT LAMMPS_Targets LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) + endif() + set_target_properties(lepton PROPERTIES OUTPUT_NAME lammps_lepton${LAMMPS_LIB_SUFFIX}) target_include_directories(lepton PRIVATE ${LEPTON_DIR}/include) endif() add_library(colvars STATIC ${COLVARS_SOURCES}) - install(TARGETS colvars EXPORT LAMMPS_Targets LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) + if(BUILD_LIB AND NOT BUILD_SHARED_LIBS) + install(TARGETS colvars EXPORT LAMMPS_Targets LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) + endif() + set_target_properties(colvars PROPERTIES OUTPUT_NAME lammps_colvars${LAMMPS_LIB_SUFFIX}) target_include_directories(colvars PUBLIC ${LAMMPS_LIB_SOURCE_DIR}/colvars) target_link_libraries(lammps PRIVATE colvars) diff --git a/cmake/Modules/Packages/USER-MOLFILE.cmake b/cmake/Modules/Packages/USER-MOLFILE.cmake index 7660f21348..936a214bff 100644 --- a/cmake/Modules/Packages/USER-MOLFILE.cmake +++ b/cmake/Modules/Packages/USER-MOLFILE.cmake @@ -1,7 +1,9 @@ if(PKG_USER-MOLFILE) set(MOLFILE_INCLUDE_DIRS "${LAMMPS_LIB_SOURCE_DIR}/molfile" CACHE STRING "Path to VMD molfile plugin headers") add_library(molfile INTERFACE) - install(TARGETS molfile EXPORT LAMMPS_Targets LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) + if(BUILD_LIB AND NOT BUILD_SHARED_LIBS) + install(TARGETS molfile EXPORT LAMMPS_Targets LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) + endif() target_include_directories(molfile INTERFACE ${MOLFILE_INCLUDE_DIRS}) # no need to link with -ldl on windows if(NOT ${CMAKE_SYSTEM_NAME} STREQUAL "Windows") diff --git a/cmake/Modules/Packages/USER-QMMM.cmake b/cmake/Modules/Packages/USER-QMMM.cmake index ae9d1715ea..19f5b88b74 100644 --- a/cmake/Modules/Packages/USER-QMMM.cmake +++ b/cmake/Modules/Packages/USER-QMMM.cmake @@ -8,7 +8,10 @@ if(PKG_USER-QMMM) message(WARNING "It is recommended to use BUILD_SHARED_LIBS=yes with USER-QMMM") endif() add_library(qmmm STATIC ${LAMMPS_LIB_SOURCE_DIR}/qmmm/libqmmm.c) - install(TARGETS qmmm EXPORT LAMMPS_Targets LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) + if(BUILD_LIB AND NOT BUILD_SHARED_LIBS) + install(TARGETS qmmm EXPORT LAMMPS_Targets LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) + endif() + set_target_properties(qmmm PROPERTIES OUTPUT_NAME lammps_qmmm${LAMMPS_LIB_SUFFIX}) target_link_libraries(lammps PRIVATE qmmm) target_include_directories(qmmm PUBLIC ${LAMMPS_LIB_SOURCE_DIR}/qmmm) endif() -- GitLab From 6f8915e0a580af22c226895cc4a71adead1b8098 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Fri, 27 Mar 2020 13:55:34 -0600 Subject: [PATCH 097/717] cmake: updated COUPLE/simple cmake --- examples/COUPLE/simple/CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/COUPLE/simple/CMakeLists.txt b/examples/COUPLE/simple/CMakeLists.txt index 507c033d65..5908076df0 100644 --- a/examples/COUPLE/simple/CMakeLists.txt +++ b/examples/COUPLE/simple/CMakeLists.txt @@ -3,7 +3,7 @@ project(simple CXX) set(LAMMPS_SRC_DIRECTORY "" CACHE PATH "Path for lammps source") if(NOT LAMMPS_SRC_DIRECTORY STREQUAL "" AND EXISTS ${LAMMPS_SRC_DIRECTORY}/cmake/CMakeLists.txt) - set(BUILD_LIB ON) + option(BUILD_LIB "Build LAMMPS library" ON) execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink ${LAMMPS_SRC_DIRECTORY}/src ${LAMMPS_SRC_DIRECTORY}/src/lammps) add_subdirectory(${LAMMPS_SRC_DIRECTORY}/cmake lammps) else() @@ -11,4 +11,4 @@ else() endif() add_executable(simple simple.cpp) -target_link_libraries(simple LAMMPS::lammps) +target_link_libraries(simple LAMMPS::lammps MPI::MPI_CXX) -- GitLab From 16ac65e8cfa8403b5765d987551f4963669fa285 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Fri, 27 Mar 2020 15:01:51 -0600 Subject: [PATCH 098/717] cmake: make mpi public again --- cmake/CMakeLists.txt | 8 +++----- examples/COUPLE/simple/CMakeLists.txt | 2 +- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index 85e6af3d11..9c47403512 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -203,11 +203,9 @@ else() install(TARGETS mpi_stubs EXPORT LAMMPS_Targets LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) endif() set_target_properties(mpi_stubs PROPERTIES OUTPUT_NAME lammps_mpi_stubs${LAMMPS_LIB_SUFFIX}) - target_include_directories(mpi_stubs PUBLIC ${LAMMPS_SOURCE_DIR}/STUBS) - target_link_libraries(lammps PRIVATE mpi_stubs) - if(BUILD_EXE AND BUILD_LIB) - target_link_libraries(lmp PRIVATE mpi_stubs) - endif() + target_include_directories(mpi_stubs PUBLIC $ $) + install(FILES ${LAMMPS_SOURCE_DIR}/STUBS/mpi.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/lammps) + target_link_libraries(lammps PUBLIC mpi_stubs) add_library(MPI::MPI_CXX ALIAS mpi_stubs) endif() diff --git a/examples/COUPLE/simple/CMakeLists.txt b/examples/COUPLE/simple/CMakeLists.txt index 5908076df0..d83f8885b2 100644 --- a/examples/COUPLE/simple/CMakeLists.txt +++ b/examples/COUPLE/simple/CMakeLists.txt @@ -11,4 +11,4 @@ else() endif() add_executable(simple simple.cpp) -target_link_libraries(simple LAMMPS::lammps MPI::MPI_CXX) +target_link_libraries(simple LAMMPS::lammps) -- GitLab From 055764c20a8a1df009f2b5cfa64b9b6e7cf7e694 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Fri, 27 Mar 2020 15:20:10 -0600 Subject: [PATCH 099/717] cmake: install exceptions.h as well --- cmake/CMakeLists.txt | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index 9c47403512..2da26874a8 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -584,6 +584,7 @@ if(BUILD_LIB) ${LAMMPS_SOURCE_DIR}/kspace.h ${LAMMPS_SOURCE_DIR}/lammps.h ${LAMMPS_SOURCE_DIR}/lattice.h + ${LAMMPS_SOURCE_DIR}/library.h ${LAMMPS_SOURCE_DIR}/lmppython.h ${LAMMPS_SOURCE_DIR}/lmptype.h ${LAMMPS_SOURCE_DIR}/memory.h @@ -598,13 +599,15 @@ if(BUILD_LIB) ${LAMMPS_SOURCE_DIR}/universe.h ${LAMMPS_SOURCE_DIR}/update.h ${LAMMPS_SOURCE_DIR}/variable.h) + if(LAMMPS_EXCEPTIONS) + list(APPEND LAMMPS_CXX_HEADERS ${LAMMPS_SOURCE_DIR}/exceptions.h) + endif() set_target_properties(lammps PROPERTIES OUTPUT_NAME lammps${LAMMPS_LIB_SUFFIX}) set_target_properties(lammps PROPERTIES SOVERSION ${SOVERSION}) install(TARGETS lammps EXPORT LAMMPS_Targets LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) target_include_directories(lammps PUBLIC $) add_library(LAMMPS::lammps ALIAS lammps) - install(FILES ${LAMMPS_SOURCE_DIR}/library.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/lammps) install(FILES ${LAMMPS_CXX_HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/lammps) configure_file(pkgconfig/liblammps.pc.in ${CMAKE_CURRENT_BINARY_DIR}/liblammps${LAMMPS_LIB_SUFFIX}.pc @ONLY) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/liblammps${LAMMPS_LIB_SUFFIX}.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) -- GitLab From 89eb5fc65a6a610f3b2c300cee8ab0752f069d0c Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Fri, 27 Mar 2020 15:35:05 -0600 Subject: [PATCH 100/717] cmake: fix build for shared libs --- cmake/CMakeLists.txt | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index 2da26874a8..585c609d24 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -205,7 +205,12 @@ else() set_target_properties(mpi_stubs PROPERTIES OUTPUT_NAME lammps_mpi_stubs${LAMMPS_LIB_SUFFIX}) target_include_directories(mpi_stubs PUBLIC $ $) install(FILES ${LAMMPS_SOURCE_DIR}/STUBS/mpi.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/lammps) - target_link_libraries(lammps PUBLIC mpi_stubs) + if(BUILD_SHARED_LIBS) + target_link_libraries(lammps PRIVATE mpi_stubs) + target_include_directories(lammps INTERFACE $ $) + else() + target_link_libraries(lammps PUBLIC mpi_stubs) + endif() add_library(MPI::MPI_CXX ALIAS mpi_stubs) endif() -- GitLab From d37e7a5025fd0a6918bde7b549db6e02851ab782 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 27 Mar 2020 21:08:43 -0400 Subject: [PATCH 101/717] fix whitespace issues --- src/USER-MEAMC/pair_meamc.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/USER-MEAMC/pair_meamc.cpp b/src/USER-MEAMC/pair_meamc.cpp index 3e87c6b284..bb0166e7fa 100644 --- a/src/USER-MEAMC/pair_meamc.cpp +++ b/src/USER-MEAMC/pair_meamc.cpp @@ -455,7 +455,7 @@ void PairMEAMC::read_files(char *globalfile, char *userfile) nset++; } - + // error if didn't find all elements in file if (nset != nelements) { @@ -537,7 +537,7 @@ void PairMEAMC::read_files(char *globalfile, char *userfile) // read settings // pass them one at a time to MEAM package // match strings to list of corresponding ints - + int maxparams = 6; char **params = new char*[maxparams]; while (1) { @@ -564,7 +564,7 @@ void PairMEAMC::read_files(char *globalfile, char *userfile) if (atom->count_words(line) == 0) continue; // params = ptrs to all fields in line - + int nparams = 0; params[nparams++] = strtok(line,"=(), '\t\n\r\f"); while (nparams < maxparams && @@ -576,7 +576,7 @@ void PairMEAMC::read_files(char *globalfile, char *userfile) if (strcmp(params[0],keywords[which]) == 0) break; if (which == nkeywords) ERRFMT(error->all, "Keyword %s in MEAM parameter file not recognized", params[0]); - + nindex = nparams - 2; for (int i = 0; i < nindex; i++) index[i] = atoi(params[i+1]) - 1; -- GitLab From 2a7f690bf2f314d535f0197342b6556bc5398dbd Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 27 Mar 2020 21:09:20 -0400 Subject: [PATCH 102/717] refactor error code handler to avoid possible string overflows and handle out of range argument --- src/USER-MEAMC/pair_meamc.cpp | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/src/USER-MEAMC/pair_meamc.cpp b/src/USER-MEAMC/pair_meamc.cpp index bb0166e7fa..c49b5abf0b 100644 --- a/src/USER-MEAMC/pair_meamc.cpp +++ b/src/USER-MEAMC/pair_meamc.cpp @@ -595,16 +595,15 @@ void PairMEAMC::read_files(char *globalfile, char *userfile) int errorflag = 0; meam_inst->meam_setup_param(which,value,nindex,index,&errorflag); if (errorflag) { - char str[128]; - snprintf(str,80,"Error in MEAM parameter file: keyword %s",params[0]); - switch(errorflag) { - case 1: strcat(str, " is out of range (please report a bug)"); break; - case 2: strcat(str, " expected more indices"); break; - case 3: strcat(str, " has out of range element index"); break; - } + const char *descr[] = { "has an unknown error", + "is out of range (please report a bug)", + "expected more indices", + "has out of range element index"}; + char str[256]; + if ((errorflag < 0) || (errorflag > 3)) errorflag = 0; + snprintf(str,256,"Error in MEAM parameter file: keyword %s %s",params[0],descr[errorflag]); error->all(FLERR,str); } - } delete [] params; } -- GitLab From c4440be3927cd321a4b84484ecefd8ad9b7ca0bb Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 27 Mar 2020 22:12:40 -0400 Subject: [PATCH 103/717] there are no more fortran sources in "simple" package libraries --- cmake/CMakeLists.txt | 1 - 1 file changed, 1 deletion(-) diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index 585c609d24..32aec2c6ae 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -459,7 +459,6 @@ foreach(SIMPLE_LIB POEMS USER-ATC USER-AWPMD USER-H5MD) string(REGEX REPLACE "^USER-" "" PKG_LIB "${SIMPLE_LIB}") string(TOLOWER "${PKG_LIB}" PKG_LIB) file(GLOB_RECURSE ${PKG_LIB}_SOURCES - ${LAMMPS_LIB_SOURCE_DIR}/${PKG_LIB}/[^.]*.F ${LAMMPS_LIB_SOURCE_DIR}/${PKG_LIB}/[^.]*.c ${LAMMPS_LIB_SOURCE_DIR}/${PKG_LIB}/[^.]*.cpp) add_library(${PKG_LIB} STATIC ${${PKG_LIB}_SOURCES}) -- GitLab From aa76ed0b0e16c1b1746968d97775fa15989de546 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 27 Mar 2020 22:25:27 -0400 Subject: [PATCH 104/717] remove tab and trailing whitespace --- src/Package.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Package.sh b/src/Package.sh index 72e8761e21..f776a02e48 100755 --- a/src/Package.sh +++ b/src/Package.sh @@ -91,7 +91,7 @@ elif (test $2 = "diff") then echo "************************************************" echo "diff -u $1/$file src/$file " echo "************************************************" - diff -u $file ../$file + diff -u $file ../$file fi done fi -- GitLab From 635cca1e8d9d849d0bc00280badee1d2e6c6367c Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Sat, 28 Mar 2020 07:39:30 -0600 Subject: [PATCH 105/717] cmake: add info.h to install --- cmake/CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index 32aec2c6ae..86b536d568 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -585,6 +585,7 @@ if(BUILD_LIB) ${LAMMPS_SOURCE_DIR}/group.h ${LAMMPS_SOURCE_DIR}/improper.h ${LAMMPS_SOURCE_DIR}/input.h + ${LAMMPS_SOURCE_DIR}/info.h ${LAMMPS_SOURCE_DIR}/kspace.h ${LAMMPS_SOURCE_DIR}/lammps.h ${LAMMPS_SOURCE_DIR}/lattice.h -- GitLab From fb9f31580c1e5c0854b7e2d25693635f5164407b Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Sat, 28 Mar 2020 08:08:26 -0600 Subject: [PATCH 106/717] cmake: install mpi.h in mpi/ subdir --- cmake/CMakeLists.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index 86b536d568..c06bee1ebe 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -203,11 +203,11 @@ else() install(TARGETS mpi_stubs EXPORT LAMMPS_Targets LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) endif() set_target_properties(mpi_stubs PROPERTIES OUTPUT_NAME lammps_mpi_stubs${LAMMPS_LIB_SUFFIX}) - target_include_directories(mpi_stubs PUBLIC $ $) - install(FILES ${LAMMPS_SOURCE_DIR}/STUBS/mpi.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/lammps) + target_include_directories(mpi_stubs PUBLIC $ $) + install(FILES ${LAMMPS_SOURCE_DIR}/STUBS/mpi.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/lammps/mpi) if(BUILD_SHARED_LIBS) target_link_libraries(lammps PRIVATE mpi_stubs) - target_include_directories(lammps INTERFACE $ $) + target_include_directories(lammps INTERFACE $ $) else() target_link_libraries(lammps PUBLIC mpi_stubs) endif() -- GitLab From b245872baeea10ebd1040459ff329888e9805dec Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Sat, 28 Mar 2020 08:28:41 -0600 Subject: [PATCH 107/717] cmake: replace include dir hack by a different hack --- examples/COUPLE/simple/CMakeLists.txt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/examples/COUPLE/simple/CMakeLists.txt b/examples/COUPLE/simple/CMakeLists.txt index d83f8885b2..c5b6b96edd 100644 --- a/examples/COUPLE/simple/CMakeLists.txt +++ b/examples/COUPLE/simple/CMakeLists.txt @@ -4,8 +4,10 @@ project(simple CXX) set(LAMMPS_SRC_DIRECTORY "" CACHE PATH "Path for lammps source") if(NOT LAMMPS_SRC_DIRECTORY STREQUAL "" AND EXISTS ${LAMMPS_SRC_DIRECTORY}/cmake/CMakeLists.txt) option(BUILD_LIB "Build LAMMPS library" ON) - execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink ${LAMMPS_SRC_DIRECTORY}/src ${LAMMPS_SRC_DIRECTORY}/src/lammps) add_subdirectory(${LAMMPS_SRC_DIRECTORY}/cmake lammps) + file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/includes) + execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink ${LAMMPS_SRC_DIRECTORY}/src ${CMAKE_CURRENT_BINARY_DIR}/includes/lammps) + target_include_directories(lammps INTERFACE $) else() find_package(LAMMPS REQUIRED) endif() -- GitLab From 4aadb554a3dd1fb2af15a8f022446740e11ea939 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Sat, 28 Mar 2020 08:43:13 -0600 Subject: [PATCH 108/717] cmake: replace incl. dir hack by even better hack --- cmake/CMakeLists.txt | 6 ++++++ examples/COUPLE/simple/CMakeLists.txt | 4 +--- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index c06bee1ebe..f10392e700 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -612,6 +612,12 @@ if(BUILD_LIB) set_target_properties(lammps PROPERTIES SOVERSION ${SOVERSION}) install(TARGETS lammps EXPORT LAMMPS_Targets LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) target_include_directories(lammps PUBLIC $) + option(LAMMPS_CREATE_IN_SOURCES_INCLUDE_DIR "include in-source lammps/ include dir" OFF) + if(LAMMPS_CREATE_IN_SOURCES_INCLUDE_DIR) + file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/includes) + execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink ${LAMMPS_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR}/includes/lammps) + target_include_directories(lammps INTERFACE $) + endif() add_library(LAMMPS::lammps ALIAS lammps) install(FILES ${LAMMPS_CXX_HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/lammps) configure_file(pkgconfig/liblammps.pc.in ${CMAKE_CURRENT_BINARY_DIR}/liblammps${LAMMPS_LIB_SUFFIX}.pc @ONLY) diff --git a/examples/COUPLE/simple/CMakeLists.txt b/examples/COUPLE/simple/CMakeLists.txt index c5b6b96edd..f4cf680f61 100644 --- a/examples/COUPLE/simple/CMakeLists.txt +++ b/examples/COUPLE/simple/CMakeLists.txt @@ -4,10 +4,8 @@ project(simple CXX) set(LAMMPS_SRC_DIRECTORY "" CACHE PATH "Path for lammps source") if(NOT LAMMPS_SRC_DIRECTORY STREQUAL "" AND EXISTS ${LAMMPS_SRC_DIRECTORY}/cmake/CMakeLists.txt) option(BUILD_LIB "Build LAMMPS library" ON) + option(LAMMPS_CREATE_IN_SOURCES_INCLUDE_DIR "include in-source lammps/ include dir" ON) add_subdirectory(${LAMMPS_SRC_DIRECTORY}/cmake lammps) - file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/includes) - execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink ${LAMMPS_SRC_DIRECTORY}/src ${CMAKE_CURRENT_BINARY_DIR}/includes/lammps) - target_include_directories(lammps INTERFACE $) else() find_package(LAMMPS REQUIRED) endif() -- GitLab From b331b2db10e1b1c38fddcd69e4b4d2f9365fb88c Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Sat, 28 Mar 2020 09:30:02 -0600 Subject: [PATCH 109/717] cmake: make incl. dir work under windows as well --- cmake/CMakeLists.txt | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index f10392e700..b71558338e 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -612,12 +612,15 @@ if(BUILD_LIB) set_target_properties(lammps PROPERTIES SOVERSION ${SOVERSION}) install(TARGETS lammps EXPORT LAMMPS_Targets LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) target_include_directories(lammps PUBLIC $) - option(LAMMPS_CREATE_IN_SOURCES_INCLUDE_DIR "include in-source lammps/ include dir" OFF) - if(LAMMPS_CREATE_IN_SOURCES_INCLUDE_DIR) - file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/includes) - execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink ${LAMMPS_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR}/includes/lammps) - target_include_directories(lammps INTERFACE $) - endif() + file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/includes/lammps) + foreach(_HEADER ${LAMMPS_CXX_HEADERS}) + get_filename_component(_HEADER_FILE ${_HEADER} NAME) + set(_FULL_HEADER_FILE ${CMAKE_CURRENT_BINARY_DIR}/includes/lammps/${_HEADER_FILE}) + add_custom_command(OUTPUT ${_FULL_HEADER_FILE} COMMAND ${CMAKE_COMMAND} -E copy_if_different ${_HEADER} ${_FULL_HEADER_FILE} DEPENDS ${_HEADER}) + add_custom_target(${_HEADER_FILE} DEPENDS ${_FULL_HEADER_FILE}) + add_dependencies(lammps ${_HEADER_FILE}) + endforeach() + target_include_directories(lammps INTERFACE $) add_library(LAMMPS::lammps ALIAS lammps) install(FILES ${LAMMPS_CXX_HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/lammps) configure_file(pkgconfig/liblammps.pc.in ${CMAKE_CURRENT_BINARY_DIR}/liblammps${LAMMPS_LIB_SUFFIX}.pc @ONLY) -- GitLab From fa2df0df0f2475790b053ff13be5f00d597e2e81 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Sat, 28 Mar 2020 15:42:51 -0600 Subject: [PATCH 110/717] cmake: clean up header install --- cmake/CMakeLists.txt | 49 ++++++++------------------------------------ 1 file changed, 8 insertions(+), 41 deletions(-) diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index b71558338e..9ec0c2eaed 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -570,42 +570,11 @@ if (${_index} GREATER -1) target_link_libraries(lammps PRIVATE ${CMAKE_Fortran_IMPLICIT_LINK_LIBRARIES}) endif() if(BUILD_LIB) - set(LAMMPS_CXX_HEADERS - ${LAMMPS_SOURCE_DIR}/angle.h - ${LAMMPS_SOURCE_DIR}/atom.h - ${LAMMPS_SOURCE_DIR}/bond.h - ${LAMMPS_SOURCE_DIR}/citeme.h - ${LAMMPS_SOURCE_DIR}/comm.h - ${LAMMPS_SOURCE_DIR}/compute.h - ${LAMMPS_SOURCE_DIR}/dihedral.h - ${LAMMPS_SOURCE_DIR}/domain.h - ${LAMMPS_SOURCE_DIR}/error.h - ${LAMMPS_SOURCE_DIR}/fix.h - ${LAMMPS_SOURCE_DIR}/force.h - ${LAMMPS_SOURCE_DIR}/group.h - ${LAMMPS_SOURCE_DIR}/improper.h - ${LAMMPS_SOURCE_DIR}/input.h - ${LAMMPS_SOURCE_DIR}/info.h - ${LAMMPS_SOURCE_DIR}/kspace.h - ${LAMMPS_SOURCE_DIR}/lammps.h - ${LAMMPS_SOURCE_DIR}/lattice.h - ${LAMMPS_SOURCE_DIR}/library.h - ${LAMMPS_SOURCE_DIR}/lmppython.h - ${LAMMPS_SOURCE_DIR}/lmptype.h - ${LAMMPS_SOURCE_DIR}/memory.h - ${LAMMPS_SOURCE_DIR}/modify.h - ${LAMMPS_SOURCE_DIR}/neighbor.h - ${LAMMPS_SOURCE_DIR}/neigh_list.h - ${LAMMPS_SOURCE_DIR}/output.h - ${LAMMPS_SOURCE_DIR}/pair.h - ${LAMMPS_SOURCE_DIR}/pointers.h - ${LAMMPS_SOURCE_DIR}/region.h - ${LAMMPS_SOURCE_DIR}/timer.h - ${LAMMPS_SOURCE_DIR}/universe.h - ${LAMMPS_SOURCE_DIR}/update.h - ${LAMMPS_SOURCE_DIR}/variable.h) + set(LAMMPS_CXX_HEADERS angle.h atom.h bond.h citeme.h comm.h compute.h dihedral.h domain.h error.h fix.h force.h group.h improper.h + input.h info.h kspace.h lammps.h lattice.h library.h lmppython.h lmptype.h memory.h modify.h neighbor.h neigh_list.h output.h + pair.h pointers.h region.h timer.h universe.h update.h variable.h) if(LAMMPS_EXCEPTIONS) - list(APPEND LAMMPS_CXX_HEADERS ${LAMMPS_SOURCE_DIR}/exceptions.h) + list(APPEND LAMMPS_CXX_HEADERS exceptions.h) endif() set_target_properties(lammps PROPERTIES OUTPUT_NAME lammps${LAMMPS_LIB_SUFFIX}) @@ -614,15 +583,13 @@ if(BUILD_LIB) target_include_directories(lammps PUBLIC $) file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/includes/lammps) foreach(_HEADER ${LAMMPS_CXX_HEADERS}) - get_filename_component(_HEADER_FILE ${_HEADER} NAME) - set(_FULL_HEADER_FILE ${CMAKE_CURRENT_BINARY_DIR}/includes/lammps/${_HEADER_FILE}) - add_custom_command(OUTPUT ${_FULL_HEADER_FILE} COMMAND ${CMAKE_COMMAND} -E copy_if_different ${_HEADER} ${_FULL_HEADER_FILE} DEPENDS ${_HEADER}) - add_custom_target(${_HEADER_FILE} DEPENDS ${_FULL_HEADER_FILE}) - add_dependencies(lammps ${_HEADER_FILE}) + add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/includes/lammps/${_HEADER} COMMAND ${CMAKE_COMMAND} -E copy_if_different ${LAMMPS_SOURCE_DIR}/${_HEADER} ${CMAKE_CURRENT_BINARY_DIR}/includes/lammps/${_HEADER} DEPENDS ${LAMMPS_SOURCE_DIR}/${_HEADER}) + add_custom_target(${_HEADER} DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/includes/lammps/${_HEADER}) + add_dependencies(lammps ${_HEADER}) + install(FILES ${LAMMPS_SOURCE_DIR}/${_HEADER} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/lammps) endforeach() target_include_directories(lammps INTERFACE $) add_library(LAMMPS::lammps ALIAS lammps) - install(FILES ${LAMMPS_CXX_HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/lammps) configure_file(pkgconfig/liblammps.pc.in ${CMAKE_CURRENT_BINARY_DIR}/liblammps${LAMMPS_LIB_SUFFIX}.pc @ONLY) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/liblammps${LAMMPS_LIB_SUFFIX}.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) install(EXPORT LAMMPS_Targets FILE LAMMPS_Targets.cmake NAMESPACE LAMMPS:: DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/LAMMPS) -- GitLab From f30116311fd3ecb582441491337301c816292449 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Sat, 28 Mar 2020 17:57:53 -0600 Subject: [PATCH 111/717] cmake: add simpleC to CMakeLists.txt --- examples/COUPLE/simple/CMakeLists.txt | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/examples/COUPLE/simple/CMakeLists.txt b/examples/COUPLE/simple/CMakeLists.txt index f4cf680f61..4112eaa4e7 100644 --- a/examples/COUPLE/simple/CMakeLists.txt +++ b/examples/COUPLE/simple/CMakeLists.txt @@ -4,11 +4,14 @@ project(simple CXX) set(LAMMPS_SRC_DIRECTORY "" CACHE PATH "Path for lammps source") if(NOT LAMMPS_SRC_DIRECTORY STREQUAL "" AND EXISTS ${LAMMPS_SRC_DIRECTORY}/cmake/CMakeLists.txt) option(BUILD_LIB "Build LAMMPS library" ON) - option(LAMMPS_CREATE_IN_SOURCES_INCLUDE_DIR "include in-source lammps/ include dir" ON) add_subdirectory(${LAMMPS_SRC_DIRECTORY}/cmake lammps) else() find_package(LAMMPS REQUIRED) endif() -add_executable(simple simple.cpp) -target_link_libraries(simple LAMMPS::lammps) +add_executable(simpleCC simple.cpp) +target_link_libraries(simpleCC LAMMPS::lammps) + +enable_language(C) +add_executable(simpleC simple.c) +target_link_libraries(simpleC LAMMPS::lammps) -- GitLab From 51e3f9dcdaf24a7d71264882d90330fd8c60159c Mon Sep 17 00:00:00 2001 From: julient31 Date: Mon, 30 Mar 2020 08:09:11 -0600 Subject: [PATCH 112/717] Commit JT 033020 - modified all spin pairs (match nve) - correct doc min_modify - correct code max norm (square values) - added draft nvt validation --- doc/src/min_modify.rst | 2 +- .../llg_exchange.py | 2 +- .../run-test-prec.sh | 4 +- .../test-spin-precession.in | 2 +- .../langevin.py | 5 - .../run-test-prec.sh | 4 +- .../validation_nve/Fe_Mishin2006.eam.alloy | 15009 ++++++++++++++++ .../validation_nve/in.spin.iron-nve | 49 + .../test_problems/validation_nve/plot_nve.py | 46 + .../validation_nve/run-test-nve.sh | 16 + .../validation_nve/test-spin-precession.in | 39 + .../validation_nvt/Fe_Mishin2006.eam.alloy | 15009 ++++++++++++++++ .../validation_nvt/in.spin.nvt_lattice | 51 + .../validation_nvt/in.spin.nvt_spin | 49 + .../test_problems/validation_nvt/plot_nvt.py | 43 + .../validation_nvt/run-test-nvt.sh | 23 + src/SPIN/compute_spin.cpp | 9 +- src/SPIN/fix_precession_spin.cpp | 8 +- src/SPIN/fix_precession_spin.h | 5 +- src/SPIN/pair_spin.cpp | 1 - src/SPIN/pair_spin.h | 5 +- src/SPIN/pair_spin_dipole_cut.cpp | 9 +- src/SPIN/pair_spin_dipole_long.cpp | 9 +- src/SPIN/pair_spin_dmi.cpp | 9 +- src/SPIN/pair_spin_exchange.cpp | 15 +- src/SPIN/pair_spin_magelec.cpp | 9 +- src/SPIN/pair_spin_neel.cpp | 10 +- src/min.cpp | 6 +- 28 files changed, 30374 insertions(+), 74 deletions(-) create mode 100644 examples/SPIN/test_problems/validation_nve/Fe_Mishin2006.eam.alloy create mode 100644 examples/SPIN/test_problems/validation_nve/in.spin.iron-nve create mode 100755 examples/SPIN/test_problems/validation_nve/plot_nve.py create mode 100755 examples/SPIN/test_problems/validation_nve/run-test-nve.sh create mode 100644 examples/SPIN/test_problems/validation_nve/test-spin-precession.in create mode 100644 examples/SPIN/test_problems/validation_nvt/Fe_Mishin2006.eam.alloy create mode 100644 examples/SPIN/test_problems/validation_nvt/in.spin.nvt_lattice create mode 100644 examples/SPIN/test_problems/validation_nvt/in.spin.nvt_spin create mode 100755 examples/SPIN/test_problems/validation_nvt/plot_nvt.py create mode 100755 examples/SPIN/test_problems/validation_nvt/run-test-nvt.sh diff --git a/doc/src/min_modify.rst b/doc/src/min_modify.rst index 4714b17aa1..18dd43620d 100644 --- a/doc/src/min_modify.rst +++ b/doc/src/min_modify.rst @@ -91,7 +91,7 @@ The choice of a norm can be modified for the min styles *cg*\ , *sd*\ the 2-norm (Euclidean length) of the global force vector: .. math:: - || \vec{F} ||_{2} = \sqrt{\vec{F}_1+ \cdots + \vec{F}_N} + || \vec{F} ||_{2} = \sqrt{\vec{F}_1^2+ \cdots + \vec{F}_N^2} The *max* norm computes the length of the 3-vector force for each atom (2-norm), and takes the maximum value of those across diff --git a/examples/SPIN/test_problems/validation_damped_exchange/llg_exchange.py b/examples/SPIN/test_problems/validation_damped_exchange/llg_exchange.py index dd1c543bb3..49eecb5b44 100755 --- a/examples/SPIN/test_problems/validation_damped_exchange/llg_exchange.py +++ b/examples/SPIN/test_problems/validation_damped_exchange/llg_exchange.py @@ -65,6 +65,6 @@ for t in range (0,N): # calc. average magnetization Sm = (S1+S2)*0.5 # calc. energy - en = -J0*(np.dot(S1,S2)) + en = -2.0*J0*(np.dot(S1,S2)) # print res. in ps for comparison with LAMMPS print(t*dt/1000.0,Sm[0],Sm[1],Sm[2],en) diff --git a/examples/SPIN/test_problems/validation_damped_precession/run-test-prec.sh b/examples/SPIN/test_problems/validation_damped_precession/run-test-prec.sh index e21f28521a..8609179376 100755 --- a/examples/SPIN/test_problems/validation_damped_precession/run-test-prec.sh +++ b/examples/SPIN/test_problems/validation_damped_precession/run-test-prec.sh @@ -13,7 +13,7 @@ en="$(echo "$en-$in" | bc -l)" tail -n +$in log.lammps | head -n $en > res_lammps.dat # compute Langevin -python3 -m llg_precession.py > res_llg.dat +python3 llg_precession.py > res_llg.dat # plot results -python3 -m plot_precession.py res_lammps.dat res_llg.dat +python3 plot_precession.py res_lammps.dat res_llg.dat diff --git a/examples/SPIN/test_problems/validation_damped_precession/test-spin-precession.in b/examples/SPIN/test_problems/validation_damped_precession/test-spin-precession.in index 6722e2a5ed..b8e943e579 100644 --- a/examples/SPIN/test_problems/validation_damped_precession/test-spin-precession.in +++ b/examples/SPIN/test_problems/validation_damped_precession/test-spin-precession.in @@ -3,7 +3,7 @@ units metal atom_style spin atom_modify map array -boundary p p p +boundary f f f # read_data singlespin.data diff --git a/examples/SPIN/test_problems/validation_langevin_precession/langevin.py b/examples/SPIN/test_problems/validation_langevin_precession/langevin.py index 7acb780143..0e9b634eeb 100755 --- a/examples/SPIN/test_problems/validation_langevin_precession/langevin.py +++ b/examples/SPIN/test_problems/validation_langevin_precession/langevin.py @@ -1,12 +1,8 @@ #!/usr/bin/env python3 -#Program fitting the exchange interaction -#Model curve: Bethe-Slater function import numpy as np, pylab, tkinter import matplotlib.pyplot as plt import mpmath as mp -# from scipy.optimize import curve_fit -# from decimal import * mub=5.78901e-5 # Bohr magneton (eV/T) kb=8.617333262145e-5 # Boltzman constant (eV/K) @@ -24,4 +20,3 @@ tf=20.0 for i in range (0,npoints): temp=ti+i*(tf-ti)/npoints print('%lf %lf %lf' % (temp,func(temp),-g*mub*Hz*func(temp))) - diff --git a/examples/SPIN/test_problems/validation_langevin_precession/run-test-prec.sh b/examples/SPIN/test_problems/validation_langevin_precession/run-test-prec.sh index 2427e20095..bcdd337903 100755 --- a/examples/SPIN/test_problems/validation_langevin_precession/run-test-prec.sh +++ b/examples/SPIN/test_problems/validation_langevin_precession/run-test-prec.sh @@ -20,7 +20,7 @@ do done # compute Langevin -python3 -m langevin.py > res_langevin.dat +python3 langevin.py > res_langevin.dat # plot results -python3 -m plot_precession.py res_lammps.dat res_langevin.dat +python3 plot_precession.py res_lammps.dat res_langevin.dat diff --git a/examples/SPIN/test_problems/validation_nve/Fe_Mishin2006.eam.alloy b/examples/SPIN/test_problems/validation_nve/Fe_Mishin2006.eam.alloy new file mode 100644 index 0000000000..69231bb7ee --- /dev/null +++ b/examples/SPIN/test_problems/validation_nve/Fe_Mishin2006.eam.alloy @@ -0,0 +1,15009 @@ +comment 1 +comment 2 +Converted by Ganga P Purja Pun using C++ code on Mon Nov 3 10:48:17 2014 +1 Fe +5001 2.400000000000000e-03 5001 1.134673400048920e-03 5.673367000244601e+00 +26 5.584700000000000e+01 2.855300000000000e+00 BCC + 0.000000000000000e+00 + -2.338738741480766e-02 + -4.628214468925276e-02 + -6.912258036387915e-02 + -9.175603963501618e-02 + -1.141497214000000e-01 + -1.363388222824136e-01 + -1.583226111166723e-01 + -1.800965752913192e-01 + -2.016645989796093e-01 + -2.230289901000000e-01 + -2.441907391820846e-01 + -2.651515164004249e-01 + -2.859130554412839e-01 + -3.064769176965011e-01 + -3.268446844000000e-01 + -3.470179531091855e-01 + -3.669982968636285e-01 + -3.867872784635140e-01 + -4.063864535839295e-01 + -4.257973671999999e-01 + -4.450215551034667e-01 + -4.640605423684923e-01 + -4.829158454463851e-01 + -5.015889707095635e-01 + -5.200814146000000e-01 + -5.383946650297390e-01 + -5.565301991603658e-01 + -5.744894857268537e-01 + -5.922739837155686e-01 + -6.098851423000000e-01 + -6.273244022645037e-01 + -6.445931939756846e-01 + -6.616929394780281e-01 + -6.786250511352716e-01 + -6.953909318999999e-01 + -7.119919765952718e-01 + -7.284295696432279e-01 + -7.447050873484842e-01 + -7.608198966551055e-01 + -7.767753551999997e-01 + -7.925728126189590e-01 + -8.082136084644670e-01 + -8.236990743647939e-01 + -8.390305327768360e-01 + -8.542092970000001e-01 + -8.692366724924486e-01 + -8.841139549244775e-01 + -8.988424321942350e-01 + -9.134233831702263e-01 + -9.278580778000000e-01 + -9.421477783833053e-01 + -9.562937376266863e-01 + -9.702972006149804e-01 + -9.841594035897939e-01 + -9.978815741999999e-01 + -1.011464932626877e+00 + -1.024910689374227e+00 + -1.038220047492379e+00 + -1.051394201530088e+00 + -1.064434338000000e+00 + -1.077341636148692e+00 + -1.090117264995124e+00 + -1.102762386491716e+00 + -1.115278154872840e+00 + -1.127665716000000e+00 + -1.139926208397942e+00 + -1.152060761127338e+00 + -1.164070496370367e+00 + -1.175956528594255e+00 + -1.187719964000000e+00 + -1.199361901614307e+00 + -1.210883431375302e+00 + -1.222285636497208e+00 + -1.233569592577916e+00 + -1.244736367000000e+00 + -1.255787020138112e+00 + -1.266722603828963e+00 + -1.277544163022812e+00 + -1.288252734706093e+00 + -1.298849349000000e+00 + -1.309335029515858e+00 + -1.319710789766606e+00 + -1.329977637188551e+00 + -1.340136572985217e+00 + -1.350188590000000e+00 + -1.360134674013246e+00 + -1.369975802739515e+00 + -1.379712947700534e+00 + -1.389347073262624e+00 + -1.398879136000000e+00 + -1.408310086019347e+00 + -1.417640866058629e+00 + -1.426872412303706e+00 + -1.436005653062347e+00 + -1.445041510000000e+00 + -1.453980898788701e+00 + -1.462824726507764e+00 + -1.471573894410746e+00 + -1.480229297407323e+00 + -1.488791823000000e+00 + -1.497262352264216e+00 + -1.505641758273629e+00 + -1.513930908641532e+00 + -1.522130664940848e+00 + -1.530241881000000e+00 + -1.538265404312065e+00 + -1.546202075663511e+00 + -1.554052729949587e+00 + -1.561818194964572e+00 + -1.569499292000000e+00 + -1.577096836740392e+00 + -1.584611637631811e+00 + -1.592044497451960e+00 + -1.599396212413425e+00 + -1.606667572000000e+00 + -1.613859360067553e+00 + -1.620972353850301e+00 + -1.628007324820493e+00 + -1.634965037585305e+00 + -1.641846251000000e+00 + -1.648651718746855e+00 + -1.655382187120556e+00 + -1.662038397074428e+00 + -1.668621083574689e+00 + -1.675130975000000e+00 + -1.681568794320005e+00 + -1.687935258528783e+00 + -1.694231079461267e+00 + -1.700456962682860e+00 + -1.706613607000000e+00 + -1.712701705964896e+00 + -1.718721948142722e+00 + -1.724675016499694e+00 + -1.730561586828580e+00 + -1.736382330000000e+00 + -1.742137912457411e+00 + -1.747828994017656e+00 + -1.753456229026646e+00 + -1.759020265526974e+00 + -1.764521747000000e+00 + -1.769961312537754e+00 + -1.775339594027171e+00 + -1.780657218386706e+00 + -1.785914807192779e+00 + -1.791112977000000e+00 + -1.796252339747382e+00 + -1.801333500673453e+00 + -1.806357060360666e+00 + -1.811323614328498e+00 + -1.816233753000000e+00 + -1.821088062150410e+00 + -1.825887120985276e+00 + -1.830631504346673e+00 + -1.835321782397329e+00 + -1.839958520000000e+00 + -1.844542277375300e+00 + -1.849073608812209e+00 + -1.853553064572349e+00 + -1.857981190434394e+00 + -1.862358526000000e+00 + -1.866685606181999e+00 + -1.870962962067843e+00 + -1.875191119963197e+00 + -1.879370599902195e+00 + -1.883501918000000e+00 + -1.887585586736770e+00 + -1.891622112755978e+00 + -1.895611998485404e+00 + -1.899555741651499e+00 + -1.903453835000000e+00 + -1.907306767129976e+00 + -1.911115021853308e+00 + -1.914879078883785e+00 + -1.918599413067872e+00 + -1.922276495000000e+00 + -1.925910791456493e+00 + -1.929502763824010e+00 + -1.933052869645757e+00 + -1.936561562187136e+00 + -1.940029290000000e+00 + -1.943456497684402e+00 + -1.946843625242175e+00 + -1.950191109032846e+00 + -1.953499381145042e+00 + -1.956768869000000e+00 + -1.959999996258605e+00 + -1.963193182622893e+00 + -1.966348843806269e+00 + -1.969467390558660e+00 + -1.972549230000000e+00 + -1.975594766012145e+00 + -1.978604397775412e+00 + -1.981578520793180e+00 + -1.984517526364655e+00 + -1.987421802000000e+00 + -1.990291731861874e+00 + -1.993127695559656e+00 + -1.995930069364364e+00 + -1.998699225767272e+00 + -2.001435533000000e+00 + -2.004139355858378e+00 + -2.006811055538481e+00 + -2.009450989763890e+00 + -2.012059511961222e+00 + -2.014636972000000e+00 + -2.017183716742461e+00 + -2.019700089231340e+00 + -2.022186429001382e+00 + -2.024643071393187e+00 + -2.027070349000000e+00 + -2.029468591629637e+00 + -2.031838124095820e+00 + -2.034179268100215e+00 + -2.036492342201070e+00 + -2.038777662000000e+00 + -2.041035540156417e+00 + -2.043266284490031e+00 + -2.045470200083453e+00 + -2.047647589335177e+00 + -2.049798751000000e+00 + -2.051923980684690e+00 + -2.054023570214561e+00 + -2.056097808968247e+00 + -2.058146983649728e+00 + -2.060171377000000e+00 + -2.062171268551674e+00 + -2.064146934640815e+00 + -2.066098649159696e+00 + -2.068026683134947e+00 + -2.069931304000000e+00 + -2.071812776276246e+00 + -2.073671361471072e+00 + -2.075507318519566e+00 + -2.077320903301032e+00 + -2.079112369000000e+00 + -2.080881966139512e+00 + -2.082629940879466e+00 + -2.084356537486872e+00 + -2.086061998635378e+00 + -2.087746563000000e+00 + -2.089410466229110e+00 + -2.091053941828707e+00 + -2.092677220771137e+00 + -2.094280530723314e+00 + -2.095864097000000e+00 + -2.097428142794787e+00 + -2.098972888139794e+00 + -2.100498550462023e+00 + -2.102005344216306e+00 + -2.103493482000000e+00 + -2.104963174393948e+00 + -2.106414628045970e+00 + -2.107848047779690e+00 + -2.109263636820768e+00 + -2.110661595000000e+00 + -2.112042119471926e+00 + -2.113405405101743e+00 + -2.114751645122076e+00 + -2.116081030815763e+00 + -2.117393750000000e+00 + -2.118689987937912e+00 + -2.119969928191390e+00 + -2.121233752504371e+00 + -2.122481640223532e+00 + -2.123713768000000e+00 + -2.124930310308645e+00 + -2.126131439345980e+00 + -2.127317325650607e+00 + -2.128488137848567e+00 + -2.129644042000000e+00 + -2.130785202020548e+00 + -2.131911779449632e+00 + -2.133023934312029e+00 + -2.134121824962966e+00 + -2.135205607000000e+00 + -2.136275433910872e+00 + -2.137331457489147e+00 + -2.138373827747866e+00 + -2.139402692469194e+00 + -2.140418197999999e+00 + -2.141420489142081e+00 + -2.142409707722756e+00 + -2.143385994030927e+00 + -2.144349486926974e+00 + -2.145300323000000e+00 + -2.146238637076898e+00 + -2.147164562479522e+00 + -2.148078231051947e+00 + -2.148979772720135e+00 + -2.149869315000000e+00 + -2.150746983835218e+00 + -2.151612904662093e+00 + -2.152467200947815e+00 + -2.153309993218032e+00 + -2.154141401000000e+00 + -2.154961542883784e+00 + -2.155770535619624e+00 + -2.156568494253713e+00 + -2.157355531798206e+00 + -2.158131760000000e+00 + -2.158897289576013e+00 + -2.159652229917454e+00 + -2.160396688379106e+00 + -2.161130769707277e+00 + -2.161854579000000e+00 + -2.162568220747540e+00 + -2.163271795520776e+00 + -2.163965403104795e+00 + -2.164649143391419e+00 + -2.165323114000000e+00 + -2.165987410839904e+00 + -2.166642128874188e+00 + -2.167287362019562e+00 + -2.167923202786971e+00 + -2.168549742000000e+00 + -2.169167069289456e+00 + -2.169775273557456e+00 + -2.170374442741976e+00 + -2.170964663390078e+00 + -2.171546020000000e+00 + -2.172118595836383e+00 + -2.172682474202094e+00 + -2.173237737093693e+00 + -2.173784464448991e+00 + -2.174322736000000e+00 + -2.174852630794634e+00 + -2.175374225221640e+00 + -2.175887595177988e+00 + -2.176392816678372e+00 + -2.176889964000000e+00 + -2.177379110090651e+00 + -2.177860327096639e+00 + -2.178333686466943e+00 + -2.178799258747679e+00 + -2.179257113000000e+00 + -2.179707317299531e+00 + -2.180149939409128e+00 + -2.180585046165010e+00 + -2.181012703042297e+00 + -2.181432975000000e+00 + -2.181845926509731e+00 + -2.182251621108717e+00 + -2.182650121032542e+00 + -2.183041486916871e+00 + -2.183425780000000e+00 + -2.183803061402426e+00 + -2.184173389857596e+00 + -2.184536823542827e+00 + -2.184893420600431e+00 + -2.185243238000000e+00 + -2.185586332004080e+00 + -2.185922759056265e+00 + -2.186252574500474e+00 + -2.186575831916728e+00 + -2.186892585000000e+00 + -2.187202887393400e+00 + -2.187506791832633e+00 + -2.187804350256584e+00 + -2.188095613705712e+00 + -2.188380633000000e+00 + -2.188659458643119e+00 + -2.188932140238827e+00 + -2.189198726845117e+00 + -2.189459267002233e+00 + -2.189713809000000e+00 + -2.189962400732430e+00 + -2.190205089044370e+00 + -2.190441920581333e+00 + -2.190672942002169e+00 + -2.190898199000000e+00 + -2.191117736662499e+00 + -2.191331600149922e+00 + -2.191539834109547e+00 + -2.191742482380937e+00 + -2.191939589000000e+00 + -2.192131197889608e+00 + -2.192317351831708e+00 + -2.192498093290244e+00 + -2.192673464653123e+00 + -2.192843508000000e+00 + -2.193008265149897e+00 + -2.193167777657277e+00 + -2.193322086821774e+00 + -2.193471233640668e+00 + -2.193615259000000e+00 + -2.193754203483761e+00 + -2.193888106693908e+00 + -2.194017008313546e+00 + -2.194140948496115e+00 + -2.194259967000000e+00 + -2.194374103230534e+00 + -2.194483396307522e+00 + -2.194587885225862e+00 + -2.194687608881331e+00 + -2.194782606000000e+00 + -2.194872915200472e+00 + -2.194958575082935e+00 + -2.195039623893670e+00 + -2.195116099394696e+00 + -2.195188040000000e+00 + -2.195255484352944e+00 + -2.195318470219860e+00 + -2.195377035223315e+00 + -2.195431217130485e+00 + -2.195481054000000e+00 + -2.195526583926446e+00 + -2.195567844428364e+00 + -2.195604873029958e+00 + -2.195637707516086e+00 + -2.195666386000000e+00 + -2.195690946583878e+00 + -2.195711426545218e+00 + -2.195727863658885e+00 + -2.195740296673043e+00 + -2.195748763000000e+00 + -2.195753299607926e+00 + -2.195753945356280e+00 + -2.195750739132009e+00 + -2.195743719093693e+00 + -2.195732923000000e+00 + -2.195718388771941e+00 + -2.195700155840199e+00 + -2.195678263244660e+00 + -2.195652748934943e+00 + -2.195623652000000e+00 + -2.195591012099144e+00 + -2.195554867993407e+00 + -2.195515258985693e+00 + -2.195472225489285e+00 + -2.195425807000000e+00 + -2.195376042760528e+00 + -2.195322973614639e+00 + -2.195266640267298e+00 + -2.195207082686241e+00 + -2.195144342000000e+00 + -2.195078459809379e+00 + -2.195009476453377e+00 + -2.194937433066797e+00 + -2.194862372466152e+00 + -2.194784337000000e+00 + -2.194703368615792e+00 + -2.194619509257747e+00 + -2.194532801771278e+00 + -2.194443290305841e+00 + -2.194351018000000e+00 + -2.194256027737437e+00 + -2.194158364279782e+00 + -2.194058072250755e+00 + -2.193955195446114e+00 + -2.193849779000000e+00 + -2.193741868885436e+00 + -2.193631510785602e+00 + -2.193518750557477e+00 + -2.193403634464252e+00 + -2.193286209000000e+00 + -2.193166521091908e+00 + -2.193044618884907e+00 + -2.192920550384463e+00 + -2.192794362988794e+00 + -2.192666105000000e+00 + -2.192535825071375e+00 + -2.192403570783236e+00 + -2.192269389306454e+00 + -2.192133327558461e+00 + -2.191995432000000e+00 + -2.191855748732582e+00 + -2.191714323538803e+00 + -2.191571201647935e+00 + -2.191426427571225e+00 + -2.191280046000000e+00 + -2.191132101498374e+00 + -2.190982637495000e+00 + -2.190831697104933e+00 + -2.190679323369808e+00 + -2.190525559000000e+00 + -2.190370446239990e+00 + -2.190214026313205e+00 + -2.190056340263544e+00 + -2.189897429222788e+00 + -2.189737334000000e+00 + -2.189576094894156e+00 + -2.189413751026334e+00 + -2.189250341662785e+00 + -2.189085906605225e+00 + -2.188920484000000e+00 + -2.188754111167896e+00 + -2.188586826517446e+00 + -2.188418667831656e+00 + -2.188249671505532e+00 + -2.188079874000000e+00 + -2.187909311655257e+00 + -2.187738019850499e+00 + -2.187566033827133e+00 + -2.187393388939138e+00 + -2.187220120000000e+00 + -2.187046261198758e+00 + -2.186871845656608e+00 + -2.186696906557450e+00 + -2.186521477499284e+00 + -2.186345591000000e+00 + -2.186169278929348e+00 + -2.185992573469870e+00 + -2.185815507881449e+00 + -2.185638116930091e+00 + -2.185460435000000e+00 + -2.185282496723147e+00 + -2.185104339046128e+00 + -2.184925999471230e+00 + -2.184747515559985e+00 + -2.184568926000000e+00 + -2.184390270419004e+00 + -2.184211589307456e+00 + -2.184032923638580e+00 + -2.183854314918697e+00 + -2.183675806000000e+00 + -2.183497440664645e+00 + -2.183319263062145e+00 + -2.183141318226586e+00 + -2.182963652427783e+00 + -2.182786312000000e+00 + -2.182609343803448e+00 + -2.182432796909005e+00 + -2.182256720850984e+00 + -2.182081165100584e+00 + -2.181906180000000e+00 + -2.181731816772078e+00 + -2.181558127901617e+00 + -2.181385166690271e+00 + -2.181212987245827e+00 + -2.181041644000000e+00 + -2.180871191888493e+00 + -2.180701687214938e+00 + -2.180533187286951e+00 + -2.180365750436408e+00 + -2.180199435000000e+00 + -2.180034299706266e+00 + -2.179870405073628e+00 + -2.179707812476292e+00 + -2.179546583956951e+00 + -2.179386782000000e+00 + -2.179228469569652e+00 + -2.179071710572415e+00 + -2.178916570209873e+00 + -2.178763115274171e+00 + -2.178611412000000e+00 + -2.178461526719817e+00 + -2.178313527960817e+00 + -2.178167485170301e+00 + -2.178023468394170e+00 + -2.177881548000000e+00 + -2.177741794911888e+00 + -2.177604281585152e+00 + -2.177469081134519e+00 + -2.177336267165003e+00 + -2.177205914000000e+00 + -2.177078096781969e+00 + -2.176952892179310e+00 + -2.176830377266735e+00 + -2.176710629289710e+00 + -2.176593727000000e+00 + -2.176479750089725e+00 + -2.176368778170715e+00 + -2.176260892035270e+00 + -2.176156174290115e+00 + -2.176054707000000e+00 + -2.175956572480315e+00 + -2.175861855847520e+00 + -2.175770642395214e+00 + -2.175683016800304e+00 + -2.175599066000000e+00 + -2.175518878125867e+00 + -2.175442540126260e+00 + -2.175370140365612e+00 + -2.175301769822078e+00 + -2.175237519000000e+00 + -2.175177478422601e+00 + -2.175121740498959e+00 + -2.175070398200953e+00 + -2.175023544771637e+00 + -2.174981275000000e+00 + -2.174943684570890e+00 + -2.174910868831887e+00 + -2.174882924320826e+00 + -2.174859949548785e+00 + -2.174842043000000e+00 + -2.174829303331104e+00 + -2.174821830410927e+00 + -2.174819725228089e+00 + -2.174823090027552e+00 + -2.174832027000000e+00 + -2.174846638699704e+00 + -2.174867029559900e+00 + -2.174893304738549e+00 + -2.174925569834485e+00 + -2.174963931000000e+00 + -2.175008495084293e+00 + -2.175059370394289e+00 + -2.175116665887380e+00 + -2.175180491027200e+00 + -2.175250956000000e+00 + -2.175328171805043e+00 + -2.175412250937077e+00 + -2.175503306357684e+00 + -2.175601451271103e+00 + -2.175706800000000e+00 + -2.175819467765500e+00 + -2.175939570549688e+00 + -2.176067225041086e+00 + -2.176202548787411e+00 + -2.176345660000000e+00 + -2.176496677644949e+00 + -2.176655722183164e+00 + -2.176822914601843e+00 + -2.176998376191533e+00 + -2.177182229000000e+00 + -2.177374595921169e+00 + -2.177575601341799e+00 + -2.177785370087074e+00 + -2.178004027196875e+00 + -2.178231699000000e+00 + -2.178468512862275e+00 + -2.178714597011325e+00 + -2.178970080062299e+00 + -2.179235091002944e+00 + -2.179509760000000e+00 + -2.179794218272507e+00 + -2.180088598277346e+00 + -2.180393032665419e+00 + -2.180707654074028e+00 + -2.181032597000000e+00 + -2.181367997183408e+00 + -2.181713990526695e+00 + -2.182070713375897e+00 + -2.182438302803596e+00 + -2.182816897000000e+00 + -2.183206635150288e+00 + -2.183607657686531e+00 + -2.184020105275964e+00 + -2.184444118610974e+00 + -2.184879840000000e+00 + -2.185327412889597e+00 + -2.185786981109685e+00 + -2.186258689137973e+00 + -2.186742682377725e+00 + -2.187239107000000e+00 + -2.187748109862624e+00 + -2.188269838801850e+00 + -2.188804442677439e+00 + -2.189352071523296e+00 + -2.189912875000000e+00 + -2.190487003093955e+00 + -2.191074608322116e+00 + -2.191675843787203e+00 + -2.192290862610885e+00 + -2.192919819000000e+00 + -2.193562867915730e+00 + -2.194220164552147e+00 + -2.194891865404003e+00 + -2.195578128862665e+00 + -2.196279113000000e+00 + -2.196994976008069e+00 + -2.197725877814248e+00 + -2.198471979076637e+00 + -2.199233441010543e+00 + -2.200010426000000e+00 + -2.200803097224683e+00 + -2.201611618154960e+00 + -2.202436152922896e+00 + -2.203276866629103e+00 + -2.204133924999999e+00 + -2.205007494076377e+00 + -2.205897739759803e+00 + -2.206804828380775e+00 + -2.207728927012060e+00 + -2.208670203000000e+00 + -2.209628824019662e+00 + -2.210604958519273e+00 + -2.211598775212799e+00 + -2.212610442959744e+00 + -2.213640131000000e+00 + -2.214688008997179e+00 + -2.215754247358006e+00 + -2.216839016713686e+00 + -2.217942487809252e+00 + -2.219064832000000e+00 + -2.220206221175054e+00 + -2.221366827800435e+00 + -2.222546824259503e+00 + -2.223746382727115e+00 + -2.224965677000000e+00 + -2.226204881636015e+00 + -2.227464170011377e+00 + -2.228743716360184e+00 + -2.230043696636770e+00 + -2.231364286000000e+00 + -2.232705659360148e+00 + -2.234067993079961e+00 + -2.235451464138931e+00 + -2.236856249856844e+00 + -2.238282527000000e+00 + -2.239730472524265e+00 + -2.241200265638654e+00 + -2.242692085287406e+00 + -2.244206109271373e+00 + -2.245742517000000e+00 + -2.247301488882056e+00 + -2.248883204910052e+00 + -2.250487845315945e+00 + -2.252115590911750e+00 + -2.253766623000000e+00 + -2.255441123360801e+00 + -2.257139274542631e+00 + -2.258861259219423e+00 + -2.260607260005651e+00 + -2.262377460000000e+00 + -2.264172042724291e+00 + -2.265991192137124e+00 + -2.267835092970031e+00 + -2.269703930922391e+00 + -2.271597891000000e+00 + -2.273517158096056e+00 + -2.275461918662951e+00 + -2.277432359442962e+00 + -2.279428667085979e+00 + -2.281451029000000e+00 + -2.283499633104788e+00 + -2.285574667389452e+00 + -2.287676320195930e+00 + -2.289804780398682e+00 + -2.291960237000000e+00 + -2.294142879454985e+00 + -2.296352898805551e+00 + -2.298590485768695e+00 + -2.300855830078550e+00 + -2.303149122999999e+00 + -2.305470556795997e+00 + -2.307820323545887e+00 + -2.310198615647936e+00 + -2.312605626084681e+00 + -2.315041548000000e+00 + -2.317506574745174e+00 + -2.320000900224320e+00 + -2.322524719122656e+00 + -2.325078227061991e+00 + -2.327661619000000e+00 + -2.330275089774933e+00 + -2.332918835677479e+00 + -2.335593053485966e+00 + -2.338297940187764e+00 + -2.341033693000000e+00 + -2.343800509406319e+00 + -2.346598587410773e+00 + -2.349428125303093e+00 + -2.352289321686241e+00 + -2.355182376000000e+00 + -2.358107488272472e+00 + -2.361064858786305e+00 + -2.364054687769198e+00 + -2.367077175375671e+00 + -2.370132523000000e+00 + -2.373220932737141e+00 + -2.376342606269360e+00 + -2.379497745810629e+00 + -2.382686554578887e+00 + -2.385909236000000e+00 + -2.389165993580208e+00 + -2.392457030846979e+00 + -2.395782552198058e+00 + -2.399142763298191e+00 + -2.402537869000000e+00 + -2.405968074028050e+00 + -2.409433584975734e+00 + -2.412934608682329e+00 + -2.416471351683178e+00 + -2.420044020999999e+00 + -2.423652824137149e+00 + -2.427297969206864e+00 + -2.430979664728804e+00 + -2.434698119632543e+00 + -2.438453543000000e+00 + -2.442246144168148e+00 + -2.446076133195298e+00 + -2.449943720571852e+00 + -2.453849117184546e+00 + -2.457792534000000e+00 + -2.461774182279110e+00 + -2.465794274341647e+00 + -2.469853022790889e+00 + -2.473950640299041e+00 + -2.478087340000000e+00 + -2.482263335430129e+00 + -2.486478840559030e+00 + -2.490734069661931e+00 + -2.495029237377275e+00 + -2.499364559000000e+00 + -2.503740250274207e+00 + -2.508156527124766e+00 + -2.512613605692700e+00 + -2.517111702474631e+00 + -2.521651035000000e+00 + -2.526231821279088e+00 + -2.530854278665131e+00 + -2.535518625205626e+00 + -2.540225080261870e+00 + -2.544973863000000e+00 + -2.549765192573217e+00 + -2.554599288888442e+00 + -2.559476372494764e+00 + -2.564396664604125e+00 + -2.569360386000000e+00 + -2.574367757513646e+00 + -2.579419001423863e+00 + -2.584514340338642e+00 + -2.589653996851589e+00 + -2.594838193999999e+00 + -2.600067155253186e+00 + -2.605341104662645e+00 + -2.610660266783872e+00 + -2.616024866689215e+00 + -2.621435129000000e+00 + -2.626891278432673e+00 + -2.632393541366548e+00 + -2.637942144571998e+00 + -2.643537314797249e+00 + -2.649179279000000e+00 + -2.654868264471787e+00 + -2.660604499292826e+00 + -2.666388211776204e+00 + -2.672219630341834e+00 + -2.678098984000000e+00 + -2.684026502306392e+00 + -2.690002415494505e+00 + -2.696026954017429e+00 + -2.702100348331385e+00 + -2.708222828000000e+00 + -2.714394620651795e+00 + -2.720615948464916e+00 + -2.726887030965477e+00 + -2.733208085290139e+00 + -2.739579324000000e+00 + -2.746000955816228e+00 + -2.752473185385865e+00 + -2.758996214641690e+00 + -2.765570242469367e+00 + -2.772195463000000e+00 + -2.778872066776275e+00 + -2.785600241574056e+00 + -2.792380171842594e+00 + -2.799212037606767e+00 + -2.806096015000000e+00 + -2.813032277129447e+00 + -2.820020994035244e+00 + -2.827062331911353e+00 + -2.834156451970738e+00 + -2.841303512999999e+00 + -2.848503671252426e+00 + -2.855757077985244e+00 + -2.863063881095023e+00 + -2.870424224890850e+00 + -2.877838249999999e+00 + -2.885306093928394e+00 + -2.892827890388094e+00 + -2.900403769651381e+00 + -2.908033857857018e+00 + -2.915718277999999e+00 + -2.923457150039019e+00 + -2.931250588977881e+00 + -2.939098706889091e+00 + -2.947001612872150e+00 + -2.954959411999998e+00 + -2.962972205810575e+00 + -2.971040091434060e+00 + -2.979163163083816e+00 + -2.987341511831155e+00 + -2.995575224999998e+00 + -3.003864386499012e+00 + -3.012209075546996e+00 + -3.020609368336417e+00 + -3.029065337835770e+00 + -3.037577052999999e+00 + -3.046144579520789e+00 + -3.054767979666142e+00 + -3.063447312238444e+00 + -3.072182631692820e+00 + -3.080973988999999e+00 + -3.089821432099915e+00 + -3.098725004829577e+00 + -3.107684748048404e+00 + -3.116700699185534e+00 + -3.125772890999999e+00 + -3.134901352715559e+00 + -3.144086110699870e+00 + -3.153327188100508e+00 + -3.162624603843408e+00 + -3.171978372999998e+00 + -3.181388507546933e+00 + -3.190855016073102e+00 + -3.200377903469057e+00 + -3.209957169965227e+00 + -3.219592812999998e+00 + -3.229284827363896e+00 + -3.239033203402719e+00 + -3.248837927724427e+00 + -3.258698982652799e+00 + -3.268616347999998e+00 + -3.278590000914418e+00 + -3.288619913401403e+00 + -3.298706054004673e+00 + -3.308848387625167e+00 + -3.319046875999998e+00 + -3.329301477934322e+00 + -3.339612147844228e+00 + -3.349978836592516e+00 + -3.360401490990458e+00 + -3.370880054999998e+00 + -3.381414469596773e+00 + -3.392004670266620e+00 + -3.402650589976440e+00 + -3.413352159446950e+00 + -3.424109303999998e+00 + -3.434921945057392e+00 + -3.445790001867386e+00 + -3.456713390096515e+00 + -3.467692020464062e+00 + -3.478725800999998e+00 + -3.489814636890736e+00 + -3.500958427789171e+00 + -3.512157070764700e+00 + -3.523410460589800e+00 + -3.534718486999998e+00 + -3.546081035880271e+00 + -3.557497990199610e+00 + -3.568969229634993e+00 + -3.580494629586285e+00 + -3.592074061999998e+00 + -3.603707395759104e+00 + -3.615394495446970e+00 + -3.627135222559569e+00 + -3.638929435115233e+00 + -3.650776987000000e+00 + -3.662677728742245e+00 + -3.674631507325805e+00 + -3.686638166579447e+00 + -3.698697546469576e+00 + -3.710809483000000e+00 + -3.722973808828209e+00 + -3.735190352595157e+00 + -3.747458940125227e+00 + -3.759779394010754e+00 + -3.772151532000000e+00 + -3.784575168342916e+00 + -3.797050115062026e+00 + -3.809576180292756e+00 + -3.822153166803174e+00 + -3.834780875000000e+00 + -3.847459102820189e+00 + -3.860187643203489e+00 + -3.872966285667494e+00 + -3.885794816080159e+00 + -3.898673017000000e+00 + -3.911600667911320e+00 + -3.924577543724543e+00 + -3.937603416269590e+00 + -3.950678053996523e+00 + -3.963801221000000e+00 + -3.976972678103186e+00 + -3.990192183512261e+00 + -4.003459491521890e+00 + -4.016774351164608e+00 + -4.030136509000000e+00 + -4.043545709147031e+00 + -4.057001691149858e+00 + -4.070504190840202e+00 + -4.084052939835804e+00 + -4.097647667000000e+00 + -4.111288098419088e+00 + -4.124973955231095e+00 + -4.138704955371648e+00 + -4.152480813397504e+00 + -4.166301240000000e+00 + -4.180165942572286e+00 + -4.194074624537170e+00 + -4.208026986370140e+00 + -4.222022725101974e+00 + -4.236061533000000e+00 + -4.250143098846027e+00 + -4.264267108996074e+00 + -4.278433246261039e+00 + -4.292641188627767e+00 + -4.306890611000000e+00 + -4.321181185386233e+00 + -4.335512579090955e+00 + -4.349884456391911e+00 + -4.364296478350024e+00 + -4.378748302000000e+00 + -4.393239580901771e+00 + -4.407769964394226e+00 + -4.422339098999587e+00 + -4.436946628138934e+00 + -4.451592191000000e+00 + -4.466275423153566e+00 + -4.480995955945297e+00 + -4.495753418053649e+00 + -4.510547435209278e+00 + -4.525377628000000e+00 + -4.540243613376725e+00 + -4.555145006346341e+00 + -4.570081418154680e+00 + -4.585052454714511e+00 + -4.600057719000000e+00 + -4.615096811360685e+00 + -4.630169328028963e+00 + -4.645274861878902e+00 + -4.660413001844071e+00 + -4.675583333000000e+00 + -4.690785437259527e+00 + -4.706018892955582e+00 + -4.721283275134317e+00 + -4.736578154793736e+00 + -4.751903099000000e+00 + -4.767257671719769e+00 + -4.782641433752779e+00 + -4.798053942304498e+00 + -4.813494749953581e+00 + -4.828963406000000e+00 + -4.844459456896403e+00 + -4.859982445123970e+00 + -4.875531909767719e+00 + -4.891107385884028e+00 + -4.906708405000000e+00 + -4.922334495555203e+00 + -4.937985181840751e+00 + -4.953659984814029e+00 + -4.969358421588884e+00 + -4.985080006000000e+00 + -5.000824248840914e+00 + -5.016590656340991e+00 + -5.032378731598668e+00 + -5.048187974277996e+00 + -5.064017880000000e+00 + -5.079867940973151e+00 + -5.095737645459726e+00 + -5.111626480823102e+00 + -5.127533934923204e+00 + -5.143459499999997e+00 + -5.159402672483111e+00 + -5.175362954369220e+00 + -5.191339851303958e+00 + -5.207332872891304e+00 + -5.223341533999998e+00 + -5.239365353688981e+00 + -5.255403855076862e+00 + -5.271456565155025e+00 + -5.287523015792912e+00 + -5.303602743999997e+00 + -5.319695290809813e+00 + -5.335800201177900e+00 + -5.351917023850607e+00 + -5.368045312413205e+00 + -5.384184625999997e+00 + -5.400334527792659e+00 + -5.416494583936292e+00 + -5.432664365069262e+00 + -5.448843447960337e+00 + -5.465031412999998e+00 + -5.481227843963791e+00 + -5.497432330198948e+00 + -5.513644465003656e+00 + -5.529863846001168e+00 + -5.546090074999998e+00 + -5.562322757794160e+00 + -5.578561506278419e+00 + -5.594805935740466e+00 + -5.611055664858841e+00 + -5.627310317999997e+00 + -5.643569523867812e+00 + -5.659832914603254e+00 + -5.676100126691991e+00 + -5.692370802379017e+00 + -5.708644587999997e+00 + -5.724921133351554e+00 + -5.741200092816319e+00 + -5.757481124931912e+00 + -5.773763893288205e+00 + -5.790048065999996e+00 + -5.806333315035348e+00 + -5.822619317227983e+00 + -5.838905753168464e+00 + -5.855192307810226e+00 + -5.871478670999998e+00 + -5.887764536642293e+00 + -5.904049603224381e+00 + -5.920333573291820e+00 + -5.936616154283948e+00 + -5.952897057999997e+00 + -5.969175999997380e+00 + -5.985452700712029e+00 + -6.001726884408804e+00 + -6.017998279848357e+00 + -6.034266620999998e+00 + -6.050531645917840e+00 + -6.066793096565948e+00 + -6.083050719154321e+00 + -6.099304265265417e+00 + -6.115553489999997e+00 + -6.131798152082848e+00 + -6.148038016850530e+00 + -6.164272852974367e+00 + -6.180502432221914e+00 + -6.196726531999996e+00 + -6.212944934149927e+00 + -6.229157424398349e+00 + -6.245363792906498e+00 + -6.261563835474968e+00 + -6.277757350999996e+00 + -6.293944141712862e+00 + -6.310124016459128e+00 + -6.326296787703612e+00 + -6.342462271423720e+00 + -6.358620288999997e+00 + -6.374770666045148e+00 + -6.390913231950829e+00 + -6.407047820441565e+00 + -6.423174270811367e+00 + -6.439292425999997e+00 + -6.455402132459349e+00 + -6.471503242529590e+00 + -6.487595612302881e+00 + -6.503679101824962e+00 + -6.519753575999998e+00 + -6.535818903908587e+00 + -6.551874959678351e+00 + -6.567921621040533e+00 + -6.583958769810407e+00 + -6.599986292999997e+00 + -6.616004081814032e+00 + -6.632012031732002e+00 + -6.648010042213294e+00 + -6.663998017633650e+00 + -6.679975866999997e+00 + -6.695943503153600e+00 + -6.711900843425355e+00 + -6.727847809100131e+00 + -6.743784326279565e+00 + -6.759710325999998e+00 + -6.775625743222601e+00 + -6.791530516957345e+00 + -6.807424590371784e+00 + -6.823307911868753e+00 + -6.839180434000000e+00 + -6.855042113095231e+00 + -6.870892911056689e+00 + -6.886732793343159e+00 + -6.902561729209182e+00 + -6.918379693000000e+00 + -6.934186663377454e+00 + -6.949982623974822e+00 + -6.965767562024019e+00 + -6.981541468861679e+00 + -6.997304341000000e+00 + -7.013056179149240e+00 + -7.028796988372566e+00 + -7.044526777567921e+00 + -7.060245560311449e+00 + -7.075953355000000e+00 + -7.091650184045992e+00 + -7.107336074531737e+00 + -7.123011057484204e+00 + -7.138675168614964e+00 + -7.154328448000000e+00 + -7.169970939523060e+00 + -7.185602692089082e+00 + -7.201223758621499e+00 + -7.216834196750369e+00 + -7.232434069000000e+00 + -7.248023441650831e+00 + -7.263602384451917e+00 + -7.279170972021925e+00 + -7.294729285389790e+00 + -7.310277408000000e+00 + -7.325815426345584e+00 + -7.341343434315181e+00 + -7.356861529294433e+00 + -7.372369811668458e+00 + -7.387868387000000e+00 + -7.403357365322682e+00 + -7.418836861854650e+00 + -7.434306995371617e+00 + -7.449767888578398e+00 + -7.465219669000000e+00 + -7.480662468362842e+00 + -7.496096423635060e+00 + -7.511521675509539e+00 + -7.526938368822738e+00 + -7.542346653000000e+00 + -7.557746681513402e+00 + -7.573138613106206e+00 + -7.588522610348394e+00 + -7.603898840111169e+00 + -7.619267474000000e+00 + -7.634628687556104e+00 + -7.649982660818226e+00 + -7.665329578157865e+00 + -7.680669629212444e+00 + -7.696003007000000e+00 + -7.711329908041110e+00 + -7.726650535322031e+00 + -7.741965095546557e+00 + -7.757273799081691e+00 + -7.772576861000000e+00 + -7.787874500482072e+00 + -7.803166941820082e+00 + -7.818454413357075e+00 + -7.833737148083599e+00 + -7.849015383000000e+00 + -7.864289358883056e+00 + -7.879559322305754e+00 + -7.894825523493435e+00 + -7.910088216491122e+00 + -7.925347660000000e+00 + -7.940604117030949e+00 + -7.955857856656654e+00 + -7.971109151088187e+00 + -7.986358275553978e+00 + -8.001605510999999e+00 + -8.016851143003514e+00 + -8.032095461580266e+00 + -8.047338760488806e+00 + -8.062581337981985e+00 + -8.077823497000001e+00 + -8.093065544394179e+00 + -8.108307791577566e+00 + -8.123550554205780e+00 + -8.138794153086785e+00 + -8.154038912999997e+00 + -8.169285162395173e+00 + -8.184533235306290e+00 + -8.199783469410583e+00 + -8.215036206329255e+00 + -8.230291792999997e+00 + -8.245550580528674e+00 + -8.260812923863309e+00 + -8.276079182235739e+00 + -8.291349720375887e+00 + -8.306624906999998e+00 + -8.321905114401627e+00 + -8.337190720129563e+00 + -8.352482105562956e+00 + -8.367779656388556e+00 + -8.383083762999997e+00 + -8.398394819954635e+00 + -8.413713227271362e+00 + -8.429039388338369e+00 + -8.444373710123081e+00 + -8.459716604999997e+00 + -8.475068489773328e+00 + -8.490429785807564e+00 + -8.505800918193746e+00 + -8.521182316459129e+00 + -8.536574414999997e+00 + -8.551977652264261e+00 + -8.567392471335332e+00 + -8.582819319266729e+00 + -8.598258647834163e+00 + -8.613710912999998e+00 + -8.629176574613023e+00 + -8.644656098315155e+00 + -8.660149953296175e+00 + -8.675658612460374e+00 + -8.691182553999997e+00 + -8.706722260346437e+00 + -8.722278218076596e+00 + -8.737850917931995e+00 + -8.753440855866357e+00 + -8.769048531999996e+00 + -8.784674450012169e+00 + -8.800319118245726e+00 + -8.815983049456063e+00 + -8.831666761752983e+00 + -8.847370776999997e+00 + -8.863095620572640e+00 + -8.878841823409489e+00 + -8.894609920288579e+00 + -8.910400450202564e+00 + -8.926213956999996e+00 + -8.942050988642462e+00 + -8.957912097948702e+00 + -8.973797841249739e+00 + -8.989708778929735e+00 + -9.005645476999996e+00 + -9.021608505891232e+00 + -9.037598440089864e+00 + -9.053615857732957e+00 + -9.069661341483132e+00 + -9.085735478999997e+00 + -9.101838862125330e+00 + -9.117972087538210e+00 + -9.134135755396374e+00 + -9.150330469883286e+00 + -9.166556840999997e+00 + -9.182815483079517e+00 + -9.199107013675079e+00 + -9.215432054583626e+00 + -9.231791233265957e+00 + -9.248185180999997e+00 + -9.264614532683632e+00 + -9.281079929109534e+00 + -9.297582014702897e+00 + -9.314121437654787e+00 + -9.330698850999996e+00 + -9.347314912003528e+00 + -9.363970283188971e+00 + -9.380665630745685e+00 + -9.397401624940878e+00 + -9.414178940999998e+00 + -9.430998258244742e+00 + -9.447860260503859e+00 + -9.464765635761319e+00 + -9.481715077019253e+00 + -9.498709280999996e+00 + -9.515748948037771e+00 + -9.532834784442173e+00 + -9.549967500513571e+00 + -9.567147810785697e+00 + -9.584376433999996e+00 + -9.601654092679016e+00 + -9.618981514566920e+00 + -9.636359431588877e+00 + -9.653788580476306e+00 + -9.671269701999998e+00 + -9.688803540653204e+00 + -9.706390846469759e+00 + -9.724032373152683e+00 + -9.741728878390186e+00 + -9.759481124999997e+00 + -9.777289880050315e+00 + -9.795155915261526e+00 + -9.813080006095444e+00 + -9.831062932433847e+00 + -9.849105478999997e+00 + -9.867208434586416e+00 + -9.885372592754736e+00 + -9.903598750780114e+00 + -9.921887710289466e+00 + -9.940240277999996e+00 + -9.958657264807959e+00 + -9.977139486156000e+00 + -9.995687760994512e+00 + -1.001430291248964e+01 + -1.003298577000000e+01 + -1.005173716741557e+01 + -1.007055794170109e+01 + -1.008944893313717e+01 + -1.010841098632109e+01 + -1.012744495000000e+01 + -1.014655167843811e+01 + -1.016573203809090e+01 + -1.018498689280856e+01 + -1.020431709913334e+01 + -1.022372353000000e+01 + -1.024320706932260e+01 + -1.026276860085199e+01 + -1.028240900753776e+01 + -1.030212917226508e+01 + -1.032192999000000e+01 + -1.034181236270672e+01 + -1.036177718920571e+01 + -1.038182537682789e+01 + -1.040195784652257e+01 + -1.042217551000000e+01 + -1.044247927800797e+01 + -1.046287008429113e+01 + -1.048334886197221e+01 + -1.050391653528098e+01 + -1.052457404000000e+01 + -1.054532232135862e+01 + -1.056616233045517e+01 + -1.058709501821704e+01 + -1.060812133414642e+01 + -1.062924224000000e+01 + -1.065045870478386e+01 + -1.067177169452023e+01 + -1.069318217826154e+01 + -1.071469113174534e+01 + -1.073629954000000e+01 + -1.075800839260036e+01 + -1.077981867489276e+01 + -1.080173138018267e+01 + -1.082374751517595e+01 + -1.084586808000000e+01 + -1.086809407471729e+01 + -1.089042651905600e+01 + -1.091286643223940e+01 + -1.093541482646511e+01 + -1.095807273000000e+01 + -1.098084118002027e+01 + -1.100372120627546e+01 + -1.102671384288809e+01 + -1.104982013415814e+01 + -1.107304113000000e+01 + -1.109637788366843e+01 + -1.111983144958023e+01 + -1.114340288661973e+01 + -1.116709326043168e+01 + -1.119090364000000e+01 + -1.121483509746141e+01 + -1.123888871051257e+01 + -1.126306556352589e+01 + -1.128736674843474e+01 + -1.131179335000000e+01 + -1.133634645465832e+01 + -1.136102717560643e+01 + -1.138583662099362e+01 + -1.141077588304154e+01 + -1.143584608000000e+01 + -1.146104834278586e+01 + -1.148638378227322e+01 + -1.151185351768562e+01 + -1.153745868860526e+01 + -1.156320043000000e+01 + -1.158907987623694e+01 + -1.161509817570602e+01 + -1.164125647703402e+01 + -1.166755592508495e+01 + -1.169399768000000e+01 + -1.172058291041322e+01 + -1.174731277861368e+01 + -1.177418844974534e+01 + -1.180121109657743e+01 + -1.182838189999999e+01 + -1.185570204579555e+01 + -1.188317272006268e+01 + -1.191079511332836e+01 + -1.193857042312863e+01 + -1.196649984999999e+01 + -1.199458459773775e+01 + -1.202282587700695e+01 + -1.205122490269986e+01 + -1.207978289369385e+01 + -1.210850107000000e+01 + -1.213738065440104e+01 + -1.216642287877588e+01 + -1.219562898067898e+01 + -1.222500020303083e+01 + -1.225453779000000e+01 + -1.228424298812801e+01 + -1.231411705144751e+01 + -1.234416123799292e+01 + -1.237437680934280e+01 + -1.240476502999999e+01 + -1.243532716862228e+01 + -1.246606450371358e+01 + -1.249697831672881e+01 + -1.252806989018327e+01 + -1.255934050999999e+01 + -1.259079146663310e+01 + -1.262242406008652e+01 + -1.265423959346900e+01 + -1.268623937120698e+01 + -1.271842469999999e+01 + -1.275079689157634e+01 + -1.278335727210730e+01 + -1.281610716656313e+01 + -1.284904789393346e+01 + -1.288218078999999e+01 + -1.291550719883721e+01 + -1.294902845305343e+01 + -1.298274589252790e+01 + -1.301666087289315e+01 + -1.305077474999999e+01 + -1.308508888000826e+01 + -1.311960462335401e+01 + -1.315432334734565e+01 + -1.318924642810263e+01 + -1.322437523999999e+01 + -1.325971115825294e+01 + -1.329525556797775e+01 + -1.333100986045822e+01 + -1.336697543256989e+01 + -1.340315367999999e+01 + -1.343954599979837e+01 + -1.347615379884262e+01 + -1.351297848978655e+01 + -1.355002149050285e+01 + -1.358728421999999e+01 + -1.362476809975143e+01 + -1.366247455932581e+01 + -1.370040503112116e+01 + -1.373856094968169e+01 + -1.377694375999999e+01 + -1.381555491216690e+01 + -1.385439585021465e+01 + -1.389346802391279e+01 + -1.393277289476898e+01 + -1.397231192999999e+01 + -1.401208659972945e+01 + -1.405209837359219e+01 + -1.409234872413346e+01 + -1.413283912961124e+01 + -1.417357107999999e+01 + -1.421454607102127e+01 + -1.425576559243092e+01 + -1.429723113890712e+01 + -1.433894421536596e+01 + -1.438090632999999e+01 + -1.442311899332400e+01 + -1.446558371903957e+01 + -1.450830202765583e+01 + -1.455127544879836e+01 + -1.459450550999999e+01 + -1.463799373973040e+01 + -1.468174167767078e+01 + -1.472575086722947e+01 + -1.477002285383887e+01 + -1.481455918999999e+01 + -1.485936143285468e+01 + -1.490443114031971e+01 + -1.494976987417127e+01 + -1.499537920245961e+01 + -1.504126069999999e+01 + -1.508741594534576e+01 + -1.513384651602358e+01 + -1.518055399754435e+01 + -1.522753998778076e+01 + -1.527480607999999e+01 + -1.532235386668537e+01 + -1.537018495189360e+01 + -1.541830094448208e+01 + -1.546670345694024e+01 + -1.551539410999999e+01 + -1.556437452805486e+01 + -1.561364632974880e+01 + -1.566321114034704e+01 + -1.571307059764629e+01 + -1.576322633999999e+01 + -1.581368000886133e+01 + -1.586443325932826e+01 + -1.591548774371123e+01 + -1.596684510633198e+01 + -1.601850700999999e+01 + -1.607047512763592e+01 + -1.612275112310131e+01 + -1.617533666634843e+01 + -1.622823344044972e+01 + -1.628144312999999e+01 + -1.633496741991010e+01 + -1.638880799548294e+01 + -1.644296655089035e+01 + -1.649744479372194e+01 + -1.655224442999999e+01 + -1.660736716535794e+01 + -1.666281471098534e+01 + -1.671858878335293e+01 + -1.677469110504862e+01 + -1.683112339999999e+01 + -1.688788739643611e+01 + -1.694498483759857e+01 + -1.700241746523662e+01 + -1.706018701398879e+01 + -1.711829522999999e+01 + -1.717674386844329e+01 + -1.723553468924849e+01 + -1.729466945458232e+01 + -1.735414992865347e+01 + -1.741397788000000e+01 + -1.747415508099178e+01 + -1.753468330867943e+01 + -1.759556434768274e+01 + -1.765679999203036e+01 + -1.771839203000000e+01 + -1.778034225038387e+01 + -1.784265246094084e+01 + -1.790532446959567e+01 + -1.796836007816754e+01 + -1.803176110000000e+01 + -1.809552935720682e+01 + -1.815966667575656e+01 + -1.822417488078262e+01 + -1.828905579597735e+01 + -1.835431126000000e+01 + -1.841994311958100e+01 + -1.848595321475806e+01 + -1.855234338946741e+01 + -1.861911549709020e+01 + -1.868627140000000e+01 + -1.875381296458075e+01 + -1.882174205218422e+01 + -1.889006052915166e+01 + -1.895877027181235e+01 + -1.902787316000000e+01 + -1.909737107797965e+01 + -1.916726592078253e+01 + -1.923755957952593e+01 + -1.930825393714747e+01 + -1.937935090000000e+01 + -1.945085238647674e+01 + -1.952276030080435e+01 + -1.959507655061933e+01 + -1.966780305499929e+01 + -1.974094174000000e+01 + -1.981449453618971e+01 + -1.988846337667131e+01 + -1.996285019538828e+01 + -2.003765692760933e+01 + -2.011288552000000e+01 + -2.018853792621815e+01 + -2.026461609876727e+01 + -2.034112199510926e+01 + -2.041805758075517e+01 + -2.049542482000000e+01 + -2.057322568006621e+01 + -2.065146214471047e+01 + -2.073013619484967e+01 + -2.080924980240138e+01 + -2.088880495999999e+01 + -2.096880367169853e+01 + -2.104924793164823e+01 + -2.113013973534757e+01 + -2.121148108557274e+01 + -2.129327399999999e+01 + -2.137552050224973e+01 + -2.145822260294134e+01 + -2.154138232011573e+01 + -2.162500168821614e+01 + -2.170908273999999e+01 + -2.179362750931509e+01 + -2.187863804236205e+01 + -2.196411638687395e+01 + -2.205006458870765e+01 + -2.213648469999998e+01 + -2.222337877888525e+01 + -2.231074889087196e+01 + -2.239859710699802e+01 + -2.248692550346576e+01 + -2.257573614999999e+01 + -2.266503111825121e+01 + -2.275481250533621e+01 + -2.284508240538831e+01 + -2.293584289979252e+01 + -2.302709608999998e+01 + -2.311884408797131e+01 + -2.321108899308483e+01 + -2.330383291176923e+01 + -2.339707796636268e+01 + -2.349082627999998e+01 + -2.358507997580010e+01 + -2.367984117841246e+01 + -2.377511201965127e+01 + -2.387089464198777e+01 + -2.396719118999998e+01 + -2.406400380890314e+01 + -2.416133464354705e+01 + -2.425918584868402e+01 + -2.435755959379285e+01 + -2.445645803999998e+01 + -2.455588334675619e+01 + -2.465583769169985e+01 + -2.475632325621871e+01 + -2.485734222078360e+01 + -2.495889676999998e+01 + -2.506098909313465e+01 + -2.516362138717989e+01 + -2.526679585042222e+01 + -2.537051468121954e+01 + -2.547478008999998e+01 + -2.557959429416147e+01 + -2.568495950782481e+01 + -2.579087794894506e+01 + -2.589735184307986e+01 + -2.600438342000000e+01 + -2.611197491414786e+01 + -2.622012856937007e+01 + -2.632884662779481e+01 + -2.643813132670684e+01 + -2.654798492000000e+01 + -2.665840967182968e+01 + -2.676940784333127e+01 + -2.688098169572292e+01 + -2.699313349264397e+01 + -2.710586551000000e+01 + -2.721918002998715e+01 + -2.733307932892397e+01 + -2.744756569229334e+01 + -2.756264142140602e+01 + -2.767830881000000e+01 + -2.779457014947893e+01 + -2.791142774510221e+01 + -2.802888390934165e+01 + -2.814694096000261e+01 + -2.826560121000000e+01 + -2.838486697334714e+01 + -2.850474058224100e+01 + -2.862522436986088e+01 + -2.874632066501767e+01 + -2.886803181000000e+01 + -2.899036015446983e+01 + -2.911330804180568e+01 + -2.923687781925054e+01 + -2.936107184331833e+01 + -2.948589248000000e+01 + -2.961134209910011e+01 + -2.973742306338333e+01 + -2.986413774439124e+01 + -2.999148852946843e+01 + -3.011947780000000e+01 + -3.024810793640462e+01 + -3.037738133418102e+01 + -3.050730039248281e+01 + -3.063786751048302e+01 + -3.076908508999995e+01 + -3.090095553801825e+01 + -3.103348127528379e+01 + -3.116666472242296e+01 + -3.130050829541340e+01 + -3.143501442000000e+01 + -3.157018552904646e+01 + -3.170602405762165e+01 + -3.184253244456109e+01 + -3.197971313442012e+01 + -3.211756857999995e+01 + -3.225610123724459e+01 + -3.239531355479052e+01 + -3.253520799120049e+01 + -3.267578702273956e+01 + -3.281705312000000e+01 + -3.295900875199519e+01 + -3.310165640007095e+01 + -3.324499854981137e+01 + -3.338903768896250e+01 + -3.353377630999994e+01 + -3.367921690900354e+01 + -3.382536198480008e+01 + -3.397221404252836e+01 + -3.411977559608952e+01 + -3.426804916000000e+01 + -3.441703725062087e+01 + -3.456674239208418e+01 + -3.471716711255165e+01 + -3.486831394366235e+01 + -3.502018541999994e+01 + -3.517278408030963e+01 + -3.532611247314257e+01 + -3.548017315006599e+01 + -3.563496866378715e+01 + -3.579050157000000e+01 + -3.594677442911821e+01 + -3.610378981290209e+01 + -3.626155029281482e+01 + -3.642005843692588e+01 + -3.657931682999995e+01 + -3.673932806450152e+01 + -3.690009471994529e+01 + -3.706161938636306e+01 + -3.722390467398576e+01 + -3.738695318000000e+01 + -3.755076749872251e+01 + -3.771535025114206e+01 + -3.788070405790332e+01 + -3.804683152981476e+01 + -3.821373528999994e+01 + -3.838141797088579e+01 + -3.854988220802454e+01 + -3.871913063690455e+01 + -3.888916589260551e+01 + -3.905999062000000e+01 + -3.923160747217621e+01 + -3.940401910958111e+01 + -3.957722819105772e+01 + -3.975123737141870e+01 + -3.992604931999993e+01 + -4.010166671506960e+01 + -4.027809223215413e+01 + -4.045532854769397e+01 + -4.063337834194039e+01 + -4.081224431000000e+01 + -4.099192915380458e+01 + -4.117243556512365e+01 + -4.135376624213356e+01 + -4.153592389680070e+01 + -4.171891123999993e+01 + -4.190273098404973e+01 + -4.208738585293229e+01 + -4.227287857304115e+01 + -4.245921187066173e+01 + -4.264638848000000e+01 + -4.283441114000928e+01 + -4.302328258823673e+01 + -4.321300556988346e+01 + -4.340358284230594e+01 + -4.359501715999993e+01 + -4.378731127802528e+01 + -4.398046796379431e+01 + -4.417448998677844e+01 + -4.436938011574802e+01 + -4.456514113000000e+01 + -4.476177581459606e+01 + -4.495928695037842e+01 + -4.515767732491430e+01 + -4.535694973791337e+01 + -4.555710698999992e+01 + -4.575815188265746e+01 + -4.596008722124420e+01 + -4.616291581815827e+01 + -4.636664049491562e+01 + -4.657126407000000e+01 + -4.677678936329625e+01 + -4.698321921012249e+01 + -4.719055644645270e+01 + -4.739880390447049e+01 + -4.760796442999992e+01 + -4.781804087601476e+01 + -4.802903608806237e+01 + -4.824095291782189e+01 + -4.845379422957746e+01 + -4.866756289000000e+01 + -4.888226176793614e+01 + -4.909789373759357e+01 + -4.931446167624577e+01 + -4.953196846445736e+01 + -4.975041698999991e+01 + -4.996981014490353e+01 + -5.019015082042799e+01 + -5.041144191483806e+01 + -5.063368633767777e+01 + -5.085688700000000e+01 + -5.108104681363623e+01 + -5.130616869222998e+01 + -5.153225555529192e+01 + -5.175931033093434e+01 + -5.198733594999992e+01 + -5.221633534632925e+01 + -5.244631146064819e+01 + -5.267726723814258e+01 + -5.290920562821528e+01 + -5.314212958000000e+01 + -5.337604204603855e+01 + -5.361094599406351e+01 + -5.384684439089011e+01 + -5.408374019738633e+01 + -5.432163638999991e+01 + -5.456053595406303e+01 + -5.480044186892415e+01 + -5.504135712069162e+01 + -5.528328470761400e+01 + -5.552622762000000e+01 + -5.577018884907901e+01 + -5.601517141284037e+01 + -5.626117832498171e+01 + -5.650821258404100e+01 + -5.675627720999991e+01 + -5.700537523542541e+01 + -5.725550968441112e+01 + -5.750668358361924e+01 + -5.775889996777224e+01 + -5.801216188000000e+01 + -5.826647236807500e+01 + -5.852183447842080e+01 + -5.877825126017432e+01 + -5.903572576827786e+01 + -5.929426106999990e+01 + -5.955386023803142e+01 + -5.981452633626228e+01 + -6.007626243395679e+01 + -6.033907161265666e+01 + -6.060295696000000e+01 + -6.086792156620618e+01 + -6.113396851889991e+01 + -6.140110091270849e+01 + -6.166932185413050e+01 + -6.193863444999990e+01 + -6.220904180836374e+01 + -6.248054704389698e+01 + -6.275315327303672e+01 + -6.302686361375484e+01 + -6.330168120000000e+01 + -6.357760917255472e+01 + -6.385465065869710e+01 + -6.413280879313753e+01 + -6.441208672717147e+01 + -6.469248761000000e+01 + -6.497401459207148e+01 + -6.525667083785252e+01 + -6.554045951020694e+01 + -6.582538376572784e+01 + -6.611144677999999e+01 + -6.639865173804421e+01 + -6.668700181225154e+01 + -6.697650018322166e+01 + -6.726715004865791e+01 + -6.755895460000001e+01 + -6.785191702754956e+01 + -6.814604053706709e+01 + -6.844132833746227e+01 + -6.873778363702108e+01 + -6.903540965000001e+01 + -6.933420959649558e+01 + -6.963418670433917e+01 + -6.993534420146086e+01 + -7.023768531400407e+01 + -7.054121327999999e+01 + -7.084593134500037e+01 + -7.115184275353549e+01 + -7.145895075432828e+01 + -7.176725860332733e+01 + -7.207676955999989e+01 + -7.238748688676215e+01 + -7.269941385037480e+01 + -7.301255372170849e+01 + -7.332690977697268e+01 + -7.364248530000000e+01 + -7.395928357816831e+01 + -7.427730789465394e+01 + -7.459656154154558e+01 + -7.491704782593285e+01 + -7.523877004999987e+01 + -7.556173151464178e+01 + -7.588593553169946e+01 + -7.621138541944168e+01 + -7.653808450163682e+01 + -7.686603610000000e+01 + -7.719524353805981e+01 + -7.752571015313293e+01 + -7.785743928572181e+01 + -7.819043427631229e+01 + -7.852469846999988e+01 + -7.886023521608357e+01 + -7.919704786882774e+01 + -7.953513978918475e+01 + -7.987451434652237e+01 + -8.021517491000000e+01 + -8.055712484895521e+01 + -8.090036753598372e+01 + -8.124490635250547e+01 + -8.159074469172391e+01 + -8.193788593999987e+01 + -8.228633348416081e+01 + -8.263609073313938e+01 + -8.298716109541151e+01 + -8.333954797103145e+01 + -8.369325477000000e+01 + -8.404828491028280e+01 + -8.440464181412719e+01 + -8.476232890793086e+01 + -8.512134962287996e+01 + -8.548170738999985e+01 + -8.584340564352934e+01 + -8.620644783199920e+01 + -8.657083740482393e+01 + -8.693657780824788e+01 + -8.730367250000000e+01 + -8.767212494371194e+01 + -8.804193859639375e+01 + -8.841311692593891e+01 + -8.878566341870939e+01 + -8.915958154999986e+01 + -8.953487479168578e+01 + -8.991154663471849e+01 + -9.028960057395298e+01 + -9.066904010318096e+01 + -9.104986872000001e+01 + -9.143208992686800e+01 + -9.181570723560402e+01 + -9.220072416114067e+01 + -9.258714421980083e+01 + -9.297497092999986e+01 + -9.336420781525349e+01 + -9.375485841426487e+01 + -9.414692626313253e+01 + -9.454041488965315e+01 + -9.493532784000000e+01 + -9.533166867059026e+01 + -9.572944092950100e+01 + -9.612864816948191e+01 + -9.652929395407540e+01 + -9.693138184999984e+01 + -9.733491542620831e+01 + -9.773989825487583e+01 + -9.814633391500892e+01 + -9.855422599474231e+01 + -9.896357808000000e+01 + -9.937439375553778e+01 + -9.978667660951464e+01 + -1.002004302498873e+02 + -1.006156583113964e+02 + -1.010323643999998e+02 + -1.014505521033422e+02 + -1.018702250167552e+02 + -1.022913867648504e+02 + -1.027140410123223e+02 + -1.031381914000000e+02 + -1.035638415489902e+02 + -1.039909950728156e+02 + -1.044196556182856e+02 + -1.048498268814360e+02 + -1.052815124999998e+02 + -1.057147160851634e+02 + -1.061494413040264e+02 + -1.065856918490972e+02 + -1.070234714266025e+02 + -1.074627837000000e+02 + -1.079036323073108e+02 + -1.083460208994117e+02 + -1.087899531790557e+02 + -1.092354329168266e+02 + -1.096824637999998e+02 + -1.101310494754678e+02 + -1.105811936593542e+02 + -1.110329000832090e+02 + -1.114861724712110e+02 + -1.119410145000000e+02 + -1.123974298499644e+02 + -1.128554223365672e+02 + -1.133149957276709e+02 + -1.137761536721920e+02 + -1.142388998999998e+02 + -1.147032381951767e+02 + -1.151691723223398e+02 + -1.156367060267053e+02 + -1.161058430340008e+02 + -1.165765871000000e+02 + -1.170489420136372e+02 + -1.175229116129598e+02 + -1.179984996644491e+02 + -1.184757098197581e+02 + -1.189545458999998e+02 + -1.194350118004852e+02 + -1.199171112501401e+02 + -1.204008480035419e+02 + -1.208862259161727e+02 + -1.213732488000000e+02 + -1.218619204419225e+02 + -1.223522446637547e+02 + -1.228442252993658e+02 + -1.233378661832514e+02 + -1.238331710999998e+02 + -1.243301438371392e+02 + -1.248287883218059e+02 + -1.253291084262349e+02 + -1.258311078947497e+02 + -1.263347906000000e+02 + -1.268401604692280e+02 + -1.273472212887372e+02 + -1.278559768940106e+02 + -1.283664312433523e+02 + -1.288785881999998e+02 + -1.293924515790011e+02 + -1.299080252758494e+02 + -1.304253131892150e+02 + -1.309443191941241e+02 + -1.314650472000000e+02 + -1.319875011267033e+02 + -1.325116848422910e+02 + -1.330376022476014e+02 + -1.335652573069860e+02 + -1.340946538999998e+02 + -1.346257958892211e+02 + -1.351586873010075e+02 + -1.356933320835031e+02 + -1.362297340185993e+02 + -1.367678971000000e+02 + -1.373078254089903e+02 + -1.378495227933144e+02 + -1.383929931342302e+02 + -1.389382404506380e+02 + -1.394852686999998e+02 + -1.400340818144768e+02 + -1.405846838138316e+02 + -1.411370786853171e+02 + -1.416912703410207e+02 + -1.422472628000000e+02 + -1.428050601118040e+02 + -1.433646661562381e+02 + -1.439260848884736e+02 + -1.444893204354731e+02 + -1.450543767999998e+02 + -1.456212579173106e+02 + -1.461899678121767e+02 + -1.467605105156440e+02 + -1.473328900351724e+02 + -1.479071104000000e+02 + -1.484831756560318e+02 + -1.490610898537698e+02 + -1.496408570188282e+02 + -1.502224811435522e+02 + -1.508059663000000e+02 + -1.513913165938295e+02 + -1.519785360517816e+02 + -1.525676287092765e+02 + -1.531585986433134e+02 + -1.537514498999998e+02 + -1.543461865304275e+02 + -1.549428126935839e+02 + -1.555413324987964e+02 + -1.561417499433451e+02 + -1.567440691000000e+02 + -1.573482940967384e+02 + -1.579544290618548e+02 + -1.585624781173004e+02 + -1.591724453723425e+02 + -1.597843348999998e+02 + -1.603981507727703e+02 + -1.610138971515657e+02 + -1.616315781879854e+02 + -1.622511979884414e+02 + -1.628727607000000e+02 + -1.634962704824068e+02 + -1.641217314319286e+02 + -1.647491476962519e+02 + -1.653785235159056e+02 + -1.660098629999998e+02 + -1.666431702132707e+02 + -1.672784494025457e+02 + -1.679157047805161e+02 + -1.685549404452619e+02 + -1.691961606000000e+02 + -1.698393694891200e+02 + -1.704845712252935e+02 + -1.711317699673001e+02 + -1.717809699904770e+02 + -1.724321754999998e+02 + -1.730853906636835e+02 + -1.737406197069920e+02 + -1.743978668390772e+02 + -1.750571362267288e+02 + -1.757184321000000e+02 + -1.763817587329360e+02 + -1.770471204015179e+02 + -1.777145213342737e+02 + -1.783839656916257e+02 + -1.790554576999997e+02 + -1.797290016348361e+02 + -1.804046017812607e+02 + -1.810822624074922e+02 + -1.817619877551305e+02 + -1.824437821000000e+02 + -1.831276497291853e+02 + -1.838135948809234e+02 + -1.845016218201234e+02 + -1.851917348679873e+02 + -1.858839382999998e+02 + -1.865782363787204e+02 + -1.872746334451072e+02 + -1.879731338116912e+02 + -1.886737417231232e+02 + -1.893764615000000e+02 + -1.900812975069574e+02 + -1.907882540726982e+02 + -1.914973354967214e+02 + -1.922085460544087e+02 + -1.929218900999998e+02 + -1.936373720194894e+02 + -1.943549961169706e+02 + -1.950747667123967e+02 + -1.957966881820183e+02 + -1.965207649000000e+02 + -1.972470012275908e+02 + -1.979754014928308e+02 + -1.987059700466389e+02 + -1.994387112870401e+02 + -2.001736295999997e+02 + -2.009107293657797e+02 + -2.016500149830146e+02 + -2.023914908231823e+02 + -2.031351612174878e+02 + -2.038810306000000e+02 + -2.046291034502658e+02 + -2.053793841544099e+02 + -2.061318770718700e+02 + -2.068865865659776e+02 + -2.076435170999997e+02 + -2.084026731731890e+02 + -2.091640591716557e+02 + -2.099276794995817e+02 + -2.106935386300690e+02 + -2.114616410000000e+02 + -2.122319910255027e+02 + -2.130045931490896e+02 + -2.137794518362718e+02 + -2.145565715736208e+02 + -2.153359567999997e+02 + -2.161176119510612e+02 + -2.169015415764713e+02 + -2.176877501734888e+02 + -2.184762421224458e+02 + -2.192670219000000e+02 + -2.200600940505141e+02 + -2.208554631128035e+02 + -2.216531335679009e+02 + -2.224531098207831e+02 + -2.232553963999997e+02 + -2.240599978997985e+02 + -2.248669188401317e+02 + -2.256761637092654e+02 + -2.264877369816284e+02 + -2.273016432000000e+02 + -2.281178869415660e+02 + -2.289364727411434e+02 + -2.297574051254879e+02 + -2.305806886273285e+02 + -2.314063277999997e+02 + -2.322343272067604e+02 + -2.330646913987978e+02 + -2.338974249389632e+02 + -2.347325324124834e+02 + -2.355700184000000e+02 + -2.364098874788788e+02 + -2.372521442301691e+02 + -2.380967932316097e+02 + -2.389438390563173e+02 + -2.397932862999997e+02 + -2.406451395699314e+02 + -2.414994034603918e+02 + -2.423560825773335e+02 + -2.432151815494090e+02 + -2.440767050000000e+02 + -2.449406575494712e+02 + -2.458070438246558e+02 + -2.466758684438366e+02 + -2.475471360143982e+02 + -2.484208511999996e+02 + -2.492970186823550e+02 + -2.501756430678903e+02 + -2.510567289807632e+02 + -2.519402811010791e+02 + -2.528263041000000e+02 + -2.537148026392507e+02 + -2.546057813786489e+02 + -2.554992449908618e+02 + -2.563951981686694e+02 + -2.572936455999996e+02 + -2.581945919701986e+02 + -2.590980419711499e+02 + -2.600040002856254e+02 + -2.609124715849065e+02 + -2.618234606000000e+02 + -2.627369720784054e+02 + -2.636530106775519e+02 + -2.645715811006028e+02 + -2.654926881465747e+02 + -2.664163364999997e+02 + -2.673425308135112e+02 + -2.682712759281322e+02 + -2.692025766270102e+02 + -2.701364375396030e+02 + -2.710728634000000e+02 + -2.720118590149941e+02 + -2.729534291763713e+02 + -2.738975786300543e+02 + -2.748443120676544e+02 + -2.757936342999997e+02 + -2.767455501787848e+02 + -2.777000643997414e+02 + -2.786571816989448e+02 + -2.796169069311608e+02 + -2.805792449000000e+02 + -2.815442003833780e+02 + -2.825117782146733e+02 + -2.834819832031981e+02 + -2.844548201023671e+02 + -2.854302936999997e+02 + -2.864084088239409e+02 + -2.873891703596309e+02 + -2.883725831483384e+02 + -2.893586519481404e+02 + -2.903473816000000e+02 + -2.913387769892773e+02 + -2.923328429461174e+02 + -2.933295843055886e+02 + -2.943290059327143e+02 + -2.953311126999996e+02 + -2.963359094688269e+02 + -2.973434010446480e+02 + -2.983535922946355e+02 + -2.993664881931061e+02 + -3.003820936000000e+02 + -3.014004133189056e+02 + -3.024214522481863e+02 + -3.034452153213495e+02 + -3.044717074825456e+02 + -3.055009335999997e+02 + -3.065328985120693e+02 + -3.075676071368449e+02 + -3.086050644279766e+02 + -3.096452753553112e+02 + -3.106882447999996e+02 + -3.117339776182681e+02 + -3.127824787990806e+02 + -3.138337533166528e+02 + -3.148878060732492e+02 + -3.159446419999996e+02 + -3.170042660531784e+02 + -3.180666831989414e+02 + -3.191318984100575e+02 + -3.201999166629245e+02 + -3.212707428999996e+02 + -3.223443820580361e+02 + -3.234208391391681e+02 + -3.245001191331626e+02 + -3.255822269890704e+02 + -3.266671677000000e+02 + -3.277549462905472e+02 + -3.288455677875165e+02 + -3.299390371822755e+02 + -3.310353594166140e+02 + -3.321345394999996e+02 + -3.332365824854958e+02 + -3.343414934139734e+02 + -3.354492773045120e+02 + -3.365599391517927e+02 + -3.376734840000000e+02 + -3.387899169180687e+02 + -3.399092429402671e+02 + -3.410314670886827e+02 + -3.421565943845668e+02 + -3.432846298999996e+02 + -3.444155787253185e+02 + -3.455494458929433e+02 + -3.466862364711880e+02 + -3.478259555971263e+02 + -3.489686083000000e+02 + -3.501141995805723e+02 + -3.512627346186799e+02 + -3.524142185495274e+02 + -3.535686563776662e+02 + -3.547260531999996e+02 + -3.558864141649047e+02 + -3.570497443588797e+02 + -3.582160488781844e+02 + -3.593853328562213e+02 + -3.605576014000000e+02 + -3.617328596203877e+02 + -3.629111127187760e+02 + -3.640923658296630e+02 + -3.652766239636252e+02 + -3.664638922999996e+02 + -3.676541760949210e+02 + -3.688474804479435e+02 + -3.700438104641370e+02 + -3.712431713192604e+02 + -3.724455682000000e+02 + -3.736510062917217e+02 + -3.748594907617601e+02 + -3.760710267615897e+02 + -3.772856194324323e+02 + -3.785032739999995e+02 + -3.797239957155368e+02 + -3.809477897125092e+02 + -3.821746611611994e+02 + -3.834046153278488e+02 + -3.846376574000000e+02 + -3.858737925371631e+02 + -3.871130260109560e+02 + -3.883553630688227e+02 + -3.896008088834330e+02 + -3.908493686999996e+02 + -3.921010477895665e+02 + -3.933558513233559e+02 + -3.946137845264227e+02 + -3.958748527376295e+02 + -3.971390612000000e+02 + -3.984064151109821e+02 + -3.996769197585321e+02 + -4.009505804131749e+02 + -4.022274022910074e+02 + -4.035073906999995e+02 + -4.047905509809469e+02 + -4.060768883569506e+02 + -4.073664080804837e+02 + -4.086591154923789e+02 + -4.099550159000000e+02 + -4.112541145837781e+02 + -4.125564168232350e+02 + -4.138619279264533e+02 + -4.151706532436620e+02 + -4.164825980999995e+02 + -4.177977678009782e+02 + -4.191161676484082e+02 + -4.204378029703449e+02 + -4.217626791355866e+02 + -4.230908015000000e+02 + -4.244221753941545e+02 + -4.257568060915354e+02 + -4.270946989435893e+02 + -4.284358594322071e+02 + -4.297802928999995e+02 + -4.311280046181774e+02 + -4.324789999621266e+02 + -4.338332843406102e+02 + -4.351908631680312e+02 + -4.365517418000000e+02 + -4.379159255766193e+02 + -4.392834199290754e+02 + -4.406542302894571e+02 + -4.420283620541414e+02 + -4.434058205999995e+02 + -4.447866113008026e+02 + -4.461707395611302e+02 + -4.475582108324218e+02 + -4.489490306166049e+02 + -4.503432043000000e+02 + -4.517407372272212e+02 + -4.531416348857516e+02 + -4.545459027469901e+02 + -4.559535462055746e+02 + -4.573645706999994e+02 + -4.587789817092769e+02 + -4.601967847429616e+02 + -4.616179852648949e+02 + -4.630425886631084e+02 + -4.644706004000000e+02 + -4.659020259847504e+02 + -4.673368709042424e+02 + -4.687751406384571e+02 + -4.702168406679589e+02 + -4.716619764999995e+02 + -4.731105536500806e+02 + -4.745625775980045e+02 + -4.760180538297375e+02 + -4.774769878558138e+02 + -4.789393852000000e+02 + -4.804052513950263e+02 + -4.818745919803221e+02 + -4.833474124743740e+02 + -4.848237183656923e+02 + -4.863035151999994e+02 + -4.877868085453354e+02 + -4.892736039052198e+02 + -4.907639068268139e+02 + -4.922577229425711e+02 + -4.937550578000000e+02 + -4.952559169027076e+02 + -4.967603058178435e+02 + -4.982682301416788e+02 + -4.997796954853789e+02 + -5.012947073999994e+02 + -5.028132714194502e+02 + -5.043353931676896e+02 + -5.058610782730644e+02 + -5.073903323321115e+02 + -5.089231609000000e+02 + -5.104595695386481e+02 + -5.119995639358939e+02 + -5.135431497453484e+02 + -5.150903325247945e+02 + -5.166411178999995e+02 + -5.181955115300345e+02 + -5.197535190105982e+02 + -5.213151459679927e+02 + -5.228803980937674e+02 + -5.244492810000000e+02 + -5.260218002787250e+02 + -5.275979616609960e+02 + -5.291777708470047e+02 + -5.307612334400695e+02 + -5.323483550999995e+02 + -5.339391415258532e+02 + -5.355335984055753e+02 + -5.371317314077364e+02 + -5.387335461786030e+02 + -5.403390484000000e+02 + -5.419482437848817e+02 + -5.435611380730882e+02 + -5.451777369746786e+02 + -5.467980461477442e+02 + -5.484220712999994e+02 + -5.500498181706811e+02 + -5.516812924850077e+02 + -5.533164999617454e+02 + -5.549554463178829e+02 + -5.565981372999994e+02 + -5.582445786620732e+02 + -5.598947761113077e+02 + -5.615487353817318e+02 + -5.632064622631164e+02 + -5.648679624999994e+02 + -5.665332418238921e+02 + -5.682023060429622e+02 + -5.698751609401672e+02 + -5.715518122344557e+02 + -5.732322656999993e+02 + -5.749165271427032e+02 + -5.766046023386582e+02 + -5.782964970855437e+02 + -5.799922172195480e+02 + -5.816917684999994e+02 + -5.833951566715182e+02 + -5.851023876259811e+02 + -5.868134672043320e+02 + -5.885284011210334e+02 + -5.902471951999993e+02 + -5.919698553287222e+02 + -5.936963873375214e+02 + -5.954267970459595e+02 + -5.971610902818754e+02 + -5.988992728999993e+02 + -6.006413507613062e+02 + -6.023873296844711e+02 + -6.041372155081436e+02 + -6.058910141182311e+02 + -6.076487313999993e+02 + -6.094103732273231e+02 + -6.111759454411804e+02 + -6.129454539033432e+02 + -6.147189045204622e+02 + -6.164963032000001e+02 + -6.182776558378988e+02 + -6.200629682925465e+02 + -6.218522464515877e+02 + -6.236454962577363e+02 + -6.254427235999993e+02 + -6.272439343587159e+02 + -6.290491345295636e+02 + -6.308583300588987e+02 + -6.326715267788347e+02 + -6.344887306000001e+02 + -6.363099474872770e+02 + -6.381351833941451e+02 + -6.399644442896572e+02 + -6.417977361628546e+02 + -6.436350648999993e+02 + -6.454764363684590e+02 + -6.473218566292518e+02 + -6.491713317125350e+02 + -6.510248675271151e+02 + -6.528824700000000e+02 + -6.547441451008573e+02 + -6.566098988943567e+02 + -6.584797373808955e+02 + -6.603536664383599e+02 + -6.622316920999993e+02 + -6.641138204605409e+02 + -6.660000574329696e+02 + -6.678904089961051e+02 + -6.697848812885560e+02 + -6.716834803000000e+02 + -6.735862119462199e+02 + -6.754930822688247e+02 + -6.774040973560088e+02 + -6.793192633079277e+02 + -6.812385860999992e+02 + -6.831620716800010e+02 + -6.850897262089175e+02 + -6.870215557906422e+02 + -6.889575663679858e+02 + -6.908977640000001e+02 + -6.928421548145254e+02 + -6.947907448778678e+02 + -6.967435402481692e+02 + -6.987005469959722e+02 + -7.006617711999993e+02 + -7.026272189534540e+02 + -7.045968963883171e+02 + -7.065708096021641e+02 + -7.085489646318440e+02 + -7.105313676000000e+02 + -7.125180246666655e+02 + -7.145089419064375e+02 + -7.165041254104643e+02 + -7.185035813280965e+02 + -7.205073157999993e+02 + -7.225153349567163e+02 + -7.245276449240899e+02 + -7.265442518464891e+02 + -7.285651618951177e+02 + -7.305903812000000e+02 + -7.326199158832851e+02 + -7.346537721472801e+02 + -7.366919561576724e+02 + -7.387344740033407e+02 + -7.407813318999993e+02 + -7.428325361060332e+02 + -7.448880927069067e+02 + -7.469480078569493e+02 + -7.490122878703525e+02 + -7.510809389000000e+02 + -7.531539670309830e+02 + -7.552313785295614e+02 + -7.573131796529314e+02 + -7.593993765758833e+02 + -7.614899754999992e+02 + -7.635849826556215e+02 + -7.656844042998581e+02 + -7.677882466626152e+02 + -7.698965159244972e+02 + -7.720092183000000e+02 + -7.741263600422619e+02 + -7.762479474594095e+02 + -7.783739868214470e+02 + -7.805044843222228e+02 + -7.826394461999992e+02 + -7.847788787331309e+02 + -7.869227882276110e+02 + -7.890711809493379e+02 + -7.912240631015031e+02 + -7.933814410000000e+02 + -7.955433210068886e+02 + -7.977097093640062e+02 + -7.998806123337483e+02 + -8.020560362523712e+02 + -8.042359873999992e+02 + -8.064204720446323e+02 + -8.086094965664213e+02 + -8.108030673053524e+02 + -8.130011905039750e+02 + -8.152038725000000e+02 + -8.174111196729889e+02 + -8.196229383028856e+02 + -8.218393347070877e+02 + -8.240603152936806e+02 + -8.262858863999992e+02 + -8.285160543327190e+02 + -8.307508254786889e+02 + -8.329902062108882e+02 + -8.352342028550189e+02 + -8.374828218000000e+02 + -8.397360694583805e+02 + -8.419939521636865e+02 + -8.442564762682848e+02 + -8.465236481828920e+02 + -8.487954742999991e+02 + -8.510719610066617e+02 + -8.533531147279726e+02 + -8.556389418758610e+02 + -8.579294488297842e+02 + -8.602246420000000e+02 + -8.625245278111681e+02 + -8.648291126593311e+02 + -8.671384029773127e+02 + -8.694524052578884e+02 + -8.717711258999991e+02 + -8.740945712693658e+02 + -8.764227478547659e+02 + -8.787556621558366e+02 + -8.810933206360036e+02 + -8.834357297000000e+02 + -8.857828957473700e+02 + -8.881348253000285e+02 + -8.904915248639498e+02 + -8.928530008754832e+02 + -8.952192597999992e+02 + -8.975903081273602e+02 + -8.999661523549036e+02 + -9.023467989915350e+02 + -9.047322545556517e+02 + -9.071225255000001e+02 + -9.095176182642568e+02 + -9.119175394073789e+02 + -9.143222954857910e+02 + -9.167318930073794e+02 + -9.191463384999990e+02 + -9.215656384936522e+02 + -9.239897994653498e+02 + -9.264188279352956e+02 + -9.288527305046009e+02 + -9.312915136999991e+02 + -9.337351840217814e+02 + -9.361837480744202e+02 + -9.386372124507991e+02 + -9.410955836845210e+02 + -9.435588682999991e+02 + -9.460270728408829e+02 + -9.485002039375468e+02 + -9.509782681943145e+02 + -9.534612721474879e+02 + -9.559492223999991e+02 + -9.584421255818636e+02 + -9.609399882443452e+02 + -9.634428169536077e+02 + -9.659506183300578e+02 + -9.684633989999990e+02 + -9.709811655949806e+02 + -9.735039247636544e+02 + -9.760316831188370e+02 + -9.785644472182881e+02 + -9.811022236999991e+02 + -9.836450192407020e+02 + -9.861928404528198e+02 + -9.887456939756197e+02 + -9.913035865101050e+02 + -9.938665246999991e+02 + -9.964345151588749e+02 + -9.990075645416573e+02 + -1.001585679508894e+03 + -1.004168866725833e+03 + -1.006757132999999e+03 + -1.009350485088950e+03 + -1.011948929193798e+03 + -1.014552472017065e+03 + -1.017161121149714e+03 + -1.019774882999999e+03 + -1.022393763477281e+03 + -1.025017769745607e+03 + -1.027646908706880e+03 + -1.030281186449000e+03 + -1.032920609999999e+03 + -1.035565186772393e+03 + -1.038214923106640e+03 + -1.040869825393126e+03 + -1.043529900494233e+03 + -1.046195154999999e+03 + -1.048865595518282e+03 + -1.051541229525064e+03 + -1.054222063914517e+03 + -1.056908104442841e+03 + -1.059599357999999e+03 + -1.062295832060889e+03 + -1.064997533253958e+03 + -1.067704468147946e+03 + -1.070416643533965e+03 + -1.073134066000000e+03 + -1.075856742179453e+03 + -1.078584679453085e+03 + -1.081317884808236e+03 + -1.084056364390976e+03 + -1.086800124999999e+03 + -1.089549173751501e+03 + -1.092303517161580e+03 + -1.095063162007773e+03 + -1.097828115663242e+03 + -1.100598385000000e+03 + -1.103373976558467e+03 + -1.106154896984741e+03 + -1.108941153067517e+03 + -1.111732751768433e+03 + -1.114529699999999e+03 + -1.117332004656191e+03 + -1.120139672719820e+03 + -1.122952711033347e+03 + -1.125771126202256e+03 + -1.128594925000000e+03 + -1.131424114391635e+03 + -1.134258701616623e+03 + -1.137098693726371e+03 + -1.139944097362279e+03 + -1.142794918999999e+03 + -1.145651165298781e+03 + -1.148512843975744e+03 + -1.151379962155369e+03 + -1.154252525751212e+03 + -1.157130542000000e+03 + -1.160014018647746e+03 + -1.162902961796701e+03 + -1.165797378002409e+03 + -1.168697275086654e+03 + -1.171602659999999e+03 + -1.174513539162380e+03 + -1.177429919411751e+03 + -1.180351807863387e+03 + -1.183279211838743e+03 + -1.186212138000000e+03 + -1.189150592852472e+03 + -1.192094584016226e+03 + -1.195044118757429e+03 + -1.197999203418656e+03 + -1.200959844999999e+03 + -1.203926050837031e+03 + -1.206897827704460e+03 + -1.209875182550288e+03 + -1.212858122751144e+03 + -1.215846655000000e+03 + -1.218840785789916e+03 + -1.221840522671824e+03 + -1.224845872987532e+03 + -1.227856843385819e+03 + -1.230873440999999e+03 + -1.233895673111333e+03 + -1.236923546192640e+03 + -1.239957067026041e+03 + -1.242996243170224e+03 + -1.246041082000000e+03 + -1.249091590572761e+03 + -1.252147775334870e+03 + -1.255209643154299e+03 + -1.258277201722480e+03 + -1.261350457999999e+03 + -1.264429418673061e+03 + -1.267514091394071e+03 + -1.270604483350415e+03 + -1.273700600740823e+03 + -1.276802451000000e+03 + -1.279910042060014e+03 + -1.283023380429426e+03 + -1.286142472688095e+03 + -1.289267326090673e+03 + -1.292397947999999e+03 + -1.295534345774196e+03 + -1.298676526619691e+03 + -1.301824497524618e+03 + -1.304978265240164e+03 + -1.308137837000000e+03 + -1.311303220289759e+03 + -1.314474422298625e+03 + -1.317651449999705e+03 + -1.320834310180745e+03 + -1.324023009999999e+03 + -1.327217556910311e+03 + -1.330417958531748e+03 + -1.333624221890711e+03 + -1.336836353161044e+03 + -1.340054360000000e+03 + -1.343278250622039e+03 + -1.346508031450468e+03 + -1.349743709083262e+03 + -1.352985291084887e+03 + -1.356232784999999e+03 + -1.359486198143600e+03 + -1.362745537187869e+03 + -1.366010809195683e+03 + -1.369282022032803e+03 + -1.372559183000000e+03 + -1.375842299046690e+03 + -1.379131377356324e+03 + -1.382426425045151e+03 + -1.385727449081319e+03 + -1.389034456999999e+03 + -1.392347456524483e+03 + -1.395666454635196e+03 + -1.398991458464414e+03 + -1.402322475610563e+03 + -1.405659513000000e+03 + -1.409002577344138e+03 + -1.412351676333446e+03 + -1.415706817605260e+03 + -1.419068008353351e+03 + -1.422435255999999e+03 + -1.425808567964313e+03 + -1.429187950969556e+03 + -1.432573411998037e+03 + -1.435964958719179e+03 + -1.439362599000000e+03 + -1.442766340439504e+03 + -1.446176189225631e+03 + -1.449592152360744e+03 + -1.453014238529275e+03 + -1.456442454999999e+03 + -1.459876808245435e+03 + -1.463317305593544e+03 + -1.466763954627232e+03 + -1.470216762966463e+03 + -1.473675738000000e+03 + -1.477140887005819e+03 + -1.480612217422037e+03 + -1.484089736511155e+03 + -1.487573451238554e+03 + -1.491063368999999e+03 + -1.494559497483912e+03 + -1.498061844364458e+03 + -1.501570417048641e+03 + -1.505085222548716e+03 + -1.508606267999999e+03 + -1.512133560790714e+03 + -1.515667108906144e+03 + -1.519206919999463e+03 + -1.522753000996140e+03 + -1.526305358999999e+03 + -1.529864001422905e+03 + -1.533428936276007e+03 + -1.537000171179230e+03 + -1.540577712963951e+03 + -1.544161568999999e+03 + -1.547751747018138e+03 + -1.551348254621497e+03 + -1.554951099280540e+03 + -1.558560288310355e+03 + -1.562175828999999e+03 + -1.565797728689906e+03 + -1.569425994958102e+03 + -1.573060635400619e+03 + -1.576701657553543e+03 + -1.580349068999999e+03 + -1.584002877314684e+03 + -1.587663089901193e+03 + -1.591329713983250e+03 + -1.595002756657312e+03 + -1.598682225999999e+03 + -1.602368130282464e+03 + -1.606060476003810e+03 + -1.609759270166310e+03 + -1.613464521194204e+03 + -1.617176236999999e+03 + -1.620894424965112e+03 + -1.624619091996676e+03 + -1.628350245392540e+03 + -1.632087893195996e+03 + -1.635832042999999e+03 + -1.639582702219653e+03 + -1.643339878880967e+03 + -1.647103580589531e+03 + -1.650873814125992e+03 + -1.654650586999999e+03 + -1.658433907212865e+03 + -1.662223782656940e+03 + -1.666020220927786e+03 + -1.669823229228366e+03 + -1.673632814999999e+03 + -1.677448985879331e+03 + -1.681271749582079e+03 + -1.685101113981527e+03 + -1.688937087086922e+03 + -1.692779675999999e+03 + -1.696628887589857e+03 + -1.700484730162859e+03 + -1.704347211664743e+03 + -1.708216339003609e+03 + -1.712092119999999e+03 + -1.715974562928047e+03 + -1.719863675285195e+03 + -1.723759464515762e+03 + -1.727661938269359e+03 + -1.731571103999999e+03 + -1.735486969207614e+03 + -1.739409542118944e+03 + -1.743338830603560e+03 + -1.747274841733617e+03 + -1.751217582999999e+03 + -1.755167062315964e+03 + -1.759123288009624e+03 + -1.763086267739076e+03 + -1.767056008086542e+03 + -1.771032516999999e+03 + -1.775015803098183e+03 + -1.779005873908525e+03 + -1.783002736756524e+03 + -1.787006399126180e+03 + -1.791016869000000e+03 + -1.795034154506543e+03 + -1.799058263107071e+03 + -1.803089202321619e+03 + -1.807126980015989e+03 + -1.811171603999998e+03 + -1.815223082025504e+03 + -1.819281421835726e+03 + -1.823346631247284e+03 + -1.827418718154363e+03 + -1.831497690000000e+03 + -1.835583554215247e+03 + -1.839676319355180e+03 + -1.843775993459518e+03 + -1.847882583413063e+03 + -1.851996096999998e+03 + -1.856116542493618e+03 + -1.860243927542824e+03 + -1.864378259929794e+03 + -1.868519547846306e+03 + -1.872667799000000e+03 + -1.876823020804590e+03 + -1.880985220849939e+03 + -1.885154407199114e+03 + -1.889330588466962e+03 + -1.893513771999998e+03 + -1.897703964771626e+03 + -1.901901175652285e+03 + -1.906105412964281e+03 + -1.910316683519642e+03 + -1.914534995000000e+03 + -1.918760355678869e+03 + -1.922992773607248e+03 + -1.927232256642219e+03 + -1.931478812455566e+03 + -1.935732448999998e+03 + -1.939993174351127e+03 + -1.944260996306766e+03 + -1.948535922544343e+03 + -1.952817960710870e+03 + -1.957107119000000e+03 + -1.961403405774432e+03 + -1.965706828656891e+03 + -1.970017395435863e+03 + -1.974335114379128e+03 + -1.978659992999998e+03 + -1.982992038634364e+03 + -1.987331259958815e+03 + -1.991677665406797e+03 + -1.996031262526477e+03 + -2.000392059000000e+03 + -2.004760062662544e+03 + -2.009135281420714e+03 + -2.013517723394651e+03 + -2.017907396963966e+03 + -2.022304309999998e+03 + -2.026708470129302e+03 + -2.031119885371980e+03 + -2.035538563783372e+03 + -2.039964513323241e+03 + -2.044397742000000e+03 + -2.048838257821666e+03 + -2.053286068652342e+03 + -2.057741182613919e+03 + -2.062203608203423e+03 + -2.066673352999998e+03 + -2.071150424296029e+03 + -2.075634830690161e+03 + -2.080126580708826e+03 + -2.084625682242698e+03 + -2.089132143000000e+03 + -2.093645970720743e+03 + -2.098167173603271e+03 + -2.102695759983049e+03 + -2.107231738184183e+03 + -2.111775115999998e+03 + -2.116325901057278e+03 + -2.120884101683680e+03 + -2.125449726108530e+03 + -2.130022782163747e+03 + -2.134603278000000e+03 + -2.139191221924691e+03 + -2.143786621957349e+03 + -2.148389485981318e+03 + -2.152999821836896e+03 + -2.157617637999998e+03 + -2.162242943074696e+03 + -2.166875744534069e+03 + -2.171516050262848e+03 + -2.176163869133622e+03 + -2.180819209000000e+03 + -2.185482077327040e+03 + -2.190152482871076e+03 + -2.194830433950524e+03 + -2.199515937814626e+03 + -2.204209002999998e+03 + -2.208909638535144e+03 + -2.213617851857877e+03 + -2.218333650781778e+03 + -2.223057044225780e+03 + -2.227788040000000e+03 + -2.232526645541351e+03 + -2.237272869895315e+03 + -2.242026721580949e+03 + -2.246788207788726e+03 + -2.251557336999999e+03 + -2.256334118250544e+03 + -2.261118559161676e+03 + -2.265910667352767e+03 + -2.270710451040453e+03 + -2.275517918999998e+03 + -2.280333080014267e+03 + -2.285155941593499e+03 + -2.289986511539142e+03 + -2.294824798563590e+03 + -2.299670810999998e+03 + -2.304524556927484e+03 + -2.309386044592275e+03 + -2.314255282195762e+03 + -2.319132277836808e+03 + -2.324017039999998e+03 + -2.328909577220459e+03 + -2.333809897224200e+03 + -2.338718008145149e+03 + -2.343633918994289e+03 + -2.348557637999998e+03 + -2.353489172912608e+03 + -2.358428531797252e+03 + -2.363375723128402e+03 + -2.368330755820120e+03 + -2.373293637999998e+03 + -2.378264377427878e+03 + -2.383242982526706e+03 + -2.388229461889857e+03 + -2.393223824063392e+03 + -2.398226076999998e+03 + -2.403236228525699e+03 + -2.408254287477974e+03 + -2.413280262494937e+03 + -2.418314161547432e+03 + -2.423355992999998e+03 + -2.428405765403690e+03 + -2.433463486890615e+03 + -2.438529165661329e+03 + -2.443602810190047e+03 + -2.448684428999998e+03 + -2.453774030522361e+03 + -2.458871622761939e+03 + -2.463977214083831e+03 + -2.469090813490053e+03 + -2.474212428999998e+03 + -2.479342068313477e+03 + -2.484479740528551e+03 + -2.489625454539379e+03 + -2.494779218375099e+03 + -2.499941039999998e+03 + -2.505110927624773e+03 + -2.510288890409285e+03 + -2.515474937052364e+03 + -2.520669075212765e+03 + -2.525871312999998e+03 + -2.531081658990217e+03 + -2.536300122220549e+03 + -2.541526711425658e+03 + -2.546761434689014e+03 + -2.552004299999998e+03 + -2.557255315555890e+03 + -2.562514490474060e+03 + -2.567781833501355e+03 + -2.573057352510476e+03 + -2.578341055999998e+03 + -2.583632952807378e+03 + -2.588933051312229e+03 + -2.594241359879810e+03 + -2.599557887014108e+03 + -2.604882640999998e+03 + -2.610215630196411e+03 + -2.615556863841929e+03 + -2.620906350516468e+03 + -2.626264097579904e+03 + -2.631630113999998e+03 + -2.637004409331177e+03 + -2.642386991059378e+03 + -2.647777867311749e+03 + -2.653177047878767e+03 + -2.658584540999998e+03 + -2.664000354190328e+03 + -2.669424496446296e+03 + -2.674856976816473e+03 + -2.680297803844182e+03 + -2.685746985999998e+03 + -2.691204531699670e+03 + -2.696670449221115e+03 + -2.702144747143579e+03 + -2.707627434527642e+03 + -2.713118519999998e+03 + -2.718618011850782e+03 + -2.724125918263655e+03 + -2.729642247949266e+03 + -2.735167010382318e+03 + -2.740700213999998e+03 + -2.746241866699575e+03 + -2.751791977076697e+03 + -2.757350554006517e+03 + -2.762917606479738e+03 + -2.768493143000000e+03 + -2.774077171851313e+03 + -2.779669701724049e+03 + -2.785270741295763e+03 + -2.790880299095185e+03 + -2.796498383999998e+03 + -2.802125004968091e+03 + -2.807760170344632e+03 + -2.813403888501788e+03 + -2.819056168106567e+03 + -2.824717018000000e+03 + -2.830386447079949e+03 + -2.836064464083062e+03 + -2.841751077483182e+03 + -2.847446295475182e+03 + -2.853150126999998e+03 + -2.858862581346520e+03 + -2.864583667200011e+03 + -2.870313392988722e+03 + -2.876051767015894e+03 + -2.881798798000000e+03 + -2.887554494917011e+03 + -2.893318866668325e+03 + -2.899091922031221e+03 + -2.904873669618204e+03 + -2.910664117999998e+03 + -2.916463275808826e+03 + -2.922271151990944e+03 + -2.928087755363771e+03 + -2.933913094445438e+03 + -2.939747178000000e+03 + -2.945590014959967e+03 + -2.951441614226611e+03 + -2.957301984588625e+03 + -2.963171134666888e+03 + -2.969049072999998e+03 + -2.974935808208847e+03 + -2.980831349417174e+03 + -2.986735705755709e+03 + -2.992648886132359e+03 + -2.998570899000000e+03 + -3.004501752659864e+03 + -3.010441455936329e+03 + -3.016390017858416e+03 + -3.022347447554316e+03 + -3.028313753999998e+03 + -3.034288946006182e+03 + -3.040273032141582e+03 + -3.046266021078663e+03 + -3.052267921739149e+03 + -3.058278743000000e+03 + -3.064298493698561e+03 + -3.070327182685398e+03 + -3.076364818827055e+03 + -3.082411411001809e+03 + -3.088466967999998e+03 + -3.094531498652569e+03 + -3.100605012177602e+03 + -3.106687517554494e+03 + -3.112779023262762e+03 + -3.118879538000000e+03 + -3.124989070695736e+03 + -3.131107630527278e+03 + -3.137235226491168e+03 + -3.143371867254447e+03 + -3.149517561999998e+03 + -3.155672319953097e+03 + -3.161836149115856e+03 + -3.168009058152651e+03 + -3.174191057129923e+03 + -3.180382155000000e+03 + -3.186582360055111e+03 + -3.192791681144167e+03 + -3.199010127274887e+03 + -3.205237707493432e+03 + -3.211474430999998e+03 + -3.217720306909038e+03 + -3.223975343611381e+03 + -3.230239549889151e+03 + -3.236512935355519e+03 + -3.242795509000000e+03 + -3.249087279482800e+03 + -3.255388255944051e+03 + -3.261698447489179e+03 + -3.268017862963467e+03 + -3.274346510999998e+03 + -3.280684400401313e+03 + -3.287031541121871e+03 + -3.293387942369432e+03 + -3.299753611888159e+03 + -3.306128559000000e+03 + -3.312512793688797e+03 + -3.318906324190636e+03 + -3.325309159228279e+03 + -3.331721308860119e+03 + -3.338142781999998e+03 + -3.344573586933190e+03 + -3.351013732692941e+03 + -3.357463228591956e+03 + -3.363922084041577e+03 + -3.370390307999997e+03 + -3.376867909193196e+03 + -3.383354896616435e+03 + -3.389851279509897e+03 + -3.396357067337695e+03 + -3.402872268999997e+03 + -3.409396893188545e+03 + -3.415930949268335e+03 + -3.422474446597307e+03 + -3.429027394238212e+03 + -3.435589800999997e+03 + -3.442161675674332e+03 + -3.448743027574159e+03 + -3.455333866086035e+03 + -3.461934200499129e+03 + -3.468544039999997e+03 + -3.475163393634110e+03 + -3.481792270131310e+03 + -3.488430678432703e+03 + -3.495078627927044e+03 + -3.501736127999997e+03 + -3.508403187927853e+03 + -3.515079816661691e+03 + -3.521766023349286e+03 + -3.528461817510494e+03 + -3.535167207999998e+03 + -3.541882203477436e+03 + -3.548606813620608e+03 + -3.555341047964333e+03 + -3.562084915431213e+03 + -3.568838424999997e+03 + -3.575601585773337e+03 + -3.582374407066678e+03 + -3.589156898185297e+03 + -3.595949068354316e+03 + -3.602750926999998e+03 + -3.609562483468940e+03 + -3.616383746264014e+03 + -3.623214724488114e+03 + -3.630055428392298e+03 + -3.636905866999997e+03 + -3.643766048793625e+03 + -3.650635983516456e+03 + -3.657515680680700e+03 + -3.664405149014039e+03 + -3.671304397999997e+03 + -3.678213437374473e+03 + -3.685132275760156e+03 + -3.692060922035369e+03 + -3.698999385901594e+03 + -3.705947676999997e+03 + -3.712905804797643e+03 + -3.719873778403308e+03 + -3.726851606752037e+03 + -3.733839298718909e+03 + -3.740836863999997e+03 + -3.747844312547997e+03 + -3.754861653211674e+03 + -3.761888895074585e+03 + -3.768926047955085e+03 + -3.775973120999997e+03 + -3.783030123074376e+03 + -3.790097063813473e+03 + -3.797173952745452e+03 + -3.804260798968512e+03 + -3.811357611999997e+03 + -3.818464401472386e+03 + -3.825581176303607e+03 + -3.832707945585785e+03 + -3.839844718954238e+03 + -3.846991505999998e+03 + -3.854148316201428e+03 + -3.861315158822798e+03 + -3.868492043129635e+03 + -3.875678978458987e+03 + -3.882875973999997e+03 + -3.890083038997269e+03 + -3.897300183310783e+03 + -3.904527416633095e+03 + -3.911764748154242e+03 + -3.919012186999997e+03 + -3.926269742452437e+03 + -3.933537424464352e+03 + -3.940815242621297e+03 + -3.948103205720294e+03 + -3.955401322999997e+03 + -3.962709604107895e+03 + -3.970028058998795e+03 + -3.977356697163350e+03 + -3.984695527326294e+03 + -3.992044558999997e+03 + -3.999403802144854e+03 + -4.006773266302151e+03 + -4.014152960820400e+03 + -4.021542894928240e+03 + -4.028943077999997e+03 + -4.036353519583599e+03 + -4.043774229513202e+03 + -4.051205217431756e+03 + -4.058646492564995e+03 + -4.066098063999997e+03 + -4.073559940995820e+03 + -4.081032133755226e+03 + -4.088514652104142e+03 + -4.096007504979870e+03 + -4.103510702000000e+03 + -4.111024253097677e+03 + -4.118548167510886e+03 + -4.126082454416708e+03 + -4.133627123225803e+03 + -4.141182184000000e+03 + -4.148747646853033e+03 + -4.156323520486682e+03 + -4.163909814098826e+03 + -4.171506538118098e+03 + -4.179113701999993e+03 + -4.186731314728609e+03 + -4.194359386189681e+03 + -4.201997926116393e+03 + -4.209646943720986e+03 + -4.217306449000000e+03 + -4.224976452122954e+03 + -4.232656961817923e+03 + -4.240347987240753e+03 + -4.248049538718602e+03 + -4.255761626000000e+03 + -4.263484258397591e+03 + -4.271217445246016e+03 + -4.278961196276451e+03 + -4.286715521743729e+03 + -4.294480431000000e+03 + -4.302255933066315e+03 + -4.310042038085233e+03 + -4.317838756007569e+03 + -4.325646096087124e+03 + -4.333464067999995e+03 + -4.341292681602012e+03 + -4.349131946225953e+03 + -4.356981871466000e+03 + -4.364842467485710e+03 + -4.372713744000000e+03 + -4.380595710372718e+03 + -4.388488375861229e+03 + -4.396391750264422e+03 + -4.404305844160006e+03 + -4.412230667000000e+03 + -4.420166227736474e+03 + -4.428112536405837e+03 + -4.436069603088062e+03 + -4.444037437481978e+03 + -4.452016049000000e+03 + -4.460005447074678e+03 + -4.468005641867199e+03 + -4.476016643204103e+03 + -4.484038460200805e+03 + -4.492071102999995e+03 + -4.500114582060231e+03 + -4.508168906299815e+03 + -4.516234085098625e+03 + -4.524310129075975e+03 + -4.532397048000000e+03 + -4.540494851104932e+03 + -4.548603547974418e+03 + -4.556723148595408e+03 + -4.564853663376500e+03 + -4.572995102000000e+03 + -4.581147473755137e+03 + -4.589310788334117e+03 + -4.597485055595826e+03 + -4.605670285497996e+03 + -4.613866488000000e+03 + -4.622073673035890e+03 + -4.630291850451470e+03 + -4.638521029781397e+03 + -4.646761220207367e+03 + -4.655012431999994e+03 + -4.663274675842531e+03 + -4.671547961173437e+03 + -4.679832297267551e+03 + -4.688127693710799e+03 + -4.696434161000000e+03 + -4.704751709752170e+03 + -4.713080348793824e+03 + -4.721420087561993e+03 + -4.729770937031085e+03 + -4.738132907000000e+03 + -4.746506006604411e+03 + -4.754890245715343e+03 + -4.763285634540516e+03 + -4.771692183448750e+03 + -4.780109901999994e+03 + -4.788538799466528e+03 + -4.796978886096308e+03 + -4.805430172162917e+03 + -4.813892667577567e+03 + -4.822366381999994e+03 + -4.830851325088147e+03 + -4.839347507060687e+03 + -4.847854938123849e+03 + -4.856373628221604e+03 + -4.864903587000000e+03 + -4.873444824101478e+03 + -4.881997349859994e+03 + -4.890561174364984e+03 + -4.899136307099045e+03 + -4.907722758000000e+03 + -4.916320537362784e+03 + -4.924929655587317e+03 + -4.933550122528648e+03 + -4.942181947260091e+03 + -4.950825139999994e+03 + -4.959479711457802e+03 + -4.968145671175524e+03 + -4.976823028809056e+03 + -4.985511794647833e+03 + -4.994211978999993e+03 + -5.002923592007461e+03 + -5.011646643245516e+03 + -5.020381142480443e+03 + -5.029127099988444e+03 + -5.037884526000000e+03 + -5.046653430641881e+03 + -5.055433823857634e+03 + -5.064225715527905e+03 + -5.073029115529123e+03 + -5.081844034000000e+03 + -5.090670481166524e+03 + -5.099508466925161e+03 + -5.108358001180135e+03 + -5.117219094017154e+03 + -5.126091755999993e+03 + -5.134975997626908e+03 + -5.143871827953957e+03 + -5.152779256704796e+03 + -5.161698295082459e+03 + -5.170628952999993e+03 + -5.179571239778229e+03 + -5.188525166029071e+03 + -5.197490742130520e+03 + -5.206467977662855e+03 + -5.215456883000000e+03 + -5.224457468752808e+03 + -5.233469744262066e+03 + -5.242493719420175e+03 + -5.251529405361101e+03 + -5.260576812000000e+03 + -5.269635948683524e+03 + -5.278706825911151e+03 + -5.287789454172008e+03 + -5.296883843495917e+03 + -5.305990003999993e+03 + -5.315107945871962e+03 + -5.324237679253967e+03 + -5.333379214299059e+03 + -5.342532561186867e+03 + -5.351697729999993e+03 + -5.360874730862462e+03 + -5.370063574314554e+03 + -5.379264270604972e+03 + -5.388476829418795e+03 + -5.397701261000000e+03 + -5.406937575887649e+03 + -5.416185784228891e+03 + -5.425445896082409e+03 + -5.434717921547790e+03 + -5.444001871000000e+03 + -5.453297754883592e+03 + -5.462605583222671e+03 + -5.471925366229407e+03 + -5.481257114511772e+03 + -5.490600837999993e+03 + -5.499956546429602e+03 + -5.509324250592133e+03 + -5.518703961068116e+03 + -5.528095687743725e+03 + -5.537499440999993e+03 + -5.546915231361128e+03 + -5.556343068498348e+03 + -5.565782962476614e+03 + -5.575234924238452e+03 + -5.584698964000000e+03 + -5.594175091687396e+03 + -5.603663318133420e+03 + -5.613163653827974e+03 + -5.622676108416792e+03 + -5.632200692000000e+03 + -5.641737415094019e+03 + -5.651286288507457e+03 + -5.660847322604374e+03 + -5.670420527008017e+03 + -5.680005911999993e+03 + -5.689603488367688e+03 + -5.699213267038800e+03 + -5.708835258184300e+03 + -5.718469470901945e+03 + -5.728115915999992e+03 + -5.737774605002216e+03 + -5.747445547634946e+03 + -5.757128753652110e+03 + -5.766824233562706e+03 + -5.776531998000000e+03 + -5.786252057564687e+03 + -5.795984422575620e+03 + -5.805729103393980e+03 + -5.815486110517342e+03 + -5.825255454000000e+03 + -5.835037143865786e+03 + -5.844831191184440e+03 + -5.854637606668529e+03 + -5.864456400127173e+03 + -5.874287581999993e+03 + -5.884131163070459e+03 + -5.893987153665426e+03 + -5.903855564090225e+03 + -5.913736404781277e+03 + -5.923629686000000e+03 + -5.933535418061928e+03 + -5.943453611973397e+03 + -5.953384278439786e+03 + -5.963327427438455e+03 + -5.973283069000000e+03 + -5.983251213525049e+03 + -5.993231872573540e+03 + -6.003225056744913e+03 + -6.013230774891098e+03 + -6.023249038000000e+03 + -6.033279857947543e+03 + -6.043323244258373e+03 + -6.053379206808452e+03 + -6.063447756872029e+03 + -6.073528904999992e+03 + -6.083622661322729e+03 + -6.093729036471069e+03 + -6.103848041095609e+03 + -6.113979685699232e+03 + -6.124123981000000e+03 + -6.134280937646101e+03 + -6.144450565430006e+03 + -6.154632874755873e+03 + -6.164827877191976e+03 + -6.175035583000000e+03 + -6.185256001935748e+03 + -6.195489145360168e+03 + -6.205735024246584e+03 + -6.215993648382001e+03 + -6.226265028000000e+03 + -6.236549173839082e+03 + -6.246846097225249e+03 + -6.257155808917487e+03 + -6.267478318647532e+03 + -6.277813636999993e+03 + -6.288161775039973e+03 + -6.298522743318929e+03 + -6.308896552332133e+03 + -6.319283212690151e+03 + -6.329682735000000e+03 + -6.340095129841887e+03 + -6.350520407726451e+03 + -6.360958579315570e+03 + -6.371409655512612e+03 + -6.381873647000000e+03 + -6.392350564293673e+03 + -6.402840417873253e+03 + -6.413343218449801e+03 + -6.423858977046060e+03 + -6.434387704000000e+03 + -6.444929409479182e+03 + -6.455484104800415e+03 + -6.466051800878468e+03 + -6.476632507643834e+03 + -6.487226235999992e+03 + -6.497832997260840e+03 + -6.508452801649206e+03 + -6.519085659445890e+03 + -6.529731581482401e+03 + -6.540390579000000e+03 + -6.551062663116751e+03 + -6.561747843536938e+03 + -6.572446130639311e+03 + -6.583157536279329e+03 + -6.593882071000000e+03 + -6.604619744763902e+03 + -6.615370568925604e+03 + -6.626134554413510e+03 + -6.636911711064461e+03 + -6.647702049999992e+03 + -6.658505582840396e+03 + -6.669322319643610e+03 + -6.680152270785791e+03 + -6.690995447680221e+03 + -6.701851860999993e+03 + -6.712721521095499e+03 + -6.723604439166686e+03 + -6.734500626205399e+03 + -6.745410092579864e+03 + -6.756332849000000e+03 + -6.767268906377159e+03 + -6.778218275408767e+03 + -6.789180966973428e+03 + -6.800156992270870e+03 + -6.811146362000000e+03 + -6.822149086596000e+03 + -6.833165176809022e+03 + -6.844194643583943e+03 + -6.855237498022965e+03 + -6.866293750999992e+03 + -6.877363413246921e+03 + -6.888446495554016e+03 + -6.899543008749155e+03 + -6.910652963678518e+03 + -6.921776370999992e+03 + -6.932913241460104e+03 + -6.944063586638155e+03 + -6.955227417524035e+03 + -6.966404743973952e+03 + -6.977595577000000e+03 + -6.988799928187199e+03 + -7.000017808173458e+03 + -7.011249227729020e+03 + -7.022494198140058e+03 + -7.033752730000000e+03 + -7.045024833685246e+03 + -7.056310520605544e+03 + -7.067609802022496e+03 + -7.078922688575014e+03 + -7.090249190999992e+03 + -7.101589320140114e+03 + -7.112943086874141e+03 + -7.124310502404821e+03 + -7.135691578318693e+03 + -7.147086324999992e+03 + -7.158494752468790e+03 + -7.169916872475182e+03 + -7.181352696510882e+03 + -7.192802235036809e+03 + -7.204265499000000e+03 + -7.215742499578333e+03 + -7.227233247391960e+03 + -7.238737753333357e+03 + -7.250256028887258e+03 + -7.261788085000000e+03 + -7.273333932305611e+03 + -7.284893581718426e+03 + -7.296467044458082e+03 + -7.308054332025791e+03 + -7.319655454999992e+03 + -7.331270423697963e+03 + -7.342899249833889e+03 + -7.354541944862027e+03 + -7.366198519315069e+03 + -7.377868983999992e+03 + -7.389553350032372e+03 + -7.401251628839381e+03 + -7.412963831476617e+03 + -7.424689968390403e+03 + -7.436430051000000e+03 + -7.448184091042194e+03 + -7.459952098877861e+03 + -7.471734085033887e+03 + -7.483530060856024e+03 + -7.495340038000000e+03 + -7.507164027981260e+03 + -7.519002041143363e+03 + -7.530854088088799e+03 + -7.542720180263871e+03 + -7.554600328999991e+03 + -7.566494545476364e+03 + -7.578402840747203e+03 + -7.590325225748156e+03 + -7.602261711334166e+03 + -7.614212308999990e+03 + -7.626177030375796e+03 + -7.638155885970103e+03 + -7.650148886679111e+03 + -7.662156044359298e+03 + -7.674177370000000e+03 + -7.686212874133715e+03 + -7.698262567927072e+03 + -7.710326462858042e+03 + -7.722404570574414e+03 + -7.734496902000000e+03 + -7.746603467726753e+03 + -7.758724278933637e+03 + -7.770859347070250e+03 + -7.783008683730720e+03 + -7.795172299999991e+03 + -7.807350206747154e+03 + -7.819542415323729e+03 + -7.831748936928582e+03 + -7.843969782379609e+03 + -7.856204962999991e+03 + -7.868454490389281e+03 + -7.880718375856472e+03 + -7.892996630459527e+03 + -7.905289265033489e+03 + -7.917596291000000e+03 + -7.929917719977670e+03 + -7.942253562811284e+03 + -7.954603830544003e+03 + -7.966968534806996e+03 + -7.979347687000000e+03 + -7.991741298275563e+03 + -8.004149379532312e+03 + -8.016571941875890e+03 + -8.029008996834256e+03 + -8.041460555999991e+03 + -8.053926630829063e+03 + -8.066407232164392e+03 + -8.078902371093302e+03 + -8.091412059283156e+03 + -8.103936307999991e+03 + -8.116475128348727e+03 + -8.129028531951320e+03 + -8.141596530160446e+03 + -8.154179133753471e+03 + -8.166776354000000e+03 + -8.179388202500601e+03 + -8.192014690774517e+03 + -8.204655830155478e+03 + -8.217311631752342e+03 + -8.229982107000000e+03 + -8.242667267443709e+03 + -8.255367124181290e+03 + -8.268081688506129e+03 + -8.280810972124258e+03 + -8.293554985999990e+03 + -8.306313740930424e+03 + -8.319087249046417e+03 + -8.331875522237864e+03 + -8.344678571514016e+03 + -8.357496408000001e+03 + -8.370329042981793e+03 + -8.383176487893126e+03 + -8.396038754236946e+03 + -8.408915853538949e+03 + -8.421807796999999e+03 + -8.434714595760075e+03 + -8.447636261558551e+03 + -8.460572806112319e+03 + -8.473524240852536e+03 + -8.486490577000000e+03 + -8.499471825734363e+03 + -8.512467998550057e+03 + -8.525479106914012e+03 + -8.538505162160651e+03 + -8.551546175999989e+03 + -8.564602160205039e+03 + -8.577673125806519e+03 + -8.590759084111069e+03 + -8.603860047081474e+03 + -8.616976026000000e+03 + -8.630107031891077e+03 + -8.643253076647045e+03 + -8.656414171854482e+03 + -8.669590328370747e+03 + -8.682781558000001e+03 + -8.695987872906602e+03 + -8.709209284090668e+03 + -8.722445802791402e+03 + -8.735697441007769e+03 + -8.748964210000000e+03 + -8.762246120773598e+03 + -8.775543185390141e+03 + -8.788855415760128e+03 + -8.802182823160678e+03 + -8.815525418999991e+03 + -8.828883214778334e+03 + -8.842256221886048e+03 + -8.855644451817980e+03 + -8.869047916276779e+03 + -8.882466627000000e+03 + -8.895900595656447e+03 + -8.909349833599377e+03 + -8.922814352320849e+03 + -8.936294163622882e+03 + -8.949789279000001e+03 + -8.963299709806102e+03 + -8.976825467697834e+03 + -8.990366564425331e+03 + -9.003923011733321e+03 + -9.017494820999989e+03 + -9.031082003570244e+03 + -9.044684571593196e+03 + -9.058302536801553e+03 + -9.071935910043938e+03 + -9.085584702999991e+03 + -9.099248927805194e+03 + -9.112928596071970e+03 + -9.126623719398038e+03 + -9.140334309541779e+03 + -9.154060378000000e+03 + -9.167801936143134e+03 + -9.181558995552323e+03 + -9.195331568052554e+03 + -9.209119665711642e+03 + -9.222923300000000e+03 + -9.236742482191501e+03 + -9.250577224366738e+03 + -9.264427538348678e+03 + -9.278293435300837e+03 + -9.292174926999989e+03 + -9.306072025514850e+03 + -9.319984742353185e+03 + -9.333913089239737e+03 + -9.347857078372264e+03 + -9.361816720999988e+03 + -9.375792028076301e+03 + -9.389783011923670e+03 + -9.403789684689073e+03 + -9.417812057757259e+03 + -9.431850143000000e+03 + -9.445903952452922e+03 + -9.459973497383473e+03 + -9.474058789280491e+03 + -9.488159840242311e+03 + -9.502276662000000e+03 + -9.516409266099370e+03 + -9.530557664431180e+03 + -9.544721868948835e+03 + -9.558901891554557e+03 + -9.573097743999990e+03 + -9.587309437907974e+03 + -9.601536984771086e+03 + -9.615780396443668e+03 + -9.630039685320193e+03 + -9.644314862999989e+03 + -9.658605940694017e+03 + -9.672912930240365e+03 + -9.687235843732506e+03 + -9.701574693379191e+03 + -9.715929491000001e+03 + -9.730300248146514e+03 + -9.744686976337332e+03 + -9.759089687418043e+03 + -9.773508393705906e+03 + -9.787943106999999e+03 + -9.802393838806964e+03 + -9.816860600913731e+03 + -9.831343405392694e+03 + -9.845842264577648e+03 + -9.860357189999990e+03 + -9.874888192875391e+03 + -9.889435285292540e+03 + -9.903998479577405e+03 + -9.918577788007758e+03 + -9.933173221999989e+03 + -9.947784792760667e+03 + -9.962412512866247e+03 + -9.977056394630243e+03 + -9.991716449514770e+03 + -1.000639269000000e+04 + -1.002108512827329e+04 + -1.003579377260607e+04 + -1.005051863510592e+04 + -1.006525973450424e+04 + -1.008001708000000e+04 + -1.009479067738785e+04 + -1.010958054488143e+04 + -1.012438669671707e+04 + -1.013920913701616e+04 + -1.015404787999999e+04 + -1.016890294387830e+04 + -1.018377433451942e+04 + -1.019866206104612e+04 + -1.021356614193473e+04 + -1.022848658999999e+04 + -1.024342341422066e+04 + -1.025837662498870e+04 + -1.027334623400460e+04 + -1.028833225445739e+04 + -1.030333470000000e+04 + -1.031835358368700e+04 + -1.033338891534757e+04 + -1.034844070623467e+04 + -1.036350897076085e+04 + -1.037859372000000e+04 + -1.039369496373519e+04 + -1.040881271589677e+04 + -1.042394698923176e+04 + -1.043909779325773e+04 + -1.045426513999999e+04 + -1.046944904320307e+04 + -1.048464951626011e+04 + -1.049986657147346e+04 + -1.051510021951631e+04 + -1.053035046999999e+04 + -1.054561733346490e+04 + -1.056090082649770e+04 + -1.057620096382862e+04 + -1.059151775501402e+04 + -1.060685121000000e+04 + -1.062220133982168e+04 + -1.063756815769902e+04 + -1.065295167679853e+04 + -1.066835190951487e+04 + -1.068376887000000e+04 + -1.069920257172756e+04 + -1.071465302083269e+04 + -1.073012022736731e+04 + -1.074560420973240e+04 + -1.076110497999999e+04 + -1.077662254698522e+04 + -1.079215692468130e+04 + -1.080770812602064e+04 + -1.082327616047952e+04 + -1.083886103999999e+04 + -1.085446277832030e+04 + -1.087008138917964e+04 + -1.088571688451933e+04 + -1.090136927381244e+04 + -1.091703857000000e+04 + -1.093272478707855e+04 + -1.094842793381667e+04 + -1.096414802233435e+04 + -1.097988507119364e+04 + -1.099563909000000e+04 + -1.101141008471468e+04 + -1.102719807131307e+04 + -1.104300306633410e+04 + -1.105882508291791e+04 + -1.107466412999999e+04 + -1.109052021511841e+04 + -1.110639335038349e+04 + -1.112228355101184e+04 + -1.113819083451417e+04 + -1.115411520999999e+04 + -1.117005668368749e+04 + -1.118601527242516e+04 + -1.120199099177015e+04 + -1.121798385114509e+04 + -1.123399386000000e+04 + -1.125002102929127e+04 + -1.126606537454743e+04 + -1.128212691149971e+04 + -1.129820565394142e+04 + -1.131430161000000e+04 + -1.133041478676655e+04 + -1.134654520134832e+04 + -1.136269286880464e+04 + -1.137885779750048e+04 + -1.139503999999999e+04 + -1.141123949060806e+04 + -1.142745627830015e+04 + -1.144369037489935e+04 + -1.145994179819328e+04 + -1.147621056000000e+04 + -1.149249666929363e+04 + -1.150880014040390e+04 + -1.152512098586926e+04 + -1.154145921396878e+04 + -1.155781484000000e+04 + -1.157418788116290e+04 + -1.159057834325663e+04 + -1.160698623573862e+04 + -1.162341157750990e+04 + -1.163985437999999e+04 + -1.165631465167572e+04 + -1.167279241049137e+04 + -1.168928767028212e+04 + -1.170580043559586e+04 + -1.172233071999999e+04 + -1.173887854137991e+04 + -1.175544390951204e+04 + -1.177202683447122e+04 + -1.178862732998528e+04 + -1.180524541000000e+04 + -1.182188108744826e+04 + -1.183853437152247e+04 + -1.185520527417456e+04 + -1.187189381268968e+04 + -1.188860000000000e+04 + -1.190532384555031e+04 + -1.192206535739879e+04 + -1.193882454957090e+04 + -1.195560144455150e+04 + -1.197239604999999e+04 + -1.198920836801576e+04 + -1.200603841862060e+04 + -1.202288622005816e+04 + -1.203975178087160e+04 + -1.205663510999999e+04 + -1.207353621858988e+04 + -1.209045512337030e+04 + -1.210739183876488e+04 + -1.212434637372514e+04 + -1.214131874000000e+04 + -1.215830895146994e+04 + -1.217531702204386e+04 + -1.219234296344827e+04 + -1.220938678454126e+04 + -1.222644850000000e+04 + -1.224352812665298e+04 + -1.226062567426862e+04 + -1.227774115320455e+04 + -1.229487457740941e+04 + -1.231202595999999e+04 + -1.232919531361497e+04 + -1.234638265190763e+04 + -1.236358798719477e+04 + -1.238081132944854e+04 + -1.239805268999999e+04 + -1.241531208224867e+04 + -1.243258952373459e+04 + -1.244988502746729e+04 + -1.246719859854622e+04 + -1.248453025000000e+04 + -1.250187999937352e+04 + -1.251924785997314e+04 + -1.253663384322633e+04 + -1.255403795942784e+04 + -1.257146022000000e+04 + -1.258890063824787e+04 + -1.260635923174130e+04 + -1.262383601348307e+04 + -1.264133098848631e+04 + -1.265884416999999e+04 + -1.267637557565735e+04 + -1.269392521755929e+04 + -1.271149310837373e+04 + -1.272907926320349e+04 + -1.274668368999999e+04 + -1.276430639533002e+04 + -1.278194739917555e+04 + -1.279960671868295e+04 + -1.281728436173200e+04 + -1.283498034000000e+04 + -1.285269466774105e+04 + -1.287042735763161e+04 + -1.288817842259290e+04 + -1.290594787633268e+04 + -1.292373573000000e+04 + -1.294154199365508e+04 + -1.295936667981993e+04 + -1.297720980264566e+04 + -1.299507137776778e+04 + -1.301295141999999e+04 + -1.303084994203483e+04 + -1.304876695061188e+04 + -1.306670245535235e+04 + -1.308465647270176e+04 + -1.310262901999999e+04 + -1.312062011245361e+04 + -1.313862975604251e+04 + -1.315665796055223e+04 + -1.317470474462057e+04 + -1.319277012000000e+04 + -1.321085409533674e+04 + -1.322895668661698e+04 + -1.324707790969205e+04 + -1.326521777718879e+04 + -1.328337630000000e+04 + -1.330155348851537e+04 + -1.331974935491385e+04 + -1.333796391362056e+04 + -1.335619718140170e+04 + -1.337444916999999e+04 + -1.339271988874384e+04 + -1.341100935082290e+04 + -1.342931756987852e+04 + -1.344764455872234e+04 + -1.346599032999999e+04 + -1.348435489664480e+04 + -1.350273827293541e+04 + -1.352114047045672e+04 + -1.353956149695641e+04 + -1.355800137000000e+04 + -1.357646010972569e+04 + -1.359493772045508e+04 + -1.361343421245217e+04 + -1.363194960986463e+04 + -1.365048392000000e+04 + -1.366903714425879e+04 + -1.368760930691950e+04 + -1.370620042690972e+04 + -1.372481050688227e+04 + -1.374343955999999e+04 + -1.376208760473736e+04 + -1.378075465005087e+04 + -1.379944070672178e+04 + -1.381814579185646e+04 + -1.383686991999999e+04 + -1.385561310323773e+04 + -1.387437535187516e+04 + -1.389315667691767e+04 + -1.391195709130158e+04 + -1.393077661000000e+04 + -1.394961524865979e+04 + -1.396847302075987e+04 + -1.398734993803961e+04 + -1.400624601054151e+04 + -1.402516125000000e+04 + -1.404409566989268e+04 + -1.406304928589068e+04 + -1.408202211294199e+04 + -1.410101416389908e+04 + -1.412002544999999e+04 + -1.413905598164077e+04 + -1.415810576964489e+04 + -1.417717482985645e+04 + -1.419626318438561e+04 + -1.421537083999999e+04 + -1.423449779870650e+04 + -1.425364408441530e+04 + -1.427280971628262e+04 + -1.429199469812906e+04 + -1.431119904000000e+04 + -1.433042275698022e+04 + -1.434966586475864e+04 + -1.436892837784737e+04 + -1.438821030874347e+04 + -1.440751167000000e+04 + -1.442683247464153e+04 + -1.444617273693482e+04 + -1.446553246845352e+04 + -1.448491167696990e+04 + -1.450431037999999e+04 + -1.452372859766022e+04 + -1.454316633455064e+04 + -1.456262360064903e+04 + -1.458210041914065e+04 + -1.460159679999998e+04 + -1.462111274782618e+04 + -1.464064828275210e+04 + -1.466020342227678e+04 + -1.467977817411577e+04 + -1.469937255000000e+04 + -1.471898656425745e+04 + -1.473862022905967e+04 + -1.475827355783788e+04 + -1.477794656667906e+04 + -1.479763927000000e+04 + -1.481735168022591e+04 + -1.483708380678435e+04 + -1.485683566151257e+04 + -1.487660726097236e+04 + -1.489639861999999e+04 + -1.491620975095499e+04 + -1.493604066191429e+04 + -1.495589136614776e+04 + -1.497576188555746e+04 + -1.499565223000000e+04 + -1.501556240451360e+04 + -1.503549242791256e+04 + -1.505544231896391e+04 + -1.507541209051985e+04 + -1.509540175000000e+04 + -1.511541130465759e+04 + -1.513544077375174e+04 + -1.515549017500820e+04 + -1.517555951933053e+04 + -1.519564881999999e+04 + -1.521575809081157e+04 + -1.523588734003694e+04 + -1.525603658036919e+04 + -1.527620583277191e+04 + -1.529639510999998e+04 + -1.531660442034102e+04 + -1.533683377728779e+04 + -1.535708319443415e+04 + -1.537735268372974e+04 + -1.539764226000000e+04 + -1.541795193921473e+04 + -1.543828173411788e+04 + -1.545863165713528e+04 + -1.547900172144165e+04 + -1.549939194000000e+04 + -1.551980232569260e+04 + -1.554023289178161e+04 + -1.556068365093051e+04 + -1.558115461506463e+04 + -1.560164579999999e+04 + -1.562215722197032e+04 + -1.564268888875843e+04 + -1.566324081295743e+04 + -1.568381301679686e+04 + -1.570440550999999e+04 + -1.572501829745089e+04 + -1.574565139909988e+04 + -1.576630483256334e+04 + -1.578697860613842e+04 + -1.580767273000000e+04 + -1.582838721786272e+04 + -1.584912209052793e+04 + -1.586987736246908e+04 + -1.589065303680525e+04 + -1.591144913000000e+04 + -1.593226566336701e+04 + -1.595310264072689e+04 + -1.597396007256353e+04 + -1.599483798518879e+04 + -1.601573638999999e+04 + -1.603665529105288e+04 + -1.605759470511345e+04 + -1.607855464838671e+04 + -1.609953513161670e+04 + -1.612053616999998e+04 + -1.614155778004294e+04 + -1.616259997081388e+04 + -1.618366275348782e+04 + -1.620474614514243e+04 + -1.622585016000000e+04 + -1.624697481007329e+04 + -1.626812010728422e+04 + -1.628928606592670e+04 + -1.631047270337715e+04 + -1.633168003000000e+04 + -1.635290805454565e+04 + -1.637415679800609e+04 + -1.639542627592296e+04 + -1.641671649164588e+04 + -1.643802745999998e+04 + -1.645935920179283e+04 + -1.648071172935930e+04 + -1.650208505431875e+04 + -1.652347919039644e+04 + -1.654489414999998e+04 + -1.656632994566724e+04 + -1.658778659427021e+04 + -1.660926410974226e+04 + -1.663076250029903e+04 + -1.665228178000000e+04 + -1.667382196574960e+04 + -1.669538306946903e+04 + -1.671696510420377e+04 + -1.673856808645374e+04 + -1.676019203000000e+04 + -1.678183694695306e+04 + -1.680350285053965e+04 + -1.682518975366077e+04 + -1.684689766850574e+04 + -1.686862660999998e+04 + -1.689037659405139e+04 + -1.691214763326874e+04 + -1.693393974023558e+04 + -1.695575292860696e+04 + -1.697758720999999e+04 + -1.699944259677470e+04 + -1.702131910964586e+04 + -1.704321676352935e+04 + -1.706513556209216e+04 + -1.708707552000000e+04 + -1.710903665790321e+04 + -1.713101898938551e+04 + -1.715302252479822e+04 + -1.717504727292061e+04 + -1.719709325000000e+04 + -1.721916047545785e+04 + -1.724124896174670e+04 + -1.726335872072246e+04 + -1.728548976595536e+04 + -1.730764210999998e+04 + -1.732981576548871e+04 + -1.735201074834581e+04 + -1.737422707347338e+04 + -1.739646475299950e+04 + -1.741872379999999e+04 + -1.744100422776899e+04 + -1.746330604747148e+04 + -1.748562927386205e+04 + -1.750797392735042e+04 + -1.753034002000000e+04 + -1.755272756012299e+04 + -1.757513656385630e+04 + -1.759756704698003e+04 + -1.762001902165879e+04 + -1.764249250000000e+04 + -1.766498749503509e+04 + -1.768750402279969e+04 + -1.771004209797560e+04 + -1.773260173223158e+04 + -1.775518293999998e+04 + -1.777778573725219e+04 + -1.780041013823985e+04 + -1.782305615380817e+04 + -1.784572379125812e+04 + -1.786841306999998e+04 + -1.789112401297027e+04 + -1.791385662520795e+04 + -1.793661091551944e+04 + -1.795938690506571e+04 + -1.798218461000000e+04 + -1.800500404157250e+04 + -1.802784520726593e+04 + -1.805070812126097e+04 + -1.807359280836476e+04 + -1.809649928000000e+04 + -1.811942754077938e+04 + -1.814237760512274e+04 + -1.816534949154946e+04 + -1.818834322012563e+04 + -1.821135879999998e+04 + -1.823439623670011e+04 + -1.825745554979138e+04 + -1.828053675712656e+04 + -1.830363986886144e+04 + -1.832676489999998e+04 + -1.834991186721417e+04 + -1.837308077964562e+04 + -1.839627164834952e+04 + -1.841948449011883e+04 + -1.844271932000000e+04 + -1.846597615248214e+04 + -1.848925500551537e+04 + -1.851255589141731e+04 + -1.853587881367952e+04 + -1.855922379000000e+04 + -1.858259084403384e+04 + -1.860597998459446e+04 + -1.862939122130964e+04 + -1.865282457086503e+04 + -1.867628004999998e+04 + -1.869975767367864e+04 + -1.872325745125265e+04 + -1.874677939400045e+04 + -1.877032351829797e+04 + -1.879388983999998e+04 + -1.881747837395618e+04 + -1.884108913346766e+04 + -1.886472213066709e+04 + -1.888837737699991e+04 + -1.891205489000000e+04 + -1.893575468867888e+04 + -1.895947678210836e+04 + -1.898322118083019e+04 + -1.900698790146692e+04 + -1.903077696000000e+04 + -1.905458837122149e+04 + -1.907842214817702e+04 + -1.910227830328199e+04 + -1.912615684887913e+04 + -1.915005779999998e+04 + -1.917398117252360e+04 + -1.919792697876641e+04 + -1.922189523162585e+04 + -1.924588594641727e+04 + -1.926989913999998e+04 + -1.929393482787026e+04 + -1.931799301676958e+04 + -1.934207372057390e+04 + -1.936617696590223e+04 + -1.939030276000000e+04 + -1.941445110358184e+04 + -1.943862202401437e+04 + -1.946281554213054e+04 + -1.948703165938676e+04 + -1.951127038999998e+04 + -1.953553175531375e+04 + -1.955981576784185e+04 + -1.958412243887696e+04 + -1.960845178142548e+04 + -1.963280380999998e+04 + -1.965717854010317e+04 + -1.968157598764983e+04 + -1.970599616682758e+04 + -1.973043908928781e+04 + -1.975490477000000e+04 + -1.977939322508017e+04 + -1.980390446612710e+04 + -1.982843850672890e+04 + -1.985299536464853e+04 + -1.987757505000000e+04 + -1.990217757132781e+04 + -1.992680295149982e+04 + -1.995145120910892e+04 + -1.997612235106852e+04 + -2.000081638999998e+04 + -2.002553334291399e+04 + -2.005027322692212e+04 + -2.007503605456619e+04 + -2.009982183242756e+04 + -2.012463057999998e+04 + -2.014946232050470e+04 + -2.017431705750974e+04 + -2.019919480128925e+04 + -2.022409557869796e+04 + -2.024901940000000e+04 + -2.027396626876084e+04 + -2.029893620825063e+04 + -2.032392923791251e+04 + -2.034894536415857e+04 + -2.037398460000000e+04 + -2.039904696273123e+04 + -2.042413246681671e+04 + -2.044924112749899e+04 + -2.047437296177629e+04 + -2.049952797999998e+04 + -2.052470619105544e+04 + -2.054990761544010e+04 + -2.057513226917888e+04 + -2.060038015795331e+04 + -2.062565129999998e+04 + -2.065094571854568e+04 + -2.067626342205840e+04 + -2.070160442063917e+04 + -2.072696873225083e+04 + -2.075235637000000e+04 + -2.077776734528838e+04 + -2.080320167696219e+04 + -2.082865938214449e+04 + -2.085414047244347e+04 + -2.087964496000000e+04 + -2.090517285805777e+04 + -2.093072418166662e+04 + -2.095629894648643e+04 + -2.098189716820891e+04 + -2.100751885999998e+04 + -2.103316403410750e+04 + -2.105883270565323e+04 + -2.108452489048020e+04 + -2.111024060421226e+04 + -2.113597985999998e+04 + -2.116174267011207e+04 + -2.118752904964539e+04 + -2.121333901446366e+04 + -2.123917258027344e+04 + -2.126502976000000e+04 + -2.129091056582378e+04 + -2.131681501406569e+04 + -2.134274311932949e+04 + -2.136869489244911e+04 + -2.139467035000000e+04 + -2.142066951097057e+04 + -2.144669238829770e+04 + -2.147273899344209e+04 + -2.149880933837191e+04 + -2.152490343999998e+04 + -2.155102131698669e+04 + -2.157716298229367e+04 + -2.160332844744082e+04 + -2.162951772437019e+04 + -2.165573082999998e+04 + -2.168196778300156e+04 + -2.170822859627157e+04 + -2.173451328139519e+04 + -2.176082185053812e+04 + -2.178715432000000e+04 + -2.181351070821111e+04 + -2.183989103150391e+04 + -2.186629530288904e+04 + -2.189272353140778e+04 + -2.191917573000000e+04 + -2.194565191497987e+04 + -2.197215210512397e+04 + -2.199867631637375e+04 + -2.202522455969623e+04 + -2.205179684999998e+04 + -2.207839320363563e+04 + -2.210501363148952e+04 + -2.213165814783550e+04 + -2.215832677350680e+04 + -2.218501951999998e+04 + -2.221173639532642e+04 + -2.223847741910094e+04 + -2.226524260850044e+04 + -2.229203197306979e+04 + -2.231884553000000e+04 + -2.234568329890952e+04 + -2.237254528774074e+04 + -2.239943150806158e+04 + -2.242634198094407e+04 + -2.245327672000000e+04 + -2.248023573585785e+04 + -2.250721904853940e+04 + -2.253422667413636e+04 + -2.256125861967753e+04 + -2.258831489999998e+04 + -2.261539553480252e+04 + -2.264250054093014e+04 + -2.266962993052693e+04 + -2.269678371062339e+04 + -2.272396189999998e+04 + -2.275116452153000e+04 + -2.277839158301363e+04 + -2.280564309534358e+04 + -2.283291907950545e+04 + -2.286021955000000e+04 + -2.288754451771620e+04 + -2.291489399812011e+04 + -2.294226800704672e+04 + -2.296966655917324e+04 + -2.299708967000000e+04 + -2.302453735490683e+04 + -2.305200962641978e+04 + -2.307950649734620e+04 + -2.310702798236498e+04 + -2.313457409999998e+04 + -2.316214486856879e+04 + -2.318974029613145e+04 + -2.321736039447026e+04 + -2.324500518448656e+04 + -2.327267467999998e+04 + -2.330036889175501e+04 + -2.332808783850466e+04 + -2.335583153764027e+04 + -2.338360000121357e+04 + -2.341139324000000e+04 + -2.343921126672951e+04 + -2.346705410394532e+04 + -2.349492176951476e+04 + -2.352281427072812e+04 + -2.355073162000000e+04 + -2.357867383414989e+04 + -2.360664093193761e+04 + -2.363463292919098e+04 + -2.366264983684289e+04 + -2.369069166999998e+04 + -2.371875844507638e+04 + -2.374685017193912e+04 + -2.377496686591387e+04 + -2.380310855200050e+04 + -2.383127523999998e+04 + -2.385946693403709e+04 + -2.388768365690810e+04 + -2.391592542840760e+04 + -2.394419225713039e+04 + -2.397248416000000e+04 + -2.400080115691363e+04 + -2.402914325571854e+04 + -2.405751046800998e+04 + -2.408590281513924e+04 + -2.411432031000000e+04 + -2.414276296293371e+04 + -2.417123079796694e+04 + -2.419972383203242e+04 + -2.422824206706797e+04 + -2.425678551999998e+04 + -2.428535421485334e+04 + -2.431394816200073e+04 + -2.434256737430352e+04 + -2.437121187300517e+04 + -2.439988166999998e+04 + -2.442857677325164e+04 + -2.445729720103540e+04 + -2.448604297194451e+04 + -2.451481410082247e+04 + -2.454361060000000e+04 + -2.457243248182022e+04 + -2.460127976431730e+04 + -2.463015246522100e+04 + -2.465905059942621e+04 + -2.468797417999998e+04 + -2.471692321945616e+04 + -2.474589773222362e+04 + -2.477489773480251e+04 + -2.480392324581322e+04 + -2.483297427999998e+04 + -2.486205084917968e+04 + -2.489115296405446e+04 + -2.492028064024748e+04 + -2.494943390068509e+04 + -2.497861275999998e+04 + -2.500781722863925e+04 + -2.503704732334474e+04 + -2.506630305872901e+04 + -2.509558444448151e+04 + -2.512489150000000e+04 + -2.515422424757818e+04 + -2.518358269497819e+04 + -2.521296685328307e+04 + -2.524237674371633e+04 + -2.527181237999998e+04 + -2.530127377273551e+04 + -2.533076094162915e+04 + -2.536027390311031e+04 + -2.538981266594794e+04 + -2.541937724999998e+04 + -2.544896767801531e+04 + -2.547858395406606e+04 + -2.550822608802068e+04 + -2.553789410507042e+04 + -2.556758802000000e+04 + -2.559730784246711e+04 + -2.562705359189478e+04 + -2.565682528525429e+04 + -2.568662293247029e+04 + -2.571644655000000e+04 + -2.574629615713407e+04 + -2.577617176604459e+04 + -2.580607338891535e+04 + -2.583600104095400e+04 + -2.586595473999998e+04 + -2.589593450400127e+04 + -2.592594034522632e+04 + -2.595597227610649e+04 + -2.598603031176017e+04 + -2.601611446999998e+04 + -2.604622476879967e+04 + -2.607636122042706e+04 + -2.610652383730750e+04 + -2.613671263455693e+04 + -2.616692763000000e+04 + -2.619716884161440e+04 + -2.622743628160562e+04 + -2.625772996246335e+04 + -2.628804989951923e+04 + -2.631839611000000e+04 + -2.634876861165059e+04 + -2.637916741999917e+04 + -2.640959254907723e+04 + -2.644004401148305e+04 + -2.647052181999998e+04 + -2.650102598983489e+04 + -2.653155654491748e+04 + -2.656211350103963e+04 + -2.659269685960091e+04 + -2.662330663999998e+04 + -2.665394286925502e+04 + -2.668460555517195e+04 + -2.671529470758218e+04 + -2.674601034670874e+04 + -2.677675249000000e+04 + -2.680752115154265e+04 + -2.683831634157976e+04 + -2.686913807564717e+04 + -2.689998637786448e+04 + -2.693086126000000e+04 + -2.696176272916689e+04 + -2.699269080763921e+04 + -2.702364551500381e+04 + -2.705462686113689e+04 + -2.708563485999998e+04 + -2.711666952809900e+04 + -2.714773087942122e+04 + -2.717881892991400e+04 + -2.720993369901594e+04 + -2.724107519999998e+04 + -2.727224344400496e+04 + -2.730343845029767e+04 + -2.733466023562860e+04 + -2.736590881019403e+04 + -2.739718419000000e+04 + -2.742848639412166e+04 + -2.745981543741902e+04 + -2.749117133427855e+04 + -2.752255410001475e+04 + -2.755396375000000e+04 + -2.758540029934807e+04 + -2.761686376223195e+04 + -2.764835415476579e+04 + -2.767987149599797e+04 + -2.771141579999997e+04 + -2.774298707825893e+04 + -2.777458534547961e+04 + -2.780621061813955e+04 + -2.783786291408934e+04 + -2.786954224999998e+04 + -2.790124864062599e+04 + -2.793298209650868e+04 + -2.796474263269793e+04 + -2.799653027215609e+04 + -2.802834503000000e+04 + -2.806018691678819e+04 + -2.809205594694776e+04 + -2.812395213748840e+04 + -2.815587550739401e+04 + -2.818782607000000e+04 + -2.821980383662756e+04 + -2.825180882556652e+04 + -2.828384105454396e+04 + -2.831590053775406e+04 + -2.834798728999998e+04 + -2.838010132665882e+04 + -2.841224266303304e+04 + -2.844441131398464e+04 + -2.847660729395342e+04 + -2.850883061999998e+04 + -2.854108131015271e+04 + -2.857335937943549e+04 + -2.860566484233479e+04 + -2.863799771378746e+04 + -2.867035801000000e+04 + -2.870274574643904e+04 + -2.873516093256026e+04 + -2.876760358436649e+04 + -2.880007372909855e+04 + -2.883257138000000e+04 + -2.886509654365616e+04 + -2.889764923870952e+04 + -2.893022948372628e+04 + -2.896283729252707e+04 + -2.899547267999998e+04 + -2.902813566168059e+04 + -2.906082625190441e+04 + -2.909354446650575e+04 + -2.912629032389195e+04 + -2.915906383999998e+04 + -2.919186502919167e+04 + -2.922469390650106e+04 + -2.925755048733507e+04 + -2.929043478725063e+04 + -2.932334682000000e+04 + -2.935628660019129e+04 + -2.938925415043921e+04 + -2.942224948806936e+04 + -2.945527261979538e+04 + -2.948832356000000e+04 + -2.952140232838030e+04 + -2.955450894361826e+04 + -2.958764342089699e+04 + -2.962080577090842e+04 + -2.965399600999997e+04 + -2.968721415715336e+04 + -2.972046022629084e+04 + -2.975373423280592e+04 + -2.978703619592538e+04 + -2.982036612999997e+04 + -2.985372404652352e+04 + -2.988710995909819e+04 + -2.992052388535540e+04 + -2.995396584761164e+04 + -2.998743586000000e+04 + -3.002093393306212e+04 + -3.005446008516229e+04 + -3.008801433415196e+04 + -3.012159669410924e+04 + -3.015520717999998e+04 + -3.018884580728562e+04 + -3.022251259030155e+04 + -3.025620754490144e+04 + -3.028993068950620e+04 + -3.032368203999997e+04 + -3.035746161072607e+04 + -3.039126941699663e+04 + -3.042510547393189e+04 + -3.045896979612689e+04 + -3.049286239999998e+04 + -3.052678330335746e+04 + -3.056073252467363e+04 + -3.059471007984014e+04 + -3.062871598061521e+04 + -3.066275024000000e+04 + -3.069681287356475e+04 + -3.073090390293319e+04 + -3.076502334621974e+04 + -3.079917121404217e+04 + -3.083334751999997e+04 + -3.086755228023463e+04 + -3.090178551167921e+04 + -3.093604723225209e+04 + -3.097033746063074e+04 + -3.100465620999998e+04 + -3.103900349175437e+04 + -3.107337932446759e+04 + -3.110778372555016e+04 + -3.114221670819769e+04 + -3.117667828999997e+04 + -3.121116848957679e+04 + -3.124568731744623e+04 + -3.128023478769976e+04 + -3.131481092268889e+04 + -3.134941574000000e+04 + -3.138404925321087e+04 + -3.141871147408727e+04 + -3.145340241670125e+04 + -3.148812209933996e+04 + -3.152287053999997e+04 + -3.155764775577736e+04 + -3.159245376185456e+04 + -3.162728857279384e+04 + -3.166215220315186e+04 + -3.169704466999997e+04 + -3.173196599132658e+04 + -3.176691618227545e+04 + -3.180189525721778e+04 + -3.183690323068162e+04 + -3.187194012000000e+04 + -3.190700594323912e+04 + -3.194210071422084e+04 + -3.197722444868163e+04 + -3.201237716636405e+04 + -3.204755888000000e+04 + -3.208276960047787e+04 + -3.211800935023939e+04 + -3.215327814773632e+04 + -3.218857600158763e+04 + -3.222390292999997e+04 + -3.225925895535199e+04 + -3.229464408973093e+04 + -3.233005834462857e+04 + -3.236550173499735e+04 + -3.240097427999997e+04 + -3.243647600017841e+04 + -3.247200691143220e+04 + -3.250756702669824e+04 + -3.254315635678932e+04 + -3.257877492000000e+04 + -3.261442273792899e+04 + -3.265009982555360e+04 + -3.268580619650297e+04 + -3.272154186523808e+04 + -3.275730685000000e+04 + -3.279310116911321e+04 + -3.282892483177912e+04 + -3.286477785354587e+04 + -3.290066026202923e+04 + -3.293657206999998e+04 + -3.297251328378459e+04 + -3.300848392497173e+04 + -3.304448401407080e+04 + -3.308051356412061e+04 + -3.311657258999998e+04 + -3.315266110752813e+04 + -3.318877912993135e+04 + -3.322492667413289e+04 + -3.326110376297835e+04 + -3.329731041000000e+04 + -3.333354662539115e+04 + -3.336981243131684e+04 + -3.340610784669931e+04 + -3.344243288124504e+04 + -3.347878755000000e+04 + -3.351517187197135e+04 + -3.355158586607149e+04 + -3.358802954742114e+04 + -3.362450292603845e+04 + -3.366100601999997e+04 + -3.369753885113907e+04 + -3.373410143432544e+04 + -3.377069378324004e+04 + -3.380731591267414e+04 + -3.384396783999997e+04 + -3.388064958319757e+04 + -3.391736115628571e+04 + -3.395410257481684e+04 + -3.399087385786547e+04 + -3.402767502000000e+04 + -3.406450607498593e+04 + -3.410136704569621e+04 + -3.413825794940452e+04 + -3.417517879208190e+04 + -3.421212959000000e+04 + -3.424911036577375e+04 + -3.428612113814977e+04 + -3.432316192150666e+04 + -3.436023272579379e+04 + -3.439733356999998e+04 + -3.443446447621852e+04 + -3.447162545467578e+04 + -3.450881651888796e+04 + -3.454603769159935e+04 + -3.458328898999997e+04 + -3.462057042742187e+04 + -3.465788201822977e+04 + -3.469522377879945e+04 + -3.473259572783916e+04 + -3.476999788000000e+04 + -3.480743024920274e+04 + -3.484489285737491e+04 + -3.488238572274076e+04 + -3.491990885516477e+04 + -3.495746227000000e+04 + -3.499504598627476e+04 + -3.503266002163332e+04 + -3.507030439252002e+04 + -3.510797911399110e+04 + -3.514568419999997e+04 + -3.518341966538968e+04 + -3.522118553105182e+04 + -3.525898181605689e+04 + -3.529680853433678e+04 + -3.533466569999997e+04 + -3.537255332834070e+04 + -3.541047143775194e+04 + -3.544842004484196e+04 + -3.548639916273562e+04 + -3.552440881000000e+04 + -3.556244900769237e+04 + -3.560051977192599e+04 + -3.563862111528000e+04 + -3.567675304773126e+04 + -3.571491559000000e+04 + -3.575310876677514e+04 + -3.579133259025522e+04 + -3.582958707123636e+04 + -3.586787222387752e+04 + -3.590618806999997e+04 + -3.594453463328037e+04 + -3.598291192576281e+04 + -3.602131995866808e+04 + -3.605975874687618e+04 + -3.609822830999997e+04 + -3.613672866872384e+04 + -3.617525983663845e+04 + -3.621382182906358e+04 + -3.625241466608051e+04 + -3.629103836000000e+04 + -3.632969292147818e+04 + -3.636837837559645e+04 + -3.640709474306420e+04 + -3.644584203277781e+04 + -3.648462026000000e+04 + -3.652342944409004e+04 + -3.656226960170399e+04 + -3.660114075023598e+04 + -3.664004290875195e+04 + -3.667897608999997e+04 + -3.671794030512006e+04 + -3.675693557547587e+04 + -3.679596192058374e+04 + -3.683501935339895e+04 + -3.687410788999997e+04 + -3.691322754870546e+04 + -3.695237834723054e+04 + -3.699156030212950e+04 + -3.703077342834224e+04 + -3.707001774000000e+04 + -3.710929325203417e+04 + -3.714859998429457e+04 + -3.718793795692067e+04 + -3.722730718808447e+04 + -3.726670768999997e+04 + -3.730613947399677e+04 + -3.734560256273038e+04 + -3.738509697431393e+04 + -3.742462271654350e+04 + -3.746417980999997e+04 + -3.750376828013417e+04 + -3.754338813660564e+04 + -3.758303939267375e+04 + -3.762272207245150e+04 + -3.766243618999997e+04 + -3.770218175518502e+04 + -3.774195878945678e+04 + -3.778176731257176e+04 + -3.782160733741773e+04 + -3.786147888000000e+04 + -3.790138195864309e+04 + -3.794131659132003e+04 + -3.798128279431332e+04 + -3.802128058166662e+04 + -3.806130996999997e+04 + -3.810137097737330e+04 + -3.814146362046005e+04 + -3.818158791697343e+04 + -3.822174388615621e+04 + -3.826193153999997e+04 + -3.830215088938532e+04 + -3.834240195971708e+04 + -3.838268477130731e+04 + -3.842299933188884e+04 + -3.846334565999997e+04 + -3.850372377842891e+04 + -3.854413369633216e+04 + -3.858457542816681e+04 + -3.862504900090371e+04 + -3.866555443000000e+04 + -3.870609172486966e+04 + -3.874666090332934e+04 + -3.878726198409722e+04 + -3.882789498399841e+04 + -3.886855991999997e+04 + -3.890925680946781e+04 + -3.894998567054054e+04 + -3.899074651957592e+04 + -3.903153937021765e+04 + -3.907236423999997e+04 + -3.911322114736439e+04 + -3.915411010384250e+04 + -3.919503112747372e+04 + -3.923598424716172e+04 + -3.927696946999997e+04 + -3.931798680038228e+04 + -3.935903628964794e+04 + -3.940011793259103e+04 + -3.944123164809230e+04 + -3.948237770000000e+04 + -3.952355620675491e+04 + -3.956476584662273e+04 + -3.960600801403134e+04 + -3.964728735507886e+04 + -3.968859104999997e+04 + 1.819886919039960e+01 + 1.816405130921966e+01 + 1.812918280091599e+01 + 1.809426424653407e+01 + 1.805929622711938e+01 + 1.802427932371738e+01 + 1.798921411737356e+01 + 1.795410118913339e+01 + 1.791894112004234e+01 + 1.788373449114589e+01 + 1.784848188348950e+01 + 1.781318387811866e+01 + 1.777784105607885e+01 + 1.774245399841551e+01 + 1.770702328617416e+01 + 1.767154950040025e+01 + 1.763603322213927e+01 + 1.760047503243666e+01 + 1.756487551233793e+01 + 1.752923524288855e+01 + 1.749355480513398e+01 + 1.745783478011969e+01 + 1.742207574889119e+01 + 1.738627829249391e+01 + 1.735044299197335e+01 + 1.731457042837498e+01 + 1.727866118274428e+01 + 1.724271583612671e+01 + 1.720673496956776e+01 + 1.717071916411290e+01 + 1.713466900080759e+01 + 1.709858506069732e+01 + 1.706246792482757e+01 + 1.702631817424381e+01 + 1.699013638999150e+01 + 1.695392315311613e+01 + 1.691767904466317e+01 + 1.688140464567809e+01 + 1.684510053720637e+01 + 1.680876730029348e+01 + 1.677240551598491e+01 + 1.673601576532611e+01 + 1.669959862936258e+01 + 1.666315468913977e+01 + 1.662668452570318e+01 + 1.659018872009826e+01 + 1.655366785337049e+01 + 1.651712250656536e+01 + 1.648055326072833e+01 + 1.644396069690488e+01 + 1.640734539614049e+01 + 1.637070793948063e+01 + 1.633404890797076e+01 + 1.629736888265638e+01 + 1.626066844458294e+01 + 1.622394817479593e+01 + 1.618720865434082e+01 + 1.615045046426309e+01 + 1.611367418560821e+01 + 1.607688039942165e+01 + 1.604006968674890e+01 + 1.600324262863542e+01 + 1.596639980612668e+01 + 1.592954180026817e+01 + 1.589266919210536e+01 + 1.585578256268371e+01 + 1.581888249304872e+01 + 1.578196956424585e+01 + 1.574504435732057e+01 + 1.570810745331836e+01 + 1.567115943328470e+01 + 1.563420087826506e+01 + 1.559723236930490e+01 + 1.556025448744972e+01 + 1.552326781374499e+01 + 1.548627292923617e+01 + 1.544927041496875e+01 + 1.541226085198818e+01 + 1.537524482133997e+01 + 1.533822290406956e+01 + 1.530119568122245e+01 + 1.526416373384410e+01 + 1.522712764298000e+01 + 1.519008798967561e+01 + 1.515304535497640e+01 + 1.511600031992786e+01 + 1.507895346557546e+01 + 1.504190537296467e+01 + 1.500485662314096e+01 + 1.496780779714983e+01 + 1.493075947603672e+01 + 1.489371224084713e+01 + 1.485666667262652e+01 + 1.481962335242037e+01 + 1.478258286127416e+01 + 1.474554578023335e+01 + 1.470851269034343e+01 + 1.467148417264987e+01 + 1.463446080819813e+01 + 1.459744317803371e+01 + 1.456043186320207e+01 + 1.452342744474869e+01 + 1.448643050371903e+01 + 1.444944162115858e+01 + 1.441246137811282e+01 + 1.437549035562720e+01 + 1.433852913474722e+01 + 1.430157829651834e+01 + 1.426463842198604e+01 + 1.422771009219579e+01 + 1.419079388819307e+01 + 1.415389039102334e+01 + 1.411700018173210e+01 + 1.408012384136481e+01 + 1.404326195096694e+01 + 1.400641509158398e+01 + 1.396958384426139e+01 + 1.393276879004464e+01 + 1.389597050997923e+01 + 1.385918958511061e+01 + 1.382242659648426e+01 + 1.378568212514566e+01 + 1.374895675214029e+01 + 1.371225105851361e+01 + 1.367556562531110e+01 + 1.363890103357824e+01 + 1.360225786436050e+01 + 1.356563669870335e+01 + 1.352903811765228e+01 + 1.349246270225274e+01 + 1.345591103355023e+01 + 1.341938369259021e+01 + 1.338288126041816e+01 + 1.334640431807955e+01 + 1.330995344661985e+01 + 1.327352922708455e+01 + 1.323713224051912e+01 + 1.320076306796902e+01 + 1.316442229047974e+01 + 1.312811048909675e+01 + 1.309182824486553e+01 + 1.305557613883154e+01 + 1.301935475204027e+01 + 1.298316466553718e+01 + 1.294700646036776e+01 + 1.291088071757748e+01 + 1.287478801821181e+01 + 1.283872894331622e+01 + 1.280270407393619e+01 + 1.276671399111720e+01 + 1.273075927590472e+01 + 1.269484050934423e+01 + 1.265895827248119e+01 + 1.262311314636109e+01 + 1.258730571202939e+01 + 1.255153655053158e+01 + 1.251580624291313e+01 + 1.248011537021950e+01 + 1.244446451349619e+01 + 1.240885425378865e+01 + 1.237328517214237e+01 + 1.233775784960283e+01 + 1.230227286721548e+01 + 1.226683080602582e+01 + 1.223143224707931e+01 + 1.219607777142142e+01 + 1.216076796009764e+01 + 1.212550339415344e+01 + 1.209028465463429e+01 + 1.205511232258567e+01 + 1.201998697905305e+01 + 1.198490920508190e+01 + 1.194987958171770e+01 + 1.191489869000593e+01 + 1.187996711099206e+01 + 1.184508542572157e+01 + 1.181025421523992e+01 + 1.177547406059259e+01 + 1.174074554282507e+01 + 1.170606924298281e+01 + 1.167144574211130e+01 + 1.163687562125602e+01 + 1.160235946146243e+01 + 1.156789784377601e+01 + 1.153349134924223e+01 + 1.149914055890657e+01 + 1.146484605381452e+01 + 1.143060841501152e+01 + 1.139642822354308e+01 + 1.136230606045464e+01 + 1.132824250679170e+01 + 1.129423814359974e+01 + 1.126029355192421e+01 + 1.122640931281059e+01 + 1.119258600730437e+01 + 1.115882421645102e+01 + 1.112512452129600e+01 + 1.109148750288479e+01 + 1.105791374226288e+01 + 1.102440382047573e+01 + 1.099095831856882e+01 + 1.095757781758762e+01 + 1.092426289857761e+01 + 1.089101414258426e+01 + 1.085783213065305e+01 + 1.082471744382945e+01 + 1.079167066315892e+01 + 1.075869236968697e+01 + 1.072578314445905e+01 + 1.069294356852064e+01 + 1.066017422291721e+01 + 1.062747568869424e+01 + 1.059484854689720e+01 + 1.056229337857157e+01 + 1.052981076476282e+01 + 1.049740128651643e+01 + 1.046506552487787e+01 + 1.043280406089261e+01 + 1.040061747560614e+01 + 1.036850635006392e+01 + 1.033647126531143e+01 + 1.030451280239414e+01 + 1.027263154235754e+01 + 1.024082806624708e+01 + 1.020910295510825e+01 + 1.017745678998653e+01 + 1.014589015192738e+01 + 1.011440362197629e+01 + 1.008299778117872e+01 + 1.005167321058014e+01 + 1.002043049122605e+01 + 9.989270204161905e+00 + 9.958192930433185e+00 + 9.927199251085362e+00 + 9.896289747163912e+00 + 9.865464999714312e+00 + 9.834725589782032e+00 + 9.804072098412551e+00 + 9.773505106651340e+00 + 9.743025195543877e+00 + 9.712632946135633e+00 + 9.682328939472086e+00 + 9.652113756598707e+00 + 9.621987978560973e+00 + 9.591952186404358e+00 + 9.562006961174337e+00 + 9.532152883916382e+00 + 9.502390535675973e+00 + 9.472720497498580e+00 + 9.443143350429677e+00 + 9.413659675514742e+00 + 9.384270053799249e+00 + 9.354975066328668e+00 + 9.325775294148480e+00 + 9.296671318304156e+00 + 9.267663719841170e+00 + 9.238753079804999e+00 + 9.209939979241115e+00 + 9.181224999194994e+00 + 9.152608720712111e+00 + 9.124091724837941e+00 + 9.095674592617954e+00 + 9.067357905097630e+00 + 9.039142243322441e+00 + 9.011028188337864e+00 + 8.983016292445305e+00 + 8.955106689123129e+00 + 8.927299195109086e+00 + 8.899593619314148e+00 + 8.871989770649284e+00 + 8.844487458025464e+00 + 8.817086490353660e+00 + 8.789786676544839e+00 + 8.762587825509975e+00 + 8.735489746160036e+00 + 8.708492247405990e+00 + 8.681595138158814e+00 + 8.654798227329470e+00 + 8.628101323828931e+00 + 8.601504236568170e+00 + 8.575006774458155e+00 + 8.548608746409855e+00 + 8.522309961334242e+00 + 8.496110228142285e+00 + 8.470009355744955e+00 + 8.444007153053219e+00 + 8.418103428978053e+00 + 8.392297992430423e+00 + 8.366590652321301e+00 + 8.340981217561657e+00 + 8.315469497062459e+00 + 8.290055299734679e+00 + 8.264738434489287e+00 + 8.239518710237252e+00 + 8.214395935889545e+00 + 8.189369920357137e+00 + 8.164440472550996e+00 + 8.139607401382095e+00 + 8.114870515761401e+00 + 8.090229624599887e+00 + 8.065684536808520e+00 + 8.041235061298275e+00 + 8.016881006980118e+00 + 7.992622182765018e+00 + 7.968458397563950e+00 + 7.944389460287880e+00 + 7.920415179847782e+00 + 7.896535365154623e+00 + 7.872749825119373e+00 + 7.849058368653004e+00 + 7.825460804666484e+00 + 7.801956942070785e+00 + 7.778546589776878e+00 + 7.755229556695729e+00 + 7.732005651738313e+00 + 7.708874683815599e+00 + 7.685836461838553e+00 + 7.662890794718152e+00 + 7.640037491365358e+00 + 7.617276360691148e+00 + 7.594607211606489e+00 + 7.572029853022352e+00 + 7.549544093849708e+00 + 7.527149742999527e+00 + 7.504846609382777e+00 + 7.482634501910429e+00 + 7.460513229493455e+00 + 7.438482601042820e+00 + 7.416542425469502e+00 + 7.394692511684465e+00 + 7.372932668598682e+00 + 7.351262705123121e+00 + 7.329682430168755e+00 + 7.308191652646553e+00 + 7.286790181467484e+00 + 7.265477825542517e+00 + 7.244254393782626e+00 + 7.223119695098779e+00 + 7.202073538401945e+00 + 7.181115732603097e+00 + 7.160246086613204e+00 + 7.139464409343233e+00 + 7.118770509704159e+00 + 7.098164196606950e+00 + 7.077645278962576e+00 + 7.057213565682006e+00 + 7.036868865676214e+00 + 7.016610987856166e+00 + 6.996439741132834e+00 + 6.976354934417186e+00 + 6.956356376620197e+00 + 6.936443876652832e+00 + 6.916617243426063e+00 + 6.896876285850862e+00 + 6.877220812838198e+00 + 6.857650633299039e+00 + 6.838165556144358e+00 + 6.818765390285123e+00 + 6.799449944632306e+00 + 6.780219028096876e+00 + 6.761072449589803e+00 + 6.742010018022058e+00 + 6.723031542304612e+00 + 6.704136831348434e+00 + 6.685325694064492e+00 + 6.666597939363759e+00 + 6.647953376157203e+00 + 6.629391813355797e+00 + 6.610913059870509e+00 + 6.592516924612310e+00 + 6.574203216492170e+00 + 6.555971744421058e+00 + 6.537822317309946e+00 + 6.519754744069803e+00 + 6.501768833611600e+00 + 6.483864394846306e+00 + 6.466041236684891e+00 + 6.448299168038327e+00 + 6.430637997817582e+00 + 6.413057534933630e+00 + 6.395557588297437e+00 + 6.378137966819973e+00 + 6.360798479412210e+00 + 6.343538934985117e+00 + 6.326359142449666e+00 + 6.309258910716826e+00 + 6.292238048697567e+00 + 6.275296365302859e+00 + 6.258433669443673e+00 + 6.241649770030978e+00 + 6.224944475975745e+00 + 6.208317596188945e+00 + 6.191768939581546e+00 + 6.175298315064517e+00 + 6.158905531548833e+00 + 6.142590397945462e+00 + 6.126352723165372e+00 + 6.110192316119535e+00 + 6.094108985718921e+00 + 6.078102540874499e+00 + 6.062172790497243e+00 + 6.046319543498117e+00 + 6.030542608788095e+00 + 6.014841795278149e+00 + 5.999216911879244e+00 + 5.983667767502356e+00 + 5.968194171058448e+00 + 5.952795931458497e+00 + 5.937472857613470e+00 + 5.922224758434336e+00 + 5.907051442832068e+00 + 5.891952719717633e+00 + 5.876928398002004e+00 + 5.861978286596150e+00 + 5.847102194411042e+00 + 5.832299930357648e+00 + 5.817571303346941e+00 + 5.802916122289888e+00 + 5.788334196097460e+00 + 5.773825333680629e+00 + 5.759389343950365e+00 + 5.745026035817635e+00 + 5.730735218193414e+00 + 5.716516699988668e+00 + 5.702370290114368e+00 + 5.688295797481486e+00 + 5.674293031000990e+00 + 5.660361799583851e+00 + 5.646501912141039e+00 + 5.632713177583526e+00 + 5.618995404822279e+00 + 5.605348402768269e+00 + 5.591771980332467e+00 + 5.578265946425844e+00 + 5.564830109959368e+00 + 5.551464279844009e+00 + 5.538168264990741e+00 + 5.524941874310529e+00 + 5.511784916714348e+00 + 5.498697201113163e+00 + 5.485678536417949e+00 + 5.472728731539672e+00 + 5.459847595389306e+00 + 5.447031950668924e+00 + 5.434258417587328e+00 + 5.421509378931341e+00 + 5.408790202589383e+00 + 5.396101725502927e+00 + 5.383442552149385e+00 + 5.370812984345576e+00 + 5.358213038980171e+00 + 5.345642546622406e+00 + 5.333101463094469e+00 + 5.320589727671893e+00 + 5.308107264570896e+00 + 5.295654006874094e+00 + 5.283229887334054e+00 + 5.270834837715376e+00 + 5.258468789944041e+00 + 5.246131676000384e+00 + 5.233823428164784e+00 + 5.221543979540164e+00 + 5.209293263422158e+00 + 5.197071212820756e+00 + 5.184877759775030e+00 + 5.172712837552656e+00 + 5.160576380473933e+00 + 5.148468322098453e+00 + 5.136388595958436e+00 + 5.124337135726472e+00 + 5.112313875048248e+00 + 5.100318748362747e+00 + 5.088351690727316e+00 + 5.076412636057685e+00 + 5.064501518839616e+00 + 5.052618274474592e+00 + 5.040762837425790e+00 + 5.028935142799786e+00 + 5.017135126690616e+00 + 5.005362723409764e+00 + 4.993617868159293e+00 + 4.981900498164465e+00 + 4.970210548621045e+00 + 4.958547954855285e+00 + 4.946912653797631e+00 + 4.935304581602165e+00 + 4.923723674430540e+00 + 4.912169869219803e+00 + 4.900643102722201e+00 + 4.889143311682699e+00 + 4.877670433140317e+00 + 4.866224404407401e+00 + 4.854805162838305e+00 + 4.843412645620055e+00 + 4.832046790470948e+00 + 4.820707535433044e+00 + 4.809394818449872e+00 + 4.798108577205163e+00 + 4.786848749644187e+00 + 4.775615274885523e+00 + 4.764408091170769e+00 + 4.753227136475494e+00 + 4.742072350593207e+00 + 4.730943672320340e+00 + 4.719841039761676e+00 + 4.708764392793848e+00 + 4.697713670947889e+00 + 4.686688813308958e+00 + 4.675689760077749e+00 + 4.664716450776882e+00 + 4.653768824355144e+00 + 4.642846821849820e+00 + 4.631950383864691e+00 + 4.621079449911801e+00 + 4.610233960271208e+00 + 4.599413855814052e+00 + 4.588619077726644e+00 + 4.577849566594633e+00 + 4.567105263324451e+00 + 4.556386109499332e+00 + 4.545692045920192e+00 + 4.535023013830533e+00 + 4.524378955558838e+00 + 4.513759812087895e+00 + 4.503165524982657e+00 + 4.492596037765430e+00 + 4.482051291649467e+00 + 4.471531227881555e+00 + 4.461035790191556e+00 + 4.450564920902143e+00 + 4.440118561957067e+00 + 4.429696656605228e+00 + 4.419299148008472e+00 + 4.408925979093191e+00 + 4.398577092681390e+00 + 4.388252432408600e+00 + 4.377951941955149e+00 + 4.367675563647617e+00 + 4.357423241911437e+00 + 4.347194921954801e+00 + 4.336990545878941e+00 + 4.326810057907454e+00 + 4.316653403787664e+00 + 4.306520526395858e+00 + 4.296411370095723e+00 + 4.286325880845187e+00 + 4.276264002847886e+00 + 4.266225680614548e+00 + 4.256210859410026e+00 + 4.246219484255977e+00 + 4.236251500111860e+00 + 4.226306852214246e+00 + 4.216385487075638e+00 + 4.206487350454588e+00 + 4.196612386873075e+00 + 4.186760542346591e+00 + 4.176931763412669e+00 + 4.167125996517556e+00 + 4.157343187931778e+00 + 4.147583283659849e+00 + 4.137846229598449e+00 + 4.128131973158434e+00 + 4.118440461620333e+00 + 4.108771640965568e+00 + 4.099125458381889e+00 + 4.089501861348100e+00 + 4.079900796648449e+00 + 4.070322211621146e+00 + 4.060766054068578e+00 + 4.051232271987449e+00 + 4.041720812903752e+00 + 4.032231624389123e+00 + 4.022764654839604e+00 + 4.013319852102482e+00 + 4.003897163974346e+00 + 3.994496539375360e+00 + 3.985117927005318e+00 + 3.975761275162846e+00 + 3.966426531955261e+00 + 3.957113646635731e+00 + 3.947822569087183e+00 + 3.938553247905866e+00 + 3.929305631685672e+00 + 3.920079669524097e+00 + 3.910875311427285e+00 + 3.901692507178291e+00 + 3.892531206204140e+00 + 3.883391358396833e+00 + 3.874272913657344e+00 + 3.865175821793835e+00 + 3.856100032879644e+00 + 3.847045497225832e+00 + 3.838012165320722e+00 + 3.828999987558789e+00 + 3.820008914413926e+00 + 3.811038896595444e+00 + 3.802089885254187e+00 + 3.793161831237620e+00 + 3.784254684890362e+00 + 3.775368398252875e+00 + 3.766502923100440e+00 + 3.757658209579520e+00 + 3.748834209295840e+00 + 3.740030874433959e+00 + 3.731248156753105e+00 + 3.722486008117639e+00 + 3.713744380387517e+00 + 3.705023225280349e+00 + 3.696322495070079e+00 + 3.687642142318910e+00 + 3.678982119432947e+00 + 3.670342378801804e+00 + 3.661722872867589e+00 + 3.653123554235752e+00 + 3.644544376023881e+00 + 3.635985291634798e+00 + 3.627446254192749e+00 + 3.618927216218316e+00 + 3.610428130335504e+00 + 3.601948951051534e+00 + 3.593489632231203e+00 + 3.585050126838500e+00 + 3.576630388153148e+00 + 3.568230370457688e+00 + 3.559850028500160e+00 + 3.551489315016799e+00 + 3.543148183918080e+00 + 3.534826590807976e+00 + 3.526524489935861e+00 + 3.518241835011243e+00 + 3.509978579991082e+00 + 3.501734680809670e+00 + 3.493510092697708e+00 + 3.485304769188242e+00 + 3.477118665289576e+00 + 3.468951736765370e+00 + 3.460803939385451e+00 + 3.452675227557384e+00 + 3.444565556219660e+00 + 3.436474882078371e+00 + 3.428403160505571e+00 + 3.420350346590145e+00 + 3.412316396304707e+00 + 3.404301265792477e+00 + 3.396304911176187e+00 + 3.388327288491305e+00 + 3.380368354160161e+00 + 3.372428064623584e+00 + 3.364506375833607e+00 + 3.356603244211646e+00 + 3.348718626640740e+00 + 3.340852480236101e+00 + 3.333004761693424e+00 + 3.325175427644580e+00 + 3.317364435527293e+00 + 3.309571742493616e+00 + 3.301797305408617e+00 + 3.294041081414062e+00 + 3.286303028194412e+00 + 3.278583103726798e+00 + 3.270881265443555e+00 + 3.263197471011956e+00 + 3.255531678390248e+00 + 3.247883845209004e+00 + 3.240253929642225e+00 + 3.232641890347850e+00 + 3.225047684908113e+00 + 3.217471271425511e+00 + 3.209912608923088e+00 + 3.202371655667555e+00 + 3.194848370181972e+00 + 3.187342711658790e+00 + 3.179854638881827e+00 + 3.172384110380890e+00 + 3.164931084707051e+00 + 3.157495521384956e+00 + 3.150077380058776e+00 + 3.142676619877814e+00 + 3.135293200073600e+00 + 3.127927079946843e+00 + 3.120578218905895e+00 + 3.113246577218404e+00 + 3.105932114937815e+00 + 3.098634790846833e+00 + 3.091354565058342e+00 + 3.084091398271724e+00 + 3.076845250485478e+00 + 3.069616081755534e+00 + 3.062403852244847e+00 + 3.055208522175611e+00 + 3.048030052549899e+00 + 3.040868404439169e+00 + 3.033723537524932e+00 + 3.026595412527113e+00 + 3.019483991059011e+00 + 3.012389234177664e+00 + 3.005311102428361e+00 + 2.998249556405217e+00 + 2.991204558170310e+00 + 2.984176069441633e+00 + 2.977164051262350e+00 + 2.970168464749357e+00 + 2.963189271462946e+00 + 2.956226433370632e+00 + 2.949279912203107e+00 + 2.942349669912605e+00 + 2.935435668735732e+00 + 2.928537870478263e+00 + 2.921656236941307e+00 + 2.914790730227295e+00 + 2.907941313056430e+00 + 2.901107948114753e+00 + 2.894290597705669e+00 + 2.887489224186201e+00 + 2.880703790004707e+00 + 2.873934257778331e+00 + 2.867180590721052e+00 + 2.860442752157053e+00 + 2.853720705060128e+00 + 2.847014412004529e+00 + 2.840323835735203e+00 + 2.833648939802342e+00 + 2.826989688360529e+00 + 2.820346045051714e+00 + 2.813717971838249e+00 + 2.807105432809830e+00 + 2.800508392739872e+00 + 2.793926814285955e+00 + 2.787360661385112e+00 + 2.780809898806732e+00 + 2.774274490318202e+00 + 2.767754399418414e+00 + 2.761249589980850e+00 + 2.754760027276096e+00 + 2.748285675987487e+00 + 2.741826499952791e+00 + 2.735382462817888e+00 + 2.728953529693038e+00 + 2.722539666591989e+00 + 2.716140837199994e+00 + 2.709757005928732e+00 + 2.703388138477217e+00 + 2.697034199719776e+00 + 2.690695154612969e+00 + 2.684370968516638e+00 + 2.678061606722120e+00 + 2.671767034388748e+00 + 2.665487216663756e+00 + 2.659222119420964e+00 + 2.652971708466898e+00 + 2.646735949170681e+00 + 2.640514807328682e+00 + 2.634308248813400e+00 + 2.628116239351709e+00 + 2.621938745026414e+00 + 2.615775731978081e+00 + 2.609627166192403e+00 + 2.603493014125890e+00 + 2.597373242133807e+00 + 2.591267815972944e+00 + 2.585176702619338e+00 + 2.579099869106871e+00 + 2.573037281022092e+00 + 2.566988905295047e+00 + 2.560954709471109e+00 + 2.554934660124372e+00 + 2.548928723658388e+00 + 2.542936866838776e+00 + 2.536959057454498e+00 + 2.530995262744329e+00 + 2.525045449466102e+00 + 2.519109584724339e+00 + 2.513187636248425e+00 + 2.507279571988880e+00 + 2.501385358975255e+00 + 2.495504964649074e+00 + 2.489638357011514e+00 + 2.483785503877440e+00 + 2.477946372993181e+00 + 2.472120932153270e+00 + 2.466309149445497e+00 + 2.460510993028623e+00 + 2.454726431004756e+00 + 2.448955431279121e+00 + 2.443197962222979e+00 + 2.437453992749473e+00 + 2.431723490873920e+00 + 2.426006424702946e+00 + 2.420302763016215e+00 + 2.414612474849150e+00 + 2.408935529060812e+00 + 2.403271894158963e+00 + 2.397621539164549e+00 + 2.391984432987164e+00 + 2.386360544006294e+00 + 2.380749841635097e+00 + 2.375152295549876e+00 + 2.369567874852914e+00 + 2.363996548806182e+00 + 2.358438286639424e+00 + 2.352893057314327e+00 + 2.347360830870365e+00 + 2.341841577523073e+00 + 2.336335266205249e+00 + 2.330841866367291e+00 + 2.325361348038680e+00 + 2.319893681430557e+00 + 2.314438836350213e+00 + 2.308996782525400e+00 + 2.303567490482044e+00 + 2.298150930506590e+00 + 2.292747072570897e+00 + 2.287355886755380e+00 + 2.281977343203661e+00 + 2.276611412298537e+00 + 2.271258065216148e+00 + 2.265917272602903e+00 + 2.260589004572198e+00 + 2.255273232290290e+00 + 2.249969926489583e+00 + 2.244679057245269e+00 + 2.239400595715412e+00 + 2.234134513404378e+00 + 2.228880781619142e+00 + 2.223639370658599e+00 + 2.218410251587366e+00 + 2.213193396784469e+00 + 2.207988776668006e+00 + 2.202796362022329e+00 + 2.197616125439223e+00 + 2.192448038696543e+00 + 2.187292072961057e+00 + 2.182148199232985e+00 + 2.177016389630072e+00 + 2.171896616273634e+00 + 2.166788850281173e+00 + 2.161693063906081e+00 + 2.156609229682959e+00 + 2.151537319229026e+00 + 2.146477304323076e+00 + 2.141429157241363e+00 + 2.136392850965788e+00 + 2.131368357474257e+00 + 2.126355648357996e+00 + 2.121354696293322e+00 + 2.116365474412895e+00 + 2.111387955644702e+00 + 2.106422111701483e+00 + 2.101467915161587e+00 + 2.096525339256323e+00 + 2.091594356269759e+00 + 2.086674939419586e+00 + 2.081767062556874e+00 + 2.076870697792070e+00 + 2.071985817585338e+00 + 2.067112395385072e+00 + 2.062250405333861e+00 + 2.057399820685575e+00 + 2.052560613690088e+00 + 2.047732757766644e+00 + 2.042916226752948e+00 + 2.038110994473384e+00 + 2.033317034456518e+00 + 2.028534320143143e+00 + 2.023762825026766e+00 + 2.019002522786289e+00 + 2.014253387371010e+00 + 2.009515392980107e+00 + 2.004788513366984e+00 + 2.000072722331970e+00 + 1.995367994084281e+00 + 1.990674302528751e+00 + 1.985991621875054e+00 + 1.981319927135009e+00 + 1.976659192144684e+00 + 1.972009390577169e+00 + 1.967370497271926e+00 + 1.962742487042732e+00 + 1.958125334423246e+00 + 1.953519013586483e+00 + 1.948923499307053e+00 + 1.944338766657414e+00 + 1.939764790288013e+00 + 1.935201544608222e+00 + 1.930649004305472e+00 + 1.926107145248571e+00 + 1.921575942429786e+00 + 1.917055370205972e+00 + 1.912545403920843e+00 + 1.908046018818900e+00 + 1.903557190023903e+00 + 1.899078893306255e+00 + 1.894611103753838e+00 + 1.890153795996532e+00 + 1.885706946418488e+00 + 1.881270530851602e+00 + 1.876844524133795e+00 + 1.872428902057808e+00 + 1.868023640555410e+00 + 1.863628715350075e+00 + 1.859244102235784e+00 + 1.854869776995271e+00 + 1.850505715382929e+00 + 1.846151893336109e+00 + 1.841808287113597e+00 + 1.837474873250078e+00 + 1.833151627500553e+00 + 1.828838525627810e+00 + 1.824535544058799e+00 + 1.820242659570220e+00 + 1.815959848693184e+00 + 1.811687087278560e+00 + 1.807424351697017e+00 + 1.803171618832717e+00 + 1.798928865872756e+00 + 1.794696068965575e+00 + 1.790473204047284e+00 + 1.786260248130819e+00 + 1.782057178544553e+00 + 1.777863972462110e+00 + 1.773680606381003e+00 + 1.769507057021776e+00 + 1.765343301422396e+00 + 1.761189316819223e+00 + 1.757045080431908e+00 + 1.752910569457795e+00 + 1.748785761158555e+00 + 1.744670632638435e+00 + 1.740565161064786e+00 + 1.736469324420783e+00 + 1.732383100261040e+00 + 1.728306465595185e+00 + 1.724239397824929e+00 + 1.720181874717039e+00 + 1.716133874165168e+00 + 1.712095373335323e+00 + 1.708066350172305e+00 + 1.704046783495335e+00 + 1.700036650108550e+00 + 1.696035927584721e+00 + 1.692044595228792e+00 + 1.688062630443701e+00 + 1.684090010658294e+00 + 1.680126714513943e+00 + 1.676172720475745e+00 + 1.672228006742128e+00 + 1.668292551293985e+00 + 1.664366332353613e+00 + 1.660449328407859e+00 + 1.656541518177628e+00 + 1.652642880144113e+00 + 1.648753392536404e+00 + 1.644873033459887e+00 + 1.641001782122826e+00 + 1.637139617814172e+00 + 1.633286518510287e+00 + 1.629442462986198e+00 + 1.625607430332010e+00 + 1.621781398816242e+00 + 1.617964347766720e+00 + 1.614156256896447e+00 + 1.610357104501046e+00 + 1.606566869528149e+00 + 1.602785531410984e+00 + 1.599013068753329e+00 + 1.595249460964023e+00 + 1.591494688099418e+00 + 1.587748729316499e+00 + 1.584011563661260e+00 + 1.580283170366302e+00 + 1.576563528988570e+00 + 1.572852618951484e+00 + 1.569150419635379e+00 + 1.565456911345500e+00 + 1.561772073862832e+00 + 1.558095886092752e+00 + 1.554428327545355e+00 + 1.550769378486889e+00 + 1.547119019605569e+00 + 1.543477229774924e+00 + 1.539843988467248e+00 + 1.536219276909035e+00 + 1.532603074921508e+00 + 1.528995362108325e+00 + 1.525396118748853e+00 + 1.521805324624735e+00 + 1.518222960029189e+00 + 1.514649006474386e+00 + 1.511083443428444e+00 + 1.507526250258141e+00 + 1.503977408416516e+00 + 1.500436898413773e+00 + 1.496904700394939e+00 + 1.493380795245864e+00 + 1.489865163193006e+00 + 1.486357784560608e+00 + 1.482858641108495e+00 + 1.479367713055452e+00 + 1.475884980161266e+00 + 1.472410424507970e+00 + 1.468944026943859e+00 + 1.465485767394345e+00 + 1.462035627142284e+00 + 1.458593587684006e+00 + 1.455159630175685e+00 + 1.451733734815932e+00 + 1.448315882934573e+00 + 1.444906056735074e+00 + 1.441504236540235e+00 + 1.438110403156542e+00 + 1.434724538391589e+00 + 1.431346623689521e+00 + 1.427976640530080e+00 + 1.424614570482120e+00 + 1.421260394583763e+00 + 1.417914094214416e+00 + 1.414575651360096e+00 + 1.411245047472556e+00 + 1.407922264020345e+00 + 1.404607282835409e+00 + 1.401300085863839e+00 + 1.398000654669480e+00 + 1.394708970355802e+00 + 1.391425015768138e+00 + 1.388148773421020e+00 + 1.384880223867722e+00 + 1.381619349200565e+00 + 1.378366132070768e+00 + 1.375120554406545e+00 + 1.371882598139520e+00 + 1.368652245409923e+00 + 1.365429478679455e+00 + 1.362214280063096e+00 + 1.359006631544336e+00 + 1.355806515436745e+00 + 1.352613914349998e+00 + 1.349428810943258e+00 + 1.346251187518860e+00 + 1.343081026346772e+00 + 1.339918309785753e+00 + 1.336763020411036e+00 + 1.333615141050152e+00 + 1.330474654669161e+00 + 1.327341544046787e+00 + 1.324215791384803e+00 + 1.321097378844990e+00 + 1.317986290481943e+00 + 1.314882509034005e+00 + 1.311786015892630e+00 + 1.308696795174431e+00 + 1.305614830505543e+00 + 1.302540104058677e+00 + 1.299472598550161e+00 + 1.296412297281467e+00 + 1.293359183920592e+00 + 1.290313241355424e+00 + 1.287274452437336e+00 + 1.284242800425524e+00 + 1.281218268758570e+00 + 1.278200840971845e+00 + 1.275190500607243e+00 + 1.272187230813499e+00 + 1.269191014801793e+00 + 1.266201836184906e+00 + 1.263219678244913e+00 + 1.260244524601725e+00 + 1.257276359774731e+00 + 1.254315166659556e+00 + 1.251360928048363e+00 + 1.248413628680403e+00 + 1.245473252809453e+00 + 1.242539783866816e+00 + 1.239613204552696e+00 + 1.236693499248504e+00 + 1.233780652886690e+00 + 1.230874648458874e+00 + 1.227975469917747e+00 + 1.225083101914005e+00 + 1.222197528080320e+00 + 1.219318732110022e+00 + 1.216446698153004e+00 + 1.213581411119631e+00 + 1.210722855169846e+00 + 1.207871013783067e+00 + 1.205025871252235e+00 + 1.202187412198626e+00 + 1.199355621285526e+00 + 1.196530482820713e+00 + 1.193711981112556e+00 + 1.190900100540550e+00 + 1.188094825240966e+00 + 1.185296139829988e+00 + 1.182504029475636e+00 + 1.179718478336080e+00 + 1.176939470878376e+00 + 1.174166992368249e+00 + 1.171401026812090e+00 + 1.168641558834780e+00 + 1.165888574598542e+00 + 1.163142057955574e+00 + 1.160401992993886e+00 + 1.157668365957760e+00 + 1.154941161055026e+00 + 1.152220362585152e+00 + 1.149505957086653e+00 + 1.146797929075238e+00 + 1.144096262593592e+00 + 1.141400943461258e+00 + 1.138711957183691e+00 + 1.136029288721929e+00 + 1.133352922646698e+00 + 1.130682844729473e+00 + 1.128019040871752e+00 + 1.125361495026299e+00 + 1.122710192813904e+00 + 1.120065120718956e+00 + 1.117426263156838e+00 + 1.114793605478939e+00 + 1.112167133798269e+00 + 1.109546832911627e+00 + 1.106932688501257e+00 + 1.104324686965964e+00 + 1.101722813149718e+00 + 1.099127052563592e+00 + 1.096537391606932e+00 + 1.093953815681381e+00 + 1.091376310184498e+00 + 1.088804860939953e+00 + 1.086239454210304e+00 + 1.083680075729654e+00 + 1.081126710640132e+00 + 1.078579345517792e+00 + 1.076037966489376e+00 + 1.073502558540405e+00 + 1.070973108232868e+00 + 1.068449602380304e+00 + 1.065932027008114e+00 + 1.063420367175204e+00 + 1.060914608734753e+00 + 1.058414739347230e+00 + 1.055920744292059e+00 + 1.053432609053344e+00 + 1.050950321750202e+00 + 1.048473868029229e+00 + 1.046003233045439e+00 + 1.043538404185668e+00 + 1.041079368203120e+00 + 1.038626111099421e+00 + 1.036178618557632e+00 + 1.033736877638818e+00 + 1.031300875738098e+00 + 1.028870598541307e+00 + 1.026446032279889e+00 + 1.024027163804816e+00 + 1.021613979927458e+00 + 1.019206467749757e+00 + 1.016804614201984e+00 + 1.014408404816817e+00 + 1.012017826403038e+00 + 1.009632866898133e+00 + 1.007253512894913e+00 + 1.004879750675442e+00 + 1.002511566831996e+00 + 1.000148949144661e+00 + 9.977918847145494e-01 + 9.954403597206510e-01 + 9.930943614528360e-01 + 9.907538771638876e-01 + 9.884188936740620e-01 + 9.860893982148410e-01 + 9.837653780132122e-01 + 9.814468200970017e-01 + 9.791337116433633e-01 + 9.768260399168340e-01 + 9.745237922184445e-01 + 9.722269558574113e-01 + 9.699355181124353e-01 + 9.676494662336389e-01 + 9.653687876978898e-01 + 9.630934699744002e-01 + 9.608235003289306e-01 + 9.585588662885656e-01 + 9.562995554410040e-01 + 9.540455551859868e-01 + 9.517968530931009e-01 + 9.495534368089285e-01 + 9.473152938858177e-01 + 9.450824119343849e-01 + 9.428547786515334e-01 + 9.406323818265262e-01 + 9.384152091378831e-01 + 9.362032482272097e-01 + 9.339964869112888e-01 + 9.317949130473703e-01 + 9.295985145023118e-01 + 9.274072791539573e-01 + 9.252211948367504e-01 + 9.230402494034374e-01 + 9.208644309329761e-01 + 9.186937274260252e-01 + 9.165281267878318e-01 + 9.143676170947915e-01 + 9.122121864230248e-01 + 9.100618228160294e-01 + 9.079165144228375e-01 + 9.057762494101416e-01 + 9.036410159434681e-01 + 9.015108022852656e-01 + 8.993855966397851e-01 + 8.972653871281971e-01 + 8.951501621417270e-01 + 8.930399100640233e-01 + 8.909346191274636e-01 + 8.888342777366450e-01 + 8.867388743114113e-01 + 8.846483971822027e-01 + 8.825628348501290e-01 + 8.804821758633001e-01 + 8.784064086961259e-01 + 8.763355218399448e-01 + 8.742695038377348e-01 + 8.722083433110044e-01 + 8.701520288632569e-01 + 8.681005490981059e-01 + 8.660538926659707e-01 + 8.640120483003465e-01 + 8.619750047630993e-01 + 8.599427507590320e-01 + 8.579152750196485e-01 + 8.558925663402844e-01 + 8.538746136199826e-01 + 8.518614056598554e-01 + 8.498529312415619e-01 + 8.478491793952468e-01 + 8.458501390477595e-01 + 8.438557990450950e-01 + 8.418661484572341e-01 + 8.398811762963594e-01 + 8.379008715007146e-01 + 8.359252231704962e-01 + 8.339542204095658e-01 + 8.319878522912720e-01 + 8.300261079597043e-01 + 8.280689765769632e-01 + 8.261164473121154e-01 + 8.241685093974929e-01 + 8.222251520716921e-01 + 8.202863645582569e-01 + 8.183521361157176e-01 + 8.164224560764958e-01 + 8.144973138478017e-01 + 8.125766987264839e-01 + 8.106606000443977e-01 + 8.087490072689457e-01 + 8.068419098143643e-01 + 8.049392971238847e-01 + 8.030411587461223e-01 + 8.011474841608780e-01 + 7.992582628576694e-01 + 7.973734844327619e-01 + 7.954931384582111e-01 + 7.936172145055983e-01 + 7.917457022017643e-01 + 7.898785912282000e-01 + 7.880158712799969e-01 + 7.861575320154112e-01 + 7.843035631939634e-01 + 7.824539546080472e-01 + 7.806086959262468e-01 + 7.787677769423338e-01 + 7.769311875560446e-01 + 7.750989176225404e-01 + 7.732709569908990e-01 + 7.714472955211897e-01 + 7.696279231052234e-01 + 7.678128297211314e-01 + 7.660020053954494e-01 + 7.641954400346342e-01 + 7.623931236302374e-01 + 7.605950462809293e-01 + 7.588011979868697e-01 + 7.570115688113509e-01 + 7.552261489288551e-01 + 7.534449284973839e-01 + 7.516678976340316e-01 + 7.498950464317325e-01 + 7.481263651057625e-01 + 7.463618439154999e-01 + 7.446014731170009e-01 + 7.428452429690515e-01 + 7.410931437272748e-01 + 7.393451656574506e-01 + 7.376012991597445e-01 + 7.358615346418724e-01 + 7.341258624174279e-01 + 7.323942728636854e-01 + 7.306667564033948e-01 + 7.289433034811010e-01 + 7.272239046205010e-01 + 7.255085503342084e-01 + 7.237972310231134e-01 + 7.220899372662432e-01 + 7.203866596915919e-01 + 7.186873887451811e-01 + 7.169921150530395e-01 + 7.153008293485266e-01 + 7.136135222426403e-01 + 7.119301843519804e-01 + 7.102508063464710e-01 + 7.085753789925818e-01 + 7.069038930034782e-01 + 7.052363390742027e-01 + 7.035727080638011e-01 + 7.019129907750439e-01 + 7.002571779481277e-01 + 6.986052604437083e-01 + 6.969572291357313e-01 + 6.953130748988353e-01 + 6.936727887020229e-01 + 6.920363614522840e-01 + 6.904037839913317e-01 + 6.887750473773369e-01 + 6.871501426160253e-01 + 6.855290605871678e-01 + 6.839117924040222e-01 + 6.822983292013320e-01 + 6.806886620123715e-01 + 6.790827818618205e-01 + 6.774806798407976e-01 + 6.758823471448717e-01 + 6.742877749381793e-01 + 6.726969543916550e-01 + 6.711098767181217e-01 + 6.695265330883416e-01 + 6.679469147191758e-01 + 6.663710129607012e-01 + 6.647988190816884e-01 + 6.632303243195694e-01 + 6.616655199754741e-01 + 6.601043974442724e-01 + 6.585469481315596e-01 + 6.569931633409668e-01 + 6.554430344698831e-01 + 6.538965529680326e-01 + 6.523537102216029e-01 + 6.508144977390269e-01 + 6.492789070902356e-01 + 6.477469297088367e-01 + 6.462185570471877e-01 + 6.446937806333431e-01 + 6.431725921186934e-01 + 6.416549831028872e-01 + 6.401409451291091e-01 + 6.386304698205402e-01 + 6.371235488250266e-01 + 6.356201737964903e-01 + 6.341203364004929e-01 + 6.326240283504814e-01 + 6.311312414023209e-01 + 6.296419672600960e-01 + 6.281561976359686e-01 + 6.266739242956670e-01 + 6.251951391194286e-01 + 6.237198339322255e-01 + 6.222480004492102e-01 + 6.207796305731890e-01 + 6.193147162378443e-01 + 6.178532493027741e-01 + 6.163952216645050e-01 + 6.149406252489860e-01 + 6.134894519984210e-01 + 6.120416938491114e-01 + 6.105973427932988e-01 + 6.091563909278429e-01 + 6.077188302116784e-01 + 6.062846526061169e-01 + 6.048538502614210e-01 + 6.034264152733694e-01 + 6.020023397068369e-01 + 6.005816156757759e-01 + 5.991642353027361e-01 + 5.977501907311656e-01 + 5.963394741611191e-01 + 5.949320777981851e-01 + 5.935279938331314e-01 + 5.921272144271874e-01 + 5.907297318514260e-01 + 5.893355384452119e-01 + 5.879446264415406e-01 + 5.865569881004723e-01 + 5.851726157460215e-01 + 5.837915017610071e-01 + 5.824136384878618e-01 + 5.810390182425506e-01 + 5.796676334763571e-01 + 5.782994765837256e-01 + 5.769345398883866e-01 + 5.755728159164172e-01 + 5.742142971757567e-01 + 5.728589760824728e-01 + 5.715068451452269e-01 + 5.701578968814059e-01 + 5.688121237820786e-01 + 5.674695184134964e-01 + 5.661300733449661e-01 + 5.647937811172017e-01 + 5.634606343850478e-01 + 5.621306258016221e-01 + 5.608037479323033e-01 + 5.594799934047830e-01 + 5.581593548937616e-01 + 5.568418251014721e-01 + 5.555273967809645e-01 + 5.542160626584934e-01 + 5.529078153599613e-01 + 5.516026476869607e-01 + 5.503005524879265e-01 + 5.490015224489507e-01 + 5.477055503706971e-01 + 5.464126291394721e-01 + 5.451227516109934e-01 + 5.438359105997491e-01 + 5.425520989229732e-01 + 5.412713094911021e-01 + 5.399935352390902e-01 + 5.387187691034094e-01 + 5.374470040087604e-01 + 5.361782329113639e-01 + 5.349124487848638e-01 + 5.336496445514358e-01 + 5.323898132502169e-01 + 5.311329480044003e-01 + 5.298790417206248e-01 + 5.286280874266170e-01 + 5.273800783238198e-01 + 5.261350074387794e-01 + 5.248928678300107e-01 + 5.236536526638225e-01 + 5.224173550711992e-01 + 5.211839681868924e-01 + 5.199534851768893e-01 + 5.187258992380968e-01 + 5.175012035574781e-01 + 5.162793913049719e-01 + 5.150604557657682e-01 + 5.138443902158373e-01 + 5.126311878387027e-01 + 5.114208419243966e-01 + 5.102133457996210e-01 + 5.090086927559088e-01 + 5.078068761246483e-01 + 5.066078892445277e-01 + 5.054117254264059e-01 + 5.042183780707232e-01 + 5.030278406156905e-01 + 5.018401064512819e-01 + 5.006551689399448e-01 + 4.994730214827681e-01 + 4.982936576173500e-01 + 4.971170708196209e-01 + 4.959432545161117e-01 + 4.947722021784954e-01 + 4.936039073158257e-01 + 4.924383634713059e-01 + 4.912755642215030e-01 + 4.901155031029966e-01 + 4.889581736357913e-01 + 4.878035694426762e-01 + 4.866516841617155e-01 + 4.855025114095978e-01 + 4.843560447562852e-01 + 4.832122778219742e-01 + 4.820712043014287e-01 + 4.809328179063641e-01 + 4.797971123302187e-01 + 4.786640812406847e-01 + 4.775337183184862e-01 + 4.764060173050261e-01 + 4.752809720122764e-01 + 4.741585762111217e-01 + 4.730388236459319e-01 + 4.719217080626099e-01 + 4.708072233097221e-01 + 4.696953632391141e-01 + 4.685861216425942e-01 + 4.674794923970907e-01 + 4.663754693817960e-01 + 4.652740464091041e-01 + 4.641752174102053e-01 + 4.630789763262008e-01 + 4.619853169869301e-01 + 4.608942333544824e-01 + 4.598057194461572e-01 + 4.587197692038988e-01 + 4.576363766028796e-01 + 4.565555356433393e-01 + 4.554772403132010e-01 + 4.544014845983438e-01 + 4.533282625263808e-01 + 4.522575682421708e-01 + 4.511893957834002e-01 + 4.501237391381080e-01 + 4.490605924783677e-01 + 4.479999499003729e-01 + 4.469418054464263e-01 + 4.458861533467765e-01 + 4.448329877503518e-01 + 4.437823027182840e-01 + 4.427340924804984e-01 + 4.416883512661691e-01 + 4.406450732493647e-01 + 4.396042525949710e-01 + 4.385658835318161e-01 + 4.375299603591805e-01 + 4.364964773180230e-01 + 4.354654286529535e-01 + 4.344368086449737e-01 + 4.334106115882546e-01 + 4.323868317973252e-01 + 4.313654636098987e-01 + 4.303465013528135e-01 + 4.293299393608014e-01 + 4.283157719943348e-01 + 4.273039936389254e-01 + 4.262945986862648e-01 + 4.252875815207442e-01 + 4.242829365388910e-01 + 4.232806581737543e-01 + 4.222807409163533e-01 + 4.212831792180283e-01 + 4.202879675160039e-01 + 4.192951002821390e-01 + 4.183045720190468e-01 + 4.173163772308877e-01 + 4.163305103895081e-01 + 4.153469660738844e-01 + 4.143657388899517e-01 + 4.133868232899575e-01 + 4.124102138463511e-01 + 4.114359052122226e-01 + 4.104638919136763e-01 + 4.094941685453110e-01 + 4.085267297797091e-01 + 4.075615702608746e-01 + 4.065986846247451e-01 + 4.056380675149961e-01 + 4.046797136100241e-01 + 4.037236175791848e-01 + 4.027697740867438e-01 + 4.018181778668817e-01 + 4.008688236537185e-01 + 3.999217061664900e-01 + 3.989768201804763e-01 + 3.980341604347806e-01 + 3.970937216243767e-01 + 3.961554986257766e-01 + 3.952194862561716e-01 + 3.942856791749246e-01 + 3.933540722797152e-01 + 3.924246604937682e-01 + 3.914974386057962e-01 + 3.905724013991230e-01 + 3.896495437210211e-01 + 3.887288605266558e-01 + 3.878103467384126e-01 + 3.868939972364765e-01 + 3.859798068708922e-01 + 3.850677705778728e-01 + 3.841578833358520e-01 + 3.832501400994028e-01 + 3.823445358203205e-01 + 3.814410654593080e-01 + 3.805397240004402e-01 + 3.796405064500310e-01 + 3.787434078281850e-01 + 3.778484231550217e-01 + 3.769555474293507e-01 + 3.760647756653435e-01 + 3.751761029803938e-01 + 3.742895244689736e-01 + 3.734050351897463e-01 + 3.725226302131253e-01 + 3.716423046174657e-01 + 3.707640535037849e-01 + 3.698878720450124e-01 + 3.690137553825144e-01 + 3.681416986254492e-01 + 3.672716969834960e-01 + 3.664037456169829e-01 + 3.655378396196581e-01 + 3.646739742353085e-01 + 3.638121447254376e-01 + 3.629523462980791e-01 + 3.620945741078652e-01 + 3.612388233782960e-01 + 3.603850894480597e-01 + 3.595333675652969e-01 + 3.586836529581271e-01 + 3.578359408972814e-01 + 3.569902267099870e-01 + 3.561465057284826e-01 + 3.553047732480240e-01 + 3.544650245489661e-01 + 3.536272549462773e-01 + 3.527914598373741e-01 + 3.519576346281267e-01 + 3.511257746893044e-01 + 3.502958753213151e-01 + 3.494679319027064e-01 + 3.486419398734283e-01 + 3.478178946841421e-01 + 3.469957917542031e-01 + 3.461756264906874e-01 + 3.453573943334770e-01 + 3.445410907466465e-01 + 3.437267112053919e-01 + 3.429142511753236e-01 + 3.421037061357636e-01 + 3.412950715914754e-01 + 3.404883430871680e-01 + 3.396835161220511e-01 + 3.388805861778083e-01 + 3.380795488742585e-01 + 3.372803997559251e-01 + 3.364831342820857e-01 + 3.356877480644493e-01 + 3.348942367473924e-01 + 3.341025959445759e-01 + 3.333128211902062e-01 + 3.325249080644813e-01 + 3.317388522349806e-01 + 3.309546493345364e-01 + 3.301722950123494e-01 + 3.293917849546400e-01 + 3.286131147929292e-01 + 3.278362801760134e-01 + 3.270612768173198e-01 + 3.262881004205997e-01 + 3.255167466776044e-01 + 3.247472112772871e-01 + 3.239794899591130e-01 + 3.232135784952971e-01 + 3.224494726613195e-01 + 3.216871681318617e-01 + 3.209266606147330e-01 + 3.201679460077643e-01 + 3.194110200806869e-01 + 3.186558785671545e-01 + 3.179025173467112e-01 + 3.171509322207308e-01 + 3.164011189537259e-01 + 3.156530734030461e-01 + 3.149067914068442e-01 + 3.141622688005587e-01 + 3.134195014964591e-01 + 3.126784853846941e-01 + 3.119392163234083e-01 + 3.112016901727622e-01 + 3.104659028247113e-01 + 3.097318502149898e-01 + 3.089995283319454e-01 + 3.082689330721005e-01 + 3.075400602663161e-01 + 3.068129059444455e-01 + 3.060874661234649e-01 + 3.053637367362504e-01 + 3.046417137079979e-01 + 3.039213930418579e-01 + 3.032027708160949e-01 + 3.024858429572295e-01 + 3.017706054435225e-01 + 3.010570543910775e-01 + 3.003451858060657e-01 + 2.996349956970866e-01 + 2.989264801519126e-01 + 2.982196352437723e-01 + 2.975144570351090e-01 + 2.968109415899733e-01 + 2.961090850010212e-01 + 2.954088833712375e-01 + 2.947103327960572e-01 + 2.940134293733013e-01 + 2.933181692489545e-01 + 2.926245486550200e-01 + 2.919325636534309e-01 + 2.912422103009782e-01 + 2.905534849067459e-01 + 2.898663836341845e-01 + 2.891809025716850e-01 + 2.884970379499296e-01 + 2.878147859946116e-01 + 2.871341429080666e-01 + 2.864551048929091e-01 + 2.857776681836698e-01 + 2.851018290276999e-01 + 2.844275836247271e-01 + 2.837549281975342e-01 + 2.830838590248334e-01 + 2.824143724756855e-01 + 2.817464648036653e-01 + 2.810801321714598e-01 + 2.804153709678348e-01 + 2.797521775256636e-01 + 2.790905480675208e-01 + 2.784304789557904e-01 + 2.777719665515425e-01 + 2.771150071618110e-01 + 2.764595971293084e-01 + 2.758057328280932e-01 + 2.751534106502780e-01 + 2.745026269461392e-01 + 2.738533780697315e-01 + 2.732056604090851e-01 + 2.725594703611444e-01 + 2.719148043516682e-01 + 2.712716588414341e-01 + 2.706300302048149e-01 + 2.699899148252890e-01 + 2.693513091897057e-01 + 2.687142097803046e-01 + 2.680786130525787e-01 + 2.674445154290628e-01 + 2.668119133864937e-01 + 2.661808034370396e-01 + 2.655511820876730e-01 + 2.649230457933240e-01 + 2.642963910212357e-01 + 2.636712143601993e-01 + 2.630475123173707e-01 + 2.624252813696634e-01 + 2.618045181320832e-01 + 2.611852191534089e-01 + 2.605673809346502e-01 + 2.599510000768786e-01 + 2.593360731482656e-01 + 2.587225966857610e-01 + 2.581105673020023e-01 + 2.574999816218594e-01 + 2.568908362541323e-01 + 2.562831277681717e-01 + 2.556768527608984e-01 + 2.550720078808991e-01 + 2.544685898158210e-01 + 2.538665952029344e-01 + 2.532660206235198e-01 + 2.526668627769018e-01 + 2.520691183671673e-01 + 2.514727840477828e-01 + 2.508778564832650e-01 + 2.502843323450471e-01 + 2.496922083184503e-01 + 2.491014811741685e-01 + 2.485121476502302e-01 + 2.479242043768022e-01 + 2.473376480750936e-01 + 2.467524755330193e-01 + 2.461686835577825e-01 + 2.455862688342147e-01 + 2.450052280577099e-01 + 2.444255580815592e-01 + 2.438472556710649e-01 + 2.432703175621061e-01 + 2.426947405763887e-01 + 2.421205215374063e-01 + 2.415476572469543e-01 + 2.409761444715131e-01 + 2.404059800179439e-01 + 2.398371607406130e-01 + 2.392696835287547e-01 + 2.387035451998669e-01 + 2.381387425460481e-01 + 2.375752724876774e-01 + 2.370131319015487e-01 + 2.364523176042576e-01 + 2.358928264341899e-01 + 2.353346553264918e-01 + 2.347778012643444e-01 + 2.342222610470114e-01 + 2.336680315481888e-01 + 2.331151097630285e-01 + 2.325634926002070e-01 + 2.320131769932555e-01 + 2.314641599195968e-01 + 2.309164382391606e-01 + 2.303700088852327e-01 + 2.298248689205450e-01 + 2.292810152383314e-01 + 2.287384447851956e-01 + 2.281971546639490e-01 + 2.276571417710518e-01 + 2.271184030444375e-01 + 2.265809356255705e-01 + 2.260447364485637e-01 + 2.255098024678978e-01 + 2.249761308577043e-01 + 2.244437185775247e-01 + 2.239125625576918e-01 + 2.233826599324974e-01 + 2.228540078061592e-01 + 2.223266032159731e-01 + 2.218004431318401e-01 + 2.212755246546400e-01 + 2.207518449320089e-01 + 2.202294009962271e-01 + 2.197081899542086e-01 + 2.191882089472320e-01 + 2.186694550184439e-01 + 2.181519252528444e-01 + 2.176356167922184e-01 + 2.171205268020538e-01 + 2.166066524055817e-01 + 2.160939907132310e-01 + 2.155825389406823e-01 + 2.150722942170351e-01 + 2.145632535999474e-01 + 2.140554143128364e-01 + 2.135487735713488e-01 + 2.130433285376680e-01 + 2.125390763961598e-01 + 2.120360143225986e-01 + 2.115341394866721e-01 + 2.110334491301104e-01 + 2.105339404911263e-01 + 2.100356107692428e-01 + 2.095384571593845e-01 + 2.090424768875718e-01 + 2.085476672286868e-01 + 2.080540254649787e-01 + 2.075615488420417e-01 + 2.070702345483775e-01 + 2.065800798220710e-01 + 2.060910819584345e-01 + 2.056032383022174e-01 + 2.051165461242101e-01 + 2.046310026800104e-01 + 2.041466052775261e-01 + 2.036633511978056e-01 + 2.031812377402102e-01 + 2.027002622847228e-01 + 2.022204221329609e-01 + 2.017417145657832e-01 + 2.012641369577989e-01 + 2.007876866366623e-01 + 2.003123609141739e-01 + 1.998381571847571e-01 + 1.993650728223044e-01 + 1.988931051658790e-01 + 1.984222515391579e-01 + 1.979525093566432e-01 + 1.974838760798574e-01 + 1.970163490394448e-01 + 1.965499255924087e-01 + 1.960846031634822e-01 + 1.956203792216227e-01 + 1.951572511456189e-01 + 1.946952162469976e-01 + 1.942342720345011e-01 + 1.937744160087473e-01 + 1.933156455855021e-01 + 1.928579581617409e-01 + 1.924013511601302e-01 + 1.919458220512063e-01 + 1.914913683490730e-01 + 1.910379875218400e-01 + 1.905856769690048e-01 + 1.901344342343178e-01 + 1.896842568245793e-01 + 1.892351421122624e-01 + 1.887870876905098e-01 + 1.883400911382459e-01 + 1.878941498265747e-01 + 1.874492612709913e-01 + 1.870054230608876e-01 + 1.865626327533365e-01 + 1.861208878413260e-01 + 1.856801858136446e-01 + 1.852405242290795e-01 + 1.848019006561455e-01 + 1.843643126785636e-01 + 1.839277579090688e-01 + 1.834922338318696e-01 + 1.830577379260484e-01 + 1.826242679175190e-01 + 1.821918214082343e-01 + 1.817603959062191e-01 + 1.813299890419420e-01 + 1.809005984096844e-01 + 1.804722215715290e-01 + 1.800448561676805e-01 + 1.796184998471616e-01 + 1.791931502428031e-01 + 1.787688049585256e-01 + 1.783454616010165e-01 + 1.779231178061076e-01 + 1.775017712916434e-01 + 1.770814197185338e-01 + 1.766620606643876e-01 + 1.762436917707559e-01 + 1.758263107475443e-01 + 1.754099153420786e-01 + 1.749945031691721e-01 + 1.745800718793870e-01 + 1.741666192327871e-01 + 1.737541428912765e-01 + 1.733426405128906e-01 + 1.729321098263452e-01 + 1.725225486037993e-01 + 1.721139545737653e-01 + 1.717063253659770e-01 + 1.712996586978482e-01 + 1.708939523524782e-01 + 1.704892041326627e-01 + 1.700854117308264e-01 + 1.696825728315613e-01 + 1.692806852413719e-01 + 1.688797467224855e-01 + 1.684797550119726e-01 + 1.680807078836749e-01 + 1.676826031516292e-01 + 1.672854386236076e-01 + 1.668892120257625e-01 + 1.664939211364053e-01 + 1.660995637803862e-01 + 1.657061377653481e-01 + 1.653136408872399e-01 + 1.649220709518862e-01 + 1.645314258210089e-01 + 1.641417032838678e-01 + 1.637529010922642e-01 + 1.633650171697226e-01 + 1.629780493848234e-01 + 1.625919955117979e-01 + 1.622068533722165e-01 + 1.618226208359533e-01 + 1.614392958070308e-01 + 1.610568761629498e-01 + 1.606753597398519e-01 + 1.602947443525945e-01 + 1.599150279328092e-01 + 1.595362083976419e-01 + 1.591582835876941e-01 + 1.587812513806259e-01 + 1.584051096895935e-01 + 1.580298564486488e-01 + 1.576554895336735e-01 + 1.572820068494865e-01 + 1.569094063844064e-01 + 1.565376859935812e-01 + 1.561668435389086e-01 + 1.557968770322644e-01 + 1.554277844430587e-01 + 1.550595637013555e-01 + 1.546922127252644e-01 + 1.543257294352004e-01 + 1.539601117962810e-01 + 1.535953578647676e-01 + 1.532314655336160e-01 + 1.528684326732572e-01 + 1.525062574192351e-01 + 1.521449377506904e-01 + 1.517844715391133e-01 + 1.514248568043021e-01 + 1.510660915767141e-01 + 1.507081738546517e-01 + 1.503511015850067e-01 + 1.499948728018673e-01 + 1.496394855976185e-01 + 1.492849379312514e-01 + 1.489312277844460e-01 + 1.485783532079666e-01 + 1.482263122946834e-01 + 1.478751030581660e-01 + 1.475247234388987e-01 + 1.471751715323068e-01 + 1.468264454469171e-01 + 1.464785432366154e-01 + 1.461314629165984e-01 + 1.457852025452889e-01 + 1.454397602433564e-01 + 1.450951340257908e-01 + 1.447513219420110e-01 + 1.444083221508569e-01 + 1.440661327109938e-01 + 1.437247516822454e-01 + 1.433841772072484e-01 + 1.430444073901374e-01 + 1.427054403077353e-01 + 1.423672740371242e-01 + 1.420299067307786e-01 + 1.416933365389871e-01 + 1.413575615237460e-01 + 1.410225798197031e-01 + 1.406883895901710e-01 + 1.403549889435149e-01 + 1.400223760032770e-01 + 1.396905489310608e-01 + 1.393595059398338e-01 + 1.390292451224472e-01 + 1.386997645496112e-01 + 1.383710625136722e-01 + 1.380431371824567e-01 + 1.377159866326167e-01 + 1.373896091055998e-01 + 1.370640027752214e-01 + 1.367391657592925e-01 + 1.364150963290927e-01 + 1.360917926783734e-01 + 1.357692529162330e-01 + 1.354474752994454e-01 + 1.351264580487222e-01 + 1.348061993122180e-01 + 1.344866973181728e-01 + 1.341679503229942e-01 + 1.338499565682958e-01 + 1.335327142013654e-01 + 1.332162214320106e-01 + 1.329004765902875e-01 + 1.325854779258548e-01 + 1.322712236439755e-01 + 1.319577119415115e-01 + 1.316449410589970e-01 + 1.313329092858229e-01 + 1.310216149439378e-01 + 1.307110562100912e-01 + 1.304012313067827e-01 + 1.300921386594473e-01 + 1.297837764741680e-01 + 1.294761429396481e-01 + 1.291692364743583e-01 + 1.288630553353233e-01 + 1.285575977268189e-01 + 1.282528620001082e-01 + 1.279488464604472e-01 + 1.276455493846629e-01 + 1.273429690961771e-01 + 1.270411039265308e-01 + 1.267399521912149e-01 + 1.264395121606617e-01 + 1.261397821624623e-01 + 1.258407605612416e-01 + 1.255424456647032e-01 + 1.252448358003494e-01 + 1.249479293256652e-01 + 1.246517245985584e-01 + 1.243562199440227e-01 + 1.240614136699035e-01 + 1.237673041530004e-01 + 1.234738897833225e-01 + 1.231811689369122e-01 + 1.228891399541342e-01 + 1.225978011897444e-01 + 1.223071510285007e-01 + 1.220171878485729e-01 + 1.217279100221359e-01 + 1.214393159216827e-01 + 1.211514039479249e-01 + 1.208641725134118e-01 + 1.205776200272462e-01 + 1.202917448643591e-01 + 1.200065453999493e-01 + 1.197220200388544e-01 + 1.194381672203820e-01 + 1.191549853738593e-01 + 1.188724728867774e-01 + 1.185906281982059e-01 + 1.183094497403516e-01 + 1.180289358802264e-01 + 1.177490851172322e-01 + 1.174698959467804e-01 + 1.171913666738082e-01 + 1.169134957966049e-01 + 1.166362818664215e-01 + 1.163597231976005e-01 + 1.160838182295854e-01 + 1.158085654926154e-01 + 1.155339634301463e-01 + 1.152600105152270e-01 + 1.149867052503320e-01 + 1.147140461081585e-01 + 1.144420315115333e-01 + 1.141706598827868e-01 + 1.138999297876022e-01 + 1.136298397724347e-01 + 1.133603883121320e-01 + 1.130915738073908e-01 + 1.128233947404400e-01 + 1.125558496925181e-01 + 1.122889371862514e-01 + 1.120226557224089e-01 + 1.117570037925019e-01 + 1.114919798574519e-01 + 1.112275824488763e-01 + 1.109638101830490e-01 + 1.107006615250319e-01 + 1.104381349837027e-01 + 1.101762291935612e-01 + 1.099149425817940e-01 + 1.096542736337556e-01 + 1.093942210611990e-01 + 1.091347833750166e-01 + 1.088759590309823e-01 + 1.086177465849946e-01 + 1.083601446468375e-01 + 1.081031518187680e-01 + 1.078467666394599e-01 + 1.075909876365943e-01 + 1.073358133695979e-01 + 1.070812424691808e-01 + 1.068272734935852e-01 + 1.065739049762412e-01 + 1.063211355273724e-01 + 1.060689637753818e-01 + 1.058173883167701e-01 + 1.055664076522099e-01 + 1.053160204177178e-01 + 1.050662253083730e-01 + 1.048170208178578e-01 + 1.045684055544151e-01 + 1.043203782231123e-01 + 1.040729373745031e-01 + 1.038260815947437e-01 + 1.035798095388146e-01 + 1.033341198496129e-01 + 1.030890111353506e-01 + 1.028444819874746e-01 + 1.026005310752415e-01 + 1.023571570589419e-01 + 1.021143585605686e-01 + 1.018721342063349e-01 + 1.016304826397723e-01 + 1.013894025261397e-01 + 1.011488925387934e-01 + 1.009089513225976e-01 + 1.006695774897203e-01 + 1.004307697412456e-01 + 1.001925267601519e-01 + 9.995484714928184e-02 + 9.971772961029543e-02 + 9.948117285600222e-02 + 9.924517553207431e-02 + 9.900973631553432e-02 + 9.877485389836264e-02 + 9.854052696321766e-02 + 9.830675420513860e-02 + 9.807353432053509e-02 + 9.784086599274402e-02 + 9.760874792461041e-02 + 9.737717882679013e-02 + 9.714615739564664e-02 + 9.691568233864475e-02 + 9.668575237168565e-02 + 9.645636620785530e-02 + 9.622752256709627e-02 + 9.599922017186617e-02 + 9.577145773476621e-02 + 9.554423398421420e-02 + 9.531754766036228e-02 + 9.509139748951084e-02 + 9.486578220406576e-02 + 9.464070054491446e-02 + 9.441615125061270e-02 + 9.419213306609350e-02 + 9.396864474309072e-02 + 9.374568502973517e-02 + 9.352325267700241e-02 + 9.330134644110695e-02 + 9.307996508088016e-02 + 9.285910736057421e-02 + 9.263877204899980e-02 + 9.241895790580944e-02 + 9.219966369924239e-02 + 9.198088821288498e-02 + 9.176263021506216e-02 + 9.154488848131032e-02 + 9.132766180778470e-02 + 9.111094897456264e-02 + 9.089474876186458e-02 + 9.067905996494766e-02 + 9.046388137755315e-02 + 9.024921179550818e-02 + 9.003505002157913e-02 + 8.982139485394958e-02 + 8.960824509461397e-02 + 8.939559956013639e-02 + 8.918345705664489e-02 + 8.897181638949078e-02 + 8.876067638185769e-02 + 8.855003585659860e-02 + 8.833989363307079e-02 + 8.813024852794749e-02 + 8.792109937217552e-02 + 8.771244500411417e-02 + 8.750428424959714e-02 + 8.729661594151820e-02 + 8.708943892038122e-02 + 8.688275202450782e-02 + 8.667655409894154e-02 + 8.647084399500883e-02 + 8.626562056133152e-02 + 8.606088264727801e-02 + 8.585662910508592e-02 + 8.565285879275303e-02 + 8.544957056834111e-02 + 8.524676329099723e-02 + 8.504443583456130e-02 + 8.484258706983651e-02 + 8.464121585953427e-02 + 8.444032107793580e-02 + 8.423990160173883e-02 + 8.403995630660985e-02 + 8.384048408000297e-02 + 8.364148380739438e-02 + 8.344295436518863e-02 + 8.324489464319758e-02 + 8.304730353631981e-02 + 8.285017993778075e-02 + 8.265352274723796e-02 + 8.245733086610936e-02 + 8.226160319325253e-02 + 8.206633863307464e-02 + 8.187153609323948e-02 + 8.167719448173898e-02 + 8.148331271120264e-02 + 8.128988969775824e-02 + 8.109692435907066e-02 + 8.090441561287741e-02 + 8.071236238052074e-02 + 8.052076359329230e-02 + 8.032961817777003e-02 + 8.013892505875637e-02 + 7.994868317110082e-02 + 7.975889145271257e-02 + 7.956954884117817e-02 + 7.938065427030368e-02 + 7.919220668490153e-02 + 7.900420503735811e-02 + 7.881664826626886e-02 + 7.862953532075569e-02 + 7.844286516277023e-02 + 7.825663674598571e-02 + 7.807084902471831e-02 + 7.788550095723919e-02 + 7.770059150356423e-02 + 7.751611963202924e-02 + 7.733208431808952e-02 + 7.714848452080215e-02 + 7.696531920714285e-02 + 7.678258736267791e-02 + 7.660028796508990e-02 + 7.641841999039113e-02 + 7.623698241865759e-02 + 7.605597423593993e-02 + 7.587539442823407e-02 + 7.569524197859213e-02 + 7.551551588287067e-02 + 7.533621514035872e-02 + 7.515733874432233e-02 + 7.497888568830134e-02 + 7.480085497230264e-02 + 7.462324560850588e-02 + 7.444605660139321e-02 + 7.426928695221670e-02 + 7.409293566891996e-02 + 7.391700176673981e-02 + 7.374148426439617e-02 + 7.356638217848553e-02 + 7.339169452681224e-02 + 7.321742033027905e-02 + 7.304355861552074e-02 + 7.287010840815517e-02 + 7.269706873346385e-02 + 7.252443862192341e-02 + 7.235221710900047e-02 + 7.218040323296335e-02 + 7.200899602923243e-02 + 7.183799453782064e-02 + 7.166739780328910e-02 + 7.149720486628935e-02 + 7.132741477295296e-02 + 7.115802657678706e-02 + 7.098903933028558e-02 + 7.082045208266741e-02 + 7.065226388294948e-02 + 7.048447379884398e-02 + 7.031708089501212e-02 + 7.015008422428966e-02 + 6.998348285005500e-02 + 6.981727584178653e-02 + 6.965146227138255e-02 + 6.948604121024822e-02 + 6.932101172952453e-02 + 6.915637290177927e-02 + 6.899212381049466e-02 + 6.882826353831664e-02 + 6.866479115768206e-02 + 6.850170575553913e-02 + 6.833900642241270e-02 + 6.817669223943085e-02 + 6.801476230171261e-02 + 6.785321570853013e-02 + 6.769205154760372e-02 + 6.753126891476798e-02 + 6.737086691265436e-02 + 6.721084464422118e-02 + 6.705120121123045e-02 + 6.689193571639933e-02 + 6.673304726820108e-02 + 6.657453497707803e-02 + 6.641639795452120e-02 + 6.625863531334618e-02 + 6.610124617104705e-02 + 6.594422964866814e-02 + 6.578758486543299e-02 + 6.563131094165708e-02 + 6.547540700031643e-02 + 6.531987216906585e-02 + 6.516470557837332e-02 + 6.500990635997374e-02 + 6.485547364331327e-02 + 6.470140656204018e-02 + 6.454770425495959e-02 + 6.439436585565442e-02 + 6.424139050518185e-02 + 6.408877735587415e-02 + 6.393652554954243e-02 + 6.378463422860429e-02 + 6.363310254304622e-02 + 6.348192964216136e-02 + 6.333111467891862e-02 + 6.318065681259971e-02 + 6.303055519506789e-02 + 6.288080898167979e-02 + 6.273141734118348e-02 + 6.258237943694549e-02 + 6.243369443027962e-02 + 6.228536148636779e-02 + 6.213737977420020e-02 + 6.198974846629291e-02 + 6.184246673830131e-02 + 6.169553375986874e-02 + 6.154894870195880e-02 + 6.140271075002260e-02 + 6.125681908485271e-02 + 6.111127288458502e-02 + 6.096607133498923e-02 + 6.082121362330186e-02 + 6.067669893778977e-02 + 6.053252647002724e-02 + 6.038869541057570e-02 + 6.024520494995262e-02 + 6.010205428441878e-02 + 5.995924261312039e-02 + 5.981676913606451e-02 + 5.967463305068377e-02 + 5.953283356000520e-02 + 5.939136987405440e-02 + 5.925024120274393e-02 + 5.910944675075109e-02 + 5.896898572024133e-02 + 5.882885733338872e-02 + 5.868906080796419e-02 + 5.854959534943303e-02 + 5.841046018167366e-02 + 5.827165452667381e-02 + 5.813317759547484e-02 + 5.799502862000658e-02 + 5.785720683145133e-02 + 5.771971144629215e-02 + 5.758254169802959e-02 + 5.744569682168989e-02 + 5.730917604038396e-02 + 5.717297859181381e-02 + 5.703710371771920e-02 + 5.690155065150715e-02 + 5.676631863514842e-02 + 5.663140691176988e-02 + 5.649681471550019e-02 + 5.636254129818796e-02 + 5.622858591623749e-02 + 5.609494780637568e-02 + 5.596162621719655e-02 + 5.582862040612746e-02 + 5.569592962469259e-02 + 5.556355312969728e-02 + 5.543149018219354e-02 + 5.529974004038473e-02 + 5.516830196534387e-02 + 5.503717522021812e-02 + 5.490635906464716e-02 + 5.477585276550550e-02 + 5.464565559606692e-02 + 5.451576682310098e-02 + 5.438618571514530e-02 + 5.425691154653305e-02 + 5.412794360021059e-02 + 5.399928115030668e-02 + 5.387092346220070e-02 + 5.374286982722595e-02 + 5.361511953114147e-02 + 5.348767184376742e-02 + 5.336052605560348e-02 + 5.323368145967647e-02 + 5.310713734132736e-02 + 5.298089299097181e-02 + 5.285494769998652e-02 + 5.272930075794034e-02 + 5.260395145882699e-02 + 5.247889910164562e-02 + 5.235414299012888e-02 + 5.222968242359068e-02 + 5.210551670083303e-02 + 5.198164512479836e-02 + 5.185806699751586e-02 + 5.173478162567831e-02 + 5.161178832737659e-02 + 5.148908640731603e-02 + 5.136667516904735e-02 + 5.124455393713079e-02 + 5.112272202541198e-02 + 5.100117874145336e-02 + 5.087992340415878e-02 + 5.075895533879782e-02 + 5.063827387090040e-02 + 5.051787831631814e-02 + 5.039776799903027e-02 + 5.027794224956293e-02 + 5.015840039018700e-02 + 5.003914174911826e-02 + 4.992016566217095e-02 + 4.980147146451835e-02 + 4.968305848565534e-02 + 4.956492605368701e-02 + 4.944707351707827e-02 + 4.932950021762891e-02 + 4.921220548403189e-02 + 4.909518865563611e-02 + 4.897844908008390e-02 + 4.886198610990230e-02 + 4.874579909103274e-02 + 4.862988736593407e-02 + 4.851425027765261e-02 + 4.839888718215429e-02 + 4.828379743688660e-02 + 4.816898039344981e-02 + 4.805443540666063e-02 + 4.794016183433197e-02 + 4.782615903628512e-02 + 4.771242637003347e-02 + 4.759896319572905e-02 + 4.748576888074151e-02 + 4.737284278529100e-02 + 4.726018427180961e-02 + 4.714779271742187e-02 + 4.703566749191604e-02 + 4.692380796083007e-02 + 4.681221349433169e-02 + 4.670088346648602e-02 + 4.658981725459431e-02 + 4.647901423861556e-02 + 4.636847379587147e-02 + 4.625819530165282e-02 + 4.614817813294777e-02 + 4.603842167462240e-02 + 4.592892531626435e-02 + 4.581968844113481e-02 + 4.571071043517037e-02 + 4.560199068716930e-02 + 4.549352858172214e-02 + 4.538532351139604e-02 + 4.527737487551017e-02 + 4.516968206047602e-02 + 4.506224446147816e-02 + 4.495506148526871e-02 + 4.484813252205796e-02 + 4.474145696749865e-02 + 4.463503423038843e-02 + 4.452886371233129e-02 + 4.442294481444441e-02 + 4.431727694184067e-02 + 4.421185950249874e-02 + 4.410669190344264e-02 + 4.400177354999718e-02 + 4.389710385863231e-02 + 4.379268224561385e-02 + 4.368850811842072e-02 + 4.358458089102907e-02 + 4.348089998166713e-02 + 4.337746480946211e-02 + 4.327427479290449e-02 + 4.317132935104961e-02 + 4.306862790538591e-02 + 4.296616988021409e-02 + 4.286395470044128e-02 + 4.276198178905291e-02 + 4.266025057462805e-02 + 4.255876048879523e-02 + 4.245751096050290e-02 + 4.235650142249979e-02 + 4.225573130868781e-02 + 4.215520004666404e-02 + 4.205490707118502e-02 + 4.195485182346907e-02 + 4.185503374212908e-02 + 4.175545226547943e-02 + 4.165610683241490e-02 + 4.155699688308426e-02 + 4.145812186261490e-02 + 4.135948121993713e-02 + 4.126107439911159e-02 + 4.116290084444992e-02 + 4.106496000347922e-02 + 4.096725133001662e-02 + 4.086977427671171e-02 + 4.077252829257245e-02 + 4.067551282880393e-02 + 4.057872734137224e-02 + 4.048217129089726e-02 + 4.038584413229004e-02 + 4.028974532214836e-02 + 4.019387432351806e-02 + 4.009823059884492e-02 + 4.000281360871143e-02 + 3.990762281263916e-02 + 3.981265768084040e-02 + 3.971791768404272e-02 + 3.962340228400397e-02 + 3.952911094818634e-02 + 3.943504314911767e-02 + 3.934119836154264e-02 + 3.924757605343093e-02 + 3.915417569553582e-02 + 3.906099677494528e-02 + 3.896803876462888e-02 + 3.887530113159737e-02 + 3.878278335807980e-02 + 3.869048493136602e-02 + 3.859840533540703e-02 + 3.850654403935494e-02 + 3.841490053099362e-02 + 3.832347430867683e-02 + 3.823226484521238e-02 + 3.814127162485314e-02 + 3.805049414568009e-02 + 3.795993189727254e-02 + 3.786958436838804e-02 + 3.777945104950908e-02 + 3.768953143238456e-02 + 3.759982501241896e-02 + 3.751033128919119e-02 + 3.742104976390229e-02 + 3.733197993101921e-02 + 3.724312127956968e-02 + 3.715447331892652e-02 + 3.706603555538170e-02 + 3.697780748276271e-02 + 3.688978860838169e-02 + 3.680197844047203e-02 + 3.671437648083043e-02 + 3.662698223859462e-02 + 3.653979522528233e-02 + 3.645281495050149e-02 + 3.636604092401768e-02 + 3.627947265609178e-02 + 3.619310965841749e-02 + 3.610695145022991e-02 + 3.602099755007137e-02 + 3.593524746722872e-02 + 3.584970072102484e-02 + 3.576435683502647e-02 + 3.567921532660211e-02 + 3.559427571435374e-02 + 3.550953752116312e-02 + 3.542500027693078e-02 + 3.534066350384148e-02 + 3.525652672170999e-02 + 3.517258946309138e-02 + 3.508885125628003e-02 + 3.500531162678291e-02 + 3.492197010940873e-02 + 3.483882623525817e-02 + 3.475587953263527e-02 + 3.467312953919303e-02 + 3.459057578876406e-02 + 3.450821781198862e-02 + 3.442605515251815e-02 + 3.434408734999198e-02 + 3.426231393723483e-02 + 3.418073445581654e-02 + 3.409934844816886e-02 + 3.401815545480084e-02 + 3.393715501912345e-02 + 3.385634668688416e-02 + 3.377573000557660e-02 + 3.369530452244349e-02 + 3.361506978424043e-02 + 3.353502533757853e-02 + 3.345517073173793e-02 + 3.337550551749302e-02 + 3.329602924688495e-02 + 3.321674147756795e-02 + 3.313764176353938e-02 + 3.305872964905672e-02 + 3.298000469915312e-02 + 3.290146647870388e-02 + 3.282311452928582e-02 + 3.274494841443989e-02 + 3.266696770524984e-02 + 3.258917195579586e-02 + 3.251156072835543e-02 + 3.243413358906379e-02 + 3.235689009597382e-02 + 3.227982981604406e-02 + 3.220295232152501e-02 + 3.212625717796667e-02 + 3.204974395335523e-02 + 3.197341221860803e-02 + 3.189726154412311e-02 + 3.182129149811844e-02 + 3.174550164996338e-02 + 3.166989158019418e-02 + 3.159446086552403e-02 + 3.151920907660396e-02 + 3.144413578635114e-02 + 3.136924057603768e-02 + 3.129452303273958e-02 + 3.121998273049806e-02 + 3.114561924523454e-02 + 3.107143216011856e-02 + 3.099742105799270e-02 + 3.092358552474080e-02 + 3.084992514925186e-02 + 3.077643951122557e-02 + 3.070312819305190e-02 + 3.062999078663620e-02 + 3.055702688363699e-02 + 3.048423607160382e-02 + 3.041161793396379e-02 + 3.033917207015753e-02 + 3.026689807846873e-02 + 3.019479554128978e-02 + 3.012286404982057e-02 + 3.005110320361238e-02 + 2.997951260681279e-02 + 2.990809185255966e-02 + 2.983684053226568e-02 + 2.976575824919644e-02 + 2.969484460522792e-02 + 2.962409920087884e-02 + 2.955352163824170e-02 + 2.948311151647172e-02 + 2.941286843696999e-02 + 2.934279201383451e-02 + 2.927288185012002e-02 + 2.920313754405053e-02 + 2.913355871301240e-02 + 2.906414496442064e-02 + 2.899489589842786e-02 + 2.892581113440367e-02 + 2.885689028447655e-02 + 2.878813295173805e-02 + 2.871953875071393e-02 + 2.865110730129668e-02 + 2.858283822298987e-02 + 2.851473112218837e-02 + 2.844678561226344e-02 + 2.837900131834860e-02 + 2.831137785774055e-02 + 2.824391484910513e-02 + 2.817661191561155e-02 + 2.810946867322990e-02 + 2.804248474261467e-02 + 2.797565975421473e-02 + 2.790899332866750e-02 + 2.784248508684310e-02 + 2.777613465729838e-02 + 2.770994166752542e-02 + 2.764390574354870e-02 + 2.757802651096095e-02 + 2.751230360164656e-02 + 2.744673664902718e-02 + 2.738132528259552e-02 + 2.731606912935157e-02 + 2.725096782054994e-02 + 2.718602099881922e-02 + 2.712122829441404e-02 + 2.705658933533107e-02 + 2.699210376654040e-02 + 2.692777122629619e-02 + 2.686359134766074e-02 + 2.679956376855050e-02 + 2.673568813034148e-02 + 2.667196407449100e-02 + 2.660839123653040e-02 + 2.654496925932325e-02 + 2.648169779209303e-02 + 2.641857647953893e-02 + 2.635560496230991e-02 + 2.629278288047702e-02 + 2.623010988365326e-02 + 2.616758562366618e-02 + 2.610520975031933e-02 + 2.604298190560967e-02 + 2.598090173551063e-02 + 2.591896889422694e-02 + 2.585718303968204e-02 + 2.579554382343284e-02 + 2.573405088890056e-02 + 2.567270388987125e-02 + 2.561150248485746e-02 + 2.555044633271165e-02 + 2.548953508798725e-02 + 2.542876840653832e-02 + 2.536814594843316e-02 + 2.530766736730480e-02 + 2.524733231969847e-02 + 2.518714047250964e-02 + 2.512709148651639e-02 + 2.506718502244662e-02 + 2.500742074738894e-02 + 2.494779831751132e-02 + 2.488831739145854e-02 + 2.482897764751662e-02 + 2.476977875068464e-02 + 2.471072035836960e-02 + 2.465180213557270e-02 + 2.459302375909131e-02 + 2.453438490494015e-02 + 2.447588522684439e-02 + 2.441752439632618e-02 + 2.435930209686822e-02 + 2.430121799563831e-02 + 2.424327176191257e-02 + 2.418546306971884e-02 + 2.412779159320392e-02 + 2.407025701015483e-02 + 2.401285899981317e-02 + 2.395559723318545e-02 + 2.389847138352894e-02 + 2.384148113010493e-02 + 2.378462615809818e-02 + 2.372790614977233e-02 + 2.367132078182184e-02 + 2.361486973012364e-02 + 2.355855267628842e-02 + 2.350236930912776e-02 + 2.344631931433045e-02 + 2.339040237260871e-02 + 2.333461816188979e-02 + 2.327896637661412e-02 + 2.322344670789084e-02 + 2.316805883183489e-02 + 2.311280243515378e-02 + 2.305767721100430e-02 + 2.300268285332459e-02 + 2.294781904779433e-02 + 2.289308548135576e-02 + 2.283848185163481e-02 + 2.278400785322520e-02 + 2.272966317657758e-02 + 2.267544750906289e-02 + 2.262136054576819e-02 + 2.256740198705395e-02 + 2.251357153295969e-02 + 2.245986887460843e-02 + 2.240629370372433e-02 + 2.235284572997816e-02 + 2.229952464835474e-02 + 2.224633014749699e-02 + 2.219326193897085e-02 + 2.214031972536749e-02 + 2.208750320104361e-02 + 2.203481207216736e-02 + 2.198224604054712e-02 + 2.192980480490446e-02 + 2.187748807809197e-02 + 2.182529556587840e-02 + 2.177322696546572e-02 + 2.172128198614426e-02 + 2.166946034002218e-02 + 2.161776173674180e-02 + 2.156618587797776e-02 + 2.151473246970182e-02 + 2.146340122648612e-02 + 2.141219186176581e-02 + 2.136110408595206e-02 + 2.131013760699968e-02 + 2.125929213929720e-02 + 2.120856739943827e-02 + 2.115796310282077e-02 + 2.110747896148574e-02 + 2.105711468773744e-02 + 2.100686999708853e-02 + 2.095674460640470e-02 + 2.090673823470377e-02 + 2.085685060390323e-02 + 2.080708143284909e-02 + 2.075743043865024e-02 + 2.070789733896461e-02 + 2.065848185338519e-02 + 2.060918370358626e-02 + 2.056000261352416e-02 + 2.051093830731156e-02 + 2.046199050841276e-02 + 2.041315893918832e-02 + 2.036444332670061e-02 + 2.031584339811113e-02 + 2.026735887003067e-02 + 2.021898947028043e-02 + 2.017073493461869e-02 + 2.012259498752183e-02 + 2.007456935661649e-02 + 2.002665777297167e-02 + 1.997885996051357e-02 + 1.993117564943755e-02 + 1.988360457741823e-02 + 1.983614647798445e-02 + 1.978880107994216e-02 + 1.974156811085027e-02 + 1.969444731166336e-02 + 1.964743841723802e-02 + 1.960054115227784e-02 + 1.955375525837354e-02 + 1.950708047707909e-02 + 1.946051654129042e-02 + 1.941406318497287e-02 + 1.936772014474174e-02 + 1.932148716119990e-02 + 1.927536398140690e-02 + 1.922935034564512e-02 + 1.918344598004621e-02 + 1.913765063001423e-02 + 1.909196404425976e-02 + 1.904638595925336e-02 + 1.900091612254435e-02 + 1.895555428061772e-02 + 1.891030016469744e-02 + 1.886515352637163e-02 + 1.882011411999479e-02 + 1.877518167521970e-02 + 1.873035594232305e-02 + 1.868563668110157e-02 + 1.864102363246424e-02 + 1.859651653826993e-02 + 1.855211514697215e-02 + 1.850781921692858e-02 + 1.846362849811174e-02 + 1.841954273425713e-02 + 1.837556167722399e-02 + 1.833168508274460e-02 + 1.828791270638760e-02 + 1.824424429587613e-02 + 1.820067960186819e-02 + 1.815721838079814e-02 + 1.811386039242822e-02 + 1.807060539155448e-02 + 1.802745312809132e-02 + 1.798440336027523e-02 + 1.794145584667328e-02 + 1.789861034396235e-02 + 1.785586661445831e-02 + 1.781322441713358e-02 + 1.777068350457842e-02 + 1.772824363606736e-02 + 1.768590457480606e-02 + 1.764366608520215e-02 + 1.760152792777148e-02 + 1.755948986314423e-02 + 1.751755165530868e-02 + 1.747571306959304e-02 + 1.743397386795286e-02 + 1.739233380686453e-02 + 1.735079266012027e-02 + 1.730935019969591e-02 + 1.726800617515195e-02 + 1.722676035861175e-02 + 1.718561252878033e-02 + 1.714456244423200e-02 + 1.710360987245781e-02 + 1.706275458478830e-02 + 1.702199634263978e-02 + 1.698133492251816e-02 + 1.694077010510486e-02 + 1.690030164730331e-02 + 1.685992932068962e-02 + 1.681965290804600e-02 + 1.677947217681714e-02 + 1.673938689521877e-02 + 1.669939683666028e-02 + 1.665950177991986e-02 + 1.661970150205939e-02 + 1.657999577711447e-02 + 1.654038437906895e-02 + 1.650086708478969e-02 + 1.646144367321789e-02 + 1.642211391798679e-02 + 1.638287759543946e-02 + 1.634373448754158e-02 + 1.630468437732129e-02 + 1.626572704186934e-02 + 1.622686225251448e-02 + 1.618808979718675e-02 + 1.614940946170872e-02 + 1.611082101996680e-02 + 1.607232425440962e-02 + 1.603391895041710e-02 + 1.599560489122978e-02 + 1.595738185903658e-02 + 1.591924963852954e-02 + 1.588120801872957e-02 + 1.584325677844977e-02 + 1.580539569909259e-02 + 1.576762457813194e-02 + 1.572994319938502e-02 + 1.569235134492561e-02 + 1.565484881311209e-02 + 1.561743538476679e-02 + 1.558011083839993e-02 + 1.554287497958433e-02 + 1.550572759639263e-02 + 1.546866846769255e-02 + 1.543169739218311e-02 + 1.539481416304957e-02 + 1.535801856691179e-02 + 1.532131039389481e-02 + 1.528468944222785e-02 + 1.524815551153465e-02 + 1.521170838270258e-02 + 1.517534784896265e-02 + 1.513907371629201e-02 + 1.510288577422132e-02 + 1.506678381600347e-02 + 1.503076764230081e-02 + 1.499483704594779e-02 + 1.495899182406707e-02 + 1.492323178010325e-02 + 1.488755670734373e-02 + 1.485196640180961e-02 + 1.481646066682016e-02 + 1.478103929846549e-02 + 1.474570209596410e-02 + 1.471044886603309e-02 + 1.467527940456368e-02 + 1.464019351058384e-02 + 1.460519099481427e-02 + 1.457027165550810e-02 + 1.453543528903122e-02 + 1.450068170024789e-02 + 1.446601069487559e-02 + 1.443142207965322e-02 + 1.439691566271563e-02 + 1.436249124410753e-02 + 1.432814862414793e-02 + 1.429388761459182e-02 + 1.425970802314729e-02 + 1.422560965483165e-02 + 1.419159231701311e-02 + 1.415765581387266e-02 + 1.412379995194592e-02 + 1.409002455116132e-02 + 1.405632941792580e-02 + 1.402271435207008e-02 + 1.398917917303820e-02 + 1.395572369124169e-02 + 1.392234770932106e-02 + 1.388905104392205e-02 + 1.385583350997071e-02 + 1.382269491788422e-02 + 1.378963507987753e-02 + 1.375665380791922e-02 + 1.372375091366015e-02 + 1.369092621121959e-02 + 1.365817951715469e-02 + 1.362551064978645e-02 + 1.359291942581090e-02 + 1.356040565686591e-02 + 1.352796915179558e-02 + 1.349560973812908e-02 + 1.346332723540702e-02 + 1.343112144483463e-02 + 1.339899219360082e-02 + 1.336693930891053e-02 + 1.333496260043193e-02 + 1.330306188734133e-02 + 1.327123699224855e-02 + 1.323948773476910e-02 + 1.320781393642416e-02 + 1.317621541705235e-02 + 1.314469199166208e-02 + 1.311324348463446e-02 + 1.308186972415766e-02 + 1.305057053367403e-02 + 1.301934573289238e-02 + 1.298819514247371e-02 + 1.295711859027024e-02 + 1.292611590142988e-02 + 1.289518689817567e-02 + 1.286433140253433e-02 + 1.283354924175516e-02 + 1.280284024626999e-02 + 1.277220424320462e-02 + 1.274164105512193e-02 + 1.271115050454398e-02 + 1.268073242580564e-02 + 1.265038664885281e-02 + 1.262011299771964e-02 + 1.258991130045622e-02 + 1.255978138928737e-02 + 1.252972309744999e-02 + 1.249973624798444e-02 + 1.246982067106488e-02 + 1.243997620568067e-02 + 1.241020267461013e-02 + 1.238049990730756e-02 + 1.235086774662455e-02 + 1.232130602051964e-02 + 1.229181455798258e-02 + 1.226239319685087e-02 + 1.223304176770951e-02 + 1.220376010347082e-02 + 1.217454804486660e-02 + 1.214540542341299e-02 + 1.211633207079968e-02 + 1.208732782681391e-02 + 1.205839252771904e-02 + 1.202952600673308e-02 + 1.200072809652295e-02 + 1.197199864009422e-02 + 1.194333748171596e-02 + 1.191474445503102e-02 + 1.188621939116683e-02 + 1.185776212675846e-02 + 1.182937251288597e-02 + 1.180105038815069e-02 + 1.177279558400601e-02 + 1.174460794107161e-02 + 1.171648730396891e-02 + 1.168843351609301e-02 + 1.166044641171630e-02 + 1.163252583370262e-02 + 1.160467163102319e-02 + 1.157688364263099e-02 + 1.154916170933044e-02 + 1.152150567570712e-02 + 1.149391538555893e-02 + 1.146639068095789e-02 + 1.143893140447911e-02 + 1.141153740781534e-02 + 1.138420853673168e-02 + 1.135694462854312e-02 + 1.132974552839056e-02 + 1.130261108533809e-02 + 1.127554114921167e-02 + 1.124853556496432e-02 + 1.122159417997002e-02 + 1.119471684585664e-02 + 1.116790340283271e-02 + 1.114115369710312e-02 + 1.111446758944324e-02 + 1.108784492177717e-02 + 1.106128553754357e-02 + 1.103478929728668e-02 + 1.100835604711145e-02 + 1.098198563223047e-02 + 1.095567791133747e-02 + 1.092943273475230e-02 + 1.090324994987072e-02 + 1.087712940981543e-02 + 1.085107096608238e-02 + 1.082507447053145e-02 + 1.079913977931768e-02 + 1.077326674497864e-02 + 1.074745521859533e-02 + 1.072170505538783e-02 + 1.069601611066200e-02 + 1.067038823886727e-02 + 1.064482129354728e-02 + 1.061931513219808e-02 + 1.059386961330933e-02 + 1.056848458681972e-02 + 1.054315990640127e-02 + 1.051789543133304e-02 + 1.049269102209236e-02 + 1.046754653920045e-02 + 1.044246184044743e-02 + 1.041743677288729e-02 + 1.039247119540387e-02 + 1.036756497988909e-02 + 1.034271797805630e-02 + 1.031793004647734e-02 + 1.029320105343422e-02 + 1.026853085073464e-02 + 1.024391929539164e-02 + 1.021936625852857e-02 + 1.019487159885800e-02 + 1.017043517132599e-02 + 1.014605683522427e-02 + 1.012173646293816e-02 + 1.009747392058842e-02 + 1.007326905588179e-02 + 1.004912173629082e-02 + 1.002503183346208e-02 + 1.000099920653610e-02 + 9.977023717087764e-03 + 9.953105229386335e-03 + 9.929243608872406e-03 + 9.905438720973011e-03 + 9.881690430827046e-03 + 9.857998603258316e-03 + 9.834363104786413e-03 + 9.810783802355094e-03 + 9.787260560990621e-03 + 9.763793247942843e-03 + 9.740381731591760e-03 + 9.717025877967826e-03 + 9.693725554510663e-03 + 9.670480630152000e-03 + 9.647290973567844e-03 + 9.624156453317901e-03 + 9.601076938062841e-03 + 9.578052297039983e-03 + 9.555082399653962e-03 + 9.532167115690399e-03 + 9.509306316445141e-03 + 9.486499872512266e-03 + 9.463747653553711e-03 + 9.441049530896879e-03 + 9.418405376662433e-03 + 9.395815063104617e-03 + 9.373278461427175e-03 + 9.350795443499088e-03 + 9.328365882617906e-03 + 9.305989651970981e-03 + 9.283666624824176e-03 + 9.261396674723778e-03 + 9.239179675408710e-03 + 9.217015500757821e-03 + 9.194904024947497e-03 + 9.172845123632957e-03 + 9.150838672277813e-03 + 9.128884544858834e-03 + 9.106982617538152e-03 + 9.085132766987650e-03 + 9.063334868396023e-03 + 9.041588798714301e-03 + 9.019894435479832e-03 + 8.998251654894885e-03 + 8.976660334271958e-03 + 8.955120351755344e-03 + 8.933631585369030e-03 + 8.912193913264732e-03 + 8.890807213885918e-03 + 8.869471366214972e-03 + 8.848186249259440e-03 + 8.826951742251321e-03 + 8.805767725383001e-03 + 8.784634078744540e-03 + 8.763550682317645e-03 + 8.742517416743529e-03 + 8.721534162832835e-03 + 8.700600801502468e-03 + 8.679717214101214e-03 + 8.658883282492529e-03 + 8.638098888885700e-03 + 8.617363915025602e-03 + 8.596678243443276e-03 + 8.576041757693640e-03 + 8.555454340593486e-03 + 8.534915875110577e-03 + 8.514426244844865e-03 + 8.493985333674233e-03 + 8.473593025909724e-03 + 8.453249206335058e-03 + 8.432953759374154e-03 + 8.412706569850796e-03 + 8.392507523503252e-03 + 8.372356505624580e-03 + 8.352253401838657e-03 + 8.332198098800467e-03 + 8.312190482450988e-03 + 8.292230438871008e-03 + 8.272317855399050e-03 + 8.252452619663047e-03 + 8.232634619050869e-03 + 8.212863740331295e-03 + 8.193139871755427e-03 + 8.173462902270600e-03 + 8.153832719956143e-03 + 8.134249213438031e-03 + 8.114712271802299e-03 + 8.095221784035302e-03 + 8.075777639824947e-03 + 8.056379729417138e-03 + 8.037027942938956e-03 + 8.017722170154111e-03 + 7.998462301028743e-03 + 7.979248227381455e-03 + 7.960079840401237e-03 + 7.940957030626293e-03 + 7.921879690329333e-03 + 7.902847711453821e-03 + 7.883860985421759e-03 + 7.864919405368889e-03 + 7.846022864037674e-03 + 7.827171253341911e-03 + 7.808364466777525e-03 + 7.789602397948123e-03 + 7.770884940051978e-03 + 7.752211987488857e-03 + 7.733583434567862e-03 + 7.714999174963997e-03 + 7.696459103766686e-03 + 7.677963116338556e-03 + 7.659511107448910e-03 + 7.641102971817726e-03 + 7.622738605046243e-03 + 7.604417904226960e-03 + 7.586140765207791e-03 + 7.567907083543369e-03 + 7.549716755813157e-03 + 7.531569679511053e-03 + 7.513465752109027e-03 + 7.495404870064185e-03 + 7.477386931039745e-03 + 7.459411833357052e-03 + 7.441479474804043e-03 + 7.423589753808636e-03 + 7.405742569108545e-03 + 7.387937818890154e-03 + 7.370175402616828e-03 + 7.352455220325825e-03 + 7.334777170378787e-03 + 7.317141152312192e-03 + 7.299547066866589e-03 + 7.281994814230038e-03 + 7.264484294760120e-03 + 7.247015409129196e-03 + 7.229588058070396e-03 + 7.212202142721502e-03 + 7.194857564639825e-03 + 7.177554225359851e-03 + 7.160292026920549e-03 + 7.143070871828701e-03 + 7.125890661781023e-03 + 7.108751299151369e-03 + 7.091652687463649e-03 + 7.074594729473165e-03 + 7.057577328092346e-03 + 7.040600386920140e-03 + 7.023663809440293e-03 + 7.006767499621119e-03 + 6.989911362283671e-03 + 6.973095301761098e-03 + 6.956319222246642e-03 + 6.939583028242014e-03 + 6.922886624933184e-03 + 6.906229917977133e-03 + 6.889612813237578e-03 + 6.873035215956658e-03 + 6.856497031627250e-03 + 6.839998167124653e-03 + 6.823538528849983e-03 + 6.807118022950776e-03 + 6.790736556102037e-03 + 6.774394036012678e-03 + 6.758090370503938e-03 + 6.741825465874382e-03 + 6.725599229831710e-03 + 6.709411571076730e-03 + 6.693262397262002e-03 + 6.677151616823099e-03 + 6.661079138883049e-03 + 6.645044871881905e-03 + 6.629048724424302e-03 + 6.613090605727208e-03 + 6.597170426169362e-03 + 6.581288095176429e-03 + 6.565443521393368e-03 + 6.549636616015259e-03 + 6.533867289690503e-03 + 6.518135451870410e-03 + 6.502441013826720e-03 + 6.486783886693610e-03 + 6.471163980906190e-03 + 6.455581208648475e-03 + 6.440035481784445e-03 + 6.424526710952946e-03 + 6.409054808194274e-03 + 6.393619686148648e-03 + 6.378221257389647e-03 + 6.362859434216829e-03 + 6.347534129405275e-03 + 6.332245256702231e-03 + 6.316992728926398e-03 + 6.301776458848883e-03 + 6.286596360249587e-03 + 6.271452347303485e-03 + 6.256344334335297e-03 + 6.241272235637497e-03 + 6.226235965289892e-03 + 6.211235437617355e-03 + 6.196270567881593e-03 + 6.181341271239764e-03 + 6.166447462747857e-03 + 6.151589057705613e-03 + 6.136765971896623e-03 + 6.121978121401951e-03 + 6.107225422158738e-03 + 6.092507790132517e-03 + 6.077825141615326e-03 + 6.063177393866219e-03 + 6.048564463915550e-03 + 6.033986268442907e-03 + 6.019442724444331e-03 + 6.004933749322879e-03 + 5.990459260846786e-03 + 5.976019176895193e-03 + 5.961613415583682e-03 + 5.947241895231883e-03 + 5.932904533953020e-03 + 5.918601250164555e-03 + 5.904331962789744e-03 + 5.890096590861083e-03 + 5.875895053571317e-03 + 5.861727270328322e-03 + 5.847593160694864e-03 + 5.833492644473149e-03 + 5.819425641715960e-03 + 5.805392072163253e-03 + 5.791391855962741e-03 + 5.777424914193254e-03 + 5.763491167389796e-03 + 5.749590536018355e-03 + 5.735722941127108e-03 + 5.721888304505554e-03 + 5.708086547766434e-03 + 5.694317591457392e-03 + 5.680581357894303e-03 + 5.666877769868901e-03 + 5.653206748498332e-03 + 5.639568216215936e-03 + 5.625962096156960e-03 + 5.612388310444156e-03 + 5.598846782244085e-03 + 5.585337435180374e-03 + 5.571860191464977e-03 + 5.558414974887664e-03 + 5.545001710146245e-03 + 5.531620319651646e-03 + 5.518270727342278e-03 + 5.504952858629092e-03 + 5.491666637149790e-03 + 5.478411987013346e-03 + 5.465188833301630e-03 + 5.451997101098349e-03 + 5.438836715460566e-03 + 5.425707601454353e-03 + 5.412609684284744e-03 + 5.399542889597323e-03 + 5.386507143481766e-03 + 5.373502371672819e-03 + 5.360528500347250e-03 + 5.347585456320476e-03 + 5.334673165238440e-03 + 5.321791553290573e-03 + 5.308940548233661e-03 + 5.296120077396591e-03 + 5.283330067535706e-03 + 5.270570445063373e-03 + 5.257841138170363e-03 + 5.245142075198895e-03 + 5.232473183108559e-03 + 5.219834389656078e-03 + 5.207225623450342e-03 + 5.194646813662877e-03 + 5.182097888019903e-03 + 5.169578774433769e-03 + 5.157089403379224e-03 + 5.144629703265777e-03 + 5.132199601938705e-03 + 5.119799030212023e-03 + 5.107427917986021e-03 + 5.095086194230444e-03 + 5.082773788422456e-03 + 5.070490630851877e-03 + 5.058236652191947e-03 + 5.046011782411770e-03 + 5.033815952050060e-03 + 5.021649092096963e-03 + 5.009511132708167e-03 + 4.997402004872952e-03 + 4.985321640554899e-03 + 4.973269971256597e-03 + 4.961246927915243e-03 + 4.949252441362114e-03 + 4.937286444284467e-03 + 4.925348869112448e-03 + 4.913439647407981e-03 + 4.901558711796497e-03 + 4.889705994683389e-03 + 4.877881427891544e-03 + 4.866084944974813e-03 + 4.854316479151838e-03 + 4.842575962313763e-03 + 4.830863328342665e-03 + 4.819178511323663e-03 + 4.807521444209243e-03 + 4.795892060902922e-03 + 4.784290295384500e-03 + 4.772716080911616e-03 + 4.761169351999607e-03 + 4.749650043687660e-03 + 4.738158090505544e-03 + 4.726693426328077e-03 + 4.715255985490762e-03 + 4.703845704177584e-03 + 4.692462517255530e-03 + 4.681106359266913e-03 + 4.669777166671382e-03 + 4.658474874679097e-03 + 4.647199418051047e-03 + 4.635950733693824e-03 + 4.624728757814554e-03 + 4.613533426035275e-03 + 4.602364675085555e-03 + 4.591222441193854e-03 + 4.580106660340010e-03 + 4.569017270133631e-03 + 4.557954207729684e-03 + 4.546917409606468e-03 + 4.535906813063030e-03 + 4.524922355662980e-03 + 4.513963975024341e-03 + 4.503031608847450e-03 + 4.492125194604706e-03 + 4.481244669721014e-03 + 4.470389973075004e-03 + 4.459561043403103e-03 + 4.448757818627942e-03 + 4.437980237157132e-03 + 4.427228237584914e-03 + 4.416501758569245e-03 + 4.405800739475310e-03 + 4.395125119625431e-03 + 4.384474837838549e-03 + 4.373849833628650e-03 + 4.363250046735974e-03 + 4.352675416676511e-03 + 4.342125883231542e-03 + 4.331601386396421e-03 + 4.321101866314548e-03 + 4.310627263408189e-03 + 4.300177518182486e-03 + 4.289752570999768e-03 + 4.279352362569397e-03 + 4.268976833692708e-03 + 4.258625924837488e-03 + 4.248299577436886e-03 + 4.237997733292803e-03 + 4.227720333115902e-03 + 4.217467318344088e-03 + 4.207238631130676e-03 + 4.197034213451204e-03 + 4.186854006892898e-03 + 4.176697952964437e-03 + 4.166565994071401e-03 + 4.156458073034852e-03 + 4.146374132669977e-03 + 4.136314114934178e-03 + 4.126277962231265e-03 + 4.116265617785051e-03 + 4.106277025130100e-03 + 4.096312127225507e-03 + 4.086370866498099e-03 + 4.076453186851077e-03 + 4.066559032318193e-03 + 4.056688346384167e-03 + 4.046841072375552e-03 + 4.037017154234894e-03 + 4.027216536753351e-03 + 4.017439163691562e-03 + 4.007684978984143e-03 + 3.997953927616382e-03 + 3.988245954341580e-03 + 3.978561003853811e-03 + 3.968899020987378e-03 + 3.959259950174110e-03 + 3.949643736363211e-03 + 3.940050325917084e-03 + 3.930479663940112e-03 + 3.920931695287086e-03 + 3.911406366153988e-03 + 3.901903622192779e-03 + 3.892423408886956e-03 + 3.882965672529350e-03 + 3.873530359308857e-03 + 3.864117415340676e-03 + 3.854726787040829e-03 + 3.845358421069152e-03 + 3.836012264203419e-03 + 3.826688263119290e-03 + 3.817386364639579e-03 + 3.808106515834866e-03 + 3.798848664119608e-03 + 3.789612756624806e-03 + 3.780398740246358e-03 + 3.771206562411011e-03 + 3.762036171140922e-03 + 3.752887514765301e-03 + 3.743760540740341e-03 + 3.734655196719529e-03 + 3.725571430980986e-03 + 3.716509192135922e-03 + 3.707468428387338e-03 + 3.698449087559120e-03 + 3.689451119263604e-03 + 3.680474472533827e-03 + 3.671519094850921e-03 + 3.662584935894309e-03 + 3.653671945297336e-03 + 3.644780071212910e-03 + 3.635909263417586e-03 + 3.627059471971036e-03 + 3.618230645951014e-03 + 3.609422734605362e-03 + 3.600635687799489e-03 + 3.591869456282116e-03 + 3.583123989955615e-03 + 3.574399238584414e-03 + 3.565695152845392e-03 + 3.557011682930304e-03 + 3.548348778903569e-03 + 3.539706391532652e-03 + 3.531084471778191e-03 + 3.522482970666699e-03 + 3.513901839239252e-03 + 3.505341028388093e-03 + 3.496800489111114e-03 + 3.488280173119797e-03 + 3.479780031892506e-03 + 3.471300016604386e-03 + 3.462840078578430e-03 + 3.454400170006921e-03 + 3.445980243580072e-03 + 3.437580250715228e-03 + 3.429200142992534e-03 + 3.420839872683964e-03 + 3.412499392748279e-03 + 3.404178655562702e-03 + 3.395877612913789e-03 + 3.387596218304602e-03 + 3.379334424898988e-03 + 3.371092184764359e-03 + 3.362869450661228e-03 + 3.354666175991870e-03 + 3.346482314543412e-03 + 3.338317819175880e-03 + 3.330172642972068e-03 + 3.322046740007612e-03 + 3.313940064235304e-03 + 3.305852569386344e-03 + 3.297784208976364e-03 + 3.289734936574093e-03 + 3.281704706272533e-03 + 3.273693473070924e-03 + 3.265701191257636e-03 + 3.257727814803984e-03 + 3.249773298074863e-03 + 3.241837595979994e-03 + 3.233920663596386e-03 + 3.226022455622204e-03 + 3.218142926555998e-03 + 3.210282031163023e-03 + 3.202439725215123e-03 + 3.194615964134223e-03 + 3.186810703067027e-03 + 3.179023897602838e-03 + 3.171255503398923e-03 + 3.163505475998486e-03 + 3.155773770652277e-03 + 3.148060343553685e-03 + 3.140365151430291e-03 + 3.132688149313277e-03 + 3.125029293443853e-03 + 3.117388541383308e-03 + 3.109765848736372e-03 + 3.102161171408776e-03 + 3.094574466373093e-03 + 3.087005690728782e-03 + 3.079454801280003e-03 + 3.071921754555924e-03 + 3.064406507880629e-03 + 3.056909018530570e-03 + 3.049429243338136e-03 + 3.041967139485151e-03 + 3.034522664377966e-03 + 3.027095775562892e-03 + 3.019686430816400e-03 + 3.012294588055786e-03 + 3.004920205212209e-03 + 2.997563239705405e-03 + 2.990223649173174e-03 + 2.982901392198357e-03 + 2.975596427311395e-03 + 2.968308712822513e-03 + 2.961038206776656e-03 + 2.953784867392937e-03 + 2.946548653201694e-03 + 2.939329523194637e-03 + 2.932127436582907e-03 + 2.924942352269057e-03 + 2.917774228121468e-03 + 2.910623023643702e-03 + 2.903488699056754e-03 + 2.896371212514376e-03 + 2.889270523304112e-03 + 2.882186591679052e-03 + 2.875119376658924e-03 + 2.868068837676741e-03 + 2.861034934776638e-03 + 2.854017627809473e-03 + 2.847016876513213e-03 + 2.840032640686938e-03 + 2.833064880681456e-03 + 2.826113557103426e-03 + 2.819178630449384e-03 + 2.812260060105674e-03 + 2.805357806481411e-03 + 2.798471831428214e-03 + 2.791602094948384e-03 + 2.784748557109701e-03 + 2.777911179108391e-03 + 2.771089922400815e-03 + 2.764284748007964e-03 + 2.757495616304825e-03 + 2.750722488782177e-03 + 2.743965327115693e-03 + 2.737224092409578e-03 + 2.730498746008289e-03 + 2.723789249648372e-03 + 2.717095565426717e-03 + 2.710417654358784e-03 + 2.703755477800617e-03 + 2.697108999073383e-03 + 2.690478179939920e-03 + 2.683862981660020e-03 + 2.677263366970269e-03 + 2.670679298051182e-03 + 2.664110736894467e-03 + 2.657557646411518e-03 + 2.651019989061974e-03 + 2.644497727126834e-03 + 2.637990823748049e-03 + 2.631499241776077e-03 + 2.625022943767310e-03 + 2.618561892619121e-03 + 2.612116051581085e-03 + 2.605685383984310e-03 + 2.599269852507916e-03 + 2.592869420565223e-03 + 2.586484052278204e-03 + 2.580113710814501e-03 + 2.573758359383719e-03 + 2.567417961609419e-03 + 2.561092481362380e-03 + 2.554781882413309e-03 + 2.548486128464411e-03 + 2.542205184036424e-03 + 2.535939013422343e-03 + 2.529687580238901e-03 + 2.523450848436006e-03 + 2.517228782352248e-03 + 2.511021346720505e-03 + 2.504828506444104e-03 + 2.498650225958320e-03 + 2.492486468967693e-03 + 2.486337200680032e-03 + 2.480202386472821e-03 + 2.474081990653096e-03 + 2.467975978460781e-03 + 2.461884315215007e-03 + 2.455806965243642e-03 + 2.449743893777428e-03 + 2.443695066608286e-03 + 2.437660449328877e-03 + 2.431640007119714e-03 + 2.425633705211946e-03 + 2.419641509634817e-03 + 2.413663385966202e-03 + 2.407699299632079e-03 + 2.401749216909934e-03 + 2.395813103777745e-03 + 2.389890925926915e-03 + 2.383982649399740e-03 + 2.378088240561300e-03 + 2.372207665865560e-03 + 2.366340891258303e-03 + 2.360487883037754e-03 + 2.354648608018378e-03 + 2.348823033118129e-03 + 2.343011124539103e-03 + 2.337212848054228e-03 + 2.331428171390765e-03 + 2.325657062040943e-03 + 2.319899486412222e-03 + 2.314155410784699e-03 + 2.308424802407836e-03 + 2.302707629600105e-03 + 2.297003858807791e-03 + 2.291313456815245e-03 + 2.285636391934661e-03 + 2.279972631361444e-03 + 2.274322142294874e-03 + 2.268684892803898e-03 + 2.263060850445441e-03 + 2.257449982675230e-03 + 2.251852257331842e-03 + 2.246267642469826e-03 + 2.240696106224612e-03 + 2.235137616698782e-03 + 2.229592141925271e-03 + 2.224059650030012e-03 + 2.218540109447705e-03 + 2.213033488566449e-03 + 2.207539755750870e-03 + 2.202058879448589e-03 + 2.196590827868759e-03 + 2.191135569406817e-03 + 2.185693073538250e-03 + 2.180263309295804e-03 + 2.174846245146934e-03 + 2.169441849486111e-03 + 2.164050091629877e-03 + 2.158670941358884e-03 + 2.153304367034930e-03 + 2.147950337590323e-03 + 2.142608822828710e-03 + 2.137279792340324e-03 + 2.131963215445541e-03 + 2.126659061301170e-03 + 2.121367299363035e-03 + 2.116087899310018e-03 + 2.110820830985273e-03 + 2.105566064252215e-03 + 2.100323568822542e-03 + 2.095093314356113e-03 + 2.089875271479949e-03 + 2.084669410319118e-03 + 2.079475699908646e-03 + 2.074294110902819e-03 + 2.069124614088778e-03 + 2.063967179294363e-03 + 2.058821776747180e-03 + 2.053688376991423e-03 + 2.048566950718572e-03 + 2.043457468582260e-03 + 2.038359901240009e-03 + 2.033274219398007e-03 + 2.028200393563254e-03 + 2.023138394473247e-03 + 2.018088193625467e-03 + 2.013049761808302e-03 + 2.008023069533293e-03 + 2.003008088023720e-03 + 1.998004788922133e-03 + 1.993013143739461e-03 + 1.988033123025423e-03 + 1.983064698401174e-03 + 1.978107841939004e-03 + 1.973162523959716e-03 + 1.968228716337500e-03 + 1.963306391971906e-03 + 1.958395521239848e-03 + 1.953496075620802e-03 + 1.948608028019931e-03 + 1.943731350228688e-03 + 1.938866013789267e-03 + 1.934011990485791e-03 + 1.929169252901841e-03 + 1.924337773155020e-03 + 1.919517522737516e-03 + 1.914708474346116e-03 + 1.909910600724645e-03 + 1.905123874118434e-03 + 1.900348266781407e-03 + 1.895583751238830e-03 + 1.890830300301618e-03 + 1.886087886140893e-03 + 1.881356481302734e-03 + 1.876636059328014e-03 + 1.871926593048255e-03 + 1.867228054886164e-03 + 1.862540417322874e-03 + 1.857863653843670e-03 + 1.853197738035545e-03 + 1.848542642643349e-03 + 1.843898340659710e-03 + 1.839264805482605e-03 + 1.834642010884087e-03 + 1.830029929675155e-03 + 1.825428534756660e-03 + 1.820837800826725e-03 + 1.816257700994342e-03 + 1.811688207883416e-03 + 1.807129296515363e-03 + 1.802580940478343e-03 + 1.798043112569654e-03 + 1.793515787775185e-03 + 1.788998939681262e-03 + 1.784492541016137e-03 + 1.779996567290557e-03 + 1.775510992946437e-03 + 1.771035790955467e-03 + 1.766570935188881e-03 + 1.762116400368900e-03 + 1.757672161650980e-03 + 1.753238193179788e-03 + 1.748814468721301e-03 + 1.744400962234815e-03 + 1.739997649147064e-03 + 1.735604504535336e-03 + 1.731221502449809e-03 + 1.726848617398671e-03 + 1.722485824273258e-03 + 1.718133098140551e-03 + 1.713790413411143e-03 + 1.709457744960287e-03 + 1.705135068710917e-03 + 1.700822359316501e-03 + 1.696519591326764e-03 + 1.692226740206531e-03 + 1.687943780998710e-03 + 1.683670689031842e-03 + 1.679407440586236e-03 + 1.675154010255336e-03 + 1.670910372590760e-03 + 1.666676504276520e-03 + 1.662452380680008e-03 + 1.658237976786625e-03 + 1.654033269138933e-03 + 1.649838233189823e-03 + 1.645652843894769e-03 + 1.641477077483747e-03 + 1.637310910181093e-03 + 1.633154317979306e-03 + 1.629007276710043e-03 + 1.624869761977525e-03 + 1.620741749539434e-03 + 1.616623216289868e-03 + 1.612514138626602e-03 + 1.608414492386588e-03 + 1.604324254066237e-03 + 1.600243399893093e-03 + 1.596171905775712e-03 + 1.592109748332882e-03 + 1.588056904380057e-03 + 1.584013350591343e-03 + 1.579979063015354e-03 + 1.575954018417919e-03 + 1.571938194458784e-03 + 1.567931567017785e-03 + 1.563934112240304e-03 + 1.559945807641685e-03 + 1.555966630779868e-03 + 1.551996558434039e-03 + 1.548035566441649e-03 + 1.544083632647983e-03 + 1.540140734902817e-03 + 1.536206849423688e-03 + 1.532281953055403e-03 + 1.528366023373284e-03 + 1.524459038476067e-03 + 1.520560975283225e-03 + 1.516671810636623e-03 + 1.512791522697568e-03 + 1.508920088807869e-03 + 1.505057486015793e-03 + 1.501203692209861e-03 + 1.497358685322736e-03 + 1.493522443062933e-03 + 1.489694942724099e-03 + 1.485876162194853e-03 + 1.482066079697174e-03 + 1.478264672890618e-03 + 1.474471919644568e-03 + 1.470687798121700e-03 + 1.466912286519041e-03 + 1.463145362594138e-03 + 1.459387003990816e-03 + 1.455637189563730e-03 + 1.451895897787254e-03 + 1.448163106500405e-03 + 1.444438793947980e-03 + 1.440722938760434e-03 + 1.437015519703072e-03 + 1.433316514691718e-03 + 1.429625901910583e-03 + 1.425943660193772e-03 + 1.422269768088744e-03 + 1.418604204318803e-03 + 1.414946947952337e-03 + 1.411297977567125e-03 + 1.407657271824714e-03 + 1.404024809794961e-03 + 1.400400570139807e-03 + 1.396784531434119e-03 + 1.393176672533590e-03 + 1.389576972970703e-03 + 1.385985412235932e-03 + 1.382401969107074e-03 + 1.378826622443783e-03 + 1.375259351219489e-03 + 1.371700134514839e-03 + 1.368148952079336e-03 + 1.364605783757036e-03 + 1.361070608632290e-03 + 1.357543405835987e-03 + 1.354024154621594e-03 + 1.350512834317403e-03 + 1.347009424934256e-03 + 1.343513906652181e-03 + 1.340026258589547e-03 + 1.336546459739890e-03 + 1.333074489680093e-03 + 1.329610329681042e-03 + 1.326153959375566e-03 + 1.322705357081586e-03 + 1.319264503327096e-03 + 1.315831378649060e-03 + 1.312405962942001e-03 + 1.308988235813027e-03 + 1.305578177302038e-03 + 1.302175767936687e-03 + 1.298780987783750e-03 + 1.295393816813521e-03 + 1.292014235092867e-03 + 1.288642222828844e-03 + 1.285277760581296e-03 + 1.281920829182064e-03 + 1.278571408463430e-03 + 1.275229478684235e-03 + 1.271895021211065e-03 + 1.268568016022571e-03 + 1.265248443161927e-03 + 1.261936283866222e-03 + 1.258631518851812e-03 + 1.255334128626978e-03 + 1.252044093890807e-03 + 1.248761395151665e-03 + 1.245486013113075e-03 + 1.242217929129610e-03 + 1.238957124307338e-03 + 1.235703579418827e-03 + 1.232457274959363e-03 + 1.229218191838193e-03 + 1.225986311430220e-03 + 1.222761615473843e-03 + 1.219544084856006e-03 + 1.216333699988417e-03 + 1.213130441964228e-03 + 1.209934292565758e-03 + 1.206745233676102e-03 + 1.203563245963205e-03 + 1.200388310525061e-03 + 1.197220409053557e-03 + 1.194059523052293e-03 + 1.190905633902454e-03 + 1.187758723052301e-03 + 1.184618772531461e-03 + 1.181485763720917e-03 + 1.178359677471923e-03 + 1.175240496495629e-03 + 1.172128202790389e-03 + 1.169022777016151e-03 + 1.165924201427151e-03 + 1.162832457974330e-03 + 1.159747527667428e-03 + 1.156669393342115e-03 + 1.153598037513975e-03 + 1.150533441195656e-03 + 1.147475586343000e-03 + 1.144424455192698e-03 + 1.141380029693999e-03 + 1.138342292070108e-03 + 1.135311224784675e-03 + 1.132286810371483e-03 + 1.129269030382949e-03 + 1.126257866687504e-03 + 1.123253302806332e-03 + 1.120255320585528e-03 + 1.117263901594027e-03 + 1.114279029333705e-03 + 1.111300685926414e-03 + 1.108328853214485e-03 + 1.105363515126287e-03 + 1.102404653695880e-03 + 1.099452250276090e-03 + 1.096506289065756e-03 + 1.093566752790314e-03 + 1.090633622975802e-03 + 1.087706882683815e-03 + 1.084786514992603e-03 + 1.081872502714538e-03 + 1.078964828755093e-03 + 1.076063476054719e-03 + 1.073168427526746e-03 + 1.070279665938792e-03 + 1.067397174442816e-03 + 1.064520936417689e-03 + 1.061650934087830e-03 + 1.058787150577005e-03 + 1.055929570192933e-03 + 1.053078175257412e-03 + 1.050232948596978e-03 + 1.047393874491941e-03 + 1.044560935952646e-03 + 1.041734115621369e-03 + 1.038913396581877e-03 + 1.036098763274602e-03 + 1.033290199394467e-03 + 1.030487686748966e-03 + 1.027691209748195e-03 + 1.024900752824401e-03 + 1.022116298137994e-03 + 1.019337829638554e-03 + 1.016565331581354e-03 + 1.013798786681050e-03 + 1.011038178744547e-03 + 1.008283492069452e-03 + 1.005534710312413e-03 + 1.002791817167788e-03 + 1.000054796401326e-03 + 9.973236317525795e-04 + 9.945983071579347e-04 + 9.918788066535795e-04 + 9.891651141399331e-04 + 9.864572135795289e-04 + 9.837550890187182e-04 + 9.810587245440681e-04 + 9.783681042165289e-04 + 9.756832121036981e-04 + 9.730040324093254e-04 + 9.703305493295432e-04 + 9.676627470403841e-04 + 9.650006098016114e-04 + 9.623441219373007e-04 + 9.596932677964791e-04 + 9.570480316324495e-04 + 9.544083978205768e-04 + 9.517743508934125e-04 + 9.491458752396962e-04 + 9.465229553012878e-04 + 9.439055756501852e-04 + 9.412937207895038e-04 + 9.386873752809525e-04 + 9.360865238076440e-04 + 9.334911509791107e-04 + 9.309012414140627e-04 + 9.283167798171848e-04 + 9.257377509839119e-04 + 9.231641396993918e-04 + 9.205959306774516e-04 + 9.180331088080401e-04 + 9.154756590138127e-04 + 9.129235660962607e-04 + 9.103768149701878e-04 + 9.078353906321772e-04 + 9.052992780955343e-04 + 9.027684623946166e-04 + 9.002429285800444e-04 + 8.977226617159664e-04 + 8.952076469091944e-04 + 8.926978693026045e-04 + 8.901933140640126e-04 + 8.876939664445818e-04 + 8.851998117353022e-04 + 8.827108351548252e-04 + 8.802270219825557e-04 + 8.777483575705740e-04 + 8.752748272927118e-04 + 8.728064165680979e-04 + 8.703431108522175e-04 + 8.678848955854838e-04 + 8.654317562117358e-04 + 8.629836782258149e-04 + 8.605406473168484e-04 + 8.581026490766350e-04 + 8.556696689660546e-04 + 8.532416927295966e-04 + 8.508187061075220e-04 + 8.484006947265324e-04 + 8.459876443379812e-04 + 8.435795407180884e-04 + 8.411763696276702e-04 + 8.387781169670006e-04 + 8.363847686436173e-04 + 8.339963104952486e-04 + 8.316127284703911e-04 + 8.292340085393665e-04 + 8.268601366269382e-04 + 8.244910987818749e-04 + 8.221268810991789e-04 + 8.197674696351961e-04 + 8.174128504795555e-04 + 8.150630097863373e-04 + 8.127179337987174e-04 + 8.103776086785577e-04 + 8.080420206116735e-04 + 8.057111559859151e-04 + 8.033850010442538e-04 + 8.010635420033148e-04 + 7.987467653572807e-04 + 7.964346575211490e-04 + 7.941272048473775e-04 + 7.918243938145987e-04 + 7.895262109139402e-04 + 7.872326426395918e-04 + 7.849436755404454e-04 + 7.826592961986925e-04 + 7.803794912312032e-04 + 7.781042473133076e-04 + 7.758335511109105e-04 + 7.735673892815593e-04 + 7.713057485643111e-04 + 7.690486157536814e-04 + 7.667959776727836e-04 + 7.645478211004869e-04 + 7.623041328912646e-04 + 7.600649000053854e-04 + 7.578301093264215e-04 + 7.555997477583347e-04 + 7.533738022910566e-04 + 7.511522599897612e-04 + 7.489351079282785e-04 + 7.467223331578882e-04 + 7.445139227962291e-04 + 7.423098639775247e-04 + 7.401101438263767e-04 + 7.379147496119391e-04 + 7.357236686066337e-04 + 7.335368879604144e-04 + 7.313543950177981e-04 + 7.291761771981462e-04 + 7.270022218267318e-04 + 7.248325162821272e-04 + 7.226670479949025e-04 + 7.205058044241288e-04 + 7.183487730730944e-04 + 7.161959414766152e-04 + 7.140472971809699e-04 + 7.119028277561113e-04 + 7.097625208231147e-04 + 7.076263641063239e-04 + 7.054943452576004e-04 + 7.033664519218169e-04 + 7.012426719956601e-04 + 6.991229932510109e-04 + 6.970074033540157e-04 + 6.948958902400331e-04 + 6.927884418689321e-04 + 6.906850461485944e-04 + 6.885856909689247e-04 + 6.864903643067344e-04 + 6.843990542306164e-04 + 6.823117487354689e-04 + 6.802284359113009e-04 + 6.781491039842488e-04 + 6.760737410664455e-04 + 6.740023352773578e-04 + 6.719348748282754e-04 + 6.698713480434448e-04 + 6.678117432465053e-04 + 6.657560487034911e-04 + 6.637042527655789e-04 + 6.616563438432147e-04 + 6.596123103782944e-04 + 6.575721408025738e-04 + 6.555358236048545e-04 + 6.535033473936704e-04 + 6.514747007198682e-04 + 6.494498721244171e-04 + 6.474288502266283e-04 + 6.454116237722280e-04 + 6.433981815196293e-04 + 6.413885120963034e-04 + 6.393826043225120e-04 + 6.373804471016686e-04 + 6.353820291728463e-04 + 6.333873394523912e-04 + 6.313963669651093e-04 + 6.294091005879305e-04 + 6.274255292885601e-04 + 6.254456421348147e-04 + 6.234694281911996e-04 + 6.214968766042923e-04 + 6.195279765738893e-04 + 6.175627172048796e-04 + 6.156010877068991e-04 + 6.136430774102346e-04 + 6.116886755862946e-04 + 6.097378715435904e-04 + 6.077906546697107e-04 + 6.058470144286753e-04 + 6.039069402835228e-04 + 6.019704216802507e-04 + 6.000374481409778e-04 + 5.981080092530985e-04 + 5.961820946588096e-04 + 5.942596940083503e-04 + 5.923407969721301e-04 + 5.904253932616448e-04 + 5.885134726736782e-04 + 5.866050250202793e-04 + 5.847000400980857e-04 + 5.827985078791194e-04 + 5.809004183470366e-04 + 5.790057613579966e-04 + 5.771145269606196e-04 + 5.752267052829598e-04 + 5.733422863841403e-04 + 5.714612604000550e-04 + 5.695836175305099e-04 + 5.677093480037018e-04 + 5.658384420678564e-04 + 5.639708900266142e-04 + 5.621066823022896e-04 + 5.602458092869138e-04 + 5.583882613744714e-04 + 5.565340290827777e-04 + 5.546831029664671e-04 + 5.528354736013446e-04 + 5.509911316015094e-04 + 5.491500676402182e-04 + 5.473122724461832e-04 + 5.454777367810608e-04 + 5.436464514412940e-04 + 5.418184072613321e-04 + 5.399935951226492e-04 + 5.381720060069473e-04 + 5.363536309736959e-04 + 5.345384609776805e-04 + 5.327264870731968e-04 + 5.309177004752346e-04 + 5.291120923593077e-04 + 5.273096539494221e-04 + 5.255103765544823e-04 + 5.237142514407170e-04 + 5.219212699733492e-04 + 5.201314236865307e-04 + 5.183447040146093e-04 + 5.165611024246747e-04 + 5.147806105331874e-04 + 5.130032200114061e-04 + 5.112289225530487e-04 + 5.094577098620987e-04 + 5.076895736854020e-04 + 5.059245058583464e-04 + 5.041624983517820e-04 + 5.024035430839573e-04 + 5.006476319990773e-04 + 4.988947572035529e-04 + 4.971449107942239e-04 + 4.953980848818115e-04 + 4.936542716805855e-04 + 4.919134634956966e-04 + 4.901756526846954e-04 + 4.884408316006080e-04 + 4.867089926403434e-04 + 4.849801282731475e-04 + 4.832542310892493e-04 + 4.815312937309208e-04 + 4.798113088560132e-04 + 4.780942690954599e-04 + 4.763801672259719e-04 + 4.746689961731605e-04 + 4.729607488395965e-04 + 4.712554181333483e-04 + 4.695529970142063e-04 + 4.678534786182833e-04 + 4.661568561056742e-04 + 4.644631226216267e-04 + 4.627722714285577e-04 + 4.610842958399921e-04 + 4.593991892076899e-04 + 4.577169450300335e-04 + 4.560375568336446e-04 + 4.543610181249096e-04 + 4.526873225594637e-04 + 4.510164638467393e-04 + 4.493484356950898e-04 + 4.476832319569833e-04 + 4.460208465382815e-04 + 4.443612733350173e-04 + 4.427045064285867e-04 + 4.410505399510805e-04 + 4.393993679504339e-04 + 4.377509846774214e-04 + 4.361053844834223e-04 + 4.344625616662297e-04 + 4.328225106365193e-04 + 4.311852259097922e-04 + 4.295507020701359e-04 + 4.279189337521271e-04 + 4.262899156467061e-04 + 4.246636425301464e-04 + 4.230401092565931e-04 + 4.214193107478168e-04 + 4.198012419839599e-04 + 4.181858979868060e-04 + 4.165732738692198e-04 + 4.149633649793705e-04 + 4.133561665739344e-04 + 4.117516738453971e-04 + 4.101498823326724e-04 + 4.085507876181731e-04 + 4.069543852399522e-04 + 4.053606707914893e-04 + 4.037696400086752e-04 + 4.021812887746215e-04 + 4.005956129436248e-04 + 3.990126084760660e-04 + 3.974322714846641e-04 + 3.958545980293214e-04 + 3.942795842513983e-04 + 3.927072264688036e-04 + 3.911375211195356e-04 + 3.895704646516968e-04 + 3.880060534869329e-04 + 3.864442842922655e-04 + 3.848851538066537e-04 + 3.833286587063809e-04 + 3.817747958651508e-04 + 3.802235622593628e-04 + 3.786749548688228e-04 + 3.771289708205180e-04 + 3.755856073392733e-04 + 3.740448616816441e-04 + 3.725067311649692e-04 + 3.709712132043737e-04 + 3.694383053790672e-04 + 3.679080053579325e-04 + 3.663803108503057e-04 + 3.648552195606523e-04 + 3.633327293646475e-04 + 3.618128382932607e-04 + 3.602955444344858e-04 + 3.587808459078391e-04 + 3.572687408998931e-04 + 3.557592277792442e-04 + 3.542523049927096e-04 + 3.527479710408145e-04 + 3.512462245019904e-04 + 3.497470640500036e-04 + 3.482504884770882e-04 + 3.467564967437580e-04 + 3.452650877985240e-04 + 3.437762605764859e-04 + 3.422900143250168e-04 + 3.408063483640538e-04 + 3.393252619896345e-04 + 3.378467546103840e-04 + 3.363708257653936e-04 + 3.348974751341996e-04 + 3.334267024660963e-04 + 3.319585075646510e-04 + 3.304928903038992e-04 + 3.290298507212495e-04 + 3.275693889604049e-04 + 3.261115052402690e-04 + 3.246561999078441e-04 + 3.232034733603981e-04 + 3.217533259984899e-04 + 3.203057585048498e-04 + 3.188607716794152e-04 + 3.174183662346357e-04 + 3.159785430822741e-04 + 3.145413032833238e-04 + 3.131066479369465e-04 + 3.116745782136557e-04 + 3.102450954058189e-04 + 3.088182010197684e-04 + 3.073938965650610e-04 + 3.059721835802734e-04 + 3.045530637916020e-04 + 3.031365390386899e-04 + 3.017226112552691e-04 + 3.003112824793533e-04 + 2.989025548234045e-04 + 2.974964304955006e-04 + 2.960929118913988e-04 + 2.946920014422941e-04 + 2.932937016150965e-04 + 2.918980151023185e-04 + 2.905049446767149e-04 + 2.891144931550728e-04 + 2.877266634923031e-04 + 2.863414587568181e-04 + 2.849588821248430e-04 + 2.835789368717610e-04 + 2.822016263526234e-04 + 2.808269540128114e-04 + 2.794549234525530e-04 + 2.780855383858511e-04 + 2.767188026160350e-04 + 2.753547199733251e-04 + 2.739932944362576e-04 + 2.726345302253411e-04 + 2.712784314751994e-04 + 2.699250024118205e-04 + 2.685742475595017e-04 + 2.672261714415124e-04 + 2.658807786371782e-04 + 2.645380739000219e-04 + 2.631980619957597e-04 + 2.618607478073471e-04 + 2.605261365239288e-04 + 2.591942332540738e-04 + 2.578650431168888e-04 + 2.565385715181067e-04 + 2.552148239188000e-04 + 2.538938058269625e-04 + 2.525755228940477e-04 + 2.512599808919393e-04 + 2.499471856899045e-04 + 2.486371432244064e-04 + 2.473298595107682e-04 + 2.460253406646765e-04 + 2.447235929605613e-04 + 2.434246227773826e-04 + 2.421284365723855e-04 + 2.408350408491505e-04 + 2.395444422583646e-04 + 2.382566475978551e-04 + 2.369716636126905e-04 + 2.356894972066169e-04 + 2.344101555067014e-04 + 2.331336455922197e-04 + 2.318599746393059e-04 + 2.305891500038487e-04 + 2.293211790903458e-04 + 2.280560693749351e-04 + 2.267938284406659e-04 + 2.255344639796373e-04 + 2.242779837481179e-04 + 2.230243955584571e-04 + 2.217737074088738e-04 + 2.205259273750273e-04 + 2.192810635194828e-04 + 2.180391240377155e-04 + 2.168001172473318e-04 + 2.155640515683406e-04 + 2.143309354202995e-04 + 2.131007772856537e-04 + 2.118735858306198e-04 + 2.106493698084787e-04 + 2.094281380089542e-04 + 2.082098992208740e-04 + 2.069946624015073e-04 + 2.057824366286796e-04 + 2.045732309577213e-04 + 2.033670545521807e-04 + 2.021639166762670e-04 + 2.009638266139778e-04 + 1.997667937615743e-04 + 1.985728276099416e-04 + 1.973819376249420e-04 + 1.961941334186818e-04 + 1.950094247288422e-04 + 1.938278211445808e-04 + 1.926493324216112e-04 + 1.914739685443153e-04 + 1.903017394244089e-04 + 1.891326549660665e-04 + 1.879667251315557e-04 + 1.868039600691931e-04 + 1.856443699312781e-04 + 1.844879648170397e-04 + 1.833347550402995e-04 + 1.821847509305592e-04 + 1.810379627269367e-04 + 1.798944008330572e-04 + 1.787540757117569e-04 + 1.776169978023503e-04 + 1.764831776083264e-04 + 1.753526257075039e-04 + 1.742253527510645e-04 + 1.731013693254543e-04 + 1.719806860311682e-04 + 1.708633135911149e-04 + 1.697492627671219e-04 + 1.686385443331759e-04 + 1.675311690584120e-04 + 1.664271477052953e-04 + 1.653264910845736e-04 + 1.642292101438652e-04 + 1.631353157524277e-04 + 1.620448187436031e-04 + 1.609577300754615e-04 + 1.598740606888992e-04 + 1.587938214812250e-04 + 1.577170233258566e-04 + 1.566436772168694e-04 + 1.555737942159133e-04 + 1.545073851968179e-04 + 1.534444610998845e-04 + 1.523850329588589e-04 + 1.513291117056277e-04 + 1.502767082718022e-04 + 1.492278336091406e-04 + 1.481824986061289e-04 + 1.471407142013266e-04 + 1.461024913960903e-04 + 1.450678410475480e-04 + 1.440367739871709e-04 + 1.430093010797408e-04 + 1.419854331666308e-04 + 1.409651810501559e-04 + 1.399485554884026e-04 + 1.389355672434459e-04 + 1.379262270311977e-04 + 1.369205454852166e-04 + 1.359185332657421e-04 + 1.349202010239166e-04 + 1.339255593445051e-04 + 1.329346186642912e-04 + 1.319473893926901e-04 + 1.309638820305585e-04 + 1.299841069283569e-04 + 1.290080743627276e-04 + 1.280357946577360e-04 + 1.270672779908064e-04 + 1.261025344295187e-04 + 1.251415740258344e-04 + 1.241844068414831e-04 + 1.232310428585276e-04 + 1.222814917974582e-04 + 1.213357634573326e-04 + 1.203938676644921e-04 + 1.194558139769228e-04 + 1.185216119071049e-04 + 1.175912709437735e-04 + 1.166648004395201e-04 + 1.157422096820540e-04 + 1.148235078941047e-04 + 1.139087041565015e-04 + 1.129978074560730e-04 + 1.120908266963163e-04 + 1.111877706801771e-04 + 1.102886481165339e-04 + 1.093934676008822e-04 + 1.085022375478793e-04 + 1.076149663238430e-04 + 1.067316622735248e-04 + 1.058523335072715e-04 + 1.049769880021785e-04 + 1.041056336506420e-04 + 1.032382782134568e-04 + 1.023749293560659e-04 + 1.015155946454073e-04 + 1.006602814254268e-04 + 9.980899691604087e-05 + 9.896174827822380e-05 + 9.811854249648769e-05 + 9.727938640362722e-05 + 9.644428669167931e-05 + 9.561324990949941e-05 + 9.478628247235907e-05 + 9.396339064407664e-05 + 9.314458052650697e-05 + 9.232985807344924e-05 + 9.151922908266137e-05 + 9.071269919463392e-05 + 8.991027389908417e-05 + 8.911195851702552e-05 + 8.831775819982511e-05 + 8.752767793866873e-05 + 8.674172256023528e-05 + 8.595989672073575e-05 + 8.518220490590348e-05 + 8.440865141920385e-05 + 8.363924039733809e-05 + 8.287397580722622e-05 + 8.211286142104977e-05 + 8.135590084051729e-05 + 8.060309749193613e-05 + 7.985445459658365e-05 + 7.910997520302950e-05 + 7.836966218298747e-05 + 7.763351820320998e-05 + 7.690154574559998e-05 + 7.617374709914362e-05 + 7.545012436145964e-05 + 7.473067944430294e-05 + 7.401541405207780e-05 + 7.330432968888297e-05 + 7.259742767376570e-05 + 7.189470911942744e-05 + 7.119617492698978e-05 + 7.050182580949816e-05 + 6.981166227552030e-05 + 6.912568461899398e-05 + 6.844389294104750e-05 + 6.776628713300132e-05 + 6.709286687130013e-05 + 6.642363163388969e-05 + 6.575858067871575e-05 + 6.509771305493562e-05 + 6.444102761503343e-05 + 6.378852298738557e-05 + 6.314019758583242e-05 + 6.249604962295056e-05 + 6.185607708979005e-05 + 6.122027775903875e-05 + 6.058864919749181e-05 + 5.996118875684596e-05 + 5.933789356597989e-05 + 5.871876053888907e-05 + 5.810378637807827e-05 + 5.749296757228591e-05 + 5.688630039241354e-05 + 5.628378087841946e-05 + 5.568540486517338e-05 + 5.509116797959273e-05 + 5.450106561933422e-05 + 5.391509296529475e-05 + 5.333324497665832e-05 + 5.275551640753726e-05 + 5.218190179953343e-05 + 5.161239545977182e-05 + 5.104699148146081e-05 + 5.048568375913861e-05 + 4.992846596763329e-05 + 4.937533154817934e-05 + 4.882627374147808e-05 + 4.828128557792042e-05 + 4.774035986717692e-05 + 4.720348921279551e-05 + 4.667066599018748e-05 + 4.614188237688400e-05 + 4.561713035194944e-05 + 4.509640165438987e-05 + 4.457968783032909e-05 + 4.406698023190481e-05 + 4.355826996891768e-05 + 4.305354796420506e-05 + 4.255280495560636e-05 + 4.205603144616347e-05 + 4.156321774032957e-05 + 4.107435395613752e-05 + 4.058942999665175e-05 + 4.010843556869507e-05 + 3.963136019085871e-05 + 3.915819316952545e-05 + 3.868892361719641e-05 + 3.822354046226270e-05 + 3.776203244031561e-05 + 3.730438809005640e-05 + 3.685059575689182e-05 + 3.640064360230198e-05 + 3.595451960373741e-05 + 3.551221155134442e-05 + 3.507370705450421e-05 + 3.463899354241650e-05 + 3.420805825588243e-05 + 3.378088825986720e-05 + 3.335747045272196e-05 + 3.293779155463552e-05 + 3.252183811026268e-05 + 3.210959649877579e-05 + 3.170105292073684e-05 + 3.129619341367949e-05 + 3.089500386055728e-05 + 3.049746997239612e-05 + 3.010357730585059e-05 + 2.971331126487755e-05 + 2.932665707619367e-05 + 2.894359982344077e-05 + 2.856412445132613e-05 + 2.818821573877814e-05 + 2.781585831987375e-05 + 2.744703669454755e-05 + 2.708173520948728e-05 + 2.671993807124836e-05 + 2.636162935767626e-05 + 2.600679300301263e-05 + 2.565541280257304e-05 + 2.530747242805460e-05 + 2.496295542635910e-05 + 2.462184521206604e-05 + 2.428412507785163e-05 + 2.394977819771233e-05 + 2.361878762181457e-05 + 2.329113628448998e-05 + 2.296680701293541e-05 + 2.264578251757474e-05 + 2.232804539557172e-05 + 2.201357814530585e-05 + 2.170236315904943e-05 + 2.139438272306276e-05 + 2.108961903561866e-05 + 2.078805419745760e-05 + 2.048967020582218e-05 + 2.019444897050880e-05 + 1.990237231614296e-05 + 1.961342197777572e-05 + 1.932757961462368e-05 + 1.904482680353188e-05 + 1.876514502948172e-05 + 1.848851571515060e-05 + 1.821492021640795e-05 + 1.794433980831370e-05 + 1.767675569461099e-05 + 1.741214902258527e-05 + 1.715050088166273e-05 + 1.689179228451716e-05 + 1.663600419203502e-05 + 1.638311752659296e-05 + 1.613311314360082e-05 + 1.588597184706167e-05 + 1.564167440067926e-05 + 1.540020151829502e-05 + 1.516153387453479e-05 + 1.492565211244357e-05 + 1.469253682958783e-05 + 1.446216858599219e-05 + 1.423452791421707e-05 + 1.400959531801727e-05 + 1.378735127470914e-05 + 1.356777623611474e-05 + 1.335085063337062e-05 + 1.313655487876277e-05 + 1.292486936494610e-05 + 1.271577446639333e-05 + 1.250925054517824e-05 + 1.230527796605363e-05 + 1.210383708165599e-05 + 1.190490823144681e-05 + 1.170847175649016e-05 + 1.151450799717159e-05 + 1.132299729345123e-05 + 1.113391999104486e-05 + 1.094725644586371e-05 + 1.076298702423590e-05 + 1.058109209097755e-05 + 1.040155202830912e-05 + 1.022434724511555e-05 + 1.004945815519835e-05 + 9.876865191434875e-06 + 9.706548817576976e-06 + 9.538489515829050e-06 + 9.372667791395497e-06 + 9.209064181113714e-06 + 9.047659251528417e-06 + 8.888433598428113e-06 + 8.731367852817854e-06 + 8.576442682615395e-06 + 8.423638791088146e-06 + 8.272936922653283e-06 + 8.124317863654203e-06 + 7.977762440936675e-06 + 7.833251528895281e-06 + 7.690766049713759e-06 + 7.550286971453687e-06 + 7.411795314787993e-06 + 7.275272152381047e-06 + 7.140698608042407e-06 + 7.008055865069554e-06 + 6.877325162999093e-06 + 6.748487797069182e-06 + 6.621525126924672e-06 + 6.496418573295794e-06 + 6.373149617974847e-06 + 6.251699810845691e-06 + 6.132050767139283e-06 + 6.014184168887862e-06 + 5.898081770597224e-06 + 5.783725394973654e-06 + 5.671096936050662e-06 + 5.560178365641361e-06 + 5.450951726966341e-06 + 5.343399138917566e-06 + 5.237502802602254e-06 + 5.133244993336976e-06 + 5.030608065950253e-06 + 4.929574461382145e-06 + 4.830126698086031e-06 + 4.732247378331277e-06 + 4.635919192753656e-06 + 4.541124912789582e-06 + 4.447847398958468e-06 + 4.356069602328335e-06 + 4.265774557056776e-06 + 4.176945389932598e-06 + 4.089565320281935e-06 + 4.003617653697645e-06 + 3.919085793399028e-06 + 3.835953236362346e-06 + 3.754203567594348e-06 + 3.673820472678765e-06 + 3.594787733829004e-06 + 3.517089224074456e-06 + 3.440708918621393e-06 + 3.365630891050476e-06 + 3.291839308866544e-06 + 3.219318444550688e-06 + 3.148052669614368e-06 + 3.078026451876596e-06 + 3.009224366838337e-06 + 2.941631088840265e-06 + 2.875231390541817e-06 + 2.810010156134118e-06 + 2.745952369256776e-06 + 2.683043113446972e-06 + 2.621267584374269e-06 + 2.560611078236376e-06 + 2.501058994098514e-06 + 2.442596843868032e-06 + 2.385210240033010e-06 + 2.328884899906223e-06 + 2.273606655048426e-06 + 2.219361438179688e-06 + 2.166135288678882e-06 + 2.113914360085187e-06 + 2.062684907096663e-06 + 2.012433292648363e-06 + 1.963145994708785e-06 + 1.914809593193956e-06 + 1.867410777738679e-06 + 1.820936351687259e-06 + 1.775373220609589e-06 + 1.730708401732302e-06 + 1.686929024947410e-06 + 1.644022323067757e-06 + 1.601975642837270e-06 + 1.560776441656341e-06 + 1.520412279298016e-06 + 1.480870830315665e-06 + 1.442139880698395e-06 + 1.404207319625165e-06 + 1.367061149777226e-06 + 1.330689483155573e-06 + 1.295080535963615e-06 + 1.260222640873472e-06 + 1.226104237141460e-06 + 1.192713867093549e-06 + 1.160040189500492e-06 + 1.128071969424555e-06 + 1.096798076008267e-06 + 1.066207493417804e-06 + 1.036289310659725e-06 + 1.007032721493895e-06 + 9.784270338592895e-07 + 9.504616588874799e-07 + 9.231261128777845e-07 + 8.964100256766087e-07 + 8.703031286825232e-07 + 8.447952585150839e-07 + 8.198763641874936e-07 + 7.955364948286083e-07 + 7.717658049346632e-07 + 7.485545598914059e-07 + 7.258931238786546e-07 + 7.037719665410901e-07 + 6.821816664988581e-07 + 6.611128998791421e-07 + 6.405564483055948e-07 + 6.205032003278225e-07 + 6.009441408121614e-07 + 5.818703600152187e-07 + 5.632730528626383e-07 + 5.451435094097432e-07 + 5.274731247677268e-07 + 5.102533965000488e-07 + 4.934759162480692e-07 + 4.771323800991179e-07 + 4.612145841662162e-07 + 4.457144176881476e-07 + 4.306238737382497e-07 + 4.159350428538716e-07 + 4.016401077051372e-07 + 3.877313539402903e-07 + 3.742011622647174e-07 + 3.610420046499709e-07 + 3.482464547968944e-07 + 3.358071790150475e-07 + 3.237169340794661e-07 + 3.119685770955318e-07 + 3.005550554375413e-07 + 2.894694062090586e-07 + 2.787047650882795e-07 + 2.682543557659438e-07 + 2.581114909968296e-07 + 2.482695801165890e-07 + 2.387221182727572e-07 + 2.294626890008751e-07 + 2.204849703818711e-07 + 2.117827241548630e-07 + 2.033497996067267e-07 + 1.951801384624956e-07 + 1.872677641420447e-07 + 1.796067867093452e-07 + 1.721914062527642e-07 + 1.650159027896018e-07 + 1.580746421942365e-07 + 1.513620776690125e-07 + 1.448727406655565e-07 + 1.386012477684331e-07 + 1.325423000867771e-07 + 1.266906752868051e-07 + 1.210412352836648e-07 + 1.155889239131470e-07 + 1.103287600176973e-07 + 1.052558455547364e-07 + 1.003653617115032e-07 + 9.565256321109978e-08 + 9.111278671292873e-08 + 8.674144556415159e-08 + 8.253402527034383e-08 + 7.848609177536523e-08 + 7.459328520671134e-08 + 7.085131661573615e-08 + 6.725597593242166e-08 + 6.380312478868793e-08 + 6.048869454868003e-08 + 5.730869376312298e-08 + 5.425920030057914e-08 + 5.133636064443935e-08 + 4.853639660958214e-08 + 4.585559704969457e-08 + 4.329031836991616e-08 + 4.083699031045398e-08 + 3.849210751108346e-08 + 3.625223113812888e-08 + 3.411399355038575e-08 + 3.207408998824199e-08 + 3.012928121511996e-08 + 2.827639696078167e-08 + 2.651232793166280e-08 + 2.483402934338396e-08 + 2.323852311474514e-08 + 2.172289034680298e-08 + 2.028427559044146e-08 + 1.891988778877689e-08 + 1.762699339728036e-08 + 1.640292125402531e-08 + 1.524506224991720e-08 + 1.415086320949184e-08 + 1.311783222446413e-08 + 1.214353712508316e-08 + 1.122560019257377e-08 + 1.036170378687137e-08 + 9.549587722603005e-09 + 8.787044877843281e-09 + 8.071926961605364e-09 + 7.402140903161946e-09 + 6.775645388472587e-09 + 6.190456604129221e-09 + 5.644643792323680e-09 + 5.136326726146161e-09 + 4.663681262833891e-09 + 4.224934232596794e-09 + 3.818361845837701e-09 + 3.442294891302550e-09 + 3.095113141246544e-09 + 2.775244665814773e-09 + 2.481170514027403e-09 + 2.211418834557044e-09 + 1.964565051498559e-09 + 1.739235878927056e-09 + 1.534103359980556e-09 + 1.347885831336700e-09 + 1.179351163642234e-09 + 1.027310894648576e-09 + 8.906218977827446e-10 + 7.681887799049897e-10 + 6.589582548472836e-10 + 5.619214238374888e-10 + 4.761152985830568e-10 + 4.006175343477256e-10 + 3.345492227248809e-10 + 2.770755362128679e-10 + 2.274009179016229e-10 + 1.847722840116674e-10 + 1.484788129161787e-10 + 1.178476648704315e-10 + 9.224748788184573e-11 + 7.108739902161543e-11 + 5.381328706422649e-11 + 3.991151299277479e-11 + 2.890715266694438e-11 + 2.036091648096713e-11 + 1.387293445657948e-11 + 9.080348320515963e-12 + 5.654863833225597e-12 + 3.306507674167889e-12 + 1.780689492983021e-12 + 8.563646514161430e-13 + 3.496037276049943e-13 + 1.104943293034196e-13 + 2.161027650041889e-14 + 5.028049336448720e-16 + 0.000000000000000e+00 + 0.000000000000000e+00 + 7.485272593961791e+04 + 1.493519318697679e+05 + 2.234970831294996e+05 + 2.972876533345640e+05 + 3.707231243774131e+05 + 4.438029864272003e+05 + 5.165267379297798e+05 + 5.888938856077072e+05 + 6.609039444602393e+05 + 7.325564377633340e+05 + 8.038508970696502e+05 + 8.747868622085482e+05 + 9.453638812860892e+05 + 1.015581510685036e+06 + 1.085439315064852e+06 + 1.154936867361703e+06 + 1.224073748788454e+06 + 1.292849548834672e+06 + 1.361263865266626e+06 + 1.429316304127287e+06 + 1.497006479736322e+06 + 1.564334014690106e+06 + 1.631298539861710e+06 + 1.697899694400910e+06 + 1.764137125734180e+06 + 1.830010489564698e+06 + 1.895519449872339e+06 + 1.960663678913685e+06 + 2.025442857222013e+06 + 2.089856673607306e+06 + 2.153904825156247e+06 + 2.217587017232217e+06 + 2.280902963475303e+06 + 2.343852385802290e+06 + 2.406435014406665e+06 + 2.468650587758616e+06 + 2.530498852605031e+06 + 2.591979563969503e+06 + 2.653092485152322e+06 + 2.713837387730482e+06 + 2.774214051557675e+06 + 2.834222264764299e+06 + 2.893861823757447e+06 + 2.953132533220919e+06 + 3.012034206115212e+06 + 3.070566663677527e+06 + 3.128729735421764e+06 + 3.186523259138526e+06 + 3.243947080895115e+06 + 3.301001055035538e+06 + 3.357685044180497e+06 + 3.413998919227402e+06 + 3.469942559350358e+06 + 3.525515852000176e+06 + 3.580718692904367e+06 + 3.635550986067140e+06 + 3.690012643769410e+06 + 3.744103586568788e+06 + 3.797823743299592e+06 + 3.851173051072835e+06 + 3.904151455276238e+06 + 3.956758909574216e+06 + 4.008995375907890e+06 + 4.060860824495079e+06 + 4.112355233830309e+06 + 4.163478590684799e+06 + 4.214230890106475e+06 + 4.264612135419963e+06 + 4.314622338226588e+06 + 4.364261518404378e+06 + 4.413529704108060e+06 + 4.462426931769069e+06 + 4.510953246095533e+06 + 4.559108700072286e+06 + 4.606893354960858e+06 + 4.654307280299488e+06 + 4.701350553903108e+06 + 4.748023261863358e+06 + 4.794325498548575e+06 + 4.840257366603798e+06 + 4.885818976950768e+06 + 4.931010448787929e+06 + 4.975831909590418e+06 + 5.020283495110085e+06 + 5.064365349375471e+06 + 5.108077624691823e+06 + 5.151420481641092e+06 + 5.194394089081923e+06 + 5.236998624149668e+06 + 5.279234272256376e+06 + 5.321101227090800e+06 + 5.362599690618395e+06 + 5.403729873081312e+06 + 5.444491992998408e+06 + 5.484886277165242e+06 + 5.524912960654069e+06 + 5.564572286813851e+06 + 5.603864507270245e+06 + 5.642789881925615e+06 + 5.681348678959022e+06 + 5.719541174826232e+06 + 5.757367654259708e+06 + 5.794828410268617e+06 + 5.831923744138825e+06 + 5.868653965432902e+06 + 5.905019391990117e+06 + 5.941020349926441e+06 + 5.976657173634544e+06 + 6.011930205783804e+06 + 6.046839797320290e+06 + 6.081386307466779e+06 + 6.115570103722748e+06 + 6.149391561864376e+06 + 6.182851065944540e+06 + 6.215949008292822e+06 + 6.248685789515501e+06 + 6.281061818495561e+06 + 6.313077512392686e+06 + 6.344733296643257e+06 + 6.376029604960365e+06 + 6.406966879333793e+06 + 6.437545570030033e+06 + 6.467766135592271e+06 + 6.497629042840399e+06 + 6.527134766871008e+06 + 6.556283791057392e+06 + 6.585076607049545e+06 + 6.613513714774162e+06 + 6.641595622434638e+06 + 6.669322846511072e+06 + 6.696695911760264e+06 + 6.723715351215711e+06 + 6.750381706187615e+06 + 6.776695526262878e+06 + 6.802657369305105e+06 + 6.828267801454599e+06 + 6.853527397128366e+06 + 6.878436739020114e+06 + 6.902996418100249e+06 + 6.927207033615881e+06 + 6.951069193090819e+06 + 6.974583512325577e+06 + 6.997750615397365e+06 + 7.020571134660101e+06 + 7.043045710744397e+06 + 7.065174992557568e+06 + 7.086959637283633e+06 + 7.108400310383311e+06 + 7.129497685594021e+06 + 7.150252444929884e+06 + 7.170665278681723e+06 + 7.190736885417059e+06 + 7.210467971980117e+06 + 7.229859253491821e+06 + 7.248911453349800e+06 + 7.267625303228384e+06 + 7.286001543078595e+06 + 7.304040921128170e+06 + 7.321744193881537e+06 + 7.339112126119829e+06 + 7.356145490900878e+06 + 7.372845069559221e+06 + 7.389211651706094e+06 + 7.405246035229432e+06 + 7.420949026293878e+06 + 7.436321439340766e+06 + 7.451364097088138e+06 + 7.466077830530737e+06 + 7.480463478940005e+06 + 7.494521889864086e+06 + 7.508253919127826e+06 + 7.521660430832772e+06 + 7.534742297357169e+06 + 7.547500399355968e+06 + 7.559935625760819e+06 + 7.572048873780073e+06 + 7.583841048898782e+06 + 7.595313064878696e+06 + 7.606465843758276e+06 + 7.617300315852673e+06 + 7.627817419753745e+06 + 7.638018102330050e+06 + 7.647903318726848e+06 + 7.657474032366097e+06 + 7.666731214946462e+06 + 7.675675846443305e+06 + 7.684308915108687e+06 + 7.692631417471377e+06 + 7.700644358336839e+06 + 7.708348750787240e+06 + 7.715745616181449e+06 + 7.722835984155037e+06 + 7.729620892620270e+06 + 7.736101387766127e+06 + 7.742278524058277e+06 + 7.748153364239094e+06 + 7.753726979327655e+06 + 7.759000448619737e+06 + 7.763974859687817e+06 + 7.768651308381077e+06 + 7.773030898825390e+06 + 7.777114743423343e+06 + 7.780903962854218e+06 + 7.784399686073998e+06 + 7.787603050315368e+06 + 7.790515201087713e+06 + 7.793137292177119e+06 + 7.795470485646380e+06 + 7.797515951834979e+06 + 7.799274869359110e+06 + 7.800748425111664e+06 + 7.801937814262233e+06 + 7.802844240257111e+06 + 7.803468914819297e+06 + 7.803813057948484e+06 + 7.803877897921070e+06 + 7.803664671290156e+06 + 7.803174622885538e+06 + 7.802409005813722e+06 + 7.801369081457905e+06 + 7.800056119477995e+06 + 7.798471397810592e+06 + 7.796616202669007e+06 + 7.794491828543244e+06 + 7.792099578200010e+06 + 7.789440762682715e+06 + 7.786516701311473e+06 + 7.783328721683091e+06 + 7.779878159671083e+06 + 7.776166359425665e+06 + 7.772194673373749e+06 + 7.767964462218953e+06 + 7.763477094941595e+06 + 7.758733948798692e+06 + 7.753736409323964e+06 + 7.748485870327833e+06 + 7.742983733897421e+06 + 7.737231410396548e+06 + 7.731230318465743e+06 + 7.724981885022229e+06 + 7.718487545259933e+06 + 7.711748742649483e+06 + 7.704766928938209e+06 + 7.697543564150140e+06 + 7.690080116586007e+06 + 7.682378062823243e+06 + 7.674438887715982e+06 + 7.666264084395060e+06 + 7.657855154268012e+06 + 7.649213607019073e+06 + 7.640340960609185e+06 + 7.631238741275986e+06 + 7.621908483533815e+06 + 7.612351730173716e+06 + 7.602570032263434e+06 + 7.592564949147409e+06 + 7.582338048446788e+06 + 7.571890906059416e+06 + 7.561225106159844e+06 + 7.550342241199316e+06 + 7.539243911905785e+06 + 7.527931727283904e+06 + 7.516407304615024e+06 + 7.504672269457198e+06 + 7.492728241314434e+06 + 7.480576638153253e+06 + 7.468218723741564e+06 + 7.455655760425863e+06 + 7.442889013018662e+06 + 7.429919748798485e+06 + 7.416749237509867e+06 + 7.403378751363355e+06 + 7.389809565035504e+06 + 7.376042955668893e+06 + 7.362080202872100e+06 + 7.347922588719724e+06 + 7.333571397752370e+06 + 7.319027916976659e+06 + 7.304293435865226e+06 + 7.289369246356713e+06 + 7.274256642855777e+06 + 7.258956922233087e+06 + 7.243471383825325e+06 + 7.227801329435183e+06 + 7.211948063331366e+06 + 7.195912892248592e+06 + 7.179697125387593e+06 + 7.163302074415106e+06 + 7.146729053463890e+06 + 7.129979379132709e+06 + 7.113054370486340e+06 + 7.095955349055575e+06 + 7.078683638837219e+06 + 7.061240566294081e+06 + 7.043627460354994e+06 + 7.025845652414794e+06 + 7.007896476334333e+06 + 6.989781268440476e+06 + 6.971501367526096e+06 + 6.953058114850082e+06 + 6.934452854137335e+06 + 6.915686931578767e+06 + 6.896761695831302e+06 + 6.877678498017876e+06 + 6.858438691727439e+06 + 6.839043633014950e+06 + 6.819494680401385e+06 + 6.799793194873727e+06 + 6.779940539884974e+06 + 6.759938081354136e+06 + 6.739787187666233e+06 + 6.719489229672301e+06 + 6.699045580689385e+06 + 6.678457616500544e+06 + 6.657726715354848e+06 + 6.636854257967380e+06 + 6.615841627519235e+06 + 6.594690209657516e+06 + 6.573401392495350e+06 + 6.551976566611862e+06 + 6.530417125052197e+06 + 6.508724463327511e+06 + 6.486899979414972e+06 + 6.464945073757762e+06 + 6.442861149265066e+06 + 6.420649611312096e+06 + 6.398311867740063e+06 + 6.375849328856199e+06 + 6.353263407433745e+06 + 6.330555518711952e+06 + 6.307727080396090e+06 + 6.284779512657427e+06 + 6.261714238133261e+06 + 6.238532681926889e+06 + 6.215236271607627e+06 + 6.191826437210800e+06 + 6.168304611237747e+06 + 6.144672228655818e+06 + 6.120930726898375e+06 + 6.097081545864792e+06 + 6.073126127920459e+06 + 6.049065917896771e+06 + 6.024902363091142e+06 + 6.000636913266994e+06 + 5.976271020653763e+06 + 5.951806139946896e+06 + 5.927243728307854e+06 + 5.902585245364108e+06 + 5.877832153209144e+06 + 5.852985916402456e+06 + 5.828048001969552e+06 + 5.803019879401957e+06 + 5.777903020657199e+06 + 5.752698900158828e+06 + 5.727408994796395e+06 + 5.702034783925475e+06 + 5.676577749367647e+06 + 5.651039375410506e+06 + 5.625421148807654e+06 + 5.599724558778713e+06 + 5.573951097009313e+06 + 5.548102257651095e+06 + 5.522179537321717e+06 + 5.496184435104840e+06 + 5.470118452550147e+06 + 5.443983093673326e+06 + 5.417779864956085e+06 + 5.391510275346133e+06 + 5.365175836257203e+06 + 5.338778061569033e+06 + 5.312318467627374e+06 + 5.285798573243992e+06 + 5.259219899696662e+06 + 5.232583970729172e+06 + 5.205892312551324e+06 + 5.179146453838928e+06 + 5.152347925733812e+06 + 5.125498261843814e+06 + 5.098598998242779e+06 + 5.071651673470572e+06 + 5.044657828533064e+06 + 5.017619006902143e+06 + 4.990536754515706e+06 + 4.963412619777663e+06 + 4.936248153557934e+06 + 4.909044909192459e+06 + 4.881804442483181e+06 + 4.854528311698059e+06 + 4.827218077571064e+06 + 4.799875303302180e+06 + 4.772501554557402e+06 + 4.745098399468737e+06 + 4.717667408634203e+06 + 4.690210155117837e+06 + 4.662728214449679e+06 + 4.635223164625784e+06 + 4.607696586108224e+06 + 4.580150061825077e+06 + 4.552585177170437e+06 + 4.525003520004408e+06 + 4.497406680653105e+06 + 4.469796251908661e+06 + 4.442173829029216e+06 + 4.414541009738924e+06 + 4.386899394227949e+06 + 4.359250585152469e+06 + 4.331596187634676e+06 + 4.303937809262771e+06 + 4.276277060090966e+06 + 4.248615552639492e+06 + 4.220954901894585e+06 + 4.193296725308497e+06 + 4.165642642799490e+06 + 4.137994276751838e+06 + 4.110353252015833e+06 + 4.082721195907769e+06 + 4.055099738209962e+06 + 4.027490511170732e+06 + 3.999895149504419e+06 + 3.972315290391369e+06 + 3.944752573477943e+06 + 3.917208640876513e+06 + 3.889685137165464e+06 + 3.862183709389194e+06 + 3.834706007058111e+06 + 3.807253682148634e+06 + 3.779828389103201e+06 + 3.752431784830255e+06 + 3.725065528704253e+06 + 3.697731282565667e+06 + 3.670430710720977e+06 + 3.643165479942679e+06 + 3.615937259469279e+06 + 3.588747721005293e+06 + 3.561598538721256e+06 + 3.534491389253709e+06 + 3.507427951705208e+06 + 3.480409907644318e+06 + 3.453438941105620e+06 + 3.426516738589706e+06 + 3.399644989063177e+06 + 3.372825383958653e+06 + 3.346070405300663e+06 + 3.319465764034668e+06 + 3.293075510459727e+06 + 3.266878224028187e+06 + 3.240869303162930e+06 + 3.215052515525467e+06 + 3.189425288821125e+06 + 3.163986116962672e+06 + 3.138734196986282e+06 + 3.113668261011591e+06 + 3.088787111422079e+06 + 3.064089610843659e+06 + 3.039574592322599e+06 + 3.015240898358055e+06 + 2.991087379108502e+06 + 2.967112887579310e+06 + 2.943316282301805e+06 + 2.919696425519270e+06 + 2.896252185185970e+06 + 2.872982434032476e+06 + 2.849886048305633e+06 + 2.826961910405915e+06 + 2.804208907130155e+06 + 2.781625929123051e+06 + 2.759211873644148e+06 + 2.736965641930875e+06 + 2.714886139213983e+06 + 2.692972277509980e+06 + 2.671222972611625e+06 + 2.649637144535781e+06 + 2.628213719738566e+06 + 2.606951628696007e+06 + 2.585849806893141e+06 + 2.564907195391811e+06 + 2.544122739173453e+06 + 2.523495389008342e+06 + 2.503024101022326e+06 + 2.482707834844927e+06 + 2.462545556054412e+06 + 2.442536236120740e+06 + 2.422678849863131e+06 + 2.402972377820649e+06 + 2.383415806334849e+06 + 2.364008125120872e+06 + 2.344748329835404e+06 + 2.325635421794777e+06 + 2.306668405813749e+06 + 2.287846292982958e+06 + 2.269168099757709e+06 + 2.250632846050586e+06 + 2.232239558087812e+06 + 2.213987266957964e+06 + 2.195875007435864e+06 + 2.177901821473463e+06 + 2.160066755143500e+06 + 2.142368857948063e+06 + 2.124807187017495e+06 + 2.107380803567688e+06 + 2.090088772295509e+06 + 2.072930165358991e+06 + 2.055904058912681e+06 + 2.039009532618940e+06 + 2.022245673041180e+06 + 2.005611571515091e+06 + 1.989106323649552e+06 + 1.972729030298793e+06 + 1.956478797095825e+06 + 1.940354734917566e+06 + 1.924355960016194e+06 + 1.908481592593613e+06 + 1.892730757829583e+06 + 1.877102587255698e+06 + 1.861596215902473e+06 + 1.846210783186639e+06 + 1.830945435012332e+06 + 1.815799321323061e+06 + 1.800771597138300e+06 + 1.785861422681660e+06 + 1.771067961851037e+06 + 1.756390384114008e+06 + 1.741827864373811e+06 + 1.727379581118251e+06 + 1.713044718232857e+06 + 1.698822464839031e+06 + 1.684712013805151e+06 + 1.670712563808684e+06 + 1.656823318006428e+06 + 1.643043483055245e+06 + 1.629372271790869e+06 + 1.615808901794204e+06 + 1.602352594044968e+06 + 1.589002574975609e+06 + 1.575758076322615e+06 + 1.562618333634041e+06 + 1.549582587186907e+06 + 1.536650081999105e+06 + 1.523820067124634e+06 + 1.511091797064626e+06 + 1.498464530780005e+06 + 1.485937531189585e+06 + 1.473510066471004e+06 + 1.461181408848471e+06 + 1.448950834625962e+06 + 1.436817625926470e+06 + 1.424781068397768e+06 + 1.412840451407005e+06 + 1.400995070309470e+06 + 1.389244224245752e+06 + 1.377587216393601e+06 + 1.366023355231714e+06 + 1.354551952598923e+06 + 1.343172324427429e+06 + 1.331883792566280e+06 + 1.320685682335073e+06 + 1.309577322956444e+06 + 1.298558048406515e+06 + 1.287627196362487e+06 + 1.276784109496439e+06 + 1.266028134784103e+06 + 1.255358622320226e+06 + 1.244774926866806e+06 + 1.234276408467881e+06 + 1.223862430240984e+06 + 1.213532358913532e+06 + 1.203285566621101e+06 + 1.193121428991948e+06 + 1.183039325468658e+06 + 1.173038640304339e+06 + 1.163118761212139e+06 + 1.153279079987504e+06 + 1.143518992564451e+06 + 1.133837898317260e+06 + 1.124235201394960e+06 + 1.114710310121780e+06 + 1.105262636013577e+06 + 1.095891594215875e+06 + 1.086596604396163e+06 + 1.077377090233802e+06 + 1.068232479242110e+06 + 1.059162202266971e+06 + 1.050165693700918e+06 + 1.041242393088349e+06 + 1.032391743039430e+06 + 1.023613189178869e+06 + 1.014906181731556e+06 + 1.006270174355871e+06 + 9.977046244036794e+05 + 9.892089935677024e+05 + 9.807827465832273e+05 + 9.724253516436865e+05 + 9.641362810046984e+05 + 9.559150102252770e+05 + 9.477610188719215e+05 + 9.396737899139688e+05 + 9.316528091743080e+05 + 9.236975665277143e+05 + 9.158075561735997e+05 + 9.079822751134991e+05 + 9.002212236533747e+05 + 8.925239057014534e+05 + 8.848898281604102e+05 + 8.773185021612709e+05 + 8.698094424648809e+05 + 8.623621663528095e+05 + 8.549761944053203e+05 + 8.476510510446843e+05 + 8.403862637513808e+05 + 8.331813638606276e+05 + 8.260358860837971e+05 + 8.189493675787508e+05 + 8.119213484350282e+05 + 8.049513730504208e+05 + 7.980389891667470e+05 + 7.911837471192866e+05 + 7.843852003599521e+05 + 7.776429053419405e+05 + 7.709564221446526e+05 + 7.643253140173181e+05 + 7.577491471803443e+05 + 7.512274911598503e+05 + 7.447599180231568e+05 + 7.383460026539576e+05 + 7.319853241781880e+05 + 7.256774641850799e+05 + 7.194220067146936e+05 + 7.132185395309449e+05 + 7.070666529520636e+05 + 7.009659400728574e+05 + 6.949159975085063e+05 + 6.889164244086053e+05 + 6.829668228095188e+05 + 6.770667979456050e+05 + 6.712159574726904e+05 + 6.654139120281750e+05 + 6.596602754201142e+05 + 6.539546638052445e+05 + 6.482966962660485e+05 + 6.426859949531512e+05 + 6.371221843431445e+05 + 6.316048918617199e+05 + 6.261337478197705e+05 + 6.207083848228143e+05 + 6.153284385055641e+05 + 6.099935472682050e+05 + 6.047033517354903e+05 + 5.994574954765684e+05 + 5.942556247644721e+05 + 5.890973881315375e+05 + 5.839824370501742e+05 + 5.789104255366600e+05 + 5.738810098259439e+05 + 5.688938490610282e+05 + 5.639486048510919e+05 + 5.590449410545636e+05 + 5.541825244030216e+05 + 5.493610239467514e+05 + 5.445801109611018e+05 + 5.398394595653637e+05 + 5.351387461239359e+05 + 5.304776492529869e+05 + 5.258558503354813e+05 + 5.212730328842620e+05 + 5.167288826663374e+05 + 5.122230881980868e+05 + 5.077553400369428e+05 + 5.033253309731948e+05 + 4.989327564601310e+05 + 4.945773139811803e+05 + 4.902587033143605e+05 + 4.859766266490913e+05 + 4.817307881770549e+05 + 4.775208945372272e+05 + 4.733466546121029e+05 + 4.692077791818720e+05 + 4.651039814988278e+05 + 4.610349770333872e+05 + 4.570004830895544e+05 + 4.530002193970305e+05 + 4.490339078641191e+05 + 4.451012721716975e+05 + 4.412020383482487e+05 + 4.373359346346440e+05 + 4.335026910461138e+05 + 4.297020398291695e+05 + 4.259337153289251e+05 + 4.221974536699117e+05 + 4.184929932504728e+05 + 4.148200744355357e+05 + 4.111784393468680e+05 + 4.075678324287459e+05 + 4.039879999559653e+05 + 4.004386899065928e+05 + 3.969196525836200e+05 + 3.934306400492930e+05 + 3.899714060581240e+05 + 3.865417066557175e+05 + 3.831412995849459e+05 + 3.797699442729113e+05 + 3.764274023566474e+05 + 3.731134371233769e+05 + 3.698278135622827e+05 + 3.665702987827645e+05 + 3.633406615280775e+05 + 3.601386722825769e+05 + 3.569641034535824e+05 + 3.538167290782596e+05 + 3.506963250581825e+05 + 3.476026690576235e+05 + 3.445355402744773e+05 + 3.414947198014101e+05 + 3.384799905288533e+05 + 3.354911367821696e+05 + 3.325279446663284e+05 + 3.295902021531574e+05 + 3.266776986085196e+05 + 3.237902250531212e+05 + 3.209275743946921e+05 + 3.180895409646722e+05 + 3.152759207164211e+05 + 3.124865112943467e+05 + 3.097211117598721e+05 + 3.069795229448014e+05 + 3.042615472339510e+05 + 3.015669883675390e+05 + 2.988956518738279e+05 + 2.962473447339852e+05 + 2.936218752484120e+05 + 2.910190535228683e+05 + 2.884386911235514e+05 + 2.858806009067059e+05 + 2.833445973150213e+05 + 2.808304963224871e+05 + 2.783381153152796e+05 + 2.758672731341289e+05 + 2.734177900017136e+05 + 2.709894875428715e+05 + 2.685821889451269e+05 + 2.661957187314447e+05 + 2.638299027837526e+05 + 2.614845683836235e+05 + 2.591595441417535e+05 + 2.568546601323142e+05 + 2.545697477628685e+05 + 2.523046396706559e+05 + 2.500591699434964e+05 + 2.478331740644226e+05 + 2.456264886409644e+05 + 2.434389516128850e+05 + 2.412704023657298e+05 + 2.391206814330098e+05 + 2.369896306904384e+05 + 2.348770933197599e+05 + 2.327829136173563e+05 + 2.307069372775990e+05 + 2.286490111745211e+05 + 2.266089832623643e+05 + 2.245867029748616e+05 + 2.225820209237310e+05 + 2.205947887183862e+05 + 2.186248592921233e+05 + 2.166720868039439e+05 + 2.147363264605261e+05 + 2.128174347706827e+05 + 2.109152693889452e+05 + 2.090296889843596e+05 + 2.071605535077064e+05 + 2.053077240108720e+05 + 2.034710625599661e+05 + 2.016504325007521e+05 + 1.998456982030229e+05 + 1.980567250370223e+05 + 1.962833797138016e+05 + 1.945255298870997e+05 + 1.927830441323482e+05 + 1.910557922964590e+05 + 1.893436452442803e+05 + 1.876464748512476e+05 + 1.859641540986015e+05 + 1.842965568967865e+05 + 1.826435581738182e+05 + 1.810050340354470e+05 + 1.793808614993985e+05 + 1.777709185575675e+05 + 1.761750842223128e+05 + 1.745932384546507e+05 + 1.730252623268235e+05 + 1.714710377603550e+05 + 1.699304475698536e+05 + 1.684033757560533e+05 + 1.668897071565261e+05 + 1.653893274220018e+05 + 1.639021233234161e+05 + 1.624279825159149e+05 + 1.609667934564489e+05 + 1.595184456811041e+05 + 1.580828296015031e+05 + 1.566598363968120e+05 + 1.552493582649543e+05 + 1.538512882702573e+05 + 1.524655202573447e+05 + 1.510919491064028e+05 + 1.497304705096718e+05 + 1.483809809029638e+05 + 1.470433777326744e+05 + 1.457175592117312e+05 + 1.444034242942686e+05 + 1.431008729933990e+05 + 1.418098060421684e+05 + 1.405301248671864e+05 + 1.392617319094920e+05 + 1.380045303259556e+05 + 1.367584239714278e+05 + 1.355233176631985e+05 + 1.342991169575939e+05 + 1.330857281367400e+05 + 1.318830583220329e+05 + 1.306910153813551e+05 + 1.295095079605118e+05 + 1.283384454277201e+05 + 1.271777378619642e+05 + 1.260272961737778e+05 + 1.248870320778846e+05 + 1.237568578844075e+05 + 1.226366865814357e+05 + 1.215264320654815e+05 + 1.204260088572700e+05 + 1.193353321256488e+05 + 1.182543179024696e+05 + 1.171828828329888e+05 + 1.161209441971572e+05 + 1.150684200368906e+05 + 1.140252290172446e+05 + 1.129912905290012e+05 + 1.119665246989244e+05 + 1.109508522377596e+05 + 1.099441945145749e+05 + 1.089464735474612e+05 + 1.079576119759672e+05 + 1.069775332658437e+05 + 1.060061613940063e+05 + 1.050434208615313e+05 + 1.040892370245828e+05 + 1.031435357647047e+05 + 1.022062434696232e+05 + 1.012772873208916e+05 + 1.003565950684523e+05 + 9.944409498683986e+04 + 9.853971604124359e+04 + 9.764338777276211e+04 + 9.675504027159151e+04 + 9.587460425195689e+04 + 9.500201099602232e+04 + 9.413719236230559e+04 + 9.328008081668093e+04 + 9.243060935253548e+04 + 9.158871152497102e+04 + 9.075432150057999e+04 + 8.992737394814150e+04 + 8.910780408381460e+04 + 8.829554772812854e+04 + 8.749054118346877e+04 + 8.669272128864085e+04 + 8.590202548133289e+04 + 8.511839166524833e+04 + 8.434175826486869e+04 + 8.357206428147563e+04 + 8.280924917713979e+04 + 8.205325293940101e+04 + 8.130401609766987e+04 + 8.056147962909786e+04 + 7.982558503959214e+04 + 7.909627435336930e+04 + 7.837349003289423e+04 + 7.765717506702039e+04 + 7.694727293156023e+04 + 7.624372753229675e+04 + 7.554648331079309e+04 + 7.485548516457589e+04 + 7.417067840840557e+04 + 7.349200889763620e+04 + 7.281942291879337e+04 + 7.215286716185752e+04 + 7.149228885123666e+04 + 7.083763563584826e+04 + 7.018885556144921e+04 + 6.954589717270633e+04 + 6.890870943981725e+04 + 6.827724174191867e+04 + 6.765144392787226e+04 + 6.703126624692857e+04 + 6.641665935636370e+04 + 6.580757439267423e+04 + 6.520396286738058e+04 + 6.460577668030654e+04 + 6.401296820028803e+04 + 6.342549017134596e+04 + 6.284329573351656e+04 + 6.226633845994343e+04 + 6.169457228450359e+04 + 6.112795154311772e+04 + 6.056643099463883e+04 + 6.000996574136701e+04 + 5.945851127624574e+04 + 5.891202351267684e+04 + 5.837045869755570e+04 + 5.783377345558033e+04 + 5.730192482224794e+04 + 5.677487016169035e+04 + 5.625256720967715e+04 + 5.573497408983271e+04 + 5.522204924870504e+04 + 5.471375150828325e+04 + 5.421004006036229e+04 + 5.371087441354901e+04 + 5.321621444975662e+04 + 5.272602039469258e+04 + 5.224025278120609e+04 + 5.175887251825204e+04 + 5.128184085536604e+04 + 5.080911934597862e+04 + 5.034066989608183e+04 + 4.987645473684455e+04 + 4.941643640415772e+04 + 4.896057778639881e+04 + 4.850884207769758e+04 + 4.806119277190277e+04 + 4.761759372195903e+04 + 4.717800906318111e+04 + 4.674240321587012e+04 + 4.631074096205200e+04 + 4.588298735942246e+04 + 4.545910774537743e+04 + 4.503906779825089e+04 + 4.462283347373459e+04 + 4.421037101686000e+04 + 4.380164697651120e+04 + 4.339662816996042e+04 + 4.299528171729217e+04 + 4.259757504220949e+04 + 4.220347581706527e+04 + 4.181295199605238e+04 + 4.142597183433527e+04 + 4.104250383855765e+04 + 4.066251680332360e+04 + 4.028597979815155e+04 + 3.991286213370509e+04 + 3.954313341370015e+04 + 3.917676350485435e+04 + 3.881372250661203e+04 + 3.845398080843414e+04 + 3.809750905736740e+04 + 3.774427812448402e+04 + 3.739425915595785e+04 + 3.704742356207799e+04 + 3.670374297805164e+04 + 3.636318929176292e+04 + 3.602573463927982e+04 + 3.569135138416072e+04 + 3.536001215672983e+04 + 3.503168981923036e+04 + 3.470635744840465e+04 + 3.438398837321134e+04 + 3.406455615393208e+04 + 3.374803457309094e+04 + 3.343439765983423e+04 + 3.312361965186892e+04 + 3.281567499925836e+04 + 3.251053841177231e+04 + 3.220818480242078e+04 + 3.190858928930939e+04 + 3.161172723179306e+04 + 3.131757418548949e+04 + 3.102610591483113e+04 + 3.073729842710719e+04 + 3.045112791454117e+04 + 3.016757076691534e+04 + 2.988660361584138e+04 + 2.960820327321778e+04 + 2.933234674204399e+04 + 2.905901125674980e+04 + 2.878817423326317e+04 + 2.851981328372868e+04 + 2.825390622682930e+04 + 2.799043106146120e+04 + 2.772936599846356e+04 + 2.747068942978120e+04 + 2.721437991599866e+04 + 2.696041623625263e+04 + 2.670877735469368e+04 + 2.645944239579323e+04 + 2.621239068106394e+04 + 2.596760172331024e+04 + 2.572505519859007e+04 + 2.548473096648493e+04 + 2.524660907253227e+04 + 2.501066972455740e+04 + 2.477689330466365e+04 + 2.454526037995217e+04 + 2.431575168300119e+04 + 2.408834810912627e+04 + 2.386303072521571e+04 + 2.363978076395976e+04 + 2.341857962988761e+04 + 2.319940888531031e+04 + 2.298225025100848e+04 + 2.276708562349589e+04 + 2.255389704384009e+04 + 2.234266670372097e+04 + 2.213337697918792e+04 + 2.192601038403303e+04 + 2.172054957464747e+04 + 2.151697738916041e+04 + 2.131527680276242e+04 + 2.111543093252480e+04 + 2.091742306098243e+04 + 2.072123660422193e+04 + 2.052685512482519e+04 + 2.033426234716574e+04 + 2.014344212098682e+04 + 1.995437843426629e+04 + 1.976705544479930e+04 + 1.958145743480243e+04 + 1.939756881213320e+04 + 1.921537413684756e+04 + 1.903485810052154e+04 + 1.885600554387774e+04 + 1.867880143037429e+04 + 1.850323084111479e+04 + 1.832927901452323e+04 + 1.815693131178678e+04 + 1.798617320994377e+04 + 1.781699034075772e+04 + 1.764936845332217e+04 + 1.748329340510924e+04 + 1.731875119617678e+04 + 1.715572795110660e+04 + 1.699420990919751e+04 + 1.683418344358223e+04 + 1.667563503873475e+04 + 1.651855128954979e+04 + 1.636291893365341e+04 + 1.620872481606836e+04 + 1.605595588699932e+04 + 1.590459923143625e+04 + 1.575464203906202e+04 + 1.560607160533683e+04 + 1.545887535681969e+04 + 1.531304082443131e+04 + 1.516855564487381e+04 + 1.502540756956110e+04 + 1.488358445432479e+04 + 1.474307426938193e+04 + 1.460386509288249e+04 + 1.446594509814283e+04 + 1.432930256776952e+04 + 1.419392589719183e+04 + 1.405980357729324e+04 + 1.392692420658459e+04 + 1.379527648729671e+04 + 1.366484921045415e+04 + 1.353563127160237e+04 + 1.340761167272577e+04 + 1.328077950662285e+04 + 1.315512397004589e+04 + 1.303063434970357e+04 + 1.290730001970431e+04 + 1.278511047006237e+04 + 1.266405528001385e+04 + 1.254412410683634e+04 + 1.242530670538782e+04 + 1.230759293022181e+04 + 1.219097272173875e+04 + 1.207543611008671e+04 + 1.196097321598039e+04 + 1.184757424417080e+04 + 1.173522949287449e+04 + 1.162392934478714e+04 + 1.151366426384512e+04 + 1.140442480834694e+04 + 1.129620161634352e+04 + 1.118898540470730e+04 + 1.108276698378667e+04 + 1.097753724013271e+04 + 1.087328713748510e+04 + 1.077000773143687e+04 + 1.066769015148828e+04 + 1.056632560317495e+04 + 1.046590537899618e+04 + 1.036642084361778e+04 + 1.026786343864257e+04 + 1.017022468912003e+04 + 1.007349618928313e+04 + 9.977669609110566e+03 + 9.882736699245763e+03 + 9.788689277747368e+03 + 9.695519238085319e+03 + 9.603218551128393e+03 + 9.511779252802526e+03 + 9.421193453258842e+03 + 9.331453338088948e+03 + 9.242551155902798e+03 + 9.154479227014926e+03 + 9.067229945268125e+03 + 8.980795767109534e+03 + 8.895169220035050e+03 + 8.810342900070031e+03 + 8.726309463870590e+03 + 8.643061639313548e+03 + 8.560592220958239e+03 + 8.478894062727115e+03 + 8.397960086705119e+03 + 8.317783279679375e+03 + 8.238356687487571e+03 + 8.159673421912185e+03 + 8.081726656780256e+03 + 8.004509624589081e+03 + 7.928015622553179e+03 + 7.852238006535134e+03 + 7.777170190090504e+03 + 7.702805651284038e+03 + 7.629137923269694e+03 + 7.556160595291118e+03 + 7.483867321684783e+03 + 7.412251809739373e+03 + 7.341307820993124e+03 + 7.271029178292266e+03 + 7.201409756944273e+03 + 7.132443488123264e+03 + 7.064124361053455e+03 + 6.996446414793790e+03 + 6.929403743407001e+03 + 6.862990497342477e+03 + 6.797200875139910e+03 + 6.732029129721631e+03 + 6.667469570161823e+03 + 6.603516551523545e+03 + 6.540164480186692e+03 + 6.477407817185619e+03 + 6.415241069687017e+03 + 6.353658796883785e+03 + 6.292655608307650e+03 + 6.232226157518487e+03 + 6.172365149982773e+03 + 6.113067340658933e+03 + 6.054327527853383e+03 + 5.996140560115221e+03 + 5.938501333076975e+03 + 5.881404784939355e+03 + 5.824845903828315e+03 + 5.768819722461626e+03 + 5.713321315085574e+03 + 5.658345805472132e+03 + 5.603888359764917e+03 + 5.549944184846402e+03 + 5.496508537213697e+03 + 5.443576713947663e+03 + 5.391144051368102e+03 + 5.339205932358427e+03 + 5.287757780134069e+03 + 5.236795058291703e+03 + 5.186313275265001e+03 + 5.136307977685731e+03 + 5.086774751617681e+03 + 5.037709226449485e+03 + 4.989107068721900e+03 + 4.940963984504954e+03 + 4.893275721702213e+03 + 4.846038063285039e+03 + 4.799246830729600e+03 + 4.752897888312231e+03 + 4.706987133608333e+03 + 4.661510499922751e+03 + 4.616463963202395e+03 + 4.571843532909213e+03 + 4.527645253893021e+03 + 4.483865209302220e+03 + 4.440499515324517e+03 + 4.397544325863069e+03 + 4.354995830474305e+03 + 4.312850249817291e+03 + 4.271103841242844e+03 + 4.229752898292512e+03 + 4.188793745275323e+03 + 4.148222740634546e+03 + 4.108036277499050e+03 + 4.068230779797937e+03 + 4.028802705831530e+03 + 3.989748546349355e+03 + 3.951064821861195e+03 + 3.912748086813885e+03 + 3.874794926585441e+03 + 3.837201956255947e+03 + 3.799965825835211e+03 + 3.763083213042953e+03 + 3.726550823283946e+03 + 3.690365398229224e+03 + 3.654523706502605e+03 + 3.619022543185401e+03 + 3.583858737044133e+03 + 3.549029144619817e+03 + 3.514530650270483e+03 + 3.480360168271582e+03 + 3.446514639490202e+03 + 3.412991033253400e+03 + 3.379786348393921e+03 + 3.346897609451590e+03 + 3.314321868815865e+03 + 3.282056205761040e+03 + 3.250097724763853e+03 + 3.218443559530467e+03 + 3.187090870156345e+03 + 3.156036839918450e+03 + 3.125278679259401e+03 + 3.094813626126841e+03 + 3.064638941053712e+03 + 3.034751909739014e+03 + 3.005149845581890e+03 + 2.975830084543172e+03 + 2.946789986568892e+03 + 2.918026936797055e+03 + 2.889538343339952e+03 + 2.861321641252218e+03 + 2.833374286700636e+03 + 2.805693756659566e+03 + 2.778277556469224e+03 + 2.751123212016022e+03 + 2.724228269242043e+03 + 2.697590301914011e+03 + 2.671206904109025e+03 + 2.645075688971241e+03 + 2.619194294405700e+03 + 2.593560380141823e+03 + 2.568171626715687e+03 + 2.543025737542386e+03 + 2.518120435211838e+03 + 2.493453462030127e+03 + 2.469022585172818e+03 + 2.444825590018873e+03 + 2.420860280374604e+03 + 2.397124484732366e+03 + 2.373616049394018e+03 + 2.350332838436762e+03 + 2.327272738609171e+03 + 2.304433655218562e+03 + 2.281813512846715e+03 + 2.259410255601743e+03 + 2.237221844685107e+03 + 2.215246260811306e+03 + 2.193481506123082e+03 + 2.171925598942706e+03 + 2.150576574458654e+03 + 2.129432488764117e+03 + 2.108491414442484e+03 + 2.087751441300839e+03 + 2.067210678851041e+03 + 2.046867252353801e+03 + 2.026719303565292e+03 + 2.006764993817073e+03 + 1.987002500493615e+03 + 1.967430017215378e+03 + 1.948045754608514e+03 + 1.928847939062915e+03 + 1.909834815497017e+03 + 1.891004644375446e+03 + 1.872355700452609e+03 + 1.853886275802303e+03 + 1.835594678424827e+03 + 1.817479231062563e+03 + 1.799538272810955e+03 + 1.781770158220284e+03 + 1.764173256646331e+03 + 1.746745953278825e+03 + 1.729486647489427e+03 + 1.712393752933919e+03 + 1.695465699568615e+03 + 1.678700930817119e+03 + 1.662097903850073e+03 + 1.645655091966725e+03 + 1.629370981458450e+03 + 1.613244072202941e+03 + 1.597272880432907e+03 + 1.581455933682248e+03 + 1.565791771294578e+03 + 1.550278951289465e+03 + 1.534916043199639e+03 + 1.519701626827566e+03 + 1.504634298568118e+03 + 1.489712666891078e+03 + 1.474935351996483e+03 + 1.460300988758884e+03 + 1.445808223853118e+03 + 1.431455716350942e+03 + 1.417242138357507e+03 + 1.403166173386480e+03 + 1.389226518010158e+03 + 1.375421881007569e+03 + 1.361750982089843e+03 + 1.348212553926219e+03 + 1.334805341072190e+03 + 1.321528098720046e+03 + 1.308379594477261e+03 + 1.295358607457036e+03 + 1.282463927300085e+03 + 1.269694355823267e+03 + 1.257048705895313e+03 + 1.244525800699936e+03 + 1.232124475203576e+03 + 1.219843575042076e+03 + 1.207681956049559e+03 + 1.195638485404256e+03 + 1.183712040621380e+03 + 1.171901509388141e+03 + 1.160205790292893e+03 + 1.148623791762007e+03 + 1.137154432301071e+03 + 1.125796641257775e+03 + 1.114549357263016e+03 + 1.103411528660030e+03 + 1.092382114454342e+03 + 1.081460082700689e+03 + 1.070644411095300e+03 + 1.059934087579793e+03 + 1.049328108720195e+03 + 1.038825480494848e+03 + 1.028425218971371e+03 + 1.018126348582361e+03 + 1.007927902927668e+03 + 9.978289254104482e+02 + 9.878284675679866e+02 + 9.779255898738762e+02 + 9.681193621623704e+02 + 9.584088623012988e+02 + 9.487931771658360e+02 + 9.392714022763922e+02 + 9.298426409505287e+02 + 9.205060057185552e+02 + 9.112606172437117e+02 + 9.021056036681564e+02 + 8.930401022331439e+02 + 8.840632580637879e+02 + 8.751742235821227e+02 + 8.663721600224155e+02 + 8.576562363107178e+02 + 8.490256285516970e+02 + 8.404795212594149e+02 + 8.320171064683727e+02 + 8.236375833541338e+02 + 8.153401590664150e+02 + 8.071240480244585e+02 + 7.989884718119321e+02 + 7.909326598382663e+02 + 7.829558483527250e+02 + 7.750572805483002e+02 + 7.672362073200991e+02 + 7.594918862313154e+02 + 7.518235817392584e+02 + 7.442305655888715e+02 + 7.367121158939042e+02 + 7.292675176279554e+02 + 7.218960630476328e+02 + 7.145970504767349e+02 + 7.073697847820883e+02 + 7.002135778527235e+02 + 6.931277475695276e+02 + 6.861116184218383e+02 + 6.791645215373005e+02 + 6.722857937677298e+02 + 6.654747784472139e+02 + 6.587308253877042e+02 + 6.520532900189463e+02 + 6.454415341582659e+02 + 6.388949257382737e+02 + 6.324128381494658e+02 + 6.259946511571761e+02 + 6.196397502963263e+02 + 6.133475264197438e+02 + 6.071173768094372e+02 + 6.009487042352257e+02 + 5.948409165626937e+02 + 5.887934278801442e+02 + 5.828056577149104e+02 + 5.768770306335107e+02 + 5.710069770500405e+02 + 5.651949326339243e+02 + 5.594403381224611e+02 + 5.537426401234757e+02 + 5.481012901152631e+02 + 5.425157443662293e+02 + 5.369854648776029e+02 + 5.315099185870243e+02 + 5.260885773011631e+02 + 5.207209179649268e+02 + 5.154064223119497e+02 + 5.101445770921985e+02 + 5.049348740937783e+02 + 4.997768095346806e+02 + 4.946698844046663e+02 + 4.896136047862775e+02 + 4.846074811232588e+02 + 4.796510285618583e+02 + 4.747437670096575e+02 + 4.698852205388910e+02 + 4.650749179071526e+02 + 4.603123926691712e+02 + 4.555971823563725e+02 + 4.509288288727789e+02 + 4.463068788207030e+02 + 4.417308827523721e+02 + 4.372003955530256e+02 + 4.327149765501697e+02 + 4.282741889383891e+02 + 4.238776002586995e+02 + 4.195247821802792e+02 + 4.152153101301976e+02 + 4.109487639564401e+02 + 4.067247273397822e+02 + 4.025427875685178e+02 + 3.984025363858318e+02 + 3.943035692477232e+02 + 3.902454851077117e+02 + 3.862278871965347e+02 + 3.822503823673904e+02 + 3.783125809462488e+02 + 3.744140974100913e+02 + 3.705545496319825e+02 + 3.667335588488600e+02 + 3.629507504654170e+02 + 3.592057531920941e+02 + 3.554981990087823e+02 + 3.518277237997781e+02 + 3.481939667588409e+02 + 3.445965704231110e+02 + 3.410351808614133e+02 + 3.375094474036331e+02 + 3.340190228447264e+02 + 3.305635632260179e+02 + 3.271427276872922e+02 + 3.237561788604219e+02 + 3.204035826343936e+02 + 3.170846077594078e+02 + 3.137989262426811e+02 + 3.105462135925898e+02 + 3.073261480789523e+02 + 3.041384108878384e+02 + 3.009826866110996e+02 + 2.978586626197819e+02 + 2.947660292278245e+02 + 2.917044799774912e+02 + 2.886737110898206e+02 + 2.856734216347172e+02 + 2.827033138205502e+02 + 2.797630925185924e+02 + 2.768524653868921e+02 + 2.739711430162750e+02 + 2.711188386172004e+02 + 2.682952682417776e+02 + 2.655001507075566e+02 + 2.627332073441469e+02 + 2.599941621974095e+02 + 2.572827420191948e+02 + 2.545986760992428e+02 + 2.519416963867954e+02 + 2.493115374004747e+02 + 2.467079361520411e+02 + 2.441306322519956e+02 + 2.415793676749632e+02 + 2.390538868162835e+02 + 2.365539368283623e+02 + 2.340792670618049e+02 + 2.316296291092408e+02 + 2.292047772816256e+02 + 2.268044680583002e+02 + 2.244284601550858e+02 + 2.220765149177526e+02 + 2.197483957886078e+02 + 2.174438683808943e+02 + 2.151627007150871e+02 + 2.129046628991759e+02 + 2.106695273325222e+02 + 2.084570687245048e+02 + 2.062670637405841e+02 + 2.040992912166423e+02 + 2.019535322675416e+02 + 1.998295699356443e+02 + 1.977271893831886e+02 + 1.956461779038128e+02 + 1.935863247355415e+02 + 1.915474213798307e+02 + 1.895292611678483e+02 + 1.875316391958052e+02 + 1.855543528482985e+02 + 1.835972014670904e+02 + 1.816599861324650e+02 + 1.797425099308505e+02 + 1.778445779263947e+02 + 1.759659969484732e+02 + 1.741065756739388e+02 + 1.722661246609050e+02 + 1.704444562587039e+02 + 1.686413847511611e+02 + 1.668567261386198e+02 + 1.650902980928235e+02 + 1.633419201885993e+02 + 1.616114136777071e+02 + 1.598986014805750e+02 + 1.582033083619683e+02 + 1.565253606828442e+02 + 1.548645864376032e+02 + 1.532208154238845e+02 + 1.515938789750561e+02 + 1.499836100268175e+02 + 1.483898432531407e+02 + 1.468124148175615e+02 + 1.452511624739094e+02 + 1.437059256375598e+02 + 1.421765451600804e+02 + 1.406628634671130e+02 + 1.391647245894945e+02 + 1.376819739463268e+02 + 1.362144585029153e+02 + 1.347620267668397e+02 + 1.333245285902542e+02 + 1.319018153476916e+02 + 1.304937399101563e+02 + 1.291001564496927e+02 + 1.277209206089626e+02 + 1.263558894821456e+02 + 1.250049214462411e+02 + 1.236678763269726e+02 + 1.223446153162142e+02 + 1.210350008534558e+02 + 1.197388968258891e+02 + 1.184561684202564e+02 + 1.171866820332312e+02 + 1.159303054814129e+02 + 1.146869078350233e+02 + 1.134563593521917e+02 + 1.122385316718855e+02 + 1.110332976232454e+02 + 1.098405311979204e+02 + 1.086601077608261e+02 + 1.074919038117468e+02 + 1.063357969778381e+02 + 1.051916662270612e+02 + 1.040593916259906e+02 + 1.029388543466298e+02 + 1.018299368341955e+02 + 1.007325226151947e+02 + 9.964649633160360e+01 + 9.857174381861689e+01 + 9.750815195741964e+01 + 9.645560874783912e+01 + 9.541400332430685e+01 + 9.438322582683587e+01 + 9.336316750654088e+01 + 9.235372071959520e+01 + 9.135477878367931e+01 + 9.036623609174318e+01 + 8.938798812110527e+01 + 8.841993128541375e+01 + 8.746196304638978e+01 + 8.651398190997742e+01 + 8.557588728936869e+01 + 8.464757961904559e+01 + 8.372896034435935e+01 + 8.281993180539014e+01 + 8.192039735296085e+01 + 8.103026128111058e+01 + 8.014942874495698e+01 + 7.927780590401203e+01 + 7.841529983858037e+01 + 7.756181847617736e+01 + 7.671727071446733e+01 + 7.588156631674119e+01 + 7.505461587372024e+01 + 7.423633095310755e+01 + 7.342662394299153e+01 + 7.262540803009301e+01 + 7.183259736215271e+01 + 7.104810687905130e+01 + 7.027185230277652e+01 + 6.950375028269488e+01 + 6.874371822566854e+01 + 6.799167430460268e+01 + 6.724753760248480e+01 + 6.651122793902957e+01 + 6.578266588744034e+01 + 6.506177289160765e+01 + 6.434847109859102e+01 + 6.364268339115934e+01 + 6.294433351272004e+01 + 6.225334589309644e+01 + 6.156964567793161e+01 + 6.089315882540817e+01 + 6.022381196253272e+01 + 5.956153243192431e+01 + 5.890624835784802e+01 + 5.825788851805937e+01 + 5.761638239540161e+01 + 5.698166019812880e+01 + 5.635365277455941e+01 + 5.573229169643452e+01 + 5.511750921575248e+01 + 5.450923819422894e+01 + 5.390741220139490e+01 + 5.331196548214332e+01 + 5.272283288224639e+01 + 5.213994992103501e+01 + 5.156325275682114e+01 + 5.099267813956413e+01 + 5.042816349744366e+01 + 4.986964685712531e+01 + 4.931706681520628e+01 + 4.877036264381848e+01 + 4.822947419115650e+01 + 4.769434186145065e+01 + 4.716490671386568e+01 + 4.664111036072763e+01 + 4.612289496053356e+01 + 4.561020331071316e+01 + 4.510297873475514e+01 + 4.460116508782800e+01 + 4.410470685618211e+01 + 4.361354903662819e+01 + 4.312763714409483e+01 + 4.264691728541290e+01 + 4.217133607138089e+01 + 4.170084064118655e+01 + 4.123537869187841e+01 + 4.077489840121474e+01 + 4.031934846724150e+01 + 3.986867813088396e+01 + 3.942283710103097e+01 + 3.898177559914080e+01 + 3.854544435810492e+01 + 3.811379455962712e+01 + 3.768677789368684e+01 + 3.726434656726136e+01 + 3.684645322013298e+01 + 3.643305096011807e+01 + 3.602409338288954e+01 + 3.561953452360934e+01 + 3.521932891649128e+01 + 3.482343153306697e+01 + 3.443179775085747e+01 + 3.404438343901749e+01 + 3.366114490993698e+01 + 3.328203887889210e+01 + 3.290702252020257e+01 + 3.253605343510379e+01 + 3.216908962260722e+01 + 3.180608952699355e+01 + 3.144701200592500e+01 + 3.109181631097627e+01 + 3.074046212448961e+01 + 3.039290952642646e+01 + 3.004911898312090e+01 + 2.970905136572861e+01 + 2.937266792505025e+01 + 2.903993030352619e+01 + 2.871080057194543e+01 + 2.838524113862799e+01 + 2.806321475945346e+01 + 2.774468462701056e+01 + 2.742961427426368e+01 + 2.711796757973106e+01 + 2.680970882898042e+01 + 2.650480264209962e+01 + 2.620321398820359e+01 + 2.590490820737408e+01 + 2.560985096325826e+01 + 2.531800827674159e+01 + 2.502934653543958e+01 + 2.474383242809609e+01 + 2.446143296972707e+01 + 2.418211555345684e+01 + 2.390584787621480e+01 + 2.363259794654911e+01 + 2.336233413255323e+01 + 2.309502509558490e+01 + 2.283063979379989e+01 + 2.256914753657127e+01 + 2.231051792982671e+01 + 2.205472087402378e+01 + 2.180172658443576e+01 + 2.155150556919213e+01 + 2.130402866286656e+01 + 2.105926696778129e+01 + 2.081719185319289e+01 + 2.057777503962135e+01 + 2.034098850331043e+01 + 2.010680447006149e+01 + 1.987519550063876e+01 + 1.964613442528577e+01 + 1.941959432580914e+01 + 1.919554855827313e+01 + 1.897397075515799e+01 + 1.875483482712853e+01 + 1.853811494931854e+01 + 1.832378554313712e+01 + 1.811182128985819e+01 + 1.790219714756028e+01 + 1.769488831219516e+01 + 1.748987022919803e+01 + 1.728711861052799e+01 + 1.708660939866258e+01 + 1.688831878332332e+01 + 1.669222321036695e+01 + 1.649829934690638e+01 + 1.630652410217020e+01 + 1.611687463464447e+01 + 1.592932831698975e+01 + 1.574386275792588e+01 + 1.556045580679505e+01 + 1.537908552081595e+01 + 1.519973018767385e+01 + 1.502236832516821e+01 + 1.484697865494502e+01 + 1.467354012841447e+01 + 1.450203191274907e+01 + 1.433243337158686e+01 + 1.416472409674524e+01 + 1.399888388846149e+01 + 1.383489273805109e+01 + 1.367273085728561e+01 + 1.351237865788487e+01 + 1.335381673920349e+01 + 1.319702591751814e+01 + 1.304198719993403e+01 + 1.288868177614133e+01 + 1.273709104714046e+01 + 1.258719659672914e+01 + 1.243898018736778e+01 + 1.229242378719869e+01 + 1.214750954184370e+01 + 1.200421977308728e+01 + 1.186253699764556e+01 + 1.172244390266849e+01 + 1.158392335040491e+01 + 1.144695839482221e+01 + 1.131153225250660e+01 + 1.117762830926809e+01 + 1.104523013501555e+01 + 1.091432145806843e+01 + 1.078488617566414e+01 + 1.065690836231677e+01 + 1.053037224372639e+01 + 1.040526220941685e+01 + 1.028156282144551e+01 + 1.015925878941852e+01 + 1.003833498402321e+01 + 9.918776439618298e+00 + 9.800568334039683e+00 + 9.683696005431957e+00 + 9.568144946174611e+00 + 9.453900787919052e+00 + 9.340949322860192e+00 + 9.229276489267212e+00 + 9.118868359446189e+00 + 9.009711163642070e+00 + 8.901791273796370e+00 + 8.795095191785947e+00 + 8.689609570648638e+00 + 8.585321201853549e+00 + 8.482217005296002e+00 + 8.380284046581689e+00 + 8.279509523576925e+00 + 8.179880760330461e+00 + 8.081385224417300e+00 + 7.984010508389771e+00 + 7.887744326863491e+00 + 7.792574535206823e+00 + 7.698489109519010e+00 + 7.605476146133772e+00 + 7.513523878187234e+00 + 7.422620653280592e+00 + 7.332754935473541e+00 + 7.243915322674125e+00 + 7.156090524556396e+00 + 7.069269365741123e+00 + 6.983440797017198e+00 + 6.898593877074525e+00 + 6.814717779007339e+00 + 6.731801797516630e+00 + 6.649835331100769e+00 + 6.568807890289103e+00 + 6.488709103685009e+00 + 6.409528699865692e+00 + 6.331256515961359e+00 + 6.253882503643640e+00 + 6.177396712290002e+00 + 6.101789297547966e+00 + 6.027050522250886e+00 + 5.953170745278158e+00 + 5.880140434362498e+00 + 5.807950156612827e+00 + 5.736590570385212e+00 + 5.666052441485230e+00 + 5.596326632559173e+00 + 5.527404095182261e+00 + 5.459275884510260e+00 + 5.391933149962507e+00 + 5.325367127621260e+00 + 5.259569151260657e+00 + 5.194530647433734e+00 + 5.130243129823101e+00 + 5.066698206416531e+00 + 5.003887570881058e+00 + 4.941803001453549e+00 + 4.880436373900456e+00 + 4.819779643419130e+00 + 4.759824844738533e+00 + 4.700564110200850e+00 + 4.641989649988083e+00 + 4.584093751736625e+00 + 4.526868793565781e+00 + 4.470307230074105e+00 + 4.414401594729965e+00 + 4.359144507919768e+00 + 4.304528662004969e+00 + 4.250546825086277e+00 + 4.197191851627622e+00 + 4.144456666159979e+00 + 4.092334266478478e+00 + 4.040817732600400e+00 + 3.989900213340690e+00 + 3.939574930757155e+00 + 3.889835183170760e+00 + 3.840674335613269e+00 + 3.792085827136757e+00 + 3.744063169627271e+00 + 3.696599938809659e+00 + 3.649689781941428e+00 + 3.603326418080199e+00 + 3.557503628382808e+00 + 3.512215261374414e+00 + 3.467455236465362e+00 + 3.423217534816642e+00 + 3.379496201686086e+00 + 3.336285348654454e+00 + 3.293579148649655e+00 + 3.251371841226642e+00 + 3.209657725464606e+00 + 3.168431157939940e+00 + 3.127686563504146e+00 + 3.087418425005168e+00 + 3.047621281181530e+00 + 3.008289735457784e+00 + 2.969418446796439e+00 + 2.931002129285814e+00 + 2.893035560502260e+00 + 2.855513571053400e+00 + 2.818431044951714e+00 + 2.781782927380857e+00 + 2.745564215550934e+00 + 2.709769959926351e+00 + 2.674395268211684e+00 + 2.639435297946605e+00 + 2.604885259637663e+00 + 2.570740420206636e+00 + 2.536996093812299e+00 + 2.503647644969884e+00 + 2.470690493614489e+00 + 2.438120105903952e+00 + 2.405931997235836e+00 + 2.374121735683807e+00 + 2.342684934097179e+00 + 2.311617253784086e+00 + 2.280914406216957e+00 + 2.250572146781167e+00 + 2.220586279273893e+00 + 2.190952653478714e+00 + 2.161667162009881e+00 + 2.132725747880213e+00 + 2.104124396422602e+00 + 2.075859132902099e+00 + 2.047926031580743e+00 + 2.020321209266692e+00 + 1.993040822266800e+00 + 1.966081073072867e+00 + 1.939438205166541e+00 + 1.913108500802827e+00 + 1.887088286918805e+00 + 1.861373929947225e+00 + 1.835961834345823e+00 + 1.810848447621857e+00 + 1.786030255213551e+00 + 1.761503779943143e+00 + 1.737265586321442e+00 + 1.713312275115213e+00 + 1.689640483715834e+00 + 1.666246890168493e+00 + 1.643128207113473e+00 + 1.620281182788458e+00 + 1.597702604935450e+00 + 1.575389294699183e+00 + 1.553338108095691e+00 + 1.531545938928566e+00 + 1.510009713407906e+00 + 1.488726392261371e+00 + 1.467692971937850e+00 + 1.446906480207705e+00 + 1.426363979153670e+00 + 1.406062564959602e+00 + 1.385999363940103e+00 + 1.366171536058216e+00 + 1.346576274130787e+00 + 1.327210800124654e+00 + 1.308072368828510e+00 + 1.289158266486426e+00 + 1.270465807665891e+00 + 1.251992339187792e+00 + 1.233735237889272e+00 + 1.215691907984316e+00 + 1.197859785096899e+00 + 1.180236333919823e+00 + 1.162819045897185e+00 + 1.145605442741095e+00 + 1.128593073973588e+00 + 1.111779515284567e+00 + 1.095162371880828e+00 + 1.078739275475473e+00 + 1.062507883334588e+00 + 1.046465881646835e+00 + 1.030610981874106e+00 + 1.014940920295882e+00 + 9.994534611152829e-01 + 9.841463930086627e-01 + 9.690175291593270e-01 + 9.540647093618980e-01 + 9.392857969051628e-01 + 9.246786792729085e-01 + 9.102412696338000e-01 + 8.959715035501604e-01 + 8.818673402027871e-01 + 8.679267639726700e-01 + 8.541477806828601e-01 + 8.405284189410931e-01 + 8.270667316623297e-01 + 8.137607925445277e-01 + 8.006086976874616e-01 + 7.876085666023992e-01 + 7.747585387876328e-01 + 7.620567754307064e-01 + 7.495014602973783e-01 + 7.370907966216457e-01 + 7.248230088485250e-01 + 7.126963429559050e-01 + 7.007090638413013e-01 + 6.888594572109231e-01 + 6.771458292779966e-01 + 6.655665045807759e-01 + 6.541198279036498e-01 + 6.428041637825399e-01 + 6.316178947210964e-01 + 6.205594229105623e-01 + 6.096271692194244e-01 + 5.988195719936049e-01 + 5.881350889221284e-01 + 5.775721954595900e-01 + 5.671293841176136e-01 + 5.568051664208875e-01 + 5.465980707194322e-01 + 5.365066418737608e-01 + 5.265294432641988e-01 + 5.166650544231339e-01 + 5.069120710261563e-01 + 4.972691065208522e-01 + 4.877347899800689e-01 + 4.783077664492044e-01 + 4.689866979017357e-01 + 4.597702612073233e-01 + 4.506571489021905e-01 + 4.416460700276524e-01 + 4.327357479310139e-01 + 4.239249212044141e-01 + 4.152123442913231e-01 + 4.065967853823845e-01 + 3.980770275573000e-01 + 3.896518691214699e-01 + 3.813201217302061e-01 + 3.730806117264635e-01 + 3.649321798861945e-01 + 3.568736798624809e-01 + 3.489039797704173e-01 + 3.410219613244947e-01 + 3.332265187013593e-01 + 3.255165605086018e-01 + 3.178910083898543e-01 + 3.103487958586359e-01 + 3.028888701360887e-01 + 2.955101913786422e-01 + 2.882117315106021e-01 + 2.809924755137371e-01 + 2.738514204626846e-01 + 2.667875748867065e-01 + 2.597999604522775e-01 + 2.528876103054370e-01 + 2.460495685714950e-01 + 2.392848919788540e-01 + 2.325926484518769e-01 + 2.259719167857841e-01 + 2.194217877354759e-01 + 2.129413627175208e-01 + 2.065297538274627e-01 + 2.001860848470379e-01 + 1.939094897086202e-01 + 1.876991127051828e-01 + 1.815541094417414e-01 + 1.754736452756007e-01 + 1.694568956974621e-01 + 1.635030470498157e-01 + 1.576112950508609e-01 + 1.517808453564031e-01 + 1.460109140364644e-01 + 1.403007261766342e-01 + 1.346495165784953e-01 + 1.290565300180611e-01 + 1.235210199704221e-01 + 1.180422494287421e-01 + 1.126194909047226e-01 + 1.072520253105725e-01 + 1.019391428882170e-01 + 9.668014295417104e-02 + 9.147433293860986e-02 + 8.632102939670111e-02 + 8.121955756354367e-02 + 7.616925052308399e-02 + 7.116945022739722e-02 + 6.621950693894064e-02 + 6.131877854698166e-02 + 5.646663155698649e-02 + 5.166244039926220e-02 + 4.690558691983024e-02 + 4.219546135291571e-02 + 3.753146148005052e-02 + 3.291299228995687e-02 + 2.833946692296159e-02 + 2.381030573044091e-02 + 1.932493608562982e-02 + 1.488279323951757e-02 + 1.048331933378767e-02 + 6.125963364112487e-03 + 1.810181928441051e-03 + -2.464561780353438e-03 + -6.698797872311066e-03 + -1.089304914227914e-02 + -1.504783206514415e-02 + -1.916365656771068e-02 + -2.324102555134537e-02 + -2.728043585421590e-02 + -3.128237791440187e-02 + -3.524733543518016e-02 + -3.917578628623598e-02 + -4.306820207473552e-02 + -4.692504798332473e-02 + -5.074678357205704e-02 + -5.453386225593208e-02 + -5.828673132987599e-02 + -6.200583267980977e-02 + -6.569160218738558e-02 + -6.934446987831328e-02 + -7.296486055963237e-02 + -7.655319319650564e-02 + -8.010988114185758e-02 + -8.363533270338043e-02 + -8.712995053780122e-02 + -9.059413193193132e-02 + -9.402826926020177e-02 + -9.743274938790861e-02 + -1.008079541064505e-01 + -1.041542604608216e-01 + -1.074720401131623e-01 + -1.107616598682374e-01 + -1.140234819193764e-01 + -1.172578632830942e-01 + -1.204651563472630e-01 + -1.236457089966172e-01 + -1.267998640735528e-01 + -1.299279600346222e-01 + -1.330303309819349e-01 + -1.361073061299021e-01 + -1.391592104828469e-01 + -1.421863647988072e-01 + -1.451890851855495e-01 + -1.481676836992942e-01 + -1.511224682100277e-01 + -1.540537421399553e-01 + -1.569618050599837e-01 + -1.598469524764272e-01 + -1.627094755828420e-01 + -1.655496618778017e-01 + -1.683677949236447e-01 + -1.711641541517163e-01 + -1.739390154343296e-01 + -1.766926508045859e-01 + -1.794253283544359e-01 + -1.821373127460387e-01 + -1.848288648981078e-01 + -1.875002419786971e-01 + -1.901516978443653e-01 + -1.927834826976386e-01 + -1.953958431846420e-01 + -1.979890227559544e-01 + -2.005632612952037e-01 + -2.031187952951354e-01 + -2.056558581586019e-01 + -2.081746798356756e-01 + -2.106754870586183e-01 + -2.131585035595214e-01 + -2.156239496932611e-01 + -2.180720427808593e-01 + -2.205029972492180e-01 + -2.229170242226580e-01 + -2.253143319488933e-01 + -2.276951258807381e-01 + -2.300596082676421e-01 + -2.324079786235529e-01 + -2.347404337552020e-01 + -2.370571673694448e-01 + -2.393583705568364e-01 + -2.416442317867498e-01 + -2.439149365965413e-01 + -2.461706679522762e-01 + -2.484116061949506e-01 + -2.506379289887288e-01 + -2.528498115997045e-01 + -2.550474267213886e-01 + -2.572309443123204e-01 + -2.594005320626763e-01 + -2.615563552809436e-01 + -2.636985766193694e-01 + -2.658273564814242e-01 + -2.679428529152917e-01 + -2.700452216727706e-01 + -2.721346163277996e-01 + -2.742111879420810e-01 + -2.762750854486131e-01 + -2.783264557785196e-01 + -2.803654434689624e-01 + -2.823921908087395e-01 + -2.844068381756654e-01 + -2.864095239109061e-01 + -2.884003839950212e-01 + -2.903795524955394e-01 + -2.923471617904532e-01 + -2.943033420191942e-01 + -2.962482212763220e-01 + -2.981819256807660e-01 + -3.001045795717013e-01 + -3.020163055275332e-01 + -3.039172239885258e-01 + -3.058074538261057e-01 + -3.076871122705734e-01 + -3.095563141516905e-01 + -3.114151727559051e-01 + -3.132637999546681e-01 + -3.151023057635463e-01 + -3.169307984585886e-01 + -3.187493845723606e-01 + -3.205581689117248e-01 + -3.223572548745565e-01 + -3.241467443749414e-01 + -3.259267374142799e-01 + -3.276973325691862e-01 + -3.294586270053045e-01 + -3.312107160890871e-01 + -3.329536937962613e-01 + -3.346876527428858e-01 + -3.364126840777460e-01 + -3.381288775295205e-01 + -3.398363212268976e-01 + -3.415351019703767e-01 + -3.432253052941175e-01 + -3.449070152459444e-01 + -3.465803145779997e-01 + -3.482452848007116e-01 + -3.499020059501182e-01 + -3.515505568826250e-01 + -3.531910152859590e-01 + -3.548234573752725e-01 + -3.564479582224311e-01 + -3.580645917875246e-01 + -3.596734306319520e-01 + -3.612745463110025e-01 + -3.628680093075062e-01 + -3.644538885605036e-01 + -3.660322520458910e-01 + -3.676031668332329e-01 + -3.691666987516095e-01 + -3.707229124779602e-01 + -3.722718716670178e-01 + -3.738136390608672e-01 + -3.753482761467254e-01 + -3.768758432749062e-01 + -3.783964002465877e-01 + -3.799100056353694e-01 + -3.814167166997948e-01 + -3.829165900177774e-01 + -3.844096813827866e-01 + -3.858960456354959e-01 + -3.873757364088854e-01 + -3.888488064600710e-01 + -3.903153077375676e-01 + -3.917752913452379e-01 + -3.932288075353338e-01 + -3.946759055987133e-01 + -3.961166339473677e-01 + -3.975510402779339e-01 + -3.989791715122148e-01 + -4.004010735521537e-01 + -4.018167915706618e-01 + -4.032263700983349e-01 + -4.046298528561717e-01 + -4.060272827301947e-01 + -4.074187016384220e-01 + -4.088041511045764e-01 + -4.101836719923956e-01 + -4.115573039941210e-01 + -4.129250863351419e-01 + -4.142870577221169e-01 + -4.156432559911067e-01 + -4.169937183587125e-01 + -4.183384813924751e-01 + -4.196775807600287e-01 + -4.210110517890521e-01 + -4.223389293056927e-01 + -4.236612469859990e-01 + -4.249780381358575e-01 + -4.262893357128523e-01 + -4.275951718561576e-01 + -4.288955781548201e-01 + -4.301905856512787e-01 + -4.314802245948859e-01 + -4.327645248125306e-01 + -4.340435157401011e-01 + -4.353172261319986e-01 + -4.365856843065750e-01 + -4.378489181140523e-01 + -4.391069545111200e-01 + -4.403598201489721e-01 + -4.416075414900063e-01 + -4.428501441617211e-01 + -4.440876533447125e-01 + -4.453200938994337e-01 + -4.465474900663732e-01 + -4.477698656375739e-01 + -4.489872440132049e-01 + -4.501996482091757e-01 + -4.514071007293397e-01 + -4.526096234423685e-01 + -4.538072381973440e-01 + -4.549999664346564e-01 + -4.561878287239103e-01 + -4.573708454564815e-01 + -4.585490367840940e-01 + -4.597224223838171e-01 + -4.608910215483196e-01 + -4.620548532229073e-01 + -4.632139359470852e-01 + -4.643682878385313e-01 + -4.655179266829866e-01 + -4.666628700026897e-01 + -4.678031349656974e-01 + -4.689387384105899e-01 + -4.700696968538801e-01 + -4.711960263436956e-01 + -4.723177425902391e-01 + -4.734348612979066e-01 + -4.745473978039702e-01 + -4.756553669920032e-01 + -4.767587833133353e-01 + -4.778576611599107e-01 + -4.789520147944609e-01 + -4.800418577229591e-01 + -4.811272034289876e-01 + -4.822080654661853e-01 + -4.832844566828151e-01 + -4.843563896207272e-01 + -4.854238767122197e-01 + -4.864869303811440e-01 + -4.875455627166793e-01 + -4.885997853037442e-01 + -4.896496095260600e-01 + -4.906950466868944e-01 + -4.917361080077966e-01 + -4.927728043326091e-01 + -4.938051461993963e-01 + -4.948331438840640e-01 + -4.958568075736277e-01 + -4.968761473512240e-01 + -4.978911731225704e-01 + -4.989018945002663e-01 + -4.999083208482176e-01 + -5.009104613021941e-01 + -5.019083248972503e-01 + -5.029019205602130e-01 + -5.038912570358333e-01 + -5.048763428126108e-01 + -5.058571862004539e-01 + -5.068337954285524e-01 + -5.078061785541023e-01 + -5.087743434557772e-01 + -5.097382978215317e-01 + -5.106980492175714e-01 + -5.116536051046018e-01 + -5.126049728172039e-01 + -5.135521595357905e-01 + -5.144951722594635e-01 + -5.154340177423219e-01 + -5.163687027408718e-01 + -5.172992340140365e-01 + -5.182256180631845e-01 + -5.191478612397169e-01 + -5.200659697981208e-01 + -5.209799499565910e-01 + -5.218898077706294e-01 + -5.227955490891694e-01 + -5.236971796844924e-01 + -5.245947053253370e-01 + -5.254881317688337e-01 + -5.263774645512288e-01 + -5.272627090126604e-01 + -5.281438703531137e-01 + -5.290209539977515e-01 + -5.298939652703512e-01 + -5.307629091340913e-01 + -5.316277904778723e-01 + -5.324886142110474e-01 + -5.333453852986519e-01 + -5.341981085648844e-01 + -5.350467886587517e-01 + -5.358914300418783e-01 + -5.367320373706596e-01 + -5.375686152841432e-01 + -5.384011680734792e-01 + -5.392297001047128e-01 + -5.400542157871245e-01 + -5.408747194069761e-01 + -5.416912150785628e-01 + -5.425037068232484e-01 + -5.433121987186342e-01 + -5.441166948984431e-01 + -5.449171994793097e-01 + -5.457137163885653e-01 + -5.465062494211190e-01 + -5.472948023341125e-01 + -5.480793790518950e-01 + -5.488599834110802e-01 + -5.496366191273470e-01 + -5.504092899443518e-01 + -5.511779994928784e-01 + -5.519427513029639e-01 + -5.527035490710489e-01 + -5.534603964642170e-01 + -5.542132970155166e-01 + -5.549622540841348e-01 + -5.557072711574547e-01 + -5.564483519201564e-01 + -5.571854997347668e-01 + -5.579187179919134e-01 + -5.586480102698358e-01 + -5.593733798207278e-01 + -5.600948299343745e-01 + -5.608123641702291e-01 + -5.615259858006734e-01 + -5.622356980349319e-01 + -5.629415042452564e-01 + -5.636434078437447e-01 + -5.643414121719204e-01 + -5.650355204128609e-01 + -5.657257359067179e-01 + -5.664120620074502e-01 + -5.670945018655422e-01 + -5.677730587569899e-01 + -5.684477360210265e-01 + -5.691185368946378e-01 + -5.697854646230838e-01 + -5.704485224954847e-01 + -5.711077138615709e-01 + -5.717630418949810e-01 + -5.724145097236072e-01 + -5.730621208149326e-01 + -5.737058785857441e-01 + -5.743457862811681e-01 + -5.749818469287452e-01 + -5.756140639044424e-01 + -5.762424408221788e-01 + -5.768669806578469e-01 + -5.774876866716016e-01 + -5.781045625480883e-01 + -5.787176116189466e-01 + -5.793268371095267e-01 + -5.799322422747063e-01 + -5.805338304985933e-01 + -5.811316053198213e-01 + -5.817255703521417e-01 + -5.823157287697720e-01 + -5.829020838792335e-01 + -5.834846393919914e-01 + -5.840633987477251e-01 + -5.846383653791880e-01 + -5.852095428966003e-01 + -5.857769347455314e-01 + -5.863405444497650e-01 + -5.869003757905312e-01 + -5.874564321893059e-01 + -5.880087171065591e-01 + -5.885572344676900e-01 + -5.891019879107314e-01 + -5.896429809482692e-01 + -5.901802172691951e-01 + -5.907137006344829e-01 + -5.912434348345698e-01 + -5.917694236578408e-01 + -5.922916709366750e-01 + -5.928101804947136e-01 + -5.933249560457028e-01 + -5.938360014505492e-01 + -5.943433207019595e-01 + -5.948469177828256e-01 + -5.953467966083078e-01 + -5.958429610716830e-01 + -5.963354151930935e-01 + -5.968241629967538e-01 + -5.973092085065336e-01 + -5.977905558475627e-01 + -5.982682091919279e-01 + -5.987421727060626e-01 + -5.992124504335189e-01 + -5.996790465513929e-01 + -6.001419654039183e-01 + -6.006012111567195e-01 + -6.010567880969444e-01 + -6.015087007096906e-01 + -6.019569532209035e-01 + -6.024015499278780e-01 + -6.028424953542454e-01 + -6.032797938560218e-01 + -6.037134498528102e-01 + -6.041434679778884e-01 + -6.045698527611498e-01 + -6.049926086966888e-01 + -6.054117403213235e-01 + -6.058272522301629e-01 + -6.062391491063152e-01 + -6.066474357377917e-01 + -6.070521167750024e-01 + -6.074531969194140e-01 + -6.078506811508277e-01 + -6.082445741313003e-01 + -6.086348804777613e-01 + -6.090216052590219e-01 + -6.094047534940796e-01 + -6.097843300758768e-01 + -6.101603397998798e-01 + -6.105327877567767e-01 + -6.109016791586246e-01 + -6.112670188349342e-01 + -6.116288118244032e-01 + -6.119870634033990e-01 + -6.123417788015699e-01 + -6.126929631816058e-01 + -6.130406216857481e-01 + -6.133847595846266e-01 + -6.137253821544012e-01 + -6.140624946688724e-01 + -6.143961025253998e-01 + -6.147262111225434e-01 + -6.150528258526081e-01 + -6.153759522847098e-01 + -6.156955958775930e-01 + -6.160117619293205e-01 + -6.163244560848270e-01 + -6.166336840291214e-01 + -6.169394513190288e-01 + -6.172417635406579e-01 + -6.175406263458638e-01 + -6.178360454670117e-01 + -6.181280266570051e-01 + -6.184165756494230e-01 + -6.187016981615432e-01 + -6.189834001775048e-01 + -6.192616876391890e-01 + -6.195365661632112e-01 + -6.198080416901866e-01 + -6.200761202902517e-01 + -6.203408078682074e-01 + -6.206021103982113e-01 + -6.208600339819080e-01 + -6.211145848662764e-01 + -6.213657689929696e-01 + -6.216135922609831e-01 + -6.218580610691606e-01 + -6.220991816188346e-01 + -6.223369599996067e-01 + -6.225714026287344e-01 + -6.228025157602012e-01 + -6.230303055354752e-01 + -6.232547783843585e-01 + -6.234759406837302e-01 + -6.236937987287140e-01 + -6.239083589372102e-01 + -6.241196278170006e-01 + -6.243276119301496e-01 + -6.245323178052680e-01 + -6.247337518435782e-01 + -6.249319204108740e-01 + -6.251268303788342e-01 + -6.253184884524475e-01 + -6.255069009766967e-01 + -6.256920746682559e-01 + -6.258740163701917e-01 + -6.260527328726909e-01 + -6.262282307801417e-01 + -6.264005167589047e-01 + -6.265695976839164e-01 + -6.267354804070123e-01 + -6.268981717782514e-01 + -6.270576786775590e-01 + -6.272140080071444e-01 + -6.273671666729116e-01 + -6.275171615794166e-01 + -6.276639997579259e-01 + -6.278076882572314e-01 + -6.279482340166599e-01 + -6.280856440870369e-01 + -6.282199255881125e-01 + -6.283510856176625e-01 + -6.284791313265480e-01 + -6.286040698559974e-01 + -6.287259082244099e-01 + -6.288446536460758e-01 + -6.289603134448759e-01 + -6.290728947784819e-01 + -6.291824049507972e-01 + -6.292888513285516e-01 + -6.293922409846477e-01 + -6.294925812787570e-01 + -6.295898797737625e-01 + -6.296841435561055e-01 + -6.297753800606519e-01 + -6.298635970427606e-01 + -6.299488015475858e-01 + -6.300310009429952e-01 + -6.301102030719377e-01 + -6.301864151575183e-01 + -6.302596446383568e-01 + -6.303298993873763e-01 + -6.303971867419816e-01 + -6.304615141097702e-01 + -6.305228892569528e-01 + -6.305813198299395e-01 + -6.306368133767261e-01 + -6.306893774095105e-01 + -6.307390196514921e-01 + -6.307857478830511e-01 + -6.308295697989852e-01 + -6.308704929504492e-01 + -6.309085250312678e-01 + -6.309436740902202e-01 + -6.309759477467396e-01 + -6.310053535533821e-01 + -6.310318994644450e-01 + -6.310555933584764e-01 + -6.310764430051494e-01 + -6.310944561130111e-01 + -6.311096405770181e-01 + -6.311220043955681e-01 + -6.311315554778594e-01 + -6.311383016234806e-01 + -6.311422506666780e-01 + -6.311434107412031e-01 + -6.311417897164122e-01 + -6.311373953205278e-01 + -6.311302357049288e-01 + -6.311203189243589e-01 + -6.311076528624781e-01 + -6.310922454230109e-01 + -6.310741047155799e-01 + -6.310532389686786e-01 + -6.310296560496979e-01 + -6.310033639455465e-01 + -6.309743708604478e-01 + -6.309426848479184e-01 + -6.309083139781310e-01 + -6.308712663782245e-01 + -6.308315500367087e-01 + -6.307891730465176e-01 + -6.307441436976022e-01 + -6.306964701860184e-01 + -6.306461606431758e-01 + -6.305932231701467e-01 + -6.305376659121696e-01 + -6.304794970062023e-01 + -6.304187245700347e-01 + -6.303553569805046e-01 + -6.302894025962669e-01 + -6.302208694979176e-01 + -6.301497657748981e-01 + -6.300760996409697e-01 + -6.299998795100692e-01 + -6.299211136514613e-01 + -6.298398102240708e-01 + -6.297559773915322e-01 + -6.296696236381925e-01 + -6.295807574013027e-01 + -6.294893864698483e-01 + -6.293955192818200e-01 + -6.292991645521353e-01 + -6.292003301703828e-01 + -6.290990243894826e-01 + -6.289952557946986e-01 + -6.288890326523825e-01 + -6.287803632353285e-01 + -6.286692558944412e-01 + -6.285557190083507e-01 + -6.284397608763040e-01 + -6.283213897612988e-01 + -6.282006141317734e-01 + -6.280774423035318e-01 + -6.279518824496017e-01 + -6.278239431715447e-01 + -6.276936329659792e-01 + -6.275609600561086e-01 + -6.274259327786519e-01 + -6.272885594754783e-01 + -6.271488484695774e-01 + -6.270068083043618e-01 + -6.268624473656752e-01 + -6.267157737459064e-01 + -6.265667960682418e-01 + -6.264155229504741e-01 + -6.262619625962428e-01 + -6.261061232036680e-01 + -6.259480131935671e-01 + -6.257876413121770e-01 + -6.256250157840939e-01 + -6.254601447340036e-01 + -6.252930366972961e-01 + -6.251237002207461e-01 + -6.249521437614608e-01 + -6.247783756272571e-01 + -6.246024042025771e-01 + -6.244242378628240e-01 + -6.242438848129136e-01 + -6.240613535991787e-01 + -6.238766528797192e-01 + -6.236897908519111e-01 + -6.235007757894835e-01 + -6.233096161276966e-01 + -6.231163203935827e-01 + -6.229208970207127e-01 + -6.227233543185018e-01 + -6.225237005131427e-01 + -6.223219439896936e-01 + -6.221180932821515e-01 + -6.219121568092019e-01 + -6.217041429518334e-01 + -6.214940600654550e-01 + -6.212819164164759e-01 + -6.210677203231969e-01 + -6.208514802076882e-01 + -6.206332045396580e-01 + -6.204129016762088e-01 + -6.201905798335827e-01 + -6.199662474146647e-01 + -6.197399127976954e-01 + -6.195115842446862e-01 + -6.192812702436963e-01 + -6.190489791767655e-01 + -6.188147191241502e-01 + -6.185784984898128e-01 + -6.183403256742428e-01 + -6.181002088023494e-01 + -6.178581563548247e-01 + -6.176141767575239e-01 + -6.173682779492388e-01 + -6.171204683326561e-01 + -6.168707564823446e-01 + -6.166191506410910e-01 + -6.163656588303806e-01 + -6.161102891648960e-01 + -6.158530502595377e-01 + -6.155939503803246e-01 + -6.153329975648972e-01 + -6.150702000825419e-01 + -6.148055662334609e-01 + -6.145391042808102e-01 + -6.142708224010276e-01 + -6.140007288452335e-01 + -6.137288318637003e-01 + -6.134551394181680e-01 + -6.131796597624336e-01 + -6.129024013716257e-01 + -6.126233721919256e-01 + -6.123425803085120e-01 + -6.120600340492245e-01 + -6.117757414641359e-01 + -6.114897106263320e-01 + -6.112019497520672e-01 + -6.109124671249474e-01 + -6.106212708396386e-01 + -6.103283687668304e-01 + -6.100337690977098e-01 + -6.097374799911853e-01 + -6.094395093910078e-01 + -6.091398653642833e-01 + -6.088385561024087e-01 + -6.085355898356886e-01 + -6.082309742898534e-01 + -6.079247173286892e-01 + -6.076168274335947e-01 + -6.073073125569597e-01 + -6.069961804304546e-01 + -6.066834389911383e-01 + -6.063690964791788e-01 + -6.060531610171422e-01 + -6.057356401425160e-01 + -6.054165419100932e-01 + -6.050958745176729e-01 + -6.047736455801236e-01 + -6.044498630713394e-01 + -6.041245351487873e-01 + -6.037976695799242e-01 + -6.034692741523835e-01 + -6.031393567367498e-01 + -6.028079252312161e-01 + -6.024749874110954e-01 + -6.021405510415967e-01 + -6.018046242357692e-01 + -6.014672148046522e-01 + -6.011283302871711e-01 + -6.007879786053585e-01 + -6.004461675660895e-01 + -6.001029047914931e-01 + -5.997581981158361e-01 + -5.994120553308485e-01 + -5.990644841299763e-01 + -5.987154923482985e-01 + -5.983650876334137e-01 + -5.980132773866208e-01 + -5.976600693793478e-01 + -5.973054714798371e-01 + -5.969494914365839e-01 + -5.965921366499265e-01 + -5.962334146660923e-01 + -5.958733334161985e-01 + -5.955119002909084e-01 + -5.951491227180785e-01 + -5.947850085981863e-01 + -5.944195652847630e-01 + -5.940528001366523e-01 + -5.936847210858313e-01 + -5.933153356463837e-01 + -5.929446511281147e-01 + -5.925726749957585e-01 + -5.921994146776245e-01 + -5.918248776317639e-01 + -5.914490714685531e-01 + -5.910720036664838e-01 + -5.906936815737919e-01 + -5.903141124838686e-01 + -5.899333037986367e-01 + -5.895512629817115e-01 + -5.891679973989596e-01 + -5.887835143677140e-01 + -5.883978211708401e-01 + -5.880109250637769e-01 + -5.876228334774148e-01 + -5.872335538851382e-01 + -5.868430932520374e-01 + -5.864514587624869e-01 + -5.860586578978172e-01 + -5.856646978273519e-01 + -5.852695857497323e-01 + -5.848733289413443e-01 + -5.844759343592291e-01 + -5.840774091773326e-01 + -5.836777608879199e-01 + -5.832769964405170e-01 + -5.828751228494087e-01 + -5.824721474461222e-01 + -5.820680771414760e-01 + -5.816629188869962e-01 + -5.812566799399100e-01 + -5.808493672421570e-01 + -5.804409877894702e-01 + -5.800315488931496e-01 + -5.796210574409676e-01 + -5.792095201878247e-01 + -5.787969440874288e-01 + -5.783833362006023e-01 + -5.779687035684036e-01 + -5.775530530727403e-01 + -5.771363914738108e-01 + -5.767187255974381e-01 + -5.763000625573806e-01 + -5.758804091701334e-01 + -5.754597721176316e-01 + -5.750381583420940e-01 + -5.746155745735496e-01 + -5.741920274506414e-01 + -5.737675239291555e-01 + -5.733420708457294e-01 + -5.729156748671344e-01 + -5.724883426083383e-01 + -5.720600807791615e-01 + -5.716308961653045e-01 + -5.712007954599810e-01 + -5.707697852850102e-01 + -5.703378722272431e-01 + -5.699050629355835e-01 + -5.694713639828742e-01 + -5.690367818720566e-01 + -5.686013232951076e-01 + -5.681649948578290e-01 + -5.677278029894381e-01 + -5.672897541841998e-01 + -5.668508549514105e-01 + -5.664111117923113e-01 + -5.659705312703284e-01 + -5.655291198708162e-01 + -5.650868839171556e-01 + -5.646438297396282e-01 + -5.641999637601537e-01 + -5.637552925169101e-01 + -5.633098223391846e-01 + -5.628635595080524e-01 + -5.624165104013904e-01 + -5.619686812129524e-01 + -5.615200782186582e-01 + -5.610707080464411e-01 + -5.606205767194389e-01 + -5.601696901727680e-01 + -5.597180550627928e-01 + -5.592656777039943e-01 + -5.588125640834879e-01 + -5.583587201544192e-01 + -5.579041522213387e-01 + -5.574488666805684e-01 + -5.569928694014434e-01 + -5.565361664370690e-01 + -5.560787640439252e-01 + -5.556206683493946e-01 + -5.551618853326125e-01 + -5.547024208857518e-01 + -5.542422809960397e-01 + -5.537814718214656e-01 + -5.533199995563840e-01 + -5.528578699065892e-01 + -5.523950887012330e-01 + -5.519316620139326e-01 + -5.514675956847120e-01 + -5.510028956792654e-01 + -5.505375681122012e-01 + -5.500716185256428e-01 + -5.496050526609592e-01 + -5.491378767346244e-01 + -5.486700964364043e-01 + -5.482017173715276e-01 + -5.477327453596050e-01 + -5.472631862648399e-01 + -5.467930458019109e-01 + -5.463223294669347e-01 + -5.458510432287255e-01 + -5.453791929736209e-01 + -5.449067840000759e-01 + -5.444338218966174e-01 + -5.439603123952597e-01 + -5.434862611282417e-01 + -5.430116738240560e-01 + -5.425365561436022e-01 + -5.420609134355956e-01 + -5.415847511352451e-01 + -5.411080748136494e-01 + -5.406308901525899e-01 + -5.401532026526268e-01 + -5.396750177177082e-01 + -5.391963408895222e-01 + -5.387171774649071e-01 + -5.382375326730170e-01 + -5.377574122460893e-01 + -5.372768215524759e-01 + -5.367957656717409e-01 + -5.363142502106338e-01 + -5.358322806031541e-01 + -5.353498619928253e-01 + -5.348669995911720e-01 + -5.343836987381033e-01 + -5.338999648334884e-01 + -5.334158029976483e-01 + -5.329312184607295e-01 + -5.324462166033185e-01 + -5.319608023124877e-01 + -5.314749807283198e-01 + -5.309887574568507e-01 + -5.305021373834015e-01 + -5.300151254489873e-01 + -5.295277270550899e-01 + -5.290399471460621e-01 + -5.285517906644440e-01 + -5.280632628772480e-01 + -5.275743687930865e-01 + -5.270851133485194e-01 + -5.265955015863814e-01 + -5.261055383771222e-01 + -5.256152286457003e-01 + -5.251245776074701e-01 + -5.246335901741112e-01 + -5.241422711040373e-01 + -5.236506252667474e-01 + -5.231586574906982e-01 + -5.226663726352896e-01 + -5.221737757253558e-01 + -5.216808715970676e-01 + -5.211876649797802e-01 + -5.206941607382560e-01 + -5.202003635069621e-01 + -5.197062778404161e-01 + -5.192119087096243e-01 + -5.187172609937223e-01 + -5.182223393579939e-01 + -5.177271482807863e-01 + -5.172316923981860e-01 + -5.167359765148800e-01 + -5.162400053033168e-01 + -5.157437833544083e-01 + -5.152473152222008e-01 + -5.147506055161414e-01 + -5.142536587718484e-01 + -5.137564794429633e-01 + -5.132590721404230e-01 + -5.127614414610688e-01 + -5.122635918987255e-01 + -5.117655278912282e-01 + -5.112672538418732e-01 + -5.107687741570007e-01 + -5.102700934318621e-01 + -5.097712161511054e-01 + -5.092721464952894e-01 + -5.087728887586368e-01 + -5.082734473837237e-01 + -5.077738269224511e-01 + -5.072740315773641e-01 + -5.067740655070005e-01 + -5.062739331645890e-01 + -5.057736389339202e-01 + -5.052731870571522e-01 + -5.047725816027976e-01 + -5.042718267556677e-01 + -5.037709267723895e-01 + -5.032698858620083e-01 + -5.027687082997551e-01 + -5.022673983228978e-01 + -5.017659599138892e-01 + -5.012643972224838e-01 + -5.007627144504877e-01 + -5.002609154317549e-01 + -4.997590043686060e-01 + -4.992569856498065e-01 + -4.987548629163329e-01 + -4.982526401066572e-01 + -4.977503215591422e-01 + -4.972479113357710e-01 + -4.967454132608579e-01 + -4.962428310876830e-01 + -4.957401690448965e-01 + -4.952374311333114e-01 + -4.947346209581790e-01 + -4.942317423902789e-01 + -4.937287995168010e-01 + -4.932257964768885e-01 + -4.927227367709692e-01 + -4.922196239985463e-01 + -4.917164622446805e-01 + -4.912132554897460e-01 + -4.907100074652099e-01 + -4.902067216434476e-01 + -4.897034018910860e-01 + -4.892000521396699e-01 + -4.886966760659724e-01 + -4.881932772071136e-01 + -4.876898592264887e-01 + -4.871864261030248e-01 + -4.866829812293292e-01 + -4.861795280147214e-01 + -4.856760706607693e-01 + -4.851726126266216e-01 + -4.846691571189501e-01 + -4.841657080652781e-01 + -4.836622690168214e-01 + -4.831588433295234e-01 + -4.826554347812969e-01 + -4.821520468729375e-01 + -4.816486828820545e-01 + -4.811453462713459e-01 + -4.806420406166251e-01 + -4.801387695127853e-01 + -4.796355363816449e-01 + -4.791323444815042e-01 + -4.786291970695780e-01 + -4.781260978727254e-01 + -4.776230503252043e-01 + -4.771200574973888e-01 + -4.766171228253449e-01 + -4.761142497486388e-01 + -4.756114415594656e-01 + -4.751087014547341e-01 + -4.746060327035595e-01 + -4.741034386828772e-01 + -4.736009226286348e-01 + -4.730984877717556e-01 + -4.725961373913972e-01 + -4.720938746127822e-01 + -4.715917026117559e-01 + -4.710896247171748e-01 + -4.705876440070008e-01 + -4.700857635192827e-01 + -4.695839864443119e-01 + -4.690823160197067e-01 + -4.685807553687465e-01 + -4.680793073815264e-01 + -4.675779752270572e-01 + -4.670767621237579e-01 + -4.665756710130068e-01 + -4.660747048828000e-01 + -4.655738667469987e-01 + -4.650731595624170e-01 + -4.645725864569897e-01 + -4.640721505529091e-01 + -4.635718546060059e-01 + -4.630717014390969e-01 + -4.625716940204364e-01 + -4.620718354412200e-01 + -4.615721285948061e-01 + -4.610725762550177e-01 + -4.605731814392849e-01 + -4.600739469669758e-01 + -4.595748755034438e-01 + -4.590759700613133e-01 + -4.585772335293120e-01 + -4.580786685902926e-01 + -4.575802780165928e-01 + -4.570820645542124e-01 + -4.565840309327809e-01 + -4.560861801183225e-01 + -4.555885148408127e-01 + -4.550910375242214e-01 + -4.545937511574892e-01 + -4.540966585092119e-01 + -4.535997618400510e-01 + -4.531030641427475e-01 + -4.526065682230286e-01 + -4.521102761991050e-01 + -4.516141909960451e-01 + -4.511183155232459e-01 + -4.506226519976986e-01 + -4.501272029129367e-01 + -4.496319709853875e-01 + -4.491369589904647e-01 + -4.486421693813144e-01 + -4.481476045149588e-01 + -4.476532669406306e-01 + -4.471591591812127e-01 + -4.466652837454304e-01 + -4.461716431800687e-01 + -4.456782399407630e-01 + -4.451850764283579e-01 + -4.446921550770006e-01 + -4.441994783152980e-01 + -4.437070485743053e-01 + -4.432148683148817e-01 + -4.427229399164072e-01 + -4.422312656936392e-01 + -4.417398479943503e-01 + -4.412486891611525e-01 + -4.407577915365379e-01 + -4.402671575060104e-01 + -4.397767893532367e-01 + -4.392866892910770e-01 + -4.387968597340107e-01 + -4.383073029681190e-01 + -4.378180210879689e-01 + -4.373290163087382e-01 + -4.368402909924953e-01 + -4.363518475687816e-01 + -4.358636880897754e-01 + -4.353758146064535e-01 + -4.348882293452391e-01 + -4.344009344375495e-01 + -4.339139321041776e-01 + -4.334272247184532e-01 + -4.329408142509990e-01 + -4.324547026649819e-01 + -4.319688922210647e-01 + -4.314833850702666e-01 + -4.309981832317592e-01 + -4.305132886299618e-01 + -4.300287034407881e-01 + -4.295444298858639e-01 + -4.290604699557538e-01 + -4.285768254794737e-01 + -4.280934983815344e-01 + -4.276104909880938e-01 + -4.271278053251724e-01 + -4.266454431999359e-01 + -4.261634065006114e-01 + -4.256816972235624e-01 + -4.252003173934318e-01 + -4.247192689049444e-01 + -4.242385536499166e-01 + -4.237581735472888e-01 + -4.232781305399061e-01 + -4.227984264773803e-01 + -4.223190631457318e-01 + -4.218400424415704e-01 + -4.213613663598799e-01 + -4.208830368540804e-01 + -4.204050553934426e-01 + -4.199274237890383e-01 + -4.194501442515862e-01 + -4.189732183034799e-01 + -4.184966476302857e-01 + -4.180204343198091e-01 + -4.175445800025869e-01 + -4.170690862458790e-01 + -4.165939547960728e-01 + -4.161191875920802e-01 + -4.156447863485650e-01 + -4.151707524172177e-01 + -4.146970878143395e-01 + -4.142237944432959e-01 + -4.137508735370036e-01 + -4.132783267358912e-01 + -4.128061559031381e-01 + -4.123343628419361e-01 + -4.118629489726368e-01 + -4.113919157251955e-01 + -4.109212649651476e-01 + -4.104509983224866e-01 + -4.099811172669397e-01 + -4.095116233202941e-01 + -4.090425181490535e-01 + -4.085738034100841e-01 + -4.081054804950061e-01 + -4.076375508831032e-01 + -4.071700161671795e-01 + -4.067028779692610e-01 + -4.062361376606066e-01 + -4.057697965353959e-01 + -4.053038563335837e-01 + -4.048383186645677e-01 + -4.043731849141807e-01 + -4.039084564103662e-01 + -4.034441345521896e-01 + -4.029802208230617e-01 + -4.025167167043049e-01 + -4.020536236099443e-01 + -4.015909428779320e-01 + -4.011286758375757e-01 + -4.006668238996902e-01 + -4.002053885607212e-01 + -3.997443712200008e-01 + -3.992837731698375e-01 + -3.988235956310492e-01 + -3.983638399923307e-01 + -3.979045076012857e-01 + -3.974455996644362e-01 + -3.969871175556028e-01 + -3.965290626455606e-01 + -3.960714361699136e-01 + -3.956142393772600e-01 + -3.951574735515524e-01 + -3.947011399985758e-01 + -3.942452398354794e-01 + -3.937897742524872e-01 + -3.933347447660869e-01 + -3.928801524442024e-01 + -3.924259983101159e-01 + -3.919722839283850e-01 + -3.915190103656777e-01 + -3.910661784756895e-01 + -3.906137895655892e-01 + -3.901618450499643e-01 + -3.897103461604648e-01 + -3.892592935529919e-01 + -3.888086884121152e-01 + -3.883585322771145e-01 + -3.879088261485191e-01 + -3.874595710701922e-01 + -3.870107681556456e-01 + -3.865624182556531e-01 + -3.861145225228043e-01 + -3.856670823544472e-01 + -3.852200986473037e-01 + -3.847735723987576e-01 + -3.843275047747315e-01 + -3.838818965026468e-01 + -3.834367486164244e-01 + -3.829920625791138e-01 + -3.825478392535004e-01 + -3.821040794322394e-01 + -3.816607841213338e-01 + -3.812179544462010e-01 + -3.807755914230820e-01 + -3.803336958584798e-01 + -3.798922686597118e-01 + -3.794513108818827e-01 + -3.790108236907996e-01 + -3.785708078449803e-01 + -3.781312640889848e-01 + -3.776921934895628e-01 + -3.772535969260590e-01 + -3.768154752452403e-01 + -3.763778294637203e-01 + -3.759406605249527e-01 + -3.755039692439986e-01 + -3.750677562951532e-01 + -3.746320226741715e-01 + -3.741967693787305e-01 + -3.737619968727901e-01 + -3.733277061470673e-01 + -3.728938983949728e-01 + -3.724605741247380e-01 + -3.720277341192338e-01 + -3.715953793429491e-01 + -3.711635103186269e-01 + -3.707321278978636e-01 + -3.703012331728173e-01 + -3.698708267439747e-01 + -3.694409092657609e-01 + -3.690114815572269e-01 + -3.685825444178367e-01 + -3.681540985405766e-01 + -3.677261445488677e-01 + -3.672986832474148e-01 + -3.668717154245260e-01 + -3.664452417818624e-01 + -3.660192630178876e-01 + -3.655937798167319e-01 + -3.651687928442244e-01 + -3.647443027770453e-01 + -3.643203103057334e-01 + -3.638968161236534e-01 + -3.634738208501973e-01 + -3.630513251204181e-01 + -3.626293296340570e-01 + -3.622078349959966e-01 + -3.617868418102546e-01 + -3.613663507559756e-01 + -3.609463624258993e-01 + -3.605268773947004e-01 + -3.601078962972172e-01 + -3.596894197319259e-01 + -3.592714482724653e-01 + -3.588539824938156e-01 + -3.584370229705016e-01 + -3.580205702765974e-01 + -3.576046249835235e-01 + -3.571891876270012e-01 + -3.567742587321382e-01 + -3.563598388637925e-01 + -3.559459285557617e-01 + -3.555325283179373e-01 + -3.551196386794110e-01 + -3.547072601423791e-01 + -3.542953931967586e-01 + -3.538840383835105e-01 + -3.534731961849680e-01 + -3.530628670336623e-01 + -3.526530514374770e-01 + -3.522437498876279e-01 + -3.518349628366106e-01 + -3.514266907403692e-01 + -3.510189340474827e-01 + -3.506116931966672e-01 + -3.502049686305037e-01 + -3.497987607886671e-01 + -3.493930701015490e-01 + -3.489878969787067e-01 + -3.485832418243141e-01 + -3.481791050461803e-01 + -3.477754870557839e-01 + -3.473723882547367e-01 + -3.469698090253131e-01 + -3.465677497415546e-01 + -3.461662107762984e-01 + -3.457651925045610e-01 + -3.453646952920019e-01 + -3.449647194961470e-01 + -3.445652654674211e-01 + -3.441663335489293e-01 + -3.437679240760669e-01 + -3.433700373751777e-01 + -3.429726737709668e-01 + -3.425758335909973e-01 + -3.421795171685511e-01 + -3.417837248082679e-01 + -3.413884567949557e-01 + -3.409937134173290e-01 + -3.405994949798623e-01 + -3.402058017865278e-01 + -3.398126341027504e-01 + -3.394199921921239e-01 + -3.390278763247643e-01 + -3.386362867748747e-01 + -3.382452237948665e-01 + -3.378546876227794e-01 + -3.374646785249709e-01 + -3.370751967392704e-01 + -3.366862424749215e-01 + -3.362978159833941e-01 + -3.359099174981644e-01 + -3.355225472182573e-01 + -3.351357053498810e-01 + -3.347493921057998e-01 + -3.343636076973308e-01 + -3.339783523006465e-01 + -3.335936261089775e-01 + -3.332094293460974e-01 + -3.328257621547543e-01 + -3.324426246881435e-01 + -3.320600171619409e-01 + -3.316779397280902e-01 + -3.312963925265998e-01 + -3.309153757279716e-01 + -3.305348894653861e-01 + -3.301549338737799e-01 + -3.297755091265357e-01 + -3.293966153413448e-01 + -3.290182526215280e-01 + -3.286404211114115e-01 + -3.282631209285871e-01 + -3.278863521751846e-01 + -3.275101149642331e-01 + -3.271344093953196e-01 + -3.267592355617253e-01 + -3.263845935667566e-01 + -3.260104834866909e-01 + -3.256369053882101e-01 + -3.252638593756906e-01 + -3.248913455268053e-01 + -3.245193638907094e-01 + -3.241479145199382e-01 + -3.237769974872735e-01 + -3.234066128661293e-01 + -3.230367606622389e-01 + -3.226674409186036e-01 + -3.222986537192250e-01 + -3.219303990783447e-01 + -3.215626770146125e-01 + -3.211954875680534e-01 + -3.208288307426270e-01 + -3.204627065455645e-01 + -3.200971150001409e-01 + -3.197320561103191e-01 + -3.193675298795836e-01 + -3.190035363166080e-01 + -3.186400754009213e-01 + -3.182771471114187e-01 + -3.179147514432106e-01 + -3.175528883799994e-01 + -3.171915578921511e-01 + -3.168307599394173e-01 + -3.164704945026028e-01 + -3.161107615528752e-01 + -3.157515610223091e-01 + -3.153928928534279e-01 + -3.150347570035595e-01 + -3.146771534412893e-01 + -3.143200821026652e-01 + -3.139635429048980e-01 + -3.136075357713601e-01 + -3.132520606345795e-01 + -3.128971174301287e-01 + -3.125427060850263e-01 + -3.121888265003789e-01 + -3.118354785699559e-01 + -3.114826622209773e-01 + -3.111303773636806e-01 + -3.107786238863177e-01 + -3.104274016699458e-01 + -3.100767106006651e-01 + -3.097265505731036e-01 + -3.093769214901858e-01 + -3.090278232197667e-01 + -3.086792556057311e-01 + -3.083312185528201e-01 + -3.079837119302323e-01 + -3.076367355606988e-01 + -3.072902893338402e-01 + -3.069443731087555e-01 + -3.065989866918071e-01 + -3.062541299629242e-01 + -3.059098027895394e-01 + -3.055660049841727e-01 + -3.052227363624680e-01 + -3.048799967605036e-01 + -3.045377860349815e-01 + -3.041961039937703e-01 + -3.038549504461246e-01 + -3.035143252370935e-01 + -3.031742281687436e-01 + -3.028346590287212e-01 + -3.024956176228422e-01 + -3.021571037727226e-01 + -3.018191172891879e-01 + -3.014816579447884e-01 + -3.011447255196590e-01 + -3.008083198102758e-01 + -3.004724406299011e-01 + -3.001370877400161e-01 + -2.998022608844934e-01 + -2.994679598576119e-01 + -2.991341844426006e-01 + -2.988009344054493e-01 + -2.984682095047237e-01 + -2.981360094999961e-01 + -2.978043341494513e-01 + -2.974731831997393e-01 + -2.971425563888731e-01 + -2.968124534589884e-01 + -2.964828741880918e-01 + -2.961538183196636e-01 + -2.958252855581221e-01 + -2.954972756291568e-01 + -2.951697882690829e-01 + -2.948428232168150e-01 + -2.945163801997789e-01 + -2.941904589349781e-01 + -2.938650591314966e-01 + -2.935401805013078e-01 + -2.932158227514122e-01 + -2.928919855851135e-01 + -2.925686687341852e-01 + -2.922458719001491e-01 + -2.919235947316832e-01 + -2.916018369508684e-01 + -2.912805982685433e-01 + -2.909598783275820e-01 + -2.906396768390501e-01 + -2.903199935181080e-01 + -2.900008280188033e-01 + -2.896821799916231e-01 + -2.893640491090957e-01 + -2.890464350819901e-01 + -2.887293375718574e-01 + -2.884127562142981e-01 + -2.880966906629407e-01 + -2.877811406014185e-01 + -2.874661057081589e-01 + -2.871515856017081e-01 + -2.868375799224188e-01 + -2.865240883310016e-01 + -2.862111104788733e-01 + -2.858986460098822e-01 + -2.855866945593247e-01 + -2.852752557499685e-01 + -2.849643292069009e-01 + -2.846539145659956e-01 + -2.843440114851778e-01 + -2.840346195818731e-01 + -2.837257384382189e-01 + -2.834173676812886e-01 + -2.831095069534547e-01 + -2.828021558855677e-01 + -2.824953140398479e-01 + -2.821889810170294e-01 + -2.818831564761255e-01 + -2.815778399984394e-01 + -2.812730311718642e-01 + -2.809687296216254e-01 + -2.806649349155874e-01 + -2.803616466281044e-01 + -2.800588643758425e-01 + -2.797565877594176e-01 + -2.794548163592918e-01 + -2.791535497376408e-01 + -2.788527874670974e-01 + -2.785525291296920e-01 + -2.782527743138438e-01 + -2.779535226034689e-01 + -2.776547735631448e-01 + -2.773565267276963e-01 + -2.770587816777879e-01 + -2.767615379983304e-01 + -2.764647952191276e-01 + -2.761685529026718e-01 + -2.758728106207560e-01 + -2.755775679024411e-01 + -2.752828243050798e-01 + -2.749885793975552e-01 + -2.746948327088052e-01 + -2.744015837838452e-01 + -2.741088321749212e-01 + -2.738165773969221e-01 + -2.735248189792139e-01 + -2.732335564721672e-01 + -2.729427894286903e-01 + -2.726525173657923e-01 + -2.723627397775934e-01 + -2.720734562117226e-01 + -2.717846661993187e-01 + -2.714963692431568e-01 + -2.712085648712142e-01 + -2.709212526021956e-01 + -2.706344319386959e-01 + -2.703481024077038e-01 + -2.700622635195931e-01 + -2.697769147573882e-01 + -2.694920556414950e-01 + -2.692076856844960e-01 + -2.689238043678598e-01 + -2.686404111894522e-01 + -2.683575056539274e-01 + -2.680750872618156e-01 + -2.677931554956217e-01 + -2.675117098420171e-01 + -2.672307498062658e-01 + -2.669502748541435e-01 + -2.666702844564393e-01 + -2.663907781339158e-01 + -2.661117553567487e-01 + -2.658332155842312e-01 + -2.655551583220328e-01 + -2.652775830228958e-01 + -2.650004891310402e-01 + -2.647238761635896e-01 + -2.644477435849875e-01 + -2.641720908275026e-01 + -2.638969173638899e-01 + -2.636222226679477e-01 + -2.633480062028563e-01 + -2.630742674151484e-01 + -2.628010057675256e-01 + -2.625282207270022e-01 + -2.622559117157733e-01 + -2.619840781930577e-01 + -2.617127196438671e-01 + -2.614418354712815e-01 + -2.611714251171109e-01 + -2.609014880694051e-01 + -2.606320237300626e-01 + -2.603630315312080e-01 + -2.600945109576975e-01 + -2.598264614192900e-01 + -2.595588823272051e-01 + -2.592917731268140e-01 + -2.590251332515323e-01 + -2.587589621335352e-01 + -2.584932592080277e-01 + -2.582280238899204e-01 + -2.579632555996659e-01 + -2.576989537753064e-01 + -2.574351178135512e-01 + -2.571717471205571e-01 + -2.569088411498421e-01 + -2.566463993032694e-01 + -2.563844209736399e-01 + -2.561229055922761e-01 + -2.558618525664796e-01 + -2.556012613001373e-01 + -2.553411312228936e-01 + -2.550814617199114e-01 + -2.548222521633088e-01 + -2.545635019702024e-01 + -2.543052105636615e-01 + -2.540473773489130e-01 + -2.537900016856341e-01 + -2.535330829668063e-01 + -2.532766206092137e-01 + -2.530206140025920e-01 + -2.527650625373169e-01 + -2.525099656058339e-01 + -2.522553225882911e-01 + -2.520011328519368e-01 + -2.517473957689335e-01 + -2.514941107682424e-01 + -2.512412772287477e-01 + -2.509888944763962e-01 + -2.507369619085763e-01 + -2.504854789235316e-01 + -2.502344448942996e-01 + -2.499838591881081e-01 + -2.497337211675947e-01 + -2.494840301941274e-01 + -2.492347856449565e-01 + -2.489859868896926e-01 + -2.487376332816026e-01 + -2.484897241934407e-01 + -2.482422589923619e-01 + -2.479952370263670e-01 + -2.477486576676466e-01 + -2.475025202765806e-01 + -2.472568241776227e-01 + -2.470115687463755e-01 + -2.467667533575219e-01 + -2.465223773319763e-01 + -2.462784400223504e-01 + -2.460349407926405e-01 + -2.457918789841980e-01 + -2.455492539346369e-01 + -2.453070649885519e-01 + -2.450653115068263e-01 + -2.448239928212929e-01 + -2.445831082525867e-01 + -2.443426571517872e-01 + -2.441026388729581e-01 + -2.438630527595843e-01 + -2.436238981283992e-01 + -2.433851743000419e-01 + -2.431468806082007e-01 + -2.429090164035606e-01 + -2.426715810065056e-01 + -2.424345737214870e-01 + -2.421979939156839e-01 + -2.419618409122474e-01 + -2.417261139893861e-01 + -2.414908125047008e-01 + -2.412559357926221e-01 + -2.410214831428485e-01 + -2.407874538901436e-01 + -2.405538473594189e-01 + -2.403206628448788e-01 + -2.400878996494245e-01 + -2.398555571012901e-01 + -2.396236345489386e-01 + -2.393921312730178e-01 + -2.391610465589564e-01 + -2.389303797400675e-01 + -2.387001301206918e-01 + -2.384702970040557e-01 + -2.382408797142012e-01 + -2.380118775445049e-01 + -2.377832897784107e-01 + -2.375551157141706e-01 + -2.373273546676602e-01 + -2.371000059435911e-01 + -2.368730688080822e-01 + -2.366465425799626e-01 + -2.364204265795865e-01 + -2.361947200488833e-01 + -2.359694222928865e-01 + -2.357445326362645e-01 + -2.355200503199650e-01 + -2.352959746331166e-01 + -2.350723049000333e-01 + -2.348490404054174e-01 + -2.346261804119323e-01 + -2.344037241869703e-01 + -2.341816710532240e-01 + -2.339600202844186e-01 + -2.337387711161095e-01 + -2.335179228570654e-01 + -2.332974748051559e-01 + -2.330774262250223e-01 + -2.328577763695832e-01 + -2.326385245095027e-01 + -2.324196699339893e-01 + -2.322012119071908e-01 + -2.319831496985562e-01 + -2.317654825913850e-01 + -2.315482098501277e-01 + -2.313313307350805e-01 + -2.311148445095759e-01 + -2.308987504304352e-01 + -2.306830477605995e-01 + -2.304677357746768e-01 + -2.302528137313455e-01 + -2.300382808821649e-01 + -2.298241364802842e-01 + -2.296103797849810e-01 + -2.293970100645507e-01 + -2.291840265929282e-01 + -2.289714285853380e-01 + -2.287592152687787e-01 + -2.285473859575702e-01 + -2.283359398767679e-01 + -2.281248762354934e-01 + -2.279141943457151e-01 + -2.277038934347241e-01 + -2.274939727028900e-01 + -2.272844314557521e-01 + -2.270752689260884e-01 + -2.268664843063303e-01 + -2.266580768713468e-01 + -2.264500458690802e-01 + -2.262423905203003e-01 + -2.260351100742427e-01 + -2.258282037663114e-01 + -2.256216708189812e-01 + -2.254155104759721e-01 + -2.252097219699820e-01 + -2.250043045201664e-01 + -2.247992573593203e-01 + -2.245945797283117e-01 + -2.243902708632074e-01 + -2.241863299547213e-01 + -2.239827562297785e-01 + -2.237795489631809e-01 + -2.235767073479459e-01 + -2.233742305913306e-01 + -2.231721179508258e-01 + -2.229703686190215e-01 + -2.227689817967141e-01 + -2.225679567331226e-01 + -2.223672926389324e-01 + -2.221669887137792e-01 + -2.219670441735496e-01 + -2.217674582593449e-01 + -2.215682301863681e-01 + -2.213693591068690e-01 + -2.211708442449674e-01 + -2.209726848493868e-01 + -2.207748801280919e-01 + -2.205774292618204e-01 + -2.203803314334422e-01 + -2.201835858632719e-01 + -2.199871917828554e-01 + -2.197911484006530e-01 + -2.195954548584606e-01 + -2.194001103587555e-01 + -2.192051141421317e-01 + -2.190104654040938e-01 + -2.188161633272981e-01 + -2.186222070944807e-01 + -2.184285959003400e-01 + -2.182353289399314e-01 + -2.180424054040691e-01 + -2.178498244760091e-01 + -2.176575853577229e-01 + -2.174656872563868e-01 + -2.172741293153170e-01 + -2.170829107184905e-01 + -2.168920306960583e-01 + -2.167014883907840e-01 + -2.165112829716549e-01 + -2.163214136638050e-01 + -2.161318796380734e-01 + -2.159426800456078e-01 + -2.157538140457635e-01 + -2.155652808465100e-01 + -2.153770796378261e-01 + -2.151892095617934e-01 + -2.150016698096599e-01 + -2.148144595574814e-01 + -2.146275779264766e-01 + -2.144410241083473e-01 + -2.142547972973645e-01 + -2.140688966286696e-01 + -2.138833212713278e-01 + -2.136980704068839e-01 + -2.135131431962469e-01 + -2.133285387811797e-01 + -2.131442563097479e-01 + -2.129602949644751e-01 + -2.127766538888946e-01 + -2.125933322205115e-01 + -2.124103291538361e-01 + -2.122276438425608e-01 + -2.120452754131807e-01 + -2.118632230196053e-01 + -2.116814858091140e-01 + -2.115000629262062e-01 + -2.113189535366684e-01 + -2.111381567835468e-01 + -2.109576717897184e-01 + -2.107774976942802e-01 + -2.105976336477213e-01 + -2.104180788038142e-01 + -2.102388322993181e-01 + -2.100598932684242e-01 + -2.098812608470688e-01 + -2.097029341689293e-01 + -2.095249123662445e-01 + -2.093471945702010e-01 + -2.091697799107427e-01 + -2.089926675162990e-01 + -2.088158565139439e-01 + -2.086393460309292e-01 + -2.084631351904399e-01 + -2.082872231124364e-01 + -2.081116089361562e-01 + -2.079362917906518e-01 + -2.077612707758083e-01 + -2.075865450013143e-01 + -2.074121135936494e-01 + -2.072379756933602e-01 + -2.070641303864229e-01 + -2.068905767613353e-01 + -2.067173139701657e-01 + -2.065443411403108e-01 + -2.063716573678470e-01 + -2.061992617242399e-01 + -2.060271533191409e-01 + -2.058553312792487e-01 + -2.056837947057731e-01 + -2.055125426973447e-01 + -2.053415743575506e-01 + -2.051708887985432e-01 + -2.050004850901530e-01 + -2.048303622987561e-01 + -2.046605195888223e-01 + -2.044909560501713e-01 + -2.043216707137636e-01 + -2.041526627003059e-01 + -2.039839311053935e-01 + -2.038154749924674e-01 + -2.036472934779214e-01 + -2.034793856435669e-01 + -2.033117505334730e-01 + -2.031443872603400e-01 + -2.029772949053144e-01 + -2.028104725040109e-01 + -2.026439191805672e-01 + -2.024776340229360e-01 + -2.023116160442759e-01 + -2.021458643362796e-01 + -2.019803779931268e-01 + -2.018151560674621e-01 + -2.016501976152565e-01 + -2.014855017030598e-01 + -2.013210674074579e-01 + -2.011568937830132e-01 + -2.009929798869589e-01 + -2.008293247967324e-01 + -2.006659275530022e-01 + -2.005027871933542e-01 + -2.003399027889975e-01 + -2.001772733993469e-01 + -2.000148980648089e-01 + -1.998527758076494e-01 + -1.996909056937942e-01 + -1.995292867991256e-01 + -1.993679181495860e-01 + -1.992067987609143e-01 + -1.990459276660739e-01 + -1.988853039482369e-01 + -1.987249266385540e-01 + -1.985647947339026e-01 + -1.984049072747179e-01 + -1.982452632992336e-01 + -1.980858618372365e-01 + -1.979267019229292e-01 + -1.977677825816225e-01 + -1.976091028269504e-01 + -1.974506616652059e-01 + -1.972924581269546e-01 + -1.971344912595772e-01 + -1.969767600601777e-01 + -1.968192635197257e-01 + -1.966620006473419e-01 + -1.965049704914111e-01 + -1.963481720619957e-01 + -1.961916043159508e-01 + -1.960352662866058e-01 + -1.958791570023236e-01 + -1.957232754408347e-01 + -1.955676205736371e-01 + -1.954121914050787e-01 + -1.952569869811404e-01 + -1.951020062511957e-01 + -1.949472481743376e-01 + -1.947927118000400e-01 + -1.946383960967118e-01 + -1.944843000224015e-01 + -1.943304226010136e-01 + -1.941767627996486e-01 + -1.940233195719773e-01 + -1.938700919198527e-01 + -1.937170788011597e-01 + -1.935642791691659e-01 + -1.934116920404960e-01 + -1.932593163702813e-01 + -1.931071510855982e-01 + -1.929551951739442e-01 + -1.928034476111422e-01 + -1.926519073523142e-01 + -1.925005733427448e-01 + -1.923494445333268e-01 + -1.921985198850023e-01 + -1.920477983694047e-01 + -1.918972789099489e-01 + -1.917469604078139e-01 + -1.915968418647559e-01 + -1.914469222323946e-01 + -1.912972003977130e-01 + -1.911476753153419e-01 + -1.909983459354311e-01 + -1.908492111828614e-01 + -1.907002699990133e-01 + -1.905515213021572e-01 + -1.904029639829450e-01 + -1.902545969863778e-01 + -1.901064192518998e-01 + -1.899584296832387e-01 + -1.898106271909556e-01 + -1.896630106872466e-01 + -1.895155790805884e-01 + -1.893683312769490e-01 + -1.892212661839438e-01 + -1.890743827110565e-01 + -1.889276797429612e-01 + -1.887811561730439e-01 + -1.886348109311961e-01 + -1.884886428944042e-01 + -1.883426509295119e-01 + -1.881968339481026e-01 + -1.880511908244114e-01 + -1.879057204210790e-01 + -1.877604216379617e-01 + -1.876152933660684e-01 + -1.874703344759240e-01 + -1.873255438107255e-01 + -1.871809202288037e-01 + -1.870364626111082e-01 + -1.868921698587295e-01 + -1.867480408184902e-01 + -1.866040743068453e-01 + -1.864602692045282e-01 + -1.863166243684211e-01 + -1.861731386269271e-01 + -1.860298108368848e-01 + -1.858866398430710e-01 + -1.857436244746902e-01 + -1.856007635808946e-01 + -1.854580560069532e-01 + -1.853155005825300e-01 + -1.851730961153894e-01 + -1.850308414342497e-01 + -1.848887353926573e-01 + -1.847467767859671e-01 + -1.846049644137440e-01 + -1.844632971091011e-01 + -1.843217736893654e-01 + -1.841803929497542e-01 + -1.840391536710132e-01 + -1.838980546953601e-01 + -1.837570948428414e-01 + -1.836162728527662e-01 + -1.834755875142904e-01 + -1.833350376404768e-01 + -1.831946220322505e-01 + -1.830543394615971e-01 + -1.829141886951903e-01 + -1.827741685199023e-01 + -1.826342777082210e-01 + -1.824945150204152e-01 + -1.823548792146146e-01 + -1.822153690716325e-01 + -1.820759833652730e-01 + -1.819367208114371e-01 + -1.817975801678411e-01 + -1.816585602158104e-01 + -1.815196596908165e-01 + -1.813808773333636e-01 + -1.812422118861797e-01 + -1.811036620617022e-01 + -1.809652266051679e-01 + -1.808269042761388e-01 + -1.806886937510042e-01 + -1.805505937426575e-01 + -1.804126030135119e-01 + -1.802747202867512e-01 + -1.801369442562599e-01 + -1.799992736029428e-01 + -1.798617070428147e-01 + -1.797242432859927e-01 + -1.795868810229852e-01 + -1.794496189531687e-01 + -1.793124557648680e-01 + -1.791753901302353e-01 + -1.790384207459855e-01 + -1.789015462957270e-01 + -1.787647654308534e-01 + -1.786280768266134e-01 + -1.784914791546937e-01 + -1.783549710639760e-01 + -1.782185512276328e-01 + -1.780822183108111e-01 + -1.779459709418989e-01 + -1.778098077766785e-01 + -1.776737274641330e-01 + -1.775377286080068e-01 + -1.774018098685905e-01 + -1.772659699092733e-01 + -1.771302073149079e-01 + -1.769945207098710e-01 + -1.768589087303928e-01 + -1.767233699571559e-01 + -1.765879030229077e-01 + -1.764525065751527e-01 + -1.763171791703831e-01 + -1.761819193770276e-01 + -1.760467257991546e-01 + -1.759115970764966e-01 + -1.757765317826701e-01 + -1.756415284467932e-01 + -1.755065856823099e-01 + -1.753717020824757e-01 + -1.752368761936218e-01 + -1.751021065398607e-01 + -1.749673916979465e-01 + -1.748327302843573e-01 + -1.746981207950505e-01 + -1.745635617515470e-01 + -1.744290517410085e-01 + -1.742945892830799e-01 + -1.741601728915786e-01 + -1.740258011048612e-01 + -1.738914724532109e-01 + -1.737571854631234e-01 + -1.736229386541751e-01 + -1.734887304969607e-01 + -1.733545594900176e-01 + -1.732204242005106e-01 + -1.730863230847530e-01 + -1.729522545880760e-01 + -1.728182172369972e-01 + -1.726842095169024e-01 + -1.725502298924380e-01 + -1.724162768405715e-01 + -1.722823488297978e-01 + -1.721484443102564e-01 + -1.720145617082366e-01 + -1.718806995062888e-01 + -1.717468561876117e-01 + -1.716130301380271e-01 + -1.714792197950507e-01 + -1.713454236195253e-01 + -1.712116399980747e-01 + -1.710778673588311e-01 + -1.709441041583024e-01 + -1.708103487974718e-01 + -1.706765996579921e-01 + -1.705428551238503e-01 + -1.704091136122197e-01 + -1.702753735243250e-01 + -1.701416332337174e-01 + -1.700078910979654e-01 + -1.698741454939726e-01 + -1.697403948188084e-01 + -1.696066374424440e-01 + -1.694728717024124e-01 + -1.693390959182572e-01 + -1.692053084687103e-01 + -1.690715077127793e-01 + -1.689376919605925e-01 + -1.688038595533757e-01 + -1.686700088249354e-01 + -1.685361380772680e-01 + -1.684022456043037e-01 + -1.682683297240474e-01 + -1.681343887869522e-01 + -1.680004210524648e-01 + -1.678664247764668e-01 + -1.677323982879569e-01 + -1.675983398888628e-01 + -1.674642478421112e-01 + -1.673301203727337e-01 + -1.671959557470875e-01 + -1.670617522514179e-01 + -1.669275081523977e-01 + -1.667932216748827e-01 + -1.666588910302535e-01 + -1.665245144618999e-01 + -1.663900902261115e-01 + -1.662556165573334e-01 + -1.661210916150787e-01 + -1.659865136192500e-01 + -1.658518808205523e-01 + -1.657171913793817e-01 + -1.655824434869752e-01 + -1.654476353589082e-01 + -1.653127651402884e-01 + -1.651778310039089e-01 + -1.650428311475997e-01 + -1.649077636947325e-01 + -1.647726268054878e-01 + -1.646374186795111e-01 + -1.645021374143022e-01 + -1.643667811219276e-01 + -1.642313479645375e-01 + -1.640958360797542e-01 + -1.639602435821208e-01 + -1.638245685678920e-01 + -1.636888091342957e-01 + -1.635529633807896e-01 + -1.634170294056715e-01 + -1.632810052843662e-01 + -1.631448890987297e-01 + -1.630086789505001e-01 + -1.628723728914803e-01 + -1.627359689604526e-01 + -1.625994652175857e-01 + -1.624628597296842e-01 + -1.623261505411777e-01 + -1.621893356498993e-01 + -1.620524130844338e-01 + -1.619153808874262e-01 + -1.617782370829140e-01 + -1.616409796594323e-01 + -1.615036066042981e-01 + -1.613661159511956e-01 + -1.612285056749289e-01 + -1.610907737177844e-01 + -1.609529180644884e-01 + -1.608149367058714e-01 + -1.606768276166446e-01 + -1.605385887249777e-01 + -1.604002179666082e-01 + -1.602617132920370e-01 + -1.601230726507729e-01 + -1.599842939686116e-01 + -1.598453751511857e-01 + -1.597063141136520e-01 + -1.595671087574746e-01 + -1.594277569704320e-01 + -1.592882566576958e-01 + -1.591486057239582e-01 + -1.590088020577491e-01 + -1.588688434990599e-01 + -1.587287278927537e-01 + -1.585884531125515e-01 + -1.584480170419727e-01 + -1.583074175205078e-01 + -1.581666523320080e-01 + -1.580257193426469e-01 + -1.578846164090064e-01 + -1.577433413163997e-01 + -1.576018918624315e-01 + -1.574602658488709e-01 + -1.573184610699215e-01 + -1.571764753211041e-01 + -1.570343063929105e-01 + -1.568919520623428e-01 + -1.567494100904384e-01 + -1.566066782348808e-01 + -1.564637542612438e-01 + -1.563206358983480e-01 + -1.561773208679784e-01 + -1.560338069324230e-01 + -1.558900918260982e-01 + -1.557461732592160e-01 + -1.556020489404925e-01 + -1.554577165574562e-01 + -1.553131737930803e-01 + -1.551684183667380e-01 + -1.550234479797016e-01 + -1.548782603038531e-01 + -1.547328529851514e-01 + -1.545872236759721e-01 + -1.544413700402710e-01 + -1.542952897416497e-01 + -1.541489804232354e-01 + -1.540024397056934e-01 + -1.538556652055174e-01 + -1.537086545589509e-01 + -1.535614054107616e-01 + -1.534139153265976e-01 + -1.532661818894184e-01 + -1.531182027303390e-01 + -1.529699754364569e-01 + -1.528214975805129e-01 + -1.526727667337492e-01 + -1.525237804315604e-01 + -1.523745362382714e-01 + -1.522250317710374e-01 + -1.520752645246755e-01 + -1.519252320010430e-01 + -1.517749318043420e-01 + -1.516243614355856e-01 + -1.514735183783821e-01 + -1.513224001894709e-01 + -1.511710043669709e-01 + -1.510193283881065e-01 + -1.508673697644896e-01 + -1.507151259726486e-01 + -1.505625944726656e-01 + -1.504097727456887e-01 + -1.502566582737337e-01 + -1.501032485283334e-01 + -1.499495409558064e-01 + -1.497955329817901e-01 + -1.496412220312461e-01 + -1.494866055649385e-01 + -1.493316810218445e-01 + -1.491764458131949e-01 + -1.490208973395277e-01 + -1.488650330073115e-01 + -1.487088502321930e-01 + -1.485523464347014e-01 + -1.483955190026080e-01 + -1.482383652905619e-01 + -1.480808826638546e-01 + -1.479230685198502e-01 + -1.477649202713839e-01 + -1.476064352431592e-01 + -1.474476107543291e-01 + -1.472884441602761e-01 + -1.471289328556787e-01 + -1.469690741904771e-01 + -1.468088654425319e-01 + -1.466483039513407e-01 + -1.464873870643751e-01 + -1.463261120992439e-01 + -1.461644763685366e-01 + -1.460024771711030e-01 + -1.458401117873900e-01 + -1.456773775256328e-01 + -1.455142717039091e-01 + -1.453507916253095e-01 + -1.451869345373153e-01 + -1.450226976893540e-01 + -1.448580783981553e-01 + -1.446930739597145e-01 + -1.445276816274984e-01 + -1.443618986028185e-01 + -1.441957221635531e-01 + -1.440291496154044e-01 + -1.438621781832398e-01 + -1.436948050802729e-01 + -1.435270275400491e-01 + -1.433588428498931e-01 + -1.431902482406432e-01 + -1.430212409022274e-01 + -1.428518180756519e-01 + -1.426819769869911e-01 + -1.425117148424586e-01 + -1.423410288662751e-01 + -1.421699162875700e-01 + -1.419983743276740e-01 + -1.418264001727286e-01 + -1.416539910114460e-01 + -1.414811440470098e-01 + -1.413078564852965e-01 + -1.411341255423312e-01 + -1.409599484327010e-01 + -1.407853222965617e-01 + -1.406102443173973e-01 + -1.404347117561954e-01 + -1.402587217519092e-01 + -1.400822714659246e-01 + -1.399053581557436e-01 + -1.397279789611117e-01 + -1.395501310267636e-01 + -1.393718115937786e-01 + -1.391930178402762e-01 + -1.390137469173205e-01 + -1.388339959972602e-01 + -1.386537622953096e-01 + -1.384730430031857e-01 + -1.382918352262208e-01 + -1.381101361784074e-01 + -1.379279430940128e-01 + -1.377452530885734e-01 + -1.375620633453186e-01 + -1.373783710804598e-01 + -1.371941734475252e-01 + -1.370094676273606e-01 + -1.368242508215203e-01 + -1.366385202106050e-01 + -1.364522729969404e-01 + -1.362655063841710e-01 + -1.360782175127518e-01 + -1.358904035964053e-01 + -1.357020618930480e-01 + -1.355131895302153e-01 + -1.353237837054462e-01 + -1.351338416922692e-01 + -1.349433606493001e-01 + -1.347523377766847e-01 + -1.345607703467432e-01 + -1.343686555800670e-01 + -1.341759906744941e-01 + -1.339827728348106e-01 + -1.337889993407819e-01 + -1.335946674413715e-01 + -1.333997743261954e-01 + -1.332043172962129e-01 + -1.330082936252972e-01 + -1.328117004983506e-01 + -1.326145352418741e-01 + -1.324167951779929e-01 + -1.322184775207451e-01 + -1.320195795498869e-01 + -1.318200985870884e-01 + -1.316200319613715e-01 + -1.314193769770063e-01 + -1.312181309395709e-01 + -1.310162911860090e-01 + -1.308138550466099e-01 + -1.306108198680959e-01 + -1.304071830473609e-01 + -1.302029419358534e-01 + -1.299980938748928e-01 + -1.297926362720222e-01 + -1.295865665431496e-01 + -1.293798820977739e-01 + -1.291725803345192e-01 + -1.289646586840201e-01 + -1.287561146028010e-01 + -1.285469455426532e-01 + -1.283371489741077e-01 + -1.281267223855238e-01 + -1.279156632656401e-01 + -1.277039691180485e-01 + -1.274916374652222e-01 + -1.272786658468367e-01 + -1.270650518164191e-01 + -1.268507929437779e-01 + -1.266358868257778e-01 + -1.264203310530910e-01 + -1.262041232080785e-01 + -1.259872609212462e-01 + -1.257697418614985e-01 + -1.255515637216261e-01 + -1.253327241582721e-01 + -1.251132208452764e-01 + -1.248930515084944e-01 + -1.246722139029198e-01 + -1.244507057917270e-01 + -1.242285249387353e-01 + -1.240056691417677e-01 + -1.237821362222557e-01 + -1.235579240163024e-01 + -1.233330303641722e-01 + -1.231074531412701e-01 + -1.228811902909497e-01 + -1.226542397328350e-01 + -1.224265993926709e-01 + -1.221982672554952e-01 + -1.219692413178169e-01 + -1.217395195880366e-01 + -1.215091001037845e-01 + -1.212779809466277e-01 + -1.210461602256936e-01 + -1.208136360512357e-01 + -1.205804065871132e-01 + -1.203464700244819e-01 + -1.201118245085727e-01 + -1.198764682774020e-01 + -1.196403996473917e-01 + -1.194036168896808e-01 + -1.191661183059585e-01 + -1.189279022478277e-01 + -1.186889671039581e-01 + -1.184493112863093e-01 + -1.182089332317922e-01 + -1.179678314226111e-01 + -1.177260043675167e-01 + -1.174834505981953e-01 + -1.172401686820595e-01 + -1.169961572351099e-01 + -1.167514149230550e-01 + -1.165059404117411e-01 + -1.162597324012717e-01 + -1.160127896494247e-01 + -1.157651109471359e-01 + -1.155166951180050e-01 + -1.152675410245315e-01 + -1.150176475647009e-01 + -1.147670136740031e-01 + -1.145156383362403e-01 + -1.142635205942373e-01 + -1.140106595167702e-01 + -1.137570541746248e-01 + -1.135027037005393e-01 + -1.132476072885310e-01 + -1.129917641930528e-01 + -1.127351736954119e-01 + -1.124778350964029e-01 + -1.122197477241451e-01 + -1.119609110122396e-01 + -1.117013244465126e-01 + -1.114409874638995e-01 + -1.111798996306716e-01 + -1.109180606010562e-01 + -1.106554699641756e-01 + -1.103921273860412e-01 + -1.101280326261970e-01 + -1.098631854961093e-01 + -1.095975858385727e-01 + -1.093312335328026e-01 + -1.090641285282797e-01 + -1.087962708201439e-01 + -1.085276604456853e-01 + -1.082582975002112e-01 + -1.079881821487157e-01 + -1.077173146235393e-01 + -1.074456951780328e-01 + -1.071733241222459e-01 + -1.069002018428373e-01 + -1.066263287812705e-01 + -1.063517054311524e-01 + -1.060763323447030e-01 + -1.058002101349244e-01 + -1.055233394662503e-01 + -1.052457210591484e-01 + -1.049673557111256e-01 + -1.046882442747131e-01 + -1.044083876525769e-01 + -1.041277868396362e-01 + -1.038464428925467e-01 + -1.035643569070283e-01 + -1.032815300276830e-01 + -1.029979634724506e-01 + -1.027136585692167e-01 + -1.024286166734134e-01 + -1.021428391952729e-01 + -1.018563276648054e-01 + -1.015690836461885e-01 + -1.012811087487812e-01 + -1.009924046817547e-01 + -1.007029732152899e-01 + -1.004128161832720e-01 + -1.001219355157012e-01 + -9.983033318947014e-02 + -9.953801123789381e-02 + -9.924497181065381e-02 + -9.895121710675164e-02 + -9.865674937610269e-02 + -9.836157098451072e-02 + -9.806568435550449e-02 + -9.776909196067303e-02 + -9.747179635418697e-02 + -9.717380018935569e-02 + -9.687510621844479e-02 + -9.657571724434684e-02 + -9.627563612429342e-02 + -9.597486578738405e-02 + -9.567340928055243e-02 + -9.537126972794066e-02 + -9.506845031433311e-02 + -9.476495428226560e-02 + -9.446078497156121e-02 + -9.415594584893169e-02 + -9.385044042616277e-02 + -9.354427227181475e-02 + -9.323744504129654e-02 + -9.292996250412121e-02 + -9.262182850819620e-02 + -9.231304696021701e-02 + -9.200362185853247e-02 + -9.169355729461479e-02 + -9.138285746240042e-02 + -9.107152658866502e-02 + -9.075956898041553e-02 + -9.044698911371001e-02 + -9.013379148226228e-02 + -8.981998063663986e-02 + -8.950556130228651e-02 + -8.919053824746566e-02 + -8.887491629233073e-02 + -8.855870039130662e-02 + -8.824189556852820e-02 + -8.792450692262105e-02 + -8.760653968435946e-02 + -8.728799913331863e-02 + -8.696889060279582e-02 + -8.664921956673162e-02 + -8.632899159487925e-02 + -8.600821233560418e-02 + -8.568688750540578e-02 + -8.536502290181033e-02 + -8.504262441718942e-02 + -8.471969805751253e-02 + -8.439624991228166e-02 + -8.407228614692197e-02 + -8.374781300392073e-02 + -8.342283682562317e-02 + -8.309736406563741e-02 + -8.277140122021633e-02 + -8.244495489588025e-02 + -8.211803185128563e-02 + -8.179063884910803e-02 + -8.146278271646745e-02 + -8.113447041766966e-02 + -8.080570906396743e-02 + -8.047650581443898e-02 + -8.014686781276095e-02 + -7.981680240792462e-02 + -7.948631704884632e-02 + -7.915541916537581e-02 + -7.882411634928695e-02 + -7.849241630024972e-02 + -7.816032674199919e-02 + -7.782785552351333e-02 + -7.749501058768483e-02 + -7.716179991262426e-02 + -7.682823159405887e-02 + -7.649431382724470e-02 + -7.616005485767063e-02 + -7.582546305035900e-02 + -7.549054686796573e-02 + -7.515531479419155e-02 + -7.481977542018518e-02 + -7.448393744841550e-02 + -7.414780964186224e-02 + -7.381140084542565e-02 + -7.347471999131863e-02 + -7.313777608894645e-02 + -7.280057821330421e-02 + -7.246313551410177e-02 + -7.212545725749871e-02 + -7.178755277686714e-02 + -7.144943146088469e-02 + -7.111110278446059e-02 + -7.077257629326426e-02 + -7.043386160590276e-02 + -7.009496843792977e-02 + -6.975590657859251e-02 + -6.941668588038064e-02 + -6.907731623736572e-02 + -6.873780762436528e-02 + -6.839817013263073e-02 + -6.805841390025939e-02 + -6.771854911509186e-02 + -6.737858603607710e-02 + -6.703853501790490e-02 + -6.669840646610939e-02 + -6.635821080020089e-02 + -6.601795854049251e-02 + -6.567766029345612e-02 + -6.533732672933422e-02 + -6.499696856244534e-02 + -6.465659655384894e-02 + -6.431622152906083e-02 + -6.397585437117004e-02 + -6.363550601749234e-02 + -6.329518746487584e-02 + -6.295490977261127e-02 + -6.261468405232740e-02 + -6.227452144919842e-02 + -6.193443314782195e-02 + -6.159443038613483e-02 + -6.125452449175782e-02 + -6.091472682299209e-02 + -6.057504875634485e-02 + -6.023550170757411e-02 + -5.989609715178513e-02 + -5.955684662483948e-02 + -5.921776169220818e-02 + -5.887885392543541e-02 + -5.854013491232313e-02 + -5.820161634720029e-02 + -5.786330995026137e-02 + -5.752522743033200e-02 + -5.718738052319666e-02 + -5.684978102238282e-02 + -5.651244078415603e-02 + -5.617537160914179e-02 + -5.583858533460867e-02 + -5.550209389764803e-02 + -5.516590918758542e-02 + -5.483004310132478e-02 + -5.449450760284144e-02 + -5.415931467224975e-02 + -5.382447627285256e-02 + -5.349000433169809e-02 + -5.315591089010736e-02 + -5.282220800586091e-02 + -5.248890761304951e-02 + -5.215602173570349e-02 + -5.182356244333215e-02 + -5.149154173522678e-02 + -5.115997163165661e-02 + -5.082886416999516e-02 + -5.049823136495267e-02 + -5.016808523392447e-02 + -4.983843779429676e-02 + -4.950930104255546e-02 + -4.918068697018742e-02 + -4.885260756307724e-02 + -4.852507478656667e-02 + -4.819810059193260e-02 + -4.787169691654435e-02 + -4.754587567726797e-02 + -4.722064876717863e-02 + -4.689602805511645e-02 + -4.657202539266345e-02 + -4.624865260469157e-02 + -4.592592148337583e-02 + -4.560384379218360e-02 + -4.528243126408893e-02 + -4.496169559628109e-02 + -4.464164845065374e-02 + -4.432230145577399e-02 + -4.400366620090135e-02 + -4.368575422918912e-02 + -4.336857704568598e-02 + -4.305214611378011e-02 + -4.273647284209545e-02 + -4.242156859535529e-02 + -4.210744469338823e-02 + -4.179411239819886e-02 + -4.148158291999365e-02 + -4.116986741259326e-02 + -4.085897697584740e-02 + -4.054892265423421e-02 + -4.023971542131075e-02 + -3.993136619382251e-02 + -3.962388583123071e-02 + -3.931728511726146e-02 + -3.901157477126550e-02 + -3.870676544906659e-02 + -3.840286772630143e-02 + -3.809989211312446e-02 + -3.779784905219891e-02 + -3.749674889469364e-02 + -3.719660192057603e-02 + -3.689741833904486e-02 + -3.659920826728452e-02 + -3.630198174507707e-02 + -3.600574873447752e-02 + -3.571051910326670e-02 + -3.541630263528623e-02 + -3.512310902944081e-02 + -3.483094789226868e-02 + -3.453982873906083e-02 + -3.424976098893085e-02 + -3.396075396966352e-02 + -3.367281691959212e-02 + -3.338595897696143e-02 + -3.310018917253339e-02 + -3.281551644593574e-02 + -3.253194963945627e-02 + -3.224949747985180e-02 + -3.196816859917648e-02 + -3.168797153104005e-02 + -3.140891468854379e-02 + -3.113100638362195e-02 + -3.085425482400445e-02 + -3.057866810270934e-02 + -3.030425420554928e-02 + -3.003102099769914e-02 + -2.975897623664901e-02 + -2.948812757423692e-02 + -2.921848253324668e-02 + -2.895004852283206e-02 + -2.868283284398848e-02 + -2.841684266935389e-02 + -2.815208505554401e-02 + -2.788856694668657e-02 + -2.762629515277662e-02 + -2.736527636581735e-02 + -2.710551716378724e-02 + -2.684702399109470e-02 + -2.658980317107453e-02 + -2.633386090723251e-02 + -2.607920326420626e-02 + -2.582583618939347e-02 + -2.557376551170278e-02 + -2.532299691452088e-02 + -2.507353595904179e-02 + -2.482538808499682e-02 + -2.457855859507147e-02 + -2.433305266394129e-02 + -2.408887533435539e-02 + -2.384603151841623e-02 + -2.360452600145211e-02 + -2.336436343201402e-02 + -2.312554832609387e-02 + -2.288808507226996e-02 + -2.265197791904223e-02 + -2.241723098404469e-02 + -2.218384825955722e-02 + -2.195183359578144e-02 + -2.172119070564114e-02 + -2.149192317903017e-02 + -2.126403446983029e-02 + -2.103752788800763e-02 + -2.081240661670658e-02 + -2.058867370373213e-02 + -2.036633206151460e-02 + -2.014538447470562e-02 + -1.992583358220780e-02 + -1.970768189350454e-02 + -1.949093179354288e-02 + -1.927558551890179e-02 + -1.906164517346932e-02 + -1.884911273803516e-02 + -1.863799005561765e-02 + -1.842827883084014e-02 + -1.821998063919436e-02 + -1.801309692347624e-02 + -1.780762899421212e-02 + -1.760357803216378e-02 + -1.740094507853177e-02 + -1.719973104881908e-02 + -1.699993673354589e-02 + -1.680156278321953e-02 + -1.660460972117107e-02 + -1.640907794332531e-02 + -1.621496771146485e-02 + -1.602227916433384e-02 + -1.583101231371427e-02 + -1.564116703862817e-02 + -1.545274309883748e-02 + -1.526574012772238e-02 + -1.508015761914186e-02 + -1.489599495303444e-02 + -1.471325139301425e-02 + -1.453192606709004e-02 + -1.435201798658663e-02 + -1.417352604127694e-02 + -1.399644899327932e-02 + -1.382078549302728e-02 + -1.364653407164367e-02 + -1.347369313289915e-02 + -1.330226097046918e-02 + -1.313223576283522e-02 + -1.296361556501821e-02 + -1.279639832327015e-02 + -1.263058187022890e-02 + -1.246616392163480e-02 + -1.230314208589229e-02 + -1.214151385550256e-02 + -1.198127661271531e-02 + -1.182242763705999e-02 + -1.166496409538715e-02 + -1.150888304589847e-02 + -1.135418144553720e-02 + -1.120085614521435e-02 + -1.104890388968280e-02 + -1.089832132231912e-02 + -1.074910498405016e-02 + -1.060125131793449e-02 + -1.045475666967276e-02 + -1.030961728045836e-02 + -1.016582929759894e-02 + -1.002338877483435e-02 + -9.882291666582974e-03 + -9.742533838318660e-03 + -9.604111064390042e-03 + -9.467019020603698e-03 + -9.331253297647066e-03 + -9.196809399717920e-03 + -9.063682741005771e-03 + -8.931868652392608e-03 + -8.801362376326071e-03 + -8.672159070075210e-03 + -8.544253813557785e-03 + -8.417641603575709e-03 + -8.292317355716863e-03 + -8.168275911736944e-03 + -8.045512032694060e-03 + -7.924020397696789e-03 + -7.803795618017998e-03 + -7.684832236645861e-03 + -7.567124714929550e-03 + -7.450667444285828e-03 + -7.335454748033539e-03 + -7.221480883382279e-03 + -7.108740043647531e-03 + -6.997226348639058e-03 + -6.886933855315346e-03 + -6.777856561420043e-03 + -6.669988397445708e-03 + -6.563323236817328e-03 + -6.457854897474280e-03 + -6.353577131920331e-03 + -6.250483639666226e-03 + -6.148568068731946e-03 + -6.047824005897748e-03 + -5.948244987599076e-03 + -5.849824501347084e-03 + -5.752555978513681e-03 + -5.656432807264865e-03 + -5.561448332218353e-03 + -5.467595840626229e-03 + -5.374868578311233e-03 + -5.283259752176146e-03 + -5.192762521793490e-03 + -5.103370006626977e-03 + -5.015075286629148e-03 + -4.927871401782054e-03 + -4.841751355904269e-03 + -4.756708115524279e-03 + -4.672734611342882e-03 + -4.589823741835811e-03 + -4.507968371897898e-03 + -4.427161334111035e-03 + -4.347395432360992e-03 + -4.268663440821394e-03 + -4.190958105123732e-03 + -4.114272145237943e-03 + -4.038598254543495e-03 + -3.963929102325757e-03 + -3.890257335680627e-03 + -3.817575578228647e-03 + -3.745876433060482e-03 + -3.675152484340320e-03 + -3.605396296371936e-03 + -3.536600416225055e-03 + -3.468757375181376e-03 + -3.401859688514519e-03 + -3.335899857279008e-03 + -3.270870369624132e-03 + -3.206763701552144e-03 + -3.143572317880366e-03 + -3.081288673370167e-03 + -3.019905214426235e-03 + -2.959414379161780e-03 + -2.899808598243805e-03 + -2.841080297295089e-03 + -2.783221897187762e-03 + -2.726225814481816e-03 + -2.670084462721576e-03 + -2.614790253659214e-03 + -2.560335598217736e-03 + -2.506712907773368e-03 + -2.453914594305456e-03 + -2.401933071402304e-03 + -2.350760756079694e-03 + -2.300390068609935e-03 + -2.250813433830373e-03 + -2.202023282926124e-03 + -2.154012052729510e-03 + -2.106772187286276e-03 + -2.060296139752280e-03 + -2.014576371403607e-03 + -1.969605353508076e-03 + -1.925375568654703e-03 + -1.881879509874747e-03 + -1.839109683164610e-03 + -1.797058608044933e-03 + -1.755718816706420e-03 + -1.715082857166331e-03 + -1.675143293280333e-03 + -1.635892703443056e-03 + -1.597323683697497e-03 + -1.559428848712492e-03 + -1.522200830321536e-03 + -1.485632280183934e-03 + -1.449715870092584e-03 + -1.414444291041649e-03 + -1.379810256474448e-03 + -1.345806501791486e-03 + -1.312425783716085e-03 + -1.279660883530597e-03 + -1.247504606026809e-03 + -1.215949779407020e-03 + -1.184989258561609e-03 + -1.154615923413642e-03 + -1.124822679454977e-03 + -1.095602461024569e-03 + -1.066948228352973e-03 + -1.038852968864840e-03 + -1.011309701783447e-03 + -9.843114734261671e-04 + -9.578513585924095e-04 + -9.319224654553773e-04 + -9.065179311555053e-04 + -8.816309237062864e-04 + -8.572546450286300e-04 + -8.333823272254078e-04 + -8.100072355517002e-04 + -7.871226705798197e-04 + -7.647219641139264e-04 + -7.427984826268421e-04 + -7.213456295816899e-04 + -7.003568409622573e-04 + -6.798255887472549e-04 + -6.597453829223955e-04 + -6.401097674232178e-04 + -6.209123240167792e-04 + -6.021466729184949e-04 + -5.838064694784330e-04 + -5.658854088227745e-04 + -5.483772251938055e-04 + -5.312756891491387e-04 + -5.145746125261390e-04 + -4.982678466736966e-04 + -4.823492804447342e-04 + -4.668128456938979e-04 + -4.516525141842837e-04 + -4.368622962674093e-04 + -4.224362466667431e-04 + -4.083684605074392e-04 + -3.946530726767535e-04 + -3.812842634726816e-04 + -3.682562540846601e-04 + -3.555633067280622e-04 + -3.431997298953713e-04 + -3.311598733734528e-04 + -3.194381292167991e-04 + -3.080289365424697e-04 + -2.969267761950205e-04 + -2.861261725181284e-04 + -2.756216974519896e-04 + -2.654079650780054e-04 + -2.554796342192304e-04 + -2.458314117831762e-04 + -2.364580472261255e-04 + -2.273543358783364e-04 + -2.185151214599497e-04 + -2.099352907310207e-04 + -2.016097775283348e-04 + -1.935335642058985e-04 + -1.857016766078902e-04 + -1.781091887621722e-04 + -1.707512232636694e-04 + -1.636229467286454e-04 + -1.567195750846747e-04 + -1.500363727286114e-04 + -1.435686485603325e-04 + -1.373117617901810e-04 + -1.312611200233150e-04 + -1.254121759173047e-04 + -1.197604333131590e-04 + -1.143014443478538e-04 + -1.090308067994204e-04 + -1.039441703359566e-04 + -9.903723276260782e-05 + -9.430573818110019e-05 + -8.974548326970851e-05 + -8.535231263786576e-05 + -8.112211782233505e-05 + -7.705084341917009e-05 + -7.313448187442813e-05 + -6.936907333027644e-05 + -6.575071119249467e-05 + -6.227553658275769e-05 + -5.893973914900695e-05 + -5.573956203853484e-05 + -5.267129595161032e-05 + -4.973128084575291e-05 + -4.691591029739419e-05 + -4.422162539456759e-05 + -4.164491727590835e-05 + -3.918233061143914e-05 + -3.683045757249665e-05 + -3.458594118927672e-05 + -3.244547785270521e-05 + -3.040581149216269e-05 + -2.846373767254703e-05 + -2.661610506551807e-05 + -2.485980997915884e-05 + -2.319180110803831e-05 + -2.160907991664170e-05 + -2.010869565536285e-05 + -1.868775067119526e-05 + -1.734339969669114e-05 + -1.607284546059277e-05 + -1.487334444060605e-05 + -1.374220506933501e-05 + -1.267678404087566e-05 + -1.167449238525668e-05 + -1.073279264625808e-05 + -9.849195952118955e-06 + -9.021268250139948e-06 + -8.246626567968640e-06 + -7.522936912951058e-06 + -6.847920492700095e-06 + -6.219349168072015e-06 + -5.635044236568559e-06 + -5.092882470932048e-06 + -4.590790895044201e-06 + -4.126746487291455e-06 + -3.698781859286729e-06 + -3.304979520120749e-06 + -2.943472506918129e-06 + -2.612449510984778e-06 + -2.310148834845521e-06 + -2.034859929271865e-06 + -1.784927798002038e-06 + -1.558746837246077e-06 + -1.354763241038800e-06 + -1.171478551126456e-06 + -1.007443551831214e-06 + -8.612614901318561e-07 + -7.315906671893518e-07 + -6.171385461507109e-07 + -5.166657190198488e-07 + -4.289874671965282e-07 + -3.529682224298676e-07 + -2.875261969469119e-07 + -2.316338735426513e-07 + -1.843129441850586e-07 + -1.446395043479685e-07 + -1.117434618507405e-07 + -8.480406305106530e-08 + -6.305553831873507e-08 + -4.578544870958251e-08 + -3.233089380928512e-08 + -2.208448022054805e-08 + -1.449165750478591e-08 + -9.047683233008124e-09 + -5.303766739728543e-09 + -2.863504097386866e-09 + -1.380623394721897e-09 + -5.650641971230870e-10 + -1.790372475752245e-10 + -3.511990521548007e-11 + -8.192061809269277e-13 + 0.000000000000000e+00 diff --git a/examples/SPIN/test_problems/validation_nve/in.spin.iron-nve b/examples/SPIN/test_problems/validation_nve/in.spin.iron-nve new file mode 100644 index 0000000000..f00fb1ec12 --- /dev/null +++ b/examples/SPIN/test_problems/validation_nve/in.spin.iron-nve @@ -0,0 +1,49 @@ +# bcc iron in a 3d periodic box + +clear +units metal +atom_style spin + +dimension 3 +boundary p p p + +# necessary for the serial algorithm (sametag) +atom_modify map array + +lattice bcc 2.8665 +region box block 0.0 3.0 0.0 3.0 0.0 3.0 +create_box 1 box +create_atoms 1 box + +# setting mass, mag. moments, and interactions for bcc iron + +mass 1 55.845 +set group all spin/random 31 2.2 +velocity all create 100 4928459 rot yes dist gaussian + +pair_style hybrid/overlay eam/alloy spin/exchange 3.5 +pair_coeff * * eam/alloy Fe_Mishin2006.eam.alloy Fe +pair_coeff * * spin/exchange exchange 3.4 0.02726 0.2171 1.841 + +neighbor 0.1 bin +neigh_modify every 10 check yes delay 20 + +fix 1 all precession/spin zeeman 0.0 0.0 0.0 1.0 +fix 2 all langevin/spin 0.0 0.00 21 +fix 3 all nve/spin lattice moving +timestep 0.0001 + +# compute and output options + +compute out_mag all spin +compute out_pe all pe +compute out_ke all ke +compute out_temp all temp + +variable emag equal c_out_mag[5] +variable tmag equal c_out_mag[6] + +thermo_style custom step time v_tmag temp v_emag ke pe etotal +thermo 200 + +run 100000 diff --git a/examples/SPIN/test_problems/validation_nve/plot_nve.py b/examples/SPIN/test_problems/validation_nve/plot_nve.py new file mode 100755 index 0000000000..ffa7defaed --- /dev/null +++ b/examples/SPIN/test_problems/validation_nve/plot_nve.py @@ -0,0 +1,46 @@ +#!/usr/bin/env python3 + +import numpy as np, pylab, tkinter +import matplotlib.pyplot as plt +from scipy.optimize import curve_fit +from decimal import * +import sys, string, os + + +argv = sys.argv +if len(argv) != 3: + print("Syntax: ./plot_precession.py res_lammps.dat") + sys.exit() + +dirname = os.path.join(os.getcwd(), "Feb_07") +lammps_file = sys.argv[1] +llg_file = sys.argv[2] + +t,tmag,temp,e_mag,e_kin,e_pot,e_tot = np.loadtxt(lammps_file,skiprows=0, usecols=(1,2,3,4,5,6,7),unpack=True) + +fig = plt.figure(figsize=(8,8)) +ax1 = plt.subplot(3,1,1) +ax2 = plt.subplot(3,1,2) +ax3 = plt.subplot(3,1,3) + +ax1.plot(t, e_tot, 'k-', label='Total energy') +ax1.plot(t, e_pot, 'r-', label='Potential energy') +ax1.set_ylabel("E (eV)") +ax1.legend(loc=3) + +ax2.plot(t, e_kin, 'b-', label='Kinetic energy') +ax2.plot(t, e_mag, 'g-', label='Magnetic energy') +ax2.set_ylabel("E (eV)") +ax2.legend(loc=3) + +ax3.plot(t, temp, 'b--', label='Latt. temperature') +ax3.plot(t, tmag, 'r--', label='Spin temperature') +ax3.set_ylabel("T (K)") +ax3.legend(loc=3) + +plt.xlabel('Time (in ps)') +plt.legend() +plt.show() + +fig.savefig(os.path.join(os.getcwd(), "nve_spin_lattice.pdf"), bbox_inches="tight") +plt.close(fig) diff --git a/examples/SPIN/test_problems/validation_nve/run-test-nve.sh b/examples/SPIN/test_problems/validation_nve/run-test-nve.sh new file mode 100755 index 0000000000..441e7cf46d --- /dev/null +++ b/examples/SPIN/test_problems/validation_nve/run-test-nve.sh @@ -0,0 +1,16 @@ +#!/bin/bash + +# clean old res +rm res_*.dat + +# compute Lammps +./../../../../src/lmp_serial \ + -in in.spin.iron-nve +in="$(grep -n Step log.lammps | awk -F ':' '{print $1}')" +en="$(grep -n Loop log.lammps | awk -F ':' '{print $1}')" +in="$(echo "$in+1" | bc -l)" +en="$(echo "$en-$in" | bc -l)" +tail -n +$in log.lammps | head -n $en > res_lammps.dat + +# plot results +python3 -m plot_nve.py res_lammps.dat res_llg.dat diff --git a/examples/SPIN/test_problems/validation_nve/test-spin-precession.in b/examples/SPIN/test_problems/validation_nve/test-spin-precession.in new file mode 100644 index 0000000000..0ca49364d2 --- /dev/null +++ b/examples/SPIN/test_problems/validation_nve/test-spin-precession.in @@ -0,0 +1,39 @@ +#LAMMPS in.run + +units metal +atom_style spin +atom_modify map array +boundary f f f + +read_data two_spins.data + +pair_style spin/exchange 3.1 +pair_coeff * * exchange 3.1 11.254 0.0 1.0 + +group bead type 1 + +variable H equal 0.0 +variable Kan equal 0.0 +variable Temperature equal 0.0 +variable RUN equal 30000 + +fix 1 all nve/spin lattice no +fix 2 all precession/spin zeeman ${H} 0.0 0.0 1.0 anisotropy ${Kan} 0.0 0.0 1.0 +fix_modify 2 energy yes +fix 3 all langevin/spin ${Temperature} 0.01 12345 + +compute out_mag all spin +compute out_pe all pe + +variable magx equal c_out_mag[1] +variable magy equal c_out_mag[2] +variable magz equal c_out_mag[3] +variable magnorm equal c_out_mag[4] +variable emag equal c_out_mag[5] + +thermo_style custom step time v_magx v_magy v_magz v_emag pe etotal +thermo 10 + +timestep 0.0001 + +run ${RUN} diff --git a/examples/SPIN/test_problems/validation_nvt/Fe_Mishin2006.eam.alloy b/examples/SPIN/test_problems/validation_nvt/Fe_Mishin2006.eam.alloy new file mode 100644 index 0000000000..69231bb7ee --- /dev/null +++ b/examples/SPIN/test_problems/validation_nvt/Fe_Mishin2006.eam.alloy @@ -0,0 +1,15009 @@ +comment 1 +comment 2 +Converted by Ganga P Purja Pun using C++ code on Mon Nov 3 10:48:17 2014 +1 Fe +5001 2.400000000000000e-03 5001 1.134673400048920e-03 5.673367000244601e+00 +26 5.584700000000000e+01 2.855300000000000e+00 BCC + 0.000000000000000e+00 + -2.338738741480766e-02 + -4.628214468925276e-02 + -6.912258036387915e-02 + -9.175603963501618e-02 + -1.141497214000000e-01 + -1.363388222824136e-01 + -1.583226111166723e-01 + -1.800965752913192e-01 + -2.016645989796093e-01 + -2.230289901000000e-01 + -2.441907391820846e-01 + -2.651515164004249e-01 + -2.859130554412839e-01 + -3.064769176965011e-01 + -3.268446844000000e-01 + -3.470179531091855e-01 + -3.669982968636285e-01 + -3.867872784635140e-01 + -4.063864535839295e-01 + -4.257973671999999e-01 + -4.450215551034667e-01 + -4.640605423684923e-01 + -4.829158454463851e-01 + -5.015889707095635e-01 + -5.200814146000000e-01 + -5.383946650297390e-01 + -5.565301991603658e-01 + -5.744894857268537e-01 + -5.922739837155686e-01 + -6.098851423000000e-01 + -6.273244022645037e-01 + -6.445931939756846e-01 + -6.616929394780281e-01 + -6.786250511352716e-01 + -6.953909318999999e-01 + -7.119919765952718e-01 + -7.284295696432279e-01 + -7.447050873484842e-01 + -7.608198966551055e-01 + -7.767753551999997e-01 + -7.925728126189590e-01 + -8.082136084644670e-01 + -8.236990743647939e-01 + -8.390305327768360e-01 + -8.542092970000001e-01 + -8.692366724924486e-01 + -8.841139549244775e-01 + -8.988424321942350e-01 + -9.134233831702263e-01 + -9.278580778000000e-01 + -9.421477783833053e-01 + -9.562937376266863e-01 + -9.702972006149804e-01 + -9.841594035897939e-01 + -9.978815741999999e-01 + -1.011464932626877e+00 + -1.024910689374227e+00 + -1.038220047492379e+00 + -1.051394201530088e+00 + -1.064434338000000e+00 + -1.077341636148692e+00 + -1.090117264995124e+00 + -1.102762386491716e+00 + -1.115278154872840e+00 + -1.127665716000000e+00 + -1.139926208397942e+00 + -1.152060761127338e+00 + -1.164070496370367e+00 + -1.175956528594255e+00 + -1.187719964000000e+00 + -1.199361901614307e+00 + -1.210883431375302e+00 + -1.222285636497208e+00 + -1.233569592577916e+00 + -1.244736367000000e+00 + -1.255787020138112e+00 + -1.266722603828963e+00 + -1.277544163022812e+00 + -1.288252734706093e+00 + -1.298849349000000e+00 + -1.309335029515858e+00 + -1.319710789766606e+00 + -1.329977637188551e+00 + -1.340136572985217e+00 + -1.350188590000000e+00 + -1.360134674013246e+00 + -1.369975802739515e+00 + -1.379712947700534e+00 + -1.389347073262624e+00 + -1.398879136000000e+00 + -1.408310086019347e+00 + -1.417640866058629e+00 + -1.426872412303706e+00 + -1.436005653062347e+00 + -1.445041510000000e+00 + -1.453980898788701e+00 + -1.462824726507764e+00 + -1.471573894410746e+00 + -1.480229297407323e+00 + -1.488791823000000e+00 + -1.497262352264216e+00 + -1.505641758273629e+00 + -1.513930908641532e+00 + -1.522130664940848e+00 + -1.530241881000000e+00 + -1.538265404312065e+00 + -1.546202075663511e+00 + -1.554052729949587e+00 + -1.561818194964572e+00 + -1.569499292000000e+00 + -1.577096836740392e+00 + -1.584611637631811e+00 + -1.592044497451960e+00 + -1.599396212413425e+00 + -1.606667572000000e+00 + -1.613859360067553e+00 + -1.620972353850301e+00 + -1.628007324820493e+00 + -1.634965037585305e+00 + -1.641846251000000e+00 + -1.648651718746855e+00 + -1.655382187120556e+00 + -1.662038397074428e+00 + -1.668621083574689e+00 + -1.675130975000000e+00 + -1.681568794320005e+00 + -1.687935258528783e+00 + -1.694231079461267e+00 + -1.700456962682860e+00 + -1.706613607000000e+00 + -1.712701705964896e+00 + -1.718721948142722e+00 + -1.724675016499694e+00 + -1.730561586828580e+00 + -1.736382330000000e+00 + -1.742137912457411e+00 + -1.747828994017656e+00 + -1.753456229026646e+00 + -1.759020265526974e+00 + -1.764521747000000e+00 + -1.769961312537754e+00 + -1.775339594027171e+00 + -1.780657218386706e+00 + -1.785914807192779e+00 + -1.791112977000000e+00 + -1.796252339747382e+00 + -1.801333500673453e+00 + -1.806357060360666e+00 + -1.811323614328498e+00 + -1.816233753000000e+00 + -1.821088062150410e+00 + -1.825887120985276e+00 + -1.830631504346673e+00 + -1.835321782397329e+00 + -1.839958520000000e+00 + -1.844542277375300e+00 + -1.849073608812209e+00 + -1.853553064572349e+00 + -1.857981190434394e+00 + -1.862358526000000e+00 + -1.866685606181999e+00 + -1.870962962067843e+00 + -1.875191119963197e+00 + -1.879370599902195e+00 + -1.883501918000000e+00 + -1.887585586736770e+00 + -1.891622112755978e+00 + -1.895611998485404e+00 + -1.899555741651499e+00 + -1.903453835000000e+00 + -1.907306767129976e+00 + -1.911115021853308e+00 + -1.914879078883785e+00 + -1.918599413067872e+00 + -1.922276495000000e+00 + -1.925910791456493e+00 + -1.929502763824010e+00 + -1.933052869645757e+00 + -1.936561562187136e+00 + -1.940029290000000e+00 + -1.943456497684402e+00 + -1.946843625242175e+00 + -1.950191109032846e+00 + -1.953499381145042e+00 + -1.956768869000000e+00 + -1.959999996258605e+00 + -1.963193182622893e+00 + -1.966348843806269e+00 + -1.969467390558660e+00 + -1.972549230000000e+00 + -1.975594766012145e+00 + -1.978604397775412e+00 + -1.981578520793180e+00 + -1.984517526364655e+00 + -1.987421802000000e+00 + -1.990291731861874e+00 + -1.993127695559656e+00 + -1.995930069364364e+00 + -1.998699225767272e+00 + -2.001435533000000e+00 + -2.004139355858378e+00 + -2.006811055538481e+00 + -2.009450989763890e+00 + -2.012059511961222e+00 + -2.014636972000000e+00 + -2.017183716742461e+00 + -2.019700089231340e+00 + -2.022186429001382e+00 + -2.024643071393187e+00 + -2.027070349000000e+00 + -2.029468591629637e+00 + -2.031838124095820e+00 + -2.034179268100215e+00 + -2.036492342201070e+00 + -2.038777662000000e+00 + -2.041035540156417e+00 + -2.043266284490031e+00 + -2.045470200083453e+00 + -2.047647589335177e+00 + -2.049798751000000e+00 + -2.051923980684690e+00 + -2.054023570214561e+00 + -2.056097808968247e+00 + -2.058146983649728e+00 + -2.060171377000000e+00 + -2.062171268551674e+00 + -2.064146934640815e+00 + -2.066098649159696e+00 + -2.068026683134947e+00 + -2.069931304000000e+00 + -2.071812776276246e+00 + -2.073671361471072e+00 + -2.075507318519566e+00 + -2.077320903301032e+00 + -2.079112369000000e+00 + -2.080881966139512e+00 + -2.082629940879466e+00 + -2.084356537486872e+00 + -2.086061998635378e+00 + -2.087746563000000e+00 + -2.089410466229110e+00 + -2.091053941828707e+00 + -2.092677220771137e+00 + -2.094280530723314e+00 + -2.095864097000000e+00 + -2.097428142794787e+00 + -2.098972888139794e+00 + -2.100498550462023e+00 + -2.102005344216306e+00 + -2.103493482000000e+00 + -2.104963174393948e+00 + -2.106414628045970e+00 + -2.107848047779690e+00 + -2.109263636820768e+00 + -2.110661595000000e+00 + -2.112042119471926e+00 + -2.113405405101743e+00 + -2.114751645122076e+00 + -2.116081030815763e+00 + -2.117393750000000e+00 + -2.118689987937912e+00 + -2.119969928191390e+00 + -2.121233752504371e+00 + -2.122481640223532e+00 + -2.123713768000000e+00 + -2.124930310308645e+00 + -2.126131439345980e+00 + -2.127317325650607e+00 + -2.128488137848567e+00 + -2.129644042000000e+00 + -2.130785202020548e+00 + -2.131911779449632e+00 + -2.133023934312029e+00 + -2.134121824962966e+00 + -2.135205607000000e+00 + -2.136275433910872e+00 + -2.137331457489147e+00 + -2.138373827747866e+00 + -2.139402692469194e+00 + -2.140418197999999e+00 + -2.141420489142081e+00 + -2.142409707722756e+00 + -2.143385994030927e+00 + -2.144349486926974e+00 + -2.145300323000000e+00 + -2.146238637076898e+00 + -2.147164562479522e+00 + -2.148078231051947e+00 + -2.148979772720135e+00 + -2.149869315000000e+00 + -2.150746983835218e+00 + -2.151612904662093e+00 + -2.152467200947815e+00 + -2.153309993218032e+00 + -2.154141401000000e+00 + -2.154961542883784e+00 + -2.155770535619624e+00 + -2.156568494253713e+00 + -2.157355531798206e+00 + -2.158131760000000e+00 + -2.158897289576013e+00 + -2.159652229917454e+00 + -2.160396688379106e+00 + -2.161130769707277e+00 + -2.161854579000000e+00 + -2.162568220747540e+00 + -2.163271795520776e+00 + -2.163965403104795e+00 + -2.164649143391419e+00 + -2.165323114000000e+00 + -2.165987410839904e+00 + -2.166642128874188e+00 + -2.167287362019562e+00 + -2.167923202786971e+00 + -2.168549742000000e+00 + -2.169167069289456e+00 + -2.169775273557456e+00 + -2.170374442741976e+00 + -2.170964663390078e+00 + -2.171546020000000e+00 + -2.172118595836383e+00 + -2.172682474202094e+00 + -2.173237737093693e+00 + -2.173784464448991e+00 + -2.174322736000000e+00 + -2.174852630794634e+00 + -2.175374225221640e+00 + -2.175887595177988e+00 + -2.176392816678372e+00 + -2.176889964000000e+00 + -2.177379110090651e+00 + -2.177860327096639e+00 + -2.178333686466943e+00 + -2.178799258747679e+00 + -2.179257113000000e+00 + -2.179707317299531e+00 + -2.180149939409128e+00 + -2.180585046165010e+00 + -2.181012703042297e+00 + -2.181432975000000e+00 + -2.181845926509731e+00 + -2.182251621108717e+00 + -2.182650121032542e+00 + -2.183041486916871e+00 + -2.183425780000000e+00 + -2.183803061402426e+00 + -2.184173389857596e+00 + -2.184536823542827e+00 + -2.184893420600431e+00 + -2.185243238000000e+00 + -2.185586332004080e+00 + -2.185922759056265e+00 + -2.186252574500474e+00 + -2.186575831916728e+00 + -2.186892585000000e+00 + -2.187202887393400e+00 + -2.187506791832633e+00 + -2.187804350256584e+00 + -2.188095613705712e+00 + -2.188380633000000e+00 + -2.188659458643119e+00 + -2.188932140238827e+00 + -2.189198726845117e+00 + -2.189459267002233e+00 + -2.189713809000000e+00 + -2.189962400732430e+00 + -2.190205089044370e+00 + -2.190441920581333e+00 + -2.190672942002169e+00 + -2.190898199000000e+00 + -2.191117736662499e+00 + -2.191331600149922e+00 + -2.191539834109547e+00 + -2.191742482380937e+00 + -2.191939589000000e+00 + -2.192131197889608e+00 + -2.192317351831708e+00 + -2.192498093290244e+00 + -2.192673464653123e+00 + -2.192843508000000e+00 + -2.193008265149897e+00 + -2.193167777657277e+00 + -2.193322086821774e+00 + -2.193471233640668e+00 + -2.193615259000000e+00 + -2.193754203483761e+00 + -2.193888106693908e+00 + -2.194017008313546e+00 + -2.194140948496115e+00 + -2.194259967000000e+00 + -2.194374103230534e+00 + -2.194483396307522e+00 + -2.194587885225862e+00 + -2.194687608881331e+00 + -2.194782606000000e+00 + -2.194872915200472e+00 + -2.194958575082935e+00 + -2.195039623893670e+00 + -2.195116099394696e+00 + -2.195188040000000e+00 + -2.195255484352944e+00 + -2.195318470219860e+00 + -2.195377035223315e+00 + -2.195431217130485e+00 + -2.195481054000000e+00 + -2.195526583926446e+00 + -2.195567844428364e+00 + -2.195604873029958e+00 + -2.195637707516086e+00 + -2.195666386000000e+00 + -2.195690946583878e+00 + -2.195711426545218e+00 + -2.195727863658885e+00 + -2.195740296673043e+00 + -2.195748763000000e+00 + -2.195753299607926e+00 + -2.195753945356280e+00 + -2.195750739132009e+00 + -2.195743719093693e+00 + -2.195732923000000e+00 + -2.195718388771941e+00 + -2.195700155840199e+00 + -2.195678263244660e+00 + -2.195652748934943e+00 + -2.195623652000000e+00 + -2.195591012099144e+00 + -2.195554867993407e+00 + -2.195515258985693e+00 + -2.195472225489285e+00 + -2.195425807000000e+00 + -2.195376042760528e+00 + -2.195322973614639e+00 + -2.195266640267298e+00 + -2.195207082686241e+00 + -2.195144342000000e+00 + -2.195078459809379e+00 + -2.195009476453377e+00 + -2.194937433066797e+00 + -2.194862372466152e+00 + -2.194784337000000e+00 + -2.194703368615792e+00 + -2.194619509257747e+00 + -2.194532801771278e+00 + -2.194443290305841e+00 + -2.194351018000000e+00 + -2.194256027737437e+00 + -2.194158364279782e+00 + -2.194058072250755e+00 + -2.193955195446114e+00 + -2.193849779000000e+00 + -2.193741868885436e+00 + -2.193631510785602e+00 + -2.193518750557477e+00 + -2.193403634464252e+00 + -2.193286209000000e+00 + -2.193166521091908e+00 + -2.193044618884907e+00 + -2.192920550384463e+00 + -2.192794362988794e+00 + -2.192666105000000e+00 + -2.192535825071375e+00 + -2.192403570783236e+00 + -2.192269389306454e+00 + -2.192133327558461e+00 + -2.191995432000000e+00 + -2.191855748732582e+00 + -2.191714323538803e+00 + -2.191571201647935e+00 + -2.191426427571225e+00 + -2.191280046000000e+00 + -2.191132101498374e+00 + -2.190982637495000e+00 + -2.190831697104933e+00 + -2.190679323369808e+00 + -2.190525559000000e+00 + -2.190370446239990e+00 + -2.190214026313205e+00 + -2.190056340263544e+00 + -2.189897429222788e+00 + -2.189737334000000e+00 + -2.189576094894156e+00 + -2.189413751026334e+00 + -2.189250341662785e+00 + -2.189085906605225e+00 + -2.188920484000000e+00 + -2.188754111167896e+00 + -2.188586826517446e+00 + -2.188418667831656e+00 + -2.188249671505532e+00 + -2.188079874000000e+00 + -2.187909311655257e+00 + -2.187738019850499e+00 + -2.187566033827133e+00 + -2.187393388939138e+00 + -2.187220120000000e+00 + -2.187046261198758e+00 + -2.186871845656608e+00 + -2.186696906557450e+00 + -2.186521477499284e+00 + -2.186345591000000e+00 + -2.186169278929348e+00 + -2.185992573469870e+00 + -2.185815507881449e+00 + -2.185638116930091e+00 + -2.185460435000000e+00 + -2.185282496723147e+00 + -2.185104339046128e+00 + -2.184925999471230e+00 + -2.184747515559985e+00 + -2.184568926000000e+00 + -2.184390270419004e+00 + -2.184211589307456e+00 + -2.184032923638580e+00 + -2.183854314918697e+00 + -2.183675806000000e+00 + -2.183497440664645e+00 + -2.183319263062145e+00 + -2.183141318226586e+00 + -2.182963652427783e+00 + -2.182786312000000e+00 + -2.182609343803448e+00 + -2.182432796909005e+00 + -2.182256720850984e+00 + -2.182081165100584e+00 + -2.181906180000000e+00 + -2.181731816772078e+00 + -2.181558127901617e+00 + -2.181385166690271e+00 + -2.181212987245827e+00 + -2.181041644000000e+00 + -2.180871191888493e+00 + -2.180701687214938e+00 + -2.180533187286951e+00 + -2.180365750436408e+00 + -2.180199435000000e+00 + -2.180034299706266e+00 + -2.179870405073628e+00 + -2.179707812476292e+00 + -2.179546583956951e+00 + -2.179386782000000e+00 + -2.179228469569652e+00 + -2.179071710572415e+00 + -2.178916570209873e+00 + -2.178763115274171e+00 + -2.178611412000000e+00 + -2.178461526719817e+00 + -2.178313527960817e+00 + -2.178167485170301e+00 + -2.178023468394170e+00 + -2.177881548000000e+00 + -2.177741794911888e+00 + -2.177604281585152e+00 + -2.177469081134519e+00 + -2.177336267165003e+00 + -2.177205914000000e+00 + -2.177078096781969e+00 + -2.176952892179310e+00 + -2.176830377266735e+00 + -2.176710629289710e+00 + -2.176593727000000e+00 + -2.176479750089725e+00 + -2.176368778170715e+00 + -2.176260892035270e+00 + -2.176156174290115e+00 + -2.176054707000000e+00 + -2.175956572480315e+00 + -2.175861855847520e+00 + -2.175770642395214e+00 + -2.175683016800304e+00 + -2.175599066000000e+00 + -2.175518878125867e+00 + -2.175442540126260e+00 + -2.175370140365612e+00 + -2.175301769822078e+00 + -2.175237519000000e+00 + -2.175177478422601e+00 + -2.175121740498959e+00 + -2.175070398200953e+00 + -2.175023544771637e+00 + -2.174981275000000e+00 + -2.174943684570890e+00 + -2.174910868831887e+00 + -2.174882924320826e+00 + -2.174859949548785e+00 + -2.174842043000000e+00 + -2.174829303331104e+00 + -2.174821830410927e+00 + -2.174819725228089e+00 + -2.174823090027552e+00 + -2.174832027000000e+00 + -2.174846638699704e+00 + -2.174867029559900e+00 + -2.174893304738549e+00 + -2.174925569834485e+00 + -2.174963931000000e+00 + -2.175008495084293e+00 + -2.175059370394289e+00 + -2.175116665887380e+00 + -2.175180491027200e+00 + -2.175250956000000e+00 + -2.175328171805043e+00 + -2.175412250937077e+00 + -2.175503306357684e+00 + -2.175601451271103e+00 + -2.175706800000000e+00 + -2.175819467765500e+00 + -2.175939570549688e+00 + -2.176067225041086e+00 + -2.176202548787411e+00 + -2.176345660000000e+00 + -2.176496677644949e+00 + -2.176655722183164e+00 + -2.176822914601843e+00 + -2.176998376191533e+00 + -2.177182229000000e+00 + -2.177374595921169e+00 + -2.177575601341799e+00 + -2.177785370087074e+00 + -2.178004027196875e+00 + -2.178231699000000e+00 + -2.178468512862275e+00 + -2.178714597011325e+00 + -2.178970080062299e+00 + -2.179235091002944e+00 + -2.179509760000000e+00 + -2.179794218272507e+00 + -2.180088598277346e+00 + -2.180393032665419e+00 + -2.180707654074028e+00 + -2.181032597000000e+00 + -2.181367997183408e+00 + -2.181713990526695e+00 + -2.182070713375897e+00 + -2.182438302803596e+00 + -2.182816897000000e+00 + -2.183206635150288e+00 + -2.183607657686531e+00 + -2.184020105275964e+00 + -2.184444118610974e+00 + -2.184879840000000e+00 + -2.185327412889597e+00 + -2.185786981109685e+00 + -2.186258689137973e+00 + -2.186742682377725e+00 + -2.187239107000000e+00 + -2.187748109862624e+00 + -2.188269838801850e+00 + -2.188804442677439e+00 + -2.189352071523296e+00 + -2.189912875000000e+00 + -2.190487003093955e+00 + -2.191074608322116e+00 + -2.191675843787203e+00 + -2.192290862610885e+00 + -2.192919819000000e+00 + -2.193562867915730e+00 + -2.194220164552147e+00 + -2.194891865404003e+00 + -2.195578128862665e+00 + -2.196279113000000e+00 + -2.196994976008069e+00 + -2.197725877814248e+00 + -2.198471979076637e+00 + -2.199233441010543e+00 + -2.200010426000000e+00 + -2.200803097224683e+00 + -2.201611618154960e+00 + -2.202436152922896e+00 + -2.203276866629103e+00 + -2.204133924999999e+00 + -2.205007494076377e+00 + -2.205897739759803e+00 + -2.206804828380775e+00 + -2.207728927012060e+00 + -2.208670203000000e+00 + -2.209628824019662e+00 + -2.210604958519273e+00 + -2.211598775212799e+00 + -2.212610442959744e+00 + -2.213640131000000e+00 + -2.214688008997179e+00 + -2.215754247358006e+00 + -2.216839016713686e+00 + -2.217942487809252e+00 + -2.219064832000000e+00 + -2.220206221175054e+00 + -2.221366827800435e+00 + -2.222546824259503e+00 + -2.223746382727115e+00 + -2.224965677000000e+00 + -2.226204881636015e+00 + -2.227464170011377e+00 + -2.228743716360184e+00 + -2.230043696636770e+00 + -2.231364286000000e+00 + -2.232705659360148e+00 + -2.234067993079961e+00 + -2.235451464138931e+00 + -2.236856249856844e+00 + -2.238282527000000e+00 + -2.239730472524265e+00 + -2.241200265638654e+00 + -2.242692085287406e+00 + -2.244206109271373e+00 + -2.245742517000000e+00 + -2.247301488882056e+00 + -2.248883204910052e+00 + -2.250487845315945e+00 + -2.252115590911750e+00 + -2.253766623000000e+00 + -2.255441123360801e+00 + -2.257139274542631e+00 + -2.258861259219423e+00 + -2.260607260005651e+00 + -2.262377460000000e+00 + -2.264172042724291e+00 + -2.265991192137124e+00 + -2.267835092970031e+00 + -2.269703930922391e+00 + -2.271597891000000e+00 + -2.273517158096056e+00 + -2.275461918662951e+00 + -2.277432359442962e+00 + -2.279428667085979e+00 + -2.281451029000000e+00 + -2.283499633104788e+00 + -2.285574667389452e+00 + -2.287676320195930e+00 + -2.289804780398682e+00 + -2.291960237000000e+00 + -2.294142879454985e+00 + -2.296352898805551e+00 + -2.298590485768695e+00 + -2.300855830078550e+00 + -2.303149122999999e+00 + -2.305470556795997e+00 + -2.307820323545887e+00 + -2.310198615647936e+00 + -2.312605626084681e+00 + -2.315041548000000e+00 + -2.317506574745174e+00 + -2.320000900224320e+00 + -2.322524719122656e+00 + -2.325078227061991e+00 + -2.327661619000000e+00 + -2.330275089774933e+00 + -2.332918835677479e+00 + -2.335593053485966e+00 + -2.338297940187764e+00 + -2.341033693000000e+00 + -2.343800509406319e+00 + -2.346598587410773e+00 + -2.349428125303093e+00 + -2.352289321686241e+00 + -2.355182376000000e+00 + -2.358107488272472e+00 + -2.361064858786305e+00 + -2.364054687769198e+00 + -2.367077175375671e+00 + -2.370132523000000e+00 + -2.373220932737141e+00 + -2.376342606269360e+00 + -2.379497745810629e+00 + -2.382686554578887e+00 + -2.385909236000000e+00 + -2.389165993580208e+00 + -2.392457030846979e+00 + -2.395782552198058e+00 + -2.399142763298191e+00 + -2.402537869000000e+00 + -2.405968074028050e+00 + -2.409433584975734e+00 + -2.412934608682329e+00 + -2.416471351683178e+00 + -2.420044020999999e+00 + -2.423652824137149e+00 + -2.427297969206864e+00 + -2.430979664728804e+00 + -2.434698119632543e+00 + -2.438453543000000e+00 + -2.442246144168148e+00 + -2.446076133195298e+00 + -2.449943720571852e+00 + -2.453849117184546e+00 + -2.457792534000000e+00 + -2.461774182279110e+00 + -2.465794274341647e+00 + -2.469853022790889e+00 + -2.473950640299041e+00 + -2.478087340000000e+00 + -2.482263335430129e+00 + -2.486478840559030e+00 + -2.490734069661931e+00 + -2.495029237377275e+00 + -2.499364559000000e+00 + -2.503740250274207e+00 + -2.508156527124766e+00 + -2.512613605692700e+00 + -2.517111702474631e+00 + -2.521651035000000e+00 + -2.526231821279088e+00 + -2.530854278665131e+00 + -2.535518625205626e+00 + -2.540225080261870e+00 + -2.544973863000000e+00 + -2.549765192573217e+00 + -2.554599288888442e+00 + -2.559476372494764e+00 + -2.564396664604125e+00 + -2.569360386000000e+00 + -2.574367757513646e+00 + -2.579419001423863e+00 + -2.584514340338642e+00 + -2.589653996851589e+00 + -2.594838193999999e+00 + -2.600067155253186e+00 + -2.605341104662645e+00 + -2.610660266783872e+00 + -2.616024866689215e+00 + -2.621435129000000e+00 + -2.626891278432673e+00 + -2.632393541366548e+00 + -2.637942144571998e+00 + -2.643537314797249e+00 + -2.649179279000000e+00 + -2.654868264471787e+00 + -2.660604499292826e+00 + -2.666388211776204e+00 + -2.672219630341834e+00 + -2.678098984000000e+00 + -2.684026502306392e+00 + -2.690002415494505e+00 + -2.696026954017429e+00 + -2.702100348331385e+00 + -2.708222828000000e+00 + -2.714394620651795e+00 + -2.720615948464916e+00 + -2.726887030965477e+00 + -2.733208085290139e+00 + -2.739579324000000e+00 + -2.746000955816228e+00 + -2.752473185385865e+00 + -2.758996214641690e+00 + -2.765570242469367e+00 + -2.772195463000000e+00 + -2.778872066776275e+00 + -2.785600241574056e+00 + -2.792380171842594e+00 + -2.799212037606767e+00 + -2.806096015000000e+00 + -2.813032277129447e+00 + -2.820020994035244e+00 + -2.827062331911353e+00 + -2.834156451970738e+00 + -2.841303512999999e+00 + -2.848503671252426e+00 + -2.855757077985244e+00 + -2.863063881095023e+00 + -2.870424224890850e+00 + -2.877838249999999e+00 + -2.885306093928394e+00 + -2.892827890388094e+00 + -2.900403769651381e+00 + -2.908033857857018e+00 + -2.915718277999999e+00 + -2.923457150039019e+00 + -2.931250588977881e+00 + -2.939098706889091e+00 + -2.947001612872150e+00 + -2.954959411999998e+00 + -2.962972205810575e+00 + -2.971040091434060e+00 + -2.979163163083816e+00 + -2.987341511831155e+00 + -2.995575224999998e+00 + -3.003864386499012e+00 + -3.012209075546996e+00 + -3.020609368336417e+00 + -3.029065337835770e+00 + -3.037577052999999e+00 + -3.046144579520789e+00 + -3.054767979666142e+00 + -3.063447312238444e+00 + -3.072182631692820e+00 + -3.080973988999999e+00 + -3.089821432099915e+00 + -3.098725004829577e+00 + -3.107684748048404e+00 + -3.116700699185534e+00 + -3.125772890999999e+00 + -3.134901352715559e+00 + -3.144086110699870e+00 + -3.153327188100508e+00 + -3.162624603843408e+00 + -3.171978372999998e+00 + -3.181388507546933e+00 + -3.190855016073102e+00 + -3.200377903469057e+00 + -3.209957169965227e+00 + -3.219592812999998e+00 + -3.229284827363896e+00 + -3.239033203402719e+00 + -3.248837927724427e+00 + -3.258698982652799e+00 + -3.268616347999998e+00 + -3.278590000914418e+00 + -3.288619913401403e+00 + -3.298706054004673e+00 + -3.308848387625167e+00 + -3.319046875999998e+00 + -3.329301477934322e+00 + -3.339612147844228e+00 + -3.349978836592516e+00 + -3.360401490990458e+00 + -3.370880054999998e+00 + -3.381414469596773e+00 + -3.392004670266620e+00 + -3.402650589976440e+00 + -3.413352159446950e+00 + -3.424109303999998e+00 + -3.434921945057392e+00 + -3.445790001867386e+00 + -3.456713390096515e+00 + -3.467692020464062e+00 + -3.478725800999998e+00 + -3.489814636890736e+00 + -3.500958427789171e+00 + -3.512157070764700e+00 + -3.523410460589800e+00 + -3.534718486999998e+00 + -3.546081035880271e+00 + -3.557497990199610e+00 + -3.568969229634993e+00 + -3.580494629586285e+00 + -3.592074061999998e+00 + -3.603707395759104e+00 + -3.615394495446970e+00 + -3.627135222559569e+00 + -3.638929435115233e+00 + -3.650776987000000e+00 + -3.662677728742245e+00 + -3.674631507325805e+00 + -3.686638166579447e+00 + -3.698697546469576e+00 + -3.710809483000000e+00 + -3.722973808828209e+00 + -3.735190352595157e+00 + -3.747458940125227e+00 + -3.759779394010754e+00 + -3.772151532000000e+00 + -3.784575168342916e+00 + -3.797050115062026e+00 + -3.809576180292756e+00 + -3.822153166803174e+00 + -3.834780875000000e+00 + -3.847459102820189e+00 + -3.860187643203489e+00 + -3.872966285667494e+00 + -3.885794816080159e+00 + -3.898673017000000e+00 + -3.911600667911320e+00 + -3.924577543724543e+00 + -3.937603416269590e+00 + -3.950678053996523e+00 + -3.963801221000000e+00 + -3.976972678103186e+00 + -3.990192183512261e+00 + -4.003459491521890e+00 + -4.016774351164608e+00 + -4.030136509000000e+00 + -4.043545709147031e+00 + -4.057001691149858e+00 + -4.070504190840202e+00 + -4.084052939835804e+00 + -4.097647667000000e+00 + -4.111288098419088e+00 + -4.124973955231095e+00 + -4.138704955371648e+00 + -4.152480813397504e+00 + -4.166301240000000e+00 + -4.180165942572286e+00 + -4.194074624537170e+00 + -4.208026986370140e+00 + -4.222022725101974e+00 + -4.236061533000000e+00 + -4.250143098846027e+00 + -4.264267108996074e+00 + -4.278433246261039e+00 + -4.292641188627767e+00 + -4.306890611000000e+00 + -4.321181185386233e+00 + -4.335512579090955e+00 + -4.349884456391911e+00 + -4.364296478350024e+00 + -4.378748302000000e+00 + -4.393239580901771e+00 + -4.407769964394226e+00 + -4.422339098999587e+00 + -4.436946628138934e+00 + -4.451592191000000e+00 + -4.466275423153566e+00 + -4.480995955945297e+00 + -4.495753418053649e+00 + -4.510547435209278e+00 + -4.525377628000000e+00 + -4.540243613376725e+00 + -4.555145006346341e+00 + -4.570081418154680e+00 + -4.585052454714511e+00 + -4.600057719000000e+00 + -4.615096811360685e+00 + -4.630169328028963e+00 + -4.645274861878902e+00 + -4.660413001844071e+00 + -4.675583333000000e+00 + -4.690785437259527e+00 + -4.706018892955582e+00 + -4.721283275134317e+00 + -4.736578154793736e+00 + -4.751903099000000e+00 + -4.767257671719769e+00 + -4.782641433752779e+00 + -4.798053942304498e+00 + -4.813494749953581e+00 + -4.828963406000000e+00 + -4.844459456896403e+00 + -4.859982445123970e+00 + -4.875531909767719e+00 + -4.891107385884028e+00 + -4.906708405000000e+00 + -4.922334495555203e+00 + -4.937985181840751e+00 + -4.953659984814029e+00 + -4.969358421588884e+00 + -4.985080006000000e+00 + -5.000824248840914e+00 + -5.016590656340991e+00 + -5.032378731598668e+00 + -5.048187974277996e+00 + -5.064017880000000e+00 + -5.079867940973151e+00 + -5.095737645459726e+00 + -5.111626480823102e+00 + -5.127533934923204e+00 + -5.143459499999997e+00 + -5.159402672483111e+00 + -5.175362954369220e+00 + -5.191339851303958e+00 + -5.207332872891304e+00 + -5.223341533999998e+00 + -5.239365353688981e+00 + -5.255403855076862e+00 + -5.271456565155025e+00 + -5.287523015792912e+00 + -5.303602743999997e+00 + -5.319695290809813e+00 + -5.335800201177900e+00 + -5.351917023850607e+00 + -5.368045312413205e+00 + -5.384184625999997e+00 + -5.400334527792659e+00 + -5.416494583936292e+00 + -5.432664365069262e+00 + -5.448843447960337e+00 + -5.465031412999998e+00 + -5.481227843963791e+00 + -5.497432330198948e+00 + -5.513644465003656e+00 + -5.529863846001168e+00 + -5.546090074999998e+00 + -5.562322757794160e+00 + -5.578561506278419e+00 + -5.594805935740466e+00 + -5.611055664858841e+00 + -5.627310317999997e+00 + -5.643569523867812e+00 + -5.659832914603254e+00 + -5.676100126691991e+00 + -5.692370802379017e+00 + -5.708644587999997e+00 + -5.724921133351554e+00 + -5.741200092816319e+00 + -5.757481124931912e+00 + -5.773763893288205e+00 + -5.790048065999996e+00 + -5.806333315035348e+00 + -5.822619317227983e+00 + -5.838905753168464e+00 + -5.855192307810226e+00 + -5.871478670999998e+00 + -5.887764536642293e+00 + -5.904049603224381e+00 + -5.920333573291820e+00 + -5.936616154283948e+00 + -5.952897057999997e+00 + -5.969175999997380e+00 + -5.985452700712029e+00 + -6.001726884408804e+00 + -6.017998279848357e+00 + -6.034266620999998e+00 + -6.050531645917840e+00 + -6.066793096565948e+00 + -6.083050719154321e+00 + -6.099304265265417e+00 + -6.115553489999997e+00 + -6.131798152082848e+00 + -6.148038016850530e+00 + -6.164272852974367e+00 + -6.180502432221914e+00 + -6.196726531999996e+00 + -6.212944934149927e+00 + -6.229157424398349e+00 + -6.245363792906498e+00 + -6.261563835474968e+00 + -6.277757350999996e+00 + -6.293944141712862e+00 + -6.310124016459128e+00 + -6.326296787703612e+00 + -6.342462271423720e+00 + -6.358620288999997e+00 + -6.374770666045148e+00 + -6.390913231950829e+00 + -6.407047820441565e+00 + -6.423174270811367e+00 + -6.439292425999997e+00 + -6.455402132459349e+00 + -6.471503242529590e+00 + -6.487595612302881e+00 + -6.503679101824962e+00 + -6.519753575999998e+00 + -6.535818903908587e+00 + -6.551874959678351e+00 + -6.567921621040533e+00 + -6.583958769810407e+00 + -6.599986292999997e+00 + -6.616004081814032e+00 + -6.632012031732002e+00 + -6.648010042213294e+00 + -6.663998017633650e+00 + -6.679975866999997e+00 + -6.695943503153600e+00 + -6.711900843425355e+00 + -6.727847809100131e+00 + -6.743784326279565e+00 + -6.759710325999998e+00 + -6.775625743222601e+00 + -6.791530516957345e+00 + -6.807424590371784e+00 + -6.823307911868753e+00 + -6.839180434000000e+00 + -6.855042113095231e+00 + -6.870892911056689e+00 + -6.886732793343159e+00 + -6.902561729209182e+00 + -6.918379693000000e+00 + -6.934186663377454e+00 + -6.949982623974822e+00 + -6.965767562024019e+00 + -6.981541468861679e+00 + -6.997304341000000e+00 + -7.013056179149240e+00 + -7.028796988372566e+00 + -7.044526777567921e+00 + -7.060245560311449e+00 + -7.075953355000000e+00 + -7.091650184045992e+00 + -7.107336074531737e+00 + -7.123011057484204e+00 + -7.138675168614964e+00 + -7.154328448000000e+00 + -7.169970939523060e+00 + -7.185602692089082e+00 + -7.201223758621499e+00 + -7.216834196750369e+00 + -7.232434069000000e+00 + -7.248023441650831e+00 + -7.263602384451917e+00 + -7.279170972021925e+00 + -7.294729285389790e+00 + -7.310277408000000e+00 + -7.325815426345584e+00 + -7.341343434315181e+00 + -7.356861529294433e+00 + -7.372369811668458e+00 + -7.387868387000000e+00 + -7.403357365322682e+00 + -7.418836861854650e+00 + -7.434306995371617e+00 + -7.449767888578398e+00 + -7.465219669000000e+00 + -7.480662468362842e+00 + -7.496096423635060e+00 + -7.511521675509539e+00 + -7.526938368822738e+00 + -7.542346653000000e+00 + -7.557746681513402e+00 + -7.573138613106206e+00 + -7.588522610348394e+00 + -7.603898840111169e+00 + -7.619267474000000e+00 + -7.634628687556104e+00 + -7.649982660818226e+00 + -7.665329578157865e+00 + -7.680669629212444e+00 + -7.696003007000000e+00 + -7.711329908041110e+00 + -7.726650535322031e+00 + -7.741965095546557e+00 + -7.757273799081691e+00 + -7.772576861000000e+00 + -7.787874500482072e+00 + -7.803166941820082e+00 + -7.818454413357075e+00 + -7.833737148083599e+00 + -7.849015383000000e+00 + -7.864289358883056e+00 + -7.879559322305754e+00 + -7.894825523493435e+00 + -7.910088216491122e+00 + -7.925347660000000e+00 + -7.940604117030949e+00 + -7.955857856656654e+00 + -7.971109151088187e+00 + -7.986358275553978e+00 + -8.001605510999999e+00 + -8.016851143003514e+00 + -8.032095461580266e+00 + -8.047338760488806e+00 + -8.062581337981985e+00 + -8.077823497000001e+00 + -8.093065544394179e+00 + -8.108307791577566e+00 + -8.123550554205780e+00 + -8.138794153086785e+00 + -8.154038912999997e+00 + -8.169285162395173e+00 + -8.184533235306290e+00 + -8.199783469410583e+00 + -8.215036206329255e+00 + -8.230291792999997e+00 + -8.245550580528674e+00 + -8.260812923863309e+00 + -8.276079182235739e+00 + -8.291349720375887e+00 + -8.306624906999998e+00 + -8.321905114401627e+00 + -8.337190720129563e+00 + -8.352482105562956e+00 + -8.367779656388556e+00 + -8.383083762999997e+00 + -8.398394819954635e+00 + -8.413713227271362e+00 + -8.429039388338369e+00 + -8.444373710123081e+00 + -8.459716604999997e+00 + -8.475068489773328e+00 + -8.490429785807564e+00 + -8.505800918193746e+00 + -8.521182316459129e+00 + -8.536574414999997e+00 + -8.551977652264261e+00 + -8.567392471335332e+00 + -8.582819319266729e+00 + -8.598258647834163e+00 + -8.613710912999998e+00 + -8.629176574613023e+00 + -8.644656098315155e+00 + -8.660149953296175e+00 + -8.675658612460374e+00 + -8.691182553999997e+00 + -8.706722260346437e+00 + -8.722278218076596e+00 + -8.737850917931995e+00 + -8.753440855866357e+00 + -8.769048531999996e+00 + -8.784674450012169e+00 + -8.800319118245726e+00 + -8.815983049456063e+00 + -8.831666761752983e+00 + -8.847370776999997e+00 + -8.863095620572640e+00 + -8.878841823409489e+00 + -8.894609920288579e+00 + -8.910400450202564e+00 + -8.926213956999996e+00 + -8.942050988642462e+00 + -8.957912097948702e+00 + -8.973797841249739e+00 + -8.989708778929735e+00 + -9.005645476999996e+00 + -9.021608505891232e+00 + -9.037598440089864e+00 + -9.053615857732957e+00 + -9.069661341483132e+00 + -9.085735478999997e+00 + -9.101838862125330e+00 + -9.117972087538210e+00 + -9.134135755396374e+00 + -9.150330469883286e+00 + -9.166556840999997e+00 + -9.182815483079517e+00 + -9.199107013675079e+00 + -9.215432054583626e+00 + -9.231791233265957e+00 + -9.248185180999997e+00 + -9.264614532683632e+00 + -9.281079929109534e+00 + -9.297582014702897e+00 + -9.314121437654787e+00 + -9.330698850999996e+00 + -9.347314912003528e+00 + -9.363970283188971e+00 + -9.380665630745685e+00 + -9.397401624940878e+00 + -9.414178940999998e+00 + -9.430998258244742e+00 + -9.447860260503859e+00 + -9.464765635761319e+00 + -9.481715077019253e+00 + -9.498709280999996e+00 + -9.515748948037771e+00 + -9.532834784442173e+00 + -9.549967500513571e+00 + -9.567147810785697e+00 + -9.584376433999996e+00 + -9.601654092679016e+00 + -9.618981514566920e+00 + -9.636359431588877e+00 + -9.653788580476306e+00 + -9.671269701999998e+00 + -9.688803540653204e+00 + -9.706390846469759e+00 + -9.724032373152683e+00 + -9.741728878390186e+00 + -9.759481124999997e+00 + -9.777289880050315e+00 + -9.795155915261526e+00 + -9.813080006095444e+00 + -9.831062932433847e+00 + -9.849105478999997e+00 + -9.867208434586416e+00 + -9.885372592754736e+00 + -9.903598750780114e+00 + -9.921887710289466e+00 + -9.940240277999996e+00 + -9.958657264807959e+00 + -9.977139486156000e+00 + -9.995687760994512e+00 + -1.001430291248964e+01 + -1.003298577000000e+01 + -1.005173716741557e+01 + -1.007055794170109e+01 + -1.008944893313717e+01 + -1.010841098632109e+01 + -1.012744495000000e+01 + -1.014655167843811e+01 + -1.016573203809090e+01 + -1.018498689280856e+01 + -1.020431709913334e+01 + -1.022372353000000e+01 + -1.024320706932260e+01 + -1.026276860085199e+01 + -1.028240900753776e+01 + -1.030212917226508e+01 + -1.032192999000000e+01 + -1.034181236270672e+01 + -1.036177718920571e+01 + -1.038182537682789e+01 + -1.040195784652257e+01 + -1.042217551000000e+01 + -1.044247927800797e+01 + -1.046287008429113e+01 + -1.048334886197221e+01 + -1.050391653528098e+01 + -1.052457404000000e+01 + -1.054532232135862e+01 + -1.056616233045517e+01 + -1.058709501821704e+01 + -1.060812133414642e+01 + -1.062924224000000e+01 + -1.065045870478386e+01 + -1.067177169452023e+01 + -1.069318217826154e+01 + -1.071469113174534e+01 + -1.073629954000000e+01 + -1.075800839260036e+01 + -1.077981867489276e+01 + -1.080173138018267e+01 + -1.082374751517595e+01 + -1.084586808000000e+01 + -1.086809407471729e+01 + -1.089042651905600e+01 + -1.091286643223940e+01 + -1.093541482646511e+01 + -1.095807273000000e+01 + -1.098084118002027e+01 + -1.100372120627546e+01 + -1.102671384288809e+01 + -1.104982013415814e+01 + -1.107304113000000e+01 + -1.109637788366843e+01 + -1.111983144958023e+01 + -1.114340288661973e+01 + -1.116709326043168e+01 + -1.119090364000000e+01 + -1.121483509746141e+01 + -1.123888871051257e+01 + -1.126306556352589e+01 + -1.128736674843474e+01 + -1.131179335000000e+01 + -1.133634645465832e+01 + -1.136102717560643e+01 + -1.138583662099362e+01 + -1.141077588304154e+01 + -1.143584608000000e+01 + -1.146104834278586e+01 + -1.148638378227322e+01 + -1.151185351768562e+01 + -1.153745868860526e+01 + -1.156320043000000e+01 + -1.158907987623694e+01 + -1.161509817570602e+01 + -1.164125647703402e+01 + -1.166755592508495e+01 + -1.169399768000000e+01 + -1.172058291041322e+01 + -1.174731277861368e+01 + -1.177418844974534e+01 + -1.180121109657743e+01 + -1.182838189999999e+01 + -1.185570204579555e+01 + -1.188317272006268e+01 + -1.191079511332836e+01 + -1.193857042312863e+01 + -1.196649984999999e+01 + -1.199458459773775e+01 + -1.202282587700695e+01 + -1.205122490269986e+01 + -1.207978289369385e+01 + -1.210850107000000e+01 + -1.213738065440104e+01 + -1.216642287877588e+01 + -1.219562898067898e+01 + -1.222500020303083e+01 + -1.225453779000000e+01 + -1.228424298812801e+01 + -1.231411705144751e+01 + -1.234416123799292e+01 + -1.237437680934280e+01 + -1.240476502999999e+01 + -1.243532716862228e+01 + -1.246606450371358e+01 + -1.249697831672881e+01 + -1.252806989018327e+01 + -1.255934050999999e+01 + -1.259079146663310e+01 + -1.262242406008652e+01 + -1.265423959346900e+01 + -1.268623937120698e+01 + -1.271842469999999e+01 + -1.275079689157634e+01 + -1.278335727210730e+01 + -1.281610716656313e+01 + -1.284904789393346e+01 + -1.288218078999999e+01 + -1.291550719883721e+01 + -1.294902845305343e+01 + -1.298274589252790e+01 + -1.301666087289315e+01 + -1.305077474999999e+01 + -1.308508888000826e+01 + -1.311960462335401e+01 + -1.315432334734565e+01 + -1.318924642810263e+01 + -1.322437523999999e+01 + -1.325971115825294e+01 + -1.329525556797775e+01 + -1.333100986045822e+01 + -1.336697543256989e+01 + -1.340315367999999e+01 + -1.343954599979837e+01 + -1.347615379884262e+01 + -1.351297848978655e+01 + -1.355002149050285e+01 + -1.358728421999999e+01 + -1.362476809975143e+01 + -1.366247455932581e+01 + -1.370040503112116e+01 + -1.373856094968169e+01 + -1.377694375999999e+01 + -1.381555491216690e+01 + -1.385439585021465e+01 + -1.389346802391279e+01 + -1.393277289476898e+01 + -1.397231192999999e+01 + -1.401208659972945e+01 + -1.405209837359219e+01 + -1.409234872413346e+01 + -1.413283912961124e+01 + -1.417357107999999e+01 + -1.421454607102127e+01 + -1.425576559243092e+01 + -1.429723113890712e+01 + -1.433894421536596e+01 + -1.438090632999999e+01 + -1.442311899332400e+01 + -1.446558371903957e+01 + -1.450830202765583e+01 + -1.455127544879836e+01 + -1.459450550999999e+01 + -1.463799373973040e+01 + -1.468174167767078e+01 + -1.472575086722947e+01 + -1.477002285383887e+01 + -1.481455918999999e+01 + -1.485936143285468e+01 + -1.490443114031971e+01 + -1.494976987417127e+01 + -1.499537920245961e+01 + -1.504126069999999e+01 + -1.508741594534576e+01 + -1.513384651602358e+01 + -1.518055399754435e+01 + -1.522753998778076e+01 + -1.527480607999999e+01 + -1.532235386668537e+01 + -1.537018495189360e+01 + -1.541830094448208e+01 + -1.546670345694024e+01 + -1.551539410999999e+01 + -1.556437452805486e+01 + -1.561364632974880e+01 + -1.566321114034704e+01 + -1.571307059764629e+01 + -1.576322633999999e+01 + -1.581368000886133e+01 + -1.586443325932826e+01 + -1.591548774371123e+01 + -1.596684510633198e+01 + -1.601850700999999e+01 + -1.607047512763592e+01 + -1.612275112310131e+01 + -1.617533666634843e+01 + -1.622823344044972e+01 + -1.628144312999999e+01 + -1.633496741991010e+01 + -1.638880799548294e+01 + -1.644296655089035e+01 + -1.649744479372194e+01 + -1.655224442999999e+01 + -1.660736716535794e+01 + -1.666281471098534e+01 + -1.671858878335293e+01 + -1.677469110504862e+01 + -1.683112339999999e+01 + -1.688788739643611e+01 + -1.694498483759857e+01 + -1.700241746523662e+01 + -1.706018701398879e+01 + -1.711829522999999e+01 + -1.717674386844329e+01 + -1.723553468924849e+01 + -1.729466945458232e+01 + -1.735414992865347e+01 + -1.741397788000000e+01 + -1.747415508099178e+01 + -1.753468330867943e+01 + -1.759556434768274e+01 + -1.765679999203036e+01 + -1.771839203000000e+01 + -1.778034225038387e+01 + -1.784265246094084e+01 + -1.790532446959567e+01 + -1.796836007816754e+01 + -1.803176110000000e+01 + -1.809552935720682e+01 + -1.815966667575656e+01 + -1.822417488078262e+01 + -1.828905579597735e+01 + -1.835431126000000e+01 + -1.841994311958100e+01 + -1.848595321475806e+01 + -1.855234338946741e+01 + -1.861911549709020e+01 + -1.868627140000000e+01 + -1.875381296458075e+01 + -1.882174205218422e+01 + -1.889006052915166e+01 + -1.895877027181235e+01 + -1.902787316000000e+01 + -1.909737107797965e+01 + -1.916726592078253e+01 + -1.923755957952593e+01 + -1.930825393714747e+01 + -1.937935090000000e+01 + -1.945085238647674e+01 + -1.952276030080435e+01 + -1.959507655061933e+01 + -1.966780305499929e+01 + -1.974094174000000e+01 + -1.981449453618971e+01 + -1.988846337667131e+01 + -1.996285019538828e+01 + -2.003765692760933e+01 + -2.011288552000000e+01 + -2.018853792621815e+01 + -2.026461609876727e+01 + -2.034112199510926e+01 + -2.041805758075517e+01 + -2.049542482000000e+01 + -2.057322568006621e+01 + -2.065146214471047e+01 + -2.073013619484967e+01 + -2.080924980240138e+01 + -2.088880495999999e+01 + -2.096880367169853e+01 + -2.104924793164823e+01 + -2.113013973534757e+01 + -2.121148108557274e+01 + -2.129327399999999e+01 + -2.137552050224973e+01 + -2.145822260294134e+01 + -2.154138232011573e+01 + -2.162500168821614e+01 + -2.170908273999999e+01 + -2.179362750931509e+01 + -2.187863804236205e+01 + -2.196411638687395e+01 + -2.205006458870765e+01 + -2.213648469999998e+01 + -2.222337877888525e+01 + -2.231074889087196e+01 + -2.239859710699802e+01 + -2.248692550346576e+01 + -2.257573614999999e+01 + -2.266503111825121e+01 + -2.275481250533621e+01 + -2.284508240538831e+01 + -2.293584289979252e+01 + -2.302709608999998e+01 + -2.311884408797131e+01 + -2.321108899308483e+01 + -2.330383291176923e+01 + -2.339707796636268e+01 + -2.349082627999998e+01 + -2.358507997580010e+01 + -2.367984117841246e+01 + -2.377511201965127e+01 + -2.387089464198777e+01 + -2.396719118999998e+01 + -2.406400380890314e+01 + -2.416133464354705e+01 + -2.425918584868402e+01 + -2.435755959379285e+01 + -2.445645803999998e+01 + -2.455588334675619e+01 + -2.465583769169985e+01 + -2.475632325621871e+01 + -2.485734222078360e+01 + -2.495889676999998e+01 + -2.506098909313465e+01 + -2.516362138717989e+01 + -2.526679585042222e+01 + -2.537051468121954e+01 + -2.547478008999998e+01 + -2.557959429416147e+01 + -2.568495950782481e+01 + -2.579087794894506e+01 + -2.589735184307986e+01 + -2.600438342000000e+01 + -2.611197491414786e+01 + -2.622012856937007e+01 + -2.632884662779481e+01 + -2.643813132670684e+01 + -2.654798492000000e+01 + -2.665840967182968e+01 + -2.676940784333127e+01 + -2.688098169572292e+01 + -2.699313349264397e+01 + -2.710586551000000e+01 + -2.721918002998715e+01 + -2.733307932892397e+01 + -2.744756569229334e+01 + -2.756264142140602e+01 + -2.767830881000000e+01 + -2.779457014947893e+01 + -2.791142774510221e+01 + -2.802888390934165e+01 + -2.814694096000261e+01 + -2.826560121000000e+01 + -2.838486697334714e+01 + -2.850474058224100e+01 + -2.862522436986088e+01 + -2.874632066501767e+01 + -2.886803181000000e+01 + -2.899036015446983e+01 + -2.911330804180568e+01 + -2.923687781925054e+01 + -2.936107184331833e+01 + -2.948589248000000e+01 + -2.961134209910011e+01 + -2.973742306338333e+01 + -2.986413774439124e+01 + -2.999148852946843e+01 + -3.011947780000000e+01 + -3.024810793640462e+01 + -3.037738133418102e+01 + -3.050730039248281e+01 + -3.063786751048302e+01 + -3.076908508999995e+01 + -3.090095553801825e+01 + -3.103348127528379e+01 + -3.116666472242296e+01 + -3.130050829541340e+01 + -3.143501442000000e+01 + -3.157018552904646e+01 + -3.170602405762165e+01 + -3.184253244456109e+01 + -3.197971313442012e+01 + -3.211756857999995e+01 + -3.225610123724459e+01 + -3.239531355479052e+01 + -3.253520799120049e+01 + -3.267578702273956e+01 + -3.281705312000000e+01 + -3.295900875199519e+01 + -3.310165640007095e+01 + -3.324499854981137e+01 + -3.338903768896250e+01 + -3.353377630999994e+01 + -3.367921690900354e+01 + -3.382536198480008e+01 + -3.397221404252836e+01 + -3.411977559608952e+01 + -3.426804916000000e+01 + -3.441703725062087e+01 + -3.456674239208418e+01 + -3.471716711255165e+01 + -3.486831394366235e+01 + -3.502018541999994e+01 + -3.517278408030963e+01 + -3.532611247314257e+01 + -3.548017315006599e+01 + -3.563496866378715e+01 + -3.579050157000000e+01 + -3.594677442911821e+01 + -3.610378981290209e+01 + -3.626155029281482e+01 + -3.642005843692588e+01 + -3.657931682999995e+01 + -3.673932806450152e+01 + -3.690009471994529e+01 + -3.706161938636306e+01 + -3.722390467398576e+01 + -3.738695318000000e+01 + -3.755076749872251e+01 + -3.771535025114206e+01 + -3.788070405790332e+01 + -3.804683152981476e+01 + -3.821373528999994e+01 + -3.838141797088579e+01 + -3.854988220802454e+01 + -3.871913063690455e+01 + -3.888916589260551e+01 + -3.905999062000000e+01 + -3.923160747217621e+01 + -3.940401910958111e+01 + -3.957722819105772e+01 + -3.975123737141870e+01 + -3.992604931999993e+01 + -4.010166671506960e+01 + -4.027809223215413e+01 + -4.045532854769397e+01 + -4.063337834194039e+01 + -4.081224431000000e+01 + -4.099192915380458e+01 + -4.117243556512365e+01 + -4.135376624213356e+01 + -4.153592389680070e+01 + -4.171891123999993e+01 + -4.190273098404973e+01 + -4.208738585293229e+01 + -4.227287857304115e+01 + -4.245921187066173e+01 + -4.264638848000000e+01 + -4.283441114000928e+01 + -4.302328258823673e+01 + -4.321300556988346e+01 + -4.340358284230594e+01 + -4.359501715999993e+01 + -4.378731127802528e+01 + -4.398046796379431e+01 + -4.417448998677844e+01 + -4.436938011574802e+01 + -4.456514113000000e+01 + -4.476177581459606e+01 + -4.495928695037842e+01 + -4.515767732491430e+01 + -4.535694973791337e+01 + -4.555710698999992e+01 + -4.575815188265746e+01 + -4.596008722124420e+01 + -4.616291581815827e+01 + -4.636664049491562e+01 + -4.657126407000000e+01 + -4.677678936329625e+01 + -4.698321921012249e+01 + -4.719055644645270e+01 + -4.739880390447049e+01 + -4.760796442999992e+01 + -4.781804087601476e+01 + -4.802903608806237e+01 + -4.824095291782189e+01 + -4.845379422957746e+01 + -4.866756289000000e+01 + -4.888226176793614e+01 + -4.909789373759357e+01 + -4.931446167624577e+01 + -4.953196846445736e+01 + -4.975041698999991e+01 + -4.996981014490353e+01 + -5.019015082042799e+01 + -5.041144191483806e+01 + -5.063368633767777e+01 + -5.085688700000000e+01 + -5.108104681363623e+01 + -5.130616869222998e+01 + -5.153225555529192e+01 + -5.175931033093434e+01 + -5.198733594999992e+01 + -5.221633534632925e+01 + -5.244631146064819e+01 + -5.267726723814258e+01 + -5.290920562821528e+01 + -5.314212958000000e+01 + -5.337604204603855e+01 + -5.361094599406351e+01 + -5.384684439089011e+01 + -5.408374019738633e+01 + -5.432163638999991e+01 + -5.456053595406303e+01 + -5.480044186892415e+01 + -5.504135712069162e+01 + -5.528328470761400e+01 + -5.552622762000000e+01 + -5.577018884907901e+01 + -5.601517141284037e+01 + -5.626117832498171e+01 + -5.650821258404100e+01 + -5.675627720999991e+01 + -5.700537523542541e+01 + -5.725550968441112e+01 + -5.750668358361924e+01 + -5.775889996777224e+01 + -5.801216188000000e+01 + -5.826647236807500e+01 + -5.852183447842080e+01 + -5.877825126017432e+01 + -5.903572576827786e+01 + -5.929426106999990e+01 + -5.955386023803142e+01 + -5.981452633626228e+01 + -6.007626243395679e+01 + -6.033907161265666e+01 + -6.060295696000000e+01 + -6.086792156620618e+01 + -6.113396851889991e+01 + -6.140110091270849e+01 + -6.166932185413050e+01 + -6.193863444999990e+01 + -6.220904180836374e+01 + -6.248054704389698e+01 + -6.275315327303672e+01 + -6.302686361375484e+01 + -6.330168120000000e+01 + -6.357760917255472e+01 + -6.385465065869710e+01 + -6.413280879313753e+01 + -6.441208672717147e+01 + -6.469248761000000e+01 + -6.497401459207148e+01 + -6.525667083785252e+01 + -6.554045951020694e+01 + -6.582538376572784e+01 + -6.611144677999999e+01 + -6.639865173804421e+01 + -6.668700181225154e+01 + -6.697650018322166e+01 + -6.726715004865791e+01 + -6.755895460000001e+01 + -6.785191702754956e+01 + -6.814604053706709e+01 + -6.844132833746227e+01 + -6.873778363702108e+01 + -6.903540965000001e+01 + -6.933420959649558e+01 + -6.963418670433917e+01 + -6.993534420146086e+01 + -7.023768531400407e+01 + -7.054121327999999e+01 + -7.084593134500037e+01 + -7.115184275353549e+01 + -7.145895075432828e+01 + -7.176725860332733e+01 + -7.207676955999989e+01 + -7.238748688676215e+01 + -7.269941385037480e+01 + -7.301255372170849e+01 + -7.332690977697268e+01 + -7.364248530000000e+01 + -7.395928357816831e+01 + -7.427730789465394e+01 + -7.459656154154558e+01 + -7.491704782593285e+01 + -7.523877004999987e+01 + -7.556173151464178e+01 + -7.588593553169946e+01 + -7.621138541944168e+01 + -7.653808450163682e+01 + -7.686603610000000e+01 + -7.719524353805981e+01 + -7.752571015313293e+01 + -7.785743928572181e+01 + -7.819043427631229e+01 + -7.852469846999988e+01 + -7.886023521608357e+01 + -7.919704786882774e+01 + -7.953513978918475e+01 + -7.987451434652237e+01 + -8.021517491000000e+01 + -8.055712484895521e+01 + -8.090036753598372e+01 + -8.124490635250547e+01 + -8.159074469172391e+01 + -8.193788593999987e+01 + -8.228633348416081e+01 + -8.263609073313938e+01 + -8.298716109541151e+01 + -8.333954797103145e+01 + -8.369325477000000e+01 + -8.404828491028280e+01 + -8.440464181412719e+01 + -8.476232890793086e+01 + -8.512134962287996e+01 + -8.548170738999985e+01 + -8.584340564352934e+01 + -8.620644783199920e+01 + -8.657083740482393e+01 + -8.693657780824788e+01 + -8.730367250000000e+01 + -8.767212494371194e+01 + -8.804193859639375e+01 + -8.841311692593891e+01 + -8.878566341870939e+01 + -8.915958154999986e+01 + -8.953487479168578e+01 + -8.991154663471849e+01 + -9.028960057395298e+01 + -9.066904010318096e+01 + -9.104986872000001e+01 + -9.143208992686800e+01 + -9.181570723560402e+01 + -9.220072416114067e+01 + -9.258714421980083e+01 + -9.297497092999986e+01 + -9.336420781525349e+01 + -9.375485841426487e+01 + -9.414692626313253e+01 + -9.454041488965315e+01 + -9.493532784000000e+01 + -9.533166867059026e+01 + -9.572944092950100e+01 + -9.612864816948191e+01 + -9.652929395407540e+01 + -9.693138184999984e+01 + -9.733491542620831e+01 + -9.773989825487583e+01 + -9.814633391500892e+01 + -9.855422599474231e+01 + -9.896357808000000e+01 + -9.937439375553778e+01 + -9.978667660951464e+01 + -1.002004302498873e+02 + -1.006156583113964e+02 + -1.010323643999998e+02 + -1.014505521033422e+02 + -1.018702250167552e+02 + -1.022913867648504e+02 + -1.027140410123223e+02 + -1.031381914000000e+02 + -1.035638415489902e+02 + -1.039909950728156e+02 + -1.044196556182856e+02 + -1.048498268814360e+02 + -1.052815124999998e+02 + -1.057147160851634e+02 + -1.061494413040264e+02 + -1.065856918490972e+02 + -1.070234714266025e+02 + -1.074627837000000e+02 + -1.079036323073108e+02 + -1.083460208994117e+02 + -1.087899531790557e+02 + -1.092354329168266e+02 + -1.096824637999998e+02 + -1.101310494754678e+02 + -1.105811936593542e+02 + -1.110329000832090e+02 + -1.114861724712110e+02 + -1.119410145000000e+02 + -1.123974298499644e+02 + -1.128554223365672e+02 + -1.133149957276709e+02 + -1.137761536721920e+02 + -1.142388998999998e+02 + -1.147032381951767e+02 + -1.151691723223398e+02 + -1.156367060267053e+02 + -1.161058430340008e+02 + -1.165765871000000e+02 + -1.170489420136372e+02 + -1.175229116129598e+02 + -1.179984996644491e+02 + -1.184757098197581e+02 + -1.189545458999998e+02 + -1.194350118004852e+02 + -1.199171112501401e+02 + -1.204008480035419e+02 + -1.208862259161727e+02 + -1.213732488000000e+02 + -1.218619204419225e+02 + -1.223522446637547e+02 + -1.228442252993658e+02 + -1.233378661832514e+02 + -1.238331710999998e+02 + -1.243301438371392e+02 + -1.248287883218059e+02 + -1.253291084262349e+02 + -1.258311078947497e+02 + -1.263347906000000e+02 + -1.268401604692280e+02 + -1.273472212887372e+02 + -1.278559768940106e+02 + -1.283664312433523e+02 + -1.288785881999998e+02 + -1.293924515790011e+02 + -1.299080252758494e+02 + -1.304253131892150e+02 + -1.309443191941241e+02 + -1.314650472000000e+02 + -1.319875011267033e+02 + -1.325116848422910e+02 + -1.330376022476014e+02 + -1.335652573069860e+02 + -1.340946538999998e+02 + -1.346257958892211e+02 + -1.351586873010075e+02 + -1.356933320835031e+02 + -1.362297340185993e+02 + -1.367678971000000e+02 + -1.373078254089903e+02 + -1.378495227933144e+02 + -1.383929931342302e+02 + -1.389382404506380e+02 + -1.394852686999998e+02 + -1.400340818144768e+02 + -1.405846838138316e+02 + -1.411370786853171e+02 + -1.416912703410207e+02 + -1.422472628000000e+02 + -1.428050601118040e+02 + -1.433646661562381e+02 + -1.439260848884736e+02 + -1.444893204354731e+02 + -1.450543767999998e+02 + -1.456212579173106e+02 + -1.461899678121767e+02 + -1.467605105156440e+02 + -1.473328900351724e+02 + -1.479071104000000e+02 + -1.484831756560318e+02 + -1.490610898537698e+02 + -1.496408570188282e+02 + -1.502224811435522e+02 + -1.508059663000000e+02 + -1.513913165938295e+02 + -1.519785360517816e+02 + -1.525676287092765e+02 + -1.531585986433134e+02 + -1.537514498999998e+02 + -1.543461865304275e+02 + -1.549428126935839e+02 + -1.555413324987964e+02 + -1.561417499433451e+02 + -1.567440691000000e+02 + -1.573482940967384e+02 + -1.579544290618548e+02 + -1.585624781173004e+02 + -1.591724453723425e+02 + -1.597843348999998e+02 + -1.603981507727703e+02 + -1.610138971515657e+02 + -1.616315781879854e+02 + -1.622511979884414e+02 + -1.628727607000000e+02 + -1.634962704824068e+02 + -1.641217314319286e+02 + -1.647491476962519e+02 + -1.653785235159056e+02 + -1.660098629999998e+02 + -1.666431702132707e+02 + -1.672784494025457e+02 + -1.679157047805161e+02 + -1.685549404452619e+02 + -1.691961606000000e+02 + -1.698393694891200e+02 + -1.704845712252935e+02 + -1.711317699673001e+02 + -1.717809699904770e+02 + -1.724321754999998e+02 + -1.730853906636835e+02 + -1.737406197069920e+02 + -1.743978668390772e+02 + -1.750571362267288e+02 + -1.757184321000000e+02 + -1.763817587329360e+02 + -1.770471204015179e+02 + -1.777145213342737e+02 + -1.783839656916257e+02 + -1.790554576999997e+02 + -1.797290016348361e+02 + -1.804046017812607e+02 + -1.810822624074922e+02 + -1.817619877551305e+02 + -1.824437821000000e+02 + -1.831276497291853e+02 + -1.838135948809234e+02 + -1.845016218201234e+02 + -1.851917348679873e+02 + -1.858839382999998e+02 + -1.865782363787204e+02 + -1.872746334451072e+02 + -1.879731338116912e+02 + -1.886737417231232e+02 + -1.893764615000000e+02 + -1.900812975069574e+02 + -1.907882540726982e+02 + -1.914973354967214e+02 + -1.922085460544087e+02 + -1.929218900999998e+02 + -1.936373720194894e+02 + -1.943549961169706e+02 + -1.950747667123967e+02 + -1.957966881820183e+02 + -1.965207649000000e+02 + -1.972470012275908e+02 + -1.979754014928308e+02 + -1.987059700466389e+02 + -1.994387112870401e+02 + -2.001736295999997e+02 + -2.009107293657797e+02 + -2.016500149830146e+02 + -2.023914908231823e+02 + -2.031351612174878e+02 + -2.038810306000000e+02 + -2.046291034502658e+02 + -2.053793841544099e+02 + -2.061318770718700e+02 + -2.068865865659776e+02 + -2.076435170999997e+02 + -2.084026731731890e+02 + -2.091640591716557e+02 + -2.099276794995817e+02 + -2.106935386300690e+02 + -2.114616410000000e+02 + -2.122319910255027e+02 + -2.130045931490896e+02 + -2.137794518362718e+02 + -2.145565715736208e+02 + -2.153359567999997e+02 + -2.161176119510612e+02 + -2.169015415764713e+02 + -2.176877501734888e+02 + -2.184762421224458e+02 + -2.192670219000000e+02 + -2.200600940505141e+02 + -2.208554631128035e+02 + -2.216531335679009e+02 + -2.224531098207831e+02 + -2.232553963999997e+02 + -2.240599978997985e+02 + -2.248669188401317e+02 + -2.256761637092654e+02 + -2.264877369816284e+02 + -2.273016432000000e+02 + -2.281178869415660e+02 + -2.289364727411434e+02 + -2.297574051254879e+02 + -2.305806886273285e+02 + -2.314063277999997e+02 + -2.322343272067604e+02 + -2.330646913987978e+02 + -2.338974249389632e+02 + -2.347325324124834e+02 + -2.355700184000000e+02 + -2.364098874788788e+02 + -2.372521442301691e+02 + -2.380967932316097e+02 + -2.389438390563173e+02 + -2.397932862999997e+02 + -2.406451395699314e+02 + -2.414994034603918e+02 + -2.423560825773335e+02 + -2.432151815494090e+02 + -2.440767050000000e+02 + -2.449406575494712e+02 + -2.458070438246558e+02 + -2.466758684438366e+02 + -2.475471360143982e+02 + -2.484208511999996e+02 + -2.492970186823550e+02 + -2.501756430678903e+02 + -2.510567289807632e+02 + -2.519402811010791e+02 + -2.528263041000000e+02 + -2.537148026392507e+02 + -2.546057813786489e+02 + -2.554992449908618e+02 + -2.563951981686694e+02 + -2.572936455999996e+02 + -2.581945919701986e+02 + -2.590980419711499e+02 + -2.600040002856254e+02 + -2.609124715849065e+02 + -2.618234606000000e+02 + -2.627369720784054e+02 + -2.636530106775519e+02 + -2.645715811006028e+02 + -2.654926881465747e+02 + -2.664163364999997e+02 + -2.673425308135112e+02 + -2.682712759281322e+02 + -2.692025766270102e+02 + -2.701364375396030e+02 + -2.710728634000000e+02 + -2.720118590149941e+02 + -2.729534291763713e+02 + -2.738975786300543e+02 + -2.748443120676544e+02 + -2.757936342999997e+02 + -2.767455501787848e+02 + -2.777000643997414e+02 + -2.786571816989448e+02 + -2.796169069311608e+02 + -2.805792449000000e+02 + -2.815442003833780e+02 + -2.825117782146733e+02 + -2.834819832031981e+02 + -2.844548201023671e+02 + -2.854302936999997e+02 + -2.864084088239409e+02 + -2.873891703596309e+02 + -2.883725831483384e+02 + -2.893586519481404e+02 + -2.903473816000000e+02 + -2.913387769892773e+02 + -2.923328429461174e+02 + -2.933295843055886e+02 + -2.943290059327143e+02 + -2.953311126999996e+02 + -2.963359094688269e+02 + -2.973434010446480e+02 + -2.983535922946355e+02 + -2.993664881931061e+02 + -3.003820936000000e+02 + -3.014004133189056e+02 + -3.024214522481863e+02 + -3.034452153213495e+02 + -3.044717074825456e+02 + -3.055009335999997e+02 + -3.065328985120693e+02 + -3.075676071368449e+02 + -3.086050644279766e+02 + -3.096452753553112e+02 + -3.106882447999996e+02 + -3.117339776182681e+02 + -3.127824787990806e+02 + -3.138337533166528e+02 + -3.148878060732492e+02 + -3.159446419999996e+02 + -3.170042660531784e+02 + -3.180666831989414e+02 + -3.191318984100575e+02 + -3.201999166629245e+02 + -3.212707428999996e+02 + -3.223443820580361e+02 + -3.234208391391681e+02 + -3.245001191331626e+02 + -3.255822269890704e+02 + -3.266671677000000e+02 + -3.277549462905472e+02 + -3.288455677875165e+02 + -3.299390371822755e+02 + -3.310353594166140e+02 + -3.321345394999996e+02 + -3.332365824854958e+02 + -3.343414934139734e+02 + -3.354492773045120e+02 + -3.365599391517927e+02 + -3.376734840000000e+02 + -3.387899169180687e+02 + -3.399092429402671e+02 + -3.410314670886827e+02 + -3.421565943845668e+02 + -3.432846298999996e+02 + -3.444155787253185e+02 + -3.455494458929433e+02 + -3.466862364711880e+02 + -3.478259555971263e+02 + -3.489686083000000e+02 + -3.501141995805723e+02 + -3.512627346186799e+02 + -3.524142185495274e+02 + -3.535686563776662e+02 + -3.547260531999996e+02 + -3.558864141649047e+02 + -3.570497443588797e+02 + -3.582160488781844e+02 + -3.593853328562213e+02 + -3.605576014000000e+02 + -3.617328596203877e+02 + -3.629111127187760e+02 + -3.640923658296630e+02 + -3.652766239636252e+02 + -3.664638922999996e+02 + -3.676541760949210e+02 + -3.688474804479435e+02 + -3.700438104641370e+02 + -3.712431713192604e+02 + -3.724455682000000e+02 + -3.736510062917217e+02 + -3.748594907617601e+02 + -3.760710267615897e+02 + -3.772856194324323e+02 + -3.785032739999995e+02 + -3.797239957155368e+02 + -3.809477897125092e+02 + -3.821746611611994e+02 + -3.834046153278488e+02 + -3.846376574000000e+02 + -3.858737925371631e+02 + -3.871130260109560e+02 + -3.883553630688227e+02 + -3.896008088834330e+02 + -3.908493686999996e+02 + -3.921010477895665e+02 + -3.933558513233559e+02 + -3.946137845264227e+02 + -3.958748527376295e+02 + -3.971390612000000e+02 + -3.984064151109821e+02 + -3.996769197585321e+02 + -4.009505804131749e+02 + -4.022274022910074e+02 + -4.035073906999995e+02 + -4.047905509809469e+02 + -4.060768883569506e+02 + -4.073664080804837e+02 + -4.086591154923789e+02 + -4.099550159000000e+02 + -4.112541145837781e+02 + -4.125564168232350e+02 + -4.138619279264533e+02 + -4.151706532436620e+02 + -4.164825980999995e+02 + -4.177977678009782e+02 + -4.191161676484082e+02 + -4.204378029703449e+02 + -4.217626791355866e+02 + -4.230908015000000e+02 + -4.244221753941545e+02 + -4.257568060915354e+02 + -4.270946989435893e+02 + -4.284358594322071e+02 + -4.297802928999995e+02 + -4.311280046181774e+02 + -4.324789999621266e+02 + -4.338332843406102e+02 + -4.351908631680312e+02 + -4.365517418000000e+02 + -4.379159255766193e+02 + -4.392834199290754e+02 + -4.406542302894571e+02 + -4.420283620541414e+02 + -4.434058205999995e+02 + -4.447866113008026e+02 + -4.461707395611302e+02 + -4.475582108324218e+02 + -4.489490306166049e+02 + -4.503432043000000e+02 + -4.517407372272212e+02 + -4.531416348857516e+02 + -4.545459027469901e+02 + -4.559535462055746e+02 + -4.573645706999994e+02 + -4.587789817092769e+02 + -4.601967847429616e+02 + -4.616179852648949e+02 + -4.630425886631084e+02 + -4.644706004000000e+02 + -4.659020259847504e+02 + -4.673368709042424e+02 + -4.687751406384571e+02 + -4.702168406679589e+02 + -4.716619764999995e+02 + -4.731105536500806e+02 + -4.745625775980045e+02 + -4.760180538297375e+02 + -4.774769878558138e+02 + -4.789393852000000e+02 + -4.804052513950263e+02 + -4.818745919803221e+02 + -4.833474124743740e+02 + -4.848237183656923e+02 + -4.863035151999994e+02 + -4.877868085453354e+02 + -4.892736039052198e+02 + -4.907639068268139e+02 + -4.922577229425711e+02 + -4.937550578000000e+02 + -4.952559169027076e+02 + -4.967603058178435e+02 + -4.982682301416788e+02 + -4.997796954853789e+02 + -5.012947073999994e+02 + -5.028132714194502e+02 + -5.043353931676896e+02 + -5.058610782730644e+02 + -5.073903323321115e+02 + -5.089231609000000e+02 + -5.104595695386481e+02 + -5.119995639358939e+02 + -5.135431497453484e+02 + -5.150903325247945e+02 + -5.166411178999995e+02 + -5.181955115300345e+02 + -5.197535190105982e+02 + -5.213151459679927e+02 + -5.228803980937674e+02 + -5.244492810000000e+02 + -5.260218002787250e+02 + -5.275979616609960e+02 + -5.291777708470047e+02 + -5.307612334400695e+02 + -5.323483550999995e+02 + -5.339391415258532e+02 + -5.355335984055753e+02 + -5.371317314077364e+02 + -5.387335461786030e+02 + -5.403390484000000e+02 + -5.419482437848817e+02 + -5.435611380730882e+02 + -5.451777369746786e+02 + -5.467980461477442e+02 + -5.484220712999994e+02 + -5.500498181706811e+02 + -5.516812924850077e+02 + -5.533164999617454e+02 + -5.549554463178829e+02 + -5.565981372999994e+02 + -5.582445786620732e+02 + -5.598947761113077e+02 + -5.615487353817318e+02 + -5.632064622631164e+02 + -5.648679624999994e+02 + -5.665332418238921e+02 + -5.682023060429622e+02 + -5.698751609401672e+02 + -5.715518122344557e+02 + -5.732322656999993e+02 + -5.749165271427032e+02 + -5.766046023386582e+02 + -5.782964970855437e+02 + -5.799922172195480e+02 + -5.816917684999994e+02 + -5.833951566715182e+02 + -5.851023876259811e+02 + -5.868134672043320e+02 + -5.885284011210334e+02 + -5.902471951999993e+02 + -5.919698553287222e+02 + -5.936963873375214e+02 + -5.954267970459595e+02 + -5.971610902818754e+02 + -5.988992728999993e+02 + -6.006413507613062e+02 + -6.023873296844711e+02 + -6.041372155081436e+02 + -6.058910141182311e+02 + -6.076487313999993e+02 + -6.094103732273231e+02 + -6.111759454411804e+02 + -6.129454539033432e+02 + -6.147189045204622e+02 + -6.164963032000001e+02 + -6.182776558378988e+02 + -6.200629682925465e+02 + -6.218522464515877e+02 + -6.236454962577363e+02 + -6.254427235999993e+02 + -6.272439343587159e+02 + -6.290491345295636e+02 + -6.308583300588987e+02 + -6.326715267788347e+02 + -6.344887306000001e+02 + -6.363099474872770e+02 + -6.381351833941451e+02 + -6.399644442896572e+02 + -6.417977361628546e+02 + -6.436350648999993e+02 + -6.454764363684590e+02 + -6.473218566292518e+02 + -6.491713317125350e+02 + -6.510248675271151e+02 + -6.528824700000000e+02 + -6.547441451008573e+02 + -6.566098988943567e+02 + -6.584797373808955e+02 + -6.603536664383599e+02 + -6.622316920999993e+02 + -6.641138204605409e+02 + -6.660000574329696e+02 + -6.678904089961051e+02 + -6.697848812885560e+02 + -6.716834803000000e+02 + -6.735862119462199e+02 + -6.754930822688247e+02 + -6.774040973560088e+02 + -6.793192633079277e+02 + -6.812385860999992e+02 + -6.831620716800010e+02 + -6.850897262089175e+02 + -6.870215557906422e+02 + -6.889575663679858e+02 + -6.908977640000001e+02 + -6.928421548145254e+02 + -6.947907448778678e+02 + -6.967435402481692e+02 + -6.987005469959722e+02 + -7.006617711999993e+02 + -7.026272189534540e+02 + -7.045968963883171e+02 + -7.065708096021641e+02 + -7.085489646318440e+02 + -7.105313676000000e+02 + -7.125180246666655e+02 + -7.145089419064375e+02 + -7.165041254104643e+02 + -7.185035813280965e+02 + -7.205073157999993e+02 + -7.225153349567163e+02 + -7.245276449240899e+02 + -7.265442518464891e+02 + -7.285651618951177e+02 + -7.305903812000000e+02 + -7.326199158832851e+02 + -7.346537721472801e+02 + -7.366919561576724e+02 + -7.387344740033407e+02 + -7.407813318999993e+02 + -7.428325361060332e+02 + -7.448880927069067e+02 + -7.469480078569493e+02 + -7.490122878703525e+02 + -7.510809389000000e+02 + -7.531539670309830e+02 + -7.552313785295614e+02 + -7.573131796529314e+02 + -7.593993765758833e+02 + -7.614899754999992e+02 + -7.635849826556215e+02 + -7.656844042998581e+02 + -7.677882466626152e+02 + -7.698965159244972e+02 + -7.720092183000000e+02 + -7.741263600422619e+02 + -7.762479474594095e+02 + -7.783739868214470e+02 + -7.805044843222228e+02 + -7.826394461999992e+02 + -7.847788787331309e+02 + -7.869227882276110e+02 + -7.890711809493379e+02 + -7.912240631015031e+02 + -7.933814410000000e+02 + -7.955433210068886e+02 + -7.977097093640062e+02 + -7.998806123337483e+02 + -8.020560362523712e+02 + -8.042359873999992e+02 + -8.064204720446323e+02 + -8.086094965664213e+02 + -8.108030673053524e+02 + -8.130011905039750e+02 + -8.152038725000000e+02 + -8.174111196729889e+02 + -8.196229383028856e+02 + -8.218393347070877e+02 + -8.240603152936806e+02 + -8.262858863999992e+02 + -8.285160543327190e+02 + -8.307508254786889e+02 + -8.329902062108882e+02 + -8.352342028550189e+02 + -8.374828218000000e+02 + -8.397360694583805e+02 + -8.419939521636865e+02 + -8.442564762682848e+02 + -8.465236481828920e+02 + -8.487954742999991e+02 + -8.510719610066617e+02 + -8.533531147279726e+02 + -8.556389418758610e+02 + -8.579294488297842e+02 + -8.602246420000000e+02 + -8.625245278111681e+02 + -8.648291126593311e+02 + -8.671384029773127e+02 + -8.694524052578884e+02 + -8.717711258999991e+02 + -8.740945712693658e+02 + -8.764227478547659e+02 + -8.787556621558366e+02 + -8.810933206360036e+02 + -8.834357297000000e+02 + -8.857828957473700e+02 + -8.881348253000285e+02 + -8.904915248639498e+02 + -8.928530008754832e+02 + -8.952192597999992e+02 + -8.975903081273602e+02 + -8.999661523549036e+02 + -9.023467989915350e+02 + -9.047322545556517e+02 + -9.071225255000001e+02 + -9.095176182642568e+02 + -9.119175394073789e+02 + -9.143222954857910e+02 + -9.167318930073794e+02 + -9.191463384999990e+02 + -9.215656384936522e+02 + -9.239897994653498e+02 + -9.264188279352956e+02 + -9.288527305046009e+02 + -9.312915136999991e+02 + -9.337351840217814e+02 + -9.361837480744202e+02 + -9.386372124507991e+02 + -9.410955836845210e+02 + -9.435588682999991e+02 + -9.460270728408829e+02 + -9.485002039375468e+02 + -9.509782681943145e+02 + -9.534612721474879e+02 + -9.559492223999991e+02 + -9.584421255818636e+02 + -9.609399882443452e+02 + -9.634428169536077e+02 + -9.659506183300578e+02 + -9.684633989999990e+02 + -9.709811655949806e+02 + -9.735039247636544e+02 + -9.760316831188370e+02 + -9.785644472182881e+02 + -9.811022236999991e+02 + -9.836450192407020e+02 + -9.861928404528198e+02 + -9.887456939756197e+02 + -9.913035865101050e+02 + -9.938665246999991e+02 + -9.964345151588749e+02 + -9.990075645416573e+02 + -1.001585679508894e+03 + -1.004168866725833e+03 + -1.006757132999999e+03 + -1.009350485088950e+03 + -1.011948929193798e+03 + -1.014552472017065e+03 + -1.017161121149714e+03 + -1.019774882999999e+03 + -1.022393763477281e+03 + -1.025017769745607e+03 + -1.027646908706880e+03 + -1.030281186449000e+03 + -1.032920609999999e+03 + -1.035565186772393e+03 + -1.038214923106640e+03 + -1.040869825393126e+03 + -1.043529900494233e+03 + -1.046195154999999e+03 + -1.048865595518282e+03 + -1.051541229525064e+03 + -1.054222063914517e+03 + -1.056908104442841e+03 + -1.059599357999999e+03 + -1.062295832060889e+03 + -1.064997533253958e+03 + -1.067704468147946e+03 + -1.070416643533965e+03 + -1.073134066000000e+03 + -1.075856742179453e+03 + -1.078584679453085e+03 + -1.081317884808236e+03 + -1.084056364390976e+03 + -1.086800124999999e+03 + -1.089549173751501e+03 + -1.092303517161580e+03 + -1.095063162007773e+03 + -1.097828115663242e+03 + -1.100598385000000e+03 + -1.103373976558467e+03 + -1.106154896984741e+03 + -1.108941153067517e+03 + -1.111732751768433e+03 + -1.114529699999999e+03 + -1.117332004656191e+03 + -1.120139672719820e+03 + -1.122952711033347e+03 + -1.125771126202256e+03 + -1.128594925000000e+03 + -1.131424114391635e+03 + -1.134258701616623e+03 + -1.137098693726371e+03 + -1.139944097362279e+03 + -1.142794918999999e+03 + -1.145651165298781e+03 + -1.148512843975744e+03 + -1.151379962155369e+03 + -1.154252525751212e+03 + -1.157130542000000e+03 + -1.160014018647746e+03 + -1.162902961796701e+03 + -1.165797378002409e+03 + -1.168697275086654e+03 + -1.171602659999999e+03 + -1.174513539162380e+03 + -1.177429919411751e+03 + -1.180351807863387e+03 + -1.183279211838743e+03 + -1.186212138000000e+03 + -1.189150592852472e+03 + -1.192094584016226e+03 + -1.195044118757429e+03 + -1.197999203418656e+03 + -1.200959844999999e+03 + -1.203926050837031e+03 + -1.206897827704460e+03 + -1.209875182550288e+03 + -1.212858122751144e+03 + -1.215846655000000e+03 + -1.218840785789916e+03 + -1.221840522671824e+03 + -1.224845872987532e+03 + -1.227856843385819e+03 + -1.230873440999999e+03 + -1.233895673111333e+03 + -1.236923546192640e+03 + -1.239957067026041e+03 + -1.242996243170224e+03 + -1.246041082000000e+03 + -1.249091590572761e+03 + -1.252147775334870e+03 + -1.255209643154299e+03 + -1.258277201722480e+03 + -1.261350457999999e+03 + -1.264429418673061e+03 + -1.267514091394071e+03 + -1.270604483350415e+03 + -1.273700600740823e+03 + -1.276802451000000e+03 + -1.279910042060014e+03 + -1.283023380429426e+03 + -1.286142472688095e+03 + -1.289267326090673e+03 + -1.292397947999999e+03 + -1.295534345774196e+03 + -1.298676526619691e+03 + -1.301824497524618e+03 + -1.304978265240164e+03 + -1.308137837000000e+03 + -1.311303220289759e+03 + -1.314474422298625e+03 + -1.317651449999705e+03 + -1.320834310180745e+03 + -1.324023009999999e+03 + -1.327217556910311e+03 + -1.330417958531748e+03 + -1.333624221890711e+03 + -1.336836353161044e+03 + -1.340054360000000e+03 + -1.343278250622039e+03 + -1.346508031450468e+03 + -1.349743709083262e+03 + -1.352985291084887e+03 + -1.356232784999999e+03 + -1.359486198143600e+03 + -1.362745537187869e+03 + -1.366010809195683e+03 + -1.369282022032803e+03 + -1.372559183000000e+03 + -1.375842299046690e+03 + -1.379131377356324e+03 + -1.382426425045151e+03 + -1.385727449081319e+03 + -1.389034456999999e+03 + -1.392347456524483e+03 + -1.395666454635196e+03 + -1.398991458464414e+03 + -1.402322475610563e+03 + -1.405659513000000e+03 + -1.409002577344138e+03 + -1.412351676333446e+03 + -1.415706817605260e+03 + -1.419068008353351e+03 + -1.422435255999999e+03 + -1.425808567964313e+03 + -1.429187950969556e+03 + -1.432573411998037e+03 + -1.435964958719179e+03 + -1.439362599000000e+03 + -1.442766340439504e+03 + -1.446176189225631e+03 + -1.449592152360744e+03 + -1.453014238529275e+03 + -1.456442454999999e+03 + -1.459876808245435e+03 + -1.463317305593544e+03 + -1.466763954627232e+03 + -1.470216762966463e+03 + -1.473675738000000e+03 + -1.477140887005819e+03 + -1.480612217422037e+03 + -1.484089736511155e+03 + -1.487573451238554e+03 + -1.491063368999999e+03 + -1.494559497483912e+03 + -1.498061844364458e+03 + -1.501570417048641e+03 + -1.505085222548716e+03 + -1.508606267999999e+03 + -1.512133560790714e+03 + -1.515667108906144e+03 + -1.519206919999463e+03 + -1.522753000996140e+03 + -1.526305358999999e+03 + -1.529864001422905e+03 + -1.533428936276007e+03 + -1.537000171179230e+03 + -1.540577712963951e+03 + -1.544161568999999e+03 + -1.547751747018138e+03 + -1.551348254621497e+03 + -1.554951099280540e+03 + -1.558560288310355e+03 + -1.562175828999999e+03 + -1.565797728689906e+03 + -1.569425994958102e+03 + -1.573060635400619e+03 + -1.576701657553543e+03 + -1.580349068999999e+03 + -1.584002877314684e+03 + -1.587663089901193e+03 + -1.591329713983250e+03 + -1.595002756657312e+03 + -1.598682225999999e+03 + -1.602368130282464e+03 + -1.606060476003810e+03 + -1.609759270166310e+03 + -1.613464521194204e+03 + -1.617176236999999e+03 + -1.620894424965112e+03 + -1.624619091996676e+03 + -1.628350245392540e+03 + -1.632087893195996e+03 + -1.635832042999999e+03 + -1.639582702219653e+03 + -1.643339878880967e+03 + -1.647103580589531e+03 + -1.650873814125992e+03 + -1.654650586999999e+03 + -1.658433907212865e+03 + -1.662223782656940e+03 + -1.666020220927786e+03 + -1.669823229228366e+03 + -1.673632814999999e+03 + -1.677448985879331e+03 + -1.681271749582079e+03 + -1.685101113981527e+03 + -1.688937087086922e+03 + -1.692779675999999e+03 + -1.696628887589857e+03 + -1.700484730162859e+03 + -1.704347211664743e+03 + -1.708216339003609e+03 + -1.712092119999999e+03 + -1.715974562928047e+03 + -1.719863675285195e+03 + -1.723759464515762e+03 + -1.727661938269359e+03 + -1.731571103999999e+03 + -1.735486969207614e+03 + -1.739409542118944e+03 + -1.743338830603560e+03 + -1.747274841733617e+03 + -1.751217582999999e+03 + -1.755167062315964e+03 + -1.759123288009624e+03 + -1.763086267739076e+03 + -1.767056008086542e+03 + -1.771032516999999e+03 + -1.775015803098183e+03 + -1.779005873908525e+03 + -1.783002736756524e+03 + -1.787006399126180e+03 + -1.791016869000000e+03 + -1.795034154506543e+03 + -1.799058263107071e+03 + -1.803089202321619e+03 + -1.807126980015989e+03 + -1.811171603999998e+03 + -1.815223082025504e+03 + -1.819281421835726e+03 + -1.823346631247284e+03 + -1.827418718154363e+03 + -1.831497690000000e+03 + -1.835583554215247e+03 + -1.839676319355180e+03 + -1.843775993459518e+03 + -1.847882583413063e+03 + -1.851996096999998e+03 + -1.856116542493618e+03 + -1.860243927542824e+03 + -1.864378259929794e+03 + -1.868519547846306e+03 + -1.872667799000000e+03 + -1.876823020804590e+03 + -1.880985220849939e+03 + -1.885154407199114e+03 + -1.889330588466962e+03 + -1.893513771999998e+03 + -1.897703964771626e+03 + -1.901901175652285e+03 + -1.906105412964281e+03 + -1.910316683519642e+03 + -1.914534995000000e+03 + -1.918760355678869e+03 + -1.922992773607248e+03 + -1.927232256642219e+03 + -1.931478812455566e+03 + -1.935732448999998e+03 + -1.939993174351127e+03 + -1.944260996306766e+03 + -1.948535922544343e+03 + -1.952817960710870e+03 + -1.957107119000000e+03 + -1.961403405774432e+03 + -1.965706828656891e+03 + -1.970017395435863e+03 + -1.974335114379128e+03 + -1.978659992999998e+03 + -1.982992038634364e+03 + -1.987331259958815e+03 + -1.991677665406797e+03 + -1.996031262526477e+03 + -2.000392059000000e+03 + -2.004760062662544e+03 + -2.009135281420714e+03 + -2.013517723394651e+03 + -2.017907396963966e+03 + -2.022304309999998e+03 + -2.026708470129302e+03 + -2.031119885371980e+03 + -2.035538563783372e+03 + -2.039964513323241e+03 + -2.044397742000000e+03 + -2.048838257821666e+03 + -2.053286068652342e+03 + -2.057741182613919e+03 + -2.062203608203423e+03 + -2.066673352999998e+03 + -2.071150424296029e+03 + -2.075634830690161e+03 + -2.080126580708826e+03 + -2.084625682242698e+03 + -2.089132143000000e+03 + -2.093645970720743e+03 + -2.098167173603271e+03 + -2.102695759983049e+03 + -2.107231738184183e+03 + -2.111775115999998e+03 + -2.116325901057278e+03 + -2.120884101683680e+03 + -2.125449726108530e+03 + -2.130022782163747e+03 + -2.134603278000000e+03 + -2.139191221924691e+03 + -2.143786621957349e+03 + -2.148389485981318e+03 + -2.152999821836896e+03 + -2.157617637999998e+03 + -2.162242943074696e+03 + -2.166875744534069e+03 + -2.171516050262848e+03 + -2.176163869133622e+03 + -2.180819209000000e+03 + -2.185482077327040e+03 + -2.190152482871076e+03 + -2.194830433950524e+03 + -2.199515937814626e+03 + -2.204209002999998e+03 + -2.208909638535144e+03 + -2.213617851857877e+03 + -2.218333650781778e+03 + -2.223057044225780e+03 + -2.227788040000000e+03 + -2.232526645541351e+03 + -2.237272869895315e+03 + -2.242026721580949e+03 + -2.246788207788726e+03 + -2.251557336999999e+03 + -2.256334118250544e+03 + -2.261118559161676e+03 + -2.265910667352767e+03 + -2.270710451040453e+03 + -2.275517918999998e+03 + -2.280333080014267e+03 + -2.285155941593499e+03 + -2.289986511539142e+03 + -2.294824798563590e+03 + -2.299670810999998e+03 + -2.304524556927484e+03 + -2.309386044592275e+03 + -2.314255282195762e+03 + -2.319132277836808e+03 + -2.324017039999998e+03 + -2.328909577220459e+03 + -2.333809897224200e+03 + -2.338718008145149e+03 + -2.343633918994289e+03 + -2.348557637999998e+03 + -2.353489172912608e+03 + -2.358428531797252e+03 + -2.363375723128402e+03 + -2.368330755820120e+03 + -2.373293637999998e+03 + -2.378264377427878e+03 + -2.383242982526706e+03 + -2.388229461889857e+03 + -2.393223824063392e+03 + -2.398226076999998e+03 + -2.403236228525699e+03 + -2.408254287477974e+03 + -2.413280262494937e+03 + -2.418314161547432e+03 + -2.423355992999998e+03 + -2.428405765403690e+03 + -2.433463486890615e+03 + -2.438529165661329e+03 + -2.443602810190047e+03 + -2.448684428999998e+03 + -2.453774030522361e+03 + -2.458871622761939e+03 + -2.463977214083831e+03 + -2.469090813490053e+03 + -2.474212428999998e+03 + -2.479342068313477e+03 + -2.484479740528551e+03 + -2.489625454539379e+03 + -2.494779218375099e+03 + -2.499941039999998e+03 + -2.505110927624773e+03 + -2.510288890409285e+03 + -2.515474937052364e+03 + -2.520669075212765e+03 + -2.525871312999998e+03 + -2.531081658990217e+03 + -2.536300122220549e+03 + -2.541526711425658e+03 + -2.546761434689014e+03 + -2.552004299999998e+03 + -2.557255315555890e+03 + -2.562514490474060e+03 + -2.567781833501355e+03 + -2.573057352510476e+03 + -2.578341055999998e+03 + -2.583632952807378e+03 + -2.588933051312229e+03 + -2.594241359879810e+03 + -2.599557887014108e+03 + -2.604882640999998e+03 + -2.610215630196411e+03 + -2.615556863841929e+03 + -2.620906350516468e+03 + -2.626264097579904e+03 + -2.631630113999998e+03 + -2.637004409331177e+03 + -2.642386991059378e+03 + -2.647777867311749e+03 + -2.653177047878767e+03 + -2.658584540999998e+03 + -2.664000354190328e+03 + -2.669424496446296e+03 + -2.674856976816473e+03 + -2.680297803844182e+03 + -2.685746985999998e+03 + -2.691204531699670e+03 + -2.696670449221115e+03 + -2.702144747143579e+03 + -2.707627434527642e+03 + -2.713118519999998e+03 + -2.718618011850782e+03 + -2.724125918263655e+03 + -2.729642247949266e+03 + -2.735167010382318e+03 + -2.740700213999998e+03 + -2.746241866699575e+03 + -2.751791977076697e+03 + -2.757350554006517e+03 + -2.762917606479738e+03 + -2.768493143000000e+03 + -2.774077171851313e+03 + -2.779669701724049e+03 + -2.785270741295763e+03 + -2.790880299095185e+03 + -2.796498383999998e+03 + -2.802125004968091e+03 + -2.807760170344632e+03 + -2.813403888501788e+03 + -2.819056168106567e+03 + -2.824717018000000e+03 + -2.830386447079949e+03 + -2.836064464083062e+03 + -2.841751077483182e+03 + -2.847446295475182e+03 + -2.853150126999998e+03 + -2.858862581346520e+03 + -2.864583667200011e+03 + -2.870313392988722e+03 + -2.876051767015894e+03 + -2.881798798000000e+03 + -2.887554494917011e+03 + -2.893318866668325e+03 + -2.899091922031221e+03 + -2.904873669618204e+03 + -2.910664117999998e+03 + -2.916463275808826e+03 + -2.922271151990944e+03 + -2.928087755363771e+03 + -2.933913094445438e+03 + -2.939747178000000e+03 + -2.945590014959967e+03 + -2.951441614226611e+03 + -2.957301984588625e+03 + -2.963171134666888e+03 + -2.969049072999998e+03 + -2.974935808208847e+03 + -2.980831349417174e+03 + -2.986735705755709e+03 + -2.992648886132359e+03 + -2.998570899000000e+03 + -3.004501752659864e+03 + -3.010441455936329e+03 + -3.016390017858416e+03 + -3.022347447554316e+03 + -3.028313753999998e+03 + -3.034288946006182e+03 + -3.040273032141582e+03 + -3.046266021078663e+03 + -3.052267921739149e+03 + -3.058278743000000e+03 + -3.064298493698561e+03 + -3.070327182685398e+03 + -3.076364818827055e+03 + -3.082411411001809e+03 + -3.088466967999998e+03 + -3.094531498652569e+03 + -3.100605012177602e+03 + -3.106687517554494e+03 + -3.112779023262762e+03 + -3.118879538000000e+03 + -3.124989070695736e+03 + -3.131107630527278e+03 + -3.137235226491168e+03 + -3.143371867254447e+03 + -3.149517561999998e+03 + -3.155672319953097e+03 + -3.161836149115856e+03 + -3.168009058152651e+03 + -3.174191057129923e+03 + -3.180382155000000e+03 + -3.186582360055111e+03 + -3.192791681144167e+03 + -3.199010127274887e+03 + -3.205237707493432e+03 + -3.211474430999998e+03 + -3.217720306909038e+03 + -3.223975343611381e+03 + -3.230239549889151e+03 + -3.236512935355519e+03 + -3.242795509000000e+03 + -3.249087279482800e+03 + -3.255388255944051e+03 + -3.261698447489179e+03 + -3.268017862963467e+03 + -3.274346510999998e+03 + -3.280684400401313e+03 + -3.287031541121871e+03 + -3.293387942369432e+03 + -3.299753611888159e+03 + -3.306128559000000e+03 + -3.312512793688797e+03 + -3.318906324190636e+03 + -3.325309159228279e+03 + -3.331721308860119e+03 + -3.338142781999998e+03 + -3.344573586933190e+03 + -3.351013732692941e+03 + -3.357463228591956e+03 + -3.363922084041577e+03 + -3.370390307999997e+03 + -3.376867909193196e+03 + -3.383354896616435e+03 + -3.389851279509897e+03 + -3.396357067337695e+03 + -3.402872268999997e+03 + -3.409396893188545e+03 + -3.415930949268335e+03 + -3.422474446597307e+03 + -3.429027394238212e+03 + -3.435589800999997e+03 + -3.442161675674332e+03 + -3.448743027574159e+03 + -3.455333866086035e+03 + -3.461934200499129e+03 + -3.468544039999997e+03 + -3.475163393634110e+03 + -3.481792270131310e+03 + -3.488430678432703e+03 + -3.495078627927044e+03 + -3.501736127999997e+03 + -3.508403187927853e+03 + -3.515079816661691e+03 + -3.521766023349286e+03 + -3.528461817510494e+03 + -3.535167207999998e+03 + -3.541882203477436e+03 + -3.548606813620608e+03 + -3.555341047964333e+03 + -3.562084915431213e+03 + -3.568838424999997e+03 + -3.575601585773337e+03 + -3.582374407066678e+03 + -3.589156898185297e+03 + -3.595949068354316e+03 + -3.602750926999998e+03 + -3.609562483468940e+03 + -3.616383746264014e+03 + -3.623214724488114e+03 + -3.630055428392298e+03 + -3.636905866999997e+03 + -3.643766048793625e+03 + -3.650635983516456e+03 + -3.657515680680700e+03 + -3.664405149014039e+03 + -3.671304397999997e+03 + -3.678213437374473e+03 + -3.685132275760156e+03 + -3.692060922035369e+03 + -3.698999385901594e+03 + -3.705947676999997e+03 + -3.712905804797643e+03 + -3.719873778403308e+03 + -3.726851606752037e+03 + -3.733839298718909e+03 + -3.740836863999997e+03 + -3.747844312547997e+03 + -3.754861653211674e+03 + -3.761888895074585e+03 + -3.768926047955085e+03 + -3.775973120999997e+03 + -3.783030123074376e+03 + -3.790097063813473e+03 + -3.797173952745452e+03 + -3.804260798968512e+03 + -3.811357611999997e+03 + -3.818464401472386e+03 + -3.825581176303607e+03 + -3.832707945585785e+03 + -3.839844718954238e+03 + -3.846991505999998e+03 + -3.854148316201428e+03 + -3.861315158822798e+03 + -3.868492043129635e+03 + -3.875678978458987e+03 + -3.882875973999997e+03 + -3.890083038997269e+03 + -3.897300183310783e+03 + -3.904527416633095e+03 + -3.911764748154242e+03 + -3.919012186999997e+03 + -3.926269742452437e+03 + -3.933537424464352e+03 + -3.940815242621297e+03 + -3.948103205720294e+03 + -3.955401322999997e+03 + -3.962709604107895e+03 + -3.970028058998795e+03 + -3.977356697163350e+03 + -3.984695527326294e+03 + -3.992044558999997e+03 + -3.999403802144854e+03 + -4.006773266302151e+03 + -4.014152960820400e+03 + -4.021542894928240e+03 + -4.028943077999997e+03 + -4.036353519583599e+03 + -4.043774229513202e+03 + -4.051205217431756e+03 + -4.058646492564995e+03 + -4.066098063999997e+03 + -4.073559940995820e+03 + -4.081032133755226e+03 + -4.088514652104142e+03 + -4.096007504979870e+03 + -4.103510702000000e+03 + -4.111024253097677e+03 + -4.118548167510886e+03 + -4.126082454416708e+03 + -4.133627123225803e+03 + -4.141182184000000e+03 + -4.148747646853033e+03 + -4.156323520486682e+03 + -4.163909814098826e+03 + -4.171506538118098e+03 + -4.179113701999993e+03 + -4.186731314728609e+03 + -4.194359386189681e+03 + -4.201997926116393e+03 + -4.209646943720986e+03 + -4.217306449000000e+03 + -4.224976452122954e+03 + -4.232656961817923e+03 + -4.240347987240753e+03 + -4.248049538718602e+03 + -4.255761626000000e+03 + -4.263484258397591e+03 + -4.271217445246016e+03 + -4.278961196276451e+03 + -4.286715521743729e+03 + -4.294480431000000e+03 + -4.302255933066315e+03 + -4.310042038085233e+03 + -4.317838756007569e+03 + -4.325646096087124e+03 + -4.333464067999995e+03 + -4.341292681602012e+03 + -4.349131946225953e+03 + -4.356981871466000e+03 + -4.364842467485710e+03 + -4.372713744000000e+03 + -4.380595710372718e+03 + -4.388488375861229e+03 + -4.396391750264422e+03 + -4.404305844160006e+03 + -4.412230667000000e+03 + -4.420166227736474e+03 + -4.428112536405837e+03 + -4.436069603088062e+03 + -4.444037437481978e+03 + -4.452016049000000e+03 + -4.460005447074678e+03 + -4.468005641867199e+03 + -4.476016643204103e+03 + -4.484038460200805e+03 + -4.492071102999995e+03 + -4.500114582060231e+03 + -4.508168906299815e+03 + -4.516234085098625e+03 + -4.524310129075975e+03 + -4.532397048000000e+03 + -4.540494851104932e+03 + -4.548603547974418e+03 + -4.556723148595408e+03 + -4.564853663376500e+03 + -4.572995102000000e+03 + -4.581147473755137e+03 + -4.589310788334117e+03 + -4.597485055595826e+03 + -4.605670285497996e+03 + -4.613866488000000e+03 + -4.622073673035890e+03 + -4.630291850451470e+03 + -4.638521029781397e+03 + -4.646761220207367e+03 + -4.655012431999994e+03 + -4.663274675842531e+03 + -4.671547961173437e+03 + -4.679832297267551e+03 + -4.688127693710799e+03 + -4.696434161000000e+03 + -4.704751709752170e+03 + -4.713080348793824e+03 + -4.721420087561993e+03 + -4.729770937031085e+03 + -4.738132907000000e+03 + -4.746506006604411e+03 + -4.754890245715343e+03 + -4.763285634540516e+03 + -4.771692183448750e+03 + -4.780109901999994e+03 + -4.788538799466528e+03 + -4.796978886096308e+03 + -4.805430172162917e+03 + -4.813892667577567e+03 + -4.822366381999994e+03 + -4.830851325088147e+03 + -4.839347507060687e+03 + -4.847854938123849e+03 + -4.856373628221604e+03 + -4.864903587000000e+03 + -4.873444824101478e+03 + -4.881997349859994e+03 + -4.890561174364984e+03 + -4.899136307099045e+03 + -4.907722758000000e+03 + -4.916320537362784e+03 + -4.924929655587317e+03 + -4.933550122528648e+03 + -4.942181947260091e+03 + -4.950825139999994e+03 + -4.959479711457802e+03 + -4.968145671175524e+03 + -4.976823028809056e+03 + -4.985511794647833e+03 + -4.994211978999993e+03 + -5.002923592007461e+03 + -5.011646643245516e+03 + -5.020381142480443e+03 + -5.029127099988444e+03 + -5.037884526000000e+03 + -5.046653430641881e+03 + -5.055433823857634e+03 + -5.064225715527905e+03 + -5.073029115529123e+03 + -5.081844034000000e+03 + -5.090670481166524e+03 + -5.099508466925161e+03 + -5.108358001180135e+03 + -5.117219094017154e+03 + -5.126091755999993e+03 + -5.134975997626908e+03 + -5.143871827953957e+03 + -5.152779256704796e+03 + -5.161698295082459e+03 + -5.170628952999993e+03 + -5.179571239778229e+03 + -5.188525166029071e+03 + -5.197490742130520e+03 + -5.206467977662855e+03 + -5.215456883000000e+03 + -5.224457468752808e+03 + -5.233469744262066e+03 + -5.242493719420175e+03 + -5.251529405361101e+03 + -5.260576812000000e+03 + -5.269635948683524e+03 + -5.278706825911151e+03 + -5.287789454172008e+03 + -5.296883843495917e+03 + -5.305990003999993e+03 + -5.315107945871962e+03 + -5.324237679253967e+03 + -5.333379214299059e+03 + -5.342532561186867e+03 + -5.351697729999993e+03 + -5.360874730862462e+03 + -5.370063574314554e+03 + -5.379264270604972e+03 + -5.388476829418795e+03 + -5.397701261000000e+03 + -5.406937575887649e+03 + -5.416185784228891e+03 + -5.425445896082409e+03 + -5.434717921547790e+03 + -5.444001871000000e+03 + -5.453297754883592e+03 + -5.462605583222671e+03 + -5.471925366229407e+03 + -5.481257114511772e+03 + -5.490600837999993e+03 + -5.499956546429602e+03 + -5.509324250592133e+03 + -5.518703961068116e+03 + -5.528095687743725e+03 + -5.537499440999993e+03 + -5.546915231361128e+03 + -5.556343068498348e+03 + -5.565782962476614e+03 + -5.575234924238452e+03 + -5.584698964000000e+03 + -5.594175091687396e+03 + -5.603663318133420e+03 + -5.613163653827974e+03 + -5.622676108416792e+03 + -5.632200692000000e+03 + -5.641737415094019e+03 + -5.651286288507457e+03 + -5.660847322604374e+03 + -5.670420527008017e+03 + -5.680005911999993e+03 + -5.689603488367688e+03 + -5.699213267038800e+03 + -5.708835258184300e+03 + -5.718469470901945e+03 + -5.728115915999992e+03 + -5.737774605002216e+03 + -5.747445547634946e+03 + -5.757128753652110e+03 + -5.766824233562706e+03 + -5.776531998000000e+03 + -5.786252057564687e+03 + -5.795984422575620e+03 + -5.805729103393980e+03 + -5.815486110517342e+03 + -5.825255454000000e+03 + -5.835037143865786e+03 + -5.844831191184440e+03 + -5.854637606668529e+03 + -5.864456400127173e+03 + -5.874287581999993e+03 + -5.884131163070459e+03 + -5.893987153665426e+03 + -5.903855564090225e+03 + -5.913736404781277e+03 + -5.923629686000000e+03 + -5.933535418061928e+03 + -5.943453611973397e+03 + -5.953384278439786e+03 + -5.963327427438455e+03 + -5.973283069000000e+03 + -5.983251213525049e+03 + -5.993231872573540e+03 + -6.003225056744913e+03 + -6.013230774891098e+03 + -6.023249038000000e+03 + -6.033279857947543e+03 + -6.043323244258373e+03 + -6.053379206808452e+03 + -6.063447756872029e+03 + -6.073528904999992e+03 + -6.083622661322729e+03 + -6.093729036471069e+03 + -6.103848041095609e+03 + -6.113979685699232e+03 + -6.124123981000000e+03 + -6.134280937646101e+03 + -6.144450565430006e+03 + -6.154632874755873e+03 + -6.164827877191976e+03 + -6.175035583000000e+03 + -6.185256001935748e+03 + -6.195489145360168e+03 + -6.205735024246584e+03 + -6.215993648382001e+03 + -6.226265028000000e+03 + -6.236549173839082e+03 + -6.246846097225249e+03 + -6.257155808917487e+03 + -6.267478318647532e+03 + -6.277813636999993e+03 + -6.288161775039973e+03 + -6.298522743318929e+03 + -6.308896552332133e+03 + -6.319283212690151e+03 + -6.329682735000000e+03 + -6.340095129841887e+03 + -6.350520407726451e+03 + -6.360958579315570e+03 + -6.371409655512612e+03 + -6.381873647000000e+03 + -6.392350564293673e+03 + -6.402840417873253e+03 + -6.413343218449801e+03 + -6.423858977046060e+03 + -6.434387704000000e+03 + -6.444929409479182e+03 + -6.455484104800415e+03 + -6.466051800878468e+03 + -6.476632507643834e+03 + -6.487226235999992e+03 + -6.497832997260840e+03 + -6.508452801649206e+03 + -6.519085659445890e+03 + -6.529731581482401e+03 + -6.540390579000000e+03 + -6.551062663116751e+03 + -6.561747843536938e+03 + -6.572446130639311e+03 + -6.583157536279329e+03 + -6.593882071000000e+03 + -6.604619744763902e+03 + -6.615370568925604e+03 + -6.626134554413510e+03 + -6.636911711064461e+03 + -6.647702049999992e+03 + -6.658505582840396e+03 + -6.669322319643610e+03 + -6.680152270785791e+03 + -6.690995447680221e+03 + -6.701851860999993e+03 + -6.712721521095499e+03 + -6.723604439166686e+03 + -6.734500626205399e+03 + -6.745410092579864e+03 + -6.756332849000000e+03 + -6.767268906377159e+03 + -6.778218275408767e+03 + -6.789180966973428e+03 + -6.800156992270870e+03 + -6.811146362000000e+03 + -6.822149086596000e+03 + -6.833165176809022e+03 + -6.844194643583943e+03 + -6.855237498022965e+03 + -6.866293750999992e+03 + -6.877363413246921e+03 + -6.888446495554016e+03 + -6.899543008749155e+03 + -6.910652963678518e+03 + -6.921776370999992e+03 + -6.932913241460104e+03 + -6.944063586638155e+03 + -6.955227417524035e+03 + -6.966404743973952e+03 + -6.977595577000000e+03 + -6.988799928187199e+03 + -7.000017808173458e+03 + -7.011249227729020e+03 + -7.022494198140058e+03 + -7.033752730000000e+03 + -7.045024833685246e+03 + -7.056310520605544e+03 + -7.067609802022496e+03 + -7.078922688575014e+03 + -7.090249190999992e+03 + -7.101589320140114e+03 + -7.112943086874141e+03 + -7.124310502404821e+03 + -7.135691578318693e+03 + -7.147086324999992e+03 + -7.158494752468790e+03 + -7.169916872475182e+03 + -7.181352696510882e+03 + -7.192802235036809e+03 + -7.204265499000000e+03 + -7.215742499578333e+03 + -7.227233247391960e+03 + -7.238737753333357e+03 + -7.250256028887258e+03 + -7.261788085000000e+03 + -7.273333932305611e+03 + -7.284893581718426e+03 + -7.296467044458082e+03 + -7.308054332025791e+03 + -7.319655454999992e+03 + -7.331270423697963e+03 + -7.342899249833889e+03 + -7.354541944862027e+03 + -7.366198519315069e+03 + -7.377868983999992e+03 + -7.389553350032372e+03 + -7.401251628839381e+03 + -7.412963831476617e+03 + -7.424689968390403e+03 + -7.436430051000000e+03 + -7.448184091042194e+03 + -7.459952098877861e+03 + -7.471734085033887e+03 + -7.483530060856024e+03 + -7.495340038000000e+03 + -7.507164027981260e+03 + -7.519002041143363e+03 + -7.530854088088799e+03 + -7.542720180263871e+03 + -7.554600328999991e+03 + -7.566494545476364e+03 + -7.578402840747203e+03 + -7.590325225748156e+03 + -7.602261711334166e+03 + -7.614212308999990e+03 + -7.626177030375796e+03 + -7.638155885970103e+03 + -7.650148886679111e+03 + -7.662156044359298e+03 + -7.674177370000000e+03 + -7.686212874133715e+03 + -7.698262567927072e+03 + -7.710326462858042e+03 + -7.722404570574414e+03 + -7.734496902000000e+03 + -7.746603467726753e+03 + -7.758724278933637e+03 + -7.770859347070250e+03 + -7.783008683730720e+03 + -7.795172299999991e+03 + -7.807350206747154e+03 + -7.819542415323729e+03 + -7.831748936928582e+03 + -7.843969782379609e+03 + -7.856204962999991e+03 + -7.868454490389281e+03 + -7.880718375856472e+03 + -7.892996630459527e+03 + -7.905289265033489e+03 + -7.917596291000000e+03 + -7.929917719977670e+03 + -7.942253562811284e+03 + -7.954603830544003e+03 + -7.966968534806996e+03 + -7.979347687000000e+03 + -7.991741298275563e+03 + -8.004149379532312e+03 + -8.016571941875890e+03 + -8.029008996834256e+03 + -8.041460555999991e+03 + -8.053926630829063e+03 + -8.066407232164392e+03 + -8.078902371093302e+03 + -8.091412059283156e+03 + -8.103936307999991e+03 + -8.116475128348727e+03 + -8.129028531951320e+03 + -8.141596530160446e+03 + -8.154179133753471e+03 + -8.166776354000000e+03 + -8.179388202500601e+03 + -8.192014690774517e+03 + -8.204655830155478e+03 + -8.217311631752342e+03 + -8.229982107000000e+03 + -8.242667267443709e+03 + -8.255367124181290e+03 + -8.268081688506129e+03 + -8.280810972124258e+03 + -8.293554985999990e+03 + -8.306313740930424e+03 + -8.319087249046417e+03 + -8.331875522237864e+03 + -8.344678571514016e+03 + -8.357496408000001e+03 + -8.370329042981793e+03 + -8.383176487893126e+03 + -8.396038754236946e+03 + -8.408915853538949e+03 + -8.421807796999999e+03 + -8.434714595760075e+03 + -8.447636261558551e+03 + -8.460572806112319e+03 + -8.473524240852536e+03 + -8.486490577000000e+03 + -8.499471825734363e+03 + -8.512467998550057e+03 + -8.525479106914012e+03 + -8.538505162160651e+03 + -8.551546175999989e+03 + -8.564602160205039e+03 + -8.577673125806519e+03 + -8.590759084111069e+03 + -8.603860047081474e+03 + -8.616976026000000e+03 + -8.630107031891077e+03 + -8.643253076647045e+03 + -8.656414171854482e+03 + -8.669590328370747e+03 + -8.682781558000001e+03 + -8.695987872906602e+03 + -8.709209284090668e+03 + -8.722445802791402e+03 + -8.735697441007769e+03 + -8.748964210000000e+03 + -8.762246120773598e+03 + -8.775543185390141e+03 + -8.788855415760128e+03 + -8.802182823160678e+03 + -8.815525418999991e+03 + -8.828883214778334e+03 + -8.842256221886048e+03 + -8.855644451817980e+03 + -8.869047916276779e+03 + -8.882466627000000e+03 + -8.895900595656447e+03 + -8.909349833599377e+03 + -8.922814352320849e+03 + -8.936294163622882e+03 + -8.949789279000001e+03 + -8.963299709806102e+03 + -8.976825467697834e+03 + -8.990366564425331e+03 + -9.003923011733321e+03 + -9.017494820999989e+03 + -9.031082003570244e+03 + -9.044684571593196e+03 + -9.058302536801553e+03 + -9.071935910043938e+03 + -9.085584702999991e+03 + -9.099248927805194e+03 + -9.112928596071970e+03 + -9.126623719398038e+03 + -9.140334309541779e+03 + -9.154060378000000e+03 + -9.167801936143134e+03 + -9.181558995552323e+03 + -9.195331568052554e+03 + -9.209119665711642e+03 + -9.222923300000000e+03 + -9.236742482191501e+03 + -9.250577224366738e+03 + -9.264427538348678e+03 + -9.278293435300837e+03 + -9.292174926999989e+03 + -9.306072025514850e+03 + -9.319984742353185e+03 + -9.333913089239737e+03 + -9.347857078372264e+03 + -9.361816720999988e+03 + -9.375792028076301e+03 + -9.389783011923670e+03 + -9.403789684689073e+03 + -9.417812057757259e+03 + -9.431850143000000e+03 + -9.445903952452922e+03 + -9.459973497383473e+03 + -9.474058789280491e+03 + -9.488159840242311e+03 + -9.502276662000000e+03 + -9.516409266099370e+03 + -9.530557664431180e+03 + -9.544721868948835e+03 + -9.558901891554557e+03 + -9.573097743999990e+03 + -9.587309437907974e+03 + -9.601536984771086e+03 + -9.615780396443668e+03 + -9.630039685320193e+03 + -9.644314862999989e+03 + -9.658605940694017e+03 + -9.672912930240365e+03 + -9.687235843732506e+03 + -9.701574693379191e+03 + -9.715929491000001e+03 + -9.730300248146514e+03 + -9.744686976337332e+03 + -9.759089687418043e+03 + -9.773508393705906e+03 + -9.787943106999999e+03 + -9.802393838806964e+03 + -9.816860600913731e+03 + -9.831343405392694e+03 + -9.845842264577648e+03 + -9.860357189999990e+03 + -9.874888192875391e+03 + -9.889435285292540e+03 + -9.903998479577405e+03 + -9.918577788007758e+03 + -9.933173221999989e+03 + -9.947784792760667e+03 + -9.962412512866247e+03 + -9.977056394630243e+03 + -9.991716449514770e+03 + -1.000639269000000e+04 + -1.002108512827329e+04 + -1.003579377260607e+04 + -1.005051863510592e+04 + -1.006525973450424e+04 + -1.008001708000000e+04 + -1.009479067738785e+04 + -1.010958054488143e+04 + -1.012438669671707e+04 + -1.013920913701616e+04 + -1.015404787999999e+04 + -1.016890294387830e+04 + -1.018377433451942e+04 + -1.019866206104612e+04 + -1.021356614193473e+04 + -1.022848658999999e+04 + -1.024342341422066e+04 + -1.025837662498870e+04 + -1.027334623400460e+04 + -1.028833225445739e+04 + -1.030333470000000e+04 + -1.031835358368700e+04 + -1.033338891534757e+04 + -1.034844070623467e+04 + -1.036350897076085e+04 + -1.037859372000000e+04 + -1.039369496373519e+04 + -1.040881271589677e+04 + -1.042394698923176e+04 + -1.043909779325773e+04 + -1.045426513999999e+04 + -1.046944904320307e+04 + -1.048464951626011e+04 + -1.049986657147346e+04 + -1.051510021951631e+04 + -1.053035046999999e+04 + -1.054561733346490e+04 + -1.056090082649770e+04 + -1.057620096382862e+04 + -1.059151775501402e+04 + -1.060685121000000e+04 + -1.062220133982168e+04 + -1.063756815769902e+04 + -1.065295167679853e+04 + -1.066835190951487e+04 + -1.068376887000000e+04 + -1.069920257172756e+04 + -1.071465302083269e+04 + -1.073012022736731e+04 + -1.074560420973240e+04 + -1.076110497999999e+04 + -1.077662254698522e+04 + -1.079215692468130e+04 + -1.080770812602064e+04 + -1.082327616047952e+04 + -1.083886103999999e+04 + -1.085446277832030e+04 + -1.087008138917964e+04 + -1.088571688451933e+04 + -1.090136927381244e+04 + -1.091703857000000e+04 + -1.093272478707855e+04 + -1.094842793381667e+04 + -1.096414802233435e+04 + -1.097988507119364e+04 + -1.099563909000000e+04 + -1.101141008471468e+04 + -1.102719807131307e+04 + -1.104300306633410e+04 + -1.105882508291791e+04 + -1.107466412999999e+04 + -1.109052021511841e+04 + -1.110639335038349e+04 + -1.112228355101184e+04 + -1.113819083451417e+04 + -1.115411520999999e+04 + -1.117005668368749e+04 + -1.118601527242516e+04 + -1.120199099177015e+04 + -1.121798385114509e+04 + -1.123399386000000e+04 + -1.125002102929127e+04 + -1.126606537454743e+04 + -1.128212691149971e+04 + -1.129820565394142e+04 + -1.131430161000000e+04 + -1.133041478676655e+04 + -1.134654520134832e+04 + -1.136269286880464e+04 + -1.137885779750048e+04 + -1.139503999999999e+04 + -1.141123949060806e+04 + -1.142745627830015e+04 + -1.144369037489935e+04 + -1.145994179819328e+04 + -1.147621056000000e+04 + -1.149249666929363e+04 + -1.150880014040390e+04 + -1.152512098586926e+04 + -1.154145921396878e+04 + -1.155781484000000e+04 + -1.157418788116290e+04 + -1.159057834325663e+04 + -1.160698623573862e+04 + -1.162341157750990e+04 + -1.163985437999999e+04 + -1.165631465167572e+04 + -1.167279241049137e+04 + -1.168928767028212e+04 + -1.170580043559586e+04 + -1.172233071999999e+04 + -1.173887854137991e+04 + -1.175544390951204e+04 + -1.177202683447122e+04 + -1.178862732998528e+04 + -1.180524541000000e+04 + -1.182188108744826e+04 + -1.183853437152247e+04 + -1.185520527417456e+04 + -1.187189381268968e+04 + -1.188860000000000e+04 + -1.190532384555031e+04 + -1.192206535739879e+04 + -1.193882454957090e+04 + -1.195560144455150e+04 + -1.197239604999999e+04 + -1.198920836801576e+04 + -1.200603841862060e+04 + -1.202288622005816e+04 + -1.203975178087160e+04 + -1.205663510999999e+04 + -1.207353621858988e+04 + -1.209045512337030e+04 + -1.210739183876488e+04 + -1.212434637372514e+04 + -1.214131874000000e+04 + -1.215830895146994e+04 + -1.217531702204386e+04 + -1.219234296344827e+04 + -1.220938678454126e+04 + -1.222644850000000e+04 + -1.224352812665298e+04 + -1.226062567426862e+04 + -1.227774115320455e+04 + -1.229487457740941e+04 + -1.231202595999999e+04 + -1.232919531361497e+04 + -1.234638265190763e+04 + -1.236358798719477e+04 + -1.238081132944854e+04 + -1.239805268999999e+04 + -1.241531208224867e+04 + -1.243258952373459e+04 + -1.244988502746729e+04 + -1.246719859854622e+04 + -1.248453025000000e+04 + -1.250187999937352e+04 + -1.251924785997314e+04 + -1.253663384322633e+04 + -1.255403795942784e+04 + -1.257146022000000e+04 + -1.258890063824787e+04 + -1.260635923174130e+04 + -1.262383601348307e+04 + -1.264133098848631e+04 + -1.265884416999999e+04 + -1.267637557565735e+04 + -1.269392521755929e+04 + -1.271149310837373e+04 + -1.272907926320349e+04 + -1.274668368999999e+04 + -1.276430639533002e+04 + -1.278194739917555e+04 + -1.279960671868295e+04 + -1.281728436173200e+04 + -1.283498034000000e+04 + -1.285269466774105e+04 + -1.287042735763161e+04 + -1.288817842259290e+04 + -1.290594787633268e+04 + -1.292373573000000e+04 + -1.294154199365508e+04 + -1.295936667981993e+04 + -1.297720980264566e+04 + -1.299507137776778e+04 + -1.301295141999999e+04 + -1.303084994203483e+04 + -1.304876695061188e+04 + -1.306670245535235e+04 + -1.308465647270176e+04 + -1.310262901999999e+04 + -1.312062011245361e+04 + -1.313862975604251e+04 + -1.315665796055223e+04 + -1.317470474462057e+04 + -1.319277012000000e+04 + -1.321085409533674e+04 + -1.322895668661698e+04 + -1.324707790969205e+04 + -1.326521777718879e+04 + -1.328337630000000e+04 + -1.330155348851537e+04 + -1.331974935491385e+04 + -1.333796391362056e+04 + -1.335619718140170e+04 + -1.337444916999999e+04 + -1.339271988874384e+04 + -1.341100935082290e+04 + -1.342931756987852e+04 + -1.344764455872234e+04 + -1.346599032999999e+04 + -1.348435489664480e+04 + -1.350273827293541e+04 + -1.352114047045672e+04 + -1.353956149695641e+04 + -1.355800137000000e+04 + -1.357646010972569e+04 + -1.359493772045508e+04 + -1.361343421245217e+04 + -1.363194960986463e+04 + -1.365048392000000e+04 + -1.366903714425879e+04 + -1.368760930691950e+04 + -1.370620042690972e+04 + -1.372481050688227e+04 + -1.374343955999999e+04 + -1.376208760473736e+04 + -1.378075465005087e+04 + -1.379944070672178e+04 + -1.381814579185646e+04 + -1.383686991999999e+04 + -1.385561310323773e+04 + -1.387437535187516e+04 + -1.389315667691767e+04 + -1.391195709130158e+04 + -1.393077661000000e+04 + -1.394961524865979e+04 + -1.396847302075987e+04 + -1.398734993803961e+04 + -1.400624601054151e+04 + -1.402516125000000e+04 + -1.404409566989268e+04 + -1.406304928589068e+04 + -1.408202211294199e+04 + -1.410101416389908e+04 + -1.412002544999999e+04 + -1.413905598164077e+04 + -1.415810576964489e+04 + -1.417717482985645e+04 + -1.419626318438561e+04 + -1.421537083999999e+04 + -1.423449779870650e+04 + -1.425364408441530e+04 + -1.427280971628262e+04 + -1.429199469812906e+04 + -1.431119904000000e+04 + -1.433042275698022e+04 + -1.434966586475864e+04 + -1.436892837784737e+04 + -1.438821030874347e+04 + -1.440751167000000e+04 + -1.442683247464153e+04 + -1.444617273693482e+04 + -1.446553246845352e+04 + -1.448491167696990e+04 + -1.450431037999999e+04 + -1.452372859766022e+04 + -1.454316633455064e+04 + -1.456262360064903e+04 + -1.458210041914065e+04 + -1.460159679999998e+04 + -1.462111274782618e+04 + -1.464064828275210e+04 + -1.466020342227678e+04 + -1.467977817411577e+04 + -1.469937255000000e+04 + -1.471898656425745e+04 + -1.473862022905967e+04 + -1.475827355783788e+04 + -1.477794656667906e+04 + -1.479763927000000e+04 + -1.481735168022591e+04 + -1.483708380678435e+04 + -1.485683566151257e+04 + -1.487660726097236e+04 + -1.489639861999999e+04 + -1.491620975095499e+04 + -1.493604066191429e+04 + -1.495589136614776e+04 + -1.497576188555746e+04 + -1.499565223000000e+04 + -1.501556240451360e+04 + -1.503549242791256e+04 + -1.505544231896391e+04 + -1.507541209051985e+04 + -1.509540175000000e+04 + -1.511541130465759e+04 + -1.513544077375174e+04 + -1.515549017500820e+04 + -1.517555951933053e+04 + -1.519564881999999e+04 + -1.521575809081157e+04 + -1.523588734003694e+04 + -1.525603658036919e+04 + -1.527620583277191e+04 + -1.529639510999998e+04 + -1.531660442034102e+04 + -1.533683377728779e+04 + -1.535708319443415e+04 + -1.537735268372974e+04 + -1.539764226000000e+04 + -1.541795193921473e+04 + -1.543828173411788e+04 + -1.545863165713528e+04 + -1.547900172144165e+04 + -1.549939194000000e+04 + -1.551980232569260e+04 + -1.554023289178161e+04 + -1.556068365093051e+04 + -1.558115461506463e+04 + -1.560164579999999e+04 + -1.562215722197032e+04 + -1.564268888875843e+04 + -1.566324081295743e+04 + -1.568381301679686e+04 + -1.570440550999999e+04 + -1.572501829745089e+04 + -1.574565139909988e+04 + -1.576630483256334e+04 + -1.578697860613842e+04 + -1.580767273000000e+04 + -1.582838721786272e+04 + -1.584912209052793e+04 + -1.586987736246908e+04 + -1.589065303680525e+04 + -1.591144913000000e+04 + -1.593226566336701e+04 + -1.595310264072689e+04 + -1.597396007256353e+04 + -1.599483798518879e+04 + -1.601573638999999e+04 + -1.603665529105288e+04 + -1.605759470511345e+04 + -1.607855464838671e+04 + -1.609953513161670e+04 + -1.612053616999998e+04 + -1.614155778004294e+04 + -1.616259997081388e+04 + -1.618366275348782e+04 + -1.620474614514243e+04 + -1.622585016000000e+04 + -1.624697481007329e+04 + -1.626812010728422e+04 + -1.628928606592670e+04 + -1.631047270337715e+04 + -1.633168003000000e+04 + -1.635290805454565e+04 + -1.637415679800609e+04 + -1.639542627592296e+04 + -1.641671649164588e+04 + -1.643802745999998e+04 + -1.645935920179283e+04 + -1.648071172935930e+04 + -1.650208505431875e+04 + -1.652347919039644e+04 + -1.654489414999998e+04 + -1.656632994566724e+04 + -1.658778659427021e+04 + -1.660926410974226e+04 + -1.663076250029903e+04 + -1.665228178000000e+04 + -1.667382196574960e+04 + -1.669538306946903e+04 + -1.671696510420377e+04 + -1.673856808645374e+04 + -1.676019203000000e+04 + -1.678183694695306e+04 + -1.680350285053965e+04 + -1.682518975366077e+04 + -1.684689766850574e+04 + -1.686862660999998e+04 + -1.689037659405139e+04 + -1.691214763326874e+04 + -1.693393974023558e+04 + -1.695575292860696e+04 + -1.697758720999999e+04 + -1.699944259677470e+04 + -1.702131910964586e+04 + -1.704321676352935e+04 + -1.706513556209216e+04 + -1.708707552000000e+04 + -1.710903665790321e+04 + -1.713101898938551e+04 + -1.715302252479822e+04 + -1.717504727292061e+04 + -1.719709325000000e+04 + -1.721916047545785e+04 + -1.724124896174670e+04 + -1.726335872072246e+04 + -1.728548976595536e+04 + -1.730764210999998e+04 + -1.732981576548871e+04 + -1.735201074834581e+04 + -1.737422707347338e+04 + -1.739646475299950e+04 + -1.741872379999999e+04 + -1.744100422776899e+04 + -1.746330604747148e+04 + -1.748562927386205e+04 + -1.750797392735042e+04 + -1.753034002000000e+04 + -1.755272756012299e+04 + -1.757513656385630e+04 + -1.759756704698003e+04 + -1.762001902165879e+04 + -1.764249250000000e+04 + -1.766498749503509e+04 + -1.768750402279969e+04 + -1.771004209797560e+04 + -1.773260173223158e+04 + -1.775518293999998e+04 + -1.777778573725219e+04 + -1.780041013823985e+04 + -1.782305615380817e+04 + -1.784572379125812e+04 + -1.786841306999998e+04 + -1.789112401297027e+04 + -1.791385662520795e+04 + -1.793661091551944e+04 + -1.795938690506571e+04 + -1.798218461000000e+04 + -1.800500404157250e+04 + -1.802784520726593e+04 + -1.805070812126097e+04 + -1.807359280836476e+04 + -1.809649928000000e+04 + -1.811942754077938e+04 + -1.814237760512274e+04 + -1.816534949154946e+04 + -1.818834322012563e+04 + -1.821135879999998e+04 + -1.823439623670011e+04 + -1.825745554979138e+04 + -1.828053675712656e+04 + -1.830363986886144e+04 + -1.832676489999998e+04 + -1.834991186721417e+04 + -1.837308077964562e+04 + -1.839627164834952e+04 + -1.841948449011883e+04 + -1.844271932000000e+04 + -1.846597615248214e+04 + -1.848925500551537e+04 + -1.851255589141731e+04 + -1.853587881367952e+04 + -1.855922379000000e+04 + -1.858259084403384e+04 + -1.860597998459446e+04 + -1.862939122130964e+04 + -1.865282457086503e+04 + -1.867628004999998e+04 + -1.869975767367864e+04 + -1.872325745125265e+04 + -1.874677939400045e+04 + -1.877032351829797e+04 + -1.879388983999998e+04 + -1.881747837395618e+04 + -1.884108913346766e+04 + -1.886472213066709e+04 + -1.888837737699991e+04 + -1.891205489000000e+04 + -1.893575468867888e+04 + -1.895947678210836e+04 + -1.898322118083019e+04 + -1.900698790146692e+04 + -1.903077696000000e+04 + -1.905458837122149e+04 + -1.907842214817702e+04 + -1.910227830328199e+04 + -1.912615684887913e+04 + -1.915005779999998e+04 + -1.917398117252360e+04 + -1.919792697876641e+04 + -1.922189523162585e+04 + -1.924588594641727e+04 + -1.926989913999998e+04 + -1.929393482787026e+04 + -1.931799301676958e+04 + -1.934207372057390e+04 + -1.936617696590223e+04 + -1.939030276000000e+04 + -1.941445110358184e+04 + -1.943862202401437e+04 + -1.946281554213054e+04 + -1.948703165938676e+04 + -1.951127038999998e+04 + -1.953553175531375e+04 + -1.955981576784185e+04 + -1.958412243887696e+04 + -1.960845178142548e+04 + -1.963280380999998e+04 + -1.965717854010317e+04 + -1.968157598764983e+04 + -1.970599616682758e+04 + -1.973043908928781e+04 + -1.975490477000000e+04 + -1.977939322508017e+04 + -1.980390446612710e+04 + -1.982843850672890e+04 + -1.985299536464853e+04 + -1.987757505000000e+04 + -1.990217757132781e+04 + -1.992680295149982e+04 + -1.995145120910892e+04 + -1.997612235106852e+04 + -2.000081638999998e+04 + -2.002553334291399e+04 + -2.005027322692212e+04 + -2.007503605456619e+04 + -2.009982183242756e+04 + -2.012463057999998e+04 + -2.014946232050470e+04 + -2.017431705750974e+04 + -2.019919480128925e+04 + -2.022409557869796e+04 + -2.024901940000000e+04 + -2.027396626876084e+04 + -2.029893620825063e+04 + -2.032392923791251e+04 + -2.034894536415857e+04 + -2.037398460000000e+04 + -2.039904696273123e+04 + -2.042413246681671e+04 + -2.044924112749899e+04 + -2.047437296177629e+04 + -2.049952797999998e+04 + -2.052470619105544e+04 + -2.054990761544010e+04 + -2.057513226917888e+04 + -2.060038015795331e+04 + -2.062565129999998e+04 + -2.065094571854568e+04 + -2.067626342205840e+04 + -2.070160442063917e+04 + -2.072696873225083e+04 + -2.075235637000000e+04 + -2.077776734528838e+04 + -2.080320167696219e+04 + -2.082865938214449e+04 + -2.085414047244347e+04 + -2.087964496000000e+04 + -2.090517285805777e+04 + -2.093072418166662e+04 + -2.095629894648643e+04 + -2.098189716820891e+04 + -2.100751885999998e+04 + -2.103316403410750e+04 + -2.105883270565323e+04 + -2.108452489048020e+04 + -2.111024060421226e+04 + -2.113597985999998e+04 + -2.116174267011207e+04 + -2.118752904964539e+04 + -2.121333901446366e+04 + -2.123917258027344e+04 + -2.126502976000000e+04 + -2.129091056582378e+04 + -2.131681501406569e+04 + -2.134274311932949e+04 + -2.136869489244911e+04 + -2.139467035000000e+04 + -2.142066951097057e+04 + -2.144669238829770e+04 + -2.147273899344209e+04 + -2.149880933837191e+04 + -2.152490343999998e+04 + -2.155102131698669e+04 + -2.157716298229367e+04 + -2.160332844744082e+04 + -2.162951772437019e+04 + -2.165573082999998e+04 + -2.168196778300156e+04 + -2.170822859627157e+04 + -2.173451328139519e+04 + -2.176082185053812e+04 + -2.178715432000000e+04 + -2.181351070821111e+04 + -2.183989103150391e+04 + -2.186629530288904e+04 + -2.189272353140778e+04 + -2.191917573000000e+04 + -2.194565191497987e+04 + -2.197215210512397e+04 + -2.199867631637375e+04 + -2.202522455969623e+04 + -2.205179684999998e+04 + -2.207839320363563e+04 + -2.210501363148952e+04 + -2.213165814783550e+04 + -2.215832677350680e+04 + -2.218501951999998e+04 + -2.221173639532642e+04 + -2.223847741910094e+04 + -2.226524260850044e+04 + -2.229203197306979e+04 + -2.231884553000000e+04 + -2.234568329890952e+04 + -2.237254528774074e+04 + -2.239943150806158e+04 + -2.242634198094407e+04 + -2.245327672000000e+04 + -2.248023573585785e+04 + -2.250721904853940e+04 + -2.253422667413636e+04 + -2.256125861967753e+04 + -2.258831489999998e+04 + -2.261539553480252e+04 + -2.264250054093014e+04 + -2.266962993052693e+04 + -2.269678371062339e+04 + -2.272396189999998e+04 + -2.275116452153000e+04 + -2.277839158301363e+04 + -2.280564309534358e+04 + -2.283291907950545e+04 + -2.286021955000000e+04 + -2.288754451771620e+04 + -2.291489399812011e+04 + -2.294226800704672e+04 + -2.296966655917324e+04 + -2.299708967000000e+04 + -2.302453735490683e+04 + -2.305200962641978e+04 + -2.307950649734620e+04 + -2.310702798236498e+04 + -2.313457409999998e+04 + -2.316214486856879e+04 + -2.318974029613145e+04 + -2.321736039447026e+04 + -2.324500518448656e+04 + -2.327267467999998e+04 + -2.330036889175501e+04 + -2.332808783850466e+04 + -2.335583153764027e+04 + -2.338360000121357e+04 + -2.341139324000000e+04 + -2.343921126672951e+04 + -2.346705410394532e+04 + -2.349492176951476e+04 + -2.352281427072812e+04 + -2.355073162000000e+04 + -2.357867383414989e+04 + -2.360664093193761e+04 + -2.363463292919098e+04 + -2.366264983684289e+04 + -2.369069166999998e+04 + -2.371875844507638e+04 + -2.374685017193912e+04 + -2.377496686591387e+04 + -2.380310855200050e+04 + -2.383127523999998e+04 + -2.385946693403709e+04 + -2.388768365690810e+04 + -2.391592542840760e+04 + -2.394419225713039e+04 + -2.397248416000000e+04 + -2.400080115691363e+04 + -2.402914325571854e+04 + -2.405751046800998e+04 + -2.408590281513924e+04 + -2.411432031000000e+04 + -2.414276296293371e+04 + -2.417123079796694e+04 + -2.419972383203242e+04 + -2.422824206706797e+04 + -2.425678551999998e+04 + -2.428535421485334e+04 + -2.431394816200073e+04 + -2.434256737430352e+04 + -2.437121187300517e+04 + -2.439988166999998e+04 + -2.442857677325164e+04 + -2.445729720103540e+04 + -2.448604297194451e+04 + -2.451481410082247e+04 + -2.454361060000000e+04 + -2.457243248182022e+04 + -2.460127976431730e+04 + -2.463015246522100e+04 + -2.465905059942621e+04 + -2.468797417999998e+04 + -2.471692321945616e+04 + -2.474589773222362e+04 + -2.477489773480251e+04 + -2.480392324581322e+04 + -2.483297427999998e+04 + -2.486205084917968e+04 + -2.489115296405446e+04 + -2.492028064024748e+04 + -2.494943390068509e+04 + -2.497861275999998e+04 + -2.500781722863925e+04 + -2.503704732334474e+04 + -2.506630305872901e+04 + -2.509558444448151e+04 + -2.512489150000000e+04 + -2.515422424757818e+04 + -2.518358269497819e+04 + -2.521296685328307e+04 + -2.524237674371633e+04 + -2.527181237999998e+04 + -2.530127377273551e+04 + -2.533076094162915e+04 + -2.536027390311031e+04 + -2.538981266594794e+04 + -2.541937724999998e+04 + -2.544896767801531e+04 + -2.547858395406606e+04 + -2.550822608802068e+04 + -2.553789410507042e+04 + -2.556758802000000e+04 + -2.559730784246711e+04 + -2.562705359189478e+04 + -2.565682528525429e+04 + -2.568662293247029e+04 + -2.571644655000000e+04 + -2.574629615713407e+04 + -2.577617176604459e+04 + -2.580607338891535e+04 + -2.583600104095400e+04 + -2.586595473999998e+04 + -2.589593450400127e+04 + -2.592594034522632e+04 + -2.595597227610649e+04 + -2.598603031176017e+04 + -2.601611446999998e+04 + -2.604622476879967e+04 + -2.607636122042706e+04 + -2.610652383730750e+04 + -2.613671263455693e+04 + -2.616692763000000e+04 + -2.619716884161440e+04 + -2.622743628160562e+04 + -2.625772996246335e+04 + -2.628804989951923e+04 + -2.631839611000000e+04 + -2.634876861165059e+04 + -2.637916741999917e+04 + -2.640959254907723e+04 + -2.644004401148305e+04 + -2.647052181999998e+04 + -2.650102598983489e+04 + -2.653155654491748e+04 + -2.656211350103963e+04 + -2.659269685960091e+04 + -2.662330663999998e+04 + -2.665394286925502e+04 + -2.668460555517195e+04 + -2.671529470758218e+04 + -2.674601034670874e+04 + -2.677675249000000e+04 + -2.680752115154265e+04 + -2.683831634157976e+04 + -2.686913807564717e+04 + -2.689998637786448e+04 + -2.693086126000000e+04 + -2.696176272916689e+04 + -2.699269080763921e+04 + -2.702364551500381e+04 + -2.705462686113689e+04 + -2.708563485999998e+04 + -2.711666952809900e+04 + -2.714773087942122e+04 + -2.717881892991400e+04 + -2.720993369901594e+04 + -2.724107519999998e+04 + -2.727224344400496e+04 + -2.730343845029767e+04 + -2.733466023562860e+04 + -2.736590881019403e+04 + -2.739718419000000e+04 + -2.742848639412166e+04 + -2.745981543741902e+04 + -2.749117133427855e+04 + -2.752255410001475e+04 + -2.755396375000000e+04 + -2.758540029934807e+04 + -2.761686376223195e+04 + -2.764835415476579e+04 + -2.767987149599797e+04 + -2.771141579999997e+04 + -2.774298707825893e+04 + -2.777458534547961e+04 + -2.780621061813955e+04 + -2.783786291408934e+04 + -2.786954224999998e+04 + -2.790124864062599e+04 + -2.793298209650868e+04 + -2.796474263269793e+04 + -2.799653027215609e+04 + -2.802834503000000e+04 + -2.806018691678819e+04 + -2.809205594694776e+04 + -2.812395213748840e+04 + -2.815587550739401e+04 + -2.818782607000000e+04 + -2.821980383662756e+04 + -2.825180882556652e+04 + -2.828384105454396e+04 + -2.831590053775406e+04 + -2.834798728999998e+04 + -2.838010132665882e+04 + -2.841224266303304e+04 + -2.844441131398464e+04 + -2.847660729395342e+04 + -2.850883061999998e+04 + -2.854108131015271e+04 + -2.857335937943549e+04 + -2.860566484233479e+04 + -2.863799771378746e+04 + -2.867035801000000e+04 + -2.870274574643904e+04 + -2.873516093256026e+04 + -2.876760358436649e+04 + -2.880007372909855e+04 + -2.883257138000000e+04 + -2.886509654365616e+04 + -2.889764923870952e+04 + -2.893022948372628e+04 + -2.896283729252707e+04 + -2.899547267999998e+04 + -2.902813566168059e+04 + -2.906082625190441e+04 + -2.909354446650575e+04 + -2.912629032389195e+04 + -2.915906383999998e+04 + -2.919186502919167e+04 + -2.922469390650106e+04 + -2.925755048733507e+04 + -2.929043478725063e+04 + -2.932334682000000e+04 + -2.935628660019129e+04 + -2.938925415043921e+04 + -2.942224948806936e+04 + -2.945527261979538e+04 + -2.948832356000000e+04 + -2.952140232838030e+04 + -2.955450894361826e+04 + -2.958764342089699e+04 + -2.962080577090842e+04 + -2.965399600999997e+04 + -2.968721415715336e+04 + -2.972046022629084e+04 + -2.975373423280592e+04 + -2.978703619592538e+04 + -2.982036612999997e+04 + -2.985372404652352e+04 + -2.988710995909819e+04 + -2.992052388535540e+04 + -2.995396584761164e+04 + -2.998743586000000e+04 + -3.002093393306212e+04 + -3.005446008516229e+04 + -3.008801433415196e+04 + -3.012159669410924e+04 + -3.015520717999998e+04 + -3.018884580728562e+04 + -3.022251259030155e+04 + -3.025620754490144e+04 + -3.028993068950620e+04 + -3.032368203999997e+04 + -3.035746161072607e+04 + -3.039126941699663e+04 + -3.042510547393189e+04 + -3.045896979612689e+04 + -3.049286239999998e+04 + -3.052678330335746e+04 + -3.056073252467363e+04 + -3.059471007984014e+04 + -3.062871598061521e+04 + -3.066275024000000e+04 + -3.069681287356475e+04 + -3.073090390293319e+04 + -3.076502334621974e+04 + -3.079917121404217e+04 + -3.083334751999997e+04 + -3.086755228023463e+04 + -3.090178551167921e+04 + -3.093604723225209e+04 + -3.097033746063074e+04 + -3.100465620999998e+04 + -3.103900349175437e+04 + -3.107337932446759e+04 + -3.110778372555016e+04 + -3.114221670819769e+04 + -3.117667828999997e+04 + -3.121116848957679e+04 + -3.124568731744623e+04 + -3.128023478769976e+04 + -3.131481092268889e+04 + -3.134941574000000e+04 + -3.138404925321087e+04 + -3.141871147408727e+04 + -3.145340241670125e+04 + -3.148812209933996e+04 + -3.152287053999997e+04 + -3.155764775577736e+04 + -3.159245376185456e+04 + -3.162728857279384e+04 + -3.166215220315186e+04 + -3.169704466999997e+04 + -3.173196599132658e+04 + -3.176691618227545e+04 + -3.180189525721778e+04 + -3.183690323068162e+04 + -3.187194012000000e+04 + -3.190700594323912e+04 + -3.194210071422084e+04 + -3.197722444868163e+04 + -3.201237716636405e+04 + -3.204755888000000e+04 + -3.208276960047787e+04 + -3.211800935023939e+04 + -3.215327814773632e+04 + -3.218857600158763e+04 + -3.222390292999997e+04 + -3.225925895535199e+04 + -3.229464408973093e+04 + -3.233005834462857e+04 + -3.236550173499735e+04 + -3.240097427999997e+04 + -3.243647600017841e+04 + -3.247200691143220e+04 + -3.250756702669824e+04 + -3.254315635678932e+04 + -3.257877492000000e+04 + -3.261442273792899e+04 + -3.265009982555360e+04 + -3.268580619650297e+04 + -3.272154186523808e+04 + -3.275730685000000e+04 + -3.279310116911321e+04 + -3.282892483177912e+04 + -3.286477785354587e+04 + -3.290066026202923e+04 + -3.293657206999998e+04 + -3.297251328378459e+04 + -3.300848392497173e+04 + -3.304448401407080e+04 + -3.308051356412061e+04 + -3.311657258999998e+04 + -3.315266110752813e+04 + -3.318877912993135e+04 + -3.322492667413289e+04 + -3.326110376297835e+04 + -3.329731041000000e+04 + -3.333354662539115e+04 + -3.336981243131684e+04 + -3.340610784669931e+04 + -3.344243288124504e+04 + -3.347878755000000e+04 + -3.351517187197135e+04 + -3.355158586607149e+04 + -3.358802954742114e+04 + -3.362450292603845e+04 + -3.366100601999997e+04 + -3.369753885113907e+04 + -3.373410143432544e+04 + -3.377069378324004e+04 + -3.380731591267414e+04 + -3.384396783999997e+04 + -3.388064958319757e+04 + -3.391736115628571e+04 + -3.395410257481684e+04 + -3.399087385786547e+04 + -3.402767502000000e+04 + -3.406450607498593e+04 + -3.410136704569621e+04 + -3.413825794940452e+04 + -3.417517879208190e+04 + -3.421212959000000e+04 + -3.424911036577375e+04 + -3.428612113814977e+04 + -3.432316192150666e+04 + -3.436023272579379e+04 + -3.439733356999998e+04 + -3.443446447621852e+04 + -3.447162545467578e+04 + -3.450881651888796e+04 + -3.454603769159935e+04 + -3.458328898999997e+04 + -3.462057042742187e+04 + -3.465788201822977e+04 + -3.469522377879945e+04 + -3.473259572783916e+04 + -3.476999788000000e+04 + -3.480743024920274e+04 + -3.484489285737491e+04 + -3.488238572274076e+04 + -3.491990885516477e+04 + -3.495746227000000e+04 + -3.499504598627476e+04 + -3.503266002163332e+04 + -3.507030439252002e+04 + -3.510797911399110e+04 + -3.514568419999997e+04 + -3.518341966538968e+04 + -3.522118553105182e+04 + -3.525898181605689e+04 + -3.529680853433678e+04 + -3.533466569999997e+04 + -3.537255332834070e+04 + -3.541047143775194e+04 + -3.544842004484196e+04 + -3.548639916273562e+04 + -3.552440881000000e+04 + -3.556244900769237e+04 + -3.560051977192599e+04 + -3.563862111528000e+04 + -3.567675304773126e+04 + -3.571491559000000e+04 + -3.575310876677514e+04 + -3.579133259025522e+04 + -3.582958707123636e+04 + -3.586787222387752e+04 + -3.590618806999997e+04 + -3.594453463328037e+04 + -3.598291192576281e+04 + -3.602131995866808e+04 + -3.605975874687618e+04 + -3.609822830999997e+04 + -3.613672866872384e+04 + -3.617525983663845e+04 + -3.621382182906358e+04 + -3.625241466608051e+04 + -3.629103836000000e+04 + -3.632969292147818e+04 + -3.636837837559645e+04 + -3.640709474306420e+04 + -3.644584203277781e+04 + -3.648462026000000e+04 + -3.652342944409004e+04 + -3.656226960170399e+04 + -3.660114075023598e+04 + -3.664004290875195e+04 + -3.667897608999997e+04 + -3.671794030512006e+04 + -3.675693557547587e+04 + -3.679596192058374e+04 + -3.683501935339895e+04 + -3.687410788999997e+04 + -3.691322754870546e+04 + -3.695237834723054e+04 + -3.699156030212950e+04 + -3.703077342834224e+04 + -3.707001774000000e+04 + -3.710929325203417e+04 + -3.714859998429457e+04 + -3.718793795692067e+04 + -3.722730718808447e+04 + -3.726670768999997e+04 + -3.730613947399677e+04 + -3.734560256273038e+04 + -3.738509697431393e+04 + -3.742462271654350e+04 + -3.746417980999997e+04 + -3.750376828013417e+04 + -3.754338813660564e+04 + -3.758303939267375e+04 + -3.762272207245150e+04 + -3.766243618999997e+04 + -3.770218175518502e+04 + -3.774195878945678e+04 + -3.778176731257176e+04 + -3.782160733741773e+04 + -3.786147888000000e+04 + -3.790138195864309e+04 + -3.794131659132003e+04 + -3.798128279431332e+04 + -3.802128058166662e+04 + -3.806130996999997e+04 + -3.810137097737330e+04 + -3.814146362046005e+04 + -3.818158791697343e+04 + -3.822174388615621e+04 + -3.826193153999997e+04 + -3.830215088938532e+04 + -3.834240195971708e+04 + -3.838268477130731e+04 + -3.842299933188884e+04 + -3.846334565999997e+04 + -3.850372377842891e+04 + -3.854413369633216e+04 + -3.858457542816681e+04 + -3.862504900090371e+04 + -3.866555443000000e+04 + -3.870609172486966e+04 + -3.874666090332934e+04 + -3.878726198409722e+04 + -3.882789498399841e+04 + -3.886855991999997e+04 + -3.890925680946781e+04 + -3.894998567054054e+04 + -3.899074651957592e+04 + -3.903153937021765e+04 + -3.907236423999997e+04 + -3.911322114736439e+04 + -3.915411010384250e+04 + -3.919503112747372e+04 + -3.923598424716172e+04 + -3.927696946999997e+04 + -3.931798680038228e+04 + -3.935903628964794e+04 + -3.940011793259103e+04 + -3.944123164809230e+04 + -3.948237770000000e+04 + -3.952355620675491e+04 + -3.956476584662273e+04 + -3.960600801403134e+04 + -3.964728735507886e+04 + -3.968859104999997e+04 + 1.819886919039960e+01 + 1.816405130921966e+01 + 1.812918280091599e+01 + 1.809426424653407e+01 + 1.805929622711938e+01 + 1.802427932371738e+01 + 1.798921411737356e+01 + 1.795410118913339e+01 + 1.791894112004234e+01 + 1.788373449114589e+01 + 1.784848188348950e+01 + 1.781318387811866e+01 + 1.777784105607885e+01 + 1.774245399841551e+01 + 1.770702328617416e+01 + 1.767154950040025e+01 + 1.763603322213927e+01 + 1.760047503243666e+01 + 1.756487551233793e+01 + 1.752923524288855e+01 + 1.749355480513398e+01 + 1.745783478011969e+01 + 1.742207574889119e+01 + 1.738627829249391e+01 + 1.735044299197335e+01 + 1.731457042837498e+01 + 1.727866118274428e+01 + 1.724271583612671e+01 + 1.720673496956776e+01 + 1.717071916411290e+01 + 1.713466900080759e+01 + 1.709858506069732e+01 + 1.706246792482757e+01 + 1.702631817424381e+01 + 1.699013638999150e+01 + 1.695392315311613e+01 + 1.691767904466317e+01 + 1.688140464567809e+01 + 1.684510053720637e+01 + 1.680876730029348e+01 + 1.677240551598491e+01 + 1.673601576532611e+01 + 1.669959862936258e+01 + 1.666315468913977e+01 + 1.662668452570318e+01 + 1.659018872009826e+01 + 1.655366785337049e+01 + 1.651712250656536e+01 + 1.648055326072833e+01 + 1.644396069690488e+01 + 1.640734539614049e+01 + 1.637070793948063e+01 + 1.633404890797076e+01 + 1.629736888265638e+01 + 1.626066844458294e+01 + 1.622394817479593e+01 + 1.618720865434082e+01 + 1.615045046426309e+01 + 1.611367418560821e+01 + 1.607688039942165e+01 + 1.604006968674890e+01 + 1.600324262863542e+01 + 1.596639980612668e+01 + 1.592954180026817e+01 + 1.589266919210536e+01 + 1.585578256268371e+01 + 1.581888249304872e+01 + 1.578196956424585e+01 + 1.574504435732057e+01 + 1.570810745331836e+01 + 1.567115943328470e+01 + 1.563420087826506e+01 + 1.559723236930490e+01 + 1.556025448744972e+01 + 1.552326781374499e+01 + 1.548627292923617e+01 + 1.544927041496875e+01 + 1.541226085198818e+01 + 1.537524482133997e+01 + 1.533822290406956e+01 + 1.530119568122245e+01 + 1.526416373384410e+01 + 1.522712764298000e+01 + 1.519008798967561e+01 + 1.515304535497640e+01 + 1.511600031992786e+01 + 1.507895346557546e+01 + 1.504190537296467e+01 + 1.500485662314096e+01 + 1.496780779714983e+01 + 1.493075947603672e+01 + 1.489371224084713e+01 + 1.485666667262652e+01 + 1.481962335242037e+01 + 1.478258286127416e+01 + 1.474554578023335e+01 + 1.470851269034343e+01 + 1.467148417264987e+01 + 1.463446080819813e+01 + 1.459744317803371e+01 + 1.456043186320207e+01 + 1.452342744474869e+01 + 1.448643050371903e+01 + 1.444944162115858e+01 + 1.441246137811282e+01 + 1.437549035562720e+01 + 1.433852913474722e+01 + 1.430157829651834e+01 + 1.426463842198604e+01 + 1.422771009219579e+01 + 1.419079388819307e+01 + 1.415389039102334e+01 + 1.411700018173210e+01 + 1.408012384136481e+01 + 1.404326195096694e+01 + 1.400641509158398e+01 + 1.396958384426139e+01 + 1.393276879004464e+01 + 1.389597050997923e+01 + 1.385918958511061e+01 + 1.382242659648426e+01 + 1.378568212514566e+01 + 1.374895675214029e+01 + 1.371225105851361e+01 + 1.367556562531110e+01 + 1.363890103357824e+01 + 1.360225786436050e+01 + 1.356563669870335e+01 + 1.352903811765228e+01 + 1.349246270225274e+01 + 1.345591103355023e+01 + 1.341938369259021e+01 + 1.338288126041816e+01 + 1.334640431807955e+01 + 1.330995344661985e+01 + 1.327352922708455e+01 + 1.323713224051912e+01 + 1.320076306796902e+01 + 1.316442229047974e+01 + 1.312811048909675e+01 + 1.309182824486553e+01 + 1.305557613883154e+01 + 1.301935475204027e+01 + 1.298316466553718e+01 + 1.294700646036776e+01 + 1.291088071757748e+01 + 1.287478801821181e+01 + 1.283872894331622e+01 + 1.280270407393619e+01 + 1.276671399111720e+01 + 1.273075927590472e+01 + 1.269484050934423e+01 + 1.265895827248119e+01 + 1.262311314636109e+01 + 1.258730571202939e+01 + 1.255153655053158e+01 + 1.251580624291313e+01 + 1.248011537021950e+01 + 1.244446451349619e+01 + 1.240885425378865e+01 + 1.237328517214237e+01 + 1.233775784960283e+01 + 1.230227286721548e+01 + 1.226683080602582e+01 + 1.223143224707931e+01 + 1.219607777142142e+01 + 1.216076796009764e+01 + 1.212550339415344e+01 + 1.209028465463429e+01 + 1.205511232258567e+01 + 1.201998697905305e+01 + 1.198490920508190e+01 + 1.194987958171770e+01 + 1.191489869000593e+01 + 1.187996711099206e+01 + 1.184508542572157e+01 + 1.181025421523992e+01 + 1.177547406059259e+01 + 1.174074554282507e+01 + 1.170606924298281e+01 + 1.167144574211130e+01 + 1.163687562125602e+01 + 1.160235946146243e+01 + 1.156789784377601e+01 + 1.153349134924223e+01 + 1.149914055890657e+01 + 1.146484605381452e+01 + 1.143060841501152e+01 + 1.139642822354308e+01 + 1.136230606045464e+01 + 1.132824250679170e+01 + 1.129423814359974e+01 + 1.126029355192421e+01 + 1.122640931281059e+01 + 1.119258600730437e+01 + 1.115882421645102e+01 + 1.112512452129600e+01 + 1.109148750288479e+01 + 1.105791374226288e+01 + 1.102440382047573e+01 + 1.099095831856882e+01 + 1.095757781758762e+01 + 1.092426289857761e+01 + 1.089101414258426e+01 + 1.085783213065305e+01 + 1.082471744382945e+01 + 1.079167066315892e+01 + 1.075869236968697e+01 + 1.072578314445905e+01 + 1.069294356852064e+01 + 1.066017422291721e+01 + 1.062747568869424e+01 + 1.059484854689720e+01 + 1.056229337857157e+01 + 1.052981076476282e+01 + 1.049740128651643e+01 + 1.046506552487787e+01 + 1.043280406089261e+01 + 1.040061747560614e+01 + 1.036850635006392e+01 + 1.033647126531143e+01 + 1.030451280239414e+01 + 1.027263154235754e+01 + 1.024082806624708e+01 + 1.020910295510825e+01 + 1.017745678998653e+01 + 1.014589015192738e+01 + 1.011440362197629e+01 + 1.008299778117872e+01 + 1.005167321058014e+01 + 1.002043049122605e+01 + 9.989270204161905e+00 + 9.958192930433185e+00 + 9.927199251085362e+00 + 9.896289747163912e+00 + 9.865464999714312e+00 + 9.834725589782032e+00 + 9.804072098412551e+00 + 9.773505106651340e+00 + 9.743025195543877e+00 + 9.712632946135633e+00 + 9.682328939472086e+00 + 9.652113756598707e+00 + 9.621987978560973e+00 + 9.591952186404358e+00 + 9.562006961174337e+00 + 9.532152883916382e+00 + 9.502390535675973e+00 + 9.472720497498580e+00 + 9.443143350429677e+00 + 9.413659675514742e+00 + 9.384270053799249e+00 + 9.354975066328668e+00 + 9.325775294148480e+00 + 9.296671318304156e+00 + 9.267663719841170e+00 + 9.238753079804999e+00 + 9.209939979241115e+00 + 9.181224999194994e+00 + 9.152608720712111e+00 + 9.124091724837941e+00 + 9.095674592617954e+00 + 9.067357905097630e+00 + 9.039142243322441e+00 + 9.011028188337864e+00 + 8.983016292445305e+00 + 8.955106689123129e+00 + 8.927299195109086e+00 + 8.899593619314148e+00 + 8.871989770649284e+00 + 8.844487458025464e+00 + 8.817086490353660e+00 + 8.789786676544839e+00 + 8.762587825509975e+00 + 8.735489746160036e+00 + 8.708492247405990e+00 + 8.681595138158814e+00 + 8.654798227329470e+00 + 8.628101323828931e+00 + 8.601504236568170e+00 + 8.575006774458155e+00 + 8.548608746409855e+00 + 8.522309961334242e+00 + 8.496110228142285e+00 + 8.470009355744955e+00 + 8.444007153053219e+00 + 8.418103428978053e+00 + 8.392297992430423e+00 + 8.366590652321301e+00 + 8.340981217561657e+00 + 8.315469497062459e+00 + 8.290055299734679e+00 + 8.264738434489287e+00 + 8.239518710237252e+00 + 8.214395935889545e+00 + 8.189369920357137e+00 + 8.164440472550996e+00 + 8.139607401382095e+00 + 8.114870515761401e+00 + 8.090229624599887e+00 + 8.065684536808520e+00 + 8.041235061298275e+00 + 8.016881006980118e+00 + 7.992622182765018e+00 + 7.968458397563950e+00 + 7.944389460287880e+00 + 7.920415179847782e+00 + 7.896535365154623e+00 + 7.872749825119373e+00 + 7.849058368653004e+00 + 7.825460804666484e+00 + 7.801956942070785e+00 + 7.778546589776878e+00 + 7.755229556695729e+00 + 7.732005651738313e+00 + 7.708874683815599e+00 + 7.685836461838553e+00 + 7.662890794718152e+00 + 7.640037491365358e+00 + 7.617276360691148e+00 + 7.594607211606489e+00 + 7.572029853022352e+00 + 7.549544093849708e+00 + 7.527149742999527e+00 + 7.504846609382777e+00 + 7.482634501910429e+00 + 7.460513229493455e+00 + 7.438482601042820e+00 + 7.416542425469502e+00 + 7.394692511684465e+00 + 7.372932668598682e+00 + 7.351262705123121e+00 + 7.329682430168755e+00 + 7.308191652646553e+00 + 7.286790181467484e+00 + 7.265477825542517e+00 + 7.244254393782626e+00 + 7.223119695098779e+00 + 7.202073538401945e+00 + 7.181115732603097e+00 + 7.160246086613204e+00 + 7.139464409343233e+00 + 7.118770509704159e+00 + 7.098164196606950e+00 + 7.077645278962576e+00 + 7.057213565682006e+00 + 7.036868865676214e+00 + 7.016610987856166e+00 + 6.996439741132834e+00 + 6.976354934417186e+00 + 6.956356376620197e+00 + 6.936443876652832e+00 + 6.916617243426063e+00 + 6.896876285850862e+00 + 6.877220812838198e+00 + 6.857650633299039e+00 + 6.838165556144358e+00 + 6.818765390285123e+00 + 6.799449944632306e+00 + 6.780219028096876e+00 + 6.761072449589803e+00 + 6.742010018022058e+00 + 6.723031542304612e+00 + 6.704136831348434e+00 + 6.685325694064492e+00 + 6.666597939363759e+00 + 6.647953376157203e+00 + 6.629391813355797e+00 + 6.610913059870509e+00 + 6.592516924612310e+00 + 6.574203216492170e+00 + 6.555971744421058e+00 + 6.537822317309946e+00 + 6.519754744069803e+00 + 6.501768833611600e+00 + 6.483864394846306e+00 + 6.466041236684891e+00 + 6.448299168038327e+00 + 6.430637997817582e+00 + 6.413057534933630e+00 + 6.395557588297437e+00 + 6.378137966819973e+00 + 6.360798479412210e+00 + 6.343538934985117e+00 + 6.326359142449666e+00 + 6.309258910716826e+00 + 6.292238048697567e+00 + 6.275296365302859e+00 + 6.258433669443673e+00 + 6.241649770030978e+00 + 6.224944475975745e+00 + 6.208317596188945e+00 + 6.191768939581546e+00 + 6.175298315064517e+00 + 6.158905531548833e+00 + 6.142590397945462e+00 + 6.126352723165372e+00 + 6.110192316119535e+00 + 6.094108985718921e+00 + 6.078102540874499e+00 + 6.062172790497243e+00 + 6.046319543498117e+00 + 6.030542608788095e+00 + 6.014841795278149e+00 + 5.999216911879244e+00 + 5.983667767502356e+00 + 5.968194171058448e+00 + 5.952795931458497e+00 + 5.937472857613470e+00 + 5.922224758434336e+00 + 5.907051442832068e+00 + 5.891952719717633e+00 + 5.876928398002004e+00 + 5.861978286596150e+00 + 5.847102194411042e+00 + 5.832299930357648e+00 + 5.817571303346941e+00 + 5.802916122289888e+00 + 5.788334196097460e+00 + 5.773825333680629e+00 + 5.759389343950365e+00 + 5.745026035817635e+00 + 5.730735218193414e+00 + 5.716516699988668e+00 + 5.702370290114368e+00 + 5.688295797481486e+00 + 5.674293031000990e+00 + 5.660361799583851e+00 + 5.646501912141039e+00 + 5.632713177583526e+00 + 5.618995404822279e+00 + 5.605348402768269e+00 + 5.591771980332467e+00 + 5.578265946425844e+00 + 5.564830109959368e+00 + 5.551464279844009e+00 + 5.538168264990741e+00 + 5.524941874310529e+00 + 5.511784916714348e+00 + 5.498697201113163e+00 + 5.485678536417949e+00 + 5.472728731539672e+00 + 5.459847595389306e+00 + 5.447031950668924e+00 + 5.434258417587328e+00 + 5.421509378931341e+00 + 5.408790202589383e+00 + 5.396101725502927e+00 + 5.383442552149385e+00 + 5.370812984345576e+00 + 5.358213038980171e+00 + 5.345642546622406e+00 + 5.333101463094469e+00 + 5.320589727671893e+00 + 5.308107264570896e+00 + 5.295654006874094e+00 + 5.283229887334054e+00 + 5.270834837715376e+00 + 5.258468789944041e+00 + 5.246131676000384e+00 + 5.233823428164784e+00 + 5.221543979540164e+00 + 5.209293263422158e+00 + 5.197071212820756e+00 + 5.184877759775030e+00 + 5.172712837552656e+00 + 5.160576380473933e+00 + 5.148468322098453e+00 + 5.136388595958436e+00 + 5.124337135726472e+00 + 5.112313875048248e+00 + 5.100318748362747e+00 + 5.088351690727316e+00 + 5.076412636057685e+00 + 5.064501518839616e+00 + 5.052618274474592e+00 + 5.040762837425790e+00 + 5.028935142799786e+00 + 5.017135126690616e+00 + 5.005362723409764e+00 + 4.993617868159293e+00 + 4.981900498164465e+00 + 4.970210548621045e+00 + 4.958547954855285e+00 + 4.946912653797631e+00 + 4.935304581602165e+00 + 4.923723674430540e+00 + 4.912169869219803e+00 + 4.900643102722201e+00 + 4.889143311682699e+00 + 4.877670433140317e+00 + 4.866224404407401e+00 + 4.854805162838305e+00 + 4.843412645620055e+00 + 4.832046790470948e+00 + 4.820707535433044e+00 + 4.809394818449872e+00 + 4.798108577205163e+00 + 4.786848749644187e+00 + 4.775615274885523e+00 + 4.764408091170769e+00 + 4.753227136475494e+00 + 4.742072350593207e+00 + 4.730943672320340e+00 + 4.719841039761676e+00 + 4.708764392793848e+00 + 4.697713670947889e+00 + 4.686688813308958e+00 + 4.675689760077749e+00 + 4.664716450776882e+00 + 4.653768824355144e+00 + 4.642846821849820e+00 + 4.631950383864691e+00 + 4.621079449911801e+00 + 4.610233960271208e+00 + 4.599413855814052e+00 + 4.588619077726644e+00 + 4.577849566594633e+00 + 4.567105263324451e+00 + 4.556386109499332e+00 + 4.545692045920192e+00 + 4.535023013830533e+00 + 4.524378955558838e+00 + 4.513759812087895e+00 + 4.503165524982657e+00 + 4.492596037765430e+00 + 4.482051291649467e+00 + 4.471531227881555e+00 + 4.461035790191556e+00 + 4.450564920902143e+00 + 4.440118561957067e+00 + 4.429696656605228e+00 + 4.419299148008472e+00 + 4.408925979093191e+00 + 4.398577092681390e+00 + 4.388252432408600e+00 + 4.377951941955149e+00 + 4.367675563647617e+00 + 4.357423241911437e+00 + 4.347194921954801e+00 + 4.336990545878941e+00 + 4.326810057907454e+00 + 4.316653403787664e+00 + 4.306520526395858e+00 + 4.296411370095723e+00 + 4.286325880845187e+00 + 4.276264002847886e+00 + 4.266225680614548e+00 + 4.256210859410026e+00 + 4.246219484255977e+00 + 4.236251500111860e+00 + 4.226306852214246e+00 + 4.216385487075638e+00 + 4.206487350454588e+00 + 4.196612386873075e+00 + 4.186760542346591e+00 + 4.176931763412669e+00 + 4.167125996517556e+00 + 4.157343187931778e+00 + 4.147583283659849e+00 + 4.137846229598449e+00 + 4.128131973158434e+00 + 4.118440461620333e+00 + 4.108771640965568e+00 + 4.099125458381889e+00 + 4.089501861348100e+00 + 4.079900796648449e+00 + 4.070322211621146e+00 + 4.060766054068578e+00 + 4.051232271987449e+00 + 4.041720812903752e+00 + 4.032231624389123e+00 + 4.022764654839604e+00 + 4.013319852102482e+00 + 4.003897163974346e+00 + 3.994496539375360e+00 + 3.985117927005318e+00 + 3.975761275162846e+00 + 3.966426531955261e+00 + 3.957113646635731e+00 + 3.947822569087183e+00 + 3.938553247905866e+00 + 3.929305631685672e+00 + 3.920079669524097e+00 + 3.910875311427285e+00 + 3.901692507178291e+00 + 3.892531206204140e+00 + 3.883391358396833e+00 + 3.874272913657344e+00 + 3.865175821793835e+00 + 3.856100032879644e+00 + 3.847045497225832e+00 + 3.838012165320722e+00 + 3.828999987558789e+00 + 3.820008914413926e+00 + 3.811038896595444e+00 + 3.802089885254187e+00 + 3.793161831237620e+00 + 3.784254684890362e+00 + 3.775368398252875e+00 + 3.766502923100440e+00 + 3.757658209579520e+00 + 3.748834209295840e+00 + 3.740030874433959e+00 + 3.731248156753105e+00 + 3.722486008117639e+00 + 3.713744380387517e+00 + 3.705023225280349e+00 + 3.696322495070079e+00 + 3.687642142318910e+00 + 3.678982119432947e+00 + 3.670342378801804e+00 + 3.661722872867589e+00 + 3.653123554235752e+00 + 3.644544376023881e+00 + 3.635985291634798e+00 + 3.627446254192749e+00 + 3.618927216218316e+00 + 3.610428130335504e+00 + 3.601948951051534e+00 + 3.593489632231203e+00 + 3.585050126838500e+00 + 3.576630388153148e+00 + 3.568230370457688e+00 + 3.559850028500160e+00 + 3.551489315016799e+00 + 3.543148183918080e+00 + 3.534826590807976e+00 + 3.526524489935861e+00 + 3.518241835011243e+00 + 3.509978579991082e+00 + 3.501734680809670e+00 + 3.493510092697708e+00 + 3.485304769188242e+00 + 3.477118665289576e+00 + 3.468951736765370e+00 + 3.460803939385451e+00 + 3.452675227557384e+00 + 3.444565556219660e+00 + 3.436474882078371e+00 + 3.428403160505571e+00 + 3.420350346590145e+00 + 3.412316396304707e+00 + 3.404301265792477e+00 + 3.396304911176187e+00 + 3.388327288491305e+00 + 3.380368354160161e+00 + 3.372428064623584e+00 + 3.364506375833607e+00 + 3.356603244211646e+00 + 3.348718626640740e+00 + 3.340852480236101e+00 + 3.333004761693424e+00 + 3.325175427644580e+00 + 3.317364435527293e+00 + 3.309571742493616e+00 + 3.301797305408617e+00 + 3.294041081414062e+00 + 3.286303028194412e+00 + 3.278583103726798e+00 + 3.270881265443555e+00 + 3.263197471011956e+00 + 3.255531678390248e+00 + 3.247883845209004e+00 + 3.240253929642225e+00 + 3.232641890347850e+00 + 3.225047684908113e+00 + 3.217471271425511e+00 + 3.209912608923088e+00 + 3.202371655667555e+00 + 3.194848370181972e+00 + 3.187342711658790e+00 + 3.179854638881827e+00 + 3.172384110380890e+00 + 3.164931084707051e+00 + 3.157495521384956e+00 + 3.150077380058776e+00 + 3.142676619877814e+00 + 3.135293200073600e+00 + 3.127927079946843e+00 + 3.120578218905895e+00 + 3.113246577218404e+00 + 3.105932114937815e+00 + 3.098634790846833e+00 + 3.091354565058342e+00 + 3.084091398271724e+00 + 3.076845250485478e+00 + 3.069616081755534e+00 + 3.062403852244847e+00 + 3.055208522175611e+00 + 3.048030052549899e+00 + 3.040868404439169e+00 + 3.033723537524932e+00 + 3.026595412527113e+00 + 3.019483991059011e+00 + 3.012389234177664e+00 + 3.005311102428361e+00 + 2.998249556405217e+00 + 2.991204558170310e+00 + 2.984176069441633e+00 + 2.977164051262350e+00 + 2.970168464749357e+00 + 2.963189271462946e+00 + 2.956226433370632e+00 + 2.949279912203107e+00 + 2.942349669912605e+00 + 2.935435668735732e+00 + 2.928537870478263e+00 + 2.921656236941307e+00 + 2.914790730227295e+00 + 2.907941313056430e+00 + 2.901107948114753e+00 + 2.894290597705669e+00 + 2.887489224186201e+00 + 2.880703790004707e+00 + 2.873934257778331e+00 + 2.867180590721052e+00 + 2.860442752157053e+00 + 2.853720705060128e+00 + 2.847014412004529e+00 + 2.840323835735203e+00 + 2.833648939802342e+00 + 2.826989688360529e+00 + 2.820346045051714e+00 + 2.813717971838249e+00 + 2.807105432809830e+00 + 2.800508392739872e+00 + 2.793926814285955e+00 + 2.787360661385112e+00 + 2.780809898806732e+00 + 2.774274490318202e+00 + 2.767754399418414e+00 + 2.761249589980850e+00 + 2.754760027276096e+00 + 2.748285675987487e+00 + 2.741826499952791e+00 + 2.735382462817888e+00 + 2.728953529693038e+00 + 2.722539666591989e+00 + 2.716140837199994e+00 + 2.709757005928732e+00 + 2.703388138477217e+00 + 2.697034199719776e+00 + 2.690695154612969e+00 + 2.684370968516638e+00 + 2.678061606722120e+00 + 2.671767034388748e+00 + 2.665487216663756e+00 + 2.659222119420964e+00 + 2.652971708466898e+00 + 2.646735949170681e+00 + 2.640514807328682e+00 + 2.634308248813400e+00 + 2.628116239351709e+00 + 2.621938745026414e+00 + 2.615775731978081e+00 + 2.609627166192403e+00 + 2.603493014125890e+00 + 2.597373242133807e+00 + 2.591267815972944e+00 + 2.585176702619338e+00 + 2.579099869106871e+00 + 2.573037281022092e+00 + 2.566988905295047e+00 + 2.560954709471109e+00 + 2.554934660124372e+00 + 2.548928723658388e+00 + 2.542936866838776e+00 + 2.536959057454498e+00 + 2.530995262744329e+00 + 2.525045449466102e+00 + 2.519109584724339e+00 + 2.513187636248425e+00 + 2.507279571988880e+00 + 2.501385358975255e+00 + 2.495504964649074e+00 + 2.489638357011514e+00 + 2.483785503877440e+00 + 2.477946372993181e+00 + 2.472120932153270e+00 + 2.466309149445497e+00 + 2.460510993028623e+00 + 2.454726431004756e+00 + 2.448955431279121e+00 + 2.443197962222979e+00 + 2.437453992749473e+00 + 2.431723490873920e+00 + 2.426006424702946e+00 + 2.420302763016215e+00 + 2.414612474849150e+00 + 2.408935529060812e+00 + 2.403271894158963e+00 + 2.397621539164549e+00 + 2.391984432987164e+00 + 2.386360544006294e+00 + 2.380749841635097e+00 + 2.375152295549876e+00 + 2.369567874852914e+00 + 2.363996548806182e+00 + 2.358438286639424e+00 + 2.352893057314327e+00 + 2.347360830870365e+00 + 2.341841577523073e+00 + 2.336335266205249e+00 + 2.330841866367291e+00 + 2.325361348038680e+00 + 2.319893681430557e+00 + 2.314438836350213e+00 + 2.308996782525400e+00 + 2.303567490482044e+00 + 2.298150930506590e+00 + 2.292747072570897e+00 + 2.287355886755380e+00 + 2.281977343203661e+00 + 2.276611412298537e+00 + 2.271258065216148e+00 + 2.265917272602903e+00 + 2.260589004572198e+00 + 2.255273232290290e+00 + 2.249969926489583e+00 + 2.244679057245269e+00 + 2.239400595715412e+00 + 2.234134513404378e+00 + 2.228880781619142e+00 + 2.223639370658599e+00 + 2.218410251587366e+00 + 2.213193396784469e+00 + 2.207988776668006e+00 + 2.202796362022329e+00 + 2.197616125439223e+00 + 2.192448038696543e+00 + 2.187292072961057e+00 + 2.182148199232985e+00 + 2.177016389630072e+00 + 2.171896616273634e+00 + 2.166788850281173e+00 + 2.161693063906081e+00 + 2.156609229682959e+00 + 2.151537319229026e+00 + 2.146477304323076e+00 + 2.141429157241363e+00 + 2.136392850965788e+00 + 2.131368357474257e+00 + 2.126355648357996e+00 + 2.121354696293322e+00 + 2.116365474412895e+00 + 2.111387955644702e+00 + 2.106422111701483e+00 + 2.101467915161587e+00 + 2.096525339256323e+00 + 2.091594356269759e+00 + 2.086674939419586e+00 + 2.081767062556874e+00 + 2.076870697792070e+00 + 2.071985817585338e+00 + 2.067112395385072e+00 + 2.062250405333861e+00 + 2.057399820685575e+00 + 2.052560613690088e+00 + 2.047732757766644e+00 + 2.042916226752948e+00 + 2.038110994473384e+00 + 2.033317034456518e+00 + 2.028534320143143e+00 + 2.023762825026766e+00 + 2.019002522786289e+00 + 2.014253387371010e+00 + 2.009515392980107e+00 + 2.004788513366984e+00 + 2.000072722331970e+00 + 1.995367994084281e+00 + 1.990674302528751e+00 + 1.985991621875054e+00 + 1.981319927135009e+00 + 1.976659192144684e+00 + 1.972009390577169e+00 + 1.967370497271926e+00 + 1.962742487042732e+00 + 1.958125334423246e+00 + 1.953519013586483e+00 + 1.948923499307053e+00 + 1.944338766657414e+00 + 1.939764790288013e+00 + 1.935201544608222e+00 + 1.930649004305472e+00 + 1.926107145248571e+00 + 1.921575942429786e+00 + 1.917055370205972e+00 + 1.912545403920843e+00 + 1.908046018818900e+00 + 1.903557190023903e+00 + 1.899078893306255e+00 + 1.894611103753838e+00 + 1.890153795996532e+00 + 1.885706946418488e+00 + 1.881270530851602e+00 + 1.876844524133795e+00 + 1.872428902057808e+00 + 1.868023640555410e+00 + 1.863628715350075e+00 + 1.859244102235784e+00 + 1.854869776995271e+00 + 1.850505715382929e+00 + 1.846151893336109e+00 + 1.841808287113597e+00 + 1.837474873250078e+00 + 1.833151627500553e+00 + 1.828838525627810e+00 + 1.824535544058799e+00 + 1.820242659570220e+00 + 1.815959848693184e+00 + 1.811687087278560e+00 + 1.807424351697017e+00 + 1.803171618832717e+00 + 1.798928865872756e+00 + 1.794696068965575e+00 + 1.790473204047284e+00 + 1.786260248130819e+00 + 1.782057178544553e+00 + 1.777863972462110e+00 + 1.773680606381003e+00 + 1.769507057021776e+00 + 1.765343301422396e+00 + 1.761189316819223e+00 + 1.757045080431908e+00 + 1.752910569457795e+00 + 1.748785761158555e+00 + 1.744670632638435e+00 + 1.740565161064786e+00 + 1.736469324420783e+00 + 1.732383100261040e+00 + 1.728306465595185e+00 + 1.724239397824929e+00 + 1.720181874717039e+00 + 1.716133874165168e+00 + 1.712095373335323e+00 + 1.708066350172305e+00 + 1.704046783495335e+00 + 1.700036650108550e+00 + 1.696035927584721e+00 + 1.692044595228792e+00 + 1.688062630443701e+00 + 1.684090010658294e+00 + 1.680126714513943e+00 + 1.676172720475745e+00 + 1.672228006742128e+00 + 1.668292551293985e+00 + 1.664366332353613e+00 + 1.660449328407859e+00 + 1.656541518177628e+00 + 1.652642880144113e+00 + 1.648753392536404e+00 + 1.644873033459887e+00 + 1.641001782122826e+00 + 1.637139617814172e+00 + 1.633286518510287e+00 + 1.629442462986198e+00 + 1.625607430332010e+00 + 1.621781398816242e+00 + 1.617964347766720e+00 + 1.614156256896447e+00 + 1.610357104501046e+00 + 1.606566869528149e+00 + 1.602785531410984e+00 + 1.599013068753329e+00 + 1.595249460964023e+00 + 1.591494688099418e+00 + 1.587748729316499e+00 + 1.584011563661260e+00 + 1.580283170366302e+00 + 1.576563528988570e+00 + 1.572852618951484e+00 + 1.569150419635379e+00 + 1.565456911345500e+00 + 1.561772073862832e+00 + 1.558095886092752e+00 + 1.554428327545355e+00 + 1.550769378486889e+00 + 1.547119019605569e+00 + 1.543477229774924e+00 + 1.539843988467248e+00 + 1.536219276909035e+00 + 1.532603074921508e+00 + 1.528995362108325e+00 + 1.525396118748853e+00 + 1.521805324624735e+00 + 1.518222960029189e+00 + 1.514649006474386e+00 + 1.511083443428444e+00 + 1.507526250258141e+00 + 1.503977408416516e+00 + 1.500436898413773e+00 + 1.496904700394939e+00 + 1.493380795245864e+00 + 1.489865163193006e+00 + 1.486357784560608e+00 + 1.482858641108495e+00 + 1.479367713055452e+00 + 1.475884980161266e+00 + 1.472410424507970e+00 + 1.468944026943859e+00 + 1.465485767394345e+00 + 1.462035627142284e+00 + 1.458593587684006e+00 + 1.455159630175685e+00 + 1.451733734815932e+00 + 1.448315882934573e+00 + 1.444906056735074e+00 + 1.441504236540235e+00 + 1.438110403156542e+00 + 1.434724538391589e+00 + 1.431346623689521e+00 + 1.427976640530080e+00 + 1.424614570482120e+00 + 1.421260394583763e+00 + 1.417914094214416e+00 + 1.414575651360096e+00 + 1.411245047472556e+00 + 1.407922264020345e+00 + 1.404607282835409e+00 + 1.401300085863839e+00 + 1.398000654669480e+00 + 1.394708970355802e+00 + 1.391425015768138e+00 + 1.388148773421020e+00 + 1.384880223867722e+00 + 1.381619349200565e+00 + 1.378366132070768e+00 + 1.375120554406545e+00 + 1.371882598139520e+00 + 1.368652245409923e+00 + 1.365429478679455e+00 + 1.362214280063096e+00 + 1.359006631544336e+00 + 1.355806515436745e+00 + 1.352613914349998e+00 + 1.349428810943258e+00 + 1.346251187518860e+00 + 1.343081026346772e+00 + 1.339918309785753e+00 + 1.336763020411036e+00 + 1.333615141050152e+00 + 1.330474654669161e+00 + 1.327341544046787e+00 + 1.324215791384803e+00 + 1.321097378844990e+00 + 1.317986290481943e+00 + 1.314882509034005e+00 + 1.311786015892630e+00 + 1.308696795174431e+00 + 1.305614830505543e+00 + 1.302540104058677e+00 + 1.299472598550161e+00 + 1.296412297281467e+00 + 1.293359183920592e+00 + 1.290313241355424e+00 + 1.287274452437336e+00 + 1.284242800425524e+00 + 1.281218268758570e+00 + 1.278200840971845e+00 + 1.275190500607243e+00 + 1.272187230813499e+00 + 1.269191014801793e+00 + 1.266201836184906e+00 + 1.263219678244913e+00 + 1.260244524601725e+00 + 1.257276359774731e+00 + 1.254315166659556e+00 + 1.251360928048363e+00 + 1.248413628680403e+00 + 1.245473252809453e+00 + 1.242539783866816e+00 + 1.239613204552696e+00 + 1.236693499248504e+00 + 1.233780652886690e+00 + 1.230874648458874e+00 + 1.227975469917747e+00 + 1.225083101914005e+00 + 1.222197528080320e+00 + 1.219318732110022e+00 + 1.216446698153004e+00 + 1.213581411119631e+00 + 1.210722855169846e+00 + 1.207871013783067e+00 + 1.205025871252235e+00 + 1.202187412198626e+00 + 1.199355621285526e+00 + 1.196530482820713e+00 + 1.193711981112556e+00 + 1.190900100540550e+00 + 1.188094825240966e+00 + 1.185296139829988e+00 + 1.182504029475636e+00 + 1.179718478336080e+00 + 1.176939470878376e+00 + 1.174166992368249e+00 + 1.171401026812090e+00 + 1.168641558834780e+00 + 1.165888574598542e+00 + 1.163142057955574e+00 + 1.160401992993886e+00 + 1.157668365957760e+00 + 1.154941161055026e+00 + 1.152220362585152e+00 + 1.149505957086653e+00 + 1.146797929075238e+00 + 1.144096262593592e+00 + 1.141400943461258e+00 + 1.138711957183691e+00 + 1.136029288721929e+00 + 1.133352922646698e+00 + 1.130682844729473e+00 + 1.128019040871752e+00 + 1.125361495026299e+00 + 1.122710192813904e+00 + 1.120065120718956e+00 + 1.117426263156838e+00 + 1.114793605478939e+00 + 1.112167133798269e+00 + 1.109546832911627e+00 + 1.106932688501257e+00 + 1.104324686965964e+00 + 1.101722813149718e+00 + 1.099127052563592e+00 + 1.096537391606932e+00 + 1.093953815681381e+00 + 1.091376310184498e+00 + 1.088804860939953e+00 + 1.086239454210304e+00 + 1.083680075729654e+00 + 1.081126710640132e+00 + 1.078579345517792e+00 + 1.076037966489376e+00 + 1.073502558540405e+00 + 1.070973108232868e+00 + 1.068449602380304e+00 + 1.065932027008114e+00 + 1.063420367175204e+00 + 1.060914608734753e+00 + 1.058414739347230e+00 + 1.055920744292059e+00 + 1.053432609053344e+00 + 1.050950321750202e+00 + 1.048473868029229e+00 + 1.046003233045439e+00 + 1.043538404185668e+00 + 1.041079368203120e+00 + 1.038626111099421e+00 + 1.036178618557632e+00 + 1.033736877638818e+00 + 1.031300875738098e+00 + 1.028870598541307e+00 + 1.026446032279889e+00 + 1.024027163804816e+00 + 1.021613979927458e+00 + 1.019206467749757e+00 + 1.016804614201984e+00 + 1.014408404816817e+00 + 1.012017826403038e+00 + 1.009632866898133e+00 + 1.007253512894913e+00 + 1.004879750675442e+00 + 1.002511566831996e+00 + 1.000148949144661e+00 + 9.977918847145494e-01 + 9.954403597206510e-01 + 9.930943614528360e-01 + 9.907538771638876e-01 + 9.884188936740620e-01 + 9.860893982148410e-01 + 9.837653780132122e-01 + 9.814468200970017e-01 + 9.791337116433633e-01 + 9.768260399168340e-01 + 9.745237922184445e-01 + 9.722269558574113e-01 + 9.699355181124353e-01 + 9.676494662336389e-01 + 9.653687876978898e-01 + 9.630934699744002e-01 + 9.608235003289306e-01 + 9.585588662885656e-01 + 9.562995554410040e-01 + 9.540455551859868e-01 + 9.517968530931009e-01 + 9.495534368089285e-01 + 9.473152938858177e-01 + 9.450824119343849e-01 + 9.428547786515334e-01 + 9.406323818265262e-01 + 9.384152091378831e-01 + 9.362032482272097e-01 + 9.339964869112888e-01 + 9.317949130473703e-01 + 9.295985145023118e-01 + 9.274072791539573e-01 + 9.252211948367504e-01 + 9.230402494034374e-01 + 9.208644309329761e-01 + 9.186937274260252e-01 + 9.165281267878318e-01 + 9.143676170947915e-01 + 9.122121864230248e-01 + 9.100618228160294e-01 + 9.079165144228375e-01 + 9.057762494101416e-01 + 9.036410159434681e-01 + 9.015108022852656e-01 + 8.993855966397851e-01 + 8.972653871281971e-01 + 8.951501621417270e-01 + 8.930399100640233e-01 + 8.909346191274636e-01 + 8.888342777366450e-01 + 8.867388743114113e-01 + 8.846483971822027e-01 + 8.825628348501290e-01 + 8.804821758633001e-01 + 8.784064086961259e-01 + 8.763355218399448e-01 + 8.742695038377348e-01 + 8.722083433110044e-01 + 8.701520288632569e-01 + 8.681005490981059e-01 + 8.660538926659707e-01 + 8.640120483003465e-01 + 8.619750047630993e-01 + 8.599427507590320e-01 + 8.579152750196485e-01 + 8.558925663402844e-01 + 8.538746136199826e-01 + 8.518614056598554e-01 + 8.498529312415619e-01 + 8.478491793952468e-01 + 8.458501390477595e-01 + 8.438557990450950e-01 + 8.418661484572341e-01 + 8.398811762963594e-01 + 8.379008715007146e-01 + 8.359252231704962e-01 + 8.339542204095658e-01 + 8.319878522912720e-01 + 8.300261079597043e-01 + 8.280689765769632e-01 + 8.261164473121154e-01 + 8.241685093974929e-01 + 8.222251520716921e-01 + 8.202863645582569e-01 + 8.183521361157176e-01 + 8.164224560764958e-01 + 8.144973138478017e-01 + 8.125766987264839e-01 + 8.106606000443977e-01 + 8.087490072689457e-01 + 8.068419098143643e-01 + 8.049392971238847e-01 + 8.030411587461223e-01 + 8.011474841608780e-01 + 7.992582628576694e-01 + 7.973734844327619e-01 + 7.954931384582111e-01 + 7.936172145055983e-01 + 7.917457022017643e-01 + 7.898785912282000e-01 + 7.880158712799969e-01 + 7.861575320154112e-01 + 7.843035631939634e-01 + 7.824539546080472e-01 + 7.806086959262468e-01 + 7.787677769423338e-01 + 7.769311875560446e-01 + 7.750989176225404e-01 + 7.732709569908990e-01 + 7.714472955211897e-01 + 7.696279231052234e-01 + 7.678128297211314e-01 + 7.660020053954494e-01 + 7.641954400346342e-01 + 7.623931236302374e-01 + 7.605950462809293e-01 + 7.588011979868697e-01 + 7.570115688113509e-01 + 7.552261489288551e-01 + 7.534449284973839e-01 + 7.516678976340316e-01 + 7.498950464317325e-01 + 7.481263651057625e-01 + 7.463618439154999e-01 + 7.446014731170009e-01 + 7.428452429690515e-01 + 7.410931437272748e-01 + 7.393451656574506e-01 + 7.376012991597445e-01 + 7.358615346418724e-01 + 7.341258624174279e-01 + 7.323942728636854e-01 + 7.306667564033948e-01 + 7.289433034811010e-01 + 7.272239046205010e-01 + 7.255085503342084e-01 + 7.237972310231134e-01 + 7.220899372662432e-01 + 7.203866596915919e-01 + 7.186873887451811e-01 + 7.169921150530395e-01 + 7.153008293485266e-01 + 7.136135222426403e-01 + 7.119301843519804e-01 + 7.102508063464710e-01 + 7.085753789925818e-01 + 7.069038930034782e-01 + 7.052363390742027e-01 + 7.035727080638011e-01 + 7.019129907750439e-01 + 7.002571779481277e-01 + 6.986052604437083e-01 + 6.969572291357313e-01 + 6.953130748988353e-01 + 6.936727887020229e-01 + 6.920363614522840e-01 + 6.904037839913317e-01 + 6.887750473773369e-01 + 6.871501426160253e-01 + 6.855290605871678e-01 + 6.839117924040222e-01 + 6.822983292013320e-01 + 6.806886620123715e-01 + 6.790827818618205e-01 + 6.774806798407976e-01 + 6.758823471448717e-01 + 6.742877749381793e-01 + 6.726969543916550e-01 + 6.711098767181217e-01 + 6.695265330883416e-01 + 6.679469147191758e-01 + 6.663710129607012e-01 + 6.647988190816884e-01 + 6.632303243195694e-01 + 6.616655199754741e-01 + 6.601043974442724e-01 + 6.585469481315596e-01 + 6.569931633409668e-01 + 6.554430344698831e-01 + 6.538965529680326e-01 + 6.523537102216029e-01 + 6.508144977390269e-01 + 6.492789070902356e-01 + 6.477469297088367e-01 + 6.462185570471877e-01 + 6.446937806333431e-01 + 6.431725921186934e-01 + 6.416549831028872e-01 + 6.401409451291091e-01 + 6.386304698205402e-01 + 6.371235488250266e-01 + 6.356201737964903e-01 + 6.341203364004929e-01 + 6.326240283504814e-01 + 6.311312414023209e-01 + 6.296419672600960e-01 + 6.281561976359686e-01 + 6.266739242956670e-01 + 6.251951391194286e-01 + 6.237198339322255e-01 + 6.222480004492102e-01 + 6.207796305731890e-01 + 6.193147162378443e-01 + 6.178532493027741e-01 + 6.163952216645050e-01 + 6.149406252489860e-01 + 6.134894519984210e-01 + 6.120416938491114e-01 + 6.105973427932988e-01 + 6.091563909278429e-01 + 6.077188302116784e-01 + 6.062846526061169e-01 + 6.048538502614210e-01 + 6.034264152733694e-01 + 6.020023397068369e-01 + 6.005816156757759e-01 + 5.991642353027361e-01 + 5.977501907311656e-01 + 5.963394741611191e-01 + 5.949320777981851e-01 + 5.935279938331314e-01 + 5.921272144271874e-01 + 5.907297318514260e-01 + 5.893355384452119e-01 + 5.879446264415406e-01 + 5.865569881004723e-01 + 5.851726157460215e-01 + 5.837915017610071e-01 + 5.824136384878618e-01 + 5.810390182425506e-01 + 5.796676334763571e-01 + 5.782994765837256e-01 + 5.769345398883866e-01 + 5.755728159164172e-01 + 5.742142971757567e-01 + 5.728589760824728e-01 + 5.715068451452269e-01 + 5.701578968814059e-01 + 5.688121237820786e-01 + 5.674695184134964e-01 + 5.661300733449661e-01 + 5.647937811172017e-01 + 5.634606343850478e-01 + 5.621306258016221e-01 + 5.608037479323033e-01 + 5.594799934047830e-01 + 5.581593548937616e-01 + 5.568418251014721e-01 + 5.555273967809645e-01 + 5.542160626584934e-01 + 5.529078153599613e-01 + 5.516026476869607e-01 + 5.503005524879265e-01 + 5.490015224489507e-01 + 5.477055503706971e-01 + 5.464126291394721e-01 + 5.451227516109934e-01 + 5.438359105997491e-01 + 5.425520989229732e-01 + 5.412713094911021e-01 + 5.399935352390902e-01 + 5.387187691034094e-01 + 5.374470040087604e-01 + 5.361782329113639e-01 + 5.349124487848638e-01 + 5.336496445514358e-01 + 5.323898132502169e-01 + 5.311329480044003e-01 + 5.298790417206248e-01 + 5.286280874266170e-01 + 5.273800783238198e-01 + 5.261350074387794e-01 + 5.248928678300107e-01 + 5.236536526638225e-01 + 5.224173550711992e-01 + 5.211839681868924e-01 + 5.199534851768893e-01 + 5.187258992380968e-01 + 5.175012035574781e-01 + 5.162793913049719e-01 + 5.150604557657682e-01 + 5.138443902158373e-01 + 5.126311878387027e-01 + 5.114208419243966e-01 + 5.102133457996210e-01 + 5.090086927559088e-01 + 5.078068761246483e-01 + 5.066078892445277e-01 + 5.054117254264059e-01 + 5.042183780707232e-01 + 5.030278406156905e-01 + 5.018401064512819e-01 + 5.006551689399448e-01 + 4.994730214827681e-01 + 4.982936576173500e-01 + 4.971170708196209e-01 + 4.959432545161117e-01 + 4.947722021784954e-01 + 4.936039073158257e-01 + 4.924383634713059e-01 + 4.912755642215030e-01 + 4.901155031029966e-01 + 4.889581736357913e-01 + 4.878035694426762e-01 + 4.866516841617155e-01 + 4.855025114095978e-01 + 4.843560447562852e-01 + 4.832122778219742e-01 + 4.820712043014287e-01 + 4.809328179063641e-01 + 4.797971123302187e-01 + 4.786640812406847e-01 + 4.775337183184862e-01 + 4.764060173050261e-01 + 4.752809720122764e-01 + 4.741585762111217e-01 + 4.730388236459319e-01 + 4.719217080626099e-01 + 4.708072233097221e-01 + 4.696953632391141e-01 + 4.685861216425942e-01 + 4.674794923970907e-01 + 4.663754693817960e-01 + 4.652740464091041e-01 + 4.641752174102053e-01 + 4.630789763262008e-01 + 4.619853169869301e-01 + 4.608942333544824e-01 + 4.598057194461572e-01 + 4.587197692038988e-01 + 4.576363766028796e-01 + 4.565555356433393e-01 + 4.554772403132010e-01 + 4.544014845983438e-01 + 4.533282625263808e-01 + 4.522575682421708e-01 + 4.511893957834002e-01 + 4.501237391381080e-01 + 4.490605924783677e-01 + 4.479999499003729e-01 + 4.469418054464263e-01 + 4.458861533467765e-01 + 4.448329877503518e-01 + 4.437823027182840e-01 + 4.427340924804984e-01 + 4.416883512661691e-01 + 4.406450732493647e-01 + 4.396042525949710e-01 + 4.385658835318161e-01 + 4.375299603591805e-01 + 4.364964773180230e-01 + 4.354654286529535e-01 + 4.344368086449737e-01 + 4.334106115882546e-01 + 4.323868317973252e-01 + 4.313654636098987e-01 + 4.303465013528135e-01 + 4.293299393608014e-01 + 4.283157719943348e-01 + 4.273039936389254e-01 + 4.262945986862648e-01 + 4.252875815207442e-01 + 4.242829365388910e-01 + 4.232806581737543e-01 + 4.222807409163533e-01 + 4.212831792180283e-01 + 4.202879675160039e-01 + 4.192951002821390e-01 + 4.183045720190468e-01 + 4.173163772308877e-01 + 4.163305103895081e-01 + 4.153469660738844e-01 + 4.143657388899517e-01 + 4.133868232899575e-01 + 4.124102138463511e-01 + 4.114359052122226e-01 + 4.104638919136763e-01 + 4.094941685453110e-01 + 4.085267297797091e-01 + 4.075615702608746e-01 + 4.065986846247451e-01 + 4.056380675149961e-01 + 4.046797136100241e-01 + 4.037236175791848e-01 + 4.027697740867438e-01 + 4.018181778668817e-01 + 4.008688236537185e-01 + 3.999217061664900e-01 + 3.989768201804763e-01 + 3.980341604347806e-01 + 3.970937216243767e-01 + 3.961554986257766e-01 + 3.952194862561716e-01 + 3.942856791749246e-01 + 3.933540722797152e-01 + 3.924246604937682e-01 + 3.914974386057962e-01 + 3.905724013991230e-01 + 3.896495437210211e-01 + 3.887288605266558e-01 + 3.878103467384126e-01 + 3.868939972364765e-01 + 3.859798068708922e-01 + 3.850677705778728e-01 + 3.841578833358520e-01 + 3.832501400994028e-01 + 3.823445358203205e-01 + 3.814410654593080e-01 + 3.805397240004402e-01 + 3.796405064500310e-01 + 3.787434078281850e-01 + 3.778484231550217e-01 + 3.769555474293507e-01 + 3.760647756653435e-01 + 3.751761029803938e-01 + 3.742895244689736e-01 + 3.734050351897463e-01 + 3.725226302131253e-01 + 3.716423046174657e-01 + 3.707640535037849e-01 + 3.698878720450124e-01 + 3.690137553825144e-01 + 3.681416986254492e-01 + 3.672716969834960e-01 + 3.664037456169829e-01 + 3.655378396196581e-01 + 3.646739742353085e-01 + 3.638121447254376e-01 + 3.629523462980791e-01 + 3.620945741078652e-01 + 3.612388233782960e-01 + 3.603850894480597e-01 + 3.595333675652969e-01 + 3.586836529581271e-01 + 3.578359408972814e-01 + 3.569902267099870e-01 + 3.561465057284826e-01 + 3.553047732480240e-01 + 3.544650245489661e-01 + 3.536272549462773e-01 + 3.527914598373741e-01 + 3.519576346281267e-01 + 3.511257746893044e-01 + 3.502958753213151e-01 + 3.494679319027064e-01 + 3.486419398734283e-01 + 3.478178946841421e-01 + 3.469957917542031e-01 + 3.461756264906874e-01 + 3.453573943334770e-01 + 3.445410907466465e-01 + 3.437267112053919e-01 + 3.429142511753236e-01 + 3.421037061357636e-01 + 3.412950715914754e-01 + 3.404883430871680e-01 + 3.396835161220511e-01 + 3.388805861778083e-01 + 3.380795488742585e-01 + 3.372803997559251e-01 + 3.364831342820857e-01 + 3.356877480644493e-01 + 3.348942367473924e-01 + 3.341025959445759e-01 + 3.333128211902062e-01 + 3.325249080644813e-01 + 3.317388522349806e-01 + 3.309546493345364e-01 + 3.301722950123494e-01 + 3.293917849546400e-01 + 3.286131147929292e-01 + 3.278362801760134e-01 + 3.270612768173198e-01 + 3.262881004205997e-01 + 3.255167466776044e-01 + 3.247472112772871e-01 + 3.239794899591130e-01 + 3.232135784952971e-01 + 3.224494726613195e-01 + 3.216871681318617e-01 + 3.209266606147330e-01 + 3.201679460077643e-01 + 3.194110200806869e-01 + 3.186558785671545e-01 + 3.179025173467112e-01 + 3.171509322207308e-01 + 3.164011189537259e-01 + 3.156530734030461e-01 + 3.149067914068442e-01 + 3.141622688005587e-01 + 3.134195014964591e-01 + 3.126784853846941e-01 + 3.119392163234083e-01 + 3.112016901727622e-01 + 3.104659028247113e-01 + 3.097318502149898e-01 + 3.089995283319454e-01 + 3.082689330721005e-01 + 3.075400602663161e-01 + 3.068129059444455e-01 + 3.060874661234649e-01 + 3.053637367362504e-01 + 3.046417137079979e-01 + 3.039213930418579e-01 + 3.032027708160949e-01 + 3.024858429572295e-01 + 3.017706054435225e-01 + 3.010570543910775e-01 + 3.003451858060657e-01 + 2.996349956970866e-01 + 2.989264801519126e-01 + 2.982196352437723e-01 + 2.975144570351090e-01 + 2.968109415899733e-01 + 2.961090850010212e-01 + 2.954088833712375e-01 + 2.947103327960572e-01 + 2.940134293733013e-01 + 2.933181692489545e-01 + 2.926245486550200e-01 + 2.919325636534309e-01 + 2.912422103009782e-01 + 2.905534849067459e-01 + 2.898663836341845e-01 + 2.891809025716850e-01 + 2.884970379499296e-01 + 2.878147859946116e-01 + 2.871341429080666e-01 + 2.864551048929091e-01 + 2.857776681836698e-01 + 2.851018290276999e-01 + 2.844275836247271e-01 + 2.837549281975342e-01 + 2.830838590248334e-01 + 2.824143724756855e-01 + 2.817464648036653e-01 + 2.810801321714598e-01 + 2.804153709678348e-01 + 2.797521775256636e-01 + 2.790905480675208e-01 + 2.784304789557904e-01 + 2.777719665515425e-01 + 2.771150071618110e-01 + 2.764595971293084e-01 + 2.758057328280932e-01 + 2.751534106502780e-01 + 2.745026269461392e-01 + 2.738533780697315e-01 + 2.732056604090851e-01 + 2.725594703611444e-01 + 2.719148043516682e-01 + 2.712716588414341e-01 + 2.706300302048149e-01 + 2.699899148252890e-01 + 2.693513091897057e-01 + 2.687142097803046e-01 + 2.680786130525787e-01 + 2.674445154290628e-01 + 2.668119133864937e-01 + 2.661808034370396e-01 + 2.655511820876730e-01 + 2.649230457933240e-01 + 2.642963910212357e-01 + 2.636712143601993e-01 + 2.630475123173707e-01 + 2.624252813696634e-01 + 2.618045181320832e-01 + 2.611852191534089e-01 + 2.605673809346502e-01 + 2.599510000768786e-01 + 2.593360731482656e-01 + 2.587225966857610e-01 + 2.581105673020023e-01 + 2.574999816218594e-01 + 2.568908362541323e-01 + 2.562831277681717e-01 + 2.556768527608984e-01 + 2.550720078808991e-01 + 2.544685898158210e-01 + 2.538665952029344e-01 + 2.532660206235198e-01 + 2.526668627769018e-01 + 2.520691183671673e-01 + 2.514727840477828e-01 + 2.508778564832650e-01 + 2.502843323450471e-01 + 2.496922083184503e-01 + 2.491014811741685e-01 + 2.485121476502302e-01 + 2.479242043768022e-01 + 2.473376480750936e-01 + 2.467524755330193e-01 + 2.461686835577825e-01 + 2.455862688342147e-01 + 2.450052280577099e-01 + 2.444255580815592e-01 + 2.438472556710649e-01 + 2.432703175621061e-01 + 2.426947405763887e-01 + 2.421205215374063e-01 + 2.415476572469543e-01 + 2.409761444715131e-01 + 2.404059800179439e-01 + 2.398371607406130e-01 + 2.392696835287547e-01 + 2.387035451998669e-01 + 2.381387425460481e-01 + 2.375752724876774e-01 + 2.370131319015487e-01 + 2.364523176042576e-01 + 2.358928264341899e-01 + 2.353346553264918e-01 + 2.347778012643444e-01 + 2.342222610470114e-01 + 2.336680315481888e-01 + 2.331151097630285e-01 + 2.325634926002070e-01 + 2.320131769932555e-01 + 2.314641599195968e-01 + 2.309164382391606e-01 + 2.303700088852327e-01 + 2.298248689205450e-01 + 2.292810152383314e-01 + 2.287384447851956e-01 + 2.281971546639490e-01 + 2.276571417710518e-01 + 2.271184030444375e-01 + 2.265809356255705e-01 + 2.260447364485637e-01 + 2.255098024678978e-01 + 2.249761308577043e-01 + 2.244437185775247e-01 + 2.239125625576918e-01 + 2.233826599324974e-01 + 2.228540078061592e-01 + 2.223266032159731e-01 + 2.218004431318401e-01 + 2.212755246546400e-01 + 2.207518449320089e-01 + 2.202294009962271e-01 + 2.197081899542086e-01 + 2.191882089472320e-01 + 2.186694550184439e-01 + 2.181519252528444e-01 + 2.176356167922184e-01 + 2.171205268020538e-01 + 2.166066524055817e-01 + 2.160939907132310e-01 + 2.155825389406823e-01 + 2.150722942170351e-01 + 2.145632535999474e-01 + 2.140554143128364e-01 + 2.135487735713488e-01 + 2.130433285376680e-01 + 2.125390763961598e-01 + 2.120360143225986e-01 + 2.115341394866721e-01 + 2.110334491301104e-01 + 2.105339404911263e-01 + 2.100356107692428e-01 + 2.095384571593845e-01 + 2.090424768875718e-01 + 2.085476672286868e-01 + 2.080540254649787e-01 + 2.075615488420417e-01 + 2.070702345483775e-01 + 2.065800798220710e-01 + 2.060910819584345e-01 + 2.056032383022174e-01 + 2.051165461242101e-01 + 2.046310026800104e-01 + 2.041466052775261e-01 + 2.036633511978056e-01 + 2.031812377402102e-01 + 2.027002622847228e-01 + 2.022204221329609e-01 + 2.017417145657832e-01 + 2.012641369577989e-01 + 2.007876866366623e-01 + 2.003123609141739e-01 + 1.998381571847571e-01 + 1.993650728223044e-01 + 1.988931051658790e-01 + 1.984222515391579e-01 + 1.979525093566432e-01 + 1.974838760798574e-01 + 1.970163490394448e-01 + 1.965499255924087e-01 + 1.960846031634822e-01 + 1.956203792216227e-01 + 1.951572511456189e-01 + 1.946952162469976e-01 + 1.942342720345011e-01 + 1.937744160087473e-01 + 1.933156455855021e-01 + 1.928579581617409e-01 + 1.924013511601302e-01 + 1.919458220512063e-01 + 1.914913683490730e-01 + 1.910379875218400e-01 + 1.905856769690048e-01 + 1.901344342343178e-01 + 1.896842568245793e-01 + 1.892351421122624e-01 + 1.887870876905098e-01 + 1.883400911382459e-01 + 1.878941498265747e-01 + 1.874492612709913e-01 + 1.870054230608876e-01 + 1.865626327533365e-01 + 1.861208878413260e-01 + 1.856801858136446e-01 + 1.852405242290795e-01 + 1.848019006561455e-01 + 1.843643126785636e-01 + 1.839277579090688e-01 + 1.834922338318696e-01 + 1.830577379260484e-01 + 1.826242679175190e-01 + 1.821918214082343e-01 + 1.817603959062191e-01 + 1.813299890419420e-01 + 1.809005984096844e-01 + 1.804722215715290e-01 + 1.800448561676805e-01 + 1.796184998471616e-01 + 1.791931502428031e-01 + 1.787688049585256e-01 + 1.783454616010165e-01 + 1.779231178061076e-01 + 1.775017712916434e-01 + 1.770814197185338e-01 + 1.766620606643876e-01 + 1.762436917707559e-01 + 1.758263107475443e-01 + 1.754099153420786e-01 + 1.749945031691721e-01 + 1.745800718793870e-01 + 1.741666192327871e-01 + 1.737541428912765e-01 + 1.733426405128906e-01 + 1.729321098263452e-01 + 1.725225486037993e-01 + 1.721139545737653e-01 + 1.717063253659770e-01 + 1.712996586978482e-01 + 1.708939523524782e-01 + 1.704892041326627e-01 + 1.700854117308264e-01 + 1.696825728315613e-01 + 1.692806852413719e-01 + 1.688797467224855e-01 + 1.684797550119726e-01 + 1.680807078836749e-01 + 1.676826031516292e-01 + 1.672854386236076e-01 + 1.668892120257625e-01 + 1.664939211364053e-01 + 1.660995637803862e-01 + 1.657061377653481e-01 + 1.653136408872399e-01 + 1.649220709518862e-01 + 1.645314258210089e-01 + 1.641417032838678e-01 + 1.637529010922642e-01 + 1.633650171697226e-01 + 1.629780493848234e-01 + 1.625919955117979e-01 + 1.622068533722165e-01 + 1.618226208359533e-01 + 1.614392958070308e-01 + 1.610568761629498e-01 + 1.606753597398519e-01 + 1.602947443525945e-01 + 1.599150279328092e-01 + 1.595362083976419e-01 + 1.591582835876941e-01 + 1.587812513806259e-01 + 1.584051096895935e-01 + 1.580298564486488e-01 + 1.576554895336735e-01 + 1.572820068494865e-01 + 1.569094063844064e-01 + 1.565376859935812e-01 + 1.561668435389086e-01 + 1.557968770322644e-01 + 1.554277844430587e-01 + 1.550595637013555e-01 + 1.546922127252644e-01 + 1.543257294352004e-01 + 1.539601117962810e-01 + 1.535953578647676e-01 + 1.532314655336160e-01 + 1.528684326732572e-01 + 1.525062574192351e-01 + 1.521449377506904e-01 + 1.517844715391133e-01 + 1.514248568043021e-01 + 1.510660915767141e-01 + 1.507081738546517e-01 + 1.503511015850067e-01 + 1.499948728018673e-01 + 1.496394855976185e-01 + 1.492849379312514e-01 + 1.489312277844460e-01 + 1.485783532079666e-01 + 1.482263122946834e-01 + 1.478751030581660e-01 + 1.475247234388987e-01 + 1.471751715323068e-01 + 1.468264454469171e-01 + 1.464785432366154e-01 + 1.461314629165984e-01 + 1.457852025452889e-01 + 1.454397602433564e-01 + 1.450951340257908e-01 + 1.447513219420110e-01 + 1.444083221508569e-01 + 1.440661327109938e-01 + 1.437247516822454e-01 + 1.433841772072484e-01 + 1.430444073901374e-01 + 1.427054403077353e-01 + 1.423672740371242e-01 + 1.420299067307786e-01 + 1.416933365389871e-01 + 1.413575615237460e-01 + 1.410225798197031e-01 + 1.406883895901710e-01 + 1.403549889435149e-01 + 1.400223760032770e-01 + 1.396905489310608e-01 + 1.393595059398338e-01 + 1.390292451224472e-01 + 1.386997645496112e-01 + 1.383710625136722e-01 + 1.380431371824567e-01 + 1.377159866326167e-01 + 1.373896091055998e-01 + 1.370640027752214e-01 + 1.367391657592925e-01 + 1.364150963290927e-01 + 1.360917926783734e-01 + 1.357692529162330e-01 + 1.354474752994454e-01 + 1.351264580487222e-01 + 1.348061993122180e-01 + 1.344866973181728e-01 + 1.341679503229942e-01 + 1.338499565682958e-01 + 1.335327142013654e-01 + 1.332162214320106e-01 + 1.329004765902875e-01 + 1.325854779258548e-01 + 1.322712236439755e-01 + 1.319577119415115e-01 + 1.316449410589970e-01 + 1.313329092858229e-01 + 1.310216149439378e-01 + 1.307110562100912e-01 + 1.304012313067827e-01 + 1.300921386594473e-01 + 1.297837764741680e-01 + 1.294761429396481e-01 + 1.291692364743583e-01 + 1.288630553353233e-01 + 1.285575977268189e-01 + 1.282528620001082e-01 + 1.279488464604472e-01 + 1.276455493846629e-01 + 1.273429690961771e-01 + 1.270411039265308e-01 + 1.267399521912149e-01 + 1.264395121606617e-01 + 1.261397821624623e-01 + 1.258407605612416e-01 + 1.255424456647032e-01 + 1.252448358003494e-01 + 1.249479293256652e-01 + 1.246517245985584e-01 + 1.243562199440227e-01 + 1.240614136699035e-01 + 1.237673041530004e-01 + 1.234738897833225e-01 + 1.231811689369122e-01 + 1.228891399541342e-01 + 1.225978011897444e-01 + 1.223071510285007e-01 + 1.220171878485729e-01 + 1.217279100221359e-01 + 1.214393159216827e-01 + 1.211514039479249e-01 + 1.208641725134118e-01 + 1.205776200272462e-01 + 1.202917448643591e-01 + 1.200065453999493e-01 + 1.197220200388544e-01 + 1.194381672203820e-01 + 1.191549853738593e-01 + 1.188724728867774e-01 + 1.185906281982059e-01 + 1.183094497403516e-01 + 1.180289358802264e-01 + 1.177490851172322e-01 + 1.174698959467804e-01 + 1.171913666738082e-01 + 1.169134957966049e-01 + 1.166362818664215e-01 + 1.163597231976005e-01 + 1.160838182295854e-01 + 1.158085654926154e-01 + 1.155339634301463e-01 + 1.152600105152270e-01 + 1.149867052503320e-01 + 1.147140461081585e-01 + 1.144420315115333e-01 + 1.141706598827868e-01 + 1.138999297876022e-01 + 1.136298397724347e-01 + 1.133603883121320e-01 + 1.130915738073908e-01 + 1.128233947404400e-01 + 1.125558496925181e-01 + 1.122889371862514e-01 + 1.120226557224089e-01 + 1.117570037925019e-01 + 1.114919798574519e-01 + 1.112275824488763e-01 + 1.109638101830490e-01 + 1.107006615250319e-01 + 1.104381349837027e-01 + 1.101762291935612e-01 + 1.099149425817940e-01 + 1.096542736337556e-01 + 1.093942210611990e-01 + 1.091347833750166e-01 + 1.088759590309823e-01 + 1.086177465849946e-01 + 1.083601446468375e-01 + 1.081031518187680e-01 + 1.078467666394599e-01 + 1.075909876365943e-01 + 1.073358133695979e-01 + 1.070812424691808e-01 + 1.068272734935852e-01 + 1.065739049762412e-01 + 1.063211355273724e-01 + 1.060689637753818e-01 + 1.058173883167701e-01 + 1.055664076522099e-01 + 1.053160204177178e-01 + 1.050662253083730e-01 + 1.048170208178578e-01 + 1.045684055544151e-01 + 1.043203782231123e-01 + 1.040729373745031e-01 + 1.038260815947437e-01 + 1.035798095388146e-01 + 1.033341198496129e-01 + 1.030890111353506e-01 + 1.028444819874746e-01 + 1.026005310752415e-01 + 1.023571570589419e-01 + 1.021143585605686e-01 + 1.018721342063349e-01 + 1.016304826397723e-01 + 1.013894025261397e-01 + 1.011488925387934e-01 + 1.009089513225976e-01 + 1.006695774897203e-01 + 1.004307697412456e-01 + 1.001925267601519e-01 + 9.995484714928184e-02 + 9.971772961029543e-02 + 9.948117285600222e-02 + 9.924517553207431e-02 + 9.900973631553432e-02 + 9.877485389836264e-02 + 9.854052696321766e-02 + 9.830675420513860e-02 + 9.807353432053509e-02 + 9.784086599274402e-02 + 9.760874792461041e-02 + 9.737717882679013e-02 + 9.714615739564664e-02 + 9.691568233864475e-02 + 9.668575237168565e-02 + 9.645636620785530e-02 + 9.622752256709627e-02 + 9.599922017186617e-02 + 9.577145773476621e-02 + 9.554423398421420e-02 + 9.531754766036228e-02 + 9.509139748951084e-02 + 9.486578220406576e-02 + 9.464070054491446e-02 + 9.441615125061270e-02 + 9.419213306609350e-02 + 9.396864474309072e-02 + 9.374568502973517e-02 + 9.352325267700241e-02 + 9.330134644110695e-02 + 9.307996508088016e-02 + 9.285910736057421e-02 + 9.263877204899980e-02 + 9.241895790580944e-02 + 9.219966369924239e-02 + 9.198088821288498e-02 + 9.176263021506216e-02 + 9.154488848131032e-02 + 9.132766180778470e-02 + 9.111094897456264e-02 + 9.089474876186458e-02 + 9.067905996494766e-02 + 9.046388137755315e-02 + 9.024921179550818e-02 + 9.003505002157913e-02 + 8.982139485394958e-02 + 8.960824509461397e-02 + 8.939559956013639e-02 + 8.918345705664489e-02 + 8.897181638949078e-02 + 8.876067638185769e-02 + 8.855003585659860e-02 + 8.833989363307079e-02 + 8.813024852794749e-02 + 8.792109937217552e-02 + 8.771244500411417e-02 + 8.750428424959714e-02 + 8.729661594151820e-02 + 8.708943892038122e-02 + 8.688275202450782e-02 + 8.667655409894154e-02 + 8.647084399500883e-02 + 8.626562056133152e-02 + 8.606088264727801e-02 + 8.585662910508592e-02 + 8.565285879275303e-02 + 8.544957056834111e-02 + 8.524676329099723e-02 + 8.504443583456130e-02 + 8.484258706983651e-02 + 8.464121585953427e-02 + 8.444032107793580e-02 + 8.423990160173883e-02 + 8.403995630660985e-02 + 8.384048408000297e-02 + 8.364148380739438e-02 + 8.344295436518863e-02 + 8.324489464319758e-02 + 8.304730353631981e-02 + 8.285017993778075e-02 + 8.265352274723796e-02 + 8.245733086610936e-02 + 8.226160319325253e-02 + 8.206633863307464e-02 + 8.187153609323948e-02 + 8.167719448173898e-02 + 8.148331271120264e-02 + 8.128988969775824e-02 + 8.109692435907066e-02 + 8.090441561287741e-02 + 8.071236238052074e-02 + 8.052076359329230e-02 + 8.032961817777003e-02 + 8.013892505875637e-02 + 7.994868317110082e-02 + 7.975889145271257e-02 + 7.956954884117817e-02 + 7.938065427030368e-02 + 7.919220668490153e-02 + 7.900420503735811e-02 + 7.881664826626886e-02 + 7.862953532075569e-02 + 7.844286516277023e-02 + 7.825663674598571e-02 + 7.807084902471831e-02 + 7.788550095723919e-02 + 7.770059150356423e-02 + 7.751611963202924e-02 + 7.733208431808952e-02 + 7.714848452080215e-02 + 7.696531920714285e-02 + 7.678258736267791e-02 + 7.660028796508990e-02 + 7.641841999039113e-02 + 7.623698241865759e-02 + 7.605597423593993e-02 + 7.587539442823407e-02 + 7.569524197859213e-02 + 7.551551588287067e-02 + 7.533621514035872e-02 + 7.515733874432233e-02 + 7.497888568830134e-02 + 7.480085497230264e-02 + 7.462324560850588e-02 + 7.444605660139321e-02 + 7.426928695221670e-02 + 7.409293566891996e-02 + 7.391700176673981e-02 + 7.374148426439617e-02 + 7.356638217848553e-02 + 7.339169452681224e-02 + 7.321742033027905e-02 + 7.304355861552074e-02 + 7.287010840815517e-02 + 7.269706873346385e-02 + 7.252443862192341e-02 + 7.235221710900047e-02 + 7.218040323296335e-02 + 7.200899602923243e-02 + 7.183799453782064e-02 + 7.166739780328910e-02 + 7.149720486628935e-02 + 7.132741477295296e-02 + 7.115802657678706e-02 + 7.098903933028558e-02 + 7.082045208266741e-02 + 7.065226388294948e-02 + 7.048447379884398e-02 + 7.031708089501212e-02 + 7.015008422428966e-02 + 6.998348285005500e-02 + 6.981727584178653e-02 + 6.965146227138255e-02 + 6.948604121024822e-02 + 6.932101172952453e-02 + 6.915637290177927e-02 + 6.899212381049466e-02 + 6.882826353831664e-02 + 6.866479115768206e-02 + 6.850170575553913e-02 + 6.833900642241270e-02 + 6.817669223943085e-02 + 6.801476230171261e-02 + 6.785321570853013e-02 + 6.769205154760372e-02 + 6.753126891476798e-02 + 6.737086691265436e-02 + 6.721084464422118e-02 + 6.705120121123045e-02 + 6.689193571639933e-02 + 6.673304726820108e-02 + 6.657453497707803e-02 + 6.641639795452120e-02 + 6.625863531334618e-02 + 6.610124617104705e-02 + 6.594422964866814e-02 + 6.578758486543299e-02 + 6.563131094165708e-02 + 6.547540700031643e-02 + 6.531987216906585e-02 + 6.516470557837332e-02 + 6.500990635997374e-02 + 6.485547364331327e-02 + 6.470140656204018e-02 + 6.454770425495959e-02 + 6.439436585565442e-02 + 6.424139050518185e-02 + 6.408877735587415e-02 + 6.393652554954243e-02 + 6.378463422860429e-02 + 6.363310254304622e-02 + 6.348192964216136e-02 + 6.333111467891862e-02 + 6.318065681259971e-02 + 6.303055519506789e-02 + 6.288080898167979e-02 + 6.273141734118348e-02 + 6.258237943694549e-02 + 6.243369443027962e-02 + 6.228536148636779e-02 + 6.213737977420020e-02 + 6.198974846629291e-02 + 6.184246673830131e-02 + 6.169553375986874e-02 + 6.154894870195880e-02 + 6.140271075002260e-02 + 6.125681908485271e-02 + 6.111127288458502e-02 + 6.096607133498923e-02 + 6.082121362330186e-02 + 6.067669893778977e-02 + 6.053252647002724e-02 + 6.038869541057570e-02 + 6.024520494995262e-02 + 6.010205428441878e-02 + 5.995924261312039e-02 + 5.981676913606451e-02 + 5.967463305068377e-02 + 5.953283356000520e-02 + 5.939136987405440e-02 + 5.925024120274393e-02 + 5.910944675075109e-02 + 5.896898572024133e-02 + 5.882885733338872e-02 + 5.868906080796419e-02 + 5.854959534943303e-02 + 5.841046018167366e-02 + 5.827165452667381e-02 + 5.813317759547484e-02 + 5.799502862000658e-02 + 5.785720683145133e-02 + 5.771971144629215e-02 + 5.758254169802959e-02 + 5.744569682168989e-02 + 5.730917604038396e-02 + 5.717297859181381e-02 + 5.703710371771920e-02 + 5.690155065150715e-02 + 5.676631863514842e-02 + 5.663140691176988e-02 + 5.649681471550019e-02 + 5.636254129818796e-02 + 5.622858591623749e-02 + 5.609494780637568e-02 + 5.596162621719655e-02 + 5.582862040612746e-02 + 5.569592962469259e-02 + 5.556355312969728e-02 + 5.543149018219354e-02 + 5.529974004038473e-02 + 5.516830196534387e-02 + 5.503717522021812e-02 + 5.490635906464716e-02 + 5.477585276550550e-02 + 5.464565559606692e-02 + 5.451576682310098e-02 + 5.438618571514530e-02 + 5.425691154653305e-02 + 5.412794360021059e-02 + 5.399928115030668e-02 + 5.387092346220070e-02 + 5.374286982722595e-02 + 5.361511953114147e-02 + 5.348767184376742e-02 + 5.336052605560348e-02 + 5.323368145967647e-02 + 5.310713734132736e-02 + 5.298089299097181e-02 + 5.285494769998652e-02 + 5.272930075794034e-02 + 5.260395145882699e-02 + 5.247889910164562e-02 + 5.235414299012888e-02 + 5.222968242359068e-02 + 5.210551670083303e-02 + 5.198164512479836e-02 + 5.185806699751586e-02 + 5.173478162567831e-02 + 5.161178832737659e-02 + 5.148908640731603e-02 + 5.136667516904735e-02 + 5.124455393713079e-02 + 5.112272202541198e-02 + 5.100117874145336e-02 + 5.087992340415878e-02 + 5.075895533879782e-02 + 5.063827387090040e-02 + 5.051787831631814e-02 + 5.039776799903027e-02 + 5.027794224956293e-02 + 5.015840039018700e-02 + 5.003914174911826e-02 + 4.992016566217095e-02 + 4.980147146451835e-02 + 4.968305848565534e-02 + 4.956492605368701e-02 + 4.944707351707827e-02 + 4.932950021762891e-02 + 4.921220548403189e-02 + 4.909518865563611e-02 + 4.897844908008390e-02 + 4.886198610990230e-02 + 4.874579909103274e-02 + 4.862988736593407e-02 + 4.851425027765261e-02 + 4.839888718215429e-02 + 4.828379743688660e-02 + 4.816898039344981e-02 + 4.805443540666063e-02 + 4.794016183433197e-02 + 4.782615903628512e-02 + 4.771242637003347e-02 + 4.759896319572905e-02 + 4.748576888074151e-02 + 4.737284278529100e-02 + 4.726018427180961e-02 + 4.714779271742187e-02 + 4.703566749191604e-02 + 4.692380796083007e-02 + 4.681221349433169e-02 + 4.670088346648602e-02 + 4.658981725459431e-02 + 4.647901423861556e-02 + 4.636847379587147e-02 + 4.625819530165282e-02 + 4.614817813294777e-02 + 4.603842167462240e-02 + 4.592892531626435e-02 + 4.581968844113481e-02 + 4.571071043517037e-02 + 4.560199068716930e-02 + 4.549352858172214e-02 + 4.538532351139604e-02 + 4.527737487551017e-02 + 4.516968206047602e-02 + 4.506224446147816e-02 + 4.495506148526871e-02 + 4.484813252205796e-02 + 4.474145696749865e-02 + 4.463503423038843e-02 + 4.452886371233129e-02 + 4.442294481444441e-02 + 4.431727694184067e-02 + 4.421185950249874e-02 + 4.410669190344264e-02 + 4.400177354999718e-02 + 4.389710385863231e-02 + 4.379268224561385e-02 + 4.368850811842072e-02 + 4.358458089102907e-02 + 4.348089998166713e-02 + 4.337746480946211e-02 + 4.327427479290449e-02 + 4.317132935104961e-02 + 4.306862790538591e-02 + 4.296616988021409e-02 + 4.286395470044128e-02 + 4.276198178905291e-02 + 4.266025057462805e-02 + 4.255876048879523e-02 + 4.245751096050290e-02 + 4.235650142249979e-02 + 4.225573130868781e-02 + 4.215520004666404e-02 + 4.205490707118502e-02 + 4.195485182346907e-02 + 4.185503374212908e-02 + 4.175545226547943e-02 + 4.165610683241490e-02 + 4.155699688308426e-02 + 4.145812186261490e-02 + 4.135948121993713e-02 + 4.126107439911159e-02 + 4.116290084444992e-02 + 4.106496000347922e-02 + 4.096725133001662e-02 + 4.086977427671171e-02 + 4.077252829257245e-02 + 4.067551282880393e-02 + 4.057872734137224e-02 + 4.048217129089726e-02 + 4.038584413229004e-02 + 4.028974532214836e-02 + 4.019387432351806e-02 + 4.009823059884492e-02 + 4.000281360871143e-02 + 3.990762281263916e-02 + 3.981265768084040e-02 + 3.971791768404272e-02 + 3.962340228400397e-02 + 3.952911094818634e-02 + 3.943504314911767e-02 + 3.934119836154264e-02 + 3.924757605343093e-02 + 3.915417569553582e-02 + 3.906099677494528e-02 + 3.896803876462888e-02 + 3.887530113159737e-02 + 3.878278335807980e-02 + 3.869048493136602e-02 + 3.859840533540703e-02 + 3.850654403935494e-02 + 3.841490053099362e-02 + 3.832347430867683e-02 + 3.823226484521238e-02 + 3.814127162485314e-02 + 3.805049414568009e-02 + 3.795993189727254e-02 + 3.786958436838804e-02 + 3.777945104950908e-02 + 3.768953143238456e-02 + 3.759982501241896e-02 + 3.751033128919119e-02 + 3.742104976390229e-02 + 3.733197993101921e-02 + 3.724312127956968e-02 + 3.715447331892652e-02 + 3.706603555538170e-02 + 3.697780748276271e-02 + 3.688978860838169e-02 + 3.680197844047203e-02 + 3.671437648083043e-02 + 3.662698223859462e-02 + 3.653979522528233e-02 + 3.645281495050149e-02 + 3.636604092401768e-02 + 3.627947265609178e-02 + 3.619310965841749e-02 + 3.610695145022991e-02 + 3.602099755007137e-02 + 3.593524746722872e-02 + 3.584970072102484e-02 + 3.576435683502647e-02 + 3.567921532660211e-02 + 3.559427571435374e-02 + 3.550953752116312e-02 + 3.542500027693078e-02 + 3.534066350384148e-02 + 3.525652672170999e-02 + 3.517258946309138e-02 + 3.508885125628003e-02 + 3.500531162678291e-02 + 3.492197010940873e-02 + 3.483882623525817e-02 + 3.475587953263527e-02 + 3.467312953919303e-02 + 3.459057578876406e-02 + 3.450821781198862e-02 + 3.442605515251815e-02 + 3.434408734999198e-02 + 3.426231393723483e-02 + 3.418073445581654e-02 + 3.409934844816886e-02 + 3.401815545480084e-02 + 3.393715501912345e-02 + 3.385634668688416e-02 + 3.377573000557660e-02 + 3.369530452244349e-02 + 3.361506978424043e-02 + 3.353502533757853e-02 + 3.345517073173793e-02 + 3.337550551749302e-02 + 3.329602924688495e-02 + 3.321674147756795e-02 + 3.313764176353938e-02 + 3.305872964905672e-02 + 3.298000469915312e-02 + 3.290146647870388e-02 + 3.282311452928582e-02 + 3.274494841443989e-02 + 3.266696770524984e-02 + 3.258917195579586e-02 + 3.251156072835543e-02 + 3.243413358906379e-02 + 3.235689009597382e-02 + 3.227982981604406e-02 + 3.220295232152501e-02 + 3.212625717796667e-02 + 3.204974395335523e-02 + 3.197341221860803e-02 + 3.189726154412311e-02 + 3.182129149811844e-02 + 3.174550164996338e-02 + 3.166989158019418e-02 + 3.159446086552403e-02 + 3.151920907660396e-02 + 3.144413578635114e-02 + 3.136924057603768e-02 + 3.129452303273958e-02 + 3.121998273049806e-02 + 3.114561924523454e-02 + 3.107143216011856e-02 + 3.099742105799270e-02 + 3.092358552474080e-02 + 3.084992514925186e-02 + 3.077643951122557e-02 + 3.070312819305190e-02 + 3.062999078663620e-02 + 3.055702688363699e-02 + 3.048423607160382e-02 + 3.041161793396379e-02 + 3.033917207015753e-02 + 3.026689807846873e-02 + 3.019479554128978e-02 + 3.012286404982057e-02 + 3.005110320361238e-02 + 2.997951260681279e-02 + 2.990809185255966e-02 + 2.983684053226568e-02 + 2.976575824919644e-02 + 2.969484460522792e-02 + 2.962409920087884e-02 + 2.955352163824170e-02 + 2.948311151647172e-02 + 2.941286843696999e-02 + 2.934279201383451e-02 + 2.927288185012002e-02 + 2.920313754405053e-02 + 2.913355871301240e-02 + 2.906414496442064e-02 + 2.899489589842786e-02 + 2.892581113440367e-02 + 2.885689028447655e-02 + 2.878813295173805e-02 + 2.871953875071393e-02 + 2.865110730129668e-02 + 2.858283822298987e-02 + 2.851473112218837e-02 + 2.844678561226344e-02 + 2.837900131834860e-02 + 2.831137785774055e-02 + 2.824391484910513e-02 + 2.817661191561155e-02 + 2.810946867322990e-02 + 2.804248474261467e-02 + 2.797565975421473e-02 + 2.790899332866750e-02 + 2.784248508684310e-02 + 2.777613465729838e-02 + 2.770994166752542e-02 + 2.764390574354870e-02 + 2.757802651096095e-02 + 2.751230360164656e-02 + 2.744673664902718e-02 + 2.738132528259552e-02 + 2.731606912935157e-02 + 2.725096782054994e-02 + 2.718602099881922e-02 + 2.712122829441404e-02 + 2.705658933533107e-02 + 2.699210376654040e-02 + 2.692777122629619e-02 + 2.686359134766074e-02 + 2.679956376855050e-02 + 2.673568813034148e-02 + 2.667196407449100e-02 + 2.660839123653040e-02 + 2.654496925932325e-02 + 2.648169779209303e-02 + 2.641857647953893e-02 + 2.635560496230991e-02 + 2.629278288047702e-02 + 2.623010988365326e-02 + 2.616758562366618e-02 + 2.610520975031933e-02 + 2.604298190560967e-02 + 2.598090173551063e-02 + 2.591896889422694e-02 + 2.585718303968204e-02 + 2.579554382343284e-02 + 2.573405088890056e-02 + 2.567270388987125e-02 + 2.561150248485746e-02 + 2.555044633271165e-02 + 2.548953508798725e-02 + 2.542876840653832e-02 + 2.536814594843316e-02 + 2.530766736730480e-02 + 2.524733231969847e-02 + 2.518714047250964e-02 + 2.512709148651639e-02 + 2.506718502244662e-02 + 2.500742074738894e-02 + 2.494779831751132e-02 + 2.488831739145854e-02 + 2.482897764751662e-02 + 2.476977875068464e-02 + 2.471072035836960e-02 + 2.465180213557270e-02 + 2.459302375909131e-02 + 2.453438490494015e-02 + 2.447588522684439e-02 + 2.441752439632618e-02 + 2.435930209686822e-02 + 2.430121799563831e-02 + 2.424327176191257e-02 + 2.418546306971884e-02 + 2.412779159320392e-02 + 2.407025701015483e-02 + 2.401285899981317e-02 + 2.395559723318545e-02 + 2.389847138352894e-02 + 2.384148113010493e-02 + 2.378462615809818e-02 + 2.372790614977233e-02 + 2.367132078182184e-02 + 2.361486973012364e-02 + 2.355855267628842e-02 + 2.350236930912776e-02 + 2.344631931433045e-02 + 2.339040237260871e-02 + 2.333461816188979e-02 + 2.327896637661412e-02 + 2.322344670789084e-02 + 2.316805883183489e-02 + 2.311280243515378e-02 + 2.305767721100430e-02 + 2.300268285332459e-02 + 2.294781904779433e-02 + 2.289308548135576e-02 + 2.283848185163481e-02 + 2.278400785322520e-02 + 2.272966317657758e-02 + 2.267544750906289e-02 + 2.262136054576819e-02 + 2.256740198705395e-02 + 2.251357153295969e-02 + 2.245986887460843e-02 + 2.240629370372433e-02 + 2.235284572997816e-02 + 2.229952464835474e-02 + 2.224633014749699e-02 + 2.219326193897085e-02 + 2.214031972536749e-02 + 2.208750320104361e-02 + 2.203481207216736e-02 + 2.198224604054712e-02 + 2.192980480490446e-02 + 2.187748807809197e-02 + 2.182529556587840e-02 + 2.177322696546572e-02 + 2.172128198614426e-02 + 2.166946034002218e-02 + 2.161776173674180e-02 + 2.156618587797776e-02 + 2.151473246970182e-02 + 2.146340122648612e-02 + 2.141219186176581e-02 + 2.136110408595206e-02 + 2.131013760699968e-02 + 2.125929213929720e-02 + 2.120856739943827e-02 + 2.115796310282077e-02 + 2.110747896148574e-02 + 2.105711468773744e-02 + 2.100686999708853e-02 + 2.095674460640470e-02 + 2.090673823470377e-02 + 2.085685060390323e-02 + 2.080708143284909e-02 + 2.075743043865024e-02 + 2.070789733896461e-02 + 2.065848185338519e-02 + 2.060918370358626e-02 + 2.056000261352416e-02 + 2.051093830731156e-02 + 2.046199050841276e-02 + 2.041315893918832e-02 + 2.036444332670061e-02 + 2.031584339811113e-02 + 2.026735887003067e-02 + 2.021898947028043e-02 + 2.017073493461869e-02 + 2.012259498752183e-02 + 2.007456935661649e-02 + 2.002665777297167e-02 + 1.997885996051357e-02 + 1.993117564943755e-02 + 1.988360457741823e-02 + 1.983614647798445e-02 + 1.978880107994216e-02 + 1.974156811085027e-02 + 1.969444731166336e-02 + 1.964743841723802e-02 + 1.960054115227784e-02 + 1.955375525837354e-02 + 1.950708047707909e-02 + 1.946051654129042e-02 + 1.941406318497287e-02 + 1.936772014474174e-02 + 1.932148716119990e-02 + 1.927536398140690e-02 + 1.922935034564512e-02 + 1.918344598004621e-02 + 1.913765063001423e-02 + 1.909196404425976e-02 + 1.904638595925336e-02 + 1.900091612254435e-02 + 1.895555428061772e-02 + 1.891030016469744e-02 + 1.886515352637163e-02 + 1.882011411999479e-02 + 1.877518167521970e-02 + 1.873035594232305e-02 + 1.868563668110157e-02 + 1.864102363246424e-02 + 1.859651653826993e-02 + 1.855211514697215e-02 + 1.850781921692858e-02 + 1.846362849811174e-02 + 1.841954273425713e-02 + 1.837556167722399e-02 + 1.833168508274460e-02 + 1.828791270638760e-02 + 1.824424429587613e-02 + 1.820067960186819e-02 + 1.815721838079814e-02 + 1.811386039242822e-02 + 1.807060539155448e-02 + 1.802745312809132e-02 + 1.798440336027523e-02 + 1.794145584667328e-02 + 1.789861034396235e-02 + 1.785586661445831e-02 + 1.781322441713358e-02 + 1.777068350457842e-02 + 1.772824363606736e-02 + 1.768590457480606e-02 + 1.764366608520215e-02 + 1.760152792777148e-02 + 1.755948986314423e-02 + 1.751755165530868e-02 + 1.747571306959304e-02 + 1.743397386795286e-02 + 1.739233380686453e-02 + 1.735079266012027e-02 + 1.730935019969591e-02 + 1.726800617515195e-02 + 1.722676035861175e-02 + 1.718561252878033e-02 + 1.714456244423200e-02 + 1.710360987245781e-02 + 1.706275458478830e-02 + 1.702199634263978e-02 + 1.698133492251816e-02 + 1.694077010510486e-02 + 1.690030164730331e-02 + 1.685992932068962e-02 + 1.681965290804600e-02 + 1.677947217681714e-02 + 1.673938689521877e-02 + 1.669939683666028e-02 + 1.665950177991986e-02 + 1.661970150205939e-02 + 1.657999577711447e-02 + 1.654038437906895e-02 + 1.650086708478969e-02 + 1.646144367321789e-02 + 1.642211391798679e-02 + 1.638287759543946e-02 + 1.634373448754158e-02 + 1.630468437732129e-02 + 1.626572704186934e-02 + 1.622686225251448e-02 + 1.618808979718675e-02 + 1.614940946170872e-02 + 1.611082101996680e-02 + 1.607232425440962e-02 + 1.603391895041710e-02 + 1.599560489122978e-02 + 1.595738185903658e-02 + 1.591924963852954e-02 + 1.588120801872957e-02 + 1.584325677844977e-02 + 1.580539569909259e-02 + 1.576762457813194e-02 + 1.572994319938502e-02 + 1.569235134492561e-02 + 1.565484881311209e-02 + 1.561743538476679e-02 + 1.558011083839993e-02 + 1.554287497958433e-02 + 1.550572759639263e-02 + 1.546866846769255e-02 + 1.543169739218311e-02 + 1.539481416304957e-02 + 1.535801856691179e-02 + 1.532131039389481e-02 + 1.528468944222785e-02 + 1.524815551153465e-02 + 1.521170838270258e-02 + 1.517534784896265e-02 + 1.513907371629201e-02 + 1.510288577422132e-02 + 1.506678381600347e-02 + 1.503076764230081e-02 + 1.499483704594779e-02 + 1.495899182406707e-02 + 1.492323178010325e-02 + 1.488755670734373e-02 + 1.485196640180961e-02 + 1.481646066682016e-02 + 1.478103929846549e-02 + 1.474570209596410e-02 + 1.471044886603309e-02 + 1.467527940456368e-02 + 1.464019351058384e-02 + 1.460519099481427e-02 + 1.457027165550810e-02 + 1.453543528903122e-02 + 1.450068170024789e-02 + 1.446601069487559e-02 + 1.443142207965322e-02 + 1.439691566271563e-02 + 1.436249124410753e-02 + 1.432814862414793e-02 + 1.429388761459182e-02 + 1.425970802314729e-02 + 1.422560965483165e-02 + 1.419159231701311e-02 + 1.415765581387266e-02 + 1.412379995194592e-02 + 1.409002455116132e-02 + 1.405632941792580e-02 + 1.402271435207008e-02 + 1.398917917303820e-02 + 1.395572369124169e-02 + 1.392234770932106e-02 + 1.388905104392205e-02 + 1.385583350997071e-02 + 1.382269491788422e-02 + 1.378963507987753e-02 + 1.375665380791922e-02 + 1.372375091366015e-02 + 1.369092621121959e-02 + 1.365817951715469e-02 + 1.362551064978645e-02 + 1.359291942581090e-02 + 1.356040565686591e-02 + 1.352796915179558e-02 + 1.349560973812908e-02 + 1.346332723540702e-02 + 1.343112144483463e-02 + 1.339899219360082e-02 + 1.336693930891053e-02 + 1.333496260043193e-02 + 1.330306188734133e-02 + 1.327123699224855e-02 + 1.323948773476910e-02 + 1.320781393642416e-02 + 1.317621541705235e-02 + 1.314469199166208e-02 + 1.311324348463446e-02 + 1.308186972415766e-02 + 1.305057053367403e-02 + 1.301934573289238e-02 + 1.298819514247371e-02 + 1.295711859027024e-02 + 1.292611590142988e-02 + 1.289518689817567e-02 + 1.286433140253433e-02 + 1.283354924175516e-02 + 1.280284024626999e-02 + 1.277220424320462e-02 + 1.274164105512193e-02 + 1.271115050454398e-02 + 1.268073242580564e-02 + 1.265038664885281e-02 + 1.262011299771964e-02 + 1.258991130045622e-02 + 1.255978138928737e-02 + 1.252972309744999e-02 + 1.249973624798444e-02 + 1.246982067106488e-02 + 1.243997620568067e-02 + 1.241020267461013e-02 + 1.238049990730756e-02 + 1.235086774662455e-02 + 1.232130602051964e-02 + 1.229181455798258e-02 + 1.226239319685087e-02 + 1.223304176770951e-02 + 1.220376010347082e-02 + 1.217454804486660e-02 + 1.214540542341299e-02 + 1.211633207079968e-02 + 1.208732782681391e-02 + 1.205839252771904e-02 + 1.202952600673308e-02 + 1.200072809652295e-02 + 1.197199864009422e-02 + 1.194333748171596e-02 + 1.191474445503102e-02 + 1.188621939116683e-02 + 1.185776212675846e-02 + 1.182937251288597e-02 + 1.180105038815069e-02 + 1.177279558400601e-02 + 1.174460794107161e-02 + 1.171648730396891e-02 + 1.168843351609301e-02 + 1.166044641171630e-02 + 1.163252583370262e-02 + 1.160467163102319e-02 + 1.157688364263099e-02 + 1.154916170933044e-02 + 1.152150567570712e-02 + 1.149391538555893e-02 + 1.146639068095789e-02 + 1.143893140447911e-02 + 1.141153740781534e-02 + 1.138420853673168e-02 + 1.135694462854312e-02 + 1.132974552839056e-02 + 1.130261108533809e-02 + 1.127554114921167e-02 + 1.124853556496432e-02 + 1.122159417997002e-02 + 1.119471684585664e-02 + 1.116790340283271e-02 + 1.114115369710312e-02 + 1.111446758944324e-02 + 1.108784492177717e-02 + 1.106128553754357e-02 + 1.103478929728668e-02 + 1.100835604711145e-02 + 1.098198563223047e-02 + 1.095567791133747e-02 + 1.092943273475230e-02 + 1.090324994987072e-02 + 1.087712940981543e-02 + 1.085107096608238e-02 + 1.082507447053145e-02 + 1.079913977931768e-02 + 1.077326674497864e-02 + 1.074745521859533e-02 + 1.072170505538783e-02 + 1.069601611066200e-02 + 1.067038823886727e-02 + 1.064482129354728e-02 + 1.061931513219808e-02 + 1.059386961330933e-02 + 1.056848458681972e-02 + 1.054315990640127e-02 + 1.051789543133304e-02 + 1.049269102209236e-02 + 1.046754653920045e-02 + 1.044246184044743e-02 + 1.041743677288729e-02 + 1.039247119540387e-02 + 1.036756497988909e-02 + 1.034271797805630e-02 + 1.031793004647734e-02 + 1.029320105343422e-02 + 1.026853085073464e-02 + 1.024391929539164e-02 + 1.021936625852857e-02 + 1.019487159885800e-02 + 1.017043517132599e-02 + 1.014605683522427e-02 + 1.012173646293816e-02 + 1.009747392058842e-02 + 1.007326905588179e-02 + 1.004912173629082e-02 + 1.002503183346208e-02 + 1.000099920653610e-02 + 9.977023717087764e-03 + 9.953105229386335e-03 + 9.929243608872406e-03 + 9.905438720973011e-03 + 9.881690430827046e-03 + 9.857998603258316e-03 + 9.834363104786413e-03 + 9.810783802355094e-03 + 9.787260560990621e-03 + 9.763793247942843e-03 + 9.740381731591760e-03 + 9.717025877967826e-03 + 9.693725554510663e-03 + 9.670480630152000e-03 + 9.647290973567844e-03 + 9.624156453317901e-03 + 9.601076938062841e-03 + 9.578052297039983e-03 + 9.555082399653962e-03 + 9.532167115690399e-03 + 9.509306316445141e-03 + 9.486499872512266e-03 + 9.463747653553711e-03 + 9.441049530896879e-03 + 9.418405376662433e-03 + 9.395815063104617e-03 + 9.373278461427175e-03 + 9.350795443499088e-03 + 9.328365882617906e-03 + 9.305989651970981e-03 + 9.283666624824176e-03 + 9.261396674723778e-03 + 9.239179675408710e-03 + 9.217015500757821e-03 + 9.194904024947497e-03 + 9.172845123632957e-03 + 9.150838672277813e-03 + 9.128884544858834e-03 + 9.106982617538152e-03 + 9.085132766987650e-03 + 9.063334868396023e-03 + 9.041588798714301e-03 + 9.019894435479832e-03 + 8.998251654894885e-03 + 8.976660334271958e-03 + 8.955120351755344e-03 + 8.933631585369030e-03 + 8.912193913264732e-03 + 8.890807213885918e-03 + 8.869471366214972e-03 + 8.848186249259440e-03 + 8.826951742251321e-03 + 8.805767725383001e-03 + 8.784634078744540e-03 + 8.763550682317645e-03 + 8.742517416743529e-03 + 8.721534162832835e-03 + 8.700600801502468e-03 + 8.679717214101214e-03 + 8.658883282492529e-03 + 8.638098888885700e-03 + 8.617363915025602e-03 + 8.596678243443276e-03 + 8.576041757693640e-03 + 8.555454340593486e-03 + 8.534915875110577e-03 + 8.514426244844865e-03 + 8.493985333674233e-03 + 8.473593025909724e-03 + 8.453249206335058e-03 + 8.432953759374154e-03 + 8.412706569850796e-03 + 8.392507523503252e-03 + 8.372356505624580e-03 + 8.352253401838657e-03 + 8.332198098800467e-03 + 8.312190482450988e-03 + 8.292230438871008e-03 + 8.272317855399050e-03 + 8.252452619663047e-03 + 8.232634619050869e-03 + 8.212863740331295e-03 + 8.193139871755427e-03 + 8.173462902270600e-03 + 8.153832719956143e-03 + 8.134249213438031e-03 + 8.114712271802299e-03 + 8.095221784035302e-03 + 8.075777639824947e-03 + 8.056379729417138e-03 + 8.037027942938956e-03 + 8.017722170154111e-03 + 7.998462301028743e-03 + 7.979248227381455e-03 + 7.960079840401237e-03 + 7.940957030626293e-03 + 7.921879690329333e-03 + 7.902847711453821e-03 + 7.883860985421759e-03 + 7.864919405368889e-03 + 7.846022864037674e-03 + 7.827171253341911e-03 + 7.808364466777525e-03 + 7.789602397948123e-03 + 7.770884940051978e-03 + 7.752211987488857e-03 + 7.733583434567862e-03 + 7.714999174963997e-03 + 7.696459103766686e-03 + 7.677963116338556e-03 + 7.659511107448910e-03 + 7.641102971817726e-03 + 7.622738605046243e-03 + 7.604417904226960e-03 + 7.586140765207791e-03 + 7.567907083543369e-03 + 7.549716755813157e-03 + 7.531569679511053e-03 + 7.513465752109027e-03 + 7.495404870064185e-03 + 7.477386931039745e-03 + 7.459411833357052e-03 + 7.441479474804043e-03 + 7.423589753808636e-03 + 7.405742569108545e-03 + 7.387937818890154e-03 + 7.370175402616828e-03 + 7.352455220325825e-03 + 7.334777170378787e-03 + 7.317141152312192e-03 + 7.299547066866589e-03 + 7.281994814230038e-03 + 7.264484294760120e-03 + 7.247015409129196e-03 + 7.229588058070396e-03 + 7.212202142721502e-03 + 7.194857564639825e-03 + 7.177554225359851e-03 + 7.160292026920549e-03 + 7.143070871828701e-03 + 7.125890661781023e-03 + 7.108751299151369e-03 + 7.091652687463649e-03 + 7.074594729473165e-03 + 7.057577328092346e-03 + 7.040600386920140e-03 + 7.023663809440293e-03 + 7.006767499621119e-03 + 6.989911362283671e-03 + 6.973095301761098e-03 + 6.956319222246642e-03 + 6.939583028242014e-03 + 6.922886624933184e-03 + 6.906229917977133e-03 + 6.889612813237578e-03 + 6.873035215956658e-03 + 6.856497031627250e-03 + 6.839998167124653e-03 + 6.823538528849983e-03 + 6.807118022950776e-03 + 6.790736556102037e-03 + 6.774394036012678e-03 + 6.758090370503938e-03 + 6.741825465874382e-03 + 6.725599229831710e-03 + 6.709411571076730e-03 + 6.693262397262002e-03 + 6.677151616823099e-03 + 6.661079138883049e-03 + 6.645044871881905e-03 + 6.629048724424302e-03 + 6.613090605727208e-03 + 6.597170426169362e-03 + 6.581288095176429e-03 + 6.565443521393368e-03 + 6.549636616015259e-03 + 6.533867289690503e-03 + 6.518135451870410e-03 + 6.502441013826720e-03 + 6.486783886693610e-03 + 6.471163980906190e-03 + 6.455581208648475e-03 + 6.440035481784445e-03 + 6.424526710952946e-03 + 6.409054808194274e-03 + 6.393619686148648e-03 + 6.378221257389647e-03 + 6.362859434216829e-03 + 6.347534129405275e-03 + 6.332245256702231e-03 + 6.316992728926398e-03 + 6.301776458848883e-03 + 6.286596360249587e-03 + 6.271452347303485e-03 + 6.256344334335297e-03 + 6.241272235637497e-03 + 6.226235965289892e-03 + 6.211235437617355e-03 + 6.196270567881593e-03 + 6.181341271239764e-03 + 6.166447462747857e-03 + 6.151589057705613e-03 + 6.136765971896623e-03 + 6.121978121401951e-03 + 6.107225422158738e-03 + 6.092507790132517e-03 + 6.077825141615326e-03 + 6.063177393866219e-03 + 6.048564463915550e-03 + 6.033986268442907e-03 + 6.019442724444331e-03 + 6.004933749322879e-03 + 5.990459260846786e-03 + 5.976019176895193e-03 + 5.961613415583682e-03 + 5.947241895231883e-03 + 5.932904533953020e-03 + 5.918601250164555e-03 + 5.904331962789744e-03 + 5.890096590861083e-03 + 5.875895053571317e-03 + 5.861727270328322e-03 + 5.847593160694864e-03 + 5.833492644473149e-03 + 5.819425641715960e-03 + 5.805392072163253e-03 + 5.791391855962741e-03 + 5.777424914193254e-03 + 5.763491167389796e-03 + 5.749590536018355e-03 + 5.735722941127108e-03 + 5.721888304505554e-03 + 5.708086547766434e-03 + 5.694317591457392e-03 + 5.680581357894303e-03 + 5.666877769868901e-03 + 5.653206748498332e-03 + 5.639568216215936e-03 + 5.625962096156960e-03 + 5.612388310444156e-03 + 5.598846782244085e-03 + 5.585337435180374e-03 + 5.571860191464977e-03 + 5.558414974887664e-03 + 5.545001710146245e-03 + 5.531620319651646e-03 + 5.518270727342278e-03 + 5.504952858629092e-03 + 5.491666637149790e-03 + 5.478411987013346e-03 + 5.465188833301630e-03 + 5.451997101098349e-03 + 5.438836715460566e-03 + 5.425707601454353e-03 + 5.412609684284744e-03 + 5.399542889597323e-03 + 5.386507143481766e-03 + 5.373502371672819e-03 + 5.360528500347250e-03 + 5.347585456320476e-03 + 5.334673165238440e-03 + 5.321791553290573e-03 + 5.308940548233661e-03 + 5.296120077396591e-03 + 5.283330067535706e-03 + 5.270570445063373e-03 + 5.257841138170363e-03 + 5.245142075198895e-03 + 5.232473183108559e-03 + 5.219834389656078e-03 + 5.207225623450342e-03 + 5.194646813662877e-03 + 5.182097888019903e-03 + 5.169578774433769e-03 + 5.157089403379224e-03 + 5.144629703265777e-03 + 5.132199601938705e-03 + 5.119799030212023e-03 + 5.107427917986021e-03 + 5.095086194230444e-03 + 5.082773788422456e-03 + 5.070490630851877e-03 + 5.058236652191947e-03 + 5.046011782411770e-03 + 5.033815952050060e-03 + 5.021649092096963e-03 + 5.009511132708167e-03 + 4.997402004872952e-03 + 4.985321640554899e-03 + 4.973269971256597e-03 + 4.961246927915243e-03 + 4.949252441362114e-03 + 4.937286444284467e-03 + 4.925348869112448e-03 + 4.913439647407981e-03 + 4.901558711796497e-03 + 4.889705994683389e-03 + 4.877881427891544e-03 + 4.866084944974813e-03 + 4.854316479151838e-03 + 4.842575962313763e-03 + 4.830863328342665e-03 + 4.819178511323663e-03 + 4.807521444209243e-03 + 4.795892060902922e-03 + 4.784290295384500e-03 + 4.772716080911616e-03 + 4.761169351999607e-03 + 4.749650043687660e-03 + 4.738158090505544e-03 + 4.726693426328077e-03 + 4.715255985490762e-03 + 4.703845704177584e-03 + 4.692462517255530e-03 + 4.681106359266913e-03 + 4.669777166671382e-03 + 4.658474874679097e-03 + 4.647199418051047e-03 + 4.635950733693824e-03 + 4.624728757814554e-03 + 4.613533426035275e-03 + 4.602364675085555e-03 + 4.591222441193854e-03 + 4.580106660340010e-03 + 4.569017270133631e-03 + 4.557954207729684e-03 + 4.546917409606468e-03 + 4.535906813063030e-03 + 4.524922355662980e-03 + 4.513963975024341e-03 + 4.503031608847450e-03 + 4.492125194604706e-03 + 4.481244669721014e-03 + 4.470389973075004e-03 + 4.459561043403103e-03 + 4.448757818627942e-03 + 4.437980237157132e-03 + 4.427228237584914e-03 + 4.416501758569245e-03 + 4.405800739475310e-03 + 4.395125119625431e-03 + 4.384474837838549e-03 + 4.373849833628650e-03 + 4.363250046735974e-03 + 4.352675416676511e-03 + 4.342125883231542e-03 + 4.331601386396421e-03 + 4.321101866314548e-03 + 4.310627263408189e-03 + 4.300177518182486e-03 + 4.289752570999768e-03 + 4.279352362569397e-03 + 4.268976833692708e-03 + 4.258625924837488e-03 + 4.248299577436886e-03 + 4.237997733292803e-03 + 4.227720333115902e-03 + 4.217467318344088e-03 + 4.207238631130676e-03 + 4.197034213451204e-03 + 4.186854006892898e-03 + 4.176697952964437e-03 + 4.166565994071401e-03 + 4.156458073034852e-03 + 4.146374132669977e-03 + 4.136314114934178e-03 + 4.126277962231265e-03 + 4.116265617785051e-03 + 4.106277025130100e-03 + 4.096312127225507e-03 + 4.086370866498099e-03 + 4.076453186851077e-03 + 4.066559032318193e-03 + 4.056688346384167e-03 + 4.046841072375552e-03 + 4.037017154234894e-03 + 4.027216536753351e-03 + 4.017439163691562e-03 + 4.007684978984143e-03 + 3.997953927616382e-03 + 3.988245954341580e-03 + 3.978561003853811e-03 + 3.968899020987378e-03 + 3.959259950174110e-03 + 3.949643736363211e-03 + 3.940050325917084e-03 + 3.930479663940112e-03 + 3.920931695287086e-03 + 3.911406366153988e-03 + 3.901903622192779e-03 + 3.892423408886956e-03 + 3.882965672529350e-03 + 3.873530359308857e-03 + 3.864117415340676e-03 + 3.854726787040829e-03 + 3.845358421069152e-03 + 3.836012264203419e-03 + 3.826688263119290e-03 + 3.817386364639579e-03 + 3.808106515834866e-03 + 3.798848664119608e-03 + 3.789612756624806e-03 + 3.780398740246358e-03 + 3.771206562411011e-03 + 3.762036171140922e-03 + 3.752887514765301e-03 + 3.743760540740341e-03 + 3.734655196719529e-03 + 3.725571430980986e-03 + 3.716509192135922e-03 + 3.707468428387338e-03 + 3.698449087559120e-03 + 3.689451119263604e-03 + 3.680474472533827e-03 + 3.671519094850921e-03 + 3.662584935894309e-03 + 3.653671945297336e-03 + 3.644780071212910e-03 + 3.635909263417586e-03 + 3.627059471971036e-03 + 3.618230645951014e-03 + 3.609422734605362e-03 + 3.600635687799489e-03 + 3.591869456282116e-03 + 3.583123989955615e-03 + 3.574399238584414e-03 + 3.565695152845392e-03 + 3.557011682930304e-03 + 3.548348778903569e-03 + 3.539706391532652e-03 + 3.531084471778191e-03 + 3.522482970666699e-03 + 3.513901839239252e-03 + 3.505341028388093e-03 + 3.496800489111114e-03 + 3.488280173119797e-03 + 3.479780031892506e-03 + 3.471300016604386e-03 + 3.462840078578430e-03 + 3.454400170006921e-03 + 3.445980243580072e-03 + 3.437580250715228e-03 + 3.429200142992534e-03 + 3.420839872683964e-03 + 3.412499392748279e-03 + 3.404178655562702e-03 + 3.395877612913789e-03 + 3.387596218304602e-03 + 3.379334424898988e-03 + 3.371092184764359e-03 + 3.362869450661228e-03 + 3.354666175991870e-03 + 3.346482314543412e-03 + 3.338317819175880e-03 + 3.330172642972068e-03 + 3.322046740007612e-03 + 3.313940064235304e-03 + 3.305852569386344e-03 + 3.297784208976364e-03 + 3.289734936574093e-03 + 3.281704706272533e-03 + 3.273693473070924e-03 + 3.265701191257636e-03 + 3.257727814803984e-03 + 3.249773298074863e-03 + 3.241837595979994e-03 + 3.233920663596386e-03 + 3.226022455622204e-03 + 3.218142926555998e-03 + 3.210282031163023e-03 + 3.202439725215123e-03 + 3.194615964134223e-03 + 3.186810703067027e-03 + 3.179023897602838e-03 + 3.171255503398923e-03 + 3.163505475998486e-03 + 3.155773770652277e-03 + 3.148060343553685e-03 + 3.140365151430291e-03 + 3.132688149313277e-03 + 3.125029293443853e-03 + 3.117388541383308e-03 + 3.109765848736372e-03 + 3.102161171408776e-03 + 3.094574466373093e-03 + 3.087005690728782e-03 + 3.079454801280003e-03 + 3.071921754555924e-03 + 3.064406507880629e-03 + 3.056909018530570e-03 + 3.049429243338136e-03 + 3.041967139485151e-03 + 3.034522664377966e-03 + 3.027095775562892e-03 + 3.019686430816400e-03 + 3.012294588055786e-03 + 3.004920205212209e-03 + 2.997563239705405e-03 + 2.990223649173174e-03 + 2.982901392198357e-03 + 2.975596427311395e-03 + 2.968308712822513e-03 + 2.961038206776656e-03 + 2.953784867392937e-03 + 2.946548653201694e-03 + 2.939329523194637e-03 + 2.932127436582907e-03 + 2.924942352269057e-03 + 2.917774228121468e-03 + 2.910623023643702e-03 + 2.903488699056754e-03 + 2.896371212514376e-03 + 2.889270523304112e-03 + 2.882186591679052e-03 + 2.875119376658924e-03 + 2.868068837676741e-03 + 2.861034934776638e-03 + 2.854017627809473e-03 + 2.847016876513213e-03 + 2.840032640686938e-03 + 2.833064880681456e-03 + 2.826113557103426e-03 + 2.819178630449384e-03 + 2.812260060105674e-03 + 2.805357806481411e-03 + 2.798471831428214e-03 + 2.791602094948384e-03 + 2.784748557109701e-03 + 2.777911179108391e-03 + 2.771089922400815e-03 + 2.764284748007964e-03 + 2.757495616304825e-03 + 2.750722488782177e-03 + 2.743965327115693e-03 + 2.737224092409578e-03 + 2.730498746008289e-03 + 2.723789249648372e-03 + 2.717095565426717e-03 + 2.710417654358784e-03 + 2.703755477800617e-03 + 2.697108999073383e-03 + 2.690478179939920e-03 + 2.683862981660020e-03 + 2.677263366970269e-03 + 2.670679298051182e-03 + 2.664110736894467e-03 + 2.657557646411518e-03 + 2.651019989061974e-03 + 2.644497727126834e-03 + 2.637990823748049e-03 + 2.631499241776077e-03 + 2.625022943767310e-03 + 2.618561892619121e-03 + 2.612116051581085e-03 + 2.605685383984310e-03 + 2.599269852507916e-03 + 2.592869420565223e-03 + 2.586484052278204e-03 + 2.580113710814501e-03 + 2.573758359383719e-03 + 2.567417961609419e-03 + 2.561092481362380e-03 + 2.554781882413309e-03 + 2.548486128464411e-03 + 2.542205184036424e-03 + 2.535939013422343e-03 + 2.529687580238901e-03 + 2.523450848436006e-03 + 2.517228782352248e-03 + 2.511021346720505e-03 + 2.504828506444104e-03 + 2.498650225958320e-03 + 2.492486468967693e-03 + 2.486337200680032e-03 + 2.480202386472821e-03 + 2.474081990653096e-03 + 2.467975978460781e-03 + 2.461884315215007e-03 + 2.455806965243642e-03 + 2.449743893777428e-03 + 2.443695066608286e-03 + 2.437660449328877e-03 + 2.431640007119714e-03 + 2.425633705211946e-03 + 2.419641509634817e-03 + 2.413663385966202e-03 + 2.407699299632079e-03 + 2.401749216909934e-03 + 2.395813103777745e-03 + 2.389890925926915e-03 + 2.383982649399740e-03 + 2.378088240561300e-03 + 2.372207665865560e-03 + 2.366340891258303e-03 + 2.360487883037754e-03 + 2.354648608018378e-03 + 2.348823033118129e-03 + 2.343011124539103e-03 + 2.337212848054228e-03 + 2.331428171390765e-03 + 2.325657062040943e-03 + 2.319899486412222e-03 + 2.314155410784699e-03 + 2.308424802407836e-03 + 2.302707629600105e-03 + 2.297003858807791e-03 + 2.291313456815245e-03 + 2.285636391934661e-03 + 2.279972631361444e-03 + 2.274322142294874e-03 + 2.268684892803898e-03 + 2.263060850445441e-03 + 2.257449982675230e-03 + 2.251852257331842e-03 + 2.246267642469826e-03 + 2.240696106224612e-03 + 2.235137616698782e-03 + 2.229592141925271e-03 + 2.224059650030012e-03 + 2.218540109447705e-03 + 2.213033488566449e-03 + 2.207539755750870e-03 + 2.202058879448589e-03 + 2.196590827868759e-03 + 2.191135569406817e-03 + 2.185693073538250e-03 + 2.180263309295804e-03 + 2.174846245146934e-03 + 2.169441849486111e-03 + 2.164050091629877e-03 + 2.158670941358884e-03 + 2.153304367034930e-03 + 2.147950337590323e-03 + 2.142608822828710e-03 + 2.137279792340324e-03 + 2.131963215445541e-03 + 2.126659061301170e-03 + 2.121367299363035e-03 + 2.116087899310018e-03 + 2.110820830985273e-03 + 2.105566064252215e-03 + 2.100323568822542e-03 + 2.095093314356113e-03 + 2.089875271479949e-03 + 2.084669410319118e-03 + 2.079475699908646e-03 + 2.074294110902819e-03 + 2.069124614088778e-03 + 2.063967179294363e-03 + 2.058821776747180e-03 + 2.053688376991423e-03 + 2.048566950718572e-03 + 2.043457468582260e-03 + 2.038359901240009e-03 + 2.033274219398007e-03 + 2.028200393563254e-03 + 2.023138394473247e-03 + 2.018088193625467e-03 + 2.013049761808302e-03 + 2.008023069533293e-03 + 2.003008088023720e-03 + 1.998004788922133e-03 + 1.993013143739461e-03 + 1.988033123025423e-03 + 1.983064698401174e-03 + 1.978107841939004e-03 + 1.973162523959716e-03 + 1.968228716337500e-03 + 1.963306391971906e-03 + 1.958395521239848e-03 + 1.953496075620802e-03 + 1.948608028019931e-03 + 1.943731350228688e-03 + 1.938866013789267e-03 + 1.934011990485791e-03 + 1.929169252901841e-03 + 1.924337773155020e-03 + 1.919517522737516e-03 + 1.914708474346116e-03 + 1.909910600724645e-03 + 1.905123874118434e-03 + 1.900348266781407e-03 + 1.895583751238830e-03 + 1.890830300301618e-03 + 1.886087886140893e-03 + 1.881356481302734e-03 + 1.876636059328014e-03 + 1.871926593048255e-03 + 1.867228054886164e-03 + 1.862540417322874e-03 + 1.857863653843670e-03 + 1.853197738035545e-03 + 1.848542642643349e-03 + 1.843898340659710e-03 + 1.839264805482605e-03 + 1.834642010884087e-03 + 1.830029929675155e-03 + 1.825428534756660e-03 + 1.820837800826725e-03 + 1.816257700994342e-03 + 1.811688207883416e-03 + 1.807129296515363e-03 + 1.802580940478343e-03 + 1.798043112569654e-03 + 1.793515787775185e-03 + 1.788998939681262e-03 + 1.784492541016137e-03 + 1.779996567290557e-03 + 1.775510992946437e-03 + 1.771035790955467e-03 + 1.766570935188881e-03 + 1.762116400368900e-03 + 1.757672161650980e-03 + 1.753238193179788e-03 + 1.748814468721301e-03 + 1.744400962234815e-03 + 1.739997649147064e-03 + 1.735604504535336e-03 + 1.731221502449809e-03 + 1.726848617398671e-03 + 1.722485824273258e-03 + 1.718133098140551e-03 + 1.713790413411143e-03 + 1.709457744960287e-03 + 1.705135068710917e-03 + 1.700822359316501e-03 + 1.696519591326764e-03 + 1.692226740206531e-03 + 1.687943780998710e-03 + 1.683670689031842e-03 + 1.679407440586236e-03 + 1.675154010255336e-03 + 1.670910372590760e-03 + 1.666676504276520e-03 + 1.662452380680008e-03 + 1.658237976786625e-03 + 1.654033269138933e-03 + 1.649838233189823e-03 + 1.645652843894769e-03 + 1.641477077483747e-03 + 1.637310910181093e-03 + 1.633154317979306e-03 + 1.629007276710043e-03 + 1.624869761977525e-03 + 1.620741749539434e-03 + 1.616623216289868e-03 + 1.612514138626602e-03 + 1.608414492386588e-03 + 1.604324254066237e-03 + 1.600243399893093e-03 + 1.596171905775712e-03 + 1.592109748332882e-03 + 1.588056904380057e-03 + 1.584013350591343e-03 + 1.579979063015354e-03 + 1.575954018417919e-03 + 1.571938194458784e-03 + 1.567931567017785e-03 + 1.563934112240304e-03 + 1.559945807641685e-03 + 1.555966630779868e-03 + 1.551996558434039e-03 + 1.548035566441649e-03 + 1.544083632647983e-03 + 1.540140734902817e-03 + 1.536206849423688e-03 + 1.532281953055403e-03 + 1.528366023373284e-03 + 1.524459038476067e-03 + 1.520560975283225e-03 + 1.516671810636623e-03 + 1.512791522697568e-03 + 1.508920088807869e-03 + 1.505057486015793e-03 + 1.501203692209861e-03 + 1.497358685322736e-03 + 1.493522443062933e-03 + 1.489694942724099e-03 + 1.485876162194853e-03 + 1.482066079697174e-03 + 1.478264672890618e-03 + 1.474471919644568e-03 + 1.470687798121700e-03 + 1.466912286519041e-03 + 1.463145362594138e-03 + 1.459387003990816e-03 + 1.455637189563730e-03 + 1.451895897787254e-03 + 1.448163106500405e-03 + 1.444438793947980e-03 + 1.440722938760434e-03 + 1.437015519703072e-03 + 1.433316514691718e-03 + 1.429625901910583e-03 + 1.425943660193772e-03 + 1.422269768088744e-03 + 1.418604204318803e-03 + 1.414946947952337e-03 + 1.411297977567125e-03 + 1.407657271824714e-03 + 1.404024809794961e-03 + 1.400400570139807e-03 + 1.396784531434119e-03 + 1.393176672533590e-03 + 1.389576972970703e-03 + 1.385985412235932e-03 + 1.382401969107074e-03 + 1.378826622443783e-03 + 1.375259351219489e-03 + 1.371700134514839e-03 + 1.368148952079336e-03 + 1.364605783757036e-03 + 1.361070608632290e-03 + 1.357543405835987e-03 + 1.354024154621594e-03 + 1.350512834317403e-03 + 1.347009424934256e-03 + 1.343513906652181e-03 + 1.340026258589547e-03 + 1.336546459739890e-03 + 1.333074489680093e-03 + 1.329610329681042e-03 + 1.326153959375566e-03 + 1.322705357081586e-03 + 1.319264503327096e-03 + 1.315831378649060e-03 + 1.312405962942001e-03 + 1.308988235813027e-03 + 1.305578177302038e-03 + 1.302175767936687e-03 + 1.298780987783750e-03 + 1.295393816813521e-03 + 1.292014235092867e-03 + 1.288642222828844e-03 + 1.285277760581296e-03 + 1.281920829182064e-03 + 1.278571408463430e-03 + 1.275229478684235e-03 + 1.271895021211065e-03 + 1.268568016022571e-03 + 1.265248443161927e-03 + 1.261936283866222e-03 + 1.258631518851812e-03 + 1.255334128626978e-03 + 1.252044093890807e-03 + 1.248761395151665e-03 + 1.245486013113075e-03 + 1.242217929129610e-03 + 1.238957124307338e-03 + 1.235703579418827e-03 + 1.232457274959363e-03 + 1.229218191838193e-03 + 1.225986311430220e-03 + 1.222761615473843e-03 + 1.219544084856006e-03 + 1.216333699988417e-03 + 1.213130441964228e-03 + 1.209934292565758e-03 + 1.206745233676102e-03 + 1.203563245963205e-03 + 1.200388310525061e-03 + 1.197220409053557e-03 + 1.194059523052293e-03 + 1.190905633902454e-03 + 1.187758723052301e-03 + 1.184618772531461e-03 + 1.181485763720917e-03 + 1.178359677471923e-03 + 1.175240496495629e-03 + 1.172128202790389e-03 + 1.169022777016151e-03 + 1.165924201427151e-03 + 1.162832457974330e-03 + 1.159747527667428e-03 + 1.156669393342115e-03 + 1.153598037513975e-03 + 1.150533441195656e-03 + 1.147475586343000e-03 + 1.144424455192698e-03 + 1.141380029693999e-03 + 1.138342292070108e-03 + 1.135311224784675e-03 + 1.132286810371483e-03 + 1.129269030382949e-03 + 1.126257866687504e-03 + 1.123253302806332e-03 + 1.120255320585528e-03 + 1.117263901594027e-03 + 1.114279029333705e-03 + 1.111300685926414e-03 + 1.108328853214485e-03 + 1.105363515126287e-03 + 1.102404653695880e-03 + 1.099452250276090e-03 + 1.096506289065756e-03 + 1.093566752790314e-03 + 1.090633622975802e-03 + 1.087706882683815e-03 + 1.084786514992603e-03 + 1.081872502714538e-03 + 1.078964828755093e-03 + 1.076063476054719e-03 + 1.073168427526746e-03 + 1.070279665938792e-03 + 1.067397174442816e-03 + 1.064520936417689e-03 + 1.061650934087830e-03 + 1.058787150577005e-03 + 1.055929570192933e-03 + 1.053078175257412e-03 + 1.050232948596978e-03 + 1.047393874491941e-03 + 1.044560935952646e-03 + 1.041734115621369e-03 + 1.038913396581877e-03 + 1.036098763274602e-03 + 1.033290199394467e-03 + 1.030487686748966e-03 + 1.027691209748195e-03 + 1.024900752824401e-03 + 1.022116298137994e-03 + 1.019337829638554e-03 + 1.016565331581354e-03 + 1.013798786681050e-03 + 1.011038178744547e-03 + 1.008283492069452e-03 + 1.005534710312413e-03 + 1.002791817167788e-03 + 1.000054796401326e-03 + 9.973236317525795e-04 + 9.945983071579347e-04 + 9.918788066535795e-04 + 9.891651141399331e-04 + 9.864572135795289e-04 + 9.837550890187182e-04 + 9.810587245440681e-04 + 9.783681042165289e-04 + 9.756832121036981e-04 + 9.730040324093254e-04 + 9.703305493295432e-04 + 9.676627470403841e-04 + 9.650006098016114e-04 + 9.623441219373007e-04 + 9.596932677964791e-04 + 9.570480316324495e-04 + 9.544083978205768e-04 + 9.517743508934125e-04 + 9.491458752396962e-04 + 9.465229553012878e-04 + 9.439055756501852e-04 + 9.412937207895038e-04 + 9.386873752809525e-04 + 9.360865238076440e-04 + 9.334911509791107e-04 + 9.309012414140627e-04 + 9.283167798171848e-04 + 9.257377509839119e-04 + 9.231641396993918e-04 + 9.205959306774516e-04 + 9.180331088080401e-04 + 9.154756590138127e-04 + 9.129235660962607e-04 + 9.103768149701878e-04 + 9.078353906321772e-04 + 9.052992780955343e-04 + 9.027684623946166e-04 + 9.002429285800444e-04 + 8.977226617159664e-04 + 8.952076469091944e-04 + 8.926978693026045e-04 + 8.901933140640126e-04 + 8.876939664445818e-04 + 8.851998117353022e-04 + 8.827108351548252e-04 + 8.802270219825557e-04 + 8.777483575705740e-04 + 8.752748272927118e-04 + 8.728064165680979e-04 + 8.703431108522175e-04 + 8.678848955854838e-04 + 8.654317562117358e-04 + 8.629836782258149e-04 + 8.605406473168484e-04 + 8.581026490766350e-04 + 8.556696689660546e-04 + 8.532416927295966e-04 + 8.508187061075220e-04 + 8.484006947265324e-04 + 8.459876443379812e-04 + 8.435795407180884e-04 + 8.411763696276702e-04 + 8.387781169670006e-04 + 8.363847686436173e-04 + 8.339963104952486e-04 + 8.316127284703911e-04 + 8.292340085393665e-04 + 8.268601366269382e-04 + 8.244910987818749e-04 + 8.221268810991789e-04 + 8.197674696351961e-04 + 8.174128504795555e-04 + 8.150630097863373e-04 + 8.127179337987174e-04 + 8.103776086785577e-04 + 8.080420206116735e-04 + 8.057111559859151e-04 + 8.033850010442538e-04 + 8.010635420033148e-04 + 7.987467653572807e-04 + 7.964346575211490e-04 + 7.941272048473775e-04 + 7.918243938145987e-04 + 7.895262109139402e-04 + 7.872326426395918e-04 + 7.849436755404454e-04 + 7.826592961986925e-04 + 7.803794912312032e-04 + 7.781042473133076e-04 + 7.758335511109105e-04 + 7.735673892815593e-04 + 7.713057485643111e-04 + 7.690486157536814e-04 + 7.667959776727836e-04 + 7.645478211004869e-04 + 7.623041328912646e-04 + 7.600649000053854e-04 + 7.578301093264215e-04 + 7.555997477583347e-04 + 7.533738022910566e-04 + 7.511522599897612e-04 + 7.489351079282785e-04 + 7.467223331578882e-04 + 7.445139227962291e-04 + 7.423098639775247e-04 + 7.401101438263767e-04 + 7.379147496119391e-04 + 7.357236686066337e-04 + 7.335368879604144e-04 + 7.313543950177981e-04 + 7.291761771981462e-04 + 7.270022218267318e-04 + 7.248325162821272e-04 + 7.226670479949025e-04 + 7.205058044241288e-04 + 7.183487730730944e-04 + 7.161959414766152e-04 + 7.140472971809699e-04 + 7.119028277561113e-04 + 7.097625208231147e-04 + 7.076263641063239e-04 + 7.054943452576004e-04 + 7.033664519218169e-04 + 7.012426719956601e-04 + 6.991229932510109e-04 + 6.970074033540157e-04 + 6.948958902400331e-04 + 6.927884418689321e-04 + 6.906850461485944e-04 + 6.885856909689247e-04 + 6.864903643067344e-04 + 6.843990542306164e-04 + 6.823117487354689e-04 + 6.802284359113009e-04 + 6.781491039842488e-04 + 6.760737410664455e-04 + 6.740023352773578e-04 + 6.719348748282754e-04 + 6.698713480434448e-04 + 6.678117432465053e-04 + 6.657560487034911e-04 + 6.637042527655789e-04 + 6.616563438432147e-04 + 6.596123103782944e-04 + 6.575721408025738e-04 + 6.555358236048545e-04 + 6.535033473936704e-04 + 6.514747007198682e-04 + 6.494498721244171e-04 + 6.474288502266283e-04 + 6.454116237722280e-04 + 6.433981815196293e-04 + 6.413885120963034e-04 + 6.393826043225120e-04 + 6.373804471016686e-04 + 6.353820291728463e-04 + 6.333873394523912e-04 + 6.313963669651093e-04 + 6.294091005879305e-04 + 6.274255292885601e-04 + 6.254456421348147e-04 + 6.234694281911996e-04 + 6.214968766042923e-04 + 6.195279765738893e-04 + 6.175627172048796e-04 + 6.156010877068991e-04 + 6.136430774102346e-04 + 6.116886755862946e-04 + 6.097378715435904e-04 + 6.077906546697107e-04 + 6.058470144286753e-04 + 6.039069402835228e-04 + 6.019704216802507e-04 + 6.000374481409778e-04 + 5.981080092530985e-04 + 5.961820946588096e-04 + 5.942596940083503e-04 + 5.923407969721301e-04 + 5.904253932616448e-04 + 5.885134726736782e-04 + 5.866050250202793e-04 + 5.847000400980857e-04 + 5.827985078791194e-04 + 5.809004183470366e-04 + 5.790057613579966e-04 + 5.771145269606196e-04 + 5.752267052829598e-04 + 5.733422863841403e-04 + 5.714612604000550e-04 + 5.695836175305099e-04 + 5.677093480037018e-04 + 5.658384420678564e-04 + 5.639708900266142e-04 + 5.621066823022896e-04 + 5.602458092869138e-04 + 5.583882613744714e-04 + 5.565340290827777e-04 + 5.546831029664671e-04 + 5.528354736013446e-04 + 5.509911316015094e-04 + 5.491500676402182e-04 + 5.473122724461832e-04 + 5.454777367810608e-04 + 5.436464514412940e-04 + 5.418184072613321e-04 + 5.399935951226492e-04 + 5.381720060069473e-04 + 5.363536309736959e-04 + 5.345384609776805e-04 + 5.327264870731968e-04 + 5.309177004752346e-04 + 5.291120923593077e-04 + 5.273096539494221e-04 + 5.255103765544823e-04 + 5.237142514407170e-04 + 5.219212699733492e-04 + 5.201314236865307e-04 + 5.183447040146093e-04 + 5.165611024246747e-04 + 5.147806105331874e-04 + 5.130032200114061e-04 + 5.112289225530487e-04 + 5.094577098620987e-04 + 5.076895736854020e-04 + 5.059245058583464e-04 + 5.041624983517820e-04 + 5.024035430839573e-04 + 5.006476319990773e-04 + 4.988947572035529e-04 + 4.971449107942239e-04 + 4.953980848818115e-04 + 4.936542716805855e-04 + 4.919134634956966e-04 + 4.901756526846954e-04 + 4.884408316006080e-04 + 4.867089926403434e-04 + 4.849801282731475e-04 + 4.832542310892493e-04 + 4.815312937309208e-04 + 4.798113088560132e-04 + 4.780942690954599e-04 + 4.763801672259719e-04 + 4.746689961731605e-04 + 4.729607488395965e-04 + 4.712554181333483e-04 + 4.695529970142063e-04 + 4.678534786182833e-04 + 4.661568561056742e-04 + 4.644631226216267e-04 + 4.627722714285577e-04 + 4.610842958399921e-04 + 4.593991892076899e-04 + 4.577169450300335e-04 + 4.560375568336446e-04 + 4.543610181249096e-04 + 4.526873225594637e-04 + 4.510164638467393e-04 + 4.493484356950898e-04 + 4.476832319569833e-04 + 4.460208465382815e-04 + 4.443612733350173e-04 + 4.427045064285867e-04 + 4.410505399510805e-04 + 4.393993679504339e-04 + 4.377509846774214e-04 + 4.361053844834223e-04 + 4.344625616662297e-04 + 4.328225106365193e-04 + 4.311852259097922e-04 + 4.295507020701359e-04 + 4.279189337521271e-04 + 4.262899156467061e-04 + 4.246636425301464e-04 + 4.230401092565931e-04 + 4.214193107478168e-04 + 4.198012419839599e-04 + 4.181858979868060e-04 + 4.165732738692198e-04 + 4.149633649793705e-04 + 4.133561665739344e-04 + 4.117516738453971e-04 + 4.101498823326724e-04 + 4.085507876181731e-04 + 4.069543852399522e-04 + 4.053606707914893e-04 + 4.037696400086752e-04 + 4.021812887746215e-04 + 4.005956129436248e-04 + 3.990126084760660e-04 + 3.974322714846641e-04 + 3.958545980293214e-04 + 3.942795842513983e-04 + 3.927072264688036e-04 + 3.911375211195356e-04 + 3.895704646516968e-04 + 3.880060534869329e-04 + 3.864442842922655e-04 + 3.848851538066537e-04 + 3.833286587063809e-04 + 3.817747958651508e-04 + 3.802235622593628e-04 + 3.786749548688228e-04 + 3.771289708205180e-04 + 3.755856073392733e-04 + 3.740448616816441e-04 + 3.725067311649692e-04 + 3.709712132043737e-04 + 3.694383053790672e-04 + 3.679080053579325e-04 + 3.663803108503057e-04 + 3.648552195606523e-04 + 3.633327293646475e-04 + 3.618128382932607e-04 + 3.602955444344858e-04 + 3.587808459078391e-04 + 3.572687408998931e-04 + 3.557592277792442e-04 + 3.542523049927096e-04 + 3.527479710408145e-04 + 3.512462245019904e-04 + 3.497470640500036e-04 + 3.482504884770882e-04 + 3.467564967437580e-04 + 3.452650877985240e-04 + 3.437762605764859e-04 + 3.422900143250168e-04 + 3.408063483640538e-04 + 3.393252619896345e-04 + 3.378467546103840e-04 + 3.363708257653936e-04 + 3.348974751341996e-04 + 3.334267024660963e-04 + 3.319585075646510e-04 + 3.304928903038992e-04 + 3.290298507212495e-04 + 3.275693889604049e-04 + 3.261115052402690e-04 + 3.246561999078441e-04 + 3.232034733603981e-04 + 3.217533259984899e-04 + 3.203057585048498e-04 + 3.188607716794152e-04 + 3.174183662346357e-04 + 3.159785430822741e-04 + 3.145413032833238e-04 + 3.131066479369465e-04 + 3.116745782136557e-04 + 3.102450954058189e-04 + 3.088182010197684e-04 + 3.073938965650610e-04 + 3.059721835802734e-04 + 3.045530637916020e-04 + 3.031365390386899e-04 + 3.017226112552691e-04 + 3.003112824793533e-04 + 2.989025548234045e-04 + 2.974964304955006e-04 + 2.960929118913988e-04 + 2.946920014422941e-04 + 2.932937016150965e-04 + 2.918980151023185e-04 + 2.905049446767149e-04 + 2.891144931550728e-04 + 2.877266634923031e-04 + 2.863414587568181e-04 + 2.849588821248430e-04 + 2.835789368717610e-04 + 2.822016263526234e-04 + 2.808269540128114e-04 + 2.794549234525530e-04 + 2.780855383858511e-04 + 2.767188026160350e-04 + 2.753547199733251e-04 + 2.739932944362576e-04 + 2.726345302253411e-04 + 2.712784314751994e-04 + 2.699250024118205e-04 + 2.685742475595017e-04 + 2.672261714415124e-04 + 2.658807786371782e-04 + 2.645380739000219e-04 + 2.631980619957597e-04 + 2.618607478073471e-04 + 2.605261365239288e-04 + 2.591942332540738e-04 + 2.578650431168888e-04 + 2.565385715181067e-04 + 2.552148239188000e-04 + 2.538938058269625e-04 + 2.525755228940477e-04 + 2.512599808919393e-04 + 2.499471856899045e-04 + 2.486371432244064e-04 + 2.473298595107682e-04 + 2.460253406646765e-04 + 2.447235929605613e-04 + 2.434246227773826e-04 + 2.421284365723855e-04 + 2.408350408491505e-04 + 2.395444422583646e-04 + 2.382566475978551e-04 + 2.369716636126905e-04 + 2.356894972066169e-04 + 2.344101555067014e-04 + 2.331336455922197e-04 + 2.318599746393059e-04 + 2.305891500038487e-04 + 2.293211790903458e-04 + 2.280560693749351e-04 + 2.267938284406659e-04 + 2.255344639796373e-04 + 2.242779837481179e-04 + 2.230243955584571e-04 + 2.217737074088738e-04 + 2.205259273750273e-04 + 2.192810635194828e-04 + 2.180391240377155e-04 + 2.168001172473318e-04 + 2.155640515683406e-04 + 2.143309354202995e-04 + 2.131007772856537e-04 + 2.118735858306198e-04 + 2.106493698084787e-04 + 2.094281380089542e-04 + 2.082098992208740e-04 + 2.069946624015073e-04 + 2.057824366286796e-04 + 2.045732309577213e-04 + 2.033670545521807e-04 + 2.021639166762670e-04 + 2.009638266139778e-04 + 1.997667937615743e-04 + 1.985728276099416e-04 + 1.973819376249420e-04 + 1.961941334186818e-04 + 1.950094247288422e-04 + 1.938278211445808e-04 + 1.926493324216112e-04 + 1.914739685443153e-04 + 1.903017394244089e-04 + 1.891326549660665e-04 + 1.879667251315557e-04 + 1.868039600691931e-04 + 1.856443699312781e-04 + 1.844879648170397e-04 + 1.833347550402995e-04 + 1.821847509305592e-04 + 1.810379627269367e-04 + 1.798944008330572e-04 + 1.787540757117569e-04 + 1.776169978023503e-04 + 1.764831776083264e-04 + 1.753526257075039e-04 + 1.742253527510645e-04 + 1.731013693254543e-04 + 1.719806860311682e-04 + 1.708633135911149e-04 + 1.697492627671219e-04 + 1.686385443331759e-04 + 1.675311690584120e-04 + 1.664271477052953e-04 + 1.653264910845736e-04 + 1.642292101438652e-04 + 1.631353157524277e-04 + 1.620448187436031e-04 + 1.609577300754615e-04 + 1.598740606888992e-04 + 1.587938214812250e-04 + 1.577170233258566e-04 + 1.566436772168694e-04 + 1.555737942159133e-04 + 1.545073851968179e-04 + 1.534444610998845e-04 + 1.523850329588589e-04 + 1.513291117056277e-04 + 1.502767082718022e-04 + 1.492278336091406e-04 + 1.481824986061289e-04 + 1.471407142013266e-04 + 1.461024913960903e-04 + 1.450678410475480e-04 + 1.440367739871709e-04 + 1.430093010797408e-04 + 1.419854331666308e-04 + 1.409651810501559e-04 + 1.399485554884026e-04 + 1.389355672434459e-04 + 1.379262270311977e-04 + 1.369205454852166e-04 + 1.359185332657421e-04 + 1.349202010239166e-04 + 1.339255593445051e-04 + 1.329346186642912e-04 + 1.319473893926901e-04 + 1.309638820305585e-04 + 1.299841069283569e-04 + 1.290080743627276e-04 + 1.280357946577360e-04 + 1.270672779908064e-04 + 1.261025344295187e-04 + 1.251415740258344e-04 + 1.241844068414831e-04 + 1.232310428585276e-04 + 1.222814917974582e-04 + 1.213357634573326e-04 + 1.203938676644921e-04 + 1.194558139769228e-04 + 1.185216119071049e-04 + 1.175912709437735e-04 + 1.166648004395201e-04 + 1.157422096820540e-04 + 1.148235078941047e-04 + 1.139087041565015e-04 + 1.129978074560730e-04 + 1.120908266963163e-04 + 1.111877706801771e-04 + 1.102886481165339e-04 + 1.093934676008822e-04 + 1.085022375478793e-04 + 1.076149663238430e-04 + 1.067316622735248e-04 + 1.058523335072715e-04 + 1.049769880021785e-04 + 1.041056336506420e-04 + 1.032382782134568e-04 + 1.023749293560659e-04 + 1.015155946454073e-04 + 1.006602814254268e-04 + 9.980899691604087e-05 + 9.896174827822380e-05 + 9.811854249648769e-05 + 9.727938640362722e-05 + 9.644428669167931e-05 + 9.561324990949941e-05 + 9.478628247235907e-05 + 9.396339064407664e-05 + 9.314458052650697e-05 + 9.232985807344924e-05 + 9.151922908266137e-05 + 9.071269919463392e-05 + 8.991027389908417e-05 + 8.911195851702552e-05 + 8.831775819982511e-05 + 8.752767793866873e-05 + 8.674172256023528e-05 + 8.595989672073575e-05 + 8.518220490590348e-05 + 8.440865141920385e-05 + 8.363924039733809e-05 + 8.287397580722622e-05 + 8.211286142104977e-05 + 8.135590084051729e-05 + 8.060309749193613e-05 + 7.985445459658365e-05 + 7.910997520302950e-05 + 7.836966218298747e-05 + 7.763351820320998e-05 + 7.690154574559998e-05 + 7.617374709914362e-05 + 7.545012436145964e-05 + 7.473067944430294e-05 + 7.401541405207780e-05 + 7.330432968888297e-05 + 7.259742767376570e-05 + 7.189470911942744e-05 + 7.119617492698978e-05 + 7.050182580949816e-05 + 6.981166227552030e-05 + 6.912568461899398e-05 + 6.844389294104750e-05 + 6.776628713300132e-05 + 6.709286687130013e-05 + 6.642363163388969e-05 + 6.575858067871575e-05 + 6.509771305493562e-05 + 6.444102761503343e-05 + 6.378852298738557e-05 + 6.314019758583242e-05 + 6.249604962295056e-05 + 6.185607708979005e-05 + 6.122027775903875e-05 + 6.058864919749181e-05 + 5.996118875684596e-05 + 5.933789356597989e-05 + 5.871876053888907e-05 + 5.810378637807827e-05 + 5.749296757228591e-05 + 5.688630039241354e-05 + 5.628378087841946e-05 + 5.568540486517338e-05 + 5.509116797959273e-05 + 5.450106561933422e-05 + 5.391509296529475e-05 + 5.333324497665832e-05 + 5.275551640753726e-05 + 5.218190179953343e-05 + 5.161239545977182e-05 + 5.104699148146081e-05 + 5.048568375913861e-05 + 4.992846596763329e-05 + 4.937533154817934e-05 + 4.882627374147808e-05 + 4.828128557792042e-05 + 4.774035986717692e-05 + 4.720348921279551e-05 + 4.667066599018748e-05 + 4.614188237688400e-05 + 4.561713035194944e-05 + 4.509640165438987e-05 + 4.457968783032909e-05 + 4.406698023190481e-05 + 4.355826996891768e-05 + 4.305354796420506e-05 + 4.255280495560636e-05 + 4.205603144616347e-05 + 4.156321774032957e-05 + 4.107435395613752e-05 + 4.058942999665175e-05 + 4.010843556869507e-05 + 3.963136019085871e-05 + 3.915819316952545e-05 + 3.868892361719641e-05 + 3.822354046226270e-05 + 3.776203244031561e-05 + 3.730438809005640e-05 + 3.685059575689182e-05 + 3.640064360230198e-05 + 3.595451960373741e-05 + 3.551221155134442e-05 + 3.507370705450421e-05 + 3.463899354241650e-05 + 3.420805825588243e-05 + 3.378088825986720e-05 + 3.335747045272196e-05 + 3.293779155463552e-05 + 3.252183811026268e-05 + 3.210959649877579e-05 + 3.170105292073684e-05 + 3.129619341367949e-05 + 3.089500386055728e-05 + 3.049746997239612e-05 + 3.010357730585059e-05 + 2.971331126487755e-05 + 2.932665707619367e-05 + 2.894359982344077e-05 + 2.856412445132613e-05 + 2.818821573877814e-05 + 2.781585831987375e-05 + 2.744703669454755e-05 + 2.708173520948728e-05 + 2.671993807124836e-05 + 2.636162935767626e-05 + 2.600679300301263e-05 + 2.565541280257304e-05 + 2.530747242805460e-05 + 2.496295542635910e-05 + 2.462184521206604e-05 + 2.428412507785163e-05 + 2.394977819771233e-05 + 2.361878762181457e-05 + 2.329113628448998e-05 + 2.296680701293541e-05 + 2.264578251757474e-05 + 2.232804539557172e-05 + 2.201357814530585e-05 + 2.170236315904943e-05 + 2.139438272306276e-05 + 2.108961903561866e-05 + 2.078805419745760e-05 + 2.048967020582218e-05 + 2.019444897050880e-05 + 1.990237231614296e-05 + 1.961342197777572e-05 + 1.932757961462368e-05 + 1.904482680353188e-05 + 1.876514502948172e-05 + 1.848851571515060e-05 + 1.821492021640795e-05 + 1.794433980831370e-05 + 1.767675569461099e-05 + 1.741214902258527e-05 + 1.715050088166273e-05 + 1.689179228451716e-05 + 1.663600419203502e-05 + 1.638311752659296e-05 + 1.613311314360082e-05 + 1.588597184706167e-05 + 1.564167440067926e-05 + 1.540020151829502e-05 + 1.516153387453479e-05 + 1.492565211244357e-05 + 1.469253682958783e-05 + 1.446216858599219e-05 + 1.423452791421707e-05 + 1.400959531801727e-05 + 1.378735127470914e-05 + 1.356777623611474e-05 + 1.335085063337062e-05 + 1.313655487876277e-05 + 1.292486936494610e-05 + 1.271577446639333e-05 + 1.250925054517824e-05 + 1.230527796605363e-05 + 1.210383708165599e-05 + 1.190490823144681e-05 + 1.170847175649016e-05 + 1.151450799717159e-05 + 1.132299729345123e-05 + 1.113391999104486e-05 + 1.094725644586371e-05 + 1.076298702423590e-05 + 1.058109209097755e-05 + 1.040155202830912e-05 + 1.022434724511555e-05 + 1.004945815519835e-05 + 9.876865191434875e-06 + 9.706548817576976e-06 + 9.538489515829050e-06 + 9.372667791395497e-06 + 9.209064181113714e-06 + 9.047659251528417e-06 + 8.888433598428113e-06 + 8.731367852817854e-06 + 8.576442682615395e-06 + 8.423638791088146e-06 + 8.272936922653283e-06 + 8.124317863654203e-06 + 7.977762440936675e-06 + 7.833251528895281e-06 + 7.690766049713759e-06 + 7.550286971453687e-06 + 7.411795314787993e-06 + 7.275272152381047e-06 + 7.140698608042407e-06 + 7.008055865069554e-06 + 6.877325162999093e-06 + 6.748487797069182e-06 + 6.621525126924672e-06 + 6.496418573295794e-06 + 6.373149617974847e-06 + 6.251699810845691e-06 + 6.132050767139283e-06 + 6.014184168887862e-06 + 5.898081770597224e-06 + 5.783725394973654e-06 + 5.671096936050662e-06 + 5.560178365641361e-06 + 5.450951726966341e-06 + 5.343399138917566e-06 + 5.237502802602254e-06 + 5.133244993336976e-06 + 5.030608065950253e-06 + 4.929574461382145e-06 + 4.830126698086031e-06 + 4.732247378331277e-06 + 4.635919192753656e-06 + 4.541124912789582e-06 + 4.447847398958468e-06 + 4.356069602328335e-06 + 4.265774557056776e-06 + 4.176945389932598e-06 + 4.089565320281935e-06 + 4.003617653697645e-06 + 3.919085793399028e-06 + 3.835953236362346e-06 + 3.754203567594348e-06 + 3.673820472678765e-06 + 3.594787733829004e-06 + 3.517089224074456e-06 + 3.440708918621393e-06 + 3.365630891050476e-06 + 3.291839308866544e-06 + 3.219318444550688e-06 + 3.148052669614368e-06 + 3.078026451876596e-06 + 3.009224366838337e-06 + 2.941631088840265e-06 + 2.875231390541817e-06 + 2.810010156134118e-06 + 2.745952369256776e-06 + 2.683043113446972e-06 + 2.621267584374269e-06 + 2.560611078236376e-06 + 2.501058994098514e-06 + 2.442596843868032e-06 + 2.385210240033010e-06 + 2.328884899906223e-06 + 2.273606655048426e-06 + 2.219361438179688e-06 + 2.166135288678882e-06 + 2.113914360085187e-06 + 2.062684907096663e-06 + 2.012433292648363e-06 + 1.963145994708785e-06 + 1.914809593193956e-06 + 1.867410777738679e-06 + 1.820936351687259e-06 + 1.775373220609589e-06 + 1.730708401732302e-06 + 1.686929024947410e-06 + 1.644022323067757e-06 + 1.601975642837270e-06 + 1.560776441656341e-06 + 1.520412279298016e-06 + 1.480870830315665e-06 + 1.442139880698395e-06 + 1.404207319625165e-06 + 1.367061149777226e-06 + 1.330689483155573e-06 + 1.295080535963615e-06 + 1.260222640873472e-06 + 1.226104237141460e-06 + 1.192713867093549e-06 + 1.160040189500492e-06 + 1.128071969424555e-06 + 1.096798076008267e-06 + 1.066207493417804e-06 + 1.036289310659725e-06 + 1.007032721493895e-06 + 9.784270338592895e-07 + 9.504616588874799e-07 + 9.231261128777845e-07 + 8.964100256766087e-07 + 8.703031286825232e-07 + 8.447952585150839e-07 + 8.198763641874936e-07 + 7.955364948286083e-07 + 7.717658049346632e-07 + 7.485545598914059e-07 + 7.258931238786546e-07 + 7.037719665410901e-07 + 6.821816664988581e-07 + 6.611128998791421e-07 + 6.405564483055948e-07 + 6.205032003278225e-07 + 6.009441408121614e-07 + 5.818703600152187e-07 + 5.632730528626383e-07 + 5.451435094097432e-07 + 5.274731247677268e-07 + 5.102533965000488e-07 + 4.934759162480692e-07 + 4.771323800991179e-07 + 4.612145841662162e-07 + 4.457144176881476e-07 + 4.306238737382497e-07 + 4.159350428538716e-07 + 4.016401077051372e-07 + 3.877313539402903e-07 + 3.742011622647174e-07 + 3.610420046499709e-07 + 3.482464547968944e-07 + 3.358071790150475e-07 + 3.237169340794661e-07 + 3.119685770955318e-07 + 3.005550554375413e-07 + 2.894694062090586e-07 + 2.787047650882795e-07 + 2.682543557659438e-07 + 2.581114909968296e-07 + 2.482695801165890e-07 + 2.387221182727572e-07 + 2.294626890008751e-07 + 2.204849703818711e-07 + 2.117827241548630e-07 + 2.033497996067267e-07 + 1.951801384624956e-07 + 1.872677641420447e-07 + 1.796067867093452e-07 + 1.721914062527642e-07 + 1.650159027896018e-07 + 1.580746421942365e-07 + 1.513620776690125e-07 + 1.448727406655565e-07 + 1.386012477684331e-07 + 1.325423000867771e-07 + 1.266906752868051e-07 + 1.210412352836648e-07 + 1.155889239131470e-07 + 1.103287600176973e-07 + 1.052558455547364e-07 + 1.003653617115032e-07 + 9.565256321109978e-08 + 9.111278671292873e-08 + 8.674144556415159e-08 + 8.253402527034383e-08 + 7.848609177536523e-08 + 7.459328520671134e-08 + 7.085131661573615e-08 + 6.725597593242166e-08 + 6.380312478868793e-08 + 6.048869454868003e-08 + 5.730869376312298e-08 + 5.425920030057914e-08 + 5.133636064443935e-08 + 4.853639660958214e-08 + 4.585559704969457e-08 + 4.329031836991616e-08 + 4.083699031045398e-08 + 3.849210751108346e-08 + 3.625223113812888e-08 + 3.411399355038575e-08 + 3.207408998824199e-08 + 3.012928121511996e-08 + 2.827639696078167e-08 + 2.651232793166280e-08 + 2.483402934338396e-08 + 2.323852311474514e-08 + 2.172289034680298e-08 + 2.028427559044146e-08 + 1.891988778877689e-08 + 1.762699339728036e-08 + 1.640292125402531e-08 + 1.524506224991720e-08 + 1.415086320949184e-08 + 1.311783222446413e-08 + 1.214353712508316e-08 + 1.122560019257377e-08 + 1.036170378687137e-08 + 9.549587722603005e-09 + 8.787044877843281e-09 + 8.071926961605364e-09 + 7.402140903161946e-09 + 6.775645388472587e-09 + 6.190456604129221e-09 + 5.644643792323680e-09 + 5.136326726146161e-09 + 4.663681262833891e-09 + 4.224934232596794e-09 + 3.818361845837701e-09 + 3.442294891302550e-09 + 3.095113141246544e-09 + 2.775244665814773e-09 + 2.481170514027403e-09 + 2.211418834557044e-09 + 1.964565051498559e-09 + 1.739235878927056e-09 + 1.534103359980556e-09 + 1.347885831336700e-09 + 1.179351163642234e-09 + 1.027310894648576e-09 + 8.906218977827446e-10 + 7.681887799049897e-10 + 6.589582548472836e-10 + 5.619214238374888e-10 + 4.761152985830568e-10 + 4.006175343477256e-10 + 3.345492227248809e-10 + 2.770755362128679e-10 + 2.274009179016229e-10 + 1.847722840116674e-10 + 1.484788129161787e-10 + 1.178476648704315e-10 + 9.224748788184573e-11 + 7.108739902161543e-11 + 5.381328706422649e-11 + 3.991151299277479e-11 + 2.890715266694438e-11 + 2.036091648096713e-11 + 1.387293445657948e-11 + 9.080348320515963e-12 + 5.654863833225597e-12 + 3.306507674167889e-12 + 1.780689492983021e-12 + 8.563646514161430e-13 + 3.496037276049943e-13 + 1.104943293034196e-13 + 2.161027650041889e-14 + 5.028049336448720e-16 + 0.000000000000000e+00 + 0.000000000000000e+00 + 7.485272593961791e+04 + 1.493519318697679e+05 + 2.234970831294996e+05 + 2.972876533345640e+05 + 3.707231243774131e+05 + 4.438029864272003e+05 + 5.165267379297798e+05 + 5.888938856077072e+05 + 6.609039444602393e+05 + 7.325564377633340e+05 + 8.038508970696502e+05 + 8.747868622085482e+05 + 9.453638812860892e+05 + 1.015581510685036e+06 + 1.085439315064852e+06 + 1.154936867361703e+06 + 1.224073748788454e+06 + 1.292849548834672e+06 + 1.361263865266626e+06 + 1.429316304127287e+06 + 1.497006479736322e+06 + 1.564334014690106e+06 + 1.631298539861710e+06 + 1.697899694400910e+06 + 1.764137125734180e+06 + 1.830010489564698e+06 + 1.895519449872339e+06 + 1.960663678913685e+06 + 2.025442857222013e+06 + 2.089856673607306e+06 + 2.153904825156247e+06 + 2.217587017232217e+06 + 2.280902963475303e+06 + 2.343852385802290e+06 + 2.406435014406665e+06 + 2.468650587758616e+06 + 2.530498852605031e+06 + 2.591979563969503e+06 + 2.653092485152322e+06 + 2.713837387730482e+06 + 2.774214051557675e+06 + 2.834222264764299e+06 + 2.893861823757447e+06 + 2.953132533220919e+06 + 3.012034206115212e+06 + 3.070566663677527e+06 + 3.128729735421764e+06 + 3.186523259138526e+06 + 3.243947080895115e+06 + 3.301001055035538e+06 + 3.357685044180497e+06 + 3.413998919227402e+06 + 3.469942559350358e+06 + 3.525515852000176e+06 + 3.580718692904367e+06 + 3.635550986067140e+06 + 3.690012643769410e+06 + 3.744103586568788e+06 + 3.797823743299592e+06 + 3.851173051072835e+06 + 3.904151455276238e+06 + 3.956758909574216e+06 + 4.008995375907890e+06 + 4.060860824495079e+06 + 4.112355233830309e+06 + 4.163478590684799e+06 + 4.214230890106475e+06 + 4.264612135419963e+06 + 4.314622338226588e+06 + 4.364261518404378e+06 + 4.413529704108060e+06 + 4.462426931769069e+06 + 4.510953246095533e+06 + 4.559108700072286e+06 + 4.606893354960858e+06 + 4.654307280299488e+06 + 4.701350553903108e+06 + 4.748023261863358e+06 + 4.794325498548575e+06 + 4.840257366603798e+06 + 4.885818976950768e+06 + 4.931010448787929e+06 + 4.975831909590418e+06 + 5.020283495110085e+06 + 5.064365349375471e+06 + 5.108077624691823e+06 + 5.151420481641092e+06 + 5.194394089081923e+06 + 5.236998624149668e+06 + 5.279234272256376e+06 + 5.321101227090800e+06 + 5.362599690618395e+06 + 5.403729873081312e+06 + 5.444491992998408e+06 + 5.484886277165242e+06 + 5.524912960654069e+06 + 5.564572286813851e+06 + 5.603864507270245e+06 + 5.642789881925615e+06 + 5.681348678959022e+06 + 5.719541174826232e+06 + 5.757367654259708e+06 + 5.794828410268617e+06 + 5.831923744138825e+06 + 5.868653965432902e+06 + 5.905019391990117e+06 + 5.941020349926441e+06 + 5.976657173634544e+06 + 6.011930205783804e+06 + 6.046839797320290e+06 + 6.081386307466779e+06 + 6.115570103722748e+06 + 6.149391561864376e+06 + 6.182851065944540e+06 + 6.215949008292822e+06 + 6.248685789515501e+06 + 6.281061818495561e+06 + 6.313077512392686e+06 + 6.344733296643257e+06 + 6.376029604960365e+06 + 6.406966879333793e+06 + 6.437545570030033e+06 + 6.467766135592271e+06 + 6.497629042840399e+06 + 6.527134766871008e+06 + 6.556283791057392e+06 + 6.585076607049545e+06 + 6.613513714774162e+06 + 6.641595622434638e+06 + 6.669322846511072e+06 + 6.696695911760264e+06 + 6.723715351215711e+06 + 6.750381706187615e+06 + 6.776695526262878e+06 + 6.802657369305105e+06 + 6.828267801454599e+06 + 6.853527397128366e+06 + 6.878436739020114e+06 + 6.902996418100249e+06 + 6.927207033615881e+06 + 6.951069193090819e+06 + 6.974583512325577e+06 + 6.997750615397365e+06 + 7.020571134660101e+06 + 7.043045710744397e+06 + 7.065174992557568e+06 + 7.086959637283633e+06 + 7.108400310383311e+06 + 7.129497685594021e+06 + 7.150252444929884e+06 + 7.170665278681723e+06 + 7.190736885417059e+06 + 7.210467971980117e+06 + 7.229859253491821e+06 + 7.248911453349800e+06 + 7.267625303228384e+06 + 7.286001543078595e+06 + 7.304040921128170e+06 + 7.321744193881537e+06 + 7.339112126119829e+06 + 7.356145490900878e+06 + 7.372845069559221e+06 + 7.389211651706094e+06 + 7.405246035229432e+06 + 7.420949026293878e+06 + 7.436321439340766e+06 + 7.451364097088138e+06 + 7.466077830530737e+06 + 7.480463478940005e+06 + 7.494521889864086e+06 + 7.508253919127826e+06 + 7.521660430832772e+06 + 7.534742297357169e+06 + 7.547500399355968e+06 + 7.559935625760819e+06 + 7.572048873780073e+06 + 7.583841048898782e+06 + 7.595313064878696e+06 + 7.606465843758276e+06 + 7.617300315852673e+06 + 7.627817419753745e+06 + 7.638018102330050e+06 + 7.647903318726848e+06 + 7.657474032366097e+06 + 7.666731214946462e+06 + 7.675675846443305e+06 + 7.684308915108687e+06 + 7.692631417471377e+06 + 7.700644358336839e+06 + 7.708348750787240e+06 + 7.715745616181449e+06 + 7.722835984155037e+06 + 7.729620892620270e+06 + 7.736101387766127e+06 + 7.742278524058277e+06 + 7.748153364239094e+06 + 7.753726979327655e+06 + 7.759000448619737e+06 + 7.763974859687817e+06 + 7.768651308381077e+06 + 7.773030898825390e+06 + 7.777114743423343e+06 + 7.780903962854218e+06 + 7.784399686073998e+06 + 7.787603050315368e+06 + 7.790515201087713e+06 + 7.793137292177119e+06 + 7.795470485646380e+06 + 7.797515951834979e+06 + 7.799274869359110e+06 + 7.800748425111664e+06 + 7.801937814262233e+06 + 7.802844240257111e+06 + 7.803468914819297e+06 + 7.803813057948484e+06 + 7.803877897921070e+06 + 7.803664671290156e+06 + 7.803174622885538e+06 + 7.802409005813722e+06 + 7.801369081457905e+06 + 7.800056119477995e+06 + 7.798471397810592e+06 + 7.796616202669007e+06 + 7.794491828543244e+06 + 7.792099578200010e+06 + 7.789440762682715e+06 + 7.786516701311473e+06 + 7.783328721683091e+06 + 7.779878159671083e+06 + 7.776166359425665e+06 + 7.772194673373749e+06 + 7.767964462218953e+06 + 7.763477094941595e+06 + 7.758733948798692e+06 + 7.753736409323964e+06 + 7.748485870327833e+06 + 7.742983733897421e+06 + 7.737231410396548e+06 + 7.731230318465743e+06 + 7.724981885022229e+06 + 7.718487545259933e+06 + 7.711748742649483e+06 + 7.704766928938209e+06 + 7.697543564150140e+06 + 7.690080116586007e+06 + 7.682378062823243e+06 + 7.674438887715982e+06 + 7.666264084395060e+06 + 7.657855154268012e+06 + 7.649213607019073e+06 + 7.640340960609185e+06 + 7.631238741275986e+06 + 7.621908483533815e+06 + 7.612351730173716e+06 + 7.602570032263434e+06 + 7.592564949147409e+06 + 7.582338048446788e+06 + 7.571890906059416e+06 + 7.561225106159844e+06 + 7.550342241199316e+06 + 7.539243911905785e+06 + 7.527931727283904e+06 + 7.516407304615024e+06 + 7.504672269457198e+06 + 7.492728241314434e+06 + 7.480576638153253e+06 + 7.468218723741564e+06 + 7.455655760425863e+06 + 7.442889013018662e+06 + 7.429919748798485e+06 + 7.416749237509867e+06 + 7.403378751363355e+06 + 7.389809565035504e+06 + 7.376042955668893e+06 + 7.362080202872100e+06 + 7.347922588719724e+06 + 7.333571397752370e+06 + 7.319027916976659e+06 + 7.304293435865226e+06 + 7.289369246356713e+06 + 7.274256642855777e+06 + 7.258956922233087e+06 + 7.243471383825325e+06 + 7.227801329435183e+06 + 7.211948063331366e+06 + 7.195912892248592e+06 + 7.179697125387593e+06 + 7.163302074415106e+06 + 7.146729053463890e+06 + 7.129979379132709e+06 + 7.113054370486340e+06 + 7.095955349055575e+06 + 7.078683638837219e+06 + 7.061240566294081e+06 + 7.043627460354994e+06 + 7.025845652414794e+06 + 7.007896476334333e+06 + 6.989781268440476e+06 + 6.971501367526096e+06 + 6.953058114850082e+06 + 6.934452854137335e+06 + 6.915686931578767e+06 + 6.896761695831302e+06 + 6.877678498017876e+06 + 6.858438691727439e+06 + 6.839043633014950e+06 + 6.819494680401385e+06 + 6.799793194873727e+06 + 6.779940539884974e+06 + 6.759938081354136e+06 + 6.739787187666233e+06 + 6.719489229672301e+06 + 6.699045580689385e+06 + 6.678457616500544e+06 + 6.657726715354848e+06 + 6.636854257967380e+06 + 6.615841627519235e+06 + 6.594690209657516e+06 + 6.573401392495350e+06 + 6.551976566611862e+06 + 6.530417125052197e+06 + 6.508724463327511e+06 + 6.486899979414972e+06 + 6.464945073757762e+06 + 6.442861149265066e+06 + 6.420649611312096e+06 + 6.398311867740063e+06 + 6.375849328856199e+06 + 6.353263407433745e+06 + 6.330555518711952e+06 + 6.307727080396090e+06 + 6.284779512657427e+06 + 6.261714238133261e+06 + 6.238532681926889e+06 + 6.215236271607627e+06 + 6.191826437210800e+06 + 6.168304611237747e+06 + 6.144672228655818e+06 + 6.120930726898375e+06 + 6.097081545864792e+06 + 6.073126127920459e+06 + 6.049065917896771e+06 + 6.024902363091142e+06 + 6.000636913266994e+06 + 5.976271020653763e+06 + 5.951806139946896e+06 + 5.927243728307854e+06 + 5.902585245364108e+06 + 5.877832153209144e+06 + 5.852985916402456e+06 + 5.828048001969552e+06 + 5.803019879401957e+06 + 5.777903020657199e+06 + 5.752698900158828e+06 + 5.727408994796395e+06 + 5.702034783925475e+06 + 5.676577749367647e+06 + 5.651039375410506e+06 + 5.625421148807654e+06 + 5.599724558778713e+06 + 5.573951097009313e+06 + 5.548102257651095e+06 + 5.522179537321717e+06 + 5.496184435104840e+06 + 5.470118452550147e+06 + 5.443983093673326e+06 + 5.417779864956085e+06 + 5.391510275346133e+06 + 5.365175836257203e+06 + 5.338778061569033e+06 + 5.312318467627374e+06 + 5.285798573243992e+06 + 5.259219899696662e+06 + 5.232583970729172e+06 + 5.205892312551324e+06 + 5.179146453838928e+06 + 5.152347925733812e+06 + 5.125498261843814e+06 + 5.098598998242779e+06 + 5.071651673470572e+06 + 5.044657828533064e+06 + 5.017619006902143e+06 + 4.990536754515706e+06 + 4.963412619777663e+06 + 4.936248153557934e+06 + 4.909044909192459e+06 + 4.881804442483181e+06 + 4.854528311698059e+06 + 4.827218077571064e+06 + 4.799875303302180e+06 + 4.772501554557402e+06 + 4.745098399468737e+06 + 4.717667408634203e+06 + 4.690210155117837e+06 + 4.662728214449679e+06 + 4.635223164625784e+06 + 4.607696586108224e+06 + 4.580150061825077e+06 + 4.552585177170437e+06 + 4.525003520004408e+06 + 4.497406680653105e+06 + 4.469796251908661e+06 + 4.442173829029216e+06 + 4.414541009738924e+06 + 4.386899394227949e+06 + 4.359250585152469e+06 + 4.331596187634676e+06 + 4.303937809262771e+06 + 4.276277060090966e+06 + 4.248615552639492e+06 + 4.220954901894585e+06 + 4.193296725308497e+06 + 4.165642642799490e+06 + 4.137994276751838e+06 + 4.110353252015833e+06 + 4.082721195907769e+06 + 4.055099738209962e+06 + 4.027490511170732e+06 + 3.999895149504419e+06 + 3.972315290391369e+06 + 3.944752573477943e+06 + 3.917208640876513e+06 + 3.889685137165464e+06 + 3.862183709389194e+06 + 3.834706007058111e+06 + 3.807253682148634e+06 + 3.779828389103201e+06 + 3.752431784830255e+06 + 3.725065528704253e+06 + 3.697731282565667e+06 + 3.670430710720977e+06 + 3.643165479942679e+06 + 3.615937259469279e+06 + 3.588747721005293e+06 + 3.561598538721256e+06 + 3.534491389253709e+06 + 3.507427951705208e+06 + 3.480409907644318e+06 + 3.453438941105620e+06 + 3.426516738589706e+06 + 3.399644989063177e+06 + 3.372825383958653e+06 + 3.346070405300663e+06 + 3.319465764034668e+06 + 3.293075510459727e+06 + 3.266878224028187e+06 + 3.240869303162930e+06 + 3.215052515525467e+06 + 3.189425288821125e+06 + 3.163986116962672e+06 + 3.138734196986282e+06 + 3.113668261011591e+06 + 3.088787111422079e+06 + 3.064089610843659e+06 + 3.039574592322599e+06 + 3.015240898358055e+06 + 2.991087379108502e+06 + 2.967112887579310e+06 + 2.943316282301805e+06 + 2.919696425519270e+06 + 2.896252185185970e+06 + 2.872982434032476e+06 + 2.849886048305633e+06 + 2.826961910405915e+06 + 2.804208907130155e+06 + 2.781625929123051e+06 + 2.759211873644148e+06 + 2.736965641930875e+06 + 2.714886139213983e+06 + 2.692972277509980e+06 + 2.671222972611625e+06 + 2.649637144535781e+06 + 2.628213719738566e+06 + 2.606951628696007e+06 + 2.585849806893141e+06 + 2.564907195391811e+06 + 2.544122739173453e+06 + 2.523495389008342e+06 + 2.503024101022326e+06 + 2.482707834844927e+06 + 2.462545556054412e+06 + 2.442536236120740e+06 + 2.422678849863131e+06 + 2.402972377820649e+06 + 2.383415806334849e+06 + 2.364008125120872e+06 + 2.344748329835404e+06 + 2.325635421794777e+06 + 2.306668405813749e+06 + 2.287846292982958e+06 + 2.269168099757709e+06 + 2.250632846050586e+06 + 2.232239558087812e+06 + 2.213987266957964e+06 + 2.195875007435864e+06 + 2.177901821473463e+06 + 2.160066755143500e+06 + 2.142368857948063e+06 + 2.124807187017495e+06 + 2.107380803567688e+06 + 2.090088772295509e+06 + 2.072930165358991e+06 + 2.055904058912681e+06 + 2.039009532618940e+06 + 2.022245673041180e+06 + 2.005611571515091e+06 + 1.989106323649552e+06 + 1.972729030298793e+06 + 1.956478797095825e+06 + 1.940354734917566e+06 + 1.924355960016194e+06 + 1.908481592593613e+06 + 1.892730757829583e+06 + 1.877102587255698e+06 + 1.861596215902473e+06 + 1.846210783186639e+06 + 1.830945435012332e+06 + 1.815799321323061e+06 + 1.800771597138300e+06 + 1.785861422681660e+06 + 1.771067961851037e+06 + 1.756390384114008e+06 + 1.741827864373811e+06 + 1.727379581118251e+06 + 1.713044718232857e+06 + 1.698822464839031e+06 + 1.684712013805151e+06 + 1.670712563808684e+06 + 1.656823318006428e+06 + 1.643043483055245e+06 + 1.629372271790869e+06 + 1.615808901794204e+06 + 1.602352594044968e+06 + 1.589002574975609e+06 + 1.575758076322615e+06 + 1.562618333634041e+06 + 1.549582587186907e+06 + 1.536650081999105e+06 + 1.523820067124634e+06 + 1.511091797064626e+06 + 1.498464530780005e+06 + 1.485937531189585e+06 + 1.473510066471004e+06 + 1.461181408848471e+06 + 1.448950834625962e+06 + 1.436817625926470e+06 + 1.424781068397768e+06 + 1.412840451407005e+06 + 1.400995070309470e+06 + 1.389244224245752e+06 + 1.377587216393601e+06 + 1.366023355231714e+06 + 1.354551952598923e+06 + 1.343172324427429e+06 + 1.331883792566280e+06 + 1.320685682335073e+06 + 1.309577322956444e+06 + 1.298558048406515e+06 + 1.287627196362487e+06 + 1.276784109496439e+06 + 1.266028134784103e+06 + 1.255358622320226e+06 + 1.244774926866806e+06 + 1.234276408467881e+06 + 1.223862430240984e+06 + 1.213532358913532e+06 + 1.203285566621101e+06 + 1.193121428991948e+06 + 1.183039325468658e+06 + 1.173038640304339e+06 + 1.163118761212139e+06 + 1.153279079987504e+06 + 1.143518992564451e+06 + 1.133837898317260e+06 + 1.124235201394960e+06 + 1.114710310121780e+06 + 1.105262636013577e+06 + 1.095891594215875e+06 + 1.086596604396163e+06 + 1.077377090233802e+06 + 1.068232479242110e+06 + 1.059162202266971e+06 + 1.050165693700918e+06 + 1.041242393088349e+06 + 1.032391743039430e+06 + 1.023613189178869e+06 + 1.014906181731556e+06 + 1.006270174355871e+06 + 9.977046244036794e+05 + 9.892089935677024e+05 + 9.807827465832273e+05 + 9.724253516436865e+05 + 9.641362810046984e+05 + 9.559150102252770e+05 + 9.477610188719215e+05 + 9.396737899139688e+05 + 9.316528091743080e+05 + 9.236975665277143e+05 + 9.158075561735997e+05 + 9.079822751134991e+05 + 9.002212236533747e+05 + 8.925239057014534e+05 + 8.848898281604102e+05 + 8.773185021612709e+05 + 8.698094424648809e+05 + 8.623621663528095e+05 + 8.549761944053203e+05 + 8.476510510446843e+05 + 8.403862637513808e+05 + 8.331813638606276e+05 + 8.260358860837971e+05 + 8.189493675787508e+05 + 8.119213484350282e+05 + 8.049513730504208e+05 + 7.980389891667470e+05 + 7.911837471192866e+05 + 7.843852003599521e+05 + 7.776429053419405e+05 + 7.709564221446526e+05 + 7.643253140173181e+05 + 7.577491471803443e+05 + 7.512274911598503e+05 + 7.447599180231568e+05 + 7.383460026539576e+05 + 7.319853241781880e+05 + 7.256774641850799e+05 + 7.194220067146936e+05 + 7.132185395309449e+05 + 7.070666529520636e+05 + 7.009659400728574e+05 + 6.949159975085063e+05 + 6.889164244086053e+05 + 6.829668228095188e+05 + 6.770667979456050e+05 + 6.712159574726904e+05 + 6.654139120281750e+05 + 6.596602754201142e+05 + 6.539546638052445e+05 + 6.482966962660485e+05 + 6.426859949531512e+05 + 6.371221843431445e+05 + 6.316048918617199e+05 + 6.261337478197705e+05 + 6.207083848228143e+05 + 6.153284385055641e+05 + 6.099935472682050e+05 + 6.047033517354903e+05 + 5.994574954765684e+05 + 5.942556247644721e+05 + 5.890973881315375e+05 + 5.839824370501742e+05 + 5.789104255366600e+05 + 5.738810098259439e+05 + 5.688938490610282e+05 + 5.639486048510919e+05 + 5.590449410545636e+05 + 5.541825244030216e+05 + 5.493610239467514e+05 + 5.445801109611018e+05 + 5.398394595653637e+05 + 5.351387461239359e+05 + 5.304776492529869e+05 + 5.258558503354813e+05 + 5.212730328842620e+05 + 5.167288826663374e+05 + 5.122230881980868e+05 + 5.077553400369428e+05 + 5.033253309731948e+05 + 4.989327564601310e+05 + 4.945773139811803e+05 + 4.902587033143605e+05 + 4.859766266490913e+05 + 4.817307881770549e+05 + 4.775208945372272e+05 + 4.733466546121029e+05 + 4.692077791818720e+05 + 4.651039814988278e+05 + 4.610349770333872e+05 + 4.570004830895544e+05 + 4.530002193970305e+05 + 4.490339078641191e+05 + 4.451012721716975e+05 + 4.412020383482487e+05 + 4.373359346346440e+05 + 4.335026910461138e+05 + 4.297020398291695e+05 + 4.259337153289251e+05 + 4.221974536699117e+05 + 4.184929932504728e+05 + 4.148200744355357e+05 + 4.111784393468680e+05 + 4.075678324287459e+05 + 4.039879999559653e+05 + 4.004386899065928e+05 + 3.969196525836200e+05 + 3.934306400492930e+05 + 3.899714060581240e+05 + 3.865417066557175e+05 + 3.831412995849459e+05 + 3.797699442729113e+05 + 3.764274023566474e+05 + 3.731134371233769e+05 + 3.698278135622827e+05 + 3.665702987827645e+05 + 3.633406615280775e+05 + 3.601386722825769e+05 + 3.569641034535824e+05 + 3.538167290782596e+05 + 3.506963250581825e+05 + 3.476026690576235e+05 + 3.445355402744773e+05 + 3.414947198014101e+05 + 3.384799905288533e+05 + 3.354911367821696e+05 + 3.325279446663284e+05 + 3.295902021531574e+05 + 3.266776986085196e+05 + 3.237902250531212e+05 + 3.209275743946921e+05 + 3.180895409646722e+05 + 3.152759207164211e+05 + 3.124865112943467e+05 + 3.097211117598721e+05 + 3.069795229448014e+05 + 3.042615472339510e+05 + 3.015669883675390e+05 + 2.988956518738279e+05 + 2.962473447339852e+05 + 2.936218752484120e+05 + 2.910190535228683e+05 + 2.884386911235514e+05 + 2.858806009067059e+05 + 2.833445973150213e+05 + 2.808304963224871e+05 + 2.783381153152796e+05 + 2.758672731341289e+05 + 2.734177900017136e+05 + 2.709894875428715e+05 + 2.685821889451269e+05 + 2.661957187314447e+05 + 2.638299027837526e+05 + 2.614845683836235e+05 + 2.591595441417535e+05 + 2.568546601323142e+05 + 2.545697477628685e+05 + 2.523046396706559e+05 + 2.500591699434964e+05 + 2.478331740644226e+05 + 2.456264886409644e+05 + 2.434389516128850e+05 + 2.412704023657298e+05 + 2.391206814330098e+05 + 2.369896306904384e+05 + 2.348770933197599e+05 + 2.327829136173563e+05 + 2.307069372775990e+05 + 2.286490111745211e+05 + 2.266089832623643e+05 + 2.245867029748616e+05 + 2.225820209237310e+05 + 2.205947887183862e+05 + 2.186248592921233e+05 + 2.166720868039439e+05 + 2.147363264605261e+05 + 2.128174347706827e+05 + 2.109152693889452e+05 + 2.090296889843596e+05 + 2.071605535077064e+05 + 2.053077240108720e+05 + 2.034710625599661e+05 + 2.016504325007521e+05 + 1.998456982030229e+05 + 1.980567250370223e+05 + 1.962833797138016e+05 + 1.945255298870997e+05 + 1.927830441323482e+05 + 1.910557922964590e+05 + 1.893436452442803e+05 + 1.876464748512476e+05 + 1.859641540986015e+05 + 1.842965568967865e+05 + 1.826435581738182e+05 + 1.810050340354470e+05 + 1.793808614993985e+05 + 1.777709185575675e+05 + 1.761750842223128e+05 + 1.745932384546507e+05 + 1.730252623268235e+05 + 1.714710377603550e+05 + 1.699304475698536e+05 + 1.684033757560533e+05 + 1.668897071565261e+05 + 1.653893274220018e+05 + 1.639021233234161e+05 + 1.624279825159149e+05 + 1.609667934564489e+05 + 1.595184456811041e+05 + 1.580828296015031e+05 + 1.566598363968120e+05 + 1.552493582649543e+05 + 1.538512882702573e+05 + 1.524655202573447e+05 + 1.510919491064028e+05 + 1.497304705096718e+05 + 1.483809809029638e+05 + 1.470433777326744e+05 + 1.457175592117312e+05 + 1.444034242942686e+05 + 1.431008729933990e+05 + 1.418098060421684e+05 + 1.405301248671864e+05 + 1.392617319094920e+05 + 1.380045303259556e+05 + 1.367584239714278e+05 + 1.355233176631985e+05 + 1.342991169575939e+05 + 1.330857281367400e+05 + 1.318830583220329e+05 + 1.306910153813551e+05 + 1.295095079605118e+05 + 1.283384454277201e+05 + 1.271777378619642e+05 + 1.260272961737778e+05 + 1.248870320778846e+05 + 1.237568578844075e+05 + 1.226366865814357e+05 + 1.215264320654815e+05 + 1.204260088572700e+05 + 1.193353321256488e+05 + 1.182543179024696e+05 + 1.171828828329888e+05 + 1.161209441971572e+05 + 1.150684200368906e+05 + 1.140252290172446e+05 + 1.129912905290012e+05 + 1.119665246989244e+05 + 1.109508522377596e+05 + 1.099441945145749e+05 + 1.089464735474612e+05 + 1.079576119759672e+05 + 1.069775332658437e+05 + 1.060061613940063e+05 + 1.050434208615313e+05 + 1.040892370245828e+05 + 1.031435357647047e+05 + 1.022062434696232e+05 + 1.012772873208916e+05 + 1.003565950684523e+05 + 9.944409498683986e+04 + 9.853971604124359e+04 + 9.764338777276211e+04 + 9.675504027159151e+04 + 9.587460425195689e+04 + 9.500201099602232e+04 + 9.413719236230559e+04 + 9.328008081668093e+04 + 9.243060935253548e+04 + 9.158871152497102e+04 + 9.075432150057999e+04 + 8.992737394814150e+04 + 8.910780408381460e+04 + 8.829554772812854e+04 + 8.749054118346877e+04 + 8.669272128864085e+04 + 8.590202548133289e+04 + 8.511839166524833e+04 + 8.434175826486869e+04 + 8.357206428147563e+04 + 8.280924917713979e+04 + 8.205325293940101e+04 + 8.130401609766987e+04 + 8.056147962909786e+04 + 7.982558503959214e+04 + 7.909627435336930e+04 + 7.837349003289423e+04 + 7.765717506702039e+04 + 7.694727293156023e+04 + 7.624372753229675e+04 + 7.554648331079309e+04 + 7.485548516457589e+04 + 7.417067840840557e+04 + 7.349200889763620e+04 + 7.281942291879337e+04 + 7.215286716185752e+04 + 7.149228885123666e+04 + 7.083763563584826e+04 + 7.018885556144921e+04 + 6.954589717270633e+04 + 6.890870943981725e+04 + 6.827724174191867e+04 + 6.765144392787226e+04 + 6.703126624692857e+04 + 6.641665935636370e+04 + 6.580757439267423e+04 + 6.520396286738058e+04 + 6.460577668030654e+04 + 6.401296820028803e+04 + 6.342549017134596e+04 + 6.284329573351656e+04 + 6.226633845994343e+04 + 6.169457228450359e+04 + 6.112795154311772e+04 + 6.056643099463883e+04 + 6.000996574136701e+04 + 5.945851127624574e+04 + 5.891202351267684e+04 + 5.837045869755570e+04 + 5.783377345558033e+04 + 5.730192482224794e+04 + 5.677487016169035e+04 + 5.625256720967715e+04 + 5.573497408983271e+04 + 5.522204924870504e+04 + 5.471375150828325e+04 + 5.421004006036229e+04 + 5.371087441354901e+04 + 5.321621444975662e+04 + 5.272602039469258e+04 + 5.224025278120609e+04 + 5.175887251825204e+04 + 5.128184085536604e+04 + 5.080911934597862e+04 + 5.034066989608183e+04 + 4.987645473684455e+04 + 4.941643640415772e+04 + 4.896057778639881e+04 + 4.850884207769758e+04 + 4.806119277190277e+04 + 4.761759372195903e+04 + 4.717800906318111e+04 + 4.674240321587012e+04 + 4.631074096205200e+04 + 4.588298735942246e+04 + 4.545910774537743e+04 + 4.503906779825089e+04 + 4.462283347373459e+04 + 4.421037101686000e+04 + 4.380164697651120e+04 + 4.339662816996042e+04 + 4.299528171729217e+04 + 4.259757504220949e+04 + 4.220347581706527e+04 + 4.181295199605238e+04 + 4.142597183433527e+04 + 4.104250383855765e+04 + 4.066251680332360e+04 + 4.028597979815155e+04 + 3.991286213370509e+04 + 3.954313341370015e+04 + 3.917676350485435e+04 + 3.881372250661203e+04 + 3.845398080843414e+04 + 3.809750905736740e+04 + 3.774427812448402e+04 + 3.739425915595785e+04 + 3.704742356207799e+04 + 3.670374297805164e+04 + 3.636318929176292e+04 + 3.602573463927982e+04 + 3.569135138416072e+04 + 3.536001215672983e+04 + 3.503168981923036e+04 + 3.470635744840465e+04 + 3.438398837321134e+04 + 3.406455615393208e+04 + 3.374803457309094e+04 + 3.343439765983423e+04 + 3.312361965186892e+04 + 3.281567499925836e+04 + 3.251053841177231e+04 + 3.220818480242078e+04 + 3.190858928930939e+04 + 3.161172723179306e+04 + 3.131757418548949e+04 + 3.102610591483113e+04 + 3.073729842710719e+04 + 3.045112791454117e+04 + 3.016757076691534e+04 + 2.988660361584138e+04 + 2.960820327321778e+04 + 2.933234674204399e+04 + 2.905901125674980e+04 + 2.878817423326317e+04 + 2.851981328372868e+04 + 2.825390622682930e+04 + 2.799043106146120e+04 + 2.772936599846356e+04 + 2.747068942978120e+04 + 2.721437991599866e+04 + 2.696041623625263e+04 + 2.670877735469368e+04 + 2.645944239579323e+04 + 2.621239068106394e+04 + 2.596760172331024e+04 + 2.572505519859007e+04 + 2.548473096648493e+04 + 2.524660907253227e+04 + 2.501066972455740e+04 + 2.477689330466365e+04 + 2.454526037995217e+04 + 2.431575168300119e+04 + 2.408834810912627e+04 + 2.386303072521571e+04 + 2.363978076395976e+04 + 2.341857962988761e+04 + 2.319940888531031e+04 + 2.298225025100848e+04 + 2.276708562349589e+04 + 2.255389704384009e+04 + 2.234266670372097e+04 + 2.213337697918792e+04 + 2.192601038403303e+04 + 2.172054957464747e+04 + 2.151697738916041e+04 + 2.131527680276242e+04 + 2.111543093252480e+04 + 2.091742306098243e+04 + 2.072123660422193e+04 + 2.052685512482519e+04 + 2.033426234716574e+04 + 2.014344212098682e+04 + 1.995437843426629e+04 + 1.976705544479930e+04 + 1.958145743480243e+04 + 1.939756881213320e+04 + 1.921537413684756e+04 + 1.903485810052154e+04 + 1.885600554387774e+04 + 1.867880143037429e+04 + 1.850323084111479e+04 + 1.832927901452323e+04 + 1.815693131178678e+04 + 1.798617320994377e+04 + 1.781699034075772e+04 + 1.764936845332217e+04 + 1.748329340510924e+04 + 1.731875119617678e+04 + 1.715572795110660e+04 + 1.699420990919751e+04 + 1.683418344358223e+04 + 1.667563503873475e+04 + 1.651855128954979e+04 + 1.636291893365341e+04 + 1.620872481606836e+04 + 1.605595588699932e+04 + 1.590459923143625e+04 + 1.575464203906202e+04 + 1.560607160533683e+04 + 1.545887535681969e+04 + 1.531304082443131e+04 + 1.516855564487381e+04 + 1.502540756956110e+04 + 1.488358445432479e+04 + 1.474307426938193e+04 + 1.460386509288249e+04 + 1.446594509814283e+04 + 1.432930256776952e+04 + 1.419392589719183e+04 + 1.405980357729324e+04 + 1.392692420658459e+04 + 1.379527648729671e+04 + 1.366484921045415e+04 + 1.353563127160237e+04 + 1.340761167272577e+04 + 1.328077950662285e+04 + 1.315512397004589e+04 + 1.303063434970357e+04 + 1.290730001970431e+04 + 1.278511047006237e+04 + 1.266405528001385e+04 + 1.254412410683634e+04 + 1.242530670538782e+04 + 1.230759293022181e+04 + 1.219097272173875e+04 + 1.207543611008671e+04 + 1.196097321598039e+04 + 1.184757424417080e+04 + 1.173522949287449e+04 + 1.162392934478714e+04 + 1.151366426384512e+04 + 1.140442480834694e+04 + 1.129620161634352e+04 + 1.118898540470730e+04 + 1.108276698378667e+04 + 1.097753724013271e+04 + 1.087328713748510e+04 + 1.077000773143687e+04 + 1.066769015148828e+04 + 1.056632560317495e+04 + 1.046590537899618e+04 + 1.036642084361778e+04 + 1.026786343864257e+04 + 1.017022468912003e+04 + 1.007349618928313e+04 + 9.977669609110566e+03 + 9.882736699245763e+03 + 9.788689277747368e+03 + 9.695519238085319e+03 + 9.603218551128393e+03 + 9.511779252802526e+03 + 9.421193453258842e+03 + 9.331453338088948e+03 + 9.242551155902798e+03 + 9.154479227014926e+03 + 9.067229945268125e+03 + 8.980795767109534e+03 + 8.895169220035050e+03 + 8.810342900070031e+03 + 8.726309463870590e+03 + 8.643061639313548e+03 + 8.560592220958239e+03 + 8.478894062727115e+03 + 8.397960086705119e+03 + 8.317783279679375e+03 + 8.238356687487571e+03 + 8.159673421912185e+03 + 8.081726656780256e+03 + 8.004509624589081e+03 + 7.928015622553179e+03 + 7.852238006535134e+03 + 7.777170190090504e+03 + 7.702805651284038e+03 + 7.629137923269694e+03 + 7.556160595291118e+03 + 7.483867321684783e+03 + 7.412251809739373e+03 + 7.341307820993124e+03 + 7.271029178292266e+03 + 7.201409756944273e+03 + 7.132443488123264e+03 + 7.064124361053455e+03 + 6.996446414793790e+03 + 6.929403743407001e+03 + 6.862990497342477e+03 + 6.797200875139910e+03 + 6.732029129721631e+03 + 6.667469570161823e+03 + 6.603516551523545e+03 + 6.540164480186692e+03 + 6.477407817185619e+03 + 6.415241069687017e+03 + 6.353658796883785e+03 + 6.292655608307650e+03 + 6.232226157518487e+03 + 6.172365149982773e+03 + 6.113067340658933e+03 + 6.054327527853383e+03 + 5.996140560115221e+03 + 5.938501333076975e+03 + 5.881404784939355e+03 + 5.824845903828315e+03 + 5.768819722461626e+03 + 5.713321315085574e+03 + 5.658345805472132e+03 + 5.603888359764917e+03 + 5.549944184846402e+03 + 5.496508537213697e+03 + 5.443576713947663e+03 + 5.391144051368102e+03 + 5.339205932358427e+03 + 5.287757780134069e+03 + 5.236795058291703e+03 + 5.186313275265001e+03 + 5.136307977685731e+03 + 5.086774751617681e+03 + 5.037709226449485e+03 + 4.989107068721900e+03 + 4.940963984504954e+03 + 4.893275721702213e+03 + 4.846038063285039e+03 + 4.799246830729600e+03 + 4.752897888312231e+03 + 4.706987133608333e+03 + 4.661510499922751e+03 + 4.616463963202395e+03 + 4.571843532909213e+03 + 4.527645253893021e+03 + 4.483865209302220e+03 + 4.440499515324517e+03 + 4.397544325863069e+03 + 4.354995830474305e+03 + 4.312850249817291e+03 + 4.271103841242844e+03 + 4.229752898292512e+03 + 4.188793745275323e+03 + 4.148222740634546e+03 + 4.108036277499050e+03 + 4.068230779797937e+03 + 4.028802705831530e+03 + 3.989748546349355e+03 + 3.951064821861195e+03 + 3.912748086813885e+03 + 3.874794926585441e+03 + 3.837201956255947e+03 + 3.799965825835211e+03 + 3.763083213042953e+03 + 3.726550823283946e+03 + 3.690365398229224e+03 + 3.654523706502605e+03 + 3.619022543185401e+03 + 3.583858737044133e+03 + 3.549029144619817e+03 + 3.514530650270483e+03 + 3.480360168271582e+03 + 3.446514639490202e+03 + 3.412991033253400e+03 + 3.379786348393921e+03 + 3.346897609451590e+03 + 3.314321868815865e+03 + 3.282056205761040e+03 + 3.250097724763853e+03 + 3.218443559530467e+03 + 3.187090870156345e+03 + 3.156036839918450e+03 + 3.125278679259401e+03 + 3.094813626126841e+03 + 3.064638941053712e+03 + 3.034751909739014e+03 + 3.005149845581890e+03 + 2.975830084543172e+03 + 2.946789986568892e+03 + 2.918026936797055e+03 + 2.889538343339952e+03 + 2.861321641252218e+03 + 2.833374286700636e+03 + 2.805693756659566e+03 + 2.778277556469224e+03 + 2.751123212016022e+03 + 2.724228269242043e+03 + 2.697590301914011e+03 + 2.671206904109025e+03 + 2.645075688971241e+03 + 2.619194294405700e+03 + 2.593560380141823e+03 + 2.568171626715687e+03 + 2.543025737542386e+03 + 2.518120435211838e+03 + 2.493453462030127e+03 + 2.469022585172818e+03 + 2.444825590018873e+03 + 2.420860280374604e+03 + 2.397124484732366e+03 + 2.373616049394018e+03 + 2.350332838436762e+03 + 2.327272738609171e+03 + 2.304433655218562e+03 + 2.281813512846715e+03 + 2.259410255601743e+03 + 2.237221844685107e+03 + 2.215246260811306e+03 + 2.193481506123082e+03 + 2.171925598942706e+03 + 2.150576574458654e+03 + 2.129432488764117e+03 + 2.108491414442484e+03 + 2.087751441300839e+03 + 2.067210678851041e+03 + 2.046867252353801e+03 + 2.026719303565292e+03 + 2.006764993817073e+03 + 1.987002500493615e+03 + 1.967430017215378e+03 + 1.948045754608514e+03 + 1.928847939062915e+03 + 1.909834815497017e+03 + 1.891004644375446e+03 + 1.872355700452609e+03 + 1.853886275802303e+03 + 1.835594678424827e+03 + 1.817479231062563e+03 + 1.799538272810955e+03 + 1.781770158220284e+03 + 1.764173256646331e+03 + 1.746745953278825e+03 + 1.729486647489427e+03 + 1.712393752933919e+03 + 1.695465699568615e+03 + 1.678700930817119e+03 + 1.662097903850073e+03 + 1.645655091966725e+03 + 1.629370981458450e+03 + 1.613244072202941e+03 + 1.597272880432907e+03 + 1.581455933682248e+03 + 1.565791771294578e+03 + 1.550278951289465e+03 + 1.534916043199639e+03 + 1.519701626827566e+03 + 1.504634298568118e+03 + 1.489712666891078e+03 + 1.474935351996483e+03 + 1.460300988758884e+03 + 1.445808223853118e+03 + 1.431455716350942e+03 + 1.417242138357507e+03 + 1.403166173386480e+03 + 1.389226518010158e+03 + 1.375421881007569e+03 + 1.361750982089843e+03 + 1.348212553926219e+03 + 1.334805341072190e+03 + 1.321528098720046e+03 + 1.308379594477261e+03 + 1.295358607457036e+03 + 1.282463927300085e+03 + 1.269694355823267e+03 + 1.257048705895313e+03 + 1.244525800699936e+03 + 1.232124475203576e+03 + 1.219843575042076e+03 + 1.207681956049559e+03 + 1.195638485404256e+03 + 1.183712040621380e+03 + 1.171901509388141e+03 + 1.160205790292893e+03 + 1.148623791762007e+03 + 1.137154432301071e+03 + 1.125796641257775e+03 + 1.114549357263016e+03 + 1.103411528660030e+03 + 1.092382114454342e+03 + 1.081460082700689e+03 + 1.070644411095300e+03 + 1.059934087579793e+03 + 1.049328108720195e+03 + 1.038825480494848e+03 + 1.028425218971371e+03 + 1.018126348582361e+03 + 1.007927902927668e+03 + 9.978289254104482e+02 + 9.878284675679866e+02 + 9.779255898738762e+02 + 9.681193621623704e+02 + 9.584088623012988e+02 + 9.487931771658360e+02 + 9.392714022763922e+02 + 9.298426409505287e+02 + 9.205060057185552e+02 + 9.112606172437117e+02 + 9.021056036681564e+02 + 8.930401022331439e+02 + 8.840632580637879e+02 + 8.751742235821227e+02 + 8.663721600224155e+02 + 8.576562363107178e+02 + 8.490256285516970e+02 + 8.404795212594149e+02 + 8.320171064683727e+02 + 8.236375833541338e+02 + 8.153401590664150e+02 + 8.071240480244585e+02 + 7.989884718119321e+02 + 7.909326598382663e+02 + 7.829558483527250e+02 + 7.750572805483002e+02 + 7.672362073200991e+02 + 7.594918862313154e+02 + 7.518235817392584e+02 + 7.442305655888715e+02 + 7.367121158939042e+02 + 7.292675176279554e+02 + 7.218960630476328e+02 + 7.145970504767349e+02 + 7.073697847820883e+02 + 7.002135778527235e+02 + 6.931277475695276e+02 + 6.861116184218383e+02 + 6.791645215373005e+02 + 6.722857937677298e+02 + 6.654747784472139e+02 + 6.587308253877042e+02 + 6.520532900189463e+02 + 6.454415341582659e+02 + 6.388949257382737e+02 + 6.324128381494658e+02 + 6.259946511571761e+02 + 6.196397502963263e+02 + 6.133475264197438e+02 + 6.071173768094372e+02 + 6.009487042352257e+02 + 5.948409165626937e+02 + 5.887934278801442e+02 + 5.828056577149104e+02 + 5.768770306335107e+02 + 5.710069770500405e+02 + 5.651949326339243e+02 + 5.594403381224611e+02 + 5.537426401234757e+02 + 5.481012901152631e+02 + 5.425157443662293e+02 + 5.369854648776029e+02 + 5.315099185870243e+02 + 5.260885773011631e+02 + 5.207209179649268e+02 + 5.154064223119497e+02 + 5.101445770921985e+02 + 5.049348740937783e+02 + 4.997768095346806e+02 + 4.946698844046663e+02 + 4.896136047862775e+02 + 4.846074811232588e+02 + 4.796510285618583e+02 + 4.747437670096575e+02 + 4.698852205388910e+02 + 4.650749179071526e+02 + 4.603123926691712e+02 + 4.555971823563725e+02 + 4.509288288727789e+02 + 4.463068788207030e+02 + 4.417308827523721e+02 + 4.372003955530256e+02 + 4.327149765501697e+02 + 4.282741889383891e+02 + 4.238776002586995e+02 + 4.195247821802792e+02 + 4.152153101301976e+02 + 4.109487639564401e+02 + 4.067247273397822e+02 + 4.025427875685178e+02 + 3.984025363858318e+02 + 3.943035692477232e+02 + 3.902454851077117e+02 + 3.862278871965347e+02 + 3.822503823673904e+02 + 3.783125809462488e+02 + 3.744140974100913e+02 + 3.705545496319825e+02 + 3.667335588488600e+02 + 3.629507504654170e+02 + 3.592057531920941e+02 + 3.554981990087823e+02 + 3.518277237997781e+02 + 3.481939667588409e+02 + 3.445965704231110e+02 + 3.410351808614133e+02 + 3.375094474036331e+02 + 3.340190228447264e+02 + 3.305635632260179e+02 + 3.271427276872922e+02 + 3.237561788604219e+02 + 3.204035826343936e+02 + 3.170846077594078e+02 + 3.137989262426811e+02 + 3.105462135925898e+02 + 3.073261480789523e+02 + 3.041384108878384e+02 + 3.009826866110996e+02 + 2.978586626197819e+02 + 2.947660292278245e+02 + 2.917044799774912e+02 + 2.886737110898206e+02 + 2.856734216347172e+02 + 2.827033138205502e+02 + 2.797630925185924e+02 + 2.768524653868921e+02 + 2.739711430162750e+02 + 2.711188386172004e+02 + 2.682952682417776e+02 + 2.655001507075566e+02 + 2.627332073441469e+02 + 2.599941621974095e+02 + 2.572827420191948e+02 + 2.545986760992428e+02 + 2.519416963867954e+02 + 2.493115374004747e+02 + 2.467079361520411e+02 + 2.441306322519956e+02 + 2.415793676749632e+02 + 2.390538868162835e+02 + 2.365539368283623e+02 + 2.340792670618049e+02 + 2.316296291092408e+02 + 2.292047772816256e+02 + 2.268044680583002e+02 + 2.244284601550858e+02 + 2.220765149177526e+02 + 2.197483957886078e+02 + 2.174438683808943e+02 + 2.151627007150871e+02 + 2.129046628991759e+02 + 2.106695273325222e+02 + 2.084570687245048e+02 + 2.062670637405841e+02 + 2.040992912166423e+02 + 2.019535322675416e+02 + 1.998295699356443e+02 + 1.977271893831886e+02 + 1.956461779038128e+02 + 1.935863247355415e+02 + 1.915474213798307e+02 + 1.895292611678483e+02 + 1.875316391958052e+02 + 1.855543528482985e+02 + 1.835972014670904e+02 + 1.816599861324650e+02 + 1.797425099308505e+02 + 1.778445779263947e+02 + 1.759659969484732e+02 + 1.741065756739388e+02 + 1.722661246609050e+02 + 1.704444562587039e+02 + 1.686413847511611e+02 + 1.668567261386198e+02 + 1.650902980928235e+02 + 1.633419201885993e+02 + 1.616114136777071e+02 + 1.598986014805750e+02 + 1.582033083619683e+02 + 1.565253606828442e+02 + 1.548645864376032e+02 + 1.532208154238845e+02 + 1.515938789750561e+02 + 1.499836100268175e+02 + 1.483898432531407e+02 + 1.468124148175615e+02 + 1.452511624739094e+02 + 1.437059256375598e+02 + 1.421765451600804e+02 + 1.406628634671130e+02 + 1.391647245894945e+02 + 1.376819739463268e+02 + 1.362144585029153e+02 + 1.347620267668397e+02 + 1.333245285902542e+02 + 1.319018153476916e+02 + 1.304937399101563e+02 + 1.291001564496927e+02 + 1.277209206089626e+02 + 1.263558894821456e+02 + 1.250049214462411e+02 + 1.236678763269726e+02 + 1.223446153162142e+02 + 1.210350008534558e+02 + 1.197388968258891e+02 + 1.184561684202564e+02 + 1.171866820332312e+02 + 1.159303054814129e+02 + 1.146869078350233e+02 + 1.134563593521917e+02 + 1.122385316718855e+02 + 1.110332976232454e+02 + 1.098405311979204e+02 + 1.086601077608261e+02 + 1.074919038117468e+02 + 1.063357969778381e+02 + 1.051916662270612e+02 + 1.040593916259906e+02 + 1.029388543466298e+02 + 1.018299368341955e+02 + 1.007325226151947e+02 + 9.964649633160360e+01 + 9.857174381861689e+01 + 9.750815195741964e+01 + 9.645560874783912e+01 + 9.541400332430685e+01 + 9.438322582683587e+01 + 9.336316750654088e+01 + 9.235372071959520e+01 + 9.135477878367931e+01 + 9.036623609174318e+01 + 8.938798812110527e+01 + 8.841993128541375e+01 + 8.746196304638978e+01 + 8.651398190997742e+01 + 8.557588728936869e+01 + 8.464757961904559e+01 + 8.372896034435935e+01 + 8.281993180539014e+01 + 8.192039735296085e+01 + 8.103026128111058e+01 + 8.014942874495698e+01 + 7.927780590401203e+01 + 7.841529983858037e+01 + 7.756181847617736e+01 + 7.671727071446733e+01 + 7.588156631674119e+01 + 7.505461587372024e+01 + 7.423633095310755e+01 + 7.342662394299153e+01 + 7.262540803009301e+01 + 7.183259736215271e+01 + 7.104810687905130e+01 + 7.027185230277652e+01 + 6.950375028269488e+01 + 6.874371822566854e+01 + 6.799167430460268e+01 + 6.724753760248480e+01 + 6.651122793902957e+01 + 6.578266588744034e+01 + 6.506177289160765e+01 + 6.434847109859102e+01 + 6.364268339115934e+01 + 6.294433351272004e+01 + 6.225334589309644e+01 + 6.156964567793161e+01 + 6.089315882540817e+01 + 6.022381196253272e+01 + 5.956153243192431e+01 + 5.890624835784802e+01 + 5.825788851805937e+01 + 5.761638239540161e+01 + 5.698166019812880e+01 + 5.635365277455941e+01 + 5.573229169643452e+01 + 5.511750921575248e+01 + 5.450923819422894e+01 + 5.390741220139490e+01 + 5.331196548214332e+01 + 5.272283288224639e+01 + 5.213994992103501e+01 + 5.156325275682114e+01 + 5.099267813956413e+01 + 5.042816349744366e+01 + 4.986964685712531e+01 + 4.931706681520628e+01 + 4.877036264381848e+01 + 4.822947419115650e+01 + 4.769434186145065e+01 + 4.716490671386568e+01 + 4.664111036072763e+01 + 4.612289496053356e+01 + 4.561020331071316e+01 + 4.510297873475514e+01 + 4.460116508782800e+01 + 4.410470685618211e+01 + 4.361354903662819e+01 + 4.312763714409483e+01 + 4.264691728541290e+01 + 4.217133607138089e+01 + 4.170084064118655e+01 + 4.123537869187841e+01 + 4.077489840121474e+01 + 4.031934846724150e+01 + 3.986867813088396e+01 + 3.942283710103097e+01 + 3.898177559914080e+01 + 3.854544435810492e+01 + 3.811379455962712e+01 + 3.768677789368684e+01 + 3.726434656726136e+01 + 3.684645322013298e+01 + 3.643305096011807e+01 + 3.602409338288954e+01 + 3.561953452360934e+01 + 3.521932891649128e+01 + 3.482343153306697e+01 + 3.443179775085747e+01 + 3.404438343901749e+01 + 3.366114490993698e+01 + 3.328203887889210e+01 + 3.290702252020257e+01 + 3.253605343510379e+01 + 3.216908962260722e+01 + 3.180608952699355e+01 + 3.144701200592500e+01 + 3.109181631097627e+01 + 3.074046212448961e+01 + 3.039290952642646e+01 + 3.004911898312090e+01 + 2.970905136572861e+01 + 2.937266792505025e+01 + 2.903993030352619e+01 + 2.871080057194543e+01 + 2.838524113862799e+01 + 2.806321475945346e+01 + 2.774468462701056e+01 + 2.742961427426368e+01 + 2.711796757973106e+01 + 2.680970882898042e+01 + 2.650480264209962e+01 + 2.620321398820359e+01 + 2.590490820737408e+01 + 2.560985096325826e+01 + 2.531800827674159e+01 + 2.502934653543958e+01 + 2.474383242809609e+01 + 2.446143296972707e+01 + 2.418211555345684e+01 + 2.390584787621480e+01 + 2.363259794654911e+01 + 2.336233413255323e+01 + 2.309502509558490e+01 + 2.283063979379989e+01 + 2.256914753657127e+01 + 2.231051792982671e+01 + 2.205472087402378e+01 + 2.180172658443576e+01 + 2.155150556919213e+01 + 2.130402866286656e+01 + 2.105926696778129e+01 + 2.081719185319289e+01 + 2.057777503962135e+01 + 2.034098850331043e+01 + 2.010680447006149e+01 + 1.987519550063876e+01 + 1.964613442528577e+01 + 1.941959432580914e+01 + 1.919554855827313e+01 + 1.897397075515799e+01 + 1.875483482712853e+01 + 1.853811494931854e+01 + 1.832378554313712e+01 + 1.811182128985819e+01 + 1.790219714756028e+01 + 1.769488831219516e+01 + 1.748987022919803e+01 + 1.728711861052799e+01 + 1.708660939866258e+01 + 1.688831878332332e+01 + 1.669222321036695e+01 + 1.649829934690638e+01 + 1.630652410217020e+01 + 1.611687463464447e+01 + 1.592932831698975e+01 + 1.574386275792588e+01 + 1.556045580679505e+01 + 1.537908552081595e+01 + 1.519973018767385e+01 + 1.502236832516821e+01 + 1.484697865494502e+01 + 1.467354012841447e+01 + 1.450203191274907e+01 + 1.433243337158686e+01 + 1.416472409674524e+01 + 1.399888388846149e+01 + 1.383489273805109e+01 + 1.367273085728561e+01 + 1.351237865788487e+01 + 1.335381673920349e+01 + 1.319702591751814e+01 + 1.304198719993403e+01 + 1.288868177614133e+01 + 1.273709104714046e+01 + 1.258719659672914e+01 + 1.243898018736778e+01 + 1.229242378719869e+01 + 1.214750954184370e+01 + 1.200421977308728e+01 + 1.186253699764556e+01 + 1.172244390266849e+01 + 1.158392335040491e+01 + 1.144695839482221e+01 + 1.131153225250660e+01 + 1.117762830926809e+01 + 1.104523013501555e+01 + 1.091432145806843e+01 + 1.078488617566414e+01 + 1.065690836231677e+01 + 1.053037224372639e+01 + 1.040526220941685e+01 + 1.028156282144551e+01 + 1.015925878941852e+01 + 1.003833498402321e+01 + 9.918776439618298e+00 + 9.800568334039683e+00 + 9.683696005431957e+00 + 9.568144946174611e+00 + 9.453900787919052e+00 + 9.340949322860192e+00 + 9.229276489267212e+00 + 9.118868359446189e+00 + 9.009711163642070e+00 + 8.901791273796370e+00 + 8.795095191785947e+00 + 8.689609570648638e+00 + 8.585321201853549e+00 + 8.482217005296002e+00 + 8.380284046581689e+00 + 8.279509523576925e+00 + 8.179880760330461e+00 + 8.081385224417300e+00 + 7.984010508389771e+00 + 7.887744326863491e+00 + 7.792574535206823e+00 + 7.698489109519010e+00 + 7.605476146133772e+00 + 7.513523878187234e+00 + 7.422620653280592e+00 + 7.332754935473541e+00 + 7.243915322674125e+00 + 7.156090524556396e+00 + 7.069269365741123e+00 + 6.983440797017198e+00 + 6.898593877074525e+00 + 6.814717779007339e+00 + 6.731801797516630e+00 + 6.649835331100769e+00 + 6.568807890289103e+00 + 6.488709103685009e+00 + 6.409528699865692e+00 + 6.331256515961359e+00 + 6.253882503643640e+00 + 6.177396712290002e+00 + 6.101789297547966e+00 + 6.027050522250886e+00 + 5.953170745278158e+00 + 5.880140434362498e+00 + 5.807950156612827e+00 + 5.736590570385212e+00 + 5.666052441485230e+00 + 5.596326632559173e+00 + 5.527404095182261e+00 + 5.459275884510260e+00 + 5.391933149962507e+00 + 5.325367127621260e+00 + 5.259569151260657e+00 + 5.194530647433734e+00 + 5.130243129823101e+00 + 5.066698206416531e+00 + 5.003887570881058e+00 + 4.941803001453549e+00 + 4.880436373900456e+00 + 4.819779643419130e+00 + 4.759824844738533e+00 + 4.700564110200850e+00 + 4.641989649988083e+00 + 4.584093751736625e+00 + 4.526868793565781e+00 + 4.470307230074105e+00 + 4.414401594729965e+00 + 4.359144507919768e+00 + 4.304528662004969e+00 + 4.250546825086277e+00 + 4.197191851627622e+00 + 4.144456666159979e+00 + 4.092334266478478e+00 + 4.040817732600400e+00 + 3.989900213340690e+00 + 3.939574930757155e+00 + 3.889835183170760e+00 + 3.840674335613269e+00 + 3.792085827136757e+00 + 3.744063169627271e+00 + 3.696599938809659e+00 + 3.649689781941428e+00 + 3.603326418080199e+00 + 3.557503628382808e+00 + 3.512215261374414e+00 + 3.467455236465362e+00 + 3.423217534816642e+00 + 3.379496201686086e+00 + 3.336285348654454e+00 + 3.293579148649655e+00 + 3.251371841226642e+00 + 3.209657725464606e+00 + 3.168431157939940e+00 + 3.127686563504146e+00 + 3.087418425005168e+00 + 3.047621281181530e+00 + 3.008289735457784e+00 + 2.969418446796439e+00 + 2.931002129285814e+00 + 2.893035560502260e+00 + 2.855513571053400e+00 + 2.818431044951714e+00 + 2.781782927380857e+00 + 2.745564215550934e+00 + 2.709769959926351e+00 + 2.674395268211684e+00 + 2.639435297946605e+00 + 2.604885259637663e+00 + 2.570740420206636e+00 + 2.536996093812299e+00 + 2.503647644969884e+00 + 2.470690493614489e+00 + 2.438120105903952e+00 + 2.405931997235836e+00 + 2.374121735683807e+00 + 2.342684934097179e+00 + 2.311617253784086e+00 + 2.280914406216957e+00 + 2.250572146781167e+00 + 2.220586279273893e+00 + 2.190952653478714e+00 + 2.161667162009881e+00 + 2.132725747880213e+00 + 2.104124396422602e+00 + 2.075859132902099e+00 + 2.047926031580743e+00 + 2.020321209266692e+00 + 1.993040822266800e+00 + 1.966081073072867e+00 + 1.939438205166541e+00 + 1.913108500802827e+00 + 1.887088286918805e+00 + 1.861373929947225e+00 + 1.835961834345823e+00 + 1.810848447621857e+00 + 1.786030255213551e+00 + 1.761503779943143e+00 + 1.737265586321442e+00 + 1.713312275115213e+00 + 1.689640483715834e+00 + 1.666246890168493e+00 + 1.643128207113473e+00 + 1.620281182788458e+00 + 1.597702604935450e+00 + 1.575389294699183e+00 + 1.553338108095691e+00 + 1.531545938928566e+00 + 1.510009713407906e+00 + 1.488726392261371e+00 + 1.467692971937850e+00 + 1.446906480207705e+00 + 1.426363979153670e+00 + 1.406062564959602e+00 + 1.385999363940103e+00 + 1.366171536058216e+00 + 1.346576274130787e+00 + 1.327210800124654e+00 + 1.308072368828510e+00 + 1.289158266486426e+00 + 1.270465807665891e+00 + 1.251992339187792e+00 + 1.233735237889272e+00 + 1.215691907984316e+00 + 1.197859785096899e+00 + 1.180236333919823e+00 + 1.162819045897185e+00 + 1.145605442741095e+00 + 1.128593073973588e+00 + 1.111779515284567e+00 + 1.095162371880828e+00 + 1.078739275475473e+00 + 1.062507883334588e+00 + 1.046465881646835e+00 + 1.030610981874106e+00 + 1.014940920295882e+00 + 9.994534611152829e-01 + 9.841463930086627e-01 + 9.690175291593270e-01 + 9.540647093618980e-01 + 9.392857969051628e-01 + 9.246786792729085e-01 + 9.102412696338000e-01 + 8.959715035501604e-01 + 8.818673402027871e-01 + 8.679267639726700e-01 + 8.541477806828601e-01 + 8.405284189410931e-01 + 8.270667316623297e-01 + 8.137607925445277e-01 + 8.006086976874616e-01 + 7.876085666023992e-01 + 7.747585387876328e-01 + 7.620567754307064e-01 + 7.495014602973783e-01 + 7.370907966216457e-01 + 7.248230088485250e-01 + 7.126963429559050e-01 + 7.007090638413013e-01 + 6.888594572109231e-01 + 6.771458292779966e-01 + 6.655665045807759e-01 + 6.541198279036498e-01 + 6.428041637825399e-01 + 6.316178947210964e-01 + 6.205594229105623e-01 + 6.096271692194244e-01 + 5.988195719936049e-01 + 5.881350889221284e-01 + 5.775721954595900e-01 + 5.671293841176136e-01 + 5.568051664208875e-01 + 5.465980707194322e-01 + 5.365066418737608e-01 + 5.265294432641988e-01 + 5.166650544231339e-01 + 5.069120710261563e-01 + 4.972691065208522e-01 + 4.877347899800689e-01 + 4.783077664492044e-01 + 4.689866979017357e-01 + 4.597702612073233e-01 + 4.506571489021905e-01 + 4.416460700276524e-01 + 4.327357479310139e-01 + 4.239249212044141e-01 + 4.152123442913231e-01 + 4.065967853823845e-01 + 3.980770275573000e-01 + 3.896518691214699e-01 + 3.813201217302061e-01 + 3.730806117264635e-01 + 3.649321798861945e-01 + 3.568736798624809e-01 + 3.489039797704173e-01 + 3.410219613244947e-01 + 3.332265187013593e-01 + 3.255165605086018e-01 + 3.178910083898543e-01 + 3.103487958586359e-01 + 3.028888701360887e-01 + 2.955101913786422e-01 + 2.882117315106021e-01 + 2.809924755137371e-01 + 2.738514204626846e-01 + 2.667875748867065e-01 + 2.597999604522775e-01 + 2.528876103054370e-01 + 2.460495685714950e-01 + 2.392848919788540e-01 + 2.325926484518769e-01 + 2.259719167857841e-01 + 2.194217877354759e-01 + 2.129413627175208e-01 + 2.065297538274627e-01 + 2.001860848470379e-01 + 1.939094897086202e-01 + 1.876991127051828e-01 + 1.815541094417414e-01 + 1.754736452756007e-01 + 1.694568956974621e-01 + 1.635030470498157e-01 + 1.576112950508609e-01 + 1.517808453564031e-01 + 1.460109140364644e-01 + 1.403007261766342e-01 + 1.346495165784953e-01 + 1.290565300180611e-01 + 1.235210199704221e-01 + 1.180422494287421e-01 + 1.126194909047226e-01 + 1.072520253105725e-01 + 1.019391428882170e-01 + 9.668014295417104e-02 + 9.147433293860986e-02 + 8.632102939670111e-02 + 8.121955756354367e-02 + 7.616925052308399e-02 + 7.116945022739722e-02 + 6.621950693894064e-02 + 6.131877854698166e-02 + 5.646663155698649e-02 + 5.166244039926220e-02 + 4.690558691983024e-02 + 4.219546135291571e-02 + 3.753146148005052e-02 + 3.291299228995687e-02 + 2.833946692296159e-02 + 2.381030573044091e-02 + 1.932493608562982e-02 + 1.488279323951757e-02 + 1.048331933378767e-02 + 6.125963364112487e-03 + 1.810181928441051e-03 + -2.464561780353438e-03 + -6.698797872311066e-03 + -1.089304914227914e-02 + -1.504783206514415e-02 + -1.916365656771068e-02 + -2.324102555134537e-02 + -2.728043585421590e-02 + -3.128237791440187e-02 + -3.524733543518016e-02 + -3.917578628623598e-02 + -4.306820207473552e-02 + -4.692504798332473e-02 + -5.074678357205704e-02 + -5.453386225593208e-02 + -5.828673132987599e-02 + -6.200583267980977e-02 + -6.569160218738558e-02 + -6.934446987831328e-02 + -7.296486055963237e-02 + -7.655319319650564e-02 + -8.010988114185758e-02 + -8.363533270338043e-02 + -8.712995053780122e-02 + -9.059413193193132e-02 + -9.402826926020177e-02 + -9.743274938790861e-02 + -1.008079541064505e-01 + -1.041542604608216e-01 + -1.074720401131623e-01 + -1.107616598682374e-01 + -1.140234819193764e-01 + -1.172578632830942e-01 + -1.204651563472630e-01 + -1.236457089966172e-01 + -1.267998640735528e-01 + -1.299279600346222e-01 + -1.330303309819349e-01 + -1.361073061299021e-01 + -1.391592104828469e-01 + -1.421863647988072e-01 + -1.451890851855495e-01 + -1.481676836992942e-01 + -1.511224682100277e-01 + -1.540537421399553e-01 + -1.569618050599837e-01 + -1.598469524764272e-01 + -1.627094755828420e-01 + -1.655496618778017e-01 + -1.683677949236447e-01 + -1.711641541517163e-01 + -1.739390154343296e-01 + -1.766926508045859e-01 + -1.794253283544359e-01 + -1.821373127460387e-01 + -1.848288648981078e-01 + -1.875002419786971e-01 + -1.901516978443653e-01 + -1.927834826976386e-01 + -1.953958431846420e-01 + -1.979890227559544e-01 + -2.005632612952037e-01 + -2.031187952951354e-01 + -2.056558581586019e-01 + -2.081746798356756e-01 + -2.106754870586183e-01 + -2.131585035595214e-01 + -2.156239496932611e-01 + -2.180720427808593e-01 + -2.205029972492180e-01 + -2.229170242226580e-01 + -2.253143319488933e-01 + -2.276951258807381e-01 + -2.300596082676421e-01 + -2.324079786235529e-01 + -2.347404337552020e-01 + -2.370571673694448e-01 + -2.393583705568364e-01 + -2.416442317867498e-01 + -2.439149365965413e-01 + -2.461706679522762e-01 + -2.484116061949506e-01 + -2.506379289887288e-01 + -2.528498115997045e-01 + -2.550474267213886e-01 + -2.572309443123204e-01 + -2.594005320626763e-01 + -2.615563552809436e-01 + -2.636985766193694e-01 + -2.658273564814242e-01 + -2.679428529152917e-01 + -2.700452216727706e-01 + -2.721346163277996e-01 + -2.742111879420810e-01 + -2.762750854486131e-01 + -2.783264557785196e-01 + -2.803654434689624e-01 + -2.823921908087395e-01 + -2.844068381756654e-01 + -2.864095239109061e-01 + -2.884003839950212e-01 + -2.903795524955394e-01 + -2.923471617904532e-01 + -2.943033420191942e-01 + -2.962482212763220e-01 + -2.981819256807660e-01 + -3.001045795717013e-01 + -3.020163055275332e-01 + -3.039172239885258e-01 + -3.058074538261057e-01 + -3.076871122705734e-01 + -3.095563141516905e-01 + -3.114151727559051e-01 + -3.132637999546681e-01 + -3.151023057635463e-01 + -3.169307984585886e-01 + -3.187493845723606e-01 + -3.205581689117248e-01 + -3.223572548745565e-01 + -3.241467443749414e-01 + -3.259267374142799e-01 + -3.276973325691862e-01 + -3.294586270053045e-01 + -3.312107160890871e-01 + -3.329536937962613e-01 + -3.346876527428858e-01 + -3.364126840777460e-01 + -3.381288775295205e-01 + -3.398363212268976e-01 + -3.415351019703767e-01 + -3.432253052941175e-01 + -3.449070152459444e-01 + -3.465803145779997e-01 + -3.482452848007116e-01 + -3.499020059501182e-01 + -3.515505568826250e-01 + -3.531910152859590e-01 + -3.548234573752725e-01 + -3.564479582224311e-01 + -3.580645917875246e-01 + -3.596734306319520e-01 + -3.612745463110025e-01 + -3.628680093075062e-01 + -3.644538885605036e-01 + -3.660322520458910e-01 + -3.676031668332329e-01 + -3.691666987516095e-01 + -3.707229124779602e-01 + -3.722718716670178e-01 + -3.738136390608672e-01 + -3.753482761467254e-01 + -3.768758432749062e-01 + -3.783964002465877e-01 + -3.799100056353694e-01 + -3.814167166997948e-01 + -3.829165900177774e-01 + -3.844096813827866e-01 + -3.858960456354959e-01 + -3.873757364088854e-01 + -3.888488064600710e-01 + -3.903153077375676e-01 + -3.917752913452379e-01 + -3.932288075353338e-01 + -3.946759055987133e-01 + -3.961166339473677e-01 + -3.975510402779339e-01 + -3.989791715122148e-01 + -4.004010735521537e-01 + -4.018167915706618e-01 + -4.032263700983349e-01 + -4.046298528561717e-01 + -4.060272827301947e-01 + -4.074187016384220e-01 + -4.088041511045764e-01 + -4.101836719923956e-01 + -4.115573039941210e-01 + -4.129250863351419e-01 + -4.142870577221169e-01 + -4.156432559911067e-01 + -4.169937183587125e-01 + -4.183384813924751e-01 + -4.196775807600287e-01 + -4.210110517890521e-01 + -4.223389293056927e-01 + -4.236612469859990e-01 + -4.249780381358575e-01 + -4.262893357128523e-01 + -4.275951718561576e-01 + -4.288955781548201e-01 + -4.301905856512787e-01 + -4.314802245948859e-01 + -4.327645248125306e-01 + -4.340435157401011e-01 + -4.353172261319986e-01 + -4.365856843065750e-01 + -4.378489181140523e-01 + -4.391069545111200e-01 + -4.403598201489721e-01 + -4.416075414900063e-01 + -4.428501441617211e-01 + -4.440876533447125e-01 + -4.453200938994337e-01 + -4.465474900663732e-01 + -4.477698656375739e-01 + -4.489872440132049e-01 + -4.501996482091757e-01 + -4.514071007293397e-01 + -4.526096234423685e-01 + -4.538072381973440e-01 + -4.549999664346564e-01 + -4.561878287239103e-01 + -4.573708454564815e-01 + -4.585490367840940e-01 + -4.597224223838171e-01 + -4.608910215483196e-01 + -4.620548532229073e-01 + -4.632139359470852e-01 + -4.643682878385313e-01 + -4.655179266829866e-01 + -4.666628700026897e-01 + -4.678031349656974e-01 + -4.689387384105899e-01 + -4.700696968538801e-01 + -4.711960263436956e-01 + -4.723177425902391e-01 + -4.734348612979066e-01 + -4.745473978039702e-01 + -4.756553669920032e-01 + -4.767587833133353e-01 + -4.778576611599107e-01 + -4.789520147944609e-01 + -4.800418577229591e-01 + -4.811272034289876e-01 + -4.822080654661853e-01 + -4.832844566828151e-01 + -4.843563896207272e-01 + -4.854238767122197e-01 + -4.864869303811440e-01 + -4.875455627166793e-01 + -4.885997853037442e-01 + -4.896496095260600e-01 + -4.906950466868944e-01 + -4.917361080077966e-01 + -4.927728043326091e-01 + -4.938051461993963e-01 + -4.948331438840640e-01 + -4.958568075736277e-01 + -4.968761473512240e-01 + -4.978911731225704e-01 + -4.989018945002663e-01 + -4.999083208482176e-01 + -5.009104613021941e-01 + -5.019083248972503e-01 + -5.029019205602130e-01 + -5.038912570358333e-01 + -5.048763428126108e-01 + -5.058571862004539e-01 + -5.068337954285524e-01 + -5.078061785541023e-01 + -5.087743434557772e-01 + -5.097382978215317e-01 + -5.106980492175714e-01 + -5.116536051046018e-01 + -5.126049728172039e-01 + -5.135521595357905e-01 + -5.144951722594635e-01 + -5.154340177423219e-01 + -5.163687027408718e-01 + -5.172992340140365e-01 + -5.182256180631845e-01 + -5.191478612397169e-01 + -5.200659697981208e-01 + -5.209799499565910e-01 + -5.218898077706294e-01 + -5.227955490891694e-01 + -5.236971796844924e-01 + -5.245947053253370e-01 + -5.254881317688337e-01 + -5.263774645512288e-01 + -5.272627090126604e-01 + -5.281438703531137e-01 + -5.290209539977515e-01 + -5.298939652703512e-01 + -5.307629091340913e-01 + -5.316277904778723e-01 + -5.324886142110474e-01 + -5.333453852986519e-01 + -5.341981085648844e-01 + -5.350467886587517e-01 + -5.358914300418783e-01 + -5.367320373706596e-01 + -5.375686152841432e-01 + -5.384011680734792e-01 + -5.392297001047128e-01 + -5.400542157871245e-01 + -5.408747194069761e-01 + -5.416912150785628e-01 + -5.425037068232484e-01 + -5.433121987186342e-01 + -5.441166948984431e-01 + -5.449171994793097e-01 + -5.457137163885653e-01 + -5.465062494211190e-01 + -5.472948023341125e-01 + -5.480793790518950e-01 + -5.488599834110802e-01 + -5.496366191273470e-01 + -5.504092899443518e-01 + -5.511779994928784e-01 + -5.519427513029639e-01 + -5.527035490710489e-01 + -5.534603964642170e-01 + -5.542132970155166e-01 + -5.549622540841348e-01 + -5.557072711574547e-01 + -5.564483519201564e-01 + -5.571854997347668e-01 + -5.579187179919134e-01 + -5.586480102698358e-01 + -5.593733798207278e-01 + -5.600948299343745e-01 + -5.608123641702291e-01 + -5.615259858006734e-01 + -5.622356980349319e-01 + -5.629415042452564e-01 + -5.636434078437447e-01 + -5.643414121719204e-01 + -5.650355204128609e-01 + -5.657257359067179e-01 + -5.664120620074502e-01 + -5.670945018655422e-01 + -5.677730587569899e-01 + -5.684477360210265e-01 + -5.691185368946378e-01 + -5.697854646230838e-01 + -5.704485224954847e-01 + -5.711077138615709e-01 + -5.717630418949810e-01 + -5.724145097236072e-01 + -5.730621208149326e-01 + -5.737058785857441e-01 + -5.743457862811681e-01 + -5.749818469287452e-01 + -5.756140639044424e-01 + -5.762424408221788e-01 + -5.768669806578469e-01 + -5.774876866716016e-01 + -5.781045625480883e-01 + -5.787176116189466e-01 + -5.793268371095267e-01 + -5.799322422747063e-01 + -5.805338304985933e-01 + -5.811316053198213e-01 + -5.817255703521417e-01 + -5.823157287697720e-01 + -5.829020838792335e-01 + -5.834846393919914e-01 + -5.840633987477251e-01 + -5.846383653791880e-01 + -5.852095428966003e-01 + -5.857769347455314e-01 + -5.863405444497650e-01 + -5.869003757905312e-01 + -5.874564321893059e-01 + -5.880087171065591e-01 + -5.885572344676900e-01 + -5.891019879107314e-01 + -5.896429809482692e-01 + -5.901802172691951e-01 + -5.907137006344829e-01 + -5.912434348345698e-01 + -5.917694236578408e-01 + -5.922916709366750e-01 + -5.928101804947136e-01 + -5.933249560457028e-01 + -5.938360014505492e-01 + -5.943433207019595e-01 + -5.948469177828256e-01 + -5.953467966083078e-01 + -5.958429610716830e-01 + -5.963354151930935e-01 + -5.968241629967538e-01 + -5.973092085065336e-01 + -5.977905558475627e-01 + -5.982682091919279e-01 + -5.987421727060626e-01 + -5.992124504335189e-01 + -5.996790465513929e-01 + -6.001419654039183e-01 + -6.006012111567195e-01 + -6.010567880969444e-01 + -6.015087007096906e-01 + -6.019569532209035e-01 + -6.024015499278780e-01 + -6.028424953542454e-01 + -6.032797938560218e-01 + -6.037134498528102e-01 + -6.041434679778884e-01 + -6.045698527611498e-01 + -6.049926086966888e-01 + -6.054117403213235e-01 + -6.058272522301629e-01 + -6.062391491063152e-01 + -6.066474357377917e-01 + -6.070521167750024e-01 + -6.074531969194140e-01 + -6.078506811508277e-01 + -6.082445741313003e-01 + -6.086348804777613e-01 + -6.090216052590219e-01 + -6.094047534940796e-01 + -6.097843300758768e-01 + -6.101603397998798e-01 + -6.105327877567767e-01 + -6.109016791586246e-01 + -6.112670188349342e-01 + -6.116288118244032e-01 + -6.119870634033990e-01 + -6.123417788015699e-01 + -6.126929631816058e-01 + -6.130406216857481e-01 + -6.133847595846266e-01 + -6.137253821544012e-01 + -6.140624946688724e-01 + -6.143961025253998e-01 + -6.147262111225434e-01 + -6.150528258526081e-01 + -6.153759522847098e-01 + -6.156955958775930e-01 + -6.160117619293205e-01 + -6.163244560848270e-01 + -6.166336840291214e-01 + -6.169394513190288e-01 + -6.172417635406579e-01 + -6.175406263458638e-01 + -6.178360454670117e-01 + -6.181280266570051e-01 + -6.184165756494230e-01 + -6.187016981615432e-01 + -6.189834001775048e-01 + -6.192616876391890e-01 + -6.195365661632112e-01 + -6.198080416901866e-01 + -6.200761202902517e-01 + -6.203408078682074e-01 + -6.206021103982113e-01 + -6.208600339819080e-01 + -6.211145848662764e-01 + -6.213657689929696e-01 + -6.216135922609831e-01 + -6.218580610691606e-01 + -6.220991816188346e-01 + -6.223369599996067e-01 + -6.225714026287344e-01 + -6.228025157602012e-01 + -6.230303055354752e-01 + -6.232547783843585e-01 + -6.234759406837302e-01 + -6.236937987287140e-01 + -6.239083589372102e-01 + -6.241196278170006e-01 + -6.243276119301496e-01 + -6.245323178052680e-01 + -6.247337518435782e-01 + -6.249319204108740e-01 + -6.251268303788342e-01 + -6.253184884524475e-01 + -6.255069009766967e-01 + -6.256920746682559e-01 + -6.258740163701917e-01 + -6.260527328726909e-01 + -6.262282307801417e-01 + -6.264005167589047e-01 + -6.265695976839164e-01 + -6.267354804070123e-01 + -6.268981717782514e-01 + -6.270576786775590e-01 + -6.272140080071444e-01 + -6.273671666729116e-01 + -6.275171615794166e-01 + -6.276639997579259e-01 + -6.278076882572314e-01 + -6.279482340166599e-01 + -6.280856440870369e-01 + -6.282199255881125e-01 + -6.283510856176625e-01 + -6.284791313265480e-01 + -6.286040698559974e-01 + -6.287259082244099e-01 + -6.288446536460758e-01 + -6.289603134448759e-01 + -6.290728947784819e-01 + -6.291824049507972e-01 + -6.292888513285516e-01 + -6.293922409846477e-01 + -6.294925812787570e-01 + -6.295898797737625e-01 + -6.296841435561055e-01 + -6.297753800606519e-01 + -6.298635970427606e-01 + -6.299488015475858e-01 + -6.300310009429952e-01 + -6.301102030719377e-01 + -6.301864151575183e-01 + -6.302596446383568e-01 + -6.303298993873763e-01 + -6.303971867419816e-01 + -6.304615141097702e-01 + -6.305228892569528e-01 + -6.305813198299395e-01 + -6.306368133767261e-01 + -6.306893774095105e-01 + -6.307390196514921e-01 + -6.307857478830511e-01 + -6.308295697989852e-01 + -6.308704929504492e-01 + -6.309085250312678e-01 + -6.309436740902202e-01 + -6.309759477467396e-01 + -6.310053535533821e-01 + -6.310318994644450e-01 + -6.310555933584764e-01 + -6.310764430051494e-01 + -6.310944561130111e-01 + -6.311096405770181e-01 + -6.311220043955681e-01 + -6.311315554778594e-01 + -6.311383016234806e-01 + -6.311422506666780e-01 + -6.311434107412031e-01 + -6.311417897164122e-01 + -6.311373953205278e-01 + -6.311302357049288e-01 + -6.311203189243589e-01 + -6.311076528624781e-01 + -6.310922454230109e-01 + -6.310741047155799e-01 + -6.310532389686786e-01 + -6.310296560496979e-01 + -6.310033639455465e-01 + -6.309743708604478e-01 + -6.309426848479184e-01 + -6.309083139781310e-01 + -6.308712663782245e-01 + -6.308315500367087e-01 + -6.307891730465176e-01 + -6.307441436976022e-01 + -6.306964701860184e-01 + -6.306461606431758e-01 + -6.305932231701467e-01 + -6.305376659121696e-01 + -6.304794970062023e-01 + -6.304187245700347e-01 + -6.303553569805046e-01 + -6.302894025962669e-01 + -6.302208694979176e-01 + -6.301497657748981e-01 + -6.300760996409697e-01 + -6.299998795100692e-01 + -6.299211136514613e-01 + -6.298398102240708e-01 + -6.297559773915322e-01 + -6.296696236381925e-01 + -6.295807574013027e-01 + -6.294893864698483e-01 + -6.293955192818200e-01 + -6.292991645521353e-01 + -6.292003301703828e-01 + -6.290990243894826e-01 + -6.289952557946986e-01 + -6.288890326523825e-01 + -6.287803632353285e-01 + -6.286692558944412e-01 + -6.285557190083507e-01 + -6.284397608763040e-01 + -6.283213897612988e-01 + -6.282006141317734e-01 + -6.280774423035318e-01 + -6.279518824496017e-01 + -6.278239431715447e-01 + -6.276936329659792e-01 + -6.275609600561086e-01 + -6.274259327786519e-01 + -6.272885594754783e-01 + -6.271488484695774e-01 + -6.270068083043618e-01 + -6.268624473656752e-01 + -6.267157737459064e-01 + -6.265667960682418e-01 + -6.264155229504741e-01 + -6.262619625962428e-01 + -6.261061232036680e-01 + -6.259480131935671e-01 + -6.257876413121770e-01 + -6.256250157840939e-01 + -6.254601447340036e-01 + -6.252930366972961e-01 + -6.251237002207461e-01 + -6.249521437614608e-01 + -6.247783756272571e-01 + -6.246024042025771e-01 + -6.244242378628240e-01 + -6.242438848129136e-01 + -6.240613535991787e-01 + -6.238766528797192e-01 + -6.236897908519111e-01 + -6.235007757894835e-01 + -6.233096161276966e-01 + -6.231163203935827e-01 + -6.229208970207127e-01 + -6.227233543185018e-01 + -6.225237005131427e-01 + -6.223219439896936e-01 + -6.221180932821515e-01 + -6.219121568092019e-01 + -6.217041429518334e-01 + -6.214940600654550e-01 + -6.212819164164759e-01 + -6.210677203231969e-01 + -6.208514802076882e-01 + -6.206332045396580e-01 + -6.204129016762088e-01 + -6.201905798335827e-01 + -6.199662474146647e-01 + -6.197399127976954e-01 + -6.195115842446862e-01 + -6.192812702436963e-01 + -6.190489791767655e-01 + -6.188147191241502e-01 + -6.185784984898128e-01 + -6.183403256742428e-01 + -6.181002088023494e-01 + -6.178581563548247e-01 + -6.176141767575239e-01 + -6.173682779492388e-01 + -6.171204683326561e-01 + -6.168707564823446e-01 + -6.166191506410910e-01 + -6.163656588303806e-01 + -6.161102891648960e-01 + -6.158530502595377e-01 + -6.155939503803246e-01 + -6.153329975648972e-01 + -6.150702000825419e-01 + -6.148055662334609e-01 + -6.145391042808102e-01 + -6.142708224010276e-01 + -6.140007288452335e-01 + -6.137288318637003e-01 + -6.134551394181680e-01 + -6.131796597624336e-01 + -6.129024013716257e-01 + -6.126233721919256e-01 + -6.123425803085120e-01 + -6.120600340492245e-01 + -6.117757414641359e-01 + -6.114897106263320e-01 + -6.112019497520672e-01 + -6.109124671249474e-01 + -6.106212708396386e-01 + -6.103283687668304e-01 + -6.100337690977098e-01 + -6.097374799911853e-01 + -6.094395093910078e-01 + -6.091398653642833e-01 + -6.088385561024087e-01 + -6.085355898356886e-01 + -6.082309742898534e-01 + -6.079247173286892e-01 + -6.076168274335947e-01 + -6.073073125569597e-01 + -6.069961804304546e-01 + -6.066834389911383e-01 + -6.063690964791788e-01 + -6.060531610171422e-01 + -6.057356401425160e-01 + -6.054165419100932e-01 + -6.050958745176729e-01 + -6.047736455801236e-01 + -6.044498630713394e-01 + -6.041245351487873e-01 + -6.037976695799242e-01 + -6.034692741523835e-01 + -6.031393567367498e-01 + -6.028079252312161e-01 + -6.024749874110954e-01 + -6.021405510415967e-01 + -6.018046242357692e-01 + -6.014672148046522e-01 + -6.011283302871711e-01 + -6.007879786053585e-01 + -6.004461675660895e-01 + -6.001029047914931e-01 + -5.997581981158361e-01 + -5.994120553308485e-01 + -5.990644841299763e-01 + -5.987154923482985e-01 + -5.983650876334137e-01 + -5.980132773866208e-01 + -5.976600693793478e-01 + -5.973054714798371e-01 + -5.969494914365839e-01 + -5.965921366499265e-01 + -5.962334146660923e-01 + -5.958733334161985e-01 + -5.955119002909084e-01 + -5.951491227180785e-01 + -5.947850085981863e-01 + -5.944195652847630e-01 + -5.940528001366523e-01 + -5.936847210858313e-01 + -5.933153356463837e-01 + -5.929446511281147e-01 + -5.925726749957585e-01 + -5.921994146776245e-01 + -5.918248776317639e-01 + -5.914490714685531e-01 + -5.910720036664838e-01 + -5.906936815737919e-01 + -5.903141124838686e-01 + -5.899333037986367e-01 + -5.895512629817115e-01 + -5.891679973989596e-01 + -5.887835143677140e-01 + -5.883978211708401e-01 + -5.880109250637769e-01 + -5.876228334774148e-01 + -5.872335538851382e-01 + -5.868430932520374e-01 + -5.864514587624869e-01 + -5.860586578978172e-01 + -5.856646978273519e-01 + -5.852695857497323e-01 + -5.848733289413443e-01 + -5.844759343592291e-01 + -5.840774091773326e-01 + -5.836777608879199e-01 + -5.832769964405170e-01 + -5.828751228494087e-01 + -5.824721474461222e-01 + -5.820680771414760e-01 + -5.816629188869962e-01 + -5.812566799399100e-01 + -5.808493672421570e-01 + -5.804409877894702e-01 + -5.800315488931496e-01 + -5.796210574409676e-01 + -5.792095201878247e-01 + -5.787969440874288e-01 + -5.783833362006023e-01 + -5.779687035684036e-01 + -5.775530530727403e-01 + -5.771363914738108e-01 + -5.767187255974381e-01 + -5.763000625573806e-01 + -5.758804091701334e-01 + -5.754597721176316e-01 + -5.750381583420940e-01 + -5.746155745735496e-01 + -5.741920274506414e-01 + -5.737675239291555e-01 + -5.733420708457294e-01 + -5.729156748671344e-01 + -5.724883426083383e-01 + -5.720600807791615e-01 + -5.716308961653045e-01 + -5.712007954599810e-01 + -5.707697852850102e-01 + -5.703378722272431e-01 + -5.699050629355835e-01 + -5.694713639828742e-01 + -5.690367818720566e-01 + -5.686013232951076e-01 + -5.681649948578290e-01 + -5.677278029894381e-01 + -5.672897541841998e-01 + -5.668508549514105e-01 + -5.664111117923113e-01 + -5.659705312703284e-01 + -5.655291198708162e-01 + -5.650868839171556e-01 + -5.646438297396282e-01 + -5.641999637601537e-01 + -5.637552925169101e-01 + -5.633098223391846e-01 + -5.628635595080524e-01 + -5.624165104013904e-01 + -5.619686812129524e-01 + -5.615200782186582e-01 + -5.610707080464411e-01 + -5.606205767194389e-01 + -5.601696901727680e-01 + -5.597180550627928e-01 + -5.592656777039943e-01 + -5.588125640834879e-01 + -5.583587201544192e-01 + -5.579041522213387e-01 + -5.574488666805684e-01 + -5.569928694014434e-01 + -5.565361664370690e-01 + -5.560787640439252e-01 + -5.556206683493946e-01 + -5.551618853326125e-01 + -5.547024208857518e-01 + -5.542422809960397e-01 + -5.537814718214656e-01 + -5.533199995563840e-01 + -5.528578699065892e-01 + -5.523950887012330e-01 + -5.519316620139326e-01 + -5.514675956847120e-01 + -5.510028956792654e-01 + -5.505375681122012e-01 + -5.500716185256428e-01 + -5.496050526609592e-01 + -5.491378767346244e-01 + -5.486700964364043e-01 + -5.482017173715276e-01 + -5.477327453596050e-01 + -5.472631862648399e-01 + -5.467930458019109e-01 + -5.463223294669347e-01 + -5.458510432287255e-01 + -5.453791929736209e-01 + -5.449067840000759e-01 + -5.444338218966174e-01 + -5.439603123952597e-01 + -5.434862611282417e-01 + -5.430116738240560e-01 + -5.425365561436022e-01 + -5.420609134355956e-01 + -5.415847511352451e-01 + -5.411080748136494e-01 + -5.406308901525899e-01 + -5.401532026526268e-01 + -5.396750177177082e-01 + -5.391963408895222e-01 + -5.387171774649071e-01 + -5.382375326730170e-01 + -5.377574122460893e-01 + -5.372768215524759e-01 + -5.367957656717409e-01 + -5.363142502106338e-01 + -5.358322806031541e-01 + -5.353498619928253e-01 + -5.348669995911720e-01 + -5.343836987381033e-01 + -5.338999648334884e-01 + -5.334158029976483e-01 + -5.329312184607295e-01 + -5.324462166033185e-01 + -5.319608023124877e-01 + -5.314749807283198e-01 + -5.309887574568507e-01 + -5.305021373834015e-01 + -5.300151254489873e-01 + -5.295277270550899e-01 + -5.290399471460621e-01 + -5.285517906644440e-01 + -5.280632628772480e-01 + -5.275743687930865e-01 + -5.270851133485194e-01 + -5.265955015863814e-01 + -5.261055383771222e-01 + -5.256152286457003e-01 + -5.251245776074701e-01 + -5.246335901741112e-01 + -5.241422711040373e-01 + -5.236506252667474e-01 + -5.231586574906982e-01 + -5.226663726352896e-01 + -5.221737757253558e-01 + -5.216808715970676e-01 + -5.211876649797802e-01 + -5.206941607382560e-01 + -5.202003635069621e-01 + -5.197062778404161e-01 + -5.192119087096243e-01 + -5.187172609937223e-01 + -5.182223393579939e-01 + -5.177271482807863e-01 + -5.172316923981860e-01 + -5.167359765148800e-01 + -5.162400053033168e-01 + -5.157437833544083e-01 + -5.152473152222008e-01 + -5.147506055161414e-01 + -5.142536587718484e-01 + -5.137564794429633e-01 + -5.132590721404230e-01 + -5.127614414610688e-01 + -5.122635918987255e-01 + -5.117655278912282e-01 + -5.112672538418732e-01 + -5.107687741570007e-01 + -5.102700934318621e-01 + -5.097712161511054e-01 + -5.092721464952894e-01 + -5.087728887586368e-01 + -5.082734473837237e-01 + -5.077738269224511e-01 + -5.072740315773641e-01 + -5.067740655070005e-01 + -5.062739331645890e-01 + -5.057736389339202e-01 + -5.052731870571522e-01 + -5.047725816027976e-01 + -5.042718267556677e-01 + -5.037709267723895e-01 + -5.032698858620083e-01 + -5.027687082997551e-01 + -5.022673983228978e-01 + -5.017659599138892e-01 + -5.012643972224838e-01 + -5.007627144504877e-01 + -5.002609154317549e-01 + -4.997590043686060e-01 + -4.992569856498065e-01 + -4.987548629163329e-01 + -4.982526401066572e-01 + -4.977503215591422e-01 + -4.972479113357710e-01 + -4.967454132608579e-01 + -4.962428310876830e-01 + -4.957401690448965e-01 + -4.952374311333114e-01 + -4.947346209581790e-01 + -4.942317423902789e-01 + -4.937287995168010e-01 + -4.932257964768885e-01 + -4.927227367709692e-01 + -4.922196239985463e-01 + -4.917164622446805e-01 + -4.912132554897460e-01 + -4.907100074652099e-01 + -4.902067216434476e-01 + -4.897034018910860e-01 + -4.892000521396699e-01 + -4.886966760659724e-01 + -4.881932772071136e-01 + -4.876898592264887e-01 + -4.871864261030248e-01 + -4.866829812293292e-01 + -4.861795280147214e-01 + -4.856760706607693e-01 + -4.851726126266216e-01 + -4.846691571189501e-01 + -4.841657080652781e-01 + -4.836622690168214e-01 + -4.831588433295234e-01 + -4.826554347812969e-01 + -4.821520468729375e-01 + -4.816486828820545e-01 + -4.811453462713459e-01 + -4.806420406166251e-01 + -4.801387695127853e-01 + -4.796355363816449e-01 + -4.791323444815042e-01 + -4.786291970695780e-01 + -4.781260978727254e-01 + -4.776230503252043e-01 + -4.771200574973888e-01 + -4.766171228253449e-01 + -4.761142497486388e-01 + -4.756114415594656e-01 + -4.751087014547341e-01 + -4.746060327035595e-01 + -4.741034386828772e-01 + -4.736009226286348e-01 + -4.730984877717556e-01 + -4.725961373913972e-01 + -4.720938746127822e-01 + -4.715917026117559e-01 + -4.710896247171748e-01 + -4.705876440070008e-01 + -4.700857635192827e-01 + -4.695839864443119e-01 + -4.690823160197067e-01 + -4.685807553687465e-01 + -4.680793073815264e-01 + -4.675779752270572e-01 + -4.670767621237579e-01 + -4.665756710130068e-01 + -4.660747048828000e-01 + -4.655738667469987e-01 + -4.650731595624170e-01 + -4.645725864569897e-01 + -4.640721505529091e-01 + -4.635718546060059e-01 + -4.630717014390969e-01 + -4.625716940204364e-01 + -4.620718354412200e-01 + -4.615721285948061e-01 + -4.610725762550177e-01 + -4.605731814392849e-01 + -4.600739469669758e-01 + -4.595748755034438e-01 + -4.590759700613133e-01 + -4.585772335293120e-01 + -4.580786685902926e-01 + -4.575802780165928e-01 + -4.570820645542124e-01 + -4.565840309327809e-01 + -4.560861801183225e-01 + -4.555885148408127e-01 + -4.550910375242214e-01 + -4.545937511574892e-01 + -4.540966585092119e-01 + -4.535997618400510e-01 + -4.531030641427475e-01 + -4.526065682230286e-01 + -4.521102761991050e-01 + -4.516141909960451e-01 + -4.511183155232459e-01 + -4.506226519976986e-01 + -4.501272029129367e-01 + -4.496319709853875e-01 + -4.491369589904647e-01 + -4.486421693813144e-01 + -4.481476045149588e-01 + -4.476532669406306e-01 + -4.471591591812127e-01 + -4.466652837454304e-01 + -4.461716431800687e-01 + -4.456782399407630e-01 + -4.451850764283579e-01 + -4.446921550770006e-01 + -4.441994783152980e-01 + -4.437070485743053e-01 + -4.432148683148817e-01 + -4.427229399164072e-01 + -4.422312656936392e-01 + -4.417398479943503e-01 + -4.412486891611525e-01 + -4.407577915365379e-01 + -4.402671575060104e-01 + -4.397767893532367e-01 + -4.392866892910770e-01 + -4.387968597340107e-01 + -4.383073029681190e-01 + -4.378180210879689e-01 + -4.373290163087382e-01 + -4.368402909924953e-01 + -4.363518475687816e-01 + -4.358636880897754e-01 + -4.353758146064535e-01 + -4.348882293452391e-01 + -4.344009344375495e-01 + -4.339139321041776e-01 + -4.334272247184532e-01 + -4.329408142509990e-01 + -4.324547026649819e-01 + -4.319688922210647e-01 + -4.314833850702666e-01 + -4.309981832317592e-01 + -4.305132886299618e-01 + -4.300287034407881e-01 + -4.295444298858639e-01 + -4.290604699557538e-01 + -4.285768254794737e-01 + -4.280934983815344e-01 + -4.276104909880938e-01 + -4.271278053251724e-01 + -4.266454431999359e-01 + -4.261634065006114e-01 + -4.256816972235624e-01 + -4.252003173934318e-01 + -4.247192689049444e-01 + -4.242385536499166e-01 + -4.237581735472888e-01 + -4.232781305399061e-01 + -4.227984264773803e-01 + -4.223190631457318e-01 + -4.218400424415704e-01 + -4.213613663598799e-01 + -4.208830368540804e-01 + -4.204050553934426e-01 + -4.199274237890383e-01 + -4.194501442515862e-01 + -4.189732183034799e-01 + -4.184966476302857e-01 + -4.180204343198091e-01 + -4.175445800025869e-01 + -4.170690862458790e-01 + -4.165939547960728e-01 + -4.161191875920802e-01 + -4.156447863485650e-01 + -4.151707524172177e-01 + -4.146970878143395e-01 + -4.142237944432959e-01 + -4.137508735370036e-01 + -4.132783267358912e-01 + -4.128061559031381e-01 + -4.123343628419361e-01 + -4.118629489726368e-01 + -4.113919157251955e-01 + -4.109212649651476e-01 + -4.104509983224866e-01 + -4.099811172669397e-01 + -4.095116233202941e-01 + -4.090425181490535e-01 + -4.085738034100841e-01 + -4.081054804950061e-01 + -4.076375508831032e-01 + -4.071700161671795e-01 + -4.067028779692610e-01 + -4.062361376606066e-01 + -4.057697965353959e-01 + -4.053038563335837e-01 + -4.048383186645677e-01 + -4.043731849141807e-01 + -4.039084564103662e-01 + -4.034441345521896e-01 + -4.029802208230617e-01 + -4.025167167043049e-01 + -4.020536236099443e-01 + -4.015909428779320e-01 + -4.011286758375757e-01 + -4.006668238996902e-01 + -4.002053885607212e-01 + -3.997443712200008e-01 + -3.992837731698375e-01 + -3.988235956310492e-01 + -3.983638399923307e-01 + -3.979045076012857e-01 + -3.974455996644362e-01 + -3.969871175556028e-01 + -3.965290626455606e-01 + -3.960714361699136e-01 + -3.956142393772600e-01 + -3.951574735515524e-01 + -3.947011399985758e-01 + -3.942452398354794e-01 + -3.937897742524872e-01 + -3.933347447660869e-01 + -3.928801524442024e-01 + -3.924259983101159e-01 + -3.919722839283850e-01 + -3.915190103656777e-01 + -3.910661784756895e-01 + -3.906137895655892e-01 + -3.901618450499643e-01 + -3.897103461604648e-01 + -3.892592935529919e-01 + -3.888086884121152e-01 + -3.883585322771145e-01 + -3.879088261485191e-01 + -3.874595710701922e-01 + -3.870107681556456e-01 + -3.865624182556531e-01 + -3.861145225228043e-01 + -3.856670823544472e-01 + -3.852200986473037e-01 + -3.847735723987576e-01 + -3.843275047747315e-01 + -3.838818965026468e-01 + -3.834367486164244e-01 + -3.829920625791138e-01 + -3.825478392535004e-01 + -3.821040794322394e-01 + -3.816607841213338e-01 + -3.812179544462010e-01 + -3.807755914230820e-01 + -3.803336958584798e-01 + -3.798922686597118e-01 + -3.794513108818827e-01 + -3.790108236907996e-01 + -3.785708078449803e-01 + -3.781312640889848e-01 + -3.776921934895628e-01 + -3.772535969260590e-01 + -3.768154752452403e-01 + -3.763778294637203e-01 + -3.759406605249527e-01 + -3.755039692439986e-01 + -3.750677562951532e-01 + -3.746320226741715e-01 + -3.741967693787305e-01 + -3.737619968727901e-01 + -3.733277061470673e-01 + -3.728938983949728e-01 + -3.724605741247380e-01 + -3.720277341192338e-01 + -3.715953793429491e-01 + -3.711635103186269e-01 + -3.707321278978636e-01 + -3.703012331728173e-01 + -3.698708267439747e-01 + -3.694409092657609e-01 + -3.690114815572269e-01 + -3.685825444178367e-01 + -3.681540985405766e-01 + -3.677261445488677e-01 + -3.672986832474148e-01 + -3.668717154245260e-01 + -3.664452417818624e-01 + -3.660192630178876e-01 + -3.655937798167319e-01 + -3.651687928442244e-01 + -3.647443027770453e-01 + -3.643203103057334e-01 + -3.638968161236534e-01 + -3.634738208501973e-01 + -3.630513251204181e-01 + -3.626293296340570e-01 + -3.622078349959966e-01 + -3.617868418102546e-01 + -3.613663507559756e-01 + -3.609463624258993e-01 + -3.605268773947004e-01 + -3.601078962972172e-01 + -3.596894197319259e-01 + -3.592714482724653e-01 + -3.588539824938156e-01 + -3.584370229705016e-01 + -3.580205702765974e-01 + -3.576046249835235e-01 + -3.571891876270012e-01 + -3.567742587321382e-01 + -3.563598388637925e-01 + -3.559459285557617e-01 + -3.555325283179373e-01 + -3.551196386794110e-01 + -3.547072601423791e-01 + -3.542953931967586e-01 + -3.538840383835105e-01 + -3.534731961849680e-01 + -3.530628670336623e-01 + -3.526530514374770e-01 + -3.522437498876279e-01 + -3.518349628366106e-01 + -3.514266907403692e-01 + -3.510189340474827e-01 + -3.506116931966672e-01 + -3.502049686305037e-01 + -3.497987607886671e-01 + -3.493930701015490e-01 + -3.489878969787067e-01 + -3.485832418243141e-01 + -3.481791050461803e-01 + -3.477754870557839e-01 + -3.473723882547367e-01 + -3.469698090253131e-01 + -3.465677497415546e-01 + -3.461662107762984e-01 + -3.457651925045610e-01 + -3.453646952920019e-01 + -3.449647194961470e-01 + -3.445652654674211e-01 + -3.441663335489293e-01 + -3.437679240760669e-01 + -3.433700373751777e-01 + -3.429726737709668e-01 + -3.425758335909973e-01 + -3.421795171685511e-01 + -3.417837248082679e-01 + -3.413884567949557e-01 + -3.409937134173290e-01 + -3.405994949798623e-01 + -3.402058017865278e-01 + -3.398126341027504e-01 + -3.394199921921239e-01 + -3.390278763247643e-01 + -3.386362867748747e-01 + -3.382452237948665e-01 + -3.378546876227794e-01 + -3.374646785249709e-01 + -3.370751967392704e-01 + -3.366862424749215e-01 + -3.362978159833941e-01 + -3.359099174981644e-01 + -3.355225472182573e-01 + -3.351357053498810e-01 + -3.347493921057998e-01 + -3.343636076973308e-01 + -3.339783523006465e-01 + -3.335936261089775e-01 + -3.332094293460974e-01 + -3.328257621547543e-01 + -3.324426246881435e-01 + -3.320600171619409e-01 + -3.316779397280902e-01 + -3.312963925265998e-01 + -3.309153757279716e-01 + -3.305348894653861e-01 + -3.301549338737799e-01 + -3.297755091265357e-01 + -3.293966153413448e-01 + -3.290182526215280e-01 + -3.286404211114115e-01 + -3.282631209285871e-01 + -3.278863521751846e-01 + -3.275101149642331e-01 + -3.271344093953196e-01 + -3.267592355617253e-01 + -3.263845935667566e-01 + -3.260104834866909e-01 + -3.256369053882101e-01 + -3.252638593756906e-01 + -3.248913455268053e-01 + -3.245193638907094e-01 + -3.241479145199382e-01 + -3.237769974872735e-01 + -3.234066128661293e-01 + -3.230367606622389e-01 + -3.226674409186036e-01 + -3.222986537192250e-01 + -3.219303990783447e-01 + -3.215626770146125e-01 + -3.211954875680534e-01 + -3.208288307426270e-01 + -3.204627065455645e-01 + -3.200971150001409e-01 + -3.197320561103191e-01 + -3.193675298795836e-01 + -3.190035363166080e-01 + -3.186400754009213e-01 + -3.182771471114187e-01 + -3.179147514432106e-01 + -3.175528883799994e-01 + -3.171915578921511e-01 + -3.168307599394173e-01 + -3.164704945026028e-01 + -3.161107615528752e-01 + -3.157515610223091e-01 + -3.153928928534279e-01 + -3.150347570035595e-01 + -3.146771534412893e-01 + -3.143200821026652e-01 + -3.139635429048980e-01 + -3.136075357713601e-01 + -3.132520606345795e-01 + -3.128971174301287e-01 + -3.125427060850263e-01 + -3.121888265003789e-01 + -3.118354785699559e-01 + -3.114826622209773e-01 + -3.111303773636806e-01 + -3.107786238863177e-01 + -3.104274016699458e-01 + -3.100767106006651e-01 + -3.097265505731036e-01 + -3.093769214901858e-01 + -3.090278232197667e-01 + -3.086792556057311e-01 + -3.083312185528201e-01 + -3.079837119302323e-01 + -3.076367355606988e-01 + -3.072902893338402e-01 + -3.069443731087555e-01 + -3.065989866918071e-01 + -3.062541299629242e-01 + -3.059098027895394e-01 + -3.055660049841727e-01 + -3.052227363624680e-01 + -3.048799967605036e-01 + -3.045377860349815e-01 + -3.041961039937703e-01 + -3.038549504461246e-01 + -3.035143252370935e-01 + -3.031742281687436e-01 + -3.028346590287212e-01 + -3.024956176228422e-01 + -3.021571037727226e-01 + -3.018191172891879e-01 + -3.014816579447884e-01 + -3.011447255196590e-01 + -3.008083198102758e-01 + -3.004724406299011e-01 + -3.001370877400161e-01 + -2.998022608844934e-01 + -2.994679598576119e-01 + -2.991341844426006e-01 + -2.988009344054493e-01 + -2.984682095047237e-01 + -2.981360094999961e-01 + -2.978043341494513e-01 + -2.974731831997393e-01 + -2.971425563888731e-01 + -2.968124534589884e-01 + -2.964828741880918e-01 + -2.961538183196636e-01 + -2.958252855581221e-01 + -2.954972756291568e-01 + -2.951697882690829e-01 + -2.948428232168150e-01 + -2.945163801997789e-01 + -2.941904589349781e-01 + -2.938650591314966e-01 + -2.935401805013078e-01 + -2.932158227514122e-01 + -2.928919855851135e-01 + -2.925686687341852e-01 + -2.922458719001491e-01 + -2.919235947316832e-01 + -2.916018369508684e-01 + -2.912805982685433e-01 + -2.909598783275820e-01 + -2.906396768390501e-01 + -2.903199935181080e-01 + -2.900008280188033e-01 + -2.896821799916231e-01 + -2.893640491090957e-01 + -2.890464350819901e-01 + -2.887293375718574e-01 + -2.884127562142981e-01 + -2.880966906629407e-01 + -2.877811406014185e-01 + -2.874661057081589e-01 + -2.871515856017081e-01 + -2.868375799224188e-01 + -2.865240883310016e-01 + -2.862111104788733e-01 + -2.858986460098822e-01 + -2.855866945593247e-01 + -2.852752557499685e-01 + -2.849643292069009e-01 + -2.846539145659956e-01 + -2.843440114851778e-01 + -2.840346195818731e-01 + -2.837257384382189e-01 + -2.834173676812886e-01 + -2.831095069534547e-01 + -2.828021558855677e-01 + -2.824953140398479e-01 + -2.821889810170294e-01 + -2.818831564761255e-01 + -2.815778399984394e-01 + -2.812730311718642e-01 + -2.809687296216254e-01 + -2.806649349155874e-01 + -2.803616466281044e-01 + -2.800588643758425e-01 + -2.797565877594176e-01 + -2.794548163592918e-01 + -2.791535497376408e-01 + -2.788527874670974e-01 + -2.785525291296920e-01 + -2.782527743138438e-01 + -2.779535226034689e-01 + -2.776547735631448e-01 + -2.773565267276963e-01 + -2.770587816777879e-01 + -2.767615379983304e-01 + -2.764647952191276e-01 + -2.761685529026718e-01 + -2.758728106207560e-01 + -2.755775679024411e-01 + -2.752828243050798e-01 + -2.749885793975552e-01 + -2.746948327088052e-01 + -2.744015837838452e-01 + -2.741088321749212e-01 + -2.738165773969221e-01 + -2.735248189792139e-01 + -2.732335564721672e-01 + -2.729427894286903e-01 + -2.726525173657923e-01 + -2.723627397775934e-01 + -2.720734562117226e-01 + -2.717846661993187e-01 + -2.714963692431568e-01 + -2.712085648712142e-01 + -2.709212526021956e-01 + -2.706344319386959e-01 + -2.703481024077038e-01 + -2.700622635195931e-01 + -2.697769147573882e-01 + -2.694920556414950e-01 + -2.692076856844960e-01 + -2.689238043678598e-01 + -2.686404111894522e-01 + -2.683575056539274e-01 + -2.680750872618156e-01 + -2.677931554956217e-01 + -2.675117098420171e-01 + -2.672307498062658e-01 + -2.669502748541435e-01 + -2.666702844564393e-01 + -2.663907781339158e-01 + -2.661117553567487e-01 + -2.658332155842312e-01 + -2.655551583220328e-01 + -2.652775830228958e-01 + -2.650004891310402e-01 + -2.647238761635896e-01 + -2.644477435849875e-01 + -2.641720908275026e-01 + -2.638969173638899e-01 + -2.636222226679477e-01 + -2.633480062028563e-01 + -2.630742674151484e-01 + -2.628010057675256e-01 + -2.625282207270022e-01 + -2.622559117157733e-01 + -2.619840781930577e-01 + -2.617127196438671e-01 + -2.614418354712815e-01 + -2.611714251171109e-01 + -2.609014880694051e-01 + -2.606320237300626e-01 + -2.603630315312080e-01 + -2.600945109576975e-01 + -2.598264614192900e-01 + -2.595588823272051e-01 + -2.592917731268140e-01 + -2.590251332515323e-01 + -2.587589621335352e-01 + -2.584932592080277e-01 + -2.582280238899204e-01 + -2.579632555996659e-01 + -2.576989537753064e-01 + -2.574351178135512e-01 + -2.571717471205571e-01 + -2.569088411498421e-01 + -2.566463993032694e-01 + -2.563844209736399e-01 + -2.561229055922761e-01 + -2.558618525664796e-01 + -2.556012613001373e-01 + -2.553411312228936e-01 + -2.550814617199114e-01 + -2.548222521633088e-01 + -2.545635019702024e-01 + -2.543052105636615e-01 + -2.540473773489130e-01 + -2.537900016856341e-01 + -2.535330829668063e-01 + -2.532766206092137e-01 + -2.530206140025920e-01 + -2.527650625373169e-01 + -2.525099656058339e-01 + -2.522553225882911e-01 + -2.520011328519368e-01 + -2.517473957689335e-01 + -2.514941107682424e-01 + -2.512412772287477e-01 + -2.509888944763962e-01 + -2.507369619085763e-01 + -2.504854789235316e-01 + -2.502344448942996e-01 + -2.499838591881081e-01 + -2.497337211675947e-01 + -2.494840301941274e-01 + -2.492347856449565e-01 + -2.489859868896926e-01 + -2.487376332816026e-01 + -2.484897241934407e-01 + -2.482422589923619e-01 + -2.479952370263670e-01 + -2.477486576676466e-01 + -2.475025202765806e-01 + -2.472568241776227e-01 + -2.470115687463755e-01 + -2.467667533575219e-01 + -2.465223773319763e-01 + -2.462784400223504e-01 + -2.460349407926405e-01 + -2.457918789841980e-01 + -2.455492539346369e-01 + -2.453070649885519e-01 + -2.450653115068263e-01 + -2.448239928212929e-01 + -2.445831082525867e-01 + -2.443426571517872e-01 + -2.441026388729581e-01 + -2.438630527595843e-01 + -2.436238981283992e-01 + -2.433851743000419e-01 + -2.431468806082007e-01 + -2.429090164035606e-01 + -2.426715810065056e-01 + -2.424345737214870e-01 + -2.421979939156839e-01 + -2.419618409122474e-01 + -2.417261139893861e-01 + -2.414908125047008e-01 + -2.412559357926221e-01 + -2.410214831428485e-01 + -2.407874538901436e-01 + -2.405538473594189e-01 + -2.403206628448788e-01 + -2.400878996494245e-01 + -2.398555571012901e-01 + -2.396236345489386e-01 + -2.393921312730178e-01 + -2.391610465589564e-01 + -2.389303797400675e-01 + -2.387001301206918e-01 + -2.384702970040557e-01 + -2.382408797142012e-01 + -2.380118775445049e-01 + -2.377832897784107e-01 + -2.375551157141706e-01 + -2.373273546676602e-01 + -2.371000059435911e-01 + -2.368730688080822e-01 + -2.366465425799626e-01 + -2.364204265795865e-01 + -2.361947200488833e-01 + -2.359694222928865e-01 + -2.357445326362645e-01 + -2.355200503199650e-01 + -2.352959746331166e-01 + -2.350723049000333e-01 + -2.348490404054174e-01 + -2.346261804119323e-01 + -2.344037241869703e-01 + -2.341816710532240e-01 + -2.339600202844186e-01 + -2.337387711161095e-01 + -2.335179228570654e-01 + -2.332974748051559e-01 + -2.330774262250223e-01 + -2.328577763695832e-01 + -2.326385245095027e-01 + -2.324196699339893e-01 + -2.322012119071908e-01 + -2.319831496985562e-01 + -2.317654825913850e-01 + -2.315482098501277e-01 + -2.313313307350805e-01 + -2.311148445095759e-01 + -2.308987504304352e-01 + -2.306830477605995e-01 + -2.304677357746768e-01 + -2.302528137313455e-01 + -2.300382808821649e-01 + -2.298241364802842e-01 + -2.296103797849810e-01 + -2.293970100645507e-01 + -2.291840265929282e-01 + -2.289714285853380e-01 + -2.287592152687787e-01 + -2.285473859575702e-01 + -2.283359398767679e-01 + -2.281248762354934e-01 + -2.279141943457151e-01 + -2.277038934347241e-01 + -2.274939727028900e-01 + -2.272844314557521e-01 + -2.270752689260884e-01 + -2.268664843063303e-01 + -2.266580768713468e-01 + -2.264500458690802e-01 + -2.262423905203003e-01 + -2.260351100742427e-01 + -2.258282037663114e-01 + -2.256216708189812e-01 + -2.254155104759721e-01 + -2.252097219699820e-01 + -2.250043045201664e-01 + -2.247992573593203e-01 + -2.245945797283117e-01 + -2.243902708632074e-01 + -2.241863299547213e-01 + -2.239827562297785e-01 + -2.237795489631809e-01 + -2.235767073479459e-01 + -2.233742305913306e-01 + -2.231721179508258e-01 + -2.229703686190215e-01 + -2.227689817967141e-01 + -2.225679567331226e-01 + -2.223672926389324e-01 + -2.221669887137792e-01 + -2.219670441735496e-01 + -2.217674582593449e-01 + -2.215682301863681e-01 + -2.213693591068690e-01 + -2.211708442449674e-01 + -2.209726848493868e-01 + -2.207748801280919e-01 + -2.205774292618204e-01 + -2.203803314334422e-01 + -2.201835858632719e-01 + -2.199871917828554e-01 + -2.197911484006530e-01 + -2.195954548584606e-01 + -2.194001103587555e-01 + -2.192051141421317e-01 + -2.190104654040938e-01 + -2.188161633272981e-01 + -2.186222070944807e-01 + -2.184285959003400e-01 + -2.182353289399314e-01 + -2.180424054040691e-01 + -2.178498244760091e-01 + -2.176575853577229e-01 + -2.174656872563868e-01 + -2.172741293153170e-01 + -2.170829107184905e-01 + -2.168920306960583e-01 + -2.167014883907840e-01 + -2.165112829716549e-01 + -2.163214136638050e-01 + -2.161318796380734e-01 + -2.159426800456078e-01 + -2.157538140457635e-01 + -2.155652808465100e-01 + -2.153770796378261e-01 + -2.151892095617934e-01 + -2.150016698096599e-01 + -2.148144595574814e-01 + -2.146275779264766e-01 + -2.144410241083473e-01 + -2.142547972973645e-01 + -2.140688966286696e-01 + -2.138833212713278e-01 + -2.136980704068839e-01 + -2.135131431962469e-01 + -2.133285387811797e-01 + -2.131442563097479e-01 + -2.129602949644751e-01 + -2.127766538888946e-01 + -2.125933322205115e-01 + -2.124103291538361e-01 + -2.122276438425608e-01 + -2.120452754131807e-01 + -2.118632230196053e-01 + -2.116814858091140e-01 + -2.115000629262062e-01 + -2.113189535366684e-01 + -2.111381567835468e-01 + -2.109576717897184e-01 + -2.107774976942802e-01 + -2.105976336477213e-01 + -2.104180788038142e-01 + -2.102388322993181e-01 + -2.100598932684242e-01 + -2.098812608470688e-01 + -2.097029341689293e-01 + -2.095249123662445e-01 + -2.093471945702010e-01 + -2.091697799107427e-01 + -2.089926675162990e-01 + -2.088158565139439e-01 + -2.086393460309292e-01 + -2.084631351904399e-01 + -2.082872231124364e-01 + -2.081116089361562e-01 + -2.079362917906518e-01 + -2.077612707758083e-01 + -2.075865450013143e-01 + -2.074121135936494e-01 + -2.072379756933602e-01 + -2.070641303864229e-01 + -2.068905767613353e-01 + -2.067173139701657e-01 + -2.065443411403108e-01 + -2.063716573678470e-01 + -2.061992617242399e-01 + -2.060271533191409e-01 + -2.058553312792487e-01 + -2.056837947057731e-01 + -2.055125426973447e-01 + -2.053415743575506e-01 + -2.051708887985432e-01 + -2.050004850901530e-01 + -2.048303622987561e-01 + -2.046605195888223e-01 + -2.044909560501713e-01 + -2.043216707137636e-01 + -2.041526627003059e-01 + -2.039839311053935e-01 + -2.038154749924674e-01 + -2.036472934779214e-01 + -2.034793856435669e-01 + -2.033117505334730e-01 + -2.031443872603400e-01 + -2.029772949053144e-01 + -2.028104725040109e-01 + -2.026439191805672e-01 + -2.024776340229360e-01 + -2.023116160442759e-01 + -2.021458643362796e-01 + -2.019803779931268e-01 + -2.018151560674621e-01 + -2.016501976152565e-01 + -2.014855017030598e-01 + -2.013210674074579e-01 + -2.011568937830132e-01 + -2.009929798869589e-01 + -2.008293247967324e-01 + -2.006659275530022e-01 + -2.005027871933542e-01 + -2.003399027889975e-01 + -2.001772733993469e-01 + -2.000148980648089e-01 + -1.998527758076494e-01 + -1.996909056937942e-01 + -1.995292867991256e-01 + -1.993679181495860e-01 + -1.992067987609143e-01 + -1.990459276660739e-01 + -1.988853039482369e-01 + -1.987249266385540e-01 + -1.985647947339026e-01 + -1.984049072747179e-01 + -1.982452632992336e-01 + -1.980858618372365e-01 + -1.979267019229292e-01 + -1.977677825816225e-01 + -1.976091028269504e-01 + -1.974506616652059e-01 + -1.972924581269546e-01 + -1.971344912595772e-01 + -1.969767600601777e-01 + -1.968192635197257e-01 + -1.966620006473419e-01 + -1.965049704914111e-01 + -1.963481720619957e-01 + -1.961916043159508e-01 + -1.960352662866058e-01 + -1.958791570023236e-01 + -1.957232754408347e-01 + -1.955676205736371e-01 + -1.954121914050787e-01 + -1.952569869811404e-01 + -1.951020062511957e-01 + -1.949472481743376e-01 + -1.947927118000400e-01 + -1.946383960967118e-01 + -1.944843000224015e-01 + -1.943304226010136e-01 + -1.941767627996486e-01 + -1.940233195719773e-01 + -1.938700919198527e-01 + -1.937170788011597e-01 + -1.935642791691659e-01 + -1.934116920404960e-01 + -1.932593163702813e-01 + -1.931071510855982e-01 + -1.929551951739442e-01 + -1.928034476111422e-01 + -1.926519073523142e-01 + -1.925005733427448e-01 + -1.923494445333268e-01 + -1.921985198850023e-01 + -1.920477983694047e-01 + -1.918972789099489e-01 + -1.917469604078139e-01 + -1.915968418647559e-01 + -1.914469222323946e-01 + -1.912972003977130e-01 + -1.911476753153419e-01 + -1.909983459354311e-01 + -1.908492111828614e-01 + -1.907002699990133e-01 + -1.905515213021572e-01 + -1.904029639829450e-01 + -1.902545969863778e-01 + -1.901064192518998e-01 + -1.899584296832387e-01 + -1.898106271909556e-01 + -1.896630106872466e-01 + -1.895155790805884e-01 + -1.893683312769490e-01 + -1.892212661839438e-01 + -1.890743827110565e-01 + -1.889276797429612e-01 + -1.887811561730439e-01 + -1.886348109311961e-01 + -1.884886428944042e-01 + -1.883426509295119e-01 + -1.881968339481026e-01 + -1.880511908244114e-01 + -1.879057204210790e-01 + -1.877604216379617e-01 + -1.876152933660684e-01 + -1.874703344759240e-01 + -1.873255438107255e-01 + -1.871809202288037e-01 + -1.870364626111082e-01 + -1.868921698587295e-01 + -1.867480408184902e-01 + -1.866040743068453e-01 + -1.864602692045282e-01 + -1.863166243684211e-01 + -1.861731386269271e-01 + -1.860298108368848e-01 + -1.858866398430710e-01 + -1.857436244746902e-01 + -1.856007635808946e-01 + -1.854580560069532e-01 + -1.853155005825300e-01 + -1.851730961153894e-01 + -1.850308414342497e-01 + -1.848887353926573e-01 + -1.847467767859671e-01 + -1.846049644137440e-01 + -1.844632971091011e-01 + -1.843217736893654e-01 + -1.841803929497542e-01 + -1.840391536710132e-01 + -1.838980546953601e-01 + -1.837570948428414e-01 + -1.836162728527662e-01 + -1.834755875142904e-01 + -1.833350376404768e-01 + -1.831946220322505e-01 + -1.830543394615971e-01 + -1.829141886951903e-01 + -1.827741685199023e-01 + -1.826342777082210e-01 + -1.824945150204152e-01 + -1.823548792146146e-01 + -1.822153690716325e-01 + -1.820759833652730e-01 + -1.819367208114371e-01 + -1.817975801678411e-01 + -1.816585602158104e-01 + -1.815196596908165e-01 + -1.813808773333636e-01 + -1.812422118861797e-01 + -1.811036620617022e-01 + -1.809652266051679e-01 + -1.808269042761388e-01 + -1.806886937510042e-01 + -1.805505937426575e-01 + -1.804126030135119e-01 + -1.802747202867512e-01 + -1.801369442562599e-01 + -1.799992736029428e-01 + -1.798617070428147e-01 + -1.797242432859927e-01 + -1.795868810229852e-01 + -1.794496189531687e-01 + -1.793124557648680e-01 + -1.791753901302353e-01 + -1.790384207459855e-01 + -1.789015462957270e-01 + -1.787647654308534e-01 + -1.786280768266134e-01 + -1.784914791546937e-01 + -1.783549710639760e-01 + -1.782185512276328e-01 + -1.780822183108111e-01 + -1.779459709418989e-01 + -1.778098077766785e-01 + -1.776737274641330e-01 + -1.775377286080068e-01 + -1.774018098685905e-01 + -1.772659699092733e-01 + -1.771302073149079e-01 + -1.769945207098710e-01 + -1.768589087303928e-01 + -1.767233699571559e-01 + -1.765879030229077e-01 + -1.764525065751527e-01 + -1.763171791703831e-01 + -1.761819193770276e-01 + -1.760467257991546e-01 + -1.759115970764966e-01 + -1.757765317826701e-01 + -1.756415284467932e-01 + -1.755065856823099e-01 + -1.753717020824757e-01 + -1.752368761936218e-01 + -1.751021065398607e-01 + -1.749673916979465e-01 + -1.748327302843573e-01 + -1.746981207950505e-01 + -1.745635617515470e-01 + -1.744290517410085e-01 + -1.742945892830799e-01 + -1.741601728915786e-01 + -1.740258011048612e-01 + -1.738914724532109e-01 + -1.737571854631234e-01 + -1.736229386541751e-01 + -1.734887304969607e-01 + -1.733545594900176e-01 + -1.732204242005106e-01 + -1.730863230847530e-01 + -1.729522545880760e-01 + -1.728182172369972e-01 + -1.726842095169024e-01 + -1.725502298924380e-01 + -1.724162768405715e-01 + -1.722823488297978e-01 + -1.721484443102564e-01 + -1.720145617082366e-01 + -1.718806995062888e-01 + -1.717468561876117e-01 + -1.716130301380271e-01 + -1.714792197950507e-01 + -1.713454236195253e-01 + -1.712116399980747e-01 + -1.710778673588311e-01 + -1.709441041583024e-01 + -1.708103487974718e-01 + -1.706765996579921e-01 + -1.705428551238503e-01 + -1.704091136122197e-01 + -1.702753735243250e-01 + -1.701416332337174e-01 + -1.700078910979654e-01 + -1.698741454939726e-01 + -1.697403948188084e-01 + -1.696066374424440e-01 + -1.694728717024124e-01 + -1.693390959182572e-01 + -1.692053084687103e-01 + -1.690715077127793e-01 + -1.689376919605925e-01 + -1.688038595533757e-01 + -1.686700088249354e-01 + -1.685361380772680e-01 + -1.684022456043037e-01 + -1.682683297240474e-01 + -1.681343887869522e-01 + -1.680004210524648e-01 + -1.678664247764668e-01 + -1.677323982879569e-01 + -1.675983398888628e-01 + -1.674642478421112e-01 + -1.673301203727337e-01 + -1.671959557470875e-01 + -1.670617522514179e-01 + -1.669275081523977e-01 + -1.667932216748827e-01 + -1.666588910302535e-01 + -1.665245144618999e-01 + -1.663900902261115e-01 + -1.662556165573334e-01 + -1.661210916150787e-01 + -1.659865136192500e-01 + -1.658518808205523e-01 + -1.657171913793817e-01 + -1.655824434869752e-01 + -1.654476353589082e-01 + -1.653127651402884e-01 + -1.651778310039089e-01 + -1.650428311475997e-01 + -1.649077636947325e-01 + -1.647726268054878e-01 + -1.646374186795111e-01 + -1.645021374143022e-01 + -1.643667811219276e-01 + -1.642313479645375e-01 + -1.640958360797542e-01 + -1.639602435821208e-01 + -1.638245685678920e-01 + -1.636888091342957e-01 + -1.635529633807896e-01 + -1.634170294056715e-01 + -1.632810052843662e-01 + -1.631448890987297e-01 + -1.630086789505001e-01 + -1.628723728914803e-01 + -1.627359689604526e-01 + -1.625994652175857e-01 + -1.624628597296842e-01 + -1.623261505411777e-01 + -1.621893356498993e-01 + -1.620524130844338e-01 + -1.619153808874262e-01 + -1.617782370829140e-01 + -1.616409796594323e-01 + -1.615036066042981e-01 + -1.613661159511956e-01 + -1.612285056749289e-01 + -1.610907737177844e-01 + -1.609529180644884e-01 + -1.608149367058714e-01 + -1.606768276166446e-01 + -1.605385887249777e-01 + -1.604002179666082e-01 + -1.602617132920370e-01 + -1.601230726507729e-01 + -1.599842939686116e-01 + -1.598453751511857e-01 + -1.597063141136520e-01 + -1.595671087574746e-01 + -1.594277569704320e-01 + -1.592882566576958e-01 + -1.591486057239582e-01 + -1.590088020577491e-01 + -1.588688434990599e-01 + -1.587287278927537e-01 + -1.585884531125515e-01 + -1.584480170419727e-01 + -1.583074175205078e-01 + -1.581666523320080e-01 + -1.580257193426469e-01 + -1.578846164090064e-01 + -1.577433413163997e-01 + -1.576018918624315e-01 + -1.574602658488709e-01 + -1.573184610699215e-01 + -1.571764753211041e-01 + -1.570343063929105e-01 + -1.568919520623428e-01 + -1.567494100904384e-01 + -1.566066782348808e-01 + -1.564637542612438e-01 + -1.563206358983480e-01 + -1.561773208679784e-01 + -1.560338069324230e-01 + -1.558900918260982e-01 + -1.557461732592160e-01 + -1.556020489404925e-01 + -1.554577165574562e-01 + -1.553131737930803e-01 + -1.551684183667380e-01 + -1.550234479797016e-01 + -1.548782603038531e-01 + -1.547328529851514e-01 + -1.545872236759721e-01 + -1.544413700402710e-01 + -1.542952897416497e-01 + -1.541489804232354e-01 + -1.540024397056934e-01 + -1.538556652055174e-01 + -1.537086545589509e-01 + -1.535614054107616e-01 + -1.534139153265976e-01 + -1.532661818894184e-01 + -1.531182027303390e-01 + -1.529699754364569e-01 + -1.528214975805129e-01 + -1.526727667337492e-01 + -1.525237804315604e-01 + -1.523745362382714e-01 + -1.522250317710374e-01 + -1.520752645246755e-01 + -1.519252320010430e-01 + -1.517749318043420e-01 + -1.516243614355856e-01 + -1.514735183783821e-01 + -1.513224001894709e-01 + -1.511710043669709e-01 + -1.510193283881065e-01 + -1.508673697644896e-01 + -1.507151259726486e-01 + -1.505625944726656e-01 + -1.504097727456887e-01 + -1.502566582737337e-01 + -1.501032485283334e-01 + -1.499495409558064e-01 + -1.497955329817901e-01 + -1.496412220312461e-01 + -1.494866055649385e-01 + -1.493316810218445e-01 + -1.491764458131949e-01 + -1.490208973395277e-01 + -1.488650330073115e-01 + -1.487088502321930e-01 + -1.485523464347014e-01 + -1.483955190026080e-01 + -1.482383652905619e-01 + -1.480808826638546e-01 + -1.479230685198502e-01 + -1.477649202713839e-01 + -1.476064352431592e-01 + -1.474476107543291e-01 + -1.472884441602761e-01 + -1.471289328556787e-01 + -1.469690741904771e-01 + -1.468088654425319e-01 + -1.466483039513407e-01 + -1.464873870643751e-01 + -1.463261120992439e-01 + -1.461644763685366e-01 + -1.460024771711030e-01 + -1.458401117873900e-01 + -1.456773775256328e-01 + -1.455142717039091e-01 + -1.453507916253095e-01 + -1.451869345373153e-01 + -1.450226976893540e-01 + -1.448580783981553e-01 + -1.446930739597145e-01 + -1.445276816274984e-01 + -1.443618986028185e-01 + -1.441957221635531e-01 + -1.440291496154044e-01 + -1.438621781832398e-01 + -1.436948050802729e-01 + -1.435270275400491e-01 + -1.433588428498931e-01 + -1.431902482406432e-01 + -1.430212409022274e-01 + -1.428518180756519e-01 + -1.426819769869911e-01 + -1.425117148424586e-01 + -1.423410288662751e-01 + -1.421699162875700e-01 + -1.419983743276740e-01 + -1.418264001727286e-01 + -1.416539910114460e-01 + -1.414811440470098e-01 + -1.413078564852965e-01 + -1.411341255423312e-01 + -1.409599484327010e-01 + -1.407853222965617e-01 + -1.406102443173973e-01 + -1.404347117561954e-01 + -1.402587217519092e-01 + -1.400822714659246e-01 + -1.399053581557436e-01 + -1.397279789611117e-01 + -1.395501310267636e-01 + -1.393718115937786e-01 + -1.391930178402762e-01 + -1.390137469173205e-01 + -1.388339959972602e-01 + -1.386537622953096e-01 + -1.384730430031857e-01 + -1.382918352262208e-01 + -1.381101361784074e-01 + -1.379279430940128e-01 + -1.377452530885734e-01 + -1.375620633453186e-01 + -1.373783710804598e-01 + -1.371941734475252e-01 + -1.370094676273606e-01 + -1.368242508215203e-01 + -1.366385202106050e-01 + -1.364522729969404e-01 + -1.362655063841710e-01 + -1.360782175127518e-01 + -1.358904035964053e-01 + -1.357020618930480e-01 + -1.355131895302153e-01 + -1.353237837054462e-01 + -1.351338416922692e-01 + -1.349433606493001e-01 + -1.347523377766847e-01 + -1.345607703467432e-01 + -1.343686555800670e-01 + -1.341759906744941e-01 + -1.339827728348106e-01 + -1.337889993407819e-01 + -1.335946674413715e-01 + -1.333997743261954e-01 + -1.332043172962129e-01 + -1.330082936252972e-01 + -1.328117004983506e-01 + -1.326145352418741e-01 + -1.324167951779929e-01 + -1.322184775207451e-01 + -1.320195795498869e-01 + -1.318200985870884e-01 + -1.316200319613715e-01 + -1.314193769770063e-01 + -1.312181309395709e-01 + -1.310162911860090e-01 + -1.308138550466099e-01 + -1.306108198680959e-01 + -1.304071830473609e-01 + -1.302029419358534e-01 + -1.299980938748928e-01 + -1.297926362720222e-01 + -1.295865665431496e-01 + -1.293798820977739e-01 + -1.291725803345192e-01 + -1.289646586840201e-01 + -1.287561146028010e-01 + -1.285469455426532e-01 + -1.283371489741077e-01 + -1.281267223855238e-01 + -1.279156632656401e-01 + -1.277039691180485e-01 + -1.274916374652222e-01 + -1.272786658468367e-01 + -1.270650518164191e-01 + -1.268507929437779e-01 + -1.266358868257778e-01 + -1.264203310530910e-01 + -1.262041232080785e-01 + -1.259872609212462e-01 + -1.257697418614985e-01 + -1.255515637216261e-01 + -1.253327241582721e-01 + -1.251132208452764e-01 + -1.248930515084944e-01 + -1.246722139029198e-01 + -1.244507057917270e-01 + -1.242285249387353e-01 + -1.240056691417677e-01 + -1.237821362222557e-01 + -1.235579240163024e-01 + -1.233330303641722e-01 + -1.231074531412701e-01 + -1.228811902909497e-01 + -1.226542397328350e-01 + -1.224265993926709e-01 + -1.221982672554952e-01 + -1.219692413178169e-01 + -1.217395195880366e-01 + -1.215091001037845e-01 + -1.212779809466277e-01 + -1.210461602256936e-01 + -1.208136360512357e-01 + -1.205804065871132e-01 + -1.203464700244819e-01 + -1.201118245085727e-01 + -1.198764682774020e-01 + -1.196403996473917e-01 + -1.194036168896808e-01 + -1.191661183059585e-01 + -1.189279022478277e-01 + -1.186889671039581e-01 + -1.184493112863093e-01 + -1.182089332317922e-01 + -1.179678314226111e-01 + -1.177260043675167e-01 + -1.174834505981953e-01 + -1.172401686820595e-01 + -1.169961572351099e-01 + -1.167514149230550e-01 + -1.165059404117411e-01 + -1.162597324012717e-01 + -1.160127896494247e-01 + -1.157651109471359e-01 + -1.155166951180050e-01 + -1.152675410245315e-01 + -1.150176475647009e-01 + -1.147670136740031e-01 + -1.145156383362403e-01 + -1.142635205942373e-01 + -1.140106595167702e-01 + -1.137570541746248e-01 + -1.135027037005393e-01 + -1.132476072885310e-01 + -1.129917641930528e-01 + -1.127351736954119e-01 + -1.124778350964029e-01 + -1.122197477241451e-01 + -1.119609110122396e-01 + -1.117013244465126e-01 + -1.114409874638995e-01 + -1.111798996306716e-01 + -1.109180606010562e-01 + -1.106554699641756e-01 + -1.103921273860412e-01 + -1.101280326261970e-01 + -1.098631854961093e-01 + -1.095975858385727e-01 + -1.093312335328026e-01 + -1.090641285282797e-01 + -1.087962708201439e-01 + -1.085276604456853e-01 + -1.082582975002112e-01 + -1.079881821487157e-01 + -1.077173146235393e-01 + -1.074456951780328e-01 + -1.071733241222459e-01 + -1.069002018428373e-01 + -1.066263287812705e-01 + -1.063517054311524e-01 + -1.060763323447030e-01 + -1.058002101349244e-01 + -1.055233394662503e-01 + -1.052457210591484e-01 + -1.049673557111256e-01 + -1.046882442747131e-01 + -1.044083876525769e-01 + -1.041277868396362e-01 + -1.038464428925467e-01 + -1.035643569070283e-01 + -1.032815300276830e-01 + -1.029979634724506e-01 + -1.027136585692167e-01 + -1.024286166734134e-01 + -1.021428391952729e-01 + -1.018563276648054e-01 + -1.015690836461885e-01 + -1.012811087487812e-01 + -1.009924046817547e-01 + -1.007029732152899e-01 + -1.004128161832720e-01 + -1.001219355157012e-01 + -9.983033318947014e-02 + -9.953801123789381e-02 + -9.924497181065381e-02 + -9.895121710675164e-02 + -9.865674937610269e-02 + -9.836157098451072e-02 + -9.806568435550449e-02 + -9.776909196067303e-02 + -9.747179635418697e-02 + -9.717380018935569e-02 + -9.687510621844479e-02 + -9.657571724434684e-02 + -9.627563612429342e-02 + -9.597486578738405e-02 + -9.567340928055243e-02 + -9.537126972794066e-02 + -9.506845031433311e-02 + -9.476495428226560e-02 + -9.446078497156121e-02 + -9.415594584893169e-02 + -9.385044042616277e-02 + -9.354427227181475e-02 + -9.323744504129654e-02 + -9.292996250412121e-02 + -9.262182850819620e-02 + -9.231304696021701e-02 + -9.200362185853247e-02 + -9.169355729461479e-02 + -9.138285746240042e-02 + -9.107152658866502e-02 + -9.075956898041553e-02 + -9.044698911371001e-02 + -9.013379148226228e-02 + -8.981998063663986e-02 + -8.950556130228651e-02 + -8.919053824746566e-02 + -8.887491629233073e-02 + -8.855870039130662e-02 + -8.824189556852820e-02 + -8.792450692262105e-02 + -8.760653968435946e-02 + -8.728799913331863e-02 + -8.696889060279582e-02 + -8.664921956673162e-02 + -8.632899159487925e-02 + -8.600821233560418e-02 + -8.568688750540578e-02 + -8.536502290181033e-02 + -8.504262441718942e-02 + -8.471969805751253e-02 + -8.439624991228166e-02 + -8.407228614692197e-02 + -8.374781300392073e-02 + -8.342283682562317e-02 + -8.309736406563741e-02 + -8.277140122021633e-02 + -8.244495489588025e-02 + -8.211803185128563e-02 + -8.179063884910803e-02 + -8.146278271646745e-02 + -8.113447041766966e-02 + -8.080570906396743e-02 + -8.047650581443898e-02 + -8.014686781276095e-02 + -7.981680240792462e-02 + -7.948631704884632e-02 + -7.915541916537581e-02 + -7.882411634928695e-02 + -7.849241630024972e-02 + -7.816032674199919e-02 + -7.782785552351333e-02 + -7.749501058768483e-02 + -7.716179991262426e-02 + -7.682823159405887e-02 + -7.649431382724470e-02 + -7.616005485767063e-02 + -7.582546305035900e-02 + -7.549054686796573e-02 + -7.515531479419155e-02 + -7.481977542018518e-02 + -7.448393744841550e-02 + -7.414780964186224e-02 + -7.381140084542565e-02 + -7.347471999131863e-02 + -7.313777608894645e-02 + -7.280057821330421e-02 + -7.246313551410177e-02 + -7.212545725749871e-02 + -7.178755277686714e-02 + -7.144943146088469e-02 + -7.111110278446059e-02 + -7.077257629326426e-02 + -7.043386160590276e-02 + -7.009496843792977e-02 + -6.975590657859251e-02 + -6.941668588038064e-02 + -6.907731623736572e-02 + -6.873780762436528e-02 + -6.839817013263073e-02 + -6.805841390025939e-02 + -6.771854911509186e-02 + -6.737858603607710e-02 + -6.703853501790490e-02 + -6.669840646610939e-02 + -6.635821080020089e-02 + -6.601795854049251e-02 + -6.567766029345612e-02 + -6.533732672933422e-02 + -6.499696856244534e-02 + -6.465659655384894e-02 + -6.431622152906083e-02 + -6.397585437117004e-02 + -6.363550601749234e-02 + -6.329518746487584e-02 + -6.295490977261127e-02 + -6.261468405232740e-02 + -6.227452144919842e-02 + -6.193443314782195e-02 + -6.159443038613483e-02 + -6.125452449175782e-02 + -6.091472682299209e-02 + -6.057504875634485e-02 + -6.023550170757411e-02 + -5.989609715178513e-02 + -5.955684662483948e-02 + -5.921776169220818e-02 + -5.887885392543541e-02 + -5.854013491232313e-02 + -5.820161634720029e-02 + -5.786330995026137e-02 + -5.752522743033200e-02 + -5.718738052319666e-02 + -5.684978102238282e-02 + -5.651244078415603e-02 + -5.617537160914179e-02 + -5.583858533460867e-02 + -5.550209389764803e-02 + -5.516590918758542e-02 + -5.483004310132478e-02 + -5.449450760284144e-02 + -5.415931467224975e-02 + -5.382447627285256e-02 + -5.349000433169809e-02 + -5.315591089010736e-02 + -5.282220800586091e-02 + -5.248890761304951e-02 + -5.215602173570349e-02 + -5.182356244333215e-02 + -5.149154173522678e-02 + -5.115997163165661e-02 + -5.082886416999516e-02 + -5.049823136495267e-02 + -5.016808523392447e-02 + -4.983843779429676e-02 + -4.950930104255546e-02 + -4.918068697018742e-02 + -4.885260756307724e-02 + -4.852507478656667e-02 + -4.819810059193260e-02 + -4.787169691654435e-02 + -4.754587567726797e-02 + -4.722064876717863e-02 + -4.689602805511645e-02 + -4.657202539266345e-02 + -4.624865260469157e-02 + -4.592592148337583e-02 + -4.560384379218360e-02 + -4.528243126408893e-02 + -4.496169559628109e-02 + -4.464164845065374e-02 + -4.432230145577399e-02 + -4.400366620090135e-02 + -4.368575422918912e-02 + -4.336857704568598e-02 + -4.305214611378011e-02 + -4.273647284209545e-02 + -4.242156859535529e-02 + -4.210744469338823e-02 + -4.179411239819886e-02 + -4.148158291999365e-02 + -4.116986741259326e-02 + -4.085897697584740e-02 + -4.054892265423421e-02 + -4.023971542131075e-02 + -3.993136619382251e-02 + -3.962388583123071e-02 + -3.931728511726146e-02 + -3.901157477126550e-02 + -3.870676544906659e-02 + -3.840286772630143e-02 + -3.809989211312446e-02 + -3.779784905219891e-02 + -3.749674889469364e-02 + -3.719660192057603e-02 + -3.689741833904486e-02 + -3.659920826728452e-02 + -3.630198174507707e-02 + -3.600574873447752e-02 + -3.571051910326670e-02 + -3.541630263528623e-02 + -3.512310902944081e-02 + -3.483094789226868e-02 + -3.453982873906083e-02 + -3.424976098893085e-02 + -3.396075396966352e-02 + -3.367281691959212e-02 + -3.338595897696143e-02 + -3.310018917253339e-02 + -3.281551644593574e-02 + -3.253194963945627e-02 + -3.224949747985180e-02 + -3.196816859917648e-02 + -3.168797153104005e-02 + -3.140891468854379e-02 + -3.113100638362195e-02 + -3.085425482400445e-02 + -3.057866810270934e-02 + -3.030425420554928e-02 + -3.003102099769914e-02 + -2.975897623664901e-02 + -2.948812757423692e-02 + -2.921848253324668e-02 + -2.895004852283206e-02 + -2.868283284398848e-02 + -2.841684266935389e-02 + -2.815208505554401e-02 + -2.788856694668657e-02 + -2.762629515277662e-02 + -2.736527636581735e-02 + -2.710551716378724e-02 + -2.684702399109470e-02 + -2.658980317107453e-02 + -2.633386090723251e-02 + -2.607920326420626e-02 + -2.582583618939347e-02 + -2.557376551170278e-02 + -2.532299691452088e-02 + -2.507353595904179e-02 + -2.482538808499682e-02 + -2.457855859507147e-02 + -2.433305266394129e-02 + -2.408887533435539e-02 + -2.384603151841623e-02 + -2.360452600145211e-02 + -2.336436343201402e-02 + -2.312554832609387e-02 + -2.288808507226996e-02 + -2.265197791904223e-02 + -2.241723098404469e-02 + -2.218384825955722e-02 + -2.195183359578144e-02 + -2.172119070564114e-02 + -2.149192317903017e-02 + -2.126403446983029e-02 + -2.103752788800763e-02 + -2.081240661670658e-02 + -2.058867370373213e-02 + -2.036633206151460e-02 + -2.014538447470562e-02 + -1.992583358220780e-02 + -1.970768189350454e-02 + -1.949093179354288e-02 + -1.927558551890179e-02 + -1.906164517346932e-02 + -1.884911273803516e-02 + -1.863799005561765e-02 + -1.842827883084014e-02 + -1.821998063919436e-02 + -1.801309692347624e-02 + -1.780762899421212e-02 + -1.760357803216378e-02 + -1.740094507853177e-02 + -1.719973104881908e-02 + -1.699993673354589e-02 + -1.680156278321953e-02 + -1.660460972117107e-02 + -1.640907794332531e-02 + -1.621496771146485e-02 + -1.602227916433384e-02 + -1.583101231371427e-02 + -1.564116703862817e-02 + -1.545274309883748e-02 + -1.526574012772238e-02 + -1.508015761914186e-02 + -1.489599495303444e-02 + -1.471325139301425e-02 + -1.453192606709004e-02 + -1.435201798658663e-02 + -1.417352604127694e-02 + -1.399644899327932e-02 + -1.382078549302728e-02 + -1.364653407164367e-02 + -1.347369313289915e-02 + -1.330226097046918e-02 + -1.313223576283522e-02 + -1.296361556501821e-02 + -1.279639832327015e-02 + -1.263058187022890e-02 + -1.246616392163480e-02 + -1.230314208589229e-02 + -1.214151385550256e-02 + -1.198127661271531e-02 + -1.182242763705999e-02 + -1.166496409538715e-02 + -1.150888304589847e-02 + -1.135418144553720e-02 + -1.120085614521435e-02 + -1.104890388968280e-02 + -1.089832132231912e-02 + -1.074910498405016e-02 + -1.060125131793449e-02 + -1.045475666967276e-02 + -1.030961728045836e-02 + -1.016582929759894e-02 + -1.002338877483435e-02 + -9.882291666582974e-03 + -9.742533838318660e-03 + -9.604111064390042e-03 + -9.467019020603698e-03 + -9.331253297647066e-03 + -9.196809399717920e-03 + -9.063682741005771e-03 + -8.931868652392608e-03 + -8.801362376326071e-03 + -8.672159070075210e-03 + -8.544253813557785e-03 + -8.417641603575709e-03 + -8.292317355716863e-03 + -8.168275911736944e-03 + -8.045512032694060e-03 + -7.924020397696789e-03 + -7.803795618017998e-03 + -7.684832236645861e-03 + -7.567124714929550e-03 + -7.450667444285828e-03 + -7.335454748033539e-03 + -7.221480883382279e-03 + -7.108740043647531e-03 + -6.997226348639058e-03 + -6.886933855315346e-03 + -6.777856561420043e-03 + -6.669988397445708e-03 + -6.563323236817328e-03 + -6.457854897474280e-03 + -6.353577131920331e-03 + -6.250483639666226e-03 + -6.148568068731946e-03 + -6.047824005897748e-03 + -5.948244987599076e-03 + -5.849824501347084e-03 + -5.752555978513681e-03 + -5.656432807264865e-03 + -5.561448332218353e-03 + -5.467595840626229e-03 + -5.374868578311233e-03 + -5.283259752176146e-03 + -5.192762521793490e-03 + -5.103370006626977e-03 + -5.015075286629148e-03 + -4.927871401782054e-03 + -4.841751355904269e-03 + -4.756708115524279e-03 + -4.672734611342882e-03 + -4.589823741835811e-03 + -4.507968371897898e-03 + -4.427161334111035e-03 + -4.347395432360992e-03 + -4.268663440821394e-03 + -4.190958105123732e-03 + -4.114272145237943e-03 + -4.038598254543495e-03 + -3.963929102325757e-03 + -3.890257335680627e-03 + -3.817575578228647e-03 + -3.745876433060482e-03 + -3.675152484340320e-03 + -3.605396296371936e-03 + -3.536600416225055e-03 + -3.468757375181376e-03 + -3.401859688514519e-03 + -3.335899857279008e-03 + -3.270870369624132e-03 + -3.206763701552144e-03 + -3.143572317880366e-03 + -3.081288673370167e-03 + -3.019905214426235e-03 + -2.959414379161780e-03 + -2.899808598243805e-03 + -2.841080297295089e-03 + -2.783221897187762e-03 + -2.726225814481816e-03 + -2.670084462721576e-03 + -2.614790253659214e-03 + -2.560335598217736e-03 + -2.506712907773368e-03 + -2.453914594305456e-03 + -2.401933071402304e-03 + -2.350760756079694e-03 + -2.300390068609935e-03 + -2.250813433830373e-03 + -2.202023282926124e-03 + -2.154012052729510e-03 + -2.106772187286276e-03 + -2.060296139752280e-03 + -2.014576371403607e-03 + -1.969605353508076e-03 + -1.925375568654703e-03 + -1.881879509874747e-03 + -1.839109683164610e-03 + -1.797058608044933e-03 + -1.755718816706420e-03 + -1.715082857166331e-03 + -1.675143293280333e-03 + -1.635892703443056e-03 + -1.597323683697497e-03 + -1.559428848712492e-03 + -1.522200830321536e-03 + -1.485632280183934e-03 + -1.449715870092584e-03 + -1.414444291041649e-03 + -1.379810256474448e-03 + -1.345806501791486e-03 + -1.312425783716085e-03 + -1.279660883530597e-03 + -1.247504606026809e-03 + -1.215949779407020e-03 + -1.184989258561609e-03 + -1.154615923413642e-03 + -1.124822679454977e-03 + -1.095602461024569e-03 + -1.066948228352973e-03 + -1.038852968864840e-03 + -1.011309701783447e-03 + -9.843114734261671e-04 + -9.578513585924095e-04 + -9.319224654553773e-04 + -9.065179311555053e-04 + -8.816309237062864e-04 + -8.572546450286300e-04 + -8.333823272254078e-04 + -8.100072355517002e-04 + -7.871226705798197e-04 + -7.647219641139264e-04 + -7.427984826268421e-04 + -7.213456295816899e-04 + -7.003568409622573e-04 + -6.798255887472549e-04 + -6.597453829223955e-04 + -6.401097674232178e-04 + -6.209123240167792e-04 + -6.021466729184949e-04 + -5.838064694784330e-04 + -5.658854088227745e-04 + -5.483772251938055e-04 + -5.312756891491387e-04 + -5.145746125261390e-04 + -4.982678466736966e-04 + -4.823492804447342e-04 + -4.668128456938979e-04 + -4.516525141842837e-04 + -4.368622962674093e-04 + -4.224362466667431e-04 + -4.083684605074392e-04 + -3.946530726767535e-04 + -3.812842634726816e-04 + -3.682562540846601e-04 + -3.555633067280622e-04 + -3.431997298953713e-04 + -3.311598733734528e-04 + -3.194381292167991e-04 + -3.080289365424697e-04 + -2.969267761950205e-04 + -2.861261725181284e-04 + -2.756216974519896e-04 + -2.654079650780054e-04 + -2.554796342192304e-04 + -2.458314117831762e-04 + -2.364580472261255e-04 + -2.273543358783364e-04 + -2.185151214599497e-04 + -2.099352907310207e-04 + -2.016097775283348e-04 + -1.935335642058985e-04 + -1.857016766078902e-04 + -1.781091887621722e-04 + -1.707512232636694e-04 + -1.636229467286454e-04 + -1.567195750846747e-04 + -1.500363727286114e-04 + -1.435686485603325e-04 + -1.373117617901810e-04 + -1.312611200233150e-04 + -1.254121759173047e-04 + -1.197604333131590e-04 + -1.143014443478538e-04 + -1.090308067994204e-04 + -1.039441703359566e-04 + -9.903723276260782e-05 + -9.430573818110019e-05 + -8.974548326970851e-05 + -8.535231263786576e-05 + -8.112211782233505e-05 + -7.705084341917009e-05 + -7.313448187442813e-05 + -6.936907333027644e-05 + -6.575071119249467e-05 + -6.227553658275769e-05 + -5.893973914900695e-05 + -5.573956203853484e-05 + -5.267129595161032e-05 + -4.973128084575291e-05 + -4.691591029739419e-05 + -4.422162539456759e-05 + -4.164491727590835e-05 + -3.918233061143914e-05 + -3.683045757249665e-05 + -3.458594118927672e-05 + -3.244547785270521e-05 + -3.040581149216269e-05 + -2.846373767254703e-05 + -2.661610506551807e-05 + -2.485980997915884e-05 + -2.319180110803831e-05 + -2.160907991664170e-05 + -2.010869565536285e-05 + -1.868775067119526e-05 + -1.734339969669114e-05 + -1.607284546059277e-05 + -1.487334444060605e-05 + -1.374220506933501e-05 + -1.267678404087566e-05 + -1.167449238525668e-05 + -1.073279264625808e-05 + -9.849195952118955e-06 + -9.021268250139948e-06 + -8.246626567968640e-06 + -7.522936912951058e-06 + -6.847920492700095e-06 + -6.219349168072015e-06 + -5.635044236568559e-06 + -5.092882470932048e-06 + -4.590790895044201e-06 + -4.126746487291455e-06 + -3.698781859286729e-06 + -3.304979520120749e-06 + -2.943472506918129e-06 + -2.612449510984778e-06 + -2.310148834845521e-06 + -2.034859929271865e-06 + -1.784927798002038e-06 + -1.558746837246077e-06 + -1.354763241038800e-06 + -1.171478551126456e-06 + -1.007443551831214e-06 + -8.612614901318561e-07 + -7.315906671893518e-07 + -6.171385461507109e-07 + -5.166657190198488e-07 + -4.289874671965282e-07 + -3.529682224298676e-07 + -2.875261969469119e-07 + -2.316338735426513e-07 + -1.843129441850586e-07 + -1.446395043479685e-07 + -1.117434618507405e-07 + -8.480406305106530e-08 + -6.305553831873507e-08 + -4.578544870958251e-08 + -3.233089380928512e-08 + -2.208448022054805e-08 + -1.449165750478591e-08 + -9.047683233008124e-09 + -5.303766739728543e-09 + -2.863504097386866e-09 + -1.380623394721897e-09 + -5.650641971230870e-10 + -1.790372475752245e-10 + -3.511990521548007e-11 + -8.192061809269277e-13 + 0.000000000000000e+00 diff --git a/examples/SPIN/test_problems/validation_nvt/in.spin.nvt_lattice b/examples/SPIN/test_problems/validation_nvt/in.spin.nvt_lattice new file mode 100644 index 0000000000..1d63f01d43 --- /dev/null +++ b/examples/SPIN/test_problems/validation_nvt/in.spin.nvt_lattice @@ -0,0 +1,51 @@ +# bcc iron in a 3d periodic box + +clear +units metal +atom_style spin + +dimension 3 +boundary p p p + +# necessary for the serial algorithm (sametag) +atom_modify map array + +lattice bcc 2.8665 +region box block 0.0 3.0 0.0 3.0 0.0 3.0 +create_box 1 box +create_atoms 1 box + +# setting mass, mag. moments, and interactions for bcc iron + +mass 1 55.845 +set group all spin 2.2 0.0 0.0 1.0 +velocity all create 400 4928459 rot yes dist gaussian + +pair_style hybrid/overlay eam/alloy spin/exchange 4.0 spin/neel 4.0 +pair_coeff * * eam/alloy Fe_Mishin2006.eam.alloy Fe +pair_coeff * * spin/exchange exchange 3.4 0.1 0.2171 1.841 +pair_coeff * * spin/neel neel 4.0 0.02 0.0 1.841 0.0 0.0 1.0 + +neighbor 0.1 bin +neigh_modify every 10 check yes delay 20 + +fix 1 all precession/spin zeeman 0.0 0.0 0.0 1.0 +fix 2 all langevin 200.0 200.0 10.0 48279 +fix 3 all langevin/spin 0.0 0.00001 321 +fix 4 all nve/spin lattice moving +timestep 0.001 + +# compute and output options + +compute out_mag all spin +compute out_pe all pe +compute out_ke all ke +compute out_temp all temp + +variable emag equal c_out_mag[5] +variable tmag equal c_out_mag[6] + +thermo_style custom step time v_tmag temp v_emag ke pe etotal +thermo 200 + +run 200000 diff --git a/examples/SPIN/test_problems/validation_nvt/in.spin.nvt_spin b/examples/SPIN/test_problems/validation_nvt/in.spin.nvt_spin new file mode 100644 index 0000000000..435e877bdf --- /dev/null +++ b/examples/SPIN/test_problems/validation_nvt/in.spin.nvt_spin @@ -0,0 +1,49 @@ +# bcc iron in a 3d periodic box + +clear +units metal +atom_style spin + +dimension 3 +boundary p p p + +# necessary for the serial algorithm (sametag) +atom_modify map array + +lattice bcc 2.8665 +region box block 0.0 3.0 0.0 3.0 0.0 3.0 +create_box 1 box +create_atoms 1 box + +# setting mass, mag. moments, and interactions for bcc iron + +mass 1 55.845 +set group all spin 2.2 0.0 0.0 1.0 +velocity all create 0 4928459 rot yes dist gaussian + +pair_style hybrid/overlay eam/alloy spin/exchange 3.5 +pair_coeff * * eam/alloy Fe_Mishin2006.eam.alloy Fe +pair_coeff * * spin/exchange exchange 3.4 0.1 0.2171 1.841 + +neighbor 0.1 bin +neigh_modify every 10 check yes delay 20 + +fix 1 all precession/spin zeeman 0.0 0.0 0.0 1.0 +fix 2 all langevin/spin 200.0 0.1 321 +fix 3 all nve/spin lattice moving +timestep 0.001 + +# compute and output options + +compute out_mag all spin +compute out_pe all pe +compute out_ke all ke +compute out_temp all temp + +variable emag equal c_out_mag[5] +variable tmag equal c_out_mag[6] + +thermo_style custom step time v_tmag temp v_emag ke pe etotal +thermo 200 + +run 200000 diff --git a/examples/SPIN/test_problems/validation_nvt/plot_nvt.py b/examples/SPIN/test_problems/validation_nvt/plot_nvt.py new file mode 100755 index 0000000000..06c48b4c28 --- /dev/null +++ b/examples/SPIN/test_problems/validation_nvt/plot_nvt.py @@ -0,0 +1,43 @@ +#!/usr/bin/env python3 + +import numpy as np, pylab, tkinter +import matplotlib.pyplot as plt +from scipy.optimize import curve_fit +from decimal import * +import sys, string, os + + +argv = sys.argv +if len(argv) != 3: + print("Syntax: ./plot_precession.py res_nvt_spin.dat res_nvt_lattice.dat") + sys.exit() + +dirname = os.path.join(os.getcwd(), "Feb_07") +nvtspin_file = sys.argv[1] +nvtlatt_file = sys.argv[2] + +ts,tmags,temps = np.loadtxt(nvtspin_file,skiprows=0, usecols=(1,2,3),unpack=True) +tl,tmagl,templ = np.loadtxt(nvtlatt_file,skiprows=0, usecols=(1,2,3),unpack=True) + +fig = plt.figure(figsize=(8,8)) +ax1 = plt.subplot(2,1,1) +ax2 = plt.subplot(2,1,2) + +ax1.plot(ts, tmags, 'r-', label='Spin temp. (thermostat)') +ax1.plot(ts, temps, 'g-', label='Lattice temp.') +ax1.set_yscale("log") +ax1.set_ylabel("T (K)") +ax1.legend(loc=3) + +ax2.plot(tl, tmagl, 'r-', label='Spin temp.') +ax2.plot(tl, templ, 'g-', label='Lattice temp. (thermostat)') +ax2.set_yscale("log") +ax2.set_ylabel("T (K)") +ax2.legend(loc=3) + +plt.xlabel('Time (in ps)') +plt.legend() +plt.show() + +fig.savefig(os.path.join(os.getcwd(), "nve_spin_lattice.pdf"), bbox_inches="tight") +plt.close(fig) diff --git a/examples/SPIN/test_problems/validation_nvt/run-test-nvt.sh b/examples/SPIN/test_problems/validation_nvt/run-test-nvt.sh new file mode 100755 index 0000000000..d3abbbe1a5 --- /dev/null +++ b/examples/SPIN/test_problems/validation_nvt/run-test-nvt.sh @@ -0,0 +1,23 @@ +#!/bin/bash + +# clean old res +rm res_*.dat + +# compute NVT Spin -> Lattice +./../../../../src/lmp_serial -in in.spin.nvt_spin +in="$(grep -n Step log.lammps | awk -F ':' '{print $1}')" +en="$(grep -n Loop log.lammps | awk -F ':' '{print $1}')" +in="$(echo "$in+1" | bc -l)" +en="$(echo "$en-$in" | bc -l)" +tail -n +$in log.lammps | head -n $en > res_nvt_spin.dat + +# compute NVT Lattice -> Spin +./../../../../src/lmp_serial -in in.spin.nvt_lattice +in="$(grep -n Step log.lammps | awk -F ':' '{print $1}')" +en="$(grep -n Loop log.lammps | awk -F ':' '{print $1}')" +in="$(echo "$in+1" | bc -l)" +en="$(echo "$en-$in" | bc -l)" +tail -n +$in log.lammps | head -n $en > res_nvt_lattice.dat + +# plot results +python3 plot_nvt.py res_nvt_spin.dat res_nvt_lattice.dat diff --git a/src/SPIN/compute_spin.cpp b/src/SPIN/compute_spin.cpp index 9a759134b4..a7f5d01f44 100644 --- a/src/SPIN/compute_spin.cpp +++ b/src/SPIN/compute_spin.cpp @@ -48,7 +48,6 @@ ComputeSpin::ComputeSpin(LAMMPS *lmp, int narg, char **arg) : vector_flag = 1; size_vector = 6; extvector = 0; - // npairs = npairspin = 0; // initialize the magnetic interaction flags @@ -180,15 +179,11 @@ void ComputeSpin::compute_vector() mag[0] += sp[i][0]; mag[1] += sp[i][1]; mag[2] += sp[i][2]; - // magenergy -= (sp[i][0]*fm[i][0] + sp[i][1]*fm[i][1] + sp[i][2]*fm[i][2]); // update magnetic precession energies if (precession_spin_flag) { magenergy += lockprecessionspin->emag[i]; - // magenergy -= lockprecessionspin->compute_zeeman_energy(sp[i]); - // magenergy -= lockprecessionspin->compute_anisotropy_energy(sp[i]); - // magenergy -= lockprecessionspin->compute_cubic_energy(sp[i]); } // update magnetic pair interactions @@ -222,13 +217,13 @@ void ComputeSpin::compute_vector() magtot[2] *= scale; magtot[3] = sqrt((magtot[0]*magtot[0])+(magtot[1]*magtot[1])+(magtot[2]*magtot[2])); spintemperature = hbar*tempnumtot; - spintemperature /= (2.0*kb*tempdenomtot); + // spintemperature /= (2.0*kb*tempdenomtot); + spintemperature /= (kb*tempdenomtot); vector[0] = magtot[0]; vector[1] = magtot[1]; vector[2] = magtot[2]; vector[3] = magtot[3]; - // vector[4] = magenergytot*hbar; vector[4] = magenergytot; vector[5] = spintemperature; diff --git a/src/SPIN/fix_precession_spin.cpp b/src/SPIN/fix_precession_spin.cpp index ffe3fc838c..9785c55ed6 100644 --- a/src/SPIN/fix_precession_spin.cpp +++ b/src/SPIN/fix_precession_spin.cpp @@ -155,8 +155,6 @@ FixPrecessionSpin::FixPrecessionSpin(LAMMPS *lmp, int narg, char **arg) : Fix(lm FixPrecessionSpin::~FixPrecessionSpin() { delete [] magstr; - - // test emag list storing mag energies memory->destroy(emag); } @@ -217,7 +215,6 @@ void FixPrecessionSpin::init() if (varflag == CONSTANT) set_magneticprecession(); - // test emag list storing mag energies // init. size of energy stacking lists nlocal_max = atom->nlocal; @@ -263,8 +260,8 @@ void FixPrecessionSpin::post_force(int /* vflag */) const int nlocal = atom->nlocal; double spi[4], fmi[3], epreci; - // test emag list storing mag energies // checking size of emag + if (nlocal_max < nlocal) { // grow emag lists if necessary nlocal_max = nlocal; memory->grow(emag,nlocal_max,"pair/spin:emag"); @@ -273,10 +270,7 @@ void FixPrecessionSpin::post_force(int /* vflag */) eflag = 0; eprec = 0.0; for (int i = 0; i < nlocal; i++) { - - // test emag list storing mag energies emag[i] = 0.0; - if (mask[i] & groupbit) { epreci = 0.0; spi[0] = sp[i][0]; diff --git a/src/SPIN/fix_precession_spin.h b/src/SPIN/fix_precession_spin.h index 7767864655..e13aa446c8 100644 --- a/src/SPIN/fix_precession_spin.h +++ b/src/SPIN/fix_precession_spin.h @@ -57,8 +57,9 @@ class FixPrecessionSpin : public Fix { void compute_cubic(double *, double *); double compute_cubic_energy(double *); - // test emag list storing mag energies - int nlocal_max; // max value of nlocal (for size of lists) + // storing magnetic energies + + int nlocal_max; // max nlocal (for list size) double *emag; // energy list protected: diff --git a/src/SPIN/pair_spin.cpp b/src/SPIN/pair_spin.cpp index 112f404bc0..04f10ae425 100644 --- a/src/SPIN/pair_spin.cpp +++ b/src/SPIN/pair_spin.cpp @@ -99,7 +99,6 @@ void PairSpin::init_style() if (ifix >=0) lattice_flag = ((FixNVESpin *) modify->fix[ifix])->lattice_flag; - // test emag list storing mag energies // init. size of energy stacking lists nlocal_max = atom->nlocal; diff --git a/src/SPIN/pair_spin.h b/src/SPIN/pair_spin.h index c8292236a3..a9f3b37077 100644 --- a/src/SPIN/pair_spin.h +++ b/src/SPIN/pair_spin.h @@ -32,8 +32,9 @@ friend class FixNVESpin; virtual void compute(int, int) {} virtual void compute_single_pair(int, double *) {} - // test emag list storing mag energies - int nlocal_max; // max value of nlocal (for size of lists) + // storing magnetic energies + + int nlocal_max; // max nlocal (for list size) double *emag; // energy list protected: diff --git a/src/SPIN/pair_spin_dipole_cut.cpp b/src/SPIN/pair_spin_dipole_cut.cpp index 6029f8bdbb..775d61236f 100644 --- a/src/SPIN/pair_spin_dipole_cut.cpp +++ b/src/SPIN/pair_spin_dipole_cut.cpp @@ -64,8 +64,6 @@ PairSpinDipoleCut::~PairSpinDipoleCut() memory->destroy(setflag); memory->destroy(cut_spin_long); memory->destroy(cutsq); - - // test emag list storing mag energies memory->destroy(emag); } } @@ -188,8 +186,8 @@ void PairSpinDipoleCut::compute(int eflag, int vflag) numneigh = list->numneigh; firstneigh = list->firstneigh; - // test emag list storing mag energies // checking size of emag + if (nlocal_max < nlocal) { // grow emag lists if necessary nlocal_max = nlocal; memory->grow(emag,nlocal_max,"pair/spin:emag"); @@ -209,6 +207,7 @@ void PairSpinDipoleCut::compute(int eflag, int vflag) spi[1] = sp[i][1]; spi[2] = sp[i][2]; spi[3] = sp[i][3]; + emag[i] = 0.0; itype = type[i]; for (jj = 0; jj < jnum; jj++) { @@ -262,7 +261,9 @@ void PairSpinDipoleCut::compute(int eflag, int vflag) if (eflag) { if (rsq <= local_cut2) { evdwl -= (spi[0]*fmi[0] + spi[1]*fmi[1] + spi[2]*fmi[2]); - evdwl *= 0.5*hbar; + // evdwl *= 0.5*hbar; + evdwl *= hbar; + emag[i] += evdwl; } } else evdwl = 0.0; diff --git a/src/SPIN/pair_spin_dipole_long.cpp b/src/SPIN/pair_spin_dipole_long.cpp index 7856035159..eccd85bbfb 100644 --- a/src/SPIN/pair_spin_dipole_long.cpp +++ b/src/SPIN/pair_spin_dipole_long.cpp @@ -69,8 +69,6 @@ PairSpinDipoleLong::~PairSpinDipoleLong() memory->destroy(setflag); memory->destroy(cut_spin_long); memory->destroy(cutsq); - - // test emag list storing mag energies memory->destroy(emag); } } @@ -215,8 +213,8 @@ void PairSpinDipoleLong::compute(int eflag, int vflag) numneigh = list->numneigh; firstneigh = list->firstneigh; - // test emag list storing mag energies // checking size of emag + if (nlocal_max < nlocal) { // grow emag lists if necessary nlocal_max = nlocal; memory->grow(emag,nlocal_max,"pair/spin:emag"); @@ -242,8 +240,6 @@ void PairSpinDipoleLong::compute(int eflag, int vflag) spi[1] = sp[i][1]; spi[2] = sp[i][2]; spi[3] = sp[i][3]; - - // test emag list storing mag energies emag[i] = 0.0; for (jj = 0; jj < jnum; jj++) { @@ -309,7 +305,8 @@ void PairSpinDipoleLong::compute(int eflag, int vflag) if (eflag) { if (rsq <= local_cut2) { evdwl -= (spi[0]*fmi[0] + spi[1]*fmi[1] + spi[2]*fmi[2]); - evdwl *= 0.5*hbar; + // evdwl *= 0.5*hbar; + evdwl *= hbar; emag[i] += evdwl; } } else evdwl = 0.0; diff --git a/src/SPIN/pair_spin_dmi.cpp b/src/SPIN/pair_spin_dmi.cpp index 266bc05da4..6dcb7e73a1 100644 --- a/src/SPIN/pair_spin_dmi.cpp +++ b/src/SPIN/pair_spin_dmi.cpp @@ -53,8 +53,6 @@ PairSpinDmi::~PairSpinDmi() memory->destroy(vmech_dmy); memory->destroy(vmech_dmz); memory->destroy(cutsq); - - // test emag list storing mag energies memory->destroy(emag); } } @@ -194,8 +192,8 @@ void PairSpinDmi::compute(int eflag, int vflag) numneigh = list->numneigh; firstneigh = list->firstneigh; - // test emag list storing mag energies // checking size of emag + if (nlocal_max < nlocal) { // grow emag lists if necessary nlocal_max = nlocal; memory->grow(emag,nlocal_max,"pair/spin:emag"); @@ -216,8 +214,6 @@ void PairSpinDmi::compute(int eflag, int vflag) spi[0] = sp[i][0]; spi[1] = sp[i][1]; spi[2] = sp[i][2]; - - // test emag list storing mag energies emag[i] = 0.0; // loop on neighbors @@ -271,7 +267,8 @@ void PairSpinDmi::compute(int eflag, int vflag) if (eflag) { evdwl -= (spi[0]*fmi[0] + spi[1]*fmi[1] + spi[2]*fmi[2]); - evdwl *= 0.5*hbar; + // evdwl *= 0.5*hbar; + evdwl *= hbar; emag[i] += evdwl; } else evdwl = 0.0; diff --git a/src/SPIN/pair_spin_exchange.cpp b/src/SPIN/pair_spin_exchange.cpp index d645515506..b314245615 100644 --- a/src/SPIN/pair_spin_exchange.cpp +++ b/src/SPIN/pair_spin_exchange.cpp @@ -50,8 +50,6 @@ PairSpinExchange::~PairSpinExchange() memory->destroy(J2); memory->destroy(J3); memory->destroy(cutsq); // to be implemented - - // test emag list storing mag energies memory->destroy(emag); } } @@ -179,9 +177,9 @@ void PairSpinExchange::compute(int eflag, int vflag) numneigh = list->numneigh; firstneigh = list->firstneigh; - // test emag list storing mag energies // checking size of emag - if (nlocal_max < nlocal) { // grow emag lists if necessary + + if (nlocal_max < nlocal) { // grow emag lists if necessary nlocal_max = nlocal; memory->grow(emag,nlocal_max,"pair/spin:emag"); } @@ -201,8 +199,6 @@ void PairSpinExchange::compute(int eflag, int vflag) spi[0] = sp[i][0]; spi[1] = sp[i][1]; spi[2] = sp[i][2]; - - // test emag list storing mag energies emag[i] = 0.0; // loop on neighbors @@ -255,12 +251,9 @@ void PairSpinExchange::compute(int eflag, int vflag) if (eflag) { evdwl -= (spi[0]*fmi[0] + spi[1]*fmi[1] + spi[2]*fmi[2]); - evdwl *= 0.5*hbar; - // printf("test ex energy: %g \n",evdwl); - // evdwl = -0.5*compute_energy(i,j,rsq,spi,spj); - // printf("test ex energy: %g \n",evdwl); + // evdwl *= 0.5*hbar; + evdwl *= hbar; emag[i] += evdwl; - // evdwl *= hbar; } else evdwl = 0.0; if (evflag) ev_tally_xyz(i,j,nlocal,newton_pair, diff --git a/src/SPIN/pair_spin_magelec.cpp b/src/SPIN/pair_spin_magelec.cpp index ef91ab764a..2ecb3da75e 100644 --- a/src/SPIN/pair_spin_magelec.cpp +++ b/src/SPIN/pair_spin_magelec.cpp @@ -51,8 +51,6 @@ PairSpinMagelec::~PairSpinMagelec() memory->destroy(v_mey); memory->destroy(v_mez); memory->destroy(cutsq); // to be deteled - - // test emag list storing mag energies memory->destroy(emag); } } @@ -188,8 +186,8 @@ void PairSpinMagelec::compute(int eflag, int vflag) numneigh = list->numneigh; firstneigh = list->firstneigh; - // test emag list storing mag energies // checking size of emag + if (nlocal_max < nlocal) { // grow emag lists if necessary nlocal_max = nlocal; memory->grow(emag,nlocal_max,"pair/spin:emag"); @@ -210,8 +208,6 @@ void PairSpinMagelec::compute(int eflag, int vflag) spi[0] = sp[i][0]; spi[1] = sp[i][1]; spi[2] = sp[i][2]; - - // test emag list storing mag energies emag[i] = 0.0; // loop on neighbors @@ -264,7 +260,8 @@ void PairSpinMagelec::compute(int eflag, int vflag) if (eflag) { evdwl -= (spi[0]*fmi[0] + spi[1]*fmi[1] + spi[2]*fmi[2]); - evdwl *= 0.5*hbar; + // evdwl *= 0.5*hbar; + evdwl *= hbar; emag[i] += evdwl; } else evdwl = 0.0; diff --git a/src/SPIN/pair_spin_neel.cpp b/src/SPIN/pair_spin_neel.cpp index e158906b75..5b64d59fa3 100644 --- a/src/SPIN/pair_spin_neel.cpp +++ b/src/SPIN/pair_spin_neel.cpp @@ -54,8 +54,6 @@ PairSpinNeel::~PairSpinNeel() memory->destroy(q2); memory->destroy(q3); memory->destroy(cutsq); // to be deleted - - // test emag list storing mag energies memory->destroy(emag); } } @@ -193,8 +191,8 @@ void PairSpinNeel::compute(int eflag, int vflag) numneigh = list->numneigh; firstneigh = list->firstneigh; - // test emag list storing mag energies // checking size of emag + if (nlocal_max < nlocal) { // grow emag lists if necessary nlocal_max = nlocal; memory->grow(emag,nlocal_max,"pair/spin:emag"); @@ -215,8 +213,6 @@ void PairSpinNeel::compute(int eflag, int vflag) spi[0] = sp[i][0]; spi[1] = sp[i][1]; spi[2] = sp[i][2]; - - // test emag list storing mag energies emag[i] = 0.0; // loop on neighbors @@ -272,9 +268,9 @@ void PairSpinNeel::compute(int eflag, int vflag) } if (eflag) { - // evdwl = (spi[0]*fmi[0] + spi[1]*fmi[1] + spi[2]*fmi[2]); evdwl = compute_neel_energy(i,j,rsq,eij,spi,spj); - evdwl *= 0.5*hbar; + // evdwl *= 0.5*hbar; + evdwl *= hbar; emag[i] += evdwl; } else evdwl = 0.0; diff --git a/src/min.cpp b/src/min.cpp index f8ed11375c..11d2812804 100644 --- a/src/min.cpp +++ b/src/min.cpp @@ -902,13 +902,13 @@ double Min::fnorm_inf() double local_norm_inf = 0.0; for (i = 0; i < nvec; i++) - local_norm_inf = MAX(fabs(fvec[i]),local_norm_inf); + local_norm_inf = MAX(fvec[i]*fvec[i],local_norm_inf); if (nextra_atom) { for (int m = 0; m < nextra_atom; m++) { fatom = fextra_atom[m]; n = extra_nlen[m]; for (i = 0; i < n; i++) - local_norm_inf = MAX(fabs(fatom[i]),local_norm_inf); + local_norm_inf = MAX(fatom[i]*fatom[i],local_norm_inf); } } @@ -917,7 +917,7 @@ double Min::fnorm_inf() if (nextra_global) for (i = 0; i < nextra_global; i++) - norm_inf = MAX(fabs(fextra[i]),norm_inf); + norm_inf = MAX(fextra[i]*fextra[i],norm_inf); return norm_inf; } -- GitLab From 3806222e0460d8e8f7656761a062e59903ea84d1 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 30 Mar 2020 10:25:04 -0400 Subject: [PATCH 113/717] make configuations summary more consistent, recover defines --- cmake/CMakeLists.txt | 61 ++++++++++++++++++++++++-------------------- 1 file changed, 34 insertions(+), 27 deletions(-) diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index 9ec0c2eaed..3a702757de 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -700,60 +700,67 @@ foreach(PKG ${DEFAULT_PACKAGES} ${ACCEL_PACKAGES}) endif() endforeach() -get_directory_property(CPPFLAGS DIRECTORY ${CMAKE_SOURCE_DIR} COMPILE_DEFINITIONS) +get_target_property(DEFINES lammps COMPILE_DEFINITIONS) include(FeatureSummary) feature_summary(DESCRIPTION "The following tools and libraries have been found and configured:" WHAT PACKAGES_FOUND) message(STATUS "<<< Build configuration >>> - Build type ${CMAKE_BUILD_TYPE} - Install path ${CMAKE_INSTALL_PREFIX} - Generator ${CMAKE_GENERATOR} using ${CMAKE_MAKE_PROGRAM} - Compilers and Flags: - C++ Compiler ${CMAKE_CXX_COMPILER} - Type ${CMAKE_CXX_COMPILER_ID} - Version ${CMAKE_CXX_COMPILER_VERSION} - C++ Flags ${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_${BTYPE}} - Defines ${CPPFLAGS}") + Build type: ${CMAKE_BUILD_TYPE} + Install path: ${CMAKE_INSTALL_PREFIX} + Generator: ${CMAKE_GENERATOR} using ${CMAKE_MAKE_PROGRAM} +-- <<< Compilers and Flags: >>> +-- C++ Compiler: ${CMAKE_CXX_COMPILER} + Type: ${CMAKE_CXX_COMPILER_ID} + Version: ${CMAKE_CXX_COMPILER_VERSION} + C++ Flags: ${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_${BTYPE}} + Defines: ${DEFINES}") get_property(LANGUAGES GLOBAL PROPERTY ENABLED_LANGUAGES) list (FIND LANGUAGES "Fortran" _index) if (${_index} GREATER -1) - message(STATUS "Fortran Compiler ${CMAKE_Fortran_COMPILER} - Type ${CMAKE_Fortran_COMPILER_ID} - Version ${CMAKE_Fortran_COMPILER_VERSION} - Fortran Flags ${CMAKE_Fortran_FLAGS} ${CMAKE_Fortran_FLAGS_${BTYPE}}") + message(STATUS "Fortran Compiler: ${CMAKE_Fortran_COMPILER} + Type: ${CMAKE_Fortran_COMPILER_ID} + Version: ${CMAKE_Fortran_COMPILER_VERSION} + Fortran Flags:${CMAKE_Fortran_FLAGS} ${CMAKE_Fortran_FLAGS_${BTYPE}}") endif() list (FIND LANGUAGES "C" _index) if (${_index} GREATER -1) - message(STATUS "C compiler ${CMAKE_C_COMPILER} - Type ${CMAKE_C_COMPILER_ID} - Version ${CMAKE_C_COMPILER_VERSION} - C Flags ${CMAKE_C_FLAGS} ${CMAKE_C_FLAGS_${BTYPE}}") + message(STATUS "C compiler: ${CMAKE_C_COMPILER} + Type: ${CMAKE_C_COMPILER_ID} + Version: ${CMAKE_C_COMPILER_VERSION} + C Flags: ${CMAKE_C_FLAGS} ${CMAKE_C_FLAGS_${BTYPE}}") +endif() +message(STATUS "<<< Linker flags: >>>") +if(BUILD_EXE) + message(STATUS "Executable name: ${LAMMPS_BINARY}") endif() if(CMAKE_EXE_LINKER_FLAGS) - message(STATUS "Linker flags: - Executable ${CMAKE_EXE_LINKER_FLAGS}") + message(STATUS "Executable linker flags: ${CMAKE_EXE_LINKER_FLAGS}") endif() if(BUILD_SHARED_LIBS) - message(STATUS "Shared library flags: ${CMAKE_SHARED_LINKER_FLAGS}") + message(STATUS "Shared library flags: ${CMAKE_SHARED_LINKER_FLAGS}") else() - message(STATUS "Static library flags: ${CMAKE_STATIC_LINKER_FLAGS}") + message(STATUS "Static library flags: ${CMAKE_STATIC_LINKER_FLAGS}") endif() if(BUILD_MPI) - message(STATUS "Using MPI with headers in ${MPI_CXX_INCLUDE_PATH} and these libraries: ${MPI_CXX_LIBRARIES};${MPI_Fortran_LIBRARIES}") + message(STATUS "<<< MPI flags >>> +-- MPI includes: ${MPI_CXX_INCLUDE_PATH} +-- MPI libraries: ${MPI_CXX_LIBRARIES};${MPI_Fortran_LIBRARIES}") endif() if(PKG_GPU) - message(STATUS "GPU API: ${GPU_API}") + message(STATUS "<<< GPU package settings >>> +-- GPU API: ${GPU_API}") if(GPU_API STREQUAL "CUDA") message(STATUS "GPU architecture: ${GPU_ARCH}") elseif(GPU_API STREQUAL "OPENCL") - message(STATUS "OpenCL parameter tuning: ${OCL_TUNE}") + message(STATUS "OpenCL tuning: ${OCL_TUNE}") endif() - message(STATUS "GPU precision: ${GPU_PREC}") + message(STATUS "GPU precision: ${GPU_PREC}") endif() if(PKG_KOKKOS) message(STATUS "Kokkos Arch: ${KOKKOS_ARCH}") endif() if(PKG_KSPACE) - message(STATUS "Using ${FFT} as primary FFT library") + message(STATUS "<<< FFT settings >>> +-- Primary FFT lib: ${FFT}") if(FFT_SINGLE) message(STATUS "Using single precision FFTs") else() -- GitLab From 547d29d0307e3874c63de61a111e96eae1c2ea13 Mon Sep 17 00:00:00 2001 From: julient31 Date: Mon, 30 Mar 2020 08:55:54 -0600 Subject: [PATCH 114/717] Commit2 JT 300320 - regenerated all spin examples --- examples/SPIN/bfo/log.19Nov19.spin.bfo.g++.1 | 167 ------------- examples/SPIN/bfo/log.19Nov19.spin.bfo.g++.4 | 167 ------------- examples/SPIN/bfo/log.30Mar20.spin.bfo.g++.1 | 127 ++++++++++ examples/SPIN/bfo/log.30Mar20.spin.bfo.g++.4 | 127 ++++++++++ .../log.19Nov19.spin.cobalt_fcc.g++.1 | 142 ------------ .../log.19Nov19.spin.cobalt_fcc.g++.4 | 142 ------------ .../log.30Mar20.spin.cobalt_fcc.g++.1 | 140 +++++++++++ .../log.30Mar20.spin.cobalt_fcc.g++.4 | 140 +++++++++++ .../log.19Nov19.spin.cobalt_hcp.g++.1 | 219 ------------------ .../log.19Nov19.spin.cobalt_hcp.g++.4 | 219 ------------------ .../log.30Mar20.spin.cobalt_hcp.g++.1 | 138 +++++++++++ .../log.30Mar20.spin.cobalt_hcp.g++.4 | 138 +++++++++++ ...=> log.30Mar20.spin.iron_dipole_cut.g++.1} | 24 +- ...=> log.30Mar20.spin.iron_dipole_cut.g++.4} | 26 +-- ... log.30Mar20.spin.iron_dipole_ewald.g++.1} | 32 +-- ... log.30Mar20.spin.iron_dipole_ewald.g++.4} | 32 +-- ...> log.30Mar20.spin.iron_dipole_pppm.g++.1} | 28 +-- ...> log.30Mar20.spin.iron_dipole_pppm.g++.4} | 26 +-- .../SPIN/iron/log.19Nov19.spin.iron.g++.1 | 136 ----------- .../SPIN/iron/log.30Mar20.spin.iron.g++.1 | 137 +++++++++++ ...iron.g++.4 => log.30Mar20.spin.iron.g++.4} | 67 +++--- ...++.1 => log.30Mar20.spin.iron_cubic.g++.1} | 64 ++--- ...++.4 => log.30Mar20.spin.iron_cubic.g++.4} | 22 +- ...el.g++.1 => log.30Mar20.spin.nickel.g++.1} | 69 +++--- ...el.g++.4 => log.30Mar20.spin.nickel.g++.4} | 71 +++--- ....1 => log.30Mar20.spin.nickel_cubic.g++.1} | 68 +++--- ....4 => log.30Mar20.spin.nickel_cubic.g++.4} | 70 +++--- ...g++.1 => log.30Mar20.spin.read_data.g++.1} | 51 ++-- ...g++.4 => log.30Mar20.spin.read_data.g++.4} | 47 ++-- ...t.g++.1 => log.30Mar20.spin.restart.g++.1} | 49 ++-- ...t.g++.4 => log.30Mar20.spin.restart.g++.4} | 47 ++-- ...1 => log.30Mar20.spin.write_restart.g++.1} | 49 ++-- ...4 => log.30Mar20.spin.write_restart.g++.4} | 49 ++-- .../read_restart/restart_hcp_cobalt.equil | Bin 0 -> 60893 bytes ....g++.1 => log.30Mar20.spin.setforce.g++.1} | 48 ++-- ....g++.4 => log.30Mar20.spin.setforce.g++.4} | 52 ++--- ...n.g++.1 => log.30Mar20.spin.bfo_min.g++.1} | 72 +++--- ...n.g++.4 => log.30Mar20.spin.bfo_min.g++.4} | 68 +++--- ...++.1 => log.30Mar20.spin.bfo_min_cg.g++.1} | 48 ++-- ...++.4 => log.30Mar20.spin.bfo_min_cg.g++.4} | 52 ++--- ...1 => log.30Mar20.spin.bfo_min_lbfgs.g++.1} | 51 ++-- ...4 => log.30Mar20.spin.bfo_min_lbfgs.g++.4} | 48 ++-- ....g++.1 => log.30Mar20.spin.iron_min.g++.1} | 48 ++-- ....g++.4 => log.30Mar20.spin.iron_min.g++.4} | 46 ++-- 44 files changed, 1650 insertions(+), 1913 deletions(-) delete mode 100644 examples/SPIN/bfo/log.19Nov19.spin.bfo.g++.1 delete mode 100644 examples/SPIN/bfo/log.19Nov19.spin.bfo.g++.4 create mode 100644 examples/SPIN/bfo/log.30Mar20.spin.bfo.g++.1 create mode 100644 examples/SPIN/bfo/log.30Mar20.spin.bfo.g++.4 delete mode 100644 examples/SPIN/cobalt_fcc/log.19Nov19.spin.cobalt_fcc.g++.1 delete mode 100644 examples/SPIN/cobalt_fcc/log.19Nov19.spin.cobalt_fcc.g++.4 create mode 100644 examples/SPIN/cobalt_fcc/log.30Mar20.spin.cobalt_fcc.g++.1 create mode 100644 examples/SPIN/cobalt_fcc/log.30Mar20.spin.cobalt_fcc.g++.4 delete mode 100644 examples/SPIN/cobalt_hcp/log.19Nov19.spin.cobalt_hcp.g++.1 delete mode 100644 examples/SPIN/cobalt_hcp/log.19Nov19.spin.cobalt_hcp.g++.4 create mode 100644 examples/SPIN/cobalt_hcp/log.30Mar20.spin.cobalt_hcp.g++.1 create mode 100644 examples/SPIN/cobalt_hcp/log.30Mar20.spin.cobalt_hcp.g++.4 rename examples/SPIN/dipole_spin/{log.19Nov19.spin.iron_dipole_cut.g++.1 => log.30Mar20.spin.iron_dipole_cut.g++.1} (83%) rename examples/SPIN/dipole_spin/{log.19Nov19.spin.iron_dipole_cut.g++.4 => log.30Mar20.spin.iron_dipole_cut.g++.4} (82%) rename examples/SPIN/dipole_spin/{log.19Nov19.spin.iron_dipole_ewald.g++.1 => log.30Mar20.spin.iron_dipole_ewald.g++.1} (80%) rename examples/SPIN/dipole_spin/{log.19Nov19.spin.iron_dipole_ewald.g++.4 => log.30Mar20.spin.iron_dipole_ewald.g++.4} (80%) rename examples/SPIN/dipole_spin/{log.19Nov19.spin.iron_dipole_pppm.g++.1 => log.30Mar20.spin.iron_dipole_pppm.g++.1} (82%) rename examples/SPIN/dipole_spin/{log.19Nov19.spin.iron_dipole_pppm.g++.4 => log.30Mar20.spin.iron_dipole_pppm.g++.4} (83%) delete mode 100644 examples/SPIN/iron/log.19Nov19.spin.iron.g++.1 create mode 100644 examples/SPIN/iron/log.30Mar20.spin.iron.g++.1 rename examples/SPIN/iron/{log.19Nov19.spin.iron.g++.4 => log.30Mar20.spin.iron.g++.4} (68%) rename examples/SPIN/iron/{log.19Nov19.spin.iron_cubic.g++.1 => log.30Mar20.spin.iron_cubic.g++.1} (70%) rename examples/SPIN/iron/{log.19Nov19.spin.iron_cubic.g++.4 => log.30Mar20.spin.iron_cubic.g++.4} (90%) rename examples/SPIN/nickel/{log.19Nov19.spin.nickel.g++.1 => log.30Mar20.spin.nickel.g++.1} (52%) rename examples/SPIN/nickel/{log.19Nov19.spin.nickel.g++.4 => log.30Mar20.spin.nickel.g++.4} (51%) rename examples/SPIN/nickel/{log.19Nov19.spin.nickel_cubic.g++.1 => log.30Mar20.spin.nickel_cubic.g++.1} (51%) rename examples/SPIN/nickel/{log.19Nov19.spin.nickel_cubic.g++.4 => log.30Mar20.spin.nickel_cubic.g++.4} (50%) rename examples/SPIN/read_restart/{log.19Nov19.spin.read_data.g++.1 => log.30Mar20.spin.read_data.g++.1} (51%) rename examples/SPIN/read_restart/{log.19Nov19.spin.read_data.g++.4 => log.30Mar20.spin.read_data.g++.4} (52%) rename examples/SPIN/read_restart/{log.19Nov19.spin.restart.g++.1 => log.30Mar20.spin.restart.g++.1} (54%) rename examples/SPIN/read_restart/{log.19Nov19.spin.restart.g++.4 => log.30Mar20.spin.restart.g++.4} (54%) rename examples/SPIN/read_restart/{log.19Nov19.spin.write_restart.g++.1 => log.30Mar20.spin.write_restart.g++.1} (61%) rename examples/SPIN/read_restart/{log.19Nov19.spin.write_restart.g++.4 => log.30Mar20.spin.write_restart.g++.4} (61%) create mode 100644 examples/SPIN/read_restart/restart_hcp_cobalt.equil rename examples/SPIN/setforce_spin/{log.19Nov19.spin.setforce.g++.1 => log.30Mar20.spin.setforce.g++.1} (69%) rename examples/SPIN/setforce_spin/{log.19Nov19.spin.setforce.g++.4 => log.30Mar20.spin.setforce.g++.4} (58%) rename examples/SPIN/spinmin/{log.19Nov19.spin.bfo_min.g++.1 => log.30Mar20.spin.bfo_min.g++.1} (51%) rename examples/SPIN/spinmin/{log.19Nov19.spin.bfo_min.g++.4 => log.30Mar20.spin.bfo_min.g++.4} (52%) rename examples/SPIN/spinmin/{log.19Nov19.spin.bfo_min_cg.g++.1 => log.30Mar20.spin.bfo_min_cg.g++.1} (65%) rename examples/SPIN/spinmin/{log.19Nov19.spin.bfo_min_cg.g++.4 => log.30Mar20.spin.bfo_min_cg.g++.4} (64%) rename examples/SPIN/spinmin/{log.19Nov19.spin.bfo_min_lbfgs.g++.1 => log.30Mar20.spin.bfo_min_lbfgs.g++.1} (65%) rename examples/SPIN/spinmin/{log.19Nov19.spin.bfo_min_lbfgs.g++.4 => log.30Mar20.spin.bfo_min_lbfgs.g++.4} (68%) rename examples/SPIN/spinmin/{log.19Nov19.spin.iron_min.g++.1 => log.30Mar20.spin.iron_min.g++.1} (73%) rename examples/SPIN/spinmin/{log.19Nov19.spin.iron_min.g++.4 => log.30Mar20.spin.iron_min.g++.4} (76%) diff --git a/examples/SPIN/bfo/log.19Nov19.spin.bfo.g++.1 b/examples/SPIN/bfo/log.19Nov19.spin.bfo.g++.1 deleted file mode 100644 index b14210e9d0..0000000000 --- a/examples/SPIN/bfo/log.19Nov19.spin.bfo.g++.1 +++ /dev/null @@ -1,167 +0,0 @@ -LAMMPS (30 Oct 2019) -# layer sc iron atoms (in the [001] plane) in bismuth oxide - -units metal -atom_style spin -dimension 3 -boundary p p f - -# necessary for the serial algorithm (sametag) -atom_modify map array - -lattice sc 3.96 -Lattice spacing in x,y,z = 3.96 3.96 3.96 -region box block 0.0 34.0 0.0 34.0 0.0 5.0 -create_box 1 box -Created orthogonal box = (0 0 0) to (134.64 134.64 19.8) - 1 by 1 by 1 MPI processor grid -create_atoms 1 box -Created 5780 atoms - create_atoms CPU = 0.00226784 secs - -# setting mass, mag. moments, and interactions for bfo - -mass 1 1.0 -set group all spin/random 11 2.50 - 5780 settings made for spin/random - -#pair_style hybrid/overlay spin/exchange 6.0 spin/magelec 4.5 -pair_style hybrid/overlay spin/exchange 6.0 spin/magelec 4.5 spin/dmi 4.5 -pair_coeff * * spin/exchange exchange 6.0 -0.01575 0.0 1.965 -pair_coeff * * spin/magelec magelec 4.5 0.000109 1.0 1.0 1.0 -pair_coeff * * spin/dmi dmi 4.5 0.00005 1.0 1.0 1.0 - -neighbor 0.1 bin -neigh_modify every 10 check yes delay 20 - -fix 1 all precession/spin anisotropy 0.0000033 0.0 0.0 1.0 -fix 2 all langevin/spin 0.0 0.1 21 -fix 3 all nve/spin lattice frozen - -timestep 0.0002 - -compute out_mag all spin -compute out_pe all pe -compute out_ke all ke -compute out_temp all temp - -variable magz equal c_out_mag[3] -variable magnorm equal c_out_mag[4] -variable emag equal c_out_mag[5] -variable tmag equal c_out_mag[6] - -#thermo_style custom step time v_magnorm v_emag temp etotal -thermo_style custom step time v_magnorm pe ke v_emag temp etotal -thermo 10 - -compute outsp all property/atom spx spy spz sp fmx fmy fmz -dump 1 all custom 100 dump_bfo.lammpstrj type x y z c_outsp[1] c_outsp[2] c_outsp[3] - -run 500 -Neighbor list info ... - update every 10 steps, delay 20 steps, check yes - max neighbors/atom: 2000, page size: 100000 - master list distance cutoff = 6.1 - ghost atom cutoff = 6.1 - binsize = 3.05, bins = 45 45 7 - 3 neighbor lists, perpetual/occasional/extra = 3 0 0 - (1) pair spin/exchange, perpetual - attributes: full, newton on - pair build: full/bin/atomonly - stencil: full/bin/3d - bin: standard - (2) pair spin/magelec, perpetual, copy from (1) - attributes: full, newton on - pair build: copy - stencil: none - bin: none - (3) pair spin/dmi, perpetual, copy from (1) - attributes: full, newton on - pair build: copy - stencil: none - bin: none -Per MPI rank memory allocation (min/avg/max) = 8.154 | 8.154 | 8.154 Mbytes -Step Time v_magnorm PotEng KinEng v_emag Temp TotEng - 0 0 0.010071723 -0.059343109 0 -0.13132609 0 -0.059343109 - 10 0.002 0.01003044 -0.18537022 0 -0.38338861 0 -0.18537022 - 20 0.004 0.0099890716 -0.31121926 0 -0.63509581 0 -0.31121926 - 30 0.006 0.0099475919 -0.43689013 0 -0.88644739 0 -0.43689013 - 40 0.008 0.0099059782 -0.5623833 0 -1.1374442 0 -0.5623833 - 50 0.01 0.0098642085 -0.68769978 0 -1.388088 0 -0.68769978 - 60 0.012 0.0098222618 -0.81284106 0 -1.6383818 0 -0.81284106 - 70 0.014 0.0097801186 -0.93780907 0 -1.8883294 0 -0.93780907 - 80 0.016 0.0097377603 -1.0626062 0 -2.1379352 0 -1.0626062 - 90 0.018 0.0096951693 -1.187235 0 -2.3872045 0 -1.187235 - 100 0.02 0.0096523288 -1.3116986 0 -2.6361432 0 -1.3116986 - 110 0.022 0.0096092227 -1.4360002 0 -2.8847577 0 -1.4360002 - 120 0.024 0.009565836 -1.5601431 0 -3.1330547 0 -1.5601431 - 130 0.026 0.0095221542 -1.6841309 0 -3.3810411 0 -1.6841309 - 140 0.028 0.0094781635 -1.8079673 0 -3.6287241 0 -1.8079673 - 150 0.03 0.0094338509 -1.9316557 0 -3.8761109 0 -1.9316557 - 160 0.032 0.0093892044 -2.0551997 0 -4.1232085 0 -2.0551997 - 170 0.034 0.0093442126 -2.178603 0 -4.370024 0 -2.178603 - 180 0.036 0.0092988654 -2.3018687 0 -4.6165639 0 -2.3018687 - 190 0.038 0.0092531537 -2.4250002 0 -4.8628348 0 -2.4250002 - 200 0.04 0.0092070698 -2.5480003 0 -5.1088426 0 -2.5480003 - 210 0.042 0.0091606073 -2.670872 0 -5.3545929 0 -2.670872 - 220 0.044 0.0091137617 -2.7936178 0 -5.6000909 0 -2.7936178 - 230 0.046 0.0090665298 -2.9162399 0 -5.8453412 0 -2.9162399 - 240 0.048 0.0090189108 -3.0387405 0 -6.0903478 0 -3.0387405 - 250 0.05 0.0089709056 -3.1611214 0 -6.3351146 0 -3.1611214 - 260 0.052 0.0089225173 -3.2833841 0 -6.5796445 0 -3.2833841 - 270 0.054 0.0088737511 -3.4055299 0 -6.8239403 0 -3.4055299 - 280 0.056 0.0088246147 -3.52756 0 -7.0680043 0 -3.52756 - 290 0.058 0.0087751176 -3.6494754 0 -7.3118383 0 -3.6494754 - 300 0.06 0.008725272 -3.7712768 0 -7.5554438 0 -3.7712768 - 310 0.062 0.0086750916 -3.8929648 0 -7.7988222 0 -3.8929648 - 320 0.064 0.0086245927 -4.0145399 0 -8.0419744 0 -4.0145399 - 330 0.066 0.0085737928 -4.1360026 0 -8.2849013 0 -4.1360026 - 340 0.068 0.0085227116 -4.2573532 0 -8.5276035 0 -4.2573532 - 350 0.07 0.0084713698 -4.378592 0 -8.7700818 0 -4.378592 - 360 0.072 0.0084197895 -4.4997194 0 -9.0123367 0 -4.4997194 - 370 0.074 0.0083679936 -4.6207358 0 -9.2543688 0 -4.6207358 - 380 0.076 0.0083160058 -4.7416414 0 -9.496179 0 -4.7416414 - 390 0.078 0.0082638503 -4.8624367 0 -9.7377681 0 -4.8624367 - 400 0.08 0.0082115512 -4.9831222 0 -9.9791371 0 -4.9831222 - 410 0.082 0.0081591329 -5.1036986 0 -10.220287 0 -5.1036986 - 420 0.084 0.0081066195 -5.2241665 0 -10.46122 0 -5.2241665 - 430 0.086 0.0080540347 -5.3445267 0 -10.701936 0 -5.3445267 - 440 0.088 0.008001402 -5.4647802 0 -10.942439 0 -5.4647802 - 450 0.09 0.0079487439 -5.5849281 0 -11.18273 0 -5.5849281 - 460 0.092 0.0078960829 -5.7049716 0 -11.422811 0 -5.7049716 - 470 0.094 0.0078434404 -5.824912 0 -11.662686 0 -5.824912 - 480 0.096 0.0077908378 -5.9447508 0 -11.902357 0 -5.9447508 - 490 0.098 0.0077382955 -6.0644896 0 -12.141828 0 -6.0644896 - 500 0.1 0.0076858338 -6.1841301 0 -12.381101 0 -6.1841301 -Loop time of 13.543 on 1 procs for 500 steps with 5780 atoms - -Performance: 0.638 ns/day, 37.619 hours/ns, 36.919 timesteps/s -100.0% CPU use with 1 MPI tasks x no OpenMP threads - -MPI task timing breakdown: -Section | min time | avg time | max time |%varavg| %total ---------------------------------------------------------------- -Pair | 3.8138 | 3.8138 | 3.8138 | 0.0 | 28.16 -Neigh | 0 | 0 | 0 | 0.0 | 0.00 -Comm | 0.011875 | 0.011875 | 0.011875 | 0.0 | 0.09 -Output | 0.049726 | 0.049726 | 0.049726 | 0.0 | 0.37 -Modify | 9.655 | 9.655 | 9.655 | 0.0 | 71.29 -Other | | 0.01262 | | | 0.09 - -Nlocal: 5780 ave 5780 max 5780 min -Histogram: 1 0 0 0 0 0 0 0 0 0 -Nghost: 1065 ave 1065 max 1065 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: 92480 ave 92480 max 92480 min -Histogram: 1 0 0 0 0 0 0 0 0 0 - -Total # of neighbors = 92480 -Ave neighs/atom = 16 -Neighbor list builds = 0 -Dangerous builds = 0 - -Please see the log.cite file for references relevant to this simulation - -Total wall time: 0:00:13 diff --git a/examples/SPIN/bfo/log.19Nov19.spin.bfo.g++.4 b/examples/SPIN/bfo/log.19Nov19.spin.bfo.g++.4 deleted file mode 100644 index 8c701c93c1..0000000000 --- a/examples/SPIN/bfo/log.19Nov19.spin.bfo.g++.4 +++ /dev/null @@ -1,167 +0,0 @@ -LAMMPS (30 Oct 2019) -# layer sc iron atoms (in the [001] plane) in bismuth oxide - -units metal -atom_style spin -dimension 3 -boundary p p f - -# necessary for the serial algorithm (sametag) -atom_modify map array - -lattice sc 3.96 -Lattice spacing in x,y,z = 3.96 3.96 3.96 -region box block 0.0 34.0 0.0 34.0 0.0 5.0 -create_box 1 box -Created orthogonal box = (0 0 0) to (134.64 134.64 19.8) - 2 by 2 by 1 MPI processor grid -create_atoms 1 box -Created 5780 atoms - create_atoms CPU = 0.00149798 secs - -# setting mass, mag. moments, and interactions for bfo - -mass 1 1.0 -set group all spin/random 11 2.50 - 5780 settings made for spin/random - -#pair_style hybrid/overlay spin/exchange 6.0 spin/magelec 4.5 -pair_style hybrid/overlay spin/exchange 6.0 spin/magelec 4.5 spin/dmi 4.5 -pair_coeff * * spin/exchange exchange 6.0 -0.01575 0.0 1.965 -pair_coeff * * spin/magelec magelec 4.5 0.000109 1.0 1.0 1.0 -pair_coeff * * spin/dmi dmi 4.5 0.00005 1.0 1.0 1.0 - -neighbor 0.1 bin -neigh_modify every 10 check yes delay 20 - -fix 1 all precession/spin anisotropy 0.0000033 0.0 0.0 1.0 -fix 2 all langevin/spin 0.0 0.1 21 -fix 3 all nve/spin lattice frozen - -timestep 0.0002 - -compute out_mag all spin -compute out_pe all pe -compute out_ke all ke -compute out_temp all temp - -variable magz equal c_out_mag[3] -variable magnorm equal c_out_mag[4] -variable emag equal c_out_mag[5] -variable tmag equal c_out_mag[6] - -#thermo_style custom step time v_magnorm v_emag temp etotal -thermo_style custom step time v_magnorm pe ke v_emag temp etotal -thermo 10 - -compute outsp all property/atom spx spy spz sp fmx fmy fmz -dump 1 all custom 100 dump_bfo.lammpstrj type x y z c_outsp[1] c_outsp[2] c_outsp[3] - -run 500 -Neighbor list info ... - update every 10 steps, delay 20 steps, check yes - max neighbors/atom: 2000, page size: 100000 - master list distance cutoff = 6.1 - ghost atom cutoff = 6.1 - binsize = 3.05, bins = 45 45 7 - 3 neighbor lists, perpetual/occasional/extra = 3 0 0 - (1) pair spin/exchange, perpetual - attributes: full, newton on - pair build: full/bin/atomonly - stencil: full/bin/3d - bin: standard - (2) pair spin/magelec, perpetual, copy from (1) - attributes: full, newton on - pair build: copy - stencil: none - bin: none - (3) pair spin/dmi, perpetual, copy from (1) - attributes: full, newton on - pair build: copy - stencil: none - bin: none -Per MPI rank memory allocation (min/avg/max) = 7.744 | 7.744 | 7.744 Mbytes -Step Time v_magnorm PotEng KinEng v_emag Temp TotEng - 0 0 0.010071723 -0.11868622 0 -0.12966919 0 -0.11868622 - 10 0.002 0.010030399 -0.37068593 0 -0.38171598 0 -0.37068593 - 20 0.004 0.0099889925 -0.6223216 0 -0.6334048 0 -0.6223216 - 30 0.006 0.0099474775 -0.87359359 0 -0.8847354 0 -0.87359359 - 40 0.008 0.0099058307 -1.1245034 0 -1.1357086 0 -1.1245034 - 50 0.01 0.0098640297 -1.3750538 0 -1.3863265 0 -1.3750538 - 60 0.012 0.0098220535 -1.6252482 0 -1.6365919 0 -1.6252482 - 70 0.014 0.0097798823 -1.8750914 0 -1.8865086 0 -1.8750914 - 80 0.016 0.0097374973 -2.1245886 0 -2.1360814 0 -2.1245886 - 90 0.018 0.0096948808 -2.3737458 0 -2.3853155 0 -2.3737458 - 100 0.02 0.0096520159 -2.6225698 0 -2.6342168 0 -2.6225698 - 110 0.022 0.0096088866 -2.8710677 0 -2.8827919 0 -2.8710677 - 120 0.024 0.0095654776 -3.1192469 0 -3.1310475 0 -3.1192469 - 130 0.026 0.0095217746 -3.367115 0 -3.3789906 0 -3.367115 - 140 0.028 0.0094777638 -3.61468 0 -3.6266285 0 -3.61468 - 150 0.03 0.0094334323 -3.8619496 0 -3.8739683 0 -3.8619496 - 160 0.032 0.0093887679 -4.1089316 0 -4.1210173 0 -4.1089316 - 170 0.034 0.0093437596 -4.3556335 0 -4.3677824 0 -4.3556335 - 180 0.036 0.0092983972 -4.6020625 0 -4.6142704 0 -4.6020625 - 190 0.038 0.0092526717 -4.8482255 0 -4.8604877 0 -4.8482255 - 200 0.04 0.0092065755 -5.0941291 0 -5.1064403 0 -5.0941291 - 210 0.042 0.0091601024 -5.3397792 0 -5.3521339 0 -5.3397792 - 220 0.044 0.0091132478 -5.5851813 0 -5.5975736 0 -5.5851813 - 230 0.046 0.0090660089 -5.8303404 0 -5.842764 0 -5.8303404 - 240 0.048 0.0090183847 -6.0752609 0 -6.0877092 0 -6.0752609 - 250 0.05 0.0089703764 -6.3199467 0 -6.3324129 0 -6.3199467 - 260 0.052 0.0089219873 -6.5644011 0 -6.5768782 0 -6.5644011 - 270 0.054 0.0088732228 -6.808627 0 -6.8211078 0 -6.808627 - 280 0.056 0.0088240906 -7.0526266 0 -7.0651038 0 -7.0526266 - 290 0.058 0.0087746006 -7.296402 0 -7.3088682 0 -7.296402 - 300 0.06 0.0087247648 -7.5399545 0 -7.5524024 0 -7.5399545 - 310 0.062 0.0086745976 -7.7832854 0 -7.7957077 0 -7.7832854 - 320 0.064 0.0086241149 -8.0263956 0 -8.038785 0 -8.0263956 - 330 0.066 0.008573335 -8.2692858 0 -8.281635 0 -8.2692858 - 340 0.068 0.0085222772 -8.5119564 0 -8.5242586 0 -8.5119564 - 350 0.07 0.0084709627 -8.7544078 0 -8.7666562 0 -8.7544078 - 360 0.072 0.0084194136 -8.9966403 0 -9.0088285 0 -8.9966403 - 370 0.074 0.008367653 -9.2386543 0 -9.2507761 0 -9.2386543 - 380 0.076 0.0083157046 -9.4804501 0 -9.4924997 0 -9.4804501 - 390 0.078 0.0082635925 -9.7220281 0 -9.7340001 0 -9.7220281 - 400 0.08 0.0082113412 -9.9633888 0 -9.9752784 0 -9.9633888 - 410 0.082 0.0081589747 -10.204533 0 -10.216336 0 -10.204533 - 420 0.084 0.0081065173 -10.445462 0 -10.457173 0 -10.445462 - 430 0.086 0.0080539925 -10.686176 0 -10.697793 0 -10.686176 - 440 0.088 0.0080014235 -10.926676 0 -10.938197 0 -10.926676 - 450 0.09 0.0079488329 -11.166966 0 -11.178387 0 -11.166966 - 460 0.092 0.0078962427 -11.407045 0 -11.418366 0 -11.407045 - 470 0.094 0.0078436743 -11.646917 0 -11.658136 0 -11.646917 - 480 0.096 0.0077911486 -11.886583 0 -11.8977 0 -11.886583 - 490 0.098 0.007738686 -12.126047 0 -12.137063 0 -12.126047 - 500 0.1 0.0076863062 -12.365311 0 -12.376226 0 -12.365311 -Loop time of 3.94852 on 4 procs for 500 steps with 5780 atoms - -Performance: 2.188 ns/day, 10.968 hours/ns, 126.630 timesteps/s -99.9% CPU use with 4 MPI tasks x no OpenMP threads - -MPI task timing breakdown: -Section | min time | avg time | max time |%varavg| %total ---------------------------------------------------------------- -Pair | 0.97416 | 0.98668 | 1.0022 | 1.0 | 24.99 -Neigh | 0 | 0 | 0 | 0.0 | 0.00 -Comm | 0.032618 | 0.04948 | 0.062614 | 5.0 | 1.25 -Output | 0.014166 | 0.014229 | 0.014374 | 0.1 | 0.36 -Modify | 2.8947 | 2.8957 | 2.8965 | 0.0 | 73.34 -Other | | 0.002385 | | | 0.06 - -Nlocal: 1445 ave 1445 max 1445 min -Histogram: 4 0 0 0 0 0 0 0 0 0 -Nghost: 555 ave 555 max 555 min -Histogram: 4 0 0 0 0 0 0 0 0 0 -Neighs: 0 ave 0 max 0 min -Histogram: 4 0 0 0 0 0 0 0 0 0 -FullNghs: 23120 ave 23120 max 23120 min -Histogram: 4 0 0 0 0 0 0 0 0 0 - -Total # of neighbors = 92480 -Ave neighs/atom = 16 -Neighbor list builds = 0 -Dangerous builds = 0 - -Please see the log.cite file for references relevant to this simulation - -Total wall time: 0:00:03 diff --git a/examples/SPIN/bfo/log.30Mar20.spin.bfo.g++.1 b/examples/SPIN/bfo/log.30Mar20.spin.bfo.g++.1 new file mode 100644 index 0000000000..f80e8d93fd --- /dev/null +++ b/examples/SPIN/bfo/log.30Mar20.spin.bfo.g++.1 @@ -0,0 +1,127 @@ +LAMMPS (18 Feb 2020) +# layer sc iron atoms (in the [001] plane) in bismuth oxide + +units metal +atom_style spin +dimension 3 +boundary p p f + +# necessary for the serial algorithm (sametag) +atom_modify map array + +lattice sc 3.96 +Lattice spacing in x,y,z = 3.96 3.96 3.96 +region box block 0.0 34.0 0.0 34.0 0.0 5.0 +create_box 1 box +Created orthogonal box = (0 0 0) to (134.64 134.64 19.8) + 1 by 1 by 1 MPI processor grid +create_atoms 1 box +Created 5780 atoms + create_atoms CPU = 0.00285411 secs + +# setting mass, mag. moments, and interactions for bfo + +mass 1 1.0 +set group all spin/random 11 2.50 + 5780 settings made for spin/random + +#pair_style hybrid/overlay spin/exchange 6.0 spin/magelec 4.5 +pair_style hybrid/overlay spin/exchange 6.0 spin/magelec 4.5 spin/dmi 4.5 +pair_coeff * * spin/exchange exchange 6.0 -0.01575 0.0 1.965 +pair_coeff * * spin/magelec magelec 4.5 0.000109 1.0 1.0 1.0 +pair_coeff * * spin/dmi dmi 4.5 0.00005 1.0 1.0 1.0 + +neighbor 0.1 bin +neigh_modify every 10 check yes delay 20 + +fix 1 all precession/spin zeeman 0.0 0.0 0.0 1.0 anisotropy 0.00033 0.0 0.0 1.0 +fix_modify 1 energy yes +fix 2 all langevin/spin 0.0 0.1 21 +fix 3 all nve/spin lattice frozen + +timestep 0.0002 + +compute out_mag all spin +compute out_pe all pe +compute out_ke all ke +compute out_temp all temp + +variable magz equal c_out_mag[3] +variable magnorm equal c_out_mag[4] +variable emag equal c_out_mag[5] +variable tmag equal c_out_mag[6] + +thermo_style custom step time v_magnorm pe v_emag temp etotal +thermo 50 + +compute outsp all property/atom spx spy spz sp fmx fmy fmz +dump 1 all custom 100 dump_bfo.lammpstrj type x y z c_outsp[1] c_outsp[2] c_outsp[3] + +run 500 +Neighbor list info ... + update every 10 steps, delay 20 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 6.1 + ghost atom cutoff = 6.1 + binsize = 3.05, bins = 45 45 7 + 3 neighbor lists, perpetual/occasional/extra = 3 0 0 + (1) pair spin/exchange, perpetual + attributes: full, newton on + pair build: full/bin/atomonly + stencil: full/bin/3d + bin: standard + (2) pair spin/magelec, perpetual, copy from (1) + attributes: full, newton on + pair build: copy + stencil: none + bin: none + (3) pair spin/dmi, perpetual, copy from (1) + attributes: full, newton on + pair build: copy + stencil: none + bin: none +Per MPI rank memory allocation (min/avg/max) = 8.154 | 8.154 | 8.154 Mbytes +Step Time v_magnorm PotEng v_emag Temp TotEng + 0 0 0.010071723 -0.75067967 -0.75067967 0 -0.75067967 + 50 0.01 0.0098309931 -2.0051482 -2.0051482 0 -2.0051482 + 100 0.02 0.0095903925 -3.2508773 -3.2508773 0 -3.2508773 + 150 0.03 0.0093489139 -4.4890121 -4.4890121 0 -4.4890121 + 200 0.04 0.0091051407 -5.7205892 -5.7205892 0 -5.7205892 + 250 0.05 0.0088575394 -6.9463058 -6.9463058 0 -6.9463058 + 300 0.06 0.0086053184 -8.166564 -8.166564 0 -8.166564 + 350 0.07 0.0083490959 -9.3816392 -9.3816392 0 -9.3816392 + 400 0.08 0.0080907742 -10.591802 -10.591802 0 -10.591802 + 450 0.09 0.0078327124 -11.797322 -11.797322 0 -11.797322 + 500 0.1 0.0075768488 -12.998416 -12.998416 0 -12.998416 +Loop time of 13.6445 on 1 procs for 500 steps with 5780 atoms + +Performance: 0.633 ns/day, 37.901 hours/ns, 36.645 timesteps/s +100.0% CPU use with 1 MPI tasks x no OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 3.7965 | 3.7965 | 3.7965 | 0.0 | 27.82 +Neigh | 0 | 0 | 0 | 0.0 | 0.00 +Comm | 0.011697 | 0.011697 | 0.011697 | 0.0 | 0.09 +Output | 0.049061 | 0.049061 | 0.049061 | 0.0 | 0.36 +Modify | 9.7741 | 9.7741 | 9.7741 | 0.0 | 71.63 +Other | | 0.01323 | | | 0.10 + +Nlocal: 5780 ave 5780 max 5780 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 1065 ave 1065 max 1065 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: 92480 ave 92480 max 92480 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 92480 +Ave neighs/atom = 16 +Neighbor list builds = 0 +Dangerous builds = 0 + +Please see the log.cite file for references relevant to this simulation + +Total wall time: 0:00:13 diff --git a/examples/SPIN/bfo/log.30Mar20.spin.bfo.g++.4 b/examples/SPIN/bfo/log.30Mar20.spin.bfo.g++.4 new file mode 100644 index 0000000000..d66ddd50d0 --- /dev/null +++ b/examples/SPIN/bfo/log.30Mar20.spin.bfo.g++.4 @@ -0,0 +1,127 @@ +LAMMPS (18 Feb 2020) +# layer sc iron atoms (in the [001] plane) in bismuth oxide + +units metal +atom_style spin +dimension 3 +boundary p p f + +# necessary for the serial algorithm (sametag) +atom_modify map array + +lattice sc 3.96 +Lattice spacing in x,y,z = 3.96 3.96 3.96 +region box block 0.0 34.0 0.0 34.0 0.0 5.0 +create_box 1 box +Created orthogonal box = (0 0 0) to (134.64 134.64 19.8) + 2 by 2 by 1 MPI processor grid +create_atoms 1 box +Created 5780 atoms + create_atoms CPU = 0.00101209 secs + +# setting mass, mag. moments, and interactions for bfo + +mass 1 1.0 +set group all spin/random 11 2.50 + 5780 settings made for spin/random + +#pair_style hybrid/overlay spin/exchange 6.0 spin/magelec 4.5 +pair_style hybrid/overlay spin/exchange 6.0 spin/magelec 4.5 spin/dmi 4.5 +pair_coeff * * spin/exchange exchange 6.0 -0.01575 0.0 1.965 +pair_coeff * * spin/magelec magelec 4.5 0.000109 1.0 1.0 1.0 +pair_coeff * * spin/dmi dmi 4.5 0.00005 1.0 1.0 1.0 + +neighbor 0.1 bin +neigh_modify every 10 check yes delay 20 + +fix 1 all precession/spin zeeman 0.0 0.0 0.0 1.0 anisotropy 0.00033 0.0 0.0 1.0 +fix_modify 1 energy yes +fix 2 all langevin/spin 0.0 0.1 21 +fix 3 all nve/spin lattice frozen + +timestep 0.0002 + +compute out_mag all spin +compute out_pe all pe +compute out_ke all ke +compute out_temp all temp + +variable magz equal c_out_mag[3] +variable magnorm equal c_out_mag[4] +variable emag equal c_out_mag[5] +variable tmag equal c_out_mag[6] + +thermo_style custom step time v_magnorm pe v_emag temp etotal +thermo 50 + +compute outsp all property/atom spx spy spz sp fmx fmy fmz +dump 1 all custom 100 dump_bfo.lammpstrj type x y z c_outsp[1] c_outsp[2] c_outsp[3] + +run 500 +Neighbor list info ... + update every 10 steps, delay 20 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 6.1 + ghost atom cutoff = 6.1 + binsize = 3.05, bins = 45 45 7 + 3 neighbor lists, perpetual/occasional/extra = 3 0 0 + (1) pair spin/exchange, perpetual + attributes: full, newton on + pair build: full/bin/atomonly + stencil: full/bin/3d + bin: standard + (2) pair spin/magelec, perpetual, copy from (1) + attributes: full, newton on + pair build: copy + stencil: none + bin: none + (3) pair spin/dmi, perpetual, copy from (1) + attributes: full, newton on + pair build: copy + stencil: none + bin: none +Per MPI rank memory allocation (min/avg/max) = 7.744 | 7.744 | 7.744 Mbytes +Step Time v_magnorm PotEng v_emag Temp TotEng + 0 0 0.010071723 -0.75067967 -0.75067967 0 -0.75067967 + 50 0.01 0.009830993 -2.0051482 -2.0051482 0 -2.0051482 + 100 0.02 0.0095903924 -3.2508773 -3.2508773 0 -3.2508773 + 150 0.03 0.0093489138 -4.4890121 -4.4890121 0 -4.4890121 + 200 0.04 0.0091051405 -5.7205892 -5.7205892 0 -5.7205892 + 250 0.05 0.0088575392 -6.9463058 -6.9463058 0 -6.9463058 + 300 0.06 0.0086053183 -8.166564 -8.166564 0 -8.166564 + 350 0.07 0.0083490958 -9.3816392 -9.3816392 0 -9.3816392 + 400 0.08 0.008090774 -10.591802 -10.591802 0 -10.591802 + 450 0.09 0.0078327123 -11.797322 -11.797322 0 -11.797322 + 500 0.1 0.0075768487 -12.998416 -12.998416 0 -12.998416 +Loop time of 3.88882 on 4 procs for 500 steps with 5780 atoms + +Performance: 2.222 ns/day, 10.802 hours/ns, 128.574 timesteps/s +100.0% CPU use with 4 MPI tasks x no OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 0.94501 | 0.96064 | 0.98328 | 1.7 | 24.70 +Neigh | 0 | 0 | 0 | 0.0 | 0.00 +Comm | 0.025942 | 0.051198 | 0.068365 | 7.9 | 1.32 +Output | 0.01292 | 0.012939 | 0.012979 | 0.0 | 0.33 +Modify | 2.8601 | 2.8619 | 2.8649 | 0.1 | 73.59 +Other | | 0.002178 | | | 0.06 + +Nlocal: 1445 ave 1445 max 1445 min +Histogram: 4 0 0 0 0 0 0 0 0 0 +Nghost: 555 ave 555 max 555 min +Histogram: 4 0 0 0 0 0 0 0 0 0 +Neighs: 0 ave 0 max 0 min +Histogram: 4 0 0 0 0 0 0 0 0 0 +FullNghs: 23120 ave 23120 max 23120 min +Histogram: 4 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 92480 +Ave neighs/atom = 16 +Neighbor list builds = 0 +Dangerous builds = 0 + +Please see the log.cite file for references relevant to this simulation + +Total wall time: 0:00:03 diff --git a/examples/SPIN/cobalt_fcc/log.19Nov19.spin.cobalt_fcc.g++.1 b/examples/SPIN/cobalt_fcc/log.19Nov19.spin.cobalt_fcc.g++.1 deleted file mode 100644 index 06774d0858..0000000000 --- a/examples/SPIN/cobalt_fcc/log.19Nov19.spin.cobalt_fcc.g++.1 +++ /dev/null @@ -1,142 +0,0 @@ -LAMMPS (30 Oct 2019) -# fcc cobalt in a 3d periodic box - -clear -units metal -atom_style spin - -dimension 3 -boundary p p p - -# necessary for the serial algorithm (sametag) -atom_modify map array - -lattice fcc 3.54 -Lattice spacing in x,y,z = 3.54 3.54 3.54 -region box block 0.0 5.0 0.0 5.0 0.0 5.0 -create_box 1 box -Created orthogonal box = (0 0 0) to (17.7 17.7 17.7) - 1 by 1 by 1 MPI processor grid -create_atoms 1 box -Created 500 atoms - create_atoms CPU = 0.000470161 secs - -# setting mass, mag. moments, and interactions for fcc cobalt - -mass 1 58.93 - -#set group all spin/random 31 1.72 -set group all spin 1.72 0.0 0.0 1.0 - 500 settings made for spin -velocity all create 100 4928459 rot yes dist gaussian - -pair_style hybrid/overlay eam/alloy spin/exchange 4.0 -pair_coeff * * eam/alloy Co_PurjaPun_2012.eam.alloy Co -pair_coeff * * spin/exchange exchange 4.0 0.0446928 0.003496 1.4885 - -neighbor 0.1 bin -neigh_modify every 10 check yes delay 20 - -fix 1 all precession/spin zeeman 1.0 0.0 0.0 1.0 -fix_modify 1 energy yes - -fix 2 all langevin/spin 0.0 0.0 21 - -fix 3 all nve/spin lattice moving -timestep 0.0001 - -# compute and output options - -compute out_mag all spin -compute out_pe all pe -compute out_ke all ke -compute out_temp all temp - -thermo_style custom f_1 - -variable magx equal c_out_mag[1] -variable magy equal c_out_mag[2] -variable magz equal c_out_mag[3] -variable magnorm equal c_out_mag[4] -variable emag equal c_out_mag[5] -variable tmag equal c_out_mag[6] - -thermo_style custom step time f_1 v_magx v_magy v_magnorm v_emag temp etotal -thermo 50 - -# compute outsp all property/atom spx spy spz sp fmx fmy fmz -# dump 1 all custom 100 dump_cobalt_fcc.lammpstrj type x y z c_outsp[1] c_outsp[2] c_outsp[3] - -run 1000 -Neighbor list info ... - update every 10 steps, delay 20 steps, check yes - max neighbors/atom: 2000, page size: 100000 - master list distance cutoff = 6.59954 - ghost atom cutoff = 6.59954 - binsize = 3.29977, bins = 6 6 6 - 2 neighbor lists, perpetual/occasional/extra = 2 0 0 - (1) pair eam/alloy, perpetual, half/full from (2) - attributes: half, newton on - pair build: halffull/newton - stencil: none - bin: none - (2) pair spin/exchange, perpetual - attributes: full, newton on - pair build: full/bin/atomonly - stencil: full/bin/3d - bin: standard -Per MPI rank memory allocation (min/avg/max) = 5.718 | 5.718 | 5.718 Mbytes -Step Time f_1 v_magx v_magy v_magnorm v_emag Temp TotEng - 0 0 -0.099570972 0 0 1 -188.09051 100.00543 -2278.6175 - 50 0.005 -0.099570972 0 0 1 -188.09048 95.094679 -2278.6175 - 100 0.01 -0.099570972 0 0 1 -188.09007 81.578321 -2278.6177 - 150 0.015 -0.099570972 0 0 1 -188.08848 62.802727 -2278.6185 - 200 0.02 -0.099570972 0 0 1 -188.08487 43.35108 -2278.6203 - 250 0.025 -0.099570972 0 0 1 -188.07877 27.749821 -2278.6233 - 300 0.03 -0.099570972 0 0 1 -188.07054 19.149389 -2278.6274 - 350 0.035 -0.099570972 0 0 1 -188.06135 18.453387 -2278.632 - 400 0.04 -0.099570972 0 0 1 -188.053 24.249423 -2278.6362 - 450 0.045 -0.099570972 0 0 1 -188.04742 33.548008 -2278.639 - 500 0.05 -0.099570972 0 0 1 -188.04604 42.973172 -2278.6397 - 550 0.055 -0.099570972 0 0 1 -188.04935 49.902539 -2278.638 - 600 0.06 -0.099570972 0 0 1 -188.0567 53.166772 -2278.6344 - 650 0.065 -0.099570972 0 0 1 -188.06642 53.153416 -2278.6295 - 700 0.07 -0.099570972 0 0 1 -188.07628 51.377187 -2278.6246 - 750 0.075 -0.099570972 0 0 1 -188.08415 49.725449 -2278.6206 - 800 0.08 -0.099570972 0 0 1 -188.08857 49.663576 -2278.6184 - 850 0.085 -0.099570972 0 0 1 -188.0891 51.681567 -2278.6182 - 900 0.09 -0.099570972 0 0 1 -188.08636 55.166554 -2278.6195 - 950 0.095 -0.099570972 0 0 1 -188.08174 58.718232 -2278.6218 - 1000 0.1 -0.099570972 0 0 1 -188.0769 60.75567 -2278.6243 -Loop time of 4.6196 on 1 procs for 1000 steps with 500 atoms - -Performance: 1.870 ns/day, 12.832 hours/ns, 216.469 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 | 2.3116 | 2.3116 | 2.3116 | 0.0 | 50.04 -Neigh | 0.011227 | 0.011227 | 0.011227 | 0.0 | 0.24 -Comm | 0.032837 | 0.032837 | 0.032837 | 0.0 | 0.71 -Output | 0.00039411 | 0.00039411 | 0.00039411 | 0.0 | 0.01 -Modify | 2.2584 | 2.2584 | 2.2584 | 0.0 | 48.89 -Other | | 0.005152 | | | 0.11 - -Nlocal: 500 ave 500 max 500 min -Histogram: 1 0 0 0 0 0 0 0 0 0 -Nghost: 1956 ave 1956 max 1956 min -Histogram: 1 0 0 0 0 0 0 0 0 0 -Neighs: 24065 ave 24065 max 24065 min -Histogram: 1 0 0 0 0 0 0 0 0 0 -FullNghs: 48130 ave 48130 max 48130 min -Histogram: 1 0 0 0 0 0 0 0 0 0 - -Total # of neighbors = 48130 -Ave neighs/atom = 96.26 -Neighbor list builds = 6 -Dangerous builds = 0 - -Please see the log.cite file for references relevant to this simulation - -Total wall time: 0:00:04 diff --git a/examples/SPIN/cobalt_fcc/log.19Nov19.spin.cobalt_fcc.g++.4 b/examples/SPIN/cobalt_fcc/log.19Nov19.spin.cobalt_fcc.g++.4 deleted file mode 100644 index 331ed60315..0000000000 --- a/examples/SPIN/cobalt_fcc/log.19Nov19.spin.cobalt_fcc.g++.4 +++ /dev/null @@ -1,142 +0,0 @@ -LAMMPS (30 Oct 2019) -# fcc cobalt in a 3d periodic box - -clear -units metal -atom_style spin - -dimension 3 -boundary p p p - -# necessary for the serial algorithm (sametag) -atom_modify map array - -lattice fcc 3.54 -Lattice spacing in x,y,z = 3.54 3.54 3.54 -region box block 0.0 5.0 0.0 5.0 0.0 5.0 -create_box 1 box -Created orthogonal box = (0 0 0) to (17.7 17.7 17.7) - 1 by 2 by 2 MPI processor grid -create_atoms 1 box -Created 500 atoms - create_atoms CPU = 0.000808001 secs - -# setting mass, mag. moments, and interactions for fcc cobalt - -mass 1 58.93 - -#set group all spin/random 31 1.72 -set group all spin 1.72 0.0 0.0 1.0 - 500 settings made for spin -velocity all create 100 4928459 rot yes dist gaussian - -pair_style hybrid/overlay eam/alloy spin/exchange 4.0 -pair_coeff * * eam/alloy Co_PurjaPun_2012.eam.alloy Co -pair_coeff * * spin/exchange exchange 4.0 0.0446928 0.003496 1.4885 - -neighbor 0.1 bin -neigh_modify every 10 check yes delay 20 - -fix 1 all precession/spin zeeman 1.0 0.0 0.0 1.0 -fix_modify 1 energy yes - -fix 2 all langevin/spin 0.0 0.0 21 - -fix 3 all nve/spin lattice moving -timestep 0.0001 - -# compute and output options - -compute out_mag all spin -compute out_pe all pe -compute out_ke all ke -compute out_temp all temp - -thermo_style custom f_1 - -variable magx equal c_out_mag[1] -variable magy equal c_out_mag[2] -variable magz equal c_out_mag[3] -variable magnorm equal c_out_mag[4] -variable emag equal c_out_mag[5] -variable tmag equal c_out_mag[6] - -thermo_style custom step time f_1 v_magx v_magy v_magnorm v_emag temp etotal -thermo 50 - -# compute outsp all property/atom spx spy spz sp fmx fmy fmz -# dump 1 all custom 100 dump_cobalt_fcc.lammpstrj type x y z c_outsp[1] c_outsp[2] c_outsp[3] - -run 1000 -Neighbor list info ... - update every 10 steps, delay 20 steps, check yes - max neighbors/atom: 2000, page size: 100000 - master list distance cutoff = 6.59954 - ghost atom cutoff = 6.59954 - binsize = 3.29977, bins = 6 6 6 - 2 neighbor lists, perpetual/occasional/extra = 2 0 0 - (1) pair eam/alloy, perpetual, half/full from (2) - attributes: half, newton on - pair build: halffull/newton - stencil: none - bin: none - (2) pair spin/exchange, perpetual - attributes: full, newton on - pair build: full/bin/atomonly - stencil: full/bin/3d - bin: standard -Per MPI rank memory allocation (min/avg/max) = 5.664 | 5.664 | 5.664 Mbytes -Step Time f_1 v_magx v_magy v_magnorm v_emag Temp TotEng - 0 0 -0.099570972 0 0 1 -188.09051 100.00543 -2372.6129 - 50 0.005 -0.099570972 0 0 1 -188.09036 95.174807 -2372.6129 - 100 0.01 -0.099570972 0 0 1 -188.08965 81.854304 -2372.6129 - 150 0.015 -0.099570972 0 0 1 -188.0877 63.270938 -2372.6129 - 200 0.02 -0.099570972 0 0 1 -188.08381 43.867262 -2372.6129 - 250 0.025 -0.099570972 0 0 1 -188.07767 28.075261 -2372.6129 - 300 0.03 -0.099570972 0 0 1 -188.06966 19.046222 -2372.6129 - 350 0.035 -0.099570972 0 0 1 -188.06096 17.79071 -2372.6129 - 400 0.04 -0.099570972 0 0 1 -188.05326 23.079994 -2372.6129 - 450 0.045 -0.099570972 0 0 1 -188.04831 32.127316 -2372.6129 - 500 0.05 -0.099570972 0 0 1 -188.04737 41.709644 -2372.6129 - 550 0.055 -0.099570972 0 0 1 -188.05082 49.246292 -2372.6129 - 600 0.06 -0.099570972 0 0 1 -188.05795 53.465535 -2372.6129 - 650 0.065 -0.099570972 0 0 1 -188.06713 54.522857 -2372.6129 - 700 0.07 -0.099570972 0 0 1 -188.07626 53.635521 -2372.6129 - 750 0.075 -0.099570972 0 0 1 -188.08332 52.419678 -2372.6129 - 800 0.08 -0.099570972 0 0 1 -188.08696 52.176558 -2372.6129 - 850 0.085 -0.099570972 0 0 1 -188.0868 53.380592 -2372.6129 - 900 0.09 -0.099570972 0 0 1 -188.08348 55.551378 -2372.6129 - 950 0.095 -0.099570972 0 0 1 -188.07838 57.540047 -2372.6129 - 1000 0.1 -0.099570972 0 0 1 -188.07314 58.088674 -2372.6129 -Loop time of 2.54753 on 4 procs for 1000 steps with 500 atoms - -Performance: 3.392 ns/day, 7.076 hours/ns, 392.538 timesteps/s -100.0% CPU use with 4 MPI tasks x no OpenMP threads - -MPI task timing breakdown: -Section | min time | avg time | max time |%varavg| %total ---------------------------------------------------------------- -Pair | 0.62017 | 0.6485 | 0.66275 | 2.1 | 25.46 -Neigh | 0.0027115 | 0.0029724 | 0.0030868 | 0.3 | 0.12 -Comm | 0.095047 | 0.1102 | 0.13819 | 5.0 | 4.33 -Output | 0.00039029 | 0.00042999 | 0.00049996 | 0.0 | 0.02 -Modify | 1.7801 | 1.7834 | 1.7852 | 0.1 | 70.01 -Other | | 0.002028 | | | 0.08 - -Nlocal: 125 ave 133 max 116 min -Histogram: 1 0 0 0 0 2 0 0 0 1 -Nghost: 1099 ave 1108 max 1091 min -Histogram: 1 0 0 0 2 0 0 0 0 1 -Neighs: 6032.5 ave 6417 max 5489 min -Histogram: 1 0 0 0 0 0 1 1 0 1 -FullNghs: 12065 ave 13062 max 10970 min -Histogram: 1 0 0 0 0 2 0 0 0 1 - -Total # of neighbors = 48260 -Ave neighs/atom = 96.52 -Neighbor list builds = 6 -Dangerous builds = 0 - -Please see the log.cite file for references relevant to this simulation - -Total wall time: 0:00:02 diff --git a/examples/SPIN/cobalt_fcc/log.30Mar20.spin.cobalt_fcc.g++.1 b/examples/SPIN/cobalt_fcc/log.30Mar20.spin.cobalt_fcc.g++.1 new file mode 100644 index 0000000000..15cf17fba2 --- /dev/null +++ b/examples/SPIN/cobalt_fcc/log.30Mar20.spin.cobalt_fcc.g++.1 @@ -0,0 +1,140 @@ +LAMMPS (18 Feb 2020) +# fcc cobalt in a 3d periodic box + +clear +units metal +atom_style spin + +dimension 3 +boundary p p p + +# necessary for the serial algorithm (sametag) +atom_modify map array + +lattice fcc 3.54 +Lattice spacing in x,y,z = 3.54 3.54 3.54 +region box block 0.0 5.0 0.0 5.0 0.0 5.0 +create_box 1 box +Created orthogonal box = (0 0 0) to (17.7 17.7 17.7) + 1 by 1 by 1 MPI processor grid +create_atoms 1 box +Created 500 atoms + create_atoms CPU = 0.000594854 secs + +# setting mass, mag. moments, and interactions for fcc cobalt + +mass 1 58.93 + +#set group all spin/random 31 1.72 +set group all spin 1.72 0.0 0.0 1.0 + 500 settings made for spin +velocity all create 100 4928459 rot yes dist gaussian + +pair_style hybrid/overlay eam/alloy spin/exchange 4.0 +pair_coeff * * eam/alloy Co_PurjaPun_2012.eam.alloy Co +pair_coeff * * spin/exchange exchange 4.0 0.0446928 0.003496 1.4885 + +neighbor 0.1 bin +neigh_modify every 10 check yes delay 20 + +fix 1 all precession/spin zeeman 1.0 0.0 0.0 1.0 +fix_modify 1 energy yes + +fix 2 all langevin/spin 0.0 0.0 21 + +fix 3 all nve/spin lattice moving +timestep 0.0001 + +# compute and output options + +compute out_mag all spin +compute out_pe all pe +compute out_ke all ke +compute out_temp all temp + +variable magx equal c_out_mag[1] +variable magy equal c_out_mag[2] +variable magz equal c_out_mag[3] +variable magnorm equal c_out_mag[4] +variable emag equal c_out_mag[5] +variable tmag equal c_out_mag[6] + +thermo_style custom step time v_magx v_magy v_magnorm pe v_emag temp etotal +thermo 50 + +# compute outsp all property/atom spx spy spz sp fmx fmy fmz +# dump 1 all custom 100 dump_cobalt_fcc.lammpstrj type x y z c_outsp[1] c_outsp[2] c_outsp[3] + +run 1000 +Neighbor list info ... + update every 10 steps, delay 20 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 6.59954 + ghost atom cutoff = 6.59954 + binsize = 3.29977, bins = 6 6 6 + 2 neighbor lists, perpetual/occasional/extra = 2 0 0 + (1) pair eam/alloy, perpetual, half/full from (2) + attributes: half, newton on + pair build: halffull/newton + stencil: none + bin: none + (2) pair spin/exchange, perpetual + attributes: full, newton on + pair build: full/bin/atomonly + stencil: full/bin/3d + bin: standard +Per MPI rank memory allocation (min/avg/max) = 5.718 | 5.718 | 5.718 Mbytes +Step Time v_magx v_magy v_magnorm PotEng v_emag Temp TotEng + 0 0 0 0 1 -2379.0634 -188.09051 100.00543 -2372.6129 + 50 0.005 0 0 1 -2378.7466 -188.09048 95.094679 -2372.6129 + 100 0.01 0 0 1 -2377.8748 -188.09007 81.578321 -2372.6129 + 150 0.015 0 0 1 -2376.6637 -188.08848 62.802727 -2372.6129 + 200 0.02 0 0 1 -2375.4091 -188.08487 43.35108 -2372.6129 + 250 0.025 0 0 1 -2374.4028 -188.07877 27.749821 -2372.6129 + 300 0.03 0 0 1 -2373.8481 -188.07054 19.149389 -2372.6129 + 350 0.035 0 0 1 -2373.8032 -188.06135 18.453387 -2372.6129 + 400 0.04 0 0 1 -2374.177 -188.053 24.249423 -2372.6129 + 450 0.045 0 0 1 -2374.7768 -188.04742 33.548008 -2372.6129 + 500 0.05 0 0 1 -2375.3847 -188.04604 42.973172 -2372.6129 + 550 0.055 0 0 1 -2375.8317 -188.04935 49.902539 -2372.6129 + 600 0.06 0 0 1 -2376.0422 -188.0567 53.166772 -2372.6129 + 650 0.065 0 0 1 -2376.0414 -188.06642 53.153416 -2372.6129 + 700 0.07 0 0 1 -2375.9268 -188.07628 51.377187 -2372.6129 + 750 0.075 0 0 1 -2375.8203 -188.08415 49.725449 -2372.6129 + 800 0.08 0 0 1 -2375.8163 -188.08857 49.663576 -2372.6129 + 850 0.085 0 0 1 -2375.9464 -188.0891 51.681567 -2372.6129 + 900 0.09 0 0 1 -2376.1712 -188.08636 55.166554 -2372.6129 + 950 0.095 0 0 1 -2376.4003 -188.08174 58.718232 -2372.6129 + 1000 0.1 0 0 1 -2376.5317 -188.0769 60.75567 -2372.6129 +Loop time of 4.59877 on 1 procs for 1000 steps with 500 atoms + +Performance: 1.879 ns/day, 12.774 hours/ns, 217.449 timesteps/s +100.0% CPU use with 1 MPI tasks x no OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 2.2974 | 2.2974 | 2.2974 | 0.0 | 49.96 +Neigh | 0.011754 | 0.011754 | 0.011754 | 0.0 | 0.26 +Comm | 0.034065 | 0.034065 | 0.034065 | 0.0 | 0.74 +Output | 0.00037885 | 0.00037885 | 0.00037885 | 0.0 | 0.01 +Modify | 2.2502 | 2.2502 | 2.2502 | 0.0 | 48.93 +Other | | 0.005026 | | | 0.11 + +Nlocal: 500 ave 500 max 500 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 1956 ave 1956 max 1956 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 24065 ave 24065 max 24065 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +FullNghs: 48130 ave 48130 max 48130 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 48130 +Ave neighs/atom = 96.26 +Neighbor list builds = 6 +Dangerous builds = 0 + +Please see the log.cite file for references relevant to this simulation + +Total wall time: 0:00:04 diff --git a/examples/SPIN/cobalt_fcc/log.30Mar20.spin.cobalt_fcc.g++.4 b/examples/SPIN/cobalt_fcc/log.30Mar20.spin.cobalt_fcc.g++.4 new file mode 100644 index 0000000000..d1df7975d9 --- /dev/null +++ b/examples/SPIN/cobalt_fcc/log.30Mar20.spin.cobalt_fcc.g++.4 @@ -0,0 +1,140 @@ +LAMMPS (18 Feb 2020) +# fcc cobalt in a 3d periodic box + +clear +units metal +atom_style spin + +dimension 3 +boundary p p p + +# necessary for the serial algorithm (sametag) +atom_modify map array + +lattice fcc 3.54 +Lattice spacing in x,y,z = 3.54 3.54 3.54 +region box block 0.0 5.0 0.0 5.0 0.0 5.0 +create_box 1 box +Created orthogonal box = (0 0 0) to (17.7 17.7 17.7) + 1 by 2 by 2 MPI processor grid +create_atoms 1 box +Created 500 atoms + create_atoms CPU = 0.000725985 secs + +# setting mass, mag. moments, and interactions for fcc cobalt + +mass 1 58.93 + +#set group all spin/random 31 1.72 +set group all spin 1.72 0.0 0.0 1.0 + 500 settings made for spin +velocity all create 100 4928459 rot yes dist gaussian + +pair_style hybrid/overlay eam/alloy spin/exchange 4.0 +pair_coeff * * eam/alloy Co_PurjaPun_2012.eam.alloy Co +pair_coeff * * spin/exchange exchange 4.0 0.0446928 0.003496 1.4885 + +neighbor 0.1 bin +neigh_modify every 10 check yes delay 20 + +fix 1 all precession/spin zeeman 1.0 0.0 0.0 1.0 +fix_modify 1 energy yes + +fix 2 all langevin/spin 0.0 0.0 21 + +fix 3 all nve/spin lattice moving +timestep 0.0001 + +# compute and output options + +compute out_mag all spin +compute out_pe all pe +compute out_ke all ke +compute out_temp all temp + +variable magx equal c_out_mag[1] +variable magy equal c_out_mag[2] +variable magz equal c_out_mag[3] +variable magnorm equal c_out_mag[4] +variable emag equal c_out_mag[5] +variable tmag equal c_out_mag[6] + +thermo_style custom step time v_magx v_magy v_magnorm pe v_emag temp etotal +thermo 50 + +# compute outsp all property/atom spx spy spz sp fmx fmy fmz +# dump 1 all custom 100 dump_cobalt_fcc.lammpstrj type x y z c_outsp[1] c_outsp[2] c_outsp[3] + +run 1000 +Neighbor list info ... + update every 10 steps, delay 20 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 6.59954 + ghost atom cutoff = 6.59954 + binsize = 3.29977, bins = 6 6 6 + 2 neighbor lists, perpetual/occasional/extra = 2 0 0 + (1) pair eam/alloy, perpetual, half/full from (2) + attributes: half, newton on + pair build: halffull/newton + stencil: none + bin: none + (2) pair spin/exchange, perpetual + attributes: full, newton on + pair build: full/bin/atomonly + stencil: full/bin/3d + bin: standard +Per MPI rank memory allocation (min/avg/max) = 5.664 | 5.664 | 5.664 Mbytes +Step Time v_magx v_magy v_magnorm PotEng v_emag Temp TotEng + 0 0 0 0 1 -2379.0634 -188.09051 100.00543 -2372.6129 + 50 0.005 0 0 1 -2378.7518 -188.09036 95.174807 -2372.6129 + 100 0.01 0 0 1 -2377.8926 -188.08965 81.854304 -2372.6129 + 150 0.015 0 0 1 -2376.6939 -188.0877 63.270938 -2372.6129 + 200 0.02 0 0 1 -2375.4424 -188.08381 43.867262 -2372.6129 + 250 0.025 0 0 1 -2374.4238 -188.07767 28.075261 -2372.6129 + 300 0.03 0 0 1 -2373.8414 -188.06966 19.046222 -2372.6129 + 350 0.035 0 0 1 -2373.7604 -188.06096 17.79071 -2372.6129 + 400 0.04 0 0 1 -2374.1016 -188.05326 23.079994 -2372.6129 + 450 0.045 0 0 1 -2374.6852 -188.04831 32.127316 -2372.6129 + 500 0.05 0 0 1 -2375.3032 -188.04737 41.709644 -2372.6129 + 550 0.055 0 0 1 -2375.7894 -188.05082 49.246292 -2372.6129 + 600 0.06 0 0 1 -2376.0615 -188.05795 53.465535 -2372.6129 + 650 0.065 0 0 1 -2376.1297 -188.06713 54.522857 -2372.6129 + 700 0.07 0 0 1 -2376.0725 -188.07626 53.635521 -2372.6129 + 750 0.075 0 0 1 -2375.994 -188.08332 52.419678 -2372.6129 + 800 0.08 0 0 1 -2375.9783 -188.08696 52.176558 -2372.6129 + 850 0.085 0 0 1 -2376.056 -188.0868 53.380592 -2372.6129 + 900 0.09 0 0 1 -2376.196 -188.08348 55.551378 -2372.6129 + 950 0.095 0 0 1 -2376.3243 -188.07838 57.540047 -2372.6129 + 1000 0.1 0 0 1 -2376.3597 -188.07314 58.088674 -2372.6129 +Loop time of 2.55931 on 4 procs for 1000 steps with 500 atoms + +Performance: 3.376 ns/day, 7.109 hours/ns, 390.730 timesteps/s +99.9% CPU use with 4 MPI tasks x no OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 0.62562 | 0.64212 | 0.65317 | 1.3 | 25.09 +Neigh | 0.0027432 | 0.0030247 | 0.0032065 | 0.3 | 0.12 +Comm | 0.097173 | 0.10838 | 0.12453 | 3.3 | 4.23 +Output | 0.00040555 | 0.00043625 | 0.00050712 | 0.0 | 0.02 +Modify | 1.8009 | 1.8033 | 1.8049 | 0.1 | 70.46 +Other | | 0.002061 | | | 0.08 + +Nlocal: 125 ave 133 max 116 min +Histogram: 1 0 0 0 0 2 0 0 0 1 +Nghost: 1099 ave 1108 max 1091 min +Histogram: 1 0 0 0 2 0 0 0 0 1 +Neighs: 6032.5 ave 6417 max 5489 min +Histogram: 1 0 0 0 0 0 1 1 0 1 +FullNghs: 12065 ave 13062 max 10970 min +Histogram: 1 0 0 0 0 2 0 0 0 1 + +Total # of neighbors = 48260 +Ave neighs/atom = 96.52 +Neighbor list builds = 6 +Dangerous builds = 0 + +Please see the log.cite file for references relevant to this simulation + +Total wall time: 0:00:02 diff --git a/examples/SPIN/cobalt_hcp/log.19Nov19.spin.cobalt_hcp.g++.1 b/examples/SPIN/cobalt_hcp/log.19Nov19.spin.cobalt_hcp.g++.1 deleted file mode 100644 index 781e2264a7..0000000000 --- a/examples/SPIN/cobalt_hcp/log.19Nov19.spin.cobalt_hcp.g++.1 +++ /dev/null @@ -1,219 +0,0 @@ -LAMMPS (30 Oct 2019) -# hcp cobalt in a 3d periodic box - -clear -units metal -atom_style spin - -dimension 3 -boundary p p p - -# necessary for the serial algorithm (sametag) -atom_modify map array - -lattice hcp 2.5071 -Lattice spacing in x,y,z = 2.5071 4.34242 4.09408 -region box block 0.0 5.0 0.0 5.0 0.0 5.0 -create_box 1 box -Created orthogonal box = (0 0 0) to (12.5355 21.7121 20.4704) - 1 by 1 by 1 MPI processor grid -create_atoms 1 box -Created 500 atoms - create_atoms CPU = 0.00105 secs - -# setting mass, mag. moments, and interactions for hcp cobalt - -mass 1 58.93 - -set group all spin/random 31 1.72 - 500 settings made for spin/random -#set group all spin 1.72 0.0 0.0 1.0 -velocity all create 100 4928459 rot yes dist gaussian - -#pair_style hybrid/overlay eam/alloy spin/exchange 4.0 spin/neel 4.0 -pair_style hybrid/overlay eam/alloy spin/exchange 4.0 -pair_coeff * * eam/alloy Co_PurjaPun_2012.eam.alloy Co -pair_coeff * * spin/exchange exchange 4.0 -0.3593 1.135028015e-05 1.064568567 -#pair_coeff * * spin/neel neel 4.0 0.0048 0.234 1.168 2.6905 0.705 0.652 - -neighbor 0.1 bin -neigh_modify every 10 check yes delay 20 - -#fix 1 all precession/spin zeeman 1.0 0.0 0.0 1.0 -fix 1 all precession/spin anisotropy 0.01 0.0 0.0 1.0 -#fix 2 all langevin/spin 0.0 0.0 21 -fix 2 all langevin/spin 0.0 0.1 21 -fix 3 all nve/spin lattice moving - -timestep 0.0001 - - -compute out_mag all spin -compute out_pe all pe -compute out_ke all ke -compute out_temp all temp - -variable magz equal c_out_mag[3] -variable magnorm equal c_out_mag[4] -variable emag equal c_out_mag[5] -variable tmag equal c_out_mag[6] - -thermo_style custom step time v_magnorm v_emag temp press etotal -thermo 10 - -compute outsp all property/atom spx spy spz sp fmx fmy fmz -dump 1 all custom 100 dump_cobalt_hcp.lammpstrj type x y z c_outsp[1] c_outsp[2] c_outsp[3] - -run 1000 -Neighbor list info ... - update every 10 steps, delay 20 steps, check yes - max neighbors/atom: 2000, page size: 100000 - master list distance cutoff = 6.59954 - ghost atom cutoff = 6.59954 - binsize = 3.29977, bins = 4 7 7 - 2 neighbor lists, perpetual/occasional/extra = 2 0 0 - (1) pair eam/alloy, perpetual, half/full from (2) - attributes: half, newton on - pair build: halffull/newton - stencil: none - bin: none - (2) pair spin/exchange, perpetual - attributes: full, newton on - pair build: full/bin/atomonly - stencil: full/bin/3d - bin: standard -Per MPI rank memory allocation (min/avg/max) = 7.902 | 7.902 | 7.902 Mbytes -Step Time v_magnorm v_emag Temp Press TotEng - 0 0 0.076558814 -5.1073764 100.00543 -552.75983 -2189.4486 - 10 0.001 0.074494403 -6.2746901 100.01038 -1571.7966 -2190.0317 - 20 0.002 0.072366265 -7.4280779 99.885587 -2535.9845 -2190.5874 - 30 0.003 0.070127018 -8.5667999 99.611653 -3445.9872 -2191.1169 - 40 0.004 0.067755946 -9.6899272 99.164813 -4302.5715 -2191.6215 - 50 0.005 0.065261592 -10.79648 98.520535 -5107.2841 -2192.103 - 60 0.006 0.062676613 -11.885341 97.657148 -5862.7198 -2192.5638 - 70 0.007 0.060046709 -12.955115 96.558718 -6572.0571 -2193.0064 - 80 0.008 0.057417313 -14.004096 95.216748 -7238.1396 -2193.4327 - 90 0.009 0.054822275 -15.030416 93.630634 -7862.5226 -2193.8437 - 100 0.01 0.052277835 -16.032345 91.80711 -8445.2646 -2194.2391 - 110 0.011 0.049783153 -17.008652 89.759163 -8985.5937 -2194.6181 - 120 0.012 0.047326373 -17.958895 87.504922 -9483.1141 -2194.98 - 130 0.013 0.044893289 -18.883574 85.066818 -9938.8838 -2195.3247 - 140 0.014 0.042474822 -19.784052 82.471014 -10355.911 -2195.6533 - 150 0.015 0.040070404 -20.662271 79.746901 -10739.081 -2195.9677 - 160 0.016 0.037686856 -21.520294 76.926428 -11094.793 -2196.2709 - 170 0.017 0.035334961 -22.359822 74.043181 -11430.247 -2196.5659 - 180 0.018 0.033026799 -23.181822 71.131269 -11752.268 -2196.8556 - 190 0.019 0.030775544 -23.986406 68.224204 -12065.774 -2197.1412 - 200 0.02 0.028597121 -24.773013 65.353995 -12372.712 -2197.4226 - 210 0.021 0.026511775 -25.540835 62.55053 -12672.055 -2197.6975 - 220 0.022 0.02454383 -26.289327 59.841288 -12961.112 -2197.9631 - 230 0.023 0.02271918 -27.018625 57.251361 -13237.544 -2198.2165 - 240 0.024 0.021061271 -27.729714 54.80373 -13501.028 -2198.4564 - 250 0.025 0.019587072 -28.42449 52.519717 -13754.325 -2198.6833 - 260 0.026 0.018304494 -29.105398 50.419388 -14002.718 -2198.8994 - 270 0.027 0.017211977 -29.775134 48.521812 -14253.089 -2199.1079 - 280 0.028 0.016300002 -30.436204 46.845075 -14512.437 -2199.3119 - 290 0.029 0.015553519 -31.090499 45.405985 -14786.53 -2199.5143 - 300 0.03 0.014954102 -31.739026 44.219544 -15079.165 -2199.7168 - 310 0.031 0.014481189 -32.381585 43.298175 -15391.531 -2199.9198 - 320 0.032 0.014112494 -33.016984 42.650874 -15722.828 -2200.1226 - 330 0.033 0.013824206 -33.643289 42.282535 -16070.874 -2200.324 - 340 0.034 0.013591568 -34.258323 42.19365 -16433.065 -2200.5226 - 350 0.035 0.013390035 -34.860184 42.380506 -16807.186 -2200.7174 - 360 0.036 0.01319679 -35.447655 42.835832 -17191.816 -2200.9077 - 370 0.037 0.012992271 -36.020512 43.549656 -17586.676 -2201.0935 - 380 0.038 0.012761486 -36.579332 44.510078 -17991.857 -2201.2754 - 390 0.039 0.012494918 -37.125414 45.703757 -18407.738 -2201.4538 - 400 0.04 0.0121888 -37.660321 47.115967 -18834.276 -2201.6292 - 410 0.041 0.011844474 -38.185489 48.730291 -19270.674 -2201.8019 - 420 0.042 0.011466715 -38.70192 50.528119 -19715.276 -2201.9716 - 430 0.043 0.011061388 -39.21005 52.488204 -20165.66 -2202.1377 - 440 0.044 0.010633241 -39.709778 54.586528 -20618.997 -2202.2998 - 450 0.045 0.010184696 -40.200724 56.79654 -21072.538 -2202.4571 - 460 0.046 0.0097161044 -40.682449 59.089699 -21523.873 -2202.6094 - 470 0.047 0.0092271788 -41.154614 61.436133 -21970.922 -2202.7565 - 480 0.048 0.0087187266 -41.617256 63.805414 -22412.32 -2202.8989 - 490 0.049 0.0081937768 -42.070708 66.167399 -22847.061 -2203.037 - 500 0.05 0.0076576327 -42.51563 68.493235 -23274.619 -2203.172 - 510 0.051 0.0071170477 -42.952841 70.756444 -23694.559 -2203.3046 - 520 0.052 0.006579078 -43.383338 72.933996 -24106.717 -2203.4358 - 530 0.053 0.006050144 -43.807962 75.007131 -24510.338 -2203.5662 - 540 0.054 0.0055354475 -44.227552 76.961803 -24904.495 -2203.6957 - 550 0.055 0.0050386503 -44.64268 78.788647 -25287.341 -2203.8241 - 560 0.056 0.0045617699 -45.053996 80.4825 -25657.11 -2203.9504 - 570 0.057 0.0041054334 -45.461923 82.041527 -26011.443 -2204.0737 - 580 0.058 0.003669689 -45.866895 83.466142 -26348.265 -2204.1931 - 590 0.059 0.0032553824 -46.269219 84.757926 -26665.834 -2204.3077 - 600 0.06 0.0028655752 -46.669125 85.918711 -26963.24 -2204.4173 - 610 0.061 0.0025060765 -47.066641 86.95 -27240.331 -2204.5218 - 620 0.062 0.0021839971 -47.461566 87.852838 -27497.728 -2204.6218 - 630 0.063 0.0019039581 -47.853462 88.628142 -27736.503 -2204.7177 - 640 0.064 0.0016633855 -48.241747 89.277364 -27957.91 -2204.81 - 650 0.065 0.0014502904 -48.625803 89.803307 -28163.11 -2204.899 - 660 0.066 0.0012463786 -49.005026 90.210807 -28352.881 -2204.9847 - 670 0.067 0.0010345087 -49.378935 90.507107 -28527.721 -2205.0668 - 680 0.068 0.00080788134 -49.747325 90.701795 -28688.395 -2205.1453 - 690 0.069 0.000586442 -50.110227 90.80636 -28836.094 -2205.22 - 700 0.07 0.00046855102 -50.467799 90.833539 -28972.361 -2205.2911 - 710 0.071 0.00061091693 -50.82044 90.796649 -29099.44 -2205.3592 - 720 0.072 0.00094960177 -51.168606 90.709122 -29219.676 -2205.4249 - 730 0.073 0.0013742455 -51.512913 90.584346 -29335.643 -2205.4887 - 740 0.074 0.0018397629 -51.853957 90.435783 -29449.521 -2205.5511 - 750 0.075 0.0023216474 -52.192407 90.277231 -29563.316 -2205.6124 - 760 0.076 0.0028000512 -52.528883 90.123061 -29678.726 -2205.6729 - 770 0.077 0.0032569295 -52.863859 89.98824 -29797.079 -2205.7329 - 780 0.078 0.0036765431 -53.197843 89.888047 -29919.964 -2205.7925 - 790 0.079 0.0040467094 -53.530921 89.837568 -30048.271 -2205.8521 - 800 0.08 0.0043597837 -53.862938 89.850978 -30182.622 -2205.9119 - 810 0.081 0.0046129296 -54.193489 89.940884 -30323.293 -2205.9718 - 820 0.082 0.0048076151 -54.522077 90.117797 -30470.468 -2206.0321 - 830 0.083 0.004948533 -54.84813 90.389814 -30624.056 -2206.0926 - 840 0.084 0.0050423324 -55.171024 90.762454 -30783.658 -2206.1532 - 850 0.085 0.0050965581 -55.490357 91.238681 -30949.141 -2206.2139 - 860 0.086 0.0051190641 -55.805904 91.818973 -31120.5 -2206.2745 - 870 0.087 0.0051180301 -56.117429 92.501449 -31297.412 -2206.3349 - 880 0.088 0.0051024116 -56.424751 93.281992 -31479.436 -2206.3949 - 890 0.089 0.005082454 -56.727832 94.154367 -31666.293 -2206.4544 - 900 0.09 0.0050697645 -57.026442 95.110386 -31857.043 -2206.513 - 910 0.091 0.0050765431 -57.320291 96.140056 -32050.436 -2206.5703 - 920 0.092 0.0051139309 -57.609075 97.231838 -32245.079 -2206.6257 - 930 0.093 0.0051899535 -57.89236 98.372982 -32439.141 -2206.6788 - 940 0.094 0.0053078572 -58.169742 99.54995 -32630.727 -2206.7288 - 950 0.095 0.0054654923 -58.44083 100.74893 -32817.882 -2206.7752 - 960 0.096 0.0056558757 -58.705483 101.95638 -32999.116 -2206.8176 - 970 0.097 0.0058685513 -58.963698 103.15953 -33173.159 -2206.8557 - 980 0.098 0.0060912487 -59.215624 104.34681 -33338.961 -2206.8893 - 990 0.099 0.0063114886 -59.461806 105.50819 -33496.345 -2206.9188 - 1000 0.1 0.0065179843 -59.702883 106.63524 -33645.259 -2206.9444 -Loop time of 5.20295 on 1 procs for 1000 steps with 500 atoms - -Performance: 1.661 ns/day, 14.453 hours/ns, 192.199 timesteps/s -100.0% CPU use with 1 MPI tasks x no OpenMP threads - -MPI task timing breakdown: -Section | min time | avg time | max time |%varavg| %total ---------------------------------------------------------------- -Pair | 2.6241 | 2.6241 | 2.6241 | 0.0 | 50.43 -Neigh | 0.01424 | 0.01424 | 0.01424 | 0.0 | 0.27 -Comm | 0.041207 | 0.041207 | 0.041207 | 0.0 | 0.79 -Output | 0.0090086 | 0.0090086 | 0.0090086 | 0.0 | 0.17 -Modify | 2.5084 | 2.5084 | 2.5084 | 0.0 | 48.21 -Other | | 0.006008 | | | 0.12 - -Nlocal: 500 ave 500 max 500 min -Histogram: 1 0 0 0 0 0 0 0 0 0 -Nghost: 2442 ave 2442 max 2442 min -Histogram: 1 0 0 0 0 0 0 0 0 0 -Neighs: 27581 ave 27581 max 27581 min -Histogram: 1 0 0 0 0 0 0 0 0 0 -FullNghs: 55162 ave 55162 max 55162 min -Histogram: 1 0 0 0 0 0 0 0 0 0 - -Total # of neighbors = 55162 -Ave neighs/atom = 110.324 -Neighbor list builds = 7 -Dangerous builds = 0 - -Please see the log.cite file for references relevant to this simulation - -Total wall time: 0:00:05 diff --git a/examples/SPIN/cobalt_hcp/log.19Nov19.spin.cobalt_hcp.g++.4 b/examples/SPIN/cobalt_hcp/log.19Nov19.spin.cobalt_hcp.g++.4 deleted file mode 100644 index de00d5be32..0000000000 --- a/examples/SPIN/cobalt_hcp/log.19Nov19.spin.cobalt_hcp.g++.4 +++ /dev/null @@ -1,219 +0,0 @@ -LAMMPS (30 Oct 2019) -# hcp cobalt in a 3d periodic box - -clear -units metal -atom_style spin - -dimension 3 -boundary p p p - -# necessary for the serial algorithm (sametag) -atom_modify map array - -lattice hcp 2.5071 -Lattice spacing in x,y,z = 2.5071 4.34242 4.09408 -region box block 0.0 5.0 0.0 5.0 0.0 5.0 -create_box 1 box -Created orthogonal box = (0 0 0) to (12.5355 21.7121 20.4704) - 1 by 2 by 2 MPI processor grid -create_atoms 1 box -Created 500 atoms - create_atoms CPU = 0.00101995 secs - -# setting mass, mag. moments, and interactions for hcp cobalt - -mass 1 58.93 - -set group all spin/random 31 1.72 - 500 settings made for spin/random -#set group all spin 1.72 0.0 0.0 1.0 -velocity all create 100 4928459 rot yes dist gaussian - -#pair_style hybrid/overlay eam/alloy spin/exchange 4.0 spin/neel 4.0 -pair_style hybrid/overlay eam/alloy spin/exchange 4.0 -pair_coeff * * eam/alloy Co_PurjaPun_2012.eam.alloy Co -pair_coeff * * spin/exchange exchange 4.0 -0.3593 1.135028015e-05 1.064568567 -#pair_coeff * * spin/neel neel 4.0 0.0048 0.234 1.168 2.6905 0.705 0.652 - -neighbor 0.1 bin -neigh_modify every 10 check yes delay 20 - -#fix 1 all precession/spin zeeman 1.0 0.0 0.0 1.0 -fix 1 all precession/spin anisotropy 0.01 0.0 0.0 1.0 -#fix 2 all langevin/spin 0.0 0.0 21 -fix 2 all langevin/spin 0.0 0.1 21 -fix 3 all nve/spin lattice moving - -timestep 0.0001 - - -compute out_mag all spin -compute out_pe all pe -compute out_ke all ke -compute out_temp all temp - -variable magz equal c_out_mag[3] -variable magnorm equal c_out_mag[4] -variable emag equal c_out_mag[5] -variable tmag equal c_out_mag[6] - -thermo_style custom step time v_magnorm v_emag temp press etotal -thermo 10 - -compute outsp all property/atom spx spy spz sp fmx fmy fmz -dump 1 all custom 100 dump_cobalt_hcp.lammpstrj type x y z c_outsp[1] c_outsp[2] c_outsp[3] - -run 1000 -Neighbor list info ... - update every 10 steps, delay 20 steps, check yes - max neighbors/atom: 2000, page size: 100000 - master list distance cutoff = 6.59954 - ghost atom cutoff = 6.59954 - binsize = 3.29977, bins = 4 7 7 - 2 neighbor lists, perpetual/occasional/extra = 2 0 0 - (1) pair eam/alloy, perpetual, half/full from (2) - attributes: half, newton on - pair build: halffull/newton - stencil: none - bin: none - (2) pair spin/exchange, perpetual - attributes: full, newton on - pair build: full/bin/atomonly - stencil: full/bin/3d - bin: standard -Per MPI rank memory allocation (min/avg/max) = 7.814 | 7.814 | 7.815 Mbytes -Step Time v_magnorm v_emag Temp Press TotEng - 0 0 0.076558814 -5.1073764 100.00543 -552.75983 -2190.3478 - 10 0.001 0.074494512 -6.2728301 99.980769 -1570.0726 -2191.5261 - 20 0.002 0.072367013 -7.4259977 99.847801 -2531.5119 -2192.6655 - 30 0.003 0.070129365 -8.566306 99.586282 -3438.1309 -2193.7672 - 40 0.004 0.067761178 -9.6929189 99.171132 -4291.017 -2194.8323 - 50 0.005 0.065270916 -10.8048 98.575397 -5091.9111 -2195.8628 - 60 0.006 0.062690557 -11.900573 97.773618 -5843.4528 -2196.8612 - 70 0.007 0.060064592 -12.978381 96.745047 -6548.726 -2197.8306 - 80 0.008 0.05743694 -14.035923 95.476292 -7210.2954 -2198.773 - 90 0.009 0.054839883 -15.07074 93.963026 -7829.4252 -2199.689 - 100 0.01 0.052288504 -16.08066 92.210482 -8405.9983 -2200.5773 - 110 0.011 0.049782155 -17.064251 90.232741 -8939.3051 -2201.4357 - 120 0.012 0.047311759 -18.021135 88.051042 -9429.1353 -2202.2626 - 130 0.013 0.044869196 -18.952065 85.691573 -9876.5628 -2203.0575 - 140 0.014 0.042453961 -19.858739 83.18315 -10284.249 -2203.8215 - 150 0.015 0.040074171 -20.743348 80.555177 -10656.417 -2204.5569 - 160 0.016 0.037742459 -21.608 77.836156 -10998.818 -2205.2677 - 170 0.017 0.035470168 -22.454209 75.052994 -11318.525 -2205.9587 - 180 0.018 0.033263447 -23.282658 72.231211 -11623.118 -2206.6354 - 190 0.019 0.031122821 -24.093311 69.395936 -11919.248 -2207.3023 - 200 0.02 0.029045634 -24.88579 66.573223 -12211.306 -2207.9613 - 210 0.021 0.027029857 -25.659817 63.791041 -12500.812 -2208.6115 - 220 0.022 0.025077742 -26.415541 61.079413 -12787.018 -2209.2498 - 230 0.023 0.023198048 -27.153652 58.469604 -13068.277 -2209.8722 - 240 0.024 0.02140599 -27.875313 55.992687 -13343.621 -2210.4756 - 250 0.025 0.019720922 -28.581973 53.678031 -13613.86 -2211.0588 - 260 0.026 0.018162738 -29.275283 51.552191 -13882.15 -2211.6232 - 270 0.027 0.016748514 -29.956802 49.638467 -14153.137 -2212.1718 - 280 0.028 0.01549075 -30.628043 47.957071 -14432.246 -2212.7087 - 290 0.029 0.014397611 -31.290177 46.525552 -14724.005 -2213.2371 - 300 0.03 0.013474315 -31.943984 45.359085 -15031.315 -2213.759 - 310 0.031 0.012723957 -32.589853 44.47023 -15355.595 -2214.275 - 320 0.032 0.012146358 -33.227585 43.868153 -15696.845 -2214.7851 - 330 0.033 0.011734827 -33.856656 43.557623 -16054.887 -2215.289 - 340 0.034 0.011472508 -34.476313 43.538346 -16429.77 -2215.7871 - 350 0.035 0.011330772 -35.085716 43.805034 -16821.627 -2216.2802 - 360 0.036 0.011271169 -35.684147 44.348312 -17230.21 -2216.7687 - 370 0.037 0.01125027 -36.271215 45.156046 -17654.485 -2217.2524 - 380 0.038 0.011225354 -36.847053 46.214576 -18092.623 -2217.7301 - 390 0.039 0.011159026 -37.412284 47.509345 -18542.156 -2218.2003 - 400 0.04 0.011022073 -37.967916 49.024843 -19000.554 -2218.6614 - 410 0.041 0.01079477 -38.515123 50.744046 -19465.713 -2219.1128 - 420 0.042 0.010467095 -39.054921 52.647653 -19935.873 -2219.5544 - 430 0.043 0.010038219 -39.588034 54.713405 -20409.666 -2219.9869 - 440 0.044 0.0095155267 -40.114703 56.915658 -20885.556 -2220.4109 - 450 0.045 0.0089134996 -40.634722 59.225397 -21361.621 -2220.8268 - 460 0.046 0.0082528918 -41.147681 61.610799 -21835.762 -2221.2347 - 470 0.047 0.0075606723 -41.653088 64.038349 -22305.687 -2221.6343 - 480 0.048 0.0068707613 -42.150486 66.474377 -22768.948 -2222.0253 - 490 0.049 0.0062249854 -42.639704 68.886721 -23223.418 -2222.4076 - 500 0.05 0.0056723593 -43.120772 71.24617 -23667.077 -2222.7814 - 510 0.051 0.00526312 -43.59404 73.527392 -24098.459 -2223.147 - 520 0.052 0.0050342241 -44.059917 75.709206 -24516.163 -2223.5051 - 530 0.053 0.0049906301 -44.518898 77.774314 -24919.192 -2223.8564 - 540 0.054 0.0050976586 -44.971364 79.708763 -25306.611 -2224.2014 - 550 0.055 0.0052941974 -45.417577 81.501347 -25677.67 -2224.5405 - 560 0.056 0.0055157717 -45.857628 83.143173 -26031.673 -2224.8736 - 570 0.057 0.0057113414 -46.291426 84.627457 -26367.904 -2225.2003 - 580 0.058 0.0058493207 -46.718709 85.949497 -26685.6 -2225.52 - 590 0.059 0.0059162201 -47.139052 87.10679 -26984.124 -2225.8316 - 600 0.06 0.0059118584 -47.551892 88.099176 -27263.145 -2226.1347 - 610 0.061 0.005843747 -47.956571 88.928929 -27522.773 -2226.4287 - 620 0.062 0.0057222223 -48.352422 89.600763 -27763.549 -2226.7139 - 630 0.063 0.0055570967 -48.738876 90.12173 -27986.321 -2226.9905 - 640 0.064 0.0053558993 -49.115723 90.501081 -28192.238 -2227.2593 - 650 0.065 0.0051233209 -49.483122 90.750056 -28382.3 -2227.5205 - 660 0.066 0.0048614512 -49.841791 90.881635 -28557.623 -2227.7746 - 670 0.067 0.0045706003 -50.192974 90.910245 -28719.422 -2228.0219 - 680 0.068 0.0042506564 -50.538196 90.851397 -28868.809 -2228.2627 - 690 0.069 0.0039028575 -50.879364 90.721317 -29007.619 -2228.4973 - 700 0.07 0.0035319814 -51.218193 90.536521 -29137.623 -2228.7265 - 710 0.071 0.0031491486 -51.556251 90.313501 -29261.193 -2228.9511 - 720 0.072 0.0027758205 -51.894643 90.068503 -29380.924 -2229.1724 - 730 0.073 0.002449449 -52.233987 89.817462 -29499.606 -2229.3917 - 740 0.074 0.0022276613 -52.574465 89.57612 -29620.196 -2229.6103 - 750 0.075 0.0021767124 -52.915641 89.360246 -29744.882 -2229.829 - 760 0.076 0.0023310362 -53.256843 89.185838 -29875.573 -2230.0485 - 770 0.077 0.0026637349 -53.597197 89.069228 -30013.477 -2230.2685 - 780 0.078 0.0031129938 -53.93565 89.026943 -30158.812 -2230.4882 - 790 0.079 0.0036204667 -54.271339 89.075322 -30311.602 -2230.7066 - 800 0.08 0.0041448552 -54.603455 89.229912 -30471.244 -2230.9226 - 810 0.081 0.0046613106 -54.931421 89.504766 -30636.938 -2231.1352 - 820 0.082 0.0051580947 -55.255056 89.911726 -30808.087 -2231.3434 - 830 0.083 0.0056329652 -55.574491 90.459766 -30984.153 -2231.5469 - 840 0.084 0.0060893356 -55.890024 91.154456 -31164.372 -2231.7452 - 850 0.085 0.0065324419 -56.202052 91.997528 -31347.792 -2231.9379 - 860 0.086 0.0069661977 -56.511206 92.986622 -31533.977 -2232.1249 - 870 0.087 0.0073913051 -56.817814 94.115192 -31721.92 -2232.306 - 880 0.088 0.0078048547 -57.122061 95.372548 -31910.795 -2232.4809 - 890 0.089 0.008201165 -57.423984 96.744135 -32100.108 -2232.65 - 900 0.09 0.0085732702 -57.723377 98.212046 -32289.532 -2232.8136 - 910 0.091 0.0089144724 -58.019938 99.755667 -32479.154 -2232.9728 - 920 0.092 0.0092194916 -58.313266 101.35254 -32669.227 -2233.1285 - 930 0.093 0.0094849872 -58.602956 102.97932 -32860.091 -2233.2822 - 940 0.094 0.0097093572 -58.888668 104.61271 -33051.981 -2233.4348 - 950 0.095 0.0098920175 -59.169925 106.23045 -33244.279 -2233.5871 - 960 0.096 0.01003244 -59.44662 107.81212 -33436.562 -2233.7396 - 970 0.097 0.010129313 -59.718668 109.33976 -33627.714 -2233.8925 - 980 0.098 0.010180127 -59.986126 110.79823 -33816.218 -2234.0455 - 990 0.099 0.010181304 -60.24929 112.17528 -34000.522 -2234.1984 - 1000 0.1 0.01012881 -60.508632 113.46137 -34179.052 -2234.3508 -Loop time of 2.93788 on 4 procs for 1000 steps with 500 atoms - -Performance: 2.941 ns/day, 8.161 hours/ns, 340.381 timesteps/s -100.0% CPU use with 4 MPI tasks x no OpenMP threads - -MPI task timing breakdown: -Section | min time | avg time | max time |%varavg| %total ---------------------------------------------------------------- -Pair | 0.72349 | 0.73783 | 0.7554 | 1.3 | 25.11 -Neigh | 0.00353 | 0.0036981 | 0.0038559 | 0.2 | 0.13 -Comm | 0.12285 | 0.14476 | 0.16041 | 3.6 | 4.93 -Output | 0.0046515 | 0.0047909 | 0.0050418 | 0.2 | 0.16 -Modify | 2.0407 | 2.0439 | 2.0482 | 0.2 | 69.57 -Other | | 0.00288 | | | 0.10 - -Nlocal: 125 ave 136 max 119 min -Histogram: 1 1 1 0 0 0 0 0 0 1 -Nghost: 1324 ave 1331 max 1310 min -Histogram: 1 0 0 0 0 0 0 0 2 1 -Neighs: 6897.25 ave 7552 max 6604 min -Histogram: 2 1 0 0 0 0 0 0 0 1 -FullNghs: 13794.5 ave 15117 max 13164 min -Histogram: 2 0 1 0 0 0 0 0 0 1 - -Total # of neighbors = 55178 -Ave neighs/atom = 110.356 -Neighbor list builds = 7 -Dangerous builds = 0 - -Please see the log.cite file for references relevant to this simulation - -Total wall time: 0:00:02 diff --git a/examples/SPIN/cobalt_hcp/log.30Mar20.spin.cobalt_hcp.g++.1 b/examples/SPIN/cobalt_hcp/log.30Mar20.spin.cobalt_hcp.g++.1 new file mode 100644 index 0000000000..3f5cb0e893 --- /dev/null +++ b/examples/SPIN/cobalt_hcp/log.30Mar20.spin.cobalt_hcp.g++.1 @@ -0,0 +1,138 @@ +LAMMPS (18 Feb 2020) +# hcp cobalt in a 3d periodic box + +clear +units metal +atom_style spin + +dimension 3 +boundary p p p + +# necessary for the serial algorithm (sametag) +atom_modify map array + +lattice hcp 2.5071 +Lattice spacing in x,y,z = 2.5071 4.34242 4.09408 +region box block 0.0 5.0 0.0 5.0 0.0 5.0 +create_box 1 box +Created orthogonal box = (0 0 0) to (12.5355 21.7121 20.4704) + 1 by 1 by 1 MPI processor grid +create_atoms 1 box +Created 500 atoms + create_atoms CPU = 0.00117397 secs + +# setting mass, mag. moments, and interactions for hcp cobalt + +mass 1 58.93 + +set group all spin/random 31 1.72 + 500 settings made for spin/random +#set group all spin 1.72 0.0 0.0 1.0 +velocity all create 100 4928459 rot yes dist gaussian + +#pair_style hybrid/overlay eam/alloy spin/exchange 4.0 spin/neel 4.0 +pair_style hybrid/overlay eam/alloy spin/exchange 4.0 +pair_coeff * * eam/alloy Co_PurjaPun_2012.eam.alloy Co +pair_coeff * * spin/exchange exchange 4.0 -0.3593 1.135028015e-05 1.064568567 +#pair_coeff * * spin/neel neel 4.0 0.0048 0.234 1.168 2.6905 0.705 0.652 + +neighbor 0.1 bin +neigh_modify every 10 check yes delay 20 + +fix 1 all precession/spin anisotropy 0.01 0.0 0.0 1.0 +fix_modify 1 energy yes +fix 2 all langevin/spin 0.0 0.0 21 +fix 3 all nve/spin lattice moving + +timestep 0.0001 + + +compute out_mag all spin +compute out_pe all pe +compute out_ke all ke +compute out_temp all temp + +variable magz equal c_out_mag[3] +variable magnorm equal c_out_mag[4] +variable emag equal c_out_mag[5] +variable tmag equal c_out_mag[6] + +thermo_style custom step time v_magnorm pe v_emag temp press etotal +thermo 50 + +compute outsp all property/atom spx spy spz sp fmx fmy fmz +dump 1 all custom 100 dump_cobalt_hcp.lammpstrj type x y z c_outsp[1] c_outsp[2] c_outsp[3] + +run 1000 +Neighbor list info ... + update every 10 steps, delay 20 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 6.59954 + ghost atom cutoff = 6.59954 + binsize = 3.29977, bins = 4 7 7 + 2 neighbor lists, perpetual/occasional/extra = 2 0 0 + (1) pair eam/alloy, perpetual, half/full from (2) + attributes: half, newton on + pair build: halffull/newton + stencil: none + bin: none + (2) pair spin/exchange, perpetual + attributes: full, newton on + pair build: full/bin/atomonly + stencil: full/bin/3d + bin: standard +Per MPI rank memory allocation (min/avg/max) = 7.902 | 7.902 | 7.902 Mbytes +Step Time v_magnorm PotEng v_emag Temp Press TotEng + 0 0 0.076558814 -2198.4528 -3.4528061 100.00543 -552.75983 -2192.0023 + 50 0.005 0.07943794 -2198.3999 -3.7088205 98.515758 -366.66997 -2192.0455 + 100 0.01 0.079575155 -2197.9291 -4.1226604 91.922189 477.47884 -2192 + 150 0.015 0.078542395 -2197.1155 -4.619238 80.067885 1716.7288 -2191.951 + 200 0.02 0.077023506 -2196.2933 -5.2897727 65.92849 2936.6679 -2192.0409 + 250 0.025 0.077700923 -2195.5361 -5.9414484 53.573594 4112.0948 -2192.0805 + 300 0.03 0.07774657 -2195.1335 -6.6197723 46.804933 4886.8537 -2192.1145 + 350 0.035 0.078774554 -2195.0914 -7.1946157 47.394499 5379.4752 -2192.0345 + 400 0.04 0.079370667 -2195.4714 -7.7623965 53.642366 5233.2923 -2192.0114 + 450 0.045 0.080429623 -2196.099 -8.2844109 63.475259 4737.1962 -2192.0048 + 500 0.05 0.079683852 -2196.9706 -8.9272785 75.634862 3939.1654 -2192.0921 + 550 0.055 0.077382015 -2197.7492 -9.5343926 87.113531 3264.2402 -2192.1303 + 600 0.06 0.076847472 -2198.2648 -10.06509 96.047078 3054.8173 -2192.0697 + 650 0.065 0.078802112 -2198.4893 -10.530134 100.97465 3136.6247 -2191.9764 + 700 0.07 0.081063717 -2198.6285 -11.059855 102.79546 3140.6445 -2191.9981 + 750 0.075 0.082220669 -2198.6954 -11.523126 103.98355 3256.6914 -2191.9883 + 800 0.08 0.08358463 -2198.9161 -12.013687 106.41036 3159.088 -2192.0525 + 850 0.085 0.084281202 -2199.3713 -12.539376 112.52518 2845.2477 -2192.1133 + 900 0.09 0.085232982 -2200.0109 -13.07512 122.49544 2421.3371 -2192.1099 + 950 0.095 0.085821533 -2200.763 -13.665795 133.25612 1811.7336 -2192.1678 + 1000 0.1 0.087720262 -2201.3249 -14.148781 142.02569 1381.4755 -2192.1641 +Loop time of 5.11405 on 1 procs for 1000 steps with 500 atoms + +Performance: 1.689 ns/day, 14.206 hours/ns, 195.540 timesteps/s +100.0% CPU use with 1 MPI tasks x no OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 2.6184 | 2.6184 | 2.6184 | 0.0 | 51.20 +Neigh | 0.017383 | 0.017383 | 0.017383 | 0.0 | 0.34 +Comm | 0.041471 | 0.041471 | 0.041471 | 0.0 | 0.81 +Output | 0.0079777 | 0.0079777 | 0.0079777 | 0.0 | 0.16 +Modify | 2.4222 | 2.4222 | 2.4222 | 0.0 | 47.36 +Other | | 0.006614 | | | 0.13 + +Nlocal: 500 ave 500 max 500 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 2440 ave 2440 max 2440 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 27405 ave 27405 max 27405 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +FullNghs: 54810 ave 54810 max 54810 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 54810 +Ave neighs/atom = 109.62 +Neighbor list builds = 8 +Dangerous builds = 0 + +Please see the log.cite file for references relevant to this simulation + +Total wall time: 0:00:05 diff --git a/examples/SPIN/cobalt_hcp/log.30Mar20.spin.cobalt_hcp.g++.4 b/examples/SPIN/cobalt_hcp/log.30Mar20.spin.cobalt_hcp.g++.4 new file mode 100644 index 0000000000..541a5215ab --- /dev/null +++ b/examples/SPIN/cobalt_hcp/log.30Mar20.spin.cobalt_hcp.g++.4 @@ -0,0 +1,138 @@ +LAMMPS (18 Feb 2020) +# hcp cobalt in a 3d periodic box + +clear +units metal +atom_style spin + +dimension 3 +boundary p p p + +# necessary for the serial algorithm (sametag) +atom_modify map array + +lattice hcp 2.5071 +Lattice spacing in x,y,z = 2.5071 4.34242 4.09408 +region box block 0.0 5.0 0.0 5.0 0.0 5.0 +create_box 1 box +Created orthogonal box = (0 0 0) to (12.5355 21.7121 20.4704) + 1 by 2 by 2 MPI processor grid +create_atoms 1 box +Created 500 atoms + create_atoms CPU = 0.000776052 secs + +# setting mass, mag. moments, and interactions for hcp cobalt + +mass 1 58.93 + +set group all spin/random 31 1.72 + 500 settings made for spin/random +#set group all spin 1.72 0.0 0.0 1.0 +velocity all create 100 4928459 rot yes dist gaussian + +#pair_style hybrid/overlay eam/alloy spin/exchange 4.0 spin/neel 4.0 +pair_style hybrid/overlay eam/alloy spin/exchange 4.0 +pair_coeff * * eam/alloy Co_PurjaPun_2012.eam.alloy Co +pair_coeff * * spin/exchange exchange 4.0 -0.3593 1.135028015e-05 1.064568567 +#pair_coeff * * spin/neel neel 4.0 0.0048 0.234 1.168 2.6905 0.705 0.652 + +neighbor 0.1 bin +neigh_modify every 10 check yes delay 20 + +fix 1 all precession/spin anisotropy 0.01 0.0 0.0 1.0 +fix_modify 1 energy yes +fix 2 all langevin/spin 0.0 0.0 21 +fix 3 all nve/spin lattice moving + +timestep 0.0001 + + +compute out_mag all spin +compute out_pe all pe +compute out_ke all ke +compute out_temp all temp + +variable magz equal c_out_mag[3] +variable magnorm equal c_out_mag[4] +variable emag equal c_out_mag[5] +variable tmag equal c_out_mag[6] + +thermo_style custom step time v_magnorm pe v_emag temp press etotal +thermo 50 + +compute outsp all property/atom spx spy spz sp fmx fmy fmz +dump 1 all custom 100 dump_cobalt_hcp.lammpstrj type x y z c_outsp[1] c_outsp[2] c_outsp[3] + +run 1000 +Neighbor list info ... + update every 10 steps, delay 20 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 6.59954 + ghost atom cutoff = 6.59954 + binsize = 3.29977, bins = 4 7 7 + 2 neighbor lists, perpetual/occasional/extra = 2 0 0 + (1) pair eam/alloy, perpetual, half/full from (2) + attributes: half, newton on + pair build: halffull/newton + stencil: none + bin: none + (2) pair spin/exchange, perpetual + attributes: full, newton on + pair build: full/bin/atomonly + stencil: full/bin/3d + bin: standard +Per MPI rank memory allocation (min/avg/max) = 7.814 | 7.814 | 7.815 Mbytes +Step Time v_magnorm PotEng v_emag Temp Press TotEng + 0 0 0.076558814 -2198.4528 -3.4528061 100.00543 -552.75983 -2192.0023 + 50 0.005 0.079452723 -2198.4072 -3.7248898 98.653871 -355.6344 -2192.0439 + 100 0.01 0.079678361 -2197.9666 -4.1954903 92.537038 501.20706 -2191.9979 + 150 0.015 0.078687908 -2197.1706 -4.7537644 80.964751 1772.0425 -2191.9483 + 200 0.02 0.076916898 -2196.3559 -5.4825199 66.80147 2968.8218 -2192.0472 + 250 0.025 0.076907901 -2195.5231 -6.0861726 53.985569 4164.2625 -2192.0409 + 300 0.03 0.077038948 -2195.071 -6.6943145 47.311565 4988.4746 -2192.0194 + 350 0.035 0.077979283 -2195.1414 -7.3218915 48.534273 5254.6456 -2192.0109 + 400 0.04 0.07796524 -2195.6001 -7.8825889 56.349464 5048.2463 -2191.9655 + 450 0.045 0.077261728 -2196.3704 -8.4695209 67.704551 4408.9497 -2192.0035 + 500 0.05 0.076909669 -2197.2119 -9.052699 80.062881 3672.8649 -2192.0478 + 550 0.055 0.076415935 -2197.9172 -9.6112977 90.952566 3157.7887 -2192.0507 + 600 0.06 0.075747974 -2198.3462 -10.124141 98.466889 3034.2314 -2191.9951 + 650 0.065 0.075037422 -2198.7367 -10.841596 103.22412 2930.0194 -2192.0787 + 700 0.07 0.073914153 -2198.9398 -11.537889 106.34918 3093.1625 -2192.0802 + 750 0.075 0.072420939 -2199.0757 -12.200264 108.80364 3202.7901 -2192.0578 + 800 0.08 0.071916376 -2199.4019 -12.931771 112.92157 3057.8306 -2192.1184 + 850 0.085 0.071169869 -2199.8591 -13.584472 120.32048 2903.2418 -2192.0983 + 900 0.09 0.06872929 -2200.6078 -14.339881 130.25988 2313.3788 -2192.2059 + 950 0.095 0.066974892 -2201.3479 -14.990231 141.56669 1806.6278 -2192.2168 + 1000 0.1 0.066224007 -2201.9613 -15.563509 152.12084 1504.6623 -2192.1494 +Loop time of 2.93458 on 4 procs for 1000 steps with 500 atoms + +Performance: 2.944 ns/day, 8.152 hours/ns, 340.765 timesteps/s +99.9% CPU use with 4 MPI tasks x no OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 0.70936 | 0.73135 | 0.74613 | 1.6 | 24.92 +Neigh | 0.0040097 | 0.0042623 | 0.0043731 | 0.2 | 0.15 +Comm | 0.10633 | 0.12265 | 0.14235 | 3.7 | 4.18 +Output | 0.0031571 | 0.0031891 | 0.0032747 | 0.1 | 0.11 +Modify | 2.067 | 2.0704 | 2.0733 | 0.2 | 70.55 +Other | | 0.00272 | | | 0.09 + +Nlocal: 125 ave 129 max 122 min +Histogram: 1 1 0 0 0 1 0 0 0 1 +Nghost: 1322.5 ave 1330 max 1315 min +Histogram: 2 0 0 0 0 0 0 0 0 2 +Neighs: 6854.5 ave 7053 max 6684 min +Histogram: 2 0 0 0 0 0 0 1 0 1 +FullNghs: 13709 ave 14212 max 13335 min +Histogram: 2 0 0 0 0 0 1 0 0 1 + +Total # of neighbors = 54836 +Ave neighs/atom = 109.672 +Neighbor list builds = 8 +Dangerous builds = 0 + +Please see the log.cite file for references relevant to this simulation + +Total wall time: 0:00:02 diff --git a/examples/SPIN/dipole_spin/log.19Nov19.spin.iron_dipole_cut.g++.1 b/examples/SPIN/dipole_spin/log.30Mar20.spin.iron_dipole_cut.g++.1 similarity index 83% rename from examples/SPIN/dipole_spin/log.19Nov19.spin.iron_dipole_cut.g++.1 rename to examples/SPIN/dipole_spin/log.30Mar20.spin.iron_dipole_cut.g++.1 index c2af23d167..824ce6fc64 100644 --- a/examples/SPIN/dipole_spin/log.19Nov19.spin.iron_dipole_cut.g++.1 +++ b/examples/SPIN/dipole_spin/log.30Mar20.spin.iron_dipole_cut.g++.1 @@ -1,4 +1,4 @@ -LAMMPS (30 Oct 2019) +LAMMPS (18 Feb 2020) # bcc iron in a 3d periodic box clear @@ -19,7 +19,7 @@ Created orthogonal box = (0 0 0) to (34.398 34.398 34.398) 1 by 1 by 1 MPI processor grid create_atoms 1 box Created 3456 atoms - create_atoms CPU = 0.000741005 secs + create_atoms CPU = 0.00202107 secs # setting mass, mag. moments, and interactions for bcc iron @@ -88,23 +88,23 @@ Neighbor list info ... bin: none Per MPI rank memory allocation (min/avg/max) = 13.4 | 13.4 | 13.4 Mbytes Step Time v_magx v_magy v_magz v_magnorm v_tmag v_emag PotEng TotEng - 0 0 -1 0 0 1 1.0737264e-35 -768.37511 -15175.868 -15131.207 - 50 0.005 -1 -2.7722752e-10 -2.1828666e-10 1 6.8846921e-09 -768.35793 -15174.244 -15131.215 - 100 0.01 -1 -2.0983066e-09 -1.7330951e-09 1 1.0038885e-08 -768.30868 -15169.656 -15131.24 -Loop time of 7.86359 on 1 procs for 100 steps with 3456 atoms + 0 0 -1 0 0 1 2.1474527e-35 -768.37511 -15560.055 -15515.394 + 50 0.005 -1 -2.7722752e-10 -2.1828666e-10 1 1.3769384e-08 -768.35793 -15558.423 -15515.394 + 100 0.01 -1 -2.0983066e-09 -1.7330951e-09 1 2.0077771e-08 -768.30868 -15553.81 -15515.394 +Loop time of 7.77893 on 1 procs for 100 steps with 3456 atoms -Performance: 0.110 ns/day, 218.433 hours/ns, 12.717 timesteps/s +Performance: 0.111 ns/day, 216.081 hours/ns, 12.855 timesteps/s 100.0% CPU use with 1 MPI tasks x no OpenMP threads MPI task timing breakdown: Section | min time | avg time | max time |%varavg| %total --------------------------------------------------------------- -Pair | 3.6134 | 3.6134 | 3.6134 | 0.0 | 45.95 +Pair | 3.5657 | 3.5657 | 3.5657 | 0.0 | 45.84 Neigh | 0 | 0 | 0 | 0.0 | 0.00 -Comm | 0.014062 | 0.014062 | 0.014062 | 0.0 | 0.18 -Output | 0.006057 | 0.006057 | 0.006057 | 0.0 | 0.08 -Modify | 4.226 | 4.226 | 4.226 | 0.0 | 53.74 -Other | | 0.004064 | | | 0.05 +Comm | 0.013513 | 0.013513 | 0.013513 | 0.0 | 0.17 +Output | 0.0059838 | 0.0059838 | 0.0059838 | 0.0 | 0.08 +Modify | 4.1897 | 4.1897 | 4.1897 | 0.0 | 53.86 +Other | | 0.003969 | | | 0.05 Nlocal: 3456 ave 3456 max 3456 min Histogram: 1 0 0 0 0 0 0 0 0 0 diff --git a/examples/SPIN/dipole_spin/log.19Nov19.spin.iron_dipole_cut.g++.4 b/examples/SPIN/dipole_spin/log.30Mar20.spin.iron_dipole_cut.g++.4 similarity index 82% rename from examples/SPIN/dipole_spin/log.19Nov19.spin.iron_dipole_cut.g++.4 rename to examples/SPIN/dipole_spin/log.30Mar20.spin.iron_dipole_cut.g++.4 index 1f8157bb29..858504d4f1 100644 --- a/examples/SPIN/dipole_spin/log.19Nov19.spin.iron_dipole_cut.g++.4 +++ b/examples/SPIN/dipole_spin/log.30Mar20.spin.iron_dipole_cut.g++.4 @@ -1,4 +1,4 @@ -LAMMPS (30 Oct 2019) +LAMMPS (18 Feb 2020) # bcc iron in a 3d periodic box clear @@ -19,7 +19,7 @@ Created orthogonal box = (0 0 0) to (34.398 34.398 34.398) 1 by 2 by 2 MPI processor grid create_atoms 1 box Created 3456 atoms - create_atoms CPU = 0.00090003 secs + create_atoms CPU = 0.00133705 secs # setting mass, mag. moments, and interactions for bcc iron @@ -88,23 +88,23 @@ Neighbor list info ... bin: none Per MPI rank memory allocation (min/avg/max) = 9.217 | 9.217 | 9.217 Mbytes Step Time v_magx v_magy v_magz v_magnorm v_tmag v_emag PotEng TotEng - 0 0 -1 0 0 1 1.0737264e-35 -768.37511 -15560.055 -15515.394 - 50 0.005 -1 9.6204015e-11 -3.3767807e-10 1 6.6905249e-09 -768.35767 -15558.438 -15515.394 - 100 0.01 -1 7.8881609e-10 -2.7017321e-09 1 9.8111281e-09 -768.30769 -15553.868 -15515.394 -Loop time of 2.29116 on 4 procs for 100 steps with 3456 atoms + 0 0 -1 0 0 1 2.1474527e-35 -768.37511 -15560.055 -15515.394 + 50 0.005 -1 9.6204015e-11 -3.3767807e-10 1 1.338105e-08 -768.35767 -15558.438 -15515.394 + 100 0.01 -1 7.8881609e-10 -2.7017321e-09 1 1.9622256e-08 -768.30769 -15553.868 -15515.394 +Loop time of 2.28536 on 4 procs for 100 steps with 3456 atoms -Performance: 0.377 ns/day, 63.643 hours/ns, 43.646 timesteps/s -99.9% CPU use with 4 MPI tasks x no OpenMP threads +Performance: 0.378 ns/day, 63.482 hours/ns, 43.757 timesteps/s +100.0% CPU use with 4 MPI tasks x no OpenMP threads MPI task timing breakdown: Section | min time | avg time | max time |%varavg| %total --------------------------------------------------------------- -Pair | 0.92259 | 0.92963 | 0.93393 | 0.4 | 40.57 +Pair | 0.92255 | 0.92511 | 0.92921 | 0.3 | 40.48 Neigh | 0 | 0 | 0 | 0.0 | 0.00 -Comm | 0.02284 | 0.027597 | 0.035185 | 2.8 | 1.20 -Output | 0.0018489 | 0.0018544 | 0.0018642 | 0.0 | 0.08 -Modify | 1.3296 | 1.3303 | 1.3308 | 0.0 | 58.06 -Other | | 0.001818 | | | 0.08 +Comm | 0.022256 | 0.026523 | 0.029107 | 1.7 | 1.16 +Output | 0.0018489 | 0.0018537 | 0.0018642 | 0.0 | 0.08 +Modify | 1.3298 | 1.3301 | 1.3303 | 0.0 | 58.20 +Other | | 0.001781 | | | 0.08 Nlocal: 864 ave 864 max 864 min Histogram: 4 0 0 0 0 0 0 0 0 0 diff --git a/examples/SPIN/dipole_spin/log.19Nov19.spin.iron_dipole_ewald.g++.1 b/examples/SPIN/dipole_spin/log.30Mar20.spin.iron_dipole_ewald.g++.1 similarity index 80% rename from examples/SPIN/dipole_spin/log.19Nov19.spin.iron_dipole_ewald.g++.1 rename to examples/SPIN/dipole_spin/log.30Mar20.spin.iron_dipole_ewald.g++.1 index 9a38445af5..8be05871aa 100644 --- a/examples/SPIN/dipole_spin/log.19Nov19.spin.iron_dipole_ewald.g++.1 +++ b/examples/SPIN/dipole_spin/log.30Mar20.spin.iron_dipole_ewald.g++.1 @@ -1,4 +1,4 @@ -LAMMPS (30 Oct 2019) +LAMMPS (18 Feb 2020) # bcc iron in a 3d periodic box clear @@ -19,7 +19,7 @@ Created orthogonal box = (0 0 0) to (34.398 34.398 34.398) 1 by 1 by 1 MPI processor grid create_atoms 1 box Created 3456 atoms - create_atoms CPU = 0.00166988 secs + create_atoms CPU = 0.00196004 secs # setting mass, mag. moments, and interactions for bcc iron @@ -67,10 +67,10 @@ dump 1 all custom 100 dump_iron.lammpstrj type x y z c_outsp[1] c_outsp[2] c_o run 100 EwaldDipoleSpin initialization ... - using 12-bit tables for long-range coulomb (../kspace.cpp:323) + using 12-bit tables for long-range coulomb (../kspace.cpp:332) G vector (1/distance) = 0.324623 - estimated absolute RMS force accuracy = 9.55526e-84 - estimated relative force accuracy = 6.63576e-85 + estimated absolute RMS force accuracy = 7.95231e-79 + estimated relative force accuracy = 5.52258e-80 KSpace vectors: actual max1d max3d = 2084 10 4630 kxmax kymax kzmax = 10 10 10 Neighbor list info ... @@ -97,24 +97,24 @@ Neighbor list info ... bin: none Per MPI rank memory allocation (min/avg/max) = 30.07 | 30.07 | 30.07 Mbytes Step Time v_magx v_magy v_magz v_magnorm v_tmag v_emag PotEng TotEng - 0 0 -1 0 0 1 2.5872886e-37 -767.88567 -15175.39 -15130.729 - 50 0.005 -1 4.3660916e-09 -2.1918692e-09 1 5.3480999e-10 -767.86847 -15173.766 -15130.738 - 100 0.01 -1 9.9854966e-09 -4.2823677e-09 1 2.3267629e-09 -767.81917 -15169.178 -15130.762 -Loop time of 24.9345 on 1 procs for 100 steps with 3456 atoms + 0 0 -1 0 0 1 5.1745772e-37 -767.88567 -15559.577 -15514.916 + 50 0.005 -1 4.3660916e-09 -2.1918692e-09 1 1.06962e-09 -767.86847 -15557.945 -15514.916 + 100 0.01 -1 9.9854966e-09 -4.2823677e-09 1 4.6535258e-09 -767.81917 -15553.332 -15514.916 +Loop time of 25.018 on 1 procs for 100 steps with 3456 atoms -Performance: 0.035 ns/day, 692.624 hours/ns, 4.011 timesteps/s +Performance: 0.035 ns/day, 694.944 hours/ns, 3.997 timesteps/s 100.0% CPU use with 1 MPI tasks x no OpenMP threads MPI task timing breakdown: Section | min time | avg time | max time |%varavg| %total --------------------------------------------------------------- -Pair | 4.8022 | 4.8022 | 4.8022 | 0.0 | 19.26 -Kspace | 10.337 | 10.337 | 10.337 | 0.0 | 41.46 +Pair | 4.8287 | 4.8287 | 4.8287 | 0.0 | 19.30 +Kspace | 10.312 | 10.312 | 10.312 | 0.0 | 41.22 Neigh | 0 | 0 | 0 | 0.0 | 0.00 -Comm | 0.013856 | 0.013856 | 0.013856 | 0.0 | 0.06 -Output | 0.007138 | 0.007138 | 0.007138 | 0.0 | 0.03 -Modify | 9.7705 | 9.7705 | 9.7705 | 0.0 | 39.18 -Other | | 0.004077 | | | 0.02 +Comm | 0.013958 | 0.013958 | 0.013958 | 0.0 | 0.06 +Output | 0.0060771 | 0.0060771 | 0.0060771 | 0.0 | 0.02 +Modify | 9.8533 | 9.8533 | 9.8533 | 0.0 | 39.38 +Other | | 0.004097 | | | 0.02 Nlocal: 3456 ave 3456 max 3456 min Histogram: 1 0 0 0 0 0 0 0 0 0 diff --git a/examples/SPIN/dipole_spin/log.19Nov19.spin.iron_dipole_ewald.g++.4 b/examples/SPIN/dipole_spin/log.30Mar20.spin.iron_dipole_ewald.g++.4 similarity index 80% rename from examples/SPIN/dipole_spin/log.19Nov19.spin.iron_dipole_ewald.g++.4 rename to examples/SPIN/dipole_spin/log.30Mar20.spin.iron_dipole_ewald.g++.4 index 306799f576..391f68e5ce 100644 --- a/examples/SPIN/dipole_spin/log.19Nov19.spin.iron_dipole_ewald.g++.4 +++ b/examples/SPIN/dipole_spin/log.30Mar20.spin.iron_dipole_ewald.g++.4 @@ -1,4 +1,4 @@ -LAMMPS (30 Oct 2019) +LAMMPS (18 Feb 2020) # bcc iron in a 3d periodic box clear @@ -19,7 +19,7 @@ Created orthogonal box = (0 0 0) to (34.398 34.398 34.398) 1 by 2 by 2 MPI processor grid create_atoms 1 box Created 3456 atoms - create_atoms CPU = 0.00088191 secs + create_atoms CPU = 0.000954151 secs # setting mass, mag. moments, and interactions for bcc iron @@ -67,10 +67,10 @@ dump 1 all custom 100 dump_iron.lammpstrj type x y z c_outsp[1] c_outsp[2] c_o run 100 EwaldDipoleSpin initialization ... - using 12-bit tables for long-range coulomb (../kspace.cpp:323) + using 12-bit tables for long-range coulomb (../kspace.cpp:332) G vector (1/distance) = 0.324623 - estimated absolute RMS force accuracy = 9.29828e-84 - estimated relative force accuracy = 6.4573e-85 + estimated absolute RMS force accuracy = 0 + estimated relative force accuracy = 0 KSpace vectors: actual max1d max3d = 2084 10 4630 kxmax kymax kzmax = 10 10 10 Neighbor list info ... @@ -97,24 +97,24 @@ Neighbor list info ... bin: none Per MPI rank memory allocation (min/avg/max) = 25.89 | 25.89 | 25.89 Mbytes Step Time v_magx v_magy v_magz v_magnorm v_tmag v_emag PotEng TotEng - 0 0 -1 0 0 1 3.5107565e-37 -767.88567 -15559.577 -15514.916 - 50 0.005 -1 4.3196063e-09 -2.1966927e-09 1 5.1719577e-10 -767.86822 -15557.96 -15514.916 - 100 0.01 -1 9.7636593e-09 -4.3236953e-09 1 2.2443181e-09 -767.81819 -15553.39 -15514.916 -Loop time of 6.80139 on 4 procs for 100 steps with 3456 atoms + 0 0 -1 0 0 1 7.0215129e-37 -767.88567 -15559.577 -15514.916 + 50 0.005 -1 4.3196063e-09 -2.1966927e-09 1 1.0343915e-09 -767.86822 -15557.96 -15514.916 + 100 0.01 -1 9.7636593e-09 -4.3236953e-09 1 4.4886362e-09 -767.81819 -15553.39 -15514.916 +Loop time of 6.6465 on 4 procs for 100 steps with 3456 atoms -Performance: 0.127 ns/day, 188.927 hours/ns, 14.703 timesteps/s +Performance: 0.130 ns/day, 184.625 hours/ns, 15.046 timesteps/s 100.0% CPU use with 4 MPI tasks x no OpenMP threads MPI task timing breakdown: Section | min time | avg time | max time |%varavg| %total --------------------------------------------------------------- -Pair | 1.248 | 1.2649 | 1.2816 | 1.1 | 18.60 -Kspace | 2.523 | 2.5743 | 2.6505 | 3.0 | 37.85 +Pair | 1.2385 | 1.252 | 1.279 | 1.4 | 18.84 +Kspace | 2.5335 | 2.5456 | 2.5582 | 0.6 | 38.30 Neigh | 0 | 0 | 0 | 0.0 | 0.00 -Comm | 0.029461 | 0.087268 | 0.13754 | 13.0 | 1.28 -Output | 0.0018618 | 0.001869 | 0.0018811 | 0.0 | 0.03 -Modify | 2.8692 | 2.8709 | 2.8741 | 0.1 | 42.21 -Other | | 0.002119 | | | 0.03 +Comm | 0.026179 | 0.042528 | 0.054258 | 5.0 | 0.64 +Output | 0.0018868 | 0.001893 | 0.0019078 | 0.0 | 0.03 +Modify | 2.801 | 2.8024 | 2.8039 | 0.1 | 42.16 +Other | | 0.002123 | | | 0.03 Nlocal: 864 ave 864 max 864 min Histogram: 4 0 0 0 0 0 0 0 0 0 diff --git a/examples/SPIN/dipole_spin/log.19Nov19.spin.iron_dipole_pppm.g++.1 b/examples/SPIN/dipole_spin/log.30Mar20.spin.iron_dipole_pppm.g++.1 similarity index 82% rename from examples/SPIN/dipole_spin/log.19Nov19.spin.iron_dipole_pppm.g++.1 rename to examples/SPIN/dipole_spin/log.30Mar20.spin.iron_dipole_pppm.g++.1 index b0e87d786d..0e70fe617a 100644 --- a/examples/SPIN/dipole_spin/log.19Nov19.spin.iron_dipole_pppm.g++.1 +++ b/examples/SPIN/dipole_spin/log.30Mar20.spin.iron_dipole_pppm.g++.1 @@ -1,4 +1,4 @@ -LAMMPS (30 Oct 2019) +LAMMPS (18 Feb 2020) # bcc iron in a 3d periodic box clear @@ -19,7 +19,7 @@ Created orthogonal box = (0 0 0) to (34.398 34.398 34.398) 1 by 1 by 1 MPI processor grid create_atoms 1 box Created 3456 atoms - create_atoms CPU = 0.00166583 secs + create_atoms CPU = 0.00161791 secs # setting mass, mag. moments, and interactions for bcc iron @@ -99,24 +99,24 @@ Neighbor list info ... bin: none Per MPI rank memory allocation (min/avg/max) = 16.27 | 16.27 | 16.27 Mbytes Step Time v_magx v_magy v_magz v_magnorm v_tmag v_emag PotEng TotEng - 0 0 -1 0 0 1 3.7996771e-37 -767.89759 -15175.402 -15130.741 - 50 0.005 -1 3.6585337e-09 -1.9445403e-09 1 5.1405121e-10 -767.88039 -15173.779 -15130.75 - 100 0.01 -1 7.3585728e-09 -3.8640878e-09 1 2.0194927e-09 -767.83109 -15169.191 -15130.774 -Loop time of 15.3615 on 1 procs for 100 steps with 3456 atoms + 0 0 -1 0 0 1 7.5993542e-37 -767.89759 -15559.59 -15514.929 + 50 0.005 -1 3.6585337e-09 -1.9445403e-09 1 1.0281024e-09 -767.88039 -15557.958 -15514.929 + 100 0.01 -1 7.3585728e-09 -3.8640878e-09 1 4.0389855e-09 -767.83109 -15553.345 -15514.929 +Loop time of 15.3675 on 1 procs for 100 steps with 3456 atoms -Performance: 0.056 ns/day, 426.709 hours/ns, 6.510 timesteps/s -99.9% CPU use with 1 MPI tasks x no OpenMP threads +Performance: 0.056 ns/day, 426.874 hours/ns, 6.507 timesteps/s +100.0% CPU use with 1 MPI tasks x no OpenMP threads MPI task timing breakdown: Section | min time | avg time | max time |%varavg| %total --------------------------------------------------------------- -Pair | 4.8418 | 4.8418 | 4.8418 | 0.0 | 31.52 -Kspace | 0.66626 | 0.66626 | 0.66626 | 0.0 | 4.34 +Pair | 4.8225 | 4.8225 | 4.8225 | 0.0 | 31.38 +Kspace | 0.67714 | 0.67714 | 0.67714 | 0.0 | 4.41 Neigh | 0 | 0 | 0 | 0.0 | 0.00 -Comm | 0.014248 | 0.014248 | 0.014248 | 0.0 | 0.09 -Output | 0.0064788 | 0.0064788 | 0.0064788 | 0.0 | 0.04 -Modify | 9.8279 | 9.8279 | 9.8279 | 0.0 | 63.98 -Other | | 0.00478 | | | 0.03 +Comm | 0.013798 | 0.013798 | 0.013798 | 0.0 | 0.09 +Output | 0.006103 | 0.006103 | 0.006103 | 0.0 | 0.04 +Modify | 9.8438 | 9.8438 | 9.8438 | 0.0 | 64.06 +Other | | 0.004046 | | | 0.03 Nlocal: 3456 ave 3456 max 3456 min Histogram: 1 0 0 0 0 0 0 0 0 0 diff --git a/examples/SPIN/dipole_spin/log.19Nov19.spin.iron_dipole_pppm.g++.4 b/examples/SPIN/dipole_spin/log.30Mar20.spin.iron_dipole_pppm.g++.4 similarity index 83% rename from examples/SPIN/dipole_spin/log.19Nov19.spin.iron_dipole_pppm.g++.4 rename to examples/SPIN/dipole_spin/log.30Mar20.spin.iron_dipole_pppm.g++.4 index 4fbd0eb52b..6569b5784d 100644 --- a/examples/SPIN/dipole_spin/log.19Nov19.spin.iron_dipole_pppm.g++.4 +++ b/examples/SPIN/dipole_spin/log.30Mar20.spin.iron_dipole_pppm.g++.4 @@ -1,4 +1,4 @@ -LAMMPS (30 Oct 2019) +LAMMPS (18 Feb 2020) # bcc iron in a 3d periodic box clear @@ -19,7 +19,7 @@ Created orthogonal box = (0 0 0) to (34.398 34.398 34.398) 1 by 2 by 2 MPI processor grid create_atoms 1 box Created 3456 atoms - create_atoms CPU = 0.00123286 secs + create_atoms CPU = 0.000971079 secs # setting mass, mag. moments, and interactions for bcc iron @@ -99,24 +99,24 @@ Neighbor list info ... bin: none Per MPI rank memory allocation (min/avg/max) = 10.42 | 10.42 | 10.42 Mbytes Step Time v_magx v_magy v_magz v_magnorm v_tmag v_emag PotEng TotEng - 0 0 -1 0 0 1 2.3173191e-37 -767.89759 -15559.59 -15514.929 - 50 0.005 -1 3.6593054e-09 -1.9379563e-09 1 4.9747018e-10 -767.88014 -15557.972 -15514.929 - 100 0.01 -1 7.3731919e-09 -3.8151563e-09 1 1.9544299e-09 -767.8301 -15553.402 -15514.929 -Loop time of 4.4084 on 4 procs for 100 steps with 3456 atoms + 0 0 -1 0 0 1 4.6346382e-37 -767.89759 -15559.59 -15514.929 + 50 0.005 -1 3.6593054e-09 -1.9379563e-09 1 9.9494035e-10 -767.88014 -15557.972 -15514.929 + 100 0.01 -1 7.3731919e-09 -3.8151563e-09 1 3.9088598e-09 -767.8301 -15553.402 -15514.929 +Loop time of 4.2664 on 4 procs for 100 steps with 3456 atoms -Performance: 0.196 ns/day, 122.455 hours/ns, 22.684 timesteps/s +Performance: 0.203 ns/day, 118.511 hours/ns, 23.439 timesteps/s 100.0% CPU use with 4 MPI tasks x no OpenMP threads MPI task timing breakdown: Section | min time | avg time | max time |%varavg| %total --------------------------------------------------------------- -Pair | 1.2326 | 1.2513 | 1.2693 | 1.3 | 28.38 -Kspace | 0.22823 | 0.24585 | 0.26385 | 2.8 | 5.58 +Pair | 1.2363 | 1.2472 | 1.2582 | 0.7 | 29.23 +Kspace | 0.21574 | 0.2267 | 0.23779 | 1.6 | 5.31 Neigh | 0 | 0 | 0 | 0.0 | 0.00 -Comm | 0.025352 | 0.028409 | 0.032299 | 1.6 | 0.64 -Output | 0.001868 | 0.0018761 | 0.0018861 | 0.0 | 0.04 -Modify | 2.8753 | 2.8788 | 2.8818 | 0.1 | 65.30 -Other | | 0.002175 | | | 0.05 +Comm | 0.024395 | 0.024487 | 0.024633 | 0.1 | 0.57 +Output | 0.0018759 | 0.0018809 | 0.001894 | 0.0 | 0.04 +Modify | 2.7639 | 2.7641 | 2.7643 | 0.0 | 64.79 +Other | | 0.00197 | | | 0.05 Nlocal: 864 ave 864 max 864 min Histogram: 4 0 0 0 0 0 0 0 0 0 diff --git a/examples/SPIN/iron/log.19Nov19.spin.iron.g++.1 b/examples/SPIN/iron/log.19Nov19.spin.iron.g++.1 deleted file mode 100644 index cbc749a1f7..0000000000 --- a/examples/SPIN/iron/log.19Nov19.spin.iron.g++.1 +++ /dev/null @@ -1,136 +0,0 @@ -LAMMPS (30 Oct 2019) -# bcc iron in a 3d periodic box - -clear -units metal -atom_style spin - -dimension 3 -boundary p p p - -# necessary for the serial algorithm (sametag) -atom_modify map array - -lattice bcc 2.8665 -Lattice spacing in x,y,z = 2.8665 2.8665 2.8665 -region box block 0.0 5.0 0.0 5.0 0.0 5.0 -create_box 1 box -Created orthogonal box = (0 0 0) to (14.3325 14.3325 14.3325) - 1 by 1 by 1 MPI processor grid -create_atoms 1 box -Created 250 atoms - create_atoms CPU = 0.000422955 secs - -# setting mass, mag. moments, and interactions for bcc iron - -mass 1 55.845 - -set group all spin/random 31 2.2 - 250 settings made for spin/random -# set group all spin 2.2 0.0 0.0 1.0 -velocity all create 100 4928459 rot yes dist gaussian - -pair_style hybrid/overlay eam/alloy spin/exchange 3.5 -pair_coeff * * eam/alloy Fe_Mishin2006.eam.alloy Fe -pair_coeff * * spin/exchange exchange 3.4 0.02726 0.2171 1.841 - -neighbor 0.1 bin -neigh_modify every 10 check yes delay 20 - -fix 1 all precession/spin zeeman 0.0 0.0 0.0 1.0 -fix 2 all langevin/spin 0.0 0.0 21 - -fix 3 all nve/spin lattice moving -timestep 0.0001 - -# compute and output options - -compute out_mag all spin -compute out_pe all pe -compute out_ke all ke -compute out_temp all temp - -variable magz equal c_out_mag[3] -variable magnorm equal c_out_mag[4] -variable emag equal c_out_mag[5] -variable tmag equal c_out_mag[6] - -thermo_style custom step time v_magnorm v_tmag temp v_emag ke pe press etotal -thermo 50 - -compute outsp all property/atom spx spy spz sp fmx fmy fmz -dump 1 all custom 100 dump_iron.lammpstrj type x y z c_outsp[1] c_outsp[2] c_outsp[3] - -run 1000 -Neighbor list info ... - update every 10 steps, delay 20 steps, check yes - max neighbors/atom: 2000, page size: 100000 - master list distance cutoff = 5.77337 - ghost atom cutoff = 5.77337 - binsize = 2.88668, bins = 5 5 5 - 2 neighbor lists, perpetual/occasional/extra = 2 0 0 - (1) pair eam/alloy, perpetual, half/full from (2) - attributes: half, newton on - pair build: halffull/newton - stencil: none - bin: none - (2) pair spin/exchange, perpetual - attributes: full, newton on - pair build: full/bin/atomonly - stencil: full/bin/3d - bin: standard -Per MPI rank memory allocation (min/avg/max) = 7.82 | 7.82 | 7.82 Mbytes -Step Time v_magnorm v_tmag Temp v_emag KinEng PotEng Press TotEng - 0 0 0.076456975 4554.5462 100.00358 -0.85791269 3.2186929 -1070.429 394.43342 -1067.2103 - 50 0.005 0.076456974 4658.383 96.663685 -0.86504718 3.1111957 -1070.3179 709.50826 -1067.2067 - 100 0.01 0.076456983 4744.1872 86.965803 -0.88035771 2.7990619 -1069.9981 1466.6938 -1067.1991 - 150 0.015 0.076456973 4794.5283 72.421197 -0.8996913 2.3309324 -1069.5203 2534.3867 -1067.1894 - 200 0.02 0.076456944 4707.6548 55.633188 -0.921682 1.7905973 -1068.969 3732.183 -1067.1784 - 250 0.025 0.076456953 4439.4697 39.802206 -0.94649004 1.2810649 -1068.447 4831.5559 -1067.166 - 300 0.03 0.076457027 4101.6694 27.882295 -0.97253854 0.8974133 -1068.0504 5612.0928 -1067.153 - 350 0.035 0.076457103 3860.1545 21.776538 -0.99708692 0.70089477 -1067.8416 5906.3057 -1067.1407 - 400 0.04 0.076457117 3765.5341 21.857102 -1.0190244 0.70348778 -1067.8332 5682.0053 -1067.1297 - 450 0.045 0.076457072 3739.9037 26.959407 -1.0389343 0.86770942 -1067.9875 5066.5077 -1067.1198 - 500 0.05 0.076457001 3730.8342 34.92521 -1.0582008 1.124095 -1068.2342 4279.2424 -1067.1101 - 550 0.055 0.076456962 3698.0556 43.405912 -1.0785156 1.397053 -1068.497 3533.4153 -1067.1 - 600 0.06 0.076456997 3560.947 50.544844 -1.102048 1.626825 -1068.715 2975.8479 -1067.0882 - 650 0.065 0.076457079 3341.7402 55.261218 -1.1296588 1.7786252 -1068.853 2683.3023 -1067.0744 - 700 0.07 0.076457136 3156.8448 57.25083 -1.1595102 1.8426624 -1068.9021 2640.5967 -1067.0595 - 750 0.075 0.076457132 3099.5181 56.934336 -1.1893875 1.8324758 -1068.877 2778.3261 -1067.0445 - 800 0.08 0.076457116 3132.9985 55.266343 -1.2181223 1.7787901 -1068.809 3020.1175 -1067.0302 - 850 0.085 0.076457116 3163.2943 53.376453 -1.2443326 1.7179626 -1068.735 3287.9042 -1067.0171 - 900 0.09 0.076457121 3168.063 52.279557 -1.2676425 1.6826581 -1068.6881 3504.7334 -1067.0054 - 950 0.095 0.076457122 3144.2102 52.667743 -1.2902335 1.6951522 -1068.6893 3622.1382 -1066.9941 - 1000 0.1 0.076457135 3061.0811 54.684094 -1.314147 1.76005 -1068.7422 3625.2935 -1066.9822 -Loop time of 1.6779 on 1 procs for 1000 steps with 250 atoms - -Performance: 5.149 ns/day, 4.661 hours/ns, 595.982 timesteps/s -100.0% CPU use with 1 MPI tasks x no OpenMP threads - -MPI task timing breakdown: -Section | min time | avg time | max time |%varavg| %total ---------------------------------------------------------------- -Pair | 0.78285 | 0.78285 | 0.78285 | 0.0 | 46.66 -Neigh | 0.004487 | 0.004487 | 0.004487 | 0.0 | 0.27 -Comm | 0.022926 | 0.022926 | 0.022926 | 0.0 | 1.37 -Output | 0.003927 | 0.003927 | 0.003927 | 0.0 | 0.23 -Modify | 0.86033 | 0.86033 | 0.86033 | 0.0 | 51.27 -Other | | 0.003381 | | | 0.20 - -Nlocal: 250 ave 250 max 250 min -Histogram: 1 0 0 0 0 0 0 0 0 0 -Nghost: 1399 ave 1399 max 1399 min -Histogram: 1 0 0 0 0 0 0 0 0 0 -Neighs: 7855 ave 7855 max 7855 min -Histogram: 1 0 0 0 0 0 0 0 0 0 -FullNghs: 15710 ave 15710 max 15710 min -Histogram: 1 0 0 0 0 0 0 0 0 0 - -Total # of neighbors = 15710 -Ave neighs/atom = 62.84 -Neighbor list builds = 6 -Dangerous builds = 0 - -Please see the log.cite file for references relevant to this simulation - -Total wall time: 0:00:01 diff --git a/examples/SPIN/iron/log.30Mar20.spin.iron.g++.1 b/examples/SPIN/iron/log.30Mar20.spin.iron.g++.1 new file mode 100644 index 0000000000..40d2dcab23 --- /dev/null +++ b/examples/SPIN/iron/log.30Mar20.spin.iron.g++.1 @@ -0,0 +1,137 @@ +LAMMPS (18 Feb 2020) +# bcc iron in a 3d periodic box + +clear +units metal +atom_style spin + +dimension 3 +boundary p p p + +# necessary for the serial algorithm (sametag) +atom_modify map array + +lattice bcc 2.8665 +Lattice spacing in x,y,z = 2.8665 2.8665 2.8665 +region box block 0.0 5.0 0.0 5.0 0.0 5.0 +create_box 1 box +Created orthogonal box = (0 0 0) to (14.3325 14.3325 14.3325) + 1 by 1 by 1 MPI processor grid +create_atoms 1 box +Created 250 atoms + create_atoms CPU = 0.000427961 secs + +# setting mass, mag. moments, and interactions for bcc iron + +mass 1 55.845 + +set group all spin/random 31 2.2 + 250 settings made for spin/random +# set group all spin 2.2 0.0 0.0 1.0 +velocity all create 100 4928459 rot yes dist gaussian + +pair_style hybrid/overlay eam/alloy spin/exchange 3.5 +pair_coeff * * eam/alloy Fe_Mishin2006.eam.alloy Fe +pair_coeff * * spin/exchange exchange 3.4 0.02726 0.2171 1.841 + +neighbor 0.1 bin +neigh_modify every 10 check yes delay 20 + +fix 1 all precession/spin zeeman 0.0 0.0 0.0 1.0 +fix_modify 1 energy yes +fix 2 all langevin/spin 0.0 0.0 21 + +fix 3 all nve/spin lattice moving +timestep 0.0001 + +# compute and output options + +compute out_mag all spin +compute out_pe all pe +compute out_ke all ke +compute out_temp all temp + +variable magz equal c_out_mag[3] +variable magnorm equal c_out_mag[4] +variable emag equal c_out_mag[5] +variable tmag equal c_out_mag[6] + +thermo_style custom step time v_magnorm v_tmag temp v_emag ke pe press etotal +thermo 50 + +compute outsp all property/atom spx spy spz sp fmx fmy fmz +dump 1 all custom 100 dump_iron.lammpstrj type x y z c_outsp[1] c_outsp[2] c_outsp[3] + +run 1000 +Neighbor list info ... + update every 10 steps, delay 20 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 5.77337 + ghost atom cutoff = 5.77337 + binsize = 2.88668, bins = 5 5 5 + 2 neighbor lists, perpetual/occasional/extra = 2 0 0 + (1) pair eam/alloy, perpetual, half/full from (2) + attributes: half, newton on + pair build: halffull/newton + stencil: none + bin: none + (2) pair spin/exchange, perpetual + attributes: full, newton on + pair build: full/bin/atomonly + stencil: full/bin/3d + bin: standard +Per MPI rank memory allocation (min/avg/max) = 7.82 | 7.82 | 7.82 Mbytes +Step Time v_magnorm v_tmag Temp v_emag KinEng PotEng Press TotEng + 0 0 0.076456975 9109.0924 100.00358 -0.85791269 3.2186929 -1070.8579 394.43342 -1067.6392 + 50 0.005 0.076456974 9316.7659 96.663685 -0.86504718 3.1111957 -1070.7504 709.50826 -1067.6392 + 100 0.01 0.076456983 9488.3743 86.965803 -0.88035771 2.7990619 -1070.4383 1466.6938 -1067.6392 + 150 0.015 0.076456973 9589.0566 72.421197 -0.8996913 2.3309324 -1069.9702 2534.3867 -1067.6392 + 200 0.02 0.076456944 9415.3095 55.633188 -0.921682 1.7905973 -1069.4298 3732.183 -1067.6392 + 250 0.025 0.076456953 8878.9394 39.802206 -0.94649004 1.2810649 -1068.9203 4831.5559 -1067.6392 + 300 0.03 0.076457027 8203.3388 27.882295 -0.97253854 0.8974133 -1068.5366 5612.0928 -1067.6392 + 350 0.035 0.076457103 7720.309 21.776538 -0.99708692 0.70089477 -1068.3401 5906.3057 -1067.6392 + 400 0.04 0.076457117 7531.0683 21.857102 -1.0190244 0.70348778 -1068.3427 5682.0053 -1067.6392 + 450 0.045 0.076457072 7479.8073 26.959407 -1.0389343 0.86770942 -1068.5069 5066.5077 -1067.6392 + 500 0.05 0.076457001 7461.6683 34.92521 -1.0582008 1.124095 -1068.7633 4279.2424 -1067.6392 + 550 0.055 0.076456962 7396.1112 43.405912 -1.0785156 1.397053 -1069.0363 3533.4153 -1067.6392 + 600 0.06 0.076456997 7121.894 50.544844 -1.102048 1.626825 -1069.2661 2975.8479 -1067.6392 + 650 0.065 0.076457079 6683.4805 55.261218 -1.1296588 1.7786252 -1069.4179 2683.3023 -1067.6392 + 700 0.07 0.076457136 6313.6896 57.25083 -1.1595102 1.8426624 -1069.4819 2640.5967 -1067.6392 + 750 0.075 0.076457132 6199.0363 56.934336 -1.1893875 1.8324758 -1069.4717 2778.3261 -1067.6392 + 800 0.08 0.076457116 6265.997 55.266343 -1.2181223 1.7787901 -1069.418 3020.1175 -1067.6392 + 850 0.085 0.076457116 6326.5886 53.376453 -1.2443326 1.7179626 -1069.3572 3287.9042 -1067.6392 + 900 0.09 0.076457121 6336.1261 52.279557 -1.2676425 1.6826581 -1069.3219 3504.7334 -1067.6392 + 950 0.095 0.076457122 6288.4204 52.667743 -1.2902335 1.6951522 -1069.3344 3622.1382 -1067.6392 + 1000 0.1 0.076457135 6122.1622 54.684094 -1.314147 1.76005 -1069.3993 3625.2935 -1067.6392 +Loop time of 1.6842 on 1 procs for 1000 steps with 250 atoms + +Performance: 5.130 ns/day, 4.678 hours/ns, 593.753 timesteps/s +100.0% CPU use with 1 MPI tasks x no OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 0.78195 | 0.78195 | 0.78195 | 0.0 | 46.43 +Neigh | 0.004627 | 0.004627 | 0.004627 | 0.0 | 0.27 +Comm | 0.022943 | 0.022943 | 0.022943 | 0.0 | 1.36 +Output | 0.0038755 | 0.0038755 | 0.0038755 | 0.0 | 0.23 +Modify | 0.86736 | 0.86736 | 0.86736 | 0.0 | 51.50 +Other | | 0.003444 | | | 0.20 + +Nlocal: 250 ave 250 max 250 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 1399 ave 1399 max 1399 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 7855 ave 7855 max 7855 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +FullNghs: 15710 ave 15710 max 15710 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 15710 +Ave neighs/atom = 62.84 +Neighbor list builds = 6 +Dangerous builds = 0 + +Please see the log.cite file for references relevant to this simulation + +Total wall time: 0:00:01 diff --git a/examples/SPIN/iron/log.19Nov19.spin.iron.g++.4 b/examples/SPIN/iron/log.30Mar20.spin.iron.g++.4 similarity index 68% rename from examples/SPIN/iron/log.19Nov19.spin.iron.g++.4 rename to examples/SPIN/iron/log.30Mar20.spin.iron.g++.4 index a5cc9d7f0b..57c9282f07 100644 --- a/examples/SPIN/iron/log.19Nov19.spin.iron.g++.4 +++ b/examples/SPIN/iron/log.30Mar20.spin.iron.g++.4 @@ -1,4 +1,4 @@ -LAMMPS (30 Oct 2019) +LAMMPS (18 Feb 2020) # bcc iron in a 3d periodic box clear @@ -19,7 +19,7 @@ Created orthogonal box = (0 0 0) to (14.3325 14.3325 14.3325) 1 by 2 by 2 MPI processor grid create_atoms 1 box Created 250 atoms - create_atoms CPU = 0.000705957 secs + create_atoms CPU = 0.000764847 secs # setting mass, mag. moments, and interactions for bcc iron @@ -38,6 +38,7 @@ neighbor 0.1 bin neigh_modify every 10 check yes delay 20 fix 1 all precession/spin zeeman 0.0 0.0 0.0 1.0 +fix_modify 1 energy yes fix 2 all langevin/spin 0.0 0.0 21 fix 3 all nve/spin lattice moving @@ -81,41 +82,41 @@ Neighbor list info ... bin: standard Per MPI rank memory allocation (min/avg/max) = 7.766 | 7.766 | 7.766 Mbytes Step Time v_magnorm v_tmag Temp v_emag KinEng PotEng Press TotEng - 0 0 0.076456975 4554.5462 100.00358 -0.85791269 3.2186929 -1070.8579 394.43342 -1067.6392 - 50 0.005 0.076456995 4701.2004 96.298333 -0.85659448 3.0994366 -1070.7387 714.37866 -1067.6392 - 100 0.01 0.076457028 4794.5923 86.330828 -0.87003341 2.7786247 -1070.4179 1484.2951 -1067.6392 - 150 0.015 0.076457074 4836.9634 71.603402 -0.89006992 2.3046111 -1069.9438 2551.9258 -1067.6392 - 200 0.02 0.076457106 4754.5574 54.648817 -0.91124541 1.7589146 -1069.3981 3731.1494 -1067.6392 - 250 0.025 0.076457128 4502.135 38.599515 -0.93187522 1.2423553 -1068.8816 4804.619 -1067.6392 - 300 0.03 0.076457157 4176.7186 26.383018 -0.95082226 0.8491579 -1068.4884 5563.3287 -1067.6392 - 350 0.035 0.076457207 3955.5658 20.01039 -0.96826468 0.64404992 -1068.2833 5839.6479 -1067.6392 - 400 0.04 0.076457243 3887.9746 20.097682 -0.98706373 0.64685949 -1068.2861 5601.1255 -1067.6392 - 450 0.045 0.076457231 3868.5613 25.687511 -1.0095684 0.82677249 -1068.466 4974.0031 -1067.6392 - 500 0.05 0.076457204 3838.4905 34.604697 -1.0349855 1.113779 -1068.753 4157.1837 -1067.6392 - 550 0.055 0.076457196 3775.1404 44.251809 -1.0609123 1.4242788 -1069.0635 3357.1 -1067.6392 - 600 0.06 0.076457188 3604.8828 52.475202 -1.0880854 1.6889551 -1069.3282 2752.0424 -1067.6392 - 650 0.065 0.07645718 3345.5894 57.926479 -1.1179657 1.8644087 -1069.5036 2467.7403 -1067.6392 - 700 0.07 0.076457185 3138.2001 60.030548 -1.1469999 1.9321298 -1069.5714 2510.1752 -1067.6392 - 750 0.075 0.07645719 3074.9626 59.122504 -1.1721939 1.9029037 -1069.5421 2788.7489 -1067.6392 - 800 0.08 0.076457195 3103.5294 56.349146 -1.1949365 1.813641 -1069.4529 3192.5158 -1067.6392 - 850 0.085 0.076457199 3164.2317 53.154464 -1.2164642 1.7108177 -1069.35 3602.931 -1067.6392 - 900 0.09 0.076457199 3228.1358 50.837416 -1.2366018 1.6362417 -1069.2755 3917.0758 -1067.6392 - 950 0.095 0.076457222 3247.5532 50.234549 -1.2539657 1.6168379 -1069.2561 4059.9275 -1067.6392 - 1000 0.1 0.076457266 3208.3875 51.592727 -1.2671834 1.6605519 -1069.2998 4001.4995 -1067.6392 -Loop time of 1.47769 on 4 procs for 1000 steps with 250 atoms - -Performance: 5.847 ns/day, 4.105 hours/ns, 676.731 timesteps/s -100.0% CPU use with 4 MPI tasks x no OpenMP threads + 0 0 0.076456975 9109.0924 100.00358 -0.85791269 3.2186929 -1070.8579 394.43342 -1067.6392 + 50 0.005 0.076456995 9402.4007 96.298333 -0.85659448 3.0994366 -1070.7387 714.37866 -1067.6392 + 100 0.01 0.076457028 9589.1846 86.330828 -0.87003341 2.7786247 -1070.4179 1484.2951 -1067.6392 + 150 0.015 0.076457074 9673.9268 71.603402 -0.89006992 2.3046111 -1069.9438 2551.9258 -1067.6392 + 200 0.02 0.076457106 9509.1148 54.648817 -0.91124541 1.7589146 -1069.3981 3731.1494 -1067.6392 + 250 0.025 0.076457128 9004.27 38.599515 -0.93187522 1.2423553 -1068.8816 4804.619 -1067.6392 + 300 0.03 0.076457157 8353.4371 26.383018 -0.95082226 0.8491579 -1068.4884 5563.3287 -1067.6392 + 350 0.035 0.076457207 7911.1316 20.01039 -0.96826468 0.64404992 -1068.2833 5839.6479 -1067.6392 + 400 0.04 0.076457243 7775.9492 20.097682 -0.98706373 0.64685949 -1068.2861 5601.1255 -1067.6392 + 450 0.045 0.076457231 7737.1225 25.687511 -1.0095684 0.82677249 -1068.466 4974.0031 -1067.6392 + 500 0.05 0.076457204 7676.9809 34.604697 -1.0349855 1.113779 -1068.753 4157.1837 -1067.6392 + 550 0.055 0.076457196 7550.2809 44.251809 -1.0609123 1.4242788 -1069.0635 3357.1 -1067.6392 + 600 0.06 0.076457188 7209.7657 52.475202 -1.0880854 1.6889551 -1069.3282 2752.0424 -1067.6392 + 650 0.065 0.07645718 6691.1787 57.926479 -1.1179657 1.8644087 -1069.5036 2467.7403 -1067.6392 + 700 0.07 0.076457185 6276.4003 60.030548 -1.1469999 1.9321298 -1069.5714 2510.1752 -1067.6392 + 750 0.075 0.07645719 6149.9253 59.122504 -1.1721939 1.9029037 -1069.5421 2788.7489 -1067.6392 + 800 0.08 0.076457195 6207.0587 56.349146 -1.1949365 1.813641 -1069.4529 3192.5158 -1067.6392 + 850 0.085 0.076457199 6328.4635 53.154464 -1.2164642 1.7108177 -1069.35 3602.931 -1067.6392 + 900 0.09 0.076457199 6456.2716 50.837416 -1.2366018 1.6362417 -1069.2755 3917.0758 -1067.6392 + 950 0.095 0.076457222 6495.1064 50.234549 -1.2539657 1.6168379 -1069.2561 4059.9275 -1067.6392 + 1000 0.1 0.076457266 6416.775 51.592727 -1.2671834 1.6605519 -1069.2998 4001.4995 -1067.6392 +Loop time of 1.51216 on 4 procs for 1000 steps with 250 atoms + +Performance: 5.714 ns/day, 4.200 hours/ns, 661.306 timesteps/s +99.9% CPU use with 4 MPI tasks x no OpenMP threads MPI task timing breakdown: Section | min time | avg time | max time |%varavg| %total --------------------------------------------------------------- -Pair | 0.21791 | 0.22724 | 0.23568 | 1.4 | 15.38 -Neigh | 0.001137 | 0.0011771 | 0.0012221 | 0.1 | 0.08 -Comm | 0.066727 | 0.074288 | 0.083826 | 2.3 | 5.03 -Output | 0.0017431 | 0.0017657 | 0.0018256 | 0.1 | 0.12 -Modify | 1.1707 | 1.1718 | 1.1725 | 0.1 | 79.30 -Other | | 0.001427 | | | 0.10 +Pair | 0.22741 | 0.23312 | 0.23928 | 1.1 | 15.42 +Neigh | 0.001168 | 0.0012105 | 0.001256 | 0.1 | 0.08 +Comm | 0.071545 | 0.076662 | 0.081663 | 1.8 | 5.07 +Output | 0.0016665 | 0.0017048 | 0.0017688 | 0.1 | 0.11 +Modify | 1.1968 | 1.198 | 1.1988 | 0.1 | 79.23 +Other | | 0.001447 | | | 0.10 Nlocal: 62.5 ave 66 max 60 min Histogram: 1 0 0 2 0 0 0 0 0 1 diff --git a/examples/SPIN/iron/log.19Nov19.spin.iron_cubic.g++.1 b/examples/SPIN/iron/log.30Mar20.spin.iron_cubic.g++.1 similarity index 70% rename from examples/SPIN/iron/log.19Nov19.spin.iron_cubic.g++.1 rename to examples/SPIN/iron/log.30Mar20.spin.iron_cubic.g++.1 index 22957c8498..d3389fed5a 100644 --- a/examples/SPIN/iron/log.19Nov19.spin.iron_cubic.g++.1 +++ b/examples/SPIN/iron/log.30Mar20.spin.iron_cubic.g++.1 @@ -1,4 +1,4 @@ -LAMMPS (30 Oct 2019) +LAMMPS (18 Feb 2020) # bcc iron in a 3d periodic box clear @@ -19,7 +19,7 @@ Created orthogonal box = (0 0 0) to (14.3325 14.3325 14.3325) 1 by 1 by 1 MPI processor grid create_atoms 1 box Created 250 atoms - create_atoms CPU = 0.00101709 secs + create_atoms CPU = 0.000488997 secs # setting mass, mag. moments, and interactions for bcc iron @@ -81,41 +81,41 @@ Neighbor list info ... bin: standard Per MPI rank memory allocation (min/avg/max) = 7.82 | 7.82 | 7.82 Mbytes Step Time v_magx v_magy v_magz v_magnorm v_tmag v_emag PotEng TotEng - 0 0 -1 0 0 1 0 -55.58269 -1097.7914 -1094.5727 - 50 0.005 -1 0 0 1 0 -55.581417 -1097.6764 -1094.5733 - 100 0.01 -1 0 0 1 0 -55.577759 -1097.35 -1094.5751 - 150 0.015 -1 0 0 1 0 -55.57219 -1096.8677 -1094.5779 - 200 0.02 -1 0 0 1 0 -55.565438 -1096.3163 -1094.5813 - 250 0.025 -1 0 0 1 0 -55.558379 -1095.7987 -1094.5848 - 300 0.03 -1 0 0 1 0 -55.551886 -1095.4103 -1094.5881 - 350 0.035 -1 0 0 1 0 -55.546675 -1095.2124 -1094.5907 - 400 0.04 -1 0 0 1 0 -55.543187 -1095.2153 -1094.5924 - 450 0.045 -1 0 0 1 0 -55.54154 -1095.379 -1094.5932 - 500 0.05 -1 0 0 1 0 -55.541574 -1095.633 -1094.5932 - 550 0.055 -1 0 0 1 0 -55.542941 -1095.9006 -1094.5925 - 600 0.06 -1 0 0 1 0 -55.545209 -1096.1205 -1094.5914 - 650 0.065 -1 0 0 1 0 -55.547951 -1096.2575 -1094.59 - 700 0.07 -1 0 0 1 0 -55.550801 -1096.3044 -1094.5886 - 750 0.075 -1 0 0 1 0 -55.553483 -1096.2778 -1094.5873 - 800 0.08 -1 0 0 1 0 -55.555816 -1096.2098 -1094.5861 - 850 0.085 -1 0 0 1 0 -55.557706 -1096.1372 -1094.5852 - 900 0.09 -1 0 0 1 0 -55.55913 -1096.0919 -1094.5844 - 950 0.095 -1 0 0 1 0 -55.560111 -1096.0925 -1094.584 - 1000 0.1 -1 0 0 1 0 -55.560705 -1096.1411 -1094.5837 -Loop time of 1.74825 on 1 procs for 1000 steps with 250 atoms - -Performance: 4.942 ns/day, 4.856 hours/ns, 571.999 timesteps/s + 0 0 -1 0 0 1 0 -55.58269 -1125.5827 -1122.364 + 50 0.005 -1 0 0 1 0 -55.581417 -1125.4672 -1122.364 + 100 0.01 -1 0 0 1 0 -55.577759 -1125.1389 -1122.364 + 150 0.015 -1 0 0 1 0 -55.57219 -1124.6538 -1122.364 + 200 0.02 -1 0 0 1 0 -55.565438 -1124.099 -1122.364 + 250 0.025 -1 0 0 1 0 -55.558379 -1123.5779 -1122.364 + 300 0.03 -1 0 0 1 0 -55.551886 -1123.1862 -1122.364 + 350 0.035 -1 0 0 1 0 -55.546675 -1122.9858 -1122.364 + 400 0.04 -1 0 0 1 0 -55.543187 -1122.9869 -1122.364 + 450 0.045 -1 0 0 1 0 -55.54154 -1123.1498 -1122.364 + 500 0.05 -1 0 0 1 0 -55.541574 -1123.4037 -1122.364 + 550 0.055 -1 0 0 1 0 -55.542941 -1123.672 -1122.364 + 600 0.06 -1 0 0 1 0 -55.545209 -1123.8931 -1122.364 + 650 0.065 -1 0 0 1 0 -55.547951 -1124.0315 -1122.364 + 700 0.07 -1 0 0 1 0 -55.550801 -1124.0798 -1122.364 + 750 0.075 -1 0 0 1 0 -55.553483 -1124.0546 -1122.364 + 800 0.08 -1 0 0 1 0 -55.555816 -1123.9877 -1122.364 + 850 0.085 -1 0 0 1 0 -55.557706 -1123.916 -1122.364 + 900 0.09 -1 0 0 1 0 -55.55913 -1123.8714 -1122.364 + 950 0.095 -1 0 0 1 0 -55.560111 -1123.8726 -1122.364 + 1000 0.1 -1 0 0 1 0 -55.560705 -1123.9215 -1122.364 +Loop time of 1.70785 on 1 procs for 1000 steps with 250 atoms + +Performance: 5.059 ns/day, 4.744 hours/ns, 585.533 timesteps/s 100.0% CPU use with 1 MPI tasks x no OpenMP threads MPI task timing breakdown: Section | min time | avg time | max time |%varavg| %total --------------------------------------------------------------- -Pair | 0.80384 | 0.80384 | 0.80384 | 0.0 | 45.98 -Neigh | 0.004528 | 0.004528 | 0.004528 | 0.0 | 0.26 -Comm | 0.022954 | 0.022954 | 0.022954 | 0.0 | 1.31 -Output | 0.0034568 | 0.0034568 | 0.0034568 | 0.0 | 0.20 -Modify | 0.91007 | 0.91007 | 0.91007 | 0.0 | 52.06 -Other | | 0.003404 | | | 0.19 +Pair | 0.78812 | 0.78812 | 0.78812 | 0.0 | 46.15 +Neigh | 0.0046611 | 0.0046611 | 0.0046611 | 0.0 | 0.27 +Comm | 0.022918 | 0.022918 | 0.022918 | 0.0 | 1.34 +Output | 0.0034437 | 0.0034437 | 0.0034437 | 0.0 | 0.20 +Modify | 0.88529 | 0.88529 | 0.88529 | 0.0 | 51.84 +Other | | 0.003416 | | | 0.20 Nlocal: 250 ave 250 max 250 min Histogram: 1 0 0 0 0 0 0 0 0 0 diff --git a/examples/SPIN/iron/log.19Nov19.spin.iron_cubic.g++.4 b/examples/SPIN/iron/log.30Mar20.spin.iron_cubic.g++.4 similarity index 90% rename from examples/SPIN/iron/log.19Nov19.spin.iron_cubic.g++.4 rename to examples/SPIN/iron/log.30Mar20.spin.iron_cubic.g++.4 index 60db1064e0..1363c81387 100644 --- a/examples/SPIN/iron/log.19Nov19.spin.iron_cubic.g++.4 +++ b/examples/SPIN/iron/log.30Mar20.spin.iron_cubic.g++.4 @@ -1,4 +1,4 @@ -LAMMPS (30 Oct 2019) +LAMMPS (18 Feb 2020) # bcc iron in a 3d periodic box clear @@ -19,7 +19,7 @@ Created orthogonal box = (0 0 0) to (14.3325 14.3325 14.3325) 1 by 2 by 2 MPI processor grid create_atoms 1 box Created 250 atoms - create_atoms CPU = 0.000651121 secs + create_atoms CPU = 0.00102901 secs # setting mass, mag. moments, and interactions for bcc iron @@ -102,20 +102,20 @@ Step Time v_magx v_magy v_magz v_magnorm v_tmag v_emag PotEng TotEng 900 0.09 -1 0 0 1 0 -55.560147 -1123.8404 -1122.364 950 0.095 -1 0 0 1 0 -55.560992 -1123.8312 -1122.364 1000 0.1 -1 0 0 1 0 -55.561635 -1123.8853 -1122.364 -Loop time of 1.5074 on 4 procs for 1000 steps with 250 atoms +Loop time of 1.49196 on 4 procs for 1000 steps with 250 atoms -Performance: 5.732 ns/day, 4.187 hours/ns, 663.393 timesteps/s -99.9% CPU use with 4 MPI tasks x no OpenMP threads +Performance: 5.791 ns/day, 4.144 hours/ns, 670.259 timesteps/s +100.0% CPU use with 4 MPI tasks x no OpenMP threads MPI task timing breakdown: Section | min time | avg time | max time |%varavg| %total --------------------------------------------------------------- -Pair | 0.22156 | 0.23223 | 0.24219 | 1.5 | 15.41 -Neigh | 0.0011292 | 0.0011852 | 0.0012362 | 0.1 | 0.08 -Comm | 0.067507 | 0.076341 | 0.087237 | 2.6 | 5.06 -Output | 0.0015073 | 0.0015442 | 0.0015914 | 0.1 | 0.10 -Modify | 1.1934 | 1.1947 | 1.1955 | 0.1 | 79.25 -Other | | 0.001434 | | | 0.10 +Pair | 0.22188 | 0.23022 | 0.23629 | 1.2 | 15.43 +Neigh | 0.0011537 | 0.0012084 | 0.0012586 | 0.1 | 0.08 +Comm | 0.068881 | 0.074134 | 0.083032 | 2.1 | 4.97 +Output | 0.0014582 | 0.001489 | 0.0015554 | 0.1 | 0.10 +Modify | 1.1825 | 1.1835 | 1.1845 | 0.1 | 79.33 +Other | | 0.001403 | | | 0.09 Nlocal: 62.5 ave 66 max 60 min Histogram: 1 1 0 0 0 1 0 0 0 1 diff --git a/examples/SPIN/nickel/log.19Nov19.spin.nickel.g++.1 b/examples/SPIN/nickel/log.30Mar20.spin.nickel.g++.1 similarity index 52% rename from examples/SPIN/nickel/log.19Nov19.spin.nickel.g++.1 rename to examples/SPIN/nickel/log.30Mar20.spin.nickel.g++.1 index 7871d82ae9..66e5bee461 100644 --- a/examples/SPIN/nickel/log.19Nov19.spin.nickel.g++.1 +++ b/examples/SPIN/nickel/log.30Mar20.spin.nickel.g++.1 @@ -1,4 +1,4 @@ -LAMMPS (30 Oct 2019) +LAMMPS (18 Feb 2020) # fcc nickel in a 3d periodic box clear @@ -19,7 +19,7 @@ Created orthogonal box = (0 0 0) to (17.62 17.62 17.62) 1 by 1 by 1 MPI processor grid create_atoms 1 box Created 500 atoms - create_atoms CPU = 0.000484943 secs + create_atoms CPU = 0.00049305 secs # setting mass, mag. moments, and interactions for cobalt @@ -38,6 +38,7 @@ neighbor 0.1 bin neigh_modify every 10 check yes delay 20 fix 1 all precession/spin zeeman 0.0 0.0 0.0 1.0 +fix_modify 1 energy yes fix 2 all langevin/spin 0.0 0.0 21 fix 3 all nve/spin lattice moving @@ -55,7 +56,7 @@ variable magnorm equal c_out_mag[4] variable emag equal c_out_mag[5] variable tmag equal c_out_mag[6] -thermo_style custom step time v_magnorm v_emag temp v_tmag etotal +thermo_style custom step time v_magnorm pe v_emag temp v_tmag etotal thermo 50 compute outsp all property/atom spx spy spz sp fmx fmy fmz @@ -80,42 +81,42 @@ Neighbor list info ... stencil: full/bin/3d bin: standard Per MPI rank memory allocation (min/avg/max) = 7.885 | 7.885 | 7.885 Mbytes -Step Time v_magnorm v_emag Temp v_tmag TotEng - 0 0 0.028733803 0.40997576 100.03408 -4775.0671 -2218.3068 - 50 0.005 0.028733807 0.070491717 101.47879 -28153.519 -2218.1371 - 100 0.01 0.028733815 -0.70937134 101.7311 2925.8177 -2217.7471 - 150 0.015 0.028733823 -1.853981 99.63039 1197.9339 -2217.1748 - 200 0.02 0.028733828 -3.2679239 94.850105 741.17431 -2216.4678 - 250 0.025 0.028733824 -4.863967 88.444584 550.36979 -2215.6698 - 300 0.03 0.028733807 -6.5763457 82.689581 449.78321 -2214.8136 - 350 0.035 0.028733783 -8.3489158 80.108798 384.32228 -2213.9273 - 400 0.04 0.028733763 -10.120216 82.374947 335.01545 -2213.0417 - 450 0.045 0.028733755 -11.828932 89.814597 296.88965 -2212.1873 - 500 0.05 0.028733762 -13.423712 101.39613 267.51686 -2211.39 - 550 0.055 0.028733783 -14.866724 115.07399 244.96012 -2210.6684 - 600 0.06 0.028733801 -16.135279 128.57849 229.33327 -2210.0342 - 650 0.065 0.028733804 -17.222838 140.22402 220.05718 -2209.4904 - 700 0.07 0.028733795 -18.154813 149.61295 212.95678 -2209.0244 - 750 0.075 0.028733781 -18.996903 157.5814 206.41327 -2208.6034 - 800 0.08 0.028733768 -19.804249 164.92075 203.88977 -2208.1997 - 850 0.085 0.028733752 -20.579151 171.67278 203.42363 -2207.8122 - 900 0.09 0.028733728 -21.294277 177.67238 199.84817 -2207.4547 - 950 0.095 0.028733715 -21.943945 183.2621 194.9614 -2207.1298 - 1000 0.1 0.02873374 -22.551277 188.99284 191.59796 -2206.8262 -Loop time of 4.30614 on 1 procs for 1000 steps with 500 atoms - -Performance: 2.006 ns/day, 11.961 hours/ns, 232.227 timesteps/s +Step Time v_magnorm PotEng v_emag Temp v_tmag TotEng + 0 0 0.028733803 -2224.5541 0.40997576 100.03408 -9550.1342 -2218.1018 + 50 0.005 0.028733807 -2224.6473 0.070491717 101.47879 -56307.038 -2218.1018 + 100 0.01 0.028733815 -2224.6635 -0.70937134 101.7311 5851.6355 -2218.1018 + 150 0.015 0.028733823 -2224.5281 -1.853981 99.63039 2395.8677 -2218.1018 + 200 0.02 0.028733828 -2224.2197 -3.2679239 94.850105 1482.3486 -2218.1018 + 250 0.025 0.028733824 -2223.8066 -4.863967 88.444584 1100.7396 -2218.1018 + 300 0.03 0.028733807 -2223.4353 -6.5763457 82.689581 899.56642 -2218.1018 + 350 0.035 0.028733783 -2223.2689 -8.3489158 80.108798 768.64457 -2218.1018 + 400 0.04 0.028733763 -2223.4151 -10.120216 82.374947 670.03091 -2218.1018 + 450 0.045 0.028733755 -2223.8949 -11.828932 89.814597 593.77931 -2218.1018 + 500 0.05 0.028733762 -2224.6419 -13.423712 101.39613 535.03371 -2218.1018 + 550 0.055 0.028733783 -2225.5242 -14.866724 115.07399 489.92024 -2218.1018 + 600 0.06 0.028733801 -2226.3952 -16.135279 128.57849 458.66654 -2218.1018 + 650 0.065 0.028733804 -2227.1464 -17.222838 140.22402 440.11437 -2218.1018 + 700 0.07 0.028733795 -2227.752 -18.154813 149.61295 425.91356 -2218.1018 + 750 0.075 0.028733781 -2228.2659 -18.996903 157.5814 412.82654 -2218.1018 + 800 0.08 0.028733768 -2228.7393 -19.804249 164.92075 407.77954 -2218.1018 + 850 0.085 0.028733752 -2229.1748 -20.579151 171.67278 406.84726 -2218.1018 + 900 0.09 0.028733728 -2229.5618 -21.294277 177.67238 399.69633 -2218.1018 + 950 0.095 0.028733715 -2229.9224 -21.943945 183.2621 389.92281 -2218.1018 + 1000 0.1 0.02873374 -2230.292 -22.551277 188.99284 383.19592 -2218.1018 +Loop time of 4.28976 on 1 procs for 1000 steps with 500 atoms + +Performance: 2.014 ns/day, 11.916 hours/ns, 233.113 timesteps/s 100.0% CPU use with 1 MPI tasks x no OpenMP threads MPI task timing breakdown: Section | min time | avg time | max time |%varavg| %total --------------------------------------------------------------- -Pair | 2.038 | 2.038 | 2.038 | 0.0 | 47.33 -Neigh | 0.01566 | 0.01566 | 0.01566 | 0.0 | 0.36 -Comm | 0.032802 | 0.032802 | 0.032802 | 0.0 | 0.76 -Output | 0.014146 | 0.014146 | 0.014146 | 0.0 | 0.33 -Modify | 2.2003 | 2.2003 | 2.2003 | 0.0 | 51.10 -Other | | 0.005288 | | | 0.12 +Pair | 2.0329 | 2.0329 | 2.0329 | 0.0 | 47.39 +Neigh | 0.016131 | 0.016131 | 0.016131 | 0.0 | 0.38 +Comm | 0.032732 | 0.032732 | 0.032732 | 0.0 | 0.76 +Output | 0.0141 | 0.0141 | 0.0141 | 0.0 | 0.33 +Modify | 2.1889 | 2.1889 | 2.1889 | 0.0 | 51.03 +Other | | 0.005065 | | | 0.12 Nlocal: 500 ave 500 max 500 min Histogram: 1 0 0 0 0 0 0 0 0 0 diff --git a/examples/SPIN/nickel/log.19Nov19.spin.nickel.g++.4 b/examples/SPIN/nickel/log.30Mar20.spin.nickel.g++.4 similarity index 51% rename from examples/SPIN/nickel/log.19Nov19.spin.nickel.g++.4 rename to examples/SPIN/nickel/log.30Mar20.spin.nickel.g++.4 index 638ab5e635..4c25816b7a 100644 --- a/examples/SPIN/nickel/log.19Nov19.spin.nickel.g++.4 +++ b/examples/SPIN/nickel/log.30Mar20.spin.nickel.g++.4 @@ -1,4 +1,4 @@ -LAMMPS (30 Oct 2019) +LAMMPS (18 Feb 2020) # fcc nickel in a 3d periodic box clear @@ -19,7 +19,7 @@ Created orthogonal box = (0 0 0) to (17.62 17.62 17.62) 1 by 2 by 2 MPI processor grid create_atoms 1 box Created 500 atoms - create_atoms CPU = 0.000733852 secs + create_atoms CPU = 0.000828981 secs # setting mass, mag. moments, and interactions for cobalt @@ -38,6 +38,7 @@ neighbor 0.1 bin neigh_modify every 10 check yes delay 20 fix 1 all precession/spin zeeman 0.0 0.0 0.0 1.0 +fix_modify 1 energy yes fix 2 all langevin/spin 0.0 0.0 21 fix 3 all nve/spin lattice moving @@ -55,7 +56,7 @@ variable magnorm equal c_out_mag[4] variable emag equal c_out_mag[5] variable tmag equal c_out_mag[6] -thermo_style custom step time v_magnorm v_emag temp v_tmag etotal +thermo_style custom step time v_magnorm pe v_emag temp v_tmag etotal thermo 50 compute outsp all property/atom spx spy spz sp fmx fmy fmz @@ -80,42 +81,42 @@ Neighbor list info ... stencil: full/bin/3d bin: standard Per MPI rank memory allocation (min/avg/max) = 7.799 | 7.799 | 7.799 Mbytes -Step Time v_magnorm v_emag Temp v_tmag TotEng - 0 0 0.028733803 0.40997576 100.03408 -4775.0671 -2218.1018 - 50 0.005 0.028733805 0.25324083 98.741633 -7863.8744 -2218.1018 - 100 0.01 0.028733812 -0.37320751 97.073875 5622.1863 -2218.1018 - 150 0.015 0.028733819 -1.3971549 94.073447 1625.0258 -2218.1018 - 200 0.02 0.028733825 -2.7238372 89.419944 919.37601 -2218.1018 - 250 0.025 0.028733829 -4.2684428 84.07494 652.18375 -2218.1018 - 300 0.03 0.028733824 -5.9636712 80.06368 512.89077 -2218.1018 - 350 0.035 0.02873381 -7.7386326 79.366702 422.24864 -2218.1018 - 400 0.04 0.028733802 -9.5148059 83.052751 357.60379 -2218.1018 - 450 0.045 0.028733806 -11.234935 91.282747 310.87776 -2218.1018 - 500 0.05 0.02873381 -12.875184 103.49836 275.0224 -2218.1018 - 550 0.055 0.028733808 -14.413473 118.16526 247.85208 -2218.1018 - 600 0.06 0.028733803 -15.812466 132.83837 230.67903 -2218.1018 - 650 0.065 0.028733808 -17.061311 145.41049 222.19476 -2218.1018 - 700 0.07 0.028733818 -18.181903 154.83414 219.42933 -2218.1018 - 750 0.075 0.028733823 -19.176259 160.58645 218.45231 -2218.1018 - 800 0.08 0.028733825 -20.035157 163.02829 214.86596 -2218.1018 - 850 0.085 0.028733825 -20.806548 164.4197 209.86881 -2218.1018 - 900 0.09 0.028733829 -21.571419 167.8571 205.79849 -2218.1018 - 950 0.095 0.028733825 -22.365879 175.00875 201.33088 -2218.1018 - 1000 0.1 0.028733821 -23.133464 184.68305 195.52912 -2218.1018 -Loop time of 2.47211 on 4 procs for 1000 steps with 500 atoms - -Performance: 3.495 ns/day, 6.867 hours/ns, 404.513 timesteps/s -99.9% CPU use with 4 MPI tasks x no OpenMP threads +Step Time v_magnorm PotEng v_emag Temp v_tmag TotEng + 0 0 0.028733803 -2224.5541 0.40997576 100.03408 -9550.1342 -2218.1018 + 50 0.005 0.028733805 -2224.4707 0.25324083 98.741633 -15727.749 -2218.1018 + 100 0.01 0.028733812 -2224.3632 -0.37320751 97.073875 11244.373 -2218.1018 + 150 0.015 0.028733819 -2224.1696 -1.3971549 94.073447 3250.0517 -2218.1018 + 200 0.02 0.028733825 -2223.8695 -2.7238372 89.419944 1838.752 -2218.1018 + 250 0.025 0.028733829 -2223.5247 -4.2684428 84.07494 1304.3675 -2218.1018 + 300 0.03 0.028733824 -2223.266 -5.9636712 80.06368 1025.7815 -2218.1018 + 350 0.035 0.02873381 -2223.221 -7.7386326 79.366702 844.49729 -2218.1018 + 400 0.04 0.028733802 -2223.4588 -9.5148059 83.052751 715.20758 -2218.1018 + 450 0.045 0.028733806 -2223.9896 -11.234935 91.282747 621.75552 -2218.1018 + 500 0.05 0.02873381 -2224.7775 -12.875184 103.49836 550.04479 -2218.1018 + 550 0.055 0.028733808 -2225.7236 -14.413473 118.16526 495.70417 -2218.1018 + 600 0.06 0.028733803 -2226.67 -15.812466 132.83837 461.35805 -2218.1018 + 650 0.065 0.028733808 -2227.4809 -17.061311 145.41049 444.38951 -2218.1018 + 700 0.07 0.028733818 -2228.0887 -18.181903 154.83414 438.85866 -2218.1018 + 750 0.075 0.028733823 -2228.4598 -19.176259 160.58645 436.90462 -2218.1018 + 800 0.08 0.028733825 -2228.6173 -20.035157 163.02829 429.73193 -2218.1018 + 850 0.085 0.028733825 -2228.707 -20.806548 164.4197 419.73763 -2218.1018 + 900 0.09 0.028733829 -2228.9287 -21.571419 167.8571 411.59699 -2218.1018 + 950 0.095 0.028733825 -2229.39 -22.365879 175.00875 402.66175 -2218.1018 + 1000 0.1 0.028733821 -2230.014 -23.133464 184.68305 391.05824 -2218.1018 +Loop time of 2.4967 on 4 procs for 1000 steps with 500 atoms + +Performance: 3.461 ns/day, 6.935 hours/ns, 400.528 timesteps/s +100.0% CPU use with 4 MPI tasks x no OpenMP threads MPI task timing breakdown: Section | min time | avg time | max time |%varavg| %total --------------------------------------------------------------- -Pair | 0.5549 | 0.56708 | 0.58627 | 1.6 | 22.94 -Neigh | 0.0039728 | 0.0041007 | 0.0042598 | 0.2 | 0.17 -Comm | 0.087296 | 0.10802 | 0.11917 | 3.8 | 4.37 -Output | 0.0046923 | 0.0047188 | 0.0047917 | 0.1 | 0.19 -Modify | 1.7832 | 1.7862 | 1.7879 | 0.1 | 72.25 -Other | | 0.002016 | | | 0.08 +Pair | 0.56602 | 0.57191 | 0.57641 | 0.5 | 22.91 +Neigh | 0.0040138 | 0.0041498 | 0.0043001 | 0.2 | 0.17 +Comm | 0.10294 | 0.10725 | 0.11458 | 1.5 | 4.30 +Output | 0.0047452 | 0.0047795 | 0.0048621 | 0.1 | 0.19 +Modify | 1.8049 | 1.8066 | 1.8079 | 0.1 | 72.36 +Other | | 0.002003 | | | 0.08 Nlocal: 125 ave 139 max 112 min Histogram: 1 0 1 0 0 0 1 0 0 1 diff --git a/examples/SPIN/nickel/log.19Nov19.spin.nickel_cubic.g++.1 b/examples/SPIN/nickel/log.30Mar20.spin.nickel_cubic.g++.1 similarity index 51% rename from examples/SPIN/nickel/log.19Nov19.spin.nickel_cubic.g++.1 rename to examples/SPIN/nickel/log.30Mar20.spin.nickel_cubic.g++.1 index 4f3b94df53..8032896b31 100644 --- a/examples/SPIN/nickel/log.19Nov19.spin.nickel_cubic.g++.1 +++ b/examples/SPIN/nickel/log.30Mar20.spin.nickel_cubic.g++.1 @@ -1,4 +1,4 @@ -LAMMPS (30 Oct 2019) +LAMMPS (18 Feb 2020) # fcc nickel in a 3d periodic box clear @@ -19,7 +19,7 @@ Created orthogonal box = (0 0 0) to (17.62 17.62 17.62) 1 by 1 by 1 MPI processor grid create_atoms 1 box Created 500 atoms - create_atoms CPU = 0.00109196 secs + create_atoms CPU = 0.00045085 secs # setting mass, mag. moments, and interactions for cobalt @@ -56,7 +56,7 @@ variable magnorm equal c_out_mag[4] variable emag equal c_out_mag[5] variable tmag equal c_out_mag[6] -thermo_style custom step time v_magnorm v_emag temp v_tmag etotal +thermo_style custom step time v_magnorm pe v_emag temp v_tmag etotal thermo 50 compute outsp all property/atom spx spy spz sp fmx fmy fmz @@ -81,42 +81,42 @@ Neighbor list info ... stencil: full/bin/3d bin: standard Per MPI rank memory allocation (min/avg/max) = 7.885 | 7.885 | 7.885 Mbytes -Step Time v_magnorm v_emag Temp v_tmag TotEng - 0 0 0.028733803 0.455085 100.03408 -4301.853 -2218.2955 - 50 0.005 0.028732021 0.11535308 101.47887 -17203.944 -2218.1258 - 100 0.01 0.0287304 -0.665283 101.73105 3119.2267 -2217.7358 - 150 0.015 0.028729403 -1.8105707 99.629794 1226.3803 -2217.1636 - 200 0.02 0.028731067 -3.224763 94.849715 750.93124 -2216.4566 - 250 0.025 0.028732765 -4.8207784 88.447019 555.16456 -2215.6585 - 300 0.03 0.028728169 -6.5331538 82.697813 452.6101 -2214.8022 - 350 0.035 0.02871707 -8.3059526 80.122838 386.20109 -2213.9158 - 400 0.04 0.028706605 -10.077613 82.389555 336.36118 -2213.03 - 450 0.045 0.028701727 -11.78634 89.823176 297.91478 -2212.1758 - 500 0.05 0.028706691 -13.380919 101.39804 268.32933 -2211.3785 - 550 0.055 0.028714065 -14.824128 115.07511 245.62893 -2210.6569 - 600 0.06 0.028713691 -16.093505 128.58093 229.91054 -2210.0225 - 650 0.065 0.028713232 -17.181217 140.22137 220.57591 -2209.4787 - 700 0.07 0.02871245 -18.113035 149.60156 213.40077 -2209.0127 - 750 0.075 0.028712431 -18.954952 157.56849 206.80962 -2208.5916 - 800 0.08 0.02872489 -19.762756 164.91833 204.24742 -2208.1876 - 850 0.085 0.028733709 -20.538757 171.69348 203.73934 -2207.7993 - 900 0.09 0.028737031 -21.256095 177.71981 200.12043 -2207.4406 - 950 0.095 0.028743446 -21.908156 183.31613 195.23386 -2207.1149 - 1000 0.1 0.028751809 -22.516179 189.01672 191.90401 -2206.8111 -Loop time of 4.3661 on 1 procs for 1000 steps with 500 atoms - -Performance: 1.979 ns/day, 12.128 hours/ns, 229.037 timesteps/s +Step Time v_magnorm PotEng v_emag Temp v_tmag TotEng + 0 0 0.028733803 -2224.5428 0.42125307 100.03408 -8603.706 -2218.0905 + 50 0.005 0.028732021 -2224.6359 0.081895124 101.47887 -34407.888 -2218.0904 + 100 0.01 0.0287304 -2224.6517 -0.69755414 101.73105 6238.4535 -2218.09 + 150 0.015 0.028729403 -2224.5158 -1.8417372 99.629794 2452.7607 -2218.0896 + 200 0.02 0.028731067 -2224.2073 -3.2554838 94.849715 1501.8625 -2218.0895 + 250 0.025 0.028732765 -2223.7944 -4.851641 88.447019 1110.3291 -2218.0895 + 300 0.03 0.028728169 -2223.4237 -6.5643692 82.697813 905.2202 -2218.0896 + 350 0.035 0.02871707 -2223.2576 -8.3372672 80.122838 772.40218 -2218.0896 + 400 0.04 0.028706605 -2223.4037 -10.108553 82.389555 672.72236 -2218.0895 + 450 0.045 0.028701727 -2223.883 -11.816999 89.823176 595.82956 -2218.0894 + 500 0.05 0.028706691 -2224.6296 -13.411565 101.39804 536.65866 -2218.0894 + 550 0.055 0.028714065 -2225.5117 -14.854639 115.07511 491.25787 -2218.0893 + 600 0.06 0.028713691 -2226.3826 -16.123209 128.58093 459.82107 -2218.089 + 650 0.065 0.028713232 -2227.1333 -17.210742 140.22137 441.15183 -2218.089 + 700 0.07 0.02871245 -2227.7384 -18.142557 149.60156 426.80154 -2218.0889 + 750 0.075 0.028712431 -2228.2524 -18.984934 157.56849 413.61924 -2218.0891 + 800 0.08 0.02872489 -2228.7266 -19.793136 164.91833 408.49483 -2218.0892 + 850 0.085 0.028733709 -2229.1638 -20.569819 171.69348 407.47868 -2218.0894 + 900 0.09 0.028737031 -2229.5524 -21.287104 177.71981 400.24086 -2218.0894 + 950 0.095 0.028743446 -2229.9131 -21.938194 183.31613 390.46773 -2218.089 + 1000 0.1 0.028751809 -2230.2806 -22.545689 189.01672 383.80802 -2218.0888 +Loop time of 4.46096 on 1 procs for 1000 steps with 500 atoms + +Performance: 1.937 ns/day, 12.392 hours/ns, 224.167 timesteps/s 100.0% CPU use with 1 MPI tasks x no OpenMP threads MPI task timing breakdown: Section | min time | avg time | max time |%varavg| %total --------------------------------------------------------------- -Pair | 2.0467 | 2.0467 | 2.0467 | 0.0 | 46.88 -Neigh | 0.015636 | 0.015636 | 0.015636 | 0.0 | 0.36 -Comm | 0.032918 | 0.032918 | 0.032918 | 0.0 | 0.75 -Output | 0.027737 | 0.027737 | 0.027737 | 0.0 | 0.64 -Modify | 2.2379 | 2.2379 | 2.2379 | 0.0 | 51.26 -Other | | 0.005233 | | | 0.12 +Pair | 2.0813 | 2.0813 | 2.0813 | 0.0 | 46.65 +Neigh | 0.016021 | 0.016021 | 0.016021 | 0.0 | 0.36 +Comm | 0.03261 | 0.03261 | 0.03261 | 0.0 | 0.73 +Output | 0.02771 | 0.02771 | 0.02771 | 0.0 | 0.62 +Modify | 2.2983 | 2.2983 | 2.2983 | 0.0 | 51.52 +Other | | 0.005103 | | | 0.11 Nlocal: 500 ave 500 max 500 min Histogram: 1 0 0 0 0 0 0 0 0 0 diff --git a/examples/SPIN/nickel/log.19Nov19.spin.nickel_cubic.g++.4 b/examples/SPIN/nickel/log.30Mar20.spin.nickel_cubic.g++.4 similarity index 50% rename from examples/SPIN/nickel/log.19Nov19.spin.nickel_cubic.g++.4 rename to examples/SPIN/nickel/log.30Mar20.spin.nickel_cubic.g++.4 index 1724ef9df8..988fc04869 100644 --- a/examples/SPIN/nickel/log.19Nov19.spin.nickel_cubic.g++.4 +++ b/examples/SPIN/nickel/log.30Mar20.spin.nickel_cubic.g++.4 @@ -1,4 +1,4 @@ -LAMMPS (30 Oct 2019) +LAMMPS (18 Feb 2020) # fcc nickel in a 3d periodic box clear @@ -19,7 +19,7 @@ Created orthogonal box = (0 0 0) to (17.62 17.62 17.62) 1 by 2 by 2 MPI processor grid create_atoms 1 box Created 500 atoms - create_atoms CPU = 0.000827074 secs + create_atoms CPU = 0.000782013 secs # setting mass, mag. moments, and interactions for cobalt @@ -56,7 +56,7 @@ variable magnorm equal c_out_mag[4] variable emag equal c_out_mag[5] variable tmag equal c_out_mag[6] -thermo_style custom step time v_magnorm v_emag temp v_tmag etotal +thermo_style custom step time v_magnorm pe v_emag temp v_tmag etotal thermo 50 compute outsp all property/atom spx spy spz sp fmx fmy fmz @@ -81,42 +81,42 @@ Neighbor list info ... stencil: full/bin/3d bin: standard Per MPI rank memory allocation (min/avg/max) = 7.799 | 7.799 | 7.799 Mbytes -Step Time v_magnorm v_emag Temp v_tmag TotEng - 0 0 0.028733803 0.455085 100.03408 -4301.853 -2218.0905 - 50 0.005 0.028732088 0.2980989 98.74184 -6680.4308 -2218.0904 - 100 0.01 0.02873076 -0.32911738 97.074246 6374.7026 -2218.09 - 150 0.015 0.028730298 -1.3537059 94.073558 1676.9365 -2218.0897 - 200 0.02 0.028733079 -2.6807428 89.419616 934.03305 -2218.0895 - 250 0.025 0.028735725 -4.2256641 84.074249 658.72816 -2218.0893 - 300 0.03 0.028728939 -5.9209085 80.063263 516.58161 -2218.0893 - 350 0.035 0.028716731 -7.6957087 79.36782 424.59625 -2218.0893 - 400 0.04 0.02871114 -9.4720832 83.055773 359.18204 -2218.0893 - 450 0.045 0.02870879 -11.19254 91.28713 312.02076 -2218.0891 - 500 0.05 0.028708873 -12.832707 103.50343 275.92991 -2218.0892 - 550 0.055 0.028710315 -14.370603 118.16778 248.59763 -2218.0893 - 600 0.06 0.028707016 -15.769641 132.83264 231.2886 -2218.089 - 650 0.065 0.028706727 -17.018362 145.39247 222.70304 -2218.0888 - 700 0.07 0.028710482 -18.137792 154.80131 219.85838 -2218.0889 - 750 0.075 0.028705169 -19.130471 160.53663 218.83811 -2218.0892 - 800 0.08 0.028695336 -19.988452 162.95918 215.21456 -2218.089 - 850 0.085 0.028688393 -20.758389 164.33238 210.21496 -2218.0889 - 900 0.09 0.028684101 -21.521505 167.76167 206.14977 -2218.089 - 950 0.095 0.028684705 -22.314351 174.918 201.65878 -2218.0891 - 1000 0.1 0.028691284 -23.080026 184.60192 195.8385 -2218.0893 -Loop time of 2.5947 on 4 procs for 1000 steps with 500 atoms - -Performance: 3.330 ns/day, 7.207 hours/ns, 385.402 timesteps/s -99.9% CPU use with 4 MPI tasks x no OpenMP threads +Step Time v_magnorm PotEng v_emag Temp v_tmag TotEng + 0 0 0.028733803 -2224.5428 0.42125307 100.03408 -8603.706 -2218.0905 + 50 0.005 0.028732088 -2224.4593 0.26463371 98.74184 -13360.862 -2218.0904 + 100 0.01 0.02873076 -2224.3514 -0.36143851 97.074246 12749.405 -2218.09 + 150 0.015 0.028730298 -2224.1575 -1.3850362 94.073558 3353.8731 -2218.0897 + 200 0.02 0.028733079 -2223.8571 -2.7114965 89.419616 1868.0661 -2218.0895 + 250 0.025 0.028735725 -2223.5121 -4.2558913 84.074249 1317.4563 -2218.0893 + 300 0.03 0.028728939 -2223.2534 -5.9510826 80.063263 1033.1632 -2218.0893 + 350 0.035 0.028716731 -2223.2086 -7.7261895 79.36782 849.1925 -2218.0893 + 400 0.04 0.02871114 -2223.4464 -9.5023795 83.055773 718.36408 -2218.0893 + 450 0.045 0.02870879 -2223.9772 -11.222456 91.28713 624.04151 -2218.0891 + 500 0.05 0.028708873 -2224.7652 -12.862835 103.50343 551.85983 -2218.0892 + 550 0.055 0.028710315 -2225.7112 -14.401137 118.16778 497.19527 -2218.0893 + 600 0.06 0.028707016 -2226.6569 -15.799412 132.83264 462.57721 -2218.089 + 650 0.065 0.028706727 -2227.4667 -17.047289 145.39247 445.40608 -2218.0888 + 700 0.07 0.028710482 -2228.0737 -18.167238 154.80131 439.71677 -2218.0889 + 750 0.075 0.028705169 -2228.444 -19.160954 160.53663 437.67621 -2218.0892 + 800 0.08 0.028695336 -2228.6 -20.018327 162.95918 430.42912 -2218.089 + 850 0.085 0.028688393 -2228.6885 -20.787999 164.33238 420.42991 -2218.0889 + 900 0.09 0.028684101 -2228.9098 -21.551488 167.76167 412.29955 -2218.089 + 950 0.095 0.028684705 -2229.3715 -22.344783 174.918 403.31757 -2218.0891 + 1000 0.1 0.028691284 -2229.9963 -23.110976 184.60192 391.677 -2218.0893 +Loop time of 2.47906 on 4 procs for 1000 steps with 500 atoms + +Performance: 3.485 ns/day, 6.886 hours/ns, 403.379 timesteps/s +100.0% CPU use with 4 MPI tasks x no OpenMP threads MPI task timing breakdown: Section | min time | avg time | max time |%varavg| %total --------------------------------------------------------------- -Pair | 0.56409 | 0.58139 | 0.605 | 2.0 | 22.41 -Neigh | 0.0039618 | 0.0041058 | 0.0042889 | 0.2 | 0.16 -Comm | 0.095324 | 0.12147 | 0.13892 | 4.8 | 4.68 -Output | 0.008945 | 0.0089793 | 0.0090477 | 0.0 | 0.35 -Modify | 1.8745 | 1.8765 | 1.8795 | 0.1 | 72.32 -Other | | 0.002217 | | | 0.09 +Pair | 0.56758 | 0.5737 | 0.58816 | 1.1 | 23.14 +Neigh | 0.0040202 | 0.0041578 | 0.0043211 | 0.2 | 0.17 +Comm | 0.095586 | 0.11185 | 0.11853 | 2.8 | 4.51 +Output | 0.0089667 | 0.0089974 | 0.0090702 | 0.0 | 0.36 +Modify | 1.7759 | 1.7783 | 1.7802 | 0.1 | 71.73 +Other | | 0.002029 | | | 0.08 Nlocal: 125 ave 139 max 112 min Histogram: 1 0 1 0 0 0 1 0 0 1 diff --git a/examples/SPIN/read_restart/log.19Nov19.spin.read_data.g++.1 b/examples/SPIN/read_restart/log.30Mar20.spin.read_data.g++.1 similarity index 51% rename from examples/SPIN/read_restart/log.19Nov19.spin.read_data.g++.1 rename to examples/SPIN/read_restart/log.30Mar20.spin.read_data.g++.1 index d5c38a9967..fa198eff46 100644 --- a/examples/SPIN/read_restart/log.19Nov19.spin.read_data.g++.1 +++ b/examples/SPIN/read_restart/log.30Mar20.spin.read_data.g++.1 @@ -1,4 +1,4 @@ -LAMMPS (30 Oct 2019) +LAMMPS (18 Feb 2020) units metal dimension 3 boundary p p p @@ -12,7 +12,7 @@ read_data Norm_randXY_8x8x32.data 1 by 1 by 1 MPI processor grid reading atoms ... 8192 atoms - read_data CPU = 0.0127251 secs + read_data CPU = 0.0118952 secs mass 1 58.93 @@ -41,8 +41,8 @@ variable magnorm equal c_out_mag[4] variable emag equal c_out_mag[5] variable tmag equal c_out_mag[6] -thermo 10 -thermo_style custom step time v_magnorm v_emag v_tmag temp etotal +thermo 20 +thermo_style custom step time v_magnorm pe v_emag v_tmag temp etotal thermo_modify format float %20.15g compute outsp all property/atom spx spy spz sp fmx fmy fmz @@ -66,33 +66,28 @@ Neighbor list info ... pair build: full/bin/atomonly stencil: full/bin/3d bin: standard -Per MPI rank memory allocation (min/avg/max) = 19.68 | 19.68 | 19.68 Mbytes -Step Time v_magnorm v_emag v_tmag Temp TotEng - 0 0 0.0177864461018737 -1323.65841279979 1274.398774669 0 -36558.7284872918 - 10 0.001 0.0177864363786085 -1323.66900862123 1270.76616762926 0.0100007025152235 -36558.7231900452 - 20 0.002 0.0177864377251544 -1323.70032173151 1259.90270462032 0.0394803272360477 -36558.7075350597 - 30 0.003 0.0177864511986563 -1323.75117991179 1243.50772254923 0.0871132837928349 -36558.6821082609 - 40 0.004 0.0177864729727686 -1323.81992477224 1223.91535595806 0.150986538096776 -36558.6477386289 - 50 0.005 0.017786495620418 -1323.90456907402 1203.45497846157 0.22877054554493 -36558.6054195788 - 60 0.006 0.0177865119365897 -1324.00293472823 1183.95496070422 0.317876389336898 -36558.556239967 - 70 0.007 0.0177865186121948 -1324.11277680481 1166.52445270059 0.415601818818485 -36558.5013220755 - 80 0.008 0.0177865171615599 -1324.23190710734 1151.59958937508 0.519276751090729 -36558.4417598279 - 90 0.009 0.0177865117923882 -1324.35831839963 1139.14485136813 0.626407059487507 -36558.3785566998 - 100 0.01 0.0177865063215865 -1324.49029089774 1128.88117273962 0.734797362055872 -36558.3125725035 -Loop time of 14.8985 on 1 procs for 100 steps with 8192 atoms - -Performance: 0.058 ns/day, 413.847 hours/ns, 6.712 timesteps/s -99.6% CPU use with 1 MPI tasks x no OpenMP threads +Per MPI rank memory allocation (min/avg/max) = 19.99 | 19.99 | 19.99 Mbytes +Step Time v_magnorm PotEng v_emag v_tmag Temp TotEng + 0 0 0.0177864461018737 -37220.5576936917 -1323.65841279979 2548.797549338 0 -37220.5576936917 + 20 0.002 0.0177864377251544 -37220.5994965056 -1323.70032173151 2519.80540924064 0.0394803272360477 -37220.5576959255 + 40 0.004 0.0177864729727686 -37220.717561009 -1323.81992477223 2447.83071191612 0.150986538096776 -37220.5577010151 + 60 0.006 0.0177865119365897 -37220.8942652674 -1324.00293472823 2367.90992140844 0.317876389336898 -37220.5577073311 + 80 0.008 0.0177865171615599 -37221.1075079483 -1324.23190710734 2303.19917875015 0.519276751090729 -37220.5577133816 + 100 0.01 0.0177865063215865 -37221.3356992435 -1324.49029089774 2257.76234547925 0.734797362055872 -37220.5577179524 +Loop time of 14.8107 on 1 procs for 100 steps with 8192 atoms + +Performance: 0.058 ns/day, 411.409 hours/ns, 6.752 timesteps/s +99.8% CPU use with 1 MPI tasks x no OpenMP threads MPI task timing breakdown: Section | min time | avg time | max time |%varavg| %total --------------------------------------------------------------- -Pair | 4.5996 | 4.5996 | 4.5996 | 0.0 | 30.87 -Neigh | 3.6 | 3.6 | 3.6 | 0.0 | 24.16 -Comm | 0.057512 | 0.057512 | 0.057512 | 0.0 | 0.39 -Output | 2.4463 | 2.4463 | 2.4463 | 0.0 | 16.42 -Modify | 4.1766 | 4.1766 | 4.1766 | 0.0 | 28.03 -Other | | 0.01854 | | | 0.12 +Pair | 4.4899 | 4.4899 | 4.4899 | 0.0 | 30.32 +Neigh | 3.6436 | 3.6436 | 3.6436 | 0.0 | 24.60 +Comm | 0.05441 | 0.05441 | 0.05441 | 0.0 | 0.37 +Output | 2.4368 | 2.4368 | 2.4368 | 0.0 | 16.45 +Modify | 4.1707 | 4.1707 | 4.1707 | 0.0 | 28.16 +Other | | 0.01532 | | | 0.10 Nlocal: 8192 ave 8192 max 8192 min Histogram: 1 0 0 0 0 0 0 0 0 0 @@ -110,4 +105,4 @@ Dangerous builds not checked Please see the log.cite file for references relevant to this simulation -Total wall time: 0:00:15 +Total wall time: 0:00:14 diff --git a/examples/SPIN/read_restart/log.19Nov19.spin.read_data.g++.4 b/examples/SPIN/read_restart/log.30Mar20.spin.read_data.g++.4 similarity index 52% rename from examples/SPIN/read_restart/log.19Nov19.spin.read_data.g++.4 rename to examples/SPIN/read_restart/log.30Mar20.spin.read_data.g++.4 index decd7f66de..16be3ba1ab 100644 --- a/examples/SPIN/read_restart/log.19Nov19.spin.read_data.g++.4 +++ b/examples/SPIN/read_restart/log.30Mar20.spin.read_data.g++.4 @@ -1,4 +1,4 @@ -LAMMPS (30 Oct 2019) +LAMMPS (18 Feb 2020) units metal dimension 3 boundary p p p @@ -12,7 +12,7 @@ read_data Norm_randXY_8x8x32.data 1 by 1 by 4 MPI processor grid reading atoms ... 8192 atoms - read_data CPU = 0.0103889 secs + read_data CPU = 0.0181651 secs mass 1 58.93 @@ -41,8 +41,8 @@ variable magnorm equal c_out_mag[4] variable emag equal c_out_mag[5] variable tmag equal c_out_mag[6] -thermo 10 -thermo_style custom step time v_magnorm v_emag v_tmag temp etotal +thermo 20 +thermo_style custom step time v_magnorm pe v_emag v_tmag temp etotal thermo_modify format float %20.15g compute outsp all property/atom spx spy spz sp fmx fmy fmz @@ -66,33 +66,28 @@ Neighbor list info ... pair build: full/bin/atomonly stencil: full/bin/3d bin: standard -Per MPI rank memory allocation (min/avg/max) = 8.422 | 8.508 | 8.751 Mbytes -Step Time v_magnorm v_emag v_tmag Temp TotEng - 0 0 0.0177864461018739 -1323.65841279979 1274.398774669 0 -37220.5576936996 - 10 0.001 0.0177864050983603 -1323.66900862096 1270.76618998865 0.0100007022583634 -37220.5576943555 - 20 0.002 0.0177863936833753 -1323.70032172864 1259.90276925185 0.0394803245313843 -37220.5576959254 - 30 0.003 0.0177864120892274 -1323.75117990111 1243.50783331745 0.087113273744231 -37220.5576982173 - 40 0.004 0.0177864533855652 -1323.8199247464 1223.91551103958 0.150986513868405 -37220.557701015 - 50 0.005 0.0177865078997919 -1323.90456902433 1203.45516787752 0.228770499151177 -37220.5577041159 - 60 0.006 0.0177865576955448 -1324.0029346455 1183.95517338662 0.317876312538184 -37220.5577073314 - 70 0.007 0.0177865860816348 -1324.11277667948 1166.52467969539 0.415601703342581 -37220.5577104775 - 80 0.008 0.0177865881669081 -1324.23190693081 1151.59982868413 0.519276589926842 -37220.557713381 - 90 0.009 0.0177865780982769 -1324.35831816525 1139.14509878533 0.626406847905203 -37220.557715901 - 100 0.01 0.017786564605084 -1324.49029060173 1128.88143013641 0.734797098519806 -37220.557717952 -Loop time of 4.32342 on 4 procs for 100 steps with 8192 atoms - -Performance: 0.200 ns/day, 120.095 hours/ns, 23.130 timesteps/s +Per MPI rank memory allocation (min/avg/max) = 8.961 | 9.047 | 9.29 Mbytes +Step Time v_magnorm PotEng v_emag v_tmag Temp TotEng + 0 0 0.0177864461018739 -37220.5576936996 -1323.65841279979 2548.797549338 0 -37220.5576936996 + 20 0.002 0.0177863936833753 -37220.5994965026 -1323.70032172864 2519.8055385037 0.0394803245313843 -37220.5576959254 + 40 0.004 0.0177864533855652 -37220.7175609833 -1323.8199247464 2447.83102207917 0.150986513868405 -37220.557701015 + 60 0.006 0.0177865576955448 -37220.8942651864 -1324.0029346455 2367.91034677324 0.317876312538184 -37220.5577073314 + 80 0.008 0.0177865881669081 -37221.1075077771 -1324.23190693081 2303.19965736826 0.519276589926842 -37220.557713381 + 100 0.01 0.017786564605084 -37221.335698964 -1324.49029060173 2257.76286027282 0.734797098519806 -37220.557717952 +Loop time of 4.28539 on 4 procs for 100 steps with 8192 atoms + +Performance: 0.202 ns/day, 119.039 hours/ns, 23.335 timesteps/s 99.8% CPU use with 4 MPI tasks x no OpenMP threads MPI task timing breakdown: Section | min time | avg time | max time |%varavg| %total --------------------------------------------------------------- -Pair | 1.185 | 1.1925 | 1.1991 | 0.5 | 27.58 -Neigh | 0.93459 | 0.93934 | 0.94983 | 0.6 | 21.73 -Comm | 0.042462 | 0.059373 | 0.069249 | 4.1 | 1.37 -Output | 0.61823 | 0.63273 | 0.64528 | 1.3 | 14.63 -Modify | 1.4827 | 1.4955 | 1.5099 | 0.8 | 34.59 -Other | | 0.003968 | | | 0.09 +Pair | 1.1858 | 1.19 | 1.1928 | 0.2 | 27.77 +Neigh | 0.95854 | 0.96256 | 0.96919 | 0.4 | 22.46 +Comm | 0.037895 | 0.047635 | 0.054238 | 2.8 | 1.11 +Output | 0.61455 | 0.62999 | 0.64348 | 1.4 | 14.70 +Modify | 1.4377 | 1.4509 | 1.4673 | 0.9 | 33.86 +Other | | 0.004326 | | | 0.10 Nlocal: 2048 ave 2061 max 2035 min Histogram: 1 0 0 1 0 0 1 0 0 1 diff --git a/examples/SPIN/read_restart/log.19Nov19.spin.restart.g++.1 b/examples/SPIN/read_restart/log.30Mar20.spin.restart.g++.1 similarity index 54% rename from examples/SPIN/read_restart/log.19Nov19.spin.restart.g++.1 rename to examples/SPIN/read_restart/log.30Mar20.spin.restart.g++.1 index c7544dedfa..f53db873ae 100644 --- a/examples/SPIN/read_restart/log.19Nov19.spin.restart.g++.1 +++ b/examples/SPIN/read_restart/log.30Mar20.spin.restart.g++.1 @@ -1,4 +1,4 @@ -LAMMPS (30 Oct 2019) +LAMMPS (18 Feb 2020) # start a spin-lattice simulation from a data file units metal atom_style spin @@ -10,13 +10,13 @@ boundary p p p atom_modify map array read_restart restart_hcp_cobalt.equil -WARNING: Restart file used different # of processors: 4 vs. 1 (../read_restart.cpp:742) +WARNING: Restart file used different # of processors: 4 vs. 1 (../read_restart.cpp:752) restoring atom style spin from restart orthogonal box = (0 0 0) to (12.5355 21.7121 20.4704) 1 by 1 by 1 MPI processor grid restoring pair style spin/exchange from restart 500 atoms - read_restart CPU = 0.000396967 secs + read_restart CPU = 0.00177002 secs # setting mass, mag. moments, and interactions @@ -47,8 +47,8 @@ variable magnorm equal c_out_mag[4] variable emag equal c_out_mag[5] variable tmag equal c_out_mag[6] -thermo 10 -thermo_style custom step time v_magnorm v_emag v_tmag temp etotal +thermo 20 +thermo_style custom step time v_magnorm pe v_emag v_tmag temp etotal thermo_modify format float %20.15g compute outsp all property/atom spx spy spz sp fmx fmy fmz @@ -72,33 +72,28 @@ Neighbor list info ... pair build: full/bin/atomonly stencil: full/bin/3d bin: standard -Per MPI rank memory allocation (min/avg/max) = 6.816 | 6.816 | 6.816 Mbytes -Step Time v_magnorm v_emag v_tmag Temp TotEng - 1000 0 0.108317262557656 -10.7649197733649 2538.4247868621 0 -2200.38241212222 - 1010 0.001 0.108317281393701 -10.7743543303502 2527.22692799144 0.146167392153018 -2200.3776953858 - 1020 0.002 0.108317318482233 -10.8022550516195 2509.47863584151 0.577304300153637 -2200.36374625815 - 1030 0.003 0.108317366763426 -10.8476659807571 2487.5614649682 1.27529086243277 -2200.34104256596 - 1040 0.004 0.108317415532953 -10.9092708333549 2463.97963921611 2.21443906326453 -2200.31024227618 - 1050 0.005 0.108317453851058 -10.98553406179 2440.70473642157 3.36396898978859 -2200.27211302201 - 1060 0.006 0.108317473584086 -11.0748008072977 2418.66477599297 4.68991434259399 -2200.22748216359 - 1070 0.007 0.108317471632913 -11.175325501803 2397.59274785581 6.15596240129541 -2200.17722244953 - 1080 0.008 0.108317450667394 -11.2852665400894 2376.32871275528 7.7237909750654 -2200.12225459883 - 1090 0.009 0.108317417687893 -11.4027246787047 2353.52646917989 9.35409156720424 -2200.06352807392 - 1100 0.01 0.108317381194814 -11.52585602487 2328.41541723561 11.0087303030003 -2200.0019646458 -Loop time of 0.964681 on 1 procs for 100 steps with 500 atoms - -Performance: 0.896 ns/day, 26.797 hours/ns, 103.661 timesteps/s +Per MPI rank memory allocation (min/avg/max) = 7.422 | 7.422 | 7.422 Mbytes +Step Time v_magnorm PotEng v_emag v_tmag Temp TotEng + 1000 0 0.108317262557656 -2205.7648720089 -10.7649197733649 5076.84957372419 0 -2205.7648720089 + 1020 0.002 0.108317318482233 -2205.8021103803 -10.8022550516195 5018.95727168301 0.577304300153637 -2205.76487378396 + 1040 0.004 0.108317415532953 -2205.90771081135 -10.9092708333549 4927.95927843222 2.21443906326453 -2205.76487769286 + 1060 0.006 0.108317473584086 -2206.06738585221 -11.0748008072977 4837.32955198593 4.68991434259399 -2205.76488256723 + 1080 0.008 0.108317450667394 -2206.26307866122 -11.2852665400894 4752.65742551055 7.7237909750654 -2205.76488786887 + 1100 0.01 0.108317381194814 -2206.47496470578 -11.52585602487 4656.83083447122 11.0087303030003 -2205.76489265824 +Loop time of 0.984859 on 1 procs for 100 steps with 500 atoms + +Performance: 0.877 ns/day, 27.357 hours/ns, 101.537 timesteps/s 100.0% CPU use with 1 MPI tasks x no OpenMP threads MPI task timing breakdown: Section | min time | avg time | max time |%varavg| %total --------------------------------------------------------------- -Pair | 0.29842 | 0.29842 | 0.29842 | 0.0 | 30.93 -Neigh | 0.25359 | 0.25359 | 0.25359 | 0.0 | 26.29 -Comm | 0.0069926 | 0.0069926 | 0.0069926 | 0.0 | 0.72 -Output | 0.14398 | 0.14398 | 0.14398 | 0.0 | 14.93 -Modify | 0.26045 | 0.26045 | 0.26045 | 0.0 | 27.00 -Other | | 0.001249 | | | 0.13 +Pair | 0.3014 | 0.3014 | 0.3014 | 0.0 | 30.60 +Neigh | 0.26063 | 0.26063 | 0.26063 | 0.0 | 26.46 +Comm | 0.0070357 | 0.0070357 | 0.0070357 | 0.0 | 0.71 +Output | 0.14148 | 0.14148 | 0.14148 | 0.0 | 14.37 +Modify | 0.27309 | 0.27309 | 0.27309 | 0.0 | 27.73 +Other | | 0.001222 | | | 0.12 Nlocal: 500 ave 500 max 500 min Histogram: 1 0 0 0 0 0 0 0 0 0 diff --git a/examples/SPIN/read_restart/log.19Nov19.spin.restart.g++.4 b/examples/SPIN/read_restart/log.30Mar20.spin.restart.g++.4 similarity index 54% rename from examples/SPIN/read_restart/log.19Nov19.spin.restart.g++.4 rename to examples/SPIN/read_restart/log.30Mar20.spin.restart.g++.4 index 6443d341cd..274b58a16b 100644 --- a/examples/SPIN/read_restart/log.19Nov19.spin.restart.g++.4 +++ b/examples/SPIN/read_restart/log.30Mar20.spin.restart.g++.4 @@ -1,4 +1,4 @@ -LAMMPS (30 Oct 2019) +LAMMPS (18 Feb 2020) # start a spin-lattice simulation from a data file units metal atom_style spin @@ -15,7 +15,7 @@ read_restart restart_hcp_cobalt.equil 1 by 2 by 2 MPI processor grid restoring pair style spin/exchange from restart 500 atoms - read_restart CPU = 0.000922918 secs + read_restart CPU = 0.001544 secs # setting mass, mag. moments, and interactions @@ -46,8 +46,8 @@ variable magnorm equal c_out_mag[4] variable emag equal c_out_mag[5] variable tmag equal c_out_mag[6] -thermo 10 -thermo_style custom step time v_magnorm v_emag v_tmag temp etotal +thermo 20 +thermo_style custom step time v_magnorm pe v_emag v_tmag temp etotal thermo_modify format float %20.15g compute outsp all property/atom spx spy spz sp fmx fmy fmz @@ -71,33 +71,28 @@ Neighbor list info ... pair build: full/bin/atomonly stencil: full/bin/3d bin: standard -Per MPI rank memory allocation (min/avg/max) = 6.704 | 6.704 | 6.704 Mbytes -Step Time v_magnorm v_emag v_tmag Temp TotEng - 1000 0 0.108317262557656 -10.7649197733649 2538.4247868621 0 -2205.7648720085 - 1010 0.001 0.108317290362529 -10.7743543303489 2527.22680531097 0.146167392137698 -2205.76487255096 - 1020 0.002 0.108317316207642 -10.8022550521284 2509.47840782645 0.577304308061779 -2205.76487378396 - 1030 0.003 0.108317335980455 -10.8476659832667 2487.56119588937 1.27529090130452 -2205.76487555634 - 1040 0.004 0.108317347902639 -10.9092708400684 2463.97936529674 2.21443916694928 -2205.76487769286 - 1050 0.005 0.108317349786635 -10.9855340757384 2440.7044253165 3.36396920446814 -2205.76488005291 - 1060 0.006 0.108317342445881 -11.0748008315013 2418.66438763214 4.68991471343994 -2205.76488256723 - 1070 0.007 0.10831733355314 -11.1753255362286 2397.59228728929 6.15596292529133 -2205.76488520046 - 1080 0.008 0.108317320750099 -11.2852665775656 2376.32820919279 7.7237915384778 -2205.76488786888 - 1090 0.009 0.108317304079233 -11.402724701646 2353.52588586648 9.35409189724323 -2205.7648904133 - 1100 0.01 0.108317284409678 -11.5258560062539 2328.41472376239 11.0087299868288 -2205.76489265829 -Loop time of 0.410707 on 4 procs for 100 steps with 500 atoms - -Performance: 2.104 ns/day, 11.409 hours/ns, 243.483 timesteps/s +Per MPI rank memory allocation (min/avg/max) = 7.324 | 7.324 | 7.324 Mbytes +Step Time v_magnorm PotEng v_emag v_tmag Temp TotEng + 1000 0 0.108317262557656 -2205.7648720085 -10.7649197733649 5076.8495737242 0 -2205.7648720085 + 1020 0.002 0.108317316207642 -2205.8021103808 -10.8022550521284 5018.9568156529 0.577304308061779 -2205.76487378396 + 1040 0.004 0.108317347902639 -2205.90771081804 -10.9092708400684 4927.95873059348 2.21443916694928 -2205.76487769286 + 1060 0.006 0.108317342445881 -2206.06738587612 -11.0748008315013 4837.32877526428 4.68991471343994 -2205.76488256723 + 1080 0.008 0.108317320750099 -2206.26307869757 -11.2852665775656 4752.65641838558 7.7237915384778 -2205.76488786888 + 1100 0.01 0.108317284409678 -2206.47496468544 -11.5258560062539 4656.82944752479 11.0087299868288 -2205.76489265829 +Loop time of 0.431045 on 4 procs for 100 steps with 500 atoms + +Performance: 2.004 ns/day, 11.973 hours/ns, 231.995 timesteps/s 99.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 | 0.083043 | 0.083714 | 0.084202 | 0.1 | 20.38 -Neigh | 0.063158 | 0.064429 | 0.065314 | 0.3 | 15.69 -Comm | 0.012237 | 0.013588 | 0.014798 | 0.8 | 3.31 -Output | 0.039088 | 0.040653 | 0.042176 | 0.6 | 9.90 -Modify | 0.20645 | 0.20795 | 0.20945 | 0.2 | 50.63 -Other | | 0.0003724 | | | 0.09 +Pair | 0.088207 | 0.088619 | 0.088949 | 0.1 | 20.56 +Neigh | 0.06517 | 0.066388 | 0.068188 | 0.5 | 15.40 +Comm | 0.01411 | 0.015963 | 0.017203 | 0.9 | 3.70 +Output | 0.040537 | 0.042234 | 0.043886 | 0.6 | 9.80 +Modify | 0.21579 | 0.21742 | 0.21891 | 0.2 | 50.44 +Other | | 0.0004218 | | | 0.10 Nlocal: 125 ave 127 max 122 min Histogram: 1 0 0 0 1 0 0 0 0 2 diff --git a/examples/SPIN/read_restart/log.19Nov19.spin.write_restart.g++.1 b/examples/SPIN/read_restart/log.30Mar20.spin.write_restart.g++.1 similarity index 61% rename from examples/SPIN/read_restart/log.19Nov19.spin.write_restart.g++.1 rename to examples/SPIN/read_restart/log.30Mar20.spin.write_restart.g++.1 index 9dbe1a3548..fc81b23cac 100644 --- a/examples/SPIN/read_restart/log.19Nov19.spin.write_restart.g++.1 +++ b/examples/SPIN/read_restart/log.30Mar20.spin.write_restart.g++.1 @@ -1,4 +1,4 @@ -LAMMPS (30 Oct 2019) +LAMMPS (18 Feb 2020) # fcc cobalt in a 3d periodic box units metal @@ -18,7 +18,7 @@ Created orthogonal box = (0 0 0) to (12.5355 21.7121 20.4704) 1 by 1 by 1 MPI processor grid create_atoms 1 box Created 500 atoms - create_atoms CPU = 0.000552893 secs + create_atoms CPU = 0.00110984 secs # setting mass, mag. moments, and interactions for cobalt @@ -51,7 +51,7 @@ variable magnorm equal c_out_mag[4] variable emag equal c_out_mag[5] variable tmag equal c_out_mag[6] -thermo_style custom step time v_magnorm v_emag temp etotal +thermo_style custom step time v_magnorm pe v_emag temp etotal thermo 100 compute outsp all property/atom spx spy spz sp fmx fmy fmz @@ -71,32 +71,32 @@ Neighbor list info ... stencil: full/bin/3d bin: standard Per MPI rank memory allocation (min/avg/max) = 6.947 | 6.947 | 6.947 Mbytes -Step Time v_magnorm v_emag Temp TotEng - 0 0 0.076558814 1.7982359 0 0.89911794 - 100 0.01 0.077628154 0.73387834 0 0.36693917 - 200 0.02 0.076678996 -0.4048463 0 -0.20242315 - 300 0.03 0.079174837 -1.3519103 0 -0.67595514 - 400 0.04 0.085031632 -3.0345702 0 -1.5172851 - 500 0.05 0.08702747 -4.0853256 0 -2.0426628 - 600 0.06 0.087066482 -5.259549 0 -2.6297745 - 700 0.07 0.089788894 -6.629076 0 -3.314538 - 800 0.08 0.091699611 -8.0574087 0 -4.0287043 - 900 0.09 0.090038899 -9.2012019 0 -4.600601 - 1000 0.1 0.093257309 -10.470452 0 -5.2352261 -Loop time of 3.37852 on 1 procs for 1000 steps with 500 atoms - -Performance: 2.557 ns/day, 9.385 hours/ns, 295.987 timesteps/s -99.6% CPU use with 1 MPI tasks x no OpenMP threads +Step Time v_magnorm PotEng v_emag Temp TotEng + 0 0 0.076558814 1.7982359 1.7982359 0 1.7982359 + 100 0.01 0.077628154 0.73387834 0.73387834 0 0.73387834 + 200 0.02 0.076678996 -0.4048463 -0.4048463 0 -0.4048463 + 300 0.03 0.079174837 -1.3519103 -1.3519103 0 -1.3519103 + 400 0.04 0.085031632 -3.0345702 -3.0345702 0 -3.0345702 + 500 0.05 0.08702747 -4.0853256 -4.0853256 0 -4.0853256 + 600 0.06 0.087066482 -5.259549 -5.259549 0 -5.259549 + 700 0.07 0.089788894 -6.629076 -6.629076 0 -6.629076 + 800 0.08 0.091699611 -8.0574087 -8.0574087 0 -8.0574087 + 900 0.09 0.090038899 -9.2012019 -9.2012019 0 -9.2012019 + 1000 0.1 0.093257309 -10.470452 -10.470452 0 -10.470452 +Loop time of 3.38866 on 1 procs for 1000 steps with 500 atoms + +Performance: 2.550 ns/day, 9.413 hours/ns, 295.102 timesteps/s +99.4% CPU use with 1 MPI tasks x no OpenMP threads MPI task timing breakdown: Section | min time | avg time | max time |%varavg| %total --------------------------------------------------------------- -Pair | 0.45808 | 0.45808 | 0.45808 | 0.0 | 13.56 +Pair | 0.46673 | 0.46673 | 0.46673 | 0.0 | 13.77 Neigh | 0 | 0 | 0 | 0.0 | 0.00 -Comm | 0.019707 | 0.019707 | 0.019707 | 0.0 | 0.58 -Output | 1.3865 | 1.3865 | 1.3865 | 0.0 | 41.04 -Modify | 1.5106 | 1.5106 | 1.5106 | 0.0 | 44.71 -Other | | 0.003624 | | | 0.11 +Comm | 0.019901 | 0.019901 | 0.019901 | 0.0 | 0.59 +Output | 1.3838 | 1.3838 | 1.3838 | 0.0 | 40.84 +Modify | 1.5145 | 1.5145 | 1.5145 | 0.0 | 44.69 +Other | | 0.003689 | | | 0.11 Nlocal: 500 ave 500 max 500 min Histogram: 1 0 0 0 0 0 0 0 0 0 @@ -113,7 +113,6 @@ Neighbor list builds = 0 Dangerous builds = 0 write_restart restart_hcp_cobalt.equil - Please see the log.cite file for references relevant to this simulation Total wall time: 0:00:03 diff --git a/examples/SPIN/read_restart/log.19Nov19.spin.write_restart.g++.4 b/examples/SPIN/read_restart/log.30Mar20.spin.write_restart.g++.4 similarity index 61% rename from examples/SPIN/read_restart/log.19Nov19.spin.write_restart.g++.4 rename to examples/SPIN/read_restart/log.30Mar20.spin.write_restart.g++.4 index cb98274603..607fd54dfa 100644 --- a/examples/SPIN/read_restart/log.19Nov19.spin.write_restart.g++.4 +++ b/examples/SPIN/read_restart/log.30Mar20.spin.write_restart.g++.4 @@ -1,4 +1,4 @@ -LAMMPS (30 Oct 2019) +LAMMPS (18 Feb 2020) # fcc cobalt in a 3d periodic box units metal @@ -18,7 +18,7 @@ Created orthogonal box = (0 0 0) to (12.5355 21.7121 20.4704) 1 by 2 by 2 MPI processor grid create_atoms 1 box Created 500 atoms - create_atoms CPU = 0.000751972 secs + create_atoms CPU = 0.000762224 secs # setting mass, mag. moments, and interactions for cobalt @@ -51,7 +51,7 @@ variable magnorm equal c_out_mag[4] variable emag equal c_out_mag[5] variable tmag equal c_out_mag[6] -thermo_style custom step time v_magnorm v_emag temp etotal +thermo_style custom step time v_magnorm pe v_emag temp etotal thermo 100 compute outsp all property/atom spx spy spz sp fmx fmy fmz @@ -71,32 +71,32 @@ Neighbor list info ... stencil: full/bin/3d bin: standard Per MPI rank memory allocation (min/avg/max) = 6.868 | 6.868 | 6.868 Mbytes -Step Time v_magnorm v_emag Temp TotEng - 0 0 0.076558814 1.7982359 0 1.7982359 - 100 0.01 0.078299981 0.88259584 0 0.88259584 - 200 0.02 0.081260508 -0.43484722 0 -0.43484722 - 300 0.03 0.081195603 -1.7408209 0 -1.7408209 - 400 0.04 0.087298495 -3.4139038 0 -3.4139038 - 500 0.05 0.087663924 -4.3766089 0 -4.3766089 - 600 0.06 0.091713683 -5.8534921 0 -5.8534921 - 700 0.07 0.093779119 -6.706628 0 -6.706628 - 800 0.08 0.097960611 -7.8688568 0 -7.8688568 - 900 0.09 0.10193463 -9.5888008 0 -9.5888008 - 1000 0.1 0.10831726 -10.76492 0 -10.76492 -Loop time of 1.70473 on 4 procs for 1000 steps with 500 atoms - -Performance: 5.068 ns/day, 4.735 hours/ns, 586.602 timesteps/s -99.6% CPU use with 4 MPI tasks x no OpenMP threads +Step Time v_magnorm PotEng v_emag Temp TotEng + 0 0 0.076558814 1.7982359 1.7982359 0 1.7982359 + 100 0.01 0.078299981 0.88259584 0.88259584 0 0.88259584 + 200 0.02 0.081260508 -0.43484722 -0.43484722 0 -0.43484722 + 300 0.03 0.081195603 -1.7408209 -1.7408209 0 -1.7408209 + 400 0.04 0.087298495 -3.4139038 -3.4139038 0 -3.4139038 + 500 0.05 0.087663924 -4.3766089 -4.3766089 0 -4.3766089 + 600 0.06 0.091713683 -5.8534921 -5.8534921 0 -5.8534921 + 700 0.07 0.093779119 -6.706628 -6.706628 0 -6.706628 + 800 0.08 0.097960611 -7.8688568 -7.8688568 0 -7.8688568 + 900 0.09 0.10193463 -9.5888008 -9.5888008 0 -9.5888008 + 1000 0.1 0.10831726 -10.76492 -10.76492 0 -10.76492 +Loop time of 1.77116 on 4 procs for 1000 steps with 500 atoms + +Performance: 4.878 ns/day, 4.920 hours/ns, 564.603 timesteps/s +99.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 | 0.11636 | 0.11927 | 0.12069 | 0.5 | 7.00 +Pair | 0.11596 | 0.11824 | 0.12217 | 0.7 | 6.68 Neigh | 0 | 0 | 0 | 0.0 | 0.00 -Comm | 0.049208 | 0.052445 | 0.057424 | 1.4 | 3.08 -Output | 0.38579 | 0.40345 | 0.4199 | 2.0 | 23.67 -Modify | 1.1138 | 1.1282 | 1.1436 | 1.1 | 66.18 -Other | | 0.001322 | | | 0.08 +Comm | 0.05593 | 0.058951 | 0.062542 | 1.2 | 3.33 +Output | 0.38413 | 0.40227 | 0.41918 | 2.1 | 22.71 +Modify | 1.1736 | 1.1903 | 1.2068 | 1.2 | 67.20 +Other | | 0.001427 | | | 0.08 Nlocal: 125 ave 125 max 125 min Histogram: 4 0 0 0 0 0 0 0 0 0 @@ -113,7 +113,6 @@ Neighbor list builds = 0 Dangerous builds = 0 write_restart restart_hcp_cobalt.equil - Please see the log.cite file for references relevant to this simulation Total wall time: 0:00:01 diff --git a/examples/SPIN/read_restart/restart_hcp_cobalt.equil b/examples/SPIN/read_restart/restart_hcp_cobalt.equil new file mode 100644 index 0000000000000000000000000000000000000000..e860fcfb281fa53ae5496a10d87c1ccc092ddea5 GIT binary patch literal 60893 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 literal 0 HcmV?d00001 diff --git a/examples/SPIN/setforce_spin/log.19Nov19.spin.setforce.g++.1 b/examples/SPIN/setforce_spin/log.30Mar20.spin.setforce.g++.1 similarity index 69% rename from examples/SPIN/setforce_spin/log.19Nov19.spin.setforce.g++.1 rename to examples/SPIN/setforce_spin/log.30Mar20.spin.setforce.g++.1 index ed5c037feb..365482cec8 100644 --- a/examples/SPIN/setforce_spin/log.19Nov19.spin.setforce.g++.1 +++ b/examples/SPIN/setforce_spin/log.30Mar20.spin.setforce.g++.1 @@ -1,4 +1,4 @@ -LAMMPS (30 Oct 2019) +LAMMPS (18 Feb 2020) units metal dimension 3 @@ -18,10 +18,10 @@ region reg1 block 0.0 10.0 0.0 5.0 0.0 1.0 region reg2 block 0.0 10.0 6.0 10.0 0.0 1.0 create_atoms 1 region reg1 Created 120 atoms - create_atoms CPU = 0.000998974 secs + create_atoms CPU = 0.001055 secs create_atoms 2 region reg2 Created 80 atoms - create_atoms CPU = 4.1008e-05 secs + create_atoms CPU = 0.000218153 secs # setting mass, mag. moments, and interactions for bcc iron @@ -59,7 +59,7 @@ variable emag equal c_out_mag[5] variable tmag equal c_out_mag[6] thermo 100 -thermo_style custom step time v_magx v_magz v_magnorm v_tmag etotal +thermo_style custom step time v_magx v_magz v_magnorm v_tmag pe v_emag etotal thermo_modify format float %20.15g compute outsp all property/atom spx spy spz sp fmx fmy fmz @@ -68,7 +68,7 @@ dump 1 all custom 100 dump.lammpstrj type x y z c_outsp[1] c_outsp[2] c_outsp[ min_style spin min_modify alpha_damp 1.0 discrete_factor 20.0 minimize 1.0e-16 1.0e-16 1000 100 -WARNING: Using 'neigh_modify every 1 delay 0 check yes' setting during minimization (../min.cpp:177) +WARNING: Using 'neigh_modify every 1 delay 0 check yes' setting during minimization (../min.cpp:190) Neighbor list info ... update every 1 steps, delay 0 steps, check yes max neighbors/atom: 2000, page size: 100000 @@ -87,26 +87,26 @@ Neighbor list info ... stencil: none bin: none Per MPI rank memory allocation (min/avg/max) = 7.215 | 7.215 | 7.215 Mbytes -Step Time v_magx v_magz v_magnorm v_tmag TotEng - 0 0 0.000143282585570239 0.615515043943419 0.615726279597251 24.9364200982478 0.121881906963737 - 100 0.01 0.000616167502203097 0.594467364025194 0.594498630048783 0.00188964439583802 0.0371335982020527 - 200 0.02 0.000498981016106215 0.595175581059792 0.595218717456538 0.000158614984300385 0.036877233648055 - 300 0.03 0.000211899815837572 0.595357874794342 0.595402442288391 1.44454891242177e-05 0.0368548794182375 - 400 0.04 7.98967577397158e-05 0.595395828381057 0.595440657806237 1.50721782707597e-06 0.0368527556548781 - 500 0.05 2.9121648914103e-05 0.595403174462525 0.595448064489507 1.74330474543395e-07 0.0368525254239539 - 600 0.06 1.04772320898497e-05 0.595404457003426 0.595449362424563 2.12204214498221e-08 0.0368524982492743 - 700 0.07 3.74634771616422e-06 0.595404627382825 0.595449536940641 2.63852407890463e-09 0.036852494912626 - 800 0.08 1.33525617457914e-06 0.595404626884198 0.595449537611055 3.30772506699851e-10 0.0368524944963445 - 900 0.09 4.75054785504803e-07 0.595404613763238 0.595449524836571 4.15940445257144e-11 0.0368524944440918 - 1000 0.1 1.68843135202601e-07 0.59540460640039 0.595449517580793 5.23632581178917e-12 0.036852494437518 -Loop time of 0.0966749 on 1 procs for 1000 steps with 200 atoms +Step Time v_magx v_magz v_magnorm v_tmag PotEng v_emag TotEng + 0 0 0.000143282585570239 0.615515043943419 0.615726279597251 49.8728401964955 0.251043691626527 0.251043691626527 0.251043691626527 + 100 0.01 0.000616167502203097 0.594467364025194 0.594498630048783 0.00377928879167604 0.0834709010541719 0.0834709010541712 0.0834709010541719 + 200 0.02 0.000498981016106215 0.595175581059792 0.595218717456538 0.00031722996860077 0.0832283413495717 0.0832283413495712 0.0832283413495717 + 300 0.03 0.000211899815837572 0.595357874794342 0.595402442288391 2.88909782484355e-05 0.0832377953250733 0.0832377953250725 0.0832377953250733 + 400 0.04 7.98967577397158e-05 0.595395828381057 0.595440657806237 3.01443565415194e-06 0.083244344104517 0.0832443441045165 0.083244344104517 + 500 0.05 2.9121648914103e-05 0.595403174462525 0.595448064489507 3.48660949086791e-07 0.083246108993562 0.0832461089935612 0.083246108993562 + 600 0.06 1.04772320898497e-05 0.595404457003426 0.595449362424563 4.24408428996442e-08 0.0832465159731265 0.0832465159731254 0.0832465159731265 + 700 0.07 3.74634771616422e-06 0.595404627382825 0.595449536940641 5.27704815780927e-09 0.083246603592368 0.0832466035923677 0.083246603592368 + 800 0.08 1.33525617457914e-06 0.595404626884198 0.595449537611055 6.61545013399702e-10 0.0832466213447961 0.0832466213447953 0.0832466213447961 + 900 0.09 4.75054785504803e-07 0.595404613763238 0.595449524836571 8.31880890514288e-11 0.0832466246300996 0.083246624630099 0.0832466246300996 + 1000 0.1 1.68843135202601e-07 0.59540460640039 0.595449517580793 1.04726516235783e-11 0.083246625128602 0.0832466251286012 0.083246625128602 +Loop time of 0.0999272 on 1 procs for 1000 steps with 200 atoms 100.0% CPU use with 1 MPI tasks x no OpenMP threads Minimization stats: Stopping criterion = max iterations Energy initial, next-to-last, final = - 0.121881906964 0.0368524944375 0.0368524944375 + 0.251043691627 0.0832466251273 0.0832466251286 Force two-norm initial, final = 0 0 Force max component initial, final = 0 0 Final line search alpha, max atom move = 0 0 @@ -115,12 +115,12 @@ Minimization stats: MPI task timing breakdown: Section | min time | avg time | max time |%varavg| %total --------------------------------------------------------------- -Pair | 0.08679 | 0.08679 | 0.08679 | 0.0 | 89.77 +Pair | 0.089765 | 0.089765 | 0.089765 | 0.0 | 89.83 Neigh | 0 | 0 | 0 | 0.0 | 0.00 -Comm | 7.2956e-05 | 7.2956e-05 | 7.2956e-05 | 0.0 | 0.08 -Output | 0.0033231 | 0.0033231 | 0.0033231 | 0.0 | 3.44 -Modify | 0.0022919 | 0.0022919 | 0.0022919 | 0.0 | 2.37 -Other | | 0.004197 | | | 4.34 +Comm | 7.2956e-05 | 7.2956e-05 | 7.2956e-05 | 0.0 | 0.07 +Output | 0.0033209 | 0.0033209 | 0.0033209 | 0.0 | 3.32 +Modify | 0.0024664 | 0.0024664 | 0.0024664 | 0.0 | 2.47 +Other | | 0.004302 | | | 4.30 Nlocal: 200 ave 200 max 200 min Histogram: 1 0 0 0 0 0 0 0 0 0 diff --git a/examples/SPIN/setforce_spin/log.19Nov19.spin.setforce.g++.4 b/examples/SPIN/setforce_spin/log.30Mar20.spin.setforce.g++.4 similarity index 58% rename from examples/SPIN/setforce_spin/log.19Nov19.spin.setforce.g++.4 rename to examples/SPIN/setforce_spin/log.30Mar20.spin.setforce.g++.4 index 4ce1497957..c59fb96bc5 100644 --- a/examples/SPIN/setforce_spin/log.19Nov19.spin.setforce.g++.4 +++ b/examples/SPIN/setforce_spin/log.30Mar20.spin.setforce.g++.4 @@ -1,4 +1,4 @@ -LAMMPS (30 Oct 2019) +LAMMPS (18 Feb 2020) units metal dimension 3 @@ -18,10 +18,10 @@ region reg1 block 0.0 10.0 0.0 5.0 0.0 1.0 region reg2 block 0.0 10.0 6.0 10.0 0.0 1.0 create_atoms 1 region reg1 Created 120 atoms - create_atoms CPU = 0.000770092 secs + create_atoms CPU = 0.000792027 secs create_atoms 2 region reg2 Created 80 atoms - create_atoms CPU = 7.9155e-05 secs + create_atoms CPU = 0.000160933 secs # setting mass, mag. moments, and interactions for bcc iron @@ -59,7 +59,7 @@ variable emag equal c_out_mag[5] variable tmag equal c_out_mag[6] thermo 100 -thermo_style custom step time v_magx v_magz v_magnorm v_tmag etotal +thermo_style custom step time v_magx v_magz v_magnorm v_tmag pe v_emag etotal thermo_modify format float %20.15g compute outsp all property/atom spx spy spz sp fmx fmy fmz @@ -68,7 +68,7 @@ dump 1 all custom 100 dump.lammpstrj type x y z c_outsp[1] c_outsp[2] c_outsp[ min_style spin min_modify alpha_damp 1.0 discrete_factor 20.0 minimize 1.0e-16 1.0e-16 1000 100 -WARNING: Using 'neigh_modify every 1 delay 0 check yes' setting during minimization (../min.cpp:177) +WARNING: Using 'neigh_modify every 1 delay 0 check yes' setting during minimization (../min.cpp:190) Neighbor list info ... update every 1 steps, delay 0 steps, check yes max neighbors/atom: 2000, page size: 100000 @@ -87,26 +87,26 @@ Neighbor list info ... stencil: none bin: none Per MPI rank memory allocation (min/avg/max) = 7.2 | 7.2 | 7.2 Mbytes -Step Time v_magx v_magz v_magnorm v_tmag TotEng - 0 0 0.000143282585570239 0.615515043943419 0.615726279597251 21.735436446264 0.251043691626527 - 100 0.01 -0.00116085697754605 0.590264559350799 0.590315072966953 0.00283413081085227 0.0846048989956832 - 200 0.02 -0.000147570523236238 0.5896197627388 0.589686497206689 0.000451051163122381 0.0839054390713705 - 300 0.03 2.64982966536902e-05 0.59002969475615 0.590102003120244 5.22539631503911e-05 0.0838351677819014 - 400 0.04 1.77805448780033e-05 0.590195117338991 0.590268726215095 4.46490059775722e-06 0.0838382933245032 - 500 0.05 6.71566571038784e-06 0.590243842081075 0.590317756995865 3.63227563542099e-07 0.0838411433937997 - 600 0.06 2.2410340743112e-06 0.590257551861528 0.590331542128336 2.99360370345601e-08 0.0838420708305252 - 700 0.07 7.12179152897591e-07 0.5902614042958 0.590335413637884 2.51559188415894e-09 0.0838423375091767 - 800 0.08 2.20574733079126e-07 0.590262494529884 0.590336508799302 2.14455748236281e-10 0.0838424126463497 - 900 0.09 6.72564339365689e-08 0.590262805532644 0.590336821097688 1.84495767133404e-11 0.0838424338620728 - 1000 0.1 2.03001940390912e-08 0.590262894882646 0.590336910794094 1.5958531383517e-12 0.0838424398944951 -Loop time of 0.0617704 on 4 procs for 1000 steps with 200 atoms - -98.7% CPU use with 4 MPI tasks x no OpenMP threads +Step Time v_magx v_magz v_magnorm v_tmag PotEng v_emag TotEng + 0 0 0.000143282585570239 0.615515043943419 0.615726279597251 49.8728401964955 0.251043691626527 0.251043691626527 0.251043691626527 + 100 0.01 0.000616167502203098 0.594467364025194 0.594498630048784 0.00377928879167604 0.0834709010541715 0.0834709010541708 0.0834709010541715 + 200 0.02 0.000498981016106215 0.595175581059791 0.595218717456538 0.00031722996860077 0.0832283413495714 0.0832283413495707 0.0832283413495714 + 300 0.03 0.000211899815837572 0.595357874794342 0.595402442288391 2.88909782484355e-05 0.0832377953250728 0.0832377953250722 0.0832377953250728 + 400 0.04 7.9896757739716e-05 0.595395828381057 0.595440657806237 3.01443565415194e-06 0.0832443441045167 0.0832443441045159 0.0832443441045167 + 500 0.05 2.91216489141033e-05 0.595403174462525 0.595448064489507 3.48660949086791e-07 0.0832461089935615 0.0832461089935607 0.0832461089935615 + 600 0.06 1.04772320898493e-05 0.595404457003426 0.595449362424563 4.24408428996442e-08 0.0832465159731258 0.0832465159731252 0.0832465159731258 + 700 0.07 3.74634771616408e-06 0.595404627382825 0.59544953694064 5.27704815780927e-09 0.0832466035923679 0.0832466035923672 0.0832466035923679 + 800 0.08 1.33525617457997e-06 0.595404626884198 0.595449537611055 6.61545013399702e-10 0.0832466213447956 0.0832466213447949 0.0832466213447956 + 900 0.09 4.75054785504803e-07 0.595404613763238 0.595449524836571 8.31880890514289e-11 0.0832466246300992 0.0832466246300985 0.0832466246300992 + 1000 0.1 1.68843135202462e-07 0.59540460640039 0.595449517580793 1.04726516235783e-11 0.0832466251286016 0.083246625128601 0.0832466251286016 +Loop time of 0.0425889 on 4 procs for 1000 steps with 200 atoms + +99.8% CPU use with 4 MPI tasks x no OpenMP threads Minimization stats: Stopping criterion = max iterations Energy initial, next-to-last, final = - 0.251043691627 0.0838424398641 0.0838424398945 + 0.251043691627 0.0832466251273 0.0832466251286 Force two-norm initial, final = 0 0 Force max component initial, final = 0 0 Final line search alpha, max atom move = 0 0 @@ -115,12 +115,12 @@ Minimization stats: MPI task timing breakdown: Section | min time | avg time | max time |%varavg| %total --------------------------------------------------------------- -Pair | 0.023753 | 0.029762 | 0.035936 | 3.3 | 48.18 +Pair | 0.021537 | 0.022273 | 0.022721 | 0.3 | 52.30 Neigh | 0 | 0 | 0 | 0.0 | 0.00 -Comm | 0.011783 | 0.019131 | 0.025404 | 4.3 | 30.97 -Output | 0.0019517 | 0.0019774 | 0.0020368 | 0.1 | 3.20 -Modify | 0.0006361 | 0.00087249 | 0.0011525 | 0.0 | 1.41 -Other | | 0.01003 | | | 16.23 +Comm | 0.0090227 | 0.010484 | 0.011241 | 0.9 | 24.62 +Output | 0.0012829 | 0.0012937 | 0.001322 | 0.0 | 3.04 +Modify | 0.00059366 | 0.00065958 | 0.00074434 | 0.0 | 1.55 +Other | | 0.007879 | | | 18.50 Nlocal: 50 ave 50 max 50 min Histogram: 4 0 0 0 0 0 0 0 0 0 diff --git a/examples/SPIN/spinmin/log.19Nov19.spin.bfo_min.g++.1 b/examples/SPIN/spinmin/log.30Mar20.spin.bfo_min.g++.1 similarity index 51% rename from examples/SPIN/spinmin/log.19Nov19.spin.bfo_min.g++.1 rename to examples/SPIN/spinmin/log.30Mar20.spin.bfo_min.g++.1 index 61b6ad8700..67fa287584 100644 --- a/examples/SPIN/spinmin/log.19Nov19.spin.bfo_min.g++.1 +++ b/examples/SPIN/spinmin/log.30Mar20.spin.bfo_min.g++.1 @@ -1,4 +1,4 @@ -LAMMPS (30 Oct 2019) +LAMMPS (18 Feb 2020) # bfo in a 3d periodic box units metal @@ -17,7 +17,7 @@ Created orthogonal box = (0 0 0) to (134.64 134.64 19.8) 1 by 1 by 1 MPI processor grid create_atoms 1 box Created 5780 atoms - create_atoms CPU = 0.00107217 secs + create_atoms CPU = 0.00263715 secs # setting mass, mag. moments, and interactions for bcc iron @@ -60,10 +60,10 @@ dump 1 all custom 50 dump.lammpstrj type x y z c_outsp[1] c_outsp[2] c_outsp[3 min_style spin min_modify alpha_damp 1.0 discrete_factor 10.0 minimize 1.0e-10 0.0 1000 100 -WARNING: Using 'neigh_modify every 1 delay 0 check yes' setting during minimization (../min.cpp:177) -WARNING: Using spin pair style without nve/spin or neb/spin (../pair_spin.cpp:87) -WARNING: Using spin pair style without nve/spin or neb/spin (../pair_spin.cpp:87) -WARNING: Using spin pair style without nve/spin or neb/spin (../pair_spin.cpp:87) +WARNING: Using 'neigh_modify every 1 delay 0 check yes' setting during minimization (../min.cpp:190) +WARNING: Using spin pair style without nve/spin or neb/spin (../pair_spin.cpp:88) +WARNING: Using spin pair style without nve/spin or neb/spin (../pair_spin.cpp:88) +WARNING: Using spin pair style without nve/spin or neb/spin (../pair_spin.cpp:88) Neighbor list info ... update every 1 steps, delay 0 steps, check yes max neighbors/atom: 2000, page size: 100000 @@ -88,35 +88,35 @@ Neighbor list info ... bin: none Per MPI rank memory allocation (min/avg/max) = 8.331 | 8.331 | 8.331 Mbytes Step Time v_magnorm v_emag v_tmag Temp TotEng - 0 0 0.0100717228668283 -0.163834417271778 14831.3069413956 0 -0.0819172086358848 - 50 0.005 0.000106105812337003 -128.307447484203 0.104264818055985 0 -64.1537237421011 - 100 0.01 7.95347901119144e-06 -131.449389798071 0.0221943604064967 0 -65.7246948990356 - 150 0.015 5.63006161138875e-07 -132.296453030419 0.0085472877724348 0 -66.1482265152089 - 200 0.02 5.07390677383517e-07 -132.622857703805 0.00361380451198708 0 -66.3114288519012 - 250 0.025 3.28458336892231e-07 -132.774411992703 0.00187753161968493 0 -66.3872059963511 - 300 0.03 1.93294839202864e-07 -132.861283726084 0.00121374398924599 0 -66.4306418630428 - 350 0.035 1.13872157437693e-07 -132.923137019136 0.000954736871701507 0 -66.4615685095675 - 400 0.04 6.42075545620808e-08 -132.975239148591 0.000854064736183609 0 -66.4876195742954 - 450 0.045 3.44210513403008e-08 -133.023523287306 0.000812909459005007 0 -66.5117616436536 - 500 0.05 1.80394981485933e-08 -133.070071976252 0.000789742875305133 0 -66.5350359881254 - 550 0.055 9.54697157105863e-09 -133.11541233939 0.000769860218895372 0 -66.5577061696963 - 600 0.06 5.22455110720346e-09 -133.159676447906 0.000752941158466282 0 -66.5798382239526 - 650 0.065 2.95172977724016e-09 -133.203196195612 0.000745065216626277 0 -66.6015980978057 - 700 0.07 1.6727567441294e-09 -133.246696814329 0.000752898926000619 0 -66.6233484071653 - 750 0.075 9.17127001723567e-10 -133.291227007554 0.000780491405791262 0 -66.6456135037769 - 800 0.08 4.72669535949609e-10 -133.337962593396 0.000827942834401386 0 -66.6689812966976 - 850 0.085 2.25696738407094e-10 -133.387945245851 0.000890246383931885 0 -66.6939726229243 - 900 0.09 1.0030717061716e-10 -133.441737087546 0.000955403731484674 0 -66.720868543773 - 950 0.095 4.19867626359036e-11 -133.498969798312 0.00100352240545389 0 -66.7494848991554 - 1000 0.1 1.64283478182092e-11 -133.557979904763 0.00101162410316333 0 -66.7789899523816 -Loop time of 9.23057 on 1 procs for 1000 steps with 5780 atoms - -99.9% CPU use with 1 MPI tasks x no OpenMP threads + 0 0 0.0100717228668283 -0.157514482753577 29662.6138827913 0 -0.157514482753568 + 50 0.005 0.000106105812337003 -128.302297864595 0.20852963611197 0 -128.302297864593 + 100 0.01 7.95347901119144e-06 -131.443802454864 0.0443887208129934 0 -131.443802454864 + 150 0.015 5.63006161138875e-07 -132.290742445363 0.0170945755448696 0 -132.290742445362 + 200 0.02 5.07390677383517e-07 -132.617042381797 0.00722760902397416 0 -132.617042381794 + 250 0.025 3.28458336892231e-07 -132.768391387196 0.00375506323936985 0 -132.768391387196 + 300 0.03 1.93294839202864e-07 -132.855050448035 0.00242748797849198 0 -132.855050448037 + 350 0.035 1.13872157437693e-07 -132.916721243295 0.00190947374340301 0 -132.916721243294 + 400 0.04 6.42075545620808e-08 -132.968673717532 0.00170812947236722 0 -132.968673717531 + 450 0.045 3.44210513403008e-08 -133.016835853948 0.00162581891801001 0 -133.01683585395 + 500 0.05 1.80394981485933e-08 -133.063285618522 0.00157948575061027 0 -133.063285618521 + 550 0.055 9.54697157105863e-09 -133.108546735844 0.00153972043779074 0 -133.108546735848 + 600 0.06 5.22455110720346e-09 -133.152747376224 0.00150588231693256 0 -133.152747376224 + 650 0.065 2.95172977724016e-09 -133.196213916157 0.00149013043325255 0 -133.196213916157 + 700 0.07 1.6727567441294e-09 -133.239664937213 0.00150579785200124 0 -133.239664937215 + 750 0.075 9.17127001723567e-10 -133.284143160988 0.00156098281158252 0 -133.284143160988 + 800 0.08 4.72669535949609e-10 -133.330821565019 0.00165588566880277 0 -133.330821565018 + 850 0.085 2.25696738407094e-10 -133.380744852994 0.00178049276786377 0 -133.380744852991 + 900 0.09 1.0030717061716e-10 -133.434486347662 0.00191080746296935 0 -133.434486347662 + 950 0.095 4.19867626359036e-11 -133.491696918799 0.00200704481090777 0 -133.491696918798 + 1000 0.1 1.64283478182092e-11 -133.550734414677 0.00202324820632667 0 -133.550734414676 +Loop time of 9.33368 on 1 procs for 1000 steps with 5780 atoms + +100.0% CPU use with 1 MPI tasks x no OpenMP threads Minimization stats: Stopping criterion = max iterations Energy initial, next-to-last, final = - -0.0819172086359 -66.778399627 -66.7789899524 + -0.157514482754 -133.549552626 -133.550734415 Force two-norm initial, final = 0 0 Force max component initial, final = 0 0 Final line search alpha, max atom move = 0 0 @@ -125,12 +125,12 @@ Minimization stats: MPI task timing breakdown: Section | min time | avg time | max time |%varavg| %total --------------------------------------------------------------- -Pair | 8.7576 | 8.7576 | 8.7576 | 0.0 | 94.88 +Pair | 8.8542 | 8.8542 | 8.8542 | 0.0 | 94.86 Neigh | 0 | 0 | 0 | 0.0 | 0.00 -Comm | 0.023815 | 0.023815 | 0.023815 | 0.0 | 0.26 -Output | 0.31665 | 0.31665 | 0.31665 | 0.0 | 3.43 -Modify | 0.029446 | 0.029446 | 0.029446 | 0.0 | 0.32 -Other | | 0.1031 | | | 1.12 +Comm | 0.023509 | 0.023509 | 0.023509 | 0.0 | 0.25 +Output | 0.31765 | 0.31765 | 0.31765 | 0.0 | 3.40 +Modify | 0.034948 | 0.034948 | 0.034948 | 0.0 | 0.37 +Other | | 0.1033 | | | 1.11 Nlocal: 5780 ave 5780 max 5780 min Histogram: 1 0 0 0 0 0 0 0 0 0 diff --git a/examples/SPIN/spinmin/log.19Nov19.spin.bfo_min.g++.4 b/examples/SPIN/spinmin/log.30Mar20.spin.bfo_min.g++.4 similarity index 52% rename from examples/SPIN/spinmin/log.19Nov19.spin.bfo_min.g++.4 rename to examples/SPIN/spinmin/log.30Mar20.spin.bfo_min.g++.4 index efc4628b9e..1f4dd6e356 100644 --- a/examples/SPIN/spinmin/log.19Nov19.spin.bfo_min.g++.4 +++ b/examples/SPIN/spinmin/log.30Mar20.spin.bfo_min.g++.4 @@ -1,4 +1,4 @@ -LAMMPS (30 Oct 2019) +LAMMPS (18 Feb 2020) # bfo in a 3d periodic box units metal @@ -17,7 +17,7 @@ Created orthogonal box = (0 0 0) to (134.64 134.64 19.8) 2 by 2 by 1 MPI processor grid create_atoms 1 box Created 5780 atoms - create_atoms CPU = 0.00102711 secs + create_atoms CPU = 0.00143695 secs # setting mass, mag. moments, and interactions for bcc iron @@ -60,10 +60,10 @@ dump 1 all custom 50 dump.lammpstrj type x y z c_outsp[1] c_outsp[2] c_outsp[3 min_style spin min_modify alpha_damp 1.0 discrete_factor 10.0 minimize 1.0e-10 0.0 1000 100 -WARNING: Using 'neigh_modify every 1 delay 0 check yes' setting during minimization (../min.cpp:177) -WARNING: Using spin pair style without nve/spin or neb/spin (../pair_spin.cpp:87) -WARNING: Using spin pair style without nve/spin or neb/spin (../pair_spin.cpp:87) -WARNING: Using spin pair style without nve/spin or neb/spin (../pair_spin.cpp:87) +WARNING: Using 'neigh_modify every 1 delay 0 check yes' setting during minimization (../min.cpp:190) +WARNING: Using spin pair style without nve/spin or neb/spin (../pair_spin.cpp:88) +WARNING: Using spin pair style without nve/spin or neb/spin (../pair_spin.cpp:88) +WARNING: Using spin pair style without nve/spin or neb/spin (../pair_spin.cpp:88) Neighbor list info ... update every 1 steps, delay 0 steps, check yes max neighbors/atom: 2000, page size: 100000 @@ -88,35 +88,35 @@ Neighbor list info ... bin: none Per MPI rank memory allocation (min/avg/max) = 7.788 | 7.788 | 7.788 Mbytes Step Time v_magnorm v_emag v_tmag Temp TotEng - 0 0 0.0100717228668283 -0.162177519662199 14970.709092345 0 -0.157514482753586 - 50 0.005 0.000134061770654521 -128.226118665465 0.102634444037434 0 -128.286182424672 - 100 0.01 7.67769618983817e-06 -131.374599259781 0.0222596977749883 0 -131.428418504308 - 150 0.015 6.02904602224806e-07 -132.224372015825 0.00974271828169071 0 -132.273190134602 - 200 0.02 6.50197247050491e-07 -132.573383315469 0.00374227079785921 0 -132.617565541034 - 250 0.025 4.4053438575152e-07 -132.729743470508 0.0019334097282578 0 -132.770567114743 - 300 0.03 2.78356316513274e-07 -132.819255077939 0.00124938353773497 0 -132.857574876413 - 350 0.035 1.79684785125388e-07 -132.882714312877 0.000973166792896165 0 -132.919261229742 - 400 0.04 1.10949878459078e-07 -132.935357748213 0.000852955460997588 0 -132.970786605995 - 450 0.045 6.49064465617817e-08 -132.982991683198 0.000790741148426224 0 -133.017887798927 - 500 0.05 3.70514666559952e-08 -133.027689959766 0.00074794913288275 0 -133.06256199189 - 550 0.055 2.12433814830885e-08 -133.070148920145 0.00071263732127117 0 -133.105417593745 - 600 0.06 1.24676590171361e-08 -133.110772798503 0.000685051841817325 0 -133.14676746928 - 650 0.065 7.53611859129351e-09 -133.150126417754 0.000669443562813208 0 -133.187094895708 - 700 0.07 4.63539338651321e-09 -133.189024073453 0.000669619853917953 0 -133.227152349439 - 750 0.075 2.82145833974835e-09 -133.22844627026 0.000687338035086961 0 -133.267881315198 - 800 0.08 1.64378151566173e-09 -133.269413776733 0.000722197692175127 0 -133.310284062463 - 850 0.085 8.883310104497e-10 -133.312863108454 0.000771645398804486 0 -133.355293578462 - 900 0.09 4.33874801863461e-10 -133.359507749172 0.000830255722998156 0 -133.403626236688 - 950 0.095 1.8812784924272e-10 -133.409630495316 0.000888348219681112 0 -133.455560507802 - 1000 0.1 7.17748875671948e-11 -133.462806227865 0.000931427722404681 0 -133.510640942679 -Loop time of 2.53419 on 4 procs for 1000 steps with 5780 atoms + 0 0 0.0100717228668283 -0.157514482753577 29662.6138827912 0 -0.157514482753586 + 50 0.005 0.000106105812337003 -128.302297864594 0.20852963611197 0 -128.302297864594 + 100 0.01 7.95347901119157e-06 -131.443802454864 0.0443887208129933 0 -131.443802454864 + 150 0.015 5.63006161138918e-07 -132.290742445363 0.0170945755448696 0 -132.290742445363 + 200 0.02 5.07390677383159e-07 -132.617042381796 0.00722760902397417 0 -132.617042381796 + 250 0.025 3.28458336892466e-07 -132.768391387196 0.00375506323936985 0 -132.768391387196 + 300 0.03 1.93294839202718e-07 -132.855050448036 0.00242748797849197 0 -132.855050448035 + 350 0.035 1.1387215743759e-07 -132.916721243294 0.00190947374340302 0 -132.916721243294 + 400 0.04 6.42075545625297e-08 -132.968673717531 0.00170812947236721 0 -132.968673717531 + 450 0.045 3.44210513402635e-08 -133.016835853948 0.00162581891801002 0 -133.016835853949 + 500 0.05 1.80394981487191e-08 -133.063285618522 0.00157948575061026 0 -133.063285618522 + 550 0.055 9.54697157097866e-09 -133.108546735845 0.00153972043779074 0 -133.108546735845 + 600 0.06 5.22455110708009e-09 -133.152747376224 0.00150588231693256 0 -133.152747376224 + 650 0.065 2.95172977729162e-09 -133.196213916157 0.00149013043325256 0 -133.196213916158 + 700 0.07 1.67275674393186e-09 -133.239664937213 0.00150579785200123 0 -133.239664937213 + 750 0.075 9.17127001716818e-10 -133.284143160989 0.00156098281158253 0 -133.284143160988 + 800 0.08 4.72669535990986e-10 -133.330821565019 0.00165588566880277 0 -133.330821565018 + 850 0.085 2.25696738737671e-10 -133.380744852993 0.00178049276786377 0 -133.380744852993 + 900 0.09 1.00307170296094e-10 -133.434486347661 0.00191080746296935 0 -133.434486347661 + 950 0.095 4.19867626693269e-11 -133.4916969188 0.00200704481090778 0 -133.4916969188 + 1000 0.1 1.64283481770759e-11 -133.550734414677 0.00202324820632667 0 -133.550734414677 +Loop time of 2.5017 on 4 procs for 1000 steps with 5780 atoms 99.9% CPU use with 4 MPI tasks x no OpenMP threads Minimization stats: Stopping criterion = max iterations Energy initial, next-to-last, final = - -0.157514482754 -133.509516066 -133.510640943 + -0.157514482754 -133.549552626 -133.550734415 Force two-norm initial, final = 0 0 Force max component initial, final = 0 0 Final line search alpha, max atom move = 0 0 @@ -125,12 +125,12 @@ Minimization stats: MPI task timing breakdown: Section | min time | avg time | max time |%varavg| %total --------------------------------------------------------------- -Pair | 2.2697 | 2.2995 | 2.3564 | 2.2 | 90.74 +Pair | 2.2676 | 2.2956 | 2.3111 | 1.1 | 91.76 Neigh | 0 | 0 | 0 | 0.0 | 0.00 -Comm | 0.05711 | 0.11414 | 0.14368 | 10.1 | 4.50 -Output | 0.084883 | 0.084915 | 0.084985 | 0.0 | 3.35 -Modify | 0.0071826 | 0.0072024 | 0.0072234 | 0.0 | 0.28 -Other | | 0.02847 | | | 1.12 +Comm | 0.066787 | 0.08206 | 0.11001 | 5.9 | 3.28 +Output | 0.085784 | 0.085815 | 0.085896 | 0.0 | 3.43 +Modify | 0.0082495 | 0.0087934 | 0.010231 | 0.9 | 0.35 +Other | | 0.02939 | | | 1.17 Nlocal: 1445 ave 1445 max 1445 min Histogram: 4 0 0 0 0 0 0 0 0 0 diff --git a/examples/SPIN/spinmin/log.19Nov19.spin.bfo_min_cg.g++.1 b/examples/SPIN/spinmin/log.30Mar20.spin.bfo_min_cg.g++.1 similarity index 65% rename from examples/SPIN/spinmin/log.19Nov19.spin.bfo_min_cg.g++.1 rename to examples/SPIN/spinmin/log.30Mar20.spin.bfo_min_cg.g++.1 index ffd244b146..2e5f184ce0 100644 --- a/examples/SPIN/spinmin/log.19Nov19.spin.bfo_min_cg.g++.1 +++ b/examples/SPIN/spinmin/log.30Mar20.spin.bfo_min_cg.g++.1 @@ -1,4 +1,4 @@ -LAMMPS (30 Oct 2019) +LAMMPS (18 Feb 2020) # bfo in a 3d periodic box units metal @@ -17,7 +17,7 @@ Created orthogonal box = (0 0 0) to (134.64 134.64 19.8) 1 by 1 by 1 MPI processor grid create_atoms 1 box Created 5780 atoms - create_atoms CPU = 0.00135589 secs + create_atoms CPU = 0.00265002 secs # setting mass, mag. moments, and interactions for bcc iron @@ -59,11 +59,11 @@ dump 1 all custom 50 dump.lammpstrj type x y z c_outsp[1] c_outsp[2] c_outsp[3 min_style spin/cg # min_modify line spin_none discrete_factor 10.0 minimize 1.0e-10 1.0e-10 1000 100 -WARNING: Using 'neigh_modify every 1 delay 0 check yes' setting during minimization (../min.cpp:177) +WARNING: Using 'neigh_modify every 1 delay 0 check yes' setting during minimization (../min.cpp:190) WARNING: Line search incompatible gneb (../min_spin_cg.cpp:105) -WARNING: Using spin pair style without nve/spin or neb/spin (../pair_spin.cpp:87) -WARNING: Using spin pair style without nve/spin or neb/spin (../pair_spin.cpp:87) -WARNING: Using spin pair style without nve/spin or neb/spin (../pair_spin.cpp:87) +WARNING: Using spin pair style without nve/spin or neb/spin (../pair_spin.cpp:88) +WARNING: Using spin pair style without nve/spin or neb/spin (../pair_spin.cpp:88) +WARNING: Using spin pair style without nve/spin or neb/spin (../pair_spin.cpp:88) Neighbor list info ... update every 1 steps, delay 0 steps, check yes max neighbors/atom: 2000, page size: 100000 @@ -88,25 +88,25 @@ Neighbor list info ... bin: none Per MPI rank memory allocation (min/avg/max) = 8.331 | 8.331 | 8.331 Mbytes Step Time v_magnorm v_emag v_tmag Temp TotEng - 0 0 0.0100717228668283 -0.163834417271778 14831.3069413956 0 -0.0819172086358848 - 100 0.01 8.80197005314557e-06 -132.80634639767 0.00226660536216922 0 -66.4031731988347 - 200 0.02 6.70903250218956e-06 -133.127078243354 0.00103783628361662 0 -66.563539121677 - 300 0.03 4.5381603452565e-06 -133.471076972345 0.00144833375067451 0 -66.7355384861738 - 400 0.04 9.04820921016732e-07 -133.767843456662 0.000682239601485924 0 -66.8839217283314 - 500 0.05 1.6866160174916e-06 -133.893922160731 0.00032462625992713 0 -66.946961080365 - 600 0.06 1.78038217785001e-06 -133.957222680701 0.000160730704849448 0 -66.9786113403509 - 700 0.07 1.49199057723078e-06 -133.987255887786 7.39864656758093e-05 0 -66.9936279438931 - 800 0.08 1.15173756711067e-06 -134.000921126053 3.33959465206462e-05 0 -67.0004605630278 - 900 0.09 8.48526364752965e-07 -134.007049858868 1.49345737358251e-05 0 -67.0035249294347 - 1000 0.1 6.10346492876059e-07 -134.009791515671 6.71648807105468e-06 0 -67.0048957578347 -Loop time of 9.4449 on 1 procs for 1000 steps with 5780 atoms + 0 0 0.0100717228668283 -0.157514482753577 29662.6138827913 0 -0.157514482753568 + 100 0.01 8.80197005314557e-06 -132.800575336655 0.00453321072433843 0 -132.800575336654 + 200 0.02 6.70903250218956e-06 -133.121000843933 0.00207567256723324 0 -133.121000843933 + 300 0.03 4.5381603452565e-06 -133.464726217611 0.00289666750134901 0 -133.464726217614 + 400 0.04 9.04820921016732e-07 -133.762019235444 0.00136447920297185 0 -133.762019235444 + 500 0.05 1.6866160174916e-06 -133.88833778215 0.00064925251985426 0 -133.888337782148 + 600 0.06 1.78038217785001e-06 -133.951571511609 0.000321461409698896 0 -133.951571511609 + 700 0.07 1.49199057723078e-06 -133.981489428218 0.000147972931351619 0 -133.981489428217 + 800 0.08 1.15173756711067e-06 -133.99509691648 6.67918930412923e-05 0 -133.995096916483 + 900 0.09 8.48526364752965e-07 -134.001205290718 2.98691474716501e-05 0 -134.001205290719 + 1000 0.1 6.10346492876059e-07 -134.00394062735 1.34329761421094e-05 0 -134.003940627348 +Loop time of 9.56002 on 1 procs for 1000 steps with 5780 atoms 100.0% CPU use with 1 MPI tasks x no OpenMP threads Minimization stats: Stopping criterion = max iterations Energy initial, next-to-last, final = - -0.0819172086359 -67.0048809251 -67.0048957578 + -0.157514482754 -134.00391102 -134.003940627 Force two-norm initial, final = 0 0 Force max component initial, final = 0 0 Final line search alpha, max atom move = 2.122e-314 0 @@ -115,12 +115,12 @@ Minimization stats: MPI task timing breakdown: Section | min time | avg time | max time |%varavg| %total --------------------------------------------------------------- -Pair | 8.7686 | 8.7686 | 8.7686 | 0.0 | 92.84 +Pair | 8.8771 | 8.8771 | 8.8771 | 0.0 | 92.86 Neigh | 0 | 0 | 0 | 0.0 | 0.00 -Comm | 0.02386 | 0.02386 | 0.02386 | 0.0 | 0.25 -Output | 0.31808 | 0.31808 | 0.31808 | 0.0 | 3.37 -Modify | 0.029416 | 0.029416 | 0.029416 | 0.0 | 0.31 -Other | | 0.305 | | | 3.23 +Comm | 0.023437 | 0.023437 | 0.023437 | 0.0 | 0.25 +Output | 0.32043 | 0.32043 | 0.32043 | 0.0 | 3.35 +Modify | 0.034444 | 0.034444 | 0.034444 | 0.0 | 0.36 +Other | | 0.3046 | | | 3.19 Nlocal: 5780 ave 5780 max 5780 min Histogram: 1 0 0 0 0 0 0 0 0 0 diff --git a/examples/SPIN/spinmin/log.19Nov19.spin.bfo_min_cg.g++.4 b/examples/SPIN/spinmin/log.30Mar20.spin.bfo_min_cg.g++.4 similarity index 64% rename from examples/SPIN/spinmin/log.19Nov19.spin.bfo_min_cg.g++.4 rename to examples/SPIN/spinmin/log.30Mar20.spin.bfo_min_cg.g++.4 index 730bf477d4..087e5072c3 100644 --- a/examples/SPIN/spinmin/log.19Nov19.spin.bfo_min_cg.g++.4 +++ b/examples/SPIN/spinmin/log.30Mar20.spin.bfo_min_cg.g++.4 @@ -1,4 +1,4 @@ -LAMMPS (30 Oct 2019) +LAMMPS (18 Feb 2020) # bfo in a 3d periodic box units metal @@ -17,7 +17,7 @@ Created orthogonal box = (0 0 0) to (134.64 134.64 19.8) 2 by 2 by 1 MPI processor grid create_atoms 1 box Created 5780 atoms - create_atoms CPU = 0.00138712 secs + create_atoms CPU = 0.00109196 secs # setting mass, mag. moments, and interactions for bcc iron @@ -59,11 +59,11 @@ dump 1 all custom 50 dump.lammpstrj type x y z c_outsp[1] c_outsp[2] c_outsp[3 min_style spin/cg # min_modify line spin_none discrete_factor 10.0 minimize 1.0e-10 1.0e-10 1000 100 -WARNING: Using 'neigh_modify every 1 delay 0 check yes' setting during minimization (../min.cpp:177) +WARNING: Using 'neigh_modify every 1 delay 0 check yes' setting during minimization (../min.cpp:190) WARNING: Line search incompatible gneb (../min_spin_cg.cpp:105) -WARNING: Using spin pair style without nve/spin or neb/spin (../pair_spin.cpp:87) -WARNING: Using spin pair style without nve/spin or neb/spin (../pair_spin.cpp:87) -WARNING: Using spin pair style without nve/spin or neb/spin (../pair_spin.cpp:87) +WARNING: Using spin pair style without nve/spin or neb/spin (../pair_spin.cpp:88) +WARNING: Using spin pair style without nve/spin or neb/spin (../pair_spin.cpp:88) +WARNING: Using spin pair style without nve/spin or neb/spin (../pair_spin.cpp:88) Neighbor list info ... update every 1 steps, delay 0 steps, check yes max neighbors/atom: 2000, page size: 100000 @@ -88,25 +88,25 @@ Neighbor list info ... bin: none Per MPI rank memory allocation (min/avg/max) = 7.788 | 7.788 | 7.788 Mbytes Step Time v_magnorm v_emag v_tmag Temp TotEng - 0 0 0.0100717228668283 -0.162177519662199 14970.709092345 0 -0.157514482753586 - 100 0.01 8.97646420936397e-06 -132.756468673032 0.00226858475243123 0 -132.79881239587 - 200 0.02 5.7049674439631e-06 -133.065966570145 0.000924384747875186 0 -133.105411060402 - 300 0.03 7.08166486348038e-06 -133.359072681024 0.00128114254070688 0 -133.406669528642 - 400 0.04 4.60224970353229e-06 -133.668643035703 0.000822334798448062 0 -133.725353643022 - 500 0.05 3.13737045264193e-06 -133.819548711647 0.000369678417461456 0 -133.878037514585 - 600 0.06 2.55239214469856e-06 -133.889302880669 0.0001696142482835 0 -133.948327309746 - 700 0.07 1.92236411979341e-06 -133.920147501261 7.31985644003847e-05 0 -133.979597440788 - 800 0.08 1.40879742055238e-06 -133.933445418833 3.19349095035109e-05 0 -133.993344750158 - 900 0.09 1.02629246257047e-06 -133.939321574068 1.44399877051467e-05 0 -133.999611147322 - 1000 0.1 7.52253147824893e-07 -133.942032102451 6.85789018963965e-06 0 -134.002604512509 -Loop time of 2.49676 on 4 procs for 1000 steps with 5780 atoms - -100.0% CPU use with 4 MPI tasks x no OpenMP threads + 0 0 0.0100717228668283 -0.157514482753577 29662.6138827912 0 -0.157514482753586 + 100 0.01 8.80197005315463e-06 -132.800575336655 0.00453321072433844 0 -132.800575336655 + 200 0.02 6.7090325022051e-06 -133.121000843933 0.00207567256723326 0 -133.121000843933 + 300 0.03 4.53816034526952e-06 -133.464726217612 0.00289666750134902 0 -133.464726217612 + 400 0.04 9.04820921046463e-07 -133.762019235443 0.00136447920297183 0 -133.762019235443 + 500 0.05 1.68661601751279e-06 -133.888337782149 0.00064925251985426 0 -133.888337782149 + 600 0.06 1.78038217786708e-06 -133.951571511608 0.000321461409698895 0 -133.951571511608 + 700 0.07 1.4919905772389e-06 -133.981489428217 0.000147972931351615 0 -133.981489428218 + 800 0.08 1.15173756711682e-06 -133.995096916479 6.67918930412913e-05 0 -133.99509691648 + 900 0.09 8.48526364761828e-07 -134.001205290718 2.98691474716502e-05 0 -134.001205290718 + 1000 0.1 6.10346492874848e-07 -134.00394062735 1.34329761421094e-05 0 -134.00394062735 +Loop time of 2.54966 on 4 procs for 1000 steps with 5780 atoms + +99.9% CPU use with 4 MPI tasks x no OpenMP threads Minimization stats: Stopping criterion = max iterations Energy initial, next-to-last, final = - -0.157514482754 -134.00257032 -134.002604513 + -0.157514482754 -134.00391102 -134.003940627 Force two-norm initial, final = 0 0 Force max component initial, final = 0 0 Final line search alpha, max atom move = 0 0 @@ -115,12 +115,12 @@ Minimization stats: MPI task timing breakdown: Section | min time | avg time | max time |%varavg| %total --------------------------------------------------------------- -Pair | 2.2509 | 2.2589 | 2.2629 | 0.3 | 90.47 +Pair | 2.2558 | 2.2844 | 2.3289 | 1.9 | 89.59 Neigh | 0 | 0 | 0 | 0.0 | 0.00 -Comm | 0.06036 | 0.064254 | 0.072356 | 1.9 | 2.57 -Output | 0.084002 | 0.085009 | 0.085985 | 0.3 | 3.40 -Modify | 0.0072496 | 0.0072694 | 0.0073116 | 0.0 | 0.29 -Other | | 0.08134 | | | 3.26 +Comm | 0.048988 | 0.093425 | 0.12194 | 9.5 | 3.66 +Output | 0.082843 | 0.083898 | 0.084919 | 0.3 | 3.29 +Modify | 0.0081415 | 0.0082042 | 0.0082667 | 0.1 | 0.32 +Other | | 0.07977 | | | 3.13 Nlocal: 1445 ave 1445 max 1445 min Histogram: 4 0 0 0 0 0 0 0 0 0 diff --git a/examples/SPIN/spinmin/log.19Nov19.spin.bfo_min_lbfgs.g++.1 b/examples/SPIN/spinmin/log.30Mar20.spin.bfo_min_lbfgs.g++.1 similarity index 65% rename from examples/SPIN/spinmin/log.19Nov19.spin.bfo_min_lbfgs.g++.1 rename to examples/SPIN/spinmin/log.30Mar20.spin.bfo_min_lbfgs.g++.1 index a8685eb2cf..e45c886f6d 100644 --- a/examples/SPIN/spinmin/log.19Nov19.spin.bfo_min_lbfgs.g++.1 +++ b/examples/SPIN/spinmin/log.30Mar20.spin.bfo_min_lbfgs.g++.1 @@ -1,4 +1,4 @@ -LAMMPS (30 Oct 2019) +LAMMPS (18 Feb 2020) # bfo in a 3d periodic box units metal @@ -17,7 +17,7 @@ Created orthogonal box = (0 0 0) to (134.64 134.64 3.96) 1 by 1 by 1 MPI processor grid create_atoms 1 box Created 1156 atoms - create_atoms CPU = 0.00136805 secs + create_atoms CPU = 0.00190592 secs # setting mass, mag. moments, and interactions for bcc iron @@ -60,11 +60,11 @@ min_style spin/lbfgs # min_modify line spin_cubic discrete_factor 10.0 min_modify norm max minimize 1.0e-15 1.0e-10 1000 100 -WARNING: Using 'neigh_modify every 1 delay 0 check yes' setting during minimization (../min.cpp:177) +WARNING: Using 'neigh_modify every 1 delay 0 check yes' setting during minimization (../min.cpp:190) WARNING: Line search incompatible gneb (../min_spin_lbfgs.cpp:109) -WARNING: Using spin pair style without nve/spin or neb/spin (../pair_spin.cpp:87) -WARNING: Using spin pair style without nve/spin or neb/spin (../pair_spin.cpp:87) -WARNING: Using spin pair style without nve/spin or neb/spin (../pair_spin.cpp:87) +WARNING: Using spin pair style without nve/spin or neb/spin (../pair_spin.cpp:88) +WARNING: Using spin pair style without nve/spin or neb/spin (../pair_spin.cpp:88) +WARNING: Using spin pair style without nve/spin or neb/spin (../pair_spin.cpp:88) Neighbor list info ... update every 1 steps, delay 0 steps, check yes max neighbors/atom: 2000, page size: 100000 @@ -89,36 +89,37 @@ Neighbor list info ... bin: none Per MPI rank memory allocation (min/avg/max) = 7.748 | 7.748 | 7.748 Mbytes Step Time v_magnorm v_emag v_tmag Temp TotEng - 0 0 0.0205636053306396 -0.218504643888467 1537.40479337332 0 -0.109252321944233 - 50 0.005 0.000800557938107919 -19.2937186217138 0.293526226015746 0 -9.65918446070018 - 100 0.01 0.000434178067296136 -19.6225314972776 0.136842093090897 0 -9.81803976806459 - 150 0.015 9.48307628510239e-06 -19.7062424007137 0.000835148627123792 0 -9.85315267460932 - 200 0.02 9.40072944704056e-06 -19.7072931204571 7.72334770010361e-06 0 -9.85364693487844 - 250 0.025 5.05117500164935e-07 -19.7072952885901 5.72437821949831e-08 0 -9.85364764712939 - 300 0.03 2.15063977474981e-09 -19.707295295749 2.09970244523395e-12 0 -9.8536476478746 - 303 0.0303 1.43831710574092e-09 -19.7072952957498 1.70336397715489e-13 0 -9.85364764787493 -Loop time of 0.335897 on 1 procs for 303 steps with 1156 atoms - -100.0% CPU use with 1 MPI tasks x no OpenMP threads + 0 0 0.0205636053306396 -0.21723077139301 3074.80958674664 0 -0.21723077139301 + 50 0.005 0.000800557938107919 -19.3172378712837 0.587052452031493 0 -19.3172378712837 + 100 0.01 0.000434178067296136 -19.6347095376085 0.273684186181794 0 -19.6347095376086 + 150 0.015 9.48307628510239e-06 -19.7051208100556 0.00167029725424758 0 -19.7051208100558 + 200 0.02 9.40072944704056e-06 -19.7061021549234 1.54466954002072e-05 0 -19.7061021549234 + 250 0.025 5.05117500164935e-07 -19.7061079450706 1.14487564389966e-07 0 -19.7061079450706 + 300 0.03 2.15063977474981e-09 -19.7061079411039 4.19940489046789e-12 0 -19.7061079411039 + 350 0.035 2.68770538011538e-10 -19.7061079387852 4.28062843775746e-14 0 -19.706107938785 + 355 0.0355 3.55891894817714e-11 -19.7061079389004 1.20287624754126e-15 0 -19.7061079389003 +Loop time of 0.409322 on 1 procs for 355 steps with 1156 atoms + +99.0% CPU use with 1 MPI tasks x no OpenMP threads Minimization stats: - Stopping criterion = energy tolerance + Stopping criterion = force tolerance Energy initial, next-to-last, final = - -0.109252321944 -9.85364764787 -9.85364764787 + -0.217230771393 -19.7061079389 -19.7061079389 Force two-norm initial, final = 0 0 Force max component initial, final = 0 0 Final line search alpha, max atom move = 0 0 - Iterations, force evaluations = 303 303 + Iterations, force evaluations = 355 355 MPI task timing breakdown: Section | min time | avg time | max time |%varavg| %total --------------------------------------------------------------- -Pair | 0.28129 | 0.28129 | 0.28129 | 0.0 | 83.74 +Pair | 0.344 | 0.344 | 0.344 | 0.0 | 84.04 Neigh | 0 | 0 | 0 | 0.0 | 0.00 -Comm | 0.0010796 | 0.0010796 | 0.0010796 | 0.0 | 0.32 -Output | 0.017942 | 0.017942 | 0.017942 | 0.0 | 5.34 -Modify | 0.001771 | 0.001771 | 0.001771 | 0.0 | 0.53 -Other | | 0.03382 | | | 10.07 +Comm | 0.0013642 | 0.0013642 | 0.0013642 | 0.0 | 0.33 +Output | 0.021055 | 0.021055 | 0.021055 | 0.0 | 5.14 +Modify | 0.0024285 | 0.0024285 | 0.0024285 | 0.0 | 0.59 +Other | | 0.04048 | | | 9.89 Nlocal: 1156 ave 1156 max 1156 min Histogram: 1 0 0 0 0 0 0 0 0 0 diff --git a/examples/SPIN/spinmin/log.19Nov19.spin.bfo_min_lbfgs.g++.4 b/examples/SPIN/spinmin/log.30Mar20.spin.bfo_min_lbfgs.g++.4 similarity index 68% rename from examples/SPIN/spinmin/log.19Nov19.spin.bfo_min_lbfgs.g++.4 rename to examples/SPIN/spinmin/log.30Mar20.spin.bfo_min_lbfgs.g++.4 index f2756d0f5e..e8d3771e4d 100644 --- a/examples/SPIN/spinmin/log.19Nov19.spin.bfo_min_lbfgs.g++.4 +++ b/examples/SPIN/spinmin/log.30Mar20.spin.bfo_min_lbfgs.g++.4 @@ -1,4 +1,4 @@ -LAMMPS (30 Oct 2019) +LAMMPS (18 Feb 2020) # bfo in a 3d periodic box units metal @@ -17,7 +17,7 @@ Created orthogonal box = (0 0 0) to (134.64 134.64 3.96) 2 by 2 by 1 MPI processor grid create_atoms 1 box Created 1156 atoms - create_atoms CPU = 0.000981808 secs + create_atoms CPU = 0.000856876 secs # setting mass, mag. moments, and interactions for bcc iron @@ -60,11 +60,11 @@ min_style spin/lbfgs # min_modify line spin_cubic discrete_factor 10.0 min_modify norm max minimize 1.0e-15 1.0e-10 1000 100 -WARNING: Using 'neigh_modify every 1 delay 0 check yes' setting during minimization (../min.cpp:177) +WARNING: Using 'neigh_modify every 1 delay 0 check yes' setting during minimization (../min.cpp:190) WARNING: Line search incompatible gneb (../min_spin_lbfgs.cpp:109) -WARNING: Using spin pair style without nve/spin or neb/spin (../pair_spin.cpp:87) -WARNING: Using spin pair style without nve/spin or neb/spin (../pair_spin.cpp:87) -WARNING: Using spin pair style without nve/spin or neb/spin (../pair_spin.cpp:87) +WARNING: Using spin pair style without nve/spin or neb/spin (../pair_spin.cpp:88) +WARNING: Using spin pair style without nve/spin or neb/spin (../pair_spin.cpp:88) +WARNING: Using spin pair style without nve/spin or neb/spin (../pair_spin.cpp:88) Neighbor list info ... update every 1 steps, delay 0 steps, check yes max neighbors/atom: 2000, page size: 100000 @@ -89,36 +89,36 @@ Neighbor list info ... bin: none Per MPI rank memory allocation (min/avg/max) = 7.619 | 7.619 | 7.619 Mbytes Step Time v_magnorm v_emag v_tmag Temp TotEng - 0 0 0.0205636053306396 -0.217760509274282 1541.29975585882 0 -0.217230771393012 - 50 0.005 0.000966655616837406 -19.2878369426356 0.312860071233841 0 -19.3229939390148 - 100 0.01 0.00154452800191107 -19.5948898197917 0.365367666925029 0 -19.6389064900413 - 150 0.015 4.89955946750017e-05 -19.6962580067431 0.000385536538802408 0 -19.7047140195852 - 200 0.02 5.66300530875654e-05 -19.6975252647309 9.8679922880911e-05 0 -19.7059140354146 - 250 0.025 5.21141123128679e-08 -19.6975359469038 2.52554968535685e-09 0 -19.7059189333986 - 300 0.03 2.9845103782958e-09 -19.6975359475094 2.31782597655471e-11 0 -19.7059191124033 - 342 0.0342 1.0526549233076e-10 -19.6975359475123 3.65641352240487e-16 0 -19.7059191178145 -Loop time of 0.117672 on 4 procs for 342 steps with 1156 atoms - -99.4% CPU use with 4 MPI tasks x no OpenMP threads + 0 0 0.0205636053306396 -0.217230771393011 3074.80958674665 0 -0.217230771393012 + 50 0.005 0.00080055793810568 -19.3172378712837 0.587052452031484 0 -19.3172378712837 + 100 0.01 0.000434178089299568 -19.6347095374991 0.273684182125484 0 -19.6347095374991 + 150 0.015 9.48305696976556e-06 -19.7051208101142 0.00167024832242908 0 -19.7051208101142 + 200 0.02 9.48404729540188e-06 -19.7061021677869 1.56791127524357e-05 0 -19.7061021677869 + 250 0.025 2.53129638591035e-07 -19.7061079301131 1.07608919893302e-07 0 -19.706107930113 + 300 0.03 1.70353573452093e-08 -19.7061079351544 1.13074385981283e-10 0 -19.7061079351544 + 345 0.0345 1.54519631528762e-11 -19.7061079391073 1.36581425973311e-15 0 -19.7061079391074 +Loop time of 0.119735 on 4 procs for 345 steps with 1156 atoms + +99.7% CPU use with 4 MPI tasks x no OpenMP threads Minimization stats: Stopping criterion = force tolerance Energy initial, next-to-last, final = - -0.217230771393 -19.7059191178 -19.7059191178 + -0.217230771393 -19.7061079391 -19.7061079391 Force two-norm initial, final = 0 0 Force max component initial, final = 0 0 Final line search alpha, max atom move = 0 0 - Iterations, force evaluations = 342 342 + Iterations, force evaluations = 345 345 MPI task timing breakdown: Section | min time | avg time | max time |%varavg| %total --------------------------------------------------------------- -Pair | 0.084558 | 0.086668 | 0.091471 | 1.0 | 73.65 +Pair | 0.084716 | 0.088366 | 0.093719 | 1.1 | 73.80 Neigh | 0 | 0 | 0 | 0.0 | 0.00 -Comm | 0.0052197 | 0.010042 | 0.012191 | 2.8 | 8.53 -Output | 0.0050647 | 0.0050726 | 0.0050921 | 0.0 | 4.31 -Modify | 0.00052595 | 0.00053537 | 0.00055242 | 0.0 | 0.45 -Other | | 0.01535 | | | 13.05 +Comm | 0.0052106 | 0.010567 | 0.014209 | 3.3 | 8.82 +Output | 0.0051038 | 0.0051106 | 0.0051301 | 0.0 | 4.27 +Modify | 0.00058246 | 0.00063002 | 0.00066781 | 0.0 | 0.53 +Other | | 0.01506 | | | 12.58 Nlocal: 289 ave 289 max 289 min Histogram: 4 0 0 0 0 0 0 0 0 0 diff --git a/examples/SPIN/spinmin/log.19Nov19.spin.iron_min.g++.1 b/examples/SPIN/spinmin/log.30Mar20.spin.iron_min.g++.1 similarity index 73% rename from examples/SPIN/spinmin/log.19Nov19.spin.iron_min.g++.1 rename to examples/SPIN/spinmin/log.30Mar20.spin.iron_min.g++.1 index 6df5959c0b..017af7051c 100644 --- a/examples/SPIN/spinmin/log.19Nov19.spin.iron_min.g++.1 +++ b/examples/SPIN/spinmin/log.30Mar20.spin.iron_min.g++.1 @@ -1,4 +1,4 @@ -LAMMPS (30 Oct 2019) +LAMMPS (18 Feb 2020) # bcc iron in a 3d periodic box units metal @@ -17,7 +17,7 @@ Created orthogonal box = (0 0 0) to (14.3325 14.3325 14.3325) 1 by 1 by 1 MPI processor grid create_atoms 1 box Created 250 atoms - create_atoms CPU = 0.000965834 secs + create_atoms CPU = 0.00106812 secs # setting mass, mag. moments, and interactions for bcc iron @@ -60,8 +60,8 @@ dump 1 all custom 100 dump.lammpstrj type x y z c_outsp[1] c_outsp[2] c_outsp[ min_style spin min_modify alpha_damp 1.0 discrete_factor 10.0 minimize 1.0e-10 1.0e-10 1000 100 -WARNING: Using 'neigh_modify every 1 delay 0 check yes' setting during minimization (../min.cpp:177) -WARNING: Using spin pair style without nve/spin or neb/spin (../pair_spin.cpp:87) +WARNING: Using 'neigh_modify every 1 delay 0 check yes' setting during minimization (../min.cpp:190) +WARNING: Using spin pair style without nve/spin or neb/spin (../pair_spin.cpp:88) Neighbor list info ... update every 1 steps, delay 0 steps, check yes max neighbors/atom: 2000, page size: 100000 @@ -76,25 +76,25 @@ Neighbor list info ... bin: standard Per MPI rank memory allocation (min/avg/max) = 6.848 | 6.848 | 6.848 Mbytes Step Time v_magx v_magz v_magnorm v_tmag TotEng - 0 0 -0.0285071136621457 -0.00948990815281275 0.0764569750905723 5048.56076237679 -0.354774619362398 - 100 0.01 -0.584953861980204 -0.0517163256267969 0.999992350892306 6.25556948778472e-05 -25.2894057771132 - 200 0.02 -0.584864756506845 -0.0547143484057153 0.999999990495506 3.49782260454062e-06 -25.289435991418 - 300 0.03 -0.5847600493607 -0.0578846348986585 0.999999999988174 3.83095226805016e-06 -25.2894449433165 - 400 0.04 -0.584642875238893 -0.0612373075362701 0.999999999999986 4.28575832708226e-06 -25.2894549277735 - 500 0.05 -0.584511765589529 -0.0647826190376231 1 4.79421486949086e-06 -25.2894660972709 - 600 0.06 -0.584365074206159 -0.0685313536438759 1 5.36242072641834e-06 -25.2894785912384 - 700 0.07 -0.584200963215273 -0.072494846958872 1 5.99725249459222e-06 -25.2894925651485 - 800 0.08 -0.584017381477007 -0.0766850043611195 0.999999999999999 6.70634191991825e-06 -25.289508192325 - 900 0.09 -0.583812040722351 -0.0811143180675364 0.999999999999999 7.49814943594148e-06 -25.2895256658925 - 1000 0.1 -0.583582389243979 -0.0857958823565731 0.999999999999998 8.38204259112222e-06 -25.2895452009133 -Loop time of 0.195254 on 1 procs for 1000 steps with 250 atoms - -100.0% CPU use with 1 MPI tasks x no OpenMP threads + 0 0 -0.0285071136621457 -0.00948990815281275 0.0764569750905723 10097.1215247536 -0.701465876910694 + 100 0.01 -0.584953861980204 -0.0517163256267969 0.999992350892306 0.000125111389755694 -50.578744362023 + 200 0.02 -0.584864756506845 -0.0547143484057153 0.999999990495506 6.99564520908124e-06 -50.5787971409244 + 300 0.03 -0.5847600493607 -0.0578846348986585 0.999999999988174 7.66190453610032e-06 -50.5788061208586 + 400 0.04 -0.584642875238893 -0.0612373075362701 0.999999999999986 8.57151665416451e-06 -50.5788161053511 + 500 0.05 -0.584511765589529 -0.0647826190376231 1 9.58842973898173e-06 -50.5788272748485 + 600 0.06 -0.584365074206159 -0.0685313536438759 1 1.07248414528367e-05 -50.5788397688161 + 700 0.07 -0.584200963215273 -0.072494846958872 1 1.19945049891844e-05 -50.5788537427261 + 800 0.08 -0.584017381477007 -0.0766850043611195 0.999999999999999 1.34126838398365e-05 -50.5788693699026 + 900 0.09 -0.583812040722351 -0.0811143180675364 0.999999999999999 1.4996298871883e-05 -50.5788868434701 + 1000 0.1 -0.583582389243979 -0.0857958823565731 0.999999999999998 1.67640851822444e-05 -50.5789063784909 +Loop time of 0.198638 on 1 procs for 1000 steps with 250 atoms + +99.8% CPU use with 1 MPI tasks x no OpenMP threads Minimization stats: Stopping criterion = max iterations Energy initial, next-to-last, final = - -0.354774619362 -25.2895449946 -25.2895452009 + -0.701465876911 -50.5789061722 -50.5789063785 Force two-norm initial, final = 0 0 Force max component initial, final = 0 0 Final line search alpha, max atom move = 0 0 @@ -103,12 +103,12 @@ Minimization stats: MPI task timing breakdown: Section | min time | avg time | max time |%varavg| %total --------------------------------------------------------------- -Pair | 0.17668 | 0.17668 | 0.17668 | 0.0 | 90.49 +Pair | 0.18003 | 0.18003 | 0.18003 | 0.0 | 90.63 Neigh | 0 | 0 | 0 | 0.0 | 0.00 -Comm | 0.0052176 | 0.0052176 | 0.0052176 | 0.0 | 2.67 -Output | 0.0067751 | 0.0067751 | 0.0067751 | 0.0 | 3.47 -Modify | 0.0013788 | 0.0013788 | 0.0013788 | 0.0 | 0.71 -Other | | 0.005203 | | | 2.66 +Comm | 0.0052125 | 0.0052125 | 0.0052125 | 0.0 | 2.62 +Output | 0.0067494 | 0.0067494 | 0.0067494 | 0.0 | 3.40 +Modify | 0.001492 | 0.001492 | 0.001492 | 0.0 | 0.75 +Other | | 0.005157 | | | 2.60 Nlocal: 250 ave 250 max 250 min Histogram: 1 0 0 0 0 0 0 0 0 0 diff --git a/examples/SPIN/spinmin/log.19Nov19.spin.iron_min.g++.4 b/examples/SPIN/spinmin/log.30Mar20.spin.iron_min.g++.4 similarity index 76% rename from examples/SPIN/spinmin/log.19Nov19.spin.iron_min.g++.4 rename to examples/SPIN/spinmin/log.30Mar20.spin.iron_min.g++.4 index b0cdd4f94a..2df08f2626 100644 --- a/examples/SPIN/spinmin/log.19Nov19.spin.iron_min.g++.4 +++ b/examples/SPIN/spinmin/log.30Mar20.spin.iron_min.g++.4 @@ -1,4 +1,4 @@ -LAMMPS (30 Oct 2019) +LAMMPS (18 Feb 2020) # bcc iron in a 3d periodic box units metal @@ -17,7 +17,7 @@ Created orthogonal box = (0 0 0) to (14.3325 14.3325 14.3325) 1 by 2 by 2 MPI processor grid create_atoms 1 box Created 250 atoms - create_atoms CPU = 0.000759125 secs + create_atoms CPU = 0.00105882 secs # setting mass, mag. moments, and interactions for bcc iron @@ -60,8 +60,8 @@ dump 1 all custom 100 dump.lammpstrj type x y z c_outsp[1] c_outsp[2] c_outsp[ min_style spin min_modify alpha_damp 1.0 discrete_factor 10.0 minimize 1.0e-10 1.0e-10 1000 100 -WARNING: Using 'neigh_modify every 1 delay 0 check yes' setting during minimization (../min.cpp:177) -WARNING: Using spin pair style without nve/spin or neb/spin (../pair_spin.cpp:87) +WARNING: Using 'neigh_modify every 1 delay 0 check yes' setting during minimization (../min.cpp:190) +WARNING: Using spin pair style without nve/spin or neb/spin (../pair_spin.cpp:88) Neighbor list info ... update every 1 steps, delay 0 steps, check yes max neighbors/atom: 2000, page size: 100000 @@ -76,20 +76,20 @@ Neighbor list info ... bin: standard Per MPI rank memory allocation (min/avg/max) = 6.828 | 6.829 | 6.829 Mbytes Step Time v_magx v_magz v_magnorm v_tmag TotEng - 0 0 -0.0285071136621457 -0.00948990815281275 0.0764569750905723 5048.5607623768 -0.701465876910695 - 100 0.01 -0.584953861980204 -0.0517163256267969 0.999992350892306 6.25556948778489e-05 -50.5787443620229 - 200 0.02 -0.584864756506845 -0.0547143484057154 0.999999990495506 3.49782260454051e-06 -50.5787971409246 - 300 0.03 -0.5847600493607 -0.0578846348986585 0.999999999988173 3.83095226804998e-06 -50.5788061208592 - 400 0.04 -0.584642875238891 -0.06123730753627 0.999999999999984 4.28575832708228e-06 -50.5788161053499 - 500 0.05 -0.584511765589526 -0.0647826190376232 0.999999999999999 4.79421486949061e-06 -50.5788272748473 - 600 0.06 -0.584365074206158 -0.0685313536438759 0.999999999999999 5.36242072641826e-06 -50.5788397688148 - 700 0.07 -0.584200963215272 -0.0724948469588718 1 5.99725249459218e-06 -50.5788537427249 - 800 0.08 -0.584017381477007 -0.0766850043611196 1 6.7063419199184e-06 -50.5788693699014 - 900 0.09 -0.583812040722352 -0.0811143180675365 0.999999999999998 7.49814943594153e-06 -50.5788868434688 - 1000 0.1 -0.583582389243979 -0.0857958823565732 0.999999999999999 8.38204259112203e-06 -50.5789063784897 -Loop time of 0.0845464 on 4 procs for 1000 steps with 250 atoms - -99.8% CPU use with 4 MPI tasks x no OpenMP threads + 0 0 -0.0285071136621457 -0.00948990815281275 0.0764569750905723 10097.1215247536 -0.701465876910695 + 100 0.01 -0.584953861980204 -0.0517163256267969 0.999992350892306 0.000125111389755698 -50.5787443620229 + 200 0.02 -0.584864756506845 -0.0547143484057154 0.999999990495506 6.99564520908101e-06 -50.5787971409246 + 300 0.03 -0.5847600493607 -0.0578846348986585 0.999999999988173 7.66190453609995e-06 -50.5788061208592 + 400 0.04 -0.584642875238891 -0.06123730753627 0.999999999999984 8.57151665416457e-06 -50.5788161053499 + 500 0.05 -0.584511765589526 -0.0647826190376232 0.999999999999999 9.58842973898121e-06 -50.5788272748473 + 600 0.06 -0.584365074206158 -0.0685313536438759 0.999999999999999 1.07248414528365e-05 -50.5788397688148 + 700 0.07 -0.584200963215272 -0.0724948469588718 1 1.19945049891844e-05 -50.5788537427249 + 800 0.08 -0.584017381477007 -0.0766850043611196 1 1.34126838398368e-05 -50.5788693699014 + 900 0.09 -0.583812040722352 -0.0811143180675365 0.999999999999998 1.49962988718831e-05 -50.5788868434688 + 1000 0.1 -0.583582389243979 -0.0857958823565732 0.999999999999999 1.67640851822441e-05 -50.5789063784897 +Loop time of 0.0884451 on 4 procs for 1000 steps with 250 atoms + +98.5% CPU use with 4 MPI tasks x no OpenMP threads Minimization stats: Stopping criterion = max iterations @@ -103,12 +103,12 @@ Minimization stats: MPI task timing breakdown: Section | min time | avg time | max time |%varavg| %total --------------------------------------------------------------- -Pair | 0.043007 | 0.045307 | 0.04776 | 0.8 | 53.59 +Pair | 0.042681 | 0.045882 | 0.051702 | 1.6 | 51.88 Neigh | 0 | 0 | 0 | 0.0 | 0.00 -Comm | 0.026827 | 0.029139 | 0.031438 | 1.0 | 34.47 -Output | 0.0023198 | 0.0023302 | 0.0023572 | 0.0 | 2.76 -Modify | 0.00041103 | 0.0004673 | 0.00054026 | 0.0 | 0.55 -Other | | 0.007303 | | | 8.64 +Comm | 0.026088 | 0.032027 | 0.034881 | 2.0 | 36.21 +Output | 0.0023928 | 0.0024027 | 0.0024304 | 0.0 | 2.72 +Modify | 0.00047779 | 0.00051093 | 0.00056863 | 0.0 | 0.58 +Other | | 0.007622 | | | 8.62 Nlocal: 62.5 ave 65 max 60 min Histogram: 2 0 0 0 0 0 0 0 0 2 -- GitLab From 22aab4406e41d1996c14f6310e118500d3a3a218 Mon Sep 17 00:00:00 2001 From: julient31 Date: Mon, 30 Mar 2020 09:32:46 -0600 Subject: [PATCH 115/717] Commit3 033020 - re-checked all validation problems, ready for PR --- .../bench-prec-spin.in | 46 ------------------- .../validation_nve/test-spin-precession.in | 39 ---------------- 2 files changed, 85 deletions(-) delete mode 100644 examples/SPIN/test_problems/validation_langevin_precession/bench-prec-spin.in delete mode 100644 examples/SPIN/test_problems/validation_nve/test-spin-precession.in diff --git a/examples/SPIN/test_problems/validation_langevin_precession/bench-prec-spin.in b/examples/SPIN/test_problems/validation_langevin_precession/bench-prec-spin.in deleted file mode 100644 index 45da087477..0000000000 --- a/examples/SPIN/test_problems/validation_langevin_precession/bench-prec-spin.in +++ /dev/null @@ -1,46 +0,0 @@ -#LAMMPS in.run - -units metal -atom_style spin -atom_modify map array -boundary p p p - -# read_data singlespin.data - -lattice sc 3.0 -region box block 0.0 1.0 0.0 1.0 0.0 1.0 -create_box 1 box -create_atoms 1 box - -mass 1 1.0 -set type 1 spin 1.0 0.0 0.0 1.0 - -# defines a pair/style for neighbor list, but do not use it -pair_style spin/exchange 4.0 -pair_coeff * * exchange 1.0 0.0 0.0 1.0 - -group bead type 1 - -variable H equal 10.0 -variable Kan equal 0.0 -variable Temperature equal 19.00000000000000000000 -variable RUN equal 1000000 - -fix 1 all nve/spin lattice no -fix 2 all precession/spin zeeman ${H} 0.0 0.0 1.0 anisotropy ${Kan} 0.0 0.0 1.0 -fix_modify 2 energy yes -fix 3 all langevin/spin ${Temperature} 0.01 12345 - -compute compute_spin all spin -compute outsp all property/atom spx spy spz sp -compute magsz all reduce ave c_outsp[3] - -thermo 50000 -thermo_style custom step time temp vol pe c_compute_spin[5] etotal - -variable magnetic_energy equal c_compute_spin[5] - -fix avespin all ave/time 1 ${RUN} ${RUN} v_Temperature v_H v_Kan c_magsz v_magnetic_energy file average_spin - -timestep 0.1 -run ${RUN} diff --git a/examples/SPIN/test_problems/validation_nve/test-spin-precession.in b/examples/SPIN/test_problems/validation_nve/test-spin-precession.in deleted file mode 100644 index 0ca49364d2..0000000000 --- a/examples/SPIN/test_problems/validation_nve/test-spin-precession.in +++ /dev/null @@ -1,39 +0,0 @@ -#LAMMPS in.run - -units metal -atom_style spin -atom_modify map array -boundary f f f - -read_data two_spins.data - -pair_style spin/exchange 3.1 -pair_coeff * * exchange 3.1 11.254 0.0 1.0 - -group bead type 1 - -variable H equal 0.0 -variable Kan equal 0.0 -variable Temperature equal 0.0 -variable RUN equal 30000 - -fix 1 all nve/spin lattice no -fix 2 all precession/spin zeeman ${H} 0.0 0.0 1.0 anisotropy ${Kan} 0.0 0.0 1.0 -fix_modify 2 energy yes -fix 3 all langevin/spin ${Temperature} 0.01 12345 - -compute out_mag all spin -compute out_pe all pe - -variable magx equal c_out_mag[1] -variable magy equal c_out_mag[2] -variable magz equal c_out_mag[3] -variable magnorm equal c_out_mag[4] -variable emag equal c_out_mag[5] - -thermo_style custom step time v_magx v_magy v_magz v_emag pe etotal -thermo 10 - -timestep 0.0001 - -run ${RUN} -- GitLab From 373b57cfdc7e80cc459820f61363f98810ee2641 Mon Sep 17 00:00:00 2001 From: Richard Berger Date: Mon, 30 Mar 2020 17:36:00 -0400 Subject: [PATCH 116/717] Change 'echo -e' to 'printf' for greater compatibility --- lib/gpu/Makefile.hip | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/gpu/Makefile.hip b/lib/gpu/Makefile.hip index 1c8e0683ca..1a829544af 100644 --- a/lib/gpu/Makefile.hip +++ b/lib/gpu/Makefile.hip @@ -137,7 +137,7 @@ $(OBJ_DIR)/lal_%.o: lal_%.cpp $(CUHS) $(ALL_H) $(LIB_DIR)/libgpu.a: $(OBJS) $(AR) -crs $@ $(OBJS) - echo -e "export HIP_PLATFORM := $(HIP_PLATFORM)\n$(HIP_LIBS_TARGET)" > 'Makefile.lammps' + printf "export HIP_PLATFORM := %s\n%s\n" "$(HIP_PLATFORM)" "$(HIP_LIBS_TARGET)" > Makefile.lammps # test app building -- GitLab From 19a52dc5065ec6521d121ff49bd17051eec1b4f4 Mon Sep 17 00:00:00 2001 From: Richard Berger Date: Mon, 30 Mar 2020 17:36:22 -0400 Subject: [PATCH 117/717] Update lib/gpu/.gitignore --- lib/gpu/.gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/gpu/.gitignore b/lib/gpu/.gitignore index 7b5254e480..d32b287c1e 100644 --- a/lib/gpu/.gitignore +++ b/lib/gpu/.gitignore @@ -2,6 +2,7 @@ /obj_ocl /ocl_get_devices /nvc_get_devices +/hip_get_devices /*.cubin /*_cubin.h /*_cl.h -- GitLab From 3ba83de700a6ef8d85566bd04ffd54ad43da7c79 Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Mon, 30 Mar 2020 16:26:46 -0600 Subject: [PATCH 118/717] Work around team_size issue in npair_kokkos --- src/KOKKOS/npair_kokkos.cpp | 45 ++++++++++++++++++++++++++----------- 1 file changed, 32 insertions(+), 13 deletions(-) diff --git a/src/KOKKOS/npair_kokkos.cpp b/src/KOKKOS/npair_kokkos.cpp index aa2a1fc5ff..57bc865c9d 100644 --- a/src/KOKKOS/npair_kokkos.cpp +++ b/src/KOKKOS/npair_kokkos.cpp @@ -214,7 +214,6 @@ void NPairKokkos::build(NeighList *list_) #ifdef KOKKOS_ENABLE_CUDA #define BINS_PER_BLOCK 2 const int factor = atoms_per_bin<64?2:1; - Kokkos::TeamPolicy config((mbins+factor-1)/factor,atoms_per_bin*factor); #else const int factor = 1; #endif @@ -227,9 +226,14 @@ void NPairKokkos::build(NeighList *list_) if (SIZE) { NPairKokkosBuildFunctorSize f(data,atoms_per_bin * 5 * sizeof(X_FLOAT) * factor); #ifdef KOKKOS_ENABLE_CUDA - if (ExecutionSpaceFromDevice::space == Device) - Kokkos::parallel_for(config, f); - else + if (ExecutionSpaceFromDevice::space == Device) { + int team_size = atoms_per_bin*factor; + int team_size_max = Kokkos::TeamPolicy(team_size,Kokkos::AUTO).team_size_max(f,Kokkos::ParallelForTag()); + if (team_size <= team_size_max) { + Kokkos::TeamPolicy config((mbins+factor-1)/factor,team_size); + Kokkos::parallel_for(config, f); + } else Kokkos::parallel_for(nall, f); // fall back to flat method + } else Kokkos::parallel_for(nall, f); #else Kokkos::parallel_for(nall, f); @@ -237,9 +241,14 @@ void NPairKokkos::build(NeighList *list_) } else { NPairKokkosBuildFunctor f(data,atoms_per_bin * 5 * sizeof(X_FLOAT) * factor); #ifdef KOKKOS_ENABLE_CUDA - if (ExecutionSpaceFromDevice::space == Device) - Kokkos::parallel_for(config, f); - else + if (ExecutionSpaceFromDevice::space == Device) { + int team_size = atoms_per_bin*factor; + int team_size_max = Kokkos::TeamPolicy(team_size,Kokkos::AUTO).team_size_max(f,Kokkos::ParallelForTag()); + if (team_size <= team_size_max) { + Kokkos::TeamPolicy config((mbins+factor-1)/factor,team_size); + Kokkos::parallel_for(config, f); + } else Kokkos::parallel_for(nall, f); // fall back to flat method + } else Kokkos::parallel_for(nall, f); #else Kokkos::parallel_for(nall, f); @@ -249,9 +258,14 @@ void NPairKokkos::build(NeighList *list_) if (SIZE) { NPairKokkosBuildFunctorSize f(data,atoms_per_bin * 5 * sizeof(X_FLOAT) * factor); #ifdef KOKKOS_ENABLE_CUDA - if (ExecutionSpaceFromDevice::space == Device) - Kokkos::parallel_for(config, f); - else + if (ExecutionSpaceFromDevice::space == Device) { + int team_size = atoms_per_bin*factor; + int team_size_max = Kokkos::TeamPolicy(team_size,Kokkos::AUTO).team_size_max(f,Kokkos::ParallelForTag()); + if (team_size <= team_size_max) { + Kokkos::TeamPolicy config((mbins+factor-1)/factor,team_size); + Kokkos::parallel_for(config, f); + } else Kokkos::parallel_for(nall, f); // fall back to flat method + } else Kokkos::parallel_for(nall, f); #else Kokkos::parallel_for(nall, f); @@ -259,9 +273,14 @@ void NPairKokkos::build(NeighList *list_) } else { NPairKokkosBuildFunctor f(data,atoms_per_bin * 5 * sizeof(X_FLOAT) * factor); #ifdef KOKKOS_ENABLE_CUDA - if (ExecutionSpaceFromDevice::space == Device) - Kokkos::parallel_for(config, f); - else + if (ExecutionSpaceFromDevice::space == Device) { + int team_size = atoms_per_bin*factor; + int team_size_max = Kokkos::TeamPolicy(team_size,Kokkos::AUTO).team_size_max(f,Kokkos::ParallelForTag()); + if (team_size <= team_size_max) { + Kokkos::TeamPolicy config((mbins+factor-1)/factor,team_size); + Kokkos::parallel_for(config, f); + } else Kokkos::parallel_for(nall, f); // fall back to flat method + } else Kokkos::parallel_for(nall, f); #else Kokkos::parallel_for(nall, f); -- GitLab From 119ba61c09c0781adaf4c50a1a3b7e9264f9b00b Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Tue, 31 Mar 2020 08:23:59 -0600 Subject: [PATCH 119/717] cmake: fix MPI linkage --- cmake/CMakeLists.txt | 5 +++-- cmake/Modules/Packages/GPU.cmake | 2 +- cmake/Modules/Packages/MESSAGE.cmake | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index 3a702757de..339223b20e 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -190,6 +190,7 @@ if(BUILD_MPI) find_package(MPI REQUIRED) target_compile_definitions(lammps PRIVATE -DMPICH_SKIP_MPICXX -DOMPI_SKIP_MPICXX=1) target_link_libraries(lammps PUBLIC MPI::MPI_CXX) + add_library(LAMMPS::MPI ALIAS MPI::MPI_CXX) option(LAMMPS_LONGLONG_TO_LONG "Workaround if your system or MPI version does not recognize 'long long' data types" OFF) if(LAMMPS_LONGLONG_TO_LONG) target_compile_definitions(lammps PRIVATE -DLAMMPS_LONGLONG_TO_LONG) @@ -211,7 +212,7 @@ else() else() target_link_libraries(lammps PUBLIC mpi_stubs) endif() - add_library(MPI::MPI_CXX ALIAS mpi_stubs) + add_library(LAMMPS::MPI ALIAS mpi_stubs) endif() set(LAMMPS_SIZES "smallbig" CACHE STRING "LAMMPS integer sizes (smallsmall: all 32-bit, smallbig: 64-bit #atoms #timesteps, bigbig: also 64-bit imageint, 64-bit atom ids)") @@ -488,7 +489,7 @@ if(PKG_USER-ATC) if(LAMMPS_SIZES STREQUAL BIGBIG) message(FATAL_ERROR "The USER-ATC Package is not compatible with -DLAMMPS_BIGBIG") endif() - target_link_libraries(atc PRIVATE ${LAPACK_LIBRARIES} MPI::MPI_CXX) + target_link_libraries(atc PRIVATE ${LAPACK_LIBRARIES} LAMMPS::MPI) target_include_directories(atc PRIVATE ${LAMMPS_SOURCE_DIR}) target_compile_definitions(atc PRIVATE -DLAMMPS_${LAMMPS_SIZES}) endif() diff --git a/cmake/Modules/Packages/GPU.cmake b/cmake/Modules/Packages/GPU.cmake index 4e2ab70243..cbdfdd438f 100644 --- a/cmake/Modules/Packages/GPU.cmake +++ b/cmake/Modules/Packages/GPU.cmake @@ -192,7 +192,7 @@ if(PKG_GPU) get_property(GPU_SOURCES GLOBAL PROPERTY GPU_SOURCES) - target_link_libraries(gpu PRIVATE MPI::MPI_CXX) + target_link_libraries(gpu PRIVATE LAMMPS::MPI) if(BUILD_LIB AND NOT BUILD_SHARED_LIBS) install(TARGETS gpu EXPORT LAMMPS_Targets LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) endif() diff --git a/cmake/Modules/Packages/MESSAGE.cmake b/cmake/Modules/Packages/MESSAGE.cmake index f4ad35b3e0..5367301190 100644 --- a/cmake/Modules/Packages/MESSAGE.cmake +++ b/cmake/Modules/Packages/MESSAGE.cmake @@ -15,7 +15,7 @@ if(PKG_MESSAGE) if(BUILD_MPI) target_compile_definitions(cslib PRIVATE -DMPI_YES) set_target_properties(cslib PROPERTIES OUTPUT_NAME "csmpi") - target_link_libraries(cslib PRIVATE MPI::MPI_CXX) + target_link_libraries(cslib PRIVATE LAMMPS::MPI) else() target_compile_definitions(cslib PRIVATE -DMPI_NO) target_include_directories(cslib PRIVATE ${LAMMPS_LIB_SOURCE_DIR}/message/cslib/src/STUBS_MPI) -- GitLab From 05ecda37482e2fe50de3be168e91dfcc0b293c29 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Tue, 31 Mar 2020 15:06:40 -0600 Subject: [PATCH 120/717] cmake: try to fix MPI4WIN build --- cmake/CMakeLists.txt | 4 +--- cmake/Modules/MPI4WIN.cmake | 9 ++++++--- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index 339223b20e..db43fd219b 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -186,6 +186,7 @@ if(BUILD_MPI) # We use a non-standard procedure to compile with MPI on windows if (CMAKE_SYSTEM_NAME STREQUAL Windows) include(MPI4WIN) + target_link_libraries(lammps PUBLIC LAMMPS::MPI) else() find_package(MPI REQUIRED) target_compile_definitions(lammps PRIVATE -DMPICH_SKIP_MPICXX -DOMPI_SKIP_MPICXX=1) @@ -515,9 +516,6 @@ include(Packages/GPU) # and after everything else that is compiled locally ###################################################################### if(${CMAKE_SYSTEM_NAME} STREQUAL "Windows") - if(LAMMPS_USE_MPI4WIN) - target_link_libraries(lammps PRIVATE ${MPI4WIN_LIBRARIES}) - endif() target_link_libraries(lammps PRIVATE -lwsock32 -lpsapi) endif() diff --git a/cmake/Modules/MPI4WIN.cmake b/cmake/Modules/MPI4WIN.cmake index 4447289668..f78493ba7b 100644 --- a/cmake/Modules/MPI4WIN.cmake +++ b/cmake/Modules/MPI4WIN.cmake @@ -16,8 +16,11 @@ else() endif() ExternalProject_get_property(mpi4win_build SOURCE_DIR) -target_compile_definitions(lammps PRIVATE -DMPICH_SKIP_MPICXX) -target_include_directories(lammps PRIVATE "${SOURCE_DIR}/include") -set(MPI4WIN_LIBRARIES "${SOURCE_DIR}/lib/libmpi.a") +file(MAKE_DIRECTORY "${SOURCE_DIR}/include") +add_library(LAMMPS::MPI UNKNOWN IMPORTED) +set_target_properties(LAMMPS::MPI PROPERTIES + IMPORTED_LOCATION "${SOURCE_DIR}/lib/libmpi.a" + INTERFACE_INCLUDE_DIRECTORIES "${SOURCE_DIR}/include" + INTERFACE_COMPILE_DEFINITIONS "-DMPICH_SKIP_MPICXX") add_dependencies(lammps mpi4win_build) set(LAMMPS_USE_MPI4WIN ON) -- GitLab From 041941ed81941e1a6c13000ece2b069c2abcdec7 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Tue, 31 Mar 2020 15:37:39 -0600 Subject: [PATCH 121/717] MPI4WIN.cmake: remove duplicated -D --- cmake/Modules/MPI4WIN.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/Modules/MPI4WIN.cmake b/cmake/Modules/MPI4WIN.cmake index f78493ba7b..8b8dbd9632 100644 --- a/cmake/Modules/MPI4WIN.cmake +++ b/cmake/Modules/MPI4WIN.cmake @@ -21,6 +21,6 @@ add_library(LAMMPS::MPI UNKNOWN IMPORTED) set_target_properties(LAMMPS::MPI PROPERTIES IMPORTED_LOCATION "${SOURCE_DIR}/lib/libmpi.a" INTERFACE_INCLUDE_DIRECTORIES "${SOURCE_DIR}/include" - INTERFACE_COMPILE_DEFINITIONS "-DMPICH_SKIP_MPICXX") + INTERFACE_COMPILE_DEFINITIONS "MPICH_SKIP_MPICXX") add_dependencies(lammps mpi4win_build) set(LAMMPS_USE_MPI4WIN ON) -- GitLab From 53ce24fac15bbdb505ec3774b8ff7c660d0237a5 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Tue, 31 Mar 2020 16:06:08 -0600 Subject: [PATCH 122/717] cmake: remove LAMMPS_USE_MPI4WIN hacks --- cmake/CMakeLists.txt | 3 --- cmake/Modules/MPI4WIN.cmake | 3 +-- cmake/Modules/Packages/GPU.cmake | 6 ------ 3 files changed, 1 insertion(+), 11 deletions(-) diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index db43fd219b..4983a59134 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -468,9 +468,6 @@ foreach(SIMPLE_LIB POEMS USER-ATC USER-AWPMD USER-H5MD) install(TARGETS ${PKG_LIB} EXPORT LAMMPS_Targets LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) endif() set_target_properties(${PKG_LIB} PROPERTIES OUTPUT_NAME lammps_${PKG_LIB}${LAMMPS_LIB_SUFFIX}) - if(LAMMPS_USE_MPI4WIN) - add_dependencies(${PKG_LIB} mpi4win_build) - endif() target_link_libraries(lammps PRIVATE ${PKG_LIB}) if(PKG_LIB STREQUAL awpmd) target_include_directories(awpmd PUBLIC ${LAMMPS_LIB_SOURCE_DIR}/awpmd/systems/interact ${LAMMPS_LIB_SOURCE_DIR}/awpmd/ivutils/include) diff --git a/cmake/Modules/MPI4WIN.cmake b/cmake/Modules/MPI4WIN.cmake index 8b8dbd9632..242440b6f6 100644 --- a/cmake/Modules/MPI4WIN.cmake +++ b/cmake/Modules/MPI4WIN.cmake @@ -22,5 +22,4 @@ set_target_properties(LAMMPS::MPI PROPERTIES IMPORTED_LOCATION "${SOURCE_DIR}/lib/libmpi.a" INTERFACE_INCLUDE_DIRECTORIES "${SOURCE_DIR}/include" INTERFACE_COMPILE_DEFINITIONS "MPICH_SKIP_MPICXX") -add_dependencies(lammps mpi4win_build) -set(LAMMPS_USE_MPI4WIN ON) +add_dependencies(LAMMPS::MPI mpi4win_build) diff --git a/cmake/Modules/Packages/GPU.cmake b/cmake/Modules/Packages/GPU.cmake index cbdfdd438f..036bbc68d1 100644 --- a/cmake/Modules/Packages/GPU.cmake +++ b/cmake/Modules/Packages/GPU.cmake @@ -108,9 +108,6 @@ if(PKG_GPU) endif() target_link_libraries(lammps PRIVATE gpu) - if(LAMMPS_USE_MPI4WIN) - add_dependencies(gpu mpi4win_build) - endif() add_executable(nvc_get_devices ${LAMMPS_LIB_SOURCE_DIR}/gpu/geryon/ucl_get_devices.cpp) target_compile_definitions(nvc_get_devices PRIVATE -DUCL_CUDADR) @@ -172,9 +169,6 @@ if(PKG_GPU) target_compile_definitions(gpu PRIVATE -DUSE_OPENCL) target_link_libraries(lammps PRIVATE gpu) - if(LAMMPS_USE_MPI4WIN) - add_dependencies(gpu mpi4win_build) - endif() add_executable(ocl_get_devices ${LAMMPS_LIB_SOURCE_DIR}/gpu/geryon/ucl_get_devices.cpp) target_compile_definitions(ocl_get_devices PRIVATE -DUCL_OPENCL) -- GitLab From 099880e91b760a9f03d905218b78a4d925896c08 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Tue, 31 Mar 2020 16:35:28 -0600 Subject: [PATCH 123/717] cmake: add missing size defines --- cmake/CMakeLists.txt | 1 + cmake/Modules/Packages/GPU.cmake | 1 + cmake/Modules/Packages/MESSAGE.cmake | 1 + cmake/Modules/Packages/USER-COLVARS.cmake | 1 + 4 files changed, 4 insertions(+) diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index 4983a59134..4771d19b51 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -601,6 +601,7 @@ endif() if(BUILD_TOOLS) add_executable(binary2txt ${LAMMPS_TOOLS_DIR}/binary2txt.cpp) + target_compile_definitions(binary2txt PRIVATE -DLAMMPS_${LAMMPS_SIZES}) install(TARGETS binary2txt DESTINATION ${CMAKE_INSTALL_BINDIR}) include(CheckGeneratorSupport) diff --git a/cmake/Modules/Packages/GPU.cmake b/cmake/Modules/Packages/GPU.cmake index 036bbc68d1..a55c9128cb 100644 --- a/cmake/Modules/Packages/GPU.cmake +++ b/cmake/Modules/Packages/GPU.cmake @@ -190,6 +190,7 @@ if(PKG_GPU) if(BUILD_LIB AND NOT BUILD_SHARED_LIBS) install(TARGETS gpu EXPORT LAMMPS_Targets LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) endif() + target_compile_definitions(gpu PRIVATE -DLAMMPS_${LAMMPS_SIZES}) set_target_properties(gpu PROPERTIES OUTPUT_NAME lammps_gpu${LAMMPS_LIB_SUFFIX}) target_sources(lammps PRIVATE ${GPU_SOURCES}) target_include_directories(lammps PRIVATE ${GPU_SOURCES_DIR}) diff --git a/cmake/Modules/Packages/MESSAGE.cmake b/cmake/Modules/Packages/MESSAGE.cmake index 5367301190..5f2fb9dcdc 100644 --- a/cmake/Modules/Packages/MESSAGE.cmake +++ b/cmake/Modules/Packages/MESSAGE.cmake @@ -11,6 +11,7 @@ if(PKG_MESSAGE) if(BUILD_LIB AND NOT BUILD_SHARED_LIBS) install(TARGETS cslib EXPORT LAMMPS_Targets LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) endif() + target_compile_definitions(cslib PRIVATE -DLAMMPS_${LAMMPS_SIZES}) set_target_properties(cslib PROPERTIES OUTPUT_NAME lammps_cslib${LAMMPS_LIB_SUFFIX}) if(BUILD_MPI) target_compile_definitions(cslib PRIVATE -DMPI_YES) diff --git a/cmake/Modules/Packages/USER-COLVARS.cmake b/cmake/Modules/Packages/USER-COLVARS.cmake index 1b13ffc30a..a0138df6ee 100644 --- a/cmake/Modules/Packages/USER-COLVARS.cmake +++ b/cmake/Modules/Packages/USER-COLVARS.cmake @@ -22,6 +22,7 @@ if(PKG_USER-COLVARS) if(BUILD_LIB AND NOT BUILD_SHARED_LIBS) install(TARGETS colvars EXPORT LAMMPS_Targets LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) endif() + target_compile_definitions(colvars PRIVATE -DLAMMPS_${LAMMPS_SIZES}) set_target_properties(colvars PROPERTIES OUTPUT_NAME lammps_colvars${LAMMPS_LIB_SUFFIX}) target_include_directories(colvars PUBLIC ${LAMMPS_LIB_SOURCE_DIR}/colvars) target_link_libraries(lammps PRIVATE colvars) -- GitLab From b64580053771ddb983b2d008e6728d9536c85b01 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Tue, 31 Mar 2020 19:59:33 -0600 Subject: [PATCH 124/717] cmake: mark MPI::MPI_CXX global --- cmake/CMakeLists.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index 4771d19b51..3213da02db 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -188,9 +188,10 @@ if(BUILD_MPI) include(MPI4WIN) target_link_libraries(lammps PUBLIC LAMMPS::MPI) else() + set(MPI_CXX_SKIP_MPICXX ON) find_package(MPI REQUIRED) - target_compile_definitions(lammps PRIVATE -DMPICH_SKIP_MPICXX -DOMPI_SKIP_MPICXX=1) target_link_libraries(lammps PUBLIC MPI::MPI_CXX) + set_target_properties(MPI::MPI_CXX PROPERTIES IMPORTED_GLOBAL TRUE) add_library(LAMMPS::MPI ALIAS MPI::MPI_CXX) option(LAMMPS_LONGLONG_TO_LONG "Workaround if your system or MPI version does not recognize 'long long' data types" OFF) if(LAMMPS_LONGLONG_TO_LONG) -- GitLab From 2f4571e31d17f77039dce3ebbd5f22f56eb5a4fe Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Tue, 31 Mar 2020 20:00:17 -0600 Subject: [PATCH 125/717] VORONOI.cmake: create imported target for internal voro --- cmake/Modules/Packages/VORONOI.cmake | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/cmake/Modules/Packages/VORONOI.cmake b/cmake/Modules/Packages/VORONOI.cmake index e7f2b6b46d..99afbbd7b3 100644 --- a/cmake/Modules/Packages/VORONOI.cmake +++ b/cmake/Modules/Packages/VORONOI.cmake @@ -29,9 +29,13 @@ if(PKG_VORONOI) BUILD_BYPRODUCTS /src/libvoro++.a ) ExternalProject_get_property(voro_build SOURCE_DIR) - target_link_libraries(lammps PRIVATE ${SOURCE_DIR}/src/libvoro++.a) - target_include_directories(lammps PRIVATE ${SOURCE_DIR}/src) - add_dependencies(lammps voro_build) + file(MAKE_DIRECTORY ${SOURCE_DIR}/src) + add_library(LAMMPS::VORO UNKNOWN IMPORTED) + set_target_properties(LAMMPS::VORO PROPERTIES + IMPORTED_LOCATION "${SOURCE_DIR}/src/libvoro++.a" + INTERFACE_INCLUDE_DIRECTORIES "${SOURCE_DIR}/src") + target_link_libraries(lammps PRIVATE LAMMPS::VORO) + add_dependencies(LAMMPS::VORO voro_build) else() find_package(VORO) if(NOT VORO_FOUND) -- GitLab From 4202b4649b87ca951431dbfaf6ff3ecd5c5dce7b Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Tue, 31 Mar 2020 20:36:26 -0600 Subject: [PATCH 126/717] KOKKOS.cmake: create imported target for internal kokkos --- cmake/Modules/Packages/KOKKOS.cmake | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/cmake/Modules/Packages/KOKKOS.cmake b/cmake/Modules/Packages/KOKKOS.cmake index f7e844b790..662f60a38d 100644 --- a/cmake/Modules/Packages/KOKKOS.cmake +++ b/cmake/Modules/Packages/KOKKOS.cmake @@ -6,9 +6,6 @@ if(PKG_KOKKOS) message(FATAL_ERROR "Downloading kokkos currently only works with cmake-3.11 and higher") endif() message(STATUS "KOKKOS download requested - we will build our own") - # Workaround for cross compilation with MinGW where ${CMAKE_INSTALL_LIBDIR} - # is a full path, so we need to remove the prefix - string(REPLACE ${CMAKE_INSTALL_PREFIX} "" _KOKKOS_LIBDIR ${CMAKE_INSTALL_LIBDIR}) file(DOWNLOAD https://github.com/kokkos/kokkos/compare/3.0.00...stanmoore1:lammps.diff ${CMAKE_CURRENT_BINARY_DIR}/kokkos-lammps.patch) include(ExternalProject) ExternalProject_Add(kokkos_build @@ -16,14 +13,19 @@ if(PKG_KOKKOS) URL_MD5 281c7093aa3a603276e93abdf4be23b9 PATCH_COMMAND patch -p1 < ${CMAKE_CURRENT_BINARY_DIR}/kokkos-lammps.patch CMAKE_ARGS -DCMAKE_INSTALL_PREFIX= ${CMAKE_REQUEST_PIC} - -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} + -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DCMAKE_INSTALL_LIBDIR=lib -DCMAKE_MAKE_PROGRAM=${CMAKE_MAKE_PROGRAM} -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE} - BUILD_BYPRODUCTS /${_KOKKOS_LIBDIR}/libkokkoscore.a + BUILD_BYPRODUCTS /lib/libkokkoscore.a ) - list(APPEND LAMMPS_DEPS kokkos_build) ExternalProject_get_property(kokkos_build INSTALL_DIR) - target_include_directories(lammps PRIVATE ${INSTALL_DIR}/include) - target_link_libraries(lammps PRIVATE ${INSTALL_DIR}/${_KOKKOS_LIBDIR}/libkokkoscore.a ${CMAKE_DL_LIBS}) + file(MAKE_DIRECTORY ${INSTALL_DIR}/include) + add_library(LAMMPS::KOKKOS UNKNOWN IMPORTED) + set_target_properties(LAMMPS::KOKKOS PROPERTIES + IMPORTED_LOCATION "${INSTALL_DIR}/lib/libkokkoscore.a" + INTERFACE_INCLUDE_DIRECTORIES "${INSTALL_DIR}/include" + INTERFACE_LINK_LIBRARIES ${CMAKE_DL_LIBS}) + target_link_libraries(lammps PRIVATE LAMMPS::KOKKOS) + add_dependencies(LAMMPS::KOKKOS kokkos_build) elseif(EXTERNAL_KOKKOS) find_package(Kokkos 3) if(NOT Kokkos_FOUND) -- GitLab From c472f38f5fff8731963a9a19930ba2e87efa4220 Mon Sep 17 00:00:00 2001 From: Evangelos Voyiatzis Date: Wed, 1 Apr 2020 14:44:54 +0200 Subject: [PATCH 127/717] Update bond_morse.h --- src/MOLECULE/bond_morse.h | 1 + 1 file changed, 1 insertion(+) diff --git a/src/MOLECULE/bond_morse.h b/src/MOLECULE/bond_morse.h index 030a94a8da..cbab0aed1d 100644 --- a/src/MOLECULE/bond_morse.h +++ b/src/MOLECULE/bond_morse.h @@ -35,6 +35,7 @@ class BondMorse : public Bond { void read_restart(FILE *); void write_data(FILE *); double single(int, double, int, int, double &); + virtual void *extract(char *, int &); protected: double *d0,*alpha,*r0; -- GitLab From 494750b426957c092d7e0f42e43793b21333ca54 Mon Sep 17 00:00:00 2001 From: Evangelos Voyiatzis Date: Wed, 1 Apr 2020 14:46:52 +0200 Subject: [PATCH 128/717] Update bond_morse.cpp --- src/MOLECULE/bond_morse.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/MOLECULE/bond_morse.cpp b/src/MOLECULE/bond_morse.cpp index 249f92928f..562d21c50d 100644 --- a/src/MOLECULE/bond_morse.cpp +++ b/src/MOLECULE/bond_morse.cpp @@ -205,3 +205,12 @@ double BondMorse::single(int type, double rsq, int /*i*/, int /*j*/, if (r > 0.0) fforce = -2.0*d0[type]*alpha[type]*(1-ralpha)*ralpha/r; return d0[type]*(1-ralpha)*(1-ralpha); } + +/* ---------------------------------------------------------------------- */ + +void *BondMorse::extract(char *str, int &dim ) +{ + dim = 1; + if (strcmp(str,"r0")==0) return (void*) r0; + return NULL; +} -- GitLab From 566e110e422305d29bcf080434f0761cc6c5c225 Mon Sep 17 00:00:00 2001 From: Evangelos Voyiatzis Date: Wed, 1 Apr 2020 14:48:13 +0200 Subject: [PATCH 129/717] Update bond_class2.h --- src/CLASS2/bond_class2.h | 1 + 1 file changed, 1 insertion(+) diff --git a/src/CLASS2/bond_class2.h b/src/CLASS2/bond_class2.h index f0fcc6825e..fb7eb884df 100644 --- a/src/CLASS2/bond_class2.h +++ b/src/CLASS2/bond_class2.h @@ -35,6 +35,7 @@ class BondClass2 : public Bond { virtual void read_restart(FILE *); void write_data(FILE *); double single(int, double, int, int, double &); + virtual void *extract(char *, int &); protected: double *r0,*k2,*k3,*k4; -- GitLab From 5bc7a24479fe7614348979fde60f6ae6da200a91 Mon Sep 17 00:00:00 2001 From: Evangelos Voyiatzis Date: Wed, 1 Apr 2020 14:49:04 +0200 Subject: [PATCH 130/717] Update bond_class2.cpp --- src/CLASS2/bond_class2.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/CLASS2/bond_class2.cpp b/src/CLASS2/bond_class2.cpp index 0651db75fb..bdec6553b9 100644 --- a/src/CLASS2/bond_class2.cpp +++ b/src/CLASS2/bond_class2.cpp @@ -220,3 +220,12 @@ double BondClass2::single(int type, double rsq, int /*i*/, int /*j*/, double &ff else fforce = 0.0; return (k2[type]*dr2 + k3[type]*dr3 + k4[type]*dr4); } + +/* ---------------------------------------------------------------------- */ + +void *BondClass2::extract( char *str, int &dim ) +{ + dim = 1; + if (strcmp(str,"r0")==0) return (void*) r0; + return NULL; +} -- GitLab From bd7deebca2ad465b4b7d311373919e6227684c5d Mon Sep 17 00:00:00 2001 From: Evangelos Voyiatzis Date: Wed, 1 Apr 2020 14:50:32 +0200 Subject: [PATCH 131/717] Update bond_fene.h --- src/MOLECULE/bond_fene.h | 1 + 1 file changed, 1 insertion(+) diff --git a/src/MOLECULE/bond_fene.h b/src/MOLECULE/bond_fene.h index 1963e3ca22..77c7db1200 100644 --- a/src/MOLECULE/bond_fene.h +++ b/src/MOLECULE/bond_fene.h @@ -36,6 +36,7 @@ class BondFENE : public Bond { void read_restart(FILE *); void write_data(FILE *); double single(int, double, int, int, double &); + virtual void *extract(char *, int &); protected: double TWO_1_3; -- GitLab From 9446f8f780a691148d5e1093f3b253337bac5110 Mon Sep 17 00:00:00 2001 From: Evangelos Voyiatzis Date: Wed, 1 Apr 2020 14:51:23 +0200 Subject: [PATCH 132/717] Update bond_fene.cpp --- src/MOLECULE/bond_fene.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/MOLECULE/bond_fene.cpp b/src/MOLECULE/bond_fene.cpp index b8e197a344..239204dac6 100644 --- a/src/MOLECULE/bond_fene.cpp +++ b/src/MOLECULE/bond_fene.cpp @@ -272,3 +272,13 @@ double BondFENE::single(int type, double rsq, int /*i*/, int /*j*/, return eng; } + +/* ---------------------------------------------------------------------- */ + +void *BondFENE::extract( char *str, int &dim ) +{ + dim = 1; + if (strcmp(str,"kappa")==0) return (void*) k; + if (strcmp(str,"r0")==0) return (void*) r0; + return NULL; +} -- GitLab From d0c1b7ea08018884b19f8a0d9d43b23a3d33d265 Mon Sep 17 00:00:00 2001 From: Evangelos Voyiatzis Date: Wed, 1 Apr 2020 14:52:41 +0200 Subject: [PATCH 133/717] Update bond_nonlinear.h --- src/MOLECULE/bond_nonlinear.h | 1 + 1 file changed, 1 insertion(+) diff --git a/src/MOLECULE/bond_nonlinear.h b/src/MOLECULE/bond_nonlinear.h index 7782b93778..76dffdba31 100644 --- a/src/MOLECULE/bond_nonlinear.h +++ b/src/MOLECULE/bond_nonlinear.h @@ -35,6 +35,7 @@ class BondNonlinear : public Bond { void read_restart(FILE *); void write_data(FILE *); double single(int, double, int, int, double &); + virtual void *extract(char *, int &); protected: double *epsilon,*r0,*lamda; -- GitLab From ef112be87020cd22a7e30b988409346c08baa406 Mon Sep 17 00:00:00 2001 From: Evangelos Voyiatzis Date: Wed, 1 Apr 2020 14:54:17 +0200 Subject: [PATCH 134/717] Update bond_nonlinear.cpp --- src/MOLECULE/bond_nonlinear.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/MOLECULE/bond_nonlinear.cpp b/src/MOLECULE/bond_nonlinear.cpp index ee943ad28f..72e4580fcd 100644 --- a/src/MOLECULE/bond_nonlinear.cpp +++ b/src/MOLECULE/bond_nonlinear.cpp @@ -202,3 +202,13 @@ double BondNonlinear::single(int type, double rsq, int /*i*/, int /*j*/, fforce = -epsilon[type]/r * 2.0*dr*lamdasq/denomsq; return epsilon[type] * drsq / denom; } + +/* ---------------------------------------------------------------------- */ + +void *BondNonlinear::extract( char *str, int &dim ) +{ + dim = 1; + if (strcmp(str,"epsilon")==0) return (void*) epsilon; + if (strcmp(str,"r0")==0) return (void*) r0; + return NULL; +} -- GitLab From 596ec069602191d40cfab6d79f519d4b21d7a0fb Mon Sep 17 00:00:00 2001 From: Evangelos Voyiatzis Date: Wed, 1 Apr 2020 15:01:34 +0200 Subject: [PATCH 135/717] Update fix_adapt.rst --- doc/src/fix_adapt.rst | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/doc/src/fix_adapt.rst b/doc/src/fix_adapt.rst index eab8f92639..b4587caf73 100644 --- a/doc/src/fix_adapt.rst +++ b/doc/src/fix_adapt.rst @@ -288,11 +288,19 @@ Currently *bond* does not support bond_style hybrid nor bond_style hybrid/overlay as bond styles. The only bonds that currently are working with fix_adapt are -+---------------------------------+-------+------------+ -| :doc:`gromos ` | k, r0 | type bonds | -+---------------------------------+-------+------------+ -| :doc:`harmonic ` | k,r0 | type bonds | -+---------------------------------+-------+------------+ ++------------------------------------+-------+------------+ +| :doc:`class2 ` | r0 | type bonds | ++------------------------------------+-------+------------+ +| :doc:`fene ` | k, r0 | type bonds | ++------------------------------------+-------+------------+ +| :doc:`gromos ` | k, r0 | type bonds | ++------------------------------------+-------+------------+ +| :doc:`harmonic ` | k,r0 | type bonds | ++------------------------------------+-------+------------+ +| :doc:`morse ` | r0 | type bonds | ++------------------------------------+-------+------------+ +| :doc:`nonlinear ` | r0 | type bonds | ++------------------------------------+-------+------------+ ---------- -- GitLab From 1157a2a4c2d566d2e25c62918736b2742e73acd9 Mon Sep 17 00:00:00 2001 From: Evangelos Voyiatzis Date: Wed, 1 Apr 2020 15:14:21 +0200 Subject: [PATCH 136/717] Update bond_class2.cpp --- src/CLASS2/bond_class2.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/CLASS2/bond_class2.cpp b/src/CLASS2/bond_class2.cpp index bdec6553b9..097c8fe387 100644 --- a/src/CLASS2/bond_class2.cpp +++ b/src/CLASS2/bond_class2.cpp @@ -15,6 +15,7 @@ Contributing author: Eric Simon (Cray) ------------------------------------------------------------------------- */ +#include #include "bond_class2.h" #include #include -- GitLab From ba81e6a9558ced06629717507054ad8c21ebc97b Mon Sep 17 00:00:00 2001 From: Evangelos Voyiatzis Date: Wed, 1 Apr 2020 15:15:00 +0200 Subject: [PATCH 137/717] Update bond_morse.cpp --- src/MOLECULE/bond_morse.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/MOLECULE/bond_morse.cpp b/src/MOLECULE/bond_morse.cpp index 562d21c50d..0a92229879 100644 --- a/src/MOLECULE/bond_morse.cpp +++ b/src/MOLECULE/bond_morse.cpp @@ -18,6 +18,7 @@ #include "bond_morse.h" #include #include +#include #include "atom.h" #include "neighbor.h" #include "comm.h" -- GitLab From e93920bb5dbb170d645d3325a271b027848431c4 Mon Sep 17 00:00:00 2001 From: Evangelos Voyiatzis Date: Wed, 1 Apr 2020 15:15:25 +0200 Subject: [PATCH 138/717] Update bond_nonlinear.cpp --- src/MOLECULE/bond_nonlinear.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/MOLECULE/bond_nonlinear.cpp b/src/MOLECULE/bond_nonlinear.cpp index 72e4580fcd..8f0616e03e 100644 --- a/src/MOLECULE/bond_nonlinear.cpp +++ b/src/MOLECULE/bond_nonlinear.cpp @@ -14,6 +14,7 @@ #include "bond_nonlinear.h" #include #include +#include #include "atom.h" #include "neighbor.h" #include "comm.h" -- GitLab From 08e81d6a36ad13eb10a0efbeb318f083b20e9deb Mon Sep 17 00:00:00 2001 From: Evangelos Voyiatzis Date: Wed, 1 Apr 2020 15:15:52 +0200 Subject: [PATCH 139/717] Update bond_fene.cpp --- src/MOLECULE/bond_fene.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/MOLECULE/bond_fene.cpp b/src/MOLECULE/bond_fene.cpp index 239204dac6..e3c47b6241 100644 --- a/src/MOLECULE/bond_fene.cpp +++ b/src/MOLECULE/bond_fene.cpp @@ -14,6 +14,7 @@ #include "bond_fene.h" #include #include +#include #include "atom.h" #include "neighbor.h" #include "comm.h" -- GitLab From 22b90413d5f09907e7f3a2bdcc4661e9009f5187 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Wed, 1 Apr 2020 07:27:58 -0600 Subject: [PATCH 140/717] LATTE.cmake: create and use imported target --- cmake/Modules/Packages/LATTE.cmake | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/cmake/Modules/Packages/LATTE.cmake b/cmake/Modules/Packages/LATTE.cmake index 20944db1a9..a016b46312 100644 --- a/cmake/Modules/Packages/LATTE.cmake +++ b/cmake/Modules/Packages/LATTE.cmake @@ -9,27 +9,25 @@ if(PKG_LATTE) option(DOWNLOAD_LATTE "Download the LATTE library instead of using an already installed one" ${DOWNLOAD_LATTE_DEFAULT}) if(DOWNLOAD_LATTE) message(STATUS "LATTE download requested - we will build our own") - # Workaround for cross compilation with MinGW where ${CMAKE_INSTALL_LIBDIR} - # is a full path, so we need to remove the prefix - string(REPLACE ${CMAKE_INSTALL_PREFIX} "" _LATTE_LIBDIR ${CMAKE_INSTALL_LIBDIR}) include(ExternalProject) ExternalProject_Add(latte_build URL https://github.com/lanl/LATTE/archive/v1.2.1.tar.gz URL_MD5 85ac414fdada2d04619c8f936344df14 SOURCE_SUBDIR cmake - CMAKE_ARGS -DCMAKE_INSTALL_PREFIX= ${CMAKE_REQUEST_PIC} + CMAKE_ARGS -DCMAKE_INSTALL_PREFIX= ${CMAKE_REQUEST_PIC} -DCMAKE_INSTALL_LIBDIR=lib -DBLAS_LIBRARIES=${BLAS_LIBRARIES} -DLAPACK_LIBRARIES=${LAPACK_LIBRARIES} -DCMAKE_Fortran_COMPILER=${CMAKE_Fortran_COMPILER} -DCMAKE_Fortran_FLAGS=${CMAKE_Fortran_FLAGS} -DCMAKE_Fortran_FLAGS_${BTYPE}=${CMAKE_Fortran_FLAGS_${BTYPE}} -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DCMAKE_MAKE_PROGRAM=${CMAKE_MAKE_PROGRAM} -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE} - BUILD_BYPRODUCTS /${_LATTE_LIBDIR}/liblatte.a + BUILD_BYPRODUCTS /lib/liblatte.a ) - add_dependencies(lammps latte_build) ExternalProject_get_property(latte_build INSTALL_DIR) - target_link_libraries(lammps PRIVATE ${INSTALL_DIR}/${_LATTE_LIBDIR}/liblatte.a ${LAPACK_LIBRARIES}) - if(NOT LAPACK_FOUND) - add_dependencies(latte_build linalg) - endif() + add_library(LAMMPS::LATTE UNKNOWN IMPORTED) + set_target_properties(LAMMPS::LATTE PROPERTIES + IMPORTED_LOCATION "${INSTALL_DIR}/lib/liblatte.a" + INTERFACE_LINK_LIBRARIES "${LAPACK_LIBRARIES}") + target_link_libraries(lammps PRIVATE LAMMPS::LATTE) + add_dependencies(LAMMPS::LATTE latte_build) else() find_package(LATTE) if(NOT LATTE_FOUND) -- GitLab From 9574a18a73b2f79ff772f819c666e32440025b90 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Wed, 1 Apr 2020 08:09:56 -0600 Subject: [PATCH 141/717] USER-SMD.cmake: use imported target for downloaded eigen3 --- cmake/Modules/Packages/USER-SMD.cmake | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/cmake/Modules/Packages/USER-SMD.cmake b/cmake/Modules/Packages/USER-SMD.cmake index 4aa2b7ad04..98fad24e92 100644 --- a/cmake/Modules/Packages/USER-SMD.cmake +++ b/cmake/Modules/Packages/USER-SMD.cmake @@ -15,8 +15,10 @@ if(PKG_USER-SMD) CONFIGURE_COMMAND "" BUILD_COMMAND "" INSTALL_COMMAND "" ) ExternalProject_get_property(Eigen3_build SOURCE_DIR) - target_include_directories(lammps PRIVATE ${SOURCE_DIR}) - add_dependencies(lammps Eigen3_build) + add_library(LAMMPS::EIGEN3 INTERFACE IMPORTED) + set_target_properties(LAMMPS::EIGEN3 PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${SOURCE_DIR}") + target_link_libraries(lammps PRIVATE LAMMPS::EIGEN3) + add_dependencies(LAMMPS::EIGEN3 Eigen3_build) else() find_package(Eigen3 NO_MODULE) mark_as_advanced(Eigen3_DIR) -- GitLab From 72200a99581efdf1a93ed4d5c8436bd1e5a48c14 Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Wed, 1 Apr 2020 08:57:18 -0600 Subject: [PATCH 142/717] Fix MPI environment variable issue in Makefile.kokkos --- lib/kokkos/Makefile.kokkos | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/kokkos/Makefile.kokkos b/lib/kokkos/Makefile.kokkos index fd96e14bb5..e2b34fb453 100644 --- a/lib/kokkos/Makefile.kokkos +++ b/lib/kokkos/Makefile.kokkos @@ -128,7 +128,7 @@ KOKKOS_INTERNAL_COMPILER_INTEL := $(call kokkos_has_string,$(KOKKOS_CXX_VE KOKKOS_INTERNAL_COMPILER_PGI := $(call kokkos_has_string,$(KOKKOS_CXX_VERSION),PGI) KOKKOS_INTERNAL_COMPILER_XL := $(strip $(shell $(CXX) -qversion 2>&1 | grep XL | wc -l)) 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); echo "$(shell $(CXX) --version 2>&1 | grep nvcc | wc -l)>0" | bc)) +KOKKOS_INTERNAL_COMPILER_NVCC := $(strip $(shell echo "$(shell export OMPI_CXX=$(OMPI_CXX); export MPICH_CXX=$(MPICH_CXX); $(CXX) --version 2>&1 | grep nvcc | wc -l)>0" | bc)) 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 LLVM) KOKKOS_INTERNAL_COMPILER_HCC := $(call kokkos_has_string,$(KOKKOS_CXX_VERSION),HCC) -- GitLab From 7059996356f3413bd70ab4cbed391128a0adf0fa Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Wed, 1 Apr 2020 09:02:51 -0600 Subject: [PATCH 143/717] USER-SCAFACOS.cmake: use imported target for downloaded scafacos --- cmake/Modules/Packages/USER-SCAFACOS.cmake | 30 ++++++---------------- 1 file changed, 8 insertions(+), 22 deletions(-) diff --git a/cmake/Modules/Packages/USER-SCAFACOS.cmake b/cmake/Modules/Packages/USER-SCAFACOS.cmake index 6725472c07..c8e0c41ebb 100644 --- a/cmake/Modules/Packages/USER-SCAFACOS.cmake +++ b/cmake/Modules/Packages/USER-SCAFACOS.cmake @@ -45,28 +45,14 @@ if(PKG_USER-SCAFACOS) /lib/libfcs_fftw3.a ) ExternalProject_get_property(scafacos_build INSTALL_DIR) - set(SCAFACOS_BUILD_DIR ${INSTALL_DIR}) - target_include_directories(lammps PRIVATE ${SCAFACOS_BUILD_DIR}/include) - add_dependencies(lammps scafacos_build) - # list and order from pkg_config file of ScaFaCoS build - target_link_libraries(lammps PRIVATE ${SCAFACOS_BUILD_DIR}/lib/libfcs.a) - target_link_libraries(lammps PRIVATE ${SCAFACOS_BUILD_DIR}/lib/libfcs_direct.a) - target_link_libraries(lammps PRIVATE ${SCAFACOS_BUILD_DIR}/lib/libfcs_ewald.a) - target_link_libraries(lammps PRIVATE ${SCAFACOS_BUILD_DIR}/lib/libfcs_fmm.a) - target_link_libraries(lammps PRIVATE ${SCAFACOS_BUILD_DIR}/lib/libfcs_p2nfft.a) - target_link_libraries(lammps PRIVATE ${SCAFACOS_BUILD_DIR}/lib/libfcs_p3m.a) - target_link_libraries(lammps PRIVATE ${GSL_LIBRARIES}) - target_link_libraries(lammps PRIVATE ${SCAFACOS_BUILD_DIR}/lib/libfcs_near.a) - target_link_libraries(lammps PRIVATE ${SCAFACOS_BUILD_DIR}/lib/libfcs_gridsort.a) - target_link_libraries(lammps PRIVATE ${SCAFACOS_BUILD_DIR}/lib/libfcs_resort.a) - target_link_libraries(lammps PRIVATE ${SCAFACOS_BUILD_DIR}/lib/libfcs_redist.a) - target_link_libraries(lammps PRIVATE ${SCAFACOS_BUILD_DIR}/lib/libfcs_common.a) - target_link_libraries(lammps PRIVATE ${SCAFACOS_BUILD_DIR}/lib/libfcs_pnfft.a) - target_link_libraries(lammps PRIVATE ${SCAFACOS_BUILD_DIR}/lib/libfcs_pfft.a) - target_link_libraries(lammps PRIVATE ${SCAFACOS_BUILD_DIR}/lib/libfcs_fftw3_mpi.a) - target_link_libraries(lammps PRIVATE ${SCAFACOS_BUILD_DIR}/lib/libfcs_fftw3.a) - target_link_libraries(lammps PRIVATE ${MPI_Fortran_LIBRARIES}) - target_link_libraries(lammps PRIVATE ${MPI_C_LIBRARIES}) + file(MAKE_DIRECTORY ${INSTALL_DIR}/include) + add_library(LAMMPS::SCAFACOS UNKNOWN IMPORTED) + set_target_properties(LAMMPS::SCAFACOS PROPERTIES + IMPORTED_LOCATION "${INSTALL_DIR}/lib/libfcs.a" + INTERFACE_INCLUDE_DIRECTORIES "${INSTALL_DIR}/include" + INTERFACE_LINK_LIBRARIES "${INSTALL_DIR}/lib/libfcs.a;${INSTALL_DIR}/lib/libfcs_direct.a;${INSTALL_DIR}/lib/libfcs_ewald.a;${INSTALL_DIR}/lib/libfcs_fmm.a;${INSTALL_DIR}/lib/libfcs_p2nfft.a;${INSTALL_DIR}/lib/libfcs_p3m.a;GSL::gsl;${INSTALL_DIR}/lib/libfcs_near.a;${INSTALL_DIR}/lib/libfcs_gridsort.a;${INSTALL_DIR}/lib/libfcs_resort.a;${INSTALL_DIR}/lib/libfcs_redist.a;${INSTALL_DIR}/lib/libfcs_common.a;${INSTALL_DIR}/lib/libfcs_pnfft.a;${INSTALL_DIR}/lib/libfcs_pfft.a;${INSTALL_DIR}/lib/libfcs_fftw3_mpi.a;${INSTALL_DIR}/lib/libfcs_fftw3.a;MPI::MPI_Fortran;MPI::MPI_C") + target_link_libraries(lammps PRIVATE LAMMPS::SCAFACOS) + add_dependencies(LAMMPS::SCAFACOS scafacos_build) else() find_package(PkgConfig REQUIRED) pkg_check_modules(SCAFACOS REQUIRED IMPORTED_TARGET scafacos) -- GitLab From e5c564552009f2cf2137760de440bd69e5d40644 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Wed, 1 Apr 2020 10:36:07 -0600 Subject: [PATCH 144/717] MSCG.cmake: create imported target for downloaded mscg --- cmake/Modules/Packages/MSCG.cmake | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/cmake/Modules/Packages/MSCG.cmake b/cmake/Modules/Packages/MSCG.cmake index f4bac7d422..eed598d851 100644 --- a/cmake/Modules/Packages/MSCG.cmake +++ b/cmake/Modules/Packages/MSCG.cmake @@ -9,9 +9,6 @@ if(PKG_MSCG) option(DOWNLOAD_MSCG "Download MSCG library instead of using an already installed one)" ${DOWNLOAD_MSCG_DEFAULT}) if(DOWNLOAD_MSCG) include(ExternalProject) - if(NOT LAPACK_FOUND) - set(EXTRA_MSCG_OPTS "-DLAPACK_LIBRARIES=${CMAKE_CURRENT_BINARY_DIR}/liblinalg.a") - endif() ExternalProject_Add(mscg_build URL https://github.com/uchicago-voth/MSCG-release/archive/1.7.3.1.tar.gz URL_MD5 8c45e269ee13f60b303edd7823866a91 @@ -20,6 +17,7 @@ if(PKG_MSCG) -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} -DCMAKE_Fortran_COMPILER=${CMAKE_Fortran_COMPILER} + -DBLAS_LIBRARIES=${BLAS_LIBRARIES} -DLAPACK_LIBRARIES=${LAPACK_LIBRARIES} -DCMAKE_INSTALL_PREFIX= -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DCMAKE_MAKE_PROGRAM=${CMAKE_MAKE_PROGRAM} @@ -30,14 +28,14 @@ if(PKG_MSCG) ) ExternalProject_get_property(mscg_build BINARY_DIR) ExternalProject_get_property(mscg_build SOURCE_DIR) - set(MSCG_INCLUDE_DIRS ${SOURCE_DIR}/src) - target_include_directories(lammps PRIVATE ${MSCG_INCLUDE_DIRS}) - target_link_libraries(lammps PRIVATE "${BINARY_DIR}/libmscg.a") - add_dependencies(lammps mscg_build) - if(NOT LAPACK_FOUND) - file(MAKE_DIRECTORY ${MSCG_INCLUDE_DIRS}) - add_dependencies(mscg_build linalg) - endif() + file(MAKE_DIRECTORY ${SOURCE_DIR}/src) + add_library(LAMMPS::MSCG UNKNOWN IMPORTED) + set_target_properties(LAMMPS::MSCG PROPERTIES + IMPORTED_LOCATION "${BINARY_DIR}/libmscg.a" + INTERFACE_INCLUDE_DIRECTORIES "${SOURCE_DIR}/src" + INTERFACE_LINK_LIBRARIES "${LAPACK_LIBRARIES}") + target_link_libraries(lammps PRIVATE LAMMPS::MSCG) + add_dependencies(LAMMPS::MSCG mscg_build) else() find_package(MSCG) if(NOT MSCG_FOUND) -- GitLab From 0358e9c4c978964a332210f473b3ef0723dc945a Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Wed, 1 Apr 2020 11:46:01 -0600 Subject: [PATCH 145/717] KIM.cmake: switch to imported targets --- cmake/Modules/FindKIM-API.cmake | 85 -------------------------------- cmake/Modules/Packages/KIM.cmake | 36 +++++++------- 2 files changed, 17 insertions(+), 104 deletions(-) delete mode 100644 cmake/Modules/FindKIM-API.cmake diff --git a/cmake/Modules/FindKIM-API.cmake b/cmake/Modules/FindKIM-API.cmake deleted file mode 100644 index 17c195e62f..0000000000 --- a/cmake/Modules/FindKIM-API.cmake +++ /dev/null @@ -1,85 +0,0 @@ -# -# CDDL HEADER START -# -# The contents of this file are subject to the terms of the Common Development -# and Distribution License Version 1.0 (the "License"). -# -# You can obtain a copy of the license at -# http://www.opensource.org/licenses/CDDL-1.0. See the License for the -# specific language governing permissions and limitations under the License. -# -# When distributing Covered Code, include this CDDL HEADER in each file and -# include the License file in a prominent location with the name LICENSE.CDDL. -# If applicable, add the following below this CDDL HEADER, with the fields -# enclosed by brackets "[]" replaced with your own identifying information: -# -# Portions Copyright (c) [yyyy] [name of copyright owner]. All rights reserved. -# -# CDDL HEADER END -# - -# -# Copyright (c) 2013--2019, Regents of the University of Minnesota. -# All rights reserved. -# -# Contributors: -# Richard Berger -# Christoph Junghans -# Ryan S. Elliott -# - -# - Find KIM-API -# -# sets standard pkg_check_modules variables plus: -# -# KIM-API-CMAKE_C_COMPILER -# KIM-API-CMAKE_CXX_COMPILER -# KIM-API-CMAKE_Fortran_COMPILER -# - -function(_KIMAPI_GET_VERSION _OUT_ver _version_hdr) - if(NOT EXISTS ${_version_hdr}) - message(FATAL_ERROR "Header file ${_version_hdr} not found (check value of KIM-API_INCLUDE_DIR)") - endif() - foreach(_var KIM_VERSION_MAJOR KIM_VERSION_MINOR KIM_VERSION_PATCH) - file(STRINGS ${_version_hdr} _contents REGEX "#define ${_var}[ \t]+") - if(_contents) - string(REGEX REPLACE ".*#define ${_var}[ \t]+([0-9]+).*" "\\1" _${_var} "${_contents}") - if(${_${_var}} STREQUAL "") - message(FATAL_ERROR "Version parsing failed for ${_var} in ${_version_hdr}, got empty return!") - elseif(NOT ${_${_var}} MATCHES "^[0-9]+$") - message(FATAL_ERROR "Version parsing failed for ${_var} in ${_version_hdr}, excepted a number but got ${_${_var}}!") - endif() - else() - message(FATAL_ERROR "No ${_var} line found in include file ${_version_hdr}") - endif() - endforeach() - set(${_OUT_ver} ${_KIM_VERSION_MAJOR}.${_KIM_VERSION_MINOR}.${_KIM_VERSION_PATCH} PARENT_SCOPE) -endfunction() - -if(KIM-API_FIND_QUIETLY) - set(REQ_OR_QUI "QUIET") -else() - set(REQ_OR_QUI "REQUIRED") -endif() - -find_package(PkgConfig ${REQ_OR_QUI}) -include(FindPackageHandleStandardArgs) - -pkg_check_modules(KIM-API ${REQ_OR_QUI} libkim-api>=2.0) - -if(KIM-API_FOUND) - pkg_get_variable(KIM-API-CMAKE_C_COMPILER libkim-api CMAKE_C_COMPILER) - pkg_get_variable(KIM-API-CMAKE_CXX_COMPILER libkim-api CMAKE_CXX_COMPILER) - pkg_get_variable(KIM-API_CMAKE_Fortran_COMPILER libkim-api CMAKE_Fortran_COMPILER) -endif() - -if(KIM-API_INCLUDEDIR) - _KIMAPI_GET_VERSION(KIM-API_VERSION ${KIM-API_INCLUDEDIR}/KIM_Version.h) -else() - set(KIM-API_VERSION 0) -endif() - -# handle the QUIETLY and REQUIRED arguments and set KIM-API_FOUND to TRUE -# if all listed variables are TRUE -find_package_handle_standard_args(KIM-API REQUIRED_VARS KIM-API_LIBRARIES VERSION_VAR KIM-API_VERSION) diff --git a/cmake/Modules/Packages/KIM.cmake b/cmake/Modules/Packages/KIM.cmake index 5a4b12956e..ef0a486416 100644 --- a/cmake/Modules/Packages/KIM.cmake +++ b/cmake/Modules/Packages/KIM.cmake @@ -15,21 +15,14 @@ if(PKG_KIM) target_compile_definitions(lammps PRIVATE -DLMP_NO_SSL_CHECK) endif() endif() - find_package(KIM-API QUIET) - if(KIM-API_FOUND) - if (KIM-API_VERSION VERSION_LESS ${KIM-API_MIN_VERSION}) - if ("${DOWNLOAD_KIM}" STREQUAL "") - message(WARNING "Unsuitable KIM-API version \"${KIM-API_VERSION}\" found, but required is at least \"${KIM-API_MIN_VERSION}\". Default behavior set to download and build our own.") - endif() - set(DOWNLOAD_KIM_DEFAULT ON) - else() + find_package(PkgConfig QUIET) + find_package(MPI REQUIRED) + set(DOWNLOAD_KIM_DEFAULT ON) + if(PKG_CONFIG_FOUND) + pkg_check_modules(KIM-API QUIET libkim-api>=2.1.3) + if(KIM-API_FOUND) set(DOWNLOAD_KIM_DEFAULT OFF) endif() - else() - if ("${DOWNLOAD_KIM}" STREQUAL "") - message(WARNING "KIM-API package not found. Default behavior set to download and build our own") - endif() - set(DOWNLOAD_KIM_DEFAULT ON) endif() option(DOWNLOAD_KIM "Download KIM-API from OpenKIM instead of using an already installed one" ${DOWNLOAD_KIM_DEFAULT}) if(DOWNLOAD_KIM) @@ -48,6 +41,7 @@ if(PKG_KIM) -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} -DCMAKE_Fortran_COMPILER=${CMAKE_Fortran_COMPILER} + -DCMAKE_INSTALL_LIBDIR=lib -DCMAKE_INSTALL_PREFIX= -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DCMAKE_MAKE_PROGRAM=${CMAKE_MAKE_PROGRAM} @@ -55,12 +49,16 @@ if(PKG_KIM) BUILD_BYPRODUCTS /${_KIM_LIBDIR}/libkim-api${CMAKE_SHARED_LIBRARY_SUFFIX} ) ExternalProject_get_property(kim_build INSTALL_DIR) - set(KIM-API_INCLUDE_DIRS ${INSTALL_DIR}/include/kim-api) - set(KIM-API_LDFLAGS ${INSTALL_DIR}/${_KIM_LIBDIR}/libkim-api${CMAKE_SHARED_LIBRARY_SUFFIX}) - add_dependencies(lammps kim_build) + file(MAKE_DIRECTORY ${INSTALL_DIR}/include/kim-api) + add_library(LAMMPS::KIM UNKNOWN IMPORTED) + set_target_properties(LAMMPS::KIM PROPERTIES + IMPORTED_LOCATION "${INSTALL_DIR}/lib/libkim-api${CMAKE_SHARED_LIBRARY_SUFFIX}" + INTERFACE_INCLUDE_DIRECTORIES "${INSTALL_DIR}/include/kim-api") + target_link_libraries(lammps PRIVATE LAMMPS::KIM) + add_dependencies(LAMMPS::KIM kim_build) else() - find_package(KIM-API ${KIM-API_MIN_VERSION} REQUIRED) + find_package(PkgConfig REQUIRED) + pkg_check_modules(KIM-API REQUIRED IMPORTED_TARGET libkim-api>=2.1.3) + target_link_libraries(lammps PRIVATE PkgConfig::KIM-API) endif() - target_link_libraries(lammps PRIVATE "${KIM-API_LDFLAGS}") - target_include_directories(lammps PRIVATE ${KIM-API_INCLUDE_DIRS}) endif() -- GitLab From a4a4562b03c9682b98daf7279249b6fdb334362c Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Wed, 1 Apr 2020 11:56:34 -0600 Subject: [PATCH 146/717] KIM.cmake: remove _KIM_LIBDIR workaround --- cmake/Modules/Packages/KIM.cmake | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/cmake/Modules/Packages/KIM.cmake b/cmake/Modules/Packages/KIM.cmake index ef0a486416..d9dde26d99 100644 --- a/cmake/Modules/Packages/KIM.cmake +++ b/cmake/Modules/Packages/KIM.cmake @@ -27,9 +27,6 @@ if(PKG_KIM) option(DOWNLOAD_KIM "Download KIM-API from OpenKIM instead of using an already installed one" ${DOWNLOAD_KIM_DEFAULT}) if(DOWNLOAD_KIM) message(STATUS "KIM-API download requested - we will build our own") - # Workaround for cross compilation with MinGW where ${CMAKE_INSTALL_LIBDIR} - # is a full path, so we need to remove the prefix - string(REPLACE ${CMAKE_INSTALL_PREFIX} "" _KIM_LIBDIR ${CMAKE_INSTALL_LIBDIR}) include(ExternalProject) enable_language(C) enable_language(Fortran) @@ -46,7 +43,7 @@ if(PKG_KIM) -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DCMAKE_MAKE_PROGRAM=${CMAKE_MAKE_PROGRAM} -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE} - BUILD_BYPRODUCTS /${_KIM_LIBDIR}/libkim-api${CMAKE_SHARED_LIBRARY_SUFFIX} + BUILD_BYPRODUCTS /lib/libkim-api${CMAKE_SHARED_LIBRARY_SUFFIX} ) ExternalProject_get_property(kim_build INSTALL_DIR) file(MAKE_DIRECTORY ${INSTALL_DIR}/include/kim-api) -- GitLab From dbdce3946b4647992330eef62274c0a8ee90c500 Mon Sep 17 00:00:00 2001 From: Richard Berger Date: Wed, 1 Apr 2020 16:25:09 -0400 Subject: [PATCH 147/717] Update/Sync singularity container definition for Ubuntu 18.04 --- tools/singularity/.gitignore | 1 + tools/singularity/ubuntu18.04.def | 54 +++++++++++++++++++++++++++++-- 2 files changed, 52 insertions(+), 3 deletions(-) create mode 100644 tools/singularity/.gitignore diff --git a/tools/singularity/.gitignore b/tools/singularity/.gitignore new file mode 100644 index 0000000000..6e91d7ef0d --- /dev/null +++ b/tools/singularity/.gitignore @@ -0,0 +1 @@ +*.sif diff --git a/tools/singularity/ubuntu18.04.def b/tools/singularity/ubuntu18.04.def index c87daa8de5..070086a632 100644 --- a/tools/singularity/ubuntu18.04.def +++ b/tools/singularity/ubuntu18.04.def @@ -2,8 +2,56 @@ BootStrap: docker From: ubuntu:18.04 %post - apt-get update -y - env DEBIAN_FRONTEND=noninteractive apt-get install -y make cmake cmake-curses-gui ninja-build git ccache gcc g++ gfortran libfftw3-dev libjpeg-dev libpng-dev libblas-dev liblapack-dev mpi-default-bin mpi-default-dev libeigen3-dev libgsl-dev libopenblas-dev virtualenv python-dev enchant vim-nox voro++-dev + export DEBIAN_FRONTEND=noninteractive + apt-get update + apt-get upgrade --no-install-recommends -y + apt-get install --no-install-recommends -y \ + bc \ + build-essential \ + ccache \ + clang \ + cmake \ + cmake-curses-gui \ + curl \ + doxygen \ + enchant \ + g++ \ + gcc \ + gfortran \ + git \ + hdf5-tools \ + libblas-dev \ + libeigen3-dev \ + libenchant-dev \ + libfftw3-dev \ + libgsl-dev \ + libhdf5-serial-dev \ + libjpeg-dev \ + liblapack-dev \ + libopenblas-dev \ + libpng-dev \ + libproj-dev \ + libvtk6-dev \ + make \ + mpi-default-bin \ + mpi-default-dev \ + ninja-build \ + python-dev \ + python-pip \ + python-pygments \ + python-virtualenv \ + python3-dev \ + python3-pip \ + python3-pkg-resources \ + python3-setuptools \ + python3-virtualenv \ + rsync \ + ssh \ + vim-nox \ + virtualenv \ + voro++-dev \ + wget \ + xxd %labels - Author akohlmey + Author akohlmey, rbberger -- GitLab From ccdf010ef0f0a8994b837bec90d4b88bee86cab2 Mon Sep 17 00:00:00 2001 From: Richard Berger Date: Wed, 1 Apr 2020 16:36:42 -0400 Subject: [PATCH 148/717] Add Intel OpenCL Singularity container --- .../singularity/ubuntu18.04_intel_opencl.def | 65 +++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 tools/singularity/ubuntu18.04_intel_opencl.def diff --git a/tools/singularity/ubuntu18.04_intel_opencl.def b/tools/singularity/ubuntu18.04_intel_opencl.def new file mode 100644 index 0000000000..71ad1274fe --- /dev/null +++ b/tools/singularity/ubuntu18.04_intel_opencl.def @@ -0,0 +1,65 @@ +BootStrap: docker +From: ubuntu:18.04 + +%post + export DEBIAN_FRONTEND=noninteractive + apt-get update + apt-get upgrade --no-install-recommends -y + apt-get install --no-install-recommends -y software-properties-common + apt-get install --no-install-recommends -y \ + bc \ + build-essential \ + ccache \ + clang \ + clinfo \ + cmake \ + cmake-curses-gui \ + curl \ + doxygen \ + enchant \ + g++ \ + gcc \ + gfortran \ + git \ + hdf5-tools \ + libblas-dev \ + libeigen3-dev \ + libenchant-dev \ + libfftw3-dev \ + libgsl-dev \ + libhdf5-serial-dev \ + libjpeg-dev \ + liblapack-dev \ + libopenblas-dev \ + libpng-dev \ + libproj-dev \ + libvtk6-dev \ + make \ + mpi-default-bin \ + mpi-default-dev \ + ninja-build \ + ocl-icd-libopencl1 \ + ocl-icd-opencl-dev \ + python-dev \ + python-pip \ + python-pygments \ + python-virtualenv \ + python3-dev \ + python3-pip \ + python3-pkg-resources \ + python3-setuptools \ + python3-virtualenv \ + rsync \ + ssh \ + vim-nox \ + virtualenv \ + voro++-dev \ + wget \ + xxd + + add-apt-repository ppa:intel-opencl/intel-opencl + apt-get update + apt-get install -y intel-opencl-icd + +%labels + Author rbberger -- GitLab From 03988a9048998da9972705fe43558bc1755449f1 Mon Sep 17 00:00:00 2001 From: Richard Berger Date: Wed, 1 Apr 2020 17:29:07 -0400 Subject: [PATCH 149/717] Add ROCm Singularity container --- tools/singularity/ubuntu18.04_amd_rocm.def | 72 ++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 tools/singularity/ubuntu18.04_amd_rocm.def diff --git a/tools/singularity/ubuntu18.04_amd_rocm.def b/tools/singularity/ubuntu18.04_amd_rocm.def new file mode 100644 index 0000000000..239106b44b --- /dev/null +++ b/tools/singularity/ubuntu18.04_amd_rocm.def @@ -0,0 +1,72 @@ +BootStrap: docker +From: rocm/dev-ubuntu-18.04 + +%environment + export PATH=$PATH:/opt/rocm/bin:/opt/rocm/profiler/bin:/opt/rocm/opencl/bin/x86_64 + +%post + export DEBIAN_FRONTEND=noninteractive + apt-get update + apt-get upgrade --no-install-recommends -y + apt-get install --no-install-recommends -y software-properties-common + apt-get install --no-install-recommends -y \ + bc \ + build-essential \ + ccache \ + clang \ + cmake \ + cmake-curses-gui \ + curl \ + doxygen \ + enchant \ + g++ \ + gcc \ + gfortran \ + git \ + hdf5-tools \ + libblas-dev \ + libeigen3-dev \ + libenchant-dev \ + libfftw3-dev \ + libgsl-dev \ + libhdf5-serial-dev \ + libjpeg-dev \ + liblapack-dev \ + libopenblas-dev \ + libnuma-dev \ + libpng-dev \ + libproj-dev \ + libvtk6-dev \ + make \ + mpi-default-bin \ + mpi-default-dev \ + ninja-build \ + python-dev \ + python-pip \ + python-pygments \ + python-virtualenv \ + python3-dev \ + python3-pip \ + python3-pkg-resources \ + python3-setuptools \ + python3-virtualenv \ + rocm-libs \ + rsync \ + ssh \ + vim-nox \ + virtualenv \ + voro++-dev \ + wget \ + xxd + + export PATH=$PATH:/opt/rocm/bin:/opt/rocm/profiler/bin:/opt/rocm/opencl/bin/x86_64 + git clone https://github.com/ROCmSoftwarePlatform/hipCUB.git + mkdir hipCUB/build + cd hipCUB/build + CXX=hcc cmake -D BUILD_TEST=off .. + make -j4 + make package + make install + +%labels + Author rbberger -- GitLab From 0cf48c37e16caebf2b7afa201e04287e2e5cd525 Mon Sep 17 00:00:00 2001 From: Richard Berger Date: Wed, 1 Apr 2020 17:41:40 -0400 Subject: [PATCH 150/717] Add NVIDIA Singularity container --- tools/singularity/ubuntu18.04_nvidia.def | 64 ++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 tools/singularity/ubuntu18.04_nvidia.def diff --git a/tools/singularity/ubuntu18.04_nvidia.def b/tools/singularity/ubuntu18.04_nvidia.def new file mode 100644 index 0000000000..c1c9fcb5f9 --- /dev/null +++ b/tools/singularity/ubuntu18.04_nvidia.def @@ -0,0 +1,64 @@ +BootStrap: docker +From: nvidia/cuda:10.2-devel-ubuntu18.04 + +%post + export DEBIAN_FRONTEND=noninteractive + apt-get update + apt-get upgrade --no-install-recommends -y + apt-get install --no-install-recommends -y software-properties-common + apt-get install --no-install-recommends -y \ + bc \ + build-essential \ + ccache \ + clang \ + clinfo \ + cmake \ + cmake-curses-gui \ + curl \ + doxygen \ + enchant \ + g++ \ + gcc \ + gfortran \ + git \ + hdf5-tools \ + libblas-dev \ + libeigen3-dev \ + libenchant-dev \ + libfftw3-dev \ + libgsl-dev \ + libhdf5-serial-dev \ + libjpeg-dev \ + liblapack-dev \ + libopenblas-dev \ + libpng-dev \ + libproj-dev \ + libvtk6-dev \ + make \ + mpi-default-bin \ + mpi-default-dev \ + ninja-build \ + ocl-icd-libopencl1 \ + ocl-icd-opencl-dev \ + python-dev \ + python-pip \ + python-pygments \ + python-virtualenv \ + python3-dev \ + python3-pip \ + python3-pkg-resources \ + python3-setuptools \ + python3-virtualenv \ + rsync \ + ssh \ + vim-nox \ + virtualenv \ + voro++-dev \ + wget \ + xxd + + mkdir -p /etc/OpenCL/vendors + echo "libnvidia-opencl.so.1" > /etc/OpenCL/vendors/nvidia.icd + +%labels + Author rbberger -- GitLab From 927b1b05e5a995fc6156452be291a8ed38ed079d Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Wed, 1 Apr 2020 20:08:00 -0400 Subject: [PATCH 151/717] ignore singularity container files in the entire repo --- .gitignore | 1 + tools/singularity/.gitignore | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) delete mode 100644 tools/singularity/.gitignore diff --git a/.gitignore b/.gitignore index 52b8212b13..5c90b0f39c 100644 --- a/.gitignore +++ b/.gitignore @@ -9,6 +9,7 @@ *.d *.x *.exe +*.sif *.dll *.pyc __pycache__ diff --git a/tools/singularity/.gitignore b/tools/singularity/.gitignore deleted file mode 100644 index 6e91d7ef0d..0000000000 --- a/tools/singularity/.gitignore +++ /dev/null @@ -1 +0,0 @@ -*.sif -- GitLab From 2de7e90e58baee962c87f0325e2c15c999bd7faa Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Wed, 1 Apr 2020 20:21:30 -0400 Subject: [PATCH 152/717] add Fedora 30 definition and update README file --- tools/singularity/README.md | 36 ++++++++++++++++------------ tools/singularity/fedora30_mingw.def | 10 ++++++++ 2 files changed, 31 insertions(+), 15 deletions(-) create mode 100644 tools/singularity/fedora30_mingw.def diff --git a/tools/singularity/README.md b/tools/singularity/README.md index d316e629f3..ac7c64f1fc 100644 --- a/tools/singularity/README.md +++ b/tools/singularity/README.md @@ -1,18 +1,20 @@ # Singularity container definitions for compiling/testing LAMMPS The *.def files in this folder can be used to build container images -for [Singularity](https://sylabs.io) suitable for compiling and testing -LAMMPS on a variety of OS variants with support for most standard packages -and building/spellchecking the manual. This allows to test and debug -LAMMPS code on different OS variants than what is locally installed on -your development workstation, e.g. when bugs are reported that can only -be reproduced on a specific OS or with specific (mostly older) versions -of tools, compilers, or libraries. +for [Singularity](https://sylabs.io), suitable for compiling and testing +LAMMPS on a variety of OS variants with support for most standard +packages and - for some of them - also building/spellchecking the manual +in all supported formats. This allows to test and debug LAMMPS code on +different OS variants than what is locally installed on your development +workstation, e.g. when bugs are reported that can only be reproduced on +a specific OS or with specific (mostly older) versions of tools, +compilers, or libraries. Ready-to-use container images built from these definition files are occasionally uploaded to the container library at sylabs.io. They can be found here: https://cloud.sylabs.io/library/lammps/default/lammps_development# -and will be signed with the key fingerprint: EEA103764C6C633EDC8AC428D9B44E93BF0C375A +and will be signed with a GPG key that has the fingerprint: +EEA103764C6C633EDC8AC428D9B44E93BF0C375A Here is a workflow for testing a compilation of LAMMPS with a locally built CentOS 7.x singularity container. @@ -24,7 +26,7 @@ mkdir build-centos7 cd build-centos7 sudo singularity build centos7.sif ../tools/singularity/centos7.def singularity shell centos7.sif -cmake -C ../cmake/presets/most.cmake -D CMAKE_CXX_FLAGS="-O3 -g -fopenmp -std=c++11" ../cmake +cmake -C ../cmake/presets/most.cmake ../cmake make ``` @@ -42,9 +44,13 @@ cmake -C ../cmake/presets/most.cmake ../cmake make ``` -| Currently available: | | -| --- | --- | -| centos7.def | CentOS 7.x with EPEL enabled | -| centos8.def | CentOS 8.x with EPEL enabled | -| ubuntu16.04.def | Ubuntu 16.04LTS with default MPI == OpenMPI | -| ubuntu18.04.def | Ubuntu 18.04LTS with default MPI == OpenMPI | +| Currently available: | Description | +| ------------------------------ | ---------------------------------------------- | +| centos7.def | CentOS 7.x with EPEL enabled | +| centos8.def | CentOS 8.x with EPEL enabled | +| fedora30_mingw.def | Fedora 30 with MinGW cross-compiler toolchain | +| ubuntu16.04.def | Ubuntu 16.04LTS with default MPI == OpenMPI | +| ubuntu18.04.def | Ubuntu 18.04LTS with default MPI == OpenMPI | +| ubuntu18.04_amd_nvidia.def | Ubuntu 18.04LTS with Nvidia CUDA 10.2 toolkit | +| ubuntu18.04_amd_rocm.def | Ubuntu 18.04LTS with AMD ROCm toolkit | +| ubuntu18.04_intel_opencl.def | Ubuntu 18.04LTS with Intel OpenCL runtime | diff --git a/tools/singularity/fedora30_mingw.def b/tools/singularity/fedora30_mingw.def new file mode 100644 index 0000000000..7d8d3daed8 --- /dev/null +++ b/tools/singularity/fedora30_mingw.def @@ -0,0 +1,10 @@ +BootStrap: docker +From: fedora:30 + +%post + dnf -y update + dnf -y install vim-enhanced ccache gcc-c++ gdb make cmake patch which file git enchant python3-virtualenv valgrind eigen3-devel mingw64-binutils mingw32-crt mingw32-gcc mingw32-libgomp mingw64-filesystem mingw64-libjpeg-turbo mingw32-libjpeg-turbo mingw32-nsis mingw32-libpng mingw64-sqlite-static mingw64-libpng-static mingw32-pkg-config mingw64-crt mingw32-cpp mingw64-expat-static mingw64-libpng mingw32-expat mingw64-winpthreads-static mingw64-zlib-static mingw32-gcc-gfortran mingw64-gcc mingw32-binutils mingw32-expat-static mingw64-gcc-gfortran mingw64-headers mingw-filesystem-base mingw32-libjpeg-turbo-static mingw64-gcc-c++ mingw64-pkg-config mingw64-libjpeg-turbo-static mingw32-winpthreads mingw32-filesystem mingw32-zlib-static mingw64-expat mingw32-gcc-c++ mingw64-zlib mingw32-sqlite-static mingw64-cpp mingw32-libpng-static mingw-binutils-generic mingw32-eigen3 mingw64-eigen3 mingw32-winpthreads-static mingw32-zlib mingw32-headers mingw64-libgomp mingw64-winpthreads texlive-latex-fonts texlive-pslatex texlive-collection-latexrecommended texlive-latex texlive-latexconfig doxygen-latex texlive-collection-latex texlive-latexbug texlive-latex-bin texlive-lualatex-math texlive-fncychap texlive-tabulary texlive-framed texlive-wrapfig texlive-upquote texlive-capt-of texlive-needspace dos2unix findutils rsync + + +%labels + Author akohlmey -- GitLab From 96202ccf56614427c872e786ace67d10eb1fadbc Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Wed, 1 Apr 2020 20:27:43 -0400 Subject: [PATCH 153/717] remove trailing whitespace --- src/KOKKOS/npair_kokkos.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/KOKKOS/npair_kokkos.cpp b/src/KOKKOS/npair_kokkos.cpp index 57bc865c9d..0de8d5173d 100644 --- a/src/KOKKOS/npair_kokkos.cpp +++ b/src/KOKKOS/npair_kokkos.cpp @@ -279,7 +279,7 @@ void NPairKokkos::build(NeighList *list_) if (team_size <= team_size_max) { Kokkos::TeamPolicy config((mbins+factor-1)/factor,team_size); Kokkos::parallel_for(config, f); - } else Kokkos::parallel_for(nall, f); // fall back to flat method + } else Kokkos::parallel_for(nall, f); // fall back to flat method } else Kokkos::parallel_for(nall, f); #else -- GitLab From 9397e11c6ff7e8bb852648755ef7fb3ae60a4079 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Wed, 1 Apr 2020 20:57:43 -0400 Subject: [PATCH 154/717] fix issue in README file --- tools/singularity/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/singularity/README.md b/tools/singularity/README.md index ac7c64f1fc..15c4ffe4b4 100644 --- a/tools/singularity/README.md +++ b/tools/singularity/README.md @@ -51,6 +51,6 @@ make | fedora30_mingw.def | Fedora 30 with MinGW cross-compiler toolchain | | ubuntu16.04.def | Ubuntu 16.04LTS with default MPI == OpenMPI | | ubuntu18.04.def | Ubuntu 18.04LTS with default MPI == OpenMPI | -| ubuntu18.04_amd_nvidia.def | Ubuntu 18.04LTS with Nvidia CUDA 10.2 toolkit | | ubuntu18.04_amd_rocm.def | Ubuntu 18.04LTS with AMD ROCm toolkit | +| ubuntu18.04_nvidia.def | Ubuntu 18.04LTS with Nvidia CUDA 10.2 toolkit | | ubuntu18.04_intel_opencl.def | Ubuntu 18.04LTS with Intel OpenCL runtime | -- GitLab From 9e563da3eb79d4c736c03b2d5dd1168eb4c00db3 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Thu, 2 Apr 2020 11:38:18 -0600 Subject: [PATCH 155/717] USER-PLUMED.cmake: use imported targets --- cmake/Modules/Packages/USER-PLUMED.cmake | 32 +++++++++++++----------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/cmake/Modules/Packages/USER-PLUMED.cmake b/cmake/Modules/Packages/USER-PLUMED.cmake index dc1d75e925..0a9fea7b18 100644 --- a/cmake/Modules/Packages/USER-PLUMED.cmake +++ b/cmake/Modules/Packages/USER-PLUMED.cmake @@ -5,13 +5,12 @@ if(PKG_USER-PLUMED) validate_option(PLUMED_MODE PLUMED_MODE_VALUES) string(TOUPPER ${PLUMED_MODE} PLUMED_MODE) - set(PLUMED_LINK_LIBS "") + set(PLUMED_LINK_LIBS) if(PLUMED_MODE STREQUAL "STATIC") find_package(LAPACK REQUIRED) find_package(BLAS REQUIRED) find_package(GSL REQUIRED) - list(APPEND LAPACK_LIBRARIES ${BLAS_LIBRARIES}) - list(APPEND PLUMED_LINK_LIBS ${LAPACK_LIBRARIES} GSL::gsl) + list(APPEND PLUMED_LINK_LIBS ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} GSL::gsl) find_package(ZLIB QUIET) if(ZLIB_FOUND) list(APPEND PLUMED_LINK_LIBS ZLIB::ZLIB) @@ -70,31 +69,34 @@ if(PKG_USER-PLUMED) BUILD_BYPRODUCTS ${PLUMED_BUILD_BYPRODUCTS} ) ExternalProject_get_property(plumed_build INSTALL_DIR) - set(PLUMED_INSTALL_DIR ${INSTALL_DIR}) - add_dependencies(lammps plumed_build) + add_library(LAMMPS::PLUMED UNKNOWN IMPORTED) + add_dependencies(LAMMPS::PLUMED plumed_build) if(PLUMED_MODE STREQUAL "STATIC") - target_compile_definitions(lammps PRIVATE -D__PLUMED_WRAPPER_CXX=1) - target_link_libraries(lammps PRIVATE ${PLUMED_INSTALL_DIR}/lib/libplumed.a ${PLUMED_LINK_LIBS} ${CMAKE_DL_LIBS}) + set_target_properties(LAMMPS::PLUMED PROPERTIES INTERFACE_COMPILE_DEFINITIONS "__PLUMED_WRAPPER_CXX=1") + set_target_properties(LAMMPS::PLUMED PROPERTIES IMPORTED_LOCATION ${INSTALL_DIR}/lib/libplumed.a INTERFACE_LINK_LIBRARIES "${PLUMED_LINK_LIBS};${CMAKE_DL_LIBS}") elseif(PLUMED_MODE STREQUAL "SHARED") - target_link_libraries(lammps PRIVATE ${PLUMED_INSTALL_DIR}/lib/libplumed${CMAKE_SHARED_LIBRARY_SUFFIX} ${PLUMED_INSTALL_DIR}/lib/libplumedKernel${CMAKE_SHARED_LIBRARY_SUFFIX} ${CMAKE_DL_LIBS}) + set_target_properties(LAMMPS::PLUMED PROPERTIES IMPORTED_LOCATION ${INSTALL_DIR}/lib/libplumed${CMAKE_SHARED_LIBRARY_SUFFIX} INTERFACE_LINK_LIBRARIES "${INSTALL_DIR}/lib/libplumedKernel${CMAKE_SHARED_LIBRARY_SUFFIX};${CMAKE_DL_LIBS}") elseif(PLUMED_MODE STREQUAL "RUNTIME") - target_compile_definitions(lammps PRIVATE -D__PLUMED_HAS_DLOPEN=1 -D__PLUMED_DEFAULT_KERNEL=${PLUMED_INSTALL_DIR}/lib/libplumedKernel${CMAKE_SHARED_LIBRARY_SUFFIX}) - target_link_libraries(lammps PRIVATE ${PLUMED_INSTALL_DIR}/lib/libplumedWrapper.a -rdynamic ${CMAKE_DL_LIBS}) + set_target_properties(LAMMPS::PLUMED PROPERTIES INTERFACE_COMPILE_DEFINITIONS "__PLUMED_HAS_DLOPEN=1;__PLUMED_DEFAULT_KERNEL=${INSTALL_DIR}/lib/libplumedKernel${CMAKE_SHARED_LIBRARY_SUFFIX}") + set_target_properties(LAMMPS::PLUMED PROPERTIES IMPORTED_LOCATION ${INSTALL_DIR}/lib/libplumedWrapper.a INTERFACE_LINK_LIBRARIES "${CMAKE_DL_LIBS}") endif() - set(PLUMED_INCLUDE_DIRS "${PLUMED_INSTALL_DIR}/include") + set_target_properties(LAMMPS::PLUMED PROPERTIES INTERFACE_INCLUDE_DIRECTORIES ${INSTALL_DIR}/include) + file(MAKE_DIRECTORY ${INSTALL_DIR}/include) else() find_package(PkgConfig REQUIRED) pkg_check_modules(PLUMED REQUIRED plumed) + add_library(LAMMPS::PLUMED INTERFACE IMPORTED) if(PLUMED_MODE STREQUAL "STATIC") - target_compile_definitions(lammps PRIVATE -D__PLUMED_WRAPPER_CXX=1) + set_target_properties(LAMMPS::PLUMED PROPERTIES INTERFACE_COMPILE_DEFINITIONS "__PLUMED_WRAPPER_CXX=1") include(${PLUMED_LIBDIR}/plumed/src/lib/Plumed.cmake.static) elseif(PLUMED_MODE STREQUAL "SHARED") include(${PLUMED_LIBDIR}/plumed/src/lib/Plumed.cmake.shared) elseif(PLUMED_MODE STREQUAL "RUNTIME") - target_compile_definitions(lammps PRIVATE -D__PLUMED_HAS_DLOPEN=1 -D__PLUMED_DEFAULT_KERNEL=${PLUMED_LIBDIR}/libplumedKernel${CMAKE_SHARED_LIBRARY_SUFFIX}) + set_target_properties(LAMMPS::PLUMED PROPERTIES INTERFACE_COMPILE_DEFINITIONS "__PLUMED_HAS_DLOPEN=1;__PLUMED_DEFAULT_KERNEL=${PLUMED_LIBDIR}/libplumedKernel${CMAKE_SHARED_LIBRARY_SUFFIX}") include(${PLUMED_LIBDIR}/plumed/src/lib/Plumed.cmake.runtime) endif() - target_link_libraries(lammps PRIVATE ${PLUMED_LOAD}) + set_target_properties(LAMMPS::PLUMED PROPERTIES INTERFACE_LINK_LIBRARIES "${PLUMED_LOAD}") + set_target_properties(LAMMPS::PLUMED PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${PLUMED_INCLUDE_DIRS}") endif() - target_include_directories(lammps PRIVATE ${PLUMED_INCLUDE_DIRS}) + target_link_libraries(lammps PRIVATE LAMMPS::PLUMED) endif() -- GitLab From 1ec91bc214977c7d00a2eb1f418106dc034436a9 Mon Sep 17 00:00:00 2001 From: Richard Berger Date: Thu, 2 Apr 2020 14:22:04 -0400 Subject: [PATCH 156/717] Add CMake function GenerateBinaryHeader to replace xxd steps --- cmake/Modules/LAMMPSUtils.cmake | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/cmake/Modules/LAMMPSUtils.cmake b/cmake/Modules/LAMMPSUtils.cmake index 3ea2b3cb7e..02de630c82 100644 --- a/cmake/Modules/LAMMPSUtils.cmake +++ b/cmake/Modules/LAMMPSUtils.cmake @@ -69,3 +69,19 @@ macro(pkg_depends PKG1 PKG2) message(FATAL_ERROR "${PKG1} package needs LAMMPS to be build with ${PKG2}") endif() endmacro() + +# CMake-only replacement for bin2c and xxd +function(GenerateBinaryHeader varname outfile files) + message("Creating ${outfile}...") + file(WRITE ${outfile} "// CMake generated file\n") + math(EXPR ARG_END "${ARGC}-1") + + foreach(IDX RANGE 2 ${ARG_END}) + list(GET ARGV ${IDX} filename) + file(READ ${filename} content HEX) + string(REGEX REPLACE "([0-9a-f][0-9a-f])" "0x\\1," content "${content}") + string(REGEX REPLACE ",$" "" content "${content}") + file(APPEND ${outfile} "const unsigned char ${varname}[] = { ${content} };\n") + file(APPEND ${outfile} "const unsigned int ${varname}_size = sizeof(${varname});\n") + endforeach() +endfunction(GenerateBinaryHeader) -- GitLab From a9dad3d46c70e2f2dcd22ee3bd4fdd1c1aa9f77f Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 2 Apr 2020 14:31:47 -0400 Subject: [PATCH 157/717] test for PDFLaTeX and update README --- doc/Makefile | 8 ++++++++ doc/README | 6 ++++++ tools/singularity/README.md | 2 +- 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/doc/Makefile b/doc/Makefile index ff56226e83..4f20ab3453 100644 --- a/doc/Makefile +++ b/doc/Makefile @@ -12,6 +12,7 @@ PYTHON = $(shell which python3) VIRTUALENV = virtualenv HAS_PYTHON3 = NO HAS_VIRTUALENV = NO +HAS_PDFLATEX = NO ifeq ($(shell which python3 >/dev/null 2>&1; echo $$?), 0) HAS_PYTHON3 = YES @@ -27,6 +28,11 @@ VIRTUALENV = virtualenv HAS_VIRTUALENV = YES endif +ifeq ($(shell which pdflatex >/dev/null 2>&1; echo $$?), 0) +HAS_PDFLATEX = YES +endif + + SPHINXEXTRA = -j $(shell $(PYTHON) -c 'import multiprocessing;print(multiprocessing.cpu_count())') .PHONY: help clean-all clean clean-spelling epub mobi rst html pdf spelling anchor_check style_check @@ -113,6 +119,7 @@ mobi: epub @echo "Conversion finished. The MOBI manual file is created." pdf: $(ANCHORCHECK) + @if [ "$(HAS_PDFLATEX)" == "NO" ] ; then echo "PDFLaTeX was not found! Please check README.md for further instructions" 1>&2; exit 1; fi @(\ cd src/Developer; \ pdflatex developer; \ @@ -187,6 +194,7 @@ $(VENV): @( \ $(VIRTUALENV) -p $(PYTHON) $(VENV); \ . $(VENV)/bin/activate; \ + pip install --upgrade pip; \ pip install Sphinx; \ deactivate;\ ) diff --git a/doc/README b/doc/README index 1416584eed..1c6e982786 100644 --- a/doc/README +++ b/doc/README @@ -99,6 +99,12 @@ to be installed (e.g. from texlive): - hyperref - hypcap - times +- tabulary +- framed +- wrapfig +- upquote +- capt-of +- needspace ---------------- Installing prerequisites for epub build diff --git a/tools/singularity/README.md b/tools/singularity/README.md index 15c4ffe4b4..14f73f8060 100644 --- a/tools/singularity/README.md +++ b/tools/singularity/README.md @@ -46,7 +46,7 @@ make | Currently available: | Description | | ------------------------------ | ---------------------------------------------- | -| centos7.def | CentOS 7.x with EPEL enabled | +| centos7.def | CentOS 7.x with EPEL enabled, no LaTeX | | centos8.def | CentOS 8.x with EPEL enabled | | fedora30_mingw.def | Fedora 30 with MinGW cross-compiler toolchain | | ubuntu16.04.def | Ubuntu 16.04LTS with default MPI == OpenMPI | -- GitLab From 237c8f0bec9ed212d4b5dc573a101a90d6fa04dd Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 2 Apr 2020 17:13:19 -0400 Subject: [PATCH 158/717] improve portability to older python versions --- doc/utils/check-packages.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/utils/check-packages.py b/doc/utils/check-packages.py index 99968f9a22..52d527fd95 100755 --- a/doc/utils/check-packages.py +++ b/doc/utils/check-packages.py @@ -45,7 +45,7 @@ usrpkg = [] # folder, and is not called 'MAKE' is a package for d in pkgdirs: - pkg = dirs.match(d)[1] + pkg = dirs.match(d).group(1) if not os.path.isdir(os.path.join(src,pkg)): continue if pkg in ['DEPEND','MAKE','STUBS']: continue if user.match(pkg): -- GitLab From 3f630f799e90efd3baeec7667302eded38dff5d5 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 2 Apr 2020 17:29:42 -0400 Subject: [PATCH 159/717] fix up non-ascii characters so doc tools can work with LC_ALL=C --- src/USER-DIFFRACTION/compute_xrd_consts.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/USER-DIFFRACTION/compute_xrd_consts.h b/src/USER-DIFFRACTION/compute_xrd_consts.h index 582cecae01..aeaddf7daa 100644 --- a/src/USER-DIFFRACTION/compute_xrd_consts.h +++ b/src/USER-DIFFRACTION/compute_xrd_consts.h @@ -18,12 +18,12 @@ The paramaters for analytical approximation of the atomic scattering factors used for x-ray diffraction are gathered from the resources: -Brown P J, Fox A G, Maslen E N, O’Keefe M A and Willis B T M 2004 Intensity +Brown P J, Fox A G, Maslen E N, O'Keefe M A and Willis B T M 2004 Intensity of diffraction intensities International Tables for Crystallography Volume C: Mathematical, Physical, and Chemical Tables ed E Prince (Norwell, MA: Kluwer Academic Publishers) pp 55495 -Fox A G, O’Keefe M A and Tabbernor M A 1989 Relativistic Hartree Fock +Fox A G, O'Keefe M A and Tabbernor M A 1989 Relativistic Hartree Fock x-ray and electron atomic scattering factors at high angles Acta Crystallogr. A 45 78693 */ -- GitLab From ce80cae5c45b8902156f352a1cc290e535e64e48 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 2 Apr 2020 17:42:11 -0400 Subject: [PATCH 160/717] update list of false positives for ubuntu 16.04 --- doc/utils/sphinx-config/false_positives.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/utils/sphinx-config/false_positives.txt b/doc/utils/sphinx-config/false_positives.txt index 91b5c09b93..604adde2a4 100644 --- a/doc/utils/sphinx-config/false_positives.txt +++ b/doc/utils/sphinx-config/false_positives.txt @@ -1593,6 +1593,7 @@ Lookups LoopVar Lorant lorenz +Los lossless lossy Lozovik -- GitLab From 2ef4c4166d5bb14052e223999a536328518ac331 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 2 Apr 2020 17:48:17 -0400 Subject: [PATCH 161/717] update container definitions for building documentation --- tools/singularity/README.md | 4 +-- tools/singularity/centos7.def | 14 ++++++++--- tools/singularity/centos8.def | 15 +++++++++-- tools/singularity/fedora30_mingw.def | 37 +++++++++++++++++++++++++--- tools/singularity/ubuntu16.04.def | 22 ++++++++++++++--- 5 files changed, 79 insertions(+), 13 deletions(-) diff --git a/tools/singularity/README.md b/tools/singularity/README.md index 14f73f8060..9bd0c2fdcc 100644 --- a/tools/singularity/README.md +++ b/tools/singularity/README.md @@ -49,8 +49,8 @@ make | centos7.def | CentOS 7.x with EPEL enabled, no LaTeX | | centos8.def | CentOS 8.x with EPEL enabled | | fedora30_mingw.def | Fedora 30 with MinGW cross-compiler toolchain | -| ubuntu16.04.def | Ubuntu 16.04LTS with default MPI == OpenMPI | -| ubuntu18.04.def | Ubuntu 18.04LTS with default MPI == OpenMPI | +| ubuntu16.04.def | Ubuntu 16.04LTS with MPI == OpenMPI, no LaTeX | +| ubuntu18.04.def | Ubuntu 18.04LTS with MPI == OpenMPI | | ubuntu18.04_amd_rocm.def | Ubuntu 18.04LTS with AMD ROCm toolkit | | ubuntu18.04_nvidia.def | Ubuntu 18.04LTS with Nvidia CUDA 10.2 toolkit | | ubuntu18.04_intel_opencl.def | Ubuntu 18.04LTS with Intel OpenCL runtime | diff --git a/tools/singularity/centos7.def b/tools/singularity/centos7.def index 8160105524..e1ae6e6373 100644 --- a/tools/singularity/centos7.def +++ b/tools/singularity/centos7.def @@ -2,9 +2,17 @@ BootStrap: library From: centos:7 %post - yum -y install epel-release + yum -y install epel-release yum -y update - yum -y install vim-enhanced ccache gcc-c++ gcc-gfortran clang gdb valgrind-openmpi make cmake cmake3 ninja-build patch which file git libpng-devel libjpeg-devel openmpi-devel mpich-devel python-devel python-virtualenv fftw-devel voro++-devel eigen3-devel gsl-devel openblas-devel enchant + yum -y install vim-enhanced \ + ccache gcc-c++ gcc-gfortran clang gdb valgrind-openmpi \ + make cmake cmake3 ninja-build patch which file git \ + libpng-devel libjpeg-devel openmpi-devel mpich-devel python-devel \ + python-virtualenv fftw-devel voro++-devel eigen3-devel gsl-devel openblas-devel enchant + +%environment + LC_ALL=C + export LC_ALL %labels - Author akohlmey + Author akohlmey diff --git a/tools/singularity/centos8.def b/tools/singularity/centos8.def index e0a14c4156..77a8964abb 100644 --- a/tools/singularity/centos8.def +++ b/tools/singularity/centos8.def @@ -5,9 +5,20 @@ From: centos:8 dnf -y install epel-release dnf-utils dnf config-manager --set-enabled PowerTools dnf -y update - dnf -y install vim-enhanced ccache gcc-c++ gcc-gfortran clang gdb make cmake patch which file git libpng-devel libjpeg-devel openmpi-devel mpich-devel fftw-devel voro++-devel gsl-devel enchant platform-python-devel python3-virtualenv valgrind openblas ninja-build eigen3-devel libubsan libasan libtsan + dnf -y install vim-enhanced git file make cmake patch which file ninja-build \ + ccache gcc-c++ gcc-gfortran clang gdb valgrind libubsan libasan libtsan \ + eigen3-devel openblas-devel libpng-devel libjpeg-devel platform-python-devel \ + openmpi-devel mpich-devel fftw-devel voro++-devel gsl-devel \ + enchant python3-virtualenv doxygen \ + texlive-latex-fonts texlive-pslatex texlive-collection-latexrecommended \ + texlive-latex texlive-latexconfig doxygen-latex texlive-collection-latex \ + texlive-latex-bin texlive-lualatex-math texlive-fncychap texlive-tabulary \ + texlive-framed texlive-wrapfig texlive-upquote texlive-capt-of \ + texlive-needspace texlive-titlesec texlive-anysize texlive-dvipng -#No match for argument: valgrind-openmpi +%environment + LC_ALL=C + export LC_ALL %labels Author akohlmey diff --git a/tools/singularity/fedora30_mingw.def b/tools/singularity/fedora30_mingw.def index 7d8d3daed8..2df658676c 100644 --- a/tools/singularity/fedora30_mingw.def +++ b/tools/singularity/fedora30_mingw.def @@ -2,9 +2,40 @@ BootStrap: docker From: fedora:30 %post - dnf -y update - dnf -y install vim-enhanced ccache gcc-c++ gdb make cmake patch which file git enchant python3-virtualenv valgrind eigen3-devel mingw64-binutils mingw32-crt mingw32-gcc mingw32-libgomp mingw64-filesystem mingw64-libjpeg-turbo mingw32-libjpeg-turbo mingw32-nsis mingw32-libpng mingw64-sqlite-static mingw64-libpng-static mingw32-pkg-config mingw64-crt mingw32-cpp mingw64-expat-static mingw64-libpng mingw32-expat mingw64-winpthreads-static mingw64-zlib-static mingw32-gcc-gfortran mingw64-gcc mingw32-binutils mingw32-expat-static mingw64-gcc-gfortran mingw64-headers mingw-filesystem-base mingw32-libjpeg-turbo-static mingw64-gcc-c++ mingw64-pkg-config mingw64-libjpeg-turbo-static mingw32-winpthreads mingw32-filesystem mingw32-zlib-static mingw64-expat mingw32-gcc-c++ mingw64-zlib mingw32-sqlite-static mingw64-cpp mingw32-libpng-static mingw-binutils-generic mingw32-eigen3 mingw64-eigen3 mingw32-winpthreads-static mingw32-zlib mingw32-headers mingw64-libgomp mingw64-winpthreads texlive-latex-fonts texlive-pslatex texlive-collection-latexrecommended texlive-latex texlive-latexconfig doxygen-latex texlive-collection-latex texlive-latexbug texlive-latex-bin texlive-lualatex-math texlive-fncychap texlive-tabulary texlive-framed texlive-wrapfig texlive-upquote texlive-capt-of texlive-needspace dos2unix findutils rsync + dnf -y update + dnf -y install vim-enhanced git file make cmake patch which file \ + dos2unix findutils rsync \ + ccache gcc-c++ gdb valgrind eigen3-devel \ + mingw-filesystem-base mingw32-nsis mingw-binutils-generic \ + mingw32-filesystem mingw32-pkg-config \ + mingw64-filesystem mingw64-pkg-config \ + mingw32-crt mingw32-headers mingw32-binutils \ + mingw64-crt mingw64-headers mingw64-binutils \ + mingw32-cpp mingw32-gcc mingw32-gcc-gfortran mingw32-gcc-c++ \ + mingw64-cpp mingw64-gcc mingw64-gcc-gfortran mingw64-gcc-c++ \ + mingw32-libgomp mingw64-libgomp \ + mingw32-winpthreads mingw64-winpthreads \ + mingw32-winpthreads-static mingw64-winpthreads-static \ + mingw32-eigen3 mingw64-eigen3 \ + mingw32-libjpeg-turbo mingw64-libjpeg-turbo \ + mingw32-libjpeg-turbo-static mingw64-libjpeg-turbo-static \ + mingw32-libpng mingw64-libpng \ + mingw32-libpng-static mingw64-libpng-static \ + mingw32-zlib mingw64-zlib \ + mingw32-zlib-static mingw64-zlib-static \ + mingw32-expat mingw64-expat \ + mingw64-expat-static mingw32-expat-static \ + mingw32-sqlite-static mingw64-sqlite-static \ + enchant python3-virtualenv doxygen \ + texlive-latex-fonts texlive-pslatex texlive-collection-latexrecommended \ + texlive-latex texlive-latexconfig doxygen-latex texlive-collection-latex \ + texlive-latex-bin texlive-lualatex-math texlive-fncychap texlive-tabulary \ + texlive-framed texlive-wrapfig texlive-upquote texlive-capt-of \ + texlive-needspace texlive-titlesec texlive-anysize texlive-dvipng +%environment + LC_ALL=C + export LC_ALL %labels - Author akohlmey + Author akohlmey diff --git a/tools/singularity/ubuntu16.04.def b/tools/singularity/ubuntu16.04.def index 2f7841bd4a..b6833707a2 100644 --- a/tools/singularity/ubuntu16.04.def +++ b/tools/singularity/ubuntu16.04.def @@ -2,8 +2,24 @@ BootStrap: docker From: ubuntu:16.04 %post - apt-get update -y - env DEBIAN_FRONTEND=noninteractive apt-get install -y make cmake cmake-curses-gui ninja-build git ccache gcc g++ gfortran libfftw3-dev libjpeg-dev libpng12-dev libblas-dev liblapack-dev mpi-default-bin mpi-default-dev libeigen3-dev libgsl-dev libopenblas-dev virtualenv python-dev enchant vim-nox + export DEBIAN_FRONTEND=noninteractive + apt-get update + apt-get upgrade --no-install-recommends -y + apt-get install --no-install-recommends -y \ + bc build-essential curl doxygen vim-nox wget \ + make cmake cmake-curses-gui ninja-build git \ + rsync ssh \ + ccache gcc g++ gfortran \ + mpi-default-bin mpi-default-dev \ + libfftw3-dev libjpeg-dev libpng12-dev libblas-dev liblapack-dev \ + python-dev libeigen3-dev libgsl-dev libopenblas-dev \ + virtualenv python3-dev python3-pip python3-pkg-resources \ + python3-setuptools python3-virtualenv \ + enchant + +%environment + LC_ALL=C + export LC_ALL %labels - Author akohlmey + Author akohlmey -- GitLab From 1e224611ca2cff67413b476398d964b4bf528e03 Mon Sep 17 00:00:00 2001 From: Richard Berger Date: Thu, 2 Apr 2020 17:59:45 -0400 Subject: [PATCH 162/717] Add preliminary CMake support to GPU HIP port --- cmake/Modules/GenerateBinaryHeader.cmake | 3 ++ cmake/Modules/Packages/GPU.cmake | 53 +++++++++++++++++++++++- 2 files changed, 55 insertions(+), 1 deletion(-) create mode 100644 cmake/Modules/GenerateBinaryHeader.cmake diff --git a/cmake/Modules/GenerateBinaryHeader.cmake b/cmake/Modules/GenerateBinaryHeader.cmake new file mode 100644 index 0000000000..512f69e09d --- /dev/null +++ b/cmake/Modules/GenerateBinaryHeader.cmake @@ -0,0 +1,3 @@ +# utility script to call GenerateBinaryHeader function +include(${SOURCE_DIR}/Modules/LAMMPSUtils.cmake) +GenerateBinaryHeader(${VARNAME} ${HEADER_FILE} ${SOURCE_FILES}) diff --git a/cmake/Modules/Packages/GPU.cmake b/cmake/Modules/Packages/GPU.cmake index abbcb1f495..27454211b2 100644 --- a/cmake/Modules/Packages/GPU.cmake +++ b/cmake/Modules/Packages/GPU.cmake @@ -5,7 +5,7 @@ if(PKG_GPU) ${GPU_SOURCES_DIR}/fix_gpu.cpp) set(GPU_API "opencl" CACHE STRING "API used by GPU package") - set(GPU_API_VALUES opencl cuda) + set(GPU_API_VALUES opencl cuda hip) set_property(CACHE GPU_API PROPERTY STRINGS ${GPU_API_VALUES}) validate_option(GPU_API GPU_API_VALUES) string(TOUPPER ${GPU_API} GPU_API) @@ -180,6 +180,57 @@ if(PKG_GPU) target_compile_definitions(ocl_get_devices PRIVATE -DUCL_OPENCL) target_link_libraries(ocl_get_devices PRIVATE ${OpenCL_LIBRARIES}) target_include_directories(ocl_get_devices PRIVATE ${OpenCL_INCLUDE_DIRS}) + elseif(GPU_API STREQUAL "HIP") + if(NOT DEFINED HIP_PATH) + if(NOT DEFINED ENV{HIP_PATH}) + set(HIP_PATH "/opt/rocm/hip" CACHE PATH "Path to which HIP has been installed") + else() + set(HIP_PATH $ENV{HIP_PATH} CACHE PATH "Path to which HIP has been installed") + endif() + endif() + set(CMAKE_MODULE_PATH "${HIP_PATH}/cmake" ${CMAKE_MODULE_PATH}) + find_package(HIP REQUIRED) + + set(HIP_ARCH "gfx906") + + file(GLOB GPU_LIB_CU ${LAMMPS_LIB_SOURCE_DIR}/gpu/[^.]*.cu ${CMAKE_CURRENT_SOURCE_DIR}/gpu/[^.]*.cu) + list(REMOVE_ITEM GPU_LIB_CU ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_pppm.cu) + + set(GPU_LIB_CU_HIP "") + foreach(CU_FILE ${GPU_LIB_CU}) + get_filename_component(CU_NAME ${CU_FILE} NAME_WE) + string(REGEX REPLACE "^.*lal_" "" CU_NAME "${CU_NAME}") + + set(CU_CPP_FILE "${LAMMPS_LIB_BINARY_DIR}/gpu/${CU_NAME}.cu.cpp") + set(CUBIN_FILE "${LAMMPS_LIB_BINARY_DIR}/gpu/${CU_NAME}.cubin") + set(CUBIN_H_FILE "${LAMMPS_LIB_BINARY_DIR}/gpu/${CU_NAME}_cubin.h") + + configure_file(${CU_FILE} ${CU_CPP_FILE} COPYONLY) + + add_custom_command(OUTPUT ${CUBIN_FILE} + VERBATIM COMMAND ${HIP_HIPCC_EXECUTABLE} --genco -t="${HIP_ARCH}" -f=\"-O3 -ffast-math -DUSE_HIP -D_${GPU_PREC_SETTING} -I${LAMMPS_LIB_SOURCE_DIR}/gpu\" -o ${CUBIN_FILE} ${CU_CPP_FILE} + DEPENDS ${CU_CPP_FILE} + COMMENT "Generating ${CU_NAME}.cubin") + + add_custom_command(OUTPUT ${CUBIN_H_FILE} + COMMAND ${CMAKE_COMMAND} -D SOURCE_DIR=${CMAKE_CURRENT_SOURCE_DIR} -D VARNAME=${CU_NAME} -D HEADER_FILE=${CUBIN_H_FILE} -D SOURCE_FILES=${CUBIN_FILE} -P ${CMAKE_CURRENT_SOURCE_DIR}/Modules/GenerateBinaryHeader.cmake + DEPENDS ${CUBIN_FILE} + COMMENT "Generating ${CU_NAME}_cubin.h") + + list(APPEND GPU_LIB_SOURCES ${CUBIN_H_FILE}) + endforeach() + + set_directory_properties(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "${LAMMPS_LIB_BINARY_DIR}/gpu/*_cubin.h ${LAMMPS_LIB_BINARY_DIR}/gpu/*.cu.cpp") + + hip_add_library(gpu STATIC ${GPU_LIB_SOURCES}) + target_include_directories(gpu PRIVATE ${LAMMPS_LIB_BINARY_DIR}/gpu) + target_compile_definitions(gpu PRIVATE -D_${GPU_PREC_SETTING} -DMPI_GERYON -DUCL_NO_EXIT) + target_compile_definitions(gpu PRIVATE -DUSE_HIP) + + hip_add_executable(hip_get_devices ${LAMMPS_LIB_SOURCE_DIR}/gpu/geryon/ucl_get_devices.cpp) + target_compile_definitions(hip_get_devices PRIVATE -DUCL_HIP) + + list(APPEND LAMMPS_LINK_LIBS gpu) endif() # GPU package -- GitLab From d4fbeccb2b6467cc2009bbe2bc708682007b0b37 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 2 Apr 2020 19:40:29 -0400 Subject: [PATCH 163/717] add latex support --- tools/singularity/ubuntu18.04.def | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/tools/singularity/ubuntu18.04.def b/tools/singularity/ubuntu18.04.def index 070086a632..4285f8d3a4 100644 --- a/tools/singularity/ubuntu18.04.def +++ b/tools/singularity/ubuntu18.04.def @@ -47,11 +47,21 @@ From: ubuntu:18.04 python3-virtualenv \ rsync \ ssh \ + texlive \ + texlive-latex-recommended \ + texlive-pictures \ + texlive-publishers \ + texlive-science \ + dvipng \ vim-nox \ virtualenv \ voro++-dev \ wget \ xxd +%environment + LC_ALL=C + export LC_ALL + %labels Author akohlmey, rbberger -- GitLab From c8481e620d3c681964b95c620808ed4fab186b5d Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 2 Apr 2020 19:41:00 -0400 Subject: [PATCH 164/717] set C locale --- tools/singularity/ubuntu18.04_amd_rocm.def | 4 ++++ tools/singularity/ubuntu18.04_intel_opencl.def | 4 ++++ tools/singularity/ubuntu18.04_nvidia.def | 4 ++++ 3 files changed, 12 insertions(+) diff --git a/tools/singularity/ubuntu18.04_amd_rocm.def b/tools/singularity/ubuntu18.04_amd_rocm.def index 239106b44b..ad7eaaf543 100644 --- a/tools/singularity/ubuntu18.04_amd_rocm.def +++ b/tools/singularity/ubuntu18.04_amd_rocm.def @@ -68,5 +68,9 @@ From: rocm/dev-ubuntu-18.04 make package make install +%environment + LC_ALL=C + export LC_ALL + %labels Author rbberger diff --git a/tools/singularity/ubuntu18.04_intel_opencl.def b/tools/singularity/ubuntu18.04_intel_opencl.def index 71ad1274fe..389c75699c 100644 --- a/tools/singularity/ubuntu18.04_intel_opencl.def +++ b/tools/singularity/ubuntu18.04_intel_opencl.def @@ -61,5 +61,9 @@ From: ubuntu:18.04 apt-get update apt-get install -y intel-opencl-icd +%environment + LC_ALL=C + export LC_ALL + %labels Author rbberger diff --git a/tools/singularity/ubuntu18.04_nvidia.def b/tools/singularity/ubuntu18.04_nvidia.def index c1c9fcb5f9..9392821d7e 100644 --- a/tools/singularity/ubuntu18.04_nvidia.def +++ b/tools/singularity/ubuntu18.04_nvidia.def @@ -60,5 +60,9 @@ From: nvidia/cuda:10.2-devel-ubuntu18.04 mkdir -p /etc/OpenCL/vendors echo "libnvidia-opencl.so.1" > /etc/OpenCL/vendors/nvidia.icd +%environment + LC_ALL=C + export LC_ALL + %labels Author rbberger -- GitLab From 8b61aed3cbb73623f4df13308b71671a009bc6b3 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 2 Apr 2020 21:51:52 -0400 Subject: [PATCH 165/717] update/order list of require texlive packages --- doc/README | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/doc/README b/doc/README index 1c6e982786..cbc0c425dc 100644 --- a/doc/README +++ b/doc/README @@ -93,18 +93,18 @@ support for PDFLaTeX. Also the following LaTeX packages need to be installed (e.g. from texlive): - amsmath - babel +- capt-of - cmap - fncychap +- framed - geometry - hyperref - hypcap +- needspace - times - tabulary -- framed -- wrapfig - upquote -- capt-of -- needspace +- wrapfig ---------------- Installing prerequisites for epub build -- GitLab From e53e443e2167482e1f94f20c38854446c7f36d16 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 2 Apr 2020 21:52:20 -0400 Subject: [PATCH 166/717] add singularity description file for Ubuntu 20.04 LTS --- tools/singularity/ubuntu20.04.def | 64 +++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 tools/singularity/ubuntu20.04.def diff --git a/tools/singularity/ubuntu20.04.def b/tools/singularity/ubuntu20.04.def new file mode 100644 index 0000000000..4ebc88447d --- /dev/null +++ b/tools/singularity/ubuntu20.04.def @@ -0,0 +1,64 @@ +BootStrap: docker +From: ubuntu:20.04 + +%post + export DEBIAN_FRONTEND=noninteractive + apt-get update + apt-get upgrade --no-install-recommends -y + apt-get install --no-install-recommends -y \ + bc \ + build-essential \ + ccache \ + clang \ + cmake \ + cmake-curses-gui \ + curl \ + doxygen \ + enchant \ + g++ \ + gcc \ + gfortran \ + git \ + hdf5-tools \ + libblas-dev \ + libeigen3-dev \ + libenchant-dev \ + libfftw3-dev \ + libgsl-dev \ + libhdf5-serial-dev \ + libjpeg-dev \ + liblapack-dev \ + libopenblas-dev \ + libpng-dev \ + libproj-dev \ + libvtk6-dev \ + make \ + mpi-default-bin \ + mpi-default-dev \ + ninja-build \ + python3-dev \ + python3-pip \ + python3-pkg-resources \ + python3-setuptools \ + python3-virtualenv \ + rsync \ + ssh \ + texlive \ + texlive-latex-recommended \ + texlive-latex-extra \ + texlive-pictures \ + texlive-publishers \ + texlive-science \ + dvipng \ + vim-nox \ + virtualenv \ + voro++-dev \ + wget \ + xxd + +%environment + LC_ALL=C + export LC_ALL + +%labels + Author akohlmey, rbberger -- GitLab From 2df524d782edc47485f74f7a7df9f98dd2e1bff4 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Fri, 3 Apr 2020 07:23:03 -0600 Subject: [PATCH 167/717] USER-INTEL.cmake: fix TBB_MALLOC warning --- cmake/Modules/FindTBB.cmake | 19 ----------------- cmake/Modules/FindTBB_MALLOC.cmake | 27 +++++++++++++++++++++++++ cmake/Modules/Packages/USER-INTEL.cmake | 4 ++-- 3 files changed, 29 insertions(+), 21 deletions(-) create mode 100644 cmake/Modules/FindTBB_MALLOC.cmake diff --git a/cmake/Modules/FindTBB.cmake b/cmake/Modules/FindTBB.cmake index 8cc050817e..91561eca9a 100644 --- a/cmake/Modules/FindTBB.cmake +++ b/cmake/Modules/FindTBB.cmake @@ -25,22 +25,3 @@ include(FindPackageHandleStandardArgs) find_package_handle_standard_args(TBB DEFAULT_MSG TBB_LIBRARY TBB_INCLUDE_DIR) mark_as_advanced(TBB_INCLUDE_DIR TBB_LIBRARY ) - -######################################################## -# TBB Malloc - -find_path(TBB_MALLOC_INCLUDE_DIR NAMES tbb/tbb.h PATHS $ENV{TBBROOT}/include) -find_library(TBB_MALLOC_LIBRARY NAMES tbbmalloc PATHS $ENV{TBBROOT}/lib/intel64/gcc4.7 - $ENV{TBBROOT}/lib/intel64/gcc4.4 - $ENV{TBBROOT}/lib/intel64/gcc4.1) - -set(TBB_MALLOC_LIBRARIES ${TBB_MALLOC_LIBRARY}) -set(TBB_MALLOC_INCLUDE_DIRS ${TBB_MALLOC_INCLUDE_DIR}) - -include(FindPackageHandleStandardArgs) -# handle the QUIETLY and REQUIRED arguments and set TBB_MALLOC_FOUND to TRUE -# if all listed variables are TRUE - -find_package_handle_standard_args(TBB_MALLOC DEFAULT_MSG TBB_MALLOC_LIBRARY TBB_MALLOC_INCLUDE_DIR) - -mark_as_advanced(TBB_MALLOC_INCLUDE_DIR TBB_MALLOC_LIBRARY ) diff --git a/cmake/Modules/FindTBB_MALLOC.cmake b/cmake/Modules/FindTBB_MALLOC.cmake new file mode 100644 index 0000000000..f46c5fd5f5 --- /dev/null +++ b/cmake/Modules/FindTBB_MALLOC.cmake @@ -0,0 +1,27 @@ +# - Find parts of TBB_MALLOC +# Find the native TBB_MALLOC headers and libraries. +# +# TBB_MALLOC_INCLUDE_DIRS - where to find tbb.h, etc. +# TBB_MALLOC_LIBRARIES - List of libraries when using tbb. +# TBB_MALLOC_FOUND - True if tbb found. +# + + +######################################################## +# TBB Malloc + +find_path(TBB_MALLOC_INCLUDE_DIR NAMES tbb/tbb.h PATHS $ENV{TBBROOT}/include) +find_library(TBB_MALLOC_LIBRARY NAMES tbbmalloc PATHS $ENV{TBBROOT}/lib/intel64/gcc4.7 + $ENV{TBBROOT}/lib/intel64/gcc4.4 + $ENV{TBBROOT}/lib/intel64/gcc4.1) + +set(TBB_MALLOC_LIBRARIES ${TBB_MALLOC_LIBRARY}) +set(TBB_MALLOC_INCLUDE_DIRS ${TBB_MALLOC_INCLUDE_DIR}) + +include(FindPackageHandleStandardArgs) +# handle the QUIETLY and REQUIRED arguments and set TBB_MALLOC_FOUND to TRUE +# if all listed variables are TRUE + +find_package_handle_standard_args(TBB_MALLOC DEFAULT_MSG TBB_MALLOC_LIBRARY TBB_MALLOC_INCLUDE_DIR) + +mark_as_advanced(TBB_MALLOC_INCLUDE_DIR TBB_MALLOC_LIBRARY ) diff --git a/cmake/Modules/Packages/USER-INTEL.cmake b/cmake/Modules/Packages/USER-INTEL.cmake index 6a3b9fdfb3..0b08930603 100644 --- a/cmake/Modules/Packages/USER-INTEL.cmake +++ b/cmake/Modules/Packages/USER-INTEL.cmake @@ -42,8 +42,8 @@ if(PKG_USER-INTEL) message(WARNING "USER-INTEL gives best performance with Intel compilers") endif() - find_package(TBB QUIET) - if(TBB_FOUND) + find_package(TBB_MALLOC QUIET) + if(TBB_MALLOC_FOUND) target_link_libraries(lammps PRIVATE ${TBB_MALLOC_LIBRARIES}) else() target_compile_definitions(lammps PRIVATE -DLMP_INTEL_NO_TBB) -- GitLab From 8bcdc86d0f8e812b35c7fcff6feed55045ca65e1 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 3 Apr 2020 10:16:20 -0400 Subject: [PATCH 168/717] properly pass --enable-stdcall-fixup when linking on windows with mingw cross-compiler --- cmake/presets/mingw-cross.cmake | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/cmake/presets/mingw-cross.cmake b/cmake/presets/mingw-cross.cmake index a733142455..61c4bbc45b 100644 --- a/cmake/presets/mingw-cross.cmake +++ b/cmake/presets/mingw-cross.cmake @@ -23,6 +23,7 @@ set(DOWNLOAD_VORO ON CACHE BOOL "" FORCE) set(DOWNLOAD_EIGEN3 ON CACHE BOOL "" FORCE) set(LAMMPS_MEMALIGN "0" CACHE STRING "" FORCE) set(CMAKE_TUNE_FLAGS "-Wno-missing-include-dirs" CACHE STRING "" FORCE) -set(CMAKE_EXE_LINKER_FLAGS "--enable-stdcall-fixup" CACHE STRING "" FORCE) +set(CMAKE_EXE_LINKER_FLAGS "-Wl,--enable-stdcall-fixup" CACHE STRING "" FORCE) +set(CMAKE_SHARED_LINKER_FLAGS "-Wl,--enable-stdcall-fixup" CACHE STRING "" FORCE) set(BUILD_TOOLS ON CACHE BOOL "" FORCE) set(CMAKE_INSTALL_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/lammps-installer") -- GitLab From bdc83020f07d8a912660e2c52af3889c510565ad Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Fri, 3 Apr 2020 09:24:47 -0600 Subject: [PATCH 169/717] cmake:LAMMPS::MPI -> MPI::MPI_CXX --- cmake/CMakeLists.txt | 8 +++----- cmake/Modules/MPI4WIN.cmake | 6 +++--- cmake/Modules/Packages/GPU.cmake | 2 +- cmake/Modules/Packages/MESSAGE.cmake | 2 +- 4 files changed, 8 insertions(+), 10 deletions(-) diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index 3213da02db..604e4e2367 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -186,13 +186,11 @@ if(BUILD_MPI) # We use a non-standard procedure to compile with MPI on windows if (CMAKE_SYSTEM_NAME STREQUAL Windows) include(MPI4WIN) - target_link_libraries(lammps PUBLIC LAMMPS::MPI) + target_link_libraries(lammps PUBLIC MPI::MPI_CXX) else() set(MPI_CXX_SKIP_MPICXX ON) find_package(MPI REQUIRED) target_link_libraries(lammps PUBLIC MPI::MPI_CXX) - set_target_properties(MPI::MPI_CXX PROPERTIES IMPORTED_GLOBAL TRUE) - add_library(LAMMPS::MPI ALIAS MPI::MPI_CXX) option(LAMMPS_LONGLONG_TO_LONG "Workaround if your system or MPI version does not recognize 'long long' data types" OFF) if(LAMMPS_LONGLONG_TO_LONG) target_compile_definitions(lammps PRIVATE -DLAMMPS_LONGLONG_TO_LONG) @@ -214,7 +212,7 @@ else() else() target_link_libraries(lammps PUBLIC mpi_stubs) endif() - add_library(LAMMPS::MPI ALIAS mpi_stubs) + add_library(MPI::MPI_CXX ALIAS mpi_stubs) endif() set(LAMMPS_SIZES "smallbig" CACHE STRING "LAMMPS integer sizes (smallsmall: all 32-bit, smallbig: 64-bit #atoms #timesteps, bigbig: also 64-bit imageint, 64-bit atom ids)") @@ -488,7 +486,7 @@ if(PKG_USER-ATC) if(LAMMPS_SIZES STREQUAL BIGBIG) message(FATAL_ERROR "The USER-ATC Package is not compatible with -DLAMMPS_BIGBIG") endif() - target_link_libraries(atc PRIVATE ${LAPACK_LIBRARIES} LAMMPS::MPI) + target_link_libraries(atc PRIVATE ${LAPACK_LIBRARIES} MPI::MPI_CXX) target_include_directories(atc PRIVATE ${LAMMPS_SOURCE_DIR}) target_compile_definitions(atc PRIVATE -DLAMMPS_${LAMMPS_SIZES}) endif() diff --git a/cmake/Modules/MPI4WIN.cmake b/cmake/Modules/MPI4WIN.cmake index 242440b6f6..19d2d2a13e 100644 --- a/cmake/Modules/MPI4WIN.cmake +++ b/cmake/Modules/MPI4WIN.cmake @@ -17,9 +17,9 @@ endif() ExternalProject_get_property(mpi4win_build SOURCE_DIR) file(MAKE_DIRECTORY "${SOURCE_DIR}/include") -add_library(LAMMPS::MPI UNKNOWN IMPORTED) -set_target_properties(LAMMPS::MPI PROPERTIES +add_library(MPI::MPI_CXX UNKNOWN IMPORTED) +set_target_properties(MPI::MPI_CXX PROPERTIES IMPORTED_LOCATION "${SOURCE_DIR}/lib/libmpi.a" INTERFACE_INCLUDE_DIRECTORIES "${SOURCE_DIR}/include" INTERFACE_COMPILE_DEFINITIONS "MPICH_SKIP_MPICXX") -add_dependencies(LAMMPS::MPI mpi4win_build) +add_dependencies(MPI::MPI_CXX mpi4win_build) diff --git a/cmake/Modules/Packages/GPU.cmake b/cmake/Modules/Packages/GPU.cmake index a55c9128cb..c288eb0548 100644 --- a/cmake/Modules/Packages/GPU.cmake +++ b/cmake/Modules/Packages/GPU.cmake @@ -186,7 +186,7 @@ if(PKG_GPU) get_property(GPU_SOURCES GLOBAL PROPERTY GPU_SOURCES) - target_link_libraries(gpu PRIVATE LAMMPS::MPI) + target_link_libraries(gpu PRIVATE MPI::MPI_CXX) if(BUILD_LIB AND NOT BUILD_SHARED_LIBS) install(TARGETS gpu EXPORT LAMMPS_Targets LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) endif() diff --git a/cmake/Modules/Packages/MESSAGE.cmake b/cmake/Modules/Packages/MESSAGE.cmake index 5f2fb9dcdc..053865cc8a 100644 --- a/cmake/Modules/Packages/MESSAGE.cmake +++ b/cmake/Modules/Packages/MESSAGE.cmake @@ -16,7 +16,7 @@ if(PKG_MESSAGE) if(BUILD_MPI) target_compile_definitions(cslib PRIVATE -DMPI_YES) set_target_properties(cslib PROPERTIES OUTPUT_NAME "csmpi") - target_link_libraries(cslib PRIVATE LAMMPS::MPI) + target_link_libraries(cslib PRIVATE MPI::MPI_CXX) else() target_compile_definitions(cslib PRIVATE -DMPI_NO) target_include_directories(cslib PRIVATE ${LAMMPS_LIB_SOURCE_DIR}/message/cslib/src/STUBS_MPI) -- GitLab From a2353dfc50e6a12894c360cec7b220073925c416 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Fri, 3 Apr 2020 09:25:09 -0600 Subject: [PATCH 170/717] cmake: removed unused FindTBB.cmake --- cmake/Modules/FindTBB.cmake | 27 --------------------------- 1 file changed, 27 deletions(-) delete mode 100644 cmake/Modules/FindTBB.cmake diff --git a/cmake/Modules/FindTBB.cmake b/cmake/Modules/FindTBB.cmake deleted file mode 100644 index 91561eca9a..0000000000 --- a/cmake/Modules/FindTBB.cmake +++ /dev/null @@ -1,27 +0,0 @@ -# - Find parts of TBB -# Find the native TBB headers and libraries. -# -# TBB_INCLUDE_DIRS - where to find tbb.h, etc. -# TBB_LIBRARIES - List of libraries when using tbb. -# TBB_FOUND - True if tbb found. -# - -######################################################## -# TBB - -# TODO use more generic FindTBB - -find_path(TBB_INCLUDE_DIR NAMES tbb/tbb.h PATHS $ENV{TBBROOT}/include) -find_library(TBB_LIBRARY NAMES tbb PATHS $ENV{TBBROOT}/lib/intel64/gcc4.7 - $ENV{TBBROOT}/lib/intel64/gcc4.4 - $ENV{TBBROOT}/lib/intel64/gcc4.1) -set(TBB_LIBRARIES ${TBB_LIBRARY}) -set(TBB_INCLUDE_DIRS ${TBB_INCLUDE_DIR}) - -include(FindPackageHandleStandardArgs) -# handle the QUIETLY and REQUIRED arguments and set TBB_FOUND to TRUE -# if all listed variables are TRUE - -find_package_handle_standard_args(TBB DEFAULT_MSG TBB_LIBRARY TBB_INCLUDE_DIR) - -mark_as_advanced(TBB_INCLUDE_DIR TBB_LIBRARY ) -- GitLab From b83c98db14a634f855f94e70a10e5dd333f55814 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Fri, 3 Apr 2020 09:50:28 -0600 Subject: [PATCH 171/717] USER-INTEL.cmake: clean up, create imported targets --- cmake/Modules/FindMKL.cmake | 15 ++++++++++++--- cmake/Modules/FindTBB_MALLOC.cmake | 15 ++++++++++++--- cmake/Modules/Packages/USER-INTEL.cmake | 4 ++-- 3 files changed, 26 insertions(+), 8 deletions(-) diff --git a/cmake/Modules/FindMKL.cmake b/cmake/Modules/FindMKL.cmake index 4246062103..e3dc60ad97 100644 --- a/cmake/Modules/FindMKL.cmake +++ b/cmake/Modules/FindMKL.cmake @@ -10,13 +10,22 @@ find_path(MKL_INCLUDE_DIR mkl_dfti.h HINTS $ENV{MKLROOT}/include) find_library(MKL_LIBRARY NAMES mkl_rt HINTS $ENV{MKLROOT}/lib $ENV{MKLROOT}/lib/intel64) -set(MKL_LIBRARIES ${MKL_LIBRARY}) -set(MKL_INCLUDE_DIRS ${MKL_INCLUDE_DIR}) - include(FindPackageHandleStandardArgs) # handle the QUIETLY and REQUIRED arguments and set MKL_FOUND to TRUE # if all listed variables are TRUE find_package_handle_standard_args(MKL DEFAULT_MSG MKL_LIBRARY MKL_INCLUDE_DIR) +if(MKL_FOUND) + set(MKL_LIBRARIES ${MKL_LIBRARY}) + set(MKL_INCLUDE_DIRS ${MKL_INCLUDE_DIR}) + + if(NOT TARGET MKL::MKL) + add_library(MKL::MKL UNKNOWN IMPORTED) + set_target_properties(MKL::MKL PROPERTIES + IMPORTED_LOCATION "${MKL_LIBRARY}" + INTERFACE_INCLUDE_DIRECTORIES "${MKL_INCLUDE_DIR}") + endif() +endif() + mark_as_advanced(MKL_INCLUDE_DIR MKL_LIBRARY ) diff --git a/cmake/Modules/FindTBB_MALLOC.cmake b/cmake/Modules/FindTBB_MALLOC.cmake index f46c5fd5f5..896db649af 100644 --- a/cmake/Modules/FindTBB_MALLOC.cmake +++ b/cmake/Modules/FindTBB_MALLOC.cmake @@ -15,13 +15,22 @@ find_library(TBB_MALLOC_LIBRARY NAMES tbbmalloc PATHS $ENV{TBBROOT}/lib/intel64/ $ENV{TBBROOT}/lib/intel64/gcc4.4 $ENV{TBBROOT}/lib/intel64/gcc4.1) -set(TBB_MALLOC_LIBRARIES ${TBB_MALLOC_LIBRARY}) -set(TBB_MALLOC_INCLUDE_DIRS ${TBB_MALLOC_INCLUDE_DIR}) - include(FindPackageHandleStandardArgs) # handle the QUIETLY and REQUIRED arguments and set TBB_MALLOC_FOUND to TRUE # if all listed variables are TRUE find_package_handle_standard_args(TBB_MALLOC DEFAULT_MSG TBB_MALLOC_LIBRARY TBB_MALLOC_INCLUDE_DIR) +if(TBB_MALLOC_FOUND) + set(TBB_MALLOC_LIBRARIES ${TBB_MALLOC_LIBRARY}) + set(TBB_MALLOC_INCLUDE_DIRS ${TBB_MALLOC_INCLUDE_DIR}) + + if(NOT TARGET TBB::TBB_MALLOC) + add_library(TBB::TBB_MALLOC UNKNOWN IMPORTED) + set_target_properties(TBB::TBB_MALLOC PROPERTIES + IMPORTED_LOCATION "${TBB_MALLOC_LIBRARY}" + INTERFACE_INCLUDE_DIRECTORIES "${TBB_MALLOC_INCLUDE_DIR}") + endif() +endif() + mark_as_advanced(TBB_MALLOC_INCLUDE_DIR TBB_MALLOC_LIBRARY ) diff --git a/cmake/Modules/Packages/USER-INTEL.cmake b/cmake/Modules/Packages/USER-INTEL.cmake index 0b08930603..ea44119b2a 100644 --- a/cmake/Modules/Packages/USER-INTEL.cmake +++ b/cmake/Modules/Packages/USER-INTEL.cmake @@ -44,7 +44,7 @@ if(PKG_USER-INTEL) find_package(TBB_MALLOC QUIET) if(TBB_MALLOC_FOUND) - target_link_libraries(lammps PRIVATE ${TBB_MALLOC_LIBRARIES}) + target_link_libraries(lammps PRIVATE TBB::TBB_MALLOC) else() target_compile_definitions(lammps PRIVATE -DLMP_INTEL_NO_TBB) if(CMAKE_CXX_COMPILER_ID STREQUAL "Intel") @@ -55,7 +55,7 @@ if(PKG_USER-INTEL) find_package(MKL QUIET) if(MKL_FOUND) target_compile_definitions(lammps PRIVATE -DLMP_USE_MKL_RNG) - target_link_libraries(lammps PRIVATE ${MKL_LIBRARIES}) + target_link_libraries(lammps PRIVATE MKL::MKL) else() message(STATUS "Pair style dpd/intel will be faster with MKL libraries") endif() -- GitLab From cab260f3ab0dbdbcc9223c54a4cc97830f46f99d Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Fri, 3 Apr 2020 09:57:14 -0600 Subject: [PATCH 172/717] cmake: fix mpi default on Windows --- cmake/CMakeLists.txt | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index 604e4e2367..478e3fe88b 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -176,11 +176,15 @@ if(PKG_USER-ADIOS) target_link_libraries(lammps PRIVATE adios2::adios2) endif() -# do MPI detection after language activation, -# in case MPI for these languages is required -set(MPI_CXX_SKIP_MPICXX TRUE) -find_package(MPI QUIET) -option(BUILD_MPI "Build MPI version" ${MPI_FOUND}) +if (CMAKE_SYSTEM_NAME STREQUAL Windows) + option(BUILD_MPI "Build MPI version" OFF) +else() + # do MPI detection after language activation, + # in case MPI for these languages is required + set(MPI_CXX_SKIP_MPICXX TRUE) + find_package(MPI QUIET) + option(BUILD_MPI "Build MPI version" ${MPI_FOUND}) +endif() if(BUILD_MPI) # We use a non-standard procedure to compile with MPI on windows -- GitLab From 9df26bca5509d167c91f8dd38f7cc29ec5b91017 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Fri, 3 Apr 2020 13:39:28 -0600 Subject: [PATCH 173/717] cmake: export lmp executable as well --- cmake/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index 478e3fe88b..7045b7071f 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -115,7 +115,7 @@ if(BUILD_LIB) add_executable(lmp ${MAIN_SOURCES}) target_link_libraries(lmp PRIVATE lammps) set_target_properties(lmp PROPERTIES OUTPUT_NAME ${LAMMPS_BINARY}) - install(TARGETS lmp DESTINATION ${CMAKE_INSTALL_BINDIR}) + install(TARGETS lmp EXPORT LAMMPS_Targets DESTINATION ${CMAKE_INSTALL_BINDIR}) endif() else() if(NOT BUILD_EXE) -- GitLab From 1daa4ce3747806d3482632dfeca01ce3dfa43c33 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Fri, 3 Apr 2020 14:24:27 -0600 Subject: [PATCH 174/717] USER-INTEL.cmake: add_compile_options -> target_compile_options --- cmake/CMakeLists.txt | 2 +- cmake/Modules/Packages/USER-INTEL.cmake | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index 7045b7071f..43533477f7 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -73,7 +73,7 @@ if (${CMAKE_CXX_COMPILER_ID} STREQUAL "GNU") option(ENABLE_COVERAGE "Enable collecting code coverage data" OFF) mark_as_advanced(ENABLE_COVERAGE) if(ENABLE_COVERAGE) - set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --coverage") + set (CMAK_CXX_FLAGS "${CMAKE_CXX_FLAGS} --coverage") endif() endif() diff --git a/cmake/Modules/Packages/USER-INTEL.cmake b/cmake/Modules/Packages/USER-INTEL.cmake index ea44119b2a..d38bb84460 100644 --- a/cmake/Modules/Packages/USER-INTEL.cmake +++ b/cmake/Modules/Packages/USER-INTEL.cmake @@ -70,7 +70,7 @@ if(PKG_USER-INTEL) endif() set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -xHost -qopenmp -qoffload") set(MIC_OPTIONS "-qoffload-option,mic,compiler,\"-fp-model fast=2 -mGLOB_default_function_attrs=\\\"gather_scatter_loop_unroll=4\\\"\"") - add_compile_options(-xMIC-AVX512 -qoffload -fno-alias -ansi-alias -restrict -qoverride-limits ${MIC_OPTIONS}) + target_compile_options(lammps PRIVATE -xMIC-AVX512 -qoffload -fno-alias -ansi-alias -restrict -qoverride-limits ${MIC_OPTIONS}) target_compile_definitions(lammps PRIVATE -DLMP_INTEL_OFFLOAD) else() if(CMAKE_CXX_COMPILER_ID STREQUAL "Intel") @@ -78,11 +78,11 @@ if(PKG_USER-INTEL) foreach(_FLAG -O2 -fp-model fast=2 -no-prec-div -qoverride-limits -qopt-zmm-usage=high -qno-offload -fno-alias -ansi-alias -restrict) check_cxx_compiler_flag("${__FLAG}" COMPILER_SUPPORTS${_FLAG}) if(COMPILER_SUPPORTS${_FLAG}) - add_compile_options(${_FLAG}) + target_compile_options(lammps PRIVATE ${_FLAG}) endif() endforeach() else() - add_compile_options(-O3 -ffast-math) + target_compile_options(lammps PRIVATE -O3 -ffast-math) endif() endif() -- GitLab From c54bb316b81ee94c31c29513c01be60efbb52381 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Fri, 3 Apr 2020 14:25:43 -0600 Subject: [PATCH 175/717] USER-INTEL.cmake: remove duplicated injection of GNU flags --- cmake/Modules/Packages/USER-INTEL.cmake | 2 -- 1 file changed, 2 deletions(-) diff --git a/cmake/Modules/Packages/USER-INTEL.cmake b/cmake/Modules/Packages/USER-INTEL.cmake index d38bb84460..5d23facee6 100644 --- a/cmake/Modules/Packages/USER-INTEL.cmake +++ b/cmake/Modules/Packages/USER-INTEL.cmake @@ -81,8 +81,6 @@ if(PKG_USER-INTEL) target_compile_options(lammps PRIVATE ${_FLAG}) endif() endforeach() - else() - target_compile_options(lammps PRIVATE -O3 -ffast-math) endif() endif() -- GitLab From 5c0e8a6b0d21b912bd75de7ed8eabf9c50b16c45 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Fri, 3 Apr 2020 15:24:11 -0600 Subject: [PATCH 176/717] cmake: add options to summary --- cmake/CMakeLists.txt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index 43533477f7..6eb6bdd5c3 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -713,6 +713,10 @@ message(STATUS "<<< Build configuration >>> Version: ${CMAKE_CXX_COMPILER_VERSION} C++ Flags: ${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_${BTYPE}} Defines: ${DEFINES}") +get_target_property(OPTIONS lammps COMPILE_OPTIONS) +if(OPTIONS) + message(" Options: ${OPTIONS}") +endif() get_property(LANGUAGES GLOBAL PROPERTY ENABLED_LANGUAGES) list (FIND LANGUAGES "Fortran" _index) if (${_index} GREATER -1) -- GitLab From 4e0eb0c501911ccd590b0bf17fec3d67c7c0761e Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 3 Apr 2020 21:24:45 -0400 Subject: [PATCH 177/717] no more need to set compiler flags for intel compiler in preset --- cmake/presets/intel.cmake | 1 - 1 file changed, 1 deletion(-) diff --git a/cmake/presets/intel.cmake b/cmake/presets/intel.cmake index 869bf7bca2..099d744ad3 100644 --- a/cmake/presets/intel.cmake +++ b/cmake/presets/intel.cmake @@ -2,7 +2,6 @@ set(CMAKE_CXX_COMPILER "icpc" CACHE STRING "" FORCE) set(CMAKE_C_COMPILER "icc" CACHE STRING "" FORCE) -set(CMAKE_CXX_FLAGS "-O3 -DNDEBG" CACHE STRING "" FORCE) set(MPI_CXX "icpc" CACHE STRING "" FORCE) set(MPI_CXX_COMPILER "mpicxx" CACHE STRING "" FORCE) unset(HAVE_OMP_H_INCLUDE CACHE) -- GitLab From 6f5fcd66ac2e7b422647eb879db31d12ef64dce6 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Sun, 5 Apr 2020 08:58:34 -0600 Subject: [PATCH 178/717] cmake: check flags in CMAKE_TUNE_FLAGS --- cmake/CMakeLists.txt | 14 ++++++++++---- cmake/Modules/Packages/USER-INTEL.cmake | 2 +- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index 6eb6bdd5c3..7d1467a73e 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -381,10 +381,16 @@ include(Packages/MSCG) include(Packages/COMPRESS) set(CMAKE_TUNE_FLAGS "${CMAKE_TUNE_DEFAULT}" CACHE STRING "Compiler specific optimization or instrumentation") -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CMAKE_TUNE_FLAGS}") -if(CMAKE_Fortran_COMPILER) - set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} ${CMAKE_TUNE_FLAGS}") -endif() +separate_arguments(CMAKE_TUNE_FLAGS) +include(CheckCXXCompilerFlag) +foreach(_FLAG ${CMAKE_TUNE_FLAGS}) + check_cxx_compiler_flag("${_FLAG}" COMPILER_SUPPORTS${_FLAG}) + if(COMPILER_SUPPORTS${_FLAG}) + target_compile_options(lammps PRIVATE ${_FLAG}) + else() + message(WARNING "${_FLAG} found in CMAKE_TUNE_FLAGS, but not supported by the compiler, skipping") + endif() +endforeach() ######################################################################## # Basic system tests (standard libraries, headers, functions, types) # ######################################################################## diff --git a/cmake/Modules/Packages/USER-INTEL.cmake b/cmake/Modules/Packages/USER-INTEL.cmake index 5d23facee6..3d110b8c27 100644 --- a/cmake/Modules/Packages/USER-INTEL.cmake +++ b/cmake/Modules/Packages/USER-INTEL.cmake @@ -76,7 +76,7 @@ if(PKG_USER-INTEL) if(CMAKE_CXX_COMPILER_ID STREQUAL "Intel") include(CheckCXXCompilerFlag) foreach(_FLAG -O2 -fp-model fast=2 -no-prec-div -qoverride-limits -qopt-zmm-usage=high -qno-offload -fno-alias -ansi-alias -restrict) - check_cxx_compiler_flag("${__FLAG}" COMPILER_SUPPORTS${_FLAG}) + check_cxx_compiler_flag("${_FLAG}" COMPILER_SUPPORTS${_FLAG}) if(COMPILER_SUPPORTS${_FLAG}) target_compile_options(lammps PRIVATE ${_FLAG}) endif() -- GitLab From 909b2dcff83dfd5d5840b63b5df38329a46d4daa Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Sun, 5 Apr 2020 11:43:54 -0600 Subject: [PATCH 179/717] PYTHON.cmake: don't use PythonLibs on new cmake --- cmake/Modules/Packages/PYTHON.cmake | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/cmake/Modules/Packages/PYTHON.cmake b/cmake/Modules/Packages/PYTHON.cmake index b2451ebbdf..ba5ecff6bb 100644 --- a/cmake/Modules/Packages/PYTHON.cmake +++ b/cmake/Modules/Packages/PYTHON.cmake @@ -1,6 +1,11 @@ if(PKG_PYTHON) - find_package(PythonLibs REQUIRED) + if(CMAKE_VERSION VERSION_LESS 3.12) + find_package(PythonLibs REQUIRED) # Deprecated since version 3.12 + target_include_directories(lammps PRIVATE ${PYTHON_INCLUDE_DIR}) + target_link_libraries(lammps PRIVATE ${PYTHON_LIBRARY}) + else() + find_package(Python REQUIRED COMPONENTS Development) + target_link_libraries(lammps PRIVATE Python::Python) + endif() target_compile_definitions(lammps PRIVATE -DLMP_PYTHON) - target_include_directories(lammps PRIVATE ${PYTHON_INCLUDE_DIR}) - target_link_libraries(lammps PRIVATE ${PYTHON_LIBRARY}) endif() -- GitLab From e8317b2f6b4a15b2cb236d4e5d54abbc4936f094 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Sun, 5 Apr 2020 11:52:55 -0600 Subject: [PATCH 180/717] cmake: don't use PythonInterp on new cmake --- cmake/CMakeLists.txt | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index 7d1467a73e..a8b2428485 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -658,8 +658,12 @@ install( # This is primarily for people that only want to use the Python wrapper. ############################################################################### if(BUILD_LIB AND BUILD_SHARED_LIBS) - find_package(PythonInterp) - if (PYTHONINTERP_FOUND) + if(CMAKE_VERSION VERSION_LESS 3.12) + find_package(PythonInterp) # Deprecated since version 3.12 + else() + find_package(Python COMPONENTS Interpreter) + endif() + if (PYTHON_EXECUTABLE) add_custom_target( install-python ${PYTHON_EXECUTABLE} install.py -v ${LAMMPS_SOURCE_DIR}/version.h @@ -684,8 +688,12 @@ endif() # This requires either a shared library or that the PYTHON package is included. ############################################################################### if((BUILD_LIB AND BUILD_SHARED_LIBS) OR (PKG_PYTHON)) - find_package(PythonInterp) - if (PYTHONINTERP_FOUND) + if(CMAKE_VERSION VERSION_LESS 3.12) + find_package(PythonInterp) # Deprecated since version 3.12 + else() + find_package(Python COMPONENTS Interpreter) + endif() + if (PYTHON_EXECUTABLE) execute_process(COMMAND ${PYTHON_EXECUTABLE} -c "import distutils.sysconfig as cg; print(cg.get_python_lib(1,0,prefix='${CMAKE_INSTALL_PREFIX}'))" OUTPUT_VARIABLE PYTHON_DEFAULT_INSTDIR OUTPUT_STRIP_TRAILING_WHITESPACE) -- GitLab From 5411ae698f3ee26ea9101a6d904da28e5bde085f Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Sun, 5 Apr 2020 14:38:59 -0600 Subject: [PATCH 181/717] KSPACE.cmake: use MKL imported target --- cmake/Modules/Packages/KSPACE.cmake | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/cmake/Modules/Packages/KSPACE.cmake b/cmake/Modules/Packages/KSPACE.cmake index 184a70f746..83fb963e41 100644 --- a/cmake/Modules/Packages/KSPACE.cmake +++ b/cmake/Modules/Packages/KSPACE.cmake @@ -41,8 +41,7 @@ if(PKG_KSPACE) if(FFT_MKL_THREADS) target_compile_definitions(lammps PRIVATE -DFFT_MKL_THREADS) endif() - target_include_directories(lammps PRIVATE ${MKL_INCLUDE_DIRS}) - target_link_libraries(lammps PRIVATE ${MKL_LIBRARIES}) + target_link_libraries(lammps PRIVATE MKL::MKL) else() # last option is KISSFFT target_compile_definitions(lammps PRIVATE -DFFT_KISS) -- GitLab From 9aa6d04997a69384c388a1ac3ca840f9cf71a1da Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Sun, 5 Apr 2020 14:57:06 -0600 Subject: [PATCH 182/717] cmake: move if(PKG_) out of cmake file --- cmake/CMakeLists.txt | 23 +-- cmake/Modules/Packages/COMPRESS.cmake | 6 +- cmake/Modules/Packages/KIM.cmake | 112 ++++++------- cmake/Modules/Packages/KSPACE.cmake | 94 +++++------ cmake/Modules/Packages/LATTE.cmake | 68 ++++---- cmake/Modules/Packages/MESSAGE.cmake | 66 ++++---- cmake/Modules/Packages/MSCG.cmake | 88 +++++----- cmake/Modules/Packages/PYTHON.cmake | 18 +- cmake/Modules/Packages/USER-COLVARS.cmake | 52 +++--- cmake/Modules/Packages/USER-MOLFILE.cmake | 22 ++- cmake/Modules/Packages/USER-NETCDF.cmake | 36 ++-- cmake/Modules/Packages/USER-PLUMED.cmake | 186 ++++++++++----------- cmake/Modules/Packages/USER-QMMM.cmake | 28 ++-- cmake/Modules/Packages/USER-QUIP.cmake | 8 +- cmake/Modules/Packages/USER-SCAFACOS.cmake | 114 +++++++------ cmake/Modules/Packages/USER-SMD.cmake | 52 +++--- cmake/Modules/Packages/USER-VTK.cmake | 10 +- cmake/Modules/Packages/VORONOI.cmake | 80 +++++---- 18 files changed, 508 insertions(+), 555 deletions(-) diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index a8b2428485..87dd9bc3ad 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -362,23 +362,12 @@ else() set(CUDA_REQUEST_PIC) endif() -include(Packages/KSPACE) -include(Packages/PYTHON) -include(Packages/VORONOI) -include(Packages/USER-COLVARS) -include(Packages/USER-MOLFILE) -include(Packages/USER-NETCDF) -include(Packages/USER-PLUMED) -include(Packages/USER-QMMM) -include(Packages/USER-QUIP) -include(Packages/USER-SCAFACOS) -include(Packages/USER-SMD) -include(Packages/USER-VTK) -include(Packages/KIM) -include(Packages/LATTE) -include(Packages/MESSAGE) -include(Packages/MSCG) -include(Packages/COMPRESS) +foreach(PKG_WITH_INCL KSPACE PYTHON VORONOI USER-COLVARS USER-MOLFILE USER-NETCDF USER-PLUMED USER-QMMM + USER-QUIP USER-SCAFACOS USER-SMD USER-VTK KIM LATTE MESSAGE MSCG COMPRESS) + if(PKG_${PKG_WITH_INCL}) + include(Packages/${_PKG_INCL}) + endif() +endforeach() set(CMAKE_TUNE_FLAGS "${CMAKE_TUNE_DEFAULT}" CACHE STRING "Compiler specific optimization or instrumentation") separate_arguments(CMAKE_TUNE_FLAGS) diff --git a/cmake/Modules/Packages/COMPRESS.cmake b/cmake/Modules/Packages/COMPRESS.cmake index ea5d5e37bd..801a38a215 100644 --- a/cmake/Modules/Packages/COMPRESS.cmake +++ b/cmake/Modules/Packages/COMPRESS.cmake @@ -1,4 +1,2 @@ -if(PKG_COMPRESS) - find_package(ZLIB REQUIRED) - target_link_libraries(lammps PRIVATE ZLIB::ZLIB) -endif() +find_package(ZLIB REQUIRED) +target_link_libraries(lammps PRIVATE ZLIB::ZLIB) diff --git a/cmake/Modules/Packages/KIM.cmake b/cmake/Modules/Packages/KIM.cmake index d9dde26d99..3051b528a1 100644 --- a/cmake/Modules/Packages/KIM.cmake +++ b/cmake/Modules/Packages/KIM.cmake @@ -1,61 +1,59 @@ -if(PKG_KIM) - set(KIM-API_MIN_VERSION 2.1) - find_package(CURL) - if(CURL_FOUND) - target_link_libraries(lammps PRIVATE CURL::libcurl) - target_compile_definitions(lammps PRIVATE -DLMP_KIM_CURL) - set(LMP_DEBUG_CURL OFF CACHE STRING "Set libcurl verbose mode on/off. If on, it displays a lot of verbose information about its operations.") - mark_as_advanced(LMP_DEBUG_CURL) - if(LMP_DEBUG_CURL) - target_compile_definitions(lammps PRIVATE -DLMP_DEBUG_CURL) - endif() - set(LMP_NO_SSL_CHECK OFF CACHE STRING "Tell libcurl to not verify the peer. If on, the connection succeeds regardless of the names in the certificate. Insecure - Use with caution!") - mark_as_advanced(LMP_NO_SSL_CHECK) - if(LMP_NO_SSL_CHECK) - target_compile_definitions(lammps PRIVATE -DLMP_NO_SSL_CHECK) - endif() +set(KIM-API_MIN_VERSION 2.1) +find_package(CURL) +if(CURL_FOUND) + target_link_libraries(lammps PRIVATE CURL::libcurl) + target_compile_definitions(lammps PRIVATE -DLMP_KIM_CURL) + set(LMP_DEBUG_CURL OFF CACHE STRING "Set libcurl verbose mode on/off. If on, it displays a lot of verbose information about its operations.") + mark_as_advanced(LMP_DEBUG_CURL) + if(LMP_DEBUG_CURL) + target_compile_definitions(lammps PRIVATE -DLMP_DEBUG_CURL) endif() - find_package(PkgConfig QUIET) - find_package(MPI REQUIRED) - set(DOWNLOAD_KIM_DEFAULT ON) - if(PKG_CONFIG_FOUND) - pkg_check_modules(KIM-API QUIET libkim-api>=2.1.3) - if(KIM-API_FOUND) - set(DOWNLOAD_KIM_DEFAULT OFF) - endif() + set(LMP_NO_SSL_CHECK OFF CACHE STRING "Tell libcurl to not verify the peer. If on, the connection succeeds regardless of the names in the certificate. Insecure - Use with caution!") + mark_as_advanced(LMP_NO_SSL_CHECK) + if(LMP_NO_SSL_CHECK) + target_compile_definitions(lammps PRIVATE -DLMP_NO_SSL_CHECK) endif() - option(DOWNLOAD_KIM "Download KIM-API from OpenKIM instead of using an already installed one" ${DOWNLOAD_KIM_DEFAULT}) - if(DOWNLOAD_KIM) - message(STATUS "KIM-API download requested - we will build our own") - include(ExternalProject) - enable_language(C) - enable_language(Fortran) - ExternalProject_Add(kim_build - URL https://s3.openkim.org/kim-api/kim-api-2.1.3.txz - URL_MD5 6ee829a1bbba5f8b9874c88c4c4ebff8 - BINARY_DIR build - CMAKE_ARGS ${CMAKE_REQUEST_PIC} - -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} - -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} - -DCMAKE_Fortran_COMPILER=${CMAKE_Fortran_COMPILER} - -DCMAKE_INSTALL_LIBDIR=lib - -DCMAKE_INSTALL_PREFIX= - -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} - -DCMAKE_MAKE_PROGRAM=${CMAKE_MAKE_PROGRAM} - -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE} - BUILD_BYPRODUCTS /lib/libkim-api${CMAKE_SHARED_LIBRARY_SUFFIX} - ) - ExternalProject_get_property(kim_build INSTALL_DIR) - file(MAKE_DIRECTORY ${INSTALL_DIR}/include/kim-api) - add_library(LAMMPS::KIM UNKNOWN IMPORTED) - set_target_properties(LAMMPS::KIM PROPERTIES - IMPORTED_LOCATION "${INSTALL_DIR}/lib/libkim-api${CMAKE_SHARED_LIBRARY_SUFFIX}" - INTERFACE_INCLUDE_DIRECTORIES "${INSTALL_DIR}/include/kim-api") - target_link_libraries(lammps PRIVATE LAMMPS::KIM) - add_dependencies(LAMMPS::KIM kim_build) - else() - find_package(PkgConfig REQUIRED) - pkg_check_modules(KIM-API REQUIRED IMPORTED_TARGET libkim-api>=2.1.3) - target_link_libraries(lammps PRIVATE PkgConfig::KIM-API) +endif() +find_package(PkgConfig QUIET) +find_package(MPI REQUIRED) +set(DOWNLOAD_KIM_DEFAULT ON) +if(PKG_CONFIG_FOUND) + pkg_check_modules(KIM-API QUIET libkim-api>=2.1.3) + if(KIM-API_FOUND) + set(DOWNLOAD_KIM_DEFAULT OFF) endif() endif() +option(DOWNLOAD_KIM "Download KIM-API from OpenKIM instead of using an already installed one" ${DOWNLOAD_KIM_DEFAULT}) +if(DOWNLOAD_KIM) + message(STATUS "KIM-API download requested - we will build our own") + include(ExternalProject) + enable_language(C) + enable_language(Fortran) + ExternalProject_Add(kim_build + URL https://s3.openkim.org/kim-api/kim-api-2.1.3.txz + URL_MD5 6ee829a1bbba5f8b9874c88c4c4ebff8 + BINARY_DIR build + CMAKE_ARGS ${CMAKE_REQUEST_PIC} + -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} + -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} + -DCMAKE_Fortran_COMPILER=${CMAKE_Fortran_COMPILER} + -DCMAKE_INSTALL_LIBDIR=lib + -DCMAKE_INSTALL_PREFIX= + -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} + -DCMAKE_MAKE_PROGRAM=${CMAKE_MAKE_PROGRAM} + -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE} + BUILD_BYPRODUCTS /lib/libkim-api${CMAKE_SHARED_LIBRARY_SUFFIX} + ) + ExternalProject_get_property(kim_build INSTALL_DIR) + file(MAKE_DIRECTORY ${INSTALL_DIR}/include/kim-api) + add_library(LAMMPS::KIM UNKNOWN IMPORTED) + set_target_properties(LAMMPS::KIM PROPERTIES + IMPORTED_LOCATION "${INSTALL_DIR}/lib/libkim-api${CMAKE_SHARED_LIBRARY_SUFFIX}" + INTERFACE_INCLUDE_DIRECTORIES "${INSTALL_DIR}/include/kim-api") + target_link_libraries(lammps PRIVATE LAMMPS::KIM) + add_dependencies(LAMMPS::KIM kim_build) +else() + find_package(PkgConfig REQUIRED) + pkg_check_modules(KIM-API REQUIRED IMPORTED_TARGET libkim-api>=2.1.3) + target_link_libraries(lammps PRIVATE PkgConfig::KIM-API) +endif() diff --git a/cmake/Modules/Packages/KSPACE.cmake b/cmake/Modules/Packages/KSPACE.cmake index 83fb963e41..dce0c15ef6 100644 --- a/cmake/Modules/Packages/KSPACE.cmake +++ b/cmake/Modules/Packages/KSPACE.cmake @@ -1,58 +1,56 @@ -if(PKG_KSPACE) - option(FFT_SINGLE "Use single precision FFTs instead of double precision FFTs" OFF) - set(FFTW "FFTW3") - if(FFT_SINGLE) - set(FFTW "FFTW3F") - target_compile_definitions(lammps PUBLIC -DFFT_SINGLE) - endif() - find_package(${FFTW} QUIET) - if(${FFTW}_FOUND) - set(FFT "FFTW3" CACHE STRING "FFT library for KSPACE package") +option(FFT_SINGLE "Use single precision FFTs instead of double precision FFTs" OFF) +set(FFTW "FFTW3") +if(FFT_SINGLE) + set(FFTW "FFTW3F") + target_compile_definitions(lammps PUBLIC -DFFT_SINGLE) +endif() +find_package(${FFTW} QUIET) +if(${FFTW}_FOUND) + set(FFT "FFTW3" CACHE STRING "FFT library for KSPACE package") +else() + set(FFT "KISS" CACHE STRING "FFT library for KSPACE package") +endif() +set(FFT_VALUES KISS FFTW3 MKL) +set_property(CACHE FFT PROPERTY STRINGS ${FFT_VALUES}) +validate_option(FFT FFT_VALUES) +string(TOUPPER ${FFT} FFT) + +if(FFT STREQUAL "FFTW3") + find_package(${FFTW} REQUIRED) + target_compile_definitions(lammps PUBLIC -DFFT_FFTW3) + target_link_libraries(lammps PUBLIC ${FFTW}::${FFTW}) + if(FFTW3_OMP_LIBRARY OR FFTW3F_OMP_LIBRARY) + option(FFT_FFTW_THREADS "Use threaded FFTW library" ON) else() - set(FFT "KISS" CACHE STRING "FFT library for KSPACE package") + option(FFT_FFTW_THREADS "Use threaded FFT library" OFF) endif() - set(FFT_VALUES KISS FFTW3 MKL) - set_property(CACHE FFT PROPERTY STRINGS ${FFT_VALUES}) - validate_option(FFT FFT_VALUES) - string(TOUPPER ${FFT} FFT) - if(FFT STREQUAL "FFTW3") - find_package(${FFTW} REQUIRED) - target_compile_definitions(lammps PUBLIC -DFFT_FFTW3) - target_link_libraries(lammps PUBLIC ${FFTW}::${FFTW}) + if(FFT_FFTW_THREADS) if(FFTW3_OMP_LIBRARY OR FFTW3F_OMP_LIBRARY) - option(FFT_FFTW_THREADS "Use threaded FFTW library" ON) - else() - option(FFT_FFTW_THREADS "Use threaded FFT library" OFF) - endif() - - if(FFT_FFTW_THREADS) - if(FFTW3_OMP_LIBRARY OR FFTW3F_OMP_LIBRARY) target_compile_definitions(lammps PRIVATE -DFFT_FFTW_THREADS) target_link_libraries(lammps PRIVATE ${FFTW}::${FFTW}_OMP) - else() - message(FATAL_ERROR "Need OpenMP enabled FFTW3 library for FFT_THREADS") - endif() - endif() - elseif(FFT STREQUAL "MKL") - find_package(MKL REQUIRED) - target_compile_definitions(lammps PRIVATE -DFFT_MKL) - option(FFT_MKL_THREADS "Use threaded MKL FFT" ON) - if(FFT_MKL_THREADS) - target_compile_definitions(lammps PRIVATE -DFFT_MKL_THREADS) + else() + message(FATAL_ERROR "Need OpenMP enabled FFTW3 library for FFT_THREADS") endif() - target_link_libraries(lammps PRIVATE MKL::MKL) - else() - # last option is KISSFFT - target_compile_definitions(lammps PRIVATE -DFFT_KISS) endif() - - set(FFT_PACK "array" CACHE STRING "Optimization for FFT") - set(FFT_PACK_VALUES array pointer memcpy) - set_property(CACHE FFT_PACK PROPERTY STRINGS ${FFT_PACK_VALUES}) - validate_option(FFT_PACK FFT_PACK_VALUES) - if(NOT FFT_PACK STREQUAL "array") - string(TOUPPER ${FFT_PACK} FFT_PACK) - target_compile_definitions(lammps PRIVATE -DFFT_PACK_${FFT_PACK}) +elseif(FFT STREQUAL "MKL") + find_package(MKL REQUIRED) + target_compile_definitions(lammps PRIVATE -DFFT_MKL) + option(FFT_MKL_THREADS "Use threaded MKL FFT" ON) + if(FFT_MKL_THREADS) + target_compile_definitions(lammps PRIVATE -DFFT_MKL_THREADS) endif() + target_link_libraries(lammps PRIVATE MKL::MKL) +else() + # last option is KISSFFT + target_compile_definitions(lammps PRIVATE -DFFT_KISS) +endif() + +set(FFT_PACK "array" CACHE STRING "Optimization for FFT") +set(FFT_PACK_VALUES array pointer memcpy) +set_property(CACHE FFT_PACK PROPERTY STRINGS ${FFT_PACK_VALUES}) +validate_option(FFT_PACK FFT_PACK_VALUES) +if(NOT FFT_PACK STREQUAL "array") + string(TOUPPER ${FFT_PACK} FFT_PACK) + target_compile_definitions(lammps PRIVATE -DFFT_PACK_${FFT_PACK}) endif() diff --git a/cmake/Modules/Packages/LATTE.cmake b/cmake/Modules/Packages/LATTE.cmake index a016b46312..7b8025bf50 100644 --- a/cmake/Modules/Packages/LATTE.cmake +++ b/cmake/Modules/Packages/LATTE.cmake @@ -1,38 +1,36 @@ -if(PKG_LATTE) - enable_language(Fortran) +enable_language(Fortran) +find_package(LATTE) +if(LATTE_FOUND) + set(DOWNLOAD_LATTE_DEFAULT OFF) +else() + set(DOWNLOAD_LATTE_DEFAULT ON) +endif() +option(DOWNLOAD_LATTE "Download the LATTE library instead of using an already installed one" ${DOWNLOAD_LATTE_DEFAULT}) +if(DOWNLOAD_LATTE) + message(STATUS "LATTE download requested - we will build our own") + include(ExternalProject) + ExternalProject_Add(latte_build + URL https://github.com/lanl/LATTE/archive/v1.2.1.tar.gz + URL_MD5 85ac414fdada2d04619c8f936344df14 + SOURCE_SUBDIR cmake + CMAKE_ARGS -DCMAKE_INSTALL_PREFIX= ${CMAKE_REQUEST_PIC} -DCMAKE_INSTALL_LIBDIR=lib + -DBLAS_LIBRARIES=${BLAS_LIBRARIES} -DLAPACK_LIBRARIES=${LAPACK_LIBRARIES} + -DCMAKE_Fortran_COMPILER=${CMAKE_Fortran_COMPILER} -DCMAKE_Fortran_FLAGS=${CMAKE_Fortran_FLAGS} + -DCMAKE_Fortran_FLAGS_${BTYPE}=${CMAKE_Fortran_FLAGS_${BTYPE}} -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} + -DCMAKE_MAKE_PROGRAM=${CMAKE_MAKE_PROGRAM} -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE} + BUILD_BYPRODUCTS /lib/liblatte.a + ) + ExternalProject_get_property(latte_build INSTALL_DIR) + add_library(LAMMPS::LATTE UNKNOWN IMPORTED) + set_target_properties(LAMMPS::LATTE PROPERTIES + IMPORTED_LOCATION "${INSTALL_DIR}/lib/liblatte.a" + INTERFACE_LINK_LIBRARIES "${LAPACK_LIBRARIES}") + target_link_libraries(lammps PRIVATE LAMMPS::LATTE) + add_dependencies(LAMMPS::LATTE latte_build) +else() find_package(LATTE) - if(LATTE_FOUND) - set(DOWNLOAD_LATTE_DEFAULT OFF) - else() - set(DOWNLOAD_LATTE_DEFAULT ON) - endif() - option(DOWNLOAD_LATTE "Download the LATTE library instead of using an already installed one" ${DOWNLOAD_LATTE_DEFAULT}) - if(DOWNLOAD_LATTE) - message(STATUS "LATTE download requested - we will build our own") - include(ExternalProject) - ExternalProject_Add(latte_build - URL https://github.com/lanl/LATTE/archive/v1.2.1.tar.gz - URL_MD5 85ac414fdada2d04619c8f936344df14 - SOURCE_SUBDIR cmake - CMAKE_ARGS -DCMAKE_INSTALL_PREFIX= ${CMAKE_REQUEST_PIC} -DCMAKE_INSTALL_LIBDIR=lib - -DBLAS_LIBRARIES=${BLAS_LIBRARIES} -DLAPACK_LIBRARIES=${LAPACK_LIBRARIES} - -DCMAKE_Fortran_COMPILER=${CMAKE_Fortran_COMPILER} -DCMAKE_Fortran_FLAGS=${CMAKE_Fortran_FLAGS} - -DCMAKE_Fortran_FLAGS_${BTYPE}=${CMAKE_Fortran_FLAGS_${BTYPE}} -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} - -DCMAKE_MAKE_PROGRAM=${CMAKE_MAKE_PROGRAM} -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE} - BUILD_BYPRODUCTS /lib/liblatte.a - ) - ExternalProject_get_property(latte_build INSTALL_DIR) - add_library(LAMMPS::LATTE UNKNOWN IMPORTED) - set_target_properties(LAMMPS::LATTE PROPERTIES - IMPORTED_LOCATION "${INSTALL_DIR}/lib/liblatte.a" - INTERFACE_LINK_LIBRARIES "${LAPACK_LIBRARIES}") - target_link_libraries(lammps PRIVATE LAMMPS::LATTE) - add_dependencies(LAMMPS::LATTE latte_build) - else() - find_package(LATTE) - if(NOT LATTE_FOUND) - message(FATAL_ERROR "LATTE library not found, help CMake to find it by setting LATTE_LIBRARY, or set DOWNLOAD_LATTE=ON to download it") - endif() - target_link_libraries(lammps PRIVATE LATTE::latte) + if(NOT LATTE_FOUND) + message(FATAL_ERROR "LATTE library not found, help CMake to find it by setting LATTE_LIBRARY, or set DOWNLOAD_LATTE=ON to download it") endif() + target_link_libraries(lammps PRIVATE LATTE::latte) endif() diff --git a/cmake/Modules/Packages/MESSAGE.cmake b/cmake/Modules/Packages/MESSAGE.cmake index 053865cc8a..231c5d8aa0 100644 --- a/cmake/Modules/Packages/MESSAGE.cmake +++ b/cmake/Modules/Packages/MESSAGE.cmake @@ -1,37 +1,35 @@ -if(PKG_MESSAGE) - if(LAMMPS_SIZES STREQUAL BIGBIG) - message(FATAL_ERROR "The MESSAGE Package is not compatible with -DLAMMPS_BIGBIG") - endif() - option(MESSAGE_ZMQ "Use ZeroMQ in MESSAGE package" OFF) - file(GLOB_RECURSE cslib_SOURCES ${LAMMPS_LIB_SOURCE_DIR}/message/cslib/[^.]*.F - ${LAMMPS_LIB_SOURCE_DIR}/message/cslib/[^.]*.c - ${LAMMPS_LIB_SOURCE_DIR}/message/cslib/[^.]*.cpp) - - add_library(cslib STATIC ${cslib_SOURCES}) - if(BUILD_LIB AND NOT BUILD_SHARED_LIBS) - install(TARGETS cslib EXPORT LAMMPS_Targets LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) - endif() - target_compile_definitions(cslib PRIVATE -DLAMMPS_${LAMMPS_SIZES}) - set_target_properties(cslib PROPERTIES OUTPUT_NAME lammps_cslib${LAMMPS_LIB_SUFFIX}) - if(BUILD_MPI) - target_compile_definitions(cslib PRIVATE -DMPI_YES) - set_target_properties(cslib PROPERTIES OUTPUT_NAME "csmpi") - target_link_libraries(cslib PRIVATE MPI::MPI_CXX) - else() - target_compile_definitions(cslib PRIVATE -DMPI_NO) - target_include_directories(cslib PRIVATE ${LAMMPS_LIB_SOURCE_DIR}/message/cslib/src/STUBS_MPI) - set_target_properties(cslib PROPERTIES OUTPUT_NAME "csnompi") - endif() +if(LAMMPS_SIZES STREQUAL BIGBIG) + message(FATAL_ERROR "The MESSAGE Package is not compatible with -DLAMMPS_BIGBIG") +endif() +option(MESSAGE_ZMQ "Use ZeroMQ in MESSAGE package" OFF) +file(GLOB_RECURSE cslib_SOURCES ${LAMMPS_LIB_SOURCE_DIR}/message/cslib/[^.]*.F + ${LAMMPS_LIB_SOURCE_DIR}/message/cslib/[^.]*.c + ${LAMMPS_LIB_SOURCE_DIR}/message/cslib/[^.]*.cpp) - if(MESSAGE_ZMQ) - target_compile_definitions(cslib PRIVATE -DZMQ_YES) - find_package(ZMQ REQUIRED) - target_link_libraries(cslib PUBLIC ZMQ::ZMQ) - else() - target_compile_definitions(cslib PRIVATE -DZMQ_NO) - target_include_directories(cslib PRIVATE ${LAMMPS_LIB_SOURCE_DIR}/message/cslib/src/STUBS_ZMQ) - endif() +add_library(cslib STATIC ${cslib_SOURCES}) +if(BUILD_LIB AND NOT BUILD_SHARED_LIBS) + install(TARGETS cslib EXPORT LAMMPS_Targets LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) +endif() +target_compile_definitions(cslib PRIVATE -DLAMMPS_${LAMMPS_SIZES}) +set_target_properties(cslib PROPERTIES OUTPUT_NAME lammps_cslib${LAMMPS_LIB_SUFFIX}) +if(BUILD_MPI) + target_compile_definitions(cslib PRIVATE -DMPI_YES) + set_target_properties(cslib PROPERTIES OUTPUT_NAME "csmpi") + target_link_libraries(cslib PRIVATE MPI::MPI_CXX) +else() + target_compile_definitions(cslib PRIVATE -DMPI_NO) + target_include_directories(cslib PRIVATE ${LAMMPS_LIB_SOURCE_DIR}/message/cslib/src/STUBS_MPI) + set_target_properties(cslib PROPERTIES OUTPUT_NAME "csnompi") +endif() - target_link_libraries(lammps PRIVATE cslib) - target_include_directories(lammps PRIVATE ${LAMMPS_LIB_SOURCE_DIR}/message/cslib/src) +if(MESSAGE_ZMQ) + target_compile_definitions(cslib PRIVATE -DZMQ_YES) + find_package(ZMQ REQUIRED) + target_link_libraries(cslib PUBLIC ZMQ::ZMQ) +else() + target_compile_definitions(cslib PRIVATE -DZMQ_NO) + target_include_directories(cslib PRIVATE ${LAMMPS_LIB_SOURCE_DIR}/message/cslib/src/STUBS_ZMQ) endif() + +target_link_libraries(lammps PRIVATE cslib) +target_include_directories(lammps PRIVATE ${LAMMPS_LIB_SOURCE_DIR}/message/cslib/src) diff --git a/cmake/Modules/Packages/MSCG.cmake b/cmake/Modules/Packages/MSCG.cmake index eed598d851..55f71588fe 100644 --- a/cmake/Modules/Packages/MSCG.cmake +++ b/cmake/Modules/Packages/MSCG.cmake @@ -1,47 +1,45 @@ -if(PKG_MSCG) - find_package(GSL REQUIRED) - find_package(MSCG QUIET) - if(MSGC_FOUND) - set(DOWNLOAD_MSCG_DEFAULT OFF) - else() - set(DOWNLOAD_MSCG_DEFAULT ON) - endif() - option(DOWNLOAD_MSCG "Download MSCG library instead of using an already installed one)" ${DOWNLOAD_MSCG_DEFAULT}) - if(DOWNLOAD_MSCG) - include(ExternalProject) - ExternalProject_Add(mscg_build - URL https://github.com/uchicago-voth/MSCG-release/archive/1.7.3.1.tar.gz - URL_MD5 8c45e269ee13f60b303edd7823866a91 - SOURCE_SUBDIR src/CMake - CMAKE_ARGS ${CMAKE_REQUEST_PIC} ${EXTRA_MSCG_OPTS} - -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} - -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} - -DCMAKE_Fortran_COMPILER=${CMAKE_Fortran_COMPILER} - -DBLAS_LIBRARIES=${BLAS_LIBRARIES} -DLAPACK_LIBRARIES=${LAPACK_LIBRARIES} - -DCMAKE_INSTALL_PREFIX= - -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} - -DCMAKE_MAKE_PROGRAM=${CMAKE_MAKE_PROGRAM} - -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE} - BUILD_COMMAND ${CMAKE_COMMAND} --build . --target mscg - INSTALL_COMMAND "" - BUILD_BYPRODUCTS /libmscg.a - ) - ExternalProject_get_property(mscg_build BINARY_DIR) - ExternalProject_get_property(mscg_build SOURCE_DIR) - file(MAKE_DIRECTORY ${SOURCE_DIR}/src) - add_library(LAMMPS::MSCG UNKNOWN IMPORTED) - set_target_properties(LAMMPS::MSCG PROPERTIES - IMPORTED_LOCATION "${BINARY_DIR}/libmscg.a" - INTERFACE_INCLUDE_DIRECTORIES "${SOURCE_DIR}/src" - INTERFACE_LINK_LIBRARIES "${LAPACK_LIBRARIES}") - target_link_libraries(lammps PRIVATE LAMMPS::MSCG) - add_dependencies(LAMMPS::MSCG mscg_build) - else() - find_package(MSCG) - if(NOT MSCG_FOUND) - message(FATAL_ERROR "MSCG not found, help CMake to find it by setting MSCG_LIBRARY and MSCG_INCLUDE_DIRS, or set DOWNLOAD_MSCG=ON to download it") - endif() - target_link_libraries(lammps PRIVATE MSCG::MSCG) +find_package(GSL REQUIRED) +find_package(MSCG QUIET) +if(MSGC_FOUND) + set(DOWNLOAD_MSCG_DEFAULT OFF) +else() + set(DOWNLOAD_MSCG_DEFAULT ON) +endif() +option(DOWNLOAD_MSCG "Download MSCG library instead of using an already installed one)" ${DOWNLOAD_MSCG_DEFAULT}) +if(DOWNLOAD_MSCG) + include(ExternalProject) + ExternalProject_Add(mscg_build + URL https://github.com/uchicago-voth/MSCG-release/archive/1.7.3.1.tar.gz + URL_MD5 8c45e269ee13f60b303edd7823866a91 + SOURCE_SUBDIR src/CMake + CMAKE_ARGS ${CMAKE_REQUEST_PIC} ${EXTRA_MSCG_OPTS} + -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} + -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} + -DCMAKE_Fortran_COMPILER=${CMAKE_Fortran_COMPILER} + -DBLAS_LIBRARIES=${BLAS_LIBRARIES} -DLAPACK_LIBRARIES=${LAPACK_LIBRARIES} + -DCMAKE_INSTALL_PREFIX= + -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} + -DCMAKE_MAKE_PROGRAM=${CMAKE_MAKE_PROGRAM} + -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE} + BUILD_COMMAND ${CMAKE_COMMAND} --build . --target mscg + INSTALL_COMMAND "" + BUILD_BYPRODUCTS /libmscg.a + ) + ExternalProject_get_property(mscg_build BINARY_DIR) + ExternalProject_get_property(mscg_build SOURCE_DIR) + file(MAKE_DIRECTORY ${SOURCE_DIR}/src) + add_library(LAMMPS::MSCG UNKNOWN IMPORTED) + set_target_properties(LAMMPS::MSCG PROPERTIES + IMPORTED_LOCATION "${BINARY_DIR}/libmscg.a" + INTERFACE_INCLUDE_DIRECTORIES "${SOURCE_DIR}/src" + INTERFACE_LINK_LIBRARIES "${LAPACK_LIBRARIES}") + target_link_libraries(lammps PRIVATE LAMMPS::MSCG) + add_dependencies(LAMMPS::MSCG mscg_build) +else() + find_package(MSCG) + if(NOT MSCG_FOUND) + message(FATAL_ERROR "MSCG not found, help CMake to find it by setting MSCG_LIBRARY and MSCG_INCLUDE_DIRS, or set DOWNLOAD_MSCG=ON to download it") endif() - target_link_libraries(lammps PRIVATE GSL::gsl ${LAPACK_LIBRARIES}) + target_link_libraries(lammps PRIVATE MSCG::MSCG) endif() +target_link_libraries(lammps PRIVATE GSL::gsl ${LAPACK_LIBRARIES}) diff --git a/cmake/Modules/Packages/PYTHON.cmake b/cmake/Modules/Packages/PYTHON.cmake index ba5ecff6bb..a577f824fe 100644 --- a/cmake/Modules/Packages/PYTHON.cmake +++ b/cmake/Modules/Packages/PYTHON.cmake @@ -1,11 +1,9 @@ -if(PKG_PYTHON) - if(CMAKE_VERSION VERSION_LESS 3.12) - find_package(PythonLibs REQUIRED) # Deprecated since version 3.12 - target_include_directories(lammps PRIVATE ${PYTHON_INCLUDE_DIR}) - target_link_libraries(lammps PRIVATE ${PYTHON_LIBRARY}) - else() - find_package(Python REQUIRED COMPONENTS Development) - target_link_libraries(lammps PRIVATE Python::Python) - endif() - target_compile_definitions(lammps PRIVATE -DLMP_PYTHON) +if(CMAKE_VERSION VERSION_LESS 3.12) + find_package(PythonLibs REQUIRED) # Deprecated since version 3.12 + target_include_directories(lammps PRIVATE ${PYTHON_INCLUDE_DIR}) + target_link_libraries(lammps PRIVATE ${PYTHON_LIBRARY}) +else() + find_package(Python REQUIRED COMPONENTS Development) + target_link_libraries(lammps PRIVATE Python::Python) endif() +target_compile_definitions(lammps PRIVATE -DLMP_PYTHON) diff --git a/cmake/Modules/Packages/USER-COLVARS.cmake b/cmake/Modules/Packages/USER-COLVARS.cmake index a0138df6ee..18931ae60b 100644 --- a/cmake/Modules/Packages/USER-COLVARS.cmake +++ b/cmake/Modules/Packages/USER-COLVARS.cmake @@ -1,36 +1,32 @@ -if(PKG_USER-COLVARS) +set(COLVARS_SOURCE_DIR ${LAMMPS_LIB_SOURCE_DIR}/colvars) - set(COLVARS_SOURCE_DIR ${LAMMPS_LIB_SOURCE_DIR}/colvars) +file(GLOB COLVARS_SOURCES ${COLVARS_SOURCE_DIR}/[^.]*.cpp) - file(GLOB COLVARS_SOURCES ${COLVARS_SOURCE_DIR}/[^.]*.cpp) +# Build Lepton by default +option(COLVARS_LEPTON "Build and link the Lepton library" ON) - # Build Lepton by default - option(COLVARS_LEPTON "Build and link the Lepton library" ON) - - if(COLVARS_LEPTON) - set(LEPTON_DIR ${LAMMPS_LIB_SOURCE_DIR}/colvars/lepton) - file(GLOB LEPTON_SOURCES ${LEPTON_DIR}/src/[^.]*.cpp) - add_library(lepton STATIC ${LEPTON_SOURCES}) - if(BUILD_LIB AND NOT BUILD_SHARED_LIBS) - install(TARGETS lepton EXPORT LAMMPS_Targets LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) - endif() - set_target_properties(lepton PROPERTIES OUTPUT_NAME lammps_lepton${LAMMPS_LIB_SUFFIX}) - target_include_directories(lepton PRIVATE ${LEPTON_DIR}/include) - endif() - - add_library(colvars STATIC ${COLVARS_SOURCES}) +if(COLVARS_LEPTON) + set(LEPTON_DIR ${LAMMPS_LIB_SOURCE_DIR}/colvars/lepton) + file(GLOB LEPTON_SOURCES ${LEPTON_DIR}/src/[^.]*.cpp) + add_library(lepton STATIC ${LEPTON_SOURCES}) if(BUILD_LIB AND NOT BUILD_SHARED_LIBS) - install(TARGETS colvars EXPORT LAMMPS_Targets LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) + install(TARGETS lepton EXPORT LAMMPS_Targets LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) endif() - target_compile_definitions(colvars PRIVATE -DLAMMPS_${LAMMPS_SIZES}) - set_target_properties(colvars PROPERTIES OUTPUT_NAME lammps_colvars${LAMMPS_LIB_SUFFIX}) - target_include_directories(colvars PUBLIC ${LAMMPS_LIB_SOURCE_DIR}/colvars) - target_link_libraries(lammps PRIVATE colvars) + set_target_properties(lepton PROPERTIES OUTPUT_NAME lammps_lepton${LAMMPS_LIB_SUFFIX}) + target_include_directories(lepton PRIVATE ${LEPTON_DIR}/include) +endif() - if(COLVARS_LEPTON) - target_link_libraries(lammps PRIVATE lepton) - target_compile_options(colvars PRIVATE -DLEPTON) - target_include_directories(colvars PUBLIC ${LEPTON_DIR}/include) - endif() +add_library(colvars STATIC ${COLVARS_SOURCES}) +if(BUILD_LIB AND NOT BUILD_SHARED_LIBS) + install(TARGETS colvars EXPORT LAMMPS_Targets LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) +endif() +target_compile_definitions(colvars PRIVATE -DLAMMPS_${LAMMPS_SIZES}) +set_target_properties(colvars PROPERTIES OUTPUT_NAME lammps_colvars${LAMMPS_LIB_SUFFIX}) +target_include_directories(colvars PUBLIC ${LAMMPS_LIB_SOURCE_DIR}/colvars) +target_link_libraries(lammps PRIVATE colvars) +if(COLVARS_LEPTON) + target_link_libraries(lammps PRIVATE lepton) + target_compile_options(colvars PRIVATE -DLEPTON) + target_include_directories(colvars PUBLIC ${LEPTON_DIR}/include) endif() diff --git a/cmake/Modules/Packages/USER-MOLFILE.cmake b/cmake/Modules/Packages/USER-MOLFILE.cmake index 936a214bff..1a2061918f 100644 --- a/cmake/Modules/Packages/USER-MOLFILE.cmake +++ b/cmake/Modules/Packages/USER-MOLFILE.cmake @@ -1,13 +1,11 @@ -if(PKG_USER-MOLFILE) - set(MOLFILE_INCLUDE_DIRS "${LAMMPS_LIB_SOURCE_DIR}/molfile" CACHE STRING "Path to VMD molfile plugin headers") - add_library(molfile INTERFACE) - if(BUILD_LIB AND NOT BUILD_SHARED_LIBS) - install(TARGETS molfile EXPORT LAMMPS_Targets LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) - endif() - target_include_directories(molfile INTERFACE ${MOLFILE_INCLUDE_DIRS}) - # no need to link with -ldl on windows - if(NOT ${CMAKE_SYSTEM_NAME} STREQUAL "Windows") - target_link_libraries(molfile INTERFACE ${CMAKE_DL_LIBS}) - endif() - target_link_libraries(lammps PRIVATE molfile) +set(MOLFILE_INCLUDE_DIRS "${LAMMPS_LIB_SOURCE_DIR}/molfile" CACHE STRING "Path to VMD molfile plugin headers") +add_library(molfile INTERFACE) +if(BUILD_LIB AND NOT BUILD_SHARED_LIBS) + install(TARGETS molfile EXPORT LAMMPS_Targets LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) endif() +target_include_directories(molfile INTERFACE ${MOLFILE_INCLUDE_DIRS}) +# no need to link with -ldl on windows +if(NOT ${CMAKE_SYSTEM_NAME} STREQUAL "Windows") + target_link_libraries(molfile INTERFACE ${CMAKE_DL_LIBS}) +endif() +target_link_libraries(lammps PRIVATE molfile) diff --git a/cmake/Modules/Packages/USER-NETCDF.cmake b/cmake/Modules/Packages/USER-NETCDF.cmake index a149c7357d..91186c84db 100644 --- a/cmake/Modules/Packages/USER-NETCDF.cmake +++ b/cmake/Modules/Packages/USER-NETCDF.cmake @@ -1,22 +1,20 @@ -if(PKG_USER-NETCDF) - # USER-NETCDF can use NetCDF, Parallel NetCDF (PNetCDF), or both. At least one necessary. - # NetCDF library enables dump style "netcdf", while PNetCDF enables dump style "netcdf/mpiio" - find_package(NetCDF) - if(NETCDF_FOUND) - find_package(PNetCDF) - else(NETCDF_FOUND) - find_package(PNetCDF REQUIRED) - endif(NETCDF_FOUND) +# USER-NETCDF can use NetCDF, Parallel NetCDF (PNetCDF), or both. At least one necessary. +# NetCDF library enables dump style "netcdf", while PNetCDF enables dump style "netcdf/mpiio" +find_package(NetCDF) +if(NETCDF_FOUND) + find_package(PNetCDF) +else(NETCDF_FOUND) + find_package(PNetCDF REQUIRED) +endif(NETCDF_FOUND) - if(NETCDF_FOUND) - target_link_libraries(lammps PRIVATE NetCDF::NetCDF) - target_compile_definitions(lammps PRIVATE -DLMP_HAS_NETCDF) - endif(NETCDF_FOUND) +if(NETCDF_FOUND) + target_link_libraries(lammps PRIVATE NetCDF::NetCDF) + target_compile_definitions(lammps PRIVATE -DLMP_HAS_NETCDF) +endif(NETCDF_FOUND) - if(PNETCDF_FOUND) - target_link_libraries(lammps PRIVATE PNetCDF::PNetCDF) - target_compile_definitions(lammps PRIVATE -DLMP_HAS_PNETCDF) - endif(PNETCDF_FOUND) +if(PNETCDF_FOUND) + target_link_libraries(lammps PRIVATE PNetCDF::PNetCDF) + target_compile_definitions(lammps PRIVATE -DLMP_HAS_PNETCDF) +endif(PNETCDF_FOUND) - target_compile_definitions(lammps PRIVATE -DNC_64BIT_DATA=0x0020) -endif() +target_compile_definitions(lammps PRIVATE -DNC_64BIT_DATA=0x0020) diff --git a/cmake/Modules/Packages/USER-PLUMED.cmake b/cmake/Modules/Packages/USER-PLUMED.cmake index 0a9fea7b18..d47c365637 100644 --- a/cmake/Modules/Packages/USER-PLUMED.cmake +++ b/cmake/Modules/Packages/USER-PLUMED.cmake @@ -1,102 +1,100 @@ -if(PKG_USER-PLUMED) - set(PLUMED_MODE "static" CACHE STRING "Linkage mode for Plumed2 library") - set(PLUMED_MODE_VALUES static shared runtime) - set_property(CACHE PLUMED_MODE PROPERTY STRINGS ${PLUMED_MODE_VALUES}) - validate_option(PLUMED_MODE PLUMED_MODE_VALUES) - string(TOUPPER ${PLUMED_MODE} PLUMED_MODE) +set(PLUMED_MODE "static" CACHE STRING "Linkage mode for Plumed2 library") +set(PLUMED_MODE_VALUES static shared runtime) +set_property(CACHE PLUMED_MODE PROPERTY STRINGS ${PLUMED_MODE_VALUES}) +validate_option(PLUMED_MODE PLUMED_MODE_VALUES) +string(TOUPPER ${PLUMED_MODE} PLUMED_MODE) - set(PLUMED_LINK_LIBS) - if(PLUMED_MODE STREQUAL "STATIC") - find_package(LAPACK REQUIRED) - find_package(BLAS REQUIRED) - find_package(GSL REQUIRED) - list(APPEND PLUMED_LINK_LIBS ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} GSL::gsl) - find_package(ZLIB QUIET) - if(ZLIB_FOUND) - list(APPEND PLUMED_LINK_LIBS ZLIB::ZLIB) - endif() - find_package(FFTW3 QUIET) - if(FFTW3_FOUND) - list(APPEND PLUMED_LINK_LIBS FFTW3::FFTW3) - endif() +set(PLUMED_LINK_LIBS) +if(PLUMED_MODE STREQUAL "STATIC") + find_package(LAPACK REQUIRED) + find_package(BLAS REQUIRED) + find_package(GSL REQUIRED) + list(APPEND PLUMED_LINK_LIBS ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} GSL::gsl) + find_package(ZLIB QUIET) + if(ZLIB_FOUND) + list(APPEND PLUMED_LINK_LIBS ZLIB::ZLIB) + endif() + find_package(FFTW3 QUIET) + if(FFTW3_FOUND) + list(APPEND PLUMED_LINK_LIBS FFTW3::FFTW3) endif() +endif() - find_package(PkgConfig QUIET) - set(DOWNLOAD_PLUMED_DEFAULT ON) - if(PKG_CONFIG_FOUND) - pkg_check_modules(PLUMED QUIET plumed) - if(PLUMED_FOUND) - set(DOWNLOAD_PLUMED_DEFAULT OFF) - endif() +find_package(PkgConfig QUIET) +set(DOWNLOAD_PLUMED_DEFAULT ON) +if(PKG_CONFIG_FOUND) + pkg_check_modules(PLUMED QUIET plumed) + if(PLUMED_FOUND) + set(DOWNLOAD_PLUMED_DEFAULT OFF) endif() +endif() - option(DOWNLOAD_PLUMED "Download Plumed package instead of using an already installed one" ${DOWNLOAD_PLUMED_DEFAULT}) - if(DOWNLOAD_PLUMED) - if(BUILD_MPI) - set(PLUMED_CONFIG_MPI "--enable-mpi") - set(PLUMED_CONFIG_CC ${CMAKE_MPI_C_COMPILER}) - set(PLUMED_CONFIG_CXX ${CMAKE_MPI_CXX_COMPILER}) - else() - set(PLUMED_CONFIG_MPI "--disable-mpi") - set(PLUMED_CONFIG_CC ${CMAKE_C_COMPILER}) - set(PLUMED_CONFIG_CXX ${CMAKE_CXX_COMPILER}) - endif() - if(BUILD_OMP) - set(PLUMED_CONFIG_OMP "--enable-openmp") - else() - set(PLUMED_CONFIG_OMP "--disable-openmp") - endif() - message(STATUS "PLUMED download requested - we will build our own") - if(PLUMED_MODE STREQUAL "STATIC") - set(PLUMED_BUILD_BYPRODUCTS "/lib/libplumed.a") - elseif(PLUMED_MODE STREQUAL "SHARED") - set(PLUMED_BUILD_BYPRODUCTS "/lib/libplumed${CMAKE_SHARED_LIBRARY_SUFFIX};/lib/libplumedKernel${CMAKE_SHARED_LIBRARY_SUFFIX}") - elseif(PLUMED_MODE STREQUAL "RUNTIME") - set(PLUMED_BUILD_BYPRODUCTS "/lib/libplumedWrapper.a") - endif() - include(ExternalProject) - ExternalProject_Add(plumed_build - URL https://github.com/plumed/plumed2/releases/download/v2.6.0/plumed-src-2.6.0.tgz - URL_MD5 204d2edae58d9b10ba3ad460cad64191 - BUILD_IN_SOURCE 1 - CONFIGURE_COMMAND /configure --prefix= - ${CONFIGURE_REQUEST_PIC} - --enable-modules=all - ${PLUMED_CONFIG_MPI} - ${PLUMED_CONFIG_OMP} - CXX=${PLUMED_CONFIG_CXX} - CC=${PLUMED_CONFIG_CC} - BUILD_BYPRODUCTS ${PLUMED_BUILD_BYPRODUCTS} - ) - ExternalProject_get_property(plumed_build INSTALL_DIR) - add_library(LAMMPS::PLUMED UNKNOWN IMPORTED) - add_dependencies(LAMMPS::PLUMED plumed_build) - if(PLUMED_MODE STREQUAL "STATIC") - set_target_properties(LAMMPS::PLUMED PROPERTIES INTERFACE_COMPILE_DEFINITIONS "__PLUMED_WRAPPER_CXX=1") - set_target_properties(LAMMPS::PLUMED PROPERTIES IMPORTED_LOCATION ${INSTALL_DIR}/lib/libplumed.a INTERFACE_LINK_LIBRARIES "${PLUMED_LINK_LIBS};${CMAKE_DL_LIBS}") - elseif(PLUMED_MODE STREQUAL "SHARED") - set_target_properties(LAMMPS::PLUMED PROPERTIES IMPORTED_LOCATION ${INSTALL_DIR}/lib/libplumed${CMAKE_SHARED_LIBRARY_SUFFIX} INTERFACE_LINK_LIBRARIES "${INSTALL_DIR}/lib/libplumedKernel${CMAKE_SHARED_LIBRARY_SUFFIX};${CMAKE_DL_LIBS}") - elseif(PLUMED_MODE STREQUAL "RUNTIME") - set_target_properties(LAMMPS::PLUMED PROPERTIES INTERFACE_COMPILE_DEFINITIONS "__PLUMED_HAS_DLOPEN=1;__PLUMED_DEFAULT_KERNEL=${INSTALL_DIR}/lib/libplumedKernel${CMAKE_SHARED_LIBRARY_SUFFIX}") - set_target_properties(LAMMPS::PLUMED PROPERTIES IMPORTED_LOCATION ${INSTALL_DIR}/lib/libplumedWrapper.a INTERFACE_LINK_LIBRARIES "${CMAKE_DL_LIBS}") - endif() - set_target_properties(LAMMPS::PLUMED PROPERTIES INTERFACE_INCLUDE_DIRECTORIES ${INSTALL_DIR}/include) - file(MAKE_DIRECTORY ${INSTALL_DIR}/include) +option(DOWNLOAD_PLUMED "Download Plumed package instead of using an already installed one" ${DOWNLOAD_PLUMED_DEFAULT}) +if(DOWNLOAD_PLUMED) + if(BUILD_MPI) + set(PLUMED_CONFIG_MPI "--enable-mpi") + set(PLUMED_CONFIG_CC ${CMAKE_MPI_C_COMPILER}) + set(PLUMED_CONFIG_CXX ${CMAKE_MPI_CXX_COMPILER}) + else() + set(PLUMED_CONFIG_MPI "--disable-mpi") + set(PLUMED_CONFIG_CC ${CMAKE_C_COMPILER}) + set(PLUMED_CONFIG_CXX ${CMAKE_CXX_COMPILER}) + endif() + if(BUILD_OMP) + set(PLUMED_CONFIG_OMP "--enable-openmp") else() - find_package(PkgConfig REQUIRED) - pkg_check_modules(PLUMED REQUIRED plumed) - add_library(LAMMPS::PLUMED INTERFACE IMPORTED) - if(PLUMED_MODE STREQUAL "STATIC") - set_target_properties(LAMMPS::PLUMED PROPERTIES INTERFACE_COMPILE_DEFINITIONS "__PLUMED_WRAPPER_CXX=1") - include(${PLUMED_LIBDIR}/plumed/src/lib/Plumed.cmake.static) - elseif(PLUMED_MODE STREQUAL "SHARED") - include(${PLUMED_LIBDIR}/plumed/src/lib/Plumed.cmake.shared) - elseif(PLUMED_MODE STREQUAL "RUNTIME") - set_target_properties(LAMMPS::PLUMED PROPERTIES INTERFACE_COMPILE_DEFINITIONS "__PLUMED_HAS_DLOPEN=1;__PLUMED_DEFAULT_KERNEL=${PLUMED_LIBDIR}/libplumedKernel${CMAKE_SHARED_LIBRARY_SUFFIX}") - include(${PLUMED_LIBDIR}/plumed/src/lib/Plumed.cmake.runtime) - endif() - set_target_properties(LAMMPS::PLUMED PROPERTIES INTERFACE_LINK_LIBRARIES "${PLUMED_LOAD}") - set_target_properties(LAMMPS::PLUMED PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${PLUMED_INCLUDE_DIRS}") + set(PLUMED_CONFIG_OMP "--disable-openmp") + endif() + message(STATUS "PLUMED download requested - we will build our own") + if(PLUMED_MODE STREQUAL "STATIC") + set(PLUMED_BUILD_BYPRODUCTS "/lib/libplumed.a") + elseif(PLUMED_MODE STREQUAL "SHARED") + set(PLUMED_BUILD_BYPRODUCTS "/lib/libplumed${CMAKE_SHARED_LIBRARY_SUFFIX};/lib/libplumedKernel${CMAKE_SHARED_LIBRARY_SUFFIX}") + elseif(PLUMED_MODE STREQUAL "RUNTIME") + set(PLUMED_BUILD_BYPRODUCTS "/lib/libplumedWrapper.a") + endif() + include(ExternalProject) + ExternalProject_Add(plumed_build + URL https://github.com/plumed/plumed2/releases/download/v2.6.0/plumed-src-2.6.0.tgz + URL_MD5 204d2edae58d9b10ba3ad460cad64191 + BUILD_IN_SOURCE 1 + CONFIGURE_COMMAND /configure --prefix= + ${CONFIGURE_REQUEST_PIC} + --enable-modules=all + ${PLUMED_CONFIG_MPI} + ${PLUMED_CONFIG_OMP} + CXX=${PLUMED_CONFIG_CXX} + CC=${PLUMED_CONFIG_CC} + BUILD_BYPRODUCTS ${PLUMED_BUILD_BYPRODUCTS} + ) + ExternalProject_get_property(plumed_build INSTALL_DIR) + add_library(LAMMPS::PLUMED UNKNOWN IMPORTED) + add_dependencies(LAMMPS::PLUMED plumed_build) + if(PLUMED_MODE STREQUAL "STATIC") + set_target_properties(LAMMPS::PLUMED PROPERTIES INTERFACE_COMPILE_DEFINITIONS "__PLUMED_WRAPPER_CXX=1") + set_target_properties(LAMMPS::PLUMED PROPERTIES IMPORTED_LOCATION ${INSTALL_DIR}/lib/libplumed.a INTERFACE_LINK_LIBRARIES "${PLUMED_LINK_LIBS};${CMAKE_DL_LIBS}") + elseif(PLUMED_MODE STREQUAL "SHARED") + set_target_properties(LAMMPS::PLUMED PROPERTIES IMPORTED_LOCATION ${INSTALL_DIR}/lib/libplumed${CMAKE_SHARED_LIBRARY_SUFFIX} INTERFACE_LINK_LIBRARIES "${INSTALL_DIR}/lib/libplumedKernel${CMAKE_SHARED_LIBRARY_SUFFIX};${CMAKE_DL_LIBS}") + elseif(PLUMED_MODE STREQUAL "RUNTIME") + set_target_properties(LAMMPS::PLUMED PROPERTIES INTERFACE_COMPILE_DEFINITIONS "__PLUMED_HAS_DLOPEN=1;__PLUMED_DEFAULT_KERNEL=${INSTALL_DIR}/lib/libplumedKernel${CMAKE_SHARED_LIBRARY_SUFFIX}") + set_target_properties(LAMMPS::PLUMED PROPERTIES IMPORTED_LOCATION ${INSTALL_DIR}/lib/libplumedWrapper.a INTERFACE_LINK_LIBRARIES "${CMAKE_DL_LIBS}") + endif() + set_target_properties(LAMMPS::PLUMED PROPERTIES INTERFACE_INCLUDE_DIRECTORIES ${INSTALL_DIR}/include) + file(MAKE_DIRECTORY ${INSTALL_DIR}/include) +else() + find_package(PkgConfig REQUIRED) + pkg_check_modules(PLUMED REQUIRED plumed) + add_library(LAMMPS::PLUMED INTERFACE IMPORTED) + if(PLUMED_MODE STREQUAL "STATIC") + set_target_properties(LAMMPS::PLUMED PROPERTIES INTERFACE_COMPILE_DEFINITIONS "__PLUMED_WRAPPER_CXX=1") + include(${PLUMED_LIBDIR}/plumed/src/lib/Plumed.cmake.static) + elseif(PLUMED_MODE STREQUAL "SHARED") + include(${PLUMED_LIBDIR}/plumed/src/lib/Plumed.cmake.shared) + elseif(PLUMED_MODE STREQUAL "RUNTIME") + set_target_properties(LAMMPS::PLUMED PROPERTIES INTERFACE_COMPILE_DEFINITIONS "__PLUMED_HAS_DLOPEN=1;__PLUMED_DEFAULT_KERNEL=${PLUMED_LIBDIR}/libplumedKernel${CMAKE_SHARED_LIBRARY_SUFFIX}") + include(${PLUMED_LIBDIR}/plumed/src/lib/Plumed.cmake.runtime) endif() - target_link_libraries(lammps PRIVATE LAMMPS::PLUMED) + set_target_properties(LAMMPS::PLUMED PROPERTIES INTERFACE_LINK_LIBRARIES "${PLUMED_LOAD}") + set_target_properties(LAMMPS::PLUMED PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${PLUMED_INCLUDE_DIRS}") endif() +target_link_libraries(lammps PRIVATE LAMMPS::PLUMED) diff --git a/cmake/Modules/Packages/USER-QMMM.cmake b/cmake/Modules/Packages/USER-QMMM.cmake index 19f5b88b74..60ca488817 100644 --- a/cmake/Modules/Packages/USER-QMMM.cmake +++ b/cmake/Modules/Packages/USER-QMMM.cmake @@ -1,17 +1,15 @@ -if(PKG_USER-QMMM) - enable_language(C) +enable_language(C) - if(NOT BUILD_LIB) - message(FATAL_ERROR "Building a QM/MM executable with USER-QMMM requires BUILD_LIB=yes") - endif() - if(NOT BUILD_SHARED_LIBS) - message(WARNING "It is recommended to use BUILD_SHARED_LIBS=yes with USER-QMMM") - endif() - add_library(qmmm STATIC ${LAMMPS_LIB_SOURCE_DIR}/qmmm/libqmmm.c) - if(BUILD_LIB AND NOT BUILD_SHARED_LIBS) - install(TARGETS qmmm EXPORT LAMMPS_Targets LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) - endif() - set_target_properties(qmmm PROPERTIES OUTPUT_NAME lammps_qmmm${LAMMPS_LIB_SUFFIX}) - target_link_libraries(lammps PRIVATE qmmm) - target_include_directories(qmmm PUBLIC ${LAMMPS_LIB_SOURCE_DIR}/qmmm) +if(NOT BUILD_LIB) + message(FATAL_ERROR "Building a QM/MM executable with USER-QMMM requires BUILD_LIB=yes") endif() +if(NOT BUILD_SHARED_LIBS) + message(WARNING "It is recommended to use BUILD_SHARED_LIBS=yes with USER-QMMM") +endif() +add_library(qmmm STATIC ${LAMMPS_LIB_SOURCE_DIR}/qmmm/libqmmm.c) +if(BUILD_LIB AND NOT BUILD_SHARED_LIBS) + install(TARGETS qmmm EXPORT LAMMPS_Targets LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) +endif() +set_target_properties(qmmm PROPERTIES OUTPUT_NAME lammps_qmmm${LAMMPS_LIB_SUFFIX}) +target_link_libraries(lammps PRIVATE qmmm) +target_include_directories(qmmm PUBLIC ${LAMMPS_LIB_SOURCE_DIR}/qmmm) diff --git a/cmake/Modules/Packages/USER-QUIP.cmake b/cmake/Modules/Packages/USER-QUIP.cmake index 4f41f9ef98..790f27def7 100644 --- a/cmake/Modules/Packages/USER-QUIP.cmake +++ b/cmake/Modules/Packages/USER-QUIP.cmake @@ -1,5 +1,3 @@ -if(PKG_USER-QUIP) - enable_language(Fortran) - find_package(QUIP REQUIRED) - target_link_libraries(lammps PRIVATE QUIP::QUIP ${LAPACK_LIBRARIES}) -endif() +enable_language(Fortran) +find_package(QUIP REQUIRED) +target_link_libraries(lammps PRIVATE QUIP::QUIP ${LAPACK_LIBRARIES}) diff --git a/cmake/Modules/Packages/USER-SCAFACOS.cmake b/cmake/Modules/Packages/USER-SCAFACOS.cmake index c8e0c41ebb..d92a83f7c1 100644 --- a/cmake/Modules/Packages/USER-SCAFACOS.cmake +++ b/cmake/Modules/Packages/USER-SCAFACOS.cmake @@ -1,61 +1,59 @@ -if(PKG_USER-SCAFACOS) - enable_language(Fortran) - enable_language(C) +enable_language(Fortran) +enable_language(C) - find_package(GSL REQUIRED) - find_package(PkgConfig QUIET) - find_package(MPI REQUIRED) - set(DOWNLOAD_SCAFACOS_DEFAULT ON) - if(PKG_CONFIG_FOUND) - pkg_check_modules(SCAFACOS QUIET scafacos) - if(SCAFACOS_FOUND) - set(DOWNLOAD_SCAFACOS_DEFAULT OFF) - endif() - endif() - option(DOWNLOAD_SCAFACOS "Download ScaFaCoS library instead of using an already installed one" ${DOWNLOAD_SCAFACOS_DEFAULT}) - if(DOWNLOAD_SCAFACOS) - message(STATUS "ScaFaCoS download requested - we will build our own") - include(ExternalProject) - ExternalProject_Add(scafacos_build - URL https://github.com/scafacos/scafacos/releases/download/v1.0.1/scafacos-1.0.1.tar.gz - URL_MD5 bd46d74e3296bd8a444d731bb10c1738 - CONFIGURE_COMMAND /configure --prefix= --disable-doc - --enable-fcs-solvers=fmm,p2nfft,direct,ewald,p3m - --with-internal-fftw --with-internal-pfft - --with-internal-pnfft ${CONFIGURE_REQUEST_PIC} - FC=${CMAKE_MPI_Fortran_COMPILER} - CXX=${CMAKE_MPI_CXX_COMPILER} - CC=${CMAKE_MPI_C_COMPILER} - F77= - BUILD_BYPRODUCTS - /lib/libfcs.a - /lib/libfcs_direct.a - /lib/libfcs_ewald.a - /lib/libfcs_fmm.a - /lib/libfcs_p2nfft.a - /lib/libfcs_p3m.a - /lib/libfcs_near.a - /lib/libfcs_gridsort.a - /lib/libfcs_resort.a - /lib/libfcs_redist.a - /lib/libfcs_common.a - /lib/libfcs_pnfft.a - /lib/libfcs_pfft.a - /lib/libfcs_fftw3_mpi.a - /lib/libfcs_fftw3.a - ) - ExternalProject_get_property(scafacos_build INSTALL_DIR) - file(MAKE_DIRECTORY ${INSTALL_DIR}/include) - add_library(LAMMPS::SCAFACOS UNKNOWN IMPORTED) - set_target_properties(LAMMPS::SCAFACOS PROPERTIES - IMPORTED_LOCATION "${INSTALL_DIR}/lib/libfcs.a" - INTERFACE_INCLUDE_DIRECTORIES "${INSTALL_DIR}/include" - INTERFACE_LINK_LIBRARIES "${INSTALL_DIR}/lib/libfcs.a;${INSTALL_DIR}/lib/libfcs_direct.a;${INSTALL_DIR}/lib/libfcs_ewald.a;${INSTALL_DIR}/lib/libfcs_fmm.a;${INSTALL_DIR}/lib/libfcs_p2nfft.a;${INSTALL_DIR}/lib/libfcs_p3m.a;GSL::gsl;${INSTALL_DIR}/lib/libfcs_near.a;${INSTALL_DIR}/lib/libfcs_gridsort.a;${INSTALL_DIR}/lib/libfcs_resort.a;${INSTALL_DIR}/lib/libfcs_redist.a;${INSTALL_DIR}/lib/libfcs_common.a;${INSTALL_DIR}/lib/libfcs_pnfft.a;${INSTALL_DIR}/lib/libfcs_pfft.a;${INSTALL_DIR}/lib/libfcs_fftw3_mpi.a;${INSTALL_DIR}/lib/libfcs_fftw3.a;MPI::MPI_Fortran;MPI::MPI_C") - target_link_libraries(lammps PRIVATE LAMMPS::SCAFACOS) - add_dependencies(LAMMPS::SCAFACOS scafacos_build) - else() - find_package(PkgConfig REQUIRED) - pkg_check_modules(SCAFACOS REQUIRED IMPORTED_TARGET scafacos) - target_link_libraries(lammps PRIVATE PkgConfig::SCAFACOS) +find_package(GSL REQUIRED) +find_package(PkgConfig QUIET) +find_package(MPI REQUIRED) +set(DOWNLOAD_SCAFACOS_DEFAULT ON) +if(PKG_CONFIG_FOUND) + pkg_check_modules(SCAFACOS QUIET scafacos) + if(SCAFACOS_FOUND) + set(DOWNLOAD_SCAFACOS_DEFAULT OFF) endif() endif() +option(DOWNLOAD_SCAFACOS "Download ScaFaCoS library instead of using an already installed one" ${DOWNLOAD_SCAFACOS_DEFAULT}) +if(DOWNLOAD_SCAFACOS) + message(STATUS "ScaFaCoS download requested - we will build our own") + include(ExternalProject) + ExternalProject_Add(scafacos_build + URL https://github.com/scafacos/scafacos/releases/download/v1.0.1/scafacos-1.0.1.tar.gz + URL_MD5 bd46d74e3296bd8a444d731bb10c1738 + CONFIGURE_COMMAND /configure --prefix= --disable-doc + --enable-fcs-solvers=fmm,p2nfft,direct,ewald,p3m + --with-internal-fftw --with-internal-pfft + --with-internal-pnfft ${CONFIGURE_REQUEST_PIC} + FC=${CMAKE_MPI_Fortran_COMPILER} + CXX=${CMAKE_MPI_CXX_COMPILER} + CC=${CMAKE_MPI_C_COMPILER} + F77= + BUILD_BYPRODUCTS + /lib/libfcs.a + /lib/libfcs_direct.a + /lib/libfcs_ewald.a + /lib/libfcs_fmm.a + /lib/libfcs_p2nfft.a + /lib/libfcs_p3m.a + /lib/libfcs_near.a + /lib/libfcs_gridsort.a + /lib/libfcs_resort.a + /lib/libfcs_redist.a + /lib/libfcs_common.a + /lib/libfcs_pnfft.a + /lib/libfcs_pfft.a + /lib/libfcs_fftw3_mpi.a + /lib/libfcs_fftw3.a + ) + ExternalProject_get_property(scafacos_build INSTALL_DIR) + file(MAKE_DIRECTORY ${INSTALL_DIR}/include) + add_library(LAMMPS::SCAFACOS UNKNOWN IMPORTED) + set_target_properties(LAMMPS::SCAFACOS PROPERTIES + IMPORTED_LOCATION "${INSTALL_DIR}/lib/libfcs.a" + INTERFACE_INCLUDE_DIRECTORIES "${INSTALL_DIR}/include" + INTERFACE_LINK_LIBRARIES "${INSTALL_DIR}/lib/libfcs.a;${INSTALL_DIR}/lib/libfcs_direct.a;${INSTALL_DIR}/lib/libfcs_ewald.a;${INSTALL_DIR}/lib/libfcs_fmm.a;${INSTALL_DIR}/lib/libfcs_p2nfft.a;${INSTALL_DIR}/lib/libfcs_p3m.a;GSL::gsl;${INSTALL_DIR}/lib/libfcs_near.a;${INSTALL_DIR}/lib/libfcs_gridsort.a;${INSTALL_DIR}/lib/libfcs_resort.a;${INSTALL_DIR}/lib/libfcs_redist.a;${INSTALL_DIR}/lib/libfcs_common.a;${INSTALL_DIR}/lib/libfcs_pnfft.a;${INSTALL_DIR}/lib/libfcs_pfft.a;${INSTALL_DIR}/lib/libfcs_fftw3_mpi.a;${INSTALL_DIR}/lib/libfcs_fftw3.a;MPI::MPI_Fortran;MPI::MPI_C") + target_link_libraries(lammps PRIVATE LAMMPS::SCAFACOS) + add_dependencies(LAMMPS::SCAFACOS scafacos_build) +else() + find_package(PkgConfig REQUIRED) + pkg_check_modules(SCAFACOS REQUIRED IMPORTED_TARGET scafacos) + target_link_libraries(lammps PRIVATE PkgConfig::SCAFACOS) +endif() diff --git a/cmake/Modules/Packages/USER-SMD.cmake b/cmake/Modules/Packages/USER-SMD.cmake index 98fad24e92..6984b24d52 100644 --- a/cmake/Modules/Packages/USER-SMD.cmake +++ b/cmake/Modules/Packages/USER-SMD.cmake @@ -1,30 +1,28 @@ -if(PKG_USER-SMD) +find_package(Eigen3 NO_MODULE) +if(EIGEN3_FOUND) + set(DOWNLOAD_EIGEN3_DEFAULT OFF) +else() + set(DOWNLOAD_EIGEN3_DEFAULT ON) +endif() +option(DOWNLOAD_EIGEN3 "Download Eigen3 instead of using an already installed one)" ${DOWNLOAD_EIGEN3_DEFAULT}) +if(DOWNLOAD_EIGEN3) + message(STATUS "Eigen3 download requested - we will build our own") + include(ExternalProject) + ExternalProject_Add(Eigen3_build + URL http://bitbucket.org/eigen/eigen/get/3.3.7.tar.gz + URL_MD5 f2a417d083fe8ca4b8ed2bc613d20f07 + CONFIGURE_COMMAND "" BUILD_COMMAND "" INSTALL_COMMAND "" + ) + ExternalProject_get_property(Eigen3_build SOURCE_DIR) + add_library(LAMMPS::EIGEN3 INTERFACE IMPORTED) + set_target_properties(LAMMPS::EIGEN3 PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${SOURCE_DIR}") + target_link_libraries(lammps PRIVATE LAMMPS::EIGEN3) + add_dependencies(LAMMPS::EIGEN3 Eigen3_build) +else() find_package(Eigen3 NO_MODULE) - if(EIGEN3_FOUND) - set(DOWNLOAD_EIGEN3_DEFAULT OFF) - else() - set(DOWNLOAD_EIGEN3_DEFAULT ON) - endif() - option(DOWNLOAD_EIGEN3 "Download Eigen3 instead of using an already installed one)" ${DOWNLOAD_EIGEN3_DEFAULT}) - if(DOWNLOAD_EIGEN3) - message(STATUS "Eigen3 download requested - we will build our own") - include(ExternalProject) - ExternalProject_Add(Eigen3_build - URL http://bitbucket.org/eigen/eigen/get/3.3.7.tar.gz - URL_MD5 f2a417d083fe8ca4b8ed2bc613d20f07 - CONFIGURE_COMMAND "" BUILD_COMMAND "" INSTALL_COMMAND "" - ) - ExternalProject_get_property(Eigen3_build SOURCE_DIR) - add_library(LAMMPS::EIGEN3 INTERFACE IMPORTED) - set_target_properties(LAMMPS::EIGEN3 PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${SOURCE_DIR}") - target_link_libraries(lammps PRIVATE LAMMPS::EIGEN3) - add_dependencies(LAMMPS::EIGEN3 Eigen3_build) - else() - find_package(Eigen3 NO_MODULE) - mark_as_advanced(Eigen3_DIR) - if(NOT EIGEN3_FOUND) - message(FATAL_ERROR "Eigen3 not found, help CMake to find it by setting EIGEN3_INCLUDE_DIR, or set DOWNLOAD_EIGEN3=ON to download it") - endif() - target_link_libraries(lammps PRIVATE Eigen3::Eigen) + mark_as_advanced(Eigen3_DIR) + if(NOT EIGEN3_FOUND) + message(FATAL_ERROR "Eigen3 not found, help CMake to find it by setting EIGEN3_INCLUDE_DIR, or set DOWNLOAD_EIGEN3=ON to download it") endif() + target_link_libraries(lammps PRIVATE Eigen3::Eigen) endif() diff --git a/cmake/Modules/Packages/USER-VTK.cmake b/cmake/Modules/Packages/USER-VTK.cmake index 61defcbf82..8c4445167a 100644 --- a/cmake/Modules/Packages/USER-VTK.cmake +++ b/cmake/Modules/Packages/USER-VTK.cmake @@ -1,6 +1,4 @@ -if(PKG_USER-VTK) - find_package(VTK REQUIRED NO_MODULE) - include(${VTK_USE_FILE}) - target_compile_definitions(lammps PRIVATE -DLAMMPS_VTK) - target_link_libraries(lammps PRIVATE ${VTK_LIBRARIES}) -endif() +find_package(VTK REQUIRED NO_MODULE) +include(${VTK_USE_FILE}) +target_compile_definitions(lammps PRIVATE -DLAMMPS_VTK) +target_link_libraries(lammps PRIVATE ${VTK_LIBRARIES}) diff --git a/cmake/Modules/Packages/VORONOI.cmake b/cmake/Modules/Packages/VORONOI.cmake index 99afbbd7b3..39d494928b 100644 --- a/cmake/Modules/Packages/VORONOI.cmake +++ b/cmake/Modules/Packages/VORONOI.cmake @@ -1,46 +1,44 @@ -if(PKG_VORONOI) - find_package(VORO) - if(VORO_FOUND) - set(DOWNLOAD_VORO_DEFAULT OFF) +find_package(VORO) +if(VORO_FOUND) + set(DOWNLOAD_VORO_DEFAULT OFF) +else() + set(DOWNLOAD_VORO_DEFAULT ON) +endif() +option(DOWNLOAD_VORO "Download and compile the Voro++ library instead of using an already installed one" ${DOWNLOAD_VORO_DEFAULT}) +if(DOWNLOAD_VORO) + message(STATUS "Voro++ download requested - we will build our own") + include(ExternalProject) + + if(BUILD_SHARED_LIBS) + set(VORO_BUILD_CFLAGS "${CMAKE_SHARED_LIBRARY_CXX_FLAGS} ${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_${BTYPE}}") else() - set(DOWNLOAD_VORO_DEFAULT ON) + set(VORO_BUILD_CFLAGS "${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_${BTYPE}}") endif() - option(DOWNLOAD_VORO "Download and compile the Voro++ library instead of using an already installed one" ${DOWNLOAD_VORO_DEFAULT}) - if(DOWNLOAD_VORO) - message(STATUS "Voro++ download requested - we will build our own") - include(ExternalProject) - - if(BUILD_SHARED_LIBS) - set(VORO_BUILD_CFLAGS "${CMAKE_SHARED_LIBRARY_CXX_FLAGS} ${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_${BTYPE}}") - else() - set(VORO_BUILD_CFLAGS "${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_${BTYPE}}") - endif() - if(APPLE) - get_filename_component(VORO_CXX ${CMAKE_CXX_COMPILER} NAME_WE) - set(VORO_BUILD_OPTIONS CXX=${VORO_CXX} CFLAGS=${VORO_BUILD_CFLAGS}) - else() - set(VORO_BUILD_OPTIONS CXX=${CMAKE_CXX_COMPILER} CFLAGS=${VORO_BUILD_CFLAGS}) - endif() - - ExternalProject_Add(voro_build - URL https://download.lammps.org/thirdparty/voro++-0.4.6.tar.gz - URL_MD5 2338b824c3b7b25590e18e8df5d68af9 - CONFIGURE_COMMAND "" BUILD_COMMAND make ${VORO_BUILD_OPTIONS} BUILD_IN_SOURCE 1 INSTALL_COMMAND "" - BUILD_BYPRODUCTS /src/libvoro++.a - ) - ExternalProject_get_property(voro_build SOURCE_DIR) - file(MAKE_DIRECTORY ${SOURCE_DIR}/src) - add_library(LAMMPS::VORO UNKNOWN IMPORTED) - set_target_properties(LAMMPS::VORO PROPERTIES - IMPORTED_LOCATION "${SOURCE_DIR}/src/libvoro++.a" - INTERFACE_INCLUDE_DIRECTORIES "${SOURCE_DIR}/src") - target_link_libraries(lammps PRIVATE LAMMPS::VORO) - add_dependencies(LAMMPS::VORO voro_build) + if(APPLE) + get_filename_component(VORO_CXX ${CMAKE_CXX_COMPILER} NAME_WE) + set(VORO_BUILD_OPTIONS CXX=${VORO_CXX} CFLAGS=${VORO_BUILD_CFLAGS}) else() - find_package(VORO) - if(NOT VORO_FOUND) - message(FATAL_ERROR "Voro++ library not found. Help CMake to find it by setting VORO_LIBRARY and VORO_INCLUDE_DIR, or set DOWNLOAD_VORO=ON to download it") - endif() - target_link_libraries(lammps PRIVATE VORO::VORO) + set(VORO_BUILD_OPTIONS CXX=${CMAKE_CXX_COMPILER} CFLAGS=${VORO_BUILD_CFLAGS}) + endif() + + ExternalProject_Add(voro_build + URL https://download.lammps.org/thirdparty/voro++-0.4.6.tar.gz + URL_MD5 2338b824c3b7b25590e18e8df5d68af9 + CONFIGURE_COMMAND "" BUILD_COMMAND make ${VORO_BUILD_OPTIONS} BUILD_IN_SOURCE 1 INSTALL_COMMAND "" + BUILD_BYPRODUCTS /src/libvoro++.a + ) + ExternalProject_get_property(voro_build SOURCE_DIR) + file(MAKE_DIRECTORY ${SOURCE_DIR}/src) + add_library(LAMMPS::VORO UNKNOWN IMPORTED) + set_target_properties(LAMMPS::VORO PROPERTIES + IMPORTED_LOCATION "${SOURCE_DIR}/src/libvoro++.a" + INTERFACE_INCLUDE_DIRECTORIES "${SOURCE_DIR}/src") + target_link_libraries(lammps PRIVATE LAMMPS::VORO) + add_dependencies(LAMMPS::VORO voro_build) +else() + find_package(VORO) + if(NOT VORO_FOUND) + message(FATAL_ERROR "Voro++ library not found. Help CMake to find it by setting VORO_LIBRARY and VORO_INCLUDE_DIR, or set DOWNLOAD_VORO=ON to download it") endif() + target_link_libraries(lammps PRIVATE VORO::VORO) endif() -- GitLab From 1988a2a72563f955793229bfb1211458df07d728 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Sun, 5 Apr 2020 14:58:54 -0600 Subject: [PATCH 183/717] cmake: make USER-H5MD.cmake consistent --- cmake/CMakeLists.txt | 4 +++- cmake/Modules/Packages/USER-H5MD.cmake | 10 ++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index 87dd9bc3ad..f7b2e2342e 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -490,7 +490,9 @@ if(PKG_USER-ATC) target_compile_definitions(atc PRIVATE -DLAMMPS_${LAMMPS_SIZES}) endif() -include(Packages/USER-H5MD) +if(PKG_USER-H5MD) + include(Packages/USER-H5MD) +endif() ###################################################################### # packages which selectively include variants based on enabled styles diff --git a/cmake/Modules/Packages/USER-H5MD.cmake b/cmake/Modules/Packages/USER-H5MD.cmake index 2893f7903c..4fcae93027 100644 --- a/cmake/Modules/Packages/USER-H5MD.cmake +++ b/cmake/Modules/Packages/USER-H5MD.cmake @@ -1,7 +1,5 @@ -if(PKG_USER-H5MD) - enable_language(C) +enable_language(C) - find_package(HDF5 REQUIRED) - target_link_libraries(h5md PRIVATE ${HDF5_LIBRARIES}) - target_include_directories(h5md PUBLIC ${HDF5_INCLUDE_DIRS}) -endif() +find_package(HDF5 REQUIRED) +target_link_libraries(h5md PRIVATE ${HDF5_LIBRARIES}) +target_include_directories(h5md PUBLIC ${HDF5_INCLUDE_DIRS}) -- GitLab From e18439f387fa98a54cd8a6e323aaea766b75c701 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Sun, 5 Apr 2020 15:03:25 -0600 Subject: [PATCH 184/717] cmake: make more include files consistent --- cmake/CMakeLists.txt | 13 +- cmake/Modules/Packages/CORESHELL.cmake | 18 +- cmake/Modules/Packages/GPU.cmake | 376 ++++++++++++------------ cmake/Modules/Packages/KOKKOS.cmake | 176 ++++++----- cmake/Modules/Packages/OPT.cmake | 18 +- cmake/Modules/Packages/QEQ.cmake | 30 +- cmake/Modules/Packages/USER-INTEL.cmake | 178 ++++++----- cmake/Modules/Packages/USER-OMP.cmake | 68 +++-- cmake/Modules/Packages/USER-SDPD.cmake | 22 +- 9 files changed, 440 insertions(+), 459 deletions(-) diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index f7b2e2342e..28c839af78 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -498,14 +498,11 @@ endif() # packages which selectively include variants based on enabled styles # e.g. accelerator packages ###################################################################### -include(Packages/CORESHELL) -include(Packages/QEQ) -include(Packages/USER-OMP) -include(Packages/USER-SDPD) -include(Packages/KOKKOS) -include(Packages/OPT) -include(Packages/USER-INTEL) -include(Packages/GPU) +foreach(PKG_WITH_INCL CORESHELL QEQ USER-OMP USER-SDPD KOKKOS OPT USER-INTEL GPU) + if(PKG_${PKG_WITH_INCL}) + include(Packages/${_PKG_INCL}) + endif() +endforeach() ###################################################################### # the windows version of LAMMPS requires a couple extra libraries diff --git a/cmake/Modules/Packages/CORESHELL.cmake b/cmake/Modules/Packages/CORESHELL.cmake index e550b1989f..4e12d2ee36 100644 --- a/cmake/Modules/Packages/CORESHELL.cmake +++ b/cmake/Modules/Packages/CORESHELL.cmake @@ -1,13 +1,11 @@ -if(PKG_CORESHELL) - set(CORESHELL_SOURCES_DIR ${LAMMPS_SOURCE_DIR}/CORESHELL) - set(CORESHELL_SOURCES) - set_property(GLOBAL PROPERTY "CORESHELL_SOURCES" "${CORESHELL_SOURCES}") + set(CORESHELL_SOURCES_DIR ${LAMMPS_SOURCE_DIR}/CORESHELL) + set(CORESHELL_SOURCES) + set_property(GLOBAL PROPERTY "CORESHELL_SOURCES" "${CORESHELL_SOURCES}") - # detects styles which have a CORESHELL version - RegisterStylesExt(${CORESHELL_SOURCES_DIR} cs CORESHELL_SOURCES) + # detects styles which have a CORESHELL version + RegisterStylesExt(${CORESHELL_SOURCES_DIR} cs CORESHELL_SOURCES) - get_property(CORESHELL_SOURCES GLOBAL PROPERTY CORESHELL_SOURCES) + get_property(CORESHELL_SOURCES GLOBAL PROPERTY CORESHELL_SOURCES) - target_sources(lammps PRIVATE ${CORESHELL_SOURCES}) - target_include_directories(lammps PRIVATE ${CORESHELL_SOURCES_DIR}) -endif() + target_sources(lammps PRIVATE ${CORESHELL_SOURCES}) + target_include_directories(lammps PRIVATE ${CORESHELL_SOURCES_DIR}) diff --git a/cmake/Modules/Packages/GPU.cmake b/cmake/Modules/Packages/GPU.cmake index c288eb0548..20ce355a54 100644 --- a/cmake/Modules/Packages/GPU.cmake +++ b/cmake/Modules/Packages/GPU.cmake @@ -1,197 +1,195 @@ -if(PKG_GPU) - set(GPU_SOURCES_DIR ${LAMMPS_SOURCE_DIR}/GPU) - set(GPU_SOURCES ${GPU_SOURCES_DIR}/gpu_extra.h - ${GPU_SOURCES_DIR}/fix_gpu.h - ${GPU_SOURCES_DIR}/fix_gpu.cpp) - - set(GPU_API "opencl" CACHE STRING "API used by GPU package") - set(GPU_API_VALUES opencl cuda) - set_property(CACHE GPU_API PROPERTY STRINGS ${GPU_API_VALUES}) - validate_option(GPU_API GPU_API_VALUES) - string(TOUPPER ${GPU_API} GPU_API) - - set(GPU_PREC "mixed" CACHE STRING "LAMMPS GPU precision") - set(GPU_PREC_VALUES double mixed single) - set_property(CACHE GPU_PREC PROPERTY STRINGS ${GPU_PREC_VALUES}) - validate_option(GPU_PREC GPU_PREC_VALUES) - string(TOUPPER ${GPU_PREC} GPU_PREC) - - if(GPU_PREC STREQUAL "DOUBLE") - set(GPU_PREC_SETTING "DOUBLE_DOUBLE") - elseif(GPU_PREC STREQUAL "MIXED") - set(GPU_PREC_SETTING "SINGLE_DOUBLE") - elseif(GPU_PREC STREQUAL "SINGLE") - set(GPU_PREC_SETTING "SINGLE_SINGLE") + set(GPU_SOURCES_DIR ${LAMMPS_SOURCE_DIR}/GPU) + set(GPU_SOURCES ${GPU_SOURCES_DIR}/gpu_extra.h + ${GPU_SOURCES_DIR}/fix_gpu.h + ${GPU_SOURCES_DIR}/fix_gpu.cpp) + + set(GPU_API "opencl" CACHE STRING "API used by GPU package") + set(GPU_API_VALUES opencl cuda) + set_property(CACHE GPU_API PROPERTY STRINGS ${GPU_API_VALUES}) + validate_option(GPU_API GPU_API_VALUES) + string(TOUPPER ${GPU_API} GPU_API) + + set(GPU_PREC "mixed" CACHE STRING "LAMMPS GPU precision") + set(GPU_PREC_VALUES double mixed single) + set_property(CACHE GPU_PREC PROPERTY STRINGS ${GPU_PREC_VALUES}) + validate_option(GPU_PREC GPU_PREC_VALUES) + string(TOUPPER ${GPU_PREC} GPU_PREC) + + if(GPU_PREC STREQUAL "DOUBLE") + set(GPU_PREC_SETTING "DOUBLE_DOUBLE") + elseif(GPU_PREC STREQUAL "MIXED") + set(GPU_PREC_SETTING "SINGLE_DOUBLE") + elseif(GPU_PREC STREQUAL "SINGLE") + set(GPU_PREC_SETTING "SINGLE_SINGLE") + endif() + + file(GLOB GPU_LIB_SOURCES ${LAMMPS_LIB_SOURCE_DIR}/gpu/[^.]*.cpp) + file(MAKE_DIRECTORY ${LAMMPS_LIB_BINARY_DIR}/gpu) + + if(GPU_API STREQUAL "CUDA") + find_package(CUDA REQUIRED) + find_program(BIN2C bin2c) + if(NOT BIN2C) + message(FATAL_ERROR "Could not find bin2c, use -DBIN2C=/path/to/bin2c to help cmake finding it.") endif() - - file(GLOB GPU_LIB_SOURCES ${LAMMPS_LIB_SOURCE_DIR}/gpu/[^.]*.cpp) - file(MAKE_DIRECTORY ${LAMMPS_LIB_BINARY_DIR}/gpu) - - if(GPU_API STREQUAL "CUDA") - find_package(CUDA REQUIRED) - find_program(BIN2C bin2c) - if(NOT BIN2C) - message(FATAL_ERROR "Could not find bin2c, use -DBIN2C=/path/to/bin2c to help cmake finding it.") - endif() - option(CUDPP_OPT "Enable CUDPP_OPT" ON) - option(CUDA_MPS_SUPPORT "Enable tweaks to support CUDA Multi-process service (MPS)" OFF) - if(CUDA_MPS_SUPPORT) - set(GPU_CUDA_MPS_FLAGS "-DCUDA_PROXY") - endif() - - set(GPU_ARCH "sm_30" CACHE STRING "LAMMPS GPU CUDA SM primary architecture (e.g. sm_60)") - - file(GLOB GPU_LIB_CU ${LAMMPS_LIB_SOURCE_DIR}/gpu/[^.]*.cu ${CMAKE_CURRENT_SOURCE_DIR}/gpu/[^.]*.cu) - list(REMOVE_ITEM GPU_LIB_CU ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_pppm.cu) - - cuda_include_directories(${LAMMPS_LIB_SOURCE_DIR}/gpu ${LAMMPS_LIB_BINARY_DIR}/gpu) - - if(CUDPP_OPT) - cuda_include_directories(${LAMMPS_LIB_SOURCE_DIR}/gpu/cudpp_mini) - file(GLOB GPU_LIB_CUDPP_SOURCES ${LAMMPS_LIB_SOURCE_DIR}/gpu/cudpp_mini/[^.]*.cpp) - file(GLOB GPU_LIB_CUDPP_CU ${LAMMPS_LIB_SOURCE_DIR}/gpu/cudpp_mini/[^.]*.cu) - endif() - - # build arch/gencode commands for nvcc based on CUDA toolkit version and use choice - # --arch translates directly instead of JIT, so this should be for the preferred or most common architecture - set(GPU_CUDA_GENCODE "-arch=${GPU_ARCH} ") - # Fermi (GPU Arch 2.x) is supported by CUDA 3.2 to CUDA 8.0 - if((CUDA_VERSION VERSION_GREATER "3.1") AND (CUDA_VERSION VERSION_LESS "9.0")) - string(APPEND GPU_CUDA_GENCODE "-gencode arch=compute_20,code=[sm_20,compute_20] ") - endif() - # Kepler (GPU Arch 3.x) is supported by CUDA 5 and later - if(CUDA_VERSION VERSION_GREATER "4.9") - string(APPEND GPU_CUDA_GENCODE "-gencode arch=compute_30,code=[sm_30,compute_30] -gencode arch=compute_35,code=[sm_35,compute_35] ") - endif() - # Maxwell (GPU Arch 5.x) is supported by CUDA 6 and later - if(CUDA_VERSION VERSION_GREATER "5.9") - string(APPEND GPU_CUDA_GENCODE "-gencode arch=compute_50,code=[sm_50,compute_50] -gencode arch=compute_52,code=[sm_52,compute_52] ") - endif() - # Pascal (GPU Arch 6.x) is supported by CUDA 8 and later - if(CUDA_VERSION VERSION_GREATER "7.9") - string(APPEND GPU_CUDA_GENCODE "-gencode arch=compute_60,code=[sm_60,compute_60] -gencode arch=compute_61,code=[sm_61,compute_61] ") - endif() - # Volta (GPU Arch 7.0) is supported by CUDA 9 and later - if(CUDA_VERSION VERSION_GREATER "8.9") - string(APPEND GPU_CUDA_GENCODE "-gencode arch=compute_70,code=[sm_70,compute_70] ") - endif() - # Turing (GPU Arch 7.5) is supported by CUDA 10 and later - if(CUDA_VERSION VERSION_GREATER "9.9") - string(APPEND GPU_CUDA_GENCODE "-gencode arch=compute_75,code=[sm_75,compute_75] ") - endif() - - cuda_compile_fatbin(GPU_GEN_OBJS ${GPU_LIB_CU} OPTIONS - -DUNIX -O3 --use_fast_math -Wno-deprecated-gpu-targets -DNV_KERNEL -DUCL_CUDADR ${GPU_CUDA_GENCODE} -D_${GPU_PREC_SETTING}) - - cuda_compile(GPU_OBJS ${GPU_LIB_CUDPP_CU} OPTIONS ${CUDA_REQUEST_PIC} - -DUNIX -O3 --use_fast_math -Wno-deprecated-gpu-targets -DUCL_CUDADR ${GPU_CUDA_GENCODE} -D_${GPU_PREC_SETTING}) - - foreach(CU_OBJ ${GPU_GEN_OBJS}) - get_filename_component(CU_NAME ${CU_OBJ} NAME_WE) - string(REGEX REPLACE "^.*_lal_" "" CU_NAME "${CU_NAME}") - add_custom_command(OUTPUT ${LAMMPS_LIB_BINARY_DIR}/gpu/${CU_NAME}_cubin.h - COMMAND ${BIN2C} -c -n ${CU_NAME} ${CU_OBJ} > ${LAMMPS_LIB_BINARY_DIR}/gpu/${CU_NAME}_cubin.h - DEPENDS ${CU_OBJ} - COMMENT "Generating ${CU_NAME}_cubin.h") - list(APPEND GPU_LIB_SOURCES ${LAMMPS_LIB_BINARY_DIR}/gpu/${CU_NAME}_cubin.h) - endforeach() - set_directory_properties(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "${LAMMPS_LIB_BINARY_DIR}/gpu/*_cubin.h") - - - add_library(gpu STATIC ${GPU_LIB_SOURCES} ${GPU_LIB_CUDPP_SOURCES} ${GPU_OBJS}) - target_link_libraries(gpu PRIVATE ${CUDA_LIBRARIES} ${CUDA_CUDA_LIBRARY}) - target_include_directories(gpu PRIVATE ${LAMMPS_LIB_BINARY_DIR}/gpu ${CUDA_INCLUDE_DIRS}) - target_compile_definitions(gpu PRIVATE -D_${GPU_PREC_SETTING} -DMPI_GERYON -DUCL_NO_EXIT ${GPU_CUDA_MPS_FLAGS}) - if(CUDPP_OPT) - target_include_directories(gpu PRIVATE ${LAMMPS_LIB_SOURCE_DIR}/gpu/cudpp_mini) - target_compile_definitions(gpu PRIVATE -DUSE_CUDPP) - endif() - - target_link_libraries(lammps PRIVATE gpu) - - add_executable(nvc_get_devices ${LAMMPS_LIB_SOURCE_DIR}/gpu/geryon/ucl_get_devices.cpp) - target_compile_definitions(nvc_get_devices PRIVATE -DUCL_CUDADR) - target_link_libraries(nvc_get_devices PRIVATE ${CUDA_LIBRARIES} ${CUDA_CUDA_LIBRARY}) - target_include_directories(nvc_get_devices PRIVATE ${CUDA_INCLUDE_DIRS}) - - - elseif(GPU_API STREQUAL "OPENCL") - find_package(OpenCL REQUIRED) - set(OCL_TUNE "generic" CACHE STRING "OpenCL Device Tuning") - set(OCL_TUNE_VALUES intel fermi kepler cypress generic) - set_property(CACHE OCL_TUNE PROPERTY STRINGS ${OCL_TUNE_VALUES}) - validate_option(OCL_TUNE OCL_TUNE_VALUES) - string(TOUPPER ${OCL_TUNE} OCL_TUNE) - - include(OpenCLUtils) - set(OCL_COMMON_HEADERS ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_preprocessor.h ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_aux_fun1.h) - - file(GLOB GPU_LIB_CU ${LAMMPS_LIB_SOURCE_DIR}/gpu/[^.]*.cu) - list(REMOVE_ITEM GPU_LIB_CU - ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_gayberne.cu - ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_gayberne_lj.cu - ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_re_squared.cu - ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_re_squared_lj.cu - ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_tersoff.cu - ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_tersoff_zbl.cu - ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_tersoff_mod.cu - ) - - foreach(GPU_KERNEL ${GPU_LIB_CU}) - get_filename_component(basename ${GPU_KERNEL} NAME_WE) - string(SUBSTRING ${basename} 4 -1 KERNEL_NAME) - GenerateOpenCLHeader(${KERNEL_NAME} ${CMAKE_CURRENT_BINARY_DIR}/gpu/${KERNEL_NAME}_cl.h ${OCL_COMMON_HEADERS} ${GPU_KERNEL}) - list(APPEND GPU_LIB_SOURCES ${CMAKE_CURRENT_BINARY_DIR}/gpu/${KERNEL_NAME}_cl.h) - endforeach() - - GenerateOpenCLHeader(gayberne ${CMAKE_CURRENT_BINARY_DIR}/gpu/gayberne_cl.h ${OCL_COMMON_HEADERS} ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_ellipsoid_extra.h ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_gayberne.cu) - GenerateOpenCLHeader(gayberne_lj ${CMAKE_CURRENT_BINARY_DIR}/gpu/gayberne_lj_cl.h ${OCL_COMMON_HEADERS} ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_ellipsoid_extra.h ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_gayberne_lj.cu) - GenerateOpenCLHeader(re_squared ${CMAKE_CURRENT_BINARY_DIR}/gpu/re_squared_cl.h ${OCL_COMMON_HEADERS} ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_ellipsoid_extra.h ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_re_squared.cu) - GenerateOpenCLHeader(re_squared_lj ${CMAKE_CURRENT_BINARY_DIR}/gpu/re_squared_lj_cl.h ${OCL_COMMON_HEADERS} ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_ellipsoid_extra.h ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_re_squared_lj.cu) - GenerateOpenCLHeader(tersoff ${CMAKE_CURRENT_BINARY_DIR}/gpu/tersoff_cl.h ${OCL_COMMON_HEADERS} ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_tersoff_extra.h ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_tersoff.cu) - GenerateOpenCLHeader(tersoff_zbl ${CMAKE_CURRENT_BINARY_DIR}/gpu/tersoff_zbl_cl.h ${OCL_COMMON_HEADERS} ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_tersoff_zbl_extra.h ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_tersoff_zbl.cu) - GenerateOpenCLHeader(tersoff_mod ${CMAKE_CURRENT_BINARY_DIR}/gpu/tersoff_mod_cl.h ${OCL_COMMON_HEADERS} ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_tersoff_mod_extra.h ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_tersoff_mod.cu) - - list(APPEND GPU_LIB_SOURCES - ${CMAKE_CURRENT_BINARY_DIR}/gpu/gayberne_cl.h - ${CMAKE_CURRENT_BINARY_DIR}/gpu/gayberne_lj_cl.h - ${CMAKE_CURRENT_BINARY_DIR}/gpu/re_squared_cl.h - ${CMAKE_CURRENT_BINARY_DIR}/gpu/re_squared_lj_cl.h - ${CMAKE_CURRENT_BINARY_DIR}/gpu/tersoff_cl.h - ${CMAKE_CURRENT_BINARY_DIR}/gpu/tersoff_zbl_cl.h - ${CMAKE_CURRENT_BINARY_DIR}/gpu/tersoff_mod_cl.h - ) - - add_library(gpu STATIC ${GPU_LIB_SOURCES}) - target_link_libraries(gpu PRIVATE ${OpenCL_LIBRARIES}) - target_include_directories(gpu PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/gpu ${OpenCL_INCLUDE_DIRS}) - target_compile_definitions(gpu PRIVATE -D_${GPU_PREC_SETTING} -D${OCL_TUNE}_OCL -DMPI_GERYON -DUCL_NO_EXIT) - target_compile_definitions(gpu PRIVATE -DUSE_OPENCL) - - target_link_libraries(lammps PRIVATE gpu) - - add_executable(ocl_get_devices ${LAMMPS_LIB_SOURCE_DIR}/gpu/geryon/ucl_get_devices.cpp) - target_compile_definitions(ocl_get_devices PRIVATE -DUCL_OPENCL) - target_link_libraries(ocl_get_devices PRIVATE ${OpenCL_LIBRARIES}) - target_include_directories(ocl_get_devices PRIVATE ${OpenCL_INCLUDE_DIRS}) + option(CUDPP_OPT "Enable CUDPP_OPT" ON) + option(CUDA_MPS_SUPPORT "Enable tweaks to support CUDA Multi-process service (MPS)" OFF) + if(CUDA_MPS_SUPPORT) + set(GPU_CUDA_MPS_FLAGS "-DCUDA_PROXY") endif() - # GPU package - FindStyleHeaders(${GPU_SOURCES_DIR} FIX_CLASS fix_ FIX) + set(GPU_ARCH "sm_30" CACHE STRING "LAMMPS GPU CUDA SM primary architecture (e.g. sm_60)") + + file(GLOB GPU_LIB_CU ${LAMMPS_LIB_SOURCE_DIR}/gpu/[^.]*.cu ${CMAKE_CURRENT_SOURCE_DIR}/gpu/[^.]*.cu) + list(REMOVE_ITEM GPU_LIB_CU ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_pppm.cu) - set_property(GLOBAL PROPERTY "GPU_SOURCES" "${GPU_SOURCES}") + cuda_include_directories(${LAMMPS_LIB_SOURCE_DIR}/gpu ${LAMMPS_LIB_BINARY_DIR}/gpu) - # detects styles which have GPU version - RegisterStylesExt(${GPU_SOURCES_DIR} gpu GPU_SOURCES) + if(CUDPP_OPT) + cuda_include_directories(${LAMMPS_LIB_SOURCE_DIR}/gpu/cudpp_mini) + file(GLOB GPU_LIB_CUDPP_SOURCES ${LAMMPS_LIB_SOURCE_DIR}/gpu/cudpp_mini/[^.]*.cpp) + file(GLOB GPU_LIB_CUDPP_CU ${LAMMPS_LIB_SOURCE_DIR}/gpu/cudpp_mini/[^.]*.cu) + endif() - get_property(GPU_SOURCES GLOBAL PROPERTY GPU_SOURCES) + # build arch/gencode commands for nvcc based on CUDA toolkit version and use choice + # --arch translates directly instead of JIT, so this should be for the preferred or most common architecture + set(GPU_CUDA_GENCODE "-arch=${GPU_ARCH} ") + # Fermi (GPU Arch 2.x) is supported by CUDA 3.2 to CUDA 8.0 + if((CUDA_VERSION VERSION_GREATER "3.1") AND (CUDA_VERSION VERSION_LESS "9.0")) + string(APPEND GPU_CUDA_GENCODE "-gencode arch=compute_20,code=[sm_20,compute_20] ") + endif() + # Kepler (GPU Arch 3.x) is supported by CUDA 5 and later + if(CUDA_VERSION VERSION_GREATER "4.9") + string(APPEND GPU_CUDA_GENCODE "-gencode arch=compute_30,code=[sm_30,compute_30] -gencode arch=compute_35,code=[sm_35,compute_35] ") + endif() + # Maxwell (GPU Arch 5.x) is supported by CUDA 6 and later + if(CUDA_VERSION VERSION_GREATER "5.9") + string(APPEND GPU_CUDA_GENCODE "-gencode arch=compute_50,code=[sm_50,compute_50] -gencode arch=compute_52,code=[sm_52,compute_52] ") + endif() + # Pascal (GPU Arch 6.x) is supported by CUDA 8 and later + if(CUDA_VERSION VERSION_GREATER "7.9") + string(APPEND GPU_CUDA_GENCODE "-gencode arch=compute_60,code=[sm_60,compute_60] -gencode arch=compute_61,code=[sm_61,compute_61] ") + endif() + # Volta (GPU Arch 7.0) is supported by CUDA 9 and later + if(CUDA_VERSION VERSION_GREATER "8.9") + string(APPEND GPU_CUDA_GENCODE "-gencode arch=compute_70,code=[sm_70,compute_70] ") + endif() + # Turing (GPU Arch 7.5) is supported by CUDA 10 and later + if(CUDA_VERSION VERSION_GREATER "9.9") + string(APPEND GPU_CUDA_GENCODE "-gencode arch=compute_75,code=[sm_75,compute_75] ") + endif() - target_link_libraries(gpu PRIVATE MPI::MPI_CXX) - if(BUILD_LIB AND NOT BUILD_SHARED_LIBS) - install(TARGETS gpu EXPORT LAMMPS_Targets LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) + cuda_compile_fatbin(GPU_GEN_OBJS ${GPU_LIB_CU} OPTIONS + -DUNIX -O3 --use_fast_math -Wno-deprecated-gpu-targets -DNV_KERNEL -DUCL_CUDADR ${GPU_CUDA_GENCODE} -D_${GPU_PREC_SETTING}) + + cuda_compile(GPU_OBJS ${GPU_LIB_CUDPP_CU} OPTIONS ${CUDA_REQUEST_PIC} + -DUNIX -O3 --use_fast_math -Wno-deprecated-gpu-targets -DUCL_CUDADR ${GPU_CUDA_GENCODE} -D_${GPU_PREC_SETTING}) + + foreach(CU_OBJ ${GPU_GEN_OBJS}) + get_filename_component(CU_NAME ${CU_OBJ} NAME_WE) + string(REGEX REPLACE "^.*_lal_" "" CU_NAME "${CU_NAME}") + add_custom_command(OUTPUT ${LAMMPS_LIB_BINARY_DIR}/gpu/${CU_NAME}_cubin.h + COMMAND ${BIN2C} -c -n ${CU_NAME} ${CU_OBJ} > ${LAMMPS_LIB_BINARY_DIR}/gpu/${CU_NAME}_cubin.h + DEPENDS ${CU_OBJ} + COMMENT "Generating ${CU_NAME}_cubin.h") + list(APPEND GPU_LIB_SOURCES ${LAMMPS_LIB_BINARY_DIR}/gpu/${CU_NAME}_cubin.h) + endforeach() + set_directory_properties(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "${LAMMPS_LIB_BINARY_DIR}/gpu/*_cubin.h") + + + add_library(gpu STATIC ${GPU_LIB_SOURCES} ${GPU_LIB_CUDPP_SOURCES} ${GPU_OBJS}) + target_link_libraries(gpu PRIVATE ${CUDA_LIBRARIES} ${CUDA_CUDA_LIBRARY}) + target_include_directories(gpu PRIVATE ${LAMMPS_LIB_BINARY_DIR}/gpu ${CUDA_INCLUDE_DIRS}) + target_compile_definitions(gpu PRIVATE -D_${GPU_PREC_SETTING} -DMPI_GERYON -DUCL_NO_EXIT ${GPU_CUDA_MPS_FLAGS}) + if(CUDPP_OPT) + target_include_directories(gpu PRIVATE ${LAMMPS_LIB_SOURCE_DIR}/gpu/cudpp_mini) + target_compile_definitions(gpu PRIVATE -DUSE_CUDPP) endif() - target_compile_definitions(gpu PRIVATE -DLAMMPS_${LAMMPS_SIZES}) - set_target_properties(gpu PROPERTIES OUTPUT_NAME lammps_gpu${LAMMPS_LIB_SUFFIX}) - target_sources(lammps PRIVATE ${GPU_SOURCES}) - target_include_directories(lammps PRIVATE ${GPU_SOURCES_DIR}) -endif() + + target_link_libraries(lammps PRIVATE gpu) + + add_executable(nvc_get_devices ${LAMMPS_LIB_SOURCE_DIR}/gpu/geryon/ucl_get_devices.cpp) + target_compile_definitions(nvc_get_devices PRIVATE -DUCL_CUDADR) + target_link_libraries(nvc_get_devices PRIVATE ${CUDA_LIBRARIES} ${CUDA_CUDA_LIBRARY}) + target_include_directories(nvc_get_devices PRIVATE ${CUDA_INCLUDE_DIRS}) + + + elseif(GPU_API STREQUAL "OPENCL") + find_package(OpenCL REQUIRED) + set(OCL_TUNE "generic" CACHE STRING "OpenCL Device Tuning") + set(OCL_TUNE_VALUES intel fermi kepler cypress generic) + set_property(CACHE OCL_TUNE PROPERTY STRINGS ${OCL_TUNE_VALUES}) + validate_option(OCL_TUNE OCL_TUNE_VALUES) + string(TOUPPER ${OCL_TUNE} OCL_TUNE) + + include(OpenCLUtils) + set(OCL_COMMON_HEADERS ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_preprocessor.h ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_aux_fun1.h) + + file(GLOB GPU_LIB_CU ${LAMMPS_LIB_SOURCE_DIR}/gpu/[^.]*.cu) + list(REMOVE_ITEM GPU_LIB_CU + ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_gayberne.cu + ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_gayberne_lj.cu + ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_re_squared.cu + ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_re_squared_lj.cu + ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_tersoff.cu + ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_tersoff_zbl.cu + ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_tersoff_mod.cu + ) + + foreach(GPU_KERNEL ${GPU_LIB_CU}) + get_filename_component(basename ${GPU_KERNEL} NAME_WE) + string(SUBSTRING ${basename} 4 -1 KERNEL_NAME) + GenerateOpenCLHeader(${KERNEL_NAME} ${CMAKE_CURRENT_BINARY_DIR}/gpu/${KERNEL_NAME}_cl.h ${OCL_COMMON_HEADERS} ${GPU_KERNEL}) + list(APPEND GPU_LIB_SOURCES ${CMAKE_CURRENT_BINARY_DIR}/gpu/${KERNEL_NAME}_cl.h) + endforeach() + + GenerateOpenCLHeader(gayberne ${CMAKE_CURRENT_BINARY_DIR}/gpu/gayberne_cl.h ${OCL_COMMON_HEADERS} ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_ellipsoid_extra.h ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_gayberne.cu) + GenerateOpenCLHeader(gayberne_lj ${CMAKE_CURRENT_BINARY_DIR}/gpu/gayberne_lj_cl.h ${OCL_COMMON_HEADERS} ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_ellipsoid_extra.h ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_gayberne_lj.cu) + GenerateOpenCLHeader(re_squared ${CMAKE_CURRENT_BINARY_DIR}/gpu/re_squared_cl.h ${OCL_COMMON_HEADERS} ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_ellipsoid_extra.h ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_re_squared.cu) + GenerateOpenCLHeader(re_squared_lj ${CMAKE_CURRENT_BINARY_DIR}/gpu/re_squared_lj_cl.h ${OCL_COMMON_HEADERS} ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_ellipsoid_extra.h ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_re_squared_lj.cu) + GenerateOpenCLHeader(tersoff ${CMAKE_CURRENT_BINARY_DIR}/gpu/tersoff_cl.h ${OCL_COMMON_HEADERS} ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_tersoff_extra.h ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_tersoff.cu) + GenerateOpenCLHeader(tersoff_zbl ${CMAKE_CURRENT_BINARY_DIR}/gpu/tersoff_zbl_cl.h ${OCL_COMMON_HEADERS} ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_tersoff_zbl_extra.h ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_tersoff_zbl.cu) + GenerateOpenCLHeader(tersoff_mod ${CMAKE_CURRENT_BINARY_DIR}/gpu/tersoff_mod_cl.h ${OCL_COMMON_HEADERS} ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_tersoff_mod_extra.h ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_tersoff_mod.cu) + + list(APPEND GPU_LIB_SOURCES + ${CMAKE_CURRENT_BINARY_DIR}/gpu/gayberne_cl.h + ${CMAKE_CURRENT_BINARY_DIR}/gpu/gayberne_lj_cl.h + ${CMAKE_CURRENT_BINARY_DIR}/gpu/re_squared_cl.h + ${CMAKE_CURRENT_BINARY_DIR}/gpu/re_squared_lj_cl.h + ${CMAKE_CURRENT_BINARY_DIR}/gpu/tersoff_cl.h + ${CMAKE_CURRENT_BINARY_DIR}/gpu/tersoff_zbl_cl.h + ${CMAKE_CURRENT_BINARY_DIR}/gpu/tersoff_mod_cl.h + ) + + add_library(gpu STATIC ${GPU_LIB_SOURCES}) + target_link_libraries(gpu PRIVATE ${OpenCL_LIBRARIES}) + target_include_directories(gpu PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/gpu ${OpenCL_INCLUDE_DIRS}) + target_compile_definitions(gpu PRIVATE -D_${GPU_PREC_SETTING} -D${OCL_TUNE}_OCL -DMPI_GERYON -DUCL_NO_EXIT) + target_compile_definitions(gpu PRIVATE -DUSE_OPENCL) + + target_link_libraries(lammps PRIVATE gpu) + + add_executable(ocl_get_devices ${LAMMPS_LIB_SOURCE_DIR}/gpu/geryon/ucl_get_devices.cpp) + target_compile_definitions(ocl_get_devices PRIVATE -DUCL_OPENCL) + target_link_libraries(ocl_get_devices PRIVATE ${OpenCL_LIBRARIES}) + target_include_directories(ocl_get_devices PRIVATE ${OpenCL_INCLUDE_DIRS}) + endif() + + # GPU package + FindStyleHeaders(${GPU_SOURCES_DIR} FIX_CLASS fix_ FIX) + + set_property(GLOBAL PROPERTY "GPU_SOURCES" "${GPU_SOURCES}") + + # detects styles which have GPU version + RegisterStylesExt(${GPU_SOURCES_DIR} gpu GPU_SOURCES) + + get_property(GPU_SOURCES GLOBAL PROPERTY GPU_SOURCES) + + target_link_libraries(gpu PRIVATE MPI::MPI_CXX) + if(BUILD_LIB AND NOT BUILD_SHARED_LIBS) + install(TARGETS gpu EXPORT LAMMPS_Targets LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) + endif() + target_compile_definitions(gpu PRIVATE -DLAMMPS_${LAMMPS_SIZES}) + set_target_properties(gpu PROPERTIES OUTPUT_NAME lammps_gpu${LAMMPS_LIB_SUFFIX}) + target_sources(lammps PRIVATE ${GPU_SOURCES}) + target_include_directories(lammps PRIVATE ${GPU_SOURCES_DIR}) diff --git a/cmake/Modules/Packages/KOKKOS.cmake b/cmake/Modules/Packages/KOKKOS.cmake index 662f60a38d..3041433f1a 100644 --- a/cmake/Modules/Packages/KOKKOS.cmake +++ b/cmake/Modules/Packages/KOKKOS.cmake @@ -1,100 +1,98 @@ -if(PKG_KOKKOS) - option(EXTERNAL_KOKKOS "Build against external kokkos library" OFF) - option(DOWNLOAD_KOKKOS "Download the KOKKOS library instead of using the bundled one" OFF) - if(DOWNLOAD_KOKKOS) - if(CMAKE_VERSION VERSION_LESS 3.11) - message(FATAL_ERROR "Downloading kokkos currently only works with cmake-3.11 and higher") - endif() - message(STATUS "KOKKOS download requested - we will build our own") - file(DOWNLOAD https://github.com/kokkos/kokkos/compare/3.0.00...stanmoore1:lammps.diff ${CMAKE_CURRENT_BINARY_DIR}/kokkos-lammps.patch) - include(ExternalProject) - ExternalProject_Add(kokkos_build - URL https://github.com/kokkos/kokkos/archive/3.0.00.tar.gz - URL_MD5 281c7093aa3a603276e93abdf4be23b9 - PATCH_COMMAND patch -p1 < ${CMAKE_CURRENT_BINARY_DIR}/kokkos-lammps.patch - CMAKE_ARGS -DCMAKE_INSTALL_PREFIX= ${CMAKE_REQUEST_PIC} - -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DCMAKE_INSTALL_LIBDIR=lib - -DCMAKE_MAKE_PROGRAM=${CMAKE_MAKE_PROGRAM} -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE} - BUILD_BYPRODUCTS /lib/libkokkoscore.a - ) - ExternalProject_get_property(kokkos_build INSTALL_DIR) - file(MAKE_DIRECTORY ${INSTALL_DIR}/include) - add_library(LAMMPS::KOKKOS UNKNOWN IMPORTED) - set_target_properties(LAMMPS::KOKKOS PROPERTIES - IMPORTED_LOCATION "${INSTALL_DIR}/lib/libkokkoscore.a" - INTERFACE_INCLUDE_DIRECTORIES "${INSTALL_DIR}/include" - INTERFACE_LINK_LIBRARIES ${CMAKE_DL_LIBS}) - target_link_libraries(lammps PRIVATE LAMMPS::KOKKOS) - add_dependencies(LAMMPS::KOKKOS kokkos_build) - elseif(EXTERNAL_KOKKOS) - find_package(Kokkos 3) - if(NOT Kokkos_FOUND) - message(FATAL_ERROR "KOKKOS library not found, help CMake to find it by setting KOKKOS_LIBRARY, or set DOWNLOAD_KOKKOS=ON to download it") - endif() - target_link_libraries(lammps PRIVATE Kokkos::kokkos) - else() - set(LAMMPS_LIB_KOKKOS_SRC_DIR ${LAMMPS_LIB_SOURCE_DIR}/kokkos) - set(LAMMPS_LIB_KOKKOS_BIN_DIR ${LAMMPS_LIB_BINARY_DIR}/kokkos) - add_subdirectory(${LAMMPS_LIB_KOKKOS_SRC_DIR} ${LAMMPS_LIB_KOKKOS_BIN_DIR}) - - set(Kokkos_INCLUDE_DIRS ${LAMMPS_LIB_KOKKOS_SRC_DIR}/core/src - ${LAMMPS_LIB_KOKKOS_SRC_DIR}/containers/src - ${LAMMPS_LIB_KOKKOS_SRC_DIR}/algorithms/src - ${LAMMPS_LIB_KOKKOS_BIN_DIR}) - target_include_directories(lammps PRIVATE ${Kokkos_INCLUDE_DIRS}) - target_link_libraries(lammps PRIVATE kokkos) +option(EXTERNAL_KOKKOS "Build against external kokkos library" OFF) +option(DOWNLOAD_KOKKOS "Download the KOKKOS library instead of using the bundled one" OFF) +if(DOWNLOAD_KOKKOS) + if(CMAKE_VERSION VERSION_LESS 3.11) + message(FATAL_ERROR "Downloading kokkos currently only works with cmake-3.11 and higher") + endif() + message(STATUS "KOKKOS download requested - we will build our own") + file(DOWNLOAD https://github.com/kokkos/kokkos/compare/3.0.00...stanmoore1:lammps.diff ${CMAKE_CURRENT_BINARY_DIR}/kokkos-lammps.patch) + include(ExternalProject) + ExternalProject_Add(kokkos_build + URL https://github.com/kokkos/kokkos/archive/3.0.00.tar.gz + URL_MD5 281c7093aa3a603276e93abdf4be23b9 + PATCH_COMMAND patch -p1 < ${CMAKE_CURRENT_BINARY_DIR}/kokkos-lammps.patch + CMAKE_ARGS -DCMAKE_INSTALL_PREFIX= ${CMAKE_REQUEST_PIC} + -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DCMAKE_INSTALL_LIBDIR=lib + -DCMAKE_MAKE_PROGRAM=${CMAKE_MAKE_PROGRAM} -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE} + BUILD_BYPRODUCTS /lib/libkokkoscore.a + ) + ExternalProject_get_property(kokkos_build INSTALL_DIR) + file(MAKE_DIRECTORY ${INSTALL_DIR}/include) + add_library(LAMMPS::KOKKOS UNKNOWN IMPORTED) + set_target_properties(LAMMPS::KOKKOS PROPERTIES + IMPORTED_LOCATION "${INSTALL_DIR}/lib/libkokkoscore.a" + INTERFACE_INCLUDE_DIRECTORIES "${INSTALL_DIR}/include" + INTERFACE_LINK_LIBRARIES ${CMAKE_DL_LIBS}) + target_link_libraries(lammps PRIVATE LAMMPS::KOKKOS) + add_dependencies(LAMMPS::KOKKOS kokkos_build) +elseif(EXTERNAL_KOKKOS) + find_package(Kokkos 3) + if(NOT Kokkos_FOUND) + message(FATAL_ERROR "KOKKOS library not found, help CMake to find it by setting KOKKOS_LIBRARY, or set DOWNLOAD_KOKKOS=ON to download it") endif() - target_compile_definitions(lammps PRIVATE -DLMP_KOKKOS) + target_link_libraries(lammps PRIVATE Kokkos::kokkos) +else() + set(LAMMPS_LIB_KOKKOS_SRC_DIR ${LAMMPS_LIB_SOURCE_DIR}/kokkos) + set(LAMMPS_LIB_KOKKOS_BIN_DIR ${LAMMPS_LIB_BINARY_DIR}/kokkos) + add_subdirectory(${LAMMPS_LIB_KOKKOS_SRC_DIR} ${LAMMPS_LIB_KOKKOS_BIN_DIR}) - set(KOKKOS_PKG_SOURCES_DIR ${LAMMPS_SOURCE_DIR}/KOKKOS) - set(KOKKOS_PKG_SOURCES ${KOKKOS_PKG_SOURCES_DIR}/kokkos.cpp - ${KOKKOS_PKG_SOURCES_DIR}/atom_kokkos.cpp - ${KOKKOS_PKG_SOURCES_DIR}/atom_vec_kokkos.cpp - ${KOKKOS_PKG_SOURCES_DIR}/comm_kokkos.cpp - ${KOKKOS_PKG_SOURCES_DIR}/comm_tiled_kokkos.cpp - ${KOKKOS_PKG_SOURCES_DIR}/min_kokkos.cpp - ${KOKKOS_PKG_SOURCES_DIR}/min_linesearch_kokkos.cpp - ${KOKKOS_PKG_SOURCES_DIR}/neighbor_kokkos.cpp - ${KOKKOS_PKG_SOURCES_DIR}/neigh_list_kokkos.cpp - ${KOKKOS_PKG_SOURCES_DIR}/neigh_bond_kokkos.cpp - ${KOKKOS_PKG_SOURCES_DIR}/fix_nh_kokkos.cpp - ${KOKKOS_PKG_SOURCES_DIR}/nbin_kokkos.cpp - ${KOKKOS_PKG_SOURCES_DIR}/npair_kokkos.cpp - ${KOKKOS_PKG_SOURCES_DIR}/npair_halffull_kokkos.cpp - ${KOKKOS_PKG_SOURCES_DIR}/domain_kokkos.cpp - ${KOKKOS_PKG_SOURCES_DIR}/modify_kokkos.cpp) + set(Kokkos_INCLUDE_DIRS ${LAMMPS_LIB_KOKKOS_SRC_DIR}/core/src + ${LAMMPS_LIB_KOKKOS_SRC_DIR}/containers/src + ${LAMMPS_LIB_KOKKOS_SRC_DIR}/algorithms/src + ${LAMMPS_LIB_KOKKOS_BIN_DIR}) + target_include_directories(lammps PRIVATE ${Kokkos_INCLUDE_DIRS}) + target_link_libraries(lammps PRIVATE kokkos) +endif() +target_compile_definitions(lammps PRIVATE -DLMP_KOKKOS) + +set(KOKKOS_PKG_SOURCES_DIR ${LAMMPS_SOURCE_DIR}/KOKKOS) +set(KOKKOS_PKG_SOURCES ${KOKKOS_PKG_SOURCES_DIR}/kokkos.cpp + ${KOKKOS_PKG_SOURCES_DIR}/atom_kokkos.cpp + ${KOKKOS_PKG_SOURCES_DIR}/atom_vec_kokkos.cpp + ${KOKKOS_PKG_SOURCES_DIR}/comm_kokkos.cpp + ${KOKKOS_PKG_SOURCES_DIR}/comm_tiled_kokkos.cpp + ${KOKKOS_PKG_SOURCES_DIR}/min_kokkos.cpp + ${KOKKOS_PKG_SOURCES_DIR}/min_linesearch_kokkos.cpp + ${KOKKOS_PKG_SOURCES_DIR}/neighbor_kokkos.cpp + ${KOKKOS_PKG_SOURCES_DIR}/neigh_list_kokkos.cpp + ${KOKKOS_PKG_SOURCES_DIR}/neigh_bond_kokkos.cpp + ${KOKKOS_PKG_SOURCES_DIR}/fix_nh_kokkos.cpp + ${KOKKOS_PKG_SOURCES_DIR}/nbin_kokkos.cpp + ${KOKKOS_PKG_SOURCES_DIR}/npair_kokkos.cpp + ${KOKKOS_PKG_SOURCES_DIR}/npair_halffull_kokkos.cpp + ${KOKKOS_PKG_SOURCES_DIR}/domain_kokkos.cpp + ${KOKKOS_PKG_SOURCES_DIR}/modify_kokkos.cpp) - if(PKG_KSPACE) - list(APPEND KOKKOS_PKG_SOURCES ${KOKKOS_PKG_SOURCES_DIR}/fft3d_kokkos.cpp - ${KOKKOS_PKG_SOURCES_DIR}/gridcomm_kokkos.cpp - ${KOKKOS_PKG_SOURCES_DIR}/remap_kokkos.cpp) - if(KOKKOS_ENABLE_CUDA) - if(NOT ${FFT} STREQUAL "KISS") - target_compile_definitions(lammps PRIVATE -DFFT_CUFFT) - target_link_libraries(lammps PRIVATE cufft) - endif() +if(PKG_KSPACE) + list(APPEND KOKKOS_PKG_SOURCES ${KOKKOS_PKG_SOURCES_DIR}/fft3d_kokkos.cpp + ${KOKKOS_PKG_SOURCES_DIR}/gridcomm_kokkos.cpp + ${KOKKOS_PKG_SOURCES_DIR}/remap_kokkos.cpp) + if(KOKKOS_ENABLE_CUDA) + if(NOT ${FFT} STREQUAL "KISS") + target_compile_definitions(lammps PRIVATE -DFFT_CUFFT) + target_link_libraries(lammps PRIVATE cufft) endif() endif() +endif() - set_property(GLOBAL PROPERTY "KOKKOS_PKG_SOURCES" "${KOKKOS_PKG_SOURCES}") - - # detects styles which have KOKKOS version - RegisterStylesExt(${KOKKOS_PKG_SOURCES_DIR} kokkos KOKKOS_PKG_SOURCES) +set_property(GLOBAL PROPERTY "KOKKOS_PKG_SOURCES" "${KOKKOS_PKG_SOURCES}") - # register kokkos-only styles - RegisterNBinStyle(${KOKKOS_PKG_SOURCES_DIR}/nbin_kokkos.h) - RegisterNPairStyle(${KOKKOS_PKG_SOURCES_DIR}/npair_kokkos.h) - RegisterNPairStyle(${KOKKOS_PKG_SOURCES_DIR}/npair_halffull_kokkos.h) +# detects styles which have KOKKOS version +RegisterStylesExt(${KOKKOS_PKG_SOURCES_DIR} kokkos KOKKOS_PKG_SOURCES) - if(PKG_USER-DPD) - get_property(KOKKOS_PKG_SOURCES GLOBAL PROPERTY KOKKOS_PKG_SOURCES) - list(APPEND KOKKOS_PKG_SOURCES ${KOKKOS_PKG_SOURCES_DIR}/npair_ssa_kokkos.cpp) - RegisterNPairStyle(${KOKKOS_PKG_SOURCES_DIR}/npair_ssa_kokkos.h) - set_property(GLOBAL PROPERTY "KOKKOS_PKG_SOURCES" "${KOKKOS_PKG_SOURCES}") - endif() +# register kokkos-only styles +RegisterNBinStyle(${KOKKOS_PKG_SOURCES_DIR}/nbin_kokkos.h) +RegisterNPairStyle(${KOKKOS_PKG_SOURCES_DIR}/npair_kokkos.h) +RegisterNPairStyle(${KOKKOS_PKG_SOURCES_DIR}/npair_halffull_kokkos.h) +if(PKG_USER-DPD) get_property(KOKKOS_PKG_SOURCES GLOBAL PROPERTY KOKKOS_PKG_SOURCES) - - target_sources(lammps PRIVATE ${KOKKOS_PKG_SOURCES}) - target_include_directories(lammps PRIVATE ${KOKKOS_PKG_SOURCES_DIR}) + list(APPEND KOKKOS_PKG_SOURCES ${KOKKOS_PKG_SOURCES_DIR}/npair_ssa_kokkos.cpp) + RegisterNPairStyle(${KOKKOS_PKG_SOURCES_DIR}/npair_ssa_kokkos.h) + set_property(GLOBAL PROPERTY "KOKKOS_PKG_SOURCES" "${KOKKOS_PKG_SOURCES}") endif() + +get_property(KOKKOS_PKG_SOURCES GLOBAL PROPERTY KOKKOS_PKG_SOURCES) + +target_sources(lammps PRIVATE ${KOKKOS_PKG_SOURCES}) +target_include_directories(lammps PRIVATE ${KOKKOS_PKG_SOURCES_DIR}) diff --git a/cmake/Modules/Packages/OPT.cmake b/cmake/Modules/Packages/OPT.cmake index 5d006bfd58..bcf572b087 100644 --- a/cmake/Modules/Packages/OPT.cmake +++ b/cmake/Modules/Packages/OPT.cmake @@ -1,13 +1,11 @@ -if(PKG_OPT) - set(OPT_SOURCES_DIR ${LAMMPS_SOURCE_DIR}/OPT) - set(OPT_SOURCES) - set_property(GLOBAL PROPERTY "OPT_SOURCES" "${OPT_SOURCES}") + set(OPT_SOURCES_DIR ${LAMMPS_SOURCE_DIR}/OPT) + set(OPT_SOURCES) + set_property(GLOBAL PROPERTY "OPT_SOURCES" "${OPT_SOURCES}") - # detects styles which have OPT version - RegisterStylesExt(${OPT_SOURCES_DIR} opt OPT_SOURCES) + # detects styles which have OPT version + RegisterStylesExt(${OPT_SOURCES_DIR} opt OPT_SOURCES) - get_property(OPT_SOURCES GLOBAL PROPERTY OPT_SOURCES) + get_property(OPT_SOURCES GLOBAL PROPERTY OPT_SOURCES) - target_sources(lammps PRIVATE ${OPT_SOURCES}) - target_include_directories(lammps PRIVATE ${OPT_SOURCES_DIR}) -endif() + target_sources(lammps PRIVATE ${OPT_SOURCES}) + target_include_directories(lammps PRIVATE ${OPT_SOURCES_DIR}) diff --git a/cmake/Modules/Packages/QEQ.cmake b/cmake/Modules/Packages/QEQ.cmake index d69fb23440..1bdaa02f43 100644 --- a/cmake/Modules/Packages/QEQ.cmake +++ b/cmake/Modules/Packages/QEQ.cmake @@ -1,20 +1,18 @@ # Fix qeq/fire requires MANYBODY (i.e. COMB and COMB3) to be installed -if(PKG_QEQ) - set(QEQ_SOURCES_DIR ${LAMMPS_SOURCE_DIR}/QEQ) - file(GLOB QEQ_HEADERS ${QEQ_SOURCES_DIR}/fix*.h) - file(GLOB QEQ_SOURCES ${QEQ_SOURCES_DIR}/fix*.cpp) +set(QEQ_SOURCES_DIR ${LAMMPS_SOURCE_DIR}/QEQ) +file(GLOB QEQ_HEADERS ${QEQ_SOURCES_DIR}/fix*.h) +file(GLOB QEQ_SOURCES ${QEQ_SOURCES_DIR}/fix*.cpp) - if(NOT PKG_MANYBODY) - list(REMOVE_ITEM QEQ_HEADERS ${QEQ_SOURCES_DIR}/fix_qeq_fire.h) - list(REMOVE_ITEM QEQ_SOURCES ${QEQ_SOURCES_DIR}/fix_qeq_fire.cpp) - endif() - set_property(GLOBAL PROPERTY "QEQ_SOURCES" "${QEQ_SOURCES}") +if(NOT PKG_MANYBODY) + list(REMOVE_ITEM QEQ_HEADERS ${QEQ_SOURCES_DIR}/fix_qeq_fire.h) + list(REMOVE_ITEM QEQ_SOURCES ${QEQ_SOURCES_DIR}/fix_qeq_fire.cpp) +endif() +set_property(GLOBAL PROPERTY "QEQ_SOURCES" "${QEQ_SOURCES}") - foreach(MY_HEADER ${QEQ_HEADERS}) - AddStyleHeader(${MY_HEADER} FIX) - endforeach() +foreach(MY_HEADER ${QEQ_HEADERS}) + AddStyleHeader(${MY_HEADER} FIX) +endforeach() - get_property(QEQ_SOURCES GLOBAL PROPERTY QEQ_SOURCES) - target_sources(lammps PRIVATE ${QEQ_SOURCES}) - target_include_directories(lammps PRIVATE ${QEQ_SOURCES_DIR}) -endif() +get_property(QEQ_SOURCES GLOBAL PROPERTY QEQ_SOURCES) +target_sources(lammps PRIVATE ${QEQ_SOURCES}) +target_include_directories(lammps PRIVATE ${QEQ_SOURCES_DIR}) diff --git a/cmake/Modules/Packages/USER-INTEL.cmake b/cmake/Modules/Packages/USER-INTEL.cmake index 3d110b8c27..0ae1ec018a 100644 --- a/cmake/Modules/Packages/USER-INTEL.cmake +++ b/cmake/Modules/Packages/USER-INTEL.cmake @@ -1,111 +1,109 @@ -if(PKG_USER-INTEL) - check_include_file_cxx(immintrin.h FOUND_IMMINTRIN) - if(NOT FOUND_IMMINTRIN) - message(FATAL_ERROR "immintrin.h header not found, Intel package won't work without it") - endif() +check_include_file_cxx(immintrin.h FOUND_IMMINTRIN) +if(NOT FOUND_IMMINTRIN) + message(FATAL_ERROR "immintrin.h header not found, Intel package won't work without it") +endif() - target_compile_definitions(lammps PRIVATE -DLMP_USER_INTEL) +target_compile_definitions(lammps PRIVATE -DLMP_USER_INTEL) - set(INTEL_ARCH "cpu" CACHE STRING "Architectures used by USER-INTEL (cpu or knl)") - set(INTEL_ARCH_VALUES cpu knl) - set_property(CACHE INTEL_ARCH PROPERTY STRINGS ${INTEL_ARCH_VALUES}) - validate_option(INTEL_ARCH INTEL_ARCH_VALUES) - string(TOUPPER ${INTEL_ARCH} INTEL_ARCH) +set(INTEL_ARCH "cpu" CACHE STRING "Architectures used by USER-INTEL (cpu or knl)") +set(INTEL_ARCH_VALUES cpu knl) +set_property(CACHE INTEL_ARCH PROPERTY STRINGS ${INTEL_ARCH_VALUES}) +validate_option(INTEL_ARCH INTEL_ARCH_VALUES) +string(TOUPPER ${INTEL_ARCH} INTEL_ARCH) - find_package(Threads QUIET) +find_package(Threads QUIET) +if(Threads_FOUND) + set(INTEL_LRT_MODE "threads" CACHE STRING "Long-range threads mode (none, threads, or c++11)") +else() + set(INTEL_LRT_MODE "none" CACHE STRING "Long-range threads mode (none, threads, or c++11)") +endif() +set(INTEL_LRT_VALUES none threads c++11) +set_property(CACHE INTEL_LRT_MODE PROPERTY STRINGS ${INTEL_LRT_VALUES}) +validate_option(INTEL_LRT_MODE INTEL_LRT_VALUES) +string(TOUPPER ${INTEL_LRT_MODE} INTEL_LRT_MODE) +if(INTEL_LRT_MODE STREQUAL "THREADS") if(Threads_FOUND) - set(INTEL_LRT_MODE "threads" CACHE STRING "Long-range threads mode (none, threads, or c++11)") + target_compile_definitions(lammps PRIVATE -DLMP_INTEL_USELRT) + target_link_libraries(lammps PRIVATE Threads::Threads) else() - set(INTEL_LRT_MODE "none" CACHE STRING "Long-range threads mode (none, threads, or c++11)") + message(FATAL_ERROR "Must have working threads library for Long-range thread support") endif() - set(INTEL_LRT_VALUES none threads c++11) - set_property(CACHE INTEL_LRT_MODE PROPERTY STRINGS ${INTEL_LRT_VALUES}) - validate_option(INTEL_LRT_MODE INTEL_LRT_VALUES) - string(TOUPPER ${INTEL_LRT_MODE} INTEL_LRT_MODE) - if(INTEL_LRT_MODE STREQUAL "THREADS") - if(Threads_FOUND) - target_compile_definitions(lammps PRIVATE -DLMP_INTEL_USELRT) - target_link_libraries(lammps PRIVATE Threads::Threads) - else() - message(FATAL_ERROR "Must have working threads library for Long-range thread support") - endif() - endif() - if(INTEL_LRT_MODE STREQUAL "C++11") - target_compile_definitions(lammps PRIVATE -DLMP_INTEL_USELRT -DLMP_INTEL_LRT11) +endif() +if(INTEL_LRT_MODE STREQUAL "C++11") + target_compile_definitions(lammps PRIVATE -DLMP_INTEL_USELRT -DLMP_INTEL_LRT11) +endif() + +if(CMAKE_CXX_COMPILER_ID STREQUAL "Intel") + if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS 16) + message(FATAL_ERROR "USER-INTEL needs at least a 2016 Intel compiler, found ${CMAKE_CXX_COMPILER_VERSION}") endif() +else() + message(WARNING "USER-INTEL gives best performance with Intel compilers") +endif() +find_package(TBB_MALLOC QUIET) +if(TBB_MALLOC_FOUND) + target_link_libraries(lammps PRIVATE TBB::TBB_MALLOC) +else() + target_compile_definitions(lammps PRIVATE -DLMP_INTEL_NO_TBB) if(CMAKE_CXX_COMPILER_ID STREQUAL "Intel") - if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS 16) - message(FATAL_ERROR "USER-INTEL needs at least a 2016 Intel compiler, found ${CMAKE_CXX_COMPILER_VERSION}") - endif() - else() - message(WARNING "USER-INTEL gives best performance with Intel compilers") + message(WARNING "USER-INTEL with Intel compilers should use TBB malloc libraries") endif() +endif() - find_package(TBB_MALLOC QUIET) - if(TBB_MALLOC_FOUND) - target_link_libraries(lammps PRIVATE TBB::TBB_MALLOC) - else() - target_compile_definitions(lammps PRIVATE -DLMP_INTEL_NO_TBB) - if(CMAKE_CXX_COMPILER_ID STREQUAL "Intel") - message(WARNING "USER-INTEL with Intel compilers should use TBB malloc libraries") - endif() - endif() +find_package(MKL QUIET) +if(MKL_FOUND) + target_compile_definitions(lammps PRIVATE -DLMP_USE_MKL_RNG) + target_link_libraries(lammps PRIVATE MKL::MKL) +else() + message(STATUS "Pair style dpd/intel will be faster with MKL libraries") +endif() - find_package(MKL QUIET) - if(MKL_FOUND) - target_compile_definitions(lammps PRIVATE -DLMP_USE_MKL_RNG) - target_link_libraries(lammps PRIVATE MKL::MKL) - else() - message(STATUS "Pair style dpd/intel will be faster with MKL libraries") - endif() +if((NOT ${CMAKE_SYSTEM_NAME} STREQUAL "Windows") AND (NOT ${LAMMPS_MEMALIGN} STREQUAL "64") AND (NOT ${LAMMPS_MEMALIGN} STREQUAL "128") AND (NOT ${LAMMPS_MEMALIGN} STREQUAL "256")) + message(FATAL_ERROR "USER-INTEL only supports memory alignment of 64, 128 or 256 on this platform") +endif() - if((NOT ${CMAKE_SYSTEM_NAME} STREQUAL "Windows") AND (NOT ${LAMMPS_MEMALIGN} STREQUAL "64") AND (NOT ${LAMMPS_MEMALIGN} STREQUAL "128") AND (NOT ${LAMMPS_MEMALIGN} STREQUAL "256")) - message(FATAL_ERROR "USER-INTEL only supports memory alignment of 64, 128 or 256 on this platform") +if(INTEL_ARCH STREQUAL "KNL") + if(NOT CMAKE_CXX_COMPILER_ID STREQUAL "Intel") + message(FATAL_ERROR "Must use Intel compiler with USER-INTEL for KNL architecture") endif() - - if(INTEL_ARCH STREQUAL "KNL") - if(NOT CMAKE_CXX_COMPILER_ID STREQUAL "Intel") - message(FATAL_ERROR "Must use Intel compiler with USER-INTEL for KNL architecture") - endif() - set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -xHost -qopenmp -qoffload") - set(MIC_OPTIONS "-qoffload-option,mic,compiler,\"-fp-model fast=2 -mGLOB_default_function_attrs=\\\"gather_scatter_loop_unroll=4\\\"\"") - target_compile_options(lammps PRIVATE -xMIC-AVX512 -qoffload -fno-alias -ansi-alias -restrict -qoverride-limits ${MIC_OPTIONS}) - target_compile_definitions(lammps PRIVATE -DLMP_INTEL_OFFLOAD) - else() - if(CMAKE_CXX_COMPILER_ID STREQUAL "Intel") - include(CheckCXXCompilerFlag) - foreach(_FLAG -O2 -fp-model fast=2 -no-prec-div -qoverride-limits -qopt-zmm-usage=high -qno-offload -fno-alias -ansi-alias -restrict) - check_cxx_compiler_flag("${_FLAG}" COMPILER_SUPPORTS${_FLAG}) - if(COMPILER_SUPPORTS${_FLAG}) + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -xHost -qopenmp -qoffload") + set(MIC_OPTIONS "-qoffload-option,mic,compiler,\"-fp-model fast=2 -mGLOB_default_function_attrs=\\\"gather_scatter_loop_unroll=4\\\"\"") + target_compile_options(lammps PRIVATE -xMIC-AVX512 -qoffload -fno-alias -ansi-alias -restrict -qoverride-limits ${MIC_OPTIONS}) + target_compile_definitions(lammps PRIVATE -DLMP_INTEL_OFFLOAD) +else() + if(CMAKE_CXX_COMPILER_ID STREQUAL "Intel") + include(CheckCXXCompilerFlag) + foreach(_FLAG -O2 -fp-model fast=2 -no-prec-div -qoverride-limits -qopt-zmm-usage=high -qno-offload -fno-alias -ansi-alias -restrict) + check_cxx_compiler_flag("${_FLAG}" COMPILER_SUPPORTS${_FLAG}) + if(COMPILER_SUPPORTS${_FLAG}) target_compile_options(lammps PRIVATE ${_FLAG}) - endif() - endforeach() - endif() + endif() + endforeach() endif() +endif() - # collect sources - set(USER-INTEL_SOURCES_DIR ${LAMMPS_SOURCE_DIR}/USER-INTEL) - set(USER-INTEL_SOURCES ${USER-INTEL_SOURCES_DIR}/fix_intel.cpp - ${USER-INTEL_SOURCES_DIR}/fix_nh_intel.cpp - ${USER-INTEL_SOURCES_DIR}/intel_buffers.cpp - ${USER-INTEL_SOURCES_DIR}/nbin_intel.cpp - ${USER-INTEL_SOURCES_DIR}/npair_intel.cpp) +# collect sources +set(USER-INTEL_SOURCES_DIR ${LAMMPS_SOURCE_DIR}/USER-INTEL) +set(USER-INTEL_SOURCES ${USER-INTEL_SOURCES_DIR}/fix_intel.cpp + ${USER-INTEL_SOURCES_DIR}/fix_nh_intel.cpp + ${USER-INTEL_SOURCES_DIR}/intel_buffers.cpp + ${USER-INTEL_SOURCES_DIR}/nbin_intel.cpp + ${USER-INTEL_SOURCES_DIR}/npair_intel.cpp) - set_property(GLOBAL PROPERTY "USER-INTEL_SOURCES" "${USER-INTEL_SOURCES}") +set_property(GLOBAL PROPERTY "USER-INTEL_SOURCES" "${USER-INTEL_SOURCES}") - # detect styles which have a USER-INTEL version - RegisterStylesExt(${USER-INTEL_SOURCES_DIR} intel USER-INTEL_SOURCES) - RegisterNBinStyle(${USER-INTEL_SOURCES_DIR}/nbin_intel.h) - RegisterNPairStyle(${USER-INTEL_SOURCES_DIR}/npair_intel.h) - RegisterFixStyle(${USER-INTEL_SOURCES_DIR}/fix_intel.h) +# detect styles which have a USER-INTEL version +RegisterStylesExt(${USER-INTEL_SOURCES_DIR} intel USER-INTEL_SOURCES) +RegisterNBinStyle(${USER-INTEL_SOURCES_DIR}/nbin_intel.h) +RegisterNPairStyle(${USER-INTEL_SOURCES_DIR}/npair_intel.h) +RegisterFixStyle(${USER-INTEL_SOURCES_DIR}/fix_intel.h) - get_property(USER-INTEL_SOURCES GLOBAL PROPERTY USER-INTEL_SOURCES) - if(PKG_KSPACE) - list(APPEND USER-INTEL_SOURCES ${USER-INTEL_SOURCES_DIR}/verlet_lrt_intel.cpp) - RegisterIntegrateStyle(${USER-INTEL_SOURCES_DIR}/verlet_lrt_intel.h) - endif() - - target_sources(lammps PRIVATE ${USER-INTEL_SOURCES}) - target_include_directories(lammps PRIVATE ${USER-INTEL_SOURCES_DIR}) +get_property(USER-INTEL_SOURCES GLOBAL PROPERTY USER-INTEL_SOURCES) +if(PKG_KSPACE) + list(APPEND USER-INTEL_SOURCES ${USER-INTEL_SOURCES_DIR}/verlet_lrt_intel.cpp) + RegisterIntegrateStyle(${USER-INTEL_SOURCES_DIR}/verlet_lrt_intel.h) endif() + +target_sources(lammps PRIVATE ${USER-INTEL_SOURCES}) +target_include_directories(lammps PRIVATE ${USER-INTEL_SOURCES_DIR}) diff --git a/cmake/Modules/Packages/USER-OMP.cmake b/cmake/Modules/Packages/USER-OMP.cmake index 42f91495d5..a1053ad355 100644 --- a/cmake/Modules/Packages/USER-OMP.cmake +++ b/cmake/Modules/Packages/USER-OMP.cmake @@ -1,42 +1,40 @@ -if(PKG_USER-OMP) - set(USER-OMP_SOURCES_DIR ${LAMMPS_SOURCE_DIR}/USER-OMP) - set(USER-OMP_SOURCES ${USER-OMP_SOURCES_DIR}/thr_data.cpp - ${USER-OMP_SOURCES_DIR}/thr_omp.cpp - ${USER-OMP_SOURCES_DIR}/fix_omp.cpp - ${USER-OMP_SOURCES_DIR}/fix_nh_omp.cpp - ${USER-OMP_SOURCES_DIR}/fix_nh_sphere_omp.cpp - ${USER-OMP_SOURCES_DIR}/domain_omp.cpp) - target_compile_definitions(lammps PRIVATE -DLMP_USER_OMP) - set_property(GLOBAL PROPERTY "OMP_SOURCES" "${USER-OMP_SOURCES}") + set(USER-OMP_SOURCES_DIR ${LAMMPS_SOURCE_DIR}/USER-OMP) + set(USER-OMP_SOURCES ${USER-OMP_SOURCES_DIR}/thr_data.cpp + ${USER-OMP_SOURCES_DIR}/thr_omp.cpp + ${USER-OMP_SOURCES_DIR}/fix_omp.cpp + ${USER-OMP_SOURCES_DIR}/fix_nh_omp.cpp + ${USER-OMP_SOURCES_DIR}/fix_nh_sphere_omp.cpp + ${USER-OMP_SOURCES_DIR}/domain_omp.cpp) + target_compile_definitions(lammps PRIVATE -DLMP_USER_OMP) + set_property(GLOBAL PROPERTY "OMP_SOURCES" "${USER-OMP_SOURCES}") - # detects styles which have USER-OMP version - RegisterStylesExt(${USER-OMP_SOURCES_DIR} omp OMP_SOURCES) - RegisterFixStyle(${USER-OMP_SOURCES_DIR}/fix_omp.h) + # detects styles which have USER-OMP version + RegisterStylesExt(${USER-OMP_SOURCES_DIR} omp OMP_SOURCES) + RegisterFixStyle(${USER-OMP_SOURCES_DIR}/fix_omp.h) - get_property(USER-OMP_SOURCES GLOBAL PROPERTY OMP_SOURCES) + get_property(USER-OMP_SOURCES GLOBAL PROPERTY OMP_SOURCES) - # manually add package dependent source files from USER-OMP that do not provide styles + # manually add package dependent source files from USER-OMP that do not provide styles - if(PKG_ASPHERE) - list(APPEND USER-OMP_SOURCES ${USER-OMP_SOURCES_DIR}/fix_nh_asphere_omp.cpp) - endif() + if(PKG_ASPHERE) + list(APPEND USER-OMP_SOURCES ${USER-OMP_SOURCES_DIR}/fix_nh_asphere_omp.cpp) + endif() - if(PKG_RIGID) - list(APPEND USER-OMP_SOURCES ${USER-OMP_SOURCES_DIR}/fix_rigid_nh_omp.cpp) - endif() + if(PKG_RIGID) + list(APPEND USER-OMP_SOURCES ${USER-OMP_SOURCES_DIR}/fix_rigid_nh_omp.cpp) + endif() - if(PKG_USER-REAXC) - list(APPEND USER-OMP_SOURCES ${USER-OMP_SOURCES_DIR}/reaxc_bond_orders_omp.cpp - ${USER-OMP_SOURCES_DIR}/reaxc_hydrogen_bonds_omp.cpp - ${USER-OMP_SOURCES_DIR}/reaxc_nonbonded_omp.cpp - ${USER-OMP_SOURCES_DIR}/reaxc_bonds_omp.cpp - ${USER-OMP_SOURCES_DIR}/reaxc_init_md_omp.cpp - ${USER-OMP_SOURCES_DIR}/reaxc_torsion_angles_omp.cpp - ${USER-OMP_SOURCES_DIR}/reaxc_forces_omp.cpp - ${USER-OMP_SOURCES_DIR}/reaxc_multi_body_omp.cpp - ${USER-OMP_SOURCES_DIR}/reaxc_valence_angles_omp.cpp) - endif() + if(PKG_USER-REAXC) + list(APPEND USER-OMP_SOURCES ${USER-OMP_SOURCES_DIR}/reaxc_bond_orders_omp.cpp + ${USER-OMP_SOURCES_DIR}/reaxc_hydrogen_bonds_omp.cpp + ${USER-OMP_SOURCES_DIR}/reaxc_nonbonded_omp.cpp + ${USER-OMP_SOURCES_DIR}/reaxc_bonds_omp.cpp + ${USER-OMP_SOURCES_DIR}/reaxc_init_md_omp.cpp + ${USER-OMP_SOURCES_DIR}/reaxc_torsion_angles_omp.cpp + ${USER-OMP_SOURCES_DIR}/reaxc_forces_omp.cpp + ${USER-OMP_SOURCES_DIR}/reaxc_multi_body_omp.cpp + ${USER-OMP_SOURCES_DIR}/reaxc_valence_angles_omp.cpp) + endif() - target_sources(lammps PRIVATE ${USER-OMP_SOURCES}) - target_include_directories(lammps PRIVATE ${USER-OMP_SOURCES_DIR}) -endif() + target_sources(lammps PRIVATE ${USER-OMP_SOURCES}) + target_include_directories(lammps PRIVATE ${USER-OMP_SOURCES_DIR}) diff --git a/cmake/Modules/Packages/USER-SDPD.cmake b/cmake/Modules/Packages/USER-SDPD.cmake index 750194bcc6..c9f419d918 100644 --- a/cmake/Modules/Packages/USER-SDPD.cmake +++ b/cmake/Modules/Packages/USER-SDPD.cmake @@ -1,15 +1,13 @@ # Fix rigid/meso requires RIGID to be installed -if(PKG_USER-SDPD) - set(USER-SDPD_SOURCES_DIR ${LAMMPS_SOURCE_DIR}/USER-SDPD) +set(USER-SDPD_SOURCES_DIR ${LAMMPS_SOURCE_DIR}/USER-SDPD) - get_property(hlist GLOBAL PROPERTY FIX) - if(NOT PKG_RIGID) - list(REMOVE_ITEM hlist ${USER-SDPD_SOURCES_DIR}/fix_rigid_meso.h) - get_target_property(LAMMPS_SOURCES lammps SOURCES) - list(REMOVE_ITEM LAMMPS_SOURCES ${USER-SDPD_SOURCES_DIR}/fix_rigid_meso.cpp) - set_property(TARGET lammps PROPERTY SOURCES ${LAMMPS_SOURCES}) - endif() - set_property(GLOBAL PROPERTY FIX "${hlist}") - - target_include_directories(lammps PRIVATE ${USER-SDPD_SOURCES_DIR}) +get_property(hlist GLOBAL PROPERTY FIX) +if(NOT PKG_RIGID) + list(REMOVE_ITEM hlist ${USER-SDPD_SOURCES_DIR}/fix_rigid_meso.h) + get_target_property(LAMMPS_SOURCES lammps SOURCES) + list(REMOVE_ITEM LAMMPS_SOURCES ${USER-SDPD_SOURCES_DIR}/fix_rigid_meso.cpp) + set_property(TARGET lammps PROPERTY SOURCES ${LAMMPS_SOURCES}) endif() +set_property(GLOBAL PROPERTY FIX "${hlist}") + +target_include_directories(lammps PRIVATE ${USER-SDPD_SOURCES_DIR}) -- GitLab From 9003553384b85d81765765de2f1c11a878ca71bf Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Sun, 5 Apr 2020 15:12:40 -0600 Subject: [PATCH 185/717] cmake: move OpenCL handling under Windows in GPU.cmake --- cmake/CMakeLists.txt | 18 ------------------ cmake/Modules/Packages/GPU.cmake | 16 +++++++++++++++- 2 files changed, 15 insertions(+), 19 deletions(-) diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index 28c839af78..8a0f1763c6 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -144,24 +144,6 @@ foreach(PKG ${DEFAULT_PACKAGES} ${ACCEL_PACKAGES}) option(PKG_${PKG} "Build ${PKG} Package" OFF) endforeach() -###################################################### -# download and unpack support binaries for compilation -# of windows binaries. -###################################################### -if(${CMAKE_SYSTEM_NAME} STREQUAL "Windows") - set(LAMMPS_THIRDPARTY_URL "http://download.lammps.org/thirdparty") - file(DOWNLOAD "${LAMMPS_THIRDPARTY_URL}/opencl-win-devel.tar.gz" "${CMAKE_CURRENT_BINARY_DIR}/opencl-win-devel.tar.gz" - EXPECTED_MD5 2c00364888d5671195598b44c2e0d44d) - execute_process(COMMAND ${CMAKE_COMMAND} -E tar xzf opencl-win-devel.tar.gz WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) - if(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "x86") - set(OpenCL_LIBRARY "${CMAKE_CURRENT_BINARY_DIR}/OpenCL/lib_win32/libOpenCL.dll") - elseif(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "x86_64") - set(OpenCL_LIBRARY "${CMAKE_CURRENT_BINARY_DIR}/OpenCL/lib_win64/libOpenCL.dll") - endif() - set(OpenCL_INCLUDE_DIR "${CMAKE_CURRENT_BINARY_DIR}/OpenCL/include") -endif() - -###################################################### ###################################################### # packages with special compiler needs or external libs ###################################################### diff --git a/cmake/Modules/Packages/GPU.cmake b/cmake/Modules/Packages/GPU.cmake index 20ce355a54..a816c7f60b 100644 --- a/cmake/Modules/Packages/GPU.cmake +++ b/cmake/Modules/Packages/GPU.cmake @@ -115,7 +115,21 @@ elseif(GPU_API STREQUAL "OPENCL") - find_package(OpenCL REQUIRED) + if(${CMAKE_SYSTEM_NAME} STREQUAL "Windows") + # download and unpack support binaries for compilation of windows binaries. + set(LAMMPS_THIRDPARTY_URL "http://download.lammps.org/thirdparty") + file(DOWNLOAD "${LAMMPS_THIRDPARTY_URL}/opencl-win-devel.tar.gz" "${CMAKE_CURRENT_BINARY_DIR}/opencl-win-devel.tar.gz" + EXPECTED_MD5 2c00364888d5671195598b44c2e0d44d) + execute_process(COMMAND ${CMAKE_COMMAND} -E tar xzf opencl-win-devel.tar.gz WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) + if(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "x86") + set(OpenCL_LIBRARY "${CMAKE_CURRENT_BINARY_DIR}/OpenCL/lib_win32/libOpenCL.dll") + elseif(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "x86_64") + set(OpenCL_LIBRARY "${CMAKE_CURRENT_BINARY_DIR}/OpenCL/lib_win64/libOpenCL.dll") + endif() + set(OpenCL_INCLUDE_DIR "${CMAKE_CURRENT_BINARY_DIR}/OpenCL/include") + else() + find_package(OpenCL REQUIRED) + endif() set(OCL_TUNE "generic" CACHE STRING "OpenCL Device Tuning") set(OCL_TUNE_VALUES intel fermi kepler cypress generic) set_property(CACHE OCL_TUNE PROPERTY STRINGS ${OCL_TUNE_VALUES}) -- GitLab From 6b199f502ca0ec6f4602e65fb83fdddcb584aa84 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Sun, 5 Apr 2020 15:14:30 -0600 Subject: [PATCH 186/717] cmake: add error for downloading with <=cmake-3.11 --- cmake/Modules/Packages/GPU.cmake | 3 +++ 1 file changed, 3 insertions(+) diff --git a/cmake/Modules/Packages/GPU.cmake b/cmake/Modules/Packages/GPU.cmake index a816c7f60b..c0f2510ad7 100644 --- a/cmake/Modules/Packages/GPU.cmake +++ b/cmake/Modules/Packages/GPU.cmake @@ -116,6 +116,9 @@ elseif(GPU_API STREQUAL "OPENCL") if(${CMAKE_SYSTEM_NAME} STREQUAL "Windows") + if(CMAKE_VERSION VERSION_LESS 3.11) + message(FATAL_ERROR "Downloading OpenCL currently only works with cmake-3.11 and higher") + endif() # download and unpack support binaries for compilation of windows binaries. set(LAMMPS_THIRDPARTY_URL "http://download.lammps.org/thirdparty") file(DOWNLOAD "${LAMMPS_THIRDPARTY_URL}/opencl-win-devel.tar.gz" "${CMAKE_CURRENT_BINARY_DIR}/opencl-win-devel.tar.gz" -- GitLab From a77166379b95e1cba8cf9d9ee94120d625567d5f Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Sun, 5 Apr 2020 15:23:23 -0600 Subject: [PATCH 187/717] cmake: remove old comment --- cmake/CMakeLists.txt | 8 -------- 1 file changed, 8 deletions(-) diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index 8a0f1763c6..ac1c6a7ba2 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -374,14 +374,6 @@ endforeach(HEADER) set(MATH_LIBRARIES "m" CACHE STRING "math library") mark_as_advanced( MATH_LIBRARIES ) -include(CheckLibraryExists) -# RB: disabled this check because it breaks with KOKKOS CUDA enabled -#foreach(FUNC sin cos) -# check_library_exists(${MATH_LIBRARIES} ${FUNC} "" FOUND_${FUNC}_${MATH_LIBRARIES}) -# if(NOT FOUND_${FUNC}_${MATH_LIBRARIES}) -# message(FATAL_ERROR "Could not find needed math function - ${FUNC}") -# endif(NOT FOUND_${FUNC}_${MATH_LIBRARIES}) -#endforeach(FUNC) target_link_libraries(lammps PRIVATE ${MATH_LIBRARIES}) ###################################### -- GitLab From ac393ca38d4fe932763b03415020af9705b52be7 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Sun, 5 Apr 2020 15:37:17 -0600 Subject: [PATCH 188/717] GPU.cmake: use OpenCL imported target --- cmake/Modules/Packages/GPU.cmake | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/cmake/Modules/Packages/GPU.cmake b/cmake/Modules/Packages/GPU.cmake index c0f2510ad7..be824edfc1 100644 --- a/cmake/Modules/Packages/GPU.cmake +++ b/cmake/Modules/Packages/GPU.cmake @@ -124,12 +124,13 @@ file(DOWNLOAD "${LAMMPS_THIRDPARTY_URL}/opencl-win-devel.tar.gz" "${CMAKE_CURRENT_BINARY_DIR}/opencl-win-devel.tar.gz" EXPECTED_MD5 2c00364888d5671195598b44c2e0d44d) execute_process(COMMAND ${CMAKE_COMMAND} -E tar xzf opencl-win-devel.tar.gz WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) + add_library(OpenCL::OpenCL UNKNOWN IMPORTED) if(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "x86") - set(OpenCL_LIBRARY "${CMAKE_CURRENT_BINARY_DIR}/OpenCL/lib_win32/libOpenCL.dll") + set_target_properties(OpenCL::OpenCL PROPERTIES IMPORTED_LOCATION "${CMAKE_CURRENT_BINARY_DIR}/OpenCL/lib_win32/libOpenCL.dll") elseif(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "x86_64") - set(OpenCL_LIBRARY "${CMAKE_CURRENT_BINARY_DIR}/OpenCL/lib_win64/libOpenCL.dll") + set_target_properties(OpenCL::OpenCL PROPERTIES IMPORTED_LOCATION "${CMAKE_CURRENT_BINARY_DIR}/OpenCL/lib_win64/libOpenCL.dll") endif() - set(OpenCL_INCLUDE_DIR "${CMAKE_CURRENT_BINARY_DIR}/OpenCL/include") + set_target_properties(OpenCL::OpenCL PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_CURRENT_BINARY_DIR}/OpenCL/include") else() find_package(OpenCL REQUIRED) endif() @@ -179,8 +180,8 @@ ) add_library(gpu STATIC ${GPU_LIB_SOURCES}) - target_link_libraries(gpu PRIVATE ${OpenCL_LIBRARIES}) - target_include_directories(gpu PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/gpu ${OpenCL_INCLUDE_DIRS}) + target_link_libraries(gpu PRIVATE OpenCL::OpenCL) + target_include_directories(gpu PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/gpu) target_compile_definitions(gpu PRIVATE -D_${GPU_PREC_SETTING} -D${OCL_TUNE}_OCL -DMPI_GERYON -DUCL_NO_EXIT) target_compile_definitions(gpu PRIVATE -DUSE_OPENCL) @@ -188,8 +189,7 @@ add_executable(ocl_get_devices ${LAMMPS_LIB_SOURCE_DIR}/gpu/geryon/ucl_get_devices.cpp) target_compile_definitions(ocl_get_devices PRIVATE -DUCL_OPENCL) - target_link_libraries(ocl_get_devices PRIVATE ${OpenCL_LIBRARIES}) - target_include_directories(ocl_get_devices PRIVATE ${OpenCL_INCLUDE_DIRS}) + target_link_libraries(ocl_get_devices PRIVATE OpenCL::OpenCL) endif() # GPU package -- GitLab From 1b87ce04ee6e487f0c1a012c40897726393af9e2 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Sun, 5 Apr 2020 15:40:15 -0600 Subject: [PATCH 189/717] cmake: fix a typo --- cmake/CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index ac1c6a7ba2..6b01cb15ce 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -347,7 +347,7 @@ endif() foreach(PKG_WITH_INCL KSPACE PYTHON VORONOI USER-COLVARS USER-MOLFILE USER-NETCDF USER-PLUMED USER-QMMM USER-QUIP USER-SCAFACOS USER-SMD USER-VTK KIM LATTE MESSAGE MSCG COMPRESS) if(PKG_${PKG_WITH_INCL}) - include(Packages/${_PKG_INCL}) + include(Packages/${PKG_WITH_INCL}) endif() endforeach() @@ -474,7 +474,7 @@ endif() ###################################################################### foreach(PKG_WITH_INCL CORESHELL QEQ USER-OMP USER-SDPD KOKKOS OPT USER-INTEL GPU) if(PKG_${PKG_WITH_INCL}) - include(Packages/${_PKG_INCL}) + include(Packages/${PKG_WITH_INCL}) endif() endforeach() -- GitLab From d568fea7c36cd28114f5ef5468597ed59e48f162 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Sun, 5 Apr 2020 18:58:16 -0600 Subject: [PATCH 190/717] cmake: derive LAMMPS_API_DEFINES from lammps target properties --- cmake/CMakeLists.txt | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index 6b01cb15ce..b26689dd1f 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -128,8 +128,6 @@ endif() option(CMAKE_VERBOSE_MAKEFILE "Generate verbose Makefiles" OFF) -set(LAMMPS_API_DEFINES) - 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 @@ -206,8 +204,7 @@ set(LAMMPS_SIZES_VALUES smallbig bigbig smallsmall) set_property(CACHE LAMMPS_SIZES PROPERTY STRINGS ${LAMMPS_SIZES_VALUES}) validate_option(LAMMPS_SIZES LAMMPS_SIZES_VALUES) string(TOUPPER ${LAMMPS_SIZES} LAMMPS_SIZES) -target_compile_definitions(lammps PRIVATE -DLAMMPS_${LAMMPS_SIZES}) -set(LAMMPS_API_DEFINES "${LAMMPS_API_DEFINES} -DLAMMPS_${LAMMPS_SIZES}") +target_compile_definitions(lammps PUBLIC -DLAMMPS_${LAMMPS_SIZES}) # posix_memalign is not available on Windows if(${CMAKE_SYSTEM_NAME} STREQUAL "Windows") @@ -222,7 +219,6 @@ endif() option(LAMMPS_EXCEPTIONS "enable the use of C++ exceptions for error messages (useful for library interface)" OFF) if(LAMMPS_EXCEPTIONS) target_compile_definitions(lammps PUBLIC -DLAMMPS_EXCEPTIONS) - set(LAMMPS_API_DEFINES "${LAMMPS_API_DEFINES} -DLAMMPS_EXCEPTIONS") endif() # "hard" dependencies between packages resulting @@ -557,6 +553,11 @@ if(BUILD_LIB) endforeach() target_include_directories(lammps INTERFACE $) add_library(LAMMPS::lammps ALIAS lammps) + get_target_property(LAMMPS_DEFINES lammps INTERFACE_COMPILE_DEFINITIONS) + set(LAMMPS_API_DEFINES) + foreach(_DEF ${LAMMPS_DEFINES}) + set(LAMMPS_API_DEFINES "${LAMMPS_API_DEFINES} -D${_DEF}") + endforeach() configure_file(pkgconfig/liblammps.pc.in ${CMAKE_CURRENT_BINARY_DIR}/liblammps${LAMMPS_LIB_SUFFIX}.pc @ONLY) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/liblammps${LAMMPS_LIB_SUFFIX}.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) install(EXPORT LAMMPS_Targets FILE LAMMPS_Targets.cmake NAMESPACE LAMMPS:: DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/LAMMPS) -- GitLab From b9c747b680049feaeeaee6df6221bd2362a6e70f Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Sun, 5 Apr 2020 19:01:17 -0600 Subject: [PATCH 191/717] KIM.cmake: indentation --- cmake/Modules/Packages/KIM.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/Modules/Packages/KIM.cmake b/cmake/Modules/Packages/KIM.cmake index 3051b528a1..cd8f6b93fa 100644 --- a/cmake/Modules/Packages/KIM.cmake +++ b/cmake/Modules/Packages/KIM.cmake @@ -37,7 +37,7 @@ if(DOWNLOAD_KIM) -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} -DCMAKE_Fortran_COMPILER=${CMAKE_Fortran_COMPILER} - -DCMAKE_INSTALL_LIBDIR=lib + -DCMAKE_INSTALL_LIBDIR=lib -DCMAKE_INSTALL_PREFIX= -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DCMAKE_MAKE_PROGRAM=${CMAKE_MAKE_PROGRAM} -- GitLab From d8402b6249dca7577999969342a85ce04275eb31 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Sun, 5 Apr 2020 19:24:12 -0600 Subject: [PATCH 192/717] KIM.cmake: doesn't require MPI --- cmake/Modules/Packages/KIM.cmake | 1 - 1 file changed, 1 deletion(-) diff --git a/cmake/Modules/Packages/KIM.cmake b/cmake/Modules/Packages/KIM.cmake index cd8f6b93fa..f901ff1c5e 100644 --- a/cmake/Modules/Packages/KIM.cmake +++ b/cmake/Modules/Packages/KIM.cmake @@ -15,7 +15,6 @@ if(CURL_FOUND) endif() endif() find_package(PkgConfig QUIET) -find_package(MPI REQUIRED) set(DOWNLOAD_KIM_DEFAULT ON) if(PKG_CONFIG_FOUND) pkg_check_modules(KIM-API QUIET libkim-api>=2.1.3) -- GitLab From 97b11ea746d283a4996c00df0bda8f784cfceb42 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 5 Apr 2020 21:36:06 -0400 Subject: [PATCH 193/717] enforce using sphinx version 2.4.4, install spellchecker with all other sphinx tools --- doc/Makefile | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/doc/Makefile b/doc/Makefile index 4f20ab3453..d1bd5fdaf7 100644 --- a/doc/Makefile +++ b/doc/Makefile @@ -92,8 +92,7 @@ html: $(ANCHORCHECK) $(MATHJAX) spelling: $(VENV) utils/sphinx-config/false_positives.txt @(\ . $(VENV)/bin/activate ;\ - pip install sphinxcontrib-spelling ;\ - cp utils/sphinx-config/false_positives.txt $(RSTDIR)/ ;\ + cp utils/sphinx-config/false_positives.txt $(RSTDIR)/ ; env PYTHONWARNINGS= \ sphinx-build -b spelling -c utils/sphinx-config -d $(BUILDDIR)/doctrees $(RSTDIR) spelling ;\ deactivate ;\ ) @@ -195,7 +194,9 @@ $(VENV): $(VIRTUALENV) -p $(PYTHON) $(VENV); \ . $(VENV)/bin/activate; \ pip install --upgrade pip; \ - pip install Sphinx; \ + pip install Sphinx=2.4.4; \ + pip install sphinxcontrib-spelling ;\ + pip install breathe; \ deactivate;\ ) -- GitLab From f0817321f966b3200ab9f02d0596d568d8377b26 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Sun, 5 Apr 2020 19:52:28 -0600 Subject: [PATCH 194/717] LAMMPSConfig.cmake.in: improve static lib case --- cmake/LAMMPSConfig.cmake.in | 21 +++++++++++++++------ cmake/Modules/Packages/KIM.cmake | 6 +++--- 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/cmake/LAMMPSConfig.cmake.in b/cmake/LAMMPSConfig.cmake.in index ab756333ac..4e26b5b314 100644 --- a/cmake/LAMMPSConfig.cmake.in +++ b/cmake/LAMMPSConfig.cmake.in @@ -2,11 +2,20 @@ include(CMakeFindDependencyMacro) if(@BUILD_MPI@) find_dependency(MPI REQUIRED CXX) endif() -if(@WITH_JPEG@) - find_dependency(JPEG REQUIRED) -endif() -if(@WITH_PNG@) - find_dependency(PNG REQUIRED) - find_dependency(ZLIB REQUIRED) +if(NOT @BUILD_SHARED_LIBS@) + if(@WITH_JPEG@) + find_dependency(JPEG REQUIRED) + endif() + if(@WITH_PNG@) + find_dependency(PNG REQUIRED) + find_dependency(ZLIB REQUIRED) + endif() + if(@PKG_KIM@ AND NOT @DOWNLOAD_KIM@) + find_dependency(PkgConfig REQUIRED) + pkg_check_modules(KIM-API REQUIRED IMPORTED_TARGET libkim-api>=@KIM-API_MIN_VERSION@) + if(@CURL_FOUND@) + find_dependency(CURL REQUIRED) + endif() + endif() endif() include("${CMAKE_CURRENT_LIST_DIR}/LAMMPS_Targets.cmake") diff --git a/cmake/Modules/Packages/KIM.cmake b/cmake/Modules/Packages/KIM.cmake index f901ff1c5e..d7fe19d551 100644 --- a/cmake/Modules/Packages/KIM.cmake +++ b/cmake/Modules/Packages/KIM.cmake @@ -1,4 +1,4 @@ -set(KIM-API_MIN_VERSION 2.1) +set(KIM-API_MIN_VERSION 2.1.3) find_package(CURL) if(CURL_FOUND) target_link_libraries(lammps PRIVATE CURL::libcurl) @@ -17,7 +17,7 @@ endif() find_package(PkgConfig QUIET) set(DOWNLOAD_KIM_DEFAULT ON) if(PKG_CONFIG_FOUND) - pkg_check_modules(KIM-API QUIET libkim-api>=2.1.3) + pkg_check_modules(KIM-API QUIET libkim-api>=${KIM-API_MIN_VERSION}) if(KIM-API_FOUND) set(DOWNLOAD_KIM_DEFAULT OFF) endif() @@ -53,6 +53,6 @@ if(DOWNLOAD_KIM) add_dependencies(LAMMPS::KIM kim_build) else() find_package(PkgConfig REQUIRED) - pkg_check_modules(KIM-API REQUIRED IMPORTED_TARGET libkim-api>=2.1.3) + pkg_check_modules(KIM-API REQUIRED IMPORTED_TARGET libkim-api>=${KIM-API_MIN_VERSION}) target_link_libraries(lammps PRIVATE PkgConfig::KIM-API) endif() -- GitLab From 592a5fac533d34c60ce21365285bdf42ad254bf0 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 5 Apr 2020 21:56:55 -0400 Subject: [PATCH 195/717] fix bugs in doc makefile --- doc/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/Makefile b/doc/Makefile index d1bd5fdaf7..895a4aa90d 100644 --- a/doc/Makefile +++ b/doc/Makefile @@ -194,7 +194,7 @@ $(VENV): $(VIRTUALENV) -p $(PYTHON) $(VENV); \ . $(VENV)/bin/activate; \ pip install --upgrade pip; \ - pip install Sphinx=2.4.4; \ + pip install Sphinx==2.4.4; \ pip install sphinxcontrib-spelling ;\ pip install breathe; \ deactivate;\ -- GitLab From 2d92d8f8c624ed3a670df3ddf30a0a9bb4674b6e Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Sun, 5 Apr 2020 20:06:56 -0600 Subject: [PATCH 196/717] LAMMPSConfig.cmake: fix linking against FFTW3 --- cmake/LAMMPSConfig.cmake.in | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/cmake/LAMMPSConfig.cmake.in b/cmake/LAMMPSConfig.cmake.in index 4e26b5b314..8bc4777e08 100644 --- a/cmake/LAMMPSConfig.cmake.in +++ b/cmake/LAMMPSConfig.cmake.in @@ -2,6 +2,22 @@ include(CMakeFindDependencyMacro) if(@BUILD_MPI@) find_dependency(MPI REQUIRED CXX) endif() +if(@PKG_KSPACE@ AND @FFT@ STREQUAL "FFTW3") + if(@FFTW@ STREQUAL "FFTW3" AND NOT TARGET FFTW3::FFTW3) + add_library(FFTW3::FFTW3 UNKNOWN IMPORTED) + set_target_properties(FFTW3::FFTW3 PROPERTIES + IMPORTED_LINK_INTERFACE_LANGUAGES "C" + IMPORTED_LOCATION "@FFTW3_LIBRARY@" + INTERFACE_INCLUDE_DIRECTORIES "@FFTW3_INCLUDE_DIRS@") + endif() + if(@FFTW@ STREQUAL "FFTW3F" AND NOT TARGET FFTW3F::FFTW3F) + add_library(FFTW3F::FFTW3F UNKNOWN IMPORTED) + set_target_properties(FFTW3F::FFTW3F PROPERTIES + IMPORTED_LINK_INTERFACE_LANGUAGES "C" + IMPORTED_LOCATION "@FFTW3F_LIBRARY@" + INTERFACE_INCLUDE_DIRECTORIES "@FFTW3F_INCLUDE_DIRS@") + endif() +endif() if(NOT @BUILD_SHARED_LIBS@) if(@WITH_JPEG@) find_dependency(JPEG REQUIRED) -- GitLab From 73aeb74c2ab7558e810f2952e6c975c8bdffa47c Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Sun, 5 Apr 2020 20:51:02 -0600 Subject: [PATCH 197/717] LAMMPSConfig: more fixes for static liblammps --- cmake/LAMMPSConfig.cmake.in | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/cmake/LAMMPSConfig.cmake.in b/cmake/LAMMPSConfig.cmake.in index 8bc4777e08..f23b3dd0d6 100644 --- a/cmake/LAMMPSConfig.cmake.in +++ b/cmake/LAMMPSConfig.cmake.in @@ -33,5 +33,24 @@ if(NOT @BUILD_SHARED_LIBS@) find_dependency(CURL REQUIRED) endif() endif() + if(@PKG_USER-SMD@ AND NOT @DOWNLOAD_EIGEN3@) + find_dependency(Eigen3 NO_MODULE REQUIRED) + endif() + if(@PKG_KSPACE@ AND @FFT@ STREQUAL "FFTW3" AND @FFT_FFTW_THREADS@) + if(@FFTW@ STREQUAL "FFTW3" AND NOT TARGET FFTW3::FFTW3_OMP) + add_library(FFTW3::FFTW3_OMP UNKNOWN IMPORTED) + set_target_properties(FFTW3::FFTW3_OMP PROPERTIES + IMPORTED_LINK_INTERFACE_LANGUAGES "C" + IMPORTED_LOCATION "@FFTW3_OMP_LIBRARY@" + INTERFACE_INCLUDE_DIRECTORIES "@FFTW3_OMP_INCLUDE_DIRS@") + endif() + if(@FFTW@ STREQUAL "FFTW3F" AND NOT TARGET FFTW3F::FFTW3F_OMP) + add_library(FFTW3F::FFTW3F_OMP UNKNOWN IMPORTED) + set_target_properties(FFTW3F::FFTW3F_OMP PROPERTIES + IMPORTED_LINK_INTERFACE_LANGUAGES "C" + IMPORTED_LOCATION "@FFTW3F_OMP_LIBRARY@" + INTERFACE_INCLUDE_DIRECTORIES "@FFTW3F_OMP_INCLUDE_DIRS@") + endif() + endif() endif() include("${CMAKE_CURRENT_LIST_DIR}/LAMMPS_Targets.cmake") -- GitLab From 56c07cec26aad928825363d2afcc64b2491c0154 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 6 Apr 2020 08:28:12 -0400 Subject: [PATCH 198/717] handle not previously flagged false positives --- doc/src/minimize.rst | 2 +- doc/utils/sphinx-config/false_positives.txt | 14 +++++++++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/doc/src/minimize.rst b/doc/src/minimize.rst index dde5284b7a..81234ae80e 100644 --- a/doc/src/minimize.rst +++ b/doc/src/minimize.rst @@ -64,7 +64,7 @@ performed using a line search algorithm. The line search typically evaluates forces and energies several times to set new coordinates. Currently, a backtracking algorithm is used which may not be optimal in terms of the number of force evaluations performed, but appears to -be more robust than previous line searches we've tried. The +be more robust than previous line searches we have tried. The backtracking method is described in Nocedal and Wright's Numerical Optimization (Procedure 3.1 on p 41). diff --git a/doc/utils/sphinx-config/false_positives.txt b/doc/utils/sphinx-config/false_positives.txt index 604adde2a4..8d7f1e6cb4 100644 --- a/doc/utils/sphinx-config/false_positives.txt +++ b/doc/utils/sphinx-config/false_positives.txt @@ -262,6 +262,7 @@ Boltzman BondAngle BondBond bondchk +BondingIDs bondmax bondtype Bonet @@ -366,7 +367,8 @@ chemistries Chemnitz Cheng Chenoweth -chiral +ChiralIDs +chiralIDs chirality Cho chris @@ -433,6 +435,7 @@ cond conda Conda Condens +Connor conf config configfile @@ -564,6 +567,7 @@ defn deformable del delaystep +DeleteIDs deleteIDs Dellago delocalization @@ -713,6 +717,7 @@ Ec ecoul ecp Ecut +EdgeIDs edgeIDs edihed edim @@ -1050,6 +1055,7 @@ gpu gpuID gpus gradV +GradVidottan graining Graining Grama @@ -1157,6 +1163,7 @@ Houlle howto Howto Hoyt +Hs hstyle html hTST @@ -1388,6 +1395,7 @@ KDevelop ke KE Keblinski +Keefe keflag Keir Kelchner @@ -1410,6 +1418,7 @@ Klapp Kloss kmax Kmax +KMP Knizhnik knl Kofke @@ -1578,6 +1587,7 @@ lmpqst lmpsdata Lmpsdata lmptype +LMT ln localTemp localvectors @@ -2658,6 +2668,8 @@ Shi Shiga Shinoda shlib +SHM +shm shockvel si SiC -- GitLab From f3e1db41742e9bca3172d95ebd09318cd3ac9263 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 6 Apr 2020 08:45:22 -0400 Subject: [PATCH 199/717] one more false positive --- doc/utils/sphinx-config/false_positives.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/utils/sphinx-config/false_positives.txt b/doc/utils/sphinx-config/false_positives.txt index 8d7f1e6cb4..9a2d9e63d4 100644 --- a/doc/utils/sphinx-config/false_positives.txt +++ b/doc/utils/sphinx-config/false_positives.txt @@ -367,6 +367,7 @@ chemistries Chemnitz Cheng Chenoweth +chiral ChiralIDs chiralIDs chirality -- GitLab From 6c8161b2a399cc252dcab04691ded27e5a48bd34 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Mon, 6 Apr 2020 12:10:00 -0600 Subject: [PATCH 200/717] cmake: remove wrongly added warning about downloading --- cmake/Modules/Packages/GPU.cmake | 3 --- cmake/Modules/Packages/KOKKOS.cmake | 3 --- 2 files changed, 6 deletions(-) diff --git a/cmake/Modules/Packages/GPU.cmake b/cmake/Modules/Packages/GPU.cmake index be824edfc1..7c05c02b68 100644 --- a/cmake/Modules/Packages/GPU.cmake +++ b/cmake/Modules/Packages/GPU.cmake @@ -116,9 +116,6 @@ elseif(GPU_API STREQUAL "OPENCL") if(${CMAKE_SYSTEM_NAME} STREQUAL "Windows") - if(CMAKE_VERSION VERSION_LESS 3.11) - message(FATAL_ERROR "Downloading OpenCL currently only works with cmake-3.11 and higher") - endif() # download and unpack support binaries for compilation of windows binaries. set(LAMMPS_THIRDPARTY_URL "http://download.lammps.org/thirdparty") file(DOWNLOAD "${LAMMPS_THIRDPARTY_URL}/opencl-win-devel.tar.gz" "${CMAKE_CURRENT_BINARY_DIR}/opencl-win-devel.tar.gz" diff --git a/cmake/Modules/Packages/KOKKOS.cmake b/cmake/Modules/Packages/KOKKOS.cmake index 3041433f1a..d2b8f19167 100644 --- a/cmake/Modules/Packages/KOKKOS.cmake +++ b/cmake/Modules/Packages/KOKKOS.cmake @@ -1,9 +1,6 @@ option(EXTERNAL_KOKKOS "Build against external kokkos library" OFF) option(DOWNLOAD_KOKKOS "Download the KOKKOS library instead of using the bundled one" OFF) if(DOWNLOAD_KOKKOS) - if(CMAKE_VERSION VERSION_LESS 3.11) - message(FATAL_ERROR "Downloading kokkos currently only works with cmake-3.11 and higher") - endif() message(STATUS "KOKKOS download requested - we will build our own") file(DOWNLOAD https://github.com/kokkos/kokkos/compare/3.0.00...stanmoore1:lammps.diff ${CMAKE_CURRENT_BINARY_DIR}/kokkos-lammps.patch) include(ExternalProject) -- GitLab From 5da96f457408aac9047b517c438027a63273554b Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Mon, 6 Apr 2020 12:10:39 -0600 Subject: [PATCH 201/717] LAMMPSConfig.cmake: add support for PKG_USER-SCAFACOS and PKG_PYTHON --- cmake/LAMMPSConfig.cmake.in | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/cmake/LAMMPSConfig.cmake.in b/cmake/LAMMPSConfig.cmake.in index f23b3dd0d6..da94f26fb4 100644 --- a/cmake/LAMMPSConfig.cmake.in +++ b/cmake/LAMMPSConfig.cmake.in @@ -52,5 +52,12 @@ if(NOT @BUILD_SHARED_LIBS@) INTERFACE_INCLUDE_DIRECTORIES "@FFTW3F_OMP_INCLUDE_DIRS@") endif() endif() + if(@PKG_USER-SCAFACOS@ AND NOT @DOWNLOAD_SCAFACOS@) + find_dependency(PkgConfig REQUIRED) + pkg_check_modules(SCAFACOS REQUIRED IMPORTED_TARGET scafacos) + endif() + if(@PKG_PYTHON@ AND NOT CMAKE_VERSION VERSION_LESS 3.12) + find_package(Python REQUIRED COMPONENTS Development) + endif() endif() include("${CMAKE_CURRENT_LIST_DIR}/LAMMPS_Targets.cmake") -- GitLab From bb9ffe2edc0ad716f69324ea0c0c0a5dc4f68748 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Mon, 6 Apr 2020 14:15:47 -0600 Subject: [PATCH 202/717] simple.c: fix lammps include --- examples/COUPLE/simple/simple.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/COUPLE/simple/simple.c b/examples/COUPLE/simple/simple.c index ad603e09a6..f4623470b7 100644 --- a/examples/COUPLE/simple/simple.c +++ b/examples/COUPLE/simple/simple.c @@ -23,7 +23,7 @@ #include "stdlib.h" #include "string.h" #include "mpi.h" -#include "library.h" /* this is a LAMMPS include file */ +#include "lammps/library.h" /* this is a LAMMPS include file */ int main(int narg, char **arg) { -- GitLab From 4b6dcb345248aeec303aa2c68cbb5f945023cd40 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Mon, 6 Apr 2020 14:51:44 -0600 Subject: [PATCH 203/717] LAMMPSConfig.cmake.in: add support for some more packages --- cmake/LAMMPSConfig.cmake.in | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/cmake/LAMMPSConfig.cmake.in b/cmake/LAMMPSConfig.cmake.in index da94f26fb4..da7ca59fb9 100644 --- a/cmake/LAMMPSConfig.cmake.in +++ b/cmake/LAMMPSConfig.cmake.in @@ -31,7 +31,7 @@ if(NOT @BUILD_SHARED_LIBS@) pkg_check_modules(KIM-API REQUIRED IMPORTED_TARGET libkim-api>=@KIM-API_MIN_VERSION@) if(@CURL_FOUND@) find_dependency(CURL REQUIRED) - endif() + endif() endif() if(@PKG_USER-SMD@ AND NOT @DOWNLOAD_EIGEN3@) find_dependency(Eigen3 NO_MODULE REQUIRED) @@ -59,5 +59,34 @@ if(NOT @BUILD_SHARED_LIBS@) if(@PKG_PYTHON@ AND NOT CMAKE_VERSION VERSION_LESS 3.12) find_package(Python REQUIRED COMPONENTS Development) endif() + if(@PKG_COMPRESS@) + find_dependency(ZLIB REQUIRED) + endif() + if(@PKG_KOKKOS@) + if(@EXTERNAL_KOKKOS@) + find_dependency(Kokkos 3 REQUIRED) + endif() + endif() + if(@PKG_VORONOI@ AND NOT @DOWNLOAD_VORO@) + if(NOT TARGET VORO::VORO) + add_library(VORO::VORO UNKNOWN IMPORTED) + set_target_properties(VORO::VORO PROPERTIES + IMPORTED_LOCATION "@VORO_LIBRARY@" + INTERFACE_INCLUDE_DIRECTORIES "@VORO_INCLUDE_DIR@") + endif() + endif() + if(@PKG_USER-INTEL@) + if(@INTEL_LRT_MODE@ STREQUAL "THREADS") + find_dependency(Threads REQUIRED) + endif() + if(@TBB_MALLOC_FOUND@) + if(NOT TARGET TBB::TBB_MALLOC) + add_library(TBB::TBB_MALLOC UNKNOWN IMPORTED) + set_target_properties(TBB::TBB_MALLOC PROPERTIES + IMPORTED_LOCATION "@TBB_MALLOC_LIBRARY@" + INTERFACE_INCLUDE_DIRECTORIES "@TBB_MALLOC_INCLUDE_DIR@") + endif() + endif() + endif() endif() include("${CMAKE_CURRENT_LIST_DIR}/LAMMPS_Targets.cmake") -- GitLab From 15ddbf7e9e95dcafeb51eec0da952ceaa1acbcc1 Mon Sep 17 00:00:00 2001 From: Oliver Henrich Date: Tue, 7 Apr 2020 13:32:05 +0100 Subject: [PATCH 204/717] Removed abort condition, enabled capped force --- src/USER-CGDNA/bond_oxdna_fene.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/USER-CGDNA/bond_oxdna_fene.cpp b/src/USER-CGDNA/bond_oxdna_fene.cpp index 834b53a5c7..29a0189014 100644 --- a/src/USER-CGDNA/bond_oxdna_fene.cpp +++ b/src/USER-CGDNA/bond_oxdna_fene.cpp @@ -221,7 +221,7 @@ void BondOxdnaFene::compute(int eflag, int vflag) TAGINT_FORMAT " " TAGINT_FORMAT " %g", update->ntimestep,atom->tag[a],atom->tag[b],r); error->warning(FLERR,str,0); - if (rlogarg <= -8.0) error->one(FLERR,"Bad FENE bond"); + rlogarg = 0.1; } fbond = -k[type]*rr0/rlogarg/Deltasq/r; -- GitLab From c6d09437ae150b5da84e9263c1070b66c76160c3 Mon Sep 17 00:00:00 2001 From: Evangelos Voyiatzis Date: Tue, 7 Apr 2020 18:41:15 +0200 Subject: [PATCH 205/717] pair_style lj/class2/coul/long/cs The files for the core-shell version of the pair_style lj/class2/coul/long --- src/USER-MISC/pair_lj_class2_coul_long_cs.cpp | 573 ++++++++++++++++++ src/USER-MISC/pair_lj_class2_coul_long_cs.h | 67 ++ 2 files changed, 640 insertions(+) create mode 100644 src/USER-MISC/pair_lj_class2_coul_long_cs.cpp create mode 100644 src/USER-MISC/pair_lj_class2_coul_long_cs.h diff --git a/src/USER-MISC/pair_lj_class2_coul_long_cs.cpp b/src/USER-MISC/pair_lj_class2_coul_long_cs.cpp new file mode 100644 index 0000000000..bf103612ab --- /dev/null +++ b/src/USER-MISC/pair_lj_class2_coul_long_cs.cpp @@ -0,0 +1,573 @@ +/* ---------------------------------------------------------------------- + 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 "pair_lj_class2_coul_long_cs.h" +#include +#include +#include +#include "atom.h" +#include "comm.h" +#include "force.h" +#include "kspace.h" +#include "update.h" +#include "respa.h" +#include "neighbor.h" +#include "neigh_list.h" +#include "neigh_request.h" +#include "math_const.h" +#include "memory.h" +#include "error.h" +#include "utils.h" + +using namespace LAMMPS_NS; +using namespace MathConst; + +#define EWALD_F 1.12837917 +#define EWALD_P 0.3275911 +#define A1 0.254829592 +#define A2 -0.284496736 +#define A3 1.421413741 +#define A4 -1.453152027 +#define A5 1.061405429 + +#define EPSILON 1.0e-20 +#define EPS_EWALD 1.0e-6 +#define EPS_EWALD_SQR 1.0e-12 + +/* ---------------------------------------------------------------------- */ + +PairLJClass2CoulLongCS::PairLJClass2CoulLongCS(LAMMPS *lmp) : PairLJClass2CoulLong(lmp) +{ + ewaldflag = pppmflag = 1; + respa_enable = 1; + writedata = 1; + ftable = NULL; +} + +/* ---------------------------------------------------------------------- */ + +void PairLJClass2CoulLongCS::compute(int eflag, int vflag) +{ + int i,j,ii,jj,inum,jnum,itable,itype,jtype; + double qtmp,xtmp,ytmp,ztmp,delx,dely,delz,evdwl,ecoul,fpair; + double fraction,table; + double rsq,r,rinv,r2inv,r3inv,r6inv,forcecoul,forcelj; + double grij,expm2,prefactor,t,erfc; + double factor_coul,factor_lj; + int *ilist,*jlist,*numneigh,**firstneigh; + + evdwl = ecoul = 0.0; + ev_init(eflag,vflag); + + double **x = atom->x; + double **f = atom->f; + double *q = atom->q; + int *type = atom->type; + int nlocal = atom->nlocal; + double *special_coul = force->special_coul; + double *special_lj = force->special_lj; + int newton_pair = force->newton_pair; + double qqrd2e = force->qqrd2e; + + 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]; + qtmp = q[i]; + 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)]; + factor_coul = special_coul[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]) { + rsq += EPSILON; // Add Epsilon for case: r = 0; Interaction must be removed by special bond; + r2inv = 1.0/rsq; + + if (rsq < cut_coulsq) { + if (!ncoultablebits || rsq <= tabinnersq) { + r = sqrt(rsq); + prefactor = qqrd2e * qtmp*q[j]; + if (factor_coul < 1.0) { + // When bonded parts are being calculated a minimal distance (EPS_EWALD) + // has to be added to the prefactor and erfc in order to make the + // used approximation functions for the Ewald correction valid + grij = g_ewald * (r+EPS_EWALD); + expm2 = exp(-grij*grij); + t = 1.0 / (1.0 + EWALD_P*grij); + erfc = t * (A1+t*(A2+t*(A3+t*(A4+t*A5)))) * expm2; + prefactor /= (r+EPS_EWALD); + forcecoul = prefactor * (erfc + EWALD_F*grij*expm2 - (1.0-factor_coul)); + // Additionally r2inv needs to be accordingly modified since the later + // scaling of the overall force shall be consistent + r2inv = 1.0/(rsq + EPS_EWALD_SQR); + } else { + grij = g_ewald * r; + expm2 = exp(-grij*grij); + t = 1.0 / (1.0 + EWALD_P*grij); + erfc = t * (A1+t*(A2+t*(A3+t*(A4+t*A5)))) * expm2; + prefactor /= r; + forcecoul = prefactor * (erfc + EWALD_F*grij*expm2); + } + } else { + union_int_float_t rsq_lookup; + rsq_lookup.f = rsq; + itable = rsq_lookup.i & ncoulmask; + itable >>= ncoulshiftbits; + fraction = (rsq_lookup.f - rtable[itable]) * drtable[itable]; + table = ftable[itable] + fraction*dftable[itable]; + forcecoul = qtmp*q[j] * table; + if (factor_coul < 1.0) { + table = ctable[itable] + fraction*dctable[itable]; + prefactor = qtmp*q[j] * table; + forcecoul -= (1.0-factor_coul)*prefactor; + } + } + } else forcecoul = 0.0; + + if (rsq < cut_ljsq[itype][jtype]) { + rinv = sqrt(r2inv); + r3inv = r2inv*rinv; + r6inv = r3inv*r3inv; + forcelj = r6inv * (lj1[itype][jtype]*r3inv - lj2[itype][jtype]); + } else forcelj = 0.0; + + fpair = (forcecoul + factor_lj*forcelj) * r2inv; + + 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 (eflag) { + if (rsq < cut_coulsq) { + if (!ncoultablebits || rsq <= tabinnersq) + ecoul = prefactor*erfc; + else { + table = etable[itable] + fraction*detable[itable]; + ecoul = qtmp*q[j] * table; + } + if (factor_coul < 1.0) ecoul -= (1.0-factor_coul)*prefactor; + } else ecoul = 0.0; + if (rsq < cut_ljsq[itype][jtype]) { + evdwl = r6inv*(lj3[itype][jtype]*r3inv-lj4[itype][jtype]) - + offset[itype][jtype]; + evdwl *= factor_lj; + } else evdwl = 0.0; + } + + if (evflag) ev_tally(i,j,nlocal,newton_pair, + evdwl,ecoul,fpair,delx,dely,delz); + } + } + } + + if (vflag_fdotr) virial_fdotr_compute(); +} + +/* ---------------------------------------------------------------------- */ + +void PairLJClass2CoulLongCS::compute_inner() +{ + int i,j,ii,jj,inum,jnum,itype,jtype; + double qtmp,xtmp,ytmp,ztmp,delx,dely,delz,fpair; + double rsq,rinv,r2inv,r3inv,r6inv,forcecoul,forcelj,factor_coul,factor_lj; + double rsw; + int *ilist,*jlist,*numneigh,**firstneigh; + + double **x = atom->x; + double **f = atom->f; + double *q = atom->q; + int *type = atom->type; + int nlocal = atom->nlocal; + double *special_coul = force->special_coul; + double *special_lj = force->special_lj; + int newton_pair = force->newton_pair; + double qqrd2e = force->qqrd2e; + + inum = list->inum_inner; + ilist = list->ilist_inner; + numneigh = list->numneigh_inner; + firstneigh = list->firstneigh_inner; + + double cut_out_on = cut_respa[0]; + double cut_out_off = cut_respa[1]; + + double cut_out_diff = cut_out_off - cut_out_on; + double cut_out_on_sq = cut_out_on*cut_out_on; + double cut_out_off_sq = cut_out_off*cut_out_off; + + // loop over neighbors of my atoms + + for (ii = 0; ii < inum; ii++) { + i = ilist[ii]; + qtmp = q[i]; + 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)]; + factor_coul = special_coul[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; + + if (rsq < cut_out_off_sq) { + rsq += EPSILON; // Add Epsilon for case: r = 0; Interaction must be removed by special bond; + r2inv = 1.0/rsq; + forcecoul = qqrd2e * qtmp*q[j]*sqrt(r2inv); + if (factor_coul < 1.0) forcecoul -= (1.0-factor_coul)*forcecoul; + + jtype = type[j]; + if (rsq < cut_ljsq[itype][jtype]) { + rinv = sqrt(r2inv); + r3inv = r2inv*rinv; + r6inv = r3inv*r3inv; + forcelj = r6inv * (lj1[itype][jtype]*r3inv - lj2[itype][jtype]); + } else forcelj = 0.0; + + fpair = (forcecoul + factor_lj*forcelj) * r2inv; + if (rsq > cut_out_on_sq) { + rsw = (sqrt(rsq) - cut_out_on)/cut_out_diff; + fpair *= 1.0 + rsw*rsw*(2.0*rsw-3.0); + } + + 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; + } + } + } + } +} + +/* ---------------------------------------------------------------------- */ + +void PairLJClass2CoulLongCS::compute_middle() +{ + int i,j,ii,jj,inum,jnum,itype,jtype; + double qtmp,xtmp,ytmp,ztmp,delx,dely,delz,fpair; + double rsq,rinv,r2inv,r3inv,r6inv,forcecoul,forcelj,factor_coul,factor_lj; + double rsw; + int *ilist,*jlist,*numneigh,**firstneigh; + + double **x = atom->x; + double **f = atom->f; + double *q = atom->q; + int *type = atom->type; + int nlocal = atom->nlocal; + double *special_coul = force->special_coul; + double *special_lj = force->special_lj; + int newton_pair = force->newton_pair; + double qqrd2e = force->qqrd2e; + + inum = list->inum_middle; + ilist = list->ilist_middle; + numneigh = list->numneigh_middle; + firstneigh = list->firstneigh_middle; + + double cut_in_off = cut_respa[0]; + double cut_in_on = cut_respa[1]; + double cut_out_on = cut_respa[2]; + double cut_out_off = cut_respa[3]; + + double cut_in_diff = cut_in_on - cut_in_off; + double cut_out_diff = cut_out_off - cut_out_on; + double cut_in_off_sq = cut_in_off*cut_in_off; + double cut_in_on_sq = cut_in_on*cut_in_on; + double cut_out_on_sq = cut_out_on*cut_out_on; + double cut_out_off_sq = cut_out_off*cut_out_off; + + // loop over neighbors of my atoms + + for (ii = 0; ii < inum; ii++) { + i = ilist[ii]; + qtmp = q[i]; + 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)]; + factor_coul = special_coul[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; + + if (rsq < cut_out_off_sq && rsq > cut_in_off_sq) { + r2inv = 1.0/rsq; + forcecoul = qqrd2e * qtmp*q[j]*sqrt(r2inv); + if (factor_coul < 1.0) forcecoul -= (1.0-factor_coul)*forcecoul; + + jtype = type[j]; + if (rsq < cut_ljsq[itype][jtype]) { + rinv = sqrt(r2inv); + r3inv = r2inv*rinv; + r6inv = r3inv*r3inv; + forcelj = r6inv * (lj1[itype][jtype]*r3inv - lj2[itype][jtype]); + } else forcelj = 0.0; + + fpair = (forcecoul + factor_lj*forcelj) * r2inv; + if (rsq < cut_in_on_sq) { + rsw = (sqrt(rsq) - cut_in_off)/cut_in_diff; + fpair *= rsw*rsw*(3.0 - 2.0*rsw); + } + if (rsq > cut_out_on_sq) { + rsw = (sqrt(rsq) - cut_out_on)/cut_out_diff; + fpair *= 1.0 + rsw*rsw*(2.0*rsw - 3.0); + } + + 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; + } + } + } + } +} + +/* ---------------------------------------------------------------------- */ + +void PairLJClass2CoulLongCS::compute_outer(int eflag, int vflag) +{ + int i,j,ii,jj,inum,jnum,itype,jtype,itable; + double qtmp,xtmp,ytmp,ztmp,delx,dely,delz,evdwl,ecoul,fpair; + double fraction,table; + double r,rinv,r2inv,r3inv,r6inv,forcecoul,forcelj,factor_coul,factor_lj; + double grij,expm2,prefactor,t,erfc; + double rsw; + int *ilist,*jlist,*numneigh,**firstneigh; + double rsq; + + evdwl = ecoul = 0.0; + ev_init(eflag,vflag); + + double **x = atom->x; + double **f = atom->f; + double *q = atom->q; + int *type = atom->type; + int nlocal = atom->nlocal; + double *special_coul = force->special_coul; + double *special_lj = force->special_lj; + int newton_pair = force->newton_pair; + double qqrd2e = force->qqrd2e; + + inum = list->inum; + ilist = list->ilist; + numneigh = list->numneigh; + firstneigh = list->firstneigh; + + double cut_in_off = cut_respa[2]; + double cut_in_on = cut_respa[3]; + + double cut_in_diff = cut_in_on - cut_in_off; + double cut_in_off_sq = cut_in_off*cut_in_off; + double cut_in_on_sq = cut_in_on*cut_in_on; + + // loop over neighbors of my atoms + + for (ii = 0; ii < inum; ii++) { + i = ilist[ii]; + qtmp = q[i]; + 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)]; + factor_coul = special_coul[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]) { + rsq += EPSILON; // Add Epsilon for case: r = 0; Interaction must be removed by special bond; + r2inv = 1.0/rsq; + + if (rsq < cut_coulsq) { + if (!ncoultablebits || rsq <= tabinnersq) { + r = sqrt(rsq); + grij = g_ewald * r; + expm2 = exp(-grij*grij); + t = 1.0 / (1.0 + EWALD_P*grij); + erfc = t * (A1+t*(A2+t*(A3+t*(A4+t*A5)))) * expm2; + prefactor = qqrd2e * qtmp*q[j]/r; + forcecoul = prefactor * (erfc + EWALD_F*grij*expm2 - 1.0); + if (rsq > cut_in_off_sq) { + if (rsq < cut_in_on_sq) { + rsw = (r - cut_in_off)/cut_in_diff; + forcecoul += prefactor*rsw*rsw*(3.0 - 2.0*rsw); + if (factor_coul < 1.0) + forcecoul -= + (1.0-factor_coul)*prefactor*rsw*rsw*(3.0 - 2.0*rsw); + } else { + forcecoul += prefactor; + if (factor_coul < 1.0) + forcecoul -= (1.0-factor_coul)*prefactor; + } + } + } else { + union_int_float_t rsq_lookup; + rsq_lookup.f = rsq; + itable = rsq_lookup.i & ncoulmask; + itable >>= ncoulshiftbits; + fraction = (rsq_lookup.f - rtable[itable]) * drtable[itable]; + table = ftable[itable] + fraction*dftable[itable]; + forcecoul = qtmp*q[j] * table; + if (factor_coul < 1.0) { + table = ctable[itable] + fraction*dctable[itable]; + prefactor = qtmp*q[j] * table; + forcecoul -= (1.0-factor_coul)*prefactor; + } + } + } else forcecoul = 0.0; + + if (rsq < cut_ljsq[itype][jtype] && rsq > cut_in_off_sq) { + rinv = sqrt(r2inv); + r3inv = r2inv*rinv; + r6inv = r3inv*r3inv; + forcelj = r6inv * (lj1[itype][jtype]*r3inv - lj2[itype][jtype]); + if (rsq < cut_in_on_sq) { + rsw = (sqrt(rsq) - cut_in_off)/cut_in_diff; + forcelj *= rsw*rsw*(3.0 - 2.0*rsw); + } + } else forcelj = 0.0; + + fpair = (forcecoul + forcelj) * r2inv; + + 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 (eflag) { + if (rsq < cut_coulsq) { + if (!ncoultablebits || rsq <= tabinnersq) { + ecoul = prefactor*erfc; + if (factor_coul < 1.0) ecoul -= (1.0-factor_coul)*prefactor; + } else { + table = etable[itable] + fraction*detable[itable]; + ecoul = qtmp*q[j] * table; + if (factor_coul < 1.0) { + table = ptable[itable] + fraction*dptable[itable]; + prefactor = qtmp*q[j] * table; + ecoul -= (1.0-factor_coul)*prefactor; + } + } + } else ecoul = 0.0; + + if (rsq < cut_ljsq[itype][jtype]) { + rinv = sqrt(r2inv); + r3inv = r2inv*rinv; + r6inv = r3inv*r3inv; + evdwl = r6inv*(lj3[itype][jtype]*r3inv-lj4[itype][jtype]) - + offset[itype][jtype]; + evdwl *= factor_lj; + } else evdwl = 0.0; + } + + if (vflag) { + if (rsq < cut_coulsq) { + if (!ncoultablebits || rsq <= tabinnersq) { + forcecoul = prefactor * (erfc + EWALD_F*grij*expm2); + if (factor_coul < 1.0) forcecoul -= (1.0-factor_coul)*prefactor; + } else { + table = vtable[itable] + fraction*dvtable[itable]; + forcecoul = qtmp*q[j] * table; + if (factor_coul < 1.0) { + table = ptable[itable] + fraction*dptable[itable]; + prefactor = qtmp*q[j] * table; + forcecoul -= (1.0-factor_coul)*prefactor; + } + } + } else forcecoul = 0.0; + + if (rsq <= cut_in_off_sq) { + rinv = sqrt(r2inv); + r3inv = r2inv*rinv; + r6inv = r3inv*r3inv; + forcelj = r6inv * (lj1[itype][jtype]*r3inv - lj2[itype][jtype]); + } else if (rsq <= cut_in_on_sq) { + rinv = sqrt(r2inv); + r3inv = r2inv*rinv; + r6inv = r3inv*r3inv; + forcelj = r6inv * (lj1[itype][jtype]*r3inv - lj2[itype][jtype]); + } + fpair = (forcecoul + factor_lj*forcelj) * r2inv; + } + + if (evflag) ev_tally(i,j,nlocal,newton_pair, + evdwl,ecoul,fpair,delx,dely,delz); + } + } + } +} + + diff --git a/src/USER-MISC/pair_lj_class2_coul_long_cs.h b/src/USER-MISC/pair_lj_class2_coul_long_cs.h new file mode 100644 index 0000000000..3e2e6972d8 --- /dev/null +++ b/src/USER-MISC/pair_lj_class2_coul_long_cs.h @@ -0,0 +1,67 @@ +/* -*- 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 PAIR_CLASS + +PairStyle(lj/class2/coul/long/cs,PairLJClass2CoulLongCS) + +#else + +#ifndef LMP_PAIR_LJ_CLASS2_COUL_LONG_CS_H +#define LMP_PAIR_LJ_CLASS2_COUL_LONG_CS_H + +#include "pair_lj_class2_coul_long.h" + +namespace LAMMPS_NS { + +class PairLJClass2CoulLongCS : public PairLJClass2CoulLong { + + public: + PairLJClass2CoulLongCS(class LAMMPS *); + virtual void compute(int, int); + void compute_inner(); + void compute_middle(); + void compute_outer(int, int); +}; + +} + +#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: Pair style lj/class2/coul/long requires atom attribute q + +The atom style defined does not have this attribute. + +E: Pair style requires a KSpace style + +No kspace style is defined. + +E: Pair cutoff < Respa interior cutoff + +One or more pairwise cutoffs are too short to use with the specified +rRESPA cutoffs. + +*/ -- GitLab From 4ef0e17900281afc72ed73817bb9d1fdaeb936ac Mon Sep 17 00:00:00 2001 From: Evangelos Voyiatzis Date: Tue, 7 Apr 2020 18:44:06 +0200 Subject: [PATCH 206/717] Update README --- src/USER-MISC/README | 1 + 1 file changed, 1 insertion(+) diff --git a/src/USER-MISC/README b/src/USER-MISC/README index 91d630e560..f9c99ffcff 100644 --- a/src/USER-MISC/README +++ b/src/USER-MISC/README @@ -88,6 +88,7 @@ pair_style ilp/graphene/hbn, Wengen Ouyang (Tel Aviv University), w.g.ouyang at pair_style lebedeva/z, Zbigniew Koziol (National Center for Nuclear Research), softquake at gmail dot com, 4 Jan 19 pair_style lennard/mdf, Paolo Raiteri, p.raiteri at curtin.edu.au, 2 Dec 15 pair_style list, Axel Kohlmeyer (Temple U), akohlmey at gmail.com, 1 Jun 13 +pair_style lj/class2/coul/long/cs, Evangelos Voyiatzis, evoyiatzis at gmail.com, 7 April 2020 pair_style lj/mdf, Paolo Raiteri, p.raiteri at curtin.edu.au, 2 Dec 15 pair_style local/density, Tanmoy Sanyal (tanmoy dot 7989 at gmail.com) and M. Scott Shell (UCSB), and David Rosenberger (TU Darmstadt), 9 Sept 19 pair_style kolmogorov/crespi/full, Wengen Ouyang (Tel Aviv University), w.g.ouyang at gmail dot com, 30 Mar 18 -- GitLab From 9da2d34f9da7d53465a7a2bae984394f14e3941d Mon Sep 17 00:00:00 2001 From: Evangelos Voyiatzis Date: Tue, 7 Apr 2020 18:50:53 +0200 Subject: [PATCH 207/717] Update pair_cs.rst --- doc/src/pair_cs.rst | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/doc/src/pair_cs.rst b/doc/src/pair_cs.rst index 72332a87b2..9790c2defd 100644 --- a/doc/src/pair_cs.rst +++ b/doc/src/pair_cs.rst @@ -30,6 +30,9 @@ pair_style coul/wolf/cs command pair_style lj/cut/coul/long/cs command ======================================= +pair_style lj/class2/coul/long/cs command +========================================== + Syntax """""" @@ -37,7 +40,7 @@ Syntax pair_style style args -* style = *born/coul/dsf/cs* or *born/coul/long/cs* or *born/coul/wolf/cs* or *buck/coul/long/cs* or *coul/long/cs* or *coul/wolf/cs* or *lj/cut/coul/long/cs* +* style = *born/coul/dsf/cs* or *born/coul/long/cs* or *born/coul/wolf/cs* or *buck/coul/long/cs* or *coul/long/cs* or *coul/wolf/cs* or *lj/cut/coul/long/cs* or *lj/class2/coul/long/cs* * args = list of arguments for a particular style .. parsed-literal:: @@ -64,6 +67,9 @@ Syntax *lj/cut/coul/long/cs* args = cutoff (cutoff2) cutoff = global cutoff for LJ (and Coulombic if only 1 arg) (distance units) cutoff2 = global cutoff for Coulombic (optional) (distance units) + *lj/class2/coul/long/cs* args = cutoff (cutoff2) + cutoff = global cutoff for LJ (and Coulombic if only 1 arg) (distance units) + cutoff2 = global cutoff for Coulombic (optional) (distance units) Examples """""""" @@ -115,6 +121,7 @@ the "/cs" in the name: * :doc:`pair_style coul/long ` * :doc:`pair_style coul/wolf ` * :doc:`pair_style lj/cut/coul/long ` +* :doc:`pair_style lj/class2/coul/long ` except that they correctly treat the special case where the distance between two charged core and shell atoms in the same core/shell pair -- GitLab From 1fed78eecff29d3ef0ff25413fb38259d67adb5b Mon Sep 17 00:00:00 2001 From: Oliver Henrich Date: Wed, 8 Apr 2020 08:23:34 +0100 Subject: [PATCH 208/717] Removed abort condition, enabled capped force --- src/USER-CGDNA/bond_oxdna_fene.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/USER-CGDNA/bond_oxdna_fene.cpp b/src/USER-CGDNA/bond_oxdna_fene.cpp index 29a0189014..be59858e66 100644 --- a/src/USER-CGDNA/bond_oxdna_fene.cpp +++ b/src/USER-CGDNA/bond_oxdna_fene.cpp @@ -421,7 +421,7 @@ double BondOxdnaFene::single(int type, double rsq, int /*i*/, int /*j*/, sprintf(str,"FENE bond too long: " BIGINT_FORMAT " %g", update->ntimestep,sqrt(rsq)); error->warning(FLERR,str,0); - if (rlogarg <= -8.0) error->one(FLERR,"Bad FENE bond"); + rlogarg = 0.1; } double eng = -0.5 * k[type]*log(rlogarg); -- GitLab From 1c94415d1fffd42959fd32eee2b6ebc3a0706ebe Mon Sep 17 00:00:00 2001 From: Richard Berger Date: Wed, 8 Apr 2020 13:57:12 -0400 Subject: [PATCH 209/717] Remove whitespace --- cmake/Modules/Packages/GPU.cmake | 466 +++++++++++++++---------------- 1 file changed, 233 insertions(+), 233 deletions(-) diff --git a/cmake/Modules/Packages/GPU.cmake b/cmake/Modules/Packages/GPU.cmake index 0ed2e4ffcf..f9266657b3 100644 --- a/cmake/Modules/Packages/GPU.cmake +++ b/cmake/Modules/Packages/GPU.cmake @@ -1,260 +1,260 @@ - set(GPU_SOURCES_DIR ${LAMMPS_SOURCE_DIR}/GPU) - set(GPU_SOURCES ${GPU_SOURCES_DIR}/gpu_extra.h - ${GPU_SOURCES_DIR}/fix_gpu.h - ${GPU_SOURCES_DIR}/fix_gpu.cpp) - - set(GPU_API "opencl" CACHE STRING "API used by GPU package") - set(GPU_API_VALUES opencl cuda hip) - set_property(CACHE GPU_API PROPERTY STRINGS ${GPU_API_VALUES}) - validate_option(GPU_API GPU_API_VALUES) - string(TOUPPER ${GPU_API} GPU_API) - - set(GPU_PREC "mixed" CACHE STRING "LAMMPS GPU precision") - set(GPU_PREC_VALUES double mixed single) - set_property(CACHE GPU_PREC PROPERTY STRINGS ${GPU_PREC_VALUES}) - validate_option(GPU_PREC GPU_PREC_VALUES) - string(TOUPPER ${GPU_PREC} GPU_PREC) - - if(GPU_PREC STREQUAL "DOUBLE") - set(GPU_PREC_SETTING "DOUBLE_DOUBLE") - elseif(GPU_PREC STREQUAL "MIXED") - set(GPU_PREC_SETTING "SINGLE_DOUBLE") - elseif(GPU_PREC STREQUAL "SINGLE") - set(GPU_PREC_SETTING "SINGLE_SINGLE") +set(GPU_SOURCES_DIR ${LAMMPS_SOURCE_DIR}/GPU) +set(GPU_SOURCES ${GPU_SOURCES_DIR}/gpu_extra.h + ${GPU_SOURCES_DIR}/fix_gpu.h + ${GPU_SOURCES_DIR}/fix_gpu.cpp) + +set(GPU_API "opencl" CACHE STRING "API used by GPU package") +set(GPU_API_VALUES opencl cuda hip) +set_property(CACHE GPU_API PROPERTY STRINGS ${GPU_API_VALUES}) +validate_option(GPU_API GPU_API_VALUES) +string(TOUPPER ${GPU_API} GPU_API) + +set(GPU_PREC "mixed" CACHE STRING "LAMMPS GPU precision") +set(GPU_PREC_VALUES double mixed single) +set_property(CACHE GPU_PREC PROPERTY STRINGS ${GPU_PREC_VALUES}) +validate_option(GPU_PREC GPU_PREC_VALUES) +string(TOUPPER ${GPU_PREC} GPU_PREC) + +if(GPU_PREC STREQUAL "DOUBLE") + set(GPU_PREC_SETTING "DOUBLE_DOUBLE") +elseif(GPU_PREC STREQUAL "MIXED") + set(GPU_PREC_SETTING "SINGLE_DOUBLE") +elseif(GPU_PREC STREQUAL "SINGLE") + set(GPU_PREC_SETTING "SINGLE_SINGLE") +endif() + +file(GLOB GPU_LIB_SOURCES ${LAMMPS_LIB_SOURCE_DIR}/gpu/[^.]*.cpp) +file(MAKE_DIRECTORY ${LAMMPS_LIB_BINARY_DIR}/gpu) + +if(GPU_API STREQUAL "CUDA") + find_package(CUDA REQUIRED) + find_program(BIN2C bin2c) + if(NOT BIN2C) + message(FATAL_ERROR "Could not find bin2c, use -DBIN2C=/path/to/bin2c to help cmake finding it.") + endif() + option(CUDPP_OPT "Enable CUDPP_OPT" ON) + option(CUDA_MPS_SUPPORT "Enable tweaks to support CUDA Multi-process service (MPS)" OFF) + if(CUDA_MPS_SUPPORT) + set(GPU_CUDA_MPS_FLAGS "-DCUDA_PROXY") endif() - file(GLOB GPU_LIB_SOURCES ${LAMMPS_LIB_SOURCE_DIR}/gpu/[^.]*.cpp) - file(MAKE_DIRECTORY ${LAMMPS_LIB_BINARY_DIR}/gpu) - - if(GPU_API STREQUAL "CUDA") - find_package(CUDA REQUIRED) - find_program(BIN2C bin2c) - if(NOT BIN2C) - message(FATAL_ERROR "Could not find bin2c, use -DBIN2C=/path/to/bin2c to help cmake finding it.") - endif() - option(CUDPP_OPT "Enable CUDPP_OPT" ON) - option(CUDA_MPS_SUPPORT "Enable tweaks to support CUDA Multi-process service (MPS)" OFF) - if(CUDA_MPS_SUPPORT) - set(GPU_CUDA_MPS_FLAGS "-DCUDA_PROXY") - endif() + set(GPU_ARCH "sm_30" CACHE STRING "LAMMPS GPU CUDA SM primary architecture (e.g. sm_60)") - set(GPU_ARCH "sm_30" CACHE STRING "LAMMPS GPU CUDA SM primary architecture (e.g. sm_60)") + file(GLOB GPU_LIB_CU ${LAMMPS_LIB_SOURCE_DIR}/gpu/[^.]*.cu ${CMAKE_CURRENT_SOURCE_DIR}/gpu/[^.]*.cu) + list(REMOVE_ITEM GPU_LIB_CU ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_pppm.cu) - file(GLOB GPU_LIB_CU ${LAMMPS_LIB_SOURCE_DIR}/gpu/[^.]*.cu ${CMAKE_CURRENT_SOURCE_DIR}/gpu/[^.]*.cu) - list(REMOVE_ITEM GPU_LIB_CU ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_pppm.cu) + cuda_include_directories(${LAMMPS_LIB_SOURCE_DIR}/gpu ${LAMMPS_LIB_BINARY_DIR}/gpu) - cuda_include_directories(${LAMMPS_LIB_SOURCE_DIR}/gpu ${LAMMPS_LIB_BINARY_DIR}/gpu) + if(CUDPP_OPT) + cuda_include_directories(${LAMMPS_LIB_SOURCE_DIR}/gpu/cudpp_mini) + file(GLOB GPU_LIB_CUDPP_SOURCES ${LAMMPS_LIB_SOURCE_DIR}/gpu/cudpp_mini/[^.]*.cpp) + file(GLOB GPU_LIB_CUDPP_CU ${LAMMPS_LIB_SOURCE_DIR}/gpu/cudpp_mini/[^.]*.cu) + endif() - if(CUDPP_OPT) - cuda_include_directories(${LAMMPS_LIB_SOURCE_DIR}/gpu/cudpp_mini) - file(GLOB GPU_LIB_CUDPP_SOURCES ${LAMMPS_LIB_SOURCE_DIR}/gpu/cudpp_mini/[^.]*.cpp) - file(GLOB GPU_LIB_CUDPP_CU ${LAMMPS_LIB_SOURCE_DIR}/gpu/cudpp_mini/[^.]*.cu) - endif() + # build arch/gencode commands for nvcc based on CUDA toolkit version and use choice + # --arch translates directly instead of JIT, so this should be for the preferred or most common architecture + set(GPU_CUDA_GENCODE "-arch=${GPU_ARCH} ") + # Fermi (GPU Arch 2.x) is supported by CUDA 3.2 to CUDA 8.0 + if((CUDA_VERSION VERSION_GREATER "3.1") AND (CUDA_VERSION VERSION_LESS "9.0")) + string(APPEND GPU_CUDA_GENCODE "-gencode arch=compute_20,code=[sm_20,compute_20] ") + endif() + # Kepler (GPU Arch 3.x) is supported by CUDA 5 and later + if(CUDA_VERSION VERSION_GREATER "4.9") + string(APPEND GPU_CUDA_GENCODE "-gencode arch=compute_30,code=[sm_30,compute_30] -gencode arch=compute_35,code=[sm_35,compute_35] ") + endif() + # Maxwell (GPU Arch 5.x) is supported by CUDA 6 and later + if(CUDA_VERSION VERSION_GREATER "5.9") + string(APPEND GPU_CUDA_GENCODE "-gencode arch=compute_50,code=[sm_50,compute_50] -gencode arch=compute_52,code=[sm_52,compute_52] ") + endif() + # Pascal (GPU Arch 6.x) is supported by CUDA 8 and later + if(CUDA_VERSION VERSION_GREATER "7.9") + string(APPEND GPU_CUDA_GENCODE "-gencode arch=compute_60,code=[sm_60,compute_60] -gencode arch=compute_61,code=[sm_61,compute_61] ") + endif() + # Volta (GPU Arch 7.0) is supported by CUDA 9 and later + if(CUDA_VERSION VERSION_GREATER "8.9") + string(APPEND GPU_CUDA_GENCODE "-gencode arch=compute_70,code=[sm_70,compute_70] ") + endif() + # Turing (GPU Arch 7.5) is supported by CUDA 10 and later + if(CUDA_VERSION VERSION_GREATER "9.9") + string(APPEND GPU_CUDA_GENCODE "-gencode arch=compute_75,code=[sm_75,compute_75] ") + endif() - # build arch/gencode commands for nvcc based on CUDA toolkit version and use choice - # --arch translates directly instead of JIT, so this should be for the preferred or most common architecture - set(GPU_CUDA_GENCODE "-arch=${GPU_ARCH} ") - # Fermi (GPU Arch 2.x) is supported by CUDA 3.2 to CUDA 8.0 - if((CUDA_VERSION VERSION_GREATER "3.1") AND (CUDA_VERSION VERSION_LESS "9.0")) - string(APPEND GPU_CUDA_GENCODE "-gencode arch=compute_20,code=[sm_20,compute_20] ") - endif() - # Kepler (GPU Arch 3.x) is supported by CUDA 5 and later - if(CUDA_VERSION VERSION_GREATER "4.9") - string(APPEND GPU_CUDA_GENCODE "-gencode arch=compute_30,code=[sm_30,compute_30] -gencode arch=compute_35,code=[sm_35,compute_35] ") - endif() - # Maxwell (GPU Arch 5.x) is supported by CUDA 6 and later - if(CUDA_VERSION VERSION_GREATER "5.9") - string(APPEND GPU_CUDA_GENCODE "-gencode arch=compute_50,code=[sm_50,compute_50] -gencode arch=compute_52,code=[sm_52,compute_52] ") - endif() - # Pascal (GPU Arch 6.x) is supported by CUDA 8 and later - if(CUDA_VERSION VERSION_GREATER "7.9") - string(APPEND GPU_CUDA_GENCODE "-gencode arch=compute_60,code=[sm_60,compute_60] -gencode arch=compute_61,code=[sm_61,compute_61] ") - endif() - # Volta (GPU Arch 7.0) is supported by CUDA 9 and later - if(CUDA_VERSION VERSION_GREATER "8.9") - string(APPEND GPU_CUDA_GENCODE "-gencode arch=compute_70,code=[sm_70,compute_70] ") - endif() - # Turing (GPU Arch 7.5) is supported by CUDA 10 and later - if(CUDA_VERSION VERSION_GREATER "9.9") - string(APPEND GPU_CUDA_GENCODE "-gencode arch=compute_75,code=[sm_75,compute_75] ") - endif() + cuda_compile_fatbin(GPU_GEN_OBJS ${GPU_LIB_CU} OPTIONS + -DUNIX -O3 --use_fast_math -Wno-deprecated-gpu-targets -DNV_KERNEL -DUCL_CUDADR ${GPU_CUDA_GENCODE} -D_${GPU_PREC_SETTING}) + + cuda_compile(GPU_OBJS ${GPU_LIB_CUDPP_CU} OPTIONS ${CUDA_REQUEST_PIC} + -DUNIX -O3 --use_fast_math -Wno-deprecated-gpu-targets -DUCL_CUDADR ${GPU_CUDA_GENCODE} -D_${GPU_PREC_SETTING}) + + foreach(CU_OBJ ${GPU_GEN_OBJS}) + get_filename_component(CU_NAME ${CU_OBJ} NAME_WE) + string(REGEX REPLACE "^.*_lal_" "" CU_NAME "${CU_NAME}") + add_custom_command(OUTPUT ${LAMMPS_LIB_BINARY_DIR}/gpu/${CU_NAME}_cubin.h + COMMAND ${BIN2C} -c -n ${CU_NAME} ${CU_OBJ} > ${LAMMPS_LIB_BINARY_DIR}/gpu/${CU_NAME}_cubin.h + DEPENDS ${CU_OBJ} + COMMENT "Generating ${CU_NAME}_cubin.h") + list(APPEND GPU_LIB_SOURCES ${LAMMPS_LIB_BINARY_DIR}/gpu/${CU_NAME}_cubin.h) + endforeach() + set_directory_properties(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "${LAMMPS_LIB_BINARY_DIR}/gpu/*_cubin.h") + + + add_library(gpu STATIC ${GPU_LIB_SOURCES} ${GPU_LIB_CUDPP_SOURCES} ${GPU_OBJS}) + target_link_libraries(gpu PRIVATE ${CUDA_LIBRARIES} ${CUDA_CUDA_LIBRARY}) + target_include_directories(gpu PRIVATE ${LAMMPS_LIB_BINARY_DIR}/gpu ${CUDA_INCLUDE_DIRS}) + target_compile_definitions(gpu PRIVATE -D_${GPU_PREC_SETTING} -DMPI_GERYON -DUCL_NO_EXIT ${GPU_CUDA_MPS_FLAGS}) + if(CUDPP_OPT) + target_include_directories(gpu PRIVATE ${LAMMPS_LIB_SOURCE_DIR}/gpu/cudpp_mini) + target_compile_definitions(gpu PRIVATE -DUSE_CUDPP) + endif() - cuda_compile_fatbin(GPU_GEN_OBJS ${GPU_LIB_CU} OPTIONS - -DUNIX -O3 --use_fast_math -Wno-deprecated-gpu-targets -DNV_KERNEL -DUCL_CUDADR ${GPU_CUDA_GENCODE} -D_${GPU_PREC_SETTING}) - - cuda_compile(GPU_OBJS ${GPU_LIB_CUDPP_CU} OPTIONS ${CUDA_REQUEST_PIC} - -DUNIX -O3 --use_fast_math -Wno-deprecated-gpu-targets -DUCL_CUDADR ${GPU_CUDA_GENCODE} -D_${GPU_PREC_SETTING}) - - foreach(CU_OBJ ${GPU_GEN_OBJS}) - get_filename_component(CU_NAME ${CU_OBJ} NAME_WE) - string(REGEX REPLACE "^.*_lal_" "" CU_NAME "${CU_NAME}") - add_custom_command(OUTPUT ${LAMMPS_LIB_BINARY_DIR}/gpu/${CU_NAME}_cubin.h - COMMAND ${BIN2C} -c -n ${CU_NAME} ${CU_OBJ} > ${LAMMPS_LIB_BINARY_DIR}/gpu/${CU_NAME}_cubin.h - DEPENDS ${CU_OBJ} - COMMENT "Generating ${CU_NAME}_cubin.h") - list(APPEND GPU_LIB_SOURCES ${LAMMPS_LIB_BINARY_DIR}/gpu/${CU_NAME}_cubin.h) - endforeach() - set_directory_properties(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "${LAMMPS_LIB_BINARY_DIR}/gpu/*_cubin.h") - - - add_library(gpu STATIC ${GPU_LIB_SOURCES} ${GPU_LIB_CUDPP_SOURCES} ${GPU_OBJS}) - target_link_libraries(gpu PRIVATE ${CUDA_LIBRARIES} ${CUDA_CUDA_LIBRARY}) - target_include_directories(gpu PRIVATE ${LAMMPS_LIB_BINARY_DIR}/gpu ${CUDA_INCLUDE_DIRS}) - target_compile_definitions(gpu PRIVATE -D_${GPU_PREC_SETTING} -DMPI_GERYON -DUCL_NO_EXIT ${GPU_CUDA_MPS_FLAGS}) - if(CUDPP_OPT) - target_include_directories(gpu PRIVATE ${LAMMPS_LIB_SOURCE_DIR}/gpu/cudpp_mini) - target_compile_definitions(gpu PRIVATE -DUSE_CUDPP) + target_link_libraries(lammps PRIVATE gpu) + + add_executable(nvc_get_devices ${LAMMPS_LIB_SOURCE_DIR}/gpu/geryon/ucl_get_devices.cpp) + target_compile_definitions(nvc_get_devices PRIVATE -DUCL_CUDADR) + target_link_libraries(nvc_get_devices PRIVATE ${CUDA_LIBRARIES} ${CUDA_CUDA_LIBRARY}) + target_include_directories(nvc_get_devices PRIVATE ${CUDA_INCLUDE_DIRS}) + + +elseif(GPU_API STREQUAL "OPENCL") + if(${CMAKE_SYSTEM_NAME} STREQUAL "Windows") + # download and unpack support binaries for compilation of windows binaries. + set(LAMMPS_THIRDPARTY_URL "http://download.lammps.org/thirdparty") + file(DOWNLOAD "${LAMMPS_THIRDPARTY_URL}/opencl-win-devel.tar.gz" "${CMAKE_CURRENT_BINARY_DIR}/opencl-win-devel.tar.gz" + EXPECTED_MD5 2c00364888d5671195598b44c2e0d44d) + execute_process(COMMAND ${CMAKE_COMMAND} -E tar xzf opencl-win-devel.tar.gz WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) + add_library(OpenCL::OpenCL UNKNOWN IMPORTED) + if(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "x86") + set_target_properties(OpenCL::OpenCL PROPERTIES IMPORTED_LOCATION "${CMAKE_CURRENT_BINARY_DIR}/OpenCL/lib_win32/libOpenCL.dll") + elseif(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "x86_64") + set_target_properties(OpenCL::OpenCL PROPERTIES IMPORTED_LOCATION "${CMAKE_CURRENT_BINARY_DIR}/OpenCL/lib_win64/libOpenCL.dll") endif() - - target_link_libraries(lammps PRIVATE gpu) - - add_executable(nvc_get_devices ${LAMMPS_LIB_SOURCE_DIR}/gpu/geryon/ucl_get_devices.cpp) - target_compile_definitions(nvc_get_devices PRIVATE -DUCL_CUDADR) - target_link_libraries(nvc_get_devices PRIVATE ${CUDA_LIBRARIES} ${CUDA_CUDA_LIBRARY}) - target_include_directories(nvc_get_devices PRIVATE ${CUDA_INCLUDE_DIRS}) - - - elseif(GPU_API STREQUAL "OPENCL") - if(${CMAKE_SYSTEM_NAME} STREQUAL "Windows") - # download and unpack support binaries for compilation of windows binaries. - set(LAMMPS_THIRDPARTY_URL "http://download.lammps.org/thirdparty") - file(DOWNLOAD "${LAMMPS_THIRDPARTY_URL}/opencl-win-devel.tar.gz" "${CMAKE_CURRENT_BINARY_DIR}/opencl-win-devel.tar.gz" - EXPECTED_MD5 2c00364888d5671195598b44c2e0d44d) - execute_process(COMMAND ${CMAKE_COMMAND} -E tar xzf opencl-win-devel.tar.gz WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) - add_library(OpenCL::OpenCL UNKNOWN IMPORTED) - if(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "x86") - set_target_properties(OpenCL::OpenCL PROPERTIES IMPORTED_LOCATION "${CMAKE_CURRENT_BINARY_DIR}/OpenCL/lib_win32/libOpenCL.dll") - elseif(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "x86_64") - set_target_properties(OpenCL::OpenCL PROPERTIES IMPORTED_LOCATION "${CMAKE_CURRENT_BINARY_DIR}/OpenCL/lib_win64/libOpenCL.dll") + set_target_properties(OpenCL::OpenCL PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_CURRENT_BINARY_DIR}/OpenCL/include") + else() + find_package(OpenCL REQUIRED) + endif() + set(OCL_TUNE "generic" CACHE STRING "OpenCL Device Tuning") + set(OCL_TUNE_VALUES intel fermi kepler cypress generic) + set_property(CACHE OCL_TUNE PROPERTY STRINGS ${OCL_TUNE_VALUES}) + validate_option(OCL_TUNE OCL_TUNE_VALUES) + string(TOUPPER ${OCL_TUNE} OCL_TUNE) + + include(OpenCLUtils) + set(OCL_COMMON_HEADERS ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_preprocessor.h ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_aux_fun1.h) + + file(GLOB GPU_LIB_CU ${LAMMPS_LIB_SOURCE_DIR}/gpu/[^.]*.cu) + list(REMOVE_ITEM GPU_LIB_CU + ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_gayberne.cu + ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_gayberne_lj.cu + ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_re_squared.cu + ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_re_squared_lj.cu + ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_tersoff.cu + ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_tersoff_zbl.cu + ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_tersoff_mod.cu + ) + + foreach(GPU_KERNEL ${GPU_LIB_CU}) + get_filename_component(basename ${GPU_KERNEL} NAME_WE) + string(SUBSTRING ${basename} 4 -1 KERNEL_NAME) + GenerateOpenCLHeader(${KERNEL_NAME} ${CMAKE_CURRENT_BINARY_DIR}/gpu/${KERNEL_NAME}_cl.h ${OCL_COMMON_HEADERS} ${GPU_KERNEL}) + list(APPEND GPU_LIB_SOURCES ${CMAKE_CURRENT_BINARY_DIR}/gpu/${KERNEL_NAME}_cl.h) + endforeach() + + GenerateOpenCLHeader(gayberne ${CMAKE_CURRENT_BINARY_DIR}/gpu/gayberne_cl.h ${OCL_COMMON_HEADERS} ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_ellipsoid_extra.h ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_gayberne.cu) + GenerateOpenCLHeader(gayberne_lj ${CMAKE_CURRENT_BINARY_DIR}/gpu/gayberne_lj_cl.h ${OCL_COMMON_HEADERS} ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_ellipsoid_extra.h ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_gayberne_lj.cu) + GenerateOpenCLHeader(re_squared ${CMAKE_CURRENT_BINARY_DIR}/gpu/re_squared_cl.h ${OCL_COMMON_HEADERS} ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_ellipsoid_extra.h ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_re_squared.cu) + GenerateOpenCLHeader(re_squared_lj ${CMAKE_CURRENT_BINARY_DIR}/gpu/re_squared_lj_cl.h ${OCL_COMMON_HEADERS} ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_ellipsoid_extra.h ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_re_squared_lj.cu) + GenerateOpenCLHeader(tersoff ${CMAKE_CURRENT_BINARY_DIR}/gpu/tersoff_cl.h ${OCL_COMMON_HEADERS} ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_tersoff_extra.h ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_tersoff.cu) + GenerateOpenCLHeader(tersoff_zbl ${CMAKE_CURRENT_BINARY_DIR}/gpu/tersoff_zbl_cl.h ${OCL_COMMON_HEADERS} ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_tersoff_zbl_extra.h ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_tersoff_zbl.cu) + GenerateOpenCLHeader(tersoff_mod ${CMAKE_CURRENT_BINARY_DIR}/gpu/tersoff_mod_cl.h ${OCL_COMMON_HEADERS} ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_tersoff_mod_extra.h ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_tersoff_mod.cu) + + list(APPEND GPU_LIB_SOURCES + ${CMAKE_CURRENT_BINARY_DIR}/gpu/gayberne_cl.h + ${CMAKE_CURRENT_BINARY_DIR}/gpu/gayberne_lj_cl.h + ${CMAKE_CURRENT_BINARY_DIR}/gpu/re_squared_cl.h + ${CMAKE_CURRENT_BINARY_DIR}/gpu/re_squared_lj_cl.h + ${CMAKE_CURRENT_BINARY_DIR}/gpu/tersoff_cl.h + ${CMAKE_CURRENT_BINARY_DIR}/gpu/tersoff_zbl_cl.h + ${CMAKE_CURRENT_BINARY_DIR}/gpu/tersoff_mod_cl.h + ) + + add_library(gpu STATIC ${GPU_LIB_SOURCES}) + target_link_libraries(gpu PRIVATE OpenCL::OpenCL) + target_include_directories(gpu PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/gpu) + target_compile_definitions(gpu PRIVATE -D_${GPU_PREC_SETTING} -D${OCL_TUNE}_OCL -DMPI_GERYON -DUCL_NO_EXIT) + target_compile_definitions(gpu PRIVATE -DUSE_OPENCL) + + target_link_libraries(lammps PRIVATE gpu) + + add_executable(ocl_get_devices ${LAMMPS_LIB_SOURCE_DIR}/gpu/geryon/ucl_get_devices.cpp) + target_compile_definitions(ocl_get_devices PRIVATE -DUCL_OPENCL) + target_link_libraries(ocl_get_devices PRIVATE OpenCL::OpenCL) +elseif(GPU_API STREQUAL "HIP") + if(NOT DEFINED HIP_PATH) + if(NOT DEFINED ENV{HIP_PATH}) + set(HIP_PATH "/opt/rocm/hip" CACHE PATH "Path to which HIP has been installed") + else() + set(HIP_PATH $ENV{HIP_PATH} CACHE PATH "Path to which HIP has been installed") endif() - set_target_properties(OpenCL::OpenCL PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_CURRENT_BINARY_DIR}/OpenCL/include") - else() - find_package(OpenCL REQUIRED) - endif() - set(OCL_TUNE "generic" CACHE STRING "OpenCL Device Tuning") - set(OCL_TUNE_VALUES intel fermi kepler cypress generic) - set_property(CACHE OCL_TUNE PROPERTY STRINGS ${OCL_TUNE_VALUES}) - validate_option(OCL_TUNE OCL_TUNE_VALUES) - string(TOUPPER ${OCL_TUNE} OCL_TUNE) - - include(OpenCLUtils) - set(OCL_COMMON_HEADERS ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_preprocessor.h ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_aux_fun1.h) - - file(GLOB GPU_LIB_CU ${LAMMPS_LIB_SOURCE_DIR}/gpu/[^.]*.cu) - list(REMOVE_ITEM GPU_LIB_CU - ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_gayberne.cu - ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_gayberne_lj.cu - ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_re_squared.cu - ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_re_squared_lj.cu - ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_tersoff.cu - ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_tersoff_zbl.cu - ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_tersoff_mod.cu - ) - - foreach(GPU_KERNEL ${GPU_LIB_CU}) - get_filename_component(basename ${GPU_KERNEL} NAME_WE) - string(SUBSTRING ${basename} 4 -1 KERNEL_NAME) - GenerateOpenCLHeader(${KERNEL_NAME} ${CMAKE_CURRENT_BINARY_DIR}/gpu/${KERNEL_NAME}_cl.h ${OCL_COMMON_HEADERS} ${GPU_KERNEL}) - list(APPEND GPU_LIB_SOURCES ${CMAKE_CURRENT_BINARY_DIR}/gpu/${KERNEL_NAME}_cl.h) - endforeach() - - GenerateOpenCLHeader(gayberne ${CMAKE_CURRENT_BINARY_DIR}/gpu/gayberne_cl.h ${OCL_COMMON_HEADERS} ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_ellipsoid_extra.h ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_gayberne.cu) - GenerateOpenCLHeader(gayberne_lj ${CMAKE_CURRENT_BINARY_DIR}/gpu/gayberne_lj_cl.h ${OCL_COMMON_HEADERS} ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_ellipsoid_extra.h ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_gayberne_lj.cu) - GenerateOpenCLHeader(re_squared ${CMAKE_CURRENT_BINARY_DIR}/gpu/re_squared_cl.h ${OCL_COMMON_HEADERS} ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_ellipsoid_extra.h ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_re_squared.cu) - GenerateOpenCLHeader(re_squared_lj ${CMAKE_CURRENT_BINARY_DIR}/gpu/re_squared_lj_cl.h ${OCL_COMMON_HEADERS} ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_ellipsoid_extra.h ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_re_squared_lj.cu) - GenerateOpenCLHeader(tersoff ${CMAKE_CURRENT_BINARY_DIR}/gpu/tersoff_cl.h ${OCL_COMMON_HEADERS} ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_tersoff_extra.h ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_tersoff.cu) - GenerateOpenCLHeader(tersoff_zbl ${CMAKE_CURRENT_BINARY_DIR}/gpu/tersoff_zbl_cl.h ${OCL_COMMON_HEADERS} ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_tersoff_zbl_extra.h ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_tersoff_zbl.cu) - GenerateOpenCLHeader(tersoff_mod ${CMAKE_CURRENT_BINARY_DIR}/gpu/tersoff_mod_cl.h ${OCL_COMMON_HEADERS} ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_tersoff_mod_extra.h ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_tersoff_mod.cu) - - list(APPEND GPU_LIB_SOURCES - ${CMAKE_CURRENT_BINARY_DIR}/gpu/gayberne_cl.h - ${CMAKE_CURRENT_BINARY_DIR}/gpu/gayberne_lj_cl.h - ${CMAKE_CURRENT_BINARY_DIR}/gpu/re_squared_cl.h - ${CMAKE_CURRENT_BINARY_DIR}/gpu/re_squared_lj_cl.h - ${CMAKE_CURRENT_BINARY_DIR}/gpu/tersoff_cl.h - ${CMAKE_CURRENT_BINARY_DIR}/gpu/tersoff_zbl_cl.h - ${CMAKE_CURRENT_BINARY_DIR}/gpu/tersoff_mod_cl.h - ) - - add_library(gpu STATIC ${GPU_LIB_SOURCES}) - target_link_libraries(gpu PRIVATE OpenCL::OpenCL) - target_include_directories(gpu PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/gpu) - target_compile_definitions(gpu PRIVATE -D_${GPU_PREC_SETTING} -D${OCL_TUNE}_OCL -DMPI_GERYON -DUCL_NO_EXIT) - target_compile_definitions(gpu PRIVATE -DUSE_OPENCL) - - target_link_libraries(lammps PRIVATE gpu) - - add_executable(ocl_get_devices ${LAMMPS_LIB_SOURCE_DIR}/gpu/geryon/ucl_get_devices.cpp) - target_compile_definitions(ocl_get_devices PRIVATE -DUCL_OPENCL) - target_link_libraries(ocl_get_devices PRIVATE OpenCL::OpenCL) - elseif(GPU_API STREQUAL "HIP") - if(NOT DEFINED HIP_PATH) - if(NOT DEFINED ENV{HIP_PATH}) - set(HIP_PATH "/opt/rocm/hip" CACHE PATH "Path to which HIP has been installed") - else() - set(HIP_PATH $ENV{HIP_PATH} CACHE PATH "Path to which HIP has been installed") - endif() - endif() - set(CMAKE_MODULE_PATH "${HIP_PATH}/cmake" ${CMAKE_MODULE_PATH}) - find_package(HIP REQUIRED) + endif() + set(CMAKE_MODULE_PATH "${HIP_PATH}/cmake" ${CMAKE_MODULE_PATH}) + find_package(HIP REQUIRED) - set(HIP_ARCH "gfx906") + set(HIP_ARCH "gfx906") - file(GLOB GPU_LIB_CU ${LAMMPS_LIB_SOURCE_DIR}/gpu/[^.]*.cu ${CMAKE_CURRENT_SOURCE_DIR}/gpu/[^.]*.cu) - list(REMOVE_ITEM GPU_LIB_CU ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_pppm.cu) + file(GLOB GPU_LIB_CU ${LAMMPS_LIB_SOURCE_DIR}/gpu/[^.]*.cu ${CMAKE_CURRENT_SOURCE_DIR}/gpu/[^.]*.cu) + list(REMOVE_ITEM GPU_LIB_CU ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_pppm.cu) - set(GPU_LIB_CU_HIP "") - foreach(CU_FILE ${GPU_LIB_CU}) - get_filename_component(CU_NAME ${CU_FILE} NAME_WE) - string(REGEX REPLACE "^.*lal_" "" CU_NAME "${CU_NAME}") + set(GPU_LIB_CU_HIP "") + foreach(CU_FILE ${GPU_LIB_CU}) + get_filename_component(CU_NAME ${CU_FILE} NAME_WE) + string(REGEX REPLACE "^.*lal_" "" CU_NAME "${CU_NAME}") - set(CU_CPP_FILE "${LAMMPS_LIB_BINARY_DIR}/gpu/${CU_NAME}.cu.cpp") - set(CUBIN_FILE "${LAMMPS_LIB_BINARY_DIR}/gpu/${CU_NAME}.cubin") - set(CUBIN_H_FILE "${LAMMPS_LIB_BINARY_DIR}/gpu/${CU_NAME}_cubin.h") + set(CU_CPP_FILE "${LAMMPS_LIB_BINARY_DIR}/gpu/${CU_NAME}.cu.cpp") + set(CUBIN_FILE "${LAMMPS_LIB_BINARY_DIR}/gpu/${CU_NAME}.cubin") + set(CUBIN_H_FILE "${LAMMPS_LIB_BINARY_DIR}/gpu/${CU_NAME}_cubin.h") - configure_file(${CU_FILE} ${CU_CPP_FILE} COPYONLY) + configure_file(${CU_FILE} ${CU_CPP_FILE} COPYONLY) - add_custom_command(OUTPUT ${CUBIN_FILE} - VERBATIM COMMAND ${HIP_HIPCC_EXECUTABLE} --genco -t="${HIP_ARCH}" -f=\"-O3 -ffast-math -DUSE_HIP -D_${GPU_PREC_SETTING} -I${LAMMPS_LIB_SOURCE_DIR}/gpu\" -o ${CUBIN_FILE} ${CU_CPP_FILE} - DEPENDS ${CU_CPP_FILE} - COMMENT "Generating ${CU_NAME}.cubin") + add_custom_command(OUTPUT ${CUBIN_FILE} + VERBATIM COMMAND ${HIP_HIPCC_EXECUTABLE} --genco -t="${HIP_ARCH}" -f=\"-O3 -ffast-math -DUSE_HIP -D_${GPU_PREC_SETTING} -I${LAMMPS_LIB_SOURCE_DIR}/gpu\" -o ${CUBIN_FILE} ${CU_CPP_FILE} + DEPENDS ${CU_CPP_FILE} + COMMENT "Generating ${CU_NAME}.cubin") - add_custom_command(OUTPUT ${CUBIN_H_FILE} - COMMAND ${CMAKE_COMMAND} -D SOURCE_DIR=${CMAKE_CURRENT_SOURCE_DIR} -D VARNAME=${CU_NAME} -D HEADER_FILE=${CUBIN_H_FILE} -D SOURCE_FILES=${CUBIN_FILE} -P ${CMAKE_CURRENT_SOURCE_DIR}/Modules/GenerateBinaryHeader.cmake - DEPENDS ${CUBIN_FILE} - COMMENT "Generating ${CU_NAME}_cubin.h") + add_custom_command(OUTPUT ${CUBIN_H_FILE} + COMMAND ${CMAKE_COMMAND} -D SOURCE_DIR=${CMAKE_CURRENT_SOURCE_DIR} -D VARNAME=${CU_NAME} -D HEADER_FILE=${CUBIN_H_FILE} -D SOURCE_FILES=${CUBIN_FILE} -P ${CMAKE_CURRENT_SOURCE_DIR}/Modules/GenerateBinaryHeader.cmake + DEPENDS ${CUBIN_FILE} + COMMENT "Generating ${CU_NAME}_cubin.h") - list(APPEND GPU_LIB_SOURCES ${CUBIN_H_FILE}) - endforeach() + list(APPEND GPU_LIB_SOURCES ${CUBIN_H_FILE}) + endforeach() - set_directory_properties(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "${LAMMPS_LIB_BINARY_DIR}/gpu/*_cubin.h ${LAMMPS_LIB_BINARY_DIR}/gpu/*.cu.cpp") + set_directory_properties(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "${LAMMPS_LIB_BINARY_DIR}/gpu/*_cubin.h ${LAMMPS_LIB_BINARY_DIR}/gpu/*.cu.cpp") - hip_add_library(gpu STATIC ${GPU_LIB_SOURCES}) - target_include_directories(gpu PRIVATE ${LAMMPS_LIB_BINARY_DIR}/gpu) - target_compile_definitions(gpu PRIVATE -D_${GPU_PREC_SETTING} -DMPI_GERYON -DUCL_NO_EXIT) - target_compile_definitions(gpu PRIVATE -DUSE_HIP) + hip_add_library(gpu STATIC ${GPU_LIB_SOURCES}) + target_include_directories(gpu PRIVATE ${LAMMPS_LIB_BINARY_DIR}/gpu) + target_compile_definitions(gpu PRIVATE -D_${GPU_PREC_SETTING} -DMPI_GERYON -DUCL_NO_EXIT) + target_compile_definitions(gpu PRIVATE -DUSE_HIP) - hip_add_executable(hip_get_devices ${LAMMPS_LIB_SOURCE_DIR}/gpu/geryon/ucl_get_devices.cpp) - target_compile_definitions(hip_get_devices PRIVATE -DUCL_HIP) + hip_add_executable(hip_get_devices ${LAMMPS_LIB_SOURCE_DIR}/gpu/geryon/ucl_get_devices.cpp) + target_compile_definitions(hip_get_devices PRIVATE -DUCL_HIP) - target_link_libraries(lammps PRIVATE gpu) - endif() + target_link_libraries(lammps PRIVATE gpu) +endif() - # GPU package - FindStyleHeaders(${GPU_SOURCES_DIR} FIX_CLASS fix_ FIX) +# GPU package +FindStyleHeaders(${GPU_SOURCES_DIR} FIX_CLASS fix_ FIX) - set_property(GLOBAL PROPERTY "GPU_SOURCES" "${GPU_SOURCES}") +set_property(GLOBAL PROPERTY "GPU_SOURCES" "${GPU_SOURCES}") - # detects styles which have GPU version - RegisterStylesExt(${GPU_SOURCES_DIR} gpu GPU_SOURCES) +# detects styles which have GPU version +RegisterStylesExt(${GPU_SOURCES_DIR} gpu GPU_SOURCES) - get_property(GPU_SOURCES GLOBAL PROPERTY GPU_SOURCES) +get_property(GPU_SOURCES GLOBAL PROPERTY GPU_SOURCES) - target_link_libraries(gpu PRIVATE MPI::MPI_CXX) - if(BUILD_LIB AND NOT BUILD_SHARED_LIBS) - install(TARGETS gpu EXPORT LAMMPS_Targets LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) - endif() - target_compile_definitions(gpu PRIVATE -DLAMMPS_${LAMMPS_SIZES}) - set_target_properties(gpu PROPERTIES OUTPUT_NAME lammps_gpu${LAMMPS_LIB_SUFFIX}) - target_sources(lammps PRIVATE ${GPU_SOURCES}) - target_include_directories(lammps PRIVATE ${GPU_SOURCES_DIR}) +target_link_libraries(gpu PRIVATE MPI::MPI_CXX) +if(BUILD_LIB AND NOT BUILD_SHARED_LIBS) + install(TARGETS gpu EXPORT LAMMPS_Targets LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) +endif() +target_compile_definitions(gpu PRIVATE -DLAMMPS_${LAMMPS_SIZES}) +set_target_properties(gpu PROPERTIES OUTPUT_NAME lammps_gpu${LAMMPS_LIB_SUFFIX}) +target_sources(lammps PRIVATE ${GPU_SOURCES}) +target_include_directories(lammps PRIVATE ${GPU_SOURCES_DIR}) -- GitLab From e5b521e01111a854f8ec43c69f16b29bc54077de Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Wed, 8 Apr 2020 18:31:46 -0400 Subject: [PATCH 210/717] remove BUILD_EXE and BUILD_LIB options from CMake files. we always build both. --- cmake/CMakeLists.txt | 142 +++++++++------------- cmake/Modules/Packages/GPU.cmake | 2 +- cmake/Modules/Packages/MESSAGE.cmake | 2 +- cmake/Modules/Packages/USER-COLVARS.cmake | 4 +- cmake/Modules/Packages/USER-MOLFILE.cmake | 2 +- cmake/Modules/Packages/USER-QMMM.cmake | 5 +- cmake/Modules/Testing.cmake | 2 +- cmake/README.md | 20 --- 8 files changed, 66 insertions(+), 113 deletions(-) diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index b26689dd1f..a22d0fbfaf 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -80,51 +80,34 @@ endif() ######################################################################## # User input options # ######################################################################## -option(BUILD_EXE "Build lmp binary" ON) -if(BUILD_EXE) - set(LAMMPS_MACHINE "" CACHE STRING "Suffix to append to lmp binary (WON'T enable any features automatically") - mark_as_advanced(LAMMPS_MACHINE) - if(LAMMPS_MACHINE) - set(LAMMPS_MACHINE "_${LAMMPS_MACHINE}") - endif() - set(LAMMPS_BINARY lmp${LAMMPS_MACHINE}) +set(LAMMPS_MACHINE "" CACHE STRING "Suffix to append to lmp binary (WON'T enable any features automatically") +mark_as_advanced(LAMMPS_MACHINE) +if(LAMMPS_MACHINE) + set(LAMMPS_MACHINE "_${LAMMPS_MACHINE}") endif() +set(LAMMPS_BINARY lmp${LAMMPS_MACHINE}) -option(BUILD_LIB "Build LAMMPS library" OFF) -if(BUILD_LIB) - option(BUILD_SHARED_LIBS "Build shared library" OFF) - if(BUILD_SHARED_LIBS) # for all pkg libs, mpi_stubs and linalg - set(CMAKE_POSITION_INDEPENDENT_CODE ON) - endif() - set(LAMMPS_LIB_SUFFIX "" CACHE STRING "Suffix to append to liblammps and pkg-config file") - mark_as_advanced(LAMMPS_LIB_SUFFIX) - if(LAMMPS_LIB_SUFFIX) - set(LAMMPS_LIB_SUFFIX "_${LAMMPS_LIB_SUFFIX}") - endif() +option(BUILD_SHARED_LIBS "Build shared library" OFF) +if(BUILD_SHARED_LIBS) # for all pkg libs, mpi_stubs and linalg + set(CMAKE_POSITION_INDEPENDENT_CODE ON) +endif() +set(LAMMPS_LIB_SUFFIX "" CACHE STRING "Suffix to append to liblammps and pkg-config file") +mark_as_advanced(LAMMPS_LIB_SUFFIX) +if(LAMMPS_LIB_SUFFIX) + set(LAMMPS_LIB_SUFFIX "_${LAMMPS_LIB_SUFFIX}") endif() option(BUILD_TOOLS "Build and install LAMMPS tools (msi2lmp, binary2txt, chain)" OFF) include(GNUInstallDirs) file(GLOB ALL_SOURCES ${LAMMPS_SOURCE_DIR}/[^.]*.cpp) -if(BUILD_LIB) - file(GLOB MAIN_SOURCES ${LAMMPS_SOURCE_DIR}/main.cpp) - list(REMOVE_ITEM ALL_SOURCES ${MAIN_SOURCES}) - add_library(lammps ${ALL_SOURCES}) - if(BUILD_EXE) - add_executable(lmp ${MAIN_SOURCES}) - target_link_libraries(lmp PRIVATE lammps) - set_target_properties(lmp PROPERTIES OUTPUT_NAME ${LAMMPS_BINARY}) - install(TARGETS lmp EXPORT LAMMPS_Targets DESTINATION ${CMAKE_INSTALL_BINDIR}) - endif() -else() - if(NOT BUILD_EXE) - message(FATAL_ERROR "You need to at least enable one of two following options: BUILD_LIB or BUILD_EXE") - endif() - add_executable(lammps ${ALL_SOURCES}) - set_target_properties(lammps PROPERTIES OUTPUT_NAME ${LAMMPS_BINARY}) - install(TARGETS lammps DESTINATION ${CMAKE_INSTALL_BINDIR}) -endif() +file(GLOB MAIN_SOURCES ${LAMMPS_SOURCE_DIR}/main.cpp) +list(REMOVE_ITEM ALL_SOURCES ${MAIN_SOURCES}) +add_library(lammps ${ALL_SOURCES}) +add_executable(lmp ${MAIN_SOURCES}) +target_link_libraries(lmp PRIVATE lammps) +set_target_properties(lmp PROPERTIES OUTPUT_NAME ${LAMMPS_BINARY}) +install(TARGETS lmp EXPORT LAMMPS_Targets DESTINATION ${CMAKE_INSTALL_BINDIR}) option(CMAKE_VERBOSE_MAKEFILE "Generate verbose Makefiles" OFF) @@ -184,7 +167,7 @@ else() enable_language(C) file(GLOB MPI_SOURCES ${LAMMPS_SOURCE_DIR}/STUBS/mpi.c) add_library(mpi_stubs STATIC ${MPI_SOURCES}) - if(BUILD_LIB AND NOT BUILD_SHARED_LIBS) + if(NOT BUILD_SHARED_LIBS) install(TARGETS mpi_stubs EXPORT LAMMPS_Targets LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) endif() set_target_properties(mpi_stubs PROPERTIES OUTPUT_NAME lammps_mpi_stubs${LAMMPS_LIB_SUFFIX}) @@ -271,7 +254,7 @@ if(PKG_MSCG OR PKG_USER-ATC OR PKG_USER-AWPMD OR PKG_USER-QUIP OR PKG_LATTE) enable_language(Fortran) file(GLOB LAPACK_SOURCES ${LAMMPS_LIB_SOURCE_DIR}/linalg/[^.]*.[fF]) add_library(linalg STATIC ${LAPACK_SOURCES}) - if(BUILD_LIB AND NOT BUILD_SHARED_LIBS) + if(NOT BUILD_SHARED_LIBS) install(TARGETS linalg EXPORT LAMMPS_Targets LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) endif() set_target_properties(linalg PROPERTIES OUTPUT_NAME lammps_linalg${LAMMPS_LIB_SUFFIX}) @@ -432,7 +415,7 @@ foreach(SIMPLE_LIB POEMS USER-ATC USER-AWPMD USER-H5MD) ${LAMMPS_LIB_SOURCE_DIR}/${PKG_LIB}/[^.]*.c ${LAMMPS_LIB_SOURCE_DIR}/${PKG_LIB}/[^.]*.cpp) add_library(${PKG_LIB} STATIC ${${PKG_LIB}_SOURCES}) - if(BUILD_LIB AND NOT BUILD_SHARED_LIBS) + if(NOT BUILD_SHARED_LIBS) install(TARGETS ${PKG_LIB} EXPORT LAMMPS_Targets LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) endif() set_target_properties(${PKG_LIB} PROPERTIES OUTPUT_NAME lammps_${PKG_LIB}${LAMMPS_LIB_SUFFIX}) @@ -532,44 +515,39 @@ list (FIND LANGUAGES "Fortran" _index) if (${_index} GREATER -1) target_link_libraries(lammps PRIVATE ${CMAKE_Fortran_IMPLICIT_LINK_LIBRARIES}) endif() -if(BUILD_LIB) - set(LAMMPS_CXX_HEADERS angle.h atom.h bond.h citeme.h comm.h compute.h dihedral.h domain.h error.h fix.h force.h group.h improper.h - input.h info.h kspace.h lammps.h lattice.h library.h lmppython.h lmptype.h memory.h modify.h neighbor.h neigh_list.h output.h - pair.h pointers.h region.h timer.h universe.h update.h variable.h) - if(LAMMPS_EXCEPTIONS) - list(APPEND LAMMPS_CXX_HEADERS exceptions.h) - endif() - - set_target_properties(lammps PROPERTIES OUTPUT_NAME lammps${LAMMPS_LIB_SUFFIX}) - set_target_properties(lammps PROPERTIES SOVERSION ${SOVERSION}) - install(TARGETS lammps EXPORT LAMMPS_Targets LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) - target_include_directories(lammps PUBLIC $) - file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/includes/lammps) - foreach(_HEADER ${LAMMPS_CXX_HEADERS}) - add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/includes/lammps/${_HEADER} COMMAND ${CMAKE_COMMAND} -E copy_if_different ${LAMMPS_SOURCE_DIR}/${_HEADER} ${CMAKE_CURRENT_BINARY_DIR}/includes/lammps/${_HEADER} DEPENDS ${LAMMPS_SOURCE_DIR}/${_HEADER}) - add_custom_target(${_HEADER} DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/includes/lammps/${_HEADER}) - add_dependencies(lammps ${_HEADER}) - install(FILES ${LAMMPS_SOURCE_DIR}/${_HEADER} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/lammps) - endforeach() - target_include_directories(lammps INTERFACE $) - add_library(LAMMPS::lammps ALIAS lammps) - get_target_property(LAMMPS_DEFINES lammps INTERFACE_COMPILE_DEFINITIONS) - set(LAMMPS_API_DEFINES) - foreach(_DEF ${LAMMPS_DEFINES}) - set(LAMMPS_API_DEFINES "${LAMMPS_API_DEFINES} -D${_DEF}") - endforeach() - configure_file(pkgconfig/liblammps.pc.in ${CMAKE_CURRENT_BINARY_DIR}/liblammps${LAMMPS_LIB_SUFFIX}.pc @ONLY) - install(FILES ${CMAKE_CURRENT_BINARY_DIR}/liblammps${LAMMPS_LIB_SUFFIX}.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) - install(EXPORT LAMMPS_Targets FILE LAMMPS_Targets.cmake NAMESPACE LAMMPS:: DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/LAMMPS) - include(CMakePackageConfigHelpers) - configure_file(LAMMPSConfig.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/LAMMPSConfig.cmake @ONLY) - write_basic_package_version_file("LAMMPSConfigVersion.cmake" VERSION ${PROJECT_VERSION} COMPATIBILITY ExactVersion) - install(FILES "${CMAKE_CURRENT_BINARY_DIR}/LAMMPSConfig.cmake" "${CMAKE_CURRENT_BINARY_DIR}/LAMMPSConfigVersion.cmake" DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/LAMMPS) -endif() - -if(BUILD_EXE) - install(FILES ${LAMMPS_DOC_DIR}/lammps.1 DESTINATION ${CMAKE_INSTALL_MANDIR}/man1 RENAME ${LAMMPS_BINARY}.1) -endif() +set(LAMMPS_CXX_HEADERS angle.h atom.h bond.h citeme.h comm.h compute.h dihedral.h domain.h error.h fix.h force.h group.h improper.h + input.h info.h kspace.h lammps.h lattice.h library.h lmppython.h lmptype.h memory.h modify.h neighbor.h neigh_list.h output.h + pair.h pointers.h region.h timer.h universe.h update.h variable.h) +if(LAMMPS_EXCEPTIONS) + list(APPEND LAMMPS_CXX_HEADERS exceptions.h) +endif() + +set_target_properties(lammps PROPERTIES OUTPUT_NAME lammps${LAMMPS_LIB_SUFFIX}) +set_target_properties(lammps PROPERTIES SOVERSION ${SOVERSION}) +install(TARGETS lammps EXPORT LAMMPS_Targets LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) +target_include_directories(lammps PUBLIC $) +file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/includes/lammps) +foreach(_HEADER ${LAMMPS_CXX_HEADERS}) + add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/includes/lammps/${_HEADER} COMMAND ${CMAKE_COMMAND} -E copy_if_different ${LAMMPS_SOURCE_DIR}/${_HEADER} ${CMAKE_CURRENT_BINARY_DIR}/includes/lammps/${_HEADER} DEPENDS ${LAMMPS_SOURCE_DIR}/${_HEADER}) + add_custom_target(${_HEADER} DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/includes/lammps/${_HEADER}) + add_dependencies(lammps ${_HEADER}) + install(FILES ${LAMMPS_SOURCE_DIR}/${_HEADER} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/lammps) +endforeach() +target_include_directories(lammps INTERFACE $) +add_library(LAMMPS::lammps ALIAS lammps) +get_target_property(LAMMPS_DEFINES lammps INTERFACE_COMPILE_DEFINITIONS) +set(LAMMPS_API_DEFINES) +foreach(_DEF ${LAMMPS_DEFINES}) + set(LAMMPS_API_DEFINES "${LAMMPS_API_DEFINES} -D${_DEF}") +endforeach() +configure_file(pkgconfig/liblammps.pc.in ${CMAKE_CURRENT_BINARY_DIR}/liblammps${LAMMPS_LIB_SUFFIX}.pc @ONLY) +install(FILES ${CMAKE_CURRENT_BINARY_DIR}/liblammps${LAMMPS_LIB_SUFFIX}.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) +install(EXPORT LAMMPS_Targets FILE LAMMPS_Targets.cmake NAMESPACE LAMMPS:: DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/LAMMPS) +include(CMakePackageConfigHelpers) +configure_file(LAMMPSConfig.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/LAMMPSConfig.cmake @ONLY) +write_basic_package_version_file("LAMMPSConfigVersion.cmake" VERSION ${PROJECT_VERSION} COMPATIBILITY ExactVersion) +install(FILES "${CMAKE_CURRENT_BINARY_DIR}/LAMMPSConfig.cmake" "${CMAKE_CURRENT_BINARY_DIR}/LAMMPSConfigVersion.cmake" DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/LAMMPS) +install(FILES ${LAMMPS_DOC_DIR}/lammps.1 DESTINATION ${CMAKE_INSTALL_MANDIR}/man1 RENAME ${LAMMPS_BINARY}.1) if(BUILD_TOOLS) add_executable(binary2txt ${LAMMPS_TOOLS_DIR}/binary2txt.cpp) @@ -620,7 +598,7 @@ install( # conventional build. Only available, if a shared library is built. # This is primarily for people that only want to use the Python wrapper. ############################################################################### -if(BUILD_LIB AND BUILD_SHARED_LIBS) +if(BUILD_SHARED_LIBS) if(CMAKE_VERSION VERSION_LESS 3.12) find_package(PythonInterp) # Deprecated since version 3.12 else() @@ -650,7 +628,7 @@ endif() # LAMMPS for package managers and with different prefix settings. # This requires either a shared library or that the PYTHON package is included. ############################################################################### -if((BUILD_LIB AND BUILD_SHARED_LIBS) OR (PKG_PYTHON)) +if(BUILD_SHARED_LIBS) OR (PKG_PYTHON)) if(CMAKE_VERSION VERSION_LESS 3.12) find_package(PythonInterp) # Deprecated since version 3.12 else() @@ -710,9 +688,7 @@ if (${_index} GREATER -1) C Flags: ${CMAKE_C_FLAGS} ${CMAKE_C_FLAGS_${BTYPE}}") endif() message(STATUS "<<< Linker flags: >>>") -if(BUILD_EXE) - message(STATUS "Executable name: ${LAMMPS_BINARY}") -endif() +message(STATUS "Executable name: ${LAMMPS_BINARY}") if(CMAKE_EXE_LINKER_FLAGS) message(STATUS "Executable linker flags: ${CMAKE_EXE_LINKER_FLAGS}") endif() diff --git a/cmake/Modules/Packages/GPU.cmake b/cmake/Modules/Packages/GPU.cmake index 7c05c02b68..b9e63f55da 100644 --- a/cmake/Modules/Packages/GPU.cmake +++ b/cmake/Modules/Packages/GPU.cmake @@ -200,7 +200,7 @@ get_property(GPU_SOURCES GLOBAL PROPERTY GPU_SOURCES) target_link_libraries(gpu PRIVATE MPI::MPI_CXX) - if(BUILD_LIB AND NOT BUILD_SHARED_LIBS) + if(NOT BUILD_SHARED_LIBS) install(TARGETS gpu EXPORT LAMMPS_Targets LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) endif() target_compile_definitions(gpu PRIVATE -DLAMMPS_${LAMMPS_SIZES}) diff --git a/cmake/Modules/Packages/MESSAGE.cmake b/cmake/Modules/Packages/MESSAGE.cmake index 231c5d8aa0..28657aca07 100644 --- a/cmake/Modules/Packages/MESSAGE.cmake +++ b/cmake/Modules/Packages/MESSAGE.cmake @@ -7,7 +7,7 @@ file(GLOB_RECURSE cslib_SOURCES ${LAMMPS_LIB_SOURCE_DIR}/message/cslib/[^.]*.F ${LAMMPS_LIB_SOURCE_DIR}/message/cslib/[^.]*.cpp) add_library(cslib STATIC ${cslib_SOURCES}) -if(BUILD_LIB AND NOT BUILD_SHARED_LIBS) +if(NOT BUILD_SHARED_LIBS) install(TARGETS cslib EXPORT LAMMPS_Targets LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) endif() target_compile_definitions(cslib PRIVATE -DLAMMPS_${LAMMPS_SIZES}) diff --git a/cmake/Modules/Packages/USER-COLVARS.cmake b/cmake/Modules/Packages/USER-COLVARS.cmake index 18931ae60b..1aa1c954b9 100644 --- a/cmake/Modules/Packages/USER-COLVARS.cmake +++ b/cmake/Modules/Packages/USER-COLVARS.cmake @@ -9,7 +9,7 @@ if(COLVARS_LEPTON) set(LEPTON_DIR ${LAMMPS_LIB_SOURCE_DIR}/colvars/lepton) file(GLOB LEPTON_SOURCES ${LEPTON_DIR}/src/[^.]*.cpp) add_library(lepton STATIC ${LEPTON_SOURCES}) - if(BUILD_LIB AND NOT BUILD_SHARED_LIBS) + if(NOT BUILD_SHARED_LIBS) install(TARGETS lepton EXPORT LAMMPS_Targets LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) endif() set_target_properties(lepton PROPERTIES OUTPUT_NAME lammps_lepton${LAMMPS_LIB_SUFFIX}) @@ -17,7 +17,7 @@ if(COLVARS_LEPTON) endif() add_library(colvars STATIC ${COLVARS_SOURCES}) -if(BUILD_LIB AND NOT BUILD_SHARED_LIBS) +if(NOT BUILD_SHARED_LIBS) install(TARGETS colvars EXPORT LAMMPS_Targets LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) endif() target_compile_definitions(colvars PRIVATE -DLAMMPS_${LAMMPS_SIZES}) diff --git a/cmake/Modules/Packages/USER-MOLFILE.cmake b/cmake/Modules/Packages/USER-MOLFILE.cmake index 1a2061918f..dd6435e56b 100644 --- a/cmake/Modules/Packages/USER-MOLFILE.cmake +++ b/cmake/Modules/Packages/USER-MOLFILE.cmake @@ -1,6 +1,6 @@ set(MOLFILE_INCLUDE_DIRS "${LAMMPS_LIB_SOURCE_DIR}/molfile" CACHE STRING "Path to VMD molfile plugin headers") add_library(molfile INTERFACE) -if(BUILD_LIB AND NOT BUILD_SHARED_LIBS) +if(NOT BUILD_SHARED_LIBS) install(TARGETS molfile EXPORT LAMMPS_Targets LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) endif() target_include_directories(molfile INTERFACE ${MOLFILE_INCLUDE_DIRS}) diff --git a/cmake/Modules/Packages/USER-QMMM.cmake b/cmake/Modules/Packages/USER-QMMM.cmake index 60ca488817..06728386c0 100644 --- a/cmake/Modules/Packages/USER-QMMM.cmake +++ b/cmake/Modules/Packages/USER-QMMM.cmake @@ -1,13 +1,10 @@ enable_language(C) -if(NOT BUILD_LIB) - message(FATAL_ERROR "Building a QM/MM executable with USER-QMMM requires BUILD_LIB=yes") -endif() if(NOT BUILD_SHARED_LIBS) message(WARNING "It is recommended to use BUILD_SHARED_LIBS=yes with USER-QMMM") endif() add_library(qmmm STATIC ${LAMMPS_LIB_SOURCE_DIR}/qmmm/libqmmm.c) -if(BUILD_LIB AND NOT BUILD_SHARED_LIBS) +if(NOT BUILD_SHARED_LIBS) install(TARGETS qmmm EXPORT LAMMPS_Targets LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) endif() set_target_properties(qmmm PROPERTIES OUTPUT_NAME lammps_qmmm${LAMMPS_LIB_SUFFIX}) diff --git a/cmake/Modules/Testing.cmake b/cmake/Modules/Testing.cmake index 0eeef00fe9..0a57056b18 100644 --- a/cmake/Modules/Testing.cmake +++ b/cmake/Modules/Testing.cmake @@ -2,7 +2,7 @@ # Testing ############################################################################### option(ENABLE_TESTING "Enable testing" OFF) -if(ENABLE_TESTING AND BUILD_EXE) +if(ENABLE_TESTING) enable_testing() option(LAMMPS_TESTING_SOURCE_DIR "Location of lammps-testing source directory" "") option(LAMMPS_TESTING_GIT_TAG "Git tag of lammps-testing" "master") diff --git a/cmake/README.md b/cmake/README.md index b9dd6d4373..4eb6492cd2 100644 --- a/cmake/README.md +++ b/cmake/README.md @@ -302,26 +302,6 @@ cmake -C ../cmake/presets/all_on.cmake -C ../cmake/presets/nolib.cmake -D PKG_GP - - BUILD_LIB - control whether to build LAMMPS as a library - -
    -
    off (default)
    -
    on
    -
    - - - - BUILD_EXE - control whether to build LAMMPS executable - -
    -
    on (default)
    -
    off
    -
    - - BUILD_SHARED_LIBS control whether to build LAMMPS as a shared-library -- GitLab From 686aba9fd86a570220a33eabb159dd5985b5dc4a Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Wed, 8 Apr 2020 18:36:30 -0400 Subject: [PATCH 211/717] include options to link to the LAMMPS library in mode=print output --- src/Makefile.print | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Makefile.print b/src/Makefile.print index 8398eb2589..d6e4976061 100644 --- a/src/Makefile.print +++ b/src/Makefile.print @@ -6,6 +6,7 @@ include Makefile # get location of the LAMMPS tree LMPDIR=$(shell echo $${PWD} | sed -e 's,/src/Obj_[+0-9a-z_-]\+$$,,') +LMPLIB=$(shell echo $(EXE) | sed -e 's,\.\./lib\([+0-9a-z_-]\+\)\.a$$,-L${LMPDIR}/src -l\1,') do-print: @echo '# LAMMPS source tree is in:' $(LMPDIR) @@ -18,5 +19,5 @@ do-print: @echo '# Linking: ' @echo LDFLAGS=$(LINKFLAGS) @echo '# Libraries: ' - @echo LDLIBS=$(EXTRA_PATH) $(EXTRA_LIB) $(LIB) | sed -e s,-L\\.\\./\\.\\./,-L${LMPDIR}/,g -e s,-L\\.\\./,-L${LMPDIR}/src/,g -e s,$(HOME),\\$$\\{HOME\\},g + @echo LDLIBS=$(LMPLIB) $(EXTRA_PATH) $(EXTRA_LIB) $(LIB) | sed -e s,-L\\.\\./\\.\\./,-L${LMPDIR}/,g -e s,-L\\.\\./,-L${LMPDIR}/src/,g -e s,$(HOME),\\$$\\{HOME\\},g -- GitLab From 61147d75b55e838f3a5615335c0d1f0935ab0bdd Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Wed, 8 Apr 2020 18:37:11 -0400 Subject: [PATCH 212/717] change build settings to have only mode=static and mode=shared and always build library and executable --- src/MAKE/Makefile.mpi | 34 ++++++++++----------- src/MAKE/Makefile.serial | 14 ++++----- src/Makefile | 65 +++++++++++++++++----------------------- 3 files changed, 51 insertions(+), 62 deletions(-) diff --git a/src/MAKE/Makefile.mpi b/src/MAKE/Makefile.mpi index 3be2e20f95..762ced9b0d 100644 --- a/src/MAKE/Makefile.mpi +++ b/src/MAKE/Makefile.mpi @@ -40,8 +40,8 @@ LMP_INC = -DLAMMPS_GZIP -DLAMMPS_MEMALIGN=64 # -DLAMMPS_CXX98 # LIB = name of MPI library MPI_INC = -DMPICH_SKIP_MPICXX -DOMPI_SKIP_MPICXX=1 -MPI_PATH = -MPI_LIB = +MPI_PATH = +MPI_LIB = # FFT library # see discussion in Section 2.2 (step 6) of manual @@ -50,9 +50,9 @@ MPI_LIB = # PATH = path for FFT library # LIB = name of FFT library -FFT_INC = -FFT_PATH = -FFT_LIB = +FFT_INC = +FFT_PATH = +FFT_LIB = # JPEG and/or PNG library # see discussion in Section 2.2 (step 7) of manual @@ -61,16 +61,16 @@ FFT_LIB = # PATH = path(s) for JPEG library and/or PNG library # LIB = name(s) of JPEG library and/or PNG library -JPG_INC = -JPG_PATH = -JPG_LIB = +JPG_INC = +JPG_PATH = +JPG_LIB = # --------------------------------------------------------------------- # build rules and dependencies # do not edit this section -include Makefile.package.settings -include Makefile.package +include Makefile.package.settings +include Makefile.package EXTRA_INC = $(LMP_INC) $(PKG_INC) $(MPI_INC) $(FFT_INC) $(JPG_INC) $(PKG_SYSINC) EXTRA_PATH = $(PKG_PATH) $(MPI_PATH) $(FFT_PATH) $(JPG_PATH) $(PKG_SYSPATH) @@ -85,18 +85,18 @@ vpath %.h .. # Link target -$(EXE): $(OBJ) $(EXTRA_LINK_DEPENDS) - $(LINK) $(LINKFLAGS) $(EXTRA_PATH) $(OBJ) $(EXTRA_LIB) $(LIB) -o $(EXE) +$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) + $(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLIB) $(EXTRA_LIB) $(LIB) -o $(EXE) $(SIZE) $(EXE) # Library targets -lib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(ARCHIVE) $(ARFLAGS) $(EXE) $(OBJ) +$(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(ARCHIVE) $(ARFLAGS) $(ARLIB) $(OBJ) -shlib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o $(EXE) \ - $(OBJ) $(EXTRA_LIB) $(LIB) +$(SHLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o $(SHLIB) \ + $(OBJ) $(EXTRA_LIB) $(LIB) # Compilation rules diff --git a/src/MAKE/Makefile.serial b/src/MAKE/Makefile.serial index 86ddd05053..8bd97820d3 100644 --- a/src/MAKE/Makefile.serial +++ b/src/MAKE/Makefile.serial @@ -85,18 +85,18 @@ vpath %.h .. # Link target -$(EXE): $(OBJ) $(EXTRA_LINK_DEPENDS) - $(LINK) $(LINKFLAGS) $(EXTRA_PATH) $(OBJ) $(EXTRA_LIB) $(LIB) -o $(EXE) +$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) + $(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLIB) $(EXTRA_LIB) $(LIB) -o $(EXE) $(SIZE) $(EXE) # Library targets -lib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(ARCHIVE) $(ARFLAGS) $(EXE) $(OBJ) +$(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(ARCHIVE) $(ARFLAGS) $(ARLIB) $(OBJ) -shlib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o $(EXE) \ - $(OBJ) $(EXTRA_LIB) $(LIB) +$(SHLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o $(SHLIB) \ + $(OBJ) $(EXTRA_LIB) $(LIB) # Compilation rules diff --git a/src/Makefile b/src/Makefile index bce5089500..5f7f57ce3c 100644 --- a/src/Makefile +++ b/src/Makefile @@ -25,20 +25,12 @@ OBJ = $(SRC:.cpp=.o) SRCLIB = $(filter-out main.cpp,$(SRC)) OBJLIB = $(filter-out main.o,$(OBJ)) -# Command-line options for mode: exe (default), shexe, lib, shlib +# Command-line options for mode: static (default), shared, or print -mode = exe +mode = static objdir = $(OBJDIR) -ifeq ($(mode),shexe) -objdir = $(OBJSHDIR) -endif - -ifeq ($(mode),lib) -objdir = $(OBJDIR) -endif - -ifeq ($(mode),shlib) +ifeq ($(mode),shared) objdir = $(OBJSHDIR) endif @@ -124,12 +116,10 @@ help: @echo 'make lib-package args="..." download/build/install a package library' @echo 'make purge purge obsolete copies of source files' @echo '' - @echo 'make machine build LAMMPS for machine' - @echo 'make mode=lib machine build LAMMPS as static lib for machine' - @echo 'make mode=shlib machine build LAMMPS as shared lib for machine' - @echo 'make mode=shexe machine build LAMMPS as shared exe for machine' - @echo 'make makelist create Makefile.list used by old makes' - @echo 'make -f Makefile.list machine build LAMMPS for machine (old)' + @echo 'make machine build LAMMPS for machine with static library' + @echo 'make mode=static machine same as above' + @echo 'make mode=shared machine build LAMMPS for machine with shared library' + @echo 'make mode=print machine print compiler/linker flags' @echo '' @echo 'machine is one of these from src/MAKE:' @echo '' @@ -223,34 +213,39 @@ gitversion: @cp Makefile.package Makefile.package.settings $(objdir) @cd $(objdir); rm -f .depend; \ $(MAKE) $(MFLAGS) "SRC = $(SRC)" "INC = $(INC)" depend || : -ifeq ($(mode),exe) + @rm -f $(ARLINK) $(SHLINK) $(EXE) +ifeq ($(mode),static) @cd $(objdir); \ - $(MAKE) $(MFLAGS) "OBJ = $(OBJ)" "INC = $(INC)" "SHFLAGS =" \ + $(MAKE) $(MFLAGS) "OBJ = $(OBJLIB)" "INC = $(INC)" "SHFLAGS =" \ + "LMPLIB = $(PWD)/$(ARLIB)" "ARLIB = $(PWD)/$(ARLIB)" "SHLIB = $(PWD)/$(SHLIB)" \ "EXE = ../$(EXE)" ../$(EXE) + @ln -s $(ARLIB) $(ARLINK) endif -ifeq ($(mode),shexe) +ifeq ($(mode),shared) @cd $(objdir); \ - $(MAKE) $(MFLAGS) "OBJ = $(OBJ)" "INC = $(INC)" \ + $(MAKE) $(MFLAGS) "OBJ = $(OBJLIB)" "INC = $(INC)" \ + "LMPLIB = $(PWD)/$(SHLIB)" "ARLIB = $(PWD)/$(ARLIB)" "SHLIB = $(PWD)/$(SHLIB)" \ "EXE = ../$(EXE)" ../$(EXE) + @ln -s $(SHLIB) $(SHLINK) +endif +# backward compatibility +ifeq ($(mode),exe) + $(MAKE) $(MFLAGS) mode=static $@ endif ifeq ($(mode),lib) - @cd $(objdir); \ - $(MAKE) $(MFLAGS) "OBJ = $(OBJLIB)" "INC = $(INC)" "SHFLAGS =" \ - "EXE = ../$(ARLIB)" lib - @rm -f $(ARLINK) - @ln -s $(ARLIB) $(ARLINK) + $(MAKE) $(MFLAGS) mode=static $@ +endif +ifeq ($(mode),shexe) + $(MAKE) $(MFLAGS) mode=shared $@ endif ifeq ($(mode),shlib) - @cd $(objdir); \ - $(MAKE) $(MFLAGS) "OBJ = $(OBJLIB)" "INC = $(INC)" \ - "EXE = ../$(SHLIB)" shlib - @rm -f $(SHLINK) - @ln -s $(SHLIB) $(SHLINK) + $(MAKE) $(MFLAGS) mode=shared $@ endif + ifeq ($(mode),print) @cd $(objdir); \ $(MAKE) $(MFLAGS) "OBJ = $(OBJLIB)" "INC = $(INC)" \ - "EXE = ../$(SHLIB)" -f ../Makefile.print + "EXE = ../$(ARLIB)" -f ../Makefile.print endif # Remove machine-specific object files @@ -267,12 +262,6 @@ clean-%: then cd STUBS; $(MAKE) clean; cd ..; fi rm -rf Obj_$(@:clean-%=%) Obj_shared_$(@:clean-%=%) -# Create Makefile.list - -makelist: - @$(SHELL) Make.sh style - @$(SHELL) Make.sh Makefile.list - # Make MPI STUBS library mpi-stubs: -- GitLab From f3a280a9f48900ff6777ae96f3873e14b214b107 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Wed, 8 Apr 2020 18:49:16 -0400 Subject: [PATCH 213/717] fix typo --- cmake/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index a22d0fbfaf..c119aa8431 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -628,7 +628,7 @@ endif() # LAMMPS for package managers and with different prefix settings. # This requires either a shared library or that the PYTHON package is included. ############################################################################### -if(BUILD_SHARED_LIBS) OR (PKG_PYTHON)) +if(BUILD_SHARED_LIBS OR PKG_PYTHON) if(CMAKE_VERSION VERSION_LESS 3.12) find_package(PythonInterp) # Deprecated since version 3.12 else() -- GitLab From ed0971d663d2e08801270a4bfc8c843c0c2b1cfe Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Thu, 9 Apr 2020 05:44:57 -0600 Subject: [PATCH 214/717] cmake: fix a typo --- cmake/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index b26689dd1f..f5f67b219e 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -73,7 +73,7 @@ if (${CMAKE_CXX_COMPILER_ID} STREQUAL "GNU") option(ENABLE_COVERAGE "Enable collecting code coverage data" OFF) mark_as_advanced(ENABLE_COVERAGE) if(ENABLE_COVERAGE) - set (CMAK_CXX_FLAGS "${CMAKE_CXX_FLAGS} --coverage") + set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --coverage") endif() endif() -- GitLab From d6aede25497492045d231f45f5e6a2b91fb164eb Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Thu, 9 Apr 2020 07:27:27 -0600 Subject: [PATCH 215/717] LAMMPSConfig.cmake: fixed for disabled PKG_SPACE --- cmake/LAMMPSConfig.cmake.in | 60 ++++++++++++++++++++----------------- 1 file changed, 32 insertions(+), 28 deletions(-) diff --git a/cmake/LAMMPSConfig.cmake.in b/cmake/LAMMPSConfig.cmake.in index da7ca59fb9..fac56efba2 100644 --- a/cmake/LAMMPSConfig.cmake.in +++ b/cmake/LAMMPSConfig.cmake.in @@ -2,20 +2,22 @@ include(CMakeFindDependencyMacro) if(@BUILD_MPI@) find_dependency(MPI REQUIRED CXX) endif() -if(@PKG_KSPACE@ AND @FFT@ STREQUAL "FFTW3") - if(@FFTW@ STREQUAL "FFTW3" AND NOT TARGET FFTW3::FFTW3) - add_library(FFTW3::FFTW3 UNKNOWN IMPORTED) - set_target_properties(FFTW3::FFTW3 PROPERTIES - IMPORTED_LINK_INTERFACE_LANGUAGES "C" - IMPORTED_LOCATION "@FFTW3_LIBRARY@" - INTERFACE_INCLUDE_DIRECTORIES "@FFTW3_INCLUDE_DIRS@") - endif() - if(@FFTW@ STREQUAL "FFTW3F" AND NOT TARGET FFTW3F::FFTW3F) - add_library(FFTW3F::FFTW3F UNKNOWN IMPORTED) - set_target_properties(FFTW3F::FFTW3F PROPERTIES - IMPORTED_LINK_INTERFACE_LANGUAGES "C" - IMPORTED_LOCATION "@FFTW3F_LIBRARY@" - INTERFACE_INCLUDE_DIRECTORIES "@FFTW3F_INCLUDE_DIRS@") +if(@PKG_KSPACE@) + if(@FFT@ STREQUAL "FFTW3") + if(@FFTW@ STREQUAL "FFTW3" AND NOT TARGET FFTW3::FFTW3) + add_library(FFTW3::FFTW3 UNKNOWN IMPORTED) + set_target_properties(FFTW3::FFTW3 PROPERTIES + IMPORTED_LINK_INTERFACE_LANGUAGES "C" + IMPORTED_LOCATION "@FFTW3_LIBRARY@" + INTERFACE_INCLUDE_DIRECTORIES "@FFTW3_INCLUDE_DIRS@") + endif() + if(@FFTW@ STREQUAL "FFTW3F" AND NOT TARGET FFTW3F::FFTW3F) + add_library(FFTW3F::FFTW3F UNKNOWN IMPORTED) + set_target_properties(FFTW3F::FFTW3F PROPERTIES + IMPORTED_LINK_INTERFACE_LANGUAGES "C" + IMPORTED_LOCATION "@FFTW3F_LIBRARY@" + INTERFACE_INCLUDE_DIRECTORIES "@FFTW3F_INCLUDE_DIRS@") + endif() endif() endif() if(NOT @BUILD_SHARED_LIBS@) @@ -36,20 +38,22 @@ if(NOT @BUILD_SHARED_LIBS@) if(@PKG_USER-SMD@ AND NOT @DOWNLOAD_EIGEN3@) find_dependency(Eigen3 NO_MODULE REQUIRED) endif() - if(@PKG_KSPACE@ AND @FFT@ STREQUAL "FFTW3" AND @FFT_FFTW_THREADS@) - if(@FFTW@ STREQUAL "FFTW3" AND NOT TARGET FFTW3::FFTW3_OMP) - add_library(FFTW3::FFTW3_OMP UNKNOWN IMPORTED) - set_target_properties(FFTW3::FFTW3_OMP PROPERTIES - IMPORTED_LINK_INTERFACE_LANGUAGES "C" - IMPORTED_LOCATION "@FFTW3_OMP_LIBRARY@" - INTERFACE_INCLUDE_DIRECTORIES "@FFTW3_OMP_INCLUDE_DIRS@") - endif() - if(@FFTW@ STREQUAL "FFTW3F" AND NOT TARGET FFTW3F::FFTW3F_OMP) - add_library(FFTW3F::FFTW3F_OMP UNKNOWN IMPORTED) - set_target_properties(FFTW3F::FFTW3F_OMP PROPERTIES - IMPORTED_LINK_INTERFACE_LANGUAGES "C" - IMPORTED_LOCATION "@FFTW3F_OMP_LIBRARY@" - INTERFACE_INCLUDE_DIRECTORIES "@FFTW3F_OMP_INCLUDE_DIRS@") + if(@PKG_KSPACE@) + if(@FFT@ STREQUAL "FFTW3" AND @FFT_FFTW_THREADS@) + if(@FFTW@ STREQUAL "FFTW3" AND NOT TARGET FFTW3::FFTW3_OMP) + add_library(FFTW3::FFTW3_OMP UNKNOWN IMPORTED) + set_target_properties(FFTW3::FFTW3_OMP PROPERTIES + IMPORTED_LINK_INTERFACE_LANGUAGES "C" + IMPORTED_LOCATION "@FFTW3_OMP_LIBRARY@" + INTERFACE_INCLUDE_DIRECTORIES "@FFTW3_OMP_INCLUDE_DIRS@") + endif() + if(@FFTW@ STREQUAL "FFTW3F" AND NOT TARGET FFTW3F::FFTW3F_OMP) + add_library(FFTW3F::FFTW3F_OMP UNKNOWN IMPORTED) + set_target_properties(FFTW3F::FFTW3F_OMP PROPERTIES + IMPORTED_LINK_INTERFACE_LANGUAGES "C" + IMPORTED_LOCATION "@FFTW3F_OMP_LIBRARY@" + INTERFACE_INCLUDE_DIRECTORIES "@FFTW3F_OMP_INCLUDE_DIRS@") + endif() endif() endif() if(@PKG_USER-SCAFACOS@ AND NOT @DOWNLOAD_SCAFACOS@) -- GitLab From 8dfc6cdef467aafe0d0889db3df3f7f0ce054c70 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Thu, 9 Apr 2020 07:40:17 -0600 Subject: [PATCH 216/717] Testing.cmake: some clean up --- cmake/Modules/Testing.cmake | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/cmake/Modules/Testing.cmake b/cmake/Modules/Testing.cmake index 0eeef00fe9..dee47b9040 100644 --- a/cmake/Modules/Testing.cmake +++ b/cmake/Modules/Testing.cmake @@ -28,7 +28,7 @@ if(ENABLE_TESTING AND BUILD_EXE) "https://github.com/lammps/lammps-testing in LAMMPS_TESTING_SOURCE_DIR") endif() - add_test(ShowHelp ${CMAKE_BINARY_DIR}/${LAMMPS_BINARY} -help) + add_test(NAME ShowHelp COMMAND $ -help) if(EXISTS ${LAMMPS_TESTING_SOURCE_DIR}) message(STATUS "Running test discovery...") @@ -42,8 +42,7 @@ if(ENABLE_TESTING AND BUILD_EXE) string(REPLACE "-" "_" TEST_NAME ${TEST_NAME}) string(REPLACE "+" "_" TEST_NAME ${TEST_NAME}) set(TEST_NAME "test_core_${TEST_NAME}_serial") - add_test(${TEST_NAME} ${CMAKE_BINARY_DIR}/${LAMMPS_BINARY} -in ${SCRIPT_NAME}) - set_tests_properties(${TEST_NAME} PROPERTIES WORKING_DIRECTORY ${PARENT_DIR}) + add_test(NAME ${TEST_NAME} COMMAND $ -in ${SCRIPT_NAME} WORKING_DIRECTORY ${PARENT_DIR}) endforeach() list(LENGTH TEST_SCRIPTS NUM_TESTS) -- GitLab From 79fc73d3a28a771d8f90c01483bd8e10b76f30dd Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 9 Apr 2020 10:11:13 -0400 Subject: [PATCH 217/717] small hack to ensure that src/MAKE/MINE is included in the git checkout --- src/MAKE/MINE/... | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 src/MAKE/MINE/... diff --git a/src/MAKE/MINE/... b/src/MAKE/MINE/... new file mode 100644 index 0000000000..e69de29bb2 -- GitLab From 07d31f464399fdd0a16015a5bb6d101abe26eac8 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 9 Apr 2020 10:42:11 -0400 Subject: [PATCH 218/717] remove LAMMPS_LIB_SUFFIX variable and use LAMMPS_MACHINE instead. we are now always building the executable and the library and thus they should have a consistent suffix or none. --- cmake/CMakeLists.txt | 17 ++++++----------- cmake/Modules/Packages/GPU.cmake | 2 +- cmake/Modules/Packages/MESSAGE.cmake | 2 +- cmake/Modules/Packages/USER-COLVARS.cmake | 4 ++-- cmake/Modules/Packages/USER-QMMM.cmake | 2 +- cmake/README.md | 9 --------- cmake/pkgconfig/liblammps.pc.in | 2 +- 7 files changed, 12 insertions(+), 26 deletions(-) diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index 80bbcf9a12..71510b018d 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -91,11 +91,6 @@ option(BUILD_SHARED_LIBS "Build shared library" OFF) if(BUILD_SHARED_LIBS) # for all pkg libs, mpi_stubs and linalg set(CMAKE_POSITION_INDEPENDENT_CODE ON) endif() -set(LAMMPS_LIB_SUFFIX "" CACHE STRING "Suffix to append to liblammps and pkg-config file") -mark_as_advanced(LAMMPS_LIB_SUFFIX) -if(LAMMPS_LIB_SUFFIX) - set(LAMMPS_LIB_SUFFIX "_${LAMMPS_LIB_SUFFIX}") -endif() option(BUILD_TOOLS "Build and install LAMMPS tools (msi2lmp, binary2txt, chain)" OFF) @@ -170,7 +165,7 @@ else() if(NOT BUILD_SHARED_LIBS) install(TARGETS mpi_stubs EXPORT LAMMPS_Targets LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) endif() - set_target_properties(mpi_stubs PROPERTIES OUTPUT_NAME lammps_mpi_stubs${LAMMPS_LIB_SUFFIX}) + set_target_properties(mpi_stubs PROPERTIES OUTPUT_NAME lammps_mpi_stubs${LAMMPS_MACHINE}) target_include_directories(mpi_stubs PUBLIC $ $) install(FILES ${LAMMPS_SOURCE_DIR}/STUBS/mpi.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/lammps/mpi) if(BUILD_SHARED_LIBS) @@ -257,7 +252,7 @@ if(PKG_MSCG OR PKG_USER-ATC OR PKG_USER-AWPMD OR PKG_USER-QUIP OR PKG_LATTE) if(NOT BUILD_SHARED_LIBS) install(TARGETS linalg EXPORT LAMMPS_Targets LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) endif() - set_target_properties(linalg PROPERTIES OUTPUT_NAME lammps_linalg${LAMMPS_LIB_SUFFIX}) + set_target_properties(linalg PROPERTIES OUTPUT_NAME lammps_linalg${LAMMPS_MACHINE}) set(BLAS_LIBRARIES "$") set(LAPACK_LIBRARIES "$") else() @@ -418,7 +413,7 @@ foreach(SIMPLE_LIB POEMS USER-ATC USER-AWPMD USER-H5MD) if(NOT BUILD_SHARED_LIBS) install(TARGETS ${PKG_LIB} EXPORT LAMMPS_Targets LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) endif() - set_target_properties(${PKG_LIB} PROPERTIES OUTPUT_NAME lammps_${PKG_LIB}${LAMMPS_LIB_SUFFIX}) + set_target_properties(${PKG_LIB} PROPERTIES OUTPUT_NAME lammps_${PKG_LIB}${LAMMPS_MACHINE}) target_link_libraries(lammps PRIVATE ${PKG_LIB}) if(PKG_LIB STREQUAL awpmd) target_include_directories(awpmd PUBLIC ${LAMMPS_LIB_SOURCE_DIR}/awpmd/systems/interact ${LAMMPS_LIB_SOURCE_DIR}/awpmd/ivutils/include) @@ -522,7 +517,7 @@ if(LAMMPS_EXCEPTIONS) list(APPEND LAMMPS_CXX_HEADERS exceptions.h) endif() -set_target_properties(lammps PROPERTIES OUTPUT_NAME lammps${LAMMPS_LIB_SUFFIX}) +set_target_properties(lammps PROPERTIES OUTPUT_NAME lammps${LAMMPS_MACHINE}) set_target_properties(lammps PROPERTIES SOVERSION ${SOVERSION}) install(TARGETS lammps EXPORT LAMMPS_Targets LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) target_include_directories(lammps PUBLIC $) @@ -540,8 +535,8 @@ set(LAMMPS_API_DEFINES) foreach(_DEF ${LAMMPS_DEFINES}) set(LAMMPS_API_DEFINES "${LAMMPS_API_DEFINES} -D${_DEF}") endforeach() -configure_file(pkgconfig/liblammps.pc.in ${CMAKE_CURRENT_BINARY_DIR}/liblammps${LAMMPS_LIB_SUFFIX}.pc @ONLY) -install(FILES ${CMAKE_CURRENT_BINARY_DIR}/liblammps${LAMMPS_LIB_SUFFIX}.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) +configure_file(pkgconfig/liblammps.pc.in ${CMAKE_CURRENT_BINARY_DIR}/liblammps${LAMMPS_MACHINE}.pc @ONLY) +install(FILES ${CMAKE_CURRENT_BINARY_DIR}/liblammps${LAMMPS_MACHINE}.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) install(EXPORT LAMMPS_Targets FILE LAMMPS_Targets.cmake NAMESPACE LAMMPS:: DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/LAMMPS) include(CMakePackageConfigHelpers) configure_file(LAMMPSConfig.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/LAMMPSConfig.cmake @ONLY) diff --git a/cmake/Modules/Packages/GPU.cmake b/cmake/Modules/Packages/GPU.cmake index b9e63f55da..2e609b63de 100644 --- a/cmake/Modules/Packages/GPU.cmake +++ b/cmake/Modules/Packages/GPU.cmake @@ -204,6 +204,6 @@ install(TARGETS gpu EXPORT LAMMPS_Targets LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) endif() target_compile_definitions(gpu PRIVATE -DLAMMPS_${LAMMPS_SIZES}) - set_target_properties(gpu PROPERTIES OUTPUT_NAME lammps_gpu${LAMMPS_LIB_SUFFIX}) + set_target_properties(gpu PROPERTIES OUTPUT_NAME lammps_gpu${LAMMPS_MACHINE}) target_sources(lammps PRIVATE ${GPU_SOURCES}) target_include_directories(lammps PRIVATE ${GPU_SOURCES_DIR}) diff --git a/cmake/Modules/Packages/MESSAGE.cmake b/cmake/Modules/Packages/MESSAGE.cmake index 28657aca07..e1dc4c1072 100644 --- a/cmake/Modules/Packages/MESSAGE.cmake +++ b/cmake/Modules/Packages/MESSAGE.cmake @@ -11,7 +11,7 @@ if(NOT BUILD_SHARED_LIBS) install(TARGETS cslib EXPORT LAMMPS_Targets LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) endif() target_compile_definitions(cslib PRIVATE -DLAMMPS_${LAMMPS_SIZES}) -set_target_properties(cslib PROPERTIES OUTPUT_NAME lammps_cslib${LAMMPS_LIB_SUFFIX}) +set_target_properties(cslib PROPERTIES OUTPUT_NAME lammps_cslib${LAMMPS_MACHINE}) if(BUILD_MPI) target_compile_definitions(cslib PRIVATE -DMPI_YES) set_target_properties(cslib PROPERTIES OUTPUT_NAME "csmpi") diff --git a/cmake/Modules/Packages/USER-COLVARS.cmake b/cmake/Modules/Packages/USER-COLVARS.cmake index 1aa1c954b9..281b497dea 100644 --- a/cmake/Modules/Packages/USER-COLVARS.cmake +++ b/cmake/Modules/Packages/USER-COLVARS.cmake @@ -12,7 +12,7 @@ if(COLVARS_LEPTON) if(NOT BUILD_SHARED_LIBS) install(TARGETS lepton EXPORT LAMMPS_Targets LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) endif() - set_target_properties(lepton PROPERTIES OUTPUT_NAME lammps_lepton${LAMMPS_LIB_SUFFIX}) + set_target_properties(lepton PROPERTIES OUTPUT_NAME lammps_lepton${LAMMPS_MACHINE}) target_include_directories(lepton PRIVATE ${LEPTON_DIR}/include) endif() @@ -21,7 +21,7 @@ if(NOT BUILD_SHARED_LIBS) install(TARGETS colvars EXPORT LAMMPS_Targets LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) endif() target_compile_definitions(colvars PRIVATE -DLAMMPS_${LAMMPS_SIZES}) -set_target_properties(colvars PROPERTIES OUTPUT_NAME lammps_colvars${LAMMPS_LIB_SUFFIX}) +set_target_properties(colvars PROPERTIES OUTPUT_NAME lammps_colvars${LAMMPS_MACHINE}) target_include_directories(colvars PUBLIC ${LAMMPS_LIB_SOURCE_DIR}/colvars) target_link_libraries(lammps PRIVATE colvars) diff --git a/cmake/Modules/Packages/USER-QMMM.cmake b/cmake/Modules/Packages/USER-QMMM.cmake index 06728386c0..76bb76fa5a 100644 --- a/cmake/Modules/Packages/USER-QMMM.cmake +++ b/cmake/Modules/Packages/USER-QMMM.cmake @@ -7,6 +7,6 @@ add_library(qmmm STATIC ${LAMMPS_LIB_SOURCE_DIR}/qmmm/libqmmm.c) if(NOT BUILD_SHARED_LIBS) install(TARGETS qmmm EXPORT LAMMPS_Targets LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) endif() -set_target_properties(qmmm PROPERTIES OUTPUT_NAME lammps_qmmm${LAMMPS_LIB_SUFFIX}) +set_target_properties(qmmm PROPERTIES OUTPUT_NAME lammps_qmmm${LAMMPS_MACHINE}) target_link_libraries(lammps PRIVATE qmmm) target_include_directories(qmmm PUBLIC ${LAMMPS_LIB_SOURCE_DIR}/qmmm) diff --git a/cmake/README.md b/cmake/README.md index 4eb6492cd2..cc2b2e8fad 100644 --- a/cmake/README.md +++ b/cmake/README.md @@ -293,15 +293,6 @@ cmake -C ../cmake/presets/all_on.cmake -C ../cmake/presets/nolib.cmake -D PKG_GP - - LAMMPS_LIB_SUFFIX - allows appending a suffix to the generated LAMMPS library - -
    -
    *none* (default)
    -
    - - BUILD_SHARED_LIBS control whether to build LAMMPS as a shared-library diff --git a/cmake/pkgconfig/liblammps.pc.in b/cmake/pkgconfig/liblammps.pc.in index 96dab89161..ca2c6191b7 100644 --- a/cmake/pkgconfig/liblammps.pc.in +++ b/cmake/pkgconfig/liblammps.pc.in @@ -27,6 +27,6 @@ Description: Large-scale Atomic/Molecular Massively Parallel Simulator Library URL: http://lammps.sandia.gov Version: @PROJECT_VERSION@ Requires: -Libs: -L${libdir} -llammps@LAMMPS_LIB_SUFFIX@ +Libs: -L${libdir} -llammps@LAMMPS_MACHINE@ Libs.private: -lm Cflags: -I${includedir} @LAMMPS_API_DEFINES@ -- GitLab From e7a8de0368301aa52597622ddd8d87ac50cb61bf Mon Sep 17 00:00:00 2001 From: Richard Berger Date: Thu, 9 Apr 2020 13:28:56 -0400 Subject: [PATCH 219/717] Add container with both ROCm and CUDA --- .../singularity/ubuntu18.04_amd_rocm_cuda.def | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 tools/singularity/ubuntu18.04_amd_rocm_cuda.def diff --git a/tools/singularity/ubuntu18.04_amd_rocm_cuda.def b/tools/singularity/ubuntu18.04_amd_rocm_cuda.def new file mode 100644 index 0000000000..601969dc8b --- /dev/null +++ b/tools/singularity/ubuntu18.04_amd_rocm_cuda.def @@ -0,0 +1,25 @@ +BootStrap: library +From: lammps/default/lammps_development:ubuntu18.04_amd_rocm + +%environment + export PATH=/usr/local/nvidia/bin:/usr/local/cuda/bin:${PATH} + export CUDADIR=/usr/local/cuda + export CUDA_PATH=/usr/local/cuda + export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/nvidia/lib:/usr/local/nvidia/lib64 + export LIBRARY_PATH=/usr/local/cuda/lib64/stubs + +%post + + wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-ubuntu1804.pin + mv cuda-ubuntu1804.pin /etc/apt/preferences.d/cuda-repository-pin-600 + apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/7fa2af80.pub + add-apt-repository "deb http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/ /" + apt-get update + apt-get -y install cuda cuda-compiler-10-2 + + + echo "/usr/local/nvidia/lib" >> /etc/ld.so.conf.d/nvidia.conf + echo "/usr/local/nvidia/lib64" >> /etc/ld.so.conf.d/nvidia.conf + +%labels + Author rbberger -- GitLab From dab9cc617aee6e23077814a91569015b6c2ee08e Mon Sep 17 00:00:00 2001 From: Evangelos Voyiatzis Date: Thu, 9 Apr 2020 19:38:12 +0200 Subject: [PATCH 220/717] delete entry at README --- src/USER-MISC/README | 1 - 1 file changed, 1 deletion(-) diff --git a/src/USER-MISC/README b/src/USER-MISC/README index f9c99ffcff..91d630e560 100644 --- a/src/USER-MISC/README +++ b/src/USER-MISC/README @@ -88,7 +88,6 @@ pair_style ilp/graphene/hbn, Wengen Ouyang (Tel Aviv University), w.g.ouyang at pair_style lebedeva/z, Zbigniew Koziol (National Center for Nuclear Research), softquake at gmail dot com, 4 Jan 19 pair_style lennard/mdf, Paolo Raiteri, p.raiteri at curtin.edu.au, 2 Dec 15 pair_style list, Axel Kohlmeyer (Temple U), akohlmey at gmail.com, 1 Jun 13 -pair_style lj/class2/coul/long/cs, Evangelos Voyiatzis, evoyiatzis at gmail.com, 7 April 2020 pair_style lj/mdf, Paolo Raiteri, p.raiteri at curtin.edu.au, 2 Dec 15 pair_style local/density, Tanmoy Sanyal (tanmoy dot 7989 at gmail.com) and M. Scott Shell (UCSB), and David Rosenberger (TU Darmstadt), 9 Sept 19 pair_style kolmogorov/crespi/full, Wengen Ouyang (Tel Aviv University), w.g.ouyang at gmail dot com, 30 Mar 18 -- GitLab From d4757e53305b6093136f060f9e3bbe73c6d4f4af Mon Sep 17 00:00:00 2001 From: Evangelos Voyiatzis Date: Thu, 9 Apr 2020 19:41:27 +0200 Subject: [PATCH 221/717] move cpp file to CORESHELL folder --- src/{USER-MISC => CORESHELL}/pair_lj_class2_coul_long_cs.cpp | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename src/{USER-MISC => CORESHELL}/pair_lj_class2_coul_long_cs.cpp (100%) diff --git a/src/USER-MISC/pair_lj_class2_coul_long_cs.cpp b/src/CORESHELL/pair_lj_class2_coul_long_cs.cpp similarity index 100% rename from src/USER-MISC/pair_lj_class2_coul_long_cs.cpp rename to src/CORESHELL/pair_lj_class2_coul_long_cs.cpp -- GitLab From 52bc8c398df28fdd6f2b5ff3da3e524e3d6b7936 Mon Sep 17 00:00:00 2001 From: Evangelos Voyiatzis Date: Thu, 9 Apr 2020 19:42:32 +0200 Subject: [PATCH 222/717] move header file to CORESHELL folder --- src/{USER-MISC => CORESHELL}/pair_lj_class2_coul_long_cs.h | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename src/{USER-MISC => CORESHELL}/pair_lj_class2_coul_long_cs.h (100%) diff --git a/src/USER-MISC/pair_lj_class2_coul_long_cs.h b/src/CORESHELL/pair_lj_class2_coul_long_cs.h similarity index 100% rename from src/USER-MISC/pair_lj_class2_coul_long_cs.h rename to src/CORESHELL/pair_lj_class2_coul_long_cs.h -- GitLab From 4534096ad12a191aaf6bd9e52c04987874ff93eb Mon Sep 17 00:00:00 2001 From: Evangelos Voyiatzis Date: Thu, 9 Apr 2020 19:44:48 +0200 Subject: [PATCH 223/717] Update Install.sh --- src/CORESHELL/Install.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/CORESHELL/Install.sh b/src/CORESHELL/Install.sh index 93c8fe8132..f8b75d1f25 100755 --- a/src/CORESHELL/Install.sh +++ b/src/CORESHELL/Install.sh @@ -41,6 +41,8 @@ action pair_coul_long_cs.cpp pair_coul_long.cpp action pair_coul_long_cs.h pair_coul_long.h action pair_lj_cut_coul_long_cs.cpp pair_lj_cut_coul_long.cpp action pair_lj_cut_coul_long_cs.h pair_lj_cut_coul_long.h +action pair_lj_class2_coul_long_cs.cpp pair_lj_class2_coul_long.cpp +action pair_lj_class2_coul_long_cs.h pair_lj_class2_coul_long.h action pair_born_coul_wolf_cs.cpp pair_born_coul_wolf.cpp action pair_born_coul_wolf_cs.h pair_born_coul_wolf.h -- GitLab From 6381940b9ac99eb664619cf45de3f4348be7a841 Mon Sep 17 00:00:00 2001 From: Richard Berger Date: Thu, 9 Apr 2020 13:53:41 -0400 Subject: [PATCH 224/717] Attempt to get ROCm CUDA working with CMake --- cmake/Modules/Packages/GPU.cmake | 64 ++++++++++++++++++++++++++++---- 1 file changed, 57 insertions(+), 7 deletions(-) diff --git a/cmake/Modules/Packages/GPU.cmake b/cmake/Modules/Packages/GPU.cmake index f9266657b3..b904c8754b 100644 --- a/cmake/Modules/Packages/GPU.cmake +++ b/cmake/Modules/Packages/GPU.cmake @@ -198,7 +198,50 @@ elseif(GPU_API STREQUAL "HIP") set(CMAKE_MODULE_PATH "${HIP_PATH}/cmake" ${CMAKE_MODULE_PATH}) find_package(HIP REQUIRED) - set(HIP_ARCH "gfx906") + if(NOT DEFINED HIP_PLATFORM) + if(NOT DEFINED ENV{HIP_PLATFORM}) + set(HIP_PLATFORM "hcc" CACHE PATH "HIP Platform to be used during compilation") + else() + set(HIP_PLATFORM $ENV{HIP_PLATFORM} CACHE PATH "HIP Platform used during compilation") + endif() + endif() + + set(ENV{HIP_PLATFORM} ${HIP_PLATFORM}) + + if(HIP_PLATFORM STREQUAL "hcc") + set(HIP_ARCH "gfx906" CACHE STRING "HIP target architecture") + elseif(HIP_PLATFORM STREQUAL "nvcc") + find_package(CUDA REQUIRED) + set(HIP_ARCH "sm_30" CACHE STRING "HIP primary CUDA architecture (e.g. sm_60)") + + # build arch/gencode commands for nvcc based on CUDA toolkit version and use choice + # --arch translates directly instead of JIT, so this should be for the preferred or most common architecture + set(HIP_CUDA_GENCODE "-arch=${HIP_ARCH} ") + # Fermi (GPU Arch 2.x) is supported by CUDA 3.2 to CUDA 8.0 + if((CUDA_VERSION VERSION_GREATER "3.1") AND (CUDA_VERSION VERSION_LESS "9.0")) + string(APPEND HIP_CUDA_GENCODE "-gencode arch=compute_20,code=[sm_20,compute_20] ") + endif() + # Kepler (GPU Arch 3.x) is supported by CUDA 5 and later + if(CUDA_VERSION VERSION_GREATER "4.9") + string(APPEND HIP_CUDA_GENCODE "-gencode arch=compute_30,code=[sm_30,compute_30] -gencode arch=compute_35,code=[sm_35,compute_35] ") + endif() + # Maxwell (GPU Arch 5.x) is supported by CUDA 6 and later + if(CUDA_VERSION VERSION_GREATER "5.9") + string(APPEND HIP_CUDA_GENCODE "-gencode arch=compute_50,code=[sm_50,compute_50] -gencode arch=compute_52,code=[sm_52,compute_52] ") + endif() + # Pascal (GPU Arch 6.x) is supported by CUDA 8 and later + if(CUDA_VERSION VERSION_GREATER "7.9") + string(APPEND HIP_CUDA_GENCODE "-gencode arch=compute_60,code=[sm_60,compute_60] -gencode arch=compute_61,code=[sm_61,compute_61] ") + endif() + # Volta (GPU Arch 7.0) is supported by CUDA 9 and later + if(CUDA_VERSION VERSION_GREATER "8.9") + string(APPEND HIP_CUDA_GENCODE "-gencode arch=compute_70,code=[sm_70,compute_70] ") + endif() + # Turing (GPU Arch 7.5) is supported by CUDA 10 and later + if(CUDA_VERSION VERSION_GREATER "9.9") + string(APPEND HIP_CUDA_GENCODE "-gencode arch=compute_75,code=[sm_75,compute_75] ") + endif() + endif() file(GLOB GPU_LIB_CU ${LAMMPS_LIB_SOURCE_DIR}/gpu/[^.]*.cu ${CMAKE_CURRENT_SOURCE_DIR}/gpu/[^.]*.cu) list(REMOVE_ITEM GPU_LIB_CU ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_pppm.cu) @@ -212,12 +255,19 @@ elseif(GPU_API STREQUAL "HIP") set(CUBIN_FILE "${LAMMPS_LIB_BINARY_DIR}/gpu/${CU_NAME}.cubin") set(CUBIN_H_FILE "${LAMMPS_LIB_BINARY_DIR}/gpu/${CU_NAME}_cubin.h") - configure_file(${CU_FILE} ${CU_CPP_FILE} COPYONLY) - - add_custom_command(OUTPUT ${CUBIN_FILE} - VERBATIM COMMAND ${HIP_HIPCC_EXECUTABLE} --genco -t="${HIP_ARCH}" -f=\"-O3 -ffast-math -DUSE_HIP -D_${GPU_PREC_SETTING} -I${LAMMPS_LIB_SOURCE_DIR}/gpu\" -o ${CUBIN_FILE} ${CU_CPP_FILE} - DEPENDS ${CU_CPP_FILE} - COMMENT "Generating ${CU_NAME}.cubin") + if(HIP_PLATFORM STREQUAL "hcc") + configure_file(${CU_FILE} ${CU_CPP_FILE} COPYONLY) + + add_custom_command(OUTPUT ${CUBIN_FILE} + VERBATIM COMMAND ${HIP_HIPCC_EXECUTABLE} --genco -t="${HIP_ARCH}" -f=\"-O3 -ffast-math -DUSE_HIP -D_${GPU_PREC_SETTING} -I${LAMMPS_LIB_SOURCE_DIR}/gpu\" -o ${CUBIN_FILE} ${CU_CPP_FILE} + DEPENDS ${CU_CPP_FILE} + COMMENT "Generating ${CU_NAME}.cubin") + elseif(HIP_PLATFORM STREQUAL "nvcc") + add_custom_command(OUTPUT ${CUBIN_FILE} + VERBATIM COMMAND ${HIP_HIPCC_EXECUTABLE} --fatbin --use_fast_math -DUSE_HIP -D_${GPU_PREC_SETTING} ${HIP_CUDA_GENCODE} -I${LAMMPS_LIB_SOURCE_DIR}/gpu -o ${CUBIN_FILE} ${CU_FILE} + DEPENDS ${CU_FILE} + COMMENT "Generating ${CU_NAME}.cubin") + endif() add_custom_command(OUTPUT ${CUBIN_H_FILE} COMMAND ${CMAKE_COMMAND} -D SOURCE_DIR=${CMAKE_CURRENT_SOURCE_DIR} -D VARNAME=${CU_NAME} -D HEADER_FILE=${CUBIN_H_FILE} -D SOURCE_FILES=${CUBIN_FILE} -P ${CMAKE_CURRENT_SOURCE_DIR}/Modules/GenerateBinaryHeader.cmake -- GitLab From a1992ce01da7d3290abdf537f77ef0cea4f4bff0 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 9 Apr 2020 14:16:00 -0400 Subject: [PATCH 225/717] tweak linking procedure to maximize shared code and have the least issues with rpath --- src/MAKE/Makefile.mpi | 14 +++++++++----- src/MAKE/Makefile.serial | 14 +++++++++----- src/Makefile | 29 ++++++++++++++--------------- 3 files changed, 32 insertions(+), 25 deletions(-) diff --git a/src/MAKE/Makefile.mpi b/src/MAKE/Makefile.mpi index 762ced9b0d..fba9789724 100644 --- a/src/MAKE/Makefile.mpi +++ b/src/MAKE/Makefile.mpi @@ -85,18 +85,22 @@ vpath %.h .. # Link target -$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) - $(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLIB) $(EXTRA_LIB) $(LIB) -o $(EXE) - $(SIZE) $(EXE) +../$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) + $(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLINK) $(EXTRA_LIB) $(LIB) -o $@ + $(SIZE) $@ # Library targets $(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) - $(ARCHIVE) $(ARFLAGS) $(ARLIB) $(OBJ) + $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) + @rm -f $(ARLIB) + @ln -s ../$(ARLIB) $(ARLIB) $(SHLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o $(SHLIB) \ + $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o ../$(SHLIB) \ $(OBJ) $(EXTRA_LIB) $(LIB) + @rm -f $(SHLIB) + @ln -s ../$(SHLIB) $(SHLIB) # Compilation rules diff --git a/src/MAKE/Makefile.serial b/src/MAKE/Makefile.serial index 8bd97820d3..ee07041bf4 100644 --- a/src/MAKE/Makefile.serial +++ b/src/MAKE/Makefile.serial @@ -85,18 +85,22 @@ vpath %.h .. # Link target -$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) - $(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLIB) $(EXTRA_LIB) $(LIB) -o $(EXE) - $(SIZE) $(EXE) +../$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) + $(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLINK) $(EXTRA_LIB) $(LIB) -o $@ + $(SIZE) $@ # Library targets $(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) - $(ARCHIVE) $(ARFLAGS) $(ARLIB) $(OBJ) + $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) + @rm -f $(ARLIB) + @ln -s ../$(ARLIB) $(ARLIB) $(SHLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o $(SHLIB) \ + $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o ../$(SHLIB) \ $(OBJ) $(EXTRA_LIB) $(LIB) + @rm -f $(SHLIB) + @ln -s ../$(SHLIB) $(SHLIB) # Compilation rules diff --git a/src/Makefile b/src/Makefile index 5f7f57ce3c..d111636ee3 100644 --- a/src/Makefile +++ b/src/Makefile @@ -7,20 +7,21 @@ PYTHON = python # Definitions -ROOT = lmp -EXE = lmp_$@ +ROOT = lmp +EXE = lmp_$@ ARLIB = liblammps_$@.a -SHLIB = liblammps_$@.so +SHLIB = liblammps_$@.so ARLINK = liblammps.a SHLINK = liblammps.so TMPNAME= tmp_$@_name +LMPLINK=$(shell echo $(ARLIB) | sed -e 's,lib\([+0-9a-z_-]\+\)\.a$$,-L. -l\1,') OBJDIR = Obj_$@ OBJSHDIR = Obj_shared_$@ -SRC = $(wildcard *.cpp) -INC = $(filter-out lmpinstalledpkgs.h lmpgitversion.h,$(wildcard *.h)) -OBJ = $(SRC:.cpp=.o) +SRC = $(wildcard *.cpp) +INC = $(filter-out lmpinstalledpkgs.h lmpgitversion.h,$(wildcard *.h)) +OBJ = $(SRC:.cpp=.o) SRCLIB = $(filter-out main.cpp,$(SRC)) OBJLIB = $(filter-out main.o,$(OBJ)) @@ -181,11 +182,9 @@ gitversion: mv ${TMPNAME}.lmpgitversion lmpgitversion.h || rm ${TMPNAME}.lmpgitversion ; \ else mv ${TMPNAME}.lmpgitversion lmpgitversion.h ; fi -# Build LAMMPS in one of 4 modes -# exe = exe with static compile in Obj_machine (default) -# shexe = exe with shared compile in Obj_shared_machine -# lib = static lib in Obj_machine -# shlib = shared lib in Obj_shared_machine +# Build LAMMPS in one of 2 modes +# static = static compile in Obj_machine (default) +# shared = shared compile in Obj_shared_machine .DEFAULT: @if [ $@ = "serial" ]; \ @@ -217,15 +216,15 @@ gitversion: ifeq ($(mode),static) @cd $(objdir); \ $(MAKE) $(MFLAGS) "OBJ = $(OBJLIB)" "INC = $(INC)" "SHFLAGS =" \ - "LMPLIB = $(PWD)/$(ARLIB)" "ARLIB = $(PWD)/$(ARLIB)" "SHLIB = $(PWD)/$(SHLIB)" \ - "EXE = ../$(EXE)" ../$(EXE) + "LMPLIB = $(ARLIB)" "ARLIB = $(ARLIB)" "SHLIB = $(SHLIB)" \ + "LMPLINK = $(LMPLINK)" "EXE = $(EXE)" ../$(EXE) @ln -s $(ARLIB) $(ARLINK) endif ifeq ($(mode),shared) @cd $(objdir); \ $(MAKE) $(MFLAGS) "OBJ = $(OBJLIB)" "INC = $(INC)" \ - "LMPLIB = $(PWD)/$(SHLIB)" "ARLIB = $(PWD)/$(ARLIB)" "SHLIB = $(PWD)/$(SHLIB)" \ - "EXE = ../$(EXE)" ../$(EXE) + "LMPLIB = $(SHLIB)" "ARLIB = $(ARLIB)" "SHLIB = $(SHLIB)" \ + "LMPLINK = $(LMPLINK)" "EXE = $(EXE)" ../$(EXE) @ln -s $(SHLIB) $(SHLINK) endif # backward compatibility -- GitLab From 874ef6afc17b668d8cc5d14bf2fbb3c3807b4766 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Thu, 9 Apr 2020 12:36:57 -0600 Subject: [PATCH 226/717] cmake: add error when trying to install downloaded libs --- cmake/Modules/Packages/KIM.cmake | 3 +++ cmake/Modules/Packages/KOKKOS.cmake | 3 +++ cmake/Modules/Packages/LATTE.cmake | 3 +++ cmake/Modules/Packages/MSCG.cmake | 3 +++ cmake/Modules/Packages/USER-PLUMED.cmake | 3 +++ cmake/Modules/Packages/USER-SCAFACOS.cmake | 3 +++ cmake/Modules/Packages/USER-SMD.cmake | 3 +++ cmake/Modules/Packages/VORONOI.cmake | 3 +++ 8 files changed, 24 insertions(+) diff --git a/cmake/Modules/Packages/KIM.cmake b/cmake/Modules/Packages/KIM.cmake index d7fe19d551..20f7289472 100644 --- a/cmake/Modules/Packages/KIM.cmake +++ b/cmake/Modules/Packages/KIM.cmake @@ -51,6 +51,9 @@ if(DOWNLOAD_KIM) INTERFACE_INCLUDE_DIRECTORIES "${INSTALL_DIR}/include/kim-api") target_link_libraries(lammps PRIVATE LAMMPS::KIM) add_dependencies(LAMMPS::KIM kim_build) + if(BUILD_LIB) + install(CODE "MESSAGE(FATAL_ERROR \"Installing liblammps with downloaded libraries is currently not supported.\")") + endif() else() find_package(PkgConfig REQUIRED) pkg_check_modules(KIM-API REQUIRED IMPORTED_TARGET libkim-api>=${KIM-API_MIN_VERSION}) diff --git a/cmake/Modules/Packages/KOKKOS.cmake b/cmake/Modules/Packages/KOKKOS.cmake index d2b8f19167..ae325b5748 100644 --- a/cmake/Modules/Packages/KOKKOS.cmake +++ b/cmake/Modules/Packages/KOKKOS.cmake @@ -22,6 +22,9 @@ if(DOWNLOAD_KOKKOS) INTERFACE_LINK_LIBRARIES ${CMAKE_DL_LIBS}) target_link_libraries(lammps PRIVATE LAMMPS::KOKKOS) add_dependencies(LAMMPS::KOKKOS kokkos_build) + if(BUILD_LIB) + install(CODE "MESSAGE(FATAL_ERROR \"Installing liblammps with downloaded libraries is currently not supported.\")") + endif() elseif(EXTERNAL_KOKKOS) find_package(Kokkos 3) if(NOT Kokkos_FOUND) diff --git a/cmake/Modules/Packages/LATTE.cmake b/cmake/Modules/Packages/LATTE.cmake index 7b8025bf50..1c00805780 100644 --- a/cmake/Modules/Packages/LATTE.cmake +++ b/cmake/Modules/Packages/LATTE.cmake @@ -27,6 +27,9 @@ if(DOWNLOAD_LATTE) INTERFACE_LINK_LIBRARIES "${LAPACK_LIBRARIES}") target_link_libraries(lammps PRIVATE LAMMPS::LATTE) add_dependencies(LAMMPS::LATTE latte_build) + if(BUILD_LIB) + install(CODE "MESSAGE(FATAL_ERROR \"Installing liblammps with downloaded libraries is currently not supported.\")") + endif() else() find_package(LATTE) if(NOT LATTE_FOUND) diff --git a/cmake/Modules/Packages/MSCG.cmake b/cmake/Modules/Packages/MSCG.cmake index 55f71588fe..72691eb294 100644 --- a/cmake/Modules/Packages/MSCG.cmake +++ b/cmake/Modules/Packages/MSCG.cmake @@ -35,6 +35,9 @@ if(DOWNLOAD_MSCG) INTERFACE_LINK_LIBRARIES "${LAPACK_LIBRARIES}") target_link_libraries(lammps PRIVATE LAMMPS::MSCG) add_dependencies(LAMMPS::MSCG mscg_build) + if(BUILD_LIB) + install(CODE "MESSAGE(FATAL_ERROR \"Installing liblammps with downloaded libraries is currently not supported.\")") + endif() else() find_package(MSCG) if(NOT MSCG_FOUND) diff --git a/cmake/Modules/Packages/USER-PLUMED.cmake b/cmake/Modules/Packages/USER-PLUMED.cmake index d47c365637..15354813fd 100644 --- a/cmake/Modules/Packages/USER-PLUMED.cmake +++ b/cmake/Modules/Packages/USER-PLUMED.cmake @@ -70,6 +70,9 @@ if(DOWNLOAD_PLUMED) ExternalProject_get_property(plumed_build INSTALL_DIR) add_library(LAMMPS::PLUMED UNKNOWN IMPORTED) add_dependencies(LAMMPS::PLUMED plumed_build) + if(BUILD_LIB) + install(CODE "MESSAGE(FATAL_ERROR \"Installing liblammps with downloaded libraries is currently not supported.\")") + endif() if(PLUMED_MODE STREQUAL "STATIC") set_target_properties(LAMMPS::PLUMED PROPERTIES INTERFACE_COMPILE_DEFINITIONS "__PLUMED_WRAPPER_CXX=1") set_target_properties(LAMMPS::PLUMED PROPERTIES IMPORTED_LOCATION ${INSTALL_DIR}/lib/libplumed.a INTERFACE_LINK_LIBRARIES "${PLUMED_LINK_LIBS};${CMAKE_DL_LIBS}") diff --git a/cmake/Modules/Packages/USER-SCAFACOS.cmake b/cmake/Modules/Packages/USER-SCAFACOS.cmake index d92a83f7c1..04c54fdcdd 100644 --- a/cmake/Modules/Packages/USER-SCAFACOS.cmake +++ b/cmake/Modules/Packages/USER-SCAFACOS.cmake @@ -52,6 +52,9 @@ if(DOWNLOAD_SCAFACOS) INTERFACE_LINK_LIBRARIES "${INSTALL_DIR}/lib/libfcs.a;${INSTALL_DIR}/lib/libfcs_direct.a;${INSTALL_DIR}/lib/libfcs_ewald.a;${INSTALL_DIR}/lib/libfcs_fmm.a;${INSTALL_DIR}/lib/libfcs_p2nfft.a;${INSTALL_DIR}/lib/libfcs_p3m.a;GSL::gsl;${INSTALL_DIR}/lib/libfcs_near.a;${INSTALL_DIR}/lib/libfcs_gridsort.a;${INSTALL_DIR}/lib/libfcs_resort.a;${INSTALL_DIR}/lib/libfcs_redist.a;${INSTALL_DIR}/lib/libfcs_common.a;${INSTALL_DIR}/lib/libfcs_pnfft.a;${INSTALL_DIR}/lib/libfcs_pfft.a;${INSTALL_DIR}/lib/libfcs_fftw3_mpi.a;${INSTALL_DIR}/lib/libfcs_fftw3.a;MPI::MPI_Fortran;MPI::MPI_C") target_link_libraries(lammps PRIVATE LAMMPS::SCAFACOS) add_dependencies(LAMMPS::SCAFACOS scafacos_build) + if(BUILD_LIB) + install(CODE "MESSAGE(FATAL_ERROR \"Installing liblammps with downloaded libraries is currently not supported.\")") + endif() else() find_package(PkgConfig REQUIRED) pkg_check_modules(SCAFACOS REQUIRED IMPORTED_TARGET scafacos) diff --git a/cmake/Modules/Packages/USER-SMD.cmake b/cmake/Modules/Packages/USER-SMD.cmake index 6984b24d52..709e0b4fe0 100644 --- a/cmake/Modules/Packages/USER-SMD.cmake +++ b/cmake/Modules/Packages/USER-SMD.cmake @@ -18,6 +18,9 @@ if(DOWNLOAD_EIGEN3) set_target_properties(LAMMPS::EIGEN3 PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${SOURCE_DIR}") target_link_libraries(lammps PRIVATE LAMMPS::EIGEN3) add_dependencies(LAMMPS::EIGEN3 Eigen3_build) + if(BUILD_LIB) + install(CODE "MESSAGE(FATAL_ERROR \"Installing liblammps with downloaded libraries is currently not supported.\")") + endif() else() find_package(Eigen3 NO_MODULE) mark_as_advanced(Eigen3_DIR) diff --git a/cmake/Modules/Packages/VORONOI.cmake b/cmake/Modules/Packages/VORONOI.cmake index 39d494928b..51c9579c8d 100644 --- a/cmake/Modules/Packages/VORONOI.cmake +++ b/cmake/Modules/Packages/VORONOI.cmake @@ -35,6 +35,9 @@ if(DOWNLOAD_VORO) INTERFACE_INCLUDE_DIRECTORIES "${SOURCE_DIR}/src") target_link_libraries(lammps PRIVATE LAMMPS::VORO) add_dependencies(LAMMPS::VORO voro_build) + if(BUILD_LIB) + install(CODE "MESSAGE(FATAL_ERROR \"Installing liblammps with downloaded libraries is currently not supported.\")") + endif() else() find_package(VORO) if(NOT VORO_FOUND) -- GitLab From 3d2d2cb6689e94a53ea1a2daacdcda39b3126f34 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 9 Apr 2020 15:43:05 -0400 Subject: [PATCH 227/717] update documentation for the changes to the build procedure --- doc/src/Build_basics.rst | 239 +++++++++++++++++++++------------------ doc/src/Build_link.rst | 147 +++++++++++++----------- 2 files changed, 207 insertions(+), 179 deletions(-) diff --git a/doc/src/Build_basics.rst b/doc/src/Build_basics.rst index 8ad48b0810..8a81836614 100644 --- a/doc/src/Build_basics.rst +++ b/doc/src/Build_basics.rst @@ -6,7 +6,7 @@ CMake and make: * :ref:`Serial vs parallel build ` * :ref:`Choice of compiler and compile/link options ` -* :ref:`Build LAMMPS as an executable or a library ` +* :ref:`Build the LAMMPS executable and library ` * :ref:`Build the LAMMPS documentation ` * :ref:`Install LAMMPS after a build ` @@ -28,8 +28,8 @@ MPI STUBS library. Independent of the distributed memory MPI parallelization, parts of LAMMPS are also written with support for shared memory parallelization -using the OpenMP threading standard. A more detailed discussion of that -is below. +using the `OpenMP `_ threading +standard. A more detailed discussion of that is below. **CMake build**\ : @@ -41,7 +41,7 @@ is below. # no default value The executable created by CMake (after running make) is named ``lmp`` unless -the LAMMPS_MACHINE option is set. When setting ``LAMMPS_MACHINE=name`` +the ``LAMMPS_MACHINE`` option is set. When setting ``LAMMPS_MACHINE=name`` the executable will be called ``lmp_name``. Using ``BUILD_MPI=no`` will enforce building a serial executable using the MPI STUBS library. @@ -55,18 +55,20 @@ The build with traditional makefiles has to be done inside the source folder ``s make serial # serial build, produces lmp_serial using Makefile/serial make mybox # uses Makefile.mybox to produce lmp_mybox -Any "make machine" command will look up the make settings from a file -Makefile.machine, create a folder Obj_machine with all objects and -generated files and an executable called ``lmp_machine``\ . The standard -parallel build with ``make mpi`` assumes a standard MPI installation with -MPI compiler wrappers where all necessary compiler and linker flags to -get access and link with the suitable MPI headers and libraries are set -by the wrapper programs. For other cases or the serial build, you have -to adjust the make file variables ``MPI_INC``, ``MPI_PATH``, ``MPI_LIB`` -as well as ``CC`` and ``LINK``\ . To enable OpenMP threading usually -a compiler specific flag needs to be added to the compile and link -commands. For the GNU compilers, this is ``-fopenmp``\ , which can be -added to the ``CC`` and ``LINK`` makefile variables. +Any ``make machine`` command will look up the make settings from a file +``Makefile.machine`` in the folder ``src/MAKE`` or one of its +subdirectories ``MINE``, ``MACHINES``, or ``OPTIONS``, create a folder +``Obj_machine`` with all objects and generated files and an executable +called ``lmp_machine``\ . The standard parallel build with ``make mpi`` +assumes a standard MPI installation with MPI compiler wrappers where all +necessary compiler and linker flags to get access and link with the +suitable MPI headers and libraries are set by the wrapper programs. For +other cases or the serial build, you have to adjust the make file +variables ``MPI_INC``, ``MPI_PATH``, ``MPI_LIB`` as well as ``CC`` and +``LINK``\ . To enable OpenMP threading usually a compiler specific flag +needs to be added to the compile and link commands. For the GNU +compilers, this is ``-fopenmp``\ , which can be added to the ``CC`` and +``LINK`` makefile variables. For the serial build the following make variables are set (see src/MAKE/Makefile.serial): @@ -80,18 +82,19 @@ For the serial build the following make variables are set (see src/MAKE/Makefile You also need to build the STUBS library for your platform before making LAMMPS itself. A ``make serial`` build does this for you automatically, -otherwise, type ``make mpi-stubs`` from the src directory, or ``make`` from -the src/STUBS dir. If the build fails, you will need to edit the -STUBS/Makefile for your platform. The stubs library does not provide -MPI/IO functions required by some LAMMPS packages, e.g. MPIIO or USER-LB, -and thus is not compatible with those packages. +otherwise, type ``make mpi-stubs`` from the src directory, or ``make`` +from the ``src/STUBS`` dir. If the build fails, you may need to edit +the ``STUBS/Makefile`` for your platform. The stubs library does not +provide MPI/IO functions required by some LAMMPS packages, +e.g. ``MPIIO`` or ``USER-LB``, and thus is not compatible with those +packages. .. note:: The file ``src/STUBS/mpi.c`` provides a CPU timer function called - MPI_Wtime() that calls gettimeofday() . If your operating system - does not support gettimeofday() , you will need to insert code to - call another timer. Note that the ANSI-standard function clock() + ``MPI_Wtime()`` that calls ``gettimeofday()``. If your operating system + does not support ``gettimeofday()``, you will need to insert code to + call another timer. Note that the ANSI-standard function ``clock()`` rolls over after an hour or so, and is therefore insufficient for timing long LAMMPS simulations. @@ -111,20 +114,22 @@ self-installed MPICH or OpenMPI, so you should study the provided documentation to find out how to build and link with it. The majority of OpenMP (threading) support in LAMMPS is provided by the -USER-OMP package; see the :doc:`Speed omp ` doc page for -details. The USER-INTEL package also includes OpenMP threading (it is -compatible with USER-OMP) and adds vectorization support when compiled -with compatible compilers, in particular the Intel compilers on top of -OpenMP. Also, the KOKKOS package can be compiled to include OpenMP -threading. +``USER-OMP`` package; see the :doc:`Speed omp ` doc page for +details. The ``USER-INTEL`` package also includes OpenMP threading (it +is compatible with ``USER-OMP`` and will usually fall back on styles +from that package, if a ``USER-INTEL`` does not exist) and adds +vectorization support when compiled with compatible compilers, in +particular the Intel compilers on top of OpenMP. Also, the ``KOKKOS`` +package can be compiled to include OpenMP threading. In addition, there are a few commands in LAMMPS that have native OpenMP -support included as well. These are commands in the MPIIO, SNAP, -USER-DIFFRACTION, and USER-DPD packages. In addition some packages -support OpenMP threading indirectly through the libraries they interface -to: e.g. LATTE and USER-COLVARS. See the :doc:`Packages details -` doc page for more info on these packages and the doc -pages for their respective commands for OpenMP threading info. +support included as well. These are commands in the ``MPIIO``, +``SNAP``, ``USER-DIFFRACTION``, and ``USER-DPD`` packages. In addition +some packages support OpenMP threading indirectly through the libraries +they interface to: e.g. ``LATTE``, ``KSPACE``, and ``USER-COLVARS``. +See the :doc:`Packages details ` doc page for more +info on these packages and the doc pages for their respective commands +for OpenMP threading info. For CMake, if you use ``BUILD_OMP=yes``, you can use these packages and turn on their native OpenMP support and turn on their native OpenMP @@ -158,15 +163,18 @@ this conversion. Choice of compiler and compile/link options --------------------------------------------------------- -The choice of compiler and compiler flags can be important for +The choice of compiler and compiler flags can be important for maximum performance. Vendor provided compilers for a specific hardware can produce faster code than open-source compilers like the GNU compilers. -On x86 hardware most popular compilers are quite similar in performance -of C/C++ code at high optimization levels. When using the USER-INTEL -package, there is a distinct advantage in using the `Intel C++ compiler -`_ due to much improved vectorization through SSE and AVX -instructions on compatible hardware as the source code includes changes -and compiler directives to enable high degrees of vectorization. +On the most common x86 hardware most popular C++ compilers are quite +similar in performance of C/C++ code at high optimization levels. When +using the ``USER-INTEL`` package, there is a distinct advantage in using +the `Intel C++ compiler `_ due to much improved vectorization +through SSE and AVX instructions on compatible hardware as the source +code includes changes and Intel compiler specific directives to enable +high degrees of vectorization. This may change over time as equivalent +vectorization directives are included into OpenMP standard revisions and +other compilers adopt them. .. _intel: https://software.intel.com/en-us/intel-compilers @@ -177,17 +185,20 @@ LAMMPS. **CMake build**\ : -By default CMake will use a compiler it finds and it will add -optimization flags appropriate to that compiler and any -:doc:`accelerator packages ` you have included in the -build. - -You can tell CMake to look for a specific compiler with these variable -settings. Likewise you can specify the corresponding ``CMAKE_*_FLAGS`` -variables if you want to experiment with alternate optimization flags. -You should specify all 3 compilers, so that the small number of LAMMPS -source files written in C or Fortran are built with a compiler consistent -with the one used for all the C++ files: +By default CMake will use a compiler it finds according to internal +preferences and it will add optimization flags appropriate to that +compiler and any :doc:`accelerator packages ` you have +included in the build. + +You can tell CMake to look for a specific compiler with setting CMake +variable during configuration. For a few common choices, there are also +presets in the ``cmake/presets`` folder. For convenience, there is a +``CMAKE_TUNE_FLAGS`` variable that can be set to apply global compiler +options. More on that below, but you can also specify the corresponding +``CMAKE_*_FLAGS`` variables individually if you want to experiment with +alternate optimization flags. You should specify all 3 compilers, so +that the (few) LAMMPS source files written in C or Fortran are built +with a compiler consistent with the one used for the C++ files: .. code-block:: bash @@ -210,16 +221,17 @@ A few example command lines are: # Building with LLVM/Clang Compilers: cmake ../cmake -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_Fortran_COMPILER=flang -For compiling with the Clang/LLVM compilers a special CMake preset is -included that can be loaded with `-C ../cmake/presets/clang.cmake`. +For compiling with the Clang/LLVM compilers a CMake preset is provided that +can be loaded with `-C ../cmake/presets/clang.cmake`. Similarly, +`-C ../cmake/presets/intel.cmake` should switch the -In addition you can set ``CMAKE_TUNE_FLAGS`` to specifically add compiler -flags to tune for optimal performance on given hosts. By default these are -initialized to some compiler specific flags, where known, to optimize the -LAMMPS executable with optimizations and instructions available on the host -where LAMMPS is compiled. For example, for Intel compilers this would be -``-xHost`` and for GNU compilers this would be ``-march=native``. To turn -these flags off, set ``-D CMAKE_TUNE_FLAGS=``. +In addition you can set ``CMAKE_TUNE_FLAGS`` to specifically add +compiler flags to tune for optimal performance on given hosts. By +default these are initialized to some compiler specific flags, to +optimize the LAMMPS executable with optimizations and instructions +available on the host where LAMMPS is compiled. For example, for Intel +compilers this would be ``-xHost`` and for GNU compilers this would be +``-march=native``. To turn these flags off, do ``-D CMAKE_TUNE_FLAGS=``. .. note:: @@ -235,11 +247,11 @@ these flags off, set ``-D CMAKE_TUNE_FLAGS=``. The "compiler/linker settings" section of a Makefile.machine lists compiler and linker settings for your C++ compiler, including optimization flags. For a parallel build it is recommended to use -mpicxx or mpiCC, since these compiler wrappers will include a variety of -settings appropriate for your MPI installation and thus avoiding the -guesswork of finding the right flags. +``mpicxx`` or ``mpiCC``, since these compiler wrappers will include a +variety of settings appropriate for your MPI installation and thus +avoiding the guesswork of finding the right flags. -Parallel build (see src/MAKE/Makefile.mpi): +Parallel build (see ``src/MAKE/Makefile.mpi``): .. code-block:: bash @@ -248,7 +260,7 @@ Parallel build (see src/MAKE/Makefile.mpi): LINK = mpicxx LINKFLAGS = -g -O -Serial build (see src/MAKE/Makefile.serial): +Serial build with GNU gcc (see ``src/MAKE/Makefile.serial``): .. code-block:: make @@ -284,69 +296,74 @@ Serial build (see src/MAKE/Makefile.serial): .. _exe: -Build LAMMPS as an executable or a library ----------------------------------------------------- +Build the LAMMPS executable and library +--------------------------------------- -LAMMPS can be built as either an executable or as a static or shared -library. The LAMMPS library can be called from another application or -a scripting language. See the :doc:`Howto couple ` doc +LAMMPS is always built as a library of C++ classes plus an executable. +The executable is a simple ``main()`` function that sets up MPI and then +creates a LAMMPS class instance from the LAMMPS library, which +will then process commands provided via a file or from the console +input. The LAMMPS library can also be called from another application +or a scripting language. See the :doc:`Howto couple ` doc page for more info on coupling LAMMPS to other codes. See the :doc:`Python ` doc page for more info on wrapping and running LAMMPS from Python via its library interface. **CMake build**\ : -For CMake builds, you can select through setting CMake variables which -files the compilation produces during the configuration step. If none -are set, defaults are applied. +For CMake builds, you can select through setting CMake variables between +building a shared or a static LAMMPS library and what kind of suffix is +added to them (in case you want to concurrently install multiple variants +of binaries with different settings). If none are set, defaults are applied. .. code-block:: bash - -D BUILD_EXE=value # yes (default) or no - -D BUILD_LIB=value # yes or no (default) -D BUILD_SHARED_LIBS=value # yes or no (default) - -D LAMMPS_LIB_SUFFIX=name # name = mpi, serial, mybox, titan, laptop, etc + -D LAMMPS_MACHINE=name # name = mpi, serial, mybox, titan, laptop, etc # no default value -Setting ``BUILD_EXE=no`` will not produce an executable. Setting -``BUILD_LIB=yes`` will produce a static library named ``liblammps.a``\ . -Setting both ``BUILD_LIB=yes`` and ``BUILD_SHARED_LIBS=yes`` will produce a -shared library named ``liblammps.so`` instead. If ``LAMMPS_LIB_SUFFIX=name`` -is set in addition, the name of the generated libraries will be changed to -either ``liblammps_name.a`` or ``liblammps_name.so``\ , respectively. +The compilation will always produce a LAMMPS library and an executable +linked to it. By default this will be a static library named +``liblammps.a`` and an executable named ``lmp`` Setting +``BUILD_SHARED_LIBS=yes`` will instead produce a shared library called +``liblammps.so`` (or ``liblammps.dylib`` or ``liblammps.dll`` depending +on the platform) If ``LAMMPS_MACHINE=name`` is set in addition, the name +of the generated libraries will be changed to either +``liblammps_name.a`` or ``liblammps_name.so``\ , respectively and the +executable will be called ``lmp_name``. **Traditional make**\ : With the traditional makefile based build process, the choice of the generated executable or library depends on the "mode" setting. -Several options are available and ``mode=exe`` is the default. +Several options are available and ``mode=static`` is the default. .. code-block:: bash make machine # build LAMMPS executable lmp_machine - make mode=exe machine # same as "make machine" - make mode=lib machine # build LAMMPS static lib liblammps_machine.a - make mode=shlib machine # build LAMMPS shared lib liblammps_machine.so - make mode=shexe machine # same as "mode=exe" but uses objects from "mode=shlib" - -The two "exe" builds will generate and executable ``lmp_machine``\ , -while the two library builds will create a file ``liblammps_machine.a`` -or ``liblammps_machine.so``\ . They will also create generic soft links, -named ``liblammps.a`` and ``liblammps.so``\ , which point to the specific + make mode=static machine # same as "make machine" + make mode=shared machine # build LAMMPS shared lib liblammps_machine.so instead + +The "static" build will generate a static library called +``liblammps_machine.a`` and an executable named ``lmp_machine``\ , while +the "shared" build will generate a shared library +``liblammps_machine.so`` instead and ``lmp_machine`` will be linked to +it. The build step will also create generic soft links, named +``liblammps.a`` and ``liblammps.so``\ , which point to the specific ``liblammps_machine.a/so`` files. **CMake and make info**\ : -Note that for a shared library to be usable by a calling program, all -the auxiliary libraries it depends on must also exist as shared -libraries. This will be the case for libraries included with LAMMPS, -such as the dummy MPI library in src/STUBS or any package libraries in -the lib/packages directory, since they are always built in a shared -library compatible way using the ``-fPIC`` switch. However, if a library -like MPI or FFTW does not exist as a shared library, the shared library -build may generate an error. This means you will need to install a -shared library version of the auxiliary library. The build instructions -for the library should tell you how to do this. +Note that for creating a shared library, all the libraries it depends on +must be compiled to be compatible with shared libraries. This should be +the case for libraries included with LAMMPS, such as the dummy MPI +library in ``src/STUBS`` or any package libraries in the ``lib`` +directory, since they are always built in a shared library compatible +way using the ``-fPIC`` compiler switch. However, if an auxiliary +library (like MPI or FFTW) does not exist as a compatible format, the +shared library linking step may generate an error. This means you will +need to install a compatible version of the auxiliary library. The +build instructions for that library should tell you how to do this. As an example, here is how to build and install the `MPICH library `_, a popular open-source version of MPI, as a shared library @@ -360,10 +377,12 @@ in the default /usr/local/lib location: make make install -You may need to use ``sudo make install`` in place of the last line if you -do not have write privileges for ``/usr/local/lib``. The end result should -be the file ``/usr/local/lib/libmpich.so``. On many Linux installations the -folder ``${HOME}/.local`` is an alternative to using ``/usr/local`` and does +You may need to use ``sudo make install`` in place of the last line if +you do not have write privileges for ``/usr/local/lib`` or use the +``--prefix`` configuration option to select an installation folder, +where you do have write access. The end result should be the file +``/usr/local/lib/libmpich.so``. On many Linux installations the folder +``${HOME}/.local`` is an alternative to using ``/usr/local`` and does not require superuser or sudo access. In that case the configuration step becomes: @@ -371,7 +390,7 @@ step becomes: ./configure --enable-shared --prefix=${HOME}/.local -Avoiding using "sudo" for custom software installation (i.e. from source +Avoiding to use "sudo" for custom software installation (i.e. from source and not through a package manager tool provided by the OS) is generally recommended to ensure the integrity of the system software installation. diff --git a/doc/src/Build_link.rst b/doc/src/Build_link.rst index b18dc49e38..39fc4fe40a 100644 --- a/doc/src/Build_link.rst +++ b/doc/src/Build_link.rst @@ -1,33 +1,35 @@ Link LAMMPS as a library to another code ======================================== -LAMMPS can be used as a library by another application, including -Python scripts. The files src/library.cpp and library.h define the +LAMMPS is designed as a library of C++ objects and can thus be +integrated into other applications including Python scripts. +The files ``src/library.cpp`` and ``src/library.h`` define a C-style API for using LAMMPS as a library. See the :doc:`Howto library ` doc page for a description of the interface and how to extend it for your needs. The :doc:`Build basics ` doc page explains how to build -LAMMPS as either a shared or static library. This results in one of -these 2 files: - -.. code-block:: bash - - liblammps.so # shared library - liblammps.a # static library +LAMMPS as either a shared or static library. This results in a file +in the compilation folder called ``liblammps.a`` or ``liblammps_.a`` +in case of building a static library. In case of a shared library +the name is the same only that the suffix is going to be either ``.so`` +or ``.dylib`` or ``.dll`` instead of ``.a`` depending on the OS. +In some cases the ``.so`` file may be a symbolic link to a file with +the suffix ``.so.0`` (or some other number). .. note:: - Care should be taken to use the same MPI library for the calling - code and the LAMMPS library. The library.h file includes mpi.h and - uses definitions from it so those need to be available and - consistent. When LAMMPS is compiled with the MPI STUBS library, - then its mpi.h file needs to be included. While it is technically - possible to use a full MPI library in the calling code and link to - a serial LAMMPS library compiled with MPI STUBS, it is recommended - to use the *same* MPI library for both, and then use MPI_Comm_split() - in the calling code to pass a suitable communicator with a subset - of MPI ranks to the function creating the LAMMPS instance. + Care should be taken to use the same MPI library for the calling code + and the LAMMPS library. The ``library.h`` file includes ``mpi.h`` + and uses definitions from it so those need to be available and + consistent. When LAMMPS is compiled with the included STUBS MPI + library, then its ``mpi.h`` file needs to be included. While it is + technically possible to use a full MPI library in the calling code + and link to a serial LAMMPS library compiled with MPI STUBS, it is + recommended to use the *same* MPI library for both, and then use + ``MPI_Comm_split()`` in the calling code to pass a suitable + communicator with a subset of MPI ranks to the function creating the + LAMMPS instance. ---------- @@ -42,11 +44,11 @@ executable code from the library is copied into the calling executable. *CMake build*\ : -This assumes that LAMMPS has been configured with "-D BUILD_LIB=yes" -and installed with "make install" and the PKG_CONFIG_PATH environment -variable updated to include the *liblammps.pc* file installed into the -configured destination folder, if needed. The commands to compile and -link the coupled executable are then: +This assumes that LAMMPS has been configured without setting a +``LAMMPS_MACHINE`` name, installed with "make install", and the +``PKG_CONFIG_PATH`` environment variable has been updated to include the +``liblammps.pc`` file installed into the configured destination folder. +The commands to compile and link a coupled executable are then: .. code-block:: bash @@ -56,30 +58,35 @@ link the coupled executable are then: *Traditional make*\ : This assumes that LAMMPS has been compiled in the folder -"${HOME}/lammps/src" with "make mode=lib mpi". The commands to compile -and link the coupled executable are then: +``${HOME}/lammps/src`` with "make mpi". The commands to compile and link +a coupled executable are then: .. code-block:: bash mpicc -c -O -I${HOME}/lammps/src caller.c - mpicxx -o caller caller.o -L${HOME}/lammps/src -llammps + mpicxx -o caller caller.o -L${HOME}/lammps/src -llammps_mpi -The *-I* argument is the path to the location of the *library.h* +The *-I* argument is the path to the location of the ``library.h`` header file containing the interface to the LAMMPS C-style library -interface. The *-L* argument is the path to where the *liblammps.a* -file is located. The *-llammps* argument is shorthand for telling the -compiler to link the file *liblammps.a*\ . +interface. The *-L* argument is the path to where the ``liblammps_mpi.a`` +file is located. The *-llammps_mpi* argument is shorthand for telling the +compiler to link the file ``liblammps_mpi.a``. If LAMMPS has been +built as a shared library, then the linker will use ``liblammps_mpi.so`` +instead. If both files are available, the linker will usually prefer +the shared library. In case of a shared library, you may need to update +the ``LD_LIBRARY_PATH`` environment variable or running the ``caller`` +executable will fail since it cannot find the shared library at runtime. However, it is only as simple as shown above for the case of a plain LAMMPS library without any optional packages that depend on libraries -(bundled or external). Otherwise, you need to include all flags, -libraries, and paths for the coupled executable, that are also -required to link the LAMMPS executable. +(bundled or external) or when using a shared library. Otherwise, you +need to include all flags, libraries, and paths for the coupled +executable, that are also required to link the LAMMPS executable. *CMake build*\ : When using CMake, additional libraries with sources in the lib folder -are built, but not included in liblammps.a and (currently) not +are built, but not included in ``liblammps.a`` and (currently) not installed with "make install" and not included in the *pkgconfig* configuration file. They can be found in the top level build folder, but you have to determine the necessary link flags manually. It is @@ -87,23 +94,26 @@ therefore recommended to either use the traditional make procedure to build and link with a static library or build and link with a shared library instead. +.. TODO: this needs to be updated to reflect that latest CMake changes after they are complete. + *Traditional make*\ : After you have compiled a static LAMMPS library using the conventional -build system for example with "make mode=lib serial". And you also -have installed the POEMS package after building its bundled library in -lib/poems. Then the commands to build and link the coupled executable +build system for example with "make mode=static serial". And you also +have installed the ``POEMS`` package after building its bundled library +in ``lib/poems``. Then the commands to build and link the coupled executable change to: .. code-block:: bash gcc -c -O -I${HOME}/lammps/src/STUBS -I${HOME}/lammps/src -caller.c g++ -o caller caller.o -L${HOME}/lammps/lib/poems \ - -L${HOME}/lammps/src/STUBS -L${HOME}/lammps/src -llammps -lpoems -lmpi_stubs + -L${HOME}/lammps/src/STUBS -L${HOME}/lammps/src -llammps_serial -lpoems -lmpi_stubs -Note, that you need to link with "g++" instead of "gcc", since LAMMPS -is C++ code. You can display the currently applied settings for building -LAMMPS for the "serial" machine target by using the command: +Note, that you need to link with "g++" instead of "gcc", since the +LAMMPS library is C++ code. You can display the currently applied +settings for building LAMMPS for the "serial" machine target by using +the command: .. code-block:: bash @@ -113,16 +123,16 @@ Which should output something like: .. code-block:: bash - # Compiler: + # Compiler: CXX=g++ - # Linker: + # Linker: LD=g++ - # Compilation: - CXXFLAGS=-g -O3 -DLAMMPS_GZIP -DLAMMPS_MEMALIGN=64 -I${HOME}/lammps/lib/poems -I${HOME}/lammps/src/STUBS - # Linking: + # Compilation: + CXXFLAGS=-g -O3 -DLAMMPS_GZIP -DLAMMPS_MEMALIGN=64 -I${HOME}/compile/lammps/lib/poems -I${HOME}/compile/lammps/src/STUBS + # Linking: LDFLAGS=-g -O - # Libraries: - LDLIBS=-L${HOME}/lammps/lib/poems -L${HOME}/lammps/src/STUBS -lpoems -lmpi_stubs + # Libraries: + LDLIBS=-L${HOME}/compile/lammps/src -llammps_serial -L${HOME}/compile/lammps/lib/poems -L${HOME}/compile/lammps/src/STUBS -lpoems -lmpi_stubs From this you can gather the necessary paths and flags. With makefiles for other *machine* configurations you need to do the @@ -133,14 +143,13 @@ of the makefile. **Link with LAMMPS as a shared library**\ : -When linking to LAMMPS built as a shared library, the situation -becomes much simpler, as all dependent libraries and objects are -included in the shared library, which is - technically speaking - -effectively a regular LAMMPS executable that is missing the `main()` -function. Thus those libraries need not to be specified when linking -the calling executable. Only the *-I* flags are needed. So the -example case from above of the serial version static LAMMPS library -with the POEMS package installed becomes: +When linking to LAMMPS built as a shared library, the situation becomes +much simpler, as all dependent libraries and objects are either included +in the shared library or registered as a dependent library in the shared +library file. Thus those libraries need not to be specified when +linking the calling executable. Only the *-I* flags are needed. So the +example case from above of the serial version static LAMMPS library with +the POEMS package installed becomes: *CMake build*\ : @@ -155,19 +164,19 @@ build process are the same as for the static library. *Traditional make*\ : The commands with a shared LAMMPS library compiled with the -traditional make build using "make mode=shlib serial" becomes: +traditional make build using "make mode=shared serial" becomes: .. code-block:: bash gcc -c -O -I${HOME}/lammps/src/STUBS -I${HOME}/lammps/src -caller.c - g++ -o caller caller.o -L${HOME}/lammps/src -llammps + g++ -o caller caller.o -L${HOME}/lammps/src -llammps_serial *Locating liblammps.so at runtime*\ : -However, now the `liblammps.so` file is required at runtime and needs +However, now the ``liblammps.so`` file is required at runtime and needs to be in a folder, where the shared linker program of the operating -system can find it. This would be either a folder like "/usr/local/lib64" -or "${HOME}/.local/lib64" or a folder pointed to by the LD_LIBRARY_PATH +system can find it. This would be either a folder like ``/usr/local/lib64`` +or ``${HOME}/.local/lib64`` or a folder pointed to by the ``LD_LIBRARY_PATH`` environment variable. You can type .. code-block:: bash @@ -177,11 +186,11 @@ environment variable. You can type to see what directories are in that list. Or you can add the LAMMPS src directory (or the directory you performed -a CMake style build in) to your LD_LIBRARY_PATH, so that the current +a CMake style build in) to your ``LD_LIBRARY_PATH``, so that the current version of the shared library is always available to programs that use it. For the Bourne or Korn shells (/bin/sh, /bin/ksh, /bin/bash etc.), you -would add something like this to your ~/.profile file: +would add something like this to your ``${HOME}/.profile`` file: .. code-block:: bash @@ -189,14 +198,14 @@ would add something like this to your ~/.profile file: export LD_LIBRARY_PATH For the csh or tcsh shells, you would equivalently add something like this -to your ~/.cshrc file: +to your ``${HOME}/.cshrc`` file: .. code-block:: csh setenv LD_LIBRARY_PATH ${LD_LIBRARY_PATH}:${HOME}/lammps/src You can verify whether all required shared libraries are found with the -`ldd` tool. Example: +``ldd`` tool. Example: .. code-block:: bash @@ -229,20 +238,20 @@ If a required library is missing, you would get a 'not found' entry: Either flavor of library (static or shared) allows one or more LAMMPS objects to be instantiated from the calling program. When used from a C++ program, most of the symbols and functions in LAMMPS are wrapped -in a LAMMPS_NS namespace; you can safely use any of its classes and +in a ``LAMMPS_NS`` namespace; you can safely use any of its classes and methods from within the calling code, as needed, and you will not incur conflicts with functions and variables in your code that share the name. This, however, does not extend to all additional libraries bundled with LAMMPS in the lib folder and some of the low-level code of some packages. To be compatible with C, Fortran, Python programs, the library has a simple -C-style interface, provided in src/library.cpp and src/library.h. +C-style interface, provided in ``src/library.cpp`` and ``src/library.h``. See the :doc:`Python library ` doc page for a description of the Python interface to LAMMPS, which wraps the C-style interface from a shared library through the `ctypes python module `_. -See the sample codes in examples/COUPLE/simple for examples of C++ and +See the sample codes in ``examples/COUPLE/simple`` for examples of C++ and C and Fortran codes that invoke LAMMPS through its library interface. Other examples in the COUPLE directory use coupling ideas discussed on the :doc:`Howto couple ` doc page. -- GitLab From 3c0dae3bc5cb50cd612729aee8fea54a8ea3192c Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Thu, 9 Apr 2020 14:05:48 -0600 Subject: [PATCH 228/717] cmake: fix install error for shared libs --- cmake/Modules/Packages/KIM.cmake | 2 +- cmake/Modules/Packages/KOKKOS.cmake | 2 +- cmake/Modules/Packages/LATTE.cmake | 2 +- cmake/Modules/Packages/MSCG.cmake | 2 +- cmake/Modules/Packages/USER-PLUMED.cmake | 2 +- cmake/Modules/Packages/USER-SCAFACOS.cmake | 2 +- cmake/Modules/Packages/USER-SMD.cmake | 2 +- cmake/Modules/Packages/VORONOI.cmake | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/cmake/Modules/Packages/KIM.cmake b/cmake/Modules/Packages/KIM.cmake index 20f7289472..3734e10982 100644 --- a/cmake/Modules/Packages/KIM.cmake +++ b/cmake/Modules/Packages/KIM.cmake @@ -51,7 +51,7 @@ if(DOWNLOAD_KIM) INTERFACE_INCLUDE_DIRECTORIES "${INSTALL_DIR}/include/kim-api") target_link_libraries(lammps PRIVATE LAMMPS::KIM) add_dependencies(LAMMPS::KIM kim_build) - if(BUILD_LIB) + if(BUILD_LIB AND NOT BUILD_SHARED_LIBS) install(CODE "MESSAGE(FATAL_ERROR \"Installing liblammps with downloaded libraries is currently not supported.\")") endif() else() diff --git a/cmake/Modules/Packages/KOKKOS.cmake b/cmake/Modules/Packages/KOKKOS.cmake index ae325b5748..e43fe2f596 100644 --- a/cmake/Modules/Packages/KOKKOS.cmake +++ b/cmake/Modules/Packages/KOKKOS.cmake @@ -22,7 +22,7 @@ if(DOWNLOAD_KOKKOS) INTERFACE_LINK_LIBRARIES ${CMAKE_DL_LIBS}) target_link_libraries(lammps PRIVATE LAMMPS::KOKKOS) add_dependencies(LAMMPS::KOKKOS kokkos_build) - if(BUILD_LIB) + if(BUILD_LIB AND NOT BUILD_SHARED_LIBS) install(CODE "MESSAGE(FATAL_ERROR \"Installing liblammps with downloaded libraries is currently not supported.\")") endif() elseif(EXTERNAL_KOKKOS) diff --git a/cmake/Modules/Packages/LATTE.cmake b/cmake/Modules/Packages/LATTE.cmake index 1c00805780..4279b5597f 100644 --- a/cmake/Modules/Packages/LATTE.cmake +++ b/cmake/Modules/Packages/LATTE.cmake @@ -27,7 +27,7 @@ if(DOWNLOAD_LATTE) INTERFACE_LINK_LIBRARIES "${LAPACK_LIBRARIES}") target_link_libraries(lammps PRIVATE LAMMPS::LATTE) add_dependencies(LAMMPS::LATTE latte_build) - if(BUILD_LIB) + if(BUILD_LIB AND NOT BUILD_SHARED_LIBS) install(CODE "MESSAGE(FATAL_ERROR \"Installing liblammps with downloaded libraries is currently not supported.\")") endif() else() diff --git a/cmake/Modules/Packages/MSCG.cmake b/cmake/Modules/Packages/MSCG.cmake index 72691eb294..9254935c20 100644 --- a/cmake/Modules/Packages/MSCG.cmake +++ b/cmake/Modules/Packages/MSCG.cmake @@ -35,7 +35,7 @@ if(DOWNLOAD_MSCG) INTERFACE_LINK_LIBRARIES "${LAPACK_LIBRARIES}") target_link_libraries(lammps PRIVATE LAMMPS::MSCG) add_dependencies(LAMMPS::MSCG mscg_build) - if(BUILD_LIB) + if(BUILD_LIB AND NOT BUILD_SHARED_LIBS) install(CODE "MESSAGE(FATAL_ERROR \"Installing liblammps with downloaded libraries is currently not supported.\")") endif() else() diff --git a/cmake/Modules/Packages/USER-PLUMED.cmake b/cmake/Modules/Packages/USER-PLUMED.cmake index 15354813fd..53e424224d 100644 --- a/cmake/Modules/Packages/USER-PLUMED.cmake +++ b/cmake/Modules/Packages/USER-PLUMED.cmake @@ -70,7 +70,7 @@ if(DOWNLOAD_PLUMED) ExternalProject_get_property(plumed_build INSTALL_DIR) add_library(LAMMPS::PLUMED UNKNOWN IMPORTED) add_dependencies(LAMMPS::PLUMED plumed_build) - if(BUILD_LIB) + if(BUILD_LIB AND NOT BUILD_SHARED_LIBS) install(CODE "MESSAGE(FATAL_ERROR \"Installing liblammps with downloaded libraries is currently not supported.\")") endif() if(PLUMED_MODE STREQUAL "STATIC") diff --git a/cmake/Modules/Packages/USER-SCAFACOS.cmake b/cmake/Modules/Packages/USER-SCAFACOS.cmake index 04c54fdcdd..d51504bcc8 100644 --- a/cmake/Modules/Packages/USER-SCAFACOS.cmake +++ b/cmake/Modules/Packages/USER-SCAFACOS.cmake @@ -52,7 +52,7 @@ if(DOWNLOAD_SCAFACOS) INTERFACE_LINK_LIBRARIES "${INSTALL_DIR}/lib/libfcs.a;${INSTALL_DIR}/lib/libfcs_direct.a;${INSTALL_DIR}/lib/libfcs_ewald.a;${INSTALL_DIR}/lib/libfcs_fmm.a;${INSTALL_DIR}/lib/libfcs_p2nfft.a;${INSTALL_DIR}/lib/libfcs_p3m.a;GSL::gsl;${INSTALL_DIR}/lib/libfcs_near.a;${INSTALL_DIR}/lib/libfcs_gridsort.a;${INSTALL_DIR}/lib/libfcs_resort.a;${INSTALL_DIR}/lib/libfcs_redist.a;${INSTALL_DIR}/lib/libfcs_common.a;${INSTALL_DIR}/lib/libfcs_pnfft.a;${INSTALL_DIR}/lib/libfcs_pfft.a;${INSTALL_DIR}/lib/libfcs_fftw3_mpi.a;${INSTALL_DIR}/lib/libfcs_fftw3.a;MPI::MPI_Fortran;MPI::MPI_C") target_link_libraries(lammps PRIVATE LAMMPS::SCAFACOS) add_dependencies(LAMMPS::SCAFACOS scafacos_build) - if(BUILD_LIB) + if(BUILD_LIB AND NOT BUILD_SHARED_LIBS) install(CODE "MESSAGE(FATAL_ERROR \"Installing liblammps with downloaded libraries is currently not supported.\")") endif() else() diff --git a/cmake/Modules/Packages/USER-SMD.cmake b/cmake/Modules/Packages/USER-SMD.cmake index 709e0b4fe0..c2775c5a8e 100644 --- a/cmake/Modules/Packages/USER-SMD.cmake +++ b/cmake/Modules/Packages/USER-SMD.cmake @@ -18,7 +18,7 @@ if(DOWNLOAD_EIGEN3) set_target_properties(LAMMPS::EIGEN3 PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${SOURCE_DIR}") target_link_libraries(lammps PRIVATE LAMMPS::EIGEN3) add_dependencies(LAMMPS::EIGEN3 Eigen3_build) - if(BUILD_LIB) + if(BUILD_LIB AND NOT BUILD_SHARED_LIBS) install(CODE "MESSAGE(FATAL_ERROR \"Installing liblammps with downloaded libraries is currently not supported.\")") endif() else() diff --git a/cmake/Modules/Packages/VORONOI.cmake b/cmake/Modules/Packages/VORONOI.cmake index 51c9579c8d..69c2ab3301 100644 --- a/cmake/Modules/Packages/VORONOI.cmake +++ b/cmake/Modules/Packages/VORONOI.cmake @@ -35,7 +35,7 @@ if(DOWNLOAD_VORO) INTERFACE_INCLUDE_DIRECTORIES "${SOURCE_DIR}/src") target_link_libraries(lammps PRIVATE LAMMPS::VORO) add_dependencies(LAMMPS::VORO voro_build) - if(BUILD_LIB) + if(BUILD_LIB AND NOT BUILD_SHARED_LIBS) install(CODE "MESSAGE(FATAL_ERROR \"Installing liblammps with downloaded libraries is currently not supported.\")") endif() else() -- GitLab From a585142de042d45d512e942279a2ea3f3207bb34 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 9 Apr 2020 17:18:29 -0400 Subject: [PATCH 229/717] update makefiles in src/MAKE/MACHINES --- .../Makefile.aarch64_arm_openmpi_armpl | 48 ++++--- .../Makefile.aarch64_arm_serial_armpl | 48 ++++--- .../Makefile.aarch64_g++_openmpi_armpl | 46 ++++--- .../Makefile.aarch64_g++_serial_armpl | 48 ++++--- src/MAKE/MACHINES/Makefile.astra_arm | 46 ++++--- src/MAKE/MACHINES/Makefile.astra_gcc | 46 ++++--- src/MAKE/MACHINES/Makefile.beacon | 42 +++--- src/MAKE/MACHINES/Makefile.bgl | 52 ++++---- src/MAKE/MACHINES/Makefile.bgq | 30 ++--- src/MAKE/MACHINES/Makefile.chama | 56 ++++---- src/MAKE/MACHINES/Makefile.cori2 | 40 +++--- src/MAKE/MACHINES/Makefile.cygwin | 52 ++++---- src/MAKE/MACHINES/Makefile.glory | 52 ++++---- src/MAKE/MACHINES/Makefile.icex | 50 ++++---- src/MAKE/MACHINES/Makefile.jaguar | 46 ++++--- src/MAKE/MACHINES/Makefile.lassen_kokkos | 46 ++++--- src/MAKE/MACHINES/Makefile.mac | 54 ++++---- src/MAKE/MACHINES/Makefile.mac_mpi | 48 ++++--- src/MAKE/MACHINES/Makefile.mingw32-cross | 42 +++--- src/MAKE/MACHINES/Makefile.mingw32-cross-mpi | 42 +++--- src/MAKE/MACHINES/Makefile.mingw64-cross | 40 +++--- src/MAKE/MACHINES/Makefile.mingw64-cross-mpi | 42 +++--- src/MAKE/MACHINES/Makefile.myrinet | 48 ++++--- src/MAKE/MACHINES/Makefile.power | 46 ++++--- src/MAKE/MACHINES/Makefile.redsky | 52 ++++---- src/MAKE/MACHINES/Makefile.serial | 120 ------------------ src/MAKE/MACHINES/Makefile.stampede | 40 +++--- src/MAKE/MACHINES/Makefile.storm | 52 ++++---- src/MAKE/MACHINES/Makefile.tacc | 55 ++++---- src/MAKE/MACHINES/Makefile.theta | 36 +++--- src/MAKE/MACHINES/Makefile.ubuntu | 40 +++--- src/MAKE/MACHINES/Makefile.ubuntu_simple | 50 ++++---- src/MAKE/MACHINES/Makefile.white | 54 ++++---- src/MAKE/MACHINES/Makefile.xe6 | 52 ++++---- src/MAKE/MACHINES/Makefile.xt3 | 52 ++++---- src/MAKE/MACHINES/Makefile.xt5 | 52 ++++---- ...{Makefile.bgq.details => bgq.make.details} | 14 +- src/MAKE/Makefile.mpi | 4 +- src/MAKE/Makefile.serial | 8 +- 39 files changed, 803 insertions(+), 988 deletions(-) delete mode 100644 src/MAKE/MACHINES/Makefile.serial rename src/MAKE/MACHINES/{Makefile.bgq.details => bgq.make.details} (93%) diff --git a/src/MAKE/MACHINES/Makefile.aarch64_arm_openmpi_armpl b/src/MAKE/MACHINES/Makefile.aarch64_arm_openmpi_armpl index 9f29e9a87e..cffdcf9b30 100644 --- a/src/MAKE/MACHINES/Makefile.aarch64_arm_openmpi_armpl +++ b/src/MAKE/MACHINES/Makefile.aarch64_arm_openmpi_armpl @@ -1,4 +1,4 @@ -# g++_openmpi = OpenMPI with compiler set to GNU g++ +# aarch64_arm_openmpi_armpl = OpenMPI with compiler set to GNU g++ on 64-bit ARM SHELL = /bin/sh @@ -27,12 +27,12 @@ SHLIBFLAGS = -shared # if you change any -D setting, do full re-compile after "make clean" # LAMMPS ifdef settings -# see possible settings in Section 2.2 (step 4) of manual +# see possible settings in Section 3.5 of the manual LMP_INC = -DLAMMPS_GZIP # MPI library -# see discussion in Section 2.2 (step 5) of manual +# see discussion in Section 3.4 of the manual # MPI wrapper compiler/linker can provide this info # can point to dummy MPI library in src/STUBS as in Makefile.serial # use -D MPICH and OMPI settings in INC to avoid C++ lib conflicts @@ -45,7 +45,7 @@ MPI_PATH = MPI_LIB = # FFT library -# see discussion in Section 2.2 (step 6) of manaul +# see discussion in Section 3.5.2 of manual # can be left blank to use provided KISS FFT library # INC = -DFFT setting, e.g. -DFFT_FFTW, FFT compiler settings # PATH = path for FFT library @@ -56,22 +56,22 @@ FFT_PATH = -L$(ARMPL_LIBRARIES) FFT_LIB = -larmpl_lp64 # JPEG and/or PNG library -# see discussion in Section 2.2 (step 7) of manual +# see discussion in Section 3.5.4 of manual # only needed if -DLAMMPS_JPEG or -DLAMMPS_PNG listed with LMP_INC # INC = path(s) for jpeglib.h and/or png.h # PATH = path(s) for JPEG library and/or PNG library # LIB = name(s) of JPEG library and/or PNG library -JPG_INC = -JPG_PATH = -JPG_LIB = +JPG_INC = +JPG_PATH = +JPG_LIB = # --------------------------------------------------------------------- # build rules and dependencies # do not edit this section -include Makefile.package.settings -include Makefile.package +include Makefile.package.settings +include Makefile.package EXTRA_INC = $(LMP_INC) $(PKG_INC) $(MPI_INC) $(FFT_INC) $(JPG_INC) $(PKG_SYSINC) EXTRA_PATH = $(PKG_PATH) $(MPI_PATH) $(FFT_PATH) $(JPG_PATH) $(PKG_SYSPATH) @@ -86,28 +86,26 @@ vpath %.h .. # Link target -$(EXE): $(OBJ) $(EXTRA_LINK_DEPENDS) - $(LINK) $(LINKFLAGS) $(EXTRA_PATH) $(OBJ) $(EXTRA_LIB) $(LIB) -o $(EXE) - $(SIZE) $(EXE) +../$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) + $(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLINK) $(EXTRA_LIB) $(LIB) -o $@ + $(SIZE) $@ # Library targets -lib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(ARCHIVE) $(ARFLAGS) $(EXE) $(OBJ) +$(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) + @rm -f $(ARLIB) + @ln -s ../$(ARLIB) $(ARLIB) -shlib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o $(EXE) \ - $(OBJ) $(EXTRA_LIB) $(LIB) +$(SHLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o ../$(SHLIB) \ + $(OBJ) $(EXTRA_LIB) $(LIB) + @rm -f $(SHLIB) + @ln -s ../$(SHLIB) $(SHLIB) # Compilation rules -%.o:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< - -%.d:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(EXTRA_INC) $(DEPFLAGS) $< > $@ - -%.o:%.cu $(EXTRA_CPP_DEPENDS) +%.o:%.cpp $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< # Individual dependencies diff --git a/src/MAKE/MACHINES/Makefile.aarch64_arm_serial_armpl b/src/MAKE/MACHINES/Makefile.aarch64_arm_serial_armpl index 6397118357..eed872e565 100644 --- a/src/MAKE/MACHINES/Makefile.aarch64_arm_serial_armpl +++ b/src/MAKE/MACHINES/Makefile.aarch64_arm_serial_armpl @@ -1,4 +1,4 @@ -# arm_serial = Arm armclang compiler, no MPI +# aarch64_arm_serial_armpl = ARM 64-bit, armclang compiler, no MPI SHELL = /bin/sh @@ -26,12 +26,12 @@ SHLIBFLAGS = -shared # if you change any -D setting, do full re-compile after "make clean" # LAMMPS ifdef settings -# see possible settings in Section 2.2 (step 4) of manual +# see possible settings in Section 3.5 of the manual LMP_INC = -DLAMMPS_GZIP # MPI library -# see discussion in Section 2.2 (step 5) of manual +# see discussion in Section 3.4 of the manual # MPI wrapper compiler/linker can provide this info # can point to dummy MPI library in src/STUBS as in Makefile.serial # use -D MPICH and OMPI settings in INC to avoid C++ lib conflicts @@ -44,7 +44,7 @@ MPI_PATH = -L../STUBS MPI_LIB = -lmpi_stubs # FFT library -# see discussion in Section 2.2 (step 6) of manaul +# see discussion in Section 3.5.2 of manual # can be left blank to use provided KISS FFT library # INC = -DFFT setting, e.g. -DFFT_FFTW, FFT compiler settings # PATH = path for FFT library @@ -55,22 +55,22 @@ FFT_PATH = -L$(ARMPL_LIBRARIES) FFT_LIB = -larmpl_lp64 # JPEG and/or PNG library -# see discussion in Section 2.2 (step 7) of manual +# see discussion in Section 3.5.4 of manual # only needed if -DLAMMPS_JPEG or -DLAMMPS_PNG listed with LMP_INC # INC = path(s) for jpeglib.h and/or png.h # PATH = path(s) for JPEG library and/or PNG library # LIB = name(s) of JPEG library and/or PNG library -JPG_INC = -JPG_PATH = -JPG_LIB = +JPG_INC = +JPG_PATH = +JPG_LIB = # --------------------------------------------------------------------- # build rules and dependencies # do not edit this section -include Makefile.package.settings -include Makefile.package +include Makefile.package.settings +include Makefile.package EXTRA_INC = $(LMP_INC) $(PKG_INC) $(MPI_INC) $(FFT_INC) $(JPG_INC) $(PKG_SYSINC) EXTRA_PATH = $(PKG_PATH) $(MPI_PATH) $(FFT_PATH) $(JPG_PATH) $(PKG_SYSPATH) @@ -85,28 +85,26 @@ vpath %.h .. # Link target -$(EXE): $(OBJ) $(EXTRA_LINK_DEPENDS) - $(LINK) $(LINKFLAGS) $(EXTRA_PATH) $(OBJ) $(EXTRA_LIB) $(LIB) -o $(EXE) - $(SIZE) $(EXE) +../$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) + $(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLINK) $(EXTRA_LIB) $(LIB) -o $@ + $(SIZE) $@ # Library targets -lib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(ARCHIVE) $(ARFLAGS) $(EXE) $(OBJ) +$(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) + @rm -f $(ARLIB) + @ln -s ../$(ARLIB) $(ARLIB) -shlib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o $(EXE) \ - $(OBJ) $(EXTRA_LIB) $(LIB) +$(SHLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o ../$(SHLIB) \ + $(OBJ) $(EXTRA_LIB) $(LIB) + @rm -f $(SHLIB) + @ln -s ../$(SHLIB) $(SHLIB) # Compilation rules -%.o:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< - -%.d:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(EXTRA_INC) $(DEPFLAGS) $< > $@ - -%.o:%.cu $(EXTRA_CPP_DEPENDS) +%.o:%.cpp $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< # Individual dependencies diff --git a/src/MAKE/MACHINES/Makefile.aarch64_g++_openmpi_armpl b/src/MAKE/MACHINES/Makefile.aarch64_g++_openmpi_armpl index 933c97cba4..b433755c1a 100644 --- a/src/MAKE/MACHINES/Makefile.aarch64_g++_openmpi_armpl +++ b/src/MAKE/MACHINES/Makefile.aarch64_g++_openmpi_armpl @@ -1,4 +1,4 @@ -# g++_openmpi = OpenMPI with compiler set to GNU g++ +# aarch64_g++_openmpi_armpl = ARM 64-bit using OpenMPI with compiler set to GNU g++ SHELL = /bin/sh @@ -32,7 +32,7 @@ SHLIBFLAGS = -shared LMP_INC = -DLAMMPS_GZIP # MPI library -# see discussion in Section 2.2 (step 5) of manual +# see discussion in Section 3.4 of the manual # MPI wrapper compiler/linker can provide this info # can point to dummy MPI library in src/STUBS as in Makefile.serial # use -D MPICH and OMPI settings in INC to avoid C++ lib conflicts @@ -45,7 +45,7 @@ MPI_PATH = MPI_LIB = # FFT library -# see discussion in Section 2.2 (step 6) of manaul +# see discussion in Section 3.5.2 of manual # can be left blank to use provided KISS FFT library # INC = -DFFT setting, e.g. -DFFT_FFTW, FFT compiler settings # PATH = path for FFT library @@ -56,22 +56,22 @@ FFT_PATH = -L$(ARMPL_LIBRARIES) FFT_LIB = -larmpl_lp64 # JPEG and/or PNG library -# see discussion in Section 2.2 (step 7) of manual +# see discussion in Section 3.5.4 of manual # only needed if -DLAMMPS_JPEG or -DLAMMPS_PNG listed with LMP_INC # INC = path(s) for jpeglib.h and/or png.h # PATH = path(s) for JPEG library and/or PNG library # LIB = name(s) of JPEG library and/or PNG library -JPG_INC = -JPG_PATH = -JPG_LIB = +JPG_INC = +JPG_PATH = +JPG_LIB = # --------------------------------------------------------------------- # build rules and dependencies # do not edit this section -include Makefile.package.settings -include Makefile.package +include Makefile.package.settings +include Makefile.package EXTRA_INC = $(LMP_INC) $(PKG_INC) $(MPI_INC) $(FFT_INC) $(JPG_INC) $(PKG_SYSINC) EXTRA_PATH = $(PKG_PATH) $(MPI_PATH) $(FFT_PATH) $(JPG_PATH) $(PKG_SYSPATH) @@ -86,28 +86,26 @@ vpath %.h .. # Link target -$(EXE): $(OBJ) $(EXTRA_LINK_DEPENDS) - $(LINK) $(LINKFLAGS) $(EXTRA_PATH) $(OBJ) $(EXTRA_LIB) $(LIB) -o $(EXE) - $(SIZE) $(EXE) +../$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) + $(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLINK) $(EXTRA_LIB) $(LIB) -o $@ + $(SIZE) $@ # Library targets -lib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(ARCHIVE) $(ARFLAGS) $(EXE) $(OBJ) +$(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) + @rm -f $(ARLIB) + @ln -s ../$(ARLIB) $(ARLIB) -shlib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o $(EXE) \ - $(OBJ) $(EXTRA_LIB) $(LIB) +$(SHLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o ../$(SHLIB) \ + $(OBJ) $(EXTRA_LIB) $(LIB) + @rm -f $(SHLIB) + @ln -s ../$(SHLIB) $(SHLIB) # Compilation rules -%.o:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< - -%.d:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(EXTRA_INC) $(DEPFLAGS) $< > $@ - -%.o:%.cu $(EXTRA_CPP_DEPENDS) +%.o:%.cpp $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< # Individual dependencies diff --git a/src/MAKE/MACHINES/Makefile.aarch64_g++_serial_armpl b/src/MAKE/MACHINES/Makefile.aarch64_g++_serial_armpl index e7f1a81f3b..3b148ba3d2 100644 --- a/src/MAKE/MACHINES/Makefile.aarch64_g++_serial_armpl +++ b/src/MAKE/MACHINES/Makefile.aarch64_g++_serial_armpl @@ -1,4 +1,4 @@ -# g++_serial = GNU g++ compiler, no MPI +# aarch64_g++_serial_armpl = ARM 64-bit GNU g++ compiler, no MPI SHELL = /bin/sh @@ -26,12 +26,12 @@ SHLIBFLAGS = -shared # if you change any -D setting, do full re-compile after "make clean" # LAMMPS ifdef settings -# see possible settings in Section 2.2 (step 4) of manual +# see possible settings in Section 3.5 of the manual LMP_INC = -DLAMMPS_GZIP # MPI library -# see discussion in Section 2.2 (step 5) of manual +# see discussion in Section 3.4 of the manual # MPI wrapper compiler/linker can provide this info # can point to dummy MPI library in src/STUBS as in Makefile.serial # use -D MPICH and OMPI settings in INC to avoid C++ lib conflicts @@ -44,7 +44,7 @@ MPI_PATH = -L../STUBS MPI_LIB = -lmpi_stubs # FFT library -# see discussion in Section 2.2 (step 6) of manaul +# see discussion in Section 3.5.2 of manual # can be left blank to use provided KISS FFT library # INC = -DFFT setting, e.g. -DFFT_FFTW, FFT compiler settings # PATH = path for FFT library @@ -55,22 +55,22 @@ FFT_PATH = -L$(ARMPL_LIBRARIES) FFT_LIB = -larmpl_lp64 # JPEG and/or PNG library -# see discussion in Section 2.2 (step 7) of manual +# see discussion in Section 3.5.4 of manual # only needed if -DLAMMPS_JPEG or -DLAMMPS_PNG listed with LMP_INC # INC = path(s) for jpeglib.h and/or png.h # PATH = path(s) for JPEG library and/or PNG library # LIB = name(s) of JPEG library and/or PNG library -JPG_INC = -JPG_PATH = -JPG_LIB = +JPG_INC = +JPG_PATH = +JPG_LIB = # --------------------------------------------------------------------- # build rules and dependencies # do not edit this section -include Makefile.package.settings -include Makefile.package +include Makefile.package.settings +include Makefile.package EXTRA_INC = $(LMP_INC) $(PKG_INC) $(MPI_INC) $(FFT_INC) $(JPG_INC) $(PKG_SYSINC) EXTRA_PATH = $(PKG_PATH) $(MPI_PATH) $(FFT_PATH) $(JPG_PATH) $(PKG_SYSPATH) @@ -85,28 +85,26 @@ vpath %.h .. # Link target -$(EXE): $(OBJ) $(EXTRA_LINK_DEPENDS) - $(LINK) $(LINKFLAGS) $(EXTRA_PATH) $(OBJ) $(EXTRA_LIB) $(LIB) -o $(EXE) - $(SIZE) $(EXE) +../$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) + $(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLINK) $(EXTRA_LIB) $(LIB) -o $@ + $(SIZE) $@ # Library targets -lib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(ARCHIVE) $(ARFLAGS) $(EXE) $(OBJ) +$(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) + @rm -f $(ARLIB) + @ln -s ../$(ARLIB) $(ARLIB) -shlib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o $(EXE) \ - $(OBJ) $(EXTRA_LIB) $(LIB) +$(SHLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o ../$(SHLIB) \ + $(OBJ) $(EXTRA_LIB) $(LIB) + @rm -f $(SHLIB) + @ln -s ../$(SHLIB) $(SHLIB) # Compilation rules -%.o:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< - -%.d:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(EXTRA_INC) $(DEPFLAGS) $< > $@ - -%.o:%.cu $(EXTRA_CPP_DEPENDS) +%.o:%.cpp $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< # Individual dependencies diff --git a/src/MAKE/MACHINES/Makefile.astra_arm b/src/MAKE/MACHINES/Makefile.astra_arm index 3734208936..d66e786eac 100644 --- a/src/MAKE/MACHINES/Makefile.astra_arm +++ b/src/MAKE/MACHINES/Makefile.astra_arm @@ -1,4 +1,4 @@ -# astra_arm - ThunderX2 ARM/OpenMPI Based, use Arm-PL for FFTW +# astra_arm = ThunderX2 ARM/OpenMPI Based, use Arm-PL for FFTW # need to load the following modules: # 1) arm-based developer pack @@ -25,12 +25,12 @@ SIZE = size # if you change any -D setting, do full re-compile after "make clean" # LAMMPS ifdef settings -# see possible settings in Section 2.2 (step 4) of manual +# see possible settings in Section 3.5 of the manual LMP_INC = -DLAMMPS_GZIP # MPI library -# see discussion in Section 2.2 (step 5) of manual +# see discussion in Section 3.4 of the manual # MPI wrapper compiler/linker can provide this info # can point to dummy MPI library in src/STUBS as in Makefile.serial # use -D MPICH and OMPI settings in INC to avoid C++ lib conflicts @@ -43,7 +43,7 @@ MPI_PATH = MPI_LIB = # FFT library -# see discussion in Section 2.2 (step 6) of manaul +# see discussion in Section 3.5.2 of manual # can be left blank to use provided KISS FFT library # INC = -DFFT setting, e.g. -DFFT_FFTW, FFT compiler settings # PATH = path for FFT library @@ -54,22 +54,22 @@ FFT_PATH = FFT_LIB = # JPEG and/or PNG library -# see discussion in Section 2.2 (step 7) of manual +# see discussion in Section 3.5.4 of manual # only needed if -DLAMMPS_JPEG or -DLAMMPS_PNG listed with LMP_INC # INC = path(s) for jpeglib.h and/or png.h # PATH = path(s) for JPEG library and/or PNG library # LIB = name(s) of JPEG library and/or PNG library -JPG_INC = -JPG_PATH = +JPG_INC = +JPG_PATH = JPG_LIB = # --------------------------------------------------------------------- # build rules and dependencies # do not edit this section -include Makefile.package.settings -include Makefile.package +include Makefile.package.settings +include Makefile.package EXTRA_INC = $(LMP_INC) $(PKG_INC) $(MPI_INC) $(FFT_INC) $(JPG_INC) $(PKG_SYSINC) EXTRA_PATH = $(PKG_PATH) $(MPI_PATH) $(FFT_PATH) $(JPG_PATH) $(PKG_SYSPATH) @@ -84,28 +84,26 @@ vpath %.h .. # Link target -$(EXE): $(OBJ) $(EXTRA_LINK_DEPENDS) - $(LINK) $(LINKFLAGS) $(EXTRA_PATH) $(OBJ) $(EXTRA_LIB) $(LIB) -o $(EXE) - $(SIZE) $(EXE) +../$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) + $(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLINK) $(EXTRA_LIB) $(LIB) -o $@ + $(SIZE) $@ # Library targets -lib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(ARCHIVE) $(ARFLAGS) $(EXE) $(OBJ) +$(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) + @rm -f $(ARLIB) + @ln -s ../$(ARLIB) $(ARLIB) -shlib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o $(EXE) \ - $(OBJ) $(EXTRA_LIB) $(LIB) +$(SHLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o ../$(SHLIB) \ + $(OBJ) $(EXTRA_LIB) $(LIB) + @rm -f $(SHLIB) + @ln -s ../$(SHLIB) $(SHLIB) # Compilation rules -%.o:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< - -%.d:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(EXTRA_INC) $(DEPFLAGS) $< > $@ - -%.o:%.cu $(EXTRA_CPP_DEPENDS) +%.o:%.cpp $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< # Individual dependencies diff --git a/src/MAKE/MACHINES/Makefile.astra_gcc b/src/MAKE/MACHINES/Makefile.astra_gcc index 3ee43800fc..f983eafaf5 100644 --- a/src/MAKE/MACHINES/Makefile.astra_gcc +++ b/src/MAKE/MACHINES/Makefile.astra_gcc @@ -1,4 +1,4 @@ -# astra-gcc - ThunderX2 GCC/OpenMPI Based, FFTW +# astra_gcc = ThunderX2 GCC/OpenMPI Based, FFTW # need to load the following modules: # 1) arm-based developer pack @@ -25,12 +25,12 @@ SIZE = size # if you change any -D setting, do full re-compile after "make clean" # LAMMPS ifdef settings -# see possible settings in Section 2.2 (step 4) of manual +# see possible settings in Section 3.5 of the manual LMP_INC = -DLAMMPS_GZIP # MPI library -# see discussion in Section 2.2 (step 5) of manual +# see discussion in Section 3.4 of the manual # MPI wrapper compiler/linker can provide this info # can point to dummy MPI library in src/STUBS as in Makefile.serial # use -D MPICH and OMPI settings in INC to avoid C++ lib conflicts @@ -43,7 +43,7 @@ MPI_PATH = MPI_LIB = # FFT library -# see discussion in Section 2.2 (step 6) of manaul +# see discussion in Section 3.5.2 of manual # can be left blank to use provided KISS FFT library # INC = -DFFT setting, e.g. -DFFT_FFTW, FFT compiler settings # PATH = path for FFT library @@ -54,22 +54,22 @@ FFT_PATH = -I${FFTW_INC} FFT_LIB = -L${FFTW_LIB} -lfftw3 # JPEG and/or PNG library -# see discussion in Section 2.2 (step 7) of manual +# see discussion in Section 3.5.4 of manual # only needed if -DLAMMPS_JPEG or -DLAMMPS_PNG listed with LMP_INC # INC = path(s) for jpeglib.h and/or png.h # PATH = path(s) for JPEG library and/or PNG library # LIB = name(s) of JPEG library and/or PNG library -JPG_INC = -JPG_PATH = +JPG_INC = +JPG_PATH = JPG_LIB = # --------------------------------------------------------------------- # build rules and dependencies # do not edit this section -include Makefile.package.settings -include Makefile.package +include Makefile.package.settings +include Makefile.package EXTRA_INC = $(LMP_INC) $(PKG_INC) $(MPI_INC) $(FFT_INC) $(JPG_INC) $(PKG_SYSINC) EXTRA_PATH = $(PKG_PATH) $(MPI_PATH) $(FFT_PATH) $(JPG_PATH) $(PKG_SYSPATH) @@ -84,28 +84,26 @@ vpath %.h .. # Link target -$(EXE): $(OBJ) $(EXTRA_LINK_DEPENDS) - $(LINK) $(LINKFLAGS) $(EXTRA_PATH) $(OBJ) $(EXTRA_LIB) $(LIB) -o $(EXE) - $(SIZE) $(EXE) +../$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) + $(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLINK) $(EXTRA_LIB) $(LIB) -o $@ + $(SIZE) $@ # Library targets -lib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(ARCHIVE) $(ARFLAGS) $(EXE) $(OBJ) +$(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) + @rm -f $(ARLIB) + @ln -s ../$(ARLIB) $(ARLIB) -shlib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o $(EXE) \ - $(OBJ) $(EXTRA_LIB) $(LIB) +$(SHLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o ../$(SHLIB) \ + $(OBJ) $(EXTRA_LIB) $(LIB) + @rm -f $(SHLIB) + @ln -s ../$(SHLIB) $(SHLIB) # Compilation rules -%.o:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< - -%.d:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(EXTRA_INC) $(DEPFLAGS) $< > $@ - -%.o:%.cu $(EXTRA_CPP_DEPENDS) +%.o:%.cpp $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< # Individual dependencies diff --git a/src/MAKE/MACHINES/Makefile.beacon b/src/MAKE/MACHINES/Makefile.beacon index 522d7b1859..6c1022b011 100644 --- a/src/MAKE/MACHINES/Makefile.beacon +++ b/src/MAKE/MACHINES/Makefile.beacon @@ -1,4 +1,4 @@ -# linux = RedHat Linux box, Intel icc, MPICH2, FFTW +# beacon = RedHat Linux box, Intel icc, MPICH2, FFTW SHELL = /bin/sh @@ -27,12 +27,12 @@ SHLIBFLAGS = -shared # if you change any -D setting, do full re-compile after "make clean" # LAMMPS ifdef settings -# see possible settings in Section 2.2 (step 4) of manual +# see possible settings in Section 3.5 of the manual LMP_INC = -DLAMMPS_GZIP -DLAMMPS_JPEG # MPI library -# see discussion in Section 2.2 (step 5) of manual +# see discussion in Section 3.4 of the manual # MPI wrapper compiler/linker can provide this info # can point to dummy MPI library in src/STUBS as in Makefile.serial # use -D MPICH and OMPI settings in INC to avoid C++ lib conflicts @@ -45,7 +45,7 @@ MPI_PATH = MPI_LIB = # FFT library -# see discussion in Section 2.2 (step 6) of manaul +# see discussion in Section 3.5.2 of manual # can be left blank to use provided KISS FFT library # INC = -DFFT setting, e.g. -DFFT_FFTW, FFT compiler settings # PATH = path for FFT library @@ -56,7 +56,7 @@ FFT_PATH = FFT_LIB = -L$(MKLROOT) -lmkl_intel_ilp64 -lmkl_intel_thread -lmkl_core # JPEG and/or PNG library -# see discussion in Section 2.2 (step 7) of manual +# see discussion in Section 3.5.4 of manual # only needed if -DLAMMPS_JPEG or -DLAMMPS_PNG listed with LMP_INC # INC = path(s) for jpeglib.h and/or png.h # PATH = path(s) for JPEG library and/or PNG library @@ -70,8 +70,8 @@ JPG_LIB = -ljpeg # build rules and dependencies # do not edit this section -include Makefile.package.settings -include Makefile.package +include Makefile.package.settings +include Makefile.package EXTRA_INC = $(LMP_INC) $(PKG_INC) $(MPI_INC) $(FFT_INC) $(JPG_INC) $(PKG_SYSINC) EXTRA_PATH = $(PKG_PATH) $(MPI_PATH) $(FFT_PATH) $(JPG_PATH) $(PKG_SYSPATH) @@ -86,28 +86,26 @@ vpath %.h .. # Link target -$(EXE): $(OBJ) $(EXTRA_LINK_DEPENDS) - $(LINK) $(LINKFLAGS) $(EXTRA_PATH) $(OBJ) $(EXTRA_LIB) $(LIB) -o $(EXE) - $(SIZE) $(EXE) +../$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) + $(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLINK) $(EXTRA_LIB) $(LIB) -o $@ + $(SIZE) $@ # Library targets -lib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(ARCHIVE) $(ARFLAGS) $(EXE) $(OBJ) +$(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) + @rm -f $(ARLIB) + @ln -s ../$(ARLIB) $(ARLIB) -shlib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o $(EXE) \ - $(OBJ) $(EXTRA_LIB) $(LIB) +$(SHLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o ../$(SHLIB) \ + $(OBJ) $(EXTRA_LIB) $(LIB) + @rm -f $(SHLIB) + @ln -s ../$(SHLIB) $(SHLIB) # Compilation rules -%.o:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< - -%.d:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(EXTRA_INC) $(DEPFLAGS) $< > $@ - -%.o:%.cu $(EXTRA_CPP_DEPENDS) +%.o:%.cpp $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< # Individual dependencies diff --git a/src/MAKE/MACHINES/Makefile.bgl b/src/MAKE/MACHINES/Makefile.bgl index 4759cde1ff..4932076cd6 100644 --- a/src/MAKE/MACHINES/Makefile.bgl +++ b/src/MAKE/MACHINES/Makefile.bgl @@ -32,12 +32,12 @@ SHLIBFLAGS = -shared # if you change any -D setting, do full re-compile after "make clean" # LAMMPS ifdef settings -# see possible settings in Section 2.2 (step 4) of manual +# see possible settings in Section 3.5 of the manual LMP_INC = -DLAMMPS_GZIP # MPI library -# see discussion in Section 2.2 (step 5) of manual +# see discussion in Section 3.4 of the manual # MPI wrapper compiler/linker can provide this info # can point to dummy MPI library in src/STUBS as in Makefile.serial # use -D MPICH and OMPI settings in INC to avoid C++ lib conflicts @@ -50,33 +50,33 @@ MPI_PATH = MPI_LIB = -lmpich.rts # FFT library -# see discussion in Section 2.2 (step 6) of manaul +# see discussion in Section 3.5.2 of manual # can be left blank to use provided KISS FFT library # INC = -DFFT setting, e.g. -DFFT_FFTW, FFT compiler settings # PATH = path for FFT library # LIB = name of FFT library -FFT_INC = -DFFT_FFTW2 -FFT_PATH = -FFT_LIB = -lfftw +FFT_INC = +FFT_PATH = +FFT_LIB = # JPEG and/or PNG library -# see discussion in Section 2.2 (step 7) of manual +# see discussion in Section 3.5.4 of manual # only needed if -DLAMMPS_JPEG or -DLAMMPS_PNG listed with LMP_INC # INC = path(s) for jpeglib.h and/or png.h # PATH = path(s) for JPEG library and/or PNG library # LIB = name(s) of JPEG library and/or PNG library -JPG_INC = -JPG_PATH = -JPG_LIB = +JPG_INC = +JPG_PATH = +JPG_LIB = # --------------------------------------------------------------------- # build rules and dependencies # do not edit this section -include Makefile.package.settings -include Makefile.package +include Makefile.package.settings +include Makefile.package EXTRA_INC = $(LMP_INC) $(PKG_INC) $(MPI_INC) $(FFT_INC) $(JPG_INC) $(PKG_SYSINC) EXTRA_PATH = $(PKG_PATH) $(MPI_PATH) $(FFT_PATH) $(JPG_PATH) $(PKG_SYSPATH) @@ -91,28 +91,26 @@ vpath %.h .. # Link target -$(EXE): $(OBJ) $(EXTRA_LINK_DEPENDS) - $(LINK) $(LINKFLAGS) $(EXTRA_PATH) $(OBJ) $(EXTRA_LIB) $(LIB) -o $(EXE) - $(SIZE) $(EXE) +../$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) + $(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLINK) $(EXTRA_LIB) $(LIB) -o $@ + $(SIZE) $@ # Library targets -lib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(ARCHIVE) $(ARFLAGS) $(EXE) $(OBJ) +$(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) + @rm -f $(ARLIB) + @ln -s ../$(ARLIB) $(ARLIB) -shlib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o $(EXE) \ - $(OBJ) $(EXTRA_LIB) $(LIB) +$(SHLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o ../$(SHLIB) \ + $(OBJ) $(EXTRA_LIB) $(LIB) + @rm -f $(SHLIB) + @ln -s ../$(SHLIB) $(SHLIB) # Compilation rules -%.o:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< - -%.d:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(EXTRA_INC) $(DEPFLAGS) $< > $@ - -%.o:%.cu $(EXTRA_CPP_DEPENDS) +%.o:%.cpp $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< # Individual dependencies diff --git a/src/MAKE/MACHINES/Makefile.bgq b/src/MAKE/MACHINES/Makefile.bgq index c995f41108..be2ea2dc47 100644 --- a/src/MAKE/MACHINES/Makefile.bgq +++ b/src/MAKE/MACHINES/Makefile.bgq @@ -8,7 +8,7 @@ SHELL = /bin/bash # do not edit this section # select which compiler by editing Makefile.bgq.details -include ../MAKE/MACHINES/Makefile.bgq.details +include ../MAKE/MACHINES/bgq.make.details include Makefile.package.settings include Makefile.package @@ -26,28 +26,26 @@ vpath %.h .. # Link target -$(EXE): $(OBJ) $(EXTRA_LINK_DEPENDS) - $(LINK) $(LINKFLAGS) $(EXTRA_PATH) $(OBJ) $(EXTRA_LIB) $(LIB) -o $(EXE) - $(SIZE) $(EXE) +../$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) + $(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLINK) $(EXTRA_LIB) $(LIB) -o $@ + $(SIZE) $@ # Library targets -lib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(ARCHIVE) $(ARFLAGS) $(EXE) $(OBJ) +$(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) + @rm -f $(ARLIB) + @ln -s ../$(ARLIB) $(ARLIB) -shlib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o $(EXE) \ - $(OBJ) $(EXTRA_LIB) $(LIB) +$(SHLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o ../$(SHLIB) \ + $(OBJ) $(EXTRA_LIB) $(LIB) + @rm -f $(SHLIB) + @ln -s ../$(SHLIB) $(SHLIB) # Compilation rules -%.o:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< - -%.d:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(EXTRA_INC) $(DEPFLAGS) $< > $@ - -%.o:%.cu $(EXTRA_CPP_DEPENDS) +%.o:%.cpp $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< # Individual dependencies diff --git a/src/MAKE/MACHINES/Makefile.chama b/src/MAKE/MACHINES/Makefile.chama index aab5bb3d22..89bd178dee 100644 --- a/src/MAKE/MACHINES/Makefile.chama +++ b/src/MAKE/MACHINES/Makefile.chama @@ -1,4 +1,4 @@ -# chama - Intel SandyBridge, mpic++, openmpi, no FFTW +# chama = Intel SandyBridge, mpic++, openmpi, no FFTW # need to load the following modules: # 1) intel/12.1 @@ -26,12 +26,12 @@ SIZE = size # if you change any -D setting, do full re-compile after "make clean" # LAMMPS ifdef settings -# see possible settings in Section 2.2 (step 4) of manual +# see possible settings in Section 3.5 of the manual LMP_INC = -DLAMMPS_GZIP # MPI library -# see discussion in Section 2.2 (step 5) of manual +# see discussion in Section 3.4 of the manual # MPI wrapper compiler/linker can provide this info # can point to dummy MPI library in src/STUBS as in Makefile.serial # use -D MPICH and OMPI settings in INC to avoid C++ lib conflicts @@ -39,38 +39,38 @@ LMP_INC = -DLAMMPS_GZIP # PATH = path for MPI library # LIB = name of MPI library -MPI_INC = -MPI_PATH = +MPI_INC = -DMPICH_SKIP_MPICXX -DOMPI_SKIP_MPICXX=1 +MPI_PATH = MPI_LIB = # FFT library -# see discussion in Section 2.2 (step 6) of manaul +# see discussion in Section 3.5.2 of manual # can be left blank to use provided KISS FFT library # INC = -DFFT setting, e.g. -DFFT_FFTW, FFT compiler settings # PATH = path for FFT library # LIB = name of FFT library -#FFT_INC = -DFFT_FFTW2 -I${FFTW_INCLUDE} -#FFT_PATH = -L${FFTW_LIB} -#FFT_LIB = -lfftw +FFT_INC = +FFT_PATH = +FFT_LIB = # JPEG and/or PNG library -# see discussion in Section 2.2 (step 7) of manual +# see discussion in Section 3.5.4 of manual # only needed if -DLAMMPS_JPEG or -DLAMMPS_PNG listed with LMP_INC # INC = path(s) for jpeglib.h and/or png.h # PATH = path(s) for JPEG library and/or PNG library # LIB = name(s) of JPEG library and/or PNG library -JPG_INC = -JPG_PATH = +JPG_INC = +JPG_PATH = JPG_LIB = # --------------------------------------------------------------------- # build rules and dependencies # do not edit this section -include Makefile.package.settings -include Makefile.package +include Makefile.package.settings +include Makefile.package EXTRA_INC = $(LMP_INC) $(PKG_INC) $(MPI_INC) $(FFT_INC) $(JPG_INC) $(PKG_SYSINC) EXTRA_PATH = $(PKG_PATH) $(MPI_PATH) $(FFT_PATH) $(JPG_PATH) $(PKG_SYSPATH) @@ -85,28 +85,26 @@ vpath %.h .. # Link target -$(EXE): $(OBJ) $(EXTRA_LINK_DEPENDS) - $(LINK) $(LINKFLAGS) $(EXTRA_PATH) $(OBJ) $(EXTRA_LIB) $(LIB) -o $(EXE) - $(SIZE) $(EXE) +../$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) + $(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLINK) $(EXTRA_LIB) $(LIB) -o $@ + $(SIZE) $@ # Library targets -lib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(ARCHIVE) $(ARFLAGS) $(EXE) $(OBJ) +$(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) + @rm -f $(ARLIB) + @ln -s ../$(ARLIB) $(ARLIB) -shlib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o $(EXE) \ - $(OBJ) $(EXTRA_LIB) $(LIB) +$(SHLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o ../$(SHLIB) \ + $(OBJ) $(EXTRA_LIB) $(LIB) + @rm -f $(SHLIB) + @ln -s ../$(SHLIB) $(SHLIB) # Compilation rules -%.o:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< - -%.d:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(EXTRA_INC) $(DEPFLAGS) $< > $@ - -%.o:%.cu $(EXTRA_CPP_DEPENDS) +%.o:%.cpp $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< # Individual dependencies diff --git a/src/MAKE/MACHINES/Makefile.cori2 b/src/MAKE/MACHINES/Makefile.cori2 index 45e1ab1f8a..3c0f44e465 100644 --- a/src/MAKE/MACHINES/Makefile.cori2 +++ b/src/MAKE/MACHINES/Makefile.cori2 @@ -36,12 +36,12 @@ SHLIBFLAGS = -shared # if you change any -D setting, do full re-compile after "make clean" # LAMMPS ifdef settings -# see possible settings in Section 2.2 (step 4) of manual +# see possible settings in Section 3.5 of the manual LMP_INC = #-DLAMMPS_GZIP -DLAMMPS_JPEG # MPI library -# see discussion in Section 2.2 (step 5) of manual +# see discussion in Section 3.4 of the manual # MPI wrapper compiler/linker can provide this info # can point to dummy MPI library in src/STUBS as in Makefile.serial # use -D MPICH and OMPI settings in INC to avoid C++ lib conflicts @@ -50,11 +50,11 @@ LMP_INC = #-DLAMMPS_GZIP -DLAMMPS_JPEG # LIB = name of MPI library MPI_INC = -DMPICH_SKIP_MPICXX -DOMPI_SKIP_MPICXX=1 -MPI_PATH = +MPI_PATH = MPI_LIB = # FFT library -# see discussion in Section 2.2 (step 6) of manaul +# see discussion in Section 3.5.2 of manual # can be left blank to use provided KISS FFT library # INC = -DFFT setting, e.g. -DFFT_FFTW, FFT compiler settings # PATH = path for FFT library @@ -65,7 +65,7 @@ FFT_PATH = FFT_LIB = -lfftw3f # JPEG and/or PNG library -# see discussion in Section 2.2 (step 7) of manual +# see discussion in Section 3.5.4 of manual # only needed if -DLAMMPS_JPEG or -DLAMMPS_PNG listed with LMP_INC # INC = path(s) for jpeglib.h and/or png.h # PATH = path(s) for JPEG library and/or PNG library @@ -79,8 +79,8 @@ JPG_LIB = #-ljpeg # build rules and dependencies # do not edit this section -include Makefile.package.settings -include Makefile.package +include Makefile.package.settings +include Makefile.package EXTRA_INC = $(LMP_INC) $(PKG_INC) $(MPI_INC) $(FFT_INC) $(JPG_INC) $(PKG_SYSINC) EXTRA_PATH = $(PKG_PATH) $(MPI_PATH) $(FFT_PATH) $(JPG_PATH) $(PKG_SYSPATH) @@ -93,30 +93,28 @@ vpath %.h .. # Link target -$(EXE): $(OBJ) - $(LINK) $(LINKFLAGS) $(EXTRA_PATH) $(OBJ) $(EXTRA_LIB) $(LIB) -o $(EXE) - $(SIZE) $(EXE) +../$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) + $(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLINK) $(EXTRA_LIB) $(LIB) -o $@ + $(SIZE) $@ # Library targets -lib: $(OBJ) - $(ARCHIVE) $(ARFLAGS) $(EXE) $(OBJ) +$(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) + @rm -f $(ARLIB) + @ln -s ../$(ARLIB) $(ARLIB) -shlib: $(OBJ) - $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o $(EXE) \ - $(OBJ) $(EXTRA_LIB) $(LIB) +$(SHLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o ../$(SHLIB) \ + $(OBJ) $(EXTRA_LIB) $(LIB) + @rm -f $(SHLIB) + @ln -s ../$(SHLIB) $(SHLIB) # Compilation rules %.o:%.cpp $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< -%.d:%.cpp - $(CC) $(CCFLAGS) $(EXTRA_INC) $(DEPFLAGS) $< > $@ - -%.o:%.cu - $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< - # Individual dependencies depend : fastdep.exe $(SRC) diff --git a/src/MAKE/MACHINES/Makefile.cygwin b/src/MAKE/MACHINES/Makefile.cygwin index 53e94d975e..4cc9ace7bc 100644 --- a/src/MAKE/MACHINES/Makefile.cygwin +++ b/src/MAKE/MACHINES/Makefile.cygwin @@ -26,12 +26,12 @@ SHLIBFLAGS = -shared # if you change any -D setting, do full re-compile after "make clean" # LAMMPS ifdef settings -# see possible settings in Section 2.2 (step 4) of manual +# see possible settings in Section 3.5 of the manual LMP_INC = -DLAMMPS_GZIP # MPI library -# see discussion in Section 2.2 (step 5) of manual +# see discussion in Section 3.4 of the manual # MPI wrapper compiler/linker can provide this info # can point to dummy MPI library in src/STUBS as in Makefile.serial # use -D MPICH and OMPI settings in INC to avoid C++ lib conflicts @@ -44,33 +44,33 @@ MPI_PATH = -L/cygdrive/c/cygwin/mpich2-1.0.4p1/lib MPI_LIB = -lmpich # FFT library -# see discussion in Section 2.2 (step 6) of manaul +# see discussion in Section 3.5.2 of manual # can be left blank to use provided KISS FFT library # INC = -DFFT setting, e.g. -DFFT_FFTW, FFT compiler settings # PATH = path for FFT library # LIB = name of FFT library -FFT_INC = -DFFT_FFTW2 -I/cygdrive/c/cygwin/usr/local/include -FFT_PATH = -L/cygdrive/c/cygwin/usr/local/lib -FFT_LIB = -lfftw +FFT_INC = +FFT_PATH = +FFT_LIB = # JPEG and/or PNG library -# see discussion in Section 2.2 (step 7) of manual +# see discussion in Section 3.5.4 of manual # only needed if -DLAMMPS_JPEG or -DLAMMPS_PNG listed with LMP_INC # INC = path(s) for jpeglib.h and/or png.h # PATH = path(s) for JPEG library and/or PNG library # LIB = name(s) of JPEG library and/or PNG library -JPG_INC = -JPG_PATH = -JPG_LIB = +JPG_INC = +JPG_PATH = +JPG_LIB = # --------------------------------------------------------------------- # build rules and dependencies # do not edit this section -include Makefile.package.settings -include Makefile.package +include Makefile.package.settings +include Makefile.package EXTRA_INC = $(LMP_INC) $(PKG_INC) $(MPI_INC) $(FFT_INC) $(JPG_INC) $(PKG_SYSINC) EXTRA_PATH = $(PKG_PATH) $(MPI_PATH) $(FFT_PATH) $(JPG_PATH) $(PKG_SYSPATH) @@ -85,28 +85,26 @@ vpath %.h .. # Link target -$(EXE): $(OBJ) $(EXTRA_LINK_DEPENDS) - $(LINK) $(LINKFLAGS) $(EXTRA_PATH) $(OBJ) $(EXTRA_LIB) $(LIB) -o $(EXE) - $(SIZE) $(EXE) +../$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) + $(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLINK) $(EXTRA_LIB) $(LIB) -o $@ + $(SIZE) $@ # Library targets -lib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(ARCHIVE) $(ARFLAGS) $(EXE) $(OBJ) +$(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) + @rm -f $(ARLIB) + @ln -s ../$(ARLIB) $(ARLIB) -shlib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o $(EXE) \ - $(OBJ) $(EXTRA_LIB) $(LIB) +$(SHLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o ../$(SHLIB) \ + $(OBJ) $(EXTRA_LIB) $(LIB) + @rm -f $(SHLIB) + @ln -s ../$(SHLIB) $(SHLIB) # Compilation rules -%.o:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< - -%.d:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(EXTRA_INC) $(DEPFLAGS) $< > $@ - -%.o:%.cu $(EXTRA_CPP_DEPENDS) +%.o:%.cpp $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< # Individual dependencies diff --git a/src/MAKE/MACHINES/Makefile.glory b/src/MAKE/MACHINES/Makefile.glory index d856b1a07d..809d166432 100644 --- a/src/MAKE/MACHINES/Makefile.glory +++ b/src/MAKE/MACHINES/Makefile.glory @@ -43,12 +43,12 @@ SHLIBFLAGS = -shared # if you change any -D setting, do full re-compile after "make clean" # LAMMPS ifdef settings -# see possible settings in Section 2.2 (step 4) of manual +# see possible settings in Section 3.5 of the manual LMP_INC = -DLAMMPS_GZIP # MPI library -# see discussion in Section 2.2 (step 5) of manual +# see discussion in Section 3.4 of the manual # MPI wrapper compiler/linker can provide this info # can point to dummy MPI library in src/STUBS as in Makefile.serial # use -D MPICH and OMPI settings in INC to avoid C++ lib conflicts @@ -61,33 +61,33 @@ MPI_PATH = MPI_LIB = # FFT library -# see discussion in Section 2.2 (step 6) of manaul +# see discussion in Section 3.5.2 of manual # can be left blank to use provided KISS FFT library # INC = -DFFT setting, e.g. -DFFT_FFTW, FFT compiler settings # PATH = path for FFT library # LIB = name of FFT library -FFT_INC = -DFFT_FFTW2 -I${FFTW_INCLUDE} -FFT_PATH = -L${FFTW_LIB} -FFT_LIB = -lfftw +FFT_INC = +FFT_PATH = +FFT_LIB = # JPEG and/or PNG library -# see discussion in Section 2.2 (step 7) of manual +# see discussion in Section 3.5.4 of manual # only needed if -DLAMMPS_JPEG or -DLAMMPS_PNG listed with LMP_INC # INC = path(s) for jpeglib.h and/or png.h # PATH = path(s) for JPEG library and/or PNG library # LIB = name(s) of JPEG library and/or PNG library -JPG_INC = -JPG_PATH = -JPG_LIB = +JPG_INC = +JPG_PATH = +JPG_LIB = # --------------------------------------------------------------------- # build rules and dependencies # do not edit this section -include Makefile.package.settings -include Makefile.package +include Makefile.package.settings +include Makefile.package EXTRA_INC = $(LMP_INC) $(PKG_INC) $(MPI_INC) $(FFT_INC) $(JPG_INC) $(PKG_SYSINC) EXTRA_PATH = $(PKG_PATH) $(MPI_PATH) $(FFT_PATH) $(JPG_PATH) $(PKG_SYSPATH) @@ -102,28 +102,26 @@ vpath %.h .. # Link target -$(EXE): $(OBJ) $(EXTRA_LINK_DEPENDS) - $(LINK) $(LINKFLAGS) $(EXTRA_PATH) $(OBJ) $(EXTRA_LIB) $(LIB) -o $(EXE) - $(SIZE) $(EXE) +../$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) + $(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLINK) $(EXTRA_LIB) $(LIB) -o $@ + $(SIZE) $@ # Library targets -lib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(ARCHIVE) $(ARFLAGS) $(EXE) $(OBJ) +$(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) + @rm -f $(ARLIB) + @ln -s ../$(ARLIB) $(ARLIB) -shlib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o $(EXE) \ - $(OBJ) $(EXTRA_LIB) $(LIB) +$(SHLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o ../$(SHLIB) \ + $(OBJ) $(EXTRA_LIB) $(LIB) + @rm -f $(SHLIB) + @ln -s ../$(SHLIB) $(SHLIB) # Compilation rules -%.o:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< - -%.d:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(EXTRA_INC) $(DEPFLAGS) $< > $@ - -%.o:%.cu $(EXTRA_CPP_DEPENDS) +%.o:%.cpp $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< # Individual dependencies diff --git a/src/MAKE/MACHINES/Makefile.icex b/src/MAKE/MACHINES/Makefile.icex index ceeec48870..df3f7ffb2e 100644 --- a/src/MAKE/MACHINES/Makefile.icex +++ b/src/MAKE/MACHINES/Makefile.icex @@ -1,4 +1,4 @@ -# mpi = MPI with its default compiler +# icex = unknown 64-bit x86_64 machine SHELL = /bin/sh @@ -26,14 +26,14 @@ SHLIBFLAGS = -shared # if you change any -D setting, do full re-compile after "make clean" # LAMMPS ifdef settings -# see possible settings in Section 2.2 (step 4) of manual +# see possible settings in Section 3.5 of the manual LMP_INC = -DLAMMPS_GZIP #LMP_INC += -DLAMMPS_JPEG LMP_INC += -DLAMMPS_MEMALIGN=64 # MPI library -# see discussion in Section 2.2 (step 5) of manual +# see discussion in Section 3.4 of the manual # MPI wrapper compiler/linker can provide this info # can point to dummy MPI library in src/STUBS as in Makefile.serial # use -D MPICH and OMPI settings in INC to avoid C++ lib conflicts @@ -42,37 +42,37 @@ LMP_INC += -DLAMMPS_MEMALIGN=64 # LIB = name of MPI library MPI_INC = -DMPICH_SKIP_MPICXX -DOMPI_SKIP_MPICXX=1 -MPI_PATH = -MPI_LIB = +MPI_PATH = +MPI_LIB = # FFT library -# see discussion in Section 2.2 (step 6) of manual +# see discussion in Section 3.5.2 of manual # can be left blank to use provided KISS FFT library # INC = -DFFT setting, e.g. -DFFT_FFTW, FFT compiler settings # PATH = path for FFT library # LIB = name of FFT library -FFT_INC = -FFT_PATH = -FFT_LIB = +FFT_INC = +FFT_PATH = +FFT_LIB = # JPEG and/or PNG library -# see discussion in Section 2.2 (step 7) of manual +# see discussion in Section 3.5.4 of manual # only needed if -DLAMMPS_JPEG or -DLAMMPS_PNG listed with LMP_INC # INC = path(s) for jpeglib.h and/or png.h # PATH = path(s) for JPEG library and/or PNG library # LIB = name(s) of JPEG library and/or PNG library -JPG_INC = -JPG_PATH = -JPG_LIB = +JPG_INC = +JPG_PATH = +JPG_LIB = # --------------------------------------------------------------------- # build rules and dependencies # do not edit this section -include Makefile.package.settings -include Makefile.package +include Makefile.package.settings +include Makefile.package EXTRA_INC = $(LMP_INC) $(PKG_INC) $(MPI_INC) $(FFT_INC) $(JPG_INC) $(PKG_SYSINC) EXTRA_PATH = $(PKG_PATH) $(MPI_PATH) $(FFT_PATH) $(JPG_PATH) $(PKG_SYSPATH) @@ -87,18 +87,22 @@ vpath %.h .. # Link target -$(EXE): $(OBJ) $(EXTRA_LINK_DEPENDS) - $(LINK) $(LINKFLAGS) $(EXTRA_PATH) $(OBJ) $(EXTRA_LIB) $(LIB) -o $(EXE) - $(SIZE) $(EXE) +../$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) + $(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLINK) $(EXTRA_LIB) $(LIB) -o $@ + $(SIZE) $@ # Library targets -lib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(ARCHIVE) $(ARFLAGS) $(EXE) $(OBJ) +$(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) + @rm -f $(ARLIB) + @ln -s ../$(ARLIB) $(ARLIB) -shlib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o $(EXE) \ - $(OBJ) $(EXTRA_LIB) $(LIB) +$(SHLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o ../$(SHLIB) \ + $(OBJ) $(EXTRA_LIB) $(LIB) + @rm -f $(SHLIB) + @ln -s ../$(SHLIB) $(SHLIB) # Compilation rules diff --git a/src/MAKE/MACHINES/Makefile.jaguar b/src/MAKE/MACHINES/Makefile.jaguar index 7f2ce560df..ee83b87120 100644 --- a/src/MAKE/MACHINES/Makefile.jaguar +++ b/src/MAKE/MACHINES/Makefile.jaguar @@ -26,12 +26,12 @@ SHLIBFLAGS = -shared # if you change any -D setting, do full re-compile after "make clean" # LAMMPS ifdef settings -# see possible settings in Section 2.2 (step 4) of manual +# see possible settings in Section 3.5 of the manual LMP_INC = -DLAMMPS_GZIP -DNODE_PARTITION # MPI library -# see discussion in Section 2.2 (step 5) of manual +# see discussion in Section 3.4 of the manual # MPI wrapper compiler/linker can provide this info # can point to dummy MPI library in src/STUBS as in Makefile.serial # use -D MPICH and OMPI settings in INC to avoid C++ lib conflicts @@ -44,7 +44,7 @@ MPI_PATH = MPI_LIB = -lmpich -lpthread # FFT library -# see discussion in Section 2.2 (step 6) of manaul +# see discussion in Section 3.5.2 of manual # can be left blank to use provided KISS FFT library # INC = -DFFT setting, e.g. -DFFT_FFTW, FFT compiler settings # PATH = path for FFT library @@ -55,22 +55,22 @@ FFT_PATH = -L$(FFTW_DIR) FFT_LIB = -lfftw3 # JPEG and/or PNG library -# see discussion in Section 2.2 (step 7) of manual +# see discussion in Section 3.5.4 of manual # only needed if -DLAMMPS_JPEG or -DLAMMPS_PNG listed with LMP_INC # INC = path(s) for jpeglib.h and/or png.h # PATH = path(s) for JPEG library and/or PNG library # LIB = name(s) of JPEG library and/or PNG library -JPG_INC = -JPG_PATH = -JPG_LIB = +JPG_INC = +JPG_PATH = +JPG_LIB = # --------------------------------------------------------------------- # build rules and dependencies # do not edit this section -include Makefile.package.settings -include Makefile.package +include Makefile.package.settings +include Makefile.package EXTRA_INC = $(LMP_INC) $(PKG_INC) $(MPI_INC) $(FFT_INC) $(JPG_INC) $(PKG_SYSINC) EXTRA_PATH = $(PKG_PATH) $(MPI_PATH) $(FFT_PATH) $(JPG_PATH) $(PKG_SYSPATH) @@ -85,28 +85,26 @@ vpath %.h .. # Link target -$(EXE): $(OBJ) $(EXTRA_LINK_DEPENDS) - $(LINK) $(LINKFLAGS) $(EXTRA_PATH) $(OBJ) $(EXTRA_LIB) $(LIB) -o $(EXE) - $(SIZE) $(EXE) +../$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) + $(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLINK) $(EXTRA_LIB) $(LIB) -o $@ + $(SIZE) $@ # Library targets -lib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(ARCHIVE) $(ARFLAGS) $(EXE) $(OBJ) +$(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) + @rm -f $(ARLIB) + @ln -s ../$(ARLIB) $(ARLIB) -shlib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o $(EXE) \ - $(OBJ) $(EXTRA_LIB) $(LIB) +$(SHLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o ../$(SHLIB) \ + $(OBJ) $(EXTRA_LIB) $(LIB) + @rm -f $(SHLIB) + @ln -s ../$(SHLIB) $(SHLIB) # Compilation rules -%.o:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< - -%.d:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(EXTRA_INC) $(DEPFLAGS) $< > $@ - -%.o:%.cu $(EXTRA_CPP_DEPENDS) +%.o:%.cpp $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< # Individual dependencies diff --git a/src/MAKE/MACHINES/Makefile.lassen_kokkos b/src/MAKE/MACHINES/Makefile.lassen_kokkos index 7484f25a4b..db993fd9e3 100644 --- a/src/MAKE/MACHINES/Makefile.lassen_kokkos +++ b/src/MAKE/MACHINES/Makefile.lassen_kokkos @@ -31,12 +31,12 @@ KOKKOS_ARCH = Power9,Volta70 # if you change any -D setting, do full re-compile after "make clean" # LAMMPS ifdef settings -# see possible settings in Section 2.2 (step 4) of manual +# see possible settings in Section 3.5 of the manual LMP_INC = -DLAMMPS_GZIP # MPI library -# see discussion in Section 2.2 (step 5) of manual +# see discussion in Section 3.4 of the manual # MPI wrapper compiler/linker can provide this info # can point to dummy MPI library in src/STUBS as in Makefile.serial # use -D MPICH and OMPI settings in INC to avoid C++ lib conflicts @@ -52,7 +52,7 @@ MPI_PATH = MPI_LIB = -L${MY_MPI_PATH}../lib -lmpi_ibm # FFT library -# see discussion in Section 2.2 (step 6) of manaul +# see discussion in Section 3.5.2 of manual # can be left blank to use provided KISS FFT library # INC = -DFFT setting, e.g. -DFFT_FFTW, FFT compiler settings # PATH = path for FFT library @@ -63,22 +63,22 @@ FFT_PATH = FFT_LIB = -lcufft # JPEG and/or PNG library -# see discussion in Section 2.2 (step 7) of manual +# see discussion in Section 3.5.4 of manual # only needed if -DLAMMPS_JPEG or -DLAMMPS_PNG listed with LMP_INC # INC = path(s) for jpeglib.h and/or png.h # PATH = path(s) for JPEG library and/or PNG library # LIB = name(s) of JPEG library and/or PNG library -JPG_INC = -JPG_PATH = -JPG_LIB = +JPG_INC = +JPG_PATH = +JPG_LIB = # --------------------------------------------------------------------- # build rules and dependencies # do not edit this section -include Makefile.package.settings -include Makefile.package +include Makefile.package.settings +include Makefile.package EXTRA_INC = $(LMP_INC) $(PKG_INC) $(MPI_INC) $(FFT_INC) $(JPG_INC) $(PKG_SYSINC) EXTRA_PATH = $(PKG_PATH) $(MPI_PATH) $(FFT_PATH) $(JPG_PATH) $(PKG_SYSPATH) @@ -93,28 +93,26 @@ vpath %.h .. # Link target -$(EXE): $(OBJ) $(EXTRA_LINK_DEPENDS) - $(LINK) $(LINKFLAGS) $(EXTRA_PATH) $(OBJ) $(EXTRA_LIB) $(LIB) -o $(EXE) - $(SIZE) $(EXE) +../$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) + $(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLINK) $(EXTRA_LIB) $(LIB) -o $@ + $(SIZE) $@ # Library targets -lib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(ARCHIVE) $(ARFLAGS) $(EXE) $(OBJ) +$(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) + @rm -f $(ARLIB) + @ln -s ../$(ARLIB) $(ARLIB) -shlib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o $(EXE) \ - $(OBJ) $(EXTRA_LIB) $(LIB) +$(SHLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o ../$(SHLIB) \ + $(OBJ) $(EXTRA_LIB) $(LIB) + @rm -f $(SHLIB) + @ln -s ../$(SHLIB) $(SHLIB) # Compilation rules -%.o:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< - -%.d:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(EXTRA_INC) $(DEPFLAGS) $< > $@ - -%.o:%.cu $(EXTRA_CPP_DEPENDS) +%.o:%.cpp $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< # Individual dependencies diff --git a/src/MAKE/MACHINES/Makefile.mac b/src/MAKE/MACHINES/Makefile.mac index d38ec202db..b6b84efa88 100644 --- a/src/MAKE/MACHINES/Makefile.mac +++ b/src/MAKE/MACHINES/Makefile.mac @@ -1,4 +1,4 @@ -# mac = Apple PowerBook G4 laptop, c++, no MPI, FFTW 2.1.5 +# mac = Apple PowerBook G4 laptop, c++, no MPI SHELL = /bin/sh @@ -26,12 +26,12 @@ SHLIBFLAGS = -shared # if you change any -D setting, do full re-compile after "make clean" # LAMMPS ifdef settings -# see possible settings in Section 2.2 (step 4) of manual +# see possible settings in Section 3.5 of the manual LMP_INC = -DLAMMPS_GZIP # MPI library -# see discussion in Section 2.2 (step 5) of manual +# see discussion in Section 3.4 of the manual # MPI wrapper compiler/linker can provide this info # can point to dummy MPI library in src/STUBS as in Makefile.serial # use -D MPICH and OMPI settings in INC to avoid C++ lib conflicts @@ -44,33 +44,33 @@ MPI_PATH = -L../STUBS MPI_LIB = -lmpi_stubs # FFT library -# see discussion in Section 2.2 (step 6) of manaul +# see discussion in Section 3.5.2 of manual # can be left blank to use provided KISS FFT library # INC = -DFFT setting, e.g. -DFFT_FFTW, FFT compiler settings # PATH = path for FFT library # LIB = name of FFT library -FFT_INC = -DFFT_FFTW2 -FFT_PATH = -FFT_LIB = -lfftw +FFT_INC = +FFT_PATH = +FFT_LIB = # JPEG and/or PNG library -# see discussion in Section 2.2 (step 7) of manual +# see discussion in Section 3.5.4 of manual # only needed if -DLAMMPS_JPEG or -DLAMMPS_PNG listed with LMP_INC # INC = path(s) for jpeglib.h and/or png.h # PATH = path(s) for JPEG library and/or PNG library # LIB = name(s) of JPEG library and/or PNG library -JPG_INC = -JPG_PATH = -JPG_LIB = +JPG_INC = +JPG_PATH = +JPG_LIB = # --------------------------------------------------------------------- # build rules and dependencies # do not edit this section -include Makefile.package.settings -include Makefile.package +include Makefile.package.settings +include Makefile.package EXTRA_INC = $(LMP_INC) $(PKG_INC) $(MPI_INC) $(FFT_INC) $(JPG_INC) $(PKG_SYSINC) EXTRA_PATH = $(PKG_PATH) $(MPI_PATH) $(FFT_PATH) $(JPG_PATH) $(PKG_SYSPATH) @@ -85,28 +85,26 @@ vpath %.h .. # Link target -$(EXE): $(OBJ) $(EXTRA_LINK_DEPENDS) - $(LINK) $(LINKFLAGS) $(EXTRA_PATH) $(OBJ) $(EXTRA_LIB) $(LIB) -o $(EXE) - $(SIZE) $(EXE) +../$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) + $(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLINK) $(EXTRA_LIB) $(LIB) -o $@ + $(SIZE) $@ # Library targets -lib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(ARCHIVE) $(ARFLAGS) $(EXE) $(OBJ) +$(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) + @rm -f $(ARLIB) + @ln -s ../$(ARLIB) $(ARLIB) -shlib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o $(EXE) \ - $(OBJ) $(EXTRA_LIB) $(LIB) +$(SHLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o ../$(SHLIB) \ + $(OBJ) $(EXTRA_LIB) $(LIB) + @rm -f $(SHLIB) + @ln -s ../$(SHLIB) $(SHLIB) # Compilation rules -%.o:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< - -%.d:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(EXTRA_INC) $(DEPFLAGS) $< > $@ - -%.o:%.cu $(EXTRA_CPP_DEPENDS) +%.o:%.cpp $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< # Individual dependencies diff --git a/src/MAKE/MACHINES/Makefile.mac_mpi b/src/MAKE/MACHINES/Makefile.mac_mpi index 3437de017b..f43fd8d971 100644 --- a/src/MAKE/MACHINES/Makefile.mac_mpi +++ b/src/MAKE/MACHINES/Makefile.mac_mpi @@ -1,4 +1,4 @@ -# mac_mpi = Apple laptop, MacPorts Open MPI 1.4.3, gcc 4.8, fftw, jpeg +# mac_mpi = Apple laptop, MacPorts Open MPI 1.4.3, gcc 4.8, jpeg SHELL = /bin/sh @@ -27,12 +27,12 @@ SHLIBFLAGS = -shared # if you change any -D setting, do full re-compile after "make clean" # LAMMPS ifdef settings -# see possible settings in Section 2.2 (step 4) of manual +# see possible settings in Section 3.5 of the manual LMP_INC = -DLAMMPS_GZIP -DLAMMPS_JPEG # MPI library -# see discussion in Section 2.2 (step 5) of manual +# see discussion in Section 3.4 of the manual # MPI wrapper compiler/linker can provide this info # can point to dummy MPI library in src/STUBS as in Makefile.serial # use -D MPICH and OMPI settings in INC to avoid C++ lib conflicts @@ -51,14 +51,12 @@ MPI_LIB = # PATH = path for FFT library # LIB = name of FFT library -FFTW = /usr/local - -FFT_INC = -DFFT_FFTW2 -I${FFTW}/include -FFT_PATH = -L${FFTW}/lib -FFT_LIB = -lfftw +FFT_INC = +FFT_PATH = +FFT_LIB = # JPEG and/or PNG library -# see discussion in Section 2.2 (step 7) of manual +# see discussion in Section 3.5.4 of manual # only needed if -DLAMMPS_JPEG or -DLAMMPS_PNG listed with LMP_INC # INC = path(s) for jpeglib.h and/or png.h # PATH = path(s) for JPEG library and/or PNG library @@ -72,8 +70,8 @@ JPG_LIB = -ljpeg # build rules and dependencies # do not edit this section -include Makefile.package.settings -include Makefile.package +include Makefile.package.settings +include Makefile.package EXTRA_INC = $(LMP_INC) $(PKG_INC) $(MPI_INC) $(FFT_INC) $(JPG_INC) $(PKG_SYSINC) EXTRA_PATH = $(PKG_PATH) $(MPI_PATH) $(FFT_PATH) $(JPG_PATH) $(PKG_SYSPATH) @@ -88,28 +86,26 @@ vpath %.h .. # Link target -$(EXE): $(OBJ) $(EXTRA_LINK_DEPENDS) - $(LINK) $(LINKFLAGS) $(EXTRA_PATH) $(OBJ) $(EXTRA_LIB) $(LIB) -o $(EXE) - $(SIZE) $(EXE) +../$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) + $(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLINK) $(EXTRA_LIB) $(LIB) -o $@ + $(SIZE) $@ # Library targets -lib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(ARCHIVE) $(ARFLAGS) $(EXE) $(OBJ) +$(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) + @rm -f $(ARLIB) + @ln -s ../$(ARLIB) $(ARLIB) -shlib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o $(EXE) \ - $(OBJ) $(EXTRA_LIB) $(LIB) +$(SHLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o ../$(SHLIB) \ + $(OBJ) $(EXTRA_LIB) $(LIB) + @rm -f $(SHLIB) + @ln -s ../$(SHLIB) $(SHLIB) # Compilation rules -%.o:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< - -%.d:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(EXTRA_INC) $(DEPFLAGS) $< > $@ - -%.o:%.cu $(EXTRA_CPP_DEPENDS) +%.o:%.cpp $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< # Individual dependencies diff --git a/src/MAKE/MACHINES/Makefile.mingw32-cross b/src/MAKE/MACHINES/Makefile.mingw32-cross index 405c370574..6dce892aef 100644 --- a/src/MAKE/MACHINES/Makefile.mingw32-cross +++ b/src/MAKE/MACHINES/Makefile.mingw32-cross @@ -31,12 +31,12 @@ LIBOBJDIR = /Obj_mingw32 # if you change any -D setting, do full re-compile after "make clean" # LAMMPS ifdef settings -# see possible settings in Section 2.2 (step 4) of manual +# see possible settings in Section 3.5 of the manual LMP_INC = -DLAMMPS_SMALLSMALL -DLAMMPS_JPEG -DLAMMPS_PNG -DLAMMPS_XDR -DLAMMPS_GZIP -DLAMMPS_FFMPEG # MPI library -# see discussion in Section 2.2 (step 5) of manual +# see discussion in Section 3.4 of the manual # MPI wrapper compiler/linker can provide this info # can point to dummy MPI library in src/STUBS as in Makefile.serial # use -D MPICH and OMPI settings in INC to avoid C++ lib conflicts @@ -49,18 +49,18 @@ MPI_PATH = -L../STUBS MPI_LIB = -lmpi_mingw32 # FFT library -# see discussion in Section 2.2 (step 6) of manual +# see discussion in Section 3.5.2 of manual # can be left blank to use provided KISS FFT library # INC = -DFFT setting, e.g. -DFFT_FFTW, FFT compiler settings # PATH = path for FFT library # LIB = name of FFT library FFT_INC = -FFT_PATH = +FFT_PATH = FFT_LIB = # JPEG and/or PNG library -# see discussion in Section 2.2 (step 7) of manual +# see discussion in Section 3.5.4 of manual # only needed if -DLAMMPS_JPEG or -DLAMMPS_PNG listed with LMP_INC # INC = path(s) for jpeglib.h and/or png.h # PATH = path(s) for JPEG library and/or PNG library @@ -74,8 +74,8 @@ JPG_LIB = -ljpeg -lpng -lz # build rules and dependencies # do not edit this section -include Makefile.package.settings -include Makefile.package +include Makefile.package.settings +include Makefile.package EXTRA_INC = $(LMP_INC) $(PKG_INC) $(MPI_INC) $(FFT_INC) $(JPG_INC) $(PKG_SYSINC) EXTRA_PATH = $(PKG_PATH) $(MPI_PATH) $(FFT_PATH) $(JPG_PATH) $(PKG_SYSPATH) @@ -90,28 +90,26 @@ vpath %.h .. # Link target -$(EXE): $(OBJ) $(EXTRA_LINK_DEPENDS) - $(LINK) $(LINKFLAGS) $(EXTRA_PATH) $(OBJ) $(EXTRA_LIB) $(LIB) -o $(EXE) - $(SIZE) $(EXE) +../$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) + $(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLINK) $(EXTRA_LIB) $(LIB) -o $@ + $(SIZE) $@ # Library targets -lib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(ARCHIVE) $(ARFLAGS) $(EXE) $(OBJ) +$(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) + @rm -f $(ARLIB) + @ln -s ../$(ARLIB) $(ARLIB) -shlib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o $(EXE) \ - $(OBJ) $(EXTRA_LIB) $(LIB) +$(SHLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o ../$(SHLIB) \ + $(OBJ) $(EXTRA_LIB) $(LIB) + @rm -f $(SHLIB) + @ln -s ../$(SHLIB) $(SHLIB) # Compilation rules -%.o:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< - -%.d:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(EXTRA_INC) $(DEPFLAGS) $< > $@ - -%.o:%.cu $(EXTRA_CPP_DEPENDS) +%.o:%.cpp $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< # Individual dependencies diff --git a/src/MAKE/MACHINES/Makefile.mingw32-cross-mpi b/src/MAKE/MACHINES/Makefile.mingw32-cross-mpi index ab54c6e794..acba9b1811 100644 --- a/src/MAKE/MACHINES/Makefile.mingw32-cross-mpi +++ b/src/MAKE/MACHINES/Makefile.mingw32-cross-mpi @@ -31,12 +31,12 @@ LIBOBJDIR = /Obj_mingw32-mpi # if you change any -D setting, do full re-compile after "make clean" # LAMMPS ifdef settings -# see possible settings in Section 2.2 (step 4) of manual +# see possible settings in Section 3.5 of the manual LMP_INC = -DLAMMPS_SMALLSMALL -DLAMMPS_JPEG -DLAMMPS_PNG -DLAMMPS_XDR -DLAMMPS_GZIP -DLAMMPS_FFMPEG # MPI library -# see discussion in Section 2.2 (step 5) of manual +# see discussion in Section 3.4 of the manual # MPI wrapper compiler/linker can provide this info # can point to dummy MPI library in src/STUBS as in Makefile.serial # use -D MPICH and OMPI settings in INC to avoid C++ lib conflicts @@ -49,18 +49,18 @@ MPI_PATH = -L../../tools/mingw-cross/mpich2-win32/lib MPI_LIB = -lmpi # FFT library -# see discussion in Section 2.2 (step 6) of manual +# see discussion in Section 3.5.2 of manual # can be left blank to use provided KISS FFT library # INC = -DFFT setting, e.g. -DFFT_FFTW, FFT compiler settings # PATH = path for FFT library # LIB = name of FFT library FFT_INC = -FFT_PATH = +FFT_PATH = FFT_LIB = # JPEG and/or PNG library -# see discussion in Section 2.2 (step 7) of manual +# see discussion in Section 3.5.4 of manual # only needed if -DLAMMPS_JPEG or -DLAMMPS_PNG listed with LMP_INC # INC = path(s) for jpeglib.h and/or png.h # PATH = path(s) for JPEG library and/or PNG library @@ -74,8 +74,8 @@ JPG_LIB = -ljpeg -lpng -lz # build rules and dependencies # do not edit this section -include Makefile.package.settings -include Makefile.package +include Makefile.package.settings +include Makefile.package EXTRA_INC = $(LMP_INC) $(PKG_INC) $(MPI_INC) $(FFT_INC) $(JPG_INC) $(PKG_SYSINC) EXTRA_PATH = $(PKG_PATH) $(MPI_PATH) $(FFT_PATH) $(JPG_PATH) $(PKG_SYSPATH) @@ -90,28 +90,26 @@ vpath %.h .. # Link target -$(EXE): $(OBJ) $(EXTRA_LINK_DEPENDS) - $(LINK) $(LINKFLAGS) $(EXTRA_PATH) $(OBJ) $(EXTRA_LIB) $(LIB) -o $(EXE) - $(SIZE) $(EXE) +../$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) + $(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLINK) $(EXTRA_LIB) $(LIB) -o $@ + $(SIZE) $@ # Library targets -lib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(ARCHIVE) $(ARFLAGS) $(EXE) $(OBJ) +$(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) + @rm -f $(ARLIB) + @ln -s ../$(ARLIB) $(ARLIB) -shlib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o $(EXE) \ - $(OBJ) $(EXTRA_LIB) $(LIB) +$(SHLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o ../$(SHLIB) \ + $(OBJ) $(EXTRA_LIB) $(LIB) + @rm -f $(SHLIB) + @ln -s ../$(SHLIB) $(SHLIB) # Compilation rules -%.o:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< - -%.d:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(EXTRA_INC) $(DEPFLAGS) $< > $@ - -%.o:%.cu $(EXTRA_CPP_DEPENDS) +%.o:%.cpp $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< # Individual dependencies diff --git a/src/MAKE/MACHINES/Makefile.mingw64-cross b/src/MAKE/MACHINES/Makefile.mingw64-cross index 21403dc630..1e6c46c3a0 100644 --- a/src/MAKE/MACHINES/Makefile.mingw64-cross +++ b/src/MAKE/MACHINES/Makefile.mingw64-cross @@ -31,12 +31,12 @@ LIBOBJDIR = /Obj_mingw64 # if you change any -D setting, do full re-compile after "make clean" # LAMMPS ifdef settings -# see possible settings in Section 2.2 (step 4) of manual +# see possible settings in Section 3.5 of the manual LMP_INC = -DLAMMPS_SMALLBIG -DLAMMPS_JPEG -DLAMMPS_PNG -DLAMMPS_XDR -DLAMMPS_GZIP -DLAMMPS_FFMPEG # MPI library -# see discussion in Section 2.2 (step 5) of manual +# see discussion in Section 3.4 of the manual # MPI wrapper compiler/linker can provide this info # can point to dummy MPI library in src/STUBS as in Makefile.serial # use -D MPICH and OMPI settings in INC to avoid C++ lib conflicts @@ -49,7 +49,7 @@ MPI_PATH = -L../STUBS MPI_LIB = -lmpi_mingw64 # FFT library -# see discussion in Section 2.2 (step 6) of manual +# see discussion in Section 3.5.2 of manual # can be left blank to use provided KISS FFT library # INC = -DFFT setting, e.g. -DFFT_FFTW, FFT compiler settings # PATH = path for FFT library @@ -60,7 +60,7 @@ FFT_PATH = FFT_LIB = # JPEG and/or PNG library -# see discussion in Section 2.2 (step 7) of manual +# see discussion in Section 3.5.4 of manual # only needed if -DLAMMPS_JPEG or -DLAMMPS_PNG listed with LMP_INC # INC = path(s) for jpeglib.h and/or png.h # PATH = path(s) for JPEG library and/or PNG library @@ -74,8 +74,8 @@ JPG_LIB = -ljpeg -lpng -lz # build rules and dependencies # do not edit this section -include Makefile.package.settings -include Makefile.package +include Makefile.package.settings +include Makefile.package EXTRA_INC = $(LMP_INC) $(PKG_INC) $(MPI_INC) $(FFT_INC) $(JPG_INC) $(PKG_SYSINC) EXTRA_PATH = $(PKG_PATH) $(MPI_PATH) $(FFT_PATH) $(JPG_PATH) $(PKG_SYSPATH) @@ -90,28 +90,26 @@ vpath %.h .. # Link target -$(EXE): $(OBJ) $(EXTRA_LINK_DEPENDS) - $(LINK) $(LINKFLAGS) $(EXTRA_PATH) $(OBJ) $(EXTRA_LIB) $(LIB) -o $(EXE) - $(SIZE) $(EXE) +../$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) + $(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLINK) $(EXTRA_LIB) $(LIB) -o $@ + $(SIZE) $@ # Library targets -lib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(ARCHIVE) $(ARFLAGS) $(EXE) $(OBJ) +$(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) + @rm -f $(ARLIB) + @ln -s ../$(ARLIB) $(ARLIB) -shlib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o $(EXE) \ - $(OBJ) $(EXTRA_LIB) $(LIB) +$(SHLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o ../$(SHLIB) \ + $(OBJ) $(EXTRA_LIB) $(LIB) + @rm -f $(SHLIB) + @ln -s ../$(SHLIB) $(SHLIB) # Compilation rules -%.o:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< - -%.d:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(EXTRA_INC) $(DEPFLAGS) $< > $@ - -%.o:%.cu $(EXTRA_CPP_DEPENDS) +%.o:%.cpp $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< # Individual dependencies diff --git a/src/MAKE/MACHINES/Makefile.mingw64-cross-mpi b/src/MAKE/MACHINES/Makefile.mingw64-cross-mpi index 084b51680f..b01ee99969 100644 --- a/src/MAKE/MACHINES/Makefile.mingw64-cross-mpi +++ b/src/MAKE/MACHINES/Makefile.mingw64-cross-mpi @@ -31,12 +31,12 @@ LIBOBJDIR = /Obj_mingw64-mpi # if you change any -D setting, do full re-compile after "make clean" # LAMMPS ifdef settings -# see possible settings in Section 2.2 (step 4) of manual +# see possible settings in Section 3.5 of the manual LMP_INC = -DLAMMPS_SMALLBIG -DLAMMPS_JPEG -DLAMMPS_PNG -DLAMMPS_XDR -DLAMMPS_GZIP -DLAMMPS_FFMPEG # MPI library -# see discussion in Section 2.2 (step 5) of manual +# see discussion in Section 3.4 of the manual # MPI wrapper compiler/linker can provide this info # can point to dummy MPI library in src/STUBS as in Makefile.serial # use -D MPICH and OMPI settings in INC to avoid C++ lib conflicts @@ -49,18 +49,18 @@ MPI_PATH = -L../../tools/mingw-cross/mpich2-win64/lib MPI_LIB = -lmpi # FFT library -# see discussion in Section 2.2 (step 6) of manual +# see discussion in Section 3.5.2 of manual # can be left blank to use provided KISS FFT library # INC = -DFFT setting, e.g. -DFFT_FFTW, FFT compiler settings # PATH = path for FFT library # LIB = name of FFT library FFT_INC = -FFT_PATH = +FFT_PATH = FFT_LIB = # JPEG and/or PNG library -# see discussion in Section 2.2 (step 7) of manual +# see discussion in Section 3.5.4 of manual # only needed if -DLAMMPS_JPEG or -DLAMMPS_PNG listed with LMP_INC # INC = path(s) for jpeglib.h and/or png.h # PATH = path(s) for JPEG library and/or PNG library @@ -74,8 +74,8 @@ JPG_LIB = -ljpeg -lpng -lz # build rules and dependencies # do not edit this section -include Makefile.package.settings -include Makefile.package +include Makefile.package.settings +include Makefile.package EXTRA_INC = $(LMP_INC) $(PKG_INC) $(MPI_INC) $(FFT_INC) $(JPG_INC) $(PKG_SYSINC) EXTRA_PATH = $(PKG_PATH) $(MPI_PATH) $(FFT_PATH) $(JPG_PATH) $(PKG_SYSPATH) @@ -90,28 +90,26 @@ vpath %.h .. # Link target -$(EXE): $(OBJ) $(EXTRA_LINK_DEPENDS) - $(LINK) $(LINKFLAGS) $(EXTRA_PATH) $(OBJ) $(EXTRA_LIB) $(LIB) -o $(EXE) - $(SIZE) $(EXE) +../$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) + $(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLINK) $(EXTRA_LIB) $(LIB) -o $@ + $(SIZE) $@ # Library targets -lib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(ARCHIVE) $(ARFLAGS) $(EXE) $(OBJ) +$(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) + @rm -f $(ARLIB) + @ln -s ../$(ARLIB) $(ARLIB) -shlib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o $(EXE) \ - $(OBJ) $(EXTRA_LIB) $(LIB) +$(SHLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o ../$(SHLIB) \ + $(OBJ) $(EXTRA_LIB) $(LIB) + @rm -f $(SHLIB) + @ln -s ../$(SHLIB) $(SHLIB) # Compilation rules -%.o:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< - -%.d:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(EXTRA_INC) $(DEPFLAGS) $< > $@ - -%.o:%.cu $(EXTRA_CPP_DEPENDS) +%.o:%.cpp $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< # Individual dependencies diff --git a/src/MAKE/MACHINES/Makefile.myrinet b/src/MAKE/MACHINES/Makefile.myrinet index 7cf09f30c7..f9a034ebfd 100644 --- a/src/MAKE/MACHINES/Makefile.myrinet +++ b/src/MAKE/MACHINES/Makefile.myrinet @@ -11,7 +11,7 @@ CCFLAGS = -O SHFLAGS = -fPIC DEPFLAGS = -M -LINK = G++ +LINK = g++ LINKFLAGS = -O LIB = SIZE = size @@ -26,12 +26,12 @@ SHLIBFLAGS = -shared # if you change any -D setting, do full re-compile after "make clean" # LAMMPS ifdef settings -# see possible settings in Section 2.2 (step 4) of manual +# see possible settings in Section 3.5 of the manual LMP_INC = -DLAMMPS_GZIP # MPI library -# see discussion in Section 2.2 (step 5) of manual +# see discussion in Section 3.4 of the manual # MPI wrapper compiler/linker can provide this info # can point to dummy MPI library in src/STUBS as in Makefile.serial # use -D MPICH and OMPI settings in INC to avoid C++ lib conflicts @@ -44,7 +44,7 @@ MPI_PATH = -L/opt/mpich-mx/lib -L/opt/mx/lib MPI_LIB = -lmpich -lmyriexpress # FFT library -# see discussion in Section 2.2 (step 6) of manaul +# see discussion in Section 3.5.2 of manual # can be left blank to use provided KISS FFT library # INC = -DFFT setting, e.g. -DFFT_FFTW, FFT compiler settings # PATH = path for FFT library @@ -55,22 +55,22 @@ FFT_PATH = FFT_LIB = # JPEG and/or PNG library -# see discussion in Section 2.2 (step 7) of manual +# see discussion in Section 3.5.4 of manual # only needed if -DLAMMPS_JPEG or -DLAMMPS_PNG listed with LMP_INC # INC = path(s) for jpeglib.h and/or png.h # PATH = path(s) for JPEG library and/or PNG library # LIB = name(s) of JPEG library and/or PNG library -JPG_INC = -JPG_PATH = -JPG_LIB = +JPG_INC = +JPG_PATH = +JPG_LIB = # --------------------------------------------------------------------- # build rules and dependencies # do not edit this section -include Makefile.package.settings -include Makefile.package +include Makefile.package.settings +include Makefile.package EXTRA_INC = $(LMP_INC) $(PKG_INC) $(MPI_INC) $(FFT_INC) $(JPG_INC) $(PKG_SYSINC) EXTRA_PATH = $(PKG_PATH) $(MPI_PATH) $(FFT_PATH) $(JPG_PATH) $(PKG_SYSPATH) @@ -85,28 +85,26 @@ vpath %.h .. # Link target -$(EXE): $(OBJ) $(EXTRA_LINK_DEPENDS) - $(LINK) $(LINKFLAGS) $(EXTRA_PATH) $(OBJ) $(EXTRA_LIB) $(LIB) -o $(EXE) - $(SIZE) $(EXE) +../$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) + $(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLINK) $(EXTRA_LIB) $(LIB) -o $@ + $(SIZE) $@ # Library targets -lib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(ARCHIVE) $(ARFLAGS) $(EXE) $(OBJ) +$(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) + @rm -f $(ARLIB) + @ln -s ../$(ARLIB) $(ARLIB) -shlib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o $(EXE) \ - $(OBJ) $(EXTRA_LIB) $(LIB) +$(SHLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o ../$(SHLIB) \ + $(OBJ) $(EXTRA_LIB) $(LIB) + @rm -f $(SHLIB) + @ln -s ../$(SHLIB) $(SHLIB) # Compilation rules -%.o:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< - -%.d:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(EXTRA_INC) $(DEPFLAGS) $< > $@ - -%.o:%.cu $(EXTRA_CPP_DEPENDS) +%.o:%.cpp $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< # Individual dependencies diff --git a/src/MAKE/MACHINES/Makefile.power b/src/MAKE/MACHINES/Makefile.power index cbad7149df..bb4b4f545c 100644 --- a/src/MAKE/MACHINES/Makefile.power +++ b/src/MAKE/MACHINES/Makefile.power @@ -27,12 +27,12 @@ SHLIBFLAGS = -shared # if you change any -D setting, do full re-compile after "make clean" # LAMMPS ifdef settings -# see possible settings in Section 2.2 (step 4) of manual +# see possible settings in Section 3.5 of the manual LMP_INC = -DLAMMPS_GZIP # MPI library -# see discussion in Section 2.2 (step 5) of manual +# see discussion in Section 3.4 of the manual # MPI wrapper compiler/linker can provide this info # can point to dummy MPI library in src/STUBS as in Makefile.serial # use -D MPICH and OMPI settings in INC to avoid C++ lib conflicts @@ -45,7 +45,7 @@ MPI_PATH = MPI_LIB = # FFT library -# see discussion in Section 2.2 (step 6) of manaul +# see discussion in Section 3.5.2 of manual # can be left blank to use provided KISS FFT library # INC = -DFFT setting, e.g. -DFFT_FFTW, FFT compiler settings # PATH = path for FFT library @@ -56,22 +56,22 @@ FFT_PATH = -L/scr/oppe/LAMMPS/fftw-2.1.5/lib FFT_LIB = -lfftw # JPEG and/or PNG library -# see discussion in Section 2.2 (step 7) of manual +# see discussion in Section 3.5.4 of manual # only needed if -DLAMMPS_JPEG or -DLAMMPS_PNG listed with LMP_INC # INC = path(s) for jpeglib.h and/or png.h # PATH = path(s) for JPEG library and/or PNG library # LIB = name(s) of JPEG library and/or PNG library -JPG_INC = -JPG_PATH = -JPG_LIB = +JPG_INC = +JPG_PATH = +JPG_LIB = # --------------------------------------------------------------------- # build rules and dependencies # do not edit this section -include Makefile.package.settings -include Makefile.package +include Makefile.package.settings +include Makefile.package EXTRA_INC = $(LMP_INC) $(PKG_INC) $(MPI_INC) $(FFT_INC) $(JPG_INC) $(PKG_SYSINC) EXTRA_PATH = $(PKG_PATH) $(MPI_PATH) $(FFT_PATH) $(JPG_PATH) $(PKG_SYSPATH) @@ -86,28 +86,26 @@ vpath %.h .. # Link target -$(EXE): $(OBJ) $(EXTRA_LINK_DEPENDS) - $(LINK) $(LINKFLAGS) $(EXTRA_PATH) $(OBJ) $(EXTRA_LIB) $(LIB) -o $(EXE) - $(SIZE) $(EXE) +../$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) + $(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLINK) $(EXTRA_LIB) $(LIB) -o $@ + $(SIZE) $@ # Library targets -lib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(ARCHIVE) $(ARFLAGS) $(EXE) $(OBJ) +$(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) + @rm -f $(ARLIB) + @ln -s ../$(ARLIB) $(ARLIB) -shlib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o $(EXE) \ - $(OBJ) $(EXTRA_LIB) $(LIB) +$(SHLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o ../$(SHLIB) \ + $(OBJ) $(EXTRA_LIB) $(LIB) + @rm -f $(SHLIB) + @ln -s ../$(SHLIB) $(SHLIB) # Compilation rules -%.o:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< - -%.d:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(EXTRA_INC) $(DEPFLAGS) $< > $@ - -%.o:%.cu $(EXTRA_CPP_DEPENDS) +%.o:%.cpp $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< # Individual dependencies diff --git a/src/MAKE/MACHINES/Makefile.redsky b/src/MAKE/MACHINES/Makefile.redsky index 8e943bbb78..76e21d4f17 100644 --- a/src/MAKE/MACHINES/Makefile.redsky +++ b/src/MAKE/MACHINES/Makefile.redsky @@ -46,12 +46,12 @@ SHLIBFLAGS = -shared # if you change any -D setting, do full re-compile after "make clean" # LAMMPS ifdef settings -# see possible settings in Section 2.2 (step 4) of manual +# see possible settings in Section 3.5 of the manual LMP_INC = -DLAMMPS_GZIP # MPI library -# see discussion in Section 2.2 (step 5) of manual +# see discussion in Section 3.4 of the manual # MPI wrapper compiler/linker can provide this info # can point to dummy MPI library in src/STUBS as in Makefile.serial # use -D MPICH and OMPI settings in INC to avoid C++ lib conflicts @@ -64,33 +64,33 @@ MPI_PATH = MPI_LIB = # FFT library -# see discussion in Section 2.2 (step 6) of manaul +# see discussion in Section 3.5.2 of manual # can be left blank to use provided KISS FFT library # INC = -DFFT setting, e.g. -DFFT_FFTW, FFT compiler settings # PATH = path for FFT library # LIB = name of FFT library -#FFT_INC = -DFFT_FFTW2 -I${FFTW_INCLUDE} -#FFT_PATH = -L${FFTW_LIB} -#FFT_LIB = -lfftw +FFT_INC = +FFT_PATH = +FFT_LIB = # JPEG and/or PNG library -# see discussion in Section 2.2 (step 7) of manual +# see discussion in Section 3.5.4 of manual # only needed if -DLAMMPS_JPEG or -DLAMMPS_PNG listed with LMP_INC # INC = path(s) for jpeglib.h and/or png.h # PATH = path(s) for JPEG library and/or PNG library # LIB = name(s) of JPEG library and/or PNG library -JPG_INC = -JPG_PATH = -JPG_LIB = +JPG_INC = +JPG_PATH = +JPG_LIB = # --------------------------------------------------------------------- # build rules and dependencies # do not edit this section -include Makefile.package.settings -include Makefile.package +include Makefile.package.settings +include Makefile.package EXTRA_INC = $(LMP_INC) $(PKG_INC) $(MPI_INC) $(FFT_INC) $(JPG_INC) $(PKG_SYSINC) EXTRA_PATH = $(PKG_PATH) $(MPI_PATH) $(FFT_PATH) $(JPG_PATH) $(PKG_SYSPATH) @@ -105,28 +105,26 @@ vpath %.h .. # Link target -$(EXE): $(OBJ) $(EXTRA_LINK_DEPENDS) - $(LINK) $(LINKFLAGS) $(EXTRA_PATH) $(OBJ) $(EXTRA_LIB) $(LIB) -o $(EXE) - $(SIZE) $(EXE) +../$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) + $(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLINK) $(EXTRA_LIB) $(LIB) -o $@ + $(SIZE) $@ # Library targets -lib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(ARCHIVE) $(ARFLAGS) $(EXE) $(OBJ) +$(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) + @rm -f $(ARLIB) + @ln -s ../$(ARLIB) $(ARLIB) -shlib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o $(EXE) \ - $(OBJ) $(EXTRA_LIB) $(LIB) +$(SHLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o ../$(SHLIB) \ + $(OBJ) $(EXTRA_LIB) $(LIB) + @rm -f $(SHLIB) + @ln -s ../$(SHLIB) $(SHLIB) # Compilation rules -%.o:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< - -%.d:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(EXTRA_INC) $(DEPFLAGS) $< > $@ - -%.o:%.cu $(EXTRA_CPP_DEPENDS) +%.o:%.cpp $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< # Individual dependencies diff --git a/src/MAKE/MACHINES/Makefile.serial b/src/MAKE/MACHINES/Makefile.serial deleted file mode 100644 index 0c4515dcd1..0000000000 --- a/src/MAKE/MACHINES/Makefile.serial +++ /dev/null @@ -1,120 +0,0 @@ -# serial = RedHat Linux box, g++4, no MPI, no FFTs - -SHELL = /bin/sh - -# --------------------------------------------------------------------- -# compiler/linker settings -# specify flags and libraries needed for your compiler - -CC = g++ -CCFLAGS = -O -SHFLAGS = -fPIC -DEPFLAGS = -M - -LINK = g++ -LINKFLAGS = -O -LIB = -SIZE = size - -ARCHIVE = ar -ARFLAGS = -rc -SHLIBFLAGS = -shared - -# --------------------------------------------------------------------- -# LAMMPS-specific settings, all OPTIONAL -# specify settings for LAMMPS features you will use -# if you change any -D setting, do full re-compile after "make clean" - -# LAMMPS ifdef settings -# see possible settings in Section 2.2 (step 4) of manual - -LMP_INC = -DLAMMPS_GZIP - -# MPI library -# see discussion in Section 2.2 (step 5) of manual -# MPI wrapper compiler/linker can provide this info -# can point to dummy MPI library in src/STUBS as in Makefile.serial -# use -D MPICH and OMPI settings in INC to avoid C++ lib conflicts -# INC = path for mpi.h, MPI compiler settings -# PATH = path for MPI library -# LIB = name of MPI library - -MPI_INC = -I../STUBS -MPI_PATH = -L../STUBS -MPI_LIB = -lmpi_stubs - -# FFT library -# see discussion in Section 2.2 (step 6) of manaul -# can be left blank to use provided KISS FFT library -# INC = -DFFT setting, e.g. -DFFT_FFTW, FFT compiler settings -# PATH = path for FFT library -# LIB = name of FFT library - -FFT_INC = -FFT_PATH = -FFT_LIB = - -# JPEG and/or PNG library -# see discussion in Section 2.2 (step 7) of manual -# only needed if -DLAMMPS_JPEG or -DLAMMPS_PNG listed with LMP_INC -# INC = path(s) for jpeglib.h and/or png.h -# PATH = path(s) for JPEG library and/or PNG library -# LIB = name(s) of JPEG library and/or PNG library - -JPG_INC = -JPG_PATH = -JPG_LIB = - -# --------------------------------------------------------------------- -# build rules and dependencies -# do not edit this section - -include Makefile.package.settings -include Makefile.package - -EXTRA_INC = $(LMP_INC) $(PKG_INC) $(MPI_INC) $(FFT_INC) $(JPG_INC) $(PKG_SYSINC) -EXTRA_PATH = $(PKG_PATH) $(MPI_PATH) $(FFT_PATH) $(JPG_PATH) $(PKG_SYSPATH) -EXTRA_LIB = $(PKG_LIB) $(MPI_LIB) $(FFT_LIB) $(JPG_LIB) $(PKG_SYSLIB) -EXTRA_CPP_DEPENDS = $(PKG_CPP_DEPENDS) -EXTRA_LINK_DEPENDS = $(PKG_LINK_DEPENDS) - -# Path to src files - -vpath %.cpp .. -vpath %.h .. - -# Link target - -$(EXE): $(OBJ) $(EXTRA_LINK_DEPENDS) - $(LINK) $(LINKFLAGS) $(EXTRA_PATH) $(OBJ) $(EXTRA_LIB) $(LIB) -o $(EXE) - $(SIZE) $(EXE) - -# Library targets - -lib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(ARCHIVE) $(ARFLAGS) $(EXE) $(OBJ) - -shlib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o $(EXE) \ - $(OBJ) $(EXTRA_LIB) $(LIB) - -# Compilation rules - -%.o:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< - -%.d:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(EXTRA_INC) $(DEPFLAGS) $< > $@ - -%.o:%.cu $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< - -# Individual dependencies - -depend : fastdep.exe $(SRC) - @./fastdep.exe $(EXTRA_INC) -- $^ > .depend || exit 1 - -fastdep.exe: ../DEPEND/fastdep.c - cc -O -o $@ $< - -sinclude .depend diff --git a/src/MAKE/MACHINES/Makefile.stampede b/src/MAKE/MACHINES/Makefile.stampede index ecd0810d1d..8eb6e8d15a 100644 --- a/src/MAKE/MACHINES/Makefile.stampede +++ b/src/MAKE/MACHINES/Makefile.stampede @@ -27,12 +27,12 @@ SHLIBFLAGS = -shared # if you change any -D setting, do full re-compile after "make clean" # LAMMPS ifdef settings -# see possible settings in Section 2.2 (step 4) of manual +# see possible settings in Section 3.5 of the manual LMP_INC = -DLAMMPS_GZIP # MPI library -# see discussion in Section 2.2 (step 5) of manual +# see discussion in Section 3.4 of the manual # MPI wrapper compiler/linker can provide this info # can point to dummy MPI library in src/STUBS as in Makefile.serial # use -D MPICH and OMPI settings in INC to avoid C++ lib conflicts @@ -45,7 +45,7 @@ MPI_PATH = MPI_LIB = # FFT library -# see discussion in Section 2.2 (step 6) of manaul +# see discussion in Section 3.5.2 of manual # can be left blank to use provided KISS FFT library # INC = -DFFT setting, e.g. -DFFT_FFTW, FFT compiler settings # PATH = path for FFT library @@ -56,7 +56,7 @@ FFT_PATH = FFT_LIB = -L$(TACC_MKL_LIB) -lmkl_intel_ilp64 -lmkl_intel_thread -lmkl_core # JPEG and/or PNG library -# see discussion in Section 2.2 (step 7) of manual +# see discussion in Section 3.5.4 of manual # only needed if -DLAMMPS_JPEG or -DLAMMPS_PNG listed with LMP_INC # INC = path(s) for jpeglib.h and/or png.h # PATH = path(s) for JPEG library and/or PNG library @@ -70,12 +70,14 @@ JPG_LIB = -ljpeg # build rules and dependencies # do not edit this section -include Makefile.package.settings -include Makefile.package +include Makefile.package.settings +include Makefile.package EXTRA_INC = $(LMP_INC) $(PKG_INC) $(MPI_INC) $(FFT_INC) $(JPG_INC) $(PKG_SYSINC) EXTRA_PATH = $(PKG_PATH) $(MPI_PATH) $(FFT_PATH) $(JPG_PATH) $(PKG_SYSPATH) EXTRA_LIB = $(PKG_LIB) $(MPI_LIB) $(FFT_LIB) $(JPG_LIB) $(PKG_SYSLIB) +EXTRA_CPP_DEPENDS = $(PKG_CPP_DEPENDS) +EXTRA_LINK_DEPENDS = $(PKG_LINK_DEPENDS) # Path to src files @@ -84,30 +86,28 @@ vpath %.h .. # Link target -$(EXE): $(OBJ) - $(LINK) $(LINKFLAGS) $(EXTRA_PATH) $(OBJ) $(EXTRA_LIB) $(LIB) -o $(EXE) - $(SIZE) $(EXE) +../$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) + $(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLINK) $(EXTRA_LIB) $(LIB) -o $@ + $(SIZE) $@ # Library targets -lib: $(OBJ) - $(ARCHIVE) $(ARFLAGS) $(EXE) $(OBJ) +$(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) + @rm -f $(ARLIB) + @ln -s ../$(ARLIB) $(ARLIB) -shlib: $(OBJ) - $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o $(EXE) \ - $(OBJ) $(EXTRA_LIB) $(LIB) +$(SHLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o ../$(SHLIB) \ + $(OBJ) $(EXTRA_LIB) $(LIB) + @rm -f $(SHLIB) + @ln -s ../$(SHLIB) $(SHLIB) # Compilation rules %.o:%.cpp $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< -%.d:%.cpp - $(CC) $(CCFLAGS) $(EXTRA_INC) $(DEPFLAGS) $< > $@ - -%.o:%.cu - $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< - # Individual dependencies depend : fastdep.exe $(SRC) diff --git a/src/MAKE/MACHINES/Makefile.storm b/src/MAKE/MACHINES/Makefile.storm index e5e379e5ce..999c49e686 100644 --- a/src/MAKE/MACHINES/Makefile.storm +++ b/src/MAKE/MACHINES/Makefile.storm @@ -27,12 +27,12 @@ SHLIBFLAGS = -shared # if you change any -D setting, do full re-compile after "make clean" # LAMMPS ifdef settings -# see possible settings in Section 2.2 (step 4) of manual +# see possible settings in Section 3.5 of the manual LMP_INC = -DLAMMPS_GZIP # MPI library -# see discussion in Section 2.2 (step 5) of manual +# see discussion in Section 3.4 of the manual # MPI wrapper compiler/linker can provide this info # can point to dummy MPI library in src/STUBS as in Makefile.serial # use -D MPICH and OMPI settings in INC to avoid C++ lib conflicts @@ -45,33 +45,33 @@ MPI_PATH = MPI_LIB = # FFT library -# see discussion in Section 2.2 (step 6) of manaul +# see discussion in Section 3.5.2 of manual # can be left blank to use provided KISS FFT library # INC = -DFFT setting, e.g. -DFFT_FFTW, FFT compiler settings # PATH = path for FFT library # LIB = name of FFT library -FFT_INC = -DFFT_FFTW2 -I/projects/fftw/fftw-2.1.5/include -FFT_PATH = -FFT_LIB = -lfftw +FFT_INC = +FFT_PATH = +FFT_LIB = # JPEG and/or PNG library -# see discussion in Section 2.2 (step 7) of manual +# see discussion in Section 3.5.4 of manual # only needed if -DLAMMPS_JPEG or -DLAMMPS_PNG listed with LMP_INC # INC = path(s) for jpeglib.h and/or png.h # PATH = path(s) for JPEG library and/or PNG library # LIB = name(s) of JPEG library and/or PNG library -JPG_INC = -JPG_PATH = -JPG_LIB = +JPG_INC = +JPG_PATH = +JPG_LIB = # --------------------------------------------------------------------- # build rules and dependencies # do not edit this section -include Makefile.package.settings -include Makefile.package +include Makefile.package.settings +include Makefile.package EXTRA_INC = $(LMP_INC) $(PKG_INC) $(MPI_INC) $(FFT_INC) $(JPG_INC) $(PKG_SYSINC) EXTRA_PATH = $(PKG_PATH) $(MPI_PATH) $(FFT_PATH) $(JPG_PATH) $(PKG_SYSPATH) @@ -86,28 +86,26 @@ vpath %.h .. # Link target -$(EXE): $(OBJ) $(EXTRA_LINK_DEPENDS) - $(LINK) $(LINKFLAGS) $(EXTRA_PATH) $(OBJ) $(EXTRA_LIB) $(LIB) -o $(EXE) - $(SIZE) $(EXE) +../$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) + $(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLINK) $(EXTRA_LIB) $(LIB) -o $@ + $(SIZE) $@ # Library targets -lib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(ARCHIVE) $(ARFLAGS) $(EXE) $(OBJ) +$(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) + @rm -f $(ARLIB) + @ln -s ../$(ARLIB) $(ARLIB) -shlib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o $(EXE) \ - $(OBJ) $(EXTRA_LIB) $(LIB) +$(SHLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o ../$(SHLIB) \ + $(OBJ) $(EXTRA_LIB) $(LIB) + @rm -f $(SHLIB) + @ln -s ../$(SHLIB) $(SHLIB) # Compilation rules -%.o:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< - -%.d:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(EXTRA_INC) $(DEPFLAGS) $< > $@ - -%.o:%.cu $(EXTRA_CPP_DEPENDS) +%.o:%.cpp $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< # Individual dependencies diff --git a/src/MAKE/MACHINES/Makefile.tacc b/src/MAKE/MACHINES/Makefile.tacc index f684c19ecf..f5d8080f4c 100644 --- a/src/MAKE/MACHINES/Makefile.tacc +++ b/src/MAKE/MACHINES/Makefile.tacc @@ -26,12 +26,12 @@ SHLIBFLAGS = -shared # if you change any -D setting, do full re-compile after "make clean" # LAMMPS ifdef settings -# see possible settings in Section 2.2 (step 4) of manual +# see possible settings in Section 3.5 of the manual LMP_INC = -DLAMMPS_GZIP # MPI library -# see discussion in Section 2.2 (step 5) of manual +# see discussion in Section 3.4 of the manual # MPI wrapper compiler/linker can provide this info # can point to dummy MPI library in src/STUBS as in Makefile.serial # use -D MPICH and OMPI settings in INC to avoid C++ lib conflicts @@ -44,36 +44,33 @@ MPI_PATH = MPI_LIB = -lmpich -lpthread # FFT library -# see discussion in Section 2.2 (step 6) of manaul +# see discussion in Section 3.5.2 of manual # can be left blank to use provided KISS FFT library # INC = -DFFT setting, e.g. -DFFT_FFTW, FFT compiler settings # PATH = path for FFT library # LIB = name of FFT library -FFTW_INC = ${TACC_FFTW2_INC} -FFTW_LIB = ${TACC_FFTW2_LIB} - -FFT_INC = -DFFT_FFTW2 -I${FFTW_INC} -FFT_PATH = -L${FFTW_LIB} -FFT_LIB = ${FFTW_LIB}/libfftw.a +FFT_INC = +FFT_PATH = +FFT_LIB = # JPEG and/or PNG library -# see discussion in Section 2.2 (step 7) of manual +# see discussion in Section 3.5.4 of manual # only needed if -DLAMMPS_JPEG or -DLAMMPS_PNG listed with LMP_INC # INC = path(s) for jpeglib.h and/or png.h # PATH = path(s) for JPEG library and/or PNG library # LIB = name(s) of JPEG library and/or PNG library -JPG_INC = -JPG_PATH = -JPG_LIB = +JPG_INC = +JPG_PATH = +JPG_LIB = # --------------------------------------------------------------------- # build rules and dependencies # do not edit this section -include Makefile.package.settings -include Makefile.package +include Makefile.package.settings +include Makefile.package EXTRA_INC = $(LMP_INC) $(PKG_INC) $(MPI_INC) $(FFT_INC) $(JPG_INC) $(PKG_SYSINC) EXTRA_PATH = $(PKG_PATH) $(MPI_PATH) $(FFT_PATH) $(JPG_PATH) $(PKG_SYSPATH) @@ -88,28 +85,26 @@ vpath %.h .. # Link target -$(EXE): $(OBJ) $(EXTRA_LINK_DEPENDS) - $(LINK) $(LINKFLAGS) $(EXTRA_PATH) $(OBJ) $(EXTRA_LIB) $(LIB) -o $(EXE) - $(SIZE) $(EXE) +../$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) + $(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLINK) $(EXTRA_LIB) $(LIB) -o $@ + $(SIZE) $@ # Library targets -lib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(ARCHIVE) $(ARFLAGS) $(EXE) $(OBJ) +$(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) + @rm -f $(ARLIB) + @ln -s ../$(ARLIB) $(ARLIB) -shlib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o $(EXE) \ - $(OBJ) $(EXTRA_LIB) $(LIB) +$(SHLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o ../$(SHLIB) \ + $(OBJ) $(EXTRA_LIB) $(LIB) + @rm -f $(SHLIB) + @ln -s ../$(SHLIB) $(SHLIB) # Compilation rules -%.o:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< - -%.d:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(EXTRA_INC) $(DEPFLAGS) $< > $@ - -%.o:%.cu $(EXTRA_CPP_DEPENDS) +%.o:%.cpp $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< # Individual dependencies diff --git a/src/MAKE/MACHINES/Makefile.theta b/src/MAKE/MACHINES/Makefile.theta index 663f212020..084139899a 100644 --- a/src/MAKE/MACHINES/Makefile.theta +++ b/src/MAKE/MACHINES/Makefile.theta @@ -30,12 +30,12 @@ SHLIBFLAGS = -shared # if you change any -D setting, do full re-compile after "make clean" # LAMMPS ifdef settings -# see possible settings in Section 2.2 (step 4) of manual +# see possible settings in Section 3.5 of the manual LMP_INC = -DLAMMPS_GZIP #-DLAMMPS_JPEG # MPI library -# see discussion in Section 2.2 (step 5) of manual +# see discussion in Section 3.4 of the manual # MPI wrapper compiler/linker can provide this info # can point to dummy MPI library in src/STUBS as in Makefile.serial # use -D MPICH and OMPI settings in INC to avoid C++ lib conflicts @@ -48,7 +48,7 @@ MPI_PATH = MPI_LIB = # FFT library -# see discussion in Section 2.2 (step 6) of manaul +# see discussion in Section 3.5.2 of manual # can be left blank to use provided KISS FFT library # INC = -DFFT setting, e.g. -DFFT_FFTW, FFT compiler settings # PATH = path for FFT library @@ -60,7 +60,7 @@ FFT_LIB = -L$(MKLROOT)/lib/intel64/ -Wl,--start-group -lmkl_intel_ilp64 \ -lmkl_intel_thread -lmkl_core -Wl,--end-group # JPEG and/or PNG library -# see discussion in Section 2.2 (step 7) of manual +# see discussion in Section 3.5.4 of manual # only needed if -DLAMMPS_JPEG or -DLAMMPS_PNG listed with LMP_INC # INC = path(s) for jpeglib.h and/or png.h # PATH = path(s) for JPEG library and/or PNG library @@ -80,6 +80,8 @@ include Makefile.package EXTRA_INC = $(LMP_INC) $(PKG_INC) $(MPI_INC) $(FFT_INC) $(JPG_INC) $(PKG_SYSINC) EXTRA_PATH = $(PKG_PATH) $(MPI_PATH) $(FFT_PATH) $(JPG_PATH) $(PKG_SYSPATH) EXTRA_LIB = $(PKG_LIB) $(MPI_LIB) $(FFT_LIB) $(JPG_LIB) $(PKG_SYSLIB) +EXTRA_CPP_DEPENDS = $(PKG_CPP_DEPENDS) +EXTRA_LINK_DEPENDS = $(PKG_LINK_DEPENDS) # Path to src files @@ -88,30 +90,28 @@ vpath %.h .. # Link target -$(EXE): $(OBJ) - $(LINK) $(LINKFLAGS) $(EXTRA_PATH) $(OBJ) $(EXTRA_LIB) $(LIB) -o $(EXE) - $(SIZE) $(EXE) +../$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) + $(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLINK) $(EXTRA_LIB) $(LIB) -o $@ + $(SIZE) $@ # Library targets -lib: $(OBJ) - $(ARCHIVE) $(ARFLAGS) $(EXE) $(OBJ) +$(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) + @rm -f $(ARLIB) + @ln -s ../$(ARLIB) $(ARLIB) -shlib: $(OBJ) - $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o $(EXE) \ - $(OBJ) $(EXTRA_LIB) $(LIB) +$(SHLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o ../$(SHLIB) \ + $(OBJ) $(EXTRA_LIB) $(LIB) + @rm -f $(SHLIB) + @ln -s ../$(SHLIB) $(SHLIB) # Compilation rules %.o:%.cpp $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< -%.d:%.cpp - $(CC) $(CCFLAGS) $(EXTRA_INC) $(DEPFLAGS) $< > $@ - -%.o:%.cu - $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< - # Individual dependencies depend : fastdep.exe $(SRC) diff --git a/src/MAKE/MACHINES/Makefile.ubuntu b/src/MAKE/MACHINES/Makefile.ubuntu index f274780f8e..1821a1af7c 100644 --- a/src/MAKE/MACHINES/Makefile.ubuntu +++ b/src/MAKE/MACHINES/Makefile.ubuntu @@ -30,12 +30,12 @@ SHLIBFLAGS = -shared # if you change any -D setting, do full re-compile after "make clean" # LAMMPS ifdef settings -# see possible settings in Section 2.2 (step 4) of manual +# see possible settings in Section 3.5 of the manual LMP_INC = -DLAMMPS_GZIP -DLAMMPS_JPEG -DLAMMPS_PNG -DLAMMPS_FFMPEG # MPI library -# see discussion in Section 2.2 (step 5) of manual +# see discussion in Section 3.4 of the manual # MPI wrapper compiler/linker can provide this info # can point to dummy MPI library in src/STUBS as in Makefile.serial # use -D MPICH and OMPI settings in INC to avoid C++ lib conflicts @@ -48,7 +48,7 @@ MPI_PATH = MPI_LIB = # FFT library -# see discussion in Section 2.2 (step 6) of manaul +# see discussion in Section 3.5.2 of manual # can be left blank to use provided KISS FFT library # INC = -DFFT setting, e.g. -DFFT_FFTW, FFT compiler settings # PATH = path for FFT library @@ -59,7 +59,7 @@ FFT_PATH = FFT_LIB = -lfftw3 # JPEG and/or PNG library -# see discussion in Section 2.2 (step 7) of manual +# see discussion in Section 3.5.4 of manual # only needed if -DLAMMPS_JPEG or -DLAMMPS_PNG listed with LMP_INC # INC = path(s) for jpeglib.h and/or png.h # PATH = path(s) for JPEG library and/or PNG library @@ -73,8 +73,8 @@ JPG_LIB = -ljpeg -lpng # build rules and dependencies # do not edit this section -include Makefile.package.settings -include Makefile.package +include Makefile.package.settings +include Makefile.package EXTRA_INC = $(LMP_INC) $(PKG_INC) $(MPI_INC) $(FFT_INC) $(JPG_INC) $(PKG_SYSINC) EXTRA_PATH = $(PKG_PATH) $(MPI_PATH) $(FFT_PATH) $(JPG_PATH) $(PKG_SYSPATH) @@ -89,28 +89,26 @@ vpath %.h .. # Link target -$(EXE): $(OBJ) $(EXTRA_LINK_DEPENDS) - $(LINK) $(LINKFLAGS) $(EXTRA_PATH) $(OBJ) $(EXTRA_LIB) $(LIB) -o $(EXE) - $(SIZE) $(EXE) +../$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) + $(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLINK) $(EXTRA_LIB) $(LIB) -o $@ + $(SIZE) $@ # Library targets -lib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(ARCHIVE) $(ARFLAGS) $(EXE) $(OBJ) +$(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) + @rm -f $(ARLIB) + @ln -s ../$(ARLIB) $(ARLIB) -shlib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o $(EXE) \ - $(OBJ) $(EXTRA_LIB) $(LIB) +$(SHLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o ../$(SHLIB) \ + $(OBJ) $(EXTRA_LIB) $(LIB) + @rm -f $(SHLIB) + @ln -s ../$(SHLIB) $(SHLIB) # Compilation rules -%.o:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< - -%.d:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(EXTRA_INC) $(DEPFLAGS) $< > $@ - -%.o:%.cu $(EXTRA_CPP_DEPENDS) +%.o:%.cpp $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< # Individual dependencies diff --git a/src/MAKE/MACHINES/Makefile.ubuntu_simple b/src/MAKE/MACHINES/Makefile.ubuntu_simple index d4ac53a145..7dda5a95f4 100644 --- a/src/MAKE/MACHINES/Makefile.ubuntu_simple +++ b/src/MAKE/MACHINES/Makefile.ubuntu_simple @@ -29,12 +29,12 @@ SHLIBFLAGS = -shared # if you change any -D setting, do full re-compile after "make clean" # LAMMPS ifdef settings -# see possible settings in Section 2.2 (step 4) of manual +# see possible settings in Section 3.5 of the manual LMP_INC = -DLAMMPS_GZIP # MPI library -# see discussion in Section 2.2 (step 5) of manual +# see discussion in Section 3.4 of the manual # MPI wrapper compiler/linker can provide this info # can point to dummy MPI library in src/STUBS as in Makefile.serial # use -D MPICH and OMPI settings in INC to avoid C++ lib conflicts @@ -42,38 +42,38 @@ LMP_INC = -DLAMMPS_GZIP # PATH = path for MPI library # LIB = name of MPI library -MPI_INC = -MPI_PATH = +MPI_INC = -DMPICH_SKIP_MPICXX -DOMPI_SKIP_MPICXX=1 +MPI_PATH = MPI_LIB = # FFT library -# see discussion in Section 2.2 (step 6) of manaul +# see discussion in Section 3.5.2 of manual # can be left blank to use provided KISS FFT library # INC = -DFFT setting, e.g. -DFFT_FFTW, FFT compiler settings # PATH = path for FFT library # LIB = name of FFT library FFT_INC = -FFT_PATH = +FFT_PATH = FFT_LIB = # JPEG and/or PNG library -# see discussion in Section 2.2 (step 7) of manual +# see discussion in Section 3.5.4 of manual # only needed if -DLAMMPS_JPEG or -DLAMMPS_PNG listed with LMP_INC # INC = path(s) for jpeglib.h and/or png.h # PATH = path(s) for JPEG library and/or PNG library # LIB = name(s) of JPEG library and/or PNG library -JPG_INC = -JPG_PATH = +JPG_INC = +JPG_PATH = JPG_LIB = # --------------------------------------------------------------------- # build rules and dependencies # do not edit this section -include Makefile.package.settings -include Makefile.package +include Makefile.package.settings +include Makefile.package EXTRA_INC = $(LMP_INC) $(PKG_INC) $(MPI_INC) $(FFT_INC) $(JPG_INC) $(PKG_SYSINC) EXTRA_PATH = $(PKG_PATH) $(MPI_PATH) $(FFT_PATH) $(JPG_PATH) $(PKG_SYSPATH) @@ -88,28 +88,26 @@ vpath %.h .. # Link target -$(EXE): $(OBJ) $(EXTRA_LINK_DEPENDS) - $(LINK) $(LINKFLAGS) $(EXTRA_PATH) $(OBJ) $(EXTRA_LIB) $(LIB) -o $(EXE) - $(SIZE) $(EXE) +../$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) + $(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLINK) $(EXTRA_LIB) $(LIB) -o $@ + $(SIZE) $@ # Library targets -lib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(ARCHIVE) $(ARFLAGS) $(EXE) $(OBJ) +$(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) + @rm -f $(ARLIB) + @ln -s ../$(ARLIB) $(ARLIB) -shlib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o $(EXE) \ - $(OBJ) $(EXTRA_LIB) $(LIB) +$(SHLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o ../$(SHLIB) \ + $(OBJ) $(EXTRA_LIB) $(LIB) + @rm -f $(SHLIB) + @ln -s ../$(SHLIB) $(SHLIB) # Compilation rules -%.o:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< - -%.d:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(EXTRA_INC) $(DEPFLAGS) $< > $@ - -%.o:%.cu $(EXTRA_CPP_DEPENDS) +%.o:%.cpp $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< # Individual dependencies diff --git a/src/MAKE/MACHINES/Makefile.white b/src/MAKE/MACHINES/Makefile.white index 42daf850f3..6704f865a4 100644 --- a/src/MAKE/MACHINES/Makefile.white +++ b/src/MAKE/MACHINES/Makefile.white @@ -1,4 +1,4 @@ -# kokkos_cuda = KOKKOS/CUDA package, OpenMPI with nvcc compiler, Kepler GPU +# white = KOKKOS/CUDA package, OpenMPI with nvcc compiler, Pascal GPU, Power8 CPU SHELL = /bin/sh @@ -30,12 +30,12 @@ KOKKOS_ARCH = Pascal60,Power8 # if you change any -D setting, do full re-compile after "make clean" # LAMMPS ifdef settings -# see possible settings in Section 2.2 (step 4) of manual +# see possible settings in Section 3.5 of the manual LMP_INC = -DLAMMPS_GZIP # MPI library -# see discussion in Section 2.2 (step 5) of manual +# see discussion in Section 3.4 of the manual # MPI wrapper compiler/linker can provide this info # can point to dummy MPI library in src/STUBS as in Makefile.serial # use -D MPICH and OMPI settings in INC to avoid C++ lib conflicts @@ -48,33 +48,33 @@ MPI_PATH = MPI_LIB = # FFT library -# see discussion in Section 2.2 (step 6) of manaul +# see discussion in Section 3.5.2 of manual # can be left blank to use provided KISS FFT library # INC = -DFFT setting, e.g. -DFFT_FFTW, FFT compiler settings # PATH = path for FFT library # LIB = name of FFT library -FFT_INC = -FFT_PATH = -FFT_LIB = +FFT_INC = +FFT_PATH = +FFT_LIB = # JPEG and/or PNG library -# see discussion in Section 2.2 (step 7) of manual +# see discussion in Section 3.5.4 of manual # only needed if -DLAMMPS_JPEG or -DLAMMPS_PNG listed with LMP_INC # INC = path(s) for jpeglib.h and/or png.h # PATH = path(s) for JPEG library and/or PNG library # LIB = name(s) of JPEG library and/or PNG library -JPG_INC = -JPG_PATH = -JPG_LIB = +JPG_INC = +JPG_PATH = +JPG_LIB = # --------------------------------------------------------------------- # build rules and dependencies # do not edit this section -include Makefile.package.settings -include Makefile.package +include Makefile.package.settings +include Makefile.package EXTRA_INC = $(LMP_INC) $(PKG_INC) $(MPI_INC) $(FFT_INC) $(JPG_INC) $(PKG_SYSINC) EXTRA_PATH = $(PKG_PATH) $(MPI_PATH) $(FFT_PATH) $(JPG_PATH) $(PKG_SYSPATH) @@ -89,28 +89,26 @@ vpath %.h .. # Link target -$(EXE): $(OBJ) $(EXTRA_LINK_DEPENDS) - $(LINK) $(LINKFLAGS) $(EXTRA_PATH) $(OBJ) $(EXTRA_LIB) $(LIB) -o $(EXE) - $(SIZE) $(EXE) +../$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) + $(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLINK) $(EXTRA_LIB) $(LIB) -o $@ + $(SIZE) $@ # Library targets -lib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(ARCHIVE) $(ARFLAGS) $(EXE) $(OBJ) +$(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) + @rm -f $(ARLIB) + @ln -s ../$(ARLIB) $(ARLIB) -shlib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o $(EXE) \ - $(OBJ) $(EXTRA_LIB) $(LIB) +$(SHLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o ../$(SHLIB) \ + $(OBJ) $(EXTRA_LIB) $(LIB) + @rm -f $(SHLIB) + @ln -s ../$(SHLIB) $(SHLIB) # Compilation rules -%.o:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< - -%.d:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(EXTRA_INC) $(DEPFLAGS) $< > $@ - -%.o:%.cu $(EXTRA_CPP_DEPENDS) +%.o:%.cpp $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< # Individual dependencies diff --git a/src/MAKE/MACHINES/Makefile.xe6 b/src/MAKE/MACHINES/Makefile.xe6 index 6b8b9595bf..326fde4a8c 100644 --- a/src/MAKE/MACHINES/Makefile.xe6 +++ b/src/MAKE/MACHINES/Makefile.xe6 @@ -27,12 +27,12 @@ SHLIBFLAGS = -shared # if you change any -D setting, do full re-compile after "make clean" # LAMMPS ifdef settings -# see possible settings in Section 2.2 (step 4) of manual +# see possible settings in Section 3.5 of the manual LMP_INC = -DLAMMPS_GZIP # MPI library -# see discussion in Section 2.2 (step 5) of manual +# see discussion in Section 3.4 of the manual # MPI wrapper compiler/linker can provide this info # can point to dummy MPI library in src/STUBS as in Makefile.serial # use -D MPICH and OMPI settings in INC to avoid C++ lib conflicts @@ -45,33 +45,33 @@ MPI_PATH = MPI_LIB = # FFT library -# see discussion in Section 2.2 (step 6) of manaul +# see discussion in Section 3.5.2 of manual # can be left blank to use provided KISS FFT library # INC = -DFFT setting, e.g. -DFFT_FFTW, FFT compiler settings # PATH = path for FFT library # LIB = name of FFT library -FFT_INC = -DFFT_FFTW2 -FFT_PATH = -FFT_LIB = -lfftw +FFT_INC = +FFT_PATH = +FFT_LIB = # JPEG and/or PNG library -# see discussion in Section 2.2 (step 7) of manual +# see discussion in Section 3.5.4 of manual # only needed if -DLAMMPS_JPEG or -DLAMMPS_PNG listed with LMP_INC # INC = path(s) for jpeglib.h and/or png.h # PATH = path(s) for JPEG library and/or PNG library # LIB = name(s) of JPEG library and/or PNG library -JPG_INC = -JPG_PATH = -JPG_LIB = +JPG_INC = +JPG_PATH = +JPG_LIB = # --------------------------------------------------------------------- # build rules and dependencies # do not edit this section -include Makefile.package.settings -include Makefile.package +include Makefile.package.settings +include Makefile.package EXTRA_INC = $(LMP_INC) $(PKG_INC) $(MPI_INC) $(FFT_INC) $(JPG_INC) $(PKG_SYSINC) EXTRA_PATH = $(PKG_PATH) $(MPI_PATH) $(FFT_PATH) $(JPG_PATH) $(PKG_SYSPATH) @@ -86,28 +86,26 @@ vpath %.h .. # Link target -$(EXE): $(OBJ) $(EXTRA_LINK_DEPENDS) - $(LINK) $(LINKFLAGS) $(EXTRA_PATH) $(OBJ) $(EXTRA_LIB) $(LIB) -o $(EXE) - $(SIZE) $(EXE) +../$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) + $(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLINK) $(EXTRA_LIB) $(LIB) -o $@ + $(SIZE) $@ # Library targets -lib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(ARCHIVE) $(ARFLAGS) $(EXE) $(OBJ) +$(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) + @rm -f $(ARLIB) + @ln -s ../$(ARLIB) $(ARLIB) -shlib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o $(EXE) \ - $(OBJ) $(EXTRA_LIB) $(LIB) +$(SHLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o ../$(SHLIB) \ + $(OBJ) $(EXTRA_LIB) $(LIB) + @rm -f $(SHLIB) + @ln -s ../$(SHLIB) $(SHLIB) # Compilation rules -%.o:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< - -%.d:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(EXTRA_INC) $(DEPFLAGS) $< > $@ - -%.o:%.cu $(EXTRA_CPP_DEPENDS) +%.o:%.cpp $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< # Individual dependencies diff --git a/src/MAKE/MACHINES/Makefile.xt3 b/src/MAKE/MACHINES/Makefile.xt3 index 615bad3611..68ba20dcbe 100644 --- a/src/MAKE/MACHINES/Makefile.xt3 +++ b/src/MAKE/MACHINES/Makefile.xt3 @@ -28,12 +28,12 @@ SHLIBFLAGS = -shared # if you change any -D setting, do full re-compile after "make clean" # LAMMPS ifdef settings -# see possible settings in Section 2.2 (step 4) of manual +# see possible settings in Section 3.5 of the manual LMP_INC = -DLAMMPS_GZIP -DLAMMPS_XDR # MPI library -# see discussion in Section 2.2 (step 5) of manual +# see discussion in Section 3.4 of the manual # MPI wrapper compiler/linker can provide this info # can point to dummy MPI library in src/STUBS as in Makefile.serial # use -D MPICH and OMPI settings in INC to avoid C++ lib conflicts @@ -46,33 +46,33 @@ MPI_PATH = MPI_LIB = -lmpich -lpthread # FFT library -# see discussion in Section 2.2 (step 6) of manaul +# see discussion in Section 3.5.2 of manual # can be left blank to use provided KISS FFT library # INC = -DFFT setting, e.g. -DFFT_FFTW, FFT compiler settings # PATH = path for FFT library # LIB = name of FFT library -FFT_INC = -DFFT_FFTW2 -I$(FFTW_INC) -FFT_PATH = -L$(FFTW_LIB) -FFT_LIB = -ldfftw +FFT_INC = +FFT_PATH = +FFT_LIB = # JPEG and/or PNG library -# see discussion in Section 2.2 (step 7) of manual +# see discussion in Section 3.5.4 of manual # only needed if -DLAMMPS_JPEG or -DLAMMPS_PNG listed with LMP_INC # INC = path(s) for jpeglib.h and/or png.h # PATH = path(s) for JPEG library and/or PNG library # LIB = name(s) of JPEG library and/or PNG library -JPG_INC = -JPG_PATH = -JPG_LIB = +JPG_INC = +JPG_PATH = +JPG_LIB = # --------------------------------------------------------------------- # build rules and dependencies # do not edit this section -include Makefile.package.settings -include Makefile.package +include Makefile.package.settings +include Makefile.package EXTRA_INC = $(LMP_INC) $(PKG_INC) $(MPI_INC) $(FFT_INC) $(JPG_INC) $(PKG_SYSINC) EXTRA_PATH = $(PKG_PATH) $(MPI_PATH) $(FFT_PATH) $(JPG_PATH) $(PKG_SYSPATH) @@ -87,28 +87,26 @@ vpath %.h .. # Link target -$(EXE): $(OBJ) $(EXTRA_LINK_DEPENDS) - $(LINK) $(LINKFLAGS) $(EXTRA_PATH) $(OBJ) $(EXTRA_LIB) $(LIB) -o $(EXE) - $(SIZE) $(EXE) +../$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) + $(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLINK) $(EXTRA_LIB) $(LIB) -o $@ + $(SIZE) $@ # Library targets -lib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(ARCHIVE) $(ARFLAGS) $(EXE) $(OBJ) +$(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) + @rm -f $(ARLIB) + @ln -s ../$(ARLIB) $(ARLIB) -shlib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o $(EXE) \ - $(OBJ) $(EXTRA_LIB) $(LIB) +$(SHLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o ../$(SHLIB) \ + $(OBJ) $(EXTRA_LIB) $(LIB) + @rm -f $(SHLIB) + @ln -s ../$(SHLIB) $(SHLIB) # Compilation rules -%.o:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< - -%.d:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(EXTRA_INC) $(DEPFLAGS) $< > $@ - -%.o:%.cu $(EXTRA_CPP_DEPENDS) +%.o:%.cpp $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< # Individual dependencies diff --git a/src/MAKE/MACHINES/Makefile.xt5 b/src/MAKE/MACHINES/Makefile.xt5 index 2552a7060a..fba4991163 100644 --- a/src/MAKE/MACHINES/Makefile.xt5 +++ b/src/MAKE/MACHINES/Makefile.xt5 @@ -27,12 +27,12 @@ SHLIBFLAGS = -shared # if you change any -D setting, do full re-compile after "make clean" # LAMMPS ifdef settings -# see possible settings in Section 2.2 (step 4) of manual +# see possible settings in Section 3.5 of the manual LMP_INC = -DLAMMPS_GZIP # MPI library -# see discussion in Section 2.2 (step 5) of manual +# see discussion in Section 3.4 of the manual # MPI wrapper compiler/linker can provide this info # can point to dummy MPI library in src/STUBS as in Makefile.serial # use -D MPICH and OMPI settings in INC to avoid C++ lib conflicts @@ -45,33 +45,33 @@ MPI_PATH = MPI_LIB = # FFT library -# see discussion in Section 2.2 (step 6) of manaul +# see discussion in Section 3.5.2 of manual # can be left blank to use provided KISS FFT library # INC = -DFFT setting, e.g. -DFFT_FFTW, FFT compiler settings # PATH = path for FFT library # LIB = name of FFT library -FFT_INC = -DFFT_FFTW2 -I/home/sjplimp/fftw/fftw -FFT_PATH = -L/home/sjplimp/fftw/fftw/.libs -FFT_LIB = -lfftw +FFT_INC = +FFT_PATH = +FFT_LIB = # JPEG and/or PNG library -# see discussion in Section 2.2 (step 7) of manual +# see discussion in Section 3.5.4 of manual # only needed if -DLAMMPS_JPEG or -DLAMMPS_PNG listed with LMP_INC # INC = path(s) for jpeglib.h and/or png.h # PATH = path(s) for JPEG library and/or PNG library # LIB = name(s) of JPEG library and/or PNG library -JPG_INC = -JPG_PATH = -JPG_LIB = +JPG_INC = +JPG_PATH = +JPG_LIB = # --------------------------------------------------------------------- # build rules and dependencies # do not edit this section -include Makefile.package.settings -include Makefile.package +include Makefile.package.settings +include Makefile.package EXTRA_INC = $(LMP_INC) $(PKG_INC) $(MPI_INC) $(FFT_INC) $(JPG_INC) $(PKG_SYSINC) EXTRA_PATH = $(PKG_PATH) $(MPI_PATH) $(FFT_PATH) $(JPG_PATH) $(PKG_SYSPATH) @@ -86,28 +86,26 @@ vpath %.h .. # Link target -$(EXE): $(OBJ) $(EXTRA_LINK_DEPENDS) - $(LINK) $(LINKFLAGS) $(EXTRA_PATH) $(OBJ) $(EXTRA_LIB) $(LIB) -o $(EXE) - $(SIZE) $(EXE) +../$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) + $(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLINK) $(EXTRA_LIB) $(LIB) -o $@ + $(SIZE) $@ # Library targets -lib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(ARCHIVE) $(ARFLAGS) $(EXE) $(OBJ) +$(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) + @rm -f $(ARLIB) + @ln -s ../$(ARLIB) $(ARLIB) -shlib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o $(EXE) \ - $(OBJ) $(EXTRA_LIB) $(LIB) +$(SHLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o ../$(SHLIB) \ + $(OBJ) $(EXTRA_LIB) $(LIB) + @rm -f $(SHLIB) + @ln -s ../$(SHLIB) $(SHLIB) # Compilation rules -%.o:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< - -%.d:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(EXTRA_INC) $(DEPFLAGS) $< > $@ - -%.o:%.cu $(EXTRA_CPP_DEPENDS) +%.o:%.cpp $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< # Individual dependencies diff --git a/src/MAKE/MACHINES/Makefile.bgq.details b/src/MAKE/MACHINES/bgq.make.details similarity index 93% rename from src/MAKE/MACHINES/Makefile.bgq.details rename to src/MAKE/MACHINES/bgq.make.details index be20b43880..0febd69d26 100644 --- a/src/MAKE/MACHINES/Makefile.bgq.details +++ b/src/MAKE/MACHINES/bgq.make.details @@ -74,12 +74,12 @@ SHLIBFLAGS = # if you change any -D setting, do full re-compile after "make clean" # LAMMPS ifdef settings -# see possible settings in Section 2.2 (step 4) of manual +# see possible settings in Section 3.5 of the manual LMP_INC = -DLAMMPS_GZIP # MPI library -# see discussion in Section 2.2 (step 5) of manual +# see discussion in Section 3.4 of the manual # MPI wrapper compiler/linker can provide this info # can point to dummy MPI library in src/STUBS as in Makefile.serial # use -D MPICH and OMPI settings in INC to avoid C++ lib conflicts @@ -95,7 +95,7 @@ MPI_INC += -DMPICH_SKIP_MPICXX MPI_LIB += #/home/jhammond/OSPRI/branches/marpn/wrap/libmpiarbrpn.a # FFT library -# see discussion in Section 2.2 (step 6) of manaul +# see discussion in Section 3.5.2 of manual # can be left blank to use provided KISS FFT library # INC = -DFFT setting, e.g. -DFFT_FFTW, FFT compiler settings # PATH = path for FFT library @@ -106,15 +106,15 @@ FFT_PATH = #/soft/libraries/alcf/current/xl/FFTW2 FFT_LIB = -L/soft/libraries/alcf/current/xl/FFTW2/lib -ldfftw # JPEG and/or PNG library -# see discussion in Section 2.2 (step 7) of manual +# see discussion in Section 3.5.4 of manual # only needed if -DLAMMPS_JPEG or -DLAMMPS_PNG listed with LMP_INC # INC = path(s) for jpeglib.h and/or png.h # PATH = path(s) for JPEG library and/or PNG library # LIB = name(s) of JPEG library and/or PNG library -JPG_INC = -JPG_PATH = -JPG_LIB = +JPG_INC = +JPG_PATH = +JPG_LIB = depend : fastdep.exe $(SRC) @./fastdep.exe $(EXTRA_INC) -- $^ > .depend || exit 1 diff --git a/src/MAKE/Makefile.mpi b/src/MAKE/Makefile.mpi index fba9789724..c720ac49b5 100644 --- a/src/MAKE/Makefile.mpi +++ b/src/MAKE/Makefile.mpi @@ -44,7 +44,7 @@ MPI_PATH = MPI_LIB = # FFT library -# see discussion in Section 2.2 (step 6) of manual +# see discussion in Section 3.5.2 of manual # can be left blank to use provided KISS FFT library # INC = -DFFT setting, e.g. -DFFT_FFTW, FFT compiler settings # PATH = path for FFT library @@ -55,7 +55,7 @@ FFT_PATH = FFT_LIB = # JPEG and/or PNG library -# see discussion in Section 2.2 (step 7) of manual +# see discussion in Section 3.5.4 of manual # only needed if -DLAMMPS_JPEG or -DLAMMPS_PNG listed with LMP_INC # INC = path(s) for jpeglib.h and/or png.h # PATH = path(s) for JPEG library and/or PNG library diff --git a/src/MAKE/Makefile.serial b/src/MAKE/Makefile.serial index ee07041bf4..ef370264ed 100644 --- a/src/MAKE/Makefile.serial +++ b/src/MAKE/Makefile.serial @@ -44,7 +44,7 @@ MPI_PATH = -L../STUBS MPI_LIB = -lmpi_stubs # FFT library -# see discussion in Section 2.2 (step 6) of manual +# see discussion in Section 3.5.2 of manual # can be left blank to use provided KISS FFT library # INC = -DFFT setting, e.g. -DFFT_FFTW, FFT compiler settings # PATH = path for FFT library @@ -55,7 +55,7 @@ FFT_PATH = FFT_LIB = # JPEG and/or PNG library -# see discussion in Section 2.2 (step 7) of manual +# see discussion in Section 3.5.4 of manual # only needed if -DLAMMPS_JPEG or -DLAMMPS_PNG listed with LMP_INC # INC = path(s) for jpeglib.h and/or png.h # PATH = path(s) for JPEG library and/or PNG library @@ -69,8 +69,8 @@ JPG_LIB = # build rules and dependencies # do not edit this section -include Makefile.package.settings -include Makefile.package +include Makefile.package.settings +include Makefile.package EXTRA_INC = $(LMP_INC) $(PKG_INC) $(MPI_INC) $(FFT_INC) $(JPG_INC) $(PKG_SYSINC) EXTRA_PATH = $(PKG_PATH) $(MPI_PATH) $(FFT_PATH) $(JPG_PATH) $(PKG_SYSPATH) -- GitLab From fc3011c1b2abeff551818da830bbb1f491ca9567 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 9 Apr 2020 17:59:42 -0400 Subject: [PATCH 230/717] complete adapting makefiles and add a minor simplification tweak --- doc/src/Python_shlib.rst | 2 + .../Makefile.aarch64_arm_openmpi_armpl | 2 +- .../Makefile.aarch64_arm_serial_armpl | 2 +- .../Makefile.aarch64_g++_openmpi_armpl | 2 +- .../Makefile.aarch64_g++_serial_armpl | 2 +- src/MAKE/MACHINES/Makefile.astra_arm | 2 +- src/MAKE/MACHINES/Makefile.astra_gcc | 2 +- src/MAKE/MACHINES/Makefile.beacon | 2 +- src/MAKE/MACHINES/Makefile.bgl | 2 +- src/MAKE/MACHINES/Makefile.bgq | 2 +- src/MAKE/MACHINES/Makefile.chama | 2 +- src/MAKE/MACHINES/Makefile.cori2 | 2 +- src/MAKE/MACHINES/Makefile.cygwin | 2 +- src/MAKE/MACHINES/Makefile.glory | 2 +- src/MAKE/MACHINES/Makefile.icex | 2 +- src/MAKE/MACHINES/Makefile.jaguar | 2 +- src/MAKE/MACHINES/Makefile.lassen_kokkos | 2 +- src/MAKE/MACHINES/Makefile.mac | 2 +- src/MAKE/MACHINES/Makefile.mac_mpi | 2 +- src/MAKE/MACHINES/Makefile.mingw32-cross | 2 +- src/MAKE/MACHINES/Makefile.mingw32-cross-mpi | 2 +- src/MAKE/MACHINES/Makefile.mingw64-cross | 2 +- src/MAKE/MACHINES/Makefile.mingw64-cross-mpi | 2 +- src/MAKE/MACHINES/Makefile.myrinet | 2 +- src/MAKE/MACHINES/Makefile.power | 2 +- src/MAKE/MACHINES/Makefile.redsky | 2 +- src/MAKE/MACHINES/Makefile.stampede | 2 +- src/MAKE/MACHINES/Makefile.storm | 2 +- src/MAKE/MACHINES/Makefile.tacc | 2 +- src/MAKE/MACHINES/Makefile.theta | 2 +- src/MAKE/MACHINES/Makefile.ubuntu | 2 +- src/MAKE/MACHINES/Makefile.ubuntu_simple | 2 +- src/MAKE/MACHINES/Makefile.white | 2 +- src/MAKE/MACHINES/Makefile.xe6 | 2 +- src/MAKE/MACHINES/Makefile.xt3 | 2 +- src/MAKE/MACHINES/Makefile.xt5 | 2 +- src/MAKE/Makefile.mpi | 2 +- src/MAKE/Makefile.serial | 2 +- src/MAKE/OPTIONS/Makefile.big | 56 ++++++++------- src/MAKE/OPTIONS/Makefile.fftw | 50 +++++++------- src/MAKE/OPTIONS/Makefile.g++_mpich | 56 ++++++++------- src/MAKE/OPTIONS/Makefile.g++_mpich_link | 52 +++++++------- src/MAKE/OPTIONS/Makefile.g++_openmpi | 56 ++++++++------- src/MAKE/OPTIONS/Makefile.g++_openmpi_link | 52 +++++++------- src/MAKE/OPTIONS/Makefile.g++_serial | 52 +++++++------- src/MAKE/OPTIONS/Makefile.gpu | 56 ++++++++------- src/MAKE/OPTIONS/Makefile.icc_mpich | 56 ++++++++------- src/MAKE/OPTIONS/Makefile.icc_mpich_link | 52 +++++++------- src/MAKE/OPTIONS/Makefile.icc_openmpi | 56 ++++++++------- src/MAKE/OPTIONS/Makefile.icc_openmpi_link | 52 +++++++------- src/MAKE/OPTIONS/Makefile.icc_serial | 52 +++++++------- src/MAKE/OPTIONS/Makefile.intel_coprocessor | 44 ++++++------ src/MAKE/OPTIONS/Makefile.intel_cpu | 44 ++++++------ src/MAKE/OPTIONS/Makefile.intel_cpu_intelmpi | 46 ++++++------- src/MAKE/OPTIONS/Makefile.intel_cpu_mpich | 38 +++++----- src/MAKE/OPTIONS/Makefile.intel_cpu_openmpi | 46 ++++++------- src/MAKE/OPTIONS/Makefile.jpeg | 50 +++++++------- src/MAKE/OPTIONS/Makefile.knl | 42 +++++------ src/MAKE/OPTIONS/Makefile.kokkos_cuda_mpi | 48 +++++++------ src/MAKE/OPTIONS/Makefile.kokkos_mpi_only | 56 ++++++++------- src/MAKE/OPTIONS/Makefile.kokkos_omp | 56 ++++++++------- src/MAKE/OPTIONS/Makefile.kokkos_phi | 69 +++++++++---------- src/MAKE/OPTIONS/Makefile.mgptfast | 56 ++++++++------- src/MAKE/OPTIONS/Makefile.omp | 56 ++++++++------- src/MAKE/OPTIONS/Makefile.opt | 56 ++++++++------- src/MAKE/OPTIONS/Makefile.pgi_mpich_link | 52 +++++++------- src/MAKE/OPTIONS/Makefile.png | 44 ++++++------ src/Makefile | 4 +- 68 files changed, 762 insertions(+), 819 deletions(-) diff --git a/doc/src/Python_shlib.rst b/doc/src/Python_shlib.rst index 0c86362e12..87820f4771 100644 --- a/doc/src/Python_shlib.rst +++ b/doc/src/Python_shlib.rst @@ -1,6 +1,8 @@ Build LAMMPS as a shared library ================================ +.. TODO this is mostly redundant and should be addressed in the 'progguide' branch if it has not already + Build LAMMPS as a shared library using make ------------------------------------------- diff --git a/src/MAKE/MACHINES/Makefile.aarch64_arm_openmpi_armpl b/src/MAKE/MACHINES/Makefile.aarch64_arm_openmpi_armpl index cffdcf9b30..07dedba32a 100644 --- a/src/MAKE/MACHINES/Makefile.aarch64_arm_openmpi_armpl +++ b/src/MAKE/MACHINES/Makefile.aarch64_arm_openmpi_armpl @@ -86,7 +86,7 @@ vpath %.h .. # Link target -../$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) +$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) $(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLINK) $(EXTRA_LIB) $(LIB) -o $@ $(SIZE) $@ diff --git a/src/MAKE/MACHINES/Makefile.aarch64_arm_serial_armpl b/src/MAKE/MACHINES/Makefile.aarch64_arm_serial_armpl index eed872e565..d415f69397 100644 --- a/src/MAKE/MACHINES/Makefile.aarch64_arm_serial_armpl +++ b/src/MAKE/MACHINES/Makefile.aarch64_arm_serial_armpl @@ -85,7 +85,7 @@ vpath %.h .. # Link target -../$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) +$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) $(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLINK) $(EXTRA_LIB) $(LIB) -o $@ $(SIZE) $@ diff --git a/src/MAKE/MACHINES/Makefile.aarch64_g++_openmpi_armpl b/src/MAKE/MACHINES/Makefile.aarch64_g++_openmpi_armpl index b433755c1a..b75d9ee06a 100644 --- a/src/MAKE/MACHINES/Makefile.aarch64_g++_openmpi_armpl +++ b/src/MAKE/MACHINES/Makefile.aarch64_g++_openmpi_armpl @@ -86,7 +86,7 @@ vpath %.h .. # Link target -../$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) +$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) $(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLINK) $(EXTRA_LIB) $(LIB) -o $@ $(SIZE) $@ diff --git a/src/MAKE/MACHINES/Makefile.aarch64_g++_serial_armpl b/src/MAKE/MACHINES/Makefile.aarch64_g++_serial_armpl index 3b148ba3d2..73cd0d6bed 100644 --- a/src/MAKE/MACHINES/Makefile.aarch64_g++_serial_armpl +++ b/src/MAKE/MACHINES/Makefile.aarch64_g++_serial_armpl @@ -85,7 +85,7 @@ vpath %.h .. # Link target -../$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) +$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) $(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLINK) $(EXTRA_LIB) $(LIB) -o $@ $(SIZE) $@ diff --git a/src/MAKE/MACHINES/Makefile.astra_arm b/src/MAKE/MACHINES/Makefile.astra_arm index d66e786eac..3ea3e00935 100644 --- a/src/MAKE/MACHINES/Makefile.astra_arm +++ b/src/MAKE/MACHINES/Makefile.astra_arm @@ -84,7 +84,7 @@ vpath %.h .. # Link target -../$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) +$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) $(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLINK) $(EXTRA_LIB) $(LIB) -o $@ $(SIZE) $@ diff --git a/src/MAKE/MACHINES/Makefile.astra_gcc b/src/MAKE/MACHINES/Makefile.astra_gcc index f983eafaf5..d607fbec84 100644 --- a/src/MAKE/MACHINES/Makefile.astra_gcc +++ b/src/MAKE/MACHINES/Makefile.astra_gcc @@ -84,7 +84,7 @@ vpath %.h .. # Link target -../$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) +$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) $(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLINK) $(EXTRA_LIB) $(LIB) -o $@ $(SIZE) $@ diff --git a/src/MAKE/MACHINES/Makefile.beacon b/src/MAKE/MACHINES/Makefile.beacon index 6c1022b011..87ef35b248 100644 --- a/src/MAKE/MACHINES/Makefile.beacon +++ b/src/MAKE/MACHINES/Makefile.beacon @@ -86,7 +86,7 @@ vpath %.h .. # Link target -../$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) +$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) $(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLINK) $(EXTRA_LIB) $(LIB) -o $@ $(SIZE) $@ diff --git a/src/MAKE/MACHINES/Makefile.bgl b/src/MAKE/MACHINES/Makefile.bgl index 4932076cd6..06d243e83a 100644 --- a/src/MAKE/MACHINES/Makefile.bgl +++ b/src/MAKE/MACHINES/Makefile.bgl @@ -91,7 +91,7 @@ vpath %.h .. # Link target -../$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) +$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) $(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLINK) $(EXTRA_LIB) $(LIB) -o $@ $(SIZE) $@ diff --git a/src/MAKE/MACHINES/Makefile.bgq b/src/MAKE/MACHINES/Makefile.bgq index be2ea2dc47..3d8ea41f5f 100644 --- a/src/MAKE/MACHINES/Makefile.bgq +++ b/src/MAKE/MACHINES/Makefile.bgq @@ -26,7 +26,7 @@ vpath %.h .. # Link target -../$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) +$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) $(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLINK) $(EXTRA_LIB) $(LIB) -o $@ $(SIZE) $@ diff --git a/src/MAKE/MACHINES/Makefile.chama b/src/MAKE/MACHINES/Makefile.chama index 89bd178dee..a8a9cebfdb 100644 --- a/src/MAKE/MACHINES/Makefile.chama +++ b/src/MAKE/MACHINES/Makefile.chama @@ -85,7 +85,7 @@ vpath %.h .. # Link target -../$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) +$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) $(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLINK) $(EXTRA_LIB) $(LIB) -o $@ $(SIZE) $@ diff --git a/src/MAKE/MACHINES/Makefile.cori2 b/src/MAKE/MACHINES/Makefile.cori2 index 3c0f44e465..86d38d7726 100644 --- a/src/MAKE/MACHINES/Makefile.cori2 +++ b/src/MAKE/MACHINES/Makefile.cori2 @@ -93,7 +93,7 @@ vpath %.h .. # Link target -../$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) +$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) $(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLINK) $(EXTRA_LIB) $(LIB) -o $@ $(SIZE) $@ diff --git a/src/MAKE/MACHINES/Makefile.cygwin b/src/MAKE/MACHINES/Makefile.cygwin index 4cc9ace7bc..5cd6e79b69 100644 --- a/src/MAKE/MACHINES/Makefile.cygwin +++ b/src/MAKE/MACHINES/Makefile.cygwin @@ -85,7 +85,7 @@ vpath %.h .. # Link target -../$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) +$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) $(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLINK) $(EXTRA_LIB) $(LIB) -o $@ $(SIZE) $@ diff --git a/src/MAKE/MACHINES/Makefile.glory b/src/MAKE/MACHINES/Makefile.glory index 809d166432..a128f88515 100644 --- a/src/MAKE/MACHINES/Makefile.glory +++ b/src/MAKE/MACHINES/Makefile.glory @@ -102,7 +102,7 @@ vpath %.h .. # Link target -../$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) +$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) $(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLINK) $(EXTRA_LIB) $(LIB) -o $@ $(SIZE) $@ diff --git a/src/MAKE/MACHINES/Makefile.icex b/src/MAKE/MACHINES/Makefile.icex index df3f7ffb2e..6c3db3fb43 100644 --- a/src/MAKE/MACHINES/Makefile.icex +++ b/src/MAKE/MACHINES/Makefile.icex @@ -87,7 +87,7 @@ vpath %.h .. # Link target -../$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) +$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) $(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLINK) $(EXTRA_LIB) $(LIB) -o $@ $(SIZE) $@ diff --git a/src/MAKE/MACHINES/Makefile.jaguar b/src/MAKE/MACHINES/Makefile.jaguar index ee83b87120..4a78205c61 100644 --- a/src/MAKE/MACHINES/Makefile.jaguar +++ b/src/MAKE/MACHINES/Makefile.jaguar @@ -85,7 +85,7 @@ vpath %.h .. # Link target -../$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) +$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) $(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLINK) $(EXTRA_LIB) $(LIB) -o $@ $(SIZE) $@ diff --git a/src/MAKE/MACHINES/Makefile.lassen_kokkos b/src/MAKE/MACHINES/Makefile.lassen_kokkos index db993fd9e3..982d53933e 100644 --- a/src/MAKE/MACHINES/Makefile.lassen_kokkos +++ b/src/MAKE/MACHINES/Makefile.lassen_kokkos @@ -93,7 +93,7 @@ vpath %.h .. # Link target -../$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) +$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) $(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLINK) $(EXTRA_LIB) $(LIB) -o $@ $(SIZE) $@ diff --git a/src/MAKE/MACHINES/Makefile.mac b/src/MAKE/MACHINES/Makefile.mac index b6b84efa88..1bbd805c65 100644 --- a/src/MAKE/MACHINES/Makefile.mac +++ b/src/MAKE/MACHINES/Makefile.mac @@ -85,7 +85,7 @@ vpath %.h .. # Link target -../$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) +$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) $(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLINK) $(EXTRA_LIB) $(LIB) -o $@ $(SIZE) $@ diff --git a/src/MAKE/MACHINES/Makefile.mac_mpi b/src/MAKE/MACHINES/Makefile.mac_mpi index f43fd8d971..7c4fa6aa6d 100644 --- a/src/MAKE/MACHINES/Makefile.mac_mpi +++ b/src/MAKE/MACHINES/Makefile.mac_mpi @@ -86,7 +86,7 @@ vpath %.h .. # Link target -../$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) +$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) $(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLINK) $(EXTRA_LIB) $(LIB) -o $@ $(SIZE) $@ diff --git a/src/MAKE/MACHINES/Makefile.mingw32-cross b/src/MAKE/MACHINES/Makefile.mingw32-cross index 6dce892aef..c463d7df26 100644 --- a/src/MAKE/MACHINES/Makefile.mingw32-cross +++ b/src/MAKE/MACHINES/Makefile.mingw32-cross @@ -90,7 +90,7 @@ vpath %.h .. # Link target -../$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) +$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) $(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLINK) $(EXTRA_LIB) $(LIB) -o $@ $(SIZE) $@ diff --git a/src/MAKE/MACHINES/Makefile.mingw32-cross-mpi b/src/MAKE/MACHINES/Makefile.mingw32-cross-mpi index acba9b1811..7badd3bb79 100644 --- a/src/MAKE/MACHINES/Makefile.mingw32-cross-mpi +++ b/src/MAKE/MACHINES/Makefile.mingw32-cross-mpi @@ -90,7 +90,7 @@ vpath %.h .. # Link target -../$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) +$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) $(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLINK) $(EXTRA_LIB) $(LIB) -o $@ $(SIZE) $@ diff --git a/src/MAKE/MACHINES/Makefile.mingw64-cross b/src/MAKE/MACHINES/Makefile.mingw64-cross index 1e6c46c3a0..66de4dedaf 100644 --- a/src/MAKE/MACHINES/Makefile.mingw64-cross +++ b/src/MAKE/MACHINES/Makefile.mingw64-cross @@ -90,7 +90,7 @@ vpath %.h .. # Link target -../$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) +$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) $(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLINK) $(EXTRA_LIB) $(LIB) -o $@ $(SIZE) $@ diff --git a/src/MAKE/MACHINES/Makefile.mingw64-cross-mpi b/src/MAKE/MACHINES/Makefile.mingw64-cross-mpi index b01ee99969..40c52b6a73 100644 --- a/src/MAKE/MACHINES/Makefile.mingw64-cross-mpi +++ b/src/MAKE/MACHINES/Makefile.mingw64-cross-mpi @@ -90,7 +90,7 @@ vpath %.h .. # Link target -../$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) +$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) $(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLINK) $(EXTRA_LIB) $(LIB) -o $@ $(SIZE) $@ diff --git a/src/MAKE/MACHINES/Makefile.myrinet b/src/MAKE/MACHINES/Makefile.myrinet index f9a034ebfd..82030fbeae 100644 --- a/src/MAKE/MACHINES/Makefile.myrinet +++ b/src/MAKE/MACHINES/Makefile.myrinet @@ -85,7 +85,7 @@ vpath %.h .. # Link target -../$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) +$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) $(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLINK) $(EXTRA_LIB) $(LIB) -o $@ $(SIZE) $@ diff --git a/src/MAKE/MACHINES/Makefile.power b/src/MAKE/MACHINES/Makefile.power index bb4b4f545c..d4d0f67fa5 100644 --- a/src/MAKE/MACHINES/Makefile.power +++ b/src/MAKE/MACHINES/Makefile.power @@ -86,7 +86,7 @@ vpath %.h .. # Link target -../$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) +$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) $(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLINK) $(EXTRA_LIB) $(LIB) -o $@ $(SIZE) $@ diff --git a/src/MAKE/MACHINES/Makefile.redsky b/src/MAKE/MACHINES/Makefile.redsky index 76e21d4f17..461139e2e9 100644 --- a/src/MAKE/MACHINES/Makefile.redsky +++ b/src/MAKE/MACHINES/Makefile.redsky @@ -105,7 +105,7 @@ vpath %.h .. # Link target -../$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) +$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) $(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLINK) $(EXTRA_LIB) $(LIB) -o $@ $(SIZE) $@ diff --git a/src/MAKE/MACHINES/Makefile.stampede b/src/MAKE/MACHINES/Makefile.stampede index 8eb6e8d15a..5966907d44 100644 --- a/src/MAKE/MACHINES/Makefile.stampede +++ b/src/MAKE/MACHINES/Makefile.stampede @@ -86,7 +86,7 @@ vpath %.h .. # Link target -../$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) +$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) $(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLINK) $(EXTRA_LIB) $(LIB) -o $@ $(SIZE) $@ diff --git a/src/MAKE/MACHINES/Makefile.storm b/src/MAKE/MACHINES/Makefile.storm index 999c49e686..3178d840e9 100644 --- a/src/MAKE/MACHINES/Makefile.storm +++ b/src/MAKE/MACHINES/Makefile.storm @@ -86,7 +86,7 @@ vpath %.h .. # Link target -../$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) +$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) $(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLINK) $(EXTRA_LIB) $(LIB) -o $@ $(SIZE) $@ diff --git a/src/MAKE/MACHINES/Makefile.tacc b/src/MAKE/MACHINES/Makefile.tacc index f5d8080f4c..2cf263a8db 100644 --- a/src/MAKE/MACHINES/Makefile.tacc +++ b/src/MAKE/MACHINES/Makefile.tacc @@ -85,7 +85,7 @@ vpath %.h .. # Link target -../$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) +$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) $(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLINK) $(EXTRA_LIB) $(LIB) -o $@ $(SIZE) $@ diff --git a/src/MAKE/MACHINES/Makefile.theta b/src/MAKE/MACHINES/Makefile.theta index 084139899a..52f8260711 100644 --- a/src/MAKE/MACHINES/Makefile.theta +++ b/src/MAKE/MACHINES/Makefile.theta @@ -90,7 +90,7 @@ vpath %.h .. # Link target -../$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) +$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) $(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLINK) $(EXTRA_LIB) $(LIB) -o $@ $(SIZE) $@ diff --git a/src/MAKE/MACHINES/Makefile.ubuntu b/src/MAKE/MACHINES/Makefile.ubuntu index 1821a1af7c..2764f457a7 100644 --- a/src/MAKE/MACHINES/Makefile.ubuntu +++ b/src/MAKE/MACHINES/Makefile.ubuntu @@ -89,7 +89,7 @@ vpath %.h .. # Link target -../$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) +$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) $(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLINK) $(EXTRA_LIB) $(LIB) -o $@ $(SIZE) $@ diff --git a/src/MAKE/MACHINES/Makefile.ubuntu_simple b/src/MAKE/MACHINES/Makefile.ubuntu_simple index 7dda5a95f4..e162830ec5 100644 --- a/src/MAKE/MACHINES/Makefile.ubuntu_simple +++ b/src/MAKE/MACHINES/Makefile.ubuntu_simple @@ -88,7 +88,7 @@ vpath %.h .. # Link target -../$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) +$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) $(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLINK) $(EXTRA_LIB) $(LIB) -o $@ $(SIZE) $@ diff --git a/src/MAKE/MACHINES/Makefile.white b/src/MAKE/MACHINES/Makefile.white index 6704f865a4..b07e14a30e 100644 --- a/src/MAKE/MACHINES/Makefile.white +++ b/src/MAKE/MACHINES/Makefile.white @@ -89,7 +89,7 @@ vpath %.h .. # Link target -../$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) +$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) $(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLINK) $(EXTRA_LIB) $(LIB) -o $@ $(SIZE) $@ diff --git a/src/MAKE/MACHINES/Makefile.xe6 b/src/MAKE/MACHINES/Makefile.xe6 index 326fde4a8c..0971965bbf 100644 --- a/src/MAKE/MACHINES/Makefile.xe6 +++ b/src/MAKE/MACHINES/Makefile.xe6 @@ -86,7 +86,7 @@ vpath %.h .. # Link target -../$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) +$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) $(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLINK) $(EXTRA_LIB) $(LIB) -o $@ $(SIZE) $@ diff --git a/src/MAKE/MACHINES/Makefile.xt3 b/src/MAKE/MACHINES/Makefile.xt3 index 68ba20dcbe..5752e61692 100644 --- a/src/MAKE/MACHINES/Makefile.xt3 +++ b/src/MAKE/MACHINES/Makefile.xt3 @@ -87,7 +87,7 @@ vpath %.h .. # Link target -../$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) +$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) $(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLINK) $(EXTRA_LIB) $(LIB) -o $@ $(SIZE) $@ diff --git a/src/MAKE/MACHINES/Makefile.xt5 b/src/MAKE/MACHINES/Makefile.xt5 index fba4991163..9c4cbe6ee6 100644 --- a/src/MAKE/MACHINES/Makefile.xt5 +++ b/src/MAKE/MACHINES/Makefile.xt5 @@ -86,7 +86,7 @@ vpath %.h .. # Link target -../$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) +$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) $(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLINK) $(EXTRA_LIB) $(LIB) -o $@ $(SIZE) $@ diff --git a/src/MAKE/Makefile.mpi b/src/MAKE/Makefile.mpi index c720ac49b5..b79cfbb3fd 100644 --- a/src/MAKE/Makefile.mpi +++ b/src/MAKE/Makefile.mpi @@ -85,7 +85,7 @@ vpath %.h .. # Link target -../$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) +$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) $(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLINK) $(EXTRA_LIB) $(LIB) -o $@ $(SIZE) $@ diff --git a/src/MAKE/Makefile.serial b/src/MAKE/Makefile.serial index ef370264ed..01a160df33 100644 --- a/src/MAKE/Makefile.serial +++ b/src/MAKE/Makefile.serial @@ -85,7 +85,7 @@ vpath %.h .. # Link target -../$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) +$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) $(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLINK) $(EXTRA_LIB) $(LIB) -o $@ $(SIZE) $@ diff --git a/src/MAKE/OPTIONS/Makefile.big b/src/MAKE/OPTIONS/Makefile.big index 59de28cad7..56b0c48249 100644 --- a/src/MAKE/OPTIONS/Makefile.big +++ b/src/MAKE/OPTIONS/Makefile.big @@ -26,12 +26,12 @@ SHLIBFLAGS = -shared # if you change any -D setting, do full re-compile after "make clean" # LAMMPS ifdef settings -# see possible settings in Section 2.2 (step 4) of manual +# see possible settings in Section 3.5 of the manual LMP_INC = -DLAMMPS_GZIP -DLAMMPS_BIGBIG # MPI library -# see discussion in Section 2.2 (step 5) of manual +# see discussion in Section 3.4 of the manual # MPI wrapper compiler/linker can provide this info # can point to dummy MPI library in src/STUBS as in Makefile.serial # use -D MPICH and OMPI settings in INC to avoid C++ lib conflicts @@ -40,37 +40,37 @@ LMP_INC = -DLAMMPS_GZIP -DLAMMPS_BIGBIG # LIB = name of MPI library MPI_INC = -DMPICH_SKIP_MPICXX -DOMPI_SKIP_MPICXX=1 -MPI_PATH = -MPI_LIB = +MPI_PATH = +MPI_LIB = # FFT library -# see discussion in Section 2.2 (step 6) of manual +# see discussion in Section 3.5.2 of manual # can be left blank to use provided KISS FFT library # INC = -DFFT setting, e.g. -DFFT_FFTW, FFT compiler settings # PATH = path for FFT library # LIB = name of FFT library -FFT_INC = -FFT_PATH = -FFT_LIB = +FFT_INC = +FFT_PATH = +FFT_LIB = # JPEG and/or PNG library -# see discussion in Section 2.2 (step 7) of manual +# see discussion in Section 3.5.4 of manual # only needed if -DLAMMPS_JPEG or -DLAMMPS_PNG listed with LMP_INC # INC = path(s) for jpeglib.h and/or png.h # PATH = path(s) for JPEG library and/or PNG library # LIB = name(s) of JPEG library and/or PNG library -JPG_INC = -JPG_PATH = -JPG_LIB = +JPG_INC = +JPG_PATH = +JPG_LIB = # --------------------------------------------------------------------- # build rules and dependencies # do not edit this section -include Makefile.package.settings -include Makefile.package +include Makefile.package.settings +include Makefile.package EXTRA_INC = $(LMP_INC) $(PKG_INC) $(MPI_INC) $(FFT_INC) $(JPG_INC) $(PKG_SYSINC) EXTRA_PATH = $(PKG_PATH) $(MPI_PATH) $(FFT_PATH) $(JPG_PATH) $(PKG_SYSPATH) @@ -85,28 +85,26 @@ vpath %.h .. # Link target -$(EXE): $(OBJ) $(EXTRA_LINK_DEPENDS) - $(LINK) $(LINKFLAGS) $(EXTRA_PATH) $(OBJ) $(EXTRA_LIB) $(LIB) -o $(EXE) - $(SIZE) $(EXE) +$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) + $(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLINK) $(EXTRA_LIB) $(LIB) -o $@ + $(SIZE) $@ # Library targets -lib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(ARCHIVE) $(ARFLAGS) $(EXE) $(OBJ) +$(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) + @rm -f $(ARLIB) + @ln -s ../$(ARLIB) $(ARLIB) -shlib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o $(EXE) \ - $(OBJ) $(EXTRA_LIB) $(LIB) +$(SHLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o ../$(SHLIB) \ + $(OBJ) $(EXTRA_LIB) $(LIB) + @rm -f $(SHLIB) + @ln -s ../$(SHLIB) $(SHLIB) # Compilation rules -%.o:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< - -%.d:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(EXTRA_INC) $(DEPFLAGS) $< > $@ - -%.o:%.cu $(EXTRA_CPP_DEPENDS) +%.o:%.cpp $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< # Individual dependencies diff --git a/src/MAKE/OPTIONS/Makefile.fftw b/src/MAKE/OPTIONS/Makefile.fftw index 75c3a1b92c..1abb96f6dd 100644 --- a/src/MAKE/OPTIONS/Makefile.fftw +++ b/src/MAKE/OPTIONS/Makefile.fftw @@ -26,12 +26,12 @@ SHLIBFLAGS = -shared # if you change any -D setting, do full re-compile after "make clean" # LAMMPS ifdef settings -# see possible settings in Section 2.2 (step 4) of manual +# see possible settings in Section 3.5 of the manual LMP_INC = -DLAMMPS_GZIP # MPI library -# see discussion in Section 2.2 (step 5) of manual +# see discussion in Section 3.4 of the manual # MPI wrapper compiler/linker can provide this info # can point to dummy MPI library in src/STUBS as in Makefile.serial # use -D MPICH and OMPI settings in INC to avoid C++ lib conflicts @@ -40,11 +40,11 @@ LMP_INC = -DLAMMPS_GZIP # LIB = name of MPI library MPI_INC = -DMPICH_SKIP_MPICXX -DOMPI_SKIP_MPICXX=1 -MPI_PATH = -MPI_LIB = +MPI_PATH = +MPI_LIB = # FFT library -# see discussion in Section 2.2 (step 6) of manual +# see discussion in Section 3.5.2 of manual # can be left blank to use provided KISS FFT library # INC = -DFFT setting, e.g. -DFFT_FFTW, FFT compiler settings # PATH = path for FFT library @@ -55,22 +55,22 @@ FFT_PATH = -L/usr/local/lib FFT_LIB = -lfftw3 # JPEG and/or PNG library -# see discussion in Section 2.2 (step 7) of manual +# see discussion in Section 3.5.4 of manual # only needed if -DLAMMPS_JPEG or -DLAMMPS_PNG listed with LMP_INC # INC = path(s) for jpeglib.h and/or png.h # PATH = path(s) for JPEG library and/or PNG library # LIB = name(s) of JPEG library and/or PNG library -JPG_INC = -JPG_PATH = -JPG_LIB = +JPG_INC = +JPG_PATH = +JPG_LIB = # --------------------------------------------------------------------- # build rules and dependencies # do not edit this section -include Makefile.package.settings -include Makefile.package +include Makefile.package.settings +include Makefile.package EXTRA_INC = $(LMP_INC) $(PKG_INC) $(MPI_INC) $(FFT_INC) $(JPG_INC) $(PKG_SYSINC) EXTRA_PATH = $(PKG_PATH) $(MPI_PATH) $(FFT_PATH) $(JPG_PATH) $(PKG_SYSPATH) @@ -85,28 +85,26 @@ vpath %.h .. # Link target -$(EXE): $(OBJ) $(EXTRA_LINK_DEPENDS) - $(LINK) $(LINKFLAGS) $(EXTRA_PATH) $(OBJ) $(EXTRA_LIB) $(LIB) -o $(EXE) - $(SIZE) $(EXE) +$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) + $(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLINK) $(EXTRA_LIB) $(LIB) -o $@ + $(SIZE) $@ # Library targets -lib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(ARCHIVE) $(ARFLAGS) $(EXE) $(OBJ) +$(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) + @rm -f $(ARLIB) + @ln -s ../$(ARLIB) $(ARLIB) -shlib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o $(EXE) \ - $(OBJ) $(EXTRA_LIB) $(LIB) +$(SHLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o ../$(SHLIB) \ + $(OBJ) $(EXTRA_LIB) $(LIB) + @rm -f $(SHLIB) + @ln -s ../$(SHLIB) $(SHLIB) # Compilation rules -%.o:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< - -%.d:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(EXTRA_INC) $(DEPFLAGS) $< > $@ - -%.o:%.cu $(EXTRA_CPP_DEPENDS) +%.o:%.cpp $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< # Individual dependencies diff --git a/src/MAKE/OPTIONS/Makefile.g++_mpich b/src/MAKE/OPTIONS/Makefile.g++_mpich index 83b63b9def..fa30f64f0b 100644 --- a/src/MAKE/OPTIONS/Makefile.g++_mpich +++ b/src/MAKE/OPTIONS/Makefile.g++_mpich @@ -26,12 +26,12 @@ SHLIBFLAGS = -shared # if you change any -D setting, do full re-compile after "make clean" # LAMMPS ifdef settings -# see possible settings in Section 2.2 (step 4) of manual +# see possible settings in Section 3.5 of the manual LMP_INC = -DLAMMPS_GZIP # MPI library -# see discussion in Section 2.2 (step 5) of manual +# see discussion in Section 3.4 of the manual # MPI wrapper compiler/linker can provide this info # can point to dummy MPI library in src/STUBS as in Makefile.serial # use -D MPICH and OMPI settings in INC to avoid C++ lib conflicts @@ -40,37 +40,37 @@ LMP_INC = -DLAMMPS_GZIP # LIB = name of MPI library MPI_INC = -DMPICH_SKIP_MPICXX -DOMPI_SKIP_MPICXX=1 -MPI_PATH = -MPI_LIB = +MPI_PATH = +MPI_LIB = # FFT library -# see discussion in Section 2.2 (step 6) of manaul +# see discussion in Section 3.5.2 of manual # can be left blank to use provided KISS FFT library # INC = -DFFT setting, e.g. -DFFT_FFTW, FFT compiler settings # PATH = path for FFT library # LIB = name of FFT library -FFT_INC = -FFT_PATH = -FFT_LIB = +FFT_INC = +FFT_PATH = +FFT_LIB = # JPEG and/or PNG library -# see discussion in Section 2.2 (step 7) of manual +# see discussion in Section 3.5.4 of manual # only needed if -DLAMMPS_JPEG or -DLAMMPS_PNG listed with LMP_INC # INC = path(s) for jpeglib.h and/or png.h # PATH = path(s) for JPEG library and/or PNG library # LIB = name(s) of JPEG library and/or PNG library -JPG_INC = -JPG_PATH = -JPG_LIB = +JPG_INC = +JPG_PATH = +JPG_LIB = # --------------------------------------------------------------------- # build rules and dependencies # do not edit this section -include Makefile.package.settings -include Makefile.package +include Makefile.package.settings +include Makefile.package EXTRA_INC = $(LMP_INC) $(PKG_INC) $(MPI_INC) $(FFT_INC) $(JPG_INC) $(PKG_SYSINC) EXTRA_PATH = $(PKG_PATH) $(MPI_PATH) $(FFT_PATH) $(JPG_PATH) $(PKG_SYSPATH) @@ -85,28 +85,26 @@ vpath %.h .. # Link target -$(EXE): $(OBJ) $(EXTRA_LINK_DEPENDS) - $(LINK) $(LINKFLAGS) $(EXTRA_PATH) $(OBJ) $(EXTRA_LIB) $(LIB) -o $(EXE) - $(SIZE) $(EXE) +$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) + $(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLINK) $(EXTRA_LIB) $(LIB) -o $@ + $(SIZE) $@ # Library targets -lib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(ARCHIVE) $(ARFLAGS) $(EXE) $(OBJ) +$(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) + @rm -f $(ARLIB) + @ln -s ../$(ARLIB) $(ARLIB) -shlib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o $(EXE) \ - $(OBJ) $(EXTRA_LIB) $(LIB) +$(SHLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o ../$(SHLIB) \ + $(OBJ) $(EXTRA_LIB) $(LIB) + @rm -f $(SHLIB) + @ln -s ../$(SHLIB) $(SHLIB) # Compilation rules -%.o:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< - -%.d:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(EXTRA_INC) $(DEPFLAGS) $< > $@ - -%.o:%.cu $(EXTRA_CPP_DEPENDS) +%.o:%.cpp $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< # Individual dependencies diff --git a/src/MAKE/OPTIONS/Makefile.g++_mpich_link b/src/MAKE/OPTIONS/Makefile.g++_mpich_link index aadbf30853..42d66b2317 100644 --- a/src/MAKE/OPTIONS/Makefile.g++_mpich_link +++ b/src/MAKE/OPTIONS/Makefile.g++_mpich_link @@ -26,12 +26,12 @@ SHLIBFLAGS = -shared # if you change any -D setting, do full re-compile after "make clean" # LAMMPS ifdef settings -# see possible settings in Section 2.2 (step 4) of manual +# see possible settings in Section 3.5 of the manual LMP_INC = -DLAMMPS_GZIP # MPI library -# see discussion in Section 2.2 (step 5) of manual +# see discussion in Section 3.4 of the manual # MPI wrapper compiler/linker can provide this info # can point to dummy MPI library in src/STUBS as in Makefile.serial # use -D MPICH and OMPI settings in INC to avoid C++ lib conflicts @@ -44,33 +44,33 @@ MPI_PATH = -L/usr/local/lib MPI_LIB = -lmpich -lmpl -lpthread # FFT library -# see discussion in Section 2.2 (step 6) of manaul +# see discussion in Section 3.5.2 of manual # can be left blank to use provided KISS FFT library # INC = -DFFT setting, e.g. -DFFT_FFTW, FFT compiler settings # PATH = path for FFT library # LIB = name of FFT library -FFT_INC = -FFT_PATH = -FFT_LIB = +FFT_INC = +FFT_PATH = +FFT_LIB = # JPEG and/or PNG library -# see discussion in Section 2.2 (step 7) of manual +# see discussion in Section 3.5.4 of manual # only needed if -DLAMMPS_JPEG or -DLAMMPS_PNG listed with LMP_INC # INC = path(s) for jpeglib.h and/or png.h # PATH = path(s) for JPEG library and/or PNG library # LIB = name(s) of JPEG library and/or PNG library -JPG_INC = -JPG_PATH = -JPG_LIB = +JPG_INC = +JPG_PATH = +JPG_LIB = # --------------------------------------------------------------------- # build rules and dependencies # do not edit this section -include Makefile.package.settings -include Makefile.package +include Makefile.package.settings +include Makefile.package EXTRA_INC = $(LMP_INC) $(PKG_INC) $(MPI_INC) $(FFT_INC) $(JPG_INC) $(PKG_SYSINC) EXTRA_PATH = $(PKG_PATH) $(MPI_PATH) $(FFT_PATH) $(JPG_PATH) $(PKG_SYSPATH) @@ -85,28 +85,26 @@ vpath %.h .. # Link target -$(EXE): $(OBJ) $(EXTRA_LINK_DEPENDS) - $(LINK) $(LINKFLAGS) $(EXTRA_PATH) $(OBJ) $(EXTRA_LIB) $(LIB) -o $(EXE) - $(SIZE) $(EXE) +$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) + $(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLINK) $(EXTRA_LIB) $(LIB) -o $@ + $(SIZE) $@ # Library targets -lib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(ARCHIVE) $(ARFLAGS) $(EXE) $(OBJ) +$(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) + @rm -f $(ARLIB) + @ln -s ../$(ARLIB) $(ARLIB) -shlib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o $(EXE) \ - $(OBJ) $(EXTRA_LIB) $(LIB) +$(SHLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o ../$(SHLIB) \ + $(OBJ) $(EXTRA_LIB) $(LIB) + @rm -f $(SHLIB) + @ln -s ../$(SHLIB) $(SHLIB) # Compilation rules -%.o:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< - -%.d:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(EXTRA_INC) $(DEPFLAGS) $< > $@ - -%.o:%.cu $(EXTRA_CPP_DEPENDS) +%.o:%.cpp $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< # Individual dependencies diff --git a/src/MAKE/OPTIONS/Makefile.g++_openmpi b/src/MAKE/OPTIONS/Makefile.g++_openmpi index 835bb5d024..f52aa49ad7 100644 --- a/src/MAKE/OPTIONS/Makefile.g++_openmpi +++ b/src/MAKE/OPTIONS/Makefile.g++_openmpi @@ -27,12 +27,12 @@ SHLIBFLAGS = -shared # if you change any -D setting, do full re-compile after "make clean" # LAMMPS ifdef settings -# see possible settings in Section 2.2 (step 4) of manual +# see possible settings in Section 3.5 of the manual LMP_INC = -DLAMMPS_GZIP # MPI library -# see discussion in Section 2.2 (step 5) of manual +# see discussion in Section 3.4 of the manual # MPI wrapper compiler/linker can provide this info # can point to dummy MPI library in src/STUBS as in Makefile.serial # use -D MPICH and OMPI settings in INC to avoid C++ lib conflicts @@ -41,37 +41,37 @@ LMP_INC = -DLAMMPS_GZIP # LIB = name of MPI library MPI_INC = -DMPICH_SKIP_MPICXX -DOMPI_SKIP_MPICXX=1 -MPI_PATH = -MPI_LIB = +MPI_PATH = +MPI_LIB = # FFT library -# see discussion in Section 2.2 (step 6) of manaul +# see discussion in Section 3.5.2 of manual # can be left blank to use provided KISS FFT library # INC = -DFFT setting, e.g. -DFFT_FFTW, FFT compiler settings # PATH = path for FFT library # LIB = name of FFT library -FFT_INC = -FFT_PATH = -FFT_LIB = +FFT_INC = +FFT_PATH = +FFT_LIB = # JPEG and/or PNG library -# see discussion in Section 2.2 (step 7) of manual +# see discussion in Section 3.5.4 of manual # only needed if -DLAMMPS_JPEG or -DLAMMPS_PNG listed with LMP_INC # INC = path(s) for jpeglib.h and/or png.h # PATH = path(s) for JPEG library and/or PNG library # LIB = name(s) of JPEG library and/or PNG library -JPG_INC = -JPG_PATH = -JPG_LIB = +JPG_INC = +JPG_PATH = +JPG_LIB = # --------------------------------------------------------------------- # build rules and dependencies # do not edit this section -include Makefile.package.settings -include Makefile.package +include Makefile.package.settings +include Makefile.package EXTRA_INC = $(LMP_INC) $(PKG_INC) $(MPI_INC) $(FFT_INC) $(JPG_INC) $(PKG_SYSINC) EXTRA_PATH = $(PKG_PATH) $(MPI_PATH) $(FFT_PATH) $(JPG_PATH) $(PKG_SYSPATH) @@ -86,28 +86,26 @@ vpath %.h .. # Link target -$(EXE): $(OBJ) $(EXTRA_LINK_DEPENDS) - $(LINK) $(LINKFLAGS) $(EXTRA_PATH) $(OBJ) $(EXTRA_LIB) $(LIB) -o $(EXE) - $(SIZE) $(EXE) +$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) + $(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLINK) $(EXTRA_LIB) $(LIB) -o $@ + $(SIZE) $@ # Library targets -lib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(ARCHIVE) $(ARFLAGS) $(EXE) $(OBJ) +$(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) + @rm -f $(ARLIB) + @ln -s ../$(ARLIB) $(ARLIB) -shlib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o $(EXE) \ - $(OBJ) $(EXTRA_LIB) $(LIB) +$(SHLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o ../$(SHLIB) \ + $(OBJ) $(EXTRA_LIB) $(LIB) + @rm -f $(SHLIB) + @ln -s ../$(SHLIB) $(SHLIB) # Compilation rules -%.o:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< - -%.d:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(EXTRA_INC) $(DEPFLAGS) $< > $@ - -%.o:%.cu $(EXTRA_CPP_DEPENDS) +%.o:%.cpp $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< # Individual dependencies diff --git a/src/MAKE/OPTIONS/Makefile.g++_openmpi_link b/src/MAKE/OPTIONS/Makefile.g++_openmpi_link index f3f565430d..0aaa8bbede 100644 --- a/src/MAKE/OPTIONS/Makefile.g++_openmpi_link +++ b/src/MAKE/OPTIONS/Makefile.g++_openmpi_link @@ -26,12 +26,12 @@ SHLIBFLAGS = -shared # if you change any -D setting, do full re-compile after "make clean" # LAMMPS ifdef settings -# see possible settings in Section 2.2 (step 4) of manual +# see possible settings in Section 3.5 of the manual LMP_INC = -DLAMMPS_GZIP # MPI library -# see discussion in Section 2.2 (step 5) of manual +# see discussion in Section 3.4 of the manual # MPI wrapper compiler/linker can provide this info # can point to dummy MPI library in src/STUBS as in Makefile.serial # use -D MPICH and OMPI settings in INC to avoid C++ lib conflicts @@ -44,33 +44,33 @@ MPI_PATH = -L/usr/local/lib MPI_LIB = -lmpi -lmpi_cxx # FFT library -# see discussion in Section 2.2 (step 6) of manaul +# see discussion in Section 3.5.2 of manual # can be left blank to use provided KISS FFT library # INC = -DFFT setting, e.g. -DFFT_FFTW, FFT compiler settings # PATH = path for FFT library # LIB = name of FFT library -FFT_INC = -FFT_PATH = -FFT_LIB = +FFT_INC = +FFT_PATH = +FFT_LIB = # JPEG and/or PNG library -# see discussion in Section 2.2 (step 7) of manual +# see discussion in Section 3.5.4 of manual # only needed if -DLAMMPS_JPEG or -DLAMMPS_PNG listed with LMP_INC # INC = path(s) for jpeglib.h and/or png.h # PATH = path(s) for JPEG library and/or PNG library # LIB = name(s) of JPEG library and/or PNG library -JPG_INC = -JPG_PATH = -JPG_LIB = +JPG_INC = +JPG_PATH = +JPG_LIB = # --------------------------------------------------------------------- # build rules and dependencies # do not edit this section -include Makefile.package.settings -include Makefile.package +include Makefile.package.settings +include Makefile.package EXTRA_INC = $(LMP_INC) $(PKG_INC) $(MPI_INC) $(FFT_INC) $(JPG_INC) $(PKG_SYSINC) EXTRA_PATH = $(PKG_PATH) $(MPI_PATH) $(FFT_PATH) $(JPG_PATH) $(PKG_SYSPATH) @@ -85,28 +85,26 @@ vpath %.h .. # Link target -$(EXE): $(OBJ) $(EXTRA_LINK_DEPENDS) - $(LINK) $(LINKFLAGS) $(EXTRA_PATH) $(OBJ) $(EXTRA_LIB) $(LIB) -o $(EXE) - $(SIZE) $(EXE) +$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) + $(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLINK) $(EXTRA_LIB) $(LIB) -o $@ + $(SIZE) $@ # Library targets -lib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(ARCHIVE) $(ARFLAGS) $(EXE) $(OBJ) +$(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) + @rm -f $(ARLIB) + @ln -s ../$(ARLIB) $(ARLIB) -shlib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o $(EXE) \ - $(OBJ) $(EXTRA_LIB) $(LIB) +$(SHLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o ../$(SHLIB) \ + $(OBJ) $(EXTRA_LIB) $(LIB) + @rm -f $(SHLIB) + @ln -s ../$(SHLIB) $(SHLIB) # Compilation rules -%.o:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< - -%.d:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(EXTRA_INC) $(DEPFLAGS) $< > $@ - -%.o:%.cu $(EXTRA_CPP_DEPENDS) +%.o:%.cpp $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< # Individual dependencies diff --git a/src/MAKE/OPTIONS/Makefile.g++_serial b/src/MAKE/OPTIONS/Makefile.g++_serial index a01e4cae93..93e1c502d9 100644 --- a/src/MAKE/OPTIONS/Makefile.g++_serial +++ b/src/MAKE/OPTIONS/Makefile.g++_serial @@ -26,12 +26,12 @@ SHLIBFLAGS = -shared # if you change any -D setting, do full re-compile after "make clean" # LAMMPS ifdef settings -# see possible settings in Section 2.2 (step 4) of manual +# see possible settings in Section 3.5 of the manual LMP_INC = -DLAMMPS_GZIP # MPI library -# see discussion in Section 2.2 (step 5) of manual +# see discussion in Section 3.4 of the manual # MPI wrapper compiler/linker can provide this info # can point to dummy MPI library in src/STUBS as in Makefile.serial # use -D MPICH and OMPI settings in INC to avoid C++ lib conflicts @@ -44,33 +44,33 @@ MPI_PATH = -L../STUBS MPI_LIB = -lmpi_stubs # FFT library -# see discussion in Section 2.2 (step 6) of manaul +# see discussion in Section 3.5.2 of manual # can be left blank to use provided KISS FFT library # INC = -DFFT setting, e.g. -DFFT_FFTW, FFT compiler settings # PATH = path for FFT library # LIB = name of FFT library -FFT_INC = -FFT_PATH = -FFT_LIB = +FFT_INC = +FFT_PATH = +FFT_LIB = # JPEG and/or PNG library -# see discussion in Section 2.2 (step 7) of manual +# see discussion in Section 3.5.4 of manual # only needed if -DLAMMPS_JPEG or -DLAMMPS_PNG listed with LMP_INC # INC = path(s) for jpeglib.h and/or png.h # PATH = path(s) for JPEG library and/or PNG library # LIB = name(s) of JPEG library and/or PNG library -JPG_INC = -JPG_PATH = -JPG_LIB = +JPG_INC = +JPG_PATH = +JPG_LIB = # --------------------------------------------------------------------- # build rules and dependencies # do not edit this section -include Makefile.package.settings -include Makefile.package +include Makefile.package.settings +include Makefile.package EXTRA_INC = $(LMP_INC) $(PKG_INC) $(MPI_INC) $(FFT_INC) $(JPG_INC) $(PKG_SYSINC) EXTRA_PATH = $(PKG_PATH) $(MPI_PATH) $(FFT_PATH) $(JPG_PATH) $(PKG_SYSPATH) @@ -85,28 +85,26 @@ vpath %.h .. # Link target -$(EXE): $(OBJ) $(EXTRA_LINK_DEPENDS) - $(LINK) $(LINKFLAGS) $(EXTRA_PATH) $(OBJ) $(EXTRA_LIB) $(LIB) -o $(EXE) - $(SIZE) $(EXE) +$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) + $(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLINK) $(EXTRA_LIB) $(LIB) -o $@ + $(SIZE) $@ # Library targets -lib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(ARCHIVE) $(ARFLAGS) $(EXE) $(OBJ) +$(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) + @rm -f $(ARLIB) + @ln -s ../$(ARLIB) $(ARLIB) -shlib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o $(EXE) \ - $(OBJ) $(EXTRA_LIB) $(LIB) +$(SHLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o ../$(SHLIB) \ + $(OBJ) $(EXTRA_LIB) $(LIB) + @rm -f $(SHLIB) + @ln -s ../$(SHLIB) $(SHLIB) # Compilation rules -%.o:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< - -%.d:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(EXTRA_INC) $(DEPFLAGS) $< > $@ - -%.o:%.cu $(EXTRA_CPP_DEPENDS) +%.o:%.cpp $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< # Individual dependencies diff --git a/src/MAKE/OPTIONS/Makefile.gpu b/src/MAKE/OPTIONS/Makefile.gpu index e822161c55..7cec50fbd8 100644 --- a/src/MAKE/OPTIONS/Makefile.gpu +++ b/src/MAKE/OPTIONS/Makefile.gpu @@ -26,12 +26,12 @@ SHLIBFLAGS = -shared # if you change any -D setting, do full re-compile after "make clean" # LAMMPS ifdef settings -# see possible settings in Section 2.2 (step 4) of manual +# see possible settings in Section 3.5 of the manual LMP_INC = -DLAMMPS_GZIP # MPI library -# see discussion in Section 2.2 (step 5) of manual +# see discussion in Section 3.4 of the manual # MPI wrapper compiler/linker can provide this info # can point to dummy MPI library in src/STUBS as in Makefile.serial # use -D MPICH and OMPI settings in INC to avoid C++ lib conflicts @@ -40,37 +40,37 @@ LMP_INC = -DLAMMPS_GZIP # LIB = name of MPI library MPI_INC = -DMPICH_SKIP_MPICXX -DOMPI_SKIP_MPICXX=1 -MPI_PATH = -MPI_LIB = +MPI_PATH = +MPI_LIB = # FFT library -# see discussion in Section 2.2 (step 6) of manual +# see discussion in Section 3.5.2 of manual # can be left blank to use provided KISS FFT library # INC = -DFFT setting, e.g. -DFFT_FFTW, FFT compiler settings # PATH = path for FFT library # LIB = name of FFT library -FFT_INC = -FFT_PATH = -FFT_LIB = +FFT_INC = +FFT_PATH = +FFT_LIB = # JPEG and/or PNG library -# see discussion in Section 2.2 (step 7) of manual +# see discussion in Section 3.5.4 of manual # only needed if -DLAMMPS_JPEG or -DLAMMPS_PNG listed with LMP_INC # INC = path(s) for jpeglib.h and/or png.h # PATH = path(s) for JPEG library and/or PNG library # LIB = name(s) of JPEG library and/or PNG library -JPG_INC = -JPG_PATH = -JPG_LIB = +JPG_INC = +JPG_PATH = +JPG_LIB = # --------------------------------------------------------------------- # build rules and dependencies # do not edit this section -include Makefile.package.settings -include Makefile.package +include Makefile.package.settings +include Makefile.package EXTRA_INC = $(LMP_INC) $(PKG_INC) $(MPI_INC) $(FFT_INC) $(JPG_INC) $(PKG_SYSINC) EXTRA_PATH = $(PKG_PATH) $(MPI_PATH) $(FFT_PATH) $(JPG_PATH) $(PKG_SYSPATH) @@ -85,28 +85,26 @@ vpath %.h .. # Link target -$(EXE): $(OBJ) $(EXTRA_LINK_DEPENDS) - $(LINK) $(LINKFLAGS) $(EXTRA_PATH) $(OBJ) $(EXTRA_LIB) $(LIB) -o $(EXE) - $(SIZE) $(EXE) +$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) + $(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLINK) $(EXTRA_LIB) $(LIB) -o $@ + $(SIZE) $@ # Library targets -lib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(ARCHIVE) $(ARFLAGS) $(EXE) $(OBJ) +$(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) + @rm -f $(ARLIB) + @ln -s ../$(ARLIB) $(ARLIB) -shlib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o $(EXE) \ - $(OBJ) $(EXTRA_LIB) $(LIB) +$(SHLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o ../$(SHLIB) \ + $(OBJ) $(EXTRA_LIB) $(LIB) + @rm -f $(SHLIB) + @ln -s ../$(SHLIB) $(SHLIB) # Compilation rules -%.o:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< - -%.d:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(EXTRA_INC) $(DEPFLAGS) $< > $@ - -%.o:%.cu $(EXTRA_CPP_DEPENDS) +%.o:%.cpp $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< # Individual dependencies diff --git a/src/MAKE/OPTIONS/Makefile.icc_mpich b/src/MAKE/OPTIONS/Makefile.icc_mpich index e59066562a..81256f85b6 100644 --- a/src/MAKE/OPTIONS/Makefile.icc_mpich +++ b/src/MAKE/OPTIONS/Makefile.icc_mpich @@ -26,12 +26,12 @@ SHLIBFLAGS = -shared # if you change any -D setting, do full re-compile after "make clean" # LAMMPS ifdef settings -# see possible settings in Section 2.2 (step 4) of manual +# see possible settings in Section 3.5 of the manual LMP_INC = -DLAMMPS_GZIP # MPI library -# see discussion in Section 2.2 (step 5) of manual +# see discussion in Section 3.4 of the manual # MPI wrapper compiler/linker can provide this info # can point to dummy MPI library in src/STUBS as in Makefile.serial # use -D MPICH and OMPI settings in INC to avoid C++ lib conflicts @@ -40,37 +40,37 @@ LMP_INC = -DLAMMPS_GZIP # LIB = name of MPI library MPI_INC = -DMPICH_SKIP_MPICXX -DOMPI_SKIP_MPICXX=1 -MPI_PATH = -MPI_LIB = +MPI_PATH = +MPI_LIB = # FFT library -# see discussion in Section 2.2 (step 6) of manaul +# see discussion in Section 3.5.2 of manual # can be left blank to use provided KISS FFT library # INC = -DFFT setting, e.g. -DFFT_FFTW, FFT compiler settings # PATH = path for FFT library # LIB = name of FFT library -FFT_INC = -FFT_PATH = -FFT_LIB = +FFT_INC = +FFT_PATH = +FFT_LIB = # JPEG and/or PNG library -# see discussion in Section 2.2 (step 7) of manual +# see discussion in Section 3.5.4 of manual # only needed if -DLAMMPS_JPEG or -DLAMMPS_PNG listed with LMP_INC # INC = path(s) for jpeglib.h and/or png.h # PATH = path(s) for JPEG library and/or PNG library # LIB = name(s) of JPEG library and/or PNG library -JPG_INC = -JPG_PATH = -JPG_LIB = +JPG_INC = +JPG_PATH = +JPG_LIB = # --------------------------------------------------------------------- # build rules and dependencies # do not edit this section -include Makefile.package.settings -include Makefile.package +include Makefile.package.settings +include Makefile.package EXTRA_INC = $(LMP_INC) $(PKG_INC) $(MPI_INC) $(FFT_INC) $(JPG_INC) $(PKG_SYSINC) EXTRA_PATH = $(PKG_PATH) $(MPI_PATH) $(FFT_PATH) $(JPG_PATH) $(PKG_SYSPATH) @@ -85,28 +85,26 @@ vpath %.h .. # Link target -$(EXE): $(OBJ) $(EXTRA_LINK_DEPENDS) - $(LINK) $(LINKFLAGS) $(EXTRA_PATH) $(OBJ) $(EXTRA_LIB) $(LIB) -o $(EXE) - $(SIZE) $(EXE) +$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) + $(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLINK) $(EXTRA_LIB) $(LIB) -o $@ + $(SIZE) $@ # Library targets -lib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(ARCHIVE) $(ARFLAGS) $(EXE) $(OBJ) +$(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) + @rm -f $(ARLIB) + @ln -s ../$(ARLIB) $(ARLIB) -shlib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o $(EXE) \ - $(OBJ) $(EXTRA_LIB) $(LIB) +$(SHLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o ../$(SHLIB) \ + $(OBJ) $(EXTRA_LIB) $(LIB) + @rm -f $(SHLIB) + @ln -s ../$(SHLIB) $(SHLIB) # Compilation rules -%.o:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< - -%.d:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(EXTRA_INC) $(DEPFLAGS) $< > $@ - -%.o:%.cu $(EXTRA_CPP_DEPENDS) +%.o:%.cpp $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< # Individual dependencies diff --git a/src/MAKE/OPTIONS/Makefile.icc_mpich_link b/src/MAKE/OPTIONS/Makefile.icc_mpich_link index 0e9e530f88..5a8ae8b228 100644 --- a/src/MAKE/OPTIONS/Makefile.icc_mpich_link +++ b/src/MAKE/OPTIONS/Makefile.icc_mpich_link @@ -26,12 +26,12 @@ SHLIBFLAGS = -shared # if you change any -D setting, do full re-compile after "make clean" # LAMMPS ifdef settings -# see possible settings in Section 2.2 (step 4) of manual +# see possible settings in Section 3.5 of the manual LMP_INC = -DLAMMPS_GZIP # MPI library -# see discussion in Section 2.2 (step 5) of manual +# see discussion in Section 3.4 of the manual # MPI wrapper compiler/linker can provide this info # can point to dummy MPI library in src/STUBS as in Makefile.serial # use -D MPICH and OMPI settings in INC to avoid C++ lib conflicts @@ -44,33 +44,33 @@ MPI_PATH = -L/usr/local/lib MPI_LIB = -lmpich -lmpl -lpthread # FFT library -# see discussion in Section 2.2 (step 6) of manaul +# see discussion in Section 3.5.2 of manual # can be left blank to use provided KISS FFT library # INC = -DFFT setting, e.g. -DFFT_FFTW, FFT compiler settings # PATH = path for FFT library # LIB = name of FFT library -FFT_INC = -FFT_PATH = -FFT_LIB = +FFT_INC = +FFT_PATH = +FFT_LIB = # JPEG and/or PNG library -# see discussion in Section 2.2 (step 7) of manual +# see discussion in Section 3.5.4 of manual # only needed if -DLAMMPS_JPEG or -DLAMMPS_PNG listed with LMP_INC # INC = path(s) for jpeglib.h and/or png.h # PATH = path(s) for JPEG library and/or PNG library # LIB = name(s) of JPEG library and/or PNG library -JPG_INC = -JPG_PATH = -JPG_LIB = +JPG_INC = +JPG_PATH = +JPG_LIB = # --------------------------------------------------------------------- # build rules and dependencies # do not edit this section -include Makefile.package.settings -include Makefile.package +include Makefile.package.settings +include Makefile.package EXTRA_INC = $(LMP_INC) $(PKG_INC) $(MPI_INC) $(FFT_INC) $(JPG_INC) $(PKG_SYSINC) EXTRA_PATH = $(PKG_PATH) $(MPI_PATH) $(FFT_PATH) $(JPG_PATH) $(PKG_SYSPATH) @@ -85,28 +85,26 @@ vpath %.h .. # Link target -$(EXE): $(OBJ) $(EXTRA_LINK_DEPENDS) - $(LINK) $(LINKFLAGS) $(EXTRA_PATH) $(OBJ) $(EXTRA_LIB) $(LIB) -o $(EXE) - $(SIZE) $(EXE) +$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) + $(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLINK) $(EXTRA_LIB) $(LIB) -o $@ + $(SIZE) $@ # Library targets -lib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(ARCHIVE) $(ARFLAGS) $(EXE) $(OBJ) +$(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) + @rm -f $(ARLIB) + @ln -s ../$(ARLIB) $(ARLIB) -shlib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o $(EXE) \ - $(OBJ) $(EXTRA_LIB) $(LIB) +$(SHLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o ../$(SHLIB) \ + $(OBJ) $(EXTRA_LIB) $(LIB) + @rm -f $(SHLIB) + @ln -s ../$(SHLIB) $(SHLIB) # Compilation rules -%.o:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< - -%.d:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(EXTRA_INC) $(DEPFLAGS) $< > $@ - -%.o:%.cu $(EXTRA_CPP_DEPENDS) +%.o:%.cpp $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< # Individual dependencies diff --git a/src/MAKE/OPTIONS/Makefile.icc_openmpi b/src/MAKE/OPTIONS/Makefile.icc_openmpi index 19a917e928..1ed258e717 100644 --- a/src/MAKE/OPTIONS/Makefile.icc_openmpi +++ b/src/MAKE/OPTIONS/Makefile.icc_openmpi @@ -27,12 +27,12 @@ SHLIBFLAGS = -shared # if you change any -D setting, do full re-compile after "make clean" # LAMMPS ifdef settings -# see possible settings in Section 2.2 (step 4) of manual +# see possible settings in Section 3.5 of the manual LMP_INC = -DLAMMPS_GZIP # MPI library -# see discussion in Section 2.2 (step 5) of manual +# see discussion in Section 3.4 of the manual # MPI wrapper compiler/linker can provide this info # can point to dummy MPI library in src/STUBS as in Makefile.serial # use -D MPICH and OMPI settings in INC to avoid C++ lib conflicts @@ -41,37 +41,37 @@ LMP_INC = -DLAMMPS_GZIP # LIB = name of MPI library MPI_INC = -DMPICH_SKIP_MPICXX -DOMPI_SKIP_MPICXX=1 -MPI_PATH = -MPI_LIB = +MPI_PATH = +MPI_LIB = # FFT library -# see discussion in Section 2.2 (step 6) of manaul +# see discussion in Section 3.5.2 of manual # can be left blank to use provided KISS FFT library # INC = -DFFT setting, e.g. -DFFT_FFTW, FFT compiler settings # PATH = path for FFT library # LIB = name of FFT library -FFT_INC = -FFT_PATH = -FFT_LIB = +FFT_INC = +FFT_PATH = +FFT_LIB = # JPEG and/or PNG library -# see discussion in Section 2.2 (step 7) of manual +# see discussion in Section 3.5.4 of manual # only needed if -DLAMMPS_JPEG or -DLAMMPS_PNG listed with LMP_INC # INC = path(s) for jpeglib.h and/or png.h # PATH = path(s) for JPEG library and/or PNG library # LIB = name(s) of JPEG library and/or PNG library -JPG_INC = -JPG_PATH = -JPG_LIB = +JPG_INC = +JPG_PATH = +JPG_LIB = # --------------------------------------------------------------------- # build rules and dependencies # do not edit this section -include Makefile.package.settings -include Makefile.package +include Makefile.package.settings +include Makefile.package EXTRA_INC = $(LMP_INC) $(PKG_INC) $(MPI_INC) $(FFT_INC) $(JPG_INC) $(PKG_SYSINC) EXTRA_PATH = $(PKG_PATH) $(MPI_PATH) $(FFT_PATH) $(JPG_PATH) $(PKG_SYSPATH) @@ -86,28 +86,26 @@ vpath %.h .. # Link target -$(EXE): $(OBJ) $(EXTRA_LINK_DEPENDS) - $(LINK) $(LINKFLAGS) $(EXTRA_PATH) $(OBJ) $(EXTRA_LIB) $(LIB) -o $(EXE) - $(SIZE) $(EXE) +$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) + $(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLINK) $(EXTRA_LIB) $(LIB) -o $@ + $(SIZE) $@ # Library targets -lib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(ARCHIVE) $(ARFLAGS) $(EXE) $(OBJ) +$(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) + @rm -f $(ARLIB) + @ln -s ../$(ARLIB) $(ARLIB) -shlib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o $(EXE) \ - $(OBJ) $(EXTRA_LIB) $(LIB) +$(SHLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o ../$(SHLIB) \ + $(OBJ) $(EXTRA_LIB) $(LIB) + @rm -f $(SHLIB) + @ln -s ../$(SHLIB) $(SHLIB) # Compilation rules -%.o:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< - -%.d:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(EXTRA_INC) $(DEPFLAGS) $< > $@ - -%.o:%.cu $(EXTRA_CPP_DEPENDS) +%.o:%.cpp $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< # Individual dependencies diff --git a/src/MAKE/OPTIONS/Makefile.icc_openmpi_link b/src/MAKE/OPTIONS/Makefile.icc_openmpi_link index 5e991c6b90..33a5c529b8 100644 --- a/src/MAKE/OPTIONS/Makefile.icc_openmpi_link +++ b/src/MAKE/OPTIONS/Makefile.icc_openmpi_link @@ -26,12 +26,12 @@ SHLIBFLAGS = -shared # if you change any -D setting, do full re-compile after "make clean" # LAMMPS ifdef settings -# see possible settings in Section 2.2 (step 4) of manual +# see possible settings in Section 3.5 of the manual LMP_INC = -DLAMMPS_GZIP # MPI library -# see discussion in Section 2.2 (step 5) of manual +# see discussion in Section 3.4 of the manual # MPI wrapper compiler/linker can provide this info # can point to dummy MPI library in src/STUBS as in Makefile.serial # use -D MPICH and OMPI settings in INC to avoid C++ lib conflicts @@ -44,33 +44,33 @@ MPI_PATH = -L/usr/local/lib MPI_LIB = -lmpi -lmpi_cxx # FFT library -# see discussion in Section 2.2 (step 6) of manaul +# see discussion in Section 3.5.2 of manual # can be left blank to use provided KISS FFT library # INC = -DFFT setting, e.g. -DFFT_FFTW, FFT compiler settings # PATH = path for FFT library # LIB = name of FFT library -FFT_INC = -FFT_PATH = -FFT_LIB = +FFT_INC = +FFT_PATH = +FFT_LIB = # JPEG and/or PNG library -# see discussion in Section 2.2 (step 7) of manual +# see discussion in Section 3.5.4 of manual # only needed if -DLAMMPS_JPEG or -DLAMMPS_PNG listed with LMP_INC # INC = path(s) for jpeglib.h and/or png.h # PATH = path(s) for JPEG library and/or PNG library # LIB = name(s) of JPEG library and/or PNG library -JPG_INC = -JPG_PATH = -JPG_LIB = +JPG_INC = +JPG_PATH = +JPG_LIB = # --------------------------------------------------------------------- # build rules and dependencies # do not edit this section -include Makefile.package.settings -include Makefile.package +include Makefile.package.settings +include Makefile.package EXTRA_INC = $(LMP_INC) $(PKG_INC) $(MPI_INC) $(FFT_INC) $(JPG_INC) $(PKG_SYSINC) EXTRA_PATH = $(PKG_PATH) $(MPI_PATH) $(FFT_PATH) $(JPG_PATH) $(PKG_SYSPATH) @@ -85,28 +85,26 @@ vpath %.h .. # Link target -$(EXE): $(OBJ) $(EXTRA_LINK_DEPENDS) - $(LINK) $(LINKFLAGS) $(EXTRA_PATH) $(OBJ) $(EXTRA_LIB) $(LIB) -o $(EXE) - $(SIZE) $(EXE) +$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) + $(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLINK) $(EXTRA_LIB) $(LIB) -o $@ + $(SIZE) $@ # Library targets -lib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(ARCHIVE) $(ARFLAGS) $(EXE) $(OBJ) +$(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) + @rm -f $(ARLIB) + @ln -s ../$(ARLIB) $(ARLIB) -shlib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o $(EXE) \ - $(OBJ) $(EXTRA_LIB) $(LIB) +$(SHLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o ../$(SHLIB) \ + $(OBJ) $(EXTRA_LIB) $(LIB) + @rm -f $(SHLIB) + @ln -s ../$(SHLIB) $(SHLIB) # Compilation rules -%.o:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< - -%.d:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(EXTRA_INC) $(DEPFLAGS) $< > $@ - -%.o:%.cu $(EXTRA_CPP_DEPENDS) +%.o:%.cpp $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< # Individual dependencies diff --git a/src/MAKE/OPTIONS/Makefile.icc_serial b/src/MAKE/OPTIONS/Makefile.icc_serial index 34bf091932..6880e9e2dc 100644 --- a/src/MAKE/OPTIONS/Makefile.icc_serial +++ b/src/MAKE/OPTIONS/Makefile.icc_serial @@ -26,12 +26,12 @@ SHLIBFLAGS = -shared # if you change any -D setting, do full re-compile after "make clean" # LAMMPS ifdef settings -# see possible settings in Section 2.2 (step 4) of manual +# see possible settings in Section 3.5 of the manual LMP_INC = -DLAMMPS_GZIP # MPI library -# see discussion in Section 2.2 (step 5) of manual +# see discussion in Section 3.4 of the manual # MPI wrapper compiler/linker can provide this info # can point to dummy MPI library in src/STUBS as in Makefile.serial # use -D MPICH and OMPI settings in INC to avoid C++ lib conflicts @@ -44,33 +44,33 @@ MPI_PATH = -L../STUBS MPI_LIB = -lmpi_stubs # FFT library -# see discussion in Section 2.2 (step 6) of manaul +# see discussion in Section 3.5.2 of manual # can be left blank to use provided KISS FFT library # INC = -DFFT setting, e.g. -DFFT_FFTW, FFT compiler settings # PATH = path for FFT library # LIB = name of FFT library -FFT_INC = -FFT_PATH = -FFT_LIB = +FFT_INC = +FFT_PATH = +FFT_LIB = # JPEG and/or PNG library -# see discussion in Section 2.2 (step 7) of manual +# see discussion in Section 3.5.4 of manual # only needed if -DLAMMPS_JPEG or -DLAMMPS_PNG listed with LMP_INC # INC = path(s) for jpeglib.h and/or png.h # PATH = path(s) for JPEG library and/or PNG library # LIB = name(s) of JPEG library and/or PNG library -JPG_INC = -JPG_PATH = -JPG_LIB = +JPG_INC = +JPG_PATH = +JPG_LIB = # --------------------------------------------------------------------- # build rules and dependencies # do not edit this section -include Makefile.package.settings -include Makefile.package +include Makefile.package.settings +include Makefile.package EXTRA_INC = $(LMP_INC) $(PKG_INC) $(MPI_INC) $(FFT_INC) $(JPG_INC) $(PKG_SYSINC) EXTRA_PATH = $(PKG_PATH) $(MPI_PATH) $(FFT_PATH) $(JPG_PATH) $(PKG_SYSPATH) @@ -85,28 +85,26 @@ vpath %.h .. # Link target -$(EXE): $(OBJ) $(EXTRA_LINK_DEPENDS) - $(LINK) $(LINKFLAGS) $(EXTRA_PATH) $(OBJ) $(EXTRA_LIB) $(LIB) -o $(EXE) - $(SIZE) $(EXE) +$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) + $(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLINK) $(EXTRA_LIB) $(LIB) -o $@ + $(SIZE) $@ # Library targets -lib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(ARCHIVE) $(ARFLAGS) $(EXE) $(OBJ) +$(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) + @rm -f $(ARLIB) + @ln -s ../$(ARLIB) $(ARLIB) -shlib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o $(EXE) \ - $(OBJ) $(EXTRA_LIB) $(LIB) +$(SHLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o ../$(SHLIB) \ + $(OBJ) $(EXTRA_LIB) $(LIB) + @rm -f $(SHLIB) + @ln -s ../$(SHLIB) $(SHLIB) # Compilation rules -%.o:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< - -%.d:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(EXTRA_INC) $(DEPFLAGS) $< > $@ - -%.o:%.cu $(EXTRA_CPP_DEPENDS) +%.o:%.cpp $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< # Individual dependencies diff --git a/src/MAKE/OPTIONS/Makefile.intel_coprocessor b/src/MAKE/OPTIONS/Makefile.intel_coprocessor index 44f5c99f70..7964b1303e 100644 --- a/src/MAKE/OPTIONS/Makefile.intel_coprocessor +++ b/src/MAKE/OPTIONS/Makefile.intel_coprocessor @@ -1,4 +1,4 @@ -# intel_phi = USER-INTEL package with Phi offload support, Intel MPI, MKL FFT +# intel_coprocessor = USER-INTEL package with Phi offload support, Intel MPI, MKL FFT SHELL = /bin/sh @@ -29,12 +29,12 @@ SHLIBFLAGS = -shared # if you change any -D setting, do full re-compile after "make clean" # LAMMPS ifdef settings -# see possible settings in Section 2.2 (step 4) of manual +# see possible settings in Section 3.5 of the manual LMP_INC = -DLAMMPS_GZIP -DLAMMPS_JPEG # MPI library -# see discussion in Section 2.2 (step 5) of manual +# see discussion in Section 3.4 of the manual # MPI wrapper compiler/linker can provide this info # can point to dummy MPI library in src/STUBS as in Makefile.serial # use -D MPICH and OMPI settings in INC to avoid C++ lib conflicts @@ -43,11 +43,11 @@ LMP_INC = -DLAMMPS_GZIP -DLAMMPS_JPEG # LIB = name of MPI library MPI_INC = -DMPICH_SKIP_MPICXX -DOMPI_SKIP_MPICXX=1 -MPI_PATH = +MPI_PATH = MPI_LIB = # FFT library -# see discussion in Section 2.2 (step 6) of manaul +# see discussion in Section 3.5.2 of manual # can be left blank to use provided KISS FFT library # INC = -DFFT setting, e.g. -DFFT_FFTW, FFT compiler settings # PATH = path for FFT library @@ -58,7 +58,7 @@ FFT_PATH = FFT_LIB = -L$(MKLROOT)/lib/intel64/ -lmkl_intel_ilp64 -lmkl_sequential -lmkl_core # JPEG and/or PNG library -# see discussion in Section 2.2 (step 7) of manual +# see discussion in Section 3.5.4 of manual # only needed if -DLAMMPS_JPEG or -DLAMMPS_PNG listed with LMP_INC # INC = path(s) for jpeglib.h and/or png.h # PATH = path(s) for JPEG library and/or PNG library @@ -72,8 +72,8 @@ JPG_LIB = -ljpeg # build rules and dependencies # do not edit this section -include Makefile.package.settings -include Makefile.package +include Makefile.package.settings +include Makefile.package EXTRA_INC = $(LMP_INC) $(PKG_INC) $(MPI_INC) $(FFT_INC) $(JPG_INC) $(PKG_SYSINC) EXTRA_PATH = $(PKG_PATH) $(MPI_PATH) $(FFT_PATH) $(JPG_PATH) $(PKG_SYSPATH) @@ -88,28 +88,26 @@ vpath %.h .. # Link target -$(EXE): $(OBJ) $(EXTRA_LINK_DEPENDS) - $(LINK) $(LINKFLAGS) $(EXTRA_PATH) $(OBJ) $(EXTRA_LIB) $(LIB) -o $(EXE) - $(SIZE) $(EXE) +$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) + $(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLINK) $(EXTRA_LIB) $(LIB) -o $@ + $(SIZE) $@ # Library targets -lib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(ARCHIVE) $(ARFLAGS) $(EXE) $(OBJ) +$(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) + @rm -f $(ARLIB) + @ln -s ../$(ARLIB) $(ARLIB) -shlib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o $(EXE) \ - $(OBJ) $(EXTRA_LIB) $(LIB) +$(SHLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o ../$(SHLIB) \ + $(OBJ) $(EXTRA_LIB) $(LIB) + @rm -f $(SHLIB) + @ln -s ../$(SHLIB) $(SHLIB) # Compilation rules -%.o:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< - -%.d:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(EXTRA_INC) $(DEPFLAGS) $< > $@ - -%.o:%.cu $(EXTRA_CPP_DEPENDS) +%.o:%.cpp $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< # Individual dependencies diff --git a/src/MAKE/OPTIONS/Makefile.intel_cpu b/src/MAKE/OPTIONS/Makefile.intel_cpu index f52b4f3029..8d887a0d7b 100644 --- a/src/MAKE/OPTIONS/Makefile.intel_cpu +++ b/src/MAKE/OPTIONS/Makefile.intel_cpu @@ -1,4 +1,4 @@ -# intel_cpu_intelmpi = USER-INTEL package, Intel MPI, MKL FFT +# intel_cpu = USER-INTEL package, Intel MPI, MKL FFT SHELL = /bin/sh @@ -30,12 +30,12 @@ SHLIBFLAGS = -shared # if you change any -D setting, do full re-compile after "make clean" # LAMMPS ifdef settings -# see possible settings in Section 2.2 (step 4) of manual +# see possible settings in Section 3.5 of the manual LMP_INC = -DLAMMPS_GZIP -DLAMMPS_JPEG # MPI library -# see discussion in Section 2.2 (step 5) of manual +# see discussion in Section 3.4 of the manual # MPI wrapper compiler/linker can provide this info # can point to dummy MPI library in src/STUBS as in Makefile.serial # use -D MPICH and OMPI settings in INC to avoid C++ lib conflicts @@ -44,11 +44,11 @@ LMP_INC = -DLAMMPS_GZIP -DLAMMPS_JPEG # LIB = name of MPI library MPI_INC = -DMPICH_SKIP_MPICXX -DOMPI_SKIP_MPICXX=1 -MPI_PATH = +MPI_PATH = MPI_LIB = # FFT library -# see discussion in Section 2.2 (step 6) of manaul +# see discussion in Section 3.5.2 of manual # can be left blank to use provided KISS FFT library # INC = -DFFT setting, e.g. -DFFT_FFTW, FFT compiler settings # PATH = path for FFT library @@ -59,7 +59,7 @@ FFT_PATH = FFT_LIB = # JPEG and/or PNG library -# see discussion in Section 2.2 (step 7) of manual +# see discussion in Section 3.5.4 of manual # only needed if -DLAMMPS_JPEG or -DLAMMPS_PNG listed with LMP_INC # INC = path(s) for jpeglib.h and/or png.h # PATH = path(s) for JPEG library and/or PNG library @@ -73,8 +73,8 @@ JPG_LIB = -ljpeg # build rules and dependencies # do not edit this section -include Makefile.package.settings -include Makefile.package +include Makefile.package.settings +include Makefile.package EXTRA_INC = $(LMP_INC) $(PKG_INC) $(MPI_INC) $(FFT_INC) $(JPG_INC) $(PKG_SYSINC) EXTRA_PATH = $(PKG_PATH) $(MPI_PATH) $(FFT_PATH) $(JPG_PATH) $(PKG_SYSPATH) @@ -89,28 +89,26 @@ vpath %.h .. # Link target -$(EXE): $(OBJ) $(EXTRA_LINK_DEPENDS) - $(LINK) $(LINKFLAGS) $(EXTRA_PATH) $(OBJ) $(EXTRA_LIB) $(LIB) -o $(EXE) - $(SIZE) $(EXE) +$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) + $(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLINK) $(EXTRA_LIB) $(LIB) -o $@ + $(SIZE) $@ # Library targets -lib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(ARCHIVE) $(ARFLAGS) $(EXE) $(OBJ) +$(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) + @rm -f $(ARLIB) + @ln -s ../$(ARLIB) $(ARLIB) -shlib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o $(EXE) \ - $(OBJ) $(EXTRA_LIB) $(LIB) +$(SHLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o ../$(SHLIB) \ + $(OBJ) $(EXTRA_LIB) $(LIB) + @rm -f $(SHLIB) + @ln -s ../$(SHLIB) $(SHLIB) # Compilation rules -%.o:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< - -%.d:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(EXTRA_INC) $(DEPFLAGS) $< > $@ - -%.o:%.cu $(EXTRA_CPP_DEPENDS) +%.o:%.cpp $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< # Individual dependencies diff --git a/src/MAKE/OPTIONS/Makefile.intel_cpu_intelmpi b/src/MAKE/OPTIONS/Makefile.intel_cpu_intelmpi index 07d720a592..f085aac55a 100644 --- a/src/MAKE/OPTIONS/Makefile.intel_cpu_intelmpi +++ b/src/MAKE/OPTIONS/Makefile.intel_cpu_intelmpi @@ -30,12 +30,12 @@ SHLIBFLAGS = -shared # if you change any -D setting, do full re-compile after "make clean" # LAMMPS ifdef settings -# see possible settings in Section 2.2 (step 4) of manual +# see possible settings in Section 3.5 of the manual LMP_INC = -DLAMMPS_GZIP # MPI library -# see discussion in Section 2.2 (step 5) of manual +# see discussion in Section 3.4 of the manual # MPI wrapper compiler/linker can provide this info # can point to dummy MPI library in src/STUBS as in Makefile.serial # use -D MPICH and OMPI settings in INC to avoid C++ lib conflicts @@ -48,7 +48,7 @@ MPI_PATH = MPI_LIB = # FFT library -# see discussion in Section 2.2 (step 6) of manaul +# see discussion in Section 3.5.2 of manual # can be left blank to use provided KISS FFT library # INC = -DFFT setting, e.g. -DFFT_FFTW, FFT compiler settings # PATH = path for FFT library @@ -59,22 +59,22 @@ FFT_PATH = FFT_LIB = # JPEG and/or PNG library -# see discussion in Section 2.2 (step 7) of manual +# see discussion in Section 3.5.4 of manual # only needed if -DLAMMPS_JPEG or -DLAMMPS_PNG listed with LMP_INC # INC = path(s) for jpeglib.h and/or png.h # PATH = path(s) for JPEG library and/or PNG library # LIB = name(s) of JPEG library and/or PNG library -JPG_INC = -JPG_PATH = -JPG_LIB = +JPG_INC = +JPG_PATH = +JPG_LIB = # --------------------------------------------------------------------- # build rules and dependencies # do not edit this section -include Makefile.package.settings -include Makefile.package +include Makefile.package.settings +include Makefile.package EXTRA_INC = $(LMP_INC) $(PKG_INC) $(MPI_INC) $(FFT_INC) $(JPG_INC) $(PKG_SYSINC) EXTRA_PATH = $(PKG_PATH) $(MPI_PATH) $(FFT_PATH) $(JPG_PATH) $(PKG_SYSPATH) @@ -89,28 +89,26 @@ vpath %.h .. # Link target -$(EXE): $(OBJ) $(EXTRA_LINK_DEPENDS) - $(LINK) $(LINKFLAGS) $(EXTRA_PATH) $(OBJ) $(EXTRA_LIB) $(LIB) -o $(EXE) - $(SIZE) $(EXE) +$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) + $(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLINK) $(EXTRA_LIB) $(LIB) -o $@ + $(SIZE) $@ # Library targets -lib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(ARCHIVE) $(ARFLAGS) $(EXE) $(OBJ) +$(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) + @rm -f $(ARLIB) + @ln -s ../$(ARLIB) $(ARLIB) -shlib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o $(EXE) \ - $(OBJ) $(EXTRA_LIB) $(LIB) +$(SHLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o ../$(SHLIB) \ + $(OBJ) $(EXTRA_LIB) $(LIB) + @rm -f $(SHLIB) + @ln -s ../$(SHLIB) $(SHLIB) # Compilation rules -%.o:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< - -%.d:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(EXTRA_INC) $(DEPFLAGS) $< > $@ - -%.o:%.cu $(EXTRA_CPP_DEPENDS) +%.o:%.cpp $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< # Individual dependencies diff --git a/src/MAKE/OPTIONS/Makefile.intel_cpu_mpich b/src/MAKE/OPTIONS/Makefile.intel_cpu_mpich index 51cf975e5c..7f6b687334 100644 --- a/src/MAKE/OPTIONS/Makefile.intel_cpu_mpich +++ b/src/MAKE/OPTIONS/Makefile.intel_cpu_mpich @@ -30,12 +30,12 @@ SHLIBFLAGS = -shared # if you change any -D setting, do full re-compile after "make clean" # LAMMPS ifdef settings -# see possible settings in Section 2.2 (step 4) of manual +# see possible settings in Section 3.5 of the manual LMP_INC = -DLAMMPS_GZIP # MPI library -# see discussion in Section 2.2 (step 5) of manual +# see discussion in Section 3.4 of the manual # MPI wrapper compiler/linker can provide this info # can point to dummy MPI library in src/STUBS as in Makefile.serial # use -D MPICH and OMPI settings in INC to avoid C++ lib conflicts @@ -48,7 +48,7 @@ MPI_PATH = -L/usr/local/lib MPI_LIB = -lmpich -lmpl -lpthread # FFT library -# see discussion in Section 2.2 (step 6) of manaul +# see discussion in Section 3.5.2 of manual # can be left blank to use provided KISS FFT library # INC = -DFFT setting, e.g. -DFFT_FFTW, FFT compiler settings # PATH = path for FFT library @@ -73,8 +73,8 @@ JPG_LIB = # build rules and dependencies # do not edit this section -include Makefile.package.settings -include Makefile.package +include Makefile.package.settings +include Makefile.package EXTRA_INC = $(LMP_INC) $(PKG_INC) $(MPI_INC) $(FFT_INC) $(JPG_INC) $(PKG_SYSINC) EXTRA_PATH = $(PKG_PATH) $(MPI_PATH) $(FFT_PATH) $(JPG_PATH) $(PKG_SYSPATH) @@ -89,28 +89,26 @@ vpath %.h .. # Link target -$(EXE): $(OBJ) $(EXTRA_LINK_DEPENDS) - $(LINK) $(LINKFLAGS) $(EXTRA_PATH) $(OBJ) $(EXTRA_LIB) $(LIB) -o $(EXE) - $(SIZE) $(EXE) +$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) + $(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLINK) $(EXTRA_LIB) $(LIB) -o $@ + $(SIZE) $@ # Library targets -lib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(ARCHIVE) $(ARFLAGS) $(EXE) $(OBJ) +$(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) + @rm -f $(ARLIB) + @ln -s ../$(ARLIB) $(ARLIB) -shlib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o $(EXE) \ - $(OBJ) $(EXTRA_LIB) $(LIB) +$(SHLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o ../$(SHLIB) \ + $(OBJ) $(EXTRA_LIB) $(LIB) + @rm -f $(SHLIB) + @ln -s ../$(SHLIB) $(SHLIB) # Compilation rules -%.o:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< - -%.d:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(EXTRA_INC) $(DEPFLAGS) $< > $@ - -%.o:%.cu $(EXTRA_CPP_DEPENDS) +%.o:%.cpp $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< # Individual dependencies diff --git a/src/MAKE/OPTIONS/Makefile.intel_cpu_openmpi b/src/MAKE/OPTIONS/Makefile.intel_cpu_openmpi index 342637a460..5401101546 100644 --- a/src/MAKE/OPTIONS/Makefile.intel_cpu_openmpi +++ b/src/MAKE/OPTIONS/Makefile.intel_cpu_openmpi @@ -31,12 +31,12 @@ SHLIBFLAGS = -shared # if you change any -D setting, do full re-compile after "make clean" # LAMMPS ifdef settings -# see possible settings in Section 2.2 (step 4) of manual +# see possible settings in Section 3.5 of the manual LMP_INC = -DLAMMPS_GZIP # MPI library -# see discussion in Section 2.2 (step 5) of manual +# see discussion in Section 3.4 of the manual # MPI wrapper compiler/linker can provide this info # can point to dummy MPI library in src/STUBS as in Makefile.serial # use -D MPICH and OMPI settings in INC to avoid C++ lib conflicts @@ -49,7 +49,7 @@ MPI_PATH = MPI_LIB = # FFT library -# see discussion in Section 2.2 (step 6) of manaul +# see discussion in Section 3.5.2 of manual # can be left blank to use provided KISS FFT library # INC = -DFFT setting, e.g. -DFFT_FFTW, FFT compiler settings # PATH = path for FFT library @@ -60,22 +60,22 @@ FFT_PATH = FFT_LIB = # JPEG and/or PNG library -# see discussion in Section 2.2 (step 7) of manual +# see discussion in Section 3.5.4 of manual # only needed if -DLAMMPS_JPEG or -DLAMMPS_PNG listed with LMP_INC # INC = path(s) for jpeglib.h and/or png.h # PATH = path(s) for JPEG library and/or PNG library # LIB = name(s) of JPEG library and/or PNG library -JPG_INC = -JPG_PATH = -JPG_LIB = +JPG_INC = +JPG_PATH = +JPG_LIB = # --------------------------------------------------------------------- # build rules and dependencies # do not edit this section -include Makefile.package.settings -include Makefile.package +include Makefile.package.settings +include Makefile.package EXTRA_INC = $(LMP_INC) $(PKG_INC) $(MPI_INC) $(FFT_INC) $(JPG_INC) $(PKG_SYSINC) EXTRA_PATH = $(PKG_PATH) $(MPI_PATH) $(FFT_PATH) $(JPG_PATH) $(PKG_SYSPATH) @@ -90,28 +90,26 @@ vpath %.h .. # Link target -$(EXE): $(OBJ) $(EXTRA_LINK_DEPENDS) - $(LINK) $(LINKFLAGS) $(EXTRA_PATH) $(OBJ) $(EXTRA_LIB) $(LIB) -o $(EXE) - $(SIZE) $(EXE) +$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) + $(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLINK) $(EXTRA_LIB) $(LIB) -o $@ + $(SIZE) $@ # Library targets -lib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(ARCHIVE) $(ARFLAGS) $(EXE) $(OBJ) +$(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) + @rm -f $(ARLIB) + @ln -s ../$(ARLIB) $(ARLIB) -shlib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o $(EXE) \ - $(OBJ) $(EXTRA_LIB) $(LIB) +$(SHLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o ../$(SHLIB) \ + $(OBJ) $(EXTRA_LIB) $(LIB) + @rm -f $(SHLIB) + @ln -s ../$(SHLIB) $(SHLIB) # Compilation rules -%.o:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< - -%.d:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(EXTRA_INC) $(DEPFLAGS) $< > $@ - -%.o:%.cu $(EXTRA_CPP_DEPENDS) +%.o:%.cpp $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< # Individual dependencies diff --git a/src/MAKE/OPTIONS/Makefile.jpeg b/src/MAKE/OPTIONS/Makefile.jpeg index f74a2eb1f7..7d4e029033 100644 --- a/src/MAKE/OPTIONS/Makefile.jpeg +++ b/src/MAKE/OPTIONS/Makefile.jpeg @@ -26,12 +26,12 @@ SHLIBFLAGS = -shared # if you change any -D setting, do full re-compile after "make clean" # LAMMPS ifdef settings -# see possible settings in Section 2.2 (step 4) of manual +# see possible settings in Section 3.5 of the manual LMP_INC = -DLAMMPS_GZIP -DLAMMPS_JPEG # MPI library -# see discussion in Section 2.2 (step 5) of manual +# see discussion in Section 3.4 of the manual # MPI wrapper compiler/linker can provide this info # can point to dummy MPI library in src/STUBS as in Makefile.serial # use -D MPICH and OMPI settings in INC to avoid C++ lib conflicts @@ -40,22 +40,22 @@ LMP_INC = -DLAMMPS_GZIP -DLAMMPS_JPEG # LIB = name of MPI library MPI_INC = -DMPICH_SKIP_MPICXX -DOMPI_SKIP_MPICXX=1 -MPI_PATH = -MPI_LIB = +MPI_PATH = +MPI_LIB = # FFT library -# see discussion in Section 2.2 (step 6) of manual +# see discussion in Section 3.5.2 of manual # can be left blank to use provided KISS FFT library # INC = -DFFT setting, e.g. -DFFT_FFTW, FFT compiler settings # PATH = path for FFT library # LIB = name of FFT library -FFT_INC = -FFT_PATH = -FFT_LIB = +FFT_INC = +FFT_PATH = +FFT_LIB = # JPEG and/or PNG library -# see discussion in Section 2.2 (step 7) of manual +# see discussion in Section 3.5.4 of manual # only needed if -DLAMMPS_JPEG or -DLAMMPS_PNG listed with LMP_INC # INC = path(s) for jpeglib.h and/or png.h # PATH = path(s) for JPEG library and/or PNG library @@ -69,8 +69,8 @@ JPG_LIB = -ljpeg # build rules and dependencies # do not edit this section -include Makefile.package.settings -include Makefile.package +include Makefile.package.settings +include Makefile.package EXTRA_INC = $(LMP_INC) $(PKG_INC) $(MPI_INC) $(FFT_INC) $(JPG_INC) $(PKG_SYSINC) EXTRA_PATH = $(PKG_PATH) $(MPI_PATH) $(FFT_PATH) $(JPG_PATH) $(PKG_SYSPATH) @@ -85,28 +85,26 @@ vpath %.h .. # Link target -$(EXE): $(OBJ) $(EXTRA_LINK_DEPENDS) - $(LINK) $(LINKFLAGS) $(EXTRA_PATH) $(OBJ) $(EXTRA_LIB) $(LIB) -o $(EXE) - $(SIZE) $(EXE) +$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) + $(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLINK) $(EXTRA_LIB) $(LIB) -o $@ + $(SIZE) $@ # Library targets -lib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(ARCHIVE) $(ARFLAGS) $(EXE) $(OBJ) +$(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) + @rm -f $(ARLIB) + @ln -s ../$(ARLIB) $(ARLIB) -shlib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o $(EXE) \ - $(OBJ) $(EXTRA_LIB) $(LIB) +$(SHLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o ../$(SHLIB) \ + $(OBJ) $(EXTRA_LIB) $(LIB) + @rm -f $(SHLIB) + @ln -s ../$(SHLIB) $(SHLIB) # Compilation rules -%.o:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< - -%.d:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(EXTRA_INC) $(DEPFLAGS) $< > $@ - -%.o:%.cu $(EXTRA_CPP_DEPENDS) +%.o:%.cpp $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< # Individual dependencies diff --git a/src/MAKE/OPTIONS/Makefile.knl b/src/MAKE/OPTIONS/Makefile.knl index ab1b756a67..92030fb953 100644 --- a/src/MAKE/OPTIONS/Makefile.knl +++ b/src/MAKE/OPTIONS/Makefile.knl @@ -29,12 +29,12 @@ SHLIBFLAGS = -shared # if you change any -D setting, do full re-compile after "make clean" # LAMMPS ifdef settings -# see possible settings in Section 2.2 (step 4) of manual +# see possible settings in Section 3.5 of the manual LMP_INC = -DLAMMPS_GZIP -DLAMMPS_JPEG # MPI library -# see discussion in Section 2.2 (step 5) of manual +# see discussion in Section 3.4 of the manual # MPI wrapper compiler/linker can provide this info # can point to dummy MPI library in src/STUBS as in Makefile.serial # use -D MPICH and OMPI settings in INC to avoid C++ lib conflicts @@ -43,11 +43,11 @@ LMP_INC = -DLAMMPS_GZIP -DLAMMPS_JPEG # LIB = name of MPI library MPI_INC = -DMPICH_SKIP_MPICXX -DOMPI_SKIP_MPICXX=1 -MPI_PATH = +MPI_PATH = MPI_LIB = # FFT library -# see discussion in Section 2.2 (step 6) of manaul +# see discussion in Section 3.5.2 of manual # can be left blank to use provided KISS FFT library # INC = -DFFT setting, e.g. -DFFT_FFTW, FFT compiler settings # PATH = path for FFT library @@ -58,7 +58,7 @@ FFT_PATH = FFT_LIB = # JPEG and/or PNG library -# see discussion in Section 2.2 (step 7) of manual +# see discussion in Section 3.5.4 of manual # only needed if -DLAMMPS_JPEG or -DLAMMPS_PNG listed with LMP_INC # INC = path(s) for jpeglib.h and/or png.h # PATH = path(s) for JPEG library and/or PNG library @@ -72,12 +72,14 @@ JPG_LIB = -ljpeg # build rules and dependencies # do not edit this section -include Makefile.package.settings -include Makefile.package +include Makefile.package.settings +include Makefile.package EXTRA_INC = $(LMP_INC) $(PKG_INC) $(MPI_INC) $(FFT_INC) $(JPG_INC) $(PKG_SYSINC) EXTRA_PATH = $(PKG_PATH) $(MPI_PATH) $(FFT_PATH) $(JPG_PATH) $(PKG_SYSPATH) EXTRA_LIB = $(PKG_LIB) $(MPI_LIB) $(FFT_LIB) $(JPG_LIB) $(PKG_SYSLIB) +EXTRA_CPP_DEPENDS = $(PKG_CPP_DEPENDS) +EXTRA_LINK_DEPENDS = $(PKG_LINK_DEPENDS) # Path to src files @@ -86,30 +88,28 @@ vpath %.h .. # Link target -$(EXE): $(OBJ) - $(LINK) $(LINKFLAGS) $(EXTRA_PATH) $(OBJ) $(EXTRA_LIB) $(LIB) -o $(EXE) - $(SIZE) $(EXE) +$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) + $(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLINK) $(EXTRA_LIB) $(LIB) -o $@ + $(SIZE) $@ # Library targets -lib: $(OBJ) - $(ARCHIVE) $(ARFLAGS) $(EXE) $(OBJ) +$(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) + @rm -f $(ARLIB) + @ln -s ../$(ARLIB) $(ARLIB) -shlib: $(OBJ) - $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o $(EXE) \ - $(OBJ) $(EXTRA_LIB) $(LIB) +$(SHLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o ../$(SHLIB) \ + $(OBJ) $(EXTRA_LIB) $(LIB) + @rm -f $(SHLIB) + @ln -s ../$(SHLIB) $(SHLIB) # Compilation rules %.o:%.cpp $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< -%.d:%.cpp - $(CC) $(CCFLAGS) $(EXTRA_INC) $(DEPFLAGS) $< > $@ - -%.o:%.cu - $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< - # Individual dependencies depend : fastdep.exe $(SRC) diff --git a/src/MAKE/OPTIONS/Makefile.kokkos_cuda_mpi b/src/MAKE/OPTIONS/Makefile.kokkos_cuda_mpi index ba34bc25eb..b9b262ed1d 100644 --- a/src/MAKE/OPTIONS/Makefile.kokkos_cuda_mpi +++ b/src/MAKE/OPTIONS/Makefile.kokkos_cuda_mpi @@ -31,7 +31,7 @@ KOKKOS_ARCH = Kepler35 # if you change any -D setting, do full re-compile after "make clean" # LAMMPS ifdef settings -# see possible settings in Section 2.2 (step 4) of manual +# see possible settings in Section 3.5 of the manual LMP_INC = -DLAMMPS_GZIP @@ -45,11 +45,11 @@ LMP_INC = -DLAMMPS_GZIP # LIB = name of MPI library MPI_INC = -DMPICH_SKIP_MPICXX -DOMPI_SKIP_MPICXX=1 -MPI_PATH = -MPI_LIB = +MPI_PATH = +MPI_LIB = # FFT library -# see discussion in Section 2.2 (step 6) of manaul +# see discussion in Section 3.5.2 of manual # can be left blank to use provided KISS FFT library # INC = -DFFT setting, e.g. -DFFT_FFTW, FFT compiler settings # PATH = path for FFT library @@ -60,22 +60,22 @@ FFT_PATH = FFT_LIB = -lcufft # JPEG and/or PNG library -# see discussion in Section 2.2 (step 7) of manual +# see discussion in Section 3.5.4 of manual # only needed if -DLAMMPS_JPEG or -DLAMMPS_PNG listed with LMP_INC # INC = path(s) for jpeglib.h and/or png.h # PATH = path(s) for JPEG library and/or PNG library # LIB = name(s) of JPEG library and/or PNG library -JPG_INC = -JPG_PATH = -JPG_LIB = +JPG_INC = +JPG_PATH = +JPG_LIB = # --------------------------------------------------------------------- # build rules and dependencies # do not edit this section -include Makefile.package.settings -include Makefile.package +include Makefile.package.settings +include Makefile.package EXTRA_INC = $(LMP_INC) $(PKG_INC) $(MPI_INC) $(FFT_INC) $(JPG_INC) $(PKG_SYSINC) EXTRA_PATH = $(PKG_PATH) $(MPI_PATH) $(FFT_PATH) $(JPG_PATH) $(PKG_SYSPATH) @@ -90,28 +90,26 @@ vpath %.h .. # Link target -$(EXE): $(OBJ) $(EXTRA_LINK_DEPENDS) - $(LINK) $(LINKFLAGS) $(EXTRA_PATH) $(OBJ) $(EXTRA_LIB) $(LIB) -o $(EXE) - $(SIZE) $(EXE) +$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) + $(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLINK) $(EXTRA_LIB) $(LIB) -o $@ + $(SIZE) $@ # Library targets -lib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(ARCHIVE) $(ARFLAGS) $(EXE) $(OBJ) +$(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) + @rm -f $(ARLIB) + @ln -s ../$(ARLIB) $(ARLIB) -shlib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o $(EXE) \ - $(OBJ) $(EXTRA_LIB) $(LIB) +$(SHLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o ../$(SHLIB) \ + $(OBJ) $(EXTRA_LIB) $(LIB) + @rm -f $(SHLIB) + @ln -s ../$(SHLIB) $(SHLIB) # Compilation rules -%.o:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< - -%.d:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(EXTRA_INC) $(DEPFLAGS) $< > $@ - -%.o:%.cu $(EXTRA_CPP_DEPENDS) +%.o:%.cpp $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< # Individual dependencies diff --git a/src/MAKE/OPTIONS/Makefile.kokkos_mpi_only b/src/MAKE/OPTIONS/Makefile.kokkos_mpi_only index 7aea2f366a..8cc4375b59 100644 --- a/src/MAKE/OPTIONS/Makefile.kokkos_mpi_only +++ b/src/MAKE/OPTIONS/Makefile.kokkos_mpi_only @@ -27,12 +27,12 @@ KOKKOS_DEVICES = Serial # if you change any -D setting, do full re-compile after "make clean" # LAMMPS ifdef settings -# see possible settings in Section 2.2 (step 4) of manual +# see possible settings in Section 3.5 of the manual LMP_INC = -DLAMMPS_GZIP # MPI library -# see discussion in Section 2.2 (step 5) of manual +# see discussion in Section 3.4 of the manual # MPI wrapper compiler/linker can provide this info # can point to dummy MPI library in src/STUBS as in Makefile.serial # use -D MPICH and OMPI settings in INC to avoid C++ lib conflicts @@ -41,37 +41,37 @@ LMP_INC = -DLAMMPS_GZIP # LIB = name of MPI library MPI_INC = -DMPICH_SKIP_MPICXX -DOMPI_SKIP_MPICXX=1 -MPI_PATH = -MPI_LIB = +MPI_PATH = +MPI_LIB = # FFT library -# see discussion in Section 2.2 (step 6) of manual +# see discussion in Section 3.5.2 of manual # can be left blank to use provided KISS FFT library # INC = -DFFT setting, e.g. -DFFT_FFTW, FFT compiler settings # PATH = path for FFT library # LIB = name of FFT library -FFT_INC = -FFT_PATH = -FFT_LIB = +FFT_INC = +FFT_PATH = +FFT_LIB = # JPEG and/or PNG library -# see discussion in Section 2.2 (step 7) of manual +# see discussion in Section 3.5.4 of manual # only needed if -DLAMMPS_JPEG or -DLAMMPS_PNG listed with LMP_INC # INC = path(s) for jpeglib.h and/or png.h # PATH = path(s) for JPEG library and/or PNG library # LIB = name(s) of JPEG library and/or PNG library -JPG_INC = -JPG_PATH = -JPG_LIB = +JPG_INC = +JPG_PATH = +JPG_LIB = # --------------------------------------------------------------------- # build rules and dependencies # do not edit this section -include Makefile.package.settings -include Makefile.package +include Makefile.package.settings +include Makefile.package EXTRA_INC = $(LMP_INC) $(PKG_INC) $(MPI_INC) $(FFT_INC) $(JPG_INC) $(PKG_SYSINC) EXTRA_PATH = $(PKG_PATH) $(MPI_PATH) $(FFT_PATH) $(JPG_PATH) $(PKG_SYSPATH) @@ -86,28 +86,26 @@ vpath %.h .. # Link target -$(EXE): $(OBJ) $(EXTRA_LINK_DEPENDS) - $(LINK) $(LINKFLAGS) $(EXTRA_PATH) $(OBJ) $(EXTRA_LIB) $(LIB) -o $(EXE) - $(SIZE) $(EXE) +$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) + $(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLINK) $(EXTRA_LIB) $(LIB) -o $@ + $(SIZE) $@ # Library targets -lib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(ARCHIVE) $(ARFLAGS) $(EXE) $(OBJ) +$(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) + @rm -f $(ARLIB) + @ln -s ../$(ARLIB) $(ARLIB) -shlib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o $(EXE) \ - $(OBJ) $(EXTRA_LIB) $(LIB) +$(SHLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o ../$(SHLIB) \ + $(OBJ) $(EXTRA_LIB) $(LIB) + @rm -f $(SHLIB) + @ln -s ../$(SHLIB) $(SHLIB) # Compilation rules -%.o:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< - -%.d:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(EXTRA_INC) $(DEPFLAGS) $< > $@ - -%.o:%.cu $(EXTRA_CPP_DEPENDS) +%.o:%.cpp $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< # Individual dependencies diff --git a/src/MAKE/OPTIONS/Makefile.kokkos_omp b/src/MAKE/OPTIONS/Makefile.kokkos_omp index d0e12796c0..750751b73c 100644 --- a/src/MAKE/OPTIONS/Makefile.kokkos_omp +++ b/src/MAKE/OPTIONS/Makefile.kokkos_omp @@ -27,12 +27,12 @@ KOKKOS_DEVICES = OpenMP # if you change any -D setting, do full re-compile after "make clean" # LAMMPS ifdef settings -# see possible settings in Section 2.2 (step 4) of manual +# see possible settings in Section 3.5 of the manual LMP_INC = -DLAMMPS_GZIP # MPI library -# see discussion in Section 2.2 (step 5) of manual +# see discussion in Section 3.4 of the manual # MPI wrapper compiler/linker can provide this info # can point to dummy MPI library in src/STUBS as in Makefile.serial # use -D MPICH and OMPI settings in INC to avoid C++ lib conflicts @@ -41,37 +41,37 @@ LMP_INC = -DLAMMPS_GZIP # LIB = name of MPI library MPI_INC = -DMPICH_SKIP_MPICXX -DOMPI_SKIP_MPICXX=1 -MPI_PATH = -MPI_LIB = +MPI_PATH = +MPI_LIB = # FFT library -# see discussion in Section 2.2 (step 6) of manual +# see discussion in Section 3.5.2 of manual # can be left blank to use provided KISS FFT library # INC = -DFFT setting, e.g. -DFFT_FFTW, FFT compiler settings # PATH = path for FFT library # LIB = name of FFT library -FFT_INC = -FFT_PATH = -FFT_LIB = +FFT_INC = +FFT_PATH = +FFT_LIB = # JPEG and/or PNG library -# see discussion in Section 2.2 (step 7) of manual +# see discussion in Section 3.5.4 of manual # only needed if -DLAMMPS_JPEG or -DLAMMPS_PNG listed with LMP_INC # INC = path(s) for jpeglib.h and/or png.h # PATH = path(s) for JPEG library and/or PNG library # LIB = name(s) of JPEG library and/or PNG library -JPG_INC = -JPG_PATH = -JPG_LIB = +JPG_INC = +JPG_PATH = +JPG_LIB = # --------------------------------------------------------------------- # build rules and dependencies # do not edit this section -include Makefile.package.settings -include Makefile.package +include Makefile.package.settings +include Makefile.package EXTRA_INC = $(LMP_INC) $(PKG_INC) $(MPI_INC) $(FFT_INC) $(JPG_INC) $(PKG_SYSINC) EXTRA_PATH = $(PKG_PATH) $(MPI_PATH) $(FFT_PATH) $(JPG_PATH) $(PKG_SYSPATH) @@ -86,28 +86,26 @@ vpath %.h .. # Link target -$(EXE): $(OBJ) $(EXTRA_LINK_DEPENDS) - $(LINK) $(LINKFLAGS) $(EXTRA_PATH) $(OBJ) $(EXTRA_LIB) $(LIB) -o $(EXE) - $(SIZE) $(EXE) +$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) + $(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLINK) $(EXTRA_LIB) $(LIB) -o $@ + $(SIZE) $@ # Library targets -lib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(ARCHIVE) $(ARFLAGS) $(EXE) $(OBJ) +$(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) + @rm -f $(ARLIB) + @ln -s ../$(ARLIB) $(ARLIB) -shlib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o $(EXE) \ - $(OBJ) $(EXTRA_LIB) $(LIB) +$(SHLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o ../$(SHLIB) \ + $(OBJ) $(EXTRA_LIB) $(LIB) + @rm -f $(SHLIB) + @ln -s ../$(SHLIB) $(SHLIB) # Compilation rules -%.o:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< - -%.d:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(EXTRA_INC) $(DEPFLAGS) $< > $@ - -%.o:%.cu $(EXTRA_CPP_DEPENDS) +%.o:%.cpp $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< # Individual dependencies diff --git a/src/MAKE/OPTIONS/Makefile.kokkos_phi b/src/MAKE/OPTIONS/Makefile.kokkos_phi index 7dc0bb091a..4e85b9e5b8 100644 --- a/src/MAKE/OPTIONS/Makefile.kokkos_phi +++ b/src/MAKE/OPTIONS/Makefile.kokkos_phi @@ -28,12 +28,12 @@ KOKKOS_ARCH = KNL # if you change any -D setting, do full re-compile after "make clean" # LAMMPS ifdef settings -# see possible settings in Section 2.2 (step 4) of manual +# see possible settings in Section 3.5 of the manual LMP_INC = -DLAMMPS_GZIP # MPI library -# see discussion in Section 2.2 (step 5) of manual +# see discussion in Section 3.4 of the manual # MPI wrapper compiler/linker can provide this info # can point to dummy MPI library in src/STUBS as in Makefile.serial # use -D MPICH and OMPI settings in INC to avoid C++ lib conflicts @@ -42,37 +42,37 @@ LMP_INC = -DLAMMPS_GZIP # LIB = name of MPI library MPI_INC = -DMPICH_SKIP_MPICXX -DOMPI_SKIP_MPICXX=1 -MPI_PATH = -MPI_LIB = +MPI_PATH = +MPI_LIB = # FFT library -# see discussion in Section 2.2 (step 6) of manual +# see discussion in Section 3.5.2 of manual # can be left blank to use provided KISS FFT library # INC = -DFFT setting, e.g. -DFFT_FFTW, FFT compiler settings # PATH = path for FFT library # LIB = name of FFT library -FFT_INC = -FFT_PATH = -FFT_LIB = +FFT_INC = +FFT_PATH = +FFT_LIB = # JPEG and/or PNG library -# see discussion in Section 2.2 (step 7) of manual +# see discussion in Section 3.5.4 of manual # only needed if -DLAMMPS_JPEG or -DLAMMPS_PNG listed with LMP_INC # INC = path(s) for jpeglib.h and/or png.h # PATH = path(s) for JPEG library and/or PNG library # LIB = name(s) of JPEG library and/or PNG library -JPG_INC = -JPG_PATH = -JPG_LIB = +JPG_INC = +JPG_PATH = +JPG_LIB = # --------------------------------------------------------------------- # build rules and dependencies # do not edit this section -include Makefile.package.settings -include Makefile.package +include Makefile.package.settings +include Makefile.package EXTRA_INC = $(LMP_INC) $(PKG_INC) $(MPI_INC) $(FFT_INC) $(JPG_INC) $(PKG_SYSINC) EXTRA_PATH = $(PKG_PATH) $(MPI_PATH) $(FFT_PATH) $(JPG_PATH) $(PKG_SYSPATH) @@ -87,39 +87,34 @@ vpath %.h .. # Link target -$(EXE): $(OBJ) $(EXTRA_LINK_DEPENDS) - $(LINK) $(LINKFLAGS) $(EXTRA_PATH) $(OBJ) $(EXTRA_LIB) $(LIB) -o $(EXE) - $(SIZE) $(EXE) +$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) + $(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLINK) $(EXTRA_LIB) $(LIB) -o $@ + $(SIZE) $@ # Library targets -lib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(ARCHIVE) $(ARFLAGS) $(EXE) $(OBJ) +$(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) + @rm -f $(ARLIB) + @ln -s ../$(ARLIB) $(ARLIB) -shlib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o $(EXE) \ - $(OBJ) $(EXTRA_LIB) $(LIB) +$(SHLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o ../$(SHLIB) \ + $(OBJ) $(EXTRA_LIB) $(LIB) + @rm -f $(SHLIB) + @ln -s ../$(SHLIB) $(SHLIB) # Compilation rules -%.o:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< - -%.d:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(EXTRA_INC) $(DEPFLAGS) $< > $@ - -%.o:%.cu $(EXTRA_CPP_DEPENDS) +%.o:%.cpp $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< # Individual dependencies -#depend : fastdep.exe $(SRC) -# @./fastdep.exe $(EXTRA_INC) -- $^ > .depend || exit 1 - -#fastdep.exe: ../DEPEND/fastdep.c -# cc -O -o $@ $< +depend : fastdep.exe $(SRC) + @./fastdep.exe $(EXTRA_INC) -- $^ > .depend || exit 1 -#sinclude .depend +fastdep.exe: ../DEPEND/fastdep.c + cc -O -o $@ $< -DEPENDS = $(OBJ:.o=.d) -sinclude $(DEPENDS) \ No newline at end of file +sinclude .depend diff --git a/src/MAKE/OPTIONS/Makefile.mgptfast b/src/MAKE/OPTIONS/Makefile.mgptfast index ed27993706..6baae1e2ee 100644 --- a/src/MAKE/OPTIONS/Makefile.mgptfast +++ b/src/MAKE/OPTIONS/Makefile.mgptfast @@ -26,12 +26,12 @@ SHLIBFLAGS = -shared # if you change any -D setting, do full re-compile after "make clean" # LAMMPS ifdef settings -# see possible settings in Section 2.2 (step 4) of manual +# see possible settings in Section 3.5 of the manual LMP_INC = -DLAMMPS_GZIP # MPI library -# see discussion in Section 2.2 (step 5) of manual +# see discussion in Section 3.4 of the manual # MPI wrapper compiler/linker can provide this info # can point to dummy MPI library in src/STUBS as in Makefile.serial # use -D MPICH and OMPI settings in INC to avoid C++ lib conflicts @@ -40,37 +40,37 @@ LMP_INC = -DLAMMPS_GZIP # LIB = name of MPI library MPI_INC = -DMPICH_SKIP_MPICXX -DOMPI_SKIP_MPICXX=1 -MPI_PATH = -MPI_LIB = +MPI_PATH = +MPI_LIB = # FFT library -# see discussion in Section 2.2 (step 6) of manual +# see discussion in Section 3.5.2 of manual # can be left blank to use provided KISS FFT library # INC = -DFFT setting, e.g. -DFFT_FFTW, FFT compiler settings # PATH = path for FFT library # LIB = name of FFT library -FFT_INC = -FFT_PATH = -FFT_LIB = +FFT_INC = +FFT_PATH = +FFT_LIB = # JPEG and/or PNG library -# see discussion in Section 2.2 (step 7) of manual +# see discussion in Section 3.5.4 of manual # only needed if -DLAMMPS_JPEG or -DLAMMPS_PNG listed with LMP_INC # INC = path(s) for jpeglib.h and/or png.h # PATH = path(s) for JPEG library and/or PNG library # LIB = name(s) of JPEG library and/or PNG library -JPG_INC = -JPG_PATH = -JPG_LIB = +JPG_INC = +JPG_PATH = +JPG_LIB = # --------------------------------------------------------------------- # build rules and dependencies # do not edit this section -include Makefile.package.settings -include Makefile.package +include Makefile.package.settings +include Makefile.package EXTRA_INC = $(LMP_INC) $(PKG_INC) $(MPI_INC) $(FFT_INC) $(JPG_INC) $(PKG_SYSINC) EXTRA_PATH = $(PKG_PATH) $(MPI_PATH) $(FFT_PATH) $(JPG_PATH) $(PKG_SYSPATH) @@ -85,28 +85,26 @@ vpath %.h .. # Link target -$(EXE): $(OBJ) $(EXTRA_LINK_DEPENDS) - $(LINK) $(LINKFLAGS) $(EXTRA_PATH) $(OBJ) $(EXTRA_LIB) $(LIB) -o $(EXE) - $(SIZE) $(EXE) +$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) + $(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLINK) $(EXTRA_LIB) $(LIB) -o $@ + $(SIZE) $@ # Library targets -lib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(ARCHIVE) $(ARFLAGS) $(EXE) $(OBJ) +$(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) + @rm -f $(ARLIB) + @ln -s ../$(ARLIB) $(ARLIB) -shlib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o $(EXE) \ - $(OBJ) $(EXTRA_LIB) $(LIB) +$(SHLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o ../$(SHLIB) \ + $(OBJ) $(EXTRA_LIB) $(LIB) + @rm -f $(SHLIB) + @ln -s ../$(SHLIB) $(SHLIB) # Compilation rules -%.o:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< - -%.d:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(EXTRA_INC) $(DEPFLAGS) $< > $@ - -%.o:%.cu $(EXTRA_CPP_DEPENDS) +%.o:%.cpp $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< # Individual dependencies diff --git a/src/MAKE/OPTIONS/Makefile.omp b/src/MAKE/OPTIONS/Makefile.omp index fd485d5416..80afad79ae 100644 --- a/src/MAKE/OPTIONS/Makefile.omp +++ b/src/MAKE/OPTIONS/Makefile.omp @@ -26,12 +26,12 @@ SHLIBFLAGS = -shared # if you change any -D setting, do full re-compile after "make clean" # LAMMPS ifdef settings -# see possible settings in Section 2.2 (step 4) of manual +# see possible settings in Section 3.5 of the manual LMP_INC = -DLAMMPS_GZIP # MPI library -# see discussion in Section 2.2 (step 5) of manual +# see discussion in Section 3.4 of the manual # MPI wrapper compiler/linker can provide this info # can point to dummy MPI library in src/STUBS as in Makefile.serial # use -D MPICH and OMPI settings in INC to avoid C++ lib conflicts @@ -40,37 +40,37 @@ LMP_INC = -DLAMMPS_GZIP # LIB = name of MPI library MPI_INC = -DMPICH_SKIP_MPICXX -DOMPI_SKIP_MPICXX=1 -MPI_PATH = -MPI_LIB = +MPI_PATH = +MPI_LIB = # FFT library -# see discussion in Section 2.2 (step 6) of manual +# see discussion in Section 3.5.2 of manual # can be left blank to use provided KISS FFT library # INC = -DFFT setting, e.g. -DFFT_FFTW, FFT compiler settings # PATH = path for FFT library # LIB = name of FFT library -FFT_INC = -FFT_PATH = -FFT_LIB = +FFT_INC = +FFT_PATH = +FFT_LIB = # JPEG and/or PNG library -# see discussion in Section 2.2 (step 7) of manual +# see discussion in Section 3.5.4 of manual # only needed if -DLAMMPS_JPEG or -DLAMMPS_PNG listed with LMP_INC # INC = path(s) for jpeglib.h and/or png.h # PATH = path(s) for JPEG library and/or PNG library # LIB = name(s) of JPEG library and/or PNG library -JPG_INC = -JPG_PATH = -JPG_LIB = +JPG_INC = +JPG_PATH = +JPG_LIB = # --------------------------------------------------------------------- # build rules and dependencies # do not edit this section -include Makefile.package.settings -include Makefile.package +include Makefile.package.settings +include Makefile.package EXTRA_INC = $(LMP_INC) $(PKG_INC) $(MPI_INC) $(FFT_INC) $(JPG_INC) $(PKG_SYSINC) EXTRA_PATH = $(PKG_PATH) $(MPI_PATH) $(FFT_PATH) $(JPG_PATH) $(PKG_SYSPATH) @@ -85,28 +85,26 @@ vpath %.h .. # Link target -$(EXE): $(OBJ) $(EXTRA_LINK_DEPENDS) - $(LINK) $(LINKFLAGS) $(EXTRA_PATH) $(OBJ) $(EXTRA_LIB) $(LIB) -o $(EXE) - $(SIZE) $(EXE) +$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) + $(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLINK) $(EXTRA_LIB) $(LIB) -o $@ + $(SIZE) $@ # Library targets -lib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(ARCHIVE) $(ARFLAGS) $(EXE) $(OBJ) +$(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) + @rm -f $(ARLIB) + @ln -s ../$(ARLIB) $(ARLIB) -shlib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o $(EXE) \ - $(OBJ) $(EXTRA_LIB) $(LIB) +$(SHLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o ../$(SHLIB) \ + $(OBJ) $(EXTRA_LIB) $(LIB) + @rm -f $(SHLIB) + @ln -s ../$(SHLIB) $(SHLIB) # Compilation rules -%.o:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< - -%.d:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(EXTRA_INC) $(DEPFLAGS) $< > $@ - -%.o:%.cu $(EXTRA_CPP_DEPENDS) +%.o:%.cpp $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< # Individual dependencies diff --git a/src/MAKE/OPTIONS/Makefile.opt b/src/MAKE/OPTIONS/Makefile.opt index 29903565dc..662f25eee6 100644 --- a/src/MAKE/OPTIONS/Makefile.opt +++ b/src/MAKE/OPTIONS/Makefile.opt @@ -26,12 +26,12 @@ SHLIBFLAGS = -shared # if you change any -D setting, do full re-compile after "make clean" # LAMMPS ifdef settings -# see possible settings in Section 2.2 (step 4) of manual +# see possible settings in Section 3.5 of the manual LMP_INC = -DLAMMPS_GZIP # MPI library -# see discussion in Section 2.2 (step 5) of manual +# see discussion in Section 3.4 of the manual # MPI wrapper compiler/linker can provide this info # can point to dummy MPI library in src/STUBS as in Makefile.serial # use -D MPICH and OMPI settings in INC to avoid C++ lib conflicts @@ -40,37 +40,37 @@ LMP_INC = -DLAMMPS_GZIP # LIB = name of MPI library MPI_INC = -DMPICH_SKIP_MPICXX -DOMPI_SKIP_MPICXX=1 -MPI_PATH = -MPI_LIB = +MPI_PATH = +MPI_LIB = # FFT library -# see discussion in Section 2.2 (step 6) of manual +# see discussion in Section 3.5.2 of manual # can be left blank to use provided KISS FFT library # INC = -DFFT setting, e.g. -DFFT_FFTW, FFT compiler settings # PATH = path for FFT library # LIB = name of FFT library -FFT_INC = -FFT_PATH = -FFT_LIB = +FFT_INC = +FFT_PATH = +FFT_LIB = # JPEG and/or PNG library -# see discussion in Section 2.2 (step 7) of manual +# see discussion in Section 3.5.4 of manual # only needed if -DLAMMPS_JPEG or -DLAMMPS_PNG listed with LMP_INC # INC = path(s) for jpeglib.h and/or png.h # PATH = path(s) for JPEG library and/or PNG library # LIB = name(s) of JPEG library and/or PNG library -JPG_INC = -JPG_PATH = -JPG_LIB = +JPG_INC = +JPG_PATH = +JPG_LIB = # --------------------------------------------------------------------- # build rules and dependencies # do not edit this section -include Makefile.package.settings -include Makefile.package +include Makefile.package.settings +include Makefile.package EXTRA_INC = $(LMP_INC) $(PKG_INC) $(MPI_INC) $(FFT_INC) $(JPG_INC) $(PKG_SYSINC) EXTRA_PATH = $(PKG_PATH) $(MPI_PATH) $(FFT_PATH) $(JPG_PATH) $(PKG_SYSPATH) @@ -85,28 +85,26 @@ vpath %.h .. # Link target -$(EXE): $(OBJ) $(EXTRA_LINK_DEPENDS) - $(LINK) $(LINKFLAGS) $(EXTRA_PATH) $(OBJ) $(EXTRA_LIB) $(LIB) -o $(EXE) - $(SIZE) $(EXE) +$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) + $(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLINK) $(EXTRA_LIB) $(LIB) -o $@ + $(SIZE) $@ # Library targets -lib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(ARCHIVE) $(ARFLAGS) $(EXE) $(OBJ) +$(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) + @rm -f $(ARLIB) + @ln -s ../$(ARLIB) $(ARLIB) -shlib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o $(EXE) \ - $(OBJ) $(EXTRA_LIB) $(LIB) +$(SHLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o ../$(SHLIB) \ + $(OBJ) $(EXTRA_LIB) $(LIB) + @rm -f $(SHLIB) + @ln -s ../$(SHLIB) $(SHLIB) # Compilation rules -%.o:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< - -%.d:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(EXTRA_INC) $(DEPFLAGS) $< > $@ - -%.o:%.cu $(EXTRA_CPP_DEPENDS) +%.o:%.cpp $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< # Individual dependencies diff --git a/src/MAKE/OPTIONS/Makefile.pgi_mpich_link b/src/MAKE/OPTIONS/Makefile.pgi_mpich_link index 444a2ffc12..57101c55ae 100644 --- a/src/MAKE/OPTIONS/Makefile.pgi_mpich_link +++ b/src/MAKE/OPTIONS/Makefile.pgi_mpich_link @@ -26,12 +26,12 @@ SHLIBFLAGS = -shared # if you change any -D setting, do full re-compile after "make clean" # LAMMPS ifdef settings -# see possible settings in Section 2.2 (step 4) of manual +# see possible settings in Section 3.5 of the manual LMP_INC = -DLAMMPS_GZIP # MPI library -# see discussion in Section 2.2 (step 5) of manual +# see discussion in Section 3.4 of the manual # MPI wrapper compiler/linker can provide this info # can point to dummy MPI library in src/STUBS as in Makefile.serial # use -D MPICH and OMPI settings in INC to avoid C++ lib conflicts @@ -44,33 +44,33 @@ MPI_PATH = -L/usr/local/mpich-1.2.6/pg/lib MPI_LIB = -lmpich # FFT library -# see discussion in Section 2.2 (step 6) of manaul +# see discussion in Section 3.5.2 of manual # can be left blank to use provided KISS FFT library # INC = -DFFT setting, e.g. -DFFT_FFTW, FFT compiler settings # PATH = path for FFT library # LIB = name of FFT library -FFT_INC = -FFT_PATH = -FFT_LIB = +FFT_INC = +FFT_PATH = +FFT_LIB = # JPEG and/or PNG library -# see discussion in Section 2.2 (step 7) of manual +# see discussion in Section 3.5.4 of manual # only needed if -DLAMMPS_JPEG or -DLAMMPS_PNG listed with LMP_INC # INC = path(s) for jpeglib.h and/or png.h # PATH = path(s) for JPEG library and/or PNG library # LIB = name(s) of JPEG library and/or PNG library -JPG_INC = -JPG_PATH = -JPG_LIB = +JPG_INC = +JPG_PATH = +JPG_LIB = # --------------------------------------------------------------------- # build rules and dependencies # do not edit this section -include Makefile.package.settings -include Makefile.package +include Makefile.package.settings +include Makefile.package EXTRA_INC = $(LMP_INC) $(PKG_INC) $(MPI_INC) $(FFT_INC) $(JPG_INC) $(PKG_SYSINC) EXTRA_PATH = $(PKG_PATH) $(MPI_PATH) $(FFT_PATH) $(JPG_PATH) $(PKG_SYSPATH) @@ -85,28 +85,26 @@ vpath %.h .. # Link target -$(EXE): $(OBJ) $(EXTRA_LINK_DEPENDS) - $(LINK) $(LINKFLAGS) $(EXTRA_PATH) $(OBJ) $(EXTRA_LIB) $(LIB) -o $(EXE) - $(SIZE) $(EXE) +$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) + $(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLINK) $(EXTRA_LIB) $(LIB) -o $@ + $(SIZE) $@ # Library targets -lib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(ARCHIVE) $(ARFLAGS) $(EXE) $(OBJ) +$(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) + @rm -f $(ARLIB) + @ln -s ../$(ARLIB) $(ARLIB) -shlib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o $(EXE) \ - $(OBJ) $(EXTRA_LIB) $(LIB) +$(SHLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o ../$(SHLIB) \ + $(OBJ) $(EXTRA_LIB) $(LIB) + @rm -f $(SHLIB) + @ln -s ../$(SHLIB) $(SHLIB) # Compilation rules -%.o:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< - -%.d:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(EXTRA_INC) $(DEPFLAGS) $< > $@ - -%.o:%.cu $(EXTRA_CPP_DEPENDS) +%.o:%.cpp $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< # Individual dependencies diff --git a/src/MAKE/OPTIONS/Makefile.png b/src/MAKE/OPTIONS/Makefile.png index 34b54dfb93..442dddeb66 100644 --- a/src/MAKE/OPTIONS/Makefile.png +++ b/src/MAKE/OPTIONS/Makefile.png @@ -26,12 +26,12 @@ SHLIBFLAGS = -shared # if you change any -D setting, do full re-compile after "make clean" # LAMMPS ifdef settings -# see possible settings in Section 2.2 (step 4) of manual +# see possible settings in Section 3.5 of the manual LMP_INC = -DLAMMPS_GZIP -DLAMMPS_PNG # MPI library -# see discussion in Section 2.2 (step 5) of manual +# see discussion in Section 3.4 of the manual # MPI wrapper compiler/linker can provide this info # can point to dummy MPI library in src/STUBS as in Makefile.serial # use -D MPICH and OMPI settings in INC to avoid C++ lib conflicts @@ -40,11 +40,11 @@ LMP_INC = -DLAMMPS_GZIP -DLAMMPS_PNG # LIB = name of MPI library MPI_INC = -DMPICH_SKIP_MPICXX -DOMPI_SKIP_MPICXX=1 -MPI_PATH = -MPI_LIB = +MPI_PATH = +MPI_LIB = # FFT library -# see discussion in Section 2.2 (step 6) of manual +# see discussion in Section 3.5.2 of manual # can be left blank to use provided KISS FFT library # INC = -DFFT setting, e.g. -DFFT_FFTW, FFT compiler settings # PATH = path for FFT library @@ -55,7 +55,7 @@ FFT_PATH = FFT_LIB = # JPEG and/or PNG library -# see discussion in Section 2.2 (step 7) of manual +# see discussion in Section 3.5.4 of manual # only needed if -DLAMMPS_JPEG or -DLAMMPS_PNG listed with LMP_INC # INC = path(s) for jpeglib.h and/or png.h # PATH = path(s) for JPEG library and/or PNG library @@ -69,8 +69,8 @@ JPG_LIB = -lpng # build rules and dependencies # do not edit this section -include Makefile.package.settings -include Makefile.package +include Makefile.package.settings +include Makefile.package EXTRA_INC = $(LMP_INC) $(PKG_INC) $(MPI_INC) $(FFT_INC) $(JPG_INC) $(PKG_SYSINC) EXTRA_PATH = $(PKG_PATH) $(MPI_PATH) $(FFT_PATH) $(JPG_PATH) $(PKG_SYSPATH) @@ -85,28 +85,26 @@ vpath %.h .. # Link target -$(EXE): $(OBJ) $(EXTRA_LINK_DEPENDS) - $(LINK) $(LINKFLAGS) $(EXTRA_PATH) $(OBJ) $(EXTRA_LIB) $(LIB) -o $(EXE) - $(SIZE) $(EXE) +$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) + $(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLINK) $(EXTRA_LIB) $(LIB) -o $@ + $(SIZE) $@ # Library targets -lib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(ARCHIVE) $(ARFLAGS) $(EXE) $(OBJ) +$(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) + @rm -f $(ARLIB) + @ln -s ../$(ARLIB) $(ARLIB) -shlib: $(OBJ) $(EXTRA_LINK_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o $(EXE) \ - $(OBJ) $(EXTRA_LIB) $(LIB) +$(SHLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o ../$(SHLIB) \ + $(OBJ) $(EXTRA_LIB) $(LIB) + @rm -f $(SHLIB) + @ln -s ../$(SHLIB) $(SHLIB) # Compilation rules -%.o:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< - -%.d:%.cpp $(EXTRA_CPP_DEPENDS) - $(CC) $(CCFLAGS) $(EXTRA_INC) $(DEPFLAGS) $< > $@ - -%.o:%.cu $(EXTRA_CPP_DEPENDS) +%.o:%.cpp $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< # Individual dependencies diff --git a/src/Makefile b/src/Makefile index d111636ee3..a78068e092 100644 --- a/src/Makefile +++ b/src/Makefile @@ -217,14 +217,14 @@ ifeq ($(mode),static) @cd $(objdir); \ $(MAKE) $(MFLAGS) "OBJ = $(OBJLIB)" "INC = $(INC)" "SHFLAGS =" \ "LMPLIB = $(ARLIB)" "ARLIB = $(ARLIB)" "SHLIB = $(SHLIB)" \ - "LMPLINK = $(LMPLINK)" "EXE = $(EXE)" ../$(EXE) + "LMPLINK = $(LMPLINK)" "EXE = ../$(EXE)" ../$(EXE) @ln -s $(ARLIB) $(ARLINK) endif ifeq ($(mode),shared) @cd $(objdir); \ $(MAKE) $(MFLAGS) "OBJ = $(OBJLIB)" "INC = $(INC)" \ "LMPLIB = $(SHLIB)" "ARLIB = $(ARLIB)" "SHLIB = $(SHLIB)" \ - "LMPLINK = $(LMPLINK)" "EXE = $(EXE)" ../$(EXE) + "LMPLINK = $(LMPLINK)" "EXE = ../$(EXE)" ../$(EXE) @ln -s $(SHLIB) $(SHLINK) endif # backward compatibility -- GitLab From bca64306ed525d884d1e5408daae6ba0f0a44a5b Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 9 Apr 2020 18:06:05 -0400 Subject: [PATCH 231/717] avoid spellchecker issue --- doc/src/Build_basics.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/src/Build_basics.rst b/doc/src/Build_basics.rst index 8a81836614..692c779438 100644 --- a/doc/src/Build_basics.rst +++ b/doc/src/Build_basics.rst @@ -57,7 +57,7 @@ The build with traditional makefiles has to be done inside the source folder ``s Any ``make machine`` command will look up the make settings from a file ``Makefile.machine`` in the folder ``src/MAKE`` or one of its -subdirectories ``MINE``, ``MACHINES``, or ``OPTIONS``, create a folder +sub-directories ``MINE``, ``MACHINES``, or ``OPTIONS``, create a folder ``Obj_machine`` with all objects and generated files and an executable called ``lmp_machine``\ . The standard parallel build with ``make mpi`` assumes a standard MPI installation with MPI compiler wrappers where all -- GitLab From 284c67a0f6c4f6689a74fac4687e6f873d9f6896 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 9 Apr 2020 21:20:17 -0400 Subject: [PATCH 232/717] partial update of the new kokkos docs --- doc/src/Build_extras.rst | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/doc/src/Build_extras.rst b/doc/src/Build_extras.rst index 45c876d84a..87f7021a57 100644 --- a/doc/src/Build_extras.rst +++ b/doc/src/Build_extras.rst @@ -286,9 +286,10 @@ build for, either CPUs (multi-threading via OpenMP) or KNLs (OpenMP) or GPUs (NVIDIA Cuda). For a CMake or make build, these are the possible choices for the -``KOKKOS_ARCH`` settings described below. Note that for CMake, these are -really Kokkos variables, not LAMMPS variables. Hence you must use -case-sensitive values, e.g. BDW, not bdw. +``Kokkos_ARCH_`` settings described below. Note that for CMake, +these are really Kokkos variables, not LAMMPS variables. Hence you +must use case-sensitive variable names, i.e. ``Kokkos_ARCH_BDW`` +and **NOT** ``KOKKOS_ARCH_BDW`` or ``Kokkos_arch_bdw`` and so on. * AMDAVX = AMD 64-bit x86 CPUs * EPYC = AMD EPYC Zen class CPUs @@ -328,25 +329,25 @@ For multicore CPUs using OpenMP, set these 2 variables. .. code-block:: bash - -D KOKKOS_ARCH=archCPU # archCPU = CPU from list above - -D KOKKOS_ENABLE_OPENMP=yes + -D Kokkos_ARCH_=yes # = CPU from list above + -D Kokkos_ENABLE_OPENMP=yes For Intel KNLs using OpenMP, set these 2 variables: .. code-block:: bash - -D KOKKOS_ARCH=KNL - -D KOKKOS_ENABLE_OPENMP=yes + -D Kokkos_ARCH_KNL=yes + -D Kokkos_ENABLE_OPENMP=yes For NVIDIA GPUs using CUDA, set these 4 variables: .. code-block:: bash - -D KOKKOS_ARCH="archCPU;archGPU" # archCPU = CPU from list above that is hosting the GPU - # archGPU = GPU from list above - -D KOKKOS_ENABLE_CUDA=yes - -D KOKKOS_ENABLE_OPENMP=yes - -D CMAKE_CXX_COMPILER=wrapper # wrapper = full path to Cuda nvcc wrapper + -D Kokkos_ARCH_=yes # = CPU from list above that is hosting the GPU + -D Kokkos_ARCH_=yes # = GPU from list above + -D Kokkos_ENABLE_CUDA=yes + -D Kokkos_ENABLE_OPENMP=yes + -D CMAKE_CXX_COMPILER=wrapper # wrapper = full path to Cuda nvcc wrapper The wrapper value is the Cuda nvcc compiler wrapper provided in the Kokkos library: ``lib/kokkos/bin/nvcc_wrapper``\ . The setting should -- GitLab From 2becc27aa40f03aef8be83a33c49bebd6323372b Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 9 Apr 2020 21:24:00 -0400 Subject: [PATCH 233/717] remove a few more BUILD_LIB uses --- cmake/Modules/Packages/KIM.cmake | 2 +- cmake/Modules/Packages/KOKKOS.cmake | 2 +- cmake/Modules/Packages/LATTE.cmake | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/cmake/Modules/Packages/KIM.cmake b/cmake/Modules/Packages/KIM.cmake index 3734e10982..b4e1fb3502 100644 --- a/cmake/Modules/Packages/KIM.cmake +++ b/cmake/Modules/Packages/KIM.cmake @@ -51,7 +51,7 @@ if(DOWNLOAD_KIM) INTERFACE_INCLUDE_DIRECTORIES "${INSTALL_DIR}/include/kim-api") target_link_libraries(lammps PRIVATE LAMMPS::KIM) add_dependencies(LAMMPS::KIM kim_build) - if(BUILD_LIB AND NOT BUILD_SHARED_LIBS) + if(NOT BUILD_SHARED_LIBS) install(CODE "MESSAGE(FATAL_ERROR \"Installing liblammps with downloaded libraries is currently not supported.\")") endif() else() diff --git a/cmake/Modules/Packages/KOKKOS.cmake b/cmake/Modules/Packages/KOKKOS.cmake index e43fe2f596..a9806a6e88 100644 --- a/cmake/Modules/Packages/KOKKOS.cmake +++ b/cmake/Modules/Packages/KOKKOS.cmake @@ -22,7 +22,7 @@ if(DOWNLOAD_KOKKOS) INTERFACE_LINK_LIBRARIES ${CMAKE_DL_LIBS}) target_link_libraries(lammps PRIVATE LAMMPS::KOKKOS) add_dependencies(LAMMPS::KOKKOS kokkos_build) - if(BUILD_LIB AND NOT BUILD_SHARED_LIBS) + if(NOT BUILD_SHARED_LIBS) install(CODE "MESSAGE(FATAL_ERROR \"Installing liblammps with downloaded libraries is currently not supported.\")") endif() elseif(EXTERNAL_KOKKOS) diff --git a/cmake/Modules/Packages/LATTE.cmake b/cmake/Modules/Packages/LATTE.cmake index 4279b5597f..4ce8888f37 100644 --- a/cmake/Modules/Packages/LATTE.cmake +++ b/cmake/Modules/Packages/LATTE.cmake @@ -27,7 +27,7 @@ if(DOWNLOAD_LATTE) INTERFACE_LINK_LIBRARIES "${LAPACK_LIBRARIES}") target_link_libraries(lammps PRIVATE LAMMPS::LATTE) add_dependencies(LAMMPS::LATTE latte_build) - if(BUILD_LIB AND NOT BUILD_SHARED_LIBS) + if(NOT BUILD_SHARED_LIBS) install(CODE "MESSAGE(FATAL_ERROR \"Installing liblammps with downloaded libraries is currently not supported.\")") endif() else() -- GitLab From 7c8be1a411734dddb8327a16987753042bca9e3f Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 9 Apr 2020 21:47:47 -0400 Subject: [PATCH 234/717] update instructions in Python doc section --- doc/src/Python_shlib.rst | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/doc/src/Python_shlib.rst b/doc/src/Python_shlib.rst index 87820f4771..b02fcd7bb8 100644 --- a/doc/src/Python_shlib.rst +++ b/doc/src/Python_shlib.rst @@ -16,7 +16,7 @@ From the src directory, type .. code-block:: bash - make foo mode=shlib + make foo mode=shared where foo is the machine target name, such as mpi or serial. This should create the file liblammps_foo.so in the src directory, as @@ -41,7 +41,6 @@ shared library: .. code-block:: bash - -D BUILD_LIB=on # enable building LAMMPS as a library -D BUILD_SHARED_LIBS=on # enable building of LAMMPS shared library (both options are needed!) What this does is create a liblammps.so which contains the majority of LAMMPS @@ -61,7 +60,7 @@ CMAKE_INSTALL_PREFIX. # build library mkdir build cd build - cmake -D PKG_PYTHON=on -D BUILD_LIB=on -D BUILD_SHARED_LIBS=on -D CMAKE_INSTALL_PREFIX=$VIRTUAL_ENV ../cmake + cmake -D PKG_PYTHON=on -D BUILD_SHARED_LIBS=on -D CMAKE_INSTALL_PREFIX=$VIRTUAL_ENV ../cmake make -j 4 # install into prefix -- GitLab From e39faf4f480035ba59a2b4c490b4f4129b948760 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 9 Apr 2020 22:30:48 -0400 Subject: [PATCH 235/717] handle change in capitalization of Kokkos variables after upgrade to v3.0 --- cmake/CMakeLists.txt | 2 +- cmake/Modules/Packages/KOKKOS.cmake | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index b26689dd1f..40f9a61a22 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -753,7 +753,7 @@ if(PKG_KSPACE) message(STATUS "Using non-threaded FFTs") endif() if(PKG_KOKKOS) - if(KOKKOS_ENABLE_CUDA) + if(Kokkos_ENABLE_CUDA) if (${FFT} STREQUAL "KISS") message(STATUS "Kokkos FFT: KISS") else() diff --git a/cmake/Modules/Packages/KOKKOS.cmake b/cmake/Modules/Packages/KOKKOS.cmake index d2b8f19167..4881ad3f2f 100644 --- a/cmake/Modules/Packages/KOKKOS.cmake +++ b/cmake/Modules/Packages/KOKKOS.cmake @@ -64,7 +64,7 @@ if(PKG_KSPACE) list(APPEND KOKKOS_PKG_SOURCES ${KOKKOS_PKG_SOURCES_DIR}/fft3d_kokkos.cpp ${KOKKOS_PKG_SOURCES_DIR}/gridcomm_kokkos.cpp ${KOKKOS_PKG_SOURCES_DIR}/remap_kokkos.cpp) - if(KOKKOS_ENABLE_CUDA) + if(Kokkos_ENABLE_CUDA) if(NOT ${FFT} STREQUAL "KISS") target_compile_definitions(lammps PRIVATE -DFFT_CUFFT) target_link_libraries(lammps PRIVATE cufft) -- GitLab From 469a4f15b78397e568fbc9042195547dbc47636f Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 9 Apr 2020 22:51:52 -0400 Subject: [PATCH 236/717] some tweaks to simplify building the KOKKOS package and to enforce consistent behavior --- cmake/CMakeLists.txt | 8 ++++++++ cmake/Modules/Packages/KOKKOS.cmake | 4 ++++ 2 files changed, 12 insertions(+) diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index 40f9a61a22..a7c3c07841 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -123,6 +123,10 @@ else() endif() add_executable(lammps ${ALL_SOURCES}) set_target_properties(lammps PROPERTIES OUTPUT_NAME ${LAMMPS_BINARY}) + if(Kokkos_ENABLE_CUDA) + # The Kokkos nvcc wrapper does not like -std=gnu++11 and wants -std=c++11 + set_target_properties(lammps PROPERTIES CXX_EXTENSIONS OFF) + endif() install(TARGETS lammps DESTINATION ${CMAKE_INSTALL_BINDIR}) endif() @@ -257,6 +261,10 @@ if(BUILD_OMP) message(FATAL_ERROR "Cannot find the 'omp.h' header file required for full OpenMP support") endif() target_link_libraries(lammps PRIVATE OpenMP::OpenMP_CXX) +else() + if(Kokkos_ENABLE_OPENMP) + message(FATAL_ERROR "Must enable BUILD_OMP with Kokkos_ENABLE_OPENMP") + endif() endif() if(PKG_MSCG OR PKG_USER-ATC OR PKG_USER-AWPMD OR PKG_USER-QUIP OR PKG_LATTE) diff --git a/cmake/Modules/Packages/KOKKOS.cmake b/cmake/Modules/Packages/KOKKOS.cmake index 4881ad3f2f..f224a565e4 100644 --- a/cmake/Modules/Packages/KOKKOS.cmake +++ b/cmake/Modules/Packages/KOKKOS.cmake @@ -31,6 +31,10 @@ elseif(EXTERNAL_KOKKOS) else() set(LAMMPS_LIB_KOKKOS_SRC_DIR ${LAMMPS_LIB_SOURCE_DIR}/kokkos) set(LAMMPS_LIB_KOKKOS_BIN_DIR ${LAMMPS_LIB_BINARY_DIR}/kokkos) + # enforce using nvcc_wrapper as compiler wrapper + if(Kokkos_ENABLE_CUDA) + set(CMAKE_CXX_COMPILER ${LAMMPS_LIB_KOKKOS_SRC_DIR}/bin/nvcc_wrapper CACHE FILEPATH "Path to nvcc wrapper for Kokkos with CUDA" FORCE) + endif() add_subdirectory(${LAMMPS_LIB_KOKKOS_SRC_DIR} ${LAMMPS_LIB_KOKKOS_BIN_DIR}) set(Kokkos_INCLUDE_DIRS ${LAMMPS_LIB_KOKKOS_SRC_DIR}/core/src -- GitLab From c83dfd2b22f4fb40eb89aed76ab8c09b3a39d0b3 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 9 Apr 2020 22:52:25 -0400 Subject: [PATCH 237/717] update list of supported Kokkos_ARCH suffixes. convert to table. --- doc/src/Build_extras.rst | 95 +++++++++++++++++++++++++++------------- 1 file changed, 64 insertions(+), 31 deletions(-) diff --git a/doc/src/Build_extras.rst b/doc/src/Build_extras.rst index 87f7021a57..2cb4acf2db 100644 --- a/doc/src/Build_extras.rst +++ b/doc/src/Build_extras.rst @@ -291,37 +291,70 @@ these are really Kokkos variables, not LAMMPS variables. Hence you must use case-sensitive variable names, i.e. ``Kokkos_ARCH_BDW`` and **NOT** ``KOKKOS_ARCH_BDW`` or ``Kokkos_arch_bdw`` and so on. -* AMDAVX = AMD 64-bit x86 CPUs -* EPYC = AMD EPYC Zen class CPUs -* ARMv80 = ARMv8.0 Compatible CPU -* ARMv81 = ARMv8.1 Compatible CPU -* ARMv8-ThunderX = ARMv8 Cavium ThunderX CPU -* ARMv8-TX2 = ARMv8 Cavium ThunderX2 CPU -* WSM = Intel Westmere CPUs -* SNB = Intel Sandy/Ivy Bridge CPUs -* HSW = Intel Haswell CPUs -* BDW = Intel Broadwell Xeon E-class CPUs -* SKX = Intel Sky Lake Xeon E-class HPC CPUs (AVX512) -* KNC = Intel Knights Corner Xeon Phi -* KNL = Intel Knights Landing Xeon Phi -* BGQ = IBM Blue Gene/Q CPUs -* Power7 = IBM POWER8 CPUs -* Power8 = IBM POWER8 CPUs -* Power9 = IBM POWER9 CPUs -* Kepler = NVIDIA Kepler default (generation CC 3.5) -* Kepler30 = NVIDIA Kepler generation CC 3.0 -* Kepler32 = NVIDIA Kepler generation CC 3.2 -* Kepler35 = NVIDIA Kepler generation CC 3.5 -* Kepler37 = NVIDIA Kepler generation CC 3.7 -* Maxwell = NVIDIA Maxwell default (generation CC 5.0) -* Maxwell50 = NVIDIA Maxwell generation CC 5.0 -* Maxwell52 = NVIDIA Maxwell generation CC 5.2 -* Maxwell53 = NVIDIA Maxwell generation CC 5.3 -* Pascal60 = NVIDIA Pascal generation CC 6.0 -* Pascal61 = NVIDIA Pascal generation CC 6.1 -* Volta70 = NVIDIA Volta generation CC 7.0 -* Volta72 = NVIDIA Volta generation CC 7.2 -* Turing75 = NVIDIA Turing generation CC 7.5 +.. list-table:: + :header-rows: 1 + :widths: auto + + * - Arch + - Description + * - AMDAVX + - AMD 64-bit x86 CPUs + * - EPYC + - AMD EPYC Zen class CPUs + * - ARMV80 + - ARMv8.0 Compatible CPU + * - ARMV81 + - ARMv8.1 Compatible CPU + * - ARMV8_THUNDERX + - ARMv8 Cavium ThunderX CPU + * - ARMV8_THUNDERX2 + - ARMv8 Cavium ThunderX2 CPU + * - WSM + - Intel Westmere CPUs + * - SNB + - Intel Sandy/Ivy Bridge CPUs + * - HSW + - Intel Haswell CPUs + * - BDW + - Intel Broadwell Xeon E-class CPUs + * - SKX + - Intel Sky Lake Xeon E-class HPC CPUs (AVX512) + * - KNC + - Intel Knights Corner Xeon Phi + * - KNL + - Intel Knights Landing Xeon Phi + * - BGQ + - IBM Blue Gene/Q CPUs + * - POWER7 + - IBM POWER8 CPUs + * - POWER8 + - IBM POWER8 CPUs + * - POWER9 + - IBM POWER9 CPUs + * - KEPLER30 + - NVIDIA Kepler generation CC 3.0 + * - KEPLER32 + - NVIDIA Kepler generation CC 3.2 + * - KEPLER35 + - NVIDIA Kepler generation CC 3.5 + * - KEPLER37 + - NVIDIA Kepler generation CC 3.7 + * - MAXWELL50 + - NVIDIA Maxwell generation CC 5.0 + * - MAXWELL52 + - NVIDIA Maxwell generation CC 5.2 + * - MAXWELL53 + - NVIDIA Maxwell generation CC 5.3 + * - PASCAL60 + - NVIDIA Pascal generation CC 6.0 + * - PASCAL61 + - NVIDIA Pascal generation CC 6.1 + * - VOLTA70 + - NVIDIA Volta generation CC 7.0 + * - VOLTA72 + - NVIDIA Volta generation CC 7.2 + * - TURING75 + - NVIDIA Turing generation CC 7.5 **CMake build**\ : -- GitLab From 28379e145f5c8f06ff1f15cc6651136b64e169d4 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 10 Apr 2020 12:16:24 -0400 Subject: [PATCH 238/717] set using C++11 w/o extensions globally. move KOKKOS only checks to KOKKOS.cmake --- cmake/CMakeLists.txt | 11 ++--------- cmake/Modules/Packages/KOKKOS.cmake | 16 ++++++++++++---- 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index a7c3c07841..16e09af077 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -64,9 +64,10 @@ if(${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang") set(CMAKE_TUNE_DEFAULT "-ffast-math -march=native") endif() -# we require C++11 +# we require C++11 without extensions set(CMAKE_CXX_STANDARD 11) set(CMAKE_CXX_STANDARD_REQUIRED ON) +set(CMAKE_CXX_EXTENSIONS OFF) # GNU compiler specific features for testing if (${CMAKE_CXX_COMPILER_ID} STREQUAL "GNU") @@ -123,10 +124,6 @@ else() endif() add_executable(lammps ${ALL_SOURCES}) set_target_properties(lammps PROPERTIES OUTPUT_NAME ${LAMMPS_BINARY}) - if(Kokkos_ENABLE_CUDA) - # The Kokkos nvcc wrapper does not like -std=gnu++11 and wants -std=c++11 - set_target_properties(lammps PROPERTIES CXX_EXTENSIONS OFF) - endif() install(TARGETS lammps DESTINATION ${CMAKE_INSTALL_BINDIR}) endif() @@ -261,10 +258,6 @@ if(BUILD_OMP) message(FATAL_ERROR "Cannot find the 'omp.h' header file required for full OpenMP support") endif() target_link_libraries(lammps PRIVATE OpenMP::OpenMP_CXX) -else() - if(Kokkos_ENABLE_OPENMP) - message(FATAL_ERROR "Must enable BUILD_OMP with Kokkos_ENABLE_OPENMP") - endif() endif() if(PKG_MSCG OR PKG_USER-ATC OR PKG_USER-AWPMD OR PKG_USER-QUIP OR PKG_LATTE) diff --git a/cmake/Modules/Packages/KOKKOS.cmake b/cmake/Modules/Packages/KOKKOS.cmake index f224a565e4..9d9ef9f6cb 100644 --- a/cmake/Modules/Packages/KOKKOS.cmake +++ b/cmake/Modules/Packages/KOKKOS.cmake @@ -1,3 +1,15 @@ +######################################################################## +# consistency checks and Kokkos options/settings required by LAMMPS +if(Kokkos_ENABLE_CUDA) + set(Kokkos_ENABLE_CUDA_LAMBDA ON) +endif() +# Adding OpenMP compiler flags without the checks done for +# BUILD_OMP can result in compile failures. Enforce consistency. +if(Kokkos_ENABLE_OPENMP AND NOT BUILD_OMP) + message(FATAL_ERROR "Must enable BUILD_OMP with Kokkos_ENABLE_OPENMP") +endif() +######################################################################## + option(EXTERNAL_KOKKOS "Build against external kokkos library" OFF) option(DOWNLOAD_KOKKOS "Download the KOKKOS library instead of using the bundled one" OFF) if(DOWNLOAD_KOKKOS) @@ -31,10 +43,6 @@ elseif(EXTERNAL_KOKKOS) else() set(LAMMPS_LIB_KOKKOS_SRC_DIR ${LAMMPS_LIB_SOURCE_DIR}/kokkos) set(LAMMPS_LIB_KOKKOS_BIN_DIR ${LAMMPS_LIB_BINARY_DIR}/kokkos) - # enforce using nvcc_wrapper as compiler wrapper - if(Kokkos_ENABLE_CUDA) - set(CMAKE_CXX_COMPILER ${LAMMPS_LIB_KOKKOS_SRC_DIR}/bin/nvcc_wrapper CACHE FILEPATH "Path to nvcc wrapper for Kokkos with CUDA" FORCE) - endif() add_subdirectory(${LAMMPS_LIB_KOKKOS_SRC_DIR} ${LAMMPS_LIB_KOKKOS_BIN_DIR}) set(Kokkos_INCLUDE_DIRS ${LAMMPS_LIB_KOKKOS_SRC_DIR}/core/src -- GitLab From df2ddcc98a316923228d583cecd90b0ea7951a99 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 10 Apr 2020 12:16:56 -0400 Subject: [PATCH 239/717] provide 3 presets for KOKKOS compilation: serial, openmp, cuda --- cmake/presets/kokkos-cuda.cmake | 9 +++++++++ cmake/presets/kokkos-openmp.cmake | 6 ++++++ cmake/presets/kokkos-serial.cmake | 5 +++++ 3 files changed, 20 insertions(+) create mode 100644 cmake/presets/kokkos-cuda.cmake create mode 100644 cmake/presets/kokkos-openmp.cmake create mode 100644 cmake/presets/kokkos-serial.cmake diff --git a/cmake/presets/kokkos-cuda.cmake b/cmake/presets/kokkos-cuda.cmake new file mode 100644 index 0000000000..8195e0f090 --- /dev/null +++ b/cmake/presets/kokkos-cuda.cmake @@ -0,0 +1,9 @@ +# preset that enables KOKKOS and selects CUDA compilation with OpenMP enabled as well + +set(PKG_KOKKOS ON CACHE BOOL "" FORCE) +set(Kokkos_ENABLE_SERIAL ON CACHE BOOL "" FORCE) +set(Kokkos_ENABLE_OPENMP ON CACHE BOOL "" FORCE) +set(Kokkos_ENABLE_CUDA ON CACHE BOOL "" FORCE) +set(BUILD_OMP ON CACHE BOOL "" FORCE) +get_filename_component(NVCC_WRAPPER_CMD ${CMAKE_CURRENT_SOURCE_DIR}/../lib/kokkos/bin/nvcc_wrapper ABSOLUTE) +set(CMAKE_CXX_COMPILER ${NVCC_WRAPPER_CMD} CACHE FILEPATH "" FORCE) diff --git a/cmake/presets/kokkos-openmp.cmake b/cmake/presets/kokkos-openmp.cmake new file mode 100644 index 0000000000..27d09f62cf --- /dev/null +++ b/cmake/presets/kokkos-openmp.cmake @@ -0,0 +1,6 @@ +# preset that enables KOKKOS and selects OpenMP (only) compilation +set(PKG_KOKKOS ON CACHE BOOL "" FORCE) +set(Kokkos_ENABLE_SERIAL ON CACHE BOOL "" FORCE) +set(Kokkos_ENABLE_OPENMP ON CACHE BOOL "" FORCE) +set(Kokkos_ENABLE_CUDA OFF CACHE BOOL "" FORCE) +set(BUILD_OMP ON CACHE BOOL "" FORCE) diff --git a/cmake/presets/kokkos-serial.cmake b/cmake/presets/kokkos-serial.cmake new file mode 100644 index 0000000000..0208d2ee3a --- /dev/null +++ b/cmake/presets/kokkos-serial.cmake @@ -0,0 +1,5 @@ +# preset that enables KOKKOS and selects serial compilation only +set(PKG_KOKKOS ON CACHE BOOL "" FORCE) +set(Kokkos_ENABLE_SERIAL ON CACHE BOOL "" FORCE) +set(Kokkos_ENABLE_OPENMP OFF CACHE BOOL "" FORCE) +set(Kokkos_ENABLE_CUDA OFF CACHE BOOL "" FORCE) -- GitLab From b7a2b375c60cb75c4ed51deb139a89d345eeb954 Mon Sep 17 00:00:00 2001 From: Richard Berger Date: Fri, 10 Apr 2020 12:45:39 -0400 Subject: [PATCH 240/717] Add includes and linked libs for HIP_PLATFORM=nvcc Do not set CMAKE_CXX_COMPILER=hipcc in the NVCC case since it causes all sorts of problems. Instead we use the regular host compiler and set the necessary include and link paths. --- cmake/Modules/Packages/GPU.cmake | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/cmake/Modules/Packages/GPU.cmake b/cmake/Modules/Packages/GPU.cmake index b904c8754b..d9bc5fd489 100644 --- a/cmake/Modules/Packages/GPU.cmake +++ b/cmake/Modules/Packages/GPU.cmake @@ -214,9 +214,8 @@ elseif(GPU_API STREQUAL "HIP") find_package(CUDA REQUIRED) set(HIP_ARCH "sm_30" CACHE STRING "HIP primary CUDA architecture (e.g. sm_60)") - # build arch/gencode commands for nvcc based on CUDA toolkit version and use choice - # --arch translates directly instead of JIT, so this should be for the preferred or most common architecture - set(HIP_CUDA_GENCODE "-arch=${HIP_ARCH} ") + # build gencode commands for nvcc based on CUDA toolkit version and use choice + set(HIP_CUDA_GENCODE "") # Fermi (GPU Arch 2.x) is supported by CUDA 3.2 to CUDA 8.0 if((CUDA_VERSION VERSION_GREATER "3.1") AND (CUDA_VERSION VERSION_LESS "9.0")) string(APPEND HIP_CUDA_GENCODE "-gencode arch=compute_20,code=[sm_20,compute_20] ") @@ -287,6 +286,18 @@ elseif(GPU_API STREQUAL "HIP") hip_add_executable(hip_get_devices ${LAMMPS_LIB_SOURCE_DIR}/gpu/geryon/ucl_get_devices.cpp) target_compile_definitions(hip_get_devices PRIVATE -DUCL_HIP) + if(HIP_PLATFORM STREQUAL "nvcc") + target_compile_definitions(gpu PRIVATE -D__HIP_PLATFORM_NVCC__) + target_include_directories(gpu PRIVATE ${HIP_ROOT_DIR}/include) + target_include_directories(gpu PRIVATE ${CUDA_INCLUDE_DIRS}) + target_link_libraries(gpu PRIVATE ${CUDA_LIBRARIES} ${CUDA_CUDA_LIBRARY}) + + target_compile_definitions(hip_get_devices PRIVATE -D__HIP_PLATFORM_NVCC__) + target_include_directories(hip_get_devices PRIVATE ${HIP_ROOT_DIR}/include) + target_include_directories(hip_get_devices PRIVATE ${CUDA_INCLUDE_DIRS}) + target_link_libraries(hip_get_devices PRIVATE ${CUDA_LIBRARIES} ${CUDA_CUDA_LIBRARY}) + endif() + target_link_libraries(lammps PRIVATE gpu) endif() -- GitLab From 195e453d1751ac389a7c36cd693237337e76eeb6 Mon Sep 17 00:00:00 2001 From: Richard Berger Date: Fri, 10 Apr 2020 14:24:26 -0400 Subject: [PATCH 241/717] Add HIP configuration output --- cmake/CMakeLists.txt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index b26689dd1f..ae61a7e5f3 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -733,6 +733,9 @@ if(PKG_GPU) message(STATUS "GPU architecture: ${GPU_ARCH}") elseif(GPU_API STREQUAL "OPENCL") message(STATUS "OpenCL tuning: ${OCL_TUNE}") + elseif(GPU_API STREQUAL "HIP") + message(STATUS "HIP platform: ${HIP_PLATFORM}") + message(STATUS "HIP architecture: ${HIP_ARCH}") endif() message(STATUS "GPU precision: ${GPU_PREC}") endif() -- GitLab From 4f8a1583b909d8f87b7131657ed71cb22cc91b3c Mon Sep 17 00:00:00 2001 From: Richard Berger Date: Fri, 10 Apr 2020 14:25:46 -0400 Subject: [PATCH 242/717] Restore --arch line removed during debugging --- cmake/Modules/Packages/GPU.cmake | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/cmake/Modules/Packages/GPU.cmake b/cmake/Modules/Packages/GPU.cmake index d9bc5fd489..317a698e37 100644 --- a/cmake/Modules/Packages/GPU.cmake +++ b/cmake/Modules/Packages/GPU.cmake @@ -214,8 +214,9 @@ elseif(GPU_API STREQUAL "HIP") find_package(CUDA REQUIRED) set(HIP_ARCH "sm_30" CACHE STRING "HIP primary CUDA architecture (e.g. sm_60)") - # build gencode commands for nvcc based on CUDA toolkit version and use choice - set(HIP_CUDA_GENCODE "") + # build arch/gencode commands for nvcc based on CUDA toolkit version and use choice + # --arch translates directly instead of JIT, so this should be for the preferred or most common architecture + set(HIP_CUDA_GENCODE "-arch=${HIP_ARCH} ") # Fermi (GPU Arch 2.x) is supported by CUDA 3.2 to CUDA 8.0 if((CUDA_VERSION VERSION_GREATER "3.1") AND (CUDA_VERSION VERSION_LESS "9.0")) string(APPEND HIP_CUDA_GENCODE "-gencode arch=compute_20,code=[sm_20,compute_20] ") -- GitLab From 024a91c751a8cae6fc2c2ac44cd7586251fda64f Mon Sep 17 00:00:00 2001 From: Richard Berger Date: Fri, 10 Apr 2020 14:50:10 -0400 Subject: [PATCH 243/717] Add documentation on how to compile GPU package with HIP using CMake --- doc/src/Build_extras.rst | 32 +++++++++++++++++++++++++++++--- 1 file changed, 29 insertions(+), 3 deletions(-) diff --git a/doc/src/Build_extras.rst b/doc/src/Build_extras.rst index 45c876d84a..1ae383a35d 100644 --- a/doc/src/Build_extras.rst +++ b/doc/src/Build_extras.rst @@ -87,13 +87,14 @@ GPU package --------------------- To build with this package, you must choose options for precision and -which GPU hardware to build for. +which GPU hardware to build for. The GPU package currently supports +three different types of backends: OpenCL, CUDA and HIP. **CMake build**\ : .. code-block:: bash - -D GPU_API=value # value = opencl (default) or cuda + -D GPU_API=value # value = opencl (default) or cuda or hip -D GPU_PREC=value # precision setting # value = double or mixed (default) or single -D OCL_TUNE=value # hardware choice for GPU_API=opencl @@ -101,13 +102,16 @@ which GPU hardware to build for. -D GPU_ARCH=value # primary GPU hardware choice for GPU_API=cuda # value = sm_XX, see below # default is sm_30 + -D HIP_ARCH=value # primary GPU hardware choice for GPU_API=hip + # value depends on selected HIP_PLATFORM + # default is 'gfx906' for HIP_PLATFORM=hcc and 'sm_30' for HIP_PLATFORM=nvcc -D CUDPP_OPT=value # optimization setting for GPU_API=cuda # enables CUDA Performance Primitives Optimizations # value = yes (default) or no -D CUDA_MPS_SUPPORT=value # enables some tweaks required to run with active nvidia-cuda-mps daemon # value = yes or no (default) -GPU_ARCH settings for different GPU hardware is as follows: +:code:`GPU_ARCH` settings for different GPU hardware is as follows: * sm_12 or sm_13 for GT200 (supported by CUDA 3.2 until CUDA 6.5) * sm_20 or sm_21 for Fermi (supported by CUDA 3.2 until CUDA 7.5) @@ -126,6 +130,28 @@ Thus the GPU_ARCH setting is merely an optimization, to have code for the preferred GPU architecture directly included rather than having to wait for the JIT compiler of the CUDA driver to translate it. +If you are compiling with HIP, note that before running CMake you will have to +set appropiate environment variables. Some variables such as +:code:`HCC_AMDGPU_TARGET` or :code:`CUDA_PATH` are necessary for :code:`hipcc` +and the linker to work correctly. + +.. code:: bash + + # AMDGPU target + export HIP_PLATFORM=hcc + export HCC_AMDGPU_TARGET=gfx906 + cmake -D PKG_GPU=on -D GPU_API=HIP -D HIP_ARCH=gfx906 -D CMAKE_CXX_COMPILER=hipcc .. + make -j 4 + +.. code:: bash + + # CUDA target + # !!! DO NOT set CMAKE_CXX_COMPILER !!! + export HIP_PLATFORM=nvcc + export CUDA_PATH=/usr/local/cuda + cmake -D PKG_GPU=on -D GPU_API=HIP -D HIP_ARCH=sm_70 .. + make -j 4 + **Traditional make**\ : Before building LAMMPS, you must build the GPU library in ``lib/gpu``\ . -- GitLab From 1a1db599f6f803a78ed74c4185f04b48f1407405 Mon Sep 17 00:00:00 2001 From: Richard Berger Date: Fri, 10 Apr 2020 15:03:48 -0400 Subject: [PATCH 244/717] Fix typo --- doc/src/Build_extras.rst | 2 +- doc/utils/sphinx-config/false_positives.txt | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/doc/src/Build_extras.rst b/doc/src/Build_extras.rst index 1ae383a35d..7f920d1cd8 100644 --- a/doc/src/Build_extras.rst +++ b/doc/src/Build_extras.rst @@ -131,7 +131,7 @@ the preferred GPU architecture directly included rather than having to wait for the JIT compiler of the CUDA driver to translate it. If you are compiling with HIP, note that before running CMake you will have to -set appropiate environment variables. Some variables such as +set appropriate environment variables. Some variables such as :code:`HCC_AMDGPU_TARGET` or :code:`CUDA_PATH` are necessary for :code:`hipcc` and the linker to work correctly. diff --git a/doc/utils/sphinx-config/false_positives.txt b/doc/utils/sphinx-config/false_positives.txt index 9a2d9e63d4..396c99e2b5 100644 --- a/doc/utils/sphinx-config/false_positives.txt +++ b/doc/utils/sphinx-config/false_positives.txt @@ -170,6 +170,7 @@ ba Babadi Babaei backcolor +backends Baczewski Bagi Bagnold -- GitLab From 0608002451a6480f4554ca445c247cb9f7987f1c Mon Sep 17 00:00:00 2001 From: Richard Berger Date: Fri, 10 Apr 2020 15:10:41 -0400 Subject: [PATCH 245/717] Remove trailing whitespace --- lib/gpu/Makefile.hip | 26 +++++++++++++------------- src/MAKE/OPTIONS/Makefile.hip | 20 ++++++++++---------- 2 files changed, 23 insertions(+), 23 deletions(-) diff --git a/lib/gpu/Makefile.hip b/lib/gpu/Makefile.hip index 1a829544af..62d34592d1 100644 --- a/lib/gpu/Makefile.hip +++ b/lib/gpu/Makefile.hip @@ -1,4 +1,4 @@ -# /* ---------------------------------------------------------------------- +# /* ---------------------------------------------------------------------- # Generic Linux Makefile for HIP # - export HIP_PLATFORM=hcc (or nvcc) before execution # - change HIP_ARCH for your GPU @@ -16,13 +16,13 @@ LMP_INC = -DLAMMPS_SMALLBIG HIP_PRECISION = -D_SINGLE_DOUBLE -HIP_OPTS = -O3 +HIP_OPTS = -O3 HIP_HOST_OPTS = -Wno-deprecated-declarations -HIP_HOST_INCLUDE = +HIP_HOST_INCLUDE = -# use device sort +# use device sort # requires linking with hipcc and hipCUB + (rocPRIM or CUB for AMD or Nvidia respectively) -HIP_HOST_OPTS += -DUSE_HIP_DEVICE_SORT +HIP_HOST_OPTS += -DUSE_HIP_DEVICE_SORT # path to cub HIP_HOST_INCLUDE += -I./ # path to hipcub @@ -47,7 +47,7 @@ else ifeq (nvcc,$(HIP_PLATFORM)) HIP_ARCH = -gencode arch=compute_30,code=[sm_30,compute_30] -gencode arch=compute_32,code=[sm_32,compute_32] -gencode arch=compute_35,code=[sm_35,compute_35] \ -gencode arch=compute_50,code=[sm_50,compute_50] -gencode arch=compute_52,code=[sm_52,compute_52] -gencode arch=compute_53,code=[sm_53,compute_53]\ -gencode arch=compute_60,code=[sm_60,compute_60] -gencode arch=compute_61,code=[sm_61,compute_61] -gencode arch=compute_62,code=[sm_62,compute_62]\ - -gencode arch=compute_70,code=[sm_70,compute_70] -gencode arch=compute_72,code=[sm_72,compute_72] -gencode arch=compute_75,code=[sm_75,compute_75] + -gencode arch=compute_70,code=[sm_70,compute_70] -gencode arch=compute_72,code=[sm_72,compute_72] -gencode arch=compute_75,code=[sm_75,compute_75] else $(error Specify HIP platform using 'export HIP_PLATFORM=(hcc,nvcc)') endif @@ -59,8 +59,8 @@ AR = ar BSH = /bin/sh -# /* ---------------------------------------------------------------------- -# don't change section below without need +# /* ---------------------------------------------------------------------- +# don't change section below without need # ------------------------------------------------------------------------- */ HIP_OPTS += -DUSE_HIP $(HIP_PRECISION) @@ -69,13 +69,13 @@ HIP_GPU_OPTS += $(HIP_OPTS) -I./ ifeq (hcc,$(HIP_PLATFORM)) HIP_HOST_OPTS += -fPIC HIP_GPU_CC = $(HIP_PATH)/bin/hipcc --genco - HIP_GPU_OPTS_S = -t="$(HIP_ARCH)" -f=\" + HIP_GPU_OPTS_S = -t="$(HIP_ARCH)" -f=\" HIP_GPU_OPTS_E = \" HIP_KERNEL_SUFFIX = .cpp HIP_LIBS_TARGET = export HCC_AMDGPU_TARGET := $(HIP_ARCH) export HCC_AMDGPU_TARGET := $(HIP_ARCH) else ifeq (nvcc,$(HIP_PLATFORM)) - HIP_GPU_CC = $(HIP_PATH)/bin/hipcc --fatbin + HIP_GPU_CC = $(HIP_PATH)/bin/hipcc --fatbin HIP_GPU_OPTS += $(HIP_ARCH) HIP_GPU_SORT_ARCH = $(HIP_ARCH) # fix nvcc can't handle -pthread flag @@ -100,9 +100,9 @@ CUHS := $(addprefix $(OBJ_DIR)/, $(CUHS)) all: $(OBJ_DIR) $(CUHS) $(LIB_DIR)/libgpu.a $(BIN_DIR)/hip_get_devices $(OBJ_DIR): - mkdir -p $@ + mkdir -p $@ -# GPU kernels compilation +# GPU kernels compilation $(OBJ_DIR)/pppm_f_cubin.h: lal_pppm.cu $(ALL_H) @cp $< $(OBJ_DIR)/temp_pppm_f.cu$(HIP_KERNEL_SUFFIX) @@ -128,7 +128,7 @@ $(OBJ_DIR)/%_cubin.h: lal_%.cu $(ALL_H) # host sources compilation $(OBJ_DIR)/lal_atom.o: lal_atom.cpp $(CUHS) $(ALL_H) - $(HIP_HOST_CC_CMD) -o $@ -c $< -I$(OBJ_DIR) $(HIP_GPU_SORT_ARCH) + $(HIP_HOST_CC_CMD) -o $@ -c $< -I$(OBJ_DIR) $(HIP_GPU_SORT_ARCH) $(OBJ_DIR)/lal_%.o: lal_%.cpp $(CUHS) $(ALL_H) $(HIP_HOST_CC_CMD) -o $@ -c $< -I$(OBJ_DIR) diff --git a/src/MAKE/OPTIONS/Makefile.hip b/src/MAKE/OPTIONS/Makefile.hip index 12158a32cb..76affc796c 100644 --- a/src/MAKE/OPTIONS/Makefile.hip +++ b/src/MAKE/OPTIONS/Makefile.hip @@ -7,14 +7,14 @@ SHELL = /bin/sh # specify flags and libraries needed for your compiler CC = mpicxx -CCFLAGS = -g -O3 +CCFLAGS = -g -O3 SHFLAGS = -fPIC DEPFLAGS = -M HIP_PATH ?= $(wildcard /opt/rocm/hip) LINK = $(HIP_PATH)/bin/hipcc LINKFLAGS = -g -O3 $(shell mpicxx --showme:link) -LIB = +LIB = SIZE = size ARCHIVE = ar @@ -41,8 +41,8 @@ LMP_INC = -DLAMMPS_GZIP -DLAMMPS_MEMALIGN=64 # LIB = name of MPI library MPI_INC = -DMPICH_SKIP_MPICXX -DOMPI_SKIP_MPICXX=1 -MPI_PATH = -MPI_LIB = +MPI_PATH = +MPI_LIB = # FFT library # see discussion in Section 2.2 (step 6) of manual @@ -51,9 +51,9 @@ MPI_LIB = # PATH = path for FFT library # LIB = name of FFT library -FFT_INC = -FFT_PATH = -FFT_LIB = +FFT_INC = +FFT_PATH = +FFT_LIB = # JPEG and/or PNG library # see discussion in Section 2.2 (step 7) of manual @@ -62,9 +62,9 @@ FFT_LIB = # PATH = path(s) for JPEG library and/or PNG library # LIB = name(s) of JPEG library and/or PNG library -JPG_INC = -JPG_PATH = -JPG_LIB = +JPG_INC = +JPG_PATH = +JPG_LIB = # --------------------------------------------------------------------- # build rules and dependencies -- GitLab From 98fcf83180eb3ac845fa20d38617ba324f219931 Mon Sep 17 00:00:00 2001 From: Richard Berger Date: Fri, 10 Apr 2020 15:31:06 -0400 Subject: [PATCH 246/717] Checkout specific hipCUB version --- tools/singularity/ubuntu18.04_amd_rocm.def | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tools/singularity/ubuntu18.04_amd_rocm.def b/tools/singularity/ubuntu18.04_amd_rocm.def index ad7eaaf543..f653e65130 100644 --- a/tools/singularity/ubuntu18.04_amd_rocm.def +++ b/tools/singularity/ubuntu18.04_amd_rocm.def @@ -60,7 +60,7 @@ From: rocm/dev-ubuntu-18.04 xxd export PATH=$PATH:/opt/rocm/bin:/opt/rocm/profiler/bin:/opt/rocm/opencl/bin/x86_64 - git clone https://github.com/ROCmSoftwarePlatform/hipCUB.git + git clone -b master-rocm-3.3 https://github.com/ROCmSoftwarePlatform/hipCUB.git mkdir hipCUB/build cd hipCUB/build CXX=hcc cmake -D BUILD_TEST=off .. @@ -69,8 +69,8 @@ From: rocm/dev-ubuntu-18.04 make install %environment - LC_ALL=C - export LC_ALL + LC_ALL=C + export LC_ALL %labels Author rbberger -- GitLab From e114d814f40ed9c0427a085181ae12b484e102e6 Mon Sep 17 00:00:00 2001 From: "Jibril B. Coulibaly" Date: Fri, 10 Apr 2020 16:04:56 -0500 Subject: [PATCH 247/717] add rmass_flag and rectify comments and indents --- src/fix_adapt.cpp | 58 +++++++++++++++++++++++++---------------------- src/fix_adapt.h | 2 +- 2 files changed, 32 insertions(+), 28 deletions(-) diff --git a/src/fix_adapt.cpp b/src/fix_adapt.cpp index ee85d054c8..f241d4ea36 100644 --- a/src/fix_adapt.cpp +++ b/src/fix_adapt.cpp @@ -143,8 +143,8 @@ nadapt(0), id_fix_diam(NULL), id_fix_chg(NULL), adapt(NULL) if (strcmp(arg[iarg+1],"diameter") == 0 || strcmp(arg[iarg+1],"diameter/disc") == 0) { adapt[nadapt].aparam = DIAMETER; diamflag = 1; - discflag = 0; - if(strcmp(arg[iarg+1],"diameter/disc") == 0) discflag = 1; + discflag = 0; + if (strcmp(arg[iarg+1],"diameter/disc") == 0) discflag = 1; } else if (strcmp(arg[iarg+1],"charge") == 0) { adapt[nadapt].aparam = CHARGE; chgflag = 1; @@ -238,7 +238,6 @@ int FixAdapt::setmask() void FixAdapt::post_constructor() { - // Create local Fix Store even when ressetflag == false, to be able to use `scale` keyword for charge and diameter if (!diamflag && !chgflag) return; // new id = fix-ID + FIX_STORE_ATTRIBUTE @@ -254,7 +253,7 @@ void FixAdapt::post_constructor() newarg[4] = (char *) "1"; newarg[5] = (char *) "1"; - if (diamflag && atom->radius_flag) {// Previously unsafe! The radius_flag was not checked, could run an atom_style w/o radius attribute and get here without a previous check / error ! + if (diamflag && atom->radius_flag) { int n = strlen(id) + strlen("_FIX_STORE_DIAM") + 1; id_fix_diam = new char[n]; strcpy(id_fix_diam,id); @@ -277,7 +276,7 @@ void FixAdapt::post_constructor() } } - if (chgflag && atom->q_flag) {// Previously unsafe! The q_flag was not checked, could run an atom_style w/o charge attribute and get here without a previous check / error ! + if (chgflag && atom->q_flag) { int n = strlen(id) + strlen("_FIX_STORE_CHG") + 1; id_fix_chg = new char[n]; strcpy(id_fix_chg,id); @@ -431,8 +430,10 @@ void FixAdapt::init() if (ad->aparam == DIAMETER) { if (!atom->radius_flag) error->all(FLERR,"Fix adapt requires atom attribute diameter"); - if(discflag && domain->dimension!=2) - error->all(FLERR,"Fix adapt requires 2d simulation"); + if (!atom->rmass_flag) + error->all(FLERR,"Fix adapt requires atom attribute mass"); + if (discflag && domain->dimension!=2) + error->all(FLERR,"Fix adapt requires 2d simulation"); } if (ad->aparam == CHARGE) { if (!atom->q_flag) @@ -460,7 +461,7 @@ void FixAdapt::init() } // fixes that store initial per-atom values - /* Unnecessary ? `fix_diam` and `fix_chg` seem to be already defined in FixAdapt::post_constructor(), commenting them out does not crash my MWE + if (id_fix_diam) { int ifix = modify->find_fix(id_fix_diam); if (ifix < 0) error->all(FLERR,"Could not find fix adapt storage fix ID"); @@ -470,7 +471,7 @@ void FixAdapt::init() int ifix = modify->find_fix(id_fix_chg); if (ifix < 0) error->all(FLERR,"Could not find fix adapt storage fix ID"); fix_chg = (FixStore *) modify->fix[ifix]; - }*/ + } if (strstr(update->integrate_style,"respa")) nlevels_respa = ((Respa *) update->integrate)->nlevels; @@ -573,12 +574,12 @@ void FixAdapt::change_settings() // also scale rmass to new value if (ad->aparam == DIAMETER) { - /* `mflag` unnecessary ? the test `if(!atom->radius_flag)` in `FixAdapt::init()` should perevent `atom->rmass_flag == false`. Unless there can be combinations of atom styles with `radius` but without `rmass` - It could also be unsafe since rmass_flag could be added using `fix property/atom` even for an atom_style that does not have radius attribute, although that possibility should be avoided as well with the test `if(!atom->radius_flag)` in `FixAdapt::init()` */ double density; - double *vec = fix_diam->vstore; // Get initial radius to use `scale` keyword - double *radius = atom->radius; + // Get initial diameter if `scale` keyword is used + + double *vec = fix_diam->vstore; + double *radius = atom->radius; double *rmass = atom->rmass; int *mask = atom->mask; int nlocal = atom->nlocal; @@ -586,28 +587,31 @@ void FixAdapt::change_settings() for (i = 0; i < nall; i++) if (mask[i] & groupbit) { - if(discflag) density = rmass[i] / (MY_PI * radius[i]*radius[i]); - else density = rmass[i] / (4.0*MY_PI/3.0 * + if (discflag) density = rmass[i] / (MY_PI * radius[i]*radius[i]); + else density = rmass[i] / (4.0*MY_PI/3.0 * radius[i]*radius[i]*radius[i]); - if (scaleflag) radius[i] = value * vec[i]; - else radius[i] = 0.5*value; - if(discflag) rmass[i] = MY_PI * radius[i]*radius[i] * density; + if (scaleflag) radius[i] = value * vec[i]; + else radius[i] = 0.5*value; + if (discflag) rmass[i] = MY_PI * radius[i]*radius[i] * density; else rmass[i] = 4.0*MY_PI/3.0 * radius[i]*radius[i]*radius[i] * density; } } else if (ad->aparam == CHARGE) { - double *vec = fix_chg->vstore; // Get initial charge to use `scale` keyword - double *q = atom->q; + + // Get initial charge if `scale` keyword is used + + double *vec = fix_chg->vstore; + double *q = atom->q; int *mask = atom->mask; int nlocal = atom->nlocal; int nall = nlocal + atom->nghost; for (i = 0; i < nall; i++) if (mask[i] & groupbit) { - if (scaleflag) q[i] = value * vec[i]; - else q[i] = value; - } + if (scaleflag) q[i] = value * vec[i]; + else q[i] = value; + } } } } @@ -678,13 +682,13 @@ void FixAdapt::restore_settings() for (int i = 0; i < nlocal; i++) if (mask[i] & groupbit) { - if(discflag) density = rmass[i] / (MY_PI * radius[i]*radius[i]); - else density = rmass[i] / (4.0*MY_PI/3.0 * + if(discflag) density = rmass[i] / (MY_PI * radius[i]*radius[i]); + else density = rmass[i] / (4.0*MY_PI/3.0 * radius[i]*radius[i]*radius[i]); radius[i] = vec[i]; if(discflag) rmass[i] = MY_PI * radius[i]*radius[i] * density; - else rmass[i] = 4.0*MY_PI/3.0 * - radius[i]*radius[i]*radius[i] * density; + else rmass[i] = 4.0*MY_PI/3.0 * + radius[i]*radius[i]*radius[i] * density; } } if (chgflag) { diff --git a/src/fix_adapt.h b/src/fix_adapt.h index dbf8f5f792..26def03a1d 100644 --- a/src/fix_adapt.h +++ b/src/fix_adapt.h @@ -47,7 +47,7 @@ class FixAdapt : public Fix { int nlevels_respa; char *id_fix_diam,*id_fix_chg; class FixStore *fix_diam,*fix_chg; - int discflag; + int discflag; struct Adapt { int which,ivar; -- GitLab From d2c4ade697a39e64419382ed0bf1ac3c17c993a0 Mon Sep 17 00:00:00 2001 From: Richard Berger Date: Fri, 10 Apr 2020 17:48:04 -0400 Subject: [PATCH 248/717] Add HIP_USE_DEVICE_SORT CMake option --- cmake/CMakeLists.txt | 5 ++++ cmake/Modules/FindCUB.cmake | 16 ++++++++++++ cmake/Modules/Packages/GPU.cmake | 43 ++++++++++++++++++++++++++++++++ doc/src/Build_extras.rst | 34 +++++++++++++------------ 4 files changed, 82 insertions(+), 16 deletions(-) create mode 100644 cmake/Modules/FindCUB.cmake diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index ae61a7e5f3..2a48f60f2a 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -736,6 +736,11 @@ if(PKG_GPU) elseif(GPU_API STREQUAL "HIP") message(STATUS "HIP platform: ${HIP_PLATFORM}") message(STATUS "HIP architecture: ${HIP_ARCH}") + if(HIP_USE_DEVICE_SORT) + message(STATUS "HIP GPU sorting: on") + else() + message(STATUS "HIP GPU sorting: off") + endif() endif() message(STATUS "GPU precision: ${GPU_PREC}") endif() diff --git a/cmake/Modules/FindCUB.cmake b/cmake/Modules/FindCUB.cmake new file mode 100644 index 0000000000..848e68e815 --- /dev/null +++ b/cmake/Modules/FindCUB.cmake @@ -0,0 +1,16 @@ +# - Find CUB +# Find the CUB header library +# +# CUB_INCLUDE_DIRS - where to find cub/cub.cuh +# CUB_FOUND - True if CUB found. +# + +find_path(CUB_INCLUDE_DIR cub.cuh PATH_SUFFIXES cub) + +include(FindPackageHandleStandardArgs) +# handle the QUIETLY and REQUIRED arguments and set CUB_FOUND to TRUE +# if all listed variables are TRUE + +find_package_handle_standard_args(CUB DEFAULT_MSG CUB_INCLUDE_DIR) + +mark_as_advanced(CUB_INCLUDE_DIR) diff --git a/cmake/Modules/Packages/GPU.cmake b/cmake/Modules/Packages/GPU.cmake index 317a698e37..dcfe06b911 100644 --- a/cmake/Modules/Packages/GPU.cmake +++ b/cmake/Modules/Packages/GPU.cmake @@ -197,6 +197,7 @@ elseif(GPU_API STREQUAL "HIP") endif() set(CMAKE_MODULE_PATH "${HIP_PATH}/cmake" ${CMAKE_MODULE_PATH}) find_package(HIP REQUIRED) + option(HIP_USE_DEVICE_SORT "Use GPU sorting" ON) if(NOT DEFINED HIP_PLATFORM) if(NOT DEFINED ENV{HIP_PLATFORM}) @@ -284,6 +285,48 @@ elseif(GPU_API STREQUAL "HIP") target_compile_definitions(gpu PRIVATE -D_${GPU_PREC_SETTING} -DMPI_GERYON -DUCL_NO_EXIT) target_compile_definitions(gpu PRIVATE -DUSE_HIP) + if(HIP_USE_DEVICE_SORT) + # add hipCUB + target_include_directories(gpu PRIVATE ${HIP_ROOT_DIR}/../include) + target_compile_definitions(gpu PRIVATE -DUSE_HIP_DEVICE_SORT) + + if(HIP_PLATFORM STREQUAL "nvcc") + find_package(CUB) + + if(CUB_FOUND) + set(DOWNLOAD_CUB_DEFAULT OFF) + else() + set(DOWNLOAD_CUB_DEFAULT ON) + endif() + + option(DOWNLOAD_CUB "Download and compile the CUB library instead of using an already installed one" ${DOWNLOAD_CUB_DEFAULT}) + + if(DOWNLOAD_CUB) + message(STATUS "CUB download requested") + include(ExternalProject) + + ExternalProject_Add(CUB + GIT_REPOSITORY https://github.com/NVlabs/cub + TIMEOUT 5 + PREFIX "${CMAKE_CURRENT_BINARY_DIR}" + CONFIGURE_COMMAND "" + BUILD_COMMAND "" + INSTALL_COMMAND "" + UPDATE_COMMAND "" + ) + ExternalProject_get_property(CUB SOURCE_DIR) + set(CUB_INCLUDE_DIR ${SOURCE_DIR}) + else() + find_package(CUB) + if(NOT CUB_FOUND) + message(FATAL_ERROR "CUB library not found. Help CMake to find it by setting CUB_INCLUDE_DIR, or set DOWNLOAD_VORO=ON to download it") + endif() + endif() + + target_include_directories(gpu PRIVATE ${CUB_INCLUDE_DIR}) + endif() + endif() + hip_add_executable(hip_get_devices ${LAMMPS_LIB_SOURCE_DIR}/gpu/geryon/ucl_get_devices.cpp) target_compile_definitions(hip_get_devices PRIVATE -DUCL_HIP) diff --git a/doc/src/Build_extras.rst b/doc/src/Build_extras.rst index 7f920d1cd8..5ba3aa85f9 100644 --- a/doc/src/Build_extras.rst +++ b/doc/src/Build_extras.rst @@ -94,22 +94,24 @@ three different types of backends: OpenCL, CUDA and HIP. .. code-block:: bash - -D GPU_API=value # value = opencl (default) or cuda or hip - -D GPU_PREC=value # precision setting - # value = double or mixed (default) or single - -D OCL_TUNE=value # hardware choice for GPU_API=opencl - # generic (default) or intel (Intel CPU) or fermi, kepler, cypress (NVIDIA) - -D GPU_ARCH=value # primary GPU hardware choice for GPU_API=cuda - # value = sm_XX, see below - # default is sm_30 - -D HIP_ARCH=value # primary GPU hardware choice for GPU_API=hip - # value depends on selected HIP_PLATFORM - # default is 'gfx906' for HIP_PLATFORM=hcc and 'sm_30' for HIP_PLATFORM=nvcc - -D CUDPP_OPT=value # optimization setting for GPU_API=cuda - # enables CUDA Performance Primitives Optimizations - # value = yes (default) or no - -D CUDA_MPS_SUPPORT=value # enables some tweaks required to run with active nvidia-cuda-mps daemon - # value = yes or no (default) + -D GPU_API=value # value = opencl (default) or cuda or hip + -D GPU_PREC=value # precision setting + # value = double or mixed (default) or single + -D OCL_TUNE=value # hardware choice for GPU_API=opencl + # generic (default) or intel (Intel CPU) or fermi, kepler, cypress (NVIDIA) + -D GPU_ARCH=value # primary GPU hardware choice for GPU_API=cuda + # value = sm_XX, see below + # default is sm_30 + -D HIP_ARCH=value # primary GPU hardware choice for GPU_API=hip + # value depends on selected HIP_PLATFORM + # default is 'gfx906' for HIP_PLATFORM=hcc and 'sm_30' for HIP_PLATFORM=nvcc + -D HIP_USE_DEVICE_SORT=value # enables GPU sorting + # value = yes (default) or no + -D CUDPP_OPT=value # optimization setting for GPU_API=cuda + # enables CUDA Performance Primitives Optimizations + # value = yes (default) or no + -D CUDA_MPS_SUPPORT=value # enables some tweaks required to run with active nvidia-cuda-mps daemon + # value = yes or no (default) :code:`GPU_ARCH` settings for different GPU hardware is as follows: -- GitLab From 340a2e719d7e1d0f5cbedcf4a8132a859dbc501a Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 10 Apr 2020 22:27:42 -0400 Subject: [PATCH 249/717] be verbose about automatically enabling Kokkos_ENABLE_CUDA_LAMBDA --- cmake/Modules/Packages/KOKKOS.cmake | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/cmake/Modules/Packages/KOKKOS.cmake b/cmake/Modules/Packages/KOKKOS.cmake index 9d9ef9f6cb..6491b25975 100644 --- a/cmake/Modules/Packages/KOKKOS.cmake +++ b/cmake/Modules/Packages/KOKKOS.cmake @@ -1,7 +1,8 @@ ######################################################################## # consistency checks and Kokkos options/settings required by LAMMPS if(Kokkos_ENABLE_CUDA) - set(Kokkos_ENABLE_CUDA_LAMBDA ON) + message(STATUS "KOKKOS: Enabling CUDA LAMBDA function support") + set(Kokkos_ENABLE_CUDA_LAMBDA ON CACHE BOOL "" FORCE) endif() # Adding OpenMP compiler flags without the checks done for # BUILD_OMP can result in compile failures. Enforce consistency. -- GitLab From 9bf31a66fdec95246d7741d6cae0a6dc89bb00af Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 10 Apr 2020 22:28:21 -0400 Subject: [PATCH 250/717] select compute capability 5.0 as default for Kokkos+CUDA preset. --- cmake/presets/kokkos-cuda.cmake | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/cmake/presets/kokkos-cuda.cmake b/cmake/presets/kokkos-cuda.cmake index 8195e0f090..36d099479d 100644 --- a/cmake/presets/kokkos-cuda.cmake +++ b/cmake/presets/kokkos-cuda.cmake @@ -1,9 +1,11 @@ -# preset that enables KOKKOS and selects CUDA compilation with OpenMP enabled as well - +# preset that enables KOKKOS and selects CUDA compilation with OpenMP +# enabled as well. This preselects CC 5.0 as default GPU arch, since +# that is compatible with all higher CC, but not the default CC 3.5 set(PKG_KOKKOS ON CACHE BOOL "" FORCE) set(Kokkos_ENABLE_SERIAL ON CACHE BOOL "" FORCE) set(Kokkos_ENABLE_OPENMP ON CACHE BOOL "" FORCE) set(Kokkos_ENABLE_CUDA ON CACHE BOOL "" FORCE) +set(Kokkos_ARCH_MAXWELL50 on CACHE BOOL "" FORCE) set(BUILD_OMP ON CACHE BOOL "" FORCE) get_filename_component(NVCC_WRAPPER_CMD ${CMAKE_CURRENT_SOURCE_DIR}/../lib/kokkos/bin/nvcc_wrapper ABSOLUTE) set(CMAKE_CXX_COMPILER ${NVCC_WRAPPER_CMD} CACHE FILEPATH "" FORCE) -- GitLab From f01c90b6b079eaacfe23ed8d231befe1e0d63476 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 10 Apr 2020 23:20:10 -0400 Subject: [PATCH 251/717] use consistent capitalization with NVIDIA --- doc/src/Commands_removed.rst | 2 +- doc/src/Speed_compare.rst | 2 +- doc/src/Speed_packages.rst | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/src/Commands_removed.rst b/doc/src/Commands_removed.rst index b749467d13..e137e39a08 100644 --- a/doc/src/Commands_removed.rst +++ b/doc/src/Commands_removed.rst @@ -48,7 +48,7 @@ The USER-CUDA package had been removed, since it had been unmaintained for a long time and had known bugs and problems. Significant parts of the design were transferred to the :ref:`KOKKOS package `, which has similar -performance characteristics on Nvidia GPUs. Both, the KOKKOS +performance characteristics on NVIDIA GPUs. Both, the KOKKOS and the :ref:`GPU package ` are maintained and allow running LAMMPS with GPU acceleration. diff --git a/doc/src/Speed_compare.rst b/doc/src/Speed_compare.rst index d3947ec3ef..4ab616a5da 100644 --- a/doc/src/Speed_compare.rst +++ b/doc/src/Speed_compare.rst @@ -87,7 +87,7 @@ section below for examples where this has been done. * The GPU package requires neighbor lists to be built on the CPU when using exclusion lists, or a triclinic simulation box. * The GPU package can be compiled for CUDA or OpenCL and thus supports - both, Nvidia and AMD GPUs well. On Nvidia hardware, using CUDA is typically + both, NVIDIA and AMD GPUs well. On NVIDIA hardware, using CUDA is typically resulting in equal or better performance over OpenCL. * OpenCL in the GPU package does theoretically also support Intel CPUs or Intel Xeon Phi, but the native support for those in KOKKOS (or USER-INTEL) diff --git a/doc/src/Speed_packages.rst b/doc/src/Speed_packages.rst index ab02ba7f48..685bd3c601 100644 --- a/doc/src/Speed_packages.rst +++ b/doc/src/Speed_packages.rst @@ -20,7 +20,7 @@ standard or user packages: +-----------------------------------------+-------------------------------------------------------+ | :doc:`USER-INTEL Package ` | for Intel CPUs and Intel Xeon Phi | +-----------------------------------------+-------------------------------------------------------+ -| :doc:`KOKKOS Package ` | for Nvidia GPUs, Intel Xeon Phi, and OpenMP threading | +| :doc:`KOKKOS Package ` | for NVIDIA GPUs, Intel Xeon Phi, and OpenMP threading | +-----------------------------------------+-------------------------------------------------------+ | :doc:`USER-OMP Package ` | for OpenMP threading and generic CPU optimizations | +-----------------------------------------+-------------------------------------------------------+ -- GitLab From 806fd8cf11bb7fc18c1507749d98222b35af39c8 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 10 Apr 2020 23:32:31 -0400 Subject: [PATCH 252/717] rework KOKKOS package compilation docs for Kokkos 3.0+ and recent changes in CMake support --- doc/src/Build_extras.rst | 158 +++++++++++++++++++++++++-------------- 1 file changed, 101 insertions(+), 57 deletions(-) diff --git a/doc/src/Build_extras.rst b/doc/src/Build_extras.rst index 2cb4acf2db..00165db81d 100644 --- a/doc/src/Build_extras.rst +++ b/doc/src/Build_extras.rst @@ -279,28 +279,47 @@ using. For example: .. _kokkos: KOKKOS package ---------------------------- +-------------- -To build with this package, you must choose which hardware you want to -build for, either CPUs (multi-threading via OpenMP) or KNLs (OpenMP) -or GPUs (NVIDIA Cuda). +Using the KOKKOS package requires choosing several settings. You have +to select whether you want to compile with parallelization on the host +and whether you want to include offloading of calculations to a device +(e.g. a GPU). The default setting is to have no host parallelization +and no device offloading. In addition, you can select the hardware +architecture to select the instruction set. Since most hardware is +backward compatible, you may choose settings for an older architecture +to have an executable that will run on this and newer architectures. + +.. note:: + + NVIDIA GPUs with CC 5.0 (Maxwell) and newer are not compatible with + CC 3.x (Kepler). If you run Kokkos on a newer architecture than what + LAMMPS was compiled with, there will be a significant delay during + device initialization since the just-in-time compiler has to + recompile the GPU kernel code for the new hardware. -For a CMake or make build, these are the possible choices for the -``Kokkos_ARCH_`` settings described below. Note that for CMake, -these are really Kokkos variables, not LAMMPS variables. Hence you -must use case-sensitive variable names, i.e. ``Kokkos_ARCH_BDW`` -and **NOT** ``KOKKOS_ARCH_BDW`` or ``Kokkos_arch_bdw`` and so on. +The settings discussed below have been tested with LAMMPS and are +confirmed to work. Kokkos is an active project with ongoing improvements +and projects working on including support for additional architectures. +More information on Kokkos can be found on the +`Kokkos GitHub project `_. + +Available Architecture settings +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +These are the possible choices for the Kokkos architecture ID. They must +be specified in uppercase. .. list-table:: - :header-rows: 1 + :header-rows: 0 :widths: auto - * - Arch - - Description + * - **Arch-ID** + - **Description** * - AMDAVX - - AMD 64-bit x86 CPUs + - AMD 64-bit x86 CPU (AVX 1) * - EPYC - - AMD EPYC Zen class CPUs + - AMD EPYC Zen class CPU (AVX 2) * - ARMV80 - ARMv8.0 Compatible CPU * - ARMV81 @@ -310,74 +329,78 @@ and **NOT** ``KOKKOS_ARCH_BDW`` or ``Kokkos_arch_bdw`` and so on. * - ARMV8_THUNDERX2 - ARMv8 Cavium ThunderX2 CPU * - WSM - - Intel Westmere CPUs + - Intel Westmere CPU (SSE 4.2) * - SNB - - Intel Sandy/Ivy Bridge CPUs + - Intel Sandy/Ivy Bridge CPU (AVX 1) * - HSW - - Intel Haswell CPUs + - Intel Haswell CPU (AVX 2) * - BDW - - Intel Broadwell Xeon E-class CPUs + - Intel Broadwell Xeon E-class CPU (AVX 2 + transactional mem) * - SKX - - Intel Sky Lake Xeon E-class HPC CPUs (AVX512) + - Intel Sky Lake Xeon E-class HPC CPU (AVX512 + transactional mem) * - KNC - Intel Knights Corner Xeon Phi * - KNL - Intel Knights Landing Xeon Phi * - BGQ - - IBM Blue Gene/Q CPUs + - IBM Blue Gene/Q CPU * - POWER7 - - IBM POWER8 CPUs + - IBM POWER8 CPU * - POWER8 - - IBM POWER8 CPUs + - IBM POWER8 CPU * - POWER9 - - IBM POWER9 CPUs + - IBM POWER9 CPU * - KEPLER30 - - NVIDIA Kepler generation CC 3.0 + - NVIDIA Kepler generation CC 3.0 GPU * - KEPLER32 - - NVIDIA Kepler generation CC 3.2 + - NVIDIA Kepler generation CC 3.2 GPU * - KEPLER35 - - NVIDIA Kepler generation CC 3.5 + - NVIDIA Kepler generation CC 3.5 GPU * - KEPLER37 - - NVIDIA Kepler generation CC 3.7 + - NVIDIA Kepler generation CC 3.7 GPU * - MAXWELL50 - - NVIDIA Maxwell generation CC 5.0 + - NVIDIA Maxwell generation CC 5.0 GPU * - MAXWELL52 - - NVIDIA Maxwell generation CC 5.2 + - NVIDIA Maxwell generation CC 5.2 GPU * - MAXWELL53 - - NVIDIA Maxwell generation CC 5.3 + - NVIDIA Maxwell generation CC 5.3 GPU * - PASCAL60 - - NVIDIA Pascal generation CC 6.0 + - NVIDIA Pascal generation CC 6.0 GPU * - PASCAL61 - - NVIDIA Pascal generation CC 6.1 + - NVIDIA Pascal generation CC 6.1 GPU * - VOLTA70 - - NVIDIA Volta generation CC 7.0 + - NVIDIA Volta generation CC 7.0 GPU * - VOLTA72 - - NVIDIA Volta generation CC 7.2 + - NVIDIA Volta generation CC 7.2 GPU * - TURING75 - - NVIDIA Turing generation CC 7.5 - -**CMake build**\ : + - NVIDIA Turing generation CC 7.5 GPU +CMake build settings: +^^^^^^^^^^^^^^^^^^^^^ For multicore CPUs using OpenMP, set these 2 variables. .. code-block:: bash - -D Kokkos_ARCH_=yes # = CPU from list above + -D Kokkos_ARCH_CPUARCH=yes # CPUARCH = CPU from list above -D Kokkos_ENABLE_OPENMP=yes + -D BUILD_OMP=yes + +Please note that enabling OpenMP for KOKKOS requires that OpenMP is +also :ref:`enabled for the rest of LAMMPS `. -For Intel KNLs using OpenMP, set these 2 variables: +For Intel KNLs using OpenMP, set these variables: .. code-block:: bash -D Kokkos_ARCH_KNL=yes -D Kokkos_ENABLE_OPENMP=yes -For NVIDIA GPUs using CUDA, set these 4 variables: +For NVIDIA GPUs using CUDA, set these variables: .. code-block:: bash - -D Kokkos_ARCH_=yes # = CPU from list above that is hosting the GPU - -D Kokkos_ARCH_=yes # = GPU from list above + -D Kokkos_ARCH_CPUARCH=yes # CPUARCH = CPU from list above + -D Kokkos_ARCH_GPUARCH=yes # GPUARCH = GPU from list above -D Kokkos_ENABLE_CUDA=yes -D Kokkos_ENABLE_OPENMP=yes -D CMAKE_CXX_COMPILER=wrapper # wrapper = full path to Cuda nvcc wrapper @@ -388,20 +411,35 @@ include the full path name to the wrapper, e.g. .. code-block:: bash - -D CMAKE_CXX_COMPILER=/home/username/lammps/lib/kokkos/bin/nvcc_wrapper + -D CMAKE_CXX_COMPILER=${HOME}/lammps/lib/kokkos/bin/nvcc_wrapper -**Traditional make**\ : +To simplify the compilation, three preset files are included in the +``cmake/presets`` folder, ``kokkos-serial.cmake``, ``kokkos-openmp.cmake``, +and ``kokkos-cuda.cmake``. They will enable the KOKKOS package and +enable some hardware choice. So to compile with OpenMP host parallelization, +CUDA device parallelization (for GPUs with CC 5.0 and up) with some +common packages enabled, you can do the following: + +.. code-block:: bash + + mkdir build-kokkos-cuda + cd build-kokkos-cuda + cmake -C ../cmake/presets/minimal.cmake -C ../cmake/presets/kokkos-cuda.cmake ../cmake + cmake --build . + +Traditional make settings: +^^^^^^^^^^^^^^^^^^^^^^^^^^ Choose which hardware to support in ``Makefile.machine`` via ``KOKKOS_DEVICES`` and ``KOKKOS_ARCH`` settings. See the -``src/MAKE/OPTIONS/Makefile.kokkos\*`` files for examples. +``src/MAKE/OPTIONS/Makefile.kokkos*`` files for examples. For multicore CPUs using OpenMP: .. code-block:: make KOKKOS_DEVICES = OpenMP - KOKKOS_ARCH = archCPU # archCPU = CPU from list above + KOKKOS_ARCH = CPUARCH # CPUARCH = CPU from list above For Intel KNLs using OpenMP: @@ -415,22 +453,28 @@ For NVIDIA GPUs using CUDA: .. code-block:: make KOKKOS_DEVICES = Cuda - KOKKOS_ARCH = archCPU,archGPU # archCPU = CPU from list above that is hosting the GPU - # archGPU = GPU from list above - FFT_INC = -DFFT_CUFFT # enable use of cuFFT (optional) - FFT_LIB = -lcufft # link to cuFFT library + KOKKOS_ARCH = CPUARCH,GPUARCH # CPUARCH = CPU from list above that is hosting the GPU + # GPUARCH = GPU from list above + FFT_INC = -DFFT_CUFFT # enable use of cuFFT (optional) + FFT_LIB = -lcufft # link to cuFFT library -For GPUs, you also need the following 2 lines in your Makefile.machine -before the CC line is defined, in this case for use with OpenMPI mpicxx. -The 2 lines define a nvcc wrapper compiler, which will use nvcc for -compiling CUDA files and use a C++ compiler for non-Kokkos, non-CUDA -files. +For GPUs, you also need the following lines in your ``Makefile.machine`` +before the CC line is defined. They tell ``mpicxx`` to use an ``nvcc`` +compiler wrapper, which will use ``nvcc`` for compiling CUDA files and a +C++ compiler for non-Kokkos, non-CUDA files. .. code-block:: make + # For OpenMPI KOKKOS_ABSOLUTE_PATH = $(shell cd $(KOKKOS_PATH); pwd) export OMPI_CXX = $(KOKKOS_ABSOLUTE_PATH)/config/nvcc_wrapper - CC = mpicxx + CC = mpicxx + +.. code-block:: make + + # For MPICH and derivatives + KOKKOS_ABSOLUTE_PATH = $(shell cd $(KOKKOS_PATH); pwd) + CC = mpicxx -cxx=$(KOKKOS_ABSOLUTE_PATH)/config/nvcc_wrapper ---------- @@ -469,7 +513,7 @@ args: $ make lib-latte args="-b" # download and build in lib/latte/LATTE-master $ make lib-latte args="-p $HOME/latte" # use existing LATTE installation in $HOME/latte $ make lib-latte args="-b -m gfortran" # download and build in lib/latte and - # copy Makefile.lammps.gfortran to Makefile.lammps + # copy Makefile.lammps.gfortran to Makefile.lammps Note that 3 symbolic (soft) links, "includelink" and "liblink" and "filelink.o", are created in lib/latte to point into the LATTE home -- GitLab From 3d1505994ca6dffae9cd1a5520da23d279f72759 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 10 Apr 2020 23:32:41 -0400 Subject: [PATCH 253/717] update false positives list --- doc/utils/sphinx-config/false_positives.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/doc/utils/sphinx-config/false_positives.txt b/doc/utils/sphinx-config/false_positives.txt index 9a2d9e63d4..f3837470ed 100644 --- a/doc/utils/sphinx-config/false_positives.txt +++ b/doc/utils/sphinx-config/false_positives.txt @@ -1734,6 +1734,7 @@ Melchor Meloni Melrose Mem +mem memalign MEMALIGN membered @@ -2104,7 +2105,6 @@ nvc nvcc nve nvidia -Nvidia nvk nvt Nwait @@ -2959,6 +2959,7 @@ traceless tradeoff traj Tranchida +transactional transferability translational Translational -- GitLab From 7978d2035211754ead15a154f71004ffc13b7f6f Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 11 Apr 2020 02:02:15 -0400 Subject: [PATCH 254/717] tweaks --- doc/src/Build_basics.rst | 2 +- doc/src/Install_mac.rst | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/src/Build_basics.rst b/doc/src/Build_basics.rst index 692c779438..70a95ff8b5 100644 --- a/doc/src/Build_basics.rst +++ b/doc/src/Build_basics.rst @@ -15,7 +15,7 @@ CMake and make: .. _serial: Serial vs parallel build -------------------------------------- +------------------------ LAMMPS is written to use the ubiquitous `MPI (Message Passing Interface) `_ library API diff --git a/doc/src/Install_mac.rst b/doc/src/Install_mac.rst index 41b53c0595..642169ffe5 100644 --- a/doc/src/Install_mac.rst +++ b/doc/src/Install_mac.rst @@ -34,9 +34,9 @@ install the `openkim-models` package % brew install openkim-models If you have problems with the installation you can post issues to -`this link `_. +`this link `_. -.. _homebrew: https://github.com/Homebrew/homebrew-core/issues +.. _homebrew: https://brew.sh Thanks to Derek Thomas (derekt at cello.t.u-tokyo.ac.jp) for setting up the Homebrew capability. -- GitLab From 20edc12821b95fbadb48162cb89d610b0f4a9d6a Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 11 Apr 2020 11:53:55 -0400 Subject: [PATCH 255/717] copy images from figure rst directives as well --- doc/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/Makefile b/doc/Makefile index 895a4aa90d..f964d109aa 100644 --- a/doc/Makefile +++ b/doc/Makefile @@ -83,7 +83,7 @@ html: $(ANCHORCHECK) $(MATHJAX) @rm -rf html/JPG @cp -r src/PDF html/PDF @mkdir -p html/JPG - @cp `grep -A2 '\.\. .*image::' src/*.rst | grep ':target:' | sed -e 's,.*:target: JPG/,src/JPG/,' | sort | uniq` html/JPG/ + @cp `grep -A2 '\.\. .*\(image\|figure\)::' src/*.rst | grep ':target:' | sed -e 's,.*:target: JPG/,src/JPG/,' | sort | uniq` html/JPG/ @rm -rf html/PDF/.[sg]* @mkdir -p html/_static/mathjax @cp -r $(MATHJAX)/es5 html/_static/mathjax/ -- GitLab From c0d3ecfff0bf471112da861e08d3c47a75bae7f3 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 11 Apr 2020 11:55:13 -0400 Subject: [PATCH 256/717] start more detailed CMake howto document --- doc/src/.gitignore | 2 -- doc/src/Howto.rst | 1 + doc/src/Howto_cmake.rst | 44 ++++++++++++++++++++++++++++++ doc/src/JPG/ccmake-config.png | Bin 0 -> 24454 bytes doc/src/JPG/ccmake-initial.png | Bin 0 -> 15892 bytes doc/src/JPG/ccmake-options.png | Bin 0 -> 27154 bytes doc/src/JPG/cmake-gui-initial.png | Bin 0 -> 65610 bytes doc/src/JPG/cmake-gui-options.png | Bin 0 -> 139088 bytes doc/src/JPG/cmake-gui-popup.png | Bin 0 -> 35224 bytes 9 files changed, 45 insertions(+), 2 deletions(-) create mode 100644 doc/src/Howto_cmake.rst create mode 100644 doc/src/JPG/ccmake-config.png create mode 100644 doc/src/JPG/ccmake-initial.png create mode 100644 doc/src/JPG/ccmake-options.png create mode 100644 doc/src/JPG/cmake-gui-initial.png create mode 100644 doc/src/JPG/cmake-gui-options.png create mode 100644 doc/src/JPG/cmake-gui-popup.png diff --git a/doc/src/.gitignore b/doc/src/.gitignore index e0b9693457..afe24cc10c 100644 --- a/doc/src/.gitignore +++ b/doc/src/.gitignore @@ -1,3 +1 @@ -/Eqs -/JPG /false_positives.txt diff --git a/doc/src/Howto.rst b/doc/src/Howto.rst index f4376898b1..0ca955ab86 100644 --- a/doc/src/Howto.rst +++ b/doc/src/Howto.rst @@ -16,6 +16,7 @@ Tutorials howto :name: tutorials :maxdepth: 1 + Howto_cmake Howto_github Howto_pylammps Howto_bash diff --git a/doc/src/Howto_cmake.rst b/doc/src/Howto_cmake.rst new file mode 100644 index 0000000000..ee1d2ecc0b --- /dev/null +++ b/doc/src/Howto_cmake.rst @@ -0,0 +1,44 @@ +Using CMake with LAMMPS tutorial +================================ + + +.. list-table:: + + * - .. figure:: JPG/ccmake-initial.png + :target: JPG/ccmake-initial.png + :align: center + + Initial ``ccmake`` screen + + - .. figure:: JPG/ccmake-config.png + :target: JPG/ccmake-config.png + :align: center + + Configure output of ``ccmake`` + + - .. figure:: JPG/ccmake-options.png + :target: JPG/ccmake-options.png + :align: center + + Options screen of ``ccmake`` + +.. list-table:: + + * - .. figure:: JPG/cmake-gui-initial.png + :target: JPG/cmake-gui-initial.png + :align: center + + Initial ``cmake-gui`` screen + + - .. figure:: JPG/cmake-gui-popup.png + :target: JPG/cmake-gui-popup.png + :align: center + + Generator selection in ``cmake-gui`` + + - .. figure:: JPG/cmake-gui-options.png + :target: JPG/cmake-gui-options.png + :align: center + + Options screen of ``cmake-gui`` + diff --git a/doc/src/JPG/ccmake-config.png b/doc/src/JPG/ccmake-config.png new file mode 100644 index 0000000000000000000000000000000000000000..ef7508964653c4c217f36ed39b5c4fdb93e175ce GIT binary patch literal 24454 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 literal 0 HcmV?d00001 diff --git a/doc/src/JPG/ccmake-initial.png b/doc/src/JPG/ccmake-initial.png new file mode 100644 index 0000000000000000000000000000000000000000..d6291afde52f96d0debf00affca6864ba821b663 GIT binary patch literal 15892 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 a!otmGE#hBxWETSi1B0ilpUXO@geCyA_Tv}; literal 0 HcmV?d00001 diff --git a/doc/src/JPG/ccmake-options.png b/doc/src/JPG/ccmake-options.png new file mode 100644 index 0000000000000000000000000000000000000000..b05d58c1d2e87d48128fa3538d56bc935ddc3b95 GIT binary patch literal 27154 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 literal 0 HcmV?d00001 diff --git a/doc/src/JPG/cmake-gui-initial.png b/doc/src/JPG/cmake-gui-initial.png new file mode 100644 index 0000000000000000000000000000000000000000..062bc6ba836c3ab6ecf7ea31954362e0441353b8 GIT binary patch literal 65610 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πbS$DrF%-%QN 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 RP(3K4c)I$ztaD0e0suuP-c0}i literal 0 HcmV?d00001 diff --git a/doc/src/JPG/cmake-gui-options.png b/doc/src/JPG/cmake-gui-options.png new file mode 100644 index 0000000000000000000000000000000000000000..abbf63494612a88e2223d28f12474d28db374613 GIT binary patch literal 139088 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 C@nqkpQvF3{>pTxw=FGVoF2caTQ5AP@S9DqK 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 literal 0 HcmV?d00001 -- GitLab From e9af15ebb4b602cb95cd844007f4ccddf8593215 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 11 Apr 2020 11:55:45 -0400 Subject: [PATCH 257/717] start rewrite of the cmake with LAMMPS documentation --- doc/src/Build_cmake.rst | 146 ++++++++++++++++++++++++++++------------ 1 file changed, 102 insertions(+), 44 deletions(-) diff --git a/doc/src/Build_cmake.rst b/doc/src/Build_cmake.rst index 7a60ffa437..89f197b25f 100644 --- a/doc/src/Build_cmake.rst +++ b/doc/src/Build_cmake.rst @@ -1,68 +1,126 @@ Build LAMMPS with CMake ======================= -This page is a short summary of how to use CMake to build LAMMPS. -Details on CMake variables that enable specific LAMMPS build options -are given on the pages linked to from the :doc:`Build ` doc page. +This page describes how to use CMake in general to build LAMMPS. +Details for specific compile time settings and options for optional +add-on packages are discussed with those packages. Links to those +pages on the :doc:`Build overview ` page. + +The following text assumes some familiarity with CMake and focuses on +using the command line tool ``cmake`` and what settings are supported +for building LAMMPS. A more detailed tutorial on how to use ``cmake`` +itself, the text mode or graphical user interface, change the generated +output files for different build tools and development environments is +on a :doc:`separate page `. + +LAMMPS currently requires that CMake version 3.10 or later is available. + +Advantages of using CMake +^^^^^^^^^^^^^^^^^^^^^^^^^ + +CMake is an alternative to compiling LAMMPS in the traditional way +through :doc:`(manually customized) makefiles ` and a rather +recent addition to LAMMPS thanks to the efforts of Christoph Junghans +(LANL) and Richard Berger (Temple U). Using CMake has multiple +advantages that are specifically helpful for people with limited +experience in compiling software or for people that want to modify or +extend LAMMPS. + +- CMake can detect available hardware, tools, features, and libraries + and adapt the LAMMPS build configuration accordingly. +- CMake can output files for different build tools and also can generate + support files for use with popular integrated development environments + (IDEs). +- CMake will build all components in a single build operation. +- CMake supports out-of-source compilation, so multiple configurations + and settings with different choices of LAMMPS packages can be + configured and built concurrently from the same source tree. +- CMake simplifies packaging of LAMMPS for Linux distributions, + environment modules, or automated build tools like `Homebrew + `_. -Richard Berger (Temple U) has also written a `more comprehensive guide `_ -for how to use CMake to build LAMMPS. If you are new to CMake it is a -good place to start. +.. _cmake_build: ----------- +Getting started +^^^^^^^^^^^^^^^ Building LAMMPS with CMake is a two-step process. First you use CMake -to create a build environment in a new directory. On Linux systems, -this will be by default based on Unix-style makefiles for use with make. -Then you use the *make* command to build LAMMPS, which uses the created -Makefile(s). Example: - -.. code-block:: bash +to create a build environment in a new directory. For that purpose you +can use either the command-line utility ``cmake`` (or ``cmake3``), the +text-mode UI utility ``ccmake`` (or ``ccmake3``) or the graphical +utility ``cmake-gui``, or use them interchangeably. - cd lammps # change to the LAMMPS distribution directory - mkdir build; cd build # create a new directory (folder) for build - cmake [options ...] ../cmake # configuration with (command-line) cmake - cmake --build . # compilation (or type "make") +Here is a minimal example using the command line version of CMake to +build LAMMPS with no add-on packages enabled and no customization: -The ``cmake`` command will detect available features, enable selected -packages and options, and will generate the build environment. By default -this build environment will be created for "Unix Makefiles" on most -platforms and particularly on Linux. However, alternate build tools -(e.g. Ninja) and project files for Integrated Development Environments -(IDEs) like Eclipse, CodeBlocks, or Kate can be generated, too. This is -selected via the ``-G`` command line flag. Further details about features -and settings for CMake are in the `CMake online documentation `_ - -.. _cmake_doc: https://cmake.org/documentation/ +.. code-block:: bash -For the rest of the documentation -we will assume that the build environment is generated for "Unix Makefiles" -and thus the ``make`` command will be used to compile and link LAMMPS as -indicated above, producing (by default) an executable called ``lmp`` and -a library called ``liblammps.a`` in the ``build`` folder. + cd lammps # change to the LAMMPS distribution directory + mkdir build; cd build # create and use a build directory + cmake ../cmake # configuration reading CMake scripts from ../cmake + cmake --build . # compilation (or type "make") + +This will create and change into a folder called ``build``, then run the +configuration step to generate build files for the default build command +and then launch that build command to compile LAMMPS. During the +configuration step CMake will try to detect whether support for MPI, +OpenMP, FFTW, gzip, JPEG, PNG, and ffmpeg are available and enable the +corresponding configuration settings. The progress of this +configuration can be followed on the screen and a summary of selected +options and settings will be printed at the end. The ``cmake --build +.`` command will launch the compilation, which, if successful, will +ultimately produce a library ``liblammps.a`` and the LAMMPS executable +``lmp`` inside the ``build`` folder. If your machine has multiple CPU cores (most do these days), you can -compile sources in parallel with a command like ``make -j N`` (with N -being the maximum number of concurrently executed tasks). Also -installation of the ``ccache`` (= Compiler Cache) software may speed -up repeated compilation, e.g. during code development, significantly. +speed this up by compiling sources in parallel with ``make -j N`` (with +N being the maximum number of concurrently executed tasks). Also +installation of the `ccache `_ (= Compiler Cache) +software may speed up repeated compilation significantly, e.g. during code +development. After compilation, you may optionally install the LAMMPS executable into your system with: .. code-block:: bash - make install # optional, copy LAMMPS executable & library elsewhere + make install # optional, copy compiled files into installation location -This will install the lammps executable and library (if requested), some -tools (if configured) and additional files like library API headers, -manpages, potential and force field files. The location of the installation -tree is set by the CMake variable "CMAKE_INSTALL_PREFIX" which defaults -to ${HOME}/.local +This will install the LAMMPS executable and library, some tools (if configured) +and additional files like LAMMPS API headers, manpages, potential and force field +files. The location of the installation tree defaults to ``${HOME}/.local``. + + + +.. _cmake_options: + +CMake configuration and build options +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +The CMake commands have one mandatory argument: a folder containing a +file called ``CMakeLists.txt`` (for LAMMPS it is located in the +``cmake`` folder) or a folder containing a file called +``CMakeCache.txt``, which is generated at the end of the CMake +configuration step. The cache file contains all current CMake settings. +Thus a configuration can be quickly modified by directing CMake to the +location of this cache file and then using options that are supposed to +be altered. + +To modify settings, enable or disable features, you need to set *variables* +with either the *-D* command line flag or edit them . This can be used several times. +There are 3 major command line options used to change settings during +CMake configuration. + +Generating files for alternate build tools (e.g. Ninja) and project files +for IDEs like Eclipse, CodeBlocks, or Kate can be selected using the *-G* +command line flag. A list of available settings is given when running +``cmake --help``. Further details about features and settings for CMake +are in the `CMake online documentation `_ +For the rest of this manual we will assume that the build environment +is generated for "Unix Makefiles" and thus the ``cmake --build .`` will +call the ``make`` command or you can use it directly. ----------- -.. _cmake_build: There are 3 variants of the CMake command itself: a command-line version (``cmake`` or ``cmake3``), a text mode UI version (``ccmake`` or ``ccmake3``), -- GitLab From 60910e64f12a122e9f2bed4c86ecef66dbe39c57 Mon Sep 17 00:00:00 2001 From: LunarLanding <4441338+LunarLanding@users.noreply.github.com> Date: Sat, 11 Apr 2020 17:17:48 +0100 Subject: [PATCH 258/717] Fix typo in latex formula (cosine was not squared) What the title says; I am assuming it is squared in the implementation. --- doc/src/pair_cosine_squared.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/src/pair_cosine_squared.rst b/doc/src/pair_cosine_squared.rst index b7fa29bbd5..a8cf206135 100644 --- a/doc/src/pair_cosine_squared.rst +++ b/doc/src/pair_cosine_squared.rst @@ -46,7 +46,7 @@ Style *cosine/squared* computes a potential of the form E = \begin{cases} -\epsilon& \quad r < \sigma \\ - -\epsilon\cos\left(\frac{\pi\left(r - \sigma\right)}{2\left(r_c - \sigma\right)}\right)&\quad \sigma \leq r < r_c \\ + -\epsilon\cos\left(\frac{\pi\left(r - \sigma\right)}{2\left(r_c - \sigma\right)}\right)^2&\quad \sigma \leq r < r_c \\ 0& \quad r \geq r_c \end{cases} -- GitLab From 15c89c388befcd9e62f7d2bb6231cf10759c532e Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 11 Apr 2020 12:43:00 -0400 Subject: [PATCH 259/717] add link target --- doc/src/Build_package.rst | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/src/Build_package.rst b/doc/src/Build_package.rst index 2e0bea723a..f2511bb6a4 100644 --- a/doc/src/Build_package.rst +++ b/doc/src/Build_package.rst @@ -130,6 +130,8 @@ src directory. ---------- +.. _cmake_presets: + **CMake shortcuts for installing many packages**\ : Instead of specifying all the CMake options via the command-line, -- GitLab From d50013ed16f465fc41855199f3ca52f504392094 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 11 Apr 2020 12:43:31 -0400 Subject: [PATCH 260/717] complete rewrite of the CMake build overview page --- doc/src/Build_cmake.rst | 247 ++++++++++------------------------------ 1 file changed, 63 insertions(+), 184 deletions(-) diff --git a/doc/src/Build_cmake.rst b/doc/src/Build_cmake.rst index 89f197b25f..70a9767f23 100644 --- a/doc/src/Build_cmake.rst +++ b/doc/src/Build_cmake.rst @@ -2,9 +2,9 @@ Build LAMMPS with CMake ======================= This page describes how to use CMake in general to build LAMMPS. -Details for specific compile time settings and options for optional -add-on packages are discussed with those packages. Links to those -pages on the :doc:`Build overview ` page. +Details for specific compile time settings and options to enable +and configure add-on packages are discussed with those packages. +Links to those pages on the :doc:`Build overview ` page. The following text assumes some familiarity with CMake and focuses on using the command line tool ``cmake`` and what settings are supported @@ -13,7 +13,21 @@ itself, the text mode or graphical user interface, change the generated output files for different build tools and development environments is on a :doc:`separate page `. -LAMMPS currently requires that CMake version 3.10 or later is available. +.. note:: + + LAMMPS currently requires that CMake version 3.10 or later is available; + version 3.12 or later is preferred. + +.. warning:: + + You must not mix the :doc:`traditional make based ` + LAMMPS build procedure with using CMake. Thus no packages may be + installed or a build been previously attempted in the LAMMPS source + directory by using ``make ``. CMake will detect if this is + the case and generate an error. To remove conflicting files from the + ``src`` you can use the command ``make no-all purge`` which will + un-install all packages and delete all auto-generated files. + Advantages of using CMake ^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -26,18 +40,19 @@ advantages that are specifically helpful for people with limited experience in compiling software or for people that want to modify or extend LAMMPS. -- CMake can detect available hardware, tools, features, and libraries - and adapt the LAMMPS build configuration accordingly. -- CMake can output files for different build tools and also can generate - support files for use with popular integrated development environments - (IDEs). -- CMake will build all components in a single build operation. -- CMake supports out-of-source compilation, so multiple configurations - and settings with different choices of LAMMPS packages can be - configured and built concurrently from the same source tree. -- CMake simplifies packaging of LAMMPS for Linux distributions, - environment modules, or automated build tools like `Homebrew - `_. +- Detect available hardware, tools, features, and libraries and adapt + the LAMMPS build configuration accordingly. +- Output files for different build tools or integrated development + environments (IDEs). +- Customization settings with text mode or graphical user interface. No + knowledge of make file format and syntax required. +- All components compiled in a single build operation. +- Support for out-of-source compilation. Multiple configurations and + settings with different choices of LAMMPS packages, settings, or + compilers can be configured and built concurrently from the same + source tree. +- Simplified packaging of LAMMPS for Linux distributions, environment + modules, or automated build tools like `Homebrew `_. .. _cmake_build: @@ -45,13 +60,12 @@ Getting started ^^^^^^^^^^^^^^^ Building LAMMPS with CMake is a two-step process. First you use CMake -to create a build environment in a new directory. For that purpose you +to generate build environment in a new directory. For that purpose you can use either the command-line utility ``cmake`` (or ``cmake3``), the text-mode UI utility ``ccmake`` (or ``ccmake3``) or the graphical -utility ``cmake-gui``, or use them interchangeably. - -Here is a minimal example using the command line version of CMake to -build LAMMPS with no add-on packages enabled and no customization: +utility ``cmake-gui``, or use them interchangeably. Here is a minimal +example using the command line version of CMake to build LAMMPS with no +add-on packages enabled and no customization: .. code-block:: bash @@ -90,174 +104,38 @@ This will install the LAMMPS executable and library, some tools (if configured) and additional files like LAMMPS API headers, manpages, potential and force field files. The location of the installation tree defaults to ``${HOME}/.local``. - - .. _cmake_options: -CMake configuration and build options -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +Configuration and build options +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ The CMake commands have one mandatory argument: a folder containing a file called ``CMakeLists.txt`` (for LAMMPS it is located in the -``cmake`` folder) or a folder containing a file called +``cmake`` folder) or a build folder containing a file called ``CMakeCache.txt``, which is generated at the end of the CMake -configuration step. The cache file contains all current CMake settings. -Thus a configuration can be quickly modified by directing CMake to the -location of this cache file and then using options that are supposed to -be altered. +configuration step. The cache file contains all current CMake settings. To modify settings, enable or disable features, you need to set *variables* -with either the *-D* command line flag or edit them . This can be used several times. -There are 3 major command line options used to change settings during -CMake configuration. +with either the *-D* command line flag (``-D VARIABLE1_NAME=value``) or +change them in the text mode of graphical user interface. The *-D* flag +can be used several times in one command. + +For your convenience we provide :ref:`CMake presets ` +that combine multiple settings to enable optional LAMMPS packages or use +a different compiler tool chain. Those are loaded with the *-C* flag +(``-C ../cmake/presets/minimal.cmake``). This step would only be needed +once, as the settings from the preset files are stored in the +``CMakeCache.txt`` file. It is also possible to customize the build +by adding one or more *-D* flags to the CMake command line. Generating files for alternate build tools (e.g. Ninja) and project files for IDEs like Eclipse, CodeBlocks, or Kate can be selected using the *-G* -command line flag. A list of available settings is given when running -``cmake --help``. Further details about features and settings for CMake -are in the `CMake online documentation `_ -For the rest of this manual we will assume that the build environment -is generated for "Unix Makefiles" and thus the ``cmake --build .`` will -call the ``make`` command or you can use it directly. - - - -There are 3 variants of the CMake command itself: a command-line version -(``cmake`` or ``cmake3``), a text mode UI version (``ccmake`` or ``ccmake3``), -and a graphical GUI version (``cmake-gui``). You can use any of them -interchangeably to configure and create the LAMMPS build environment. -On Linux all the versions produce a Makefile as their output by default. -See more details on each below. - -You can specify a variety of options with any of the 3 versions, which -affect how the build is performed and what is included in the LAMMPS -executable. Links to pages explaining all the options are listed on -the :doc:`Build ` doc page. - -You must perform the CMake build system generation and compilation in -a new directory you create. It can be anywhere on your local machine. -In these Build pages we assume that you are building in a directory -called ``lammps/build``. You can perform separate builds independently -with different options, so long as you perform each of them in a -separate directory you create. All the auxiliary files created by one -build process (executable, object files, log files, etc) are stored in -this directory or sub-directories within it that CMake creates. - -.. note:: - - To perform a CMake build, no packages can be installed or a build - been previously attempted in the LAMMPS src directory by using ``make`` - commands to :doc:`perform a conventional LAMMPS build `. - CMake detects if this is the case and generates an error, telling you - to type ``make no-all purge`` in the src directory to un-install all - packages. The purge removes all the \*.h files auto-generated by - make. - -You must have CMake version 3.10 or later on your system to build -LAMMPS. Installation instructions for CMake are below. - -After the initial build, if you edit LAMMPS source files, or add your -own new files to the source directory, you can just re-type make from -your build directory and it will re-compile only the files that have -changed. If you want to change CMake options you can run cmake (or -ccmake or cmake-gui) again from the same build directory and alter -various options; see details below. Or you can remove the entire build -folder, recreate the directory and start over. - ----------- - -**Command-line version of CMake**\ : - -.. code-block:: bash - - cmake [options ...] /path/to/lammps/cmake # build from any dir - cmake [options ...] ../cmake # build from lammps/build - cmake3 [options ...] ../cmake # build from lammps/build - -The cmake command takes one required argument, which is the LAMMPS -cmake directory which contains the CMakeLists.txt file. - -The argument can be prefixed or followed by various CMake -command-line options. Several useful ones are: - -.. code-block:: bash - - -D CMAKE_INSTALL_PREFIX=path # where to install LAMMPS executable/lib if desired - -D CMAKE_BUILD_TYPE=type # type = RelWithDebInfo (default), Release, MinSizeRel, or Debug - -G output # style of output CMake generates (e.g. "Unix Makefiles" or "Ninja") - -D CMAKE_MAKE_PROGRAM=builder # name of the builder executable (e.g. when using "gmake" instead of "make") - -DVARIABLE=value # setting for a LAMMPS feature to enable - -D VARIABLE=value # ditto, but cannot come after CMakeLists.txt dir - -C path/to/preset/file # load some CMake settings before configuring - -All the LAMMPS-specific -D variables that a LAMMPS build supports are -described on the pages linked to from the :doc:`Build ` doc page. -All of these variable names are upper-case and their values are -lower-case, e.g. -D LAMMPS_SIZES=smallbig. For boolean values, any of -these forms can be used: yes/no, on/off, 1/0. - -On Unix/Linux machines, CMake generates a Makefile by default to -perform the LAMMPS build. Alternate forms of build info can be -generated via the -G switch, e.g. Visual Studio on a Windows machine, -Xcode on MacOS, or KDevelop on Linux. Type ``cmake --help`` to see the -"Generator" styles of output your system supports. - -.. note:: - - When CMake runs, it prints configuration info to the screen. - You should review this to verify all the features you requested were - enabled, including packages. You can also see what compilers and - compile options will be used for the build. Any errors in CMake - variable syntax will also be flagged, e.g. mis-typed variable names or - variable values. - -CMake creates a CMakeCache.txt file when it runs. This stores all the -settings, so that when running CMake again you can use the current -folder '.' instead of the path to the LAMMPS cmake folder as the -required argument to the CMake command. Either way the existing -settings will be inherited unless the CMakeCache.txt file is removed. - -If you later want to change a setting you can rerun cmake in the build -directory with different setting. Please note that some automatically -detected variables will not change their value when you rerun cmake. -In these cases it is usually better to first remove all the -files/directories in the build directory, or start with a fresh build -directory. - ----------- - -**Curses version (terminal-style menu) of CMake**\ : - -.. code-block:: bash - - ccmake ../cmake - -You initiate the configuration and build environment generation steps -separately. For the first you have to type **c**\ , for the second you -have to type **g**\ . You may need to type **c** multiple times, and may be -required to edit some of the entries of CMake configuration variables -in between. Please see the `ccmake manual `_ for -more information. - ----------- - -**GUI version of CMake**\ : - -.. code-block:: bash - - cmake-gui ../cmake - -You initiate the configuration and build environment generation steps -separately. For the first you have to click on the **Configure** button, -for the second you have to click on the **Generate** button. You may -need to click on **Configure** multiple times, and may be required to -edit some of the entries of CMake configuration variables in between. -Please see the `cmake-gui manual `_ -for more information. +command line flag. A list of available generator settings for your +specific CMake version is given when running ``cmake --help``. ----------- -**Installing CMake** +Installing CMake +^^^^^^^^^^^^^^^^ Check if your machine already has CMake installed: @@ -274,11 +152,12 @@ software packages, do this: module list # is a module for cmake already loaded? module avail # is a module for cmake available? - module load cmake3 # load cmake module with appropriate name - -Most Linux distributions offer pre-compiled cmake packages through -their package management system. If you do not have CMake or a new -enough version, you can download the latest version at -`https://cmake.org/download/ `_. -Instructions on how to install it on various platforms can be found -`on this page `_. + module load cmake # load cmake module with appropriate name + +Most Linux distributions offer pre-compiled cmake packages through their +package management system. If you do not have CMake or a recent enough +version (Note: for CentOS 7.x you need to enable the EPEL repository), +you can download the latest version from `https://cmake.org/download/ +`_. Instructions on how to install it on +various platforms can be found `on this page +`_. -- GitLab From 8407a778933b07202cd93972267f67dd3be6d14c Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 11 Apr 2020 12:43:50 -0400 Subject: [PATCH 261/717] add text segments removed from other pages. --- doc/src/Howto_cmake.rst | 135 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 135 insertions(+) diff --git a/doc/src/Howto_cmake.rst b/doc/src/Howto_cmake.rst index ee1d2ecc0b..2e97a92f9f 100644 --- a/doc/src/Howto_cmake.rst +++ b/doc/src/Howto_cmake.rst @@ -1,6 +1,10 @@ Using CMake with LAMMPS tutorial ================================ +Thus a configuration can be quickly modified by directing CMake to the +location of this cache file and then using options that are supposed to +be altered. + .. list-table:: @@ -42,3 +46,134 @@ Using CMake with LAMMPS tutorial Options screen of ``cmake-gui`` +You must have CMake version 3.10 or later on your system to build +LAMMPS. Installation instructions for CMake are below. + +After the initial build, if you edit LAMMPS source files, or add your +own new files to the source directory, you can just re-type make from +your build directory and it will re-compile only the files that have +changed. If you want to change CMake options you can run cmake (or +ccmake or cmake-gui) again from the same build directory and alter +various options; see details below. Or you can remove the entire build +folder, recreate the directory and start over. + +. Further details about features and settings for CMake +are in the `CMake online documentation `_ +For the rest of this manual we will assume that the build environment +is generated for "Unix Makefiles" and thus the ``cmake --build .`` will +call the ``make`` command or you can use it directly. + + + +There are 3 variants of the CMake command itself: a command-line version +(``cmake`` or ``cmake3``), a text mode UI version (``ccmake`` or ``ccmake3``), +and a graphical GUI version (``cmake-gui``). You can use any of them +interchangeably to configure and create the LAMMPS build environment. +On Linux all the versions produce a Makefile as their output by default. +See more details on each below. + +You can specify a variety of options with any of the 3 versions, which +affect how the build is performed and what is included in the LAMMPS +executable. Links to pages explaining all the options are listed on +the :doc:`Build ` doc page. + +You must perform the CMake build system generation and compilation in +a new directory you create. It can be anywhere on your local machine. +In these Build pages we assume that you are building in a directory +called ``lammps/build``. You can perform separate builds independently +with different options, so long as you perform each of them in a +separate directory you create. All the auxiliary files created by one +build process (executable, object files, log files, etc) are stored in +this directory or sub-directories within it that CMake creates. + +---------- + +**Command-line version of CMake**\ : + +.. code-block:: bash + + cmake [options ...] /path/to/lammps/cmake # build from any dir + cmake [options ...] ../cmake # build from lammps/build + cmake3 [options ...] ../cmake # build from lammps/build + +The cmake command takes one required argument, which is the LAMMPS +cmake directory which contains the CMakeLists.txt file. + +The argument can be prefixed or followed by various CMake +command-line options. Several useful ones are: + +.. code-block:: bash + + -D CMAKE_INSTALL_PREFIX=path # where to install LAMMPS executable/lib if desired + -D CMAKE_BUILD_TYPE=type # type = RelWithDebInfo (default), Release, MinSizeRel, or Debug + -G output # style of output CMake generates (e.g. "Unix Makefiles" or "Ninja") + -D CMAKE_MAKE_PROGRAM=builder # name of the builder executable (e.g. when using "gmake" instead of "make") + -DVARIABLE=value # setting for a LAMMPS feature to enable + -D VARIABLE=value # ditto, but cannot come after CMakeLists.txt dir + -C path/to/preset/file # load some CMake settings before configuring + +All the LAMMPS-specific -D variables that a LAMMPS build supports are +described on the pages linked to from the :doc:`Build ` doc page. +All of these variable names are upper-case and their values are +lower-case, e.g. -D LAMMPS_SIZES=smallbig. For boolean values, any of +these forms can be used: yes/no, on/off, 1/0. + +On Unix/Linux machines, CMake generates a Makefile by default to +perform the LAMMPS build. Alternate forms of build info can be +generated via the -G switch, e.g. Visual Studio on a Windows machine, +Xcode on MacOS, or KDevelop on Linux. Type ``cmake --help`` to see the +"Generator" styles of output your system supports. + +.. note:: + + When CMake runs, it prints configuration info to the screen. + You should review this to verify all the features you requested were + enabled, including packages. You can also see what compilers and + compile options will be used for the build. Any errors in CMake + variable syntax will also be flagged, e.g. mis-typed variable names or + variable values. + +CMake creates a CMakeCache.txt file when it runs. This stores all the +settings, so that when running CMake again you can use the current +folder '.' instead of the path to the LAMMPS cmake folder as the +required argument to the CMake command. Either way the existing +settings will be inherited unless the CMakeCache.txt file is removed. + +If you later want to change a setting you can rerun cmake in the build +directory with different setting. Please note that some automatically +detected variables will not change their value when you rerun cmake. +In these cases it is usually better to first remove all the +files/directories in the build directory, or start with a fresh build +directory. + +---------- + +**Curses version (terminal-style menu) of CMake**\ : + +.. code-block:: bash + + ccmake ../cmake + +You initiate the configuration and build environment generation steps +separately. For the first you have to type **c**\ , for the second you +have to type **g**\ . You may need to type **c** multiple times, and may be +required to edit some of the entries of CMake configuration variables +in between. Please see the `ccmake manual `_ for +more information. + +---------- + +**GUI version of CMake**\ : + +.. code-block:: bash + + cmake-gui ../cmake + +You initiate the configuration and build environment generation steps +separately. For the first you have to click on the **Configure** button, +for the second you have to click on the **Generate** button. You may +need to click on **Configure** multiple times, and may be required to +edit some of the entries of CMake configuration variables in between. +Please see the `cmake-gui manual `_ +for more information. + -- GitLab From 35bb5977470f1edbc3f118d67be0e12463fad218 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 11 Apr 2020 16:11:27 -0400 Subject: [PATCH 262/717] fix some whitespace issues: replace tabs with spaces, remove DOS/Windows style CR-LF --- src/CORESHELL/pair_lj_class2_coul_long_cs.cpp | 1146 ++++++++--------- src/CORESHELL/pair_lj_class2_coul_long_cs.h | 134 +- 2 files changed, 640 insertions(+), 640 deletions(-) diff --git a/src/CORESHELL/pair_lj_class2_coul_long_cs.cpp b/src/CORESHELL/pair_lj_class2_coul_long_cs.cpp index bf103612ab..9fb7ad118e 100644 --- a/src/CORESHELL/pair_lj_class2_coul_long_cs.cpp +++ b/src/CORESHELL/pair_lj_class2_coul_long_cs.cpp @@ -1,573 +1,573 @@ -/* ---------------------------------------------------------------------- - 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 "pair_lj_class2_coul_long_cs.h" -#include -#include -#include -#include "atom.h" -#include "comm.h" -#include "force.h" -#include "kspace.h" -#include "update.h" -#include "respa.h" -#include "neighbor.h" -#include "neigh_list.h" -#include "neigh_request.h" -#include "math_const.h" -#include "memory.h" -#include "error.h" -#include "utils.h" - -using namespace LAMMPS_NS; -using namespace MathConst; - -#define EWALD_F 1.12837917 -#define EWALD_P 0.3275911 -#define A1 0.254829592 -#define A2 -0.284496736 -#define A3 1.421413741 -#define A4 -1.453152027 -#define A5 1.061405429 - -#define EPSILON 1.0e-20 -#define EPS_EWALD 1.0e-6 -#define EPS_EWALD_SQR 1.0e-12 - -/* ---------------------------------------------------------------------- */ - -PairLJClass2CoulLongCS::PairLJClass2CoulLongCS(LAMMPS *lmp) : PairLJClass2CoulLong(lmp) -{ - ewaldflag = pppmflag = 1; - respa_enable = 1; - writedata = 1; - ftable = NULL; -} - -/* ---------------------------------------------------------------------- */ - -void PairLJClass2CoulLongCS::compute(int eflag, int vflag) -{ - int i,j,ii,jj,inum,jnum,itable,itype,jtype; - double qtmp,xtmp,ytmp,ztmp,delx,dely,delz,evdwl,ecoul,fpair; - double fraction,table; - double rsq,r,rinv,r2inv,r3inv,r6inv,forcecoul,forcelj; - double grij,expm2,prefactor,t,erfc; - double factor_coul,factor_lj; - int *ilist,*jlist,*numneigh,**firstneigh; - - evdwl = ecoul = 0.0; - ev_init(eflag,vflag); - - double **x = atom->x; - double **f = atom->f; - double *q = atom->q; - int *type = atom->type; - int nlocal = atom->nlocal; - double *special_coul = force->special_coul; - double *special_lj = force->special_lj; - int newton_pair = force->newton_pair; - double qqrd2e = force->qqrd2e; - - 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]; - qtmp = q[i]; - 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)]; - factor_coul = special_coul[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]) { - rsq += EPSILON; // Add Epsilon for case: r = 0; Interaction must be removed by special bond; - r2inv = 1.0/rsq; - - if (rsq < cut_coulsq) { - if (!ncoultablebits || rsq <= tabinnersq) { - r = sqrt(rsq); - prefactor = qqrd2e * qtmp*q[j]; - if (factor_coul < 1.0) { - // When bonded parts are being calculated a minimal distance (EPS_EWALD) - // has to be added to the prefactor and erfc in order to make the - // used approximation functions for the Ewald correction valid - grij = g_ewald * (r+EPS_EWALD); - expm2 = exp(-grij*grij); - t = 1.0 / (1.0 + EWALD_P*grij); - erfc = t * (A1+t*(A2+t*(A3+t*(A4+t*A5)))) * expm2; - prefactor /= (r+EPS_EWALD); - forcecoul = prefactor * (erfc + EWALD_F*grij*expm2 - (1.0-factor_coul)); - // Additionally r2inv needs to be accordingly modified since the later - // scaling of the overall force shall be consistent - r2inv = 1.0/(rsq + EPS_EWALD_SQR); - } else { - grij = g_ewald * r; - expm2 = exp(-grij*grij); - t = 1.0 / (1.0 + EWALD_P*grij); - erfc = t * (A1+t*(A2+t*(A3+t*(A4+t*A5)))) * expm2; - prefactor /= r; - forcecoul = prefactor * (erfc + EWALD_F*grij*expm2); - } - } else { - union_int_float_t rsq_lookup; - rsq_lookup.f = rsq; - itable = rsq_lookup.i & ncoulmask; - itable >>= ncoulshiftbits; - fraction = (rsq_lookup.f - rtable[itable]) * drtable[itable]; - table = ftable[itable] + fraction*dftable[itable]; - forcecoul = qtmp*q[j] * table; - if (factor_coul < 1.0) { - table = ctable[itable] + fraction*dctable[itable]; - prefactor = qtmp*q[j] * table; - forcecoul -= (1.0-factor_coul)*prefactor; - } - } - } else forcecoul = 0.0; - - if (rsq < cut_ljsq[itype][jtype]) { - rinv = sqrt(r2inv); - r3inv = r2inv*rinv; - r6inv = r3inv*r3inv; - forcelj = r6inv * (lj1[itype][jtype]*r3inv - lj2[itype][jtype]); - } else forcelj = 0.0; - - fpair = (forcecoul + factor_lj*forcelj) * r2inv; - - 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 (eflag) { - if (rsq < cut_coulsq) { - if (!ncoultablebits || rsq <= tabinnersq) - ecoul = prefactor*erfc; - else { - table = etable[itable] + fraction*detable[itable]; - ecoul = qtmp*q[j] * table; - } - if (factor_coul < 1.0) ecoul -= (1.0-factor_coul)*prefactor; - } else ecoul = 0.0; - if (rsq < cut_ljsq[itype][jtype]) { - evdwl = r6inv*(lj3[itype][jtype]*r3inv-lj4[itype][jtype]) - - offset[itype][jtype]; - evdwl *= factor_lj; - } else evdwl = 0.0; - } - - if (evflag) ev_tally(i,j,nlocal,newton_pair, - evdwl,ecoul,fpair,delx,dely,delz); - } - } - } - - if (vflag_fdotr) virial_fdotr_compute(); -} - -/* ---------------------------------------------------------------------- */ - -void PairLJClass2CoulLongCS::compute_inner() -{ - int i,j,ii,jj,inum,jnum,itype,jtype; - double qtmp,xtmp,ytmp,ztmp,delx,dely,delz,fpair; - double rsq,rinv,r2inv,r3inv,r6inv,forcecoul,forcelj,factor_coul,factor_lj; - double rsw; - int *ilist,*jlist,*numneigh,**firstneigh; - - double **x = atom->x; - double **f = atom->f; - double *q = atom->q; - int *type = atom->type; - int nlocal = atom->nlocal; - double *special_coul = force->special_coul; - double *special_lj = force->special_lj; - int newton_pair = force->newton_pair; - double qqrd2e = force->qqrd2e; - - inum = list->inum_inner; - ilist = list->ilist_inner; - numneigh = list->numneigh_inner; - firstneigh = list->firstneigh_inner; - - double cut_out_on = cut_respa[0]; - double cut_out_off = cut_respa[1]; - - double cut_out_diff = cut_out_off - cut_out_on; - double cut_out_on_sq = cut_out_on*cut_out_on; - double cut_out_off_sq = cut_out_off*cut_out_off; - - // loop over neighbors of my atoms - - for (ii = 0; ii < inum; ii++) { - i = ilist[ii]; - qtmp = q[i]; - 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)]; - factor_coul = special_coul[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; - - if (rsq < cut_out_off_sq) { - rsq += EPSILON; // Add Epsilon for case: r = 0; Interaction must be removed by special bond; - r2inv = 1.0/rsq; - forcecoul = qqrd2e * qtmp*q[j]*sqrt(r2inv); - if (factor_coul < 1.0) forcecoul -= (1.0-factor_coul)*forcecoul; - - jtype = type[j]; - if (rsq < cut_ljsq[itype][jtype]) { - rinv = sqrt(r2inv); - r3inv = r2inv*rinv; - r6inv = r3inv*r3inv; - forcelj = r6inv * (lj1[itype][jtype]*r3inv - lj2[itype][jtype]); - } else forcelj = 0.0; - - fpair = (forcecoul + factor_lj*forcelj) * r2inv; - if (rsq > cut_out_on_sq) { - rsw = (sqrt(rsq) - cut_out_on)/cut_out_diff; - fpair *= 1.0 + rsw*rsw*(2.0*rsw-3.0); - } - - 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; - } - } - } - } -} - -/* ---------------------------------------------------------------------- */ - -void PairLJClass2CoulLongCS::compute_middle() -{ - int i,j,ii,jj,inum,jnum,itype,jtype; - double qtmp,xtmp,ytmp,ztmp,delx,dely,delz,fpair; - double rsq,rinv,r2inv,r3inv,r6inv,forcecoul,forcelj,factor_coul,factor_lj; - double rsw; - int *ilist,*jlist,*numneigh,**firstneigh; - - double **x = atom->x; - double **f = atom->f; - double *q = atom->q; - int *type = atom->type; - int nlocal = atom->nlocal; - double *special_coul = force->special_coul; - double *special_lj = force->special_lj; - int newton_pair = force->newton_pair; - double qqrd2e = force->qqrd2e; - - inum = list->inum_middle; - ilist = list->ilist_middle; - numneigh = list->numneigh_middle; - firstneigh = list->firstneigh_middle; - - double cut_in_off = cut_respa[0]; - double cut_in_on = cut_respa[1]; - double cut_out_on = cut_respa[2]; - double cut_out_off = cut_respa[3]; - - double cut_in_diff = cut_in_on - cut_in_off; - double cut_out_diff = cut_out_off - cut_out_on; - double cut_in_off_sq = cut_in_off*cut_in_off; - double cut_in_on_sq = cut_in_on*cut_in_on; - double cut_out_on_sq = cut_out_on*cut_out_on; - double cut_out_off_sq = cut_out_off*cut_out_off; - - // loop over neighbors of my atoms - - for (ii = 0; ii < inum; ii++) { - i = ilist[ii]; - qtmp = q[i]; - 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)]; - factor_coul = special_coul[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; - - if (rsq < cut_out_off_sq && rsq > cut_in_off_sq) { - r2inv = 1.0/rsq; - forcecoul = qqrd2e * qtmp*q[j]*sqrt(r2inv); - if (factor_coul < 1.0) forcecoul -= (1.0-factor_coul)*forcecoul; - - jtype = type[j]; - if (rsq < cut_ljsq[itype][jtype]) { - rinv = sqrt(r2inv); - r3inv = r2inv*rinv; - r6inv = r3inv*r3inv; - forcelj = r6inv * (lj1[itype][jtype]*r3inv - lj2[itype][jtype]); - } else forcelj = 0.0; - - fpair = (forcecoul + factor_lj*forcelj) * r2inv; - if (rsq < cut_in_on_sq) { - rsw = (sqrt(rsq) - cut_in_off)/cut_in_diff; - fpair *= rsw*rsw*(3.0 - 2.0*rsw); - } - if (rsq > cut_out_on_sq) { - rsw = (sqrt(rsq) - cut_out_on)/cut_out_diff; - fpair *= 1.0 + rsw*rsw*(2.0*rsw - 3.0); - } - - 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; - } - } - } - } -} - -/* ---------------------------------------------------------------------- */ - -void PairLJClass2CoulLongCS::compute_outer(int eflag, int vflag) -{ - int i,j,ii,jj,inum,jnum,itype,jtype,itable; - double qtmp,xtmp,ytmp,ztmp,delx,dely,delz,evdwl,ecoul,fpair; - double fraction,table; - double r,rinv,r2inv,r3inv,r6inv,forcecoul,forcelj,factor_coul,factor_lj; - double grij,expm2,prefactor,t,erfc; - double rsw; - int *ilist,*jlist,*numneigh,**firstneigh; - double rsq; - - evdwl = ecoul = 0.0; - ev_init(eflag,vflag); - - double **x = atom->x; - double **f = atom->f; - double *q = atom->q; - int *type = atom->type; - int nlocal = atom->nlocal; - double *special_coul = force->special_coul; - double *special_lj = force->special_lj; - int newton_pair = force->newton_pair; - double qqrd2e = force->qqrd2e; - - inum = list->inum; - ilist = list->ilist; - numneigh = list->numneigh; - firstneigh = list->firstneigh; - - double cut_in_off = cut_respa[2]; - double cut_in_on = cut_respa[3]; - - double cut_in_diff = cut_in_on - cut_in_off; - double cut_in_off_sq = cut_in_off*cut_in_off; - double cut_in_on_sq = cut_in_on*cut_in_on; - - // loop over neighbors of my atoms - - for (ii = 0; ii < inum; ii++) { - i = ilist[ii]; - qtmp = q[i]; - 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)]; - factor_coul = special_coul[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]) { - rsq += EPSILON; // Add Epsilon for case: r = 0; Interaction must be removed by special bond; - r2inv = 1.0/rsq; - - if (rsq < cut_coulsq) { - if (!ncoultablebits || rsq <= tabinnersq) { - r = sqrt(rsq); - grij = g_ewald * r; - expm2 = exp(-grij*grij); - t = 1.0 / (1.0 + EWALD_P*grij); - erfc = t * (A1+t*(A2+t*(A3+t*(A4+t*A5)))) * expm2; - prefactor = qqrd2e * qtmp*q[j]/r; - forcecoul = prefactor * (erfc + EWALD_F*grij*expm2 - 1.0); - if (rsq > cut_in_off_sq) { - if (rsq < cut_in_on_sq) { - rsw = (r - cut_in_off)/cut_in_diff; - forcecoul += prefactor*rsw*rsw*(3.0 - 2.0*rsw); - if (factor_coul < 1.0) - forcecoul -= - (1.0-factor_coul)*prefactor*rsw*rsw*(3.0 - 2.0*rsw); - } else { - forcecoul += prefactor; - if (factor_coul < 1.0) - forcecoul -= (1.0-factor_coul)*prefactor; - } - } - } else { - union_int_float_t rsq_lookup; - rsq_lookup.f = rsq; - itable = rsq_lookup.i & ncoulmask; - itable >>= ncoulshiftbits; - fraction = (rsq_lookup.f - rtable[itable]) * drtable[itable]; - table = ftable[itable] + fraction*dftable[itable]; - forcecoul = qtmp*q[j] * table; - if (factor_coul < 1.0) { - table = ctable[itable] + fraction*dctable[itable]; - prefactor = qtmp*q[j] * table; - forcecoul -= (1.0-factor_coul)*prefactor; - } - } - } else forcecoul = 0.0; - - if (rsq < cut_ljsq[itype][jtype] && rsq > cut_in_off_sq) { - rinv = sqrt(r2inv); - r3inv = r2inv*rinv; - r6inv = r3inv*r3inv; - forcelj = r6inv * (lj1[itype][jtype]*r3inv - lj2[itype][jtype]); - if (rsq < cut_in_on_sq) { - rsw = (sqrt(rsq) - cut_in_off)/cut_in_diff; - forcelj *= rsw*rsw*(3.0 - 2.0*rsw); - } - } else forcelj = 0.0; - - fpair = (forcecoul + forcelj) * r2inv; - - 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 (eflag) { - if (rsq < cut_coulsq) { - if (!ncoultablebits || rsq <= tabinnersq) { - ecoul = prefactor*erfc; - if (factor_coul < 1.0) ecoul -= (1.0-factor_coul)*prefactor; - } else { - table = etable[itable] + fraction*detable[itable]; - ecoul = qtmp*q[j] * table; - if (factor_coul < 1.0) { - table = ptable[itable] + fraction*dptable[itable]; - prefactor = qtmp*q[j] * table; - ecoul -= (1.0-factor_coul)*prefactor; - } - } - } else ecoul = 0.0; - - if (rsq < cut_ljsq[itype][jtype]) { - rinv = sqrt(r2inv); - r3inv = r2inv*rinv; - r6inv = r3inv*r3inv; - evdwl = r6inv*(lj3[itype][jtype]*r3inv-lj4[itype][jtype]) - - offset[itype][jtype]; - evdwl *= factor_lj; - } else evdwl = 0.0; - } - - if (vflag) { - if (rsq < cut_coulsq) { - if (!ncoultablebits || rsq <= tabinnersq) { - forcecoul = prefactor * (erfc + EWALD_F*grij*expm2); - if (factor_coul < 1.0) forcecoul -= (1.0-factor_coul)*prefactor; - } else { - table = vtable[itable] + fraction*dvtable[itable]; - forcecoul = qtmp*q[j] * table; - if (factor_coul < 1.0) { - table = ptable[itable] + fraction*dptable[itable]; - prefactor = qtmp*q[j] * table; - forcecoul -= (1.0-factor_coul)*prefactor; - } - } - } else forcecoul = 0.0; - - if (rsq <= cut_in_off_sq) { - rinv = sqrt(r2inv); - r3inv = r2inv*rinv; - r6inv = r3inv*r3inv; - forcelj = r6inv * (lj1[itype][jtype]*r3inv - lj2[itype][jtype]); - } else if (rsq <= cut_in_on_sq) { - rinv = sqrt(r2inv); - r3inv = r2inv*rinv; - r6inv = r3inv*r3inv; - forcelj = r6inv * (lj1[itype][jtype]*r3inv - lj2[itype][jtype]); - } - fpair = (forcecoul + factor_lj*forcelj) * r2inv; - } - - if (evflag) ev_tally(i,j,nlocal,newton_pair, - evdwl,ecoul,fpair,delx,dely,delz); - } - } - } -} - - +/* ---------------------------------------------------------------------- + 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 "pair_lj_class2_coul_long_cs.h" +#include +#include +#include +#include "atom.h" +#include "comm.h" +#include "force.h" +#include "kspace.h" +#include "update.h" +#include "respa.h" +#include "neighbor.h" +#include "neigh_list.h" +#include "neigh_request.h" +#include "math_const.h" +#include "memory.h" +#include "error.h" +#include "utils.h" + +using namespace LAMMPS_NS; +using namespace MathConst; + +#define EWALD_F 1.12837917 +#define EWALD_P 0.3275911 +#define A1 0.254829592 +#define A2 -0.284496736 +#define A3 1.421413741 +#define A4 -1.453152027 +#define A5 1.061405429 + +#define EPSILON 1.0e-20 +#define EPS_EWALD 1.0e-6 +#define EPS_EWALD_SQR 1.0e-12 + +/* ---------------------------------------------------------------------- */ + +PairLJClass2CoulLongCS::PairLJClass2CoulLongCS(LAMMPS *lmp) : PairLJClass2CoulLong(lmp) +{ + ewaldflag = pppmflag = 1; + respa_enable = 1; + writedata = 1; + ftable = NULL; +} + +/* ---------------------------------------------------------------------- */ + +void PairLJClass2CoulLongCS::compute(int eflag, int vflag) +{ + int i,j,ii,jj,inum,jnum,itable,itype,jtype; + double qtmp,xtmp,ytmp,ztmp,delx,dely,delz,evdwl,ecoul,fpair; + double fraction,table; + double rsq,r,rinv,r2inv,r3inv,r6inv,forcecoul,forcelj; + double grij,expm2,prefactor,t,erfc; + double factor_coul,factor_lj; + int *ilist,*jlist,*numneigh,**firstneigh; + + evdwl = ecoul = 0.0; + ev_init(eflag,vflag); + + double **x = atom->x; + double **f = atom->f; + double *q = atom->q; + int *type = atom->type; + int nlocal = atom->nlocal; + double *special_coul = force->special_coul; + double *special_lj = force->special_lj; + int newton_pair = force->newton_pair; + double qqrd2e = force->qqrd2e; + + 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]; + qtmp = q[i]; + 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)]; + factor_coul = special_coul[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]) { + rsq += EPSILON; // Add Epsilon for case: r = 0; Interaction must be removed by special bond; + r2inv = 1.0/rsq; + + if (rsq < cut_coulsq) { + if (!ncoultablebits || rsq <= tabinnersq) { + r = sqrt(rsq); + prefactor = qqrd2e * qtmp*q[j]; + if (factor_coul < 1.0) { + // When bonded parts are being calculated a minimal distance (EPS_EWALD) + // has to be added to the prefactor and erfc in order to make the + // used approximation functions for the Ewald correction valid + grij = g_ewald * (r+EPS_EWALD); + expm2 = exp(-grij*grij); + t = 1.0 / (1.0 + EWALD_P*grij); + erfc = t * (A1+t*(A2+t*(A3+t*(A4+t*A5)))) * expm2; + prefactor /= (r+EPS_EWALD); + forcecoul = prefactor * (erfc + EWALD_F*grij*expm2 - (1.0-factor_coul)); + // Additionally r2inv needs to be accordingly modified since the later + // scaling of the overall force shall be consistent + r2inv = 1.0/(rsq + EPS_EWALD_SQR); + } else { + grij = g_ewald * r; + expm2 = exp(-grij*grij); + t = 1.0 / (1.0 + EWALD_P*grij); + erfc = t * (A1+t*(A2+t*(A3+t*(A4+t*A5)))) * expm2; + prefactor /= r; + forcecoul = prefactor * (erfc + EWALD_F*grij*expm2); + } + } else { + union_int_float_t rsq_lookup; + rsq_lookup.f = rsq; + itable = rsq_lookup.i & ncoulmask; + itable >>= ncoulshiftbits; + fraction = (rsq_lookup.f - rtable[itable]) * drtable[itable]; + table = ftable[itable] + fraction*dftable[itable]; + forcecoul = qtmp*q[j] * table; + if (factor_coul < 1.0) { + table = ctable[itable] + fraction*dctable[itable]; + prefactor = qtmp*q[j] * table; + forcecoul -= (1.0-factor_coul)*prefactor; + } + } + } else forcecoul = 0.0; + + if (rsq < cut_ljsq[itype][jtype]) { + rinv = sqrt(r2inv); + r3inv = r2inv*rinv; + r6inv = r3inv*r3inv; + forcelj = r6inv * (lj1[itype][jtype]*r3inv - lj2[itype][jtype]); + } else forcelj = 0.0; + + fpair = (forcecoul + factor_lj*forcelj) * r2inv; + + 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 (eflag) { + if (rsq < cut_coulsq) { + if (!ncoultablebits || rsq <= tabinnersq) + ecoul = prefactor*erfc; + else { + table = etable[itable] + fraction*detable[itable]; + ecoul = qtmp*q[j] * table; + } + if (factor_coul < 1.0) ecoul -= (1.0-factor_coul)*prefactor; + } else ecoul = 0.0; + if (rsq < cut_ljsq[itype][jtype]) { + evdwl = r6inv*(lj3[itype][jtype]*r3inv-lj4[itype][jtype]) - + offset[itype][jtype]; + evdwl *= factor_lj; + } else evdwl = 0.0; + } + + if (evflag) ev_tally(i,j,nlocal,newton_pair, + evdwl,ecoul,fpair,delx,dely,delz); + } + } + } + + if (vflag_fdotr) virial_fdotr_compute(); +} + +/* ---------------------------------------------------------------------- */ + +void PairLJClass2CoulLongCS::compute_inner() +{ + int i,j,ii,jj,inum,jnum,itype,jtype; + double qtmp,xtmp,ytmp,ztmp,delx,dely,delz,fpair; + double rsq,rinv,r2inv,r3inv,r6inv,forcecoul,forcelj,factor_coul,factor_lj; + double rsw; + int *ilist,*jlist,*numneigh,**firstneigh; + + double **x = atom->x; + double **f = atom->f; + double *q = atom->q; + int *type = atom->type; + int nlocal = atom->nlocal; + double *special_coul = force->special_coul; + double *special_lj = force->special_lj; + int newton_pair = force->newton_pair; + double qqrd2e = force->qqrd2e; + + inum = list->inum_inner; + ilist = list->ilist_inner; + numneigh = list->numneigh_inner; + firstneigh = list->firstneigh_inner; + + double cut_out_on = cut_respa[0]; + double cut_out_off = cut_respa[1]; + + double cut_out_diff = cut_out_off - cut_out_on; + double cut_out_on_sq = cut_out_on*cut_out_on; + double cut_out_off_sq = cut_out_off*cut_out_off; + + // loop over neighbors of my atoms + + for (ii = 0; ii < inum; ii++) { + i = ilist[ii]; + qtmp = q[i]; + 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)]; + factor_coul = special_coul[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; + + if (rsq < cut_out_off_sq) { + rsq += EPSILON; // Add Epsilon for case: r = 0; Interaction must be removed by special bond; + r2inv = 1.0/rsq; + forcecoul = qqrd2e * qtmp*q[j]*sqrt(r2inv); + if (factor_coul < 1.0) forcecoul -= (1.0-factor_coul)*forcecoul; + + jtype = type[j]; + if (rsq < cut_ljsq[itype][jtype]) { + rinv = sqrt(r2inv); + r3inv = r2inv*rinv; + r6inv = r3inv*r3inv; + forcelj = r6inv * (lj1[itype][jtype]*r3inv - lj2[itype][jtype]); + } else forcelj = 0.0; + + fpair = (forcecoul + factor_lj*forcelj) * r2inv; + if (rsq > cut_out_on_sq) { + rsw = (sqrt(rsq) - cut_out_on)/cut_out_diff; + fpair *= 1.0 + rsw*rsw*(2.0*rsw-3.0); + } + + 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; + } + } + } + } +} + +/* ---------------------------------------------------------------------- */ + +void PairLJClass2CoulLongCS::compute_middle() +{ + int i,j,ii,jj,inum,jnum,itype,jtype; + double qtmp,xtmp,ytmp,ztmp,delx,dely,delz,fpair; + double rsq,rinv,r2inv,r3inv,r6inv,forcecoul,forcelj,factor_coul,factor_lj; + double rsw; + int *ilist,*jlist,*numneigh,**firstneigh; + + double **x = atom->x; + double **f = atom->f; + double *q = atom->q; + int *type = atom->type; + int nlocal = atom->nlocal; + double *special_coul = force->special_coul; + double *special_lj = force->special_lj; + int newton_pair = force->newton_pair; + double qqrd2e = force->qqrd2e; + + inum = list->inum_middle; + ilist = list->ilist_middle; + numneigh = list->numneigh_middle; + firstneigh = list->firstneigh_middle; + + double cut_in_off = cut_respa[0]; + double cut_in_on = cut_respa[1]; + double cut_out_on = cut_respa[2]; + double cut_out_off = cut_respa[3]; + + double cut_in_diff = cut_in_on - cut_in_off; + double cut_out_diff = cut_out_off - cut_out_on; + double cut_in_off_sq = cut_in_off*cut_in_off; + double cut_in_on_sq = cut_in_on*cut_in_on; + double cut_out_on_sq = cut_out_on*cut_out_on; + double cut_out_off_sq = cut_out_off*cut_out_off; + + // loop over neighbors of my atoms + + for (ii = 0; ii < inum; ii++) { + i = ilist[ii]; + qtmp = q[i]; + 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)]; + factor_coul = special_coul[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; + + if (rsq < cut_out_off_sq && rsq > cut_in_off_sq) { + r2inv = 1.0/rsq; + forcecoul = qqrd2e * qtmp*q[j]*sqrt(r2inv); + if (factor_coul < 1.0) forcecoul -= (1.0-factor_coul)*forcecoul; + + jtype = type[j]; + if (rsq < cut_ljsq[itype][jtype]) { + rinv = sqrt(r2inv); + r3inv = r2inv*rinv; + r6inv = r3inv*r3inv; + forcelj = r6inv * (lj1[itype][jtype]*r3inv - lj2[itype][jtype]); + } else forcelj = 0.0; + + fpair = (forcecoul + factor_lj*forcelj) * r2inv; + if (rsq < cut_in_on_sq) { + rsw = (sqrt(rsq) - cut_in_off)/cut_in_diff; + fpair *= rsw*rsw*(3.0 - 2.0*rsw); + } + if (rsq > cut_out_on_sq) { + rsw = (sqrt(rsq) - cut_out_on)/cut_out_diff; + fpair *= 1.0 + rsw*rsw*(2.0*rsw - 3.0); + } + + 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; + } + } + } + } +} + +/* ---------------------------------------------------------------------- */ + +void PairLJClass2CoulLongCS::compute_outer(int eflag, int vflag) +{ + int i,j,ii,jj,inum,jnum,itype,jtype,itable; + double qtmp,xtmp,ytmp,ztmp,delx,dely,delz,evdwl,ecoul,fpair; + double fraction,table; + double r,rinv,r2inv,r3inv,r6inv,forcecoul,forcelj,factor_coul,factor_lj; + double grij,expm2,prefactor,t,erfc; + double rsw; + int *ilist,*jlist,*numneigh,**firstneigh; + double rsq; + + evdwl = ecoul = 0.0; + ev_init(eflag,vflag); + + double **x = atom->x; + double **f = atom->f; + double *q = atom->q; + int *type = atom->type; + int nlocal = atom->nlocal; + double *special_coul = force->special_coul; + double *special_lj = force->special_lj; + int newton_pair = force->newton_pair; + double qqrd2e = force->qqrd2e; + + inum = list->inum; + ilist = list->ilist; + numneigh = list->numneigh; + firstneigh = list->firstneigh; + + double cut_in_off = cut_respa[2]; + double cut_in_on = cut_respa[3]; + + double cut_in_diff = cut_in_on - cut_in_off; + double cut_in_off_sq = cut_in_off*cut_in_off; + double cut_in_on_sq = cut_in_on*cut_in_on; + + // loop over neighbors of my atoms + + for (ii = 0; ii < inum; ii++) { + i = ilist[ii]; + qtmp = q[i]; + 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)]; + factor_coul = special_coul[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]) { + rsq += EPSILON; // Add Epsilon for case: r = 0; Interaction must be removed by special bond; + r2inv = 1.0/rsq; + + if (rsq < cut_coulsq) { + if (!ncoultablebits || rsq <= tabinnersq) { + r = sqrt(rsq); + grij = g_ewald * r; + expm2 = exp(-grij*grij); + t = 1.0 / (1.0 + EWALD_P*grij); + erfc = t * (A1+t*(A2+t*(A3+t*(A4+t*A5)))) * expm2; + prefactor = qqrd2e * qtmp*q[j]/r; + forcecoul = prefactor * (erfc + EWALD_F*grij*expm2 - 1.0); + if (rsq > cut_in_off_sq) { + if (rsq < cut_in_on_sq) { + rsw = (r - cut_in_off)/cut_in_diff; + forcecoul += prefactor*rsw*rsw*(3.0 - 2.0*rsw); + if (factor_coul < 1.0) + forcecoul -= + (1.0-factor_coul)*prefactor*rsw*rsw*(3.0 - 2.0*rsw); + } else { + forcecoul += prefactor; + if (factor_coul < 1.0) + forcecoul -= (1.0-factor_coul)*prefactor; + } + } + } else { + union_int_float_t rsq_lookup; + rsq_lookup.f = rsq; + itable = rsq_lookup.i & ncoulmask; + itable >>= ncoulshiftbits; + fraction = (rsq_lookup.f - rtable[itable]) * drtable[itable]; + table = ftable[itable] + fraction*dftable[itable]; + forcecoul = qtmp*q[j] * table; + if (factor_coul < 1.0) { + table = ctable[itable] + fraction*dctable[itable]; + prefactor = qtmp*q[j] * table; + forcecoul -= (1.0-factor_coul)*prefactor; + } + } + } else forcecoul = 0.0; + + if (rsq < cut_ljsq[itype][jtype] && rsq > cut_in_off_sq) { + rinv = sqrt(r2inv); + r3inv = r2inv*rinv; + r6inv = r3inv*r3inv; + forcelj = r6inv * (lj1[itype][jtype]*r3inv - lj2[itype][jtype]); + if (rsq < cut_in_on_sq) { + rsw = (sqrt(rsq) - cut_in_off)/cut_in_diff; + forcelj *= rsw*rsw*(3.0 - 2.0*rsw); + } + } else forcelj = 0.0; + + fpair = (forcecoul + forcelj) * r2inv; + + 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 (eflag) { + if (rsq < cut_coulsq) { + if (!ncoultablebits || rsq <= tabinnersq) { + ecoul = prefactor*erfc; + if (factor_coul < 1.0) ecoul -= (1.0-factor_coul)*prefactor; + } else { + table = etable[itable] + fraction*detable[itable]; + ecoul = qtmp*q[j] * table; + if (factor_coul < 1.0) { + table = ptable[itable] + fraction*dptable[itable]; + prefactor = qtmp*q[j] * table; + ecoul -= (1.0-factor_coul)*prefactor; + } + } + } else ecoul = 0.0; + + if (rsq < cut_ljsq[itype][jtype]) { + rinv = sqrt(r2inv); + r3inv = r2inv*rinv; + r6inv = r3inv*r3inv; + evdwl = r6inv*(lj3[itype][jtype]*r3inv-lj4[itype][jtype]) - + offset[itype][jtype]; + evdwl *= factor_lj; + } else evdwl = 0.0; + } + + if (vflag) { + if (rsq < cut_coulsq) { + if (!ncoultablebits || rsq <= tabinnersq) { + forcecoul = prefactor * (erfc + EWALD_F*grij*expm2); + if (factor_coul < 1.0) forcecoul -= (1.0-factor_coul)*prefactor; + } else { + table = vtable[itable] + fraction*dvtable[itable]; + forcecoul = qtmp*q[j] * table; + if (factor_coul < 1.0) { + table = ptable[itable] + fraction*dptable[itable]; + prefactor = qtmp*q[j] * table; + forcecoul -= (1.0-factor_coul)*prefactor; + } + } + } else forcecoul = 0.0; + + if (rsq <= cut_in_off_sq) { + rinv = sqrt(r2inv); + r3inv = r2inv*rinv; + r6inv = r3inv*r3inv; + forcelj = r6inv * (lj1[itype][jtype]*r3inv - lj2[itype][jtype]); + } else if (rsq <= cut_in_on_sq) { + rinv = sqrt(r2inv); + r3inv = r2inv*rinv; + r6inv = r3inv*r3inv; + forcelj = r6inv * (lj1[itype][jtype]*r3inv - lj2[itype][jtype]); + } + fpair = (forcecoul + factor_lj*forcelj) * r2inv; + } + + if (evflag) ev_tally(i,j,nlocal,newton_pair, + evdwl,ecoul,fpair,delx,dely,delz); + } + } + } +} + + diff --git a/src/CORESHELL/pair_lj_class2_coul_long_cs.h b/src/CORESHELL/pair_lj_class2_coul_long_cs.h index 3e2e6972d8..b37685bda1 100644 --- a/src/CORESHELL/pair_lj_class2_coul_long_cs.h +++ b/src/CORESHELL/pair_lj_class2_coul_long_cs.h @@ -1,67 +1,67 @@ -/* -*- 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 PAIR_CLASS - -PairStyle(lj/class2/coul/long/cs,PairLJClass2CoulLongCS) - -#else - -#ifndef LMP_PAIR_LJ_CLASS2_COUL_LONG_CS_H -#define LMP_PAIR_LJ_CLASS2_COUL_LONG_CS_H - -#include "pair_lj_class2_coul_long.h" - -namespace LAMMPS_NS { - -class PairLJClass2CoulLongCS : public PairLJClass2CoulLong { - - public: - PairLJClass2CoulLongCS(class LAMMPS *); - virtual void compute(int, int); - void compute_inner(); - void compute_middle(); - void compute_outer(int, int); -}; - -} - -#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: Pair style lj/class2/coul/long requires atom attribute q - -The atom style defined does not have this attribute. - -E: Pair style requires a KSpace style - -No kspace style is defined. - -E: Pair cutoff < Respa interior cutoff - -One or more pairwise cutoffs are too short to use with the specified -rRESPA cutoffs. - -*/ +/* -*- 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 PAIR_CLASS + +PairStyle(lj/class2/coul/long/cs,PairLJClass2CoulLongCS) + +#else + +#ifndef LMP_PAIR_LJ_CLASS2_COUL_LONG_CS_H +#define LMP_PAIR_LJ_CLASS2_COUL_LONG_CS_H + +#include "pair_lj_class2_coul_long.h" + +namespace LAMMPS_NS { + +class PairLJClass2CoulLongCS : public PairLJClass2CoulLong { + + public: + PairLJClass2CoulLongCS(class LAMMPS *); + virtual void compute(int, int); + void compute_inner(); + void compute_middle(); + void compute_outer(int, int); +}; + +} + +#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: Pair style lj/class2/coul/long requires atom attribute q + +The atom style defined does not have this attribute. + +E: Pair style requires a KSpace style + +No kspace style is defined. + +E: Pair cutoff < Respa interior cutoff + +One or more pairwise cutoffs are too short to use with the specified +rRESPA cutoffs. + +*/ -- GitLab From 7a16567e2a3686e2c0e4a7269e4ccec0b67d51f0 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 11 Apr 2020 18:34:37 -0400 Subject: [PATCH 263/717] better version info output with intel compilers --- src/info.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/info.cpp b/src/info.cpp index d6b5c508aa..c02a0499fc 100644 --- a/src/info.cpp +++ b/src/info.cpp @@ -1203,7 +1203,8 @@ char *Info::get_compiler_info() #if __clang__ snprintf(buf,_INFOBUF_SIZE,"Clang C++ %s", __VERSION__); #elif __INTEL_COMPILER - snprintf(buf,_INFOBUF_SIZE,"Intel C++ %s", __VERSION__); + double version = static_cast(__INTEL_COMPILER)*0.01; + snprintf(buf,_INFOBUF_SIZE,"Intel C++ %5.2f.%d / %s", version, __INTEL_COMPILER_UPDATE, __VERSION__); #elif __GNUC__ snprintf(buf,_INFOBUF_SIZE,"GNU C++ %s", __VERSION__); #else -- GitLab From 3fa7265ff8465819f997e02674679e39eaeadc31 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 11 Apr 2020 18:35:37 -0400 Subject: [PATCH 264/717] modernize CMake script code and add version tests for Clang and Intel to switch to OpenMP4 semantics --- cmake/CMakeLists.txt | 12 ++++++++---- src/omp_compat.h | 4 ++-- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index 1f29689f46..bdd1d45187 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -248,11 +248,15 @@ if(BUILD_OMP) message(FATAL_ERROR "Cannot find the 'omp.h' header file required for full OpenMP support") endif() - if ((CMAKE_CXX_COMPILER_ID STREQUAL "GNU") AND (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 8.99.9)) - # GCC 9.x strictly implements OpenMP 4.0 semantics for consts. - add_definitions(-DLAMMPS_OMP_COMPAT=4) + if (((CMAKE_CXX_COMPILER_ID STREQUAL "GNU") AND (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 8.99.9)) OR + ((CMAKE_CXX_COMPILER_ID STREQUAL "Clang") AND (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 9.99.9)) OR + ((CMAKE_CXX_COMPILER_ID STREQUAL "Intel") AND (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 18.99.9)) + ) + # GCC 9.x and later plus Clang 10.x and later implement strict OpenMP 4.0 semantics for consts. + # Intel 18.0 was tested to support both, so we switch to OpenMP 4+ from 19.x onward to be safe. + target_compile_definitions(lammps PRIVATE -DLAMMPS_OMP_COMPAT=4) else() - add_definitions(-DLAMMPS_OMP_COMPAT=3) + target_compile_definitions(lammps PRIVATE -DLAMMPS_OMP_COMPAT=3) endif() target_link_libraries(lammps PRIVATE OpenMP::OpenMP_CXX) endif() diff --git a/src/omp_compat.h b/src/omp_compat.h index add429eea8..d80d6f6f7f 100644 --- a/src/omp_compat.h +++ b/src/omp_compat.h @@ -23,8 +23,8 @@ // // To date, most compilers still accept the OpenMP 3.0 form, // so this is what LAMMPS primarily uses. For those compilers -// that strictly implement OpenMP 4.0 (such as GCC 9.0), we -// give up default(none). +// that strictly implement OpenMP 4.0 (such as GCC 9.0 and later +// or Clang 10.0 and later), we give up default(none). #if LAMMPS_OMP_COMPAT == 4 # define LMP_SHARED(...) # define LMP_DEFAULT_NONE default(shared) -- GitLab From 2edc6939a84ae8882833e80dec17c1d70eb0a411 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 11 Apr 2020 18:51:10 -0400 Subject: [PATCH 265/717] update and correct docs for OpenMP 3.x vs OpenMP 4.x and how to work around it. --- doc/src/Build_basics.rst | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/doc/src/Build_basics.rst b/doc/src/Build_basics.rst index 62b16d9a03..83faf9fc67 100644 --- a/doc/src/Build_basics.rst +++ b/doc/src/Build_basics.rst @@ -142,13 +142,15 @@ please refer to its documentation. **OpenMP Compiler compatibility info**\ : Some compilers do not fully support the ``default(none)`` directive -and others (e.g. GCC version 9 and beyond) may implement OpenMP 4.0 -semantics, which are incompatible with the OpenMP 3.1 semantics used -in LAMMPS (for maximal compatibility with compiler versions in use). -LAMMPS will try to detect compilers that use OpenMP 4.0 semantics and -change the directives accordingly, but if your compiler is not -detected, you may set the define ``-D LAMMPS_OMP_COMPAT=4`` in ``LMP_INC`` -or the CMake build command. +and others (e.g. GCC version 9 and beyond, Clang version 10 and later) +may implement strict OpenMP 4.0 and later semantics, which are incompatible +with the OpenMP 3.1 semantics used in LAMMPS for maximal compatibility +with compiler versions in use. If compilation with OpenMP enabled fails +because of your compiler requiring strict OpenMP 4.0 semantic, you can +change the behvior by adding ``-D LAMMPS_OMP_COMPAT=4`` to the ``LMP_INC`` +variable in your makefile, or add it to the command line while configuring +with CMake. CMake will autodetect the suitable setting for the GNU, Clang, +and Intel compilers. ---------- -- GitLab From fa0cc2c217ef68bef03b781082fc23d6fb543a8a Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 11 Apr 2020 21:36:08 -0400 Subject: [PATCH 266/717] update singularity definition files --- tools/singularity/README.md | 3 ++ tools/singularity/centos7.def | 6 +++- tools/singularity/centos8.def | 4 +++ tools/singularity/fedora30_mingw.def | 6 ++++ tools/singularity/fedora32_mingw.def | 47 ++++++++++++++++++++++++++++ tools/singularity/ubuntu20.04.def | 2 +- 6 files changed, 66 insertions(+), 2 deletions(-) create mode 100644 tools/singularity/fedora32_mingw.def diff --git a/tools/singularity/README.md b/tools/singularity/README.md index 9bd0c2fdcc..a01b1688b8 100644 --- a/tools/singularity/README.md +++ b/tools/singularity/README.md @@ -49,8 +49,11 @@ make | centos7.def | CentOS 7.x with EPEL enabled, no LaTeX | | centos8.def | CentOS 8.x with EPEL enabled | | fedora30_mingw.def | Fedora 30 with MinGW cross-compiler toolchain | +| fedora32_mingw.def | Fedora 32 with MinGW cross-compiler toolchain | | ubuntu16.04.def | Ubuntu 16.04LTS with MPI == OpenMPI, no LaTeX | | ubuntu18.04.def | Ubuntu 18.04LTS with MPI == OpenMPI | | ubuntu18.04_amd_rocm.def | Ubuntu 18.04LTS with AMD ROCm toolkit | +| ubuntu18.04_amd_rocm_cuda.def | Ubuntu 18.04LTS with -"- plus Nvidia CUDA 10.2 | | ubuntu18.04_nvidia.def | Ubuntu 18.04LTS with Nvidia CUDA 10.2 toolkit | | ubuntu18.04_intel_opencl.def | Ubuntu 18.04LTS with Intel OpenCL runtime | +| ubuntu20.04.def | Ubuntu 20.04LTS with MPI == OpenMPI | diff --git a/tools/singularity/centos7.def b/tools/singularity/centos7.def index e1ae6e6373..028823bc49 100644 --- a/tools/singularity/centos7.def +++ b/tools/singularity/centos7.def @@ -6,13 +6,17 @@ From: centos:7 yum -y update yum -y install vim-enhanced \ ccache gcc-c++ gcc-gfortran clang gdb valgrind-openmpi \ - make cmake cmake3 ninja-build patch which file git \ + make cmake cmake3 ninja-build patch which file git Lmod \ libpng-devel libjpeg-devel openmpi-devel mpich-devel python-devel \ python-virtualenv fftw-devel voro++-devel eigen3-devel gsl-devel openblas-devel enchant %environment LC_ALL=C export LC_ALL + unset LOADEDMODULES + . /etc/profile.d/z00_lmod.sh + module purge + module load mpi %labels Author akohlmey diff --git a/tools/singularity/centos8.def b/tools/singularity/centos8.def index 77a8964abb..fff96c5c4a 100644 --- a/tools/singularity/centos8.def +++ b/tools/singularity/centos8.def @@ -19,6 +19,10 @@ From: centos:8 %environment LC_ALL=C export LC_ALL + unset LOADEDMODULES + . /etc/profile.d/modules.sh + module purge + module load mpi %labels Author akohlmey diff --git a/tools/singularity/fedora30_mingw.def b/tools/singularity/fedora30_mingw.def index 2df658676c..ef83d8f0a7 100644 --- a/tools/singularity/fedora30_mingw.def +++ b/tools/singularity/fedora30_mingw.def @@ -36,6 +36,12 @@ From: fedora:30 %environment LC_ALL=C export LC_ALL + # we need to reset any module variables + # inherited from the host. + unset LOADEDMODULES + source /etc/profile.d/modules.sh + module purge + module load mpi %labels Author akohlmey diff --git a/tools/singularity/fedora32_mingw.def b/tools/singularity/fedora32_mingw.def new file mode 100644 index 0000000000..43d5659a19 --- /dev/null +++ b/tools/singularity/fedora32_mingw.def @@ -0,0 +1,47 @@ +BootStrap: docker +From: fedora:32 + +%post + dnf -y update + dnf -y install vim-enhanced git file make cmake patch which file Lmod \ + ninja-build clang libomp-devel libubsan libasan libtsan \ + dos2unix findutils rsync python-devel libjpeg-devel libpng-devel \ + ccache gcc-c++ gcc-gfortran gdb valgrind eigen3-devel openblas-devel \ + openmpi-devel mpich-devel fftw-devel voro++-devel gsl-devel \ + mingw-filesystem-base mingw32-nsis mingw-binutils-generic \ + mingw32-filesystem mingw32-pkg-config \ + mingw64-filesystem mingw64-pkg-config \ + mingw32-crt mingw32-headers mingw32-binutils \ + mingw64-crt mingw64-headers mingw64-binutils \ + mingw32-cpp mingw32-gcc mingw32-gcc-gfortran mingw32-gcc-c++ \ + mingw64-cpp mingw64-gcc mingw64-gcc-gfortran mingw64-gcc-c++ \ + mingw32-libgomp mingw64-libgomp \ + mingw32-winpthreads mingw64-winpthreads \ + mingw32-winpthreads-static mingw64-winpthreads-static \ + mingw32-eigen3 mingw64-eigen3 \ + mingw32-libjpeg-turbo mingw64-libjpeg-turbo \ + mingw32-libjpeg-turbo-static mingw64-libjpeg-turbo-static \ + mingw32-libpng mingw64-libpng \ + mingw32-libpng-static mingw64-libpng-static \ + mingw32-zlib mingw64-zlib \ + mingw32-zlib-static mingw64-zlib-static \ + mingw32-expat mingw64-expat \ + mingw64-expat-static mingw32-expat-static \ + mingw32-sqlite-static mingw64-sqlite-static \ + enchant python3-virtualenv doxygen \ + texlive-latex-fonts texlive-pslatex texlive-collection-latexrecommended \ + texlive-latex texlive-latexconfig doxygen-latex texlive-collection-latex \ + texlive-latex-bin texlive-lualatex-math texlive-fncychap texlive-tabulary \ + texlive-framed texlive-wrapfig texlive-upquote texlive-capt-of \ + texlive-needspace texlive-titlesec texlive-anysize texlive-dvipng + +%environment + LC_ALL=C + export LC_ALL + unset LOADEDMODULES + . /etc/profile.d/modules.sh + module purge + module load mpi + +%labels + Author akohlmey diff --git a/tools/singularity/ubuntu20.04.def b/tools/singularity/ubuntu20.04.def index 4ebc88447d..37c67b9373 100644 --- a/tools/singularity/ubuntu20.04.def +++ b/tools/singularity/ubuntu20.04.def @@ -29,6 +29,7 @@ From: ubuntu:20.04 libjpeg-dev \ liblapack-dev \ libopenblas-dev \ + libomp-dev \ libpng-dev \ libproj-dev \ libvtk6-dev \ @@ -45,7 +46,6 @@ From: ubuntu:20.04 ssh \ texlive \ texlive-latex-recommended \ - texlive-latex-extra \ texlive-pictures \ texlive-publishers \ texlive-science \ -- GitLab From 7b3b77226e3981f4a95b06f34775633e19994b7e Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 11 Apr 2020 22:20:35 -0400 Subject: [PATCH 267/717] update build overview --- doc/src/Build.rst | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/doc/src/Build.rst b/doc/src/Build.rst index c96fb0b5b9..441af79009 100644 --- a/doc/src/Build.rst +++ b/doc/src/Build.rst @@ -1,12 +1,14 @@ Build LAMMPS ************ -LAMMPS can be built as an executable or library from source code via -either traditional makefiles (which may require manual editing) -for use with GNU make or gmake, or a build environment generated by CMake -(Unix Makefiles, Xcode, Visual Studio, KDevelop or more). As an -alternative you can download a package with pre-built executables -as described on the :doc:`Install ` doc page. +LAMMPS is built as a library and an executable from source code using +either traditional makefiles for use with GNU make (which may require +manual editing), or using a build environment generated by CMake (Unix +Makefiles, Ninja, Xcode, Visual Studio, KDevelop, CodeBlocks and more). + +As an alternative you can download a package with pre-built executables +or automated build trees as described on the :doc:`Install ` +doc page. .. toctree:: :maxdepth: 1 -- GitLab From 9cf6c72a9ccb3bf816e3b2dcd61b4172de4e267c Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 12 Apr 2020 00:36:39 -0400 Subject: [PATCH 268/717] fix spell-checker issues --- doc/src/Build_basics.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/src/Build_basics.rst b/doc/src/Build_basics.rst index 83faf9fc67..99f051e6ff 100644 --- a/doc/src/Build_basics.rst +++ b/doc/src/Build_basics.rst @@ -147,9 +147,9 @@ may implement strict OpenMP 4.0 and later semantics, which are incompatible with the OpenMP 3.1 semantics used in LAMMPS for maximal compatibility with compiler versions in use. If compilation with OpenMP enabled fails because of your compiler requiring strict OpenMP 4.0 semantic, you can -change the behvior by adding ``-D LAMMPS_OMP_COMPAT=4`` to the ``LMP_INC`` +change the behavior by adding ``-D LAMMPS_OMP_COMPAT=4`` to the ``LMP_INC`` variable in your makefile, or add it to the command line while configuring -with CMake. CMake will autodetect the suitable setting for the GNU, Clang, +with CMake. CMake will detect the suitable setting for the GNU, Clang, and Intel compilers. ---------- -- GitLab From 17fdf976b07b1eb2769ca7550435c6a839a30c72 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 12 Apr 2020 01:35:41 -0400 Subject: [PATCH 269/717] must force non-interactive setup --- tools/singularity/ubuntu18.04_amd_rocm_cuda.def | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/singularity/ubuntu18.04_amd_rocm_cuda.def b/tools/singularity/ubuntu18.04_amd_rocm_cuda.def index 601969dc8b..3ef7813a20 100644 --- a/tools/singularity/ubuntu18.04_amd_rocm_cuda.def +++ b/tools/singularity/ubuntu18.04_amd_rocm_cuda.def @@ -9,7 +9,7 @@ From: lammps/default/lammps_development:ubuntu18.04_amd_rocm export LIBRARY_PATH=/usr/local/cuda/lib64/stubs %post - + export DEBIAN_FRONTEND=noninteractive wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-ubuntu1804.pin mv cuda-ubuntu1804.pin /etc/apt/preferences.d/cuda-repository-pin-600 apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/7fa2af80.pub -- GitLab From 5584bd1106c24c65ea18be36dad940968e47188f Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 12 Apr 2020 11:03:17 -0400 Subject: [PATCH 270/717] Update traditional make info and synchronize information provided with CMake version --- doc/src/Build_cmake.rst | 20 ++++++--- doc/src/Build_make.rst | 91 +++++++++++++++++++++++++---------------- 2 files changed, 69 insertions(+), 42 deletions(-) diff --git a/doc/src/Build_cmake.rst b/doc/src/Build_cmake.rst index 70a9767f23..82ba093220 100644 --- a/doc/src/Build_cmake.rst +++ b/doc/src/Build_cmake.rst @@ -86,12 +86,20 @@ options and settings will be printed at the end. The ``cmake --build ultimately produce a library ``liblammps.a`` and the LAMMPS executable ``lmp`` inside the ``build`` folder. -If your machine has multiple CPU cores (most do these days), you can -speed this up by compiling sources in parallel with ``make -j N`` (with -N being the maximum number of concurrently executed tasks). Also -installation of the `ccache `_ (= Compiler Cache) -software may speed up repeated compilation significantly, e.g. during code -development. +Compilation can take a long time, since LAMMPS is a large project with +many features. If your machine has multiple CPU cores (most do these +days), you can speed this up by compiling sources in parallel with +``make -j N`` (with N being the maximum number of concurrently executed +tasks). Also installation of the `ccache `_ (= +Compiler Cache) software may speed up repeated compilation even more, +e.g. during code development. + +After the initial build, whenever you edit LAMMPS source files, add +or remove packages, change compiler flags or build options, +you must re-compile and relink the LAMMPS executable with ``cmake --build .``. +If the compilation fails for some reason, try running ``cmake .`` and +then compile again. The included dependency tracking of should insure +that only the necessary subset of files are re-compiled. After compilation, you may optionally install the LAMMPS executable into your system with: diff --git a/doc/src/Build_make.rst b/doc/src/Build_make.rst index 0379a8379a..bc294175e0 100644 --- a/doc/src/Build_make.rst +++ b/doc/src/Build_make.rst @@ -2,10 +2,14 @@ Build LAMMPS with make ====================== Building LAMMPS with traditional makefiles requires that you have a -Makefile."machine" file appropriate for your system in the src/MAKE, -src/MAKE/MACHINES, src/MAKE/OPTIONS, or src/MAKE/MINE directory (see -below). It can include various options for customizing your LAMMPS -build with a number of global compilation options and features. +``Makefile.`` file appropriate for your system in either the +``src/MAKE``, ``src/MAKE/MACHINES``, ``src/MAKE/OPTIONS``, or +``src/MAKE/MINE`` directory (see below). It can include various options +for customizing your LAMMPS build with a number of global compilation +options and features. + +Requirements +^^^^^^^^^^^^ Those makefiles are written for and tested with GNU make and may not be compatible with other make programs. In most cases, if the "make" @@ -16,44 +20,52 @@ with :doc:`CMake `. The makefiles of the traditional make based build process and the scripts they are calling expect a few additional tools to be available and functioning. - * a Bourne shell compatible "Unix" shell program (often this is bash) - * a few shell utilities: ls, mv, ln, rm, grep, sed, tr, cat, touch, diff, dirname - * python (optional, required for "make lib-XXX" in the src folder) + * a working C/C++ compiler toolchain; on Linux these are often the GNU compilers + * a Bourne shell compatible "Unix" shell program (often this is ``bash``) + * a few shell utilities: ``ls``, ``mv``, ``ln``, ``rm``, ``grep``, ``sed``, ``tr``, ``cat``, ``touch``, ``diff``, ``dirname`` + * python (optional, required for ``make lib-`` in the src folder). + python scripts are currently tested with python 2.7 and 3.6. The procedure + for :doc:`building the documentation ` requires python 3. + +Getting started +^^^^^^^^^^^^^^^ -To include LAMMPS packages (i.e. optional commands and styles) you -must enable them first, as discussed on the :doc:`Build package -` doc page. If a packages requires (provided or +To include LAMMPS packages (i.e. optional commands and styles) you must +enable (or "install") them first, as discussed on the :doc:`Build +package ` doc page. If a packages requires (provided or external) libraries, you must configure and build those libraries **before** building LAMMPS itself and especially **before** enabling -such a package with "make yes-". Building :doc:`LAMMPS -with CMake ` can automate much of this for many types of +such a package with ``make yes-``. Building :doc:`LAMMPS with +CMake ` can automate much of this for many types of machines, especially workstations, desktops, and laptops, so we suggest you try it first when building LAMMPS in those cases. The commands below perform a default LAMMPS build, producing the LAMMPS -executable lmp_serial and lmp_mpi in lammps/src: +executable ``lmp_serial`` and ``lmp_mpi`` in ``lammps/src``: .. code-block:: bash - cd lammps/src - make serial # build a serial LAMMPS executable + cd lammps/src # change to main LAMMPS source folder + make serial # build a serial LAMMPS executable using GNU g++ make mpi # build a parallel LAMMPS executable with MPI make # see a variety of make options -This initial compilation can take a long time, since LAMMPS is a large -project with many features. If your machine has multiple CPU cores -(most do these days), using a command like "make -jN mpi" (with N = -the number of available CPU cores) can be much faster. If you plan to -do development on LAMMPS or need to re-compile LAMMPS repeatedly, the -installation of the ccache (= Compiler Cache) software may speed up -compilation even more. +Compilation can take a long time, since LAMMPS is a large project with +many features. If your machine has multiple CPU cores (most do these +days), you can speed this up by compiling sources in parallel with +``make -j N`` (with N being the maximum number of concurrently executed +tasks). Also installation of the `ccache `_ (= +Compiler Cache) software may speed up repeated compilation even more, +e.g. during code development. After the initial build, whenever you edit LAMMPS source files, or add or remove new files to the source directory (e.g. by installing or uninstalling packages), you must re-compile and relink the LAMMPS -executable with the same "make" command. This makefiles dependencies -should insure that only the subset of files that need to be are -re-compiled. +executable with the same ``make `` command. The makefile's +dependency tracking should insure that only the necessary subset of +files are re-compiled. If you change settings in the makefile, you have +to recompile *everything*. To delete all objects you can use ``make +clean-``. .. note:: @@ -65,13 +77,15 @@ re-compiled. correctly detect which parts need to be recompiled after changes were made to the sources. ----------- +Customized builds and alternate makefiles +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -The lammps/src/MAKE tree contains the Makefile.machine files included -in the LAMMPS distribution. Typing "make machine" uses -*Makefile.machine*\ . Thus the "make serial" or "make mpi" lines above -use Makefile.serial and Makefile.mpi, respectively. Other makefiles -are in these directories: +The ``src/MAKE`` directory tree contains the ``Makefile.`` +files included in the LAMMPS distribution. Typing ``make example`` uses +``Makefile.example`` from one of those folders, if available. Thus the +``make serial`` and ``make mpi`` lines above use +``src/MAKE/Makefile.serial`` and ``src/MAKE/Makefile.mpi``, +respectively. Other makefiles are in these directories: .. code-block:: bash @@ -79,11 +93,16 @@ are in these directories: MACHINES # Makefiles for specific machines MINE # customized Makefiles you create (you may need to create this folder) -Typing "make" lists all the available Makefile.machine files. A file -with the same name can appear in multiple folders (not a good idea). -The order the directories are searched is as follows: src/MAKE/MINE, -src/MAKE, src/MAKE/OPTIONS, src/MAKE/MACHINES. This gives preference -to a customized file you put in src/MAKE/MINE. +Simply typing ``make`` lists all the available ``Makefile.`` +files with a single line description toward the end of the output. A +file with the same name can appear in multiple folders (not a good +idea). The order the directories are searched is as follows: +``src/MAKE/MINE``, ``src/MAKE``, ``src/MAKE/OPTIONS``, +``src/MAKE/MACHINES``. This gives preference to a customized file you +put in ``src/MAKE/MINE``. If you create your own custom makefile under +a new name, please edit the first line with the description and machine +name, so you will not confuse yourself, when looking at the machine +summary. Makefiles you may wish to try include these (some require a package first be installed). Many of these include specific compiler flags -- GitLab From 5bb2449ddb85f57a9a0d451f53b29c54424180af Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 12 Apr 2020 15:34:00 -0400 Subject: [PATCH 271/717] provide info about including debug support in executable and a stack trace debug tutorial --- doc/src/Build_basics.rst | 21 ++ doc/src/Errors.rst | 1 + doc/src/Errors_bugs.rst | 24 +- doc/src/Errors_debug.rst | 237 ++++++++++++++++++++ doc/utils/sphinx-config/false_positives.txt | 2 + 5 files changed, 275 insertions(+), 10 deletions(-) create mode 100644 doc/src/Errors_debug.rst diff --git a/doc/src/Build_basics.rst b/doc/src/Build_basics.rst index 70a95ff8b5..df99c8643d 100644 --- a/doc/src/Build_basics.rst +++ b/doc/src/Build_basics.rst @@ -7,6 +7,7 @@ CMake and make: * :ref:`Serial vs parallel build ` * :ref:`Choice of compiler and compile/link options ` * :ref:`Build the LAMMPS executable and library ` +* :ref:`Debug support ` * :ref:`Build the LAMMPS documentation ` * :ref:`Install LAMMPS after a build ` @@ -396,6 +397,26 @@ recommended to ensure the integrity of the system software installation. ---------- +.. _debug: + +Debug support +------------- + +By default the compilation settings will include the *-g* flag which +instructs the compiler to include debug information (e.g. which line of +source code particular instructions correspond to). This can be +extremely useful in case LAMMPS crashes and can help to provide crucial +information in :doc:`tracking down the origin of a crash ` +and possibly help fix a bug in the source code. However, this increases +the storage requirements for object files, libraries, and the executable +3-5 fold. If this is a concern, you can change the compilation settings +(either by editing the machine makefile or setting the compiler flags or +build time when using CMake). If you are only concerned about the +executable being too large, you can use the ``strip`` tool (e.g. ``strip +lmp_serial``) to remove the debug information from the file. + +---------- + .. _doc: Build the LAMMPS documentation diff --git a/doc/src/Errors.rst b/doc/src/Errors.rst index 896dfbcbef..48db5f6472 100644 --- a/doc/src/Errors.rst +++ b/doc/src/Errors.rst @@ -12,5 +12,6 @@ additional details for many of them. Errors_common Errors_bugs + Errors_debug Errors_messages Errors_warnings diff --git a/doc/src/Errors_bugs.rst b/doc/src/Errors_bugs.rst index e169b93d81..ff0b155795 100644 --- a/doc/src/Errors_bugs.rst +++ b/doc/src/Errors_bugs.rst @@ -1,7 +1,8 @@ Reporting bugs ============== -If you are confident that you have found a bug in LAMMPS, please follow the steps outlined below: +If you are confident that you have found a bug in LAMMPS, please follow +the steps outlined below: * Check the `New features and bug fixes `_ section of the `LAMMPS WWW site @@ -17,20 +18,22 @@ If you are confident that you have found a bug in LAMMPS, please follow the step * Check the `mailing list archives `_ to see if the issue has been discussed before. -If none of these steps yields any useful information, please file -a new bug report on the `GitHub Issue page `_\ . -The website will offer you to select a suitable template with explanations -and then you should replace those explanations with the information -that you can provide to reproduce your issue. +If none of these steps yields any useful information, please file a new +bug report on the `GitHub Issue page `_. The website will offer +you to select a suitable template with explanations and then you should +replace those explanations with the information that you can provide to +reproduce your issue. The most useful thing you can do to help us verify and fix a bug is to isolate the problem. Run it on the smallest number of atoms and fewest number of processors with the simplest input script that reproduces the -bug. Try to identify what command or combination of commands is -causing the problem and upload the complete input deck as a tar or zip -archive. Please avoid using binary restart files unless the issue requires -it. In the latter case you should also include an input deck to quickly +bug. Try to identify what command or combination of commands is causing +the problem and upload the complete input deck as a tar or zip archive. +Please avoid using binary restart files unless the issue requires it. +In the latter case you should also include an input deck to quickly generate this restart from a data file or a simple additional input. +This input deck can be used with tools like a debugger or `valgrind +`_ to further :doc:`debug the crash `. You may also send an email to the LAMMPS mailing list at "lammps-users at lists.sourceforge.net" describing the problem with the @@ -43,3 +46,4 @@ have looked at it. .. _lws: https://lammps.sandia.gov .. _gip: https://github.com/lammps/issues +.. _valgrind: https://valgrind.org diff --git a/doc/src/Errors_debug.rst b/doc/src/Errors_debug.rst new file mode 100644 index 0000000000..a21099ee18 --- /dev/null +++ b/doc/src/Errors_debug.rst @@ -0,0 +1,237 @@ +Debugging crashes +================= + +If LAMMPS crashes with a "segmentation fault" or a "bus error" or +similar message, then you can use the following two methods to further +narrow down the origin of the issue. This will help the LAMMPS +developers (or yourself) to understand the reason for the crash and +apply a fix (either to the input script or the source code). +This requires that your LAMMPS executable includes the required +:ref:`debug information `. Otherwise it is not possible to +look up the names of functions or variables. + +The following patch will introduce a bug into the code for pair style +:doc:`lj/cut ` when using the ``examples/melt/in.melt`` input. +We use it to show how to identify the origin of a segmentation fault. + +.. code-block:: diff + + --- a/src/pair_lj_cut.cpp + +++ b/src/pair_lj_cut.cpp + @@ -81,6 +81,7 @@ void PairLJCut::compute(int eflag, int vflag) + int nlocal = atom->nlocal; + double *special_lj = force->special_lj; + int newton_pair = force->newton_pair; + + double comx = 0.0; + + inum = list->inum; + ilist = list->ilist; + @@ -134,8 +135,10 @@ void PairLJCut::compute(int eflag, int vflag) + evdwl,0.0,fpair,delx,dely,delz); + } + } + - } + + + comx += atom->rmass[i]*x[i][0]; /* BUG */ + + } + + printf("comx = %g\n",comx); + if (vflag_fdotr) virial_fdotr_compute(); + } + +After recompiling LAMMPS and running the input you should get something like this: + +.. code-block: + + $ ./lmp -in in.melt + LAMMPS (19 Mar 2020) + OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:94) + using 1 OpenMP thread(s) per MPI task + Lattice spacing in x,y,z = 1.6796 1.6796 1.6796 + Created orthogonal box = (0 0 0) to (16.796 16.796 16.796) + 1 by 1 by 1 MPI processor grid + Created 4000 atoms + create_atoms CPU = 0.000432253 secs + Neighbor list info ... + update every 20 steps, delay 0 steps, check no + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 2.8 + ghost atom cutoff = 2.8 + binsize = 1.4, bins = 12 12 12 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair lj/cut, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton + stencil: half/bin/3d/newton + bin: standard + Setting up Verlet run ... + Unit style : lj + Current step : 0 + Time step : 0.005 + Segmentation fault (core dumped) + + +Using the GDB debugger to get a stack trace +------------------------------------------- + +There are two options to use the GDB debugger for identifying the origin +of the segmentation fault or similar crash. The GDB debugger has many +more features and options, as can be seen for example its `online +documentation `_. + +Run LAMMPS from within the debugger +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Running LAMMPS under the control of the debugger as shown below only +works for a single MPI rank (for debugging a program running in parallel +you usually need a parallel debugger program). A simple way to launch +GDB is to prefix the LAMMPS command line with ``gdb --args`` and then +type the command "run" at the GDB prompt. This will launch the +debugger, load the LAMMPS executable and its debug info, and then run +it. When it reaches the code causing the segmentation fault, it will +stop with a message why it stopped, print the current line of code, and +drop back to the GDB prompt. + +.. code-block:: + + [...] + Setting up Verlet run ... + Unit style : lj + Current step : 0 + Time step : 0.005 + + Program received signal SIGSEGV, Segmentation fault. + 0x00000000006653ab in LAMMPS_NS::PairLJCut::compute (this=0x829740, eflag=1, vflag=) at /home/akohlmey/compile/lammps/src/pair_lj_cut.cpp:139 + 139 comx += atom->rmass[i]*x[i][0]; /* BUG */ + (gdb) + +Now typing the command "where" will show the stack of functions starting from +the current function back to "main()". + +.. code-block:: + + (gdb) where + #0 0x00000000006653ab in LAMMPS_NS::PairLJCut::compute (this=0x829740, eflag=1, vflag=) at /home/akohlmey/compile/lammps/src/pair_lj_cut.cpp:139 + #1 0x00000000004cf0a2 in LAMMPS_NS::Verlet::setup (this=0x7e6c90, flag=1) at /home/akohlmey/compile/lammps/src/verlet.cpp:131 + #2 0x000000000049db42 in LAMMPS_NS::Run::command (this=this@entry=0x7fffffffcca0, narg=narg@entry=1, arg=arg@entry=0x7e8750) + at /home/akohlmey/compile/lammps/src/run.cpp:177 + #3 0x000000000041258a in LAMMPS_NS::Input::command_creator (lmp=, narg=1, arg=0x7e8750) + at /home/akohlmey/compile/lammps/src/input.cpp:878 + #4 0x0000000000410ad3 in LAMMPS_NS::Input::execute_command (this=0x7d1410) at /home/akohlmey/compile/lammps/src/input.cpp:864 + #5 0x00000000004111fb in LAMMPS_NS::Input::file (this=0x7d1410) at /home/akohlmey/compile/lammps/src/input.cpp:229 + #6 0x000000000040933a in main (argc=, argv=) at /home/akohlmey/compile/lammps/src/main.cpp:65 + (gdb) + +You can also print the value of variables and see if there is anything +unexpected. Segmentation faults, for example, commonly happen when a +pointer variable is not assigned and still initialized to NULL. + +.. code-block:: + + (gdb) print x + $1 = (double **) 0x7ffff7ca1010 + (gdb) print i + $2 = 0 + (gdb) print x[0] + $3 = (double *) 0x7ffff6d80010 + (gdb) print x[0][0] + $4 = 0 + (gdb) print x[1][0] + $5 = 0.83979809569125363 + (gdb) print atom->rmass + $6 = (double *) 0x0 + (gdb) + + +Inspect a core dump file with the debugger +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +When an executable crashes with a "core dumped" message, it creates a +file "core" or "core." which contains the information about the +current state. This file may be located in the folder where you ran +LAMMPS or in some hidden folder managed by the systemd daemon. In the +latter case, you need to "extract" the core file with the ``coredumpctl`` +utility to the current folder. Example: ``coredumpctl -o core dump lmp``. +Now you can launch the debugger to load the executable, its debug info +and the core dump and drop you to a prompt like before. + +.. code-block:: + + $ gdb lmp core + Reading symbols from lmp... + [New LWP 1928535] + [Thread debugging using libthread_db enabled] + Using host libthread_db library "/lib64/libthread_db.so.1". + Core was generated by `./lmp -in in.melt'. + Program terminated with signal SIGSEGV, Segmentation fault. + #0 0x00000000006653ab in LAMMPS_NS::PairLJCut::compute (this=0x1b10740, eflag=1, vflag=) + at /home/akohlmey/compile/lammps/src/pair_lj_cut.cpp:139 + 139 comx += atom->rmass[i]*x[i][0]; /* BUG */ + (gdb) + +From here on, you use the same commands as shown before to get a stack +trace and print current values of (pointer) variables. + + +Using valgrind to get a stack trace +----------------------------------- + +The `valgrind `_ suite of tools allows to closely +inspect the behavior of a compiled program by essentially emulating a +CPU and instrumenting the program while running. This slows down +execution quite significantly, but can also report issues that are not +resulting in a crash. The default valgrind tool is a memory checker and +you can use it by prefixing the normal command line with ``valgrind``. +Unlike GDB, this will also work for parallel execution, but it is +recommended to redirect the valgrind output to a file (e.g. with +``--log-file=crash-%p.txt``, the %p will be substituted with the +process ID) so that the messages of the multiple valgrind instances to +the console are not mixed. + +.. code-block:: + + $ valgrind ./lmp -in in.melt + ==1933642== Memcheck, a memory error detector + ==1933642== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al. + ==1933642== Using Valgrind-3.15.0 and LibVEX; rerun with -h for copyright info + ==1933642== Command: ./lmp -in in.melt + ==1933642== + LAMMPS (19 Mar 2020) + OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:94) + using 1 OpenMP thread(s) per MPI task + Lattice spacing in x,y,z = 1.6796 1.6796 1.6796 + Created orthogonal box = (0 0 0) to (16.796 16.796 16.796) + 1 by 1 by 1 MPI processor grid + Created 4000 atoms + create_atoms CPU = 0.032964 secs + Neighbor list info ... + update every 20 steps, delay 0 steps, check no + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 2.8 + ghost atom cutoff = 2.8 + binsize = 1.4, bins = 12 12 12 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair lj/cut, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton + stencil: half/bin/3d/newton + bin: standard + Setting up Verlet run ... + Unit style : lj + Current step : 0 + Time step : 0.005 + ==1933642== Invalid read of size 8 + ==1933642== at 0x6653AB: LAMMPS_NS::PairLJCut::compute(int, int) (pair_lj_cut.cpp:139) + ==1933642== by 0x4CF0A1: LAMMPS_NS::Verlet::setup(int) (verlet.cpp:131) + ==1933642== by 0x49DB41: LAMMPS_NS::Run::command(int, char**) (run.cpp:177) + ==1933642== by 0x412589: void LAMMPS_NS::Input::command_creator(LAMMPS_NS::LAMMPS*, int, char**) (input.cpp:881) + ==1933642== by 0x410AD2: LAMMPS_NS::Input::execute_command() (input.cpp:864) + ==1933642== by 0x4111FA: LAMMPS_NS::Input::file() (input.cpp:229) + ==1933642== by 0x409339: main (main.cpp:65) + ==1933642== Address 0x0 is not stack'd, malloc'd or (recently) free'd + ==1933642== + +As you can see, the stack trace information is similar to that obtained +from GDB. In addition you get a more specific hint about what cause the +segmentation fault, i.e. that it is a NULL pointer dereference. To find +out which pointer exactly was NULL, you need to use the debugger, though. + diff --git a/doc/utils/sphinx-config/false_positives.txt b/doc/utils/sphinx-config/false_positives.txt index 396c99e2b5..3f2233c108 100644 --- a/doc/utils/sphinx-config/false_positives.txt +++ b/doc/utils/sphinx-config/false_positives.txt @@ -584,6 +584,7 @@ dephasing dequidt Dequidt der +dereference derekt Derjagin Derjaguin @@ -2839,6 +2840,7 @@ Synechococcus sys sysdim Syst +systemd Sz Tabbernor tabinner -- GitLab From 3201213bec8a1084a75668ce9e93fbaf400e1fb0 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 12 Apr 2020 16:32:16 -0400 Subject: [PATCH 272/717] remove tabs --- doc/src/Errors_debug.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/src/Errors_debug.rst b/doc/src/Errors_debug.rst index a21099ee18..1e7e678602 100644 --- a/doc/src/Errors_debug.rst +++ b/doc/src/Errors_debug.rst @@ -101,7 +101,7 @@ drop back to the GDB prompt. Program received signal SIGSEGV, Segmentation fault. 0x00000000006653ab in LAMMPS_NS::PairLJCut::compute (this=0x829740, eflag=1, vflag=) at /home/akohlmey/compile/lammps/src/pair_lj_cut.cpp:139 - 139 comx += atom->rmass[i]*x[i][0]; /* BUG */ + 139 comx += atom->rmass[i]*x[i][0]; /* BUG */ (gdb) Now typing the command "where" will show the stack of functions starting from @@ -165,7 +165,7 @@ and the core dump and drop you to a prompt like before. Program terminated with signal SIGSEGV, Segmentation fault. #0 0x00000000006653ab in LAMMPS_NS::PairLJCut::compute (this=0x1b10740, eflag=1, vflag=) at /home/akohlmey/compile/lammps/src/pair_lj_cut.cpp:139 - 139 comx += atom->rmass[i]*x[i][0]; /* BUG */ + 139 comx += atom->rmass[i]*x[i][0]; /* BUG */ (gdb) From here on, you use the same commands as shown before to get a stack -- GitLab From ebf6e23a6755476f273f9dff8f3973bf41c2dc39 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 12 Apr 2020 16:32:40 -0400 Subject: [PATCH 273/717] explain error message when using a non-c++11 compliant compiler. --- doc/src/Build_basics.rst | 36 +++++++++++++++++++++++++++--------- doc/src/Build_make.rst | 4 +++- 2 files changed, 30 insertions(+), 10 deletions(-) diff --git a/doc/src/Build_basics.rst b/doc/src/Build_basics.rst index df99c8643d..6abfa9806a 100644 --- a/doc/src/Build_basics.rst +++ b/doc/src/Build_basics.rst @@ -270,17 +270,35 @@ Serial build with GNU gcc (see ``src/MAKE/Makefile.serial``): LINK = g++ LINKFLAGS = -g -O + .. note:: - If you build LAMMPS with any :doc:`accelerator packages ` - included, there may be specific optimization flags that are either - required or recommended to enable required features and to achieve - optimal performance. You need to include these in the CCFLAGS and - LINKFLAGS settings above. For details, see the individual package - doc pages listed on the :doc:`Speed packages ` doc - page. Or examine these files in the src/MAKE/OPTIONS directory. - They correspond to each of the 5 accelerator packages and their - hardware variants: + If compilation stops with a message like the following: + + .. code-block:: + + g++ -g -O3 -DLAMMPS_GZIP -DLAMMPS_MEMALIGN=64 -I../STUBS -c ../main.cpp + In file included from ../pointers.h:24:0, + from ../input.h:17, + from ../main.cpp:16: + ../lmptype.h:34:2: error: #error LAMMPS requires a C++11 (or later) compliant compiler. Enable C++11 compatibility or upgrade the compiler. + + then you have either an unsupported (old) compiler or you have to + turn on C++11 mode. The latter applies to GCC 4.8.x shipped with + RHEL 7.x and CentOS 7.x. For those compilers, you need to add the + ``-std=c++11`` flag. Otherwise, you would have to install a newer + compiler that supports C++11; either as a binary package or through + compiling from source. + +If you build LAMMPS with any :doc:`accelerator packages +` included, there may be specific optimization flags +that are either required or recommended to enable required features and +to achieve optimal performance. You need to include these in the +CCFLAGS and LINKFLAGS settings above. For details, see the individual +package doc pages listed on the :doc:`Speed packages ` +doc page. Or examine these files in the src/MAKE/OPTIONS directory. +They correspond to each of the 5 accelerator packages and their hardware +variants: .. code-block:: bash diff --git a/doc/src/Build_make.rst b/doc/src/Build_make.rst index bc294175e0..af5e319121 100644 --- a/doc/src/Build_make.rst +++ b/doc/src/Build_make.rst @@ -20,7 +20,9 @@ with :doc:`CMake `. The makefiles of the traditional make based build process and the scripts they are calling expect a few additional tools to be available and functioning. - * a working C/C++ compiler toolchain; on Linux these are often the GNU compilers + * a working C/C++ compiler toolchain supporting the C++11 standard; on + Linux these are often the GNU compilers. Some older compilers + require adding flags like ``-std=c++11`` to enable the C++11 mode. * a Bourne shell compatible "Unix" shell program (often this is ``bash``) * a few shell utilities: ``ls``, ``mv``, ``ln``, ``rm``, ``grep``, ``sed``, ``tr``, ``cat``, ``touch``, ``diff``, ``dirname`` * python (optional, required for ``make lib-`` in the src folder). -- GitLab From fbce1a85495dfb4967f392c638818f04c75e9d29 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 12 Apr 2020 21:39:19 -0400 Subject: [PATCH 274/717] write initial part of CMake tutorial --- doc/src/Howto_cmake.rst | 244 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 239 insertions(+), 5 deletions(-) diff --git a/doc/src/Howto_cmake.rst b/doc/src/Howto_cmake.rst index 2e97a92f9f..96ef039ab8 100644 --- a/doc/src/Howto_cmake.rst +++ b/doc/src/Howto_cmake.rst @@ -1,10 +1,192 @@ Using CMake with LAMMPS tutorial ================================ -Thus a configuration can be quickly modified by directing CMake to the -location of this cache file and then using options that are supposed to -be altered. +The support for building LAMMPS with CMake is a recent addition to +LAMMPS thanks to the efforts of Christoph Junghans (LANL) and Richard +Berger (Temple U). One of the key strengths of CMake is that it is not +tied to a specific platform or build system and thus generate the files +necessary to build and develop for different build systems and on +different platforms. Note, that this applies to the build system itself +not the LAMMPS code. In other words, without additional porting effort, +it is not possible - for example - to compile LAMMPS with Visual C++ on +Windows. The build system output can also include support files +necessary to programm LAMMPS as a project in integrated development +environments (IDE) like Eclipse, Visual Studio, QtCreator, Xcode, +CodeBlocks, Kate and others. + +A second important feature of CMake is, that it can detect and validate +available libraries, optimal settings, available support tools and so +on, so that by default LAMMPS will take advantage of available tools +without requiring to provide the details about how to enable/integrate +them. + +The downside of this approach is, that there is some complexity +associated with running CMake itself and how to achieve desired +customizations and modifications to the LAMMPS configuration and +compilation. And for as long as this facility is relatively new and +not as widely used as the traditional build process, there are chances +that the scripts that CMake processes may have bugs or are missing +options, despite the best efforts to test and verify its functionality. + +This tutorial will show how to manage this through some selected +examples. Please see the chapter about :doc:`building LAMMPS ` +for descriptions of specific flags and options for LAMMPS in general and +for specific packages. + +CMake can be used through either the command-line interface (CLI) +program ``cmake`` (or ``cmake3``), a text mode interactive user +interface (TUI) program ``ccmake`` (or ``ccmake3``), or a graphical user +interface (GUI) program ``cmake-gui``. All of them are portable +software available on all supported platforms and can be used +interchangeably. The minimum supported CMake version is 3.10 (3.12 or +later is recommended). + + +Prerequisites +------------- + +This tutorial assumes that you are operating in a command-line environment +using a shell like Bash. + +- Linux: any Terminal window will work +- MacOS X: launch the Terminal application. +- Windows 10: install and run the :doc:`Windows subsystem for Linux ` + +We also assume that you have downloaded and unpacked a recent LAMMPS source code package +or used Git to create a clone of the LAMMPS sources on your compilation machine. + +You should change into the top level directory of the LAMMPS source tree all +paths mentioned in the tutorial are relative to that. Immediately after downloading +it should look like this: +.. code-block:: bash + + $ ls + bench doc lib potentials README tools + cmake examples LICENSE python src + +Build directory versus source directory +--------------------------------------- + +When using CMake the build procedure is separated into multiple distinct phases: + + #. **Configuration:** detect or define which features and settings + should be enable and used and how LAMMPS should be compiled + #. **Compilation:** generate and compile all necessary source files + and build libraries and executables. + #. **Installation:** copy selected files from the compilation into + your file system, so they can be used without having to keep the + source and build tree around. + +The configuration and compilation of LAMMPS has to happen in a dedicated +*build directory* which must be different from the source directory. +Also the source directory (``src``) must remain pristine, so it is not +allowed to "install" packages using the traditional make process and +after an compilation attempt all created source files must be removed. +This can be achieved with ``make no-all purge``. + +You can pick **any** folder outside the source tree. We recommend to +create a folder ``build`` in the top-level directory, or multiple +folders in case you want to compile LAMMPS in different configurations +(``build-parallel``, ``build-serial``) or with different compilers +(``build-gnu``, ``build-clang``, ``build-intel``) and so on. + + +Running CMake +------------- + +CLI version +^^^^^^^^^^^ + +In the (empty) ``build`` directory, we now run the command ``cmake +../cmake``, which will start the configuration phase and you will see +the progress of the configuration printed to the screen followed by a +summary of the enabled features, options and compiler settings. A typical +summary screen will look like this: + +.. code-block:: + + $ cmake ../cmake/ + -- The CXX compiler identification is GNU 8.2.0 + -- Check for working CXX compiler: /opt/tools/gcc-8.2.0/bin/c++ + -- Check for working CXX compiler: /opt/tools/gcc-8.2.0/bin/c++ - works + -- Detecting CXX compiler ABI info + -- Detecting CXX compiler ABI info - done + -- Detecting CXX compile features + -- Detecting CXX compile features - done + -- Found Git: /usr/bin/git (found version "2.25.2") + -- Running check for auto-generated files from make-based build system + -- Found MPI_CXX: /usr/lib64/mpich/lib/libmpicxx.so (found version "3.1") + -- Found MPI: TRUE (found version "3.1") + -- Looking for C++ include omp.h + -- Looking for C++ include omp.h - found + -- Found OpenMP_CXX: -fopenmp (found version "4.5") + -- Found OpenMP: TRUE (found version "4.5") + -- Found JPEG: /usr/lib64/libjpeg.so (found version "62") + -- Found PNG: /usr/lib64/libpng.so (found version "1.6.37") + -- Found ZLIB: /usr/lib64/libz.so (found version "1.2.11") + -- Found GZIP: /usr/bin/gzip + -- Found FFMPEG: /usr/bin/ffmpeg + -- Performing Test COMPILER_SUPPORTS-ffast-math + -- Performing Test COMPILER_SUPPORTS-ffast-math - Success + -- Performing Test COMPILER_SUPPORTS-march=native + -- Performing Test COMPILER_SUPPORTS-march=native - Success + -- Looking for C++ include cmath + -- Looking for C++ include cmath - found + -- Generating style_angle.h... + [...] + -- Generating lmpinstalledpkgs.h... + -- The following tools and libraries have been found and configured: + * Git + * MPI + * OpenMP + * JPEG + * PNG + * ZLIB + + -- <<< Build configuration >>> + Build type: RelWithDebInfo + Install path: /home/akohlmey/.local + Generator: Unix Makefiles using /usr/bin/gmake + -- <<< Compilers and Flags: >>> + -- C++ Compiler: /opt/tools/gcc-8.2.0/bin/c++ + Type: GNU + Version: 8.2.0 + C++ Flags: -O2 -g -DNDEBUG + Defines: LAMMPS_SMALLBIG;LAMMPS_MEMALIGN=64;LAMMPS_JPEG;LAMMPS_PNG;LAMMPS_GZIP;LAMMPS_FFMPEG + Options: -ffast-math;-march=native + -- <<< Linker flags: >>> + -- Executable name: lmp + -- Static library flags: + -- <<< MPI flags >>> + -- MPI includes: /usr/include/mpich-x86_64 + -- MPI libraries: /usr/lib64/mpich/lib/libmpicxx.so;/usr/lib64/mpich/lib/libmpi.so; + -- Configuring done + -- Generating done + -- Build files have been written to: /home/akohlmey/compile/lammps/build + +The ``cmake`` command has one mandatory argument, and that is a folder +with either the file ``CMakeLists.txt`` or ``CMakeCache.txt``. The +``CMakeCache.txt`` file is created during the CMake configuration run +and contains all active settings, thus after a first run of CMake +all future runs in the build folder can use the folder ``.`` and CMake +will know where to find the CMake scripts and reload the settings +from the previous step. This means, that one can modify an existing +configuration by re-running CMake, but only needs to provide flags +indicating the desired change, everything else will be retained. One +can also mix compilation and configuration, i.e. start with a minimal +configuration and then, if needed, enable additional features and +recompile. + +The steps above **will NOT compile the code**\ . The compilation can be +started in a portable fashion with ``cmake --build .``, or you use the +selected built tool, e.g. ``make``. + +TUI version +^^^^^^^^^^^ + +For the text mode UI CMake program the basical principle is the same. +You start the command ``ccmake ../cmake`` in the ``build`` folder. .. list-table:: @@ -26,6 +208,32 @@ be altered. Options screen of ``ccmake`` + +This will show you the initial screen (left image) with the empty +configuration cache. Now you type the 'c' key to run the configuration +step. That will do a first configuration run and show the summary +(center image). You exit the summary screen with 'e' and see now the +main screen with detected options and settings. You can now make changes +by moving and down with the arrow keys of the keyboard and modify +entries. For on/off settings, the enter key will toggle the state. +For others, hitting enter will allow you to modify the value and +you commit the change by hitting the enter key again or cancel using +the escape key. All "new" settings will be marked with a star '\*' +and for as long as one setting is marked like this, you have to +re-run the configuration by hitting the 'c' key again, sometimes +multiple times unless the TUI shows the word "generate" next to the +letter 'g' and by hitting the 'g' key the build files will be written +to the folder and the TUI exits. You can quit without generating +build files by hitting 'q'. + +GUI version +^^^^^^^^^^^ + +For the graphical CMake program the steps are similar to the TUI +version. You can type the command ``cmake-gui ../cmake`` in the +``build`` folder. In this case the path to the CMake script folder is +not required, it can also be entered from the GUI. + .. list-table:: * - .. figure:: JPG/cmake-gui-initial.png @@ -46,8 +254,34 @@ be altered. Options screen of ``cmake-gui`` -You must have CMake version 3.10 or later on your system to build -LAMMPS. Installation instructions for CMake are below. +Again, you start with an empty configuration cache (left image) and need +to start the configuration step. For the very first configuration in a +folder, you will have a popup dialog (center image) asking to select the +desired build tool and some configuration settings (stick with the +default) and then you get the option screen with all new settings +highlighted in red. You can modify them (or not) and click on the +"configure" button again until satisfied and click on the "generate" +button to write out the build files. You can exit the GUI from the +"File" menu or hit "ctrl-q". + + +Setting options +--------------- + + + + +Using presets +------------- + +Since LAMMPS has a lot of optional features specifying them all +on the command line, or - when selecting a different compiler toolchain - +multiple options have to be changed + + +Choosing generators +------------------- + After the initial build, if you edit LAMMPS source files, or add your own new files to the source directory, you can just re-type make from -- GitLab From 8fabd79440a171f2fabfd99e477b030e19cc761d Mon Sep 17 00:00:00 2001 From: julient31 Date: Mon, 13 Apr 2020 07:53:27 -0600 Subject: [PATCH 275/717] Commit JT 041320 - corrected pair/spin to recover tests --- src/SPIN/compute_spin.cpp | 4 ++-- src/SPIN/pair_spin.cpp | 5 +++++ src/SPIN/pair_spin_dipole_cut.cpp | 9 +-------- src/SPIN/pair_spin_dipole_long.cpp | 9 +-------- src/SPIN/pair_spin_dmi.cpp | 9 +-------- src/SPIN/pair_spin_exchange.cpp | 9 +-------- src/SPIN/pair_spin_magelec.cpp | 9 +-------- src/SPIN/pair_spin_neel.cpp | 9 +-------- 8 files changed, 13 insertions(+), 50 deletions(-) diff --git a/src/SPIN/compute_spin.cpp b/src/SPIN/compute_spin.cpp index a7f5d01f44..b9833a8c91 100644 --- a/src/SPIN/compute_spin.cpp +++ b/src/SPIN/compute_spin.cpp @@ -217,8 +217,8 @@ void ComputeSpin::compute_vector() magtot[2] *= scale; magtot[3] = sqrt((magtot[0]*magtot[0])+(magtot[1]*magtot[1])+(magtot[2]*magtot[2])); spintemperature = hbar*tempnumtot; - // spintemperature /= (2.0*kb*tempdenomtot); - spintemperature /= (kb*tempdenomtot); + spintemperature /= (2.0*kb*tempdenomtot); + // spintemperature /= (kb*tempdenomtot); vector[0] = magtot[0]; vector[1] = magtot[1]; diff --git a/src/SPIN/pair_spin.cpp b/src/SPIN/pair_spin.cpp index 04f10ae425..d52a52ad0c 100644 --- a/src/SPIN/pair_spin.cpp +++ b/src/SPIN/pair_spin.cpp @@ -87,6 +87,11 @@ void PairSpin::init_style() if (!have_fix && (comm->me == 0)) error->warning(FLERR,"Using spin pair style without nve/spin or neb/spin"); + // check if newton pair is on + + if ((force->newton_pair == 0) && (comm->me == 0)) + error->all(FLERR,"Pair style spin requires newton pair on"); + // need a full neighbor list int irequest = neighbor->request(this,instance_me); diff --git a/src/SPIN/pair_spin_dipole_cut.cpp b/src/SPIN/pair_spin_dipole_cut.cpp index 775d61236f..8851728721 100644 --- a/src/SPIN/pair_spin_dipole_cut.cpp +++ b/src/SPIN/pair_spin_dipole_cut.cpp @@ -252,17 +252,10 @@ void PairSpinDipoleCut::compute(int eflag, int vflag) fm[i][1] += fmi[1]; fm[i][2] += fmi[2]; - if (newton_pair || j < nlocal) { - f[j][0] -= fi[0]; - f[j][1] -= fi[1]; - f[j][2] -= fi[2]; - } - if (eflag) { if (rsq <= local_cut2) { evdwl -= (spi[0]*fmi[0] + spi[1]*fmi[1] + spi[2]*fmi[2]); - // evdwl *= 0.5*hbar; - evdwl *= hbar; + evdwl *= 0.5*hbar; emag[i] += evdwl; } } else evdwl = 0.0; diff --git a/src/SPIN/pair_spin_dipole_long.cpp b/src/SPIN/pair_spin_dipole_long.cpp index eccd85bbfb..2cce3acd72 100644 --- a/src/SPIN/pair_spin_dipole_long.cpp +++ b/src/SPIN/pair_spin_dipole_long.cpp @@ -296,17 +296,10 @@ void PairSpinDipoleLong::compute(int eflag, int vflag) fm[i][1] += fmi[1]; fm[i][2] += fmi[2]; - if (newton_pair || j < nlocal) { - f[j][0] -= fi[0]; - f[j][1] -= fi[1]; - f[j][2] -= fi[2]; - } - if (eflag) { if (rsq <= local_cut2) { evdwl -= (spi[0]*fmi[0] + spi[1]*fmi[1] + spi[2]*fmi[2]); - // evdwl *= 0.5*hbar; - evdwl *= hbar; + evdwl *= 0.5*hbar; emag[i] += evdwl; } } else evdwl = 0.0; diff --git a/src/SPIN/pair_spin_dmi.cpp b/src/SPIN/pair_spin_dmi.cpp index 6dcb7e73a1..67d4024028 100644 --- a/src/SPIN/pair_spin_dmi.cpp +++ b/src/SPIN/pair_spin_dmi.cpp @@ -259,16 +259,9 @@ void PairSpinDmi::compute(int eflag, int vflag) fm[i][1] += fmi[1]; fm[i][2] += fmi[2]; - if (newton_pair || j < nlocal) { - f[j][0] -= fi[0]; - f[j][1] -= fi[1]; - f[j][2] -= fi[2]; - } - if (eflag) { evdwl -= (spi[0]*fmi[0] + spi[1]*fmi[1] + spi[2]*fmi[2]); - // evdwl *= 0.5*hbar; - evdwl *= hbar; + evdwl *= 0.5*hbar; emag[i] += evdwl; } else evdwl = 0.0; diff --git a/src/SPIN/pair_spin_exchange.cpp b/src/SPIN/pair_spin_exchange.cpp index b314245615..49368fcc93 100644 --- a/src/SPIN/pair_spin_exchange.cpp +++ b/src/SPIN/pair_spin_exchange.cpp @@ -243,16 +243,9 @@ void PairSpinExchange::compute(int eflag, int vflag) fm[i][1] += fmi[1]; fm[i][2] += fmi[2]; - if (newton_pair || j < nlocal) { - f[j][0] -= fi[0]; - f[j][1] -= fi[1]; - f[j][2] -= fi[2]; - } - if (eflag) { evdwl -= (spi[0]*fmi[0] + spi[1]*fmi[1] + spi[2]*fmi[2]); - // evdwl *= 0.5*hbar; - evdwl *= hbar; + evdwl *= 0.5*hbar; emag[i] += evdwl; } else evdwl = 0.0; diff --git a/src/SPIN/pair_spin_magelec.cpp b/src/SPIN/pair_spin_magelec.cpp index 2ecb3da75e..fc7e75a427 100644 --- a/src/SPIN/pair_spin_magelec.cpp +++ b/src/SPIN/pair_spin_magelec.cpp @@ -252,16 +252,9 @@ void PairSpinMagelec::compute(int eflag, int vflag) fm[i][1] += fmi[1]; fm[i][2] += fmi[2]; - if (newton_pair || j < nlocal) { - f[j][0] -= fi[0]; - f[j][1] -= fi[1]; - f[j][2] -= fi[2]; - } - if (eflag) { evdwl -= (spi[0]*fmi[0] + spi[1]*fmi[1] + spi[2]*fmi[2]); - // evdwl *= 0.5*hbar; - evdwl *= hbar; + evdwl *= 0.5*hbar; emag[i] += evdwl; } else evdwl = 0.0; diff --git a/src/SPIN/pair_spin_neel.cpp b/src/SPIN/pair_spin_neel.cpp index 5b64d59fa3..7133606f91 100644 --- a/src/SPIN/pair_spin_neel.cpp +++ b/src/SPIN/pair_spin_neel.cpp @@ -261,16 +261,9 @@ void PairSpinNeel::compute(int eflag, int vflag) fm[i][1] += fmi[1]; fm[i][2] += fmi[2]; - if (newton_pair || j < nlocal) { - f[j][0] -= fi[0]; - f[j][1] -= fi[1]; - f[j][2] -= fi[2]; - } - if (eflag) { evdwl = compute_neel_energy(i,j,rsq,eij,spi,spj); - // evdwl *= 0.5*hbar; - evdwl *= hbar; + evdwl *= 0.5*hbar; emag[i] += evdwl; } else evdwl = 0.0; -- GitLab From 38343f3c03385c3ea4a89504e738d70f44afa821 Mon Sep 17 00:00:00 2001 From: julient31 Date: Mon, 13 Apr 2020 08:05:06 -0600 Subject: [PATCH 276/717] C2 JT 041320 - removing a commented line --- src/SPIN/compute_spin.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/SPIN/compute_spin.cpp b/src/SPIN/compute_spin.cpp index b9833a8c91..fc1b582f43 100644 --- a/src/SPIN/compute_spin.cpp +++ b/src/SPIN/compute_spin.cpp @@ -218,7 +218,6 @@ void ComputeSpin::compute_vector() magtot[3] = sqrt((magtot[0]*magtot[0])+(magtot[1]*magtot[1])+(magtot[2]*magtot[2])); spintemperature = hbar*tempnumtot; spintemperature /= (2.0*kb*tempdenomtot); - // spintemperature /= (kb*tempdenomtot); vector[0] = magtot[0]; vector[1] = magtot[1]; -- GitLab From f159c57f08acac94cb263a61edfd99f8db0ce174 Mon Sep 17 00:00:00 2001 From: julient31 Date: Mon, 13 Apr 2020 08:15:59 -0600 Subject: [PATCH 277/717] Adding square roots to inf norm instances in min.cpp --- src/min.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/min.cpp b/src/min.cpp index 11d2812804..4c20fdbf04 100644 --- a/src/min.cpp +++ b/src/min.cpp @@ -341,7 +341,7 @@ void Min::setup(int flag) einitial = ecurrent; fnorm2_init = sqrt(fnorm_sqr()); - fnorminf_init = fnorm_inf(); + fnorminf_init = sqrt(fnorm_inf()); } /* ---------------------------------------------------------------------- @@ -422,7 +422,7 @@ void Min::setup_minimal(int flag) einitial = ecurrent; fnorm2_init = sqrt(fnorm_sqr()); - fnorminf_init = fnorm_inf(); + fnorminf_init = sqrt(fnorm_inf()); } /* ---------------------------------------------------------------------- @@ -477,7 +477,7 @@ void Min::cleanup() efinal = ecurrent; fnorm2_final = sqrt(fnorm_sqr()); - fnorminf_final = fnorm_inf(); + fnorminf_final = sqrt(fnorm_inf()); // reset reneighboring criteria -- GitLab From 29f9ca4b546d2fe80667837eb4ad89971d7366e1 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 13 Apr 2020 07:22:37 -0400 Subject: [PATCH 278/717] use list-table and figure to have side-by-side images --- doc/src/Howto_cmake.rst | 1 - doc/src/balance.rst | 38 ++++++++++++++++++++---------------- doc/src/fix_balance.rst | 43 ++++++++++++++++++++--------------------- 3 files changed, 42 insertions(+), 40 deletions(-) diff --git a/doc/src/Howto_cmake.rst b/doc/src/Howto_cmake.rst index 96ef039ab8..adeaf35114 100644 --- a/doc/src/Howto_cmake.rst +++ b/doc/src/Howto_cmake.rst @@ -208,7 +208,6 @@ You start the command ``ccmake ../cmake`` in the ``build`` folder. Options screen of ``ccmake`` - This will show you the initial screen (left image) with the empty configuration cache. Now you type the 'c' key to run the configuration step. That will do a first configuration run and show the summary diff --git a/doc/src/balance.rst b/doc/src/balance.rst index 5e631fdd27..5873724924 100644 --- a/doc/src/balance.rst +++ b/doc/src/balance.rst @@ -175,23 +175,27 @@ a logical 3d grid of processors. They operate by changing the cutting planes (or lines) between processors in 3d (or 2d), to adjust the volume (area in 2d) assigned to each processor, as in the following 2d diagram where processor sub-domains are shown and particles are -colored by the processor that owns them. The leftmost diagram is the -default partitioning of the simulation box across processors (one -sub-box for each of 16 processors); the middle diagram is after a -"grid" method has been applied. - -.. image:: JPG/balance_uniform_small.jpg - :target: JPG/balance_uniform.jpg -.. image:: JPG/balance_nonuniform_small.jpg - :target: JPG/balance_nonuniform.jpg -.. image:: JPG/balance_rcb_small.jpg - :target: JPG/balance_rcb.jpg - -The *rcb* style is a "tiling" method which does not produce a logical -3d grid of processors. Rather it tiles the simulation domain with -rectangular sub-boxes of varying size and shape in an irregular -fashion so as to have equal numbers of particles (or weight) in each -sub-box, as in the rightmost diagram above. +colored by the processor that owns them. + +.. list-table:: + + * - .. figure:: JPG/balance_uniform_small.jpg + :target: JPG/balance_uniform.jpg + + - .. figure:: JPG/balance_nonuniform_small.jpg + :target: JPG/balance_nonuniform.jpg + + - .. figure:: JPG/balance_rcb_small.jpg + :target: JPG/balance_rcb.jpg + +The leftmost diagram is the default partitioning of the simulation box +across processors (one sub-box for each of 16 processors); the middle +diagram is after a "grid" method has been applied. The *rcb* style is a +"tiling" method which does not produce a logical 3d grid of processors. +Rather it tiles the simulation domain with rectangular sub-boxes of +varying size and shape in an irregular fashion so as to have equal +numbers of particles (or weight) in each sub-box, as in the rightmost +diagram above. The "grid" methods can be used with either of the :doc:`comm_style ` command options, *brick* or *tiled*\ . The diff --git a/doc/src/fix_balance.rst b/doc/src/fix_balance.rst index 13fdf6b1c7..b92644fcd9 100644 --- a/doc/src/fix_balance.rst +++ b/doc/src/fix_balance.rst @@ -154,28 +154,27 @@ of processors. It operates by changing the cutting planes (or lines) between processors in 3d (or 2d), to adjust the volume (area in 2d) assigned to each processor, as in the following 2d diagram where processor sub-domains are shown and atoms are colored by the processor -that owns them. The leftmost diagram is the default partitioning of -the simulation box across processors (one sub-box for each of 16 -processors); the middle diagram is after a "grid" method has been -applied. - -.. |bal_uni| image:: JPG/balance_uniform_small.jpg - :target: JPG/balance_uniform.jpg - :width: 31% -.. |bal_non| image:: JPG/balance_nonuniform_small.jpg - :target: JPG/balance_nonuniform.jpg - :width: 31% -.. |bal_rcb| image:: JPG/balance_rcb_small.jpg - :target: JPG/balance_rcb.jpg - :width: 31% - -|bal_uni| |bal_non| |bal_rcb| - -The *rcb* style is a "tiling" method which does not produce a logical -3d grid of processors. Rather it tiles the simulation domain with -rectangular sub-boxes of varying size and shape in an irregular -fashion so as to have equal numbers of particles (or weight) in each -sub-box, as in the rightmost diagram above. +that owns them. + +.. list-table:: + + * - .. figure:: JPG/balance_uniform_small.jpg + :target: JPG/balance_uniform.jpg + + - .. figure:: JPG/balance_nonuniform_small.jpg + :target: JPG/balance_nonuniform.jpg + + - .. figure:: JPG/balance_rcb_small.jpg + :target: JPG/balance_rcb.jpg + +The leftmost diagram is the default partitioning of the simulation box +across processors (one sub-box for each of 16 processors); the middle +diagram is after a "grid" method has been applied. The *rcb* style is a +"tiling" method which does not produce a logical 3d grid of processors. +Rather it tiles the simulation domain with rectangular sub-boxes of +varying size and shape in an irregular fashion so as to have equal +numbers of particles (or weight) in each sub-box, as in the rightmost +diagram above. The "grid" methods can be used with either of the :doc:`comm_style ` command options, *brick* or *tiled*\ . The -- GitLab From 03634b12df7bc1fb022392a57061dd09d2179885 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 13 Apr 2020 10:38:09 -0400 Subject: [PATCH 279/717] add missing pair style. Coulombic/Coulombics -> Coulomb for consistency --- doc/src/Commands_pair.rst | 1 + doc/src/pair_style.rst | 87 ++++++++++++++++++++------------------- 2 files changed, 45 insertions(+), 43 deletions(-) diff --git a/doc/src/Commands_pair.rst b/doc/src/Commands_pair.rst index 34b04969f9..b176e22a85 100644 --- a/doc/src/Commands_pair.rst +++ b/doc/src/Commands_pair.rst @@ -131,6 +131,7 @@ OPT. * :doc:`lj/class2/coul/cut (ko) ` * :doc:`lj/class2/coul/cut/soft ` * :doc:`lj/class2/coul/long (gko) ` + * :doc:`lj/class2/coul/long/cs ` * :doc:`lj/class2/coul/long/soft ` * :doc:`lj/class2/soft ` * :doc:`lj/cubic (go) ` diff --git a/doc/src/pair_style.rst b/doc/src/pair_style.rst index 5b5e6e6fe8..48dd2dde0f 100644 --- a/doc/src/pair_style.rst +++ b/doc/src/pair_style.rst @@ -111,41 +111,41 @@ accelerated styles exist. * :doc:`born ` - Born-Mayer-Huggins potential * :doc:`born/coul/dsf ` - Born with damped-shifted-force model * :doc:`born/coul/dsf/cs ` - Born with damped-shifted-force and core/shell model -* :doc:`born/coul/long ` - Born with long-range Coulombics -* :doc:`born/coul/long/cs ` - Born with long-range Coulombics and core/shell -* :doc:`born/coul/msm ` - Born with long-range MSM Coulombics -* :doc:`born/coul/wolf ` - Born with Wolf potential for Coulombics -* :doc:`born/coul/wolf/cs ` - Born with Wolf potential for Coulombics and core/shell model +* :doc:`born/coul/long ` - Born with long-range Coulomb +* :doc:`born/coul/long/cs ` - Born with long-range Coulomb and core/shell +* :doc:`born/coul/msm ` - Born with long-range MSM Coulomb +* :doc:`born/coul/wolf ` - Born with Wolf potential for Coulomb +* :doc:`born/coul/wolf/cs ` - Born with Wolf potential for Coulomb and core/shell model * :doc:`brownian ` - Brownian potential for Fast Lubrication Dynamics * :doc:`brownian/poly ` - Brownian potential for Fast Lubrication Dynamics with polydispersity * :doc:`buck ` - Buckingham potential * :doc:`buck/coul/cut ` - Buckingham with cutoff Coulomb -* :doc:`buck/coul/long ` - Buckingham with long-range Coulombics -* :doc:`buck/coul/long/cs ` - Buckingham with long-range Coulombics and core/shell -* :doc:`buck/coul/msm ` - Buckingham with long-range MSM Coulombics -* :doc:`buck/long/coul/long ` - long-range Buckingham with long-range Coulombics +* :doc:`buck/coul/long ` - Buckingham with long-range Coulomb +* :doc:`buck/coul/long/cs ` - Buckingham with long-range Coulomb and core/shell +* :doc:`buck/coul/msm ` - Buckingham with long-range MSM Coulomb +* :doc:`buck/long/coul/long ` - long-range Buckingham with long-range Coulomb * :doc:`buck/mdf ` - Buckingham with a taper function * :doc:`buck6d/coul/gauss/dsf ` - dispersion-damped Buckingham with damped-shift-force model -* :doc:`buck6d/coul/gauss/long ` - dispersion-damped Buckingham with long-range Coulombics +* :doc:`buck6d/coul/gauss/long ` - dispersion-damped Buckingham with long-range Coulomb * :doc:`colloid ` - integrated colloidal potential * :doc:`comb ` - charge-optimized many-body (COMB) potential * :doc:`comb3 ` - charge-optimized many-body (COMB3) potential * :doc:`cosine/squared ` - Cooke-Kremer-Deserno membrane model potential -* :doc:`coul/cut ` - cutoff Coulombic potential -* :doc:`coul/cut/soft ` - Coulombic potential with a soft core -* :doc:`coul/debye ` - cutoff Coulombic potential with Debye screening +* :doc:`coul/cut ` - cutoff Coulomb potential +* :doc:`coul/cut/soft ` - Coulomb potential with a soft core +* :doc:`coul/debye ` - cutoff Coulomb potential with Debye screening * :doc:`coul/diel ` - Coulomb potential with dielectric permittivity -* :doc:`coul/dsf ` - Coulombics with damped-shifted-force model -* :doc:`coul/long ` - long-range Coulombic potential -* :doc:`coul/long/cs ` - long-range Coulombic potential and core/shell -* :doc:`coul/long/soft ` - long-range Coulombic potential with a soft core -* :doc:`coul/msm ` - long-range MSM Coulombics -* :doc:`coul/slater/cut ` - smeared out Coulombics -* :doc:`coul/slater/long ` - long-range smeared out Coulombics -* :doc:`coul/shield ` - Coulombics for boron nitride for use with :doc:`ilp/graphene/hbn ` potential -* :doc:`coul/streitz ` - Coulombics via Streitz/Mintmire Slater orbitals -* :doc:`coul/wolf ` - Coulombics via Wolf potential -* :doc:`coul/wolf/cs ` - ditto with core/shell adjustments +* :doc:`coul/dsf ` - Coulomb with damped-shifted-force model +* :doc:`coul/long ` - long-range Coulomb potential +* :doc:`coul/long/cs ` - long-range Coulomb potential and core/shell +* :doc:`coul/long/soft ` - long-range Coulomb potential with a soft core +* :doc:`coul/msm ` - long-range MSM Coulomb +* :doc:`coul/slater/cut ` - smeared out Coulomb +* :doc:`coul/slater/long ` - long-range smeared out Coulomb +* :doc:`coul/shield ` - Coulomb for boron nitride for use with :doc:`ilp/graphene/hbn ` potential +* :doc:`coul/streitz ` - Coulomb via Streitz/Mintmire Slater orbitals +* :doc:`coul/wolf ` - Coulomb via Wolf potential +* :doc:`coul/wolf/cs ` - Coulomb via Wolf potential with core/shell adjustments * :doc:`dpd ` - dissipative particle dynamics (DPD) * :doc:`dpd/fdt ` - DPD for constant temperature and pressure * :doc:`dpd/fdt/energy ` - DPD for constant energy and enthalpy @@ -189,44 +189,45 @@ accelerated styles exist. * :doc:`lj/charmm/coul/charmm/implicit ` - CHARMM for implicit solvent * :doc:`lj/charmm/coul/long ` - CHARMM with long-range Coulomb * :doc:`lj/charmm/coul/long/soft ` - CHARMM with long-range Coulomb and a soft core -* :doc:`lj/charmm/coul/msm ` - CHARMM with long-range MSM Coulombics +* :doc:`lj/charmm/coul/msm ` - CHARMM with long-range MSM Coulomb * :doc:`lj/charmmfsw/coul/charmmfsh ` - CHARMM with force switching and shifting -* :doc:`lj/charmmfsw/coul/long ` - CHARMM with force switching and long-rnage Coulombics -* :doc:`lj/class2 ` - COMPASS (class 2) force field with no Coulomb +* :doc:`lj/charmmfsw/coul/long ` - CHARMM with force switching and long-rnage Coulomb +* :doc:`lj/class2 ` - COMPASS (class 2) force field without Coulomb * :doc:`lj/class2/coul/cut ` - COMPASS with cutoff Coulomb * :doc:`lj/class2/coul/cut/soft ` - COMPASS with cutoff Coulomb with a soft core * :doc:`lj/class2/coul/long ` - COMPASS with long-range Coulomb +* :doc:`lj/class2/coul/long/cs ` - COMPASS with long-range Coulomb with core/shell adjustments * :doc:`lj/class2/coul/long/soft ` - COMPASS with long-range Coulomb with a soft core * :doc:`lj/class2/soft ` - COMPASS (class 2) force field with no Coulomb with a soft core * :doc:`lj/cubic ` - LJ with cubic after inflection point -* :doc:`lj/cut ` - cutoff Lennard-Jones potential with no Coulomb +* :doc:`lj/cut ` - cutoff Lennard-Jones potential without Coulomb * :doc:`lj/cut/coul/cut ` - LJ with cutoff Coulomb * :doc:`lj/cut/coul/cut/soft ` - LJ with cutoff Coulomb with a soft core * :doc:`lj/cut/coul/debye ` - LJ with Debye screening added to Coulomb -* :doc:`lj/cut/coul/dsf ` - LJ with Coulombics via damped shifted forces -* :doc:`lj/cut/coul/long ` - LJ with long-range Coulombics -* :doc:`lj/cut/coul/long/cs ` - ditto with core/shell adjustments -* :doc:`lj/cut/coul/long/soft ` - LJ with long-range Coulombics with a soft core -* :doc:`lj/cut/coul/msm ` - LJ with long-range MSM Coulombics -* :doc:`lj/cut/coul/wolf ` - LJ with Coulombics via Wolf potential +* :doc:`lj/cut/coul/dsf ` - LJ with Coulomb via damped shifted forces +* :doc:`lj/cut/coul/long ` - LJ with long-range Coulomb +* :doc:`lj/cut/coul/long/cs ` - LJ with long-range Coulomb with core/shell adjustments +* :doc:`lj/cut/coul/long/soft ` - LJ with long-range Coulomb with a soft core +* :doc:`lj/cut/coul/msm ` - LJ with long-range MSM Coulomb +* :doc:`lj/cut/coul/wolf ` - LJ with Coulomb via Wolf potential * :doc:`lj/cut/dipole/cut ` - point dipoles with cutoff * :doc:`lj/cut/dipole/long ` - point dipoles with long-range Ewald * :doc:`lj/cut/soft ` - LJ with a soft core -* :doc:`lj/cut/thole/long ` - LJ with Coulombics with thole damping +* :doc:`lj/cut/thole/long ` - LJ with Coulomb with thole damping * :doc:`lj/cut/tip4p/cut ` - LJ with cutoff Coulomb for TIP4P water * :doc:`lj/cut/tip4p/long ` - LJ with long-range Coulomb for TIP4P water * :doc:`lj/cut/tip4p/long/soft ` - LJ with cutoff Coulomb for TIP4P water with a soft core * :doc:`lj/expand ` - Lennard-Jones for variable size particles -* :doc:`lj/expand/coul/long ` - Lennard-Jones for variable size particles with long-range Coulombics +* :doc:`lj/expand/coul/long ` - Lennard-Jones for variable size particles with long-range Coulomb * :doc:`lj/gromacs ` - GROMACS-style Lennard-Jones potential -* :doc:`lj/gromacs/coul/gromacs ` - GROMACS-style LJ and Coulombic potential -* :doc:`lj/long/coul/long ` - long-range LJ and long-range Coulombics +* :doc:`lj/gromacs/coul/gromacs ` - GROMACS-style LJ and Coulomb potential +* :doc:`lj/long/coul/long ` - long-range LJ and long-range Coulomb * :doc:`lj/long/dipole/long ` - long-range LJ and long-range point dipoles -* :doc:`lj/long/tip4p/long ` - long-range LJ and long-range Coulombics for TIP4P water +* :doc:`lj/long/tip4p/long ` - long-range LJ and long-range Coulomb for TIP4P water * :doc:`lj/mdf ` - LJ potential with a taper function * :doc:`lj/sdk ` - LJ for SDK coarse-graining -* :doc:`lj/sdk/coul/long ` - LJ for SDK coarse-graining with long-range Coulombics -* :doc:`lj/sdk/coul/msm ` - LJ for SDK coarse-graining with long-range Coulombics via MSM +* :doc:`lj/sdk/coul/long ` - LJ for SDK coarse-graining with long-range Coulomb +* :doc:`lj/sdk/coul/msm ` - LJ for SDK coarse-graining with long-range Coulomb via MSM * :doc:`lj/sf/dipole/sf ` - LJ with dipole interaction with shifted forces * :doc:`lj/smooth ` - smoothed Lennard-Jones potential * :doc:`lj/smooth/linear ` - linear smoothed LJ potential @@ -255,7 +256,7 @@ accelerated styles exist. * :doc:`nb3b/harmonic ` - non-bonded 3-body harmonic potential * :doc:`nm/cut ` - N-M potential * :doc:`nm/cut/coul/cut ` - N-M potential with cutoff Coulomb -* :doc:`nm/cut/coul/long ` - N-M potential with long-range Coulombics +* :doc:`nm/cut/coul/long ` - N-M potential with long-range Coulomb * :doc:`oxdna/coaxstk ` - * :doc:`oxdna/excv ` - * :doc:`oxdna/hbond ` - @@ -315,7 +316,7 @@ accelerated styles exist. * :doc:`tersoff/zbl ` - Tersoff/ZBL 3-body potential * :doc:`thole ` - Coulomb interactions with thole damping * :doc:`tip4p/cut ` - Coulomb for TIP4P water w/out LJ -* :doc:`tip4p/long ` - long-range Coulombics for TIP4P water w/out LJ +* :doc:`tip4p/long ` - long-range Coulomb for TIP4P water w/out LJ * :doc:`tip4p/long/soft ` - * :doc:`tri/lj ` - LJ potential between triangles * :doc:`ufm ` - -- GitLab From 5d2ec73c5d703d8674d5890913cbbb8403d831c1 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 13 Apr 2020 11:22:19 -0400 Subject: [PATCH 280/717] re-enable cross-compilation with mingw64 --- lib/colvars/lepton/src/MSVC_erfc.h | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/colvars/lepton/src/MSVC_erfc.h b/lib/colvars/lepton/src/MSVC_erfc.h index c30a8ce542..dba577451d 100644 --- a/lib/colvars/lepton/src/MSVC_erfc.h +++ b/lib/colvars/lepton/src/MSVC_erfc.h @@ -8,9 +8,13 @@ * (VC11 has _MSC_VER=1700). */ -#if defined(_MSC_VER) +#if defined(_MSC_VER) || defined (__MINGW32__) +#if !defined(M_PI) #define M_PI 3.14159265358979323846264338327950288 +#endif +#endif +#if defined(_MSC_VER) #if _MSC_VER <= 1700 // 1700 is VC11, 1800 is VC12 /*************************** * erf.cpp -- GitLab From 6c3bb9f511d0eb2d54f37ebf55de3a417416a53b Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 13 Apr 2020 11:34:00 -0400 Subject: [PATCH 281/717] use MY_PI everywhere, not M_PI. --- src/GRANULAR/fix_wall_gran.cpp | 14 +++++++------- src/PERI/pair_peri_eps.cpp | 4 +++- src/USER-INTEL/pair_airebo_intel.cpp | 12 ++++++------ src/USER-MISC/fix_pimd.cpp | 12 +++++++----- src/USER-MISC/fix_rhok.cpp | 8 +++++--- src/USER-QTB/fix_qbmsst.cpp | 6 ++++-- src/USER-QTB/fix_qtb.cpp | 6 ++++-- 7 files changed, 36 insertions(+), 26 deletions(-) diff --git a/src/GRANULAR/fix_wall_gran.cpp b/src/GRANULAR/fix_wall_gran.cpp index c8eec53a1d..e5ed1579ba 100644 --- a/src/GRANULAR/fix_wall_gran.cpp +++ b/src/GRANULAR/fix_wall_gran.cpp @@ -1134,15 +1134,15 @@ void FixWallGran::granular(double rsq, double dx, double dy, double dz, t2 = 8*dR*dR2*E*E*E; t3 = 4*dR2*E; sqrt1 = MAX(0, t0*(t1+2*t2)); // in case sqrt(0) < 0 due to precision issues - t4 = cbrt(t1+t2+THREEROOT3*M_PI*sqrt(sqrt1)); + t4 = cbrt(t1+t2+THREEROOT3*MY_PI*sqrt(sqrt1)); t5 = t3/t4 + t4/E; sqrt2 = MAX(0, 2*dR + t5); t6 = sqrt(sqrt2); - sqrt3 = MAX(0, 4*dR - t5 + SIXROOT6*coh*M_PI*R2/(E*t6)); + sqrt3 = MAX(0, 4*dR - t5 + SIXROOT6*coh*MY_PI*R2/(E*t6)); a = INVROOT6*(t6 + sqrt(sqrt3)); a2 = a*a; knfac = normal_coeffs[0]*a; - Fne = knfac*a2/Reff - TWOPI*a2*sqrt(4*coh*E/(M_PI*a)); + Fne = knfac*a2/Reff - TWOPI*a2*sqrt(4*coh*E/(MY_PI*a)); } else { knfac = E; //Hooke a = sqrt(dR); @@ -1192,11 +1192,11 @@ void FixWallGran::granular(double rsq, double dx, double dy, double dz, vrel = sqrt(vrel); if (normal_model == JKR) { - F_pulloff = 3*M_PI*coh*Reff; + F_pulloff = 3*MY_PI*coh*Reff; Fncrit = fabs(Fne + 2*F_pulloff); } else if (normal_model == DMT) { - F_pulloff = 4*M_PI*coh*Reff; + F_pulloff = 4*MY_PI*coh*Reff; Fncrit = fabs(Fne + 2*F_pulloff); } else{ @@ -1589,8 +1589,8 @@ double FixWallGran::pulloff_distance(double radius) double coh, E, a, dist; coh = normal_coeffs[3]; E = normal_coeffs[0]*THREEQUARTERS; - a = cbrt(9*M_PI*coh*radius/(4*E)); - dist = a*a/radius - 2*sqrt(M_PI*coh*a/E); + a = cbrt(9*MY_PI*coh*radius/(4*E)); + dist = a*a/radius - 2*sqrt(MY_PI*coh*a/E); return dist; } diff --git a/src/PERI/pair_peri_eps.cpp b/src/PERI/pair_peri_eps.cpp index cd2ab3a2d0..ff79320fc3 100644 --- a/src/PERI/pair_peri_eps.cpp +++ b/src/PERI/pair_peri_eps.cpp @@ -30,10 +30,12 @@ #include "neighbor.h" #include "neigh_list.h" #include "memory.h" +#include "math_const.h" #include "error.h" #include "utils.h" using namespace LAMMPS_NS; +using namespace MathConst; /* ---------------------------------------------------------------------- */ @@ -272,7 +274,7 @@ void PairPeriEPS::compute(int eflag, int vflag) double horizon = cut[itype][itype]; double tdnorm = compute_DeviatoricForceStateNorm(i); double pointwiseYieldvalue = 25.0 * yieldStress * - yieldStress / 8 / M_PI / pow(horizon,5); + yieldStress / 8 / MY_PI / pow(horizon,5); double fsurf = (tdnorm * tdnorm)/2 - pointwiseYieldvalue; diff --git a/src/USER-INTEL/pair_airebo_intel.cpp b/src/USER-INTEL/pair_airebo_intel.cpp index e6e8503bb0..c1e4a5374a 100644 --- a/src/USER-INTEL/pair_airebo_intel.cpp +++ b/src/USER-INTEL/pair_airebo_intel.cpp @@ -49,8 +49,10 @@ #include "kspace.h" #include "modify.h" #include "suffix.h" +#include "math_const.h" using namespace LAMMPS_NS; +using namespace MathConst; #ifdef __INTEL_OFFLOAD #pragma offload_attribute(push, target(mic)) @@ -637,8 +639,6 @@ namespace overloaded { compared to original code. ---------------------------------------------------------------------- */ -#define M_PI 3.14159265358979323846 /* pi */ - #define CARBON 0 #define HYDROGEN 1 #define TOL 1.0e-9 @@ -662,8 +662,8 @@ inline flt_t Sp(flt_t r, flt_t lo, flt_t hi, flt_t * del) { if (del) *del = 0; return 0; } else { - t *= static_cast(M_PI); - if (del) *del = static_cast(-0.5 * M_PI) + t *= static_cast(MY_PI); + if (del) *del = static_cast(-0.5 * MY_PI) * overloaded::sin(t) / (hi - lo); return static_cast(0.5) * (1 + overloaded::cos(t)); } @@ -2248,7 +2248,7 @@ static fvec aut_Sp_deriv(fvec r, fvec lo, fvec hi, fvec * d) { fvec c_1 = fvec::set1(1); fvec c_0_5 = fvec::set1(0.5); fvec c_m0_5 = fvec::set1(-0.5); - fvec c_PI = fvec::set1(M_PI); + fvec c_PI = fvec::set1(MY_PI); bvec m_lo = fvec::cmple(r, lo); bvec m_hi = fvec::cmpnlt(r, hi); // nlt == ge bvec m_tr = bvec::kandn(m_lo, ~ m_hi); @@ -2273,7 +2273,7 @@ static fvec aut_Sp_deriv(fvec r, fvec lo, fvec hi, fvec * d) { static fvec aut_mask_Sp(bvec mask, fvec r, fvec lo, fvec hi) { fvec c_1 = fvec::set1(1); fvec c_0_5 = fvec::set1(0.5); - fvec c_PI = fvec::set1(M_PI); + fvec c_PI = fvec::set1(MY_PI); bvec m_lo = fvec::mask_cmple(mask, r, lo); bvec m_hi = fvec::mask_cmpnlt(mask, r, hi); // nlt == ge bvec m_tr = bvec::kandn(m_lo, bvec::kandn(m_hi, mask)); diff --git a/src/USER-MISC/fix_pimd.cpp b/src/USER-MISC/fix_pimd.cpp index 73e1ff434c..c73f802362 100644 --- a/src/USER-MISC/fix_pimd.cpp +++ b/src/USER-MISC/fix_pimd.cpp @@ -32,11 +32,13 @@ #include "atom.h" #include "domain.h" #include "update.h" +#include "math_const.h" #include "memory.h" #include "error.h" using namespace LAMMPS_NS; using namespace FixConst; +using namespace MathConst; enum{PIMD,NMPIMD,CMD}; @@ -165,7 +167,7 @@ void FixPIMD::init() const double Boltzmann = 1.3806488E-23; // SI unit: J/K const double Plank = 6.6260755E-34; // SI unit: m^2 kg / s - double hbar = Plank / ( 2.0 * M_PI ) * sp; + double hbar = Plank / ( 2.0 * MY_PI ) * sp; double beta = 1.0 / ( Boltzmann * input.nh_temp); // - P / ( beta^2 * hbar^2) SI unit: s^-2 @@ -181,7 +183,7 @@ void FixPIMD::init() const double Boltzmann = force->boltz; const double Plank = force->hplanck; - double hbar = Plank / ( 2.0 * M_PI ); + double hbar = Plank / ( 2.0 * MY_PI ); double beta = 1.0 / (Boltzmann * nhc_temp); double _fbond = 1.0 * np / (beta*beta*hbar*hbar) ; @@ -429,7 +431,7 @@ void FixPIMD::nmpimd_init() for(int i=2; i<=np/2; i++) { - lam[2*i-3] = lam[2*i-2] = 2.0 * np * (1.0 - 1.0 *cos(2.0*M_PI*(i-1)/np)); + lam[2*i-3] = lam[2*i-2] = 2.0 * np * (1.0 - 1.0 *cos(2.0*MY_PI*(i-1)/np)); } // Set up eigenvectors for non-degenerated modes @@ -444,8 +446,8 @@ void FixPIMD::nmpimd_init() for(int i=0; i<(np-1)/2; i++) for(int j=0; jinumeric(FLERR,inArgv[4]); n[2] = force->inumeric(FLERR,inArgv[5]); - mK[0] = n[0]*(2*M_PI / (domain->boxhi[0] - domain->boxlo[0])); - mK[1] = n[1]*(2*M_PI / (domain->boxhi[1] - domain->boxlo[1])); - mK[2] = n[2]*(2*M_PI / (domain->boxhi[2] - domain->boxlo[2])); + mK[0] = n[0]*(2*MY_PI / (domain->boxhi[0] - domain->boxlo[0])); + mK[1] = n[1]*(2*MY_PI / (domain->boxhi[1] - domain->boxlo[1])); + mK[2] = n[2]*(2*MY_PI / (domain->boxhi[2] - domain->boxlo[2])); mKappa = force->numeric(FLERR,inArgv[6]); mRhoK0 = force->numeric(FLERR,inArgv[7]); diff --git a/src/USER-QTB/fix_qbmsst.cpp b/src/USER-QTB/fix_qbmsst.cpp index abbf1701b8..72d7f87d46 100644 --- a/src/USER-QTB/fix_qbmsst.cpp +++ b/src/USER-QTB/fix_qbmsst.cpp @@ -32,10 +32,12 @@ #include "memory.h" #include "error.h" #include "kspace.h" +#include "math_const.h" #include "utils.h" using namespace LAMMPS_NS; using namespace FixConst; +using namespace MathConst; /* ---------------------------------------------------------------------- read parameters @@ -538,7 +540,7 @@ void FixQBMSST::initial_integrate(int /*vflag*/) } else { double energy_k= force->hplanck * fabs(f_k); omega_H[k]=sqrt( energy_k * (0.5+1.0/( exp(energy_k/(force->boltz * t_current)) - 1.0 )) ); - omega_H[k]*=alpha*sin((k-N_f)*M_PI/(2*alpha*N_f))/sin((k-N_f)*M_PI/(2*N_f)); + omega_H[k]*=alpha*sin((k-N_f)*MY_PI/(2*alpha*N_f))/sin((k-N_f)*MY_PI/(2*N_f)); } } @@ -547,7 +549,7 @@ void FixQBMSST::initial_integrate(int /*vflag*/) time_H[n] = 0; double t_n=(n-N_f); for (int k = 0; k < 2*N_f; k++) { - double omega_k=(k-N_f)*M_PI/N_f; + double omega_k=(k-N_f)*MY_PI/N_f; time_H[n] += omega_H[k]*(cos(omega_k*t_n)); } time_H[n]/=(2.0*N_f); diff --git a/src/USER-QTB/fix_qtb.cpp b/src/USER-QTB/fix_qtb.cpp index 593ca31006..fa15385859 100644 --- a/src/USER-QTB/fix_qtb.cpp +++ b/src/USER-QTB/fix_qtb.cpp @@ -29,11 +29,13 @@ #include "respa.h" #include "comm.h" #include "random_mars.h" +#include "math_const.h" #include "memory.h" #include "error.h" using namespace LAMMPS_NS; using namespace FixConst; +using namespace MathConst; /* ---------------------------------------------------------------------- read parameters @@ -195,7 +197,7 @@ void FixQTB::init() } else { double energy_k= force->hplanck * fabs(f_k); omega_H[k]=sqrt( energy_k * (0.5+1.0/( exp(energy_k/(force->boltz * t_target)) - 1.0 )) ); - omega_H[k]*=alpha*sin((k-N_f)*M_PI/(2*alpha*N_f))/sin((k-N_f)*M_PI/(2*N_f)); + omega_H[k]*=alpha*sin((k-N_f)*MY_PI/(2*alpha*N_f))/sin((k-N_f)*MY_PI/(2*N_f)); } } @@ -204,7 +206,7 @@ void FixQTB::init() time_H[n] = 0; double t_n=(n-N_f); for (int k = 0; k < 2*N_f; k++) { - double omega_k=(k-N_f)*M_PI/N_f; + double omega_k=(k-N_f)*MY_PI/N_f; time_H[n] += omega_H[k]*(cos(omega_k*t_n)); } time_H[n]/=(2.0*N_f); -- GitLab From 209a3fde7119d7826403a69fef75565ed146cd57 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 13 Apr 2020 11:34:00 -0400 Subject: [PATCH 282/717] use MY_PI everywhere, not M_PI. --- lib/colvars/lepton/src/MSVC_erfc.h | 2 +- src/GRANULAR/fix_wall_gran.cpp | 14 +++++++------- src/PERI/pair_peri_eps.cpp | 4 +++- src/USER-INTEL/pair_airebo_intel.cpp | 12 ++++++------ src/USER-MISC/fix_pimd.cpp | 12 +++++++----- src/USER-MISC/fix_rhok.cpp | 8 +++++--- src/USER-QTB/fix_qbmsst.cpp | 6 ++++-- src/USER-QTB/fix_qtb.cpp | 6 ++++-- 8 files changed, 37 insertions(+), 27 deletions(-) diff --git a/lib/colvars/lepton/src/MSVC_erfc.h b/lib/colvars/lepton/src/MSVC_erfc.h index dba577451d..b1cd87a289 100644 --- a/lib/colvars/lepton/src/MSVC_erfc.h +++ b/lib/colvars/lepton/src/MSVC_erfc.h @@ -8,7 +8,7 @@ * (VC11 has _MSC_VER=1700). */ -#if defined(_MSC_VER) || defined (__MINGW32__) +#if defined(_MSC_VER) || defined(__MINGW32__) #if !defined(M_PI) #define M_PI 3.14159265358979323846264338327950288 #endif diff --git a/src/GRANULAR/fix_wall_gran.cpp b/src/GRANULAR/fix_wall_gran.cpp index c8eec53a1d..e5ed1579ba 100644 --- a/src/GRANULAR/fix_wall_gran.cpp +++ b/src/GRANULAR/fix_wall_gran.cpp @@ -1134,15 +1134,15 @@ void FixWallGran::granular(double rsq, double dx, double dy, double dz, t2 = 8*dR*dR2*E*E*E; t3 = 4*dR2*E; sqrt1 = MAX(0, t0*(t1+2*t2)); // in case sqrt(0) < 0 due to precision issues - t4 = cbrt(t1+t2+THREEROOT3*M_PI*sqrt(sqrt1)); + t4 = cbrt(t1+t2+THREEROOT3*MY_PI*sqrt(sqrt1)); t5 = t3/t4 + t4/E; sqrt2 = MAX(0, 2*dR + t5); t6 = sqrt(sqrt2); - sqrt3 = MAX(0, 4*dR - t5 + SIXROOT6*coh*M_PI*R2/(E*t6)); + sqrt3 = MAX(0, 4*dR - t5 + SIXROOT6*coh*MY_PI*R2/(E*t6)); a = INVROOT6*(t6 + sqrt(sqrt3)); a2 = a*a; knfac = normal_coeffs[0]*a; - Fne = knfac*a2/Reff - TWOPI*a2*sqrt(4*coh*E/(M_PI*a)); + Fne = knfac*a2/Reff - TWOPI*a2*sqrt(4*coh*E/(MY_PI*a)); } else { knfac = E; //Hooke a = sqrt(dR); @@ -1192,11 +1192,11 @@ void FixWallGran::granular(double rsq, double dx, double dy, double dz, vrel = sqrt(vrel); if (normal_model == JKR) { - F_pulloff = 3*M_PI*coh*Reff; + F_pulloff = 3*MY_PI*coh*Reff; Fncrit = fabs(Fne + 2*F_pulloff); } else if (normal_model == DMT) { - F_pulloff = 4*M_PI*coh*Reff; + F_pulloff = 4*MY_PI*coh*Reff; Fncrit = fabs(Fne + 2*F_pulloff); } else{ @@ -1589,8 +1589,8 @@ double FixWallGran::pulloff_distance(double radius) double coh, E, a, dist; coh = normal_coeffs[3]; E = normal_coeffs[0]*THREEQUARTERS; - a = cbrt(9*M_PI*coh*radius/(4*E)); - dist = a*a/radius - 2*sqrt(M_PI*coh*a/E); + a = cbrt(9*MY_PI*coh*radius/(4*E)); + dist = a*a/radius - 2*sqrt(MY_PI*coh*a/E); return dist; } diff --git a/src/PERI/pair_peri_eps.cpp b/src/PERI/pair_peri_eps.cpp index cd2ab3a2d0..ff79320fc3 100644 --- a/src/PERI/pair_peri_eps.cpp +++ b/src/PERI/pair_peri_eps.cpp @@ -30,10 +30,12 @@ #include "neighbor.h" #include "neigh_list.h" #include "memory.h" +#include "math_const.h" #include "error.h" #include "utils.h" using namespace LAMMPS_NS; +using namespace MathConst; /* ---------------------------------------------------------------------- */ @@ -272,7 +274,7 @@ void PairPeriEPS::compute(int eflag, int vflag) double horizon = cut[itype][itype]; double tdnorm = compute_DeviatoricForceStateNorm(i); double pointwiseYieldvalue = 25.0 * yieldStress * - yieldStress / 8 / M_PI / pow(horizon,5); + yieldStress / 8 / MY_PI / pow(horizon,5); double fsurf = (tdnorm * tdnorm)/2 - pointwiseYieldvalue; diff --git a/src/USER-INTEL/pair_airebo_intel.cpp b/src/USER-INTEL/pair_airebo_intel.cpp index e6e8503bb0..c1e4a5374a 100644 --- a/src/USER-INTEL/pair_airebo_intel.cpp +++ b/src/USER-INTEL/pair_airebo_intel.cpp @@ -49,8 +49,10 @@ #include "kspace.h" #include "modify.h" #include "suffix.h" +#include "math_const.h" using namespace LAMMPS_NS; +using namespace MathConst; #ifdef __INTEL_OFFLOAD #pragma offload_attribute(push, target(mic)) @@ -637,8 +639,6 @@ namespace overloaded { compared to original code. ---------------------------------------------------------------------- */ -#define M_PI 3.14159265358979323846 /* pi */ - #define CARBON 0 #define HYDROGEN 1 #define TOL 1.0e-9 @@ -662,8 +662,8 @@ inline flt_t Sp(flt_t r, flt_t lo, flt_t hi, flt_t * del) { if (del) *del = 0; return 0; } else { - t *= static_cast(M_PI); - if (del) *del = static_cast(-0.5 * M_PI) + t *= static_cast(MY_PI); + if (del) *del = static_cast(-0.5 * MY_PI) * overloaded::sin(t) / (hi - lo); return static_cast(0.5) * (1 + overloaded::cos(t)); } @@ -2248,7 +2248,7 @@ static fvec aut_Sp_deriv(fvec r, fvec lo, fvec hi, fvec * d) { fvec c_1 = fvec::set1(1); fvec c_0_5 = fvec::set1(0.5); fvec c_m0_5 = fvec::set1(-0.5); - fvec c_PI = fvec::set1(M_PI); + fvec c_PI = fvec::set1(MY_PI); bvec m_lo = fvec::cmple(r, lo); bvec m_hi = fvec::cmpnlt(r, hi); // nlt == ge bvec m_tr = bvec::kandn(m_lo, ~ m_hi); @@ -2273,7 +2273,7 @@ static fvec aut_Sp_deriv(fvec r, fvec lo, fvec hi, fvec * d) { static fvec aut_mask_Sp(bvec mask, fvec r, fvec lo, fvec hi) { fvec c_1 = fvec::set1(1); fvec c_0_5 = fvec::set1(0.5); - fvec c_PI = fvec::set1(M_PI); + fvec c_PI = fvec::set1(MY_PI); bvec m_lo = fvec::mask_cmple(mask, r, lo); bvec m_hi = fvec::mask_cmpnlt(mask, r, hi); // nlt == ge bvec m_tr = bvec::kandn(m_lo, bvec::kandn(m_hi, mask)); diff --git a/src/USER-MISC/fix_pimd.cpp b/src/USER-MISC/fix_pimd.cpp index 73e1ff434c..c73f802362 100644 --- a/src/USER-MISC/fix_pimd.cpp +++ b/src/USER-MISC/fix_pimd.cpp @@ -32,11 +32,13 @@ #include "atom.h" #include "domain.h" #include "update.h" +#include "math_const.h" #include "memory.h" #include "error.h" using namespace LAMMPS_NS; using namespace FixConst; +using namespace MathConst; enum{PIMD,NMPIMD,CMD}; @@ -165,7 +167,7 @@ void FixPIMD::init() const double Boltzmann = 1.3806488E-23; // SI unit: J/K const double Plank = 6.6260755E-34; // SI unit: m^2 kg / s - double hbar = Plank / ( 2.0 * M_PI ) * sp; + double hbar = Plank / ( 2.0 * MY_PI ) * sp; double beta = 1.0 / ( Boltzmann * input.nh_temp); // - P / ( beta^2 * hbar^2) SI unit: s^-2 @@ -181,7 +183,7 @@ void FixPIMD::init() const double Boltzmann = force->boltz; const double Plank = force->hplanck; - double hbar = Plank / ( 2.0 * M_PI ); + double hbar = Plank / ( 2.0 * MY_PI ); double beta = 1.0 / (Boltzmann * nhc_temp); double _fbond = 1.0 * np / (beta*beta*hbar*hbar) ; @@ -429,7 +431,7 @@ void FixPIMD::nmpimd_init() for(int i=2; i<=np/2; i++) { - lam[2*i-3] = lam[2*i-2] = 2.0 * np * (1.0 - 1.0 *cos(2.0*M_PI*(i-1)/np)); + lam[2*i-3] = lam[2*i-2] = 2.0 * np * (1.0 - 1.0 *cos(2.0*MY_PI*(i-1)/np)); } // Set up eigenvectors for non-degenerated modes @@ -444,8 +446,8 @@ void FixPIMD::nmpimd_init() for(int i=0; i<(np-1)/2; i++) for(int j=0; jinumeric(FLERR,inArgv[4]); n[2] = force->inumeric(FLERR,inArgv[5]); - mK[0] = n[0]*(2*M_PI / (domain->boxhi[0] - domain->boxlo[0])); - mK[1] = n[1]*(2*M_PI / (domain->boxhi[1] - domain->boxlo[1])); - mK[2] = n[2]*(2*M_PI / (domain->boxhi[2] - domain->boxlo[2])); + mK[0] = n[0]*(2*MY_PI / (domain->boxhi[0] - domain->boxlo[0])); + mK[1] = n[1]*(2*MY_PI / (domain->boxhi[1] - domain->boxlo[1])); + mK[2] = n[2]*(2*MY_PI / (domain->boxhi[2] - domain->boxlo[2])); mKappa = force->numeric(FLERR,inArgv[6]); mRhoK0 = force->numeric(FLERR,inArgv[7]); diff --git a/src/USER-QTB/fix_qbmsst.cpp b/src/USER-QTB/fix_qbmsst.cpp index abbf1701b8..72d7f87d46 100644 --- a/src/USER-QTB/fix_qbmsst.cpp +++ b/src/USER-QTB/fix_qbmsst.cpp @@ -32,10 +32,12 @@ #include "memory.h" #include "error.h" #include "kspace.h" +#include "math_const.h" #include "utils.h" using namespace LAMMPS_NS; using namespace FixConst; +using namespace MathConst; /* ---------------------------------------------------------------------- read parameters @@ -538,7 +540,7 @@ void FixQBMSST::initial_integrate(int /*vflag*/) } else { double energy_k= force->hplanck * fabs(f_k); omega_H[k]=sqrt( energy_k * (0.5+1.0/( exp(energy_k/(force->boltz * t_current)) - 1.0 )) ); - omega_H[k]*=alpha*sin((k-N_f)*M_PI/(2*alpha*N_f))/sin((k-N_f)*M_PI/(2*N_f)); + omega_H[k]*=alpha*sin((k-N_f)*MY_PI/(2*alpha*N_f))/sin((k-N_f)*MY_PI/(2*N_f)); } } @@ -547,7 +549,7 @@ void FixQBMSST::initial_integrate(int /*vflag*/) time_H[n] = 0; double t_n=(n-N_f); for (int k = 0; k < 2*N_f; k++) { - double omega_k=(k-N_f)*M_PI/N_f; + double omega_k=(k-N_f)*MY_PI/N_f; time_H[n] += omega_H[k]*(cos(omega_k*t_n)); } time_H[n]/=(2.0*N_f); diff --git a/src/USER-QTB/fix_qtb.cpp b/src/USER-QTB/fix_qtb.cpp index 593ca31006..fa15385859 100644 --- a/src/USER-QTB/fix_qtb.cpp +++ b/src/USER-QTB/fix_qtb.cpp @@ -29,11 +29,13 @@ #include "respa.h" #include "comm.h" #include "random_mars.h" +#include "math_const.h" #include "memory.h" #include "error.h" using namespace LAMMPS_NS; using namespace FixConst; +using namespace MathConst; /* ---------------------------------------------------------------------- read parameters @@ -195,7 +197,7 @@ void FixQTB::init() } else { double energy_k= force->hplanck * fabs(f_k); omega_H[k]=sqrt( energy_k * (0.5+1.0/( exp(energy_k/(force->boltz * t_target)) - 1.0 )) ); - omega_H[k]*=alpha*sin((k-N_f)*M_PI/(2*alpha*N_f))/sin((k-N_f)*M_PI/(2*N_f)); + omega_H[k]*=alpha*sin((k-N_f)*MY_PI/(2*alpha*N_f))/sin((k-N_f)*MY_PI/(2*N_f)); } } @@ -204,7 +206,7 @@ void FixQTB::init() time_H[n] = 0; double t_n=(n-N_f); for (int k = 0; k < 2*N_f; k++) { - double omega_k=(k-N_f)*M_PI/N_f; + double omega_k=(k-N_f)*MY_PI/N_f; time_H[n] += omega_H[k]*(cos(omega_k*t_n)); } time_H[n]/=(2.0*N_f); -- GitLab From 11b069ffe734d024a63485e4b8d58c6a44e1f3c6 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 13 Apr 2020 13:38:38 -0400 Subject: [PATCH 283/717] use utils::strmatch() in USER-DPD and KOKKOS for safer style matches --- src/KOKKOS/fix_rx_kokkos.cpp | 3 ++- src/KOKKOS/pair_table_rx_kokkos.cpp | 3 ++- src/USER-DPD/fix_eos_table_rx.cpp | 2 +- src/USER-DPD/fix_rx.cpp | 3 ++- src/USER-DPD/fix_shardlow.cpp | 10 ++++++---- src/USER-DPD/pair_dpd_fdt.cpp | 2 +- src/USER-DPD/pair_dpd_fdt_energy.cpp | 6 +++--- src/USER-DPD/pair_exp6_rx.cpp | 2 +- src/USER-DPD/pair_multi_lucy_rx.cpp | 2 +- src/USER-DPD/pair_table_rx.cpp | 5 +++-- 10 files changed, 22 insertions(+), 16 deletions(-) diff --git a/src/KOKKOS/fix_rx_kokkos.cpp b/src/KOKKOS/fix_rx_kokkos.cpp index 9271cf1b88..2ec3e3a77c 100644 --- a/src/KOKKOS/fix_rx_kokkos.cpp +++ b/src/KOKKOS/fix_rx_kokkos.cpp @@ -27,6 +27,7 @@ #include "comm.h" #include "domain.h" #include "kokkos.h" +#include "utils.h" #include // DBL_EPSILON @@ -128,7 +129,7 @@ void FixRxKokkos::init() bool eos_flag = false; for (int i = 0; i < modify->nfix; i++) - if (strncmp(modify->fix[i]->style,"eos/table/rx",3) == 0) eos_flag = true; + if (utils::strmatch(modify->fix[i]->style,"^eos/table/rx")) eos_flag = true; if(!eos_flag) error->all(FLERR,"fix rx requires fix eos/table/rx to be specified"); if (update_kinetics_data) diff --git a/src/KOKKOS/pair_table_rx_kokkos.cpp b/src/KOKKOS/pair_table_rx_kokkos.cpp index d65ea8bf1f..d78a5ee646 100644 --- a/src/KOKKOS/pair_table_rx_kokkos.cpp +++ b/src/KOKKOS/pair_table_rx_kokkos.cpp @@ -33,6 +33,7 @@ #include "kokkos_few.h" #include "kokkos.h" #include "modify.h" +#include "utils.h" #include using namespace LAMMPS_NS; @@ -1022,7 +1023,7 @@ void PairTableRXKokkos::coeff(int narg, char **arg) bool rx_flag = false; for (int i = 0; i < modify->nfix; i++) - if (strncmp(modify->fix[i]->style,"rx",2) == 0) rx_flag = true; + if (utils::strmatch(modify->fix[i]->style,"^rx")) rx_flag = true; if (!rx_flag) error->all(FLERR,"PairTableRX requires a fix rx command."); int ilo,ihi,jlo,jhi; diff --git a/src/USER-DPD/fix_eos_table_rx.cpp b/src/USER-DPD/fix_eos_table_rx.cpp index 152b58dbb7..3fe2f479bf 100644 --- a/src/USER-DPD/fix_eos_table_rx.cpp +++ b/src/USER-DPD/fix_eos_table_rx.cpp @@ -51,7 +51,7 @@ FixEOStableRX::FixEOStableRX(LAMMPS *lmp, int narg, char **arg) : rx_flag = false; nspecies = 1; for (int i = 0; i < modify->nfix; i++) - if (strncmp(modify->fix[i]->style,"rx",2) == 0){ + if (utils::strmatch(modify->fix[i]->style,"^rx")) { rx_flag = true; nspecies = atom->nspecies_dpd; if(nspecies==0) error->all(FLERR,"There are no rx species specified."); diff --git a/src/USER-DPD/fix_rx.cpp b/src/USER-DPD/fix_rx.cpp index 03e8ae49a4..46fb17cbfd 100644 --- a/src/USER-DPD/fix_rx.cpp +++ b/src/USER-DPD/fix_rx.cpp @@ -31,6 +31,7 @@ #include "neigh_request.h" #include "math_special.h" #include "pair_dpd_fdt_energy.h" +#include "utils.h" #include // std::vector<> #include // std::max @@ -256,7 +257,7 @@ void FixRX::post_constructor() bool match; for (int i = 0; i < modify->nfix; i++) - if (strncmp(modify->fix[i]->style,"property/atom",13) == 0) + if (utils::strmatch(modify->fix[i]->style,"^property/atom") == 0) error->all(FLERR,"fix rx cannot be combined with fix property/atom"); char **tmpspecies = new char*[maxspecies]; diff --git a/src/USER-DPD/fix_shardlow.cpp b/src/USER-DPD/fix_shardlow.cpp index b0efeb634d..18c86976ac 100644 --- a/src/USER-DPD/fix_shardlow.cpp +++ b/src/USER-DPD/fix_shardlow.cpp @@ -54,6 +54,7 @@ #include "pair_dpd_fdt_energy.h" #include "npair_half_bin_newton_ssa.h" #include "citeme.h" +#include "utils.h" using namespace LAMMPS_NS; using namespace FixConst; @@ -155,12 +156,13 @@ void FixShardlow::setup(int /*vflag*/) bool fixShardlow = false; for (int i = 0; i < modify->nfix; i++) - if (strncmp(modify->fix[i]->style,"nvt",3) == 0 || strncmp(modify->fix[i]->style,"npt",3) == 0) - error->all(FLERR,"Cannot use constant temperature integration routines with DPD."); + if (strstr(modify->fix[i]->style,"nvt") || strstr(modify->fix[i]->style,"npt") || + strstr(modify->fix[i]->style,"gle") || strstr(modify->fix[i]->style,"gld")) + error->all(FLERR,"Cannot use constant temperature integration routines with USER-DPD."); for (int i = 0; i < modify->nfix; i++){ - if (strncmp(modify->fix[i]->style,"shardlow",3) == 0) fixShardlow = true; - if (strncmp(modify->fix[i]->style,"nve",3) == 0 || (strncmp(modify->fix[i]->style,"nph",3) == 0)){ + if (utils::strmatch(modify->fix[i]->style,"^shardlow")) fixShardlow = true; + if (utils::strmatch(modify->fix[i]->style,"^nve") || utils::strmatch(modify->fix[i]->style,"^nph")){ if(fixShardlow) break; else error->all(FLERR,"The deterministic integrator must follow fix shardlow in the input file."); } diff --git a/src/USER-DPD/pair_dpd_fdt.cpp b/src/USER-DPD/pair_dpd_fdt.cpp index 5b62972d1b..14bbe0b784 100644 --- a/src/USER-DPD/pair_dpd_fdt.cpp +++ b/src/USER-DPD/pair_dpd_fdt.cpp @@ -316,7 +316,7 @@ void PairDPDfdt::init_style() splitFDT_flag = false; neighbor->request(this,instance_me); for (int i = 0; i < modify->nfix; i++) - if (strncmp(modify->fix[i]->style,"shardlow", 8) == 0){ + if (utils::strmatch(modify->fix[i]->style,"^shardlow")) { splitFDT_flag = true; } diff --git a/src/USER-DPD/pair_dpd_fdt_energy.cpp b/src/USER-DPD/pair_dpd_fdt_energy.cpp index 5ea8d2e9e1..455af2f481 100644 --- a/src/USER-DPD/pair_dpd_fdt_energy.cpp +++ b/src/USER-DPD/pair_dpd_fdt_energy.cpp @@ -409,7 +409,7 @@ void PairDPDfdtEnergy::init_style() splitFDT_flag = false; neighbor->request(this,instance_me); for (int i = 0; i < modify->nfix; i++) - if (strncmp(modify->fix[i]->style,"shardlow", 8) == 0){ + if (utils::strmatch(modify->fix[i]->style,"^shardlow")) { splitFDT_flag = true; } @@ -420,8 +420,8 @@ void PairDPDfdtEnergy::init_style() bool eos_flag = false; for (int i = 0; i < modify->nfix; i++) - if (strncmp(modify->fix[i]->style,"eos",3) == 0) eos_flag = true; - if(!eos_flag) error->all(FLERR,"pair_style dpd/fdt/energy requires an EOS to be specified"); + if (utils::strmatch(modify->fix[i]->style,"^eos")) eos_flag = true; + if(!eos_flag) error->all(FLERR,"pair_style dpd/fdt/energy requires an EOS fix to be specified"); } /* ---------------------------------------------------------------------- diff --git a/src/USER-DPD/pair_exp6_rx.cpp b/src/USER-DPD/pair_exp6_rx.cpp index 5e23113feb..4aee497b64 100644 --- a/src/USER-DPD/pair_exp6_rx.cpp +++ b/src/USER-DPD/pair_exp6_rx.cpp @@ -582,7 +582,7 @@ void PairExp6rx::coeff(int narg, char **arg) bool rx_flag = false; for (int i = 0; i < modify->nfix; i++) - if (strncmp(modify->fix[i]->style,"rx",2) == 0) rx_flag = true; + if (utils::strmatch(modify->fix[i]->style,"^rx")) rx_flag = true; if (!rx_flag) error->all(FLERR,"PairExp6rx requires a fix rx command."); if (!allocated) allocate(); diff --git a/src/USER-DPD/pair_multi_lucy_rx.cpp b/src/USER-DPD/pair_multi_lucy_rx.cpp index 36ca7e0321..79df11a038 100644 --- a/src/USER-DPD/pair_multi_lucy_rx.cpp +++ b/src/USER-DPD/pair_multi_lucy_rx.cpp @@ -368,7 +368,7 @@ void PairMultiLucyRX::coeff(int narg, char **arg) bool rx_flag = false; for (int i = 0; i < modify->nfix; i++) - if (strncmp(modify->fix[i]->style,"rx",2) == 0) rx_flag = true; + if (utils::strmatch(modify->fix[i]->style,"^rx")) rx_flag = true; if (!rx_flag) error->all(FLERR,"PairMultiLucyRX requires a fix rx command."); if (!allocated) allocate(); diff --git a/src/USER-DPD/pair_table_rx.cpp b/src/USER-DPD/pair_table_rx.cpp index e767f93367..cf64c17c5e 100644 --- a/src/USER-DPD/pair_table_rx.cpp +++ b/src/USER-DPD/pair_table_rx.cpp @@ -26,6 +26,7 @@ #include "error.h" #include "modify.h" #include "fix.h" +#include "utils.h" using namespace LAMMPS_NS; @@ -303,8 +304,8 @@ void PairTableRX::coeff(int narg, char **arg) bool rx_flag = false; for (int i = 0; i < modify->nfix; i++) - if (strncmp(modify->fix[i]->style,"rx",2) == 0) rx_flag = true; - if (!rx_flag) error->all(FLERR,"PairTableRX requires a fix rx command."); + if (utils::strmatch(modify->fix[i]->style,"^rx")) rx_flag = true; + if (!rx_flag) error->all(FLERR,"Pair style table/rx requires a fix rx command."); int ilo,ihi,jlo,jhi; force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi); -- GitLab From e9fdc5e84b8d30738d1c529c3f9d40e1131a43fd Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 13 Apr 2020 14:34:23 -0400 Subject: [PATCH 284/717] rework the debug info section to be more readable and make the options more visible --- doc/src/Build_basics.rst | 31 ++++++++++++++++++++----------- 1 file changed, 20 insertions(+), 11 deletions(-) diff --git a/doc/src/Build_basics.rst b/doc/src/Build_basics.rst index 62eb902d61..7bb167a3df 100644 --- a/doc/src/Build_basics.rst +++ b/doc/src/Build_basics.rst @@ -7,7 +7,7 @@ CMake and make: * :ref:`Serial vs parallel build ` * :ref:`Choice of compiler and compile/link options ` * :ref:`Build the LAMMPS executable and library ` -* :ref:`Debug support ` +* :ref:`Including and removing debug support ` * :ref:`Build the LAMMPS documentation ` * :ref:`Install LAMMPS after a build ` @@ -418,21 +418,30 @@ recommended to ensure the integrity of the system software installation. .. _debug: -Debug support -------------- +Excluding or removing debug support +----------------------------------- By default the compilation settings will include the *-g* flag which instructs the compiler to include debug information (e.g. which line of -source code particular instructions correspond to). This can be +source code a particular instruction correspond to). This can be extremely useful in case LAMMPS crashes and can help to provide crucial information in :doc:`tracking down the origin of a crash ` -and possibly help fix a bug in the source code. However, this increases -the storage requirements for object files, libraries, and the executable -3-5 fold. If this is a concern, you can change the compilation settings -(either by editing the machine makefile or setting the compiler flags or -build time when using CMake). If you are only concerned about the -executable being too large, you can use the ``strip`` tool (e.g. ``strip -lmp_serial``) to remove the debug information from the file. +and help the LAMMPS developers fix bugs in the source code. However, +this increases the storage requirements for object files, libraries, and +the executable 3-5 fold. + +If this is a concern, you can change the compilation settings or remove +the debug information from the LAMMPS executable: + +- **Traditional make**: edit your ``Makefile.`` to remove the + *-g* flag from the ``CCFLAGS`` and ``LINKFLAGS`` definitions +- **CMake**: use ``-D CMAKE_BUILD_TYPE=Release`` or explicitly reset + the applicable compiler flags (best done using the text mode or + graphical user interface). +- **Remove debug info**: If you are only concerned about the executable + being too large, you can use the ``strip`` tool (e.g. ``strip + lmp_serial``) to remove the debug information from the executable file. + Do not strip libraries or object files, as that will render them unusable. ---------- -- GitLab From 6e4d5fd020200c0167a9660e2e7594459c3f94d5 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 13 Apr 2020 14:34:39 -0400 Subject: [PATCH 285/717] address spelling and other minor issues --- doc/src/Howto_cmake.rst | 20 +++++++------------- doc/utils/sphinx-config/false_positives.txt | 1 + 2 files changed, 8 insertions(+), 13 deletions(-) diff --git a/doc/src/Howto_cmake.rst b/doc/src/Howto_cmake.rst index adeaf35114..5c8a543bb8 100644 --- a/doc/src/Howto_cmake.rst +++ b/doc/src/Howto_cmake.rst @@ -10,7 +10,7 @@ different platforms. Note, that this applies to the build system itself not the LAMMPS code. In other words, without additional porting effort, it is not possible - for example - to compile LAMMPS with Visual C++ on Windows. The build system output can also include support files -necessary to programm LAMMPS as a project in integrated development +necessary to program LAMMPS as a project in integrated development environments (IDE) like Eclipse, Visual Studio, QtCreator, Xcode, CodeBlocks, Kate and others. @@ -21,17 +21,11 @@ without requiring to provide the details about how to enable/integrate them. The downside of this approach is, that there is some complexity -associated with running CMake itself and how to achieve desired -customizations and modifications to the LAMMPS configuration and -compilation. And for as long as this facility is relatively new and -not as widely used as the traditional build process, there are chances -that the scripts that CMake processes may have bugs or are missing -options, despite the best efforts to test and verify its functionality. - -This tutorial will show how to manage this through some selected -examples. Please see the chapter about :doc:`building LAMMPS ` -for descriptions of specific flags and options for LAMMPS in general and -for specific packages. +associated with running CMake itself and how to customize the building +of LAMMPS. This tutorial will show how to manage this through some +selected examples. Please see the chapter about :doc:`building LAMMPS +` for descriptions of specific flags and options for LAMMPS in +general and for specific packages. CMake can be used through either the command-line interface (CLI) program ``cmake`` (or ``cmake3``), a text mode interactive user @@ -185,7 +179,7 @@ selected built tool, e.g. ``make``. TUI version ^^^^^^^^^^^ -For the text mode UI CMake program the basical principle is the same. +For the text mode UI CMake program the basic principle is the same. You start the command ``ccmake ../cmake`` in the ``build`` folder. .. list-table:: diff --git a/doc/utils/sphinx-config/false_positives.txt b/doc/utils/sphinx-config/false_positives.txt index 167c72c6c2..c19349f3e6 100644 --- a/doc/utils/sphinx-config/false_positives.txt +++ b/doc/utils/sphinx-config/false_positives.txt @@ -492,6 +492,7 @@ cstdlib cstring cstyle csvr +ctrl Ctypes ctypes cuda -- GitLab From 8962da19ca678946471cc5bb8f274df8b1ee23ca Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 13 Apr 2020 19:34:46 -0400 Subject: [PATCH 286/717] complete cmake howto --- doc/src/Howto_cmake.rst | 295 ++++++++++++++++++------------- doc/src/JPG/cmake-codeblocks.png | Bin 0 -> 132288 bytes 2 files changed, 170 insertions(+), 125 deletions(-) create mode 100644 doc/src/JPG/cmake-codeblocks.png diff --git a/doc/src/Howto_cmake.rst b/doc/src/Howto_cmake.rst index 5c8a543bb8..127b550c5a 100644 --- a/doc/src/Howto_cmake.rst +++ b/doc/src/Howto_cmake.rst @@ -35,6 +35,9 @@ software available on all supported platforms and can be used interchangeably. The minimum supported CMake version is 3.10 (3.12 or later is recommended). +All details about features and settings for CMake are in the `CMake +online documentation `_. We focus +below on the most important aspects with respect to compiling LAMMPS. Prerequisites ------------- @@ -81,9 +84,12 @@ This can be achieved with ``make no-all purge``. You can pick **any** folder outside the source tree. We recommend to create a folder ``build`` in the top-level directory, or multiple -folders in case you want to compile LAMMPS in different configurations -(``build-parallel``, ``build-serial``) or with different compilers -(``build-gnu``, ``build-clang``, ``build-intel``) and so on. +folders in case you want to have separate builds of LAMMPS with +different options (``build-parallel``, ``build-serial``) or with +different compilers (``build-gnu``, ``build-clang``, ``build-intel``) +and so on. All the auxiliary files created by one build process +(executable, object files, log files, etc) are stored in this directory +or sub-directories within it that CMake creates. Running CMake @@ -249,8 +255,8 @@ not required, it can also be entered from the GUI. Again, you start with an empty configuration cache (left image) and need to start the configuration step. For the very first configuration in a -folder, you will have a popup dialog (center image) asking to select the -desired build tool and some configuration settings (stick with the +folder, you will have a pop-up dialog (center image) asking to select +the desired build tool and some configuration settings (stick with the default) and then you get the option screen with all new settings highlighted in red. You can modify them (or not) and click on the "configure" button again until satisfied and click on the "generate" @@ -261,146 +267,185 @@ button to write out the build files. You can exit the GUI from the Setting options --------------- +Options that enable, disable or modify settings are modified by setting +the value of CMake variables. This is done on the command line with the +*-D* flag in the format ``-D VARIABLE=value``, e.g. ``-D +CMAKE_BUILD_TYPE=Release`` or ``-D BUILD_MPI=on``. There is one quirk: +when used before the CMake directory, there may be a space between the +*-D* flag and the variable, after it must not be. Such CMake variables +can have boolean values (on/off, yes/no, or 1/0 are all valid) or are +strings representing a choice, or a path, or are free format. If the +string would contain whitespace, it must be put in quotes, for example +``-D CMAKE_TUNE_FLAGS="-ftree-vectorize -ffast-math"``. + +CMake variables fall into two categories: 1) common CMake variables that +are used by default for any CMake configuration setup and 2) project +specific variables, i.e. settings that are specific for LAMMPS. +Also CMake variables can be flagged as *advanced*, which means they are +not shown in the text mode or graphical CMake program in the overview +of all settings by default, but only when explicitly requested (by hitting +the 't' key or clicking on the 'Advanced' check-box). + +Some common CMake variables +^^^^^^^^^^^^^^^^^^^^^^^^^^^ +.. list-table:: + :header-rows: 1 + + * - Variable + - Description + * - ``CMAKE_INSTALL_PREFIX`` + - root directory of install location for ``make install`` (default: ``$HOME/.local``) + * - ``CMAKE_BUILD_TYPE`` + - controls compilation options: + one of ``RelWithDebInfo`` (default), ``Release``, ``Debug``, ``MinSizeRel`` + * - ``BUILD_SHARED_LIBS`` + - if set to ``on`` build the LAMMPS library as shared library (default: ``off``) + * - ``CMAKE_MAKE_PROGRAM`` + - name/path of the compilation command (default depends on *-G* option, usually ``make``) + * - ``CMAKE_VERBOSE_MAKEFILE`` + - if set to ``on`` echo commands while executing during build (default: ``off``) + * - ``CMAKE_C_COMPILER`` + - C compiler to be used for compilation (default: system specific, ``gcc`` on Linux) + * - ``CMAKE_CXX_COMPILER`` + - C++ compiler to be used for compilation (default: system specific, ``g++`` on Linux) + * - ``CMAKE_Fortran_COMPILER`` + - Fortran compiler to be used for compilation (default: system specific, ``gfortran`` on Linux) + * - ``CXX_COMPILER_LAUNCHER`` + - tool to launch the C++ compiler, e.g. ``ccache`` or ``distcc`` for faster compilation (default: empty) + +Some common LAMMPS specific variables +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. list-table:: + :header-rows: 1 + + * - Variable + - Description + * - ``BUILD_MPI`` + - build LAMMPS with MPI support (default: ``on`` if a working MPI available, else ``off``) + * - ``BUILD_OMP`` + - build LAMMPS with OpenMP support (default: ``on`` if compiler supports OpenMP fully, else ``off``) + * - ``BUILD_TOOLS`` + - compile some additional executables from the ``tools`` folder (default: ``off``) + * - ``BUILD_DOC`` + - include building the documentation (default: ``off``) + * - ``CMAKE_TUNE_FLAGS`` + - common compiler flags, for optimization or instrumentation (default: compiler specific) + * - ``LAMMPS_MACHINE`` + - when set to ``name`` the LAMMPS executable and library will be called ``lmp_name`` and ``liblammps_name.a`` + * - ``LAMMPS_EXCEPTIONS`` + - when set to ``on`` errors will throw a C++ exception instead of aborting (default: ``off``) + * - ``FFT`` + - select which FFT library to use: ``FFTW3``, ``MKL``, ``KISS`` (default, unless FFTW3 is found) + * - ``FFT_SINGLE`` + - select whether to use single precision FFTs (default: ``off``) + * - ``WITH_JPEG`` + - whether to support JPEG format in :doc:`dump image ` (default: ``on`` if found) + * - ``WITH_PNG`` + - whether to support PNG format in :doc:`dump image ` (default: ``on`` if found) + * - ``WITH_GZIP`` + - whether to support reading and writing compressed files (default: ``on`` if found) + * - ``WITH_FFMPEG`` + - whether to support generating movies with :doc:`dump movie ` (default: ``on`` if found) + +Enabling or disabling LAMMPS packages +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +The LAMMPS software is organized into a common core that is always +included and a large number of :doc:`add-on packages ` that +have to be enabled to be included into a LAMMPS executable. Packages +are enabled through setting variables of the kind ``PKG_`` to +``on`` and disabled by setting them to ``off`` (or using ``yes``, +``no``, ``1``, ``0`` correspondingly). ```` has to be replaced by +the name of the package, e.g. ``MOLECULE`` or ``USER-MISC``. Using presets ------------- -Since LAMMPS has a lot of optional features specifying them all -on the command line, or - when selecting a different compiler toolchain - -multiple options have to be changed - - -Choosing generators -------------------- - - -After the initial build, if you edit LAMMPS source files, or add your -own new files to the source directory, you can just re-type make from -your build directory and it will re-compile only the files that have -changed. If you want to change CMake options you can run cmake (or -ccmake or cmake-gui) again from the same build directory and alter -various options; see details below. Or you can remove the entire build -folder, recreate the directory and start over. - -. Further details about features and settings for CMake -are in the `CMake online documentation `_ -For the rest of this manual we will assume that the build environment -is generated for "Unix Makefiles" and thus the ``cmake --build .`` will -call the ``make`` command or you can use it directly. - - - -There are 3 variants of the CMake command itself: a command-line version -(``cmake`` or ``cmake3``), a text mode UI version (``ccmake`` or ``ccmake3``), -and a graphical GUI version (``cmake-gui``). You can use any of them -interchangeably to configure and create the LAMMPS build environment. -On Linux all the versions produce a Makefile as their output by default. -See more details on each below. - -You can specify a variety of options with any of the 3 versions, which -affect how the build is performed and what is included in the LAMMPS -executable. Links to pages explaining all the options are listed on -the :doc:`Build ` doc page. - -You must perform the CMake build system generation and compilation in -a new directory you create. It can be anywhere on your local machine. -In these Build pages we assume that you are building in a directory -called ``lammps/build``. You can perform separate builds independently -with different options, so long as you perform each of them in a -separate directory you create. All the auxiliary files created by one -build process (executable, object files, log files, etc) are stored in -this directory or sub-directories within it that CMake creates. - ----------- - -**Command-line version of CMake**\ : +Since LAMMPS has a lot of optional features and packages, specifying +them all on the command line can be tedious. Or when selecting a +different compiler toolchain, multiple options have to be changed +consistently and that is rather error prone. Or when enabling certain +packages, they require consistent settings to be operated in a +particular mode. For this purpose, we are providing a selection of +"preset files" for CMake in the folder ``cmake/presets``. They +represent a way to pre-load or override the CMake configuration cache by +setting or changing CMake variables. Preset files are loaded using the +*-C* command line flag. You can combine loading multiple preset files or +change some variables later with additional *-D* flags. A few examples: .. code-block:: bash - cmake [options ...] /path/to/lammps/cmake # build from any dir - cmake [options ...] ../cmake # build from lammps/build - cmake3 [options ...] ../cmake # build from lammps/build + cmake -C ../cmake/preset/minimal.cmake -D PKG_MISC=on ../cmake + cmake -C ../cmake/preset/clang.cmake -C ../cmake/preset/most.cmake ../cmake + cmake -C ../cmake/preset/minimal.cmake -D BUILD_MPI=off ../cmake -The cmake command takes one required argument, which is the LAMMPS -cmake directory which contains the CMakeLists.txt file. +The first command will install the packages ``KSPACE``, ``MANYBODY``, +``MOLECULE``, ``RIGID`` and ``MISC``; the first four from the preset +file and the fifth from the explicit variable definition. The second +command will first switch the compiler toolchain to use the Clang +compilers and install a large number of packages that are not depending +on any special external libraries or tools and are not very unusual. +The third command will enable the first four packages like above and +then enforce compiling LAMMPS as a serial program (using the MPI STUBS +library). -The argument can be prefixed or followed by various CMake -command-line options. Several useful ones are: +It is also possible to do this incrementally. .. code-block:: bash - -D CMAKE_INSTALL_PREFIX=path # where to install LAMMPS executable/lib if desired - -D CMAKE_BUILD_TYPE=type # type = RelWithDebInfo (default), Release, MinSizeRel, or Debug - -G output # style of output CMake generates (e.g. "Unix Makefiles" or "Ninja") - -D CMAKE_MAKE_PROGRAM=builder # name of the builder executable (e.g. when using "gmake" instead of "make") - -DVARIABLE=value # setting for a LAMMPS feature to enable - -D VARIABLE=value # ditto, but cannot come after CMakeLists.txt dir - -C path/to/preset/file # load some CMake settings before configuring - -All the LAMMPS-specific -D variables that a LAMMPS build supports are -described on the pages linked to from the :doc:`Build ` doc page. -All of these variable names are upper-case and their values are -lower-case, e.g. -D LAMMPS_SIZES=smallbig. For boolean values, any of -these forms can be used: yes/no, on/off, 1/0. - -On Unix/Linux machines, CMake generates a Makefile by default to -perform the LAMMPS build. Alternate forms of build info can be -generated via the -G switch, e.g. Visual Studio on a Windows machine, -Xcode on MacOS, or KDevelop on Linux. Type ``cmake --help`` to see the -"Generator" styles of output your system supports. - -.. note:: - - When CMake runs, it prints configuration info to the screen. - You should review this to verify all the features you requested were - enabled, including packages. You can also see what compilers and - compile options will be used for the build. Any errors in CMake - variable syntax will also be flagged, e.g. mis-typed variable names or - variable values. - -CMake creates a CMakeCache.txt file when it runs. This stores all the -settings, so that when running CMake again you can use the current -folder '.' instead of the path to the LAMMPS cmake folder as the -required argument to the CMake command. Either way the existing -settings will be inherited unless the CMakeCache.txt file is removed. - -If you later want to change a setting you can rerun cmake in the build -directory with different setting. Please note that some automatically -detected variables will not change their value when you rerun cmake. -In these cases it is usually better to first remove all the -files/directories in the build directory, or start with a fresh build -directory. - ----------- - -**Curses version (terminal-style menu) of CMake**\ : + cmake -C ../cmake/preset/minimal.cmake ../cmake + cmake -D PKG_MISC=on . -.. code-block:: bash +will achieve the same configuration like in the first example above. In +this scenario it is particularly convenient to do the second +configuration step using either the text mode or graphical user +interface (``ccmake`` or ``cmake-gui``). - ccmake ../cmake + +Choosing generators +------------------- -You initiate the configuration and build environment generation steps -separately. For the first you have to type **c**\ , for the second you -have to type **g**\ . You may need to type **c** multiple times, and may be -required to edit some of the entries of CMake configuration variables -in between. Please see the `ccmake manual `_ for -more information. +While CMake usually defaults to creating makefiles to compile software +with the ``make`` program, it supports multiple alternate build tools +(e.g. ``ninja-build`` which tends to be faster and more efficient in +parallelizing builds than ``make``) and can generate project files for +integrated development environments (IDEs) like VisualStudio, Eclipse or +CodeBlocks. This is specific to how the local CMake version was +configured and compiled. The list of available options can be seen at +the end of the output of ``cmake --help``. Example on Fedora 31 this is: ----------- +.. code-block:: -**GUI version of CMake**\ : + Generators + + The following generators are available on this platform (* marks default): + * Unix Makefiles = Generates standard UNIX makefiles. + Green Hills MULTI = Generates Green Hills MULTI files + (experimental, work-in-progress). + Ninja = Generates build.ninja files. + Ninja Multi-Config = Generates build-.ninja files. + Watcom WMake = Generates Watcom WMake makefiles. + CodeBlocks - Ninja = Generates CodeBlocks project files. + CodeBlocks - Unix Makefiles = Generates CodeBlocks project files. + CodeLite - Ninja = Generates CodeLite project files. + CodeLite - Unix Makefiles = Generates CodeLite project files. + Sublime Text 2 - Ninja = Generates Sublime Text 2 project files. + Sublime Text 2 - Unix Makefiles + = Generates Sublime Text 2 project files. + Kate - Ninja = Generates Kate project files. + Kate - Unix Makefiles = Generates Kate project files. + Eclipse CDT4 - Ninja = Generates Eclipse CDT 4.0 project files. + Eclipse CDT4 - Unix Makefiles= Generates Eclipse CDT 4.0 project files. + +Below is a screenshot of using the CodeBlocks IDE with the ninja build tool +after running CMake as follows: .. code-block:: bash - cmake-gui ../cmake - -You initiate the configuration and build environment generation steps -separately. For the first you have to click on the **Configure** button, -for the second you have to click on the **Generate** button. You may -need to click on **Configure** multiple times, and may be required to -edit some of the entries of CMake configuration variables in between. -Please see the `cmake-gui manual `_ -for more information. + cmake -G 'CodeBlocks - Ninja' ../cmake/presets/most.cmake ../cmake/ +.. image:: JPG/cmake-codeblocks.png + :align: center diff --git a/doc/src/JPG/cmake-codeblocks.png b/doc/src/JPG/cmake-codeblocks.png new file mode 100644 index 0000000000000000000000000000000000000000..d0d96fec8c5666fe3eb0721c426a435ea73c8167 GIT binary patch literal 132288 zcmeAS@N?(olHy`uVBq!ia0y~yVDV;PU^e4mVqjosTsUhl0|Ns~x}&cn1H;CC?mvmF z3=9k|C9V-A!TD(=<%vb93=v@pWvNBQnfZAN#(IVZiMm;(xk>qMnHAcuc^L}%X$nRL z1{Q`!hGq&HnRz9tMVYyZn%ZtYxrxQux;MhNFfb@Ec)B=-RNQ(qx4b6g=&uj+i_g7V zmS45$q}psZD^5?37aba0UV?A-Hh2BK<@$Hw_19bPWry!6TmLsoP(W12gV)oeS-|7{ z-aOm%XO;hN_->k=W47DV;lbSZUk}fnW0XEGecnvt^Jj|FEH@-&c^Un24Jq|FkYFIe z!`6H-!NAWTi78dRPSKlBPRghF+5g$o%tRUP)mA&turl(It(?RCB~b1YgGd9j1H-hm zOcZ42cuD4f=;fWl*S2S7t;o(=vHRb#*$fLd>^So1VTzyk?GMMY9}3P|Fd@L)ynOM+ zf;rt^Z}8u8Oy^!JqmN=vTIRHWr!V{Ke6~uomD&9N(!E=kBI2tr>uwhl5j)MmV4>$D zD=8ww#o^Zc@Q1j!Oha*vKTUHAZ)go#AD5y@QIYuE+iRKDYe7 z_T$PpSxMV9cedZz^K5hP|K@#i8TkiqNmVJ_-|%(%bZINDxLKJq?z?kbefhO0Z(EU@!MsV4OEsYr`~={Td(kDWjLyUf)uK7K5+Xyw2D=BX0%=JK}J=e<}M z<8bZD7YWJDt%g^YWozGwy6?-#&@j36?A%!rrxtGedca?OHJ@kf)pNCCjSe5YBjtpZ zdTv+r%1&L&`*m+^tZJaelA>N#!!E@z4&yy{$w&q@a+Z%e>c;X<>ntdM}6c%4^*;jU* z`aGxSIqQLksbR;D&z@!7sS?!bH7P}8WutsPC7g8m+sXD{~LG{1lL=4m&#Y&K8(_Rsxl(aM)M+5i7=HMTEs^5c7{`P=a8Ch2|W zH+r;8k=k+e)XEz_kWM=x6jd&FAVVCZao-RJuO@&ias8d3-t3#wwfW?8Uqocv%s_|V(PrZGgUg`h){qV#Wh2yGT zXRln&oH1MMjH&F6yPU>r{XCweeDdnIR~EZr;h?aM-Cs>sXu-FXlDiyV_qKmi(TV=_ zCDQR8vvcnD2?rKTIAD_ax=G*4=JDaVCBZ7UnFOsaiW#mcvzYh&!$;3~W?vt&)F=Ku z7jLutaZ1SjBe@M*o|d~l|C8@Kzt6N7T=ezvFUpX*uX|XAi~TxxlY%hIy>k=1)r@DT zEV?WdxM)$vo7c;YcAiVgdYAX^-9r~G#`Zlb+@C|O!*w#Rs!q4w)nFkZrTEhJ*3E#m z*I#OAq{uPKH5%?asAv>-yZFQOb9JYFrmeWTWc99?^bg!~%#OSJ9eKC-?%C3+wS7hJ zxbA2CKcOkdCFha7U&PFOUjDDW>$rBzG)q?4`2EDQZF-*AB0Xitlo(8YYLf zzj_c-Q}R{%dxgs0U#AZJG-6;_^5O!=+Zju*Z1O*0^LFLtrahJyu1>Z6{qNuWRa>sy z)>l^kc&K3M?k4e0jnZl5rq`uQs!p9uou_y&QFCA2JZ5YCS6jZa#^%Zjol4DfN|-Zs zw`+ik%Nv`Vo#Ic7-UrP85VG{rrcKVb%C3fPRe1i~{%eUnf8LRa3$>Ux{(5+O+ncd)gRkqBXt5z4ito(Rl9z)Os7xtxFlamts`^okS*HpZ`)U;->LbVmJ*yBNRwUpVvQ(Z`n`nYK;2 z5>|1%HArOc87@YfKc&2)`FXZmmabUp_+?i4#YgGqcuGF=>`rR@{eN3|MJChC?!%yZ z^Vr8v1u6_bZlAp#DgWpC?Dv*Co_>>FXB5BT)uhw=fBu>5xIHOCEliG2|8ZsAlSP;B z%k9|z<>UX!ie<{*6uvNQSwM^*=f)AH@`wxhu_&z^<-~-&i{`$!`t;G z{(kuSpCRGqPw}R`rh1oGG<&Pu{TU+owtow~#al{kir>$VW=(ET`?oN9`nj&KUlaaqTI9UGKDtIFW!3C;GyOWxhrQS? zTH1W(?k`T;r}k&}K5JXPoSUJ+!`CXdH1)0d{kOl?)lQo~|4O;a`=;u!`?ANopSu2E z=eH}PY(`X`#(DjkU!U(>I9h!D9Dn~5=~LgHtoy%fjd@h=ih^H{W^g>dc<1xGsM>rc z{b}NMpK#a#6`Y;k2A=6 zHZ$h!zl-v=*N@+Q#&}J!rRKpJ1>X*jEl0LZ^D~oO_4g9T+6%nB{hG64J{4@(ygYQ< zvuhlx>=_vqFPGZdSDpXt`~AU^f1g&}Dos83FKhq4uKRzNso2+5e(Ukj_ct-SdL{qP zmhX>encVMi;QRfn@7eP?*5A*uCO+J=@l(Rj?QfmER|*+^4g2#_diIuopI#a()$TcX zAt3Vi*K%w7{1bcunwh`zl1s|oJ(gn4tpB=kzP&Q{o-Nfm{bwdeZa0j3D*rev>cWjZ zIwoEWOZ%lobEkI*xF%f*`)`?*`Sx~1<;JatGW=gJY}0+2al zY78ASCmDQtkkQ{Ub5gk7r~n9tZ#CJ2}Pww(y^SZJYo6Vc%cAAn3K;{V$i@ zy7qi2ma+Z(NqJ7Q`}Au^m!4ePw$My5ghPliFXF|mlPjE;`p(ppz02`7DMOt3iseBW z1_{1txrQp$t<`~C2eeuLuk>1Q?3g{%Cja{HMO)XqUY!@%$+`X5>dF5;-*w(<8TYGp zqxZSmXLA@>*%>x1c{!6mDl<6iuBb`v!Rm0AAG~*@=gui9uZeilEj|DJtoOOnm)u@{ zP%!t(eSAElIDBgLudbI`atudTvB@qk*uK`z#N-{9)ZQ)kRL*bgWn_@Lb$-{&J+~j- zb-4ZI*8c5(*Q#t8WwB@&-$oXujmMOb$OG?=kyneMhY`tvRhCd0M3^RNd)u!idnafrZ8?w~v z+k=3ty00J4zP}p$|HFpO=REo!)iUZB))@JAeE9l3JvTE;u=a`FME_WUhvykH*Vlae zYQKN&;)k3cwHG@-DcZa5bo#jv|Hlt+)hKdgHeY?w_t>PnuKM@eFVi&`81%WXEV2K7 z;!IBehNY2DR@=-qh%mXe{pDKuf0Y_9CaR0+etf#e_T+o{+K(CYzRSKox6{DIW6m&yRrlg@ulwc;ml-MNNqhf`eyR9PHOK6~J~(m8v7gOE&K%dScDR&jN! zAE?}YeBQ&vzgycJ+3Oq?Z5R@wi`V-t{IqG`T$7B_gRjHdeitoRue0Ov(!Z)jXZL=e zQ(8CUx}>=8>53f&@#}Vd>tSGJZ#&g=JMK>X1?6`ee~asFZ1I}e({^F&>ML~$vbTPH zuDyR{>xt%dJ1SqwuH2`6e*UNX>8o%5y?D!2L8wc_^0u<`rjv{3-zqpA%xoGtfA{OD zlO!sq_~dL~Wq0fDdhWU_j+v>+HznTNy?&(HpITjf>>Gdl-=BZ)3B-vSZTlJ}dBLFH zd&^$7YOTAMm(6{7nsL^*KXEtT*q@JfGCK8V(&IG@yT6+1dWW6&6Jt2~E&ucNsel{JI+cVCc;@-T3 zmH*AF?1c-S)ux^C&Cq+jW<~zrPmAYgUf`J-kRv&J+qAu#Sbrr=`}u;qw{D{G9t(#} z`H$zvm!wu7*|GhL$(~8CUq8F*_oL&cV#J@|yTd(qz&$E@p%U+&xN>=%6EvM|$*vt_LIca1$JXheNkoO|>|MD|46 zKQs_T_C{t|{UmviZQPj@eDO-m6$Bn%L#VU0A38<=~#& zr-d6|URxTc-xakC(6apQ!2a-CTOxo-0;|5AQ#lu>a<~ccLmcUQ{M{od}F= zaC~z`Z?DVa!;Ej&{!_c}F1AoXr2V@n^H(R?E8H2rS1T>W^=ox*ce@{ccfP)My}h^G zsoq=vH<);DhM+Gg?}c?eFL{(ZOj0>sKDX?ekPA!0*YEef{or1&_~?&ocln=9SKl4o zqi}*HPCwbmx_sjPh&)lw-e#*!Z zBIH}7U+&Mx(94@E^!%acMD~7-ne1M%s*aM&eH*`pd$WEJ$msw2rgr(l<8NQ8``bsK z?2UN%$ij>5`1d8d_s72LjaeS(!muFrZ?2K51G_1IzeQjB!o=yu;`~qVtbRMCTKPR^ zl6SkHf>IKaAkidlxmLZ{<&~D?NYd=$5<9>{|BPNG|2voPx0BVW0YnEg%emTLc_#vZAljMx3Q z(^4nAD)+Z7Ke;)bZAatB1KXqD-4;E$axZ6hU^1u`beQwaKEvnwQ8u@}F5W5stmc_c z%#$a|YvynIcklKip-J*PUqAbLet*`vBkzJ);wEr1*&FRXu%O|c-rAEIK_Y^_EwfnS z5>39Am3*ss@k>C1DO984qRK5@uN}D=cNdr67n(l7W=7e;!;E};n)v_jdwnRre8r)^ zNg)T*_2=)@(t3BUd)7AFaBBkzS1t#RhZd3-rAj#R9xUUVcCjt)(X+NTv7}EAwk(Ux zRICYp_->uTxzlA|ysBE4%-Lxtv*6+P|8@UQte3T|d1Jg@$L@Ht!uN%N`T?JRNb3rp zFF8_iYHD|T+oz^W+73DI42875bCf)0*x;YdvU7dy!T43V#jB_8+Hzp!6D`T~_!QRX z2A>Z$-KaOo&lPI9<&p8R;DgHbME4au?(!kcN)xY7*WF!q{XkID^abV) z2``un*ee(4Ur5`Va)tF*CEuFW1&gjNa4%r~TmJvw`^D^QmYdY1Tr6ho^N9WJyY}q? z&D4pTSy|Z`Ze-UUxpru$K%|dT{o%&@S?T9IpNUL#+!z$O`m9o)f|br%Pl?0FJc>U% zuD@Wie}?`Ki+rr&Al1ZgXH%97TY{I`Ma3ogVd&kbY68kyMNPj&qlK8_Zc5wwosvBUiG`1 z()+WR`X;NyRxHseZp)9E6l}cU*(Dya!Y8^O?k8Q=EPt@|-?A-#-ntiM-}=7wm2-O9 z+MY?L|Ln=xR_@w0rNO2lumodQb7?XFH>x_IzuuBl!A!`8@Z6V8;iWKHEn}%^zEW5tl^2DCmABx=5?>=f> zC?&a!v1EgJ3mzSx=3BCLF;n}ahyN_vG}U<9_9t)OG#r@FkSXc; zoW1u=ZP^VdCOU?@3e=eHqH z`MKvR*(uj%m-HnjFM0bRS$>;seR)(&$g$7aRqJbO z*^KJxZ(qpuDLk&U&bILE?5wp-XMATgv%-nF*X{d+3Eazrdb5Yo{l&JW7Wm|SiDW0xc;;mWWIA_hXuj^l>$H=~v z7uo)9UH#Ls>uj}*)-$ym zulLuPHE@fq$!g*IZm7Y!Kz%#k(|rv}eA7=KZCqELb@|=Z%?cO;5g-_l>hJ zaND1*{c868ANw+oEq!?E#+mK$r(`NR-fdsc^}Sm4bJ9ol{bgtEkKea7`#d+?DEISJ z#_NB6ZSS?5zPdJf`Q9&Qwj2~b*7R0`bAiM)H@80~%f1Tref48zXt?w+RicwK36C`M3%fbh=hN%n$4g3D5@6{65=q?+YgPBA!p1P~ykIuJP{g;zjq=gEx4XpIIaDyW7z?Dr~p8 z;L%SnHfAiuYW$2o0qpwX1R>bj7e;ondhv`&NVO2>0vPvmFTzmbExn1IiDHAuh)lh zwY^(+XwReYedaGx%nk>8mvs48z1??z-5Z}hKj-|odC^OLk*>DYk6Y9FmK0yv*VZ=I zy>^F!i^{gcDe`^UwU5sJ`8s|1GZyY$ecR&eGe6ko|B{@h`R`%k-)+q&6Z>X9W^GRt zzkKlZ(NBk-_y3BuFt@oi*-TEa`s3f`*1F6&FIU(ebe(&)|LTI;iQ9#YHYg?Ne|C9c zWAp1~<{n=Gsg07}-^9Bn=y89sSXsK_yKv@R#}7W6wmDocubf_d&~tzN&X<=SwPc^4 zVWfS{{DkbUT~*qBA^E?qx-c&fdvl{K_xqKt-H(fu_Sjy$5fQw<^7Fs%eMbry-!*8q z-p{XXm|y<<&xV475wT(aO1od>cZW`!YWn`mskyh;zw_ByS$M~%_mVWvS>3sk=Z5xP;lb9UD}WLrQV3#&3=}{=6r1N(WU<@e%;(3 zmU{aBi^2u|CR-BfwP$_t(BPOi$KB$+^r??*w|32!61?*`^`O@4K>b&*GvlRa@f^^! z_|7n4$?gC9UUfaYFP7i%?|=XUgG8Br)4sM6bH#-UKR(>scO$x6!xVeg+))%vFYGhRLt&$e30sCj&6 z>!*K)b9$s>3y#dQxwM*H&m%y+_>RZK&^_@2Wpa|X#mc$Ge=@Rrw!FQN`aR~K!=js; z53Rdzru*xTIJ1pkn512P`!?JCB8S3bk$-diMcx|<>}_XzW9hVYZ->!2+m^{+FYSwaFlCR{ zT=VHM;r_pGUr1q?P+a6+!2fh_v&HB4saf7j&gnha^Ya2v+_{_9P8*ZWFGgCn%;8C~ z+Y_$x{&Dtt&I1ylpdZ>Tjmt$gI-6Upn(dWxH$(9GZu!`HbZ>Zi~&GKF@@oV{i?br9JBF$VmxEN1Q zReo1`{llt-cLgopd#rBSS*UnT{Pd0mH>aJ<{>MC9$xE85@Wwx5Zu*`oAdzyJQP zA0McNelmEK*dXjQ^YPV%d;Y(Zz9%73Q~W}(`BT^>Ziv|uJrnm7FWt1#vwYK(Y0oR) zJ-d4S@9U%CXX;;ntqN;}s^MXK{N&K#!Sd!ySfO+Iu&y^YO1=3l0`Y@zDPs@lvande2iCx`Id`g3uqp`iBt zmCDh2T&{rEA@X;(aJP5ynmwDxqGTDDSBaGLJEPY=JBU3uMqy7~A2a^H|k zcW?Jj4wYVo6=&Z)KK+;Ff1k_CW+y$)yPH+?b!E(no2Sz`f6lJY z+Vpc{aqz!q^0N<3(>XomFKge5y8D->$8B9$`ET-ld5fT3kMG`|eCl86)8_l%=fs>V zxpaS_mr?IB%qb70P*?ZqT^tCsQua5oEz@4FW zW6M^}oR6Dy-bZfk+kIu(-T8GX9a+kkwlHFQ+O=q6U?GJiZ%kO_W zJJP@AYw_))*ITUKZ_+wfwQ|k3_2LbafBRZ~pZ7Yw{>z1Jv9{MU|LhcA*!zKN{R7R- z`c)d$yIy@#?Z5l=Qd92hO(JWmXS4jaakN^xe?zwg9zguJWp+-4jI z+-6?9`{jeF&8|kd|D&Jr-hcJ$U%9W#3N07Yr_avn9no~SF!OZU$DOn5vZQ(%4aELz z*lL*b@siKZ-Ybhev+mUSXWc1{FP+WYR2LyEzbx)!n69IX$=j&ulEpWV=dQ~*a^vd7 z^FM$7E^2mv60EoTSIK+BExEToXZS^|&~gzKTjqHtYSXj${brubj$ZMx(sOIR`-{$& z-(OI+NbPZ>tXr|2f9&pzs+y3PSAV>()ka=(XU`H_dTjpuJq2M+YG$A3RPWO;_uF8$ za{|X!>22G$e7&K`_V!He>vO5blT0QSzD$q#+^=hTY@xs`M>0%gFtV|lc~if>H7)-if*{MZGFf&)l01Sq+-%{&&c8A zm0f#DcJ8K2>ThrTpMQJWS&s`YS(Bc}{Wx&ERqva{;v36TK2IskI(Ccg%-eU*v#i%< zCMoqS@0Pf!@$0Rru=?ru4$PCIt(~{_Hze;XT+?$T=EvHn%DMAEiSxg``$|jR+?zkP zbHBeOx9Qvd->3Nhe*6^4s~=PQJpAlr@sEnKmA{`|eg9g&B0W6wox1rX|G2+v%UuHc zY94a`%wPZI%gzsfcRgD+ZJBcZoX4kn%*6L({LD%G|7?D=&Qdek8+*V}ocQ_CVlS=v z(`4p!txBiQk|8sly)RZK#OHtPoo-jExwF(|p znEHP0&PP8_-Sqz-QdM!DJ^bYUT|YM+FaNTTJLtA(O42ujGykfz>#IKgwLR7P{Oo7T zX=XNdcZ`ZIrM^{d{hD%Snnz#V7q53~o^KbGyYa)}%sKY;b$`BZ;QpuOEB&zs~)A%FX4)I~GX( zUYpqjjl4Z`GSwD;VOyM?Fey9TDPQI~B+AtPOP!NgKXFt2d`UsERb1Smt*vfrZ(2kx z*%tEaUGeNa>nh)^ z_Q&Uka*vv}S>;9zV`3$u##KHWH^mBCSGYUT_yZ1?(@dP zr64Q{JjRxcyAHP)6cTrC%2=KAv8^pb=3<>M}Wf7;f&man~f z*&Y6Sx_*0}uH3pgWS-nY%hmbw^VZC3NwQv1^88JsiHLalQT=@del6P%MNi#QaCX03 zZ!gzy_+=lf%bvA@L-?&yOu&S{_Yz8YeZ1cCRExJ{h1KWF9G5;`Iy>D!g6Ej# zgNGJzKORng_iyRCjXPI@QPp9iovJ|xtg;vcJs-cjYx=L)f42jI4A2_PliRzCU-AgP+Be9^3Nn&mOCjAyc9`E^oS=swd`d z`S_fE+1qTSz`$vw#OpfL9_qd?anAq7tgHxzi7qxwf(1_f6LO;P*>FG`}XxqQ~&z&31M^k z*B5*+N6O?jWUUDMWEcl%HB-xC6+$0wb-RJ81){~P^FnMK`ym#z0aGfmZI z%X5eGFR%W*`%&Ad_Si;V+2?|GwJ%LCPmg2nFa7iF1#9@;4>#IR?~7h6yO-zQR{1+s zhuLoW>eqd}w&sR{{=R2lKcD+E=hDKHb@lb%9V4rD?>>0_{`AfNQ)a8_p2SwrwW&F=)Z2!||Vj#Jw_j|ALo)3#}?3v?RW(3MS$DUMM?CD=0 zB)0k6?fY`G>wMy*=k%}V|MK-qAVXq8!*$1lkH>iE4lW@P4CT5 z^gLh9ojLi!@2~sb3jVBpxqaD=){l{n|8H(r-o8#rp}1;_fuSh-x!pCHciN@9_=N2$ zuNWoVJ~#i<-}C?9d@~k)%D|8m?LE79o<&_oz*+6Te-M zdEdT%S(Lsc=-rxUD^D&|n4I=>;lsqD%MWL{F)=pztYauV@$&G$dvWw7dKkF8IjeqO(Du<}&I>8D$Y09;vVQ^e0+7#@26~5 zLXhk13)1N#(2}S9a$r`Ob4@}D17FcY?9$u) zrk4^MjhpKW9~!5*ZFzqqEN4qRKS#2QTkmGG_SAE$jg6Y4%ir5%amp-=-CZ{2#ByJM zu^hR#4q5C?K4;`|PW#W2p5>xvpfSOj#lCcgdv@qnRgJbQZ|?=WuVJ3;wq>GWP6bnx zX=vTAW8Y;B#bahDORrXCn!)$xl=KbnRps~BDMeO=ZF=A!W2dBSyCL)bzF&<==5OwX zJ0Fw(na=sEDBxxC?dII4)on}X*ZvjmpSM0s-`c|RTjt*>h1qE>ygm13<+x<19^clz z;kL#b6JhmJ?^|+v!nXt_znoM3_=ecMeUKtzN_UVoTlLD5%kLK4-+A}{&c6%KbI;nM z78{*nT)a!ZNX_RpKwzd9t=A9GMLIH)qKtZhw3zGp#LmwanMs8(Lp}`u^U= z^!LTn_4bz@{`SeQc}2F~pH~~z_r01?^l#P6BKFh=&70GYn$&%N_FQ%DuY0HD=l?06 zsg?I-t8(P8uitgv{eCcy-CjTE;!A6-vOTr$jqSh5m-k1{t9?7`Wof?spF{Frqmt7< z9)CUWr|E-5v#0a_zbeB%OFnc0=k3D}teO^nJ#gHA@7(n^pC27nv|%{0dAiP*KabyD z|CeL>VpiGSk5LoPM|78*yS3r7n9{3T+TZKGo-v(n6FBA1_WJwtH05`z7Tpu{y>GXF z=ce;Fihs=h`v1qx%+% zZ`y$R<9;tq=bSthy!BCh{N9?p|L)o6J-p|Xef#R4BPPB+Ze3xmhRf-=m?eSjt^9wM zNB$_8$fDpK@%dTX>L>9r_Ufk3FY$hPw3Ykqu@Y|2aJwB*Ur)bUbEBa2(JlGoAC>RM zJecYIyh1^~?%U4DqU)+(Po43c_|a~rWv3CtgXYc4+_{}1u6-$(K6RbN>-YbEKQDUt z{J7pMN%`qjx3;biU3Ty9!{gtd?y%Nr&Utlfy8Qgm-+#K+WOC=-l_`F{ce(YijHd9l zH6Krli*4Iq`u5J19@o|8SI$LRo`3yAdWp`vU)$|=X+Jvu`<$2OjLN6gzeLy9e)^HA zeEO}!=f#{xfz=Wlj&+>$_jf^pD%)aFm&$U|+iJuTQfYd{?J0Kez8)^8D3# zGvAtCTX51-x@=p>L&4yn=kb3I9G}XW{r~sr=jADt)>nm6gV*g+{d<1*Igk0<{>*nz zv-$b&SL?nx$%Rim&GRcB3%#41oxc1@%r~{21z&6YMs<7M-+$Y~HD?;l zNb@V<&Dg&)@m4Zp{&V|stJ@I`pxp(YfByVA)4Bg{srC6Q2Q4%wSbcx1rC8Wm$aMK= zeEW>=-xlZpE84L0{*v5N|5NVTo1L5%v*SYh%ht@cOpta7b)g(-$zvxCDsFAf`!@Cd zuJe2U{?wk?{yAJ}e$}-*@&D@1uiDLL-g)ZAo8tc;4?1`MjhMlInddSCINfRFEV{C5 z*RC0Eh(V*1t^4=yw?r97(q#QyfKafq`E0qx;W}-^h?Id}694jDtC}*wLl5BLs5vn# zEG##^7d$&>KNmE1WpPqGzNYTu(dh=Z1`=yN8cFb6yYausbMu;iGW()SVq@QCl(Vt2 z8agK$NUXV>U=Z;*)j(p+#`!09e5$s1qb$qT{7?v4{DK_c>kkq9lR(Hl$=GtvT37%`&^H!CVmwx^B?aI}w zS-*eJH2bGjG4K1QZ-J|?&WpQeb6iTl`Cvlt-y78yYYrzHNUV8mqk1uGtL@!b_kOvP z^DM0u6ej%7X21SlKG|qy)U4U3`KJETnCj@L*dlPPLXw9q`_1H+4{d%taL&xk438O~!{*lr|na zonR1=Jl}`^xK4e_lC+H9tk>=uO7vVzoO|pfx2ntS`{Dv3E*(eee*M%}*Ra^}!h!L) z?0&H$AXneJ@_&DYMcU8Y{*8S72NM`xoA~*vw+GD=?z_F{pr(&w-MclGpL^L3?OsSlT4g@%#(N1jU^{T z)cm}9Hyk^iu)*9E?8P3QE6K9=3S~14A|qnw=WOt6mQ+ceWZDUe*EPv0y|qEMGS-b% zYYrECME8Ge6yKMb^M3gxkItX=odJTXPMs1fgZBOEw{EVzJEQxs#QZv`EnjvYT6JiZ zo0Dfz#f6zGFG^~?@3i0N=Uu0>a&_+82^=3ke~XwYIbGs~<-Ro$%L}<8l%o&N+|yQT zw9}$K_pzw&vaYUAJ9e<_bShN3{_rL8=E`A!oni!zQ^*dub{fS!oKi#Cb zSwwZ^-o?r~CReULH#0Zq4_%+Sqfs#HYs$&5M?U8(xlUH;ob=;Oa=rDkUygnMm#lDP ztZ-YEc6H4ZyR{p)F0KxayZL>J-KH8f^SI)LMmPU+Nl)RbyLiPze!a@tb64)&-Mx3o ztHu?dM!wU7HjHoK!p~shr$X`|Zum&HpE9l?M1RXz1!Loigh*CxfM>rEvYDjVFqm z-ue2JoLSghHfPSZWy{)rS(Un^6hz$6wEX^fhQiWlua@`}5WN-o^zkJ8N$y>ObD z-GM`*N8zKx6NWt;YFcLoNF2NrT1rJK(F z+uHlLyNPoXCAe2KvMoWA4 zw0DO%maRSh<-vYXzNmjZdH$Kz<~OykN3Oruq2{TSlp5N6`7rzSGiw*@P%zdl4&pha zF{>|3j!~v6ktr!CscZM4+&i|-ldoUBe*O0k4Q*|0Az`7mRcjV0`7B+vetmaGN5Mw> zMOss{PL#7|WM{8ly}GxjXAaNzw8NW3pU?DB3l!;9``Fh$zw+nG-~Dsz{#7r~({!0B zCe6gKsN==cbDWLOwQ7s_r{4ej@te55eQgc@zuK#(9J;1lIP9URYH6RtE%e9l`!_AC zsIBid-=DWP{J5b$vQ)M4kf2?%rPzm%@Y7y`>`Cs|%qOzZbg`Zi(t*8x88Par5aXrqx)Z>`CDE52W`*U-P zT9bbDNH!_VcKF{A7#PTxr>&z?^40cH(Br$GpU-Cym_Or*yu^Xe!fVSKpIgk6K6=<~ zs+Nc#``kIlj=4Q|ef{bU!+~$x!ajE^C~B4}oohZ^#I#gJNvTOd$ulW7_V1E2Vm>PV zbGPkZxUZ~WLbC4f9kN2~QW-1O_j-G*(9q}S3*M>q?A+boY?q(4c1(1Sd72O?$m5&D zuU>qNXS(zj=RdmF{h83fz-hamdTtvY$h`sf|j)W+vxqwC-l_Q zrscb5SN?0dw6MJ8sten~D@LbYzIj!0&*s?2Wp+z#KqYHmte_Kzf{@A;8zZ--EBC{1 zUT(Y|SN*?@_xz41qo-^4Gas1Et@-GIiVYLH+uVslzi!>0f4}On>bhr{TdR@}?zxhl z{d2+Ptk_fE4%YW>tlF$y9-nqA#Op|MU@N;9-;rZSo{2wAUz+Y~vt3#A>8k?M^Myw? zX?bZZW#^x&^yo{^%i~wXzEn#}sR!z%Rt)0()#r#rpHq_@6Rn|xBGOKoz=v8Fk<-$j?Fek$L*PJd>} z){rk=MN3v1D$cVxUpR+vMN?3-!Uv}LLej-6_I*u=&iC4I>1s~>-Vck8^4oHV1Ws`< z2@L#`cJk%r`WxrCQ@YeXWfZ$-dgo`Y$iBJjR_2U{7JZK`9RgM#K0BAaNQV7!x!fPJNM?W{YEnYY!z^P`coog%W%gbtsQ49ZMr21@0Q+UxJ+Bc;xH=}CbcwG{?mOx7ZddYpZ6fm@~XbIY-uWzn?`l)Ks^VEkH3zsj~x3Ji+wD7+D&vGR}t_`2I-4453@_Bmq^QE=hd!H*Rd;9*)y49x9Yh|am?N5g4(rFxvKYZBm zp`bMJ;=wOlrW9IOW*9L}oS?)|^sHX@axsU@p_S6T1&@-;^8YY1Eq{K-MB+;;>(9!a zJ1-wEDso$`?%LM9V#s$p<&ae zPd%!x`jfrq^7)AztWPFH$yKe`BEfj}@W(S})_mL>w#&-e%KDa)X<$P@baZmvNA=}P z`0r&Kbxxh?e6HEJ(n{m`iA8>1(bDnrta9svllL;;WK@Wet^883(@N>m(ju!14imI= zJVedx4hl8~sR$ixym}W^Fl}oqZ?YJn-khcF~ z?M2tscK_dGe`Yvtq}_6WQK;lq_;I#p-`h)?IG(z%VoY#5w`E~)SbD!}vOTMa3Os)KP{EkU!)!OCltLHDYj&`55 z;>4?0vow4~*cX_;ILm(bj!0=~=|#hfdg~V{F)fOcZR^lIt81`DgrnocXPc!Fp`o(E zkDDed2Rcj%FuJ#wX+nUPii(?8k4I04k%FO;>bmvc`U?LZ+;vU#rY0LF3m@YJm7vKj zQ<#{#MDFgf<-cy)o7_1wsL4%v;)zH1>)0FCKRXw>waRp&3d0Ve^_$GZm02{4$fnsViSDJv#L0(4n3+FZrgnE#4B(#ULpu*{pZ=g!v}#W0rmMPe^2> zOGpVhajsmq#wI9CZ2lArIeYd-rQY6dZR?0RQ;b9z7B61p<;@kmd|7|=e_7ewz`%

    g`|E=V;l_+S~iJFO|LFfx%S=3(0?5O-(Ics(BvSWux4`<6ECH zi-7Z?Lsiw)zjy6sJfN@Pu`(oV%2eJjaW7`|TG{#P6hGY``@Hm8?R&@Uo9DOxVAOFq za9V%=hsFK-BsijUfxE}brsRtqV}D?>{Z$*8g2KZ&odTUR#9c1D z>Gcq*{rffDN3H0zuJ-);f7*dA)AuD^ow=fAg~B8auV%SE7Y z+8XuNgrS4k&u-D@{FleJ*)a&HP84EdsI9GyojW&b?KGjx8?Sm*x>`CWzqtQIT-3$Y zO>l{aPWBWLLnWi4_=ErEoOx3y-4e6TWAm?n3m2?VP*J(EW_rVd1&c0Cnt5}b>w2qr zccYm+f+baZ)wEXa+Qr7GWGdBs(M2%DXy)otUqMX=XJ=v8DIaBA*R0GoSRZ)YCA+D~ z`PQwdl^)t!tCNzG=bQiAsUq8*i9tbOs>(zG!L)O;a{l*E@9>+#GTA}n zICDn_+e9f&!;TQ8D>Ad~`p$VyQZbRzyyRQ_T;b7A^E(Y}%1f_goSY_PG%siFdy_NT zEzcsi?fSLr#tqHp<$SVQq3!L83aks(?Qd0aIwN?RWuj7*=3Y+4rR{t|PM4N1+qv`I zbAjR?5=u;OPM>FG=zRP%@7+DSy2k;5`SJCkrE}ec9VdX&`PD0~nTMv@P0RggWVGzv zdHtZ3Ay>X;nksos@;k05CN92w=~7XCpX;LH;_X6BElj0fZIAt4KBqEo+NIOI?t!=C zHs(cgFWu|k>SA3Kg*{nr@Kr5v^8Vg?Jt z=klL!lRcGO1X_|WR-8@eRD2e$;ku-wZr?taNvpJ1pE}K#p5`CELrB3&Rq>(6&xbQ^ z?07NbM)Oit1_wqHDc{1vhgY^_G88;G;OO|^toAbo1LgELk^IFBRk^-jr?f0Nx#_xQ zXQw;gbW4rrNA^ByUaBg?E>kc`MO9V(r0BcHl6T~pZ|W8=&|I0y?yVNf%%R{l$y0>g zy;He=$129nwcoyc)0*m4%xCA7>YuM~y1!QK`hLUuzZN&NqEFZTdoXkJyUOQlz8&t? z-}~Tk|NbQ{QFg^HE-sTh7ZrbN2xGM<+Olf(YWIZ`mM>9>&^~3;A$wEZCk$M$S4*c^ z#~hxhlJxV}$vrn2VhhfdE%|U({j=&V#jc9~d#jI~IU=>TGl*fQi?7hbGZT}ic(lw? zmSS{J($kNdCA)Ot-^*&5tUx@sw^YK!}dt4>z& zY+h|XNkvI8QRwiM3D>TK7R!i>N~Y>n`}+1S{W00Rch<~l6T@f7i^#Z4WQyAIJZt{j zKU*(eoTcpE@8;&xvidONM5WA(72W;)^6f4iBAUGX+>S@4O%r3e;?ffNXyRGnKaP$Z zHv;ZIsCg#D=*8pw+Uy7i!}Pc!!KEG=6FL6AyZt`y)`y34^;rG;zJAe|8ei>hews>~>#jJ}Tv_q8gOqQsL>T$k5i_e*H?A_oOHC5A>&V+dRKj^7UfZ zsuL$TKC8(cSg2;SXV)&h+AJZ4C*soT2F8f{S?%yYh85}xH`u;Tva5AjjfB53-Qma^brB@|x{NAhj+ zI#cvKA3faUTo}BJC+ACZYCB)A{`q9Z-wK{5SGMy_^V!B0AmSP*veu4Ort-+rgYzms z$G&;}j>%zZ5GTXly|%f&zSCA3hqD_e$M%S5IGen2 zdQ1)9@Bhy!_%68EWA5fe?-#QxA1n%D-CkZI#ltd@p{RNO^9ZJibElp7daUkLrNuY1 zGi4SDlR9o5Ruowg+O9t9!_M?NS@)AAN=rrdXijwzWGwm@X;P7O{H`a1!-QS;-Uv=) za*B_)Z~B^cs6#~X!0F4vv7B2LOj7Amn&=WZMb9#Qno8%SpSO7~?s4q4*ioe%wdjf( z@8^9?KV5&eOgfn8_H9WX+l25L`6p*aO?$?W_^Q)wMg8oCtsU`1SIh4i5eGYn%=o zIKa?3p=*_w=cG%)mqm+y{!f0t=I~;RTMYl+-HW|**ZEFw%LJD4jKb?oODkAcBrMhS z<8HmxzAa!&t62GRk0$m-5h6-QI-b8PD}VMoS^wlwy>i7yl{5Xd6?&U@E5AQ+&iZ|a zSJk<0@k|ldo40N)vGHFSc3{mKou8%~#l*xo7WVX%h;9j+_SDOpA^A*Lru4=sjylbe ze2P=W9g;o$J}p+)-^6`NqAr$wY51`Y7bdr+h7aE!Oz+!M^>x*f9XBps{CKQaTITrH z{QF|bYu2tkd40{DJ24CaK_>&Ze)=@uKJqwM^1V0R0$P*3Bv+a!7zFsnZtYSN=!%KG zD`(&LJUYMH+M370(z5lv$!4AD)28(qgw-9iwU5h8&;S1;aLw%9;%pnXZ?6BlIfjL4 z;p*AHAG;TBJ@&cu%R~46M|0-JGCW>#M5XR(o7eB!{f%3~A3S_1D=vL?htLGCrGJ){ zam9p8U~rOgGCdxXvbl8DgB$vF>x~&Cta1b#rpMjvZ(OwSh3b^2^@&pNcI!1yzJ1wC z%k@-x>e2V%KUo$vu&Lo|0xcv3Hg)uAc4@xKTvhdxxL&ItGS@+pqlBF*>~S zKlN?fPurv2-CZ^|wp!9mA$B|Y7P|M#XJ%$D<^PZW5z|s7rcKVY61^tf zmMCys+mY0}V`1;;jh5rkVY01bOpE+w*QcvWxr@MQq*s3HJ@0k;> zbu{3l`sK^>H|r$lr=LBq@O-vfbawZ0e|b(8rs`_>lV}C;L8F|GTPQN z9fG|lKi)Cphs3nhTH9KeQ!g#+?#VF-NQ#~|;yJyEabKKhQ_+U)wX-IqBxW95Z*j)M zzr4ISY++52PI!=4;vB1DHG9k6|1(_m?QqtvBKbxw1!FqxW~#>Sq#b4Q1lcemU6JvFYAjeK_QWk~MR z*3nE{5|kew@2jgjYngPw#fC+9@9bqz&@-F$c*m0`BKh+6c2c>_dqV%Nk&vFPqNZ|d z`^N1Xw?5tdSmyZ68#j&|vw33utMKE;PrF^&S+(r#Jg$nKXA>3{e){OqnZi4l)%~A@ zwzgGfXQnQ;c*`*1^C#8)(OWuS9Y4$H@Yst%QDvgX(x5i^)-_jMuktaRHeg6dNLsXb z@#OjQ`5CIJs!kkIQZ^Nx%3rq1YFWU3Kh`Vu?0m^Rzk8&r%J!H|dFmX=_u=y+fps%X zRMMt$&AtC)t<(9FXHGbANJ_jo`L;JO(fPQ{ajlt3q1x5jR|*zPc-p zPU~38tlsp)Ybi&v!wl|dar5Mq^+}pq$rENcCb4bje;uRptV?CZ2A-)#Co24QZ1Un` z>q)K3tIArHb7k`5AOCab&N=n{PQb0U!-hRmQX`)^hVYy=2x?1>3_E4ObGWM7ViQkv z;@*Q2#X7fN{CxiQrLd@UYHH?D@#5m*?%Utrhn(5Q{ULv~Ue=F`ryJ{X-@Dv1H8fm# zqgpn3&h+0}Yib|Q-!^U9w>xLfOt~LD@$rr`XM7k8%*_{T+`4l|hCy9b-C|2&P_78K z!sk>or;bAnhI>5DuSh#wSXvfx(yKw>QTocz8wC<=iI!zoC;pkV>C&D$ z9{-h@=4H|1cfW_{&bRmTJe!a4$=TGsxUl;3vWTx|csVzpId?9rVf!g_sXq^x0z{4_ zAAevjd->_rO+2N% zrlkSho&8%kZQ5e8HDsSoq0FXjn|A$I*tK?l&ePfZ=B?|VeE6~Y`7=5?Mn*<=?#|)m z&%ITTW@k*+B1h~V(D{*>gG+0 z4&6~wGhfe=ysqf|#7}Npx7~klb9L6V7wr5!y}q|BLd}vsZZwoR{&OpD&Vl8P^H=GL zi#c&jojPrU%rS)o%NA9kosIY0*6j(ca^(oUoGay6((u#o^XrPFj1(pY&66j~zI`kE z_AOxF9xCmoG)d#Ga+3eE6L8^~;w_fs@ZHd+Pp8v&Znk#l`J!Z-399 zzwz*X173E9_gf`*oLZ=&5O}RESan%g*t7HVmp^~D&&c4yYKs$lY<8~76}bOut@+ms z3sd!1ntDPyr#EqYyltr5BgoWZ_$Wn+?{wj+X)A;{4>5Gh-{_IQv3LWIq0F>`9U)z( zBUI8hv>X)@^At>*cmL!~fv%~sW``41X4hwC=El}l1pTy0>U+!|%CvN<%#n>c+O;1H z%KmoXzegVf#K<>p_$Zked?|G@37AOBw5b7#+m2LV$z1)Xez(Azl7tVJ_gvy#p4WO@ol~=5 zi=lMTHYJM-Zo$rX9pd{_Zv@nrU5&Zk`g-czaI=!%-}cJa7-ZhtWBV=a`1@mOJadD$ z6XRn@gh>u^IQLJ-(>J+92ZxRpd z2t1Nt+q~vv`ut^{OXh?$sb2c@R_N7R>5x7zB_D3rh@c>yR7TOKPdW{KL+jVPyZ?Sy zU$CnuA4i2mC4a`M-ezW}7lk!3k(rs#-`RS1b&GPWUH9ivgxH20*}l1RV(qEkvNdUu+=*KnM;H%nG~{Poki`C~?I$NgRMf3&W@Vb5C-kactkrl^bWS6nr1I@7uCR zH|zt}Rptkz=GRK~oqAo6viXWZy;fh&RmEc*iK`sdHVCoJw|~?~DMu`=Emzz)R`_S# z1<}n{Ecy~HxBM&dY~_9a-18mJWtDchT@snOGWU5GMDKL|-@N}vJ1b{z56{n+6PK#` zPx;=vb)#I}%Ot}C2@MDHmN76Cw=+3#9(WrcccPm6inr?DkgXRVgzr0c{OFAvQK31E zj1q}FE6-o9k+zx^84~d1u0+{vtJ_v8)@2*k_{1!{y<*q>hFKm@9>4u)pmpukty6~% zElTozaCpUxZ*On4v6!bg$|gmG1aXP5@g=qxoK|W(x<)^j0bzq)hk!5 z%il-Fg!B|ThnbvQe|Y1zZDL%SEdsumWsX04`ZVdxMUz$wmKnK=PH{7^y1H&FD|;3e z)|<3Fu%We8^;pMai)qQ0)4aWd53bS?>g?(9?dkEAJ9?DC!OLsa?&UeN!j8t>?saYM zb?Wo$t7$AO$Y^GqG~w6^N>_K&U{25v%bC-n^1ZMhtBBm0!P zd5Ep9JFD%4HHTN`9?m&xCet@{?cs;M=6^oO@9&pYH5OkbvRU}KUipg~D;>@RGH@`r z8ys$IIhx9&H+hkfrk=;1shjOwRP#?SKbv?&kz0HAr@zxCYy&fT+o&h|elCT)q5 zVw~Z+2amdHSWiEFQuF6q2IaL$do!OLUb^a%o%ski3rUmS~>EJ9<_w%gT ztfUw&=Ho?6RhR0V{#8*G{>p4s`%*QLUq37CDkQZ3w|@HmIj>;L?jvsTMc>!luwqRS z%lao{$j5NczdGEqlYp?N3ZBj!c;nQqI4AS+}lo>ZB)q0-;6<`SSZ`tY{Z)7gJGH zt^WBVY|m{2`};Mw7!TaKW%lr+aJKYqwy(kqmh4#JRk-TqBCfi|M*eqqj((Ez|M~yV z`2`cc_1@OrEffCZO{JpKjEO}$hmClSdswcVlDtGl`RR@m>m}PJdK^jGxMR&4pBK9w zXI|ju>OSptRMfj-L(bRsH}RfWZ@zcrz7=Ed-p^IKlA0o{*UN%@lSOY&_@>DF+3V!? zoSe78!ILDX339c3Bq8C5X$x7I)YYf6EpK(!_A8878-eUb}o;2~rH;s3tT+zO%)2?kS;Vk32aye8yXol!?i7(r(n=V?iQ{wWm zd3UQ`%)UG!{;PRlp~zRs7N?2*_0i1EhZikMN@bfQI;Z{f{i~}t{WO#KEPt1wK7ZD- zz@G=%g*4NXvTk1LKk?!7_v|TYleecmFqa5@dic|)uic$hFCJV_)6~3q`#QgQ+x&cs zw+sm>d1)zm*ETdb-C_^(PWBa_x_NPIfO1{s>)N{aDax(i`ODs44Az?Jb!1X?`FjmX z#^YvR-)xr?ES#LrVpaNTMbM%Xl@_LEXTnbW@wd;qGb439f94;lj1-Yeb~^-ZW&Xxp zxTm~a;P^LLGiGJBLY}0^BZeFsJ5tXrvwwBjR)phJV*34M%N92;zWn<4nm;q=eHHrR zIOWg$#Ip{0^VfA`apgZ>U%&2^_9`2_mKC|+t=d4UoYIg-ruokYthR`tp^sA?WwvP(bCoyv%73=c>cWu(|1AIz7rSU z$udg*(;)en{mSR5*(Wlmu64h%aW{vc3oXv-L+=Cb#p`R zZSR}juRpQ!^}nF|dy98p+`J?CINz#YKi`Fvg8O4V3eS*53@?U|qe~h`lzGu0(K6yS>72sI1$$W2{^DJwo zMu%Bv!@5G0E?zd~d3(cEVL_+Ky{O)U63QWAYI-NmtAhe-!l{31CNh`q2y(Do%Gvg4 zUuk4yW@MzMAZsHictXCFdmQ$x_|`IonW@o1ikAs2>Y!EKeX)Q~=7xXKEC&S*{!9}N zmY_;b7N(VN&PE+p6yVV9xNzY@mY$%XpoFMcP zcYS|zv6-XYK|z3n<&gE!)^2gpObZd$K1T(CC^Myr9ULHSAStH923KQNWm}l|e&bXX zxF@S>UGPlmo_GosfV7?-A zdu{Y#O*`xQ1E-Gvz4rHS=ms{1bGHAEuGrf7{_mgjdm5hYEMtEz^YhW`L;hxU7usHA zv`q7C=abF9v*X@|-7HKCRacuAy05c)b#LR`t*x39-LxB=HJ(-;>--?$7Gtt1UPF+h z@xqmq)U<1hABLO@TC8#Fz|}W5msY2~wa!{NJ^Y_`X^B{n$km+Z8v{igiu>dn7x-u{ zV^Gjp<6QBB_nzxNbIm&}POG1sd7G~2`0p26n`^%GKe$WzNsVLu%ca#ch8SpWJkJ;?ZZaRn~UrGycEc z)flyMx%rwKHQxdorzLM+d0$83$%NhiAG;RniTV4vKAH7x#`XoLAK$+wTgx?1IDGxw zC%PUhpC;~f2>;d>|MT+MjAv=b*WRk#Z~r$|-E`9J7BLRr%ZiE%_aqg6PHXv-uQ1tz zvn8x+iO-s)*&!iq9U4)>yMCz&b+(*nbf{n!5f|mYVmkF|0YgjQUgyL0{Pj;K$mQKA zp7?R6^G%brcb~Vvu4UM9DR0rYm$0<}U!?cz+$h|6eO8@GYmo4c%-8*O%C$U7~( zl2Uc-{Bg0pe?CvPyx)=jcfy?s@j^|W+UgzBbuPg^%{UVHoWnXRmv z{AYE88xH9QCkZM^`K@j~)=FtX|wKeS6zVH(Xm7n6cnz{Y}>yC#@o%O8(I@>w9Ond-vRV z3|0MaHWsrx{A;$JxIOQ#)P||~&(|JLdlVpG@l`@7Yo+sSmP(1eJkoCxSF|-T>G-GE z_pf>TFsm_0ug6cK!Tc_oq@Wz{EAsX=2B+OsN(oDTb`d zwq+V!%Q9!N&0^!ykZRZ@_5b+4opqvy4w)aPIH)YioVASAX`)B(vP>x#C&mpcuC=db z^Wt97Wx&xQ#uZ<~%-pOMb89R2zVi2ZUtg`{D%@yz&#vy(tE^VmpDu^q8&y?Ry_1{Q zFMo96rwezCTnqm5CG;3dzR%C)I59!H@xmVynYg2ZQ9So6k}Vh>ICU{~F-?2O@@m$r zJEuEr-IH&eGx5DVWzH|BK#|zTl8v4H;=g{~U)}tib#wUty>t5Juq<wEh$#vk+l{9|-$d|UE=&FjR-1zXydMIGEM!})ZHZnKlNNlKGbB#J+0?mWX`>n z)4P|p&6;%~^UkO9o2KbYee!nW>~@I_kBxdC{?h;Hz6=otR;E_|&yAOM9sK*}-=9_4 z*6YsyI<38X!dx~EUBRwJayA`bzVlanP!M8xQt#}XzA~{#vrEY~iYdOuqcWpyrqY5+ zVZM`7uC+DzXekQZ3%hKU{OZY9`@g6D7ydcI$@1jL=T9xK@c6KIPei?EL3JTg*e_2uX?&`+F?7P3c@I2!EU}w=sCQbgcz4>PI z@9z5I>{BL{QR)-_>$!h?uS$`Ez^qxx?fhLPTiL%%*Ugw?{(SPT^p&Q1F{i$9HeYvF zHnsh|!SjCIGd-ng(M$`a3=J>dyJyGs&g@3Ik(rOe(}kAG3x39AuBvf7Z~pD$&zs+m zH21G7&Hmo~-d;2M_ryxRe4TVomP5A}yo=20mGPUcS#LYT>4~p`hKiY4+m{SZm&29M z_Z=}w$k-K`rSbVo=We%JG1krxrVVPmtFCS=yZhbm+_}!q&dbZsUAcPop=@_|w|U;b z`Q4knoepi*xBKr^cut6;C2iru33E?yuv}WKI^mN;#bl0*32RGpC;d5RS^a2Q-h0cp zR~2WTh;o&Yk^NLuJa_Kg>FZ;*rF=Bswae=0(W9rs^1N_3l7rB!mqa}hsD>OR8o8TWV`dNTawZEkdC-&b+@SoDy9eKb0#Qog=J2r0G{6aVV*}VPVtSqh7RaAH+Eh3`5 zyUTTSb^m@pp%^ZHy(QiMc(3I3L#LgSMf=4jYckDZ>R~wj*5ts^TnX#K-7g>QHTP$o zz3F9tp3J>1zf1J*Zw%vLFc9AUQo3-ze*cko#@ClD{POQR^Y68~74=W2yXtVcel!d+{@W5W4N;VahJmtSM%nJSeubwdWP^K`lS>t?_o=FNt)s+59!hEUU`+8+C~LV68*V8_Wa#h8JXGoaa&TZz7oxg-JO<}7I8ab|Cy@H z%uG>v`TZ3Sg>-XskGckVh{!NK)D7%D>gJ*#Fw30x#k_FmSylgzM><<=`&#z#1OH3= z(wmJhYWR}R+=;$>dF$m(()#QE8WksWtPj6YZZ6r=B_|teoEShlm-H{(KEC{O$NBB|Pdjg7FXs0tEG{Z6C@L)Z_<`${ z;g`wt&oA}TTCVsve?#_zrqh>pJz7w3X{t`^r+FF+);;k!cb>aIc9-eIwKMXj?yTOk z{C7{X>WrP67af1_-!`@ATm6G~j~+aEbSL#{tXt)LQE#`8ccVOfd>$=7Yq2GBbLH)4 zlO|m{d)w^x&08NYrwL6Kk~Z*O%X!-Q*4FvU_Q^kaEPf;ZS-#*+nY7D#Yv*6mzj9i8 z!|4{&=a+A`iS~auGg~^HpXb}hZ|@9J&Yf#-^|<;bFK(vNf{M#sca}bVm3ch&U*fl2 z&gPRp&D7d%u*}4{s_oT@e>#0TDuN$hECcnQOTDB+q*ur-kf3MOH`?oGwB-OA~)%~1D^V6kmhGHywR`n6Z7d9|6-d?Bo zUS(D63a*+k4auYB*@+(-9HY18ZQQ#3`sK?n@9sYTbanWzFE1z0n>Q~$py27Lr!Rw- zug*D~dFa!G4e!NQ9iKBd{OwWm>*xRcxSaYd`%Yd=`K;~FC)H;Dxb<>=?Y1<(b>&(?t?w-{OW+|!E($=oL@TXS#DEIZe z9~+);pEGT1{r88);%DXGE_P>RTkyrV=W6Qt#Z7l&+KkLh7cH3PS+n%va=nhj)4mzB ztYVYt`Fy^{u;5bV`J?;gZp%JPTDRJ7X>R5DbVIFvHns&NUrSj<^EJHIdlEeha#@_6-|G``m)lO@-mpk-L;Rpymu4#%;^~h zFSZNX-C~d^mTbSC+q?1aiwmm^<&+pMl=4Y$Hd%A%^rH{l<|{9}zm+|`-}SkwH1EIr z9{ITp1@b#GGOwKF-$=RookZv@&_mUJtn_h6TOdRiQak9Uuy!4yiTu`@#XE!3|^l5yEgiKoUO63 zaZXO|k4)o>ffp~^&04l{;lfRAms_4b+<9`rf8L_&EDh(3?KA2h%wGC>P5uAv`**W7 zI8KigZu+ioUu&8ELn7Gg=%a}#1~0A)+Rb8kVEk_K#NY1ktSi$!kL$hCH4FanxnMz- zeDv+wFZ}K9>ow1I>@IzJ-tYicPwIV`t*s*;eJ3rQ_E|QtrPe3EjBnAvGM=cduvzTTl1%G z>D;wS6_*CzX~quXmeIDiRXQeG$i1&TBLF1%*clI z*N?J)T>NX|Cx;BlBS%-3{Zc<1vUX3_x4vt4=K03wi}byhewDjgTVwyhO&kt~?XURz ze)IY`H~afizRA0+u6$r-SYYy}#zNf0-lI8D;$Q692EKn!-#1;*HVG)d|2Mk-Xkr|b zfcpH~-)_%e{@%{BKJ=7Q52M4~FR7Y`GZ+hW+8G7HANJSCi1Y=X*sJk>H=l@Vd!iu2 zvxv6Dl)WZmi4129_dMrdP~N6@Ui9ah2%{ZxJFm8RXw0!Gy!5q0T1-rA=1fU7wPhzy zdQMjN6XI<3;&{tDja_&Dx45T)m$qy&Ju*>_QI2V5^R}(Mid_DFQw`X(#Q1gp2fXi^ z5@mgZyKDaP6i*56T}#utCb0Q1F3WnE7<@}C?yh@vtE5VtRQc;VCF>*M+deY28s2|> zJ@dY<%iAk29~Z_~{tmG|9$fYO$j?0oEN#!eC~8(&&k!J?ys?FGVL*fCziBF;j=WS6 zyQ9&g$s;OV9@648^|eOGPmYG1Q{u-&R{S#1+goY3s3O7t-kY$p=a+h&7WXZD*Tltn z#bayY)N@@;D$HRo>=*mI`1I%F^Y@C1ikX@EON3rd)t>&m&Mg11|Le86Ij%~M5fSb8 z%m4hlxqQCnxk#qQ4`D0zfATzaBx;wNYwC)Kp6J(0SLZ8D^zg`3*do%^-4$B3@7S99 z_cLEl@7qxG=XkjAua?$QY18z#8{MC3OEz3GG!dAp@2Xif^?Xp9+pn#81~FydKk;VX zewSD!Y9`|4?e8D(lVR!d^~|k5S!LWb30O?yUhqL7$GFduz6Bo8?Z+V{XTG z?zG&tt*rjdow%T&OB3!cn!U~@7mF`f+2i8NZjGOZ&b5{_U=H6+0fqZY{I5&a}Jp@o?jf8qdtI zC-3ybY>GdKove)3oia=BQ~jzR2Dz_h>`njp?nKVUAE9p=SwH_fll%SU@w;0^mPS?O zZQDEV=8OH^qUwrcj~5Uv%G#%ar!Es2PXOn;tY zX=Sc5cWz`+@ErC`<042$pa8+QH= zfAl7uKQGp5$KU>=myNIRt$(|=nK9VJb!xemW-fEBpx?>b)(w%pqMIlEo_^T-&$3p@ zhBe>$C8mpsY>=3~T|36n(eTBq*Fh0dmCu~|UN7mDFDnvZU`Wu@HkNMW3;DA1spwR# z!WH_NqWWP!W2<$;r^pC&wmg+hjXTx)(^aD6$=`Lw(`Gr%7xiMhUc5amV(HS<+vV>I zavq=XpY7>eo0p$IecHc8zS8Y)cbEChGl=x|-aK;(d)KN>>o^%2npSboHDCzaS#hE| zy8POf1wMk8L_+Q!nY~H+UP2|>0ulClPH;!2T_&d{E%<@9cla<9Y;~rN>U;Y%$b3({JviEQ5^Usy>`tM%- znK>=?!Up~Nh^S2u&OGJ%?E5vK;OV+IpMIXSU;OIulncqfuHV(Gy?0*MCN$~I*ME=d zubufOkknum9J|x1%wW{ih?Ci}_QnR>xbwPu9PYaLH+rvvTiwp7Q`nqVFYVK_Uz_*n z*1y{D`ny*;D*2P=EslFvbk~00>nGyR)|Wj!wKP3AcJ+L*gD&y=;vN{UZ1z0*q>drx z*MnboC&kJB`0St(X#P%Al4V=z0!GgzIvgw|l|D-f#s7Oh-N3x=g}md}xYu~m>Tt2Eo%R%-{Yv}K?cT~# z_U_S6KUwRgOZQIbP!&HnU)s9p%)Y<%H@6lB1PhnFyz})GIcAK+Zq9yhy8I`k!L?^F*Zk=}Zesb7J z>x~zepI@?z|Mla5%uZ>} zvMh6UUX4xhc6Z7SD_9kGr@OiPd7g#D$0x4)S_GdTnPXGC{fNebwYH(3MQhNPnhRrqGy&<-!Q-BoI|_{lEOEgN(1UHsbq=<|_FP3p_* zBMM(ky?=yr;j9MNeTi>P9`WZ{|6CKGbh6iW)3fU$(dLO$cQ{`Csl!lu_V;#zQVzoXOq_4)hu{93xZVM_zAtBO!$R76B%^zB=> zZbd}De)*EIAwa{#z+l6cEnBv2+qQM<)(sm1Hr!;emqx~ArL-IfQNH@#o)c4BS5=J&;?f&`Zaw`IR+3}Y`>7uVQL@w+~gn{C|Vl6GG0sE>@ic{$xbc22C2u+XmZSEn}doG#*6XlGmPe)Q;$T{~1%)udj$ z*rc<1*|KlfPCIYi`*J}|_O4aN)8jT*JkZ+xa_bqNm8sibgxNj_3XZQ${Y;Gr>?p)v0lJBY&^Cy4tF?rrQC0U6ZRz#*wPdd3m&3szw=Hj9yLY(ar zmMvShuCK4JkMDS)s;cTwR#u(UObvb8dZKDOssw(zopLr_UYUC8>+J9Lb1eL{RHg52 zG5hxC>-!&uhdX6BTFfu&OI?WHwkGY~9RFAOds3AJ*2W%IWY%rD=Ck;E{H@Y&_769& z{t;8U^XTmB`Cjwd?t6>x>M0d4*?zF#=%hg3Jg3G3XO6TaO7v`OYh!Z_Y}nYa>}yHs z)vH$`rY+9&ijAGSEYo%7KebcN#p{JYy)TmhU&Fv&hh1VUhjw=rN%5__c4qMw-`cx& zzx}xwL{tMV8*cpm-tb-b($BwctzLacw=@3k!n^wW{x8XSyWDM-BGW?8>f(Hd?kelx zsHNfi-~K$B%KJU;^Yd@U3ui^^M{i6CnI^5f;414Y)8a7SSYO}Rl`{3|&z!f;@DaRJ z6s;u?6)fLfqRY{ew)!E*%TLaGpGMd7D17?=?pkka9Md|Lx7W_;tJPU9x_>&^+`Qy! z?uB%=53kQOCoAvge)q@y#KV?eTj^D56Vo~_ys9qty*uN_Im?=KzsKzD^Zpu^y;tg@c_5XOyH*=|84k@a>{dD2Z`rorcmvLltE$U!h zE~=#9UBd}>PewqFwRlE!``JI07iVtX{O#?IEsI_&}-Bq@XzIq&CQCT zvnEbc@0;;{>1&(!L7#q3Rc^XHtCR4&jY@4Yo`&WvtX^>5ZZ{A3>(7j#K`O=jLoc7}$T zJACiUZ2R-cBggIDWqIoj8u~@SKqYfm)`QH%&>ktXq>hBjNMYxywhLPGyT`U{d2{%==grl zH41OqSG?x7xpGEL{=B}XwytJhw6NFF90}{f>YEqr^VFU%IUaw<ccLYDXaGW&==3rrJywIVsk*}SJM`Yc-#7Teq83Q7Z-L;KhyYtAF znSUI^Wjoj%Zu<8e`(tYuAkJXmb!%&u`=CrxfB)>=&5BZe4NNyD%-_@0%s8X{bkmn-huEGOm}huFl$7b*pf8-Hg3{ zwbwShYvlXor8e0i!?tJk4@E(y#tTgoJdU_#Yfc1oNt@lUKxJPO~~( zGztBuzBV~Q;mFUO>kFP5FJ1rX$dtx~jO#vleOt0HVC~&c?5(b@szu?2*UlYO@_8*K z*jX|N8Us>|trO?Umnte`%aAckbxceccA2={U%W3XT@B z*0x={8Yd?De*g9RtCN%g>x@I8`V0q5Wek^{I=_A8k6`l^&GR3eZ0+`pc-Hhuf9~G1 zGum6MI)6MjWJusjo;yKKanX$6<&y$(@4edcUTo2~FJC@dEPEC!(B%@LHStP^(9+z8 zS8Kog(e-A3`PBWMf67X$M?Q(0mMVktEGP^vG%a{}tNMf2t%9uG3-Zc;Mu*J)_*wmi z%euKc-{d$oE-`ug>{(=Y-=n-j%EKe<`oqAu>)6>qoe%kMpw*7G(pL?k?Zv?B7;hgWN5G?@-G zOe#Ag5n*;I4z?CxcgpjlFP_9022ZN2|KBKmblJkhb4)Sra|~xLbptIg0j)sU!gY4} zJ@poo{PinyfB%cx{`L6PJDPvr-JgHs|H`*p*YC27zRl))?iVQP%UAB(x9|I*=xNG!^AqacZ;$+Y`_}B6Tcx+JEqSoaIs5ku z?Hekg9%bEX;56l+AP{Bu^}R_z-k*u__xvOMt>;;B4e-Tig`e?uteD>*w{p=kPpcr&eFwy?SFBSCB+SK&xwY434?(B)0FT%m%=61~S z?X8h7d152u^g8XxjKa10fwN{srKT?B z{V{(EJ1D3H?&UoXzWKH-4^ySq9ALyy2QiR8Xi!DAAO7adx3Wy%!o>H4K_ zuiZU)a%J54sj=hZO~)#CXHcJ0qh&CcOWil1S3i9;H)r z+dr47PuM%LdrrHvf{EDCi`MDiKW#EHGAYfmFFJbE=ZN*JeR)%PW~_O1afxnf~jxYeli))q~9-`E`mg~6E??>h>c zZxnE}xHWq3sd~Eee9O(+H>Fp2_Z&Yjn_2Yt{^py$8_xCJC;+E}jHxwWE?$u~&pR{M z`1zTe#@%A|cU7eL8XXi?Ft9RA`E$xv?W3pB?H>;Xq(OoL9BcbEgYCNdIy*V|<9B`8 zZM@t+c4txQ$Lrpp(My4QYE12Zu{n#r_xI_}=L;heIb4~I} zu{{sYi{6}HE0Z#H@v~3=?gZNE$y~ag-Lz3;({w3tp|rMNP}wb^MPSm~;FP?)d+YP> zciG2#A7*SQ6t!}e=r=i9EtgVv{+uqvxY}4VEjg3|> z)5Ff+cI>sj;J%-;NzqIOoDn#-I)N54>T>dymNF|JekSYQSloZ0XX{_v9NT;GbMMrC zKA0-I<)`$eV&mM>Exhe-PwW3m-?DI<-|T*U4{14`zy3}nX^IcVl#VY*nr!Q%9~@kYTcO$%YS9f#lbX!Whgs6Bpn%CVhiU%p=zG2@K? z+j34FrE{L1f{J@~CW(Jsy87vr&1V;1=uC8EsHyIM!u9a1!?z%10S;ZEq{ErZ?%ZOy z_%~s@>O_{t58DJ=*VRtC7^Ae9QT}|xgr^3d4I%5yx4r-SxB2;5IqxnN-g(vi@=kW^r(0$+CpU8bvP$Oj%=#?z{H^pV z|L#50T{i7u_WEJyGxyqyPsKt^3>tQZH=PtV%&CiuY2PgpaO;@dD-qW~6WvQ@#jov> zqf->w7#Kc2{yTsF^W>GQGZU_teQ4UBoO*86C7Z|bEVI8K_`ta!@NMv7>-WD{bl%w> z_L{lm;f|^5S60|Emw6ek^jp=K@YlgYIrP?FUw8kfpW2GI?O*N~s#FwT(Y{t)Ar4i=$K_utc7MO`Stqx(I^*H7 z!r=cNj_U>ef^QWR{M+dqzLvT6Qonrf+Bd$OZ*t@1EGP9abm{#o4&L6&xb%js!;5VX z%$j#hno=A;bN=6o6NkK287|%SZui;y;>X>kQ^NK0-p|Y}{@MRna>c~Y58fW#|Hf)g zaPvL8C31TT?>@Bjk>yjL#K5p4=7tgPw07;H`sx*7_cSK+`*#|ix^pS|^v~`B%`~~S zdCLnvan@C4WUXH*{zhz`--+s<3D-LwJysX$=(_B)pl3n9yo@bp$BCv7eVG=SmX93o z-u9lgH1;@@vB_X_FoKKW47Z(n>|qKBlSKnSjaQ^H~G=}CL<`@egXwrp*xoKbF# zgmk6(ztUIX!RrodTGaor-`sfrEQhaE*_%Mu_Z|;SN))WBEGBAOls|B6e>m4v^XNO# z_)=5h|DN5;EB5Xw(3|EeX?{5Pu6w=Fjl&+!#}943emweG|K?RW9W$jLXtXr$UUhth z-uGu>|CeuHc!7D(lidqm96H0yl%?+acFiWf_W0>Z6SW z%2m^^U*E}7psx1UHQ4%U)1pVBUjhPO>BpAr*8TDI@wwbDCZ%t8ow1*-n*HrgF zoP{Qrt{HxR_5JC>BVNpI|JF6`s+&CB=l!#!MVd=8*9NkyGALC3y8g!RTh*+pZ?SgK zHs^LeTrIxg$+P^2v9bTJUHf-?=jE^QN-9&QX`Ebrc5&awm$8MhX$!S_ynZBo@JzqF zS85mgo?mw?Klohx{WxjStyOPBKJPZ!_&ZVfY^=%N{5unOu{z#9)FxVxZJ4u{`MwXk z38z?_W>J0hr@)naR^DTRqk!{k^{@@r^1_q7Khc+#&3$v1% zb?jVh`r9sDR)z^OlIbsQ?d)IPx$yJ})oymH7q2Y)Z_n;}RTAD|@$kbU#oXMlTfgMq z?v1RrZ9jki7^nEsf0tahU!Uf~!*IY&_v>}p!UaBoKaa03!G+DFf#t$kjZPwrYII#~N(%x<~d zVm9Ycx4T|u+3UM|{pJ6wyZ76z3lWrQ;}Mgwu6X{$-f*sa$(lDau0D<1dRsfY`0QV1 zok!*CZ<)5l(_P{{EV~wk#z=QjSK$IPZpS`vG?`s!1J8f&zyaHaqj<)b6&QV+kVt@n;kD; zV7QcR{mtO;c9$i4Pwn`*_w`Rr;s4)5{Ol8w`(n)Ilt0R3Yz}z&FY(m@+kd5(z7+dq zzuQw&nLhPoZ!oW!!J{L(;rD;*C@xO^UHww|-M_r)wR*B1VII>NzP@tRt^NMx;_R84$Adp@exLVY@5hfPM7RH}vlp{IzptWp z6VkH+d)k@$J{^Dl93*7vhHeY)$ObzIfoD!w}5ht~rCX&&x8 zel$YrU+ZLtnHARpRMS-&iZ^#w8``M*RA*cH&oBn zx>;g2XOVZizQgo;2WOetR_#10Ya4d+OXf9^>#@uOH}@KOZ}*QG9$y4D&4!k?;6+_`?(gOe7@zV^4%{cXRXfs-LgK9dGZm_e}Ajf z_MNCX$HiV=+t@h!?x*~>zM8BrL#6lZI{athvU6%m$@RD8&V`&@yXJS%G2g`K?Ng0? zbW5(xsj9BMvhtl&^Sr}%j$X)P^~q*Gy^SHK{p!Q6JNKv6gy`n4%Cczv$r^FqVSU>I zE`8a3YwXhwo^eR#m2LkQUoSMR=u3tPH-kdP)*xoC33v>HWs|r`mc3t^SnrdTq3_R* zJBCfWH(Bpj@2iDtm&f0{f8gi!>AiDGx1aCZJHIM>Pnd;o+F{LoH9zK9tO<9|71;6h zRibe5lZvM%b&Yo)D608$RrB(PuK)CO-Ql^ld(>=PVk(e^nJUk{MFO5vs@j|JM?Rv(O(m{_`>QrF)4Ye2anIc zw0+Bk6Q|F)GB8Z>@MTdD;JSLn#euVxX9qQ*k0RqM z8J<3k%>KDjMO)ZqT7nbX9L}@Rhb>EAP1&`}D%AYdt5<@8f?k;x*DuN3d85(rq^4p@ zluSa1*|Nzq-*m5JJ~nGYG~3Ca0<)Qy$=-T~u{v5_SMTNdm%`W7Ti02AHqfg%&T{c#;H&s=G2 zUTuBi?7YND|9+O7xn8(X`rogAwc5{Kt$O)7$a7Th|)Pyp!7>r&9g*=DYjv zTK*KgJGfUlep_dRMdi)BNaKT_-7eYW0TKE-BX?Vq_n^JVKwYkzJy`TSPC<(@^WKfZn^b}Phe&ZPf+bI$5o znO$sIrV)7J*78Rul#fpiOtmk%cJxsT@7ya{U-Yw!pNIP?FEjala%!$|)0frDB3C@W z^7nFN?G?E@oypSvfAY=$>AiI@mrJ_2J&vpJ+CIx*KIz)JM}_NJoX;G7|EDG5;tRvv zoV+IE%PGtOlcr1ZZdK#qH#KTY=R(Omgv8~108y_Ke$Zb>QLI&fshIj`wAr3)S1mfbjU zWk;V}Ky1+gF6M1pE_nERh?xiOm=d7E;&v(_&iCZ${09XNvLDwhw+Rqw70k-mwMs?R zip!?CagC&cNipy9z2EOy*ZkPf*LUvZWc9*Oy|_IYSy@$2PffjWAs}^6SI0R)iP>u6 z2UgGdbAETm59^Ta4c|A2%=c`X|Nc<0@b}Zx=Y{OmEXjSn{OhNKhf7%AOg@p(m>;dq z>tBC9oIh1BFjef|zpy)VWuxCk_(y)N43C!e72eOedjG3go9jP+%!yPz=Bk;-yiexA zD*gQ?4BnIe|4ljbXvPHj|53m9Z57z@WyXx~b9>v{Z@pOYa>nlRxxXGS`u^pIdiVTj zo`0`u)opoezbBp+`=V>NTsL+0 zx}{=Mo*k8svdL#R&8w2HWjL^Yovy6e&zck0{%57)=PUF!qC{Wy6~dy1&*i9cMb(T6)swzQX(&-?uQaahpZjE>poKVN)& z(RTi4%lXCUUe{dvZLH63rM1nG`JVr)!z=g5m+ifi=+D+ae`@HxIV-U~=Ppi*f^@))|&uQ{hg&@7Xw%_;7{q?$j zrk%ZX*TE@El}~*?A6uihaKS2@*H2qR>)a<*G8p}J|Dw%zv*LlP;A$n)qPy$dXRSNj zbGyjhq44<0WL5n?n^jB}HXPOaE3viGyTa~f+4rMQzJ5u0q7+tJ^4J})??LVndonEDT;S0I1jh~$+#=L)}-M_s2Jb<6P&!fU%!0m>FHTh zx~KSg-}2?4y@>S}_AoN=`RPBtXeWADB6-!83gwk9k#QxZ@(c_DqN*xOU(XdaeVfSf ze%|qLA=dSA&r04V>NI&u&CXO0-<{GS@!jBnas0j$!JD>TUd<;vdF$KUBb8ru7B1U5 zF)uIqXYPCpbJI8LH~v?N$hX{lG;}T(gG1n(ORhQ(kIb4I9-kIkH~Zj)-QPE@SZ9$K zWLrJ6Al}~p2@`|<`-ks-=9Mk0ijsPjHLEXL$g=fkD+|L!$?rclH|=fq+^GkO zH@{=qlpQ--cI;?*(;?itcE!1^p7MUFCswSl&JEZqen-Ey;APazxxWjxzSZmI}XF}@l6|%=SJUG}sJ1&JWST^;IwS!gq_tMB$->(G;hiqHfdtV?!#CB)4 zdM0nX>HN3uGwPRrbA4&{{>DE>`9C@$qHCv3|021_^XTgu(M>|D7(_%K{=UmKW1au} z4&Aw;?~cvVZky$MDnM$@B84AXCl}uRelAhNwmxr_%(Jp7%U9m>vsV0PRXZ!YOH`&% z@Myu)nSoQ~w|!YuUvDoHbM)_rv$cHlnda<1u`E(Thry$FZYPygOT_hJqNA- zoo4KlTu<-!J#(H}#?6h-rvC1?CAAAaeT=T39enfqv>QLXWjnUm-poF>d}q17ulC(H zCXb$7SbbewGGzIkPa9S)>;CYTlfAt=yv5fv_U6k6pV$7)t}4(vv}~46kKoeq6a7|# z`_`?`@!jY9#Fbq)zVyel-TE`u)V-f*SFbOZs}U+`cD1DS%t7(nS$gTQb5kw)x7&Vv zaAD74xpUSljJL1-wCUXJv=(v+uQs5&u>gVJ}dhk14CTgtl&e8Qo4IZxU?7vhr5dudq~Y(|p; z!h&{t@(HA>sxH~FETq@B`Qg_$>^@Z=X6YtXKRYvXon+CW<1^y54^4gZ->Raz&Nb}M z;n(R++jQq03ER1UpEbit9o56sG^y-s;>ifU>_{&?_=`=(&}vv2Rcm>C{Cd45f2 zQiu2HQw}Gmvo&WHzVr*aa?UQX{BQMzfH&?6x9;q5bUWvtXCB;EoZtFkXXhJ%|7&%& zAAP4b<%jL=yc0WHu121GU1$=a*HBkq^i}p{bB5}o4G&d=7%%2+iJZ?+zvI@uz17hP z_ZS+sHp=L#H=kzYlm2n}riV}igF+S$gHQwe0cH=c7uWrlC*~gC(ypj-kEd?R&8@pT zIT#q!va?ow`)`OiPC)p5sc*55p`>W!z5&DAaKf>WOq-B4-u zTKkUik;>h@@tZf;uDfG-CM>)&r~4UhTvo#n4pmTzdKcLiL2UfZ+m=t_p!gW7ypOJ9jx71-FLrn_WH~FH&`sy+?409P4$s zl6&<>=I@6J|1LZVIG1&9qI>4isj8X%eE#OsUAq2k`_<877wu}+@;7NICu^++3)97G zVtfo8UE2!Ux%(YseMBmRt&Z1GOXI@e<5pjkFK)L8JTBpWpNvJ+`lgU=#=t5@m*IJ zJ~*)C-mzzXm%pdq=-V)vfnmq|%<4etAXvmeYYLZ~kr&-`5+jZ&`Bx_WAp>@>d0)TkiMs znCrQ$V|^badG)6iSpT``yMbFR_i6dlwetTHdj2mo{MT#4;P%?4=I+vmuV1m}K9Mas zYrW#zk4wjAmiDN}UKc$c8*akUz3%Cg-Pccwy9Tg031rCefv0gg?%zFhF=Xnm_ittt zZq}=}_z`w?8~b6G`D$uh3~x@YTBFW6f8G7-6AvGX`;nD>dg1vt2Zafh!MycvHzk%I z+)w&b%oEAx|r*&RD@n~))``niv|IIG^zy7lGlJ%wK%|+I}kIJGx z_5Yk&AgssD&R}wNiM&e%d;31S%4bj4DnCDxvV?^|O%^tjR94G+PEzog)Nn@_dE8Vs^GsYJzZ^s z_w{KhKc+tY<2)(){k^$=t7n@F<+a=IyLX3w?YkZa28YT&A1(ddRuygPid}P;Iq!PT zzO&jDML8co$h|5m;@NxevH88TnRg#ap4h|4&|q{!oM-Xgg=t(W?+=SbTj?2p@i60L zIIznoFs{-~MEb-Y=Vp}>aob1hFM2$am(#g;^t&QEL&U>-Mw62DH@#}tIU&oyaK)|p zs_-e_|^*`NTsQsu7-1F=6CN{P0Yr3MNj_R&`GA*R2OWPv; z)Xn%)H(j5;S!7g}DEaz$vy-(4s5H`D^T^ESLv_+NRW)06%RB9IHkoAwVvG!T%Afb| zd$;Ssm(5?!9J%mu4RhRPzZ9XhJNTo#c^MYGVsyEfxZtFD-wX}&s`nR{%-{J(Nsawn zTER~(0gvtWp5{yJFY&%?zO;2hgN_Uf)5U2Yg5KRfZSZm4<29<9mrhpvaVl?Rf1dwj zGDFDW$m(sr@9+02YA(Bw{3s&&-RboAJJxERzO|jdz4WAa*#7>_3!B!=``z{Qu$8yx z>#Dh4&-3qve#-gZQ&+|HXwjrqwl>>sbd+X)^M7(D%J`B`Xi$hx-1hr#ggfJT*F6$G zyyT49`WY`5ELU(lT3Fc6trM5j(0Zo9_T^Po^^b+S_xh~YJ!!hMv`A)(l*8WGy(`?3 z?{qx={Vx3P86{aCA4NmHsKS1?QsE`e!tc&r3VuN(k9mXtta+wt!kOMYRZZ&ZAWL6mKW`~|9790Y`*mM;06Eoe4m}8^80MO?X3vM zn3$6(SB|mQ$gpje0p>{g?cbLrOSoN)7CQWrV;7_G*Qf^(v-OIECh;sj z=&iSG1LLfk`)-#@g@3Nv@VePSjE|}D$KHbs49!-HCt7O04}Lw%h{ag_UBCzBmG^3U zql`Cf{`P9Qw}c6{EUrMoxn3!mg|!4fEG<<*j8P?z*w z{rLGk&lwp$O!AvwbNBM?#bwcJ-<(%C#;~%gdH>3`$?31!-tP=?_;-YV?GmOrIvN?7 zi`LeE$(6o));}n@Te0uf#LK2kkro^*kIWk`-Q2hS z*X!Ww{Pd7b-a`JYv1b%kYiVakbqO=&E>V42`fL69();^sO%|JOHo9Fe$LD(c%9M*o zm&~5CEwVgRw0T_@>&;4*iIpEO@J_uMJ>4qHyZfY6|M$<6c9$v6(!5|llw}2JN>u#+e!YJ#C)Jqtj6kW;-QSM z@1Ne;vFdlu@$_o{x<8%D#wWr;#b;euTPVx2(>&Z?@%mcN6~`Wn_g$JS6#B+AZNjzX z=JK;%DK9N4{(hxiKxm>j(}pBxy=gmpN+;!=EI*iGBGneWLS)sBO)GEjznvx(RQKTb zzrbIYebn{8UYITxx@G460uAj?my*k(uRm#VFyD3gRq$%JnTAJR1kGhXFL7D*-^K1_ zi<+UK_gEAXdgTrGif?XYxO`*hv{hQiCg;trwD9sc?eW;uwBhN-rB7QkH#$!HzO3)o zk4>hmwZFeVOfa$HZE#w8>7~hm6(L;HPqQlhE;f68)Js^aEm5NF;;!|*`r0S-)meZ2 z4+`)w2$}lx?fw}(U7Ioj>mFWbl1g8pS#N!eDS3x)(K-9#M}nKRez{~^T)=r)WdF5m zp;s1aiJy`ZSvOY|op^ zAs%WVw=-dlU(k`W*GyLa<;z|B4e{z$}yy;U<*B5V6 zv2NE~uF-EEn=fUPY4QBe#tj=Di|;(FZgKjGOviECMdHOk<2~IWUG7qor zcYRh9=c~`GZob^ZE3WU`-uE4e5}pFG8uunuF8@DEN^Sd#Q@fqS`XB6xN_A6x{iVvJ z;(prF>`lx|vRO722yh(9=YRjU^T6JVFIA_y=IiNwx9zGtTQZGN!A>^bp!)gOA7_lr zHXFSBv~Ge+rn0iB*XjJvv)3$bTirkB(TojOzdM|HUKDoo`E!gYwm%m$Ux%?^f|H7?;$+>Z|bN6e;)Le;(o+wr) z{_X74cEUVJ=s;=#kYFYf>B+o9xa z_y1<|5~D?nk3>(3jXb*4`{Ze_OE)Yx{$}>y^VIb3zWS(LZVKGXXIYmYxWE72{P6X0 z|NimD9K8R3vi+|!94^*Q7fZLCxMy?4;c&uQ?rzvTo6URsBeVUd>nwKsYFRwJcBzwkY5Iv3xBcv9ytXJ_k|u1az3$cC_g6}8 z*he^f?fbpw`88{&@QCi3_i81tJ0EY^UlaKK!={zb!?|jX9sW7_K+YOHo1AYFsb!_c zs;>3#J}!2?6n;aq`}B+IxUk5&yw3?IrPfbXTRV3-I!;<@xdJl77i#DE8t>?SB?BahvZASHL{`0#Mzr;mPD(2%A zI%v@Ksb|HjhYKZ=Z|vA7pKl)`@ix;l`(^pU@ADos#?QGP?(Memc>KpQN9*Mo5AXB4 zXMD}~@^2KnX}NlS+0{u`3oP|E8dOZ~{_=gF^3{s2{}uP*sw<`by^YFpS}ncKtj>8s z;Fl-s<}NXnxmL4HKG84tSMC2DCA}Hd8zL{O=l{O%_s{XjRBdJ%S;hyqrWUO43_j)M zy=rmKmNW0aUitS=KqBJ&S-}HkKR+F4IKcKyV8Y+mCI5vo+1K5^r5 zO3e|&XCLj`zGiPp;oI?@`TA~yg?G1oOoNS#d_AA?mU(Zlz&wUNq5Zp;c$hD#w|;TH zdjH9DO1IQ)YZmFWl{kOo`lzekCnIBZr}uw#V!#!R@aL1f_#7wLG}(w(?ONyG?x@Vs z^hB^_&JvHDH;ZGt+f1VLi)5{)ynpojx{cN)@kR#@<@yPg%yaIn=(V07dDi;U+KFt{ zK9cA5=H7oU*vhLfZU5OqN=MwmK2hV`#5|9Bk$mfUc^>oo4xKPe=4?vXRLSBfz;ZJC zUsmafLyigpPABJIYCqf^pPVTJf9UomagtXbP`uWHsl{?+v2%Qg9yDgPEeuha~` zUS&PwRoT0&r@NlKu}=GJE1b#hma%%}%FNwsEyXNS7r1UeXXRGAhiP4UNdB|g-!tAf zO{_h$yX@VaweI^LUjAn*HTR&)MbX9|r{-U3cQ%at*>qIP%j$KqQrA8!CdHV5FMpFx zE8WWKkYf6Hyx`-Vncm_~>)q${@2dKEZR-ZHmJ4;Y7855<%*)Hm*>*s(vc&4|y}i}E z%f+@xs~k+7mZEx>JMQNj;j+JHQr@nA>}XNQ9)9#=ecJv#8>;TCT|0H@QX3(LRrBUY zzFM6rX188@Y3sc2`s=^($iII(+qSdl-KqPwTKf9)x9M$a$xnZ(X1{mZpD%uGXI?8S zs|GG{SNQQK@^gUzXl3G$Tfe|V;p#YLxSw@pm#*N^l5pSGB<>(_||FP5ZNw`o3NaEYAR;e6oikLT*gvI84Z z)bIV%pPaEVop-zJ_xp7fg=Kv^CEPaMlf7U5m;3wU)h$I#i=%(u_3-ko{r~6M$*saw zE4vq&DX=`!KC#CUyxRL?x30{-iNaD+uU@{Cl$4BoUGe;!tiS*H)6@0;@2Gq%A@PDE z;C=qjTp@*oo%TQ9#&fZl$x1}d64;bAse5hbyt4GY@0!hzgiK^e@q1?8eL1+){j9`2 zSGSXwg4&rFc1$|Wqwj3l7Ar4o#pWO;DkiA=b&dI{^p?IUGlKNzckXpDP|%)tTvhN? zmX=7*lcn~%3jTeX8@}_A?VjuG>kAzxUlr(B|3~fj!#@&pW~lzsx}3kE-t9&TU(ZW6 z_06|Gmd@C)#`@3iH{mtk^5F1Kl}r0;UvT{Tv**k0 zKNDJG{LlS*CEG*?VNcVd0?-A}xZs-kSH3@?;Qcz*0Qeaz7C zScHecqse_j!0vlL`777)Mmk0|GBGrGYH4&OA5ii3_A=<*_A1esd1jzfD_HTFolVGv(Qr~tFco)9N`njjc?X&MUPyDyvr+&%# z^?m0Ltxf;A^}y1?z5eO8#gi5`~k z&~T$#Q<81xu5b?qJ#&QzVM(u^pW$bBH_38&5V2MJzkJ*0*6f(~&nncoinuBm7*Z-7 z>r^=#JWroUn6c#Ml)c;Ij~&0arzGqDt&MI$a7@zb7`sJeT|AV?hQ6i&&pI z$Ieym`2Arn*Ct!}hS@cV@fBW{#`G`wEY^?7UdrulBL-QLUk6fm!qE@Q3{8r%d?gA-^QucvVd3R3EAO3hqn1 z7Y#xAZ}R;4|Fh3ZGYD*ak*(ax7$~rF#q@pqmj3>B<5F2)$DW?<&u@0WDv{s(I#smu z;@9KnWmLFRDvPe@#rHFAJ7#t3S6R2xXU+ppb=K@!@U~lEzwMqWzrP##?0IgH?b%gg zB)9)U?8AdUrMFI&TQx5?w&=cLf!pqS#$R_PY3@fEk^^lZEMKvg{W z1_Q&L@c*+e8BA?q!V*QlEo8}h(&hYN`%={KxrM&*vUY0%jKcDVctH>8E;+hn>o2{CcT1zo!SXg}ux#lr{dEdCNP# zj7_K!o1@oazqdQVWc621R`nQHL!Q-h+b{nqxn8m7?Tnu)P7=B@3<9EmzwWkvp!IHc z+4<5JO3ur>PGv<_|9fq{B6xR}(`!rPgli3XUP2}l{bGNexlvoPa;inZmObV3IA)lw zXkWKUWUiLd;n)#s8OOm)nc)GCz8CBk)d(cX?{vX3*q3gujsJRf`L}y=AM@j1 z`lmPPrA-K(I#q>XLtO6ny&1cn^{r(o+sT{v#rkc#v+>+LSDfQ#F`0c9=euk7`BL&X zh4wGm4?B+q`}e<4>U55`kDor*bSCrN%&(g2|IVLlPVae{^!){E@xplvmI`&A>2A+k zai%Z!)e2um1G)Flx1N3JWKw*@V58b+%h2yP`=rh0{jrF7zq~ec)7Ps^t3Li{UHoN< z#)a%N3Ttcg?FtUEWIy{Yv@-l~oa8x+XZJ#9F_m#Y=fCyta>@@828LA^UG{Iho3i3U z@x1pR);>NgzsYT<(fgLWQzfg<9(S6@_R0D0^RHH${uce2HBanntIE2EvO8{VU44Ro znz7S@`lo9TFF)lbd*AGw4->Ep=+Zr_lN`(B z7@O`~EnIl5{kx~bFWuZ_cCXHQzxO>Bo#_9*H}KXSP!3eJD}PWUbn()!y7tP+*5&UQ zO#b|C*=NXfaovS#J!`Q9DeLP&p+_q&Kh>o039gmP`G%PY(+- zU=?q2`Sv{LTK8175T3&ZJc~=?rQ^dU#K#pkc3Fiyb&70$ZK$a(fBum(`@AcD4Qpc= zpS})$yjF|hQ&Gb*Ca$%d%&%3{Pw$`Sw*2D`nMb?d-wv36=nhjrSn7xD1|=`8O%;Yz8ns!5xeHgDK4NoAjih!9U`>ONz&#fx;Jro?+(`FSMkRPPoJuJ!*?3d{I{ zLzfrt{dYyJ8^R}5NX!|(N)1c|6W4v+p; z6|;OQ|6zkkE36kVhKHqgSn2xgGu(XftJ~K#4zDCsiWd6+-75V;?DBHMU+;IOc`-3F z7#M1vvue{&(@2Mo$llqyKHWQXzxw`XZR%l$A z9wQGIgSr0l03XLdnZt&xl{Wg?)7h;o7$PUlJv?Reg#US4T`ImFw_2&uomT6U+LUQzJEnHu_SL33wxPto_~n|AGJi zrR?2*d;7_ThK8rTAEUX}n?4T8N=tjT{PJVbi&if?_*k)y&P@2kqq}O&iZvkgqo`_1 z%cUnDn!@)!L5U0_gYYdiBt$LG$aZyx$-U4 z@|@XYZl~_>eDv__!}(gPiWY5uw<9ddR(4t}+9=1`-BbA2otSXG{+q(eHD(1dwNFHj zx2)aAo@6(D^C`RiJvWR}zfHVy>vGb!2WQ$={5WPLNoX)<;~$K%oUIja7rft-ublr9 zW9?Mq>;hr`9L~z{Q#v)fp4SWRIPGCA$T0Jt@-NZ$9Gee|IzlH(?aaHb?0Y@&*!`>S z9bd)E=h%dOI%MzdB+M1@=2Cy)?CmYjC+l8ac=#o#nhu}8?DFsVi=lF zyX)po{8(b0{`K;@s7+FO$5qAH@{1<2F?1blO0NE;cE)^i_?BPR=gTID-M7aay@=cX zWeLi{__dmN6^uSo|+ zk-s~S_w#wiCob2~Tl~H_VPok^ykwMfrR-tx^qe>m9s!?pZ?Md41O z4NXd0c06>u@VhAK@0XPlZtu6MT0Xy^Ajq>=1Ju?I*mc%=Tm1ocdu~_P)lXGx+cJXo z+plQJv-bG?=)}2AubTP0&)9Fhx>cC1VRhAeYg5^8{MRN-dT;lB=hwaqqSx#VUb}UC zonCaOwn>Gwf2^ncE08P4WK;0vaH-;e>?Igb8o3<@HL0pYLLQxm5#N^njsV%#xB2)J7&5Vt4vi>vgC&}@>|Ep%*oiYE* zht5s=mu*ohKCoAQ$Guk0x7%XPg{R$Q_-n9cg`AUJ}BRA=` zHqZ>A;uM9?&&rRy71^=%vu@!rhwbOO#Uu19B6X7Os?NR?H7i+S&-AkSi_0!f@xCZg zwX|m@QoT-@Riz~rpDe^c^DT=Gf7<=!A$VZq&xP+lN*@%375CZ9DrV6HZT;++wTRKP z!9k%#@Jf3#Xjd%@c$#6+;|uSyS1N)BE5H+E4u4EqR`ItBZ+3}K{l!}rtY@lzPkw&F zIt{Obt}@?K{+-C`)fC#QXB*q$%Acj}O=Gy%m#nqw~?VU-@|!8nMb&6Iz8O zC4Y9$ZmIR@tv-ev`8LdOx{;(@lm0l~3}Qu3UC6_tsJU(r+4R_J59h z1^cc&{pIxiOwDy1vsWeWdLp-6bmn{IdTrmWyE6E1|Nr;vPhQn#<(mu)Z&s||FWAA? zI^p}n3pwWd&)dDYlMqw`>nCsIy!Q5Hmi;7W`+IyJn-hDytnKz_oSDnoe%*;r^N1kF z%eF5$l~%617FPU7f1!DXm?aaq`LWdA z>&vE_Kg-&_XX4W2bB7-;-RqYyOMm!vjapHig;kCoJ|}`M>PW z9B=np-yfzNZ{zMspPxO`<;s^m0VQwWdL^y1)sQxGkz#20{OZ_RuGe*U7HC$XxKH%RxclkY8DvTUpw%DVfHM4?=64)~?iMX=!V#s;X*hY1wk-MB&fl0t`!3 zmK;5*@@?)dJxw)U1|<_i$wJFQ!IL-2w-<7`eURGhU-|w#`*DZ=vcWyBudTXg_kCwz zc)-AL;mjP_`+0l*t*AMn;K|_kr}y^Ky)|!c@UPaD@w=n-`y#t>g@oHe@6{4tB%g23 z%8P&6_LcA3^39)*{o23rw%n$|4y~y(i%M_b`X5{IEiJ@zlE&4mK4tI{G!0V zxTEl7pz&102m9i3GpB#>zh_x)c<;AwnXOW_Uf_<+#zw5yCHHVJ?3z9E&Hdfcp|Qb^ zor+3Ir;-eBTb2eCaGg>T;AjaDd&lyAd##zMDX%5#(beJWQ)>O@zchY+bajQmw5e<{ zF)>a~PByl-(KhPtEqY!8ERG-E?b}iG`sdT%>(|@YRX_LqRR7*6{%+51ofY4Eb*jFp zNE&b1ma%D@|NDn;6ohJZmoYKy=rqq0y~(%fe--1}=c{gfIdkUBc}dOni_3V@S;v&GwEJ+@s-!#*XPO3xcW2mNVCzD8G^d&elaBksGlqdy0^S&b@7Sq|BHiOsw}^= z^?Zx&_s>z{%R#gEC$G#c{(Z3MX@~9mV|V=TB#M-(D0MR^y?%nRLgF|ZL)@cpoSXj} z-}z@`ub;Oz=F8SCvkoy%o-1)szd%(M@^sqKdxly|IaL7hQL7;&q?2q$!Bf(m4n^ld^EkdziZv&VQ5Iy%97&h;!$Wkn!?2S_Alrr9w)A!zyE#w zT+Hg))-{Xm3Xg}_tcR>M%Eu2MUd-yoH`VFs#~l`Zk1bS7PQOiNe8?U)_x7eI7d}P4 zUS4&Ek-?{d@v!!Zlgb)gJV%$ME{f(UT5xawza3mV@)zeli?seeHB-f*M{8xCap_Bo z-sjifU0r)?;+iX;KOfWc-*B@k?X!TX7K8c67uP&GIcHz*GnpbTnjG<)X1#yg<5lMQXyt-#$&}DkRZfOUatm2qZ%Xd0l>dMGo__J}=T{D|T)VOGR(*$* zE4IZM*q30OXT7%^JS6egtz@D|@VnQ~Un^ZbYAIQ#C79Hp;WH?$8+p1!-=t6TG??i_oMRrjPbD%jVRz151g zPVjFy=j#L+2Z;)~nD+0`!Z5MBAggxI5Ip z;QzbOUNL`RU`WtC*)4ZZEwbh~t+6#q`S|hU#}6M?wzrQD3Hfqd|4D)6q(?z4jxFyy z4r**rugF$iZL?fMdA-K&HJjcX+V(qWRY_#7;J+<%o~?C0;C|)QPWfl$%Iji&zC4?= z`sH7%hu>e%@T}zj&YELctN-xxbS*tcrhwf~#f27}S-+?t`0zie>c4BhPBV^WqY`>ECs!eZL=WPr1I`D>nY?@9EMZxyK5=&-)`G@z-t9 zZE@}TZ+E@k*`?f55a4JLI1muFFlgnWl!teA79YQS`SYizr?+j}c6RTy(~s?}zA`e% z*;F_z?<&}lBQ=$e!6$6#jujS;A9mR2G1%Oi8=AkD(dXPHujw_Pe^kEwuJz~9w&pjH z4`=t+y?J+Mf8J~p=qmkv#lOo#CoOpB@Z@=&agOX{xjkvq&ENi+^YXXQs^@GEF3nxC zVs5Qckn!tDRe6)VR@;S5KKRJ%TfOX_zgmXxUj1ve-5(QSlX=%!%}cdI>`-;JQbB%6 zm1pY3+1;mW`;+2~=cY1rtP$8>`8#j_$<+x{>-Ox_{E)NqZUOtxup1Vjl^aG_cV(?? z$llFk?rF2f@=vg9sNa`sve&($FXkwqEQh&oF8urGn}aiX13&gItt2#rQmAhi$zdLM z=!4?d(*pOTH!N{}pZmeKn(um9p|QW!mUnl48>RhQ{C0QVl>u;40AHA9P zvHU5sShv(?yYPezDbTXX$%2a>mRR&PZs-Zh?yY2IC{$d@Fk#XUNrsTrt-dB}rGHJF z9;VdE#wy@iKV|#df2Qnx>by}2UrPNuPW^bmv8}z`Rd)WQy>qIA53QTcC-vd%0_jPo z6DNykZN1eyx#WA@we70*>mF=)^<&whi`{Cv6ZUU79^2ivI_ma{+&$&*nU}XSu6=9r zr!k?BGjwxfFwfH9_kG?Kll{M3b2xleK(}$x>x{x%=_?K%j=88;d+h!02l?uZ3_CVm z?pRmsAhi z03I=!+n+OE)foR&l04n{m@PAO{ljyeUyWbw-B}fPS7D-agYmL>Z+n9cCv90@UK2i^ z$U(bTr^9Lefp+^>FS0V9UHvEH+a1xeQ}a|!uD)A$ z`h2dOPUP(6tvy1#EB`h`eSWX<{)O_1xoiv{e%jbZbXvk4h?U&lGOY*q2{*VUEIFNANnG<2qZ?)`XUSnE7;({LKHMW{^>;$(KIpo!i&7 z=0sa@yPh3`hT=bQp3VK=7Hch4?Ua&uevIir>0XAJcZA>Ee*ZV`6pQZTm>Q3B#aYbU zOIIqK*c2}KJgJDYtLpv7=G~nOdsrGB{=}*I-QIHPh|7J^l2h02E$sAuH8=Ol#$7uO zXgVc7+;VKs!_7(=2j`s#Wl&I43Ou?>KzJep!@qv5u-5&@=eeDcW?+aZesip$UCvwG z_u-nTS68>smeK!Rd1PM0*Xz6Ae){m^*zzwEY&#`+*N1P}axt#BEdNCZud-?P|J&d8 zZ|9Nq%Cq$k;oY8lyn9*IAKQ!Z@80}k^ja1?eMd}`(R=x=XZJbxrfAvk@9nmz^FLVL zJUuL1Olm17Pnd4q_omBR1Rt|UmW3`%xyMx>vEtV8IgMweUAz~r;*Aov%kcesMB#q+ zyGHBc+i&#V+VH!l99h{U$iR?QeVL7c;lQpRM_%pPwd(V#)8|%8#a+6Z{hoRKUek8z z)xnF-F8hARmuc(fnCVmQM}(=YUZRlq%;Mah#Cdm%6=!^D-dtzk$jYFxt2zshLsrebd^yvp;$};m*+ho9E3M+(=T*zDwB!1+HuEkn(vU3hlDbwn)x+LWBGL zu;`SHx1TM06XaA->2z6YuXW7lkPGV;WV%0l9`?v+RqWb1f4-gDv^eyA`{%j4=56%9 z@aoIaXt#(p(+nj{>hC5^4gKycT_yb1EcN}uLxuN>mus=jk4t&E>+PHu>v$bEv;UcV zcXceLgN-(&etU)(;r^*s46m&vT0TX*7_0*BJC zcW2f1DhRVTIw)|n?|M zYhUhtC~dj6ifL8Q`A$Z4H8ztibyci3Kd;;nouu5qBt*PVA@K=h56YdT{l?kncF6vF z5f<$|aoeZepRTPxw&rrtr@OD8{NAg+_$yb%q+176WF)?r?VNbOsd?$C*}Wg_O^(T{ z+O!B<{FlA*uT;gyY#m+Z%O!2=`R6YBdb@n>uDMLx<@1UqUtFvF$n=_3zdQAe`+Cd0 zhn_v(w)%m^y)O#f?>>EfGDH2({i*Ac_ggC|e=fdt{CoZ@%Wp63IT+sE-^sUD_VPi` zeU-1w>cv%gmR~xWB4Wz3D_X+P<>zjb{XIJ*X1hN)Uw3>w(QrcppYqwiUP88%%qmEu^eP(2sJ&st55!(s%as2sHyKH zm7hP~)^A_`S+?{GZ^%^>>Afxcr_B;b@m_0^FTml_{>1;~;e|8S)EtbuDY#!jFWvO{ ziN%)gb(8Xb)oo0zE0xul^8Q=zgio*j$Op|9KX7zeb+W?G+(miehpSq@JnsqlVa2n! zH;YB(U}~sHUEObm?IL&BB(L9WnsvgnX3F9JkrTf^{CKtJxs2Fs7KR7U_ElH-M;$!t zBbL4J`49H1^A`Rn{M@#p)hKa*yEQ~h2nc{h849`92R4wv@r zg||)|%2cWTlQ(bWvUQ%5RPGBfG2C6(mi1~@(;x1$8m25vjTtBAUutj8(4PFf`u6_- z=KpPnX3ez?HCoA7U;OvF`NMek^ABo+oS2haSQwhzxBRNitn!=uWfk+&Fj2L8dp?qGuUw`qvS{qdH|I*(6P?g!f7hgSnwjfrp{ApT{=6VI&&38h=Rvn%9 zn`hH|pVRe)uWzlc$-6jvdZwD6&`;JJA&s7Shv%G0{kZDU9RK`DUIDgDjShcyv|f(* z_CvWc?e3p%wLwk0+QKgHv^_NwH005AM%rcb0ZretsYm7?4SfH0ipe~t{-57i1LnU| znYTkQ%$7BF(ZZ#%>sdeko!#<1|IzJNjW=80&$p}oths(i)6umvwY|cogirWz_0U1< zm$OPI3LexrWpv}XmXPpuv$tyMUEZrt2T$_ac_1ZhqC)G|6Pwqpo7u-B%Wf*ny!FT* z6FqhPU2<;#po$y{~}`g?d!@v?7#5#+~4o{ zV7CQdQLfTD%B4hfLE|F{dTMtjj-C>~Zr? zw2V~B-czY%dvse)`(_3PQAwc%Oj{h@pW^oPZCSbM-`Rjq=A7%l@b+Y{o!hqk@T?n8 zr#-pKqoH1DBiH})<-M)!nrD6`8*nt8e*Dp6(u3PJGiJ=-IQe+u)!+6BNskt>^oMV* z;Pd=cVI#+%J?;6c;|E-hxOm9*vpX#84l;Z&Nk?t6`nu%Ysn!2ov(jpE(rg$KzW7Cn z?S0!LdQroaWl{6xjDL~Y6(%kdejemkfAwmq{2o`^&u*cylaD|C*gI#%>giH@xmh9J zjhavyeD?8M0ecC*Ra+kGx+cEU*$~NXm$;yZv)fOEOK-&wk=tL)!{$V8ee8B4o5zcj zp(6F$_QXFdK8BO+>XWX1lb@@#WO05#_U8{3d(xsTOubi3V(CAgoVq;K!1I8M$(lL8 zUYza{c=`R@-|2@K6*%Pj-LDz8bIA3xZ#}&pr1EgZo?XX;uIZe=n$DT#YT2&d#JoXE z+fs$WZFw-KoZj;L)h&7FKTUcx>Cz(qkNWq-mmaeXy;AT>t#hFbXXB5@Ix>zkvxJvN z)p)M048DFM^NY~JNN?Uo2M+P4ACFJ}mB&>*?dZ!T?+sF8FWC2;`qQZ6@~?S8sy1It z{akP34;(f-Zk~2n^tAlv+Fu1X%+t%hO|t?1-{>Q^J2uqdtQ%sxO1QH`BP>b==hF-VS$;{ znm-RyjC3xF%W*INXeU#Z!t(a*QvPP<>36QSmE8Lv$-t0)@}YUpytU`bFQ3|dWZ#oh zWwPItw?CM^o45Y|jMl@eU-~Fk*vQ4zwj^5c&DnI`GvBV5k-=lqig$-sCNKHW;2t7v z$P&2xGTVt+htn$7?K6!0V`%4k+HG>wj1PLV*%?AuD>D~8x!WxMl*cwV^`@WKsV|%S zuRKxG3ycgr__$M%o4xVJXB`>Y+U94ov~~9_xyTdN(AxZ~K!C$#_Tj$U1_$4FKHfNE z!#|^y>CgJ+nM8m7_>*&$#fN+EKYp`Vv**{1$sEBOw|GY{p0|b2Yt8O4|`hL z-n?m^`=?b~`>mCryj1!6b^c+t4H{N0Gisvy#h$vox1DA3QC|7f`6@RbzBy+VerV}j zVpp8m-uU?I?*f-~F%zvUc#kj~as2-5lR)#0O}y+smy1+sHFGsEHHdh~%-7l|e5!_T zQ`^pMVcX;-mby)1Irz9yr`gf_{1b!A$%p-qUi%t$x83>5$1}|L%$?6>^-h}=H!H1j zomu^ft|{(|LZUzZ#lGYZKc#=(n=E-}xjX-!;wWjWt;>1X z5}rsVT-hbPwO*dj`0K4}`@`k;3C?%Fylwu5vhoKf^hzG=`?bCO>8uJp28aA#Wei>K z9=%v{cAE)<((|wbZ(M&bx>qY0xcyti&g#=F%7qEBpMt)fe&Olc_4v#D*XMZncDYM# z`+m+-f2$O;;nOQ7&s|?W)^}U;=ITnn(ujs?$X>s-MzFC)IzuzTLXIzQQ5s>;2m3QK(lQYrmS_ z>Sc?M)O~(t{Cjn)^R<^BRwi$`@_O3OvMIOtE7#TW#5nHXU32sJmOnv!dJ7lirX^~$ zf8^MB&TQ|-C;cyPx~4w$Y0^?#x?ov$){z61pvCO}T)3ZqXIZ#8_Ivz4f& z->KgrdK%C6S4~}p!ykyKL?KpWhjtPP=~K_Fn#W=qk7~g3KT1Xw;j( z?_8z!UF=oh*|7c3*5sv3k(yXqwCuTEQmV_Xo^?yj|4Tl6DtF=S(OvTxK>fP1 zSNnH2v%c`%XHhbpC#0;o89ctVKj`#xTpz2Hw9hb^Whb-4w{(HznplR_$Br1zv9YW_ zG|&70H|d|B?Y2zfDwyZU$S9=yr=$0kfxGE*&?>uA&sptx->XiRvr6A_Jbu^5r8##W5tEaBsU3JX-rp$Sl z-oMS>DEcISnJev}-BnJvJ=1^hdo|nt?OxkQ z_xD|ze~tyRr_WQt+uQr*dFMP{i(31uO+x#tKdm^~{UwfNxAvBjA9cIGKfEwEY<|(B z|8Hz6j?K_3>yI-Kf5rLcfW}_ovhcJwrt;jCQYZMo&cFWp#JAHQv#X?-1Gf13O2)eE zI+>YW79OhkepSSTx$X@n4CWu7DDIl-c5Uqk@uh!%pT44{d}43spV+Il+a9;|s@q=+ znOV=Y_TGbCfwCN*9xasC+MGPyDl3?w=lJi++~QpVXJsDhc$l9&R=RD4-kk#8_Xn=7 zi*;qt2sx#%zi{@Jf;#>avplW-L|SRMJ1YnrN_!Zv0=yMGqxgmGbXo2b@dnp}wl=IY zPg&Uhcx|`QC5wclq@)=)8X`ZxopO|+>fEeX8(yyeA6IZ^Zj_bq^1r_e>|!DwN*Ad8 z$_?Y}cAup1DCnSyqm#qbsXsuw@ZL=QX`E;vDVln5(H|!!28P8KGZ{p*rur>sbXyv< zBPMTasm0?jcXL1efBo1XcVh6Jg9}Zs%~vRA2nd9Y!=7*SwES7|&-Uek$);P~{F_gi z_HEDNiH_sD5aO`#X`;z0=81nTXMasv%2}Ga)_$Vn&!Jf(bgiE9^9%ETUwa0I1AU*j-^+Wn(3^G6!sXh%8?$RC zuFbuW_uNj#=>3=Y;KL$iv6beRJObzR#OL08T{t(6hv#tC^S}?qH~hFhRm6qq@s|`Z zYy$1ROIOrCAfu4IE--kih;dw5#?8{-k)PS@ET67xGJnd)P!*<7$|JP%!t%P-QrX65VJ2k*}^2`MNjaAz4meKqOi54A+Ci%;f`0jq6@DCviF_Z@F>AzX5)k>_wLJQ z@JO1QH%~b5yRxEU(&Xy%mhY?2?fqW+zPe2}{y*CSg|B>DUa*@Tdt)WSaQf`stGlkB z`SN(;)awhyvaRNAoM$QHw>s?ow3H1Gjpy392(Y9UY&mr(L%yZlki}7_FDS6{Pab~) zXZM4amKGV?sw)#@*8KXn`p5FgyVmJSn?C%0XTkh`d%it5_wwv~^WWuHckJ|Rz0oh= zqP(g8vDo_kAC@?Ld3NyN&Wjt5tT3)M&-Ja-Kb<mzB5MPs{Y){*tTql%i#*uh|;6 z#mh?eYhFDg^ruXD8hdlw`(+zy+tsS}KVB4f_+#{k$oi-09d8)7 zJa@d{rSSF4jL>=ymk)PEFV5Dp*A^4E-Cb&-mh|e{ag&`d*Qc{M3M@I6#3<)iSy>qo zG2@5{P~i4UajxiwbEH%XK()8 zKfh^i;oW+ci#)fjcf_9i#CTTPM>X7>NTF8Ru@8g=QdLYB#! z`;4ipb_)14FXJoLt{2~y_}lNc-0lA-_vq!-EX=QP+Pm}jwC`JM>sMstuQ2^6=eJn$ zx$2jfA9Czt-ZLeKm>pi|62SG~4O7*2oz?$t+-S+z{o`Y9OzT%>^*{5(Wh|E{o}GM3 zz*d=~Nx@Vk>C_TV?fS^*k53DNE~y_p$WWl8S$Jhf$D%_`<^2KGiKSr^75Zc>h2-S+ zmA{X(ZCf4r^>6vte!Kd6%DFp4=6m<#9)GrxkztKRLcVLn#)pYzKM!mxoKiAr*5qz} zw=KWCwmf)moBV23Wn6H6eoo|%%h#SsUKhFP+k>ND zYF4+swV!QPe{I6DZ7d8^Y^^qZS{~0AbE@KWQTA2+tb>0H8NabG1hD?k`I~s~nea-> zB*(-3Y;I@g3g5dVcXyps_aCn{3pQ+c@Mh)Y7-`3Zgawx-PS=kQtLBuy_5b(=!Npng z(z0IESy(weJ@i4&-~&(3+VoXQrxX0tALKT+zMWEk@*aboz4N134zU@t=PgomKOtXc z;l=AHu%t~*{RpK`|q6Fvu_Lc^fSIcif)`q`OP`|+|qkiUw=<&o6aAr!^rT-^-_4^#pSQv z-tPGF;NH!6yOVL2cE1wzI2o2cpYC$ZhBInjjr!YfCw+sZ;_c@Iwb)9p%$;G;mb_0O zZ^Qd|;a%no3B3PzFFm%Gv0=Zy!*9t8&JBNqx0}`UUkX3!vf|Xz8(W^O*=F>mG)%j- zE`6p?gj#9X>_xMTCvRRA;$!^g$<-p$m)GZCy%xEDbC0&j-VC32DxoD$XDNyqN9{ax zl9QXeyTAW>`a?!04F!e=+e;vzvk*Ot`(~_!3du3l0uh4{u8auV30`ppYWovOuh4TkMlWrJw0n4+I|d4;2hf zdUQ|YYJh3$sy*+H?Oq=Hbd}M>kX$=8=dC4bn_e$BRQq{lgI^w#VeeI|th>^-=TKN{^zwYm%MT-s{I&|vPsV}D!|9|sg_))y|`ZU$vX|?Yy zt#=*#@B6Xi?%cz#uZA9;BXelq;hw$X`l^3E9bImB=eXzp?iY7;Yu=tsVz~J^+C2UW z@0&-T&$+9}FgO2E*`9xAYSwzT^`*C?~h?i||co|oF~;V|JA=dpqbQ7>3SZ-j=X2uj^OW0ZQd z=jpkZu~oX9M`wh-H|<>>@^M~yLKmXpg+~}gBO1Tt)p^N4j9#^)<^XDeEe-B$y)@UfR zByGXTq=4G_S*I@bmQGtFa#dSXV^5X2OVF$h4ULw{%U+%jE$`t}3aOg1=zFA3T>6Y+ z|7{Zd&%eC9{P5vJPEO8Mn^(^)c-HUE@S$Y?`^Vc;TJt~Gy;!g(am8!nZ>!_;9r#YK zJl#>}TbAQhtD!uLJ9puV1rBvqks$#NAEj><-hb;I9;es;EWovO>a*tpT)*FJd?VW$ z@WCv8XZ?mZvTrPU7xT^i8F#m8SLyD$pTAe?du$?5Xv~r(d_;Z^H5Yg=3be z+C6@DN1x<+?OL)8LegE;VOA8cT zd**^eIIo^zX7DrHg<9|UXLSYNJ|1#DNW1lw=&CADt+}ar-!;6y7Vwnhr~R41$MBQg zhVh8*YlbU7FLW@x>6*cPzb@VLAFvc`y{Egi zryDPwJFAeP;ne;)Mg7tOkB&1c$k^P;jkBxMX)^o9;9&Rr_xt6u%$idxOI}3Ozx-%i ze%g9_pv;P6MelE%eEfWKy0J>`?CcvxEvg0lFJvzs`uB0>#B%vPD$Pz_Re)pPy6rEzfKD*!|#McEm)s`Pbc#DqVedZ^pu%3$A@%ustV3$xLm+l+Ny? zj`NE{`M)ev++`kmiuI`aMY-PSpZ%2L3Re$z4b4mG2)41<^d#twg zck>e!bki zx@(rd>KEGtT|ax{tgOwi%inxoZ=65hXU~sYd!w_%OY$c~wcWaDdg@*`7q^(s3Yo(b z54`tY_)f;co|Pr%idN9ucfC)qMTT#_^yOAS3}@HQ!ZQZ0{ihaJ2gim_o_SvE@NfUz zj|CMr^Az9p{)jMc`docpcuU;+Wd}3&#M!@%-=$o3zW;FYrh8twbELMvGA#bR=6`lR zFT)%)!P#XKxa(%!&8}T{WufQv#QpF7?TU8Y(7xgQ*T1hkFBYq_<~{vc^XuxS6MoiJBsFiUH?DY`0M2NMN6H|i#0O; zf8X86d*i?-{`r3{{@QxK?ff6}-FNP-KD=Q5_H+L_+RIIkd{1r_5a4e7mkZG?Cf+oqPAX`SV^bULU>i`+?1;+$Vk5#_{LYqUz=un^!Bu z?>L#Vjic7_m*m7>mafN~F0amxRSmsu4ITHg z8RgF1+?>wadGCUy0neS)yKV9FrCwp&?wAMQ_sos8)<=RKh z3Mt;pP9?3nc8~dauDpf+){^sa7hhMqt~Qw!d|<3hA-X0}Sn2VpPvI?dW-?K0`WF$s;J zvwnSxELW5rsSni`U2Cz%HB)5YtzQ~fBPYjt*NaX5$**={Pnf#9XOL~mb^mtL^Cu1e zUS-*`*~{ds^VQc)p4_YU&gxm=uyyI>nB_db7s~D3ertV{JTeLz1q_0 ztWm!g)*TPYoSn5RsN_{C&w7i$pB(ww9VbZfGBU7e=)6#>obqkQCA&b?^zCnIKfl~@ za2=a&VV(yMI|IWh#Z`6{U)XQYG!PS)aF~#_!96gDC0g?7DkX~*Oe~H)9J>pzzxz7< zeN=tchd=MW{eK%-{6RBROGxuh%gS)~ZE72w%f5+8ZEK&rOoH!hSC;5&fj#z<*k8|g zxMKCfQl8JR-SFIvGL9w%jwU(2CWQ{JJ$%L6bgL|rqpH7$+syxGe7MP9PUKd7huGxE z`W)M*QqyEok`pXvC0RsG4-PJ9x42NG!*Z^by`S;IVMhTL#|ctQeL>CwM|KF5tyRyp z`fi~A|Lf)K+092X*GyZx_v!nfCFSKu{ynxYEAei=zfK}u*R+Y>NzX&&Mo!1HJYNA* zPqDR+45oy?G`PCnEA{2{pyt~bH703g_N?&feRim7_Mm~;Ut0pS{HqZO`i`$>e zC0|Zvjvdap+b2G&+PWka%R#?jB?D5-0|7I%J}0{v9?Pk zJ?lgRti0nU*aYsMGVAR<3B8q3y(`a^U*GM!`lFLU*vnO$j6GN8>f3=WTG;+p_Ksfq z&xU8bv%bgw+VQ-NnR_?Ky}wR-ZMS`O$h=>uxX!IYOCr-=#%zb>!Lz3WTKxEu;${?i z8ip1NXz6pTzPcy5F6`?r;jNq3p50&CvzqGarK{_9%1Z`EpD z6PC0m$quhiV-Hg(_czE4HDP96_Y>C1$F7H3s=vx`&d<-!wU_EdZ>#zC zCUTX#k^H4Lg=cS)UOq3C$O|z%>9X2%O_phvmACrq&9B}>skv(WEHa5!GRom@TdJM5 zbiUS%D>FUUC(r1w`?l9_?>U)u7S3Oq7qmAkc;vcV%?x~fY(aJNm5^1}ZGxf#8D=}@ zzMkP`c}%O-bMDODl~=DCu3C}4N;WO+U+rSEWJYaX8QZEYzqqEy{Q9@p&35|z;5!rd z{_$86zBuuAk;mexPHDL^S6o(#usCL1e04A6%$bW*`V`bQZ`Zm|D%T;WHg}^>@znyZ z6=!x#*xz`~By+Z>?b(8`?S5~Udb%Cu2n{{GqD({luvuvJv|Cn}muO_J(Mn05$3J=A zNfp=YrwrCF)cozHdz>lBLQzq%olo}F_4V`bSw?*Q8~$<_oJWo|jFsk6xZ?mpym=p(hfvghTI2ug(8H^_W-YReon#DOWw$ZW*442?rvA zBsT8d^35l~K%?)O&fF@C&tf6g|KoDSjSQ|W)Uuu|GOIh}s`tYD^4Rq;OSV;5Jbn5! zF){Ju$B(}(EyHU6i^^wz`yDFT%^D--Gi&y`Cm$A^Z&sMrp=c;mQY2v8qoUSXHCty@ z+M;Fat9-aGE^f;@8@6`m#rmt(uIie-}ABvNkKJRASs$E@@ax=< zTv>nr!fMy!|ANEjpZ>eyaod}tJ4GMc=e>L@{NdyiUvn-EHOXl*vu-T8dR_hh@7K#e zED-a(RbL(GB>HD_>ap}j-91vKnKyO+?6zImT5(fhD{Id~1&^)2D>#}IUOar^zrXJ9 zw|955J0>%Kcz5m3b>~lKltCy+tkS&Sr`}cVuBP#VtS8+|)*o8rf4%os;md=2H}9{R zw700{%fT2ShKAb@k8AtSv#=%xmx69_RHtdn$#t*!=Xn^>*^?WhVRTES7To zHVJwwvOMqqp6TQ8KO7#P^i0}$xKO|BXyCycPwja#AEx9! zzGay8G3EQ_{l}Mw-;$gA;KsH0CLd={X2vhSTRiS*Gsxv8-?YF5}rO44*DOTN(J9_45ByH6Q;R+jZ`Hz0B?hO^W&A25rfj z8*HVY{QdbnS!ltFEBmy|dSwcVbip-XU(;k^QBhGbv9PdZ%VW3HSF17n*?BAb^dz^_ z`@YYSz5C$*vWg?`&OQA4D(mX^`(5^?R$0GNi>`g<|Fb=_;cE4B_2;MVNA@+^{;7N~ z|CBdsd*PWqwd+|J9KJnzv`gP<*OpHoa{}%!PAoWMd-C=4^_~o$ey)wyziY)-wdwxc zkp006)Vm$q7!G9LUAgzc-+aBeIJ5G{V(V;+w4+^;(%sH5-CX=Ref~C?&z182(c0|) zFB-R7FMnhIZxYi4yUH1kwI(WSS|=R;{=#mLe{;CxOIEf$|BMTH-2Xh+aKE2d8)aer zi)X%hc|fvt_4~lx^CmDbgdFVcom~CH;`7?vySLkp$J97ql=pu&FUCUUz};)Nj-A|n z{K}4M`BjtU%}?kh9NKfDzjjWpg^rm0n}&$8{6Oo6>icag%UdVUT)m6S`gllPXOh6A zJNh<{Z}ho4v#DQs`d*}JZbXr1&_$g`J!>qRh3>vBi{k#im2>CRDXvW_=xpJcY_Z9AIg-NohYp|JUp-TWWFPv_ac-Cgnj;^gQ4LHqJgFZ2*%IB}>+ zX@mH!Q&atKaKDX+GG<{=_|eyA_UX~v-)Da3w*8;1JD>l>1Mv&RXa3ZF?>30*2{9KH zpK&O=>g3`r$AcL1UjM7To2UAwK0rb9^v;S0A&$ox@6P3|n4SMif-m&h-=8a|?96Mg zueNyeXYbXzlhOR?lO59D_ep$64tvjgz4*SJ@4u$4c5hC%Y!|uv(OT)SxrdtExl{F( zwV|uKFSqIMT4j*tUG@FEao663=B8_-nD*LA|ZUO zW$nv(EUR}jI)?m8zRsMx_|S<(M$bFq%K0j+?N7$-F?nsu8Zhbm+lJ4E*WWygm;CoA z>$O_=dmjG1)w7E--X7QT(y#fK_#o$DGta6z@8eb`z9;i!jAqQOcyMcCZTW6q?yBbx zX2j%IWGZnqEoe{fd*@qGQQ_p|l#sAMZu$J5j|CZQ?!MRlo~t!2KYUBvy7M>uJ=I?> zv#Vye_IteIaQ}SmPZjrnRO!4bJ=Hn8uX*wEuQ^fS2T~b-8od|QEYHYUxM4v=o^n7d ztLu_&Joo3G4$3hKySpy_U)`&3dsn-goqO})+kxwkr^o0V_UjGNese5#_x1gov;VGK zzUWg^_3mpjHC|J@TtpZiUdTT9D)IcYvV!szk7a+QFRs)+R=Js1{335#9WpnWU90W>N?SQDe|alq z8AJ6|b0=@jeav{@|NWe)6DIsh)Yl1XHtZJX$$536y1qQAl287+Y3=cI(LxL-d*|-n zY$s>E#m@V)Ztbzk1uMMjH_5y>dil|`TUY$KYKfG z*Pp!pg>&!koo}@F-iKQ*0xXXF%iVUG8`t@;H~e9qSJtv4Ro1irSIP=~)19U@w`X?z zY}uPCQ2xK*UhB%=-dyT0*4TaTn`^V_{QR>MR{U}CRDCKk`*7v=9aHbv7u)@w>wWke zN5f{GKBZvpl{YdTo$?dr?^U zvaRLopWFWnafsM(ATHxPlfeC$UpIGLZj25p{(RrYZ=PP9QNpKxHq1?Z%laP*#K?&^ zoPGGAB1XYNW?P6BtI_kwz8}x{buC5peRt&6dFfVt-8AD;#h=^Z>pjEEw{t!36S!8q zx$g6)ukEL&J$>~stWvc8kZDTI{OQ$?^rlXY>*%ik{PKpQp49HT-?ss35?qq>tb}z zB_2MgcrLSbZyQ_G-qpKber=ns)}+8uW$~<4@trSg{n>LnKYbVVt*`k#cS?!S{Pn-z zIot^oPXBuPzRBO+KW1C1K3z1u|DWZis$*+nBaISvZh3!2!@98c&t3DSt^NO^{+!;w z?o*@co&IA!8B;eFzWcTRv)AdknA>}v$*(?^lPkGOY46r|pKs3gyHoioOh>b(#OULr z?C%ZN*6F;t>haa-#@2aTUfwyp=g)Qj^|^dP%Qr@C`}VBi&Hl;m|8p%e?x^>^*>O!T z_jvECm>D&1b}@Qq%{&~H1)HI3lL^{4-7K^$XAzrx3sZunh4sd`l;@!_mqHx<@*-u$ z)o-1iR`A05pYh3mx$S(p_8Nb4a^w}yZmjAH3O;)8>MVbOv-@Qg79I-}t>5(FMx9Rd zf2+8V#8dO8>)Yj-9sFE+=-(fv>~@CuTs!gA2d@Mlow<6~sbtS(*QMiTg4<9t1a0Kb z3w(F0SrhrQliRjB^}?T*Ru;a2jq8}h-$mbEU-A5kf0SwNW%WnP7hk&f-+Tk3bi-r$ zt!a+Smm4RFv>Wj@v*$! z&&A>&@3)obKD=yK@^dnDY-O(0%CwaK$8_WBA9^;vINRJ@yg0ctaAIu>!y{g1nw!@vBByO=d^U0w1u8R^Y#|Nfpooj;Ei5xZl0jjr)VgXY-PFTS8}qj*Yg_VeZD1Om2;on zJ-q+l%l}fF93DFaPy0QCcekAT*;ls{((KmPwLb(;2wwWNX!+wE6ML`eO!Jewdh(RZ z*^Kb~pBLYKD-II>ddEIC?djEJ_ik9Ot&U(UkYTFn{1M%>KyRC@Oss|U{2M>4&61)U z?wK8bxV2M(BPd#7na`{ZpQdjWjptKWtre2tVK_cX$i25)LrbUP`;yJ#isW|q-^DYuYdI8_pSLRWVhvif1<7S&-e4o_PBr1 z&HDfU#&Vm*301w!z4e6S=izg0`U$^!R5X+8Ur7vDWNMaem0>z|e_VuMMuu2)xq4 z$JqoLMH2HbeD&>o_0OHx3rjw}vZ%SZGA77-S6u?n@jVLj|BK};{qbzZW9#2tM^cW8 zA8eazP{I=tUgY^s-|vy2HG7`EdAn@xne=#B=QF;pno}Mzi`s{-)L*{j@T%KuPaOHJ zpjp)r8p!J$b)4sW^P$*P0$&OQSPU(nhW|G&`?j@V#%cee%fgE*tdINOo#}gN$!qRo z1!wsEE?b7HzP~TyeR*2xqgkt-ToUnk=JAqC3&7ZHm>G3`QvEXd zl}n?ef3-x+*!T1QmhYGx^lHPSKl|!+ z86z+Ku+>T0E%;Y*mSMP8@}(ZFffVCGo9p~*}rtw<*!Gt7|Iw`mmg`6-&~cyW8Uv?nV-bhd`*m3+w=Fs zm+ANZe(p&w394#rQE~maFih(5$v3hSA4;nT^QS-Ezh~d7t4A{ri^uA+ul=cUoh_`K zxoO3h=Pp3NLsqzui+(*W19JBkdUU znCJbiRnyk3YSsE5dU4_ft7Mm#I&Ies&K~?SuXEkIUbWYgJ9lk)HKB9f)~Lg7Uo>WP zr0JYL(s6BP($=k6H%@H-bL!TF-z#=~OZVNkE~q~2m4weJC-A7Fp-9=|b$4Iizq$3_ zmEge2gL`AM`RtZ@xhi=j@47d`qRrXPe#g&>y(_i%aptAuKYn3f^=*aKalROh-v#=) z25BFg8hvFez4&vcemQix{Tzq;na-@|DY>^R4t&3Covx~~#B1xb#YL~@70PL>x-?&h zz3StZ8%kxR_OB0@|2=VXI`gFP)O=43+sSg%{dTsR%zkiubN(ySed7K#zxUe*?X1&f z4RLdHySTYyS7DgrcjI{?OGG#RjpEKcKG#$J-+JcndmknVZ`v)f%G+M8>EV>}#S#;L zi7tufof-Wz!E*A6uh$em*R1juy=txRy0zc1@b-)^KF@w8FhG)pR@?Q&bK6|kuJg%$ zA9ud~&&q}k35|O%%v)+18}B1?Sh0BC(~kUq7bXQK-YC5NXG+wUSE(ES+&okCwczoJ z-N&_-PR@_ts}_6r?hVmtog3!O{yKa5dd~~f`X}lrYMb>lBnav-ENEcTAgLwzML1jQ z>|sq?lS^U;Tz;(#m-qU-V8yK-o5_+9Jlu=oC!PMF(6%Udl}T%Cp@{t9Q?IT1UHcCf z@l0JjdG!LRtpTy>3tl}_xVU9{)3~adfn>Xy zw^9DLO5P>L{d>Lqx*2=tf($`UymFyl$kbr_v+I1yp~Ve#rso_tL=L6$0rrq zY&)qn?=-9B&eYPFIVJmqUt4$r8 zvEwGo`Rkm&KXb2+*wFwKuGS6KS>AtXXugKw~S#~RO9o610y<+8K zvTWt{6>n#LS-W_pZV3DJi(llEW1BguKy_G^!f$iTf%_%i*M)_T7est*cVW37E4cUN zr_D))7dJ<@Co3(>t6g(Eso>DO=IST!|5jc;YyN1`arfzes#ZQc;P}s~x~i%#D7f|h zc8BuX?%I`gR~OsyoKG^k=kqp_XX~mk#jNv}w)FP+Ei~9V>-rV3Ea}+nYQvbB zy>92LzFV!eG``Y*Eg4c*uj1HNUa))4Q|4Lb8Taa6KAtDdr}IW>f$w$U;Ps#urkR=I zExo!L>F~tA2RQdXXLaYxTyb1>%2T_v!|OaZY|Ll2UT${z|H~a#b#d;ivvTxySDo%J zn}2s(M&S9sed{`z(`{3Gzr0IiO?WHtzqnVj;oMr>fc~B_0?O@!{RYM12=uMUPU&{X*IrIyx5BuT-wP2}nq+D0%Yq z^z^H7huXjWH_SP*LTZ_qn&F(()6>q+v*kAbyGAyxT94;FBlGzKH>$Gg`)A20*5A1K zVP@5Ji(jmc0!NfIM5l(-bo?u_Vkihu=4gs|viHoB-wzeicptL;{^x3{z|o}8u=t7q z%f+a5c(zDn^@HA_(1xHhaio{_@9l*m)1Y<^ zC+1@X0xTOn4BDC_)=f^Xl8$=o*44F5-}h+7r@-BXT|o)$YUypO0!p}hlOA0@vCdO^ z)$SuNRv9iXVRq%sSk=F1UC8&t7fZh=)XrX|+ua$Kx$WPP6@p1325rp>9j-}=hB7Cg zM(+EnCaZs(ZF7O`uT0M$Uh!BVKHFZjqQ2BK=;Pa`)Ali~f6+ZjN+Yv$ z?~1TmUq8)&)mF2!R2(PQg~%#y<}#fT&8>CSeeJxNUwj}9+N>Sb6?OCG=xbG0CoI`; zN!fGCrh+qbtQ%kF+nuy9Y8AEC(|Tv=IeneF1wZ@BxOSJxnr{31Hec$>T2|N+a(zZv z^sbFP-k;5bLfLsQy>`zG5bNa&mENVLwLY^X@@i(>{yC;EXFl^NDS|XVy-%$_^8Wl= zyV@}S^2X->KO&Xq=p9i{oeXW&d^$PnUD;lADbIwl!7r zsPl{~$3Nt)zg(m4TkDfM*H?iR+=1v=IH8jNGM7!1$!2v1h8_Frd==k1?g|05e1du0 zi=Gx_ZP#6?KTk$7a!=m5w%tYy42KHuJTzMM=hAiG8(i&0QLVh+ZFYY@;myV1Q1rLI zdHwI6H_`13xEhxW&>NQwlU8dlTX%}z|Bt@?_oz1>o*}!LM&>T${J7@>Q2+K;^ooRko|XGj%-k6!2yRNO;$5|53CjlW|`K%=k%OUpDNO+(fhJ0+3$0K#lOYrZNF|r z?kWZZ16yy0!Pz}*3ji20=5_LKQ`y2uI`TgwrS^AuS@)UHxgR>9Xfg3eMVKq z|GkGk{kd|Zl#@-T?Cd8An?;x3-q4?>`pMayB`S2uRe2%7nsV1K%TAx~I_i2pPqwdf z#;&i1v64^K>m&^G-(OwBR2b>$SSWciZFA{)_w#{St3Fg$^?zyFa<@D=f7;Y(UB>Iv zbR~;l&ycXN>#MuA)LrP_kMCdJNo!co`qB1j?c?;dmddZM&5hdUcW>s5I1SCyyEojdItx6n3r{|Oc;hR>*U!(#>ArpO>e|EEYx@4y-2Bq+z3$AnrvfbNi+!rz zJ@a47(e&2L@@H&DOM$G(rs`)ayU#fvzP(?5{n1tSSQ>pE%N61-+%ULy@a0|GR=wQ) zK5sXr<+iAM&#&oeiQW6uefRmi=q)Rr*STLm(ztovCbz2Z8<;kfaePocr2-x>+qJvk zl!tZwaW|7)$yis{n=YCs$l^F5ior1TQp?o+Yu5fKve0}v`9T7M#k46FSurkwi3fM9 zPv0wG+NyB16?Gl?f=}5mPfyohy|;z`?f>K(9f79)#!++UuyTu?nQt%u{jej0LRL}B zpTzXT;s&*Dk8W+{Xi}KwuyVzcN6ufSUuFcgpRR;_Kh~1HQV}$$mE;D>03EJLeoz5O zC6JiF!wy*9iNu^vAhtC*=06^E)^1ZJVCe zRPQY7IDJsF3gi?}4@KhhyN5q3i}tN}^0slJlapaA)}}-Go_Q!Ps>0C(IHu1I@~;AD znygvDW2*BrTOaKY85hsYV_z8Tk7WS7xkHuRIWsXb{U|INOW`M&-^`#<D{3{+@ki=ABDTzi%gh+w)55+Woy; z?@S~PJFb%5Irr?Hw-fo3gKbM9C)cbOGvqz*9>}E@DEn7y z!IQTu&a&KFWM$pv>(|K?EAz}RXJ_7XIZSO z>4q4HH&_gn3*`8cw)t`ImDDYlcyifkirQz5Dv?!>AH7IFq%n8tHoH}gB5I}AtmOP( zuTcrz8KS*LYvro?rJC|<56Z`6GB{@OgSTgNvm{$|Xa>&Rmw&>9KXkwAWp>}CuV)$i z+C}vz8m0NH?Ot>_aaGjS5a(GUTbEziFtLuK$pD-y!Mz%R$(7|*YoyZu&C_a9FqMFG z1wd*2f}w)|OCZ!!XH?si?MyE9xeBl({(bpOd{x+jC!cigS55Alp4<%1)}XwkU^2s- z=eSl%xu9nC7Ojre-_r9QeA+VS{_hVP4(iA+Uay`uMeC~E)5S|nql2z)WjX8nIW*k4 zc=tw7f#8wbhSFO&%C%qQ{!OWyhp%5fd2{pK3$DwHPIiTS+Ha&W}P$BQ1#o6HbUr&{J+wtVNu>vHycHz#{M%wMdQd(!Ag+0jZ1 zQxPvK|B$lT$)6A0d)FemF;b;V_3XMXw%N+h(k@7>w%d9+VT7x%WTYj}Sv^V5rSmu6p= zmk^q~qEEsv^4Y@oPPfbiKDF}NNo}-wD*86KuWEPg0#io;mfd+zD=jcreK0ai@V{2F z{ddK=TbXyIZr;9O`sUx+kK!T>9{K0N7G~D*F~-OPVAY?&Bngt zcI0jI4D+0mFJm-w|1mK9ENp(mq;{tJ&yC|Z+YTpvJj~az)Vx09sm!k5Uw0=jxxW8% zv834lwo9h+kH5;#RGIha%$7$L0xsI~u4XuG^Y%JbD|6EI!=nQWER0{iS@rnZl%OZl z8&=3UPwv09xhEoV#hVUlma7!Qtlnz!qhKz_6;Wk!@BkH!5-BU^w!o)c=7D(?>T1j zTOUXTOn8}WaWsA3OKZE8@2-1F=Ep60Clx!->HQ;tzQ=si1D{Ucmv?C0k_B(>3NqK7 zdA0Xp)w|ovPsVS!)?PdF!?#$wN!snfyK_BjKR!8e;!$a_*`2A31x#XhCI&oua`K&T z+OjFZBC5Xeawk|BCd9-VmWI|^LmoI*Ce4!DYrhcGrYWOf8N4PeW|#IN05ko z*3nE+vpb*P+*8)qWMDY?)t+zPJL66HvQF1)OiI}!?(%Xhx+K3_Zq9{0pPckOp9!yd z_I}>qHPdn`G?bTKy}vQ^``i%O?aO8<-Cxq0<}AJS@%<;AZsyG*@vf`a@=v}r^Tg7q zY4?=>ewj99pN`tsjUt|*w?kISYlWT3QN1c9msqq^V(HzPR{}zl&%9?)doBIqp#n#f z#LLL&pdhB2#;c2anP+dATkCi1`DU*!m#*_VuR=eS$G`jjaI&)^sXH!)VXTSv+R}E`ePD(orc>lt~Q+h^|O{mHM(Vx809?$p0D%bsBas7vy``Per( zse7NiYMjg>%L?mv4QyRk8g~g2)uv*(*#XTm)ELwJdE~Voy)(F8@>d^4QnM-nHjk-14eiUQM+> zZCv8ATl!&a5D0#$n+f+~;> z*Tk!uHdo%>S#OwLlGpMCaJ}`|K#(BADY#B zHrRf+yXMF4^+%qz&OCWKStx$r_lyWV-9NAH*iM@gx$5lk#H(2QDI2$4Jrtq0&QCvo z$sPS5iw%E{@GC!iyLVQof}XafhMw}xoNe=dZnk0Te^Fxntvj{z&jrE8Ft#hfXO-Qq z2WExkyen|})g3X*Ik5cnQESa_8hqaO;#2q+*zz}pHJ!X39=xUNN%HHh%QV!q`W7)x zEx+n@JY=iRs%g{YHm`g6G)VXKlu4_?_^Vi*@Avg z-KU_u&HA&{s}lBrXy?D{93k~f%cmzR*tRhpzi{`b>+eIdtlN5*&DCLNsJrlIhiaYX z#I-h3-y_5A@^0rRzuwHS;KPquruFvwKYIUfE34Vpa9-Skudh1y0Q1E!*(-0d>RWGG zdVcfL+C43Px`!TD#5T`)dR}?;yZe8H{#7M5=+3@ek=Dh+pc0<;yNILdx}}y7+SKmnO8qH zT$5*`&ev>xsm>YFQ=aK)`o3IXaQW_;+abAvS^Kjlo&HdkUa|INRcW@>F%2u17xPqu z)qEp7Z*48xp`J6w+gbb zv1!Rx{`{1>b^3>ef9rXq4OczObXz@nbHc%;OV%tJTG^99}gQ_Fbk ze1ja*6_zBC4|grMSqB9_T)-v3veCt7zdT>i--Kr0YH z?Hv3)tQplj?ll=pWV;nO4*j}(RzKwVW-q<-pVpec{LwyF|D?Ni^P69Jm7T%yf-H^# zM;r>4GO{@82stNNEGsBl<5VU-(fa@IrPZtVU-^56H)h_n=Cv7?EApy3G-otv&Il6K ztk`eL1@eoF{fRZDdu4wx*~KfYu(k_a^TGS$+_e*JYhvflvAxY3TcY*-?zhjI!mn?u z{Tq4vSLv%AzgT+z{q$LPX2GLExjw%WMoCPSIu9GxT8c03z}Qb zfByXB&#tQZ{5>LJRm`ehkrrv^<{tQJK0iff=AkZGanbK{SQuU&{=2b!*0~$Ck57KC z{_Y3W}-~Rhcr0rc+zJHI?dkc06 z%%9@RR1oF!GxzC|d1qsCbLZUdlNQw2Tl#q6m4>2K%5A~ZDqrlLu#LB+Cb7BSO~=17 z^y9YPGuAs33L19L-CEmRc6i#Hb61r_zn1-W$Zk^LD2qK>X~Dn{P*fZn;Vo`=f9cT! zt;^#kxaCRp-QOTk^tR10-X+A#NeI<7B>0qrGnUhyV zgTtS;tN)umzgo9!iHfFTubqdJMW1zy+tm19yEvndTJNbbNq(@e$K1cqM_|3I?dJ>9 zz06`Bh{lb^^76tcpN=nnf8L%Cw-8_gjRf$sI|{T&hIo2%eqasjH{;8>RQAnMa{hTO zO`*M;S1c_TFWH{E-~4H>ic_t&&i{+&7@mQ$Ph=tu8t+eI@k+}e5g%Zu|X9(Rf#ot1yr_#Crq z=ϓ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 Mr>mdKI;Vst0Li^1ZU6uP literal 0 HcmV?d00001 -- GitLab From c6fe20d93bb39188b7751280067d2fd2ab82be49 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 13 Apr 2020 20:35:06 -0400 Subject: [PATCH 287/717] remove obsoleted file --- cmake/README.md | 2301 ----------------------------------------------- 1 file changed, 2301 deletions(-) delete mode 100644 cmake/README.md diff --git a/cmake/README.md b/cmake/README.md deleted file mode 100644 index 8d1b3edc2b..0000000000 --- a/cmake/README.md +++ /dev/null @@ -1,2301 +0,0 @@ -# Building LAMMPS using CMake - -LAMMPS recently acquired support for building with CMake thanks to the efforts -of Christoph Junghans (LANL) and Richard Berger (Temple U). One of the key -strengths of CMake is that it can generate the necessary build system files of -your own personal preference. It also enables using common development IDEs such -as Eclipse, Visual Studio, QtCreator, Xcode and many more for LAMMPS -development. - -CMake can both be used as a command-line (CLI) utility `cmake` or through one of -its GUIs. `ccmake` is a text-based ui to configure and build CMake projects. -`cmake-gui` is a graphical frontend for running CMake operations that works on -Linux desktop environments, Windows and MacOS X. - -The following is a tutorial-style introduction in using the CMake system. It -should give you the necessary foundation to understand how to do the most common -tasks, act as a reference and provide examples of typical use cases. - -## Table of Contents - - * [Quick Start for the Impatient](#quick-start-for-the-impatient) - * [Building LAMMPS using cmake](#building-lammps-using-cmake-1) - * [Prerequisites](#prerequisites) - * [Build directory vs. Source Directory](#build-directory-vs-source-directory) - * [Defining and using presets](#defining-and-using-presets) - * [Reference](#reference) - * [Common CMake Configuration Options](#common-cmake-configuration-options) - * [LAMMPS Configuration Options](#lammps-configuration-options) - * [Parallelization and Accelerator Packages](#parallelization-and-accelerator-packages) - * [Default Packages](#default-packages) - * [Other Packages](#other-packages) - * [User Packages](#user-packages) - * [Package-Specific Configuration Options](#package-specific-configuration-options) - * [KSPACE Package](#kspace-package) - * [MKL](#mkl) - * [FFTW3](#fftw3) - * [BLAS](#blas) - * [LAPACK](#lapack) - * [PYTHON Package](#python-package) - * [GPU Package](#gpu-package) - * [MESSAGE Package](#message-package) - * [MSCG Package](#mscg-package) - * [VORONOI Package](#voronoi-package) - * [USER-LATTE Package](#user-latte-package) - * [USER-PLUMED Package](#user-plumed-package) - * [USER-SCAFACOS Package](#user-scafacos-package) - * [USER-SMD Package](#user-smd-package) - * [Optional Features](#optional-features) - * [zlib support](#zlib-support) - * [JPEG support](#jpeg-support) - * [PNG support](#png-support) - * [GZIP support](#gzip-support) - * [FFMPEG support](#ffmpeg-support) - * [Compilers](#compilers) - * [Building with GNU Compilers](#building-with-gnu-compilers) - * [Building with Intel Compilers](#building-with-intel-compilers) - * [Building with LLVM/Clang Compilers](#building-with-llvmclang-compilers) - -## Quick Start for the Impatient -If you want to skip ahead and just run the compilation using `cmake`, please -find a minimal example below. Together with the options reference below, this -should get you started. - -```bash -git clone https://github.com/lammps/lammps.git -mkdir lammps/build -cd lammps/build -cmake [-D OPTION_A=VALUE_A -D OPTION_B=VALUE_B ...] ../cmake -make -``` - -# Building LAMMPS using `cmake` - -## Prerequisites -This tutorial assumes you are running in a command-line environment using a -shell like Bash. - -* Linux: any terminal window will work -* MacOS X: launch the Terminal app -* Windows 10: install and run "Bash on Windows" (aka Ubuntu on Windows) - -Before we start, please download the latest and greatest version of LAMMPS from -GitHub. You can either download it as a tarball or ZIP file, or via git. When -you start with a fresh lammps directory, the contents should look like this: - -```bash -$ ls -bench doc lib potentials README tools -cmake examples LICENSE python src -``` - -## Build directory vs. Source Directory - -By using CMake we separate building LAMMPS into multiple phases: - -1. **Configuration**: define which features we want to enable/disable and how it should be compiled -2. **Compilation**: compile each source file and generate binaries and libraries based on the configuration -3. **Installation** (Optional): finally we can install the generated binaries on our system - -In the GNU Make based build system of LAMMPS, configuration occurs by running -special make targets like `make yes-MOLECULAR`. These targets modify the -**source directory** (`src/`) directory by copying package files and patching -Makefile. In some cases you are force to manually edit Makefiles to add compiler -options and/or correct include directory and library paths. - -These edits and copy operations are no longer necessary when compiling with -CMake. The source directory stays untouched, so you compile LAMMPS in many -different variants using the same source code checkout. It enables true -**out-of-source** builds. - -When using Cmake, you can compile in **any** folder outside of the source -directory. Any working directory you choose becomes a so-called **build -directory**. All configuration files and compilation results are stored in this -folder. We recommend calling it something like `build/`. - -Let's have a look a quick example, where we get the greatest and latest version -of LAMMPS from GitHub via git: -```bash -git clone https://github.com/lammps/lammps.git -``` - -We then create a new `build` folder and make it our current working directory: -``` -mkdir lammps/build -cd lammps/build -``` - -To configure LAMMPS we run `cmake` inside of this folder. However it requires at -least one argument. `cmake` needs to read the LAMMPS `CMakeLists.txt` file to -know what to do. This file is located in the `cmake/` subdirectory of the -lammps checkout. To run `cmake` add the relative or absolute path to the `cmake/` -directory as first argument. - -E.g., if the current working directory is `lammps/build` you can specify the -relative path to `lammps/cmake` as follows: -``` -cmake ../cmake -``` - -You could also specify the absolute path: -``` -cmake /path/to/my/lammps/folder/cmake -``` - -Please note: **This does NOT compile the code!** Running cmake only configures -the next build. It generates the necessary files to compile the code. On -Unix/Linux it defaults to generating Makefiles. You can also choose other output -formats to generate files for Eclipse, Xcode or Visual Studio which are -supported on other platorms. - -To compile LAMMPS once the Makefiles are generated, simply type `make` in the -build directory. - -``` -make -``` -# Defining and using presets - -The CMake build exposes a lot of different options. In the old build system -some of the package selections were possible by using special make target like -`make yes-std` or `make no-lib`. Achieving a similar result with cmake requires -specifying all options manually. This can quickly become a very long command -line that is hard to handle. While these could be stored in a simple script -file, there is another way of defining "presets" to compile LAMMPS in a certain -way. Since the cmake build process - contrary to the conventional build system - -includes the compilation of the bundled libraries into the standard build process, -the grouping of those presets is somewhat different. - -A preset is a regular CMake script file that can use constructs such as -variables, lists and for-loops to manipulate configuration options and create -an [*initial cache*](https://cmake.org/cmake/help/v3.12/manual/cmake.1.html). -Options must be set with the `CACHE` and `FORCE` flag to ensure they are -considered even during a second cmake run. - -Such a file can then be passed to cmake via the `-C` flag. Several examples of -presets can be found in the `cmake/presets` folder. - -```bash -# build LAMMPS with all packages enabled which don't use external libraries and enable GPU package -mkdir build -cd build -cmake -C ../cmake/presets/all_on.cmake -C ../cmake/presets/nolib.cmake -D PKG_GPU=on ../cmake -``` - -# Reference - -## Common CMake Configuration Options - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OptionDescriptionValues
    CMAKE_INSTALL_PREFIXInstall location where LAMMPS files will be copied to. In the Unix/Linux case with Makefiles this controls what `make install` will do. - Default setting is $HOME/.local. -
    CMAKE_BUILD_TYPEControls if debugging symbols are added to the generated binaries -
    -
    RelWithDebInfo (default)
    -
    Release
    -
    Debug
    -
    MinSizeRel
    -
    -
    CMAKE_VERBOSE_MAKEFILEEnable verbose output from Makefile builds (useful for debugging), the same can be achieved by adding `VERBOSE=1` to the `make` call. -
    -
    off (default)
    -
    on
    -
    -
    - - -## LAMMPS Configuration Options - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OptionDescriptionValues
    LAMMPS_SIZE_LIMITControls the integer sizes used by LAMMPS internally -
    -
    LAMMPS_SMALLBIG (default)
    -
    32bit , 64bit
    -
    LAMMPS_SMALLSMALL
    -
    32bit , 32bit
    -
    LAMMPS_BIGBIG
    -
    64bit , 64bit
    -
    -
    LAMMPS_LONGLONG_TO_LONGWorkaround if your system or MPI version does not recognize long long data types -
    -
    off (default)
    -
    on
    -
    -
    LAMMPS_OMP_COMPATWorkaround for backwards-incompatible changes regarding predetermined sharing modes in OpenMP 4.x. A value of 3 or 4 should be used, reflecting the version of the OpenMP spec that is implemented by the compiler. -
    -
    3 (default except for known OMP 4.0 compilers)
    -
    4
    -
    -
    LAMMPS_MEMALIGNcontrols the alignment of blocks of memory allocated by LAMMPS -
    -
    64 (default)
    -
    -
    LAMMPS_EXCEPTIONScontrols whether LAMMPS dies after an error or throws a C++ exception. This is particularly useful when running through the C library interface, since an error - in LAMMPS then doesn't kill the parent process -
    -
    off (default)
    -
    on
    -
    -
    LAMMPS_MACHINEallows appending a machine suffix to the generated LAMMPS binary -
    -
    *none* (default)
    -
    -
    BUILD_SHARED_LIBScontrol whether to build LAMMPS as a shared-library -
    -
    off (default)
    -
    on
    -
    -
    BUILD_DOCcontrol whether to build LAMMPS documentation -
    -
    off (default)
    -
    on
    -
    -
    BUILD_TOOLScontrol whether to build LAMMPS tools -
    -
    off (default)
    -
    on
    -
    -
    - -## Parallelization and Accelerator Packages - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OptionDescriptionValues
    BUILD_MPIcontrol whether to build LAMMPS with MPI support. This will look for - `mpicxx` in your path and use this MPI implementation. -
    -
    on (default, if found)
    -
    off
    -
    -
    BUILD_OMPcontrol whether to build LAMMPS with OpenMP support. -
    -
    on (default, if found)
    -
    off
    -
    -
    PKG_OPT - A handful of pair styles which are optimized for improved CPU performance on - single or multiple cores. These include EAM, LJ, CHARMM, and Morse potentials. - -
    -
    off (default)
    -
    on
    -
    -
    PKG_USER-OMP - Hundreds of pair, fix, compute, bond, angle, dihedral, improper, and kspace - styles which are altered to enable threading on many-core CPUs via OpenMP - directives. - -
    -
    off (default)
    -
    on
    -
    -
    PKG_USER-INTEL - Dozens of pair, fix, bond, angle, dihedral, improper, and kspace styles which - are optimized for Intel CPUs and KNLs (Knights Landing). - -
    -
    off (default)
    -
    on
    -
    -
    PKG_GPU - Dozens of pair styles and a version of the PPPM long-range Coulombic solver - optimized for GPUs. All such styles have a “gpu†as a suffix in their style - name. The GPU code can be compiled with either CUDA or OpenCL, however the - OpenCL variants are no longer actively maintained and only the CUDA versions - are regularly tested. - -
    -
    off (default)
    -
    on
    -
    -
    PKG_KOKKOSDozens of atom, pair, bond, angle, dihedral, improper, fix, compute styles adapted to compile using the Kokkos library which can convert them to OpenMP or CUDA code so that they run efficiently on multicore CPUs, KNLs, or GPUs. -
    -
    off (default)
    -
    on
    -
    -
    - -## Default Packages - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OptionDescriptionValues
    PKG_ASPHEREComputes, time-integration fixes, and pair styles for aspherical particle models including ellipsoids, 2d lines, and 3d triangles. -
    -
    off (default)
    -
    on
    -
    -
    PKG_BODYBody-style particles with internal structure. Computes, time-integration fixes, pair styles, as well as the body styles themselves. -
    -
    off (default)
    -
    on
    -
    -
    PKG_CLASS2Bond, angle, dihedral, improper, and pair styles for the COMPASS CLASS2 molecular force field. -
    -
    off (default)
    -
    on
    -
    -
    PKG_COLLOIDCoarse-grained finite-size colloidal particles. Pair styles and fix wall styles for colloidal interactions. Includes the Fast Lubrication Dynamics (FLD) method for hydrodynamic interactions, which is a simplified approximation to Stokesian dynamics. -
    -
    off (default)
    -
    on
    -
    -
    PKG_COMPRESSCompressed output of dump files via the zlib compression library, using dump styles with a “gz†in their style name. -
    -
    off (default)
    -
    on
    -
    -
    PKG_CORESHELLCompute and pair styles that implement the adiabatic core/shell model for polarizability. The pair styles augment Born, Buckingham, and Lennard-Jones styles with core/shell capabilities. The compute temp/cs command calculates the temperature of a system with core/shell particles. -
    -
    off (default)
    -
    on
    -
    -
    PKG_DIPOLEAn atom style and several pair styles for point dipole models with short-range or long-range interactions. -
    -
    off (default)
    -
    on
    -
    -
    PKG_GRANULARPair styles and fixes for finite-size granular particles, which interact with each other and boundaries via frictional and dissipative potentials. -
    -
    off (default)
    -
    on
    -
    -
    PKG_KSPACEA variety of long-range Coulombic solvers, as well as pair styles which compute the corresponding short-range pairwise Coulombic interactions. These include Ewald, particle-particle particle-mesh (PPPM), and multilevel summation method (MSM) solvers. -
    -
    off (default)
    -
    on
    -
    -
    PKG_MANYBODY - A variety of manybody and bond-order potentials. These include (AI)REBO, BOP, - EAM, EIM, Stillinger-Weber, and Tersoff potentials. - -
    -
    off (default)
    -
    on
    -
    -
    PKG_MC - Several fixes and a pair style that have Monte Carlo (MC) or MC-like - attributes. These include fixes for creating, breaking, and swapping bonds, - for performing atomic swaps, and performing grand-canonical MC (GCMC) in - conjunction with dynamics. - -
    -
    off (default)
    -
    on
    -
    -
    PKG_MISC - A variety of compute, fix, pair, dump styles with specialized capabilities that - don’t align with other packages. - -
    -
    off (default)
    -
    on
    -
    -
    PKG_MOLECULE - A large number of atom, pair, bond, angle, dihedral, improper styles that are - used to model molecular systems with fixed covalent bonds. The pair styles - include the Dreiding (hydrogen-bonding) and CHARMM force fields, and a TIP4P - water model. - -
    -
    off (default)
    -
    on
    -
    -
    PKG_PERI - An atom style, several pair styles which implement different Peridynamics - materials models, and several computes which calculate diagnostics. - Peridynamics is a a particle-based meshless continuum model. - -
    -
    off (default)
    -
    on
    -
    -
    PKG_QEQ - Several fixes for performing charge equilibration (QEq) via different - algorithms. These can be used with pair styles that perform QEq as part of - their formulation. - -
    -
    off (default)
    -
    on
    -
    -
    PKG_REPLICA - A collection of multi-replica methods which can be used when running multiple - LAMMPS simulations (replicas). See Section 6.5 for an overview of how to run - multi-replica simulations in LAMMPS. Methods in the package include nudged - elastic band (NEB), parallel replica dynamics (PRD), temperature accelerated - dynamics (TAD), parallel tempering, and a verlet/split algorithm for - performing long-range Coulombics on one set of processors, and the remainder - of the force field calcalation on another set. - -
    -
    off (default)
    -
    on
    -
    -
    PKG_RIGID - Fixes which enforce rigid constraints on collections of atoms or particles. - This includes SHAKE and RATTLE, as well as varous rigid-body integrators for a - few large bodies or many small bodies. Also several computes which calculate - properties of rigid bodies. - -
    -
    off (default)
    -
    on
    -
    -
    PKG_SHOCK - Fixes for running impact simulations where a shock-wave passes through a - material. - -
    -
    off (default)
    -
    on
    -
    -
    PKG_SPINModel atomic magnetic spins classically, coupled to atoms moving in the usual manner via MD. Various pair, fix, and compute styles. -
    -
    off (default)
    -
    on
    -
    -
    PKG_SNAP - A pair style for the spectral neighbor analysis potential (SNAP). SNAP is - methodology for deriving a highly accurate classical potential fit to a large - archive of quantum mechanical (DFT) data. Also several computes which analyze - attributes of the potential. - -
    -
    off (default)
    -
    on
    -
    -
    PKG_SRD - A pair of fixes which implement the Stochastic Rotation Dynamics (SRD) method - for coarse-graining of a solvent, typically around large colloidal particles. - -
    -
    off (default)
    -
    on
    -
    -
    - -## Other Packages - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OptionDescriptionValues
    PKG_KIMA pair_style kim 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. -
    -
    off (default)
    -
    on
    -
    -
    PKG_PYTHONEnable support for Python scripting inside of LAMMPS. -
    -
    off (default)
    -
    on
    -
    -
    PKG_MESSAGECommands to use LAMMPS as either a client or server and couple it to another application. -
    -
    off (default)
    -
    on
    -
    -
    PKG_MSCG - A fix mscg command which can parameterize a Multi-Scale Coarse-Graining (MSCG) - model using the open-source MS-CG library. - -
    -
    off (default)
    -
    on
    -
    -
    PKG_MPIIO - Support for parallel output/input of dump and restart files via the MPIIO library. - -
    -
    off (default)
    -
    on
    -
    -
    PKG_POEMS - A fix that wraps the Parallelizable Open source Efficient Multibody Software - (POEMS) library, which is able to simulate the dynamics of articulated body - systems. These are systems with multiple rigid bodies (collections of - particles) whose motion is coupled by connections at hinge points. - -
    -
    off (default)
    -
    on
    -
    -
    PKG_LATTE - A fix command which wraps the LATTE DFTB code, so that molecular dynamics can - be run with LAMMPS using density-functional tight-binding quantum forces - calculated by LATTE. - -
    -
    off (default)
    -
    on
    -
    -
    PKG_VORONOI - A compute command which calculates the Voronoi tesselation of a collection of atoms by wrapping the Voro++ library. This can be used to calculate the local volume or each atoms or its near neighbors. - -
    -
    off (default)
    -
    on
    -
    -
    - -## User Packages - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OptionDescriptionValues
    PKG_USER-ADIOSADIOS 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. -
    -
    off (default)
    -
    on
    -
    -
    PKG_USER-ATC - ATC stands for atoms-to-continuum. This package implements a fix atc command - to either couple molecular dynamics with continuum finite element equations or - perform on-the-fly conversion of atomic information to continuum fields. - -
    -
    off (default)
    -
    on
    -
    -
    PKG_USER-AWPMD - AWPMD stands for Antisymmetrized Wave Packet Molecular Dynamics. This package - implements an atom, pair, and fix style which allows electrons to be treated - as explicit particles in a classical molecular dynamics model. - -
    -
    off (default)
    -
    on
    -
    -
    PKG_USER-BOCS - This package provides fix bocs, a modified version of fix npt which includes the pressure correction to the barostat as outlined in: N. J. H. Dunn and W. G. Noid, “Bottom-up coarse-grained models that accurately describe the structure, pressure, and compressibility of molecular liquids,†J. Chem. Phys. 143, 243148 (2015). - -
    -
    off (default)
    -
    on
    -
    -
    PKG_USER-CGDNA - Several pair styles, a bond style, and integration fixes for coarse-grained - models of single- and double-stranded DNA based on the oxDNA model of Doye, - Louis and Ouldridge at the University of Oxford. This includes Langevin-type - rigid-body integrators with improved stability. - -
    -
    off (default)
    -
    on
    -
    -
    PKG_USER-CGSDK - Several pair styles and an angle style which implement the coarse-grained SDK - model of Shinoda, DeVane, and Klein which enables simulation of ionic liquids, - electrolytes, lipids and charged amino acids. - -
    -
    off (default)
    -
    on
    -
    -
    PKG_USER-COLVARS - COLVARS stands for collective variables, which can be used to implement - various enhanced sampling methods, including Adaptive Biasing Force, - Metadynamics, Steered MD, Umbrella Sampling and Restraints. A fix colvars - command is implemented which wraps a COLVARS library, which implements these - methods. simulations. - -
    -
    off (default)
    -
    on
    -
    -
    PKG_USER-DIFFRACTION - Two computes and a fix for calculating x-ray and electron diffraction - intensities based on kinematic diffraction theory. - -
    -
    off (default)
    -
    on
    -
    -
    PKG_USER-DPD - DPD stands for dissipative particle dynamics. This package implements - coarse-grained DPD-based models for energetic, reactive molecular crystalline - materials. It includes many pair styles specific to these systems, including - for reactive DPD, where each particle has internal state for multiple species - and a coupled set of chemical reaction ODEs are integrated each timestep. - Highly accurate time integrators for isothermal, isoenergetic, isobaric and - isenthalpic conditions are included. These enable long timesteps via the - Shardlow splitting algorithm. - -
    -
    off (default)
    -
    on
    -
    -
    PKG_USER-DRUDE - Fixes, pair styles, and a compute to simulate thermalized Drude oscillators as - a model of polarization. - -
    -
    off (default)
    -
    on
    -
    -
    PKG_USER-EFF - EFF stands for electron force field which allows a classical MD code to model - electrons as particles of variable radius. This package contains atom, pair, - fix and compute styles which implement the eFF as described in A. - Jaramillo-Botero, J. Su, Q. An, and W.A. Goddard III, JCC, 2010. The eFF - potential was first introduced by Su and Goddard, in 2007. - -
    -
    off (default)
    -
    on
    -
    -
    PKG_USER-FEP - FEP stands for free energy perturbation. This package provides methods for - performing FEP simulations by using a fix adapt/fep command with soft-core - pair potentials, which have a “soft†in their style name. - -
    -
    off (default)
    -
    on
    -
    -
    PKG_USER-H5MD - H5MD stands for HDF5 for MD. HDF5 is a portable, binary, self-describing file - format, used by many scientific simulations. H5MD is a format for molecular - simulations, built on top of HDF5. This package implements a dump h5md command - to output LAMMPS snapshots in this format. - -
    -
    off (default)
    -
    on
    -
    -
    PKG_USER-LB - Fixes which implement a background Lattice-Boltzmann (LB) fluid, which can be - used to model MD particles influenced by hydrodynamic forces. - -
    -
    off (default)
    -
    on
    -
    -
    PKG_USER-MANIFOLD - Several fixes and a “manifold†class which enable simulations of particles - constrained to a manifold (a 2D surface within the 3D simulation box). This is - done by applying the RATTLE constraint algorithm to formulate single-particle - constraint functions g(xi,yi,zi) = 0 and their derivative (i.e. the normal of - the manifold) n = grad(g). - -
    -
    off (default)
    -
    on
    -
    -
    PKG_USER-MEAMC - A pair style for the modified embedded atom (MEAM) potential translated from - the Fortran version in the MEAM package to plain C++. In contrast to the MEAM - package, no library needs to be compiled and the pair style can be - instantiated multiple times. - -
    -
    off (default)
    -
    on
    -
    -
    PKG_USER-MESO - Several extensions of the the dissipative particle dynamics (DPD) method. - Specifically, energy-conserving DPD (eDPD) that can model non-isothermal - processes, many-body DPD (mDPD) for simulating vapor-liquid coexistence, and - transport DPD (tDPD) for modeling advection-diffusion-reaction systems. The - equations of motion of these DPD extensions are integrated through a modified - velocity-Verlet (MVV) algorithm. - -
    -
    off (default)
    -
    on
    -
    -
    PKG_USER-MGPT - A pair style which provides a fast implementation of the quantum-based MGPT - multi-ion potentials. The MGPT or model GPT method derives from - first-principles DFT-based generalized pseudopotential theory (GPT) through a - series of systematic approximations valid for mid-period transition metals - with nearly half-filled d bands. The MGPT method was originally developed by - John Moriarty at LLNL. The pair style in this package calculates forces and - energies using an optimized matrix-MGPT algorithm due to Tomas Oppelstrup at - LLNL. - -
    -
    off (default)
    -
    on
    -
    -
    PKG_USER-MISC - A potpourri of (mostly) unrelated features contributed to LAMMPS by users. - Each feature is a single fix, compute, pair, bond, angle, dihedral, improper, - or command style. - -
    -
    off (default)
    -
    on
    -
    -
    PKG_USER-MOFFF - Pair, angle and improper styles needed to employ the MOF-FF force field by - Schmid and coworkers with LAMMPS. MOF-FF is a first principles derived force - field with the primary aim to simulate MOFs and related porous framework - materials, using spherical Gaussian charges. It is described in S. Bureekaew - et al., Phys. Stat. Sol. B 2013, 250, 1128-1141. For the usage of MOF-FF see - the example in the example directory as well as the MOF+ website. - -
    -
    off (default)
    -
    on
    -
    -
    PKG_USER-MOLFILE - A dump molfile command which uses molfile plugins that are bundled with the - VMD molecular visualization and analysis program, to enable LAMMPS to dump - snapshots in formats compatible with various molecular simulation tools. - -
    -
    off (default)
    -
    on
    -
    -
    PKG_USER-NETCDF - Dump styles for writing NetCDF formatted dump files. NetCDF is a portable, - binary, self-describing file format developed on top of HDF5. The file - contents follow the AMBER NetCDF trajectory conventions - (http://ambermd.org/netcdf/nctraj.xhtml), but include extensions. - -
    -
    off (default)
    -
    on
    -
    -
    PKG_USER-PHONON - A fix phonon command that calculates dynamical matrices, which can then be - used to compute phonon dispersion relations, directly from molecular dynamics - simulations. - -
    -
    off (default)
    -
    on
    -
    -
    PKG_USER-PLUMED - The fix plumed command allows you to use the PLUMED free energy plugin for molecular dynamics to analyze and bias your LAMMPS trajectory on the fly. The PLUMED library is called from within the LAMMPS input script by using the fix plumed command. - -
    -
    off (default)
    -
    on
    -
    -
    PKG_USER-PTM - A compute ptm/atom command that calculates local structure characterization using the Polyhedral Template Matching methodology. - -
    -
    off (default)
    -
    on
    -
    -
    PKG_USER-QTB - Two fixes which provide a self-consistent quantum treatment of vibrational modes in a classical molecular dynamics simulation. By coupling the MD simulation to a colored thermostat, it introduces zero point energy into the system, altering the energy power spectrum and the heat capacity to account for their quantum nature. This is useful when modeling systems at temperatures lower than their classical limits or when temperatures ramp across the classical limits in a simulation. - -
    -
    off (default)
    -
    on
    -
    -
    PKG_USER-QUIP - A pair_style quip command which wraps the QUIP libAtoms library, which - includes a variety of interatomic potentials, including Gaussian Approximation - Potential (GAP) models developed by the Cambridge University group. - -
    -
    off (default)
    -
    on
    -
    -
    PKG_USER-QMMM - A fix qmmm command which allows LAMMPS to be used in a QM/MM simulation, - currently only in combination with the Quantum ESPRESSO package. - -
    -
    off (default)
    -
    on
    -
    -
    PKG_USER-REAXC - A pair style which implements the ReaxFF potential in C/C++ (in contrast to - the REAX package and its Fortran library). ReaxFF is universal reactive force - field. See the src/USER-REAXC/README file for more info on differences between - the two packages. Also two fixes for monitoring molecules as bonds are created - and destroyed. - -
    -
    off (default)
    -
    on
    -
    -
    PKG_USER-SCAFACOS - A KSpace style which wraps the ScaFaCoS Coulomb solver library to compute long-range Coulombic interactions. - -
    -
    off (default)
    -
    on
    -
    -
    PKG_USER-SDPD - A pair style for smoothed dissipative particle dynamics (SDPD), which is an - extension of smoothed particle hydrodynamics (SPH) to mesoscale where thermal - fluctuations are important (see the USER-SPH package). Also two fixes for - moving and rigid body integration of SPH/SDPD particles (particles of - atom_style meso). -
    -
    off (default)
    -
    on
    -
    -
    PKG_USER-SMD - An atom style, fixes, computes, and several pair styles which implements - smoothed Mach dynamics (SMD) for solids, which is a model related to smoothed - particle hydrodynamics (SPH) for liquids (see the USER-SPH package). - -
    -
    off (default)
    -
    on
    -
    -
    PKG_USER-SMTBQ - A pair style which implements a Second Moment Tight Binding model with QEq - charge equilibration (SMTBQ) potential for the description of ionocovalent - bonds in oxides. - -
    -
    off (default)
    -
    on
    -
    -
    PKG_USER-SPH - An atom style, fixes, computes, and several pair styles which implements - smoothed particle hydrodynamics (SPH) for liquids. See the related USER-SMD - package package for smooth Mach dynamics (SMD) for solids. - -
    -
    off (default)
    -
    on
    -
    -
    PKG_USER-TALLY - Several compute styles that can be called when pairwise interactions are - calculated to tally information (forces, heat flux, energy, stress, etc) about - individual interactions. - -
    -
    off (default)
    -
    on
    -
    -
    PKG_USER-UEF - A fix style for the integration of the equations of motion under extensional - flow with proper boundary conditions, as well as several supporting compute - styles and an output option. - -
    -
    off (default)
    -
    on
    -
    -
    PKG_USER-VTK - A dump vtk command which outputs snapshot info in the VTK format, enabling - visualization by Paraview or other visualization packages. - -
    -
    off (default)
    -
    on
    -
    -
    PKG_USER-YAFF - Some potentials that are also implemented in the Yet Another Force Field (YAFF) code. - The expressions and their use are discussed in the following papers: - - -
    -
    off (default)
    -
    on
    -
    -
    - -## Package-Specific Configuration Options - -### KSPACE Package - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OptionDescriptionValues
    FFT -

    FFT library for KSPACE package

    -

    If either MKL or FFTW is selected cmake will try to locate - these libraries automatically. To control which one should be used please see - the options below for each FFT library. Otherwise it will default to KISS - FFT.

    -
    -
    -
    FFTW3
    -
    FFTW2
    -
    MKL
    -
    KISS (default)
    -
    -
    FFT_SINGLEUse single-precision floating-point in FFT -
    -
    off (default = double precision)
    -
    on
    -
    -
    FFT_PACKOptimization for FFT -
    -
    array (default)
    -
    pointer
    -
    memcpy
    -
    -
    - -### FFTW3 - - - - - - - - - - - - - - - - - - - - - -
    OptionDescriptionValues
    FFTW3_INCLUDE_DIRSpath to FFTW3 include files -
    FFTW3_LIBRARIESlist of paths to FFTW3 libraries -
    - -### MKL - - - - - - - - - - - - - - - - - - - - - -
    OptionDescriptionValues
    MKL_INCLUDE_DIRSpath to MKL include files -
    MKL_LIBRARIESlist of paths to MKL libraries -
    - -### BLAS - -See [FindBLAS documentation](https://cmake.org/cmake/help/latest/module/FindBLAS.html) - -### LAPACK - -See [FindLAPACK documentation](https://cmake.org/cmake/help/latest/module/FindLAPACK.html) - -### PYTHON Package - -See [FindPYTHON documentation](https://cmake.org/cmake/help/latest/module/FindPython.html) - -### USER-INTEL Package - - - - - - - - - - - - - - - - - - - - - -
    OptionDescriptionValues
    INTEL_ARCHTarget architecture for USER-INTEL package -
    -
    cpu (default)
    -
    knl
    -
    -
    INTEL_LRT_MODEHow to support Long-range thread mode in Verlet integration -
    -
    threads (default, if pthreads available)
    -
    none (default, if pthreads not available)
    -
    c++11
    -
    -
    - -### GPU Package -The GPU package builds a support library which can either use OpenCL or CUDA as -target API. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OptionDescriptionValues
    GPU_APIAPI used by GPU package -
    -
    opencl (default)
    -
    cuda
    -
    -
    GPU_PRECPrecision size used by GPU package kernels -
    -
    mixed (default)
    -
    single
    -
    double
    -
    -
    OCL_TUNE (OpenCL only)Tuning target for OpenCL driver code -
    -
    generic (default)
    -
    intel (Intel CPU)
    -
    phi (Intel Xeon Phi)
    -
    fermi (NVIDIA)
    -
    kepler (NVIDIA)
    -
    cypress (AMD)
    -
    -
    GPU_ARCH (CUDA only)CUDA SM architecture targeted by GPU package -
    -
    sm_20 (Fermi)
    -
    sm_30 (Kepler) (default)
    -
    sm_50 (Maxwell)
    -
    sm_60 (Pascal)
    -
    sm_70 (Volta)
    -
    sm_75 (Turing)
    -
    -
    CUDPP_OPT (CUDA only)Enable CUDA Performance Primitives Optimizations -
    -
    on (default)
    -
    off
    -
    -
    CUDA_MPS_SUPPORT (CUDA only)Enable tweaks for running with Nvidia CUDA Multi-process services daemon -
    -
    on
    -
    off (default)
    -
    -
    BIN2C (CUDA only)Path to bin2c executable, will automatically pick up the first one in your $PATH.(automatic)
    - -### KIM Package - -Requires installation of the KIM library with API v2 - -If `DOWNLOAD_KIM` is set, the KIM library will be downloaded and built inside -the CMake build directory. If the KIM library is already on your system (in a -location CMake cannot find it), set the `PKG_CONFIG_PATH` environment variable -so that `libkim-api` can be found. - - - - - - - - - - - - - - - - -
    OptionDescriptionValues
    DOWNLOAD_KIMDownload KIM API v2 and compile it as part of the build. -
    -
    off (default)
    -
    on
    -
    -
    - -### MESSAGE Package - -This package can optionally include support for messaging via sockets, using the open-source [ZeroMQ library](http://zeromq.org/), which must be installed on your system. - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OptionDescriptionValues
    MESSAGE_ZMQBuild with ZeroMQ support -
    -
    off (default)
    -
    on
    -
    -
    ZMQ_LIBRARY - ZMQ library file (only needed if at custom location) - -
    ZMG_INCLUDE_DIR - Provide include directory of existing ZMQ installation (only needed if at custom location) - -
    - -### MSCG Package - -Requires installation of the MSCG library - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OptionDescriptionValues
    DOWNLOAD_MSCGDownload MSCG and compile it as part of the build -
    -
    off (default)
    -
    on
    -
    -
    MSCG_LIBRARY - MSCG library file (only needed if at custom location) - -
    MSCG_INCLUDE_DIR - Provide include directory of existing MSCG installation (only needed if at custom location) - -
    - -### VORONOI Package - -Requires installation of the Voro++ library - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OptionDescriptionValues
    DOWNLOAD_VORODownload Voro++ and compile it as part of the build -
    -
    off (default)
    -
    on
    -
    -
    VORO_LIBRARY - Voro++ library file (only needed if at custom location) - -
    VORO_INCLUDE_DIR - Provide include directory of existing Voro++ installation (only needed if at custom location) - -
    - -### USER-COLVARS Package - -Requires a C++11 compiler to compile with the Lepton library included. - - - - - - - - - - - - - - - -
    OptionDescriptionValues
    COLVARS_LEPTONEnable the use of the Lepton library inside the Colvars library. - -
    -
    on (default)
    -
    off
    -
    -
    - -### USER-LATTE Package - -Requires installation of the LATTE library - - - - - - - - - - - - - - - - - - - - - -
    OptionDescriptionValues
    DOWNLOAD_LATTEDownload LATTE and compile it as part of the build -
    -
    off (default)
    -
    on
    -
    -
    LATTE_LIBRARY - LATTE library file (only needed if at custom location) - -
    - -### USER-PLUMED Package - -Requires installation of the PLUMED library - - - - - - - - - - - - - - - - - - - - - -
    OptionDescriptionValues
    DOWNLOAD_PLUMEDDownload PLUMED and compile it as part of the build -
    -
    off (default)
    -
    on
    -
    -
    PLUMED_MODE - Determines the linkage mode for the PLUMED library. - -
    -
    static (default)
    -
    shared
    -
    runtime
    -
    -
    - -### USER-LATTE Package - -Requires installation of the LATTE library - - - - - - - - - - - - - - - - - - - - - -
    OptionDescriptionValues
    DOWNLOAD_LATTEDownload LATTE and compile it as part of the build -
    -
    off (default)
    -
    on
    -
    -
    LATTE_LIBRARY - LATTE library file (only needed if at custom location) - -
    - -### USER-SMD Package - -Requires installation of the Eigen3 library - - - - - - - - - - - - - - - - - - - - - -
    OptionDescriptionValues
    DOWNLOAD_EIGEN3Download Eigen3 and compile it as part of the build -
    -
    off (default)
    -
    on
    -
    -
    EIGEN3_INCLUDE_DIR - Provide include directory of existing Eigen3 installation (only needed if at custom location) - -
    - - -### USER-SCAFACOS Package - -To build with this package, you must download and build the [ScaFaCoS Coulomb solver library](http://www.scafacos.de/) - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OptionDescriptionValues
    DOWNLOAD_SCAFACOSDownload SCAFACOS and compile it as part of the build -
    -
    off (default)
    -
    on
    -
    -
    SCAFACOS_LIBRARY - SCAFACOS library file (only needed if at custom location) - -
    SCAFACOS_INCLUDE_DIR - SCAFACOS include directory (only needed if at custom location) - -
    - -## Optional Features - -### zlib support - - - - - - - - - - - - - - - - - - - - - -
    OptionDescriptionValues
    ZLIB_INCLUDE_DIR -
    ZLIB_LIBRARIES -
    - -### JPEG support - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OptionDescriptionValues
    WITH_JPEGEnables/Disable JPEG support in LAMMPS -
    -
    yes (default, if found)
    -
    no
    -
    -
    JPEG_INCLUDE_DIR -
    JPEG_LIBRARIES -
    - -### PNG support -(requires zlib support) - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OptionDescriptionValues
    WITH_PNGEnables/Disable PNG support in LAMMPS -
    -
    yes (default, if found)
    -
    no
    -
    -
    PNG_INCLUDE_DIR -
    PNG_LIBRARIES -
    - -### GZIP support - -requires `gzip` to be in your `PATH` - - - - - - - - - - - - - - - - - - - - - -
    OptionDescriptionValues
    WITH_GZIPEnables/Disable GZIP support in LAMMPS -
    -
    yes (default, if found)
    -
    no
    -
    -
    GZIP_EXECUTABLEPath to gzip executable, will automatically pick up the first one in your $PATH.(automatic)
    - -### FFMPEG support - -requires `ffmpeg` to be in your `PATH` - - - - - - - - - - - - - - - - - - - - - -
    OptionDescriptionValues
    WITH_FFMPEGEnables/Disable FFMPEG support in LAMMPS -
    -
    yes (default, if found)
    -
    no
    -
    -
    FFMPEG_EXECUTABLEPath to ffmpeg executable, will automatically pick up the first one in your $PATH.(automatic)
    - - -## Compilers - -By default, `cmake` will use your environment C/C++/Fortran compilers for a -build. It uses the `CC`, `CXX` and `FC` environment variables to detect which -compilers should be used. However, these values will be cached after the first -run of `cmake`. Subsequent runs of `cmake` will ignore changes in these -environment variables. To ensure the correct values are used you avoid the -cache by setting the `CMAKE_C_COMPILER`, `CMAKE_CXX_COMPILER`, -`CMAKE_Fortran_COMPILER` options directly. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OptionDescriptionDefault
    CMAKE_C_COMPILERC Compiler which should be used by CMakevalue of `CC` environment variable at first `cmake` run
    CMAKE_CXX_COMPILERC++ compiler which should be used by CMake - value of `CXX` environment variable at first `cmake` run -
    CMAKE_Fortran_COMPILERC++ compiler which should be used by CMake - value of `FC` environment variable at first `cmake` run -
    CXX_COMPILER_LAUNCHERCMake will run this tool and pass the compiler and its arguments to the tool. Some example tools are distcc and ccache. - (empty) -
    - -### Building with GNU Compilers - -```bash -cmake -D CMAKE_C_COMPILER=gcc -D CMAKE_CXX_COMPILER=g++ -D CMAKE_Fortran_COMPILER=gfortran ../cmake -``` - -### Building with Intel Compilers - -```bash -cmake -D CMAKE_C_COMPILER=icc -D CMAKE_CXX_COMPILER=icpc -D CMAKE_Fortran_COMPILER=ifort ../cmake -``` - - -### Building with LLVM/Clang Compilers - -```bash -cmake -D CMAKE_C_COMPILER=clang -D CMAKE_CXX_COMPILER=clang++ -D CMAKE_Fortran_COMPILER=flang ../cmake -``` - -## LAMMPS Developer Options - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OptionDescriptionValues
    ENABLE_TESTINGControl wheather to add tests via CTest -
    -
    off (default)
    -
    on
    -
    -
    LAMMPS_TESTING_SOURCE_DIRCustom location of lammps-testing repository (optional). If not specified it will download it via Git -
    LAMMPS_TESTING_GIT_TAGIf lammps-testing repository is cloned, this is the tag/commit that will be checked out -
    -
    master (default)
    -
    -
    ENABLE_COVERAGEEnables code coverage support via gcov and adds a gcovr build target to generate a coverage report. -
    -
    off (default)
    -
    on
    -
    -
    ENABLE_SANITIZE_ADDRESSEnables Address Sanitizer support when compiling using GCC or Clang for detecting memory leaks in binaries while running them. See https://clang.llvm.org/docs/AddressSanitizer.html -
    -
    off (default)
    -
    on
    -
    -
    ENABLE_SANITIZE_UNDEFINEDEnables Undefined Behavior Sanitizer support when compiling using GCC or Clang for detecting code that is running into undefined behavior of the language. See https://clang.llvm.org/docs/UndefinedBehaviorSanitizer.html -
    -
    off (default)
    -
    on
    -
    -
    ENABLE_SANITIZE_THREADEnables Thread Sanitizer support when compiling using GCC or Clang for detecting data races in binaries while running them. See https://clang.llvm.org/docs/ThreadSanitizer.html -
    -
    off (default)
    -
    on
    -
    -
    -- GitLab From 732ae97083291845e2d59a18e0fe61c75403c4b2 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 13 Apr 2020 20:50:45 -0400 Subject: [PATCH 288/717] update version string for next patch release --- doc/lammps.1 | 2 +- src/version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/lammps.1 b/doc/lammps.1 index d2851603c6..fd228f892f 100644 --- a/doc/lammps.1 +++ b/doc/lammps.1 @@ -1,4 +1,4 @@ -.TH LAMMPS "19 March 2020" "2020-03-19" +.TH LAMMPS "15 April 2020" "2020-04-15" .SH NAME .B LAMMPS \- Molecular Dynamics Simulator. diff --git a/src/version.h b/src/version.h index 774a0a4b96..65a0ca8e7d 100644 --- a/src/version.h +++ b/src/version.h @@ -1 +1 @@ -#define LAMMPS_VERSION "19 Mar 2020" +#define LAMMPS_VERSION "15 Apr 2020" -- GitLab From a5059092b3a37e3417089d2d78cc3d99de972a76 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 13 Apr 2020 22:26:20 -0400 Subject: [PATCH 289/717] fix permissions --- doc/src/JPG/bow_tutorial_01.png | Bin doc/src/JPG/bow_tutorial_01_small.png | Bin doc/src/JPG/bow_tutorial_02.png | Bin doc/src/JPG/bow_tutorial_02_small.png | Bin doc/src/JPG/bow_tutorial_03.png | Bin doc/src/JPG/bow_tutorial_03_small.png | Bin doc/src/JPG/bow_tutorial_04.png | Bin doc/src/JPG/bow_tutorial_04_small.png | Bin doc/src/JPG/bow_tutorial_05.png | Bin doc/src/JPG/bow_tutorial_06.png | Bin doc/src/JPG/bow_tutorial_07.png | Bin doc/src/JPG/bow_tutorial_08.png | Bin doc/src/JPG/bow_tutorial_09.png | Bin doc/src/JPG/bow_tutorial_10.png | Bin doc/src/JPG/offload_knc.png | Bin doc/src/JPG/rhodo_staggered.jpg | Bin doc/src/JPG/saed_ewald_intersect.jpg | Bin doc/src/JPG/saed_ewald_intersect_small.jpg | Bin doc/src/JPG/saed_mesh.jpg | Bin doc/src/JPG/saed_mesh_small.jpg | Bin doc/src/JPG/user_intel.png | Bin doc/src/JPG/xrd_mesh.jpg | Bin doc/src/JPG/xrd_mesh_small.jpg | Bin 23 files changed, 0 insertions(+), 0 deletions(-) mode change 100755 => 100644 doc/src/JPG/bow_tutorial_01.png mode change 100755 => 100644 doc/src/JPG/bow_tutorial_01_small.png mode change 100755 => 100644 doc/src/JPG/bow_tutorial_02.png mode change 100755 => 100644 doc/src/JPG/bow_tutorial_02_small.png mode change 100755 => 100644 doc/src/JPG/bow_tutorial_03.png mode change 100755 => 100644 doc/src/JPG/bow_tutorial_03_small.png mode change 100755 => 100644 doc/src/JPG/bow_tutorial_04.png mode change 100755 => 100644 doc/src/JPG/bow_tutorial_04_small.png mode change 100755 => 100644 doc/src/JPG/bow_tutorial_05.png mode change 100755 => 100644 doc/src/JPG/bow_tutorial_06.png mode change 100755 => 100644 doc/src/JPG/bow_tutorial_07.png mode change 100755 => 100644 doc/src/JPG/bow_tutorial_08.png mode change 100755 => 100644 doc/src/JPG/bow_tutorial_09.png mode change 100755 => 100644 doc/src/JPG/bow_tutorial_10.png mode change 100755 => 100644 doc/src/JPG/offload_knc.png mode change 100755 => 100644 doc/src/JPG/rhodo_staggered.jpg mode change 100755 => 100644 doc/src/JPG/saed_ewald_intersect.jpg mode change 100755 => 100644 doc/src/JPG/saed_ewald_intersect_small.jpg mode change 100755 => 100644 doc/src/JPG/saed_mesh.jpg mode change 100755 => 100644 doc/src/JPG/saed_mesh_small.jpg mode change 100755 => 100644 doc/src/JPG/user_intel.png mode change 100755 => 100644 doc/src/JPG/xrd_mesh.jpg mode change 100755 => 100644 doc/src/JPG/xrd_mesh_small.jpg diff --git a/doc/src/JPG/bow_tutorial_01.png b/doc/src/JPG/bow_tutorial_01.png old mode 100755 new mode 100644 diff --git a/doc/src/JPG/bow_tutorial_01_small.png b/doc/src/JPG/bow_tutorial_01_small.png old mode 100755 new mode 100644 diff --git a/doc/src/JPG/bow_tutorial_02.png b/doc/src/JPG/bow_tutorial_02.png old mode 100755 new mode 100644 diff --git a/doc/src/JPG/bow_tutorial_02_small.png b/doc/src/JPG/bow_tutorial_02_small.png old mode 100755 new mode 100644 diff --git a/doc/src/JPG/bow_tutorial_03.png b/doc/src/JPG/bow_tutorial_03.png old mode 100755 new mode 100644 diff --git a/doc/src/JPG/bow_tutorial_03_small.png b/doc/src/JPG/bow_tutorial_03_small.png old mode 100755 new mode 100644 diff --git a/doc/src/JPG/bow_tutorial_04.png b/doc/src/JPG/bow_tutorial_04.png old mode 100755 new mode 100644 diff --git a/doc/src/JPG/bow_tutorial_04_small.png b/doc/src/JPG/bow_tutorial_04_small.png old mode 100755 new mode 100644 diff --git a/doc/src/JPG/bow_tutorial_05.png b/doc/src/JPG/bow_tutorial_05.png old mode 100755 new mode 100644 diff --git a/doc/src/JPG/bow_tutorial_06.png b/doc/src/JPG/bow_tutorial_06.png old mode 100755 new mode 100644 diff --git a/doc/src/JPG/bow_tutorial_07.png b/doc/src/JPG/bow_tutorial_07.png old mode 100755 new mode 100644 diff --git a/doc/src/JPG/bow_tutorial_08.png b/doc/src/JPG/bow_tutorial_08.png old mode 100755 new mode 100644 diff --git a/doc/src/JPG/bow_tutorial_09.png b/doc/src/JPG/bow_tutorial_09.png old mode 100755 new mode 100644 diff --git a/doc/src/JPG/bow_tutorial_10.png b/doc/src/JPG/bow_tutorial_10.png old mode 100755 new mode 100644 diff --git a/doc/src/JPG/offload_knc.png b/doc/src/JPG/offload_knc.png old mode 100755 new mode 100644 diff --git a/doc/src/JPG/rhodo_staggered.jpg b/doc/src/JPG/rhodo_staggered.jpg old mode 100755 new mode 100644 diff --git a/doc/src/JPG/saed_ewald_intersect.jpg b/doc/src/JPG/saed_ewald_intersect.jpg old mode 100755 new mode 100644 diff --git a/doc/src/JPG/saed_ewald_intersect_small.jpg b/doc/src/JPG/saed_ewald_intersect_small.jpg old mode 100755 new mode 100644 diff --git a/doc/src/JPG/saed_mesh.jpg b/doc/src/JPG/saed_mesh.jpg old mode 100755 new mode 100644 diff --git a/doc/src/JPG/saed_mesh_small.jpg b/doc/src/JPG/saed_mesh_small.jpg old mode 100755 new mode 100644 diff --git a/doc/src/JPG/user_intel.png b/doc/src/JPG/user_intel.png old mode 100755 new mode 100644 diff --git a/doc/src/JPG/xrd_mesh.jpg b/doc/src/JPG/xrd_mesh.jpg old mode 100755 new mode 100644 diff --git a/doc/src/JPG/xrd_mesh_small.jpg b/doc/src/JPG/xrd_mesh_small.jpg old mode 100755 new mode 100644 -- GitLab From e09349bc912408c53699aaef6110516ef14c6dcb Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 13 Apr 2020 22:41:49 -0400 Subject: [PATCH 290/717] update CMake documentation build for recent changes to the html doc build procedure --- cmake/Modules/Documentation.cmake | 55 ++++++++++++++++++++++++++++--- 1 file changed, 51 insertions(+), 4 deletions(-) diff --git a/cmake/Modules/Documentation.cmake b/cmake/Modules/Documentation.cmake index feff66a9b2..5e5df4de9b 100644 --- a/cmake/Modules/Documentation.cmake +++ b/cmake/Modules/Documentation.cmake @@ -1,10 +1,9 @@ ############################################################################### # Build documentation ############################################################################### -option(BUILD_DOC "Build LAMMPS documentation" OFF) +option(BUILD_DOC "Build LAMMPS HTML documentation" OFF) if(BUILD_DOC) include(ProcessorCount) - ProcessorCount(NPROCS) find_package(PythonInterp 3 REQUIRED) set(VIRTUALENV ${PYTHON_EXECUTABLE} -m virtualenv) @@ -26,15 +25,63 @@ if(BUILD_DOC) COMMAND ${DOCENV_BINARY_DIR}/pip install --upgrade ${LAMMPS_DOC_DIR}/utils/converters ) + # download mathjax distribution and unpack to folder "mathjax" + file(DOWNLOAD "https://github.com/mathjax/MathJax/archive/3.0.5.tar.gz" + "${CMAKE_CURRENT_BINARY_DIR}/mathjax.tar.gz" + EXPECTED_MD5 5d9d3799cce77a1a95eee6be04eb68e7) + + if(NOT EXISTS ${CMAKE_CURRENT_BINARY_DIR}/mathjax) + execute_process(COMMAND ${CMAKE_COMMAND} -E tar xzf mathjax.tar.gz WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) + file(GLOB MATHJAX_VERSION_DIR ${CMAKE_CURRENT_BINARY_DIR}/MathJax-*) + execute_process(COMMAND ${CMAKE_COMMAND} -E rename ${MATHJAX_VERSION_DIR} ${CMAKE_CURRENT_BINARY_DIR}/mathjax) + endif() + + # note, this may run in parallel with other tasks, so we must not use multiple processes here add_custom_command( OUTPUT html DEPENDS ${DOC_SOURCES} docenv requirements.txt - COMMAND ${DOCENV_BINARY_DIR}/sphinx-build -j ${NPROCS} -b html -c ${LAMMPS_DOC_DIR}/utils/sphinx-config -d ${CMAKE_BINARY_DIR}/doctrees ${LAMMPS_DOC_DIR}/src html + COMMAND ${DOCENV_BINARY_DIR}/sphinx-build -b html -c ${LAMMPS_DOC_DIR}/utils/sphinx-config -d ${CMAKE_BINARY_DIR}/doctrees ${LAMMPS_DOC_DIR}/src html + ) + + # copy extra images for link targets + add_custom_command( + OUTPUT html/JPG + DEPENDS html + COMMAND ${CMAKE_COMMAND} -E make_directory html/JPG + ) + set(HTML_EXTRA_IMAGES balance_nonuniform.jpg balance_rcb.jpg + balance_uniform.jpg bow_tutorial_01.png bow_tutorial_02.png + bow_tutorial_03.png bow_tutorial_04.png bow_tutorial_05.png + dump1.jpg dump2.jpg examples_mdpd.gif gran_funnel.png gran_mixer.png + hop1.jpg hop2.jpg saed_ewald_intersect.jpg saed_mesh.jpg + screenshot_atomeye.jpg screenshot_gl.jpg screenshot_pymol.jpg + screenshot_vmd.jpg sinusoid.jpg xrd_mesh.jpg) + set(HTML_IMAGE_TARGETS "") + foreach(_IMG ${HTML_EXTRA_IMAGES}) + string(PREPEND _IMG JPG/) + list(APPEND HTML_IMAGE_TARGETS "html/${_IMG}") + add_custom_command( + OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/html/${_IMG} + DEPENDS ${LAMMPS_DOC_DIR}/src/${_IMG} html/JPG + COMMAND ${CMAKE_COMMAND} -E copy ${LAMMPS_DOC_DIR}/src/${_IMG} ${CMAKE_BINARY_DIR}/html/${_IMG} + ) + endforeach() + + # copy mathjax tree + add_custom_command( + OUTPUT html/_static/mathjax + DEPENDS html + COMMAND ${CMAKE_COMMAND} -E make_directory html/_static/mathjax + ) + add_custom_command( + OUTPUT html/_static/mathjax/es5 + DEPENDS html/_static/mathjax + COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_BINARY_DIR}/mathjax/es5 html/_static/mathjax/es5 ) add_custom_target( doc ALL - DEPENDS html + DEPENDS html html/JPG html/_static/mathjax/es5 ${HTML_IMAGE_TARGETS} SOURCES ${LAMMPS_DOC_DIR}/utils/requirements.txt ${DOC_SOURCES} ) -- GitLab From 1688160669c2982aacac7dcdefb5903068391080 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 13 Apr 2020 22:55:20 -0400 Subject: [PATCH 291/717] don't need to force version 2.4.4 of sphinx anymore --- doc/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/Makefile b/doc/Makefile index f964d109aa..17d394a99a 100644 --- a/doc/Makefile +++ b/doc/Makefile @@ -194,7 +194,7 @@ $(VENV): $(VIRTUALENV) -p $(PYTHON) $(VENV); \ . $(VENV)/bin/activate; \ pip install --upgrade pip; \ - pip install Sphinx==2.4.4; \ + pip install Sphinx; \ pip install sphinxcontrib-spelling ;\ pip install breathe; \ deactivate;\ -- GitLab From 34689fed5ea592951694764d9f4d6244f37ac743 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 13 Apr 2020 23:34:29 -0400 Subject: [PATCH 292/717] make clean-all should also remove Manual.pdf and Developer.pdf --- doc/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/Makefile b/doc/Makefile index 17d394a99a..c1f299a2f7 100644 --- a/doc/Makefile +++ b/doc/Makefile @@ -57,7 +57,7 @@ help: # ------------------------------------------ clean-all: clean - rm -rf $(BUILDDIR)/docenv $(BUILDDIR)/doctrees $(BUILDDIR)/mathjax + rm -rf $(BUILDDIR)/docenv $(BUILDDIR)/doctrees $(BUILDDIR)/mathjax Manual.pdf Developer.pdf clean: clean-spelling rm -rf html epub latex -- GitLab From a3c5751fafec5cc1281466f6e71a3dd9d1a846ca Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 13 Apr 2020 23:40:36 -0400 Subject: [PATCH 293/717] BUILD_LIB variable has been removed from CMake --- cmake/Modules/Packages/MSCG.cmake | 2 +- cmake/Modules/Packages/USER-PLUMED.cmake | 2 +- cmake/Modules/Packages/USER-SCAFACOS.cmake | 2 +- cmake/Modules/Packages/USER-SMD.cmake | 2 +- cmake/Modules/Packages/VORONOI.cmake | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/cmake/Modules/Packages/MSCG.cmake b/cmake/Modules/Packages/MSCG.cmake index 9254935c20..668d318d68 100644 --- a/cmake/Modules/Packages/MSCG.cmake +++ b/cmake/Modules/Packages/MSCG.cmake @@ -35,7 +35,7 @@ if(DOWNLOAD_MSCG) INTERFACE_LINK_LIBRARIES "${LAPACK_LIBRARIES}") target_link_libraries(lammps PRIVATE LAMMPS::MSCG) add_dependencies(LAMMPS::MSCG mscg_build) - if(BUILD_LIB AND NOT BUILD_SHARED_LIBS) + if(NOT BUILD_SHARED_LIBS) install(CODE "MESSAGE(FATAL_ERROR \"Installing liblammps with downloaded libraries is currently not supported.\")") endif() else() diff --git a/cmake/Modules/Packages/USER-PLUMED.cmake b/cmake/Modules/Packages/USER-PLUMED.cmake index 53e424224d..e7605b6bca 100644 --- a/cmake/Modules/Packages/USER-PLUMED.cmake +++ b/cmake/Modules/Packages/USER-PLUMED.cmake @@ -70,7 +70,7 @@ if(DOWNLOAD_PLUMED) ExternalProject_get_property(plumed_build INSTALL_DIR) add_library(LAMMPS::PLUMED UNKNOWN IMPORTED) add_dependencies(LAMMPS::PLUMED plumed_build) - if(BUILD_LIB AND NOT BUILD_SHARED_LIBS) + if(NOT BUILD_SHARED_LIBS) install(CODE "MESSAGE(FATAL_ERROR \"Installing liblammps with downloaded libraries is currently not supported.\")") endif() if(PLUMED_MODE STREQUAL "STATIC") diff --git a/cmake/Modules/Packages/USER-SCAFACOS.cmake b/cmake/Modules/Packages/USER-SCAFACOS.cmake index d51504bcc8..ee12e754e6 100644 --- a/cmake/Modules/Packages/USER-SCAFACOS.cmake +++ b/cmake/Modules/Packages/USER-SCAFACOS.cmake @@ -52,7 +52,7 @@ if(DOWNLOAD_SCAFACOS) INTERFACE_LINK_LIBRARIES "${INSTALL_DIR}/lib/libfcs.a;${INSTALL_DIR}/lib/libfcs_direct.a;${INSTALL_DIR}/lib/libfcs_ewald.a;${INSTALL_DIR}/lib/libfcs_fmm.a;${INSTALL_DIR}/lib/libfcs_p2nfft.a;${INSTALL_DIR}/lib/libfcs_p3m.a;GSL::gsl;${INSTALL_DIR}/lib/libfcs_near.a;${INSTALL_DIR}/lib/libfcs_gridsort.a;${INSTALL_DIR}/lib/libfcs_resort.a;${INSTALL_DIR}/lib/libfcs_redist.a;${INSTALL_DIR}/lib/libfcs_common.a;${INSTALL_DIR}/lib/libfcs_pnfft.a;${INSTALL_DIR}/lib/libfcs_pfft.a;${INSTALL_DIR}/lib/libfcs_fftw3_mpi.a;${INSTALL_DIR}/lib/libfcs_fftw3.a;MPI::MPI_Fortran;MPI::MPI_C") target_link_libraries(lammps PRIVATE LAMMPS::SCAFACOS) add_dependencies(LAMMPS::SCAFACOS scafacos_build) - if(BUILD_LIB AND NOT BUILD_SHARED_LIBS) + if(NOT BUILD_SHARED_LIBS) install(CODE "MESSAGE(FATAL_ERROR \"Installing liblammps with downloaded libraries is currently not supported.\")") endif() else() diff --git a/cmake/Modules/Packages/USER-SMD.cmake b/cmake/Modules/Packages/USER-SMD.cmake index c2775c5a8e..0a5165471c 100644 --- a/cmake/Modules/Packages/USER-SMD.cmake +++ b/cmake/Modules/Packages/USER-SMD.cmake @@ -18,7 +18,7 @@ if(DOWNLOAD_EIGEN3) set_target_properties(LAMMPS::EIGEN3 PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${SOURCE_DIR}") target_link_libraries(lammps PRIVATE LAMMPS::EIGEN3) add_dependencies(LAMMPS::EIGEN3 Eigen3_build) - if(BUILD_LIB AND NOT BUILD_SHARED_LIBS) + if(NOT BUILD_SHARED_LIBS) install(CODE "MESSAGE(FATAL_ERROR \"Installing liblammps with downloaded libraries is currently not supported.\")") endif() else() diff --git a/cmake/Modules/Packages/VORONOI.cmake b/cmake/Modules/Packages/VORONOI.cmake index 69c2ab3301..4635466a50 100644 --- a/cmake/Modules/Packages/VORONOI.cmake +++ b/cmake/Modules/Packages/VORONOI.cmake @@ -35,7 +35,7 @@ if(DOWNLOAD_VORO) INTERFACE_INCLUDE_DIRECTORIES "${SOURCE_DIR}/src") target_link_libraries(lammps PRIVATE LAMMPS::VORO) add_dependencies(LAMMPS::VORO voro_build) - if(BUILD_LIB AND NOT BUILD_SHARED_LIBS) + if(NOT BUILD_SHARED_LIBS) install(CODE "MESSAGE(FATAL_ERROR \"Installing liblammps with downloaded libraries is currently not supported.\")") endif() else() -- GitLab From 4f8d4a10d93f5338a5b1637be9660b24be6ea497 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 14 Apr 2020 00:00:21 -0400 Subject: [PATCH 294/717] small tweaks and grammar/style improvements --- doc/src/Build_cmake.rst | 71 ++++++++++++++++++++++------------------- doc/src/Howto_cmake.rst | 6 ++-- 2 files changed, 42 insertions(+), 35 deletions(-) diff --git a/doc/src/Build_cmake.rst b/doc/src/Build_cmake.rst index 82ba093220..8948406dc8 100644 --- a/doc/src/Build_cmake.rst +++ b/doc/src/Build_cmake.rst @@ -1,10 +1,11 @@ Build LAMMPS with CMake ======================= -This page describes how to use CMake in general to build LAMMPS. -Details for specific compile time settings and options to enable -and configure add-on packages are discussed with those packages. -Links to those pages on the :doc:`Build overview ` page. +This page describes how to use `CMake `_ in general +to build LAMMPS. Details for specific compile time settings and options +to enable and configure add-on packages are discussed with those +packages. Links to those pages on the :doc:`Build overview ` +page. The following text assumes some familiarity with CMake and focuses on using the command line tool ``cmake`` and what settings are supported @@ -33,26 +34,29 @@ Advantages of using CMake ^^^^^^^^^^^^^^^^^^^^^^^^^ CMake is an alternative to compiling LAMMPS in the traditional way -through :doc:`(manually customized) makefiles ` and a rather -recent addition to LAMMPS thanks to the efforts of Christoph Junghans -(LANL) and Richard Berger (Temple U). Using CMake has multiple -advantages that are specifically helpful for people with limited -experience in compiling software or for people that want to modify or -extend LAMMPS. - -- Detect available hardware, tools, features, and libraries and adapt - the LAMMPS build configuration accordingly. -- Output files for different build tools or integrated development - environments (IDEs). -- Customization settings with text mode or graphical user interface. No - knowledge of make file format and syntax required. -- All components compiled in a single build operation. -- Support for out-of-source compilation. Multiple configurations and - settings with different choices of LAMMPS packages, settings, or +through :doc:`(manually customized) makefiles ` and a recent +addition to LAMMPS thanks to the efforts of Christoph Junghans (LANL) +and Richard Berger (Temple U). Using CMake has multiple advantages that +are specifically helpful for people with limited experience in compiling +software or for people that want to modify or extend LAMMPS. + +- CMake can detect available hardware, tools, features, and libraries + and adapt the LAMMPS default build configuration accordingly. +- CMake can generate files for different build tools and integrated + development environments (IDE). +- CMake supports customization of settings with a text mode or graphical + user interface. No knowledge of file formats or and complex command + line syntax required. +- All enabled components are compiled in a single build operation. +- Automated dependency tracking for all files and configuration options. +- Support for true out-of-source compilation. Multiple configurations + and settings with different choices of LAMMPS packages, settings, or compilers can be configured and built concurrently from the same source tree. - Simplified packaging of LAMMPS for Linux distributions, environment modules, or automated build tools like `Homebrew `_. +- Integration of automated regression testing (the LAMMPS side for that + is still under development). .. _cmake_build: @@ -60,12 +64,14 @@ Getting started ^^^^^^^^^^^^^^^ Building LAMMPS with CMake is a two-step process. First you use CMake -to generate build environment in a new directory. For that purpose you -can use either the command-line utility ``cmake`` (or ``cmake3``), the -text-mode UI utility ``ccmake`` (or ``ccmake3``) or the graphical -utility ``cmake-gui``, or use them interchangeably. Here is a minimal -example using the command line version of CMake to build LAMMPS with no -add-on packages enabled and no customization: +to generate a build environment in a new directory. For that purpose +you can use either the command-line utility ``cmake`` (or ``cmake3``), +the text-mode UI utility ``ccmake`` (or ``ccmake3``) or the graphical +utility ``cmake-gui``, or use them interchangeably. The second step is +then the compilation and linking of all objects, libraries, and +executables. Here is a minimal example using the command line version of +CMake to build LAMMPS with no add-on packages enabled and no +customization: .. code-block:: bash @@ -94,11 +100,11 @@ tasks). Also installation of the `ccache `_ (= Compiler Cache) software may speed up repeated compilation even more, e.g. during code development. -After the initial build, whenever you edit LAMMPS source files, add -or remove packages, change compiler flags or build options, +After the initial build, whenever you edit LAMMPS source files, enable +or disable packages, change compiler flags or build options, you must re-compile and relink the LAMMPS executable with ``cmake --build .``. If the compilation fails for some reason, try running ``cmake .`` and -then compile again. The included dependency tracking of should insure +then compile again. The included dependency tracking should make certain that only the necessary subset of files are re-compiled. After compilation, you may optionally install the LAMMPS executable into @@ -108,9 +114,10 @@ your system with: make install # optional, copy compiled files into installation location -This will install the LAMMPS executable and library, some tools (if configured) -and additional files like LAMMPS API headers, manpages, potential and force field -files. The location of the installation tree defaults to ``${HOME}/.local``. +This will install the LAMMPS executable and library, some tools (if +configured) and additional files like LAMMPS API headers, manpages, +potential and force field files. The location of the installation tree +defaults to ``${HOME}/.local``. .. _cmake_options: diff --git a/doc/src/Howto_cmake.rst b/doc/src/Howto_cmake.rst index 127b550c5a..5fbb621e42 100644 --- a/doc/src/Howto_cmake.rst +++ b/doc/src/Howto_cmake.rst @@ -62,8 +62,8 @@ it should look like this: bench doc lib potentials README tools cmake examples LICENSE python src -Build directory versus source directory ---------------------------------------- +Build versus source directory +----------------------------- When using CMake the build procedure is separated into multiple distinct phases: @@ -329,7 +329,7 @@ Some common LAMMPS specific variables * - ``BUILD_TOOLS`` - compile some additional executables from the ``tools`` folder (default: ``off``) * - ``BUILD_DOC`` - - include building the documentation (default: ``off``) + - include building the HTML format documentation for packaging/installing (default: ``off``) * - ``CMAKE_TUNE_FLAGS`` - common compiler flags, for optimization or instrumentation (default: compiler specific) * - ``LAMMPS_MACHINE`` -- GitLab From 872f15f2be1b6d60dd160b9f9d0234382ba101b5 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 14 Apr 2020 00:30:53 -0400 Subject: [PATCH 295/717] remove no longer needed include --- cmake/Modules/Documentation.cmake | 1 - 1 file changed, 1 deletion(-) diff --git a/cmake/Modules/Documentation.cmake b/cmake/Modules/Documentation.cmake index 5e5df4de9b..771a05146e 100644 --- a/cmake/Modules/Documentation.cmake +++ b/cmake/Modules/Documentation.cmake @@ -3,7 +3,6 @@ ############################################################################### option(BUILD_DOC "Build LAMMPS HTML documentation" OFF) if(BUILD_DOC) - include(ProcessorCount) find_package(PythonInterp 3 REQUIRED) set(VIRTUALENV ${PYTHON_EXECUTABLE} -m virtualenv) -- GitLab From 4ded155cf247b4a9b5efab4f4109a7f271908e1a Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 14 Apr 2020 00:31:45 -0400 Subject: [PATCH 296/717] simplify directory creation and copying of static content --- cmake/Modules/Documentation.cmake | 24 +++++------------------- 1 file changed, 5 insertions(+), 19 deletions(-) diff --git a/cmake/Modules/Documentation.cmake b/cmake/Modules/Documentation.cmake index 771a05146e..929d6ebd4b 100644 --- a/cmake/Modules/Documentation.cmake +++ b/cmake/Modules/Documentation.cmake @@ -34,6 +34,8 @@ if(BUILD_DOC) file(GLOB MATHJAX_VERSION_DIR ${CMAKE_CURRENT_BINARY_DIR}/MathJax-*) execute_process(COMMAND ${CMAKE_COMMAND} -E rename ${MATHJAX_VERSION_DIR} ${CMAKE_CURRENT_BINARY_DIR}/mathjax) endif() + file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/html/_static/mathjax) + file(COPY ${CMAKE_CURRENT_BINARY_DIR}/mathjax/es5 DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/html/_static/mathjax/) # note, this may run in parallel with other tasks, so we must not use multiple processes here add_custom_command( @@ -42,12 +44,8 @@ if(BUILD_DOC) COMMAND ${DOCENV_BINARY_DIR}/sphinx-build -b html -c ${LAMMPS_DOC_DIR}/utils/sphinx-config -d ${CMAKE_BINARY_DIR}/doctrees ${LAMMPS_DOC_DIR}/src html ) - # copy extra images for link targets - add_custom_command( - OUTPUT html/JPG - DEPENDS html - COMMAND ${CMAKE_COMMAND} -E make_directory html/JPG - ) + # copy selected image files to html output tree + file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/html/JPG) set(HTML_EXTRA_IMAGES balance_nonuniform.jpg balance_rcb.jpg balance_uniform.jpg bow_tutorial_01.png bow_tutorial_02.png bow_tutorial_03.png bow_tutorial_04.png bow_tutorial_05.png @@ -66,21 +64,9 @@ if(BUILD_DOC) ) endforeach() - # copy mathjax tree - add_custom_command( - OUTPUT html/_static/mathjax - DEPENDS html - COMMAND ${CMAKE_COMMAND} -E make_directory html/_static/mathjax - ) - add_custom_command( - OUTPUT html/_static/mathjax/es5 - DEPENDS html/_static/mathjax - COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_BINARY_DIR}/mathjax/es5 html/_static/mathjax/es5 - ) - add_custom_target( doc ALL - DEPENDS html html/JPG html/_static/mathjax/es5 ${HTML_IMAGE_TARGETS} + DEPENDS html html/_static/mathjax/es5 ${HTML_IMAGE_TARGETS} SOURCES ${LAMMPS_DOC_DIR}/utils/requirements.txt ${DOC_SOURCES} ) -- GitLab From 3c2b23e821177aa2f17a62c042ac19ed90d5635c Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 14 Apr 2020 01:13:22 -0400 Subject: [PATCH 297/717] small tweaks and grammar corrections --- doc/src/Build_basics.rst | 3 ++- doc/src/Build_cmake.rst | 12 ++++++----- doc/src/Build_development.rst | 38 ++++++++++++++++++----------------- 3 files changed, 29 insertions(+), 24 deletions(-) diff --git a/doc/src/Build_basics.rst b/doc/src/Build_basics.rst index 7bb167a3df..335c1a5189 100644 --- a/doc/src/Build_basics.rst +++ b/doc/src/Build_basics.rst @@ -495,7 +495,8 @@ It is also possible to create the HTML version of the manual within the :doc:`CMake build directory `. The reason for this option is to include the installation of the HTML manual pages into the "install" step when installing LAMMPS after the CMake build via -``make install``. +``make install``. The documentation build is included in the default +build target, but can also be requested independently with ``make doc``. .. code-block:: bash diff --git a/doc/src/Build_cmake.rst b/doc/src/Build_cmake.rst index 8948406dc8..3473d83143 100644 --- a/doc/src/Build_cmake.rst +++ b/doc/src/Build_cmake.rst @@ -101,11 +101,13 @@ Compiler Cache) software may speed up repeated compilation even more, e.g. during code development. After the initial build, whenever you edit LAMMPS source files, enable -or disable packages, change compiler flags or build options, -you must re-compile and relink the LAMMPS executable with ``cmake --build .``. -If the compilation fails for some reason, try running ``cmake .`` and -then compile again. The included dependency tracking should make certain -that only the necessary subset of files are re-compiled. +or disable packages, change compiler flags or build options, you must +re-compile and relink the LAMMPS executable with ``cmake --build .`` (or +``make``). If the compilation fails for some reason, try running +``cmake .`` and then compile again. The included dependency tracking +should make certain that only the necessary subset of files are +re-compiled. You can also delete compiled objects, libraries and +executables with ``cmake --build . clean`` (or ``make clean``). After compilation, you may optionally install the LAMMPS executable into your system with: diff --git a/doc/src/Build_development.rst b/doc/src/Build_development.rst index 21e99d69be..474e1fb833 100644 --- a/doc/src/Build_development.rst +++ b/doc/src/Build_development.rst @@ -1,15 +1,15 @@ Development build options (CMake only) ====================================== -The CMake build of LAMMPS has a few extra options which are useful during -development, testing or debugging. +The CMake build procedure of LAMMPS offers a few extra options which are +useful during development, testing or debugging. ---------- .. _compilation: Verify compilation flags ------------------------------------------- +------------------------ Sometimes it is necessary to verify the complete sequence of compilation flags generated by the CMake build. To enable a more verbose output during @@ -30,7 +30,7 @@ Another way of doing this without reconfiguration is calling make with variable .. _sanitizer: Address, Undefined Behavior, and Thread Sanitizer Support -------------------------------------------------------------------------- +--------------------------------------------------------- Compilers such as GCC and Clang support generating instrumented binaries which use different sanitizer libraries to detect problems in code @@ -41,10 +41,11 @@ during run-time. They can detect issues like: - `data races `_ Please note that this kind of instrumentation usually comes with a small -performance hit (much less than using tools like `Valgrind `_). -The to enable these features additional compiler flags need to be added -to the compilation and linking stages. This is most easily done through -setting the ``CMAKE_TUNE_FLAGS`` variable during configuration. Examples: +performance hit (much less than using tools like `Valgrind +`_). The to enable these features additional +compiler flags need to be added to the compilation and linking stages. +This is most easily done through setting the ``CMAKE_TUNE_FLAGS`` +variable during configuration. Examples: .. code-block:: bash @@ -52,8 +53,6 @@ setting the ``CMAKE_TUNE_FLAGS`` variable during configuration. Examples: -D CMAKE_TUNE_FLAGS=-fsanitize=undefined # enable undefined behavior sanitizer -D CMAKE_TUNE_FLAGS=-fsanitize=thread # enable thread sanitizer -.. _valgrind: https://valgrind.org - ---------- .. _testing: @@ -75,24 +74,26 @@ developers can run the tests directly on their workstation. -D LAMMPS_TESTING_SOURCE_DIR=path # path to lammps-testing repository (option if in custom location) -D LAMMPS_TESTING_GIT_TAG=value # version of lammps-testing repository that should be used, value = master (default) or custom git commit or tag -If you enable testing in the CMake build it will create an additional target called "test". You can run them with: +If you enable testing in the CMake build it will create an additional +target called "test". You can run them with: .. code-block:: bash - make test + cmake --build . test The test cases used come from the lammps-testing repository. They are -derivatives of the examples folder with some modifications to make the run -faster. +derivatives of the examples folder with some modifications to make the +run faster. -You can also collect code coverage metrics while running the tests by enabling -coverage support during building. +You can also collect code coverage metrics while running the tests by +enabling coverage support during building. .. code-block:: bash -D ENABLE_COVERAGE=value # enable coverage measurements, value = no (default) or yes -This will also add the following targets to generate coverage reports after running the LAMMPS executable: +This will also add the following targets to generate coverage reports +after running the LAMMPS executable: .. code-block:: bash @@ -100,7 +101,8 @@ This will also add the following targets to generate coverage reports after runn make gen_coverage_html # generate coverage report in HTML format make gen_coverage_xml # generate coverage report in XML format -These reports require GCOVR to be installed. The easiest way to do this to install it via pip: +These reports require GCOVR to be installed. The easiest way to do this +to install it via pip: .. code-block:: bash -- GitLab From b8b1e60b37629b3a2187e6928761a1af2101a84f Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 14 Apr 2020 01:13:46 -0400 Subject: [PATCH 298/717] describe various abstract build targets for CMake --- doc/src/Howto_cmake.rst | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/doc/src/Howto_cmake.rst b/doc/src/Howto_cmake.rst index 5fbb621e42..db7b88dc3d 100644 --- a/doc/src/Howto_cmake.rst +++ b/doc/src/Howto_cmake.rst @@ -404,6 +404,38 @@ this scenario it is particularly convenient to do the second configuration step using either the text mode or graphical user interface (``ccmake`` or ``cmake-gui``). +Compilation and build targets +----------------------------- + +The actual compilation will be started by running the selected build +command (on Linux this is by default ``make``, see below how to select +alternatives). You can also use the portable command ``cmake --build .`` +which will adapt to whatever the selected build command is. +This is particularly convenient, if you have set a custom build command +via the ``CMAKE_MAKE_PROGRAM`` variable. + +When calling the build program, you can also select which "target" is to +be build through appending the name of the target to the build command. +Example: ``cmake --build . all``. The following abstract targets are available: + +.. list-table:: + :header-rows: 1 + + * - Target + - Description + * - ``all`` + - build "everything" (default) + * - ``lammps`` + - build the LAMMPS library and executable + * - ``doc`` + - build the HTML documentation (if configured) + * - ``install`` + - install all target files into folders in ``CMAKE_INSTALL_PREFIX`` + * - ``test`` + - run some simple tests (if configured with ``-D ENABLE_TESTING=on``) + * - ``clean`` + - remove all generated files + Choosing generators ------------------- -- GitLab From dc7853956accacba5288cc09ee952210296c4a35 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 14 Apr 2020 06:01:07 -0400 Subject: [PATCH 299/717] remove trailing whitespace --- src/SPIN/compute_spin.cpp | 12 ++++++------ src/SPIN/compute_spin.h | 8 ++++---- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/SPIN/compute_spin.cpp b/src/SPIN/compute_spin.cpp index fc1b582f43..94eff27f53 100644 --- a/src/SPIN/compute_spin.cpp +++ b/src/SPIN/compute_spin.cpp @@ -48,7 +48,7 @@ ComputeSpin::ComputeSpin(LAMMPS *lmp, int narg, char **arg) : vector_flag = 1; size_vector = 6; extvector = 0; - + // initialize the magnetic interaction flags pair_spin_flag = 0; @@ -79,7 +79,7 @@ void ComputeSpin::init() precession_spin_flag = 0; // set ptrs on Pair/Spin styles - + // loop 1: obtain # of Pairs, and # of Pair/Spin styles if (force->pair_match("spin",0,0)) { // only one Pair/Spin style @@ -129,7 +129,7 @@ void ComputeSpin::init() long_spin_flag = 1; } } - + // ptrs FixPrecessionSpin classes int iforce; @@ -179,13 +179,13 @@ void ComputeSpin::compute_vector() mag[0] += sp[i][0]; mag[1] += sp[i][1]; mag[2] += sp[i][2]; - + // update magnetic precession energies - + if (precession_spin_flag) { magenergy += lockprecessionspin->emag[i]; } - + // update magnetic pair interactions if (pair_spin_flag) { diff --git a/src/SPIN/compute_spin.h b/src/SPIN/compute_spin.h index 2ff0ba8eee..d98a61bb39 100644 --- a/src/SPIN/compute_spin.h +++ b/src/SPIN/compute_spin.h @@ -35,13 +35,13 @@ class ComputeSpin : public Compute { int pair_spin_flag; // magnetic pair flags int long_spin_flag; // magnetic long-range flag int precession_spin_flag; // magnetic precession flags - + double kb,hbar; - + // pointers to magnetic fixes - + class FixPrecessionSpin *lockprecessionspin; - + // pointers to magnetic pair styles int npairs, npairspin; // # of pairs, and # of spin pairs -- GitLab From da36b252cc4c0b1127839ab9eeea1e9fcfc8bc47 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 14 Apr 2020 06:08:10 -0400 Subject: [PATCH 300/717] remove even more trailing whitespace --- src/SPIN/fix_precession_spin.cpp | 4 ++-- src/SPIN/fix_precession_spin.h | 4 ++-- src/SPIN/pair_spin.cpp | 4 ++-- src/SPIN/pair_spin.h | 4 ++-- src/SPIN/pair_spin_dipole_cut.cpp | 2 +- src/SPIN/pair_spin_dipole_long.cpp | 4 ++-- src/SPIN/pair_spin_dmi.cpp | 2 +- src/SPIN/pair_spin_exchange.cpp | 6 +++--- src/SPIN/pair_spin_magelec.cpp | 2 +- src/SPIN/pair_spin_neel.cpp | 8 ++++---- 10 files changed, 20 insertions(+), 20 deletions(-) diff --git a/src/SPIN/fix_precession_spin.cpp b/src/SPIN/fix_precession_spin.cpp index 9785c55ed6..b788d27d05 100644 --- a/src/SPIN/fix_precession_spin.cpp +++ b/src/SPIN/fix_precession_spin.cpp @@ -261,12 +261,12 @@ void FixPrecessionSpin::post_force(int /* vflag */) double spi[4], fmi[3], epreci; // checking size of emag - + if (nlocal_max < nlocal) { // grow emag lists if necessary nlocal_max = nlocal; memory->grow(emag,nlocal_max,"pair/spin:emag"); } - + eflag = 0; eprec = 0.0; for (int i = 0; i < nlocal; i++) { diff --git a/src/SPIN/fix_precession_spin.h b/src/SPIN/fix_precession_spin.h index e13aa446c8..9c3c616077 100644 --- a/src/SPIN/fix_precession_spin.h +++ b/src/SPIN/fix_precession_spin.h @@ -41,7 +41,7 @@ class FixPrecessionSpin : public Fix { int zeeman_flag, aniso_flag, cubic_flag; void compute_single_precession(int, double *, double *); - + // zeeman calculations void compute_zeeman(int, double *); @@ -58,7 +58,7 @@ class FixPrecessionSpin : public Fix { double compute_cubic_energy(double *); // storing magnetic energies - + int nlocal_max; // max nlocal (for list size) double *emag; // energy list diff --git a/src/SPIN/pair_spin.cpp b/src/SPIN/pair_spin.cpp index d52a52ad0c..b0965d1271 100644 --- a/src/SPIN/pair_spin.cpp +++ b/src/SPIN/pair_spin.cpp @@ -87,8 +87,8 @@ void PairSpin::init_style() if (!have_fix && (comm->me == 0)) error->warning(FLERR,"Using spin pair style without nve/spin or neb/spin"); - // check if newton pair is on - + // check if newton pair is on + if ((force->newton_pair == 0) && (comm->me == 0)) error->all(FLERR,"Pair style spin requires newton pair on"); diff --git a/src/SPIN/pair_spin.h b/src/SPIN/pair_spin.h index a9f3b37077..8bbb27ed06 100644 --- a/src/SPIN/pair_spin.h +++ b/src/SPIN/pair_spin.h @@ -31,9 +31,9 @@ friend class FixNVESpin; virtual void compute(int, int) {} virtual void compute_single_pair(int, double *) {} - + // storing magnetic energies - + int nlocal_max; // max nlocal (for list size) double *emag; // energy list diff --git a/src/SPIN/pair_spin_dipole_cut.cpp b/src/SPIN/pair_spin_dipole_cut.cpp index 8851728721..cdae3c0bab 100644 --- a/src/SPIN/pair_spin_dipole_cut.cpp +++ b/src/SPIN/pair_spin_dipole_cut.cpp @@ -187,7 +187,7 @@ void PairSpinDipoleCut::compute(int eflag, int vflag) firstneigh = list->firstneigh; // checking size of emag - + if (nlocal_max < nlocal) { // grow emag lists if necessary nlocal_max = nlocal; memory->grow(emag,nlocal_max,"pair/spin:emag"); diff --git a/src/SPIN/pair_spin_dipole_long.cpp b/src/SPIN/pair_spin_dipole_long.cpp index 2cce3acd72..aeb916cfae 100644 --- a/src/SPIN/pair_spin_dipole_long.cpp +++ b/src/SPIN/pair_spin_dipole_long.cpp @@ -214,7 +214,7 @@ void PairSpinDipoleLong::compute(int eflag, int vflag) firstneigh = list->firstneigh; // checking size of emag - + if (nlocal_max < nlocal) { // grow emag lists if necessary nlocal_max = nlocal; memory->grow(emag,nlocal_max,"pair/spin:emag"); @@ -230,7 +230,7 @@ void PairSpinDipoleLong::compute(int eflag, int vflag) for (ii = 0; ii < inum; ii++) { i = ilist[ii]; itype = type[i]; - + jlist = firstneigh[i]; jnum = numneigh[i]; xi[0] = x[i][0]; diff --git a/src/SPIN/pair_spin_dmi.cpp b/src/SPIN/pair_spin_dmi.cpp index 67d4024028..c6b0564463 100644 --- a/src/SPIN/pair_spin_dmi.cpp +++ b/src/SPIN/pair_spin_dmi.cpp @@ -193,7 +193,7 @@ void PairSpinDmi::compute(int eflag, int vflag) firstneigh = list->firstneigh; // checking size of emag - + if (nlocal_max < nlocal) { // grow emag lists if necessary nlocal_max = nlocal; memory->grow(emag,nlocal_max,"pair/spin:emag"); diff --git a/src/SPIN/pair_spin_exchange.cpp b/src/SPIN/pair_spin_exchange.cpp index 49368fcc93..5c5d5cb1a4 100644 --- a/src/SPIN/pair_spin_exchange.cpp +++ b/src/SPIN/pair_spin_exchange.cpp @@ -178,7 +178,7 @@ void PairSpinExchange::compute(int eflag, int vflag) firstneigh = list->firstneigh; // checking size of emag - + if (nlocal_max < nlocal) { // grow emag lists if necessary nlocal_max = nlocal; memory->grow(emag,nlocal_max,"pair/spin:emag"); @@ -400,13 +400,13 @@ void PairSpinExchange::compute_exchange_mech(int i, int j, double rsq, double ei // double energy = 0.0; // itype = type[i]; // jtype = type[j]; -// +// // Jex = J1_mech[itype][jtype]; // ra = rsq/J3[itype][jtype]/J3[itype][jtype]; // Jex = 4.0*Jex*ra; // Jex *= (1.0-J2[itype][jtype]*ra); // Jex *= exp(-ra); -// +// // energy = Jex*(spi[0]*spj[0]+spi[1]*spj[1]+spi[2]*spj[2]); // return energy; // } diff --git a/src/SPIN/pair_spin_magelec.cpp b/src/SPIN/pair_spin_magelec.cpp index fc7e75a427..741305fbf4 100644 --- a/src/SPIN/pair_spin_magelec.cpp +++ b/src/SPIN/pair_spin_magelec.cpp @@ -187,7 +187,7 @@ void PairSpinMagelec::compute(int eflag, int vflag) firstneigh = list->firstneigh; // checking size of emag - + if (nlocal_max < nlocal) { // grow emag lists if necessary nlocal_max = nlocal; memory->grow(emag,nlocal_max,"pair/spin:emag"); diff --git a/src/SPIN/pair_spin_neel.cpp b/src/SPIN/pair_spin_neel.cpp index 7133606f91..4fd8ecc215 100644 --- a/src/SPIN/pair_spin_neel.cpp +++ b/src/SPIN/pair_spin_neel.cpp @@ -192,7 +192,7 @@ void PairSpinNeel::compute(int eflag, int vflag) firstneigh = list->firstneigh; // checking size of emag - + if (nlocal_max < nlocal) { // grow emag lists if necessary nlocal_max = nlocal; memory->grow(emag,nlocal_max,"pair/spin:emag"); @@ -214,7 +214,7 @@ void PairSpinNeel::compute(int eflag, int vflag) spi[1] = sp[i][1]; spi[2] = sp[i][2]; emag[i] = 0.0; - + // loop on neighbors for (jj = 0; jj < jnum; jj++) { @@ -399,7 +399,7 @@ void PairSpinNeel::compute_neel(int i, int j, double rsq, double eij[3], double q2r = -2.0*qr/5.0; // pseudo-dipolar component - + eij_si = eij[0]*spi[0] + eij[1]*spi[1] + eij[2]*spi[2]; eij_sj = eij[0]*spj[0] + eij[1]*spj[1] + eij[2]*spj[2]; si_sj = spi[0]*spj[0] + spi[1]*spj[1] + spi[2]*spj[2]; @@ -573,7 +573,7 @@ void PairSpinNeel::compute_neel_mech(int i, int j, double rsq, double eij[3], do /* ---------------------------------------------------------------------- */ -double PairSpinNeel::compute_neel_energy(int i, int j, double rsq, double eij[3], double spi[3], double spj[3]) +double PairSpinNeel::compute_neel_energy(int i, int j, double rsq, double eij[3], double spi[3], double spj[3]) { int *type = atom->type; int itype, jtype; -- GitLab From dcbf9f7d1709946da9ed31dfb68974a0df63f4a8 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Tue, 14 Apr 2020 12:16:28 -0600 Subject: [PATCH 301/717] cmake: improve exported target --- cmake/CMakeLists.txt | 2 + cmake/LAMMPSConfig.cmake.in | 87 +++++++++++++++++-------------------- 2 files changed, 41 insertions(+), 48 deletions(-) diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index e28bab6385..5c695d4002 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -541,6 +541,8 @@ endforeach() configure_file(pkgconfig/liblammps.pc.in ${CMAKE_CURRENT_BINARY_DIR}/liblammps${LAMMPS_MACHINE}.pc @ONLY) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/liblammps${LAMMPS_MACHINE}.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) install(EXPORT LAMMPS_Targets FILE LAMMPS_Targets.cmake NAMESPACE LAMMPS:: DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/LAMMPS) +file(GLOB MODULE_FILES ${CMAKE_CURRENT_SOURCE_DIR}/Modules/Find*.cmake) +install(FILES ${MODULE_FILES} DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/LAMMPS) include(CMakePackageConfigHelpers) configure_file(LAMMPSConfig.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/LAMMPSConfig.cmake @ONLY) write_basic_package_version_file("LAMMPSConfigVersion.cmake" VERSION ${PROJECT_VERSION} COMPATIBILITY ExactVersion) diff --git a/cmake/LAMMPSConfig.cmake.in b/cmake/LAMMPSConfig.cmake.in index fac56efba2..6abeb202f7 100644 --- a/cmake/LAMMPSConfig.cmake.in +++ b/cmake/LAMMPSConfig.cmake.in @@ -1,23 +1,14 @@ +set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR}) include(CMakeFindDependencyMacro) if(@BUILD_MPI@) find_dependency(MPI REQUIRED CXX) endif() +if(@BUILD_OMP@) + find_dependency(OpenMP REQUIRED) +endif() if(@PKG_KSPACE@) if(@FFT@ STREQUAL "FFTW3") - if(@FFTW@ STREQUAL "FFTW3" AND NOT TARGET FFTW3::FFTW3) - add_library(FFTW3::FFTW3 UNKNOWN IMPORTED) - set_target_properties(FFTW3::FFTW3 PROPERTIES - IMPORTED_LINK_INTERFACE_LANGUAGES "C" - IMPORTED_LOCATION "@FFTW3_LIBRARY@" - INTERFACE_INCLUDE_DIRECTORIES "@FFTW3_INCLUDE_DIRS@") - endif() - if(@FFTW@ STREQUAL "FFTW3F" AND NOT TARGET FFTW3F::FFTW3F) - add_library(FFTW3F::FFTW3F UNKNOWN IMPORTED) - set_target_properties(FFTW3F::FFTW3F PROPERTIES - IMPORTED_LINK_INTERFACE_LANGUAGES "C" - IMPORTED_LOCATION "@FFTW3F_LIBRARY@" - INTERFACE_INCLUDE_DIRECTORIES "@FFTW3F_INCLUDE_DIRS@") - endif() + find_dependency(@FFTW@ REQUIRED MODULE) endif() endif() if(NOT @BUILD_SHARED_LIBS@) @@ -28,36 +19,20 @@ if(NOT @BUILD_SHARED_LIBS@) find_dependency(PNG REQUIRED) find_dependency(ZLIB REQUIRED) endif() - if(@PKG_KIM@ AND NOT @DOWNLOAD_KIM@) + if(@PKG_KIM@) find_dependency(PkgConfig REQUIRED) pkg_check_modules(KIM-API REQUIRED IMPORTED_TARGET libkim-api>=@KIM-API_MIN_VERSION@) if(@CURL_FOUND@) find_dependency(CURL REQUIRED) endif() endif() - if(@PKG_USER-SMD@ AND NOT @DOWNLOAD_EIGEN3@) + if(@PKG_USER-SMD@) find_dependency(Eigen3 NO_MODULE REQUIRED) endif() - if(@PKG_KSPACE@) - if(@FFT@ STREQUAL "FFTW3" AND @FFT_FFTW_THREADS@) - if(@FFTW@ STREQUAL "FFTW3" AND NOT TARGET FFTW3::FFTW3_OMP) - add_library(FFTW3::FFTW3_OMP UNKNOWN IMPORTED) - set_target_properties(FFTW3::FFTW3_OMP PROPERTIES - IMPORTED_LINK_INTERFACE_LANGUAGES "C" - IMPORTED_LOCATION "@FFTW3_OMP_LIBRARY@" - INTERFACE_INCLUDE_DIRECTORIES "@FFTW3_OMP_INCLUDE_DIRS@") - endif() - if(@FFTW@ STREQUAL "FFTW3F" AND NOT TARGET FFTW3F::FFTW3F_OMP) - add_library(FFTW3F::FFTW3F_OMP UNKNOWN IMPORTED) - set_target_properties(FFTW3F::FFTW3F_OMP PROPERTIES - IMPORTED_LINK_INTERFACE_LANGUAGES "C" - IMPORTED_LOCATION "@FFTW3F_OMP_LIBRARY@" - INTERFACE_INCLUDE_DIRECTORIES "@FFTW3F_OMP_INCLUDE_DIRS@") - endif() - endif() - endif() - if(@PKG_USER-SCAFACOS@ AND NOT @DOWNLOAD_SCAFACOS@) + if(@PKG_USER-SCAFACOS@) find_dependency(PkgConfig REQUIRED) + find_ependency(GSL REQUIRED) + find_dependency(MPI REQUIRED C Fortran) pkg_check_modules(SCAFACOS REQUIRED IMPORTED_TARGET scafacos) endif() if(@PKG_PYTHON@ AND NOT CMAKE_VERSION VERSION_LESS 3.12) @@ -71,26 +46,42 @@ if(NOT @BUILD_SHARED_LIBS@) find_dependency(Kokkos 3 REQUIRED) endif() endif() - if(@PKG_VORONOI@ AND NOT @DOWNLOAD_VORO@) - if(NOT TARGET VORO::VORO) - add_library(VORO::VORO UNKNOWN IMPORTED) - set_target_properties(VORO::VORO PROPERTIES - IMPORTED_LOCATION "@VORO_LIBRARY@" - INTERFACE_INCLUDE_DIRECTORIES "@VORO_INCLUDE_DIR@") - endif() + if(@PKG_VORONOI@) + find_dependency(VORO REQUIRED) endif() if(@PKG_USER-INTEL@) if(@INTEL_LRT_MODE@ STREQUAL "THREADS") find_dependency(Threads REQUIRED) endif() if(@TBB_MALLOC_FOUND@) - if(NOT TARGET TBB::TBB_MALLOC) - add_library(TBB::TBB_MALLOC UNKNOWN IMPORTED) - set_target_properties(TBB::TBB_MALLOC PROPERTIES - IMPORTED_LOCATION "@TBB_MALLOC_LIBRARY@" - INTERFACE_INCLUDE_DIRECTORIES "@TBB_MALLOC_INCLUDE_DIR@") - endif() + find_ependency(TBB_MALLOC REQUIRED) endif() endif() + if(@PKG_USER-ADIOS@) + find_ependency(ADIOS2 REQUIRED) + endif() + if(@PKG_LATTE@) + find_ependency(LATTE REQUIRED) + endif() + if(@PKG_MESSAGE@) + if(@MESSAGE_ZMQ@) + find_ependency(ZMQ REQUIRED) + endif() + endif() + if(@PKG_MSCG@) + find_ependency(GSL REQUIRED) + find_ependency(MSCG REQUIRED) + endif() + if(@USER-NETCDF@) + if(@NETCDF_FOUND@) + find_ependency(NetCDF REQUIRED) + endif() + if(@PNETCDF_FOUND@) + find_ependency(PNetCDF REQUIRED) + endif() + endif() + if(@PKG_QUIP@) + find_ependency(QUIP REQUIRED) + endif() endif() include("${CMAKE_CURRENT_LIST_DIR}/LAMMPS_Targets.cmake") -- GitLab From be1f3073847b94575a63a6e8efb6fa5f2457ee2c Mon Sep 17 00:00:00 2001 From: Giacomo Fiorin Date: Tue, 14 Apr 2020 16:57:04 -0400 Subject: [PATCH 302/717] Add defines to build Lepton with MSVC and traditional make --- lib/colvars/Makefile.common | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/lib/colvars/Makefile.common b/lib/colvars/Makefile.common index 0482cff74a..2f2e2beffb 100644 --- a/lib/colvars/Makefile.common +++ b/lib/colvars/Makefile.common @@ -61,7 +61,7 @@ ifeq ($(COLVARS_LEPTON),no) LEPTON_INCFLAGS = COLVARS_OBJS = $(COLVARS_SRCS:.cpp=.o) else -LEPTON_INCFLAGS = -Ilepton/include -DLEPTON +LEPTON_INCFLAGS = -Ilepton/include -DLEPTON -DLEPTON_USE_STATIC_LIBRARIES COLVARS_OBJS = $(COLVARS_SRCS:.cpp=.o) $(LEPTON_SRCS:.cpp=.o) endif @@ -82,4 +82,20 @@ Makefile.deps: $(COLVARS_SRCS) done include Makefile.deps + +# Exceptions to pattern rule above for Lepton objects + +lepton/src/CompiledExpression.o: lepton/src/CompiledExpression.cpp + $(CXX) $(CXXFLAGS) -Ilepton/include -DLEPTON_BUILDING_STATIC_LIBRARY -c -o $@ $< +lepton/src/ExpressionProgram.o: lepton/src/ExpressionProgram.cpp + $(CXX) $(CXXFLAGS) -Ilepton/include -DLEPTON_BUILDING_STATIC_LIBRARY -c -o $@ $< +lepton/src/ExpressionTreeNode.o: lepton/src/ExpressionTreeNode.cpp + $(CXX) $(CXXFLAGS) -Ilepton/include -DLEPTON_BUILDING_STATIC_LIBRARY -c -o $@ $< +lepton/src/Operation.o: lepton/src/Operation.cpp + $(CXX) $(CXXFLAGS) -Ilepton/include -DLEPTON_BUILDING_STATIC_LIBRARY -c -o $@ $< +lepton/src/ParsedExpression.o: lepton/src/ParsedExpression.cpp + $(CXX) $(CXXFLAGS) -Ilepton/include -DLEPTON_BUILDING_STATIC_LIBRARY -c -o $@ $< +lepton/src/Parser.o: lepton/src/Parser.cpp + $(CXX) $(CXXFLAGS) -Ilepton/include -DLEPTON_BUILDING_STATIC_LIBRARY -c -o $@ $< + include Makefile.lepton.deps # Hand-generated -- GitLab From f5eb1c5b9de12f34df955bfc21a26d8934a98e83 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Tue, 14 Apr 2020 15:15:16 -0600 Subject: [PATCH 303/717] cmake: OpenMP dep is not public --- cmake/LAMMPSConfig.cmake.in | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/cmake/LAMMPSConfig.cmake.in b/cmake/LAMMPSConfig.cmake.in index 6abeb202f7..7cd782b3b8 100644 --- a/cmake/LAMMPSConfig.cmake.in +++ b/cmake/LAMMPSConfig.cmake.in @@ -3,15 +3,15 @@ include(CMakeFindDependencyMacro) if(@BUILD_MPI@) find_dependency(MPI REQUIRED CXX) endif() -if(@BUILD_OMP@) - find_dependency(OpenMP REQUIRED) -endif() if(@PKG_KSPACE@) if(@FFT@ STREQUAL "FFTW3") find_dependency(@FFTW@ REQUIRED MODULE) endif() endif() if(NOT @BUILD_SHARED_LIBS@) + if(@BUILD_OMP@) + find_dependency(OpenMP REQUIRED) + endif() if(@WITH_JPEG@) find_dependency(JPEG REQUIRED) endif() -- GitLab From 677f5cc99721f4bff553c95879b26c3c4e22252c Mon Sep 17 00:00:00 2001 From: julient31 Date: Tue, 14 Apr 2020 15:22:20 -0600 Subject: [PATCH 304/717] C3 JT 041420 --- src/KOKKOS/min_cg_kokkos.cpp | 12 ++++++++++-- src/KOKKOS/min_kokkos.cpp | 31 ++++++++++++++++++++++++++++--- src/KOKKOS/min_kokkos.h | 1 + 3 files changed, 39 insertions(+), 5 deletions(-) diff --git a/src/KOKKOS/min_cg_kokkos.cpp b/src/KOKKOS/min_cg_kokkos.cpp index 47a4513bc0..23954705ef 100644 --- a/src/KOKKOS/min_cg_kokkos.cpp +++ b/src/KOKKOS/min_cg_kokkos.cpp @@ -19,6 +19,7 @@ #include "timer.h" #include "atom_kokkos.h" #include "atom_masks.h" +#include "error.h" #include "fix_minimize_kokkos.h" using namespace LAMMPS_NS; @@ -42,7 +43,7 @@ MinCGKokkos::MinCGKokkos(LAMMPS *lmp) : MinLineSearchKokkos(lmp) int MinCGKokkos::iterate(int maxiter) { int fail,ntimestep; - double beta,gg,dot[2],dotall[2]; + double beta,gg,dot[2],dotall[2],fdotf; fix_minimize_kk->k_vectors.sync(); fix_minimize_kk->k_vectors.modify(); @@ -111,7 +112,14 @@ int MinCGKokkos::iterate(int maxiter) dot[1] = sdot.d1; MPI_Allreduce(dot,dotall,2,MPI_DOUBLE,MPI_SUM,world); - if (dotall[0] < update->ftol*update->ftol) return FTOL; + fdotf = 0.0; + if (update->ftol > 0.0) { + if (normstyle == MAX) fdotf = fnorm_max(); // max force norm + else if (normstyle == INF) fdotf = fnorm_inf(); // infinite force norm + else if (normstyle == TWO) fdotf = dotall[0]; // same as fnorm_sqr(), Euclidean force 2-norm + else error->all(FLERR,"Illegal min_modify command"); + if (fdotf < update->ftol*update->ftol) return FTOL; + } // update new search direction h from new f = -Grad(x) and old g // this is Polak-Ribieri formulation diff --git a/src/KOKKOS/min_kokkos.cpp b/src/KOKKOS/min_kokkos.cpp index 79ddbbab84..30b362dc51 100644 --- a/src/KOKKOS/min_kokkos.cpp +++ b/src/KOKKOS/min_kokkos.cpp @@ -236,7 +236,7 @@ void MinKokkos::setup(int flag) einitial = ecurrent; fnorm2_init = sqrt(fnorm_sqr()); - fnorminf_init = fnorm_inf(); + fnorminf_init = sqrt(fnorm_inf()); } /* ---------------------------------------------------------------------- @@ -345,7 +345,7 @@ void MinKokkos::setup_minimal(int flag) einitial = ecurrent; fnorm2_init = sqrt(fnorm_sqr()); - fnorminf_init = fnorm_inf(); + fnorminf_init = sqrt(fnorm_inf()); } /* ---------------------------------------------------------------------- @@ -620,7 +620,7 @@ double MinKokkos::fnorm_inf() auto l_fvec = fvec; Kokkos::parallel_reduce(nvec, LAMMPS_LAMBDA(int i, double& local_norm_inf) { - local_norm_inf = MAX(fabs(l_fvec[i]),local_norm_inf); + local_norm_inf = MAX(l_fvec[i]*l_fvec[i],local_norm_inf); },Kokkos::Max(local_norm_inf)); } @@ -629,3 +629,28 @@ double MinKokkos::fnorm_inf() return norm_inf; } + +/* ---------------------------------------------------------------------- + compute and return ||force||_max (inf norm per-vector) +------------------------------------------------------------------------- */ + +double MinKokkos::fnorm_max() +{ + + double local_norm_max = 0.0; + { + // local variables for lambda capture + + auto l_fvec = fvec; + + Kokkos::parallel_reduce(nvec, LAMMPS_LAMBDA(int i, double& local_norm_max) { + double fdotf = l_fvec[i]*l_fvec[i]+l_fvec[i+1]*l_fvec[i+1]+l_fvec[i+2]*l_fvec[i+2]; + local_norm_max = MAX(fdotf,local_norm_max); + },Kokkos::Max(local_norm_max)); + } + + double norm_max = 0.0; + MPI_Allreduce(&local_norm_max,&norm_max,1,MPI_DOUBLE,MPI_MAX,world); + + return norm_max; +} diff --git a/src/KOKKOS/min_kokkos.h b/src/KOKKOS/min_kokkos.h index 49cd1d1849..da61d62d43 100644 --- a/src/KOKKOS/min_kokkos.h +++ b/src/KOKKOS/min_kokkos.h @@ -29,6 +29,7 @@ class MinKokkos : public Min { void run(int); double fnorm_sqr(); double fnorm_inf(); + double fnorm_max(); virtual void init_style() {} virtual void setup_style() = 0; -- GitLab From 250e3892f821211402379eb3148d7bc5df0a1cca Mon Sep 17 00:00:00 2001 From: Giacomo Fiorin Date: Tue, 14 Apr 2020 17:07:14 -0400 Subject: [PATCH 305/717] Add defines to build Lepton with MSVC and CMake --- cmake/Modules/Packages/USER-COLVARS.cmake | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/cmake/Modules/Packages/USER-COLVARS.cmake b/cmake/Modules/Packages/USER-COLVARS.cmake index 281b497dea..31e64e3790 100644 --- a/cmake/Modules/Packages/USER-COLVARS.cmake +++ b/cmake/Modules/Packages/USER-COLVARS.cmake @@ -12,6 +12,8 @@ if(COLVARS_LEPTON) if(NOT BUILD_SHARED_LIBS) install(TARGETS lepton EXPORT LAMMPS_Targets LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) endif() + # Change the define below to LEPTON_BUILDING_SHARED_LIBRARY when linking Lepton as a DLL with MSVC + target_compile_definitions(lepton PRIVATE -DLEPTON_BUILDING_STATIC_LIBRARY) set_target_properties(lepton PROPERTIES OUTPUT_NAME lammps_lepton${LAMMPS_MACHINE}) target_include_directories(lepton PRIVATE ${LEPTON_DIR}/include) endif() @@ -27,6 +29,8 @@ target_link_libraries(lammps PRIVATE colvars) if(COLVARS_LEPTON) target_link_libraries(lammps PRIVATE lepton) - target_compile_options(colvars PRIVATE -DLEPTON) + target_compile_definitions(colvars PRIVATE -DLEPTON) + # Disable the line below when linking Lepton as a DLL with MSVC + target_compile_definitions(colvars PRIVATE -DLEPTON_USE_STATIC_LIBRARIES) target_include_directories(colvars PUBLIC ${LEPTON_DIR}/include) endif() -- GitLab From 5eee4cb1baff91392d4b09a0a472d2fb484ba022 Mon Sep 17 00:00:00 2001 From: julient31 Date: Tue, 14 Apr 2020 15:44:15 -0600 Subject: [PATCH 306/717] C4 JT 041420 - reran all SPIN examples --- ...n.bfo.g++.1 => log.14Apr20.spin.bfo.g++.1} | 48 +++--- ...n.bfo.g++.4 => log.14Apr20.spin.bfo.g++.4} | 46 +++--- ...++.1 => log.14Apr20.spin.cobalt_fcc.g++.1} | 78 +++++----- ...++.4 => log.14Apr20.spin.cobalt_fcc.g++.4} | 94 ++++++------ .../log.14Apr20.spin.cobalt_hcp.g++.1 | 142 ++++++++++++++++++ .../log.14Apr20.spin.cobalt_hcp.g++.4 | 142 ++++++++++++++++++ .../log.30Mar20.spin.cobalt_hcp.g++.1 | 138 ----------------- .../log.30Mar20.spin.cobalt_hcp.g++.4 | 138 ----------------- ...=> log.14Apr20.spin.iron_dipole_cut.g++.1} | 30 ++-- ...=> log.14Apr20.spin.iron_dipole_cut.g++.4} | 30 ++-- ... log.14Apr20.spin.iron_dipole_ewald.g++.1} | 36 +++-- ... log.14Apr20.spin.iron_dipole_ewald.g++.4} | 38 ++--- ...> log.14Apr20.spin.iron_dipole_pppm.g++.1} | 32 ++-- ...> log.14Apr20.spin.iron_dipole_pppm.g++.4} | 32 ++-- .../SPIN/iron/log.14Apr20.spin.iron.g++.1 | 141 +++++++++++++++++ .../SPIN/iron/log.14Apr20.spin.iron.g++.4 | 141 +++++++++++++++++ ...++.1 => log.14Apr20.spin.iron_cubic.g++.1} | 78 +++++----- ...++.4 => log.14Apr20.spin.iron_cubic.g++.4} | 78 +++++----- .../SPIN/iron/log.30Mar20.spin.iron.g++.1 | 137 ----------------- .../SPIN/iron/log.30Mar20.spin.iron.g++.4 | 137 ----------------- .../SPIN/nickel/log.14Apr20.spin.nickel.g++.1 | 141 +++++++++++++++++ .../SPIN/nickel/log.14Apr20.spin.nickel.g++.4 | 141 +++++++++++++++++ .../log.14Apr20.spin.nickel_cubic.g++.1 | 142 ++++++++++++++++++ .../log.14Apr20.spin.nickel_cubic.g++.4 | 142 ++++++++++++++++++ .../SPIN/nickel/log.30Mar20.spin.nickel.g++.1 | 137 ----------------- .../SPIN/nickel/log.30Mar20.spin.nickel.g++.4 | 137 ----------------- .../log.30Mar20.spin.nickel_cubic.g++.1 | 138 ----------------- .../log.30Mar20.spin.nickel_cubic.g++.4 | 138 ----------------- ...g++.1 => log.14Apr20.spin.read_data.g++.1} | 36 ++--- ...g++.4 => log.14Apr20.spin.read_data.g++.4} | 36 ++--- ...t.g++.1 => log.14Apr20.spin.restart.g++.1} | 38 ++--- ...t.g++.4 => log.14Apr20.spin.restart.g++.4} | 36 ++--- ...1 => log.14Apr20.spin.write_restart.g++.1} | 46 +++--- ...4 => log.14Apr20.spin.write_restart.g++.4} | 46 +++--- .../read_restart/restart_hcp_cobalt.equil | Bin 60893 -> 60909 bytes examples/SPIN/run_spin_examples.sh | 2 +- ....g++.1 => log.14Apr20.spin.setforce.g++.1} | 48 +++--- ....g++.4 => log.14Apr20.spin.setforce.g++.4} | 48 +++--- ...n.g++.1 => log.14Apr20.spin.bfo_min.g++.1} | 68 +++++---- ...n.g++.4 => log.14Apr20.spin.bfo_min.g++.4} | 66 ++++---- ...++.1 => log.14Apr20.spin.bfo_min_cg.g++.1} | 46 +++--- ...++.4 => log.14Apr20.spin.bfo_min_cg.g++.4} | 46 +++--- ...1 => log.14Apr20.spin.bfo_min_lbfgs.g++.1} | 45 +++--- ...4 => log.14Apr20.spin.bfo_min_lbfgs.g++.4} | 44 +++--- ....g++.1 => log.14Apr20.spin.iron_min.g++.1} | 44 +++--- ....g++.4 => log.14Apr20.spin.iron_min.g++.4} | 46 +++--- 46 files changed, 1850 insertions(+), 1743 deletions(-) rename examples/SPIN/bfo/{log.30Mar20.spin.bfo.g++.1 => log.14Apr20.spin.bfo.g++.1} (65%) rename examples/SPIN/bfo/{log.30Mar20.spin.bfo.g++.4 => log.14Apr20.spin.bfo.g++.4} (65%) rename examples/SPIN/cobalt_fcc/{log.30Mar20.spin.cobalt_fcc.g++.1 => log.14Apr20.spin.cobalt_fcc.g++.1} (66%) rename examples/SPIN/cobalt_fcc/{log.30Mar20.spin.cobalt_fcc.g++.4 => log.14Apr20.spin.cobalt_fcc.g++.4} (55%) create mode 100644 examples/SPIN/cobalt_hcp/log.14Apr20.spin.cobalt_hcp.g++.1 create mode 100644 examples/SPIN/cobalt_hcp/log.14Apr20.spin.cobalt_hcp.g++.4 delete mode 100644 examples/SPIN/cobalt_hcp/log.30Mar20.spin.cobalt_hcp.g++.1 delete mode 100644 examples/SPIN/cobalt_hcp/log.30Mar20.spin.cobalt_hcp.g++.4 rename examples/SPIN/dipole_spin/{log.30Mar20.spin.iron_dipole_cut.g++.1 => log.14Apr20.spin.iron_dipole_cut.g++.1} (75%) rename examples/SPIN/dipole_spin/{log.30Mar20.spin.iron_dipole_cut.g++.4 => log.14Apr20.spin.iron_dipole_cut.g++.4} (75%) rename examples/SPIN/dipole_spin/{log.30Mar20.spin.iron_dipole_ewald.g++.1 => log.14Apr20.spin.iron_dipole_ewald.g++.1} (74%) rename examples/SPIN/dipole_spin/{log.30Mar20.spin.iron_dipole_ewald.g++.4 => log.14Apr20.spin.iron_dipole_ewald.g++.4} (73%) rename examples/SPIN/dipole_spin/{log.30Mar20.spin.iron_dipole_pppm.g++.1 => log.14Apr20.spin.iron_dipole_pppm.g++.1} (77%) rename examples/SPIN/dipole_spin/{log.30Mar20.spin.iron_dipole_pppm.g++.4 => log.14Apr20.spin.iron_dipole_pppm.g++.4} (76%) create mode 100644 examples/SPIN/iron/log.14Apr20.spin.iron.g++.1 create mode 100644 examples/SPIN/iron/log.14Apr20.spin.iron.g++.4 rename examples/SPIN/iron/{log.30Mar20.spin.iron_cubic.g++.1 => log.14Apr20.spin.iron_cubic.g++.1} (65%) rename examples/SPIN/iron/{log.30Mar20.spin.iron_cubic.g++.4 => log.14Apr20.spin.iron_cubic.g++.4} (65%) delete mode 100644 examples/SPIN/iron/log.30Mar20.spin.iron.g++.1 delete mode 100644 examples/SPIN/iron/log.30Mar20.spin.iron.g++.4 create mode 100644 examples/SPIN/nickel/log.14Apr20.spin.nickel.g++.1 create mode 100644 examples/SPIN/nickel/log.14Apr20.spin.nickel.g++.4 create mode 100644 examples/SPIN/nickel/log.14Apr20.spin.nickel_cubic.g++.1 create mode 100644 examples/SPIN/nickel/log.14Apr20.spin.nickel_cubic.g++.4 delete mode 100644 examples/SPIN/nickel/log.30Mar20.spin.nickel.g++.1 delete mode 100644 examples/SPIN/nickel/log.30Mar20.spin.nickel.g++.4 delete mode 100644 examples/SPIN/nickel/log.30Mar20.spin.nickel_cubic.g++.1 delete mode 100644 examples/SPIN/nickel/log.30Mar20.spin.nickel_cubic.g++.4 rename examples/SPIN/read_restart/{log.30Mar20.spin.read_data.g++.1 => log.14Apr20.spin.read_data.g++.1} (61%) rename examples/SPIN/read_restart/{log.30Mar20.spin.read_data.g++.4 => log.14Apr20.spin.read_data.g++.4} (61%) rename examples/SPIN/read_restart/{log.30Mar20.spin.restart.g++.1 => log.14Apr20.spin.restart.g++.1} (63%) rename examples/SPIN/read_restart/{log.30Mar20.spin.restart.g++.4 => log.14Apr20.spin.restart.g++.4} (62%) rename examples/SPIN/read_restart/{log.30Mar20.spin.write_restart.g++.1 => log.14Apr20.spin.write_restart.g++.1} (62%) rename examples/SPIN/read_restart/{log.30Mar20.spin.write_restart.g++.4 => log.14Apr20.spin.write_restart.g++.4} (62%) rename examples/SPIN/setforce_spin/{log.30Mar20.spin.setforce.g++.1 => log.14Apr20.spin.setforce.g++.1} (69%) rename examples/SPIN/setforce_spin/{log.30Mar20.spin.setforce.g++.4 => log.14Apr20.spin.setforce.g++.4} (69%) rename examples/SPIN/spinmin/{log.30Mar20.spin.bfo_min.g++.1 => log.14Apr20.spin.bfo_min.g++.1} (51%) rename examples/SPIN/spinmin/{log.30Mar20.spin.bfo_min.g++.4 => log.14Apr20.spin.bfo_min.g++.4} (52%) rename examples/SPIN/spinmin/{log.30Mar20.spin.bfo_min_cg.g++.1 => log.14Apr20.spin.bfo_min_cg.g++.1} (64%) rename examples/SPIN/spinmin/{log.30Mar20.spin.bfo_min_cg.g++.4 => log.14Apr20.spin.bfo_min_cg.g++.4} (64%) rename examples/SPIN/spinmin/{log.30Mar20.spin.bfo_min_lbfgs.g++.1 => log.14Apr20.spin.bfo_min_lbfgs.g++.1} (67%) rename examples/SPIN/spinmin/{log.30Mar20.spin.bfo_min_lbfgs.g++.4 => log.14Apr20.spin.bfo_min_lbfgs.g++.4} (67%) rename examples/SPIN/spinmin/{log.30Mar20.spin.iron_min.g++.1 => log.14Apr20.spin.iron_min.g++.1} (73%) rename examples/SPIN/spinmin/{log.30Mar20.spin.iron_min.g++.4 => log.14Apr20.spin.iron_min.g++.4} (73%) diff --git a/examples/SPIN/bfo/log.30Mar20.spin.bfo.g++.1 b/examples/SPIN/bfo/log.14Apr20.spin.bfo.g++.1 similarity index 65% rename from examples/SPIN/bfo/log.30Mar20.spin.bfo.g++.1 rename to examples/SPIN/bfo/log.14Apr20.spin.bfo.g++.1 index f80e8d93fd..c5ad4e70ac 100644 --- a/examples/SPIN/bfo/log.30Mar20.spin.bfo.g++.1 +++ b/examples/SPIN/bfo/log.14Apr20.spin.bfo.g++.1 @@ -1,4 +1,6 @@ -LAMMPS (18 Feb 2020) +LAMMPS (19 Mar 2020) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (../comm.cpp:94) + using 1 OpenMP thread(s) per MPI task # layer sc iron atoms (in the [001] plane) in bismuth oxide units metal @@ -17,7 +19,7 @@ Created orthogonal box = (0 0 0) to (134.64 134.64 19.8) 1 by 1 by 1 MPI processor grid create_atoms 1 box Created 5780 atoms - create_atoms CPU = 0.00285411 secs + create_atoms CPU = 0.00263691 secs # setting mass, mag. moments, and interactions for bfo @@ -82,31 +84,31 @@ Neighbor list info ... bin: none Per MPI rank memory allocation (min/avg/max) = 8.154 | 8.154 | 8.154 Mbytes Step Time v_magnorm PotEng v_emag Temp TotEng - 0 0 0.010071723 -0.75067967 -0.75067967 0 -0.75067967 - 50 0.01 0.0098309931 -2.0051482 -2.0051482 0 -2.0051482 - 100 0.02 0.0095903925 -3.2508773 -3.2508773 0 -3.2508773 - 150 0.03 0.0093489139 -4.4890121 -4.4890121 0 -4.4890121 - 200 0.04 0.0091051407 -5.7205892 -5.7205892 0 -5.7205892 - 250 0.05 0.0088575394 -6.9463058 -6.9463058 0 -6.9463058 - 300 0.06 0.0086053184 -8.166564 -8.166564 0 -8.166564 - 350 0.07 0.0083490959 -9.3816392 -9.3816392 0 -9.3816392 - 400 0.08 0.0080907742 -10.591802 -10.591802 0 -10.591802 - 450 0.09 0.0078327124 -11.797322 -11.797322 0 -11.797322 - 500 0.1 0.0075768488 -12.998416 -12.998416 0 -12.998416 -Loop time of 13.6445 on 1 procs for 500 steps with 5780 atoms - -Performance: 0.633 ns/day, 37.901 hours/ns, 36.645 timesteps/s -100.0% CPU use with 1 MPI tasks x no OpenMP threads + 0 0 0.010071723 -0.69133656 -0.69133656 0 -0.69133656 + 50 0.01 0.0098309931 -1.3200811 -1.3200811 0 -1.3200811 + 100 0.02 0.0095903925 -1.9446727 -1.9446727 0 -1.9446727 + 150 0.03 0.0093489139 -2.5653446 -2.5653446 0 -2.5653446 + 200 0.04 0.0091051407 -3.1824298 -3.1824298 0 -3.1824298 + 250 0.05 0.0088575394 -3.7962506 -3.7962506 0 -3.7962506 + 300 0.06 0.0086053184 -4.4070501 -4.4070501 0 -4.4070501 + 350 0.07 0.0083490959 -5.0149813 -5.0149813 0 -5.0149813 + 400 0.08 0.0080907742 -5.6201417 -5.6201417 0 -5.6201417 + 450 0.09 0.0078327124 -6.222622 -6.222622 0 -6.222622 + 500 0.1 0.0075768488 -6.8225497 -6.8225497 0 -6.8225497 +Loop time of 12.9141 on 1 procs for 500 steps with 5780 atoms + +Performance: 0.669 ns/day, 35.873 hours/ns, 38.717 timesteps/s +100.0% CPU use with 1 MPI tasks x 1 OpenMP threads MPI task timing breakdown: Section | min time | avg time | max time |%varavg| %total --------------------------------------------------------------- -Pair | 3.7965 | 3.7965 | 3.7965 | 0.0 | 27.82 +Pair | 3.1844 | 3.1844 | 3.1844 | 0.0 | 24.66 Neigh | 0 | 0 | 0 | 0.0 | 0.00 -Comm | 0.011697 | 0.011697 | 0.011697 | 0.0 | 0.09 -Output | 0.049061 | 0.049061 | 0.049061 | 0.0 | 0.36 -Modify | 9.7741 | 9.7741 | 9.7741 | 0.0 | 71.63 -Other | | 0.01323 | | | 0.10 +Comm | 0.012542 | 0.012542 | 0.012542 | 0.0 | 0.10 +Output | 0.048014 | 0.048014 | 0.048014 | 0.0 | 0.37 +Modify | 9.6569 | 9.6569 | 9.6569 | 0.0 | 74.78 +Other | | 0.01233 | | | 0.10 Nlocal: 5780 ave 5780 max 5780 min Histogram: 1 0 0 0 0 0 0 0 0 0 @@ -124,4 +126,4 @@ Dangerous builds = 0 Please see the log.cite file for references relevant to this simulation -Total wall time: 0:00:13 +Total wall time: 0:00:12 diff --git a/examples/SPIN/bfo/log.30Mar20.spin.bfo.g++.4 b/examples/SPIN/bfo/log.14Apr20.spin.bfo.g++.4 similarity index 65% rename from examples/SPIN/bfo/log.30Mar20.spin.bfo.g++.4 rename to examples/SPIN/bfo/log.14Apr20.spin.bfo.g++.4 index d66ddd50d0..655bbaef8e 100644 --- a/examples/SPIN/bfo/log.30Mar20.spin.bfo.g++.4 +++ b/examples/SPIN/bfo/log.14Apr20.spin.bfo.g++.4 @@ -1,4 +1,6 @@ -LAMMPS (18 Feb 2020) +LAMMPS (19 Mar 2020) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (../comm.cpp:94) + using 1 OpenMP thread(s) per MPI task # layer sc iron atoms (in the [001] plane) in bismuth oxide units metal @@ -17,7 +19,7 @@ Created orthogonal box = (0 0 0) to (134.64 134.64 19.8) 2 by 2 by 1 MPI processor grid create_atoms 1 box Created 5780 atoms - create_atoms CPU = 0.00101209 secs + create_atoms CPU = 0.000847816 secs # setting mass, mag. moments, and interactions for bfo @@ -82,31 +84,31 @@ Neighbor list info ... bin: none Per MPI rank memory allocation (min/avg/max) = 7.744 | 7.744 | 7.744 Mbytes Step Time v_magnorm PotEng v_emag Temp TotEng - 0 0 0.010071723 -0.75067967 -0.75067967 0 -0.75067967 - 50 0.01 0.009830993 -2.0051482 -2.0051482 0 -2.0051482 - 100 0.02 0.0095903924 -3.2508773 -3.2508773 0 -3.2508773 - 150 0.03 0.0093489138 -4.4890121 -4.4890121 0 -4.4890121 - 200 0.04 0.0091051405 -5.7205892 -5.7205892 0 -5.7205892 - 250 0.05 0.0088575392 -6.9463058 -6.9463058 0 -6.9463058 - 300 0.06 0.0086053183 -8.166564 -8.166564 0 -8.166564 - 350 0.07 0.0083490958 -9.3816392 -9.3816392 0 -9.3816392 - 400 0.08 0.008090774 -10.591802 -10.591802 0 -10.591802 - 450 0.09 0.0078327123 -11.797322 -11.797322 0 -11.797322 - 500 0.1 0.0075768487 -12.998416 -12.998416 0 -12.998416 -Loop time of 3.88882 on 4 procs for 500 steps with 5780 atoms - -Performance: 2.222 ns/day, 10.802 hours/ns, 128.574 timesteps/s -100.0% CPU use with 4 MPI tasks x no OpenMP threads + 0 0 0.010071723 -0.69133656 -0.69133656 0 -0.69133656 + 50 0.01 0.009830993 -1.3200811 -1.3200811 0 -1.3200811 + 100 0.02 0.0095903924 -1.9446727 -1.9446727 0 -1.9446727 + 150 0.03 0.0093489138 -2.5653446 -2.5653446 0 -2.5653446 + 200 0.04 0.0091051405 -3.1824298 -3.1824298 0 -3.1824298 + 250 0.05 0.0088575392 -3.7962506 -3.7962506 0 -3.7962506 + 300 0.06 0.0086053183 -4.4070501 -4.4070501 0 -4.4070501 + 350 0.07 0.0083490958 -5.0149813 -5.0149813 0 -5.0149813 + 400 0.08 0.008090774 -5.6201417 -5.6201417 0 -5.6201417 + 450 0.09 0.0078327123 -6.222622 -6.222622 0 -6.222622 + 500 0.1 0.0075768487 -6.8225497 -6.8225497 0 -6.8225497 +Loop time of 3.92182 on 4 procs for 500 steps with 5780 atoms + +Performance: 2.203 ns/day, 10.894 hours/ns, 127.492 timesteps/s +99.9% 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.94501 | 0.96064 | 0.98328 | 1.7 | 24.70 +Pair | 0.80837 | 0.82745 | 0.8485 | 1.6 | 21.10 Neigh | 0 | 0 | 0 | 0.0 | 0.00 -Comm | 0.025942 | 0.051198 | 0.068365 | 7.9 | 1.32 -Output | 0.01292 | 0.012939 | 0.012979 | 0.0 | 0.33 -Modify | 2.8601 | 2.8619 | 2.8649 | 0.1 | 73.59 -Other | | 0.002178 | | | 0.06 +Comm | 0.045699 | 0.067487 | 0.090503 | 6.1 | 1.72 +Output | 0.01387 | 0.0139 | 0.01394 | 0.0 | 0.35 +Modify | 3.0065 | 3.0105 | 3.0138 | 0.2 | 76.76 +Other | | 0.002516 | | | 0.06 Nlocal: 1445 ave 1445 max 1445 min Histogram: 4 0 0 0 0 0 0 0 0 0 diff --git a/examples/SPIN/cobalt_fcc/log.30Mar20.spin.cobalt_fcc.g++.1 b/examples/SPIN/cobalt_fcc/log.14Apr20.spin.cobalt_fcc.g++.1 similarity index 66% rename from examples/SPIN/cobalt_fcc/log.30Mar20.spin.cobalt_fcc.g++.1 rename to examples/SPIN/cobalt_fcc/log.14Apr20.spin.cobalt_fcc.g++.1 index 15cf17fba2..f233c5e9ea 100644 --- a/examples/SPIN/cobalt_fcc/log.30Mar20.spin.cobalt_fcc.g++.1 +++ b/examples/SPIN/cobalt_fcc/log.14Apr20.spin.cobalt_fcc.g++.1 @@ -1,7 +1,11 @@ -LAMMPS (18 Feb 2020) +LAMMPS (19 Mar 2020) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (../comm.cpp:94) + using 1 OpenMP thread(s) per MPI task # fcc cobalt in a 3d periodic box clear +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (../comm.cpp:94) + using 1 OpenMP thread(s) per MPI task units metal atom_style spin @@ -19,7 +23,7 @@ Created orthogonal box = (0 0 0) to (17.7 17.7 17.7) 1 by 1 by 1 MPI processor grid create_atoms 1 box Created 500 atoms - create_atoms CPU = 0.000594854 secs + create_atoms CPU = 0.00057292 secs # setting mass, mag. moments, and interactions for fcc cobalt @@ -85,53 +89,53 @@ Neighbor list info ... bin: standard Per MPI rank memory allocation (min/avg/max) = 5.718 | 5.718 | 5.718 Mbytes Step Time v_magx v_magy v_magnorm PotEng v_emag Temp TotEng - 0 0 0 0 1 -2379.0634 -188.09051 100.00543 -2372.6129 - 50 0.005 0 0 1 -2378.7466 -188.09048 95.094679 -2372.6129 - 100 0.01 0 0 1 -2377.8748 -188.09007 81.578321 -2372.6129 - 150 0.015 0 0 1 -2376.6637 -188.08848 62.802727 -2372.6129 - 200 0.02 0 0 1 -2375.4091 -188.08487 43.35108 -2372.6129 - 250 0.025 0 0 1 -2374.4028 -188.07877 27.749821 -2372.6129 - 300 0.03 0 0 1 -2373.8481 -188.07054 19.149389 -2372.6129 - 350 0.035 0 0 1 -2373.8032 -188.06135 18.453387 -2372.6129 - 400 0.04 0 0 1 -2374.177 -188.053 24.249423 -2372.6129 - 450 0.045 0 0 1 -2374.7768 -188.04742 33.548008 -2372.6129 - 500 0.05 0 0 1 -2375.3847 -188.04604 42.973172 -2372.6129 - 550 0.055 0 0 1 -2375.8317 -188.04935 49.902539 -2372.6129 - 600 0.06 0 0 1 -2376.0422 -188.0567 53.166772 -2372.6129 - 650 0.065 0 0 1 -2376.0414 -188.06642 53.153416 -2372.6129 - 700 0.07 0 0 1 -2375.9268 -188.07628 51.377187 -2372.6129 - 750 0.075 0 0 1 -2375.8203 -188.08415 49.725449 -2372.6129 - 800 0.08 0 0 1 -2375.8163 -188.08857 49.663576 -2372.6129 - 850 0.085 0 0 1 -2375.9464 -188.0891 51.681567 -2372.6129 - 900 0.09 0 0 1 -2376.1712 -188.08636 55.166554 -2372.6129 - 950 0.095 0 0 1 -2376.4003 -188.08174 58.718232 -2372.6129 - 1000 0.1 0 0 1 -2376.5317 -188.0769 60.75567 -2372.6129 -Loop time of 4.59877 on 1 procs for 1000 steps with 500 atoms - -Performance: 1.879 ns/day, 12.774 hours/ns, 217.449 timesteps/s -100.0% CPU use with 1 MPI tasks x no OpenMP threads + 0 0 0 0 1 -2285.0679 -94.095041 100.00543 -2278.6175 + 50 0.005 0 0 1 -2284.7512 -94.095025 95.095146 -2278.6175 + 100 0.01 0 0 1 -2283.8798 -94.094815 81.584879 -2278.6175 + 150 0.015 0 0 1 -2282.6701 -94.09401 62.831647 -2278.6175 + 200 0.02 0 0 1 -2281.4185 -94.092175 43.426664 -2278.6174 + 250 0.025 0 0 1 -2280.4165 -94.089084 27.892653 -2278.6174 + 300 0.03 0 0 1 -2279.8662 -94.084906 19.36049 -2278.6174 + 350 0.035 0 0 1 -2279.8238 -94.080244 18.702888 -2278.6174 + 400 0.04 0 0 1 -2280.1962 -94.076013 24.47725 -2278.6174 + 450 0.045 0 0 1 -2280.7898 -94.073181 33.678697 -2278.6175 + 500 0.05 0 0 1 -2281.3871 -94.072475 42.940446 -2278.6175 + 550 0.055 0 0 1 -2281.8215 -94.074138 49.675032 -2278.6175 + 600 0.06 0 0 1 -2282.0209 -94.077829 52.765336 -2278.6175 + 650 0.065 0 0 1 -2282.0136 -94.082703 52.652501 -2278.6175 + 700 0.07 0 0 1 -2281.8997 -94.087644 50.88749 -2278.6174 + 750 0.075 0 0 1 -2281.8013 -94.091583 49.361723 -2278.6174 + 800 0.08 0 0 1 -2281.8108 -94.093792 49.508108 -2278.6174 + 850 0.085 0 0 1 -2281.9558 -94.094064 51.756992 -2278.6174 + 900 0.09 0 0 1 -2282.1927 -94.092723 55.428834 -2278.6175 + 950 0.095 0 0 1 -2282.4277 -94.090469 59.072774 -2278.6175 + 1000 0.1 0 0 1 -2282.5578 -94.088121 61.090565 -2278.6175 +Loop time of 4.4001 on 1 procs for 1000 steps with 500 atoms + +Performance: 1.964 ns/day, 12.222 hours/ns, 227.268 timesteps/s +100.0% CPU use with 1 MPI tasks x 1 OpenMP threads MPI task timing breakdown: Section | min time | avg time | max time |%varavg| %total --------------------------------------------------------------- -Pair | 2.2974 | 2.2974 | 2.2974 | 0.0 | 49.96 -Neigh | 0.011754 | 0.011754 | 0.011754 | 0.0 | 0.26 -Comm | 0.034065 | 0.034065 | 0.034065 | 0.0 | 0.74 -Output | 0.00037885 | 0.00037885 | 0.00037885 | 0.0 | 0.01 -Modify | 2.2502 | 2.2502 | 2.2502 | 0.0 | 48.93 -Other | | 0.005026 | | | 0.11 +Pair | 2.0815 | 2.0815 | 2.0815 | 0.0 | 47.31 +Neigh | 0.011835 | 0.011835 | 0.011835 | 0.0 | 0.27 +Comm | 0.033331 | 0.033331 | 0.033331 | 0.0 | 0.76 +Output | 0.00045395 | 0.00045395 | 0.00045395 | 0.0 | 0.01 +Modify | 2.2677 | 2.2677 | 2.2677 | 0.0 | 51.54 +Other | | 0.005309 | | | 0.12 Nlocal: 500 ave 500 max 500 min Histogram: 1 0 0 0 0 0 0 0 0 0 Nghost: 1956 ave 1956 max 1956 min Histogram: 1 0 0 0 0 0 0 0 0 0 -Neighs: 24065 ave 24065 max 24065 min +Neighs: 24088 ave 24088 max 24088 min Histogram: 1 0 0 0 0 0 0 0 0 0 -FullNghs: 48130 ave 48130 max 48130 min +FullNghs: 48176 ave 48176 max 48176 min Histogram: 1 0 0 0 0 0 0 0 0 0 -Total # of neighbors = 48130 -Ave neighs/atom = 96.26 +Total # of neighbors = 48176 +Ave neighs/atom = 96.352 Neighbor list builds = 6 Dangerous builds = 0 diff --git a/examples/SPIN/cobalt_fcc/log.30Mar20.spin.cobalt_fcc.g++.4 b/examples/SPIN/cobalt_fcc/log.14Apr20.spin.cobalt_fcc.g++.4 similarity index 55% rename from examples/SPIN/cobalt_fcc/log.30Mar20.spin.cobalt_fcc.g++.4 rename to examples/SPIN/cobalt_fcc/log.14Apr20.spin.cobalt_fcc.g++.4 index d1df7975d9..3cbcd94268 100644 --- a/examples/SPIN/cobalt_fcc/log.30Mar20.spin.cobalt_fcc.g++.4 +++ b/examples/SPIN/cobalt_fcc/log.14Apr20.spin.cobalt_fcc.g++.4 @@ -1,7 +1,11 @@ -LAMMPS (18 Feb 2020) +LAMMPS (19 Mar 2020) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (../comm.cpp:94) + using 1 OpenMP thread(s) per MPI task # fcc cobalt in a 3d periodic box clear +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (../comm.cpp:94) + using 1 OpenMP thread(s) per MPI task units metal atom_style spin @@ -19,7 +23,7 @@ Created orthogonal box = (0 0 0) to (17.7 17.7 17.7) 1 by 2 by 2 MPI processor grid create_atoms 1 box Created 500 atoms - create_atoms CPU = 0.000725985 secs + create_atoms CPU = 0.000688791 secs # setting mass, mag. moments, and interactions for fcc cobalt @@ -85,53 +89,53 @@ Neighbor list info ... bin: standard Per MPI rank memory allocation (min/avg/max) = 5.664 | 5.664 | 5.664 Mbytes Step Time v_magx v_magy v_magnorm PotEng v_emag Temp TotEng - 0 0 0 0 1 -2379.0634 -188.09051 100.00543 -2372.6129 - 50 0.005 0 0 1 -2378.7518 -188.09036 95.174807 -2372.6129 - 100 0.01 0 0 1 -2377.8926 -188.08965 81.854304 -2372.6129 - 150 0.015 0 0 1 -2376.6939 -188.0877 63.270938 -2372.6129 - 200 0.02 0 0 1 -2375.4424 -188.08381 43.867262 -2372.6129 - 250 0.025 0 0 1 -2374.4238 -188.07767 28.075261 -2372.6129 - 300 0.03 0 0 1 -2373.8414 -188.06966 19.046222 -2372.6129 - 350 0.035 0 0 1 -2373.7604 -188.06096 17.79071 -2372.6129 - 400 0.04 0 0 1 -2374.1016 -188.05326 23.079994 -2372.6129 - 450 0.045 0 0 1 -2374.6852 -188.04831 32.127316 -2372.6129 - 500 0.05 0 0 1 -2375.3032 -188.04737 41.709644 -2372.6129 - 550 0.055 0 0 1 -2375.7894 -188.05082 49.246292 -2372.6129 - 600 0.06 0 0 1 -2376.0615 -188.05795 53.465535 -2372.6129 - 650 0.065 0 0 1 -2376.1297 -188.06713 54.522857 -2372.6129 - 700 0.07 0 0 1 -2376.0725 -188.07626 53.635521 -2372.6129 - 750 0.075 0 0 1 -2375.994 -188.08332 52.419678 -2372.6129 - 800 0.08 0 0 1 -2375.9783 -188.08696 52.176558 -2372.6129 - 850 0.085 0 0 1 -2376.056 -188.0868 53.380592 -2372.6129 - 900 0.09 0 0 1 -2376.196 -188.08348 55.551378 -2372.6129 - 950 0.095 0 0 1 -2376.3243 -188.07838 57.540047 -2372.6129 - 1000 0.1 0 0 1 -2376.3597 -188.07314 58.088674 -2372.6129 -Loop time of 2.55931 on 4 procs for 1000 steps with 500 atoms - -Performance: 3.376 ns/day, 7.109 hours/ns, 390.730 timesteps/s -99.9% CPU use with 4 MPI tasks x no OpenMP threads + 0 0 0 0 1 -2285.0679 -94.095041 100.00543 -2278.6175 + 50 0.005 0 0 1 -2284.7564 -94.094967 95.176149 -2278.6175 + 100 0.01 0 0 1 -2283.8977 -94.094606 81.863661 -2278.6175 + 150 0.015 0 0 1 -2282.7006 -94.09362 63.303924 -2278.6175 + 200 0.02 0 0 1 -2281.452 -94.091648 43.94572 -2278.6174 + 250 0.025 0 0 1 -2280.4374 -94.08853 28.216468 -2278.6174 + 300 0.03 0 0 1 -2279.859 -94.084466 19.248729 -2278.6174 + 350 0.035 0 0 1 -2279.78 -94.080048 18.024631 -2278.6174 + 400 0.04 0 0 1 -2280.1196 -94.076134 23.288369 -2278.6174 + 450 0.045 0 0 1 -2280.697 -94.073612 32.240137 -2278.6175 + 500 0.05 0 0 1 -2281.305 -94.073124 41.666374 -2278.6175 + 550 0.055 0 0 1 -2281.7792 -94.074853 49.019175 -2278.6175 + 600 0.06 0 0 1 -2282.0409 -94.078438 53.075365 -2278.6175 + 650 0.065 0 0 1 -2282.1031 -94.083056 54.040647 -2278.6175 + 700 0.07 0 0 1 -2282.0468 -94.087642 53.167271 -2278.6175 + 750 0.075 0 0 1 -2281.9765 -94.09119 52.076935 -2278.6174 + 800 0.08 0 0 1 -2281.9742 -94.093023 52.041607 -2278.6174 + 850 0.085 0 0 1 -2282.0669 -94.09296 53.478909 -2278.6174 + 900 0.09 0 0 1 -2282.2193 -94.091331 55.842481 -2278.6175 + 950 0.095 0 0 1 -2282.354 -94.088827 57.930866 -2278.6175 + 1000 0.1 0 0 1 -2282.3885 -94.086262 58.464579 -2278.6175 +Loop time of 2.75 on 4 procs for 1000 steps with 500 atoms + +Performance: 3.142 ns/day, 7.639 hours/ns, 363.637 timesteps/s +99.7% 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.62562 | 0.64212 | 0.65317 | 1.3 | 25.09 -Neigh | 0.0027432 | 0.0030247 | 0.0032065 | 0.3 | 0.12 -Comm | 0.097173 | 0.10838 | 0.12453 | 3.3 | 4.23 -Output | 0.00040555 | 0.00043625 | 0.00050712 | 0.0 | 0.02 -Modify | 1.8009 | 1.8033 | 1.8049 | 0.1 | 70.46 -Other | | 0.002061 | | | 0.08 - -Nlocal: 125 ave 133 max 116 min -Histogram: 1 0 0 0 0 2 0 0 0 1 -Nghost: 1099 ave 1108 max 1091 min -Histogram: 1 0 0 0 2 0 0 0 0 1 -Neighs: 6032.5 ave 6417 max 5489 min -Histogram: 1 0 0 0 0 0 1 1 0 1 -FullNghs: 12065 ave 13062 max 10970 min -Histogram: 1 0 0 0 0 2 0 0 0 1 - -Total # of neighbors = 48260 -Ave neighs/atom = 96.52 +Pair | 0.57529 | 0.60652 | 0.63664 | 3.2 | 22.06 +Neigh | 0.0026889 | 0.0029447 | 0.0030761 | 0.3 | 0.11 +Comm | 0.10943 | 0.14471 | 0.17847 | 7.5 | 5.26 +Output | 0.00045419 | 0.00050056 | 0.00060511 | 0.0 | 0.02 +Modify | 1.9865 | 1.9926 | 1.998 | 0.3 | 72.46 +Other | | 0.002738 | | | 0.10 + +Nlocal: 125 ave 132 max 116 min +Histogram: 1 0 0 0 0 1 1 0 0 1 +Nghost: 1099 ave 1108 max 1092 min +Histogram: 1 0 0 1 1 0 0 0 0 1 +Neighs: 6033 ave 6372 max 5495 min +Histogram: 1 0 0 0 0 0 0 2 0 1 +FullNghs: 12066 ave 12964 max 10977 min +Histogram: 1 0 0 0 0 1 1 0 0 1 + +Total # of neighbors = 48264 +Ave neighs/atom = 96.528 Neighbor list builds = 6 Dangerous builds = 0 diff --git a/examples/SPIN/cobalt_hcp/log.14Apr20.spin.cobalt_hcp.g++.1 b/examples/SPIN/cobalt_hcp/log.14Apr20.spin.cobalt_hcp.g++.1 new file mode 100644 index 0000000000..b26892f6e9 --- /dev/null +++ b/examples/SPIN/cobalt_hcp/log.14Apr20.spin.cobalt_hcp.g++.1 @@ -0,0 +1,142 @@ +LAMMPS (19 Mar 2020) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (../comm.cpp:94) + using 1 OpenMP thread(s) per MPI task +# hcp cobalt in a 3d periodic box + +clear +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (../comm.cpp:94) + using 1 OpenMP thread(s) per MPI task +units metal +atom_style spin + +dimension 3 +boundary p p p + +# necessary for the serial algorithm (sametag) +atom_modify map array + +lattice hcp 2.5071 +Lattice spacing in x,y,z = 2.5071 4.34242 4.09408 +region box block 0.0 5.0 0.0 5.0 0.0 5.0 +create_box 1 box +Created orthogonal box = (0 0 0) to (12.5355 21.7121 20.4704) + 1 by 1 by 1 MPI processor grid +create_atoms 1 box +Created 500 atoms + create_atoms CPU = 0.00121403 secs + +# setting mass, mag. moments, and interactions for hcp cobalt + +mass 1 58.93 + +set group all spin/random 31 1.72 + 500 settings made for spin/random +#set group all spin 1.72 0.0 0.0 1.0 +velocity all create 100 4928459 rot yes dist gaussian + +#pair_style hybrid/overlay eam/alloy spin/exchange 4.0 spin/neel 4.0 +pair_style hybrid/overlay eam/alloy spin/exchange 4.0 +pair_coeff * * eam/alloy Co_PurjaPun_2012.eam.alloy Co +pair_coeff * * spin/exchange exchange 4.0 -0.3593 1.135028015e-05 1.064568567 +#pair_coeff * * spin/neel neel 4.0 0.0048 0.234 1.168 2.6905 0.705 0.652 + +neighbor 0.1 bin +neigh_modify every 10 check yes delay 20 + +fix 1 all precession/spin anisotropy 0.01 0.0 0.0 1.0 +fix_modify 1 energy yes +fix 2 all langevin/spin 0.0 0.0 21 +fix 3 all nve/spin lattice moving + +timestep 0.0001 + + +compute out_mag all spin +compute out_pe all pe +compute out_ke all ke +compute out_temp all temp + +variable magz equal c_out_mag[3] +variable magnorm equal c_out_mag[4] +variable emag equal c_out_mag[5] +variable tmag equal c_out_mag[6] + +thermo_style custom step time v_magnorm pe v_emag temp press etotal +thermo 50 + +compute outsp all property/atom spx spy spz sp fmx fmy fmz +dump 1 all custom 100 dump_cobalt_hcp.lammpstrj type x y z c_outsp[1] c_outsp[2] c_outsp[3] + +run 1000 +Neighbor list info ... + update every 10 steps, delay 20 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 6.59954 + ghost atom cutoff = 6.59954 + binsize = 3.29977, bins = 4 7 7 + 2 neighbor lists, perpetual/occasional/extra = 2 0 0 + (1) pair eam/alloy, perpetual, half/full from (2) + attributes: half, newton on + pair build: halffull/newton + stencil: none + bin: none + (2) pair spin/exchange, perpetual + attributes: full, newton on + pair build: full/bin/atomonly + stencil: full/bin/3d + bin: standard +Per MPI rank memory allocation (min/avg/max) = 7.902 | 7.902 | 7.902 Mbytes +Step Time v_magnorm PotEng v_emag Temp Press TotEng + 0 0 0.076558814 -2197.5536 -2.5536882 100.00543 -552.75983 -2191.1032 + 50 0.005 0.079437931 -2197.3113 -2.6177795 96.18776 -337.75504 -2191.1071 + 100 0.01 0.079575823 -2196.5768 -2.7375927 84.740309 571.91195 -2191.1109 + 150 0.015 0.078526145 -2195.4996 -2.8719243 67.984081 1845.185 -2191.1146 + 200 0.02 0.077001318 -2194.3502 -3.019723 50.107518 3008.9709 -2191.1182 + 250 0.025 0.077628454 -2193.403 -3.1832392 35.364524 4018.0217 -2191.122 + 300 0.03 0.077407462 -2192.8618 -3.3557644 26.910583 4535.9542 -2191.126 + 350 0.035 0.078090775 -2192.8052 -3.5305639 25.971561 4733.0322 -2191.13 + 400 0.04 0.078594494 -2193.135 -3.6772939 31.026665 4309.2088 -2191.1338 + 450 0.045 0.079898162 -2193.6965 -3.8044501 39.672566 3591.9593 -2191.1376 + 500 0.05 0.079885039 -2194.3293 -3.9435795 49.423774 2698.4519 -2191.1414 + 550 0.055 0.077196547 -2194.8554 -4.0868278 57.523322 1934.2444 -2191.1451 + 600 0.06 0.075430904 -2195.1797 -4.2355252 62.494025 1597.2543 -2191.1488 + 650 0.065 0.076510964 -2195.2854 -4.3752086 64.080496 1656.2312 -2191.1522 + 700 0.07 0.07649426 -2195.2723 -4.5226349 63.825926 1521.7541 -2191.1555 + 750 0.075 0.076254777 -2195.2746 -4.6937954 63.804162 1505.1323 -2191.1592 + 800 0.08 0.074211447 -2195.3567 -4.8567561 65.022623 1203.5409 -2191.1627 + 850 0.085 0.072034236 -2195.5531 -5.0007443 68.003461 900.03381 -2191.1668 + 900 0.09 0.071097702 -2195.8563 -5.1391578 72.641879 548.08834 -2191.1709 + 950 0.095 0.072642434 -2196.2007 -5.2853353 77.926596 194.45928 -2191.1743 + 1000 0.1 0.07306537 -2196.46 -5.4169261 81.891897 -404.70871 -2191.1779 +Loop time of 4.78824 on 1 procs for 1000 steps with 500 atoms + +Performance: 1.804 ns/day, 13.301 hours/ns, 208.845 timesteps/s +100.0% CPU use with 1 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 2.3284 | 2.3284 | 2.3284 | 0.0 | 48.63 +Neigh | 0.01273 | 0.01273 | 0.01273 | 0.0 | 0.27 +Comm | 0.042432 | 0.042432 | 0.042432 | 0.0 | 0.89 +Output | 0.0083201 | 0.0083201 | 0.0083201 | 0.0 | 0.17 +Modify | 2.3895 | 2.3895 | 2.3895 | 0.0 | 49.90 +Other | | 0.006823 | | | 0.14 + +Nlocal: 500 ave 500 max 500 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 2444 ave 2444 max 2444 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 27036 ave 27036 max 27036 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +FullNghs: 54072 ave 54072 max 54072 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 54072 +Ave neighs/atom = 108.144 +Neighbor list builds = 6 +Dangerous builds = 0 + +Please see the log.cite file for references relevant to this simulation + +Total wall time: 0:00:04 diff --git a/examples/SPIN/cobalt_hcp/log.14Apr20.spin.cobalt_hcp.g++.4 b/examples/SPIN/cobalt_hcp/log.14Apr20.spin.cobalt_hcp.g++.4 new file mode 100644 index 0000000000..ad8bf1807f --- /dev/null +++ b/examples/SPIN/cobalt_hcp/log.14Apr20.spin.cobalt_hcp.g++.4 @@ -0,0 +1,142 @@ +LAMMPS (19 Mar 2020) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (../comm.cpp:94) + using 1 OpenMP thread(s) per MPI task +# hcp cobalt in a 3d periodic box + +clear +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (../comm.cpp:94) + using 1 OpenMP thread(s) per MPI task +units metal +atom_style spin + +dimension 3 +boundary p p p + +# necessary for the serial algorithm (sametag) +atom_modify map array + +lattice hcp 2.5071 +Lattice spacing in x,y,z = 2.5071 4.34242 4.09408 +region box block 0.0 5.0 0.0 5.0 0.0 5.0 +create_box 1 box +Created orthogonal box = (0 0 0) to (12.5355 21.7121 20.4704) + 1 by 2 by 2 MPI processor grid +create_atoms 1 box +Created 500 atoms + create_atoms CPU = 0.000710964 secs + +# setting mass, mag. moments, and interactions for hcp cobalt + +mass 1 58.93 + +set group all spin/random 31 1.72 + 500 settings made for spin/random +#set group all spin 1.72 0.0 0.0 1.0 +velocity all create 100 4928459 rot yes dist gaussian + +#pair_style hybrid/overlay eam/alloy spin/exchange 4.0 spin/neel 4.0 +pair_style hybrid/overlay eam/alloy spin/exchange 4.0 +pair_coeff * * eam/alloy Co_PurjaPun_2012.eam.alloy Co +pair_coeff * * spin/exchange exchange 4.0 -0.3593 1.135028015e-05 1.064568567 +#pair_coeff * * spin/neel neel 4.0 0.0048 0.234 1.168 2.6905 0.705 0.652 + +neighbor 0.1 bin +neigh_modify every 10 check yes delay 20 + +fix 1 all precession/spin anisotropy 0.01 0.0 0.0 1.0 +fix_modify 1 energy yes +fix 2 all langevin/spin 0.0 0.0 21 +fix 3 all nve/spin lattice moving + +timestep 0.0001 + + +compute out_mag all spin +compute out_pe all pe +compute out_ke all ke +compute out_temp all temp + +variable magz equal c_out_mag[3] +variable magnorm equal c_out_mag[4] +variable emag equal c_out_mag[5] +variable tmag equal c_out_mag[6] + +thermo_style custom step time v_magnorm pe v_emag temp press etotal +thermo 50 + +compute outsp all property/atom spx spy spz sp fmx fmy fmz +dump 1 all custom 100 dump_cobalt_hcp.lammpstrj type x y z c_outsp[1] c_outsp[2] c_outsp[3] + +run 1000 +Neighbor list info ... + update every 10 steps, delay 20 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 6.59954 + ghost atom cutoff = 6.59954 + binsize = 3.29977, bins = 4 7 7 + 2 neighbor lists, perpetual/occasional/extra = 2 0 0 + (1) pair eam/alloy, perpetual, half/full from (2) + attributes: half, newton on + pair build: halffull/newton + stencil: none + bin: none + (2) pair spin/exchange, perpetual + attributes: full, newton on + pair build: full/bin/atomonly + stencil: full/bin/3d + bin: standard +Per MPI rank memory allocation (min/avg/max) = 7.814 | 7.814 | 7.815 Mbytes +Step Time v_magnorm PotEng v_emag Temp Press TotEng + 0 0 0.076558814 -2197.5536 -2.5536882 100.00543 -552.75983 -2191.1032 + 50 0.005 0.079452711 -2197.3115 -2.6266704 96.190558 -328.47868 -2191.1071 + 100 0.01 0.079678568 -2196.5823 -2.7759025 84.826338 585.21827 -2191.1109 + 150 0.015 0.078665787 -2195.5034 -2.9426881 68.043637 1872.5465 -2191.1146 + 200 0.02 0.076875906 -2194.3466 -3.1163511 50.052941 2986.3962 -2191.1181 + 250 0.025 0.076865073 -2193.3857 -3.2792912 35.095608 4003.4846 -2191.122 + 300 0.03 0.07675751 -2192.8611 -3.4452905 26.902302 4561.1429 -2191.1259 + 350 0.035 0.077351833 -2192.8579 -3.6193072 26.792986 4523.2641 -2191.1297 + 400 0.04 0.077672952 -2193.275 -3.7845654 33.199609 4108.3226 -2191.1336 + 450 0.045 0.077553541 -2193.9028 -3.9247064 42.874729 3267.3626 -2191.1373 + 500 0.05 0.076992612 -2194.5433 -4.0593738 52.743363 2317.5276 -2191.1413 + 550 0.055 0.074971927 -2195.0364 -4.1961092 60.332059 1620.5766 -2191.145 + 600 0.06 0.072652113 -2195.3154 -4.3458839 64.600641 1265.4418 -2191.1486 + 650 0.065 0.071405665 -2195.392 -4.5049778 65.734457 1221.4637 -2191.1521 + 700 0.07 0.072030336 -2195.337 -4.6535106 64.831697 1224.9583 -2191.1553 + 750 0.075 0.072468553 -2195.2702 -4.7829549 63.746912 1220.2392 -2191.1585 + 800 0.08 0.071546019 -2195.3271 -4.9161885 64.581676 1134.3858 -2191.1616 + 850 0.085 0.071414723 -2195.5618 -5.0652271 68.168922 864.52044 -2191.1648 + 900 0.09 0.073428472 -2195.9219 -5.219789 73.702937 556.14868 -2191.168 + 950 0.095 0.0745891 -2196.3065 -5.3782699 79.616238 -64.458151 -2191.1711 + 1000 0.1 0.074027925 -2196.6049 -5.5446493 84.189424 -640.80166 -2191.1746 +Loop time of 2.86028 on 4 procs for 1000 steps with 500 atoms + +Performance: 3.021 ns/day, 7.945 hours/ns, 349.616 timesteps/s +100.0% 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.6266 | 0.66621 | 0.68577 | 3.0 | 23.29 +Neigh | 0.0030921 | 0.0031813 | 0.0032392 | 0.1 | 0.11 +Comm | 0.1184 | 0.14023 | 0.18062 | 6.6 | 4.90 +Output | 0.0031779 | 0.0032207 | 0.0033176 | 0.1 | 0.11 +Modify | 2.0432 | 2.0445 | 2.0467 | 0.1 | 71.48 +Other | | 0.002987 | | | 0.10 + +Nlocal: 125 ave 128 max 121 min +Histogram: 1 0 1 0 0 0 0 0 0 2 +Nghost: 1324 ave 1331 max 1318 min +Histogram: 2 0 0 0 0 0 0 0 1 1 +Neighs: 6756.5 ave 6978 max 6543 min +Histogram: 1 1 0 0 0 0 0 0 1 1 +FullNghs: 13513 ave 13915 max 13042 min +Histogram: 1 1 0 0 0 0 0 0 0 2 + +Total # of neighbors = 54052 +Ave neighs/atom = 108.104 +Neighbor list builds = 6 +Dangerous builds = 0 + +Please see the log.cite file for references relevant to this simulation + +Total wall time: 0:00:02 diff --git a/examples/SPIN/cobalt_hcp/log.30Mar20.spin.cobalt_hcp.g++.1 b/examples/SPIN/cobalt_hcp/log.30Mar20.spin.cobalt_hcp.g++.1 deleted file mode 100644 index 3f5cb0e893..0000000000 --- a/examples/SPIN/cobalt_hcp/log.30Mar20.spin.cobalt_hcp.g++.1 +++ /dev/null @@ -1,138 +0,0 @@ -LAMMPS (18 Feb 2020) -# hcp cobalt in a 3d periodic box - -clear -units metal -atom_style spin - -dimension 3 -boundary p p p - -# necessary for the serial algorithm (sametag) -atom_modify map array - -lattice hcp 2.5071 -Lattice spacing in x,y,z = 2.5071 4.34242 4.09408 -region box block 0.0 5.0 0.0 5.0 0.0 5.0 -create_box 1 box -Created orthogonal box = (0 0 0) to (12.5355 21.7121 20.4704) - 1 by 1 by 1 MPI processor grid -create_atoms 1 box -Created 500 atoms - create_atoms CPU = 0.00117397 secs - -# setting mass, mag. moments, and interactions for hcp cobalt - -mass 1 58.93 - -set group all spin/random 31 1.72 - 500 settings made for spin/random -#set group all spin 1.72 0.0 0.0 1.0 -velocity all create 100 4928459 rot yes dist gaussian - -#pair_style hybrid/overlay eam/alloy spin/exchange 4.0 spin/neel 4.0 -pair_style hybrid/overlay eam/alloy spin/exchange 4.0 -pair_coeff * * eam/alloy Co_PurjaPun_2012.eam.alloy Co -pair_coeff * * spin/exchange exchange 4.0 -0.3593 1.135028015e-05 1.064568567 -#pair_coeff * * spin/neel neel 4.0 0.0048 0.234 1.168 2.6905 0.705 0.652 - -neighbor 0.1 bin -neigh_modify every 10 check yes delay 20 - -fix 1 all precession/spin anisotropy 0.01 0.0 0.0 1.0 -fix_modify 1 energy yes -fix 2 all langevin/spin 0.0 0.0 21 -fix 3 all nve/spin lattice moving - -timestep 0.0001 - - -compute out_mag all spin -compute out_pe all pe -compute out_ke all ke -compute out_temp all temp - -variable magz equal c_out_mag[3] -variable magnorm equal c_out_mag[4] -variable emag equal c_out_mag[5] -variable tmag equal c_out_mag[6] - -thermo_style custom step time v_magnorm pe v_emag temp press etotal -thermo 50 - -compute outsp all property/atom spx spy spz sp fmx fmy fmz -dump 1 all custom 100 dump_cobalt_hcp.lammpstrj type x y z c_outsp[1] c_outsp[2] c_outsp[3] - -run 1000 -Neighbor list info ... - update every 10 steps, delay 20 steps, check yes - max neighbors/atom: 2000, page size: 100000 - master list distance cutoff = 6.59954 - ghost atom cutoff = 6.59954 - binsize = 3.29977, bins = 4 7 7 - 2 neighbor lists, perpetual/occasional/extra = 2 0 0 - (1) pair eam/alloy, perpetual, half/full from (2) - attributes: half, newton on - pair build: halffull/newton - stencil: none - bin: none - (2) pair spin/exchange, perpetual - attributes: full, newton on - pair build: full/bin/atomonly - stencil: full/bin/3d - bin: standard -Per MPI rank memory allocation (min/avg/max) = 7.902 | 7.902 | 7.902 Mbytes -Step Time v_magnorm PotEng v_emag Temp Press TotEng - 0 0 0.076558814 -2198.4528 -3.4528061 100.00543 -552.75983 -2192.0023 - 50 0.005 0.07943794 -2198.3999 -3.7088205 98.515758 -366.66997 -2192.0455 - 100 0.01 0.079575155 -2197.9291 -4.1226604 91.922189 477.47884 -2192 - 150 0.015 0.078542395 -2197.1155 -4.619238 80.067885 1716.7288 -2191.951 - 200 0.02 0.077023506 -2196.2933 -5.2897727 65.92849 2936.6679 -2192.0409 - 250 0.025 0.077700923 -2195.5361 -5.9414484 53.573594 4112.0948 -2192.0805 - 300 0.03 0.07774657 -2195.1335 -6.6197723 46.804933 4886.8537 -2192.1145 - 350 0.035 0.078774554 -2195.0914 -7.1946157 47.394499 5379.4752 -2192.0345 - 400 0.04 0.079370667 -2195.4714 -7.7623965 53.642366 5233.2923 -2192.0114 - 450 0.045 0.080429623 -2196.099 -8.2844109 63.475259 4737.1962 -2192.0048 - 500 0.05 0.079683852 -2196.9706 -8.9272785 75.634862 3939.1654 -2192.0921 - 550 0.055 0.077382015 -2197.7492 -9.5343926 87.113531 3264.2402 -2192.1303 - 600 0.06 0.076847472 -2198.2648 -10.06509 96.047078 3054.8173 -2192.0697 - 650 0.065 0.078802112 -2198.4893 -10.530134 100.97465 3136.6247 -2191.9764 - 700 0.07 0.081063717 -2198.6285 -11.059855 102.79546 3140.6445 -2191.9981 - 750 0.075 0.082220669 -2198.6954 -11.523126 103.98355 3256.6914 -2191.9883 - 800 0.08 0.08358463 -2198.9161 -12.013687 106.41036 3159.088 -2192.0525 - 850 0.085 0.084281202 -2199.3713 -12.539376 112.52518 2845.2477 -2192.1133 - 900 0.09 0.085232982 -2200.0109 -13.07512 122.49544 2421.3371 -2192.1099 - 950 0.095 0.085821533 -2200.763 -13.665795 133.25612 1811.7336 -2192.1678 - 1000 0.1 0.087720262 -2201.3249 -14.148781 142.02569 1381.4755 -2192.1641 -Loop time of 5.11405 on 1 procs for 1000 steps with 500 atoms - -Performance: 1.689 ns/day, 14.206 hours/ns, 195.540 timesteps/s -100.0% CPU use with 1 MPI tasks x no OpenMP threads - -MPI task timing breakdown: -Section | min time | avg time | max time |%varavg| %total ---------------------------------------------------------------- -Pair | 2.6184 | 2.6184 | 2.6184 | 0.0 | 51.20 -Neigh | 0.017383 | 0.017383 | 0.017383 | 0.0 | 0.34 -Comm | 0.041471 | 0.041471 | 0.041471 | 0.0 | 0.81 -Output | 0.0079777 | 0.0079777 | 0.0079777 | 0.0 | 0.16 -Modify | 2.4222 | 2.4222 | 2.4222 | 0.0 | 47.36 -Other | | 0.006614 | | | 0.13 - -Nlocal: 500 ave 500 max 500 min -Histogram: 1 0 0 0 0 0 0 0 0 0 -Nghost: 2440 ave 2440 max 2440 min -Histogram: 1 0 0 0 0 0 0 0 0 0 -Neighs: 27405 ave 27405 max 27405 min -Histogram: 1 0 0 0 0 0 0 0 0 0 -FullNghs: 54810 ave 54810 max 54810 min -Histogram: 1 0 0 0 0 0 0 0 0 0 - -Total # of neighbors = 54810 -Ave neighs/atom = 109.62 -Neighbor list builds = 8 -Dangerous builds = 0 - -Please see the log.cite file for references relevant to this simulation - -Total wall time: 0:00:05 diff --git a/examples/SPIN/cobalt_hcp/log.30Mar20.spin.cobalt_hcp.g++.4 b/examples/SPIN/cobalt_hcp/log.30Mar20.spin.cobalt_hcp.g++.4 deleted file mode 100644 index 541a5215ab..0000000000 --- a/examples/SPIN/cobalt_hcp/log.30Mar20.spin.cobalt_hcp.g++.4 +++ /dev/null @@ -1,138 +0,0 @@ -LAMMPS (18 Feb 2020) -# hcp cobalt in a 3d periodic box - -clear -units metal -atom_style spin - -dimension 3 -boundary p p p - -# necessary for the serial algorithm (sametag) -atom_modify map array - -lattice hcp 2.5071 -Lattice spacing in x,y,z = 2.5071 4.34242 4.09408 -region box block 0.0 5.0 0.0 5.0 0.0 5.0 -create_box 1 box -Created orthogonal box = (0 0 0) to (12.5355 21.7121 20.4704) - 1 by 2 by 2 MPI processor grid -create_atoms 1 box -Created 500 atoms - create_atoms CPU = 0.000776052 secs - -# setting mass, mag. moments, and interactions for hcp cobalt - -mass 1 58.93 - -set group all spin/random 31 1.72 - 500 settings made for spin/random -#set group all spin 1.72 0.0 0.0 1.0 -velocity all create 100 4928459 rot yes dist gaussian - -#pair_style hybrid/overlay eam/alloy spin/exchange 4.0 spin/neel 4.0 -pair_style hybrid/overlay eam/alloy spin/exchange 4.0 -pair_coeff * * eam/alloy Co_PurjaPun_2012.eam.alloy Co -pair_coeff * * spin/exchange exchange 4.0 -0.3593 1.135028015e-05 1.064568567 -#pair_coeff * * spin/neel neel 4.0 0.0048 0.234 1.168 2.6905 0.705 0.652 - -neighbor 0.1 bin -neigh_modify every 10 check yes delay 20 - -fix 1 all precession/spin anisotropy 0.01 0.0 0.0 1.0 -fix_modify 1 energy yes -fix 2 all langevin/spin 0.0 0.0 21 -fix 3 all nve/spin lattice moving - -timestep 0.0001 - - -compute out_mag all spin -compute out_pe all pe -compute out_ke all ke -compute out_temp all temp - -variable magz equal c_out_mag[3] -variable magnorm equal c_out_mag[4] -variable emag equal c_out_mag[5] -variable tmag equal c_out_mag[6] - -thermo_style custom step time v_magnorm pe v_emag temp press etotal -thermo 50 - -compute outsp all property/atom spx spy spz sp fmx fmy fmz -dump 1 all custom 100 dump_cobalt_hcp.lammpstrj type x y z c_outsp[1] c_outsp[2] c_outsp[3] - -run 1000 -Neighbor list info ... - update every 10 steps, delay 20 steps, check yes - max neighbors/atom: 2000, page size: 100000 - master list distance cutoff = 6.59954 - ghost atom cutoff = 6.59954 - binsize = 3.29977, bins = 4 7 7 - 2 neighbor lists, perpetual/occasional/extra = 2 0 0 - (1) pair eam/alloy, perpetual, half/full from (2) - attributes: half, newton on - pair build: halffull/newton - stencil: none - bin: none - (2) pair spin/exchange, perpetual - attributes: full, newton on - pair build: full/bin/atomonly - stencil: full/bin/3d - bin: standard -Per MPI rank memory allocation (min/avg/max) = 7.814 | 7.814 | 7.815 Mbytes -Step Time v_magnorm PotEng v_emag Temp Press TotEng - 0 0 0.076558814 -2198.4528 -3.4528061 100.00543 -552.75983 -2192.0023 - 50 0.005 0.079452723 -2198.4072 -3.7248898 98.653871 -355.6344 -2192.0439 - 100 0.01 0.079678361 -2197.9666 -4.1954903 92.537038 501.20706 -2191.9979 - 150 0.015 0.078687908 -2197.1706 -4.7537644 80.964751 1772.0425 -2191.9483 - 200 0.02 0.076916898 -2196.3559 -5.4825199 66.80147 2968.8218 -2192.0472 - 250 0.025 0.076907901 -2195.5231 -6.0861726 53.985569 4164.2625 -2192.0409 - 300 0.03 0.077038948 -2195.071 -6.6943145 47.311565 4988.4746 -2192.0194 - 350 0.035 0.077979283 -2195.1414 -7.3218915 48.534273 5254.6456 -2192.0109 - 400 0.04 0.07796524 -2195.6001 -7.8825889 56.349464 5048.2463 -2191.9655 - 450 0.045 0.077261728 -2196.3704 -8.4695209 67.704551 4408.9497 -2192.0035 - 500 0.05 0.076909669 -2197.2119 -9.052699 80.062881 3672.8649 -2192.0478 - 550 0.055 0.076415935 -2197.9172 -9.6112977 90.952566 3157.7887 -2192.0507 - 600 0.06 0.075747974 -2198.3462 -10.124141 98.466889 3034.2314 -2191.9951 - 650 0.065 0.075037422 -2198.7367 -10.841596 103.22412 2930.0194 -2192.0787 - 700 0.07 0.073914153 -2198.9398 -11.537889 106.34918 3093.1625 -2192.0802 - 750 0.075 0.072420939 -2199.0757 -12.200264 108.80364 3202.7901 -2192.0578 - 800 0.08 0.071916376 -2199.4019 -12.931771 112.92157 3057.8306 -2192.1184 - 850 0.085 0.071169869 -2199.8591 -13.584472 120.32048 2903.2418 -2192.0983 - 900 0.09 0.06872929 -2200.6078 -14.339881 130.25988 2313.3788 -2192.2059 - 950 0.095 0.066974892 -2201.3479 -14.990231 141.56669 1806.6278 -2192.2168 - 1000 0.1 0.066224007 -2201.9613 -15.563509 152.12084 1504.6623 -2192.1494 -Loop time of 2.93458 on 4 procs for 1000 steps with 500 atoms - -Performance: 2.944 ns/day, 8.152 hours/ns, 340.765 timesteps/s -99.9% CPU use with 4 MPI tasks x no OpenMP threads - -MPI task timing breakdown: -Section | min time | avg time | max time |%varavg| %total ---------------------------------------------------------------- -Pair | 0.70936 | 0.73135 | 0.74613 | 1.6 | 24.92 -Neigh | 0.0040097 | 0.0042623 | 0.0043731 | 0.2 | 0.15 -Comm | 0.10633 | 0.12265 | 0.14235 | 3.7 | 4.18 -Output | 0.0031571 | 0.0031891 | 0.0032747 | 0.1 | 0.11 -Modify | 2.067 | 2.0704 | 2.0733 | 0.2 | 70.55 -Other | | 0.00272 | | | 0.09 - -Nlocal: 125 ave 129 max 122 min -Histogram: 1 1 0 0 0 1 0 0 0 1 -Nghost: 1322.5 ave 1330 max 1315 min -Histogram: 2 0 0 0 0 0 0 0 0 2 -Neighs: 6854.5 ave 7053 max 6684 min -Histogram: 2 0 0 0 0 0 0 1 0 1 -FullNghs: 13709 ave 14212 max 13335 min -Histogram: 2 0 0 0 0 0 1 0 0 1 - -Total # of neighbors = 54836 -Ave neighs/atom = 109.672 -Neighbor list builds = 8 -Dangerous builds = 0 - -Please see the log.cite file for references relevant to this simulation - -Total wall time: 0:00:02 diff --git a/examples/SPIN/dipole_spin/log.30Mar20.spin.iron_dipole_cut.g++.1 b/examples/SPIN/dipole_spin/log.14Apr20.spin.iron_dipole_cut.g++.1 similarity index 75% rename from examples/SPIN/dipole_spin/log.30Mar20.spin.iron_dipole_cut.g++.1 rename to examples/SPIN/dipole_spin/log.14Apr20.spin.iron_dipole_cut.g++.1 index 824ce6fc64..db58eec01d 100644 --- a/examples/SPIN/dipole_spin/log.30Mar20.spin.iron_dipole_cut.g++.1 +++ b/examples/SPIN/dipole_spin/log.14Apr20.spin.iron_dipole_cut.g++.1 @@ -1,7 +1,11 @@ -LAMMPS (18 Feb 2020) +LAMMPS (19 Mar 2020) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (../comm.cpp:94) + using 1 OpenMP thread(s) per MPI task # bcc iron in a 3d periodic box clear +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (../comm.cpp:94) + using 1 OpenMP thread(s) per MPI task units metal atom_style spin @@ -19,7 +23,7 @@ Created orthogonal box = (0 0 0) to (34.398 34.398 34.398) 1 by 1 by 1 MPI processor grid create_atoms 1 box Created 3456 atoms - create_atoms CPU = 0.00202107 secs + create_atoms CPU = 0.00106382 secs # setting mass, mag. moments, and interactions for bcc iron @@ -88,23 +92,23 @@ Neighbor list info ... bin: none Per MPI rank memory allocation (min/avg/max) = 13.4 | 13.4 | 13.4 Mbytes Step Time v_magx v_magy v_magz v_magnorm v_tmag v_emag PotEng TotEng - 0 0 -1 0 0 1 2.1474527e-35 -768.37511 -15560.055 -15515.394 - 50 0.005 -1 -2.7722752e-10 -2.1828666e-10 1 1.3769384e-08 -768.35793 -15558.423 -15515.394 - 100 0.01 -1 -2.0983066e-09 -1.7330951e-09 1 2.0077771e-08 -768.30868 -15553.81 -15515.394 -Loop time of 7.77893 on 1 procs for 100 steps with 3456 atoms + 0 0 -1 0 0 1 1.0737264e-35 -384.18755 -15175.868 -15131.207 + 50 0.005 -1 -2.7725069e-10 -2.182903e-10 1 6.8851185e-09 -384.17896 -15174.244 -15131.207 + 100 0.01 -1 -2.0990209e-09 -1.7332235e-09 1 1.0040825e-08 -384.15433 -15169.655 -15131.207 +Loop time of 7.47017 on 1 procs for 100 steps with 3456 atoms -Performance: 0.111 ns/day, 216.081 hours/ns, 12.855 timesteps/s -100.0% CPU use with 1 MPI tasks x no OpenMP threads +Performance: 0.116 ns/day, 207.505 hours/ns, 13.387 timesteps/s +99.9% CPU use with 1 MPI tasks x 1 OpenMP threads MPI task timing breakdown: Section | min time | avg time | max time |%varavg| %total --------------------------------------------------------------- -Pair | 3.5657 | 3.5657 | 3.5657 | 0.0 | 45.84 +Pair | 3.1998 | 3.1998 | 3.1998 | 0.0 | 42.83 Neigh | 0 | 0 | 0 | 0.0 | 0.00 -Comm | 0.013513 | 0.013513 | 0.013513 | 0.0 | 0.17 -Output | 0.0059838 | 0.0059838 | 0.0059838 | 0.0 | 0.08 -Modify | 4.1897 | 4.1897 | 4.1897 | 0.0 | 53.86 -Other | | 0.003969 | | | 0.05 +Comm | 0.015094 | 0.015094 | 0.015094 | 0.0 | 0.20 +Output | 0.006531 | 0.006531 | 0.006531 | 0.0 | 0.09 +Modify | 4.2443 | 4.2443 | 4.2443 | 0.0 | 56.82 +Other | | 0.004467 | | | 0.06 Nlocal: 3456 ave 3456 max 3456 min Histogram: 1 0 0 0 0 0 0 0 0 0 diff --git a/examples/SPIN/dipole_spin/log.30Mar20.spin.iron_dipole_cut.g++.4 b/examples/SPIN/dipole_spin/log.14Apr20.spin.iron_dipole_cut.g++.4 similarity index 75% rename from examples/SPIN/dipole_spin/log.30Mar20.spin.iron_dipole_cut.g++.4 rename to examples/SPIN/dipole_spin/log.14Apr20.spin.iron_dipole_cut.g++.4 index 858504d4f1..a014aae3cd 100644 --- a/examples/SPIN/dipole_spin/log.30Mar20.spin.iron_dipole_cut.g++.4 +++ b/examples/SPIN/dipole_spin/log.14Apr20.spin.iron_dipole_cut.g++.4 @@ -1,7 +1,11 @@ -LAMMPS (18 Feb 2020) +LAMMPS (19 Mar 2020) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (../comm.cpp:94) + using 1 OpenMP thread(s) per MPI task # bcc iron in a 3d periodic box clear +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (../comm.cpp:94) + using 1 OpenMP thread(s) per MPI task units metal atom_style spin @@ -19,7 +23,7 @@ Created orthogonal box = (0 0 0) to (34.398 34.398 34.398) 1 by 2 by 2 MPI processor grid create_atoms 1 box Created 3456 atoms - create_atoms CPU = 0.00133705 secs + create_atoms CPU = 0.00132084 secs # setting mass, mag. moments, and interactions for bcc iron @@ -88,23 +92,23 @@ Neighbor list info ... bin: none Per MPI rank memory allocation (min/avg/max) = 9.217 | 9.217 | 9.217 Mbytes Step Time v_magx v_magy v_magz v_magnorm v_tmag v_emag PotEng TotEng - 0 0 -1 0 0 1 2.1474527e-35 -768.37511 -15560.055 -15515.394 - 50 0.005 -1 9.6204015e-11 -3.3767807e-10 1 1.338105e-08 -768.35767 -15558.438 -15515.394 - 100 0.01 -1 7.8881609e-10 -2.7017321e-09 1 1.9622256e-08 -768.30769 -15553.868 -15515.394 -Loop time of 2.28536 on 4 procs for 100 steps with 3456 atoms + 0 0 -1 0 0 1 1.0737264e-35 -384.18755 -15175.868 -15131.207 + 50 0.005 -1 9.6205501e-11 -3.3769045e-10 1 6.6909444e-09 -384.17884 -15174.259 -15131.207 + 100 0.01 -1 7.8887025e-10 -2.7021386e-09 1 9.8130686e-09 -384.15383 -15169.712 -15131.207 +Loop time of 2.27865 on 4 procs for 100 steps with 3456 atoms -Performance: 0.378 ns/day, 63.482 hours/ns, 43.757 timesteps/s -100.0% CPU use with 4 MPI tasks x no OpenMP threads +Performance: 0.379 ns/day, 63.296 hours/ns, 43.886 timesteps/s +99.5% 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.92255 | 0.92511 | 0.92921 | 0.3 | 40.48 +Pair | 0.80959 | 0.8184 | 0.82996 | 0.9 | 35.92 Neigh | 0 | 0 | 0 | 0.0 | 0.00 -Comm | 0.022256 | 0.026523 | 0.029107 | 1.7 | 1.16 -Output | 0.0018489 | 0.0018537 | 0.0018642 | 0.0 | 0.08 -Modify | 1.3298 | 1.3301 | 1.3303 | 0.0 | 58.20 -Other | | 0.001781 | | | 0.08 +Comm | 0.035061 | 0.046857 | 0.055443 | 3.9 | 2.06 +Output | 0.0018592 | 0.0018642 | 0.0018783 | 0.0 | 0.08 +Modify | 1.4085 | 1.4095 | 1.41 | 0.1 | 61.86 +Other | | 0.002023 | | | 0.09 Nlocal: 864 ave 864 max 864 min Histogram: 4 0 0 0 0 0 0 0 0 0 diff --git a/examples/SPIN/dipole_spin/log.30Mar20.spin.iron_dipole_ewald.g++.1 b/examples/SPIN/dipole_spin/log.14Apr20.spin.iron_dipole_ewald.g++.1 similarity index 74% rename from examples/SPIN/dipole_spin/log.30Mar20.spin.iron_dipole_ewald.g++.1 rename to examples/SPIN/dipole_spin/log.14Apr20.spin.iron_dipole_ewald.g++.1 index 8be05871aa..f6c015bb20 100644 --- a/examples/SPIN/dipole_spin/log.30Mar20.spin.iron_dipole_ewald.g++.1 +++ b/examples/SPIN/dipole_spin/log.14Apr20.spin.iron_dipole_ewald.g++.1 @@ -1,7 +1,11 @@ -LAMMPS (18 Feb 2020) +LAMMPS (19 Mar 2020) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (../comm.cpp:94) + using 1 OpenMP thread(s) per MPI task # bcc iron in a 3d periodic box clear +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (../comm.cpp:94) + using 1 OpenMP thread(s) per MPI task units metal atom_style spin @@ -19,7 +23,7 @@ Created orthogonal box = (0 0 0) to (34.398 34.398 34.398) 1 by 1 by 1 MPI processor grid create_atoms 1 box Created 3456 atoms - create_atoms CPU = 0.00196004 secs + create_atoms CPU = 0.00187302 secs # setting mass, mag. moments, and interactions for bcc iron @@ -69,8 +73,8 @@ run 100 EwaldDipoleSpin initialization ... using 12-bit tables for long-range coulomb (../kspace.cpp:332) G vector (1/distance) = 0.324623 - estimated absolute RMS force accuracy = 7.95231e-79 - estimated relative force accuracy = 5.52258e-80 + estimated absolute RMS force accuracy = 1.69788e-59 + estimated relative force accuracy = 1.17911e-60 KSpace vectors: actual max1d max3d = 2084 10 4630 kxmax kymax kzmax = 10 10 10 Neighbor list info ... @@ -97,24 +101,24 @@ Neighbor list info ... bin: none Per MPI rank memory allocation (min/avg/max) = 30.07 | 30.07 | 30.07 Mbytes Step Time v_magx v_magy v_magz v_magnorm v_tmag v_emag PotEng TotEng - 0 0 -1 0 0 1 5.1745772e-37 -767.88567 -15559.577 -15514.916 - 50 0.005 -1 4.3660916e-09 -2.1918692e-09 1 1.06962e-09 -767.86847 -15557.945 -15514.916 - 100 0.01 -1 9.9854966e-09 -4.2823677e-09 1 4.6535258e-09 -767.81917 -15553.332 -15514.916 -Loop time of 25.018 on 1 procs for 100 steps with 3456 atoms + 0 0 -1 0 0 1 2.5872886e-37 -383.94283 -15175.635 -15130.974 + 50 0.005 -1 4.3660908e-09 -2.1918693e-09 1 5.3484784e-10 -383.93423 -15174.011 -15130.974 + 100 0.01 -1 9.9854743e-09 -4.282369e-09 1 2.3273467e-09 -383.90957 -15169.421 -15130.974 +Loop time of 24.8682 on 1 procs for 100 steps with 3456 atoms -Performance: 0.035 ns/day, 694.944 hours/ns, 3.997 timesteps/s -100.0% CPU use with 1 MPI tasks x no OpenMP threads +Performance: 0.035 ns/day, 690.783 hours/ns, 4.021 timesteps/s +100.0% 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.8287 | 4.8287 | 4.8287 | 0.0 | 19.30 -Kspace | 10.312 | 10.312 | 10.312 | 0.0 | 41.22 +Pair | 4.6097 | 4.6097 | 4.6097 | 0.0 | 18.54 +Kspace | 10.303 | 10.303 | 10.303 | 0.0 | 41.43 Neigh | 0 | 0 | 0 | 0.0 | 0.00 -Comm | 0.013958 | 0.013958 | 0.013958 | 0.0 | 0.06 -Output | 0.0060771 | 0.0060771 | 0.0060771 | 0.0 | 0.02 -Modify | 9.8533 | 9.8533 | 9.8533 | 0.0 | 39.38 -Other | | 0.004097 | | | 0.02 +Comm | 0.015258 | 0.015258 | 0.015258 | 0.0 | 0.06 +Output | 0.006583 | 0.006583 | 0.006583 | 0.0 | 0.03 +Modify | 9.9285 | 9.9285 | 9.9285 | 0.0 | 39.92 +Other | | 0.004751 | | | 0.02 Nlocal: 3456 ave 3456 max 3456 min Histogram: 1 0 0 0 0 0 0 0 0 0 diff --git a/examples/SPIN/dipole_spin/log.30Mar20.spin.iron_dipole_ewald.g++.4 b/examples/SPIN/dipole_spin/log.14Apr20.spin.iron_dipole_ewald.g++.4 similarity index 73% rename from examples/SPIN/dipole_spin/log.30Mar20.spin.iron_dipole_ewald.g++.4 rename to examples/SPIN/dipole_spin/log.14Apr20.spin.iron_dipole_ewald.g++.4 index 391f68e5ce..b70221f603 100644 --- a/examples/SPIN/dipole_spin/log.30Mar20.spin.iron_dipole_ewald.g++.4 +++ b/examples/SPIN/dipole_spin/log.14Apr20.spin.iron_dipole_ewald.g++.4 @@ -1,7 +1,11 @@ -LAMMPS (18 Feb 2020) +LAMMPS (19 Mar 2020) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (../comm.cpp:94) + using 1 OpenMP thread(s) per MPI task # bcc iron in a 3d periodic box clear +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (../comm.cpp:94) + using 1 OpenMP thread(s) per MPI task units metal atom_style spin @@ -19,7 +23,7 @@ Created orthogonal box = (0 0 0) to (34.398 34.398 34.398) 1 by 2 by 2 MPI processor grid create_atoms 1 box Created 3456 atoms - create_atoms CPU = 0.000954151 secs + create_atoms CPU = 0.000773907 secs # setting mass, mag. moments, and interactions for bcc iron @@ -69,8 +73,8 @@ run 100 EwaldDipoleSpin initialization ... using 12-bit tables for long-range coulomb (../kspace.cpp:332) G vector (1/distance) = 0.324623 - estimated absolute RMS force accuracy = 0 - estimated relative force accuracy = 0 + estimated absolute RMS force accuracy = 2.94041e-64 + estimated relative force accuracy = 2.042e-65 KSpace vectors: actual max1d max3d = 2084 10 4630 kxmax kymax kzmax = 10 10 10 Neighbor list info ... @@ -97,24 +101,24 @@ Neighbor list info ... bin: none Per MPI rank memory allocation (min/avg/max) = 25.89 | 25.89 | 25.89 Mbytes Step Time v_magx v_magy v_magz v_magnorm v_tmag v_emag PotEng TotEng - 0 0 -1 0 0 1 7.0215129e-37 -767.88567 -15559.577 -15514.916 - 50 0.005 -1 4.3196063e-09 -2.1966927e-09 1 1.0343915e-09 -767.86822 -15557.96 -15514.916 - 100 0.01 -1 9.7636593e-09 -4.3236953e-09 1 4.4886362e-09 -767.81819 -15553.39 -15514.916 -Loop time of 6.6465 on 4 procs for 100 steps with 3456 atoms + 0 0 -1 0 0 1 3.5107565e-37 -383.94283 -15175.635 -15130.974 + 50 0.005 -1 4.3196054e-09 -2.1966927e-09 1 5.1723249e-10 -383.93411 -15174.026 -15130.974 + 100 0.01 -1 9.7636345e-09 -4.3236965e-09 1 2.2448849e-09 -383.90908 -15169.479 -15130.974 +Loop time of 7.03264 on 4 procs for 100 steps with 3456 atoms -Performance: 0.130 ns/day, 184.625 hours/ns, 15.046 timesteps/s -100.0% CPU use with 4 MPI tasks x no OpenMP threads +Performance: 0.123 ns/day, 195.351 hours/ns, 14.219 timesteps/s +99.9% 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.2385 | 1.252 | 1.279 | 1.4 | 18.84 -Kspace | 2.5335 | 2.5456 | 2.5582 | 0.6 | 38.30 +Pair | 1.1743 | 1.207 | 1.2416 | 2.2 | 17.16 +Kspace | 2.6173 | 2.6542 | 2.7273 | 2.7 | 37.74 Neigh | 0 | 0 | 0 | 0.0 | 0.00 -Comm | 0.026179 | 0.042528 | 0.054258 | 5.0 | 0.64 -Output | 0.0018868 | 0.001893 | 0.0019078 | 0.0 | 0.03 -Modify | 2.801 | 2.8024 | 2.8039 | 0.1 | 42.16 -Other | | 0.002123 | | | 0.03 +Comm | 0.042837 | 0.11362 | 0.1882 | 16.9 | 1.62 +Output | 0.0018778 | 0.0018882 | 0.0019088 | 0.0 | 0.03 +Modify | 3.0484 | 3.0535 | 3.0606 | 0.3 | 43.42 +Other | | 0.002387 | | | 0.03 Nlocal: 864 ave 864 max 864 min Histogram: 4 0 0 0 0 0 0 0 0 0 @@ -132,4 +136,4 @@ Dangerous builds = 0 Please see the log.cite file for references relevant to this simulation -Total wall time: 0:00:06 +Total wall time: 0:00:07 diff --git a/examples/SPIN/dipole_spin/log.30Mar20.spin.iron_dipole_pppm.g++.1 b/examples/SPIN/dipole_spin/log.14Apr20.spin.iron_dipole_pppm.g++.1 similarity index 77% rename from examples/SPIN/dipole_spin/log.30Mar20.spin.iron_dipole_pppm.g++.1 rename to examples/SPIN/dipole_spin/log.14Apr20.spin.iron_dipole_pppm.g++.1 index 0e70fe617a..3b2c36b40c 100644 --- a/examples/SPIN/dipole_spin/log.30Mar20.spin.iron_dipole_pppm.g++.1 +++ b/examples/SPIN/dipole_spin/log.14Apr20.spin.iron_dipole_pppm.g++.1 @@ -1,7 +1,11 @@ -LAMMPS (18 Feb 2020) +LAMMPS (19 Mar 2020) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (../comm.cpp:94) + using 1 OpenMP thread(s) per MPI task # bcc iron in a 3d periodic box clear +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (../comm.cpp:94) + using 1 OpenMP thread(s) per MPI task units metal atom_style spin @@ -19,7 +23,7 @@ Created orthogonal box = (0 0 0) to (34.398 34.398 34.398) 1 by 1 by 1 MPI processor grid create_atoms 1 box Created 3456 atoms - create_atoms CPU = 0.00161791 secs + create_atoms CPU = 0.00192595 secs # setting mass, mag. moments, and interactions for bcc iron @@ -99,24 +103,24 @@ Neighbor list info ... bin: none Per MPI rank memory allocation (min/avg/max) = 16.27 | 16.27 | 16.27 Mbytes Step Time v_magx v_magy v_magz v_magnorm v_tmag v_emag PotEng TotEng - 0 0 -1 0 0 1 7.5993542e-37 -767.89759 -15559.59 -15514.929 - 50 0.005 -1 3.6585337e-09 -1.9445403e-09 1 1.0281024e-09 -767.88039 -15557.958 -15514.929 - 100 0.01 -1 7.3585728e-09 -3.8640878e-09 1 4.0389855e-09 -767.83109 -15553.345 -15514.929 -Loop time of 15.3675 on 1 procs for 100 steps with 3456 atoms + 0 0 -1 0 0 1 3.7996771e-37 -383.94879 -15175.641 -15130.98 + 50 0.005 -1 3.6585337e-09 -1.9445403e-09 1 5.1408909e-10 -383.94019 -15174.017 -15130.98 + 100 0.01 -1 7.3585736e-09 -3.8640869e-09 1 2.0200831e-09 -383.91553 -15169.428 -15130.98 +Loop time of 15.1465 on 1 procs for 100 steps with 3456 atoms -Performance: 0.056 ns/day, 426.874 hours/ns, 6.507 timesteps/s -100.0% CPU use with 1 MPI tasks x no OpenMP threads +Performance: 0.057 ns/day, 420.737 hours/ns, 6.602 timesteps/s +100.0% 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.8225 | 4.8225 | 4.8225 | 0.0 | 31.38 -Kspace | 0.67714 | 0.67714 | 0.67714 | 0.0 | 4.41 +Pair | 4.6008 | 4.6008 | 4.6008 | 0.0 | 30.38 +Kspace | 0.65995 | 0.65995 | 0.65995 | 0.0 | 4.36 Neigh | 0 | 0 | 0 | 0.0 | 0.00 -Comm | 0.013798 | 0.013798 | 0.013798 | 0.0 | 0.09 -Output | 0.006103 | 0.006103 | 0.006103 | 0.0 | 0.04 -Modify | 9.8438 | 9.8438 | 9.8438 | 0.0 | 64.06 -Other | | 0.004046 | | | 0.03 +Comm | 0.01495 | 0.01495 | 0.01495 | 0.0 | 0.10 +Output | 0.0065951 | 0.0065951 | 0.0065951 | 0.0 | 0.04 +Modify | 9.8589 | 9.8589 | 9.8589 | 0.0 | 65.09 +Other | | 0.005332 | | | 0.04 Nlocal: 3456 ave 3456 max 3456 min Histogram: 1 0 0 0 0 0 0 0 0 0 diff --git a/examples/SPIN/dipole_spin/log.30Mar20.spin.iron_dipole_pppm.g++.4 b/examples/SPIN/dipole_spin/log.14Apr20.spin.iron_dipole_pppm.g++.4 similarity index 76% rename from examples/SPIN/dipole_spin/log.30Mar20.spin.iron_dipole_pppm.g++.4 rename to examples/SPIN/dipole_spin/log.14Apr20.spin.iron_dipole_pppm.g++.4 index 6569b5784d..1c3394dfbf 100644 --- a/examples/SPIN/dipole_spin/log.30Mar20.spin.iron_dipole_pppm.g++.4 +++ b/examples/SPIN/dipole_spin/log.14Apr20.spin.iron_dipole_pppm.g++.4 @@ -1,7 +1,11 @@ -LAMMPS (18 Feb 2020) +LAMMPS (19 Mar 2020) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (../comm.cpp:94) + using 1 OpenMP thread(s) per MPI task # bcc iron in a 3d periodic box clear +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (../comm.cpp:94) + using 1 OpenMP thread(s) per MPI task units metal atom_style spin @@ -19,7 +23,7 @@ Created orthogonal box = (0 0 0) to (34.398 34.398 34.398) 1 by 2 by 2 MPI processor grid create_atoms 1 box Created 3456 atoms - create_atoms CPU = 0.000971079 secs + create_atoms CPU = 0.0007658 secs # setting mass, mag. moments, and interactions for bcc iron @@ -99,24 +103,24 @@ Neighbor list info ... bin: none Per MPI rank memory allocation (min/avg/max) = 10.42 | 10.42 | 10.42 Mbytes Step Time v_magx v_magy v_magz v_magnorm v_tmag v_emag PotEng TotEng - 0 0 -1 0 0 1 4.6346382e-37 -767.89759 -15559.59 -15514.929 - 50 0.005 -1 3.6593054e-09 -1.9379563e-09 1 9.9494035e-10 -767.88014 -15557.972 -15514.929 - 100 0.01 -1 7.3731919e-09 -3.8151563e-09 1 3.9088598e-09 -767.8301 -15553.402 -15514.929 -Loop time of 4.2664 on 4 procs for 100 steps with 3456 atoms + 0 0 -1 0 0 1 2.3173191e-37 -383.94879 -15175.641 -15130.98 + 50 0.005 -1 3.6593053e-09 -1.9379563e-09 1 4.9750695e-10 -383.94007 -15174.032 -15130.98 + 100 0.01 -1 7.3731899e-09 -3.8151552e-09 1 1.9550037e-09 -383.91504 -15169.485 -15130.98 +Loop time of 4.3717 on 4 procs for 100 steps with 3456 atoms -Performance: 0.203 ns/day, 118.511 hours/ns, 23.439 timesteps/s -100.0% CPU use with 4 MPI tasks x no OpenMP threads +Performance: 0.198 ns/day, 121.436 hours/ns, 22.874 timesteps/s +100.0% 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.2363 | 1.2472 | 1.2582 | 0.7 | 29.23 -Kspace | 0.21574 | 0.2267 | 0.23779 | 1.6 | 5.31 +Pair | 1.1624 | 1.1869 | 1.2125 | 1.8 | 27.15 +Kspace | 0.24468 | 0.26758 | 0.29157 | 3.6 | 6.12 Neigh | 0 | 0 | 0 | 0.0 | 0.00 -Comm | 0.024395 | 0.024487 | 0.024633 | 0.1 | 0.57 -Output | 0.0018759 | 0.0018809 | 0.001894 | 0.0 | 0.04 -Modify | 2.7639 | 2.7641 | 2.7643 | 0.0 | 64.79 -Other | | 0.00197 | | | 0.05 +Comm | 0.027149 | 0.030758 | 0.033902 | 1.7 | 0.70 +Output | 0.0030079 | 0.0030248 | 0.0030622 | 0.0 | 0.07 +Modify | 2.8782 | 2.8806 | 2.8837 | 0.1 | 65.89 +Other | | 0.002793 | | | 0.06 Nlocal: 864 ave 864 max 864 min Histogram: 4 0 0 0 0 0 0 0 0 0 diff --git a/examples/SPIN/iron/log.14Apr20.spin.iron.g++.1 b/examples/SPIN/iron/log.14Apr20.spin.iron.g++.1 new file mode 100644 index 0000000000..0f3257bc05 --- /dev/null +++ b/examples/SPIN/iron/log.14Apr20.spin.iron.g++.1 @@ -0,0 +1,141 @@ +LAMMPS (19 Mar 2020) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (../comm.cpp:94) + using 1 OpenMP thread(s) per MPI task +# bcc iron in a 3d periodic box + +clear +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (../comm.cpp:94) + using 1 OpenMP thread(s) per MPI task +units metal +atom_style spin + +dimension 3 +boundary p p p + +# necessary for the serial algorithm (sametag) +atom_modify map array + +lattice bcc 2.8665 +Lattice spacing in x,y,z = 2.8665 2.8665 2.8665 +region box block 0.0 5.0 0.0 5.0 0.0 5.0 +create_box 1 box +Created orthogonal box = (0 0 0) to (14.3325 14.3325 14.3325) + 1 by 1 by 1 MPI processor grid +create_atoms 1 box +Created 250 atoms + create_atoms CPU = 0.00103498 secs + +# setting mass, mag. moments, and interactions for bcc iron + +mass 1 55.845 + +set group all spin/random 31 2.2 + 250 settings made for spin/random +# set group all spin 2.2 0.0 0.0 1.0 +velocity all create 100 4928459 rot yes dist gaussian + +pair_style hybrid/overlay eam/alloy spin/exchange 3.5 +pair_coeff * * eam/alloy Fe_Mishin2006.eam.alloy Fe +pair_coeff * * spin/exchange exchange 3.4 0.02726 0.2171 1.841 + +neighbor 0.1 bin +neigh_modify every 10 check yes delay 20 + +fix 1 all precession/spin zeeman 0.0 0.0 0.0 1.0 +fix_modify 1 energy yes +fix 2 all langevin/spin 0.0 0.0 21 + +fix 3 all nve/spin lattice moving +timestep 0.0001 + +# compute and output options + +compute out_mag all spin +compute out_pe all pe +compute out_ke all ke +compute out_temp all temp + +variable magz equal c_out_mag[3] +variable magnorm equal c_out_mag[4] +variable emag equal c_out_mag[5] +variable tmag equal c_out_mag[6] + +thermo_style custom step time v_magnorm v_tmag temp v_emag ke pe press etotal +thermo 50 + +compute outsp all property/atom spx spy spz sp fmx fmy fmz +dump 1 all custom 100 dump_iron.lammpstrj type x y z c_outsp[1] c_outsp[2] c_outsp[3] + +run 1000 +Neighbor list info ... + update every 10 steps, delay 20 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 5.77337 + ghost atom cutoff = 5.77337 + binsize = 2.88668, bins = 5 5 5 + 2 neighbor lists, perpetual/occasional/extra = 2 0 0 + (1) pair eam/alloy, perpetual, half/full from (2) + attributes: half, newton on + pair build: halffull/newton + stencil: none + bin: none + (2) pair spin/exchange, perpetual + attributes: full, newton on + pair build: full/bin/atomonly + stencil: full/bin/3d + bin: standard +Per MPI rank memory allocation (min/avg/max) = 7.82 | 7.82 | 7.82 Mbytes +Step Time v_magnorm v_tmag Temp v_emag KinEng PotEng Press TotEng + 0 0 0.076456975 4554.5462 100.00358 -0.42895634 3.2186929 -1070.429 394.43342 -1067.2103 + 50 0.005 0.076456974 4671.3033 96.520068 -0.43128393 3.1065733 -1070.3169 707.2166 -1067.2103 + 100 0.01 0.076456983 4793.2674 86.525198 -0.43550567 2.7848806 -1069.9952 1456.8628 -1067.2103 + 150 0.015 0.076456973 4894.1924 71.664875 -0.44035101 2.3065896 -1069.5169 2510.4447 -1067.2103 + 200 0.02 0.076456944 4859.9379 54.610496 -0.44591875 1.7576812 -1068.968 3686.7124 -1067.2103 + 250 0.025 0.076456953 4636.3427 38.560198 -0.45258831 1.2410899 -1068.4514 4757.3215 -1067.2103 + 300 0.03 0.076457027 4333.5734 26.459387 -0.45961266 0.85161592 -1068.0619 5505.1963 -1067.2103 + 350 0.035 0.076457102 4124.1453 20.205123 -0.46569388 0.65031758 -1067.8606 5768.9329 -1067.2103 + 400 0.04 0.076457116 4064.6843 20.142986 -0.47038245 0.64831763 -1067.8586 5521.4162 -1067.2103 + 450 0.045 0.076457072 4076.2576 25.084719 -0.4741092 0.80737114 -1068.0176 4890.8714 -1067.2103 + 500 0.05 0.076457001 4105.5788 32.863873 -0.47765283 1.0577493 -1068.268 4093.2603 -1067.2103 + 550 0.055 0.076456962 4109.0613 41.126745 -0.48188168 1.3236962 -1068.534 3337.5111 -1067.2103 + 600 0.06 0.076456996 3993.3891 47.996188 -0.48790867 1.5447946 -1068.7551 2767.4353 -1067.2103 + 650 0.065 0.076457077 3776.2342 52.386407 -0.49621451 1.6860972 -1068.8964 2458.9058 -1067.2103 + 700 0.07 0.076457137 3586.7963 54.031337 -0.50582777 1.7390405 -1068.9493 2397.5333 -1067.2103 + 750 0.075 0.076457135 3535.1994 53.389736 -0.51542639 1.7183901 -1068.9287 2514.1889 -1067.2103 + 800 0.08 0.076457118 3585.6546 51.428399 -0.52423597 1.6552629 -1068.8655 2732.6669 -1067.2103 + 850 0.085 0.076457118 3634.4891 49.293001 -0.53165471 1.5865335 -1068.7968 2977.6259 -1067.2103 + 900 0.09 0.076457126 3660.3333 47.999274 -0.53780479 1.5448939 -1068.7552 3176.4112 -1067.2103 + 950 0.095 0.076457129 3671.3259 48.180409 -0.54376787 1.5507239 -1068.761 3283.2242 -1067.2103 + 1000 0.1 0.076457139 3628.6038 49.917341 -0.55029097 1.6066284 -1068.8169 3283.2361 -1067.2103 +Loop time of 1.66624 on 1 procs for 1000 steps with 250 atoms + +Performance: 5.185 ns/day, 4.628 hours/ns, 600.152 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 | 0.73884 | 0.73884 | 0.73884 | 0.0 | 44.34 +Neigh | 0.0045731 | 0.0045731 | 0.0045731 | 0.0 | 0.27 +Comm | 0.023681 | 0.023681 | 0.023681 | 0.0 | 1.42 +Output | 0.0042441 | 0.0042441 | 0.0042441 | 0.0 | 0.25 +Modify | 0.89131 | 0.89131 | 0.89131 | 0.0 | 53.49 +Other | | 0.003589 | | | 0.22 + +Nlocal: 250 ave 250 max 250 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 1407 ave 1407 max 1407 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 7868 ave 7868 max 7868 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +FullNghs: 15736 ave 15736 max 15736 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 15736 +Ave neighs/atom = 62.944 +Neighbor list builds = 6 +Dangerous builds = 0 + +Please see the log.cite file for references relevant to this simulation + +Total wall time: 0:00:01 diff --git a/examples/SPIN/iron/log.14Apr20.spin.iron.g++.4 b/examples/SPIN/iron/log.14Apr20.spin.iron.g++.4 new file mode 100644 index 0000000000..1cfa74559b --- /dev/null +++ b/examples/SPIN/iron/log.14Apr20.spin.iron.g++.4 @@ -0,0 +1,141 @@ +LAMMPS (19 Mar 2020) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (../comm.cpp:94) + using 1 OpenMP thread(s) per MPI task +# bcc iron in a 3d periodic box + +clear +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (../comm.cpp:94) + using 1 OpenMP thread(s) per MPI task +units metal +atom_style spin + +dimension 3 +boundary p p p + +# necessary for the serial algorithm (sametag) +atom_modify map array + +lattice bcc 2.8665 +Lattice spacing in x,y,z = 2.8665 2.8665 2.8665 +region box block 0.0 5.0 0.0 5.0 0.0 5.0 +create_box 1 box +Created orthogonal box = (0 0 0) to (14.3325 14.3325 14.3325) + 1 by 2 by 2 MPI processor grid +create_atoms 1 box +Created 250 atoms + create_atoms CPU = 0.000688791 secs + +# setting mass, mag. moments, and interactions for bcc iron + +mass 1 55.845 + +set group all spin/random 31 2.2 + 250 settings made for spin/random +# set group all spin 2.2 0.0 0.0 1.0 +velocity all create 100 4928459 rot yes dist gaussian + +pair_style hybrid/overlay eam/alloy spin/exchange 3.5 +pair_coeff * * eam/alloy Fe_Mishin2006.eam.alloy Fe +pair_coeff * * spin/exchange exchange 3.4 0.02726 0.2171 1.841 + +neighbor 0.1 bin +neigh_modify every 10 check yes delay 20 + +fix 1 all precession/spin zeeman 0.0 0.0 0.0 1.0 +fix_modify 1 energy yes +fix 2 all langevin/spin 0.0 0.0 21 + +fix 3 all nve/spin lattice moving +timestep 0.0001 + +# compute and output options + +compute out_mag all spin +compute out_pe all pe +compute out_ke all ke +compute out_temp all temp + +variable magz equal c_out_mag[3] +variable magnorm equal c_out_mag[4] +variable emag equal c_out_mag[5] +variable tmag equal c_out_mag[6] + +thermo_style custom step time v_magnorm v_tmag temp v_emag ke pe press etotal +thermo 50 + +compute outsp all property/atom spx spy spz sp fmx fmy fmz +dump 1 all custom 100 dump_iron.lammpstrj type x y z c_outsp[1] c_outsp[2] c_outsp[3] + +run 1000 +Neighbor list info ... + update every 10 steps, delay 20 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 5.77337 + ghost atom cutoff = 5.77337 + binsize = 2.88668, bins = 5 5 5 + 2 neighbor lists, perpetual/occasional/extra = 2 0 0 + (1) pair eam/alloy, perpetual, half/full from (2) + attributes: half, newton on + pair build: halffull/newton + stencil: none + bin: none + (2) pair spin/exchange, perpetual + attributes: full, newton on + pair build: full/bin/atomonly + stencil: full/bin/3d + bin: standard +Per MPI rank memory allocation (min/avg/max) = 7.766 | 7.766 | 7.766 Mbytes +Step Time v_magnorm v_tmag Temp v_emag KinEng PotEng Press TotEng + 0 0 0.076456975 4554.5462 100.00358 -0.42895634 3.2186929 -1070.429 394.43342 -1067.2103 + 50 0.005 0.076456995 4714.366 96.279315 -0.42705836 3.0988245 -1070.3091 714.16563 -1067.2103 + 100 0.01 0.076457028 4844.7708 86.007787 -0.43034795 2.7682274 -1069.9785 1479.8537 -1067.2103 + 150 0.015 0.076457073 4938.5943 70.888778 -0.43554708 2.2816103 -1069.4919 2538.6386 -1067.2103 + 200 0.02 0.076457107 4910.2627 53.612031 -0.44069391 1.7255448 -1068.9358 3702.0713 -1067.2103 + 250 0.025 0.07645713 4705.3075 37.374184 -0.44525189 1.2029171 -1068.4132 4749.8323 -1067.2103 + 300 0.03 0.076457162 4418.4389 25.117093 -0.44873668 0.80841314 -1068.0187 5473.2266 -1067.2103 + 350 0.035 0.07645722 4233.0963 18.792985 -0.45135838 0.60486682 -1067.8151 5710.4039 -1067.2103 + 400 0.04 0.07645726 4204.002 18.876267 -0.4546575 0.60754729 -1067.8178 5437.712 -1067.2103 + 450 0.045 0.076457242 4221.8277 24.290539 -0.45989731 0.78180986 -1067.9921 4788.1384 -1067.2103 + 500 0.05 0.076457208 4226.337 32.849365 -0.46668115 1.0572823 -1068.2676 3961.2587 -1067.2103 + 550 0.055 0.076457211 4195.1414 42.028524 -0.47379263 1.3527207 -1068.563 3159.4718 -1067.2103 + 600 0.06 0.076457222 4043.6401 49.722783 -0.48155951 1.6003664 -1068.8106 2554.4057 -1067.2103 + 650 0.065 0.07645721 3784.8692 54.624328 -0.49066003 1.7581264 -1068.9684 2266.0816 -1067.2103 + 700 0.07 0.076457187 3576.7472 56.274292 -0.49932577 1.8112318 -1069.0215 2298.3908 -1067.2103 + 750 0.075 0.07645717 3531.6724 55.083486 -0.50591093 1.7729047 -1068.9832 2557.6667 -1067.2103 + 800 0.08 0.076457176 3593.0894 52.172747 -0.51103604 1.6792204 -1068.8895 2933.0411 -1067.2103 + 850 0.085 0.076457206 3688.4988 48.957423 -0.51573858 1.5757327 -1068.786 3313.8291 -1067.2103 + 900 0.09 0.076457231 3788.943 46.719714 -0.52043742 1.5037103 -1068.714 3600.8734 -1067.2103 + 950 0.095 0.076457251 3854.0552 46.272425 -0.52460019 1.4893139 -1068.6996 3718.2987 -1067.2103 + 1000 0.1 0.076457302 3859.0984 47.806309 -0.52719778 1.5386831 -1068.749 3641.2287 -1067.2103 +Loop time of 1.55258 on 4 procs for 1000 steps with 250 atoms + +Performance: 5.565 ns/day, 4.313 hours/ns, 644.089 timesteps/s +99.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.2109 | 0.21798 | 0.22568 | 1.1 | 14.04 +Neigh | 0.0011308 | 0.0011812 | 0.0012279 | 0.1 | 0.08 +Comm | 0.074407 | 0.082247 | 0.090297 | 2.0 | 5.30 +Output | 0.0019011 | 0.0019355 | 0.0020187 | 0.1 | 0.12 +Modify | 1.2468 | 1.2477 | 1.249 | 0.1 | 80.36 +Other | | 0.001532 | | | 0.10 + +Nlocal: 62.5 ave 66 max 60 min +Histogram: 1 1 0 0 0 1 0 0 0 1 +Nghost: 846.25 ave 861 max 831 min +Histogram: 1 0 1 0 0 0 0 1 0 1 +Neighs: 1962.25 ave 2091 max 1866 min +Histogram: 1 0 0 2 0 0 0 0 0 1 +FullNghs: 3924.5 ave 4138 max 3771 min +Histogram: 1 1 0 0 0 1 0 0 0 1 + +Total # of neighbors = 15698 +Ave neighs/atom = 62.792 +Neighbor list builds = 6 +Dangerous builds = 0 + +Please see the log.cite file for references relevant to this simulation + +Total wall time: 0:00:01 diff --git a/examples/SPIN/iron/log.30Mar20.spin.iron_cubic.g++.1 b/examples/SPIN/iron/log.14Apr20.spin.iron_cubic.g++.1 similarity index 65% rename from examples/SPIN/iron/log.30Mar20.spin.iron_cubic.g++.1 rename to examples/SPIN/iron/log.14Apr20.spin.iron_cubic.g++.1 index d3389fed5a..5d07f1b71a 100644 --- a/examples/SPIN/iron/log.30Mar20.spin.iron_cubic.g++.1 +++ b/examples/SPIN/iron/log.14Apr20.spin.iron_cubic.g++.1 @@ -1,7 +1,11 @@ -LAMMPS (18 Feb 2020) +LAMMPS (19 Mar 2020) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (../comm.cpp:94) + using 1 OpenMP thread(s) per MPI task # bcc iron in a 3d periodic box clear +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (../comm.cpp:94) + using 1 OpenMP thread(s) per MPI task units metal atom_style spin @@ -19,7 +23,7 @@ Created orthogonal box = (0 0 0) to (14.3325 14.3325 14.3325) 1 by 1 by 1 MPI processor grid create_atoms 1 box Created 250 atoms - create_atoms CPU = 0.000488997 secs + create_atoms CPU = 0.000530005 secs # setting mass, mag. moments, and interactions for bcc iron @@ -81,53 +85,53 @@ Neighbor list info ... bin: standard Per MPI rank memory allocation (min/avg/max) = 7.82 | 7.82 | 7.82 Mbytes Step Time v_magx v_magy v_magz v_magnorm v_tmag v_emag PotEng TotEng - 0 0 -1 0 0 1 0 -55.58269 -1125.5827 -1122.364 - 50 0.005 -1 0 0 1 0 -55.581417 -1125.4672 -1122.364 - 100 0.01 -1 0 0 1 0 -55.577759 -1125.1389 -1122.364 - 150 0.015 -1 0 0 1 0 -55.57219 -1124.6538 -1122.364 - 200 0.02 -1 0 0 1 0 -55.565438 -1124.099 -1122.364 - 250 0.025 -1 0 0 1 0 -55.558379 -1123.5779 -1122.364 - 300 0.03 -1 0 0 1 0 -55.551886 -1123.1862 -1122.364 - 350 0.035 -1 0 0 1 0 -55.546675 -1122.9858 -1122.364 - 400 0.04 -1 0 0 1 0 -55.543187 -1122.9869 -1122.364 - 450 0.045 -1 0 0 1 0 -55.54154 -1123.1498 -1122.364 - 500 0.05 -1 0 0 1 0 -55.541574 -1123.4037 -1122.364 - 550 0.055 -1 0 0 1 0 -55.542941 -1123.672 -1122.364 - 600 0.06 -1 0 0 1 0 -55.545209 -1123.8931 -1122.364 - 650 0.065 -1 0 0 1 0 -55.547951 -1124.0315 -1122.364 - 700 0.07 -1 0 0 1 0 -55.550801 -1124.0798 -1122.364 - 750 0.075 -1 0 0 1 0 -55.553483 -1124.0546 -1122.364 - 800 0.08 -1 0 0 1 0 -55.555816 -1123.9877 -1122.364 - 850 0.085 -1 0 0 1 0 -55.557706 -1123.916 -1122.364 - 900 0.09 -1 0 0 1 0 -55.55913 -1123.8714 -1122.364 - 950 0.095 -1 0 0 1 0 -55.560111 -1123.8726 -1122.364 - 1000 0.1 -1 0 0 1 0 -55.560705 -1123.9215 -1122.364 -Loop time of 1.70785 on 1 procs for 1000 steps with 250 atoms - -Performance: 5.059 ns/day, 4.744 hours/ns, 585.533 timesteps/s -100.0% CPU use with 1 MPI tasks x no OpenMP threads + 0 0 -1 0 0 1 0 -27.791345 -1097.7914 -1094.5727 + 50 0.005 -1 0 0 1 0 -27.790708 -1097.6764 -1094.5727 + 100 0.01 -1 0 0 1 0 -27.788879 -1097.3499 -1094.5727 + 150 0.015 -1 0 0 1 0 -27.78609 -1096.8672 -1094.5727 + 200 0.02 -1 0 0 1 0 -27.782705 -1096.3147 -1094.5727 + 250 0.025 -1 0 0 1 0 -27.779157 -1095.7952 -1094.5727 + 300 0.03 -1 0 0 1 0 -27.775883 -1095.4038 -1094.5727 + 350 0.035 -1 0 0 1 0 -27.773241 -1095.2023 -1094.5727 + 400 0.04 -1 0 0 1 0 -27.771451 -1095.201 -1094.5727 + 450 0.045 -1 0 0 1 0 -27.770578 -1095.3608 -1094.5727 + 500 0.05 -1 0 0 1 0 -27.770546 -1095.6113 -1094.5727 + 550 0.055 -1 0 0 1 0 -27.771185 -1095.8764 -1094.5727 + 600 0.06 -1 0 0 1 0 -27.772282 -1096.0948 -1094.5727 + 650 0.065 -1 0 0 1 0 -27.773629 -1096.2313 -1094.5727 + 700 0.07 -1 0 0 1 0 -27.775042 -1096.2787 -1094.5727 + 750 0.075 -1 0 0 1 0 -27.776384 -1096.2534 -1094.5727 + 800 0.08 -1 0 0 1 0 -27.777564 -1096.1872 -1094.5727 + 850 0.085 -1 0 0 1 0 -27.778533 -1096.117 -1094.5727 + 900 0.09 -1 0 0 1 0 -27.779276 -1096.0741 -1094.5727 + 950 0.095 -1 0 0 1 0 -27.779802 -1096.0771 -1094.5727 + 1000 0.1 -1 0 0 1 0 -27.780134 -1096.1278 -1094.5727 +Loop time of 1.70062 on 1 procs for 1000 steps with 250 atoms + +Performance: 5.080 ns/day, 4.724 hours/ns, 588.019 timesteps/s +100.0% 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.78812 | 0.78812 | 0.78812 | 0.0 | 46.15 -Neigh | 0.0046611 | 0.0046611 | 0.0046611 | 0.0 | 0.27 -Comm | 0.022918 | 0.022918 | 0.022918 | 0.0 | 1.34 -Output | 0.0034437 | 0.0034437 | 0.0034437 | 0.0 | 0.20 -Modify | 0.88529 | 0.88529 | 0.88529 | 0.0 | 51.84 -Other | | 0.003416 | | | 0.20 +Pair | 0.72617 | 0.72617 | 0.72617 | 0.0 | 42.70 +Neigh | 0.0045958 | 0.0045958 | 0.0045958 | 0.0 | 0.27 +Comm | 0.023132 | 0.023132 | 0.023132 | 0.0 | 1.36 +Output | 0.0035856 | 0.0035856 | 0.0035856 | 0.0 | 0.21 +Modify | 0.93966 | 0.93966 | 0.93966 | 0.0 | 55.25 +Other | | 0.003483 | | | 0.20 Nlocal: 250 ave 250 max 250 min Histogram: 1 0 0 0 0 0 0 0 0 0 Nghost: 1415 ave 1415 max 1415 min Histogram: 1 0 0 0 0 0 0 0 0 0 -Neighs: 7873 ave 7873 max 7873 min +Neighs: 7872 ave 7872 max 7872 min Histogram: 1 0 0 0 0 0 0 0 0 0 -FullNghs: 15746 ave 15746 max 15746 min +FullNghs: 15744 ave 15744 max 15744 min Histogram: 1 0 0 0 0 0 0 0 0 0 -Total # of neighbors = 15746 -Ave neighs/atom = 62.984 +Total # of neighbors = 15744 +Ave neighs/atom = 62.976 Neighbor list builds = 6 Dangerous builds = 0 # min_style spin diff --git a/examples/SPIN/iron/log.30Mar20.spin.iron_cubic.g++.4 b/examples/SPIN/iron/log.14Apr20.spin.iron_cubic.g++.4 similarity index 65% rename from examples/SPIN/iron/log.30Mar20.spin.iron_cubic.g++.4 rename to examples/SPIN/iron/log.14Apr20.spin.iron_cubic.g++.4 index 1363c81387..d1d0868e2f 100644 --- a/examples/SPIN/iron/log.30Mar20.spin.iron_cubic.g++.4 +++ b/examples/SPIN/iron/log.14Apr20.spin.iron_cubic.g++.4 @@ -1,7 +1,11 @@ -LAMMPS (18 Feb 2020) +LAMMPS (19 Mar 2020) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (../comm.cpp:94) + using 1 OpenMP thread(s) per MPI task # bcc iron in a 3d periodic box clear +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (../comm.cpp:94) + using 1 OpenMP thread(s) per MPI task units metal atom_style spin @@ -19,7 +23,7 @@ Created orthogonal box = (0 0 0) to (14.3325 14.3325 14.3325) 1 by 2 by 2 MPI processor grid create_atoms 1 box Created 250 atoms - create_atoms CPU = 0.00102901 secs + create_atoms CPU = 0.00071311 secs # setting mass, mag. moments, and interactions for bcc iron @@ -81,53 +85,53 @@ Neighbor list info ... bin: standard Per MPI rank memory allocation (min/avg/max) = 7.766 | 7.766 | 7.766 Mbytes Step Time v_magx v_magy v_magz v_magnorm v_tmag v_emag PotEng TotEng - 0 0 -1 0 0 1 0 -55.58269 -1125.5827 -1122.364 - 50 0.005 -1 0 0 1 0 -55.581457 -1125.4635 -1122.364 - 100 0.01 -1 0 0 1 0 -55.577922 -1125.1262 -1122.364 - 150 0.015 -1 0 0 1 0 -55.572562 -1124.6305 -1122.364 - 200 0.02 -1 0 0 1 0 -55.566098 -1124.067 -1122.364 - 250 0.025 -1 0 0 1 0 -55.559384 -1123.5412 -1122.364 - 300 0.03 -1 0 0 1 0 -55.553261 -1123.1491 -1122.364 - 350 0.035 -1 0 0 1 0 -55.548413 -1122.9526 -1122.364 - 400 0.04 -1 0 0 1 0 -55.545248 -1122.9623 -1122.364 - 450 0.045 -1 0 0 1 0 -55.54387 -1123.1395 -1122.364 - 500 0.05 -1 0 0 1 0 -55.544101 -1123.4126 -1122.364 - 550 0.055 -1 0 0 1 0 -55.54558 -1123.7021 -1122.364 - 600 0.06 -1 0 0 1 0 -55.547857 -1123.9414 -1122.364 - 650 0.065 -1 0 0 1 0 -55.550495 -1124.0897 -1122.364 - 700 0.07 -1 0 0 1 0 -55.553127 -1124.136 -1122.364 - 750 0.075 -1 0 0 1 0 -55.555497 -1124.0961 -1122.364 - 800 0.08 -1 0 0 1 0 -55.557466 -1124.0053 -1122.364 - 850 0.085 -1 0 0 1 0 -55.559001 -1123.9069 -1122.364 - 900 0.09 -1 0 0 1 0 -55.560147 -1123.8404 -1122.364 - 950 0.095 -1 0 0 1 0 -55.560992 -1123.8312 -1122.364 - 1000 0.1 -1 0 0 1 0 -55.561635 -1123.8853 -1122.364 -Loop time of 1.49196 on 4 procs for 1000 steps with 250 atoms - -Performance: 5.791 ns/day, 4.144 hours/ns, 670.259 timesteps/s -100.0% CPU use with 4 MPI tasks x no OpenMP threads + 0 0 -1 0 0 1 0 -27.791345 -1097.7914 -1094.5727 + 50 0.005 -1 0 0 1 0 -27.790728 -1097.6727 -1094.5727 + 100 0.01 -1 0 0 1 0 -27.78896 -1097.3371 -1094.5727 + 150 0.015 -1 0 0 1 0 -27.786276 -1096.8437 -1094.5727 + 200 0.02 -1 0 0 1 0 -27.783035 -1096.2824 -1094.5727 + 250 0.025 -1 0 0 1 0 -27.779661 -1095.758 -1094.5727 + 300 0.03 -1 0 0 1 0 -27.776574 -1095.3661 -1094.5727 + 350 0.035 -1 0 0 1 0 -27.774114 -1095.1684 -1094.5727 + 400 0.04 -1 0 0 1 0 -27.772489 -1095.1758 -1094.5727 + 450 0.045 -1 0 0 1 0 -27.771753 -1095.3498 -1094.5727 + 500 0.05 -1 0 0 1 0 -27.771823 -1095.6196 -1094.5727 + 550 0.055 -1 0 0 1 0 -27.772521 -1095.9061 -1094.5727 + 600 0.06 -1 0 0 1 0 -27.773627 -1096.1431 -1094.5727 + 650 0.065 -1 0 0 1 0 -27.774925 -1096.2899 -1094.5727 + 700 0.07 -1 0 0 1 0 -27.776234 -1096.3356 -1094.5727 + 750 0.075 -1 0 0 1 0 -27.777423 -1096.2961 -1094.5727 + 800 0.08 -1 0 0 1 0 -27.778424 -1096.2063 -1094.5727 + 850 0.085 -1 0 0 1 0 -27.779215 -1096.1093 -1094.5727 + 900 0.09 -1 0 0 1 0 -27.779817 -1096.0443 -1094.5727 + 950 0.095 -1 0 0 1 0 -27.780271 -1096.0363 -1094.5727 + 1000 0.1 -1 0 0 1 0 -27.780622 -1096.0914 -1094.5727 +Loop time of 1.54663 on 4 procs for 1000 steps with 250 atoms + +Performance: 5.586 ns/day, 4.296 hours/ns, 646.566 timesteps/s +99.9% 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.22188 | 0.23022 | 0.23629 | 1.2 | 15.43 -Neigh | 0.0011537 | 0.0012084 | 0.0012586 | 0.1 | 0.08 -Comm | 0.068881 | 0.074134 | 0.083032 | 2.1 | 4.97 -Output | 0.0014582 | 0.001489 | 0.0015554 | 0.1 | 0.10 -Modify | 1.1825 | 1.1835 | 1.1845 | 0.1 | 79.33 -Other | | 0.001403 | | | 0.09 +Pair | 0.2086 | 0.21716 | 0.22473 | 1.2 | 14.04 +Neigh | 0.0011575 | 0.0011975 | 0.001235 | 0.1 | 0.08 +Comm | 0.070766 | 0.080324 | 0.088558 | 2.3 | 5.19 +Output | 0.0016837 | 0.0017157 | 0.0017838 | 0.1 | 0.11 +Modify | 1.2424 | 1.2446 | 1.2467 | 0.1 | 80.47 +Other | | 0.001639 | | | 0.11 Nlocal: 62.5 ave 66 max 60 min Histogram: 1 1 0 0 0 1 0 0 0 1 Nghost: 848.25 ave 861 max 834 min Histogram: 1 0 0 0 1 0 1 0 0 1 -Neighs: 1962.75 ave 2087 max 1870 min +Neighs: 1962.25 ave 2085 max 1870 min Histogram: 1 1 0 0 0 0 1 0 0 1 -FullNghs: 3925.5 ave 4138 max 3776 min +FullNghs: 3924.5 ave 4136 max 3776 min Histogram: 1 1 0 0 0 1 0 0 0 1 -Total # of neighbors = 15702 -Ave neighs/atom = 62.808 +Total # of neighbors = 15698 +Ave neighs/atom = 62.792 Neighbor list builds = 6 Dangerous builds = 0 # min_style spin diff --git a/examples/SPIN/iron/log.30Mar20.spin.iron.g++.1 b/examples/SPIN/iron/log.30Mar20.spin.iron.g++.1 deleted file mode 100644 index 40d2dcab23..0000000000 --- a/examples/SPIN/iron/log.30Mar20.spin.iron.g++.1 +++ /dev/null @@ -1,137 +0,0 @@ -LAMMPS (18 Feb 2020) -# bcc iron in a 3d periodic box - -clear -units metal -atom_style spin - -dimension 3 -boundary p p p - -# necessary for the serial algorithm (sametag) -atom_modify map array - -lattice bcc 2.8665 -Lattice spacing in x,y,z = 2.8665 2.8665 2.8665 -region box block 0.0 5.0 0.0 5.0 0.0 5.0 -create_box 1 box -Created orthogonal box = (0 0 0) to (14.3325 14.3325 14.3325) - 1 by 1 by 1 MPI processor grid -create_atoms 1 box -Created 250 atoms - create_atoms CPU = 0.000427961 secs - -# setting mass, mag. moments, and interactions for bcc iron - -mass 1 55.845 - -set group all spin/random 31 2.2 - 250 settings made for spin/random -# set group all spin 2.2 0.0 0.0 1.0 -velocity all create 100 4928459 rot yes dist gaussian - -pair_style hybrid/overlay eam/alloy spin/exchange 3.5 -pair_coeff * * eam/alloy Fe_Mishin2006.eam.alloy Fe -pair_coeff * * spin/exchange exchange 3.4 0.02726 0.2171 1.841 - -neighbor 0.1 bin -neigh_modify every 10 check yes delay 20 - -fix 1 all precession/spin zeeman 0.0 0.0 0.0 1.0 -fix_modify 1 energy yes -fix 2 all langevin/spin 0.0 0.0 21 - -fix 3 all nve/spin lattice moving -timestep 0.0001 - -# compute and output options - -compute out_mag all spin -compute out_pe all pe -compute out_ke all ke -compute out_temp all temp - -variable magz equal c_out_mag[3] -variable magnorm equal c_out_mag[4] -variable emag equal c_out_mag[5] -variable tmag equal c_out_mag[6] - -thermo_style custom step time v_magnorm v_tmag temp v_emag ke pe press etotal -thermo 50 - -compute outsp all property/atom spx spy spz sp fmx fmy fmz -dump 1 all custom 100 dump_iron.lammpstrj type x y z c_outsp[1] c_outsp[2] c_outsp[3] - -run 1000 -Neighbor list info ... - update every 10 steps, delay 20 steps, check yes - max neighbors/atom: 2000, page size: 100000 - master list distance cutoff = 5.77337 - ghost atom cutoff = 5.77337 - binsize = 2.88668, bins = 5 5 5 - 2 neighbor lists, perpetual/occasional/extra = 2 0 0 - (1) pair eam/alloy, perpetual, half/full from (2) - attributes: half, newton on - pair build: halffull/newton - stencil: none - bin: none - (2) pair spin/exchange, perpetual - attributes: full, newton on - pair build: full/bin/atomonly - stencil: full/bin/3d - bin: standard -Per MPI rank memory allocation (min/avg/max) = 7.82 | 7.82 | 7.82 Mbytes -Step Time v_magnorm v_tmag Temp v_emag KinEng PotEng Press TotEng - 0 0 0.076456975 9109.0924 100.00358 -0.85791269 3.2186929 -1070.8579 394.43342 -1067.6392 - 50 0.005 0.076456974 9316.7659 96.663685 -0.86504718 3.1111957 -1070.7504 709.50826 -1067.6392 - 100 0.01 0.076456983 9488.3743 86.965803 -0.88035771 2.7990619 -1070.4383 1466.6938 -1067.6392 - 150 0.015 0.076456973 9589.0566 72.421197 -0.8996913 2.3309324 -1069.9702 2534.3867 -1067.6392 - 200 0.02 0.076456944 9415.3095 55.633188 -0.921682 1.7905973 -1069.4298 3732.183 -1067.6392 - 250 0.025 0.076456953 8878.9394 39.802206 -0.94649004 1.2810649 -1068.9203 4831.5559 -1067.6392 - 300 0.03 0.076457027 8203.3388 27.882295 -0.97253854 0.8974133 -1068.5366 5612.0928 -1067.6392 - 350 0.035 0.076457103 7720.309 21.776538 -0.99708692 0.70089477 -1068.3401 5906.3057 -1067.6392 - 400 0.04 0.076457117 7531.0683 21.857102 -1.0190244 0.70348778 -1068.3427 5682.0053 -1067.6392 - 450 0.045 0.076457072 7479.8073 26.959407 -1.0389343 0.86770942 -1068.5069 5066.5077 -1067.6392 - 500 0.05 0.076457001 7461.6683 34.92521 -1.0582008 1.124095 -1068.7633 4279.2424 -1067.6392 - 550 0.055 0.076456962 7396.1112 43.405912 -1.0785156 1.397053 -1069.0363 3533.4153 -1067.6392 - 600 0.06 0.076456997 7121.894 50.544844 -1.102048 1.626825 -1069.2661 2975.8479 -1067.6392 - 650 0.065 0.076457079 6683.4805 55.261218 -1.1296588 1.7786252 -1069.4179 2683.3023 -1067.6392 - 700 0.07 0.076457136 6313.6896 57.25083 -1.1595102 1.8426624 -1069.4819 2640.5967 -1067.6392 - 750 0.075 0.076457132 6199.0363 56.934336 -1.1893875 1.8324758 -1069.4717 2778.3261 -1067.6392 - 800 0.08 0.076457116 6265.997 55.266343 -1.2181223 1.7787901 -1069.418 3020.1175 -1067.6392 - 850 0.085 0.076457116 6326.5886 53.376453 -1.2443326 1.7179626 -1069.3572 3287.9042 -1067.6392 - 900 0.09 0.076457121 6336.1261 52.279557 -1.2676425 1.6826581 -1069.3219 3504.7334 -1067.6392 - 950 0.095 0.076457122 6288.4204 52.667743 -1.2902335 1.6951522 -1069.3344 3622.1382 -1067.6392 - 1000 0.1 0.076457135 6122.1622 54.684094 -1.314147 1.76005 -1069.3993 3625.2935 -1067.6392 -Loop time of 1.6842 on 1 procs for 1000 steps with 250 atoms - -Performance: 5.130 ns/day, 4.678 hours/ns, 593.753 timesteps/s -100.0% CPU use with 1 MPI tasks x no OpenMP threads - -MPI task timing breakdown: -Section | min time | avg time | max time |%varavg| %total ---------------------------------------------------------------- -Pair | 0.78195 | 0.78195 | 0.78195 | 0.0 | 46.43 -Neigh | 0.004627 | 0.004627 | 0.004627 | 0.0 | 0.27 -Comm | 0.022943 | 0.022943 | 0.022943 | 0.0 | 1.36 -Output | 0.0038755 | 0.0038755 | 0.0038755 | 0.0 | 0.23 -Modify | 0.86736 | 0.86736 | 0.86736 | 0.0 | 51.50 -Other | | 0.003444 | | | 0.20 - -Nlocal: 250 ave 250 max 250 min -Histogram: 1 0 0 0 0 0 0 0 0 0 -Nghost: 1399 ave 1399 max 1399 min -Histogram: 1 0 0 0 0 0 0 0 0 0 -Neighs: 7855 ave 7855 max 7855 min -Histogram: 1 0 0 0 0 0 0 0 0 0 -FullNghs: 15710 ave 15710 max 15710 min -Histogram: 1 0 0 0 0 0 0 0 0 0 - -Total # of neighbors = 15710 -Ave neighs/atom = 62.84 -Neighbor list builds = 6 -Dangerous builds = 0 - -Please see the log.cite file for references relevant to this simulation - -Total wall time: 0:00:01 diff --git a/examples/SPIN/iron/log.30Mar20.spin.iron.g++.4 b/examples/SPIN/iron/log.30Mar20.spin.iron.g++.4 deleted file mode 100644 index 57c9282f07..0000000000 --- a/examples/SPIN/iron/log.30Mar20.spin.iron.g++.4 +++ /dev/null @@ -1,137 +0,0 @@ -LAMMPS (18 Feb 2020) -# bcc iron in a 3d periodic box - -clear -units metal -atom_style spin - -dimension 3 -boundary p p p - -# necessary for the serial algorithm (sametag) -atom_modify map array - -lattice bcc 2.8665 -Lattice spacing in x,y,z = 2.8665 2.8665 2.8665 -region box block 0.0 5.0 0.0 5.0 0.0 5.0 -create_box 1 box -Created orthogonal box = (0 0 0) to (14.3325 14.3325 14.3325) - 1 by 2 by 2 MPI processor grid -create_atoms 1 box -Created 250 atoms - create_atoms CPU = 0.000764847 secs - -# setting mass, mag. moments, and interactions for bcc iron - -mass 1 55.845 - -set group all spin/random 31 2.2 - 250 settings made for spin/random -# set group all spin 2.2 0.0 0.0 1.0 -velocity all create 100 4928459 rot yes dist gaussian - -pair_style hybrid/overlay eam/alloy spin/exchange 3.5 -pair_coeff * * eam/alloy Fe_Mishin2006.eam.alloy Fe -pair_coeff * * spin/exchange exchange 3.4 0.02726 0.2171 1.841 - -neighbor 0.1 bin -neigh_modify every 10 check yes delay 20 - -fix 1 all precession/spin zeeman 0.0 0.0 0.0 1.0 -fix_modify 1 energy yes -fix 2 all langevin/spin 0.0 0.0 21 - -fix 3 all nve/spin lattice moving -timestep 0.0001 - -# compute and output options - -compute out_mag all spin -compute out_pe all pe -compute out_ke all ke -compute out_temp all temp - -variable magz equal c_out_mag[3] -variable magnorm equal c_out_mag[4] -variable emag equal c_out_mag[5] -variable tmag equal c_out_mag[6] - -thermo_style custom step time v_magnorm v_tmag temp v_emag ke pe press etotal -thermo 50 - -compute outsp all property/atom spx spy spz sp fmx fmy fmz -dump 1 all custom 100 dump_iron.lammpstrj type x y z c_outsp[1] c_outsp[2] c_outsp[3] - -run 1000 -Neighbor list info ... - update every 10 steps, delay 20 steps, check yes - max neighbors/atom: 2000, page size: 100000 - master list distance cutoff = 5.77337 - ghost atom cutoff = 5.77337 - binsize = 2.88668, bins = 5 5 5 - 2 neighbor lists, perpetual/occasional/extra = 2 0 0 - (1) pair eam/alloy, perpetual, half/full from (2) - attributes: half, newton on - pair build: halffull/newton - stencil: none - bin: none - (2) pair spin/exchange, perpetual - attributes: full, newton on - pair build: full/bin/atomonly - stencil: full/bin/3d - bin: standard -Per MPI rank memory allocation (min/avg/max) = 7.766 | 7.766 | 7.766 Mbytes -Step Time v_magnorm v_tmag Temp v_emag KinEng PotEng Press TotEng - 0 0 0.076456975 9109.0924 100.00358 -0.85791269 3.2186929 -1070.8579 394.43342 -1067.6392 - 50 0.005 0.076456995 9402.4007 96.298333 -0.85659448 3.0994366 -1070.7387 714.37866 -1067.6392 - 100 0.01 0.076457028 9589.1846 86.330828 -0.87003341 2.7786247 -1070.4179 1484.2951 -1067.6392 - 150 0.015 0.076457074 9673.9268 71.603402 -0.89006992 2.3046111 -1069.9438 2551.9258 -1067.6392 - 200 0.02 0.076457106 9509.1148 54.648817 -0.91124541 1.7589146 -1069.3981 3731.1494 -1067.6392 - 250 0.025 0.076457128 9004.27 38.599515 -0.93187522 1.2423553 -1068.8816 4804.619 -1067.6392 - 300 0.03 0.076457157 8353.4371 26.383018 -0.95082226 0.8491579 -1068.4884 5563.3287 -1067.6392 - 350 0.035 0.076457207 7911.1316 20.01039 -0.96826468 0.64404992 -1068.2833 5839.6479 -1067.6392 - 400 0.04 0.076457243 7775.9492 20.097682 -0.98706373 0.64685949 -1068.2861 5601.1255 -1067.6392 - 450 0.045 0.076457231 7737.1225 25.687511 -1.0095684 0.82677249 -1068.466 4974.0031 -1067.6392 - 500 0.05 0.076457204 7676.9809 34.604697 -1.0349855 1.113779 -1068.753 4157.1837 -1067.6392 - 550 0.055 0.076457196 7550.2809 44.251809 -1.0609123 1.4242788 -1069.0635 3357.1 -1067.6392 - 600 0.06 0.076457188 7209.7657 52.475202 -1.0880854 1.6889551 -1069.3282 2752.0424 -1067.6392 - 650 0.065 0.07645718 6691.1787 57.926479 -1.1179657 1.8644087 -1069.5036 2467.7403 -1067.6392 - 700 0.07 0.076457185 6276.4003 60.030548 -1.1469999 1.9321298 -1069.5714 2510.1752 -1067.6392 - 750 0.075 0.07645719 6149.9253 59.122504 -1.1721939 1.9029037 -1069.5421 2788.7489 -1067.6392 - 800 0.08 0.076457195 6207.0587 56.349146 -1.1949365 1.813641 -1069.4529 3192.5158 -1067.6392 - 850 0.085 0.076457199 6328.4635 53.154464 -1.2164642 1.7108177 -1069.35 3602.931 -1067.6392 - 900 0.09 0.076457199 6456.2716 50.837416 -1.2366018 1.6362417 -1069.2755 3917.0758 -1067.6392 - 950 0.095 0.076457222 6495.1064 50.234549 -1.2539657 1.6168379 -1069.2561 4059.9275 -1067.6392 - 1000 0.1 0.076457266 6416.775 51.592727 -1.2671834 1.6605519 -1069.2998 4001.4995 -1067.6392 -Loop time of 1.51216 on 4 procs for 1000 steps with 250 atoms - -Performance: 5.714 ns/day, 4.200 hours/ns, 661.306 timesteps/s -99.9% CPU use with 4 MPI tasks x no OpenMP threads - -MPI task timing breakdown: -Section | min time | avg time | max time |%varavg| %total ---------------------------------------------------------------- -Pair | 0.22741 | 0.23312 | 0.23928 | 1.1 | 15.42 -Neigh | 0.001168 | 0.0012105 | 0.001256 | 0.1 | 0.08 -Comm | 0.071545 | 0.076662 | 0.081663 | 1.8 | 5.07 -Output | 0.0016665 | 0.0017048 | 0.0017688 | 0.1 | 0.11 -Modify | 1.1968 | 1.198 | 1.1988 | 0.1 | 79.23 -Other | | 0.001447 | | | 0.10 - -Nlocal: 62.5 ave 66 max 60 min -Histogram: 1 0 0 2 0 0 0 0 0 1 -Nghost: 844 ave 857 max 829 min -Histogram: 1 0 0 1 0 0 0 0 1 1 -Neighs: 1962.5 ave 2096 max 1855 min -Histogram: 1 0 1 0 0 1 0 0 0 1 -FullNghs: 3925 ave 4139 max 3766 min -Histogram: 1 0 0 2 0 0 0 0 0 1 - -Total # of neighbors = 15700 -Ave neighs/atom = 62.8 -Neighbor list builds = 6 -Dangerous builds = 0 - -Please see the log.cite file for references relevant to this simulation - -Total wall time: 0:00:01 diff --git a/examples/SPIN/nickel/log.14Apr20.spin.nickel.g++.1 b/examples/SPIN/nickel/log.14Apr20.spin.nickel.g++.1 new file mode 100644 index 0000000000..e4bcd538c8 --- /dev/null +++ b/examples/SPIN/nickel/log.14Apr20.spin.nickel.g++.1 @@ -0,0 +1,141 @@ +LAMMPS (19 Mar 2020) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (../comm.cpp:94) + using 1 OpenMP thread(s) per MPI task +# fcc nickel in a 3d periodic box + +clear +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (../comm.cpp:94) + using 1 OpenMP thread(s) per MPI task +units metal +atom_style spin + +dimension 3 +boundary p p p + +# necessary for the serial algorithm (sametag) +atom_modify map array + +lattice fcc 3.524 +Lattice spacing in x,y,z = 3.524 3.524 3.524 +region box block 0.0 5.0 0.0 5.0 0.0 5.0 +create_box 1 box +Created orthogonal box = (0 0 0) to (17.62 17.62 17.62) + 1 by 1 by 1 MPI processor grid +create_atoms 1 box +Created 500 atoms + create_atoms CPU = 0.00111699 secs + +# setting mass, mag. moments, and interactions for cobalt + +mass 1 58.69 + +set group all spin/random 31 0.63 + 500 settings made for spin/random +#set group all spin 0.63 0.0 0.0 1.0 +velocity all create 100 4928459 rot yes dist gaussian + +pair_style hybrid/overlay eam/alloy spin/exchange 4.0 +pair_coeff * * eam/alloy Ni99.eam.alloy Ni +pair_coeff * * spin/exchange exchange 4.0 0.50 0.2280246862 1.229983475 + +neighbor 0.1 bin +neigh_modify every 10 check yes delay 20 + +fix 1 all precession/spin zeeman 0.0 0.0 0.0 1.0 +fix_modify 1 energy yes +fix 2 all langevin/spin 0.0 0.0 21 + +fix 3 all nve/spin lattice moving +timestep 0.0001 + +# compute and output options + +compute out_mag all spin +compute out_pe all pe +compute out_ke all ke +compute out_temp all temp + +variable magz equal c_out_mag[3] +variable magnorm equal c_out_mag[4] +variable emag equal c_out_mag[5] +variable tmag equal c_out_mag[6] + +thermo_style custom step time v_magnorm pe v_emag temp v_tmag etotal +thermo 50 + +compute outsp all property/atom spx spy spz sp fmx fmy fmz +dump 1 all custom 100 dump.lammpstrj type x y z c_outsp[1] c_outsp[2] c_outsp[3] c_outsp[4] c_outsp[5] c_outsp[6] c_outsp[7] + +run 1000 +Neighbor list info ... + update every 10 steps, delay 20 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 5.90375 + ghost atom cutoff = 5.90375 + binsize = 2.95187, bins = 6 6 6 + 2 neighbor lists, perpetual/occasional/extra = 2 0 0 + (1) pair eam/alloy, perpetual, half/full from (2) + attributes: half, newton on + pair build: halffull/newton + stencil: none + bin: none + (2) pair spin/exchange, perpetual + attributes: full, newton on + pair build: full/bin/atomonly + stencil: full/bin/3d + bin: standard +Per MPI rank memory allocation (min/avg/max) = 7.885 | 7.885 | 7.885 Mbytes +Step Time v_magnorm PotEng v_emag Temp v_tmag TotEng + 0 0 0.028733803 -2224.7591 0.20498788 100.03408 -4775.0671 -2218.3068 + 50 0.005 0.028733807 -2224.6271 0.093798492 97.987469 -10540.61 -2218.3068 + 100 0.01 0.028733815 -2224.1217 -0.12620081 90.153107 8107.9288 -2218.3068 + 150 0.015 0.028733823 -2223.2984 -0.433762 77.388213 2482.6323 -2218.3068 + 200 0.02 0.028733827 -2222.3037 -0.80329408 61.9663 1426.722 -2218.3068 + 250 0.025 0.028733825 -2221.3495 -1.21118 47.173828 1010.1027 -2218.3068 + 300 0.03 0.028733813 -2220.6532 -1.6389575 36.378126 789.93596 -2218.3068 + 350 0.035 0.028733795 -2220.3656 -2.0724228 31.919862 648.39236 -2218.3068 + 400 0.04 0.028733778 -2220.5225 -2.498882 34.352305 545.8856 -2218.3068 + 450 0.045 0.02873377 -2221.0414 -2.9067963 42.396008 468.97305 -2218.3068 + 500 0.05 0.02873377 -2221.7614 -3.2881407 53.559839 411.03247 -2218.3068 + 550 0.055 0.028733775 -2222.5025 -3.6391769 65.048917 366.0991 -2218.3068 + 600 0.06 0.028733784 -2223.1215 -3.9612604 74.645803 330.37583 -2218.3068 + 650 0.065 0.028733794 -2223.5495 -4.2623843 81.281536 303.0489 -2218.3068 + 700 0.07 0.028733802 -2223.795 -4.5550161 85.087649 283.0897 -2218.3068 + 750 0.075 0.028733805 -2223.9222 -4.8523832 87.059996 267.48601 -2218.3068 + 800 0.08 0.028733804 -2224.0176 -5.1656984 88.538724 253.94215 -2218.3068 + 850 0.085 0.028733799 -2224.1506 -5.4981915 90.600346 242.22988 -2218.3068 + 900 0.09 0.028733794 -2224.3425 -5.8400709 93.576582 232.32115 -2218.3068 + 950 0.095 0.028733796 -2224.5674 -6.1746129 97.063173 222.64192 -2218.3068 + 1000 0.1 0.028733805 -2224.7832 -6.4920444 100.40752 212.7708 -2218.3068 +Loop time of 4.1438 on 1 procs for 1000 steps with 500 atoms + +Performance: 2.085 ns/day, 11.511 hours/ns, 241.324 timesteps/s +100.0% CPU use with 1 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 1.8846 | 1.8846 | 1.8846 | 0.0 | 45.48 +Neigh | 0.012244 | 0.012244 | 0.012244 | 0.0 | 0.30 +Comm | 0.033385 | 0.033385 | 0.033385 | 0.0 | 0.81 +Output | 0.014202 | 0.014202 | 0.014202 | 0.0 | 0.34 +Modify | 2.1938 | 2.1938 | 2.1938 | 0.0 | 52.94 +Other | | 0.005526 | | | 0.13 + +Nlocal: 500 ave 500 max 500 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 1956 ave 1956 max 1956 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 19500 ave 19500 max 19500 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +FullNghs: 39000 ave 39000 max 39000 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 39000 +Ave neighs/atom = 78 +Neighbor list builds = 7 +Dangerous builds = 0 + +Please see the log.cite file for references relevant to this simulation + +Total wall time: 0:00:04 diff --git a/examples/SPIN/nickel/log.14Apr20.spin.nickel.g++.4 b/examples/SPIN/nickel/log.14Apr20.spin.nickel.g++.4 new file mode 100644 index 0000000000..2ef20e4789 --- /dev/null +++ b/examples/SPIN/nickel/log.14Apr20.spin.nickel.g++.4 @@ -0,0 +1,141 @@ +LAMMPS (19 Mar 2020) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (../comm.cpp:94) + using 1 OpenMP thread(s) per MPI task +# fcc nickel in a 3d periodic box + +clear +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (../comm.cpp:94) + using 1 OpenMP thread(s) per MPI task +units metal +atom_style spin + +dimension 3 +boundary p p p + +# necessary for the serial algorithm (sametag) +atom_modify map array + +lattice fcc 3.524 +Lattice spacing in x,y,z = 3.524 3.524 3.524 +region box block 0.0 5.0 0.0 5.0 0.0 5.0 +create_box 1 box +Created orthogonal box = (0 0 0) to (17.62 17.62 17.62) + 1 by 2 by 2 MPI processor grid +create_atoms 1 box +Created 500 atoms + create_atoms CPU = 0.000680923 secs + +# setting mass, mag. moments, and interactions for cobalt + +mass 1 58.69 + +set group all spin/random 31 0.63 + 500 settings made for spin/random +#set group all spin 0.63 0.0 0.0 1.0 +velocity all create 100 4928459 rot yes dist gaussian + +pair_style hybrid/overlay eam/alloy spin/exchange 4.0 +pair_coeff * * eam/alloy Ni99.eam.alloy Ni +pair_coeff * * spin/exchange exchange 4.0 0.50 0.2280246862 1.229983475 + +neighbor 0.1 bin +neigh_modify every 10 check yes delay 20 + +fix 1 all precession/spin zeeman 0.0 0.0 0.0 1.0 +fix_modify 1 energy yes +fix 2 all langevin/spin 0.0 0.0 21 + +fix 3 all nve/spin lattice moving +timestep 0.0001 + +# compute and output options + +compute out_mag all spin +compute out_pe all pe +compute out_ke all ke +compute out_temp all temp + +variable magz equal c_out_mag[3] +variable magnorm equal c_out_mag[4] +variable emag equal c_out_mag[5] +variable tmag equal c_out_mag[6] + +thermo_style custom step time v_magnorm pe v_emag temp v_tmag etotal +thermo 50 + +compute outsp all property/atom spx spy spz sp fmx fmy fmz +dump 1 all custom 100 dump.lammpstrj type x y z c_outsp[1] c_outsp[2] c_outsp[3] c_outsp[4] c_outsp[5] c_outsp[6] c_outsp[7] + +run 1000 +Neighbor list info ... + update every 10 steps, delay 20 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 5.90375 + ghost atom cutoff = 5.90375 + binsize = 2.95187, bins = 6 6 6 + 2 neighbor lists, perpetual/occasional/extra = 2 0 0 + (1) pair eam/alloy, perpetual, half/full from (2) + attributes: half, newton on + pair build: halffull/newton + stencil: none + bin: none + (2) pair spin/exchange, perpetual + attributes: full, newton on + pair build: full/bin/atomonly + stencil: full/bin/3d + bin: standard +Per MPI rank memory allocation (min/avg/max) = 7.799 | 7.799 | 7.799 Mbytes +Step Time v_magnorm PotEng v_emag Temp v_tmag TotEng + 0 0 0.028733803 -2224.7591 0.20498788 100.03408 -4775.0671 -2218.3068 + 50 0.005 0.028733805 -2224.5402 0.18523081 96.640497 -5356.0839 -2218.3068 + 100 0.01 0.028733812 -2223.9764 0.042321266 87.900506 -24443.229 -2218.3068 + 150 0.015 0.028733818 -2223.1275 -0.20362758 74.73931 5409.1535 -2218.3068 + 200 0.02 0.028733826 -2222.1368 -0.52607498 59.379029 2258.3662 -2218.3068 + 250 0.025 0.028733831 -2221.2102 -0.90147712 45.013713 1422.5963 -2218.3068 + 300 0.03 0.028733827 -2220.558 -1.3121131 34.902868 1037.9833 -2218.3068 + 350 0.035 0.028733817 -2220.3198 -1.7411113 31.20948 805.99534 -2218.3068 + 400 0.04 0.028733807 -2220.5162 -2.1695831 34.253525 646.07984 -2218.3068 + 450 0.045 0.028733802 -2221.0547 -2.581156 42.602248 532.25918 -2218.3068 + 500 0.05 0.028733805 -2221.7784 -2.9684862 53.822318 451.09419 -2218.3068 + 550 0.055 0.028733814 -2222.5255 -3.3338614 65.405638 392.41628 -2218.3068 + 600 0.06 0.028733822 -2223.1693 -3.6823124 75.38674 349.28401 -2218.3068 + 650 0.065 0.028733828 -2223.6339 -4.0182131 82.590109 317.40382 -2218.3068 + 700 0.07 0.028733827 -2223.907 -4.3515619 86.82355 294.41794 -2218.3068 + 750 0.075 0.028733822 -2224.0293 -4.6966825 88.720045 278.64174 -2218.3068 + 800 0.08 0.02873382 -2224.064 -5.0589353 89.257884 267.43696 -2218.3068 + 850 0.085 0.028733824 -2224.0702 -5.4291065 89.354006 257.51219 -2218.3068 + 900 0.09 0.028733833 -2224.0977 -5.7927329 89.780835 246.96548 -2218.3068 + 950 0.095 0.028733835 -2224.1852 -6.1414644 91.136895 236.30442 -2218.3068 + 1000 0.1 0.028733828 -2224.3442 -6.472877 93.602509 227.18362 -2218.3068 +Loop time of 2.57923 on 4 procs for 1000 steps with 500 atoms + +Performance: 3.350 ns/day, 7.165 hours/ns, 387.713 timesteps/s +99.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 | 0.52633 | 0.53745 | 0.55615 | 1.6 | 20.84 +Neigh | 0.0030599 | 0.0031699 | 0.0032969 | 0.2 | 0.12 +Comm | 0.10599 | 0.1261 | 0.13713 | 3.4 | 4.89 +Output | 0.0051079 | 0.0051572 | 0.0052865 | 0.1 | 0.20 +Modify | 1.9032 | 1.9052 | 1.9065 | 0.1 | 73.87 +Other | | 0.002202 | | | 0.09 + +Nlocal: 125 ave 138 max 115 min +Histogram: 1 0 0 2 0 0 0 0 0 1 +Nghost: 1099 ave 1109 max 1086 min +Histogram: 1 0 0 0 0 0 2 0 0 1 +Neighs: 4875 ave 5336 max 4525 min +Histogram: 1 0 0 2 0 0 0 0 0 1 +FullNghs: 9750 ave 10764 max 8970 min +Histogram: 1 0 0 2 0 0 0 0 0 1 + +Total # of neighbors = 39000 +Ave neighs/atom = 78 +Neighbor list builds = 7 +Dangerous builds = 0 + +Please see the log.cite file for references relevant to this simulation + +Total wall time: 0:00:02 diff --git a/examples/SPIN/nickel/log.14Apr20.spin.nickel_cubic.g++.1 b/examples/SPIN/nickel/log.14Apr20.spin.nickel_cubic.g++.1 new file mode 100644 index 0000000000..a9c6dc1ea4 --- /dev/null +++ b/examples/SPIN/nickel/log.14Apr20.spin.nickel_cubic.g++.1 @@ -0,0 +1,142 @@ +LAMMPS (19 Mar 2020) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (../comm.cpp:94) + using 1 OpenMP thread(s) per MPI task +# fcc nickel in a 3d periodic box + +clear +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (../comm.cpp:94) + using 1 OpenMP thread(s) per MPI task +units metal +atom_style spin + +dimension 3 +boundary p p p + +# necessary for the serial algorithm (sametag) +atom_modify map array + +lattice fcc 3.524 +Lattice spacing in x,y,z = 3.524 3.524 3.524 +region box block 0.0 5.0 0.0 5.0 0.0 5.0 +create_box 1 box +Created orthogonal box = (0 0 0) to (17.62 17.62 17.62) + 1 by 1 by 1 MPI processor grid +create_atoms 1 box +Created 500 atoms + create_atoms CPU = 0.000916958 secs + +# setting mass, mag. moments, and interactions for cobalt + +mass 1 58.69 + +set group all spin/random 31 0.63 + 500 settings made for spin/random +#set group all spin 0.63 0.0 0.0 1.0 +velocity all create 100 4928459 rot yes dist gaussian + +pair_style hybrid/overlay eam/alloy spin/exchange 4.0 +pair_coeff * * eam/alloy Ni99.eam.alloy Ni +pair_coeff * * spin/exchange exchange 4.0 0.50 0.2280246862 1.229983475 + +neighbor 0.1 bin +neigh_modify every 10 check yes delay 20 + +fix 1 all precession/spin cubic -0.0001 0.0 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 zeeman 0.0 0.0 0.0 1.0 +fix_modify 1 energy yes +fix 2 all langevin/spin 0.0 0.0 21 + +fix 3 all nve/spin lattice moving +timestep 0.0001 + +# compute and output options + +compute out_mag all spin +compute out_pe all pe +compute out_ke all ke +compute out_temp all temp + +variable magz equal c_out_mag[3] +variable magnorm equal c_out_mag[4] +variable emag equal c_out_mag[5] +variable tmag equal c_out_mag[6] + +thermo_style custom step time v_magnorm pe v_emag temp v_tmag etotal +thermo 50 + +compute outsp all property/atom spx spy spz sp fmx fmy fmz +dump 1 all custom 50 dump.lammpstrj type x y z c_outsp[1] c_outsp[2] c_outsp[3] c_outsp[4] c_outsp[5] c_outsp[6] c_outsp[7] + +run 1000 +Neighbor list info ... + update every 10 steps, delay 20 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 5.90375 + ghost atom cutoff = 5.90375 + binsize = 2.95187, bins = 6 6 6 + 2 neighbor lists, perpetual/occasional/extra = 2 0 0 + (1) pair eam/alloy, perpetual, half/full from (2) + attributes: half, newton on + pair build: halffull/newton + stencil: none + bin: none + (2) pair spin/exchange, perpetual + attributes: full, newton on + pair build: full/bin/atomonly + stencil: full/bin/3d + bin: standard +Per MPI rank memory allocation (min/avg/max) = 7.885 | 7.885 | 7.885 Mbytes +Step Time v_magnorm PotEng v_emag Temp v_tmag TotEng + 0 0 0.028733803 -2224.7478 0.21626519 100.03408 -4301.853 -2218.2955 + 50 0.005 0.028732018 -2224.6158 0.10507552 97.987527 -8506.178 -2218.2955 + 100 0.01 0.028730353 -2224.1105 -0.11492231 90.153208 9821.9545 -2218.2955 + 150 0.015 0.028729179 -2223.2871 -0.42247044 77.388252 2612.6762 -2218.2955 + 200 0.02 0.028730623 -2222.2924 -0.79199024 61.966499 1465.6684 -2218.2955 + 250 0.025 0.02873338 -2221.3383 -1.199896 47.175023 1028.0909 -2218.2955 + 300 0.03 0.028732667 -2220.6421 -1.6277461 36.381371 800.14526 -2218.2955 + 350 0.035 0.028726646 -2220.3547 -2.0613125 31.92537 654.96081 -2218.2955 + 400 0.04 0.028719587 -2220.5116 -2.4878332 34.358607 550.47697 -2218.2955 + 450 0.045 0.028713837 -2221.0303 -2.8957078 42.400515 472.35844 -2218.2955 + 500 0.05 0.028707813 -2221.7502 -3.2769128 53.560569 413.68656 -2218.2955 + 550 0.055 0.028706758 -2222.4909 -3.627757 65.045564 368.28172 -2218.2955 + 600 0.06 0.02871485 -2223.1098 -3.9496387 74.639348 332.20637 -2218.2955 + 650 0.065 0.028726143 -2223.5376 -4.2505578 81.273271 304.61479 -2218.2954 + 700 0.07 0.028732341 -2223.7831 -4.5429323 85.078158 284.47251 -2218.2954 + 750 0.075 0.028732637 -2223.9102 -4.8399235 87.049135 268.76484 -2218.2954 + 800 0.08 0.028731303 -2224.0055 -5.1527352 88.526667 255.14878 -2218.2954 + 850 0.085 0.028728379 -2224.1384 -5.4846326 90.587963 243.32753 -2218.2954 + 900 0.09 0.028721628 -2224.3304 -5.8258679 93.565089 233.2995 -2218.2954 + 950 0.095 0.028715574 -2224.5555 -6.1597678 97.054035 223.54492 -2218.2954 + 1000 0.1 0.02871582 -2224.7714 -6.4766454 100.40218 213.59853 -2218.2954 +Loop time of 4.15073 on 1 procs for 1000 steps with 500 atoms + +Performance: 2.082 ns/day, 11.530 hours/ns, 240.921 timesteps/s +100.0% CPU use with 1 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 1.8514 | 1.8514 | 1.8514 | 0.0 | 44.60 +Neigh | 0.012244 | 0.012244 | 0.012244 | 0.0 | 0.29 +Comm | 0.032971 | 0.032971 | 0.032971 | 0.0 | 0.79 +Output | 0.027815 | 0.027815 | 0.027815 | 0.0 | 0.67 +Modify | 2.2209 | 2.2209 | 2.2209 | 0.0 | 53.51 +Other | | 0.005408 | | | 0.13 + +Nlocal: 500 ave 500 max 500 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 1956 ave 1956 max 1956 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 19500 ave 19500 max 19500 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +FullNghs: 39000 ave 39000 max 39000 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 39000 +Ave neighs/atom = 78 +Neighbor list builds = 7 +Dangerous builds = 0 + + +Please see the log.cite file for references relevant to this simulation + +Total wall time: 0:00:04 diff --git a/examples/SPIN/nickel/log.14Apr20.spin.nickel_cubic.g++.4 b/examples/SPIN/nickel/log.14Apr20.spin.nickel_cubic.g++.4 new file mode 100644 index 0000000000..9a25cb1fb3 --- /dev/null +++ b/examples/SPIN/nickel/log.14Apr20.spin.nickel_cubic.g++.4 @@ -0,0 +1,142 @@ +LAMMPS (19 Mar 2020) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (../comm.cpp:94) + using 1 OpenMP thread(s) per MPI task +# fcc nickel in a 3d periodic box + +clear +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (../comm.cpp:94) + using 1 OpenMP thread(s) per MPI task +units metal +atom_style spin + +dimension 3 +boundary p p p + +# necessary for the serial algorithm (sametag) +atom_modify map array + +lattice fcc 3.524 +Lattice spacing in x,y,z = 3.524 3.524 3.524 +region box block 0.0 5.0 0.0 5.0 0.0 5.0 +create_box 1 box +Created orthogonal box = (0 0 0) to (17.62 17.62 17.62) + 1 by 2 by 2 MPI processor grid +create_atoms 1 box +Created 500 atoms + create_atoms CPU = 0.000750065 secs + +# setting mass, mag. moments, and interactions for cobalt + +mass 1 58.69 + +set group all spin/random 31 0.63 + 500 settings made for spin/random +#set group all spin 0.63 0.0 0.0 1.0 +velocity all create 100 4928459 rot yes dist gaussian + +pair_style hybrid/overlay eam/alloy spin/exchange 4.0 +pair_coeff * * eam/alloy Ni99.eam.alloy Ni +pair_coeff * * spin/exchange exchange 4.0 0.50 0.2280246862 1.229983475 + +neighbor 0.1 bin +neigh_modify every 10 check yes delay 20 + +fix 1 all precession/spin cubic -0.0001 0.0 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 zeeman 0.0 0.0 0.0 1.0 +fix_modify 1 energy yes +fix 2 all langevin/spin 0.0 0.0 21 + +fix 3 all nve/spin lattice moving +timestep 0.0001 + +# compute and output options + +compute out_mag all spin +compute out_pe all pe +compute out_ke all ke +compute out_temp all temp + +variable magz equal c_out_mag[3] +variable magnorm equal c_out_mag[4] +variable emag equal c_out_mag[5] +variable tmag equal c_out_mag[6] + +thermo_style custom step time v_magnorm pe v_emag temp v_tmag etotal +thermo 50 + +compute outsp all property/atom spx spy spz sp fmx fmy fmz +dump 1 all custom 50 dump.lammpstrj type x y z c_outsp[1] c_outsp[2] c_outsp[3] c_outsp[4] c_outsp[5] c_outsp[6] c_outsp[7] + +run 1000 +Neighbor list info ... + update every 10 steps, delay 20 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 5.90375 + ghost atom cutoff = 5.90375 + binsize = 2.95187, bins = 6 6 6 + 2 neighbor lists, perpetual/occasional/extra = 2 0 0 + (1) pair eam/alloy, perpetual, half/full from (2) + attributes: half, newton on + pair build: halffull/newton + stencil: none + bin: none + (2) pair spin/exchange, perpetual + attributes: full, newton on + pair build: full/bin/atomonly + stencil: full/bin/3d + bin: standard +Per MPI rank memory allocation (min/avg/max) = 7.799 | 7.799 | 7.799 Mbytes +Step Time v_magnorm PotEng v_emag Temp v_tmag TotEng + 0 0 0.028733803 -2224.7478 0.21626519 100.03408 -4301.853 -2218.2955 + 50 0.005 0.028732084 -2224.5289 0.19650376 96.640616 -4777.5312 -2218.2955 + 100 0.01 0.028730714 -2223.9652 0.053583455 87.900827 -16071.152 -2218.2955 + 150 0.015 0.028730068 -2223.1163 -0.19237362 74.739735 6053.4731 -2218.2955 + 200 0.02 0.028732658 -2222.1255 -0.5148243 59.37938 2354.2236 -2218.2955 + 250 0.025 0.028736824 -2221.1989 -0.89021871 45.013765 1456.8539 -2218.2955 + 300 0.03 0.028734673 -2220.5467 -1.3008412 34.902634 1054.9996 -2218.2955 + 350 0.035 0.028726346 -2220.3085 -1.7298348 31.209321 816.00699 -2218.2955 + 400 0.04 0.028721022 -2220.5048 -2.1583012 34.253626 652.5234 -2218.2955 + 450 0.045 0.028722238 -2221.0433 -2.5698412 42.602344 536.67287 -2218.2955 + 500 0.05 0.02872462 -2221.767 -2.9571093 53.822165 454.37668 -2218.2955 + 550 0.055 0.02872545 -2222.5141 -3.3223962 65.405129 395.00593 -2218.2955 + 600 0.06 0.02873171 -2223.1579 -3.6706939 75.385253 351.37664 -2218.2955 + 650 0.065 0.028744439 -2223.6223 -4.0063211 82.586428 319.12437 -2218.2954 + 700 0.07 0.028756808 -2223.8952 -4.3392538 86.816357 295.88017 -2218.2954 + 750 0.075 0.028765368 -2224.0172 -4.6838051 88.708218 279.91792 -2218.2954 + 800 0.08 0.028773583 -2224.0515 -5.0453234 89.24056 268.55561 -2218.2954 + 850 0.085 0.028781239 -2224.0574 -5.4146399 89.331407 258.50935 -2218.2954 + 900 0.09 0.028787568 -2224.0847 -5.7774277 89.755159 247.86416 -2218.2954 + 950 0.095 0.028794703 -2224.1722 -6.1254539 91.111184 237.12719 -2218.2954 + 1000 0.1 0.028801253 -2224.3313 -6.4562841 93.577969 227.97114 -2218.2954 +Loop time of 2.49458 on 4 procs for 1000 steps with 500 atoms + +Performance: 3.464 ns/day, 6.929 hours/ns, 400.868 timesteps/s +100.0% 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.52895 | 0.53652 | 0.54117 | 0.6 | 21.51 +Neigh | 0.003077 | 0.0032379 | 0.003371 | 0.2 | 0.13 +Comm | 0.11315 | 0.1193 | 0.12956 | 1.8 | 4.78 +Output | 0.0093312 | 0.0093816 | 0.0094745 | 0.1 | 0.38 +Modify | 1.8206 | 1.8239 | 1.8254 | 0.1 | 73.11 +Other | | 0.00229 | | | 0.09 + +Nlocal: 125 ave 138 max 115 min +Histogram: 1 0 0 2 0 0 0 0 0 1 +Nghost: 1099 ave 1109 max 1086 min +Histogram: 1 0 0 0 0 0 2 0 0 1 +Neighs: 4875 ave 5337 max 4528 min +Histogram: 1 0 0 2 0 0 0 0 0 1 +FullNghs: 9750 ave 10764 max 8970 min +Histogram: 1 0 0 2 0 0 0 0 0 1 + +Total # of neighbors = 39000 +Ave neighs/atom = 78 +Neighbor list builds = 7 +Dangerous builds = 0 + + +Please see the log.cite file for references relevant to this simulation + +Total wall time: 0:00:02 diff --git a/examples/SPIN/nickel/log.30Mar20.spin.nickel.g++.1 b/examples/SPIN/nickel/log.30Mar20.spin.nickel.g++.1 deleted file mode 100644 index 66e5bee461..0000000000 --- a/examples/SPIN/nickel/log.30Mar20.spin.nickel.g++.1 +++ /dev/null @@ -1,137 +0,0 @@ -LAMMPS (18 Feb 2020) -# fcc nickel in a 3d periodic box - -clear -units metal -atom_style spin - -dimension 3 -boundary p p p - -# necessary for the serial algorithm (sametag) -atom_modify map array - -lattice fcc 3.524 -Lattice spacing in x,y,z = 3.524 3.524 3.524 -region box block 0.0 5.0 0.0 5.0 0.0 5.0 -create_box 1 box -Created orthogonal box = (0 0 0) to (17.62 17.62 17.62) - 1 by 1 by 1 MPI processor grid -create_atoms 1 box -Created 500 atoms - create_atoms CPU = 0.00049305 secs - -# setting mass, mag. moments, and interactions for cobalt - -mass 1 58.69 - -set group all spin/random 31 0.63 - 500 settings made for spin/random -#set group all spin 0.63 0.0 0.0 1.0 -velocity all create 100 4928459 rot yes dist gaussian - -pair_style hybrid/overlay eam/alloy spin/exchange 4.0 -pair_coeff * * eam/alloy Ni99.eam.alloy Ni -pair_coeff * * spin/exchange exchange 4.0 0.50 0.2280246862 1.229983475 - -neighbor 0.1 bin -neigh_modify every 10 check yes delay 20 - -fix 1 all precession/spin zeeman 0.0 0.0 0.0 1.0 -fix_modify 1 energy yes -fix 2 all langevin/spin 0.0 0.0 21 - -fix 3 all nve/spin lattice moving -timestep 0.0001 - -# compute and output options - -compute out_mag all spin -compute out_pe all pe -compute out_ke all ke -compute out_temp all temp - -variable magz equal c_out_mag[3] -variable magnorm equal c_out_mag[4] -variable emag equal c_out_mag[5] -variable tmag equal c_out_mag[6] - -thermo_style custom step time v_magnorm pe v_emag temp v_tmag etotal -thermo 50 - -compute outsp all property/atom spx spy spz sp fmx fmy fmz -dump 1 all custom 100 dump.lammpstrj type x y z c_outsp[1] c_outsp[2] c_outsp[3] c_outsp[4] c_outsp[5] c_outsp[6] c_outsp[7] - -run 1000 -Neighbor list info ... - update every 10 steps, delay 20 steps, check yes - max neighbors/atom: 2000, page size: 100000 - master list distance cutoff = 5.90375 - ghost atom cutoff = 5.90375 - binsize = 2.95187, bins = 6 6 6 - 2 neighbor lists, perpetual/occasional/extra = 2 0 0 - (1) pair eam/alloy, perpetual, half/full from (2) - attributes: half, newton on - pair build: halffull/newton - stencil: none - bin: none - (2) pair spin/exchange, perpetual - attributes: full, newton on - pair build: full/bin/atomonly - stencil: full/bin/3d - bin: standard -Per MPI rank memory allocation (min/avg/max) = 7.885 | 7.885 | 7.885 Mbytes -Step Time v_magnorm PotEng v_emag Temp v_tmag TotEng - 0 0 0.028733803 -2224.5541 0.40997576 100.03408 -9550.1342 -2218.1018 - 50 0.005 0.028733807 -2224.6473 0.070491717 101.47879 -56307.038 -2218.1018 - 100 0.01 0.028733815 -2224.6635 -0.70937134 101.7311 5851.6355 -2218.1018 - 150 0.015 0.028733823 -2224.5281 -1.853981 99.63039 2395.8677 -2218.1018 - 200 0.02 0.028733828 -2224.2197 -3.2679239 94.850105 1482.3486 -2218.1018 - 250 0.025 0.028733824 -2223.8066 -4.863967 88.444584 1100.7396 -2218.1018 - 300 0.03 0.028733807 -2223.4353 -6.5763457 82.689581 899.56642 -2218.1018 - 350 0.035 0.028733783 -2223.2689 -8.3489158 80.108798 768.64457 -2218.1018 - 400 0.04 0.028733763 -2223.4151 -10.120216 82.374947 670.03091 -2218.1018 - 450 0.045 0.028733755 -2223.8949 -11.828932 89.814597 593.77931 -2218.1018 - 500 0.05 0.028733762 -2224.6419 -13.423712 101.39613 535.03371 -2218.1018 - 550 0.055 0.028733783 -2225.5242 -14.866724 115.07399 489.92024 -2218.1018 - 600 0.06 0.028733801 -2226.3952 -16.135279 128.57849 458.66654 -2218.1018 - 650 0.065 0.028733804 -2227.1464 -17.222838 140.22402 440.11437 -2218.1018 - 700 0.07 0.028733795 -2227.752 -18.154813 149.61295 425.91356 -2218.1018 - 750 0.075 0.028733781 -2228.2659 -18.996903 157.5814 412.82654 -2218.1018 - 800 0.08 0.028733768 -2228.7393 -19.804249 164.92075 407.77954 -2218.1018 - 850 0.085 0.028733752 -2229.1748 -20.579151 171.67278 406.84726 -2218.1018 - 900 0.09 0.028733728 -2229.5618 -21.294277 177.67238 399.69633 -2218.1018 - 950 0.095 0.028733715 -2229.9224 -21.943945 183.2621 389.92281 -2218.1018 - 1000 0.1 0.02873374 -2230.292 -22.551277 188.99284 383.19592 -2218.1018 -Loop time of 4.28976 on 1 procs for 1000 steps with 500 atoms - -Performance: 2.014 ns/day, 11.916 hours/ns, 233.113 timesteps/s -100.0% CPU use with 1 MPI tasks x no OpenMP threads - -MPI task timing breakdown: -Section | min time | avg time | max time |%varavg| %total ---------------------------------------------------------------- -Pair | 2.0329 | 2.0329 | 2.0329 | 0.0 | 47.39 -Neigh | 0.016131 | 0.016131 | 0.016131 | 0.0 | 0.38 -Comm | 0.032732 | 0.032732 | 0.032732 | 0.0 | 0.76 -Output | 0.0141 | 0.0141 | 0.0141 | 0.0 | 0.33 -Modify | 2.1889 | 2.1889 | 2.1889 | 0.0 | 51.03 -Other | | 0.005065 | | | 0.12 - -Nlocal: 500 ave 500 max 500 min -Histogram: 1 0 0 0 0 0 0 0 0 0 -Nghost: 1956 ave 1956 max 1956 min -Histogram: 1 0 0 0 0 0 0 0 0 0 -Neighs: 19504 ave 19504 max 19504 min -Histogram: 1 0 0 0 0 0 0 0 0 0 -FullNghs: 39008 ave 39008 max 39008 min -Histogram: 1 0 0 0 0 0 0 0 0 0 - -Total # of neighbors = 39008 -Ave neighs/atom = 78.016 -Neighbor list builds = 9 -Dangerous builds = 0 - -Please see the log.cite file for references relevant to this simulation - -Total wall time: 0:00:04 diff --git a/examples/SPIN/nickel/log.30Mar20.spin.nickel.g++.4 b/examples/SPIN/nickel/log.30Mar20.spin.nickel.g++.4 deleted file mode 100644 index 4c25816b7a..0000000000 --- a/examples/SPIN/nickel/log.30Mar20.spin.nickel.g++.4 +++ /dev/null @@ -1,137 +0,0 @@ -LAMMPS (18 Feb 2020) -# fcc nickel in a 3d periodic box - -clear -units metal -atom_style spin - -dimension 3 -boundary p p p - -# necessary for the serial algorithm (sametag) -atom_modify map array - -lattice fcc 3.524 -Lattice spacing in x,y,z = 3.524 3.524 3.524 -region box block 0.0 5.0 0.0 5.0 0.0 5.0 -create_box 1 box -Created orthogonal box = (0 0 0) to (17.62 17.62 17.62) - 1 by 2 by 2 MPI processor grid -create_atoms 1 box -Created 500 atoms - create_atoms CPU = 0.000828981 secs - -# setting mass, mag. moments, and interactions for cobalt - -mass 1 58.69 - -set group all spin/random 31 0.63 - 500 settings made for spin/random -#set group all spin 0.63 0.0 0.0 1.0 -velocity all create 100 4928459 rot yes dist gaussian - -pair_style hybrid/overlay eam/alloy spin/exchange 4.0 -pair_coeff * * eam/alloy Ni99.eam.alloy Ni -pair_coeff * * spin/exchange exchange 4.0 0.50 0.2280246862 1.229983475 - -neighbor 0.1 bin -neigh_modify every 10 check yes delay 20 - -fix 1 all precession/spin zeeman 0.0 0.0 0.0 1.0 -fix_modify 1 energy yes -fix 2 all langevin/spin 0.0 0.0 21 - -fix 3 all nve/spin lattice moving -timestep 0.0001 - -# compute and output options - -compute out_mag all spin -compute out_pe all pe -compute out_ke all ke -compute out_temp all temp - -variable magz equal c_out_mag[3] -variable magnorm equal c_out_mag[4] -variable emag equal c_out_mag[5] -variable tmag equal c_out_mag[6] - -thermo_style custom step time v_magnorm pe v_emag temp v_tmag etotal -thermo 50 - -compute outsp all property/atom spx spy spz sp fmx fmy fmz -dump 1 all custom 100 dump.lammpstrj type x y z c_outsp[1] c_outsp[2] c_outsp[3] c_outsp[4] c_outsp[5] c_outsp[6] c_outsp[7] - -run 1000 -Neighbor list info ... - update every 10 steps, delay 20 steps, check yes - max neighbors/atom: 2000, page size: 100000 - master list distance cutoff = 5.90375 - ghost atom cutoff = 5.90375 - binsize = 2.95187, bins = 6 6 6 - 2 neighbor lists, perpetual/occasional/extra = 2 0 0 - (1) pair eam/alloy, perpetual, half/full from (2) - attributes: half, newton on - pair build: halffull/newton - stencil: none - bin: none - (2) pair spin/exchange, perpetual - attributes: full, newton on - pair build: full/bin/atomonly - stencil: full/bin/3d - bin: standard -Per MPI rank memory allocation (min/avg/max) = 7.799 | 7.799 | 7.799 Mbytes -Step Time v_magnorm PotEng v_emag Temp v_tmag TotEng - 0 0 0.028733803 -2224.5541 0.40997576 100.03408 -9550.1342 -2218.1018 - 50 0.005 0.028733805 -2224.4707 0.25324083 98.741633 -15727.749 -2218.1018 - 100 0.01 0.028733812 -2224.3632 -0.37320751 97.073875 11244.373 -2218.1018 - 150 0.015 0.028733819 -2224.1696 -1.3971549 94.073447 3250.0517 -2218.1018 - 200 0.02 0.028733825 -2223.8695 -2.7238372 89.419944 1838.752 -2218.1018 - 250 0.025 0.028733829 -2223.5247 -4.2684428 84.07494 1304.3675 -2218.1018 - 300 0.03 0.028733824 -2223.266 -5.9636712 80.06368 1025.7815 -2218.1018 - 350 0.035 0.02873381 -2223.221 -7.7386326 79.366702 844.49729 -2218.1018 - 400 0.04 0.028733802 -2223.4588 -9.5148059 83.052751 715.20758 -2218.1018 - 450 0.045 0.028733806 -2223.9896 -11.234935 91.282747 621.75552 -2218.1018 - 500 0.05 0.02873381 -2224.7775 -12.875184 103.49836 550.04479 -2218.1018 - 550 0.055 0.028733808 -2225.7236 -14.413473 118.16526 495.70417 -2218.1018 - 600 0.06 0.028733803 -2226.67 -15.812466 132.83837 461.35805 -2218.1018 - 650 0.065 0.028733808 -2227.4809 -17.061311 145.41049 444.38951 -2218.1018 - 700 0.07 0.028733818 -2228.0887 -18.181903 154.83414 438.85866 -2218.1018 - 750 0.075 0.028733823 -2228.4598 -19.176259 160.58645 436.90462 -2218.1018 - 800 0.08 0.028733825 -2228.6173 -20.035157 163.02829 429.73193 -2218.1018 - 850 0.085 0.028733825 -2228.707 -20.806548 164.4197 419.73763 -2218.1018 - 900 0.09 0.028733829 -2228.9287 -21.571419 167.8571 411.59699 -2218.1018 - 950 0.095 0.028733825 -2229.39 -22.365879 175.00875 402.66175 -2218.1018 - 1000 0.1 0.028733821 -2230.014 -23.133464 184.68305 391.05824 -2218.1018 -Loop time of 2.4967 on 4 procs for 1000 steps with 500 atoms - -Performance: 3.461 ns/day, 6.935 hours/ns, 400.528 timesteps/s -100.0% CPU use with 4 MPI tasks x no OpenMP threads - -MPI task timing breakdown: -Section | min time | avg time | max time |%varavg| %total ---------------------------------------------------------------- -Pair | 0.56602 | 0.57191 | 0.57641 | 0.5 | 22.91 -Neigh | 0.0040138 | 0.0041498 | 0.0043001 | 0.2 | 0.17 -Comm | 0.10294 | 0.10725 | 0.11458 | 1.5 | 4.30 -Output | 0.0047452 | 0.0047795 | 0.0048621 | 0.1 | 0.19 -Modify | 1.8049 | 1.8066 | 1.8079 | 0.1 | 72.36 -Other | | 0.002003 | | | 0.08 - -Nlocal: 125 ave 139 max 112 min -Histogram: 1 0 1 0 0 0 1 0 0 1 -Nghost: 1099 ave 1112 max 1085 min -Histogram: 1 0 0 1 0 0 0 1 0 1 -Neighs: 4876 ave 5386 max 4426 min -Histogram: 1 0 0 1 0 1 0 0 0 1 -FullNghs: 9752 ave 10845 max 8737 min -Histogram: 1 0 1 0 0 0 1 0 0 1 - -Total # of neighbors = 39008 -Ave neighs/atom = 78.016 -Neighbor list builds = 9 -Dangerous builds = 0 - -Please see the log.cite file for references relevant to this simulation - -Total wall time: 0:00:02 diff --git a/examples/SPIN/nickel/log.30Mar20.spin.nickel_cubic.g++.1 b/examples/SPIN/nickel/log.30Mar20.spin.nickel_cubic.g++.1 deleted file mode 100644 index 8032896b31..0000000000 --- a/examples/SPIN/nickel/log.30Mar20.spin.nickel_cubic.g++.1 +++ /dev/null @@ -1,138 +0,0 @@ -LAMMPS (18 Feb 2020) -# fcc nickel in a 3d periodic box - -clear -units metal -atom_style spin - -dimension 3 -boundary p p p - -# necessary for the serial algorithm (sametag) -atom_modify map array - -lattice fcc 3.524 -Lattice spacing in x,y,z = 3.524 3.524 3.524 -region box block 0.0 5.0 0.0 5.0 0.0 5.0 -create_box 1 box -Created orthogonal box = (0 0 0) to (17.62 17.62 17.62) - 1 by 1 by 1 MPI processor grid -create_atoms 1 box -Created 500 atoms - create_atoms CPU = 0.00045085 secs - -# setting mass, mag. moments, and interactions for cobalt - -mass 1 58.69 - -set group all spin/random 31 0.63 - 500 settings made for spin/random -#set group all spin 0.63 0.0 0.0 1.0 -velocity all create 100 4928459 rot yes dist gaussian - -pair_style hybrid/overlay eam/alloy spin/exchange 4.0 -pair_coeff * * eam/alloy Ni99.eam.alloy Ni -pair_coeff * * spin/exchange exchange 4.0 0.50 0.2280246862 1.229983475 - -neighbor 0.1 bin -neigh_modify every 10 check yes delay 20 - -fix 1 all precession/spin cubic -0.0001 0.0 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 zeeman 0.0 0.0 0.0 1.0 -fix_modify 1 energy yes -fix 2 all langevin/spin 0.0 0.0 21 - -fix 3 all nve/spin lattice moving -timestep 0.0001 - -# compute and output options - -compute out_mag all spin -compute out_pe all pe -compute out_ke all ke -compute out_temp all temp - -variable magz equal c_out_mag[3] -variable magnorm equal c_out_mag[4] -variable emag equal c_out_mag[5] -variable tmag equal c_out_mag[6] - -thermo_style custom step time v_magnorm pe v_emag temp v_tmag etotal -thermo 50 - -compute outsp all property/atom spx spy spz sp fmx fmy fmz -dump 1 all custom 50 dump.lammpstrj type x y z c_outsp[1] c_outsp[2] c_outsp[3] c_outsp[4] c_outsp[5] c_outsp[6] c_outsp[7] - -run 1000 -Neighbor list info ... - update every 10 steps, delay 20 steps, check yes - max neighbors/atom: 2000, page size: 100000 - master list distance cutoff = 5.90375 - ghost atom cutoff = 5.90375 - binsize = 2.95187, bins = 6 6 6 - 2 neighbor lists, perpetual/occasional/extra = 2 0 0 - (1) pair eam/alloy, perpetual, half/full from (2) - attributes: half, newton on - pair build: halffull/newton - stencil: none - bin: none - (2) pair spin/exchange, perpetual - attributes: full, newton on - pair build: full/bin/atomonly - stencil: full/bin/3d - bin: standard -Per MPI rank memory allocation (min/avg/max) = 7.885 | 7.885 | 7.885 Mbytes -Step Time v_magnorm PotEng v_emag Temp v_tmag TotEng - 0 0 0.028733803 -2224.5428 0.42125307 100.03408 -8603.706 -2218.0905 - 50 0.005 0.028732021 -2224.6359 0.081895124 101.47887 -34407.888 -2218.0904 - 100 0.01 0.0287304 -2224.6517 -0.69755414 101.73105 6238.4535 -2218.09 - 150 0.015 0.028729403 -2224.5158 -1.8417372 99.629794 2452.7607 -2218.0896 - 200 0.02 0.028731067 -2224.2073 -3.2554838 94.849715 1501.8625 -2218.0895 - 250 0.025 0.028732765 -2223.7944 -4.851641 88.447019 1110.3291 -2218.0895 - 300 0.03 0.028728169 -2223.4237 -6.5643692 82.697813 905.2202 -2218.0896 - 350 0.035 0.02871707 -2223.2576 -8.3372672 80.122838 772.40218 -2218.0896 - 400 0.04 0.028706605 -2223.4037 -10.108553 82.389555 672.72236 -2218.0895 - 450 0.045 0.028701727 -2223.883 -11.816999 89.823176 595.82956 -2218.0894 - 500 0.05 0.028706691 -2224.6296 -13.411565 101.39804 536.65866 -2218.0894 - 550 0.055 0.028714065 -2225.5117 -14.854639 115.07511 491.25787 -2218.0893 - 600 0.06 0.028713691 -2226.3826 -16.123209 128.58093 459.82107 -2218.089 - 650 0.065 0.028713232 -2227.1333 -17.210742 140.22137 441.15183 -2218.089 - 700 0.07 0.02871245 -2227.7384 -18.142557 149.60156 426.80154 -2218.0889 - 750 0.075 0.028712431 -2228.2524 -18.984934 157.56849 413.61924 -2218.0891 - 800 0.08 0.02872489 -2228.7266 -19.793136 164.91833 408.49483 -2218.0892 - 850 0.085 0.028733709 -2229.1638 -20.569819 171.69348 407.47868 -2218.0894 - 900 0.09 0.028737031 -2229.5524 -21.287104 177.71981 400.24086 -2218.0894 - 950 0.095 0.028743446 -2229.9131 -21.938194 183.31613 390.46773 -2218.089 - 1000 0.1 0.028751809 -2230.2806 -22.545689 189.01672 383.80802 -2218.0888 -Loop time of 4.46096 on 1 procs for 1000 steps with 500 atoms - -Performance: 1.937 ns/day, 12.392 hours/ns, 224.167 timesteps/s -100.0% CPU use with 1 MPI tasks x no OpenMP threads - -MPI task timing breakdown: -Section | min time | avg time | max time |%varavg| %total ---------------------------------------------------------------- -Pair | 2.0813 | 2.0813 | 2.0813 | 0.0 | 46.65 -Neigh | 0.016021 | 0.016021 | 0.016021 | 0.0 | 0.36 -Comm | 0.03261 | 0.03261 | 0.03261 | 0.0 | 0.73 -Output | 0.02771 | 0.02771 | 0.02771 | 0.0 | 0.62 -Modify | 2.2983 | 2.2983 | 2.2983 | 0.0 | 51.52 -Other | | 0.005103 | | | 0.11 - -Nlocal: 500 ave 500 max 500 min -Histogram: 1 0 0 0 0 0 0 0 0 0 -Nghost: 1956 ave 1956 max 1956 min -Histogram: 1 0 0 0 0 0 0 0 0 0 -Neighs: 19504 ave 19504 max 19504 min -Histogram: 1 0 0 0 0 0 0 0 0 0 -FullNghs: 39008 ave 39008 max 39008 min -Histogram: 1 0 0 0 0 0 0 0 0 0 - -Total # of neighbors = 39008 -Ave neighs/atom = 78.016 -Neighbor list builds = 9 -Dangerous builds = 0 - - -Please see the log.cite file for references relevant to this simulation - -Total wall time: 0:00:04 diff --git a/examples/SPIN/nickel/log.30Mar20.spin.nickel_cubic.g++.4 b/examples/SPIN/nickel/log.30Mar20.spin.nickel_cubic.g++.4 deleted file mode 100644 index 988fc04869..0000000000 --- a/examples/SPIN/nickel/log.30Mar20.spin.nickel_cubic.g++.4 +++ /dev/null @@ -1,138 +0,0 @@ -LAMMPS (18 Feb 2020) -# fcc nickel in a 3d periodic box - -clear -units metal -atom_style spin - -dimension 3 -boundary p p p - -# necessary for the serial algorithm (sametag) -atom_modify map array - -lattice fcc 3.524 -Lattice spacing in x,y,z = 3.524 3.524 3.524 -region box block 0.0 5.0 0.0 5.0 0.0 5.0 -create_box 1 box -Created orthogonal box = (0 0 0) to (17.62 17.62 17.62) - 1 by 2 by 2 MPI processor grid -create_atoms 1 box -Created 500 atoms - create_atoms CPU = 0.000782013 secs - -# setting mass, mag. moments, and interactions for cobalt - -mass 1 58.69 - -set group all spin/random 31 0.63 - 500 settings made for spin/random -#set group all spin 0.63 0.0 0.0 1.0 -velocity all create 100 4928459 rot yes dist gaussian - -pair_style hybrid/overlay eam/alloy spin/exchange 4.0 -pair_coeff * * eam/alloy Ni99.eam.alloy Ni -pair_coeff * * spin/exchange exchange 4.0 0.50 0.2280246862 1.229983475 - -neighbor 0.1 bin -neigh_modify every 10 check yes delay 20 - -fix 1 all precession/spin cubic -0.0001 0.0 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 zeeman 0.0 0.0 0.0 1.0 -fix_modify 1 energy yes -fix 2 all langevin/spin 0.0 0.0 21 - -fix 3 all nve/spin lattice moving -timestep 0.0001 - -# compute and output options - -compute out_mag all spin -compute out_pe all pe -compute out_ke all ke -compute out_temp all temp - -variable magz equal c_out_mag[3] -variable magnorm equal c_out_mag[4] -variable emag equal c_out_mag[5] -variable tmag equal c_out_mag[6] - -thermo_style custom step time v_magnorm pe v_emag temp v_tmag etotal -thermo 50 - -compute outsp all property/atom spx spy spz sp fmx fmy fmz -dump 1 all custom 50 dump.lammpstrj type x y z c_outsp[1] c_outsp[2] c_outsp[3] c_outsp[4] c_outsp[5] c_outsp[6] c_outsp[7] - -run 1000 -Neighbor list info ... - update every 10 steps, delay 20 steps, check yes - max neighbors/atom: 2000, page size: 100000 - master list distance cutoff = 5.90375 - ghost atom cutoff = 5.90375 - binsize = 2.95187, bins = 6 6 6 - 2 neighbor lists, perpetual/occasional/extra = 2 0 0 - (1) pair eam/alloy, perpetual, half/full from (2) - attributes: half, newton on - pair build: halffull/newton - stencil: none - bin: none - (2) pair spin/exchange, perpetual - attributes: full, newton on - pair build: full/bin/atomonly - stencil: full/bin/3d - bin: standard -Per MPI rank memory allocation (min/avg/max) = 7.799 | 7.799 | 7.799 Mbytes -Step Time v_magnorm PotEng v_emag Temp v_tmag TotEng - 0 0 0.028733803 -2224.5428 0.42125307 100.03408 -8603.706 -2218.0905 - 50 0.005 0.028732088 -2224.4593 0.26463371 98.74184 -13360.862 -2218.0904 - 100 0.01 0.02873076 -2224.3514 -0.36143851 97.074246 12749.405 -2218.09 - 150 0.015 0.028730298 -2224.1575 -1.3850362 94.073558 3353.8731 -2218.0897 - 200 0.02 0.028733079 -2223.8571 -2.7114965 89.419616 1868.0661 -2218.0895 - 250 0.025 0.028735725 -2223.5121 -4.2558913 84.074249 1317.4563 -2218.0893 - 300 0.03 0.028728939 -2223.2534 -5.9510826 80.063263 1033.1632 -2218.0893 - 350 0.035 0.028716731 -2223.2086 -7.7261895 79.36782 849.1925 -2218.0893 - 400 0.04 0.02871114 -2223.4464 -9.5023795 83.055773 718.36408 -2218.0893 - 450 0.045 0.02870879 -2223.9772 -11.222456 91.28713 624.04151 -2218.0891 - 500 0.05 0.028708873 -2224.7652 -12.862835 103.50343 551.85983 -2218.0892 - 550 0.055 0.028710315 -2225.7112 -14.401137 118.16778 497.19527 -2218.0893 - 600 0.06 0.028707016 -2226.6569 -15.799412 132.83264 462.57721 -2218.089 - 650 0.065 0.028706727 -2227.4667 -17.047289 145.39247 445.40608 -2218.0888 - 700 0.07 0.028710482 -2228.0737 -18.167238 154.80131 439.71677 -2218.0889 - 750 0.075 0.028705169 -2228.444 -19.160954 160.53663 437.67621 -2218.0892 - 800 0.08 0.028695336 -2228.6 -20.018327 162.95918 430.42912 -2218.089 - 850 0.085 0.028688393 -2228.6885 -20.787999 164.33238 420.42991 -2218.0889 - 900 0.09 0.028684101 -2228.9098 -21.551488 167.76167 412.29955 -2218.089 - 950 0.095 0.028684705 -2229.3715 -22.344783 174.918 403.31757 -2218.0891 - 1000 0.1 0.028691284 -2229.9963 -23.110976 184.60192 391.677 -2218.0893 -Loop time of 2.47906 on 4 procs for 1000 steps with 500 atoms - -Performance: 3.485 ns/day, 6.886 hours/ns, 403.379 timesteps/s -100.0% CPU use with 4 MPI tasks x no OpenMP threads - -MPI task timing breakdown: -Section | min time | avg time | max time |%varavg| %total ---------------------------------------------------------------- -Pair | 0.56758 | 0.5737 | 0.58816 | 1.1 | 23.14 -Neigh | 0.0040202 | 0.0041578 | 0.0043211 | 0.2 | 0.17 -Comm | 0.095586 | 0.11185 | 0.11853 | 2.8 | 4.51 -Output | 0.0089667 | 0.0089974 | 0.0090702 | 0.0 | 0.36 -Modify | 1.7759 | 1.7783 | 1.7802 | 0.1 | 71.73 -Other | | 0.002029 | | | 0.08 - -Nlocal: 125 ave 139 max 112 min -Histogram: 1 0 1 0 0 0 1 0 0 1 -Nghost: 1099 ave 1112 max 1085 min -Histogram: 1 0 0 1 0 0 0 1 0 1 -Neighs: 4876 ave 5385 max 4427 min -Histogram: 1 0 0 1 0 1 0 0 0 1 -FullNghs: 9752 ave 10845 max 8737 min -Histogram: 1 0 1 0 0 0 1 0 0 1 - -Total # of neighbors = 39008 -Ave neighs/atom = 78.016 -Neighbor list builds = 9 -Dangerous builds = 0 - - -Please see the log.cite file for references relevant to this simulation - -Total wall time: 0:00:02 diff --git a/examples/SPIN/read_restart/log.30Mar20.spin.read_data.g++.1 b/examples/SPIN/read_restart/log.14Apr20.spin.read_data.g++.1 similarity index 61% rename from examples/SPIN/read_restart/log.30Mar20.spin.read_data.g++.1 rename to examples/SPIN/read_restart/log.14Apr20.spin.read_data.g++.1 index fa198eff46..4a744700f9 100644 --- a/examples/SPIN/read_restart/log.30Mar20.spin.read_data.g++.1 +++ b/examples/SPIN/read_restart/log.14Apr20.spin.read_data.g++.1 @@ -1,4 +1,6 @@ -LAMMPS (18 Feb 2020) +LAMMPS (19 Mar 2020) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (../comm.cpp:94) + using 1 OpenMP thread(s) per MPI task units metal dimension 3 boundary p p p @@ -12,7 +14,7 @@ read_data Norm_randXY_8x8x32.data 1 by 1 by 1 MPI processor grid reading atoms ... 8192 atoms - read_data CPU = 0.0118952 secs + read_data CPU = 0.022048 secs mass 1 58.93 @@ -68,26 +70,26 @@ Neighbor list info ... bin: standard Per MPI rank memory allocation (min/avg/max) = 19.99 | 19.99 | 19.99 Mbytes Step Time v_magnorm PotEng v_emag v_tmag Temp TotEng - 0 0 0.0177864461018737 -37220.5576936917 -1323.65841279979 2548.797549338 0 -37220.5576936917 - 20 0.002 0.0177864377251544 -37220.5994965056 -1323.70032173151 2519.80540924064 0.0394803272360477 -37220.5576959255 - 40 0.004 0.0177864729727686 -37220.717561009 -1323.81992477223 2447.83071191612 0.150986538096776 -37220.5577010151 - 60 0.006 0.0177865119365897 -37220.8942652674 -1324.00293472823 2367.90992140844 0.317876389336898 -37220.5577073311 - 80 0.008 0.0177865171615599 -37221.1075079483 -1324.23190710734 2303.19917875015 0.519276751090729 -37220.5577133816 - 100 0.01 0.0177865063215865 -37221.3356992435 -1324.49029089774 2257.76234547925 0.734797362055872 -37220.5577179524 -Loop time of 14.8107 on 1 procs for 100 steps with 8192 atoms + 0 0 0.0177864461018737 -36558.7284872918 -661.829206399896 1274.398774669 0 -36558.7284872918 + 20 0.002 0.0177864377256184 -36558.7389378387 -661.839683504936 1259.94171978912 0.00986992693139795 -36558.7284878577 + 40 0.004 0.017786472977471 -36558.7684525639 -661.869582914286 1224.05894016152 0.0377451568363827 -36558.7284891299 + 60 0.006 0.0177865119543331 -36558.8126238543 -661.915330492427 1184.24369688088 0.0794631076347515 -36558.728490712 + 80 0.008 0.0177865172048059 -36558.8659242367 -661.972562482488 1152.05459929593 0.129803482511904 -36558.7284922233 + 100 0.01 0.0177865063752424 -36558.9229549739 -662.037138807935 1129.51470280479 0.183667498513087 -36558.7284933644 +Loop time of 14.3276 on 1 procs for 100 steps with 8192 atoms -Performance: 0.058 ns/day, 411.409 hours/ns, 6.752 timesteps/s -99.8% CPU use with 1 MPI tasks x no OpenMP threads +Performance: 0.060 ns/day, 397.988 hours/ns, 6.980 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.4899 | 4.4899 | 4.4899 | 0.0 | 30.32 -Neigh | 3.6436 | 3.6436 | 3.6436 | 0.0 | 24.60 -Comm | 0.05441 | 0.05441 | 0.05441 | 0.0 | 0.37 -Output | 2.4368 | 2.4368 | 2.4368 | 0.0 | 16.45 -Modify | 4.1707 | 4.1707 | 4.1707 | 0.0 | 28.16 -Other | | 0.01532 | | | 0.10 +Pair | 4.0409 | 4.0409 | 4.0409 | 0.0 | 28.20 +Neigh | 3.6219 | 3.6219 | 3.6219 | 0.0 | 25.28 +Comm | 0.055327 | 0.055327 | 0.055327 | 0.0 | 0.39 +Output | 2.4259 | 2.4259 | 2.4259 | 0.0 | 16.93 +Modify | 4.1688 | 4.1688 | 4.1688 | 0.0 | 29.10 +Other | | 0.01477 | | | 0.10 Nlocal: 8192 ave 8192 max 8192 min Histogram: 1 0 0 0 0 0 0 0 0 0 diff --git a/examples/SPIN/read_restart/log.30Mar20.spin.read_data.g++.4 b/examples/SPIN/read_restart/log.14Apr20.spin.read_data.g++.4 similarity index 61% rename from examples/SPIN/read_restart/log.30Mar20.spin.read_data.g++.4 rename to examples/SPIN/read_restart/log.14Apr20.spin.read_data.g++.4 index 16be3ba1ab..6ce648abf3 100644 --- a/examples/SPIN/read_restart/log.30Mar20.spin.read_data.g++.4 +++ b/examples/SPIN/read_restart/log.14Apr20.spin.read_data.g++.4 @@ -1,4 +1,6 @@ -LAMMPS (18 Feb 2020) +LAMMPS (19 Mar 2020) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (../comm.cpp:94) + using 1 OpenMP thread(s) per MPI task units metal dimension 3 boundary p p p @@ -12,7 +14,7 @@ read_data Norm_randXY_8x8x32.data 1 by 1 by 4 MPI processor grid reading atoms ... 8192 atoms - read_data CPU = 0.0181651 secs + read_data CPU = 0.013634 secs mass 1 58.93 @@ -68,26 +70,26 @@ Neighbor list info ... bin: standard Per MPI rank memory allocation (min/avg/max) = 8.961 | 9.047 | 9.29 Mbytes Step Time v_magnorm PotEng v_emag v_tmag Temp TotEng - 0 0 0.0177864461018739 -37220.5576936996 -1323.65841279979 2548.797549338 0 -37220.5576936996 - 20 0.002 0.0177863936833753 -37220.5994965026 -1323.70032172864 2519.8055385037 0.0394803245313843 -37220.5576959254 - 40 0.004 0.0177864533855652 -37220.7175609833 -1323.8199247464 2447.83102207917 0.150986513868405 -37220.557701015 - 60 0.006 0.0177865576955448 -37220.8942651864 -1324.0029346455 2367.91034677324 0.317876312538184 -37220.5577073314 - 80 0.008 0.0177865881669081 -37221.1075077771 -1324.23190693081 2303.19965736826 0.519276589926842 -37220.557713381 - 100 0.01 0.017786564605084 -37221.335698964 -1324.49029060173 2257.76286027282 0.734797098519806 -37220.557717952 -Loop time of 4.28539 on 4 procs for 100 steps with 8192 atoms + 0 0 0.0177864461018739 -36558.7284872997 -661.829206399894 1274.398774669 0 -36558.7284872997 + 20 0.002 0.0177863981273124 -36558.7389378386 -661.839683504262 1259.94177798388 0.00986992629371963 -36558.7284878582 + 40 0.004 0.0177864622701489 -36558.7684525586 -661.869582908114 1224.05908191331 0.0377451510479599 -36558.7284891308 + 60 0.006 0.0177865625037858 -36558.8126238326 -661.915330472361 1184.24389640891 0.0794630890177406 -36558.72849071 + 80 0.008 0.0177865898045059 -36558.8659241943 -661.972562439245 1152.05483020781 0.129803443061299 -36558.7284922226 + 100 0.01 0.017786565190115 -36558.9229549058 -662.037138735432 1129.51495182843 0.183667434061771 -36558.7284933646 +Loop time of 4.35911 on 4 procs for 100 steps with 8192 atoms -Performance: 0.202 ns/day, 119.039 hours/ns, 23.335 timesteps/s -99.8% CPU use with 4 MPI tasks x no OpenMP threads +Performance: 0.198 ns/day, 121.086 hours/ns, 22.940 timesteps/s +99.7% 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.1858 | 1.19 | 1.1928 | 0.2 | 27.77 -Neigh | 0.95854 | 0.96256 | 0.96919 | 0.4 | 22.46 -Comm | 0.037895 | 0.047635 | 0.054238 | 2.8 | 1.11 -Output | 0.61455 | 0.62999 | 0.64348 | 1.4 | 14.70 -Modify | 1.4377 | 1.4509 | 1.4673 | 0.9 | 33.86 -Other | | 0.004326 | | | 0.10 +Pair | 1.0924 | 1.1043 | 1.1117 | 0.7 | 25.33 +Neigh | 0.93575 | 0.94926 | 0.98325 | 2.0 | 21.78 +Comm | 0.044663 | 0.088288 | 0.11128 | 8.7 | 2.03 +Output | 0.64199 | 0.6587 | 0.67226 | 1.4 | 15.11 +Modify | 1.5412 | 1.5535 | 1.5706 | 0.9 | 35.64 +Other | | 0.005046 | | | 0.12 Nlocal: 2048 ave 2061 max 2035 min Histogram: 1 0 0 1 0 0 1 0 0 1 diff --git a/examples/SPIN/read_restart/log.30Mar20.spin.restart.g++.1 b/examples/SPIN/read_restart/log.14Apr20.spin.restart.g++.1 similarity index 63% rename from examples/SPIN/read_restart/log.30Mar20.spin.restart.g++.1 rename to examples/SPIN/read_restart/log.14Apr20.spin.restart.g++.1 index f53db873ae..652f7da474 100644 --- a/examples/SPIN/read_restart/log.30Mar20.spin.restart.g++.1 +++ b/examples/SPIN/read_restart/log.14Apr20.spin.restart.g++.1 @@ -1,4 +1,6 @@ -LAMMPS (18 Feb 2020) +LAMMPS (19 Mar 2020) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (../comm.cpp:94) + using 1 OpenMP thread(s) per MPI task # start a spin-lattice simulation from a data file units metal atom_style spin @@ -10,13 +12,13 @@ boundary p p p atom_modify map array read_restart restart_hcp_cobalt.equil -WARNING: Restart file used different # of processors: 4 vs. 1 (../read_restart.cpp:752) +WARNING: Restart file used different # of processors: 4 vs. 1 (../read_restart.cpp:736) restoring atom style spin from restart orthogonal box = (0 0 0) to (12.5355 21.7121 20.4704) 1 by 1 by 1 MPI processor grid restoring pair style spin/exchange from restart 500 atoms - read_restart CPU = 0.00177002 secs + read_restart CPU = 0.00179696 secs # setting mass, mag. moments, and interactions @@ -74,26 +76,26 @@ Neighbor list info ... bin: standard Per MPI rank memory allocation (min/avg/max) = 7.422 | 7.422 | 7.422 Mbytes Step Time v_magnorm PotEng v_emag v_tmag Temp TotEng - 1000 0 0.108317262557656 -2205.7648720089 -10.7649197733649 5076.84957372419 0 -2205.7648720089 - 1020 0.002 0.108317318482233 -2205.8021103803 -10.8022550516195 5018.95727168301 0.577304300153637 -2205.76487378396 - 1040 0.004 0.108317415532953 -2205.90771081135 -10.9092708333549 4927.95927843222 2.21443906326453 -2205.76487769286 - 1060 0.006 0.108317473584086 -2206.06738585221 -11.0748008072977 4837.32955198593 4.68991434259399 -2205.76488256723 - 1080 0.008 0.108317450667394 -2206.26307866122 -11.2852665400894 4752.65742551055 7.7237909750654 -2205.76488786887 - 1100 0.01 0.108317381194814 -2206.47496470578 -11.52585602487 4656.83083447122 11.0087303030003 -2205.76489265824 -Loop time of 0.984859 on 1 procs for 100 steps with 500 atoms + 1000 0 0.108317262557656 -2200.38241212222 -5.38245988668244 2538.4247868621 0 -2200.38241212222 + 1020 0.002 0.108317318495042 -2200.39172132133 -5.39179331134703 2513.42968070374 0.144319963844279 -2200.38241256643 + 1040 0.004 0.108317415558744 -2200.41811580407 -5.418541526637 2478.87571728648 0.553516420254567 -2200.38241354532 + 1060 0.006 0.108317473592946 -2200.45801216332 -5.45990062771403 2449.77257658726 1.17203792179707 -2200.38241476526 + 1080 0.008 0.108317450745396 -2200.5068824087 -5.51245983698347 2427.25022669715 1.92968606059505 -2200.3824160902 + 1100 0.01 0.108317381572202 -2200.55976028827 -5.57250071024394 2400.86131889957 2.74946927499959 -2200.38241728649 +Loop time of 0.954493 on 1 procs for 100 steps with 500 atoms -Performance: 0.877 ns/day, 27.357 hours/ns, 101.537 timesteps/s -100.0% CPU use with 1 MPI tasks x no OpenMP threads +Performance: 0.905 ns/day, 26.514 hours/ns, 104.768 timesteps/s +100.0% 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.3014 | 0.3014 | 0.3014 | 0.0 | 30.60 -Neigh | 0.26063 | 0.26063 | 0.26063 | 0.0 | 26.46 -Comm | 0.0070357 | 0.0070357 | 0.0070357 | 0.0 | 0.71 -Output | 0.14148 | 0.14148 | 0.14148 | 0.0 | 14.37 -Modify | 0.27309 | 0.27309 | 0.27309 | 0.0 | 27.73 -Other | | 0.001222 | | | 0.12 +Pair | 0.27043 | 0.27043 | 0.27043 | 0.0 | 28.33 +Neigh | 0.26148 | 0.26148 | 0.26148 | 0.0 | 27.40 +Comm | 0.0071123 | 0.0071123 | 0.0071123 | 0.0 | 0.75 +Output | 0.14169 | 0.14169 | 0.14169 | 0.0 | 14.84 +Modify | 0.2726 | 0.2726 | 0.2726 | 0.0 | 28.56 +Other | | 0.001178 | | | 0.12 Nlocal: 500 ave 500 max 500 min Histogram: 1 0 0 0 0 0 0 0 0 0 diff --git a/examples/SPIN/read_restart/log.30Mar20.spin.restart.g++.4 b/examples/SPIN/read_restart/log.14Apr20.spin.restart.g++.4 similarity index 62% rename from examples/SPIN/read_restart/log.30Mar20.spin.restart.g++.4 rename to examples/SPIN/read_restart/log.14Apr20.spin.restart.g++.4 index 274b58a16b..c22c672f6b 100644 --- a/examples/SPIN/read_restart/log.30Mar20.spin.restart.g++.4 +++ b/examples/SPIN/read_restart/log.14Apr20.spin.restart.g++.4 @@ -1,4 +1,6 @@ -LAMMPS (18 Feb 2020) +LAMMPS (19 Mar 2020) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (../comm.cpp:94) + using 1 OpenMP thread(s) per MPI task # start a spin-lattice simulation from a data file units metal atom_style spin @@ -15,7 +17,7 @@ read_restart restart_hcp_cobalt.equil 1 by 2 by 2 MPI processor grid restoring pair style spin/exchange from restart 500 atoms - read_restart CPU = 0.001544 secs + read_restart CPU = 0.00173593 secs # setting mass, mag. moments, and interactions @@ -73,26 +75,26 @@ Neighbor list info ... bin: standard Per MPI rank memory allocation (min/avg/max) = 7.324 | 7.324 | 7.324 Mbytes Step Time v_magnorm PotEng v_emag v_tmag Temp TotEng - 1000 0 0.108317262557656 -2205.7648720085 -10.7649197733649 5076.8495737242 0 -2205.7648720085 - 1020 0.002 0.108317316207642 -2205.8021103808 -10.8022550521284 5018.9568156529 0.577304308061779 -2205.76487378396 - 1040 0.004 0.108317347902639 -2205.90771081804 -10.9092708400684 4927.95873059348 2.21443916694928 -2205.76487769286 - 1060 0.006 0.108317342445881 -2206.06738587612 -11.0748008315013 4837.32877526428 4.68991471343994 -2205.76488256723 - 1080 0.008 0.108317320750099 -2206.26307869757 -11.2852665775656 4752.65641838558 7.7237915384778 -2205.76488786888 - 1100 0.01 0.108317284409678 -2206.47496468544 -11.5258560062539 4656.82944752479 11.0087299868288 -2205.76489265829 -Loop time of 0.431045 on 4 procs for 100 steps with 500 atoms + 1000 0 0.108317262557656 -2200.38241212182 -5.38245988668244 2538.4247868621 0 -2200.38241212182 + 1020 0.002 0.108317316216432 -2200.39172132147 -5.39179331147409 2513.42945241007 0.14431996581917 -2200.38241256644 + 1040 0.004 0.108317347939802 -2200.41811580574 -5.41854152831072 2478.87544274124 0.553516446104432 -2200.38241354532 + 1060 0.006 0.108317342440309 -2200.45801216927 -5.45990063373049 2449.77218633122 1.17203801398165 -2200.38241476526 + 1080 0.008 0.108317320345284 -2200.50688241767 -5.51245984623572 2427.2497145488 1.92968619968329 -2200.3824160902 + 1100 0.01 0.10831728372281 -2200.55976028296 -5.57250070536486 2400.86059511731 2.74946919265255 -2200.38241728649 +Loop time of 0.405615 on 4 procs for 100 steps with 500 atoms -Performance: 2.004 ns/day, 11.973 hours/ns, 231.995 timesteps/s -99.7% CPU use with 4 MPI tasks x no OpenMP threads +Performance: 2.130 ns/day, 11.267 hours/ns, 246.539 timesteps/s +99.7% 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.088207 | 0.088619 | 0.088949 | 0.1 | 20.56 -Neigh | 0.06517 | 0.066388 | 0.068188 | 0.5 | 15.40 -Comm | 0.01411 | 0.015963 | 0.017203 | 0.9 | 3.70 -Output | 0.040537 | 0.042234 | 0.043886 | 0.6 | 9.80 -Modify | 0.21579 | 0.21742 | 0.21891 | 0.2 | 50.44 -Other | | 0.0004218 | | | 0.10 +Pair | 0.075661 | 0.076798 | 0.077343 | 0.2 | 18.93 +Neigh | 0.063154 | 0.064974 | 0.066991 | 0.5 | 16.02 +Comm | 0.012538 | 0.013787 | 0.015151 | 0.8 | 3.40 +Output | 0.039155 | 0.040842 | 0.042502 | 0.6 | 10.07 +Modify | 0.20709 | 0.20883 | 0.21036 | 0.3 | 51.49 +Other | | 0.0003826 | | | 0.09 Nlocal: 125 ave 127 max 122 min Histogram: 1 0 0 0 1 0 0 0 0 2 diff --git a/examples/SPIN/read_restart/log.30Mar20.spin.write_restart.g++.1 b/examples/SPIN/read_restart/log.14Apr20.spin.write_restart.g++.1 similarity index 62% rename from examples/SPIN/read_restart/log.30Mar20.spin.write_restart.g++.1 rename to examples/SPIN/read_restart/log.14Apr20.spin.write_restart.g++.1 index fc81b23cac..8ad14c55c0 100644 --- a/examples/SPIN/read_restart/log.30Mar20.spin.write_restart.g++.1 +++ b/examples/SPIN/read_restart/log.14Apr20.spin.write_restart.g++.1 @@ -1,4 +1,6 @@ -LAMMPS (18 Feb 2020) +LAMMPS (19 Mar 2020) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (../comm.cpp:94) + using 1 OpenMP thread(s) per MPI task # fcc cobalt in a 3d periodic box units metal @@ -18,7 +20,7 @@ Created orthogonal box = (0 0 0) to (12.5355 21.7121 20.4704) 1 by 1 by 1 MPI processor grid create_atoms 1 box Created 500 atoms - create_atoms CPU = 0.00110984 secs + create_atoms CPU = 0.000952005 secs # setting mass, mag. moments, and interactions for cobalt @@ -72,31 +74,31 @@ Neighbor list info ... bin: standard Per MPI rank memory allocation (min/avg/max) = 6.947 | 6.947 | 6.947 Mbytes Step Time v_magnorm PotEng v_emag Temp TotEng - 0 0 0.076558814 1.7982359 1.7982359 0 1.7982359 - 100 0.01 0.077628154 0.73387834 0.73387834 0 0.73387834 - 200 0.02 0.076678996 -0.4048463 -0.4048463 0 -0.4048463 - 300 0.03 0.079174837 -1.3519103 -1.3519103 0 -1.3519103 - 400 0.04 0.085031632 -3.0345702 -3.0345702 0 -3.0345702 - 500 0.05 0.08702747 -4.0853256 -4.0853256 0 -4.0853256 - 600 0.06 0.087066482 -5.259549 -5.259549 0 -5.259549 - 700 0.07 0.089788894 -6.629076 -6.629076 0 -6.629076 - 800 0.08 0.091699611 -8.0574087 -8.0574087 0 -8.0574087 - 900 0.09 0.090038899 -9.2012019 -9.2012019 0 -9.2012019 - 1000 0.1 0.093257309 -10.470452 -10.470452 0 -10.470452 -Loop time of 3.38866 on 1 procs for 1000 steps with 500 atoms - -Performance: 2.550 ns/day, 9.413 hours/ns, 295.102 timesteps/s -99.4% CPU use with 1 MPI tasks x no OpenMP threads + 0 0 0.076558814 0.89911794 0.89911794 0 0.89911794 + 100 0.01 0.077628154 0.36693917 0.36693917 0 0.36693917 + 200 0.02 0.076678996 -0.20242315 -0.20242315 0 -0.20242315 + 300 0.03 0.079174837 -0.67595514 -0.67595514 0 -0.67595514 + 400 0.04 0.085031632 -1.5172851 -1.5172851 0 -1.5172851 + 500 0.05 0.08702747 -2.0426628 -2.0426628 0 -2.0426628 + 600 0.06 0.087066482 -2.6297745 -2.6297745 0 -2.6297745 + 700 0.07 0.089788894 -3.314538 -3.314538 0 -3.314538 + 800 0.08 0.091699611 -4.0287043 -4.0287043 0 -4.0287043 + 900 0.09 0.090038899 -4.600601 -4.600601 0 -4.600601 + 1000 0.1 0.093257309 -5.2352261 -5.2352261 0 -5.2352261 +Loop time of 3.30071 on 1 procs for 1000 steps with 500 atoms + +Performance: 2.618 ns/day, 9.169 hours/ns, 302.965 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.46673 | 0.46673 | 0.46673 | 0.0 | 13.77 +Pair | 0.3844 | 0.3844 | 0.3844 | 0.0 | 11.65 Neigh | 0 | 0 | 0 | 0.0 | 0.00 -Comm | 0.019901 | 0.019901 | 0.019901 | 0.0 | 0.59 -Output | 1.3838 | 1.3838 | 1.3838 | 0.0 | 40.84 -Modify | 1.5145 | 1.5145 | 1.5145 | 0.0 | 44.69 -Other | | 0.003689 | | | 0.11 +Comm | 0.019863 | 0.019863 | 0.019863 | 0.0 | 0.60 +Output | 1.3844 | 1.3844 | 1.3844 | 0.0 | 41.94 +Modify | 1.5084 | 1.5084 | 1.5084 | 0.0 | 45.70 +Other | | 0.00367 | | | 0.11 Nlocal: 500 ave 500 max 500 min Histogram: 1 0 0 0 0 0 0 0 0 0 diff --git a/examples/SPIN/read_restart/log.30Mar20.spin.write_restart.g++.4 b/examples/SPIN/read_restart/log.14Apr20.spin.write_restart.g++.4 similarity index 62% rename from examples/SPIN/read_restart/log.30Mar20.spin.write_restart.g++.4 rename to examples/SPIN/read_restart/log.14Apr20.spin.write_restart.g++.4 index 607fd54dfa..c0c1ec130c 100644 --- a/examples/SPIN/read_restart/log.30Mar20.spin.write_restart.g++.4 +++ b/examples/SPIN/read_restart/log.14Apr20.spin.write_restart.g++.4 @@ -1,4 +1,6 @@ -LAMMPS (18 Feb 2020) +LAMMPS (19 Mar 2020) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (../comm.cpp:94) + using 1 OpenMP thread(s) per MPI task # fcc cobalt in a 3d periodic box units metal @@ -18,7 +20,7 @@ Created orthogonal box = (0 0 0) to (12.5355 21.7121 20.4704) 1 by 2 by 2 MPI processor grid create_atoms 1 box Created 500 atoms - create_atoms CPU = 0.000762224 secs + create_atoms CPU = 0.000663042 secs # setting mass, mag. moments, and interactions for cobalt @@ -72,31 +74,31 @@ Neighbor list info ... bin: standard Per MPI rank memory allocation (min/avg/max) = 6.868 | 6.868 | 6.868 Mbytes Step Time v_magnorm PotEng v_emag Temp TotEng - 0 0 0.076558814 1.7982359 1.7982359 0 1.7982359 - 100 0.01 0.078299981 0.88259584 0.88259584 0 0.88259584 - 200 0.02 0.081260508 -0.43484722 -0.43484722 0 -0.43484722 - 300 0.03 0.081195603 -1.7408209 -1.7408209 0 -1.7408209 - 400 0.04 0.087298495 -3.4139038 -3.4139038 0 -3.4139038 - 500 0.05 0.087663924 -4.3766089 -4.3766089 0 -4.3766089 - 600 0.06 0.091713683 -5.8534921 -5.8534921 0 -5.8534921 - 700 0.07 0.093779119 -6.706628 -6.706628 0 -6.706628 - 800 0.08 0.097960611 -7.8688568 -7.8688568 0 -7.8688568 - 900 0.09 0.10193463 -9.5888008 -9.5888008 0 -9.5888008 - 1000 0.1 0.10831726 -10.76492 -10.76492 0 -10.76492 -Loop time of 1.77116 on 4 procs for 1000 steps with 500 atoms - -Performance: 4.878 ns/day, 4.920 hours/ns, 564.603 timesteps/s -99.7% CPU use with 4 MPI tasks x no OpenMP threads + 0 0 0.076558814 0.89911794 0.89911794 0 0.89911794 + 100 0.01 0.078299981 0.44129792 0.44129792 0 0.44129792 + 200 0.02 0.081260508 -0.21742361 -0.21742361 0 -0.21742361 + 300 0.03 0.081195603 -0.87041046 -0.87041046 0 -0.87041046 + 400 0.04 0.087298495 -1.7069519 -1.7069519 0 -1.7069519 + 500 0.05 0.087663924 -2.1883045 -2.1883045 0 -2.1883045 + 600 0.06 0.091713683 -2.9267461 -2.9267461 0 -2.9267461 + 700 0.07 0.093779119 -3.353314 -3.353314 0 -3.353314 + 800 0.08 0.097960611 -3.9344284 -3.9344284 0 -3.9344284 + 900 0.09 0.10193463 -4.7944004 -4.7944004 0 -4.7944004 + 1000 0.1 0.10831726 -5.3824599 -5.3824599 0 -5.3824599 +Loop time of 1.7839 on 4 procs for 1000 steps with 500 atoms + +Performance: 4.843 ns/day, 4.955 hours/ns, 560.569 timesteps/s +99.5% 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.11596 | 0.11824 | 0.12217 | 0.7 | 6.68 +Pair | 0.10068 | 0.10749 | 0.11461 | 1.5 | 6.03 Neigh | 0 | 0 | 0 | 0.0 | 0.00 -Comm | 0.05593 | 0.058951 | 0.062542 | 1.2 | 3.33 -Output | 0.38413 | 0.40227 | 0.41918 | 2.1 | 22.71 -Modify | 1.1736 | 1.1903 | 1.2068 | 1.2 | 67.20 -Other | | 0.001427 | | | 0.08 +Comm | 0.052378 | 0.062171 | 0.07177 | 2.8 | 3.49 +Output | 0.4054 | 0.42334 | 0.44025 | 2.0 | 23.73 +Modify | 1.174 | 1.1893 | 1.2043 | 1.1 | 66.67 +Other | | 0.001558 | | | 0.09 Nlocal: 125 ave 125 max 125 min Histogram: 4 0 0 0 0 0 0 0 0 0 diff --git a/examples/SPIN/read_restart/restart_hcp_cobalt.equil b/examples/SPIN/read_restart/restart_hcp_cobalt.equil index e860fcfb281fa53ae5496a10d87c1ccc092ddea5..d7f92285db0bd7e3b4c36fcdf88d53180f491962 100644 GIT binary patch delta 48 zcmcb6oB8c+<_RJ~j0_OK!@$5`XsO_vShP`X`&$8@#N6D1V1=O6;*!Lok`M*}ORf$g delta 31 hcmaERoB8f-<_RJ~3{b$sz`$T=q2QL9v{7yQTL6hc2wDID diff --git a/examples/SPIN/run_spin_examples.sh b/examples/SPIN/run_spin_examples.sh index b2188503ee..432d70c2ba 100755 --- a/examples/SPIN/run_spin_examples.sh +++ b/examples/SPIN/run_spin_examples.sh @@ -1,6 +1,6 @@ #!/bin/bash -DATE=21Fev20 +DATE=14Apr20 # bfo cd bfo/ diff --git a/examples/SPIN/setforce_spin/log.30Mar20.spin.setforce.g++.1 b/examples/SPIN/setforce_spin/log.14Apr20.spin.setforce.g++.1 similarity index 69% rename from examples/SPIN/setforce_spin/log.30Mar20.spin.setforce.g++.1 rename to examples/SPIN/setforce_spin/log.14Apr20.spin.setforce.g++.1 index 365482cec8..ef5e86b0b3 100644 --- a/examples/SPIN/setforce_spin/log.30Mar20.spin.setforce.g++.1 +++ b/examples/SPIN/setforce_spin/log.14Apr20.spin.setforce.g++.1 @@ -1,4 +1,6 @@ -LAMMPS (18 Feb 2020) +LAMMPS (19 Mar 2020) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (../comm.cpp:94) + using 1 OpenMP thread(s) per MPI task units metal dimension 3 @@ -18,10 +20,10 @@ region reg1 block 0.0 10.0 0.0 5.0 0.0 1.0 region reg2 block 0.0 10.0 6.0 10.0 0.0 1.0 create_atoms 1 region reg1 Created 120 atoms - create_atoms CPU = 0.001055 secs + create_atoms CPU = 0.000992775 secs create_atoms 2 region reg2 Created 80 atoms - create_atoms CPU = 0.000218153 secs + create_atoms CPU = 0.000215054 secs # setting mass, mag. moments, and interactions for bcc iron @@ -88,25 +90,25 @@ Neighbor list info ... bin: none Per MPI rank memory allocation (min/avg/max) = 7.215 | 7.215 | 7.215 Mbytes Step Time v_magx v_magz v_magnorm v_tmag PotEng v_emag TotEng - 0 0 0.000143282585570239 0.615515043943419 0.615726279597251 49.8728401964955 0.251043691626527 0.251043691626527 0.251043691626527 - 100 0.01 0.000616167502203097 0.594467364025194 0.594498630048783 0.00377928879167604 0.0834709010541719 0.0834709010541712 0.0834709010541719 - 200 0.02 0.000498981016106215 0.595175581059792 0.595218717456538 0.00031722996860077 0.0832283413495717 0.0832283413495712 0.0832283413495717 - 300 0.03 0.000211899815837572 0.595357874794342 0.595402442288391 2.88909782484355e-05 0.0832377953250733 0.0832377953250725 0.0832377953250733 - 400 0.04 7.98967577397158e-05 0.595395828381057 0.595440657806237 3.01443565415194e-06 0.083244344104517 0.0832443441045165 0.083244344104517 - 500 0.05 2.9121648914103e-05 0.595403174462525 0.595448064489507 3.48660949086791e-07 0.083246108993562 0.0832461089935612 0.083246108993562 - 600 0.06 1.04772320898497e-05 0.595404457003426 0.595449362424563 4.24408428996442e-08 0.0832465159731265 0.0832465159731254 0.0832465159731265 - 700 0.07 3.74634771616422e-06 0.595404627382825 0.595449536940641 5.27704815780927e-09 0.083246603592368 0.0832466035923677 0.083246603592368 - 800 0.08 1.33525617457914e-06 0.595404626884198 0.595449537611055 6.61545013399702e-10 0.0832466213447961 0.0832466213447953 0.0832466213447961 - 900 0.09 4.75054785504803e-07 0.595404613763238 0.595449524836571 8.31880890514288e-11 0.0832466246300996 0.083246624630099 0.0832466246300996 - 1000 0.1 1.68843135202601e-07 0.59540460640039 0.595449517580793 1.04726516235783e-11 0.083246625128602 0.0832466251286012 0.083246625128602 -Loop time of 0.0999272 on 1 procs for 1000 steps with 200 atoms - -100.0% CPU use with 1 MPI tasks x no OpenMP threads + 0 0 0.000143282585570239 0.615515043943419 0.615726279597251 24.9364200982478 0.121881906963737 0.121881906963737 0.121881906963737 + 100 0.01 0.000616167502203097 0.594467364025194 0.594498630048783 0.00188964439583802 0.0371335982020527 0.0371335982020522 0.0371335982020527 + 200 0.02 0.000498981016106215 0.595175581059792 0.595218717456538 0.000158614984300385 0.036877233648055 0.0368772336480544 0.036877233648055 + 300 0.03 0.000211899815837572 0.595357874794342 0.595402442288391 1.44454891242177e-05 0.0368548794182375 0.0368548794182369 0.0368548794182375 + 400 0.04 7.98967577397158e-05 0.595395828381057 0.595440657806237 1.50721782707597e-06 0.0368527556548781 0.0368527556548775 0.0368527556548781 + 500 0.05 2.9121648914103e-05 0.595403174462525 0.595448064489507 1.74330474543395e-07 0.0368525254239539 0.0368525254239533 0.0368525254239539 + 600 0.06 1.04772320898497e-05 0.595404457003426 0.595449362424563 2.12204214498221e-08 0.0368524982492743 0.0368524982492735 0.0368524982492743 + 700 0.07 3.74634771616422e-06 0.595404627382825 0.595449536940641 2.63852407890463e-09 0.036852494912626 0.0368524949126256 0.036852494912626 + 800 0.08 1.33525617457914e-06 0.595404626884198 0.595449537611055 3.30772506699851e-10 0.0368524944963445 0.0368524944963439 0.0368524944963445 + 900 0.09 4.75054785504803e-07 0.595404613763238 0.595449524836571 4.15940445257144e-11 0.0368524944440918 0.0368524944440912 0.0368524944440918 + 1000 0.1 1.68843135202601e-07 0.59540460640039 0.595449517580793 5.23632581178917e-12 0.036852494437518 0.0368524944375173 0.036852494437518 +Loop time of 0.093256 on 1 procs for 1000 steps with 200 atoms + +100.0% CPU use with 1 MPI tasks x 1 OpenMP threads Minimization stats: Stopping criterion = max iterations Energy initial, next-to-last, final = - 0.251043691627 0.0832466251273 0.0832466251286 + 0.121881906964 0.0368524944375 0.0368524944375 Force two-norm initial, final = 0 0 Force max component initial, final = 0 0 Final line search alpha, max atom move = 0 0 @@ -115,12 +117,12 @@ Minimization stats: MPI task timing breakdown: Section | min time | avg time | max time |%varavg| %total --------------------------------------------------------------- -Pair | 0.089765 | 0.089765 | 0.089765 | 0.0 | 89.83 +Pair | 0.08325 | 0.08325 | 0.08325 | 0.0 | 89.27 Neigh | 0 | 0 | 0 | 0.0 | 0.00 -Comm | 7.2956e-05 | 7.2956e-05 | 7.2956e-05 | 0.0 | 0.07 -Output | 0.0033209 | 0.0033209 | 0.0033209 | 0.0 | 3.32 -Modify | 0.0024664 | 0.0024664 | 0.0024664 | 0.0 | 2.47 -Other | | 0.004302 | | | 4.30 +Comm | 6.032e-05 | 6.032e-05 | 6.032e-05 | 0.0 | 0.06 +Output | 0.0033138 | 0.0033138 | 0.0033138 | 0.0 | 3.55 +Modify | 0.0023961 | 0.0023961 | 0.0023961 | 0.0 | 2.57 +Other | | 0.004236 | | | 4.54 Nlocal: 200 ave 200 max 200 min Histogram: 1 0 0 0 0 0 0 0 0 0 diff --git a/examples/SPIN/setforce_spin/log.30Mar20.spin.setforce.g++.4 b/examples/SPIN/setforce_spin/log.14Apr20.spin.setforce.g++.4 similarity index 69% rename from examples/SPIN/setforce_spin/log.30Mar20.spin.setforce.g++.4 rename to examples/SPIN/setforce_spin/log.14Apr20.spin.setforce.g++.4 index c59fb96bc5..c99bad0b40 100644 --- a/examples/SPIN/setforce_spin/log.30Mar20.spin.setforce.g++.4 +++ b/examples/SPIN/setforce_spin/log.14Apr20.spin.setforce.g++.4 @@ -1,4 +1,6 @@ -LAMMPS (18 Feb 2020) +LAMMPS (19 Mar 2020) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (../comm.cpp:94) + using 1 OpenMP thread(s) per MPI task units metal dimension 3 @@ -18,10 +20,10 @@ region reg1 block 0.0 10.0 0.0 5.0 0.0 1.0 region reg2 block 0.0 10.0 6.0 10.0 0.0 1.0 create_atoms 1 region reg1 Created 120 atoms - create_atoms CPU = 0.000792027 secs + create_atoms CPU = 0.000747204 secs create_atoms 2 region reg2 Created 80 atoms - create_atoms CPU = 0.000160933 secs + create_atoms CPU = 0.000154018 secs # setting mass, mag. moments, and interactions for bcc iron @@ -88,25 +90,25 @@ Neighbor list info ... bin: none Per MPI rank memory allocation (min/avg/max) = 7.2 | 7.2 | 7.2 Mbytes Step Time v_magx v_magz v_magnorm v_tmag PotEng v_emag TotEng - 0 0 0.000143282585570239 0.615515043943419 0.615726279597251 49.8728401964955 0.251043691626527 0.251043691626527 0.251043691626527 - 100 0.01 0.000616167502203098 0.594467364025194 0.594498630048784 0.00377928879167604 0.0834709010541715 0.0834709010541708 0.0834709010541715 - 200 0.02 0.000498981016106215 0.595175581059791 0.595218717456538 0.00031722996860077 0.0832283413495714 0.0832283413495707 0.0832283413495714 - 300 0.03 0.000211899815837572 0.595357874794342 0.595402442288391 2.88909782484355e-05 0.0832377953250728 0.0832377953250722 0.0832377953250728 - 400 0.04 7.9896757739716e-05 0.595395828381057 0.595440657806237 3.01443565415194e-06 0.0832443441045167 0.0832443441045159 0.0832443441045167 - 500 0.05 2.91216489141033e-05 0.595403174462525 0.595448064489507 3.48660949086791e-07 0.0832461089935615 0.0832461089935607 0.0832461089935615 - 600 0.06 1.04772320898493e-05 0.595404457003426 0.595449362424563 4.24408428996442e-08 0.0832465159731258 0.0832465159731252 0.0832465159731258 - 700 0.07 3.74634771616408e-06 0.595404627382825 0.59544953694064 5.27704815780927e-09 0.0832466035923679 0.0832466035923672 0.0832466035923679 - 800 0.08 1.33525617457997e-06 0.595404626884198 0.595449537611055 6.61545013399702e-10 0.0832466213447956 0.0832466213447949 0.0832466213447956 - 900 0.09 4.75054785504803e-07 0.595404613763238 0.595449524836571 8.31880890514289e-11 0.0832466246300992 0.0832466246300985 0.0832466246300992 - 1000 0.1 1.68843135202462e-07 0.59540460640039 0.595449517580793 1.04726516235783e-11 0.0832466251286016 0.083246625128601 0.0832466251286016 -Loop time of 0.0425889 on 4 procs for 1000 steps with 200 atoms - -99.8% CPU use with 4 MPI tasks x no OpenMP threads + 0 0 0.000143282585570239 0.615515043943419 0.615726279597251 24.9364200982478 0.121881906963737 0.121881906963737 0.121881906963737 + 100 0.01 0.000616167502203098 0.594467364025194 0.594498630048784 0.00188964439583802 0.0371335982020525 0.037133598202052 0.0371335982020525 + 200 0.02 0.000498981016106215 0.595175581059791 0.595218717456538 0.000158614984300385 0.0368772336480548 0.0368772336480543 0.0368772336480548 + 300 0.03 0.000211899815837572 0.595357874794342 0.595402442288391 1.44454891242177e-05 0.0368548794182373 0.0368548794182367 0.0368548794182373 + 400 0.04 7.9896757739716e-05 0.595395828381057 0.595440657806237 1.50721782707597e-06 0.0368527556548779 0.0368527556548773 0.0368527556548779 + 500 0.05 2.91216489141033e-05 0.595403174462525 0.595448064489507 1.74330474543395e-07 0.0368525254239537 0.0368525254239531 0.0368525254239537 + 600 0.06 1.04772320898493e-05 0.595404457003426 0.595449362424563 2.12204214498221e-08 0.036852498249274 0.0368524982492735 0.036852498249274 + 700 0.07 3.74634771616408e-06 0.595404627382825 0.59544953694064 2.63852407890464e-09 0.0368524949126259 0.0368524949126254 0.0368524949126259 + 800 0.08 1.33525617457997e-06 0.595404626884198 0.595449537611055 3.30772506699851e-10 0.0368524944963442 0.0368524944963437 0.0368524944963442 + 900 0.09 4.75054785504803e-07 0.595404613763238 0.595449524836571 4.15940445257144e-11 0.0368524944440915 0.036852494444091 0.0368524944440915 + 1000 0.1 1.68843135202462e-07 0.59540460640039 0.595449517580793 5.23632581178917e-12 0.0368524944375178 0.0368524944375172 0.0368524944375178 +Loop time of 0.041718 on 4 procs for 1000 steps with 200 atoms + +97.4% CPU use with 4 MPI tasks x 1 OpenMP threads Minimization stats: Stopping criterion = max iterations Energy initial, next-to-last, final = - 0.251043691627 0.0832466251273 0.0832466251286 + 0.121881906964 0.0368524944375 0.0368524944375 Force two-norm initial, final = 0 0 Force max component initial, final = 0 0 Final line search alpha, max atom move = 0 0 @@ -115,12 +117,12 @@ Minimization stats: MPI task timing breakdown: Section | min time | avg time | max time |%varavg| %total --------------------------------------------------------------- -Pair | 0.021537 | 0.022273 | 0.022721 | 0.3 | 52.30 +Pair | 0.020462 | 0.021665 | 0.024967 | 1.3 | 51.93 Neigh | 0 | 0 | 0 | 0.0 | 0.00 -Comm | 0.0090227 | 0.010484 | 0.011241 | 0.9 | 24.62 -Output | 0.0012829 | 0.0012937 | 0.001322 | 0.0 | 3.04 -Modify | 0.00059366 | 0.00065958 | 0.00074434 | 0.0 | 1.55 -Other | | 0.007879 | | | 18.50 +Comm | 0.0074174 | 0.010855 | 0.012527 | 2.0 | 26.02 +Output | 0.0012774 | 0.0012916 | 0.0013213 | 0.0 | 3.10 +Modify | 0.00056291 | 0.00068498 | 0.00096655 | 0.0 | 1.64 +Other | | 0.007222 | | | 17.31 Nlocal: 50 ave 50 max 50 min Histogram: 4 0 0 0 0 0 0 0 0 0 diff --git a/examples/SPIN/spinmin/log.30Mar20.spin.bfo_min.g++.1 b/examples/SPIN/spinmin/log.14Apr20.spin.bfo_min.g++.1 similarity index 51% rename from examples/SPIN/spinmin/log.30Mar20.spin.bfo_min.g++.1 rename to examples/SPIN/spinmin/log.14Apr20.spin.bfo_min.g++.1 index 67fa287584..49a5f4dd3f 100644 --- a/examples/SPIN/spinmin/log.30Mar20.spin.bfo_min.g++.1 +++ b/examples/SPIN/spinmin/log.14Apr20.spin.bfo_min.g++.1 @@ -1,4 +1,6 @@ -LAMMPS (18 Feb 2020) +LAMMPS (19 Mar 2020) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (../comm.cpp:94) + using 1 OpenMP thread(s) per MPI task # bfo in a 3d periodic box units metal @@ -17,7 +19,7 @@ Created orthogonal box = (0 0 0) to (134.64 134.64 19.8) 1 by 1 by 1 MPI processor grid create_atoms 1 box Created 5780 atoms - create_atoms CPU = 0.00263715 secs + create_atoms CPU = 0.00207901 secs # setting mass, mag. moments, and interactions for bcc iron @@ -88,35 +90,35 @@ Neighbor list info ... bin: none Per MPI rank memory allocation (min/avg/max) = 8.331 | 8.331 | 8.331 Mbytes Step Time v_magnorm v_emag v_tmag Temp TotEng - 0 0 0.0100717228668283 -0.157514482753577 29662.6138827913 0 -0.157514482753568 - 50 0.005 0.000106105812337003 -128.302297864595 0.20852963611197 0 -128.302297864593 - 100 0.01 7.95347901119144e-06 -131.443802454864 0.0443887208129934 0 -131.443802454864 - 150 0.015 5.63006161138875e-07 -132.290742445363 0.0170945755448696 0 -132.290742445362 - 200 0.02 5.07390677383517e-07 -132.617042381797 0.00722760902397416 0 -132.617042381794 - 250 0.025 3.28458336892231e-07 -132.768391387196 0.00375506323936985 0 -132.768391387196 - 300 0.03 1.93294839202864e-07 -132.855050448035 0.00242748797849198 0 -132.855050448037 - 350 0.035 1.13872157437693e-07 -132.916721243295 0.00190947374340301 0 -132.916721243294 - 400 0.04 6.42075545620808e-08 -132.968673717532 0.00170812947236722 0 -132.968673717531 - 450 0.045 3.44210513403008e-08 -133.016835853948 0.00162581891801001 0 -133.01683585395 - 500 0.05 1.80394981485933e-08 -133.063285618522 0.00157948575061027 0 -133.063285618521 - 550 0.055 9.54697157105863e-09 -133.108546735844 0.00153972043779074 0 -133.108546735848 - 600 0.06 5.22455110720346e-09 -133.152747376224 0.00150588231693256 0 -133.152747376224 - 650 0.065 2.95172977724016e-09 -133.196213916157 0.00149013043325255 0 -133.196213916157 - 700 0.07 1.6727567441294e-09 -133.239664937213 0.00150579785200124 0 -133.239664937215 - 750 0.075 9.17127001723567e-10 -133.284143160988 0.00156098281158252 0 -133.284143160988 - 800 0.08 4.72669535949609e-10 -133.330821565019 0.00165588566880277 0 -133.330821565018 - 850 0.085 2.25696738407094e-10 -133.380744852994 0.00178049276786377 0 -133.380744852991 - 900 0.09 1.0030717061716e-10 -133.434486347662 0.00191080746296935 0 -133.434486347662 - 950 0.095 4.19867626359036e-11 -133.491696918799 0.00200704481090777 0 -133.491696918798 - 1000 0.1 1.64283478182092e-11 -133.550734414677 0.00202324820632667 0 -133.550734414676 -Loop time of 9.33368 on 1 procs for 1000 steps with 5780 atoms - -100.0% CPU use with 1 MPI tasks x no OpenMP threads + 0 0 0.0100717228668283 -0.0819172086358897 14831.3069413956 0 -0.0819172086358848 + 50 0.005 0.000106105812337003 -64.1537237421016 0.104264818055985 0 -64.1537237421011 + 100 0.01 7.95347901119144e-06 -65.7246948990358 0.0221943604064967 0 -65.7246948990356 + 150 0.015 5.63006161138875e-07 -66.1482265152101 0.0085472877724348 0 -66.1482265152089 + 200 0.02 5.07390677383517e-07 -66.3114288519027 0.00361380451198708 0 -66.3114288519012 + 250 0.025 3.28458336892231e-07 -66.3872059963515 0.00187753161968493 0 -66.3872059963511 + 300 0.03 1.93294839202864e-07 -66.430641863042 0.00121374398924599 0 -66.4306418630428 + 350 0.035 1.13872157437693e-07 -66.461568509568 0.000954736871701507 0 -66.4615685095675 + 400 0.04 6.42075545620808e-08 -66.4876195742958 0.000854064736183609 0 -66.4876195742954 + 450 0.045 3.44210513403008e-08 -66.5117616436528 0.000812909459005007 0 -66.5117616436536 + 500 0.05 1.80394981485933e-08 -66.535035988126 0.000789742875305133 0 -66.5350359881254 + 550 0.055 9.54697157105863e-09 -66.5577061696949 0.000769860218895372 0 -66.5577061696963 + 600 0.06 5.22455110720346e-09 -66.5798382239523 0.000752941158466282 0 -66.5798382239526 + 650 0.065 2.95172977724016e-09 -66.6015980978057 0.000745065216626277 0 -66.6015980978057 + 700 0.07 1.6727567441294e-09 -66.6233484071647 0.000752898926000619 0 -66.6233484071653 + 750 0.075 9.17127001723567e-10 -66.6456135037774 0.000780491405791262 0 -66.6456135037769 + 800 0.08 4.72669535949609e-10 -66.6689812966982 0.000827942834401386 0 -66.6689812966976 + 850 0.085 2.25696738407094e-10 -66.6939726229253 0.000890246383931885 0 -66.6939726229243 + 900 0.09 1.0030717061716e-10 -66.7208685437728 0.000955403731484674 0 -66.720868543773 + 950 0.095 4.19867626359036e-11 -66.7494848991559 0.00100352240545389 0 -66.7494848991554 + 1000 0.1 1.64283478182092e-11 -66.778989952382 0.00101162410316333 0 -66.7789899523816 +Loop time of 8.81793 on 1 procs for 1000 steps with 5780 atoms + +100.0% CPU use with 1 MPI tasks x 1 OpenMP threads Minimization stats: Stopping criterion = max iterations Energy initial, next-to-last, final = - -0.157514482754 -133.549552626 -133.550734415 + -0.0819172086359 -66.778399627 -66.7789899524 Force two-norm initial, final = 0 0 Force max component initial, final = 0 0 Final line search alpha, max atom move = 0 0 @@ -125,12 +127,12 @@ Minimization stats: MPI task timing breakdown: Section | min time | avg time | max time |%varavg| %total --------------------------------------------------------------- -Pair | 8.8542 | 8.8542 | 8.8542 | 0.0 | 94.86 +Pair | 8.3388 | 8.3388 | 8.3388 | 0.0 | 94.57 Neigh | 0 | 0 | 0 | 0.0 | 0.00 -Comm | 0.023509 | 0.023509 | 0.023509 | 0.0 | 0.25 -Output | 0.31765 | 0.31765 | 0.31765 | 0.0 | 3.40 -Modify | 0.034948 | 0.034948 | 0.034948 | 0.0 | 0.37 -Other | | 0.1033 | | | 1.11 +Comm | 0.023951 | 0.023951 | 0.023951 | 0.0 | 0.27 +Output | 0.3172 | 0.3172 | 0.3172 | 0.0 | 3.60 +Modify | 0.034405 | 0.034405 | 0.034405 | 0.0 | 0.39 +Other | | 0.1036 | | | 1.17 Nlocal: 5780 ave 5780 max 5780 min Histogram: 1 0 0 0 0 0 0 0 0 0 @@ -145,4 +147,4 @@ Total # of neighbors = 92480 Ave neighs/atom = 16 Neighbor list builds = 0 Dangerous builds = 0 -Total wall time: 0:00:09 +Total wall time: 0:00:08 diff --git a/examples/SPIN/spinmin/log.30Mar20.spin.bfo_min.g++.4 b/examples/SPIN/spinmin/log.14Apr20.spin.bfo_min.g++.4 similarity index 52% rename from examples/SPIN/spinmin/log.30Mar20.spin.bfo_min.g++.4 rename to examples/SPIN/spinmin/log.14Apr20.spin.bfo_min.g++.4 index 1f4dd6e356..6ffa5eb861 100644 --- a/examples/SPIN/spinmin/log.30Mar20.spin.bfo_min.g++.4 +++ b/examples/SPIN/spinmin/log.14Apr20.spin.bfo_min.g++.4 @@ -1,4 +1,6 @@ -LAMMPS (18 Feb 2020) +LAMMPS (19 Mar 2020) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (../comm.cpp:94) + using 1 OpenMP thread(s) per MPI task # bfo in a 3d periodic box units metal @@ -17,7 +19,7 @@ Created orthogonal box = (0 0 0) to (134.64 134.64 19.8) 2 by 2 by 1 MPI processor grid create_atoms 1 box Created 5780 atoms - create_atoms CPU = 0.00143695 secs + create_atoms CPU = 0.00117207 secs # setting mass, mag. moments, and interactions for bcc iron @@ -88,35 +90,35 @@ Neighbor list info ... bin: none Per MPI rank memory allocation (min/avg/max) = 7.788 | 7.788 | 7.788 Mbytes Step Time v_magnorm v_emag v_tmag Temp TotEng - 0 0 0.0100717228668283 -0.157514482753577 29662.6138827912 0 -0.157514482753586 - 50 0.005 0.000106105812337003 -128.302297864594 0.20852963611197 0 -128.302297864594 - 100 0.01 7.95347901119157e-06 -131.443802454864 0.0443887208129933 0 -131.443802454864 - 150 0.015 5.63006161138918e-07 -132.290742445363 0.0170945755448696 0 -132.290742445363 - 200 0.02 5.07390677383159e-07 -132.617042381796 0.00722760902397417 0 -132.617042381796 - 250 0.025 3.28458336892466e-07 -132.768391387196 0.00375506323936985 0 -132.768391387196 - 300 0.03 1.93294839202718e-07 -132.855050448036 0.00242748797849197 0 -132.855050448035 - 350 0.035 1.1387215743759e-07 -132.916721243294 0.00190947374340302 0 -132.916721243294 - 400 0.04 6.42075545625297e-08 -132.968673717531 0.00170812947236721 0 -132.968673717531 - 450 0.045 3.44210513402635e-08 -133.016835853948 0.00162581891801002 0 -133.016835853949 - 500 0.05 1.80394981487191e-08 -133.063285618522 0.00157948575061026 0 -133.063285618522 - 550 0.055 9.54697157097866e-09 -133.108546735845 0.00153972043779074 0 -133.108546735845 - 600 0.06 5.22455110708009e-09 -133.152747376224 0.00150588231693256 0 -133.152747376224 - 650 0.065 2.95172977729162e-09 -133.196213916157 0.00149013043325256 0 -133.196213916158 - 700 0.07 1.67275674393186e-09 -133.239664937213 0.00150579785200123 0 -133.239664937213 - 750 0.075 9.17127001716818e-10 -133.284143160989 0.00156098281158253 0 -133.284143160988 - 800 0.08 4.72669535990986e-10 -133.330821565019 0.00165588566880277 0 -133.330821565018 - 850 0.085 2.25696738737671e-10 -133.380744852993 0.00178049276786377 0 -133.380744852993 - 900 0.09 1.00307170296094e-10 -133.434486347661 0.00191080746296935 0 -133.434486347661 - 950 0.095 4.19867626693269e-11 -133.4916969188 0.00200704481090778 0 -133.4916969188 - 1000 0.1 1.64283481770759e-11 -133.550734414677 0.00202324820632667 0 -133.550734414677 -Loop time of 2.5017 on 4 procs for 1000 steps with 5780 atoms - -99.9% CPU use with 4 MPI tasks x no OpenMP threads + 0 0 0.0100717228668283 -0.0819172086358889 14831.3069413956 0 -0.0819172086358937 + 50 0.005 0.000106105812337003 -64.1537237421014 0.104264818055985 0 -64.1537237421015 + 100 0.01 7.95347901119157e-06 -65.7246948990355 0.0221943604064966 0 -65.7246948990356 + 150 0.015 5.63006161138918e-07 -66.1482265152097 0.0085472877724348 0 -66.1482265152095 + 200 0.02 5.07390677383159e-07 -66.3114288519023 0.00361380451198709 0 -66.3114288519024 + 250 0.025 3.28458336892466e-07 -66.3872059963513 0.00187753161968492 0 -66.3872059963514 + 300 0.03 1.93294839202718e-07 -66.4306418630421 0.00121374398924599 0 -66.4306418630421 + 350 0.035 1.1387215743759e-07 -66.461568509568 0.00095473687170151 0 -66.4615685095675 + 400 0.04 6.42075545625297e-08 -66.4876195742954 0.000854064736183607 0 -66.4876195742956 + 450 0.045 3.44210513402635e-08 -66.5117616436528 0.000812909459005008 0 -66.5117616436531 + 500 0.05 1.80394981487191e-08 -66.5350359881262 0.000789742875305131 0 -66.5350359881262 + 550 0.055 9.54697157097866e-09 -66.5577061696951 0.000769860218895372 0 -66.5577061696951 + 600 0.06 5.22455110708009e-09 -66.5798382239529 0.000752941158466282 0 -66.5798382239528 + 650 0.065 2.95172977729162e-09 -66.601598097806 0.000745065216626281 0 -66.6015980978062 + 700 0.07 1.67275674393186e-09 -66.6233484071645 0.000752898926000615 0 -66.6233484071643 + 750 0.075 9.17127001716818e-10 -66.6456135037772 0.000780491405791264 0 -66.6456135037769 + 800 0.08 4.72669535990986e-10 -66.6689812966981 0.000827942834401387 0 -66.668981296698 + 850 0.085 2.25696738737671e-10 -66.6939726229253 0.000890246383931887 0 -66.6939726229253 + 900 0.09 1.00307170296094e-10 -66.7208685437728 0.000955403731484673 0 -66.7208685437728 + 950 0.095 4.19867626693269e-11 -66.7494848991562 0.00100352240545389 0 -66.7494848991562 + 1000 0.1 1.64283481770759e-11 -66.7789899523816 0.00101162410316333 0 -66.7789899523818 +Loop time of 2.42884 on 4 procs for 1000 steps with 5780 atoms + +99.9% CPU use with 4 MPI tasks x 1 OpenMP threads Minimization stats: Stopping criterion = max iterations Energy initial, next-to-last, final = - -0.157514482754 -133.549552626 -133.550734415 + -0.0819172086359 -66.778399627 -66.7789899524 Force two-norm initial, final = 0 0 Force max component initial, final = 0 0 Final line search alpha, max atom move = 0 0 @@ -125,12 +127,12 @@ Minimization stats: MPI task timing breakdown: Section | min time | avg time | max time |%varavg| %total --------------------------------------------------------------- -Pair | 2.2676 | 2.2956 | 2.3111 | 1.1 | 91.76 +Pair | 2.1221 | 2.164 | 2.2349 | 2.9 | 89.10 Neigh | 0 | 0 | 0 | 0.0 | 0.00 -Comm | 0.066787 | 0.08206 | 0.11001 | 5.9 | 3.28 -Output | 0.085784 | 0.085815 | 0.085896 | 0.0 | 3.43 -Modify | 0.0082495 | 0.0087934 | 0.010231 | 0.9 | 0.35 -Other | | 0.02939 | | | 1.17 +Comm | 0.065814 | 0.13626 | 0.17868 | 11.7 | 5.61 +Output | 0.090046 | 0.090083 | 0.090171 | 0.0 | 3.71 +Modify | 0.0081615 | 0.0083774 | 0.008673 | 0.2 | 0.34 +Other | | 0.03009 | | | 1.24 Nlocal: 1445 ave 1445 max 1445 min Histogram: 4 0 0 0 0 0 0 0 0 0 diff --git a/examples/SPIN/spinmin/log.30Mar20.spin.bfo_min_cg.g++.1 b/examples/SPIN/spinmin/log.14Apr20.spin.bfo_min_cg.g++.1 similarity index 64% rename from examples/SPIN/spinmin/log.30Mar20.spin.bfo_min_cg.g++.1 rename to examples/SPIN/spinmin/log.14Apr20.spin.bfo_min_cg.g++.1 index 2e5f184ce0..cef54797eb 100644 --- a/examples/SPIN/spinmin/log.30Mar20.spin.bfo_min_cg.g++.1 +++ b/examples/SPIN/spinmin/log.14Apr20.spin.bfo_min_cg.g++.1 @@ -1,4 +1,6 @@ -LAMMPS (18 Feb 2020) +LAMMPS (19 Mar 2020) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (../comm.cpp:94) + using 1 OpenMP thread(s) per MPI task # bfo in a 3d periodic box units metal @@ -17,7 +19,7 @@ Created orthogonal box = (0 0 0) to (134.64 134.64 19.8) 1 by 1 by 1 MPI processor grid create_atoms 1 box Created 5780 atoms - create_atoms CPU = 0.00265002 secs + create_atoms CPU = 0.00267482 secs # setting mass, mag. moments, and interactions for bcc iron @@ -88,25 +90,25 @@ Neighbor list info ... bin: none Per MPI rank memory allocation (min/avg/max) = 8.331 | 8.331 | 8.331 Mbytes Step Time v_magnorm v_emag v_tmag Temp TotEng - 0 0 0.0100717228668283 -0.157514482753577 29662.6138827913 0 -0.157514482753568 - 100 0.01 8.80197005314557e-06 -132.800575336655 0.00453321072433843 0 -132.800575336654 - 200 0.02 6.70903250218956e-06 -133.121000843933 0.00207567256723324 0 -133.121000843933 - 300 0.03 4.5381603452565e-06 -133.464726217611 0.00289666750134901 0 -133.464726217614 - 400 0.04 9.04820921016732e-07 -133.762019235444 0.00136447920297185 0 -133.762019235444 - 500 0.05 1.6866160174916e-06 -133.88833778215 0.00064925251985426 0 -133.888337782148 - 600 0.06 1.78038217785001e-06 -133.951571511609 0.000321461409698896 0 -133.951571511609 - 700 0.07 1.49199057723078e-06 -133.981489428218 0.000147972931351619 0 -133.981489428217 - 800 0.08 1.15173756711067e-06 -133.99509691648 6.67918930412923e-05 0 -133.995096916483 - 900 0.09 8.48526364752965e-07 -134.001205290718 2.98691474716501e-05 0 -134.001205290719 - 1000 0.1 6.10346492876059e-07 -134.00394062735 1.34329761421094e-05 0 -134.003940627348 -Loop time of 9.56002 on 1 procs for 1000 steps with 5780 atoms - -100.0% CPU use with 1 MPI tasks x no OpenMP threads + 0 0 0.0100717228668283 -0.0819172086358897 14831.3069413956 0 -0.0819172086358848 + 100 0.01 8.80197005314557e-06 -66.4031731988352 0.00226660536216922 0 -66.4031731988347 + 200 0.02 6.70903250218956e-06 -66.5635391216766 0.00103783628361662 0 -66.563539121677 + 300 0.03 4.5381603452565e-06 -66.7355384861724 0.00144833375067451 0 -66.7355384861738 + 400 0.04 9.04820921016732e-07 -66.8839217283316 0.000682239601485924 0 -66.8839217283314 + 500 0.05 1.6866160174916e-06 -66.9469610803664 0.00032462625992713 0 -66.946961080365 + 600 0.06 1.78038217785001e-06 -66.9786113403508 0.000160730704849448 0 -66.9786113403509 + 700 0.07 1.49199057723078e-06 -66.9936279438935 7.39864656758093e-05 0 -66.9936279438931 + 800 0.08 1.15173756711067e-06 -67.0004605630263 3.33959465206462e-05 0 -67.0004605630278 + 900 0.09 8.48526364752965e-07 -67.0035249294341 1.49345737358251e-05 0 -67.0035249294347 + 1000 0.1 6.10346492876059e-07 -67.004895757836 6.71648807105468e-06 0 -67.0048957578347 +Loop time of 9.0061 on 1 procs for 1000 steps with 5780 atoms + +100.0% CPU use with 1 MPI tasks x 1 OpenMP threads Minimization stats: Stopping criterion = max iterations Energy initial, next-to-last, final = - -0.157514482754 -134.00391102 -134.003940627 + -0.0819172086359 -67.0048809251 -67.0048957578 Force two-norm initial, final = 0 0 Force max component initial, final = 0 0 Final line search alpha, max atom move = 2.122e-314 0 @@ -115,12 +117,12 @@ Minimization stats: MPI task timing breakdown: Section | min time | avg time | max time |%varavg| %total --------------------------------------------------------------- -Pair | 8.8771 | 8.8771 | 8.8771 | 0.0 | 92.86 +Pair | 8.3237 | 8.3237 | 8.3237 | 0.0 | 92.42 Neigh | 0 | 0 | 0 | 0.0 | 0.00 -Comm | 0.023437 | 0.023437 | 0.023437 | 0.0 | 0.25 -Output | 0.32043 | 0.32043 | 0.32043 | 0.0 | 3.35 -Modify | 0.034444 | 0.034444 | 0.034444 | 0.0 | 0.36 -Other | | 0.3046 | | | 3.19 +Comm | 0.023927 | 0.023927 | 0.023927 | 0.0 | 0.27 +Output | 0.31783 | 0.31783 | 0.31783 | 0.0 | 3.53 +Modify | 0.034633 | 0.034633 | 0.034633 | 0.0 | 0.38 +Other | | 0.306 | | | 3.40 Nlocal: 5780 ave 5780 max 5780 min Histogram: 1 0 0 0 0 0 0 0 0 0 diff --git a/examples/SPIN/spinmin/log.30Mar20.spin.bfo_min_cg.g++.4 b/examples/SPIN/spinmin/log.14Apr20.spin.bfo_min_cg.g++.4 similarity index 64% rename from examples/SPIN/spinmin/log.30Mar20.spin.bfo_min_cg.g++.4 rename to examples/SPIN/spinmin/log.14Apr20.spin.bfo_min_cg.g++.4 index 087e5072c3..26dd99046b 100644 --- a/examples/SPIN/spinmin/log.30Mar20.spin.bfo_min_cg.g++.4 +++ b/examples/SPIN/spinmin/log.14Apr20.spin.bfo_min_cg.g++.4 @@ -1,4 +1,6 @@ -LAMMPS (18 Feb 2020) +LAMMPS (19 Mar 2020) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (../comm.cpp:94) + using 1 OpenMP thread(s) per MPI task # bfo in a 3d periodic box units metal @@ -17,7 +19,7 @@ Created orthogonal box = (0 0 0) to (134.64 134.64 19.8) 2 by 2 by 1 MPI processor grid create_atoms 1 box Created 5780 atoms - create_atoms CPU = 0.00109196 secs + create_atoms CPU = 0.000908136 secs # setting mass, mag. moments, and interactions for bcc iron @@ -88,25 +90,25 @@ Neighbor list info ... bin: none Per MPI rank memory allocation (min/avg/max) = 7.788 | 7.788 | 7.788 Mbytes Step Time v_magnorm v_emag v_tmag Temp TotEng - 0 0 0.0100717228668283 -0.157514482753577 29662.6138827912 0 -0.157514482753586 - 100 0.01 8.80197005315463e-06 -132.800575336655 0.00453321072433844 0 -132.800575336655 - 200 0.02 6.7090325022051e-06 -133.121000843933 0.00207567256723326 0 -133.121000843933 - 300 0.03 4.53816034526952e-06 -133.464726217612 0.00289666750134902 0 -133.464726217612 - 400 0.04 9.04820921046463e-07 -133.762019235443 0.00136447920297183 0 -133.762019235443 - 500 0.05 1.68661601751279e-06 -133.888337782149 0.00064925251985426 0 -133.888337782149 - 600 0.06 1.78038217786708e-06 -133.951571511608 0.000321461409698895 0 -133.951571511608 - 700 0.07 1.4919905772389e-06 -133.981489428217 0.000147972931351615 0 -133.981489428218 - 800 0.08 1.15173756711682e-06 -133.995096916479 6.67918930412913e-05 0 -133.99509691648 - 900 0.09 8.48526364761828e-07 -134.001205290718 2.98691474716502e-05 0 -134.001205290718 - 1000 0.1 6.10346492874848e-07 -134.00394062735 1.34329761421094e-05 0 -134.00394062735 -Loop time of 2.54966 on 4 procs for 1000 steps with 5780 atoms - -99.9% CPU use with 4 MPI tasks x no OpenMP threads + 0 0 0.0100717228668283 -0.0819172086358889 14831.3069413956 0 -0.0819172086358937 + 100 0.01 8.80197005315463e-06 -66.403173198835 0.00226660536216922 0 -66.4031731988351 + 200 0.02 6.7090325022051e-06 -66.563539121677 0.00103783628361663 0 -66.5635391216769 + 300 0.03 4.53816034526952e-06 -66.7355384861727 0.00144833375067451 0 -66.7355384861724 + 400 0.04 9.04820921046463e-07 -66.8839217283311 0.000682239601485917 0 -66.883921728331 + 500 0.05 1.68661601751279e-06 -66.9469610803655 0.00032462625992713 0 -66.9469610803655 + 600 0.06 1.78038217786708e-06 -66.9786113403506 0.000160730704849447 0 -66.9786113403508 + 700 0.07 1.4919905772389e-06 -66.9936279438931 7.39864656758075e-05 0 -66.9936279438932 + 800 0.08 1.15173756711682e-06 -67.0004605630262 3.33959465206457e-05 0 -67.0004605630265 + 900 0.09 8.48526364761828e-07 -67.0035249294341 1.49345737358251e-05 0 -67.0035249294341 + 1000 0.1 6.10346492874848e-07 -67.0048957578355 6.71648807105468e-06 0 -67.0048957578356 +Loop time of 2.40179 on 4 procs for 1000 steps with 5780 atoms + +100.0% CPU use with 4 MPI tasks x 1 OpenMP threads Minimization stats: Stopping criterion = max iterations Energy initial, next-to-last, final = - -0.157514482754 -134.00391102 -134.003940627 + -0.0819172086359 -67.0048809251 -67.0048957578 Force two-norm initial, final = 0 0 Force max component initial, final = 0 0 Final line search alpha, max atom move = 0 0 @@ -115,12 +117,12 @@ Minimization stats: MPI task timing breakdown: Section | min time | avg time | max time |%varavg| %total --------------------------------------------------------------- -Pair | 2.2558 | 2.2844 | 2.3289 | 1.9 | 89.59 +Pair | 2.1174 | 2.1533 | 2.179 | 1.6 | 89.66 Neigh | 0 | 0 | 0 | 0.0 | 0.00 -Comm | 0.048988 | 0.093425 | 0.12194 | 9.5 | 3.66 -Output | 0.082843 | 0.083898 | 0.084919 | 0.3 | 3.29 -Modify | 0.0081415 | 0.0082042 | 0.0082667 | 0.1 | 0.32 -Other | | 0.07977 | | | 3.13 +Comm | 0.049849 | 0.075596 | 0.11152 | 8.4 | 3.15 +Output | 0.082974 | 0.084081 | 0.085145 | 0.3 | 3.50 +Modify | 0.0082345 | 0.008339 | 0.008424 | 0.1 | 0.35 +Other | | 0.08043 | | | 3.35 Nlocal: 1445 ave 1445 max 1445 min Histogram: 4 0 0 0 0 0 0 0 0 0 diff --git a/examples/SPIN/spinmin/log.30Mar20.spin.bfo_min_lbfgs.g++.1 b/examples/SPIN/spinmin/log.14Apr20.spin.bfo_min_lbfgs.g++.1 similarity index 67% rename from examples/SPIN/spinmin/log.30Mar20.spin.bfo_min_lbfgs.g++.1 rename to examples/SPIN/spinmin/log.14Apr20.spin.bfo_min_lbfgs.g++.1 index e45c886f6d..2d8b319b3c 100644 --- a/examples/SPIN/spinmin/log.30Mar20.spin.bfo_min_lbfgs.g++.1 +++ b/examples/SPIN/spinmin/log.14Apr20.spin.bfo_min_lbfgs.g++.1 @@ -1,4 +1,6 @@ -LAMMPS (18 Feb 2020) +LAMMPS (19 Mar 2020) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (../comm.cpp:94) + using 1 OpenMP thread(s) per MPI task # bfo in a 3d periodic box units metal @@ -17,7 +19,7 @@ Created orthogonal box = (0 0 0) to (134.64 134.64 3.96) 1 by 1 by 1 MPI processor grid create_atoms 1 box Created 1156 atoms - create_atoms CPU = 0.00190592 secs + create_atoms CPU = 0.00159788 secs # setting mass, mag. moments, and interactions for bcc iron @@ -89,37 +91,36 @@ Neighbor list info ... bin: none Per MPI rank memory allocation (min/avg/max) = 7.748 | 7.748 | 7.748 Mbytes Step Time v_magnorm v_emag v_tmag Temp TotEng - 0 0 0.0205636053306396 -0.21723077139301 3074.80958674664 0 -0.21723077139301 - 50 0.005 0.000800557938107919 -19.3172378712837 0.587052452031493 0 -19.3172378712837 - 100 0.01 0.000434178067296136 -19.6347095376085 0.273684186181794 0 -19.6347095376086 - 150 0.015 9.48307628510239e-06 -19.7051208100556 0.00167029725424758 0 -19.7051208100558 - 200 0.02 9.40072944704056e-06 -19.7061021549234 1.54466954002072e-05 0 -19.7061021549234 - 250 0.025 5.05117500164935e-07 -19.7061079450706 1.14487564389966e-07 0 -19.7061079450706 - 300 0.03 2.15063977474981e-09 -19.7061079411039 4.19940489046789e-12 0 -19.7061079411039 - 350 0.035 2.68770538011538e-10 -19.7061079387852 4.28062843775746e-14 0 -19.706107938785 - 355 0.0355 3.55891894817714e-11 -19.7061079389004 1.20287624754126e-15 0 -19.7061079389003 -Loop time of 0.409322 on 1 procs for 355 steps with 1156 atoms - -99.0% CPU use with 1 MPI tasks x no OpenMP threads + 0 0 0.0205636053306396 -0.109252321944233 1537.40479337332 0 -0.109252321944233 + 50 0.005 0.000800557938107919 -9.65918446070017 0.293526226015746 0 -9.65918446070018 + 100 0.01 0.000434178067296136 -9.81803976806455 0.136842093090897 0 -9.81803976806459 + 150 0.015 9.48307628510239e-06 -9.85315267460926 0.000835148627123792 0 -9.85315267460932 + 200 0.02 9.40072944704056e-06 -9.85364693487847 7.72334770010361e-06 0 -9.85364693487844 + 250 0.025 5.05117500164935e-07 -9.85364764712935 5.72437821949831e-08 0 -9.85364764712939 + 300 0.03 2.15063977474981e-09 -9.85364764787459 2.09970244523395e-12 0 -9.8536476478746 + 303 0.0303 1.43831710574092e-09 -9.85364764787493 1.70336397715489e-13 0 -9.85364764787493 +Loop time of 0.328641 on 1 procs for 303 steps with 1156 atoms + +100.0% CPU use with 1 MPI tasks x 1 OpenMP threads Minimization stats: - Stopping criterion = force tolerance + Stopping criterion = energy tolerance Energy initial, next-to-last, final = - -0.217230771393 -19.7061079389 -19.7061079389 + -0.109252321944 -9.85364764787 -9.85364764787 Force two-norm initial, final = 0 0 Force max component initial, final = 0 0 Final line search alpha, max atom move = 0 0 - Iterations, force evaluations = 355 355 + Iterations, force evaluations = 303 303 MPI task timing breakdown: Section | min time | avg time | max time |%varavg| %total --------------------------------------------------------------- -Pair | 0.344 | 0.344 | 0.344 | 0.0 | 84.04 +Pair | 0.27332 | 0.27332 | 0.27332 | 0.0 | 83.17 Neigh | 0 | 0 | 0 | 0.0 | 0.00 -Comm | 0.0013642 | 0.0013642 | 0.0013642 | 0.0 | 0.33 -Output | 0.021055 | 0.021055 | 0.021055 | 0.0 | 5.14 -Modify | 0.0024285 | 0.0024285 | 0.0024285 | 0.0 | 0.59 -Other | | 0.04048 | | | 9.89 +Comm | 0.001117 | 0.001117 | 0.001117 | 0.0 | 0.34 +Output | 0.018038 | 0.018038 | 0.018038 | 0.0 | 5.49 +Modify | 0.0020421 | 0.0020421 | 0.0020421 | 0.0 | 0.62 +Other | | 0.03412 | | | 10.38 Nlocal: 1156 ave 1156 max 1156 min Histogram: 1 0 0 0 0 0 0 0 0 0 diff --git a/examples/SPIN/spinmin/log.30Mar20.spin.bfo_min_lbfgs.g++.4 b/examples/SPIN/spinmin/log.14Apr20.spin.bfo_min_lbfgs.g++.4 similarity index 67% rename from examples/SPIN/spinmin/log.30Mar20.spin.bfo_min_lbfgs.g++.4 rename to examples/SPIN/spinmin/log.14Apr20.spin.bfo_min_lbfgs.g++.4 index e8d3771e4d..2c26f64b56 100644 --- a/examples/SPIN/spinmin/log.30Mar20.spin.bfo_min_lbfgs.g++.4 +++ b/examples/SPIN/spinmin/log.14Apr20.spin.bfo_min_lbfgs.g++.4 @@ -1,4 +1,6 @@ -LAMMPS (18 Feb 2020) +LAMMPS (19 Mar 2020) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (../comm.cpp:94) + using 1 OpenMP thread(s) per MPI task # bfo in a 3d periodic box units metal @@ -17,7 +19,7 @@ Created orthogonal box = (0 0 0) to (134.64 134.64 3.96) 2 by 2 by 1 MPI processor grid create_atoms 1 box Created 1156 atoms - create_atoms CPU = 0.000856876 secs + create_atoms CPU = 0.00098896 secs # setting mass, mag. moments, and interactions for bcc iron @@ -89,36 +91,36 @@ Neighbor list info ... bin: none Per MPI rank memory allocation (min/avg/max) = 7.619 | 7.619 | 7.619 Mbytes Step Time v_magnorm v_emag v_tmag Temp TotEng - 0 0 0.0205636053306396 -0.217230771393011 3074.80958674665 0 -0.217230771393012 - 50 0.005 0.00080055793810568 -19.3172378712837 0.587052452031484 0 -19.3172378712837 - 100 0.01 0.000434178089299568 -19.6347095374991 0.273684182125484 0 -19.6347095374991 - 150 0.015 9.48305696976556e-06 -19.7051208101142 0.00167024832242908 0 -19.7051208101142 - 200 0.02 9.48404729540188e-06 -19.7061021677869 1.56791127524357e-05 0 -19.7061021677869 - 250 0.025 2.53129638591035e-07 -19.7061079301131 1.07608919893302e-07 0 -19.706107930113 - 300 0.03 1.70353573452093e-08 -19.7061079351544 1.13074385981283e-10 0 -19.7061079351544 - 345 0.0345 1.54519631528762e-11 -19.7061079391073 1.36581425973311e-15 0 -19.7061079391074 -Loop time of 0.119735 on 4 procs for 345 steps with 1156 atoms - -99.7% CPU use with 4 MPI tasks x no OpenMP threads + 0 0 0.0205636053306396 -0.109252321944234 1537.40479337332 0 -0.109252321944234 + 50 0.005 0.00080055793810568 -9.65918446070018 0.293526226015742 0 -9.65918446070018 + 100 0.01 0.000434178089299568 -9.81803976800935 0.136842091062742 0 -9.81803976800936 + 150 0.015 9.48305696976556e-06 -9.85315267463944 0.000835124161214539 0 -9.85315267463943 + 200 0.02 9.48404729540188e-06 -9.85364693589303 7.83955637621785e-06 0 -9.85364693589302 + 250 0.025 2.53129638591035e-07 -9.85364764689316 5.38044599466511e-08 0 -9.85364764689315 + 300 0.03 1.70353573452093e-08 -9.85364764787448 5.65371929906417e-11 0 -9.85364764787448 + 318 0.0318 1.78606698438076e-09 -9.85364764787558 5.01580212144594e-14 0 -9.85364764787559 +Loop time of 0.107177 on 4 procs for 318 steps with 1156 atoms + +99.6% CPU use with 4 MPI tasks x 1 OpenMP threads Minimization stats: - Stopping criterion = force tolerance + Stopping criterion = energy tolerance Energy initial, next-to-last, final = - -0.217230771393 -19.7061079391 -19.7061079391 + -0.109252321944 -9.85364764788 -9.85364764788 Force two-norm initial, final = 0 0 Force max component initial, final = 0 0 Final line search alpha, max atom move = 0 0 - Iterations, force evaluations = 345 345 + Iterations, force evaluations = 318 318 MPI task timing breakdown: Section | min time | avg time | max time |%varavg| %total --------------------------------------------------------------- -Pair | 0.084716 | 0.088366 | 0.093719 | 1.1 | 73.80 +Pair | 0.074155 | 0.077992 | 0.081876 | 1.2 | 72.77 Neigh | 0 | 0 | 0 | 0.0 | 0.00 -Comm | 0.0052106 | 0.010567 | 0.014209 | 3.3 | 8.82 -Output | 0.0051038 | 0.0051106 | 0.0051301 | 0.0 | 4.27 -Modify | 0.00058246 | 0.00063002 | 0.00066781 | 0.0 | 0.53 -Other | | 0.01506 | | | 12.58 +Comm | 0.005573 | 0.0094561 | 0.013285 | 3.4 | 8.82 +Output | 0.005054 | 0.0050632 | 0.0050869 | 0.0 | 4.72 +Modify | 0.00055051 | 0.00058657 | 0.00066018 | 0.0 | 0.55 +Other | | 0.01408 | | | 13.14 Nlocal: 289 ave 289 max 289 min Histogram: 4 0 0 0 0 0 0 0 0 0 diff --git a/examples/SPIN/spinmin/log.30Mar20.spin.iron_min.g++.1 b/examples/SPIN/spinmin/log.14Apr20.spin.iron_min.g++.1 similarity index 73% rename from examples/SPIN/spinmin/log.30Mar20.spin.iron_min.g++.1 rename to examples/SPIN/spinmin/log.14Apr20.spin.iron_min.g++.1 index 017af7051c..7fe5920c1c 100644 --- a/examples/SPIN/spinmin/log.30Mar20.spin.iron_min.g++.1 +++ b/examples/SPIN/spinmin/log.14Apr20.spin.iron_min.g++.1 @@ -1,4 +1,6 @@ -LAMMPS (18 Feb 2020) +LAMMPS (19 Mar 2020) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (../comm.cpp:94) + using 1 OpenMP thread(s) per MPI task # bcc iron in a 3d periodic box units metal @@ -76,25 +78,25 @@ Neighbor list info ... bin: standard Per MPI rank memory allocation (min/avg/max) = 6.848 | 6.848 | 6.848 Mbytes Step Time v_magx v_magz v_magnorm v_tmag TotEng - 0 0 -0.0285071136621457 -0.00948990815281275 0.0764569750905723 10097.1215247536 -0.701465876910694 - 100 0.01 -0.584953861980204 -0.0517163256267969 0.999992350892306 0.000125111389755694 -50.578744362023 - 200 0.02 -0.584864756506845 -0.0547143484057153 0.999999990495506 6.99564520908124e-06 -50.5787971409244 - 300 0.03 -0.5847600493607 -0.0578846348986585 0.999999999988174 7.66190453610032e-06 -50.5788061208586 - 400 0.04 -0.584642875238893 -0.0612373075362701 0.999999999999986 8.57151665416451e-06 -50.5788161053511 - 500 0.05 -0.584511765589529 -0.0647826190376231 1 9.58842973898173e-06 -50.5788272748485 - 600 0.06 -0.584365074206159 -0.0685313536438759 1 1.07248414528367e-05 -50.5788397688161 - 700 0.07 -0.584200963215273 -0.072494846958872 1 1.19945049891844e-05 -50.5788537427261 - 800 0.08 -0.584017381477007 -0.0766850043611195 0.999999999999999 1.34126838398365e-05 -50.5788693699026 - 900 0.09 -0.583812040722351 -0.0811143180675364 0.999999999999999 1.4996298871883e-05 -50.5788868434701 - 1000 0.1 -0.583582389243979 -0.0857958823565731 0.999999999999998 1.67640851822444e-05 -50.5789063784909 -Loop time of 0.198638 on 1 procs for 1000 steps with 250 atoms - -99.8% CPU use with 1 MPI tasks x no OpenMP threads + 0 0 -0.0285071136621457 -0.00948990815281275 0.0764569750905723 5048.56076237679 -0.354774619362398 + 100 0.01 -0.584953861980204 -0.0517163256267969 0.999992350892306 6.25556948778472e-05 -25.2894057771132 + 200 0.02 -0.584864756506845 -0.0547143484057153 0.999999990495506 3.49782260454062e-06 -25.289435991418 + 300 0.03 -0.5847600493607 -0.0578846348986585 0.999999999988174 3.83095226805016e-06 -25.2894449433165 + 400 0.04 -0.584642875238893 -0.0612373075362701 0.999999999999986 4.28575832708226e-06 -25.2894549277735 + 500 0.05 -0.584511765589529 -0.0647826190376231 1 4.79421486949086e-06 -25.2894660972709 + 600 0.06 -0.584365074206159 -0.0685313536438759 1 5.36242072641834e-06 -25.2894785912384 + 700 0.07 -0.584200963215273 -0.072494846958872 1 5.99725249459222e-06 -25.2894925651485 + 800 0.08 -0.584017381477007 -0.0766850043611195 0.999999999999999 6.70634191991825e-06 -25.289508192325 + 900 0.09 -0.583812040722351 -0.0811143180675364 0.999999999999999 7.49814943594148e-06 -25.2895256658925 + 1000 0.1 -0.583582389243979 -0.0857958823565731 0.999999999999998 8.38204259112222e-06 -25.2895452009133 +Loop time of 0.199799 on 1 procs for 1000 steps with 250 atoms + +100.0% CPU use with 1 MPI tasks x 1 OpenMP threads Minimization stats: Stopping criterion = max iterations Energy initial, next-to-last, final = - -0.701465876911 -50.5789061722 -50.5789063785 + -0.354774619362 -25.2895449946 -25.2895452009 Force two-norm initial, final = 0 0 Force max component initial, final = 0 0 Final line search alpha, max atom move = 0 0 @@ -103,12 +105,12 @@ Minimization stats: MPI task timing breakdown: Section | min time | avg time | max time |%varavg| %total --------------------------------------------------------------- -Pair | 0.18003 | 0.18003 | 0.18003 | 0.0 | 90.63 +Pair | 0.1795 | 0.1795 | 0.1795 | 0.0 | 89.84 Neigh | 0 | 0 | 0 | 0.0 | 0.00 -Comm | 0.0052125 | 0.0052125 | 0.0052125 | 0.0 | 2.62 -Output | 0.0067494 | 0.0067494 | 0.0067494 | 0.0 | 3.40 -Modify | 0.001492 | 0.001492 | 0.001492 | 0.0 | 0.75 -Other | | 0.005157 | | | 2.60 +Comm | 0.0056038 | 0.0056038 | 0.0056038 | 0.0 | 2.80 +Output | 0.0074773 | 0.0074773 | 0.0074773 | 0.0 | 3.74 +Modify | 0.0016823 | 0.0016823 | 0.0016823 | 0.0 | 0.84 +Other | | 0.005533 | | | 2.77 Nlocal: 250 ave 250 max 250 min Histogram: 1 0 0 0 0 0 0 0 0 0 diff --git a/examples/SPIN/spinmin/log.30Mar20.spin.iron_min.g++.4 b/examples/SPIN/spinmin/log.14Apr20.spin.iron_min.g++.4 similarity index 73% rename from examples/SPIN/spinmin/log.30Mar20.spin.iron_min.g++.4 rename to examples/SPIN/spinmin/log.14Apr20.spin.iron_min.g++.4 index 2df08f2626..0eb7bd1783 100644 --- a/examples/SPIN/spinmin/log.30Mar20.spin.iron_min.g++.4 +++ b/examples/SPIN/spinmin/log.14Apr20.spin.iron_min.g++.4 @@ -1,4 +1,6 @@ -LAMMPS (18 Feb 2020) +LAMMPS (19 Mar 2020) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (../comm.cpp:94) + using 1 OpenMP thread(s) per MPI task # bcc iron in a 3d periodic box units metal @@ -17,7 +19,7 @@ Created orthogonal box = (0 0 0) to (14.3325 14.3325 14.3325) 1 by 2 by 2 MPI processor grid create_atoms 1 box Created 250 atoms - create_atoms CPU = 0.00105882 secs + create_atoms CPU = 0.000731945 secs # setting mass, mag. moments, and interactions for bcc iron @@ -76,25 +78,25 @@ Neighbor list info ... bin: standard Per MPI rank memory allocation (min/avg/max) = 6.828 | 6.829 | 6.829 Mbytes Step Time v_magx v_magz v_magnorm v_tmag TotEng - 0 0 -0.0285071136621457 -0.00948990815281275 0.0764569750905723 10097.1215247536 -0.701465876910695 - 100 0.01 -0.584953861980204 -0.0517163256267969 0.999992350892306 0.000125111389755698 -50.5787443620229 - 200 0.02 -0.584864756506845 -0.0547143484057154 0.999999990495506 6.99564520908101e-06 -50.5787971409246 - 300 0.03 -0.5847600493607 -0.0578846348986585 0.999999999988173 7.66190453609995e-06 -50.5788061208592 - 400 0.04 -0.584642875238891 -0.06123730753627 0.999999999999984 8.57151665416457e-06 -50.5788161053499 - 500 0.05 -0.584511765589526 -0.0647826190376232 0.999999999999999 9.58842973898121e-06 -50.5788272748473 - 600 0.06 -0.584365074206158 -0.0685313536438759 0.999999999999999 1.07248414528365e-05 -50.5788397688148 - 700 0.07 -0.584200963215272 -0.0724948469588718 1 1.19945049891844e-05 -50.5788537427249 - 800 0.08 -0.584017381477007 -0.0766850043611196 1 1.34126838398368e-05 -50.5788693699014 - 900 0.09 -0.583812040722352 -0.0811143180675365 0.999999999999998 1.49962988718831e-05 -50.5788868434688 - 1000 0.1 -0.583582389243979 -0.0857958823565732 0.999999999999999 1.67640851822441e-05 -50.5789063784897 -Loop time of 0.0884451 on 4 procs for 1000 steps with 250 atoms - -98.5% CPU use with 4 MPI tasks x no OpenMP threads + 0 0 -0.0285071136621457 -0.00948990815281275 0.0764569750905723 5048.5607623768 -0.354774619362399 + 100 0.01 -0.584953861980204 -0.0517163256267969 0.999992350892306 6.25556948778489e-05 -25.2894057771132 + 200 0.02 -0.584864756506845 -0.0547143484057154 0.999999990495506 3.49782260454051e-06 -25.2894359914181 + 300 0.03 -0.5847600493607 -0.0578846348986585 0.999999999988173 3.83095226804998e-06 -25.2894449433168 + 400 0.04 -0.584642875238891 -0.06123730753627 0.999999999999984 4.28575832708228e-06 -25.2894549277729 + 500 0.05 -0.584511765589526 -0.0647826190376232 0.999999999999999 4.79421486949061e-06 -25.2894660972702 + 600 0.06 -0.584365074206158 -0.0685313536438759 0.999999999999999 5.36242072641826e-06 -25.2894785912378 + 700 0.07 -0.584200963215272 -0.0724948469588718 1 5.99725249459218e-06 -25.2894925651479 + 800 0.08 -0.584017381477007 -0.0766850043611196 1 6.7063419199184e-06 -25.2895081923244 + 900 0.09 -0.583812040722352 -0.0811143180675365 0.999999999999998 7.49814943594153e-06 -25.2895256658919 + 1000 0.1 -0.583582389243979 -0.0857958823565732 0.999999999999999 8.38204259112203e-06 -25.2895452009127 +Loop time of 0.086317 on 4 procs for 1000 steps with 250 atoms + +99.9% CPU use with 4 MPI tasks x 1 OpenMP threads Minimization stats: Stopping criterion = max iterations Energy initial, next-to-last, final = - -0.701465876911 -50.5789061722 -50.5789063785 + -0.354774619362 -25.2895449946 -25.2895452009 Force two-norm initial, final = 0 0 Force max component initial, final = 0 0 Final line search alpha, max atom move = 0 0 @@ -103,12 +105,12 @@ Minimization stats: MPI task timing breakdown: Section | min time | avg time | max time |%varavg| %total --------------------------------------------------------------- -Pair | 0.042681 | 0.045882 | 0.051702 | 1.6 | 51.88 +Pair | 0.042744 | 0.045964 | 0.049416 | 1.2 | 53.25 Neigh | 0 | 0 | 0 | 0.0 | 0.00 -Comm | 0.026088 | 0.032027 | 0.034881 | 2.0 | 36.21 -Output | 0.0023928 | 0.0024027 | 0.0024304 | 0.0 | 2.72 -Modify | 0.00047779 | 0.00051093 | 0.00056863 | 0.0 | 0.58 -Other | | 0.007622 | | | 8.62 +Comm | 0.026905 | 0.030113 | 0.033464 | 1.5 | 34.89 +Output | 0.0023746 | 0.0023909 | 0.0024335 | 0.1 | 2.77 +Modify | 0.00052047 | 0.00055218 | 0.00058579 | 0.0 | 0.64 +Other | | 0.007297 | | | 8.45 Nlocal: 62.5 ave 65 max 60 min Histogram: 2 0 0 0 0 0 0 0 0 2 -- GitLab From 0afa9e60f97033b1c9626df0394f02b169228cce Mon Sep 17 00:00:00 2001 From: Richard Berger Date: Tue, 14 Apr 2020 17:45:46 -0400 Subject: [PATCH 307/717] Fix installation of lammps.py with CMake In CMake 3.10 the PythonInterp module defined PYTHON_EXECUTABLE. Since CMake 3.12 the Python module defines Python_EXECUTABLE. Since the rest of the code was using PYTHON_EXECUTABLE and expecting it to be defined, no matter which version, in newer versions of CMake this would lead to lammps.py not being installed at all. This commit changes the LAMMPS CMake files to use the newer variable name and sets Python_EXECUTABLE in older versions if needed. --- cmake/CMakeLists.txt | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index e28bab6385..74c146f143 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -599,13 +599,16 @@ install( if(BUILD_SHARED_LIBS) if(CMAKE_VERSION VERSION_LESS 3.12) find_package(PythonInterp) # Deprecated since version 3.12 + if(PYTHONINTERP_FOUND) + set(Python_EXECUTABLE ${PYTHON_EXECUTABLE}) + endif() else() find_package(Python COMPONENTS Interpreter) endif() - if (PYTHON_EXECUTABLE) + if (Python_EXECUTABLE) add_custom_target( install-python - ${PYTHON_EXECUTABLE} install.py -v ${LAMMPS_SOURCE_DIR}/version.h + ${Python_EXECUTABLE} install.py -v ${LAMMPS_SOURCE_DIR}/version.h -m ${LAMMPS_PYTHON_DIR}/lammps.py -l ${CMAKE_BINARY_DIR}/liblammps${CMAKE_SHARED_LIBRARY_SUFFIX} WORKING_DIRECTORY ${LAMMPS_PYTHON_DIR} @@ -629,11 +632,14 @@ endif() if(BUILD_SHARED_LIBS OR PKG_PYTHON) if(CMAKE_VERSION VERSION_LESS 3.12) find_package(PythonInterp) # Deprecated since version 3.12 + if(PYTHONINTERP_FOUND) + set(Python_EXECUTABLE ${PYTHON_EXECUTABLE}) + endif() else() find_package(Python COMPONENTS Interpreter) endif() - if (PYTHON_EXECUTABLE) - execute_process(COMMAND ${PYTHON_EXECUTABLE} + if (Python_EXECUTABLE) + execute_process(COMMAND ${Python_EXECUTABLE} -c "import distutils.sysconfig as cg; print(cg.get_python_lib(1,0,prefix='${CMAKE_INSTALL_PREFIX}'))" OUTPUT_VARIABLE PYTHON_DEFAULT_INSTDIR OUTPUT_STRIP_TRAILING_WHITESPACE) set(PYTHON_INSTDIR ${PYTHON_DEFAULT_INSTDIR} CACHE PATH "Installation folder for LAMMPS Python module") -- GitLab From 48c136b78430d1976ec4fdc3302b644cf6fdfccf Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 14 Apr 2020 21:37:34 -0400 Subject: [PATCH 308/717] fix whitespace issue --- src/KOKKOS/min_kokkos.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/KOKKOS/min_kokkos.cpp b/src/KOKKOS/min_kokkos.cpp index 30b362dc51..e5f22411f6 100644 --- a/src/KOKKOS/min_kokkos.cpp +++ b/src/KOKKOS/min_kokkos.cpp @@ -636,7 +636,7 @@ double MinKokkos::fnorm_inf() double MinKokkos::fnorm_max() { - + double local_norm_max = 0.0; { // local variables for lambda capture -- GitLab From b718db385dbc82e2e5d2787b498116e883a032a5 Mon Sep 17 00:00:00 2001 From: "Ryan S. Elliott" Date: Tue, 14 Apr 2020 17:36:44 -0500 Subject: [PATCH 309/717] Add support for "internal" kim_match_pairs command --- src/KIM/kim_interactions.cpp | 84 +++++++++++++++++++++++++++++++++++- src/KIM/kim_interactions.h | 2 + 2 files changed, 84 insertions(+), 2 deletions(-) diff --git a/src/KIM/kim_interactions.cpp b/src/KIM/kim_interactions.cpp index 7dbe523033..cc891f098f 100644 --- a/src/KIM/kim_interactions.cpp +++ b/src/KIM/kim_interactions.cpp @@ -15,6 +15,7 @@ Contributing authors: Axel Kohlmeyer (Temple U), Ryan S. Elliott (UMN) Ellad B. Tadmor (UMN) + Ronald Miller (Carleton U) ------------------------------------------------------------------------- */ /* ---------------------------------------------------------------------- @@ -57,8 +58,10 @@ #include "kim_interactions.h" #include +#include #include #include +#include #include "error.h" #include "atom.h" #include "comm.h" @@ -80,6 +83,8 @@ extern "C" { using namespace LAMMPS_NS; +#define MAXLINE 1024 + /* ---------------------------------------------------------------------- */ void KimInteractions::command(int narg, char **arg) @@ -223,8 +228,16 @@ void KimInteractions::do_setup(int narg, char **arg) for (int j=0; j < sim_lines; ++j) { KIM_SimulatorModel_GetSimulatorFieldLine( simulatorModel,sim_model_idx,j,&sim_value); - input->one(sim_value); - } + char strbuf[MAXLINE]; + char * strword; + strcpy(strbuf,sim_value); + strword = strtok(strbuf," \t"); + if (0==strcmp(strword,"kim_match_pairs")) { + kim_match_pairs(sim_value); + } else { + input->one(sim_value); + } + } } } @@ -263,6 +276,73 @@ void KimInteractions::do_setup(int narg, char **arg) /* ---------------------------------------------------------------------- */ +void KimInteractions::kim_match_pairs(char const *const input_line) const +{ + char strbuf[MAXLINE]; + strcpy(strbuf,input_line); + char *cmd, *filename; + cmd = strtok(strbuf," \t"); + filename = strtok(NULL," \t"); + + FILE *fp; + fp = fopen(filename,"r"); + if (fp == NULL) { + error->one(FLERR,"Parameter file not found"); + } + + std::vector species; + for (int i = 0; i < atom->ntypes; ++i) + { + char *str; + str = strtok(NULL," \t"); + if (str == NULL) + error->one(FLERR,"Incorrect args for pair_species_coeff command"); + species.push_back(str); + } + + char line[MAXLINE],*ptr; + int n, eof = 0; + + while (1) { + if (comm->me == 0) { + ptr = fgets(line,MAXLINE,fp); + if (ptr == NULL) { + eof = 1; + fclose(fp); + } else n = strlen(line) + 1; + } + MPI_Bcast(&eof,1,MPI_INT,0,world); + if (eof) break; + MPI_Bcast(&n,1,MPI_INT,0,world); + MPI_Bcast(line,n,MPI_CHAR,0,world); + + char *species1, *species2, *the_rest; + ptr = line; + species1 = strtok(ptr," \t"); + species2 = strtok(NULL," \t"); + the_rest = strtok(NULL,"\n"); + + for (int type_a = 0; type_a < atom->ntypes; ++type_a) { + for (int type_b = type_a; type_b < atom->ntypes; ++type_b) { + if(((strcmp(species[type_a],species1) == 0) && + (strcmp(species[type_b],species2) == 0)) + || + ((strcmp(species[type_b],species1) == 0) && + (strcmp(species[type_a],species2) == 0)) + ) { + char pair_command[MAXLINE]; + sprintf(pair_command,"pair_coeff %i %i %s",type_a+1,type_b+1, + the_rest); + input->one(pair_command); + } + } + } + } + fclose(fp); +} + +/* ---------------------------------------------------------------------- */ + int KimInteractions::species_to_atomic_no(std::string const species) const { if (species == "H") return 1; diff --git a/src/KIM/kim_interactions.h b/src/KIM/kim_interactions.h index 8172004d53..d22205249f 100644 --- a/src/KIM/kim_interactions.h +++ b/src/KIM/kim_interactions.h @@ -15,6 +15,7 @@ Contributing authors: Axel Kohlmeyer (Temple U), Ryan S. Elliott (UMN) Ellad B. Tadmor (UMN) + Ronald Miller (Carleton U) ------------------------------------------------------------------------- */ /* ---------------------------------------------------------------------- @@ -76,6 +77,7 @@ class KimInteractions : protected Pointers { private: void do_setup(int, char **); int species_to_atomic_no(std::string const species) const; + void kim_match_pairs(char const *const input_line) const; void kim_interactions_log_delimiter(std::string const begin_end) const; }; -- GitLab From 8a6664eb4c130505c0cd7505f64d4bf5a9326fb7 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 14 Apr 2020 21:55:24 -0400 Subject: [PATCH 310/717] make coulomb part of lj/class2/coul/long/cs consistent with lj/cut/coul/long --- src/CORESHELL/pair_lj_class2_coul_long_cs.cpp | 74 ++++++++----------- src/CORESHELL/pair_lj_cut_coul_long_cs.cpp | 8 +- 2 files changed, 33 insertions(+), 49 deletions(-) diff --git a/src/CORESHELL/pair_lj_class2_coul_long_cs.cpp b/src/CORESHELL/pair_lj_class2_coul_long_cs.cpp index 9fb7ad118e..b99d03799a 100644 --- a/src/CORESHELL/pair_lj_class2_coul_long_cs.cpp +++ b/src/CORESHELL/pair_lj_class2_coul_long_cs.cpp @@ -12,33 +12,21 @@ ------------------------------------------------------------------------- */ #include "pair_lj_class2_coul_long_cs.h" -#include #include -#include #include "atom.h" -#include "comm.h" #include "force.h" -#include "kspace.h" -#include "update.h" -#include "respa.h" -#include "neighbor.h" #include "neigh_list.h" -#include "neigh_request.h" -#include "math_const.h" -#include "memory.h" -#include "error.h" -#include "utils.h" using namespace LAMMPS_NS; -using namespace MathConst; #define EWALD_F 1.12837917 -#define EWALD_P 0.3275911 -#define A1 0.254829592 -#define A2 -0.284496736 -#define A3 1.421413741 -#define A4 -1.453152027 -#define A5 1.061405429 +#define EWALD_P 9.95473818e-1 +#define B0 -0.1335096380159268 +#define B1 -2.57839507e-1 +#define B2 -1.37203639e-1 +#define B3 -8.88822059e-3 +#define B4 -5.80844129e-3 +#define B5 1.14652755e-1 #define EPSILON 1.0e-20 #define EPS_EWALD 1.0e-6 @@ -49,7 +37,7 @@ using namespace MathConst; PairLJClass2CoulLongCS::PairLJClass2CoulLongCS(LAMMPS *lmp) : PairLJClass2CoulLong(lmp) { ewaldflag = pppmflag = 1; - respa_enable = 1; + respa_enable = 0; // TODO: r-RESPA handling is inconsistent and thus disabled until fixed writedata = 1; ftable = NULL; } @@ -62,7 +50,7 @@ void PairLJClass2CoulLongCS::compute(int eflag, int vflag) double qtmp,xtmp,ytmp,ztmp,delx,dely,delz,evdwl,ecoul,fpair; double fraction,table; double rsq,r,rinv,r2inv,r3inv,r6inv,forcecoul,forcelj; - double grij,expm2,prefactor,t,erfc; + double grij,expm2,prefactor,t,erfc,u; double factor_coul,factor_lj; int *ilist,*jlist,*numneigh,**firstneigh; @@ -111,7 +99,6 @@ void PairLJClass2CoulLongCS::compute(int eflag, int vflag) if (rsq < cutsq[itype][jtype]) { rsq += EPSILON; // Add Epsilon for case: r = 0; Interaction must be removed by special bond; r2inv = 1.0/rsq; - if (rsq < cut_coulsq) { if (!ncoultablebits || rsq <= tabinnersq) { r = sqrt(rsq); @@ -123,7 +110,8 @@ void PairLJClass2CoulLongCS::compute(int eflag, int vflag) grij = g_ewald * (r+EPS_EWALD); expm2 = exp(-grij*grij); t = 1.0 / (1.0 + EWALD_P*grij); - erfc = t * (A1+t*(A2+t*(A3+t*(A4+t*A5)))) * expm2; + u = 1.0 - t; + erfc = t * (1.+u*(B0+u*(B1+u*(B2+u*(B3+u*(B4+u*B5)))))) * expm2; prefactor /= (r+EPS_EWALD); forcecoul = prefactor * (erfc + EWALD_F*grij*expm2 - (1.0-factor_coul)); // Additionally r2inv needs to be accordingly modified since the later @@ -133,7 +121,8 @@ void PairLJClass2CoulLongCS::compute(int eflag, int vflag) grij = g_ewald * r; expm2 = exp(-grij*grij); t = 1.0 / (1.0 + EWALD_P*grij); - erfc = t * (A1+t*(A2+t*(A3+t*(A4+t*A5)))) * expm2; + u = 1.0 - t; + erfc = t * (1.+u*(B0+u*(B1+u*(B2+u*(B3+u*(B4+u*B5)))))) * expm2; prefactor /= r; forcecoul = prefactor * (erfc + EWALD_F*grij*expm2); } @@ -260,8 +249,8 @@ void PairLJClass2CoulLongCS::compute_inner() jtype = type[j]; if (rsq < cut_ljsq[itype][jtype]) { - rinv = sqrt(r2inv); - r3inv = r2inv*rinv; + rinv = sqrt(r2inv); + r3inv = r2inv*rinv; r6inv = r3inv*r3inv; forcelj = r6inv * (lj1[itype][jtype]*r3inv - lj2[itype][jtype]); } else forcelj = 0.0; @@ -352,8 +341,8 @@ void PairLJClass2CoulLongCS::compute_middle() jtype = type[j]; if (rsq < cut_ljsq[itype][jtype]) { - rinv = sqrt(r2inv); - r3inv = r2inv*rinv; + rinv = sqrt(r2inv); + r3inv = r2inv*rinv; r6inv = r3inv*r3inv; forcelj = r6inv * (lj1[itype][jtype]*r3inv - lj2[itype][jtype]); } else forcelj = 0.0; @@ -389,7 +378,7 @@ void PairLJClass2CoulLongCS::compute_outer(int eflag, int vflag) double qtmp,xtmp,ytmp,ztmp,delx,dely,delz,evdwl,ecoul,fpair; double fraction,table; double r,rinv,r2inv,r3inv,r6inv,forcecoul,forcelj,factor_coul,factor_lj; - double grij,expm2,prefactor,t,erfc; + double grij,expm2,prefactor,t,erfc,u; double rsw; int *ilist,*jlist,*numneigh,**firstneigh; double rsq; @@ -444,7 +433,6 @@ void PairLJClass2CoulLongCS::compute_outer(int eflag, int vflag) jtype = type[j]; if (rsq < cutsq[itype][jtype]) { - rsq += EPSILON; // Add Epsilon for case: r = 0; Interaction must be removed by special bond; r2inv = 1.0/rsq; if (rsq < cut_coulsq) { @@ -453,7 +441,8 @@ void PairLJClass2CoulLongCS::compute_outer(int eflag, int vflag) grij = g_ewald * r; expm2 = exp(-grij*grij); t = 1.0 / (1.0 + EWALD_P*grij); - erfc = t * (A1+t*(A2+t*(A3+t*(A4+t*A5)))) * expm2; + u = 1. - t; + erfc = t * (1.+u*(B0+u*(B1+u*(B2+u*(B3+u*(B4+u*B5)))))) * expm2; prefactor = qqrd2e * qtmp*q[j]/r; forcecoul = prefactor * (erfc + EWALD_F*grij*expm2 - 1.0); if (rsq > cut_in_off_sq) { @@ -486,9 +475,9 @@ void PairLJClass2CoulLongCS::compute_outer(int eflag, int vflag) } else forcecoul = 0.0; if (rsq < cut_ljsq[itype][jtype] && rsq > cut_in_off_sq) { - rinv = sqrt(r2inv); - r3inv = r2inv*rinv; - r6inv = r3inv*r3inv; + rinv = sqrt(r2inv); + r3inv = r2inv*rinv; + r6inv = r3inv*r3inv; forcelj = r6inv * (lj1[itype][jtype]*r3inv - lj2[itype][jtype]); if (rsq < cut_in_on_sq) { rsw = (sqrt(rsq) - cut_in_off)/cut_in_diff; @@ -524,9 +513,9 @@ void PairLJClass2CoulLongCS::compute_outer(int eflag, int vflag) } else ecoul = 0.0; if (rsq < cut_ljsq[itype][jtype]) { - rinv = sqrt(r2inv); - r3inv = r2inv*rinv; - r6inv = r3inv*r3inv; + rinv = sqrt(r2inv); + r3inv = r2inv*rinv; + r6inv = r3inv*r3inv; evdwl = r6inv*(lj3[itype][jtype]*r3inv-lj4[itype][jtype]) - offset[itype][jtype]; evdwl *= factor_lj; @@ -551,13 +540,13 @@ void PairLJClass2CoulLongCS::compute_outer(int eflag, int vflag) if (rsq <= cut_in_off_sq) { rinv = sqrt(r2inv); - r3inv = r2inv*rinv; - r6inv = r3inv*r3inv; + r3inv = r2inv*rinv; + r6inv = r3inv*r3inv; forcelj = r6inv * (lj1[itype][jtype]*r3inv - lj2[itype][jtype]); } else if (rsq <= cut_in_on_sq) { - rinv = sqrt(r2inv); - r3inv = r2inv*rinv; - r6inv = r3inv*r3inv; + rinv = sqrt(r2inv); + r3inv = r2inv*rinv; + r6inv = r3inv*r3inv; forcelj = r6inv * (lj1[itype][jtype]*r3inv - lj2[itype][jtype]); } fpair = (forcecoul + factor_lj*forcelj) * r2inv; @@ -570,4 +559,3 @@ void PairLJClass2CoulLongCS::compute_outer(int eflag, int vflag) } } - diff --git a/src/CORESHELL/pair_lj_cut_coul_long_cs.cpp b/src/CORESHELL/pair_lj_cut_coul_long_cs.cpp index 7ad544051a..12d9088f26 100644 --- a/src/CORESHELL/pair_lj_cut_coul_long_cs.cpp +++ b/src/CORESHELL/pair_lj_cut_coul_long_cs.cpp @@ -41,7 +41,7 @@ using namespace LAMMPS_NS; PairLJCutCoulLongCS::PairLJCutCoulLongCS(LAMMPS *lmp) : PairLJCutCoulLong(lmp) { ewaldflag = pppmflag = 1; - respa_enable = 1; + respa_enable = 0; // TODO: r-RESPA handling is inconsistent and thus disabled until fixed writedata = 1; ftable = NULL; qdist = 0.0; @@ -173,7 +173,6 @@ void PairLJCutCoulLongCS::compute(int eflag, int vflag) } if (factor_coul < 1.0) ecoul -= (1.0-factor_coul)*prefactor; } else ecoul = 0.0; - if (rsq < cut_ljsq[itype][jtype]) { evdwl = r6inv*(lj3[itype][jtype]*r6inv-lj4[itype][jtype]) - offset[itype][jtype]; @@ -433,7 +432,6 @@ void PairLJCutCoulLongCS::compute_outer(int eflag, int vflag) jtype = type[j]; if (rsq < cutsq[itype][jtype]) { - rsq += EPSILON; // Add Epsilon for case: r = 0; Interaction must be removed by special bond; r2inv = 1.0/rsq; if (rsq < cut_coulsq) { @@ -442,9 +440,8 @@ void PairLJCutCoulLongCS::compute_outer(int eflag, int vflag) grij = g_ewald * r; expm2 = exp(-grij*grij); t = 1.0 / (1.0 + EWALD_P*grij); - u = 1. - t; + u = 1. - t; erfc = t * (1.+u*(B0+u*(B1+u*(B2+u*(B3+u*(B4+u*B5)))))) * expm2; - //erfc = t * (A1+t*(A2+t*(A3+t*(A4+t*A5)))) * expm2; prefactor = qqrd2e * qtmp*q[j]/r; forcecoul = prefactor * (erfc + EWALD_F*grij*expm2 - 1.0); if (rsq > cut_in_off_sq) { @@ -543,7 +540,6 @@ void PairLJCutCoulLongCS::compute_outer(int eflag, int vflag) r6inv = r2inv*r2inv*r2inv; forcelj = r6inv * (lj1[itype][jtype]*r6inv - lj2[itype][jtype]); } - fpair = (forcecoul + factor_lj*forcelj) * r2inv; } -- GitLab From e5842e9236af790a1dbde4497dd0d1ef8b2e3c1a Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 14 Apr 2020 22:34:07 -0400 Subject: [PATCH 311/717] must handle CORESHELL as ACCEL_PACKAGE because of the dependency tracking --- cmake/CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index 36bed2d649..7d2bb586f5 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -121,7 +121,7 @@ set(LAMMPS_LINK_LIBS) set(LAMMPS_DEPS) set(LAMMPS_API_DEFINES) -set(DEFAULT_PACKAGES ASPHERE BODY CLASS2 COLLOID COMPRESS CORESHELL DIPOLE +set(DEFAULT_PACKAGES ASPHERE BODY CLASS2 COLLOID COMPRESS 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-MESODPD USER-CGSDK USER-COLVARS @@ -130,7 +130,7 @@ set(DEFAULT_PACKAGES ASPHERE BODY CLASS2 COLLOID COMPRESS CORESHELL DIPOLE USER-NETCDF USER-PHONON USER-PLUMED USER-PTM USER-QTB USER-REACTION 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) -set(ACCEL_PACKAGES USER-OMP KOKKOS OPT USER-INTEL GPU) +set(ACCEL_PACKAGES CORESHELL USER-OMP KOKKOS OPT USER-INTEL GPU) foreach(PKG ${DEFAULT_PACKAGES} ${ACCEL_PACKAGES}) option(PKG_${PKG} "Build ${PKG} Package" OFF) endforeach() -- GitLab From 567147cf784d53a4b59f4ed65ae10efd674f487d Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 14 Apr 2020 22:37:39 -0400 Subject: [PATCH 312/717] rename DEFAULT_PACKAGES to STANDARD_PACKAGES and ACCEL_PACKAGES to SUFFIX_PACKAGES for clarity --- cmake/CMakeLists.txt | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index 7d2bb586f5..14c18c431b 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -121,7 +121,7 @@ set(LAMMPS_LINK_LIBS) set(LAMMPS_DEPS) set(LAMMPS_API_DEFINES) -set(DEFAULT_PACKAGES ASPHERE BODY CLASS2 COLLOID COMPRESS DIPOLE +set(STANDARD_PACKAGES ASPHERE BODY CLASS2 COLLOID COMPRESS 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-MESODPD USER-CGSDK USER-COLVARS @@ -130,8 +130,8 @@ set(DEFAULT_PACKAGES ASPHERE BODY CLASS2 COLLOID COMPRESS DIPOLE USER-NETCDF USER-PHONON USER-PLUMED USER-PTM USER-QTB USER-REACTION 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) -set(ACCEL_PACKAGES CORESHELL USER-OMP KOKKOS OPT USER-INTEL GPU) -foreach(PKG ${DEFAULT_PACKAGES} ${ACCEL_PACKAGES}) +set(SUFFIX_PACKAGES CORESHELL USER-OMP KOKKOS OPT USER-INTEL GPU) +foreach(PKG ${STANDARD_PACKAGES} ${SUFFIX_PACKAGES}) option(PKG_${PKG} "Build ${PKG} Package" OFF) endforeach() @@ -386,7 +386,7 @@ RegisterStyles(${LAMMPS_SOURCE_DIR}) ############################################## # add sources of enabled packages ############################################ -foreach(PKG ${DEFAULT_PACKAGES}) +foreach(PKG ${STANDARD_PACKAGES}) set(${PKG}_SOURCES_DIR ${LAMMPS_SOURCE_DIR}/${PKG}) file(GLOB ${PKG}_SOURCES ${${PKG}_SOURCES_DIR}/[^.]*.cpp) @@ -414,7 +414,7 @@ foreach(PKG MPIIO) endforeach() # dedicated check for entire contents of accelerator packages -foreach(PKG ${ACCEL_PACKAGES}) +foreach(PKG ${SUFFIX_PACKAGES}) set(${PKG}_SOURCES_DIR ${LAMMPS_SOURCE_DIR}/${PKG}) file(GLOB ${PKG}_SOURCES ${${PKG}_SOURCES_DIR}/[^.]*.cpp) @@ -507,7 +507,7 @@ include_directories(${LAMMPS_STYLE_HEADERS_DIR}) ###################################### set(temp "#ifndef LMP_INSTALLED_PKGS_H\n#define LMP_INSTALLED_PKGS_H\n") set(temp "${temp}const char * LAMMPS_NS::LAMMPS::installed_packages[] = {\n") -set(temp_PKG_LIST ${DEFAULT_PACKAGES} ${ACCEL_PACKAGES}) +set(temp_PKG_LIST ${STANDARD_PACKAGES} ${SUFFIX_PACKAGES}) list(SORT temp_PKG_LIST) foreach(PKG ${temp_PKG_LIST}) if(PKG_${PKG}) @@ -698,7 +698,7 @@ include(CodeCoverage) ############################################################################### # Print package summary ############################################################################### -foreach(PKG ${DEFAULT_PACKAGES} ${ACCEL_PACKAGES}) +foreach(PKG ${STANDARD_PACKAGES} ${SUFFIX_PACKAGES}) if(PKG_${PKG}) message(STATUS "Building package: ${PKG}") endif() -- GitLab From 1cee0cf50e583658002c6330ba54d96af5e01592 Mon Sep 17 00:00:00 2001 From: "Ryan S. Elliott" Date: Wed, 15 Apr 2020 09:51:36 -0500 Subject: [PATCH 313/717] Changes and Comments in response to Axel's suggestions --- src/KIM/kim_interactions.cpp | 17 ++++++++++++++--- src/KIM/kim_interactions.h | 2 +- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/src/KIM/kim_interactions.cpp b/src/KIM/kim_interactions.cpp index cc891f098f..0964ba6531 100644 --- a/src/KIM/kim_interactions.cpp +++ b/src/KIM/kim_interactions.cpp @@ -232,8 +232,19 @@ void KimInteractions::do_setup(int narg, char **arg) char * strword; strcpy(strbuf,sim_value); strword = strtok(strbuf," \t"); - if (0==strcmp(strword,"kim_match_pairs")) { - kim_match_pairs(sim_value); + if (0==strcmp(strword,"KIM_MATCH_PAIRS")) { + // Notes regarding the KIM_MATCH_PAIRS command + // * This is an INTERNAL command. + // * It is intended for use only by KIM Simulator Models. + // * It is not possible to use this command outside of the context + // of the kim_interactions command and KIM Simulator Models. + // * The command performs a transformation from symbolic + // string-based atom types to lammps numeric atom types for + // the pair_coeff settings. + // * The command is not documented fully as it is expected to be + // temporary. Eventually it should be replaced by a more + // comprehensive symbolic types support in lammps. + KIM_MATCH_PAIRS(sim_value); } else { input->one(sim_value); } @@ -276,7 +287,7 @@ void KimInteractions::do_setup(int narg, char **arg) /* ---------------------------------------------------------------------- */ -void KimInteractions::kim_match_pairs(char const *const input_line) const +void KimInteractions::KIM_MATCH_PAIRS(char const *const input_line) const { char strbuf[MAXLINE]; strcpy(strbuf,input_line); diff --git a/src/KIM/kim_interactions.h b/src/KIM/kim_interactions.h index d22205249f..f92e58ca48 100644 --- a/src/KIM/kim_interactions.h +++ b/src/KIM/kim_interactions.h @@ -77,7 +77,7 @@ class KimInteractions : protected Pointers { private: void do_setup(int, char **); int species_to_atomic_no(std::string const species) const; - void kim_match_pairs(char const *const input_line) const; + void KIM_MATCH_PAIRS(char const *const input_line) const; void kim_interactions_log_delimiter(std::string const begin_end) const; }; -- GitLab From e94576ecd8f66c8cd693c032ebb6d4e80af267ff Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Wed, 15 Apr 2020 11:21:25 -0400 Subject: [PATCH 314/717] update documentation as requested --- doc/src/fix_restrain.rst | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/src/fix_restrain.rst b/doc/src/fix_restrain.rst index 110b26680d..44f5e7585d 100644 --- a/doc/src/fix_restrain.rst +++ b/doc/src/fix_restrain.rst @@ -17,12 +17,12 @@ Syntax .. parsed-literal:: - *bond* args = atom1 atom2 Kstart Kstop r0start r0stop + *bond* args = atom1 atom2 Kstart Kstop r0start (r0stop) atom1,atom2 = IDs of 2 atoms in bond Kstart,Kstop = restraint coefficients at start/end of run (energy units) r0start = equilibrium bond distance at start of run (distance units) - r0stop = equilibrium bond distance at end of run (distance units). If not - specified it's assumed to be equal to r0start + r0stop = equilibrium bond distance at end of run (optional) (distance units). If not + specified it is assumed to be equal to r0start *lbond* args = atom1 atom2 Kstart Kstop r0start r0stop atom1,atom2 = IDs of 2 atoms in bond Kstart,Kstop = restraint coefficients at start/end of run (energy units) -- GitLab From 0796a7032e4856e276b91923f8bc4422333b66e9 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Wed, 15 Apr 2020 11:22:48 -0400 Subject: [PATCH 315/717] same doc change for "lbond" option --- doc/src/fix_restrain.rst | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/src/fix_restrain.rst b/doc/src/fix_restrain.rst index 44f5e7585d..692336bec6 100644 --- a/doc/src/fix_restrain.rst +++ b/doc/src/fix_restrain.rst @@ -23,12 +23,12 @@ Syntax r0start = equilibrium bond distance at start of run (distance units) r0stop = equilibrium bond distance at end of run (optional) (distance units). If not specified it is assumed to be equal to r0start - *lbond* args = atom1 atom2 Kstart Kstop r0start r0stop + *lbond* args = atom1 atom2 Kstart Kstop r0start (r0stop) atom1,atom2 = IDs of 2 atoms in bond Kstart,Kstop = restraint coefficients at start/end of run (energy units) r0start = equilibrium bond distance at start of run (distance units) - r0stop = equilibrium bond distance at end of run (distance units). If not - specified it's assumed to be equal to r0start + r0stop = equilibrium bond distance at end of run (optional) (distance units). If not + specified it is assumed to be equal to r0start *angle* args = atom1 atom2 atom3 Kstart Kstop theta0 atom1,atom2,atom3 = IDs of 3 atoms in angle, atom2 = middle atom Kstart,Kstop = restraint coefficients at start/end of run (energy units) -- GitLab From 529e905816a75d0563f38e2d073ea42fc47cb717 Mon Sep 17 00:00:00 2001 From: "Ryan S. Elliott" Date: Wed, 15 Apr 2020 10:29:55 -0500 Subject: [PATCH 316/717] Fixup error message --- src/KIM/kim_interactions.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/KIM/kim_interactions.cpp b/src/KIM/kim_interactions.cpp index 0964ba6531..55d89766b5 100644 --- a/src/KIM/kim_interactions.cpp +++ b/src/KIM/kim_interactions.cpp @@ -307,7 +307,7 @@ void KimInteractions::KIM_MATCH_PAIRS(char const *const input_line) const char *str; str = strtok(NULL," \t"); if (str == NULL) - error->one(FLERR,"Incorrect args for pair_species_coeff command"); + error->one(FLERR,"Incorrect args for KIM_MATCH_PAIRS command"); species.push_back(str); } -- GitLab From 08d01e6417531cc26ec6f55e1707d307c6b07f3c Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Wed, 15 Apr 2020 11:31:30 -0400 Subject: [PATCH 317/717] import polymorphic pair style update from Xiaowang Zhou --- doc/src/pair_polymorphic.rst | 328 +- potentials/FeCH_BOP_I.poly | 33617 +++++++++++++++++++++++++++ potentials/FeCH_BOP_II.poly | 33618 ++++++++++++++++++++++++++++ potentials/TlBr_msw.poly | 8014 +++++++ src/MANYBODY/pair_polymorphic.cpp | 127 +- src/MANYBODY/pair_polymorphic.h | 83 +- 6 files changed, 75588 insertions(+), 199 deletions(-) create mode 100644 potentials/FeCH_BOP_I.poly create mode 100644 potentials/FeCH_BOP_II.poly create mode 100644 potentials/TlBr_msw.poly diff --git a/doc/src/pair_polymorphic.rst b/doc/src/pair_polymorphic.rst index c0db3f10a4..15ac466a21 100644 --- a/doc/src/pair_polymorphic.rst +++ b/doc/src/pair_polymorphic.rst @@ -1,4 +1,5 @@ -.. index:: pair_style polymorphic + +

    .. index:: pair_style polymorphic
     
     pair_style polymorphic command
     ==============================
    @@ -18,22 +19,27 @@ Examples
     .. code-block:: LAMMPS
     
        pair_style polymorphic
    -   pair_coeff * * TlBr_msw.polymorphic Tl Br
    -   pair_coeff * * AlCu_eam.polymorphic Al Cu
    -   pair_coeff * * GaN_tersoff.polymorphic Ga N
    -   pair_coeff * * GaN_sw.polymorphic GaN
    +   pair_coeff * * FeCH_BOPI.poly Fe C H
    +   pair_coeff * * TlBr_msw.poly Tl Br
    +   pair_coeff * * CuTa_eam.poly Cu Ta
    +   pair_coeff * * GaN_tersoff.poly Ga N
    +   pair_coeff * * GaN_sw.poly GaN
     
     Description
     """""""""""
     
     The *polymorphic* pair style computes a 3-body free-form potential
    -(:ref:`Zhou `) for the energy E of a system of atoms as
    +(:ref:`Zhou <Zhou3>`) for the energy E of a system of atoms as
     
     .. math::
     
    -   E & = \frac{1}{2}\sum_{i=1}^{i=N}\sum_{j=1}^{j=N}\left[\left(1-\delta_{ij}\right)\cdot U_{IJ}\left(r_{ij}\right)-\left(1-\eta_{ij}\right)\cdot F_{IJ}\left(r_{ij}\right)\cdot V_{IJ}\left(r_{ij}\right)\right] \\
    -   X_{ij} & = \sum_{k=i_1,k\neq i,j}^{i_N}W_{IK}\left(r_{ik}\right)\cdot G_{JIK}\left(\theta_{jik}\right)\cdot P_{IK}\left(\Delta r_{jik}\right) \\
    -   \Delta r_{jik} & = r_{ij}-\xi_{IJ}\cdot r_{ik}
    +\begin{eqnarray}\nonumber
    +   \left\{\begin{array}{l}
    +   E = \frac{1}{2}\sum_{i=1}^{i=N}\sum_{j=1}^{j=N}\left[\left(1-\delta_{ij}\right)\cdot U_{IJ}\left(r_{ij}\right)-\left(1-\eta_{ij}\right)\cdot F_{IJ}\left(X_{ij}\right)\cdot V_{IJ}\left(r_{ij}\right)\right] \\
    +   X_{ij} = \sum_{k=i_1,k\neq j}^{i_N}W_{IK}\left(r_{ik}\right)\cdot G_{JIK}\left(\theta_{jik}\right)\cdot P_{JIK}\left(\Delta r_{jik}\right) \\
    +   \Delta r_{jik} = r_{ij}-\xi_{IJ}\cdot r_{ik}
    +   \end{array}\right.
    +\end{eqnarray}
     
     where I, J, K represent species of atoms i, j, and k, :math:`i_1, ...,
     i_N` represents a list of *i*\ 's neighbors, :math:`\delta_{ij}` is a
    @@ -42,111 +48,157 @@ Dirac constant (i.e., :math:`\delta_{ij} = 1` when :math:`i = j`, and
     constant that can be set either to :math:`\eta_{ij} = \delta_{ij}` or
     :math:`\eta_{ij} = 1 - \delta_{ij}` depending on the potential type,
     :math:`U_{IJ}(r_{ij})`, :math:`V_{IJ}(r_{ij})`, :math:`W_{IK}(r_{ik})`
    -are pair functions, :math:`G_{JIK}(\cos(\theta))` is an angular
    -function, :math:`P_{IK}(\Delta r_{jik})` is a function of atomic spacing
    +are pair functions, :math:`G_{JIK}(\cos\theta_{jik})` is an angular
    +function, :math:`P_{JIK}(\Delta r_{jik})` is a function of atomic spacing
     differential :math:`\Delta r_{jik} = r_{ij} - \xi_{IJ} \cdot r_{ik}`
     with :math:`\xi_{IJ}` being a pair-dependent parameter, and
     :math:`F_{IJ}(X_{ij})` is a function of the local environment variable
     :math:`X_{ij}`. This generic potential is fully defined once the
     constants :math:`\eta_{ij}` and :math:`\xi_{IJ}`, and the six functions
     :math:`U_{IJ}(r_{ij})`, :math:`V_{IJ}(r_{ij})`, :math:`W_{IK}(r_{ik})`,
    -:math:`G_{JIK}(\cos(\theta))`, :math:`P_{IK}(\Delta r_{jik})`, and
    -:math:`F_{IJ}(X_{ij})` are given. Note that these six functions are all
    -one dimensional, and hence can be provided in an analytic or tabular
    +:math:`G_{JIK}(\cos\theta_{jik})`, :math:`P_{JIK}(\Delta r_{jik})`, and
    +:math:`F_{IJ}(X_{ij})` are given. Here LAMMPS uses a global
    +parameter :math:`\eta` to represent :math:`\eta_{ij}`. When
    +:math:`\eta = 1`, :math:`\eta_{ij} = 1 - \delta_{ij}`, otherwise
    +:math:`\eta_{ij} = \delta_{ij}`. Additionally, :math:`\eta = 3`
    +indicates that the function :math:`P_{JIK}(\Delta r)` depends on
    +species I, J and K, otherwise :math:`P_{JIK}(\Delta r) = P_{IK}(\Delta r)` 
    +only depends on species I and K. Note that these six functions are all
    +one dimensional, and hence can be provided in a tabular
     form. This allows users to design different potentials solely based on a
    -manipulation of these functions. For instance, the potential reduces to
    -Stillinger-Weber potential (:ref:`SW `) if we set
    +manipulation of these functions. For instance, the potential reduces a
    +Stillinger-Weber potential (:ref:`SW <SW>`) if we set
     
     .. math::
     
    +\begin{eqnarray}\nonumber
        \left\{\begin{array}{l}
    -   \eta_{ij} = \delta_{ij},\xi_{IJ}=0 \\
    -   U_{IJ}\left(r\right)=A_{IJ}\cdot\epsilon_{IJ}\cdot \left(\frac{\sigma_{IJ}}{r}\right)^q\cdot \left[B_{IJ}\cdot \left(\frac{\sigma_{IJ}}{r}\right)^{p-q}-1\right]\cdot exp\left(\frac{\sigma_{IJ}}{r-a_{IJ}\cdot \sigma_{IJ}}\right) \\
    -   V_{IJ}\left(r\right)=\sqrt{\lambda_{IJ}\cdot \epsilon_{IJ}}\cdot exp\left(\frac{\gamma_{IJ}\cdot \sigma_{IJ}}{r-a_{IJ}\cdot \sigma_{IJ}}\right) \\
    -   F_{IJ}\left(X\right)=-X \\
    -   P_{IJ}\left(\Delta r\right)=1 \\
    -   W_{IJ}\left(r\right)=\sqrt{\lambda_{IJ}\cdot \epsilon_{IJ}}\cdot exp\left(\frac{\gamma_{IJ}\cdot \sigma_{IJ}}{r-a_{IJ}\cdot \sigma_{IJ}}\right) \\
    -   G_{JIK}\left(\theta\right)=\left(cos\theta+\frac{1}{3}\right)^2
    +   \eta_{ij} = \delta_{ij} (\eta = 2~or~\eta = 0),\xi_{IJ}=0 \\
    +   U_{IJ}\left(r\right) = A_{IJ}\cdot\epsilon_{IJ}\cdot \left(\frac{\sigma_{IJ}}{r}\right)^q\cdot \left[B_{IJ}\cdot \left(\frac{\sigma_{IJ}}{r}\right)^{p-q}-1\right]\cdot exp\left(\frac{\sigma_{IJ}}{r-a_{IJ}\cdot \sigma_{IJ}}\right) \\
    +   V_{IJ}\left(r\right) = \sqrt{\lambda_{IJ}\cdot \epsilon_{IJ}}\cdot exp\left(\frac{\gamma_{IJ}\cdot \sigma_{IJ}}{r-a_{IJ}\cdot \sigma_{IJ}}\right) \\
    +   F_{IJ}\left(X\right) = -X \\
    +   P_{JIK}\left(\Delta r\right) = P_{IK}\left(\Delta r\right) = 1 \\
    +   W_{IJ}\left(r\right) = \sqrt{\lambda_{IJ}\cdot \epsilon_{IJ}}\cdot exp\left(\frac{\gamma_{IJ}\cdot \sigma_{IJ}}{r-a_{IJ}\cdot \sigma_{IJ}}\right) \\
    +   G_{JIK}\left(\theta\right) = \left(cos\theta+\frac{1}{3}\right)^2
        \end{array}\right.
    +\end{eqnarray}
     
    -The potential reduces to Tersoff types of potential
    -(:ref:`Tersoff ` or :ref:`Albe `) if we set
    +The potential reduces to a Tersoff potential (:ref:`Tersoff <Tersoff>
    +` or :ref:`Albe <poly-Albe>`) if we set
     
     .. math::
     
    +\begin{eqnarray}\nonumber
        \left\{\begin{array}{l}
    -   \eta_{ij}=\delta_{ij},\xi_{IJ}=1 \\
    -   U_{IJ}\left(r\right)=\frac{D_{e,IJ}}{S_{IJ}-1}\cdot exp\left[-\beta_{IJ}\sqrt{2S_{IJ}\left(r-r_{e,IJ}\right)}\right]\cdot f_{c,IJ}\left(r\right) \\
    -   V_{IJ}\left(r\right)=\frac{S_{IJ}\cdot D_{e,IJ}}{S_{IJ}-1}\cdot exp\left[-\beta_{IJ}\sqrt{\frac{2}{S_{IJ}}\left(r-r_{e,IJ}\right)}\right]\cdot f_{c,IJ}\left(r\right) \\
    -   F_{IJ}\left(X\right)=\left(1+X\right)^{-\frac{1}{2}} \\
    -   P_{IJ}\left(\Delta r\right)=exp\left(2\mu_{IK}\cdot \Delta r\right) \\
    -   W_{IJ}\left(r\right)=f_{c,IK}\left(r\right) \\
    -   G_{JIK}\left(\theta\right)=\gamma_{IK}\left[1+\frac{c_{IK}^2}{d_{IK}^2}-\frac{c_{IK}^2}{d_{IK}^2+\left(h_{IK}+cos\theta\right)^2}\right]
    +   \eta_{ij} = \delta_{ij} (\eta = 2~or~\eta = 0),\xi_{IJ}=1 \\
    +   U_{IJ}\left(r\right) = \frac{D_{e,IJ}}{S_{IJ}-1}\cdot exp\left[-\beta_{IJ}\sqrt{2S_{IJ}}\left(r-r_{e,IJ}\right)\right]\cdot f_{c,IJ}\left(r\right) \\
    +   V_{IJ}\left(r\right) = \frac{S_{IJ}\cdot D_{e,IJ}}{S_{IJ}-1}\cdot exp\left[-\beta_{IJ}\sqrt{\frac{2}{S_{IJ}}}\left(r-r_{e,IJ}\right)\right]\cdot f_{c,IJ}\left(r\right) \\
    +   F_{IJ}\left(X\right) = \left(1+X\right)^{-\frac{1}{2}} \\
    +   P_{JIK}\left(\Delta r\right) = P_{IK}\left(\Delta r\right) = exp\left(2\mu_{IK}\cdot \Delta r\right) \\
    +   W_{IJ}\left(r\right) = f_{c,IJ}\left(r\right) \\
    +   G_{JIK}\left(\theta\right) = \gamma_{IK}\left[1+\frac{c_{IK}^2}{d_{IK}^2}-\frac{c_{IK}^2}{d_{IK}^2+\left(h_{IK}+cos\theta\right)^2}\right]
        \end{array}\right.
    +\end{eqnarray}
    +
    +where
     
     .. math::
     
    -   f_{c,IJ}=\left\{\begin{array}{lr}
    -   1, & r\leq r_{s,IJ} \\
    -   \frac{1}{2}+\frac{1}{2} cos \left[\frac{\pi \left(r-r_{s,IJ}\right)}{r_{c,IJ}-r_{s,IJ}}\right], & r_{s,IJ}`) type if we set
    +The potential reduces to a modified Stillinger-Weber potential (:ref:`Zhou <Zhou3>`) if we set
     
     .. math::
     
    +\begin{eqnarray}\nonumber
        \left\{\begin{array}{l}
    -   \eta_{ij}=\delta_{ij},\xi_{IJ}=1 \\
    -   U_{IJ}\left(r\right)=\left\{\begin{array}{lr}
    -   A_{IJ}\cdot exp\left(-\lambda_{1,IJ}\cdot r\right)\cdot f_{c,IJ}\left(r\right), & r\leq r_{s,1,IJ} \\
    -   A_{IJ}\cdot exp\left(-\lambda_{1,IJ}\cdot r\right)\cdot f_{c,IJ}\left(r\right)\cdot f_{c,1,IJ}\left(r\right), & r_{s,1,IJ}`) if we set
    +The potential becomes embedded atom method (:ref:`Daw <poly-Daw>`) if we set
     
     .. math::
     
    +\begin{eqnarray}\nonumber
        \left\{\begin{array}{l}
    -   \eta_{ij}=1-\delta_{ij},\xi_{IJ}=0 \\
    -   U_{IJ}\left(r\right)=\phi_{IJ}\left(r\right) \\
    -   V_{IJ}\left(r\right)=1 \\
    -   F_{II}\left(X\right)=-2F_I\left(X\right) \\
    -   P_{IJ}\left(\Delta r\right)=1 \\
    -   W_{IJ}\left(r\right)=f_{K}\left(r\right) \\
    -   G_{JIK}\left(\theta\right)=1
    +   \eta_{ij} = 1-\delta_{ij} (\eta = 1),\xi_{IJ}=0 \\
    +   U_{IJ}\left(r\right) = \phi_{IJ}\left(r\right) \\
    +   V_{IJ}\left(r\right) = 1 \\
    +   F_{II}\left(X\right) = -2F_I\left(X\right) \\
    +   P_{JIK}\left(\Delta r\right) = P_{IK}\left(\Delta r\right) = 1 \\
    +   W_{IJ}\left(r\right) = f_{J}\left(r\right) \\
    +   G_{JIK}\left(\theta\right) = 1
        \end{array}\right.
    +\end{eqnarray}
     
    -In the embedded atom method case, :math:`\phi_{IJ}(r_{ij})` is the pair
    +In the embedded atom method case, :math:`\phi_{IJ}(r)` is the pair
     energy, :math:`F_I(X)` is the embedding energy, *X* is the local
    -electron density, and :math:`f_K(r)` is the atomic electron density function.
    +electron density, and :math:`f_J(r)` is the atomic electron density function.
    +
    +The potential reduces to another type of Tersoff potential 
    +(:ref:`Zhou <Zhou4>`) if we set
    +
    +.. math::
    +
    +\begin{eqnarray}\nonumber
    +   \left\{\begin{array}{l}
    +   \eta_{ij} = \delta_{ij} (\eta = 3),\xi_{IJ}=1 \\
    +   U_{IJ}\left(r\right) = \frac{D_{e,IJ}}{S_{IJ}-1}\cdot exp\left[-\beta_{IJ}\sqrt{2S_{IJ}}\left(r-r_{e,IJ}\right)\right]\cdot f_{c,IJ}\left(r\right) \cdot T_{IJ}\left(r\right)+V_{ZBL,IJ}\left(r\right)\left[1-T_{IJ}\left(r\right)\right] \\
    +   V_{IJ}\left(r\right) = \frac{S_{IJ}\cdot D_{e,IJ}}{S_{IJ}-1}\cdot exp\left[-\beta_{IJ}\sqrt{\frac{2}{S_{IJ}}}\left(r-r_{e,IJ}\right)\right]\cdot f_{c,IJ}\left(r\right) \cdot T_{IJ}\left(r\right) \\
    +   F_{IJ}\left(X\right) = \left(1+X\right)^{-\frac{1}{2}} \\
    +   P_{JIK}\left(\Delta r\right) = \omega_{JIK} \cdot exp\left(\alpha_{JIK}\cdot \Delta r\right) \\
    +   W_{IJ}\left(r\right) = f_{c,IJ}\left(r\right) \\
    +   G_{JIK}\left(\theta\right) = \gamma_{JIK}\left[1+\frac{c_{JIK}^2}{d_{JIK}^2}-\frac{c_{JIK}^2}{d_{JIK}^2+\left(h_{JIK}+cos\theta\right)^2}\right] \\
    +   T_{IJ}\left(r\right) = \frac{1}{1+exp\left[-b_{f,IJ}\left(r-r_{f,IJ}\right)\right]} \\
    +   V_{ZBL,IJ}\left(r\right) = 14.4 \cdot \frac{Z_I \cdot Z_J}{r}\sum_{k=1}^{4}\mu_k \cdot exp\left[-\nu_k \left(Z_I^{0.23}+Z_J^{0.23}\right) r\right]
    +   \end{array}\right.
    +\end{eqnarray}
    +
    +where :math:`f_{c,IJ}(r)` is the as defined above. This Tersoff potential
    +differs from the one above because the :math:`\P_{JIK}(\Delta r)` function
    +is now dependent on all three species I, J, and K. 
     
     If the tabulated functions are created using the parameters of sw,
     tersoff, and eam potentials, the polymorphic pair style will produce
    @@ -157,37 +209,36 @@ corresponding tersoff and eam pair styles. However, due to a different
     partition of global properties to atom properties, the polymorphic
     pair style will produce different atom properties (energies and
     stresses) as the sw pair style. This does not mean that polymorphic
    -pair style is different from the sw pair style in this case. It just
    -means that the definitions of the atom energies and atom stresses are
    -different.
    +pair style is different from the sw pair style. It just means that the
    +definitions of the atom energies and atom stresses are different.
     
    -Only a single pair_coeff command is used with the polymorphic style
    -which specifies an potential file for all needed elements. These are
    -mapped to LAMMPS atom types by specifying N additional arguments after
    -the filename in the pair_coeff command, where N is the number of
    -LAMMPS atom types:
    +Only a single pair_coeff command is used with the polymorphic pair
    +style which specifies an potential file for all needed elements.
    +These are mapped to LAMMPS atom types by specifying N additional
    +arguments after the filename in the pair_coeff command, where N
    +is the number of LAMMPS atom types:
     
     * filename
     * N element names = mapping of Tersoff elements to atom types
     
     See the pair_coeff doc page for alternate ways to specify the path for
    -the potential file.  Several files for polymorphic potentials are
    -included in the potentials directory of the LAMMPS distribution.  They
    +the potential file. Several files for polymorphic potentials are
    +included in the potentials directory of the LAMMPS distribution. They
     have a "poly" suffix.
     
    -As an example, imagine the SiC_tersoff.poly file has tabulated
    -functions for Si-C tersoff potential. If your LAMMPS simulation has 4
    -atoms types and you want the 1st 3 to be Si, and the 4th to be C, you
    +As an example, imagine the GaN_tersoff.poly file has tabulated
    +functions for Ga-N tersoff potential. If your LAMMPS simulation has 4
    +atoms types and you want the 1st 3 to be Ga, and the 4th to be N, you
     would use the following pair_coeff command:
     
     .. code-block:: LAMMPS
     
    -   pair_coeff * * SiC_tersoff.poly Si Si Si C
    +   pair_coeff * * GaN_tersoff.poly Ga Ga Ga N
     
     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 the
    -Si element in the polymorphic file. The final C argument maps LAMMPS
    -atom type 4 to the C element in the polymorphic file. If a mapping
    +types. The first three Ga arguments map LAMMPS atom types 1,2,3 to the
    +Ga element in the polymorphic file. The final N argument maps LAMMPS
    +atom type 4 to the N element in the polymorphic file. If a mapping
     value is specified as NULL, the mapping is not performed. This can be
     used when an polymorphic potential is used as part of the hybrid pair
     style. The NULL values are placeholders for atom types that will be
    @@ -203,67 +254,79 @@ and are ignored by LAMMPS. The next line lists two numbers:
        ntypes :math:`\eta`
     
     Here ntypes represent total number of species defined in the potential
    -file, and :math:`\eta = 0` or 1. The number ntypes must equal the total
    -number of different species defined in the pair_coeff command. When
    -:math:`\eta = 1`, :math:\eta_{ij}` defined in the potential functions
    -above is set to :math:`1 - \delta_{ij}`, otherwise :math:`\eta_{ij}` is
    -set to :math:`\delta_{ij}`. The next ntypes lines each lists two numbers
    -and a character string representing atomic number, atomic mass, and name
    -of the species of the ntypes elements:
    +file, :math:`\eta = 1` reduces to embedded atom method, :math:`\eta = 3`
    +assumes three spcies dependent :math:`P_{JIK}(\Delta r)` function, and
    +all other :math:`\eta` assumes two species dependent
    +:math:`P_{JK}(\Delta r)` function. The number ntypes must equal the total
    +number of different species defined in the pair_coeff command. The next
    +ntypes lines each lists two numbers and a character string representing
    +atomic number, atomic mass, and name of the species of the ntypes elements:
     
     .. parsed-literal::
     
    -   atomic_number atomic-mass element (1)
    -   atomic_number atomic-mass element (2)
    +   atomic-number atomic-mass element-name(1)
    +   atomic-number atomic-mass element-name(2)
        ...
    -   atomic_number atomic-mass element (ntypes)
    +   atomic-number atomic-mass element-name(ntypes)
    +
    +The next line contains four numbers:
    +
    +.. parsed-literal::
    +
    +   nr ntheta nx xmax
    +
    +Here nr is total number of tabular points for radial functions U, V, W, P,
    +ntheta is total number of tabular points for the angular function G, nx is
    +total number of tabular points for the function F, xmax is a maximum
    +value of the argument of function F. Note that the pair functions
    +:math:`U_{IJ}(r)`, :math:`V_{IJ}(r)`, :math:`W_{IJ}(r)` are uniformly
    +tabulated between 0 and cutoff distance of the IJ pair,
    +:math:`G_{JIK}(\theta)` is uniformly tabulated between -1 and 1,
    +:math:`P_{JIK}(\Delta r)` is uniformly tabulated between -rcmax
    +and rcmax where rcmax is the maximum cutoff distance of all pairs, and
    +:math:`F_{IJ}(X)` is uniformly tabulated between 0 and xmax. Linear
    +extrapolation is assumed if actual simulations exceed these ranges. 
     
     The next ntypes\*(ntypes+1)/2 lines contain two numbers:
     
     .. parsed-literal::
     
    -   cut :math:`xi` (1)
    -   cut :math:`xi` (2)
    +   cut :math:`xi`(1)
    +   cut :math:`xi`(2)
        ...
    -   cut :math:`xi` (ntypes\*(ntypes+1)/2)
    +   cut :math:`xi`(ntypes\*(ntypes+1)/2)
     
     Here cut means the cutoff distance of the pair functions, :math:`\xi` is
     the same as defined in the potential functions above. The
     ntypes\*(ntypes+1)/2 lines are related to the pairs according to the
    -sequence of first ii (self) pairs, i = 1, 2, ..., ntypes, and then then
    +sequence of first ii (self) pairs, i = 1, 2, ..., ntypes, and then
     ij (cross) pairs, i = 1, 2, ..., ntypes-1, and j = i+1, i+2, ..., ntypes
     (i.e., the sequence of the ij pairs follows 11, 22, ..., 12, 13, 14,
     ..., 23, 24, ...).
     
    -The final blocks of the potential file are the U, V, W, P, G, and F
    +In the final blocks of the potential file, U, V, W, P, G, and F
     functions are listed sequentially. First, U functions are given for
     each of the ntypes\*(ntypes+1)/2 pairs according to the sequence
     described above. For each of the pairs, nr values are listed. Next,
    -similar arrays are given for V, W, and P functions. Then G functions
    -are given for all the ntypes\*ntypes\*ntypes ijk triplets in a natural
    -sequence i from 1 to ntypes, j from 1 to ntypes, and k from 1 to
    -ntypes (i.e., ijk = 111, 112, 113, ..., 121, 122, 123 ..., 211, 212,
    -...). Each of the ijk functions contains ng values. Finally, the F
    -functions are listed for all ntypes\*(ntypes+1)/2 pairs, each
    -containing nx values. Either analytic or tabulated functions can be
    -specified. Currently, constant, exponential, sine and cosine analytic
    -functions are available which are specified with: constant c1 , where
    -f(x) = c1 exponential c1 c2 , where f(x) = c1 exp(c2\*x) sine c1 c2 ,
    -where f(x) = c1 sin(c2\*x) cos c1 c2 , where f(x) = c1 cos(c2\*x)
    -Tabulated functions are specified by spline n x1 x2, where n=number of
    -point, (x1,x2)=range and then followed by n values evaluated uniformly
    -over these argument ranges.  The valid argument ranges of the
    -functions are between 0 <= r <= cut for the U(r), V(r), W(r)
    -functions, -cutmax <= delta_r <= cutmax for the P(delta_r) functions,
    --1 <= :math:`\cos\theta` <= 1 for the G(:math:`\cos\theta`) functions,
    -and 0 <= X <= maxX for the F(X) functions.
    +similar arrays are given for V and W functions. If P functions
    +depend only on pair species, i.e., :math:`\eta \neq 3`, then P
    +functions are also listed the same way the next. If P functions
    +depend on three species, i.e., :math:`\eta = 3`, then P functions
    +are listed for all the ntypes*ntypes*ntypes IJK triplets in a
    +natural sequence I from 1 to ntypes, J from 1 to ntypes, and K from
    +1 to ntypes (i.e., IJK = 111, 112, 113, ..., 121, 122, 123 ..., 211,
    +212, ...). Next, G functions are listed for all the ntypes*ntypes*ntypes
    +IJK triplets similarly. For each of the G functions, ntheta values
    +are listed. Finally, F functions are listed for all the
    +ntypes*(ntypes+1)/2 pairs in the same sequence as described above.
    +For each of the F functions, nx values are listed.
     
     **Mixing, shift, table tail correction, restart**\ :
     
    -This pair styles does not support the :doc:`pair_modify `
    +This pair styles does not support the :doc:`pair_modify <pair_modify>`
     shift, table, and tail options.
     
    -This pair style does not write their information to :doc:`binary restart files `, since it is stored in potential files. Thus, you
    +This pair style does not write their information to :doc:`binary restart files <restart>`, since it is stored in potential files. Thus, you
     need to re-specify the pair_style and pair_coeff commands in an input
     script that reads a restart file.
     
    @@ -277,31 +340,34 @@ input script. If using read_data, atomic masses must be defined in the
     atomic structure data file.
     
     This pair style is part of the MANYBODY package. It is only enabled if
    -LAMMPS was built with that package. See the :doc:`Build package ` doc page for more info.
    +LAMMPS was built with that package. See the :doc:`Build package <Build_package>` doc page for more info.
     
    -This pair potential requires the :doc:`newtion ` setting to be
    +This pair potential requires the :doc:`newtion <newton>` setting to be
     "on" for pair interactions.
     
     The potential files provided with LAMMPS (see the potentials
    -directory) are parameterized for metal :doc:`units `. You can use
    +directory) are parameterized for metal :doc:`units <units>`. You can use
     any LAMMPS units, but you would need to create your own potential
     files.
     
     Related commands
     """"""""""""""""
     
    -:doc:`pair_coeff `
    +:doc:`pair_coeff <pair_coeff>`
     
     ----------
     
     .. _Zhou3:
     
    -**(Zhou)** X. W. Zhou, M. E. Foster, R. E. Jones, P. Yang, H. Fan, and
    -F. P. Doty, J. Mater. Sci. Res., 4, 15 (2015).
    +**(Zhou)** X. W. Zhou, M. E. Foster, R. E. Jones, P. Yang, H. Fan, and F. P. Doty, J. Mater. Sci. Res., 4, 15 (2015).
    +
    +.. _Zhou4:
    +
    +**(Zhou)** X. W. Zhou, M. E. Foster, J. A. Ronevich, and C. W. San Marchi, J. Comp. Chem., 41, 1299 (2020).
     
     .. _SW:
     
    -**(SW)** F. H. Stillinger-Weber, and T. A. Weber, Phys. Rev. B, 31, 5262 (1985).
    +**(SW)** F. H. Stillinger, and T. A. Weber, Phys. Rev. B, 31, 5262 (1985).
     
     .. _Tersoff:
     
    @@ -309,8 +375,7 @@ F. P. Doty, J. Mater. Sci. Res., 4, 15 (2015).
     
     .. _poly-Albe:
     
    -**(Albe)** K. Albe, K. Nordlund, J. Nord, and A. Kuronen, Phys. Rev. B,
    -66, 035205 (2002).
    +**(Albe)** K. Albe, K. Nordlund, J. Nord, and A. Kuronen, Phys. Rev. B, 66, 035205 (2002).
     
     .. _Wang3:
     
    @@ -319,3 +384,4 @@ F. P. Doty, J. Mater. Sci. Res., 4, 15 (2015).
     .. _poly-Daw:
     
     **(Daw)** M. S. Daw, and M. I. Baskes, Phys. Rev. B, 29, 6443 (1984).
    +
    diff --git a/potentials/FeCH_BOP_I.poly b/potentials/FeCH_BOP_I.poly new file mode 100644 index 0000000000..87dea13df5 --- /dev/null +++ b/potentials/FeCH_BOP_I.poly @@ -0,0 +1,33617 @@ +# DATE 2018-12-18 CONTRIBUTOR: X. W. Zhou, xzhou@sandia.gov CITATION: X. W. Zhou, +# M. E. Foster, J. A. Ronevich, and C. W San Marchi, J. Comp. Chem., 41, 1299 (2020). +# M. Muller, P. Erhart, and K. Albe, J. Phys.: Condens. Matter, 19, 326220 (2007). +# D. W. Brenner, Phys. Rev. B, 42, 9458 (1990). N. Juslin et al, J. Appl. Phys., +# 98, 123520 (2005). P. Kuopanportti et al, Comp. Mater. Sci., 111, 525 (2016). +# K. O. E. Hendriksson, and K. Nordlund, Phys. Rev. B, 79, 144107 (2009). + 3 3 + 26. 5.58500000e+01 Fe + 6. 1.20100000e+01 C + 1. 1.01000000e+00 H + 2000 2000 4000 2.00000000e+02 + 3.35000000e+00 1.00000000e+00 + 2.00000000e+00 1.00000000e+00 + 1.70000000e+00 1.00000000e+00 + 2.70000000e+00 1.00000000e+00 + 2.69660000e+00 1.00000000e+00 + 1.80000000e+00 1.00000000e+00 + 9.05461601e+06 5.36400429e+06 2.63461103e+06 1.72573643e+06 1.27196396e+06 + 1.00021130e+06 8.19451798e+05 6.90674672e+05 5.94375068e+05 5.19717409e+05 + 4.60200739e+05 4.11688423e+05 3.71423001e+05 3.37495720e+05 3.08543417e+05 + 2.83566642e+05 2.61815992e+05 2.42718557e+05 2.25828890e+05 2.10795455e+05 + 1.97337145e+05 1.85226505e+05 1.74277539e+05 1.64336688e+05 1.55276068e+05 + 1.46988336e+05 1.39382733e+05 1.32382007e+05 1.25920006e+05 1.19939754e+05 + 1.14391924e+05 1.09233599e+05 1.04427270e+05 9.99400149e+04 9.57428218e+04 + 9.18100283e+04 8.81188552e+04 8.46490156e+04 8.13823855e+04 7.83027252e+04 + 7.53954428e+04 7.26473922e+04 7.00467000e+04 6.75826165e+04 6.52453872e+04 + 6.30261416e+04 6.09167962e+04 5.89099701e+04 5.69989113e+04 5.51774319e+04 + 5.34398509e+04 5.17809444e+04 5.01959007e+04 4.86802814e+04 4.72299860e+04 + 4.58412213e+04 4.45104728e+04 4.32344809e+04 4.20102176e+04 4.08348673e+04 + 3.97058085e+04 3.86205977e+04 3.75769545e+04 3.65727491e+04 3.56059895e+04 + 3.46748114e+04 3.37774676e+04 3.29123197e+04 3.20778299e+04 3.12725529e+04 + 3.04951300e+04 2.97442821e+04 2.90188046e+04 2.83175618e+04 2.76394824e+04 + 2.69835548e+04 2.63488233e+04 2.57343842e+04 2.51393827e+04 2.45630092e+04 + 2.40044967e+04 2.34631182e+04 2.29381839e+04 2.24290391e+04 2.19350619e+04 + 2.14556614e+04 2.09902755e+04 2.05383695e+04 2.00994344e+04 1.96729855e+04 + 1.92585606e+04 1.88557194e+04 1.84640414e+04 1.80831257e+04 1.77125894e+04 + 1.73520664e+04 1.70012072e+04 1.66596774e+04 1.63271571e+04 1.60033402e+04 + 1.56879336e+04 1.53806565e+04 1.50812401e+04 1.47894263e+04 1.45049679e+04 + 1.42276276e+04 1.39571778e+04 1.36933997e+04 1.34360835e+04 1.31850274e+04 + 1.29400376e+04 1.27009275e+04 1.24675180e+04 1.22396366e+04 1.20171172e+04 + 1.17998000e+04 1.15875312e+04 1.13801624e+04 1.11775509e+04 1.09795589e+04 + 1.07860536e+04 1.05969071e+04 1.04119957e+04 1.02312003e+04 1.00544059e+04 + 9.88150120e+03 9.71237907e+03 9.54693582e+03 9.38507131e+03 9.22668873e+03 + 9.07169452e+03 8.91999818e+03 8.77151221e+03 8.62615193e+03 8.48383542e+03 + 8.34448337e+03 8.20801901e+03 8.07436802e+03 7.94345839e+03 7.81522038e+03 + 7.68958642e+03 7.56649102e+03 7.44587069e+03 7.32766388e+03 7.21181093e+03 + 7.09825393e+03 6.98693673e+03 6.87780486e+03 6.77080544e+03 6.66588714e+03 + 6.56300015e+03 6.46209609e+03 6.36312798e+03 6.26605019e+03 6.17081839e+03 + 6.07738950e+03 5.98572168e+03 5.89577424e+03 5.80750762e+03 5.72088339e+03 + 5.63586415e+03 5.55241353e+03 5.47049616e+03 5.39007764e+03 5.31112448e+03 + 5.23360410e+03 5.15748479e+03 5.08273568e+03 5.00932671e+03 4.93722863e+03 + 4.86641295e+03 4.79685190e+03 4.72851846e+03 4.66138630e+03 4.59542975e+03 + 4.53062382e+03 4.46694413e+03 4.40436693e+03 4.34286908e+03 4.28242800e+03 + 4.22302168e+03 4.16462866e+03 4.10722802e+03 4.05079934e+03 3.99532269e+03 + 3.94077867e+03 3.88714830e+03 3.83441308e+03 3.78255498e+03 3.73155636e+03 + 3.68140002e+03 3.63206918e+03 3.58354745e+03 3.53581881e+03 3.48886764e+03 + 3.44267867e+03 3.39723699e+03 3.35252804e+03 3.30853758e+03 3.26525173e+03 + 3.22265689e+03 3.18073979e+03 3.13948747e+03 3.09888724e+03 3.05892672e+03 + 3.01959379e+03 2.98087661e+03 2.94276360e+03 2.90524344e+03 2.86830507e+03 + 2.83193765e+03 2.79613060e+03 2.76087356e+03 2.72615640e+03 2.69196921e+03 + 2.65830228e+03 2.62514615e+03 2.59249151e+03 2.56032930e+03 2.52865060e+03 + 2.49744673e+03 2.46670917e+03 2.43642957e+03 2.40659978e+03 2.37721180e+03 + 2.34825782e+03 2.31973016e+03 2.29162133e+03 2.26392397e+03 2.23663090e+03 + 2.20973506e+03 2.18322956e+03 2.15710762e+03 2.13136263e+03 2.10598809e+03 + 2.08097764e+03 2.05632506e+03 2.03202423e+03 2.00806917e+03 1.98445402e+03 + 1.96117302e+03 1.93822056e+03 1.91559109e+03 1.89327921e+03 1.87127961e+03 + 1.84958709e+03 1.82819654e+03 1.80710296e+03 1.78630146e+03 1.76578720e+03 + 1.74555549e+03 1.72560169e+03 1.70592126e+03 1.68650975e+03 1.66736279e+03 + 1.64847611e+03 1.62984549e+03 1.61146682e+03 1.59333605e+03 1.57544921e+03 + 1.55780240e+03 1.54039180e+03 1.52321367e+03 1.50626431e+03 1.48954012e+03 + 1.47303755e+03 1.45675312e+03 1.44068341e+03 1.42482506e+03 1.40917478e+03 + 1.39372935e+03 1.37848557e+03 1.36344035e+03 1.34859060e+03 1.33393334e+03 + 1.31946560e+03 1.30518449e+03 1.29108716e+03 1.27717082e+03 1.26343271e+03 + 1.24987014e+03 1.23648046e+03 1.22326106e+03 1.21020939e+03 1.19732293e+03 + 1.18459921e+03 1.17203582e+03 1.15963035e+03 1.14738048e+03 1.13528390e+03 + 1.12333834e+03 1.11154159e+03 1.09989146e+03 1.08838579e+03 1.07702249e+03 + 1.06579947e+03 1.05471469e+03 1.04376616e+03 1.03295189e+03 1.02226995e+03 + 1.01171844e+03 1.00129547e+03 9.90999221e+02 9.80827866e+02 9.70779627e+02 + 9.60852753e+02 9.51045522e+02 9.41356240e+02 9.31783240e+02 9.22324884e+02 + 9.12979560e+02 9.03745682e+02 8.94621693e+02 8.85606056e+02 8.76697264e+02 + 8.67893832e+02 8.59194298e+02 8.50597227e+02 8.42101203e+02 8.33704837e+02 + 8.25406759e+02 8.17205622e+02 8.09100100e+02 8.01088890e+02 7.93170707e+02 + 7.85344289e+02 7.77608391e+02 7.69961790e+02 7.62403281e+02 7.54931679e+02 + 7.47545817e+02 7.40244545e+02 7.33026733e+02 7.25891267e+02 7.18837051e+02 + 7.11863007e+02 7.04968070e+02 6.98151197e+02 6.91411355e+02 6.84747531e+02 + 6.78158727e+02 6.71643958e+02 6.65202257e+02 6.58832668e+02 6.52534254e+02 + 6.46306089e+02 6.40147261e+02 6.34056873e+02 6.28034042e+02 6.22077896e+02 + 6.16187577e+02 6.10362242e+02 6.04601056e+02 5.98903202e+02 5.93267870e+02 + 5.87694264e+02 5.82181602e+02 5.76729110e+02 5.71336026e+02 5.66001601e+02 + 5.60725097e+02 5.55505783e+02 5.50342944e+02 5.45235871e+02 5.40183867e+02 + 5.35186247e+02 5.30242332e+02 5.25351455e+02 5.20512960e+02 5.15726197e+02 + 5.10990527e+02 5.06305322e+02 5.01669960e+02 4.97083829e+02 4.92546326e+02 + 4.88056856e+02 4.83614833e+02 4.79219679e+02 4.74870824e+02 4.70567705e+02 + 4.66309770e+02 4.62096471e+02 4.57927271e+02 4.53801637e+02 4.49719046e+02 + 4.45678982e+02 4.41680935e+02 4.37724403e+02 4.33808890e+02 4.29933908e+02 + 4.26098976e+02 4.22303617e+02 4.18547364e+02 4.14829753e+02 4.11150329e+02 + 4.07508641e+02 4.03904247e+02 4.00336708e+02 3.96805592e+02 3.93310474e+02 + 3.89850933e+02 3.86426555e+02 3.83036929e+02 3.79681654e+02 3.76360330e+02 + 3.73072565e+02 3.69817971e+02 3.66596165e+02 3.63406770e+02 3.60249413e+02 + 3.57123727e+02 3.54029350e+02 3.50965922e+02 3.47933091e+02 3.44930508e+02 + 3.41957830e+02 3.39014715e+02 3.36100830e+02 3.33215844e+02 3.30359429e+02 + 3.27531263e+02 3.24731029e+02 3.21958412e+02 3.19213102e+02 3.16494793e+02 + 3.13803184e+02 3.11137975e+02 3.08498872e+02 3.05885585e+02 3.03297826e+02 + 3.00735313e+02 2.98197764e+02 2.95684905e+02 2.93196463e+02 2.90732167e+02 + 2.88291753e+02 2.85874957e+02 2.83481521e+02 2.81111187e+02 2.78763704e+02 + 2.76438822e+02 2.74136293e+02 2.71855875e+02 2.69597327e+02 2.67360411e+02 + 2.65144894e+02 2.62950542e+02 2.60777127e+02 2.58624423e+02 2.56492207e+02 + 2.54380259e+02 2.52288359e+02 2.50216294e+02 2.48163850e+02 2.46130818e+02 + 2.44116990e+02 2.42122161e+02 2.40146129e+02 2.38188694e+02 2.36249657e+02 + 2.34328824e+02 2.32426002e+02 2.30541001e+02 2.28673631e+02 2.26823707e+02 + 2.24991045e+02 2.23175464e+02 2.21376784e+02 2.19594827e+02 2.17829418e+02 + 2.16080385e+02 2.14347555e+02 2.12630760e+02 2.10929833e+02 2.09244609e+02 + 2.07574923e+02 2.05920616e+02 2.04281526e+02 2.02657498e+02 2.01048375e+02 + 1.99454003e+02 1.97874230e+02 1.96308905e+02 1.94757881e+02 1.93221009e+02 + 1.91698145e+02 1.90189145e+02 1.88693868e+02 1.87212173e+02 1.85743920e+02 + 1.84288974e+02 1.82847199e+02 1.81418460e+02 1.80002626e+02 1.78599565e+02 + 1.77209147e+02 1.75831246e+02 1.74465733e+02 1.73112485e+02 1.71771377e+02 + 1.70442287e+02 1.69125095e+02 1.67819680e+02 1.66525924e+02 1.65243711e+02 + 1.63972925e+02 1.62713451e+02 1.61465177e+02 1.60227990e+02 1.59001781e+02 + 1.57786440e+02 1.56581858e+02 1.55387929e+02 1.54204547e+02 1.53031608e+02 + 1.51869008e+02 1.50716645e+02 1.49574417e+02 1.48442226e+02 1.47319971e+02 + 1.46207555e+02 1.45104882e+02 1.44011854e+02 1.42928379e+02 1.41854362e+02 + 1.40789710e+02 1.39734332e+02 1.38688137e+02 1.37651036e+02 1.36622940e+02 + 1.35603760e+02 1.34593412e+02 1.33591807e+02 1.32598863e+02 1.31614494e+02 + 1.30638617e+02 1.29671151e+02 1.28712014e+02 1.27761125e+02 1.26818405e+02 + 1.25883774e+02 1.24957157e+02 1.24038474e+02 1.23127650e+02 1.22224609e+02 + 1.21329277e+02 1.20441579e+02 1.19561443e+02 1.18688797e+02 1.17823568e+02 + 1.16965686e+02 1.16115081e+02 1.15271684e+02 1.14435425e+02 1.13606238e+02 + 1.12784054e+02 1.11968807e+02 1.11160433e+02 1.10358864e+02 1.09564038e+02 + 1.08775890e+02 1.07994357e+02 1.07219377e+02 1.06450888e+02 1.05688829e+02 + 1.04933139e+02 1.04183758e+02 1.03440628e+02 1.02703689e+02 1.01972884e+02 + 1.01248155e+02 1.00529444e+02 9.98166971e+01 9.91098568e+01 9.84088685e+01 + 9.77136777e+01 9.70242302e+01 9.63404726e+01 9.56623521e+01 9.49898161e+01 + 9.43228130e+01 9.36612913e+01 9.30052002e+01 9.23544895e+01 9.17091095e+01 + 9.10690107e+01 9.04341445e+01 8.98044625e+01 8.91799170e+01 8.85604607e+01 + 8.79460467e+01 8.73366286e+01 8.67321606e+01 8.61325973e+01 8.55378935e+01 + 8.49480049e+01 8.43628874e+01 8.37824972e+01 8.32067912e+01 8.26357266e+01 + 8.20692610e+01 8.15073526e+01 8.09499598e+01 8.03970415e+01 7.98485571e+01 + 7.93044662e+01 7.87647290e+01 7.82293059e+01 7.76981580e+01 7.71712464e+01 + 7.66485329e+01 7.61299794e+01 7.56155485e+01 7.51052029e+01 7.45989058e+01 + 7.40966207e+01 7.35983115e+01 7.31039424e+01 7.26134780e+01 7.21268833e+01 + 7.16441236e+01 7.11651643e+01 7.06899717e+01 7.02185118e+01 6.97507513e+01 + 6.92866573e+01 6.88261968e+01 6.83693376e+01 6.79160476e+01 6.74662949e+01 + 6.70200480e+01 6.65772759e+01 6.61379476e+01 6.57020326e+01 6.52695006e+01 + 6.48403216e+01 6.44144660e+01 6.39919043e+01 6.35726074e+01 6.31565465e+01 + 6.27436931e+01 6.23340188e+01 6.19274956e+01 6.15240959e+01 6.11237920e+01 + 6.07265569e+01 6.03323636e+01 5.99411853e+01 5.95529958e+01 5.91677686e+01 + 5.87854781e+01 5.84060984e+01 5.80296042e+01 5.76559702e+01 5.72851715e+01 + 5.69171834e+01 5.65519814e+01 5.61895413e+01 5.58298391e+01 5.54728509e+01 + 5.51185533e+01 5.47669228e+01 5.44179365e+01 5.40715713e+01 5.37278046e+01 + 5.33866140e+01 5.30479772e+01 5.27118722e+01 5.23782772e+01 5.20471704e+01 + 5.17185306e+01 5.13923365e+01 5.10685671e+01 5.07472016e+01 5.04282193e+01 + 5.01115998e+01 4.97973230e+01 4.94853687e+01 4.91757171e+01 4.88683486e+01 + 4.85632436e+01 4.82603829e+01 4.79597473e+01 4.76613179e+01 4.73650760e+01 + 4.70710029e+01 4.67790803e+01 4.64892899e+01 4.62016137e+01 4.59160336e+01 + 4.56325321e+01 4.53510916e+01 4.50716945e+01 4.47943238e+01 4.45189623e+01 + 4.42455931e+01 4.39741994e+01 4.37047647e+01 4.34372724e+01 4.31717063e+01 + 4.29080503e+01 4.26462882e+01 4.23864043e+01 4.21283829e+01 4.18722084e+01 + 4.16178654e+01 4.13653386e+01 4.11146129e+01 4.08656732e+01 4.06185049e+01 + 4.03730930e+01 4.01294231e+01 3.98874807e+01 3.96472515e+01 3.94087213e+01 + 3.91718761e+01 3.89367019e+01 3.87031849e+01 3.84713115e+01 3.82410682e+01 + 3.80124414e+01 3.77854180e+01 3.75599847e+01 3.73361285e+01 3.71138365e+01 + 3.68930959e+01 3.66738939e+01 3.64562179e+01 3.62400556e+01 3.60253946e+01 + 3.58122225e+01 3.56005273e+01 3.53902971e+01 3.51815197e+01 3.49741836e+01 + 3.47682769e+01 3.45637881e+01 3.43607057e+01 3.41590183e+01 3.39587147e+01 + 3.37597837e+01 3.35622142e+01 3.33659952e+01 3.31711159e+01 3.29775655e+01 + 3.27853334e+01 3.25944089e+01 3.24047816e+01 3.22164410e+01 3.20293769e+01 + 3.18435792e+01 3.16590376e+01 3.14757421e+01 3.12936829e+01 3.11128501e+01 + 3.09332339e+01 3.07548247e+01 3.05776129e+01 3.04015890e+01 3.02267437e+01 + 3.00530675e+01 2.98805512e+01 2.97091858e+01 2.95389621e+01 2.93698711e+01 + 2.92019039e+01 2.90350517e+01 2.88693057e+01 2.87046574e+01 2.85410979e+01 + 2.83786189e+01 2.82172119e+01 2.80568686e+01 2.78975805e+01 2.77393396e+01 + 2.75821376e+01 2.74259665e+01 2.72708183e+01 2.71166850e+01 2.69635588e+01 + 2.68114319e+01 2.66602966e+01 2.65101451e+01 2.63609700e+01 2.62127637e+01 + 2.60655187e+01 2.59192276e+01 2.57738831e+01 2.56294781e+01 2.54860051e+01 + 2.53434572e+01 2.52018273e+01 2.50611083e+01 2.49212933e+01 2.47823754e+01 + 2.46443478e+01 2.45072037e+01 2.43709365e+01 2.42355394e+01 2.41010058e+01 + 2.39673294e+01 2.38345034e+01 2.37025216e+01 2.35713776e+01 2.34410651e+01 + 2.33115778e+01 2.31829095e+01 2.30550541e+01 2.29280055e+01 2.28017576e+01 + 2.26763044e+01 2.25516401e+01 2.24277587e+01 2.23046545e+01 2.21823215e+01 + 2.20607542e+01 2.19399467e+01 2.18198935e+01 2.17005890e+01 2.15820277e+01 + 2.14642040e+01 2.13471125e+01 2.12307479e+01 2.11151047e+01 2.10001777e+01 + 2.08859616e+01 2.07724512e+01 2.06596413e+01 2.05475268e+01 2.04361027e+01 + 2.03253638e+01 2.02153052e+01 2.01059220e+01 1.99972092e+01 1.98891619e+01 + 1.97817754e+01 1.96750448e+01 1.95689655e+01 1.94635326e+01 1.93587416e+01 + 1.92545877e+01 1.91510665e+01 1.90481733e+01 1.89459038e+01 1.88442533e+01 + 1.87432174e+01 1.86427918e+01 1.85429721e+01 1.84437540e+01 1.83451332e+01 + 1.82471054e+01 1.81496665e+01 1.80528122e+01 1.79565384e+01 1.78608409e+01 + 1.77657158e+01 1.76711590e+01 1.75771664e+01 1.74837341e+01 1.73908582e+01 + 1.72985347e+01 1.72067597e+01 1.71155295e+01 1.70248401e+01 1.69346879e+01 + 1.68450691e+01 1.67559799e+01 1.66674167e+01 1.65793758e+01 1.64918535e+01 + 1.64048464e+01 1.63183507e+01 1.62323630e+01 1.61468798e+01 1.60618976e+01 + 1.59774129e+01 1.58934223e+01 1.58099224e+01 1.57269098e+01 1.56443812e+01 + 1.55623334e+01 1.54807629e+01 1.53996665e+01 1.53190411e+01 1.52388833e+01 + 1.51591901e+01 1.50799582e+01 1.50011845e+01 1.49228660e+01 1.48449995e+01 + 1.47675820e+01 1.46906104e+01 1.46140818e+01 1.45379931e+01 1.44623414e+01 + 1.43871239e+01 1.43123374e+01 1.42379793e+01 1.41640465e+01 1.40905364e+01 + 1.40174459e+01 1.39447724e+01 1.38725131e+01 1.38006652e+01 1.37292261e+01 + 1.36581928e+01 1.35875629e+01 1.35173336e+01 1.34475023e+01 1.33780664e+01 + 1.33090232e+01 1.32403701e+01 1.31721047e+01 1.31042244e+01 1.30367265e+01 + 1.29696088e+01 1.29028685e+01 1.28365034e+01 1.27705109e+01 1.27048887e+01 + 1.26396342e+01 1.25747452e+01 1.25102192e+01 1.24460540e+01 1.23822471e+01 + 1.23187962e+01 1.22556992e+01 1.21929536e+01 1.21305572e+01 1.20685078e+01 + 1.20068031e+01 1.19454410e+01 1.18844192e+01 1.18237356e+01 1.17633880e+01 + 1.17033742e+01 1.16436922e+01 1.15843398e+01 1.15253150e+01 1.14666156e+01 + 1.14082396e+01 1.13501849e+01 1.12924496e+01 1.12350315e+01 1.11779288e+01 + 1.11211393e+01 1.10646612e+01 1.10084925e+01 1.09526312e+01 1.08970754e+01 + 1.08418233e+01 1.07868728e+01 1.07322221e+01 1.06778695e+01 1.06238129e+01 + 1.05700505e+01 1.05165806e+01 1.04634013e+01 1.04105108e+01 1.03579073e+01 + 1.03055891e+01 1.02535544e+01 1.02018014e+01 1.01503283e+01 1.00991336e+01 + 1.00482155e+01 9.99757219e+00 9.94720209e+00 9.89710351e+00 9.84727478e+00 + 9.79771426e+00 9.74842031e+00 9.69939130e+00 9.65062562e+00 9.60212167e+00 + 9.55387786e+00 9.50589262e+00 9.45816438e+00 9.41069157e+00 9.36347267e+00 + 9.31650613e+00 9.26979044e+00 9.22332408e+00 9.17710556e+00 9.13113337e+00 + 9.08540606e+00 9.03992214e+00 8.99468017e+00 8.94967869e+00 8.90491626e+00 + 8.86039147e+00 8.81610289e+00 8.77204912e+00 8.72822876e+00 8.68464043e+00 + 8.64128274e+00 8.59815434e+00 8.55525386e+00 8.51257996e+00 8.47013129e+00 + 8.42790653e+00 8.38590436e+00 8.34412347e+00 8.30256256e+00 8.26122033e+00 + 8.22009551e+00 8.17918681e+00 8.13849297e+00 8.09801274e+00 8.05774487e+00 + 8.01768811e+00 7.97784124e+00 7.93820303e+00 7.89877228e+00 7.85954777e+00 + 7.82052831e+00 7.78171270e+00 7.74309977e+00 7.70468835e+00 7.66647727e+00 + 7.62846537e+00 7.59065151e+00 7.55303453e+00 7.51561332e+00 7.47838674e+00 + 7.44135367e+00 7.40451301e+00 7.36786365e+00 7.33140449e+00 7.29513445e+00 + 7.25905245e+00 7.22315741e+00 7.18744826e+00 7.15192396e+00 7.11658343e+00 + 7.08142564e+00 7.04644956e+00 7.01165414e+00 6.97703837e+00 6.94260122e+00 + 6.90834169e+00 6.87425877e+00 6.84035146e+00 6.80661878e+00 6.77305973e+00 + 6.73967334e+00 6.70645864e+00 6.67341467e+00 6.64054045e+00 6.60783505e+00 + 6.57529751e+00 6.54292690e+00 6.51072227e+00 6.47868271e+00 6.44680729e+00 + 6.41509509e+00 6.38354521e+00 6.35215673e+00 6.32092877e+00 6.28986042e+00 + 6.25895081e+00 6.22819905e+00 6.19760426e+00 6.16716558e+00 6.13688214e+00 + 6.10675309e+00 6.07677756e+00 6.04695472e+00 6.01728371e+00 5.98776371e+00 + 5.95839388e+00 5.92917339e+00 5.90010142e+00 5.87117717e+00 5.84239981e+00 + 5.81376854e+00 5.78528256e+00 5.75694108e+00 5.72874330e+00 5.70068845e+00 + 5.67277573e+00 5.64500437e+00 5.61737361e+00 5.58988267e+00 5.56253080e+00 + 5.53531723e+00 5.50824123e+00 5.48130203e+00 5.45449890e+00 5.42783110e+00 + 5.40129789e+00 5.37489855e+00 5.34863236e+00 5.32249859e+00 5.29649653e+00 + 5.27062546e+00 5.24488469e+00 5.21927350e+00 5.19379121e+00 5.16843711e+00 + 5.14321052e+00 5.11811076e+00 5.09313713e+00 5.06828897e+00 5.04356560e+00 + 5.01896636e+00 4.99449057e+00 4.97013759e+00 4.94590674e+00 4.92179739e+00 + 4.89780888e+00 4.87394056e+00 4.85019180e+00 4.82656195e+00 4.80305039e+00 + 4.77965649e+00 4.75637962e+00 4.73321916e+00 4.71017449e+00 4.68724499e+00 + 4.66443006e+00 4.64172909e+00 4.61914148e+00 4.59666662e+00 4.57430392e+00 + 4.55205278e+00 4.52991263e+00 4.50788286e+00 4.48596291e+00 4.46415218e+00 + 4.44245011e+00 4.42085612e+00 4.39936965e+00 4.37799012e+00 4.35671699e+00 + 4.33554968e+00 4.31448764e+00 4.29353033e+00 4.27267718e+00 4.25192766e+00 + 4.23128123e+00 4.21073734e+00 4.19029546e+00 4.16995505e+00 4.14971559e+00 + 4.12957654e+00 4.10953739e+00 4.08959761e+00 4.06975669e+00 4.05001410e+00 + 4.03036935e+00 4.01082191e+00 3.99137129e+00 3.97201698e+00 3.95275847e+00 + 3.93359529e+00 3.91452691e+00 3.89555287e+00 3.87667266e+00 3.85788581e+00 + 3.83919182e+00 3.82059022e+00 3.80208053e+00 3.78366227e+00 3.76533498e+00 + 3.74709818e+00 3.72895141e+00 3.71089420e+00 3.69292608e+00 3.67504661e+00 + 3.65725533e+00 3.63955177e+00 3.62193549e+00 3.60440604e+00 3.58696298e+00 + 3.56960585e+00 3.55233422e+00 3.53514766e+00 3.51804571e+00 3.50102796e+00 + 3.48409396e+00 3.46724329e+00 3.45047553e+00 3.43379024e+00 3.41718700e+00 + 3.40066541e+00 3.38422503e+00 3.36786545e+00 3.35158627e+00 3.33538707e+00 + 3.31926744e+00 3.30322698e+00 3.28726528e+00 3.27138194e+00 3.25557657e+00 + 3.23984876e+00 3.22419813e+00 3.20862427e+00 3.19312680e+00 3.17770533e+00 + 3.16235948e+00 3.14708885e+00 3.13189308e+00 3.11677177e+00 3.10172455e+00 + 3.08675105e+00 3.07185089e+00 3.05702370e+00 3.04226911e+00 3.02758675e+00 + 3.01297626e+00 2.99843728e+00 2.98396943e+00 2.96957237e+00 2.95524574e+00 + 2.94098917e+00 2.92680232e+00 2.91268483e+00 2.89863636e+00 2.88465656e+00 + 2.87074507e+00 2.85690156e+00 2.84312568e+00 2.82941710e+00 2.81577547e+00 + 2.80220045e+00 2.78869172e+00 2.77524894e+00 2.76187177e+00 2.74855989e+00 + 2.73531297e+00 2.72213068e+00 2.70901271e+00 2.69595871e+00 2.68296839e+00 + 2.67004141e+00 2.65717745e+00 2.64437621e+00 2.63163737e+00 2.61896061e+00 + 2.60634563e+00 2.59379211e+00 2.58129976e+00 2.56886825e+00 2.55649729e+00 + 2.54418658e+00 2.53193581e+00 2.51974468e+00 2.50761290e+00 2.49554018e+00 + 2.48352620e+00 2.47157070e+00 2.45967336e+00 2.44783390e+00 2.43605203e+00 + 2.42432747e+00 2.41265993e+00 2.40104912e+00 2.38949477e+00 2.37799659e+00 + 2.36655430e+00 2.35516763e+00 2.34383629e+00 2.33256002e+00 2.32133853e+00 + 2.31017156e+00 2.29905884e+00 2.28800009e+00 2.27699505e+00 2.26604346e+00 + 2.25514503e+00 2.24429952e+00 2.23350666e+00 2.22276619e+00 2.21207785e+00 + 2.20144138e+00 2.19085652e+00 2.18032302e+00 2.16984062e+00 2.15940907e+00 + 2.14902812e+00 2.13869751e+00 2.12841701e+00 2.11818636e+00 2.10800531e+00 + 2.09787362e+00 2.08779104e+00 2.07775734e+00 2.06777226e+00 2.05783558e+00 + 2.04794705e+00 2.03810643e+00 2.02831349e+00 2.01856799e+00 2.00886969e+00 + 1.99921838e+00 1.98961380e+00 1.98005574e+00 1.97054395e+00 1.96107823e+00 + 1.95165833e+00 1.94228403e+00 1.93295511e+00 1.92367134e+00 1.91443251e+00 + 1.90523838e+00 1.89608874e+00 1.88698338e+00 1.87792206e+00 1.86890459e+00 + 1.85993073e+00 1.85100028e+00 1.84211302e+00 1.83326875e+00 1.82446724e+00 + 1.81570829e+00 1.80699169e+00 1.79831723e+00 1.78968471e+00 1.78109391e+00 + 1.77254464e+00 1.76403669e+00 1.75556986e+00 1.74714394e+00 1.73875873e+00 + 1.73041405e+00 1.72210967e+00 1.71384542e+00 1.70562109e+00 1.69743648e+00 + 1.68929141e+00 1.68118567e+00 1.67311908e+00 1.66509145e+00 1.65710257e+00 + 1.64915227e+00 1.64124035e+00 1.63336663e+00 1.62553091e+00 1.61773302e+00 + 1.60997277e+00 1.60224997e+00 1.59456444e+00 1.58691600e+00 1.57930447e+00 + 1.57172966e+00 1.56419140e+00 1.55668951e+00 1.54922381e+00 1.54179412e+00 + 1.53440027e+00 1.52704208e+00 1.51971938e+00 1.51243200e+00 1.50517976e+00 + 1.49796249e+00 1.49078002e+00 1.48363218e+00 1.47651881e+00 1.46943972e+00 + 1.46239477e+00 1.45538377e+00 1.44840657e+00 1.44146299e+00 1.43455288e+00 + 1.42767608e+00 1.42083241e+00 1.41402172e+00 1.40724385e+00 1.40049863e+00 + 1.39378592e+00 1.38710554e+00 1.38045735e+00 1.37384119e+00 1.36725689e+00 + 1.36070431e+00 1.35418329e+00 1.34769367e+00 1.34123531e+00 1.33480805e+00 + 1.32841174e+00 1.32204623e+00 1.31571137e+00 1.30940702e+00 1.30313301e+00 + 1.29688921e+00 1.29067547e+00 1.28449163e+00 1.27833757e+00 1.27221313e+00 + 1.26611816e+00 1.26005253e+00 1.25401609e+00 1.24800870e+00 1.24203022e+00 + 1.23608051e+00 1.23015943e+00 1.22426684e+00 1.21840259e+00 1.21256657e+00 + 1.20675861e+00 1.20097860e+00 1.19522640e+00 1.18950186e+00 1.18380486e+00 + 1.17813526e+00 1.17249293e+00 1.16687773e+00 1.16128954e+00 1.15572823e+00 + 1.15019366e+00 1.14468570e+00 1.13920423e+00 1.13374911e+00 1.12832022e+00 + 1.12291743e+00 1.11754062e+00 1.11218966e+00 1.10686442e+00 1.10156477e+00 + 1.09629061e+00 1.09104179e+00 1.08581821e+00 1.08061973e+00 1.07544623e+00 + 1.07029760e+00 1.06517371e+00 1.06007445e+00 1.05499969e+00 1.04994931e+00 + 1.04492320e+00 1.03992125e+00 1.03494332e+00 1.02998931e+00 1.02505910e+00 + 1.02015258e+00 1.01526963e+00 1.01041014e+00 1.00557399e+00 1.00076107e+00 + 9.95971269e-01 9.91204474e-01 9.86460574e-01 9.81739459e-01 9.77041017e-01 + 9.72365141e-01 9.67711719e-01 9.63080644e-01 9.58471808e-01 9.53885103e-01 + 9.49320422e-01 9.44777659e-01 9.40256708e-01 9.35757463e-01 9.31279819e-01 + 9.26823673e-01 9.22388920e-01 9.17975456e-01 9.13583180e-01 9.09211987e-01 + 9.04861778e-01 9.00532450e-01 8.96223902e-01 8.91936035e-01 8.87668748e-01 + 8.83421941e-01 8.79195517e-01 8.74989376e-01 8.70803420e-01 8.66637553e-01 + 8.62491677e-01 8.58365695e-01 8.54259512e-01 8.50173032e-01 8.46106160e-01 + 8.42058801e-01 8.38030861e-01 8.34022246e-01 8.30032864e-01 8.26062621e-01 + 8.22111425e-01 8.18179184e-01 8.14265806e-01 8.10371202e-01 8.06495279e-01 + 8.02637948e-01 7.98799120e-01 7.94978705e-01 7.91176614e-01 7.87392758e-01 + 7.83627051e-01 7.79879404e-01 7.76149731e-01 7.72437944e-01 7.68743958e-01 + 7.65067686e-01 7.61409044e-01 7.57767945e-01 7.54144307e-01 7.50538044e-01 + 7.46949073e-01 7.43377311e-01 7.39822674e-01 7.36285080e-01 7.32764446e-01 + 7.29260693e-01 7.25773736e-01 7.22303497e-01 7.18849895e-01 7.15412848e-01 + 7.11992278e-01 7.08588105e-01 7.05200250e-01 7.01828635e-01 6.98473181e-01 + 6.95133811e-01 6.91810447e-01 6.88503011e-01 6.85211428e-01 6.81935621e-01 + 6.78675514e-01 6.75431031e-01 6.72202097e-01 6.68988638e-01 6.65790578e-01 + 6.62607844e-01 6.59440362e-01 6.56288059e-01 6.53150861e-01 6.50028696e-01 + 6.46921491e-01 6.43829174e-01 6.40751674e-01 6.37688920e-01 6.34640840e-01 + 6.31607364e-01 6.28588422e-01 6.25583943e-01 6.22593858e-01 6.19618099e-01 + 6.16656595e-01 6.13709278e-01 6.10776081e-01 6.07856935e-01 6.04951772e-01 + 6.02060526e-01 5.99183129e-01 5.96319515e-01 5.93469617e-01 5.90633370e-01 + 5.87810708e-01 5.85001566e-01 5.82205878e-01 5.79423580e-01 5.76654607e-01 + 5.73898896e-01 5.71156383e-01 5.68427004e-01 5.65710696e-01 5.63007396e-01 + 5.60317042e-01 5.57639571e-01 5.54974922e-01 5.52323033e-01 5.49683843e-01 + 5.47057290e-01 5.44443314e-01 5.41841854e-01 5.39252851e-01 5.36676244e-01 + 5.34111973e-01 5.31559981e-01 5.29020206e-01 5.26492592e-01 5.23977079e-01 + 5.21473609e-01 5.18982125e-01 5.16502568e-01 5.14034882e-01 5.11579010e-01 + 5.09134894e-01 5.06702479e-01 5.04281707e-01 5.01872524e-01 4.99474873e-01 + 4.97088699e-01 4.94713948e-01 4.92350563e-01 4.89998491e-01 4.87657677e-01 + 4.85328067e-01 4.83009607e-01 4.80702244e-01 4.78405925e-01 4.76120596e-01 + 4.73846204e-01 4.71582698e-01 4.69330025e-01 4.67088133e-01 4.64856970e-01 + 4.62636484e-01 4.60426625e-01 4.58227341e-01 4.56038581e-01 4.53860296e-01 + 4.51692435e-01 4.49534947e-01 4.47387783e-01 4.45250893e-01 4.43124229e-01 + 4.41007741e-01 4.38901379e-01 4.36805097e-01 4.34718844e-01 4.32642574e-01 + 4.30576237e-01 4.28519788e-01 4.26473177e-01 4.24436358e-01 4.22409284e-01 + 4.20391908e-01 4.18384183e-01 4.16386064e-01 4.14397504e-01 4.12418457e-01 + 4.10448878e-01 4.08488721e-01 4.06537941e-01 4.04596493e-01 4.02664332e-01 + 4.00741414e-01 3.98827694e-01 3.96923129e-01 3.95027674e-01 3.93141285e-01 + 3.91263920e-01 3.89395535e-01 3.87536086e-01 3.85685532e-01 3.83843828e-01 + 3.82010934e-01 3.80186806e-01 3.78371402e-01 3.76564682e-01 3.74766602e-01 + 3.72977122e-01 3.71196200e-01 3.69423796e-01 3.67659868e-01 3.65904377e-01 + 3.64157280e-01 3.62418539e-01 3.60688113e-01 3.58965962e-01 3.57252046e-01 + 3.55546327e-01 3.53848764e-01 3.52159319e-01 3.50477953e-01 3.48804627e-01 + 3.47139302e-01 3.45481941e-01 3.43832504e-01 3.42190955e-01 3.40557254e-01 + 3.38931366e-01 3.37313251e-01 3.35702873e-01 3.34100195e-01 3.32505179e-01 + 3.30917790e-01 3.29337990e-01 3.27765744e-01 3.26201014e-01 3.24643766e-01 + 3.23093962e-01 3.21551569e-01 3.20016548e-01 3.18488867e-01 3.16968489e-01 + 3.15455379e-01 3.13949503e-01 3.12450826e-01 3.10959314e-01 3.09474931e-01 + 3.07997645e-01 3.06527420e-01 3.05064224e-01 3.03608022e-01 3.02158781e-01 + 3.00716467e-01 2.99281048e-01 2.97852490e-01 2.96430761e-01 2.95015827e-01 + 2.93607657e-01 2.92206218e-01 2.90811477e-01 2.89423403e-01 2.88041963e-01 + 2.86667126e-01 2.85298860e-01 2.83937134e-01 2.82581916e-01 2.81233175e-01 + 2.79890881e-01 2.78555001e-01 2.77225507e-01 2.75902366e-01 2.74585549e-01 + 2.73275025e-01 2.71970764e-01 2.70672736e-01 2.69380912e-01 2.68095261e-01 + 2.66815754e-01 2.65542362e-01 2.64275055e-01 2.63013804e-01 2.61758580e-01 + 2.60509355e-01 2.59266099e-01 2.58028784e-01 2.56797382e-01 2.55571864e-01 + 2.54352202e-01 2.53138368e-01 2.51930334e-01 2.50728072e-01 2.49531555e-01 + 2.48340756e-01 2.47155646e-01 2.45976199e-01 2.44802387e-01 2.43634184e-01 + 2.42471562e-01 2.41314495e-01 2.40162957e-01 2.39016920e-01 2.37876359e-01 + 2.36741248e-01 2.35611559e-01 2.34487268e-01 2.33368348e-01 2.32254774e-01 + 2.31146520e-01 2.30043561e-01 2.28945871e-01 2.27853426e-01 2.26766199e-01 + 2.25684166e-01 2.24607302e-01 2.23535583e-01 2.22468984e-01 2.21407480e-01 + 2.20351047e-01 2.19299660e-01 2.18253296e-01 2.17211931e-01 2.16175540e-01 + 2.15144100e-01 2.14113243e-01 2.13069891e-01 2.12013376e-01 2.10943940e-01 + 2.09861825e-01 2.08767274e-01 2.07660532e-01 2.06541843e-01 2.05411450e-01 + 2.04269601e-01 2.03116539e-01 2.01952510e-01 2.00777762e-01 1.99592539e-01 + 1.98397087e-01 1.97191654e-01 1.95976486e-01 1.94751828e-01 1.93517927e-01 + 1.92275030e-01 1.91023382e-01 1.89763228e-01 1.88494815e-01 1.87218387e-01 + 1.85934189e-01 1.84642465e-01 1.83343460e-01 1.82037416e-01 1.80724576e-01 + 1.79405183e-01 1.78079478e-01 1.76747703e-01 1.75410096e-01 1.74066898e-01 + 1.72718347e-01 1.71364681e-01 1.70006137e-01 1.68642951e-01 1.67275357e-01 + 1.65903590e-01 1.64527883e-01 1.63148467e-01 1.61765573e-01 1.60379431e-01 + 1.58990269e-01 1.57598315e-01 1.56203794e-01 1.54806930e-01 1.53407948e-01 + 1.52007068e-01 1.50604512e-01 1.49200499e-01 1.47795247e-01 1.46388970e-01 + 1.44981885e-01 1.43574205e-01 1.42166140e-01 1.40757901e-01 1.39349697e-01 + 1.37941733e-01 1.36534215e-01 1.35127346e-01 1.33721328e-01 1.32316360e-01 + 1.30912641e-01 1.29510367e-01 1.28109732e-01 1.26710929e-01 1.25314148e-01 + 1.23919578e-01 1.22527407e-01 1.21137818e-01 1.19750996e-01 1.18367121e-01 + 1.16986372e-01 1.15608926e-01 1.14234958e-01 1.12864641e-01 1.11498147e-01 + 1.10135644e-01 1.08777298e-01 1.07423275e-01 1.06073737e-01 1.04728844e-01 + 1.03388755e-01 1.02053626e-01 1.00723611e-01 9.93988621e-02 9.80795283e-02 + 9.67657573e-02 9.54576944e-02 9.41554826e-02 9.28592628e-02 9.15691736e-02 + 9.02853512e-02 8.90079298e-02 8.77370413e-02 8.64728153e-02 8.52153791e-02 + 8.39648579e-02 8.27213744e-02 8.14850493e-02 8.02560007e-02 7.90343447e-02 + 7.78201951e-02 7.66136632e-02 7.54148582e-02 7.42238870e-02 7.30408542e-02 + 7.18658621e-02 7.06990106e-02 6.95403977e-02 6.83901186e-02 6.72482667e-02 + 6.61149327e-02 6.49902053e-02 6.38741708e-02 6.27669135e-02 6.16685149e-02 + 6.05790548e-02 5.94986105e-02 5.84272569e-02 5.73650669e-02 5.63121110e-02 + 5.52684577e-02 5.42341729e-02 5.32093207e-02 5.21939626e-02 5.11881582e-02 + 5.01919647e-02 4.92054373e-02 4.82286288e-02 4.72615900e-02 4.63043694e-02 + 4.53570136e-02 4.44195668e-02 4.34920712e-02 4.25745668e-02 4.16670917e-02 + 4.07696815e-02 3.98823701e-02 3.90051893e-02 3.81381685e-02 3.72813355e-02 + 3.64347158e-02 3.55983328e-02 3.47722083e-02 3.39563616e-02 3.31508103e-02 + 3.23555701e-02 3.15706545e-02 3.07960754e-02 3.00318424e-02 2.92779635e-02 + 2.85344447e-02 2.78012900e-02 2.70785019e-02 2.63660805e-02 2.56640247e-02 + 2.49723312e-02 2.42909949e-02 2.36200091e-02 2.29593653e-02 2.23090532e-02 + 2.16690608e-02 2.10393744e-02 2.04199786e-02 1.98108565e-02 1.92119892e-02 + 1.86233564e-02 1.80449363e-02 1.74767052e-02 1.69186380e-02 1.63707081e-02 + 1.58328873e-02 1.53051458e-02 1.47874523e-02 1.42797743e-02 1.37820775e-02 + 1.32943263e-02 1.28164837e-02 1.23485112e-02 1.18903690e-02 1.14420160e-02 + 1.10034096e-02 1.05745061e-02 1.01552602e-02 9.74562554e-03 9.34555446e-03 + 8.95499803e-03 8.57390613e-03 8.20222740e-03 7.83990935e-03 7.48689830e-03 + 7.14313944e-03 6.80857685e-03 6.48315351e-03 6.16681133e-03 5.85949117e-03 + 5.56113283e-03 5.27167514e-03 4.99105590e-03 4.71921196e-03 4.45607922e-03 + 4.20159263e-03 3.95568626e-03 3.71829328e-03 3.48934599e-03 3.26877583e-03 + 3.05651345e-03 2.85248865e-03 2.65663049e-03 2.46886724e-03 2.28912643e-03 + 2.11733486e-03 1.95341864e-03 1.79730319e-03 1.64891328e-03 1.50817302e-03 + 1.37500590e-03 1.24933483e-03 1.13108212e-03 1.02016951e-03 9.16518227e-04 + 8.20048948e-04 7.30681861e-04 6.48336671e-04 5.72932617e-04 5.04388498e-04 + 4.42622685e-04 3.87553146e-04 3.39097464e-04 2.97172855e-04 2.61696185e-04 + 2.32583995e-04 2.09752512e-04 1.93117675e-04 1.82595147e-04 1.78100339e-04 + 5.10303315e+05 5.10046225e+05 2.53097548e+05 1.67464388e+05 1.24659895e+05 + 9.89867038e+04 8.18790278e+04 6.96658180e+04 6.05115520e+04 5.33964966e+04 + 4.77088135e+04 4.30591523e+04 3.91879473e+04 3.59155003e+04 3.31134563e+04 + 3.06876893e+04 2.85676056e+04 2.66992224e+04 2.50405539e+04 2.35584542e+04 + 2.22264069e+04 2.10229471e+04 1.99305132e+04 1.89345980e+04 1.80231129e+04 + 1.71859038e+04 1.64143793e+04 1.57012210e+04 1.50401564e+04 1.44257787e+04 + 1.38534022e+04 1.33189460e+04 1.28188399e+04 1.23499464e+04 1.19094977e+04 + 1.14950424e+04 1.11044018e+04 1.07356328e+04 1.03869972e+04 1.00569354e+04 + 9.74404375e+03 9.44705580e+03 9.16482594e+03 8.89631528e+03 8.64057954e+03 + 8.39675857e+03 8.16406712e+03 7.94178697e+03 7.72925986e+03 7.52588141e+03 + 7.33109575e+03 7.14439069e+03 6.96529360e+03 6.79336763e+03 6.62820838e+03 + 6.46944099e+03 6.31671748e+03 6.16971439e+03 6.02813065e+03 5.89168572e+03 + 5.76011783e+03 5.63318249e+03 5.51065103e+03 5.39230941e+03 5.27795704e+03 + 5.16740574e+03 5.06047881e+03 4.95701018e+03 4.85684361e+03 4.75983198e+03 + 4.66583665e+03 4.57472683e+03 4.48637909e+03 4.40067679e+03 4.31750967e+03 + 4.23677339e+03 4.15836916e+03 4.08220338e+03 4.00818728e+03 3.93623666e+03 + 3.86627154e+03 3.79821596e+03 3.73199770e+03 3.66754806e+03 3.60480166e+03 + 3.54369622e+03 3.48417242e+03 3.42617367e+03 3.36964602e+03 3.31453796e+03 + 3.26080030e+03 3.20838606e+03 3.15725033e+03 3.10735015e+03 3.05864443e+03 + 3.01109383e+03 2.96466068e+03 2.91930891e+03 2.87500390e+03 2.83171251e+03 + 2.78940292e+03 2.74804459e+03 2.70760821e+03 2.66806564e+03 2.62938983e+03 + 2.59155479e+03 2.55453552e+03 2.51830799e+03 2.48284908e+03 2.44813652e+03 + 2.41414887e+03 2.38086551e+03 2.34826654e+03 2.31633280e+03 2.28504581e+03 + 2.25438775e+03 2.22434144e+03 2.19489029e+03 2.16601829e+03 2.13770999e+03 + 2.10995046e+03 2.08272529e+03 2.05602053e+03 2.02982273e+03 2.00411886e+03 + 1.97889633e+03 1.95414296e+03 1.92984697e+03 1.90599695e+03 1.88258187e+03 + 1.85959103e+03 1.83701408e+03 1.81484100e+03 1.79306205e+03 1.77166784e+03 + 1.75064922e+03 1.72999735e+03 1.70970364e+03 1.68975977e+03 1.67015765e+03 + 1.65088945e+03 1.63194756e+03 1.61332459e+03 1.59501336e+03 1.57700693e+03 + 1.55929851e+03 1.54188153e+03 1.52474960e+03 1.50789653e+03 1.49131626e+03 + 1.47500294e+03 1.45895085e+03 1.44315444e+03 1.42760833e+03 1.41230725e+03 + 1.39724609e+03 1.38241988e+03 1.36782377e+03 1.35345305e+03 1.33930313e+03 + 1.32536953e+03 1.31164791e+03 1.29813401e+03 1.28482370e+03 1.27171296e+03 + 1.25879786e+03 1.24607457e+03 1.23353935e+03 1.22118857e+03 1.20901868e+03 + 1.19702622e+03 1.18520781e+03 1.17356016e+03 1.16208005e+03 1.15076434e+03 + 1.13960999e+03 1.12861399e+03 1.11777342e+03 1.10708545e+03 1.09654729e+03 + 1.08615621e+03 1.07590958e+03 1.06580478e+03 1.05583930e+03 1.04601066e+03 + 1.03631643e+03 1.02675426e+03 1.01732183e+03 1.00801689e+03 9.98837223e+02 + 9.89780672e+02 9.80845126e+02 9.72028519e+02 9.63328832e+02 9.54744087e+02 + 9.46272351e+02 9.37911733e+02 9.29660381e+02 9.21516483e+02 9.13478267e+02 + 9.05543995e+02 8.97711969e+02 8.89980525e+02 8.82348035e+02 8.74812902e+02 + 8.67373564e+02 8.60028492e+02 8.52776186e+02 8.45615178e+02 8.38544029e+02 + 8.31561330e+02 8.24665699e+02 8.17855783e+02 8.11130255e+02 8.04487814e+02 + 7.97927187e+02 7.91447123e+02 7.85046396e+02 7.78723806e+02 7.72478175e+02 + 7.66308347e+02 7.60213188e+02 7.54191588e+02 7.48242457e+02 7.42364723e+02 + 7.36557340e+02 7.30819275e+02 7.25149520e+02 7.19547083e+02 7.14010990e+02 + 7.08540286e+02 7.03134035e+02 6.97791316e+02 6.92511225e+02 6.87292875e+02 + 6.82135395e+02 6.77037931e+02 6.71999642e+02 6.67019703e+02 6.62097305e+02 + 6.57231651e+02 6.52421960e+02 6.47667464e+02 6.42967409e+02 6.38321053e+02 + 6.33727668e+02 6.29186538e+02 6.24696960e+02 6.20258243e+02 6.15869708e+02 + 6.11530686e+02 6.07240521e+02 6.02998567e+02 5.98804191e+02 5.94656769e+02 + 5.90555686e+02 5.86500341e+02 5.82490139e+02 5.78524499e+02 5.74602845e+02 + 5.70724613e+02 5.66889250e+02 5.63096208e+02 5.59344950e+02 5.55634949e+02 + 5.51965684e+02 5.48336644e+02 5.44747325e+02 5.41197231e+02 5.37685877e+02 + 5.34212781e+02 5.30777471e+02 5.27379483e+02 5.24018359e+02 5.20693648e+02 + 5.17404908e+02 5.14151701e+02 5.10933598e+02 5.07750176e+02 5.04601017e+02 + 5.01485712e+02 4.98403856e+02 4.95355051e+02 4.92338905e+02 4.89355032e+02 + 4.86403051e+02 4.83482588e+02 4.80593273e+02 4.77734743e+02 4.74906640e+02 + 4.72108610e+02 4.69340305e+02 4.66601383e+02 4.63891506e+02 4.61210340e+02 + 4.58557558e+02 4.55932836e+02 4.53335856e+02 4.50766302e+02 4.48223866e+02 + 4.45708241e+02 4.43219127e+02 4.40756227e+02 4.38319248e+02 4.35907902e+02 + 4.33521903e+02 4.31160971e+02 4.28824829e+02 4.26513205e+02 4.24225829e+02 + 4.21962435e+02 4.19722762e+02 4.17506550e+02 4.15313545e+02 4.13143496e+02 + 4.10996155e+02 4.08871275e+02 4.06768616e+02 4.04687940e+02 4.02629011e+02 + 4.00591597e+02 3.98575469e+02 3.96580400e+02 3.94606168e+02 3.92652552e+02 + 3.90719335e+02 3.88806302e+02 3.86913240e+02 3.85039942e+02 3.83186199e+02 + 3.81351809e+02 3.79536569e+02 3.77740281e+02 3.75962749e+02 3.74203778e+02 + 3.72463176e+02 3.70740756e+02 3.69036329e+02 3.67349711e+02 3.65680719e+02 + 3.64029175e+02 3.62394898e+02 3.60777715e+02 3.59177450e+02 3.57593933e+02 + 3.56026994e+02 3.54476464e+02 3.52942179e+02 3.51423975e+02 3.49921689e+02 + 3.48435163e+02 3.46964237e+02 3.45508756e+02 3.44068565e+02 3.42643511e+02 + 3.41233444e+02 3.39838215e+02 3.38457674e+02 3.37091678e+02 3.35740081e+02 + 3.34402740e+02 3.33079515e+02 3.31770266e+02 3.30474855e+02 3.29193145e+02 + 3.27925002e+02 3.26670291e+02 3.25428880e+02 3.24200640e+02 3.22985439e+02 + 3.21783151e+02 3.20593649e+02 3.19416806e+02 3.18252500e+02 3.17100608e+02 + 3.15961007e+02 3.14833578e+02 3.13718202e+02 3.12614761e+02 3.11523138e+02 + 3.10443218e+02 3.09374887e+02 3.08318030e+02 3.07272538e+02 3.06238297e+02 + 3.05215199e+02 3.04203134e+02 3.03201996e+02 3.02211676e+02 3.01232070e+02 + 3.00263073e+02 2.99304581e+02 2.98356492e+02 2.97418703e+02 2.96491113e+02 + 2.95573624e+02 2.94666135e+02 2.93768550e+02 2.92880770e+02 2.92002699e+02 + 2.91134242e+02 2.90275304e+02 2.89425791e+02 2.88585611e+02 2.87754672e+02 + 2.86932882e+02 2.86120150e+02 2.85316386e+02 2.84521503e+02 2.83735411e+02 + 2.82958023e+02 2.82189252e+02 2.81429013e+02 2.80677219e+02 2.79933787e+02 + 2.79198632e+02 2.78471671e+02 2.77752821e+02 2.77042001e+02 2.76339129e+02 + 2.75644124e+02 2.74956907e+02 2.74277399e+02 2.73605519e+02 2.72941192e+02 + 2.72284337e+02 2.71634880e+02 2.70992743e+02 2.70357851e+02 2.69730128e+02 + 2.69109499e+02 2.68495891e+02 2.67889230e+02 2.67289443e+02 2.66696458e+02 + 2.66110201e+02 2.65530603e+02 2.64957592e+02 2.64391096e+02 2.63831048e+02 + 2.63277376e+02 2.62730013e+02 2.62188888e+02 2.61653935e+02 2.61125086e+02 + 2.60602273e+02 2.60085431e+02 2.59574492e+02 2.59069390e+02 2.58570061e+02 + 2.58076440e+02 2.57588462e+02 2.57106063e+02 2.56629179e+02 2.56157746e+02 + 2.55691703e+02 2.55230987e+02 2.54775535e+02 2.54325287e+02 2.53880179e+02 + 2.53440153e+02 2.53005147e+02 2.52575100e+02 2.52149954e+02 2.51729649e+02 + 2.51314126e+02 2.50903326e+02 2.50497191e+02 2.50095662e+02 2.49698683e+02 + 2.49306196e+02 2.48918144e+02 2.48534470e+02 2.48155118e+02 2.47780033e+02 + 2.47409158e+02 2.47042438e+02 2.46679819e+02 2.46321246e+02 2.45966664e+02 + 2.45616020e+02 2.45269260e+02 2.44926330e+02 2.44587178e+02 2.44251750e+02 + 2.43919995e+02 2.43591860e+02 2.43267294e+02 2.42946244e+02 2.42628660e+02 + 2.42314491e+02 2.42003686e+02 2.41696195e+02 2.41391967e+02 2.41090953e+02 + 2.40793105e+02 2.40498371e+02 2.40206704e+02 2.39918055e+02 2.39632375e+02 + 2.39349617e+02 2.39069733e+02 2.38792675e+02 2.38518396e+02 2.38246849e+02 + 2.37977988e+02 2.37711767e+02 2.37448138e+02 2.37187057e+02 2.36928477e+02 + 2.36672354e+02 2.36418643e+02 2.36167298e+02 2.35918276e+02 2.35671532e+02 + 2.35427023e+02 2.35184704e+02 2.34944533e+02 2.34706466e+02 2.34470460e+02 + 2.34236473e+02 2.34004463e+02 2.33774388e+02 2.33546205e+02 2.33319874e+02 + 2.33095353e+02 2.32872602e+02 2.32651579e+02 2.32432244e+02 2.32214558e+02 + 2.31998480e+02 2.31783971e+02 2.31570991e+02 2.31359501e+02 2.31149464e+02 + 2.30940839e+02 2.30733589e+02 2.30527677e+02 2.30323063e+02 2.30119712e+02 + 2.29917585e+02 2.29716646e+02 2.29516859e+02 2.29318186e+02 2.29120593e+02 + 2.28924042e+02 2.28728500e+02 2.28533929e+02 2.28340297e+02 2.28147567e+02 + 2.27955705e+02 2.27764678e+02 2.27574452e+02 2.27384992e+02 2.27196266e+02 + 2.27008241e+02 2.26820884e+02 2.26634163e+02 2.26448044e+02 2.26262498e+02 + 2.26077491e+02 2.25892993e+02 2.25708972e+02 2.25525399e+02 2.25342242e+02 + 2.25159470e+02 2.24977056e+02 2.24794968e+02 2.24613177e+02 2.24431655e+02 + 2.24250372e+02 2.24069301e+02 2.23888413e+02 2.23707679e+02 2.23527074e+02 + 2.23346568e+02 2.23166136e+02 2.22985751e+02 2.22805385e+02 2.22625013e+02 + 2.22444610e+02 2.22264149e+02 2.22083605e+02 2.21902954e+02 2.21722170e+02 + 2.21541230e+02 2.21360109e+02 2.21178783e+02 2.20997229e+02 2.20815424e+02 + 2.20633345e+02 2.20450968e+02 2.20268273e+02 2.20085237e+02 2.19901837e+02 + 2.19718053e+02 2.19533864e+02 2.19349248e+02 2.19164186e+02 2.18978656e+02 + 2.18792640e+02 2.18606116e+02 2.18419067e+02 2.18231472e+02 2.18043313e+02 + 2.17854572e+02 2.17665230e+02 2.17475270e+02 2.17284673e+02 2.17093423e+02 + 2.16901503e+02 2.16708895e+02 2.16515584e+02 2.16321553e+02 2.16126786e+02 + 2.15931269e+02 2.15734985e+02 2.15537919e+02 2.15340058e+02 2.15141386e+02 + 2.14941889e+02 2.14741555e+02 2.14540368e+02 2.14338316e+02 2.14135386e+02 + 2.13931566e+02 2.13726842e+02 2.13521203e+02 2.13314637e+02 2.13107133e+02 + 2.12898678e+02 2.12689263e+02 2.12478876e+02 2.12267508e+02 2.12055147e+02 + 2.11841784e+02 2.11627410e+02 2.11412015e+02 2.11195590e+02 2.10978127e+02 + 2.10759616e+02 2.10540050e+02 2.10319420e+02 2.10097719e+02 2.09874940e+02 + 2.09651076e+02 2.09426118e+02 2.09200061e+02 2.08972899e+02 2.08744625e+02 + 2.08515233e+02 2.08284718e+02 2.08053074e+02 2.07820297e+02 2.07586381e+02 + 2.07351321e+02 2.07115114e+02 2.06877755e+02 2.06639241e+02 2.06399567e+02 + 2.06158730e+02 2.05916728e+02 2.05673556e+02 2.05429214e+02 2.05183697e+02 + 2.04937004e+02 2.04689132e+02 2.04440081e+02 2.04189848e+02 2.03938432e+02 + 2.03685832e+02 2.03432047e+02 2.03177076e+02 2.02920920e+02 2.02663577e+02 + 2.02405047e+02 2.02145331e+02 2.01884430e+02 2.01622343e+02 2.01359072e+02 + 2.01094617e+02 2.00828980e+02 2.00562162e+02 2.00294164e+02 2.00024989e+02 + 1.99754638e+02 1.99483114e+02 1.99210418e+02 1.98936553e+02 1.98661523e+02 + 1.98385329e+02 1.98107975e+02 1.97829464e+02 1.97549799e+02 1.97268984e+02 + 1.96987023e+02 1.96703919e+02 1.96419677e+02 1.96134301e+02 1.95847795e+02 + 1.95560163e+02 1.95271410e+02 1.94981542e+02 1.94690563e+02 1.94398477e+02 + 1.94105292e+02 1.93811010e+02 1.93515640e+02 1.93219185e+02 1.92921652e+02 + 1.92623046e+02 1.92323374e+02 1.92022643e+02 1.91720857e+02 1.91418024e+02 + 1.91114151e+02 1.90809243e+02 1.90503308e+02 1.90196352e+02 1.89888383e+02 + 1.89579408e+02 1.89269434e+02 1.88958468e+02 1.88646517e+02 1.88333590e+02 + 1.88019694e+02 1.87704836e+02 1.87389025e+02 1.87072268e+02 1.86754573e+02 + 1.86435949e+02 1.86116403e+02 1.85795944e+02 1.85474580e+02 1.85152320e+02 + 1.84829171e+02 1.84505143e+02 1.84180245e+02 1.83854484e+02 1.83527870e+02 + 1.83200411e+02 1.82872117e+02 1.82542996e+02 1.82213057e+02 1.81882310e+02 + 1.81550763e+02 1.81218426e+02 1.80885308e+02 1.80551418e+02 1.80216766e+02 + 1.79881360e+02 1.79545211e+02 1.79208327e+02 1.78870719e+02 1.78532395e+02 + 1.78193366e+02 1.77853641e+02 1.77513229e+02 1.77172140e+02 1.76830384e+02 + 1.76487971e+02 1.76144911e+02 1.75801212e+02 1.75456885e+02 1.75111940e+02 + 1.74766387e+02 1.74420235e+02 1.74073494e+02 1.73726174e+02 1.73378285e+02 + 1.73029837e+02 1.72680840e+02 1.72331304e+02 1.71981238e+02 1.71630653e+02 + 1.71279558e+02 1.70927963e+02 1.70575879e+02 1.70223315e+02 1.69870281e+02 + 1.69516787e+02 1.69162843e+02 1.68808459e+02 1.68453644e+02 1.68098409e+02 + 1.67742764e+02 1.67386718e+02 1.67030281e+02 1.66673463e+02 1.66316274e+02 + 1.65958724e+02 1.65600822e+02 1.65242578e+02 1.64884002e+02 1.64525104e+02 + 1.64165893e+02 1.63806379e+02 1.63446572e+02 1.63086481e+02 1.62726115e+02 + 1.62365486e+02 1.62004601e+02 1.61643471e+02 1.61282104e+02 1.60920511e+02 + 1.60558701e+02 1.60196684e+02 1.59834467e+02 1.59472062e+02 1.59109477e+02 + 1.58746721e+02 1.58383804e+02 1.58020734e+02 1.57657521e+02 1.57294175e+02 + 1.56930703e+02 1.56567116e+02 1.56203421e+02 1.55839629e+02 1.55475747e+02 + 1.55111785e+02 1.54747751e+02 1.54383654e+02 1.54019504e+02 1.53655308e+02 + 1.53291075e+02 1.52926813e+02 1.52562532e+02 1.52198240e+02 1.51833945e+02 + 1.51469655e+02 1.51105379e+02 1.50741125e+02 1.50376902e+02 1.50012717e+02 + 1.49648578e+02 1.49284494e+02 1.48920473e+02 1.48556522e+02 1.48192650e+02 + 1.47828864e+02 1.47465173e+02 1.47101583e+02 1.46738103e+02 1.46374741e+02 + 1.46011503e+02 1.45648398e+02 1.45285432e+02 1.44922614e+02 1.44559950e+02 + 1.44197449e+02 1.43835116e+02 1.43472960e+02 1.43110988e+02 1.42749206e+02 + 1.42387622e+02 1.42026243e+02 1.41665075e+02 1.41304126e+02 1.40943402e+02 + 1.40582910e+02 1.40222657e+02 1.39862648e+02 1.39502892e+02 1.39143395e+02 + 1.38784162e+02 1.38425200e+02 1.38066516e+02 1.37708117e+02 1.37350007e+02 + 1.36992193e+02 1.36634682e+02 1.36277480e+02 1.35920592e+02 1.35564024e+02 + 1.35207783e+02 1.34851874e+02 1.34496303e+02 1.34141076e+02 1.33786198e+02 + 1.33431675e+02 1.33077512e+02 1.32723715e+02 1.32370290e+02 1.32017242e+02 + 1.31664575e+02 1.31312296e+02 1.30960410e+02 1.30608921e+02 1.30257835e+02 + 1.29907157e+02 1.29556892e+02 1.29207045e+02 1.28857620e+02 1.28508623e+02 + 1.28160058e+02 1.27811930e+02 1.27464243e+02 1.27117003e+02 1.26770214e+02 + 1.26423879e+02 1.26078005e+02 1.25732594e+02 1.25387652e+02 1.25043183e+02 + 1.24699190e+02 1.24355679e+02 1.24012652e+02 1.23670115e+02 1.23328071e+02 + 1.22986525e+02 1.22645479e+02 1.22304939e+02 1.21964907e+02 1.21625388e+02 + 1.21286385e+02 1.20947903e+02 1.20609943e+02 1.20272511e+02 1.19935610e+02 + 1.19599242e+02 1.19263412e+02 1.18928123e+02 1.18593378e+02 1.18259180e+02 + 1.17925533e+02 1.17592440e+02 1.17259904e+02 1.16927927e+02 1.16596514e+02 + 1.16265667e+02 1.15935389e+02 1.15605682e+02 1.15276550e+02 1.14947996e+02 + 1.14620022e+02 1.14292630e+02 1.13965825e+02 1.13639607e+02 1.13313981e+02 + 1.12988947e+02 1.12664510e+02 1.12340671e+02 1.12017432e+02 1.11694796e+02 + 1.11372766e+02 1.11051343e+02 1.10730530e+02 1.10410329e+02 1.10090743e+02 + 1.09771772e+02 1.09453420e+02 1.09135688e+02 1.08818579e+02 1.08502094e+02 + 1.08186235e+02 1.07871004e+02 1.07556404e+02 1.07242435e+02 1.06929099e+02 + 1.06616399e+02 1.06304336e+02 1.05992911e+02 1.05682126e+02 1.05371983e+02 + 1.05062483e+02 1.04753628e+02 1.04445420e+02 1.04137859e+02 1.03830947e+02 + 1.03524685e+02 1.03219075e+02 1.02914119e+02 1.02609816e+02 1.02306169e+02 + 1.02003179e+02 1.01700846e+02 1.01399173e+02 1.01098160e+02 1.00797808e+02 + 1.00498118e+02 1.00199091e+02 9.99007283e+01 9.96030307e+01 9.93059992e+01 + 9.90096345e+01 9.87139375e+01 9.84189091e+01 9.81245500e+01 9.78308609e+01 + 9.75378427e+01 9.72454959e+01 9.69538214e+01 9.66628197e+01 9.63724914e+01 + 9.60828371e+01 9.57938574e+01 9.55055529e+01 9.52179239e+01 9.49309711e+01 + 9.46446949e+01 9.43590956e+01 9.40741738e+01 9.37899297e+01 9.35063638e+01 + 9.32234763e+01 9.29412676e+01 9.26597379e+01 9.23788875e+01 9.20987167e+01 + 9.18192256e+01 9.15404144e+01 9.12622833e+01 9.09848325e+01 9.07080619e+01 + 9.04319719e+01 9.01565623e+01 8.98818333e+01 8.96077848e+01 8.93344170e+01 + 8.90617297e+01 8.87897230e+01 8.85183968e+01 8.82477510e+01 8.79777855e+01 + 8.77085002e+01 8.74398950e+01 8.71719697e+01 8.69047241e+01 8.66381581e+01 + 8.63722714e+01 8.61070638e+01 8.58425350e+01 8.55786849e+01 8.53155130e+01 + 8.50530192e+01 8.47912030e+01 8.45300641e+01 8.42696023e+01 8.40098170e+01 + 8.37507080e+01 8.34922748e+01 8.32345170e+01 8.29774342e+01 8.27210259e+01 + 8.24652916e+01 8.22102308e+01 8.19558432e+01 8.17021280e+01 8.14490849e+01 + 8.11967133e+01 8.09450125e+01 8.06939821e+01 8.04436215e+01 8.01939300e+01 + 7.99449070e+01 7.96965520e+01 7.94488642e+01 7.92018430e+01 7.89554878e+01 + 7.87097978e+01 7.84647724e+01 7.82204109e+01 7.79767125e+01 7.77336765e+01 + 7.74913023e+01 7.72495889e+01 7.70085357e+01 7.67681418e+01 7.65284066e+01 + 7.62893292e+01 7.60509087e+01 7.58131444e+01 7.55760354e+01 7.53395809e+01 + 7.51037800e+01 7.48686319e+01 7.46341358e+01 7.44002906e+01 7.41670955e+01 + 7.39345497e+01 7.37026521e+01 7.34714020e+01 7.32407983e+01 7.30108401e+01 + 7.27815265e+01 7.25528565e+01 7.23248291e+01 7.20974435e+01 7.18706985e+01 + 7.16445932e+01 7.14191266e+01 7.11942977e+01 7.09701055e+01 7.07465489e+01 + 7.05236270e+01 7.03013386e+01 7.00796828e+01 6.98586585e+01 6.96382647e+01 + 6.94185002e+01 6.91993640e+01 6.89808550e+01 6.87629722e+01 6.85457144e+01 + 6.83290806e+01 6.81130696e+01 6.78976804e+01 6.76829117e+01 6.74687626e+01 + 6.72552318e+01 6.70423183e+01 6.68300208e+01 6.66183384e+01 6.64072697e+01 + 6.61968136e+01 6.59869691e+01 6.57777348e+01 6.55691097e+01 6.53610926e+01 + 6.51536823e+01 6.49468776e+01 6.47406774e+01 6.45350803e+01 6.43300853e+01 + 6.41256912e+01 6.39218966e+01 6.37187005e+01 6.35161016e+01 6.33140987e+01 + 6.31126905e+01 6.29118759e+01 6.27116536e+01 6.25120224e+01 6.23129810e+01 + 6.21145283e+01 6.19166629e+01 6.17193836e+01 6.15226892e+01 6.13265785e+01 + 6.11310501e+01 6.09361028e+01 6.07417354e+01 6.05479465e+01 6.03547350e+01 + 6.01620996e+01 5.99700389e+01 5.97785518e+01 5.95876369e+01 5.93972930e+01 + 5.92075188e+01 5.90183130e+01 5.88296743e+01 5.86416014e+01 5.84540932e+01 + 5.82671481e+01 5.80807651e+01 5.78949427e+01 5.77096798e+01 5.75249749e+01 + 5.73408269e+01 5.71572343e+01 5.69741960e+01 5.67917105e+01 5.66097767e+01 + 5.64283931e+01 5.62475586e+01 5.60672718e+01 5.58875313e+01 5.57083359e+01 + 5.55296843e+01 5.53515752e+01 5.51740072e+01 5.49969790e+01 5.48204894e+01 + 5.46445370e+01 5.44691206e+01 5.42942387e+01 5.41198901e+01 5.39460735e+01 + 5.37727875e+01 5.36000309e+01 5.34278023e+01 5.32561004e+01 5.30849240e+01 + 5.29142716e+01 5.27441420e+01 5.25745339e+01 5.24054459e+01 5.22368767e+01 + 5.20688251e+01 5.19012896e+01 5.17342691e+01 5.15677621e+01 5.14017674e+01 + 5.12362836e+01 5.10713095e+01 5.09068437e+01 5.07428849e+01 5.05794318e+01 + 5.04164830e+01 5.02540374e+01 5.00920935e+01 4.99306501e+01 4.97697059e+01 + 4.96092595e+01 4.94493096e+01 4.92898550e+01 4.91308942e+01 4.89724261e+01 + 4.88144493e+01 4.86569626e+01 4.84999645e+01 4.83434539e+01 4.81874293e+01 + 4.80318896e+01 4.78768334e+01 4.77222594e+01 4.75681664e+01 4.74145529e+01 + 4.72614178e+01 4.71087598e+01 4.69565775e+01 4.68048696e+01 4.66536350e+01 + 4.65028722e+01 4.63525800e+01 4.62027572e+01 4.60534023e+01 4.59045143e+01 + 4.57560917e+01 4.56081333e+01 4.54606378e+01 4.53136040e+01 4.51670306e+01 + 4.50209162e+01 4.48752597e+01 4.47300597e+01 4.45853150e+01 4.44410244e+01 + 4.42971865e+01 4.41538001e+01 4.40108640e+01 4.38683768e+01 4.37263374e+01 + 4.35847444e+01 4.34435966e+01 4.33028929e+01 4.31626318e+01 4.30228122e+01 + 4.28834328e+01 4.27444924e+01 4.26059897e+01 4.24679235e+01 4.23302926e+01 + 4.21930956e+01 4.20563315e+01 4.19199989e+01 4.17840967e+01 4.16486235e+01 + 4.15135782e+01 4.13789595e+01 4.12447663e+01 4.11109973e+01 4.09776512e+01 + 4.08447269e+01 4.07122232e+01 4.05801387e+01 4.04484725e+01 4.03172231e+01 + 4.01863895e+01 4.00559704e+01 3.99259645e+01 3.97963709e+01 3.96671881e+01 + 3.95384150e+01 3.94100505e+01 3.92820933e+01 3.91545423e+01 3.90273962e+01 + 3.89006540e+01 3.87743143e+01 3.86483760e+01 3.85228381e+01 3.83976991e+01 + 3.82729581e+01 3.81486139e+01 3.80246652e+01 3.79011109e+01 3.77779498e+01 + 3.76551809e+01 3.75328028e+01 3.74108145e+01 3.72892149e+01 3.71680027e+01 + 3.70471769e+01 3.69267362e+01 3.68066795e+01 3.66870058e+01 3.65677138e+01 + 3.64488024e+01 3.63302705e+01 3.62121170e+01 3.60943407e+01 3.59769405e+01 + 3.58599153e+01 3.57432639e+01 3.56269853e+01 3.55110783e+01 3.53955418e+01 + 3.52803747e+01 3.51655759e+01 3.50511443e+01 3.49370788e+01 3.48233782e+01 + 3.47100416e+01 3.45970677e+01 3.44844555e+01 3.43722040e+01 3.42603119e+01 + 3.41487783e+01 3.40376020e+01 3.39267820e+01 3.38163172e+01 3.37062065e+01 + 3.35964488e+01 3.34870432e+01 3.33779884e+01 3.32692834e+01 3.31609272e+01 + 3.30529188e+01 3.29452570e+01 3.28379408e+01 3.27309691e+01 3.26243410e+01 + 3.25180553e+01 3.24121110e+01 3.23065071e+01 3.22012425e+01 3.20963161e+01 + 3.19917271e+01 3.18874742e+01 3.17835566e+01 3.16799731e+01 3.15767228e+01 + 3.14738046e+01 3.13712175e+01 3.12689604e+01 3.11670325e+01 3.10654326e+01 + 3.09641597e+01 3.08632129e+01 3.07625912e+01 3.06622934e+01 3.05623187e+01 + 3.04626661e+01 3.03633345e+01 3.02643230e+01 3.01656305e+01 3.00672562e+01 + 2.99691989e+01 2.98714578e+01 2.97740318e+01 2.96769199e+01 2.95801213e+01 + 2.94836349e+01 2.93874598e+01 2.92915949e+01 2.91960394e+01 2.91007922e+01 + 2.90058525e+01 2.89112192e+01 2.88168915e+01 2.87228682e+01 2.86291486e+01 + 2.85357317e+01 2.84426165e+01 2.83498020e+01 2.82572874e+01 2.81650717e+01 + 2.80731540e+01 2.79815334e+01 2.78902088e+01 2.77991795e+01 2.77084444e+01 + 2.76180027e+01 2.75278535e+01 2.74379957e+01 2.73484286e+01 2.72591511e+01 + 2.71701625e+01 2.70814617e+01 2.69930480e+01 2.69049203e+01 2.68170778e+01 + 2.67295196e+01 2.66422449e+01 2.65552526e+01 2.64685420e+01 2.63821121e+01 + 2.62959621e+01 2.62100910e+01 2.61244981e+01 2.60391824e+01 2.59541430e+01 + 2.58693792e+01 2.57848899e+01 2.57006744e+01 2.56167319e+01 2.55330613e+01 + 2.54496619e+01 2.53665329e+01 2.52836733e+01 2.52010823e+01 2.51187591e+01 + 2.50367028e+01 2.49549127e+01 2.48733877e+01 2.47921272e+01 2.47111302e+01 + 2.46303959e+01 2.45499236e+01 2.44697123e+01 2.43897613e+01 2.43100697e+01 + 2.42306367e+01 2.41514615e+01 2.40725433e+01 2.39938812e+01 2.39154744e+01 + 2.38373222e+01 2.37594237e+01 2.36817781e+01 2.36043846e+01 2.35272425e+01 + 2.34503509e+01 2.33737090e+01 2.32973160e+01 2.32211711e+01 2.31452736e+01 + 2.30696227e+01 2.29942176e+01 2.29190574e+01 2.28441415e+01 2.27694690e+01 + 2.26950391e+01 2.26208512e+01 2.25469044e+01 2.24731979e+01 2.23997310e+01 + 2.23265030e+01 2.22535130e+01 2.21807603e+01 2.21082441e+01 2.20359638e+01 + 2.19639185e+01 2.18921075e+01 2.18205300e+01 2.17491853e+01 2.16780727e+01 + 2.16071914e+01 2.15365407e+01 2.14661198e+01 2.13959280e+01 2.13259646e+01 + 2.12562288e+01 2.11867200e+01 2.11174373e+01 2.10483801e+01 2.09795476e+01 + 2.09109392e+01 2.08425541e+01 2.07743915e+01 2.07064508e+01 2.06387313e+01 + 2.05712323e+01 2.05039530e+01 2.04368928e+01 2.03700509e+01 2.03034266e+01 + 2.02370194e+01 2.01708283e+01 2.01048528e+01 2.00390922e+01 1.99735458e+01 + 1.99082129e+01 1.98430927e+01 1.97781847e+01 1.97134882e+01 1.96490024e+01 + 1.95847267e+01 1.95206604e+01 1.94568028e+01 1.93931533e+01 1.93297112e+01 + 1.92664759e+01 1.92034466e+01 1.91406227e+01 1.90780035e+01 1.90155885e+01 + 1.89533769e+01 1.88913680e+01 1.88295613e+01 1.87679561e+01 1.87065517e+01 + 1.86453474e+01 1.85843427e+01 1.85235369e+01 1.84629294e+01 1.84025194e+01 + 1.83423064e+01 1.82822898e+01 1.82224689e+01 1.81628431e+01 1.81034117e+01 + 1.80441741e+01 1.79851297e+01 1.79262779e+01 1.78676181e+01 1.78091496e+01 + 1.77508718e+01 1.76927841e+01 1.76348859e+01 1.75771766e+01 1.75196556e+01 + 1.74623222e+01 1.74051759e+01 1.73482160e+01 1.72914420e+01 1.72348532e+01 + 1.71784491e+01 1.71222290e+01 1.70661924e+01 1.70103386e+01 1.69546672e+01 + 1.68991774e+01 1.68438687e+01 1.67887405e+01 1.67337923e+01 1.66790234e+01 + 1.66244333e+01 1.65700214e+01 1.65157871e+01 1.64617298e+01 1.64078490e+01 + 1.63541441e+01 1.63006145e+01 1.62472597e+01 1.61940791e+01 1.61410721e+01 + 1.60882382e+01 1.60355768e+01 1.59830874e+01 1.59307693e+01 1.58786221e+01 + 1.58266452e+01 1.57748380e+01 1.57232000e+01 1.56717306e+01 1.56204294e+01 + 1.55692956e+01 1.55183289e+01 1.54675287e+01 1.54168943e+01 1.53664254e+01 + 1.53161213e+01 1.52659815e+01 1.52160055e+01 1.51661927e+01 1.51165427e+01 + 1.50670549e+01 1.50177287e+01 1.49685637e+01 1.49195593e+01 1.48707150e+01 + 1.48220303e+01 1.47735047e+01 1.47251376e+01 1.46769285e+01 1.46288769e+01 + 1.45809824e+01 1.45332444e+01 1.44856623e+01 1.44382358e+01 1.43909642e+01 + 1.43438471e+01 1.42968840e+01 1.42500743e+01 1.42034177e+01 1.41569135e+01 + 1.41105613e+01 1.40643606e+01 1.40183109e+01 1.39724117e+01 1.39266625e+01 + 1.38810629e+01 1.38356123e+01 1.37903103e+01 1.37451563e+01 1.37001500e+01 + 1.36552907e+01 1.36105781e+01 1.35660117e+01 1.35215910e+01 1.34773155e+01 + 1.34331847e+01 1.33891982e+01 1.33453555e+01 1.33016562e+01 1.32580997e+01 + 1.32146856e+01 1.31714135e+01 1.31282829e+01 1.30852932e+01 1.30424442e+01 + 1.29997352e+01 1.29571659e+01 1.29147358e+01 1.28724444e+01 1.28302914e+01 + 1.27882761e+01 1.27463983e+01 1.27046574e+01 1.26630530e+01 1.26215847e+01 + 1.25802519e+01 1.25390544e+01 1.24979916e+01 1.24570630e+01 1.24162684e+01 + 1.23756071e+01 1.23350789e+01 1.22946831e+01 1.22544196e+01 1.22142877e+01 + 1.21742870e+01 1.21344172e+01 1.20946778e+01 1.20550684e+01 1.20155886e+01 + 1.19762379e+01 1.19370159e+01 1.18979222e+01 1.18589564e+01 1.18201180e+01 + 1.17814067e+01 1.17428220e+01 1.17043636e+01 1.16660310e+01 1.16278237e+01 + 1.15897415e+01 1.15517839e+01 1.15139504e+01 1.14762407e+01 1.14386544e+01 + 1.14011910e+01 1.13638502e+01 1.13266316e+01 1.12895347e+01 1.12525593e+01 + 1.12157048e+01 1.11789708e+01 1.11423571e+01 1.11058632e+01 1.10694887e+01 + 1.10332332e+01 1.09970963e+01 1.09610777e+01 1.09251769e+01 1.08893936e+01 + 1.08537274e+01 1.08181779e+01 1.07827447e+01 1.07474275e+01 1.07122258e+01 + 1.06771394e+01 1.06421677e+01 1.06073105e+01 1.05725674e+01 1.05379379e+01 + 1.05034218e+01 1.04690187e+01 1.04347281e+01 1.04005498e+01 1.03664833e+01 + 1.03325283e+01 1.02986844e+01 1.02649513e+01 1.02313286e+01 1.01978159e+01 + 1.01644129e+01 1.01311193e+01 1.00979346e+01 1.00648585e+01 1.00318907e+01 + 9.99903076e+00 9.96627839e+00 9.93363322e+00 9.90109490e+00 9.86866308e+00 + 9.83614239e+00 9.80319678e+00 9.76982516e+00 9.73603257e+00 9.70182408e+00 + 9.66720477e+00 9.63217974e+00 9.59675413e+00 9.56093309e+00 9.52472178e+00 + 9.48812539e+00 9.45114912e+00 9.41379820e+00 9.37607786e+00 9.33799336e+00 + 9.29954996e+00 9.26075296e+00 9.22160764e+00 9.18211931e+00 9.14229331e+00 + 9.10213495e+00 9.06164959e+00 9.02084257e+00 8.97971926e+00 8.93828502e+00 + 8.89654524e+00 8.85450530e+00 8.81217059e+00 8.76954651e+00 8.72663845e+00 + 8.68345183e+00 8.63999205e+00 8.59626452e+00 8.55227466e+00 8.50802788e+00 + 8.46352960e+00 8.41878522e+00 8.37380017e+00 8.32857986e+00 8.28312970e+00 + 8.23745510e+00 8.19156147e+00 8.14545420e+00 8.09913868e+00 8.05262033e+00 + 8.00590451e+00 7.95899661e+00 7.91190200e+00 7.86462604e+00 7.81717409e+00 + 7.76955150e+00 7.72176361e+00 7.67381573e+00 7.62571320e+00 7.57746130e+00 + 7.52906535e+00 7.48053061e+00 7.43186235e+00 7.38306584e+00 7.33414631e+00 + 7.28510898e+00 7.23595907e+00 7.18670176e+00 7.13734225e+00 7.08788568e+00 + 7.03833721e+00 6.98870196e+00 6.93898503e+00 6.88919151e+00 6.83932648e+00 + 6.78939499e+00 6.73940205e+00 6.68935268e+00 6.63925187e+00 6.58910458e+00 + 6.53891575e+00 6.48869031e+00 6.43843314e+00 6.38814912e+00 6.33784310e+00 + 6.28751990e+00 6.23718433e+00 6.18684115e+00 6.13649511e+00 6.08615093e+00 + 6.03581331e+00 5.98548692e+00 5.93517639e+00 5.88488633e+00 5.83462134e+00 + 5.78438596e+00 5.73418472e+00 5.68402212e+00 5.63390262e+00 5.58383066e+00 + 5.53381065e+00 5.48384696e+00 5.43394394e+00 5.38410590e+00 5.33433712e+00 + 5.28464184e+00 5.23502429e+00 5.18548865e+00 5.13603907e+00 5.08667967e+00 + 5.03741453e+00 4.98824769e+00 4.93918318e+00 4.89022498e+00 4.84137703e+00 + 4.79264324e+00 4.74402749e+00 4.69553363e+00 4.64716544e+00 4.59892671e+00 + 4.55082117e+00 4.50285251e+00 4.45502439e+00 4.40734043e+00 4.35980422e+00 + 4.31241932e+00 4.26518921e+00 4.21811739e+00 4.17120729e+00 4.12446230e+00 + 4.07788579e+00 4.03148106e+00 3.98525142e+00 3.93920009e+00 3.89333028e+00 + 3.84764517e+00 3.80214787e+00 3.75684147e+00 3.71172903e+00 3.66681354e+00 + 3.62209799e+00 3.57758528e+00 3.53327833e+00 3.48917997e+00 3.44529302e+00 + 3.40162024e+00 3.35816437e+00 3.31492809e+00 3.27191405e+00 3.22912486e+00 + 3.18656308e+00 3.14423125e+00 3.10213185e+00 3.06026733e+00 3.01864009e+00 + 2.97725249e+00 2.93610687e+00 2.89520550e+00 2.85455062e+00 2.81414444e+00 + 2.77398912e+00 2.73408678e+00 2.69443950e+00 2.65504931e+00 2.61591822e+00 + 2.57704818e+00 2.53844110e+00 2.50009887e+00 2.46202332e+00 2.42421623e+00 + 2.38667938e+00 2.34941446e+00 2.31242315e+00 2.27570709e+00 2.23926786e+00 + 2.20310702e+00 2.16722608e+00 2.13162650e+00 2.09630973e+00 2.06127714e+00 + 2.02653009e+00 1.99206990e+00 1.95789783e+00 1.92401511e+00 1.89042294e+00 + 1.85712247e+00 1.82411481e+00 1.79140103e+00 1.75898217e+00 1.72685923e+00 + 1.69503316e+00 1.66350488e+00 1.63227527e+00 1.60134517e+00 1.57071538e+00 + 1.54038667e+00 1.51035976e+00 1.48063534e+00 1.45121406e+00 1.42209654e+00 + 1.39328335e+00 1.36477502e+00 1.33657207e+00 1.30867494e+00 1.28108408e+00 + 1.25379988e+00 1.22682267e+00 1.20015280e+00 1.17379052e+00 1.14773611e+00 + 1.12198975e+00 1.09655164e+00 1.07142191e+00 1.04660066e+00 1.02208796e+00 + 9.97883860e-01 9.73988350e-01 9.50401399e-01 9.27122941e-01 9.04152875e-01 + 8.81491067e-01 8.59137350e-01 8.37091523e-01 8.15353353e-01 7.93922575e-01 + 7.72798890e-01 7.51981967e-01 7.31471445e-01 7.11266929e-01 6.91367995e-01 + 6.71774185e-01 6.52485014e-01 6.33499962e-01 6.14818482e-01 5.96439995e-01 + 5.78363892e-01 5.60589536e-01 5.43116259e-01 5.25943365e-01 5.09070129e-01 + 4.92495797e-01 4.76219586e-01 4.60240687e-01 4.44558262e-01 4.29171445e-01 + 4.14079344e-01 3.99281039e-01 3.84775584e-01 3.70562007e-01 3.56639309e-01 + 3.43006466e-01 3.29662427e-01 3.16606118e-01 3.03836438e-01 2.91352263e-01 + 2.79152444e-01 2.67235806e-01 2.55601154e-01 2.44247267e-01 2.33172900e-01 + 2.22376787e-01 2.11857640e-01 2.01614145e-01 1.91644970e-01 1.81948759e-01 + 1.72524135e-01 1.63369700e-01 1.54484036e-01 1.45865702e-01 1.37513239e-01 + 1.29425168e-01 1.21599989e-01 1.14036184e-01 1.06732215e-01 9.96865252e-02 + 9.28975401e-02 8.63636667e-02 8.00832940e-02 7.40547937e-02 6.82765202e-02 + 6.27468109e-02 5.74639865e-02 5.24263517e-02 4.76321948e-02 4.30797886e-02 + 3.87673904e-02 3.46932424e-02 3.08555720e-02 2.72525920e-02 2.38825011e-02 + 2.07434841e-02 1.78337121e-02 1.51513430e-02 1.26945216e-02 1.04613800e-02 + 8.45003801e-03 6.65860321e-03 5.08517143e-03 3.72782701e-03 2.58464306e-03 + 1.65368178e-03 9.32994753e-04 4.20623265e-04 1.14598566e-04 1.29421836e-05 + 1.42532190e+04 1.42532190e+04 8.35034822e+03 5.54302535e+03 4.13949198e+03 + 3.29747342e+03 2.73621144e+03 2.33538110e+03 2.03481994e+03 1.80110437e+03 + 1.61418025e+03 1.46128584e+03 1.33391334e+03 1.22617273e+03 1.13385685e+03 + 1.05388046e+03 9.83929637e+02 9.22234903e+02 8.67420006e+02 8.18398433e+02 + 7.74300975e+02 7.34423991e+02 6.98191774e+02 6.65128743e+02 6.34838584e+02 + 6.06988393e+02 5.81296485e+02 5.57522906e+02 5.35461985e+02 5.14936419e+02 + 4.95792548e+02 4.77896540e+02 4.61131293e+02 4.45393901e+02 4.30593565e+02 + 4.16649865e+02 4.03491318e+02 3.91054168e+02 3.79281373e+02 3.68121742e+02 + 3.57529204e+02 3.47462184e+02 3.37883066e+02 3.28757736e+02 3.20055180e+02 + 3.11747144e+02 3.03807830e+02 2.96213636e+02 2.88942929e+02 2.81975842e+02 + 2.75294097e+02 2.68880852e+02 2.62720560e+02 2.56798848e+02 2.51102410e+02 + 2.45618906e+02 2.40336878e+02 2.35245675e+02 2.30335379e+02 2.25596746e+02 + 2.21021147e+02 2.16600522e+02 2.12327330e+02 2.08194509e+02 2.04195440e+02 + 2.00323909e+02 1.96574084e+02 1.92940476e+02 1.89417923e+02 1.86001562e+02 + 1.82686808e+02 1.79469334e+02 1.76345054e+02 1.73310107e+02 1.70360841e+02 + 1.67493798e+02 1.64705704e+02 1.61993454e+02 1.59354103e+02 1.56784856e+02 + 1.54283057e+02 1.51846183e+02 1.49471832e+02 1.47157720e+02 1.44901673e+02 + 1.42701615e+02 1.40555573e+02 1.38461660e+02 1.36418077e+02 1.34423107e+02 + 1.32475108e+02 1.30572512e+02 1.28713816e+02 1.26897587e+02 1.25122449e+02 + 1.23387086e+02 1.21690237e+02 1.20030692e+02 1.18407293e+02 1.16818927e+02 + 1.15264525e+02 1.13743063e+02 1.12253557e+02 1.10795059e+02 1.09366659e+02 + 1.07967484e+02 1.06596690e+02 1.05253468e+02 1.03937038e+02 1.02646649e+02 + 1.01381577e+02 1.00141124e+02 9.89246189e+01 9.77314125e+01 9.65608793e+01 + 9.54124160e+01 9.42854397e+01 9.31793879e+01 9.20937174e+01 9.10279032e+01 + 8.99814378e+01 8.89538311e+01 8.79446087e+01 8.69533121e+01 8.59794975e+01 + 8.50227355e+01 8.40826106e+01 8.31587203e+01 8.22506749e+01 8.13580969e+01 + 8.04806206e+01 7.96178913e+01 7.87695656e+01 7.79353102e+01 7.71148019e+01 + 7.63077273e+01 7.55137824e+01 7.47326719e+01 7.39641093e+01 7.32078166e+01 + 7.24635236e+01 7.17309679e+01 7.10098949e+01 7.03000567e+01 6.96012128e+01 + 6.89131293e+01 6.82355787e+01 6.75683399e+01 6.69111977e+01 6.62639431e+01 + 6.56263723e+01 6.49982874e+01 6.43794956e+01 6.37698091e+01 6.31690453e+01 + 6.25770263e+01 6.19935787e+01 6.14185338e+01 6.08517272e+01 6.02929986e+01 + 5.97421918e+01 5.91991547e+01 5.86637390e+01 5.81357998e+01 5.76151962e+01 + 5.71017906e+01 5.65954489e+01 5.60960400e+01 5.56034362e+01 5.51175129e+01 + 5.46381485e+01 5.41652242e+01 5.36986241e+01 5.32382349e+01 5.27839462e+01 + 5.23356501e+01 5.18932410e+01 5.14566160e+01 5.10256745e+01 5.06003182e+01 + 5.01804510e+01 4.97659789e+01 4.93568102e+01 4.89528552e+01 4.85540261e+01 + 4.81602371e+01 4.77714044e+01 4.73874459e+01 4.70082813e+01 4.66338322e+01 + 4.62640217e+01 4.58987746e+01 4.55380174e+01 4.51816782e+01 4.48296865e+01 + 4.44819732e+01 4.41384709e+01 4.37991135e+01 4.34638362e+01 4.31325757e+01 + 4.28052699e+01 4.24818579e+01 4.21622802e+01 4.18464784e+01 4.15343953e+01 + 4.12259749e+01 4.09211624e+01 4.06199038e+01 4.03221464e+01 4.00278386e+01 + 3.97369296e+01 3.94493698e+01 3.91651104e+01 3.88841037e+01 3.86063027e+01 + 3.83316615e+01 3.80601351e+01 3.77916792e+01 3.75262504e+01 3.72638062e+01 + 3.70043048e+01 3.67477053e+01 3.64939673e+01 3.62430514e+01 3.59949189e+01 + 3.57495317e+01 3.55068525e+01 3.52668446e+01 3.50294720e+01 3.47946994e+01 + 3.45624920e+01 3.43328158e+01 3.41056372e+01 3.38809233e+01 3.36586419e+01 + 3.34387612e+01 3.32212499e+01 3.30060774e+01 3.27932136e+01 3.25826288e+01 + 3.23742940e+01 3.21681806e+01 3.19642604e+01 3.17625057e+01 3.15628894e+01 + 3.13653847e+01 3.11699654e+01 3.09766056e+01 3.07852799e+01 3.05959632e+01 + 3.04086309e+01 3.02232588e+01 3.00398232e+01 2.98583005e+01 2.96786677e+01 + 2.95009021e+01 2.93249814e+01 2.91508835e+01 2.89785868e+01 2.88080701e+01 + 2.86393122e+01 2.84722926e+01 2.83069909e+01 2.81433870e+01 2.79814613e+01 + 2.78211942e+01 2.76625666e+01 2.75055597e+01 2.73501548e+01 2.71963336e+01 + 2.70440781e+01 2.68933704e+01 2.67441931e+01 2.65965287e+01 2.64503604e+01 + 2.63056711e+01 2.61624445e+01 2.60206641e+01 2.58803138e+01 2.57413777e+01 + 2.56038401e+01 2.54676856e+01 2.53328988e+01 2.51994647e+01 2.50673684e+01 + 2.49365953e+01 2.48071308e+01 2.46789607e+01 2.45520708e+01 2.44264471e+01 + 2.43020760e+01 2.41789438e+01 2.40570371e+01 2.39363426e+01 2.38168472e+01 + 2.36985380e+01 2.35814021e+01 2.34654270e+01 2.33506000e+01 2.32369090e+01 + 2.31243415e+01 2.30128857e+01 2.29025295e+01 2.27932611e+01 2.26850689e+01 + 2.25779413e+01 2.24718668e+01 2.23668342e+01 2.22628324e+01 2.21598501e+01 + 2.20578765e+01 2.19569007e+01 2.18569121e+01 2.17578999e+01 2.16598537e+01 + 2.15627630e+01 2.14666176e+01 2.13714072e+01 2.12771217e+01 2.11837511e+01 + 2.10912855e+01 2.09997150e+01 2.09090298e+01 2.08192204e+01 2.07302772e+01 + 2.06421906e+01 2.05549512e+01 2.04685498e+01 2.03829771e+01 2.02982239e+01 + 2.02142812e+01 2.01311398e+01 2.00487910e+01 1.99672258e+01 1.98864354e+01 + 1.98064111e+01 1.97271442e+01 1.96486262e+01 1.95708485e+01 1.94938027e+01 + 1.94174804e+01 1.93418732e+01 1.92669729e+01 1.91927713e+01 1.91192603e+01 + 1.90464316e+01 1.89742774e+01 1.89027897e+01 1.88319605e+01 1.87617819e+01 + 1.86922463e+01 1.86233458e+01 1.85550727e+01 1.84874195e+01 1.84203785e+01 + 1.83539421e+01 1.82881030e+01 1.82228537e+01 1.81581868e+01 1.80940949e+01 + 1.80305708e+01 1.79676074e+01 1.79051973e+01 1.78433334e+01 1.77820088e+01 + 1.77212163e+01 1.76609489e+01 1.76011998e+01 1.75419620e+01 1.74832287e+01 + 1.74249931e+01 1.73672484e+01 1.73099880e+01 1.72532052e+01 1.71968933e+01 + 1.71410459e+01 1.70856564e+01 1.70307183e+01 1.69762252e+01 1.69221707e+01 + 1.68685486e+01 1.68153525e+01 1.67625761e+01 1.67102134e+01 1.66582581e+01 + 1.66067041e+01 1.65555455e+01 1.65047762e+01 1.64543902e+01 1.64043816e+01 + 1.63547447e+01 1.63054735e+01 1.62565623e+01 1.62080053e+01 1.61597970e+01 + 1.61119317e+01 1.60644038e+01 1.60172077e+01 1.59703381e+01 1.59237895e+01 + 1.58775564e+01 1.58316337e+01 1.57860159e+01 1.57406980e+01 1.56956746e+01 + 1.56509407e+01 1.56064912e+01 1.55623210e+01 1.55184252e+01 1.54747989e+01 + 1.54314371e+01 1.53883351e+01 1.53454881e+01 1.53028914e+01 1.52605403e+01 + 1.52184302e+01 1.51765565e+01 1.51349148e+01 1.50935005e+01 1.50523092e+01 + 1.50113367e+01 1.49705786e+01 1.49300307e+01 1.48896888e+01 1.48495487e+01 + 1.48096064e+01 1.47698579e+01 1.47302991e+01 1.46909262e+01 1.46517353e+01 + 1.46127226e+01 1.45738843e+01 1.45352167e+01 1.44967163e+01 1.44583793e+01 + 1.44202022e+01 1.43821817e+01 1.43443142e+01 1.43065963e+01 1.42690248e+01 + 1.42315964e+01 1.41943079e+01 1.41571561e+01 1.41201380e+01 1.40832504e+01 + 1.40464903e+01 1.40098550e+01 1.39733414e+01 1.39369467e+01 1.39006681e+01 + 1.38645030e+01 1.38284486e+01 1.37925024e+01 1.37566617e+01 1.37209240e+01 + 1.36852870e+01 1.36497481e+01 1.36143050e+01 1.35789554e+01 1.35436970e+01 + 1.35085277e+01 1.34734452e+01 1.34384476e+01 1.34035326e+01 1.33686983e+01 + 1.33339428e+01 1.32992641e+01 1.32646604e+01 1.32301299e+01 1.31956707e+01 + 1.31612811e+01 1.31269596e+01 1.30927044e+01 1.30585140e+01 1.30243869e+01 + 1.29903215e+01 1.29563163e+01 1.29223701e+01 1.28884813e+01 1.28546488e+01 + 1.28208712e+01 1.27871473e+01 1.27534759e+01 1.27198558e+01 1.26862859e+01 + 1.26527651e+01 1.26192925e+01 1.25858669e+01 1.25524875e+01 1.25191534e+01 + 1.24858635e+01 1.24526171e+01 1.24194134e+01 1.23862516e+01 1.23531309e+01 + 1.23200507e+01 1.22870102e+01 1.22540087e+01 1.22210458e+01 1.21881208e+01 + 1.21552331e+01 1.21223823e+01 1.20895678e+01 1.20567892e+01 1.20240460e+01 + 1.19913379e+01 1.19586644e+01 1.19260252e+01 1.18934200e+01 1.18608486e+01 + 1.18283105e+01 1.17958056e+01 1.17633336e+01 1.17308944e+01 1.16984877e+01 + 1.16661134e+01 1.16337715e+01 1.16014616e+01 1.15691839e+01 1.15369381e+01 + 1.15047243e+01 1.14725424e+01 1.14403924e+01 1.14082743e+01 1.13761882e+01 + 1.13441340e+01 1.13121118e+01 1.12801217e+01 1.12481638e+01 1.12162382e+01 + 1.11843451e+01 1.11524844e+01 1.11206564e+01 1.10888613e+01 1.10570992e+01 + 1.10253702e+01 1.09936747e+01 1.09620128e+01 1.09303847e+01 1.08987906e+01 + 1.08672309e+01 1.08357056e+01 1.08042152e+01 1.07727598e+01 1.07413398e+01 + 1.07099554e+01 1.06786069e+01 1.06472947e+01 1.06160189e+01 1.05847800e+01 + 1.05535783e+01 1.05224140e+01 1.04912875e+01 1.04601992e+01 1.04291494e+01 + 1.03981385e+01 1.03671667e+01 1.03362344e+01 1.03053421e+01 1.02744901e+01 + 1.02436786e+01 1.02129082e+01 1.01821791e+01 1.01514918e+01 1.01208466e+01 + 1.00902439e+01 1.00596841e+01 1.00291676e+01 9.99869465e+00 9.96826576e+00 + 9.93788127e+00 9.90754156e+00 9.87724703e+00 9.84699806e+00 9.81679503e+00 + 9.78663832e+00 9.75652833e+00 9.72646541e+00 9.69644998e+00 9.66648239e+00 + 9.63656303e+00 9.60669228e+00 9.57687051e+00 9.54709811e+00 9.51737543e+00 + 9.48770285e+00 9.45808075e+00 9.42850948e+00 9.39898941e+00 9.36952091e+00 + 9.34010432e+00 9.31074002e+00 9.28142834e+00 9.25216964e+00 9.22296427e+00 + 9.19381257e+00 9.16471488e+00 9.13567154e+00 9.10668288e+00 9.07774924e+00 + 9.04887094e+00 9.02004831e+00 8.99128166e+00 8.96257131e+00 8.93391757e+00 + 8.90532075e+00 8.87678116e+00 8.84829910e+00 8.81987485e+00 8.79150872e+00 + 8.76320099e+00 8.73495195e+00 8.70676187e+00 8.67863103e+00 8.65055970e+00 + 8.62254815e+00 8.59459664e+00 8.56670543e+00 8.53887477e+00 8.51110492e+00 + 8.48339611e+00 8.45574859e+00 8.42816259e+00 8.40063835e+00 8.37317608e+00 + 8.34577603e+00 8.31843839e+00 8.29116339e+00 8.26395124e+00 8.23680214e+00 + 8.20971629e+00 8.18269388e+00 8.15573511e+00 8.12884017e+00 8.10200923e+00 + 8.07524248e+00 8.04854008e+00 8.02190221e+00 7.99532904e+00 7.96882072e+00 + 7.94237740e+00 7.91599925e+00 7.88968640e+00 7.86343901e+00 7.83725720e+00 + 7.81114112e+00 7.78509089e+00 7.75910664e+00 7.73318849e+00 7.70733656e+00 + 7.68155097e+00 7.65583181e+00 7.63017921e+00 7.60459325e+00 7.57907404e+00 + 7.55362167e+00 7.52823623e+00 7.50291780e+00 7.47766647e+00 7.45248231e+00 + 7.42736540e+00 7.40231580e+00 7.37733359e+00 7.35241882e+00 7.32757156e+00 + 7.30279186e+00 7.27807976e+00 7.25343533e+00 7.22885860e+00 7.20434961e+00 + 7.17990840e+00 7.15553501e+00 7.13122946e+00 7.10699178e+00 7.08282200e+00 + 7.05872014e+00 7.03468621e+00 7.01072022e+00 6.98682220e+00 6.96299214e+00 + 6.93923004e+00 6.91553592e+00 6.89190977e+00 6.86835159e+00 6.84486136e+00 + 6.82143907e+00 6.79808472e+00 6.77479828e+00 6.75157975e+00 6.72842908e+00 + 6.70534627e+00 6.68233128e+00 6.65938408e+00 6.63650464e+00 6.61369293e+00 + 6.59094890e+00 6.56827252e+00 6.54566374e+00 6.52312252e+00 6.50064881e+00 + 6.47824255e+00 6.45590371e+00 6.43363221e+00 6.41142801e+00 6.38929105e+00 + 6.36722125e+00 6.34521857e+00 6.32328293e+00 6.30141427e+00 6.27961251e+00 + 6.25787758e+00 6.23620941e+00 6.21460793e+00 6.19307305e+00 6.17160469e+00 + 6.15020277e+00 6.12886721e+00 6.10759793e+00 6.08639483e+00 6.06525782e+00 + 6.04418682e+00 6.02318173e+00 6.00224246e+00 5.98136891e+00 5.96056098e+00 + 5.93981858e+00 5.91914161e+00 5.89852995e+00 5.87798352e+00 5.85750219e+00 + 5.83708588e+00 5.81673446e+00 5.79644783e+00 5.77622588e+00 5.75606849e+00 + 5.73597556e+00 5.71594697e+00 5.69598259e+00 5.67608233e+00 5.65624605e+00 + 5.63647363e+00 5.61676497e+00 5.59711992e+00 5.57753838e+00 5.55802022e+00 + 5.53856531e+00 5.51917352e+00 5.49984474e+00 5.48057882e+00 5.46137565e+00 + 5.44223509e+00 5.42315701e+00 5.40414129e+00 5.38518777e+00 5.36629635e+00 + 5.34746687e+00 5.32869920e+00 5.30999322e+00 5.29134877e+00 5.27276573e+00 + 5.25424395e+00 5.23578330e+00 5.21738364e+00 5.19904482e+00 5.18076671e+00 + 5.16254917e+00 5.14439204e+00 5.12629520e+00 5.10825849e+00 5.09028177e+00 + 5.07236490e+00 5.05450773e+00 5.03671012e+00 5.01897192e+00 5.00129298e+00 + 4.98367316e+00 4.96611231e+00 4.94861028e+00 4.93116692e+00 4.91378209e+00 + 4.89645563e+00 4.87918740e+00 4.86197724e+00 4.84482501e+00 4.82773055e+00 + 4.81069372e+00 4.79371436e+00 4.77679233e+00 4.75992746e+00 4.74311961e+00 + 4.72636862e+00 4.70967435e+00 4.69303663e+00 4.67645533e+00 4.65993027e+00 + 4.64346132e+00 4.62704831e+00 4.61069110e+00 4.59438952e+00 4.57814343e+00 + 4.56195267e+00 4.54581708e+00 4.52973652e+00 4.51371082e+00 4.49773984e+00 + 4.48182341e+00 4.46596139e+00 4.45015361e+00 4.43439993e+00 4.41870018e+00 + 4.40305422e+00 4.38746188e+00 4.37192301e+00 4.35643746e+00 4.34100508e+00 + 4.32562570e+00 4.31029917e+00 4.29502534e+00 4.27980405e+00 4.26463514e+00 + 4.24951847e+00 4.23445387e+00 4.21944120e+00 4.20448029e+00 4.18957099e+00 + 4.17471315e+00 4.15990661e+00 4.14515122e+00 4.13044682e+00 4.11579326e+00 + 4.10119038e+00 4.08663804e+00 4.07213607e+00 4.05768433e+00 4.04328265e+00 + 4.02893089e+00 4.01462889e+00 4.00037650e+00 3.98617357e+00 3.97201993e+00 + 3.95791545e+00 3.94385997e+00 3.92985333e+00 3.91589538e+00 3.90198597e+00 + 3.88812495e+00 3.87431217e+00 3.86054747e+00 3.84683071e+00 3.83316173e+00 + 3.81954038e+00 3.80596652e+00 3.79243998e+00 3.77896063e+00 3.76552831e+00 + 3.75214287e+00 3.73880416e+00 3.72551204e+00 3.71226635e+00 3.69906694e+00 + 3.68591367e+00 3.67280639e+00 3.65974495e+00 3.64672921e+00 3.63375901e+00 + 3.62083421e+00 3.60795466e+00 3.59512021e+00 3.58233073e+00 3.56958605e+00 + 3.55688605e+00 3.54423056e+00 3.53161946e+00 3.51905258e+00 3.50652979e+00 + 3.49405095e+00 3.48161590e+00 3.46922451e+00 3.45687663e+00 3.44457213e+00 + 3.43231084e+00 3.42009264e+00 3.40791739e+00 3.39578493e+00 3.38369513e+00 + 3.37164785e+00 3.35964295e+00 3.34768028e+00 3.33575971e+00 3.32388109e+00 + 3.31204429e+00 3.30024917e+00 3.28849559e+00 3.27678341e+00 3.26511249e+00 + 3.25348269e+00 3.24189388e+00 3.23034592e+00 3.21883867e+00 3.20737200e+00 + 3.19594577e+00 3.18455984e+00 3.17321408e+00 3.16190835e+00 3.15064252e+00 + 3.13941646e+00 3.12823003e+00 3.11708309e+00 3.10597552e+00 3.09490717e+00 + 3.08387793e+00 3.07288764e+00 3.06193620e+00 3.05102345e+00 3.04014927e+00 + 3.02931353e+00 3.01851611e+00 3.00775685e+00 2.99703565e+00 2.98635237e+00 + 2.97570688e+00 2.96509904e+00 2.95452874e+00 2.94399585e+00 2.93350023e+00 + 2.92304176e+00 2.91262032e+00 2.90223577e+00 2.89188799e+00 2.88157685e+00 + 2.87130223e+00 2.86106401e+00 2.85086205e+00 2.84069624e+00 2.83056645e+00 + 2.82047255e+00 2.81041442e+00 2.80039195e+00 2.79040500e+00 2.78045345e+00 + 2.77053719e+00 2.76065609e+00 2.75081003e+00 2.74099889e+00 2.73122254e+00 + 2.72148088e+00 2.71177377e+00 2.70210110e+00 2.69246275e+00 2.68285861e+00 + 2.67328854e+00 2.66375244e+00 2.65425019e+00 2.64478167e+00 2.63534676e+00 + 2.62594535e+00 2.61657732e+00 2.60724255e+00 2.59794093e+00 2.58867235e+00 + 2.57943668e+00 2.57023382e+00 2.56106365e+00 2.55192606e+00 2.54282093e+00 + 2.53374816e+00 2.52470762e+00 2.51569920e+00 2.50672280e+00 2.49777830e+00 + 2.48886559e+00 2.47998457e+00 2.47113511e+00 2.46231711e+00 2.45353046e+00 + 2.44477506e+00 2.43605078e+00 2.42735752e+00 2.41869518e+00 2.41006365e+00 + 2.40146281e+00 2.39289257e+00 2.38435280e+00 2.37584342e+00 2.36736430e+00 + 2.35891535e+00 2.35049646e+00 2.34210752e+00 2.33374843e+00 2.32541909e+00 + 2.31711938e+00 2.30884921e+00 2.30060847e+00 2.29239706e+00 2.28421488e+00 + 2.27606182e+00 2.26793778e+00 2.25984266e+00 2.25177636e+00 2.24373877e+00 + 2.23572980e+00 2.22774934e+00 2.21979730e+00 2.21187357e+00 2.20397806e+00 + 2.19611066e+00 2.18827128e+00 2.18045982e+00 2.17267618e+00 2.16492026e+00 + 2.15719196e+00 2.14949119e+00 2.14181785e+00 2.13417184e+00 2.12655307e+00 + 2.11896144e+00 2.11139686e+00 2.10385922e+00 2.09634844e+00 2.08886442e+00 + 2.08140707e+00 2.07397629e+00 2.06657198e+00 2.05919406e+00 2.05184243e+00 + 2.04451700e+00 2.03721767e+00 2.02994436e+00 2.02269697e+00 2.01547541e+00 + 2.00827959e+00 2.00110941e+00 1.99396479e+00 1.98684564e+00 1.97975187e+00 + 1.97268338e+00 1.96564009e+00 1.95862191e+00 1.95162875e+00 1.94466051e+00 + 1.93771713e+00 1.93079849e+00 1.92390453e+00 1.91703514e+00 1.91019025e+00 + 1.90336976e+00 1.89657359e+00 1.88980166e+00 1.88305387e+00 1.87633015e+00 + 1.86963040e+00 1.86295454e+00 1.85630249e+00 1.84967417e+00 1.84306948e+00 + 1.83648835e+00 1.82993069e+00 1.82339642e+00 1.81688545e+00 1.81039771e+00 + 1.80393311e+00 1.79749156e+00 1.79107300e+00 1.78467732e+00 1.77830446e+00 + 1.77195434e+00 1.76562686e+00 1.75932196e+00 1.75303955e+00 1.74677955e+00 + 1.74054188e+00 1.73432647e+00 1.72813323e+00 1.72196208e+00 1.71581295e+00 + 1.70968576e+00 1.70358043e+00 1.69749689e+00 1.69143505e+00 1.68539483e+00 + 1.67937617e+00 1.67337899e+00 1.66740320e+00 1.66144874e+00 1.65551552e+00 + 1.64960347e+00 1.64371252e+00 1.63784260e+00 1.63199361e+00 1.62616550e+00 + 1.62035819e+00 1.61457160e+00 1.60880567e+00 1.60306030e+00 1.59733545e+00 + 1.59163102e+00 1.58594695e+00 1.58028317e+00 1.57463960e+00 1.56901617e+00 + 1.56341281e+00 1.55782945e+00 1.55226601e+00 1.54672244e+00 1.54119865e+00 + 1.53569457e+00 1.53021014e+00 1.52474528e+00 1.51929993e+00 1.51387402e+00 + 1.50846747e+00 1.50308023e+00 1.49771221e+00 1.49236335e+00 1.48703358e+00 + 1.48172284e+00 1.47643106e+00 1.47115816e+00 1.46590409e+00 1.46066878e+00 + 1.45545215e+00 1.45025414e+00 1.44507469e+00 1.43991373e+00 1.43477119e+00 + 1.42964701e+00 1.42454112e+00 1.41945346e+00 1.41438397e+00 1.40933257e+00 + 1.40429920e+00 1.39928380e+00 1.39428631e+00 1.38930666e+00 1.38434479e+00 + 1.37940063e+00 1.37447412e+00 1.36956521e+00 1.36467381e+00 1.35979988e+00 + 1.35494335e+00 1.35010416e+00 1.34528225e+00 1.34047755e+00 1.33569001e+00 + 1.33091956e+00 1.32616615e+00 1.32142970e+00 1.31671017e+00 1.31200748e+00 + 1.30732159e+00 1.30265243e+00 1.29799993e+00 1.29336405e+00 1.28874473e+00 + 1.28414189e+00 1.27955549e+00 1.27498547e+00 1.27043177e+00 1.26589432e+00 + 1.26137308e+00 1.25686798e+00 1.25237896e+00 1.24790598e+00 1.24344896e+00 + 1.23900786e+00 1.23458262e+00 1.23017318e+00 1.22577949e+00 1.22140148e+00 + 1.21703911e+00 1.21269231e+00 1.20836104e+00 1.20404523e+00 1.19974484e+00 + 1.19545980e+00 1.19119006e+00 1.18693557e+00 1.18269627e+00 1.17847210e+00 + 1.17426303e+00 1.17006898e+00 1.16588991e+00 1.16172576e+00 1.15757649e+00 + 1.15344203e+00 1.14932233e+00 1.14521735e+00 1.14112702e+00 1.13705130e+00 + 1.13299014e+00 1.12894348e+00 1.12491127e+00 1.12089346e+00 1.11689000e+00 + 1.11290083e+00 1.10892591e+00 1.10496519e+00 1.10101861e+00 1.09708612e+00 + 1.09316768e+00 1.08926323e+00 1.08537272e+00 1.08149611e+00 1.07763334e+00 + 1.07378437e+00 1.06994914e+00 1.06612761e+00 1.06231972e+00 1.05852544e+00 + 1.05474470e+00 1.05097747e+00 1.04722369e+00 1.04348332e+00 1.03975630e+00 + 1.03604260e+00 1.03234216e+00 1.02865493e+00 1.02498087e+00 1.02131993e+00 + 1.01767207e+00 1.01403724e+00 1.01041538e+00 1.00680646e+00 1.00321043e+00 + 9.99627246e-01 9.96056856e-01 9.92499216e-01 9.88954283e-01 9.85422010e-01 + 9.81902352e-01 9.78395264e-01 9.74900702e-01 9.71418620e-01 9.67948974e-01 + 9.64491719e-01 9.61046812e-01 9.57614208e-01 9.54193864e-01 9.50785735e-01 + 9.47389779e-01 9.44005950e-01 9.40634207e-01 9.37274506e-01 9.33926805e-01 + 9.30591059e-01 9.27267227e-01 9.23955266e-01 9.20655134e-01 9.17366788e-01 + 9.14090187e-01 9.10825288e-01 9.07572050e-01 9.04330430e-01 9.01100389e-01 + 8.97881883e-01 8.94674872e-01 8.91479316e-01 8.88295172e-01 8.85122401e-01 + 8.81960962e-01 8.78810814e-01 8.75671916e-01 8.72544230e-01 8.69427714e-01 + 8.66322329e-01 8.63228035e-01 8.60144793e-01 8.57072563e-01 8.54011306e-01 + 8.50960982e-01 8.47921552e-01 8.44892979e-01 8.41875222e-01 8.38868243e-01 + 8.35872004e-01 8.32886467e-01 8.29911592e-01 8.26947343e-01 8.23993681e-01 + 8.21050568e-01 8.18117967e-01 8.15195841e-01 8.12284151e-01 8.09382860e-01 + 8.06491932e-01 8.03611329e-01 8.00741015e-01 7.97880952e-01 7.95031104e-01 + 7.92191436e-01 7.89361909e-01 7.86542489e-01 7.83733138e-01 7.80932737e-01 + 7.78135481e-01 7.75340559e-01 7.72548015e-01 7.69757898e-01 7.66970253e-01 + 7.64185126e-01 7.61402562e-01 7.58622607e-01 7.55845306e-01 7.53070703e-01 + 7.50298843e-01 7.47529769e-01 7.44763525e-01 7.42000155e-01 7.39239702e-01 + 7.36482208e-01 7.33727716e-01 7.30976267e-01 7.28227905e-01 7.25482670e-01 + 7.22740604e-01 7.20001747e-01 7.17266140e-01 7.14533823e-01 7.11804837e-01 + 7.09079221e-01 7.06357014e-01 7.03638256e-01 7.00922986e-01 6.98211241e-01 + 6.95503060e-01 6.92798481e-01 6.90097542e-01 6.87400280e-01 6.84706731e-01 + 6.82016933e-01 6.79330922e-01 6.76648734e-01 6.73970405e-01 6.71295970e-01 + 6.68625464e-01 6.65958924e-01 6.63296382e-01 6.60637874e-01 6.57983434e-01 + 6.55333095e-01 6.52686890e-01 6.50044854e-01 6.47407019e-01 6.44773417e-01 + 6.42144081e-01 6.39519042e-01 6.36898334e-01 6.34281986e-01 6.31670031e-01 + 6.29062499e-01 6.26459420e-01 6.23860826e-01 6.21266746e-01 6.18677209e-01 + 6.16092246e-01 6.13511886e-01 6.10936157e-01 6.08365088e-01 6.05798708e-01 + 6.03237045e-01 6.00680126e-01 5.98127979e-01 5.95580631e-01 5.93038110e-01 + 5.90500441e-01 5.87967652e-01 5.85439769e-01 5.82916817e-01 5.80398823e-01 + 5.77885811e-01 5.75377807e-01 5.72874835e-01 5.70376921e-01 5.67884088e-01 + 5.65396360e-01 5.62913762e-01 5.60436316e-01 5.57964047e-01 5.55496977e-01 + 5.53035128e-01 5.50578524e-01 5.48127187e-01 5.45681138e-01 5.43240399e-01 + 5.40804991e-01 5.38374937e-01 5.35950256e-01 5.33530970e-01 5.31117099e-01 + 5.28708663e-01 5.26305682e-01 5.23908176e-01 5.21516164e-01 5.19129666e-01 + 5.16748699e-01 5.14373284e-01 5.12003438e-01 5.09639180e-01 5.07280528e-01 + 5.04927499e-01 5.02580111e-01 5.00238381e-01 4.97902326e-01 4.95571964e-01 + 4.93247309e-01 4.90928379e-01 4.88615190e-01 4.86307758e-01 4.84006098e-01 + 4.81710225e-01 4.79420155e-01 4.77135903e-01 4.74857483e-01 4.72584909e-01 + 4.70318196e-01 4.68057358e-01 4.65802409e-01 4.63553362e-01 4.61310230e-01 + 4.59073026e-01 4.56841764e-01 4.54616456e-01 4.52397114e-01 4.50183750e-01 + 4.47976377e-01 4.45775007e-01 4.43579650e-01 4.41390318e-01 4.39207022e-01 + 4.37029774e-01 4.34858583e-01 4.32693460e-01 4.30534416e-01 4.28381460e-01 + 4.26234603e-01 4.24093854e-01 4.21959222e-01 4.19830716e-01 4.17708346e-01 + 4.15592121e-01 4.13482048e-01 4.11378137e-01 4.09280395e-01 4.07188831e-01 + 4.05103452e-01 4.03024267e-01 4.00951281e-01 3.98884503e-01 3.96823939e-01 + 3.94769597e-01 3.92721483e-01 3.90679603e-01 3.88643963e-01 3.86614570e-01 + 3.84591429e-01 3.82574547e-01 3.80563928e-01 3.78559578e-01 3.76561502e-01 + 3.74569704e-01 3.72584190e-01 3.70604965e-01 3.68632031e-01 3.66665395e-01 + 3.64705058e-01 3.62751027e-01 3.60803303e-01 3.58861891e-01 3.56926793e-01 + 3.54998014e-01 3.53075555e-01 3.51159420e-01 3.49249611e-01 3.47346130e-01 + 3.45448981e-01 3.43558164e-01 3.41673682e-01 3.39795537e-01 3.37923729e-01 + 3.36058261e-01 3.34199134e-01 3.32346349e-01 3.30499906e-01 3.28659807e-01 + 3.26826052e-01 3.24998641e-01 3.23177575e-01 3.21362854e-01 3.19554477e-01 + 3.17752446e-01 3.15956758e-01 3.14167414e-01 3.12384413e-01 3.10607754e-01 + 3.08837437e-01 3.07073459e-01 3.05315821e-01 3.03564519e-01 3.01819554e-01 + 3.00080922e-01 2.98348623e-01 2.96622654e-01 2.94903013e-01 2.93189698e-01 + 2.91482706e-01 2.89782035e-01 2.88087682e-01 2.86399644e-01 2.84717918e-01 + 2.83042501e-01 2.81373389e-01 2.79710580e-01 2.78054070e-01 2.76403855e-01 + 2.74759931e-01 2.73122294e-01 2.71490940e-01 2.69865865e-01 2.68247065e-01 + 2.66634536e-01 2.65028271e-01 2.63428268e-01 2.61834520e-01 2.60247024e-01 + 2.58665773e-01 2.57090764e-01 2.55521989e-01 2.53959444e-01 2.52403124e-01 + 2.50853022e-01 2.49309133e-01 2.47771451e-01 2.46239969e-01 2.44714682e-01 + 2.43195584e-01 2.41682667e-01 2.40175925e-01 2.38675352e-01 2.37180941e-01 + 2.35692686e-01 2.34210578e-01 2.32734611e-01 2.31264778e-01 2.29801072e-01 + 2.28343485e-01 2.26892010e-01 2.25446638e-01 2.24007363e-01 2.22574177e-01 + 2.21147071e-01 2.19726037e-01 2.18311068e-01 2.16902156e-01 2.15499291e-01 + 2.14102466e-01 2.12711671e-01 2.11326899e-01 2.09948141e-01 2.08575387e-01 + 2.07208630e-01 2.05847859e-01 2.04493066e-01 2.03144242e-01 2.01801377e-01 + 2.00464463e-01 1.99133489e-01 1.97808446e-01 1.96489324e-01 1.95176114e-01 + 1.93868806e-01 1.92567391e-01 1.91271857e-01 1.89982196e-01 1.88698396e-01 + 1.87420448e-01 1.86148342e-01 1.84882066e-01 1.83621611e-01 1.82366967e-01 + 1.81118121e-01 1.79875065e-01 1.78637786e-01 1.77406275e-01 1.76180520e-01 + 1.74960510e-01 1.73746235e-01 1.72537682e-01 1.71334841e-01 1.70137701e-01 + 1.68946250e-01 1.67760477e-01 1.66580371e-01 1.65405919e-01 1.64237110e-01 + 1.63073933e-01 1.61916375e-01 1.60764425e-01 1.59618071e-01 1.58477302e-01 + 1.57342104e-01 1.56212466e-01 1.55088376e-01 1.53969822e-01 1.52856791e-01 + 1.51749271e-01 1.50647250e-01 1.49550715e-01 1.48459654e-01 1.47374054e-01 + 1.46293903e-01 1.45219188e-01 1.44149895e-01 1.43086014e-01 1.42027530e-01 + 1.40974430e-01 1.39926703e-01 1.38884334e-01 1.37847312e-01 1.36815622e-01 + 1.35789251e-01 1.34768187e-01 1.33752417e-01 1.32741926e-01 1.31736702e-01 + 1.30736731e-01 1.29742001e-01 1.28752496e-01 1.27768205e-01 1.26789113e-01 + 1.25815206e-01 1.24846472e-01 1.23882897e-01 1.22924466e-01 1.21971167e-01 + 1.21022984e-01 1.20079906e-01 1.19141916e-01 1.18209003e-01 1.17281151e-01 + 1.16358347e-01 1.15440577e-01 1.14527827e-01 1.13620082e-01 1.12717329e-01 + 1.11819553e-01 1.10926741e-01 1.10038877e-01 1.09155949e-01 1.08277940e-01 + 1.07404838e-01 1.06536628e-01 1.05673296e-01 1.04814826e-01 1.03961206e-01 + 1.03112419e-01 1.02268453e-01 1.01429291e-01 1.00594921e-01 9.97653261e-02 + 9.89404933e-02 9.81204076e-02 9.73050542e-02 9.64944186e-02 9.56884861e-02 + 9.48872421e-02 9.40906717e-02 9.32987602e-02 9.25114930e-02 9.17288552e-02 + 9.09508321e-02 9.01774088e-02 8.94085704e-02 8.86443023e-02 8.78845894e-02 + 8.71294169e-02 8.63787700e-02 8.56326336e-02 8.48909929e-02 8.41538330e-02 + 8.34211388e-02 8.26928954e-02 8.19690879e-02 8.12497011e-02 8.05347202e-02 + 7.98241301e-02 7.91179157e-02 7.84160621e-02 7.77185541e-02 7.70253768e-02 + 7.63365150e-02 7.56519536e-02 7.49716776e-02 7.42956719e-02 7.36239214e-02 + 7.29564109e-02 7.22931253e-02 7.16340496e-02 7.09791686e-02 7.03284671e-02 + 6.96819300e-02 6.90395422e-02 6.84012886e-02 6.77671539e-02 6.71371231e-02 + 6.65111809e-02 6.58893122e-02 6.52715019e-02 6.46577348e-02 6.40479958e-02 + 6.34422696e-02 6.28405411e-02 6.22427951e-02 6.16490165e-02 6.10591902e-02 + 6.04733010e-02 5.98913336e-02 5.93132730e-02 5.87391041e-02 5.81688116e-02 + 5.76023804e-02 5.70397954e-02 5.64810414e-02 5.59261034e-02 5.53749662e-02 + 5.48276146e-02 5.42840336e-02 5.37442081e-02 5.32081229e-02 5.26757629e-02 + 5.21471132e-02 5.16221585e-02 5.11008839e-02 5.05832742e-02 5.00693144e-02 + 4.95589895e-02 4.90522845e-02 4.85491842e-02 4.80496738e-02 4.75537381e-02 + 4.70613623e-02 4.65725312e-02 4.60872300e-02 4.56054437e-02 4.51271574e-02 + 4.46523560e-02 4.41810248e-02 4.37131487e-02 4.32487129e-02 4.27877026e-02 + 4.23301028e-02 4.18758987e-02 4.14250754e-02 4.09776182e-02 4.05335123e-02 + 4.00927428e-02 3.96552949e-02 3.92211540e-02 3.87903053e-02 3.83627340e-02 + 3.79384255e-02 3.75173650e-02 3.70995379e-02 3.66849296e-02 3.62735253e-02 + 3.58653105e-02 3.54602706e-02 3.50583911e-02 3.46596572e-02 3.42640546e-02 + 3.38715687e-02 3.34821850e-02 3.30958890e-02 3.27126662e-02 3.23325023e-02 + 3.19553828e-02 3.15812932e-02 3.12102194e-02 3.08421468e-02 3.04770612e-02 + 3.01149482e-02 2.97557936e-02 2.93995832e-02 2.90463026e-02 2.86959377e-02 + 2.83484743e-02 2.80038982e-02 2.76621952e-02 2.73233514e-02 2.69873525e-02 + 2.66541845e-02 2.63238333e-02 2.59962850e-02 2.56715256e-02 2.53495410e-02 + 2.50303174e-02 2.47138408e-02 2.44000974e-02 2.40890733e-02 2.37807546e-02 + 2.34751275e-02 2.31721784e-02 2.28718933e-02 2.25742587e-02 2.22792607e-02 + 2.19868858e-02 2.16971202e-02 2.14099505e-02 2.11253629e-02 2.08433439e-02 + 2.05638801e-02 2.02869579e-02 2.00125638e-02 1.97406844e-02 1.94713063e-02 + 1.92044162e-02 1.89400006e-02 1.86780462e-02 1.84185398e-02 1.81614681e-02 + 1.79068179e-02 1.76545759e-02 1.74047290e-02 1.71572641e-02 1.69121681e-02 + 1.66694279e-02 1.64290304e-02 1.61909626e-02 1.59552116e-02 1.57217644e-02 + 1.54906081e-02 1.52617298e-02 1.50351167e-02 1.48107559e-02 1.45886347e-02 + 1.43687403e-02 1.41510600e-02 1.39355811e-02 1.37222909e-02 1.35111769e-02 + 1.33022264e-02 1.30954269e-02 1.28907658e-02 1.26882308e-02 1.24878092e-02 + 1.22894888e-02 1.20932571e-02 1.18991017e-02 1.17070104e-02 1.15169709e-02 + 1.13289709e-02 1.11429983e-02 1.09590407e-02 1.07770862e-02 1.05971226e-02 + 1.04191377e-02 1.02431196e-02 1.00690563e-02 9.89693584e-03 9.72674620e-03 + 9.55847554e-03 9.39211199e-03 9.22764373e-03 9.06505895e-03 8.90434592e-03 + 8.74549290e-03 8.58848822e-03 8.43332023e-03 8.27997732e-03 8.12844792e-03 + 7.97872048e-03 7.83078350e-03 7.68462553e-03 7.54023512e-03 7.39760089e-03 + 7.25671149e-03 7.11755558e-03 6.98012189e-03 6.84439918e-03 6.71037622e-03 + 6.57804186e-03 6.44738496e-03 6.31839441e-03 6.19105916e-03 6.06536818e-03 + 5.94131048e-03 5.81887512e-03 5.69805119e-03 5.57882780e-03 5.46119412e-03 + 5.34513934e-03 5.23065272e-03 5.11772351e-03 5.00634104e-03 4.89649464e-03 + 4.78817372e-03 4.68136769e-03 4.57606601e-03 4.47225819e-03 4.36993376e-03 + 4.26908230e-03 4.16969342e-03 4.07175677e-03 3.97526205e-03 3.88019897e-03 + 3.78655730e-03 3.69432685e-03 3.60349746e-03 3.51405899e-03 3.42600138e-03 + 3.33931457e-03 3.25398856e-03 3.17001338e-03 3.08737909e-03 3.00607580e-03 + 2.92609366e-03 2.84742285e-03 2.77005359e-03 2.69397614e-03 2.61918079e-03 + 2.54565788e-03 2.47339778e-03 2.40239090e-03 2.33262770e-03 2.26409866e-03 + 2.19679431e-03 2.13070520e-03 2.06582195e-03 2.00213518e-03 1.93963558e-03 + 1.87831387e-03 1.81816080e-03 1.75916715e-03 1.70132377e-03 1.64462151e-03 + 1.58905129e-03 1.53460405e-03 1.48127077e-03 1.42904247e-03 1.37791021e-03 + 1.32786509e-03 1.27889824e-03 1.23100083e-03 1.18416408e-03 1.13837922e-03 + 1.09363756e-03 1.04993040e-03 1.00724912e-03 9.65585108e-04 9.24929807e-04 + 8.85274690e-04 8.46611271e-04 8.08931100e-04 7.72225766e-04 7.36486893e-04 + 7.01706146e-04 6.67875227e-04 6.34985873e-04 6.03029860e-04 5.71999004e-04 + 5.41885154e-04 5.12680200e-04 4.84376068e-04 4.56964721e-04 4.30438160e-04 + 4.04788423e-04 3.80007585e-04 3.56087759e-04 3.33021095e-04 3.10799778e-04 + 2.89416035e-04 2.68862124e-04 2.49130345e-04 2.30213031e-04 2.12102556e-04 + 1.94791327e-04 1.78271789e-04 1.62536427e-04 1.47577757e-04 1.33388336e-04 + 1.19960756e-04 1.07287646e-04 9.53616714e-05 8.41755336e-05 7.37219709e-05 + 6.39937580e-05 5.49837057e-05 4.66846611e-05 3.90895074e-05 3.21911642e-05 + 2.59825869e-05 2.04567671e-05 1.56067322e-05 1.14255457e-05 7.90630673e-06 + 5.04215042e-06 2.82624746e-06 1.25180428e-06 3.12062870e-07 0.00000000e+00 + 2.22608223e+06 1.64289070e+06 8.11494877e+05 5.34498159e+05 3.96098406e+05 + 3.13135260e+05 2.57888659e+05 2.18478622e+05 1.88965201e+05 1.66048456e+05 + 1.47748454e+05 1.32805265e+05 1.20378956e+05 1.09888059e+05 1.00917256e+05 + 9.31619976e+04 8.63938880e+04 8.04382849e+04 7.51593680e+04 7.04499226e+04 + 6.62241876e+04 6.24127473e+04 5.89588161e+04 5.58154926e+04 5.29437001e+04 + 5.03106215e+04 4.78884953e+04 4.56536791e+04 4.35859138e+04 4.16677404e+04 + 3.98840326e+04 3.82216210e+04 3.66689867e+04 3.52160114e+04 3.38537712e+04 + 3.25743658e+04 3.13707761e+04 3.02367454e+04 2.91666785e+04 2.81555574e+04 + 2.71988682e+04 2.62925404e+04 2.54328935e+04 2.46165919e+04 2.38406052e+04 + 2.31021746e+04 2.23987834e+04 2.17281308e+04 2.10881094e+04 2.04767859e+04 + 1.98923829e+04 1.93332643e+04 1.87979211e+04 1.82849596e+04 1.77930907e+04 + 1.73211202e+04 1.68679407e+04 1.64325234e+04 1.60139115e+04 1.56112142e+04 + 1.52236011e+04 1.48502971e+04 1.44905781e+04 1.41437667e+04 1.38092289e+04 + 1.34863701e+04 1.31746328e+04 1.28734934e+04 1.25824598e+04 1.23010689e+04 + 1.20288850e+04 1.17654971e+04 1.15105181e+04 1.12635822e+04 1.10243442e+04 + 1.07924777e+04 1.05676738e+04 1.03496404e+04 1.01381006e+04 9.93279185e+03 + 9.73346539e+03 9.53988496e+03 9.35182621e+03 9.16907594e+03 8.99143148e+03 + 8.81869996e+03 8.65069784e+03 8.48725028e+03 8.32819068e+03 8.17336021e+03 + 8.02260733e+03 7.87578745e+03 7.73276246e+03 7.59340047e+03 7.45757538e+03 + 7.32516664e+03 7.19605891e+03 7.07014181e+03 6.94730967e+03 6.82746123e+03 + 6.71049949e+03 6.59633145e+03 6.48486791e+03 6.37602330e+03 6.26971548e+03 + 6.16586559e+03 6.06439787e+03 5.96523956e+03 5.86832068e+03 5.77357397e+03 + 5.68093472e+03 5.59034067e+03 5.50173190e+03 5.41505072e+03 5.33024154e+03 + 5.24725084e+03 5.16602702e+03 5.08652033e+03 5.00868281e+03 4.93246818e+03 + 4.85783182e+03 4.78473061e+03 4.71312298e+03 4.64296874e+03 4.57422909e+03 + 4.50686653e+03 4.44084484e+03 4.37612898e+03 4.31268507e+03 4.25048036e+03 + 4.18948314e+03 4.12966275e+03 4.07098949e+03 4.01343463e+03 3.95697033e+03 + 3.90156963e+03 3.84720641e+03 3.79385536e+03 3.74149196e+03 3.69009241e+03 + 3.63963365e+03 3.59009333e+03 3.54144974e+03 3.49368184e+03 3.44676919e+03 + 3.40069196e+03 3.35543090e+03 3.31096732e+03 3.26728306e+03 3.22436048e+03 + 3.18218244e+03 3.14073230e+03 3.09999386e+03 3.05995140e+03 3.02058961e+03 + 2.98189362e+03 2.94384896e+03 2.90644155e+03 2.86965769e+03 2.83348407e+03 + 2.79790771e+03 2.76291598e+03 2.72849659e+03 2.69463757e+03 2.66132727e+03 + 2.62855432e+03 2.59630767e+03 2.56457654e+03 2.53335042e+03 2.50261908e+03 + 2.47237254e+03 2.44260108e+03 2.41329520e+03 2.38444567e+03 2.35604345e+03 + 2.32807975e+03 2.30054598e+03 2.27343378e+03 2.24673495e+03 2.22044154e+03 + 2.19454575e+03 2.16903998e+03 2.14391680e+03 2.11916899e+03 2.09478944e+03 + 2.07077127e+03 2.04710771e+03 2.02379217e+03 2.00081820e+03 1.97817951e+03 + 1.95586995e+03 1.93388350e+03 1.91221428e+03 1.89085655e+03 1.86980469e+03 + 1.84905320e+03 1.82859671e+03 1.80842996e+03 1.78854783e+03 1.76894527e+03 + 1.74961738e+03 1.73055933e+03 1.71176643e+03 1.69323406e+03 1.67495772e+03 + 1.65693298e+03 1.63915554e+03 1.62162115e+03 1.60432568e+03 1.58726507e+03 + 1.57043536e+03 1.55383265e+03 1.53745313e+03 1.52129308e+03 1.50534883e+03 + 1.48961681e+03 1.47409351e+03 1.45877550e+03 1.44365939e+03 1.42874190e+03 + 1.41401979e+03 1.39948989e+03 1.38514908e+03 1.37099432e+03 1.35702262e+03 + 1.34323106e+03 1.32961675e+03 1.31617689e+03 1.30290871e+03 1.28980950e+03 + 1.27687660e+03 1.26410741e+03 1.25149936e+03 1.23904996e+03 1.22675672e+03 + 1.21461725e+03 1.20262917e+03 1.19079016e+03 1.17909792e+03 1.16755022e+03 + 1.15614487e+03 1.14487969e+03 1.13375258e+03 1.12276144e+03 1.11190424e+03 + 1.10117898e+03 1.09058367e+03 1.08011639e+03 1.06977524e+03 1.05955834e+03 + 1.04946387e+03 1.03949003e+03 1.02963505e+03 1.01989720e+03 1.01027475e+03 + 1.00076605e+03 9.91369431e+02 9.82083287e+02 9.72906024e+02 9.63836078e+02 + 9.54871914e+02 9.46012020e+02 9.37254912e+02 9.28599132e+02 9.20043246e+02 + 9.11585843e+02 9.03225538e+02 8.94960967e+02 8.86790792e+02 8.78713694e+02 + 8.70728379e+02 8.62833573e+02 8.55028022e+02 8.47310495e+02 8.39679780e+02 + 8.32134686e+02 8.24674039e+02 8.17296688e+02 8.10001498e+02 8.02787353e+02 + 7.95653155e+02 7.88597823e+02 7.81620297e+02 7.74719529e+02 7.67894491e+02 + 7.61144170e+02 7.54467571e+02 7.47863712e+02 7.41331629e+02 7.34870371e+02 + 7.28479005e+02 7.22156610e+02 7.15902279e+02 7.09715123e+02 7.03594262e+02 + 6.97538833e+02 6.91547986e+02 6.85620882e+02 6.79756696e+02 6.73954618e+02 + 6.68213847e+02 6.62533596e+02 6.56913090e+02 6.51351565e+02 6.45848269e+02 + 6.40402462e+02 6.35013413e+02 6.29680406e+02 6.24402731e+02 6.19179693e+02 + 6.14010603e+02 6.08894787e+02 6.03831577e+02 5.98820316e+02 5.93860359e+02 + 5.88951067e+02 5.84091813e+02 5.79281978e+02 5.74520952e+02 5.69808135e+02 + 5.65142935e+02 5.60524768e+02 5.55953059e+02 5.51427242e+02 5.46946757e+02 + 5.42511056e+02 5.38119594e+02 5.33771838e+02 5.29467260e+02 5.25205341e+02 + 5.20985568e+02 5.16807437e+02 5.12670449e+02 5.08574114e+02 5.04517948e+02 + 5.00501473e+02 4.96524221e+02 4.92585726e+02 4.88685531e+02 4.84823185e+02 + 4.80998245e+02 4.77210270e+02 4.73458829e+02 4.69743496e+02 4.66063849e+02 + 4.62419474e+02 4.58809961e+02 4.55234907e+02 4.51693915e+02 4.48186591e+02 + 4.44712548e+02 4.41271404e+02 4.37862782e+02 4.34486311e+02 4.31141623e+02 + 4.27828357e+02 4.24546157e+02 4.21294668e+02 4.18073546e+02 4.14882445e+02 + 4.11721028e+02 4.08588962e+02 4.05485917e+02 4.02411567e+02 3.99365593e+02 + 3.96347677e+02 3.93357508e+02 3.90394776e+02 3.87459179e+02 3.84550414e+02 + 3.81668187e+02 3.78812205e+02 3.75982179e+02 3.73177824e+02 3.70398858e+02 + 3.67645005e+02 3.64915990e+02 3.62211543e+02 3.59531396e+02 3.56875286e+02 + 3.54242953e+02 3.51634140e+02 3.49048592e+02 3.46486060e+02 3.43946296e+02 + 3.41429057e+02 3.38934100e+02 3.36461189e+02 3.34010087e+02 3.31580563e+02 + 3.29172388e+02 3.26785335e+02 3.24419181e+02 3.22073706e+02 3.19748690e+02 + 3.17443919e+02 3.15159181e+02 3.12894265e+02 3.10648965e+02 3.08423074e+02 + 3.06216392e+02 3.04028718e+02 3.01859854e+02 2.99709606e+02 2.97577782e+02 + 2.95464191e+02 2.93368645e+02 2.91290959e+02 2.89230948e+02 2.87188433e+02 + 2.85163234e+02 2.83155175e+02 2.81164080e+02 2.79189777e+02 2.77232096e+02 + 2.75290867e+02 2.73365926e+02 2.71457107e+02 2.69564247e+02 2.67687187e+02 + 2.65825767e+02 2.63979831e+02 2.62149223e+02 2.60333792e+02 2.58533385e+02 + 2.56747852e+02 2.54977047e+02 2.53220823e+02 2.51479036e+02 2.49751543e+02 + 2.48038204e+02 2.46338878e+02 2.44653429e+02 2.42981719e+02 2.41323616e+02 + 2.39678985e+02 2.38047696e+02 2.36429618e+02 2.34824622e+02 2.33232583e+02 + 2.31653375e+02 2.30086873e+02 2.28532956e+02 2.26991501e+02 2.25462388e+02 + 2.23945501e+02 2.22440721e+02 2.20947932e+02 2.19467021e+02 2.17997874e+02 + 2.16540378e+02 2.15094425e+02 2.13659903e+02 2.12236705e+02 2.10824725e+02 + 2.09423855e+02 2.08033993e+02 2.06655034e+02 2.05286876e+02 2.03929418e+02 + 2.02582561e+02 2.01246205e+02 1.99920252e+02 1.98604607e+02 1.97299172e+02 + 1.96003855e+02 1.94718561e+02 1.93443198e+02 1.92177675e+02 1.90921901e+02 + 1.89675786e+02 1.88439243e+02 1.87212183e+02 1.85994521e+02 1.84786170e+02 + 1.83587047e+02 1.82397066e+02 1.81216147e+02 1.80044206e+02 1.78881162e+02 + 1.77726936e+02 1.76581449e+02 1.75444621e+02 1.74316376e+02 1.73196636e+02 + 1.72085325e+02 1.70982370e+02 1.69887694e+02 1.68801226e+02 1.67722892e+02 + 1.66652620e+02 1.65590339e+02 1.64535979e+02 1.63489470e+02 1.62450743e+02 + 1.61419731e+02 1.60396365e+02 1.59380580e+02 1.58372308e+02 1.57371485e+02 + 1.56378046e+02 1.55391928e+02 1.54413066e+02 1.53441399e+02 1.52476865e+02 + 1.51519401e+02 1.50568949e+02 1.49625447e+02 1.48688836e+02 1.47759058e+02 + 1.46836054e+02 1.45919768e+02 1.45010141e+02 1.44107118e+02 1.43210644e+02 + 1.42320662e+02 1.41437119e+02 1.40559960e+02 1.39689133e+02 1.38824583e+02 + 1.37966259e+02 1.37114109e+02 1.36268082e+02 1.35428128e+02 1.34594195e+02 + 1.33766234e+02 1.32944196e+02 1.32128033e+02 1.31317696e+02 1.30513138e+02 + 1.29714311e+02 1.28921170e+02 1.28133666e+02 1.27351756e+02 1.26575394e+02 + 1.25804534e+02 1.25039133e+02 1.24279147e+02 1.23524532e+02 1.22775245e+02 + 1.22031244e+02 1.21292487e+02 1.20558932e+02 1.19830538e+02 1.19107263e+02 + 1.18389069e+02 1.17675913e+02 1.16967758e+02 1.16264563e+02 1.15566291e+02 + 1.14872901e+02 1.14184358e+02 1.13500622e+02 1.12821657e+02 1.12147426e+02 + 1.11477892e+02 1.10813019e+02 1.10152771e+02 1.09497114e+02 1.08846011e+02 + 1.08199428e+02 1.07557332e+02 1.06919687e+02 1.06286460e+02 1.05657618e+02 + 1.05033128e+02 1.04412957e+02 1.03797073e+02 1.03185444e+02 1.02578037e+02 + 1.01974823e+02 1.01375769e+02 1.00780844e+02 1.00190020e+02 9.96032638e+01 + 9.90205474e+01 9.84418407e+01 9.78671145e+01 9.72963397e+01 9.67294876e+01 + 9.61665298e+01 9.56074381e+01 9.50521847e+01 9.45007420e+01 9.39530826e+01 + 9.34091794e+01 9.28690056e+01 9.23325346e+01 9.17997403e+01 9.12705964e+01 + 9.07450773e+01 9.02231574e+01 8.97048113e+01 8.91900140e+01 8.86787407e+01 + 8.81709668e+01 8.76666679e+01 8.71658199e+01 8.66683989e+01 8.61743813e+01 + 8.56837435e+01 8.51964623e+01 8.47125147e+01 8.42318780e+01 8.37545294e+01 + 8.32804467e+01 8.28096075e+01 8.23419900e+01 8.18775724e+01 8.14163330e+01 + 8.09582505e+01 8.05033036e+01 8.00514714e+01 7.96027330e+01 7.91570678e+01 + 7.87144554e+01 7.82748753e+01 7.78383076e+01 7.74047323e+01 7.69741296e+01 + 7.65464800e+01 7.61217640e+01 7.56999623e+01 7.52810559e+01 7.48650257e+01 + 7.44518531e+01 7.40415194e+01 7.36340061e+01 7.32292949e+01 7.28273676e+01 + 7.24282061e+01 7.20317926e+01 7.16381093e+01 7.12471386e+01 7.08588630e+01 + 7.04732652e+01 7.00903279e+01 6.97100340e+01 6.93323666e+01 6.89573089e+01 + 6.85848441e+01 6.82149556e+01 6.78476270e+01 6.74828419e+01 6.71205840e+01 + 6.67608372e+01 6.64035855e+01 6.60488130e+01 6.56965038e+01 6.53466422e+01 + 6.49992126e+01 6.46541996e+01 6.43115876e+01 6.39713614e+01 6.36335058e+01 + 6.32980055e+01 6.29648457e+01 6.26340112e+01 6.23054873e+01 6.19792591e+01 + 6.16553119e+01 6.13336312e+01 6.10142023e+01 6.06970108e+01 6.03820424e+01 + 6.00692826e+01 5.97587172e+01 5.94503321e+01 5.91441132e+01 5.88400463e+01 + 5.85381176e+01 5.82383130e+01 5.79406188e+01 5.76450212e+01 5.73515064e+01 + 5.70600608e+01 5.67706707e+01 5.64833226e+01 5.61980030e+01 5.59146984e+01 + 5.56333954e+01 5.53540807e+01 5.50767409e+01 5.48013629e+01 5.45279333e+01 + 5.42564391e+01 5.39868671e+01 5.37192042e+01 5.34534375e+01 5.31895539e+01 + 5.29275404e+01 5.26673842e+01 5.24090725e+01 5.21525923e+01 5.18979308e+01 + 5.16450754e+01 5.13940133e+01 5.11447318e+01 5.08972183e+01 5.06514602e+01 + 5.04074448e+01 5.01651597e+01 4.99245922e+01 4.96857301e+01 4.94485607e+01 + 4.92130716e+01 4.89792506e+01 4.87470852e+01 4.85165632e+01 4.82876721e+01 + 4.80603998e+01 4.78347341e+01 4.76106627e+01 4.73881735e+01 4.71672543e+01 + 4.69478930e+01 4.67300776e+01 4.65137959e+01 4.62990361e+01 4.60857861e+01 + 4.58740340e+01 4.56637677e+01 4.54549756e+01 4.52476456e+01 4.50417660e+01 + 4.48373250e+01 4.46343108e+01 4.44327117e+01 4.42325160e+01 4.40337120e+01 + 4.38362882e+01 4.36402330e+01 4.34455347e+01 4.32521820e+01 4.30601632e+01 + 4.28694671e+01 4.26800821e+01 4.24919969e+01 4.23052003e+01 4.21196809e+01 + 4.19354275e+01 4.17524288e+01 4.15706739e+01 4.13901514e+01 4.12108505e+01 + 4.10327600e+01 4.08558689e+01 4.06801665e+01 4.05056417e+01 4.03322838e+01 + 4.01600819e+01 3.99890254e+01 3.98191035e+01 3.96503057e+01 3.94826213e+01 + 3.93160399e+01 3.91505509e+01 3.89861440e+01 3.88228087e+01 3.86605349e+01 + 3.84993122e+01 3.83391305e+01 3.81799796e+01 3.80218496e+01 3.78647303e+01 + 3.77086118e+01 3.75534843e+01 3.73993379e+01 3.72461629e+01 3.70939496e+01 + 3.69426884e+01 3.67923697e+01 3.66429841e+01 3.64945220e+01 3.63469743e+01 + 3.62003315e+01 3.60545845e+01 3.59097241e+01 3.57657412e+01 3.56226269e+01 + 3.54803723e+01 3.53389684e+01 3.51984065e+01 3.50586779e+01 3.49197739e+01 + 3.47816860e+01 3.46444058e+01 3.45079247e+01 3.43722345e+01 3.42373269e+01 + 3.41031937e+01 3.39698269e+01 3.38372184e+01 3.37053603e+01 3.35742446e+01 + 3.34438637e+01 3.33142098e+01 3.31852752e+01 3.30570525e+01 3.29295341e+01 + 3.28027126e+01 3.26765808e+01 3.25511314e+01 3.24263572e+01 3.23022512e+01 + 3.21788064e+01 3.20560158e+01 3.19338726e+01 3.18123700e+01 3.16915015e+01 + 3.15712603e+01 3.14516399e+01 3.13326340e+01 3.12142360e+01 3.10964399e+01 + 3.09792392e+01 3.08626280e+01 3.07466002e+01 3.06311497e+01 3.05162707e+01 + 3.04019574e+01 3.02882039e+01 3.01750048e+01 3.00623542e+01 2.99502468e+01 + 2.98386771e+01 2.97276397e+01 2.96171293e+01 2.95071407e+01 2.93976688e+01 + 2.92887084e+01 2.91802546e+01 2.90723024e+01 2.89648469e+01 2.88578835e+01 + 2.87514072e+01 2.86454136e+01 2.85398980e+01 2.84348558e+01 2.83302827e+01 + 2.82261742e+01 2.81225260e+01 2.80193340e+01 2.79165938e+01 2.78143013e+01 + 2.77124526e+01 2.76110435e+01 2.75100702e+01 2.74095288e+01 2.73094155e+01 + 2.72097265e+01 2.71104581e+01 2.70116067e+01 2.69131687e+01 2.68151406e+01 + 2.67175188e+01 2.66203001e+01 2.65234811e+01 2.64270584e+01 2.63310288e+01 + 2.62353891e+01 2.61401362e+01 2.60452669e+01 2.59507783e+01 2.58566673e+01 + 2.57629310e+01 2.56695666e+01 2.55765711e+01 2.54839417e+01 2.53916758e+01 + 2.52997706e+01 2.52082234e+01 2.51170317e+01 2.50261928e+01 2.49357043e+01 + 2.48455636e+01 2.47557682e+01 2.46663159e+01 2.45772042e+01 2.44884307e+01 + 2.43999933e+01 2.43118896e+01 2.42241175e+01 2.41366747e+01 2.40495592e+01 + 2.39627688e+01 2.38763014e+01 2.37901550e+01 2.37043277e+01 2.36188173e+01 + 2.35336221e+01 2.34487401e+01 2.33641694e+01 2.32799082e+01 2.31959547e+01 + 2.31123071e+01 2.30289635e+01 2.29459224e+01 2.28631820e+01 2.27807406e+01 + 2.26985966e+01 2.26167483e+01 2.25351942e+01 2.24539327e+01 2.23729623e+01 + 2.22922814e+01 2.22118885e+01 2.21317821e+01 2.20519609e+01 2.19724233e+01 + 2.18931680e+01 2.18141936e+01 2.17354987e+01 2.16570819e+01 2.15789419e+01 + 2.15010775e+01 2.14234873e+01 2.13461701e+01 2.12691245e+01 2.11923495e+01 + 2.11158437e+01 2.10396059e+01 2.09636350e+01 2.08879297e+01 2.08124891e+01 + 2.07373118e+01 2.06623968e+01 2.05877429e+01 2.05133491e+01 2.04392143e+01 + 2.03653374e+01 2.02917174e+01 2.02183532e+01 2.01452439e+01 2.00723882e+01 + 1.99997854e+01 1.99274343e+01 1.98553341e+01 1.97834837e+01 1.97118821e+01 + 1.96405285e+01 1.95694218e+01 1.94985612e+01 1.94279457e+01 1.93575745e+01 + 1.92874466e+01 1.92175611e+01 1.91479172e+01 1.90785139e+01 1.90093505e+01 + 1.89404260e+01 1.88717397e+01 1.88032906e+01 1.87350779e+01 1.86671009e+01 + 1.85993587e+01 1.85318504e+01 1.84645753e+01 1.83975326e+01 1.83307215e+01 + 1.82641413e+01 1.81977910e+01 1.81316700e+01 1.80657774e+01 1.80001126e+01 + 1.79346748e+01 1.78694632e+01 1.78044771e+01 1.77397157e+01 1.76751783e+01 + 1.76108641e+01 1.75467726e+01 1.74829028e+01 1.74192542e+01 1.73558259e+01 + 1.72926173e+01 1.72296278e+01 1.71668565e+01 1.71043028e+01 1.70419660e+01 + 1.69798455e+01 1.69179404e+01 1.68562502e+01 1.67947742e+01 1.67335117e+01 + 1.66724620e+01 1.66116245e+01 1.65509984e+01 1.64905832e+01 1.64303782e+01 + 1.63703827e+01 1.63105961e+01 1.62510177e+01 1.61916469e+01 1.61324830e+01 + 1.60735255e+01 1.60147735e+01 1.59562266e+01 1.58978841e+01 1.58397453e+01 + 1.57818096e+01 1.57240765e+01 1.56665452e+01 1.56092151e+01 1.55520857e+01 + 1.54951563e+01 1.54384263e+01 1.53818950e+01 1.53255619e+01 1.52694264e+01 + 1.52134878e+01 1.51577456e+01 1.51021991e+01 1.50468477e+01 1.49916909e+01 + 1.49367279e+01 1.48819583e+01 1.48273815e+01 1.47729968e+01 1.47188036e+01 + 1.46648014e+01 1.46109895e+01 1.45573674e+01 1.45039345e+01 1.44506902e+01 + 1.43976339e+01 1.43447651e+01 1.42920830e+01 1.42395873e+01 1.41872773e+01 + 1.41351523e+01 1.40832119e+01 1.40314555e+01 1.39798825e+01 1.39284922e+01 + 1.38772842e+01 1.38262579e+01 1.37754127e+01 1.37247481e+01 1.36742634e+01 + 1.36239581e+01 1.35738317e+01 1.35238836e+01 1.34741131e+01 1.34245199e+01 + 1.33751032e+01 1.33258626e+01 1.32767975e+01 1.32279073e+01 1.31791915e+01 + 1.31306495e+01 1.30822808e+01 1.30340848e+01 1.29860610e+01 1.29382089e+01 + 1.28905278e+01 1.28430172e+01 1.27956766e+01 1.27485055e+01 1.27015033e+01 + 1.26546695e+01 1.26080034e+01 1.25615047e+01 1.25151727e+01 1.24690068e+01 + 1.24230067e+01 1.23771717e+01 1.23315013e+01 1.22859950e+01 1.22406522e+01 + 1.21954724e+01 1.21504551e+01 1.21055998e+01 1.20609059e+01 1.20163728e+01 + 1.19720002e+01 1.19277874e+01 1.18837339e+01 1.18398392e+01 1.17961028e+01 + 1.17525242e+01 1.17091028e+01 1.16658381e+01 1.16227297e+01 1.15797770e+01 + 1.15369794e+01 1.14943365e+01 1.14518478e+01 1.14095128e+01 1.13673308e+01 + 1.13253015e+01 1.12834244e+01 1.12416989e+01 1.12001244e+01 1.11587006e+01 + 1.11174269e+01 1.10763029e+01 1.10353279e+01 1.09945015e+01 1.09538233e+01 + 1.09132927e+01 1.08729092e+01 1.08326723e+01 1.07925816e+01 1.07526365e+01 + 1.07128365e+01 1.06731813e+01 1.06336702e+01 1.05943028e+01 1.05550786e+01 + 1.05159971e+01 1.04770578e+01 1.04382603e+01 1.03996041e+01 1.03610886e+01 + 1.03227135e+01 1.02844782e+01 1.02463823e+01 1.02084252e+01 1.01706066e+01 + 1.01329259e+01 1.00953826e+01 1.00579763e+01 1.00207066e+01 9.98357293e+00 + 9.94657483e+00 9.90971186e+00 9.87298355e+00 9.83638943e+00 9.79992905e+00 + 9.76360194e+00 9.72740763e+00 9.69134569e+00 9.65541563e+00 9.61961702e+00 + 9.58394940e+00 9.54841230e+00 9.51300529e+00 9.47772790e+00 9.44257969e+00 + 9.40756021e+00 9.37266901e+00 9.33790565e+00 9.30326968e+00 9.26876066e+00 + 9.23437814e+00 9.20012168e+00 9.16599085e+00 9.13198520e+00 9.09810430e+00 + 9.06434770e+00 9.03071498e+00 8.99720571e+00 8.96381944e+00 8.93055574e+00 + 8.89741419e+00 8.86439436e+00 8.83149582e+00 8.79871814e+00 8.76606089e+00 + 8.73352366e+00 8.70110602e+00 8.66880755e+00 8.63662783e+00 8.60456643e+00 + 8.57262294e+00 8.54079695e+00 8.50908804e+00 8.47749579e+00 8.44601979e+00 + 8.41465963e+00 8.38341490e+00 8.35228519e+00 8.32127008e+00 8.29036919e+00 + 8.25958209e+00 8.22890838e+00 8.19834766e+00 8.16789954e+00 8.13756360e+00 + 8.10733945e+00 8.07722668e+00 8.04722491e+00 8.01733374e+00 7.98755277e+00 + 7.95788160e+00 7.92831986e+00 7.89886713e+00 7.86952305e+00 7.84028721e+00 + 7.81115922e+00 7.78213871e+00 7.75322529e+00 7.72441857e+00 7.69571818e+00 + 7.66712372e+00 7.63863482e+00 7.61025111e+00 7.58197219e+00 7.55379770e+00 + 7.52572727e+00 7.49776051e+00 7.46989705e+00 7.44213653e+00 7.41447857e+00 + 7.38692280e+00 7.35946885e+00 7.33211636e+00 7.30486496e+00 7.27771429e+00 + 7.25066397e+00 7.22371366e+00 7.19686299e+00 7.17011160e+00 7.14345913e+00 + 7.11690522e+00 7.09044951e+00 7.06409166e+00 7.03783130e+00 7.01166809e+00 + 6.98560167e+00 6.95963169e+00 6.93375780e+00 6.90797966e+00 6.88229691e+00 + 6.85670921e+00 6.83121622e+00 6.80581759e+00 6.78051298e+00 6.75530204e+00 + 6.73018445e+00 6.70515985e+00 6.68022791e+00 6.65538829e+00 6.63064066e+00 + 6.60598469e+00 6.58142003e+00 6.55694636e+00 6.53256335e+00 6.50827066e+00 + 6.48406796e+00 6.45995494e+00 6.43593125e+00 6.41199658e+00 6.38815061e+00 + 6.36439300e+00 6.34072343e+00 6.31714159e+00 6.29364715e+00 6.27023980e+00 + 6.24691921e+00 6.22368507e+00 6.20053707e+00 6.17747488e+00 6.15449820e+00 + 6.13160671e+00 6.10880010e+00 6.08607807e+00 6.06344029e+00 6.04088646e+00 + 6.01841629e+00 5.99602945e+00 5.97372564e+00 5.95150456e+00 5.92936591e+00 + 5.90730939e+00 5.88533469e+00 5.86344151e+00 5.84162956e+00 5.81989853e+00 + 5.79824813e+00 5.77667807e+00 5.75518805e+00 5.73377778e+00 5.71244695e+00 + 5.69119529e+00 5.67002250e+00 5.64892830e+00 5.62791238e+00 5.60697447e+00 + 5.58611428e+00 5.56533152e+00 5.54462591e+00 5.52399717e+00 5.50344500e+00 + 5.48296914e+00 5.46256930e+00 5.44224520e+00 5.42199656e+00 5.40182311e+00 + 5.38172456e+00 5.36170064e+00 5.34175109e+00 5.32187561e+00 5.30207395e+00 + 5.28234582e+00 5.26269097e+00 5.24310911e+00 5.22359998e+00 5.20416331e+00 + 5.18479884e+00 5.16550630e+00 5.14628542e+00 5.12713593e+00 5.10805759e+00 + 5.08905011e+00 5.07011325e+00 5.05124675e+00 5.03245033e+00 5.01372375e+00 + 4.99506674e+00 4.97647905e+00 4.95796043e+00 4.93951062e+00 4.92112936e+00 + 4.90281640e+00 4.88457149e+00 4.86639438e+00 4.84828482e+00 4.83024256e+00 + 4.81226735e+00 4.79435893e+00 4.77651708e+00 4.75874153e+00 4.74103205e+00 + 4.72338839e+00 4.70581031e+00 4.68829756e+00 4.67084991e+00 4.65346711e+00 + 4.63614892e+00 4.61889511e+00 4.60170543e+00 4.58457965e+00 4.56751754e+00 + 4.55051885e+00 4.53358335e+00 4.51671082e+00 4.49990101e+00 4.48315369e+00 + 4.46646864e+00 4.44984562e+00 4.43328440e+00 4.41678476e+00 4.40034646e+00 + 4.38396928e+00 4.36765299e+00 4.35139738e+00 4.33520220e+00 4.31906725e+00 + 4.30299229e+00 4.28697710e+00 4.27102147e+00 4.25512517e+00 4.23928798e+00 + 4.22350969e+00 4.20779007e+00 4.19212891e+00 4.17652599e+00 4.16098109e+00 + 4.14549401e+00 4.13006452e+00 4.11469242e+00 4.09937748e+00 4.08411951e+00 + 4.06891828e+00 4.05377359e+00 4.03868523e+00 4.02365298e+00 4.00867665e+00 + 3.99375601e+00 3.97889088e+00 3.96408104e+00 3.94932628e+00 3.93462641e+00 + 3.91998121e+00 3.90539049e+00 3.89085404e+00 3.87637166e+00 3.86194316e+00 + 3.84756833e+00 3.83324697e+00 3.81897888e+00 3.80476387e+00 3.79060175e+00 + 3.77649230e+00 3.76243534e+00 3.74843068e+00 3.73447812e+00 3.72057746e+00 + 3.70672851e+00 3.69293109e+00 3.67918500e+00 3.66549005e+00 3.65184604e+00 + 3.63825280e+00 3.62471013e+00 3.61121785e+00 3.59777576e+00 3.58438369e+00 + 3.57104144e+00 3.55774883e+00 3.54450568e+00 3.53131180e+00 3.51816701e+00 + 3.50507113e+00 3.49202398e+00 3.47902537e+00 3.46607512e+00 3.45317306e+00 + 3.44031901e+00 3.42751278e+00 3.41475421e+00 3.40204310e+00 3.38937930e+00 + 3.37676262e+00 3.36419288e+00 3.35166992e+00 3.33919355e+00 3.32676361e+00 + 3.31437992e+00 3.30204231e+00 3.28975062e+00 3.27750466e+00 3.26530427e+00 + 3.25314928e+00 3.24103952e+00 3.22897483e+00 3.21695503e+00 3.20497996e+00 + 3.19304945e+00 3.18116334e+00 3.16932147e+00 3.15752366e+00 3.14576975e+00 + 3.13405959e+00 3.12239300e+00 3.11076983e+00 3.09918992e+00 3.08765310e+00 + 3.07615921e+00 3.06470810e+00 3.05329960e+00 3.04193357e+00 3.03060983e+00 + 3.01932823e+00 3.00808862e+00 2.99689084e+00 2.98573473e+00 2.97462014e+00 + 2.96354691e+00 2.95251490e+00 2.94152395e+00 2.93057389e+00 2.91966460e+00 + 2.90879590e+00 2.89796766e+00 2.88717971e+00 2.87643191e+00 2.86572412e+00 + 2.85505618e+00 2.84442794e+00 2.83383926e+00 2.82328999e+00 2.81277998e+00 + 2.80230909e+00 2.79187717e+00 2.78148407e+00 2.77112966e+00 2.76081379e+00 + 2.75053631e+00 2.74029708e+00 2.73009597e+00 2.71993282e+00 2.70980750e+00 + 2.69971986e+00 2.68966978e+00 2.67965709e+00 2.66968168e+00 2.65974339e+00 + 2.64984210e+00 2.63997766e+00 2.63014993e+00 2.62035879e+00 2.61060408e+00 + 2.60088569e+00 2.59120347e+00 2.58155729e+00 2.57194701e+00 2.56237250e+00 + 2.55283363e+00 2.54333026e+00 2.53386227e+00 2.52442952e+00 2.51503188e+00 + 2.50566922e+00 2.49634141e+00 2.48704832e+00 2.47778982e+00 2.46856578e+00 + 2.45937608e+00 2.45022058e+00 2.44109916e+00 2.43201169e+00 2.42295805e+00 + 2.41393811e+00 2.40495175e+00 2.39599883e+00 2.38707924e+00 2.37819285e+00 + 2.36933954e+00 2.36051919e+00 2.35173166e+00 2.34297685e+00 2.33425462e+00 + 2.32556487e+00 2.31690745e+00 2.30828227e+00 2.29968919e+00 2.29112809e+00 + 2.28259887e+00 2.27410139e+00 2.26563554e+00 2.25720121e+00 2.24879827e+00 + 2.24042661e+00 2.23208612e+00 2.22377667e+00 2.21549815e+00 2.20725045e+00 + 2.19903345e+00 2.19084704e+00 2.18269110e+00 2.17456552e+00 2.16647019e+00 + 2.15840499e+00 2.15036982e+00 2.14236455e+00 2.13438909e+00 2.12644331e+00 + 2.11852711e+00 2.11064038e+00 2.10278301e+00 2.09495489e+00 2.08715590e+00 + 2.07938595e+00 2.07164492e+00 2.06393271e+00 2.05624921e+00 2.04859431e+00 + 2.04096790e+00 2.03336989e+00 2.02580015e+00 2.01825860e+00 2.01074512e+00 + 2.00325961e+00 1.99580197e+00 1.98837208e+00 1.98096986e+00 1.97359518e+00 + 1.96624797e+00 1.95892810e+00 1.95163548e+00 1.94437001e+00 1.93713158e+00 + 1.92992010e+00 1.92273547e+00 1.91557758e+00 1.90844634e+00 1.90134164e+00 + 1.89426339e+00 1.88721149e+00 1.88018585e+00 1.87318635e+00 1.86621291e+00 + 1.85926544e+00 1.85234382e+00 1.84544797e+00 1.83857779e+00 1.83173319e+00 + 1.82491407e+00 1.81812033e+00 1.81135188e+00 1.80460863e+00 1.79789048e+00 + 1.79119734e+00 1.78452912e+00 1.77788572e+00 1.77126705e+00 1.76467302e+00 + 1.75810353e+00 1.75155851e+00 1.74503784e+00 1.73854146e+00 1.73206925e+00 + 1.72562114e+00 1.71919704e+00 1.71279684e+00 1.70642048e+00 1.70006785e+00 + 1.69373887e+00 1.68743345e+00 1.68115150e+00 1.67489294e+00 1.66865768e+00 + 1.66244563e+00 1.65625671e+00 1.65009082e+00 1.64394789e+00 1.63782783e+00 + 1.63173055e+00 1.62565596e+00 1.61960400e+00 1.61357456e+00 1.60756756e+00 + 1.60158293e+00 1.59562058e+00 1.58968043e+00 1.58376238e+00 1.57786637e+00 + 1.57199231e+00 1.56614012e+00 1.56030971e+00 1.55450100e+00 1.54871392e+00 + 1.54294839e+00 1.53720432e+00 1.53148163e+00 1.52578024e+00 1.52010008e+00 + 1.51444107e+00 1.50880312e+00 1.50318616e+00 1.49759011e+00 1.49201489e+00 + 1.48646043e+00 1.48092665e+00 1.47541347e+00 1.46992081e+00 1.46444860e+00 + 1.45899676e+00 1.45356521e+00 1.44815389e+00 1.44276271e+00 1.43739160e+00 + 1.43204049e+00 1.42670929e+00 1.42139795e+00 1.41610638e+00 1.41083450e+00 + 1.40558225e+00 1.40034956e+00 1.39513634e+00 1.38994253e+00 1.38476806e+00 + 1.37961285e+00 1.37447683e+00 1.36935993e+00 1.36426208e+00 1.35918321e+00 + 1.35412325e+00 1.34908212e+00 1.34405976e+00 1.33905610e+00 1.33407106e+00 + 1.32910459e+00 1.32415660e+00 1.31922703e+00 1.31431581e+00 1.30942288e+00 + 1.30454816e+00 1.29969159e+00 1.29485310e+00 1.29003262e+00 1.28523009e+00 + 1.28044543e+00 1.27567859e+00 1.27092949e+00 1.26619808e+00 1.26148427e+00 + 1.25678802e+00 1.25210925e+00 1.24744790e+00 1.24280390e+00 1.23817718e+00 + 1.23356770e+00 1.22897537e+00 1.22440014e+00 1.21984194e+00 1.21530071e+00 + 1.21077639e+00 1.20626891e+00 1.20177820e+00 1.19730422e+00 1.19284690e+00 + 1.18840616e+00 1.18398196e+00 1.17957423e+00 1.17518291e+00 1.17080793e+00 + 1.16644925e+00 1.16210679e+00 1.15778049e+00 1.15346959e+00 1.14913354e+00 + 1.14474938e+00 1.14031777e+00 1.13583938e+00 1.13131490e+00 1.12674498e+00 + 1.12213033e+00 1.11747160e+00 1.11276948e+00 1.10802466e+00 1.10323781e+00 + 1.09840961e+00 1.09354076e+00 1.08863193e+00 1.08368382e+00 1.07869711e+00 + 1.07367249e+00 1.06861064e+00 1.06351225e+00 1.05837802e+00 1.05320863e+00 + 1.04800477e+00 1.04276713e+00 1.03749640e+00 1.03219327e+00 1.02685842e+00 + 1.02149255e+00 1.01609634e+00 1.01067048e+00 1.00521566e+00 9.99732561e-01 + 9.94221873e-01 9.88684280e-01 9.83120465e-01 9.77531112e-01 9.71916902e-01 + 9.66278515e-01 9.60616632e-01 9.54931930e-01 9.49225086e-01 9.43496777e-01 + 9.37747674e-01 9.31978451e-01 9.26189778e-01 9.20382324e-01 9.14556755e-01 + 9.08713737e-01 9.02853933e-01 8.96978003e-01 8.91086606e-01 8.85180399e-01 + 8.79260037e-01 8.73326170e-01 8.67379449e-01 8.61420522e-01 8.55450031e-01 + 8.49468620e-01 8.43476928e-01 8.37475591e-01 8.31465244e-01 8.25446516e-01 + 8.19420036e-01 8.13386430e-01 8.07346319e-01 8.01300321e-01 7.95249054e-01 + 7.89193129e-01 7.83133156e-01 7.77069741e-01 7.71003485e-01 7.64934990e-01 + 7.58864849e-01 7.52793656e-01 7.46721999e-01 7.40650464e-01 7.34579630e-01 + 7.28510076e-01 7.22442376e-01 7.16377099e-01 7.10314812e-01 7.04256077e-01 + 6.98201452e-01 6.92151492e-01 6.86106746e-01 6.80067760e-01 6.74035077e-01 + 6.68009235e-01 6.61990766e-01 6.55980201e-01 6.49978064e-01 6.43984876e-01 + 6.38001154e-01 6.32027409e-01 6.26064149e-01 6.20111878e-01 6.14171093e-01 + 6.08242290e-01 6.02325957e-01 5.96422579e-01 5.90532637e-01 5.84656607e-01 + 5.78794960e-01 5.72948161e-01 5.67116674e-01 5.61300953e-01 5.55501453e-01 + 5.49718619e-01 5.43952895e-01 5.38204718e-01 5.32474521e-01 5.26762732e-01 + 5.21069774e-01 5.15396065e-01 5.09742018e-01 5.04108042e-01 4.98494539e-01 + 4.92901908e-01 4.87330542e-01 4.81780829e-01 4.76253153e-01 4.70747891e-01 + 4.65265417e-01 4.59806099e-01 4.54370299e-01 4.48958375e-01 4.43570681e-01 + 4.38207564e-01 4.32869366e-01 4.27556424e-01 4.22269072e-01 4.17007635e-01 + 4.11772436e-01 4.06563793e-01 4.01382015e-01 3.96227411e-01 3.91100281e-01 + 3.86000921e-01 3.80929624e-01 3.75886673e-01 3.70872351e-01 3.65886933e-01 + 3.60930689e-01 3.56003885e-01 3.51106780e-01 3.46239629e-01 3.41402684e-01 + 3.36596187e-01 3.31820379e-01 3.27075494e-01 3.22361761e-01 3.17679405e-01 + 3.13028645e-01 3.08409694e-01 3.03822762e-01 2.99268052e-01 2.94745764e-01 + 2.90256091e-01 2.85799221e-01 2.81375338e-01 2.76984621e-01 2.72627243e-01 + 2.68303374e-01 2.64013176e-01 2.59756808e-01 2.55534425e-01 2.51346174e-01 + 2.47192200e-01 2.43072641e-01 2.38987632e-01 2.34937302e-01 2.30921775e-01 + 2.26941171e-01 2.22995604e-01 2.19085184e-01 2.15210017e-01 2.11370202e-01 + 2.07565837e-01 2.03797010e-01 2.00063809e-01 1.96366316e-01 1.92704606e-01 + 1.89078754e-01 1.85488825e-01 1.81934884e-01 1.78416989e-01 1.74935194e-01 + 1.71489549e-01 1.68080098e-01 1.64706883e-01 1.61369940e-01 1.58069300e-01 + 1.54804992e-01 1.51577037e-01 1.48385456e-01 1.45230262e-01 1.42111467e-01 + 1.39029075e-01 1.35983089e-01 1.32973506e-01 1.30000321e-01 1.27063522e-01 + 1.24163095e-01 1.21299021e-01 1.18471278e-01 1.15679839e-01 1.12924673e-01 + 1.10205745e-01 1.07523018e-01 1.04876449e-01 1.02265992e-01 9.96915962e-02 + 9.71532089e-02 9.46507723e-02 9.21842253e-02 8.97535033e-02 8.73585377e-02 + 8.49992567e-02 8.26755846e-02 8.03874424e-02 7.81347475e-02 7.59174139e-02 + 7.37353522e-02 7.15884695e-02 6.94766698e-02 6.73998535e-02 6.53579178e-02 + 6.33507567e-02 6.13782611e-02 5.94403186e-02 5.75368137e-02 5.56676277e-02 + 5.38326390e-02 5.20317229e-02 5.02647517e-02 4.85315948e-02 4.68321187e-02 + 4.51661870e-02 4.35336603e-02 4.19343967e-02 4.03682513e-02 3.88350765e-02 + 3.73347222e-02 3.58670354e-02 3.44318607e-02 3.30290400e-02 3.16584126e-02 + 3.03198154e-02 2.90130829e-02 2.77380470e-02 2.64945373e-02 2.52823812e-02 + 2.41014035e-02 2.29514269e-02 2.18322718e-02 2.07437565e-02 1.96856971e-02 + 1.86579075e-02 1.76601995e-02 1.66923831e-02 1.57542659e-02 1.48456539e-02 + 1.39663510e-02 1.31161591e-02 1.22948785e-02 1.15023074e-02 1.07382425e-02 + 1.00024785e-02 9.29480855e-03 8.61502407e-03 7.96291488e-03 7.33826918e-03 + 6.74087363e-03 6.17051335e-03 5.62697200e-03 5.11003178e-03 4.61947348e-03 + 4.15507654e-03 3.71661904e-03 3.30387776e-03 2.91662825e-03 2.55464479e-03 + 2.21770052e-03 1.90556738e-03 1.61801622e-03 1.35481681e-03 1.11573786e-03 + 9.00547090e-04 7.09011235e-04 5.40896093e-04 3.95966561e-04 2.73986669e-04 + 1.74719613e-04 9.79277918e-05 4.33728431e-05 1.08156751e-05 1.65021653e-08 + 3.71505131e+05 2.74649258e+05 1.35893225e+05 8.96579686e+04 6.65526070e+04 + 5.26989696e+04 4.34710050e+04 3.68861241e+04 3.19530360e+04 2.81210268e+04 + 2.50596707e+04 2.25586996e+04 2.04779367e+04 1.87203386e+04 1.72165903e+04 + 1.59158625e+04 1.47800346e+04 1.37799571e+04 1.28929591e+04 1.21011439e+04 + 1.13901951e+04 1.07485244e+04 1.01666510e+04 9.63674408e+03 9.15227864e+03 + 8.70777443e+03 8.29859499e+03 7.92079138e+03 7.57097941e+03 7.24624224e+03 + 6.94405245e+03 6.66220928e+03 6.39878750e+03 6.15209569e+03 5.92064187e+03 + 5.70310492e+03 5.49831093e+03 5.30521323e+03 5.12287567e+03 4.95045842e+03 + 4.78720594e+03 4.63243671e+03 4.48553435e+03 4.34594011e+03 4.21314626e+03 + 4.08669044e+03 3.96615071e+03 3.85114128e+03 3.74130867e+03 3.63632847e+03 + 3.53590240e+03 3.43975576e+03 3.34763513e+03 3.25930639e+03 3.17455290e+03 + 3.09317393e+03 3.01498322e+03 2.93980772e+03 2.86748644e+03 2.79786941e+03 + 2.73081680e+03 2.66619804e+03 2.60389110e+03 2.54378179e+03 2.48576316e+03 + 2.42973494e+03 2.37560302e+03 2.32327899e+03 2.27267973e+03 2.22372701e+03 + 2.17634716e+03 2.13047071e+03 2.08603215e+03 2.04296960e+03 2.00122459e+03 + 1.96074185e+03 1.92146906e+03 1.88335668e+03 1.84635776e+03 1.81042780e+03 + 1.77552455e+03 1.74160791e+03 1.70863977e+03 1.67658393e+03 1.64540592e+03 + 1.61507295e+03 1.58555380e+03 1.55681872e+03 1.52883936e+03 1.50158865e+03 + 1.47504079e+03 1.44917112e+03 1.42395612e+03 1.39937327e+03 1.37540106e+03 + 1.35201892e+03 1.32920716e+03 1.30694691e+03 1.28522013e+03 1.26400950e+03 + 1.24329844e+03 1.22307103e+03 1.20331203e+03 1.18400677e+03 1.16514119e+03 + 1.14670178e+03 1.12867557e+03 1.11105008e+03 1.09381330e+03 1.07695372e+03 + 1.06046021e+03 1.04432210e+03 1.02852909e+03 1.01307129e+03 9.97939129e+02 + 9.83123423e+02 9.68615298e+02 9.54406200e+02 9.40487878e+02 9.26852371e+02 + 9.13491996e+02 9.00399335e+02 8.87567225e+02 8.74988744e+02 8.62657207e+02 + 8.50566152e+02 8.38709332e+02 8.27080706e+02 8.15674431e+02 8.04484854e+02 + 7.93506505e+02 7.82734090e+02 7.72162481e+02 7.61786715e+02 7.51601983e+02 + 7.41603627e+02 7.31787132e+02 7.22148123e+02 7.12682357e+02 7.03385720e+02 + 6.94254225e+02 6.85283999e+02 6.76471287e+02 6.67812446e+02 6.59303936e+02 + 6.50942324e+02 6.42724275e+02 6.34646548e+02 6.26705997e+02 6.18899565e+02 + 6.11224280e+02 6.03677253e+02 5.96255678e+02 5.88956824e+02 5.81778037e+02 + 5.74716734e+02 5.67770403e+02 5.60936600e+02 5.54212947e+02 5.47597127e+02 + 5.41086888e+02 5.34680034e+02 5.28374430e+02 5.22167994e+02 5.16058699e+02 + 5.10044569e+02 5.04123681e+02 4.98294159e+02 4.92554175e+02 4.86901947e+02 + 4.81335739e+02 4.75853855e+02 4.70454645e+02 4.65136496e+02 4.59897836e+02 + 4.54737133e+02 4.49652890e+02 4.44643646e+02 4.39707976e+02 4.34844488e+02 + 4.30051824e+02 4.25328659e+02 4.20673696e+02 4.16085670e+02 4.11563347e+02 + 4.07105518e+02 4.02711005e+02 3.98378656e+02 3.94107344e+02 3.89895969e+02 + 3.85743454e+02 3.81648749e+02 3.77610825e+02 3.73628677e+02 3.69701321e+02 + 3.65827796e+02 3.62007162e+02 3.58238498e+02 3.54520905e+02 3.50853501e+02 + 3.47235425e+02 3.43665834e+02 3.40143902e+02 3.36668821e+02 3.33239801e+02 + 3.29856066e+02 3.26516860e+02 3.23221438e+02 3.19969076e+02 3.16759059e+02 + 3.13590692e+02 3.10463290e+02 3.07376184e+02 3.04328720e+02 3.01320253e+02 + 2.98350154e+02 2.95417807e+02 2.92522606e+02 2.89663958e+02 2.86841283e+02 + 2.84054011e+02 2.81301582e+02 2.78583450e+02 2.75899078e+02 2.73247937e+02 + 2.70629513e+02 2.68043298e+02 2.65488794e+02 2.62965516e+02 2.60472984e+02 + 2.58010728e+02 2.55578289e+02 2.53175214e+02 2.50801060e+02 2.48455392e+02 + 2.46137782e+02 2.43847811e+02 2.41585068e+02 2.39349147e+02 2.37139654e+02 + 2.34956196e+02 2.32798393e+02 2.30665869e+02 2.28558254e+02 2.26475186e+02 + 2.24416310e+02 2.22381275e+02 2.20369739e+02 2.18381363e+02 2.16415817e+02 + 2.14472775e+02 2.12551916e+02 2.10652927e+02 2.08775497e+02 2.06919325e+02 + 2.05084110e+02 2.03269560e+02 2.01475387e+02 1.99701306e+02 1.97947040e+02 + 1.96212314e+02 1.94496858e+02 1.92800409e+02 1.91122705e+02 1.89463490e+02 + 1.87822514e+02 1.86199527e+02 1.84594287e+02 1.83006553e+02 1.81436090e+02 + 1.79882667e+02 1.78346055e+02 1.76826030e+02 1.75322370e+02 1.73834860e+02 + 1.72363285e+02 1.70907435e+02 1.69467104e+02 1.68042086e+02 1.66632183e+02 + 1.65237197e+02 1.63856933e+02 1.62491201e+02 1.61139813e+02 1.59802583e+02 + 1.58479330e+02 1.57169873e+02 1.55874037e+02 1.54591647e+02 1.53322532e+02 + 1.52066524e+02 1.50823456e+02 1.49593165e+02 1.48375490e+02 1.47170273e+02 + 1.45977356e+02 1.44796588e+02 1.43627815e+02 1.42470889e+02 1.41325662e+02 + 1.40191991e+02 1.39069732e+02 1.37958744e+02 1.36858890e+02 1.35770033e+02 + 1.34692038e+02 1.33624774e+02 1.32568109e+02 1.31521915e+02 1.30486065e+02 + 1.29460434e+02 1.28444900e+02 1.27439341e+02 1.26443637e+02 1.25457671e+02 + 1.24481326e+02 1.23514488e+02 1.22557044e+02 1.21608883e+02 1.20669895e+02 + 1.19739973e+02 1.18819008e+02 1.17906897e+02 1.17003536e+02 1.16108822e+02 + 1.15222655e+02 1.14344935e+02 1.13475565e+02 1.12614448e+02 1.11761488e+02 + 1.10916591e+02 1.10079666e+02 1.09250620e+02 1.08429363e+02 1.07615807e+02 + 1.06809864e+02 1.06011446e+02 1.05220470e+02 1.04436850e+02 1.03660504e+02 + 1.02891350e+02 1.02129306e+02 1.01374294e+02 1.00626234e+02 9.98850490e+01 + 9.91506621e+01 9.84229978e+01 9.77019815e+01 9.69875397e+01 9.62795998e+01 + 9.55780899e+01 9.48829395e+01 9.41940788e+01 9.35114387e+01 9.28349515e+01 + 9.21645498e+01 9.15001676e+01 9.08417394e+01 9.01892007e+01 8.95424878e+01 + 8.89015379e+01 8.82662888e+01 8.76366793e+01 8.70126489e+01 8.63941379e+01 + 8.57810873e+01 8.51734390e+01 8.45711354e+01 8.39741198e+01 8.33823362e+01 + 8.27957293e+01 8.22142444e+01 8.16378276e+01 8.10664257e+01 8.04999861e+01 + 7.99384568e+01 7.93817865e+01 7.88299247e+01 7.82828212e+01 7.77404266e+01 + 7.72026922e+01 7.66695698e+01 7.61410118e+01 7.56169711e+01 7.50974014e+01 + 7.45822568e+01 7.40714918e+01 7.35650619e+01 7.30629228e+01 7.25650308e+01 + 7.20713427e+01 7.15818160e+01 7.10964085e+01 7.06150787e+01 7.01377854e+01 + 6.96644881e+01 6.91951466e+01 6.87297212e+01 6.82681729e+01 6.78104629e+01 + 6.73565530e+01 6.69064053e+01 6.64599827e+01 6.60172481e+01 6.55781651e+01 + 6.51426977e+01 6.47108103e+01 6.42824677e+01 6.38576352e+01 6.34362783e+01 + 6.30183631e+01 6.26038561e+01 6.21927241e+01 6.17849342e+01 6.13804542e+01 + 6.09792519e+01 6.05812957e+01 6.01865543e+01 5.97949967e+01 5.94065925e+01 + 5.90213113e+01 5.86391234e+01 5.82599991e+01 5.78839092e+01 5.75108250e+01 + 5.71407179e+01 5.67735596e+01 5.64093223e+01 5.60479784e+01 5.56895007e+01 + 5.53338621e+01 5.49810362e+01 5.46309964e+01 5.42837169e+01 5.39391717e+01 + 5.35973355e+01 5.32581831e+01 5.29216896e+01 5.25878303e+01 5.22565810e+01 + 5.19279175e+01 5.16018161e+01 5.12782532e+01 5.09572056e+01 5.06386501e+01 + 5.03225641e+01 5.00089251e+01 4.96977108e+01 4.93888991e+01 4.90824683e+01 + 4.87783969e+01 4.84766635e+01 4.81772471e+01 4.78801269e+01 4.75852822e+01 + 4.72926927e+01 4.70023383e+01 4.67141989e+01 4.64282548e+01 4.61444866e+01 + 4.58628749e+01 4.55834007e+01 4.53060451e+01 4.50307894e+01 4.47576150e+01 + 4.44865039e+01 4.42174378e+01 4.39503989e+01 4.36853695e+01 4.34223320e+01 + 4.31612692e+01 4.29021640e+01 4.26449994e+01 4.23897586e+01 4.21364250e+01 + 4.18849823e+01 4.16354141e+01 4.13877045e+01 4.11418375e+01 4.08977974e+01 + 4.06555686e+01 4.04151358e+01 4.01764837e+01 3.99395973e+01 3.97044616e+01 + 3.94710618e+01 3.92393834e+01 3.90094120e+01 3.87811332e+01 3.85545328e+01 + 3.83295969e+01 3.81063117e+01 3.78846634e+01 3.76646384e+01 3.74462233e+01 + 3.72294049e+01 3.70141699e+01 3.68005054e+01 3.65883986e+01 3.63778365e+01 + 3.61688067e+01 3.59612967e+01 3.57552940e+01 3.55507865e+01 3.53477621e+01 + 3.51462088e+01 3.49461146e+01 3.47474680e+01 3.45502573e+01 3.43544709e+01 + 3.41600975e+01 3.39671259e+01 3.37755448e+01 3.35853433e+01 3.33965104e+01 + 3.32090353e+01 3.30229073e+01 3.28381158e+01 3.26546502e+01 3.24725003e+01 + 3.22916557e+01 3.21121062e+01 3.19338418e+01 3.17568524e+01 3.15811282e+01 + 3.14066595e+01 3.12334364e+01 3.10614495e+01 3.08906892e+01 3.07211461e+01 + 3.05528109e+01 3.03856744e+01 3.02197274e+01 3.00549609e+01 2.98913659e+01 + 2.97289337e+01 2.95676552e+01 2.94075220e+01 2.92485253e+01 2.90906567e+01 + 2.89339075e+01 2.87782696e+01 2.86237345e+01 2.84702941e+01 2.83179402e+01 + 2.81666647e+01 2.80164597e+01 2.78673172e+01 2.77192294e+01 2.75721884e+01 + 2.74261867e+01 2.72812164e+01 2.71372702e+01 2.69943404e+01 2.68524196e+01 + 2.67115005e+01 2.65715758e+01 2.64326381e+01 2.62946804e+01 2.61576954e+01 + 2.60216762e+01 2.58866157e+01 2.57525070e+01 2.56193432e+01 2.54871175e+01 + 2.53558231e+01 2.52254532e+01 2.50960012e+01 2.49674605e+01 2.48398246e+01 + 2.47130868e+01 2.45872407e+01 2.44622800e+01 2.43381982e+01 2.42149890e+01 + 2.40926461e+01 2.39711634e+01 2.38505345e+01 2.37307534e+01 2.36118139e+01 + 2.34937099e+01 2.33764355e+01 2.32599847e+01 2.31443514e+01 2.30295297e+01 + 2.29155138e+01 2.28022979e+01 2.26898760e+01 2.25782423e+01 2.24673913e+01 + 2.23573170e+01 2.22480138e+01 2.21394760e+01 2.20316979e+01 2.19246741e+01 + 2.18183987e+01 2.17128663e+01 2.16080713e+01 2.15040081e+01 2.14006713e+01 + 2.12980553e+01 2.11961547e+01 2.10949639e+01 2.09944776e+01 2.08946903e+01 + 2.07955965e+01 2.06971909e+01 2.05994680e+01 2.05024225e+01 2.04060489e+01 + 2.03103419e+01 2.02152961e+01 2.01209062e+01 2.00271667e+01 1.99340723e+01 + 1.98416176e+01 1.97497974e+01 1.96586061e+01 1.95680384e+01 1.94780891e+01 + 1.93887526e+01 1.93000236e+01 1.92118968e+01 1.91243667e+01 1.90374279e+01 + 1.89510751e+01 1.88653027e+01 1.87801054e+01 1.86954777e+01 1.86114142e+01 + 1.85279093e+01 1.84449576e+01 1.83625536e+01 1.82806917e+01 1.81993664e+01 + 1.81185722e+01 1.80383034e+01 1.79585544e+01 1.78793197e+01 1.78005935e+01 + 1.77223703e+01 1.76446442e+01 1.75674096e+01 1.74906608e+01 1.74143919e+01 + 1.73385972e+01 1.72632708e+01 1.71884069e+01 1.71139997e+01 1.70400432e+01 + 1.69665314e+01 1.68934585e+01 1.68208185e+01 1.67486053e+01 1.66768129e+01 + 1.66054352e+01 1.65344662e+01 1.64638996e+01 1.63937295e+01 1.63239495e+01 + 1.62545536e+01 1.61855354e+01 1.61168888e+01 1.60486074e+01 1.59806849e+01 + 1.59131152e+01 1.58458917e+01 1.57790082e+01 1.57124583e+01 1.56462356e+01 + 1.55803337e+01 1.55147462e+01 1.54494667e+01 1.53844886e+01 1.53198057e+01 + 1.52554114e+01 1.51912992e+01 1.51274628e+01 1.50638956e+01 1.50005912e+01 + 1.49375432e+01 1.48747451e+01 1.48121904e+01 1.47498729e+01 1.46877860e+01 + 1.46259234e+01 1.45642788e+01 1.45028458e+01 1.44416180e+01 1.43805894e+01 + 1.43197535e+01 1.42591043e+01 1.41986356e+01 1.41383412e+01 1.40782152e+01 + 1.40182515e+01 1.39584442e+01 1.38987874e+01 1.38392754e+01 1.37799023e+01 + 1.37206626e+01 1.36615506e+01 1.36025608e+01 1.35436879e+01 1.34849265e+01 + 1.34262714e+01 1.33677175e+01 1.33092596e+01 1.32508930e+01 1.31926128e+01 + 1.31344143e+01 1.30762930e+01 1.30182443e+01 1.29602640e+01 1.29023479e+01 + 1.28444919e+01 1.27866920e+01 1.27289446e+01 1.26712459e+01 1.26135925e+01 + 1.25559810e+01 1.24984082e+01 1.24408710e+01 1.23833667e+01 1.23258924e+01 + 1.22684456e+01 1.22110239e+01 1.21536251e+01 1.20962470e+01 1.20388879e+01 + 1.19815458e+01 1.19242194e+01 1.18669071e+01 1.18096078e+01 1.17523204e+01 + 1.16950440e+01 1.16377779e+01 1.15805216e+01 1.15232746e+01 1.14660369e+01 + 1.14088083e+01 1.13515889e+01 1.12943791e+01 1.12371794e+01 1.11799903e+01 + 1.11228126e+01 1.10656472e+01 1.10084953e+01 1.09513580e+01 1.08942368e+01 + 1.08371332e+01 1.07800489e+01 1.07229856e+01 1.06659454e+01 1.06089302e+01 + 1.05519423e+01 1.04949840e+01 1.04380578e+01 1.03811662e+01 1.03243118e+01 + 1.02674975e+01 1.02107262e+01 1.01540007e+01 1.00973241e+01 1.00406996e+01 + 9.98413044e+00 9.92761985e+00 9.87117124e+00 9.81478802e+00 9.75847371e+00 + 9.70223184e+00 9.64606603e+00 9.58997992e+00 9.53397719e+00 9.47806158e+00 + 9.42223684e+00 9.36650675e+00 9.31087511e+00 9.25534574e+00 9.19992248e+00 + 9.14460916e+00 9.08940962e+00 9.03432771e+00 8.97936725e+00 8.92453207e+00 + 8.86982599e+00 8.81525279e+00 8.76081624e+00 8.70652009e+00 8.65236805e+00 + 8.59836381e+00 8.54451101e+00 8.49081326e+00 8.43727413e+00 8.38389714e+00 + 8.33068575e+00 8.27764339e+00 8.22477343e+00 8.17207918e+00 8.11956390e+00 + 8.06723078e+00 8.01508296e+00 7.96312350e+00 7.91135542e+00 7.85978164e+00 + 7.80840505e+00 7.75722843e+00 7.70625452e+00 7.65548598e+00 7.60492538e+00 + 7.55457525e+00 7.50443802e+00 7.45451604e+00 7.40481162e+00 7.35532695e+00 + 7.30606417e+00 7.25702534e+00 7.20821245e+00 7.15962739e+00 7.11127200e+00 + 7.06314804e+00 7.01525718e+00 6.96760102e+00 6.92018109e+00 6.87299885e+00 + 6.82605568e+00 6.77935288e+00 6.73289168e+00 6.68667325e+00 6.64069867e+00 + 6.59496898e+00 6.54948512e+00 6.50424797e+00 6.45925834e+00 6.41451700e+00 + 6.37002461e+00 6.32578181e+00 6.28178913e+00 6.23804709e+00 6.19455611e+00 + 6.15131656e+00 6.10832876e+00 6.06559296e+00 6.02310937e+00 5.98087813e+00 + 5.93889933e+00 5.89717300e+00 5.85569914e+00 5.81447769e+00 5.77350853e+00 + 5.73279150e+00 5.69232639e+00 5.65211296e+00 5.61215092e+00 5.57243991e+00 + 5.53297956e+00 5.49376946e+00 5.45480915e+00 5.41609812e+00 5.37763584e+00 + 5.33942175e+00 5.30145525e+00 5.26373568e+00 5.22626240e+00 5.18903469e+00 + 5.15205182e+00 5.11531304e+00 5.07881756e+00 5.04256457e+00 5.00655322e+00 + 4.97078266e+00 4.93525199e+00 4.89996030e+00 4.86490667e+00 4.83009013e+00 + 4.79550971e+00 4.76116442e+00 4.72705324e+00 4.69317516e+00 4.65952911e+00 + 4.62611405e+00 4.59292889e+00 4.55997254e+00 4.52724390e+00 4.49474186e+00 + 4.46246527e+00 4.43041301e+00 4.39858391e+00 4.36697683e+00 4.33559058e+00 + 4.30442399e+00 4.27347587e+00 4.24274502e+00 4.21223025e+00 4.18193034e+00 + 4.15184408e+00 4.12197025e+00 4.09230762e+00 4.06285497e+00 4.03361105e+00 + 4.00457465e+00 3.97574451e+00 3.94711939e+00 3.91869805e+00 3.89047924e+00 + 3.86246171e+00 3.83464422e+00 3.80702552e+00 3.77960436e+00 3.75237948e+00 + 3.72534965e+00 3.69851361e+00 3.67187011e+00 3.64541790e+00 3.61915576e+00 + 3.59308242e+00 3.56719665e+00 3.54149722e+00 3.51598288e+00 3.49065241e+00 + 3.46550458e+00 3.44053815e+00 3.41575191e+00 3.39114464e+00 3.36671512e+00 + 3.34246213e+00 3.31838448e+00 3.29448096e+00 3.27075038e+00 3.24719152e+00 + 3.22380322e+00 3.20058428e+00 3.17753353e+00 3.15464979e+00 3.13193188e+00 + 3.10937866e+00 3.08698896e+00 3.06476163e+00 3.04269551e+00 3.02078948e+00 + 2.99904239e+00 2.97745312e+00 2.95602054e+00 2.93474353e+00 2.91362099e+00 + 2.89265181e+00 2.87183488e+00 2.85116912e+00 2.83065343e+00 2.81028675e+00 + 2.79006799e+00 2.76999609e+00 2.75006998e+00 2.73028861e+00 2.71065093e+00 + 2.69115591e+00 2.67180250e+00 2.65258967e+00 2.63351641e+00 2.61458169e+00 + 2.59578452e+00 2.57712388e+00 2.55859877e+00 2.54020822e+00 2.52195123e+00 + 2.50382683e+00 2.48583406e+00 2.46797193e+00 2.45023951e+00 2.43263583e+00 + 2.41515996e+00 2.39781095e+00 2.38058788e+00 2.36348981e+00 2.34651584e+00 + 2.32966505e+00 2.31293654e+00 2.29632940e+00 2.27984274e+00 2.26347568e+00 + 2.24722733e+00 2.23109683e+00 2.21508330e+00 2.19918589e+00 2.18340374e+00 + 2.16773599e+00 2.15218181e+00 2.13674036e+00 2.12141081e+00 2.10619234e+00 + 2.09108412e+00 2.07608534e+00 2.06119520e+00 2.04641290e+00 2.03173764e+00 + 2.01716864e+00 2.00270510e+00 1.98834625e+00 1.97409133e+00 1.95993956e+00 + 1.94589018e+00 1.93194245e+00 1.91809560e+00 1.90434891e+00 1.89070162e+00 + 1.87715301e+00 1.86370236e+00 1.85034893e+00 1.83709202e+00 1.82393091e+00 + 1.81086490e+00 1.79789329e+00 1.78501538e+00 1.77223049e+00 1.75953793e+00 + 1.74693701e+00 1.73442708e+00 1.72200745e+00 1.70967747e+00 1.69743647e+00 + 1.68528380e+00 1.67321882e+00 1.66124088e+00 1.64934933e+00 1.63754355e+00 + 1.62582290e+00 1.61418677e+00 1.60263452e+00 1.59116555e+00 1.57977925e+00 + 1.56847500e+00 1.55725221e+00 1.54611027e+00 1.53504861e+00 1.52406662e+00 + 1.51316373e+00 1.50233935e+00 1.49159292e+00 1.48092386e+00 1.47033160e+00 + 1.45981558e+00 1.44937525e+00 1.43901005e+00 1.42871943e+00 1.41850285e+00 + 1.40835976e+00 1.39828964e+00 1.38829194e+00 1.37836613e+00 1.36851170e+00 + 1.35872813e+00 1.34901488e+00 1.33937146e+00 1.32979735e+00 1.32029205e+00 + 1.31085505e+00 1.30148586e+00 1.29218399e+00 1.28294893e+00 1.27378022e+00 + 1.26467735e+00 1.25563986e+00 1.24666727e+00 1.23775911e+00 1.22891490e+00 + 1.22013419e+00 1.21141650e+00 1.20276139e+00 1.19416839e+00 1.18563706e+00 + 1.17716695e+00 1.16875761e+00 1.16040861e+00 1.15211950e+00 1.14388985e+00 + 1.13571922e+00 1.12760720e+00 1.11955335e+00 1.11155725e+00 1.10361848e+00 + 1.09573664e+00 1.08791130e+00 1.08014205e+00 1.07242850e+00 1.06477023e+00 + 1.05716685e+00 1.04961796e+00 1.04212316e+00 1.03468206e+00 1.02729427e+00 + 1.01995942e+00 1.01267711e+00 1.00544696e+00 9.98268607e-01 9.91141664e-01 + 9.84065763e-01 9.77040534e-01 9.70065612e-01 9.63140634e-01 9.56265238e-01 + 9.49439067e-01 9.42661765e-01 9.35932979e-01 9.29252359e-01 9.22619557e-01 + 9.16034229e-01 9.09496031e-01 9.03004625e-01 8.96559671e-01 8.90160836e-01 + 8.83807786e-01 8.77500192e-01 8.71237727e-01 8.65020063e-01 8.58846880e-01 + 8.52717856e-01 8.46632673e-01 8.40591016e-01 8.34592571e-01 8.28637027e-01 + 8.22724074e-01 8.16853407e-01 8.11024721e-01 8.05237713e-01 7.99492085e-01 + 7.93787537e-01 7.88123775e-01 7.82500506e-01 7.76917437e-01 7.71374280e-01 + 7.65870748e-01 7.60406556e-01 7.54981421e-01 7.49595063e-01 7.44247202e-01 + 7.38937563e-01 7.33665869e-01 7.28431850e-01 7.23235234e-01 7.18075752e-01 + 7.12953138e-01 7.07867127e-01 7.02817456e-01 6.97803864e-01 6.92826092e-01 + 6.87883884e-01 6.82976983e-01 6.78105137e-01 6.73268093e-01 6.68465603e-01 + 6.63697417e-01 6.58963291e-01 6.54262979e-01 6.49596240e-01 6.44962832e-01 + 6.40362516e-01 6.35795055e-01 6.31260213e-01 6.26757758e-01 6.22287455e-01 + 6.17849075e-01 6.13442390e-01 6.09067171e-01 6.04723193e-01 6.00410233e-01 + 5.96128068e-01 5.91876478e-01 5.87655243e-01 5.83464146e-01 5.79302972e-01 + 5.75171505e-01 5.71069533e-01 5.66996845e-01 5.62953230e-01 5.58938482e-01 + 5.54952393e-01 5.50994758e-01 5.47065373e-01 5.43164035e-01 5.39290546e-01 + 5.35444703e-01 5.31626311e-01 5.27835173e-01 5.24071092e-01 5.20333877e-01 + 5.16623334e-01 5.12939273e-01 5.09281504e-01 5.05649839e-01 5.02044091e-01 + 4.98464075e-01 4.94909607e-01 4.91380505e-01 4.87876585e-01 4.84397670e-01 + 4.80943579e-01 4.77514135e-01 4.74109162e-01 4.70728485e-01 4.67371930e-01 + 4.64039325e-01 4.60730498e-01 4.57445280e-01 4.54183502e-01 4.50944995e-01 + 4.47729594e-01 4.44537134e-01 4.41367451e-01 4.38220381e-01 4.35095763e-01 + 4.31993437e-01 4.28913243e-01 4.25855024e-01 4.22818621e-01 4.19803880e-01 + 4.16810646e-01 4.13838764e-01 4.10888082e-01 4.07958449e-01 4.05049714e-01 + 4.02161729e-01 3.99294344e-01 3.96447413e-01 3.93620789e-01 3.90814328e-01 + 3.88027885e-01 3.85261318e-01 3.82514484e-01 3.79787243e-01 3.77079454e-01 + 3.74390979e-01 3.71721680e-01 3.69071419e-01 3.66440061e-01 3.63827471e-01 + 3.61233515e-01 3.58658059e-01 3.56100972e-01 3.53562123e-01 3.51041381e-01 + 3.48538617e-01 3.46053702e-01 3.43586510e-01 3.41136913e-01 3.38704786e-01 + 3.36290004e-01 3.33892444e-01 3.31511982e-01 3.29148497e-01 3.26801867e-01 + 3.24471972e-01 3.22158693e-01 3.19861910e-01 3.17581506e-01 3.15317365e-01 + 3.13069370e-01 3.10837405e-01 3.08621358e-01 3.06421113e-01 3.04236558e-01 + 3.02067581e-01 2.99914071e-01 2.97775918e-01 2.95653012e-01 2.93545243e-01 + 2.91452505e-01 2.89374690e-01 2.87311691e-01 2.85263403e-01 2.83229721e-01 + 2.81210540e-01 2.79205757e-01 2.77215269e-01 2.75238974e-01 2.73276772e-01 + 2.71328561e-01 2.69394241e-01 2.67473714e-01 2.65566881e-01 2.63673644e-01 + 2.61793907e-01 2.59927573e-01 2.58074546e-01 2.56234732e-01 2.54408036e-01 + 2.52594364e-01 2.50793624e-01 2.49005724e-01 2.47230572e-01 2.45468077e-01 + 2.43718148e-01 2.41980696e-01 2.40255632e-01 2.38542868e-01 2.36842316e-01 + 2.35153889e-01 2.33477499e-01 2.31813063e-01 2.30160493e-01 2.28519706e-01 + 2.26890618e-01 2.25273144e-01 2.23667203e-01 2.22072711e-01 2.20489588e-01 + 2.18917752e-01 2.17357123e-01 2.15807620e-01 2.14269165e-01 2.12741679e-01 + 2.11225083e-01 2.09719299e-01 2.08224251e-01 2.06739862e-01 2.05266056e-01 + 2.03802758e-01 2.02349892e-01 2.00907384e-01 1.99475161e-01 1.98053148e-01 + 1.96641274e-01 1.95239466e-01 1.93847651e-01 1.92465759e-01 1.91093720e-01 + 1.89731462e-01 1.88378916e-01 1.87036013e-01 1.85702683e-01 1.84378860e-01 + 1.83064474e-01 1.81759459e-01 1.80463748e-01 1.79177274e-01 1.77899972e-01 + 1.76631776e-01 1.75372621e-01 1.74122443e-01 1.72881178e-01 1.71648762e-01 + 1.70425132e-01 1.69210225e-01 1.68003980e-01 1.66806334e-01 1.65617226e-01 + 1.64436595e-01 1.63264382e-01 1.62100525e-01 1.60944965e-01 1.59797644e-01 + 1.58658502e-01 1.57527480e-01 1.56404522e-01 1.55289570e-01 1.54182566e-01 + 1.53083453e-01 1.51992177e-01 1.50908680e-01 1.49832907e-01 1.48764803e-01 + 1.47704314e-01 1.46651386e-01 1.45605963e-01 1.44567993e-01 1.43537423e-01 + 1.42514199e-01 1.41498271e-01 1.40489584e-01 1.39488089e-01 1.38493732e-01 + 1.37506465e-01 1.36526236e-01 1.35552995e-01 1.34586691e-01 1.33627277e-01 + 1.32674702e-01 1.31728917e-01 1.30789875e-01 1.29857528e-01 1.28931827e-01 + 1.28012725e-01 1.27100175e-01 1.26194131e-01 1.25294545e-01 1.24401373e-01 + 1.23514568e-01 1.22634084e-01 1.21759878e-01 1.20891903e-01 1.20030116e-01 + 1.19174473e-01 1.18324929e-01 1.17481442e-01 1.16643967e-01 1.15812463e-01 + 1.14986886e-01 1.14167195e-01 1.13353347e-01 1.12545300e-01 1.11743014e-01 + 1.10946447e-01 1.10155559e-01 1.09370309e-01 1.08590657e-01 1.07816562e-01 + 1.07047986e-01 1.06284889e-01 1.05527232e-01 1.04774975e-01 1.04028082e-01 + 1.03286513e-01 1.02550230e-01 1.01819196e-01 1.01093373e-01 1.00372724e-01 + 9.96572130e-02 9.89468023e-02 9.82414559e-02 9.75411377e-02 9.68458118e-02 + 9.61554427e-02 9.54699950e-02 9.47894335e-02 9.41137236e-02 9.34428306e-02 + 9.27767201e-02 9.21153581e-02 9.14587107e-02 9.08067443e-02 9.01594255e-02 + 8.95167213e-02 8.88785986e-02 8.82450249e-02 8.76159677e-02 8.69913948e-02 + 8.63712742e-02 8.57555743e-02 8.51442634e-02 8.45373104e-02 8.39346840e-02 + 8.33363536e-02 8.27422884e-02 8.21524581e-02 8.15668325e-02 8.09853815e-02 + 8.04080755e-02 7.98348848e-02 7.92657803e-02 7.87007326e-02 7.81397129e-02 + 7.75826925e-02 7.70296429e-02 7.64805357e-02 7.59353429e-02 7.53940365e-02 + 7.48565889e-02 7.43229725e-02 7.37931601e-02 7.32671244e-02 7.27448387e-02 + 7.22262761e-02 7.17114101e-02 7.12002144e-02 7.06926628e-02 7.01887293e-02 + 6.96883881e-02 6.91916136e-02 6.86983804e-02 6.82086633e-02 6.77224371e-02 + 6.72396770e-02 6.67603584e-02 6.62844565e-02 6.58119472e-02 6.53428062e-02 + 6.48770095e-02 6.44145332e-02 6.39553537e-02 6.34994475e-02 6.30467913e-02 + 6.25973618e-02 6.21511361e-02 6.17080914e-02 6.12682049e-02 6.08314542e-02 + 6.03978168e-02 5.99672707e-02 5.95397938e-02 5.91153641e-02 5.86939600e-02 + 5.82755599e-02 5.78601423e-02 5.74476861e-02 5.70381701e-02 5.66315734e-02 + 5.62278751e-02 5.58270545e-02 5.54290913e-02 5.50339649e-02 5.46416552e-02 + 5.42521421e-02 5.38654056e-02 5.34814260e-02 5.31001837e-02 5.27216590e-02 + 5.23458326e-02 5.19726854e-02 5.16021981e-02 5.12343518e-02 5.08691278e-02 + 5.05065072e-02 5.01464716e-02 4.97890026e-02 4.94340817e-02 4.90816910e-02 + 4.87318122e-02 4.83844276e-02 4.80395193e-02 4.76970697e-02 4.73570612e-02 + 4.70194765e-02 4.66842983e-02 4.63515094e-02 4.60210928e-02 4.56930316e-02 + 4.53673090e-02 4.50439082e-02 4.47228129e-02 4.44040065e-02 4.40874727e-02 + 4.37731953e-02 4.34611583e-02 4.31513456e-02 4.28437414e-02 4.25383300e-02 + 4.22350957e-02 4.19340230e-02 4.16350965e-02 4.13383009e-02 4.10436211e-02 + 4.07510418e-02 4.04605482e-02 4.01721254e-02 3.98857586e-02 3.96014332e-02 + 3.93191346e-02 3.90388484e-02 3.87605602e-02 3.84842558e-02 3.82099210e-02 + 3.79375418e-02 3.76671043e-02 3.73985946e-02 3.71319989e-02 3.68673037e-02 + 3.66044954e-02 3.63435605e-02 3.60844856e-02 3.58272576e-02 3.55718633e-02 + 3.53182895e-02 3.50665233e-02 3.48165518e-02 3.45683623e-02 3.43219420e-02 + 3.40772783e-02 3.38343586e-02 3.35931707e-02 3.33537020e-02 3.31159404e-02 + 3.28798737e-02 3.26454897e-02 3.24127766e-02 3.21817224e-02 3.19523153e-02 + 3.17245434e-02 3.14983953e-02 3.12738592e-02 3.10509238e-02 3.08295775e-02 + 3.06098091e-02 3.03916074e-02 3.01749610e-02 2.99598591e-02 2.97462905e-02 + 2.95342443e-02 2.93237097e-02 2.91146759e-02 2.89071322e-02 2.87010679e-02 + 2.84964726e-02 2.82933358e-02 2.80916470e-02 2.78913959e-02 2.76925724e-02 + 2.74951661e-02 2.72991671e-02 2.71045652e-02 2.69113506e-02 2.67195132e-02 + 2.65290434e-02 2.63399314e-02 2.61521674e-02 2.59657420e-02 2.57806454e-02 + 2.55968683e-02 2.54144013e-02 2.52332350e-02 2.50533601e-02 2.48747675e-02 + 2.46974479e-02 2.45213924e-02 2.43465919e-02 2.41730374e-02 2.40007202e-02 + 2.38296313e-02 2.36597620e-02 2.34911036e-02 2.33236475e-02 2.31573851e-02 + 2.29923079e-02 2.28284075e-02 2.26656754e-02 2.25041034e-02 2.23436831e-02 + 2.21844064e-02 2.20262651e-02 2.18692510e-02 2.17133563e-02 2.15585729e-02 + 2.14048928e-02 2.12523082e-02 2.11008114e-02 2.09503945e-02 2.08010498e-02 + 2.06527697e-02 2.05055467e-02 2.03593731e-02 2.02142415e-02 2.00701445e-02 + 1.99270747e-02 1.97850247e-02 1.96439874e-02 1.95039554e-02 1.93649217e-02 + 1.92268790e-02 1.90898204e-02 1.89537388e-02 1.88186273e-02 1.86844789e-02 + 1.85512868e-02 1.84190442e-02 1.82877442e-02 1.81573802e-02 1.80279455e-02 + 1.78994335e-02 1.77718376e-02 1.76451512e-02 1.75193680e-02 1.73944813e-02 + 1.72704850e-02 1.71473725e-02 1.70251376e-02 1.69037741e-02 1.67832757e-02 + 1.66636363e-02 1.65448498e-02 1.64269100e-02 1.63098110e-02 1.61935467e-02 + 1.60781111e-02 1.59634985e-02 1.58497029e-02 1.57367184e-02 1.56245394e-02 + 1.55131600e-02 1.54025746e-02 1.52927776e-02 1.51837632e-02 1.50755259e-02 + 1.49680602e-02 1.48613605e-02 1.47554215e-02 1.46502376e-02 1.45458035e-02 + 1.44421139e-02 1.43391635e-02 1.42369469e-02 1.41354590e-02 1.40346945e-02 + 1.39346484e-02 1.38353154e-02 1.37366905e-02 1.36387686e-02 1.35415448e-02 + 1.34450141e-02 1.33491714e-02 1.32540120e-02 1.31595309e-02 1.30657234e-02 + 1.29725845e-02 1.28801096e-02 1.27882939e-02 1.26971327e-02 1.26063151e-02 + 1.25154436e-02 1.24245269e-02 1.23335755e-02 1.22425997e-02 1.21516097e-02 + 1.20606156e-02 1.19696276e-02 1.18786553e-02 1.17877088e-02 1.16967975e-02 + 1.16059312e-02 1.15151193e-02 1.14243711e-02 1.13336959e-02 1.12431028e-02 + 1.11526008e-02 1.10621990e-02 1.09719059e-02 1.08817305e-02 1.07916812e-02 + 1.07017665e-02 1.06119947e-02 1.05223742e-02 1.04329131e-02 1.03436193e-02 + 1.02545008e-02 1.01655655e-02 1.00768209e-02 9.98827475e-03 9.89993445e-03 + 9.81180737e-03 9.72390078e-03 9.63622180e-03 9.54877749e-03 9.46157475e-03 + 9.37462041e-03 9.28792117e-03 9.20148363e-03 9.11531428e-03 9.02941949e-03 + 8.94380554e-03 8.85847859e-03 8.77344469e-03 8.68870981e-03 8.60427978e-03 + 8.52016033e-03 8.43635711e-03 8.35287563e-03 8.26972131e-03 8.18689948e-03 + 8.10441534e-03 8.02227400e-03 7.94048046e-03 7.85903964e-03 7.77795632e-03 + 7.69723520e-03 7.61688088e-03 7.53689786e-03 7.45729054e-03 7.37806320e-03 + 7.29922004e-03 7.22076516e-03 7.14270257e-03 7.06503616e-03 6.98776974e-03 + 6.91090701e-03 6.83445160e-03 6.75840702e-03 6.68277668e-03 6.60756394e-03 + 6.53277201e-03 6.45840404e-03 6.38446310e-03 6.31095212e-03 6.23787400e-03 + 6.16523150e-03 6.09302732e-03 6.02126407e-03 5.94994425e-03 5.87907029e-03 + 5.80864453e-03 5.73866924e-03 5.66914657e-03 5.60007862e-03 5.53146739e-03 + 5.46331479e-03 5.39562266e-03 5.32839276e-03 5.26162676e-03 5.19532625e-03 + 5.12949276e-03 5.06412771e-03 4.99923247e-03 4.93480832e-03 4.87085646e-03 + 4.80737803e-03 4.74437407e-03 4.68184557e-03 4.61979344e-03 4.55821851e-03 + 4.49712154e-03 4.43650324e-03 4.37636421e-03 4.31670502e-03 4.25752614e-03 + 4.19882800e-03 4.14061094e-03 4.08287524e-03 4.02562113e-03 3.96884876e-03 + 3.91255821e-03 3.85674951e-03 3.80142263e-03 3.74657745e-03 3.69221384e-03 + 3.63833156e-03 3.58493033e-03 3.53200982e-03 3.47956964e-03 3.42760932e-03 + 3.37612837e-03 3.32512621e-03 3.27460223e-03 3.22455576e-03 3.17498607e-03 + 3.12589238e-03 3.07727386e-03 3.02912963e-03 2.98145877e-03 2.93426028e-03 + 2.88753314e-03 2.84127627e-03 2.79548856e-03 2.75016882e-03 2.70531585e-03 + 2.66092838e-03 2.61700511e-03 2.57354469e-03 2.53054574e-03 2.48800680e-03 + 2.44592643e-03 2.40430309e-03 2.36313524e-03 2.32242128e-03 2.28215958e-03 + 2.24234848e-03 2.20298627e-03 2.16407120e-03 2.12560150e-03 2.08757536e-03 + 2.04999094e-03 2.01284635e-03 1.97613968e-03 1.93986899e-03 1.90403230e-03 + 1.86862762e-03 1.83365289e-03 1.79910607e-03 1.76498506e-03 1.73128773e-03 + 1.69801194e-03 1.66515551e-03 1.63271624e-03 1.60069191e-03 1.56908027e-03 + 1.53787904e-03 1.50708593e-03 1.47669860e-03 1.44671473e-03 1.41713194e-03 + 1.38794786e-03 1.35916007e-03 1.33076615e-03 1.30276366e-03 1.27515013e-03 + 1.24792309e-03 1.22108002e-03 1.19461843e-03 1.16853578e-03 1.14282952e-03 + 1.11749709e-03 1.09253592e-03 1.06794342e-03 1.04371697e-03 1.01985397e-03 + 9.96351789e-04 9.73207785e-04 9.50419307e-04 9.27983692e-04 9.05898268e-04 + 8.84160354e-04 8.62767259e-04 8.41716282e-04 8.21004715e-04 8.00629843e-04 + 7.80588942e-04 7.60879284e-04 7.41498133e-04 7.22442746e-04 7.03710377e-04 + 6.85298275e-04 6.67203682e-04 6.49423839e-04 6.31955983e-04 6.14797347e-04 + 5.97945161e-04 5.81396654e-04 5.65149053e-04 5.49199583e-04 5.33545470e-04 + 5.18183936e-04 5.03112205e-04 4.88327503e-04 4.73827052e-04 4.59608080e-04 + 4.45667814e-04 4.32003482e-04 4.18612315e-04 4.05491548e-04 3.92638416e-04 + 3.80050161e-04 3.67724024e-04 3.55657254e-04 3.43847102e-04 3.32290824e-04 + 3.20985682e-04 3.09928942e-04 2.99117876e-04 2.88549763e-04 2.78221885e-04 + 2.68131534e-04 2.58276007e-04 2.48652609e-04 2.39258651e-04 2.30091454e-04 + 2.21148345e-04 2.12426659e-04 2.03923742e-04 1.95636945e-04 1.87563631e-04 + 1.79701172e-04 1.72046947e-04 1.64598349e-04 1.57352776e-04 1.50307641e-04 + 1.43460364e-04 1.36808378e-04 1.30349125e-04 1.24080059e-04 1.17998647e-04 + 1.12102364e-04 1.06388699e-04 1.00855154e-04 9.54992401e-05 9.03184837e-05 + 8.53104220e-05 8.04726054e-05 7.58025972e-05 7.12979737e-05 6.69563244e-05 + 6.27752523e-05 5.87523737e-05 5.48853189e-05 5.11717319e-05 4.76092706e-05 + 4.41956073e-05 4.09284284e-05 3.78054347e-05 3.48243416e-05 3.19828792e-05 + 2.92787923e-05 2.67098408e-05 2.42737994e-05 2.19684581e-05 1.97916221e-05 + 1.77411120e-05 1.58147637e-05 1.40104289e-05 1.23259747e-05 1.07592841e-05 + 9.30825580e-06 7.97080453e-06 6.74486090e-06 5.62837161e-06 4.61929948e-06 + 3.71562352e-06 2.91533901e-06 2.21645756e-06 1.61700713e-06 1.11503215e-06 + 7.08593517e-07 3.95768671e-07 1.74651632e-07 4.33530448e-08 0.00000000e+00 + 8.54089214e+04 8.54089214e+04 4.71851341e+04 3.12780768e+04 2.33258140e+04 + 1.85554559e+04 1.53760394e+04 1.31057232e+04 1.14035870e+04 1.00802305e+04 + 9.02201376e+03 8.15662046e+03 7.43583982e+03 6.82629521e+03 6.30414625e+03 + 5.85191002e+03 5.45647442e+03 5.10781256e+03 4.79812582e+03 4.52125743e+03 + 4.27228201e+03 4.04721238e+03 3.84278633e+03 3.65630905e+03 3.48553486e+03 + 3.32857745e+03 3.18384071e+03 3.04996505e+03 2.92578509e+03 2.81029625e+03 + 2.70262791e+03 2.60202179e+03 2.50781443e+03 2.41942281e+03 2.33633252e+03 + 2.25808794e+03 2.18428413e+03 2.11455989e+03 2.04859210e+03 1.98609078e+03 + 1.92679496e+03 1.87046914e+03 1.81690028e+03 1.76589516e+03 1.71727813e+03 + 1.67088917e+03 1.62658219e+03 1.58422355e+03 1.54369075e+03 1.50487129e+03 + 1.46766169e+03 1.43196661e+03 1.39769802e+03 1.36477457e+03 1.33312095e+03 + 1.30266729e+03 1.27334878e+03 1.24510512e+03 1.21788020e+03 1.19162171e+03 + 1.16628084e+03 1.14181198e+03 1.11817248e+03 1.09532240e+03 1.07322430e+03 + 1.05184306e+03 1.03114567e+03 1.01110113e+03 9.91680241e+02 9.72855519e+02 + 9.54601047e+02 9.36892379e+02 9.19706428e+02 9.03021378e+02 8.86816598e+02 + 8.71072562e+02 8.55770773e+02 8.40893704e+02 8.26424727e+02 8.12348062e+02 + 7.98648722e+02 7.85312464e+02 7.72325742e+02 7.59675669e+02 7.47349973e+02 + 7.35336964e+02 7.23625501e+02 7.12204954e+02 7.01065184e+02 6.90196508e+02 + 6.79589678e+02 6.69235854e+02 6.59126586e+02 6.49253787e+02 6.39609720e+02 + 6.30186973e+02 6.20978448e+02 6.11977343e+02 6.03177134e+02 5.94571564e+02 + 5.86154629e+02 5.77920564e+02 5.69863834e+02 5.61979120e+02 5.54261311e+02 + 5.46705492e+02 5.39306934e+02 5.32061090e+02 5.24963582e+02 5.18010194e+02 + 5.11196866e+02 5.04519685e+02 4.97974882e+02 4.91558820e+02 4.85267995e+02 + 4.79099023e+02 4.73048641e+02 4.67113699e+02 4.61291153e+02 4.55578065e+02 + 4.49971597e+02 4.44469004e+02 4.39067634e+02 4.33764924e+02 4.28558392e+02 + 4.23445639e+02 4.18424343e+02 4.13492256e+02 4.08647203e+02 4.03887075e+02 + 3.99209833e+02 3.94613497e+02 3.90096152e+02 3.85655939e+02 3.81291059e+02 + 3.76999763e+02 3.72780358e+02 3.68631201e+02 3.64550696e+02 3.60537296e+02 + 3.56589497e+02 3.52705842e+02 3.48884912e+02 3.45125332e+02 3.41425764e+02 + 3.37784909e+02 3.34201504e+02 3.30674322e+02 3.27202169e+02 3.23783884e+02 + 3.20418339e+02 3.17104435e+02 3.13841105e+02 3.10627308e+02 3.07462032e+02 + 3.04344294e+02 3.01273133e+02 2.98247616e+02 2.95266833e+02 2.92329900e+02 + 2.89435952e+02 2.86584149e+02 2.83773672e+02 2.81003722e+02 2.78273520e+02 + 2.75582308e+02 2.72929346e+02 2.70313911e+02 2.67735301e+02 2.65192828e+02 + 2.62685823e+02 2.60213632e+02 2.57775617e+02 2.55371156e+02 2.52999641e+02 + 2.50660479e+02 2.48353090e+02 2.46076909e+02 2.43831384e+02 2.41615975e+02 + 2.39430155e+02 2.37273410e+02 2.35145235e+02 2.33045140e+02 2.30972644e+02 + 2.28927278e+02 2.26908581e+02 2.24916107e+02 2.22949415e+02 2.21008077e+02 + 2.19091672e+02 2.17199792e+02 2.15332033e+02 2.13488004e+02 2.11667319e+02 + 2.09869604e+02 2.08094489e+02 2.06341616e+02 2.04610631e+02 2.02901189e+02 + 2.01212953e+02 1.99545592e+02 1.97898782e+02 1.96272206e+02 1.94665554e+02 + 1.93078520e+02 1.91510808e+02 1.89962126e+02 1.88432186e+02 1.86920710e+02 + 1.85427423e+02 1.83952055e+02 1.82494343e+02 1.81054029e+02 1.79630858e+02 + 1.78224583e+02 1.76834961e+02 1.75461751e+02 1.74104720e+02 1.72763638e+02 + 1.71438281e+02 1.70128427e+02 1.68833859e+02 1.67554365e+02 1.66289736e+02 + 1.65039768e+02 1.63804259e+02 1.62583012e+02 1.61375835e+02 1.60182536e+02 + 1.59002930e+02 1.57836834e+02 1.56684068e+02 1.55544455e+02 1.54417822e+02 + 1.53304000e+02 1.52202820e+02 1.51114119e+02 1.50037736e+02 1.48973511e+02 + 1.47921291e+02 1.46880920e+02 1.45852251e+02 1.44835133e+02 1.43829423e+02 + 1.42834978e+02 1.41851657e+02 1.40879323e+02 1.39917840e+02 1.38967075e+02 + 1.38026896e+02 1.37097174e+02 1.36177784e+02 1.35268599e+02 1.34369498e+02 + 1.33480360e+02 1.32601065e+02 1.31731497e+02 1.30871541e+02 1.30021083e+02 + 1.29180012e+02 1.28348219e+02 1.27525595e+02 1.26712033e+02 1.25907430e+02 + 1.25111682e+02 1.24324686e+02 1.23546344e+02 1.22776556e+02 1.22015225e+02 + 1.21262256e+02 1.20517553e+02 1.19781025e+02 1.19052579e+02 1.18332124e+02 + 1.17619573e+02 1.16914836e+02 1.16217827e+02 1.15528460e+02 1.14846652e+02 + 1.14172318e+02 1.13505378e+02 1.12845749e+02 1.12193352e+02 1.11548107e+02 + 1.10909938e+02 1.10278766e+02 1.09654517e+02 1.09037114e+02 1.08426484e+02 + 1.07822554e+02 1.07225250e+02 1.06634503e+02 1.06050240e+02 1.05472393e+02 + 1.04900892e+02 1.04335670e+02 1.03776657e+02 1.03223789e+02 1.02676999e+02 + 1.02136221e+02 1.01601391e+02 1.01072445e+02 1.00549321e+02 1.00031955e+02 + 9.95202850e+01 9.90142506e+01 9.85137906e+01 9.80188451e+01 9.75293545e+01 + 9.70452599e+01 9.65665028e+01 9.60930254e+01 9.56247704e+01 9.51616810e+01 + 9.47037009e+01 9.42507742e+01 9.38028458e+01 9.33598606e+01 9.29217644e+01 + 9.24885033e+01 9.20600236e+01 9.16362725e+01 9.12171972e+01 9.08027455e+01 + 9.03928657e+01 8.99875063e+01 8.95866163e+01 8.91901451e+01 8.87980424e+01 + 8.84102583e+01 8.80267434e+01 8.76474484e+01 8.72723244e+01 8.69013231e+01 + 8.65343963e+01 8.61714961e+01 8.58125750e+01 8.54575859e+01 8.51064819e+01 + 8.47592164e+01 8.44157432e+01 8.40760164e+01 8.37399902e+01 8.34076193e+01 + 8.30788587e+01 8.27536636e+01 8.24319894e+01 8.21137919e+01 8.17990272e+01 + 8.14876516e+01 8.11796217e+01 8.08748944e+01 8.05734267e+01 8.02751761e+01 + 7.99801003e+01 7.96881571e+01 7.93993048e+01 7.91135019e+01 7.88307069e+01 + 7.85508789e+01 7.82739771e+01 7.79999609e+01 7.77287902e+01 7.74604249e+01 + 7.71948253e+01 7.69319518e+01 7.66717652e+01 7.64142266e+01 7.61592973e+01 + 7.59069387e+01 7.56571128e+01 7.54097815e+01 7.51649071e+01 7.49224524e+01 + 7.46823800e+01 7.44446532e+01 7.42092353e+01 7.39760900e+01 7.37451811e+01 + 7.35164730e+01 7.32899300e+01 7.30655169e+01 7.28431986e+01 7.26229406e+01 + 7.24047084e+01 7.21884677e+01 7.19741848e+01 7.17618261e+01 7.15513583e+01 + 7.13427483e+01 7.11359635e+01 7.09309715e+01 7.07277401e+01 7.05262375e+01 + 7.03264321e+01 7.01282928e+01 6.99317885e+01 6.97368888e+01 6.95435632e+01 + 6.93517818e+01 6.91615148e+01 6.89727329e+01 6.87854070e+01 6.85995083e+01 + 6.84150084e+01 6.82318792e+01 6.80500928e+01 6.78696219e+01 6.76904391e+01 + 6.75125177e+01 6.73358312e+01 6.71603534e+01 6.69860584e+01 6.68129207e+01 + 6.66409151e+01 6.64700167e+01 6.63002010e+01 6.61314439e+01 6.59637213e+01 + 6.57970099e+01 6.56312863e+01 6.54665278e+01 6.53027117e+01 6.51398160e+01 + 6.49778186e+01 6.48166982e+01 6.46564335e+01 6.44970036e+01 6.43383881e+01 + 6.41805668e+01 6.40235197e+01 6.38672274e+01 6.37116708e+01 6.35568308e+01 + 6.34026891e+01 6.32492275e+01 6.30964280e+01 6.29442732e+01 6.27927459e+01 + 6.26418291e+01 6.24915063e+01 6.23417613e+01 6.21925783e+01 6.20439415e+01 + 6.18958357e+01 6.17482461e+01 6.16011579e+01 6.14545569e+01 6.13084290e+01 + 6.11627605e+01 6.10175380e+01 6.08727484e+01 6.07283791e+01 6.05844173e+01 + 6.04408511e+01 6.02976684e+01 6.01548577e+01 6.00124076e+01 5.98703072e+01 + 5.97285456e+01 5.95871125e+01 5.94459976e+01 5.93051910e+01 5.91646830e+01 + 5.90244644e+01 5.88845260e+01 5.87448589e+01 5.86054545e+01 5.84663047e+01 + 5.83274012e+01 5.81887362e+01 5.80503022e+01 5.79120918e+01 5.77740979e+01 + 5.76363137e+01 5.74987325e+01 5.73613480e+01 5.72241539e+01 5.70871444e+01 + 5.69503136e+01 5.68136560e+01 5.66771664e+01 5.65408396e+01 5.64046708e+01 + 5.62686552e+01 5.61327884e+01 5.59970660e+01 5.58614839e+01 5.57260382e+01 + 5.55907252e+01 5.54555412e+01 5.53204830e+01 5.51855472e+01 5.50507308e+01 + 5.49160309e+01 5.47814449e+01 5.46469700e+01 5.45126041e+01 5.43783446e+01 + 5.42441897e+01 5.41101372e+01 5.39761853e+01 5.38423325e+01 5.37085770e+01 + 5.35749175e+01 5.34413527e+01 5.33078815e+01 5.31745027e+01 5.30412154e+01 + 5.29080189e+01 5.27749124e+01 5.26418952e+01 5.25089671e+01 5.23761274e+01 + 5.22433760e+01 5.21107127e+01 5.19781374e+01 5.18456500e+01 5.17132507e+01 + 5.15809395e+01 5.14487169e+01 5.13165831e+01 5.11845384e+01 5.10525835e+01 + 5.09207189e+01 5.07889451e+01 5.06572630e+01 5.05256731e+01 5.03941765e+01 + 5.02627739e+01 5.01314663e+01 5.00002547e+01 4.98691402e+01 4.97381238e+01 + 4.96072067e+01 4.94763901e+01 4.93456753e+01 4.92150635e+01 4.90845560e+01 + 4.89541543e+01 4.88238597e+01 4.86936737e+01 4.85635977e+01 4.84336333e+01 + 4.83037819e+01 4.81740452e+01 4.80444247e+01 4.79149220e+01 4.77855388e+01 + 4.76562768e+01 4.75271375e+01 4.73981228e+01 4.72692343e+01 4.71404737e+01 + 4.70118428e+01 4.68833434e+01 4.67549771e+01 4.66267459e+01 4.64986515e+01 + 4.63706956e+01 4.62428801e+01 4.61152068e+01 4.59876775e+01 4.58602941e+01 + 4.57330582e+01 4.56059719e+01 4.54790368e+01 4.53522548e+01 4.52256277e+01 + 4.50991574e+01 4.49728457e+01 4.48466943e+01 4.47207051e+01 4.45948799e+01 + 4.44692205e+01 4.43437286e+01 4.42184061e+01 4.40932546e+01 4.39682761e+01 + 4.38434722e+01 4.37188447e+01 4.35943953e+01 4.34701257e+01 4.33460377e+01 + 4.32221329e+01 4.30984131e+01 4.29748798e+01 4.28515348e+01 4.27283798e+01 + 4.26054162e+01 4.24826459e+01 4.23600702e+01 4.22376909e+01 4.21155096e+01 + 4.19935276e+01 4.18717467e+01 4.17501683e+01 4.16287939e+01 4.15076250e+01 + 4.13866631e+01 4.12659096e+01 4.11453659e+01 4.10250336e+01 4.09049138e+01 + 4.07850081e+01 4.06653178e+01 4.05458443e+01 4.04265888e+01 4.03075526e+01 + 4.01887371e+01 4.00701435e+01 3.99517730e+01 3.98336269e+01 3.97157064e+01 + 3.95980126e+01 3.94805467e+01 3.93633099e+01 3.92463033e+01 3.91295280e+01 + 3.90129851e+01 3.88966757e+01 3.87806007e+01 3.86647613e+01 3.85491584e+01 + 3.84337931e+01 3.83186662e+01 3.82037788e+01 3.80891318e+01 3.79747260e+01 + 3.78605625e+01 3.77466420e+01 3.76329654e+01 3.75195335e+01 3.74063472e+01 + 3.72934073e+01 3.71807145e+01 3.70682695e+01 3.69560733e+01 3.68441263e+01 + 3.67324294e+01 3.66209833e+01 3.65097885e+01 3.63988459e+01 3.62881559e+01 + 3.61777192e+01 3.60675364e+01 3.59576080e+01 3.58479347e+01 3.57385170e+01 + 3.56293554e+01 3.55204504e+01 3.54118025e+01 3.53034122e+01 3.51952799e+01 + 3.50874060e+01 3.49797911e+01 3.48724355e+01 3.47653396e+01 3.46585038e+01 + 3.45519285e+01 3.44456139e+01 3.43395604e+01 3.42337684e+01 3.41282382e+01 + 3.40229699e+01 3.39179640e+01 3.38132206e+01 3.37087400e+01 3.36045224e+01 + 3.35005681e+01 3.33968772e+01 3.32934500e+01 3.31902865e+01 3.30873870e+01 + 3.29847516e+01 3.28823804e+01 3.27802736e+01 3.26784313e+01 3.25768535e+01 + 3.24755403e+01 3.23744918e+01 3.22737081e+01 3.21731893e+01 3.20729352e+01 + 3.19729460e+01 3.18732217e+01 3.17737623e+01 3.16745677e+01 3.15756379e+01 + 3.14769730e+01 3.13785728e+01 3.12804372e+01 3.11825664e+01 3.10849600e+01 + 3.09876181e+01 3.08905406e+01 3.07937274e+01 3.06971783e+01 3.06008932e+01 + 3.05048719e+01 3.04091144e+01 3.03136205e+01 3.02183900e+01 3.01234227e+01 + 3.00287185e+01 2.99342772e+01 2.98400985e+01 2.97461823e+01 2.96525283e+01 + 2.95591363e+01 2.94660061e+01 2.93731375e+01 2.92805302e+01 2.91881839e+01 + 2.90960984e+01 2.90042734e+01 2.89127086e+01 2.88214038e+01 2.87303587e+01 + 2.86395729e+01 2.85490462e+01 2.84587782e+01 2.83687687e+01 2.82790172e+01 + 2.81895236e+01 2.81002873e+01 2.80113082e+01 2.79225858e+01 2.78341198e+01 + 2.77459099e+01 2.76579556e+01 2.75702566e+01 2.74828125e+01 2.73956229e+01 + 2.73086875e+01 2.72220059e+01 2.71355776e+01 2.70494022e+01 2.69634795e+01 + 2.68778088e+01 2.67923899e+01 2.67072223e+01 2.66223055e+01 2.65376392e+01 + 2.64532230e+01 2.63690562e+01 2.62851387e+01 2.62014698e+01 2.61180491e+01 + 2.60348762e+01 2.59519507e+01 2.58692720e+01 2.57868397e+01 2.57046534e+01 + 2.56227125e+01 2.55410166e+01 2.54595652e+01 2.53783578e+01 2.52973940e+01 + 2.52166733e+01 2.51361951e+01 2.50559589e+01 2.49759644e+01 2.48962109e+01 + 2.48166980e+01 2.47374252e+01 2.46583919e+01 2.45795977e+01 2.45010421e+01 + 2.44227245e+01 2.43446444e+01 2.42668013e+01 2.41891946e+01 2.41118240e+01 + 2.40346888e+01 2.39577884e+01 2.38811225e+01 2.38046904e+01 2.37284917e+01 + 2.36525257e+01 2.35767919e+01 2.35012899e+01 2.34260191e+01 2.33509789e+01 + 2.32761688e+01 2.32015882e+01 2.31272367e+01 2.30531136e+01 2.29792185e+01 + 2.29055507e+01 2.28321097e+01 2.27588950e+01 2.26859061e+01 2.26131423e+01 + 2.25406031e+01 2.24682880e+01 2.23961964e+01 2.23243277e+01 2.22526815e+01 + 2.21812571e+01 2.21100539e+01 2.20390715e+01 2.19683093e+01 2.18977666e+01 + 2.18274430e+01 2.17573379e+01 2.16874508e+01 2.16177809e+01 2.15483279e+01 + 2.14790911e+01 2.14100700e+01 2.13412640e+01 2.12726726e+01 2.12042951e+01 + 2.11361311e+01 2.10681799e+01 2.10004410e+01 2.09329138e+01 2.08655978e+01 + 2.07984924e+01 2.07315971e+01 2.06649112e+01 2.05984342e+01 2.05321655e+01 + 2.04661046e+01 2.04002510e+01 2.03346039e+01 2.02691630e+01 2.02039276e+01 + 2.01388971e+01 2.00740711e+01 2.00094488e+01 1.99450298e+01 1.98808136e+01 + 1.98167994e+01 1.97529869e+01 1.96893754e+01 1.96259643e+01 1.95627531e+01 + 1.94997413e+01 1.94369282e+01 1.93743134e+01 1.93118962e+01 1.92496761e+01 + 1.91876525e+01 1.91258250e+01 1.90641928e+01 1.90027555e+01 1.89415126e+01 + 1.88804634e+01 1.88196074e+01 1.87589440e+01 1.86984728e+01 1.86381931e+01 + 1.85781044e+01 1.85182061e+01 1.84584977e+01 1.83989787e+01 1.83396484e+01 + 1.82805064e+01 1.82215521e+01 1.81627849e+01 1.81042044e+01 1.80458099e+01 + 1.79876009e+01 1.79295769e+01 1.78717373e+01 1.78140817e+01 1.77566093e+01 + 1.76993198e+01 1.76422125e+01 1.75852870e+01 1.75285426e+01 1.74719789e+01 + 1.74155954e+01 1.73593914e+01 1.73033665e+01 1.72475200e+01 1.71918516e+01 + 1.71363607e+01 1.70810466e+01 1.70259090e+01 1.69709472e+01 1.69161608e+01 + 1.68615492e+01 1.68071119e+01 1.67528484e+01 1.66987581e+01 1.66448405e+01 + 1.65910952e+01 1.65375215e+01 1.64841190e+01 1.64308872e+01 1.63778255e+01 + 1.63249334e+01 1.62722105e+01 1.62196561e+01 1.61672698e+01 1.61150511e+01 + 1.60629994e+01 1.60111143e+01 1.59593953e+01 1.59078418e+01 1.58564533e+01 + 1.58052293e+01 1.57541694e+01 1.57032730e+01 1.56525397e+01 1.56019688e+01 + 1.55515600e+01 1.55013128e+01 1.54512266e+01 1.54013009e+01 1.53515352e+01 + 1.53019291e+01 1.52524821e+01 1.52031937e+01 1.51540633e+01 1.51050906e+01 + 1.50562750e+01 1.50076159e+01 1.49591131e+01 1.49107659e+01 1.48625738e+01 + 1.48145365e+01 1.47666534e+01 1.47189241e+01 1.46713480e+01 1.46239246e+01 + 1.45766536e+01 1.45295345e+01 1.44825667e+01 1.44357498e+01 1.43890834e+01 + 1.43425669e+01 1.42961999e+01 1.42499819e+01 1.42039125e+01 1.41579912e+01 + 1.41122175e+01 1.40665910e+01 1.40211112e+01 1.39757777e+01 1.39305900e+01 + 1.38855476e+01 1.38406501e+01 1.37958971e+01 1.37512880e+01 1.37068225e+01 + 1.36625000e+01 1.36183202e+01 1.35742825e+01 1.35303866e+01 1.34866320e+01 + 1.34430183e+01 1.33995449e+01 1.33562115e+01 1.33130177e+01 1.32699629e+01 + 1.32270467e+01 1.31842688e+01 1.31416287e+01 1.30991259e+01 1.30567600e+01 + 1.30145306e+01 1.29724372e+01 1.29304794e+01 1.28886568e+01 1.28469690e+01 + 1.28054156e+01 1.27639960e+01 1.27227099e+01 1.26815569e+01 1.26405365e+01 + 1.25996484e+01 1.25588920e+01 1.25182671e+01 1.24777731e+01 1.24374097e+01 + 1.23971764e+01 1.23570729e+01 1.23170986e+01 1.22772533e+01 1.22375365e+01 + 1.21979477e+01 1.21584867e+01 1.21191529e+01 1.20799461e+01 1.20408656e+01 + 1.20019113e+01 1.19630826e+01 1.19243792e+01 1.18858007e+01 1.18473466e+01 + 1.18090166e+01 1.17708103e+01 1.17327273e+01 1.16947672e+01 1.16569296e+01 + 1.16192141e+01 1.15816204e+01 1.15441480e+01 1.15067965e+01 1.14695656e+01 + 1.14324549e+01 1.13954640e+01 1.13585925e+01 1.13218400e+01 1.12852062e+01 + 1.12486906e+01 1.12122930e+01 1.11760129e+01 1.11398499e+01 1.11038037e+01 + 1.10678739e+01 1.10320602e+01 1.09963621e+01 1.09607793e+01 1.09253114e+01 + 1.08899580e+01 1.08547189e+01 1.08195935e+01 1.07845816e+01 1.07496829e+01 + 1.07148968e+01 1.06802231e+01 1.06456614e+01 1.06112114e+01 1.05768727e+01 + 1.05426449e+01 1.05085277e+01 1.04745207e+01 1.04406236e+01 1.04068360e+01 + 1.03731576e+01 1.03395880e+01 1.03061269e+01 1.02727739e+01 1.02395287e+01 + 1.02063909e+01 1.01733603e+01 1.01404363e+01 1.01076188e+01 1.00749073e+01 + 1.00423016e+01 1.00098012e+01 9.97740586e+00 9.94511523e+00 9.91292898e+00 + 9.88084676e+00 9.84886825e+00 9.81699310e+00 9.78522099e+00 9.75355158e+00 + 9.72198455e+00 9.69051957e+00 9.65915630e+00 9.62789442e+00 9.59673361e+00 + 9.56567354e+00 9.53471389e+00 9.50385433e+00 9.47309455e+00 9.44243421e+00 + 9.41187301e+00 9.38141062e+00 9.35104672e+00 9.32078101e+00 9.29061315e+00 + 9.26054285e+00 9.23056977e+00 9.20069362e+00 9.17091408e+00 9.14123084e+00 + 9.11164358e+00 9.08215200e+00 9.05275580e+00 9.02345465e+00 8.99424827e+00 + 8.96513634e+00 8.93611856e+00 8.90719462e+00 8.87836423e+00 8.84962708e+00 + 8.82098287e+00 8.79243131e+00 8.76397209e+00 8.73560491e+00 8.70732949e+00 + 8.67914552e+00 8.65105271e+00 8.62305076e+00 8.59513939e+00 8.56731831e+00 + 8.53958721e+00 8.51194581e+00 8.48439382e+00 8.45693096e+00 8.42955693e+00 + 8.40227145e+00 8.37507424e+00 8.34796500e+00 8.32094347e+00 8.29400934e+00 + 8.26716234e+00 8.24040220e+00 8.21372862e+00 8.18714134e+00 8.16064006e+00 + 8.13422453e+00 8.10789445e+00 8.08164955e+00 8.05548956e+00 8.02941421e+00 + 8.00342321e+00 7.97751631e+00 7.95169322e+00 7.92595368e+00 7.90029741e+00 + 7.87472416e+00 7.84923364e+00 7.82382560e+00 7.79849977e+00 7.77325588e+00 + 7.74809366e+00 7.72301286e+00 7.69801321e+00 7.67309445e+00 7.64825632e+00 + 7.62349856e+00 7.59882090e+00 7.57422310e+00 7.54970489e+00 7.52526601e+00 + 7.50090621e+00 7.47662523e+00 7.45242282e+00 7.42829873e+00 7.40425270e+00 + 7.38028448e+00 7.35639382e+00 7.33258046e+00 7.30884417e+00 7.28518468e+00 + 7.26160176e+00 7.23809515e+00 7.21466461e+00 7.19130989e+00 7.16803075e+00 + 7.14482694e+00 7.12169822e+00 7.09864435e+00 7.07566508e+00 7.05276018e+00 + 7.02992940e+00 7.00717250e+00 6.98448925e+00 6.96187941e+00 6.93934274e+00 + 6.91687900e+00 6.89448796e+00 6.87216939e+00 6.84992304e+00 6.82774869e+00 + 6.80564610e+00 6.78361505e+00 6.76165529e+00 6.73976661e+00 6.71794876e+00 + 6.69620152e+00 6.67452467e+00 6.65291797e+00 6.63138120e+00 6.60991414e+00 + 6.58851655e+00 6.56718821e+00 6.54592890e+00 6.52473840e+00 6.50361648e+00 + 6.48256292e+00 6.46157750e+00 6.44066000e+00 6.41981020e+00 6.39902789e+00 + 6.37831283e+00 6.35766483e+00 6.33708365e+00 6.31656908e+00 6.29612092e+00 + 6.27573893e+00 6.25542292e+00 6.23517266e+00 6.21498794e+00 6.19486855e+00 + 6.17481429e+00 6.15482493e+00 6.13490027e+00 6.11504011e+00 6.09524422e+00 + 6.07551241e+00 6.05584446e+00 6.03624018e+00 6.01669935e+00 5.99722177e+00 + 5.97780723e+00 5.95845553e+00 5.93916647e+00 5.91993984e+00 5.90077545e+00 + 5.88167309e+00 5.86263256e+00 5.84365365e+00 5.82473619e+00 5.80587995e+00 + 5.78708475e+00 5.76835038e+00 5.74967666e+00 5.73106338e+00 5.71251035e+00 + 5.69401737e+00 5.67558425e+00 5.65721080e+00 5.63889682e+00 5.62064212e+00 + 5.60244651e+00 5.58430980e+00 5.56623179e+00 5.54821231e+00 5.53025115e+00 + 5.51234812e+00 5.49450305e+00 5.47671575e+00 5.45898602e+00 5.44131368e+00 + 5.42369855e+00 5.40614043e+00 5.38863915e+00 5.37119452e+00 5.35380636e+00 + 5.33647449e+00 5.31919872e+00 5.30197887e+00 5.28481476e+00 5.26770621e+00 + 5.25065305e+00 5.23365508e+00 5.21671214e+00 5.19982404e+00 5.18299061e+00 + 5.16621167e+00 5.14948704e+00 5.13281656e+00 5.11620003e+00 5.09963730e+00 + 5.08312818e+00 5.06667250e+00 5.05027009e+00 5.03392077e+00 5.01762438e+00 + 5.00138074e+00 4.98518969e+00 4.96905104e+00 4.95296464e+00 4.93693031e+00 + 4.92094789e+00 4.90501720e+00 4.88913808e+00 4.87331037e+00 4.85753389e+00 + 4.84180848e+00 4.82613398e+00 4.81051021e+00 4.79493703e+00 4.77941425e+00 + 4.76394173e+00 4.74851929e+00 4.73314678e+00 4.71782403e+00 4.70255088e+00 + 4.68732717e+00 4.67215275e+00 4.65702744e+00 4.64195110e+00 4.62692357e+00 + 4.61194468e+00 4.59701428e+00 4.58213221e+00 4.56729832e+00 4.55251245e+00 + 4.53777444e+00 4.52308415e+00 4.50844141e+00 4.49384606e+00 4.47929797e+00 + 4.46479697e+00 4.45034292e+00 4.43593566e+00 4.42157503e+00 4.40726089e+00 + 4.39299310e+00 4.37877148e+00 4.36459591e+00 4.35046623e+00 4.33638229e+00 + 4.32234394e+00 4.30835103e+00 4.29440343e+00 4.28050097e+00 4.26664352e+00 + 4.25283093e+00 4.23906306e+00 4.22533975e+00 4.21166087e+00 4.19802627e+00 + 4.18443581e+00 4.17088935e+00 4.15738674e+00 4.14392784e+00 4.13051251e+00 + 4.11714061e+00 4.10381200e+00 4.09052653e+00 4.07728407e+00 4.06408449e+00 + 4.05092763e+00 4.03781337e+00 4.02474156e+00 4.01171206e+00 3.99872475e+00 + 3.98577948e+00 3.97287611e+00 3.96001452e+00 3.94719457e+00 3.93441611e+00 + 3.92167903e+00 3.90898318e+00 3.89632842e+00 3.88371464e+00 3.87114168e+00 + 3.85860944e+00 3.84611776e+00 3.83366652e+00 3.82125558e+00 3.80888483e+00 + 3.79655412e+00 3.78426333e+00 3.77201234e+00 3.75980100e+00 3.74762919e+00 + 3.73549678e+00 3.72340365e+00 3.71134967e+00 3.69933472e+00 3.68735866e+00 + 3.67542137e+00 3.66352272e+00 3.65166259e+00 3.63984086e+00 3.62805740e+00 + 3.61631208e+00 3.60460479e+00 3.59293540e+00 3.58130378e+00 3.56970982e+00 + 3.55815340e+00 3.54663438e+00 3.53515266e+00 3.52370810e+00 3.51230060e+00 + 3.50093002e+00 3.48959626e+00 3.47829918e+00 3.46703868e+00 3.45581463e+00 + 3.44462692e+00 3.43347542e+00 3.42236003e+00 3.41128062e+00 3.40023708e+00 + 3.38922929e+00 3.37825713e+00 3.36732050e+00 3.35641927e+00 3.34555333e+00 + 3.33472257e+00 3.32392687e+00 3.31316612e+00 3.30244021e+00 3.29174901e+00 + 3.28109243e+00 3.27047035e+00 3.25988266e+00 3.24932924e+00 3.23880999e+00 + 3.22832479e+00 3.21787353e+00 3.20745611e+00 3.19707242e+00 3.18672234e+00 + 3.17640576e+00 3.16612258e+00 3.15587270e+00 3.14565599e+00 3.13547237e+00 + 3.12532170e+00 3.11520390e+00 3.10511886e+00 3.09506646e+00 3.08504661e+00 + 3.07505919e+00 3.06510411e+00 3.05518125e+00 3.04529052e+00 3.03543181e+00 + 3.02560501e+00 3.01581003e+00 3.00604676e+00 2.99631509e+00 2.98661493e+00 + 2.97694617e+00 2.96730871e+00 2.95770245e+00 2.94812729e+00 2.93858313e+00 + 2.92906986e+00 2.91958740e+00 2.91013563e+00 2.90071446e+00 2.89132379e+00 + 2.88196352e+00 2.87263355e+00 2.86333379e+00 2.85406413e+00 2.84482448e+00 + 2.83561475e+00 2.82643483e+00 2.81728463e+00 2.80816405e+00 2.79907299e+00 + 2.79001137e+00 2.78097909e+00 2.77197604e+00 2.76300214e+00 2.75405559e+00 + 2.74510554e+00 2.73614077e+00 2.72716164e+00 2.71816846e+00 2.70916157e+00 + 2.70014130e+00 2.69110798e+00 2.68206194e+00 2.67300350e+00 2.66393299e+00 + 2.65485073e+00 2.64575705e+00 2.63665226e+00 2.62753670e+00 2.61841067e+00 + 2.60927450e+00 2.60012851e+00 2.59097300e+00 2.58180831e+00 2.57263473e+00 + 2.56345258e+00 2.55426218e+00 2.54506383e+00 2.53585784e+00 2.52664452e+00 + 2.51742418e+00 2.50819712e+00 2.49896364e+00 2.48972406e+00 2.48047866e+00 + 2.47122774e+00 2.46197162e+00 2.45271058e+00 2.44344492e+00 2.43417494e+00 + 2.42490093e+00 2.41562317e+00 2.40634197e+00 2.39705762e+00 2.38777039e+00 + 2.37848057e+00 2.36918847e+00 2.35989434e+00 2.35059849e+00 2.34130118e+00 + 2.33200271e+00 2.32270335e+00 2.31340337e+00 2.30410306e+00 2.29480269e+00 + 2.28550252e+00 2.27620284e+00 2.26690392e+00 2.25760601e+00 2.24830940e+00 + 2.23901434e+00 2.22972110e+00 2.22042995e+00 2.21114115e+00 2.20185495e+00 + 2.19257162e+00 2.18329142e+00 2.17401459e+00 2.16474141e+00 2.15547211e+00 + 2.14620696e+00 2.13694620e+00 2.12769008e+00 2.11843885e+00 2.10919276e+00 + 2.09995205e+00 2.09071696e+00 2.08148774e+00 2.07226463e+00 2.06304787e+00 + 2.05383769e+00 2.04463433e+00 2.03543803e+00 2.02624901e+00 2.01706752e+00 + 2.00789378e+00 1.99872802e+00 1.98957047e+00 1.98042135e+00 1.97128090e+00 + 1.96214932e+00 1.95302685e+00 1.94391370e+00 1.93481009e+00 1.92571625e+00 + 1.91663238e+00 1.90755870e+00 1.89849542e+00 1.88944276e+00 1.88040092e+00 + 1.87137011e+00 1.86235054e+00 1.85334242e+00 1.84434594e+00 1.83536132e+00 + 1.82638875e+00 1.81742843e+00 1.80848057e+00 1.79954534e+00 1.79062296e+00 + 1.78171362e+00 1.77281750e+00 1.76393481e+00 1.75506572e+00 1.74621042e+00 + 1.73736911e+00 1.72854196e+00 1.71972916e+00 1.71093090e+00 1.70214734e+00 + 1.69337868e+00 1.68462508e+00 1.67588673e+00 1.66716380e+00 1.65845646e+00 + 1.64976489e+00 1.64108925e+00 1.63242971e+00 1.62378644e+00 1.61515960e+00 + 1.60654936e+00 1.59795589e+00 1.58937934e+00 1.58081988e+00 1.57227765e+00 + 1.56375283e+00 1.55524556e+00 1.54675599e+00 1.53828429e+00 1.52983061e+00 + 1.52139508e+00 1.51297787e+00 1.50457911e+00 1.49619895e+00 1.48783755e+00 + 1.47949503e+00 1.47117154e+00 1.46286723e+00 1.45458222e+00 1.44631666e+00 + 1.43807068e+00 1.42984441e+00 1.42163800e+00 1.41345156e+00 1.40528523e+00 + 1.39713914e+00 1.38901341e+00 1.38090818e+00 1.37282356e+00 1.36475967e+00 + 1.35671664e+00 1.34869460e+00 1.34069364e+00 1.33271391e+00 1.32475550e+00 + 1.31681854e+00 1.30890314e+00 1.30100940e+00 1.29313745e+00 1.28528739e+00 + 1.27745932e+00 1.26965336e+00 1.26186960e+00 1.25410815e+00 1.24636912e+00 + 1.23865261e+00 1.23095871e+00 1.22328752e+00 1.21563914e+00 1.20801367e+00 + 1.20041119e+00 1.19283181e+00 1.18527561e+00 1.17774269e+00 1.17023313e+00 + 1.16274702e+00 1.15528445e+00 1.14784550e+00 1.14043025e+00 1.13303880e+00 + 1.12567121e+00 1.11832758e+00 1.11100797e+00 1.10371247e+00 1.09644115e+00 + 1.08919409e+00 1.08197135e+00 1.07477302e+00 1.06759917e+00 1.06044985e+00 + 1.05332515e+00 1.04622513e+00 1.03914985e+00 1.03209938e+00 1.02507379e+00 + 1.01807313e+00 1.01109747e+00 1.00414687e+00 9.97221386e-01 9.90321073e-01 + 9.83445990e-01 9.76596193e-01 9.69771734e-01 9.62972667e-01 9.56199044e-01 + 9.49450914e-01 9.42728328e-01 9.36031332e-01 9.29359975e-01 9.22714301e-01 + 9.16094356e-01 9.09500183e-01 9.02931824e-01 8.96389320e-01 8.89872712e-01 + 8.83382038e-01 8.76917335e-01 8.70478642e-01 8.64065993e-01 8.57679422e-01 + 8.51318963e-01 8.44984649e-01 8.38676510e-01 8.32394576e-01 8.26138877e-01 + 8.19909440e-01 8.13706292e-01 8.07529459e-01 8.01378965e-01 7.95254834e-01 + 7.89157089e-01 7.83085752e-01 7.77040841e-01 7.71022378e-01 7.65030381e-01 + 7.59064866e-01 7.53125850e-01 7.47213349e-01 7.41327376e-01 7.35467946e-01 + 7.29635070e-01 7.23828760e-01 7.18049026e-01 7.12295878e-01 7.06569323e-01 + 7.00869370e-01 6.95196024e-01 6.89549291e-01 6.83929175e-01 6.78335681e-01 + 6.72768810e-01 6.67228564e-01 6.61714945e-01 6.56227951e-01 6.50767581e-01 + 6.45333835e-01 6.39926707e-01 6.34546195e-01 6.29192295e-01 6.23864999e-01 + 6.18564301e-01 6.13290195e-01 6.08042671e-01 6.02821721e-01 5.97627334e-01 + 5.92459499e-01 5.87318204e-01 5.82203438e-01 5.77115185e-01 5.72053432e-01 + 5.67018163e-01 5.62009363e-01 5.57027014e-01 5.52071099e-01 5.47141599e-01 + 5.42238495e-01 5.37361766e-01 5.32511392e-01 5.27687351e-01 5.22889620e-01 + 5.18118177e-01 5.13372996e-01 5.08654052e-01 5.03961322e-01 4.99294776e-01 + 4.94654390e-01 4.90040134e-01 4.85451980e-01 4.80889899e-01 4.76353860e-01 + 4.71843832e-01 4.67359785e-01 4.62901684e-01 4.58469498e-01 4.54063193e-01 + 4.49682734e-01 4.45328086e-01 4.40999213e-01 4.36696079e-01 4.32418646e-01 + 4.28166876e-01 4.23940731e-01 4.19740172e-01 4.15565159e-01 4.11415650e-01 + 4.07291606e-01 4.03192983e-01 3.99119741e-01 3.95071834e-01 3.91049220e-01 + 3.87051855e-01 3.83079693e-01 3.79132688e-01 3.75210796e-01 3.71313967e-01 + 3.67442156e-01 3.63595315e-01 3.59773394e-01 3.55976344e-01 3.52204117e-01 + 3.48456661e-01 3.44733925e-01 3.41035859e-01 3.37362410e-01 3.33713525e-01 + 3.30089152e-01 3.26489237e-01 3.22913726e-01 3.19362564e-01 3.15835697e-01 + 3.12333067e-01 3.08854620e-01 3.05400297e-01 3.01970043e-01 2.98563800e-01 + 2.95181508e-01 2.91823110e-01 2.88488547e-01 2.85177758e-01 2.81890683e-01 + 2.78627263e-01 2.75387435e-01 2.72171139e-01 2.68978312e-01 2.65808892e-01 + 2.62662816e-01 2.59540022e-01 2.56440444e-01 2.53364020e-01 2.50310684e-01 + 2.47280372e-01 2.44273018e-01 2.41288556e-01 2.38326921e-01 2.35388045e-01 + 2.32471862e-01 2.29578304e-01 2.26707304e-01 2.23858794e-01 2.21032705e-01 + 2.18228967e-01 2.15447513e-01 2.12688273e-01 2.09951176e-01 2.07236152e-01 + 2.04543131e-01 2.01872042e-01 1.99222813e-01 1.96595373e-01 1.93989650e-01 + 1.91405572e-01 1.88843066e-01 1.86302060e-01 1.83782479e-01 1.81284252e-01 + 1.78807303e-01 1.76351559e-01 1.73916946e-01 1.71503389e-01 1.69110813e-01 + 1.66739143e-01 1.64388303e-01 1.62058219e-01 1.59748813e-01 1.57460009e-01 + 1.55191732e-01 1.52943905e-01 1.50716450e-01 1.48509290e-01 1.46322348e-01 + 1.44155547e-01 1.42008808e-01 1.39882053e-01 1.37775205e-01 1.35688184e-01 + 1.33620912e-01 1.31573309e-01 1.29545298e-01 1.27536798e-01 1.25547730e-01 + 1.23578015e-01 1.21627572e-01 1.19696321e-01 1.17784183e-01 1.15891077e-01 + 1.14016921e-01 1.12161637e-01 1.10325142e-01 1.08507356e-01 1.06708197e-01 + 1.04927585e-01 1.03165437e-01 1.01421673e-01 9.96962103e-02 9.79889672e-02 + 9.62998618e-02 9.46288120e-02 9.29757356e-02 9.13405503e-02 8.97231736e-02 + 8.81235231e-02 8.65415161e-02 8.49770698e-02 8.34301014e-02 8.19005281e-02 + 8.03882668e-02 7.88932345e-02 7.74153479e-02 7.59545239e-02 7.45106790e-02 + 7.30837300e-02 7.16735935e-02 7.02801858e-02 6.89034235e-02 6.75432228e-02 + 6.61995003e-02 6.48721721e-02 6.35611545e-02 6.22663637e-02 6.09877158e-02 + 5.97251271e-02 5.84785135e-02 5.72477913e-02 5.60328764e-02 5.48336849e-02 + 5.36501328e-02 5.24821361e-02 5.13296109e-02 5.01924730e-02 4.90706386e-02 + 4.79640236e-02 4.68725440e-02 4.57961157e-02 4.47346549e-02 4.36880775e-02 + 4.26562996e-02 4.16392373e-02 4.06368065e-02 3.96489235e-02 3.86755044e-02 + 3.77164653e-02 3.67717225e-02 3.58411921e-02 3.49247905e-02 3.40224340e-02 + 3.31340390e-02 3.22595219e-02 3.13987991e-02 3.05517872e-02 2.97184028e-02 + 2.88985626e-02 2.80921832e-02 2.72991814e-02 2.65194740e-02 2.57529781e-02 + 2.49996105e-02 2.42592885e-02 2.35319290e-02 2.28174494e-02 2.21157669e-02 + 2.14267990e-02 2.07504632e-02 2.00866771e-02 1.94353583e-02 1.87964247e-02 + 1.81697941e-02 1.75553845e-02 1.69531141e-02 1.63629010e-02 1.57846636e-02 + 1.52183202e-02 1.46637895e-02 1.41209901e-02 1.35898408e-02 1.30702605e-02 + 1.25621682e-02 1.20654832e-02 1.15801246e-02 1.11060119e-02 1.06430648e-02 + 1.01912028e-02 9.75034577e-03 9.32041377e-03 8.90132688e-03 8.49300538e-03 + 8.09536966e-03 7.70834030e-03 7.33183802e-03 6.96578368e-03 6.61009831e-03 + 6.26470310e-03 5.92951939e-03 5.60446868e-03 5.28947266e-03 4.98445316e-03 + 4.68933218e-03 4.40403190e-03 4.12847467e-03 3.86258301e-03 3.60627963e-03 + 3.35948739e-03 3.12212936e-03 2.89412876e-03 2.67540903e-03 2.46589377e-03 + 2.26550676e-03 2.07417199e-03 1.89181364e-03 1.71835606e-03 1.55372381e-03 + 1.39784164e-03 1.25063451e-03 1.11202756e-03 9.81946133e-04 8.60315789e-04 + 7.47062278e-04 6.42111559e-04 5.45389798e-04 4.56823367e-04 3.76338850e-04 + 3.03863043e-04 2.39322951e-04 1.82645796e-04 1.33759016e-04 9.25902631e-05 + 5.90674105e-05 3.31185502e-05 1.46719954e-05 3.65628182e-06 0.00000000e+00 + 4.06412796e+00 4.06783653e+00 4.07704324e+00 4.08626532e+00 4.09550275e+00 + 4.10475551e+00 4.11402360e+00 4.12330700e+00 4.13260568e+00 4.14191965e+00 + 4.15124888e+00 4.16059336e+00 4.16995307e+00 4.17932799e+00 4.18871811e+00 + 4.19812340e+00 4.20754387e+00 4.21697947e+00 4.22643020e+00 4.23589604e+00 + 4.24537696e+00 4.25487296e+00 4.26438400e+00 4.27391007e+00 4.28345115e+00 + 4.29300721e+00 4.30257824e+00 4.31216421e+00 4.32176511e+00 4.33138090e+00 + 4.34101157e+00 4.35065709e+00 4.36031744e+00 4.36999260e+00 4.37968253e+00 + 4.38938722e+00 4.39910664e+00 4.40884076e+00 4.41858956e+00 4.42835301e+00 + 4.43813109e+00 4.44792376e+00 4.45773100e+00 4.46755278e+00 4.47738908e+00 + 4.48723985e+00 4.49710508e+00 4.50698473e+00 4.51687878e+00 4.52678718e+00 + 4.53670992e+00 4.54664696e+00 4.55659826e+00 4.56656380e+00 4.57654353e+00 + 4.58653744e+00 4.59654548e+00 4.60656761e+00 4.61660382e+00 4.62665405e+00 + 4.63671827e+00 4.64679645e+00 4.65688855e+00 4.66699453e+00 4.67711435e+00 + 4.68724799e+00 4.69739539e+00 4.70755652e+00 4.71773133e+00 4.72791980e+00 + 4.73812188e+00 4.74833752e+00 4.75856669e+00 4.76880934e+00 4.77906544e+00 + 4.78933493e+00 4.79961778e+00 4.80991393e+00 4.82022336e+00 4.83054600e+00 + 4.84088182e+00 4.85123077e+00 4.86159280e+00 4.87196787e+00 4.88235592e+00 + 4.89275691e+00 4.90317080e+00 4.91359752e+00 4.92403704e+00 4.93448930e+00 + 4.94495425e+00 4.95543184e+00 4.96592201e+00 4.97642472e+00 4.98693991e+00 + 4.99746754e+00 5.00800753e+00 5.01855985e+00 5.02912442e+00 5.03970121e+00 + 5.05029015e+00 5.06089119e+00 5.07150426e+00 5.08212932e+00 5.09276629e+00 + 5.10341513e+00 5.11407577e+00 5.12474815e+00 5.13543222e+00 5.14612790e+00 + 5.15683515e+00 5.16755389e+00 5.17828406e+00 5.18902560e+00 5.19977844e+00 + 5.21054252e+00 5.22131778e+00 5.23210415e+00 5.24290155e+00 5.25370993e+00 + 5.26452922e+00 5.27535934e+00 5.28620023e+00 5.29705182e+00 5.30791404e+00 + 5.31878681e+00 5.32967007e+00 5.34056375e+00 5.35146776e+00 5.36238204e+00 + 5.37330652e+00 5.38424111e+00 5.39518574e+00 5.40614035e+00 5.41710484e+00 + 5.42807915e+00 5.43906319e+00 5.45005689e+00 5.46106017e+00 5.47207294e+00 + 5.48309514e+00 5.49412667e+00 5.50516746e+00 5.51621742e+00 5.52727647e+00 + 5.53834452e+00 5.54942150e+00 5.56050732e+00 5.57160189e+00 5.58270512e+00 + 5.59381693e+00 5.60493724e+00 5.61606594e+00 5.62720297e+00 5.63834821e+00 + 5.64950159e+00 5.66066301e+00 5.67183239e+00 5.68300962e+00 5.69419463e+00 + 5.70538730e+00 5.71658756e+00 5.72779530e+00 5.73901042e+00 5.75023284e+00 + 5.76146246e+00 5.77269917e+00 5.78394289e+00 5.79519350e+00 5.80645092e+00 + 5.81771503e+00 5.82898575e+00 5.84026296e+00 5.85154657e+00 5.86283647e+00 + 5.87413256e+00 5.88543473e+00 5.89674289e+00 5.90805691e+00 5.91937670e+00 + 5.93070215e+00 5.94203316e+00 5.95336960e+00 5.96471138e+00 5.97605838e+00 + 5.98741049e+00 5.99876760e+00 6.01012960e+00 6.02149638e+00 6.03286782e+00 + 6.04424380e+00 6.05562422e+00 6.06700896e+00 6.07839789e+00 6.08979091e+00 + 6.10118790e+00 6.11258873e+00 6.12399329e+00 6.13540145e+00 6.14681311e+00 + 6.15822813e+00 6.16964639e+00 6.18106777e+00 6.19249215e+00 6.20391941e+00 + 6.21534941e+00 6.22678203e+00 6.23821715e+00 6.24965464e+00 6.26109436e+00 + 6.27253621e+00 6.28398003e+00 6.29542571e+00 6.30687311e+00 6.31832210e+00 + 6.32977255e+00 6.34122433e+00 6.35267730e+00 6.36413133e+00 6.37558628e+00 + 6.38704202e+00 6.39849842e+00 6.40995532e+00 6.42141261e+00 6.43287013e+00 + 6.44432776e+00 6.45578534e+00 6.46724275e+00 6.47869983e+00 6.49015644e+00 + 6.50161246e+00 6.51306772e+00 6.52452208e+00 6.53597541e+00 6.54742756e+00 + 6.55887837e+00 6.57032771e+00 6.58177542e+00 6.59322136e+00 6.60466538e+00 + 6.61610733e+00 6.62754705e+00 6.63898441e+00 6.65041923e+00 6.66185139e+00 + 6.67328071e+00 6.68470705e+00 6.69613025e+00 6.70755016e+00 6.71896662e+00 + 6.73037948e+00 6.74178857e+00 6.75319375e+00 6.76459484e+00 6.77599170e+00 + 6.78738417e+00 6.79877207e+00 6.81015526e+00 6.82153357e+00 6.83290684e+00 + 6.84427490e+00 6.85563759e+00 6.86699475e+00 6.87834621e+00 6.88969181e+00 + 6.90103138e+00 6.91236475e+00 6.92369176e+00 6.93501224e+00 6.94632601e+00 + 6.95763292e+00 6.96893279e+00 6.98022544e+00 6.99151072e+00 7.00278844e+00 + 7.01405843e+00 7.02532053e+00 7.03657455e+00 7.04782033e+00 7.05905769e+00 + 7.07028644e+00 7.08150643e+00 7.09271747e+00 7.10391938e+00 7.11511199e+00 + 7.12629511e+00 7.13746858e+00 7.14863220e+00 7.15978581e+00 7.17092921e+00 + 7.18206223e+00 7.19318469e+00 7.20429640e+00 7.21539719e+00 7.22648686e+00 + 7.23756524e+00 7.24863215e+00 7.25968738e+00 7.27073077e+00 7.28176213e+00 + 7.29278126e+00 7.30378798e+00 7.31478212e+00 7.32576346e+00 7.33673184e+00 + 7.34768706e+00 7.35862893e+00 7.36955726e+00 7.38047187e+00 7.39137255e+00 + 7.40225913e+00 7.41313140e+00 7.42398918e+00 7.43483228e+00 7.44566050e+00 + 7.45647365e+00 7.46727153e+00 7.47805396e+00 7.48882073e+00 7.49957166e+00 + 7.51030654e+00 7.52102519e+00 7.53172740e+00 7.54241298e+00 7.55308173e+00 + 7.56373346e+00 7.57436797e+00 7.58498506e+00 7.59558453e+00 7.60616619e+00 + 7.61672984e+00 7.62727527e+00 7.63780229e+00 7.64831069e+00 7.65880029e+00 + 7.66927087e+00 7.67972224e+00 7.69015420e+00 7.70056655e+00 7.71095908e+00 + 7.72133159e+00 7.73168388e+00 7.74201575e+00 7.75232700e+00 7.76261742e+00 + 7.77288682e+00 7.78313498e+00 7.79336172e+00 7.80356681e+00 7.81375006e+00 + 7.82391127e+00 7.83405023e+00 7.84416673e+00 7.85426058e+00 7.86433157e+00 + 7.87437949e+00 7.88440415e+00 7.89440533e+00 7.90438283e+00 7.91433644e+00 + 7.92426597e+00 7.93417120e+00 7.94405193e+00 7.95390796e+00 7.96373908e+00 + 7.97354509e+00 7.98332577e+00 7.99308093e+00 8.00281035e+00 8.01251384e+00 + 8.02219119e+00 8.03184219e+00 8.04146664e+00 8.05106433e+00 8.06063505e+00 + 8.07017861e+00 8.07969479e+00 8.08918339e+00 8.09864421e+00 8.10807704e+00 + 8.11748167e+00 8.12685791e+00 8.13620553e+00 8.14552435e+00 8.15481416e+00 + 8.16407475e+00 8.17330592e+00 8.18250746e+00 8.19167916e+00 8.20082084e+00 + 8.20993228e+00 8.21901327e+00 8.22806362e+00 8.23708313e+00 8.24607158e+00 + 8.25502879e+00 8.26395453e+00 8.27284862e+00 8.28171085e+00 8.29054102e+00 + 8.29933893e+00 8.30810438e+00 8.31683717e+00 8.32553709e+00 8.33420394e+00 + 8.34283754e+00 8.35143767e+00 8.36000414e+00 8.36853676e+00 8.37703531e+00 + 8.38549961e+00 8.39392946e+00 8.40232465e+00 8.41068500e+00 8.41901031e+00 + 8.42730037e+00 8.43555501e+00 8.44377401e+00 8.45195719e+00 8.46010436e+00 + 8.46821531e+00 8.47628987e+00 8.48432782e+00 8.49232899e+00 8.50029318e+00 + 8.50822020e+00 8.51610986e+00 8.52396198e+00 8.53177635e+00 8.53955280e+00 + 8.54729113e+00 8.55499116e+00 8.56265270e+00 8.57027557e+00 8.57785958e+00 + 8.58540454e+00 8.59291028e+00 8.60037660e+00 8.60780333e+00 8.61519028e+00 + 8.62253727e+00 8.62984412e+00 8.63711066e+00 8.64433670e+00 8.65152206e+00 + 8.65866656e+00 8.66577004e+00 8.67283231e+00 8.67985319e+00 8.68683252e+00 + 8.69377012e+00 8.70066582e+00 8.70751944e+00 8.71433081e+00 8.72109977e+00 + 8.72782614e+00 8.73450975e+00 8.74115044e+00 8.74774804e+00 8.75430239e+00 + 8.76081331e+00 8.76728065e+00 8.77370424e+00 8.78008391e+00 8.78641952e+00 + 8.79271089e+00 8.79895787e+00 8.80516030e+00 8.81131803e+00 8.81743088e+00 + 8.82349872e+00 8.82952138e+00 8.83549872e+00 8.84143057e+00 8.84731680e+00 + 8.85315724e+00 8.85895175e+00 8.86470018e+00 8.87040239e+00 8.87605822e+00 + 8.88166754e+00 8.88723019e+00 8.89274604e+00 8.89821495e+00 8.90363677e+00 + 8.90901137e+00 8.91433860e+00 8.91961834e+00 8.92485044e+00 8.93003477e+00 + 8.93517119e+00 8.94025959e+00 8.94529981e+00 8.95029174e+00 8.95523525e+00 + 8.96013020e+00 8.96497648e+00 8.96977395e+00 8.97452250e+00 8.97922200e+00 + 8.98387233e+00 8.98847338e+00 8.99302501e+00 8.99752712e+00 9.00197960e+00 + 9.00638231e+00 9.01073516e+00 9.01503803e+00 9.01929081e+00 9.02349339e+00 + 9.02764567e+00 9.03174753e+00 9.03579887e+00 9.03979959e+00 9.04374958e+00 + 9.04764875e+00 9.05149699e+00 9.05529422e+00 9.05904032e+00 9.06273520e+00 + 9.06637878e+00 9.06997095e+00 9.07351163e+00 9.07700073e+00 9.08043816e+00 + 9.08382383e+00 9.08715765e+00 9.09043955e+00 9.09366944e+00 9.09684724e+00 + 9.09997287e+00 9.10304626e+00 9.10606732e+00 9.10903597e+00 9.11195216e+00 + 9.11481580e+00 9.11762683e+00 9.12038517e+00 9.12309076e+00 9.12574353e+00 + 9.12834342e+00 9.13089036e+00 9.13338430e+00 9.13582517e+00 9.13821291e+00 + 9.14054747e+00 9.14282880e+00 9.14505683e+00 9.14723152e+00 9.14935282e+00 + 9.15142067e+00 9.15343503e+00 9.15539586e+00 9.15730311e+00 9.15915673e+00 + 9.16095669e+00 9.16270294e+00 9.16439545e+00 9.16603418e+00 9.16761910e+00 + 9.16915017e+00 9.17062736e+00 9.17205064e+00 9.17341998e+00 9.17473536e+00 + 9.17599674e+00 9.17720412e+00 9.17835745e+00 9.17945673e+00 9.18050193e+00 + 9.18149304e+00 9.18243003e+00 9.18331291e+00 9.18414165e+00 9.18491623e+00 + 9.18563667e+00 9.18630293e+00 9.18691503e+00 9.18747295e+00 9.18797669e+00 + 9.18842625e+00 9.18882163e+00 9.18916283e+00 9.18944985e+00 9.18968271e+00 + 9.18986140e+00 9.18998593e+00 9.19005632e+00 9.19007257e+00 9.19003470e+00 + 9.18994273e+00 9.18979666e+00 9.18959652e+00 9.18934232e+00 9.18903409e+00 + 9.18867185e+00 9.18825562e+00 9.18778542e+00 9.18726130e+00 9.18668327e+00 + 9.18605136e+00 9.18536561e+00 9.18462604e+00 9.18383270e+00 9.18298563e+00 + 9.18208485e+00 9.18113041e+00 9.18012235e+00 9.17906071e+00 9.17794554e+00 + 9.17677688e+00 9.17555479e+00 9.17427930e+00 9.17295047e+00 9.17156835e+00 + 9.17013299e+00 9.16864446e+00 9.16710280e+00 9.16550808e+00 9.16386035e+00 + 9.16215967e+00 9.16040612e+00 9.15859974e+00 9.15674061e+00 9.15482879e+00 + 9.15286435e+00 9.15084737e+00 9.14877791e+00 9.14665604e+00 9.14448185e+00 + 9.14225540e+00 9.13997677e+00 9.13764605e+00 9.13526330e+00 9.13282862e+00 + 9.13034209e+00 9.12780378e+00 9.12521379e+00 9.12257220e+00 9.11987911e+00 + 9.11713459e+00 9.11433875e+00 9.11149167e+00 9.10859345e+00 9.10564418e+00 + 9.10264397e+00 9.09959290e+00 9.09649108e+00 9.09333860e+00 9.09013558e+00 + 9.08688211e+00 9.08357830e+00 9.08022426e+00 9.07682008e+00 9.07336589e+00 + 9.06986178e+00 9.06630788e+00 9.06270429e+00 9.05905112e+00 9.05534850e+00 + 9.05159653e+00 9.04779534e+00 9.04394504e+00 9.04004575e+00 9.03609759e+00 + 9.03210069e+00 9.02805517e+00 9.02396116e+00 9.01981877e+00 9.01562814e+00 + 9.01138939e+00 9.00710265e+00 9.00276806e+00 8.99838574e+00 8.99395583e+00 + 8.98947846e+00 8.98495376e+00 8.98038187e+00 8.97576293e+00 8.97109708e+00 + 8.96638445e+00 8.96162519e+00 8.95681943e+00 8.95196732e+00 8.94706900e+00 + 8.94212462e+00 8.93713431e+00 8.93209824e+00 8.92701653e+00 8.92188935e+00 + 8.91671684e+00 8.91149915e+00 8.90623643e+00 8.90092884e+00 8.89557652e+00 + 8.89017964e+00 8.88473834e+00 8.87925278e+00 8.87372312e+00 8.86814952e+00 + 8.86253212e+00 8.85687110e+00 8.85116662e+00 8.84541882e+00 8.83962789e+00 + 8.83379397e+00 8.82791723e+00 8.82199783e+00 8.81603595e+00 8.81003174e+00 + 8.80398538e+00 8.79789702e+00 8.79176684e+00 8.78559501e+00 8.77938169e+00 + 8.77312706e+00 8.76683129e+00 8.76049454e+00 8.75411700e+00 8.74769883e+00 + 8.74124020e+00 8.73474130e+00 8.72820229e+00 8.72162336e+00 8.71500467e+00 + 8.70834641e+00 8.70164876e+00 8.69491188e+00 8.68813596e+00 8.68132118e+00 + 8.67446772e+00 8.66757576e+00 8.66064548e+00 8.65367706e+00 8.64667068e+00 + 8.63962653e+00 8.63254478e+00 8.62542563e+00 8.61826925e+00 8.61107584e+00 + 8.60384557e+00 8.59657863e+00 8.58927521e+00 8.58193549e+00 8.57455966e+00 + 8.56714790e+00 8.55970041e+00 8.55221737e+00 8.54469898e+00 8.53714541e+00 + 8.52955686e+00 8.52193351e+00 8.51427557e+00 8.50658321e+00 8.49885663e+00 + 8.49109602e+00 8.48330156e+00 8.47547346e+00 8.46761190e+00 8.45971708e+00 + 8.45178918e+00 8.44382840e+00 8.43583493e+00 8.42780897e+00 8.41975070e+00 + 8.41166033e+00 8.40353804e+00 8.39538403e+00 8.38719849e+00 8.37898162e+00 + 8.37073361e+00 8.36245465e+00 8.35414495e+00 8.34580469e+00 8.33743407e+00 + 8.32903329e+00 8.32060254e+00 8.31214201e+00 8.30365190e+00 8.29513241e+00 + 8.28658374e+00 8.27800607e+00 8.26939960e+00 8.26076454e+00 8.25210107e+00 + 8.24340939e+00 8.23468970e+00 8.22594219e+00 8.21716706e+00 8.20836451e+00 + 8.19953473e+00 8.19067791e+00 8.18179426e+00 8.17288396e+00 8.16394722e+00 + 8.15498424e+00 8.14599519e+00 8.13698029e+00 8.12793973e+00 8.11887370e+00 + 8.10978240e+00 8.10066603e+00 8.09152477e+00 8.08235883e+00 8.07316840e+00 + 8.06395367e+00 8.05471485e+00 8.04545211e+00 8.03616567e+00 8.02685571e+00 + 8.01752243e+00 8.00816601e+00 7.99878667e+00 7.98938458e+00 7.97995994e+00 + 7.97051296e+00 7.96104381e+00 7.95155269e+00 7.94203979e+00 7.93250532e+00 + 7.92294945e+00 7.91337238e+00 7.90377431e+00 7.89415542e+00 7.88451590e+00 + 7.87485596e+00 7.86517577e+00 7.85547552e+00 7.84575542e+00 7.83601564e+00 + 7.82625638e+00 7.81647783e+00 7.80668017e+00 7.79686359e+00 7.78702829e+00 + 7.77717445e+00 7.76730225e+00 7.75741189e+00 7.74750355e+00 7.73757742e+00 + 7.72763369e+00 7.71767253e+00 7.70769414e+00 7.69769870e+00 7.68768640e+00 + 7.67765742e+00 7.66761194e+00 7.65755015e+00 7.64747223e+00 7.63737837e+00 + 7.62726874e+00 7.61714352e+00 7.60700291e+00 7.59684708e+00 7.58667621e+00 + 7.57649048e+00 7.56629007e+00 7.55607516e+00 7.54584593e+00 7.53560256e+00 + 7.52534522e+00 7.51507410e+00 7.50478936e+00 7.49449120e+00 7.48417977e+00 + 7.47385527e+00 7.46351786e+00 7.45316771e+00 7.44280501e+00 7.43242993e+00 + 7.42204263e+00 7.41164329e+00 7.40123209e+00 7.39080920e+00 7.38037478e+00 + 7.36992901e+00 7.35947205e+00 7.34900408e+00 7.33852527e+00 7.32803578e+00 + 7.31753578e+00 7.30702545e+00 7.29650493e+00 7.28597442e+00 7.27543405e+00 + 7.26488402e+00 7.25432447e+00 7.24375557e+00 7.23317749e+00 7.22259039e+00 + 7.21199442e+00 7.20138976e+00 7.19077657e+00 7.18015500e+00 7.16952521e+00 + 7.15888737e+00 7.14824163e+00 7.13758815e+00 7.12692709e+00 7.11625861e+00 + 7.10558286e+00 7.09490000e+00 7.08421018e+00 7.07351356e+00 7.06281029e+00 + 7.05210053e+00 7.04138443e+00 7.03066215e+00 7.01993382e+00 7.00919961e+00 + 6.99845967e+00 6.98771414e+00 6.97696317e+00 6.96620692e+00 6.95544553e+00 + 6.94467914e+00 6.93390791e+00 6.92313198e+00 6.91235150e+00 6.90156661e+00 + 6.89077746e+00 6.87998418e+00 6.86918693e+00 6.85838585e+00 6.84758107e+00 + 6.83677273e+00 6.82596099e+00 6.81514597e+00 6.80432782e+00 6.79350668e+00 + 6.78268268e+00 6.77185596e+00 6.76102665e+00 6.75019490e+00 6.73936084e+00 + 6.72852461e+00 6.71768633e+00 6.70684614e+00 6.69600417e+00 6.68516056e+00 + 6.67431544e+00 6.66346894e+00 6.65262118e+00 6.64177230e+00 6.63092243e+00 + 6.62007169e+00 6.60922022e+00 6.59836813e+00 6.58751556e+00 6.57666263e+00 + 6.56580946e+00 6.55495619e+00 6.54410293e+00 6.53324981e+00 6.52239695e+00 + 6.51154446e+00 6.50069248e+00 6.48984112e+00 6.47899051e+00 6.46814075e+00 + 6.45729198e+00 6.44644430e+00 6.43559784e+00 6.42475271e+00 6.41390903e+00 + 6.40306690e+00 6.39222646e+00 6.38138781e+00 6.37055106e+00 6.35971632e+00 + 6.34888372e+00 6.33805335e+00 6.32722534e+00 6.31639979e+00 6.30557680e+00 + 6.29475650e+00 6.28393898e+00 6.27312436e+00 6.26231274e+00 6.25150422e+00 + 6.24069892e+00 6.22989694e+00 6.21909838e+00 6.20830334e+00 6.19751193e+00 + 6.18672426e+00 6.17594041e+00 6.16516051e+00 6.15438463e+00 6.14361289e+00 + 6.13284538e+00 6.12208221e+00 6.11132347e+00 6.10056925e+00 6.08981965e+00 + 6.07907478e+00 6.06833472e+00 6.05759958e+00 6.04686943e+00 6.03614439e+00 + 6.02542453e+00 6.01470996e+00 6.00400077e+00 5.99329704e+00 5.98259887e+00 + 5.97190634e+00 5.96121955e+00 5.95053859e+00 5.93986353e+00 5.92919448e+00 + 5.91853152e+00 5.90787472e+00 5.89722419e+00 5.88658000e+00 5.87594224e+00 + 5.86531099e+00 5.85468634e+00 5.84406836e+00 5.83345715e+00 5.82285277e+00 + 5.81225532e+00 5.80166487e+00 5.79108151e+00 5.78050530e+00 5.76993634e+00 + 5.75937469e+00 5.74882044e+00 5.73827366e+00 5.72773443e+00 5.71720283e+00 + 5.70667892e+00 5.69616279e+00 5.68565450e+00 5.67515414e+00 5.66466177e+00 + 5.65417746e+00 5.64370130e+00 5.63323334e+00 5.62277366e+00 5.61232233e+00 + 5.60187942e+00 5.59144500e+00 5.58101913e+00 5.57060189e+00 5.56019334e+00 + 5.54979355e+00 5.53940258e+00 5.52902050e+00 5.51864737e+00 5.50828327e+00 + 5.49792824e+00 5.48758237e+00 5.47724570e+00 5.46691830e+00 5.45660024e+00 + 5.44629158e+00 5.43599237e+00 5.42570267e+00 5.41542255e+00 5.40515207e+00 + 5.39489128e+00 5.38464024e+00 5.37439902e+00 5.36416766e+00 5.35394622e+00 + 5.34373477e+00 5.33353335e+00 5.32334202e+00 5.31316083e+00 5.30298985e+00 + 5.29282912e+00 5.28267869e+00 5.27253863e+00 5.26240898e+00 5.25228979e+00 + 5.24218111e+00 5.23208300e+00 5.22199550e+00 5.21191867e+00 5.20185256e+00 + 5.19179721e+00 5.18175267e+00 5.17171899e+00 5.16169621e+00 5.15168439e+00 + 5.14168357e+00 5.13169380e+00 5.12171512e+00 5.11174758e+00 5.10179121e+00 + 5.09184608e+00 5.08191221e+00 5.07198966e+00 5.06207846e+00 5.05217866e+00 + 5.04229030e+00 5.03241343e+00 5.02254807e+00 5.01269428e+00 5.00285209e+00 + 4.99302155e+00 4.98320269e+00 4.97339555e+00 4.96360017e+00 4.95381659e+00 + 4.94404484e+00 4.93428497e+00 4.92453700e+00 4.91480098e+00 4.90507695e+00 + 4.89536493e+00 4.88566496e+00 4.87597708e+00 4.86630132e+00 4.85663772e+00 + 4.84698631e+00 4.83734712e+00 4.82772018e+00 4.81810553e+00 4.80850320e+00 + 4.79891322e+00 4.78933562e+00 4.77977044e+00 4.77021769e+00 4.76067742e+00 + 4.75114965e+00 4.74163441e+00 4.73213174e+00 4.72264165e+00 4.71316418e+00 + 4.70369935e+00 4.69424719e+00 4.68480774e+00 4.67538100e+00 4.66596702e+00 + 4.65656582e+00 4.64717742e+00 4.63780185e+00 4.62843913e+00 4.61908929e+00 + 4.60975235e+00 4.60042833e+00 4.59111726e+00 4.58181917e+00 4.57253407e+00 + 4.56326198e+00 4.55400294e+00 4.54475695e+00 4.53552405e+00 4.52630425e+00 + 4.51709757e+00 4.50790404e+00 4.49872367e+00 4.48955648e+00 4.48040250e+00 + 4.47126174e+00 4.46213422e+00 4.45301995e+00 4.44391897e+00 4.43483128e+00 + 4.42575690e+00 4.41669585e+00 4.40764815e+00 4.39861381e+00 4.38959285e+00 + 4.38058529e+00 4.37159113e+00 4.36261041e+00 4.35364312e+00 4.34468929e+00 + 4.33574893e+00 4.32682205e+00 4.31790867e+00 4.30900881e+00 4.30012247e+00 + 4.29124966e+00 4.28239041e+00 4.27354472e+00 4.26471261e+00 4.25589408e+00 + 4.24708916e+00 4.23829784e+00 4.22952014e+00 4.22075608e+00 4.21200566e+00 + 4.20326889e+00 4.19454579e+00 4.18583635e+00 4.17714060e+00 4.16845854e+00 + 4.15979019e+00 4.15113553e+00 4.14249460e+00 4.13386739e+00 4.12525392e+00 + 4.11665419e+00 4.10806820e+00 4.09949597e+00 4.09093751e+00 4.08239281e+00 + 4.07386189e+00 4.06534475e+00 4.05684139e+00 4.04835184e+00 4.03987608e+00 + 4.03141412e+00 4.02296598e+00 4.01453165e+00 4.00611113e+00 3.99770444e+00 + 3.98931158e+00 3.98093255e+00 3.97256735e+00 3.96421600e+00 3.95587848e+00 + 3.94755481e+00 3.93924499e+00 3.93094901e+00 3.92266689e+00 3.91439862e+00 + 3.90614421e+00 3.89790366e+00 3.88967697e+00 3.88146413e+00 3.87326516e+00 + 3.86508006e+00 3.85690881e+00 3.84875144e+00 3.84060792e+00 3.83247827e+00 + 3.82436249e+00 3.81626057e+00 3.80817252e+00 3.80009833e+00 3.79203800e+00 + 3.78399153e+00 3.77595892e+00 3.76794018e+00 3.75993529e+00 3.75194425e+00 + 3.74396707e+00 3.73600375e+00 3.72805427e+00 3.72011864e+00 3.71219685e+00 + 3.70428890e+00 3.69639480e+00 3.68851453e+00 3.68064809e+00 3.67279548e+00 + 3.66495669e+00 3.65713173e+00 3.64932058e+00 3.64152325e+00 3.63373972e+00 + 3.62597000e+00 3.61821408e+00 3.61047196e+00 3.60274362e+00 3.59502907e+00 + 3.58732830e+00 3.57964131e+00 3.57196808e+00 3.56430861e+00 3.55666291e+00 + 3.54903095e+00 3.54141274e+00 3.53380827e+00 3.52621753e+00 3.51864051e+00 + 3.51107722e+00 3.50352763e+00 3.49599176e+00 3.48846958e+00 3.48096109e+00 + 3.47346628e+00 3.46598515e+00 3.45851769e+00 3.45106389e+00 3.44362374e+00 + 3.43619724e+00 3.42878437e+00 3.42138513e+00 3.41399951e+00 3.40662750e+00 + 3.39926909e+00 3.39192428e+00 3.38459305e+00 3.37727539e+00 3.36997131e+00 + 3.36268077e+00 3.35540379e+00 3.34814034e+00 3.34089043e+00 3.33365403e+00 + 3.32643114e+00 3.31922175e+00 3.31202584e+00 3.30484342e+00 3.29767446e+00 + 3.29051896e+00 3.28337691e+00 3.27624829e+00 3.26913310e+00 3.26203132e+00 + 3.25494295e+00 3.24786797e+00 3.24080638e+00 3.23375815e+00 3.22672328e+00 + 3.21970176e+00 3.21269357e+00 3.20569871e+00 3.19871717e+00 3.19174892e+00 + 3.18479396e+00 3.17785228e+00 3.17092386e+00 3.16400870e+00 3.15710677e+00 + 3.15021808e+00 3.14334260e+00 3.13648032e+00 3.12963123e+00 3.12279532e+00 + 3.11597257e+00 3.10916298e+00 3.10236652e+00 3.09558319e+00 3.08881297e+00 + 3.08205585e+00 3.07531182e+00 3.06858086e+00 3.06186296e+00 3.05515810e+00 + 3.04846628e+00 3.04178747e+00 3.03512167e+00 3.02846886e+00 3.02182902e+00 + 3.01520215e+00 3.00858823e+00 3.00198724e+00 2.99539917e+00 2.98882400e+00 + 2.98226173e+00 2.97571234e+00 2.96917581e+00 2.96265212e+00 2.95614127e+00 + 2.94964324e+00 2.94315802e+00 2.93668558e+00 2.93022592e+00 2.92377902e+00 + 2.91734486e+00 2.91092343e+00 2.90451471e+00 2.89811870e+00 2.89173537e+00 + 2.88536471e+00 2.87900670e+00 2.87266133e+00 2.86632858e+00 2.86000844e+00 + 2.85370090e+00 2.84740593e+00 2.84112351e+00 2.83485365e+00 2.82859631e+00 + 2.82235149e+00 2.81611916e+00 2.80989931e+00 2.80369193e+00 2.79749700e+00 + 2.79131451e+00 2.78514443e+00 2.77898675e+00 2.77284146e+00 2.76670853e+00 + 2.76058796e+00 2.75447972e+00 2.74838381e+00 2.74230020e+00 2.73622887e+00 + 2.73016982e+00 2.72412302e+00 2.71808845e+00 2.71206611e+00 2.70605597e+00 + 2.70005802e+00 2.69407224e+00 2.68809862e+00 2.68213713e+00 2.67618776e+00 + 2.67025050e+00 2.66432532e+00 2.65841221e+00 2.65251116e+00 2.64662214e+00 + 2.64074514e+00 2.63488014e+00 2.62902713e+00 2.62318608e+00 2.61735698e+00 + 2.61153982e+00 2.60573457e+00 2.59994122e+00 2.59415976e+00 2.58839016e+00 + 2.58263240e+00 2.57688647e+00 2.57115236e+00 2.56543004e+00 2.55971950e+00 + 2.55402071e+00 2.54833367e+00 2.54265836e+00 2.53699475e+00 2.53134283e+00 + 2.52570258e+00 2.52007399e+00 2.51445704e+00 2.50885170e+00 2.50325797e+00 + 2.49767582e+00 2.49210523e+00 2.48654620e+00 2.48099869e+00 2.47546270e+00 + 2.46993821e+00 2.46442519e+00 2.45892363e+00 2.45343351e+00 2.44795481e+00 + 2.44248753e+00 2.43703163e+00 2.43158710e+00 2.42615392e+00 2.42073208e+00 + 2.41532155e+00 2.40992232e+00 2.40453438e+00 2.39915769e+00 2.39379225e+00 + 2.38843804e+00 2.38309504e+00 2.37776322e+00 2.37244258e+00 2.36713309e+00 + 2.36183474e+00 2.35654751e+00 2.35127138e+00 2.34600633e+00 2.34075234e+00 + 2.33550940e+00 2.33027749e+00 2.32505659e+00 2.31984668e+00 2.31464774e+00 + 2.30945976e+00 2.30428272e+00 2.29911659e+00 2.29396137e+00 2.28881702e+00 + 2.28368355e+00 2.27856091e+00 2.27344911e+00 2.26834812e+00 2.26325792e+00 + 2.25817849e+00 2.25310982e+00 2.24805188e+00 2.24300466e+00 2.23796815e+00 + 2.23294231e+00 2.22792715e+00 2.22292262e+00 2.21792873e+00 2.21294544e+00 + 2.20797275e+00 2.20301063e+00 2.19805906e+00 2.19311803e+00 2.18818752e+00 + 2.18326751e+00 2.17835798e+00 2.17345892e+00 2.16857030e+00 2.16369211e+00 + 2.15882433e+00 2.15396694e+00 2.14911992e+00 2.14428325e+00 2.13945693e+00 + 2.13464092e+00 2.12983521e+00 2.12503978e+00 2.12025462e+00 2.11547970e+00 + 2.11071501e+00 2.10596053e+00 2.10121624e+00 2.09648213e+00 2.09175816e+00 + 2.08704434e+00 2.08234063e+00 2.07764702e+00 2.07296350e+00 2.06829004e+00 + 2.06362662e+00 2.05897323e+00 2.05432985e+00 2.04969647e+00 2.04507305e+00 + 2.04045960e+00 2.03585608e+00 2.03126247e+00 2.02667877e+00 2.02210496e+00 + 2.01754101e+00 2.01298690e+00 2.00844262e+00 2.00390816e+00 1.99938349e+00 + 1.99486859e+00 1.99036345e+00 1.98586805e+00 1.98138237e+00 1.97690639e+00 + 1.97244010e+00 1.96798348e+00 1.96353650e+00 1.95909916e+00 1.95467143e+00 + 1.95025330e+00 1.94584474e+00 1.94144574e+00 1.93705629e+00 1.93267636e+00 + 1.92830594e+00 1.92394500e+00 1.91959354e+00 1.91525153e+00 1.91091895e+00 + 1.90659579e+00 1.90228203e+00 1.89797766e+00 1.89368264e+00 1.88939698e+00 + 1.88512064e+00 1.88085361e+00 1.87659588e+00 1.87234743e+00 1.86810823e+00 + 1.86387827e+00 1.85965754e+00 1.85544601e+00 1.85124367e+00 1.84705050e+00 + 1.84286648e+00 1.83869160e+00 1.83452583e+00 1.83036917e+00 1.82622159e+00 + 1.82208307e+00 1.81795360e+00 1.81383316e+00 1.80972174e+00 1.80561931e+00 + 1.80152586e+00 1.79744137e+00 1.79336582e+00 1.78929920e+00 1.78524149e+00 + 1.78119267e+00 1.77715272e+00 1.77312163e+00 1.76909939e+00 1.76508596e+00 + 1.76108134e+00 1.75708551e+00 1.75309844e+00 1.74912014e+00 1.74515057e+00 + 1.74118972e+00 1.73723757e+00 1.73329410e+00 1.72935931e+00 1.72543317e+00 + 1.72151566e+00 1.71760676e+00 1.71370647e+00 1.70981477e+00 1.70593162e+00 + 1.70205703e+00 1.69819097e+00 1.69433343e+00 1.69048438e+00 1.68664382e+00 + 1.68281172e+00 1.67898807e+00 1.67517286e+00 1.67136605e+00 1.66756765e+00 + 1.66377762e+00 1.65999597e+00 1.65622265e+00 1.65245767e+00 1.64870101e+00 + 1.64495264e+00 1.64121256e+00 1.63748074e+00 1.63375716e+00 1.63004182e+00 + 1.62633470e+00 1.62263577e+00 1.61894502e+00 1.61526245e+00 1.61158802e+00 + 1.60792172e+00 1.60426354e+00 1.60061346e+00 1.59697146e+00 1.59333753e+00 + 1.58971165e+00 1.58609381e+00 1.58248399e+00 1.57888216e+00 1.57528833e+00 + 1.57170246e+00 1.56812455e+00 1.56455458e+00 1.56099252e+00 1.55743837e+00 + 1.55389211e+00 1.55035373e+00 1.54682320e+00 1.54330051e+00 1.53978565e+00 + 1.53627860e+00 1.53277934e+00 1.52928786e+00 1.52580413e+00 1.52232816e+00 + 1.51885991e+00 1.51539938e+00 1.51194655e+00 1.50850139e+00 1.50506391e+00 + 1.50163407e+00 1.49821187e+00 1.49479729e+00 1.49139031e+00 1.48799092e+00 + 1.48459910e+00 1.48121484e+00 1.47783812e+00 1.47446893e+00 1.47110724e+00 + 1.46775305e+00 1.46440634e+00 1.46106709e+00 1.45773529e+00 1.45441092e+00 + 1.45109397e+00 1.44778442e+00 1.44448226e+00 1.44118747e+00 1.43790003e+00 + 1.43461994e+00 1.43134717e+00 1.42808171e+00 1.42482354e+00 1.42157265e+00 + 1.41832903e+00 1.41509266e+00 1.41186352e+00 1.40864160e+00 1.40542689e+00 + 1.40221936e+00 1.39901901e+00 1.39582581e+00 1.39263976e+00 1.38946084e+00 + 1.38628904e+00 1.38312433e+00 1.37996670e+00 1.37681615e+00 1.37367265e+00 + 1.37053619e+00 1.36740676e+00 1.36428433e+00 1.36116890e+00 1.35806045e+00 + 1.35495897e+00 1.35186444e+00 1.34877684e+00 1.34569617e+00 1.34262240e+00 + 1.33955553e+00 1.33649554e+00 1.33344241e+00 1.33039613e+00 1.32735668e+00 + 1.32432406e+00 1.32129824e+00 1.31827921e+00 1.31526696e+00 1.31226147e+00 + 1.30926273e+00 1.30627073e+00 1.30328544e+00 1.30030687e+00 1.29733498e+00 + 1.29436977e+00 1.29141122e+00 1.28845932e+00 1.28551406e+00 1.28257542e+00 + 1.27964338e+00 1.27671794e+00 1.27379907e+00 1.27088677e+00 1.26798102e+00 + 1.26508181e+00 1.26218912e+00 1.25930293e+00 1.25642325e+00 1.25355004e+00 + 1.25068330e+00 1.24782302e+00 1.24496917e+00 1.24212175e+00 1.23928074e+00 + 1.23644613e+00 1.23361790e+00 1.23079605e+00 1.22798055e+00 1.22517139e+00 + 1.22236857e+00 1.21957206e+00 1.21678186e+00 1.21399794e+00 1.21122030e+00 + 1.20844892e+00 1.20568379e+00 1.20292490e+00 1.20017223e+00 1.19742577e+00 + 1.19468550e+00 1.19195141e+00 1.18922350e+00 1.18650174e+00 1.18378612e+00 + 1.18107663e+00 1.17837325e+00 1.17567598e+00 1.17298479e+00 1.17029969e+00 + 1.16762064e+00 1.16492387e+00 1.16213751e+00 1.15925731e+00 1.15628397e+00 + 1.15321822e+00 1.15006080e+00 1.14681247e+00 1.14347399e+00 1.14004614e+00 + 1.13652972e+00 1.13292553e+00 1.12923439e+00 1.12545713e+00 1.12159460e+00 + 1.11764764e+00 1.11361712e+00 1.10950393e+00 1.10530894e+00 1.10103307e+00 + 1.09667722e+00 1.09224230e+00 1.08772926e+00 1.08313904e+00 1.07847259e+00 + 1.07373086e+00 1.06891483e+00 1.06402548e+00 1.05906380e+00 1.05403079e+00 + 1.04892746e+00 1.04375481e+00 1.03851388e+00 1.03320569e+00 1.02783129e+00 + 1.02239172e+00 1.01688803e+00 1.01132129e+00 1.00569257e+00 1.00000294e+00 + 9.94253473e-01 9.88445268e-01 9.82579415e-01 9.76657013e-01 9.70679167e-01 + 9.64646985e-01 9.58561585e-01 9.52424084e-01 9.46235609e-01 9.39997288e-01 + 9.33710253e-01 9.27375643e-01 9.20994598e-01 9.14568262e-01 9.08097783e-01 + 9.01584312e-01 8.95029002e-01 8.88433010e-01 8.81797494e-01 8.75123616e-01 + 8.68412537e-01 8.61665423e-01 8.54883440e-01 8.48067755e-01 8.41219538e-01 + 8.34339956e-01 8.27430181e-01 8.20491384e-01 8.13524734e-01 8.06531404e-01 + 7.99512564e-01 7.92469384e-01 7.85403035e-01 7.78314685e-01 7.71205503e-01 + 7.64076656e-01 7.56929308e-01 7.49764624e-01 7.42583767e-01 7.35387895e-01 + 7.28178168e-01 7.20955740e-01 7.13721765e-01 7.06477392e-01 6.99223769e-01 + 6.91962040e-01 6.84693345e-01 6.77418822e-01 6.70139603e-01 6.62856818e-01 + 6.55571593e-01 6.48285047e-01 6.40998299e-01 6.33712459e-01 6.26428635e-01 + 6.19147929e-01 6.11871437e-01 6.04600250e-01 5.97335456e-01 5.90078134e-01 + 5.82829357e-01 5.75590196e-01 5.68361711e-01 5.61144959e-01 5.53940989e-01 + 5.46750843e-01 5.39575557e-01 5.32416160e-01 5.25273674e-01 5.18149112e-01 + 5.11043482e-01 5.03957784e-01 4.96893007e-01 4.89850137e-01 4.82830149e-01 + 4.75834011e-01 4.68862681e-01 4.61917111e-01 4.54998243e-01 4.48107011e-01 + 4.41244339e-01 4.34411143e-01 4.27608330e-01 4.20836798e-01 4.14097435e-01 + 4.07391119e-01 4.00718721e-01 3.94081100e-01 3.87479106e-01 3.80913579e-01 + 3.74385350e-01 3.67895238e-01 3.61444053e-01 3.55032596e-01 3.48661655e-01 + 3.42332009e-01 3.36044427e-01 3.29799666e-01 3.23598473e-01 3.17441585e-01 + 3.11329726e-01 3.05263611e-01 2.99243943e-01 2.93271414e-01 2.87346706e-01 + 2.81470487e-01 2.75643416e-01 2.69866139e-01 2.64139293e-01 2.58463501e-01 + 2.52839376e-01 2.47267517e-01 2.41748515e-01 2.36282946e-01 2.30871375e-01 + 2.25514356e-01 2.20212432e-01 2.14966130e-01 2.09775970e-01 2.04642457e-01 + 1.99566084e-01 1.94547333e-01 1.89586674e-01 1.84684564e-01 1.79841448e-01 + 1.75057759e-01 1.70333918e-01 1.65670332e-01 1.61067399e-01 1.56525503e-01 + 1.52045014e-01 1.47626293e-01 1.43269686e-01 1.38975529e-01 1.34744143e-01 + 1.30575839e-01 1.26470915e-01 1.22429656e-01 1.18452335e-01 1.14539213e-01 + 1.10690539e-01 1.06906550e-01 1.03187468e-01 9.95335069e-02 9.59448653e-02 + 9.24217306e-02 8.89642782e-02 8.55726710e-02 8.22470599e-02 7.89875836e-02 + 7.57943689e-02 7.26675303e-02 6.96071705e-02 6.66133801e-02 6.36862378e-02 + 6.08258104e-02 5.80321528e-02 5.53053081e-02 5.26453077e-02 5.00521712e-02 + 4.75259065e-02 4.50665099e-02 4.26739664e-02 4.03482489e-02 3.80893195e-02 + 3.58971284e-02 3.37716148e-02 3.17127063e-02 2.97203197e-02 2.77943602e-02 + 2.59347223e-02 2.41412894e-02 2.24139337e-02 2.07525169e-02 1.91568897e-02 + 1.76268922e-02 1.61623537e-02 1.47630931e-02 1.34289187e-02 1.21596286e-02 + 1.09550102e-02 9.81484109e-03 8.73888848e-03 7.72690959e-03 6.77865166e-03 + 5.89385204e-03 5.07223831e-03 4.31352836e-03 3.61743045e-03 2.98364337e-03 + 2.41185648e-03 1.90174984e-03 1.45299430e-03 1.06525159e-03 7.38174448e-04 + 4.71406686e-04 2.64583325e-04 1.17330685e-04 2.92664954e-05 0.00000000e+00 + 1.14636847e+01 1.14637147e+01 1.15240318e+01 1.15846601e+01 1.16456011e+01 + 1.17068565e+01 1.17684277e+01 1.18303164e+01 1.18925239e+01 1.19550520e+01 + 1.20179021e+01 1.20810759e+01 1.21445749e+01 1.22084007e+01 1.22725549e+01 + 1.23370391e+01 1.24018548e+01 1.24670037e+01 1.25324875e+01 1.25983076e+01 + 1.26644659e+01 1.27309638e+01 1.27978031e+01 1.28649853e+01 1.29325122e+01 + 1.30003854e+01 1.30686065e+01 1.31371773e+01 1.32060994e+01 1.32753745e+01 + 1.33450043e+01 1.34149905e+01 1.34853349e+01 1.35560390e+01 1.36271047e+01 + 1.36985337e+01 1.37703277e+01 1.38424884e+01 1.39150176e+01 1.39879171e+01 + 1.40611886e+01 1.41348338e+01 1.42088546e+01 1.42832528e+01 1.43580300e+01 + 1.44331882e+01 1.45087290e+01 1.45846544e+01 1.46609661e+01 1.47376660e+01 + 1.48147558e+01 1.48922374e+01 1.49701127e+01 1.50483835e+01 1.51270516e+01 + 1.52061190e+01 1.52855874e+01 1.53654587e+01 1.54457349e+01 1.55264178e+01 + 1.56075093e+01 1.56890113e+01 1.57709257e+01 1.58532545e+01 1.59359994e+01 + 1.60191626e+01 1.61027458e+01 1.61867511e+01 1.62711803e+01 1.63560355e+01 + 1.64413185e+01 1.65270315e+01 1.66131762e+01 1.66997547e+01 1.67867690e+01 + 1.68742211e+01 1.69621130e+01 1.70504466e+01 1.71392240e+01 1.72284472e+01 + 1.73181182e+01 1.74082391e+01 1.74988118e+01 1.75898384e+01 1.76813210e+01 + 1.77732616e+01 1.78656623e+01 1.79585251e+01 1.80518522e+01 1.81456455e+01 + 1.82399071e+01 1.83346392e+01 1.84298439e+01 1.85255232e+01 1.86216793e+01 + 1.87183142e+01 1.88154301e+01 1.89130291e+01 1.90111134e+01 1.91096850e+01 + 1.92087462e+01 1.93082990e+01 1.94083456e+01 1.95088881e+01 1.96099288e+01 + 1.97114699e+01 1.98135133e+01 1.99160615e+01 2.00191164e+01 2.01226804e+01 + 2.02267556e+01 2.03313443e+01 2.04364485e+01 2.05420707e+01 2.06482128e+01 + 2.07548773e+01 2.08620662e+01 2.09697819e+01 2.10780265e+01 2.11868023e+01 + 2.12961116e+01 2.14059566e+01 2.15163395e+01 2.16272627e+01 2.17387283e+01 + 2.18507387e+01 2.19632961e+01 2.20764027e+01 2.21900610e+01 2.23042731e+01 + 2.24190413e+01 2.25343679e+01 2.26502553e+01 2.27667057e+01 2.28837215e+01 + 2.30013049e+01 2.31194582e+01 2.32381838e+01 2.33574839e+01 2.34773610e+01 + 2.35978172e+01 2.37188550e+01 2.38404767e+01 2.39626846e+01 2.40854811e+01 + 2.42088684e+01 2.43328489e+01 2.44574250e+01 2.45825991e+01 2.47083733e+01 + 2.48347502e+01 2.49617321e+01 2.50893212e+01 2.52175201e+01 2.53463309e+01 + 2.54757562e+01 2.56057981e+01 2.57364592e+01 2.58677418e+01 2.59996482e+01 + 2.61321808e+01 2.62653420e+01 2.63991341e+01 2.65335596e+01 2.66686207e+01 + 2.68043198e+01 2.69406594e+01 2.70776417e+01 2.72152692e+01 2.73535442e+01 + 2.74924691e+01 2.76320462e+01 2.77722780e+01 2.79131668e+01 2.80547149e+01 + 2.81969248e+01 2.83397987e+01 2.84833391e+01 2.86275483e+01 2.87724286e+01 + 2.89179825e+01 2.90642123e+01 2.92111203e+01 2.93587088e+01 2.95069803e+01 + 2.96559371e+01 2.98055815e+01 2.99559159e+01 3.01069425e+01 3.02586638e+01 + 3.04110820e+01 3.05641996e+01 3.07180187e+01 3.08725417e+01 3.10277709e+01 + 3.11837087e+01 3.13403573e+01 3.14977190e+01 3.16557962e+01 3.18145911e+01 + 3.19741059e+01 3.21343430e+01 3.22953047e+01 3.24569931e+01 3.26194106e+01 + 3.27825594e+01 3.29464417e+01 3.31110597e+01 3.32764158e+01 3.34425121e+01 + 3.36093508e+01 3.37769341e+01 3.39452642e+01 3.41143433e+01 3.42841736e+01 + 3.44547572e+01 3.46260964e+01 3.47981931e+01 3.49710496e+01 3.51446681e+01 + 3.53190505e+01 3.54941990e+01 3.56701158e+01 3.58468028e+01 3.60242622e+01 + 3.62024960e+01 3.63815062e+01 3.65612949e+01 3.67418641e+01 3.69232158e+01 + 3.71053520e+01 3.72882746e+01 3.74719857e+01 3.76564872e+01 3.78417809e+01 + 3.80278689e+01 3.82147530e+01 3.84024351e+01 3.85909171e+01 3.87802007e+01 + 3.89702880e+01 3.91611806e+01 3.93528804e+01 3.95453892e+01 3.97387086e+01 + 3.99328406e+01 4.01277867e+01 4.03235487e+01 4.05201283e+01 4.07175271e+01 + 4.09157468e+01 4.11147890e+01 4.13146553e+01 4.15153472e+01 4.17168665e+01 + 4.19192145e+01 4.21223928e+01 4.23264028e+01 4.25312461e+01 4.27369241e+01 + 4.29434382e+01 4.31507898e+01 4.33589802e+01 4.35680108e+01 4.37778828e+01 + 4.39885977e+01 4.42001566e+01 4.44125608e+01 4.46258114e+01 4.48399097e+01 + 4.50548568e+01 4.52706538e+01 4.54873017e+01 4.57048017e+01 4.59231548e+01 + 4.61423619e+01 4.63624241e+01 4.65833421e+01 4.68051170e+01 4.70277497e+01 + 4.72512408e+01 4.74755912e+01 4.77008018e+01 4.79268731e+01 4.81538059e+01 + 4.83816009e+01 4.86102586e+01 4.88397796e+01 4.90701646e+01 4.93014139e+01 + 4.95335280e+01 4.97665074e+01 5.00003524e+01 5.02350634e+01 5.04706407e+01 + 5.07070845e+01 5.09443951e+01 5.11825727e+01 5.14216173e+01 5.16615291e+01 + 5.19023081e+01 5.21439543e+01 5.23864676e+01 5.26298480e+01 5.28740954e+01 + 5.31192095e+01 5.33651902e+01 5.36120371e+01 5.38597499e+01 5.41083282e+01 + 5.43577717e+01 5.46080798e+01 5.48592520e+01 5.51112877e+01 5.53641863e+01 + 5.56179471e+01 5.58725694e+01 5.61280524e+01 5.63843952e+01 5.66415969e+01 + 5.68996567e+01 5.71585734e+01 5.74183459e+01 5.76789733e+01 5.79404543e+01 + 5.82027876e+01 5.84659719e+01 5.87300059e+01 5.89948882e+01 5.92606173e+01 + 5.95271916e+01 5.97946095e+01 6.00628694e+01 6.03319696e+01 6.06019081e+01 + 6.08726832e+01 6.11442930e+01 6.14167355e+01 6.16900085e+01 6.19641100e+01 + 6.22390378e+01 6.25147896e+01 6.27913631e+01 6.30687559e+01 6.33469656e+01 + 6.36259895e+01 6.39058251e+01 6.41864697e+01 6.44679206e+01 6.47501749e+01 + 6.50332297e+01 6.53170821e+01 6.56017290e+01 6.58871673e+01 6.61733938e+01 + 6.64604052e+01 6.67481982e+01 6.70367693e+01 6.73261150e+01 6.76162318e+01 + 6.79071160e+01 6.81987638e+01 6.84911715e+01 6.87843350e+01 6.90782505e+01 + 6.93729139e+01 6.96683210e+01 6.99644676e+01 7.02613493e+01 7.05589619e+01 + 7.08573007e+01 7.11563612e+01 7.14561389e+01 7.17566288e+01 7.20578263e+01 + 7.23597263e+01 7.26623240e+01 7.29656142e+01 7.32695917e+01 7.35742513e+01 + 7.38795876e+01 7.41855952e+01 7.44922686e+01 7.47996021e+01 7.51075900e+01 + 7.54162265e+01 7.57255057e+01 7.60354217e+01 7.63459683e+01 7.66571394e+01 + 7.69689287e+01 7.72813299e+01 7.75943364e+01 7.79079418e+01 7.82221395e+01 + 7.85369226e+01 7.88522843e+01 7.91682178e+01 7.94847160e+01 7.98017717e+01 + 8.01193779e+01 8.04375271e+01 8.07562119e+01 8.10754249e+01 8.13951584e+01 + 8.17154048e+01 8.20361563e+01 8.23574049e+01 8.26791427e+01 8.30013615e+01 + 8.33240533e+01 8.36472097e+01 8.39708223e+01 8.42948827e+01 8.46193822e+01 + 8.49443123e+01 8.52696640e+01 8.55954286e+01 8.59215971e+01 8.62481604e+01 + 8.65751093e+01 8.69024346e+01 8.72301269e+01 8.75581767e+01 8.78865745e+01 + 8.82153106e+01 8.85443752e+01 8.88737586e+01 8.92034507e+01 8.95334414e+01 + 8.98637208e+01 9.01942784e+01 9.05251039e+01 9.08561870e+01 9.11875170e+01 + 9.15190834e+01 9.18508754e+01 9.21828822e+01 9.25150929e+01 9.28474964e+01 + 9.31800817e+01 9.35128376e+01 9.38457526e+01 9.41788156e+01 9.45120150e+01 + 9.48453391e+01 9.51787764e+01 9.55123152e+01 9.58459434e+01 9.61796493e+01 + 9.65134208e+01 9.68472458e+01 9.71811120e+01 9.75150072e+01 9.78489190e+01 + 9.81828350e+01 9.85167426e+01 9.88506292e+01 9.91844820e+01 9.95182882e+01 + 9.98520351e+01 1.00185710e+02 1.00519299e+02 1.00852789e+02 1.01186168e+02 + 1.01519421e+02 1.01852537e+02 1.02185500e+02 1.02518298e+02 1.02850918e+02 + 1.03183344e+02 1.03515565e+02 1.03847565e+02 1.04179331e+02 1.04510850e+02 + 1.04842106e+02 1.05173087e+02 1.05503777e+02 1.05834164e+02 1.06164231e+02 + 1.06493966e+02 1.06823354e+02 1.07152380e+02 1.07481029e+02 1.07809288e+02 + 1.08137142e+02 1.08464575e+02 1.08791574e+02 1.09118124e+02 1.09444209e+02 + 1.09769815e+02 1.10094926e+02 1.10419529e+02 1.10743608e+02 1.11067148e+02 + 1.11390133e+02 1.11712550e+02 1.12034382e+02 1.12355614e+02 1.12676232e+02 + 1.12996219e+02 1.13315562e+02 1.13634243e+02 1.13952249e+02 1.14269563e+02 + 1.14586171e+02 1.14902056e+02 1.15217204e+02 1.15531599e+02 1.15845226e+02 + 1.16158068e+02 1.16470111e+02 1.16781340e+02 1.17091737e+02 1.17401289e+02 + 1.17709980e+02 1.18017793e+02 1.18324714e+02 1.18630727e+02 1.18935817e+02 + 1.19239967e+02 1.19543163e+02 1.19845389e+02 1.20146630e+02 1.20446869e+02 + 1.20746092e+02 1.21044283e+02 1.21341427e+02 1.21637508e+02 1.21932512e+02 + 1.22226421e+02 1.22519222e+02 1.22810899e+02 1.23101437e+02 1.23390820e+02 + 1.23679033e+02 1.23966062e+02 1.24251891e+02 1.24536504e+02 1.24819888e+02 + 1.25102026e+02 1.25382904e+02 1.25662508e+02 1.25940822e+02 1.26217831e+02 + 1.26493521e+02 1.26767877e+02 1.27040885e+02 1.27312529e+02 1.27582796e+02 + 1.27851672e+02 1.28119141e+02 1.28385189e+02 1.28649803e+02 1.28912968e+02 + 1.29174670e+02 1.29434895e+02 1.29693630e+02 1.29950860e+02 1.30206572e+02 + 1.30460752e+02 1.30713387e+02 1.30964463e+02 1.31213966e+02 1.31461885e+02 + 1.31708205e+02 1.31952913e+02 1.32195997e+02 1.32437443e+02 1.32677239e+02 + 1.32915372e+02 1.33151830e+02 1.33386601e+02 1.33619671e+02 1.33851029e+02 + 1.34080662e+02 1.34308560e+02 1.34534709e+02 1.34759099e+02 1.34981717e+02 + 1.35202552e+02 1.35421593e+02 1.35638829e+02 1.35854248e+02 1.36067840e+02 + 1.36279593e+02 1.36489498e+02 1.36697543e+02 1.36903718e+02 1.37108013e+02 + 1.37310417e+02 1.37510922e+02 1.37709516e+02 1.37906191e+02 1.38100936e+02 + 1.38293742e+02 1.38484600e+02 1.38673502e+02 1.38860437e+02 1.39045397e+02 + 1.39228374e+02 1.39409359e+02 1.39588343e+02 1.39765319e+02 1.39940278e+02 + 1.40113213e+02 1.40284116e+02 1.40452979e+02 1.40619796e+02 1.40784558e+02 + 1.40947259e+02 1.41107891e+02 1.41266449e+02 1.41422926e+02 1.41577314e+02 + 1.41729609e+02 1.41879804e+02 1.42027892e+02 1.42173869e+02 1.42317729e+02 + 1.42459467e+02 1.42599077e+02 1.42736554e+02 1.42871893e+02 1.43005090e+02 + 1.43136140e+02 1.43265040e+02 1.43391784e+02 1.43516369e+02 1.43638790e+02 + 1.43759046e+02 1.43877131e+02 1.43993042e+02 1.44106777e+02 1.44218333e+02 + 1.44327706e+02 1.44434895e+02 1.44539897e+02 1.44642709e+02 1.44743329e+02 + 1.44841757e+02 1.44937989e+02 1.45032025e+02 1.45123862e+02 1.45213501e+02 + 1.45300939e+02 1.45386177e+02 1.45469212e+02 1.45550046e+02 1.45628677e+02 + 1.45705106e+02 1.45779332e+02 1.45851355e+02 1.45921177e+02 1.45988797e+02 + 1.46054216e+02 1.46117435e+02 1.46178455e+02 1.46237278e+02 1.46293904e+02 + 1.46348336e+02 1.46400574e+02 1.46450622e+02 1.46498480e+02 1.46544151e+02 + 1.46587637e+02 1.46628941e+02 1.46668066e+02 1.46705014e+02 1.46739788e+02 + 1.46772392e+02 1.46802828e+02 1.46831101e+02 1.46857213e+02 1.46881169e+02 + 1.46902973e+02 1.46922628e+02 1.46940138e+02 1.46955509e+02 1.46968744e+02 + 1.46979849e+02 1.46988827e+02 1.46995684e+02 1.47000426e+02 1.47003056e+02 + 1.47003581e+02 1.47002006e+02 1.46998336e+02 1.46992578e+02 1.46984737e+02 + 1.46974819e+02 1.46962831e+02 1.46948778e+02 1.46932668e+02 1.46914506e+02 + 1.46894299e+02 1.46872054e+02 1.46847778e+02 1.46821478e+02 1.46793161e+02 + 1.46762834e+02 1.46730505e+02 1.46696181e+02 1.46659869e+02 1.46621578e+02 + 1.46581315e+02 1.46539088e+02 1.46494906e+02 1.46448775e+02 1.46400705e+02 + 1.46350703e+02 1.46298779e+02 1.46244940e+02 1.46189196e+02 1.46131554e+02 + 1.46072025e+02 1.46010616e+02 1.45947336e+02 1.45882196e+02 1.45815203e+02 + 1.45746367e+02 1.45675697e+02 1.45603203e+02 1.45528895e+02 1.45452781e+02 + 1.45374871e+02 1.45295176e+02 1.45213704e+02 1.45130467e+02 1.45045472e+02 + 1.44958732e+02 1.44870254e+02 1.44780051e+02 1.44688131e+02 1.44594506e+02 + 1.44499185e+02 1.44402178e+02 1.44303497e+02 1.44203151e+02 1.44101151e+02 + 1.43997508e+02 1.43892232e+02 1.43785334e+02 1.43676825e+02 1.43566715e+02 + 1.43455014e+02 1.43341735e+02 1.43226888e+02 1.43110483e+02 1.42992531e+02 + 1.42873045e+02 1.42752034e+02 1.42629509e+02 1.42505482e+02 1.42379964e+02 + 1.42252966e+02 1.42124499e+02 1.41994574e+02 1.41863202e+02 1.41730395e+02 + 1.41596164e+02 1.41460520e+02 1.41323475e+02 1.41185039e+02 1.41045224e+02 + 1.40904041e+02 1.40761503e+02 1.40617619e+02 1.40472401e+02 1.40325861e+02 + 1.40178011e+02 1.40028860e+02 1.39878422e+02 1.39726706e+02 1.39573726e+02 + 1.39419491e+02 1.39264013e+02 1.39107304e+02 1.38949376e+02 1.38790238e+02 + 1.38629904e+02 1.38468384e+02 1.38305689e+02 1.38141831e+02 1.37976821e+02 + 1.37810671e+02 1.37643391e+02 1.37474994e+02 1.37305490e+02 1.37134890e+02 + 1.36963207e+02 1.36790450e+02 1.36616632e+02 1.36441764e+02 1.36265856e+02 + 1.36088919e+02 1.35910966e+02 1.35732007e+02 1.35552053e+02 1.35371115e+02 + 1.35189204e+02 1.35006331e+02 1.34822508e+02 1.34637745e+02 1.34452052e+02 + 1.34265442e+02 1.34077924e+02 1.33889510e+02 1.33700211e+02 1.33510036e+02 + 1.33318997e+02 1.33127105e+02 1.32934370e+02 1.32740803e+02 1.32546414e+02 + 1.32351214e+02 1.32155213e+02 1.31958423e+02 1.31760852e+02 1.31562512e+02 + 1.31363414e+02 1.31163566e+02 1.30962981e+02 1.30761667e+02 1.30559635e+02 + 1.30356895e+02 1.30153458e+02 1.29949332e+02 1.29744529e+02 1.29539058e+02 + 1.29332930e+02 1.29126153e+02 1.28918738e+02 1.28710695e+02 1.28502033e+02 + 1.28292762e+02 1.28082892e+02 1.27872431e+02 1.27661391e+02 1.27449780e+02 + 1.27237607e+02 1.27024882e+02 1.26811615e+02 1.26597815e+02 1.26383490e+02 + 1.26168650e+02 1.25953305e+02 1.25737462e+02 1.25521132e+02 1.25304323e+02 + 1.25087045e+02 1.24869305e+02 1.24651113e+02 1.24432478e+02 1.24213408e+02 + 1.23993912e+02 1.23773999e+02 1.23553677e+02 1.23332954e+02 1.23111839e+02 + 1.22890341e+02 1.22668468e+02 1.22446227e+02 1.22223628e+02 1.22000678e+02 + 1.21777386e+02 1.21553760e+02 1.21329807e+02 1.21105535e+02 1.20880953e+02 + 1.20656068e+02 1.20430889e+02 1.20205422e+02 1.19979676e+02 1.19753657e+02 + 1.19527375e+02 1.19300835e+02 1.19074046e+02 1.18847015e+02 1.18619750e+02 + 1.18392257e+02 1.18164544e+02 1.17936618e+02 1.17708486e+02 1.17480156e+02 + 1.17251634e+02 1.17022927e+02 1.16794042e+02 1.16564986e+02 1.16335766e+02 + 1.16106388e+02 1.15876860e+02 1.15647187e+02 1.15417377e+02 1.15187436e+02 + 1.14957370e+02 1.14727186e+02 1.14496890e+02 1.14266489e+02 1.14035988e+02 + 1.13805395e+02 1.13574714e+02 1.13343953e+02 1.13113117e+02 1.12882212e+02 + 1.12651245e+02 1.12420220e+02 1.12189145e+02 1.11958024e+02 1.11726863e+02 + 1.11495669e+02 1.11264446e+02 1.11033201e+02 1.10801938e+02 1.10570664e+02 + 1.10339384e+02 1.10108102e+02 1.09876825e+02 1.09645558e+02 1.09414306e+02 + 1.09183074e+02 1.08951867e+02 1.08720690e+02 1.08489549e+02 1.08258447e+02 + 1.08027392e+02 1.07796386e+02 1.07565435e+02 1.07334544e+02 1.07103717e+02 + 1.06872960e+02 1.06642276e+02 1.06411671e+02 1.06181148e+02 1.05950713e+02 + 1.05720370e+02 1.05490123e+02 1.05259977e+02 1.05029936e+02 1.04800004e+02 + 1.04570186e+02 1.04340485e+02 1.04110906e+02 1.03881453e+02 1.03652130e+02 + 1.03422940e+02 1.03193889e+02 1.02964980e+02 1.02736216e+02 1.02507602e+02 + 1.02279141e+02 1.02050837e+02 1.01822694e+02 1.01594715e+02 1.01366905e+02 + 1.01139266e+02 1.00911802e+02 1.00684517e+02 1.00457414e+02 1.00230497e+02 + 1.00003768e+02 9.97772321e+01 9.95508915e+01 9.93247499e+01 9.90988103e+01 + 9.88730759e+01 9.86475500e+01 9.84222355e+01 9.81971356e+01 9.79722534e+01 + 9.77475917e+01 9.75231536e+01 9.72989420e+01 9.70749597e+01 9.68512097e+01 + 9.66276947e+01 9.64044174e+01 9.61813808e+01 9.59585873e+01 9.57360398e+01 + 9.55137409e+01 9.52916930e+01 9.50698990e+01 9.48483611e+01 9.46270821e+01 + 9.44060642e+01 9.41853100e+01 9.39648219e+01 9.37446022e+01 9.35246532e+01 + 9.33049773e+01 9.30855768e+01 9.28664538e+01 9.26476106e+01 9.24290493e+01 + 9.22107722e+01 9.19927813e+01 9.17750786e+01 9.15576664e+01 9.13405465e+01 + 9.11237210e+01 9.09071919e+01 9.06909610e+01 9.04750303e+01 9.02594017e+01 + 9.00440770e+01 8.98290581e+01 8.96143467e+01 8.93999446e+01 8.91858535e+01 + 8.89720752e+01 8.87586114e+01 8.85454636e+01 8.83326336e+01 8.81201229e+01 + 8.79079332e+01 8.76960659e+01 8.74845226e+01 8.72733048e+01 8.70624140e+01 + 8.68518516e+01 8.66416191e+01 8.64317178e+01 8.62221492e+01 8.60129146e+01 + 8.58040153e+01 8.55954526e+01 8.53872279e+01 8.51793423e+01 8.49717971e+01 + 8.47645936e+01 8.45577329e+01 8.43512162e+01 8.41450446e+01 8.39392193e+01 + 8.37337413e+01 8.35286118e+01 8.33238319e+01 8.31194024e+01 8.29153246e+01 + 8.27115993e+01 8.25082275e+01 8.23052103e+01 8.21025484e+01 8.19002430e+01 + 8.16982948e+01 8.14967047e+01 8.12954737e+01 8.10946024e+01 8.08940918e+01 + 8.06939427e+01 8.04941558e+01 8.02947318e+01 8.00956717e+01 7.98969760e+01 + 7.96986455e+01 7.95006808e+01 7.93030827e+01 7.91058518e+01 7.89089888e+01 + 7.87124942e+01 7.85163688e+01 7.83206129e+01 7.81252274e+01 7.79302126e+01 + 7.77355691e+01 7.75412975e+01 7.73473983e+01 7.71538720e+01 7.69607190e+01 + 7.67679398e+01 7.65755348e+01 7.63835046e+01 7.61918494e+01 7.60005698e+01 + 7.58096660e+01 7.56191385e+01 7.54289877e+01 7.52392138e+01 7.50498172e+01 + 7.48607982e+01 7.46721572e+01 7.44838943e+01 7.42960100e+01 7.41085045e+01 + 7.39213779e+01 7.37346306e+01 7.35482627e+01 7.33622746e+01 7.31766663e+01 + 7.29914382e+01 7.28065902e+01 7.26221227e+01 7.24380357e+01 7.22543295e+01 + 7.20710041e+01 7.18880596e+01 7.17054962e+01 7.15233140e+01 7.13415130e+01 + 7.11600933e+01 7.09790550e+01 7.07983980e+01 7.06181226e+01 7.04382286e+01 + 7.02587162e+01 7.00795852e+01 6.99008358e+01 6.97224679e+01 6.95444815e+01 + 6.93668765e+01 6.91896529e+01 6.90128107e+01 6.88363498e+01 6.86602702e+01 + 6.84845716e+01 6.83092542e+01 6.81343177e+01 6.79597621e+01 6.77855872e+01 + 6.76117930e+01 6.74383792e+01 6.72653459e+01 6.70926927e+01 6.69204196e+01 + 6.67485263e+01 6.65770128e+01 6.64058788e+01 6.62351242e+01 6.60647487e+01 + 6.58947522e+01 6.57251344e+01 6.55558951e+01 6.53870341e+01 6.52185512e+01 + 6.50504461e+01 6.48827185e+01 6.47153683e+01 6.45483951e+01 6.43817987e+01 + 6.42155788e+01 6.40497352e+01 6.38842675e+01 6.37191754e+01 6.35544587e+01 + 6.33901170e+01 6.32261501e+01 6.30625575e+01 6.28993390e+01 6.27364943e+01 + 6.25740230e+01 6.24119248e+01 6.22501992e+01 6.20888461e+01 6.19278649e+01 + 6.17672554e+01 6.16070172e+01 6.14471498e+01 6.12876529e+01 6.11285262e+01 + 6.09697692e+01 6.08113816e+01 6.06533628e+01 6.04957126e+01 6.03384305e+01 + 6.01815161e+01 6.00249690e+01 5.98687888e+01 5.97129749e+01 5.95575271e+01 + 5.94024448e+01 5.92477276e+01 5.90933750e+01 5.89393867e+01 5.87857621e+01 + 5.86325008e+01 5.84796024e+01 5.83270662e+01 5.81748920e+01 5.80230792e+01 + 5.78716273e+01 5.77205359e+01 5.75698044e+01 5.74194325e+01 5.72694194e+01 + 5.71197649e+01 5.69704684e+01 5.68215293e+01 5.66729472e+01 5.65247215e+01 + 5.63768518e+01 5.62293375e+01 5.60821782e+01 5.59353732e+01 5.57889220e+01 + 5.56428242e+01 5.54970792e+01 5.53516865e+01 5.52066455e+01 5.50619556e+01 + 5.49176164e+01 5.47736273e+01 5.46299878e+01 5.44866972e+01 5.43437551e+01 + 5.42011609e+01 5.40589140e+01 5.39170138e+01 5.37754599e+01 5.36342516e+01 + 5.34933884e+01 5.33528697e+01 5.32126949e+01 5.30728635e+01 5.29333749e+01 + 5.27942284e+01 5.26554236e+01 5.25169599e+01 5.23788366e+01 5.22410531e+01 + 5.21036090e+01 5.19665035e+01 5.18297362e+01 5.16933064e+01 5.15572135e+01 + 5.14214569e+01 5.12860360e+01 5.11509503e+01 5.10161991e+01 5.08817818e+01 + 5.07476979e+01 5.06139466e+01 5.04805275e+01 5.03474399e+01 5.02146831e+01 + 5.00822567e+01 4.99501599e+01 4.98183922e+01 4.96869529e+01 4.95558415e+01 + 4.94250573e+01 4.92945997e+01 4.91644680e+01 4.90346617e+01 4.89051802e+01 + 4.87760228e+01 4.86471889e+01 4.85186778e+01 4.83904890e+01 4.82626219e+01 + 4.81350757e+01 4.80078499e+01 4.78809439e+01 4.77543570e+01 4.76280885e+01 + 4.75021379e+01 4.73765046e+01 4.72511879e+01 4.71261871e+01 4.70015017e+01 + 4.68771310e+01 4.67530743e+01 4.66293311e+01 4.65059007e+01 4.63827825e+01 + 4.62599758e+01 4.61374800e+01 4.60152945e+01 4.58934186e+01 4.57718517e+01 + 4.56505932e+01 4.55296424e+01 4.54089987e+01 4.52886614e+01 4.51686299e+01 + 4.50489036e+01 4.49294819e+01 4.48103640e+01 4.46915494e+01 4.45730374e+01 + 4.44548274e+01 4.43369187e+01 4.42193108e+01 4.41020029e+01 4.39849944e+01 + 4.38682847e+01 4.37518731e+01 4.36357591e+01 4.35199419e+01 4.34044210e+01 + 4.32891956e+01 4.31742652e+01 4.30596292e+01 4.29452868e+01 4.28312374e+01 + 4.27174804e+01 4.26040152e+01 4.24908411e+01 4.23779575e+01 4.22653637e+01 + 4.21530592e+01 4.20410432e+01 4.19293152e+01 4.18178744e+01 4.17067204e+01 + 4.15958523e+01 4.14852696e+01 4.13749717e+01 4.12649579e+01 4.11552276e+01 + 4.10457802e+01 4.09366150e+01 4.08277313e+01 4.07191286e+01 4.06108062e+01 + 4.05027635e+01 4.03949999e+01 4.02875147e+01 4.01803072e+01 4.00733770e+01 + 3.99667232e+01 3.98603454e+01 3.97542428e+01 3.96484149e+01 3.95428610e+01 + 3.94375804e+01 3.93325727e+01 3.92278370e+01 3.91233729e+01 3.90191797e+01 + 3.89152567e+01 3.88116033e+01 3.87082190e+01 3.86051031e+01 3.85022549e+01 + 3.83996738e+01 3.82973593e+01 3.81953107e+01 3.80935274e+01 3.79920087e+01 + 3.78907541e+01 3.77897629e+01 3.76890345e+01 3.75885683e+01 3.74883637e+01 + 3.73884200e+01 3.72887367e+01 3.71893131e+01 3.70901487e+01 3.69912428e+01 + 3.68925948e+01 3.67942040e+01 3.66960700e+01 3.65981920e+01 3.65005695e+01 + 3.64032018e+01 3.63060884e+01 3.62092287e+01 3.61126219e+01 3.60162677e+01 + 3.59201652e+01 3.58243140e+01 3.57287134e+01 3.56333628e+01 3.55382617e+01 + 3.54434094e+01 3.53488054e+01 3.52544489e+01 3.51603395e+01 3.50664766e+01 + 3.49728595e+01 3.48794877e+01 3.47863605e+01 3.46934774e+01 3.46008377e+01 + 3.45084410e+01 3.44162866e+01 3.43243738e+01 3.42327022e+01 3.41412712e+01 + 3.40500801e+01 3.39591283e+01 3.38684154e+01 3.37779406e+01 3.36877035e+01 + 3.35977034e+01 3.35079398e+01 3.34184120e+01 3.33291196e+01 3.32400618e+01 + 3.31512383e+01 3.30626483e+01 3.29742913e+01 3.28861667e+01 3.27982740e+01 + 3.27106125e+01 3.26231818e+01 3.25359813e+01 3.24490103e+01 3.23622683e+01 + 3.22757548e+01 3.21894691e+01 3.21034108e+01 3.20175792e+01 3.19319738e+01 + 3.18465940e+01 3.17614393e+01 3.16765091e+01 3.15918029e+01 3.15073200e+01 + 3.14230600e+01 3.13390223e+01 3.12552063e+01 3.11716115e+01 3.10882373e+01 + 3.10050832e+01 3.09221486e+01 3.08394330e+01 3.07569358e+01 3.06746565e+01 + 3.05925945e+01 3.05107493e+01 3.04291204e+01 3.03477071e+01 3.02665091e+01 + 3.01855256e+01 3.01047563e+01 3.00242005e+01 2.99438576e+01 2.98637273e+01 + 2.97838089e+01 2.97041019e+01 2.96246058e+01 2.95453200e+01 2.94662440e+01 + 2.93873773e+01 2.93087194e+01 2.92302697e+01 2.91520276e+01 2.90739928e+01 + 2.89961646e+01 2.89185425e+01 2.88411260e+01 2.87639145e+01 2.86869077e+01 + 2.86101048e+01 2.85335055e+01 2.84571092e+01 2.83809154e+01 2.83049236e+01 + 2.82291332e+01 2.81535438e+01 2.80781548e+01 2.80029657e+01 2.79279760e+01 + 2.78531853e+01 2.77785929e+01 2.77041985e+01 2.76300014e+01 2.75560012e+01 + 2.74821974e+01 2.74085895e+01 2.73351769e+01 2.72619592e+01 2.71889360e+01 + 2.71161065e+01 2.70434705e+01 2.69710274e+01 2.68987766e+01 2.68267178e+01 + 2.67548504e+01 2.66831739e+01 2.66116878e+01 2.65403917e+01 2.64692850e+01 + 2.63983673e+01 2.63276380e+01 2.62570968e+01 2.61867431e+01 2.61165764e+01 + 2.60465962e+01 2.59768021e+01 2.59071936e+01 2.58377702e+01 2.57685315e+01 + 2.56994769e+01 2.56306059e+01 2.55619182e+01 2.54934132e+01 2.54250905e+01 + 2.53569496e+01 2.52889900e+01 2.52212112e+01 2.51536129e+01 2.50861944e+01 + 2.50189554e+01 2.49518954e+01 2.48850139e+01 2.48183105e+01 2.47517847e+01 + 2.46854360e+01 2.46192641e+01 2.45532683e+01 2.44874483e+01 2.44218036e+01 + 2.43563338e+01 2.42910384e+01 2.42259169e+01 2.41609689e+01 2.40961940e+01 + 2.40315917e+01 2.39671615e+01 2.39029030e+01 2.38388158e+01 2.37748994e+01 + 2.37111533e+01 2.36475772e+01 2.35841706e+01 2.35209330e+01 2.34578640e+01 + 2.33949631e+01 2.33322300e+01 2.32696641e+01 2.32072651e+01 2.31450326e+01 + 2.30829659e+01 2.30210649e+01 2.29593289e+01 2.28977577e+01 2.28363507e+01 + 2.27751075e+01 2.27140277e+01 2.26531109e+01 2.25923566e+01 2.25317644e+01 + 2.24713339e+01 2.24110647e+01 2.23509564e+01 2.22910085e+01 2.22312206e+01 + 2.21715922e+01 2.21121231e+01 2.20528127e+01 2.19936606e+01 2.19346665e+01 + 2.18758299e+01 2.18171503e+01 2.17586275e+01 2.17002609e+01 2.16420503e+01 + 2.15839950e+01 2.15260948e+01 2.14683493e+01 2.14107580e+01 2.13533205e+01 + 2.12960364e+01 2.12389054e+01 2.11819270e+01 2.11251008e+01 2.10684265e+01 + 2.10119035e+01 2.09555316e+01 2.08993103e+01 2.08432393e+01 2.07873181e+01 + 2.07315463e+01 2.06759236e+01 2.06204495e+01 2.05651237e+01 2.05099458e+01 + 2.04549154e+01 2.04000321e+01 2.03452954e+01 2.02907052e+01 2.02362608e+01 + 2.01819620e+01 2.01278084e+01 2.00737995e+01 2.00199351e+01 1.99662147e+01 + 1.99126380e+01 1.98592045e+01 1.98059139e+01 1.97527658e+01 1.96997599e+01 + 1.96468957e+01 1.95941729e+01 1.95415912e+01 1.94891500e+01 1.94368492e+01 + 1.93846882e+01 1.93326668e+01 1.92807846e+01 1.92290411e+01 1.91774361e+01 + 1.91259691e+01 1.90746398e+01 1.90234479e+01 1.89723930e+01 1.89214746e+01 + 1.88706925e+01 1.88200463e+01 1.87695356e+01 1.87191601e+01 1.86689194e+01 + 1.86188132e+01 1.85688411e+01 1.85190027e+01 1.84692977e+01 1.84197257e+01 + 1.83702865e+01 1.83209796e+01 1.82718046e+01 1.82227613e+01 1.81738493e+01 + 1.81250682e+01 1.80764177e+01 1.80278975e+01 1.79795071e+01 1.79312463e+01 + 1.78831148e+01 1.78351121e+01 1.77872379e+01 1.77394919e+01 1.76918738e+01 + 1.76443832e+01 1.75970197e+01 1.75497831e+01 1.75026730e+01 1.74556891e+01 + 1.74088310e+01 1.73620983e+01 1.73154909e+01 1.72690082e+01 1.72226501e+01 + 1.71764161e+01 1.71303060e+01 1.70843194e+01 1.70384560e+01 1.69927154e+01 + 1.69470973e+01 1.69016015e+01 1.68562275e+01 1.68109751e+01 1.67658439e+01 + 1.67208336e+01 1.66759439e+01 1.66311745e+01 1.65865250e+01 1.65419952e+01 + 1.64975846e+01 1.64532931e+01 1.64091202e+01 1.63650657e+01 1.63211293e+01 + 1.62773106e+01 1.62336093e+01 1.61900251e+01 1.61465577e+01 1.61032068e+01 + 1.60599721e+01 1.60168532e+01 1.59738499e+01 1.59309619e+01 1.58881887e+01 + 1.58455303e+01 1.58029861e+01 1.57605560e+01 1.57182397e+01 1.56760367e+01 + 1.56339469e+01 1.55919699e+01 1.55501054e+01 1.55083531e+01 1.54667128e+01 + 1.54251840e+01 1.53837666e+01 1.53424603e+01 1.53012646e+01 1.52601794e+01 + 1.52192044e+01 1.51783392e+01 1.51375835e+01 1.50969371e+01 1.50563997e+01 + 1.50159710e+01 1.49756507e+01 1.49354385e+01 1.48953341e+01 1.48553372e+01 + 1.48154476e+01 1.47756649e+01 1.47359889e+01 1.46964193e+01 1.46569558e+01 + 1.46175982e+01 1.45783460e+01 1.45391992e+01 1.45001573e+01 1.44612201e+01 + 1.44221013e+01 1.43823077e+01 1.43418365e+01 1.43006939e+01 1.42588863e+01 + 1.42164199e+01 1.41733013e+01 1.41295367e+01 1.40851327e+01 1.40400959e+01 + 1.39944327e+01 1.39481499e+01 1.39012541e+01 1.38537520e+01 1.38056503e+01 + 1.37569558e+01 1.37076754e+01 1.36578159e+01 1.36073842e+01 1.35563871e+01 + 1.35048318e+01 1.34527252e+01 1.34000743e+01 1.33468861e+01 1.32931679e+01 + 1.32389266e+01 1.31841694e+01 1.31289036e+01 1.30731363e+01 1.30168747e+01 + 1.29601261e+01 1.29028978e+01 1.28451971e+01 1.27870312e+01 1.27284076e+01 + 1.26693335e+01 1.26098164e+01 1.25498637e+01 1.24894827e+01 1.24286808e+01 + 1.23674656e+01 1.23058445e+01 1.22438250e+01 1.21814144e+01 1.21186203e+01 + 1.20554503e+01 1.19919118e+01 1.19280122e+01 1.18637593e+01 1.17991604e+01 + 1.17342231e+01 1.16689549e+01 1.16033634e+01 1.15374562e+01 1.14712406e+01 + 1.14047244e+01 1.13379151e+01 1.12708201e+01 1.12034471e+01 1.11358035e+01 + 1.10678969e+01 1.09997348e+01 1.09313248e+01 1.08626743e+01 1.07937909e+01 + 1.07246820e+01 1.06553552e+01 1.05858180e+01 1.05160777e+01 1.04461419e+01 + 1.03760180e+01 1.03057134e+01 1.02352356e+01 1.01645919e+01 1.00937898e+01 + 1.00228366e+01 9.95173971e+00 9.88050638e+00 9.80914398e+00 9.73765979e+00 + 9.66606109e+00 9.59435515e+00 9.52254919e+00 9.45065043e+00 9.37866605e+00 + 9.30660322e+00 9.23446907e+00 9.16227073e+00 9.09001528e+00 9.01770977e+00 + 8.94536125e+00 8.87297672e+00 8.80056316e+00 8.72812750e+00 8.65567668e+00 + 8.58321756e+00 8.51075702e+00 8.43830186e+00 8.36585889e+00 8.29343485e+00 + 8.22103646e+00 8.14867042e+00 8.07634337e+00 8.00406193e+00 7.93183268e+00 + 7.85966216e+00 7.78755688e+00 7.71552329e+00 7.64356784e+00 7.57169690e+00 + 7.49991683e+00 7.42823393e+00 7.35665448e+00 7.28518468e+00 7.21383074e+00 + 7.14259879e+00 7.07149492e+00 7.00052520e+00 6.92969562e+00 6.85901217e+00 + 6.78848076e+00 6.71810726e+00 6.64789751e+00 6.57785729e+00 6.50799234e+00 + 6.43830834e+00 6.36881094e+00 6.29950573e+00 6.23039827e+00 6.16149404e+00 + 6.09279849e+00 6.02431702e+00 5.95605499e+00 5.88801768e+00 5.82021035e+00 + 5.75263820e+00 5.68530636e+00 5.61821994e+00 5.55138397e+00 5.48480344e+00 + 5.41848329e+00 5.35242840e+00 5.28664361e+00 5.22113368e+00 5.15590335e+00 + 5.09095728e+00 5.02630009e+00 4.96193633e+00 4.89787051e+00 4.83410709e+00 + 4.77065045e+00 4.70750493e+00 4.64467483e+00 4.58216436e+00 4.51997769e+00 + 4.45811895e+00 4.39659218e+00 4.33540140e+00 4.27455054e+00 4.21404350e+00 + 4.15388409e+00 4.09407611e+00 4.03462325e+00 3.97552918e+00 3.91679750e+00 + 3.85843175e+00 3.80043541e+00 3.74281191e+00 3.68556461e+00 3.62869683e+00 + 3.57221182e+00 3.51611277e+00 3.46040280e+00 3.40508500e+00 3.35016239e+00 + 3.29563791e+00 3.24151448e+00 3.18779492e+00 3.13448202e+00 3.08157850e+00 + 3.02908703e+00 2.97701021e+00 2.92535059e+00 2.87411065e+00 2.82329282e+00 + 2.77289947e+00 2.72293291e+00 2.67339540e+00 2.62428912e+00 2.57561621e+00 + 2.52737875e+00 2.47957875e+00 2.43221817e+00 2.38529892e+00 2.33882283e+00 + 2.29279169e+00 2.24720723e+00 2.20207111e+00 2.15738494e+00 2.11315028e+00 + 2.06936862e+00 2.02604139e+00 1.98316998e+00 1.94075571e+00 1.89879985e+00 + 1.85730359e+00 1.81626811e+00 1.77569447e+00 1.73558374e+00 1.69593688e+00 + 1.65675483e+00 1.61803846e+00 1.57978857e+00 1.54200593e+00 1.50469123e+00 + 1.46784514e+00 1.43146824e+00 1.39556106e+00 1.36012410e+00 1.32515778e+00 + 1.29066248e+00 1.25663851e+00 1.22308616e+00 1.19000563e+00 1.15739708e+00 + 1.12526062e+00 1.09359631e+00 1.06240415e+00 1.03168410e+00 1.00143606e+00 + 9.71659862e-01 9.42355321e-01 9.13522177e-01 8.85160127e-01 8.57268818e-01 + 8.29847844e-01 8.02896752e-01 7.76415039e-01 7.50402153e-01 7.24857492e-01 + 6.99780408e-01 6.75170202e-01 6.51026130e-01 6.27347399e-01 6.04133170e-01 + 5.81382555e-01 5.59094623e-01 5.37268394e-01 5.15902844e-01 4.94996902e-01 + 4.74549455e-01 4.54559343e-01 4.35025362e-01 4.15946264e-01 3.97320759e-01 + 3.79147513e-01 3.61425148e-01 3.44152245e-01 3.27327344e-01 3.10948942e-01 + 2.95015494e-01 2.79525416e-01 2.64477082e-01 2.49868829e-01 2.35698950e-01 + 2.21965702e-01 2.08667302e-01 1.95801929e-01 1.83367724e-01 1.71362791e-01 + 1.59785195e-01 1.48632967e-01 1.37904098e-01 1.27596548e-01 1.17708236e-01 + 1.08237051e-01 9.91808451e-02 9.05374353e-02 8.23046065e-02 7.44801094e-02 + 6.70616623e-02 6.00469508e-02 5.34336286e-02 4.72193177e-02 4.14016091e-02 + 3.59780630e-02 3.09462095e-02 2.63035487e-02 2.20475516e-02 1.81756600e-02 + 1.46852874e-02 1.15738194e-02 8.83861364e-03 6.47700104e-03 4.48628566e-03 + 2.86374536e-03 1.60663225e-03 7.12173109e-04 1.77569856e-04 0.00000000e+00 + 1.65968286e-01 1.65968286e-01 1.67501954e-01 1.69381845e-01 1.71282685e-01 + 1.73204702e-01 1.75148130e-01 1.77113201e-01 1.79100155e-01 1.81109230e-01 + 1.83140669e-01 1.85194716e-01 1.87271619e-01 1.89371627e-01 1.91494994e-01 + 1.93641974e-01 1.95812825e-01 1.98007809e-01 2.00227187e-01 2.02471227e-01 + 2.04740197e-01 2.07034369e-01 2.09354018e-01 2.11699420e-01 2.14070856e-01 + 2.16468609e-01 2.18892965e-01 2.21344213e-01 2.23822646e-01 2.26328558e-01 + 2.28862247e-01 2.31424015e-01 2.34014167e-01 2.36633008e-01 2.39280850e-01 + 2.41958008e-01 2.44664796e-01 2.47401537e-01 2.50168554e-01 2.52966173e-01 + 2.55794724e-01 2.58654541e-01 2.61545961e-01 2.64469325e-01 2.67424975e-01 + 2.70413260e-01 2.73434529e-01 2.76489138e-01 2.79577445e-01 2.82699810e-01 + 2.85856598e-01 2.89048180e-01 2.92274926e-01 2.95537214e-01 2.98835423e-01 + 3.02169937e-01 3.05541143e-01 3.08949433e-01 3.12395202e-01 3.15878849e-01 + 3.19400778e-01 3.22961395e-01 3.26561111e-01 3.30200343e-01 3.33879508e-01 + 3.37599030e-01 3.41359337e-01 3.45160859e-01 3.49004034e-01 3.52889300e-01 + 3.56817102e-01 3.60787889e-01 3.64802114e-01 3.68860232e-01 3.72962707e-01 + 3.77110004e-01 3.81302594e-01 3.85540951e-01 3.89825554e-01 3.94156889e-01 + 3.98535442e-01 4.02961708e-01 4.07436184e-01 4.11959373e-01 4.16531781e-01 + 4.21153920e-01 4.25826307e-01 4.30549463e-01 4.35323915e-01 4.40150193e-01 + 4.45028834e-01 4.49960377e-01 4.54945369e-01 4.59984360e-01 4.65077907e-01 + 4.70226569e-01 4.75430912e-01 4.80691507e-01 4.86008931e-01 4.91383763e-01 + 4.96816591e-01 5.02308005e-01 5.07858602e-01 5.13468983e-01 5.19139757e-01 + 5.24871535e-01 5.30664934e-01 5.36520578e-01 5.42439096e-01 5.48421119e-01 + 5.54467289e-01 5.60578249e-01 5.66754649e-01 5.72997145e-01 5.79306397e-01 + 5.85683073e-01 5.92127843e-01 5.98641385e-01 6.05224382e-01 6.11877524e-01 + 6.18601503e-01 6.25397020e-01 6.32264781e-01 6.39205495e-01 6.46219881e-01 + 6.53308659e-01 6.60472559e-01 6.67712313e-01 6.75028662e-01 6.82422349e-01 + 6.89894127e-01 6.97444750e-01 7.05074982e-01 7.12785590e-01 7.20577348e-01 + 7.28451035e-01 7.36407436e-01 7.44447341e-01 7.52571547e-01 7.60780856e-01 + 7.69076076e-01 7.77458020e-01 7.85927507e-01 7.94485362e-01 8.03132416e-01 + 8.11869504e-01 8.20697469e-01 8.29617157e-01 8.38629421e-01 8.47735121e-01 + 8.56935119e-01 8.66230285e-01 8.75621495e-01 8.85109628e-01 8.94695572e-01 + 9.04380216e-01 9.14164458e-01 9.24049199e-01 9.34035347e-01 9.44123815e-01 + 9.54315519e-01 9.64611384e-01 9.75012336e-01 9.85519310e-01 9.96133242e-01 + 1.00685508e+00 1.01768576e+00 1.02862625e+00 1.03967749e+00 1.05084046e+00 + 1.06211612e+00 1.07350544e+00 1.08500939e+00 1.09662896e+00 1.10836513e+00 + 1.12021890e+00 1.13219124e+00 1.14428316e+00 1.15649566e+00 1.16882975e+00 + 1.18128643e+00 1.19386672e+00 1.20657163e+00 1.21940218e+00 1.23235939e+00 + 1.24544429e+00 1.25865790e+00 1.27200127e+00 1.28547542e+00 1.29908139e+00 + 1.31282021e+00 1.32669294e+00 1.34070062e+00 1.35484429e+00 1.36912500e+00 + 1.38354380e+00 1.39810174e+00 1.41279987e+00 1.42763926e+00 1.44262095e+00 + 1.45774600e+00 1.47301546e+00 1.48843041e+00 1.50399188e+00 1.51970095e+00 + 1.53555866e+00 1.55156608e+00 1.56772426e+00 1.58403426e+00 1.60049713e+00 + 1.61711393e+00 1.63388570e+00 1.65081351e+00 1.66789840e+00 1.68514141e+00 + 1.70254358e+00 1.72010597e+00 1.73782961e+00 1.75571552e+00 1.77376475e+00 + 1.79197832e+00 1.81035726e+00 1.82890257e+00 1.84761528e+00 1.86649640e+00 + 1.88554692e+00 1.90476784e+00 1.92416016e+00 1.94372486e+00 1.96346292e+00 + 1.98337531e+00 2.00346299e+00 2.02372692e+00 2.04416804e+00 2.06478730e+00 + 2.08558562e+00 2.10656392e+00 2.12772312e+00 2.14906411e+00 2.17058779e+00 + 2.19229503e+00 2.21418670e+00 2.23626366e+00 2.25852674e+00 2.28097679e+00 + 2.30361461e+00 2.32644102e+00 2.34945680e+00 2.37266272e+00 2.39605955e+00 + 2.41964804e+00 2.44342891e+00 2.46740287e+00 2.49157062e+00 2.51593285e+00 + 2.54049020e+00 2.56524333e+00 2.59019286e+00 2.61533938e+00 2.64068350e+00 + 2.66622577e+00 2.69196673e+00 2.71790690e+00 2.74404680e+00 2.77038689e+00 + 2.79692763e+00 2.82366945e+00 2.85061275e+00 2.87775793e+00 2.90510534e+00 + 2.93265530e+00 2.96040813e+00 2.98836411e+00 3.01652347e+00 3.04488646e+00 + 3.07345326e+00 3.10222404e+00 3.13119894e+00 3.16037805e+00 3.18976147e+00 + 3.21934922e+00 3.24914133e+00 3.27913778e+00 3.30933850e+00 3.33974343e+00 + 3.37035242e+00 3.40116534e+00 3.43218198e+00 3.46340213e+00 3.49482552e+00 + 3.52645185e+00 3.55828079e+00 3.59031197e+00 3.62254496e+00 3.65497933e+00 + 3.68761457e+00 3.72045016e+00 3.75348554e+00 3.78672008e+00 3.82015313e+00 + 3.85378401e+00 3.88761196e+00 3.92163622e+00 3.95585596e+00 3.99027032e+00 + 4.02487837e+00 4.05967918e+00 4.09467173e+00 4.12985498e+00 4.16522784e+00 + 4.20078917e+00 4.23653779e+00 4.27247247e+00 4.30859194e+00 4.34489485e+00 + 4.38137985e+00 4.41804551e+00 4.45489037e+00 4.49191289e+00 4.52911153e+00 + 4.56648465e+00 4.60403061e+00 4.64174767e+00 4.67963408e+00 4.71768803e+00 + 4.75590765e+00 4.79429103e+00 4.83283620e+00 4.87154114e+00 4.91040381e+00 + 4.94942207e+00 4.98859378e+00 5.02791670e+00 5.06738858e+00 5.10700710e+00 + 5.14676990e+00 5.18667457e+00 5.22671863e+00 5.26689957e+00 5.30721483e+00 + 5.34766180e+00 5.38823781e+00 5.42894016e+00 5.46976609e+00 5.51071278e+00 + 5.55177738e+00 5.59295700e+00 5.63424868e+00 5.67564943e+00 5.71715620e+00 + 5.75876591e+00 5.80047542e+00 5.84228156e+00 5.88418111e+00 5.92617080e+00 + 5.96824732e+00 6.01040733e+00 6.05264743e+00 6.09496419e+00 6.13735413e+00 + 6.17981376e+00 6.22233950e+00 6.26492779e+00 6.30757498e+00 6.35027743e+00 + 6.39303142e+00 6.43583324e+00 6.47867912e+00 6.52156525e+00 6.56448781e+00 + 6.60744295e+00 6.65042676e+00 6.69343534e+00 6.73646474e+00 6.77951098e+00 + 6.82257007e+00 6.86563800e+00 6.90871071e+00 6.95178414e+00 6.99485420e+00 + 7.03791679e+00 7.08096779e+00 7.12400304e+00 7.16701841e+00 7.21000970e+00 + 7.25297275e+00 7.29590336e+00 7.33879731e+00 7.38165039e+00 7.42445838e+00 + 7.46721705e+00 7.50992216e+00 7.55256947e+00 7.59515474e+00 7.63767373e+00 + 7.68012218e+00 7.72249588e+00 7.76479056e+00 7.80700201e+00 7.84912598e+00 + 7.89115827e+00 7.93309466e+00 7.97493094e+00 8.01666293e+00 8.05828645e+00 + 8.09979734e+00 8.14119143e+00 8.18246462e+00 8.22361278e+00 8.26463181e+00 + 8.30551766e+00 8.34626626e+00 8.38687359e+00 8.42733566e+00 8.46764848e+00 + 8.50780811e+00 8.54781063e+00 8.58765216e+00 8.62732884e+00 8.66683685e+00 + 8.70617239e+00 8.74533171e+00 8.78431109e+00 8.82310687e+00 8.86171538e+00 + 8.90013304e+00 8.93835627e+00 8.97638157e+00 9.01420545e+00 9.05182449e+00 + 9.08923530e+00 9.12643453e+00 9.16341889e+00 9.20018514e+00 9.23673009e+00 + 9.27305057e+00 9.30914350e+00 9.34500584e+00 9.38063458e+00 9.41602679e+00 + 9.45117958e+00 9.48609012e+00 9.52075564e+00 9.55517340e+00 9.58934075e+00 + 9.62325508e+00 9.65691384e+00 9.69031453e+00 9.72345472e+00 9.75633204e+00 + 9.78894416e+00 9.82128884e+00 9.85336387e+00 9.88516712e+00 9.91669651e+00 + 9.94795003e+00 9.97892573e+00 1.00096217e+01 1.00400361e+01 1.00701673e+01 + 1.01000134e+01 1.01295728e+01 1.01588440e+01 1.01878254e+01 1.02165155e+01 + 1.02449131e+01 1.02730167e+01 1.03008250e+01 1.03283369e+01 1.03555512e+01 + 1.03824668e+01 1.04090827e+01 1.04353979e+01 1.04614115e+01 1.04871227e+01 + 1.05125307e+01 1.05376347e+01 1.05624341e+01 1.05869282e+01 1.06111166e+01 + 1.06349988e+01 1.06585742e+01 1.06818426e+01 1.07048035e+01 1.07274568e+01 + 1.07498023e+01 1.07718397e+01 1.07935690e+01 1.08149902e+01 1.08361032e+01 + 1.08569082e+01 1.08774051e+01 1.08975943e+01 1.09174759e+01 1.09370501e+01 + 1.09563174e+01 1.09752780e+01 1.09939325e+01 1.10122811e+01 1.10303246e+01 + 1.10480633e+01 1.10654980e+01 1.10826292e+01 1.10994577e+01 1.11159841e+01 + 1.11322093e+01 1.11481341e+01 1.11637593e+01 1.11790858e+01 1.11941146e+01 + 1.12088466e+01 1.12232829e+01 1.12374245e+01 1.12512725e+01 1.12648279e+01 + 1.12780921e+01 1.12910660e+01 1.13037511e+01 1.13161484e+01 1.13282594e+01 + 1.13400853e+01 1.13516274e+01 1.13628872e+01 1.13738660e+01 1.13845653e+01 + 1.13949865e+01 1.14051310e+01 1.14150005e+01 1.14245965e+01 1.14339203e+01 + 1.14429738e+01 1.14517584e+01 1.14602758e+01 1.14685276e+01 1.14765154e+01 + 1.14842410e+01 1.14917060e+01 1.14989121e+01 1.15058611e+01 1.15125547e+01 + 1.15189947e+01 1.15251829e+01 1.15311209e+01 1.15368107e+01 1.15422540e+01 + 1.15474527e+01 1.15524086e+01 1.15571235e+01 1.15615993e+01 1.15658378e+01 + 1.15698410e+01 1.15736107e+01 1.15771488e+01 1.15804572e+01 1.15835378e+01 + 1.15863925e+01 1.15890232e+01 1.15914318e+01 1.15936202e+01 1.15955905e+01 + 1.15973444e+01 1.15988840e+01 1.16002111e+01 1.16013277e+01 1.16022357e+01 + 1.16029371e+01 1.16034338e+01 1.16037276e+01 1.16038207e+01 1.16037148e+01 + 1.16034120e+01 1.16029141e+01 1.16022230e+01 1.16013408e+01 1.16002692e+01 + 1.15990103e+01 1.15975659e+01 1.15959380e+01 1.15941284e+01 1.15921390e+01 + 1.15899718e+01 1.15876286e+01 1.15851113e+01 1.15824217e+01 1.15795618e+01 + 1.15765334e+01 1.15733384e+01 1.15699786e+01 1.15664558e+01 1.15627718e+01 + 1.15589286e+01 1.15549279e+01 1.15507715e+01 1.15464612e+01 1.15419987e+01 + 1.15373860e+01 1.15326247e+01 1.15277166e+01 1.15226635e+01 1.15174671e+01 + 1.15121291e+01 1.15066512e+01 1.15010352e+01 1.14952827e+01 1.14893955e+01 + 1.14833752e+01 1.14772235e+01 1.14709421e+01 1.14645325e+01 1.14579965e+01 + 1.14513356e+01 1.14445514e+01 1.14376456e+01 1.14306198e+01 1.14234754e+01 + 1.14162142e+01 1.14088375e+01 1.14013471e+01 1.13937443e+01 1.13860308e+01 + 1.13782080e+01 1.13702775e+01 1.13622406e+01 1.13540989e+01 1.13458538e+01 + 1.13375068e+01 1.13290592e+01 1.13205127e+01 1.13118684e+01 1.13031278e+01 + 1.12942924e+01 1.12853635e+01 1.12763423e+01 1.12672304e+01 1.12580290e+01 + 1.12487394e+01 1.12393630e+01 1.12299010e+01 1.12203547e+01 1.12107255e+01 + 1.12010145e+01 1.11912231e+01 1.11813524e+01 1.11714036e+01 1.11613781e+01 + 1.11512770e+01 1.11411014e+01 1.11308526e+01 1.11205317e+01 1.11101399e+01 + 1.10996784e+01 1.10891481e+01 1.10785504e+01 1.10678862e+01 1.10571567e+01 + 1.10463630e+01 1.10355060e+01 1.10245870e+01 1.10136069e+01 1.10025668e+01 + 1.09914677e+01 1.09803106e+01 1.09690966e+01 1.09578266e+01 1.09465015e+01 + 1.09351225e+01 1.09236904e+01 1.09122062e+01 1.09006708e+01 1.08890852e+01 + 1.08774503e+01 1.08657669e+01 1.08540361e+01 1.08422586e+01 1.08304354e+01 + 1.08185673e+01 1.08066552e+01 1.07947000e+01 1.07827024e+01 1.07706633e+01 + 1.07585835e+01 1.07464638e+01 1.07343051e+01 1.07221081e+01 1.07098735e+01 + 1.06976023e+01 1.06852951e+01 1.06729526e+01 1.06605757e+01 1.06481651e+01 + 1.06357214e+01 1.06232455e+01 1.06107379e+01 1.05981995e+01 1.05856309e+01 + 1.05730327e+01 1.05604057e+01 1.05477506e+01 1.05350679e+01 1.05223583e+01 + 1.05096226e+01 1.04968612e+01 1.04840748e+01 1.04712641e+01 1.04584297e+01 + 1.04455721e+01 1.04326919e+01 1.04197898e+01 1.04068663e+01 1.03939220e+01 + 1.03809575e+01 1.03679732e+01 1.03549698e+01 1.03419478e+01 1.03289077e+01 + 1.03158501e+01 1.03027754e+01 1.02896843e+01 1.02765771e+01 1.02634544e+01 + 1.02503168e+01 1.02371646e+01 1.02239984e+01 1.02108186e+01 1.01976257e+01 + 1.01844202e+01 1.01712025e+01 1.01579730e+01 1.01447323e+01 1.01314808e+01 + 1.01182188e+01 1.01049468e+01 1.00916652e+01 1.00783745e+01 1.00650751e+01 + 1.00517673e+01 1.00384515e+01 1.00251282e+01 1.00117977e+01 9.99846039e+00 + 9.98511668e+00 9.97176692e+00 9.95841148e+00 9.94505072e+00 9.93168499e+00 + 9.91831464e+00 9.90494002e+00 9.89156146e+00 9.87817931e+00 9.86479389e+00 + 9.85140552e+00 9.83801454e+00 9.82462125e+00 9.81122596e+00 9.79782899e+00 + 9.78443064e+00 9.77103121e+00 9.75763099e+00 9.74423026e+00 9.73082933e+00 + 9.71742846e+00 9.70402794e+00 9.69062803e+00 9.67722902e+00 9.66383116e+00 + 9.65043471e+00 9.63703994e+00 9.62364710e+00 9.61025643e+00 9.59686819e+00 + 9.58348261e+00 9.57009994e+00 9.55672041e+00 9.54334426e+00 9.52997170e+00 + 9.51660298e+00 9.50323830e+00 9.48987788e+00 9.47652195e+00 9.46317071e+00 + 9.44982438e+00 9.43648315e+00 9.42314723e+00 9.40981681e+00 9.39649211e+00 + 9.38317329e+00 9.36986057e+00 9.35655411e+00 9.34325412e+00 9.32996076e+00 + 9.31667422e+00 9.30339467e+00 9.29012228e+00 9.27685723e+00 9.26359969e+00 + 9.25034980e+00 9.23710775e+00 9.22387369e+00 9.21064777e+00 9.19743015e+00 + 9.18422098e+00 9.17102040e+00 9.15782858e+00 9.14464565e+00 9.13147175e+00 + 9.11830703e+00 9.10515161e+00 9.09200565e+00 9.07886926e+00 9.06574258e+00 + 9.05262574e+00 9.03951887e+00 9.02642209e+00 9.01333552e+00 9.00025928e+00 + 8.98719349e+00 8.97413827e+00 8.96109373e+00 8.94805998e+00 8.93503713e+00 + 8.92202530e+00 8.90902459e+00 8.89603510e+00 8.88305693e+00 8.87009019e+00 + 8.85713498e+00 8.84419139e+00 8.83125952e+00 8.81833946e+00 8.80543131e+00 + 8.79253516e+00 8.77965109e+00 8.76677920e+00 8.75391957e+00 8.74107228e+00 + 8.72823741e+00 8.71541505e+00 8.70260529e+00 8.68980818e+00 8.67702382e+00 + 8.66425228e+00 8.65149363e+00 8.63874794e+00 8.62601529e+00 8.61329575e+00 + 8.60058938e+00 8.58789625e+00 8.57521642e+00 8.56254997e+00 8.54989695e+00 + 8.53725743e+00 8.52463147e+00 8.51201913e+00 8.49942046e+00 8.48683552e+00 + 8.47426437e+00 8.46170706e+00 8.44916365e+00 8.43663420e+00 8.42411874e+00 + 8.41161733e+00 8.39913003e+00 8.38665687e+00 8.37419791e+00 8.36175319e+00 + 8.34932276e+00 8.33690667e+00 8.32450494e+00 8.31211764e+00 8.29974479e+00 + 8.28738645e+00 8.27504264e+00 8.26271341e+00 8.25039879e+00 8.23809882e+00 + 8.22581354e+00 8.21354298e+00 8.20128718e+00 8.18904617e+00 8.17681998e+00 + 8.16460864e+00 8.15241219e+00 8.14023065e+00 8.12806405e+00 8.11591243e+00 + 8.10377580e+00 8.09165420e+00 8.07954766e+00 8.06745619e+00 8.05537982e+00 + 8.04331859e+00 8.03127250e+00 8.01924158e+00 8.00722586e+00 7.99522536e+00 + 7.98324009e+00 7.97127008e+00 7.95931535e+00 7.94737591e+00 7.93545178e+00 + 7.92354299e+00 7.91164954e+00 7.89977146e+00 7.88790876e+00 7.87606145e+00 + 7.86422956e+00 7.85241308e+00 7.84061205e+00 7.82882646e+00 7.81705634e+00 + 7.80530170e+00 7.79356254e+00 7.78183887e+00 7.77013072e+00 7.75843808e+00 + 7.74676097e+00 7.73509939e+00 7.72345336e+00 7.71182288e+00 7.70020796e+00 + 7.68860861e+00 7.67702484e+00 7.66545664e+00 7.65390403e+00 7.64236701e+00 + 7.63084558e+00 7.61933976e+00 7.60784954e+00 7.59637493e+00 7.58491593e+00 + 7.57347255e+00 7.56204478e+00 7.55063263e+00 7.53923611e+00 7.52785521e+00 + 7.51648993e+00 7.50514027e+00 7.49380625e+00 7.48248784e+00 7.47118506e+00 + 7.45989791e+00 7.44862638e+00 7.43737047e+00 7.42613019e+00 7.41490552e+00 + 7.40369647e+00 7.39250303e+00 7.38132520e+00 7.37016298e+00 7.35901637e+00 + 7.34788536e+00 7.33676995e+00 7.32567012e+00 7.31458589e+00 7.30351724e+00 + 7.29246417e+00 7.28142668e+00 7.27040475e+00 7.25939839e+00 7.24840758e+00 + 7.23743232e+00 7.22647260e+00 7.21552843e+00 7.20459978e+00 7.19368666e+00 + 7.18278905e+00 7.17190695e+00 7.16104035e+00 7.15018924e+00 7.13935361e+00 + 7.12853346e+00 7.11772878e+00 7.10693956e+00 7.09616578e+00 7.08540745e+00 + 7.07466454e+00 7.06393706e+00 7.05322498e+00 7.04252831e+00 7.03184703e+00 + 7.02118113e+00 7.01053060e+00 6.99989543e+00 6.98927560e+00 6.97867112e+00 + 6.96808196e+00 6.95750811e+00 6.94694957e+00 6.93640632e+00 6.92587836e+00 + 6.91536566e+00 6.90486821e+00 6.89438602e+00 6.88391905e+00 6.87346730e+00 + 6.86303076e+00 6.85260942e+00 6.84220325e+00 6.83181225e+00 6.82143641e+00 + 6.81107571e+00 6.80073014e+00 6.79039969e+00 6.78008434e+00 6.76978407e+00 + 6.75949888e+00 6.74922875e+00 6.73897367e+00 6.72873362e+00 6.71850858e+00 + 6.70829855e+00 6.69810351e+00 6.68792344e+00 6.67775834e+00 6.66760818e+00 + 6.65747295e+00 6.64735264e+00 6.63724722e+00 6.62715669e+00 6.61708104e+00 + 6.60702024e+00 6.59697427e+00 6.58694314e+00 6.57692681e+00 6.56692528e+00 + 6.55693852e+00 6.54696653e+00 6.53700928e+00 6.52706676e+00 6.51713896e+00 + 6.50722585e+00 6.49732743e+00 6.48744368e+00 6.47757458e+00 6.46772011e+00 + 6.45788025e+00 6.44805500e+00 6.43824434e+00 6.42844824e+00 6.41866669e+00 + 6.40889968e+00 6.39914719e+00 6.38940920e+00 6.37968570e+00 6.36997666e+00 + 6.36028208e+00 6.35060193e+00 6.34093620e+00 6.33128487e+00 6.32164792e+00 + 6.31202534e+00 6.30241711e+00 6.29282321e+00 6.28324363e+00 6.27367834e+00 + 6.26412734e+00 6.25459059e+00 6.24506810e+00 6.23555983e+00 6.22606577e+00 + 6.21658591e+00 6.20712022e+00 6.19766869e+00 6.18823131e+00 6.17880804e+00 + 6.16939888e+00 6.16000381e+00 6.15062281e+00 6.14125587e+00 6.13190295e+00 + 6.12256406e+00 6.11323916e+00 6.10392825e+00 6.09463130e+00 6.08534829e+00 + 6.07607921e+00 6.06682405e+00 6.05758277e+00 6.04835537e+00 6.03914183e+00 + 6.02994212e+00 6.02075624e+00 6.01158416e+00 6.00242586e+00 5.99328133e+00 + 5.98415054e+00 5.97503349e+00 5.96593015e+00 5.95684050e+00 5.94776453e+00 + 5.93870221e+00 5.92965354e+00 5.92061849e+00 5.91159704e+00 5.90258917e+00 + 5.89359488e+00 5.88461413e+00 5.87564691e+00 5.86669320e+00 5.85775299e+00 + 5.84882626e+00 5.83991298e+00 5.83101314e+00 5.82212673e+00 5.81325371e+00 + 5.80439408e+00 5.79554782e+00 5.78671491e+00 5.77789533e+00 5.76908906e+00 + 5.76029608e+00 5.75151638e+00 5.74274993e+00 5.73399672e+00 5.72525674e+00 + 5.71652996e+00 5.70781636e+00 5.69911593e+00 5.69042864e+00 5.68175449e+00 + 5.67309344e+00 5.66444549e+00 5.65581061e+00 5.64718879e+00 5.63858001e+00 + 5.62998425e+00 5.62140149e+00 5.61283171e+00 5.60427490e+00 5.59573104e+00 + 5.58720011e+00 5.57868208e+00 5.57017695e+00 5.56168469e+00 5.55320529e+00 + 5.54473873e+00 5.53628499e+00 5.52784405e+00 5.51941589e+00 5.51100050e+00 + 5.50259785e+00 5.49420794e+00 5.48583073e+00 5.47746622e+00 5.46911438e+00 + 5.46077521e+00 5.45244866e+00 5.44413474e+00 5.43583343e+00 5.42754469e+00 + 5.41926853e+00 5.41100491e+00 5.40275382e+00 5.39451524e+00 5.38628916e+00 + 5.37807556e+00 5.36987441e+00 5.36168571e+00 5.35350943e+00 5.34534555e+00 + 5.33719406e+00 5.32905493e+00 5.32092816e+00 5.31281372e+00 5.30471160e+00 + 5.29662178e+00 5.28854423e+00 5.28047895e+00 5.27242591e+00 5.26438509e+00 + 5.25635649e+00 5.24834007e+00 5.24033583e+00 5.23234374e+00 5.22436379e+00 + 5.21639596e+00 5.20844023e+00 5.20049659e+00 5.19256501e+00 5.18464548e+00 + 5.17673799e+00 5.16884250e+00 5.16095902e+00 5.15308751e+00 5.14522796e+00 + 5.13738036e+00 5.12954468e+00 5.12172091e+00 5.11390904e+00 5.10610903e+00 + 5.09832088e+00 5.09054457e+00 5.08278008e+00 5.07502740e+00 5.06728650e+00 + 5.05955737e+00 5.05184000e+00 5.04413435e+00 5.03644043e+00 5.02875820e+00 + 5.02108766e+00 5.01342878e+00 5.00578155e+00 4.99814595e+00 4.99052196e+00 + 4.98290957e+00 4.97530876e+00 4.96771951e+00 4.96014181e+00 4.95257563e+00 + 4.94502096e+00 4.93747779e+00 4.92994610e+00 4.92242586e+00 4.91491707e+00 + 4.90741970e+00 4.89993374e+00 4.89245917e+00 4.88499598e+00 4.87754414e+00 + 4.87010365e+00 4.86267447e+00 4.85525661e+00 4.84785004e+00 4.84045474e+00 + 4.83307069e+00 4.82569789e+00 4.81833631e+00 4.81098593e+00 4.80364675e+00 + 4.79631873e+00 4.78900188e+00 4.78169616e+00 4.77440157e+00 4.76711808e+00 + 4.75984568e+00 4.75258436e+00 4.74533409e+00 4.73809486e+00 4.73086666e+00 + 4.72364946e+00 4.71644325e+00 4.70924802e+00 4.70206374e+00 4.69489041e+00 + 4.68772800e+00 4.68057649e+00 4.67343589e+00 4.66630615e+00 4.65918728e+00 + 4.65207925e+00 4.64498204e+00 4.63789565e+00 4.63082005e+00 4.62375523e+00 + 4.61670117e+00 4.60965786e+00 4.60262527e+00 4.59560340e+00 4.58859223e+00 + 4.58159174e+00 4.57460191e+00 4.56762274e+00 4.56065419e+00 4.55369627e+00 + 4.54674894e+00 4.53981220e+00 4.53288603e+00 4.52597042e+00 4.51906534e+00 + 4.51217078e+00 4.50528673e+00 4.49841317e+00 4.49155008e+00 4.48469745e+00 + 4.47785527e+00 4.47102351e+00 4.46420216e+00 4.45739121e+00 4.45059063e+00 + 4.44380043e+00 4.43702057e+00 4.43025104e+00 4.42349183e+00 4.41674292e+00 + 4.41000430e+00 4.40327595e+00 4.39655786e+00 4.38985000e+00 4.38315237e+00 + 4.37646495e+00 4.36978772e+00 4.36312067e+00 4.35646378e+00 4.34981100e+00 + 4.34313007e+00 4.33641641e+00 4.32967019e+00 4.32289160e+00 4.31608082e+00 + 4.30923804e+00 4.30236343e+00 4.29545719e+00 4.28851949e+00 4.28155052e+00 + 4.27455047e+00 4.26751952e+00 4.26045786e+00 4.25336567e+00 4.24624314e+00 + 4.23909045e+00 4.23190779e+00 4.22469535e+00 4.21745331e+00 4.21018186e+00 + 4.20288119e+00 4.19555148e+00 4.18819292e+00 4.18080570e+00 4.17339000e+00 + 4.16594602e+00 4.15847393e+00 4.15097394e+00 4.14344622e+00 4.13589097e+00 + 4.12830837e+00 4.12069861e+00 4.11306189e+00 4.10539838e+00 4.09770828e+00 + 4.08999178e+00 4.08224906e+00 4.07448032e+00 4.06668575e+00 4.05886552e+00 + 4.05101984e+00 4.04314890e+00 4.03525287e+00 4.02733196e+00 4.01938635e+00 + 4.01141623e+00 4.00342179e+00 3.99540322e+00 3.98736072e+00 3.97929446e+00 + 3.97120464e+00 3.96309146e+00 3.95495510e+00 3.94679575e+00 3.93861359e+00 + 3.93040883e+00 3.92218166e+00 3.91393225e+00 3.90566080e+00 3.89736751e+00 + 3.88905256e+00 3.88071614e+00 3.87235844e+00 3.86397966e+00 3.85557998e+00 + 3.84715959e+00 3.83871868e+00 3.83025744e+00 3.82177607e+00 3.81327475e+00 + 3.80475367e+00 3.79621303e+00 3.78765300e+00 3.77907379e+00 3.77047558e+00 + 3.76185855e+00 3.75322291e+00 3.74456884e+00 3.73589653e+00 3.72720616e+00 + 3.71849793e+00 3.70977203e+00 3.70102864e+00 3.69226796e+00 3.68349016e+00 + 3.67469545e+00 3.66588401e+00 3.65705603e+00 3.64821169e+00 3.63935119e+00 + 3.63047471e+00 3.62158245e+00 3.61267458e+00 3.60375129e+00 3.59481278e+00 + 3.58585923e+00 3.57689083e+00 3.56790776e+00 3.55891022e+00 3.54989838e+00 + 3.54087244e+00 3.53183258e+00 3.52277899e+00 3.51371185e+00 3.50463135e+00 + 3.49553767e+00 3.48643101e+00 3.47731154e+00 3.46817945e+00 3.45903493e+00 + 3.44987815e+00 3.44070932e+00 3.43152860e+00 3.42233618e+00 3.41313225e+00 + 3.40391699e+00 3.39469059e+00 3.38545322e+00 3.37620507e+00 3.36694632e+00 + 3.35767716e+00 3.34839776e+00 3.33910832e+00 3.32980900e+00 3.32050000e+00 + 3.31118149e+00 3.30185365e+00 3.29251667e+00 3.28317072e+00 3.27381599e+00 + 3.26445265e+00 3.25508089e+00 3.24570088e+00 3.23631281e+00 3.22691684e+00 + 3.21751317e+00 3.20810196e+00 3.19868340e+00 3.18925766e+00 3.17982493e+00 + 3.17038537e+00 3.16093916e+00 3.15148649e+00 3.14202752e+00 3.13256244e+00 + 3.12309141e+00 3.11361462e+00 3.10413223e+00 3.09464443e+00 3.08515138e+00 + 3.07565326e+00 3.06615024e+00 3.05664250e+00 3.04713021e+00 3.03761354e+00 + 3.02809266e+00 3.01856774e+00 3.00903897e+00 2.99950650e+00 2.98997050e+00 + 2.98043116e+00 2.97088863e+00 2.96134309e+00 2.95179470e+00 2.94224364e+00 + 2.93269008e+00 2.92313417e+00 2.91357609e+00 2.90401601e+00 2.89445409e+00 + 2.88489050e+00 2.87532541e+00 2.86575898e+00 2.85619137e+00 2.84662275e+00 + 2.83705329e+00 2.82748315e+00 2.81791249e+00 2.80834148e+00 2.79877027e+00 + 2.78919904e+00 2.77962794e+00 2.77005714e+00 2.76048679e+00 2.75091706e+00 + 2.74134810e+00 2.73178009e+00 2.72221316e+00 2.71264750e+00 2.70308325e+00 + 2.69352056e+00 2.68395961e+00 2.67440055e+00 2.66484352e+00 2.65528870e+00 + 2.64573623e+00 2.63618628e+00 2.62663899e+00 2.61709452e+00 2.60755302e+00 + 2.59801465e+00 2.58847956e+00 2.57894791e+00 2.56941984e+00 2.55989551e+00 + 2.55037507e+00 2.54085867e+00 2.53134646e+00 2.52183858e+00 2.51233520e+00 + 2.50283645e+00 2.49334249e+00 2.48385347e+00 2.47436952e+00 2.46489080e+00 + 2.45541746e+00 2.44594964e+00 2.43648748e+00 2.42703114e+00 2.41758075e+00 + 2.40813646e+00 2.39869841e+00 2.38926675e+00 2.37984161e+00 2.37042314e+00 + 2.36101149e+00 2.35160679e+00 2.34220918e+00 2.33281880e+00 2.32343580e+00 + 2.31406030e+00 2.30469245e+00 2.29533239e+00 2.28598026e+00 2.27663618e+00 + 2.26730030e+00 2.25797276e+00 2.24865368e+00 2.23934320e+00 2.23004146e+00 + 2.22074859e+00 2.21146472e+00 2.20218999e+00 2.19292452e+00 2.18366846e+00 + 2.17442192e+00 2.16518504e+00 2.15595795e+00 2.14674078e+00 2.13753366e+00 + 2.12833672e+00 2.11915008e+00 2.10997386e+00 2.10080821e+00 2.09165324e+00 + 2.08250907e+00 2.07337585e+00 2.06425367e+00 2.05514268e+00 2.04604299e+00 + 2.03695473e+00 2.02787802e+00 2.01881298e+00 2.00975974e+00 2.00071840e+00 + 1.99168910e+00 1.98267194e+00 1.97366706e+00 1.96467456e+00 1.95569457e+00 + 1.94672720e+00 1.93777257e+00 1.92883080e+00 1.91990200e+00 1.91098628e+00 + 1.90208375e+00 1.89319455e+00 1.88431876e+00 1.87545652e+00 1.86660792e+00 + 1.85777308e+00 1.84895212e+00 1.84014514e+00 1.83135225e+00 1.82257356e+00 + 1.81380917e+00 1.80505921e+00 1.79632376e+00 1.78760295e+00 1.77889687e+00 + 1.77020564e+00 1.76152935e+00 1.75286811e+00 1.74422202e+00 1.73559119e+00 + 1.72697573e+00 1.71837572e+00 1.70979128e+00 1.70122250e+00 1.69266948e+00 + 1.68413233e+00 1.67561114e+00 1.66710601e+00 1.65861704e+00 1.65014433e+00 + 1.64168796e+00 1.63324805e+00 1.62482468e+00 1.61641795e+00 1.60802795e+00 + 1.59965478e+00 1.59129852e+00 1.58295928e+00 1.57463714e+00 1.56633220e+00 + 1.55804454e+00 1.54977426e+00 1.54152144e+00 1.53328618e+00 1.52506856e+00 + 1.51686867e+00 1.50868660e+00 1.50052243e+00 1.49237625e+00 1.48424814e+00 + 1.47613819e+00 1.46804649e+00 1.45997311e+00 1.45191814e+00 1.44388167e+00 + 1.43586376e+00 1.42786452e+00 1.41988400e+00 1.41192230e+00 1.40397950e+00 + 1.39605567e+00 1.38815089e+00 1.38026524e+00 1.37239879e+00 1.36455162e+00 + 1.35672382e+00 1.34891544e+00 1.34112657e+00 1.33335728e+00 1.32560765e+00 + 1.31787774e+00 1.31016763e+00 1.30247739e+00 1.29480709e+00 1.28715681e+00 + 1.27952660e+00 1.27191655e+00 1.26432671e+00 1.25675716e+00 1.24920796e+00 + 1.24167918e+00 1.23417089e+00 1.22668316e+00 1.21921604e+00 1.21176960e+00 + 1.20434390e+00 1.19693902e+00 1.18955500e+00 1.18219192e+00 1.17484983e+00 + 1.16752879e+00 1.16022887e+00 1.15295013e+00 1.14569262e+00 1.13845640e+00 + 1.13124153e+00 1.12404806e+00 1.11687606e+00 1.10972558e+00 1.10259667e+00 + 1.09548940e+00 1.08840380e+00 1.08133995e+00 1.07429788e+00 1.06727766e+00 + 1.06027933e+00 1.05330295e+00 1.04634857e+00 1.03941623e+00 1.03250599e+00 + 1.02561789e+00 1.01875199e+00 1.01190833e+00 1.00508696e+00 9.98287921e-01 + 9.91511267e-01 9.84757040e-01 9.78025284e-01 9.71316045e-01 9.64629366e-01 + 9.57965290e-01 9.51323860e-01 9.44705117e-01 9.38109103e-01 9.31535860e-01 + 9.24985426e-01 9.18457843e-01 9.11953148e-01 9.05471382e-01 8.99012580e-01 + 8.92576782e-01 8.86164024e-01 8.79774342e-01 8.73407772e-01 8.67064349e-01 + 8.60744107e-01 8.54447081e-01 8.48173305e-01 8.41922810e-01 8.35695630e-01 + 8.29491795e-01 8.23311338e-01 8.17154289e-01 8.11020678e-01 8.04910535e-01 + 7.98823888e-01 7.92760766e-01 7.86721197e-01 7.80705208e-01 7.74712826e-01 + 7.68744078e-01 7.62798988e-01 7.56877582e-01 7.50979884e-01 7.45105919e-01 + 7.39255710e-01 7.33429280e-01 7.27626651e-01 7.21847845e-01 7.16092884e-01 + 7.10361787e-01 7.04654576e-01 6.98971271e-01 6.93311889e-01 6.87676450e-01 + 6.82064972e-01 6.76477473e-01 6.70913968e-01 6.65374476e-01 6.59859012e-01 + 6.54367590e-01 6.48900227e-01 6.43456936e-01 6.38037732e-01 6.32642627e-01 + 6.27271635e-01 6.21924767e-01 6.16602035e-01 6.11303451e-01 6.06029026e-01 + 6.00778769e-01 5.95552690e-01 5.90350798e-01 5.85173102e-01 5.80019611e-01 + 5.74890331e-01 5.69785270e-01 5.64704434e-01 5.59647830e-01 5.54615462e-01 + 5.49607337e-01 5.44623459e-01 5.39663832e-01 5.34728459e-01 5.29817343e-01 + 5.24930488e-01 5.20067895e-01 5.15229565e-01 5.10415501e-01 5.05625702e-01 + 5.00860168e-01 4.96118900e-01 4.91401897e-01 4.86709156e-01 4.82040676e-01 + 4.77396456e-01 4.72776492e-01 4.68180780e-01 4.63609318e-01 4.59062100e-01 + 4.54539123e-01 4.50040381e-01 4.45565868e-01 4.41115579e-01 4.36689506e-01 + 4.32287643e-01 4.27909982e-01 4.23556515e-01 4.19227234e-01 4.14922129e-01 + 4.10641192e-01 4.06384413e-01 4.02151780e-01 3.97943285e-01 3.93758914e-01 + 3.89598658e-01 3.85462502e-01 3.81350436e-01 3.77262446e-01 3.73198519e-01 + 3.69158640e-01 3.65142795e-01 3.61150970e-01 3.57183150e-01 3.53239318e-01 + 3.49319459e-01 3.45423556e-01 3.41551592e-01 3.37703549e-01 3.33879411e-01 + 3.30079158e-01 3.26302772e-01 3.22550234e-01 3.18821524e-01 3.15116623e-01 + 3.11435510e-01 3.07778164e-01 3.04144564e-01 3.00534688e-01 2.96948515e-01 + 2.93386021e-01 2.89847185e-01 2.86331983e-01 2.82840390e-01 2.79372384e-01 + 2.75927939e-01 2.72507030e-01 2.69109633e-01 2.65735722e-01 2.62385270e-01 + 2.59058252e-01 2.55754640e-01 2.52474406e-01 2.49217524e-01 2.45983966e-01 + 2.42773702e-01 2.39586704e-01 2.36422943e-01 2.33282390e-01 2.30165013e-01 + 2.27070784e-01 2.23999671e-01 2.20951643e-01 2.17926669e-01 2.14924717e-01 + 2.11945755e-01 2.08989749e-01 2.06056668e-01 2.03146478e-01 2.00259146e-01 + 1.97394636e-01 1.94552916e-01 1.91733949e-01 1.88937702e-01 1.86164139e-01 + 1.83413223e-01 1.80684919e-01 1.77979190e-01 1.75296000e-01 1.72635311e-01 + 1.69997086e-01 1.67381287e-01 1.64787875e-01 1.62216813e-01 1.59668060e-01 + 1.57141579e-01 1.54637330e-01 1.52155272e-01 1.49695366e-01 1.47257571e-01 + 1.44841846e-01 1.42448150e-01 1.40076442e-01 1.37726679e-01 1.35398821e-01 + 1.33092823e-01 1.30808644e-01 1.28546240e-01 1.26305568e-01 1.24086585e-01 + 1.21889246e-01 1.19713507e-01 1.17559324e-01 1.15426652e-01 1.13315445e-01 + 1.11225658e-01 1.09157245e-01 1.07110161e-01 1.05084359e-01 1.03079791e-01 + 1.01096412e-01 9.91341744e-02 9.71930301e-02 9.52729316e-02 9.33738308e-02 + 9.14956795e-02 8.96384290e-02 8.78020304e-02 8.59864346e-02 8.41915922e-02 + 8.24174533e-02 8.06639682e-02 7.89310865e-02 7.72187578e-02 7.55269312e-02 + 7.38555559e-02 7.22045805e-02 7.05739536e-02 6.89636232e-02 6.73735375e-02 + 6.58036440e-02 6.42538904e-02 6.27242238e-02 6.12145912e-02 5.97249393e-02 + 5.82552147e-02 5.68053636e-02 5.53753320e-02 5.39650657e-02 5.25745103e-02 + 5.12036111e-02 4.98523131e-02 4.85205613e-02 4.72083003e-02 4.59154745e-02 + 4.46420281e-02 4.33879051e-02 4.21530492e-02 4.09374040e-02 3.97409128e-02 + 3.85635187e-02 3.74051646e-02 3.62657932e-02 3.51453469e-02 3.40437682e-02 + 3.29609990e-02 3.18969812e-02 3.08516564e-02 2.98249663e-02 2.88168520e-02 + 2.78272546e-02 2.68561150e-02 2.59033739e-02 2.49689719e-02 2.40528492e-02 + 2.31549461e-02 2.22752024e-02 2.14135579e-02 2.05699522e-02 1.97443248e-02 + 1.89366149e-02 1.81467615e-02 1.73747036e-02 1.66203799e-02 1.58837289e-02 + 1.51646890e-02 1.44631985e-02 1.37791954e-02 1.31126175e-02 1.24634028e-02 + 1.18314886e-02 1.12168125e-02 1.06193117e-02 1.00389234e-02 9.47558447e-03 + 8.92923178e-03 8.39980199e-03 7.88723163e-03 7.39145708e-03 6.91241458e-03 + 6.45004024e-03 6.00427002e-03 5.57503974e-03 5.16228511e-03 4.76594168e-03 + 4.38594487e-03 4.02222999e-03 3.67473222e-03 3.34338659e-03 3.02812803e-03 + 2.72889134e-03 2.44561121e-03 2.17822219e-03 1.92665872e-03 1.69085514e-03 + 1.47074567e-03 1.26626440e-03 1.07734534e-03 9.03922361e-04 7.45929254e-04 + 6.03299692e-04 4.75967247e-04 3.63865391e-04 2.66927494e-04 1.85086832e-04 + 1.18276582e-04 6.64298274e-05 2.94795605e-05 7.35868100e-06 0.00000000e+00 + 1.26736931e-02 1.27096112e-02 1.28489084e-02 1.29897322e-02 1.31320992e-02 + 1.32760265e-02 1.34215312e-02 1.35686304e-02 1.37173417e-02 1.38676827e-02 + 1.40196713e-02 1.41733256e-02 1.43286638e-02 1.44857043e-02 1.46444659e-02 + 1.48049672e-02 1.49672275e-02 1.51312660e-02 1.52971022e-02 1.54647558e-02 + 1.56342466e-02 1.58055949e-02 1.59788209e-02 1.61539453e-02 1.63309888e-02 + 1.65099724e-02 1.66909175e-02 1.68738455e-02 1.70587782e-02 1.72457374e-02 + 1.74347455e-02 1.76258248e-02 1.78189981e-02 1.80142882e-02 1.82117184e-02 + 1.84113122e-02 1.86130931e-02 1.88170853e-02 1.90233128e-02 1.92318003e-02 + 1.94425724e-02 1.96556543e-02 1.98710711e-02 2.00888485e-02 2.03090123e-02 + 2.05315887e-02 2.07566041e-02 2.09840853e-02 2.12140592e-02 2.14465531e-02 + 2.16815947e-02 2.19192118e-02 2.21594327e-02 2.24022859e-02 2.26478003e-02 + 2.28960049e-02 2.31469293e-02 2.34006032e-02 2.36570568e-02 2.39163205e-02 + 2.41784251e-02 2.44434017e-02 2.47112818e-02 2.49820971e-02 2.52558799e-02 + 2.55326626e-02 2.58124781e-02 2.60953596e-02 2.63813406e-02 2.66704552e-02 + 2.69627377e-02 2.72582227e-02 2.75569454e-02 2.78589411e-02 2.81642458e-02 + 2.84728956e-02 2.87849273e-02 2.91003778e-02 2.94192846e-02 2.97416856e-02 + 3.00676189e-02 3.03971234e-02 3.07302381e-02 3.10670025e-02 3.14074566e-02 + 3.17516409e-02 3.20995961e-02 3.24513636e-02 3.28069851e-02 3.31665028e-02 + 3.35299594e-02 3.38973980e-02 3.42688622e-02 3.46443961e-02 3.50240442e-02 + 3.54078516e-02 3.57958639e-02 3.61881271e-02 3.65846877e-02 3.69855928e-02 + 3.73908900e-02 3.78006273e-02 3.82148533e-02 3.86336172e-02 3.90569687e-02 + 3.94849580e-02 3.99176359e-02 4.03550537e-02 4.07972632e-02 4.12443171e-02 + 4.16962682e-02 4.21531702e-02 4.26150773e-02 4.30820442e-02 4.35541265e-02 + 4.40313800e-02 4.45138613e-02 4.50016278e-02 4.54947372e-02 4.59932480e-02 + 4.64972193e-02 4.70067109e-02 4.75217833e-02 4.80424974e-02 4.85689151e-02 + 4.91010988e-02 4.96391115e-02 5.01830171e-02 5.07328801e-02 5.12887655e-02 + 5.18507395e-02 5.24188684e-02 5.29932198e-02 5.35738618e-02 5.41608630e-02 + 5.47542932e-02 5.53542226e-02 5.59607224e-02 5.65738645e-02 5.71937215e-02 + 5.78203669e-02 5.84538749e-02 5.90943207e-02 5.97417802e-02 6.03963299e-02 + 6.10580476e-02 6.17270117e-02 6.24033013e-02 6.30869966e-02 6.37781787e-02 + 6.44769294e-02 6.51833314e-02 6.58974685e-02 6.66194253e-02 6.73492873e-02 + 6.80871409e-02 6.88330735e-02 6.95871735e-02 7.03495302e-02 7.11202339e-02 + 7.18993757e-02 7.26870481e-02 7.34833442e-02 7.42883584e-02 7.51021860e-02 + 7.59249232e-02 7.67566676e-02 7.75975175e-02 7.84475725e-02 7.93069333e-02 + 8.01757015e-02 8.10539799e-02 8.19418726e-02 8.28394845e-02 8.37469219e-02 + 8.46642922e-02 8.55917039e-02 8.65292668e-02 8.74770917e-02 8.84352909e-02 + 8.94039775e-02 9.03832663e-02 9.13732730e-02 9.23741148e-02 9.33859100e-02 + 9.44087782e-02 9.54428404e-02 9.64882189e-02 9.75450373e-02 9.86134204e-02 + 9.96934947e-02 1.00785388e-01 1.01889229e-01 1.03005148e-01 1.04133277e-01 + 1.05273750e-01 1.06426701e-01 1.07592267e-01 1.08770585e-01 1.09961794e-01 + 1.11166035e-01 1.12383451e-01 1.13614184e-01 1.14858382e-01 1.16116189e-01 + 1.17387756e-01 1.18673231e-01 1.19972768e-01 1.21286518e-01 1.22614638e-01 + 1.23957284e-01 1.25314614e-01 1.26686789e-01 1.28073971e-01 1.29476322e-01 + 1.30894010e-01 1.32327200e-01 1.33776062e-01 1.35240767e-01 1.36721487e-01 + 1.38218397e-01 1.39731674e-01 1.41261496e-01 1.42808043e-01 1.44371497e-01 + 1.45952044e-01 1.47549868e-01 1.49165159e-01 1.50798106e-01 1.52448902e-01 + 1.54117741e-01 1.55804820e-01 1.57510337e-01 1.59234494e-01 1.60977493e-01 + 1.62739539e-01 1.64520840e-01 1.66321605e-01 1.68142046e-01 1.69982378e-01 + 1.71842816e-01 1.73723581e-01 1.75624891e-01 1.77546972e-01 1.79490050e-01 + 1.81454352e-01 1.83440109e-01 1.85447555e-01 1.87476926e-01 1.89528460e-01 + 1.91602397e-01 1.93698982e-01 1.95818461e-01 1.97961082e-01 2.00127097e-01 + 2.02316760e-01 2.04530329e-01 2.06768061e-01 2.09030221e-01 2.11317074e-01 + 2.13628887e-01 2.15965931e-01 2.18328481e-01 2.20716813e-01 2.23131207e-01 + 2.25571946e-01 2.28039316e-01 2.30533605e-01 2.33055107e-01 2.35604114e-01 + 2.38180927e-01 2.40785847e-01 2.43419177e-01 2.46081227e-01 2.48772307e-01 + 2.51492732e-01 2.54242820e-01 2.57022892e-01 2.59833273e-01 2.62674291e-01 + 2.65546278e-01 2.68449569e-01 2.71384502e-01 2.74351421e-01 2.77350672e-01 + 2.80382603e-01 2.83447570e-01 2.86545927e-01 2.89678038e-01 2.92844266e-01 + 2.96044981e-01 2.99280555e-01 3.02551364e-01 3.05857790e-01 3.09200216e-01 + 3.12579032e-01 3.15994631e-01 3.19447408e-01 3.22937766e-01 3.26466110e-01 + 3.30032849e-01 3.33638399e-01 3.37283176e-01 3.40967603e-01 3.44692109e-01 + 3.48457125e-01 3.52263087e-01 3.56110435e-01 3.59999617e-01 3.63931081e-01 + 3.67905283e-01 3.71922683e-01 3.75983744e-01 3.80088937e-01 3.84238736e-01 + 3.88433620e-01 3.92674074e-01 3.96960587e-01 4.01293653e-01 4.05673773e-01 + 4.10101451e-01 4.14577197e-01 4.19101527e-01 4.23674962e-01 4.28298028e-01 + 4.32971257e-01 4.37695186e-01 4.42470358e-01 4.47297322e-01 4.52176632e-01 + 4.57108848e-01 4.62094535e-01 4.67134266e-01 4.72228618e-01 4.77378174e-01 + 4.82583524e-01 4.87845264e-01 4.93163995e-01 4.98540325e-01 5.03974869e-01 + 5.09468247e-01 5.15021086e-01 5.20634020e-01 5.26307687e-01 5.32042736e-01 + 5.37839818e-01 5.43699593e-01 5.49622728e-01 5.55609896e-01 5.61661777e-01 + 5.67779058e-01 5.73962433e-01 5.80212603e-01 5.86530276e-01 5.92916168e-01 + 5.99371001e-01 6.05895505e-01 6.12490417e-01 6.19156483e-01 6.25894453e-01 + 6.32705088e-01 6.39589156e-01 6.46547431e-01 6.53580697e-01 6.60689744e-01 + 6.67875370e-01 6.75138383e-01 6.82479597e-01 6.89899834e-01 6.97399927e-01 + 7.04980713e-01 7.12643041e-01 7.20387766e-01 7.28215753e-01 7.36127875e-01 + 7.44125013e-01 7.52208057e-01 7.60377907e-01 7.68635471e-01 7.76981664e-01 + 7.85417412e-01 7.93943651e-01 8.02561324e-01 8.11271384e-01 8.20074793e-01 + 8.28972523e-01 8.37965554e-01 8.47054878e-01 8.56241493e-01 8.65526411e-01 + 8.74910649e-01 8.84395238e-01 8.93981215e-01 9.03669630e-01 9.13461542e-01 + 9.23358019e-01 9.33360141e-01 9.43468996e-01 9.53685684e-01 9.64011316e-01 + 9.74447011e-01 9.84993900e-01 9.95653124e-01 1.00642584e+00 1.01731320e+00 + 1.02831638e+00 1.03943658e+00 1.05067498e+00 1.06203279e+00 1.07351122e+00 + 1.08511151e+00 1.09683490e+00 1.10868263e+00 1.12065598e+00 1.13275620e+00 + 1.14498460e+00 1.15734246e+00 1.16983110e+00 1.18245183e+00 1.19520599e+00 + 1.20809492e+00 1.22111997e+00 1.23428252e+00 1.24758395e+00 1.26102564e+00 + 1.27460900e+00 1.28833545e+00 1.30220641e+00 1.31622334e+00 1.33038767e+00 + 1.34470087e+00 1.35916443e+00 1.37377984e+00 1.38854860e+00 1.40347221e+00 + 1.41855223e+00 1.43379018e+00 1.44918761e+00 1.46474611e+00 1.48046724e+00 + 1.49635260e+00 1.51240380e+00 1.52862246e+00 1.54501021e+00 1.56156868e+00 + 1.57829956e+00 1.59520449e+00 1.61228518e+00 1.62954331e+00 1.64698060e+00 + 1.66459878e+00 1.68239958e+00 1.70038475e+00 1.71855606e+00 1.73691529e+00 + 1.75546422e+00 1.77420467e+00 1.79313845e+00 1.81226739e+00 1.83159334e+00 + 1.85111815e+00 1.87084370e+00 1.89077188e+00 1.91090458e+00 1.93124371e+00 + 1.95179120e+00 1.97254898e+00 1.99351902e+00 2.01470327e+00 2.03610371e+00 + 2.05772233e+00 2.07956114e+00 2.10162216e+00 2.12390741e+00 2.14641894e+00 + 2.16915881e+00 2.19212908e+00 2.21533184e+00 2.23876918e+00 2.26244321e+00 + 2.28635605e+00 2.31050983e+00 2.33490669e+00 2.35954879e+00 2.38443831e+00 + 2.40957741e+00 2.43496830e+00 2.46061318e+00 2.48651426e+00 2.51267378e+00 + 2.53909396e+00 2.56577707e+00 2.59272536e+00 2.61994110e+00 2.64742658e+00 + 2.67518408e+00 2.70321592e+00 2.73152441e+00 2.76011186e+00 2.78898061e+00 + 2.81813301e+00 2.84757141e+00 2.87729816e+00 2.90731563e+00 2.93762621e+00 + 2.96823228e+00 2.99913624e+00 3.03034047e+00 3.06184740e+00 3.09365944e+00 + 3.12577901e+00 3.15820855e+00 3.19095048e+00 3.22400724e+00 3.25738129e+00 + 3.29107508e+00 3.32509106e+00 3.35943168e+00 3.39409942e+00 3.42909675e+00 + 3.46442612e+00 3.50009002e+00 3.53609093e+00 3.57243131e+00 3.60911364e+00 + 3.64614041e+00 3.68351409e+00 3.72123716e+00 3.75931210e+00 3.79774139e+00 + 3.83652749e+00 3.87567289e+00 3.91518005e+00 3.95505143e+00 3.99528949e+00 + 4.03589670e+00 4.07687550e+00 4.11822834e+00 4.15995765e+00 4.20206587e+00 + 4.24455541e+00 4.28742868e+00 4.33068810e+00 4.37433605e+00 4.41837492e+00 + 4.46280707e+00 4.50763486e+00 4.55286063e+00 4.59848672e+00 4.64451543e+00 + 4.69094906e+00 4.73778990e+00 4.78504020e+00 4.83270221e+00 4.88077816e+00 + 4.92927024e+00 4.97818064e+00 5.02751152e+00 5.07726502e+00 5.12744323e+00 + 5.17804826e+00 5.22908216e+00 5.28054696e+00 5.33244466e+00 5.38477724e+00 + 5.43754663e+00 5.49075475e+00 5.54440348e+00 5.59849464e+00 5.65303006e+00 + 5.70801150e+00 5.76344069e+00 5.81931932e+00 5.87564905e+00 5.93243148e+00 + 5.98966818e+00 6.04736067e+00 6.10551044e+00 6.16411890e+00 6.22318745e+00 + 6.28271741e+00 6.34271006e+00 6.40316664e+00 6.46408831e+00 6.52547620e+00 + 6.58733136e+00 6.64965481e+00 6.71244749e+00 6.77571028e+00 6.83944401e+00 + 6.90364942e+00 6.96832722e+00 7.03347803e+00 7.09910240e+00 7.16520083e+00 + 7.23177372e+00 7.29882142e+00 7.36634421e+00 7.43434226e+00 7.50281569e+00 + 7.57176455e+00 7.64118877e+00 7.71108824e+00 7.78146274e+00 7.85231198e+00 + 7.92363556e+00 7.99543302e+00 8.06770379e+00 8.14044722e+00 8.21366256e+00 + 8.28734896e+00 8.36150548e+00 8.43613109e+00 8.51122466e+00 8.58678493e+00 + 8.66281057e+00 8.73930014e+00 8.81625208e+00 8.89366474e+00 8.97153635e+00 + 9.04986503e+00 9.12864881e+00 9.20788557e+00 9.28757310e+00 9.36770908e+00 + 9.44829106e+00 9.52931647e+00 9.61078263e+00 9.69268674e+00 9.77502586e+00 + 9.85779695e+00 9.94099683e+00 1.00246222e+01 1.01086696e+01 1.01931356e+01 + 1.02780164e+01 1.03633081e+01 1.04490070e+01 1.05351088e+01 1.06216095e+01 + 1.07085045e+01 1.07957896e+01 1.08834600e+01 1.09715110e+01 1.10599377e+01 + 1.11487352e+01 1.12378982e+01 1.13274214e+01 1.14172995e+01 1.15075268e+01 + 1.15980977e+01 1.16890062e+01 1.17802465e+01 1.18718123e+01 1.19636975e+01 + 1.20558955e+01 1.21483999e+01 1.22412040e+01 1.23343009e+01 1.24276837e+01 + 1.25213452e+01 1.26152784e+01 1.27094756e+01 1.28039296e+01 1.28986325e+01 + 1.29935767e+01 1.30887541e+01 1.31841569e+01 1.32797766e+01 1.33756052e+01 + 1.34716341e+01 1.35678547e+01 1.36642583e+01 1.37608362e+01 1.38575793e+01 + 1.39544786e+01 1.40515249e+01 1.41487089e+01 1.42460212e+01 1.43434522e+01 + 1.44409922e+01 1.45386315e+01 1.46363602e+01 1.47341683e+01 1.48320457e+01 + 1.49299822e+01 1.50279676e+01 1.51259915e+01 1.52240433e+01 1.53221125e+01 + 1.54201884e+01 1.55182603e+01 1.56163173e+01 1.57143486e+01 1.58123432e+01 + 1.59102900e+01 1.60081778e+01 1.61059955e+01 1.62037318e+01 1.63013755e+01 + 1.63989150e+01 1.64963391e+01 1.65936363e+01 1.66907950e+01 1.67878036e+01 + 1.68846507e+01 1.69813245e+01 1.70778134e+01 1.71741058e+01 1.72701899e+01 + 1.73660541e+01 1.74616865e+01 1.75570755e+01 1.76522094e+01 1.77470763e+01 + 1.78416647e+01 1.79359627e+01 1.80299586e+01 1.81236408e+01 1.82169975e+01 + 1.83100173e+01 1.84026883e+01 1.84949991e+01 1.85869382e+01 1.86784940e+01 + 1.87696551e+01 1.88604101e+01 1.89507477e+01 1.90406567e+01 1.91301257e+01 + 1.92191438e+01 1.93076997e+01 1.93957826e+01 1.94833816e+01 1.95704859e+01 + 1.96570846e+01 1.97431673e+01 1.98287234e+01 1.99137425e+01 1.99982142e+01 + 2.00821284e+01 2.01654751e+01 2.02482441e+01 2.03304257e+01 2.04120102e+01 + 2.04929881e+01 2.05733497e+01 2.06530859e+01 2.07321874e+01 2.08106453e+01 + 2.08884506e+01 2.09655946e+01 2.10420688e+01 2.11178646e+01 2.11929739e+01 + 2.12673885e+01 2.13411005e+01 2.14141021e+01 2.14863858e+01 2.15579440e+01 + 2.16287695e+01 2.16988552e+01 2.17681942e+01 2.18367798e+01 2.19046054e+01 + 2.19716647e+01 2.20379515e+01 2.21034598e+01 2.21681837e+01 2.22321176e+01 + 2.22952562e+01 2.23575942e+01 2.24191264e+01 2.24798482e+01 2.25397547e+01 + 2.25988416e+01 2.26571045e+01 2.27145393e+01 2.27711423e+01 2.28269096e+01 + 2.28818379e+01 2.29359237e+01 2.29891640e+01 2.30415558e+01 2.30930965e+01 + 2.31437835e+01 2.31936145e+01 2.32425873e+01 2.32907001e+01 2.33379509e+01 + 2.33843384e+01 2.34298610e+01 2.34745176e+01 2.35183072e+01 2.35612290e+01 + 2.36032823e+01 2.36444667e+01 2.36847819e+01 2.37242279e+01 2.37628046e+01 + 2.38005124e+01 2.38373518e+01 2.38733232e+01 2.39084275e+01 2.39426657e+01 + 2.39760388e+01 2.40085482e+01 2.40401952e+01 2.40709815e+01 2.41009088e+01 + 2.41299790e+01 2.41581942e+01 2.41855567e+01 2.42120687e+01 2.42377327e+01 + 2.42625515e+01 2.42865278e+01 2.43096645e+01 2.43319648e+01 2.43534317e+01 + 2.43740686e+01 2.43938790e+01 2.44128664e+01 2.44310345e+01 2.44483872e+01 + 2.44649283e+01 2.44806620e+01 2.44955922e+01 2.45097234e+01 2.45230599e+01 + 2.45356061e+01 2.45473666e+01 2.45583460e+01 2.45685492e+01 2.45779809e+01 + 2.45866460e+01 2.45945496e+01 2.46016969e+01 2.46080928e+01 2.46137428e+01 + 2.46186520e+01 2.46228260e+01 2.46262702e+01 2.46289900e+01 2.46309912e+01 + 2.46322792e+01 2.46328599e+01 2.46327391e+01 2.46319224e+01 2.46304158e+01 + 2.46282252e+01 2.46253566e+01 2.46218158e+01 2.46176091e+01 2.46127424e+01 + 2.46072218e+01 2.46010535e+01 2.45942437e+01 2.45867986e+01 2.45787243e+01 + 2.45700272e+01 2.45607134e+01 2.45507894e+01 2.45402613e+01 2.45291355e+01 + 2.45174183e+01 2.45051162e+01 2.44922353e+01 2.44787821e+01 2.44647630e+01 + 2.44501842e+01 2.44350523e+01 2.44193735e+01 2.44031542e+01 2.43864007e+01 + 2.43691195e+01 2.43513168e+01 2.43329990e+01 2.43141725e+01 2.42948435e+01 + 2.42750184e+01 2.42547034e+01 2.42339048e+01 2.42126289e+01 2.41908819e+01 + 2.41686701e+01 2.41459995e+01 2.41228764e+01 2.40993070e+01 2.40752974e+01 + 2.40508536e+01 2.40259817e+01 2.40006879e+01 2.39749780e+01 2.39488581e+01 + 2.39223341e+01 2.38954121e+01 2.38680977e+01 2.38403970e+01 2.38123157e+01 + 2.37838597e+01 2.37550346e+01 2.37258462e+01 2.36963002e+01 2.36664022e+01 + 2.36361578e+01 2.36055726e+01 2.35746521e+01 2.35434018e+01 2.35118272e+01 + 2.34799336e+01 2.34477264e+01 2.34152110e+01 2.33823926e+01 2.33492764e+01 + 2.33158677e+01 2.32821716e+01 2.32481932e+01 2.32139376e+01 2.31794098e+01 + 2.31446147e+01 2.31095574e+01 2.30742426e+01 2.30386753e+01 2.30028602e+01 + 2.29668022e+01 2.29305058e+01 2.28939757e+01 2.28572167e+01 2.28202332e+01 + 2.27830298e+01 2.27456109e+01 2.27079810e+01 2.26701445e+01 2.26321057e+01 + 2.25938690e+01 2.25554385e+01 2.25168186e+01 2.24780132e+01 2.24390267e+01 + 2.23998630e+01 2.23605262e+01 2.23210202e+01 2.22813490e+01 2.22415165e+01 + 2.22015265e+01 2.21613829e+01 2.21210894e+01 2.20806497e+01 2.20400675e+01 + 2.19993464e+01 2.19584900e+01 2.19175019e+01 2.18763855e+01 2.18351444e+01 + 2.17937818e+01 2.17523013e+01 2.17107061e+01 2.16689995e+01 2.16271848e+01 + 2.15852651e+01 2.15432437e+01 2.15011236e+01 2.14589080e+01 2.14165999e+01 + 2.13742023e+01 2.13317181e+01 2.12891503e+01 2.12465018e+01 2.12037754e+01 + 2.11609740e+01 2.11181002e+01 2.10751569e+01 2.10321468e+01 2.09890724e+01 + 2.09459364e+01 2.09027415e+01 2.08594901e+01 2.08161847e+01 2.07728279e+01 + 2.07294221e+01 2.06859697e+01 2.06424731e+01 2.05989346e+01 2.05553566e+01 + 2.05117412e+01 2.04680907e+01 2.04244074e+01 2.03806935e+01 2.03369509e+01 + 2.02931820e+01 2.02493887e+01 2.02055731e+01 2.01617372e+01 2.01178830e+01 + 2.00740125e+01 2.00301276e+01 1.99862301e+01 1.99423220e+01 1.98984051e+01 + 1.98544812e+01 1.98105520e+01 1.97666194e+01 1.97226850e+01 1.96787506e+01 + 1.96348178e+01 1.95908883e+01 1.95469637e+01 1.95030455e+01 1.94591354e+01 + 1.94152349e+01 1.93713455e+01 1.93274686e+01 1.92836059e+01 1.92397586e+01 + 1.91959283e+01 1.91521163e+01 1.91083239e+01 1.90645526e+01 1.90208037e+01 + 1.89770784e+01 1.89333780e+01 1.88897038e+01 1.88460571e+01 1.88024390e+01 + 1.87588508e+01 1.87152936e+01 1.86717685e+01 1.86282768e+01 1.85848194e+01 + 1.85413976e+01 1.84980123e+01 1.84546646e+01 1.84113557e+01 1.83680863e+01 + 1.83248577e+01 1.82816707e+01 1.82385264e+01 1.81954256e+01 1.81523692e+01 + 1.81093583e+01 1.80663936e+01 1.80234761e+01 1.79806066e+01 1.79377859e+01 + 1.78950150e+01 1.78522945e+01 1.78096252e+01 1.77670081e+01 1.77244437e+01 + 1.76819330e+01 1.76394765e+01 1.75970750e+01 1.75547293e+01 1.75124399e+01 + 1.74702076e+01 1.74280331e+01 1.73859170e+01 1.73438599e+01 1.73018624e+01 + 1.72599252e+01 1.72180489e+01 1.71762340e+01 1.71344810e+01 1.70927907e+01 + 1.70511634e+01 1.70095998e+01 1.69681003e+01 1.69266656e+01 1.68852959e+01 + 1.68439920e+01 1.68027542e+01 1.67615829e+01 1.67204788e+01 1.66794421e+01 + 1.66384733e+01 1.65975730e+01 1.65567413e+01 1.65159789e+01 1.64752860e+01 + 1.64346631e+01 1.63941105e+01 1.63536286e+01 1.63132177e+01 1.62728783e+01 + 1.62326105e+01 1.61924149e+01 1.61522916e+01 1.61122410e+01 1.60722634e+01 + 1.60323591e+01 1.59925284e+01 1.59527715e+01 1.59130888e+01 1.58734804e+01 + 1.58339467e+01 1.57944880e+01 1.57551043e+01 1.57157960e+01 1.56765634e+01 + 1.56374065e+01 1.55983257e+01 1.55593211e+01 1.55203930e+01 1.54815415e+01 + 1.54427668e+01 1.54040691e+01 1.53654486e+01 1.53269054e+01 1.52884397e+01 + 1.52500516e+01 1.52117414e+01 1.51735091e+01 1.51353549e+01 1.50972789e+01 + 1.50592813e+01 1.50213621e+01 1.49835215e+01 1.49457596e+01 1.49080765e+01 + 1.48704723e+01 1.48329471e+01 1.47955009e+01 1.47581339e+01 1.47208462e+01 + 1.46836378e+01 1.46465088e+01 1.46094593e+01 1.45724893e+01 1.45355989e+01 + 1.44987881e+01 1.44620570e+01 1.44254057e+01 1.43888341e+01 1.43523423e+01 + 1.43159304e+01 1.42795984e+01 1.42433463e+01 1.42071741e+01 1.41710819e+01 + 1.41350696e+01 1.40991373e+01 1.40632850e+01 1.40275127e+01 1.39918204e+01 + 1.39562080e+01 1.39206757e+01 1.38852233e+01 1.38498509e+01 1.38145584e+01 + 1.37793459e+01 1.37442133e+01 1.37091606e+01 1.36741878e+01 1.36392948e+01 + 1.36044816e+01 1.35697482e+01 1.35350945e+01 1.35005205e+01 1.34660262e+01 + 1.34316114e+01 1.33972763e+01 1.33630207e+01 1.33288445e+01 1.32947477e+01 + 1.32607303e+01 1.32267922e+01 1.31929333e+01 1.31591536e+01 1.31254531e+01 + 1.30918315e+01 1.30582890e+01 1.30248253e+01 1.29914405e+01 1.29581344e+01 + 1.29249070e+01 1.28917582e+01 1.28586879e+01 1.28256961e+01 1.27927827e+01 + 1.27599475e+01 1.27271905e+01 1.26945115e+01 1.26619106e+01 1.26293877e+01 + 1.25969425e+01 1.25645751e+01 1.25322853e+01 1.25000730e+01 1.24679382e+01 + 1.24358807e+01 1.24039005e+01 1.23719973e+01 1.23401713e+01 1.23084221e+01 + 1.22767497e+01 1.22451541e+01 1.22136351e+01 1.21821925e+01 1.21508264e+01 + 1.21195365e+01 1.20883227e+01 1.20571850e+01 1.20261232e+01 1.19951373e+01 + 1.19642270e+01 1.19333923e+01 1.19026330e+01 1.18719491e+01 1.18413404e+01 + 1.18108067e+01 1.17803481e+01 1.17499642e+01 1.17196551e+01 1.16894206e+01 + 1.16592606e+01 1.16291749e+01 1.15991634e+01 1.15692260e+01 1.15393626e+01 + 1.15095729e+01 1.14798570e+01 1.14502147e+01 1.14206457e+01 1.13911501e+01 + 1.13617276e+01 1.13323782e+01 1.13031017e+01 1.12738979e+01 1.12447668e+01 + 1.12157082e+01 1.11867219e+01 1.11578079e+01 1.11289659e+01 1.11001959e+01 + 1.10714977e+01 1.10428712e+01 1.10143163e+01 1.09858327e+01 1.09574203e+01 + 1.09290791e+01 1.09008089e+01 1.08726095e+01 1.08444808e+01 1.08164227e+01 + 1.07884349e+01 1.07605175e+01 1.07326701e+01 1.07048928e+01 1.06771853e+01 + 1.06495475e+01 1.06219793e+01 1.05944805e+01 1.05670509e+01 1.05396905e+01 + 1.05123990e+01 1.04851764e+01 1.04580225e+01 1.04309372e+01 1.04039202e+01 + 1.03769716e+01 1.03500910e+01 1.03232784e+01 1.02965336e+01 1.02698565e+01 + 1.02432470e+01 1.02167048e+01 1.01902299e+01 1.01638221e+01 1.01374812e+01 + 1.01112071e+01 1.00849997e+01 1.00588588e+01 1.00327843e+01 1.00067760e+01 + 9.98083379e+00 9.95495749e+00 9.92914697e+00 9.90340209e+00 9.87772270e+00 + 9.85210865e+00 9.82655980e+00 9.80107600e+00 9.77565710e+00 9.75030296e+00 + 9.72501344e+00 9.69978837e+00 9.67462763e+00 9.64953106e+00 9.62449852e+00 + 9.59952985e+00 9.57462492e+00 9.54978358e+00 9.52500568e+00 9.50029108e+00 + 9.47563963e+00 9.45105118e+00 9.42652560e+00 9.40206272e+00 9.37766242e+00 + 9.35332454e+00 9.32904893e+00 9.30483546e+00 9.28068397e+00 9.25659433e+00 + 9.23256638e+00 9.20859999e+00 9.18469501e+00 9.16085128e+00 9.13706868e+00 + 9.11334706e+00 9.08968626e+00 9.06608615e+00 9.04254659e+00 9.01906742e+00 + 8.99564852e+00 8.97228972e+00 8.94899090e+00 8.92575190e+00 8.90257258e+00 + 8.87945281e+00 8.85639244e+00 8.83339132e+00 8.81044932e+00 8.78756628e+00 + 8.76474208e+00 8.74197657e+00 8.71926961e+00 8.69662105e+00 8.67403076e+00 + 8.65149859e+00 8.62902441e+00 8.60660807e+00 8.58424943e+00 8.56194836e+00 + 8.53970471e+00 8.51751834e+00 8.49538911e+00 8.47331690e+00 8.45130154e+00 + 8.42934292e+00 8.40744088e+00 8.38559529e+00 8.36380601e+00 8.34207291e+00 + 8.32039585e+00 8.29877468e+00 8.27720927e+00 8.25569949e+00 8.23424520e+00 + 8.21284625e+00 8.19150252e+00 8.17021387e+00 8.14898017e+00 8.12780127e+00 + 8.10667704e+00 8.08560734e+00 8.06459205e+00 8.04363103e+00 8.02272413e+00 + 8.00187124e+00 7.98107221e+00 7.96032690e+00 7.93963520e+00 7.91899696e+00 + 7.89841205e+00 7.87788034e+00 7.85740169e+00 7.83697597e+00 7.81660306e+00 + 7.79628282e+00 7.77601511e+00 7.75579981e+00 7.73563679e+00 7.71552591e+00 + 7.69546704e+00 7.67546006e+00 7.65550483e+00 7.63560123e+00 7.61574912e+00 + 7.59594838e+00 7.57619887e+00 7.55650048e+00 7.53685306e+00 7.51725649e+00 + 7.49771065e+00 7.47821540e+00 7.45877063e+00 7.43937619e+00 7.42003197e+00 + 7.40073784e+00 7.38149367e+00 7.36229933e+00 7.34315471e+00 7.32405967e+00 + 7.30501408e+00 7.28601784e+00 7.26707080e+00 7.24817285e+00 7.22932386e+00 + 7.21052370e+00 7.19177226e+00 7.17306941e+00 7.15441503e+00 7.13580899e+00 + 7.11725117e+00 7.09874145e+00 7.08027971e+00 7.06186582e+00 7.04349966e+00 + 7.02518112e+00 7.00691007e+00 6.98868640e+00 6.97050997e+00 6.95238067e+00 + 6.93429838e+00 6.91626298e+00 6.89827436e+00 6.88033238e+00 6.86243694e+00 + 6.84458792e+00 6.82678519e+00 6.80902864e+00 6.79131815e+00 6.77365360e+00 + 6.75603488e+00 6.73846187e+00 6.72093445e+00 6.70345250e+00 6.68601592e+00 + 6.66862458e+00 6.65127837e+00 6.63397717e+00 6.61672087e+00 6.59950935e+00 + 6.58234250e+00 6.56522020e+00 6.54814234e+00 6.53110881e+00 6.51411950e+00 + 6.49717428e+00 6.48027305e+00 6.46341569e+00 6.44660210e+00 6.42983215e+00 + 6.41310574e+00 6.39642276e+00 6.37978309e+00 6.36318663e+00 6.34663326e+00 + 6.33012287e+00 6.31365535e+00 6.29723059e+00 6.28084849e+00 6.26450892e+00 + 6.24821179e+00 6.23195699e+00 6.21574440e+00 6.19957391e+00 6.18344542e+00 + 6.16735883e+00 6.15131402e+00 6.13531088e+00 6.11934931e+00 6.10342920e+00 + 6.08755045e+00 6.07171295e+00 6.05591658e+00 6.04016126e+00 6.02444686e+00 + 6.00877329e+00 5.99314044e+00 5.97754820e+00 5.96199647e+00 5.94648515e+00 + 5.93101414e+00 5.91558332e+00 5.90019259e+00 5.88484186e+00 5.86953101e+00 + 5.85425995e+00 5.83902857e+00 5.82383678e+00 5.80868446e+00 5.79357151e+00 + 5.77849784e+00 5.76346335e+00 5.74846793e+00 5.73351148e+00 5.71859390e+00 + 5.70371509e+00 5.68887495e+00 5.67407338e+00 5.65931028e+00 5.64458556e+00 + 5.62989911e+00 5.61525083e+00 5.60064063e+00 5.58606840e+00 5.57153405e+00 + 5.55703748e+00 5.54257860e+00 5.52815730e+00 5.51377349e+00 5.49942708e+00 + 5.48511795e+00 5.47084603e+00 5.45661121e+00 5.44241339e+00 5.42825249e+00 + 5.41412840e+00 5.40004103e+00 5.38599029e+00 5.37197608e+00 5.35799830e+00 + 5.34405687e+00 5.33015168e+00 5.31628265e+00 5.30244967e+00 5.28865267e+00 + 5.27489153e+00 5.26116618e+00 5.24747652e+00 5.23382245e+00 5.22020389e+00 + 5.20662074e+00 5.19307291e+00 5.17956030e+00 5.16608284e+00 5.15264042e+00 + 5.13923296e+00 5.12586036e+00 5.11252254e+00 5.09921940e+00 5.08595085e+00 + 5.07271682e+00 5.05951719e+00 5.04635190e+00 5.03322084e+00 5.02012393e+00 + 5.00706108e+00 4.99403221e+00 4.98103722e+00 4.96807602e+00 4.95514853e+00 + 4.94225467e+00 4.92939434e+00 4.91656745e+00 4.90377393e+00 4.89101368e+00 + 4.87828662e+00 4.86559266e+00 4.85293171e+00 4.84030370e+00 4.82770853e+00 + 4.81514612e+00 4.80261638e+00 4.79011924e+00 4.77765460e+00 4.76522238e+00 + 4.75282250e+00 4.74045487e+00 4.72811941e+00 4.71581604e+00 4.70354467e+00 + 4.69130522e+00 4.67909760e+00 4.66692174e+00 4.65477755e+00 4.64266495e+00 + 4.63058386e+00 4.61853420e+00 4.60651588e+00 4.59452882e+00 4.58257294e+00 + 4.57064817e+00 4.55875441e+00 4.54689159e+00 4.53505964e+00 4.52325846e+00 + 4.51148798e+00 4.49974812e+00 4.48803880e+00 4.47635994e+00 4.46471147e+00 + 4.45309329e+00 4.44150534e+00 4.42994754e+00 4.41841980e+00 4.40692206e+00 + 4.39545422e+00 4.38401622e+00 4.37260797e+00 4.36122940e+00 4.34988044e+00 + 4.33856100e+00 4.32727101e+00 4.31601039e+00 4.30477906e+00 4.29357695e+00 + 4.28240399e+00 4.27126010e+00 4.26014520e+00 4.24905921e+00 4.23800207e+00 + 4.22697369e+00 4.21597401e+00 4.20500294e+00 4.19406042e+00 4.18314636e+00 + 4.17226070e+00 4.16140337e+00 4.15057428e+00 4.13977336e+00 4.12900055e+00 + 4.11825576e+00 4.10753893e+00 4.09684998e+00 4.08618884e+00 4.07555544e+00 + 4.06494971e+00 4.05437157e+00 4.04382095e+00 4.03329778e+00 4.02280199e+00 + 4.01233351e+00 4.00189227e+00 3.99147820e+00 3.98109122e+00 3.97073126e+00 + 3.96039826e+00 3.95009215e+00 3.93981285e+00 3.92956029e+00 3.91933442e+00 + 3.90913515e+00 3.89896241e+00 3.88881615e+00 3.87869628e+00 3.86860275e+00 + 3.85853548e+00 3.84849440e+00 3.83847945e+00 3.82849056e+00 3.81852765e+00 + 3.80859068e+00 3.79867955e+00 3.78879422e+00 3.77893460e+00 3.76910064e+00 + 3.75929227e+00 3.74950942e+00 3.73975203e+00 3.73002002e+00 3.72031334e+00 + 3.71063191e+00 3.70097568e+00 3.69134457e+00 3.68173852e+00 3.67215746e+00 + 3.66260134e+00 3.65307008e+00 3.64356362e+00 3.63408190e+00 3.62462485e+00 + 3.61519241e+00 3.60578451e+00 3.59640109e+00 3.58704209e+00 3.57770744e+00 + 3.56839708e+00 3.55911095e+00 3.54984898e+00 3.54061111e+00 3.53139728e+00 + 3.52220742e+00 3.51304148e+00 3.50389939e+00 3.49478108e+00 3.48568651e+00 + 3.47661559e+00 3.46756829e+00 3.45854452e+00 3.44954423e+00 3.44056737e+00 + 3.43161386e+00 3.42268365e+00 3.41377668e+00 3.40489289e+00 3.39603221e+00 + 3.38719459e+00 3.37837997e+00 3.36958828e+00 3.36081947e+00 3.35207348e+00 + 3.34335025e+00 3.33464972e+00 3.32597183e+00 3.31731651e+00 3.30868372e+00 + 3.30007340e+00 3.29148548e+00 3.28291991e+00 3.27437460e+00 3.26573446e+00 + 3.25693384e+00 3.24797415e+00 3.23885681e+00 3.22958325e+00 3.22015492e+00 + 3.21057326e+00 3.20083974e+00 3.19095585e+00 3.18092306e+00 3.17074289e+00 + 3.16041685e+00 3.14994645e+00 3.13933322e+00 3.12857873e+00 3.11768450e+00 + 3.10665212e+00 3.09548315e+00 3.08417917e+00 3.07274177e+00 3.06117256e+00 + 3.04947314e+00 3.03764512e+00 3.02569014e+00 3.01360983e+00 3.00140582e+00 + 2.98907976e+00 2.97663331e+00 2.96406812e+00 2.95138588e+00 2.93858824e+00 + 2.92567690e+00 2.91265353e+00 2.89951983e+00 2.88627750e+00 2.87292824e+00 + 2.85947376e+00 2.84591578e+00 2.83225600e+00 2.81849615e+00 2.80463796e+00 + 2.79068315e+00 2.77663346e+00 2.76249063e+00 2.74825640e+00 2.73393251e+00 + 2.71952069e+00 2.70502271e+00 2.69044032e+00 2.67577526e+00 2.66102928e+00 + 2.64620415e+00 2.63130163e+00 2.61632346e+00 2.60127141e+00 2.58614724e+00 + 2.57095271e+00 2.55568958e+00 2.54035962e+00 2.52496457e+00 2.50950621e+00 + 2.49398629e+00 2.47840657e+00 2.46276881e+00 2.44707477e+00 2.43132620e+00 + 2.41552486e+00 2.39967249e+00 2.38377086e+00 2.36782170e+00 2.35182676e+00 + 2.33578779e+00 2.31970652e+00 2.30358470e+00 2.28742405e+00 2.27122632e+00 + 2.25499322e+00 2.23872647e+00 2.22242781e+00 2.20609894e+00 2.18974157e+00 + 2.17335742e+00 2.15694817e+00 2.14051554e+00 2.12406122e+00 2.10758688e+00 + 2.09109421e+00 2.07458489e+00 2.05806058e+00 2.04152296e+00 2.02497368e+00 + 2.00841439e+00 1.99184673e+00 1.97527235e+00 1.95869288e+00 1.94210994e+00 + 1.92552516e+00 1.90894014e+00 1.89235648e+00 1.87577578e+00 1.85919964e+00 + 1.84262963e+00 1.82606732e+00 1.80951428e+00 1.79297207e+00 1.77644223e+00 + 1.75992630e+00 1.74342581e+00 1.72694228e+00 1.71047724e+00 1.69403217e+00 + 1.67760858e+00 1.66120794e+00 1.64483175e+00 1.62848145e+00 1.61215850e+00 + 1.59586437e+00 1.57960046e+00 1.56336823e+00 1.54716907e+00 1.53100440e+00 + 1.51487561e+00 1.49878408e+00 1.48273119e+00 1.46671830e+00 1.45074676e+00 + 1.43481791e+00 1.41893309e+00 1.40309360e+00 1.38730076e+00 1.37155587e+00 + 1.35586020e+00 1.34021503e+00 1.32462161e+00 1.30908121e+00 1.29359504e+00 + 1.27816435e+00 1.26279034e+00 1.24747421e+00 1.23221715e+00 1.21702033e+00 + 1.20188492e+00 1.18681208e+00 1.17180293e+00 1.15685861e+00 1.14198022e+00 + 1.12716887e+00 1.11242565e+00 1.09775162e+00 1.08314786e+00 1.06861540e+00 + 1.05415529e+00 1.03976855e+00 1.02545618e+00 1.01121918e+00 9.97058538e-01 + 9.82975218e-01 9.68970178e-01 9.55044358e-01 9.41198688e-01 9.27434083e-01 + 9.13751445e-01 9.00151662e-01 8.86635607e-01 8.73204142e-01 8.59858113e-01 + 8.46598354e-01 8.33425684e-01 8.20340909e-01 8.07344819e-01 7.94438194e-01 + 7.81621797e-01 7.68896378e-01 7.56262673e-01 7.43721404e-01 7.31273280e-01 + 7.18918994e-01 7.06659228e-01 6.94494646e-01 6.82425902e-01 6.70453634e-01 + 6.58578466e-01 6.46801008e-01 6.35121856e-01 6.23541592e-01 6.12060784e-01 + 6.00679988e-01 5.89399741e-01 5.78220572e-01 5.67142991e-01 5.56167497e-01 + 5.45294574e-01 5.34524691e-01 5.23858307e-01 5.13295861e-01 5.02837783e-01 + 4.92484488e-01 4.82236375e-01 4.72093832e-01 4.62057231e-01 4.52126932e-01 + 4.42303279e-01 4.32586605e-01 4.22977227e-01 4.13475449e-01 4.04081562e-01 + 3.94795843e-01 3.85618554e-01 3.76549946e-01 3.67590255e-01 3.58739704e-01 + 3.49998502e-01 3.41366844e-01 3.32844915e-01 3.24432882e-01 3.16130902e-01 + 3.07939119e-01 2.99857661e-01 2.91886645e-01 2.84026175e-01 2.76276342e-01 + 2.68637223e-01 2.61108883e-01 2.53691374e-01 2.46384735e-01 2.39188993e-01 + 2.32104162e-01 2.25130242e-01 2.18267224e-01 2.11515082e-01 2.04873781e-01 + 1.98343273e-01 1.91923497e-01 1.85614380e-01 1.79415837e-01 1.73327772e-01 + 1.67350075e-01 1.61482625e-01 1.55725291e-01 1.50077926e-01 1.44540377e-01 + 1.39112474e-01 1.33794039e-01 1.28584880e-01 1.23484797e-01 1.18493576e-01 + 1.13610993e-01 1.08836811e-01 1.04170785e-01 9.96126567e-02 9.51621582e-02 + 9.08190104e-02 8.65829234e-02 8.24535969e-02 7.84307201e-02 7.45139717e-02 + 7.07030202e-02 6.69975236e-02 6.33971302e-02 5.99014780e-02 5.65101949e-02 + 5.32228993e-02 5.00391995e-02 4.69586945e-02 4.39809734e-02 4.11056159e-02 + 3.83321926e-02 3.56602644e-02 3.30893833e-02 3.06190922e-02 2.82489250e-02 + 2.59784067e-02 2.38070535e-02 2.17343729e-02 1.97598640e-02 1.78830174e-02 + 1.61033150e-02 1.44202309e-02 1.28332308e-02 1.13417724e-02 9.94530538e-03 + 8.64327165e-03 7.43510538e-03 6.32023307e-03 5.29807375e-03 4.36803897e-03 + 3.52953302e-03 2.78195295e-03 2.12468873e-03 1.55712334e-03 1.07863288e-03 + 6.88586680e-04 3.86347392e-04 1.71271129e-04 4.27075560e-05 0.00000000e+00 + 2.04047571e-06 2.05095161e-06 2.09195486e-06 2.13377786e-06 2.17643701e-06 + 2.21994900e-06 2.26433090e-06 2.30960010e-06 2.35577433e-06 2.40287169e-06 + 2.45091064e-06 2.49991000e-06 2.54988896e-06 2.60086712e-06 2.65286446e-06 + 2.70590133e-06 2.75999854e-06 2.81517728e-06 2.87145916e-06 2.92886625e-06 + 2.98742104e-06 3.04714647e-06 3.10806596e-06 3.17020336e-06 3.23358303e-06 + 3.29822981e-06 3.36416903e-06 3.43142652e-06 3.50002865e-06 3.57000228e-06 + 3.64137486e-06 3.71417433e-06 3.78842924e-06 3.86416867e-06 3.94142230e-06 + 4.02022042e-06 4.10059389e-06 4.18257420e-06 4.26619350e-06 4.35148453e-06 + 4.43848073e-06 4.52721619e-06 4.61772567e-06 4.71004464e-06 4.80420928e-06 + 4.90025648e-06 4.99822390e-06 5.09814990e-06 5.20007365e-06 5.30403510e-06 + 5.41007497e-06 5.51823482e-06 5.62855704e-06 5.74108485e-06 5.85586235e-06 + 5.97293451e-06 6.09234722e-06 6.21414726e-06 6.33838236e-06 6.46510120e-06 + 6.59435345e-06 6.72618974e-06 6.86066175e-06 6.99782215e-06 7.13772471e-06 + 7.28042424e-06 7.42597666e-06 7.57443900e-06 7.72586945e-06 7.88032734e-06 + 8.03787319e-06 8.19856875e-06 8.36247698e-06 8.52966210e-06 8.70018965e-06 + 8.87412642e-06 9.05154059e-06 9.23250167e-06 9.41708058e-06 9.60534964e-06 + 9.79738263e-06 9.99325479e-06 1.01930429e-05 1.03968252e-05 1.06046816e-05 + 1.08166935e-05 1.10329440e-05 1.12535179e-05 1.14785015e-05 1.17079831e-05 + 1.19420525e-05 1.21808015e-05 1.24243236e-05 1.26727143e-05 1.29260709e-05 + 1.31844927e-05 1.34480809e-05 1.37169388e-05 1.39911718e-05 1.42708873e-05 + 1.45561950e-05 1.48472067e-05 1.51440363e-05 1.54468002e-05 1.57556170e-05 + 1.60706078e-05 1.63918960e-05 1.67196075e-05 1.70538706e-05 1.73948164e-05 + 1.77425785e-05 1.80972932e-05 1.84590994e-05 1.88281389e-05 1.92045563e-05 + 1.95884992e-05 1.99801179e-05 2.03795660e-05 2.07869999e-05 2.12025794e-05 + 2.16264672e-05 2.20588295e-05 2.24998357e-05 2.29496586e-05 2.34084745e-05 + 2.38764631e-05 2.43538078e-05 2.48406958e-05 2.53373177e-05 2.58438682e-05 + 2.63605457e-05 2.68875528e-05 2.74250960e-05 2.79733858e-05 2.85326371e-05 + 2.91030692e-05 2.96849054e-05 3.02783738e-05 3.08837069e-05 3.15011420e-05 + 3.21309210e-05 3.27732907e-05 3.34285027e-05 3.40968139e-05 3.47784861e-05 + 3.54737864e-05 3.61829873e-05 3.69063666e-05 3.76442079e-05 3.83968003e-05 + 3.91644386e-05 3.99474237e-05 4.07460623e-05 4.15606675e-05 4.23915584e-05 + 4.32390606e-05 4.41035062e-05 4.49852339e-05 4.58845893e-05 4.68019247e-05 + 4.77375996e-05 4.86919807e-05 4.96654419e-05 5.06583647e-05 5.16711381e-05 + 5.27041590e-05 5.37578322e-05 5.48325706e-05 5.59287953e-05 5.70469358e-05 + 5.81874303e-05 5.93507257e-05 6.05372778e-05 6.17475516e-05 6.29820212e-05 + 6.42411705e-05 6.55254929e-05 6.68354915e-05 6.81716797e-05 6.95345810e-05 + 7.09247296e-05 7.23426700e-05 7.37889581e-05 7.52641604e-05 7.67688550e-05 + 7.83036314e-05 7.98690912e-05 8.14658477e-05 8.30945266e-05 8.47557661e-05 + 8.64502170e-05 8.81785434e-05 8.99414225e-05 9.17395450e-05 9.35736156e-05 + 9.54443528e-05 9.73524898e-05 9.92987741e-05 1.01283968e-04 1.03308851e-04 + 1.05374214e-04 1.07480868e-04 1.09629638e-04 1.11821367e-04 1.14056912e-04 + 1.16337149e-04 1.18662973e-04 1.21035295e-04 1.23455043e-04 1.25923167e-04 + 1.28440634e-04 1.31008428e-04 1.33627558e-04 1.36299049e-04 1.39023948e-04 + 1.41803323e-04 1.44638262e-04 1.47529876e-04 1.50479299e-04 1.53487686e-04 + 1.56556216e-04 1.59686091e-04 1.62878538e-04 1.66134807e-04 1.69456174e-04 + 1.72843941e-04 1.76299435e-04 1.79824010e-04 1.83419046e-04 1.87085954e-04 + 1.90826168e-04 1.94641156e-04 1.98532411e-04 2.02501458e-04 2.06549852e-04 + 2.10679180e-04 2.14891059e-04 2.19187140e-04 2.23569105e-04 2.28038673e-04 + 2.32597593e-04 2.37247653e-04 2.41990673e-04 2.46828513e-04 2.51763068e-04 + 2.56796271e-04 2.61930094e-04 2.67166549e-04 2.72507687e-04 2.77955601e-04 + 2.83512425e-04 2.89180337e-04 2.94961556e-04 3.00858349e-04 3.06873025e-04 + 3.13007940e-04 3.19265499e-04 3.25648153e-04 3.32158403e-04 3.38798798e-04 + 3.45571942e-04 3.52480486e-04 3.59527138e-04 3.66714659e-04 3.74045863e-04 + 3.81523625e-04 3.89150872e-04 3.96930593e-04 4.04865836e-04 4.12959709e-04 + 4.21215383e-04 4.29636094e-04 4.38225138e-04 4.46985881e-04 4.55921756e-04 + 4.65036262e-04 4.74332970e-04 4.83815523e-04 4.93487634e-04 5.03353093e-04 + 5.13415764e-04 5.23679589e-04 5.34148588e-04 5.44826864e-04 5.55718598e-04 + 5.66828057e-04 5.78159592e-04 5.89717643e-04 6.01506737e-04 6.13531492e-04 + 6.25796617e-04 6.38306917e-04 6.51067293e-04 6.64082741e-04 6.77358361e-04 + 6.90899352e-04 7.04711018e-04 7.18798769e-04 7.33168121e-04 7.47824704e-04 + 7.62774258e-04 7.78022638e-04 7.93575816e-04 8.09439883e-04 8.25621052e-04 + 8.42125661e-04 8.58960174e-04 8.76131183e-04 8.93645413e-04 9.11509723e-04 + 9.29731109e-04 9.48316707e-04 9.67273794e-04 9.86609795e-04 1.00633228e-03 + 1.02644898e-03 1.04696776e-03 1.06789666e-03 1.08924387e-03 1.11101776e-03 + 1.13322685e-03 1.15587984e-03 1.17898559e-03 1.20255316e-03 1.22659177e-03 + 1.25111082e-03 1.27611993e-03 1.30162888e-03 1.32764766e-03 1.35418646e-03 + 1.38125566e-03 1.40886586e-03 1.43702787e-03 1.46575272e-03 1.49505165e-03 + 1.52493613e-03 1.55541785e-03 1.58650875e-03 1.61822099e-03 1.65056700e-03 + 1.68355942e-03 1.71721118e-03 1.75153544e-03 1.78654563e-03 1.82225546e-03 + 1.85867890e-03 1.89583021e-03 1.93372392e-03 1.97237487e-03 2.01179817e-03 + 2.05200925e-03 2.09302385e-03 2.13485800e-03 2.17752809e-03 2.22105080e-03 + 2.26544317e-03 2.31072255e-03 2.35690665e-03 2.40401356e-03 2.45206169e-03 + 2.50106983e-03 2.55105716e-03 2.60204323e-03 2.65404797e-03 2.70709172e-03 + 2.76119524e-03 2.81637966e-03 2.87266659e-03 2.93007801e-03 2.98863639e-03 + 3.04836461e-03 3.10928602e-03 3.17142445e-03 3.23480418e-03 3.29944999e-03 + 3.36538715e-03 3.43264142e-03 3.50123910e-03 3.57120699e-03 3.64257244e-03 + 3.71536332e-03 3.78960809e-03 3.86533575e-03 3.94257589e-03 4.02135868e-03 + 4.10171490e-03 4.18367594e-03 4.26727380e-03 4.35254115e-03 4.43951127e-03 + 4.52821813e-03 4.61869637e-03 4.71098131e-03 4.80510898e-03 4.90111612e-03 + 4.99904022e-03 5.09891950e-03 5.20079293e-03 5.30470026e-03 5.41068205e-03 + 5.51877965e-03 5.62903523e-03 5.74149179e-03 5.85619321e-03 5.97318421e-03 + 6.09251043e-03 6.21421839e-03 6.33835555e-03 6.46497030e-03 6.59411200e-03 + 6.72583098e-03 6.86017857e-03 6.99720713e-03 7.13697005e-03 7.27952178e-03 + 7.42491784e-03 7.57321486e-03 7.72447059e-03 7.87874393e-03 8.03609494e-03 + 8.19658487e-03 8.36027618e-03 8.52723257e-03 8.69751901e-03 8.87120173e-03 + 9.04834830e-03 9.22902762e-03 9.41330992e-03 9.60126687e-03 9.79297152e-03 + 9.98849837e-03 1.01879234e-02 1.03913241e-02 1.05987794e-02 1.08103700e-02 + 1.10261779e-02 1.12462870e-02 1.14707827e-02 1.16997521e-02 1.19332840e-02 + 1.21714690e-02 1.24143995e-02 1.26621696e-02 1.29148754e-02 1.31726148e-02 + 1.34354876e-02 1.37035958e-02 1.39770430e-02 1.42559352e-02 1.45403802e-02 + 1.48304882e-02 1.51263713e-02 1.54281440e-02 1.57359229e-02 1.60498269e-02 + 1.63699774e-02 1.66964980e-02 1.70295147e-02 1.73691561e-02 1.77155533e-02 + 1.80688398e-02 1.84291520e-02 1.87966285e-02 1.91714111e-02 1.95536442e-02 + 1.99434748e-02 2.03410530e-02 2.07465318e-02 2.11600670e-02 2.15818178e-02 + 2.20119461e-02 2.24506171e-02 2.28979992e-02 2.33542642e-02 2.38195870e-02 + 2.42941460e-02 2.47781231e-02 2.52717037e-02 2.57750767e-02 2.62884346e-02 + 2.68119739e-02 2.73458947e-02 2.78904008e-02 2.84457003e-02 2.90120049e-02 + 2.95895307e-02 3.01784978e-02 3.07791305e-02 3.13916574e-02 3.20163116e-02 + 3.26533305e-02 3.33029562e-02 3.39654353e-02 3.46410192e-02 3.53299639e-02 + 3.60325306e-02 3.67489851e-02 3.74795985e-02 3.82246470e-02 3.89844119e-02 + 3.97591800e-02 4.05492435e-02 4.13549000e-02 4.21764528e-02 4.30142108e-02 + 4.38684889e-02 4.47396078e-02 4.56278942e-02 4.65336809e-02 4.74573070e-02 + 4.83991179e-02 4.93594654e-02 5.03387080e-02 5.13372105e-02 5.23553449e-02 + 5.33934898e-02 5.44520309e-02 5.55313610e-02 5.66318801e-02 5.77539956e-02 + 5.88981224e-02 6.00646830e-02 6.12541074e-02 6.24668337e-02 6.37033078e-02 + 6.49639840e-02 6.62493243e-02 6.75597995e-02 6.88958888e-02 7.02580798e-02 + 7.16468690e-02 7.30627619e-02 7.45062728e-02 7.59779252e-02 7.74782520e-02 + 7.90077955e-02 8.05671075e-02 8.21567496e-02 8.37772930e-02 8.54293193e-02 + 8.71134198e-02 8.88301965e-02 9.05802615e-02 9.23642375e-02 9.41827581e-02 + 9.60364675e-02 9.79260210e-02 9.98520852e-02 1.01815338e-01 1.03816468e-01 + 1.05856176e-01 1.07935174e-01 1.10054188e-01 1.12213953e-01 1.14415217e-01 + 1.16658742e-01 1.18945300e-01 1.21275677e-01 1.23650671e-01 1.26071094e-01 + 1.28537770e-01 1.31051536e-01 1.33613243e-01 1.36223754e-01 1.38883946e-01 + 1.41594711e-01 1.44356954e-01 1.47171591e-01 1.50039557e-01 1.52961797e-01 + 1.55939273e-01 1.58972958e-01 1.62063842e-01 1.65212929e-01 1.68421236e-01 + 1.71689797e-01 1.75019659e-01 1.78411885e-01 1.81867550e-01 1.85387748e-01 + 1.88973584e-01 1.92626180e-01 1.96346674e-01 2.00136216e-01 2.03995974e-01 + 2.07927128e-01 2.11930876e-01 2.16008430e-01 2.20161015e-01 2.24389873e-01 + 2.28696261e-01 2.33081449e-01 2.37546724e-01 2.42093385e-01 2.46722749e-01 + 2.51436143e-01 2.56234912e-01 2.61120413e-01 2.66094017e-01 2.71157111e-01 + 2.76311093e-01 2.81557374e-01 2.86897380e-01 2.92332550e-01 2.97864332e-01 + 3.03494190e-01 3.09223599e-01 3.15054044e-01 3.20987022e-01 3.27024041e-01 + 3.33166619e-01 3.39416285e-01 3.45774574e-01 3.52243033e-01 3.58823217e-01 + 3.65516687e-01 3.72325013e-01 3.79249770e-01 3.86292540e-01 3.93454910e-01 + 4.00738470e-01 4.08144814e-01 4.15675541e-01 4.23332251e-01 4.31116542e-01 + 4.39030017e-01 4.47074276e-01 4.55250916e-01 4.63561533e-01 4.72007720e-01 + 4.80591063e-01 4.89313143e-01 4.98175533e-01 5.07179799e-01 5.16327497e-01 + 5.25620170e-01 5.35059350e-01 5.44646556e-01 5.54383291e-01 5.64271040e-01 + 5.74311272e-01 5.84505434e-01 5.94854953e-01 6.05361233e-01 6.16025651e-01 + 6.26849561e-01 6.37834285e-01 6.48981116e-01 6.60291318e-01 6.71766115e-01 + 6.83406701e-01 6.95214229e-01 7.07189811e-01 7.19334521e-01 7.31649384e-01 + 7.44135384e-01 7.56793451e-01 7.69624469e-01 7.82629267e-01 7.95808620e-01 + 8.09163245e-01 8.22693799e-01 8.36400879e-01 8.50285015e-01 8.64346674e-01 + 8.78586252e-01 8.93004073e-01 9.07600389e-01 9.22375377e-01 9.37329134e-01 + 9.52461677e-01 9.67772941e-01 9.83262776e-01 9.98930942e-01 1.01477711e+00 + 1.03080087e+00 1.04700170e+00 1.06337899e+00 1.07993204e+00 1.09666004e+00 + 1.11356207e+00 1.13063713e+00 1.14788410e+00 1.16530174e+00 1.18288873e+00 + 1.20064361e+00 1.21856482e+00 1.23665070e+00 1.25489945e+00 1.27330916e+00 + 1.29187782e+00 1.31060328e+00 1.32948329e+00 1.34851546e+00 1.36769729e+00 + 1.38702617e+00 1.40649935e+00 1.42611396e+00 1.44586702e+00 1.46575542e+00 + 1.48577594e+00 1.50592523e+00 1.52619982e+00 1.54659613e+00 1.56711045e+00 + 1.58773895e+00 1.60847772e+00 1.62932269e+00 1.65026971e+00 1.67131450e+00 + 1.69245268e+00 1.71367978e+00 1.73499120e+00 1.75638226e+00 1.77784817e+00 + 1.79938405e+00 1.82098493e+00 1.84264575e+00 1.86436137e+00 1.88612657e+00 + 1.90793604e+00 1.92978441e+00 1.95166624e+00 1.97357603e+00 1.99550821e+00 + 2.01745715e+00 2.03941720e+00 2.06138263e+00 2.08334768e+00 2.10530657e+00 + 2.12725347e+00 2.14918254e+00 2.17108791e+00 2.19296369e+00 2.21480400e+00 + 2.23660295e+00 2.25835463e+00 2.28005318e+00 2.30169271e+00 2.32326738e+00 + 2.34477136e+00 2.36619884e+00 2.38754407e+00 2.40880133e+00 2.42996492e+00 + 2.45102924e+00 2.47198870e+00 2.49283781e+00 2.51357111e+00 2.53418325e+00 + 2.55466891e+00 2.57502290e+00 2.59524008e+00 2.61531541e+00 2.63524395e+00 + 2.65502086e+00 2.67464139e+00 2.69410090e+00 2.71339486e+00 2.73251886e+00 + 2.75146860e+00 2.77023990e+00 2.78882870e+00 2.80723106e+00 2.82544319e+00 + 2.84346139e+00 2.86128213e+00 2.87890199e+00 2.89631769e+00 2.91352609e+00 + 2.93052419e+00 2.94730912e+00 2.96387815e+00 2.98022870e+00 2.99635831e+00 + 3.01226468e+00 3.02794565e+00 3.04339918e+00 3.05862340e+00 3.07361655e+00 + 3.08837703e+00 3.10290336e+00 3.11719422e+00 3.13124840e+00 3.14506485e+00 + 3.15864262e+00 3.17198093e+00 3.18507910e+00 3.19793658e+00 3.21055297e+00 + 3.22292797e+00 3.23506140e+00 3.24695322e+00 3.25860348e+00 3.27001236e+00 + 3.28118016e+00 3.29210726e+00 3.30279418e+00 3.31324151e+00 3.32344997e+00 + 3.33342036e+00 3.34315358e+00 3.35265062e+00 3.36191256e+00 3.37094056e+00 + 3.37973589e+00 3.38829985e+00 3.39663387e+00 3.40473941e+00 3.41261803e+00 + 3.42027135e+00 3.42770104e+00 3.43490886e+00 3.44189660e+00 3.44866613e+00 + 3.45521936e+00 3.46155824e+00 3.46768480e+00 3.47360108e+00 3.47930919e+00 + 3.48481125e+00 3.49010944e+00 3.49520597e+00 3.50010308e+00 3.50480303e+00 + 3.50930811e+00 3.51362065e+00 3.51774299e+00 3.52167748e+00 3.52542650e+00 + 3.52899245e+00 3.53237772e+00 3.53558474e+00 3.53861594e+00 3.54147374e+00 + 3.54416059e+00 3.54667892e+00 3.54903119e+00 3.55121984e+00 3.55324732e+00 + 3.55511606e+00 3.55682850e+00 3.55838708e+00 3.55979422e+00 3.56105233e+00 + 3.56216384e+00 3.56313112e+00 3.56395658e+00 3.56464257e+00 3.56519147e+00 + 3.56560561e+00 3.56588732e+00 3.56603892e+00 3.56606270e+00 3.56596093e+00 + 3.56573588e+00 3.56538979e+00 3.56492486e+00 3.56434331e+00 3.56364730e+00 + 3.56283899e+00 3.56192051e+00 3.56089397e+00 3.55976147e+00 3.55852505e+00 + 3.55718677e+00 3.55574864e+00 3.55421264e+00 3.55258076e+00 3.55085491e+00 + 3.54903704e+00 3.54712902e+00 3.54513272e+00 3.54304999e+00 3.54088264e+00 + 3.53863246e+00 3.53630122e+00 3.53389065e+00 3.53140248e+00 3.52883839e+00 + 3.52620004e+00 3.52348907e+00 3.52070710e+00 3.51785572e+00 3.51493648e+00 + 3.51195092e+00 3.50890056e+00 3.50578689e+00 3.50261136e+00 3.49937543e+00 + 3.49608051e+00 3.49272798e+00 3.48931922e+00 3.48585557e+00 3.48233835e+00 + 3.47876886e+00 3.47514837e+00 3.47147815e+00 3.46775941e+00 3.46399337e+00 + 3.46018121e+00 3.45632410e+00 3.45242318e+00 3.44847957e+00 3.44449438e+00 + 3.44046868e+00 3.43640354e+00 3.43229999e+00 3.42815906e+00 3.42398175e+00 + 3.41976903e+00 3.41552187e+00 3.41124122e+00 3.40692800e+00 3.40258311e+00 + 3.39820746e+00 3.39380190e+00 3.38936729e+00 3.38490448e+00 3.38041427e+00 + 3.37589748e+00 3.37135489e+00 3.36678728e+00 3.36219540e+00 3.35757999e+00 + 3.35294177e+00 3.34828146e+00 3.34359975e+00 3.33889733e+00 3.33417485e+00 + 3.32943298e+00 3.32467235e+00 3.31989358e+00 3.31509730e+00 3.31028410e+00 + 3.30545456e+00 3.30060926e+00 3.29574877e+00 3.29087362e+00 3.28598437e+00 + 3.28108153e+00 3.27616563e+00 3.27123716e+00 3.26629662e+00 3.26134448e+00 + 3.25638123e+00 3.25140733e+00 3.24642321e+00 3.24142933e+00 3.23642612e+00 + 3.23141399e+00 3.22639337e+00 3.22136464e+00 3.21632821e+00 3.21128447e+00 + 3.20623378e+00 3.20117652e+00 3.19611304e+00 3.19104371e+00 3.18596885e+00 + 3.18088881e+00 3.17580392e+00 3.17071449e+00 3.16562085e+00 3.16052328e+00 + 3.15542211e+00 3.15031760e+00 3.14521006e+00 3.14009976e+00 3.13498697e+00 + 3.12987197e+00 3.12475499e+00 3.11963632e+00 3.11451618e+00 3.10939482e+00 + 3.10427248e+00 3.09914938e+00 3.09402576e+00 3.08890183e+00 3.08377781e+00 + 3.07865391e+00 3.07353033e+00 3.06840726e+00 3.06328491e+00 3.05816347e+00 + 3.05304312e+00 3.04792404e+00 3.04280640e+00 3.03769039e+00 3.03257616e+00 + 3.02746388e+00 3.02235372e+00 3.01724582e+00 3.01214034e+00 3.00703743e+00 + 3.00193723e+00 2.99683988e+00 2.99174552e+00 2.98665429e+00 2.98156632e+00 + 2.97648172e+00 2.97140063e+00 2.96632317e+00 2.96124945e+00 2.95617960e+00 + 2.95111371e+00 2.94605191e+00 2.94099429e+00 2.93594097e+00 2.93089203e+00 + 2.92584759e+00 2.92080773e+00 2.91577254e+00 2.91074213e+00 2.90571657e+00 + 2.90069596e+00 2.89568037e+00 2.89066989e+00 2.88566460e+00 2.88066457e+00 + 2.87566987e+00 2.87068059e+00 2.86569679e+00 2.86071855e+00 2.85574592e+00 + 2.85077897e+00 2.84581777e+00 2.84086238e+00 2.83591285e+00 2.83096925e+00 + 2.82603163e+00 2.82110005e+00 2.81617456e+00 2.81125521e+00 2.80634205e+00 + 2.80143513e+00 2.79653450e+00 2.79164020e+00 2.78675227e+00 2.78187077e+00 + 2.77699573e+00 2.77212719e+00 2.76726520e+00 2.76240978e+00 2.75756098e+00 + 2.75271883e+00 2.74788336e+00 2.74305462e+00 2.73823262e+00 2.73341741e+00 + 2.72860901e+00 2.72380745e+00 2.71901276e+00 2.71422497e+00 2.70944410e+00 + 2.70467018e+00 2.69990323e+00 2.69514328e+00 2.69039035e+00 2.68564445e+00 + 2.68090562e+00 2.67617386e+00 2.67144921e+00 2.66673167e+00 2.66202127e+00 + 2.65731803e+00 2.65262195e+00 2.64793306e+00 2.64325137e+00 2.63857689e+00 + 2.63390964e+00 2.62924963e+00 2.62459688e+00 2.61995139e+00 2.61531318e+00 + 2.61068225e+00 2.60605863e+00 2.60144230e+00 2.59683330e+00 2.59223161e+00 + 2.58763726e+00 2.58305025e+00 2.57847059e+00 2.57389828e+00 2.56933332e+00 + 2.56477573e+00 2.56022551e+00 2.55568267e+00 2.55114720e+00 2.54661911e+00 + 2.54209841e+00 2.53758510e+00 2.53307918e+00 2.52858066e+00 2.52408953e+00 + 2.51960579e+00 2.51512946e+00 2.51066052e+00 2.50619899e+00 2.50174486e+00 + 2.49729812e+00 2.49285879e+00 2.48842685e+00 2.48400232e+00 2.47958518e+00 + 2.47517543e+00 2.47077309e+00 2.46637813e+00 2.46199056e+00 2.45761038e+00 + 2.45323759e+00 2.44887217e+00 2.44451414e+00 2.44016348e+00 2.43582019e+00 + 2.43148426e+00 2.42715571e+00 2.42283451e+00 2.41852066e+00 2.41421416e+00 + 2.40991501e+00 2.40562320e+00 2.40133873e+00 2.39706158e+00 2.39279176e+00 + 2.38852925e+00 2.38427406e+00 2.38002617e+00 2.37578559e+00 2.37155229e+00 + 2.36732629e+00 2.36310756e+00 2.35889611e+00 2.35469192e+00 2.35049500e+00 + 2.34630533e+00 2.34212290e+00 2.33794771e+00 2.33377975e+00 2.32961902e+00 + 2.32546550e+00 2.32131918e+00 2.31718007e+00 2.31304815e+00 2.30892341e+00 + 2.30480585e+00 2.30069545e+00 2.29659221e+00 2.29249613e+00 2.28840718e+00 + 2.28432536e+00 2.28025067e+00 2.27618310e+00 2.27212263e+00 2.26806926e+00 + 2.26402298e+00 2.25998377e+00 2.25595164e+00 2.25192657e+00 2.24790854e+00 + 2.24389756e+00 2.23989362e+00 2.23589669e+00 2.23190679e+00 2.22792388e+00 + 2.22394797e+00 2.21997904e+00 2.21601709e+00 2.21206211e+00 2.20811408e+00 + 2.20417300e+00 2.20023885e+00 2.19631163e+00 2.19239132e+00 2.18847792e+00 + 2.18457142e+00 2.18067180e+00 2.17677906e+00 2.17289318e+00 2.16901416e+00 + 2.16514198e+00 2.16127664e+00 2.15741813e+00 2.15356642e+00 2.14972153e+00 + 2.14588342e+00 2.14205210e+00 2.13822755e+00 2.13440977e+00 2.13059873e+00 + 2.12679444e+00 2.12299688e+00 2.11920604e+00 2.11542191e+00 2.11164448e+00 + 2.10787374e+00 2.10410968e+00 2.10035229e+00 2.09660155e+00 2.09285746e+00 + 2.08912001e+00 2.08538918e+00 2.08166497e+00 2.07794736e+00 2.07423635e+00 + 2.07053191e+00 2.06683406e+00 2.06314276e+00 2.05945801e+00 2.05577981e+00 + 2.05210813e+00 2.04844298e+00 2.04478433e+00 2.04113218e+00 2.03748651e+00 + 2.03384733e+00 2.03021461e+00 2.02658834e+00 2.02296852e+00 2.01935513e+00 + 2.01574817e+00 2.01214761e+00 2.00855346e+00 2.00496570e+00 2.00138432e+00 + 1.99780931e+00 1.99424066e+00 1.99067835e+00 1.98712239e+00 1.98357275e+00 + 1.98002942e+00 1.97649240e+00 1.97296168e+00 1.96943724e+00 1.96591907e+00 + 1.96240717e+00 1.95890152e+00 1.95540211e+00 1.95190893e+00 1.94842197e+00 + 1.94494122e+00 1.94146667e+00 1.93799831e+00 1.93453613e+00 1.93108011e+00 + 1.92763025e+00 1.92418654e+00 1.92074896e+00 1.91731750e+00 1.91389217e+00 + 1.91047293e+00 1.90705979e+00 1.90365273e+00 1.90025175e+00 1.89685682e+00 + 1.89346795e+00 1.89008512e+00 1.88670832e+00 1.88333754e+00 1.87997276e+00 + 1.87661399e+00 1.87326121e+00 1.86991440e+00 1.86657357e+00 1.86323869e+00 + 1.85990976e+00 1.85658676e+00 1.85326969e+00 1.84995854e+00 1.84665329e+00 + 1.84335394e+00 1.84006048e+00 1.83677289e+00 1.83349116e+00 1.83021529e+00 + 1.82694527e+00 1.82368107e+00 1.82042271e+00 1.81717015e+00 1.81392340e+00 + 1.81068244e+00 1.80744727e+00 1.80421786e+00 1.80099422e+00 1.79777634e+00 + 1.79456419e+00 1.79135778e+00 1.78815710e+00 1.78496212e+00 1.78177285e+00 + 1.77858926e+00 1.77541136e+00 1.77223914e+00 1.76907257e+00 1.76591166e+00 + 1.76275639e+00 1.75960675e+00 1.75646274e+00 1.75332434e+00 1.75019154e+00 + 1.74706433e+00 1.74394271e+00 1.74082665e+00 1.73771617e+00 1.73461123e+00 + 1.73151184e+00 1.72841799e+00 1.72532965e+00 1.72224683e+00 1.71916952e+00 + 1.71609770e+00 1.71303137e+00 1.70997051e+00 1.70691511e+00 1.70386518e+00 + 1.70082068e+00 1.69778163e+00 1.69474800e+00 1.69171979e+00 1.68869699e+00 + 1.68567958e+00 1.68266757e+00 1.67966093e+00 1.67665967e+00 1.67366376e+00 + 1.67067320e+00 1.66768799e+00 1.66470810e+00 1.66173354e+00 1.65876429e+00 + 1.65580034e+00 1.65284169e+00 1.64988832e+00 1.64694023e+00 1.64399740e+00 + 1.64105983e+00 1.63812751e+00 1.63520042e+00 1.63227856e+00 1.62936192e+00 + 1.62645049e+00 1.62354426e+00 1.62064322e+00 1.61774737e+00 1.61485669e+00 + 1.61197117e+00 1.60909080e+00 1.60621558e+00 1.60334550e+00 1.60048054e+00 + 1.59762070e+00 1.59476597e+00 1.59191634e+00 1.58907180e+00 1.58623234e+00 + 1.58339795e+00 1.58056863e+00 1.57774436e+00 1.57492513e+00 1.57211094e+00 + 1.56930178e+00 1.56649764e+00 1.56369851e+00 1.56090438e+00 1.55811524e+00 + 1.55533108e+00 1.55255190e+00 1.54977768e+00 1.54700842e+00 1.54424410e+00 + 1.54148473e+00 1.53873028e+00 1.53598076e+00 1.53323614e+00 1.53049643e+00 + 1.52776162e+00 1.52503169e+00 1.52230664e+00 1.51958646e+00 1.51687113e+00 + 1.51416066e+00 1.51145503e+00 1.50875424e+00 1.50605826e+00 1.50336711e+00 + 1.50068077e+00 1.49799922e+00 1.49532247e+00 1.49265049e+00 1.48998329e+00 + 1.48732086e+00 1.48466319e+00 1.48201026e+00 1.47936207e+00 1.47671861e+00 + 1.47407988e+00 1.47144586e+00 1.46881655e+00 1.46619193e+00 1.46357201e+00 + 1.46095676e+00 1.45834619e+00 1.45574029e+00 1.45313903e+00 1.45054243e+00 + 1.44795047e+00 1.44536313e+00 1.44278042e+00 1.44020233e+00 1.43762884e+00 + 1.43505995e+00 1.43249565e+00 1.42993593e+00 1.42738079e+00 1.42483021e+00 + 1.42228418e+00 1.41974271e+00 1.41720578e+00 1.41467338e+00 1.41214550e+00 + 1.40962214e+00 1.40710330e+00 1.40458895e+00 1.40207909e+00 1.39957372e+00 + 1.39707283e+00 1.39457640e+00 1.39208443e+00 1.38959692e+00 1.38711385e+00 + 1.38463522e+00 1.38216102e+00 1.37969124e+00 1.37722587e+00 1.37476490e+00 + 1.37230834e+00 1.36985616e+00 1.36740837e+00 1.36496495e+00 1.36252589e+00 + 1.36009119e+00 1.35766085e+00 1.35523484e+00 1.35281317e+00 1.35039583e+00 + 1.34798281e+00 1.34557410e+00 1.34316969e+00 1.34076958e+00 1.33837375e+00 + 1.33598221e+00 1.33359495e+00 1.33121194e+00 1.32883320e+00 1.32645870e+00 + 1.32408845e+00 1.32172244e+00 1.31936065e+00 1.31700308e+00 1.31464973e+00 + 1.31230058e+00 1.30995562e+00 1.30761486e+00 1.30527828e+00 1.30294588e+00 + 1.30061764e+00 1.29829356e+00 1.29597364e+00 1.29365786e+00 1.29134622e+00 + 1.28903871e+00 1.28673532e+00 1.28443605e+00 1.28214089e+00 1.27984983e+00 + 1.27756286e+00 1.27527998e+00 1.27300118e+00 1.27072645e+00 1.26845578e+00 + 1.26618917e+00 1.26392662e+00 1.26166810e+00 1.25941362e+00 1.25716317e+00 + 1.25491674e+00 1.25267433e+00 1.25043592e+00 1.24820151e+00 1.24597109e+00 + 1.24374466e+00 1.24152221e+00 1.23930373e+00 1.23708921e+00 1.23487865e+00 + 1.23267204e+00 1.23046938e+00 1.22827064e+00 1.22607584e+00 1.22388496e+00 + 1.22169800e+00 1.21951494e+00 1.21733578e+00 1.21516052e+00 1.21298915e+00 + 1.21082165e+00 1.20865803e+00 1.20649827e+00 1.20434237e+00 1.20219033e+00 + 1.20004213e+00 1.19789777e+00 1.19575724e+00 1.19362053e+00 1.19148765e+00 + 1.18935857e+00 1.18723330e+00 1.18511183e+00 1.18299415e+00 1.18088025e+00 + 1.17877013e+00 1.17666378e+00 1.17456119e+00 1.17246236e+00 1.17036728e+00 + 1.16827595e+00 1.16618835e+00 1.16410448e+00 1.16202434e+00 1.15994791e+00 + 1.15787520e+00 1.15580618e+00 1.15374087e+00 1.15167924e+00 1.14962130e+00 + 1.14756704e+00 1.14551644e+00 1.14346951e+00 1.14142624e+00 1.13938662e+00 + 1.13735064e+00 1.13531831e+00 1.13328960e+00 1.13126452e+00 1.12924306e+00 + 1.12722521e+00 1.12521096e+00 1.12320032e+00 1.12119326e+00 1.11918980e+00 + 1.11718991e+00 1.11519360e+00 1.11320085e+00 1.11121167e+00 1.10922604e+00 + 1.10724396e+00 1.10526542e+00 1.10329041e+00 1.10131893e+00 1.09935098e+00 + 1.09738655e+00 1.09542562e+00 1.09346820e+00 1.09151427e+00 1.08956384e+00 + 1.08761689e+00 1.08567342e+00 1.08373343e+00 1.08179690e+00 1.07986383e+00 + 1.07793421e+00 1.07600805e+00 1.07408532e+00 1.07216603e+00 1.07025017e+00 + 1.06833774e+00 1.06642872e+00 1.06452311e+00 1.06262091e+00 1.06072211e+00 + 1.05882670e+00 1.05693467e+00 1.05504603e+00 1.05316076e+00 1.05127886e+00 + 1.04940033e+00 1.04752515e+00 1.04565332e+00 1.04378484e+00 1.04191969e+00 + 1.04005788e+00 1.03819939e+00 1.03634423e+00 1.03449238e+00 1.03264384e+00 + 1.03079860e+00 1.02895666e+00 1.02711801e+00 1.02528265e+00 1.02345057e+00 + 1.02162176e+00 1.01979621e+00 1.01797393e+00 1.01615491e+00 1.01433914e+00 + 1.01252661e+00 1.01071732e+00 1.00891126e+00 1.00710843e+00 1.00530883e+00 + 1.00351243e+00 1.00171925e+00 9.99929274e-01 9.98142494e-01 9.96358908e-01 + 9.94578508e-01 9.92801290e-01 9.91027248e-01 9.89256375e-01 9.87488667e-01 + 9.85724118e-01 9.83962722e-01 9.82204473e-01 9.80449366e-01 9.78697395e-01 + 9.76948555e-01 9.75202840e-01 9.73460244e-01 9.71720763e-01 9.69984389e-01 + 9.68251118e-01 9.66520945e-01 9.64793863e-01 9.63069867e-01 9.61348952e-01 + 9.59631112e-01 9.57916341e-01 9.56204635e-01 9.54495987e-01 9.52790393e-01 + 9.51087846e-01 9.49388341e-01 9.47691874e-01 9.45998438e-01 9.44308027e-01 + 9.42620638e-01 9.40936263e-01 9.39254899e-01 9.37576539e-01 9.35901178e-01 + 9.34228810e-01 9.32559431e-01 9.30893035e-01 9.29229617e-01 9.27569171e-01 + 9.25911692e-01 9.24257175e-01 9.22605615e-01 9.20957005e-01 9.19311342e-01 + 9.17668619e-01 9.16028831e-01 9.14391974e-01 9.12758042e-01 9.11127029e-01 + 9.09498931e-01 9.07873742e-01 9.06251457e-01 9.04632071e-01 9.03015578e-01 + 9.01401974e-01 8.99791254e-01 8.98183411e-01 8.96578442e-01 8.94976341e-01 + 8.93377102e-01 8.91780721e-01 8.90187193e-01 8.88596512e-01 8.87008674e-01 + 8.85423673e-01 8.83841504e-01 8.82262163e-01 8.80685643e-01 8.79111941e-01 + 8.77541050e-01 8.75972967e-01 8.74407686e-01 8.72845201e-01 8.71285509e-01 + 8.69728604e-01 8.68174481e-01 8.66623135e-01 8.65074560e-01 8.63528754e-01 + 8.61985709e-01 8.60445422e-01 8.58907887e-01 8.57373099e-01 8.55841054e-01 + 8.54311746e-01 8.52785172e-01 8.51261325e-01 8.49740201e-01 8.48201192e-01 + 8.46617382e-01 8.44988908e-01 8.43316032e-01 8.41599021e-01 8.39838147e-01 + 8.38033686e-01 8.36185917e-01 8.34295124e-01 8.32361596e-01 8.30385625e-01 + 8.28367507e-01 8.26307542e-01 8.24206035e-01 8.22063293e-01 8.19879628e-01 + 8.17655357e-01 8.15390797e-01 8.13086273e-01 8.10742111e-01 8.08358641e-01 + 8.05936196e-01 8.03475115e-01 8.00975736e-01 7.98438405e-01 7.95863469e-01 + 7.93251278e-01 7.90602186e-01 7.87916549e-01 7.85194728e-01 7.82437085e-01 + 7.79643987e-01 7.76815803e-01 7.73952904e-01 7.71055665e-01 7.68124463e-01 + 7.65159679e-01 7.62161696e-01 7.59130898e-01 7.56067674e-01 7.52972415e-01 + 7.49845513e-01 7.46687363e-01 7.43498364e-01 7.40278916e-01 7.37029420e-01 + 7.33750281e-01 7.30441906e-01 7.27104703e-01 7.23739083e-01 7.20345459e-01 + 7.16924244e-01 7.13475856e-01 7.10000712e-01 7.06499233e-01 7.02971840e-01 + 6.99418956e-01 6.95841006e-01 6.92238416e-01 6.88611614e-01 6.84961030e-01 + 6.81287093e-01 6.77590236e-01 6.73870892e-01 6.70129494e-01 6.66366479e-01 + 6.62582283e-01 6.58777343e-01 6.54952099e-01 6.51106988e-01 6.47242453e-01 + 6.43358933e-01 6.39456870e-01 6.35536708e-01 6.31598889e-01 6.27643857e-01 + 6.23672057e-01 6.19683933e-01 6.15679931e-01 6.11660495e-01 6.07626073e-01 + 6.03577111e-01 5.99514054e-01 5.95437349e-01 5.91347444e-01 5.87244785e-01 + 5.83129819e-01 5.79002992e-01 5.74864752e-01 5.70715544e-01 5.66555816e-01 + 5.62386013e-01 5.58206581e-01 5.54017965e-01 5.49820611e-01 5.45614964e-01 + 5.41401466e-01 5.37180563e-01 5.32952696e-01 5.28718309e-01 5.24477842e-01 + 5.20231737e-01 5.15980433e-01 5.11724371e-01 5.07463987e-01 5.03199721e-01 + 4.98932007e-01 4.94661282e-01 4.90387980e-01 4.86112534e-01 4.81835376e-01 + 4.77556936e-01 4.73277645e-01 4.68997930e-01 4.64718219e-01 4.60438936e-01 + 4.56160507e-01 4.51883352e-01 4.47607894e-01 4.43334552e-01 4.39063743e-01 + 4.34795884e-01 4.30531389e-01 4.26270671e-01 4.22014140e-01 4.17762207e-01 + 4.13515277e-01 4.09273757e-01 4.05038049e-01 4.00808555e-01 3.96585674e-01 + 3.92369804e-01 3.88161340e-01 3.83960674e-01 3.79768198e-01 3.75584299e-01 + 3.71409365e-01 3.67243780e-01 3.63087924e-01 3.58942178e-01 3.54806918e-01 + 3.50682519e-01 3.46569353e-01 3.42467789e-01 3.38378195e-01 3.34300933e-01 + 3.30236368e-01 3.26184857e-01 3.22146757e-01 3.18122421e-01 3.14112201e-01 + 3.10116445e-01 3.06135499e-01 3.02169705e-01 2.98219402e-01 2.94284928e-01 + 2.90366616e-01 2.86464798e-01 2.82579801e-01 2.78711951e-01 2.74861569e-01 + 2.71028975e-01 2.67214484e-01 2.63418409e-01 2.59641060e-01 2.55882743e-01 + 2.52143761e-01 2.48424414e-01 2.44725000e-01 2.41045812e-01 2.37387139e-01 + 2.33749270e-01 2.30132488e-01 2.26537072e-01 2.22963301e-01 2.19411448e-01 + 2.15881782e-01 2.12374571e-01 2.08890078e-01 2.05428563e-01 2.01990283e-01 + 1.98575490e-01 1.95184433e-01 1.91817359e-01 1.88474510e-01 1.85156124e-01 + 1.81862438e-01 1.78593682e-01 1.75350084e-01 1.72131869e-01 1.68939258e-01 + 1.65772468e-01 1.62631713e-01 1.59517201e-01 1.56429140e-01 1.53367731e-01 + 1.50333174e-01 1.47325663e-01 1.44345390e-01 1.41392542e-01 1.38467304e-01 + 1.35569855e-01 1.32700372e-01 1.29859028e-01 1.27045990e-01 1.24261425e-01 + 1.21505494e-01 1.18778353e-01 1.16080157e-01 1.13411056e-01 1.10771196e-01 + 1.08160719e-01 1.05579764e-01 1.03028466e-01 1.00506954e-01 9.80153575e-02 + 9.55537985e-02 9.31223968e-02 9.07212680e-02 8.83505241e-02 8.60102730e-02 + 8.37006190e-02 8.14216626e-02 7.91735004e-02 7.69562251e-02 7.47699258e-02 + 7.26146878e-02 7.04905924e-02 6.83977173e-02 6.63361363e-02 6.43059195e-02 + 6.23071332e-02 6.03398398e-02 5.84040982e-02 5.64999633e-02 5.46274863e-02 + 5.27867148e-02 5.09776925e-02 4.92004594e-02 4.74550517e-02 4.57415023e-02 + 4.40598398e-02 4.24100894e-02 4.07922728e-02 3.92064078e-02 3.76525084e-02 + 3.61305853e-02 3.46406454e-02 3.31826918e-02 3.17567243e-02 3.03627389e-02 + 2.90007281e-02 2.76706807e-02 2.63725820e-02 2.51064140e-02 2.38721547e-02 + 2.26697789e-02 2.14992579e-02 2.03605594e-02 1.92536477e-02 1.81784835e-02 + 1.71350243e-02 1.61232240e-02 1.51430332e-02 1.41943991e-02 1.32772654e-02 + 1.23915726e-02 1.15372579e-02 1.07142551e-02 9.92249463e-03 9.16190382e-03 + 8.43240666e-03 7.73392391e-03 7.06637314e-03 6.42966871e-03 5.82372182e-03 + 5.24844054e-03 4.70372977e-03 4.18949135e-03 3.70562400e-03 3.25202343e-03 + 2.82858225e-03 2.43519012e-03 2.07173366e-03 1.73809655e-03 1.43415952e-03 + 1.15980039e-03 9.14894082e-04 6.99312635e-04 5.12925259e-04 3.55598341e-04 + 2.27195472e-04 1.27577478e-04 5.66024399e-05 1.41257221e-05 0.00000000e+00 + 5.11971098e-01 5.11971098e-01 5.17242510e-01 5.23233505e-01 5.29293369e-01 + 5.35422881e-01 5.41622827e-01 5.47894004e-01 5.54237214e-01 5.60653272e-01 + 5.67142999e-01 5.73707225e-01 5.80346789e-01 5.87062542e-01 5.93855339e-01 + 6.00726049e-01 6.07675547e-01 6.14704719e-01 6.21814461e-01 6.29005677e-01 + 6.36279282e-01 6.43636201e-01 6.51077366e-01 6.58603723e-01 6.66216226e-01 + 6.73915839e-01 6.81703537e-01 6.89580304e-01 6.97547137e-01 7.05605040e-01 + 7.13755031e-01 7.21998138e-01 7.30335397e-01 7.38767858e-01 7.47296582e-01 + 7.55922638e-01 7.64647111e-01 7.73471093e-01 7.82395690e-01 7.91422019e-01 + 8.00551207e-01 8.09784394e-01 8.19122734e-01 8.28567388e-01 8.38119534e-01 + 8.47780359e-01 8.57551064e-01 8.67432860e-01 8.77426973e-01 8.87534640e-01 + 8.97757111e-01 9.08095650e-01 9.18551533e-01 9.29126046e-01 9.39820494e-01 + 9.50636190e-01 9.61574463e-01 9.72636655e-01 9.83824120e-01 9.95138227e-01 + 1.00658036e+00 1.01815191e+00 1.02985430e+00 1.04168894e+00 1.05365727e+00 + 1.06576075e+00 1.07800084e+00 1.09037902e+00 1.10289680e+00 1.11555567e+00 + 1.12835717e+00 1.14130283e+00 1.15439422e+00 1.16763289e+00 1.18102044e+00 + 1.19455846e+00 1.20824858e+00 1.22209242e+00 1.23609162e+00 1.25024786e+00 + 1.26456280e+00 1.27903815e+00 1.29367562e+00 1.30847692e+00 1.32344380e+00 + 1.33857802e+00 1.35388135e+00 1.36935559e+00 1.38500254e+00 1.40082403e+00 + 1.41682189e+00 1.43299799e+00 1.44935419e+00 1.46589240e+00 1.48261451e+00 + 1.49952245e+00 1.51661817e+00 1.53390362e+00 1.55138079e+00 1.56905166e+00 + 1.58691825e+00 1.60498258e+00 1.62324671e+00 1.64171270e+00 1.66038262e+00 + 1.67925859e+00 1.69834272e+00 1.71763713e+00 1.73714400e+00 1.75686548e+00 + 1.77680377e+00 1.79696108e+00 1.81733963e+00 1.83794166e+00 1.85876944e+00 + 1.87982524e+00 1.90111137e+00 1.92263014e+00 1.94438389e+00 1.96637497e+00 + 1.98860574e+00 2.01107861e+00 2.03379597e+00 2.05676026e+00 2.07997391e+00 + 2.10343939e+00 2.12715919e+00 2.15113579e+00 2.17537172e+00 2.19986952e+00 + 2.22463173e+00 2.24966092e+00 2.27495969e+00 2.30053064e+00 2.32637640e+00 + 2.35249962e+00 2.37890294e+00 2.40558905e+00 2.43256065e+00 2.45982045e+00 + 2.48737117e+00 2.51521557e+00 2.54335641e+00 2.57179648e+00 2.60053857e+00 + 2.62958549e+00 2.65894009e+00 2.68860520e+00 2.71858370e+00 2.74887845e+00 + 2.77949237e+00 2.81042835e+00 2.84168934e+00 2.87327827e+00 2.90519809e+00 + 2.93745179e+00 2.97004235e+00 3.00297276e+00 3.03624605e+00 3.06986525e+00 + 3.10383339e+00 3.13815354e+00 3.17282876e+00 3.20786213e+00 3.24325674e+00 + 3.27901571e+00 3.31514214e+00 3.35163917e+00 3.38850993e+00 3.42575757e+00 + 3.46338525e+00 3.50139614e+00 3.53979341e+00 3.57858025e+00 3.61775985e+00 + 3.65733542e+00 3.69731016e+00 3.73768729e+00 3.77847002e+00 3.81966159e+00 + 3.86126523e+00 3.90328416e+00 3.94572164e+00 3.98858089e+00 4.03186518e+00 + 4.07557773e+00 4.11972181e+00 4.16430066e+00 4.20931753e+00 4.25477566e+00 + 4.30067831e+00 4.34702870e+00 4.39383010e+00 4.44108572e+00 4.48879881e+00 + 4.53697258e+00 4.58561026e+00 4.63471506e+00 4.68429018e+00 4.73433881e+00 + 4.78486415e+00 4.83586936e+00 4.88735761e+00 4.93933204e+00 4.99179578e+00 + 5.04475196e+00 5.09820369e+00 5.15215403e+00 5.20660607e+00 5.26156285e+00 + 5.31702739e+00 5.37300271e+00 5.42949179e+00 5.48649757e+00 5.54402301e+00 + 5.60207099e+00 5.66064441e+00 5.71974611e+00 5.77937891e+00 5.83954559e+00 + 5.90024891e+00 5.96149159e+00 6.02327631e+00 6.08560572e+00 6.14848241e+00 + 6.21190897e+00 6.27588790e+00 6.34042169e+00 6.40551278e+00 6.47116356e+00 + 6.53737636e+00 6.60415348e+00 6.67149715e+00 6.73940957e+00 6.80789285e+00 + 6.87694909e+00 6.94658030e+00 7.01678842e+00 7.08757537e+00 7.15894297e+00 + 7.23089300e+00 7.30342714e+00 7.37654704e+00 7.45025425e+00 7.52455027e+00 + 7.59943651e+00 7.67491431e+00 7.75098493e+00 7.82764955e+00 7.90490929e+00 + 7.98276514e+00 8.06121804e+00 8.14026884e+00 8.21991829e+00 8.30016706e+00 + 8.38101571e+00 8.46246472e+00 8.54451447e+00 8.62716524e+00 8.71041720e+00 + 8.79427042e+00 8.87872489e+00 8.96378046e+00 9.04943689e+00 9.13569381e+00 + 9.22255077e+00 9.31000717e+00 9.39806232e+00 9.48671539e+00 9.57596544e+00 + 9.66581142e+00 9.75625214e+00 9.84728628e+00 9.93891240e+00 1.00311289e+01 + 1.01239342e+01 1.02173263e+01 1.03113033e+01 1.04058631e+01 1.05010035e+01 + 1.05967220e+01 1.06930162e+01 1.07898833e+01 1.08873205e+01 1.09853250e+01 + 1.10838934e+01 1.11830227e+01 1.12827094e+01 1.13829499e+01 1.14837404e+01 + 1.15850772e+01 1.16869562e+01 1.17893732e+01 1.18923238e+01 1.19958035e+01 + 1.20998077e+01 1.22043314e+01 1.23093699e+01 1.24149177e+01 1.25209698e+01 + 1.26275204e+01 1.27345640e+01 1.28420948e+01 1.29501068e+01 1.30585938e+01 + 1.31675494e+01 1.32769672e+01 1.33868405e+01 1.34971625e+01 1.36079262e+01 + 1.37191244e+01 1.38307497e+01 1.39427946e+01 1.40552516e+01 1.41681126e+01 + 1.42813698e+01 1.43950148e+01 1.45090394e+01 1.46234351e+01 1.47381932e+01 + 1.48533048e+01 1.49687609e+01 1.50845524e+01 1.52006699e+01 1.53171040e+01 + 1.54338449e+01 1.55508829e+01 1.56682081e+01 1.57858103e+01 1.59036792e+01 + 1.60218045e+01 1.61401756e+01 1.62587818e+01 1.63776122e+01 1.64966559e+01 + 1.66159016e+01 1.67353383e+01 1.68549545e+01 1.69747385e+01 1.70946789e+01 + 1.72147639e+01 1.73349814e+01 1.74553195e+01 1.75757662e+01 1.76963091e+01 + 1.78169358e+01 1.79376340e+01 1.80583911e+01 1.81791944e+01 1.83000312e+01 + 1.84208886e+01 1.85417538e+01 1.86626136e+01 1.87834551e+01 1.89042651e+01 + 1.90250303e+01 1.91457375e+01 1.92663733e+01 1.93869243e+01 1.95073771e+01 + 1.96277181e+01 1.97479338e+01 1.98680106e+01 1.99879349e+01 2.01076930e+01 + 2.02272714e+01 2.03466562e+01 2.04658338e+01 2.05847906e+01 2.07035127e+01 + 2.08219864e+01 2.09401981e+01 2.10581341e+01 2.11757807e+01 2.12931242e+01 + 2.14101510e+01 2.15268475e+01 2.16432002e+01 2.17591956e+01 2.18748201e+01 + 2.19900603e+01 2.21049030e+01 2.22193347e+01 2.23333424e+01 2.24469127e+01 + 2.25600327e+01 2.26726893e+01 2.27848696e+01 2.28965608e+01 2.30077502e+01 + 2.31184251e+01 2.32285731e+01 2.33381817e+01 2.34472387e+01 2.35557318e+01 + 2.36636490e+01 2.37709785e+01 2.38777084e+01 2.39838270e+01 2.40893229e+01 + 2.41941847e+01 2.42984012e+01 2.44019613e+01 2.45048542e+01 2.46070690e+01 + 2.47085951e+01 2.48094223e+01 2.49095401e+01 2.50089387e+01 2.51076079e+01 + 2.52055383e+01 2.53027201e+01 2.53991441e+01 2.54948011e+01 2.55896821e+01 + 2.56837784e+01 2.57770813e+01 2.58695826e+01 2.59612740e+01 2.60521475e+01 + 2.61421953e+01 2.62314100e+01 2.63197840e+01 2.64073104e+01 2.64939820e+01 + 2.65797922e+01 2.66647345e+01 2.67488026e+01 2.68319902e+01 2.69142917e+01 + 2.69957012e+01 2.70762134e+01 2.71558231e+01 2.72345251e+01 2.73123147e+01 + 2.73891873e+01 2.74651386e+01 2.75401644e+01 2.76142607e+01 2.76874239e+01 + 2.77596504e+01 2.78309370e+01 2.79012805e+01 2.79706782e+01 2.80391273e+01 + 2.81066254e+01 2.81731704e+01 2.82387601e+01 2.83033927e+01 2.83670667e+01 + 2.84297807e+01 2.84915333e+01 2.85523238e+01 2.86121511e+01 2.86710148e+01 + 2.87289145e+01 2.87858498e+01 2.88418209e+01 2.88968278e+01 2.89508709e+01 + 2.90039508e+01 2.90560681e+01 2.91072238e+01 2.91574190e+01 2.92066549e+01 + 2.92549329e+01 2.93022546e+01 2.93486219e+01 2.93940365e+01 2.94385007e+01 + 2.94820167e+01 2.95245868e+01 2.95662136e+01 2.96068999e+01 2.96466484e+01 + 2.96854623e+01 2.97233446e+01 2.97602986e+01 2.97963278e+01 2.98314357e+01 + 2.98656260e+01 2.98989025e+01 2.99312691e+01 2.99627299e+01 2.99932890e+01 + 3.00229508e+01 3.00517197e+01 3.00796001e+01 3.01065967e+01 3.01327141e+01 + 3.01579573e+01 3.01823311e+01 3.02058406e+01 3.02284907e+01 3.02502868e+01 + 3.02712341e+01 3.02913379e+01 3.03106037e+01 3.03290370e+01 3.03466434e+01 + 3.03634285e+01 3.03793980e+01 3.03945578e+01 3.04089136e+01 3.04224715e+01 + 3.04352373e+01 3.04472170e+01 3.04584168e+01 3.04688428e+01 3.04785011e+01 + 3.04873979e+01 3.04955395e+01 3.05029321e+01 3.05095822e+01 3.05154960e+01 + 3.05206800e+01 3.05251405e+01 3.05288840e+01 3.05319170e+01 3.05342459e+01 + 3.05358773e+01 3.05368177e+01 3.05370737e+01 3.05366518e+01 3.05355586e+01 + 3.05338006e+01 3.05313844e+01 3.05283167e+01 3.05246041e+01 3.05202531e+01 + 3.05152703e+01 3.05096624e+01 3.05034359e+01 3.04965974e+01 3.04891535e+01 + 3.04811109e+01 3.04724759e+01 3.04632553e+01 3.04534556e+01 3.04430832e+01 + 3.04321448e+01 3.04206467e+01 3.04085955e+01 3.03959977e+01 3.03828596e+01 + 3.03691878e+01 3.03549885e+01 3.03402682e+01 3.03250332e+01 3.03092899e+01 + 3.02930445e+01 3.02763032e+01 3.02590725e+01 3.02413583e+01 3.02231670e+01 + 3.02045046e+01 3.01853773e+01 3.01657911e+01 3.01457522e+01 3.01252664e+01 + 3.01043398e+01 3.00829783e+01 3.00611878e+01 3.00389742e+01 3.00163433e+01 + 2.99933008e+01 2.99698526e+01 2.99460043e+01 2.99217616e+01 2.98971302e+01 + 2.98721155e+01 2.98467232e+01 2.98209588e+01 2.97948277e+01 2.97683353e+01 + 2.97414870e+01 2.97142882e+01 2.96867441e+01 2.96588599e+01 2.96306410e+01 + 2.96020923e+01 2.95732191e+01 2.95440265e+01 2.95145193e+01 2.94847027e+01 + 2.94545815e+01 2.94241606e+01 2.93934449e+01 2.93624392e+01 2.93311482e+01 + 2.92995767e+01 2.92677292e+01 2.92356105e+01 2.92032251e+01 2.91705775e+01 + 2.91376723e+01 2.91045137e+01 2.90711064e+01 2.90374545e+01 2.90035624e+01 + 2.89694344e+01 2.89350746e+01 2.89004873e+01 2.88656766e+01 2.88306465e+01 + 2.87954011e+01 2.87599444e+01 2.87242804e+01 2.86884129e+01 2.86523458e+01 + 2.86160830e+01 2.85796281e+01 2.85429851e+01 2.85061574e+01 2.84691489e+01 + 2.84319631e+01 2.83946035e+01 2.83570738e+01 2.83193774e+01 2.82815177e+01 + 2.82434981e+01 2.82053220e+01 2.81669928e+01 2.81285137e+01 2.80898879e+01 + 2.80511187e+01 2.80122092e+01 2.79731625e+01 2.79339818e+01 2.78946701e+01 + 2.78552303e+01 2.78156656e+01 2.77759787e+01 2.77361727e+01 2.76962503e+01 + 2.76562144e+01 2.76160678e+01 2.75758133e+01 2.75354535e+01 2.74949912e+01 + 2.74544289e+01 2.74137694e+01 2.73730151e+01 2.73321687e+01 2.72912326e+01 + 2.72502094e+01 2.72091014e+01 2.71679111e+01 2.71266408e+01 2.70852930e+01 + 2.70438699e+01 2.70023738e+01 2.69608070e+01 2.69191717e+01 2.68774700e+01 + 2.68357042e+01 2.67938764e+01 2.67519887e+01 2.67100431e+01 2.66680417e+01 + 2.66259866e+01 2.65838796e+01 2.65417228e+01 2.64995182e+01 2.64572675e+01 + 2.64149727e+01 2.63726356e+01 2.63302581e+01 2.62878419e+01 2.62453889e+01 + 2.62029007e+01 2.61603792e+01 2.61178259e+01 2.60752425e+01 2.60326308e+01 + 2.59899923e+01 2.59473287e+01 2.59046414e+01 2.58619321e+01 2.58192022e+01 + 2.57764534e+01 2.57336870e+01 2.56909045e+01 2.56481074e+01 2.56052971e+01 + 2.55624750e+01 2.55196424e+01 2.54768007e+01 2.54339513e+01 2.53910954e+01 + 2.53482344e+01 2.53053694e+01 2.52625019e+01 2.52196329e+01 2.51767637e+01 + 2.51338956e+01 2.50910296e+01 2.50481669e+01 2.50053088e+01 2.49624562e+01 + 2.49196103e+01 2.48767722e+01 2.48339430e+01 2.47911236e+01 2.47483152e+01 + 2.47055188e+01 2.46627353e+01 2.46199657e+01 2.45772111e+01 2.45344723e+01 + 2.44917503e+01 2.44490460e+01 2.44063604e+01 2.43636943e+01 2.43210485e+01 + 2.42784241e+01 2.42358217e+01 2.41932423e+01 2.41506866e+01 2.41081555e+01 + 2.40656497e+01 2.40231701e+01 2.39807174e+01 2.39382923e+01 2.38958957e+01 + 2.38535281e+01 2.38111904e+01 2.37688832e+01 2.37266073e+01 2.36843632e+01 + 2.36421517e+01 2.35999735e+01 2.35578291e+01 2.35157192e+01 2.34736444e+01 + 2.34316053e+01 2.33896025e+01 2.33476367e+01 2.33057084e+01 2.32638180e+01 + 2.32219664e+01 2.31801538e+01 2.31383810e+01 2.30966483e+01 2.30549564e+01 + 2.30133057e+01 2.29716968e+01 2.29301300e+01 2.28886060e+01 2.28471252e+01 + 2.28056879e+01 2.27642948e+01 2.27229461e+01 2.26816425e+01 2.26403842e+01 + 2.25991717e+01 2.25580054e+01 2.25168857e+01 2.24758130e+01 2.24347878e+01 + 2.23938102e+01 2.23528809e+01 2.23120000e+01 2.22711680e+01 2.22303851e+01 + 2.21896519e+01 2.21489685e+01 2.21083353e+01 2.20677526e+01 2.20272208e+01 + 2.19867401e+01 2.19463109e+01 2.19059334e+01 2.18656079e+01 2.18253348e+01 + 2.17851142e+01 2.17449465e+01 2.17048318e+01 2.16647706e+01 2.16247630e+01 + 2.15848092e+01 2.15449096e+01 2.15050643e+01 2.14652736e+01 2.14255376e+01 + 2.13858567e+01 2.13462310e+01 2.13066607e+01 2.12671461e+01 2.12276873e+01 + 2.11882845e+01 2.11489380e+01 2.11096478e+01 2.10704142e+01 2.10312374e+01 + 2.09921175e+01 2.09530546e+01 2.09140491e+01 2.08751009e+01 2.08362102e+01 + 2.07973773e+01 2.07586022e+01 2.07198851e+01 2.06812261e+01 2.06426254e+01 + 2.06040830e+01 2.05655991e+01 2.05271739e+01 2.04888074e+01 2.04504997e+01 + 2.04122511e+01 2.03740614e+01 2.03359310e+01 2.02978598e+01 2.02598479e+01 + 2.02218956e+01 2.01840027e+01 2.01461695e+01 2.01083960e+01 2.00706823e+01 + 2.00330285e+01 1.99954346e+01 1.99579007e+01 1.99204268e+01 1.98830132e+01 + 1.98456597e+01 1.98083665e+01 1.97711336e+01 1.97339610e+01 1.96968489e+01 + 1.96597973e+01 1.96228062e+01 1.95858756e+01 1.95490056e+01 1.95121963e+01 + 1.94754476e+01 1.94387597e+01 1.94021325e+01 1.93655660e+01 1.93290604e+01 + 1.92926155e+01 1.92562315e+01 1.92199084e+01 1.91836461e+01 1.91474447e+01 + 1.91113042e+01 1.90752247e+01 1.90392061e+01 1.90032484e+01 1.89673516e+01 + 1.89315158e+01 1.88957410e+01 1.88600271e+01 1.88243741e+01 1.87887821e+01 + 1.87532511e+01 1.87177809e+01 1.86823717e+01 1.86470234e+01 1.86117360e+01 + 1.85765095e+01 1.85413439e+01 1.85062392e+01 1.84711952e+01 1.84362122e+01 + 1.84012899e+01 1.83664284e+01 1.83316276e+01 1.82968876e+01 1.82622083e+01 + 1.82275897e+01 1.81930318e+01 1.81585344e+01 1.81240977e+01 1.80897215e+01 + 1.80554058e+01 1.80211507e+01 1.79869560e+01 1.79528217e+01 1.79187478e+01 + 1.78847342e+01 1.78507810e+01 1.78168880e+01 1.77830552e+01 1.77492826e+01 + 1.77155701e+01 1.76819177e+01 1.76483254e+01 1.76147930e+01 1.75813206e+01 + 1.75479081e+01 1.75145554e+01 1.74812625e+01 1.74480294e+01 1.74148559e+01 + 1.73817421e+01 1.73486879e+01 1.73156931e+01 1.72827579e+01 1.72498821e+01 + 1.72170656e+01 1.71843084e+01 1.71516105e+01 1.71189717e+01 1.70863920e+01 + 1.70538715e+01 1.70214099e+01 1.69890072e+01 1.69566634e+01 1.69243784e+01 + 1.68921522e+01 1.68599846e+01 1.68278756e+01 1.67958252e+01 1.67638333e+01 + 1.67318997e+01 1.67000245e+01 1.66682076e+01 1.66364489e+01 1.66047483e+01 + 1.65731058e+01 1.65415213e+01 1.65099947e+01 1.64785260e+01 1.64471150e+01 + 1.64157618e+01 1.63844662e+01 1.63532281e+01 1.63220476e+01 1.62909244e+01 + 1.62598586e+01 1.62288501e+01 1.61978987e+01 1.61670045e+01 1.61361673e+01 + 1.61053871e+01 1.60746637e+01 1.60439972e+01 1.60133874e+01 1.59828342e+01 + 1.59523377e+01 1.59218976e+01 1.58915139e+01 1.58611866e+01 1.58309155e+01 + 1.58007007e+01 1.57705419e+01 1.57404391e+01 1.57103923e+01 1.56804013e+01 + 1.56504661e+01 1.56205866e+01 1.55907628e+01 1.55609944e+01 1.55312816e+01 + 1.55016240e+01 1.54720218e+01 1.54424748e+01 1.54129829e+01 1.53835460e+01 + 1.53541641e+01 1.53248371e+01 1.52955649e+01 1.52663473e+01 1.52371844e+01 + 1.52080761e+01 1.51790222e+01 1.51500226e+01 1.51210774e+01 1.50921863e+01 + 1.50633494e+01 1.50345665e+01 1.50058375e+01 1.49771624e+01 1.49485411e+01 + 1.49199735e+01 1.48914595e+01 1.48629990e+01 1.48345920e+01 1.48062382e+01 + 1.47779378e+01 1.47496905e+01 1.47214964e+01 1.46933552e+01 1.46652670e+01 + 1.46372316e+01 1.46092489e+01 1.45813189e+01 1.45534415e+01 1.45256166e+01 + 1.44978440e+01 1.44701238e+01 1.44424559e+01 1.44148400e+01 1.43872762e+01 + 1.43597644e+01 1.43323045e+01 1.43048964e+01 1.42775400e+01 1.42502352e+01 + 1.42229819e+01 1.41957801e+01 1.41686296e+01 1.41415305e+01 1.41144825e+01 + 1.40874856e+01 1.40605397e+01 1.40336448e+01 1.40068007e+01 1.39800074e+01 + 1.39532647e+01 1.39265726e+01 1.38999310e+01 1.38733398e+01 1.38467989e+01 + 1.38203083e+01 1.37938678e+01 1.37674774e+01 1.37411369e+01 1.37148464e+01 + 1.36886056e+01 1.36624145e+01 1.36362731e+01 1.36101812e+01 1.35841388e+01 + 1.35581457e+01 1.35322019e+01 1.35063073e+01 1.34804618e+01 1.34546654e+01 + 1.34289178e+01 1.34032192e+01 1.33775692e+01 1.33519680e+01 1.33264153e+01 + 1.33009112e+01 1.32754555e+01 1.32500481e+01 1.32246889e+01 1.31993779e+01 + 1.31741150e+01 1.31489001e+01 1.31237331e+01 1.30986139e+01 1.30735424e+01 + 1.30485186e+01 1.30235423e+01 1.29986135e+01 1.29737321e+01 1.29488980e+01 + 1.29241112e+01 1.28993714e+01 1.28746788e+01 1.28500330e+01 1.28254342e+01 + 1.28008822e+01 1.27763769e+01 1.27519182e+01 1.27275060e+01 1.27031403e+01 + 1.26788210e+01 1.26545480e+01 1.26303212e+01 1.26061405e+01 1.25820059e+01 + 1.25579172e+01 1.25338743e+01 1.25098773e+01 1.24859260e+01 1.24620203e+01 + 1.24381601e+01 1.24143454e+01 1.23905761e+01 1.23668520e+01 1.23431732e+01 + 1.23195394e+01 1.22959508e+01 1.22724070e+01 1.22489082e+01 1.22254541e+01 + 1.22020448e+01 1.21786801e+01 1.21553599e+01 1.21320842e+01 1.21088529e+01 + 1.20856658e+01 1.20625230e+01 1.20394244e+01 1.20163698e+01 1.19933591e+01 + 1.19703924e+01 1.19474695e+01 1.19245903e+01 1.19017547e+01 1.18789628e+01 + 1.18562143e+01 1.18335092e+01 1.18108474e+01 1.17882289e+01 1.17656536e+01 + 1.17431214e+01 1.17206321e+01 1.16981858e+01 1.16757823e+01 1.16534217e+01 + 1.16311036e+01 1.16088283e+01 1.15865954e+01 1.15644050e+01 1.15422569e+01 + 1.15201512e+01 1.14980876e+01 1.14760662e+01 1.14540869e+01 1.14321495e+01 + 1.14102540e+01 1.13884004e+01 1.13665885e+01 1.13448182e+01 1.13230896e+01 + 1.13014025e+01 1.12797567e+01 1.12581524e+01 1.12365893e+01 1.12150674e+01 + 1.11935867e+01 1.11721470e+01 1.11507482e+01 1.11293904e+01 1.11080733e+01 + 1.10867970e+01 1.10655614e+01 1.10443663e+01 1.10232118e+01 1.10020977e+01 + 1.09810239e+01 1.09599905e+01 1.09389972e+01 1.09180441e+01 1.08971310e+01 + 1.08762579e+01 1.08554247e+01 1.08346313e+01 1.08138777e+01 1.07931638e+01 + 1.07724894e+01 1.07518546e+01 1.07312593e+01 1.07107033e+01 1.06901867e+01 + 1.06697093e+01 1.06492710e+01 1.06288718e+01 1.06085117e+01 1.05881904e+01 + 1.05679081e+01 1.05476645e+01 1.05274596e+01 1.05072934e+01 1.04871658e+01 + 1.04670766e+01 1.04470259e+01 1.04270135e+01 1.04070395e+01 1.03871036e+01 + 1.03672058e+01 1.03473462e+01 1.03275245e+01 1.03077407e+01 1.02879948e+01 + 1.02682866e+01 1.02486162e+01 1.02289834e+01 1.02093882e+01 1.01898304e+01 + 1.01703101e+01 1.01508271e+01 1.01313814e+01 1.01119729e+01 1.00926016e+01 + 1.00732673e+01 1.00539700e+01 1.00347096e+01 1.00154861e+01 9.99629938e+00 + 9.97714938e+00 9.95803602e+00 9.93895924e+00 9.91991896e+00 9.90091513e+00 + 9.88194766e+00 9.86301650e+00 9.84412157e+00 9.82526280e+00 9.80644012e+00 + 9.78765347e+00 9.76890278e+00 9.75018798e+00 9.73150899e+00 9.71286576e+00 + 9.69425822e+00 9.67568629e+00 9.65714991e+00 9.63864901e+00 9.62018353e+00 + 9.60175339e+00 9.58335854e+00 9.56499889e+00 9.54667439e+00 9.52838497e+00 + 9.51013056e+00 9.49191110e+00 9.47372652e+00 9.45557675e+00 9.43746172e+00 + 9.41938137e+00 9.40133564e+00 9.38332446e+00 9.36534776e+00 9.34740547e+00 + 9.32949754e+00 9.31162389e+00 9.29378447e+00 9.27597920e+00 9.25820801e+00 + 9.24047086e+00 9.22276766e+00 9.20509836e+00 9.18746289e+00 9.16986119e+00 + 9.15229319e+00 9.13475883e+00 9.11725804e+00 9.09979077e+00 9.08235693e+00 + 9.06495649e+00 9.04758936e+00 9.03025548e+00 9.01295480e+00 8.99568724e+00 + 8.97845276e+00 8.96125127e+00 8.94408272e+00 8.92694705e+00 8.90984419e+00 + 8.89277409e+00 8.87573667e+00 8.85873188e+00 8.84175965e+00 8.82481993e+00 + 8.80791264e+00 8.79103774e+00 8.77419515e+00 8.75738481e+00 8.74060667e+00 + 8.72386066e+00 8.70714672e+00 8.69046479e+00 8.67381480e+00 8.65719671e+00 + 8.64061044e+00 8.62405593e+00 8.60753313e+00 8.59104198e+00 8.57458240e+00 + 8.55815435e+00 8.54175777e+00 8.52539259e+00 8.50905875e+00 8.49275619e+00 + 8.47648486e+00 8.46024469e+00 8.44403563e+00 8.42785761e+00 8.41171057e+00 + 8.39559447e+00 8.37950923e+00 8.36345479e+00 8.34743111e+00 8.33143812e+00 + 8.31547576e+00 8.29954398e+00 8.28364271e+00 8.26777190e+00 8.25193148e+00 + 8.23612141e+00 8.22034162e+00 8.20459205e+00 8.18887265e+00 8.17318336e+00 + 8.15752412e+00 8.14189488e+00 8.12629557e+00 8.11072614e+00 8.09518654e+00 + 8.07967670e+00 8.06419657e+00 8.04874609e+00 8.03332521e+00 8.01793386e+00 + 8.00257200e+00 7.98723957e+00 7.97193650e+00 7.95666274e+00 7.94141825e+00 + 7.92620295e+00 7.91101680e+00 7.89585974e+00 7.88073172e+00 7.86563267e+00 + 7.85056255e+00 7.83552129e+00 7.82050885e+00 7.80552516e+00 7.79057018e+00 + 7.77564385e+00 7.76074610e+00 7.74587690e+00 7.73103618e+00 7.71622389e+00 + 7.70143997e+00 7.68668438e+00 7.67195705e+00 7.65725793e+00 7.64258697e+00 + 7.62794411e+00 7.61332931e+00 7.59874250e+00 7.58418364e+00 7.56965266e+00 + 7.55514952e+00 7.54067417e+00 7.52622655e+00 7.51180660e+00 7.49741427e+00 + 7.48304952e+00 7.46871229e+00 7.45440252e+00 7.44012017e+00 7.42586517e+00 + 7.41163749e+00 7.39743706e+00 7.38326383e+00 7.36911776e+00 7.35499879e+00 + 7.34090686e+00 7.32684193e+00 7.31280395e+00 7.29879286e+00 7.28480861e+00 + 7.27085115e+00 7.25692043e+00 7.24301640e+00 7.22913900e+00 7.21528819e+00 + 7.20146392e+00 7.18766613e+00 7.17389477e+00 7.16014979e+00 7.14643115e+00 + 7.13273879e+00 7.11907266e+00 7.10543272e+00 7.09181890e+00 7.07823116e+00 + 7.06466946e+00 7.05113374e+00 7.03762395e+00 7.02414004e+00 7.01068196e+00 + 6.99724967e+00 6.98384311e+00 6.97046224e+00 6.95710700e+00 6.94377734e+00 + 6.93047323e+00 6.91719460e+00 6.90394141e+00 6.89071361e+00 6.87751116e+00 + 6.86433400e+00 6.85118208e+00 6.83805536e+00 6.82495379e+00 6.81187732e+00 + 6.79882590e+00 6.78579949e+00 6.77279803e+00 6.75982148e+00 6.74686980e+00 + 6.73394292e+00 6.72104082e+00 6.70816343e+00 6.69531071e+00 6.68248262e+00 + 6.66967910e+00 6.65690011e+00 6.64414561e+00 6.63141554e+00 6.61870986e+00 + 6.60602853e+00 6.59337149e+00 6.58073869e+00 6.56813011e+00 6.55554567e+00 + 6.54298535e+00 6.53044909e+00 6.51793685e+00 6.50544859e+00 6.49298424e+00 + 6.48054378e+00 6.46812716e+00 6.45573432e+00 6.44336522e+00 6.43101983e+00 + 6.41869808e+00 6.40639995e+00 6.39412537e+00 6.38187431e+00 6.36964673e+00 + 6.35744257e+00 6.34526179e+00 6.33310435e+00 6.32097020e+00 6.30885930e+00 + 6.29677160e+00 6.28470707e+00 6.27266564e+00 6.26064729e+00 6.24865196e+00 + 6.23667962e+00 6.22473021e+00 6.21280370e+00 6.20090004e+00 6.18901918e+00 + 6.17716109e+00 6.16532571e+00 6.15351301e+00 6.14172295e+00 6.12995547e+00 + 6.11821054e+00 6.10648811e+00 6.09478814e+00 6.08311058e+00 6.07145165e+00 + 6.05974338e+00 6.04796088e+00 6.03610468e+00 6.02417530e+00 6.01217326e+00 + 6.00009907e+00 5.98795327e+00 5.97573636e+00 5.96344889e+00 5.95109137e+00 + 5.93866433e+00 5.92616829e+00 5.91360379e+00 5.90097135e+00 5.88827149e+00 + 5.87550476e+00 5.86267167e+00 5.84977277e+00 5.83680857e+00 5.82377962e+00 + 5.81068645e+00 5.79752958e+00 5.78430956e+00 5.77102692e+00 5.75768219e+00 + 5.74427591e+00 5.73080862e+00 5.71728085e+00 5.70369313e+00 5.69004601e+00 + 5.67634003e+00 5.66257572e+00 5.64875361e+00 5.63487426e+00 5.62093820e+00 + 5.60694596e+00 5.59289809e+00 5.57879513e+00 5.56463761e+00 5.55042608e+00 + 5.53616108e+00 5.52184315e+00 5.50747283e+00 5.49305067e+00 5.47857719e+00 + 5.46405294e+00 5.44947847e+00 5.43485432e+00 5.42018102e+00 5.40545912e+00 + 5.39068917e+00 5.37587169e+00 5.36100723e+00 5.34609634e+00 5.33113955e+00 + 5.31613741e+00 5.30109045e+00 5.28599922e+00 5.27086425e+00 5.25568610e+00 + 5.24046529e+00 5.22520236e+00 5.20989787e+00 5.19455234e+00 5.17916631e+00 + 5.16374033e+00 5.14827493e+00 5.13277065e+00 5.11722803e+00 5.10164761e+00 + 5.08602991e+00 5.07037549e+00 5.05468487e+00 5.03895859e+00 5.02319718e+00 + 5.00740119e+00 4.99157113e+00 4.97570756e+00 4.95981100e+00 4.94388198e+00 + 4.92792103e+00 4.91192870e+00 4.89590550e+00 4.87985196e+00 4.86376863e+00 + 4.84765602e+00 4.83151466e+00 4.81534508e+00 4.79914782e+00 4.78292338e+00 + 4.76667231e+00 4.75039512e+00 4.73409233e+00 4.71776448e+00 4.70141208e+00 + 4.68503565e+00 4.66863572e+00 4.65221280e+00 4.63576741e+00 4.61930007e+00 + 4.60281130e+00 4.58630161e+00 4.56977152e+00 4.55322154e+00 4.53665219e+00 + 4.52006398e+00 4.50345741e+00 4.48683300e+00 4.47019126e+00 4.45353270e+00 + 4.43685781e+00 4.42016712e+00 4.40346112e+00 4.38674032e+00 4.37000522e+00 + 4.35325631e+00 4.33649412e+00 4.31971912e+00 4.30293182e+00 4.28613271e+00 + 4.26932230e+00 4.25250108e+00 4.23566953e+00 4.21882815e+00 4.20197744e+00 + 4.18511788e+00 4.16824996e+00 4.15137416e+00 4.13449098e+00 4.11760089e+00 + 4.10070438e+00 4.08380193e+00 4.06689403e+00 4.04998114e+00 4.03306375e+00 + 4.01614234e+00 3.99921737e+00 3.98228932e+00 3.96535867e+00 3.94842588e+00 + 3.93149143e+00 3.91455578e+00 3.89761939e+00 3.88068273e+00 3.86374627e+00 + 3.84681046e+00 3.82987577e+00 3.81294265e+00 3.79601156e+00 3.77908296e+00 + 3.76215730e+00 3.74523503e+00 3.72831661e+00 3.71140247e+00 3.69449308e+00 + 3.67758887e+00 3.66069030e+00 3.64379779e+00 3.62691180e+00 3.61003276e+00 + 3.59316111e+00 3.57629729e+00 3.55944172e+00 3.54259485e+00 3.52575711e+00 + 3.50892892e+00 3.49211070e+00 3.47530290e+00 3.45850592e+00 3.44172019e+00 + 3.42494614e+00 3.40818418e+00 3.39143473e+00 3.37469820e+00 3.35797501e+00 + 3.34126556e+00 3.32457027e+00 3.30788955e+00 3.29122380e+00 3.27457343e+00 + 3.25793884e+00 3.24132042e+00 3.22471858e+00 3.20813372e+00 3.19156622e+00 + 3.17501649e+00 3.15848491e+00 3.14197187e+00 3.12547777e+00 3.10900298e+00 + 3.09254788e+00 3.07611287e+00 3.05969832e+00 3.04330461e+00 3.02693211e+00 + 3.01058120e+00 2.99425225e+00 2.97794563e+00 2.96166171e+00 2.94540085e+00 + 2.92916342e+00 2.91294978e+00 2.89676028e+00 2.88059530e+00 2.86445518e+00 + 2.84834028e+00 2.83225095e+00 2.81618754e+00 2.80015040e+00 2.78413987e+00 + 2.76815630e+00 2.75220003e+00 2.73627139e+00 2.72037074e+00 2.70449840e+00 + 2.68865471e+00 2.67283999e+00 2.65705459e+00 2.64129882e+00 2.62557301e+00 + 2.60987749e+00 2.59421257e+00 2.57857857e+00 2.56297582e+00 2.54740463e+00 + 2.53186530e+00 2.51635816e+00 2.50088350e+00 2.48544165e+00 2.47003289e+00 + 2.45465753e+00 2.43931588e+00 2.42400823e+00 2.40873488e+00 2.39349611e+00 + 2.37829223e+00 2.36312353e+00 2.34799028e+00 2.33289278e+00 2.31783130e+00 + 2.30280614e+00 2.28781756e+00 2.27286585e+00 2.25795128e+00 2.24307412e+00 + 2.22823464e+00 2.21343311e+00 2.19866980e+00 2.18394497e+00 2.16925889e+00 + 2.15461180e+00 2.14000397e+00 2.12543566e+00 2.11090712e+00 2.09641859e+00 + 2.08197033e+00 2.06756258e+00 2.05319559e+00 2.03886960e+00 2.02458485e+00 + 2.01034158e+00 1.99614002e+00 1.98198041e+00 1.96786297e+00 1.95378795e+00 + 1.93975556e+00 1.92576602e+00 1.91181957e+00 1.89791642e+00 1.88405680e+00 + 1.87024091e+00 1.85646897e+00 1.84274119e+00 1.82905778e+00 1.81541896e+00 + 1.80182492e+00 1.78827586e+00 1.77477200e+00 1.76131352e+00 1.74790063e+00 + 1.73453352e+00 1.72121237e+00 1.70793739e+00 1.69470876e+00 1.68152666e+00 + 1.66839128e+00 1.65530280e+00 1.64226140e+00 1.62926725e+00 1.61632054e+00 + 1.60342143e+00 1.59057009e+00 1.57776670e+00 1.56501142e+00 1.55230441e+00 + 1.53964583e+00 1.52703585e+00 1.51447463e+00 1.50196231e+00 1.48949906e+00 + 1.47708502e+00 1.46472034e+00 1.45240518e+00 1.44013967e+00 1.42792395e+00 + 1.41575818e+00 1.40364248e+00 1.39157700e+00 1.37956187e+00 1.36759721e+00 + 1.35568317e+00 1.34381987e+00 1.33200743e+00 1.32024598e+00 1.30853564e+00 + 1.29687653e+00 1.28526877e+00 1.27371247e+00 1.26220775e+00 1.25075472e+00 + 1.23935348e+00 1.22800415e+00 1.21670683e+00 1.20546162e+00 1.19426863e+00 + 1.18312795e+00 1.17203968e+00 1.16100391e+00 1.15002074e+00 1.13909026e+00 + 1.12821255e+00 1.11738771e+00 1.10661582e+00 1.09589696e+00 1.08523121e+00 + 1.07461865e+00 1.06405936e+00 1.05355341e+00 1.04310087e+00 1.03270182e+00 + 1.02235632e+00 1.01206445e+00 1.00182626e+00 9.91641811e-01 9.81511175e-01 + 9.71434406e-01 9.61411561e-01 9.51442695e-01 9.41527861e-01 9.31667110e-01 + 9.21860490e-01 9.12108049e-01 9.02409833e-01 8.92765883e-01 8.83176243e-01 + 8.73640950e-01 8.64160043e-01 8.54733558e-01 8.45361527e-01 8.36043983e-01 + 8.26780955e-01 8.17572473e-01 8.08418561e-01 7.99319245e-01 7.90274546e-01 + 7.81284486e-01 7.72349083e-01 7.63468354e-01 7.54642314e-01 7.45870976e-01 + 7.37154353e-01 7.28492452e-01 7.19885284e-01 7.11332852e-01 7.02835162e-01 + 6.94392216e-01 6.86004014e-01 6.77670556e-01 6.69391838e-01 6.61167856e-01 + 6.52998603e-01 6.44884072e-01 6.36824251e-01 6.28819131e-01 6.20868696e-01 + 6.12972932e-01 6.05131822e-01 5.97345348e-01 5.89613489e-01 5.81936223e-01 + 5.74313527e-01 5.66745375e-01 5.59231740e-01 5.51772594e-01 5.44367906e-01 + 5.37017644e-01 5.29721774e-01 5.22480262e-01 5.15293069e-01 5.08160159e-01 + 5.01081489e-01 4.94057020e-01 4.87086706e-01 4.80170504e-01 4.73308366e-01 + 4.66500245e-01 4.59746091e-01 4.53045851e-01 4.46399475e-01 4.39806906e-01 + 4.33268089e-01 4.26782967e-01 4.20351481e-01 4.13973569e-01 4.07649170e-01 + 4.01378220e-01 3.95160655e-01 3.88996407e-01 3.82885408e-01 3.76827589e-01 + 3.70822880e-01 3.64871206e-01 3.58972495e-01 3.53126672e-01 3.47333658e-01 + 3.41593377e-01 3.35905748e-01 3.30270691e-01 3.24688122e-01 3.19157958e-01 + 3.13680115e-01 3.08254504e-01 3.02881038e-01 2.97559628e-01 2.92290183e-01 + 2.87072611e-01 2.81906818e-01 2.76792711e-01 2.71730191e-01 2.66719163e-01 + 2.61759528e-01 2.56851184e-01 2.51994033e-01 2.47187969e-01 2.42432891e-01 + 2.37728692e-01 2.33075267e-01 2.28472507e-01 2.23920304e-01 2.19418548e-01 + 2.14967127e-01 2.10565929e-01 2.06214840e-01 2.01913745e-01 1.97662529e-01 + 1.93461073e-01 1.89309259e-01 1.85206967e-01 1.81154078e-01 1.77150468e-01 + 1.73196014e-01 1.69290593e-01 1.65434080e-01 1.61626346e-01 1.57867266e-01 + 1.54156710e-01 1.50494548e-01 1.46880650e-01 1.43314884e-01 1.39797116e-01 + 1.36327214e-01 1.32905040e-01 1.29530461e-01 1.26203337e-01 1.22923532e-01 + 1.19690905e-01 1.16505318e-01 1.13366628e-01 1.10274693e-01 1.07229370e-01 + 1.04230516e-01 1.01277984e-01 9.83716292e-02 9.55113045e-02 9.26968618e-02 + 8.99281522e-02 8.72050260e-02 8.45273325e-02 8.18949202e-02 7.93076365e-02 + 7.67653281e-02 7.42678408e-02 7.18150195e-02 6.94067082e-02 6.70427500e-02 + 6.47229875e-02 6.24472620e-02 6.02154142e-02 5.80272842e-02 5.58827108e-02 + 5.37815325e-02 5.17235866e-02 4.97087099e-02 4.77367383e-02 4.58075070e-02 + 4.39208503e-02 4.20766021e-02 4.02745951e-02 3.85146615e-02 3.67966330e-02 + 3.51203401e-02 3.34856129e-02 3.18922809e-02 3.03401727e-02 2.88291163e-02 + 2.73589389e-02 2.59294673e-02 2.45405275e-02 2.31919449e-02 2.18835440e-02 + 2.06151492e-02 1.93865837e-02 1.81976705e-02 1.70482319e-02 1.59380895e-02 + 1.48670644e-02 1.38349771e-02 1.28416476e-02 1.18868951e-02 1.09705385e-02 + 1.00923962e-02 9.25228574e-03 8.45002444e-03 7.68542897e-03 6.95831551e-03 + 6.26849972e-03 5.61579679e-03 5.00002140e-03 4.42098778e-03 3.87850967e-03 + 3.37240035e-03 2.90247264e-03 2.46853892e-03 2.07041115e-03 1.70790084e-03 + 1.38081907e-03 1.08897653e-03 8.32183493e-04 6.10249837e-04 4.22985050e-04 + 2.70198238e-04 1.51698135e-04 6.72931116e-05 1.67911789e-05 0.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 9.99979585e-01 9.99876811e-01 9.99687440e-01 9.99411505e-01 + 9.99049054e-01 9.98600150e-01 9.98064871e-01 9.97443309e-01 9.96735573e-01 + 9.95941783e-01 9.95062079e-01 9.94096613e-01 9.93045551e-01 9.91909077e-01 + 9.90687386e-01 9.89380690e-01 9.87989216e-01 9.86513205e-01 9.84952913e-01 + 9.83308609e-01 9.81580579e-01 9.79769122e-01 9.77874552e-01 9.75897197e-01 + 9.73837399e-01 9.71695516e-01 9.69471919e-01 9.67166992e-01 9.64781135e-01 + 9.62314761e-01 9.59768298e-01 9.57142187e-01 9.54436882e-01 9.51652852e-01 + 9.48790581e-01 9.45850562e-01 9.42833306e-01 9.39739336e-01 9.36569187e-01 + 9.33323409e-01 9.30002564e-01 9.26607226e-01 9.23137986e-01 9.19595442e-01 + 9.15980210e-01 9.12292915e-01 9.08534196e-01 9.04704704e-01 9.00805103e-01 + 8.96836069e-01 8.92798288e-01 8.88692460e-01 8.84519297e-01 8.80279522e-01 + 8.75973868e-01 8.71603083e-01 8.67167922e-01 8.62669155e-01 8.58107560e-01 + 8.53483929e-01 8.48799061e-01 8.44053769e-01 8.39248875e-01 8.34385211e-01 + 8.29463619e-01 8.24484952e-01 8.19450073e-01 8.14359853e-01 8.09215176e-01 + 8.04016931e-01 7.98766019e-01 7.93463351e-01 7.88109844e-01 7.82706427e-01 + 7.77254034e-01 7.71753611e-01 7.66206111e-01 7.60612494e-01 7.54973730e-01 + 7.49290796e-01 7.43564675e-01 7.37796360e-01 7.31986850e-01 7.26137152e-01 + 7.20248279e-01 7.14321251e-01 7.08357095e-01 7.02356844e-01 6.96321537e-01 + 6.90252221e-01 6.84149946e-01 6.78015770e-01 6.71850755e-01 6.65655970e-01 + 6.59432486e-01 6.53181384e-01 6.46903745e-01 6.40600657e-01 6.34273212e-01 + 6.27922506e-01 6.21549639e-01 6.15155716e-01 6.08741843e-01 6.02309133e-01 + 5.95858698e-01 5.89391658e-01 5.82909132e-01 5.76412243e-01 5.69902117e-01 + 5.63379881e-01 5.56846666e-01 5.50303602e-01 5.43751824e-01 5.37192467e-01 + 5.30626667e-01 5.24055561e-01 5.17480288e-01 5.10901987e-01 5.04321797e-01 + 4.97740858e-01 4.91160311e-01 4.84581295e-01 4.78004950e-01 4.71432416e-01 + 4.64864830e-01 4.58303331e-01 4.51749056e-01 4.45203139e-01 4.38666715e-01 + 4.32140916e-01 4.25626873e-01 4.19125714e-01 4.12638565e-01 4.06166550e-01 + 3.99710791e-01 3.93272405e-01 3.86852508e-01 3.80452213e-01 3.74072627e-01 + 3.67714857e-01 3.61380003e-01 3.55069163e-01 3.48783430e-01 3.42523893e-01 + 3.36291637e-01 3.30087741e-01 3.23913280e-01 3.17769323e-01 3.11656936e-01 + 3.05577176e-01 2.99531097e-01 2.93519746e-01 2.87544165e-01 2.81605389e-01 + 2.75704447e-01 2.69842361e-01 2.64020146e-01 2.58238812e-01 2.52499359e-01 + 2.46802782e-01 2.41150068e-01 2.35542196e-01 2.29980137e-01 2.24464856e-01 + 2.18997307e-01 2.13578438e-01 2.08209187e-01 2.02890485e-01 1.97623253e-01 + 1.92408404e-01 1.87246840e-01 1.82139456e-01 1.77087137e-01 1.72090758e-01 + 1.67151185e-01 1.62269273e-01 1.57445868e-01 1.52681806e-01 1.47977912e-01 + 1.43335000e-01 1.38753876e-01 1.34235332e-01 1.29780152e-01 1.25389107e-01 + 1.21062958e-01 1.16802455e-01 1.12608335e-01 1.08481325e-01 1.04422140e-01 + 1.00431484e-01 9.65100466e-02 9.26585085e-02 8.88775365e-02 8.51677856e-02 + 8.15298985e-02 7.79645054e-02 7.44722238e-02 7.10536590e-02 6.77094029e-02 + 6.44400350e-02 6.12461217e-02 5.81282163e-02 5.50868588e-02 5.21225762e-02 + 4.92358820e-02 4.64272763e-02 4.36972455e-02 4.10462627e-02 3.84747871e-02 + 3.59832642e-02 3.35721256e-02 3.12417889e-02 2.89926579e-02 2.68251222e-02 + 2.47395574e-02 2.27363246e-02 2.08157709e-02 1.89782291e-02 1.72240175e-02 + 1.55534399e-02 1.39667858e-02 1.24643300e-02 1.10463329e-02 9.71303993e-03 + 8.46468223e-03 7.30147603e-03 6.22362282e-03 5.23130933e-03 4.32470747e-03 + 3.50397429e-03 2.76925197e-03 2.12066779e-03 1.55833411e-03 1.08234835e-03 + 6.92792954e-04 3.89735421e-04 1.73228247e-04 4.33089373e-05 0.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 9.99980173e-01 9.99906079e-01 9.99777111e-01 9.99593281e-01 9.99354611e-01 + 9.99061126e-01 9.98712858e-01 9.98309847e-01 9.97852135e-01 9.97339773e-01 + 9.96772819e-01 9.96151332e-01 9.95475383e-01 9.94745045e-01 9.93960398e-01 + 9.93121529e-01 9.92228529e-01 9.91281497e-01 9.90280537e-01 9.89225758e-01 + 9.88117276e-01 9.86955213e-01 9.85739696e-01 9.84470859e-01 9.83148841e-01 + 9.81773788e-01 9.80345850e-01 9.78865184e-01 9.77331952e-01 9.75746323e-01 + 9.74108471e-01 9.72418575e-01 9.70676822e-01 9.68883402e-01 9.67038512e-01 + 9.65142355e-01 9.63195139e-01 9.61197077e-01 9.59148389e-01 9.57049300e-01 + 9.54900041e-01 9.52700846e-01 9.50451958e-01 9.48153624e-01 9.45806095e-01 + 9.43409630e-01 9.40964491e-01 9.38470947e-01 9.35929271e-01 9.33339743e-01 + 9.30702647e-01 9.28018273e-01 9.25286914e-01 9.22508871e-01 9.19684449e-01 + 9.16813958e-01 9.13897713e-01 9.10936034e-01 9.07929245e-01 9.04877679e-01 + 9.01781668e-01 8.98641553e-01 8.95457679e-01 8.92230395e-01 8.88960056e-01 + 8.85647020e-01 8.82291651e-01 8.78894318e-01 8.75455393e-01 8.71975254e-01 + 8.68454283e-01 8.64892866e-01 8.61291395e-01 8.57650264e-01 8.53969874e-01 + 8.50250628e-01 8.46492934e-01 8.42697206e-01 8.38863860e-01 8.34993316e-01 + 8.31085999e-01 8.27142339e-01 8.23162768e-01 8.19147724e-01 8.15097646e-01 + 8.11012979e-01 8.06894173e-01 8.02741678e-01 7.98555951e-01 7.94337451e-01 + 7.90086642e-01 7.85803989e-01 7.81489963e-01 7.77145038e-01 7.72769691e-01 + 7.68364401e-01 7.63929652e-01 7.59465932e-01 7.54973730e-01 7.50453539e-01 + 7.45905856e-01 7.41331179e-01 7.36730012e-01 7.32102858e-01 7.27450226e-01 + 7.22772626e-01 7.18070573e-01 7.13344581e-01 7.08595171e-01 7.03822863e-01 + 6.99028181e-01 6.94211651e-01 6.89373803e-01 6.84515167e-01 6.79636277e-01 + 6.74737667e-01 6.69819877e-01 6.64883445e-01 6.59928914e-01 6.54956827e-01 + 6.49967731e-01 6.44962172e-01 6.39940701e-01 6.34903869e-01 6.29852227e-01 + 6.24786332e-01 6.19706739e-01 6.14614006e-01 6.09508691e-01 6.04391355e-01 + 5.99262560e-01 5.94122870e-01 5.88972847e-01 5.83813057e-01 5.78644067e-01 + 5.73466445e-01 5.68280758e-01 5.63087575e-01 5.57887468e-01 5.52681006e-01 + 5.47468761e-01 5.42251306e-01 5.37029212e-01 5.31803054e-01 5.26573405e-01 + 5.21340839e-01 5.16105930e-01 5.10869253e-01 5.05631384e-01 5.00392895e-01 + 4.95154364e-01 4.89916365e-01 4.84679473e-01 4.79444262e-01 4.74211308e-01 + 4.68981185e-01 4.63754466e-01 4.58531727e-01 4.53313539e-01 4.48100476e-01 + 4.42893110e-01 4.37692013e-01 4.32497756e-01 4.27310908e-01 4.22132040e-01 + 4.16961719e-01 4.11800513e-01 4.06648989e-01 4.01507712e-01 3.96377247e-01 + 3.91258157e-01 3.86151003e-01 3.81056347e-01 3.75974747e-01 3.70906762e-01 + 3.65852947e-01 3.60813858e-01 3.55790047e-01 3.50782067e-01 3.45790466e-01 + 3.40815793e-01 3.35858594e-01 3.30919413e-01 3.25998792e-01 3.21097271e-01 + 3.16215388e-01 3.11353680e-01 3.06512680e-01 3.01692919e-01 2.96894926e-01 + 2.92119228e-01 2.87366350e-01 2.82636813e-01 2.77931136e-01 2.73249835e-01 + 2.68593425e-01 2.63962417e-01 2.59357319e-01 2.54778637e-01 2.50226873e-01 + 2.45702526e-01 2.41206094e-01 2.36738071e-01 2.32298945e-01 2.27889206e-01 + 2.23509336e-01 2.19159817e-01 2.14841126e-01 2.10553738e-01 2.06298122e-01 + 2.02074746e-01 1.97884074e-01 1.93726565e-01 1.89602676e-01 1.85512860e-01 + 1.81457565e-01 1.77437238e-01 1.73452318e-01 1.69503243e-01 1.65590448e-01 + 1.61714361e-01 1.57875408e-01 1.54074010e-01 1.50310585e-01 1.46585546e-01 + 1.42899302e-01 1.39252256e-01 1.35644811e-01 1.32077361e-01 1.28550298e-01 + 1.25064010e-01 1.21618879e-01 1.18215283e-01 1.14853596e-01 1.11534187e-01 + 1.08257420e-01 1.05023655e-01 1.01833247e-01 9.86865462e-02 9.55838981e-02 + 9.25256431e-02 8.95121170e-02 8.65436505e-02 8.36205696e-02 8.07431951e-02 + 7.79118428e-02 7.51268235e-02 7.23884430e-02 6.96970019e-02 6.70527955e-02 + 6.44561143e-02 6.19072431e-02 5.94064618e-02 5.69540448e-02 5.45502615e-02 + 5.21953757e-02 4.98896458e-02 4.76333250e-02 4.54266610e-02 4.32698959e-02 + 4.11632665e-02 3.91070041e-02 3.71013344e-02 3.51464776e-02 3.32426482e-02 + 3.13900552e-02 2.95889020e-02 2.78393864e-02 2.61417002e-02 2.44960300e-02 + 2.29025563e-02 2.13614541e-02 1.98728925e-02 1.84370350e-02 1.70540391e-02 + 1.57240567e-02 1.44472338e-02 1.32237104e-02 1.20536210e-02 1.09370940e-02 + 9.87425188e-03 8.86521137e-03 7.91008322e-03 7.00897228e-03 6.16197747e-03 + 5.36919175e-03 4.63070216e-03 3.94658975e-03 3.31692963e-03 2.74179092e-03 + 2.22123674e-03 1.75532423e-03 1.34410455e-03 9.87622837e-04 6.85918213e-04 + 4.39023800e-04 2.46966702e-04 1.09767999e-04 2.74427529e-05 0.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 9.99998611e-01 + 9.99988405e-01 9.99968287e-01 9.99938255e-01 9.99898310e-01 9.99848454e-01 + 9.99788687e-01 9.99719010e-01 9.99639425e-01 9.99549934e-01 9.99450537e-01 + 9.99341238e-01 9.99222038e-01 9.99092940e-01 9.98953946e-01 9.98805059e-01 + 9.98646282e-01 9.98477618e-01 9.98299070e-01 9.98110643e-01 9.97912339e-01 + 9.97704162e-01 9.97486118e-01 9.97258209e-01 9.97020441e-01 9.96772819e-01 + 9.96515346e-01 9.96248029e-01 9.95970873e-01 9.95683882e-01 9.95387064e-01 + 9.95080423e-01 9.94763966e-01 9.94437699e-01 9.94101628e-01 9.93755761e-01 + 9.93400104e-01 9.93034664e-01 9.92659448e-01 9.92274464e-01 9.91879719e-01 + 9.91475222e-01 9.91060979e-01 9.90637001e-01 9.90203294e-01 9.89759867e-01 + 9.89306730e-01 9.88843892e-01 9.88371360e-01 9.87889146e-01 9.87397257e-01 + 9.86895705e-01 9.86384499e-01 9.85863649e-01 9.85333166e-01 9.84793060e-01 + 9.84243341e-01 9.83684021e-01 9.83115111e-01 9.82536622e-01 9.81948565e-01 + 9.81350952e-01 9.80743796e-01 9.80127107e-01 9.79500899e-01 9.78865184e-01 + 9.78219973e-01 9.77565281e-01 9.76901120e-01 9.76227503e-01 9.75544444e-01 + 9.74851956e-01 9.74150052e-01 9.73438748e-01 9.72718056e-01 9.71987991e-01 + 9.71248568e-01 9.70499802e-01 9.69741706e-01 9.68974297e-01 9.68197589e-01 + 9.67411598e-01 9.66616339e-01 9.65811829e-01 9.64998082e-01 9.64175116e-01 + 9.63342946e-01 9.62501590e-01 9.61651063e-01 9.60791382e-01 9.59922566e-01 + 9.59044630e-01 9.58157592e-01 9.57261471e-01 9.56356283e-01 9.55442046e-01 + 9.54518780e-01 9.53586501e-01 9.52645229e-01 9.51694982e-01 9.50735778e-01 + 9.49767638e-01 9.48790581e-01 9.47804624e-01 9.46809789e-01 9.45806095e-01 + 9.44793561e-01 9.43772209e-01 9.42742057e-01 9.41703127e-01 9.40655439e-01 + 9.39599014e-01 9.38533873e-01 9.37460037e-01 9.36377527e-01 9.35286364e-01 + 9.34186571e-01 9.33078170e-01 9.31961181e-01 9.30835628e-01 9.29701532e-01 + 9.28558916e-01 9.27407803e-01 9.26248215e-01 9.25080177e-01 9.23903709e-01 + 9.22718837e-01 9.21525584e-01 9.20323972e-01 9.19114027e-01 9.17895771e-01 + 9.16669230e-01 9.15434427e-01 9.14191387e-01 9.12940135e-01 9.11680695e-01 + 9.10413093e-01 9.09137353e-01 9.07853501e-01 9.06561562e-01 9.05261562e-01 + 9.03953527e-01 9.02637482e-01 9.01313454e-01 8.99981469e-01 8.98641553e-01 + 8.97293733e-01 8.95938036e-01 8.94574488e-01 8.93203117e-01 8.91823950e-01 + 8.90437014e-01 8.89042336e-01 8.87639945e-01 8.86229867e-01 8.84812132e-01 + 8.83386767e-01 8.81953800e-01 8.80513260e-01 8.79065175e-01 8.77609575e-01 + 8.76146487e-01 8.74675941e-01 8.73197967e-01 8.71712593e-01 8.70219848e-01 + 8.68719763e-01 8.67212368e-01 8.65697691e-01 8.64175763e-01 8.62646615e-01 + 8.61110277e-01 8.59566778e-01 8.58016150e-01 8.56458424e-01 8.54893630e-01 + 8.53321799e-01 8.51742963e-01 8.50157152e-01 8.48564399e-01 8.46964734e-01 + 8.45358191e-01 8.43744799e-01 8.42124592e-01 8.40497601e-01 8.38863860e-01 + 8.37223399e-01 8.35576252e-01 8.33922451e-01 8.32262030e-01 8.30595020e-01 + 8.28921456e-01 8.27241370e-01 8.25554796e-01 8.23861766e-01 8.22162316e-01 + 8.20456477e-01 8.18744285e-01 8.17025773e-01 8.15300975e-01 8.13569925e-01 + 8.11832658e-01 8.10089208e-01 8.08339610e-01 8.06583898e-01 8.04822108e-01 + 8.03054273e-01 8.01280430e-01 7.99500613e-01 7.97714858e-01 7.95923200e-01 + 7.94125674e-01 7.92322317e-01 7.90513163e-01 7.88698249e-01 7.86877612e-01 + 7.85051286e-01 7.83219308e-01 7.81381715e-01 7.79538542e-01 7.77689827e-01 + 7.75835606e-01 7.73975916e-01 7.72110794e-01 7.70240277e-01 7.68364401e-01 + 7.66483204e-01 7.64596724e-01 7.62704997e-01 7.60808061e-01 7.58905954e-01 + 7.56998714e-01 7.55086378e-01 7.53168985e-01 7.51246571e-01 7.49319177e-01 + 7.47386838e-01 7.45449595e-01 7.43507485e-01 7.41560547e-01 7.39608819e-01 + 7.37652340e-01 7.35691150e-01 7.33725286e-01 7.31754788e-01 7.29779695e-01 + 7.27800045e-01 7.25815880e-01 7.23827236e-01 7.21834155e-01 7.19836676e-01 + 7.17834837e-01 7.15828680e-01 7.13818243e-01 7.11803566e-01 7.09784691e-01 + 7.07761655e-01 7.05734500e-01 7.03703266e-01 7.01667993e-01 6.99628722e-01 + 6.97585492e-01 6.95538345e-01 6.93487320e-01 6.91432460e-01 6.89373803e-01 + 6.87311392e-01 6.85245267e-01 6.83175469e-01 6.81102039e-01 6.79025018e-01 + 6.76944447e-01 6.74860369e-01 6.72772823e-01 6.70681851e-01 6.68587496e-01 + 6.66489797e-01 6.64388798e-01 6.62284539e-01 6.60177062e-01 6.58066410e-01 + 6.55952623e-01 6.53835744e-01 6.51715815e-01 6.49592878e-01 6.47466975e-01 + 6.45338148e-01 6.43206439e-01 6.41071891e-01 6.38934546e-01 6.36794446e-01 + 6.34651634e-01 6.32506151e-01 6.30358042e-01 6.28207348e-01 6.26054112e-01 + 6.23898376e-01 6.21740184e-01 6.19579579e-01 6.17416602e-01 6.15251297e-01 + 6.13083707e-01 6.10913875e-01 6.08741843e-01 6.06567656e-01 6.04391355e-01 + 6.02212985e-01 6.00032588e-01 5.97850208e-01 5.95665887e-01 5.93479670e-01 + 5.91291599e-01 5.89101719e-01 5.86910071e-01 5.84716701e-01 5.82521650e-01 + 5.80324964e-01 5.78126684e-01 5.75926856e-01 5.73725522e-01 5.71522727e-01 + 5.69318513e-01 5.67112925e-01 5.64906006e-01 5.62697800e-01 5.60488352e-01 + 5.58277703e-01 5.56065900e-01 5.53852984e-01 5.51639001e-01 5.49423994e-01 + 5.47208007e-01 5.44991085e-01 5.42773270e-01 5.40554606e-01 5.38335139e-01 + 5.36114912e-01 5.33893969e-01 5.31672353e-01 5.29450110e-01 5.27227283e-01 + 5.25003915e-01 5.22780052e-01 5.20555738e-01 5.18331016e-01 5.16105930e-01 + 5.13880525e-01 5.11654845e-01 5.09428934e-01 5.07202836e-01 5.04976595e-01 + 5.02750255e-01 5.00523861e-01 4.98297456e-01 4.96071085e-01 4.93844792e-01 + 4.91618621e-01 4.89392617e-01 4.87166822e-01 4.84941282e-01 4.82716041e-01 + 4.80491142e-01 4.78266630e-01 4.76042549e-01 4.73818943e-01 4.71595856e-01 + 4.69373333e-01 4.67151416e-01 4.64930151e-01 4.62709582e-01 4.60489751e-01 + 4.58270704e-01 4.56052485e-01 4.53835136e-01 4.51618704e-01 4.49403230e-01 + 4.47188760e-01 4.44975336e-01 4.42763004e-01 4.40551807e-01 4.38341788e-01 + 4.36132992e-01 4.33925462e-01 4.31719242e-01 4.29514376e-01 4.27310908e-01 + 4.25108881e-01 4.22908339e-01 4.20709325e-01 4.18511884e-01 4.16316058e-01 + 4.14121891e-01 4.11929427e-01 4.09738710e-01 4.07549782e-01 4.05362687e-01 + 4.03177469e-01 4.00994170e-01 3.98812834e-01 3.96633505e-01 3.94456225e-01 + 3.92281038e-01 3.90107987e-01 3.87937114e-01 3.85768464e-01 3.83602078e-01 + 3.81438000e-01 3.79276273e-01 3.77116940e-01 3.74960043e-01 3.72805626e-01 + 3.70653730e-01 3.68504399e-01 3.66357675e-01 3.64213601e-01 3.62072219e-01 + 3.59933573e-01 3.57797703e-01 3.55664653e-01 3.53534464e-01 3.51407180e-01 + 3.49282842e-01 3.47161492e-01 3.45043173e-01 3.42927926e-01 3.40815793e-01 + 3.38706817e-01 3.36601038e-01 3.34498500e-01 3.32399243e-01 3.30303309e-01 + 3.28210740e-01 3.26121577e-01 3.24035861e-01 3.21953634e-01 3.19874938e-01 + 3.17799813e-01 3.15728301e-01 3.13660442e-01 3.11596278e-01 3.09535850e-01 + 3.07479198e-01 3.05426363e-01 3.03377386e-01 3.01332308e-01 2.99291168e-01 + 2.97254009e-01 2.95220869e-01 2.93191789e-01 2.91166810e-01 2.89145972e-01 + 2.87129315e-01 2.85116878e-01 2.83108701e-01 2.81104825e-01 2.79105290e-01 + 2.77110134e-01 2.75119397e-01 2.73133119e-01 2.71151340e-01 2.69174098e-01 + 2.67201433e-01 2.65233383e-01 2.63269988e-01 2.61311288e-01 2.59357319e-01 + 2.57408122e-01 2.55463735e-01 2.53524197e-01 2.51589546e-01 2.49659820e-01 + 2.47735057e-01 2.45815297e-01 2.43900576e-01 2.41990933e-01 2.40086406e-01 + 2.38187032e-01 2.36292850e-01 2.34403896e-01 2.32520208e-01 2.30641823e-01 + 2.28768780e-01 2.26901114e-01 2.25038863e-01 2.23182064e-01 2.21330753e-01 + 2.19484968e-01 2.17644744e-01 2.15810120e-01 2.13981129e-01 2.12157810e-01 + 2.10340199e-01 2.08528330e-01 2.06722240e-01 2.04921966e-01 2.03127542e-01 + 2.01339005e-01 1.99556389e-01 1.97779730e-01 1.96009063e-01 1.94244424e-01 + 1.92485848e-01 1.90733368e-01 1.88987021e-01 1.87246840e-01 1.85512860e-01 + 1.83785116e-01 1.82063641e-01 1.80348471e-01 1.78639638e-01 1.76937177e-01 + 1.75241122e-01 1.73551506e-01 1.71868362e-01 1.70191725e-01 1.68521627e-01 + 1.66858101e-01 1.65201180e-01 1.63550898e-01 1.61907287e-01 1.60270379e-01 + 1.58640208e-01 1.57016804e-01 1.55400201e-01 1.53790431e-01 1.52187525e-01 + 1.50591516e-01 1.49002434e-01 1.47420312e-01 1.45845181e-01 1.44277071e-01 + 1.42716015e-01 1.41162043e-01 1.39615186e-01 1.38075474e-01 1.36542938e-01 + 1.35017609e-01 1.33499516e-01 1.31988690e-01 1.30485161e-01 1.28988959e-01 + 1.27500113e-01 1.26018652e-01 1.24544607e-01 1.23078006e-01 1.21618879e-01 + 1.20167254e-01 1.18723160e-01 1.17286625e-01 1.15857679e-01 1.14436350e-01 + 1.13022665e-01 1.11616654e-01 1.10218343e-01 1.08827760e-01 1.07444933e-01 + 1.06069890e-01 1.04702657e-01 1.03343262e-01 1.01991732e-01 1.00648094e-01 + 9.93123732e-02 9.79845974e-02 9.66647925e-02 9.53529849e-02 9.40492003e-02 + 9.27534648e-02 9.14658040e-02 9.01862434e-02 8.89148084e-02 8.76515242e-02 + 8.63964159e-02 8.51495083e-02 8.39108261e-02 8.26803940e-02 8.14582364e-02 + 8.02443773e-02 7.90388410e-02 7.78416513e-02 7.66528320e-02 7.54724066e-02 + 7.43003985e-02 7.31368310e-02 7.19817272e-02 7.08351099e-02 6.96970019e-02 + 6.85674257e-02 6.74464038e-02 6.63339584e-02 6.52301115e-02 6.41348850e-02 + 6.30483006e-02 6.19703799e-02 6.09011443e-02 5.98406149e-02 5.87888128e-02 + 5.77457588e-02 5.67114736e-02 5.56859778e-02 5.46692916e-02 5.36614352e-02 + 5.26624286e-02 5.16722916e-02 5.06910438e-02 4.97187048e-02 4.87552937e-02 + 4.78008297e-02 4.68553316e-02 4.59188183e-02 4.49913084e-02 4.40728201e-02 + 4.31633717e-02 4.22629813e-02 4.13716667e-02 4.04894456e-02 3.96163354e-02 + 3.87523535e-02 3.78975170e-02 3.70518428e-02 3.62153478e-02 3.53880485e-02 + 3.45699613e-02 3.37611024e-02 3.29614879e-02 3.21711336e-02 3.13900552e-02 + 3.06182682e-02 2.98557879e-02 2.91026294e-02 2.83588076e-02 2.76243373e-02 + 2.68992330e-02 2.61835092e-02 2.54771800e-02 2.47802594e-02 2.40927612e-02 + 2.34146991e-02 2.27460866e-02 2.20869367e-02 2.14372628e-02 2.07970775e-02 + 2.01663937e-02 1.95452238e-02 1.89335801e-02 1.83314748e-02 1.77389197e-02 + 1.71559268e-02 1.65825074e-02 1.60186730e-02 1.54644348e-02 1.49198037e-02 + 1.43847906e-02 1.38594060e-02 1.33436604e-02 1.28375640e-02 1.23411268e-02 + 1.18543587e-02 1.13772693e-02 1.09098682e-02 1.04521644e-02 1.00041672e-02 + 9.56588541e-03 9.13732771e-03 8.71850261e-03 8.30941841e-03 7.91008322e-03 + 7.52050497e-03 7.14069137e-03 6.77064996e-03 6.41038807e-03 6.05991285e-03 + 5.71923124e-03 5.38835001e-03 5.06727570e-03 4.75601470e-03 4.45457316e-03 + 4.16295707e-03 3.88117220e-03 3.60922415e-03 3.34711831e-03 3.09485987e-03 + 2.85245383e-03 2.61990501e-03 2.39721801e-03 2.18439724e-03 1.98144694e-03 + 1.78837111e-03 1.60517360e-03 1.43185803e-03 1.26842784e-03 1.11488626e-03 + 9.71236350e-04 8.37480951e-04 7.13622715e-04 5.99664099e-04 4.95607361e-04 + 4.01454566e-04 3.17207579e-04 2.42868072e-04 1.78437519e-04 1.23917196e-04 + 7.93081847e-05 4.46113698e-05 1.98274393e-05 4.95688439e-06 0.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 9.99999383e-01 9.99962914e-01 + 9.99870183e-01 9.99721201e-01 9.99515984e-01 9.99254555e-01 9.98936943e-01 + 9.98563186e-01 9.98133323e-01 9.97647405e-01 9.97105485e-01 9.96507624e-01 + 9.95853891e-01 9.95144357e-01 9.94379104e-01 9.93558218e-01 9.92681790e-01 + 9.91749919e-01 9.90762710e-01 9.89720275e-01 9.88622731e-01 9.87470200e-01 + 9.86262813e-01 9.85000706e-01 9.83684021e-01 9.82312906e-01 9.80887514e-01 + 9.79408008e-01 9.77874552e-01 9.76287320e-01 9.74646490e-01 9.72952247e-01 + 9.71204782e-01 9.69404291e-01 9.67550976e-01 9.65645047e-01 9.63686718e-01 + 9.61676209e-01 9.59613746e-01 9.57499563e-01 9.55333895e-01 9.53116988e-01 + 9.50849090e-01 9.48530457e-01 9.46161350e-01 9.43742036e-01 9.41272786e-01 + 9.38753878e-01 9.36185597e-01 9.33568230e-01 9.30902073e-01 9.28187426e-01 + 9.25424593e-01 9.22613887e-01 9.19755623e-01 9.16850122e-01 9.13897713e-01 + 9.10898726e-01 9.07853501e-01 9.04762378e-01 9.01625707e-01 8.98443839e-01 + 8.95217134e-01 8.91945954e-01 8.88630668e-01 8.85271647e-01 8.81869272e-01 + 8.78423923e-01 8.74935990e-01 8.71405864e-01 8.67833943e-01 8.64220629e-01 + 8.60566328e-01 8.56871452e-01 8.53136416e-01 8.49361641e-01 8.45547552e-01 + 8.41694577e-01 8.37803150e-01 8.33873710e-01 8.29906698e-01 8.25902560e-01 + 8.21861749e-01 8.17784717e-01 8.13671924e-01 8.09523833e-01 8.05340911e-01 + 8.01123627e-01 7.96872458e-01 7.92587881e-01 7.88270378e-01 7.83920435e-01 + 7.79538542e-01 7.75125192e-01 7.70680882e-01 7.66206111e-01 7.61701383e-01 + 7.57167206e-01 7.52604088e-01 7.48012545e-01 7.43393092e-01 7.38746250e-01 + 7.34072541e-01 7.29372491e-01 7.24646629e-01 7.19895487e-01 7.15119600e-01 + 7.10319505e-01 7.05495742e-01 7.00648855e-01 6.95779388e-01 6.90887889e-01 + 6.85974909e-01 6.81041001e-01 6.76086720e-01 6.71112623e-01 6.66119271e-01 + 6.61107225e-01 6.56077049e-01 6.51029310e-01 6.45964575e-01 6.40883414e-01 + 6.35786399e-01 6.30674104e-01 6.25547103e-01 6.20405975e-01 6.15251297e-01 + 6.10083649e-01 6.04903614e-01 5.99711773e-01 5.94508712e-01 5.89295015e-01 + 5.84071270e-01 5.78838064e-01 5.73595986e-01 5.68345626e-01 5.63087575e-01 + 5.57822425e-01 5.52550768e-01 5.47273197e-01 5.41990307e-01 5.36702691e-01 + 5.31410945e-01 5.26115664e-01 5.20817444e-01 5.15516882e-01 5.10214573e-01 + 5.04911115e-01 4.99607105e-01 4.94303138e-01 4.88999813e-01 4.83697725e-01 + 4.78397472e-01 4.73099650e-01 4.67804856e-01 4.62513684e-01 4.57226730e-01 + 4.51944590e-01 4.46667858e-01 4.41397128e-01 4.36132992e-01 4.30876043e-01 + 4.25626873e-01 4.20386072e-01 4.15154231e-01 4.09931937e-01 4.04719779e-01 + 3.99518343e-01 3.94328215e-01 3.89149978e-01 3.83984215e-01 3.78831508e-01 + 3.73692436e-01 3.68567577e-01 3.63457510e-01 3.58362807e-01 3.53284044e-01 + 3.48221791e-01 3.43176617e-01 3.38149092e-01 3.33139780e-01 3.28149245e-01 + 3.23178049e-01 3.18226751e-01 3.13295908e-01 3.08386076e-01 3.03497806e-01 + 2.98631650e-01 2.93788154e-01 2.88967863e-01 2.84171320e-01 2.79399065e-01 + 2.74651635e-01 2.69929564e-01 2.65233383e-01 2.60563621e-01 2.55920803e-01 + 2.51305453e-01 2.46718088e-01 2.42159226e-01 2.37629379e-01 2.33129058e-01 + 2.28658768e-01 2.24219012e-01 2.19810291e-01 2.15433101e-01 2.11087933e-01 + 2.06775278e-01 2.02495620e-01 1.98249440e-01 1.94037218e-01 1.89859426e-01 + 1.85716535e-01 1.81609011e-01 1.77537316e-01 1.73501909e-01 1.69503243e-01 + 1.65541769e-01 1.61617933e-01 1.57732175e-01 1.53884934e-01 1.50076642e-01 + 1.46307727e-01 1.42578614e-01 1.38889723e-01 1.35241469e-01 1.31634261e-01 + 1.28068507e-01 1.24544607e-01 1.21062958e-01 1.17623952e-01 1.14227975e-01 + 1.10875410e-01 1.07566635e-01 1.04302020e-01 1.01081935e-01 9.79067409e-02 + 9.47767953e-02 9.16924504e-02 8.86540533e-02 8.56619461e-02 8.27164652e-02 + 7.98179423e-02 7.69667035e-02 7.41630697e-02 7.14073563e-02 6.86998735e-02 + 6.60409259e-02 6.34308128e-02 6.08698279e-02 5.83582593e-02 5.58963898e-02 + 5.34844963e-02 5.11228502e-02 4.88117174e-02 4.65513579e-02 4.43420261e-02 + 4.21839706e-02 4.00774342e-02 3.80226540e-02 3.60198612e-02 3.40692813e-02 + 3.21711336e-02 3.03256319e-02 2.85329837e-02 2.67933909e-02 2.51070491e-02 + 2.34741482e-02 2.18948719e-02 2.03693980e-02 1.88978980e-02 1.74805376e-02 + 1.61174762e-02 1.48088674e-02 1.35548582e-02 1.23555900e-02 1.12111975e-02 + 1.01218096e-02 9.08754885e-03 8.10853169e-03 7.18486826e-03 6.31666251e-03 + 5.50401213e-03 4.74700858e-03 4.04573705e-03 3.40027644e-03 2.81069940e-03 + 2.27707227e-03 1.79945510e-03 1.37790165e-03 1.01245934e-03 7.03169297e-04 + 4.50066336e-04 2.53178934e-04 1.12529247e-04 2.81331032e-05 0.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 9.99975710e-01 + 9.99895217e-01 9.99758386e-01 9.99565232e-01 9.99315778e-01 9.99010051e-01 + 9.98648086e-01 9.98229923e-01 9.97755610e-01 9.97225201e-01 9.96638754e-01 + 9.95996336e-01 9.95298020e-01 9.94543884e-01 9.93734013e-01 9.92868499e-01 + 9.91947438e-01 9.90970935e-01 9.89939101e-01 9.88852050e-01 9.87709905e-01 + 9.86512796e-01 9.85260858e-01 9.83954230e-01 9.82593062e-01 9.81177505e-01 + 9.79707720e-01 9.78183872e-01 9.76606132e-01 9.74974680e-01 9.73289698e-01 + 9.71551377e-01 9.69759912e-01 9.67915505e-01 9.66018364e-01 9.64068704e-01 + 9.62066743e-01 9.60012707e-01 9.57906828e-01 9.55749343e-01 9.53540496e-01 + 9.51280535e-01 9.48969714e-01 9.46608295e-01 9.44196544e-01 9.41734731e-01 + 9.39223136e-01 9.36662040e-01 9.34051732e-01 9.31392507e-01 9.28684665e-01 + 9.25928510e-01 9.23124352e-01 9.20272509e-01 9.17373302e-01 9.14427057e-01 + 9.11434106e-01 9.08394786e-01 9.05309441e-01 9.02178417e-01 8.99002068e-01 + 8.95780752e-01 8.92514832e-01 8.89204675e-01 8.85850655e-01 8.82453150e-01 + 8.79012542e-01 8.75529221e-01 8.72003577e-01 8.68436008e-01 8.64826917e-01 + 8.61176710e-01 8.57485799e-01 8.53754599e-01 8.49983531e-01 8.46173020e-01 + 8.42323496e-01 8.38435392e-01 8.34509147e-01 8.30545202e-01 8.26544005e-01 + 8.22506007e-01 8.18431663e-01 8.14321431e-01 8.10175776e-01 8.05995164e-01 + 8.01780066e-01 7.97530958e-01 7.93248319e-01 7.88932630e-01 7.84584379e-01 + 7.80204055e-01 7.75792153e-01 7.71349168e-01 7.66875603e-01 7.62371961e-01 + 7.57838750e-01 7.53276481e-01 7.48685668e-01 7.44066827e-01 7.39420481e-01 + 7.34747152e-01 7.30047367e-01 7.25321656e-01 7.20570551e-01 7.15794588e-01 + 7.10994305e-01 7.06170243e-01 7.01322946e-01 6.96452960e-01 6.91560833e-01 + 6.86647118e-01 6.81712368e-01 6.76757139e-01 6.71781989e-01 6.66787480e-01 + 6.61774174e-01 6.56742636e-01 6.51693433e-01 6.46627134e-01 6.41544311e-01 + 6.36445535e-01 6.31331383e-01 6.26202429e-01 6.21059252e-01 6.15902432e-01 + 6.10732550e-01 6.05550188e-01 6.00355931e-01 5.95150364e-01 5.89934073e-01 + 5.84707647e-01 5.79471675e-01 5.74226746e-01 5.68973451e-01 5.63712384e-01 + 5.58444136e-01 5.53169301e-01 5.47888474e-01 5.42602250e-01 5.37311225e-01 + 5.32015995e-01 5.26717157e-01 5.21415308e-01 5.16111045e-01 5.10804967e-01 + 5.05497671e-01 5.00189755e-01 4.94881818e-01 4.89574458e-01 4.84268272e-01 + 4.78963860e-01 4.73661819e-01 4.68362745e-01 4.63067237e-01 4.57775892e-01 + 4.52489305e-01 4.47208073e-01 4.41932790e-01 4.36664051e-01 4.31402451e-01 + 4.26148581e-01 4.20903034e-01 4.15666401e-01 4.10439273e-01 4.05222238e-01 + 4.00015885e-01 3.94820800e-01 3.89637568e-01 3.84466774e-01 3.79309001e-01 + 3.74164830e-01 3.69034840e-01 3.63919610e-01 3.58819716e-01 3.53735733e-01 + 3.48668234e-01 3.43617790e-01 3.38584970e-01 3.33570341e-01 3.28574469e-01 + 3.23597917e-01 3.18641245e-01 3.13705012e-01 3.08789775e-01 3.03896087e-01 + 2.99024499e-01 2.94175562e-01 2.89349820e-01 2.84547819e-01 2.79770100e-01 + 2.75017200e-01 2.70289655e-01 2.65587999e-01 2.60912761e-01 2.56264468e-01 + 2.51643644e-01 2.47050809e-01 2.42486482e-01 2.37951176e-01 2.33445403e-01 + 2.28969671e-01 2.24524484e-01 2.20110342e-01 2.15727744e-01 2.11377184e-01 + 2.07059151e-01 2.02774132e-01 1.98522611e-01 1.94305066e-01 1.90121972e-01 + 1.85973802e-01 1.81861023e-01 1.77784097e-01 1.73743485e-01 1.69739642e-01 + 1.65773019e-01 1.61844064e-01 1.57953218e-01 1.54100921e-01 1.50287606e-01 + 1.46513704e-01 1.42779640e-01 1.39085834e-01 1.35432703e-01 1.31820659e-01 + 1.28250109e-01 1.24721454e-01 1.21235093e-01 1.17791419e-01 1.14390819e-01 + 1.11033677e-01 1.07720372e-01 1.04451277e-01 1.01226759e-01 9.80471834e-02 + 9.49129074e-02 9.18242846e-02 8.87816629e-02 8.57853854e-02 8.28357897e-02 + 7.99332082e-02 7.70779680e-02 7.42703909e-02 7.15107933e-02 6.87994863e-02 + 6.61367753e-02 6.35229606e-02 6.09583365e-02 5.84431923e-02 5.59778113e-02 + 5.35624714e-02 5.11974448e-02 4.88829981e-02 4.66193920e-02 4.44068816e-02 + 4.22457164e-02 4.01361399e-02 3.80783899e-02 3.60726981e-02 3.41192908e-02 + 3.22183880e-02 3.03702040e-02 2.85749470e-02 2.68328194e-02 2.51440175e-02 + 2.35087316e-02 2.19271461e-02 2.03994392e-02 1.89257830e-02 1.75063436e-02 + 1.61412811e-02 1.48307492e-02 1.35748956e-02 1.23738620e-02 1.12277835e-02 + 1.01367895e-02 9.10100279e-03 8.12054017e-03 7.19551214e-03 6.32602293e-03 + 5.51217055e-03 4.75404670e-03 4.05173684e-03 3.40532012e-03 2.81486937e-03 + 2.28045115e-03 1.80212569e-03 1.37994689e-03 1.01396233e-03 7.04213259e-04 + 4.50734584e-04 2.53554873e-04 1.12696347e-04 2.81748805e-05 0.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 9.99999383e-01 + 9.99986934e-01 9.99958482e-01 9.99914026e-01 9.99853569e-01 9.99777111e-01 + 9.99684655e-01 9.99576205e-01 9.99451764e-01 9.99311336e-01 9.99154925e-01 + 9.98982536e-01 9.98794176e-01 9.98589849e-01 9.98369562e-01 9.98133323e-01 + 9.97881139e-01 9.97613018e-01 9.97328969e-01 9.97029001e-01 9.96713123e-01 + 9.96381345e-01 9.96033679e-01 9.95670135e-01 9.95290724e-01 9.94895460e-01 + 9.94484354e-01 9.94057421e-01 9.93614672e-01 9.93156124e-01 9.92681790e-01 + 9.92191685e-01 9.91685825e-01 9.91164227e-01 9.90626907e-01 9.90073883e-01 + 9.89505171e-01 9.88920791e-01 9.88320760e-01 9.87705099e-01 9.87073826e-01 + 9.86426963e-01 9.85764529e-01 9.85086546e-01 9.84393036e-01 9.83684021e-01 + 9.82959523e-01 9.82219566e-01 9.81464174e-01 9.80693370e-01 9.79907179e-01 + 9.79105627e-01 9.78288739e-01 9.77456541e-01 9.76609060e-01 9.75746323e-01 + 9.74868358e-01 9.73975192e-01 9.73066855e-01 9.72143375e-01 9.71204782e-01 + 9.70251106e-01 9.69282377e-01 9.68298628e-01 9.67299888e-01 9.66286190e-01 + 9.65257566e-01 9.64214050e-01 9.63155675e-01 9.62082474e-01 9.60994483e-01 + 9.59891735e-01 9.58774266e-01 9.57642113e-01 9.56495310e-01 9.55333895e-01 + 9.54157905e-01 9.52967378e-01 9.51762352e-01 9.50542865e-01 9.49308956e-01 + 9.48060665e-01 9.46798032e-01 9.45521098e-01 9.44229902e-01 9.42924487e-01 + 9.41604894e-01 9.40271166e-01 9.38923345e-01 9.37561474e-01 9.36185597e-01 + 9.34795758e-01 9.33392001e-01 9.31974372e-01 9.30542915e-01 9.29097677e-01 + 9.27638704e-01 9.26166043e-01 9.24679740e-01 9.23179843e-01 9.21666401e-01 + 9.20139461e-01 9.18599073e-01 9.17045285e-01 9.15478149e-01 9.13897713e-01 + 9.12304028e-01 9.10697146e-01 9.09077118e-01 9.07443995e-01 9.05797831e-01 + 9.04138676e-01 9.02466586e-01 9.00781613e-01 8.99083811e-01 8.97373235e-01 + 8.95649939e-01 8.93913979e-01 8.92165409e-01 8.90404287e-01 8.88630668e-01 + 8.86844609e-01 8.85046167e-01 8.83235400e-01 8.81412366e-01 8.79577124e-01 + 8.77729731e-01 8.75870247e-01 8.73998732e-01 8.72115246e-01 8.70219848e-01 + 8.68312600e-01 8.66393562e-01 8.64462797e-01 8.62520365e-01 8.60566328e-01 + 8.58600751e-01 8.56623695e-01 8.54635223e-01 8.52635400e-01 8.50624289e-01 + 8.48601955e-01 8.46568462e-01 8.44523876e-01 8.42468262e-01 8.40401685e-01 + 8.38324213e-01 8.36235911e-01 8.34136846e-01 8.32027086e-01 8.29906698e-01 + 8.27775749e-01 8.25634309e-01 8.23482445e-01 8.21320227e-01 8.19147724e-01 + 8.16965004e-01 8.14772139e-01 8.12569199e-01 8.10356253e-01 8.08133373e-01 + 8.05900629e-01 8.03658094e-01 8.01405839e-01 7.99143936e-01 7.96872458e-01 + 7.94591477e-01 7.92301066e-01 7.90001299e-01 7.87692249e-01 7.85373990e-01 + 7.83046597e-01 7.80710143e-01 7.78364704e-01 7.76010355e-01 7.73647171e-01 + 7.71275227e-01 7.68894601e-01 7.66505367e-01 7.64107602e-01 7.61701383e-01 + 7.59286788e-01 7.56863893e-01 7.54432775e-01 7.51993514e-01 7.49546186e-01 + 7.47090871e-01 7.44627646e-01 7.42156591e-01 7.39677784e-01 7.37191306e-01 + 7.34697235e-01 7.32195652e-01 7.29686636e-01 7.27170269e-01 7.24646629e-01 + 7.22115799e-01 7.19577859e-01 7.17032890e-01 7.14480975e-01 7.11922193e-01 + 7.09356629e-01 7.06784363e-01 7.04205478e-01 7.01620056e-01 6.99028181e-01 + 6.96429935e-01 6.93825401e-01 6.91214663e-01 6.88597804e-01 6.85974909e-01 + 6.83346060e-01 6.80711343e-01 6.78070841e-01 6.75424640e-01 6.72772823e-01 + 6.70115475e-01 6.67452683e-01 6.64784530e-01 6.62111103e-01 6.59432486e-01 + 6.56748767e-01 6.54060030e-01 6.51366361e-01 6.48667847e-01 6.45964575e-01 + 6.43256630e-01 6.40544100e-01 6.37827071e-01 6.35105630e-01 6.32379864e-01 + 6.29649862e-01 6.26915709e-01 6.24177493e-01 6.21435303e-01 6.18689226e-01 + 6.15939349e-01 6.13185762e-01 6.10428551e-01 6.07667806e-01 6.04903614e-01 + 6.02136064e-01 5.99365245e-01 5.96591245e-01 5.93814154e-01 5.91034060e-01 + 5.88251051e-01 5.85465218e-01 5.82676649e-01 5.79885434e-01 5.77091661e-01 + 5.74295421e-01 5.71496803e-01 5.68695896e-01 5.65892790e-01 5.63087575e-01 + 5.60280341e-01 5.57471177e-01 5.54660174e-01 5.51847421e-01 5.49033008e-01 + 5.46217026e-01 5.43399564e-01 5.40580713e-01 5.37760563e-01 5.34939205e-01 + 5.32116728e-01 5.29293223e-01 5.26468780e-01 5.23643491e-01 5.20817444e-01 + 5.17990731e-01 5.15163442e-01 5.12335668e-01 5.09507499e-01 5.06679025e-01 + 5.03850338e-01 5.01021528e-01 4.98192685e-01 4.95363899e-01 4.92535262e-01 + 4.89706864e-01 4.86878796e-01 4.84051147e-01 4.81224009e-01 4.78397472e-01 + 4.75571627e-01 4.72746563e-01 4.69922372e-01 4.67099144e-01 4.64276968e-01 + 4.61455937e-01 4.58636139e-01 4.55817665e-01 4.53000605e-01 4.50185050e-01 + 4.47371089e-01 4.44558813e-01 4.41748311e-01 4.38939674e-01 4.36132992e-01 + 4.33328354e-01 4.30525850e-01 4.27725570e-01 4.24927603e-01 4.22132040e-01 + 4.19338968e-01 4.16548479e-01 4.13760661e-01 4.10975604e-01 4.08193396e-01 + 4.05414127e-01 4.02637885e-01 3.99864760e-01 3.97094840e-01 3.94328215e-01 + 3.91564971e-01 3.88805199e-01 3.86048986e-01 3.83296420e-01 3.80547590e-01 + 3.77802584e-01 3.75061489e-01 3.72324393e-01 3.69591384e-01 3.66862550e-01 + 3.64137977e-01 3.61417753e-01 3.58701965e-01 3.55990699e-01 3.53284044e-01 + 3.50582085e-01 3.47884908e-01 3.45192601e-01 3.42505249e-01 3.39822938e-01 + 3.37145754e-01 3.34473784e-01 3.31807111e-01 3.29145823e-01 3.26490003e-01 + 3.23839737e-01 3.21195110e-01 3.18556207e-01 3.15923112e-01 3.13295908e-01 + 3.10674681e-01 3.08059514e-01 3.05450491e-01 3.02847696e-01 3.00251211e-01 + 2.97661120e-01 2.95077506e-01 2.92500451e-01 2.89930039e-01 2.87366350e-01 + 2.84809468e-01 2.82259474e-01 2.79716449e-01 2.77180476e-01 2.74651635e-01 + 2.72130007e-01 2.69615674e-01 2.67108715e-01 2.64609210e-01 2.62117240e-01 + 2.59632885e-01 2.57156224e-01 2.54687336e-01 2.52226300e-01 2.49773196e-01 + 2.47328101e-01 2.44891094e-01 2.42462253e-01 2.40041655e-01 2.37629379e-01 + 2.35225501e-01 2.32830098e-01 2.30443248e-01 2.28065025e-01 2.25695507e-01 + 2.23334770e-01 2.20982888e-01 2.18639937e-01 2.16305993e-01 2.13981129e-01 + 2.11665421e-01 2.09358943e-01 2.07061767e-01 2.04773968e-01 2.02495620e-01 + 2.00226794e-01 1.97967564e-01 1.95718001e-01 1.93478179e-01 1.91248168e-01 + 1.89028040e-01 1.86817867e-01 1.84617718e-01 1.82427664e-01 1.80247775e-01 + 1.78078122e-01 1.75918773e-01 1.73769798e-01 1.71631265e-01 1.69503243e-01 + 1.67385801e-01 1.65279004e-01 1.63182923e-01 1.61097622e-01 1.59023170e-01 + 1.56959632e-01 1.54907074e-01 1.52865563e-01 1.50835164e-01 1.48815940e-01 + 1.46807959e-01 1.44811282e-01 1.42825975e-01 1.40852101e-01 1.38889723e-01 + 1.36938904e-01 1.34999707e-01 1.33072193e-01 1.31156424e-01 1.29252461e-01 + 1.27360366e-01 1.25480199e-01 1.23612020e-01 1.21755889e-01 1.19911865e-01 + 1.18080008e-01 1.16260376e-01 1.14453027e-01 1.12658019e-01 1.10875410e-01 + 1.09105257e-01 1.07347616e-01 1.05602543e-01 1.03870095e-01 1.02150327e-01 + 1.00443293e-01 9.87490497e-02 9.70676498e-02 9.53991475e-02 9.37435963e-02 + 9.21010491e-02 9.04715586e-02 8.88551768e-02 8.72519555e-02 8.56619461e-02 + 8.40851993e-02 8.25217658e-02 8.09716956e-02 7.94350381e-02 7.79118428e-02 + 7.64021582e-02 7.49060328e-02 7.34235143e-02 7.19546504e-02 7.04994879e-02 + 6.90580735e-02 6.76304533e-02 6.62166731e-02 6.48167779e-02 6.34308128e-02 + 6.20588220e-02 6.07008494e-02 5.93569385e-02 5.80271324e-02 5.67114736e-02 + 5.54100042e-02 5.41227659e-02 5.28497998e-02 5.15911468e-02 5.03468471e-02 + 4.91169405e-02 4.79014665e-02 4.67004638e-02 4.55139711e-02 4.43420261e-02 + 4.31846665e-02 4.20419294e-02 4.09138512e-02 3.98004680e-02 3.87018157e-02 + 3.76179292e-02 3.65488433e-02 3.54945922e-02 3.44552096e-02 3.34307289e-02 + 3.24211828e-02 3.14266036e-02 3.04470233e-02 2.94824730e-02 2.85329837e-02 + 2.75985858e-02 2.66793093e-02 2.57751834e-02 2.48862372e-02 2.40124992e-02 + 2.31539972e-02 2.23107588e-02 2.14828110e-02 2.06701802e-02 1.98728925e-02 + 1.90909735e-02 1.83244480e-02 1.75733407e-02 1.68376756e-02 1.61174762e-02 + 1.54127657e-02 1.47235665e-02 1.40499008e-02 1.33917900e-02 1.27492553e-02 + 1.21223172e-02 1.15109958e-02 1.09153106e-02 1.03352808e-02 9.77092489e-03 + 9.22226091e-03 8.68930645e-03 8.17207857e-03 7.67059382e-03 7.18486826e-03 + 6.71491743e-03 6.26075638e-03 5.82239964e-03 5.39986125e-03 4.99315473e-03 + 4.60229310e-03 4.22728887e-03 3.86815404e-03 3.52490011e-03 3.19753807e-03 + 2.88607840e-03 2.59053106e-03 2.31090551e-03 2.04721071e-03 1.79945510e-03 + 1.56764661e-03 1.35179266e-03 1.15190015e-03 9.67975486e-04 8.00024557e-04 + 6.48052736e-04 5.12064889e-04 3.92065368e-04 2.88058015e-04 2.00046158e-04 + 1.28032615e-04 7.20196905e-05 3.20091782e-05 8.00235860e-06 0.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 5.14330820e-07 5.21272731e-07 5.28308337e-07 5.35438902e-07 5.42665708e-07 + 5.49990054e-07 5.57413257e-07 5.64936650e-07 5.72561587e-07 5.80289437e-07 + 5.88121589e-07 5.96059452e-07 6.04104453e-07 6.12258036e-07 6.20521668e-07 + 6.28896834e-07 6.37385040e-07 6.45987811e-07 6.54706693e-07 6.63543253e-07 + 6.72499081e-07 6.81575785e-07 6.90774997e-07 7.00098371e-07 7.09547582e-07 + 7.19124329e-07 7.28830332e-07 7.38667338e-07 7.48637114e-07 7.58741451e-07 + 7.68982166e-07 7.79361100e-07 7.89880118e-07 8.00541111e-07 8.11345996e-07 + 8.22296713e-07 8.33395232e-07 8.44643548e-07 8.56043682e-07 8.67597683e-07 + 8.79307628e-07 8.91175622e-07 9.03203799e-07 9.15394319e-07 9.27749374e-07 + 9.40271185e-07 9.52962003e-07 9.65824108e-07 9.78859813e-07 9.92071461e-07 + 1.00546143e-06 1.01903211e-06 1.03278597e-06 1.04672545e-06 1.06085308e-06 + 1.07517139e-06 1.08968295e-06 1.10439038e-06 1.11929631e-06 1.13440343e-06 + 1.14971444e-06 1.16523211e-06 1.18095922e-06 1.19689860e-06 1.21305311e-06 + 1.22942566e-06 1.24601919e-06 1.26283668e-06 1.27988116e-06 1.29715568e-06 + 1.31466336e-06 1.33240734e-06 1.35039081e-06 1.36861700e-06 1.38708919e-06 + 1.40581070e-06 1.42478490e-06 1.44401519e-06 1.46350502e-06 1.48325792e-06 + 1.50327741e-06 1.52356711e-06 1.54413066e-06 1.56497176e-06 1.58609414e-06 + 1.60750162e-06 1.62919803e-06 1.65118728e-06 1.67347331e-06 1.69606014e-06 + 1.71895182e-06 1.74215248e-06 1.76566627e-06 1.78949742e-06 1.81365023e-06 + 1.83812902e-06 1.86293820e-06 1.88808224e-06 1.91356564e-06 1.93939299e-06 + 1.96556893e-06 1.99209816e-06 2.01898547e-06 2.04623566e-06 2.07385366e-06 + 2.10184441e-06 2.13021296e-06 2.15896439e-06 2.18810388e-06 2.21763667e-06 + 2.24756806e-06 2.27790343e-06 2.30864824e-06 2.33980801e-06 2.37138834e-06 + 2.40339491e-06 2.43583348e-06 2.46870986e-06 2.50202998e-06 2.53579982e-06 + 2.57002545e-06 2.60471302e-06 2.63986877e-06 2.67549902e-06 2.71161016e-06 + 2.74820870e-06 2.78530121e-06 2.82289435e-06 2.86099489e-06 2.89960967e-06 + 2.93874563e-06 2.97840981e-06 3.01860934e-06 3.05935144e-06 3.10064343e-06 + 3.14249274e-06 3.18490689e-06 3.22789350e-06 3.27146030e-06 3.31561513e-06 + 3.36036590e-06 3.40572068e-06 3.45168761e-06 3.49827496e-06 3.54549109e-06 + 3.59334450e-06 3.64184379e-06 3.69099766e-06 3.74081497e-06 3.79130466e-06 + 3.84247581e-06 3.89433762e-06 3.94689940e-06 4.00017061e-06 4.05416081e-06 + 4.10887972e-06 4.16433718e-06 4.22054314e-06 4.27750771e-06 4.33524113e-06 + 4.39375377e-06 4.45305616e-06 4.51315895e-06 4.57407295e-06 4.63580911e-06 + 4.69837851e-06 4.76179241e-06 4.82606221e-06 4.89119946e-06 4.95721586e-06 + 5.02412329e-06 5.09193376e-06 5.16065947e-06 5.23031277e-06 5.30090617e-06 + 5.37245238e-06 5.44496424e-06 5.51845479e-06 5.59293724e-06 5.66842498e-06 + 5.74493158e-06 5.82247079e-06 5.90105654e-06 5.98070296e-06 6.06142436e-06 + 6.14323526e-06 6.22615036e-06 6.31018456e-06 6.39535297e-06 6.48167090e-06 + 6.56915386e-06 6.65781757e-06 6.74767798e-06 6.83875123e-06 6.93105369e-06 + 7.02460195e-06 7.11941284e-06 7.21550338e-06 7.31289086e-06 7.41159278e-06 + 7.51162687e-06 7.61301112e-06 7.71576375e-06 7.81990322e-06 7.92544827e-06 + 8.03241786e-06 8.14083121e-06 8.25070782e-06 8.36206742e-06 8.47493005e-06 + 8.58931598e-06 8.70524577e-06 8.82274026e-06 8.94182058e-06 9.06250812e-06 + 9.18482457e-06 9.30879193e-06 9.43443248e-06 9.56176879e-06 9.69082375e-06 + 9.82162057e-06 9.95418275e-06 1.00885341e-05 1.02246988e-05 1.03627013e-05 + 1.05025665e-05 1.06443194e-05 1.07879855e-05 1.09335907e-05 1.10811611e-05 + 1.12307232e-05 1.13823040e-05 1.15359307e-05 1.16916309e-05 1.18494326e-05 + 1.20093641e-05 1.21714542e-05 1.23357320e-05 1.25022271e-05 1.26709694e-05 + 1.28419891e-05 1.30153172e-05 1.31909846e-05 1.33690230e-05 1.35494644e-05 + 1.37323412e-05 1.39176862e-05 1.41055329e-05 1.42959150e-05 1.44888666e-05 + 1.46844225e-05 1.48826178e-05 1.50834881e-05 1.52870696e-05 1.54933988e-05 + 1.57025128e-05 1.59144493e-05 1.61292462e-05 1.63469423e-05 1.65675766e-05 + 1.67911888e-05 1.70178190e-05 1.72475081e-05 1.74802973e-05 1.77162285e-05 + 1.79553440e-05 1.81976869e-05 1.84433006e-05 1.86922294e-05 1.89445180e-05 + 1.92002117e-05 1.94593565e-05 1.97219989e-05 1.99881863e-05 2.02579664e-05 + 2.05313877e-05 2.08084993e-05 2.10893511e-05 2.13739936e-05 2.16624779e-05 + 2.19548558e-05 2.22511800e-05 2.25515036e-05 2.28558807e-05 2.31643660e-05 + 2.34770149e-05 2.37938836e-05 2.41150291e-05 2.44405091e-05 2.47703821e-05 + 2.51047073e-05 2.54435449e-05 2.57869559e-05 2.61350018e-05 2.64877453e-05 + 2.68452498e-05 2.72075795e-05 2.75747995e-05 2.79469759e-05 2.83241756e-05 + 2.87064663e-05 2.90939168e-05 2.94865967e-05 2.98845766e-05 3.02879280e-05 + 3.06967235e-05 3.11110364e-05 3.15309413e-05 3.19565137e-05 3.23878300e-05 + 3.28249678e-05 3.32680056e-05 3.37170230e-05 3.41721009e-05 3.46333209e-05 + 3.51007660e-05 3.55745202e-05 3.60546687e-05 3.65412977e-05 3.70344947e-05 + 3.75343484e-05 3.80409486e-05 3.85543864e-05 3.90747540e-05 3.96021450e-05 + 4.01366543e-05 4.06783777e-05 4.12274128e-05 4.17838582e-05 4.23478140e-05 + 4.29193814e-05 4.34986633e-05 4.40857637e-05 4.46807882e-05 4.52838437e-05 + 4.58950387e-05 4.65144829e-05 4.71422878e-05 4.77785661e-05 4.84234323e-05 + 4.90770022e-05 4.97393933e-05 5.04107247e-05 5.10911171e-05 5.17806927e-05 + 5.24795755e-05 5.31878910e-05 5.39057667e-05 5.46333316e-05 5.53707164e-05 + 5.61180536e-05 5.68754776e-05 5.76431246e-05 5.84211325e-05 5.92096411e-05 + 6.00087922e-05 6.08187295e-05 6.16395984e-05 6.24715466e-05 6.33147236e-05 + 6.41692809e-05 6.50353721e-05 6.59131530e-05 6.68027813e-05 6.77044168e-05 + 6.86182217e-05 6.95443602e-05 7.04829988e-05 7.14343061e-05 7.23984533e-05 + 7.33756135e-05 7.43659624e-05 7.53696780e-05 7.63869407e-05 7.74179335e-05 + 7.84628415e-05 7.95218526e-05 8.05951571e-05 8.16829480e-05 8.27854208e-05 + 8.39027737e-05 8.50352074e-05 8.61829256e-05 8.73461345e-05 8.85250432e-05 + 8.97198636e-05 9.09308104e-05 9.21581014e-05 9.34019571e-05 9.46626011e-05 + 9.59402600e-05 9.72351634e-05 9.85475441e-05 9.98776379e-05 1.01225684e-04 + 1.02591925e-04 1.03976605e-04 1.05379975e-04 1.06802286e-04 1.08243794e-04 + 1.09704758e-04 1.11185441e-04 1.12686108e-04 1.14207029e-04 1.15748479e-04 + 1.17310733e-04 1.18894074e-04 1.20498784e-04 1.22125153e-04 1.23773474e-04 + 1.25444041e-04 1.27137157e-04 1.28853124e-04 1.30592251e-04 1.32354852e-04 + 1.34141242e-04 1.35951743e-04 1.37786681e-04 1.39646384e-04 1.41531188e-04 + 1.43441431e-04 1.45377457e-04 1.47339613e-04 1.49328252e-04 1.51343732e-04 + 1.53386415e-04 1.55456667e-04 1.57554862e-04 1.59681377e-04 1.61836592e-04 + 1.64020897e-04 1.66234683e-04 1.68478349e-04 1.70752297e-04 1.73056937e-04 + 1.75392682e-04 1.77759953e-04 1.80159175e-04 1.82590779e-04 1.85055202e-04 + 1.87552888e-04 1.90084285e-04 1.92649848e-04 1.95250038e-04 1.97885323e-04 + 2.00556177e-04 2.03263079e-04 2.06006515e-04 2.08786981e-04 2.11604973e-04 + 2.14461001e-04 2.17355576e-04 2.20289219e-04 2.23262457e-04 2.26275825e-04 + 2.29329865e-04 2.32425124e-04 2.35562161e-04 2.38741538e-04 2.41963826e-04 + 2.45229606e-04 2.48539465e-04 2.51893996e-04 2.55293803e-04 2.58739497e-04 + 2.62231698e-04 2.65771033e-04 2.69358138e-04 2.72993659e-04 2.76678248e-04 + 2.80412567e-04 2.84197289e-04 2.88033093e-04 2.91920669e-04 2.95860715e-04 + 2.99853940e-04 3.03901062e-04 3.08002807e-04 3.12159914e-04 3.16373129e-04 + 3.20643209e-04 3.24970923e-04 3.29357048e-04 3.33802372e-04 3.38307695e-04 + 3.42873826e-04 3.47501586e-04 3.52191806e-04 3.56945331e-04 3.61763013e-04 + 3.66645720e-04 3.71594328e-04 3.76609728e-04 3.81692821e-04 3.86844520e-04 + 3.92065751e-04 3.97357453e-04 4.02720577e-04 4.08156087e-04 4.13664960e-04 + 4.19248186e-04 4.24906769e-04 4.30641726e-04 4.36454087e-04 4.42344897e-04 + 4.48315216e-04 4.54366115e-04 4.60498684e-04 4.66714024e-04 4.73013252e-04 + 4.79397500e-04 4.85867917e-04 4.92425665e-04 4.99071922e-04 5.05807884e-04 + 5.12634761e-04 5.19553780e-04 5.26566185e-04 5.33673236e-04 5.40876211e-04 + 5.48176405e-04 5.55575129e-04 5.63073713e-04 5.70673505e-04 5.78375872e-04 + 5.86182197e-04 5.94093885e-04 6.02112356e-04 6.10239052e-04 6.18475434e-04 + 6.26822982e-04 6.35283197e-04 6.43857599e-04 6.52547729e-04 6.61355151e-04 + 6.70281445e-04 6.79328218e-04 6.88497095e-04 6.97789724e-04 7.07207775e-04 + 7.16752941e-04 7.26426939e-04 7.36231506e-04 7.46168405e-04 7.56239422e-04 + 7.66446368e-04 7.76791076e-04 7.87275407e-04 7.97901244e-04 8.08670498e-04 + 8.19585105e-04 8.30647025e-04 8.41858248e-04 8.53220789e-04 8.64736690e-04 + 8.76408020e-04 8.88236878e-04 9.00225390e-04 9.12375711e-04 9.24690024e-04 + 9.37170543e-04 9.49819512e-04 9.62639203e-04 9.75631922e-04 9.88800002e-04 + 1.00214581e-03 1.01567175e-03 1.02938025e-03 1.04327377e-03 1.05735481e-03 + 1.07162590e-03 1.08608961e-03 1.10074854e-03 1.11560531e-03 1.13066261e-03 + 1.14592314e-03 1.16138964e-03 1.17706488e-03 1.19295170e-03 1.20905294e-03 + 1.22537150e-03 1.24191031e-03 1.25867234e-03 1.27566061e-03 1.29287818e-03 + 1.31032812e-03 1.32801359e-03 1.34593776e-03 1.36410385e-03 1.38251512e-03 + 1.40117490e-03 1.42008652e-03 1.43925340e-03 1.45867896e-03 1.47836672e-03 + 1.49832020e-03 1.51854299e-03 1.53903873e-03 1.55981110e-03 1.58086383e-03 + 1.60220071e-03 1.62382558e-03 1.64574231e-03 1.66795486e-03 1.69046721e-03 + 1.71328340e-03 1.73640755e-03 1.75984380e-03 1.78359637e-03 1.80766953e-03 + 1.83206760e-03 1.85679497e-03 1.88185609e-03 1.90725546e-03 1.93299764e-03 + 1.95908726e-03 1.98552901e-03 2.01232765e-03 2.03948799e-03 2.06701491e-03 + 2.09491336e-03 2.12318836e-03 2.15184498e-03 2.18088838e-03 2.21032378e-03 + 2.24015647e-03 2.27039180e-03 2.30103523e-03 2.33209225e-03 2.36356844e-03 + 2.39546947e-03 2.42780106e-03 2.46056903e-03 2.49377928e-03 2.52743776e-03 + 2.56155052e-03 2.59612371e-03 2.63116353e-03 2.66667628e-03 2.70266835e-03 + 2.73914620e-03 2.77611639e-03 2.81358556e-03 2.85156046e-03 2.89004791e-03 + 2.92905481e-03 2.96858820e-03 3.00865516e-03 3.04926291e-03 3.09041874e-03 + 3.13213004e-03 3.17440433e-03 3.21724919e-03 3.26067232e-03 3.30468154e-03 + 3.34928475e-03 3.39448996e-03 3.44030531e-03 3.48673903e-03 3.53379947e-03 + 3.58149507e-03 3.62983443e-03 3.67882622e-03 3.72847925e-03 3.77880244e-03 + 3.82980485e-03 3.88149563e-03 3.93388409e-03 3.98697963e-03 4.04079180e-03 + 4.09533027e-03 4.15060484e-03 4.20662546e-03 4.26340218e-03 4.32094522e-03 + 4.37926491e-03 4.43837175e-03 4.49827634e-03 4.55898947e-03 4.62052205e-03 + 4.68288512e-03 4.74608991e-03 4.81014777e-03 4.87507022e-03 4.94086893e-03 + 5.00755572e-03 5.07514258e-03 5.14364166e-03 5.21306527e-03 5.28342588e-03 + 5.35473616e-03 5.42700890e-03 5.50025711e-03 5.57449395e-03 5.64973276e-03 + 5.72598707e-03 5.80327058e-03 5.88159719e-03 5.96098097e-03 6.04143618e-03 + 6.12297730e-03 6.20561898e-03 6.28937607e-03 6.37426363e-03 6.46029692e-03 + 6.54749139e-03 6.63586273e-03 6.72542681e-03 6.81619973e-03 6.90819782e-03 + 7.00143760e-03 7.09593584e-03 7.19170951e-03 7.28877585e-03 7.38715228e-03 + 7.48685650e-03 7.58790642e-03 7.69032021e-03 7.79411628e-03 7.89931328e-03 + 8.00593013e-03 8.11398598e-03 8.22350025e-03 8.33449264e-03 8.44698309e-03 + 8.56099182e-03 8.67653932e-03 8.79364636e-03 8.91233400e-03 9.03262356e-03 + 9.15453666e-03 9.27809523e-03 9.40332146e-03 9.53023786e-03 9.65886725e-03 + 9.78923276e-03 9.92135780e-03 1.00552661e-02 1.01909818e-02 1.03285293e-02 + 1.04679332e-02 1.06092186e-02 1.07524110e-02 1.08975360e-02 1.10446198e-02 + 1.11936888e-02 1.13447697e-02 1.14978898e-02 1.16530766e-02 1.18103578e-02 + 1.19697620e-02 1.21313176e-02 1.22950537e-02 1.24609997e-02 1.26291855e-02 + 1.27996413e-02 1.29723978e-02 1.31474859e-02 1.33249372e-02 1.35047836e-02 + 1.36870573e-02 1.38717912e-02 1.40590185e-02 1.42487727e-02 1.44410881e-02 + 1.46359991e-02 1.48335408e-02 1.50337487e-02 1.52366589e-02 1.54423077e-02 + 1.56507322e-02 1.58619697e-02 1.60760584e-02 1.62930365e-02 1.65129433e-02 + 1.67358181e-02 1.69617010e-02 1.71906327e-02 1.74226542e-02 1.76578074e-02 + 1.78961344e-02 1.81376781e-02 1.83824819e-02 1.86305898e-02 1.88820465e-02 + 1.91368970e-02 1.93951872e-02 1.96569636e-02 1.99222732e-02 2.01911636e-02 + 2.04636833e-02 2.07398811e-02 2.10198068e-02 2.13035106e-02 2.15910436e-02 + 2.18824574e-02 2.21778044e-02 2.24771377e-02 2.27805111e-02 2.30879791e-02 + 2.33995970e-02 2.37154208e-02 2.40355073e-02 2.43599140e-02 2.46886991e-02 + 2.50219219e-02 2.53596422e-02 2.57019207e-02 2.60488189e-02 2.64003992e-02 + 2.67567248e-02 2.71178596e-02 2.74838687e-02 2.78548179e-02 2.82307737e-02 + 2.86118038e-02 2.89979766e-02 2.93893616e-02 2.97860291e-02 3.01880504e-02 + 3.05954978e-02 3.10084445e-02 3.14269648e-02 3.18511338e-02 3.22810278e-02 + 3.27167240e-02 3.31583009e-02 3.36058377e-02 3.40594148e-02 3.45191140e-02 + 3.49850176e-02 3.54572096e-02 3.59357747e-02 3.64207990e-02 3.69123696e-02 + 3.74105750e-02 3.79155046e-02 3.84272493e-02 3.89459010e-02 3.94715529e-02 + 4.00042995e-02 4.05442365e-02 4.10914611e-02 4.16460716e-02 4.22081677e-02 + 4.27778503e-02 4.33552219e-02 4.39403863e-02 4.45334487e-02 4.51345155e-02 + 4.57436950e-02 4.63610966e-02 4.69868312e-02 4.76210113e-02 4.82637510e-02 + 4.89151657e-02 4.95753725e-02 5.02444901e-02 5.09226388e-02 5.16099405e-02 + 5.23065186e-02 5.30124984e-02 5.37280069e-02 5.44531725e-02 5.51881257e-02 + 5.59329985e-02 5.66879248e-02 5.74530404e-02 5.82284827e-02 5.90143912e-02 + 5.98109070e-02 6.06181734e-02 6.14363354e-02 6.22655402e-02 6.31059367e-02 + 6.39576760e-02 6.48209113e-02 6.56957975e-02 6.65824922e-02 6.74811545e-02 + 6.83919460e-02 6.93150305e-02 7.02505738e-02 7.11987441e-02 7.21597119e-02 + 7.31336498e-02 7.41207329e-02 7.51211387e-02 7.61350469e-02 7.71626398e-02 + 7.82041021e-02 7.92596210e-02 8.03293862e-02 8.14135900e-02 8.25124273e-02 + 8.36260956e-02 8.47547950e-02 8.58987284e-02 8.70581015e-02 8.82331227e-02 + 8.94240030e-02 9.06309567e-02 9.18542005e-02 9.30939545e-02 9.43504414e-02 + 9.56238870e-02 9.69145203e-02 9.82225733e-02 9.95482810e-02 1.00891882e-01 + 1.02253617e-01 1.03633732e-01 1.05032474e-01 1.06450095e-01 1.07886849e-01 + 1.09342995e-01 1.10818795e-01 1.12314514e-01 1.13830420e-01 1.15366786e-01 + 1.16923889e-01 1.18502008e-01 1.20101427e-01 1.21722433e-01 1.23365318e-01 + 1.25030377e-01 1.26717909e-01 1.28428217e-01 1.30161610e-01 1.31918398e-01 + 1.33698897e-01 1.35503428e-01 1.37332315e-01 1.39185886e-01 1.41064474e-01 + 1.42968418e-01 1.44898059e-01 1.46853745e-01 1.48835827e-01 1.50844660e-01 + 1.52880607e-01 1.54944033e-01 1.57035309e-01 1.59154811e-01 1.61302919e-01 + 1.63480021e-01 1.65686507e-01 1.67922774e-01 1.70189223e-01 1.72486263e-01 + 1.74814306e-01 1.77173771e-01 1.79565081e-01 1.81988667e-01 1.84444963e-01 + 1.86934413e-01 1.89457462e-01 1.92014565e-01 1.94606181e-01 1.97232776e-01 + 1.99894822e-01 2.02592797e-01 2.05327188e-01 2.08098484e-01 2.10907184e-01 + 2.13753793e-01 2.16638823e-01 2.19562792e-01 2.22526226e-01 2.25529657e-01 + 2.28573626e-01 2.31658678e-01 2.34785370e-01 2.37954263e-01 2.41165926e-01 + 2.44420936e-01 2.47719880e-01 2.51063349e-01 2.54451945e-01 2.57886277e-01 + 2.61366962e-01 2.64894626e-01 2.68469902e-01 2.72093434e-01 2.75765873e-01 + 2.79487878e-01 2.83260119e-01 2.87083274e-01 2.90958030e-01 2.94885084e-01 + 2.98865141e-01 3.02898917e-01 3.06987136e-01 3.11130534e-01 3.15329856e-01 + 3.19585855e-01 3.23899298e-01 3.28270959e-01 3.32701624e-01 3.37192090e-01 + 3.41743164e-01 3.46355663e-01 3.51030417e-01 3.55768266e-01 3.60570062e-01 + 3.65436668e-01 3.70368958e-01 3.75367819e-01 3.80434149e-01 3.85568860e-01 + 3.90772873e-01 3.96047126e-01 4.01392564e-01 4.06810150e-01 4.12300857e-01 + 4.17865672e-01 4.23505595e-01 4.29221640e-01 4.35014834e-01 4.40886219e-01 + 4.46836850e-01 4.52867796e-01 4.58980142e-01 4.65174986e-01 4.71453442e-01 + 4.77816637e-01 4.84265717e-01 4.90801840e-01 4.97426181e-01 5.04139930e-01 + 5.10944295e-01 5.17840498e-01 5.24829779e-01 5.31913394e-01 5.39092616e-01 + 5.46368736e-01 5.53743062e-01 5.61216919e-01 5.68791650e-01 5.76468618e-01 + 5.84249201e-01 5.92134798e-01 6.00126828e-01 6.08226725e-01 6.16435947e-01 + 6.24755968e-01 6.33188284e-01 6.41734412e-01 6.50395886e-01 6.59174263e-01 + 6.68071123e-01 6.77088063e-01 6.86226704e-01 6.95488690e-01 7.04875684e-01 + 7.14389374e-01 7.24031471e-01 7.33803706e-01 7.43707837e-01 7.53745644e-01 + 7.63918931e-01 7.74229527e-01 7.84679284e-01 7.95270082e-01 8.06003823e-01 + 8.16882438e-01 8.27907880e-01 8.39082133e-01 8.50407205e-01 8.61885131e-01 + 8.73517974e-01 8.85307825e-01 8.97256804e-01 9.09367057e-01 9.21640763e-01 + 9.34080126e-01 9.46687383e-01 9.59464800e-01 9.72414674e-01 9.85539332e-01 + 9.98841133e-01 1.01232247e+00 1.02598576e+00 1.03983347e+00 1.05386807e+00 + 1.06809210e+00 1.08250812e+00 1.09711870e+00 1.11192649e+00 1.12693414e+00 + 1.14214434e+00 1.15755983e+00 1.17318339e+00 1.18901782e+00 1.20506596e+00 + 1.22133071e+00 1.23781498e+00 1.25452174e+00 1.27145399e+00 1.28861478e+00 + 1.30600718e+00 1.32363433e+00 1.34149939e+00 1.35960557e+00 1.37795614e+00 + 1.39655438e+00 1.41540364e+00 1.43450731e+00 1.45386882e+00 1.47349165e+00 + 1.49337933e+00 1.51353544e+00 1.53396359e+00 1.55466746e+00 1.57565077e+00 + 1.59691729e+00 1.61847085e+00 1.64031531e+00 1.66245461e+00 1.68489272e+00 + 1.70763367e+00 1.73068156e+00 1.75404053e+00 1.77771477e+00 1.80170855e+00 + 1.82602617e+00 1.85067200e+00 1.87565047e+00 1.90096608e+00 1.92662338e+00 + 1.95262697e+00 1.97898153e+00 2.00569179e+00 2.03276257e+00 2.06019871e+00 + 2.08800517e+00 2.11618692e+00 2.14474905e+00 2.17369667e+00 2.20303501e+00 + 2.23276932e+00 2.26290495e+00 2.29344733e+00 2.32440193e+00 2.35577433e+00 + 2.38757016e+00 2.41979514e+00 2.45245505e+00 2.48555578e+00 2.51910327e+00 + 2.55310354e+00 2.58756272e+00 2.62248699e+00 2.65788264e+00 2.69375602e+00 + 2.73011358e+00 2.76696186e+00 2.80430747e+00 2.84215715e+00 2.88051767e+00 + 2.91939595e+00 2.95879897e+00 2.99873381e+00 3.03920765e+00 3.08022776e+00 + 3.12180152e+00 3.16393640e+00 3.20663997e+00 3.24991992e+00 3.29378401e+00 + 3.33824013e+00 3.38329628e+00 3.42896055e+00 3.47524115e+00 3.52214640e+00 + 3.56968472e+00 3.61786467e+00 3.66669491e+00 3.71618420e+00 3.76634145e+00 + 3.81717567e+00 3.86869600e+00 3.92091170e+00 3.97383215e+00 4.02746687e+00 + 4.08182549e+00 4.13691779e+00 4.19275367e+00 4.24934317e+00 4.30669645e+00 + 4.36482383e+00 4.42373576e+00 4.48344281e+00 4.54395573e+00 4.60528539e+00 + 4.66744282e+00 4.73043919e+00 4.79428581e+00 4.85899417e+00 4.92457590e+00 + 4.99104278e+00 5.05840677e+00 5.12667997e+00 5.19587464e+00 5.26600324e+00 + 5.33707836e+00 5.40911278e+00 5.48211944e+00 5.55611148e+00 5.63110218e+00 + 5.70710504e+00 5.78413370e+00 5.86220201e+00 5.94132401e+00 6.02151392e+00 + 6.10278615e+00 6.18515531e+00 6.26863620e+00 6.35324384e+00 6.43899342e+00 + 6.52590036e+00 6.61398028e+00 6.70324902e+00 6.79372261e+00 6.88541732e+00 + 6.97834963e+00 7.07253625e+00 7.16799410e+00 7.26474035e+00 7.36279238e+00 + 7.46216781e+00 7.56288451e+00 7.66496058e+00 7.76841437e+00 7.87326448e+00 + 7.97952974e+00 8.08722926e+00 8.19638240e+00 8.30700878e+00 8.41912828e+00 + 8.53276106e+00 8.64792753e+00 8.76464840e+00 8.88294465e+00 9.00283754e+00 + 9.12434863e+00 9.24749974e+00 9.37231303e+00 9.49881091e+00 9.62701614e+00 + 9.75695174e+00 9.88864109e+00 1.00221078e+01 1.01573760e+01 1.02944699e+01 + 1.04334141e+01 1.05742336e+01 1.07169538e+01 1.08616003e+01 1.10081990e+01 + 1.11567764e+01 1.13073592e+01 1.14599743e+01 1.16146493e+01 1.17714120e+01 + 1.19302904e+01 1.20913133e+01 1.22545094e+01 1.24199083e+01 1.25875395e+01 + 1.27574332e+01 1.29296200e+01 1.31041307e+01 1.32809969e+01 1.34602502e+01 + 1.36419229e+01 1.38260476e+01 1.40126574e+01 1.42017859e+01 1.43934671e+01 + 1.45877353e+01 1.47846257e+01 1.49841734e+01 1.51864144e+01 1.53913851e+01 + 1.55991223e+01 1.58096632e+01 1.60230459e+01 1.62393086e+01 1.64584901e+01 + 1.66806300e+01 1.69057680e+01 1.71339448e+01 1.73652012e+01 1.75995789e+01 + 1.78371200e+01 1.80778672e+01 1.83218638e+01 1.85691535e+01 1.88197809e+01 + 1.90737911e+01 1.93312296e+01 1.95921427e+01 1.98565774e+01 2.01245812e+01 + 2.03962022e+01 2.06714892e+01 2.09504918e+01 2.12332601e+01 2.15198449e+01 + 2.18102977e+01 2.21046708e+01 2.24030170e+01 2.27053900e+01 2.30118441e+01 + 2.33224344e+01 2.36372168e+01 2.39562477e+01 2.42795846e+01 2.46072856e+01 + 2.49394095e+01 2.52760162e+01 2.56171659e+01 2.59629202e+01 2.63133411e+01 + 2.66684917e+01 2.70284357e+01 2.73932378e+01 2.77629637e+01 2.81376798e+01 + 2.85174534e+01 2.89023527e+01 2.92924471e+01 2.96878066e+01 3.00885022e+01 + 3.04946060e+01 3.09061910e+01 3.13233311e+01 3.17461013e+01 3.21745777e+01 + 3.26088372e+01 3.30489579e+01 3.34950189e+01 3.39471004e+01 3.44052836e+01 + 3.48696509e+01 3.53402857e+01 3.58172727e+01 3.63006976e+01 3.67906473e+01 + 3.72872097e+01 3.77904743e+01 3.83005315e+01 3.88174728e+01 3.93413913e+01 + 3.98723811e+01 4.04105377e+01 4.09559578e+01 4.15087394e+01 4.20689818e+01 + 4.26367859e+01 4.32122536e+01 4.37954883e+01 4.43865950e+01 4.49856798e+01 + 4.55928504e+01 4.62082161e+01 4.68318873e+01 4.74639761e+01 4.81045963e+01 + 4.87538629e+01 4.94118926e+01 5.00788037e+01 5.07547161e+01 5.14397513e+01 + 5.21340324e+01 5.28376842e+01 5.35508332e+01 5.42736075e+01 5.50061371e+01 + 5.57485536e+01 5.65009905e+01 5.72635830e+01 5.80364683e+01 5.88197851e+01 + 5.96136743e+01 6.04182787e+01 6.12337427e+01 6.20602131e+01 6.28978383e+01 + 6.37467689e+01 6.46071576e+01 6.54791588e+01 6.63629295e+01 6.72586284e+01 + 6.81664165e+01 6.90864570e+01 7.00189152e+01 7.09639589e+01 7.19217577e+01 + 7.28924840e+01 7.38763121e+01 7.48734189e+01 7.58839837e+01 7.69081880e+01 + 7.79462160e+01 7.89982542e+01 8.00644917e+01 8.11451203e+01 8.22403340e+01 + 8.33503299e+01 8.44753073e+01 8.56154685e+01 8.67710184e+01 8.79421648e+01 + 8.91291181e+01 9.03320917e+01 9.15513018e+01 9.27869675e+01 9.40393110e+01 + 9.53085573e+01 9.65949346e+01 9.78986742e+01 9.92200103e+01 1.00559180e+02 + 1.01916425e+02 1.03291989e+02 1.04686118e+02 1.06099064e+02 1.07531081e+02 + 1.08982425e+02 1.10453359e+02 1.11944145e+02 1.13455052e+02 1.14986352e+02 + 1.16538321e+02 1.18111235e+02 1.19705380e+02 1.21321041e+02 1.22958508e+02 + 1.24618076e+02 1.26300043e+02 1.28004712e+02 1.29732388e+02 1.31483383e+02 + 1.33258011e+02 1.35056592e+02 1.36879447e+02 1.38726906e+02 1.40599300e+02 + 1.42496965e+02 1.44420243e+02 1.46369480e+02 1.48345025e+02 1.50347234e+02 + 1.52376467e+02 1.54433089e+02 1.56517469e+02 1.58629981e+02 1.60771006e+02 + 1.62940929e+02 1.65140138e+02 1.67369031e+02 1.69628007e+02 1.71917472e+02 + 1.74237838e+02 1.76589522e+02 1.78972947e+02 1.81388540e+02 1.83836737e+02 + 1.86317977e+02 1.88832706e+02 1.91381377e+02 1.93964447e+02 1.96582380e+02 + 1.99235648e+02 2.01924727e+02 2.04650100e+02 2.07412257e+02 2.10211696e+02 + 2.13048918e+02 2.15924434e+02 2.18838761e+02 2.21792423e+02 2.24785950e+02 + 2.27819880e+02 2.30894760e+02 2.34011141e+02 2.37169584e+02 2.40370656e+02 + 2.43614933e+02 2.46902998e+02 2.50235442e+02 2.53612863e+02 2.57035870e+02 + 2.60505077e+02 2.64021108e+02 2.67584595e+02 2.71196178e+02 2.74856506e+02 + 2.78566238e+02 2.82326040e+02 2.86136587e+02 2.89998566e+02 2.93912670e+02 + 2.97879602e+02 3.01900076e+02 3.05974814e+02 3.10104549e+02 3.14290023e+02 + 3.18531988e+02 3.22831206e+02 3.27188451e+02 3.31604506e+02 3.36080164e+02 + 3.40616230e+02 3.45213519e+02 3.49872858e+02 3.54595083e+02 3.59381045e+02 + 3.64231602e+02 3.69147628e+02 3.74130004e+02 3.79179628e+02 3.84297406e+02 + 3.89484259e+02 3.94741119e+02 4.00068931e+02 4.05468651e+02 4.10941252e+02 + 4.16487716e+02 4.22109041e+02 4.27806237e+02 4.33580327e+02 4.39432351e+02 + 4.45363359e+02 4.51374417e+02 4.57466607e+02 4.63641023e+02 4.69898775e+02 + 4.76240987e+02 4.82668801e+02 4.89183370e+02 4.95785866e+02 5.02477476e+02 + 5.09259403e+02 5.16132865e+02 5.23099098e+02 5.30159354e+02 5.37314902e+02 + 5.44567029e+02 5.51917037e+02 5.59366248e+02 5.66916001e+02 5.74567652e+02 + 5.82322578e+02 5.90182172e+02 5.98147847e+02 6.06221034e+02 6.14403185e+02 + 6.22695770e+02 6.31100280e+02 6.39618226e+02 6.48251138e+02 6.57000568e+02 + 6.65868089e+02 6.74855295e+02 6.83963800e+02 6.93195244e+02 7.02551283e+02 + 7.12033601e+02 7.21643902e+02 7.31383912e+02 7.41255383e+02 7.51260090e+02 + 7.61399829e+02 7.71676425e+02 7.82091723e+02 7.92647596e+02 8.03345942e+02 + 8.14188683e+02 8.25177768e+02 8.36315173e+02 8.47602899e+02 8.59042975e+02 + 8.70637458e+02 8.82388431e+02 8.94298006e+02 9.06368325e+02 9.18601557e+02 + 9.30999900e+02 9.43565584e+02 9.56300866e+02 9.69208036e+02 9.82289413e+02 + 9.95547350e+02 1.00898423e+03 1.02260247e+03 1.03640451e+03 1.05039283e+03 + 1.06456996e+03 1.07893844e+03 1.09350084e+03 1.10825980e+03 1.12321795e+03 + 1.13837800e+03 1.15374266e+03 1.16931470e+03 1.18509691e+03 1.20109213e+03 + 1.21730325e+03 1.23373316e+03 1.25038483e+03 1.26726124e+03 1.28436543e+03 + 1.30170048e+03 1.31926950e+03 1.33707565e+03 1.35512213e+03 1.37341218e+03 + 1.39194909e+03 1.41073620e+03 1.42977687e+03 1.44907454e+03 1.46863266e+03 + 1.48845476e+03 1.50854440e+03 1.52890519e+03 1.54954078e+03 1.57045490e+03 + 1.59165129e+03 1.61313377e+03 1.63490620e+03 1.65697249e+03 1.67933661e+03 + 1.70200257e+03 1.72497446e+03 1.74825640e+03 1.77185258e+03 1.79576723e+03 + 1.82000465e+03 1.84456921e+03 1.86946532e+03 1.89469745e+03 1.92027014e+03 + 1.94618798e+03 1.97245563e+03 1.99907782e+03 2.02605932e+03 2.05340500e+03 + 2.08111975e+03 2.10920858e+03 2.13767652e+03 2.16652868e+03 2.19577027e+03 + 2.22540653e+03 2.25544279e+03 2.28588445e+03 2.31673697e+03 2.34800592e+03 + 2.37969690e+03 2.41181561e+03 2.44436783e+03 2.47735940e+03 2.51079626e+03 + 2.54468442e+03 2.57902996e+03 2.61383907e+03 2.64911799e+03 2.68487308e+03 + 2.72111074e+03 2.75783751e+03 2.79505998e+03 2.83278484e+03 2.87101887e+03 + 2.90976894e+03 2.94904202e+03 2.98884517e+03 3.02918554e+03 3.07007039e+03 + 3.11150706e+03 3.15350299e+03 3.19606575e+03 3.23920297e+03 3.28292242e+03 + 3.32723194e+03 3.37213951e+03 3.41765320e+03 3.46378118e+03 3.51053175e+03 + 3.55791332e+03 3.60593439e+03 3.65460360e+03 3.70392970e+03 3.75392155e+03 + 3.80458814e+03 3.85593857e+03 3.90798208e+03 3.96072802e+03 4.01418588e+03 + 4.06836525e+03 4.12327588e+03 4.17892763e+03 4.23533052e+03 4.29249467e+03 + 4.35043037e+03 4.40914803e+03 4.46865819e+03 4.52897157e+03 4.59009899e+03 + 4.65205144e+03 4.71484007e+03 4.77847616e+03 4.84297113e+03 4.90833660e+03 + 4.97458430e+03 5.04172615e+03 5.10977421e+03 5.17874071e+03 5.24863805e+03 + 5.31947879e+03 5.39127567e+03 5.46404159e+03 5.53778963e+03 5.61253304e+03 + 5.68828527e+03 5.76505992e+03 5.84287079e+03 5.92173188e+03 6.00165735e+03 + 6.08266158e+03 6.16475912e+03 6.24796473e+03 6.33229336e+03 6.41776017e+03 + 6.50438053e+03 6.59216999e+03 6.68114436e+03 6.77131960e+03 6.86271194e+03 + 6.95533780e+03 7.04921383e+03 7.14435690e+03 7.24078412e+03 7.33851281e+03 + 7.43756054e+03 7.53794512e+03 7.63968458e+03 7.74279722e+03 7.84730157e+03 + 7.95321641e+03 8.06056079e+03 8.16935398e+03 8.27961556e+03 8.39136533e+03 + 8.50462339e+03 8.61941009e+03 8.73574606e+03 8.85365222e+03 8.97314975e+03 + 9.09426014e+03 9.21700515e+03 9.34140685e+03 9.46748760e+03 9.59527005e+03 + 9.72477718e+03 9.85603227e+03 9.98905890e+03 1.01238810e+04 1.02605228e+04 + 1.03990088e+04 1.05393640e+04 1.06816135e+04 1.08257830e+04 1.09718983e+04 + 1.11199858e+04 1.12700720e+04 1.14221839e+04 1.15763488e+04 1.17325945e+04 + 1.18909491e+04 1.20514409e+04 1.22140989e+04 1.23789523e+04 1.25460308e+04 + 1.27153642e+04 1.28869832e+04 1.30609185e+04 1.32372014e+04 1.34158636e+04 + 1.35969372e+04 1.37804547e+04 1.39664492e+04 1.41549540e+04 1.43460031e+04 + 1.45396308e+04 1.47358718e+04 1.49347615e+04 1.51363357e+04 1.53406304e+04 + 1.55476825e+04 1.57575292e+04 1.59702082e+04 1.61857578e+04 1.64042165e+04 + 1.66256239e+04 1.68500195e+04 1.70774438e+04 1.73079377e+04 1.75415425e+04 + 1.77783003e+04 1.80182536e+04 1.82614455e+04 1.85079198e+04 1.87577208e+04 + 1.90108933e+04 1.92674828e+04 1.95275356e+04 1.97910983e+04 2.00582183e+04 + 2.03289436e+04 2.06033228e+04 2.08814054e+04 2.11632412e+04 2.14488810e+04 + 2.17383760e+04 2.20317784e+04 2.23291407e+04 2.26305166e+04 2.29359602e+04 + 2.32455263e+04 2.35592706e+04 2.38772495e+04 2.41995202e+04 2.45261405e+04 + 2.48571693e+04 2.51926659e+04 2.55326907e+04 2.58773048e+04 2.62265702e+04 + 2.65805496e+04 2.69393066e+04 2.73029058e+04 2.76714125e+04 2.80448928e+04 + 2.84234141e+04 2.88070442e+04 2.91958522e+04 2.95899080e+04 2.99892822e+04 + 3.03940469e+04 3.08042746e+04 3.12200391e+04 3.16414153e+04 3.20684787e+04 + 3.25013062e+04 3.29399755e+04 3.33845656e+04 3.38351563e+04 3.42918286e+04 + 3.47546646e+04 3.52237475e+04 3.56991616e+04 3.61809923e+04 3.66693263e+04 + 3.71642513e+04 3.76658563e+04 3.81742315e+04 3.86894682e+04 3.92116590e+04 + 3.97408978e+04 4.02772798e+04 4.08209013e+04 4.13718600e+04 4.19302550e+04 + 4.24961867e+04 4.30697567e+04 4.36510682e+04 4.42402256e+04 4.48373349e+04 + 4.54425033e+04 4.60558397e+04 4.66774542e+04 4.73074587e+04 4.79459664e+04 + 4.85930919e+04 4.92489517e+04 4.99136637e+04 5.05873472e+04 5.12701234e+04 + 5.19621151e+04 5.26634465e+04 5.33742438e+04 5.40946347e+04 5.48247487e+04 + 5.55647170e+04 5.63146726e+04 5.70747504e+04 5.78450870e+04 5.86258207e+04 + 5.94170921e+04 6.02190431e+04 6.10318181e+04 6.18555631e+04 6.26904262e+04 + 6.35365574e+04 6.43941088e+04 6.52632345e+04 6.61440908e+04 6.70368361e+04 + 6.79416306e+04 6.88586372e+04 6.97880206e+04 7.07299478e+04 7.16845883e+04 + 7.26521134e+04 7.36326973e+04 7.46265160e+04 7.56337483e+04 7.66545752e+04 + 7.76891802e+04 7.87377492e+04 7.98004708e+04 8.08775358e+04 8.19691380e+04 + 8.30754735e+04 8.41967412e+04 8.53331426e+04 8.64848820e+04 8.76521664e+04 + 8.88352056e+04 9.00342122e+04 9.12494018e+04 9.24809928e+04 9.37292066e+04 + 9.49942675e+04 9.62764028e+04 9.75758431e+04 9.88928220e+04 1.00227576e+05 + 1.01580345e+05 1.02951373e+05 1.04340905e+05 1.05749192e+05 1.07176486e+05 + 1.08623044e+05 1.10089127e+05 1.11574997e+05 1.13080923e+05 1.14607173e+05 + 1.16154023e+05 1.17721751e+05 1.19310639e+05 1.20920972e+05 1.22553039e+05 + 1.24207135e+05 1.25883556e+05 1.27582603e+05 1.29304582e+05 1.31049803e+05 + 1.32818579e+05 1.34611228e+05 1.36428073e+05 1.38269439e+05 1.40135659e+05 + 1.42027066e+05 1.43944002e+05 1.45886811e+05 1.47855842e+05 1.49851449e+05 + 1.51873990e+05 1.53923830e+05 1.56001336e+05 1.58106882e+05 1.60240847e+05 + 1.62403614e+05 1.64595572e+05 1.66817114e+05 1.69068641e+05 1.71350556e+05 + 1.73663271e+05 1.76007200e+05 1.78382765e+05 1.80790393e+05 1.83230516e+05 + 1.85703574e+05 1.88210011e+05 1.90750277e+05 1.93324829e+05 1.95934129e+05 + 1.98578648e+05 2.01258859e+05 2.03975245e+05 2.06728294e+05 2.09518501e+05 + 2.12346367e+05 2.15212401e+05 2.18117118e+05 2.21061039e+05 2.24044695e+05 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.51514411e-06 1.53559398e-06 1.55631985e-06 1.57732546e-06 1.59861459e-06 + 1.62019105e-06 1.64205873e-06 1.66422156e-06 1.68668352e-06 1.70944864e-06 + 1.73252103e-06 1.75590483e-06 1.77960423e-06 1.80362351e-06 1.82796697e-06 + 1.85263900e-06 1.87764402e-06 1.90298654e-06 1.92867110e-06 1.95470233e-06 + 1.98108490e-06 2.00782356e-06 2.03492310e-06 2.06238841e-06 2.09022442e-06 + 2.11843613e-06 2.14702861e-06 2.17600701e-06 2.20537652e-06 2.23514243e-06 + 2.26531010e-06 2.29588494e-06 2.32687244e-06 2.35827818e-06 2.39010781e-06 + 2.42236703e-06 2.45506166e-06 2.48819757e-06 2.52178072e-06 2.55581713e-06 + 2.59031293e-06 2.62527433e-06 2.66070759e-06 2.69661910e-06 2.73301530e-06 + 2.76990274e-06 2.80728805e-06 2.84517795e-06 2.88357925e-06 2.92249885e-06 + 2.96194375e-06 3.00192104e-06 3.04243789e-06 3.08350160e-06 3.12511955e-06 + 3.16729922e-06 3.21004818e-06 3.25337412e-06 3.29728483e-06 3.34178821e-06 + 3.38689225e-06 3.43260505e-06 3.47893484e-06 3.52588994e-06 3.57347879e-06 + 3.62170995e-06 3.67059208e-06 3.72013398e-06 3.77034453e-06 3.82123279e-06 + 3.87280787e-06 3.92507907e-06 3.97805577e-06 4.03174749e-06 4.08616389e-06 + 4.14131475e-06 4.19720997e-06 4.25385962e-06 4.31127386e-06 4.36946302e-06 + 4.42843756e-06 4.48820807e-06 4.54878531e-06 4.61018016e-06 4.67240365e-06 + 4.73546697e-06 4.79938146e-06 4.86415859e-06 4.92981003e-06 4.99634755e-06 + 5.06378314e-06 5.13212890e-06 5.20139712e-06 5.27160025e-06 5.34275092e-06 + 5.41486190e-06 5.48794616e-06 5.56201684e-06 5.63708725e-06 5.71317088e-06 + 5.79028141e-06 5.86843270e-06 5.94763880e-06 6.02791394e-06 6.10927255e-06 + 6.19172925e-06 6.27529887e-06 6.35999643e-06 6.44583715e-06 6.53283646e-06 + 6.62101000e-06 6.71037362e-06 6.80094337e-06 6.89273554e-06 6.98576663e-06 + 7.08005335e-06 7.17561266e-06 7.27246174e-06 7.37061798e-06 7.47009904e-06 + 7.57092278e-06 7.67310735e-06 7.77667110e-06 7.88163264e-06 7.98801085e-06 + 8.09582484e-06 8.20509399e-06 8.31583795e-06 8.42807662e-06 8.54183017e-06 + 8.65711905e-06 8.77396398e-06 8.89238596e-06 9.01240628e-06 9.13404651e-06 + 9.25732852e-06 9.38227446e-06 9.50890680e-06 9.63724829e-06 9.76732200e-06 + 9.89915131e-06 1.00327599e-05 1.01681718e-05 1.03054114e-05 1.04445033e-05 + 1.05854725e-05 1.07283444e-05 1.08731446e-05 1.10198992e-05 1.11686345e-05 + 1.13193773e-05 1.14721546e-05 1.16269940e-05 1.17839233e-05 1.19429706e-05 + 1.21041646e-05 1.22675342e-05 1.24331089e-05 1.26009182e-05 1.27709925e-05 + 1.29433623e-05 1.31180586e-05 1.32951127e-05 1.34745565e-05 1.36564223e-05 + 1.38407427e-05 1.40275509e-05 1.42168804e-05 1.44087653e-05 1.46032400e-05 + 1.48003396e-05 1.50000995e-05 1.52025554e-05 1.54077440e-05 1.56157019e-05 + 1.58264667e-05 1.60400761e-05 1.62565686e-05 1.64759832e-05 1.66983591e-05 + 1.69237365e-05 1.71521557e-05 1.73836580e-05 1.76182848e-05 1.78560784e-05 + 1.80970814e-05 1.83413373e-05 1.85888899e-05 1.88397837e-05 1.90940638e-05 + 1.93517759e-05 1.96129664e-05 1.98776821e-05 2.01459707e-05 2.04178804e-05 + 2.06934601e-05 2.09727592e-05 2.12558280e-05 2.15427174e-05 2.18334790e-05 + 2.21281649e-05 2.24268282e-05 2.27295226e-05 2.30363024e-05 2.33472229e-05 + 2.36623398e-05 2.39817098e-05 2.43053904e-05 2.46334396e-05 2.49659166e-05 + 2.53028810e-05 2.56443934e-05 2.59905151e-05 2.63413085e-05 2.66968365e-05 + 2.70571631e-05 2.74223530e-05 2.77924718e-05 2.81675861e-05 2.85477634e-05 + 2.89330718e-05 2.93235808e-05 2.97193605e-05 3.01204820e-05 3.05270174e-05 + 3.09390399e-05 3.13566233e-05 3.17798429e-05 3.22087747e-05 3.26434958e-05 + 3.30840843e-05 3.35306194e-05 3.39831813e-05 3.44418515e-05 3.49067124e-05 + 3.53778474e-05 3.58553414e-05 3.63392801e-05 3.68297505e-05 3.73268407e-05 + 3.78306402e-05 3.83412395e-05 3.88587303e-05 3.93832056e-05 3.99147598e-05 + 4.04534884e-05 4.09994881e-05 4.15528573e-05 4.21136952e-05 4.26821027e-05 + 4.32581821e-05 4.38420367e-05 4.44337716e-05 4.50334932e-05 4.56413092e-05 + 4.62573288e-05 4.68816629e-05 4.75144236e-05 4.81557246e-05 4.88056813e-05 + 4.94644104e-05 5.01320304e-05 5.08086612e-05 5.14944245e-05 5.21894435e-05 + 5.28938432e-05 5.36077501e-05 5.43312927e-05 5.50646008e-05 5.58078064e-05 + 5.65610431e-05 5.73244461e-05 5.80981528e-05 5.88823022e-05 5.96770352e-05 + 6.04824947e-05 6.12988255e-05 6.21261743e-05 6.29646898e-05 6.38145227e-05 + 6.46758258e-05 6.55487539e-05 6.64334638e-05 6.73301147e-05 6.82388677e-05 + 6.91598861e-05 7.00933354e-05 7.10393835e-05 7.19982003e-05 7.29699583e-05 + 7.39548321e-05 7.49529987e-05 7.59646376e-05 7.69899305e-05 7.80290617e-05 + 7.90822181e-05 8.01495889e-05 8.12313660e-05 8.23277438e-05 8.34389194e-05 + 8.45650925e-05 8.57064656e-05 8.68632437e-05 8.80356348e-05 8.92238497e-05 + 9.04281018e-05 9.16486078e-05 9.28855869e-05 9.41392614e-05 9.54098568e-05 + 9.66976013e-05 9.80027266e-05 9.93254670e-05 1.00666060e-04 1.02024748e-04 + 1.03401773e-04 1.04797385e-04 1.06211833e-04 1.07645371e-04 1.09098258e-04 + 1.10570755e-04 1.12063126e-04 1.13575639e-04 1.15108567e-04 1.16662184e-04 + 1.18236771e-04 1.19832610e-04 1.21449988e-04 1.23089195e-04 1.24750527e-04 + 1.26434282e-04 1.28140763e-04 1.29870275e-04 1.31623131e-04 1.33399646e-04 + 1.35200138e-04 1.37024931e-04 1.38874353e-04 1.40748737e-04 1.42648419e-04 + 1.44573741e-04 1.46525050e-04 1.48502695e-04 1.50507032e-04 1.52538422e-04 + 1.54597229e-04 1.56683824e-04 1.58798582e-04 1.60941883e-04 1.63114112e-04 + 1.65315659e-04 1.67546920e-04 1.69808297e-04 1.72100196e-04 1.74423028e-04 + 1.76777212e-04 1.79163169e-04 1.81581330e-04 1.84032129e-04 1.86516007e-04 + 1.89033409e-04 1.91584788e-04 1.94170603e-04 1.96791319e-04 1.99447407e-04 + 2.02139344e-04 2.04867614e-04 2.07632707e-04 2.10435121e-04 2.13275359e-04 + 2.16153931e-04 2.19071356e-04 2.22028156e-04 2.25024865e-04 2.28062020e-04 + 2.31140168e-04 2.34259861e-04 2.37421661e-04 2.40626136e-04 2.43873861e-04 + 2.47165421e-04 2.50501406e-04 2.53882418e-04 2.57309063e-04 2.60781957e-04 + 2.64301725e-04 2.67868999e-04 2.71484421e-04 2.75148639e-04 2.78862314e-04 + 2.82626112e-04 2.86440710e-04 2.90306793e-04 2.94225057e-04 2.98196206e-04 + 3.02220953e-04 3.06300022e-04 3.10434146e-04 3.14624068e-04 3.18870542e-04 + 3.23174330e-04 3.27536206e-04 3.31956954e-04 3.36437370e-04 3.40978257e-04 + 3.45580432e-04 3.50244723e-04 3.54971968e-04 3.59763016e-04 3.64618729e-04 + 3.69539979e-04 3.74527651e-04 3.79582642e-04 3.84705860e-04 3.89898226e-04 + 3.95160673e-04 4.00494147e-04 4.05899607e-04 4.11378024e-04 4.16930384e-04 + 4.22557683e-04 4.28260934e-04 4.34041162e-04 4.39899405e-04 4.45836717e-04 + 4.51854164e-04 4.57952829e-04 4.64133808e-04 4.70398211e-04 4.76747164e-04 + 4.83181809e-04 4.89703302e-04 4.96312816e-04 5.03011539e-04 5.09800673e-04 + 5.16681441e-04 5.23655078e-04 5.30722838e-04 5.37885992e-04 5.45145826e-04 + 5.52503646e-04 5.59960775e-04 5.67518552e-04 5.75178336e-04 5.82941505e-04 + 5.90809452e-04 5.98783593e-04 6.06865361e-04 6.15056208e-04 6.23357607e-04 + 6.31771050e-04 6.40298049e-04 6.48940137e-04 6.57698866e-04 6.66575812e-04 + 6.75572570e-04 6.84690757e-04 6.93932012e-04 7.03297995e-04 7.12790392e-04 + 7.22410907e-04 7.32161269e-04 7.42043233e-04 7.52058572e-04 7.62209089e-04 + 7.72496607e-04 7.82922975e-04 7.93490068e-04 8.04199785e-04 8.15054050e-04 + 8.26054815e-04 8.37204057e-04 8.48503780e-04 8.59956016e-04 8.71562821e-04 + 8.83326284e-04 8.95248518e-04 9.07331666e-04 9.19577900e-04 9.31989421e-04 + 9.44568460e-04 9.57317278e-04 9.70238166e-04 9.83333448e-04 9.96605476e-04 + 1.01005664e-03 1.02368935e-03 1.03750606e-03 1.05150925e-03 1.06570145e-03 + 1.08008519e-03 1.09466308e-03 1.10943772e-03 1.12441177e-03 1.13958793e-03 + 1.15496892e-03 1.17055751e-03 1.18635650e-03 1.20236872e-03 1.21859707e-03 + 1.23504444e-03 1.25171381e-03 1.26860816e-03 1.28573053e-03 1.30308401e-03 + 1.32067170e-03 1.33849678e-03 1.35656243e-03 1.37487193e-03 1.39342854e-03 + 1.41223561e-03 1.43129652e-03 1.45061470e-03 1.47019361e-03 1.49003678e-03 + 1.51014777e-03 1.53053020e-03 1.55118773e-03 1.57212407e-03 1.59334299e-03 + 1.61484830e-03 1.63664387e-03 1.65873361e-03 1.68112150e-03 1.70381156e-03 + 1.72680786e-03 1.75011455e-03 1.77373580e-03 1.79767587e-03 1.82193906e-03 + 1.84652973e-03 1.87145230e-03 1.89671124e-03 1.92231111e-03 1.94825650e-03 + 1.97455207e-03 2.00120255e-03 2.02821273e-03 2.05558747e-03 2.08333169e-03 + 2.11145037e-03 2.13994856e-03 2.16883140e-03 2.19810406e-03 2.22777182e-03 + 2.25784000e-03 2.28831402e-03 2.31919934e-03 2.35050151e-03 2.38222618e-03 + 2.41437903e-03 2.44696584e-03 2.47999248e-03 2.51346488e-03 2.54738906e-03 + 2.58177111e-03 2.61661721e-03 2.65193363e-03 2.68772672e-03 2.72400290e-03 + 2.76076870e-03 2.79803073e-03 2.83579568e-03 2.87407035e-03 2.91286161e-03 + 2.95217643e-03 2.99202189e-03 3.03240514e-03 3.07333344e-03 3.11481415e-03 + 3.15685472e-03 3.19946271e-03 3.24264578e-03 3.28641170e-03 3.33076832e-03 + 3.37572362e-03 3.42128568e-03 3.46746269e-03 3.51426295e-03 3.56169487e-03 + 3.60976698e-03 3.65848792e-03 3.70786645e-03 3.75791143e-03 3.80863187e-03 + 3.86003689e-03 3.91213571e-03 3.96493772e-03 4.01845239e-03 4.07268934e-03 + 4.12765833e-03 4.18336924e-03 4.23983207e-03 4.29705699e-03 4.35505426e-03 + 4.41383433e-03 4.47340774e-03 4.53378522e-03 4.59497761e-03 4.65699591e-03 + 4.71985128e-03 4.78355500e-03 4.84811852e-03 4.91355347e-03 4.97987158e-03 + 5.04708479e-03 5.11520517e-03 5.18424497e-03 5.25421660e-03 5.32513264e-03 + 5.39700583e-03 5.46984909e-03 5.54367551e-03 5.61849837e-03 5.69433110e-03 + 5.77118736e-03 5.84908093e-03 5.92802584e-03 6.00803626e-03 6.08912659e-03 + 6.17131138e-03 6.25460542e-03 6.33902369e-03 6.42458134e-03 6.51129376e-03 + 6.59917653e-03 6.68824546e-03 6.77851655e-03 6.87000603e-03 6.96273034e-03 + 7.05670614e-03 7.15195034e-03 7.24848004e-03 7.34631260e-03 7.44546561e-03 + 7.54595688e-03 7.64780448e-03 7.75102672e-03 7.85564214e-03 7.96166955e-03 + 8.06912802e-03 8.17803685e-03 8.28841561e-03 8.40028416e-03 8.51366260e-03 + 8.62857130e-03 8.74503092e-03 8.86306239e-03 8.98268694e-03 9.10392605e-03 + 9.22680152e-03 9.35133544e-03 9.47755019e-03 9.60546846e-03 9.73511324e-03 + 9.86650783e-03 9.99967585e-03 1.01346412e-02 1.02714283e-02 1.04100615e-02 + 1.05505658e-02 1.06929666e-02 1.08372893e-02 1.09835599e-02 1.11318048e-02 + 1.12820505e-02 1.14343240e-02 1.15886528e-02 1.17450646e-02 1.19035875e-02 + 1.20642499e-02 1.22270808e-02 1.23921094e-02 1.25593654e-02 1.27288789e-02 + 1.29006802e-02 1.30748004e-02 1.32512707e-02 1.34301228e-02 1.36113888e-02 + 1.37951014e-02 1.39812936e-02 1.41699987e-02 1.43612509e-02 1.45550843e-02 + 1.47515340e-02 1.49506351e-02 1.51524234e-02 1.53569353e-02 1.55642075e-02 + 1.57742773e-02 1.59871823e-02 1.62029609e-02 1.64216519e-02 1.66432945e-02 + 1.68679287e-02 1.70955947e-02 1.73263336e-02 1.75601867e-02 1.77971961e-02 + 1.80374044e-02 1.82808548e-02 1.85275911e-02 1.87776576e-02 1.90310992e-02 + 1.92879614e-02 1.95482906e-02 1.98121334e-02 2.00795373e-02 2.03505503e-02 + 2.06252212e-02 2.09035994e-02 2.11857347e-02 2.14716781e-02 2.17614808e-02 + 2.20551950e-02 2.23528734e-02 2.26545697e-02 2.29603378e-02 2.32702330e-02 + 2.35843107e-02 2.39026276e-02 2.42252408e-02 2.45522083e-02 2.48835889e-02 + 2.52194421e-02 2.55598283e-02 2.59048087e-02 2.62544453e-02 2.66088009e-02 + 2.69679393e-02 2.73319249e-02 2.77008232e-02 2.80747006e-02 2.84536242e-02 + 2.88376620e-02 2.92268833e-02 2.96213578e-02 3.00211566e-02 3.04263514e-02 + 3.08370152e-02 3.12532216e-02 3.16750456e-02 3.21025629e-02 3.25358505e-02 + 3.29749861e-02 3.34200487e-02 3.38711183e-02 3.43282759e-02 3.47916039e-02 + 3.52611853e-02 3.57371047e-02 3.62194475e-02 3.67083006e-02 3.72037516e-02 + 3.77058898e-02 3.82148053e-02 3.87305896e-02 3.92533354e-02 3.97831368e-02 + 4.03200888e-02 4.08642881e-02 4.14158324e-02 4.19748209e-02 4.25413541e-02 + 4.31155337e-02 4.36974630e-02 4.42872467e-02 4.48849906e-02 4.54908022e-02 + 4.61047905e-02 4.67270657e-02 4.73577398e-02 4.79969261e-02 4.86447395e-02 + 4.93012964e-02 4.99667148e-02 5.06411144e-02 5.13246163e-02 5.20173434e-02 + 5.27194202e-02 5.34309730e-02 5.41521296e-02 5.48830196e-02 5.56237744e-02 + 5.63745271e-02 5.71354128e-02 5.79065681e-02 5.86881317e-02 5.94802440e-02 + 6.02830474e-02 6.10966863e-02 6.19213068e-02 6.27570572e-02 6.36040877e-02 + 6.44625506e-02 6.53326001e-02 6.62143926e-02 6.71080867e-02 6.80138429e-02 + 6.89318241e-02 6.98621953e-02 7.08051237e-02 7.17607788e-02 7.27293323e-02 + 7.37109584e-02 7.47058334e-02 7.57141363e-02 7.67360482e-02 7.77717528e-02 + 7.88214363e-02 7.98852873e-02 8.09634971e-02 8.20562595e-02 8.31637709e-02 + 8.42862303e-02 8.54238396e-02 8.65768031e-02 8.77453282e-02 8.89296248e-02 + 9.01299058e-02 9.13463870e-02 9.25792870e-02 9.38288274e-02 9.50952329e-02 + 9.63787310e-02 9.76795524e-02 9.89979310e-02 1.00334104e-01 1.01688311e-01 + 1.03060795e-01 1.04451805e-01 1.05861588e-01 1.07290399e-01 1.08738495e-01 + 1.10206136e-01 1.11693586e-01 1.13201111e-01 1.14728984e-01 1.16277479e-01 + 1.17846873e-01 1.19437449e-01 1.21049494e-01 1.22683296e-01 1.24339149e-01 + 1.26017352e-01 1.27718205e-01 1.29442015e-01 1.31189090e-01 1.32959747e-01 + 1.34754301e-01 1.36573077e-01 1.38416400e-01 1.40284603e-01 1.42178021e-01 + 1.44096994e-01 1.46041868e-01 1.48012992e-01 1.50010719e-01 1.52035411e-01 + 1.54087429e-01 1.56167143e-01 1.58274927e-01 1.60411160e-01 1.62576226e-01 + 1.64770513e-01 1.66994417e-01 1.69248337e-01 1.71532678e-01 1.73847850e-01 + 1.76194270e-01 1.78572360e-01 1.80982547e-01 1.83425264e-01 1.85900951e-01 + 1.88410051e-01 1.90953017e-01 1.93530306e-01 1.96142380e-01 1.98789709e-01 + 2.01472769e-01 2.04192042e-01 2.06948017e-01 2.09741189e-01 2.12572061e-01 + 2.15441141e-01 2.18348945e-01 2.21295996e-01 2.24282822e-01 2.27309962e-01 + 2.30377959e-01 2.33487365e-01 2.36638739e-01 2.39832646e-01 2.43069662e-01 + 2.46350367e-01 2.49675352e-01 2.53045214e-01 2.56460560e-01 2.59922002e-01 + 2.63430163e-01 2.66985673e-01 2.70589173e-01 2.74241308e-01 2.77942737e-01 + 2.81694123e-01 2.85496142e-01 2.89349477e-01 2.93254820e-01 2.97212873e-01 + 3.01224348e-01 3.05289966e-01 3.09410457e-01 3.13586563e-01 3.17819033e-01 + 3.22108629e-01 3.26456121e-01 3.30862292e-01 3.35327932e-01 3.39853846e-01 + 3.44440845e-01 3.49089755e-01 3.53801411e-01 3.58576660e-01 3.63416361e-01 + 3.68321383e-01 3.73292608e-01 3.78330929e-01 3.83437252e-01 3.88612496e-01 + 3.93857590e-01 3.99173476e-01 4.04561111e-01 4.10021463e-01 4.15555512e-01 + 4.21164255e-01 4.26848699e-01 4.32609866e-01 4.38448791e-01 4.44366524e-01 + 4.50364128e-01 4.56442682e-01 4.62603278e-01 4.68847024e-01 4.75175041e-01 + 4.81588467e-01 4.88088455e-01 4.94676173e-01 5.01352806e-01 5.08119553e-01 + 5.14977630e-01 5.21928271e-01 5.28972724e-01 5.36112257e-01 5.43348151e-01 + 5.50681708e-01 5.58114246e-01 5.65647101e-01 5.73281626e-01 5.81019194e-01 + 5.88861197e-01 5.96809042e-01 6.04864160e-01 6.13027997e-01 6.21302021e-01 + 6.29687720e-01 6.38186600e-01 6.46800189e-01 6.55530036e-01 6.64377709e-01 + 6.73344799e-01 6.82432918e-01 6.91643699e-01 7.00978797e-01 7.10439891e-01 + 7.20028682e-01 7.29746892e-01 7.39596268e-01 7.49578581e-01 7.59695625e-01 + 7.69949219e-01 7.80341205e-01 7.90873452e-01 8.01547852e-01 8.12366325e-01 + 8.23330813e-01 8.34443290e-01 8.45705751e-01 8.57120221e-01 8.68688753e-01 + 8.80413424e-01 8.92296343e-01 9.04339645e-01 9.16545496e-01 9.28916089e-01 + 9.41453647e-01 9.54160425e-01 9.67038705e-01 9.80090803e-01 9.93319066e-01 + 1.00672587e+00 1.02031362e+00 1.03408477e+00 1.04804179e+00 1.06218719e+00 + 1.07652350e+00 1.09105331e+00 1.10577923e+00 1.12070391e+00 1.13583002e+00 + 1.15116029e+00 1.16669748e+00 1.18244437e+00 1.19840379e+00 1.21457862e+00 + 1.23097175e+00 1.24758615e+00 1.26442479e+00 1.28149070e+00 1.29878695e+00 + 1.31631665e+00 1.33408294e+00 1.35208903e+00 1.37033814e+00 1.38883356e+00 + 1.40757862e+00 1.42657667e+00 1.44583114e+00 1.46534549e+00 1.48512323e+00 + 1.50516790e+00 1.52548311e+00 1.54607252e+00 1.56693983e+00 1.58808878e+00 + 1.60952317e+00 1.63124687e+00 1.65326377e+00 1.67557783e+00 1.69819306e+00 + 1.72111354e+00 1.74434336e+00 1.76788672e+00 1.79174785e+00 1.81593103e+00 + 1.84044061e+00 1.86528099e+00 1.89045664e+00 1.91597209e+00 1.94183192e+00 + 1.96804078e+00 1.99460338e+00 2.02152449e+00 2.04880896e+00 2.07646169e+00 + 2.10448764e+00 2.13289186e+00 2.16167945e+00 2.19085559e+00 2.22042551e+00 + 2.25039454e+00 2.28076806e+00 2.31155154e+00 2.34275049e+00 2.37437054e+00 + 2.40641736e+00 2.43889672e+00 2.47181445e+00 2.50517647e+00 2.53898878e+00 + 2.57325745e+00 2.60798864e+00 2.64318860e+00 2.67886366e+00 2.71502022e+00 + 2.75166478e+00 2.78880393e+00 2.82644435e+00 2.86459281e+00 2.90325615e+00 + 2.94244133e+00 2.98215539e+00 3.02240547e+00 3.06319880e+00 3.10454272e+00 + 3.14644466e+00 3.18891215e+00 3.23195282e+00 3.27557441e+00 3.31978476e+00 + 3.36459182e+00 3.41000363e+00 3.45602837e+00 3.50267430e+00 3.54994981e+00 + 3.59786340e+00 3.64642368e+00 3.69563937e+00 3.74551933e+00 3.79607251e+00 + 3.84730801e+00 3.89923504e+00 3.95186292e+00 4.00520112e+00 4.05925923e+00 + 4.11404695e+00 4.16957414e+00 4.22585079e+00 4.28288699e+00 4.34069302e+00 + 4.39927925e+00 4.45865622e+00 4.51883459e+00 4.57982520e+00 4.64163899e+00 + 4.70428708e+00 4.76778073e+00 4.83213135e+00 4.89735051e+00 4.96344994e+00 + 5.03044150e+00 5.09833725e+00 5.16714939e+00 5.23689028e+00 5.30757246e+00 + 5.37920864e+00 5.45181169e+00 5.52539466e+00 5.59997078e+00 5.67555346e+00 + 5.75215627e+00 5.82979298e+00 5.90847756e+00 5.98822414e+00 6.06904706e+00 + 6.15096084e+00 6.23398021e+00 6.31812010e+00 6.40339561e+00 6.48982209e+00 + 6.57741507e+00 6.66619028e+00 6.75616369e+00 6.84735147e+00 6.93977001e+00 + 7.03343592e+00 7.12836604e+00 7.22457742e+00 7.32208737e+00 7.42091341e+00 + 7.52107330e+00 7.62258505e+00 7.72546690e+00 7.82973734e+00 7.93541512e+00 + 8.04251923e+00 8.15106892e+00 8.26108370e+00 8.37258335e+00 8.48558791e+00 + 8.60011769e+00 8.71619327e+00 8.83383553e+00 8.95306559e+00 9.07390491e+00 + 9.19637518e+00 9.32049844e+00 9.44629699e+00 9.57379343e+00 9.70301069e+00 + 9.83397200e+00 9.96670088e+00 1.01012212e+01 1.02375571e+01 1.03757332e+01 + 1.05157742e+01 1.06577054e+01 1.08015522e+01 1.09473405e+01 1.10950965e+01 + 1.12448467e+01 1.13966182e+01 1.15504380e+01 1.17063340e+01 1.18643341e+01 + 1.20244668e+01 1.21867607e+01 1.23512451e+01 1.25179496e+01 1.26869041e+01 + 1.28581389e+01 1.30316849e+01 1.32075732e+01 1.33858355e+01 1.35665038e+01 + 1.37496106e+01 1.39351888e+01 1.41232717e+01 1.43138932e+01 1.45070874e+01 + 1.47028892e+01 1.49013338e+01 1.51024567e+01 1.53062942e+01 1.55128829e+01 + 1.57222599e+01 1.59344629e+01 1.61495300e+01 1.63674998e+01 1.65884115e+01 + 1.68123049e+01 1.70392202e+01 1.72691982e+01 1.75022801e+01 1.77385080e+01 + 1.79779242e+01 1.82205718e+01 1.84664944e+01 1.87157363e+01 1.89683421e+01 + 1.92243574e+01 1.94838281e+01 1.97468008e+01 2.00133229e+01 2.02834423e+01 + 2.05572074e+01 2.08346676e+01 2.11158726e+01 2.14008730e+01 2.16897201e+01 + 2.19824657e+01 2.22791625e+01 2.25798639e+01 2.28846237e+01 2.31934970e+01 + 2.35065390e+01 2.38238062e+01 2.41453556e+01 2.44712449e+01 2.48015327e+01 + 2.51362784e+01 2.54755421e+01 2.58193849e+01 2.61678685e+01 2.65210556e+01 + 2.68790097e+01 2.72417950e+01 2.76094769e+01 2.79821213e+01 2.83597954e+01 + 2.87425669e+01 2.91305046e+01 2.95236783e+01 2.99221587e+01 3.03260174e+01 + 3.07353269e+01 3.11501609e+01 3.15705939e+01 3.19967014e+01 3.24285601e+01 + 3.28662476e+01 3.33098426e+01 3.37594247e+01 3.42150749e+01 3.46768749e+01 + 3.51449079e+01 3.56192579e+01 3.61000102e+01 3.65872511e+01 3.70810684e+01 + 3.75815507e+01 3.80887880e+01 3.86028714e+01 3.91238935e+01 3.96519477e+01 + 4.01871291e+01 4.07295339e+01 4.12792594e+01 4.18364046e+01 4.24010695e+01 + 4.29733558e+01 4.35533661e+01 4.41412049e+01 4.47369777e+01 4.53407916e+01 + 4.59527552e+01 4.65729784e+01 4.72015728e+01 4.78386513e+01 4.84843284e+01 + 4.91387202e+01 4.98019444e+01 5.04741200e+01 5.11553680e+01 5.18458108e+01 + 5.25455725e+01 5.32547788e+01 5.39735573e+01 5.47020371e+01 5.54403492e+01 + 5.61886263e+01 5.69470028e+01 5.77156152e+01 5.84946015e+01 5.92841017e+01 + 6.00842578e+01 6.08952136e+01 6.17171149e+01 6.25501093e+01 6.33943466e+01 + 6.42499786e+01 6.51171590e+01 6.59960438e+01 6.68867908e+01 6.77895602e+01 + 6.87045143e+01 6.96318175e+01 7.05716365e+01 7.15241402e+01 7.24894998e+01 + 7.34678888e+01 7.44594832e+01 7.54644611e+01 7.64830031e+01 7.75152924e+01 + 7.85615144e+01 7.96218573e+01 8.06965116e+01 8.17856705e+01 8.28895297e+01 + 8.40082878e+01 8.51421456e+01 8.62913071e+01 8.74559788e+01 8.86363701e+01 + 8.98326931e+01 9.10451628e+01 9.22739972e+01 9.35194171e+01 9.47816465e+01 + 9.60609121e+01 9.73574439e+01 9.86714750e+01 1.00003242e+02 1.01352983e+02 + 1.02720942e+02 1.04107364e+02 1.05512498e+02 1.06936598e+02 1.08379919e+02 + 1.09842720e+02 1.11325265e+02 1.12827819e+02 1.14350653e+02 1.15894041e+02 + 1.17458261e+02 1.19043592e+02 1.20650320e+02 1.22278735e+02 1.23929128e+02 + 1.25601797e+02 1.27297041e+02 1.29015166e+02 1.30756481e+02 1.32521298e+02 + 1.34309935e+02 1.36122713e+02 1.37959958e+02 1.39822000e+02 1.41709174e+02 + 1.43621820e+02 1.45560280e+02 1.47524903e+02 1.49516044e+02 1.51534058e+02 + 1.53579310e+02 1.55652166e+02 1.57752999e+02 1.59882188e+02 1.62040114e+02 + 1.64227166e+02 1.66443736e+02 1.68690223e+02 1.70967031e+02 1.73274569e+02 + 1.75613251e+02 1.77983499e+02 1.80385738e+02 1.82820400e+02 1.85287923e+02 + 1.87788750e+02 1.90323330e+02 1.92892119e+02 1.95495580e+02 1.98134179e+02 + 2.00808391e+02 2.03518697e+02 2.06265584e+02 2.09049546e+02 2.11871083e+02 + 2.14730702e+02 2.17628917e+02 2.20566249e+02 2.23543226e+02 2.26560384e+02 + 2.29618264e+02 2.32717416e+02 2.35858398e+02 2.39041773e+02 2.42268114e+02 + 2.45538001e+02 2.48852022e+02 2.52210771e+02 2.55614854e+02 2.59064882e+02 + 2.62561474e+02 2.66105260e+02 2.69696877e+02 2.73336969e+02 2.77026192e+02 + 2.80765207e+02 2.84554689e+02 2.88395317e+02 2.92287781e+02 2.96232783e+02 + 3.00231029e+02 3.04283240e+02 3.08390144e+02 3.12552478e+02 3.16770992e+02 + 3.21046442e+02 3.25379599e+02 3.29771239e+02 3.34222154e+02 3.38733142e+02 + 3.43305015e+02 3.47938595e+02 3.52634714e+02 3.57394216e+02 3.62217957e+02 + 3.67106805e+02 3.72061636e+02 3.77083343e+02 3.82172828e+02 3.87331006e+02 + 3.92558803e+02 3.97857160e+02 4.03227029e+02 4.08669374e+02 4.14185175e+02 + 4.19775422e+02 4.25441121e+02 4.31183290e+02 4.37002961e+02 4.42901179e+02 + 4.48879006e+02 4.54937515e+02 4.61077796e+02 4.67300952e+02 4.73608102e+02 + 4.80000379e+02 4.86478933e+02 4.93044927e+02 4.99699543e+02 5.06443976e+02 + 5.13279438e+02 5.20207158e+02 5.27228382e+02 5.34344371e+02 5.41556404e+02 + 5.48865778e+02 5.56273806e+02 5.63781821e+02 5.71391170e+02 5.79103223e+02 + 5.86919366e+02 5.94841002e+02 6.02869557e+02 6.11006473e+02 6.19253213e+02 + 6.27611259e+02 6.36082113e+02 6.44667298e+02 6.53368357e+02 6.62186855e+02 + 6.71124375e+02 6.80182525e+02 6.89362932e+02 6.98667247e+02 7.08097142e+02 + 7.17654312e+02 7.27340476e+02 7.37157373e+02 7.47106768e+02 7.57190450e+02 + 7.67410232e+02 7.77767949e+02 7.88265465e+02 7.98904665e+02 8.09687462e+02 + 8.20615795e+02 8.31691626e+02 8.42916949e+02 8.54293779e+02 8.65824161e+02 + 8.77510169e+02 8.89353903e+02 9.01357492e+02 9.13523092e+02 9.25852892e+02 + 9.38349106e+02 9.51013982e+02 9.63849795e+02 9.76858852e+02 9.90043493e+02 + 1.00340609e+03 1.01694903e+03 1.03067477e+03 1.04458576e+03 1.05868451e+03 + 1.07297355e+03 1.08745545e+03 1.10213281e+03 1.11700827e+03 1.13208451e+03 + 1.14736422e+03 1.16285017e+03 1.17854513e+03 1.19445193e+03 1.21057342e+03 + 1.22691250e+03 1.24347211e+03 1.26025522e+03 1.27726485e+03 1.29450407e+03 + 1.31197596e+03 1.32968367e+03 1.34763038e+03 1.36581931e+03 1.38425374e+03 + 1.40293698e+03 1.42187239e+03 1.44106337e+03 1.46051336e+03 1.48022588e+03 + 1.50020445e+03 1.52045267e+03 1.54097419e+03 1.56177268e+03 1.58285189e+03 + 1.60421560e+03 1.62586766e+03 1.64781196e+03 1.67005244e+03 1.69259310e+03 + 1.71543799e+03 1.73859121e+03 1.76205693e+03 1.78583938e+03 1.80994281e+03 + 1.83437156e+03 1.85913003e+03 1.88422266e+03 1.90965397e+03 1.93542853e+03 + 1.96155096e+03 1.98802597e+03 2.01485831e+03 2.04205280e+03 2.06961434e+03 + 2.09754787e+03 2.12585843e+03 2.15455109e+03 2.18363101e+03 2.21310343e+03 + 2.24297363e+03 2.27324699e+03 2.30392895e+03 2.33502503e+03 2.36654081e+03 + 2.39848195e+03 2.43085420e+03 2.46366339e+03 2.49691539e+03 2.53061620e+03 + 2.56477187e+03 2.59938853e+03 2.63447242e+03 2.67002983e+03 2.70606716e+03 + 2.74259088e+03 2.77960756e+03 2.81712386e+03 2.85514651e+03 2.89368236e+03 + 2.93273832e+03 2.97232142e+03 3.01243877e+03 3.05309759e+03 3.09430517e+03 + 3.13606893e+03 3.17839638e+03 3.22129512e+03 3.26477287e+03 3.30883743e+03 + 3.35349673e+03 3.39875879e+03 3.44463176e+03 3.49112387e+03 3.53824349e+03 + 3.58599907e+03 3.63439922e+03 3.68345262e+03 3.73316809e+03 3.78355457e+03 + 3.83462112e+03 3.88637691e+03 3.93883124e+03 3.99199356e+03 4.04587340e+03 + 4.10048045e+03 4.15582454e+03 4.21191561e+03 4.26876373e+03 4.32637913e+03 + 4.38477217e+03 4.44395333e+03 4.50393327e+03 4.56472275e+03 4.62633270e+03 + 4.68877420e+03 4.75205848e+03 4.81619690e+03 4.88120099e+03 4.94708244e+03 + 5.01385310e+03 5.08152495e+03 5.15011018e+03 5.21962109e+03 5.29007019e+03 + 5.36147014e+03 5.43383378e+03 5.50717410e+03 5.58150430e+03 5.65683773e+03 + 5.73318793e+03 5.81056864e+03 5.88899374e+03 5.96847735e+03 6.04903375e+03 + 6.13067741e+03 6.21342302e+03 6.29728544e+03 6.38227975e+03 6.46842123e+03 + 6.55572536e+03 6.64420783e+03 6.73388454e+03 6.82477162e+03 6.91688540e+03 + 7.01024244e+03 7.10485951e+03 7.20075363e+03 7.29794203e+03 7.39644218e+03 + 7.49627178e+03 7.59744879e+03 7.69999137e+03 7.80391797e+03 7.90924727e+03 + 8.01599819e+03 8.12418992e+03 8.23384192e+03 8.34497389e+03 8.45760580e+03 + 8.57175791e+03 8.68745072e+03 8.80470504e+03 8.92354193e+03 9.04398276e+03 + 9.16604918e+03 9.28976313e+03 9.41514684e+03 9.54222285e+03 9.67101401e+03 + 9.80154345e+03 9.93383465e+03 1.00679114e+04 1.02037977e+04 1.03415182e+04 + 1.04810974e+04 1.06225605e+04 1.07659329e+04 1.09112405e+04 1.10585092e+04 + 1.12077657e+04 1.13590366e+04 1.15123493e+04 1.16677312e+04 1.18252103e+04 + 1.19848148e+04 1.21465736e+04 1.23105156e+04 1.24766704e+04 1.26450677e+04 + 1.28157379e+04 1.29887116e+04 1.31640199e+04 1.33416944e+04 1.35217669e+04 + 1.37042699e+04 1.38892361e+04 1.40766987e+04 1.42666916e+04 1.44592488e+04 + 1.46544049e+04 1.48521951e+04 1.50526548e+04 1.52558201e+04 1.54617276e+04 + 1.56704142e+04 1.58819174e+04 1.60962752e+04 1.63135263e+04 1.65337095e+04 + 1.67568646e+04 1.69830316e+04 1.72122512e+04 1.74445645e+04 1.76800134e+04 + 1.79186401e+04 1.81604876e+04 1.84055993e+04 1.86540192e+04 1.89057921e+04 + 1.91609631e+04 1.94195781e+04 1.96816837e+04 1.99473269e+04 2.02165555e+04 + 2.04894179e+04 2.07659631e+04 2.10462408e+04 2.13303014e+04 2.16181960e+04 + 2.19099763e+04 2.22056947e+04 2.25054044e+04 2.28091593e+04 2.31170140e+04 + 2.34290238e+04 2.37452448e+04 2.40657338e+04 2.43905484e+04 2.47197470e+04 + 2.50533889e+04 2.53915339e+04 2.57342428e+04 2.60815773e+04 2.64335997e+04 + 2.67903734e+04 2.71519624e+04 2.75184318e+04 2.78898474e+04 2.82662760e+04 + 2.86477853e+04 2.90344437e+04 2.94263209e+04 2.98234873e+04 3.02260142e+04 + 3.06339740e+04 3.10474400e+04 3.14664865e+04 3.18911890e+04 3.23216236e+04 + 3.27578678e+04 3.31999999e+04 3.36480995e+04 3.41022471e+04 3.45625243e+04 + 3.50290139e+04 3.55017997e+04 3.59809666e+04 3.64666009e+04 3.69587897e+04 + 3.74576216e+04 3.79631862e+04 3.84755745e+04 3.89948784e+04 3.95211913e+04 + 4.00546079e+04 4.05952240e+04 4.11431368e+04 4.16984447e+04 4.22612476e+04 + 4.28316467e+04 4.34097444e+04 4.39956447e+04 4.45894528e+04 4.51912756e+04 + 4.58012212e+04 4.64193992e+04 4.70459207e+04 4.76808984e+04 4.83244463e+04 + 4.89766802e+04 4.96377173e+04 5.03076764e+04 5.09866779e+04 5.16748439e+04 + 5.23722980e+04 5.30791657e+04 5.37955739e+04 5.45216515e+04 5.52575289e+04 + 5.60033385e+04 5.67592142e+04 5.75252919e+04 5.83017094e+04 5.90886062e+04 + 5.98861237e+04 6.06944053e+04 6.15135963e+04 6.23438438e+04 6.31852972e+04 + 6.40381076e+04 6.49024284e+04 6.57784150e+04 6.66662247e+04 6.75660171e+04 + 6.84779540e+04 6.94021994e+04 7.03389192e+04 7.12882819e+04 7.22504581e+04 + 7.32256209e+04 7.42139453e+04 7.52156092e+04 7.62307924e+04 7.72596776e+04 + 7.83024497e+04 7.93592960e+04 8.04304065e+04 8.15159738e+04 8.26161929e+04 + 8.37312617e+04 8.48613806e+04 8.60067526e+04 8.71675837e+04 8.83440825e+04 + 8.95364604e+04 9.07449319e+04 9.19697141e+04 9.32110271e+04 9.44690942e+04 + 9.57441413e+04 9.70363977e+04 9.83460956e+04 9.96734705e+04 1.01018761e+05 + 1.02382209e+05 1.03764059e+05 1.05164560e+05 1.06583964e+05 1.08022525e+05 + 1.09480502e+05 1.10958158e+05 1.12455758e+05 1.13973570e+05 1.15511869e+05 + 1.17070930e+05 1.18651033e+05 1.20252464e+05 1.21875508e+05 1.23520459e+05 + 1.25187612e+05 1.26877266e+05 1.28589725e+05 1.30325298e+05 1.32084295e+05 + 1.33867034e+05 1.35673834e+05 1.37505020e+05 1.39360922e+05 1.41241873e+05 + 1.43148212e+05 1.45080280e+05 1.47038425e+05 1.49022999e+05 1.51034359e+05 + 1.53072866e+05 1.55138887e+05 1.57232793e+05 1.59354960e+05 1.61505770e+05 + 1.63685609e+05 1.65894870e+05 1.68133949e+05 1.70403249e+05 1.72703178e+05 + 1.75034149e+05 1.77396580e+05 1.79790898e+05 1.82217531e+05 1.84676917e+05 + 1.87169497e+05 1.89695719e+05 1.92256038e+05 1.94850913e+05 1.97480811e+05 + 2.00146205e+05 2.02847573e+05 2.05585402e+05 2.08360183e+05 2.11172416e+05 + 2.14022605e+05 2.16911263e+05 2.19838909e+05 2.22806069e+05 2.25813278e+05 + 2.28861074e+05 2.31950007e+05 2.35080630e+05 2.38253508e+05 2.41469210e+05 + 2.44728314e+05 2.48031406e+05 2.51379080e+05 2.54771938e+05 2.58210588e+05 + 2.61695651e+05 2.65227751e+05 2.68807523e+05 2.72435612e+05 2.76112669e+05 + 2.79839355e+05 2.83616340e+05 2.87444303e+05 2.91323932e+05 2.95255924e+05 + 2.99240986e+05 3.03279835e+05 3.07373196e+05 3.11521804e+05 3.15726407e+05 + 3.19987758e+05 3.24306626e+05 3.28683784e+05 3.33120022e+05 3.37616135e+05 + 3.42172931e+05 3.46791231e+05 3.51471864e+05 3.56215672e+05 3.61023506e+05 + 3.65896232e+05 3.70834725e+05 3.75839872e+05 3.80912574e+05 3.86053742e+05 + 3.91264300e+05 3.96545185e+05 4.01897346e+05 4.07321745e+05 4.12819356e+05 + 4.18391169e+05 4.24038185e+05 4.29761418e+05 4.35561898e+05 4.41440667e+05 + 4.47398781e+05 4.53437311e+05 4.59557344e+05 4.65759979e+05 4.72046330e+05 + 4.78417528e+05 4.84874718e+05 4.91419060e+05 4.98051732e+05 5.04773924e+05 + 5.11586846e+05 5.18491721e+05 5.25489792e+05 5.32582315e+05 5.39770566e+05 + 5.47055836e+05 5.54439436e+05 5.61922691e+05 5.69506949e+05 5.77193570e+05 + 5.84983938e+05 5.92879453e+05 6.00881532e+05 6.08991616e+05 6.17211161e+05 + 6.25541646e+05 6.33984566e+05 6.42541441e+05 6.51213808e+05 6.60003225e+05 + 3.33422613e-07 3.37922810e-07 3.42483747e-07 3.47106241e-07 3.51791126e-07 + 3.56539243e-07 3.61351444e-07 3.66228596e-07 3.71171575e-07 3.76181269e-07 + 3.81258578e-07 3.86404416e-07 3.91619707e-07 3.96905389e-07 4.02262412e-07 + 4.07691738e-07 4.13194344e-07 4.18771218e-07 4.24423363e-07 4.30151795e-07 + 4.35957544e-07 4.41841652e-07 4.47805178e-07 4.53849194e-07 4.59974786e-07 + 4.66183055e-07 4.72475116e-07 4.78852102e-07 4.85315157e-07 4.91865444e-07 + 4.98504140e-07 5.05232439e-07 5.12051549e-07 5.18962697e-07 5.25967124e-07 + 5.33066089e-07 5.40260870e-07 5.47552758e-07 5.54943064e-07 5.62433118e-07 + 5.70024264e-07 5.77717868e-07 5.85515312e-07 5.93417998e-07 6.01427347e-07 + 6.09544798e-07 6.17771809e-07 6.26109861e-07 6.34560451e-07 6.43125098e-07 + 6.51805342e-07 6.60602743e-07 6.69518883e-07 6.78555363e-07 6.87713809e-07 + 6.96995865e-07 7.06403202e-07 7.15937509e-07 7.25600501e-07 7.35393913e-07 + 7.45319507e-07 7.55379067e-07 7.65574400e-07 7.75907340e-07 7.86379743e-07 + 7.96993491e-07 8.07750493e-07 8.18652683e-07 8.29702018e-07 8.40900487e-07 + 8.52250101e-07 8.63752900e-07 8.75410952e-07 8.87226353e-07 8.99201226e-07 + 9.11337723e-07 9.23638027e-07 9.36104347e-07 9.48738925e-07 9.61544032e-07 + 9.74521969e-07 9.87675069e-07 1.00100570e-06 1.01451625e-06 1.02820915e-06 + 1.04208686e-06 1.05615188e-06 1.07040674e-06 1.08485399e-06 1.09949624e-06 + 1.11433612e-06 1.12937629e-06 1.14461945e-06 1.16006835e-06 1.17572577e-06 + 1.19159451e-06 1.20767743e-06 1.22397743e-06 1.24049742e-06 1.25724038e-06 + 1.27420933e-06 1.29140730e-06 1.30883739e-06 1.32650274e-06 1.34440652e-06 + 1.36255194e-06 1.38094227e-06 1.39958082e-06 1.41847092e-06 1.43761599e-06 + 1.45701946e-06 1.47668482e-06 1.49661560e-06 1.51681538e-06 1.53728780e-06 + 1.55803654e-06 1.57906532e-06 1.60037793e-06 1.62197819e-06 1.64386999e-06 + 1.66605727e-06 1.68854400e-06 1.71133424e-06 1.73443208e-06 1.75784167e-06 + 1.78156721e-06 1.80561298e-06 1.82998330e-06 1.85468254e-06 1.87971515e-06 + 1.90508562e-06 1.93079851e-06 1.95685845e-06 1.98327013e-06 2.01003828e-06 + 2.03716771e-06 2.06466332e-06 2.09253003e-06 2.12077286e-06 2.14939688e-06 + 2.17840724e-06 2.20780915e-06 2.23760790e-06 2.26780884e-06 2.29841740e-06 + 2.32943908e-06 2.36087947e-06 2.39274420e-06 2.42503901e-06 2.45776971e-06 + 2.49094216e-06 2.52456235e-06 2.55863631e-06 2.59317016e-06 2.62817012e-06 + 2.66364247e-06 2.69959359e-06 2.73602994e-06 2.77295807e-06 2.81038462e-06 + 2.84831631e-06 2.88675997e-06 2.92572250e-06 2.96521091e-06 3.00523229e-06 + 3.04579384e-06 3.08690284e-06 3.12856670e-06 3.17079289e-06 3.21358900e-06 + 3.25696274e-06 3.30092189e-06 3.34547435e-06 3.39062814e-06 3.43639136e-06 + 3.48277226e-06 3.52977915e-06 3.57742050e-06 3.62570485e-06 3.67464091e-06 + 3.72423745e-06 3.77450339e-06 3.82544777e-06 3.87707975e-06 3.92940860e-06 + 3.98244374e-06 4.03619469e-06 4.09067111e-06 4.14588280e-06 4.20183968e-06 + 4.25855181e-06 4.31602938e-06 4.37428273e-06 4.43332232e-06 4.49315877e-06 + 4.55380282e-06 4.61526539e-06 4.67755752e-06 4.74069040e-06 4.80467539e-06 + 4.86952397e-06 4.93524782e-06 5.00185875e-06 5.06936871e-06 5.13778986e-06 + 5.20713449e-06 5.27741506e-06 5.34864421e-06 5.42083473e-06 5.49399961e-06 + 5.56815199e-06 5.64330520e-06 5.71947276e-06 5.79666835e-06 5.87490584e-06 + 5.95419930e-06 6.03456299e-06 6.11601134e-06 6.19855900e-06 6.28222081e-06 + 6.36701179e-06 6.45294720e-06 6.54004247e-06 6.62831327e-06 6.71777545e-06 + 6.80844511e-06 6.90033853e-06 6.99347224e-06 7.08786296e-06 7.18352768e-06 + 7.28048358e-06 7.37874810e-06 7.47833888e-06 7.57927385e-06 7.68157112e-06 + 7.78524911e-06 7.89032643e-06 7.99682198e-06 8.10475489e-06 8.21414458e-06 + 8.32501069e-06 8.43737316e-06 8.55125218e-06 8.66666823e-06 8.78364205e-06 + 8.90219465e-06 9.02234736e-06 9.14412177e-06 9.26753976e-06 9.39262353e-06 + 9.51939554e-06 9.64787860e-06 9.77809578e-06 9.91007051e-06 1.00438265e-05 + 1.01793878e-05 1.03167787e-05 1.04560241e-05 1.05971488e-05 1.07401782e-05 + 1.08851382e-05 1.10320546e-05 1.11809540e-05 1.13318631e-05 1.14848089e-05 + 1.16398191e-05 1.17969215e-05 1.19561443e-05 1.21175161e-05 1.22810659e-05 + 1.24468231e-05 1.26148176e-05 1.27850795e-05 1.29576394e-05 1.31325284e-05 + 1.33097778e-05 1.34894195e-05 1.36714859e-05 1.38560096e-05 1.40430239e-05 + 1.42325622e-05 1.44246588e-05 1.46193481e-05 1.48166650e-05 1.50166452e-05 + 1.52193245e-05 1.54247394e-05 1.56329267e-05 1.58439240e-05 1.60577690e-05 + 1.62745004e-05 1.64941569e-05 1.67167781e-05 1.69424041e-05 1.71710753e-05 + 1.74028329e-05 1.76377185e-05 1.78757744e-05 1.81170433e-05 1.83615686e-05 + 1.86093943e-05 1.88605648e-05 1.91151254e-05 1.93731218e-05 1.96346004e-05 + 1.98996081e-05 2.01681926e-05 2.04404022e-05 2.07162859e-05 2.09958931e-05 + 2.12792742e-05 2.15664800e-05 2.18575623e-05 2.21525733e-05 2.24515660e-05 + 2.27545943e-05 2.30617125e-05 2.33729759e-05 2.36884404e-05 2.40081627e-05 + 2.43322003e-05 2.46606114e-05 2.49934551e-05 2.53307912e-05 2.56726803e-05 + 2.60191838e-05 2.63703641e-05 2.67262843e-05 2.70870083e-05 2.74526010e-05 + 2.78231281e-05 2.81986562e-05 2.85792528e-05 2.89649863e-05 2.93559260e-05 + 2.97521423e-05 3.01537062e-05 3.05606901e-05 3.09731670e-05 3.13912111e-05 + 3.18148975e-05 3.22443024e-05 3.26795030e-05 3.31205775e-05 3.35676051e-05 + 3.40206663e-05 3.44798424e-05 3.49452160e-05 3.54168708e-05 3.58948914e-05 + 3.63793639e-05 3.68703753e-05 3.73680139e-05 3.78723691e-05 3.83835316e-05 + 3.89015932e-05 3.94266470e-05 3.99587876e-05 4.04981104e-05 4.10447124e-05 + 4.15986919e-05 4.21601485e-05 4.27291830e-05 4.33058977e-05 4.38903964e-05 + 4.44827840e-05 4.50831671e-05 4.56916535e-05 4.63083527e-05 4.69333754e-05 + 4.75668341e-05 4.82088425e-05 4.88595161e-05 4.95189718e-05 5.01873282e-05 + 5.08647054e-05 5.15512251e-05 5.22470108e-05 5.29521874e-05 5.36668818e-05 + 5.43912225e-05 5.51253395e-05 5.58693649e-05 5.66234324e-05 5.73876775e-05 + 5.81622376e-05 5.89472519e-05 5.97428616e-05 6.05492096e-05 6.13664408e-05 + 6.21947022e-05 6.30341426e-05 6.38849129e-05 6.47471661e-05 6.56210570e-05 + 6.65067429e-05 6.74043828e-05 6.83141382e-05 6.92361725e-05 7.01706514e-05 + 7.11177430e-05 7.20776175e-05 7.30504474e-05 7.40364076e-05 7.50356752e-05 + 7.60484299e-05 7.70748537e-05 7.81151312e-05 7.91694493e-05 8.02379974e-05 + 8.13209678e-05 8.24185549e-05 8.35309562e-05 8.46583715e-05 8.58010036e-05 + 8.69590577e-05 8.81327420e-05 8.93222675e-05 9.05278480e-05 9.17497002e-05 + 9.29880438e-05 9.42431012e-05 9.55150981e-05 9.68042631e-05 9.81108279e-05 + 9.94350274e-05 1.00777100e-04 1.02137286e-04 1.03515830e-04 1.04912981e-04 + 1.06328989e-04 1.07764109e-04 1.09218598e-04 1.10692719e-04 1.12186736e-04 + 1.13700918e-04 1.15235536e-04 1.16790868e-04 1.18367191e-04 1.19964790e-04 + 1.21583952e-04 1.23224968e-04 1.24888133e-04 1.26573745e-04 1.28282107e-04 + 1.30013528e-04 1.31768318e-04 1.33546791e-04 1.35349269e-04 1.37176075e-04 + 1.39027537e-04 1.40903989e-04 1.42805766e-04 1.44733212e-04 1.46686673e-04 + 1.48666500e-04 1.50673048e-04 1.52706678e-04 1.54767757e-04 1.56856654e-04 + 1.58973744e-04 1.61119409e-04 1.63294034e-04 1.65498009e-04 1.67731732e-04 + 1.69995603e-04 1.72290030e-04 1.74615424e-04 1.76972205e-04 1.79360794e-04 + 1.81781623e-04 1.84235125e-04 1.86721742e-04 1.89241921e-04 1.91796114e-04 + 1.94384782e-04 1.97008389e-04 1.99667406e-04 2.02362313e-04 2.05093592e-04 + 2.07861735e-04 2.10667240e-04 2.13510611e-04 2.16392358e-04 2.19313001e-04 + 2.22273063e-04 2.25273078e-04 2.28313583e-04 2.31395126e-04 2.34518260e-04 + 2.37683548e-04 2.40891557e-04 2.44142865e-04 2.47438055e-04 2.50777721e-04 + 2.54162461e-04 2.57592886e-04 2.61069611e-04 2.64593261e-04 2.68164470e-04 + 2.71783880e-04 2.75452140e-04 2.79169911e-04 2.82937861e-04 2.86756667e-04 + 2.90627015e-04 2.94549600e-04 2.98525129e-04 3.02554316e-04 3.06637884e-04 + 3.10776569e-04 3.14971112e-04 3.19222270e-04 3.23530805e-04 3.27897493e-04 + 3.32323118e-04 3.36808475e-04 3.41354371e-04 3.45961623e-04 3.50631058e-04 + 3.55363517e-04 3.60159850e-04 3.65020919e-04 3.69947598e-04 3.74940772e-04 + 3.80001338e-04 3.85130207e-04 3.90328301e-04 3.95596553e-04 4.00935910e-04 + 4.06347332e-04 4.11831792e-04 4.17390276e-04 4.23023783e-04 4.28733325e-04 + 4.34519928e-04 4.40384633e-04 4.46328494e-04 4.52352579e-04 4.58457971e-04 + 4.64645768e-04 4.70917081e-04 4.77273037e-04 4.83714780e-04 4.90243467e-04 + 4.96860271e-04 5.03566382e-04 5.10363006e-04 5.17251363e-04 5.24232693e-04 + 5.31308249e-04 5.38479303e-04 5.45747146e-04 5.53113082e-04 5.60578436e-04 + 5.68144550e-04 5.75812783e-04 5.83584515e-04 5.91461141e-04 5.99444078e-04 + 6.07534760e-04 6.15734643e-04 6.24045198e-04 6.32467922e-04 6.41004326e-04 + 6.49655946e-04 6.58424337e-04 6.67311075e-04 6.76317756e-04 6.85446001e-04 + 6.94697449e-04 7.04073764e-04 7.13576631e-04 7.23207758e-04 7.32968876e-04 + 7.42861739e-04 7.52888126e-04 7.63049839e-04 7.73348705e-04 7.83786574e-04 + 7.94365323e-04 8.05086852e-04 8.15953090e-04 8.26965990e-04 8.38127530e-04 + 8.49439717e-04 8.60904585e-04 8.72524194e-04 8.84300632e-04 8.96236017e-04 + 9.08332493e-04 9.20592235e-04 9.33017446e-04 9.45610360e-04 9.58373241e-04 + 9.71308382e-04 9.84418108e-04 9.97704775e-04 1.01117077e-03 1.02481852e-03 + 1.03865047e-03 1.05266911e-03 1.06687696e-03 1.08127658e-03 1.09587054e-03 + 1.11066148e-03 1.12565205e-03 1.14084495e-03 1.15624291e-03 1.17184869e-03 + 1.18766510e-03 1.20369499e-03 1.21994123e-03 1.23640675e-03 1.25309450e-03 + 1.27000749e-03 1.28714875e-03 1.30452137e-03 1.32212846e-03 1.33997320e-03 + 1.35805878e-03 1.37638847e-03 1.39496555e-03 1.41379337e-03 1.43287530e-03 + 1.45221479e-03 1.47181530e-03 1.49168035e-03 1.51181353e-03 1.53221844e-03 + 1.55289875e-03 1.57385819e-03 1.59510052e-03 1.61662955e-03 1.63844916e-03 + 1.66056327e-03 1.68297585e-03 1.70569094e-03 1.72871261e-03 1.75204500e-03 + 1.77569231e-03 1.79965879e-03 1.82394874e-03 1.84856653e-03 1.87351659e-03 + 1.89880340e-03 1.92443150e-03 1.95040551e-03 1.97673009e-03 2.00340997e-03 + 2.03044994e-03 2.05785488e-03 2.08562970e-03 2.11377939e-03 2.14230902e-03 + 2.17122371e-03 2.20052867e-03 2.23022915e-03 2.26033050e-03 2.29083813e-03 + 2.32175752e-03 2.35309422e-03 2.38485388e-03 2.41704219e-03 2.44966495e-03 + 2.48272802e-03 2.51623735e-03 2.55019894e-03 2.58461891e-03 2.61950345e-03 + 2.65485883e-03 2.69069140e-03 2.72700759e-03 2.76381395e-03 2.80111708e-03 + 2.83892369e-03 2.87724058e-03 2.91607463e-03 2.95543282e-03 2.99532222e-03 + 3.03575001e-03 3.07672346e-03 3.11824992e-03 3.16033687e-03 3.20299186e-03 + 3.24622256e-03 3.29003675e-03 3.33444230e-03 3.37944719e-03 3.42505951e-03 + 3.47128745e-03 3.51813934e-03 3.56562358e-03 3.61374872e-03 3.66252340e-03 + 3.71195639e-03 3.76205657e-03 3.81283296e-03 3.86429468e-03 3.91645097e-03 + 3.96931122e-03 4.02288492e-03 4.07718170e-03 4.13221132e-03 4.18798368e-03 + 4.24450880e-03 4.30179683e-03 4.35985808e-03 4.41870298e-03 4.47834211e-03 + 4.53878618e-03 4.60004607e-03 4.66213279e-03 4.72505748e-03 4.78883147e-03 + 4.85346621e-03 4.91897333e-03 4.98536460e-03 5.05265194e-03 5.12084747e-03 + 5.18996342e-03 5.26001224e-03 5.33100650e-03 5.40295896e-03 5.47588257e-03 + 5.54979043e-03 5.62469582e-03 5.70061220e-03 5.77755323e-03 5.85553273e-03 + 5.93456471e-03 6.01466339e-03 6.09584316e-03 6.17811861e-03 6.26150453e-03 + 6.34601591e-03 6.43166793e-03 6.51847600e-03 6.60645572e-03 6.69562289e-03 + 6.78599356e-03 6.87758395e-03 6.97041054e-03 7.06449000e-03 7.15983925e-03 + 7.25647543e-03 7.35441591e-03 7.45367829e-03 7.55428040e-03 7.65624035e-03 + 7.75957644e-03 7.86430726e-03 7.97045163e-03 8.07802862e-03 8.18705758e-03 + 8.29755810e-03 8.40955005e-03 8.52305354e-03 8.63808899e-03 8.75467707e-03 + 8.87283874e-03 8.99259524e-03 9.11396808e-03 9.23697909e-03 9.36165038e-03 + 9.48800435e-03 9.61606372e-03 9.74585150e-03 9.87739102e-03 1.00107059e-02 + 1.01458202e-02 1.02827581e-02 1.04215442e-02 1.05622036e-02 1.07047614e-02 + 1.08492433e-02 1.09956753e-02 1.11440836e-02 1.12944951e-02 1.14469366e-02 + 1.16014356e-02 1.17580199e-02 1.19167176e-02 1.20775573e-02 1.22405678e-02 + 1.24057784e-02 1.25732189e-02 1.27429194e-02 1.29149103e-02 1.30892225e-02 + 1.32658874e-02 1.34449368e-02 1.36264028e-02 1.38103180e-02 1.39967155e-02 + 1.41856289e-02 1.43770920e-02 1.45711392e-02 1.47678056e-02 1.49671263e-02 + 1.51691372e-02 1.53738747e-02 1.55813755e-02 1.57916770e-02 1.60048169e-02 + 1.62208335e-02 1.64397657e-02 1.66616528e-02 1.68865348e-02 1.71144519e-02 + 1.73454453e-02 1.75795563e-02 1.78168272e-02 1.80573005e-02 1.83010194e-02 + 1.85480279e-02 1.87983701e-02 1.90520913e-02 1.93092369e-02 1.95698532e-02 + 1.98339871e-02 2.01016859e-02 2.03729979e-02 2.06479718e-02 2.09266569e-02 + 2.12091035e-02 2.14953623e-02 2.17854847e-02 2.20795229e-02 2.23775297e-02 + 2.26795586e-02 2.29856641e-02 2.32959011e-02 2.36103253e-02 2.39289933e-02 + 2.42519623e-02 2.45792905e-02 2.49110366e-02 2.52472603e-02 2.55880219e-02 + 2.59333828e-02 2.62834051e-02 2.66381516e-02 2.69976861e-02 2.73620732e-02 + 2.77313785e-02 2.81056682e-02 2.84850098e-02 2.88694713e-02 2.92591218e-02 + 2.96540315e-02 3.00542712e-02 3.04599130e-02 3.08710297e-02 3.12876953e-02 + 3.17099846e-02 3.21379735e-02 3.25717389e-02 3.30113589e-02 3.34569125e-02 + 3.39084796e-02 3.43661415e-02 3.48299805e-02 3.53000800e-02 3.57765243e-02 + 3.62593992e-02 3.67487914e-02 3.72447890e-02 3.77474810e-02 3.82569579e-02 + 3.87733111e-02 3.92966336e-02 3.98270193e-02 4.03645636e-02 4.09093632e-02 + 4.14615159e-02 4.20211210e-02 4.25882791e-02 4.31630920e-02 4.37456633e-02 + 4.43360974e-02 4.49345007e-02 4.55409806e-02 4.61556461e-02 4.67786078e-02 + 4.74099775e-02 4.80498689e-02 4.86983968e-02 4.93556779e-02 5.00218303e-02 + 5.06969737e-02 5.13812296e-02 5.20747208e-02 5.27775721e-02 5.34899097e-02 + 5.42118618e-02 5.49435580e-02 5.56851299e-02 5.64367107e-02 5.71984357e-02 + 5.79704416e-02 5.87528673e-02 5.95458533e-02 6.03495423e-02 6.11640786e-02 + 6.19896087e-02 6.28262810e-02 6.36742458e-02 6.45336556e-02 6.54046648e-02 + 6.62874300e-02 6.71821099e-02 6.80888652e-02 6.90078590e-02 6.99392564e-02 + 7.08832249e-02 7.18399341e-02 7.28095560e-02 7.37922648e-02 7.47882373e-02 + 7.57976523e-02 7.68206914e-02 7.78575385e-02 7.89083798e-02 7.99734043e-02 + 8.10528035e-02 8.21467712e-02 8.32555042e-02 8.43792018e-02 8.55180659e-02 + 8.66723011e-02 8.78421151e-02 8.90277181e-02 9.02293231e-02 9.14471461e-02 + 9.26814060e-02 9.39323248e-02 9.52001271e-02 9.64850410e-02 9.77872973e-02 + 9.91071301e-02 1.00444777e-01 1.01800477e-01 1.03174476e-01 1.04567019e-01 + 1.05978358e-01 1.07408745e-01 1.08858439e-01 1.10327698e-01 1.11816789e-01 + 1.13325977e-01 1.14855535e-01 1.16405738e-01 1.17976863e-01 1.19569194e-01 + 1.21183017e-01 1.22818621e-01 1.24476301e-01 1.26156355e-01 1.27859084e-01 + 1.29584795e-01 1.31333798e-01 1.33106407e-01 1.34902941e-01 1.36723723e-01 + 1.38569080e-01 1.40439343e-01 1.42334850e-01 1.44255940e-01 1.46202959e-01 + 1.48176257e-01 1.50176188e-01 1.52203112e-01 1.54257394e-01 1.56339402e-01 + 1.58449512e-01 1.60588101e-01 1.62755555e-01 1.64952263e-01 1.67178619e-01 + 1.69435025e-01 1.71721886e-01 1.74039612e-01 1.76388620e-01 1.78769333e-01 + 1.81182179e-01 1.83627590e-01 1.86106008e-01 1.88617876e-01 1.91163647e-01 + 1.93743778e-01 1.96358733e-01 1.99008982e-01 2.01695002e-01 2.04417275e-01 + 2.07176290e-01 2.09972543e-01 2.12806537e-01 2.15678782e-01 2.18589794e-01 + 2.21540095e-01 2.24530216e-01 2.27560695e-01 2.30632076e-01 2.33744912e-01 + 2.36899762e-01 2.40097192e-01 2.43337778e-01 2.46622102e-01 2.49950755e-01 + 2.53324334e-01 2.56743447e-01 2.60208707e-01 2.63720738e-01 2.67280170e-01 + 2.70887644e-01 2.74543808e-01 2.78249320e-01 2.82004844e-01 2.85811057e-01 + 2.89668642e-01 2.93578293e-01 2.97540712e-01 3.01556612e-01 3.05626714e-01 + 3.09751751e-01 3.13932463e-01 3.18169601e-01 3.22463929e-01 3.26816217e-01 + 3.31227248e-01 3.35697814e-01 3.40228719e-01 3.44820778e-01 3.49474816e-01 + 3.54191669e-01 3.58972186e-01 3.63817225e-01 3.68727657e-01 3.73704366e-01 + 3.78748245e-01 3.83860201e-01 3.89041153e-01 3.94292032e-01 3.99613782e-01 + 4.05007360e-01 4.10473734e-01 4.16013889e-01 4.21628818e-01 4.27319532e-01 + 4.33087054e-01 4.38932419e-01 4.44856680e-01 4.50860900e-01 4.56946159e-01 + 4.63113550e-01 4.69364183e-01 4.75699180e-01 4.82119680e-01 4.88626838e-01 + 4.95221823e-01 5.01905820e-01 5.08680031e-01 5.15545673e-01 5.22503981e-01 + 5.29556205e-01 5.36703612e-01 5.43947488e-01 5.51289134e-01 5.58729871e-01 + 5.66271034e-01 5.73913981e-01 5.81660084e-01 5.89510737e-01 5.97467349e-01 + 6.05531351e-01 6.13704194e-01 6.21987345e-01 6.30382293e-01 6.38890548e-01 + 6.47513638e-01 6.56253114e-01 6.65110547e-01 6.74087528e-01 6.83185672e-01 + 6.92406612e-01 7.01752008e-01 7.11223538e-01 7.20822905e-01 7.30551835e-01 + 7.40412075e-01 7.50405399e-01 7.60533603e-01 7.70798507e-01 7.81201956e-01 + 7.91745820e-01 8.02431995e-01 8.13262400e-01 8.24238984e-01 8.35363718e-01 + 8.46638602e-01 8.58065663e-01 8.69646955e-01 8.81384559e-01 8.93280585e-01 + 9.05337172e-01 9.17556486e-01 9.29940724e-01 9.42492112e-01 9.55212906e-01 + 9.68105391e-01 9.81171887e-01 9.94414740e-01 1.00783633e+00 1.02143908e+00 + 1.03522541e+00 1.04919783e+00 1.06335883e+00 1.07771095e+00 1.09225679e+00 + 1.10699896e+00 1.12194010e+00 1.13708289e+00 1.15243007e+00 1.16798440e+00 + 1.18374865e+00 1.19972568e+00 1.21591835e+00 1.23232957e+00 1.24896229e+00 + 1.26581951e+00 1.28290424e+00 1.30021957e+00 1.31776860e+00 1.33555450e+00 + 1.35358044e+00 1.37184969e+00 1.39036551e+00 1.40913124e+00 1.42815025e+00 + 1.44742596e+00 1.46696183e+00 1.48676138e+00 1.50682816e+00 1.52716579e+00 + 1.54777791e+00 1.56866823e+00 1.58984051e+00 1.61129855e+00 1.63304621e+00 + 1.65508739e+00 1.67742607e+00 1.70006625e+00 1.72301200e+00 1.74626745e+00 + 1.76983678e+00 1.79372423e+00 1.81793408e+00 1.84247069e+00 1.86733848e+00 + 1.89254190e+00 1.91808549e+00 1.94397385e+00 1.97021161e+00 1.99680351e+00 + 2.02375432e+00 2.05106889e+00 2.07875211e+00 2.10680898e+00 2.13524453e+00 + 2.16406388e+00 2.19327220e+00 2.22287474e+00 2.25287683e+00 2.28328385e+00 + 2.31410128e+00 2.34533465e+00 2.37698957e+00 2.40907175e+00 2.44158693e+00 + 2.47454097e+00 2.50793979e+00 2.54178939e+00 2.57609587e+00 2.61086537e+00 + 2.64610416e+00 2.68181856e+00 2.71801500e+00 2.75469999e+00 2.79188011e+00 + 2.82956205e+00 2.86775258e+00 2.90645857e+00 2.94568697e+00 2.98544484e+00 + 3.02573931e+00 3.06657764e+00 3.10796717e+00 3.14991533e+00 3.19242966e+00 + 3.23551781e+00 3.27918751e+00 3.32344663e+00 3.36830311e+00 3.41376502e+00 + 3.45984052e+00 3.50653791e+00 3.55386557e+00 3.60183200e+00 3.65044585e+00 + 3.69971583e+00 3.74965080e+00 3.80025975e+00 3.85155177e+00 3.90353607e+00 + 3.95622200e+00 4.00961904e+00 4.06373677e+00 4.11858493e+00 4.17417337e+00 + 4.23051209e+00 4.28761121e+00 4.34548099e+00 4.40413185e+00 4.46357431e+00 + 4.52381907e+00 4.58487694e+00 4.64675892e+00 4.70947611e+00 4.77303980e+00 + 4.83746140e+00 4.90275251e+00 4.96892484e+00 5.03599030e+00 5.10396094e+00 + 5.17284898e+00 5.24266680e+00 5.31342695e+00 5.38514215e+00 5.45782528e+00 + 5.53148942e+00 5.60614780e+00 5.68181384e+00 5.75850115e+00 5.83622350e+00 + 5.91499487e+00 5.99482942e+00 6.07574149e+00 6.15774562e+00 6.24085657e+00 + 6.32508926e+00 6.41045884e+00 6.49698065e+00 6.58467024e+00 6.67354338e+00 + 6.76361604e+00 6.85490440e+00 6.94742488e+00 7.04119411e+00 7.13622894e+00 + 7.23254645e+00 7.33016396e+00 7.42909901e+00 7.52936938e+00 7.63099310e+00 + 7.73398843e+00 7.83837389e+00 7.94416823e+00 8.05139048e+00 8.16005991e+00 + 8.27019604e+00 8.38181868e+00 8.49494789e+00 8.60960400e+00 8.72580762e+00 + 8.84357964e+00 8.96294122e+00 9.08391382e+00 9.20651919e+00 9.33077936e+00 + 9.45671667e+00 9.58435375e+00 9.71371354e+00 9.84481930e+00 9.97769459e+00 + 1.01123633e+01 1.02488496e+01 1.03871781e+01 1.05273736e+01 1.06694613e+01 + 1.08134668e+01 1.09594159e+01 1.11073349e+01 1.12572503e+01 1.14091891e+01 + 1.15631787e+01 1.17192466e+01 1.18774210e+01 1.20377303e+01 1.22002032e+01 + 1.23648691e+01 1.25317574e+01 1.27008983e+01 1.28723220e+01 1.30460594e+01 + 1.32221418e+01 1.34006007e+01 1.35814683e+01 1.37647770e+01 1.39505599e+01 + 1.41388503e+01 1.43296820e+01 1.45230894e+01 1.47191072e+01 1.49177706e+01 + 1.51191154e+01 1.53231778e+01 1.55299943e+01 1.57396023e+01 1.59520393e+01 + 1.61673436e+01 1.63855539e+01 1.66067093e+01 1.68308497e+01 1.70580152e+01 + 1.72882469e+01 1.75215859e+01 1.77580743e+01 1.79977547e+01 1.82406699e+01 + 1.84868638e+01 1.87363806e+01 1.89892650e+01 1.92455627e+01 1.95053196e+01 + 1.97685824e+01 2.00353985e+01 2.03058158e+01 2.05798829e+01 2.08576491e+01 + 2.11391643e+01 2.14244791e+01 2.17136448e+01 2.20067133e+01 2.23037374e+01 + 2.26047704e+01 2.29098665e+01 2.32190804e+01 2.35324678e+01 2.38500849e+01 + 2.41719890e+01 2.44982377e+01 2.48288899e+01 2.51640048e+01 2.55036428e+01 + 2.58478648e+01 2.61967328e+01 2.65503095e+01 2.69086584e+01 2.72718439e+01 + 2.76399314e+01 2.80129869e+01 2.83910775e+01 2.87742712e+01 2.91626368e+01 + 2.95562442e+01 2.99551642e+01 3.03594683e+01 3.07692293e+01 3.11845209e+01 + 3.16054176e+01 3.20319952e+01 3.24643303e+01 3.29025005e+01 3.33465848e+01 + 3.37966629e+01 3.42528156e+01 3.47151251e+01 3.51836743e+01 3.56585475e+01 + 3.61398301e+01 3.66276085e+01 3.71219704e+01 3.76230048e+01 3.81308016e+01 + 3.86454521e+01 3.91670489e+01 3.96956856e+01 4.02314573e+01 4.07744603e+01 + 4.13247922e+01 4.18825520e+01 4.24478398e+01 4.30207573e+01 4.36014074e+01 + 4.41898946e+01 4.47863245e+01 4.53908045e+01 4.60034431e+01 4.66243504e+01 + 4.72536382e+01 4.78914194e+01 4.85378088e+01 4.91929224e+01 4.98568781e+01 + 5.05297952e+01 5.12117947e+01 5.19029990e+01 5.26035326e+01 5.33135212e+01 + 5.40330925e+01 5.47623759e+01 5.55015024e+01 5.62506048e+01 5.70098179e+01 + 5.77792780e+01 5.85591236e+01 5.93494947e+01 6.01505334e+01 6.09623837e+01 + 6.17851916e+01 6.26191048e+01 6.34642734e+01 6.43208492e+01 6.51889861e+01 + 6.60688403e+01 6.69605699e+01 6.78643351e+01 6.87802984e+01 6.97086245e+01 + 7.06494801e+01 7.16030345e+01 7.25694589e+01 7.35489272e+01 7.45416153e+01 + 7.55477017e+01 7.65673672e+01 7.76007951e+01 7.86481712e+01 7.97096837e+01 + 8.07855234e+01 8.18758837e+01 8.29809606e+01 8.41009526e+01 8.52360612e+01 + 8.63864902e+01 8.75524466e+01 8.87341399e+01 8.99317825e+01 9.11455896e+01 + 9.23757795e+01 9.36225732e+01 9.48861948e+01 9.61668715e+01 9.74648335e+01 + 9.87803140e+01 1.00113550e+02 1.01464780e+02 1.02834247e+02 1.04222199e+02 + 1.05628883e+02 1.07054554e+02 1.08499467e+02 1.09963881e+02 1.11448061e+02 + 1.12952273e+02 1.14476787e+02 1.16021878e+02 1.17587822e+02 1.19174902e+02 + 1.20783403e+02 1.22413614e+02 1.24065827e+02 1.25740341e+02 1.27437455e+02 + 1.29157476e+02 1.30900711e+02 1.32667475e+02 1.34458085e+02 1.36272862e+02 + 1.38112134e+02 1.39976230e+02 1.41865486e+02 1.43780241e+02 1.45720839e+02 + 1.47687630e+02 1.49680966e+02 1.51701207e+02 1.53748714e+02 1.55823857e+02 + 1.57927008e+02 1.60058545e+02 1.62218851e+02 1.64408315e+02 1.66627330e+02 + 1.68876296e+02 1.71155615e+02 1.73465698e+02 1.75806961e+02 1.78179823e+02 + 1.80584712e+02 1.83022059e+02 1.85492304e+02 1.87995889e+02 1.90533265e+02 + 1.93104888e+02 1.95711220e+02 1.98352730e+02 2.01029892e+02 2.03743187e+02 + 2.06493104e+02 2.09280137e+02 2.12104786e+02 2.14967559e+02 2.17868971e+02 + 2.20809543e+02 2.23789805e+02 2.26810290e+02 2.29871543e+02 2.32974114e+02 + 2.36118560e+02 2.39305447e+02 2.42535347e+02 2.45808840e+02 2.49126516e+02 + 2.52488971e+02 2.55896809e+02 2.59350642e+02 2.62851091e+02 2.66398786e+02 + 2.69994364e+02 2.73638472e+02 2.77331764e+02 2.81074904e+02 2.84868565e+02 + 2.88713429e+02 2.92610188e+02 2.96559540e+02 3.00562197e+02 3.04618878e+02 + 3.08730312e+02 3.12897238e+02 3.17120404e+02 3.21400571e+02 3.25738507e+02 + 3.30134991e+02 3.34590816e+02 3.39106780e+02 3.43683696e+02 3.48322387e+02 + 3.53023686e+02 3.57788438e+02 3.62617500e+02 3.67511740e+02 3.72472037e+02 + 3.77499283e+02 3.82594382e+02 3.87758249e+02 3.92991813e+02 3.98296014e+02 + 4.03671806e+02 4.09120155e+02 4.14642040e+02 4.20238453e+02 4.25910402e+02 + 4.31658904e+02 4.37484994e+02 4.43389719e+02 4.49374139e+02 4.55439331e+02 + 4.61586385e+02 4.67816405e+02 4.74130512e+02 4.80529841e+02 4.87015540e+02 + 4.93588778e+02 5.00250733e+02 5.07002606e+02 5.13845608e+02 5.20780970e+02 + 5.27809938e+02 5.34933776e+02 5.42153765e+02 5.49471201e+02 5.56887401e+02 + 5.64403697e+02 5.72021440e+02 5.79742000e+02 5.87566764e+02 5.95497138e+02 + 6.03534549e+02 6.11680440e+02 6.19936277e+02 6.28303542e+02 6.36783740e+02 + 6.45378395e+02 6.54089052e+02 6.62917276e+02 6.71864655e+02 6.80932796e+02 + 6.90123330e+02 6.99437908e+02 7.08878204e+02 7.18445917e+02 7.28142764e+02 + 7.37970490e+02 7.47930860e+02 7.58025665e+02 7.68256719e+02 7.78625862e+02 + 7.89134956e+02 7.99785892e+02 8.10580583e+02 8.21520970e+02 8.32609019e+02 + 8.43846723e+02 8.55236102e+02 8.66779204e+02 8.78478102e+02 8.90334900e+02 + 9.02351729e+02 9.14530748e+02 9.26874148e+02 9.39384146e+02 9.52062992e+02 + 9.64912963e+02 9.77936371e+02 9.91135555e+02 1.00451289e+03 1.01807077e+03 + 1.03181165e+03 1.04573799e+03 1.05985229e+03 1.07415709e+03 1.08865496e+03 + 1.10334851e+03 1.11824038e+03 1.13333325e+03 1.14862982e+03 1.16413285e+03 + 1.17984512e+03 1.19576946e+03 1.21190873e+03 1.22826584e+03 1.24484371e+03 + 1.26164534e+03 1.27867373e+03 1.29593196e+03 1.31342313e+03 1.33115037e+03 + 1.34911687e+03 1.36732587e+03 1.38578063e+03 1.40448448e+03 1.42344078e+03 + 1.44265292e+03 1.46212437e+03 1.48185863e+03 1.50185924e+03 1.52212980e+03 + 1.54267395e+03 1.56349538e+03 1.58459784e+03 1.60598512e+03 1.62766107e+03 + 1.64962957e+03 1.67189458e+03 1.69446010e+03 1.71733019e+03 1.74050895e+03 + 1.76400056e+03 1.78780923e+03 1.81193925e+03 1.83639495e+03 1.86118073e+03 + 1.88630105e+03 1.91176041e+03 1.93756339e+03 1.96371464e+03 1.99021885e+03 + 2.01708078e+03 2.04430527e+03 2.07189721e+03 2.09986156e+03 2.12820334e+03 + 2.15692765e+03 2.18603965e+03 2.21554458e+03 2.24544773e+03 2.27575449e+03 + 2.30647029e+03 2.33760066e+03 2.36915120e+03 2.40112758e+03 2.43353554e+03 + 2.46638092e+03 2.49966960e+03 2.53340758e+03 2.56760092e+03 2.60225577e+03 + 2.63737835e+03 2.67297499e+03 2.70905207e+03 2.74561608e+03 2.78267359e+03 + 2.82023127e+03 2.85829587e+03 2.89687422e+03 2.93597326e+03 2.97560002e+03 + 3.01576162e+03 3.05646529e+03 3.09771833e+03 3.13952816e+03 3.18190229e+03 + 3.22484835e+03 3.26837405e+03 3.31248722e+03 3.35719578e+03 3.40250777e+03 + 3.44843134e+03 3.49497473e+03 3.54214633e+03 3.58995459e+03 3.63840812e+03 + 3.68751563e+03 3.73728594e+03 3.78772800e+03 3.83885087e+03 3.89066375e+03 + 3.94317595e+03 3.99639690e+03 4.05033617e+03 4.10500346e+03 4.16040860e+03 + 4.21656153e+03 4.27347236e+03 4.33115132e+03 4.38960877e+03 4.44885521e+03 + 4.50890130e+03 4.56975784e+03 4.63143575e+03 4.69394613e+03 4.75730021e+03 + 4.82150937e+03 4.88658517e+03 4.95253929e+03 5.01938360e+03 5.08713010e+03 + 5.15579097e+03 5.22537856e+03 5.29590537e+03 5.36738408e+03 5.43982754e+03 + 5.51324876e+03 5.58766095e+03 5.66307747e+03 5.73951189e+03 5.81697795e+03 + 5.89548956e+03 5.97506084e+03 6.05570610e+03 6.13743982e+03 6.22027670e+03 + 6.30423162e+03 6.38931969e+03 6.47555618e+03 6.56295661e+03 6.65153668e+03 + 6.74131231e+03 6.83229964e+03 6.92451503e+03 7.01797504e+03 7.11269648e+03 + 7.20869638e+03 7.30599198e+03 7.40460078e+03 7.50454050e+03 7.60582911e+03 + 7.70848480e+03 7.81252604e+03 7.91797151e+03 8.02484019e+03 8.13315126e+03 + 8.24292421e+03 8.35417876e+03 8.46693492e+03 8.58121294e+03 8.69703336e+03 + 8.81441701e+03 8.93338499e+03 9.05395867e+03 9.17615974e+03 9.30001015e+03 + 9.42553216e+03 9.55274835e+03 9.68168156e+03 9.81235499e+03 9.94479211e+03 + 1.00790167e+04 1.02150530e+04 1.03529253e+04 1.04926585e+04 1.06342777e+04 + 1.07778082e+04 1.09232761e+04 1.10707073e+04 1.12201283e+04 1.13715661e+04 + 1.15250479e+04 1.16806012e+04 1.18382540e+04 1.19980346e+04 1.21599718e+04 + 1.23240947e+04 1.24904327e+04 1.26590157e+04 1.28298742e+04 1.30030387e+04 + 1.31785404e+04 1.33564108e+04 1.35366820e+04 1.37193863e+04 1.39045565e+04 + 1.40922260e+04 1.42824284e+04 1.44751980e+04 1.46705694e+04 1.48685777e+04 + 1.50692586e+04 1.52726480e+04 1.54787826e+04 1.56876993e+04 1.58994358e+04 + 1.61140301e+04 1.63315208e+04 1.65519470e+04 1.67753482e+04 1.70017647e+04 + 1.72312371e+04 1.74638067e+04 1.76995153e+04 1.79384052e+04 1.81805194e+04 + 1.84259015e+04 1.86745954e+04 1.89266460e+04 1.91820985e+04 1.94409988e+04 + 1.97033935e+04 1.99693297e+04 2.02388553e+04 2.05120186e+04 2.07888689e+04 + 2.10694557e+04 2.13538297e+04 2.16420418e+04 2.19341439e+04 2.22301885e+04 + 2.25302289e+04 2.28343188e+04 2.31425131e+04 2.34548670e+04 2.37714368e+04 + 2.40922793e+04 2.44174522e+04 2.47470140e+04 2.50810239e+04 2.54195419e+04 + 2.57626288e+04 2.61103464e+04 2.64627571e+04 2.68199243e+04 2.71819122e+04 + 2.75487858e+04 2.79206111e+04 2.82974550e+04 2.86793850e+04 2.90664700e+04 + 2.94587795e+04 2.98563839e+04 3.02593548e+04 3.06677646e+04 3.10816867e+04 + 3.15011955e+04 3.19263663e+04 3.23572758e+04 3.27940011e+04 3.32366210e+04 + 3.36852149e+04 3.41398634e+04 3.46006483e+04 3.50676525e+04 3.55409597e+04 + 3.60206552e+04 3.65068251e+04 3.69995569e+04 3.74989390e+04 3.80050613e+04 + 3.85180147e+04 3.90378914e+04 3.95647849e+04 4.00987899e+04 4.06400023e+04 + 4.11885195e+04 4.17444399e+04 4.23078636e+04 4.28788919e+04 4.34576272e+04 + 4.40441738e+04 4.46386370e+04 4.52411236e+04 4.58517419e+04 4.64706018e+04 + 4.70978144e+04 4.77334925e+04 4.83777503e+04 4.90307037e+04 4.96924699e+04 + 5.03631680e+04 5.10429184e+04 5.17318435e+04 5.24300670e+04 5.31377143e+04 + 5.38549128e+04 5.45817913e+04 5.53184804e+04 5.60651126e+04 5.68218221e+04 + 5.75887449e+04 5.83660188e+04 5.91537836e+04 5.99521808e+04 6.07613539e+04 + 6.15814485e+04 6.24126118e+04 6.32549933e+04 6.41087445e+04 6.49740187e+04 + 6.58509715e+04 6.67397605e+04 6.76405454e+04 6.85534882e+04 6.94787530e+04 + 7.04165061e+04 7.13669160e+04 7.23301536e+04 7.33063919e+04 7.42958066e+04 + 7.52985753e+04 7.63148784e+04 7.73448985e+04 7.83888207e+04 7.94468328e+04 + 8.05191248e+04 8.16058895e+04 8.27073222e+04 8.38236210e+04 8.49549864e+04 + 8.61016218e+04 8.72637334e+04 8.84415299e+04 8.96352231e+04 9.08450276e+04 + 9.20711608e+04 9.33138430e+04 9.45732977e+04 9.58497513e+04 9.71434331e+04 + 9.84545757e+04 9.97834147e+04 1.01130189e+05 1.02495141e+05 1.03878515e+05 + 1.05280561e+05 1.06701530e+05 1.08141678e+05 1.09601264e+05 1.11080550e+05 + 1.12579801e+05 1.14099288e+05 1.15639284e+05 1.17200064e+05 1.18781911e+05 + 1.20385107e+05 1.22009942e+05 1.23656707e+05 1.25325699e+05 1.27017217e+05 + 1.28731565e+05 1.30469052e+05 1.32229990e+05 1.34014695e+05 1.35823488e+05 + 1.37656695e+05 1.39514644e+05 1.41397670e+05 1.43306110e+05 1.45240310e+05 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 4.46340243e-06 4.52364487e-06 4.58470040e-06 4.64657999e-06 4.70929477e-06 + 4.77285601e-06 4.83727513e-06 4.90256372e-06 4.96873350e-06 5.03579638e-06 + 5.10376441e-06 5.17264979e-06 5.24246492e-06 5.31322235e-06 5.38493478e-06 + 5.45761512e-06 5.53127642e-06 5.60593193e-06 5.68159506e-06 5.75827941e-06 + 5.83599877e-06 5.91476711e-06 5.99459858e-06 6.07550753e-06 6.15750851e-06 + 6.24061626e-06 6.32484571e-06 6.41021200e-06 6.49673048e-06 6.58441669e-06 + 6.67328641e-06 6.76335560e-06 6.85464044e-06 6.94715736e-06 7.04092298e-06 + 7.13595415e-06 7.23226795e-06 7.32988170e-06 7.42881294e-06 7.52907945e-06 + 7.63069926e-06 7.73369062e-06 7.83807206e-06 7.94386233e-06 8.05108045e-06 + 8.15974569e-06 8.26987759e-06 8.38149593e-06 8.49462078e-06 8.60927247e-06 + 8.72547162e-06 8.84323910e-06 8.96259609e-06 9.08356403e-06 9.20616468e-06 + 9.33042007e-06 9.45635252e-06 9.58398469e-06 9.71333950e-06 9.84444021e-06 + 9.97731039e-06 1.01119739e-05 1.02484550e-05 1.03867781e-05 1.05269682e-05 + 1.06690505e-05 1.08130504e-05 1.09589939e-05 1.11069072e-05 1.12568168e-05 + 1.14087498e-05 1.15627334e-05 1.17187954e-05 1.18769637e-05 1.20372668e-05 + 1.21997335e-05 1.23643930e-05 1.25312749e-05 1.27004092e-05 1.28718263e-05 + 1.30455571e-05 1.32216326e-05 1.34000847e-05 1.35809453e-05 1.37642470e-05 + 1.39500227e-05 1.41383059e-05 1.43291302e-05 1.45225302e-05 1.47185404e-05 + 1.49171962e-05 1.51185332e-05 1.53225877e-05 1.55293963e-05 1.57389962e-05 + 1.59514251e-05 1.61667211e-05 1.63849229e-05 1.66060698e-05 1.68302016e-05 + 1.70573584e-05 1.72875812e-05 1.75209112e-05 1.77573905e-05 1.79970616e-05 + 1.82399675e-05 1.84861519e-05 1.87356591e-05 1.89885338e-05 1.92448216e-05 + 1.95045685e-05 1.97678212e-05 2.00346270e-05 2.03050339e-05 2.05790905e-05 + 2.08568460e-05 2.11383503e-05 2.14236541e-05 2.17128087e-05 2.20058659e-05 + 2.23028786e-05 2.26039000e-05 2.29089843e-05 2.32181863e-05 2.35315616e-05 + 2.38491666e-05 2.41710582e-05 2.44972944e-05 2.48279338e-05 2.51630358e-05 + 2.55026607e-05 2.58468695e-05 2.61957241e-05 2.65492872e-05 2.69076223e-05 + 2.72707938e-05 2.76388671e-05 2.80119082e-05 2.83899842e-05 2.87731632e-05 + 2.91615139e-05 2.95551061e-05 2.99540107e-05 3.03582993e-05 3.07680445e-05 + 3.11833201e-05 3.16042006e-05 3.20307617e-05 3.24630802e-05 3.29012336e-05 + 3.33453008e-05 3.37953615e-05 3.42514967e-05 3.47137883e-05 3.51823195e-05 + 3.56571744e-05 3.61384384e-05 3.66261981e-05 3.71205410e-05 3.76215561e-05 + 3.81293333e-05 3.86439640e-05 3.91655407e-05 3.96941570e-05 4.02299081e-05 + 4.07728902e-05 4.13232010e-05 4.18809392e-05 4.24462053e-05 4.30191007e-05 + 4.35997285e-05 4.41881930e-05 4.47846000e-05 4.53890566e-05 4.60016716e-05 + 4.66225551e-05 4.72518186e-05 4.78895753e-05 4.85359398e-05 4.91910282e-05 + 4.98549583e-05 5.05278495e-05 5.12098227e-05 5.19010004e-05 5.26015070e-05 + 5.33114683e-05 5.40310119e-05 5.47602672e-05 5.54993652e-05 5.62484388e-05 + 5.70076227e-05 5.77770532e-05 5.85568687e-05 5.93472093e-05 6.01482172e-05 + 6.09600363e-05 6.17828124e-05 6.26166936e-05 6.34618296e-05 6.43183724e-05 + 6.51864759e-05 6.60662962e-05 6.69579915e-05 6.78617219e-05 6.87776499e-05 + 6.97059402e-05 7.06467597e-05 7.16002773e-05 7.25666645e-05 7.35460951e-05 + 7.45387450e-05 7.55447926e-05 7.65644189e-05 7.75978070e-05 7.86451428e-05 + 7.97066144e-05 8.07824127e-05 8.18727310e-05 8.29777653e-05 8.40977142e-05 + 8.52327790e-05 8.63831638e-05 8.75490753e-05 8.87307231e-05 8.99283196e-05 + 9.11420799e-05 9.23722224e-05 9.36189681e-05 9.48825411e-05 9.61631685e-05 + 9.74610805e-05 9.87765104e-05 1.00109695e-04 1.01460873e-04 1.02830288e-04 + 1.04218186e-04 1.05624816e-04 1.07050432e-04 1.08495289e-04 1.09959647e-04 + 1.11443770e-04 1.12947924e-04 1.14472379e-04 1.16017410e-04 1.17583294e-04 + 1.19170313e-04 1.20778752e-04 1.22408900e-04 1.24061050e-04 1.25735499e-04 + 1.27432548e-04 1.29152502e-04 1.30895670e-04 1.32662366e-04 1.34452907e-04 + 1.36267615e-04 1.38106815e-04 1.39970840e-04 1.41860023e-04 1.43774704e-04 + 1.45715228e-04 1.47681943e-04 1.49675203e-04 1.51695365e-04 1.53742794e-04 + 1.55817857e-04 1.57920927e-04 1.60052382e-04 1.62212605e-04 1.64401985e-04 + 1.66620914e-04 1.68869793e-04 1.71149024e-04 1.73459019e-04 1.75800191e-04 + 1.78172962e-04 1.80577758e-04 1.83015012e-04 1.85485161e-04 1.87988650e-04 + 1.90525928e-04 1.93097452e-04 1.95703684e-04 1.98345092e-04 2.01022151e-04 + 2.03735342e-04 2.06485153e-04 2.09272078e-04 2.12096618e-04 2.14959281e-04 + 2.17860582e-04 2.20801041e-04 2.23781187e-04 2.26801557e-04 2.29862692e-04 + 2.32965143e-04 2.36109468e-04 2.39296232e-04 2.42526007e-04 2.45799375e-04 + 2.49116923e-04 2.52479249e-04 2.55886955e-04 2.59340655e-04 2.62840970e-04 + 2.66388528e-04 2.69983968e-04 2.73627935e-04 2.77321085e-04 2.81064081e-04 + 2.84857596e-04 2.88702312e-04 2.92598920e-04 2.96548121e-04 3.00550624e-04 + 3.04607148e-04 3.08718424e-04 3.12885189e-04 3.17108193e-04 3.21388195e-04 + 3.25725964e-04 3.30122279e-04 3.34577932e-04 3.39093722e-04 3.43670462e-04 + 3.48308974e-04 3.53010092e-04 3.57774661e-04 3.62603537e-04 3.67497588e-04 + 3.72457694e-04 3.77484747e-04 3.82579649e-04 3.87743318e-04 3.92976680e-04 + 3.98280677e-04 4.03656262e-04 4.09104401e-04 4.14626073e-04 4.20222271e-04 + 4.25894001e-04 4.31642283e-04 4.37468148e-04 4.43372645e-04 4.49356835e-04 + 4.55421794e-04 4.61568611e-04 4.67798392e-04 4.74112255e-04 4.80511337e-04 + 4.86996787e-04 4.93569771e-04 5.00231471e-04 5.06983083e-04 5.13825821e-04 + 5.20760916e-04 5.27789614e-04 5.34913178e-04 5.42132888e-04 5.49450043e-04 + 5.56865957e-04 5.64381964e-04 5.71999414e-04 5.79719676e-04 5.87544139e-04 + 5.95474208e-04 6.03511309e-04 6.11656887e-04 6.19912405e-04 6.28279348e-04 + 6.36759220e-04 6.45353544e-04 6.54063865e-04 6.62891749e-04 6.71838784e-04 + 6.80906576e-04 6.90096755e-04 6.99410975e-04 7.08850908e-04 7.18418252e-04 + 7.28114726e-04 7.37942073e-04 7.47902060e-04 7.57996476e-04 7.68227136e-04 + 7.78595880e-04 7.89104570e-04 7.99755095e-04 8.10549371e-04 8.21489336e-04 + 8.32576958e-04 8.43814230e-04 8.55203170e-04 8.66745827e-04 8.78444275e-04 + 8.90300616e-04 9.02316982e-04 9.14495533e-04 9.26838458e-04 9.39347974e-04 + 9.52026331e-04 9.64875808e-04 9.77898714e-04 9.91097390e-04 1.00447421e-03 + 1.01803157e-03 1.03177192e-03 1.04569772e-03 1.05981148e-03 1.07411573e-03 + 1.08861304e-03 1.10330603e-03 1.11819732e-03 1.13328960e-03 1.14858559e-03 + 1.16408802e-03 1.17979969e-03 1.19572342e-03 1.21186207e-03 1.22821854e-03 + 1.24479578e-03 1.26159676e-03 1.27862450e-03 1.29588206e-03 1.31337255e-03 + 1.33109911e-03 1.34906492e-03 1.36727322e-03 1.38572727e-03 1.40443040e-03 + 1.42338596e-03 1.44259737e-03 1.46206807e-03 1.48180157e-03 1.50180141e-03 + 1.52207119e-03 1.54261455e-03 1.56343518e-03 1.58453683e-03 1.60592328e-03 + 1.62759839e-03 1.64956605e-03 1.67183020e-03 1.69439485e-03 1.71726406e-03 + 1.74044193e-03 1.76393264e-03 1.78774039e-03 1.81186948e-03 1.83632424e-03 + 1.86110907e-03 1.88622841e-03 1.91168679e-03 1.93748878e-03 1.96363902e-03 + 1.99014221e-03 2.01700311e-03 2.04422656e-03 2.07181743e-03 2.09978070e-03 + 2.12812139e-03 2.15684460e-03 2.18595548e-03 2.21545927e-03 2.24536127e-03 + 2.27566685e-03 2.30638148e-03 2.33751065e-03 2.36905998e-03 2.40103512e-03 + 2.43344184e-03 2.46628594e-03 2.49957335e-03 2.53331003e-03 2.56750205e-03 + 2.60215557e-03 2.63727680e-03 2.67287206e-03 2.70894775e-03 2.74551035e-03 + 2.78256644e-03 2.82012268e-03 2.85818580e-03 2.89676267e-03 2.93586021e-03 + 2.97548544e-03 3.01564550e-03 3.05634759e-03 3.09759904e-03 3.13940726e-03 + 3.18177977e-03 3.22472418e-03 3.26824820e-03 3.31235967e-03 3.35706651e-03 + 3.40237675e-03 3.44829855e-03 3.49484016e-03 3.54200993e-03 3.58981635e-03 + 3.63826802e-03 3.68737364e-03 3.73714203e-03 3.78758215e-03 3.83870305e-03 + 3.89051394e-03 3.94302411e-03 3.99624301e-03 4.05018021e-03 4.10484540e-03 + 4.16024840e-03 4.21639917e-03 4.27330781e-03 4.33098454e-03 4.38943974e-03 + 4.44868390e-03 4.50872768e-03 4.56958187e-03 4.63125741e-03 4.69376538e-03 + 4.75711702e-03 4.82132372e-03 4.88639701e-03 4.95234859e-03 5.01919032e-03 + 5.08693421e-03 5.15559244e-03 5.22517735e-03 5.29570145e-03 5.36717740e-03 + 5.43961807e-03 5.51303646e-03 5.58744578e-03 5.66285941e-03 5.73929089e-03 + 5.81675396e-03 5.89526255e-03 5.97483077e-03 6.05547291e-03 6.13720349e-03 + 6.22003718e-03 6.30398887e-03 6.38907366e-03 6.47530683e-03 6.56270389e-03 + 6.65128055e-03 6.74105273e-03 6.83203656e-03 6.92424839e-03 7.01770481e-03 + 7.11242260e-03 7.20841880e-03 7.30571066e-03 7.40431566e-03 7.50425153e-03 + 7.60553623e-03 7.70818798e-03 7.81222521e-03 7.91766662e-03 8.02453118e-03 + 8.13283809e-03 8.24260681e-03 8.35385708e-03 8.46660889e-03 8.58088250e-03 + 8.69669847e-03 8.81407760e-03 8.93304100e-03 9.05361004e-03 9.17580640e-03 + 9.29965204e-03 9.42516922e-03 9.55238051e-03 9.68130876e-03 9.81197715e-03 + 9.94440917e-03 1.00786286e-02 1.02146596e-02 1.03525267e-02 1.04922545e-02 + 1.06338682e-02 1.07773932e-02 1.09228555e-02 1.10702810e-02 1.12196963e-02 + 1.13711283e-02 1.15246041e-02 1.16801514e-02 1.18377981e-02 1.19975726e-02 + 1.21595036e-02 1.23236201e-02 1.24899517e-02 1.26585283e-02 1.28293801e-02 + 1.30025380e-02 1.31780329e-02 1.33558965e-02 1.35361607e-02 1.37188580e-02 + 1.39040211e-02 1.40916833e-02 1.42818784e-02 1.44746406e-02 1.46700045e-02 + 1.48680052e-02 1.50686783e-02 1.52720599e-02 1.54781865e-02 1.56870952e-02 + 1.58988236e-02 1.61134096e-02 1.63308919e-02 1.65513096e-02 1.67747022e-02 + 1.70011100e-02 1.72305736e-02 1.74631342e-02 1.76988337e-02 1.79377144e-02 + 1.81798193e-02 1.84251919e-02 1.86738763e-02 1.89259172e-02 1.91813598e-02 + 1.94402502e-02 1.97026348e-02 1.99685608e-02 2.02380760e-02 2.05112288e-02 + 2.07880684e-02 2.10686444e-02 2.13530074e-02 2.16412084e-02 2.19332993e-02 + 2.22293325e-02 2.25293613e-02 2.28334396e-02 2.31416219e-02 2.34539639e-02 + 2.37705215e-02 2.40913516e-02 2.44165120e-02 2.47460611e-02 2.50800581e-02 + 2.54185630e-02 2.57616368e-02 2.61093410e-02 2.64617381e-02 2.68188916e-02 + 2.71808655e-02 2.75477250e-02 2.79195360e-02 2.82963653e-02 2.86782807e-02 + 2.90653508e-02 2.94576451e-02 2.98552342e-02 3.02581896e-02 3.06665837e-02 + 3.10804898e-02 3.14999825e-02 3.19251370e-02 3.23560298e-02 3.27927384e-02 + 3.32353412e-02 3.36839178e-02 3.41385488e-02 3.45993160e-02 3.50663021e-02 + 3.55395912e-02 3.60192682e-02 3.65054194e-02 3.69981322e-02 3.74974951e-02 + 3.80035979e-02 3.85165315e-02 3.90363882e-02 3.95632614e-02 4.00972458e-02 + 4.06384374e-02 4.11869334e-02 4.17428325e-02 4.23062345e-02 4.28772407e-02 + 4.34559538e-02 4.40424778e-02 4.46369181e-02 4.52393815e-02 4.58499764e-02 + 4.64688124e-02 4.70960009e-02 4.77316545e-02 4.83758875e-02 4.90288157e-02 + 4.96905564e-02 5.03612287e-02 5.10409530e-02 5.17298515e-02 5.24280481e-02 + 5.31356682e-02 5.38528390e-02 5.45796895e-02 5.53163503e-02 5.60629537e-02 + 5.68196341e-02 5.75865273e-02 5.83637713e-02 5.91515058e-02 5.99498722e-02 + 6.07590142e-02 6.15790772e-02 6.24102085e-02 6.32525576e-02 6.41062759e-02 + 6.49715168e-02 6.58484358e-02 6.67371905e-02 6.76379408e-02 6.85508485e-02 + 6.94760777e-02 7.04137946e-02 7.13641679e-02 7.23273684e-02 7.33035692e-02 + 7.42929457e-02 7.52956758e-02 7.63119398e-02 7.73419202e-02 7.83858022e-02 + 7.94437736e-02 8.05160243e-02 8.16027471e-02 8.27041375e-02 8.38203932e-02 + 8.49517151e-02 8.60983064e-02 8.72603732e-02 8.84381243e-02 8.96317716e-02 + 9.08415295e-02 9.20676154e-02 9.33102498e-02 9.45696561e-02 9.58460605e-02 + 9.71396924e-02 9.84507846e-02 9.97795725e-02 1.01126295e-01 1.02491194e-01 + 1.03874515e-01 1.05276507e-01 1.06697422e-01 1.08137514e-01 1.09597044e-01 + 1.11076272e-01 1.12575466e-01 1.14094895e-01 1.15634831e-01 1.17195551e-01 + 1.18777337e-01 1.20380472e-01 1.22005244e-01 1.23651946e-01 1.25320873e-01 + 1.27012326e-01 1.28726608e-01 1.30464028e-01 1.32224898e-01 1.34009535e-01 + 1.35818258e-01 1.37651394e-01 1.39509271e-01 1.41392225e-01 1.43300592e-01 + 1.45234717e-01 1.47194946e-01 1.49181633e-01 1.51195134e-01 1.53235811e-01 + 1.55304031e-01 1.57400166e-01 1.59524592e-01 1.61677692e-01 1.63859852e-01 + 1.66071465e-01 1.68312927e-01 1.70584643e-01 1.72887020e-01 1.75220472e-01 + 1.77585418e-01 1.79982284e-01 1.82411501e-01 1.84873504e-01 1.87368738e-01 + 1.89897649e-01 1.92460693e-01 1.95058331e-01 1.97691028e-01 2.00359259e-01 + 2.03063503e-01 2.05804247e-01 2.08581982e-01 2.11397208e-01 2.14250431e-01 + 2.17142164e-01 2.20072926e-01 2.23043245e-01 2.26053655e-01 2.29104696e-01 + 2.32196916e-01 2.35330873e-01 2.38507128e-01 2.41726253e-01 2.44988826e-01 + 2.48295435e-01 2.51646672e-01 2.55043141e-01 2.58485452e-01 2.61974224e-01 + 2.65510084e-01 2.69093668e-01 2.72725618e-01 2.76406590e-01 2.80137243e-01 + 2.83918248e-01 2.87750286e-01 2.91634045e-01 2.95570223e-01 2.99559527e-01 + 3.03602675e-01 3.07700393e-01 3.11853418e-01 3.16062496e-01 3.20328384e-01 + 3.24651848e-01 3.29033667e-01 3.33474626e-01 3.37975525e-01 3.42537173e-01 + 3.47160389e-01 3.51846004e-01 3.56594862e-01 3.61407814e-01 3.66285727e-01 + 3.71229476e-01 3.76239952e-01 3.81318053e-01 3.86464694e-01 3.91680799e-01 + 3.96967305e-01 4.02325164e-01 4.07755337e-01 4.13258801e-01 4.18836545e-01 + 4.24489572e-01 4.30218897e-01 4.36025552e-01 4.41910578e-01 4.47875035e-01 + 4.53919993e-01 4.60046541e-01 4.66255778e-01 4.72548821e-01 4.78926801e-01 + 4.85390865e-01 4.91942174e-01 4.98581905e-01 5.05311254e-01 5.12131428e-01 + 5.19043653e-01 5.26049173e-01 5.33149246e-01 5.40345149e-01 5.47638174e-01 + 5.55029634e-01 5.62520856e-01 5.70113186e-01 5.77807990e-01 5.85606651e-01 + 5.93510570e-01 6.01521168e-01 6.09639885e-01 6.17868180e-01 6.26207532e-01 + 6.34659440e-01 6.43225423e-01 6.51907022e-01 6.60705795e-01 6.69623325e-01 + 6.78661216e-01 6.87821090e-01 6.97104595e-01 7.06513399e-01 7.16049193e-01 + 7.25713692e-01 7.35508633e-01 7.45435775e-01 7.55496904e-01 7.65693828e-01 + 7.76028379e-01 7.86502415e-01 7.97117820e-01 8.07876500e-01 8.18780390e-01 + 8.29831449e-01 8.41031665e-01 8.52383049e-01 8.63887643e-01 8.75547514e-01 + 8.87364758e-01 8.99341499e-01 9.11479889e-01 9.23782112e-01 9.36250377e-01 + 9.48886926e-01 9.61694030e-01 9.74673991e-01 9.87829143e-01 1.00116185e+00 + 1.01467451e+00 1.02836954e+00 1.04224942e+00 1.05631664e+00 1.07057372e+00 + 1.08502323e+00 1.09966776e+00 1.11450995e+00 1.12955246e+00 1.14479801e+00 + 1.16024932e+00 1.17590918e+00 1.19178039e+00 1.20786583e+00 1.22416836e+00 + 1.24069093e+00 1.25743651e+00 1.27440810e+00 1.29160876e+00 1.30904157e+00 + 1.32670967e+00 1.34461624e+00 1.36276449e+00 1.38115769e+00 1.39979915e+00 + 1.41869220e+00 1.43784026e+00 1.45724675e+00 1.47691518e+00 1.49684907e+00 + 1.51705200e+00 1.53752762e+00 1.55827959e+00 1.57931165e+00 1.60062758e+00 + 1.62223122e+00 1.64412643e+00 1.66631717e+00 1.68880741e+00 1.71160120e+00 + 1.73470264e+00 1.75811589e+00 1.78184513e+00 1.80589465e+00 1.83026877e+00 + 1.85497187e+00 1.88000838e+00 1.90538281e+00 1.93109971e+00 1.95716372e+00 + 1.98357951e+00 2.01035184e+00 2.03748551e+00 2.06498540e+00 2.09285646e+00 + 2.12110369e+00 2.14973218e+00 2.17874706e+00 2.20815356e+00 2.23795696e+00 + 2.26816261e+00 2.29877594e+00 2.32980247e+00 2.36124776e+00 2.39311746e+00 + 2.42541731e+00 2.45815311e+00 2.49133074e+00 2.52495618e+00 2.55903545e+00 + 2.59357469e+00 2.62858010e+00 2.66405799e+00 2.70001472e+00 2.73645675e+00 + 2.77339064e+00 2.81082303e+00 2.84876064e+00 2.88721029e+00 2.92617890e+00 + 2.96567347e+00 3.00570109e+00 3.04626897e+00 3.08738439e+00 3.12905474e+00 + 3.17128752e+00 3.21409031e+00 3.25747081e+00 3.30143682e+00 3.34599623e+00 + 3.39115706e+00 3.43692743e+00 3.48331556e+00 3.53032979e+00 3.57797856e+00 + 3.62627045e+00 3.67521414e+00 3.72481842e+00 3.77509220e+00 3.82604453e+00 + 3.87768456e+00 3.93002158e+00 3.98306499e+00 4.03682432e+00 4.09130924e+00 + 4.14652955e+00 4.20249516e+00 4.25921613e+00 4.31670267e+00 4.37496510e+00 + 4.43401390e+00 4.49385968e+00 4.55451320e+00 4.61598536e+00 4.67828720e+00 + 4.74142993e+00 4.80542490e+00 4.87028361e+00 4.93601771e+00 5.00263902e+00 + 5.07015952e+00 5.13859134e+00 5.20794679e+00 5.27823832e+00 5.34947858e+00 + 5.42168036e+00 5.49485665e+00 5.56902060e+00 5.64418554e+00 5.72036498e+00 + 5.79757261e+00 5.87582231e+00 5.95512814e+00 6.03550436e+00 6.11696542e+00 + 6.19952596e+00 6.28320081e+00 6.36800502e+00 6.45395384e+00 6.54106270e+00 + 6.62934727e+00 6.71882341e+00 6.80950721e+00 6.90141496e+00 6.99456320e+00 + 7.08896865e+00 7.18464829e+00 7.28161932e+00 7.37989916e+00 7.47950548e+00 + 7.58045619e+00 7.68276943e+00 7.78646358e+00 7.89155730e+00 7.99806946e+00 + 8.10601921e+00 8.21542596e+00 8.32630937e+00 8.43868936e+00 8.55258615e+00 + 8.66802020e+00 8.78501227e+00 8.90358337e+00 9.02375482e+00 9.14554822e+00 + 9.26898547e+00 9.39408875e+00 9.52088054e+00 9.64938364e+00 9.77962114e+00 + 9.91161645e+00 1.00453933e+01 1.01809757e+01 1.03183881e+01 1.04576552e+01 + 1.05988019e+01 1.07418537e+01 1.08868362e+01 1.10337756e+01 1.11826982e+01 + 1.13336308e+01 1.14866005e+01 1.16416349e+01 1.17987618e+01 1.19580094e+01 + 1.21194064e+01 1.22829817e+01 1.24487648e+01 1.26167855e+01 1.27870739e+01 + 1.29596608e+01 1.31345770e+01 1.33118541e+01 1.34915238e+01 1.36736186e+01 + 1.38581711e+01 1.40452145e+01 1.42347825e+01 1.44269090e+01 1.46216286e+01 + 1.48189764e+01 1.50189878e+01 1.52216987e+01 1.54271456e+01 1.56353654e+01 + 1.58463956e+01 1.60602740e+01 1.62770391e+01 1.64967299e+01 1.67193859e+01 + 1.69450471e+01 1.71737540e+01 1.74055477e+01 1.76404700e+01 1.78785630e+01 + 1.81198695e+01 1.83644330e+01 1.86122973e+01 1.88635070e+01 1.91181073e+01 + 1.93761439e+01 1.96376633e+01 1.99027124e+01 2.01713388e+01 2.04435909e+01 + 2.07195175e+01 2.09991684e+01 2.12825937e+01 2.15698443e+01 2.18609720e+01 + 2.21560290e+01 2.24550684e+01 2.27581439e+01 2.30653100e+01 2.33766220e+01 + 2.36921357e+01 2.40119079e+01 2.43359960e+01 2.46644584e+01 2.49973540e+01 + 2.53347427e+01 2.56766851e+01 2.60232427e+01 2.63744778e+01 2.67304535e+01 + 2.70912338e+01 2.74568835e+01 2.78274684e+01 2.82030551e+01 2.85837111e+01 + 2.89695047e+01 2.93605055e+01 2.97567835e+01 3.01584101e+01 3.05654574e+01 + 3.09779987e+01 3.13961080e+01 3.18198605e+01 3.22493324e+01 3.26846009e+01 + 3.31257442e+01 3.35728416e+01 3.40259734e+01 3.44852212e+01 3.49506674e+01 + 3.54223957e+01 3.59004909e+01 3.63850390e+01 3.68761270e+01 3.73738432e+01 + 3.78782771e+01 3.83895193e+01 3.89076617e+01 3.94327975e+01 3.99650210e+01 + 4.05044279e+01 4.10511152e+01 4.16051812e+01 4.21667253e+01 4.27358486e+01 + 4.33126533e+01 4.38972432e+01 4.44897232e+01 4.50902000e+01 4.56987813e+01 + 4.63155767e+01 4.69406969e+01 4.75742544e+01 4.82163629e+01 4.88671380e+01 + 4.95266966e+01 5.01951573e+01 5.08726401e+01 5.15592669e+01 5.22551611e+01 + 5.29604478e+01 5.36752537e+01 5.43997073e+01 5.51339389e+01 5.58780803e+01 + 5.66322655e+01 5.73966298e+01 5.81713107e+01 5.89564475e+01 5.97521813e+01 + 6.05586551e+01 6.13760138e+01 6.22044044e+01 6.30439758e+01 6.38948788e+01 + 6.47572664e+01 6.56312937e+01 6.65171177e+01 6.74148977e+01 6.83247950e+01 + 6.92469731e+01 7.01815978e+01 7.11288372e+01 7.20888614e+01 7.30618430e+01 + 7.40479570e+01 7.50473805e+01 7.60602932e+01 7.70868772e+01 7.81273169e+01 + 7.91817995e+01 8.02505143e+01 8.13336536e+01 8.24314120e+01 8.35439868e+01 + 8.46715780e+01 8.58143883e+01 8.69726230e+01 8.81464904e+01 8.93362015e+01 + 9.05419701e+01 9.17640129e+01 9.30025496e+01 9.42578028e+01 9.55299981e+01 + 9.68193642e+01 9.81261329e+01 9.94505390e+01 1.00792821e+02 1.02153219e+02 + 1.03531978e+02 1.04929347e+02 1.06345576e+02 1.07780920e+02 1.09235636e+02 + 1.10709987e+02 1.12204237e+02 1.13718655e+02 1.15253513e+02 1.16809087e+02 + 1.18385656e+02 1.19983505e+02 1.21602919e+02 1.23244191e+02 1.24907615e+02 + 1.26593490e+02 1.28302119e+02 1.30033810e+02 1.31788873e+02 1.33567624e+02 + 1.35370383e+02 1.37197474e+02 1.39049225e+02 1.40925969e+02 1.42828044e+02 + 1.44755790e+02 1.46709556e+02 1.48689691e+02 1.50696552e+02 1.52730500e+02 + 1.54791900e+02 1.56881123e+02 1.58998544e+02 1.61144543e+02 1.63319507e+02 + 1.65523827e+02 1.67757898e+02 1.70022122e+02 1.72316907e+02 1.74642664e+02 + 1.76999812e+02 1.79388774e+02 1.81809980e+02 1.84263865e+02 1.86750870e+02 + 1.89271442e+02 1.91826034e+02 1.94415106e+02 1.97039122e+02 1.99698554e+02 + 2.02393881e+02 2.05125586e+02 2.07894161e+02 2.10700104e+02 2.13543918e+02 + 2.16426115e+02 2.19347213e+02 2.22307737e+02 2.25308219e+02 2.28349199e+02 + 2.31431223e+02 2.34554845e+02 2.37720626e+02 2.40929135e+02 2.44180950e+02 + 2.47476655e+02 2.50816841e+02 2.54202110e+02 2.57633070e+02 2.61110337e+02 + 2.64634537e+02 2.68206303e+02 2.71826277e+02 2.75495110e+02 2.79213461e+02 + 2.82981999e+02 2.86801400e+02 2.90672351e+02 2.94595549e+02 2.98571698e+02 + 3.02601513e+02 3.06685719e+02 3.10825049e+02 3.15020247e+02 3.19272068e+02 + 3.23581275e+02 3.27948644e+02 3.32374959e+02 3.36861016e+02 3.41407621e+02 + 3.46015592e+02 3.50685756e+02 3.55418953e+02 3.60216034e+02 3.65077861e+02 + 3.70005309e+02 3.74999261e+02 3.80060618e+02 3.85190287e+02 3.90389191e+02 + 3.95658264e+02 4.00998455e+02 4.06410721e+02 4.11896037e+02 4.17455388e+02 + 4.23089773e+02 4.28800206e+02 4.34587712e+02 4.40453332e+02 4.46398120e+02 + 4.52423145e+02 4.58529489e+02 4.64718251e+02 4.70990542e+02 4.77347490e+02 + 4.83790238e+02 4.90319943e+02 4.96937780e+02 5.03644937e+02 5.10442621e+02 + 5.17332053e+02 5.24314471e+02 5.31391131e+02 5.38563305e+02 5.45832281e+02 + 5.53199366e+02 5.60665885e+02 5.68233179e+02 5.75902608e+02 5.83675552e+02 + 5.91553407e+02 5.99537589e+02 6.07629534e+02 6.15830695e+02 6.24142548e+02 + 6.32566585e+02 6.41104321e+02 6.49757290e+02 6.58527049e+02 6.67415173e+02 + 6.76423260e+02 6.85552928e+02 6.94805820e+02 7.04183597e+02 7.13687947e+02 + 7.23320576e+02 7.33083216e+02 7.42977623e+02 7.53005574e+02 7.63168873e+02 + 7.73469345e+02 7.83908842e+02 7.94489241e+02 8.05212443e+02 8.16080377e+02 + 8.27094994e+02 8.38258275e+02 8.49572227e+02 8.61038884e+02 8.72660305e+02 + 8.84438580e+02 8.96375827e+02 9.08474190e+02 9.20735844e+02 9.33162994e+02 + 9.45757873e+02 9.58522744e+02 9.71459903e+02 9.84571674e+02 9.97860414e+02 + 1.01132851e+03 1.02497839e+03 1.03881250e+03 1.05283333e+03 1.06704339e+03 + 1.08144525e+03 1.09604149e+03 1.11083474e+03 1.12582765e+03 1.14102292e+03 + 1.15642328e+03 1.17203149e+03 1.18785037e+03 1.20388276e+03 1.22013154e+03 + 1.23659963e+03 1.25328998e+03 1.27020561e+03 1.28734954e+03 1.30472487e+03 + 1.32233471e+03 1.34018223e+03 1.35827064e+03 1.37660318e+03 1.39518316e+03 + 1.41401392e+03 1.43309883e+03 1.45244133e+03 1.47204490e+03 1.49191305e+03 + 1.51204937e+03 1.53245746e+03 1.55314100e+03 1.57410371e+03 1.59534935e+03 + 1.61688174e+03 1.63870475e+03 1.66082231e+03 1.68323839e+03 1.70595702e+03 + 1.72898228e+03 1.75231832e+03 1.77596931e+03 1.79993953e+03 1.82423327e+03 + 1.84885490e+03 1.87380885e+03 1.89909961e+03 1.92473171e+03 1.95070977e+03 + 1.97703845e+03 2.00372249e+03 2.03076669e+03 2.05817590e+03 2.08595505e+03 + 2.11410913e+03 2.14264321e+03 2.17156242e+03 2.20087194e+03 2.23057706e+03 + 2.26068311e+03 2.29119549e+03 2.32211970e+03 2.35346130e+03 2.38522591e+03 + 2.41741924e+03 2.45004709e+03 2.48311532e+03 2.51662987e+03 2.55059676e+03 + 2.58502211e+03 2.61991209e+03 2.65527298e+03 2.69111114e+03 2.72743300e+03 + 2.76424510e+03 2.80155405e+03 2.83936656e+03 2.87768942e+03 2.91652952e+03 + 2.95589385e+03 2.99578948e+03 3.03622358e+03 3.07720342e+03 3.11873636e+03 + 3.16082987e+03 3.20349152e+03 3.24672896e+03 3.29054999e+03 3.33496246e+03 + 3.37997437e+03 3.42559381e+03 3.47182896e+03 3.51868816e+03 3.56617981e+03 + 3.61431245e+03 3.66309474e+03 3.71253544e+03 3.76264344e+03 3.81342775e+03 + 3.86489750e+03 3.91706193e+03 3.96993042e+03 4.02351247e+03 4.07781773e+03 + 4.13285593e+03 4.18863699e+03 4.24517093e+03 4.30246790e+03 4.36053820e+03 + 4.41939228e+03 4.47904072e+03 4.53949422e+03 4.60076367e+03 4.66286006e+03 + 4.72579458e+03 4.78957851e+03 4.85422334e+03 4.91974068e+03 4.98614230e+03 + 5.05344014e+03 5.12164630e+03 5.19077304e+03 5.26083278e+03 5.33183812e+03 + 5.40380181e+03 5.47673679e+03 5.55065618e+03 5.62557325e+03 5.70150148e+03 + 5.77845451e+03 5.85644617e+03 5.93549049e+03 6.01560166e+03 6.09679409e+03 + 6.17908238e+03 6.26248131e+03 6.34700587e+03 6.43267125e+03 6.51949286e+03 + 6.60748630e+03 6.69666739e+03 6.78705215e+03 6.87865683e+03 6.97149790e+03 + 7.06559204e+03 7.16095617e+03 7.25760742e+03 7.35556318e+03 7.45484104e+03 + 7.55545885e+03 7.65743470e+03 7.76078691e+03 7.86553407e+03 7.97169499e+03 + 8.07928877e+03 8.18833474e+03 8.29885250e+03 8.41086191e+03 8.52438311e+03 + 8.63943651e+03 8.75604278e+03 8.87422288e+03 8.99399805e+03 9.11538983e+03 + 9.23842003e+03 9.36311076e+03 9.48948445e+03 9.61756379e+03 9.74737182e+03 + 9.87893187e+03 1.00122676e+04 1.01474029e+04 1.02843622e+04 1.04231700e+04 + 1.05638512e+04 1.07064313e+04 1.08509357e+04 1.09973906e+04 1.11458221e+04 + 1.12962570e+04 1.14487223e+04 1.16032454e+04 1.17598541e+04 1.19185766e+04 + 1.20794414e+04 1.22424773e+04 1.24077137e+04 1.25751803e+04 1.27449072e+04 + 1.29169249e+04 1.30912644e+04 1.32679569e+04 1.34470341e+04 1.36285284e+04 + 1.38124724e+04 1.39988990e+04 1.41878418e+04 1.43793348e+04 1.45734123e+04 + 1.47701093e+04 1.49694611e+04 1.51715036e+04 1.53762730e+04 1.55838062e+04 + 1.57941404e+04 1.60073136e+04 1.62233639e+04 1.64423303e+04 1.66642520e+04 + 1.68891690e+04 1.71171217e+04 1.73481511e+04 1.75822987e+04 1.78196066e+04 + 1.80601174e+04 1.83038743e+04 1.85509213e+04 1.88013026e+04 1.90550634e+04 + 1.93122491e+04 1.95729061e+04 1.98370811e+04 2.01048217e+04 2.03761760e+04 + 2.06511928e+04 2.09299214e+04 2.12124121e+04 2.14987155e+04 2.17888832e+04 + 2.20829672e+04 2.23810205e+04 2.26830966e+04 2.29892498e+04 2.32995352e+04 + 2.36140084e+04 2.39327261e+04 2.42557456e+04 2.45831248e+04 2.49149226e+04 + 2.52511988e+04 2.55920136e+04 2.59374284e+04 2.62875052e+04 2.66423071e+04 + 2.70018976e+04 2.73663416e+04 2.77357045e+04 2.81100526e+04 2.84894533e+04 + 2.88739748e+04 2.92636861e+04 2.96586574e+04 3.00589596e+04 3.04646647e+04 + 3.08758455e+04 3.12925761e+04 3.17149312e+04 3.21429869e+04 3.25768200e+04 + 3.30165086e+04 3.34621316e+04 3.39137692e+04 3.43715026e+04 3.48354139e+04 + 3.53055867e+04 3.57821053e+04 3.62650555e+04 3.67545241e+04 3.72505991e+04 + 3.77533695e+04 3.82629258e+04 3.87793596e+04 3.93027637e+04 3.98332322e+04 + 4.03708604e+04 4.09157449e+04 4.14679838e+04 4.20276762e+04 4.25949227e+04 + 4.31698254e+04 4.37524875e+04 4.43430137e+04 4.49415103e+04 4.55480848e+04 + 4.61628462e+04 4.67859051e+04 4.74173733e+04 4.80573645e+04 4.87059936e+04 + 4.93633772e+04 5.00296335e+04 5.07048823e+04 5.13892449e+04 5.20828443e+04 + 5.27858052e+04 5.34982540e+04 5.42203186e+04 5.49521290e+04 5.56938166e+04 + 5.64455147e+04 5.72073585e+04 5.79794848e+04 5.87620325e+04 5.95551423e+04 + 6.03589566e+04 6.11736200e+04 6.19992789e+04 6.28360817e+04 6.36841788e+04 + 6.45437226e+04 6.54148677e+04 6.62977706e+04 6.71925901e+04 6.80994869e+04 + 6.90186240e+04 6.99501667e+04 7.08942825e+04 7.18511409e+04 7.28209140e+04 + 7.38037762e+04 7.47999040e+04 7.58094765e+04 7.68326752e+04 7.78696840e+04 + 7.89206893e+04 7.99858799e+04 8.10654474e+04 8.21595859e+04 8.32684918e+04 + 8.43923647e+04 8.55314064e+04 8.66858218e+04 8.78558182e+04 8.90416061e+04 + 9.02433986e+04 9.14614116e+04 9.26958640e+04 9.39469779e+04 9.52149780e+04 + 9.65000923e+04 9.78025518e+04 9.91225905e+04 1.00460446e+05 1.01816358e+05 + 1.03190571e+05 1.04583332e+05 1.05994890e+05 1.07425501e+05 1.08875420e+05 + 1.10344909e+05 1.11834232e+05 1.13343656e+05 1.14873452e+05 1.16423897e+05 + 1.17995267e+05 1.19587847e+05 1.21201921e+05 1.22837780e+05 1.24495719e+05 + 1.26176035e+05 1.27879030e+05 1.29605010e+05 1.31354286e+05 1.33127171e+05 + 1.34923985e+05 1.36745051e+05 1.38590696e+05 1.40461251e+05 1.42357053e+05 + 1.44278443e+05 1.46225766e+05 1.48199372e+05 1.50199615e+05 1.52226856e+05 + 1.54281458e+05 1.56363791e+05 1.58474229e+05 1.60613152e+05 1.62780944e+05 + 1.64977995e+05 1.67204699e+05 1.69461457e+05 1.71748674e+05 1.74066762e+05 + 1.76416136e+05 1.78797221e+05 1.81210443e+05 1.83656236e+05 1.86135040e+05 + 1.88647300e+05 1.91193468e+05 1.93774002e+05 1.96389365e+05 1.99040027e+05 + 2.01726466e+05 2.04449163e+05 2.07208608e+05 2.10005298e+05 2.12839735e+05 + 2.15712427e+05 2.18623893e+05 2.21574654e+05 2.24565242e+05 2.27596194e+05 + 2.30668054e+05 2.33781376e+05 2.36936717e+05 2.40134646e+05 2.43375738e+05 + 2.46660575e+05 2.49989747e+05 2.53363852e+05 2.56783498e+05 2.60249299e+05 + 2.63761877e+05 2.67321865e+05 2.70929902e+05 2.74586636e+05 2.78292726e+05 + 2.82048836e+05 2.85855642e+05 2.89713829e+05 2.93624090e+05 2.97587127e+05 + 3.01603654e+05 3.05674391e+05 3.09800071e+05 3.13981435e+05 3.18219235e+05 + 3.22514232e+05 3.26867199e+05 3.31278918e+05 3.35750182e+05 3.40281794e+05 + 3.44874569e+05 3.49529333e+05 3.54246922e+05 3.59028184e+05 3.63873979e+05 + 3.68785178e+05 3.73762662e+05 3.78807328e+05 3.83920082e+05 3.89101842e+05 + 3.94353540e+05 3.99676120e+05 4.05070540e+05 4.10537767e+05 4.16078785e+05 + 4.21694591e+05 4.27386193e+05 4.33154614e+05 4.39000892e+05 4.44926076e+05 + 4.50931233e+05 4.57017441e+05 4.63185794e+05 4.69437402e+05 4.75773387e+05 + 4.82194889e+05 4.88703062e+05 4.95299076e+05 5.01984116e+05 5.08759383e+05 + 5.15626097e+05 5.22585490e+05 5.29638814e+05 5.36787336e+05 5.44032342e+05 + 5.51375134e+05 5.58817031e+05 5.66359371e+05 5.74003510e+05 5.81750821e+05 + 5.89602698e+05 5.97560552e+05 6.05625813e+05 6.13799930e+05 6.22084373e+05 + 6.30480631e+05 6.38990213e+05 6.47614648e+05 6.56355488e+05 6.65214302e+05 + 6.74192684e+05 6.83292246e+05 6.92514626e+05 7.01861479e+05 7.11334487e+05 + 7.20935351e+05 7.30665798e+05 7.40527577e+05 7.50522460e+05 7.60652244e+05 + 7.70918749e+05 7.81323821e+05 7.91869330e+05 8.02557172e+05 8.13389267e+05 + 8.24367562e+05 8.35494032e+05 8.46770675e+05 8.58199518e+05 8.69782617e+05 + 8.81522052e+05 8.93419934e+05 9.05478402e+05 9.17699622e+05 9.30085792e+05 + 9.42639138e+05 9.55361916e+05 9.68256413e+05 9.81324947e+05 9.94569866e+05 + 1.00799355e+06 1.02159842e+06 1.03538691e+06 1.04936150e+06 1.06352471e+06 + 1.07787907e+06 1.09242718e+06 1.10717165e+06 1.12211511e+06 1.13726028e+06 + 1.15260985e+06 1.16816660e+06 1.18393331e+06 1.19991283e+06 1.21610803e+06 + 1.23252181e+06 1.24915713e+06 1.26601697e+06 1.28310437e+06 1.30042240e+06 + 1.31797417e+06 1.33576284e+06 1.35379160e+06 1.37206369e+06 1.39058240e+06 + 1.40935106e+06 1.42837304e+06 1.44765175e+06 1.46719067e+06 1.48699331e+06 + 1.50706323e+06 1.52740402e+06 1.54801936e+06 1.56891294e+06 1.59008852e+06 + 1.61154991e+06 1.63330096e+06 1.65534558e+06 1.67768774e+06 1.70033145e+06 + 1.72328078e+06 1.74653986e+06 1.77011287e+06 1.79400404e+06 1.81821767e+06 + 1.84275811e+06 1.86762977e+06 1.89283713e+06 1.91838471e+06 1.94427710e+06 + 1.51514411e-06 1.53559398e-06 1.55631985e-06 1.57732546e-06 1.59861459e-06 + 1.62019105e-06 1.64205873e-06 1.66422156e-06 1.68668352e-06 1.70944864e-06 + 1.73252103e-06 1.75590483e-06 1.77960423e-06 1.80362351e-06 1.82796697e-06 + 1.85263900e-06 1.87764402e-06 1.90298654e-06 1.92867110e-06 1.95470233e-06 + 1.98108490e-06 2.00782356e-06 2.03492310e-06 2.06238841e-06 2.09022442e-06 + 2.11843613e-06 2.14702861e-06 2.17600701e-06 2.20537652e-06 2.23514243e-06 + 2.26531010e-06 2.29588494e-06 2.32687244e-06 2.35827818e-06 2.39010781e-06 + 2.42236703e-06 2.45506166e-06 2.48819757e-06 2.52178072e-06 2.55581713e-06 + 2.59031293e-06 2.62527433e-06 2.66070759e-06 2.69661910e-06 2.73301530e-06 + 2.76990274e-06 2.80728805e-06 2.84517795e-06 2.88357925e-06 2.92249885e-06 + 2.96194375e-06 3.00192104e-06 3.04243789e-06 3.08350160e-06 3.12511955e-06 + 3.16729922e-06 3.21004818e-06 3.25337412e-06 3.29728483e-06 3.34178821e-06 + 3.38689225e-06 3.43260505e-06 3.47893484e-06 3.52588994e-06 3.57347879e-06 + 3.62170995e-06 3.67059208e-06 3.72013398e-06 3.77034453e-06 3.82123279e-06 + 3.87280787e-06 3.92507907e-06 3.97805577e-06 4.03174749e-06 4.08616389e-06 + 4.14131475e-06 4.19720997e-06 4.25385962e-06 4.31127386e-06 4.36946302e-06 + 4.42843756e-06 4.48820807e-06 4.54878531e-06 4.61018016e-06 4.67240365e-06 + 4.73546697e-06 4.79938146e-06 4.86415859e-06 4.92981003e-06 4.99634755e-06 + 5.06378314e-06 5.13212890e-06 5.20139712e-06 5.27160025e-06 5.34275092e-06 + 5.41486190e-06 5.48794616e-06 5.56201684e-06 5.63708725e-06 5.71317088e-06 + 5.79028141e-06 5.86843270e-06 5.94763880e-06 6.02791394e-06 6.10927255e-06 + 6.19172925e-06 6.27529887e-06 6.35999643e-06 6.44583715e-06 6.53283646e-06 + 6.62101000e-06 6.71037362e-06 6.80094337e-06 6.89273554e-06 6.98576663e-06 + 7.08005335e-06 7.17561266e-06 7.27246174e-06 7.37061798e-06 7.47009904e-06 + 7.57092278e-06 7.67310735e-06 7.77667110e-06 7.88163264e-06 7.98801085e-06 + 8.09582484e-06 8.20509399e-06 8.31583795e-06 8.42807662e-06 8.54183017e-06 + 8.65711905e-06 8.77396398e-06 8.89238596e-06 9.01240628e-06 9.13404651e-06 + 9.25732852e-06 9.38227446e-06 9.50890680e-06 9.63724829e-06 9.76732200e-06 + 9.89915131e-06 1.00327599e-05 1.01681718e-05 1.03054114e-05 1.04445033e-05 + 1.05854725e-05 1.07283444e-05 1.08731446e-05 1.10198992e-05 1.11686345e-05 + 1.13193773e-05 1.14721546e-05 1.16269940e-05 1.17839233e-05 1.19429706e-05 + 1.21041646e-05 1.22675342e-05 1.24331089e-05 1.26009182e-05 1.27709925e-05 + 1.29433623e-05 1.31180586e-05 1.32951127e-05 1.34745565e-05 1.36564223e-05 + 1.38407427e-05 1.40275509e-05 1.42168804e-05 1.44087653e-05 1.46032400e-05 + 1.48003396e-05 1.50000995e-05 1.52025554e-05 1.54077440e-05 1.56157019e-05 + 1.58264667e-05 1.60400761e-05 1.62565686e-05 1.64759832e-05 1.66983591e-05 + 1.69237365e-05 1.71521557e-05 1.73836580e-05 1.76182848e-05 1.78560784e-05 + 1.80970814e-05 1.83413373e-05 1.85888899e-05 1.88397837e-05 1.90940638e-05 + 1.93517759e-05 1.96129664e-05 1.98776821e-05 2.01459707e-05 2.04178804e-05 + 2.06934601e-05 2.09727592e-05 2.12558280e-05 2.15427174e-05 2.18334790e-05 + 2.21281649e-05 2.24268282e-05 2.27295226e-05 2.30363024e-05 2.33472229e-05 + 2.36623398e-05 2.39817098e-05 2.43053904e-05 2.46334396e-05 2.49659166e-05 + 2.53028810e-05 2.56443934e-05 2.59905151e-05 2.63413085e-05 2.66968365e-05 + 2.70571631e-05 2.74223530e-05 2.77924718e-05 2.81675861e-05 2.85477634e-05 + 2.89330718e-05 2.93235808e-05 2.97193605e-05 3.01204820e-05 3.05270174e-05 + 3.09390399e-05 3.13566233e-05 3.17798429e-05 3.22087747e-05 3.26434958e-05 + 3.30840843e-05 3.35306194e-05 3.39831813e-05 3.44418515e-05 3.49067124e-05 + 3.53778474e-05 3.58553414e-05 3.63392801e-05 3.68297505e-05 3.73268407e-05 + 3.78306402e-05 3.83412395e-05 3.88587303e-05 3.93832056e-05 3.99147598e-05 + 4.04534884e-05 4.09994881e-05 4.15528573e-05 4.21136952e-05 4.26821027e-05 + 4.32581821e-05 4.38420367e-05 4.44337716e-05 4.50334932e-05 4.56413092e-05 + 4.62573288e-05 4.68816629e-05 4.75144236e-05 4.81557246e-05 4.88056813e-05 + 4.94644104e-05 5.01320304e-05 5.08086612e-05 5.14944245e-05 5.21894435e-05 + 5.28938432e-05 5.36077501e-05 5.43312927e-05 5.50646008e-05 5.58078064e-05 + 5.65610431e-05 5.73244461e-05 5.80981528e-05 5.88823022e-05 5.96770352e-05 + 6.04824947e-05 6.12988255e-05 6.21261743e-05 6.29646898e-05 6.38145227e-05 + 6.46758258e-05 6.55487539e-05 6.64334638e-05 6.73301147e-05 6.82388677e-05 + 6.91598861e-05 7.00933354e-05 7.10393835e-05 7.19982003e-05 7.29699583e-05 + 7.39548321e-05 7.49529987e-05 7.59646376e-05 7.69899305e-05 7.80290617e-05 + 7.90822181e-05 8.01495889e-05 8.12313660e-05 8.23277438e-05 8.34389194e-05 + 8.45650925e-05 8.57064656e-05 8.68632437e-05 8.80356348e-05 8.92238497e-05 + 9.04281018e-05 9.16486078e-05 9.28855869e-05 9.41392614e-05 9.54098568e-05 + 9.66976013e-05 9.80027266e-05 9.93254670e-05 1.00666060e-04 1.02024748e-04 + 1.03401773e-04 1.04797385e-04 1.06211833e-04 1.07645371e-04 1.09098258e-04 + 1.10570755e-04 1.12063126e-04 1.13575639e-04 1.15108567e-04 1.16662184e-04 + 1.18236771e-04 1.19832610e-04 1.21449988e-04 1.23089195e-04 1.24750527e-04 + 1.26434282e-04 1.28140763e-04 1.29870275e-04 1.31623131e-04 1.33399646e-04 + 1.35200138e-04 1.37024931e-04 1.38874353e-04 1.40748737e-04 1.42648419e-04 + 1.44573741e-04 1.46525050e-04 1.48502695e-04 1.50507032e-04 1.52538422e-04 + 1.54597229e-04 1.56683824e-04 1.58798582e-04 1.60941883e-04 1.63114112e-04 + 1.65315659e-04 1.67546920e-04 1.69808297e-04 1.72100196e-04 1.74423028e-04 + 1.76777212e-04 1.79163169e-04 1.81581330e-04 1.84032129e-04 1.86516007e-04 + 1.89033409e-04 1.91584788e-04 1.94170603e-04 1.96791319e-04 1.99447407e-04 + 2.02139344e-04 2.04867614e-04 2.07632707e-04 2.10435121e-04 2.13275359e-04 + 2.16153931e-04 2.19071356e-04 2.22028156e-04 2.25024865e-04 2.28062020e-04 + 2.31140168e-04 2.34259861e-04 2.37421661e-04 2.40626136e-04 2.43873861e-04 + 2.47165421e-04 2.50501406e-04 2.53882418e-04 2.57309063e-04 2.60781957e-04 + 2.64301725e-04 2.67868999e-04 2.71484421e-04 2.75148639e-04 2.78862314e-04 + 2.82626112e-04 2.86440710e-04 2.90306793e-04 2.94225057e-04 2.98196206e-04 + 3.02220953e-04 3.06300022e-04 3.10434146e-04 3.14624068e-04 3.18870542e-04 + 3.23174330e-04 3.27536206e-04 3.31956954e-04 3.36437370e-04 3.40978257e-04 + 3.45580432e-04 3.50244723e-04 3.54971968e-04 3.59763016e-04 3.64618729e-04 + 3.69539979e-04 3.74527651e-04 3.79582642e-04 3.84705860e-04 3.89898226e-04 + 3.95160673e-04 4.00494147e-04 4.05899607e-04 4.11378024e-04 4.16930384e-04 + 4.22557683e-04 4.28260934e-04 4.34041162e-04 4.39899405e-04 4.45836717e-04 + 4.51854164e-04 4.57952829e-04 4.64133808e-04 4.70398211e-04 4.76747164e-04 + 4.83181809e-04 4.89703302e-04 4.96312816e-04 5.03011539e-04 5.09800673e-04 + 5.16681441e-04 5.23655078e-04 5.30722838e-04 5.37885992e-04 5.45145826e-04 + 5.52503646e-04 5.59960775e-04 5.67518552e-04 5.75178336e-04 5.82941505e-04 + 5.90809452e-04 5.98783593e-04 6.06865361e-04 6.15056208e-04 6.23357607e-04 + 6.31771050e-04 6.40298049e-04 6.48940137e-04 6.57698866e-04 6.66575812e-04 + 6.75572570e-04 6.84690757e-04 6.93932012e-04 7.03297995e-04 7.12790392e-04 + 7.22410907e-04 7.32161269e-04 7.42043233e-04 7.52058572e-04 7.62209089e-04 + 7.72496607e-04 7.82922975e-04 7.93490068e-04 8.04199785e-04 8.15054050e-04 + 8.26054815e-04 8.37204057e-04 8.48503780e-04 8.59956016e-04 8.71562821e-04 + 8.83326284e-04 8.95248518e-04 9.07331666e-04 9.19577900e-04 9.31989421e-04 + 9.44568460e-04 9.57317278e-04 9.70238166e-04 9.83333448e-04 9.96605476e-04 + 1.01005664e-03 1.02368935e-03 1.03750606e-03 1.05150925e-03 1.06570145e-03 + 1.08008519e-03 1.09466308e-03 1.10943772e-03 1.12441177e-03 1.13958793e-03 + 1.15496892e-03 1.17055751e-03 1.18635650e-03 1.20236872e-03 1.21859707e-03 + 1.23504444e-03 1.25171381e-03 1.26860816e-03 1.28573053e-03 1.30308401e-03 + 1.32067170e-03 1.33849678e-03 1.35656243e-03 1.37487193e-03 1.39342854e-03 + 1.41223561e-03 1.43129652e-03 1.45061470e-03 1.47019361e-03 1.49003678e-03 + 1.51014777e-03 1.53053020e-03 1.55118773e-03 1.57212407e-03 1.59334299e-03 + 1.61484830e-03 1.63664387e-03 1.65873361e-03 1.68112150e-03 1.70381156e-03 + 1.72680786e-03 1.75011455e-03 1.77373580e-03 1.79767587e-03 1.82193906e-03 + 1.84652973e-03 1.87145230e-03 1.89671124e-03 1.92231111e-03 1.94825650e-03 + 1.97455207e-03 2.00120255e-03 2.02821273e-03 2.05558747e-03 2.08333169e-03 + 2.11145037e-03 2.13994856e-03 2.16883140e-03 2.19810406e-03 2.22777182e-03 + 2.25784000e-03 2.28831402e-03 2.31919934e-03 2.35050151e-03 2.38222618e-03 + 2.41437903e-03 2.44696584e-03 2.47999248e-03 2.51346488e-03 2.54738906e-03 + 2.58177111e-03 2.61661721e-03 2.65193363e-03 2.68772672e-03 2.72400290e-03 + 2.76076870e-03 2.79803073e-03 2.83579568e-03 2.87407035e-03 2.91286161e-03 + 2.95217643e-03 2.99202189e-03 3.03240514e-03 3.07333344e-03 3.11481415e-03 + 3.15685472e-03 3.19946271e-03 3.24264578e-03 3.28641170e-03 3.33076832e-03 + 3.37572362e-03 3.42128568e-03 3.46746269e-03 3.51426295e-03 3.56169487e-03 + 3.60976698e-03 3.65848792e-03 3.70786645e-03 3.75791143e-03 3.80863187e-03 + 3.86003689e-03 3.91213571e-03 3.96493772e-03 4.01845239e-03 4.07268934e-03 + 4.12765833e-03 4.18336924e-03 4.23983207e-03 4.29705699e-03 4.35505426e-03 + 4.41383433e-03 4.47340774e-03 4.53378522e-03 4.59497761e-03 4.65699591e-03 + 4.71985128e-03 4.78355500e-03 4.84811852e-03 4.91355347e-03 4.97987158e-03 + 5.04708479e-03 5.11520517e-03 5.18424497e-03 5.25421660e-03 5.32513264e-03 + 5.39700583e-03 5.46984909e-03 5.54367551e-03 5.61849837e-03 5.69433110e-03 + 5.77118736e-03 5.84908093e-03 5.92802584e-03 6.00803626e-03 6.08912659e-03 + 6.17131138e-03 6.25460542e-03 6.33902369e-03 6.42458134e-03 6.51129376e-03 + 6.59917653e-03 6.68824546e-03 6.77851655e-03 6.87000603e-03 6.96273034e-03 + 7.05670614e-03 7.15195034e-03 7.24848004e-03 7.34631260e-03 7.44546561e-03 + 7.54595688e-03 7.64780448e-03 7.75102672e-03 7.85564214e-03 7.96166955e-03 + 8.06912802e-03 8.17803685e-03 8.28841561e-03 8.40028416e-03 8.51366260e-03 + 8.62857130e-03 8.74503092e-03 8.86306239e-03 8.98268694e-03 9.10392605e-03 + 9.22680152e-03 9.35133544e-03 9.47755019e-03 9.60546846e-03 9.73511324e-03 + 9.86650783e-03 9.99967585e-03 1.01346412e-02 1.02714283e-02 1.04100615e-02 + 1.05505658e-02 1.06929666e-02 1.08372893e-02 1.09835599e-02 1.11318048e-02 + 1.12820505e-02 1.14343240e-02 1.15886528e-02 1.17450646e-02 1.19035875e-02 + 1.20642499e-02 1.22270808e-02 1.23921094e-02 1.25593654e-02 1.27288789e-02 + 1.29006802e-02 1.30748004e-02 1.32512707e-02 1.34301228e-02 1.36113888e-02 + 1.37951014e-02 1.39812936e-02 1.41699987e-02 1.43612509e-02 1.45550843e-02 + 1.47515340e-02 1.49506351e-02 1.51524234e-02 1.53569353e-02 1.55642075e-02 + 1.57742773e-02 1.59871823e-02 1.62029609e-02 1.64216519e-02 1.66432945e-02 + 1.68679287e-02 1.70955947e-02 1.73263336e-02 1.75601867e-02 1.77971961e-02 + 1.80374044e-02 1.82808548e-02 1.85275911e-02 1.87776576e-02 1.90310992e-02 + 1.92879614e-02 1.95482906e-02 1.98121334e-02 2.00795373e-02 2.03505503e-02 + 2.06252212e-02 2.09035994e-02 2.11857347e-02 2.14716781e-02 2.17614808e-02 + 2.20551950e-02 2.23528734e-02 2.26545697e-02 2.29603378e-02 2.32702330e-02 + 2.35843107e-02 2.39026276e-02 2.42252408e-02 2.45522083e-02 2.48835889e-02 + 2.52194421e-02 2.55598283e-02 2.59048087e-02 2.62544453e-02 2.66088009e-02 + 2.69679393e-02 2.73319249e-02 2.77008232e-02 2.80747006e-02 2.84536242e-02 + 2.88376620e-02 2.92268833e-02 2.96213578e-02 3.00211566e-02 3.04263514e-02 + 3.08370152e-02 3.12532216e-02 3.16750456e-02 3.21025629e-02 3.25358505e-02 + 3.29749861e-02 3.34200487e-02 3.38711183e-02 3.43282759e-02 3.47916039e-02 + 3.52611853e-02 3.57371047e-02 3.62194475e-02 3.67083006e-02 3.72037516e-02 + 3.77058898e-02 3.82148053e-02 3.87305896e-02 3.92533354e-02 3.97831368e-02 + 4.03200888e-02 4.08642881e-02 4.14158324e-02 4.19748209e-02 4.25413541e-02 + 4.31155337e-02 4.36974630e-02 4.42872467e-02 4.48849906e-02 4.54908022e-02 + 4.61047905e-02 4.67270657e-02 4.73577398e-02 4.79969261e-02 4.86447395e-02 + 4.93012964e-02 4.99667148e-02 5.06411144e-02 5.13246163e-02 5.20173434e-02 + 5.27194202e-02 5.34309730e-02 5.41521296e-02 5.48830196e-02 5.56237744e-02 + 5.63745271e-02 5.71354128e-02 5.79065681e-02 5.86881317e-02 5.94802440e-02 + 6.02830474e-02 6.10966863e-02 6.19213068e-02 6.27570572e-02 6.36040877e-02 + 6.44625506e-02 6.53326001e-02 6.62143926e-02 6.71080867e-02 6.80138429e-02 + 6.89318241e-02 6.98621953e-02 7.08051237e-02 7.17607788e-02 7.27293323e-02 + 7.37109584e-02 7.47058334e-02 7.57141363e-02 7.67360482e-02 7.77717528e-02 + 7.88214363e-02 7.98852873e-02 8.09634971e-02 8.20562595e-02 8.31637709e-02 + 8.42862303e-02 8.54238396e-02 8.65768031e-02 8.77453282e-02 8.89296248e-02 + 9.01299058e-02 9.13463870e-02 9.25792870e-02 9.38288274e-02 9.50952329e-02 + 9.63787310e-02 9.76795524e-02 9.89979310e-02 1.00334104e-01 1.01688311e-01 + 1.03060795e-01 1.04451805e-01 1.05861588e-01 1.07290399e-01 1.08738495e-01 + 1.10206136e-01 1.11693586e-01 1.13201111e-01 1.14728984e-01 1.16277479e-01 + 1.17846873e-01 1.19437449e-01 1.21049494e-01 1.22683296e-01 1.24339149e-01 + 1.26017352e-01 1.27718205e-01 1.29442015e-01 1.31189090e-01 1.32959747e-01 + 1.34754301e-01 1.36573077e-01 1.38416400e-01 1.40284603e-01 1.42178021e-01 + 1.44096994e-01 1.46041868e-01 1.48012992e-01 1.50010719e-01 1.52035411e-01 + 1.54087429e-01 1.56167143e-01 1.58274927e-01 1.60411160e-01 1.62576226e-01 + 1.64770513e-01 1.66994417e-01 1.69248337e-01 1.71532678e-01 1.73847850e-01 + 1.76194270e-01 1.78572360e-01 1.80982547e-01 1.83425264e-01 1.85900951e-01 + 1.88410051e-01 1.90953017e-01 1.93530306e-01 1.96142380e-01 1.98789709e-01 + 2.01472769e-01 2.04192042e-01 2.06948017e-01 2.09741189e-01 2.12572061e-01 + 2.15441141e-01 2.18348945e-01 2.21295996e-01 2.24282822e-01 2.27309962e-01 + 2.30377959e-01 2.33487365e-01 2.36638739e-01 2.39832646e-01 2.43069662e-01 + 2.46350367e-01 2.49675352e-01 2.53045214e-01 2.56460560e-01 2.59922002e-01 + 2.63430163e-01 2.66985673e-01 2.70589173e-01 2.74241308e-01 2.77942737e-01 + 2.81694123e-01 2.85496142e-01 2.89349477e-01 2.93254820e-01 2.97212873e-01 + 3.01224348e-01 3.05289966e-01 3.09410457e-01 3.13586563e-01 3.17819033e-01 + 3.22108629e-01 3.26456121e-01 3.30862292e-01 3.35327932e-01 3.39853846e-01 + 3.44440845e-01 3.49089755e-01 3.53801411e-01 3.58576660e-01 3.63416361e-01 + 3.68321383e-01 3.73292608e-01 3.78330929e-01 3.83437252e-01 3.88612496e-01 + 3.93857590e-01 3.99173476e-01 4.04561111e-01 4.10021463e-01 4.15555512e-01 + 4.21164255e-01 4.26848699e-01 4.32609866e-01 4.38448791e-01 4.44366524e-01 + 4.50364128e-01 4.56442682e-01 4.62603278e-01 4.68847024e-01 4.75175041e-01 + 4.81588467e-01 4.88088455e-01 4.94676173e-01 5.01352806e-01 5.08119553e-01 + 5.14977630e-01 5.21928271e-01 5.28972724e-01 5.36112257e-01 5.43348151e-01 + 5.50681708e-01 5.58114246e-01 5.65647101e-01 5.73281626e-01 5.81019194e-01 + 5.88861197e-01 5.96809042e-01 6.04864160e-01 6.13027997e-01 6.21302021e-01 + 6.29687720e-01 6.38186600e-01 6.46800189e-01 6.55530036e-01 6.64377709e-01 + 6.73344799e-01 6.82432918e-01 6.91643699e-01 7.00978797e-01 7.10439891e-01 + 7.20028682e-01 7.29746892e-01 7.39596268e-01 7.49578581e-01 7.59695625e-01 + 7.69949219e-01 7.80341205e-01 7.90873452e-01 8.01547852e-01 8.12366325e-01 + 8.23330813e-01 8.34443290e-01 8.45705751e-01 8.57120221e-01 8.68688753e-01 + 8.80413424e-01 8.92296343e-01 9.04339645e-01 9.16545496e-01 9.28916089e-01 + 9.41453647e-01 9.54160425e-01 9.67038705e-01 9.80090803e-01 9.93319066e-01 + 1.00672587e+00 1.02031362e+00 1.03408477e+00 1.04804179e+00 1.06218719e+00 + 1.07652350e+00 1.09105331e+00 1.10577923e+00 1.12070391e+00 1.13583002e+00 + 1.15116029e+00 1.16669748e+00 1.18244437e+00 1.19840379e+00 1.21457862e+00 + 1.23097175e+00 1.24758615e+00 1.26442479e+00 1.28149070e+00 1.29878695e+00 + 1.31631665e+00 1.33408294e+00 1.35208903e+00 1.37033814e+00 1.38883356e+00 + 1.40757862e+00 1.42657667e+00 1.44583114e+00 1.46534549e+00 1.48512323e+00 + 1.50516790e+00 1.52548311e+00 1.54607252e+00 1.56693983e+00 1.58808878e+00 + 1.60952317e+00 1.63124687e+00 1.65326377e+00 1.67557783e+00 1.69819306e+00 + 1.72111354e+00 1.74434336e+00 1.76788672e+00 1.79174785e+00 1.81593103e+00 + 1.84044061e+00 1.86528099e+00 1.89045664e+00 1.91597209e+00 1.94183192e+00 + 1.96804078e+00 1.99460338e+00 2.02152449e+00 2.04880896e+00 2.07646169e+00 + 2.10448764e+00 2.13289186e+00 2.16167945e+00 2.19085559e+00 2.22042551e+00 + 2.25039454e+00 2.28076806e+00 2.31155154e+00 2.34275049e+00 2.37437054e+00 + 2.40641736e+00 2.43889672e+00 2.47181445e+00 2.50517647e+00 2.53898878e+00 + 2.57325745e+00 2.60798864e+00 2.64318860e+00 2.67886366e+00 2.71502022e+00 + 2.75166478e+00 2.78880393e+00 2.82644435e+00 2.86459281e+00 2.90325615e+00 + 2.94244133e+00 2.98215539e+00 3.02240547e+00 3.06319880e+00 3.10454272e+00 + 3.14644466e+00 3.18891215e+00 3.23195282e+00 3.27557441e+00 3.31978476e+00 + 3.36459182e+00 3.41000363e+00 3.45602837e+00 3.50267430e+00 3.54994981e+00 + 3.59786340e+00 3.64642368e+00 3.69563937e+00 3.74551933e+00 3.79607251e+00 + 3.84730801e+00 3.89923504e+00 3.95186292e+00 4.00520112e+00 4.05925923e+00 + 4.11404695e+00 4.16957414e+00 4.22585079e+00 4.28288699e+00 4.34069302e+00 + 4.39927925e+00 4.45865622e+00 4.51883459e+00 4.57982520e+00 4.64163899e+00 + 4.70428708e+00 4.76778073e+00 4.83213135e+00 4.89735051e+00 4.96344994e+00 + 5.03044150e+00 5.09833725e+00 5.16714939e+00 5.23689028e+00 5.30757246e+00 + 5.37920864e+00 5.45181169e+00 5.52539466e+00 5.59997078e+00 5.67555346e+00 + 5.75215627e+00 5.82979298e+00 5.90847756e+00 5.98822414e+00 6.06904706e+00 + 6.15096084e+00 6.23398021e+00 6.31812010e+00 6.40339561e+00 6.48982209e+00 + 6.57741507e+00 6.66619028e+00 6.75616369e+00 6.84735147e+00 6.93977001e+00 + 7.03343592e+00 7.12836604e+00 7.22457742e+00 7.32208737e+00 7.42091341e+00 + 7.52107330e+00 7.62258505e+00 7.72546690e+00 7.82973734e+00 7.93541512e+00 + 8.04251923e+00 8.15106892e+00 8.26108370e+00 8.37258335e+00 8.48558791e+00 + 8.60011769e+00 8.71619327e+00 8.83383553e+00 8.95306559e+00 9.07390491e+00 + 9.19637518e+00 9.32049844e+00 9.44629699e+00 9.57379343e+00 9.70301069e+00 + 9.83397200e+00 9.96670088e+00 1.01012212e+01 1.02375571e+01 1.03757332e+01 + 1.05157742e+01 1.06577054e+01 1.08015522e+01 1.09473405e+01 1.10950965e+01 + 1.12448467e+01 1.13966182e+01 1.15504380e+01 1.17063340e+01 1.18643341e+01 + 1.20244668e+01 1.21867607e+01 1.23512451e+01 1.25179496e+01 1.26869041e+01 + 1.28581389e+01 1.30316849e+01 1.32075732e+01 1.33858355e+01 1.35665038e+01 + 1.37496106e+01 1.39351888e+01 1.41232717e+01 1.43138932e+01 1.45070874e+01 + 1.47028892e+01 1.49013338e+01 1.51024567e+01 1.53062942e+01 1.55128829e+01 + 1.57222599e+01 1.59344629e+01 1.61495300e+01 1.63674998e+01 1.65884115e+01 + 1.68123049e+01 1.70392202e+01 1.72691982e+01 1.75022801e+01 1.77385080e+01 + 1.79779242e+01 1.82205718e+01 1.84664944e+01 1.87157363e+01 1.89683421e+01 + 1.92243574e+01 1.94838281e+01 1.97468008e+01 2.00133229e+01 2.02834423e+01 + 2.05572074e+01 2.08346676e+01 2.11158726e+01 2.14008730e+01 2.16897201e+01 + 2.19824657e+01 2.22791625e+01 2.25798639e+01 2.28846237e+01 2.31934970e+01 + 2.35065390e+01 2.38238062e+01 2.41453556e+01 2.44712449e+01 2.48015327e+01 + 2.51362784e+01 2.54755421e+01 2.58193849e+01 2.61678685e+01 2.65210556e+01 + 2.68790097e+01 2.72417950e+01 2.76094769e+01 2.79821213e+01 2.83597954e+01 + 2.87425669e+01 2.91305046e+01 2.95236783e+01 2.99221587e+01 3.03260174e+01 + 3.07353269e+01 3.11501609e+01 3.15705939e+01 3.19967014e+01 3.24285601e+01 + 3.28662476e+01 3.33098426e+01 3.37594247e+01 3.42150749e+01 3.46768749e+01 + 3.51449079e+01 3.56192579e+01 3.61000102e+01 3.65872511e+01 3.70810684e+01 + 3.75815507e+01 3.80887880e+01 3.86028714e+01 3.91238935e+01 3.96519477e+01 + 4.01871291e+01 4.07295339e+01 4.12792594e+01 4.18364046e+01 4.24010695e+01 + 4.29733558e+01 4.35533661e+01 4.41412049e+01 4.47369777e+01 4.53407916e+01 + 4.59527552e+01 4.65729784e+01 4.72015728e+01 4.78386513e+01 4.84843284e+01 + 4.91387202e+01 4.98019444e+01 5.04741200e+01 5.11553680e+01 5.18458108e+01 + 5.25455725e+01 5.32547788e+01 5.39735573e+01 5.47020371e+01 5.54403492e+01 + 5.61886263e+01 5.69470028e+01 5.77156152e+01 5.84946015e+01 5.92841017e+01 + 6.00842578e+01 6.08952136e+01 6.17171149e+01 6.25501093e+01 6.33943466e+01 + 6.42499786e+01 6.51171590e+01 6.59960438e+01 6.68867908e+01 6.77895602e+01 + 6.87045143e+01 6.96318175e+01 7.05716365e+01 7.15241402e+01 7.24894998e+01 + 7.34678888e+01 7.44594832e+01 7.54644611e+01 7.64830031e+01 7.75152924e+01 + 7.85615144e+01 7.96218573e+01 8.06965116e+01 8.17856705e+01 8.28895297e+01 + 8.40082878e+01 8.51421456e+01 8.62913071e+01 8.74559788e+01 8.86363701e+01 + 8.98326931e+01 9.10451628e+01 9.22739972e+01 9.35194171e+01 9.47816465e+01 + 9.60609121e+01 9.73574439e+01 9.86714750e+01 1.00003242e+02 1.01352983e+02 + 1.02720942e+02 1.04107364e+02 1.05512498e+02 1.06936598e+02 1.08379919e+02 + 1.09842720e+02 1.11325265e+02 1.12827819e+02 1.14350653e+02 1.15894041e+02 + 1.17458261e+02 1.19043592e+02 1.20650320e+02 1.22278735e+02 1.23929128e+02 + 1.25601797e+02 1.27297041e+02 1.29015166e+02 1.30756481e+02 1.32521298e+02 + 1.34309935e+02 1.36122713e+02 1.37959958e+02 1.39822000e+02 1.41709174e+02 + 1.43621820e+02 1.45560280e+02 1.47524903e+02 1.49516044e+02 1.51534058e+02 + 1.53579310e+02 1.55652166e+02 1.57752999e+02 1.59882188e+02 1.62040114e+02 + 1.64227166e+02 1.66443736e+02 1.68690223e+02 1.70967031e+02 1.73274569e+02 + 1.75613251e+02 1.77983499e+02 1.80385738e+02 1.82820400e+02 1.85287923e+02 + 1.87788750e+02 1.90323330e+02 1.92892119e+02 1.95495580e+02 1.98134179e+02 + 2.00808391e+02 2.03518697e+02 2.06265584e+02 2.09049546e+02 2.11871083e+02 + 2.14730702e+02 2.17628917e+02 2.20566249e+02 2.23543226e+02 2.26560384e+02 + 2.29618264e+02 2.32717416e+02 2.35858398e+02 2.39041773e+02 2.42268114e+02 + 2.45538001e+02 2.48852022e+02 2.52210771e+02 2.55614854e+02 2.59064882e+02 + 2.62561474e+02 2.66105260e+02 2.69696877e+02 2.73336969e+02 2.77026192e+02 + 2.80765207e+02 2.84554689e+02 2.88395317e+02 2.92287781e+02 2.96232783e+02 + 3.00231029e+02 3.04283240e+02 3.08390144e+02 3.12552478e+02 3.16770992e+02 + 3.21046442e+02 3.25379599e+02 3.29771239e+02 3.34222154e+02 3.38733142e+02 + 3.43305015e+02 3.47938595e+02 3.52634714e+02 3.57394216e+02 3.62217957e+02 + 3.67106805e+02 3.72061636e+02 3.77083343e+02 3.82172828e+02 3.87331006e+02 + 3.92558803e+02 3.97857160e+02 4.03227029e+02 4.08669374e+02 4.14185175e+02 + 4.19775422e+02 4.25441121e+02 4.31183290e+02 4.37002961e+02 4.42901179e+02 + 4.48879006e+02 4.54937515e+02 4.61077796e+02 4.67300952e+02 4.73608102e+02 + 4.80000379e+02 4.86478933e+02 4.93044927e+02 4.99699543e+02 5.06443976e+02 + 5.13279438e+02 5.20207158e+02 5.27228382e+02 5.34344371e+02 5.41556404e+02 + 5.48865778e+02 5.56273806e+02 5.63781821e+02 5.71391170e+02 5.79103223e+02 + 5.86919366e+02 5.94841002e+02 6.02869557e+02 6.11006473e+02 6.19253213e+02 + 6.27611259e+02 6.36082113e+02 6.44667298e+02 6.53368357e+02 6.62186855e+02 + 6.71124375e+02 6.80182525e+02 6.89362932e+02 6.98667247e+02 7.08097142e+02 + 7.17654312e+02 7.27340476e+02 7.37157373e+02 7.47106768e+02 7.57190450e+02 + 7.67410232e+02 7.77767949e+02 7.88265465e+02 7.98904665e+02 8.09687462e+02 + 8.20615795e+02 8.31691626e+02 8.42916949e+02 8.54293779e+02 8.65824161e+02 + 8.77510169e+02 8.89353903e+02 9.01357492e+02 9.13523092e+02 9.25852892e+02 + 9.38349106e+02 9.51013982e+02 9.63849795e+02 9.76858852e+02 9.90043493e+02 + 1.00340609e+03 1.01694903e+03 1.03067477e+03 1.04458576e+03 1.05868451e+03 + 1.07297355e+03 1.08745545e+03 1.10213281e+03 1.11700827e+03 1.13208451e+03 + 1.14736422e+03 1.16285017e+03 1.17854513e+03 1.19445193e+03 1.21057342e+03 + 1.22691250e+03 1.24347211e+03 1.26025522e+03 1.27726485e+03 1.29450407e+03 + 1.31197596e+03 1.32968367e+03 1.34763038e+03 1.36581931e+03 1.38425374e+03 + 1.40293698e+03 1.42187239e+03 1.44106337e+03 1.46051336e+03 1.48022588e+03 + 1.50020445e+03 1.52045267e+03 1.54097419e+03 1.56177268e+03 1.58285189e+03 + 1.60421560e+03 1.62586766e+03 1.64781196e+03 1.67005244e+03 1.69259310e+03 + 1.71543799e+03 1.73859121e+03 1.76205693e+03 1.78583938e+03 1.80994281e+03 + 1.83437156e+03 1.85913003e+03 1.88422266e+03 1.90965397e+03 1.93542853e+03 + 1.96155096e+03 1.98802597e+03 2.01485831e+03 2.04205280e+03 2.06961434e+03 + 2.09754787e+03 2.12585843e+03 2.15455109e+03 2.18363101e+03 2.21310343e+03 + 2.24297363e+03 2.27324699e+03 2.30392895e+03 2.33502503e+03 2.36654081e+03 + 2.39848195e+03 2.43085420e+03 2.46366339e+03 2.49691539e+03 2.53061620e+03 + 2.56477187e+03 2.59938853e+03 2.63447242e+03 2.67002983e+03 2.70606716e+03 + 2.74259088e+03 2.77960756e+03 2.81712386e+03 2.85514651e+03 2.89368236e+03 + 2.93273832e+03 2.97232142e+03 3.01243877e+03 3.05309759e+03 3.09430517e+03 + 3.13606893e+03 3.17839638e+03 3.22129512e+03 3.26477287e+03 3.30883743e+03 + 3.35349673e+03 3.39875879e+03 3.44463176e+03 3.49112387e+03 3.53824349e+03 + 3.58599907e+03 3.63439922e+03 3.68345262e+03 3.73316809e+03 3.78355457e+03 + 3.83462112e+03 3.88637691e+03 3.93883124e+03 3.99199356e+03 4.04587340e+03 + 4.10048045e+03 4.15582454e+03 4.21191561e+03 4.26876373e+03 4.32637913e+03 + 4.38477217e+03 4.44395333e+03 4.50393327e+03 4.56472275e+03 4.62633270e+03 + 4.68877420e+03 4.75205848e+03 4.81619690e+03 4.88120099e+03 4.94708244e+03 + 5.01385310e+03 5.08152495e+03 5.15011018e+03 5.21962109e+03 5.29007019e+03 + 5.36147014e+03 5.43383378e+03 5.50717410e+03 5.58150430e+03 5.65683773e+03 + 5.73318793e+03 5.81056864e+03 5.88899374e+03 5.96847735e+03 6.04903375e+03 + 6.13067741e+03 6.21342302e+03 6.29728544e+03 6.38227975e+03 6.46842123e+03 + 6.55572536e+03 6.64420783e+03 6.73388454e+03 6.82477162e+03 6.91688540e+03 + 7.01024244e+03 7.10485951e+03 7.20075363e+03 7.29794203e+03 7.39644218e+03 + 7.49627178e+03 7.59744879e+03 7.69999137e+03 7.80391797e+03 7.90924727e+03 + 8.01599819e+03 8.12418992e+03 8.23384192e+03 8.34497389e+03 8.45760580e+03 + 8.57175791e+03 8.68745072e+03 8.80470504e+03 8.92354193e+03 9.04398276e+03 + 9.16604918e+03 9.28976313e+03 9.41514684e+03 9.54222285e+03 9.67101401e+03 + 9.80154345e+03 9.93383465e+03 1.00679114e+04 1.02037977e+04 1.03415182e+04 + 1.04810974e+04 1.06225605e+04 1.07659329e+04 1.09112405e+04 1.10585092e+04 + 1.12077657e+04 1.13590366e+04 1.15123493e+04 1.16677312e+04 1.18252103e+04 + 1.19848148e+04 1.21465736e+04 1.23105156e+04 1.24766704e+04 1.26450677e+04 + 1.28157379e+04 1.29887116e+04 1.31640199e+04 1.33416944e+04 1.35217669e+04 + 1.37042699e+04 1.38892361e+04 1.40766987e+04 1.42666916e+04 1.44592488e+04 + 1.46544049e+04 1.48521951e+04 1.50526548e+04 1.52558201e+04 1.54617276e+04 + 1.56704142e+04 1.58819174e+04 1.60962752e+04 1.63135263e+04 1.65337095e+04 + 1.67568646e+04 1.69830316e+04 1.72122512e+04 1.74445645e+04 1.76800134e+04 + 1.79186401e+04 1.81604876e+04 1.84055993e+04 1.86540192e+04 1.89057921e+04 + 1.91609631e+04 1.94195781e+04 1.96816837e+04 1.99473269e+04 2.02165555e+04 + 2.04894179e+04 2.07659631e+04 2.10462408e+04 2.13303014e+04 2.16181960e+04 + 2.19099763e+04 2.22056947e+04 2.25054044e+04 2.28091593e+04 2.31170140e+04 + 2.34290238e+04 2.37452448e+04 2.40657338e+04 2.43905484e+04 2.47197470e+04 + 2.50533889e+04 2.53915339e+04 2.57342428e+04 2.60815773e+04 2.64335997e+04 + 2.67903734e+04 2.71519624e+04 2.75184318e+04 2.78898474e+04 2.82662760e+04 + 2.86477853e+04 2.90344437e+04 2.94263209e+04 2.98234873e+04 3.02260142e+04 + 3.06339740e+04 3.10474400e+04 3.14664865e+04 3.18911890e+04 3.23216236e+04 + 3.27578678e+04 3.31999999e+04 3.36480995e+04 3.41022471e+04 3.45625243e+04 + 3.50290139e+04 3.55017997e+04 3.59809666e+04 3.64666009e+04 3.69587897e+04 + 3.74576216e+04 3.79631862e+04 3.84755745e+04 3.89948784e+04 3.95211913e+04 + 4.00546079e+04 4.05952240e+04 4.11431368e+04 4.16984447e+04 4.22612476e+04 + 4.28316467e+04 4.34097444e+04 4.39956447e+04 4.45894528e+04 4.51912756e+04 + 4.58012212e+04 4.64193992e+04 4.70459207e+04 4.76808984e+04 4.83244463e+04 + 4.89766802e+04 4.96377173e+04 5.03076764e+04 5.09866779e+04 5.16748439e+04 + 5.23722980e+04 5.30791657e+04 5.37955739e+04 5.45216515e+04 5.52575289e+04 + 5.60033385e+04 5.67592142e+04 5.75252919e+04 5.83017094e+04 5.90886062e+04 + 5.98861237e+04 6.06944053e+04 6.15135963e+04 6.23438438e+04 6.31852972e+04 + 6.40381076e+04 6.49024284e+04 6.57784150e+04 6.66662247e+04 6.75660171e+04 + 6.84779540e+04 6.94021994e+04 7.03389192e+04 7.12882819e+04 7.22504581e+04 + 7.32256209e+04 7.42139453e+04 7.52156092e+04 7.62307924e+04 7.72596776e+04 + 7.83024497e+04 7.93592960e+04 8.04304065e+04 8.15159738e+04 8.26161929e+04 + 8.37312617e+04 8.48613806e+04 8.60067526e+04 8.71675837e+04 8.83440825e+04 + 8.95364604e+04 9.07449319e+04 9.19697141e+04 9.32110271e+04 9.44690942e+04 + 9.57441413e+04 9.70363977e+04 9.83460956e+04 9.96734705e+04 1.01018761e+05 + 1.02382209e+05 1.03764059e+05 1.05164560e+05 1.06583964e+05 1.08022525e+05 + 1.09480502e+05 1.10958158e+05 1.12455758e+05 1.13973570e+05 1.15511869e+05 + 1.17070930e+05 1.18651033e+05 1.20252464e+05 1.21875508e+05 1.23520459e+05 + 1.25187612e+05 1.26877266e+05 1.28589725e+05 1.30325298e+05 1.32084295e+05 + 1.33867034e+05 1.35673834e+05 1.37505020e+05 1.39360922e+05 1.41241873e+05 + 1.43148212e+05 1.45080280e+05 1.47038425e+05 1.49022999e+05 1.51034359e+05 + 1.53072866e+05 1.55138887e+05 1.57232793e+05 1.59354960e+05 1.61505770e+05 + 1.63685609e+05 1.65894870e+05 1.68133949e+05 1.70403249e+05 1.72703178e+05 + 1.75034149e+05 1.77396580e+05 1.79790898e+05 1.82217531e+05 1.84676917e+05 + 1.87169497e+05 1.89695719e+05 1.92256038e+05 1.94850913e+05 1.97480811e+05 + 2.00146205e+05 2.02847573e+05 2.05585402e+05 2.08360183e+05 2.11172416e+05 + 2.14022605e+05 2.16911263e+05 2.19838909e+05 2.22806069e+05 2.25813278e+05 + 2.28861074e+05 2.31950007e+05 2.35080630e+05 2.38253508e+05 2.41469210e+05 + 2.44728314e+05 2.48031406e+05 2.51379080e+05 2.54771938e+05 2.58210588e+05 + 2.61695651e+05 2.65227751e+05 2.68807523e+05 2.72435612e+05 2.76112669e+05 + 2.79839355e+05 2.83616340e+05 2.87444303e+05 2.91323932e+05 2.95255924e+05 + 2.99240986e+05 3.03279835e+05 3.07373196e+05 3.11521804e+05 3.15726407e+05 + 3.19987758e+05 3.24306626e+05 3.28683784e+05 3.33120022e+05 3.37616135e+05 + 3.42172931e+05 3.46791231e+05 3.51471864e+05 3.56215672e+05 3.61023506e+05 + 3.65896232e+05 3.70834725e+05 3.75839872e+05 3.80912574e+05 3.86053742e+05 + 3.91264300e+05 3.96545185e+05 4.01897346e+05 4.07321745e+05 4.12819356e+05 + 4.18391169e+05 4.24038185e+05 4.29761418e+05 4.35561898e+05 4.41440667e+05 + 4.47398781e+05 4.53437311e+05 4.59557344e+05 4.65759979e+05 4.72046330e+05 + 4.78417528e+05 4.84874718e+05 4.91419060e+05 4.98051732e+05 5.04773924e+05 + 5.11586846e+05 5.18491721e+05 5.25489792e+05 5.32582315e+05 5.39770566e+05 + 5.47055836e+05 5.54439436e+05 5.61922691e+05 5.69506949e+05 5.77193570e+05 + 5.84983938e+05 5.92879453e+05 6.00881532e+05 6.08991616e+05 6.17211161e+05 + 6.25541646e+05 6.33984566e+05 6.42541441e+05 6.51213808e+05 6.60003225e+05 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 6.88504212e-06 6.97796937e-06 7.07215085e-06 7.16760350e-06 7.26434448e-06 + 7.36239116e-06 7.46176118e-06 7.56247239e-06 7.66454290e-06 7.76799106e-06 + 7.87283545e-06 7.97909492e-06 8.08678857e-06 8.19593576e-06 8.30655611e-06 + 8.41866950e-06 8.53229609e-06 8.64745628e-06 8.76417079e-06 8.88246060e-06 + 9.00234696e-06 9.12385142e-06 9.24699583e-06 9.37180231e-06 9.49829330e-06 + 9.62649154e-06 9.75642007e-06 9.88810223e-06 1.00215617e-05 1.01568225e-05 + 1.02939089e-05 1.04328455e-05 1.05736574e-05 1.07163698e-05 1.08610084e-05 + 1.10075992e-05 1.11561685e-05 1.13067430e-05 1.14593498e-05 1.16140164e-05 + 1.17707705e-05 1.19296403e-05 1.20906544e-05 1.22538417e-05 1.24192315e-05 + 1.25868536e-05 1.27567380e-05 1.29289154e-05 1.31034167e-05 1.32802732e-05 + 1.34595167e-05 1.36411795e-05 1.38252941e-05 1.40118938e-05 1.42010120e-05 + 1.43926827e-05 1.45869404e-05 1.47838200e-05 1.49833569e-05 1.51855869e-05 + 1.53905464e-05 1.55982722e-05 1.58088017e-05 1.60221728e-05 1.62384236e-05 + 1.64575933e-05 1.66797210e-05 1.69048468e-05 1.71330111e-05 1.73642550e-05 + 1.75986199e-05 1.78361481e-05 1.80768821e-05 1.83208654e-05 1.85681416e-05 + 1.88187554e-05 1.90727517e-05 1.93301762e-05 1.95910751e-05 1.98554954e-05 + 2.01234845e-05 2.03950907e-05 2.06703628e-05 2.09493502e-05 2.12321030e-05 + 2.15186722e-05 2.18091092e-05 2.21034663e-05 2.24017962e-05 2.27041527e-05 + 2.30105901e-05 2.33211635e-05 2.36359287e-05 2.39549423e-05 2.42782616e-05 + 2.46059447e-05 2.49380505e-05 2.52746388e-05 2.56157700e-05 2.59615054e-05 + 2.63119073e-05 2.66670385e-05 2.70269628e-05 2.73917451e-05 2.77614508e-05 + 2.81361465e-05 2.85158994e-05 2.89007778e-05 2.92908509e-05 2.96861888e-05 + 3.00868626e-05 3.04929443e-05 3.09045068e-05 3.13216242e-05 3.17443714e-05 + 3.21728244e-05 3.26070603e-05 3.30471570e-05 3.34931937e-05 3.39452505e-05 + 3.44034088e-05 3.48677508e-05 3.53383600e-05 3.58153210e-05 3.62987195e-05 + 3.67886424e-05 3.72851779e-05 3.77884150e-05 3.82984444e-05 3.88153576e-05 + 3.93392475e-05 3.98702084e-05 4.04083357e-05 4.09537260e-05 4.15064775e-05 + 4.20666894e-05 4.26344625e-05 4.32098988e-05 4.37931018e-05 4.43841763e-05 + 4.49832284e-05 4.55903660e-05 4.62056981e-05 4.68293353e-05 4.74613897e-05 + 4.81019749e-05 4.87512062e-05 4.94092000e-05 5.00760748e-05 5.07519504e-05 + 5.14369483e-05 5.21311915e-05 5.28348050e-05 5.35479151e-05 5.42706500e-05 + 5.50031397e-05 5.57455158e-05 5.64979117e-05 5.72604626e-05 5.80333057e-05 + 5.88165799e-05 5.96104258e-05 6.04149863e-05 6.12304060e-05 6.20568313e-05 + 6.28944109e-05 6.37432952e-05 6.46036370e-05 6.54755907e-05 6.63593132e-05 + 6.72549633e-05 6.81627019e-05 6.90826923e-05 7.00150997e-05 7.09600919e-05 + 7.19178385e-05 7.28885119e-05 7.38722864e-05 7.48693389e-05 7.58798486e-05 + 7.69039971e-05 7.79419685e-05 7.89939494e-05 8.00601288e-05 8.11406985e-05 + 8.22358526e-05 8.33457879e-05 8.44707040e-05 8.56108031e-05 8.67662901e-05 + 8.79373726e-05 8.91242612e-05 9.03271693e-05 9.15463129e-05 9.27819113e-05 + 9.40341866e-05 9.53033637e-05 9.65896710e-05 9.78933395e-05 9.92146035e-05 + 1.00553701e-04 1.01910872e-04 1.03286360e-04 1.04680414e-04 1.06093283e-04 + 1.07525221e-04 1.08976487e-04 1.10447340e-04 1.11938045e-04 1.13448870e-04 + 1.14980087e-04 1.16531970e-04 1.18104799e-04 1.19698857e-04 1.21314430e-04 + 1.22951808e-04 1.24611285e-04 1.26293161e-04 1.27997736e-04 1.29725319e-04 + 1.31476218e-04 1.33250750e-04 1.35049232e-04 1.36871988e-04 1.38719346e-04 + 1.40591638e-04 1.42489200e-04 1.44412373e-04 1.46361504e-04 1.48336941e-04 + 1.50339042e-04 1.52368164e-04 1.54424673e-04 1.56508940e-04 1.58621337e-04 + 1.60762245e-04 1.62932050e-04 1.65131140e-04 1.67359911e-04 1.69618763e-04 + 1.71908104e-04 1.74228343e-04 1.76579899e-04 1.78963194e-04 1.81378656e-04 + 1.83826719e-04 1.86307824e-04 1.88822416e-04 1.91370948e-04 1.93953877e-04 + 1.96571668e-04 1.99224791e-04 2.01913723e-04 2.04638948e-04 2.07400955e-04 + 2.10200241e-04 2.13037308e-04 2.15912668e-04 2.18826836e-04 2.21780337e-04 + 2.24773701e-04 2.27807466e-04 2.30882178e-04 2.33998389e-04 2.37156660e-04 + 2.40357558e-04 2.43601658e-04 2.46889543e-04 2.50221806e-04 2.53599044e-04 + 2.57021864e-04 2.60490882e-04 2.64006721e-04 2.67570013e-04 2.71181399e-04 + 2.74841528e-04 2.78551058e-04 2.82310655e-04 2.86120995e-04 2.89982763e-04 + 2.93896654e-04 2.97863370e-04 3.01883625e-04 3.05958141e-04 3.10087651e-04 + 3.14272896e-04 3.18514630e-04 3.22813614e-04 3.27170622e-04 3.31586436e-04 + 3.36061850e-04 3.40597669e-04 3.45194708e-04 3.49853792e-04 3.54575761e-04 + 3.59361461e-04 3.64211754e-04 3.69127512e-04 3.74109617e-04 3.79158966e-04 + 3.84276465e-04 3.89463035e-04 3.94719609e-04 4.00047130e-04 4.05446556e-04 + 4.10918859e-04 4.16465021e-04 4.22086040e-04 4.27782925e-04 4.33556701e-04 + 4.39408405e-04 4.45339090e-04 4.51349821e-04 4.57441679e-04 4.63615758e-04 + 4.69873169e-04 4.76215036e-04 4.82642499e-04 4.89156713e-04 4.95758850e-04 + 5.02450095e-04 5.09231652e-04 5.16104740e-04 5.23070593e-04 5.30130464e-04 + 5.37285623e-04 5.44537354e-04 5.51886961e-04 5.59335767e-04 5.66885108e-04 + 5.74536343e-04 5.82290846e-04 5.90150012e-04 5.98115253e-04 6.06188000e-04 + 6.14369705e-04 6.22661838e-04 6.31065890e-04 6.39583371e-04 6.48215813e-04 + 6.56964766e-04 6.65831804e-04 6.74818520e-04 6.83926530e-04 6.93157470e-04 + 7.02513000e-04 7.11994801e-04 7.21604578e-04 7.31344057e-04 7.41214991e-04 + 7.51219152e-04 7.61358339e-04 7.71634374e-04 7.82049105e-04 7.92604403e-04 + 8.03302166e-04 8.14144316e-04 8.25132802e-04 8.36269600e-04 8.47556711e-04 + 8.58996164e-04 8.70590014e-04 8.82340347e-04 8.94249274e-04 9.06318935e-04 + 9.18551500e-04 9.30949168e-04 9.43514166e-04 9.56248755e-04 9.69155221e-04 + 9.82235886e-04 9.95493101e-04 1.00892925e-03 1.02254674e-03 1.03634803e-03 + 1.05033559e-03 1.06451195e-03 1.07887964e-03 1.09344125e-03 1.10819941e-03 + 1.12315675e-03 1.13831597e-03 1.15367979e-03 1.16925098e-03 1.18503233e-03 + 1.20102668e-03 1.21723691e-03 1.23366593e-03 1.25031669e-03 1.26719218e-03 + 1.28429545e-03 1.30162955e-03 1.31919761e-03 1.33700279e-03 1.35504829e-03 + 1.37333734e-03 1.39187324e-03 1.41065932e-03 1.42969896e-03 1.44899557e-03 + 1.46855263e-03 1.48837365e-03 1.50846219e-03 1.52882187e-03 1.54945635e-03 + 1.57036932e-03 1.59156456e-03 1.61304587e-03 1.63481711e-03 1.65688220e-03 + 1.67924510e-03 1.70190983e-03 1.72488046e-03 1.74816113e-03 1.77175602e-03 + 1.79566937e-03 1.81990548e-03 1.84446870e-03 1.86936345e-03 1.89459420e-03 + 1.92016550e-03 1.94608192e-03 1.97234815e-03 1.99896888e-03 2.02594892e-03 + 2.05329310e-03 2.08100635e-03 2.10909364e-03 2.13756003e-03 2.16641063e-03 + 2.19565062e-03 2.22528526e-03 2.25531988e-03 2.28575988e-03 2.31661073e-03 + 2.34787797e-03 2.37956722e-03 2.41168418e-03 2.44423463e-03 2.47722440e-03 + 2.51065944e-03 2.54454575e-03 2.57888943e-03 2.61369664e-03 2.64897364e-03 + 2.68472677e-03 2.72096247e-03 2.75768723e-03 2.79490767e-03 2.83263047e-03 + 2.87086242e-03 2.90961038e-03 2.94888132e-03 2.98868230e-03 3.02902048e-03 + 3.06990309e-03 3.11133750e-03 3.15333115e-03 3.19589159e-03 3.23902646e-03 + 3.28274352e-03 3.32705063e-03 3.37195576e-03 3.41746696e-03 3.46359243e-03 + 3.51034046e-03 3.55771944e-03 3.60573789e-03 3.65440445e-03 3.70372786e-03 + 3.75371699e-03 3.80438082e-03 3.85572845e-03 3.90776913e-03 3.96051220e-03 + 4.01396713e-03 4.06814355e-03 4.12305119e-03 4.17869991e-03 4.23509973e-03 + 4.29226077e-03 4.35019331e-03 4.40890776e-03 4.46841469e-03 4.52872477e-03 + 4.58984886e-03 4.65179794e-03 4.71458315e-03 4.77821577e-03 4.84270723e-03 + 4.90806913e-03 4.97431323e-03 5.04145141e-03 5.10949576e-03 5.17845851e-03 + 5.24835204e-03 5.31918892e-03 5.39098188e-03 5.46374384e-03 5.53748786e-03 + 5.61222720e-03 5.68797530e-03 5.76474576e-03 5.84255240e-03 5.92140919e-03 + 6.00133031e-03 6.08233012e-03 6.16442319e-03 6.24762426e-03 6.33194830e-03 + 6.41741045e-03 6.50402609e-03 6.59181077e-03 6.68078028e-03 6.77095062e-03 + 6.86233798e-03 6.95495879e-03 7.04882970e-03 7.14396759e-03 7.24038955e-03 + 7.33811291e-03 7.43715525e-03 7.53753436e-03 7.63926828e-03 7.74237530e-03 + 7.84687395e-03 7.95278302e-03 8.06012155e-03 8.16890882e-03 8.27916438e-03 + 8.39090807e-03 8.50415995e-03 8.61894040e-03 8.73527003e-03 8.85316976e-03 + 8.97266078e-03 9.09376457e-03 9.21650290e-03 9.34089782e-03 9.46697169e-03 + 9.59474718e-03 9.72424726e-03 9.85549519e-03 9.98851457e-03 1.01233293e-02 + 1.02599637e-02 1.03984421e-02 1.05387897e-02 1.06810315e-02 1.08251931e-02 + 1.09713005e-02 1.11193798e-02 1.12694578e-02 1.14215614e-02 1.15757180e-02 + 1.17319552e-02 1.18903011e-02 1.20507842e-02 1.22134334e-02 1.23782778e-02 + 1.25453471e-02 1.27146713e-02 1.28862810e-02 1.30602068e-02 1.32364801e-02 + 1.34151325e-02 1.35961963e-02 1.37797038e-02 1.39656881e-02 1.41541827e-02 + 1.43452214e-02 1.45388385e-02 1.47350688e-02 1.49339477e-02 1.51355108e-02 + 1.53397945e-02 1.55468353e-02 1.57566706e-02 1.59693380e-02 1.61848758e-02 + 1.64033226e-02 1.66247179e-02 1.68491013e-02 1.70765132e-02 1.73069945e-02 + 1.75405866e-02 1.77773315e-02 1.80172717e-02 1.82604504e-02 1.85069113e-02 + 1.87566986e-02 1.90098573e-02 1.92664329e-02 1.95264715e-02 1.97900198e-02 + 2.00571252e-02 2.03278358e-02 2.06022001e-02 2.08802675e-02 2.11620880e-02 + 2.14477122e-02 2.17371914e-02 2.20305778e-02 2.23279240e-02 2.26292834e-02 + 2.29347103e-02 2.32442596e-02 2.35579868e-02 2.38759484e-02 2.41982015e-02 + 2.45248040e-02 2.48558147e-02 2.51912931e-02 2.55312994e-02 2.58758947e-02 + 2.62251410e-02 2.65791011e-02 2.69378386e-02 2.73014180e-02 2.76699046e-02 + 2.80433646e-02 2.84218652e-02 2.88054745e-02 2.91942613e-02 2.95882955e-02 + 2.99876481e-02 3.03923906e-02 3.08025960e-02 3.12183379e-02 3.16396911e-02 + 3.20667312e-02 3.24995351e-02 3.29381806e-02 3.33827464e-02 3.38333125e-02 + 3.42899600e-02 3.47527707e-02 3.52218280e-02 3.56972162e-02 3.61790207e-02 + 3.66673281e-02 3.71622261e-02 3.76638038e-02 3.81721513e-02 3.86873599e-02 + 3.92095223e-02 3.97387323e-02 4.02750850e-02 4.08186768e-02 4.13696055e-02 + 4.19279701e-02 4.24938709e-02 4.30674097e-02 4.36486895e-02 4.42378148e-02 + 4.48348916e-02 4.54400270e-02 4.60533300e-02 4.66749107e-02 4.73048808e-02 + 4.79433537e-02 4.85904440e-02 4.92462681e-02 4.99109438e-02 5.05845906e-02 + 5.12673296e-02 5.19592835e-02 5.26605767e-02 5.33713353e-02 5.40916869e-02 + 5.48217611e-02 5.55616891e-02 5.63116039e-02 5.70716403e-02 5.78419349e-02 + 5.86226261e-02 5.94138543e-02 6.02157617e-02 6.10284924e-02 6.18521925e-02 + 6.26870100e-02 6.35330951e-02 6.43905998e-02 6.52596782e-02 6.61404865e-02 + 6.70331831e-02 6.79379283e-02 6.88548849e-02 6.97842177e-02 7.07260936e-02 + 7.16806820e-02 7.26481545e-02 7.36286849e-02 7.46224495e-02 7.56296269e-02 + 7.66503982e-02 7.76849468e-02 7.87334586e-02 7.97961222e-02 8.08731286e-02 + 8.19646713e-02 8.30709465e-02 8.41921531e-02 8.53284926e-02 8.64801692e-02 + 8.76473900e-02 8.88303647e-02 9.00293060e-02 9.12444294e-02 9.24759533e-02 + 9.37240991e-02 9.49890910e-02 9.62711565e-02 9.75705260e-02 9.88874331e-02 + 1.00222114e-01 1.01574810e-01 1.02945763e-01 1.04335219e-01 1.05743429e-01 + 1.07170646e-01 1.08617125e-01 1.10083128e-01 1.11568917e-01 1.13074760e-01 + 1.14600928e-01 1.16147694e-01 1.17715336e-01 1.19304138e-01 1.20914383e-01 + 1.22546361e-01 1.24200367e-01 1.25876696e-01 1.27575651e-01 1.29297536e-01 + 1.31042662e-01 1.32811342e-01 1.34603893e-01 1.36420639e-01 1.38261905e-01 + 1.40128022e-01 1.42019327e-01 1.43936158e-01 1.45878861e-01 1.47847785e-01 + 1.49843283e-01 1.51865714e-01 1.53915442e-01 1.55992835e-01 1.58098267e-01 + 1.60232115e-01 1.62394764e-01 1.64586603e-01 1.66808024e-01 1.69059428e-01 + 1.71341219e-01 1.73653807e-01 1.75997609e-01 1.78373044e-01 1.80780541e-01 + 1.83220532e-01 1.85693455e-01 1.88199755e-01 1.90739882e-01 1.93314294e-01 + 1.95923452e-01 1.98567827e-01 2.01247892e-01 2.03964130e-01 2.06717029e-01 + 2.09507084e-01 2.12334796e-01 2.15200673e-01 2.18105232e-01 2.21048993e-01 + 2.24032486e-01 2.27056247e-01 2.30120820e-01 2.33226755e-01 2.36374611e-01 + 2.39564954e-01 2.42798356e-01 2.46075400e-01 2.49396673e-01 2.52762774e-01 + 2.56174308e-01 2.59631886e-01 2.63136131e-01 2.66687674e-01 2.70287151e-01 + 2.73935210e-01 2.77632507e-01 2.81379706e-01 2.85177481e-01 2.89026515e-01 + 2.92927499e-01 2.96881135e-01 3.00888132e-01 3.04949212e-01 3.09065104e-01 + 3.13236549e-01 3.17464295e-01 3.21749103e-01 3.26091743e-01 3.30492995e-01 + 3.34953651e-01 3.39474513e-01 3.44056392e-01 3.48700113e-01 3.53406510e-01 + 3.58176430e-01 3.63010728e-01 3.67910276e-01 3.72875952e-01 3.77908650e-01 + 3.83009274e-01 3.88178741e-01 3.93417980e-01 3.98727933e-01 4.04109554e-01 + 4.09563811e-01 4.15091684e-01 4.20694167e-01 4.26372266e-01 4.32127002e-01 + 4.37959410e-01 4.43870538e-01 4.49861448e-01 4.55933217e-01 4.62086937e-01 + 4.68323713e-01 4.74644667e-01 4.81050935e-01 4.87543668e-01 4.94124034e-01 + 5.00793214e-01 5.07552408e-01 5.14402831e-01 5.21345713e-01 5.28382304e-01 + 5.35513867e-01 5.42741685e-01 5.50067057e-01 5.57491299e-01 5.65015746e-01 + 5.72641750e-01 5.80370682e-01 5.88203931e-01 5.96142905e-01 6.04189032e-01 + 6.12343757e-01 6.20608546e-01 6.28984885e-01 6.37474279e-01 6.46078254e-01 + 6.54798357e-01 6.63636155e-01 6.72593236e-01 6.81671211e-01 6.90871711e-01 + 7.00196390e-01 7.09646924e-01 7.19225012e-01 7.28932374e-01 7.38770757e-01 + 7.48741929e-01 7.58847681e-01 7.69089830e-01 7.79470217e-01 7.89990708e-01 + 8.00653193e-01 8.11459591e-01 8.22411841e-01 8.33511914e-01 8.44761805e-01 + 8.56163535e-01 8.67719154e-01 8.79430738e-01 8.91300394e-01 9.03330254e-01 + 9.15522481e-01 9.27879266e-01 9.40402831e-01 9.53095425e-01 9.65959331e-01 + 9.78996861e-01 9.92210359e-01 1.00560220e+00 1.01917479e+00 1.03293057e+00 + 1.04687200e+00 1.06100161e+00 1.07532192e+00 1.08983552e+00 1.10454500e+00 + 1.11945302e+00 1.13456225e+00 1.14987541e+00 1.16539525e+00 1.18112456e+00 + 1.19706617e+00 1.21322295e+00 1.22959779e+00 1.24619364e+00 1.26301349e+00 + 1.28006035e+00 1.29733729e+00 1.31484742e+00 1.33259389e+00 1.35057988e+00 + 1.36880862e+00 1.38728340e+00 1.40600753e+00 1.42498438e+00 1.44421736e+00 + 1.46370993e+00 1.48346558e+00 1.50348788e+00 1.52378042e+00 1.54434685e+00 + 1.56519086e+00 1.58631621e+00 1.60772668e+00 1.62942613e+00 1.65141846e+00 + 1.67370761e+00 1.69629760e+00 1.71919249e+00 1.74239639e+00 1.76591347e+00 + 1.78974797e+00 1.81390415e+00 1.83838637e+00 1.86319903e+00 1.88834658e+00 + 1.91383355e+00 1.93966452e+00 1.96584412e+00 1.99237707e+00 2.01926814e+00 + 2.04652215e+00 2.07414401e+00 2.10213869e+00 2.13051120e+00 2.15926666e+00 + 2.18841023e+00 2.21794715e+00 2.24788273e+00 2.27822235e+00 2.30897147e+00 + 2.34013560e+00 2.37172035e+00 2.40373141e+00 2.43617451e+00 2.46905550e+00 + 2.50238028e+00 2.53615485e+00 2.57038527e+00 2.60507770e+00 2.64023837e+00 + 2.67587361e+00 2.71198981e+00 2.74859347e+00 2.78569117e+00 2.82328958e+00 + 2.86139545e+00 2.90001564e+00 2.93915708e+00 2.97882681e+00 3.01903197e+00 + 3.05977977e+00 3.10107754e+00 3.14293271e+00 3.18535280e+00 3.22834543e+00 + 3.27191833e+00 3.31607934e+00 3.36083638e+00 3.40619751e+00 3.45217088e+00 + 3.49876474e+00 3.54598749e+00 3.59384760e+00 3.64235367e+00 3.69151443e+00 + 3.74133872e+00 3.79183548e+00 3.84301379e+00 3.89488285e+00 3.94745200e+00 + 4.00073066e+00 4.05472843e+00 4.10945500e+00 4.16492022e+00 4.22113405e+00 + 4.27810659e+00 4.33584809e+00 4.39436893e+00 4.45367962e+00 4.51379083e+00 + 4.57471336e+00 4.63645816e+00 4.69903632e+00 4.76245910e+00 4.82673790e+00 + 4.89188427e+00 4.95790991e+00 5.02482670e+00 5.09264667e+00 5.16138200e+00 + 5.23104505e+00 5.30164834e+00 5.37320456e+00 5.44572658e+00 5.51922742e+00 + 5.59372030e+00 5.66921861e+00 5.74573592e+00 5.82328598e+00 5.90188273e+00 + 5.98154030e+00 6.06227301e+00 6.14409536e+00 6.22702207e+00 6.31106804e+00 + 6.39624837e+00 6.48257839e+00 6.57007359e+00 6.65874972e+00 6.74862270e+00 + 6.83970870e+00 6.93202409e+00 7.02558545e+00 7.12040961e+00 7.21651361e+00 + 7.31391472e+00 7.41263046e+00 7.51267855e+00 7.61407700e+00 7.71684401e+00 + 7.82099807e+00 7.92655790e+00 8.03354246e+00 8.14197099e+00 8.25186298e+00 + 8.36323818e+00 8.47611660e+00 8.59051855e+00 8.70646457e+00 8.82397552e+00 + 8.94307250e+00 9.06377694e+00 9.18611052e+00 9.31009524e+00 9.43575337e+00 + 9.56310751e+00 9.69218054e+00 9.82299567e+00 9.95557641e+00 1.00899466e+01 + 1.02261304e+01 1.03641522e+01 1.05040369e+01 1.06458096e+01 1.07894959e+01 + 1.09351215e+01 1.10827125e+01 1.12322956e+01 1.13838977e+01 1.15375459e+01 + 1.16932678e+01 1.18510916e+01 1.20110455e+01 1.21731583e+01 1.23374591e+01 + 1.25039775e+01 1.26727434e+01 1.28437871e+01 1.30171394e+01 1.31928314e+01 + 1.33708948e+01 1.35513614e+01 1.37342638e+01 1.39196348e+01 1.41075078e+01 + 1.42979165e+01 1.44908951e+01 1.46864784e+01 1.48847015e+01 1.50855999e+01 + 1.52892099e+01 1.54955680e+01 1.57047113e+01 1.59166774e+01 1.61315045e+01 + 1.63492310e+01 1.65698962e+01 1.67935397e+01 1.70202017e+01 1.72499229e+01 + 1.74827447e+01 1.77187089e+01 1.79578579e+01 1.82002347e+01 1.84458828e+01 + 1.86948465e+01 1.89471703e+01 1.92028999e+01 1.94620809e+01 1.97247602e+01 + 1.99909848e+01 2.02608026e+01 2.05342622e+01 2.08114127e+01 2.10923038e+01 + 2.13769861e+01 2.16655108e+01 2.19579297e+01 2.22542953e+01 2.25546610e+01 + 2.28590807e+01 2.31676092e+01 2.34803019e+01 2.37972150e+01 2.41184054e+01 + 2.44439309e+01 2.47738501e+01 2.51082222e+01 2.54471072e+01 2.57905662e+01 + 2.61386609e+01 2.64914538e+01 2.68490083e+01 2.72113887e+01 2.75786602e+01 + 2.79508887e+01 2.83281412e+01 2.87104854e+01 2.90979902e+01 2.94907251e+01 + 2.98887607e+01 3.02921686e+01 3.07010212e+01 3.11153922e+01 3.15353559e+01 + 3.19609878e+01 3.23923645e+01 3.28295635e+01 3.32726633e+01 3.37217437e+01 + 3.41768853e+01 3.46381699e+01 3.51056804e+01 3.55795009e+01 3.60597166e+01 + 3.65464138e+01 3.70396798e+01 3.75396035e+01 3.80462746e+01 3.85597843e+01 + 3.90802248e+01 3.96076897e+01 4.01422737e+01 4.06840730e+01 4.12331850e+01 + 4.17897083e+01 4.23537430e+01 4.29253905e+01 4.35047534e+01 4.40919360e+01 + 4.46870439e+01 4.52901838e+01 4.59014643e+01 4.65209953e+01 4.71488881e+01 + 4.77852555e+01 4.84302120e+01 4.90838734e+01 4.97463572e+01 5.04177826e+01 + 5.10982703e+01 5.17879424e+01 5.24869230e+01 5.31953378e+01 5.39133140e+01 + 5.46409807e+01 5.53784687e+01 5.61259106e+01 5.68834406e+01 5.76511951e+01 + 5.84293119e+01 5.92179309e+01 6.00171939e+01 6.08272446e+01 6.16482284e+01 + 6.24802931e+01 6.33235881e+01 6.41782651e+01 6.50444776e+01 6.59223814e+01 + 6.68121342e+01 6.77138960e+01 6.86278288e+01 6.95540970e+01 7.04928670e+01 + 7.14443075e+01 7.24085896e+01 7.33858866e+01 7.43763742e+01 7.53802303e+01 + 7.63976355e+01 7.74287726e+01 7.84738269e+01 7.95329863e+01 8.06064411e+01 + 8.16943843e+01 8.27970114e+01 8.39145207e+01 8.50471130e+01 8.61949919e+01 + 8.73583636e+01 8.85374374e+01 8.97324251e+01 9.09435415e+01 9.21710043e+01 + 9.34150341e+01 9.46758546e+01 9.59536924e+01 9.72487771e+01 9.85613415e+01 + 9.98916216e+01 1.01239856e+02 1.02606288e+02 1.03991163e+02 1.05394729e+02 + 1.06817239e+02 1.08258949e+02 1.09720118e+02 1.11201007e+02 1.12701885e+02 + 1.14223019e+02 1.15764685e+02 1.17327158e+02 1.18910720e+02 1.20515655e+02 + 1.22142252e+02 1.23790803e+02 1.25461604e+02 1.27154957e+02 1.28871164e+02 + 1.30610535e+02 1.32373382e+02 1.34160023e+02 1.35970777e+02 1.37805972e+02 + 1.39665936e+02 1.41551004e+02 1.43461514e+02 1.45397811e+02 1.47360241e+02 + 1.49349159e+02 1.51364921e+02 1.53407890e+02 1.55478433e+02 1.57576921e+02 + 1.59703733e+02 1.61859251e+02 1.64043861e+02 1.66257957e+02 1.68501937e+02 + 1.70776204e+02 1.73081166e+02 1.75417238e+02 1.77784841e+02 1.80184398e+02 + 1.82616343e+02 1.85081111e+02 1.87579147e+02 1.90110898e+02 1.92676820e+02 + 1.95277375e+02 1.97913029e+02 2.00584256e+02 2.03291537e+02 2.06035358e+02 + 2.08816212e+02 2.11634600e+02 2.14491027e+02 2.17386007e+02 2.20320061e+02 + 2.23293716e+02 2.26307506e+02 2.29361973e+02 2.32457666e+02 2.35595141e+02 + 2.38774963e+02 2.41997703e+02 2.45263940e+02 2.48574262e+02 2.51929263e+02 + 2.55329546e+02 2.58775723e+02 2.62268413e+02 2.65808243e+02 2.69395851e+02 + 2.73031880e+02 2.76716985e+02 2.80451827e+02 2.84237079e+02 2.88073420e+02 + 2.91961540e+02 2.95902138e+02 2.99895922e+02 3.03943610e+02 3.08045930e+02 + 3.12203619e+02 3.16417423e+02 3.20688102e+02 3.25016422e+02 3.29403160e+02 + 3.33849107e+02 3.38355061e+02 3.42921831e+02 3.47550238e+02 3.52241116e+02 + 3.56995306e+02 3.61813663e+02 3.66697053e+02 3.71646355e+02 3.76662457e+02 + 3.81746261e+02 3.86898681e+02 3.92120643e+02 3.97413086e+02 4.02776961e+02 + 4.08213232e+02 4.13722877e+02 4.19306884e+02 4.24966259e+02 4.30702019e+02 + 4.36515194e+02 4.42406829e+02 4.48377983e+02 4.54429730e+02 4.60563157e+02 + 4.66779367e+02 4.73079477e+02 4.79464620e+02 4.85935942e+02 4.92494608e+02 + 4.99141796e+02 5.05878701e+02 5.12706534e+02 5.19626522e+02 5.26639909e+02 + 5.33747955e+02 5.40951938e+02 5.48253154e+02 5.55652913e+02 5.63152548e+02 + 5.70753404e+02 5.78456849e+02 5.86264268e+02 5.94177062e+02 6.02196656e+02 + 6.10324490e+02 6.18562025e+02 6.26910742e+02 6.35372141e+02 6.43947744e+02 + 6.52639091e+02 6.61447746e+02 6.70375290e+02 6.79423329e+02 6.88593490e+02 + 6.97887420e+02 7.07306790e+02 7.16853293e+02 7.26528644e+02 7.36334584e+02 + 7.46272874e+02 7.56345302e+02 7.66553676e+02 7.76899833e+02 7.87385631e+02 + 7.98012956e+02 8.08783718e+02 8.19699853e+02 8.30763322e+02 8.41976115e+02 + 8.53340247e+02 8.64857760e+02 8.76530724e+02 8.88361238e+02 9.00351429e+02 + 9.12503451e+02 9.24819488e+02 9.37301755e+02 9.49952494e+02 9.62773980e+02 + 9.75768518e+02 9.88938442e+02 1.00228612e+03 1.01581395e+03 1.02952437e+03 + 1.04341984e+03 1.05750285e+03 1.07177594e+03 1.08624167e+03 1.10090265e+03 + 1.11576151e+03 1.13082091e+03 1.14608358e+03 1.16155224e+03 1.17722968e+03 + 1.19311872e+03 1.20922222e+03 1.22554306e+03 1.24208419e+03 1.25884857e+03 + 1.27583922e+03 1.29305919e+03 1.31051158e+03 1.32819952e+03 1.34612620e+03 + 1.36429483e+03 1.38270869e+03 1.40137107e+03 1.42028535e+03 1.43945490e+03 + 1.45888319e+03 1.47857370e+03 1.49852998e+03 1.51875560e+03 1.53925421e+03 + 1.56002949e+03 1.58108517e+03 1.60242504e+03 1.62405293e+03 1.64597273e+03 + 1.66818839e+03 1.69070388e+03 1.71352328e+03 1.73665066e+03 1.76009019e+03 + 1.78384609e+03 1.80792261e+03 1.83232410e+03 1.85705494e+03 1.88211956e+03 + 1.90752249e+03 1.93326827e+03 1.95936155e+03 1.98580700e+03 2.01260939e+03 + 2.03977353e+03 2.06730431e+03 2.09520667e+03 2.12348562e+03 2.15214626e+03 + 2.18119372e+03 2.21063324e+03 2.24047011e+03 2.27070968e+03 2.30135739e+03 + 2.33241876e+03 2.36389936e+03 2.39580485e+03 2.42814097e+03 2.46091353e+03 + 2.49412842e+03 2.52779162e+03 2.56190916e+03 2.59648719e+03 2.63153191e+03 + 2.66704964e+03 2.70304674e+03 2.73952970e+03 2.77650507e+03 2.81397949e+03 + 2.85195970e+03 2.89045253e+03 2.92946490e+03 2.96900382e+03 3.00907640e+03 + 3.04968983e+03 3.09085142e+03 3.13256857e+03 3.17484877e+03 3.21769963e+03 + 3.26112884e+03 3.30514422e+03 3.34975367e+03 3.39496522e+03 3.44078698e+03 + 3.48722720e+03 3.53429423e+03 3.58199651e+03 3.63034263e+03 3.67934128e+03 + 3.72900126e+03 3.77933150e+03 3.83034105e+03 3.88203907e+03 3.93443486e+03 + 3.98753784e+03 4.04135754e+03 4.09590365e+03 4.15118596e+03 4.20721442e+03 + 4.26399909e+03 4.32155018e+03 4.37987804e+03 4.43899315e+03 4.49890614e+03 + 4.55962777e+03 4.62116895e+03 4.68354076e+03 4.74675440e+03 4.81082123e+03 + 4.87575277e+03 4.94156069e+03 5.00825682e+03 5.07585314e+03 5.14436181e+03 + 5.21379514e+03 5.28416561e+03 5.35548586e+03 5.42776873e+03 5.50102719e+03 + 5.57527443e+03 5.65052377e+03 5.72678876e+03 5.80408309e+03 5.88242066e+03 + 5.96181555e+03 6.04228203e+03 6.12383457e+03 6.20648782e+03 6.29025664e+03 + 6.37515608e+03 6.46120141e+03 6.54840809e+03 6.63679180e+03 6.72636842e+03 + 6.81715406e+03 6.90916502e+03 7.00241786e+03 7.09692932e+03 7.19271641e+03 + 7.28979633e+03 7.38818654e+03 7.48790472e+03 7.58896879e+03 7.69139692e+03 + 7.79520752e+03 7.90041925e+03 8.00705102e+03 8.11512200e+03 8.22465161e+03 + 8.33565953e+03 8.44816573e+03 8.56219042e+03 8.67775410e+03 8.79487754e+03 + 8.91358179e+03 9.03388820e+03 9.15581837e+03 9.27939423e+03 9.40463799e+03 + 9.53157217e+03 9.66021957e+03 9.79060332e+03 9.92274686e+03 1.00566739e+04 + 1.01924086e+04 1.03299753e+04 1.04693988e+04 1.06107040e+04 1.07539164e+04 + 1.08990618e+04 1.10461661e+04 1.11952560e+04 1.13463581e+04 1.14994996e+04 + 1.16547081e+04 1.18120114e+04 1.19714378e+04 1.21330160e+04 1.22967751e+04 + 1.24627443e+04 1.26309537e+04 1.28014334e+04 1.29742140e+04 1.31493267e+04 + 1.33268028e+04 1.35066744e+04 1.36889736e+04 1.38737334e+04 1.40609868e+04 + 1.42507676e+04 1.44431099e+04 1.46380482e+04 1.48356176e+04 1.50358536e+04 + 1.52387922e+04 1.54444698e+04 1.56529234e+04 1.58641905e+04 1.60783091e+04 + 1.62953177e+04 1.65152552e+04 1.67381612e+04 1.69640758e+04 1.71930395e+04 + 1.74250936e+04 1.76602796e+04 1.78986400e+04 1.81402175e+04 1.83850556e+04 + 1.86331983e+04 1.88846901e+04 1.91395763e+04 1.93979027e+04 1.96597157e+04 + 1.99250625e+04 2.01939905e+04 2.04665484e+04 2.07427849e+04 2.10227497e+04 + 2.13064933e+04 2.15940665e+04 2.18855211e+04 2.21809095e+04 2.24802847e+04 + 2.27837006e+04 2.30912116e+04 2.34028732e+04 2.37187412e+04 2.40388725e+04 + 2.43633245e+04 2.46921558e+04 2.50254252e+04 2.53631928e+04 2.57055192e+04 + 2.60524660e+04 2.64040955e+04 2.67604709e+04 2.71216563e+04 2.74877167e+04 + 2.78587178e+04 2.82347262e+04 2.86158096e+04 2.90020365e+04 2.93934763e+04 + 2.97901994e+04 3.01922770e+04 3.05997814e+04 3.10127860e+04 3.14313648e+04 + 3.18555932e+04 3.22855473e+04 3.27213046e+04 3.31629433e+04 3.36105427e+04 + 3.40641834e+04 3.45239469e+04 3.49899158e+04 3.54621738e+04 3.59408060e+04 + 3.64258982e+04 3.69175376e+04 3.74158128e+04 3.79208131e+04 3.84326294e+04 + 3.89513537e+04 3.94770792e+04 4.00099004e+04 4.05499131e+04 4.10972143e+04 + 4.16519024e+04 4.22140771e+04 4.27838395e+04 4.33612920e+04 4.39465383e+04 + 4.45396837e+04 4.51408347e+04 4.57500995e+04 4.63675875e+04 4.69934097e+04 + 4.76276787e+04 4.82705083e+04 4.89220142e+04 4.95823135e+04 5.02515248e+04 + 5.09297684e+04 5.16171663e+04 5.23138419e+04 5.30199206e+04 5.37355292e+04 + 5.44607964e+04 5.51958524e+04 5.59408296e+04 5.66958616e+04 5.74610843e+04 + 5.82366352e+04 5.90226537e+04 5.98192810e+04 6.06266604e+04 6.14449370e+04 + 6.22742579e+04 6.31147720e+04 6.39666306e+04 6.48299867e+04 6.57049955e+04 + 6.65918142e+04 6.74906024e+04 6.84015214e+04 6.93247351e+04 7.02604094e+04 + 7.12087125e+04 7.21698148e+04 7.31438891e+04 7.41311104e+04 7.51316562e+04 + 7.61457064e+04 7.71734432e+04 7.82150513e+04 7.92707180e+04 8.03406330e+04 + 8.14249886e+04 8.25239797e+04 8.36378039e+04 8.47666613e+04 8.59107549e+04 + 8.70702904e+04 8.82454760e+04 8.94365231e+04 9.06436457e+04 9.18670608e+04 + 9.31069884e+04 9.43636512e+04 9.56372751e+04 9.69280891e+04 9.82363252e+04 + 9.95622186e+04 1.00906007e+05 1.02267933e+05 1.03648241e+05 1.05047179e+05 + 1.06464998e+05 1.07901954e+05 1.09358304e+05 1.10834311e+05 1.12330239e+05 + 1.13846357e+05 1.15382939e+05 1.16940259e+05 1.18518599e+05 1.20118242e+05 + 1.21739475e+05 1.23382590e+05 1.25047882e+05 1.26735650e+05 1.28446198e+05 + 1.30179833e+05 1.31936867e+05 1.33717616e+05 1.35522400e+05 1.37351542e+05 + 1.39205373e+05 1.41084224e+05 1.42988435e+05 1.44918346e+05 1.46874306e+05 + 1.48856665e+05 1.50865780e+05 1.52902011e+05 1.54965726e+05 1.57057295e+05 + 1.59177094e+05 1.61325503e+05 1.63502909e+05 1.65709704e+05 1.67946284e+05 + 1.70213051e+05 1.72510413e+05 1.74838782e+05 1.77198577e+05 1.79590222e+05 + 1.82014146e+05 1.84470787e+05 1.86960585e+05 1.89483987e+05 1.92041448e+05 + 1.94633427e+05 1.97260390e+05 1.99922809e+05 2.02621162e+05 2.05355935e+05 + 2.08127619e+05 2.10936713e+05 2.13783721e+05 2.16669154e+05 2.19593533e+05 + 2.22557381e+05 2.25561233e+05 2.28605628e+05 2.31691112e+05 2.34818242e+05 + 2.37987578e+05 2.41199691e+05 2.44455157e+05 2.47754563e+05 2.51098500e+05 + 2.54487570e+05 2.57922383e+05 2.61403555e+05 2.64931713e+05 2.68507490e+05 + 2.72131529e+05 2.75804482e+05 2.79527008e+05 2.83299778e+05 2.87123468e+05 + 2.90998767e+05 2.94926370e+05 2.98906984e+05 3.02941325e+05 3.07030117e+05 + 3.11174095e+05 3.15374004e+05 3.19630600e+05 3.23944646e+05 3.28316919e+05 + 3.32748205e+05 3.37239300e+05 3.41791010e+05 3.46404155e+05 3.51079564e+05 + 3.55818077e+05 3.60620545e+05 3.65487832e+05 3.70420812e+05 3.75420373e+05 + 3.80487413e+05 3.85622842e+05 3.90827585e+05 3.96102575e+05 4.01448762e+05 + 4.06867107e+05 4.12358582e+05 4.17924176e+05 4.23564889e+05 4.29281734e+05 + 4.35075740e+05 4.40947946e+05 4.46899410e+05 4.52931201e+05 4.59044403e+05 + 4.65240114e+05 4.71519449e+05 4.77883536e+05 4.84333518e+05 4.90870556e+05 + 4.97495824e+05 5.04210514e+05 5.11015831e+05 5.17912999e+05 5.24903259e+05 + 5.31987866e+05 5.39168093e+05 5.46445232e+05 5.53820590e+05 5.61295494e+05 + 5.68871286e+05 5.76549328e+05 5.84331000e+05 5.92217702e+05 6.00210850e+05 + 6.08311882e+05 6.16522253e+05 6.24843439e+05 6.33276936e+05 6.41824259e+05 + 6.50486946e+05 6.59266553e+05 6.68164658e+05 6.77182860e+05 6.86322781e+05 + 6.95586064e+05 7.04974372e+05 7.14489394e+05 7.24132841e+05 7.33906444e+05 + 7.43811962e+05 7.53851175e+05 7.64025886e+05 7.74337925e+05 7.84789146e+05 + 7.95381426e+05 8.06116670e+05 8.16996808e+05 8.28023794e+05 8.39199611e+05 + 8.50526269e+05 8.62005801e+05 8.73640273e+05 8.85431775e+05 8.97382427e+05 + 9.09494376e+05 9.21769800e+05 9.34210905e+05 9.46819927e+05 9.59599133e+05 + 9.72550820e+05 9.85677315e+05 9.98980978e+05 1.01246420e+06 1.02612941e+06 + 1.03997905e+06 1.05401562e+06 1.06824165e+06 1.08265968e+06 1.09727231e+06 + 1.11208217e+06 1.12709191e+06 1.14230425e+06 1.15772190e+06 1.17334765e+06 + 1.18918429e+06 1.20523468e+06 1.22150171e+06 1.23798829e+06 1.25469738e+06 + 1.27163201e+06 1.28879519e+06 1.30619003e+06 1.32381965e+06 1.34168721e+06 + 1.35979593e+06 1.37814906e+06 1.39674991e+06 1.41560181e+06 1.43470815e+06 + 1.45407237e+06 1.47369795e+06 1.49358842e+06 1.51374735e+06 1.53417836e+06 + 1.55488513e+06 1.57587137e+06 1.59714087e+06 1.61869744e+06 1.64054497e+06 + 1.66268736e+06 1.68512861e+06 1.70787275e+06 1.73092387e+06 1.75428611e+06 + 1.77796367e+06 1.80196080e+06 1.82628182e+06 1.85093111e+06 1.87591308e+06 + 1.90123223e+06 1.92689312e+06 1.95290035e+06 1.97925860e+06 2.00597261e+06 + 2.03304717e+06 2.06048716e+06 2.08829750e+06 2.11648321e+06 2.14504933e+06 + 2.17400101e+06 2.20334345e+06 2.23308192e+06 2.26322178e+06 2.29376843e+06 + 2.32472736e+06 2.35610415e+06 2.38790444e+06 2.42013393e+06 2.45279842e+06 + 2.48590378e+06 2.51945596e+06 2.55346100e+06 2.58792500e+06 2.62285416e+06 + 2.65825476e+06 2.69413316e+06 2.73049582e+06 2.76734925e+06 2.80470010e+06 + 2.84255507e+06 2.88092097e+06 2.91980469e+06 2.95921322e+06 2.99915365e+06 + 1.51514411e-06 1.53559398e-06 1.55631985e-06 1.57732546e-06 1.59861459e-06 + 1.62019105e-06 1.64205873e-06 1.66422156e-06 1.68668352e-06 1.70944864e-06 + 1.73252103e-06 1.75590483e-06 1.77960423e-06 1.80362351e-06 1.82796697e-06 + 1.85263900e-06 1.87764402e-06 1.90298654e-06 1.92867110e-06 1.95470233e-06 + 1.98108490e-06 2.00782356e-06 2.03492310e-06 2.06238841e-06 2.09022442e-06 + 2.11843613e-06 2.14702861e-06 2.17600701e-06 2.20537652e-06 2.23514243e-06 + 2.26531010e-06 2.29588494e-06 2.32687244e-06 2.35827818e-06 2.39010781e-06 + 2.42236703e-06 2.45506166e-06 2.48819757e-06 2.52178072e-06 2.55581713e-06 + 2.59031293e-06 2.62527433e-06 2.66070759e-06 2.69661910e-06 2.73301530e-06 + 2.76990274e-06 2.80728805e-06 2.84517795e-06 2.88357925e-06 2.92249885e-06 + 2.96194375e-06 3.00192104e-06 3.04243789e-06 3.08350160e-06 3.12511955e-06 + 3.16729922e-06 3.21004818e-06 3.25337412e-06 3.29728483e-06 3.34178821e-06 + 3.38689225e-06 3.43260505e-06 3.47893484e-06 3.52588994e-06 3.57347879e-06 + 3.62170995e-06 3.67059208e-06 3.72013398e-06 3.77034453e-06 3.82123279e-06 + 3.87280787e-06 3.92507907e-06 3.97805577e-06 4.03174749e-06 4.08616389e-06 + 4.14131475e-06 4.19720997e-06 4.25385962e-06 4.31127386e-06 4.36946302e-06 + 4.42843756e-06 4.48820807e-06 4.54878531e-06 4.61018016e-06 4.67240365e-06 + 4.73546697e-06 4.79938146e-06 4.86415859e-06 4.92981003e-06 4.99634755e-06 + 5.06378314e-06 5.13212890e-06 5.20139712e-06 5.27160025e-06 5.34275092e-06 + 5.41486190e-06 5.48794616e-06 5.56201684e-06 5.63708725e-06 5.71317088e-06 + 5.79028141e-06 5.86843270e-06 5.94763880e-06 6.02791394e-06 6.10927255e-06 + 6.19172925e-06 6.27529887e-06 6.35999643e-06 6.44583715e-06 6.53283646e-06 + 6.62101000e-06 6.71037362e-06 6.80094337e-06 6.89273554e-06 6.98576663e-06 + 7.08005335e-06 7.17561266e-06 7.27246174e-06 7.37061798e-06 7.47009904e-06 + 7.57092278e-06 7.67310735e-06 7.77667110e-06 7.88163264e-06 7.98801085e-06 + 8.09582484e-06 8.20509399e-06 8.31583795e-06 8.42807662e-06 8.54183017e-06 + 8.65711905e-06 8.77396398e-06 8.89238596e-06 9.01240628e-06 9.13404651e-06 + 9.25732852e-06 9.38227446e-06 9.50890680e-06 9.63724829e-06 9.76732200e-06 + 9.89915131e-06 1.00327599e-05 1.01681718e-05 1.03054114e-05 1.04445033e-05 + 1.05854725e-05 1.07283444e-05 1.08731446e-05 1.10198992e-05 1.11686345e-05 + 1.13193773e-05 1.14721546e-05 1.16269940e-05 1.17839233e-05 1.19429706e-05 + 1.21041646e-05 1.22675342e-05 1.24331089e-05 1.26009182e-05 1.27709925e-05 + 1.29433623e-05 1.31180586e-05 1.32951127e-05 1.34745565e-05 1.36564223e-05 + 1.38407427e-05 1.40275509e-05 1.42168804e-05 1.44087653e-05 1.46032400e-05 + 1.48003396e-05 1.50000995e-05 1.52025554e-05 1.54077440e-05 1.56157019e-05 + 1.58264667e-05 1.60400761e-05 1.62565686e-05 1.64759832e-05 1.66983591e-05 + 1.69237365e-05 1.71521557e-05 1.73836580e-05 1.76182848e-05 1.78560784e-05 + 1.80970814e-05 1.83413373e-05 1.85888899e-05 1.88397837e-05 1.90940638e-05 + 1.93517759e-05 1.96129664e-05 1.98776821e-05 2.01459707e-05 2.04178804e-05 + 2.06934601e-05 2.09727592e-05 2.12558280e-05 2.15427174e-05 2.18334790e-05 + 2.21281649e-05 2.24268282e-05 2.27295226e-05 2.30363024e-05 2.33472229e-05 + 2.36623398e-05 2.39817098e-05 2.43053904e-05 2.46334396e-05 2.49659166e-05 + 2.53028810e-05 2.56443934e-05 2.59905151e-05 2.63413085e-05 2.66968365e-05 + 2.70571631e-05 2.74223530e-05 2.77924718e-05 2.81675861e-05 2.85477634e-05 + 2.89330718e-05 2.93235808e-05 2.97193605e-05 3.01204820e-05 3.05270174e-05 + 3.09390399e-05 3.13566233e-05 3.17798429e-05 3.22087747e-05 3.26434958e-05 + 3.30840843e-05 3.35306194e-05 3.39831813e-05 3.44418515e-05 3.49067124e-05 + 3.53778474e-05 3.58553414e-05 3.63392801e-05 3.68297505e-05 3.73268407e-05 + 3.78306402e-05 3.83412395e-05 3.88587303e-05 3.93832056e-05 3.99147598e-05 + 4.04534884e-05 4.09994881e-05 4.15528573e-05 4.21136952e-05 4.26821027e-05 + 4.32581821e-05 4.38420367e-05 4.44337716e-05 4.50334932e-05 4.56413092e-05 + 4.62573288e-05 4.68816629e-05 4.75144236e-05 4.81557246e-05 4.88056813e-05 + 4.94644104e-05 5.01320304e-05 5.08086612e-05 5.14944245e-05 5.21894435e-05 + 5.28938432e-05 5.36077501e-05 5.43312927e-05 5.50646008e-05 5.58078064e-05 + 5.65610431e-05 5.73244461e-05 5.80981528e-05 5.88823022e-05 5.96770352e-05 + 6.04824947e-05 6.12988255e-05 6.21261743e-05 6.29646898e-05 6.38145227e-05 + 6.46758258e-05 6.55487539e-05 6.64334638e-05 6.73301147e-05 6.82388677e-05 + 6.91598861e-05 7.00933354e-05 7.10393835e-05 7.19982003e-05 7.29699583e-05 + 7.39548321e-05 7.49529987e-05 7.59646376e-05 7.69899305e-05 7.80290617e-05 + 7.90822181e-05 8.01495889e-05 8.12313660e-05 8.23277438e-05 8.34389194e-05 + 8.45650925e-05 8.57064656e-05 8.68632437e-05 8.80356348e-05 8.92238497e-05 + 9.04281018e-05 9.16486078e-05 9.28855869e-05 9.41392614e-05 9.54098568e-05 + 9.66976013e-05 9.80027266e-05 9.93254670e-05 1.00666060e-04 1.02024748e-04 + 1.03401773e-04 1.04797385e-04 1.06211833e-04 1.07645371e-04 1.09098258e-04 + 1.10570755e-04 1.12063126e-04 1.13575639e-04 1.15108567e-04 1.16662184e-04 + 1.18236771e-04 1.19832610e-04 1.21449988e-04 1.23089195e-04 1.24750527e-04 + 1.26434282e-04 1.28140763e-04 1.29870275e-04 1.31623131e-04 1.33399646e-04 + 1.35200138e-04 1.37024931e-04 1.38874353e-04 1.40748737e-04 1.42648419e-04 + 1.44573741e-04 1.46525050e-04 1.48502695e-04 1.50507032e-04 1.52538422e-04 + 1.54597229e-04 1.56683824e-04 1.58798582e-04 1.60941883e-04 1.63114112e-04 + 1.65315659e-04 1.67546920e-04 1.69808297e-04 1.72100196e-04 1.74423028e-04 + 1.76777212e-04 1.79163169e-04 1.81581330e-04 1.84032129e-04 1.86516007e-04 + 1.89033409e-04 1.91584788e-04 1.94170603e-04 1.96791319e-04 1.99447407e-04 + 2.02139344e-04 2.04867614e-04 2.07632707e-04 2.10435121e-04 2.13275359e-04 + 2.16153931e-04 2.19071356e-04 2.22028156e-04 2.25024865e-04 2.28062020e-04 + 2.31140168e-04 2.34259861e-04 2.37421661e-04 2.40626136e-04 2.43873861e-04 + 2.47165421e-04 2.50501406e-04 2.53882418e-04 2.57309063e-04 2.60781957e-04 + 2.64301725e-04 2.67868999e-04 2.71484421e-04 2.75148639e-04 2.78862314e-04 + 2.82626112e-04 2.86440710e-04 2.90306793e-04 2.94225057e-04 2.98196206e-04 + 3.02220953e-04 3.06300022e-04 3.10434146e-04 3.14624068e-04 3.18870542e-04 + 3.23174330e-04 3.27536206e-04 3.31956954e-04 3.36437370e-04 3.40978257e-04 + 3.45580432e-04 3.50244723e-04 3.54971968e-04 3.59763016e-04 3.64618729e-04 + 3.69539979e-04 3.74527651e-04 3.79582642e-04 3.84705860e-04 3.89898226e-04 + 3.95160673e-04 4.00494147e-04 4.05899607e-04 4.11378024e-04 4.16930384e-04 + 4.22557683e-04 4.28260934e-04 4.34041162e-04 4.39899405e-04 4.45836717e-04 + 4.51854164e-04 4.57952829e-04 4.64133808e-04 4.70398211e-04 4.76747164e-04 + 4.83181809e-04 4.89703302e-04 4.96312816e-04 5.03011539e-04 5.09800673e-04 + 5.16681441e-04 5.23655078e-04 5.30722838e-04 5.37885992e-04 5.45145826e-04 + 5.52503646e-04 5.59960775e-04 5.67518552e-04 5.75178336e-04 5.82941505e-04 + 5.90809452e-04 5.98783593e-04 6.06865361e-04 6.15056208e-04 6.23357607e-04 + 6.31771050e-04 6.40298049e-04 6.48940137e-04 6.57698866e-04 6.66575812e-04 + 6.75572570e-04 6.84690757e-04 6.93932012e-04 7.03297995e-04 7.12790392e-04 + 7.22410907e-04 7.32161269e-04 7.42043233e-04 7.52058572e-04 7.62209089e-04 + 7.72496607e-04 7.82922975e-04 7.93490068e-04 8.04199785e-04 8.15054050e-04 + 8.26054815e-04 8.37204057e-04 8.48503780e-04 8.59956016e-04 8.71562821e-04 + 8.83326284e-04 8.95248518e-04 9.07331666e-04 9.19577900e-04 9.31989421e-04 + 9.44568460e-04 9.57317278e-04 9.70238166e-04 9.83333448e-04 9.96605476e-04 + 1.01005664e-03 1.02368935e-03 1.03750606e-03 1.05150925e-03 1.06570145e-03 + 1.08008519e-03 1.09466308e-03 1.10943772e-03 1.12441177e-03 1.13958793e-03 + 1.15496892e-03 1.17055751e-03 1.18635650e-03 1.20236872e-03 1.21859707e-03 + 1.23504444e-03 1.25171381e-03 1.26860816e-03 1.28573053e-03 1.30308401e-03 + 1.32067170e-03 1.33849678e-03 1.35656243e-03 1.37487193e-03 1.39342854e-03 + 1.41223561e-03 1.43129652e-03 1.45061470e-03 1.47019361e-03 1.49003678e-03 + 1.51014777e-03 1.53053020e-03 1.55118773e-03 1.57212407e-03 1.59334299e-03 + 1.61484830e-03 1.63664387e-03 1.65873361e-03 1.68112150e-03 1.70381156e-03 + 1.72680786e-03 1.75011455e-03 1.77373580e-03 1.79767587e-03 1.82193906e-03 + 1.84652973e-03 1.87145230e-03 1.89671124e-03 1.92231111e-03 1.94825650e-03 + 1.97455207e-03 2.00120255e-03 2.02821273e-03 2.05558747e-03 2.08333169e-03 + 2.11145037e-03 2.13994856e-03 2.16883140e-03 2.19810406e-03 2.22777182e-03 + 2.25784000e-03 2.28831402e-03 2.31919934e-03 2.35050151e-03 2.38222618e-03 + 2.41437903e-03 2.44696584e-03 2.47999248e-03 2.51346488e-03 2.54738906e-03 + 2.58177111e-03 2.61661721e-03 2.65193363e-03 2.68772672e-03 2.72400290e-03 + 2.76076870e-03 2.79803073e-03 2.83579568e-03 2.87407035e-03 2.91286161e-03 + 2.95217643e-03 2.99202189e-03 3.03240514e-03 3.07333344e-03 3.11481415e-03 + 3.15685472e-03 3.19946271e-03 3.24264578e-03 3.28641170e-03 3.33076832e-03 + 3.37572362e-03 3.42128568e-03 3.46746269e-03 3.51426295e-03 3.56169487e-03 + 3.60976698e-03 3.65848792e-03 3.70786645e-03 3.75791143e-03 3.80863187e-03 + 3.86003689e-03 3.91213571e-03 3.96493772e-03 4.01845239e-03 4.07268934e-03 + 4.12765833e-03 4.18336924e-03 4.23983207e-03 4.29705699e-03 4.35505426e-03 + 4.41383433e-03 4.47340774e-03 4.53378522e-03 4.59497761e-03 4.65699591e-03 + 4.71985128e-03 4.78355500e-03 4.84811852e-03 4.91355347e-03 4.97987158e-03 + 5.04708479e-03 5.11520517e-03 5.18424497e-03 5.25421660e-03 5.32513264e-03 + 5.39700583e-03 5.46984909e-03 5.54367551e-03 5.61849837e-03 5.69433110e-03 + 5.77118736e-03 5.84908093e-03 5.92802584e-03 6.00803626e-03 6.08912659e-03 + 6.17131138e-03 6.25460542e-03 6.33902369e-03 6.42458134e-03 6.51129376e-03 + 6.59917653e-03 6.68824546e-03 6.77851655e-03 6.87000603e-03 6.96273034e-03 + 7.05670614e-03 7.15195034e-03 7.24848004e-03 7.34631260e-03 7.44546561e-03 + 7.54595688e-03 7.64780448e-03 7.75102672e-03 7.85564214e-03 7.96166955e-03 + 8.06912802e-03 8.17803685e-03 8.28841561e-03 8.40028416e-03 8.51366260e-03 + 8.62857130e-03 8.74503092e-03 8.86306239e-03 8.98268694e-03 9.10392605e-03 + 9.22680152e-03 9.35133544e-03 9.47755019e-03 9.60546846e-03 9.73511324e-03 + 9.86650783e-03 9.99967585e-03 1.01346412e-02 1.02714283e-02 1.04100615e-02 + 1.05505658e-02 1.06929666e-02 1.08372893e-02 1.09835599e-02 1.11318048e-02 + 1.12820505e-02 1.14343240e-02 1.15886528e-02 1.17450646e-02 1.19035875e-02 + 1.20642499e-02 1.22270808e-02 1.23921094e-02 1.25593654e-02 1.27288789e-02 + 1.29006802e-02 1.30748004e-02 1.32512707e-02 1.34301228e-02 1.36113888e-02 + 1.37951014e-02 1.39812936e-02 1.41699987e-02 1.43612509e-02 1.45550843e-02 + 1.47515340e-02 1.49506351e-02 1.51524234e-02 1.53569353e-02 1.55642075e-02 + 1.57742773e-02 1.59871823e-02 1.62029609e-02 1.64216519e-02 1.66432945e-02 + 1.68679287e-02 1.70955947e-02 1.73263336e-02 1.75601867e-02 1.77971961e-02 + 1.80374044e-02 1.82808548e-02 1.85275911e-02 1.87776576e-02 1.90310992e-02 + 1.92879614e-02 1.95482906e-02 1.98121334e-02 2.00795373e-02 2.03505503e-02 + 2.06252212e-02 2.09035994e-02 2.11857347e-02 2.14716781e-02 2.17614808e-02 + 2.20551950e-02 2.23528734e-02 2.26545697e-02 2.29603378e-02 2.32702330e-02 + 2.35843107e-02 2.39026276e-02 2.42252408e-02 2.45522083e-02 2.48835889e-02 + 2.52194421e-02 2.55598283e-02 2.59048087e-02 2.62544453e-02 2.66088009e-02 + 2.69679393e-02 2.73319249e-02 2.77008232e-02 2.80747006e-02 2.84536242e-02 + 2.88376620e-02 2.92268833e-02 2.96213578e-02 3.00211566e-02 3.04263514e-02 + 3.08370152e-02 3.12532216e-02 3.16750456e-02 3.21025629e-02 3.25358505e-02 + 3.29749861e-02 3.34200487e-02 3.38711183e-02 3.43282759e-02 3.47916039e-02 + 3.52611853e-02 3.57371047e-02 3.62194475e-02 3.67083006e-02 3.72037516e-02 + 3.77058898e-02 3.82148053e-02 3.87305896e-02 3.92533354e-02 3.97831368e-02 + 4.03200888e-02 4.08642881e-02 4.14158324e-02 4.19748209e-02 4.25413541e-02 + 4.31155337e-02 4.36974630e-02 4.42872467e-02 4.48849906e-02 4.54908022e-02 + 4.61047905e-02 4.67270657e-02 4.73577398e-02 4.79969261e-02 4.86447395e-02 + 4.93012964e-02 4.99667148e-02 5.06411144e-02 5.13246163e-02 5.20173434e-02 + 5.27194202e-02 5.34309730e-02 5.41521296e-02 5.48830196e-02 5.56237744e-02 + 5.63745271e-02 5.71354128e-02 5.79065681e-02 5.86881317e-02 5.94802440e-02 + 6.02830474e-02 6.10966863e-02 6.19213068e-02 6.27570572e-02 6.36040877e-02 + 6.44625506e-02 6.53326001e-02 6.62143926e-02 6.71080867e-02 6.80138429e-02 + 6.89318241e-02 6.98621953e-02 7.08051237e-02 7.17607788e-02 7.27293323e-02 + 7.37109584e-02 7.47058334e-02 7.57141363e-02 7.67360482e-02 7.77717528e-02 + 7.88214363e-02 7.98852873e-02 8.09634971e-02 8.20562595e-02 8.31637709e-02 + 8.42862303e-02 8.54238396e-02 8.65768031e-02 8.77453282e-02 8.89296248e-02 + 9.01299058e-02 9.13463870e-02 9.25792870e-02 9.38288274e-02 9.50952329e-02 + 9.63787310e-02 9.76795524e-02 9.89979310e-02 1.00334104e-01 1.01688311e-01 + 1.03060795e-01 1.04451805e-01 1.05861588e-01 1.07290399e-01 1.08738495e-01 + 1.10206136e-01 1.11693586e-01 1.13201111e-01 1.14728984e-01 1.16277479e-01 + 1.17846873e-01 1.19437449e-01 1.21049494e-01 1.22683296e-01 1.24339149e-01 + 1.26017352e-01 1.27718205e-01 1.29442015e-01 1.31189090e-01 1.32959747e-01 + 1.34754301e-01 1.36573077e-01 1.38416400e-01 1.40284603e-01 1.42178021e-01 + 1.44096994e-01 1.46041868e-01 1.48012992e-01 1.50010719e-01 1.52035411e-01 + 1.54087429e-01 1.56167143e-01 1.58274927e-01 1.60411160e-01 1.62576226e-01 + 1.64770513e-01 1.66994417e-01 1.69248337e-01 1.71532678e-01 1.73847850e-01 + 1.76194270e-01 1.78572360e-01 1.80982547e-01 1.83425264e-01 1.85900951e-01 + 1.88410051e-01 1.90953017e-01 1.93530306e-01 1.96142380e-01 1.98789709e-01 + 2.01472769e-01 2.04192042e-01 2.06948017e-01 2.09741189e-01 2.12572061e-01 + 2.15441141e-01 2.18348945e-01 2.21295996e-01 2.24282822e-01 2.27309962e-01 + 2.30377959e-01 2.33487365e-01 2.36638739e-01 2.39832646e-01 2.43069662e-01 + 2.46350367e-01 2.49675352e-01 2.53045214e-01 2.56460560e-01 2.59922002e-01 + 2.63430163e-01 2.66985673e-01 2.70589173e-01 2.74241308e-01 2.77942737e-01 + 2.81694123e-01 2.85496142e-01 2.89349477e-01 2.93254820e-01 2.97212873e-01 + 3.01224348e-01 3.05289966e-01 3.09410457e-01 3.13586563e-01 3.17819033e-01 + 3.22108629e-01 3.26456121e-01 3.30862292e-01 3.35327932e-01 3.39853846e-01 + 3.44440845e-01 3.49089755e-01 3.53801411e-01 3.58576660e-01 3.63416361e-01 + 3.68321383e-01 3.73292608e-01 3.78330929e-01 3.83437252e-01 3.88612496e-01 + 3.93857590e-01 3.99173476e-01 4.04561111e-01 4.10021463e-01 4.15555512e-01 + 4.21164255e-01 4.26848699e-01 4.32609866e-01 4.38448791e-01 4.44366524e-01 + 4.50364128e-01 4.56442682e-01 4.62603278e-01 4.68847024e-01 4.75175041e-01 + 4.81588467e-01 4.88088455e-01 4.94676173e-01 5.01352806e-01 5.08119553e-01 + 5.14977630e-01 5.21928271e-01 5.28972724e-01 5.36112257e-01 5.43348151e-01 + 5.50681708e-01 5.58114246e-01 5.65647101e-01 5.73281626e-01 5.81019194e-01 + 5.88861197e-01 5.96809042e-01 6.04864160e-01 6.13027997e-01 6.21302021e-01 + 6.29687720e-01 6.38186600e-01 6.46800189e-01 6.55530036e-01 6.64377709e-01 + 6.73344799e-01 6.82432918e-01 6.91643699e-01 7.00978797e-01 7.10439891e-01 + 7.20028682e-01 7.29746892e-01 7.39596268e-01 7.49578581e-01 7.59695625e-01 + 7.69949219e-01 7.80341205e-01 7.90873452e-01 8.01547852e-01 8.12366325e-01 + 8.23330813e-01 8.34443290e-01 8.45705751e-01 8.57120221e-01 8.68688753e-01 + 8.80413424e-01 8.92296343e-01 9.04339645e-01 9.16545496e-01 9.28916089e-01 + 9.41453647e-01 9.54160425e-01 9.67038705e-01 9.80090803e-01 9.93319066e-01 + 1.00672587e+00 1.02031362e+00 1.03408477e+00 1.04804179e+00 1.06218719e+00 + 1.07652350e+00 1.09105331e+00 1.10577923e+00 1.12070391e+00 1.13583002e+00 + 1.15116029e+00 1.16669748e+00 1.18244437e+00 1.19840379e+00 1.21457862e+00 + 1.23097175e+00 1.24758615e+00 1.26442479e+00 1.28149070e+00 1.29878695e+00 + 1.31631665e+00 1.33408294e+00 1.35208903e+00 1.37033814e+00 1.38883356e+00 + 1.40757862e+00 1.42657667e+00 1.44583114e+00 1.46534549e+00 1.48512323e+00 + 1.50516790e+00 1.52548311e+00 1.54607252e+00 1.56693983e+00 1.58808878e+00 + 1.60952317e+00 1.63124687e+00 1.65326377e+00 1.67557783e+00 1.69819306e+00 + 1.72111354e+00 1.74434336e+00 1.76788672e+00 1.79174785e+00 1.81593103e+00 + 1.84044061e+00 1.86528099e+00 1.89045664e+00 1.91597209e+00 1.94183192e+00 + 1.96804078e+00 1.99460338e+00 2.02152449e+00 2.04880896e+00 2.07646169e+00 + 2.10448764e+00 2.13289186e+00 2.16167945e+00 2.19085559e+00 2.22042551e+00 + 2.25039454e+00 2.28076806e+00 2.31155154e+00 2.34275049e+00 2.37437054e+00 + 2.40641736e+00 2.43889672e+00 2.47181445e+00 2.50517647e+00 2.53898878e+00 + 2.57325745e+00 2.60798864e+00 2.64318860e+00 2.67886366e+00 2.71502022e+00 + 2.75166478e+00 2.78880393e+00 2.82644435e+00 2.86459281e+00 2.90325615e+00 + 2.94244133e+00 2.98215539e+00 3.02240547e+00 3.06319880e+00 3.10454272e+00 + 3.14644466e+00 3.18891215e+00 3.23195282e+00 3.27557441e+00 3.31978476e+00 + 3.36459182e+00 3.41000363e+00 3.45602837e+00 3.50267430e+00 3.54994981e+00 + 3.59786340e+00 3.64642368e+00 3.69563937e+00 3.74551933e+00 3.79607251e+00 + 3.84730801e+00 3.89923504e+00 3.95186292e+00 4.00520112e+00 4.05925923e+00 + 4.11404695e+00 4.16957414e+00 4.22585079e+00 4.28288699e+00 4.34069302e+00 + 4.39927925e+00 4.45865622e+00 4.51883459e+00 4.57982520e+00 4.64163899e+00 + 4.70428708e+00 4.76778073e+00 4.83213135e+00 4.89735051e+00 4.96344994e+00 + 5.03044150e+00 5.09833725e+00 5.16714939e+00 5.23689028e+00 5.30757246e+00 + 5.37920864e+00 5.45181169e+00 5.52539466e+00 5.59997078e+00 5.67555346e+00 + 5.75215627e+00 5.82979298e+00 5.90847756e+00 5.98822414e+00 6.06904706e+00 + 6.15096084e+00 6.23398021e+00 6.31812010e+00 6.40339561e+00 6.48982209e+00 + 6.57741507e+00 6.66619028e+00 6.75616369e+00 6.84735147e+00 6.93977001e+00 + 7.03343592e+00 7.12836604e+00 7.22457742e+00 7.32208737e+00 7.42091341e+00 + 7.52107330e+00 7.62258505e+00 7.72546690e+00 7.82973734e+00 7.93541512e+00 + 8.04251923e+00 8.15106892e+00 8.26108370e+00 8.37258335e+00 8.48558791e+00 + 8.60011769e+00 8.71619327e+00 8.83383553e+00 8.95306559e+00 9.07390491e+00 + 9.19637518e+00 9.32049844e+00 9.44629699e+00 9.57379343e+00 9.70301069e+00 + 9.83397200e+00 9.96670088e+00 1.01012212e+01 1.02375571e+01 1.03757332e+01 + 1.05157742e+01 1.06577054e+01 1.08015522e+01 1.09473405e+01 1.10950965e+01 + 1.12448467e+01 1.13966182e+01 1.15504380e+01 1.17063340e+01 1.18643341e+01 + 1.20244668e+01 1.21867607e+01 1.23512451e+01 1.25179496e+01 1.26869041e+01 + 1.28581389e+01 1.30316849e+01 1.32075732e+01 1.33858355e+01 1.35665038e+01 + 1.37496106e+01 1.39351888e+01 1.41232717e+01 1.43138932e+01 1.45070874e+01 + 1.47028892e+01 1.49013338e+01 1.51024567e+01 1.53062942e+01 1.55128829e+01 + 1.57222599e+01 1.59344629e+01 1.61495300e+01 1.63674998e+01 1.65884115e+01 + 1.68123049e+01 1.70392202e+01 1.72691982e+01 1.75022801e+01 1.77385080e+01 + 1.79779242e+01 1.82205718e+01 1.84664944e+01 1.87157363e+01 1.89683421e+01 + 1.92243574e+01 1.94838281e+01 1.97468008e+01 2.00133229e+01 2.02834423e+01 + 2.05572074e+01 2.08346676e+01 2.11158726e+01 2.14008730e+01 2.16897201e+01 + 2.19824657e+01 2.22791625e+01 2.25798639e+01 2.28846237e+01 2.31934970e+01 + 2.35065390e+01 2.38238062e+01 2.41453556e+01 2.44712449e+01 2.48015327e+01 + 2.51362784e+01 2.54755421e+01 2.58193849e+01 2.61678685e+01 2.65210556e+01 + 2.68790097e+01 2.72417950e+01 2.76094769e+01 2.79821213e+01 2.83597954e+01 + 2.87425669e+01 2.91305046e+01 2.95236783e+01 2.99221587e+01 3.03260174e+01 + 3.07353269e+01 3.11501609e+01 3.15705939e+01 3.19967014e+01 3.24285601e+01 + 3.28662476e+01 3.33098426e+01 3.37594247e+01 3.42150749e+01 3.46768749e+01 + 3.51449079e+01 3.56192579e+01 3.61000102e+01 3.65872511e+01 3.70810684e+01 + 3.75815507e+01 3.80887880e+01 3.86028714e+01 3.91238935e+01 3.96519477e+01 + 4.01871291e+01 4.07295339e+01 4.12792594e+01 4.18364046e+01 4.24010695e+01 + 4.29733558e+01 4.35533661e+01 4.41412049e+01 4.47369777e+01 4.53407916e+01 + 4.59527552e+01 4.65729784e+01 4.72015728e+01 4.78386513e+01 4.84843284e+01 + 4.91387202e+01 4.98019444e+01 5.04741200e+01 5.11553680e+01 5.18458108e+01 + 5.25455725e+01 5.32547788e+01 5.39735573e+01 5.47020371e+01 5.54403492e+01 + 5.61886263e+01 5.69470028e+01 5.77156152e+01 5.84946015e+01 5.92841017e+01 + 6.00842578e+01 6.08952136e+01 6.17171149e+01 6.25501093e+01 6.33943466e+01 + 6.42499786e+01 6.51171590e+01 6.59960438e+01 6.68867908e+01 6.77895602e+01 + 6.87045143e+01 6.96318175e+01 7.05716365e+01 7.15241402e+01 7.24894998e+01 + 7.34678888e+01 7.44594832e+01 7.54644611e+01 7.64830031e+01 7.75152924e+01 + 7.85615144e+01 7.96218573e+01 8.06965116e+01 8.17856705e+01 8.28895297e+01 + 8.40082878e+01 8.51421456e+01 8.62913071e+01 8.74559788e+01 8.86363701e+01 + 8.98326931e+01 9.10451628e+01 9.22739972e+01 9.35194171e+01 9.47816465e+01 + 9.60609121e+01 9.73574439e+01 9.86714750e+01 1.00003242e+02 1.01352983e+02 + 1.02720942e+02 1.04107364e+02 1.05512498e+02 1.06936598e+02 1.08379919e+02 + 1.09842720e+02 1.11325265e+02 1.12827819e+02 1.14350653e+02 1.15894041e+02 + 1.17458261e+02 1.19043592e+02 1.20650320e+02 1.22278735e+02 1.23929128e+02 + 1.25601797e+02 1.27297041e+02 1.29015166e+02 1.30756481e+02 1.32521298e+02 + 1.34309935e+02 1.36122713e+02 1.37959958e+02 1.39822000e+02 1.41709174e+02 + 1.43621820e+02 1.45560280e+02 1.47524903e+02 1.49516044e+02 1.51534058e+02 + 1.53579310e+02 1.55652166e+02 1.57752999e+02 1.59882188e+02 1.62040114e+02 + 1.64227166e+02 1.66443736e+02 1.68690223e+02 1.70967031e+02 1.73274569e+02 + 1.75613251e+02 1.77983499e+02 1.80385738e+02 1.82820400e+02 1.85287923e+02 + 1.87788750e+02 1.90323330e+02 1.92892119e+02 1.95495580e+02 1.98134179e+02 + 2.00808391e+02 2.03518697e+02 2.06265584e+02 2.09049546e+02 2.11871083e+02 + 2.14730702e+02 2.17628917e+02 2.20566249e+02 2.23543226e+02 2.26560384e+02 + 2.29618264e+02 2.32717416e+02 2.35858398e+02 2.39041773e+02 2.42268114e+02 + 2.45538001e+02 2.48852022e+02 2.52210771e+02 2.55614854e+02 2.59064882e+02 + 2.62561474e+02 2.66105260e+02 2.69696877e+02 2.73336969e+02 2.77026192e+02 + 2.80765207e+02 2.84554689e+02 2.88395317e+02 2.92287781e+02 2.96232783e+02 + 3.00231029e+02 3.04283240e+02 3.08390144e+02 3.12552478e+02 3.16770992e+02 + 3.21046442e+02 3.25379599e+02 3.29771239e+02 3.34222154e+02 3.38733142e+02 + 3.43305015e+02 3.47938595e+02 3.52634714e+02 3.57394216e+02 3.62217957e+02 + 3.67106805e+02 3.72061636e+02 3.77083343e+02 3.82172828e+02 3.87331006e+02 + 3.92558803e+02 3.97857160e+02 4.03227029e+02 4.08669374e+02 4.14185175e+02 + 4.19775422e+02 4.25441121e+02 4.31183290e+02 4.37002961e+02 4.42901179e+02 + 4.48879006e+02 4.54937515e+02 4.61077796e+02 4.67300952e+02 4.73608102e+02 + 4.80000379e+02 4.86478933e+02 4.93044927e+02 4.99699543e+02 5.06443976e+02 + 5.13279438e+02 5.20207158e+02 5.27228382e+02 5.34344371e+02 5.41556404e+02 + 5.48865778e+02 5.56273806e+02 5.63781821e+02 5.71391170e+02 5.79103223e+02 + 5.86919366e+02 5.94841002e+02 6.02869557e+02 6.11006473e+02 6.19253213e+02 + 6.27611259e+02 6.36082113e+02 6.44667298e+02 6.53368357e+02 6.62186855e+02 + 6.71124375e+02 6.80182525e+02 6.89362932e+02 6.98667247e+02 7.08097142e+02 + 7.17654312e+02 7.27340476e+02 7.37157373e+02 7.47106768e+02 7.57190450e+02 + 7.67410232e+02 7.77767949e+02 7.88265465e+02 7.98904665e+02 8.09687462e+02 + 8.20615795e+02 8.31691626e+02 8.42916949e+02 8.54293779e+02 8.65824161e+02 + 8.77510169e+02 8.89353903e+02 9.01357492e+02 9.13523092e+02 9.25852892e+02 + 9.38349106e+02 9.51013982e+02 9.63849795e+02 9.76858852e+02 9.90043493e+02 + 1.00340609e+03 1.01694903e+03 1.03067477e+03 1.04458576e+03 1.05868451e+03 + 1.07297355e+03 1.08745545e+03 1.10213281e+03 1.11700827e+03 1.13208451e+03 + 1.14736422e+03 1.16285017e+03 1.17854513e+03 1.19445193e+03 1.21057342e+03 + 1.22691250e+03 1.24347211e+03 1.26025522e+03 1.27726485e+03 1.29450407e+03 + 1.31197596e+03 1.32968367e+03 1.34763038e+03 1.36581931e+03 1.38425374e+03 + 1.40293698e+03 1.42187239e+03 1.44106337e+03 1.46051336e+03 1.48022588e+03 + 1.50020445e+03 1.52045267e+03 1.54097419e+03 1.56177268e+03 1.58285189e+03 + 1.60421560e+03 1.62586766e+03 1.64781196e+03 1.67005244e+03 1.69259310e+03 + 1.71543799e+03 1.73859121e+03 1.76205693e+03 1.78583938e+03 1.80994281e+03 + 1.83437156e+03 1.85913003e+03 1.88422266e+03 1.90965397e+03 1.93542853e+03 + 1.96155096e+03 1.98802597e+03 2.01485831e+03 2.04205280e+03 2.06961434e+03 + 2.09754787e+03 2.12585843e+03 2.15455109e+03 2.18363101e+03 2.21310343e+03 + 2.24297363e+03 2.27324699e+03 2.30392895e+03 2.33502503e+03 2.36654081e+03 + 2.39848195e+03 2.43085420e+03 2.46366339e+03 2.49691539e+03 2.53061620e+03 + 2.56477187e+03 2.59938853e+03 2.63447242e+03 2.67002983e+03 2.70606716e+03 + 2.74259088e+03 2.77960756e+03 2.81712386e+03 2.85514651e+03 2.89368236e+03 + 2.93273832e+03 2.97232142e+03 3.01243877e+03 3.05309759e+03 3.09430517e+03 + 3.13606893e+03 3.17839638e+03 3.22129512e+03 3.26477287e+03 3.30883743e+03 + 3.35349673e+03 3.39875879e+03 3.44463176e+03 3.49112387e+03 3.53824349e+03 + 3.58599907e+03 3.63439922e+03 3.68345262e+03 3.73316809e+03 3.78355457e+03 + 3.83462112e+03 3.88637691e+03 3.93883124e+03 3.99199356e+03 4.04587340e+03 + 4.10048045e+03 4.15582454e+03 4.21191561e+03 4.26876373e+03 4.32637913e+03 + 4.38477217e+03 4.44395333e+03 4.50393327e+03 4.56472275e+03 4.62633270e+03 + 4.68877420e+03 4.75205848e+03 4.81619690e+03 4.88120099e+03 4.94708244e+03 + 5.01385310e+03 5.08152495e+03 5.15011018e+03 5.21962109e+03 5.29007019e+03 + 5.36147014e+03 5.43383378e+03 5.50717410e+03 5.58150430e+03 5.65683773e+03 + 5.73318793e+03 5.81056864e+03 5.88899374e+03 5.96847735e+03 6.04903375e+03 + 6.13067741e+03 6.21342302e+03 6.29728544e+03 6.38227975e+03 6.46842123e+03 + 6.55572536e+03 6.64420783e+03 6.73388454e+03 6.82477162e+03 6.91688540e+03 + 7.01024244e+03 7.10485951e+03 7.20075363e+03 7.29794203e+03 7.39644218e+03 + 7.49627178e+03 7.59744879e+03 7.69999137e+03 7.80391797e+03 7.90924727e+03 + 8.01599819e+03 8.12418992e+03 8.23384192e+03 8.34497389e+03 8.45760580e+03 + 8.57175791e+03 8.68745072e+03 8.80470504e+03 8.92354193e+03 9.04398276e+03 + 9.16604918e+03 9.28976313e+03 9.41514684e+03 9.54222285e+03 9.67101401e+03 + 9.80154345e+03 9.93383465e+03 1.00679114e+04 1.02037977e+04 1.03415182e+04 + 1.04810974e+04 1.06225605e+04 1.07659329e+04 1.09112405e+04 1.10585092e+04 + 1.12077657e+04 1.13590366e+04 1.15123493e+04 1.16677312e+04 1.18252103e+04 + 1.19848148e+04 1.21465736e+04 1.23105156e+04 1.24766704e+04 1.26450677e+04 + 1.28157379e+04 1.29887116e+04 1.31640199e+04 1.33416944e+04 1.35217669e+04 + 1.37042699e+04 1.38892361e+04 1.40766987e+04 1.42666916e+04 1.44592488e+04 + 1.46544049e+04 1.48521951e+04 1.50526548e+04 1.52558201e+04 1.54617276e+04 + 1.56704142e+04 1.58819174e+04 1.60962752e+04 1.63135263e+04 1.65337095e+04 + 1.67568646e+04 1.69830316e+04 1.72122512e+04 1.74445645e+04 1.76800134e+04 + 1.79186401e+04 1.81604876e+04 1.84055993e+04 1.86540192e+04 1.89057921e+04 + 1.91609631e+04 1.94195781e+04 1.96816837e+04 1.99473269e+04 2.02165555e+04 + 2.04894179e+04 2.07659631e+04 2.10462408e+04 2.13303014e+04 2.16181960e+04 + 2.19099763e+04 2.22056947e+04 2.25054044e+04 2.28091593e+04 2.31170140e+04 + 2.34290238e+04 2.37452448e+04 2.40657338e+04 2.43905484e+04 2.47197470e+04 + 2.50533889e+04 2.53915339e+04 2.57342428e+04 2.60815773e+04 2.64335997e+04 + 2.67903734e+04 2.71519624e+04 2.75184318e+04 2.78898474e+04 2.82662760e+04 + 2.86477853e+04 2.90344437e+04 2.94263209e+04 2.98234873e+04 3.02260142e+04 + 3.06339740e+04 3.10474400e+04 3.14664865e+04 3.18911890e+04 3.23216236e+04 + 3.27578678e+04 3.31999999e+04 3.36480995e+04 3.41022471e+04 3.45625243e+04 + 3.50290139e+04 3.55017997e+04 3.59809666e+04 3.64666009e+04 3.69587897e+04 + 3.74576216e+04 3.79631862e+04 3.84755745e+04 3.89948784e+04 3.95211913e+04 + 4.00546079e+04 4.05952240e+04 4.11431368e+04 4.16984447e+04 4.22612476e+04 + 4.28316467e+04 4.34097444e+04 4.39956447e+04 4.45894528e+04 4.51912756e+04 + 4.58012212e+04 4.64193992e+04 4.70459207e+04 4.76808984e+04 4.83244463e+04 + 4.89766802e+04 4.96377173e+04 5.03076764e+04 5.09866779e+04 5.16748439e+04 + 5.23722980e+04 5.30791657e+04 5.37955739e+04 5.45216515e+04 5.52575289e+04 + 5.60033385e+04 5.67592142e+04 5.75252919e+04 5.83017094e+04 5.90886062e+04 + 5.98861237e+04 6.06944053e+04 6.15135963e+04 6.23438438e+04 6.31852972e+04 + 6.40381076e+04 6.49024284e+04 6.57784150e+04 6.66662247e+04 6.75660171e+04 + 6.84779540e+04 6.94021994e+04 7.03389192e+04 7.12882819e+04 7.22504581e+04 + 7.32256209e+04 7.42139453e+04 7.52156092e+04 7.62307924e+04 7.72596776e+04 + 7.83024497e+04 7.93592960e+04 8.04304065e+04 8.15159738e+04 8.26161929e+04 + 8.37312617e+04 8.48613806e+04 8.60067526e+04 8.71675837e+04 8.83440825e+04 + 8.95364604e+04 9.07449319e+04 9.19697141e+04 9.32110271e+04 9.44690942e+04 + 9.57441413e+04 9.70363977e+04 9.83460956e+04 9.96734705e+04 1.01018761e+05 + 1.02382209e+05 1.03764059e+05 1.05164560e+05 1.06583964e+05 1.08022525e+05 + 1.09480502e+05 1.10958158e+05 1.12455758e+05 1.13973570e+05 1.15511869e+05 + 1.17070930e+05 1.18651033e+05 1.20252464e+05 1.21875508e+05 1.23520459e+05 + 1.25187612e+05 1.26877266e+05 1.28589725e+05 1.30325298e+05 1.32084295e+05 + 1.33867034e+05 1.35673834e+05 1.37505020e+05 1.39360922e+05 1.41241873e+05 + 1.43148212e+05 1.45080280e+05 1.47038425e+05 1.49022999e+05 1.51034359e+05 + 1.53072866e+05 1.55138887e+05 1.57232793e+05 1.59354960e+05 1.61505770e+05 + 1.63685609e+05 1.65894870e+05 1.68133949e+05 1.70403249e+05 1.72703178e+05 + 1.75034149e+05 1.77396580e+05 1.79790898e+05 1.82217531e+05 1.84676917e+05 + 1.87169497e+05 1.89695719e+05 1.92256038e+05 1.94850913e+05 1.97480811e+05 + 2.00146205e+05 2.02847573e+05 2.05585402e+05 2.08360183e+05 2.11172416e+05 + 2.14022605e+05 2.16911263e+05 2.19838909e+05 2.22806069e+05 2.25813278e+05 + 2.28861074e+05 2.31950007e+05 2.35080630e+05 2.38253508e+05 2.41469210e+05 + 2.44728314e+05 2.48031406e+05 2.51379080e+05 2.54771938e+05 2.58210588e+05 + 2.61695651e+05 2.65227751e+05 2.68807523e+05 2.72435612e+05 2.76112669e+05 + 2.79839355e+05 2.83616340e+05 2.87444303e+05 2.91323932e+05 2.95255924e+05 + 2.99240986e+05 3.03279835e+05 3.07373196e+05 3.11521804e+05 3.15726407e+05 + 3.19987758e+05 3.24306626e+05 3.28683784e+05 3.33120022e+05 3.37616135e+05 + 3.42172931e+05 3.46791231e+05 3.51471864e+05 3.56215672e+05 3.61023506e+05 + 3.65896232e+05 3.70834725e+05 3.75839872e+05 3.80912574e+05 3.86053742e+05 + 3.91264300e+05 3.96545185e+05 4.01897346e+05 4.07321745e+05 4.12819356e+05 + 4.18391169e+05 4.24038185e+05 4.29761418e+05 4.35561898e+05 4.41440667e+05 + 4.47398781e+05 4.53437311e+05 4.59557344e+05 4.65759979e+05 4.72046330e+05 + 4.78417528e+05 4.84874718e+05 4.91419060e+05 4.98051732e+05 5.04773924e+05 + 5.11586846e+05 5.18491721e+05 5.25489792e+05 5.32582315e+05 5.39770566e+05 + 5.47055836e+05 5.54439436e+05 5.61922691e+05 5.69506949e+05 5.77193570e+05 + 5.84983938e+05 5.92879453e+05 6.00881532e+05 6.08991616e+05 6.17211161e+05 + 6.25541646e+05 6.33984566e+05 6.42541441e+05 6.51213808e+05 6.60003225e+05 + 1.65580254e-01 1.65563515e-01 1.65546741e-01 1.65529929e-01 1.65513082e-01 + 1.65496198e-01 1.65479277e-01 1.65462319e-01 1.65445324e-01 1.65428292e-01 + 1.65411223e-01 1.65394117e-01 1.65376974e-01 1.65359793e-01 1.65342574e-01 + 1.65325318e-01 1.65308025e-01 1.65290693e-01 1.65273323e-01 1.65255915e-01 + 1.65238469e-01 1.65220985e-01 1.65203462e-01 1.65185901e-01 1.65168301e-01 + 1.65150662e-01 1.65132985e-01 1.65115268e-01 1.65097513e-01 1.65079718e-01 + 1.65061884e-01 1.65044011e-01 1.65026098e-01 1.65008145e-01 1.64990153e-01 + 1.64972120e-01 1.64954048e-01 1.64935936e-01 1.64917783e-01 1.64899591e-01 + 1.64881357e-01 1.64863083e-01 1.64844769e-01 1.64826414e-01 1.64808017e-01 + 1.64789580e-01 1.64771102e-01 1.64752582e-01 1.64734021e-01 1.64715418e-01 + 1.64696774e-01 1.64678088e-01 1.64659360e-01 1.64640590e-01 1.64621778e-01 + 1.64602924e-01 1.64584027e-01 1.64565088e-01 1.64546107e-01 1.64527082e-01 + 1.64508015e-01 1.64488905e-01 1.64469751e-01 1.64450555e-01 1.64431315e-01 + 1.64412031e-01 1.64392704e-01 1.64373334e-01 1.64353919e-01 1.64334460e-01 + 1.64314958e-01 1.64295411e-01 1.64275819e-01 1.64256183e-01 1.64236503e-01 + 1.64216777e-01 1.64197007e-01 1.64177192e-01 1.64157331e-01 1.64137425e-01 + 1.64117474e-01 1.64097477e-01 1.64077435e-01 1.64057346e-01 1.64037212e-01 + 1.64017032e-01 1.63996805e-01 1.63976532e-01 1.63956212e-01 1.63935846e-01 + 1.63915433e-01 1.63894973e-01 1.63874465e-01 1.63853911e-01 1.63833309e-01 + 1.63812660e-01 1.63791963e-01 1.63771218e-01 1.63750426e-01 1.63729585e-01 + 1.63708696e-01 1.63687759e-01 1.63666773e-01 1.63645738e-01 1.63624655e-01 + 1.63603523e-01 1.63582341e-01 1.63561111e-01 1.63539831e-01 1.63518501e-01 + 1.63497122e-01 1.63475693e-01 1.63454214e-01 1.63432685e-01 1.63411106e-01 + 1.63389476e-01 1.63367795e-01 1.63346064e-01 1.63324282e-01 1.63302449e-01 + 1.63280565e-01 1.63258629e-01 1.63236642e-01 1.63214603e-01 1.63192512e-01 + 1.63170369e-01 1.63148174e-01 1.63125927e-01 1.63103628e-01 1.63081275e-01 + 1.63058870e-01 1.63036412e-01 1.63013901e-01 1.62991337e-01 1.62968719e-01 + 1.62946048e-01 1.62923323e-01 1.62900544e-01 1.62877710e-01 1.62854823e-01 + 1.62831881e-01 1.62808885e-01 1.62785834e-01 1.62762728e-01 1.62739567e-01 + 1.62716350e-01 1.62693078e-01 1.62669751e-01 1.62646368e-01 1.62622929e-01 + 1.62599433e-01 1.62575882e-01 1.62552274e-01 1.62528609e-01 1.62504888e-01 + 1.62481109e-01 1.62457274e-01 1.62433381e-01 1.62409431e-01 1.62385423e-01 + 1.62361357e-01 1.62337233e-01 1.62313050e-01 1.62288810e-01 1.62264510e-01 + 1.62240152e-01 1.62215735e-01 1.62191259e-01 1.62166724e-01 1.62142129e-01 + 1.62117474e-01 1.62092759e-01 1.62067985e-01 1.62043150e-01 1.62018255e-01 + 1.61993299e-01 1.61968282e-01 1.61943204e-01 1.61918065e-01 1.61892865e-01 + 1.61867603e-01 1.61842279e-01 1.61816893e-01 1.61791445e-01 1.61765935e-01 + 1.61740362e-01 1.61714726e-01 1.61689028e-01 1.61663266e-01 1.61637441e-01 + 1.61611552e-01 1.61585600e-01 1.61559583e-01 1.61533503e-01 1.61507358e-01 + 1.61481148e-01 1.61454874e-01 1.61428535e-01 1.61402130e-01 1.61375660e-01 + 1.61349125e-01 1.61322523e-01 1.61295856e-01 1.61269123e-01 1.61242323e-01 + 1.61215456e-01 1.61188522e-01 1.61161522e-01 1.61134454e-01 1.61107319e-01 + 1.61080115e-01 1.61052844e-01 1.61025505e-01 1.60998098e-01 1.60970621e-01 + 1.60943076e-01 1.60915462e-01 1.60887779e-01 1.60860026e-01 1.60832204e-01 + 1.60804311e-01 1.60776349e-01 1.60748316e-01 1.60720212e-01 1.60692038e-01 + 1.60663792e-01 1.60635475e-01 1.60607087e-01 1.60578627e-01 1.60550095e-01 + 1.60521491e-01 1.60492814e-01 1.60464065e-01 1.60435242e-01 1.60406347e-01 + 1.60377378e-01 1.60348335e-01 1.60319219e-01 1.60290028e-01 1.60260764e-01 + 1.60231424e-01 1.60202010e-01 1.60172520e-01 1.60142955e-01 1.60113315e-01 + 1.60083599e-01 1.60053807e-01 1.60023938e-01 1.59993993e-01 1.59963971e-01 + 1.59933872e-01 1.59903696e-01 1.59873442e-01 1.59843110e-01 1.59812700e-01 + 1.59782212e-01 1.59751645e-01 1.59720999e-01 1.59690274e-01 1.59659470e-01 + 1.59628586e-01 1.59597622e-01 1.59566578e-01 1.59535454e-01 1.59504249e-01 + 1.59472963e-01 1.59441595e-01 1.59410146e-01 1.59378616e-01 1.59347003e-01 + 1.59315308e-01 1.59283531e-01 1.59251670e-01 1.59219726e-01 1.59187699e-01 + 1.59155589e-01 1.59123394e-01 1.59091115e-01 1.59058751e-01 1.59026303e-01 + 1.58993770e-01 1.58961151e-01 1.58928446e-01 1.58895656e-01 1.58862779e-01 + 1.58829816e-01 1.58796766e-01 1.58763628e-01 1.58730404e-01 1.58697092e-01 + 1.58663691e-01 1.58630203e-01 1.58596625e-01 1.58562959e-01 1.58529204e-01 + 1.58495359e-01 1.58461425e-01 1.58427400e-01 1.58393285e-01 1.58359079e-01 + 1.58324782e-01 1.58290394e-01 1.58255915e-01 1.58221343e-01 1.58186679e-01 + 1.58151923e-01 1.58117073e-01 1.58082131e-01 1.58047095e-01 1.58011965e-01 + 1.57976741e-01 1.57941422e-01 1.57906009e-01 1.57870501e-01 1.57834897e-01 + 1.57799197e-01 1.57763402e-01 1.57727510e-01 1.57691521e-01 1.57655435e-01 + 1.57619252e-01 1.57582971e-01 1.57546592e-01 1.57510115e-01 1.57473538e-01 + 1.57436863e-01 1.57400088e-01 1.57363214e-01 1.57326239e-01 1.57289164e-01 + 1.57251989e-01 1.57214712e-01 1.57177333e-01 1.57139853e-01 1.57102271e-01 + 1.57064586e-01 1.57026798e-01 1.56988907e-01 1.56950912e-01 1.56912813e-01 + 1.56874610e-01 1.56836302e-01 1.56797890e-01 1.56759371e-01 1.56720748e-01 + 1.56682017e-01 1.56643181e-01 1.56604237e-01 1.56565187e-01 1.56526028e-01 + 1.56486762e-01 1.56447387e-01 1.56407903e-01 1.56368311e-01 1.56328609e-01 + 1.56288796e-01 1.56248874e-01 1.56208841e-01 1.56168697e-01 1.56128441e-01 + 1.56088074e-01 1.56047594e-01 1.56007002e-01 1.55966297e-01 1.55925478e-01 + 1.55884546e-01 1.55843499e-01 1.55802338e-01 1.55761062e-01 1.55719670e-01 + 1.55678163e-01 1.55636539e-01 1.55594799e-01 1.55552941e-01 1.55510966e-01 + 1.55468873e-01 1.55426662e-01 1.55384333e-01 1.55341884e-01 1.55299315e-01 + 1.55256627e-01 1.55213818e-01 1.55170888e-01 1.55127838e-01 1.55084665e-01 + 1.55041370e-01 1.54997953e-01 1.54954413e-01 1.54910749e-01 1.54866961e-01 + 1.54823050e-01 1.54779013e-01 1.54734851e-01 1.54690564e-01 1.54646150e-01 + 1.54601610e-01 1.54556943e-01 1.54512149e-01 1.54467226e-01 1.54422176e-01 + 1.54376996e-01 1.54331687e-01 1.54286249e-01 1.54240680e-01 1.54194981e-01 + 1.54149150e-01 1.54103188e-01 1.54057094e-01 1.54010867e-01 1.53964507e-01 + 1.53918014e-01 1.53871386e-01 1.53824625e-01 1.53777728e-01 1.53730696e-01 + 1.53683527e-01 1.53636223e-01 1.53588781e-01 1.53541202e-01 1.53493486e-01 + 1.53445630e-01 1.53397636e-01 1.53349503e-01 1.53301229e-01 1.53252815e-01 + 1.53204260e-01 1.53155564e-01 1.53106726e-01 1.53057745e-01 1.53008621e-01 + 1.52959354e-01 1.52909943e-01 1.52860387e-01 1.52810686e-01 1.52760840e-01 + 1.52710847e-01 1.52660708e-01 1.52610421e-01 1.52559987e-01 1.52509404e-01 + 1.52458673e-01 1.52407792e-01 1.52356762e-01 1.52305580e-01 1.52254248e-01 + 1.52202764e-01 1.52151129e-01 1.52099340e-01 1.52047398e-01 1.51995302e-01 + 1.51943052e-01 1.51890647e-01 1.51838087e-01 1.51785370e-01 1.51732497e-01 + 1.51679467e-01 1.51626279e-01 1.51572932e-01 1.51519426e-01 1.51465761e-01 + 1.51411936e-01 1.51357950e-01 1.51303802e-01 1.51249493e-01 1.51195021e-01 + 1.51140386e-01 1.51085587e-01 1.51030624e-01 1.50975496e-01 1.50920202e-01 + 1.50864742e-01 1.50809116e-01 1.50753322e-01 1.50697360e-01 1.50641229e-01 + 1.50584929e-01 1.50528459e-01 1.50471818e-01 1.50415007e-01 1.50358023e-01 + 1.50300867e-01 1.50243538e-01 1.50186035e-01 1.50128358e-01 1.50070506e-01 + 1.50012478e-01 1.49954274e-01 1.49895893e-01 1.49837334e-01 1.49778596e-01 + 1.49719680e-01 1.49660584e-01 1.49601308e-01 1.49541850e-01 1.49482211e-01 + 1.49422390e-01 1.49362385e-01 1.49302197e-01 1.49241824e-01 1.49181266e-01 + 1.49120523e-01 1.49059593e-01 1.48998475e-01 1.48937170e-01 1.48875676e-01 + 1.48813992e-01 1.48752119e-01 1.48690055e-01 1.48627799e-01 1.48565351e-01 + 1.48502710e-01 1.48439876e-01 1.48376847e-01 1.48313623e-01 1.48250203e-01 + 1.48186586e-01 1.48122773e-01 1.48058761e-01 1.47994550e-01 1.47930139e-01 + 1.47865528e-01 1.47800717e-01 1.47735703e-01 1.47670486e-01 1.47605066e-01 + 1.47539442e-01 1.47473613e-01 1.47407579e-01 1.47341337e-01 1.47274889e-01 + 1.47208232e-01 1.47141367e-01 1.47074292e-01 1.47007006e-01 1.46939509e-01 + 1.46871800e-01 1.46803878e-01 1.46735743e-01 1.46667393e-01 1.46598827e-01 + 1.46530046e-01 1.46461047e-01 1.46391831e-01 1.46322396e-01 1.46252742e-01 + 1.46182867e-01 1.46112772e-01 1.46042454e-01 1.45971913e-01 1.45901149e-01 + 1.45830160e-01 1.45758946e-01 1.45687506e-01 1.45615839e-01 1.45543943e-01 + 1.45471819e-01 1.45399465e-01 1.45326880e-01 1.45254064e-01 1.45181016e-01 + 1.45107734e-01 1.45034218e-01 1.44960467e-01 1.44886480e-01 1.44812256e-01 + 1.44737795e-01 1.44663094e-01 1.44588154e-01 1.44512974e-01 1.44437552e-01 + 1.44361888e-01 1.44285981e-01 1.44209829e-01 1.44133432e-01 1.44056789e-01 + 1.43979899e-01 1.43902761e-01 1.43825374e-01 1.43747737e-01 1.43669849e-01 + 1.43591710e-01 1.43513317e-01 1.43434671e-01 1.43355770e-01 1.43276613e-01 + 1.43197200e-01 1.43117528e-01 1.43037599e-01 1.42957409e-01 1.42876959e-01 + 1.42796247e-01 1.42715272e-01 1.42634034e-01 1.42552530e-01 1.42470761e-01 + 1.42388726e-01 1.42306422e-01 1.42223850e-01 1.42141007e-01 1.42057894e-01 + 1.41974509e-01 1.41890851e-01 1.41806919e-01 1.41722711e-01 1.41638228e-01 + 1.41553467e-01 1.41468428e-01 1.41383109e-01 1.41297511e-01 1.41211630e-01 + 1.41125467e-01 1.41039020e-01 1.40952288e-01 1.40865271e-01 1.40777966e-01 + 1.40690373e-01 1.40602491e-01 1.40514319e-01 1.40425855e-01 1.40337099e-01 + 1.40248048e-01 1.40158703e-01 1.40069062e-01 1.39979124e-01 1.39888888e-01 + 1.39798352e-01 1.39707515e-01 1.39616377e-01 1.39524936e-01 1.39433191e-01 + 1.39341140e-01 1.39248784e-01 1.39156119e-01 1.39063146e-01 1.38969862e-01 + 1.38876268e-01 1.38782361e-01 1.38688141e-01 1.38593606e-01 1.38498755e-01 + 1.38403586e-01 1.38308099e-01 1.38212293e-01 1.38116166e-01 1.38019716e-01 + 1.37922943e-01 1.37825846e-01 1.37728423e-01 1.37630672e-01 1.37532594e-01 + 1.37434185e-01 1.37335446e-01 1.37236375e-01 1.37136970e-01 1.37037230e-01 + 1.36937155e-01 1.36836742e-01 1.36735991e-01 1.36634900e-01 1.36533467e-01 + 1.36431692e-01 1.36329574e-01 1.36227110e-01 1.36124300e-01 1.36021142e-01 + 1.35917635e-01 1.35813778e-01 1.35709568e-01 1.35605006e-01 1.35500089e-01 + 1.35394817e-01 1.35289187e-01 1.35183199e-01 1.35076851e-01 1.34970142e-01 + 1.34863070e-01 1.34755634e-01 1.34647833e-01 1.34539665e-01 1.34431128e-01 + 1.34322223e-01 1.34212946e-01 1.34103297e-01 1.33993274e-01 1.33882876e-01 + 1.33772101e-01 1.33660948e-01 1.33549416e-01 1.33437503e-01 1.33325207e-01 + 1.33212528e-01 1.33099463e-01 1.32986012e-01 1.32872172e-01 1.32757943e-01 + 1.32643323e-01 1.32528310e-01 1.32412904e-01 1.32297101e-01 1.32180902e-01 + 1.32064305e-01 1.31947307e-01 1.31829908e-01 1.31712106e-01 1.31593899e-01 + 1.31475287e-01 1.31356267e-01 1.31236838e-01 1.31116998e-01 1.30996746e-01 + 1.30876081e-01 1.30755001e-01 1.30633504e-01 1.30511588e-01 1.30389253e-01 + 1.30266497e-01 1.30143318e-01 1.30019714e-01 1.29895684e-01 1.29771227e-01 + 1.29646341e-01 1.29521024e-01 1.29395274e-01 1.29269091e-01 1.29142472e-01 + 1.29015417e-01 1.28887922e-01 1.28759987e-01 1.28631611e-01 1.28502791e-01 + 1.28373525e-01 1.28243813e-01 1.28113653e-01 1.27983043e-01 1.27851981e-01 + 1.27720466e-01 1.27588496e-01 1.27456070e-01 1.27323186e-01 1.27189841e-01 + 1.27056036e-01 1.26921767e-01 1.26787033e-01 1.26651833e-01 1.26516166e-01 + 1.26380028e-01 1.26243419e-01 1.26106337e-01 1.25968780e-01 1.25830747e-01 + 1.25692235e-01 1.25553244e-01 1.25413771e-01 1.25273815e-01 1.25133375e-01 + 1.24992448e-01 1.24851032e-01 1.24709127e-01 1.24566730e-01 1.24423839e-01 + 1.24280454e-01 1.24136571e-01 1.23992190e-01 1.23847309e-01 1.23701926e-01 + 1.23556040e-01 1.23409647e-01 1.23262748e-01 1.23115340e-01 1.22967422e-01 + 1.22818991e-01 1.22670046e-01 1.22520585e-01 1.22370607e-01 1.22220110e-01 + 1.22069091e-01 1.21917550e-01 1.21765484e-01 1.21612892e-01 1.21459773e-01 + 1.21306123e-01 1.21151942e-01 1.20997228e-01 1.20841979e-01 1.20686193e-01 + 1.20529869e-01 1.20373004e-01 1.20215598e-01 1.20057648e-01 1.19899152e-01 + 1.19740109e-01 1.19580518e-01 1.19420375e-01 1.19259680e-01 1.19098431e-01 + 1.18936626e-01 1.18774263e-01 1.18611341e-01 1.18447857e-01 1.18283810e-01 + 1.18119199e-01 1.17954021e-01 1.17788276e-01 1.17621960e-01 1.17455072e-01 + 1.17287611e-01 1.17119575e-01 1.16950961e-01 1.16781770e-01 1.16611997e-01 + 1.16441643e-01 1.16270705e-01 1.16099181e-01 1.15927070e-01 1.15754370e-01 + 1.15581079e-01 1.15407195e-01 1.15232718e-01 1.15057644e-01 1.14881973e-01 + 1.14705703e-01 1.14528831e-01 1.14351357e-01 1.14173279e-01 1.13994594e-01 + 1.13815302e-01 1.13635400e-01 1.13454887e-01 1.13273762e-01 1.13092022e-01 + 1.12909666e-01 1.12726692e-01 1.12543099e-01 1.12358884e-01 1.12174047e-01 + 1.11988586e-01 1.11802499e-01 1.11615785e-01 1.11428441e-01 1.11240467e-01 + 1.11051860e-01 1.10862619e-01 1.10672743e-01 1.10482230e-01 1.10291079e-01 + 1.10099287e-01 1.09906853e-01 1.09713777e-01 1.09520055e-01 1.09325688e-01 + 1.09130672e-01 1.08935008e-01 1.08738692e-01 1.08541725e-01 1.08344104e-01 + 1.08145827e-01 1.07946894e-01 1.07747304e-01 1.07547053e-01 1.07346142e-01 + 1.07144569e-01 1.06942333e-01 1.06739431e-01 1.06535863e-01 1.06331627e-01 + 1.06126723e-01 1.05921148e-01 1.05714902e-01 1.05507982e-01 1.05300389e-01 + 1.05092120e-01 1.04883175e-01 1.04673552e-01 1.04463250e-01 1.04252268e-01 + 1.04040604e-01 1.03828258e-01 1.03615228e-01 1.03401513e-01 1.03187113e-01 + 1.02972026e-01 1.02756250e-01 1.02539786e-01 1.02322631e-01 1.02104785e-01 + 1.01886248e-01 1.01667017e-01 1.01447092e-01 1.01226473e-01 1.01005158e-01 + 1.00783146e-01 1.00560436e-01 1.00337028e-01 1.00112922e-01 9.98881150e-02 + 9.96626076e-02 9.94363989e-02 9.92094881e-02 9.89818746e-02 9.87535577e-02 + 9.85245367e-02 9.82948112e-02 9.80643804e-02 9.78332440e-02 9.76014013e-02 + 9.73688518e-02 9.71355952e-02 9.69016310e-02 9.66669588e-02 9.64315783e-02 + 9.61954891e-02 9.59586908e-02 9.57211834e-02 9.54829664e-02 9.52440398e-02 + 9.50044033e-02 9.47640568e-02 9.45230003e-02 9.42812335e-02 9.40387567e-02 + 9.37955696e-02 9.35516725e-02 9.33070653e-02 9.30617482e-02 9.28157214e-02 + 9.25689850e-02 9.23215393e-02 9.20733846e-02 9.18245212e-02 9.15749495e-02 + 9.13246699e-02 9.10736827e-02 9.08219886e-02 9.05695880e-02 9.03164816e-02 + 9.00626699e-02 8.98081536e-02 8.95529334e-02 8.92970102e-02 8.90403847e-02 + 8.87830577e-02 8.85250303e-02 8.82663032e-02 8.80068776e-02 8.77467546e-02 + 8.74859351e-02 8.72244204e-02 8.69622117e-02 8.66993103e-02 8.64357174e-02 + 8.61714345e-02 8.59064630e-02 8.56408044e-02 8.53744602e-02 8.51074320e-02 + 8.48397215e-02 8.45713304e-02 8.43022605e-02 8.40325136e-02 8.37620916e-02 + 8.34909965e-02 8.32192302e-02 8.29467950e-02 8.26736929e-02 8.23999262e-02 + 8.21254970e-02 8.18504079e-02 8.15746611e-02 8.12982592e-02 8.10212047e-02 + 8.07435002e-02 8.04651484e-02 8.01861521e-02 7.99065141e-02 7.96262372e-02 + 7.93453246e-02 7.90637791e-02 7.87816039e-02 7.84988023e-02 7.82153774e-02 + 7.79313327e-02 7.76466715e-02 7.73613974e-02 7.70755139e-02 7.67890246e-02 + 7.65019334e-02 7.62142440e-02 7.59259604e-02 7.56370865e-02 7.53476263e-02 + 7.50575841e-02 7.47669641e-02 7.44757706e-02 7.41840079e-02 7.38916807e-02 + 7.35987934e-02 7.33053507e-02 7.30113575e-02 7.27168185e-02 7.24217387e-02 + 7.21261231e-02 7.18299768e-02 7.15333051e-02 7.12361133e-02 7.09384067e-02 + 7.06401909e-02 7.03414715e-02 7.00422541e-02 6.97425446e-02 6.94423488e-02 + 6.91416728e-02 6.88405225e-02 6.85389043e-02 6.82368244e-02 6.79342891e-02 + 6.76313050e-02 6.73278787e-02 6.70240169e-02 6.67197264e-02 6.64150140e-02 + 6.61098869e-02 6.58043520e-02 6.54984168e-02 6.51920884e-02 6.48853744e-02 + 6.45782823e-02 6.42708198e-02 6.39629946e-02 6.36548146e-02 6.33462879e-02 + 6.30374225e-02 6.27282267e-02 6.24187088e-02 6.21088773e-02 6.17987406e-02 + 6.14883076e-02 6.11775870e-02 6.08665877e-02 6.05553188e-02 6.02437893e-02 + 5.99320086e-02 5.96199860e-02 5.93077311e-02 5.89952534e-02 5.86825627e-02 + 5.83696689e-02 5.80565818e-02 5.77433118e-02 5.74298688e-02 5.71162634e-02 + 5.68025058e-02 5.64886069e-02 5.61745771e-02 5.58604274e-02 5.55461687e-02 + 5.52318121e-02 5.49173687e-02 5.46028499e-02 5.42882672e-02 5.39736321e-02 + 5.36589562e-02 5.33442514e-02 5.30295296e-02 5.27148029e-02 5.24000835e-02 + 5.20853836e-02 5.17707158e-02 5.14560924e-02 5.11415263e-02 5.08270302e-02 + 5.05126170e-02 5.01982998e-02 4.98840918e-02 4.95700061e-02 4.92560564e-02 + 4.89422560e-02 4.86286186e-02 4.83151580e-02 4.80018882e-02 4.76888231e-02 + 4.73759769e-02 4.70633638e-02 4.67509982e-02 4.64388946e-02 4.61270676e-02 + 4.58155320e-02 4.55043026e-02 4.51933944e-02 4.48828225e-02 4.45726020e-02 + 4.42627483e-02 4.39532767e-02 4.36442030e-02 4.33355426e-02 4.30273114e-02 + 4.27195253e-02 4.24122002e-02 4.21053521e-02 4.17989974e-02 4.14931524e-02 + 4.11878333e-02 4.08830568e-02 4.05788395e-02 4.02751981e-02 3.99721494e-02 + 3.96697104e-02 3.93678979e-02 3.90667293e-02 3.87662217e-02 3.84663923e-02 + 3.81672586e-02 3.78688381e-02 3.75711484e-02 3.72742070e-02 3.69780319e-02 + 3.66826407e-02 3.63880515e-02 3.60942822e-02 3.58013509e-02 3.55092758e-02 + 3.52180750e-02 3.49277670e-02 3.46383700e-02 3.43499026e-02 3.40623832e-02 + 3.37758304e-02 3.34902629e-02 3.32056994e-02 3.29221586e-02 3.26396593e-02 + 3.23582205e-02 3.20778611e-02 3.17986000e-02 3.15204562e-02 3.12434489e-02 + 3.09675972e-02 3.06929202e-02 3.04194370e-02 3.01471670e-02 2.98761294e-02 + 2.96063435e-02 2.93378286e-02 2.90706040e-02 2.88046891e-02 2.85401033e-02 + 2.82768660e-02 2.80149966e-02 2.77545145e-02 2.74954392e-02 2.72377901e-02 + 2.69815866e-02 2.67268481e-02 2.64735941e-02 2.62218441e-02 2.59716174e-02 + 2.57229334e-02 2.54758115e-02 2.52302711e-02 2.49863315e-02 2.47440120e-02 + 2.45033320e-02 2.42643105e-02 2.40269669e-02 2.37913204e-02 2.35573900e-02 + 2.33251949e-02 2.30947540e-02 2.28660864e-02 2.26392110e-02 2.24141466e-02 + 2.21909120e-02 2.19695260e-02 2.17500072e-02 2.15323742e-02 2.13166455e-02 + 2.11028396e-02 2.08909747e-02 2.06810691e-02 2.04731411e-02 2.02672086e-02 + 2.00632896e-02 1.98614019e-02 1.96615634e-02 1.94637917e-02 1.92681043e-02 + 1.90745186e-02 1.88830519e-02 1.86937213e-02 1.85065440e-02 1.83215368e-02 + 1.81387165e-02 1.79580998e-02 1.77797030e-02 1.76035426e-02 1.74296348e-02 + 1.72579956e-02 1.70886409e-02 1.69215864e-02 1.67568478e-02 1.65944402e-02 + 1.64343791e-02 1.62766795e-02 1.61213562e-02 1.59684240e-02 1.58178973e-02 + 1.56697904e-02 1.55241176e-02 1.53808927e-02 1.52401295e-02 1.51018416e-02 + 1.49660422e-02 1.48327446e-02 1.47019616e-02 1.45737059e-02 1.44479901e-02 + 1.43248264e-02 1.42042269e-02 1.40862035e-02 1.39707676e-02 1.38579308e-02 + 1.37477041e-02 1.36400985e-02 1.35351246e-02 1.34327929e-02 1.33331135e-02 + 1.32360964e-02 1.31417514e-02 1.30500877e-02 1.29611147e-02 1.28748412e-02 + 1.27912760e-02 1.27104274e-02 1.26323037e-02 1.25569127e-02 1.24842620e-02 + 1.24143590e-02 1.23472109e-02 1.22828243e-02 1.22212060e-02 1.21623621e-02 + 1.21062986e-02 1.20530213e-02 1.20025356e-02 1.19548467e-02 1.19099595e-02 + 1.18678785e-02 1.18286081e-02 1.17921522e-02 1.17585148e-02 1.17276991e-02 + 1.16997084e-02 1.16745455e-02 1.16522130e-02 1.16327133e-02 1.16160484e-02 + 1.16022198e-02 1.15912292e-02 1.15830776e-02 1.15777658e-02 1.15752944e-02 + 1.15756637e-02 1.15788736e-02 1.15849238e-02 1.15938137e-02 1.16055423e-02 + 1.16201084e-02 1.16375106e-02 1.16577471e-02 1.16808156e-02 1.17067140e-02 + 1.17354395e-02 1.17669892e-02 1.18013598e-02 1.18385478e-02 1.18785493e-02 + 1.19213604e-02 1.19669765e-02 1.20153931e-02 1.20666051e-02 1.21206073e-02 + 1.21773942e-02 1.22369601e-02 1.22992988e-02 1.23644040e-02 1.24322691e-02 + 1.25028871e-02 1.25762510e-02 1.26523533e-02 1.27311863e-02 1.28127420e-02 + 1.28970121e-02 1.29839883e-02 1.30736618e-02 1.31660235e-02 1.32610642e-02 + 1.33587744e-02 1.34591444e-02 1.35621641e-02 1.36678232e-02 1.37761113e-02 + 1.38870177e-02 1.40005314e-02 1.41166411e-02 1.42353355e-02 1.43566028e-02 + 1.44804312e-02 1.46068085e-02 1.47357225e-02 1.48671606e-02 1.50011099e-02 + 1.51375576e-02 1.52764904e-02 1.54178949e-02 1.55617576e-02 1.57080646e-02 + 1.58568020e-02 1.60079555e-02 1.61615108e-02 1.63174534e-02 1.64757685e-02 + 1.66364411e-02 1.67994562e-02 1.69647985e-02 1.71324525e-02 1.73024027e-02 + 1.74746333e-02 1.76491283e-02 1.78258717e-02 1.80048472e-02 1.81860385e-02 + 1.83694290e-02 1.85550020e-02 1.87427408e-02 1.89326284e-02 1.91246477e-02 + 1.93187815e-02 1.95150125e-02 1.97133233e-02 1.99136963e-02 2.01161138e-02 + 2.03205580e-02 2.05270111e-02 2.07354551e-02 2.09458718e-02 2.11582431e-02 + 2.13725507e-02 2.15887763e-02 2.18069014e-02 2.20269075e-02 2.22487759e-02 + 2.24724880e-02 2.26980251e-02 2.29253683e-02 2.31544988e-02 2.33853976e-02 + 2.36180458e-02 2.38524242e-02 2.40885138e-02 2.43262955e-02 2.45657500e-02 + 2.48068582e-02 2.50496007e-02 2.52939584e-02 2.55399119e-02 2.57874418e-02 + 2.60365287e-02 2.62871534e-02 2.65392963e-02 2.67929381e-02 2.70480593e-02 + 2.73046406e-02 2.75626624e-02 2.78221053e-02 2.80829500e-02 2.83451769e-02 + 2.86087667e-02 2.88736999e-02 2.91399572e-02 2.94075191e-02 2.96763664e-02 + 2.99464796e-02 3.02178395e-02 3.04904267e-02 3.07642221e-02 3.10392064e-02 + 3.13153605e-02 3.15926651e-02 3.18711011e-02 3.21506496e-02 3.24312916e-02 + 3.27130079e-02 3.29957798e-02 3.32795883e-02 3.35644146e-02 3.38502401e-02 + 3.41370460e-02 3.44248137e-02 3.47135246e-02 3.50031602e-02 3.52937021e-02 + 3.55851319e-02 3.58774314e-02 3.61705823e-02 3.64645665e-02 3.67593660e-02 + 3.70549627e-02 3.73513388e-02 3.76484764e-02 3.79463579e-02 3.82449655e-02 + 3.85442817e-02 3.88442891e-02 3.91449703e-02 3.94463079e-02 3.97482849e-02 + 4.00508841e-02 4.03540886e-02 4.06578813e-02 4.09622456e-02 4.12671648e-02 + 4.15726221e-02 4.18786013e-02 4.21850858e-02 4.24920594e-02 4.27995060e-02 + 4.31074094e-02 4.34157537e-02 4.37245230e-02 4.40337017e-02 4.43432741e-02 + 4.46532246e-02 4.49635380e-02 4.52741988e-02 4.55851920e-02 4.58965024e-02 + 4.62081152e-02 4.65200155e-02 4.68321886e-02 4.71446199e-02 4.74572950e-02 + 4.77701996e-02 4.80833192e-02 4.83966400e-02 4.87101479e-02 4.90238289e-02 + 4.93376695e-02 4.96516559e-02 4.99657746e-02 5.02800123e-02 5.05943557e-02 + 5.09087917e-02 5.12233073e-02 5.15378895e-02 5.18525256e-02 5.21672030e-02 + 5.24819092e-02 5.27966317e-02 5.31113583e-02 5.34260768e-02 5.37407752e-02 + 5.40554416e-02 5.43700642e-02 5.46846314e-02 5.49991317e-02 5.53135536e-02 + 5.56278858e-02 5.59421172e-02 5.62562368e-02 5.65702336e-02 5.68840968e-02 + 5.71978158e-02 5.75113800e-02 5.78247790e-02 5.81380025e-02 5.84510402e-02 + 5.87638822e-02 5.90765185e-02 5.93889392e-02 5.97011346e-02 6.00130952e-02 + 6.03248115e-02 6.06362741e-02 6.09474738e-02 6.12584015e-02 6.15690482e-02 + 6.18794050e-02 6.21894631e-02 6.24992140e-02 6.28086489e-02 6.31177596e-02 + 6.34265377e-02 6.37349751e-02 6.40430636e-02 6.43507952e-02 6.46581622e-02 + 6.49651567e-02 6.52717712e-02 6.55779981e-02 6.58838299e-02 6.61892594e-02 + 6.64942794e-02 6.67988828e-02 6.71030625e-02 6.74068117e-02 6.77101237e-02 + 6.80129917e-02 6.83154092e-02 6.86173697e-02 6.89188669e-02 6.92198944e-02 + 6.95204462e-02 6.98205161e-02 7.01200982e-02 7.04191867e-02 7.07177757e-02 + 7.10158596e-02 7.13134329e-02 7.16104900e-02 7.19070256e-02 7.22030344e-02 + 7.24985112e-02 7.27934509e-02 7.30878484e-02 7.33816990e-02 7.36749977e-02 + 7.39677398e-02 7.42599207e-02 7.45515358e-02 7.48425807e-02 7.51330509e-02 + 7.54229421e-02 7.57122502e-02 7.60009711e-02 7.62891006e-02 7.65766348e-02 + 7.68635699e-02 7.71499020e-02 7.74356274e-02 7.77207425e-02 7.80052438e-02 + 7.82891277e-02 7.85723908e-02 7.88550299e-02 7.91370416e-02 7.94184229e-02 + 7.96991705e-02 7.99792815e-02 8.02587530e-02 8.05375820e-02 8.08157657e-02 + 8.10933015e-02 8.13701866e-02 8.16464184e-02 8.19219944e-02 8.21969122e-02 + 8.24711693e-02 8.27447635e-02 8.30176924e-02 8.32899539e-02 8.35615458e-02 + 8.38324661e-02 8.41027128e-02 8.43722839e-02 8.46411775e-02 8.49093918e-02 + 8.51769250e-02 8.54437756e-02 8.57099417e-02 8.59754218e-02 8.62402144e-02 + 8.65043180e-02 8.67677312e-02 8.70304527e-02 8.72924810e-02 8.75538151e-02 + 8.78144536e-02 8.80743954e-02 8.83336395e-02 8.85921847e-02 8.88500302e-02 + 8.91071748e-02 8.93636178e-02 8.96193583e-02 8.98743956e-02 9.01287287e-02 + 9.03823571e-02 9.06352801e-02 9.08874971e-02 9.11390074e-02 9.13898107e-02 + 9.16399063e-02 9.18892939e-02 9.21379731e-02 9.23859434e-02 9.26332047e-02 + 9.28797566e-02 9.31255989e-02 9.33707315e-02 9.36151540e-02 9.38588666e-02 + 9.41018690e-02 9.43441612e-02 9.45857433e-02 9.48266152e-02 9.50667771e-02 + 9.53062290e-02 9.55449711e-02 9.57830036e-02 9.60203266e-02 9.62569405e-02 + 9.64928454e-02 9.67280417e-02 9.69625298e-02 9.71963100e-02 9.74293827e-02 + 9.76617483e-02 9.78934074e-02 9.81243603e-02 9.83546076e-02 9.85841499e-02 + 9.88129878e-02 9.90411218e-02 9.92685525e-02 9.94952807e-02 9.97213070e-02 + 9.99466321e-02 1.00171257e-01 1.00395182e-01 1.00618408e-01 1.00840936e-01 + 1.01062766e-01 1.01283901e-01 1.01504340e-01 1.01724084e-01 1.01943134e-01 + 1.02161492e-01 1.02379158e-01 1.02596133e-01 1.02812418e-01 1.03028014e-01 + 1.03242923e-01 1.03457145e-01 1.03670682e-01 1.03883534e-01 1.04095702e-01 + 1.04307189e-01 1.04517994e-01 1.04728119e-01 1.04937566e-01 1.05146335e-01 + 1.05354428e-01 1.05561846e-01 1.05768590e-01 1.05974662e-01 1.06180062e-01 + 1.06384793e-01 1.06588855e-01 1.06792249e-01 1.06994978e-01 1.07197042e-01 + 1.07398443e-01 1.07599182e-01 1.07799261e-01 1.07998680e-01 1.08197442e-01 + 1.08395548e-01 1.08592999e-01 1.08789797e-01 1.08985943e-01 1.09181439e-01 + 1.09376286e-01 1.09570485e-01 1.09764039e-01 1.09956948e-01 1.10149214e-01 + 1.10340840e-01 1.10531825e-01 1.10722172e-01 1.10911883e-01 1.11100959e-01 + 1.11289401e-01 1.11477211e-01 1.11664391e-01 1.11850942e-01 1.12036866e-01 + 1.12222165e-01 1.12406840e-01 1.12590892e-01 1.12774325e-01 1.12957138e-01 + 1.13139333e-01 1.13320913e-01 1.13501880e-01 1.13682233e-01 1.13861976e-01 + 1.14041111e-01 1.14219637e-01 1.14397559e-01 1.14574876e-01 1.14751591e-01 + 1.14927705e-01 1.15103221e-01 1.15278139e-01 1.15452462e-01 1.15626191e-01 + 1.15799328e-01 1.15971875e-01 1.16143834e-01 1.16315205e-01 1.16485991e-01 + 1.16656194e-01 1.16825815e-01 1.16994856e-01 1.17163320e-01 1.17331206e-01 + 1.17498518e-01 1.17665257e-01 1.17831424e-01 1.17997022e-01 1.18162053e-01 + 1.18326517e-01 1.18490417e-01 1.18653754e-01 1.18816531e-01 1.18978749e-01 + 1.19140409e-01 1.19301514e-01 1.19462065e-01 1.19622064e-01 1.19781513e-01 + 1.19940414e-01 1.20098767e-01 1.20256576e-01 1.20413841e-01 1.20570565e-01 + 1.20726749e-01 1.20882395e-01 1.21037505e-01 1.21192080e-01 1.21346123e-01 + 1.21499635e-01 1.21652617e-01 1.21805072e-01 1.21957001e-01 1.22108406e-01 + 1.22259289e-01 1.22409651e-01 1.22559495e-01 1.22708821e-01 1.22857632e-01 + 1.23005930e-01 1.23153715e-01 1.23300991e-01 1.23447758e-01 1.23594019e-01 + 1.23739774e-01 1.23885027e-01 1.24029777e-01 1.24174028e-01 1.24317781e-01 + 1.24461038e-01 1.24603800e-01 1.24746069e-01 1.24887847e-01 1.25029136e-01 + 1.25169936e-01 1.25310251e-01 1.25450081e-01 1.25589428e-01 1.25728294e-01 + 1.25866681e-01 1.26004590e-01 1.26142024e-01 1.26278983e-01 1.26415469e-01 + 1.26551484e-01 1.26687030e-01 1.26822109e-01 1.26956721e-01 1.27090870e-01 + 1.27224555e-01 1.27357780e-01 1.27490545e-01 1.27622852e-01 1.27754704e-01 + 1.27886101e-01 1.28017045e-01 1.28147538e-01 1.28277582e-01 1.28407177e-01 + 1.28536327e-01 1.28665031e-01 1.28793293e-01 1.28921113e-01 1.29048493e-01 + 1.29175435e-01 1.29301941e-01 1.29428011e-01 1.29553648e-01 1.29678853e-01 + 1.29803627e-01 1.29927973e-01 1.30051892e-01 1.30175385e-01 1.30298454e-01 + 1.30421101e-01 1.30543327e-01 1.30665133e-01 1.30786522e-01 1.30907494e-01 + 1.31028051e-01 1.31148196e-01 1.31267929e-01 1.31387251e-01 1.31506165e-01 + 1.31624672e-01 1.31742773e-01 1.31860470e-01 1.31977765e-01 1.32094658e-01 + 1.32211152e-01 1.32327248e-01 1.32442947e-01 1.32558252e-01 1.32673162e-01 + 1.32787680e-01 1.32901808e-01 1.33015546e-01 1.33128897e-01 1.33241861e-01 + 1.33354441e-01 1.33466637e-01 1.33578451e-01 1.33689884e-01 1.33800939e-01 + 1.33911615e-01 1.34021916e-01 1.34131841e-01 1.34241394e-01 1.34350574e-01 + 1.34459383e-01 1.34567824e-01 1.34675896e-01 1.34783602e-01 1.34890944e-01 + 1.34997921e-01 1.35104536e-01 1.35210791e-01 1.35316685e-01 1.35422222e-01 + 1.35527402e-01 1.35632226e-01 1.35736697e-01 1.35840814e-01 1.35944580e-01 + 1.36047997e-01 1.36151064e-01 1.36253784e-01 1.36356158e-01 1.36458187e-01 + 1.36559873e-01 1.36661216e-01 1.36762219e-01 1.36862882e-01 1.36963207e-01 + 1.37063195e-01 1.37162847e-01 1.37262165e-01 1.37361150e-01 1.37459803e-01 + 1.37558126e-01 1.37656119e-01 1.37753784e-01 1.37851123e-01 1.37948136e-01 + 1.38044824e-01 1.38141190e-01 1.38237233e-01 1.38332957e-01 1.38428361e-01 + 1.38523446e-01 1.38618215e-01 1.38712668e-01 1.38806807e-01 1.38900633e-01 + 1.38994146e-01 1.39087349e-01 1.39180241e-01 1.39272826e-01 1.39365103e-01 + 1.39457074e-01 1.39548740e-01 1.39640102e-01 1.39731162e-01 1.39821920e-01 + 1.39912378e-01 1.40002537e-01 1.40092398e-01 1.40181961e-01 1.40271230e-01 + 1.40360203e-01 1.40448884e-01 1.40537272e-01 1.40625368e-01 1.40713175e-01 + 1.40800693e-01 1.40887923e-01 1.40974866e-01 1.41061523e-01 1.41147896e-01 + 1.41233986e-01 1.41319793e-01 1.41405319e-01 1.41490565e-01 1.41575532e-01 + 1.41660220e-01 1.41744632e-01 1.41828768e-01 1.41912628e-01 1.41996216e-01 + 1.42079530e-01 1.42162572e-01 1.42245344e-01 1.42327847e-01 1.42410081e-01 + 1.42492047e-01 1.42573747e-01 1.42655181e-01 1.42736351e-01 1.42817257e-01 + 1.42897901e-01 1.42978283e-01 1.43058405e-01 1.43138268e-01 1.43217872e-01 + 1.43297218e-01 1.43376309e-01 1.43455143e-01 1.43533723e-01 1.43612050e-01 + 1.43690124e-01 1.43767947e-01 1.43845519e-01 1.43922841e-01 1.43999914e-01 + 1.44076740e-01 1.44153319e-01 1.44229652e-01 1.44305740e-01 1.44381584e-01 + 1.44457185e-01 1.44532544e-01 1.44607662e-01 1.44682539e-01 1.44757177e-01 + 1.44831577e-01 1.44905739e-01 1.44979665e-01 1.45053355e-01 1.45126809e-01 + 1.45200031e-01 1.45273019e-01 1.45345774e-01 1.45418299e-01 1.45490593e-01 + 1.45562658e-01 1.45634494e-01 1.45706102e-01 1.45777484e-01 1.45848639e-01 + 1.45919569e-01 1.45990275e-01 1.46060758e-01 1.46131018e-01 1.46201056e-01 + 1.46270873e-01 1.46340470e-01 1.46409848e-01 1.46479008e-01 1.46547950e-01 + 1.46616675e-01 1.46685184e-01 1.46753479e-01 1.46821558e-01 1.46889425e-01 + 1.46957079e-01 1.47024520e-01 1.47091751e-01 1.47158772e-01 1.47225583e-01 + 1.47292185e-01 1.47358580e-01 1.47424768e-01 1.47490749e-01 1.47556524e-01 + 1.47622095e-01 1.47687462e-01 1.47752626e-01 1.47817587e-01 1.47882347e-01 + 1.19316516e-02 1.17837661e-02 1.16368916e-02 1.14910312e-02 1.13461881e-02 + 1.12023652e-02 1.10595657e-02 1.09177924e-02 1.07770486e-02 1.06373371e-02 + 1.04986608e-02 1.03610229e-02 1.02244262e-02 1.00888736e-02 9.95436796e-03 + 9.82091227e-03 9.68850936e-03 9.55716205e-03 9.42687318e-03 9.29764555e-03 + 9.16948195e-03 9.04238514e-03 8.91635788e-03 8.79140288e-03 8.66752287e-03 + 8.54472052e-03 8.42299850e-03 8.30235947e-03 8.18280604e-03 8.06434082e-03 + 7.94696640e-03 7.83068535e-03 7.71550020e-03 7.60141348e-03 7.48842769e-03 + 7.37654531e-03 7.26576880e-03 7.15610060e-03 7.04754311e-03 6.94009874e-03 + 6.83376985e-03 6.72855879e-03 6.62446789e-03 6.52149946e-03 6.41965576e-03 + 6.31893907e-03 6.21935162e-03 6.12089562e-03 6.02357326e-03 5.92738670e-03 + 5.83233810e-03 5.73842957e-03 5.64566320e-03 5.55404108e-03 5.46356524e-03 + 5.37423772e-03 5.28606051e-03 5.19903560e-03 5.11316493e-03 5.02845043e-03 + 4.94489402e-03 4.86249756e-03 4.78126291e-03 4.70119191e-03 4.62228636e-03 + 4.54454803e-03 4.46797870e-03 4.39258007e-03 4.31835387e-03 4.24530177e-03 + 4.17342543e-03 4.10272646e-03 4.03320649e-03 3.96486708e-03 3.89770979e-03 + 3.83173614e-03 3.76694764e-03 3.70334576e-03 3.64093194e-03 3.57970760e-03 + 3.51967415e-03 3.46083296e-03 3.40318535e-03 3.34673266e-03 3.29147617e-03 + 3.23741715e-03 3.18455682e-03 3.13289641e-03 3.08243708e-03 3.03318001e-03 + 2.98512631e-03 2.93827709e-03 2.89263342e-03 2.84819635e-03 2.80496690e-03 + 2.76294607e-03 2.72213481e-03 2.68253407e-03 2.64414475e-03 2.60696775e-03 + 2.57100391e-03 2.53625406e-03 2.50271900e-03 2.47039951e-03 2.43929633e-03 + 2.40941017e-03 2.38074173e-03 2.35329167e-03 2.32706061e-03 2.30204917e-03 + 2.27825792e-03 2.25568742e-03 2.23433817e-03 2.21421068e-03 2.19530540e-03 + 2.17762279e-03 2.16116324e-03 2.14592713e-03 2.13191482e-03 2.11912664e-03 + 2.10756286e-03 2.09722378e-03 2.08810961e-03 2.08022058e-03 2.07355687e-03 + 2.06811863e-03 2.06390598e-03 2.06091903e-03 2.05915784e-03 2.05862245e-03 + 2.05931288e-03 2.06122911e-03 2.06437109e-03 2.06873876e-03 2.07433201e-03 + 2.08115071e-03 2.08919471e-03 2.09846382e-03 2.10895782e-03 2.12067647e-03 + 2.13361950e-03 2.14778662e-03 2.16317748e-03 2.17979175e-03 2.19762903e-03 + 2.21668892e-03 2.23697097e-03 2.25847471e-03 2.28119965e-03 2.30514526e-03 + 2.33031099e-03 2.35669626e-03 2.38430046e-03 2.41312296e-03 2.44316308e-03 + 2.47442014e-03 2.50689342e-03 2.54058217e-03 2.57548561e-03 2.61160294e-03 + 2.64893333e-03 2.68747592e-03 2.72722982e-03 2.76819412e-03 2.81036787e-03 + 2.85375012e-03 2.89833986e-03 2.94413606e-03 2.99113769e-03 3.03934365e-03 + 3.08875285e-03 3.13936416e-03 3.19117640e-03 3.24418841e-03 3.29839896e-03 + 3.35380682e-03 3.41041071e-03 3.46820936e-03 3.52720143e-03 3.58738558e-03 + 3.64876043e-03 3.71132460e-03 3.77507665e-03 3.84001514e-03 3.90613858e-03 + 3.97344547e-03 4.04193428e-03 4.11160346e-03 4.18245143e-03 4.25447658e-03 + 4.32767727e-03 4.40205185e-03 4.47759865e-03 4.55431593e-03 4.63220199e-03 + 4.71125505e-03 4.79147333e-03 4.87285502e-03 4.95539830e-03 5.03910129e-03 + 5.12396213e-03 5.20997890e-03 5.29714966e-03 5.38547247e-03 5.47494535e-03 + 5.56556628e-03 5.65733324e-03 5.75024419e-03 5.84429703e-03 5.93948968e-03 + 6.03582001e-03 6.13328588e-03 6.23188511e-03 6.33161551e-03 6.43247487e-03 + 6.53446095e-03 6.63757148e-03 6.74180419e-03 6.84715676e-03 6.95362687e-03 + 7.06121216e-03 7.16991026e-03 7.27971878e-03 7.39063530e-03 7.50265737e-03 + 7.61578255e-03 7.73000833e-03 7.84533223e-03 7.96175172e-03 8.07926424e-03 + 8.19786724e-03 8.31755813e-03 8.43833428e-03 8.56019309e-03 8.68313189e-03 + 8.80714802e-03 8.93223879e-03 9.05840148e-03 9.18563337e-03 9.31393170e-03 + 9.44329371e-03 9.57371661e-03 9.70519759e-03 9.83773382e-03 9.97132246e-03 + 1.01059606e-02 1.02416455e-02 1.03783741e-02 1.05161435e-02 1.06549508e-02 + 1.07947931e-02 1.09356673e-02 1.10775705e-02 1.12204997e-02 1.13644517e-02 + 1.15094237e-02 1.16554125e-02 1.18024151e-02 1.19504282e-02 1.20994490e-02 + 1.22494741e-02 1.24005005e-02 1.25525250e-02 1.27055444e-02 1.28595555e-02 + 1.30145552e-02 1.31705401e-02 1.33275071e-02 1.34854528e-02 1.36443741e-02 + 1.38042677e-02 1.39651301e-02 1.41269582e-02 1.42897485e-02 1.44534978e-02 + 1.46182027e-02 1.47838598e-02 1.49504657e-02 1.51180170e-02 1.52865103e-02 + 1.54559422e-02 1.56263093e-02 1.57976080e-02 1.59698349e-02 1.61429866e-02 + 1.63170596e-02 1.64920502e-02 1.66679551e-02 1.68447707e-02 1.70224935e-02 + 1.72011198e-02 1.73806462e-02 1.75610691e-02 1.77423848e-02 1.79245899e-02 + 1.81076806e-02 1.82916533e-02 1.84765045e-02 1.86622305e-02 1.88488276e-02 + 1.90362922e-02 1.92246206e-02 1.94138091e-02 1.96038541e-02 1.97947518e-02 + 1.99864985e-02 2.01790905e-02 2.03725242e-02 2.05667957e-02 2.07619013e-02 + 2.09578372e-02 2.11545998e-02 2.13521852e-02 2.15505896e-02 2.17498093e-02 + 2.19498405e-02 2.21506794e-02 2.23523222e-02 2.25547650e-02 2.27580040e-02 + 2.29620355e-02 2.31668555e-02 2.33724603e-02 2.35788460e-02 2.37860087e-02 + 2.39939446e-02 2.42026499e-02 2.44121205e-02 2.46223528e-02 2.48333427e-02 + 2.50450864e-02 2.52575801e-02 2.54708198e-02 2.56848016e-02 2.58995216e-02 + 2.61149759e-02 2.63311606e-02 2.65480717e-02 2.67657054e-02 2.69840578e-02 + 2.72031248e-02 2.74229026e-02 2.76433871e-02 2.78645746e-02 2.80864610e-02 + 2.83090425e-02 2.85323149e-02 2.87562745e-02 2.89809172e-02 2.92062390e-02 + 2.94322361e-02 2.96589045e-02 2.98862402e-02 3.01142392e-02 3.03428976e-02 + 3.05722114e-02 3.08021766e-02 3.10327893e-02 3.12640455e-02 3.14959413e-02 + 3.17284726e-02 3.19616355e-02 3.21954260e-02 3.24298402e-02 3.26648740e-02 + 3.29005236e-02 3.31367848e-02 3.33736539e-02 3.36111267e-02 3.38491993e-02 + 3.40878677e-02 3.43271281e-02 3.45669763e-02 3.48074084e-02 3.50484206e-02 + 3.52900087e-02 3.55321689e-02 3.57748971e-02 3.60181895e-02 3.62620420e-02 + 3.65064508e-02 3.67514117e-02 3.69969210e-02 3.72429746e-02 3.74895686e-02 + 3.77366991e-02 3.79843621e-02 3.82325537e-02 3.84812698e-02 3.87305067e-02 + 3.89802604e-02 3.92305269e-02 3.94813024e-02 3.97325829e-02 3.99843644e-02 + 4.02366431e-02 4.04894151e-02 4.07426765e-02 4.09964234e-02 4.12506518e-02 + 4.15053579e-02 4.17605378e-02 4.20161876e-02 4.22723034e-02 4.25288815e-02 + 4.27859178e-02 4.30434086e-02 4.33013499e-02 4.35597380e-02 4.38185689e-02 + 4.40778389e-02 4.43375441e-02 4.45976807e-02 4.48582449e-02 4.51192328e-02 + 4.53806406e-02 4.56424645e-02 4.59047007e-02 4.61673455e-02 4.64303950e-02 + 4.66938455e-02 4.69576932e-02 4.72219342e-02 4.74865650e-02 4.77515816e-02 + 4.80169804e-02 4.82827576e-02 4.85489095e-02 4.88154324e-02 4.90823225e-02 + 4.93495761e-02 4.96171896e-02 4.98851592e-02 5.01534812e-02 5.04221520e-02 + 5.06911679e-02 5.09605252e-02 5.12302202e-02 5.15002494e-02 5.17706091e-02 + 5.20412956e-02 5.23123054e-02 5.25836347e-02 5.28552801e-02 5.31272378e-02 + 5.33995044e-02 5.36720762e-02 5.39449496e-02 5.42181211e-02 5.44915872e-02 + 5.47653442e-02 5.50393887e-02 5.53137171e-02 5.55883259e-02 5.58632116e-02 + 5.61383707e-02 5.64137997e-02 5.66894951e-02 5.69654535e-02 5.72416713e-02 + 5.75181451e-02 5.77948716e-02 5.80718471e-02 5.83490684e-02 5.86265320e-02 + 5.89042345e-02 5.91821725e-02 5.94603427e-02 5.97387415e-02 6.00173658e-02 + 6.02962120e-02 6.05752770e-02 6.08545573e-02 6.11340496e-02 6.14137506e-02 + 6.16936570e-02 6.19737655e-02 6.22540729e-02 6.25345758e-02 6.28152709e-02 + 6.30961552e-02 6.33772252e-02 6.36584778e-02 6.39399097e-02 6.42215178e-02 + 6.45032988e-02 6.47852496e-02 6.50673669e-02 6.53496477e-02 6.56320887e-02 + 6.59146868e-02 6.61974389e-02 6.64803419e-02 6.67633926e-02 6.70465880e-02 + 6.73299249e-02 6.76134004e-02 6.78970112e-02 6.81807545e-02 6.84646270e-02 + 6.87486259e-02 6.90327480e-02 6.93169904e-02 6.96013501e-02 6.98858240e-02 + 7.01704093e-02 7.04551029e-02 7.07399019e-02 7.10248033e-02 7.13098043e-02 + 7.15949019e-02 7.18800932e-02 7.21653753e-02 7.24507453e-02 7.27362004e-02 + 7.30217377e-02 7.33073544e-02 7.35930475e-02 7.38788144e-02 7.41646521e-02 + 7.44505580e-02 7.47365291e-02 7.50225627e-02 7.53086561e-02 7.55948066e-02 + 7.58810112e-02 7.61672674e-02 7.64535724e-02 7.67399235e-02 7.70263181e-02 + 7.73127534e-02 7.75992267e-02 7.78857354e-02 7.81722770e-02 7.84588486e-02 + 7.87454477e-02 7.90320718e-02 7.93187181e-02 7.96053841e-02 7.98920673e-02 + 8.01787651e-02 8.04654749e-02 8.07521941e-02 8.10389204e-02 8.13256510e-02 + 8.16123836e-02 8.18991157e-02 8.21858447e-02 8.24725683e-02 8.27592839e-02 + 8.30459891e-02 8.33326815e-02 8.36193586e-02 8.39060181e-02 8.41926576e-02 + 8.44792746e-02 8.47658669e-02 8.50524319e-02 8.53389675e-02 8.56254713e-02 + 8.59119408e-02 8.61983740e-02 8.64847683e-02 8.67711216e-02 8.70574315e-02 + 8.73436959e-02 8.76299124e-02 8.79160788e-02 8.82021929e-02 8.84882524e-02 + 8.87742552e-02 8.90601991e-02 8.93460819e-02 8.96319014e-02 8.99176554e-02 + 9.02033419e-02 9.04889586e-02 9.07745035e-02 9.10599745e-02 9.13453694e-02 + 9.16306861e-02 9.19159227e-02 9.22010770e-02 9.24861469e-02 9.27711305e-02 + 9.30560257e-02 9.33408305e-02 9.36255428e-02 9.39101607e-02 9.41946823e-02 + 9.44791055e-02 9.47634283e-02 9.50476489e-02 9.53317653e-02 9.56157755e-02 + 9.58996777e-02 9.61834699e-02 9.64671503e-02 9.67507170e-02 9.70341681e-02 + 9.73175018e-02 9.76007161e-02 9.78838094e-02 9.81667797e-02 9.84496252e-02 + 9.87323442e-02 9.90149348e-02 9.92973954e-02 9.95797240e-02 9.98619190e-02 + 1.00143979e-01 1.00425901e-01 1.00707685e-01 1.00989328e-01 1.01270829e-01 + 1.01552185e-01 1.01833397e-01 1.02114461e-01 1.02395376e-01 1.02676140e-01 + 1.02956752e-01 1.03237211e-01 1.03517513e-01 1.03797659e-01 1.04077646e-01 + 1.04357473e-01 1.04637138e-01 1.04916640e-01 1.05195977e-01 1.05475147e-01 + 1.05754150e-01 1.06032982e-01 1.06311644e-01 1.06590134e-01 1.06868449e-01 + 1.07146589e-01 1.07424552e-01 1.07702336e-01 1.07979941e-01 1.08257365e-01 + 1.08534605e-01 1.08811662e-01 1.09088533e-01 1.09365218e-01 1.09641714e-01 + 1.09918020e-01 1.10194135e-01 1.10470058e-01 1.10745788e-01 1.11021322e-01 + 1.11296660e-01 1.11571800e-01 1.11846741e-01 1.12121482e-01 1.12396021e-01 + 1.12670358e-01 1.12944490e-01 1.13218418e-01 1.13492138e-01 1.13765651e-01 + 1.14038955e-01 1.14312048e-01 1.14584930e-01 1.14857599e-01 1.15130055e-01 + 1.15402295e-01 1.15674319e-01 1.15946126e-01 1.16217714e-01 1.16489083e-01 + 1.16760231e-01 1.17031157e-01 1.17301860e-01 1.17572339e-01 1.17842593e-01 + 1.18112620e-01 1.18382420e-01 1.18651992e-01 1.18921334e-01 1.19190445e-01 + 1.19459326e-01 1.19727973e-01 1.19996387e-01 1.20264566e-01 1.20532510e-01 + 1.20800216e-01 1.21067686e-01 1.21334917e-01 1.21601908e-01 1.21868658e-01 + 1.22135167e-01 1.22401434e-01 1.22667458e-01 1.22933237e-01 1.23198771e-01 + 1.23464058e-01 1.23729099e-01 1.23993892e-01 1.24258436e-01 1.24522731e-01 + 1.24786775e-01 1.25050567e-01 1.25314108e-01 1.25577395e-01 1.25840428e-01 + 1.26103207e-01 1.26365730e-01 1.26627997e-01 1.26890006e-01 1.27151758e-01 + 1.27413251e-01 1.27674484e-01 1.27935457e-01 1.28196169e-01 1.28456619e-01 + 1.28716807e-01 1.28976731e-01 1.29236391e-01 1.29495787e-01 1.29754917e-01 + 1.30013780e-01 1.30272377e-01 1.30530707e-01 1.30788768e-01 1.31046560e-01 + 1.31304083e-01 1.31561335e-01 1.31818316e-01 1.32075026e-01 1.32331463e-01 + 1.32587628e-01 1.32843519e-01 1.33099136e-01 1.33354479e-01 1.33609546e-01 + 1.33864337e-01 1.34118851e-01 1.34373088e-01 1.34627048e-01 1.34880730e-01 + 1.35134132e-01 1.35387255e-01 1.35640099e-01 1.35892661e-01 1.36144943e-01 + 1.36396943e-01 1.36648661e-01 1.36900097e-01 1.37151249e-01 1.37402118e-01 + 1.37652702e-01 1.37903003e-01 1.38153017e-01 1.38402747e-01 1.38652190e-01 + 1.38901347e-01 1.39150217e-01 1.39398799e-01 1.39647094e-01 1.39895100e-01 + 1.40142817e-01 1.40390246e-01 1.40637384e-01 1.40884233e-01 1.41130791e-01 + 1.41377059e-01 1.41623035e-01 1.41868719e-01 1.42114112e-01 1.42359212e-01 + 1.42604020e-01 1.42848534e-01 1.43092755e-01 1.43336681e-01 1.43580314e-01 + 1.43823652e-01 1.44066695e-01 1.44309444e-01 1.44551896e-01 1.44794053e-01 + 1.45035913e-01 1.45277477e-01 1.45518744e-01 1.45759714e-01 1.46000386e-01 + 1.46240761e-01 1.46480838e-01 1.46720616e-01 1.46960096e-01 1.47199277e-01 + 1.47438159e-01 1.47676742e-01 1.47915025e-01 1.48153009e-01 1.48390692e-01 + 1.48628075e-01 1.48865157e-01 1.49101939e-01 1.49338419e-01 1.49574598e-01 + 1.49810476e-01 1.50046052e-01 1.50281327e-01 1.50516299e-01 1.50750969e-01 + 1.50985337e-01 1.51219402e-01 1.51453164e-01 1.51686623e-01 1.51919779e-01 + 1.52152632e-01 1.52385181e-01 1.52617427e-01 1.52849368e-01 1.53081006e-01 + 1.53312340e-01 1.53543370e-01 1.53774095e-01 1.54004516e-01 1.54234632e-01 + 1.54464444e-01 1.54693950e-01 1.54923152e-01 1.55152049e-01 1.55380640e-01 + 1.55608926e-01 1.55836907e-01 1.56064583e-01 1.56291953e-01 1.56519017e-01 + 1.56745775e-01 1.56972228e-01 1.57198375e-01 1.57424216e-01 1.57649751e-01 + 1.57874980e-01 1.58099903e-01 1.58324520e-01 1.58548831e-01 1.58772835e-01 + 1.58996533e-01 1.59219925e-01 1.59443010e-01 1.59665790e-01 1.59888262e-01 + 1.60110429e-01 1.60332289e-01 1.60553842e-01 1.60775089e-01 1.60996030e-01 + 1.61216664e-01 1.61436992e-01 1.61657013e-01 1.61876728e-01 1.62096136e-01 + 1.62315238e-01 1.62534034e-01 1.62752523e-01 1.62970706e-01 1.63188582e-01 + 1.63406152e-01 1.63623416e-01 1.63840374e-01 1.64057026e-01 1.64273371e-01 + 1.64489411e-01 1.64705144e-01 1.64920571e-01 1.65135693e-01 1.65350508e-01 + 1.65565018e-01 1.65779222e-01 1.65993121e-01 1.66206714e-01 1.66420001e-01 + 1.66632983e-01 1.66845660e-01 1.67058031e-01 1.67270097e-01 1.67481858e-01 + 1.67693314e-01 1.67904465e-01 1.68115312e-01 1.68325854e-01 1.68536091e-01 + 1.68746023e-01 1.68955652e-01 1.69164976e-01 1.69373996e-01 1.69582712e-01 + 1.69791124e-01 1.69999232e-01 1.70207037e-01 1.70414538e-01 1.70621735e-01 + 1.70828630e-01 1.71035221e-01 1.71241510e-01 1.71447495e-01 1.71653178e-01 + 1.71858558e-01 1.72063636e-01 1.72268412e-01 1.72472886e-01 1.72677057e-01 + 1.72880927e-01 1.73084495e-01 1.73287762e-01 1.73490728e-01 1.73693392e-01 + 1.73895756e-01 1.74097819e-01 1.74299581e-01 1.74501043e-01 1.74702204e-01 + 1.74903066e-01 1.75103627e-01 1.75303889e-01 1.75503852e-01 1.75703515e-01 + 1.75902879e-01 1.76101944e-01 1.76300710e-01 1.76499178e-01 1.76697348e-01 + 1.76895219e-01 1.77092792e-01 1.77290068e-01 1.77487046e-01 1.77683727e-01 + 1.77880111e-01 1.78076198e-01 1.78271989e-01 1.78467483e-01 1.78662680e-01 + 1.78857582e-01 1.79052188e-01 1.79246498e-01 1.79440514e-01 1.79634234e-01 + 1.79827659e-01 1.80020789e-01 1.80213625e-01 1.80406167e-01 1.80598415e-01 + 1.80790370e-01 1.80982031e-01 1.81173398e-01 1.81364473e-01 1.81555255e-01 + 1.81745745e-01 1.81935942e-01 1.82125848e-01 1.82315462e-01 1.82504784e-01 + 1.82693815e-01 1.82882555e-01 1.83071004e-01 1.83259163e-01 1.83447032e-01 + 1.83634611e-01 1.83821900e-01 1.84008900e-01 1.84195611e-01 1.84382033e-01 + 1.84568166e-01 1.84754012e-01 1.84939569e-01 1.85124838e-01 1.85309820e-01 + 1.85494514e-01 1.85678922e-01 1.85863043e-01 1.86046878e-01 1.86230426e-01 + 1.86413689e-01 1.86596666e-01 1.86779358e-01 1.86961765e-01 1.87143887e-01 + 1.87325725e-01 1.87507279e-01 1.87688549e-01 1.87869536e-01 1.88050239e-01 + 1.88230659e-01 1.88410797e-01 1.88590653e-01 1.88770226e-01 1.88949518e-01 + 1.89128528e-01 1.89307257e-01 1.89485705e-01 1.89663873e-01 1.89841761e-01 + 1.90019368e-01 1.90196696e-01 1.90373745e-01 1.90550515e-01 1.90727005e-01 + 1.90903218e-01 1.91079153e-01 1.91254809e-01 1.91430189e-01 1.91605291e-01 + 1.91780116e-01 1.91954665e-01 1.92128937e-01 1.92302934e-01 1.92476655e-01 + 1.92650101e-01 1.92823272e-01 1.92996169e-01 1.93168791e-01 1.93341139e-01 + 1.93513213e-01 1.93685014e-01 1.93856543e-01 1.94027798e-01 1.94198781e-01 + 1.94369492e-01 1.94539932e-01 1.94710100e-01 1.94879997e-01 1.95049623e-01 + 1.95218979e-01 1.95388065e-01 1.95556881e-01 1.95725428e-01 1.95893706e-01 + 1.96061715e-01 1.96229455e-01 1.96396928e-01 1.96564133e-01 1.96731070e-01 + 1.96897741e-01 1.97064144e-01 1.97230282e-01 1.97396153e-01 1.97561758e-01 + 1.97727099e-01 1.97892174e-01 1.98056984e-01 1.98221530e-01 1.98385813e-01 + 1.98549831e-01 1.98713586e-01 1.98877078e-01 1.99040308e-01 1.99203275e-01 + 1.99365980e-01 1.99528424e-01 1.99690606e-01 1.99852528e-01 2.00014188e-01 + 2.00175589e-01 2.00336730e-01 2.00497611e-01 2.00658233e-01 2.00818596e-01 + 2.00978701e-01 2.01138547e-01 2.01298136e-01 2.01457467e-01 2.01616542e-01 + 2.01775359e-01 2.01933920e-01 2.02092225e-01 2.02250274e-01 2.02408068e-01 + 2.02565607e-01 2.02722891e-01 2.02879921e-01 2.03036697e-01 2.03193220e-01 + 2.03349489e-01 2.03505505e-01 2.03661269e-01 2.03816780e-01 2.03972040e-01 + 2.04127048e-01 2.04281805e-01 2.04436312e-01 2.04590568e-01 2.04744573e-01 + 2.04898329e-01 2.05051836e-01 2.05205094e-01 2.05358103e-01 2.05510864e-01 + 2.05663377e-01 2.05815642e-01 2.05967660e-01 2.06119432e-01 2.06270956e-01 + 2.06422235e-01 2.06573268e-01 2.06724055e-01 2.06874598e-01 2.07024895e-01 + 2.07174948e-01 2.07324757e-01 2.07474323e-01 2.07623645e-01 2.07772725e-01 + 2.07921561e-01 2.08070156e-01 2.08218508e-01 2.08366619e-01 2.08514489e-01 + 2.08662119e-01 2.08809507e-01 2.08956656e-01 2.09103565e-01 2.09250235e-01 + 2.09396665e-01 2.09542857e-01 2.09688811e-01 2.09834526e-01 2.09980005e-01 + 2.10125246e-01 2.10270250e-01 2.10415017e-01 2.10559549e-01 2.10703844e-01 + 2.10847905e-01 2.10991730e-01 2.11135320e-01 2.11278676e-01 2.11421799e-01 + 2.11564687e-01 2.11707342e-01 2.11849765e-01 2.11991955e-01 2.12133912e-01 + 2.12275638e-01 2.12417132e-01 2.12558395e-01 2.12699428e-01 2.12840230e-01 + 2.12980802e-01 2.13121144e-01 2.13261257e-01 2.13401141e-01 2.13540796e-01 + 2.13680223e-01 2.13819422e-01 2.13958394e-01 2.14097138e-01 2.14235656e-01 + 2.14373947e-01 2.14512011e-01 2.14649851e-01 2.14787464e-01 2.14924853e-01 + 2.15062017e-01 2.15198957e-01 2.15335672e-01 2.15472164e-01 2.15608433e-01 + 2.15744479e-01 2.15880302e-01 2.16015903e-01 2.16151282e-01 2.16286440e-01 + 2.16421376e-01 2.16556092e-01 2.16690587e-01 2.16824862e-01 2.16958918e-01 + 2.17092754e-01 2.17226371e-01 2.17359769e-01 2.17492949e-01 2.17625911e-01 + 2.17758656e-01 2.17891183e-01 2.18023493e-01 2.18155587e-01 2.18287464e-01 + 2.18419126e-01 2.18550572e-01 2.18681803e-01 2.18812819e-01 2.18943621e-01 + 2.19074208e-01 2.19204582e-01 2.19334742e-01 2.19464690e-01 2.19594424e-01 + 2.19723946e-01 2.19853257e-01 2.19982355e-01 2.20111242e-01 2.20239919e-01 + 2.20368384e-01 2.20496640e-01 2.20624685e-01 2.20752521e-01 2.20880148e-01 + 2.21007566e-01 2.21134775e-01 2.21261776e-01 2.21388569e-01 2.21515155e-01 + 2.21641533e-01 2.21767705e-01 2.21893670e-01 2.22019429e-01 2.22144983e-01 + 2.22270331e-01 2.22395473e-01 2.22520411e-01 2.22645145e-01 2.22769675e-01 + 2.22894000e-01 2.23018123e-01 2.23142042e-01 2.23265759e-01 2.23389273e-01 + 2.23512586e-01 2.23635696e-01 2.23758606e-01 2.23881314e-01 2.24003822e-01 + 2.24126129e-01 2.24248236e-01 2.24370144e-01 2.24491852e-01 2.24613362e-01 + 2.24734673e-01 2.24855785e-01 2.24976700e-01 2.25097417e-01 2.25217936e-01 + 2.25338259e-01 2.25458385e-01 2.25578315e-01 2.25698048e-01 2.25817587e-01 + 2.25936930e-01 2.26056078e-01 2.26175031e-01 2.26293790e-01 2.26412355e-01 + 2.26530727e-01 2.26648905e-01 2.26766890e-01 2.26884683e-01 2.27002283e-01 + 2.27119691e-01 2.27236908e-01 2.27353934e-01 2.27470768e-01 2.27587412e-01 + 2.27703865e-01 2.27820129e-01 2.27936203e-01 2.28052087e-01 2.28167783e-01 + 2.28283290e-01 2.28398608e-01 2.28513738e-01 2.28628681e-01 2.28743437e-01 + 2.28858005e-01 2.28972386e-01 2.29086581e-01 2.29200591e-01 2.29314414e-01 + 2.29428052e-01 2.29541504e-01 2.29654772e-01 2.29767856e-01 2.29880755e-01 + 2.29993470e-01 2.30106002e-01 2.30218351e-01 2.30330517e-01 2.30442500e-01 + 2.30554301e-01 2.30665921e-01 2.30777358e-01 2.30888614e-01 2.30999690e-01 + 2.31110584e-01 2.31221299e-01 2.31331833e-01 2.31442188e-01 2.31552363e-01 + 2.31662359e-01 2.31772176e-01 2.31881815e-01 2.31991276e-01 2.32100559e-01 + 2.32209665e-01 2.32318593e-01 2.32427344e-01 2.32535919e-01 2.32644318e-01 + 2.32752540e-01 2.32860587e-01 2.32968459e-01 2.33076155e-01 2.33183677e-01 + 2.33291025e-01 2.33398198e-01 2.33505198e-01 2.33612024e-01 2.33718676e-01 + 2.33825157e-01 2.33931464e-01 2.34037599e-01 2.34143562e-01 2.34249354e-01 + 2.34354974e-01 2.34460423e-01 2.34565702e-01 2.34670810e-01 2.34775748e-01 + 2.34880516e-01 2.34985114e-01 2.35089544e-01 2.35193804e-01 2.35297896e-01 + 2.35401819e-01 2.35505574e-01 2.35609162e-01 2.35712582e-01 2.35815835e-01 + 2.35918921e-01 2.36021841e-01 2.36124594e-01 2.36227182e-01 2.36329603e-01 + 2.36431860e-01 2.36533951e-01 2.36635878e-01 2.36737640e-01 2.36839238e-01 + 2.36940672e-01 2.37041942e-01 2.37143049e-01 2.37243994e-01 2.37344775e-01 + 2.37445394e-01 2.37545851e-01 2.37646146e-01 2.37746279e-01 2.37846251e-01 + 2.37946062e-01 2.38045713e-01 2.38145203e-01 2.38244533e-01 2.38343703e-01 + 2.38442713e-01 2.38541565e-01 2.38640257e-01 2.38738790e-01 2.38837166e-01 + 2.38935383e-01 2.39033442e-01 2.39131344e-01 2.39229088e-01 2.39326676e-01 + 2.39424106e-01 2.39521381e-01 2.39618499e-01 2.39715461e-01 2.39812268e-01 + 2.39908919e-01 2.40005416e-01 2.40101757e-01 2.40197944e-01 2.40293977e-01 + 2.40389856e-01 2.40485582e-01 2.40581154e-01 2.40676573e-01 2.40771839e-01 + 2.40866953e-01 2.40961914e-01 2.41056724e-01 2.41151382e-01 2.41245888e-01 + 2.41340243e-01 2.41434447e-01 2.41528501e-01 2.41622404e-01 2.41716158e-01 + 2.41809761e-01 2.41903215e-01 2.41996520e-01 2.42089675e-01 2.42182682e-01 + 2.42275541e-01 2.42368251e-01 2.42460813e-01 2.42553228e-01 2.42645496e-01 + 2.42737616e-01 2.42829589e-01 2.42921416e-01 2.43013097e-01 2.43104631e-01 + 2.43196020e-01 2.43287263e-01 2.43378361e-01 2.43469314e-01 2.43560122e-01 + 2.43650786e-01 2.43741306e-01 2.43831681e-01 2.43921913e-01 2.44012001e-01 + 2.44101947e-01 2.44191749e-01 2.44281409e-01 2.44370926e-01 2.44460302e-01 + 2.44549535e-01 2.44638627e-01 2.44727577e-01 2.44816386e-01 2.44905055e-01 + 2.44993583e-01 2.45081970e-01 2.45170218e-01 2.45258325e-01 2.45346293e-01 + 2.45434122e-01 2.45521812e-01 2.45609362e-01 2.45696775e-01 2.45784049e-01 + 2.45871185e-01 2.45958183e-01 2.46045043e-01 2.46131766e-01 2.46218353e-01 + 2.46304802e-01 2.46391115e-01 2.46477291e-01 2.46563332e-01 2.46649236e-01 + 2.46735006e-01 2.46820639e-01 2.46906138e-01 2.46991502e-01 2.47076731e-01 + 2.47161826e-01 2.47246787e-01 2.47331614e-01 2.47416307e-01 2.47500867e-01 + 2.47585294e-01 2.47669588e-01 2.47753749e-01 2.47837778e-01 2.47921675e-01 + 2.48005440e-01 2.48089073e-01 2.48172575e-01 2.48255945e-01 2.48339185e-01 + 2.48422294e-01 2.48505272e-01 2.48588120e-01 2.48670839e-01 2.48753427e-01 + 2.48835886e-01 2.48918215e-01 2.49000416e-01 2.49082487e-01 2.49164431e-01 + 2.49246245e-01 2.49327932e-01 2.49409490e-01 2.49490922e-01 2.49572225e-01 + 2.49653402e-01 2.49734451e-01 2.49815374e-01 2.49896170e-01 2.49976840e-01 + 2.50057384e-01 2.50137802e-01 2.50218094e-01 2.50298261e-01 2.50378303e-01 + 2.50458221e-01 2.50538013e-01 2.50617681e-01 2.50697225e-01 2.50776645e-01 + 2.50855941e-01 2.50935113e-01 2.51014162e-01 2.51093088e-01 2.51171892e-01 + 2.51250572e-01 2.51329130e-01 2.51407566e-01 2.51485880e-01 2.51564073e-01 + 2.51642143e-01 2.51720093e-01 2.51797921e-01 2.51875629e-01 2.51953216e-01 + 2.52030682e-01 2.52108028e-01 2.52185254e-01 2.52262361e-01 2.52339348e-01 + 2.52416215e-01 2.52492964e-01 2.52569593e-01 2.52646104e-01 2.52722497e-01 + 2.52798771e-01 2.52874927e-01 2.52950965e-01 2.53026886e-01 2.53102689e-01 + 2.53178375e-01 2.53253944e-01 2.53329397e-01 2.53404733e-01 2.53479952e-01 + 2.53555056e-01 2.53630043e-01 2.53704915e-01 2.53779671e-01 2.53854312e-01 + 2.53928839e-01 2.54003250e-01 2.54077546e-01 2.54151728e-01 2.54225796e-01 + 2.54299750e-01 2.54373590e-01 2.54447316e-01 2.54520930e-01 2.54594429e-01 + 2.54667816e-01 2.54741090e-01 2.54814252e-01 2.54887301e-01 2.54960238e-01 + 2.55033063e-01 2.55105776e-01 2.55178378e-01 2.55250868e-01 2.55323247e-01 + 2.55395516e-01 2.55467673e-01 2.55539720e-01 2.55611657e-01 2.55683483e-01 + 2.55755200e-01 2.55826806e-01 2.55898304e-01 2.55969692e-01 2.56040970e-01 + 2.56112140e-01 2.56183201e-01 2.56254154e-01 2.56324998e-01 2.56395734e-01 + 2.56466362e-01 2.56536882e-01 2.56607295e-01 2.56677600e-01 2.56747798e-01 + 2.56817889e-01 2.56887874e-01 2.56957752e-01 2.57027523e-01 2.57097188e-01 + 2.57166747e-01 2.57236200e-01 2.57305548e-01 2.57374790e-01 2.57443927e-01 + 2.57512959e-01 2.57581886e-01 2.57650709e-01 2.57719427e-01 2.57788040e-01 + 2.57856550e-01 2.57924955e-01 2.57993257e-01 2.58061455e-01 2.58129550e-01 + 2.58197542e-01 2.58265431e-01 2.58333217e-01 2.58400900e-01 2.58468481e-01 + 2.58535960e-01 2.58603336e-01 2.58670611e-01 2.58737784e-01 2.58804856e-01 + 2.58871826e-01 2.58938695e-01 2.59005463e-01 2.59072131e-01 2.59138697e-01 + 2.59205164e-01 2.59271530e-01 2.59337796e-01 2.59403962e-01 2.59470029e-01 + 2.59535996e-01 2.59601864e-01 2.59667633e-01 2.59733302e-01 2.59798873e-01 + 2.59864345e-01 2.59929719e-01 2.59994995e-01 2.60060172e-01 2.60125252e-01 + 2.60190234e-01 2.60255118e-01 2.60319905e-01 2.60384595e-01 2.60449188e-01 + 2.60513684e-01 2.60578083e-01 2.60642386e-01 2.60706593e-01 2.60770703e-01 + 2.60834718e-01 2.60898636e-01 2.60962459e-01 2.61026187e-01 2.61089819e-01 + 2.61153356e-01 2.61216799e-01 2.61280146e-01 2.61343399e-01 2.61406557e-01 + 2.61469622e-01 2.61532592e-01 2.61595468e-01 2.61658250e-01 2.61720939e-01 + 2.61783535e-01 2.61846037e-01 2.61908446e-01 2.61970763e-01 2.62032986e-01 + 2.62095117e-01 2.62157156e-01 2.62219102e-01 2.62280956e-01 2.62342719e-01 + 2.62404389e-01 2.62465968e-01 2.62527456e-01 2.62588852e-01 2.62650158e-01 + 2.62711372e-01 2.62772496e-01 2.62833529e-01 2.62894471e-01 2.62955324e-01 + 2.63016086e-01 2.63076758e-01 2.63137341e-01 2.63197833e-01 2.63258237e-01 + 2.63318551e-01 2.63378776e-01 2.63438912e-01 2.63498959e-01 2.63558918e-01 + 2.63618788e-01 2.63678569e-01 2.63738263e-01 2.63797868e-01 2.63857386e-01 + 2.63916816e-01 2.63976158e-01 2.64035413e-01 2.64094581e-01 2.64153661e-01 + 2.64212655e-01 2.64271562e-01 2.64330382e-01 2.64389116e-01 2.64447763e-01 + 2.64506324e-01 2.64564800e-01 2.64623189e-01 2.64681493e-01 2.64739711e-01 + 2.64797844e-01 2.64855892e-01 2.64913854e-01 2.64971732e-01 2.65029524e-01 + 2.65087233e-01 2.65144856e-01 2.65202396e-01 2.65259851e-01 2.65317222e-01 + 2.65374509e-01 2.65431713e-01 2.65488833e-01 2.65545869e-01 2.65602822e-01 + 2.65659692e-01 2.65716480e-01 2.65773184e-01 2.65829805e-01 2.65886344e-01 + 2.65942801e-01 2.65999175e-01 2.66055468e-01 2.66111678e-01 2.66167806e-01 + 2.66223853e-01 2.66279819e-01 2.66335703e-01 2.66391505e-01 2.66447227e-01 + 2.66502868e-01 2.66558427e-01 2.66613907e-01 2.66669305e-01 2.66724624e-01 + 2.66779862e-01 2.66835020e-01 2.66890098e-01 2.66945096e-01 2.67000015e-01 + 2.67054854e-01 2.67109613e-01 2.67164294e-01 2.67218895e-01 2.67273418e-01 + 2.67327861e-01 2.67382226e-01 2.67436512e-01 2.67490720e-01 2.67544850e-01 + 2.67598902e-01 2.67652875e-01 2.67706771e-01 2.67760589e-01 2.67814330e-01 + 2.67867993e-01 2.67921578e-01 2.67975087e-01 2.68028519e-01 2.68081873e-01 + 2.68135151e-01 2.68188352e-01 2.68241477e-01 2.68294526e-01 2.68347498e-01 + 2.68400394e-01 2.68453214e-01 2.68505959e-01 2.68558628e-01 2.68611221e-01 + 2.68663738e-01 2.68716181e-01 2.68768548e-01 2.68820841e-01 2.68873058e-01 + 2.68925201e-01 2.68977269e-01 2.69029263e-01 2.69081182e-01 2.69133027e-01 + 2.69184798e-01 2.69236495e-01 2.69288118e-01 2.69339668e-01 2.69391143e-01 + 2.69442546e-01 2.69493875e-01 2.69545131e-01 2.69596314e-01 2.69647424e-01 + 2.69698461e-01 2.69749425e-01 2.69800317e-01 2.69851137e-01 2.69901884e-01 + 2.69952559e-01 2.70003162e-01 2.70053693e-01 2.70104153e-01 2.70154540e-01 + 2.70204856e-01 2.70255101e-01 2.70305274e-01 2.70355377e-01 2.70405408e-01 + 2.70455368e-01 2.70505258e-01 2.70555077e-01 2.70604825e-01 2.70654503e-01 + 2.70704110e-01 2.70753648e-01 2.70803115e-01 2.70852513e-01 2.70901840e-01 + 2.70951098e-01 2.71000287e-01 2.71049406e-01 2.71098455e-01 2.71147436e-01 + 2.71196347e-01 2.71245190e-01 2.71293963e-01 2.71342668e-01 2.71391304e-01 + 2.71439872e-01 2.71488372e-01 2.71536803e-01 2.71585166e-01 2.71633461e-01 + 2.71681688e-01 2.71729848e-01 2.71777939e-01 2.71825964e-01 2.71873921e-01 + 2.71921810e-01 2.71969632e-01 2.72017388e-01 2.72065076e-01 2.72112698e-01 + 2.72160252e-01 2.72207741e-01 2.72255162e-01 2.72302518e-01 2.72349807e-01 + 2.72397030e-01 2.72444187e-01 2.72491278e-01 2.72538303e-01 2.72585263e-01 + 2.72632157e-01 2.72678985e-01 2.72725748e-01 2.72772446e-01 2.72819079e-01 + 2.72865647e-01 2.72912150e-01 2.72958588e-01 2.73004962e-01 2.73051271e-01 + 2.73097516e-01 2.73143696e-01 2.73189812e-01 2.73235864e-01 2.73281852e-01 + 2.73327776e-01 2.73373636e-01 2.73419432e-01 2.73465166e-01 2.73510835e-01 + 2.73556441e-01 2.73601984e-01 2.73647464e-01 2.73692881e-01 2.73738235e-01 + 2.73783526e-01 2.73828755e-01 2.73873921e-01 2.73919024e-01 2.73964065e-01 + 2.74009044e-01 2.74053961e-01 2.74098815e-01 2.74143608e-01 2.74188339e-01 + 2.74233008e-01 2.74277616e-01 2.74322162e-01 2.74366646e-01 2.74411070e-01 + 2.74455432e-01 2.74499733e-01 2.74543973e-01 2.74588152e-01 2.74632270e-01 + 2.74676328e-01 2.74720325e-01 2.74764262e-01 2.74808138e-01 2.74851954e-01 + 2.74895710e-01 2.74939406e-01 2.74983042e-01 2.75026618e-01 2.75070135e-01 + 2.75113591e-01 2.75156988e-01 2.75200326e-01 2.75243604e-01 2.75286824e-01 + 2.75329984e-01 2.75373085e-01 2.75416127e-01 2.75459110e-01 2.75502034e-01 + 2.75544900e-01 2.75587707e-01 2.75630456e-01 2.75673147e-01 2.75715779e-01 + 2.75758353e-01 2.75800869e-01 2.75843328e-01 2.75885728e-01 2.75928070e-01 + 2.75970355e-01 2.76012583e-01 2.76054753e-01 2.76096866e-01 2.76138921e-01 + 2.76180919e-01 2.76222860e-01 2.76264745e-01 2.76306572e-01 2.76348342e-01 + 2.76390056e-01 2.76431714e-01 2.76473315e-01 2.76514859e-01 2.76556347e-01 + 2.76597779e-01 2.76639155e-01 2.76680475e-01 2.76721739e-01 2.76762947e-01 + 2.76804100e-01 2.76845197e-01 2.76886238e-01 2.76927224e-01 2.76968154e-01 + 2.77009030e-01 2.77049850e-01 2.77090615e-01 2.77131325e-01 2.77171980e-01 + 2.77212581e-01 2.77253126e-01 2.77293617e-01 2.77334054e-01 2.77374436e-01 + 2.77414764e-01 2.77455038e-01 2.77495257e-01 2.77535423e-01 2.77575534e-01 + 2.77615592e-01 2.77655596e-01 2.77695546e-01 2.77735443e-01 2.77775286e-01 + 2.77815076e-01 2.77854812e-01 2.77894495e-01 2.77934125e-01 2.77973702e-01 + 2.78013226e-01 2.78052697e-01 2.78092115e-01 2.78131481e-01 2.78170794e-01 + 2.78210054e-01 2.78249262e-01 2.78288418e-01 2.78327521e-01 2.78366572e-01 + 2.78405571e-01 2.78444519e-01 2.78483414e-01 2.78522257e-01 2.78561049e-01 + 2.78599789e-01 2.78638477e-01 2.78677114e-01 2.78715700e-01 2.78754234e-01 + 2.78792717e-01 2.78831149e-01 2.78869530e-01 2.78907859e-01 2.78946138e-01 + 1.03953624e+00 1.03772749e+00 1.03592023e+00 1.03411445e+00 1.03231016e+00 + 1.03050735e+00 1.02870603e+00 1.02690620e+00 1.02510785e+00 1.02331100e+00 + 1.02151562e+00 1.01972174e+00 1.01792935e+00 1.01613844e+00 1.01434902e+00 + 1.01256110e+00 1.01077466e+00 1.00898971e+00 1.00720626e+00 1.00542429e+00 + 1.00364382e+00 1.00186484e+00 1.00008735e+00 9.98311355e-01 9.96536852e-01 + 9.94763842e-01 9.92992326e-01 9.91222304e-01 9.89453777e-01 9.87686744e-01 + 9.85921207e-01 9.84157165e-01 9.82394619e-01 9.80633570e-01 9.78874017e-01 + 9.77115962e-01 9.75359404e-01 9.73604344e-01 9.71850782e-01 9.70098719e-01 + 9.68348155e-01 9.66599090e-01 9.64851525e-01 9.63105460e-01 9.61360895e-01 + 9.59617832e-01 9.57876269e-01 9.56136208e-01 9.54397649e-01 9.52660593e-01 + 9.50925039e-01 9.49190988e-01 9.47458441e-01 9.45727397e-01 9.43997858e-01 + 9.42269823e-01 9.40543293e-01 9.38818268e-01 9.37094749e-01 9.35372736e-01 + 9.33652230e-01 9.31933230e-01 9.30215737e-01 9.28499752e-01 9.26785274e-01 + 9.25072305e-01 9.23360844e-01 9.21650893e-01 9.19942450e-01 9.18235517e-01 + 9.16530094e-01 9.14826182e-01 9.13123780e-01 9.11422890e-01 9.09723511e-01 + 9.08025644e-01 9.06329289e-01 9.04634446e-01 9.02941117e-01 9.01249300e-01 + 8.99558998e-01 8.97870209e-01 8.96182935e-01 8.94497176e-01 8.92812931e-01 + 8.91130202e-01 8.89448989e-01 8.87769292e-01 8.86091112e-01 8.84414448e-01 + 8.82739302e-01 8.81065673e-01 8.79393562e-01 8.77722970e-01 8.76053896e-01 + 8.74386341e-01 8.72720306e-01 8.71055790e-01 8.69392795e-01 8.67731320e-01 + 8.66071366e-01 8.64412932e-01 8.62756021e-01 8.61100631e-01 8.59446764e-01 + 8.57794419e-01 8.56143597e-01 8.54494298e-01 8.52846523e-01 8.51200272e-01 + 8.49555545e-01 8.47912343e-01 8.46270666e-01 8.44630515e-01 8.42991889e-01 + 8.41354789e-01 8.39719216e-01 8.38085170e-01 8.36452650e-01 8.34821658e-01 + 8.33192195e-01 8.31564259e-01 8.29937852e-01 8.28312973e-01 8.26689624e-01 + 8.25067805e-01 8.23447515e-01 8.21828756e-01 8.20211528e-01 8.18595830e-01 + 8.16981664e-01 8.15369029e-01 8.13757927e-01 8.12148357e-01 8.10540319e-01 + 8.08933815e-01 8.07328844e-01 8.05725406e-01 8.04123503e-01 8.02523135e-01 + 8.00924301e-01 7.99327002e-01 7.97731239e-01 7.96137011e-01 7.94544320e-01 + 7.92953165e-01 7.91363547e-01 7.89775466e-01 7.88188923e-01 7.86603918e-01 + 7.85020450e-01 7.83438522e-01 7.81858132e-01 7.80279281e-01 7.78701970e-01 + 7.77126199e-01 7.75551968e-01 7.73979278e-01 7.72408129e-01 7.70838521e-01 + 7.69270454e-01 7.67703930e-01 7.66138947e-01 7.64575508e-01 7.63013611e-01 + 7.61453258e-01 7.59894448e-01 7.58337182e-01 7.56781460e-01 7.55227283e-01 + 7.53674651e-01 7.52123565e-01 7.50574024e-01 7.49026029e-01 7.47479580e-01 + 7.45934678e-01 7.44391322e-01 7.42849514e-01 7.41309254e-01 7.39770542e-01 + 7.38233378e-01 7.36697762e-01 7.35163696e-01 7.33631179e-01 7.32100211e-01 + 7.30570794e-01 7.29042926e-01 7.27516610e-01 7.25991844e-01 7.24468629e-01 + 7.22946966e-01 7.21426855e-01 7.19908297e-01 7.18391291e-01 7.16875837e-01 + 7.15361937e-01 7.13849591e-01 7.12338798e-01 7.10829560e-01 7.09321876e-01 + 7.07815747e-01 7.06311174e-01 7.04808155e-01 7.03306693e-01 7.01806787e-01 + 7.00308437e-01 6.98811644e-01 6.97316408e-01 6.95822730e-01 6.94330610e-01 + 6.92840047e-01 6.91351043e-01 6.89863598e-01 6.88377712e-01 6.86893385e-01 + 6.85410618e-01 6.83929411e-01 6.82449765e-01 6.80971679e-01 6.79495154e-01 + 6.78020190e-01 6.76546789e-01 6.75074949e-01 6.73604671e-01 6.72135956e-01 + 6.70668804e-01 6.69203215e-01 6.67739189e-01 6.66276728e-01 6.64815830e-01 + 6.63356498e-01 6.61898730e-01 6.60442527e-01 6.58987889e-01 6.57534818e-01 + 6.56083312e-01 6.54633373e-01 6.53185001e-01 6.51738195e-01 6.50292957e-01 + 6.48849287e-01 6.47407184e-01 6.45966650e-01 6.44527685e-01 6.43090288e-01 + 6.41654460e-01 6.40220202e-01 6.38787514e-01 6.37356396e-01 6.35926849e-01 + 6.34498872e-01 6.33072467e-01 6.31647633e-01 6.30224370e-01 6.28802680e-01 + 6.27382561e-01 6.25964016e-01 6.24547043e-01 6.23131644e-01 6.21717818e-01 + 6.20305566e-01 6.18894889e-01 6.17485785e-01 6.16078257e-01 6.14672303e-01 + 6.13267925e-01 6.11865123e-01 6.10463897e-01 6.09064247e-01 6.07666173e-01 + 6.06269677e-01 6.04874758e-01 6.03481416e-01 6.02089652e-01 6.00699467e-01 + 5.99310859e-01 5.97923831e-01 5.96538381e-01 5.95154511e-01 5.93772221e-01 + 5.92391510e-01 5.91012380e-01 5.89634830e-01 5.88258861e-01 5.86884473e-01 + 5.85511667e-01 5.84140442e-01 5.82770800e-01 5.81402740e-01 5.80036262e-01 + 5.78671367e-01 5.77308056e-01 5.75946328e-01 5.74586184e-01 5.73227624e-01 + 5.71870649e-01 5.70515258e-01 5.69161453e-01 5.67809232e-01 5.66458597e-01 + 5.65109548e-01 5.63762086e-01 5.62416210e-01 5.61071920e-01 5.59729218e-01 + 5.58388103e-01 5.57048576e-01 5.55710636e-01 5.54374285e-01 5.53039523e-01 + 5.51706349e-01 5.50374764e-01 5.49044769e-01 5.47716364e-01 5.46389548e-01 + 5.45064323e-01 5.43740689e-01 5.42418645e-01 5.41098192e-01 5.39779331e-01 + 5.38462062e-01 5.37146385e-01 5.35832299e-01 5.34519807e-01 5.33208907e-01 + 5.31899601e-01 5.30591888e-01 5.29285769e-01 5.27981244e-01 5.26678313e-01 + 5.25376977e-01 5.24077235e-01 5.22779089e-01 5.21482538e-01 5.20187583e-01 + 5.18894224e-01 5.17602461e-01 5.16312295e-01 5.15023726e-01 5.13736754e-01 + 5.12451379e-01 5.11167602e-01 5.09885423e-01 5.08604843e-01 5.07325861e-01 + 5.06048477e-01 5.04772693e-01 5.03498508e-01 5.02225923e-01 5.00954938e-01 + 4.99685553e-01 4.98417769e-01 4.97151585e-01 4.95887003e-01 4.94624021e-01 + 4.93362642e-01 4.92102864e-01 4.90844689e-01 4.89588116e-01 4.88333145e-01 + 4.87079778e-01 4.85828014e-01 4.84577853e-01 4.83329297e-01 4.82082344e-01 + 4.80836996e-01 4.79593252e-01 4.78351114e-01 4.77110580e-01 4.75871652e-01 + 4.74634330e-01 4.73398614e-01 4.72164504e-01 4.70932001e-01 4.69701104e-01 + 4.68471815e-01 4.67244132e-01 4.66018058e-01 4.64793591e-01 4.63570733e-01 + 4.62349483e-01 4.61129842e-01 4.59911810e-01 4.58695387e-01 4.57480573e-01 + 4.56267369e-01 4.55055776e-01 4.53845792e-01 4.52637419e-01 4.51430658e-01 + 4.50225507e-01 4.49021967e-01 4.47820039e-01 4.46619724e-01 4.45421020e-01 + 4.44223928e-01 4.43028450e-01 4.41834584e-01 4.40642332e-01 4.39451693e-01 + 4.38262668e-01 4.37075256e-01 4.35889459e-01 4.34705277e-01 4.33522709e-01 + 4.32341757e-01 4.31162420e-01 4.29984698e-01 4.28808592e-01 4.27634102e-01 + 4.26461229e-01 4.25289972e-01 4.24120332e-01 4.22952310e-01 4.21785904e-01 + 4.20621116e-01 4.19457946e-01 4.18296395e-01 4.17136461e-01 4.15978147e-01 + 4.14821451e-01 4.13666374e-01 4.12512917e-01 4.11361080e-01 4.10210862e-01 + 4.09062265e-01 4.07915288e-01 4.06769932e-01 4.05626197e-01 4.04484083e-01 + 4.03343590e-01 4.02204719e-01 4.01067470e-01 3.99931844e-01 3.98797839e-01 + 3.97665458e-01 3.96534699e-01 3.95405564e-01 3.94278052e-01 3.93152164e-01 + 3.92027900e-01 3.90905259e-01 3.89784244e-01 3.88664853e-01 3.87547087e-01 + 3.86430946e-01 3.85316431e-01 3.84203541e-01 3.83092278e-01 3.81982640e-01 + 3.80874629e-01 3.79768245e-01 3.78663487e-01 3.77560357e-01 3.76458854e-01 + 3.75358979e-01 3.74260731e-01 3.73164112e-01 3.72069121e-01 3.70975759e-01 + 3.69884025e-01 3.68793921e-01 3.67705446e-01 3.66618601e-01 3.65533385e-01 + 3.64449799e-01 3.63367844e-01 3.62287520e-01 3.61208826e-01 3.60131763e-01 + 3.59056331e-01 3.57982531e-01 3.56910363e-01 3.55839826e-01 3.54770922e-01 + 3.53703650e-01 3.52638011e-01 3.51574005e-01 3.50511632e-01 3.49450892e-01 + 3.48391786e-01 3.47334314e-01 3.46278476e-01 3.45224272e-01 3.44171703e-01 + 3.43120769e-01 3.42071469e-01 3.41023805e-01 3.39977776e-01 3.38933384e-01 + 3.37890627e-01 3.36849506e-01 3.35810021e-01 3.34772174e-01 3.33735963e-01 + 3.32701389e-01 3.31668453e-01 3.30637154e-01 3.29607493e-01 3.28579470e-01 + 3.27553085e-01 3.26528339e-01 3.25505231e-01 3.24483762e-01 3.23463933e-01 + 3.22445743e-01 3.21429192e-01 3.20414282e-01 3.19401011e-01 3.18389381e-01 + 3.17379391e-01 3.16371042e-01 3.15364334e-01 3.14359267e-01 3.13355841e-01 + 3.12354057e-01 3.11353915e-01 3.10355415e-01 3.09358557e-01 3.08363342e-01 + 3.07369770e-01 3.06377840e-01 3.05387554e-01 3.04398911e-01 3.03411912e-01 + 3.02426556e-01 3.01442845e-01 3.00460777e-01 2.99480355e-01 2.98501577e-01 + 2.97524444e-01 2.96548956e-01 2.95575113e-01 2.94602916e-01 2.93632365e-01 + 2.92663460e-01 2.91696201e-01 2.90730589e-01 2.89766623e-01 2.88804304e-01 + 2.87843632e-01 2.86884607e-01 2.85927230e-01 2.84971501e-01 2.84017420e-01 + 2.83064986e-01 2.82114201e-01 2.81165065e-01 2.80217578e-01 2.79271739e-01 + 2.78327550e-01 2.77385010e-01 2.76444119e-01 2.75504879e-01 2.74567288e-01 + 2.73631348e-01 2.72697059e-01 2.71764419e-01 2.70833431e-01 2.69904094e-01 + 2.68976408e-01 2.68050374e-01 2.67125991e-01 2.66203261e-01 2.65282182e-01 + 2.64362756e-01 2.63444982e-01 2.62528861e-01 2.61614393e-01 2.60701578e-01 + 2.59790416e-01 2.58880908e-01 2.57973054e-01 2.57066853e-01 2.56162307e-01 + 2.55259415e-01 2.54358178e-01 2.53458595e-01 2.52560668e-01 2.51664395e-01 + 2.50769778e-01 2.49876816e-01 2.48985511e-01 2.48095861e-01 2.47207867e-01 + 2.46321530e-01 2.45436849e-01 2.44553825e-01 2.43672457e-01 2.42792747e-01 + 2.41914695e-01 2.41038300e-01 2.40163562e-01 2.39290483e-01 2.38419061e-01 + 2.37549298e-01 2.36681193e-01 2.35814748e-01 2.34949961e-01 2.34086833e-01 + 2.33225364e-01 2.32365555e-01 2.31507405e-01 2.30650916e-01 2.29796086e-01 + 2.28942916e-01 2.28091407e-01 2.27241559e-01 2.26393372e-01 2.25546845e-01 + 2.24701980e-01 2.23858776e-01 2.23017233e-01 2.22177352e-01 2.21339134e-01 + 2.20502577e-01 2.19667682e-01 2.18834451e-01 2.18002881e-01 2.17172975e-01 + 2.16344732e-01 2.15518152e-01 2.14693235e-01 2.13869982e-01 2.13048393e-01 + 2.12228468e-01 2.11410207e-01 2.10593610e-01 2.09778678e-01 2.08965410e-01 + 2.08153807e-01 2.07343870e-01 2.06535598e-01 2.05728991e-01 2.04924049e-01 + 2.04120774e-01 2.03319164e-01 2.02519221e-01 2.01720944e-01 2.00924334e-01 + 2.00129390e-01 1.99336113e-01 1.98544503e-01 1.97754560e-01 1.96966285e-01 + 1.96179677e-01 1.95394737e-01 1.94611465e-01 1.93829861e-01 1.93049925e-01 + 1.92271658e-01 1.91495059e-01 1.90720129e-01 1.89946869e-01 1.89175277e-01 + 1.88405354e-01 1.87637101e-01 1.86870518e-01 1.86105605e-01 1.85342361e-01 + 1.84580788e-01 1.83820885e-01 1.83062653e-01 1.82306091e-01 1.81551200e-01 + 1.80797980e-01 1.80046431e-01 1.79296554e-01 1.78548348e-01 1.77801814e-01 + 1.77056952e-01 1.76313762e-01 1.75572244e-01 1.74832398e-01 1.74094225e-01 + 1.73357725e-01 1.72622897e-01 1.71889743e-01 1.71158261e-01 1.70428453e-01 + 1.69700319e-01 1.68973858e-01 1.68249071e-01 1.67525958e-01 1.66804519e-01 + 1.66084755e-01 1.65366665e-01 1.64650249e-01 1.63935509e-01 1.63222443e-01 + 1.62511053e-01 1.61801338e-01 1.61093298e-01 1.60386934e-01 1.59682246e-01 + 1.58979233e-01 1.58277897e-01 1.57578237e-01 1.56880253e-01 1.56183946e-01 + 1.55489316e-01 1.54796362e-01 1.54105086e-01 1.53415486e-01 1.52727564e-01 + 1.52041320e-01 1.51356753e-01 1.50673864e-01 1.49992653e-01 1.49313120e-01 + 1.48635265e-01 1.47959088e-01 1.47284591e-01 1.46611771e-01 1.45940631e-01 + 1.45271170e-01 1.44603388e-01 1.43937285e-01 1.43272862e-01 1.42610118e-01 + 1.41949054e-01 1.41289670e-01 1.40631966e-01 1.39975942e-01 1.39321598e-01 + 1.38668935e-01 1.38017953e-01 1.37368652e-01 1.36721031e-01 1.36075091e-01 + 1.35430833e-01 1.34788256e-01 1.34147361e-01 1.33508147e-01 1.32870615e-01 + 1.32234765e-01 1.31600597e-01 1.30968111e-01 1.30337308e-01 1.29708187e-01 + 1.29080749e-01 1.28454994e-01 1.27830921e-01 1.27208532e-01 1.26587826e-01 + 1.25968803e-01 1.25351464e-01 1.24735808e-01 1.24121836e-01 1.23509548e-01 + 1.22898944e-01 1.22290024e-01 1.21682789e-01 1.21077238e-01 1.20473372e-01 + 1.19871190e-01 1.19270693e-01 1.18671881e-01 1.18074755e-01 1.17479313e-01 + 1.16885558e-01 1.16293487e-01 1.15703102e-01 1.15114403e-01 1.14527390e-01 + 1.13942064e-01 1.13358423e-01 1.12776468e-01 1.12196200e-01 1.11617619e-01 + 1.11040725e-01 1.10465517e-01 1.09891996e-01 1.09320162e-01 1.08750016e-01 + 1.08181557e-01 1.07614785e-01 1.07049701e-01 1.06486305e-01 1.05924597e-01 + 1.05364577e-01 1.04806244e-01 1.04249601e-01 1.03694645e-01 1.03141378e-01 + 1.02589800e-01 1.02039910e-01 1.01491709e-01 1.00945198e-01 1.00400375e-01 + 9.98572416e-02 9.93157976e-02 9.87760431e-02 9.82379782e-02 9.77016030e-02 + 9.71669178e-02 9.66339224e-02 9.61026172e-02 9.55730022e-02 9.50450776e-02 + 9.45188434e-02 9.39942997e-02 9.34714468e-02 9.29502847e-02 9.24308135e-02 + 9.19130333e-02 9.13969443e-02 9.08825466e-02 9.03698403e-02 8.98588255e-02 + 8.93495023e-02 8.88418708e-02 8.83359312e-02 8.78316836e-02 8.73291281e-02 + 8.68282647e-02 8.63290937e-02 8.58316150e-02 8.53358290e-02 8.48417355e-02 + 8.43493348e-02 8.38586270e-02 8.33696121e-02 8.28822904e-02 8.23966618e-02 + 8.19127265e-02 8.14304847e-02 8.09499364e-02 8.04710817e-02 7.99939207e-02 + 7.95184537e-02 7.90446805e-02 7.85726014e-02 7.81022165e-02 7.76335259e-02 + 7.71665296e-02 7.67012279e-02 7.62376207e-02 7.57757082e-02 7.53154905e-02 + 7.48569677e-02 7.44001400e-02 7.39450073e-02 7.34915699e-02 7.30398277e-02 + 7.25897810e-02 7.21414298e-02 7.16947743e-02 7.12498144e-02 7.08065504e-02 + 7.03649822e-02 6.99251102e-02 6.94869342e-02 6.90504544e-02 6.86156710e-02 + 6.81825840e-02 6.77511935e-02 6.73214996e-02 6.68935024e-02 6.64672020e-02 + 6.60425985e-02 6.56196920e-02 6.51984826e-02 6.47789704e-02 6.43611555e-02 + 6.39450379e-02 6.35306178e-02 6.31178953e-02 6.27068704e-02 6.22975433e-02 + 6.18899141e-02 6.14839827e-02 6.10797494e-02 6.06772142e-02 6.02763772e-02 + 5.98772385e-02 5.94797982e-02 5.90840564e-02 5.86900131e-02 5.82976685e-02 + 5.79070227e-02 5.75180757e-02 5.71308276e-02 5.67452785e-02 5.63614285e-02 + 5.59792777e-02 5.55988261e-02 5.52200739e-02 5.48430212e-02 5.44676679e-02 + 5.40940143e-02 5.37220604e-02 5.33518062e-02 5.29832520e-02 5.26163976e-02 + 5.22512433e-02 5.18877891e-02 5.15260351e-02 5.11659814e-02 5.08076280e-02 + 5.04509751e-02 5.00960227e-02 4.97427708e-02 4.93912197e-02 4.90413693e-02 + 4.86932198e-02 4.83467711e-02 4.80020235e-02 4.76589769e-02 4.73176315e-02 + 4.69779873e-02 4.66400444e-02 4.63038029e-02 4.59692628e-02 4.56364243e-02 + 4.53052874e-02 4.49758521e-02 4.46481186e-02 4.43220870e-02 4.39977572e-02 + 4.36751294e-02 4.33542037e-02 4.30349801e-02 4.27174587e-02 4.24016395e-02 + 4.20875227e-02 4.17751083e-02 4.14643964e-02 4.11553870e-02 4.08480802e-02 + 4.05424762e-02 4.02385749e-02 3.99363764e-02 3.96358808e-02 3.93370881e-02 + 3.90399985e-02 3.87446120e-02 3.84509287e-02 3.81589486e-02 3.78686718e-02 + 3.75800983e-02 3.72932283e-02 3.70080618e-02 3.67245988e-02 3.64428394e-02 + 3.61627838e-02 3.58844318e-02 3.56077837e-02 3.53328395e-02 3.50595992e-02 + 3.47880629e-02 3.45182306e-02 3.42501025e-02 3.39836786e-02 3.37189589e-02 + 3.34559435e-02 3.31946324e-02 3.29350258e-02 3.26771236e-02 3.24209260e-02 + 3.21664330e-02 3.19136446e-02 3.16625610e-02 3.14131821e-02 3.11655080e-02 + 3.09195388e-02 3.06752746e-02 3.04327153e-02 3.01918611e-02 2.99527120e-02 + 2.97152680e-02 2.94795292e-02 2.92454957e-02 2.90131675e-02 2.87825447e-02 + 2.85536273e-02 2.83264153e-02 2.81009089e-02 2.78771081e-02 2.76550128e-02 + 2.74346233e-02 2.72159395e-02 2.69989614e-02 2.67836892e-02 2.65701228e-02 + 2.63582623e-02 2.61481079e-02 2.59396594e-02 2.57329170e-02 2.55278807e-02 + 2.53245505e-02 2.51229266e-02 2.49230089e-02 2.47247975e-02 2.45282924e-02 + 2.43334937e-02 2.41404014e-02 2.39490156e-02 2.37593363e-02 2.35713636e-02 + 2.33850975e-02 2.32005380e-02 2.30176851e-02 2.28365390e-02 2.26570997e-02 + 2.24793672e-02 2.23033415e-02 2.21290227e-02 2.19564108e-02 2.17855059e-02 + 2.16163080e-02 2.14488171e-02 2.12830333e-02 2.11189566e-02 2.09565871e-02 + 2.07959248e-02 2.06369696e-02 2.04797218e-02 2.03241812e-02 2.01703480e-02 + 2.00182221e-02 1.98678037e-02 1.97190927e-02 1.95720891e-02 1.94267931e-02 + 1.92832045e-02 1.91413236e-02 1.90011502e-02 1.88626845e-02 1.87259265e-02 + 1.85908761e-02 1.84575335e-02 1.83258986e-02 1.81959715e-02 1.80677522e-02 + 1.79412408e-02 1.78164372e-02 1.76933415e-02 1.75719538e-02 1.74522740e-02 + 1.73343022e-02 1.72180384e-02 1.71034827e-02 1.69906350e-02 1.68794954e-02 + 1.67700639e-02 1.66623405e-02 1.65563253e-02 1.64520183e-02 1.63494195e-02 + 1.62485289e-02 1.61493466e-02 1.60518726e-02 1.59561068e-02 1.58620494e-02 + 1.57697003e-02 1.56790596e-02 1.55901273e-02 1.55029034e-02 1.54173879e-02 + 1.53335808e-02 1.52514822e-02 1.51710921e-02 1.50924105e-02 1.50154374e-02 + 1.49401728e-02 1.48666168e-02 1.47947694e-02 1.47246305e-02 1.46562002e-02 + 1.45894786e-02 1.45244656e-02 1.44611612e-02 1.43995655e-02 1.43396785e-02 + 1.42815001e-02 1.42250305e-02 1.41702695e-02 1.41172173e-02 1.40658738e-02 + 1.40162391e-02 1.39683132e-02 1.39220960e-02 1.38775876e-02 1.38347880e-02 + 1.37936971e-02 1.37543151e-02 1.37166420e-02 1.36806776e-02 1.36464221e-02 + 1.36138754e-02 1.35830376e-02 1.35539086e-02 1.35264885e-02 1.35007773e-02 + 1.34767750e-02 1.34544815e-02 1.34338969e-02 1.34150212e-02 1.33978544e-02 + 1.33823966e-02 1.33686476e-02 1.33566075e-02 1.33462763e-02 1.33376541e-02 + 1.33307407e-02 1.33255363e-02 1.33220408e-02 1.33202542e-02 1.33201765e-02 + 1.33218078e-02 1.33251480e-02 1.33301970e-02 1.33369550e-02 1.33454220e-02 + 1.33555978e-02 1.33674825e-02 1.33810762e-02 1.33963787e-02 1.34133902e-02 + 1.34321105e-02 1.34525397e-02 1.34746779e-02 1.34985249e-02 1.35240808e-02 + 1.35513455e-02 1.35803192e-02 1.36110016e-02 1.36433930e-02 1.36774932e-02 + 1.37133022e-02 1.37508200e-02 1.37900467e-02 1.38309822e-02 1.38736265e-02 + 1.39179796e-02 1.39640414e-02 1.40118121e-02 1.40612914e-02 1.41124796e-02 + 1.41653765e-02 1.42199821e-02 1.42762964e-02 1.43343194e-02 1.43940512e-02 + 1.44554916e-02 1.45186406e-02 1.45834983e-02 1.46500646e-02 1.47183396e-02 + 1.47883231e-02 1.48600153e-02 1.49334160e-02 1.50085252e-02 1.50853430e-02 + 1.51638693e-02 1.52441041e-02 1.53260474e-02 1.54096992e-02 1.54950594e-02 + 1.55821280e-02 1.56709051e-02 1.57613905e-02 1.58535843e-02 1.59474864e-02 + 1.60430969e-02 1.61404156e-02 1.62394427e-02 1.63401780e-02 1.64426215e-02 + 1.65467732e-02 1.66526331e-02 1.67602012e-02 1.68694775e-02 1.69804618e-02 + 1.70931542e-02 1.72075547e-02 1.73236633e-02 1.74414798e-02 1.75610043e-02 + 1.76822368e-02 1.78051772e-02 1.79298256e-02 1.80561818e-02 1.81842458e-02 + 1.83140177e-02 1.84454973e-02 1.85786847e-02 1.87135798e-02 1.88501827e-02 + 1.89884931e-02 1.91285113e-02 1.92702370e-02 1.94136703e-02 1.95588111e-02 + 1.97056595e-02 1.98542153e-02 2.00044786e-02 2.01564492e-02 2.03101272e-02 + 2.04655126e-02 2.06226053e-02 2.07814052e-02 2.09419123e-02 2.11041267e-02 + 2.12680482e-02 2.14336768e-02 2.16010125e-02 2.17700553e-02 2.19408050e-02 + 2.21132617e-02 2.22874254e-02 2.24632959e-02 2.26408733e-02 2.28201575e-02 + 2.30011484e-02 2.31838461e-02 2.33682505e-02 2.35543615e-02 2.37421791e-02 + 2.39317033e-02 2.41229339e-02 2.43158711e-02 2.45105147e-02 2.47068647e-02 + 2.49049210e-02 2.51046836e-02 2.53061524e-02 2.55093275e-02 2.57142087e-02 + 2.59207960e-02 2.61290894e-02 2.63390888e-02 2.65507942e-02 2.67642055e-02 + 2.69793227e-02 2.71961457e-02 2.74146744e-02 2.76349090e-02 2.78568491e-02 + 2.80804949e-02 2.83058463e-02 2.85329032e-02 2.87616656e-02 2.89921334e-02 + 2.92243066e-02 2.94581851e-02 2.96937689e-02 2.99310578e-02 3.01700520e-02 + 3.04107512e-02 3.06531555e-02 3.08972648e-02 3.11430790e-02 3.13905981e-02 + 3.16398220e-02 3.18907507e-02 3.21433841e-02 3.23977222e-02 3.26537648e-02 + 3.29115120e-02 3.31709637e-02 3.34321199e-02 3.36949803e-02 3.39595451e-02 + 3.42258142e-02 3.44937874e-02 3.47634647e-02 3.50348461e-02 3.53079315e-02 + 3.55827209e-02 3.58592141e-02 3.61374112e-02 3.64173120e-02 3.66989165e-02 + 3.69822246e-02 3.72672363e-02 3.75539515e-02 3.78423701e-02 3.81324920e-02 + 3.84243173e-02 3.87178458e-02 3.90130775e-02 3.93100123e-02 3.96086502e-02 + 3.99089910e-02 4.02110347e-02 4.05147812e-02 4.08202305e-02 4.11273825e-02 + 4.14362371e-02 4.17467942e-02 4.20590539e-02 4.23730160e-02 4.26886804e-02 + 4.30060471e-02 4.33251159e-02 4.36458870e-02 4.39683600e-02 4.42925351e-02 + 4.46184120e-02 4.49459908e-02 4.52752714e-02 4.56062536e-02 4.59389375e-02 + 4.62733229e-02 4.66094097e-02 4.69471980e-02 4.72866875e-02 4.76278783e-02 + 4.79707703e-02 4.83153633e-02 4.86616573e-02 4.90096522e-02 4.93593480e-02 + 4.97107446e-02 5.00638418e-02 5.04186396e-02 5.07751380e-02 5.11333368e-02 + 5.14932360e-02 5.18548354e-02 5.22181351e-02 5.25831349e-02 5.29498347e-02 + 5.33182344e-02 5.36883341e-02 5.40601335e-02 5.44336326e-02 5.48088313e-02 + 5.51857296e-02 5.55643273e-02 5.59446244e-02 5.63266207e-02 5.67103163e-02 + 5.70957109e-02 5.74828046e-02 5.78715972e-02 5.82620886e-02 5.86542788e-02 + 5.90481677e-02 5.94437551e-02 5.98410410e-02 6.02400253e-02 6.06407080e-02 + 6.10430888e-02 6.14471678e-02 6.18529447e-02 6.22604197e-02 6.26695925e-02 + 6.30804630e-02 6.34930312e-02 6.39072970e-02 6.43232602e-02 6.47409209e-02 + 6.51602788e-02 6.55813340e-02 6.60040862e-02 6.64285354e-02 6.68546816e-02 + 6.72825245e-02 6.77120642e-02 6.81433005e-02 6.85762333e-02 6.90108625e-02 + 6.94471881e-02 6.98852099e-02 7.03249278e-02 7.07663417e-02 7.12094516e-02 + 7.16542573e-02 7.21007588e-02 7.25489558e-02 7.29988484e-02 7.34504365e-02 + 7.39037198e-02 7.43586984e-02 7.48153721e-02 7.52737408e-02 7.57338044e-02 + 7.61955628e-02 7.66590160e-02 7.71241637e-02 7.75910059e-02 7.80595425e-02 + 7.85297734e-02 7.90016985e-02 7.94753177e-02 7.99506308e-02 8.04276378e-02 + 8.09063385e-02 8.13867329e-02 8.18688208e-02 8.23526021e-02 8.28380768e-02 + 8.33252446e-02 8.38141056e-02 8.43046595e-02 8.47969063e-02 8.52908459e-02 + 8.57864782e-02 8.62838029e-02 8.67828201e-02 8.72835297e-02 8.77859314e-02 + 8.82900252e-02 8.87958110e-02 8.93032887e-02 8.98124581e-02 9.03233191e-02 + 9.08358717e-02 9.13501157e-02 9.18660509e-02 9.23836774e-02 9.29029949e-02 + 9.34240033e-02 9.39467025e-02 9.44710925e-02 9.49971730e-02 9.55249440e-02 + 9.60544054e-02 9.65855570e-02 9.71183987e-02 9.76529303e-02 9.81891519e-02 + 9.87270632e-02 9.92666641e-02 9.98079545e-02 1.00350934e-01 1.00895603e-01 + 1.01441962e-01 1.01990009e-01 1.02539745e-01 1.03091170e-01 1.03644283e-01 + 1.04199085e-01 1.04755576e-01 1.05313754e-01 1.05873621e-01 1.06435176e-01 + 1.06998419e-01 1.07563349e-01 1.08129968e-01 1.08698273e-01 1.09268266e-01 + 1.09839947e-01 1.10413314e-01 1.10988368e-01 1.11565110e-01 1.12143538e-01 + 1.12723652e-01 1.13305453e-01 1.13888941e-01 1.14474115e-01 1.15060974e-01 + 1.15649520e-01 1.16239751e-01 1.16831669e-01 1.17425271e-01 1.18020560e-01 + 1.18617533e-01 1.19216192e-01 1.19816535e-01 1.20418564e-01 1.21022277e-01 + 1.21627675e-01 1.22234757e-01 1.22843524e-01 1.23453975e-01 1.24066109e-01 + 1.24679928e-01 1.25295431e-01 1.25912617e-01 1.26531487e-01 1.27152040e-01 + 1.27774276e-01 1.28398196e-01 1.29023798e-01 1.29651083e-01 1.30280051e-01 + 1.30910702e-01 1.31543034e-01 1.32177050e-01 1.32812747e-01 1.33450126e-01 + 1.34089187e-01 1.34729929e-01 1.35372353e-01 1.36016459e-01 1.36662246e-01 + 1.37309713e-01 1.37958862e-01 1.38609692e-01 1.39262202e-01 1.39916393e-01 + 1.40572264e-01 1.41229815e-01 1.41889046e-01 1.42549958e-01 1.43212549e-01 + 1.43876819e-01 1.44542770e-01 1.45210399e-01 1.45879708e-01 1.46550695e-01 + 1.47223362e-01 1.47897707e-01 1.48573731e-01 1.49251433e-01 1.49930814e-01 + 1.50611872e-01 1.51294609e-01 1.51979023e-01 1.52665115e-01 1.53352885e-01 + 1.54042332e-01 1.54733456e-01 1.55426257e-01 1.56120735e-01 1.56816890e-01 + 1.57514721e-01 1.58214229e-01 1.58915413e-01 1.59618273e-01 1.60322809e-01 + 1.61029020e-01 1.61736908e-01 1.62446471e-01 1.63157709e-01 1.63870622e-01 + 1.64585210e-01 1.65301473e-01 1.66019411e-01 1.66739023e-01 1.67460310e-01 + 1.68183271e-01 1.68907906e-01 1.69634214e-01 1.70362197e-01 1.71091853e-01 + 1.71823182e-01 1.72556184e-01 1.73290860e-01 1.74027208e-01 1.74765229e-01 + 1.75504923e-01 1.76246289e-01 1.76989327e-01 1.77734037e-01 1.78480419e-01 + 1.79228473e-01 1.79978199e-01 1.80729595e-01 1.81482663e-01 1.82237402e-01 + 1.82993812e-01 1.83751893e-01 1.84511644e-01 1.85273065e-01 1.86036157e-01 + 1.86800919e-01 1.87567350e-01 1.88335451e-01 1.89105222e-01 1.89876662e-01 + 1.90649771e-01 1.91424549e-01 1.92200996e-01 1.92979112e-01 1.93758896e-01 + 1.94540348e-01 1.95323469e-01 1.96108257e-01 1.96894713e-01 1.97682837e-01 + 1.98472628e-01 1.99264087e-01 2.00057212e-01 2.00852004e-01 2.01648463e-01 + 2.02446589e-01 2.03246381e-01 2.04047839e-01 2.04850963e-01 2.05655753e-01 + 2.06462208e-01 2.07270329e-01 2.08080115e-01 2.08891567e-01 2.09704683e-01 + 2.10519464e-01 2.11335909e-01 2.12154019e-01 2.12973793e-01 2.13795231e-01 + 2.14618333e-01 2.15443098e-01 2.16269527e-01 2.17097619e-01 2.17927374e-01 + 2.18758792e-01 2.19591873e-01 2.20426616e-01 2.21263022e-01 2.22101090e-01 + 2.22940819e-01 2.23782211e-01 2.24625264e-01 2.25469978e-01 2.26316354e-01 + 2.27164390e-01 2.28014088e-01 2.28865446e-01 2.29718464e-01 2.30573143e-01 + 2.31429482e-01 2.32287480e-01 2.33147139e-01 2.34008457e-01 2.34871434e-01 + 2.35736070e-01 2.36602365e-01 2.37470319e-01 2.38339931e-01 2.39211202e-01 + 2.40084131e-01 2.40958717e-01 2.41834962e-01 2.42712864e-01 2.43592423e-01 + 2.44473640e-01 2.45356513e-01 2.46241044e-01 2.47127230e-01 2.48015074e-01 + 2.48904573e-01 2.49795728e-01 2.50688539e-01 2.51583006e-01 2.52479128e-01 + 2.53376905e-01 2.54276337e-01 2.55177424e-01 2.56080166e-01 2.56984562e-01 + 2.57890612e-01 2.58798316e-01 2.59707674e-01 2.60618685e-01 2.61531350e-01 + 2.62445667e-01 2.63361638e-01 2.64279262e-01 2.65198538e-01 2.66119466e-01 + 2.67042047e-01 2.67966279e-01 2.68892164e-01 2.69819699e-01 2.70748886e-01 + 2.71679724e-01 2.72612213e-01 2.73546353e-01 2.74482143e-01 2.75419584e-01 + 2.76358674e-01 2.77299415e-01 2.78241805e-01 2.79185844e-01 2.80131533e-01 + 2.81078870e-01 2.82027857e-01 2.82978492e-01 2.83930775e-01 2.84884707e-01 + 2.85840287e-01 2.86797514e-01 2.87756389e-01 2.88716911e-01 2.89679080e-01 + 2.90642896e-01 2.91608359e-01 2.92575468e-01 2.93544224e-01 2.94514625e-01 + 2.95486673e-01 2.96460366e-01 2.97435704e-01 2.98412687e-01 2.99391316e-01 + 3.00371589e-01 3.01353507e-01 3.02337069e-01 3.03322275e-01 3.04309125e-01 + 3.05297618e-01 3.06287755e-01 3.07279535e-01 3.08272958e-01 3.09268024e-01 + 3.10264733e-01 3.11263084e-01 3.12263076e-01 3.13264711e-01 3.14267987e-01 + 3.15272905e-01 3.16279464e-01 3.17287664e-01 3.18297505e-01 3.19308986e-01 + 3.20322108e-01 3.21336869e-01 3.22353271e-01 3.23371312e-01 3.24390992e-01 + 3.25412312e-01 3.26435271e-01 3.27459868e-01 3.28486104e-01 3.29513978e-01 + 3.30543490e-01 3.31574640e-01 3.32607428e-01 3.33641852e-01 3.34677914e-01 + 3.35715613e-01 3.36754949e-01 3.37795921e-01 3.38838529e-01 3.39882774e-01 + 3.40928653e-01 3.41976169e-01 3.43025320e-01 3.44076105e-01 3.45128526e-01 + 3.46182581e-01 3.47238271e-01 3.48295594e-01 3.49354552e-01 3.50415143e-01 + 3.51477368e-01 3.52541225e-01 3.53606716e-01 3.54673839e-01 3.55742595e-01 + 3.56812983e-01 3.57885003e-01 3.58958655e-01 3.60033939e-01 3.61110853e-01 + 3.62189399e-01 3.63269575e-01 3.64351382e-01 3.65434820e-01 3.66519887e-01 + 3.67606584e-01 3.68694911e-01 3.69784868e-01 3.70876453e-01 3.71969667e-01 + 3.73064510e-01 3.74160981e-01 3.75259081e-01 3.76358808e-01 3.77460163e-01 + 3.78563145e-01 3.79667755e-01 3.80773992e-01 3.81881855e-01 3.82991344e-01 + 3.84102460e-01 3.85215202e-01 3.86329570e-01 3.87445563e-01 3.88563181e-01 + 3.89682424e-01 3.90803292e-01 3.91925784e-01 3.93049901e-01 3.94175642e-01 + 3.95303006e-01 3.96431994e-01 3.97562605e-01 3.98694839e-01 3.99828696e-01 + 4.00964175e-01 4.02101276e-01 4.03240000e-01 4.04380345e-01 4.05522312e-01 + 4.06665899e-01 4.07811108e-01 4.08957938e-01 4.10106388e-01 4.11256458e-01 + 4.12408148e-01 4.13561458e-01 4.14716388e-01 4.15872936e-01 4.17031104e-01 + 4.18190890e-01 4.19352295e-01 4.20515317e-01 4.21679958e-01 4.22846216e-01 + 4.24014092e-01 4.25183585e-01 4.26354695e-01 4.27527421e-01 4.28701764e-01 + 4.29877723e-01 4.31055298e-01 4.32234488e-01 4.33415294e-01 4.34597715e-01 + 4.35781751e-01 4.36967401e-01 4.38154665e-01 4.39343544e-01 4.40534036e-01 + 4.41726142e-01 4.42919861e-01 4.44115193e-01 4.45312138e-01 4.46510695e-01 + 4.47710864e-01 4.48912645e-01 4.50116038e-01 4.51321043e-01 4.52527658e-01 + 4.53735885e-01 4.54945722e-01 4.56157169e-01 4.57370226e-01 4.58584894e-01 + 4.59801170e-01 4.61019056e-01 4.62238551e-01 4.63459655e-01 4.64682367e-01 + 4.65906688e-01 4.67132616e-01 4.68360152e-01 4.69589295e-01 4.70820046e-01 + 4.72052403e-01 4.73286367e-01 4.74521937e-01 4.75759113e-01 4.76997895e-01 + 4.78238283e-01 4.79480276e-01 4.80723873e-01 4.81969076e-01 4.83215882e-01 + 4.84464293e-01 4.85714308e-01 4.86965926e-01 4.88219148e-01 4.89473972e-01 + 4.90730400e-01 4.91988430e-01 4.93248062e-01 4.94509296e-01 4.95772131e-01 + 4.97036568e-01 4.98302606e-01 4.99570245e-01 5.00839485e-01 5.02110324e-01 + 5.03382764e-01 5.04656804e-01 5.05932442e-01 5.07209680e-01 5.08488517e-01 + 5.09768953e-01 5.11050986e-01 5.12334618e-01 5.13619847e-01 5.14906674e-01 + 5.16195098e-01 5.17485119e-01 5.18776737e-01 5.20069951e-01 5.21364761e-01 + 5.22661167e-01 5.23959168e-01 5.25258764e-01 5.26559955e-01 5.27862741e-01 + 5.29167122e-01 5.30473096e-01 5.31780664e-01 5.33089826e-01 5.34400580e-01 + 5.35712928e-01 5.37026868e-01 5.38342401e-01 5.39659526e-01 5.40978242e-01 + 5.42298550e-01 5.43620449e-01 5.44943939e-01 5.46269020e-01 5.47595691e-01 + 5.48923952e-01 5.50253802e-01 5.51585242e-01 5.52918272e-01 5.54252890e-01 + 5.55589096e-01 5.56926891e-01 5.58266274e-01 5.59607245e-01 5.60949803e-01 + 5.62293948e-01 5.63639680e-01 5.64986999e-01 5.66335903e-01 5.67686394e-01 + 5.69038470e-01 5.70392132e-01 5.71747378e-01 5.73104210e-01 5.74462626e-01 + 5.75822626e-01 5.77184210e-01 5.78547377e-01 5.79912128e-01 5.81278461e-01 + 5.82646378e-01 5.84015876e-01 5.85386957e-01 5.86759620e-01 5.88133864e-01 + 5.89509689e-01 5.90887095e-01 5.92266082e-01 5.93646649e-01 5.95028796e-01 + 5.96412522e-01 5.97797828e-01 5.99184713e-01 6.00573177e-01 6.01963219e-01 + 6.03354840e-01 6.04748038e-01 6.06142814e-01 6.07539167e-01 6.08937097e-01 + 6.10336603e-01 6.11737686e-01 6.13140346e-01 6.14544580e-01 6.15950391e-01 + 6.17357776e-01 6.18766736e-01 6.20177271e-01 6.21589379e-01 6.23003062e-01 + 6.24418319e-01 6.25835148e-01 6.27253551e-01 6.28673526e-01 6.30095073e-01 + 6.31518193e-01 6.32942884e-01 6.34369147e-01 6.35796981e-01 6.37226386e-01 + 6.38657361e-01 6.40089906e-01 6.41524022e-01 6.42959706e-01 6.44396960e-01 + 6.45835783e-01 6.47276175e-01 6.48718135e-01 6.50161663e-01 6.51606758e-01 + 6.53053421e-01 6.54501651e-01 6.55951448e-01 6.57402811e-01 6.58855740e-01 + 6.60310236e-01 6.61766296e-01 6.63223922e-01 6.64683112e-01 6.66143868e-01 + 6.67606187e-01 6.69070070e-01 6.70535517e-01 6.72002527e-01 6.73471100e-01 + 6.74941236e-01 6.76412934e-01 6.77886194e-01 6.79361015e-01 6.80837398e-01 + 1.19316516e-02 1.17837661e-02 1.16368916e-02 1.14910312e-02 1.13461881e-02 + 1.12023652e-02 1.10595657e-02 1.09177924e-02 1.07770486e-02 1.06373371e-02 + 1.04986608e-02 1.03610229e-02 1.02244262e-02 1.00888736e-02 9.95436796e-03 + 9.82091227e-03 9.68850936e-03 9.55716205e-03 9.42687318e-03 9.29764555e-03 + 9.16948195e-03 9.04238514e-03 8.91635788e-03 8.79140288e-03 8.66752287e-03 + 8.54472052e-03 8.42299850e-03 8.30235947e-03 8.18280604e-03 8.06434082e-03 + 7.94696640e-03 7.83068535e-03 7.71550020e-03 7.60141348e-03 7.48842769e-03 + 7.37654531e-03 7.26576880e-03 7.15610060e-03 7.04754311e-03 6.94009874e-03 + 6.83376985e-03 6.72855879e-03 6.62446789e-03 6.52149946e-03 6.41965576e-03 + 6.31893907e-03 6.21935162e-03 6.12089562e-03 6.02357326e-03 5.92738670e-03 + 5.83233810e-03 5.73842957e-03 5.64566320e-03 5.55404108e-03 5.46356524e-03 + 5.37423772e-03 5.28606051e-03 5.19903560e-03 5.11316493e-03 5.02845043e-03 + 4.94489402e-03 4.86249756e-03 4.78126291e-03 4.70119191e-03 4.62228636e-03 + 4.54454803e-03 4.46797870e-03 4.39258007e-03 4.31835387e-03 4.24530177e-03 + 4.17342543e-03 4.10272646e-03 4.03320649e-03 3.96486708e-03 3.89770979e-03 + 3.83173614e-03 3.76694764e-03 3.70334576e-03 3.64093194e-03 3.57970760e-03 + 3.51967415e-03 3.46083296e-03 3.40318535e-03 3.34673266e-03 3.29147617e-03 + 3.23741715e-03 3.18455682e-03 3.13289641e-03 3.08243708e-03 3.03318001e-03 + 2.98512631e-03 2.93827709e-03 2.89263342e-03 2.84819635e-03 2.80496690e-03 + 2.76294607e-03 2.72213481e-03 2.68253407e-03 2.64414475e-03 2.60696775e-03 + 2.57100391e-03 2.53625406e-03 2.50271900e-03 2.47039951e-03 2.43929633e-03 + 2.40941017e-03 2.38074173e-03 2.35329167e-03 2.32706061e-03 2.30204917e-03 + 2.27825792e-03 2.25568742e-03 2.23433817e-03 2.21421068e-03 2.19530540e-03 + 2.17762279e-03 2.16116324e-03 2.14592713e-03 2.13191482e-03 2.11912664e-03 + 2.10756286e-03 2.09722378e-03 2.08810961e-03 2.08022058e-03 2.07355687e-03 + 2.06811863e-03 2.06390598e-03 2.06091903e-03 2.05915784e-03 2.05862245e-03 + 2.05931288e-03 2.06122911e-03 2.06437109e-03 2.06873876e-03 2.07433201e-03 + 2.08115071e-03 2.08919471e-03 2.09846382e-03 2.10895782e-03 2.12067647e-03 + 2.13361950e-03 2.14778662e-03 2.16317748e-03 2.17979175e-03 2.19762903e-03 + 2.21668892e-03 2.23697097e-03 2.25847471e-03 2.28119965e-03 2.30514526e-03 + 2.33031099e-03 2.35669626e-03 2.38430046e-03 2.41312296e-03 2.44316308e-03 + 2.47442014e-03 2.50689342e-03 2.54058217e-03 2.57548561e-03 2.61160294e-03 + 2.64893333e-03 2.68747592e-03 2.72722982e-03 2.76819412e-03 2.81036787e-03 + 2.85375012e-03 2.89833986e-03 2.94413606e-03 2.99113769e-03 3.03934365e-03 + 3.08875285e-03 3.13936416e-03 3.19117640e-03 3.24418841e-03 3.29839896e-03 + 3.35380682e-03 3.41041071e-03 3.46820936e-03 3.52720143e-03 3.58738558e-03 + 3.64876043e-03 3.71132460e-03 3.77507665e-03 3.84001514e-03 3.90613858e-03 + 3.97344547e-03 4.04193428e-03 4.11160346e-03 4.18245143e-03 4.25447658e-03 + 4.32767727e-03 4.40205185e-03 4.47759865e-03 4.55431593e-03 4.63220199e-03 + 4.71125505e-03 4.79147333e-03 4.87285502e-03 4.95539830e-03 5.03910129e-03 + 5.12396213e-03 5.20997890e-03 5.29714966e-03 5.38547247e-03 5.47494535e-03 + 5.56556628e-03 5.65733324e-03 5.75024419e-03 5.84429703e-03 5.93948968e-03 + 6.03582001e-03 6.13328588e-03 6.23188511e-03 6.33161551e-03 6.43247487e-03 + 6.53446095e-03 6.63757148e-03 6.74180419e-03 6.84715676e-03 6.95362687e-03 + 7.06121216e-03 7.16991026e-03 7.27971878e-03 7.39063530e-03 7.50265737e-03 + 7.61578255e-03 7.73000833e-03 7.84533223e-03 7.96175172e-03 8.07926424e-03 + 8.19786724e-03 8.31755813e-03 8.43833428e-03 8.56019309e-03 8.68313189e-03 + 8.80714802e-03 8.93223879e-03 9.05840148e-03 9.18563337e-03 9.31393170e-03 + 9.44329371e-03 9.57371661e-03 9.70519759e-03 9.83773382e-03 9.97132246e-03 + 1.01059606e-02 1.02416455e-02 1.03783741e-02 1.05161435e-02 1.06549508e-02 + 1.07947931e-02 1.09356673e-02 1.10775705e-02 1.12204997e-02 1.13644517e-02 + 1.15094237e-02 1.16554125e-02 1.18024151e-02 1.19504282e-02 1.20994490e-02 + 1.22494741e-02 1.24005005e-02 1.25525250e-02 1.27055444e-02 1.28595555e-02 + 1.30145552e-02 1.31705401e-02 1.33275071e-02 1.34854528e-02 1.36443741e-02 + 1.38042677e-02 1.39651301e-02 1.41269582e-02 1.42897485e-02 1.44534978e-02 + 1.46182027e-02 1.47838598e-02 1.49504657e-02 1.51180170e-02 1.52865103e-02 + 1.54559422e-02 1.56263093e-02 1.57976080e-02 1.59698349e-02 1.61429866e-02 + 1.63170596e-02 1.64920502e-02 1.66679551e-02 1.68447707e-02 1.70224935e-02 + 1.72011198e-02 1.73806462e-02 1.75610691e-02 1.77423848e-02 1.79245899e-02 + 1.81076806e-02 1.82916533e-02 1.84765045e-02 1.86622305e-02 1.88488276e-02 + 1.90362922e-02 1.92246206e-02 1.94138091e-02 1.96038541e-02 1.97947518e-02 + 1.99864985e-02 2.01790905e-02 2.03725242e-02 2.05667957e-02 2.07619013e-02 + 2.09578372e-02 2.11545998e-02 2.13521852e-02 2.15505896e-02 2.17498093e-02 + 2.19498405e-02 2.21506794e-02 2.23523222e-02 2.25547650e-02 2.27580040e-02 + 2.29620355e-02 2.31668555e-02 2.33724603e-02 2.35788460e-02 2.37860087e-02 + 2.39939446e-02 2.42026499e-02 2.44121205e-02 2.46223528e-02 2.48333427e-02 + 2.50450864e-02 2.52575801e-02 2.54708198e-02 2.56848016e-02 2.58995216e-02 + 2.61149759e-02 2.63311606e-02 2.65480717e-02 2.67657054e-02 2.69840578e-02 + 2.72031248e-02 2.74229026e-02 2.76433871e-02 2.78645746e-02 2.80864610e-02 + 2.83090425e-02 2.85323149e-02 2.87562745e-02 2.89809172e-02 2.92062390e-02 + 2.94322361e-02 2.96589045e-02 2.98862402e-02 3.01142392e-02 3.03428976e-02 + 3.05722114e-02 3.08021766e-02 3.10327893e-02 3.12640455e-02 3.14959413e-02 + 3.17284726e-02 3.19616355e-02 3.21954260e-02 3.24298402e-02 3.26648740e-02 + 3.29005236e-02 3.31367848e-02 3.33736539e-02 3.36111267e-02 3.38491993e-02 + 3.40878677e-02 3.43271281e-02 3.45669763e-02 3.48074084e-02 3.50484206e-02 + 3.52900087e-02 3.55321689e-02 3.57748971e-02 3.60181895e-02 3.62620420e-02 + 3.65064508e-02 3.67514117e-02 3.69969210e-02 3.72429746e-02 3.74895686e-02 + 3.77366991e-02 3.79843621e-02 3.82325537e-02 3.84812698e-02 3.87305067e-02 + 3.89802604e-02 3.92305269e-02 3.94813024e-02 3.97325829e-02 3.99843644e-02 + 4.02366431e-02 4.04894151e-02 4.07426765e-02 4.09964234e-02 4.12506518e-02 + 4.15053579e-02 4.17605378e-02 4.20161876e-02 4.22723034e-02 4.25288815e-02 + 4.27859178e-02 4.30434086e-02 4.33013499e-02 4.35597380e-02 4.38185689e-02 + 4.40778389e-02 4.43375441e-02 4.45976807e-02 4.48582449e-02 4.51192328e-02 + 4.53806406e-02 4.56424645e-02 4.59047007e-02 4.61673455e-02 4.64303950e-02 + 4.66938455e-02 4.69576932e-02 4.72219342e-02 4.74865650e-02 4.77515816e-02 + 4.80169804e-02 4.82827576e-02 4.85489095e-02 4.88154324e-02 4.90823225e-02 + 4.93495761e-02 4.96171896e-02 4.98851592e-02 5.01534812e-02 5.04221520e-02 + 5.06911679e-02 5.09605252e-02 5.12302202e-02 5.15002494e-02 5.17706091e-02 + 5.20412956e-02 5.23123054e-02 5.25836347e-02 5.28552801e-02 5.31272378e-02 + 5.33995044e-02 5.36720762e-02 5.39449496e-02 5.42181211e-02 5.44915872e-02 + 5.47653442e-02 5.50393887e-02 5.53137171e-02 5.55883259e-02 5.58632116e-02 + 5.61383707e-02 5.64137997e-02 5.66894951e-02 5.69654535e-02 5.72416713e-02 + 5.75181451e-02 5.77948716e-02 5.80718471e-02 5.83490684e-02 5.86265320e-02 + 5.89042345e-02 5.91821725e-02 5.94603427e-02 5.97387415e-02 6.00173658e-02 + 6.02962120e-02 6.05752770e-02 6.08545573e-02 6.11340496e-02 6.14137506e-02 + 6.16936570e-02 6.19737655e-02 6.22540729e-02 6.25345758e-02 6.28152709e-02 + 6.30961552e-02 6.33772252e-02 6.36584778e-02 6.39399097e-02 6.42215178e-02 + 6.45032988e-02 6.47852496e-02 6.50673669e-02 6.53496477e-02 6.56320887e-02 + 6.59146868e-02 6.61974389e-02 6.64803419e-02 6.67633926e-02 6.70465880e-02 + 6.73299249e-02 6.76134004e-02 6.78970112e-02 6.81807545e-02 6.84646270e-02 + 6.87486259e-02 6.90327480e-02 6.93169904e-02 6.96013501e-02 6.98858240e-02 + 7.01704093e-02 7.04551029e-02 7.07399019e-02 7.10248033e-02 7.13098043e-02 + 7.15949019e-02 7.18800932e-02 7.21653753e-02 7.24507453e-02 7.27362004e-02 + 7.30217377e-02 7.33073544e-02 7.35930475e-02 7.38788144e-02 7.41646521e-02 + 7.44505580e-02 7.47365291e-02 7.50225627e-02 7.53086561e-02 7.55948066e-02 + 7.58810112e-02 7.61672674e-02 7.64535724e-02 7.67399235e-02 7.70263181e-02 + 7.73127534e-02 7.75992267e-02 7.78857354e-02 7.81722770e-02 7.84588486e-02 + 7.87454477e-02 7.90320718e-02 7.93187181e-02 7.96053841e-02 7.98920673e-02 + 8.01787651e-02 8.04654749e-02 8.07521941e-02 8.10389204e-02 8.13256510e-02 + 8.16123836e-02 8.18991157e-02 8.21858447e-02 8.24725683e-02 8.27592839e-02 + 8.30459891e-02 8.33326815e-02 8.36193586e-02 8.39060181e-02 8.41926576e-02 + 8.44792746e-02 8.47658669e-02 8.50524319e-02 8.53389675e-02 8.56254713e-02 + 8.59119408e-02 8.61983740e-02 8.64847683e-02 8.67711216e-02 8.70574315e-02 + 8.73436959e-02 8.76299124e-02 8.79160788e-02 8.82021929e-02 8.84882524e-02 + 8.87742552e-02 8.90601991e-02 8.93460819e-02 8.96319014e-02 8.99176554e-02 + 9.02033419e-02 9.04889586e-02 9.07745035e-02 9.10599745e-02 9.13453694e-02 + 9.16306861e-02 9.19159227e-02 9.22010770e-02 9.24861469e-02 9.27711305e-02 + 9.30560257e-02 9.33408305e-02 9.36255428e-02 9.39101607e-02 9.41946823e-02 + 9.44791055e-02 9.47634283e-02 9.50476489e-02 9.53317653e-02 9.56157755e-02 + 9.58996777e-02 9.61834699e-02 9.64671503e-02 9.67507170e-02 9.70341681e-02 + 9.73175018e-02 9.76007161e-02 9.78838094e-02 9.81667797e-02 9.84496252e-02 + 9.87323442e-02 9.90149348e-02 9.92973954e-02 9.95797240e-02 9.98619190e-02 + 1.00143979e-01 1.00425901e-01 1.00707685e-01 1.00989328e-01 1.01270829e-01 + 1.01552185e-01 1.01833397e-01 1.02114461e-01 1.02395376e-01 1.02676140e-01 + 1.02956752e-01 1.03237211e-01 1.03517513e-01 1.03797659e-01 1.04077646e-01 + 1.04357473e-01 1.04637138e-01 1.04916640e-01 1.05195977e-01 1.05475147e-01 + 1.05754150e-01 1.06032982e-01 1.06311644e-01 1.06590134e-01 1.06868449e-01 + 1.07146589e-01 1.07424552e-01 1.07702336e-01 1.07979941e-01 1.08257365e-01 + 1.08534605e-01 1.08811662e-01 1.09088533e-01 1.09365218e-01 1.09641714e-01 + 1.09918020e-01 1.10194135e-01 1.10470058e-01 1.10745788e-01 1.11021322e-01 + 1.11296660e-01 1.11571800e-01 1.11846741e-01 1.12121482e-01 1.12396021e-01 + 1.12670358e-01 1.12944490e-01 1.13218418e-01 1.13492138e-01 1.13765651e-01 + 1.14038955e-01 1.14312048e-01 1.14584930e-01 1.14857599e-01 1.15130055e-01 + 1.15402295e-01 1.15674319e-01 1.15946126e-01 1.16217714e-01 1.16489083e-01 + 1.16760231e-01 1.17031157e-01 1.17301860e-01 1.17572339e-01 1.17842593e-01 + 1.18112620e-01 1.18382420e-01 1.18651992e-01 1.18921334e-01 1.19190445e-01 + 1.19459326e-01 1.19727973e-01 1.19996387e-01 1.20264566e-01 1.20532510e-01 + 1.20800216e-01 1.21067686e-01 1.21334917e-01 1.21601908e-01 1.21868658e-01 + 1.22135167e-01 1.22401434e-01 1.22667458e-01 1.22933237e-01 1.23198771e-01 + 1.23464058e-01 1.23729099e-01 1.23993892e-01 1.24258436e-01 1.24522731e-01 + 1.24786775e-01 1.25050567e-01 1.25314108e-01 1.25577395e-01 1.25840428e-01 + 1.26103207e-01 1.26365730e-01 1.26627997e-01 1.26890006e-01 1.27151758e-01 + 1.27413251e-01 1.27674484e-01 1.27935457e-01 1.28196169e-01 1.28456619e-01 + 1.28716807e-01 1.28976731e-01 1.29236391e-01 1.29495787e-01 1.29754917e-01 + 1.30013780e-01 1.30272377e-01 1.30530707e-01 1.30788768e-01 1.31046560e-01 + 1.31304083e-01 1.31561335e-01 1.31818316e-01 1.32075026e-01 1.32331463e-01 + 1.32587628e-01 1.32843519e-01 1.33099136e-01 1.33354479e-01 1.33609546e-01 + 1.33864337e-01 1.34118851e-01 1.34373088e-01 1.34627048e-01 1.34880730e-01 + 1.35134132e-01 1.35387255e-01 1.35640099e-01 1.35892661e-01 1.36144943e-01 + 1.36396943e-01 1.36648661e-01 1.36900097e-01 1.37151249e-01 1.37402118e-01 + 1.37652702e-01 1.37903003e-01 1.38153017e-01 1.38402747e-01 1.38652190e-01 + 1.38901347e-01 1.39150217e-01 1.39398799e-01 1.39647094e-01 1.39895100e-01 + 1.40142817e-01 1.40390246e-01 1.40637384e-01 1.40884233e-01 1.41130791e-01 + 1.41377059e-01 1.41623035e-01 1.41868719e-01 1.42114112e-01 1.42359212e-01 + 1.42604020e-01 1.42848534e-01 1.43092755e-01 1.43336681e-01 1.43580314e-01 + 1.43823652e-01 1.44066695e-01 1.44309444e-01 1.44551896e-01 1.44794053e-01 + 1.45035913e-01 1.45277477e-01 1.45518744e-01 1.45759714e-01 1.46000386e-01 + 1.46240761e-01 1.46480838e-01 1.46720616e-01 1.46960096e-01 1.47199277e-01 + 1.47438159e-01 1.47676742e-01 1.47915025e-01 1.48153009e-01 1.48390692e-01 + 1.48628075e-01 1.48865157e-01 1.49101939e-01 1.49338419e-01 1.49574598e-01 + 1.49810476e-01 1.50046052e-01 1.50281327e-01 1.50516299e-01 1.50750969e-01 + 1.50985337e-01 1.51219402e-01 1.51453164e-01 1.51686623e-01 1.51919779e-01 + 1.52152632e-01 1.52385181e-01 1.52617427e-01 1.52849368e-01 1.53081006e-01 + 1.53312340e-01 1.53543370e-01 1.53774095e-01 1.54004516e-01 1.54234632e-01 + 1.54464444e-01 1.54693950e-01 1.54923152e-01 1.55152049e-01 1.55380640e-01 + 1.55608926e-01 1.55836907e-01 1.56064583e-01 1.56291953e-01 1.56519017e-01 + 1.56745775e-01 1.56972228e-01 1.57198375e-01 1.57424216e-01 1.57649751e-01 + 1.57874980e-01 1.58099903e-01 1.58324520e-01 1.58548831e-01 1.58772835e-01 + 1.58996533e-01 1.59219925e-01 1.59443010e-01 1.59665790e-01 1.59888262e-01 + 1.60110429e-01 1.60332289e-01 1.60553842e-01 1.60775089e-01 1.60996030e-01 + 1.61216664e-01 1.61436992e-01 1.61657013e-01 1.61876728e-01 1.62096136e-01 + 1.62315238e-01 1.62534034e-01 1.62752523e-01 1.62970706e-01 1.63188582e-01 + 1.63406152e-01 1.63623416e-01 1.63840374e-01 1.64057026e-01 1.64273371e-01 + 1.64489411e-01 1.64705144e-01 1.64920571e-01 1.65135693e-01 1.65350508e-01 + 1.65565018e-01 1.65779222e-01 1.65993121e-01 1.66206714e-01 1.66420001e-01 + 1.66632983e-01 1.66845660e-01 1.67058031e-01 1.67270097e-01 1.67481858e-01 + 1.67693314e-01 1.67904465e-01 1.68115312e-01 1.68325854e-01 1.68536091e-01 + 1.68746023e-01 1.68955652e-01 1.69164976e-01 1.69373996e-01 1.69582712e-01 + 1.69791124e-01 1.69999232e-01 1.70207037e-01 1.70414538e-01 1.70621735e-01 + 1.70828630e-01 1.71035221e-01 1.71241510e-01 1.71447495e-01 1.71653178e-01 + 1.71858558e-01 1.72063636e-01 1.72268412e-01 1.72472886e-01 1.72677057e-01 + 1.72880927e-01 1.73084495e-01 1.73287762e-01 1.73490728e-01 1.73693392e-01 + 1.73895756e-01 1.74097819e-01 1.74299581e-01 1.74501043e-01 1.74702204e-01 + 1.74903066e-01 1.75103627e-01 1.75303889e-01 1.75503852e-01 1.75703515e-01 + 1.75902879e-01 1.76101944e-01 1.76300710e-01 1.76499178e-01 1.76697348e-01 + 1.76895219e-01 1.77092792e-01 1.77290068e-01 1.77487046e-01 1.77683727e-01 + 1.77880111e-01 1.78076198e-01 1.78271989e-01 1.78467483e-01 1.78662680e-01 + 1.78857582e-01 1.79052188e-01 1.79246498e-01 1.79440514e-01 1.79634234e-01 + 1.79827659e-01 1.80020789e-01 1.80213625e-01 1.80406167e-01 1.80598415e-01 + 1.80790370e-01 1.80982031e-01 1.81173398e-01 1.81364473e-01 1.81555255e-01 + 1.81745745e-01 1.81935942e-01 1.82125848e-01 1.82315462e-01 1.82504784e-01 + 1.82693815e-01 1.82882555e-01 1.83071004e-01 1.83259163e-01 1.83447032e-01 + 1.83634611e-01 1.83821900e-01 1.84008900e-01 1.84195611e-01 1.84382033e-01 + 1.84568166e-01 1.84754012e-01 1.84939569e-01 1.85124838e-01 1.85309820e-01 + 1.85494514e-01 1.85678922e-01 1.85863043e-01 1.86046878e-01 1.86230426e-01 + 1.86413689e-01 1.86596666e-01 1.86779358e-01 1.86961765e-01 1.87143887e-01 + 1.87325725e-01 1.87507279e-01 1.87688549e-01 1.87869536e-01 1.88050239e-01 + 1.88230659e-01 1.88410797e-01 1.88590653e-01 1.88770226e-01 1.88949518e-01 + 1.89128528e-01 1.89307257e-01 1.89485705e-01 1.89663873e-01 1.89841761e-01 + 1.90019368e-01 1.90196696e-01 1.90373745e-01 1.90550515e-01 1.90727005e-01 + 1.90903218e-01 1.91079153e-01 1.91254809e-01 1.91430189e-01 1.91605291e-01 + 1.91780116e-01 1.91954665e-01 1.92128937e-01 1.92302934e-01 1.92476655e-01 + 1.92650101e-01 1.92823272e-01 1.92996169e-01 1.93168791e-01 1.93341139e-01 + 1.93513213e-01 1.93685014e-01 1.93856543e-01 1.94027798e-01 1.94198781e-01 + 1.94369492e-01 1.94539932e-01 1.94710100e-01 1.94879997e-01 1.95049623e-01 + 1.95218979e-01 1.95388065e-01 1.95556881e-01 1.95725428e-01 1.95893706e-01 + 1.96061715e-01 1.96229455e-01 1.96396928e-01 1.96564133e-01 1.96731070e-01 + 1.96897741e-01 1.97064144e-01 1.97230282e-01 1.97396153e-01 1.97561758e-01 + 1.97727099e-01 1.97892174e-01 1.98056984e-01 1.98221530e-01 1.98385813e-01 + 1.98549831e-01 1.98713586e-01 1.98877078e-01 1.99040308e-01 1.99203275e-01 + 1.99365980e-01 1.99528424e-01 1.99690606e-01 1.99852528e-01 2.00014188e-01 + 2.00175589e-01 2.00336730e-01 2.00497611e-01 2.00658233e-01 2.00818596e-01 + 2.00978701e-01 2.01138547e-01 2.01298136e-01 2.01457467e-01 2.01616542e-01 + 2.01775359e-01 2.01933920e-01 2.02092225e-01 2.02250274e-01 2.02408068e-01 + 2.02565607e-01 2.02722891e-01 2.02879921e-01 2.03036697e-01 2.03193220e-01 + 2.03349489e-01 2.03505505e-01 2.03661269e-01 2.03816780e-01 2.03972040e-01 + 2.04127048e-01 2.04281805e-01 2.04436312e-01 2.04590568e-01 2.04744573e-01 + 2.04898329e-01 2.05051836e-01 2.05205094e-01 2.05358103e-01 2.05510864e-01 + 2.05663377e-01 2.05815642e-01 2.05967660e-01 2.06119432e-01 2.06270956e-01 + 2.06422235e-01 2.06573268e-01 2.06724055e-01 2.06874598e-01 2.07024895e-01 + 2.07174948e-01 2.07324757e-01 2.07474323e-01 2.07623645e-01 2.07772725e-01 + 2.07921561e-01 2.08070156e-01 2.08218508e-01 2.08366619e-01 2.08514489e-01 + 2.08662119e-01 2.08809507e-01 2.08956656e-01 2.09103565e-01 2.09250235e-01 + 2.09396665e-01 2.09542857e-01 2.09688811e-01 2.09834526e-01 2.09980005e-01 + 2.10125246e-01 2.10270250e-01 2.10415017e-01 2.10559549e-01 2.10703844e-01 + 2.10847905e-01 2.10991730e-01 2.11135320e-01 2.11278676e-01 2.11421799e-01 + 2.11564687e-01 2.11707342e-01 2.11849765e-01 2.11991955e-01 2.12133912e-01 + 2.12275638e-01 2.12417132e-01 2.12558395e-01 2.12699428e-01 2.12840230e-01 + 2.12980802e-01 2.13121144e-01 2.13261257e-01 2.13401141e-01 2.13540796e-01 + 2.13680223e-01 2.13819422e-01 2.13958394e-01 2.14097138e-01 2.14235656e-01 + 2.14373947e-01 2.14512011e-01 2.14649851e-01 2.14787464e-01 2.14924853e-01 + 2.15062017e-01 2.15198957e-01 2.15335672e-01 2.15472164e-01 2.15608433e-01 + 2.15744479e-01 2.15880302e-01 2.16015903e-01 2.16151282e-01 2.16286440e-01 + 2.16421376e-01 2.16556092e-01 2.16690587e-01 2.16824862e-01 2.16958918e-01 + 2.17092754e-01 2.17226371e-01 2.17359769e-01 2.17492949e-01 2.17625911e-01 + 2.17758656e-01 2.17891183e-01 2.18023493e-01 2.18155587e-01 2.18287464e-01 + 2.18419126e-01 2.18550572e-01 2.18681803e-01 2.18812819e-01 2.18943621e-01 + 2.19074208e-01 2.19204582e-01 2.19334742e-01 2.19464690e-01 2.19594424e-01 + 2.19723946e-01 2.19853257e-01 2.19982355e-01 2.20111242e-01 2.20239919e-01 + 2.20368384e-01 2.20496640e-01 2.20624685e-01 2.20752521e-01 2.20880148e-01 + 2.21007566e-01 2.21134775e-01 2.21261776e-01 2.21388569e-01 2.21515155e-01 + 2.21641533e-01 2.21767705e-01 2.21893670e-01 2.22019429e-01 2.22144983e-01 + 2.22270331e-01 2.22395473e-01 2.22520411e-01 2.22645145e-01 2.22769675e-01 + 2.22894000e-01 2.23018123e-01 2.23142042e-01 2.23265759e-01 2.23389273e-01 + 2.23512586e-01 2.23635696e-01 2.23758606e-01 2.23881314e-01 2.24003822e-01 + 2.24126129e-01 2.24248236e-01 2.24370144e-01 2.24491852e-01 2.24613362e-01 + 2.24734673e-01 2.24855785e-01 2.24976700e-01 2.25097417e-01 2.25217936e-01 + 2.25338259e-01 2.25458385e-01 2.25578315e-01 2.25698048e-01 2.25817587e-01 + 2.25936930e-01 2.26056078e-01 2.26175031e-01 2.26293790e-01 2.26412355e-01 + 2.26530727e-01 2.26648905e-01 2.26766890e-01 2.26884683e-01 2.27002283e-01 + 2.27119691e-01 2.27236908e-01 2.27353934e-01 2.27470768e-01 2.27587412e-01 + 2.27703865e-01 2.27820129e-01 2.27936203e-01 2.28052087e-01 2.28167783e-01 + 2.28283290e-01 2.28398608e-01 2.28513738e-01 2.28628681e-01 2.28743437e-01 + 2.28858005e-01 2.28972386e-01 2.29086581e-01 2.29200591e-01 2.29314414e-01 + 2.29428052e-01 2.29541504e-01 2.29654772e-01 2.29767856e-01 2.29880755e-01 + 2.29993470e-01 2.30106002e-01 2.30218351e-01 2.30330517e-01 2.30442500e-01 + 2.30554301e-01 2.30665921e-01 2.30777358e-01 2.30888614e-01 2.30999690e-01 + 2.31110584e-01 2.31221299e-01 2.31331833e-01 2.31442188e-01 2.31552363e-01 + 2.31662359e-01 2.31772176e-01 2.31881815e-01 2.31991276e-01 2.32100559e-01 + 2.32209665e-01 2.32318593e-01 2.32427344e-01 2.32535919e-01 2.32644318e-01 + 2.32752540e-01 2.32860587e-01 2.32968459e-01 2.33076155e-01 2.33183677e-01 + 2.33291025e-01 2.33398198e-01 2.33505198e-01 2.33612024e-01 2.33718676e-01 + 2.33825157e-01 2.33931464e-01 2.34037599e-01 2.34143562e-01 2.34249354e-01 + 2.34354974e-01 2.34460423e-01 2.34565702e-01 2.34670810e-01 2.34775748e-01 + 2.34880516e-01 2.34985114e-01 2.35089544e-01 2.35193804e-01 2.35297896e-01 + 2.35401819e-01 2.35505574e-01 2.35609162e-01 2.35712582e-01 2.35815835e-01 + 2.35918921e-01 2.36021841e-01 2.36124594e-01 2.36227182e-01 2.36329603e-01 + 2.36431860e-01 2.36533951e-01 2.36635878e-01 2.36737640e-01 2.36839238e-01 + 2.36940672e-01 2.37041942e-01 2.37143049e-01 2.37243994e-01 2.37344775e-01 + 2.37445394e-01 2.37545851e-01 2.37646146e-01 2.37746279e-01 2.37846251e-01 + 2.37946062e-01 2.38045713e-01 2.38145203e-01 2.38244533e-01 2.38343703e-01 + 2.38442713e-01 2.38541565e-01 2.38640257e-01 2.38738790e-01 2.38837166e-01 + 2.38935383e-01 2.39033442e-01 2.39131344e-01 2.39229088e-01 2.39326676e-01 + 2.39424106e-01 2.39521381e-01 2.39618499e-01 2.39715461e-01 2.39812268e-01 + 2.39908919e-01 2.40005416e-01 2.40101757e-01 2.40197944e-01 2.40293977e-01 + 2.40389856e-01 2.40485582e-01 2.40581154e-01 2.40676573e-01 2.40771839e-01 + 2.40866953e-01 2.40961914e-01 2.41056724e-01 2.41151382e-01 2.41245888e-01 + 2.41340243e-01 2.41434447e-01 2.41528501e-01 2.41622404e-01 2.41716158e-01 + 2.41809761e-01 2.41903215e-01 2.41996520e-01 2.42089675e-01 2.42182682e-01 + 2.42275541e-01 2.42368251e-01 2.42460813e-01 2.42553228e-01 2.42645496e-01 + 2.42737616e-01 2.42829589e-01 2.42921416e-01 2.43013097e-01 2.43104631e-01 + 2.43196020e-01 2.43287263e-01 2.43378361e-01 2.43469314e-01 2.43560122e-01 + 2.43650786e-01 2.43741306e-01 2.43831681e-01 2.43921913e-01 2.44012001e-01 + 2.44101947e-01 2.44191749e-01 2.44281409e-01 2.44370926e-01 2.44460302e-01 + 2.44549535e-01 2.44638627e-01 2.44727577e-01 2.44816386e-01 2.44905055e-01 + 2.44993583e-01 2.45081970e-01 2.45170218e-01 2.45258325e-01 2.45346293e-01 + 2.45434122e-01 2.45521812e-01 2.45609362e-01 2.45696775e-01 2.45784049e-01 + 2.45871185e-01 2.45958183e-01 2.46045043e-01 2.46131766e-01 2.46218353e-01 + 2.46304802e-01 2.46391115e-01 2.46477291e-01 2.46563332e-01 2.46649236e-01 + 2.46735006e-01 2.46820639e-01 2.46906138e-01 2.46991502e-01 2.47076731e-01 + 2.47161826e-01 2.47246787e-01 2.47331614e-01 2.47416307e-01 2.47500867e-01 + 2.47585294e-01 2.47669588e-01 2.47753749e-01 2.47837778e-01 2.47921675e-01 + 2.48005440e-01 2.48089073e-01 2.48172575e-01 2.48255945e-01 2.48339185e-01 + 2.48422294e-01 2.48505272e-01 2.48588120e-01 2.48670839e-01 2.48753427e-01 + 2.48835886e-01 2.48918215e-01 2.49000416e-01 2.49082487e-01 2.49164431e-01 + 2.49246245e-01 2.49327932e-01 2.49409490e-01 2.49490922e-01 2.49572225e-01 + 2.49653402e-01 2.49734451e-01 2.49815374e-01 2.49896170e-01 2.49976840e-01 + 2.50057384e-01 2.50137802e-01 2.50218094e-01 2.50298261e-01 2.50378303e-01 + 2.50458221e-01 2.50538013e-01 2.50617681e-01 2.50697225e-01 2.50776645e-01 + 2.50855941e-01 2.50935113e-01 2.51014162e-01 2.51093088e-01 2.51171892e-01 + 2.51250572e-01 2.51329130e-01 2.51407566e-01 2.51485880e-01 2.51564073e-01 + 2.51642143e-01 2.51720093e-01 2.51797921e-01 2.51875629e-01 2.51953216e-01 + 2.52030682e-01 2.52108028e-01 2.52185254e-01 2.52262361e-01 2.52339348e-01 + 2.52416215e-01 2.52492964e-01 2.52569593e-01 2.52646104e-01 2.52722497e-01 + 2.52798771e-01 2.52874927e-01 2.52950965e-01 2.53026886e-01 2.53102689e-01 + 2.53178375e-01 2.53253944e-01 2.53329397e-01 2.53404733e-01 2.53479952e-01 + 2.53555056e-01 2.53630043e-01 2.53704915e-01 2.53779671e-01 2.53854312e-01 + 2.53928839e-01 2.54003250e-01 2.54077546e-01 2.54151728e-01 2.54225796e-01 + 2.54299750e-01 2.54373590e-01 2.54447316e-01 2.54520930e-01 2.54594429e-01 + 2.54667816e-01 2.54741090e-01 2.54814252e-01 2.54887301e-01 2.54960238e-01 + 2.55033063e-01 2.55105776e-01 2.55178378e-01 2.55250868e-01 2.55323247e-01 + 2.55395516e-01 2.55467673e-01 2.55539720e-01 2.55611657e-01 2.55683483e-01 + 2.55755200e-01 2.55826806e-01 2.55898304e-01 2.55969692e-01 2.56040970e-01 + 2.56112140e-01 2.56183201e-01 2.56254154e-01 2.56324998e-01 2.56395734e-01 + 2.56466362e-01 2.56536882e-01 2.56607295e-01 2.56677600e-01 2.56747798e-01 + 2.56817889e-01 2.56887874e-01 2.56957752e-01 2.57027523e-01 2.57097188e-01 + 2.57166747e-01 2.57236200e-01 2.57305548e-01 2.57374790e-01 2.57443927e-01 + 2.57512959e-01 2.57581886e-01 2.57650709e-01 2.57719427e-01 2.57788040e-01 + 2.57856550e-01 2.57924955e-01 2.57993257e-01 2.58061455e-01 2.58129550e-01 + 2.58197542e-01 2.58265431e-01 2.58333217e-01 2.58400900e-01 2.58468481e-01 + 2.58535960e-01 2.58603336e-01 2.58670611e-01 2.58737784e-01 2.58804856e-01 + 2.58871826e-01 2.58938695e-01 2.59005463e-01 2.59072131e-01 2.59138697e-01 + 2.59205164e-01 2.59271530e-01 2.59337796e-01 2.59403962e-01 2.59470029e-01 + 2.59535996e-01 2.59601864e-01 2.59667633e-01 2.59733302e-01 2.59798873e-01 + 2.59864345e-01 2.59929719e-01 2.59994995e-01 2.60060172e-01 2.60125252e-01 + 2.60190234e-01 2.60255118e-01 2.60319905e-01 2.60384595e-01 2.60449188e-01 + 2.60513684e-01 2.60578083e-01 2.60642386e-01 2.60706593e-01 2.60770703e-01 + 2.60834718e-01 2.60898636e-01 2.60962459e-01 2.61026187e-01 2.61089819e-01 + 2.61153356e-01 2.61216799e-01 2.61280146e-01 2.61343399e-01 2.61406557e-01 + 2.61469622e-01 2.61532592e-01 2.61595468e-01 2.61658250e-01 2.61720939e-01 + 2.61783535e-01 2.61846037e-01 2.61908446e-01 2.61970763e-01 2.62032986e-01 + 2.62095117e-01 2.62157156e-01 2.62219102e-01 2.62280956e-01 2.62342719e-01 + 2.62404389e-01 2.62465968e-01 2.62527456e-01 2.62588852e-01 2.62650158e-01 + 2.62711372e-01 2.62772496e-01 2.62833529e-01 2.62894471e-01 2.62955324e-01 + 2.63016086e-01 2.63076758e-01 2.63137341e-01 2.63197833e-01 2.63258237e-01 + 2.63318551e-01 2.63378776e-01 2.63438912e-01 2.63498959e-01 2.63558918e-01 + 2.63618788e-01 2.63678569e-01 2.63738263e-01 2.63797868e-01 2.63857386e-01 + 2.63916816e-01 2.63976158e-01 2.64035413e-01 2.64094581e-01 2.64153661e-01 + 2.64212655e-01 2.64271562e-01 2.64330382e-01 2.64389116e-01 2.64447763e-01 + 2.64506324e-01 2.64564800e-01 2.64623189e-01 2.64681493e-01 2.64739711e-01 + 2.64797844e-01 2.64855892e-01 2.64913854e-01 2.64971732e-01 2.65029524e-01 + 2.65087233e-01 2.65144856e-01 2.65202396e-01 2.65259851e-01 2.65317222e-01 + 2.65374509e-01 2.65431713e-01 2.65488833e-01 2.65545869e-01 2.65602822e-01 + 2.65659692e-01 2.65716480e-01 2.65773184e-01 2.65829805e-01 2.65886344e-01 + 2.65942801e-01 2.65999175e-01 2.66055468e-01 2.66111678e-01 2.66167806e-01 + 2.66223853e-01 2.66279819e-01 2.66335703e-01 2.66391505e-01 2.66447227e-01 + 2.66502868e-01 2.66558427e-01 2.66613907e-01 2.66669305e-01 2.66724624e-01 + 2.66779862e-01 2.66835020e-01 2.66890098e-01 2.66945096e-01 2.67000015e-01 + 2.67054854e-01 2.67109613e-01 2.67164294e-01 2.67218895e-01 2.67273418e-01 + 2.67327861e-01 2.67382226e-01 2.67436512e-01 2.67490720e-01 2.67544850e-01 + 2.67598902e-01 2.67652875e-01 2.67706771e-01 2.67760589e-01 2.67814330e-01 + 2.67867993e-01 2.67921578e-01 2.67975087e-01 2.68028519e-01 2.68081873e-01 + 2.68135151e-01 2.68188352e-01 2.68241477e-01 2.68294526e-01 2.68347498e-01 + 2.68400394e-01 2.68453214e-01 2.68505959e-01 2.68558628e-01 2.68611221e-01 + 2.68663738e-01 2.68716181e-01 2.68768548e-01 2.68820841e-01 2.68873058e-01 + 2.68925201e-01 2.68977269e-01 2.69029263e-01 2.69081182e-01 2.69133027e-01 + 2.69184798e-01 2.69236495e-01 2.69288118e-01 2.69339668e-01 2.69391143e-01 + 2.69442546e-01 2.69493875e-01 2.69545131e-01 2.69596314e-01 2.69647424e-01 + 2.69698461e-01 2.69749425e-01 2.69800317e-01 2.69851137e-01 2.69901884e-01 + 2.69952559e-01 2.70003162e-01 2.70053693e-01 2.70104153e-01 2.70154540e-01 + 2.70204856e-01 2.70255101e-01 2.70305274e-01 2.70355377e-01 2.70405408e-01 + 2.70455368e-01 2.70505258e-01 2.70555077e-01 2.70604825e-01 2.70654503e-01 + 2.70704110e-01 2.70753648e-01 2.70803115e-01 2.70852513e-01 2.70901840e-01 + 2.70951098e-01 2.71000287e-01 2.71049406e-01 2.71098455e-01 2.71147436e-01 + 2.71196347e-01 2.71245190e-01 2.71293963e-01 2.71342668e-01 2.71391304e-01 + 2.71439872e-01 2.71488372e-01 2.71536803e-01 2.71585166e-01 2.71633461e-01 + 2.71681688e-01 2.71729848e-01 2.71777939e-01 2.71825964e-01 2.71873921e-01 + 2.71921810e-01 2.71969632e-01 2.72017388e-01 2.72065076e-01 2.72112698e-01 + 2.72160252e-01 2.72207741e-01 2.72255162e-01 2.72302518e-01 2.72349807e-01 + 2.72397030e-01 2.72444187e-01 2.72491278e-01 2.72538303e-01 2.72585263e-01 + 2.72632157e-01 2.72678985e-01 2.72725748e-01 2.72772446e-01 2.72819079e-01 + 2.72865647e-01 2.72912150e-01 2.72958588e-01 2.73004962e-01 2.73051271e-01 + 2.73097516e-01 2.73143696e-01 2.73189812e-01 2.73235864e-01 2.73281852e-01 + 2.73327776e-01 2.73373636e-01 2.73419432e-01 2.73465166e-01 2.73510835e-01 + 2.73556441e-01 2.73601984e-01 2.73647464e-01 2.73692881e-01 2.73738235e-01 + 2.73783526e-01 2.73828755e-01 2.73873921e-01 2.73919024e-01 2.73964065e-01 + 2.74009044e-01 2.74053961e-01 2.74098815e-01 2.74143608e-01 2.74188339e-01 + 2.74233008e-01 2.74277616e-01 2.74322162e-01 2.74366646e-01 2.74411070e-01 + 2.74455432e-01 2.74499733e-01 2.74543973e-01 2.74588152e-01 2.74632270e-01 + 2.74676328e-01 2.74720325e-01 2.74764262e-01 2.74808138e-01 2.74851954e-01 + 2.74895710e-01 2.74939406e-01 2.74983042e-01 2.75026618e-01 2.75070135e-01 + 2.75113591e-01 2.75156988e-01 2.75200326e-01 2.75243604e-01 2.75286824e-01 + 2.75329984e-01 2.75373085e-01 2.75416127e-01 2.75459110e-01 2.75502034e-01 + 2.75544900e-01 2.75587707e-01 2.75630456e-01 2.75673147e-01 2.75715779e-01 + 2.75758353e-01 2.75800869e-01 2.75843328e-01 2.75885728e-01 2.75928070e-01 + 2.75970355e-01 2.76012583e-01 2.76054753e-01 2.76096866e-01 2.76138921e-01 + 2.76180919e-01 2.76222860e-01 2.76264745e-01 2.76306572e-01 2.76348342e-01 + 2.76390056e-01 2.76431714e-01 2.76473315e-01 2.76514859e-01 2.76556347e-01 + 2.76597779e-01 2.76639155e-01 2.76680475e-01 2.76721739e-01 2.76762947e-01 + 2.76804100e-01 2.76845197e-01 2.76886238e-01 2.76927224e-01 2.76968154e-01 + 2.77009030e-01 2.77049850e-01 2.77090615e-01 2.77131325e-01 2.77171980e-01 + 2.77212581e-01 2.77253126e-01 2.77293617e-01 2.77334054e-01 2.77374436e-01 + 2.77414764e-01 2.77455038e-01 2.77495257e-01 2.77535423e-01 2.77575534e-01 + 2.77615592e-01 2.77655596e-01 2.77695546e-01 2.77735443e-01 2.77775286e-01 + 2.77815076e-01 2.77854812e-01 2.77894495e-01 2.77934125e-01 2.77973702e-01 + 2.78013226e-01 2.78052697e-01 2.78092115e-01 2.78131481e-01 2.78170794e-01 + 2.78210054e-01 2.78249262e-01 2.78288418e-01 2.78327521e-01 2.78366572e-01 + 2.78405571e-01 2.78444519e-01 2.78483414e-01 2.78522257e-01 2.78561049e-01 + 2.78599789e-01 2.78638477e-01 2.78677114e-01 2.78715700e-01 2.78754234e-01 + 2.78792717e-01 2.78831149e-01 2.78869530e-01 2.78907859e-01 2.78946138e-01 + 2.08130000e-04 2.08281191e-04 2.08734762e-04 2.09490714e-04 2.10549046e-04 + 2.11909757e-04 2.13572846e-04 2.15538310e-04 2.17806148e-04 2.20376358e-04 + 2.23248936e-04 2.26423882e-04 2.29901190e-04 2.33680858e-04 2.37762883e-04 + 2.42147260e-04 2.46833984e-04 2.51823051e-04 2.57114457e-04 2.62708196e-04 + 2.68604263e-04 2.74802652e-04 2.81303356e-04 2.88106370e-04 2.95211687e-04 + 3.02619299e-04 3.10329200e-04 3.18341382e-04 3.26655837e-04 3.35272557e-04 + 3.44191533e-04 3.53412758e-04 3.62936221e-04 3.72761913e-04 3.82889825e-04 + 3.93319947e-04 4.04052269e-04 4.15086779e-04 4.26423468e-04 4.38062324e-04 + 4.50003336e-04 4.62246492e-04 4.74791780e-04 4.87639188e-04 5.00788703e-04 + 5.14240312e-04 5.27994002e-04 5.42049760e-04 5.56407572e-04 5.71067423e-04 + 5.86029300e-04 6.01293187e-04 6.16859071e-04 6.32726934e-04 6.48896763e-04 + 6.65368541e-04 6.82142252e-04 6.99217880e-04 7.16595407e-04 7.34274817e-04 + 7.52256092e-04 7.70539216e-04 7.89124169e-04 8.08010934e-04 8.27199493e-04 + 8.46689825e-04 8.66481913e-04 8.86575737e-04 9.06971278e-04 9.27668514e-04 + 9.48667427e-04 9.69967995e-04 9.91570198e-04 1.01347401e-03 1.03567942e-03 + 1.05818640e-03 1.08099493e-03 1.10410498e-03 1.12751654e-03 1.15122957e-03 + 1.17524406e-03 1.19955999e-03 1.22417733e-03 1.24909605e-03 1.27431613e-03 + 1.29983755e-03 1.32566029e-03 1.35178430e-03 1.37820958e-03 1.40493610e-03 + 1.43196382e-03 1.45929272e-03 1.48692278e-03 1.51485397e-03 1.54308626e-03 + 1.57161963e-03 1.60045404e-03 1.62958946e-03 1.65902588e-03 1.68876325e-03 + 1.71880156e-03 1.74914077e-03 1.77978085e-03 1.81072177e-03 1.84196351e-03 + 1.87350602e-03 1.90534929e-03 1.93749327e-03 1.96993795e-03 2.00268328e-03 + 2.03572923e-03 2.06907577e-03 2.10272288e-03 2.13667051e-03 2.17091863e-03 + 2.20546721e-03 2.24031622e-03 2.27546562e-03 2.31091538e-03 2.34666546e-03 + 2.38271583e-03 2.41906645e-03 2.45571729e-03 2.49266831e-03 2.52991947e-03 + 2.56747075e-03 2.60532209e-03 2.64347347e-03 2.68192485e-03 2.72067619e-03 + 2.75972745e-03 2.79907859e-03 2.83872959e-03 2.87868038e-03 2.91893095e-03 + 2.95948125e-03 3.00033123e-03 3.04148087e-03 3.08293011e-03 3.12467892e-03 + 3.16672726e-03 3.20907509e-03 3.25172236e-03 3.29466904e-03 3.33791508e-03 + 3.38146044e-03 3.42530507e-03 3.46944894e-03 3.51389201e-03 3.55863422e-03 + 3.60367554e-03 3.64901591e-03 3.69465531e-03 3.74059367e-03 3.78683096e-03 + 3.83336714e-03 3.88020215e-03 3.92733595e-03 3.97476850e-03 4.02249975e-03 + 4.07052965e-03 4.11885815e-03 4.16748522e-03 4.21641079e-03 4.26563483e-03 + 4.31515728e-03 4.36497811e-03 4.41509725e-03 4.46551466e-03 4.51623029e-03 + 4.56724409e-03 4.61855601e-03 4.67016601e-03 4.72207403e-03 4.77428002e-03 + 4.82678393e-03 4.87958570e-03 4.93268530e-03 4.98608266e-03 5.03977774e-03 + 5.09377048e-03 5.14806083e-03 5.20264873e-03 5.25753414e-03 5.31271700e-03 + 5.36819725e-03 5.42397485e-03 5.48004973e-03 5.53642185e-03 5.59309115e-03 + 5.65005757e-03 5.70732106e-03 5.76488157e-03 5.82273903e-03 5.88089339e-03 + 5.93934459e-03 5.99809258e-03 6.05713731e-03 6.11647870e-03 6.17611671e-03 + 6.23605128e-03 6.29628235e-03 6.35680986e-03 6.41763375e-03 6.47875396e-03 + 6.54017044e-03 6.60188312e-03 6.66389194e-03 6.72619685e-03 6.78879778e-03 + 6.85169468e-03 6.91488748e-03 6.97837611e-03 7.04216053e-03 7.10624066e-03 + 7.17061645e-03 7.23528783e-03 7.30025474e-03 7.36551712e-03 7.43107490e-03 + 7.49692802e-03 7.56307641e-03 7.62952002e-03 7.69625878e-03 7.76329262e-03 + 7.83062147e-03 7.89824528e-03 7.96616398e-03 8.03437750e-03 8.10288577e-03 + 8.17168874e-03 8.24078632e-03 8.31017847e-03 8.37986510e-03 8.44984615e-03 + 8.52012155e-03 8.59069124e-03 8.66155515e-03 8.73271321e-03 8.80416535e-03 + 8.87591149e-03 8.94795158e-03 9.02028554e-03 9.09291331e-03 9.16583480e-03 + 9.23904995e-03 9.31255870e-03 9.38636096e-03 9.46045668e-03 9.53484577e-03 + 9.60952816e-03 9.68450379e-03 9.75977258e-03 9.83533445e-03 9.91118934e-03 + 9.98733717e-03 1.00637779e-02 1.01405114e-02 1.02175376e-02 1.02948564e-02 + 1.03724679e-02 1.04503718e-02 1.05285681e-02 1.06070568e-02 1.06858378e-02 + 1.07649109e-02 1.08442762e-02 1.09239335e-02 1.10038828e-02 1.10841240e-02 + 1.11646570e-02 1.12454817e-02 1.13265980e-02 1.14080060e-02 1.14897054e-02 + 1.15716963e-02 1.16539785e-02 1.17365519e-02 1.18194166e-02 1.19025723e-02 + 1.19860191e-02 1.20697568e-02 1.21537854e-02 1.22381047e-02 1.23227148e-02 + 1.24076155e-02 1.24928067e-02 1.25782883e-02 1.26640604e-02 1.27501227e-02 + 1.28364752e-02 1.29231179e-02 1.30100506e-02 1.30972732e-02 1.31847858e-02 + 1.32725881e-02 1.33606801e-02 1.34490618e-02 1.35377329e-02 1.36266936e-02 + 1.37159436e-02 1.38054829e-02 1.38953113e-02 1.39854289e-02 1.40758355e-02 + 1.41665311e-02 1.42575155e-02 1.43487886e-02 1.44403504e-02 1.45322008e-02 + 1.46243398e-02 1.47167671e-02 1.48094827e-02 1.49024866e-02 1.49957786e-02 + 1.50893587e-02 1.51832267e-02 1.52773826e-02 1.53718263e-02 1.54665577e-02 + 1.55615767e-02 1.56568832e-02 1.57524771e-02 1.58483584e-02 1.59445269e-02 + 1.60409825e-02 1.61377252e-02 1.62347549e-02 1.63320714e-02 1.64296747e-02 + 1.65275647e-02 1.66257413e-02 1.67242043e-02 1.68229538e-02 1.69219896e-02 + 1.70213116e-02 1.71209197e-02 1.72208138e-02 1.73209939e-02 1.74214598e-02 + 1.75222114e-02 1.76232487e-02 1.77245715e-02 1.78261798e-02 1.79280734e-02 + 1.80302523e-02 1.81327163e-02 1.82354654e-02 1.83384994e-02 1.84418184e-02 + 1.85454220e-02 1.86493104e-02 1.87534833e-02 1.88579407e-02 1.89626824e-02 + 1.90677084e-02 1.91730186e-02 1.92786129e-02 1.93844911e-02 1.94906532e-02 + 1.95970991e-02 1.97038286e-02 1.98108417e-02 1.99181382e-02 2.00257182e-02 + 2.01335813e-02 2.02417277e-02 2.03501571e-02 2.04588694e-02 2.05678646e-02 + 2.06771425e-02 2.07867031e-02 2.08965462e-02 2.10066717e-02 2.11170796e-02 + 2.12277697e-02 2.13387419e-02 2.14499962e-02 2.15615323e-02 2.16733503e-02 + 2.17854499e-02 2.18978311e-02 2.20104938e-02 2.21234379e-02 2.22366633e-02 + 2.23501698e-02 2.24639574e-02 2.25780260e-02 2.26923753e-02 2.28070055e-02 + 2.29219162e-02 2.30371074e-02 2.31525791e-02 2.32683311e-02 2.33843632e-02 + 2.35006755e-02 2.36172677e-02 2.37341397e-02 2.38512915e-02 2.39687230e-02 + 2.40864339e-02 2.42044243e-02 2.43226940e-02 2.44412429e-02 2.45600709e-02 + 2.46791779e-02 2.47985637e-02 2.49182282e-02 2.50381714e-02 2.51583931e-02 + 2.52788932e-02 2.53996717e-02 2.55207283e-02 2.56420629e-02 2.57636755e-02 + 2.58855660e-02 2.60077341e-02 2.61301799e-02 2.62529032e-02 2.63759039e-02 + 2.64991818e-02 2.66227368e-02 2.67465689e-02 2.68706779e-02 2.69950637e-02 + 2.71197262e-02 2.72446653e-02 2.73698808e-02 2.74953726e-02 2.76211406e-02 + 2.77471848e-02 2.78735049e-02 2.80001009e-02 2.81269726e-02 2.82541199e-02 + 2.83815427e-02 2.85092409e-02 2.86372144e-02 2.87654630e-02 2.88939867e-02 + 2.90227852e-02 2.91518585e-02 2.92812065e-02 2.94108290e-02 2.95407260e-02 + 2.96708972e-02 2.98013426e-02 2.99320621e-02 3.00630555e-02 3.01943227e-02 + 3.03258636e-02 3.04576781e-02 3.05897660e-02 3.07221272e-02 3.08547616e-02 + 3.09876691e-02 3.11208496e-02 3.12543028e-02 3.13880288e-02 3.15220273e-02 + 3.16562983e-02 3.17908416e-02 3.19256571e-02 3.20607447e-02 3.21961042e-02 + 3.23317356e-02 3.24676386e-02 3.26038132e-02 3.27402593e-02 3.28769766e-02 + 3.30139652e-02 3.31512248e-02 3.32887554e-02 3.34265567e-02 3.35646288e-02 + 3.37029714e-02 3.38415844e-02 3.39804677e-02 3.41196212e-02 3.42590447e-02 + 3.43987381e-02 3.45387013e-02 3.46789341e-02 3.48194365e-02 3.49602082e-02 + 3.51012492e-02 3.52425593e-02 3.53841384e-02 3.55259864e-02 3.56681031e-02 + 3.58104884e-02 3.59531422e-02 3.60960643e-02 3.62392547e-02 3.63827131e-02 + 3.65264394e-02 3.66704335e-02 3.68146954e-02 3.69592247e-02 3.71040215e-02 + 3.72490856e-02 3.73944167e-02 3.75400149e-02 3.76858800e-02 3.78320118e-02 + 3.79784102e-02 3.81250751e-02 3.82720063e-02 3.84192037e-02 3.85666672e-02 + 3.87143966e-02 3.88623918e-02 3.90106526e-02 3.91591790e-02 3.93079707e-02 + 3.94570277e-02 3.96063498e-02 3.97559369e-02 3.99057888e-02 4.00559054e-02 + 4.02062865e-02 4.03569321e-02 4.05078419e-02 4.06590159e-02 4.08104539e-02 + 4.09621558e-02 4.11141214e-02 4.12663506e-02 4.14188432e-02 4.15715991e-02 + 4.17246182e-02 4.18779004e-02 4.20314454e-02 4.21852532e-02 4.23393235e-02 + 4.24936564e-02 4.26482515e-02 4.28031089e-02 4.29582283e-02 4.31136096e-02 + 4.32692526e-02 4.34251573e-02 4.35813234e-02 4.37377508e-02 4.38944395e-02 + 4.40513892e-02 4.42085998e-02 4.43660711e-02 4.45238031e-02 4.46817956e-02 + 4.48400483e-02 4.49985613e-02 4.51573343e-02 4.53163671e-02 4.54756598e-02 + 4.56352120e-02 4.57950237e-02 4.59550947e-02 4.61154249e-02 4.62760141e-02 + 4.64368622e-02 4.65979690e-02 4.67593344e-02 4.69209582e-02 4.70828403e-02 + 4.72449806e-02 4.74073789e-02 4.75700350e-02 4.77329488e-02 4.78961202e-02 + 4.80595489e-02 4.82232350e-02 4.83871781e-02 4.85513782e-02 4.87158351e-02 + 4.88805487e-02 4.90455188e-02 4.92107453e-02 4.93762280e-02 4.95419667e-02 + 4.97079614e-02 4.98742118e-02 5.00407179e-02 5.02074794e-02 5.03744963e-02 + 5.05417683e-02 5.07092953e-02 5.08770772e-02 5.10451138e-02 5.12134049e-02 + 5.13819505e-02 5.15507503e-02 5.17198043e-02 5.18891121e-02 5.20586738e-02 + 5.22284892e-02 5.23985580e-02 5.25688802e-02 5.27394555e-02 5.29102839e-02 + 5.30813652e-02 5.32526992e-02 5.34242858e-02 5.35961248e-02 5.37682161e-02 + 5.39405595e-02 5.41131548e-02 5.42860020e-02 5.44591008e-02 5.46324511e-02 + 5.48060527e-02 5.49799055e-02 5.51540094e-02 5.53283641e-02 5.55029695e-02 + 5.56778255e-02 5.58529319e-02 5.60282885e-02 5.62038952e-02 5.63797519e-02 + 5.65558583e-02 5.67322144e-02 5.69088199e-02 5.70856747e-02 5.72627786e-02 + 5.74401316e-02 5.76177334e-02 5.77955838e-02 5.79736828e-02 5.81520301e-02 + 5.83306256e-02 5.85094691e-02 5.86885605e-02 5.88678997e-02 5.90474864e-02 + 5.92273205e-02 5.94074018e-02 5.95877302e-02 5.97683055e-02 5.99491276e-02 + 6.01301963e-02 6.03115114e-02 6.04930728e-02 6.06748803e-02 6.08569338e-02 + 6.10392330e-02 6.12217779e-02 6.14045683e-02 6.15876039e-02 6.17708848e-02 + 6.19544105e-02 6.21381812e-02 6.23221964e-02 6.25064562e-02 6.26909603e-02 + 6.28757085e-02 6.30607008e-02 6.32459369e-02 6.34314167e-02 6.36171400e-02 + 6.38031067e-02 6.39893165e-02 6.41757694e-02 6.43624651e-02 6.45494036e-02 + 6.47365845e-02 6.49240078e-02 6.51116734e-02 6.52995809e-02 6.54877303e-02 + 6.56761215e-02 6.58647541e-02 6.60536282e-02 6.62427434e-02 6.64320997e-02 + 6.66216969e-02 6.68115348e-02 6.70016132e-02 6.71919320e-02 6.73824910e-02 + 6.75732900e-02 6.77643289e-02 6.79556075e-02 6.81471257e-02 6.83388832e-02 + 6.85308799e-02 6.87231157e-02 6.89155904e-02 6.91083037e-02 6.93012556e-02 + 6.94944458e-02 6.96878742e-02 6.98815407e-02 7.00754450e-02 7.02695870e-02 + 7.04639665e-02 7.06585833e-02 7.08534374e-02 7.10485284e-02 7.12438563e-02 + 7.14394208e-02 7.16352219e-02 7.18312593e-02 7.20275328e-02 7.22240423e-02 + 7.24207876e-02 7.26177686e-02 7.28149851e-02 7.30124368e-02 7.32101237e-02 + 7.34080456e-02 7.36062022e-02 7.38045935e-02 7.40032192e-02 7.42020791e-02 + 7.44011732e-02 7.46005012e-02 7.48000630e-02 7.49998583e-02 7.51998870e-02 + 7.54001490e-02 7.56006441e-02 7.58013720e-02 7.60023326e-02 7.62035258e-02 + 7.64049514e-02 7.66066092e-02 7.68084989e-02 7.70106206e-02 7.72129739e-02 + 7.74155587e-02 7.76183748e-02 7.78214221e-02 7.80247003e-02 7.82282094e-02 + 7.84319490e-02 7.86359192e-02 7.88401196e-02 7.90445501e-02 7.92492105e-02 + 7.94541007e-02 7.96592204e-02 7.98645695e-02 8.00701479e-02 8.02759553e-02 + 8.04819916e-02 8.06882565e-02 8.08947500e-02 8.11014718e-02 8.13084218e-02 + 8.15155998e-02 8.17230055e-02 8.19306389e-02 8.21384998e-02 8.23465879e-02 + 8.25549031e-02 8.27634452e-02 8.29722141e-02 8.31812095e-02 8.33904313e-02 + 8.35998794e-02 8.38095534e-02 8.40194533e-02 8.42295789e-02 8.44399299e-02 + 8.46505063e-02 8.48613078e-02 8.50723343e-02 8.52835855e-02 8.54950613e-02 + 8.57067616e-02 8.59186860e-02 8.61308346e-02 8.63432070e-02 8.65558031e-02 + 8.67686227e-02 8.69816656e-02 8.71949318e-02 8.74084208e-02 8.76221327e-02 + 8.78360672e-02 8.80502241e-02 8.82646033e-02 8.84792045e-02 8.86940276e-02 + 8.89090725e-02 8.91243388e-02 8.93398265e-02 8.95555354e-02 8.97714652e-02 + 8.99876159e-02 9.02039871e-02 9.04205788e-02 9.06373908e-02 9.08544228e-02 + 9.10716747e-02 9.12891463e-02 9.15068374e-02 9.17247478e-02 9.19428774e-02 + 9.21612260e-02 9.23797934e-02 9.25985793e-02 9.28175837e-02 9.30368064e-02 + 9.32562470e-02 9.34759056e-02 9.36957818e-02 9.39158756e-02 9.41361866e-02 + 9.43567148e-02 9.45774599e-02 9.47984219e-02 9.50196003e-02 9.52409952e-02 + 9.54626063e-02 9.56844334e-02 9.59064764e-02 9.61287350e-02 9.63512090e-02 + 9.65738984e-02 9.67968029e-02 9.70199222e-02 9.72432563e-02 9.74668050e-02 + 9.76905680e-02 9.79145452e-02 9.81387363e-02 9.83631413e-02 9.85877598e-02 + 9.88125918e-02 9.90376370e-02 9.92628953e-02 9.94883665e-02 9.97140503e-02 + 9.99399466e-02 1.00166055e-01 1.00392376e-01 1.00618909e-01 1.00845653e-01 + 1.01072609e-01 1.01299776e-01 1.01527155e-01 1.01754744e-01 1.01982545e-01 + 1.02210556e-01 1.02438777e-01 1.02667209e-01 1.02895850e-01 1.03124702e-01 + 1.03353763e-01 1.03583034e-01 1.03812514e-01 1.04042203e-01 1.04272101e-01 + 1.04502207e-01 1.04732523e-01 1.04963046e-01 1.05193778e-01 1.05424718e-01 + 1.05655865e-01 1.05887221e-01 1.06118783e-01 1.06350553e-01 1.06582530e-01 + 1.06814713e-01 1.07047104e-01 1.07279701e-01 1.07512504e-01 1.07745513e-01 + 1.07978728e-01 1.08212148e-01 1.08445775e-01 1.08679606e-01 1.08913643e-01 + 1.09147884e-01 1.09382331e-01 1.09616982e-01 1.09851837e-01 1.10086896e-01 + 1.10322160e-01 1.10557627e-01 1.10793298e-01 1.11029172e-01 1.11265249e-01 + 1.11501530e-01 1.11738013e-01 1.11974699e-01 1.12211587e-01 1.12448678e-01 + 1.12685971e-01 1.12923465e-01 1.13161162e-01 1.13399059e-01 1.13637158e-01 + 1.13875458e-01 1.14113960e-01 1.14352661e-01 1.14591564e-01 1.14830666e-01 + 1.15069969e-01 1.15309472e-01 1.15549174e-01 1.15789076e-01 1.16029178e-01 + 1.16269478e-01 1.16509978e-01 1.16750676e-01 1.16991573e-01 1.17232669e-01 + 1.17473962e-01 1.17715454e-01 1.17957143e-01 1.18199030e-01 1.18441115e-01 + 1.18683397e-01 1.18925875e-01 1.19168551e-01 1.19411423e-01 1.19654492e-01 + 1.19897757e-01 1.20141218e-01 1.20384875e-01 1.20628728e-01 1.20872776e-01 + 1.21117020e-01 1.21361458e-01 1.21606092e-01 1.21850920e-01 1.22095943e-01 + 1.22341160e-01 1.22586571e-01 1.22832176e-01 1.23077975e-01 1.23323967e-01 + 1.23570153e-01 1.23816532e-01 1.24063104e-01 1.24309869e-01 1.24556826e-01 + 1.24803975e-01 1.25051317e-01 1.25298851e-01 1.25546576e-01 1.25794494e-01 + 1.26042602e-01 1.26290902e-01 1.26539393e-01 1.26788074e-01 1.27036946e-01 + 1.27286009e-01 1.27535261e-01 1.27784704e-01 1.28034337e-01 1.28284159e-01 + 1.28534171e-01 1.28784372e-01 1.29034762e-01 1.29285340e-01 1.29536108e-01 + 1.29787064e-01 1.30038208e-01 1.30289540e-01 1.30541060e-01 1.30792768e-01 + 1.31044663e-01 1.31296746e-01 1.31549015e-01 1.31801471e-01 1.32054115e-01 + 1.32306944e-01 1.32559960e-01 1.32813162e-01 1.33066550e-01 1.33320123e-01 + 1.33573882e-01 1.33827826e-01 1.34081956e-01 1.34336270e-01 1.34590769e-01 + 1.34845452e-01 1.35100320e-01 1.35355372e-01 1.35610608e-01 1.35866027e-01 + 1.36121630e-01 1.36377417e-01 1.36633386e-01 1.36889538e-01 1.37145873e-01 + 1.37402391e-01 1.37659091e-01 1.37915973e-01 1.38173037e-01 1.38430283e-01 + 1.38687710e-01 1.38945318e-01 1.39203108e-01 1.39461079e-01 1.39719230e-01 + 1.39977562e-01 1.40236074e-01 1.40494766e-01 1.40753639e-01 1.41012691e-01 + 1.41271922e-01 1.41531333e-01 1.41790923e-01 1.42050692e-01 1.42310640e-01 + 1.42570766e-01 1.42831071e-01 1.43091554e-01 1.43352214e-01 1.43613053e-01 + 1.43874069e-01 1.44135262e-01 1.44396633e-01 1.44658180e-01 1.44919904e-01 + 1.45181805e-01 1.45443882e-01 1.45706135e-01 1.45968565e-01 1.46231170e-01 + 1.46493950e-01 1.46756906e-01 1.47020037e-01 1.47283343e-01 1.47546824e-01 + 1.47810479e-01 1.48074308e-01 1.48338312e-01 1.48602490e-01 1.48866841e-01 + 1.49131366e-01 1.49396065e-01 1.49660936e-01 1.49925981e-01 1.50191198e-01 + 1.50456588e-01 1.50722150e-01 1.50987884e-01 1.51253790e-01 1.51519868e-01 + 1.51786118e-01 1.52052539e-01 1.52319131e-01 1.52585894e-01 1.52852827e-01 + 1.53119932e-01 1.53387206e-01 1.53654651e-01 1.53922266e-01 1.54190050e-01 + 1.54458004e-01 1.54726127e-01 1.54994420e-01 1.55262881e-01 1.55531511e-01 + 1.55800310e-01 1.56069277e-01 1.56338412e-01 1.56607715e-01 1.56877186e-01 + 1.57146824e-01 1.57416630e-01 1.57686603e-01 1.57956743e-01 1.58227049e-01 + 1.58497522e-01 1.58768161e-01 1.59038967e-01 1.59309938e-01 1.59581075e-01 + 1.59852378e-01 1.60123846e-01 1.60395479e-01 1.60667277e-01 1.60939240e-01 + 1.61211367e-01 1.61483659e-01 1.61756114e-01 1.62028734e-01 1.62301517e-01 + 1.62574464e-01 1.62847574e-01 1.63120847e-01 1.63394283e-01 1.63667882e-01 + 1.63941644e-01 1.64215567e-01 1.64489653e-01 1.64763901e-01 1.65038310e-01 + 1.65312881e-01 1.65587613e-01 1.65862506e-01 1.66137560e-01 1.66412775e-01 + 1.66688150e-01 1.66963686e-01 1.67239381e-01 1.67515237e-01 1.67791252e-01 + 1.68067427e-01 1.68343761e-01 1.68620254e-01 1.68896906e-01 1.69173717e-01 + 1.69450686e-01 1.69727813e-01 1.70005098e-01 1.70282542e-01 1.70560143e-01 + 1.70837901e-01 1.71115817e-01 1.71393889e-01 1.71672119e-01 1.71950505e-01 + 1.72229048e-01 1.72507747e-01 1.72786602e-01 1.73065613e-01 1.73344779e-01 + 1.73624101e-01 1.73903579e-01 1.74183211e-01 1.74462998e-01 1.74742940e-01 + 1.75023036e-01 1.75303286e-01 1.75583691e-01 1.75864249e-01 1.76144961e-01 + 1.76425826e-01 1.76706845e-01 1.76988017e-01 1.77269341e-01 1.77550818e-01 + 1.77832448e-01 1.78114229e-01 1.78396163e-01 1.78678248e-01 1.78960486e-01 + 1.79242874e-01 1.79525414e-01 1.79808105e-01 1.80090946e-01 1.80373938e-01 + 1.80657081e-01 1.80940374e-01 1.81223816e-01 1.81507409e-01 1.81791151e-01 + 1.82075043e-01 1.82359084e-01 1.82643273e-01 1.82927612e-01 1.83212099e-01 + 1.83496734e-01 1.83781518e-01 1.84066450e-01 1.84351529e-01 1.84636756e-01 + 1.84922131e-01 1.85207652e-01 1.85493321e-01 1.85779136e-01 1.86065098e-01 + 1.86351206e-01 1.86637461e-01 1.86923861e-01 1.87210407e-01 1.87497099e-01 + 1.87783936e-01 1.88070919e-01 1.88358046e-01 1.88645318e-01 1.88932734e-01 + 1.89220295e-01 1.89508000e-01 1.89795849e-01 1.90083842e-01 1.90371978e-01 + 1.90660258e-01 1.90948681e-01 1.91237246e-01 1.91525955e-01 1.91814806e-01 + 1.92103799e-01 1.92392935e-01 1.92682212e-01 1.92971631e-01 1.93261192e-01 + 1.93550894e-01 1.93840737e-01 1.94130721e-01 1.94420846e-01 1.94711111e-01 + 1.95001517e-01 1.95292063e-01 1.95582748e-01 1.95873574e-01 1.96164539e-01 + 1.96455643e-01 1.96746886e-01 1.97038269e-01 1.97329790e-01 1.97621449e-01 + 1.97913247e-01 1.98205183e-01 1.98497257e-01 1.98789469e-01 1.99081818e-01 + 1.99374304e-01 1.99666928e-01 1.99959688e-01 2.00252585e-01 2.00545619e-01 + 2.00838789e-01 2.01132095e-01 2.01425537e-01 2.01719114e-01 2.02012828e-01 + 2.02306676e-01 2.02600660e-01 2.02894778e-01 2.03189031e-01 2.03483419e-01 + 2.03777941e-01 2.04072597e-01 2.04367387e-01 2.04662311e-01 2.04957368e-01 + 2.05252558e-01 2.05547882e-01 2.05843338e-01 2.06138928e-01 2.06434649e-01 + 2.06730503e-01 2.07026489e-01 2.07322607e-01 2.07618857e-01 2.07915238e-01 + 2.08211750e-01 2.08508394e-01 2.08805168e-01 2.09102073e-01 2.09399109e-01 + 2.09696275e-01 2.09993571e-01 2.10290997e-01 2.10588552e-01 2.10886237e-01 + 2.11184052e-01 2.11481995e-01 2.11780068e-01 2.12078269e-01 2.12376598e-01 + 2.12675056e-01 2.12973642e-01 2.13272356e-01 2.13571197e-01 2.13870166e-01 + 2.14169263e-01 2.14468486e-01 2.14767837e-01 2.15067314e-01 2.15366917e-01 + 2.15666647e-01 2.15966503e-01 2.16266485e-01 2.16566592e-01 2.16866825e-01 + 2.17167184e-01 2.17467667e-01 2.17768276e-01 2.18069009e-01 2.18369866e-01 + 2.18670848e-01 2.18971954e-01 2.19273184e-01 2.19574538e-01 2.19876015e-01 + 2.20177615e-01 2.20479339e-01 2.20781185e-01 2.21083155e-01 2.21385246e-01 + 2.21687460e-01 2.21989797e-01 2.22292255e-01 2.22594835e-01 2.22897536e-01 + 2.23200359e-01 2.23503303e-01 2.23806367e-01 2.24109553e-01 2.24412859e-01 + 2.24716285e-01 2.25019832e-01 2.25323498e-01 2.25627285e-01 2.25931191e-01 + 2.26235216e-01 2.26539360e-01 2.26843623e-01 2.27148005e-01 2.27452506e-01 + 2.27757125e-01 2.28061862e-01 2.28366717e-01 2.28671690e-01 2.28976780e-01 + 2.29281988e-01 2.29587313e-01 2.29892755e-01 2.30198313e-01 2.30503989e-01 + 2.30809780e-01 2.31115688e-01 2.31421712e-01 2.31727852e-01 2.32034107e-01 + 2.32340478e-01 2.32646964e-01 2.32953565e-01 2.33260280e-01 2.33567111e-01 + 2.33874055e-01 2.34181114e-01 2.34488287e-01 2.34795574e-01 2.35102975e-01 + 2.35410489e-01 2.35718116e-01 2.36025856e-01 2.36333709e-01 2.36641675e-01 + 2.36949753e-01 2.37257943e-01 2.37566246e-01 2.37874660e-01 2.38183186e-01 + 2.38491824e-01 2.38800572e-01 2.39109432e-01 2.39418403e-01 2.39727484e-01 + 2.40036676e-01 2.40345978e-01 2.40655391e-01 2.40964913e-01 2.41274545e-01 + 2.41584286e-01 2.41894137e-01 2.42204097e-01 2.42514166e-01 2.42824344e-01 + 2.43134630e-01 2.43445024e-01 2.43755527e-01 2.44066138e-01 2.44376856e-01 + 2.44687682e-01 2.44998615e-01 2.45309656e-01 2.45620803e-01 2.45932058e-01 + 2.46243419e-01 2.46554886e-01 2.46866459e-01 2.47178139e-01 2.47489924e-01 + 2.47801815e-01 2.48113812e-01 2.48425913e-01 2.48738120e-01 2.49050431e-01 + 2.49362848e-01 2.49675368e-01 2.49987993e-01 2.50300722e-01 2.50613555e-01 + 2.50926492e-01 2.51239532e-01 2.51552675e-01 2.51865922e-01 2.52179271e-01 + 2.52492723e-01 2.52806278e-01 2.53119935e-01 2.53433694e-01 2.53747555e-01 + 2.54061518e-01 2.54375582e-01 2.54689748e-01 2.55004015e-01 2.55318383e-01 + 2.55632851e-01 2.55947421e-01 2.56262090e-01 2.56576860e-01 2.56891730e-01 + 2.57206700e-01 2.57521770e-01 2.57836938e-01 2.58152207e-01 2.58467574e-01 + 2.58783040e-01 2.59098605e-01 2.59414268e-01 2.59730029e-01 2.60045889e-01 + 2.60361847e-01 2.60677902e-01 2.60994055e-01 2.61310305e-01 2.61626652e-01 + 2.61943096e-01 2.62259637e-01 2.62576275e-01 2.62893009e-01 2.63209839e-01 + 2.63526765e-01 2.63843787e-01 2.64160905e-01 2.64478118e-01 2.64795426e-01 + 2.65112830e-01 2.65430328e-01 2.65747921e-01 2.66065608e-01 2.66383390e-01 + 2.66701265e-01 2.67019235e-01 2.67337298e-01 2.67655455e-01 2.67973706e-01 + 2.68292049e-01 2.68610485e-01 2.68929014e-01 2.69247636e-01 2.69566350e-01 + 2.69885156e-01 2.70204055e-01 2.70523045e-01 2.70842127e-01 2.71161300e-01 + 2.71480564e-01 2.71799920e-01 2.72119366e-01 2.72438903e-01 2.72758531e-01 + 2.73078249e-01 2.73398057e-01 2.73717955e-01 2.74037942e-01 2.74358019e-01 + 2.74678186e-01 2.74998442e-01 2.75318787e-01 2.75639220e-01 2.75959743e-01 + 2.76280353e-01 2.76601052e-01 2.76921839e-01 2.77242714e-01 2.77563676e-01 + 2.77884726e-01 2.78205864e-01 2.78527088e-01 2.78848399e-01 2.79169798e-01 + 2.79491282e-01 2.79812853e-01 2.80134510e-01 2.80456254e-01 2.80778083e-01 + 2.81099997e-01 2.81421997e-01 2.81744083e-01 2.82066253e-01 2.82388508e-01 + 2.82710848e-01 2.83033273e-01 2.83355782e-01 2.83678374e-01 2.84001051e-01 + 2.84323812e-01 2.84646656e-01 2.84969584e-01 2.85292594e-01 2.85615688e-01 + 2.85938865e-01 2.86262124e-01 2.86585466e-01 2.86908890e-01 2.87232396e-01 + 2.87555984e-01 2.87879654e-01 2.88203405e-01 2.88527238e-01 2.88851152e-01 + 2.89175147e-01 2.89499222e-01 2.89823378e-01 2.90147615e-01 2.90471932e-01 + 2.90796329e-01 2.91120806e-01 2.91445362e-01 2.91769999e-01 2.92094714e-01 + 2.92419508e-01 2.92744382e-01 2.93069334e-01 2.93394365e-01 2.93719474e-01 + 2.94044662e-01 2.94369927e-01 2.94695271e-01 2.95020692e-01 2.95346191e-01 + 2.95671767e-01 2.95997420e-01 2.96323150e-01 2.96648956e-01 2.96974840e-01 + 2.97300799e-01 2.97626835e-01 2.97952947e-01 2.98279135e-01 2.98605399e-01 + 2.98931738e-01 2.99258152e-01 2.99584642e-01 2.99911206e-01 3.00237845e-01 + 3.00564559e-01 3.00891347e-01 3.01218209e-01 3.01545146e-01 3.01872156e-01 + 3.02199240e-01 3.02526398e-01 3.02853628e-01 3.03180932e-01 3.03508309e-01 + 3.03835759e-01 3.04163281e-01 3.04490876e-01 3.04818543e-01 3.05146281e-01 + 3.05474092e-01 3.05801975e-01 3.06129929e-01 3.06457954e-01 3.06786051e-01 + 3.07114218e-01 3.07442456e-01 3.07770765e-01 3.08099145e-01 3.08427594e-01 + 3.08756114e-01 3.09084703e-01 3.09413363e-01 3.09742091e-01 3.10070890e-01 + 3.10399757e-01 3.10728693e-01 3.11057699e-01 3.11386772e-01 3.11715915e-01 + 3.12045125e-01 3.12374404e-01 3.12703751e-01 3.13033165e-01 3.13362647e-01 + 3.13692197e-01 3.14021813e-01 3.14351497e-01 3.14681248e-01 3.15011065e-01 + 3.15340949e-01 3.15670899e-01 3.16000915e-01 3.16330997e-01 3.16661145e-01 + 3.16991359e-01 3.17321638e-01 3.17651983e-01 3.17982392e-01 3.18312867e-01 + 3.18643406e-01 3.18974010e-01 3.19304678e-01 3.19635411e-01 3.19966207e-01 + 3.20297067e-01 3.20627992e-01 3.20958979e-01 3.21290030e-01 3.21621144e-01 + 3.21952321e-01 3.22283561e-01 3.22614864e-01 3.22946229e-01 3.23277656e-01 + 3.23609146e-01 3.23940697e-01 3.24272310e-01 3.24603985e-01 3.24935721e-01 + 3.25267519e-01 3.25599377e-01 3.25931297e-01 3.26263277e-01 3.26595317e-01 + 3.26927419e-01 3.27259580e-01 3.27591801e-01 3.27924082e-01 3.28256423e-01 + 3.28588824e-01 3.28921283e-01 3.29253802e-01 3.29586380e-01 3.29919017e-01 + 3.30251712e-01 3.30584466e-01 3.30917278e-01 3.31250149e-01 3.31583077e-01 + 3.31916063e-01 3.32249107e-01 3.32582208e-01 3.32915366e-01 3.33248582e-01 + 3.33581854e-01 3.33915183e-01 3.34248569e-01 3.34582011e-01 3.34915510e-01 + 3.35249064e-01 3.35582675e-01 3.35916341e-01 3.36250062e-01 3.36583839e-01 + 3.36917672e-01 3.37251559e-01 3.37585501e-01 3.37919498e-01 3.38253550e-01 + 3.38587656e-01 3.38921816e-01 3.39256030e-01 3.39590298e-01 3.39924620e-01 + 3.40258995e-01 3.40593423e-01 3.40927905e-01 3.41262440e-01 3.41597027e-01 + 3.41931667e-01 3.42266360e-01 3.42601105e-01 3.42935903e-01 3.43270752e-01 + 3.43605653e-01 3.43940606e-01 3.44275610e-01 3.44610666e-01 3.44945772e-01 + 3.45280930e-01 3.45616139e-01 3.45951398e-01 3.46286708e-01 3.46622068e-01 + 3.46957478e-01 3.47292938e-01 3.47628448e-01 3.47964008e-01 3.48299617e-01 + 3.48635275e-01 3.48970983e-01 3.49306740e-01 3.49642545e-01 3.49978399e-01 + 3.50314302e-01 3.50650253e-01 3.50986252e-01 3.51322299e-01 3.51658394e-01 + 3.51994536e-01 3.52330726e-01 3.52666964e-01 3.53003248e-01 3.53339580e-01 + 3.53675958e-01 3.54012383e-01 3.54348855e-01 3.54685373e-01 3.55021937e-01 + 3.55358547e-01 3.55695203e-01 3.56031904e-01 3.56368651e-01 3.56705444e-01 + 3.57042281e-01 3.57379164e-01 3.57716092e-01 3.58053064e-01 3.58390081e-01 + 3.58727142e-01 3.59064247e-01 3.59401397e-01 3.59738590e-01 3.60075827e-01 + 3.60413107e-01 3.60750431e-01 3.61087799e-01 3.61425209e-01 3.61762662e-01 + 3.62100158e-01 3.62437696e-01 3.62775277e-01 3.63112900e-01 3.63450566e-01 + 3.63788273e-01 3.64126022e-01 3.64463812e-01 3.64801645e-01 3.65139518e-01 + 3.65477432e-01 3.65815388e-01 3.66153384e-01 3.66491421e-01 3.66829498e-01 + 3.67167616e-01 3.67505774e-01 3.67843971e-01 3.68182209e-01 3.68520487e-01 + 3.68858803e-01 3.69197160e-01 3.69535555e-01 3.69873990e-01 3.70212463e-01 + 3.70550975e-01 3.70889526e-01 3.71228115e-01 3.71566742e-01 3.71905408e-01 + 3.72244111e-01 3.72582852e-01 3.72921631e-01 3.73260447e-01 3.73599300e-01 + 3.73938191e-01 3.74277119e-01 3.74616083e-01 3.74955084e-01 3.75294122e-01 + 3.75633196e-01 3.75972306e-01 3.76311452e-01 3.76650634e-01 3.76989852e-01 + 3.77329105e-01 3.77668394e-01 3.78007718e-01 3.78347077e-01 3.78686471e-01 + 3.79025899e-01 3.79365363e-01 3.79704861e-01 3.80044393e-01 3.80383959e-01 + 3.80723559e-01 3.81063194e-01 3.81402861e-01 3.81742563e-01 3.82082298e-01 + 3.82422065e-01 3.82761866e-01 3.83101700e-01 3.83441567e-01 3.83781466e-01 + 3.84121398e-01 3.84461362e-01 3.84801358e-01 3.85141386e-01 3.85481446e-01 + 3.85821538e-01 3.86161661e-01 3.86501816e-01 3.86842001e-01 3.87182218e-01 + 3.87522466e-01 3.87862744e-01 3.88203053e-01 3.88543393e-01 3.88883763e-01 + 3.89224162e-01 3.89564592e-01 3.89905052e-01 3.90245541e-01 3.90586060e-01 + 3.90926609e-01 3.91267186e-01 3.91607793e-01 3.91948428e-01 3.92289093e-01 + 3.92629785e-01 3.92970507e-01 3.93311256e-01 3.93652034e-01 3.93992840e-01 + 3.94333674e-01 3.94674535e-01 3.95015424e-01 3.95356341e-01 3.95697284e-01 + 3.96038255e-01 3.96379253e-01 3.96720277e-01 3.97061328e-01 3.97402406e-01 + 3.97743510e-01 3.98084640e-01 3.98425796e-01 3.98766978e-01 3.99108186e-01 + 3.99449420e-01 3.99790679e-01 4.00131963e-01 4.00473272e-01 4.00814607e-01 + 4.01155966e-01 4.01497350e-01 4.01838759e-01 4.02180192e-01 4.02521649e-01 + 4.02863130e-01 4.03204636e-01 4.03546165e-01 4.03887718e-01 4.04229294e-01 + 4.04570894e-01 4.04912517e-01 4.05254163e-01 4.05595832e-01 4.05937524e-01 + 4.06279238e-01 4.06620975e-01 4.06962734e-01 4.07304516e-01 4.07646319e-01 + 4.07988145e-01 4.08329992e-01 4.08671861e-01 4.09013751e-01 4.09355663e-01 + 4.09697596e-01 4.10039549e-01 4.10381524e-01 4.10723520e-01 4.11065536e-01 + 4.11407572e-01 4.11749629e-01 4.12091706e-01 4.12433803e-01 4.12775920e-01 + 4.13118057e-01 4.13460213e-01 4.13802389e-01 4.14144583e-01 4.14486798e-01 + 4.14829031e-01 4.15171283e-01 4.15513553e-01 4.15855843e-01 4.16198150e-01 + 4.16540476e-01 4.16882821e-01 4.17225183e-01 4.17567563e-01 4.17909961e-01 + 4.18252376e-01 4.18594809e-01 4.18937259e-01 4.19279726e-01 4.19622210e-01 + 4.19964711e-01 4.20307229e-01 4.20649763e-01 4.20992314e-01 4.21334881e-01 + 4.21677465e-01 4.22020064e-01 4.22362679e-01 4.22705310e-01 4.23047957e-01 + 4.23390619e-01 4.23733296e-01 4.24075988e-01 4.24418696e-01 4.24761418e-01 + 4.25104155e-01 4.25446907e-01 4.25789673e-01 4.26132454e-01 4.26475249e-01 + 4.26818057e-01 4.27160880e-01 4.27503717e-01 4.27846567e-01 4.28189430e-01 + 4.28532307e-01 4.28875197e-01 4.29218101e-01 4.29561017e-01 4.29903946e-01 + 4.30246888e-01 4.30589842e-01 4.30932808e-01 4.31275787e-01 4.31618778e-01 + 4.31961781e-01 4.32304796e-01 4.32647822e-01 4.32990860e-01 4.33333909e-01 + 4.33676970e-01 4.34020042e-01 4.34363125e-01 4.34706219e-01 4.35049323e-01 + 4.35392438e-01 4.35735564e-01 4.36078700e-01 4.36421846e-01 4.36765002e-01 + 4.37108168e-01 4.37451344e-01 4.37794529e-01 4.38137724e-01 4.38480929e-01 + 4.38824142e-01 4.39167365e-01 4.39510597e-01 4.39853837e-01 4.40197087e-01 + 4.40540345e-01 4.40883611e-01 4.41226885e-01 4.41570168e-01 4.41913459e-01 + 4.42256758e-01 4.42600064e-01 4.42943378e-01 4.43286700e-01 4.43630029e-01 + 4.43973365e-01 4.44316708e-01 4.44660058e-01 4.45003416e-01 4.45346779e-01 + 4.45690150e-01 4.46033526e-01 4.46376910e-01 4.46720299e-01 4.47063694e-01 + 4.47407095e-01 4.47750502e-01 4.48093915e-01 4.48437333e-01 4.48780757e-01 + 4.49124185e-01 4.49467619e-01 4.49811058e-01 4.50154502e-01 4.50497950e-01 + 4.50841403e-01 4.51184861e-01 4.51528322e-01 4.51871788e-01 4.52215259e-01 + 4.52558733e-01 4.52902210e-01 4.53245692e-01 4.53589177e-01 4.53932665e-01 + 4.54276157e-01 4.54619652e-01 4.54963150e-01 4.55306651e-01 4.55650154e-01 + 2.08130000e-04 2.08281191e-04 2.08734762e-04 2.09490714e-04 2.10549046e-04 + 2.11909757e-04 2.13572846e-04 2.15538310e-04 2.17806148e-04 2.20376358e-04 + 2.23248936e-04 2.26423882e-04 2.29901190e-04 2.33680858e-04 2.37762883e-04 + 2.42147260e-04 2.46833984e-04 2.51823051e-04 2.57114457e-04 2.62708196e-04 + 2.68604263e-04 2.74802652e-04 2.81303356e-04 2.88106370e-04 2.95211687e-04 + 3.02619299e-04 3.10329200e-04 3.18341382e-04 3.26655837e-04 3.35272557e-04 + 3.44191533e-04 3.53412758e-04 3.62936221e-04 3.72761913e-04 3.82889825e-04 + 3.93319947e-04 4.04052269e-04 4.15086779e-04 4.26423468e-04 4.38062324e-04 + 4.50003336e-04 4.62246492e-04 4.74791780e-04 4.87639188e-04 5.00788703e-04 + 5.14240312e-04 5.27994002e-04 5.42049760e-04 5.56407572e-04 5.71067423e-04 + 5.86029300e-04 6.01293187e-04 6.16859071e-04 6.32726934e-04 6.48896763e-04 + 6.65368541e-04 6.82142252e-04 6.99217880e-04 7.16595407e-04 7.34274817e-04 + 7.52256092e-04 7.70539216e-04 7.89124169e-04 8.08010934e-04 8.27199493e-04 + 8.46689825e-04 8.66481913e-04 8.86575737e-04 9.06971278e-04 9.27668514e-04 + 9.48667427e-04 9.69967995e-04 9.91570198e-04 1.01347401e-03 1.03567942e-03 + 1.05818640e-03 1.08099493e-03 1.10410498e-03 1.12751654e-03 1.15122957e-03 + 1.17524406e-03 1.19955999e-03 1.22417733e-03 1.24909605e-03 1.27431613e-03 + 1.29983755e-03 1.32566029e-03 1.35178430e-03 1.37820958e-03 1.40493610e-03 + 1.43196382e-03 1.45929272e-03 1.48692278e-03 1.51485397e-03 1.54308626e-03 + 1.57161963e-03 1.60045404e-03 1.62958946e-03 1.65902588e-03 1.68876325e-03 + 1.71880156e-03 1.74914077e-03 1.77978085e-03 1.81072177e-03 1.84196351e-03 + 1.87350602e-03 1.90534929e-03 1.93749327e-03 1.96993795e-03 2.00268328e-03 + 2.03572923e-03 2.06907577e-03 2.10272288e-03 2.13667051e-03 2.17091863e-03 + 2.20546721e-03 2.24031622e-03 2.27546562e-03 2.31091538e-03 2.34666546e-03 + 2.38271583e-03 2.41906645e-03 2.45571729e-03 2.49266831e-03 2.52991947e-03 + 2.56747075e-03 2.60532209e-03 2.64347347e-03 2.68192485e-03 2.72067619e-03 + 2.75972745e-03 2.79907859e-03 2.83872959e-03 2.87868038e-03 2.91893095e-03 + 2.95948125e-03 3.00033123e-03 3.04148087e-03 3.08293011e-03 3.12467892e-03 + 3.16672726e-03 3.20907509e-03 3.25172236e-03 3.29466904e-03 3.33791508e-03 + 3.38146044e-03 3.42530507e-03 3.46944894e-03 3.51389201e-03 3.55863422e-03 + 3.60367554e-03 3.64901591e-03 3.69465531e-03 3.74059367e-03 3.78683096e-03 + 3.83336714e-03 3.88020215e-03 3.92733595e-03 3.97476850e-03 4.02249975e-03 + 4.07052965e-03 4.11885815e-03 4.16748522e-03 4.21641079e-03 4.26563483e-03 + 4.31515728e-03 4.36497811e-03 4.41509725e-03 4.46551466e-03 4.51623029e-03 + 4.56724409e-03 4.61855601e-03 4.67016601e-03 4.72207403e-03 4.77428002e-03 + 4.82678393e-03 4.87958570e-03 4.93268530e-03 4.98608266e-03 5.03977774e-03 + 5.09377048e-03 5.14806083e-03 5.20264873e-03 5.25753414e-03 5.31271700e-03 + 5.36819725e-03 5.42397485e-03 5.48004973e-03 5.53642185e-03 5.59309115e-03 + 5.65005757e-03 5.70732106e-03 5.76488157e-03 5.82273903e-03 5.88089339e-03 + 5.93934459e-03 5.99809258e-03 6.05713731e-03 6.11647870e-03 6.17611671e-03 + 6.23605128e-03 6.29628235e-03 6.35680986e-03 6.41763375e-03 6.47875396e-03 + 6.54017044e-03 6.60188312e-03 6.66389194e-03 6.72619685e-03 6.78879778e-03 + 6.85169468e-03 6.91488748e-03 6.97837611e-03 7.04216053e-03 7.10624066e-03 + 7.17061645e-03 7.23528783e-03 7.30025474e-03 7.36551712e-03 7.43107490e-03 + 7.49692802e-03 7.56307641e-03 7.62952002e-03 7.69625878e-03 7.76329262e-03 + 7.83062147e-03 7.89824528e-03 7.96616398e-03 8.03437750e-03 8.10288577e-03 + 8.17168874e-03 8.24078632e-03 8.31017847e-03 8.37986510e-03 8.44984615e-03 + 8.52012155e-03 8.59069124e-03 8.66155515e-03 8.73271321e-03 8.80416535e-03 + 8.87591149e-03 8.94795158e-03 9.02028554e-03 9.09291331e-03 9.16583480e-03 + 9.23904995e-03 9.31255870e-03 9.38636096e-03 9.46045668e-03 9.53484577e-03 + 9.60952816e-03 9.68450379e-03 9.75977258e-03 9.83533445e-03 9.91118934e-03 + 9.98733717e-03 1.00637779e-02 1.01405114e-02 1.02175376e-02 1.02948564e-02 + 1.03724679e-02 1.04503718e-02 1.05285681e-02 1.06070568e-02 1.06858378e-02 + 1.07649109e-02 1.08442762e-02 1.09239335e-02 1.10038828e-02 1.10841240e-02 + 1.11646570e-02 1.12454817e-02 1.13265980e-02 1.14080060e-02 1.14897054e-02 + 1.15716963e-02 1.16539785e-02 1.17365519e-02 1.18194166e-02 1.19025723e-02 + 1.19860191e-02 1.20697568e-02 1.21537854e-02 1.22381047e-02 1.23227148e-02 + 1.24076155e-02 1.24928067e-02 1.25782883e-02 1.26640604e-02 1.27501227e-02 + 1.28364752e-02 1.29231179e-02 1.30100506e-02 1.30972732e-02 1.31847858e-02 + 1.32725881e-02 1.33606801e-02 1.34490618e-02 1.35377329e-02 1.36266936e-02 + 1.37159436e-02 1.38054829e-02 1.38953113e-02 1.39854289e-02 1.40758355e-02 + 1.41665311e-02 1.42575155e-02 1.43487886e-02 1.44403504e-02 1.45322008e-02 + 1.46243398e-02 1.47167671e-02 1.48094827e-02 1.49024866e-02 1.49957786e-02 + 1.50893587e-02 1.51832267e-02 1.52773826e-02 1.53718263e-02 1.54665577e-02 + 1.55615767e-02 1.56568832e-02 1.57524771e-02 1.58483584e-02 1.59445269e-02 + 1.60409825e-02 1.61377252e-02 1.62347549e-02 1.63320714e-02 1.64296747e-02 + 1.65275647e-02 1.66257413e-02 1.67242043e-02 1.68229538e-02 1.69219896e-02 + 1.70213116e-02 1.71209197e-02 1.72208138e-02 1.73209939e-02 1.74214598e-02 + 1.75222114e-02 1.76232487e-02 1.77245715e-02 1.78261798e-02 1.79280734e-02 + 1.80302523e-02 1.81327163e-02 1.82354654e-02 1.83384994e-02 1.84418184e-02 + 1.85454220e-02 1.86493104e-02 1.87534833e-02 1.88579407e-02 1.89626824e-02 + 1.90677084e-02 1.91730186e-02 1.92786129e-02 1.93844911e-02 1.94906532e-02 + 1.95970991e-02 1.97038286e-02 1.98108417e-02 1.99181382e-02 2.00257182e-02 + 2.01335813e-02 2.02417277e-02 2.03501571e-02 2.04588694e-02 2.05678646e-02 + 2.06771425e-02 2.07867031e-02 2.08965462e-02 2.10066717e-02 2.11170796e-02 + 2.12277697e-02 2.13387419e-02 2.14499962e-02 2.15615323e-02 2.16733503e-02 + 2.17854499e-02 2.18978311e-02 2.20104938e-02 2.21234379e-02 2.22366633e-02 + 2.23501698e-02 2.24639574e-02 2.25780260e-02 2.26923753e-02 2.28070055e-02 + 2.29219162e-02 2.30371074e-02 2.31525791e-02 2.32683311e-02 2.33843632e-02 + 2.35006755e-02 2.36172677e-02 2.37341397e-02 2.38512915e-02 2.39687230e-02 + 2.40864339e-02 2.42044243e-02 2.43226940e-02 2.44412429e-02 2.45600709e-02 + 2.46791779e-02 2.47985637e-02 2.49182282e-02 2.50381714e-02 2.51583931e-02 + 2.52788932e-02 2.53996717e-02 2.55207283e-02 2.56420629e-02 2.57636755e-02 + 2.58855660e-02 2.60077341e-02 2.61301799e-02 2.62529032e-02 2.63759039e-02 + 2.64991818e-02 2.66227368e-02 2.67465689e-02 2.68706779e-02 2.69950637e-02 + 2.71197262e-02 2.72446653e-02 2.73698808e-02 2.74953726e-02 2.76211406e-02 + 2.77471848e-02 2.78735049e-02 2.80001009e-02 2.81269726e-02 2.82541199e-02 + 2.83815427e-02 2.85092409e-02 2.86372144e-02 2.87654630e-02 2.88939867e-02 + 2.90227852e-02 2.91518585e-02 2.92812065e-02 2.94108290e-02 2.95407260e-02 + 2.96708972e-02 2.98013426e-02 2.99320621e-02 3.00630555e-02 3.01943227e-02 + 3.03258636e-02 3.04576781e-02 3.05897660e-02 3.07221272e-02 3.08547616e-02 + 3.09876691e-02 3.11208496e-02 3.12543028e-02 3.13880288e-02 3.15220273e-02 + 3.16562983e-02 3.17908416e-02 3.19256571e-02 3.20607447e-02 3.21961042e-02 + 3.23317356e-02 3.24676386e-02 3.26038132e-02 3.27402593e-02 3.28769766e-02 + 3.30139652e-02 3.31512248e-02 3.32887554e-02 3.34265567e-02 3.35646288e-02 + 3.37029714e-02 3.38415844e-02 3.39804677e-02 3.41196212e-02 3.42590447e-02 + 3.43987381e-02 3.45387013e-02 3.46789341e-02 3.48194365e-02 3.49602082e-02 + 3.51012492e-02 3.52425593e-02 3.53841384e-02 3.55259864e-02 3.56681031e-02 + 3.58104884e-02 3.59531422e-02 3.60960643e-02 3.62392547e-02 3.63827131e-02 + 3.65264394e-02 3.66704335e-02 3.68146954e-02 3.69592247e-02 3.71040215e-02 + 3.72490856e-02 3.73944167e-02 3.75400149e-02 3.76858800e-02 3.78320118e-02 + 3.79784102e-02 3.81250751e-02 3.82720063e-02 3.84192037e-02 3.85666672e-02 + 3.87143966e-02 3.88623918e-02 3.90106526e-02 3.91591790e-02 3.93079707e-02 + 3.94570277e-02 3.96063498e-02 3.97559369e-02 3.99057888e-02 4.00559054e-02 + 4.02062865e-02 4.03569321e-02 4.05078419e-02 4.06590159e-02 4.08104539e-02 + 4.09621558e-02 4.11141214e-02 4.12663506e-02 4.14188432e-02 4.15715991e-02 + 4.17246182e-02 4.18779004e-02 4.20314454e-02 4.21852532e-02 4.23393235e-02 + 4.24936564e-02 4.26482515e-02 4.28031089e-02 4.29582283e-02 4.31136096e-02 + 4.32692526e-02 4.34251573e-02 4.35813234e-02 4.37377508e-02 4.38944395e-02 + 4.40513892e-02 4.42085998e-02 4.43660711e-02 4.45238031e-02 4.46817956e-02 + 4.48400483e-02 4.49985613e-02 4.51573343e-02 4.53163671e-02 4.54756598e-02 + 4.56352120e-02 4.57950237e-02 4.59550947e-02 4.61154249e-02 4.62760141e-02 + 4.64368622e-02 4.65979690e-02 4.67593344e-02 4.69209582e-02 4.70828403e-02 + 4.72449806e-02 4.74073789e-02 4.75700350e-02 4.77329488e-02 4.78961202e-02 + 4.80595489e-02 4.82232350e-02 4.83871781e-02 4.85513782e-02 4.87158351e-02 + 4.88805487e-02 4.90455188e-02 4.92107453e-02 4.93762280e-02 4.95419667e-02 + 4.97079614e-02 4.98742118e-02 5.00407179e-02 5.02074794e-02 5.03744963e-02 + 5.05417683e-02 5.07092953e-02 5.08770772e-02 5.10451138e-02 5.12134049e-02 + 5.13819505e-02 5.15507503e-02 5.17198043e-02 5.18891121e-02 5.20586738e-02 + 5.22284892e-02 5.23985580e-02 5.25688802e-02 5.27394555e-02 5.29102839e-02 + 5.30813652e-02 5.32526992e-02 5.34242858e-02 5.35961248e-02 5.37682161e-02 + 5.39405595e-02 5.41131548e-02 5.42860020e-02 5.44591008e-02 5.46324511e-02 + 5.48060527e-02 5.49799055e-02 5.51540094e-02 5.53283641e-02 5.55029695e-02 + 5.56778255e-02 5.58529319e-02 5.60282885e-02 5.62038952e-02 5.63797519e-02 + 5.65558583e-02 5.67322144e-02 5.69088199e-02 5.70856747e-02 5.72627786e-02 + 5.74401316e-02 5.76177334e-02 5.77955838e-02 5.79736828e-02 5.81520301e-02 + 5.83306256e-02 5.85094691e-02 5.86885605e-02 5.88678997e-02 5.90474864e-02 + 5.92273205e-02 5.94074018e-02 5.95877302e-02 5.97683055e-02 5.99491276e-02 + 6.01301963e-02 6.03115114e-02 6.04930728e-02 6.06748803e-02 6.08569338e-02 + 6.10392330e-02 6.12217779e-02 6.14045683e-02 6.15876039e-02 6.17708848e-02 + 6.19544105e-02 6.21381812e-02 6.23221964e-02 6.25064562e-02 6.26909603e-02 + 6.28757085e-02 6.30607008e-02 6.32459369e-02 6.34314167e-02 6.36171400e-02 + 6.38031067e-02 6.39893165e-02 6.41757694e-02 6.43624651e-02 6.45494036e-02 + 6.47365845e-02 6.49240078e-02 6.51116734e-02 6.52995809e-02 6.54877303e-02 + 6.56761215e-02 6.58647541e-02 6.60536282e-02 6.62427434e-02 6.64320997e-02 + 6.66216969e-02 6.68115348e-02 6.70016132e-02 6.71919320e-02 6.73824910e-02 + 6.75732900e-02 6.77643289e-02 6.79556075e-02 6.81471257e-02 6.83388832e-02 + 6.85308799e-02 6.87231157e-02 6.89155904e-02 6.91083037e-02 6.93012556e-02 + 6.94944458e-02 6.96878742e-02 6.98815407e-02 7.00754450e-02 7.02695870e-02 + 7.04639665e-02 7.06585833e-02 7.08534374e-02 7.10485284e-02 7.12438563e-02 + 7.14394208e-02 7.16352219e-02 7.18312593e-02 7.20275328e-02 7.22240423e-02 + 7.24207876e-02 7.26177686e-02 7.28149851e-02 7.30124368e-02 7.32101237e-02 + 7.34080456e-02 7.36062022e-02 7.38045935e-02 7.40032192e-02 7.42020791e-02 + 7.44011732e-02 7.46005012e-02 7.48000630e-02 7.49998583e-02 7.51998870e-02 + 7.54001490e-02 7.56006441e-02 7.58013720e-02 7.60023326e-02 7.62035258e-02 + 7.64049514e-02 7.66066092e-02 7.68084989e-02 7.70106206e-02 7.72129739e-02 + 7.74155587e-02 7.76183748e-02 7.78214221e-02 7.80247003e-02 7.82282094e-02 + 7.84319490e-02 7.86359192e-02 7.88401196e-02 7.90445501e-02 7.92492105e-02 + 7.94541007e-02 7.96592204e-02 7.98645695e-02 8.00701479e-02 8.02759553e-02 + 8.04819916e-02 8.06882565e-02 8.08947500e-02 8.11014718e-02 8.13084218e-02 + 8.15155998e-02 8.17230055e-02 8.19306389e-02 8.21384998e-02 8.23465879e-02 + 8.25549031e-02 8.27634452e-02 8.29722141e-02 8.31812095e-02 8.33904313e-02 + 8.35998794e-02 8.38095534e-02 8.40194533e-02 8.42295789e-02 8.44399299e-02 + 8.46505063e-02 8.48613078e-02 8.50723343e-02 8.52835855e-02 8.54950613e-02 + 8.57067616e-02 8.59186860e-02 8.61308346e-02 8.63432070e-02 8.65558031e-02 + 8.67686227e-02 8.69816656e-02 8.71949318e-02 8.74084208e-02 8.76221327e-02 + 8.78360672e-02 8.80502241e-02 8.82646033e-02 8.84792045e-02 8.86940276e-02 + 8.89090725e-02 8.91243388e-02 8.93398265e-02 8.95555354e-02 8.97714652e-02 + 8.99876159e-02 9.02039871e-02 9.04205788e-02 9.06373908e-02 9.08544228e-02 + 9.10716747e-02 9.12891463e-02 9.15068374e-02 9.17247478e-02 9.19428774e-02 + 9.21612260e-02 9.23797934e-02 9.25985793e-02 9.28175837e-02 9.30368064e-02 + 9.32562470e-02 9.34759056e-02 9.36957818e-02 9.39158756e-02 9.41361866e-02 + 9.43567148e-02 9.45774599e-02 9.47984219e-02 9.50196003e-02 9.52409952e-02 + 9.54626063e-02 9.56844334e-02 9.59064764e-02 9.61287350e-02 9.63512090e-02 + 9.65738984e-02 9.67968029e-02 9.70199222e-02 9.72432563e-02 9.74668050e-02 + 9.76905680e-02 9.79145452e-02 9.81387363e-02 9.83631413e-02 9.85877598e-02 + 9.88125918e-02 9.90376370e-02 9.92628953e-02 9.94883665e-02 9.97140503e-02 + 9.99399466e-02 1.00166055e-01 1.00392376e-01 1.00618909e-01 1.00845653e-01 + 1.01072609e-01 1.01299776e-01 1.01527155e-01 1.01754744e-01 1.01982545e-01 + 1.02210556e-01 1.02438777e-01 1.02667209e-01 1.02895850e-01 1.03124702e-01 + 1.03353763e-01 1.03583034e-01 1.03812514e-01 1.04042203e-01 1.04272101e-01 + 1.04502207e-01 1.04732523e-01 1.04963046e-01 1.05193778e-01 1.05424718e-01 + 1.05655865e-01 1.05887221e-01 1.06118783e-01 1.06350553e-01 1.06582530e-01 + 1.06814713e-01 1.07047104e-01 1.07279701e-01 1.07512504e-01 1.07745513e-01 + 1.07978728e-01 1.08212148e-01 1.08445775e-01 1.08679606e-01 1.08913643e-01 + 1.09147884e-01 1.09382331e-01 1.09616982e-01 1.09851837e-01 1.10086896e-01 + 1.10322160e-01 1.10557627e-01 1.10793298e-01 1.11029172e-01 1.11265249e-01 + 1.11501530e-01 1.11738013e-01 1.11974699e-01 1.12211587e-01 1.12448678e-01 + 1.12685971e-01 1.12923465e-01 1.13161162e-01 1.13399059e-01 1.13637158e-01 + 1.13875458e-01 1.14113960e-01 1.14352661e-01 1.14591564e-01 1.14830666e-01 + 1.15069969e-01 1.15309472e-01 1.15549174e-01 1.15789076e-01 1.16029178e-01 + 1.16269478e-01 1.16509978e-01 1.16750676e-01 1.16991573e-01 1.17232669e-01 + 1.17473962e-01 1.17715454e-01 1.17957143e-01 1.18199030e-01 1.18441115e-01 + 1.18683397e-01 1.18925875e-01 1.19168551e-01 1.19411423e-01 1.19654492e-01 + 1.19897757e-01 1.20141218e-01 1.20384875e-01 1.20628728e-01 1.20872776e-01 + 1.21117020e-01 1.21361458e-01 1.21606092e-01 1.21850920e-01 1.22095943e-01 + 1.22341160e-01 1.22586571e-01 1.22832176e-01 1.23077975e-01 1.23323967e-01 + 1.23570153e-01 1.23816532e-01 1.24063104e-01 1.24309869e-01 1.24556826e-01 + 1.24803975e-01 1.25051317e-01 1.25298851e-01 1.25546576e-01 1.25794494e-01 + 1.26042602e-01 1.26290902e-01 1.26539393e-01 1.26788074e-01 1.27036946e-01 + 1.27286009e-01 1.27535261e-01 1.27784704e-01 1.28034337e-01 1.28284159e-01 + 1.28534171e-01 1.28784372e-01 1.29034762e-01 1.29285340e-01 1.29536108e-01 + 1.29787064e-01 1.30038208e-01 1.30289540e-01 1.30541060e-01 1.30792768e-01 + 1.31044663e-01 1.31296746e-01 1.31549015e-01 1.31801471e-01 1.32054115e-01 + 1.32306944e-01 1.32559960e-01 1.32813162e-01 1.33066550e-01 1.33320123e-01 + 1.33573882e-01 1.33827826e-01 1.34081956e-01 1.34336270e-01 1.34590769e-01 + 1.34845452e-01 1.35100320e-01 1.35355372e-01 1.35610608e-01 1.35866027e-01 + 1.36121630e-01 1.36377417e-01 1.36633386e-01 1.36889538e-01 1.37145873e-01 + 1.37402391e-01 1.37659091e-01 1.37915973e-01 1.38173037e-01 1.38430283e-01 + 1.38687710e-01 1.38945318e-01 1.39203108e-01 1.39461079e-01 1.39719230e-01 + 1.39977562e-01 1.40236074e-01 1.40494766e-01 1.40753639e-01 1.41012691e-01 + 1.41271922e-01 1.41531333e-01 1.41790923e-01 1.42050692e-01 1.42310640e-01 + 1.42570766e-01 1.42831071e-01 1.43091554e-01 1.43352214e-01 1.43613053e-01 + 1.43874069e-01 1.44135262e-01 1.44396633e-01 1.44658180e-01 1.44919904e-01 + 1.45181805e-01 1.45443882e-01 1.45706135e-01 1.45968565e-01 1.46231170e-01 + 1.46493950e-01 1.46756906e-01 1.47020037e-01 1.47283343e-01 1.47546824e-01 + 1.47810479e-01 1.48074308e-01 1.48338312e-01 1.48602490e-01 1.48866841e-01 + 1.49131366e-01 1.49396065e-01 1.49660936e-01 1.49925981e-01 1.50191198e-01 + 1.50456588e-01 1.50722150e-01 1.50987884e-01 1.51253790e-01 1.51519868e-01 + 1.51786118e-01 1.52052539e-01 1.52319131e-01 1.52585894e-01 1.52852827e-01 + 1.53119932e-01 1.53387206e-01 1.53654651e-01 1.53922266e-01 1.54190050e-01 + 1.54458004e-01 1.54726127e-01 1.54994420e-01 1.55262881e-01 1.55531511e-01 + 1.55800310e-01 1.56069277e-01 1.56338412e-01 1.56607715e-01 1.56877186e-01 + 1.57146824e-01 1.57416630e-01 1.57686603e-01 1.57956743e-01 1.58227049e-01 + 1.58497522e-01 1.58768161e-01 1.59038967e-01 1.59309938e-01 1.59581075e-01 + 1.59852378e-01 1.60123846e-01 1.60395479e-01 1.60667277e-01 1.60939240e-01 + 1.61211367e-01 1.61483659e-01 1.61756114e-01 1.62028734e-01 1.62301517e-01 + 1.62574464e-01 1.62847574e-01 1.63120847e-01 1.63394283e-01 1.63667882e-01 + 1.63941644e-01 1.64215567e-01 1.64489653e-01 1.64763901e-01 1.65038310e-01 + 1.65312881e-01 1.65587613e-01 1.65862506e-01 1.66137560e-01 1.66412775e-01 + 1.66688150e-01 1.66963686e-01 1.67239381e-01 1.67515237e-01 1.67791252e-01 + 1.68067427e-01 1.68343761e-01 1.68620254e-01 1.68896906e-01 1.69173717e-01 + 1.69450686e-01 1.69727813e-01 1.70005098e-01 1.70282542e-01 1.70560143e-01 + 1.70837901e-01 1.71115817e-01 1.71393889e-01 1.71672119e-01 1.71950505e-01 + 1.72229048e-01 1.72507747e-01 1.72786602e-01 1.73065613e-01 1.73344779e-01 + 1.73624101e-01 1.73903579e-01 1.74183211e-01 1.74462998e-01 1.74742940e-01 + 1.75023036e-01 1.75303286e-01 1.75583691e-01 1.75864249e-01 1.76144961e-01 + 1.76425826e-01 1.76706845e-01 1.76988017e-01 1.77269341e-01 1.77550818e-01 + 1.77832448e-01 1.78114229e-01 1.78396163e-01 1.78678248e-01 1.78960486e-01 + 1.79242874e-01 1.79525414e-01 1.79808105e-01 1.80090946e-01 1.80373938e-01 + 1.80657081e-01 1.80940374e-01 1.81223816e-01 1.81507409e-01 1.81791151e-01 + 1.82075043e-01 1.82359084e-01 1.82643273e-01 1.82927612e-01 1.83212099e-01 + 1.83496734e-01 1.83781518e-01 1.84066450e-01 1.84351529e-01 1.84636756e-01 + 1.84922131e-01 1.85207652e-01 1.85493321e-01 1.85779136e-01 1.86065098e-01 + 1.86351206e-01 1.86637461e-01 1.86923861e-01 1.87210407e-01 1.87497099e-01 + 1.87783936e-01 1.88070919e-01 1.88358046e-01 1.88645318e-01 1.88932734e-01 + 1.89220295e-01 1.89508000e-01 1.89795849e-01 1.90083842e-01 1.90371978e-01 + 1.90660258e-01 1.90948681e-01 1.91237246e-01 1.91525955e-01 1.91814806e-01 + 1.92103799e-01 1.92392935e-01 1.92682212e-01 1.92971631e-01 1.93261192e-01 + 1.93550894e-01 1.93840737e-01 1.94130721e-01 1.94420846e-01 1.94711111e-01 + 1.95001517e-01 1.95292063e-01 1.95582748e-01 1.95873574e-01 1.96164539e-01 + 1.96455643e-01 1.96746886e-01 1.97038269e-01 1.97329790e-01 1.97621449e-01 + 1.97913247e-01 1.98205183e-01 1.98497257e-01 1.98789469e-01 1.99081818e-01 + 1.99374304e-01 1.99666928e-01 1.99959688e-01 2.00252585e-01 2.00545619e-01 + 2.00838789e-01 2.01132095e-01 2.01425537e-01 2.01719114e-01 2.02012828e-01 + 2.02306676e-01 2.02600660e-01 2.02894778e-01 2.03189031e-01 2.03483419e-01 + 2.03777941e-01 2.04072597e-01 2.04367387e-01 2.04662311e-01 2.04957368e-01 + 2.05252558e-01 2.05547882e-01 2.05843338e-01 2.06138928e-01 2.06434649e-01 + 2.06730503e-01 2.07026489e-01 2.07322607e-01 2.07618857e-01 2.07915238e-01 + 2.08211750e-01 2.08508394e-01 2.08805168e-01 2.09102073e-01 2.09399109e-01 + 2.09696275e-01 2.09993571e-01 2.10290997e-01 2.10588552e-01 2.10886237e-01 + 2.11184052e-01 2.11481995e-01 2.11780068e-01 2.12078269e-01 2.12376598e-01 + 2.12675056e-01 2.12973642e-01 2.13272356e-01 2.13571197e-01 2.13870166e-01 + 2.14169263e-01 2.14468486e-01 2.14767837e-01 2.15067314e-01 2.15366917e-01 + 2.15666647e-01 2.15966503e-01 2.16266485e-01 2.16566592e-01 2.16866825e-01 + 2.17167184e-01 2.17467667e-01 2.17768276e-01 2.18069009e-01 2.18369866e-01 + 2.18670848e-01 2.18971954e-01 2.19273184e-01 2.19574538e-01 2.19876015e-01 + 2.20177615e-01 2.20479339e-01 2.20781185e-01 2.21083155e-01 2.21385246e-01 + 2.21687460e-01 2.21989797e-01 2.22292255e-01 2.22594835e-01 2.22897536e-01 + 2.23200359e-01 2.23503303e-01 2.23806367e-01 2.24109553e-01 2.24412859e-01 + 2.24716285e-01 2.25019832e-01 2.25323498e-01 2.25627285e-01 2.25931191e-01 + 2.26235216e-01 2.26539360e-01 2.26843623e-01 2.27148005e-01 2.27452506e-01 + 2.27757125e-01 2.28061862e-01 2.28366717e-01 2.28671690e-01 2.28976780e-01 + 2.29281988e-01 2.29587313e-01 2.29892755e-01 2.30198313e-01 2.30503989e-01 + 2.30809780e-01 2.31115688e-01 2.31421712e-01 2.31727852e-01 2.32034107e-01 + 2.32340478e-01 2.32646964e-01 2.32953565e-01 2.33260280e-01 2.33567111e-01 + 2.33874055e-01 2.34181114e-01 2.34488287e-01 2.34795574e-01 2.35102975e-01 + 2.35410489e-01 2.35718116e-01 2.36025856e-01 2.36333709e-01 2.36641675e-01 + 2.36949753e-01 2.37257943e-01 2.37566246e-01 2.37874660e-01 2.38183186e-01 + 2.38491824e-01 2.38800572e-01 2.39109432e-01 2.39418403e-01 2.39727484e-01 + 2.40036676e-01 2.40345978e-01 2.40655391e-01 2.40964913e-01 2.41274545e-01 + 2.41584286e-01 2.41894137e-01 2.42204097e-01 2.42514166e-01 2.42824344e-01 + 2.43134630e-01 2.43445024e-01 2.43755527e-01 2.44066138e-01 2.44376856e-01 + 2.44687682e-01 2.44998615e-01 2.45309656e-01 2.45620803e-01 2.45932058e-01 + 2.46243419e-01 2.46554886e-01 2.46866459e-01 2.47178139e-01 2.47489924e-01 + 2.47801815e-01 2.48113812e-01 2.48425913e-01 2.48738120e-01 2.49050431e-01 + 2.49362848e-01 2.49675368e-01 2.49987993e-01 2.50300722e-01 2.50613555e-01 + 2.50926492e-01 2.51239532e-01 2.51552675e-01 2.51865922e-01 2.52179271e-01 + 2.52492723e-01 2.52806278e-01 2.53119935e-01 2.53433694e-01 2.53747555e-01 + 2.54061518e-01 2.54375582e-01 2.54689748e-01 2.55004015e-01 2.55318383e-01 + 2.55632851e-01 2.55947421e-01 2.56262090e-01 2.56576860e-01 2.56891730e-01 + 2.57206700e-01 2.57521770e-01 2.57836938e-01 2.58152207e-01 2.58467574e-01 + 2.58783040e-01 2.59098605e-01 2.59414268e-01 2.59730029e-01 2.60045889e-01 + 2.60361847e-01 2.60677902e-01 2.60994055e-01 2.61310305e-01 2.61626652e-01 + 2.61943096e-01 2.62259637e-01 2.62576275e-01 2.62893009e-01 2.63209839e-01 + 2.63526765e-01 2.63843787e-01 2.64160905e-01 2.64478118e-01 2.64795426e-01 + 2.65112830e-01 2.65430328e-01 2.65747921e-01 2.66065608e-01 2.66383390e-01 + 2.66701265e-01 2.67019235e-01 2.67337298e-01 2.67655455e-01 2.67973706e-01 + 2.68292049e-01 2.68610485e-01 2.68929014e-01 2.69247636e-01 2.69566350e-01 + 2.69885156e-01 2.70204055e-01 2.70523045e-01 2.70842127e-01 2.71161300e-01 + 2.71480564e-01 2.71799920e-01 2.72119366e-01 2.72438903e-01 2.72758531e-01 + 2.73078249e-01 2.73398057e-01 2.73717955e-01 2.74037942e-01 2.74358019e-01 + 2.74678186e-01 2.74998442e-01 2.75318787e-01 2.75639220e-01 2.75959743e-01 + 2.76280353e-01 2.76601052e-01 2.76921839e-01 2.77242714e-01 2.77563676e-01 + 2.77884726e-01 2.78205864e-01 2.78527088e-01 2.78848399e-01 2.79169798e-01 + 2.79491282e-01 2.79812853e-01 2.80134510e-01 2.80456254e-01 2.80778083e-01 + 2.81099997e-01 2.81421997e-01 2.81744083e-01 2.82066253e-01 2.82388508e-01 + 2.82710848e-01 2.83033273e-01 2.83355782e-01 2.83678374e-01 2.84001051e-01 + 2.84323812e-01 2.84646656e-01 2.84969584e-01 2.85292594e-01 2.85615688e-01 + 2.85938865e-01 2.86262124e-01 2.86585466e-01 2.86908890e-01 2.87232396e-01 + 2.87555984e-01 2.87879654e-01 2.88203405e-01 2.88527238e-01 2.88851152e-01 + 2.89175147e-01 2.89499222e-01 2.89823378e-01 2.90147615e-01 2.90471932e-01 + 2.90796329e-01 2.91120806e-01 2.91445362e-01 2.91769999e-01 2.92094714e-01 + 2.92419508e-01 2.92744382e-01 2.93069334e-01 2.93394365e-01 2.93719474e-01 + 2.94044662e-01 2.94369927e-01 2.94695271e-01 2.95020692e-01 2.95346191e-01 + 2.95671767e-01 2.95997420e-01 2.96323150e-01 2.96648956e-01 2.96974840e-01 + 2.97300799e-01 2.97626835e-01 2.97952947e-01 2.98279135e-01 2.98605399e-01 + 2.98931738e-01 2.99258152e-01 2.99584642e-01 2.99911206e-01 3.00237845e-01 + 3.00564559e-01 3.00891347e-01 3.01218209e-01 3.01545146e-01 3.01872156e-01 + 3.02199240e-01 3.02526398e-01 3.02853628e-01 3.03180932e-01 3.03508309e-01 + 3.03835759e-01 3.04163281e-01 3.04490876e-01 3.04818543e-01 3.05146281e-01 + 3.05474092e-01 3.05801975e-01 3.06129929e-01 3.06457954e-01 3.06786051e-01 + 3.07114218e-01 3.07442456e-01 3.07770765e-01 3.08099145e-01 3.08427594e-01 + 3.08756114e-01 3.09084703e-01 3.09413363e-01 3.09742091e-01 3.10070890e-01 + 3.10399757e-01 3.10728693e-01 3.11057699e-01 3.11386772e-01 3.11715915e-01 + 3.12045125e-01 3.12374404e-01 3.12703751e-01 3.13033165e-01 3.13362647e-01 + 3.13692197e-01 3.14021813e-01 3.14351497e-01 3.14681248e-01 3.15011065e-01 + 3.15340949e-01 3.15670899e-01 3.16000915e-01 3.16330997e-01 3.16661145e-01 + 3.16991359e-01 3.17321638e-01 3.17651983e-01 3.17982392e-01 3.18312867e-01 + 3.18643406e-01 3.18974010e-01 3.19304678e-01 3.19635411e-01 3.19966207e-01 + 3.20297067e-01 3.20627992e-01 3.20958979e-01 3.21290030e-01 3.21621144e-01 + 3.21952321e-01 3.22283561e-01 3.22614864e-01 3.22946229e-01 3.23277656e-01 + 3.23609146e-01 3.23940697e-01 3.24272310e-01 3.24603985e-01 3.24935721e-01 + 3.25267519e-01 3.25599377e-01 3.25931297e-01 3.26263277e-01 3.26595317e-01 + 3.26927419e-01 3.27259580e-01 3.27591801e-01 3.27924082e-01 3.28256423e-01 + 3.28588824e-01 3.28921283e-01 3.29253802e-01 3.29586380e-01 3.29919017e-01 + 3.30251712e-01 3.30584466e-01 3.30917278e-01 3.31250149e-01 3.31583077e-01 + 3.31916063e-01 3.32249107e-01 3.32582208e-01 3.32915366e-01 3.33248582e-01 + 3.33581854e-01 3.33915183e-01 3.34248569e-01 3.34582011e-01 3.34915510e-01 + 3.35249064e-01 3.35582675e-01 3.35916341e-01 3.36250062e-01 3.36583839e-01 + 3.36917672e-01 3.37251559e-01 3.37585501e-01 3.37919498e-01 3.38253550e-01 + 3.38587656e-01 3.38921816e-01 3.39256030e-01 3.39590298e-01 3.39924620e-01 + 3.40258995e-01 3.40593423e-01 3.40927905e-01 3.41262440e-01 3.41597027e-01 + 3.41931667e-01 3.42266360e-01 3.42601105e-01 3.42935903e-01 3.43270752e-01 + 3.43605653e-01 3.43940606e-01 3.44275610e-01 3.44610666e-01 3.44945772e-01 + 3.45280930e-01 3.45616139e-01 3.45951398e-01 3.46286708e-01 3.46622068e-01 + 3.46957478e-01 3.47292938e-01 3.47628448e-01 3.47964008e-01 3.48299617e-01 + 3.48635275e-01 3.48970983e-01 3.49306740e-01 3.49642545e-01 3.49978399e-01 + 3.50314302e-01 3.50650253e-01 3.50986252e-01 3.51322299e-01 3.51658394e-01 + 3.51994536e-01 3.52330726e-01 3.52666964e-01 3.53003248e-01 3.53339580e-01 + 3.53675958e-01 3.54012383e-01 3.54348855e-01 3.54685373e-01 3.55021937e-01 + 3.55358547e-01 3.55695203e-01 3.56031904e-01 3.56368651e-01 3.56705444e-01 + 3.57042281e-01 3.57379164e-01 3.57716092e-01 3.58053064e-01 3.58390081e-01 + 3.58727142e-01 3.59064247e-01 3.59401397e-01 3.59738590e-01 3.60075827e-01 + 3.60413107e-01 3.60750431e-01 3.61087799e-01 3.61425209e-01 3.61762662e-01 + 3.62100158e-01 3.62437696e-01 3.62775277e-01 3.63112900e-01 3.63450566e-01 + 3.63788273e-01 3.64126022e-01 3.64463812e-01 3.64801645e-01 3.65139518e-01 + 3.65477432e-01 3.65815388e-01 3.66153384e-01 3.66491421e-01 3.66829498e-01 + 3.67167616e-01 3.67505774e-01 3.67843971e-01 3.68182209e-01 3.68520487e-01 + 3.68858803e-01 3.69197160e-01 3.69535555e-01 3.69873990e-01 3.70212463e-01 + 3.70550975e-01 3.70889526e-01 3.71228115e-01 3.71566742e-01 3.71905408e-01 + 3.72244111e-01 3.72582852e-01 3.72921631e-01 3.73260447e-01 3.73599300e-01 + 3.73938191e-01 3.74277119e-01 3.74616083e-01 3.74955084e-01 3.75294122e-01 + 3.75633196e-01 3.75972306e-01 3.76311452e-01 3.76650634e-01 3.76989852e-01 + 3.77329105e-01 3.77668394e-01 3.78007718e-01 3.78347077e-01 3.78686471e-01 + 3.79025899e-01 3.79365363e-01 3.79704861e-01 3.80044393e-01 3.80383959e-01 + 3.80723559e-01 3.81063194e-01 3.81402861e-01 3.81742563e-01 3.82082298e-01 + 3.82422065e-01 3.82761866e-01 3.83101700e-01 3.83441567e-01 3.83781466e-01 + 3.84121398e-01 3.84461362e-01 3.84801358e-01 3.85141386e-01 3.85481446e-01 + 3.85821538e-01 3.86161661e-01 3.86501816e-01 3.86842001e-01 3.87182218e-01 + 3.87522466e-01 3.87862744e-01 3.88203053e-01 3.88543393e-01 3.88883763e-01 + 3.89224162e-01 3.89564592e-01 3.89905052e-01 3.90245541e-01 3.90586060e-01 + 3.90926609e-01 3.91267186e-01 3.91607793e-01 3.91948428e-01 3.92289093e-01 + 3.92629785e-01 3.92970507e-01 3.93311256e-01 3.93652034e-01 3.93992840e-01 + 3.94333674e-01 3.94674535e-01 3.95015424e-01 3.95356341e-01 3.95697284e-01 + 3.96038255e-01 3.96379253e-01 3.96720277e-01 3.97061328e-01 3.97402406e-01 + 3.97743510e-01 3.98084640e-01 3.98425796e-01 3.98766978e-01 3.99108186e-01 + 3.99449420e-01 3.99790679e-01 4.00131963e-01 4.00473272e-01 4.00814607e-01 + 4.01155966e-01 4.01497350e-01 4.01838759e-01 4.02180192e-01 4.02521649e-01 + 4.02863130e-01 4.03204636e-01 4.03546165e-01 4.03887718e-01 4.04229294e-01 + 4.04570894e-01 4.04912517e-01 4.05254163e-01 4.05595832e-01 4.05937524e-01 + 4.06279238e-01 4.06620975e-01 4.06962734e-01 4.07304516e-01 4.07646319e-01 + 4.07988145e-01 4.08329992e-01 4.08671861e-01 4.09013751e-01 4.09355663e-01 + 4.09697596e-01 4.10039549e-01 4.10381524e-01 4.10723520e-01 4.11065536e-01 + 4.11407572e-01 4.11749629e-01 4.12091706e-01 4.12433803e-01 4.12775920e-01 + 4.13118057e-01 4.13460213e-01 4.13802389e-01 4.14144583e-01 4.14486798e-01 + 4.14829031e-01 4.15171283e-01 4.15513553e-01 4.15855843e-01 4.16198150e-01 + 4.16540476e-01 4.16882821e-01 4.17225183e-01 4.17567563e-01 4.17909961e-01 + 4.18252376e-01 4.18594809e-01 4.18937259e-01 4.19279726e-01 4.19622210e-01 + 4.19964711e-01 4.20307229e-01 4.20649763e-01 4.20992314e-01 4.21334881e-01 + 4.21677465e-01 4.22020064e-01 4.22362679e-01 4.22705310e-01 4.23047957e-01 + 4.23390619e-01 4.23733296e-01 4.24075988e-01 4.24418696e-01 4.24761418e-01 + 4.25104155e-01 4.25446907e-01 4.25789673e-01 4.26132454e-01 4.26475249e-01 + 4.26818057e-01 4.27160880e-01 4.27503717e-01 4.27846567e-01 4.28189430e-01 + 4.28532307e-01 4.28875197e-01 4.29218101e-01 4.29561017e-01 4.29903946e-01 + 4.30246888e-01 4.30589842e-01 4.30932808e-01 4.31275787e-01 4.31618778e-01 + 4.31961781e-01 4.32304796e-01 4.32647822e-01 4.32990860e-01 4.33333909e-01 + 4.33676970e-01 4.34020042e-01 4.34363125e-01 4.34706219e-01 4.35049323e-01 + 4.35392438e-01 4.35735564e-01 4.36078700e-01 4.36421846e-01 4.36765002e-01 + 4.37108168e-01 4.37451344e-01 4.37794529e-01 4.38137724e-01 4.38480929e-01 + 4.38824142e-01 4.39167365e-01 4.39510597e-01 4.39853837e-01 4.40197087e-01 + 4.40540345e-01 4.40883611e-01 4.41226885e-01 4.41570168e-01 4.41913459e-01 + 4.42256758e-01 4.42600064e-01 4.42943378e-01 4.43286700e-01 4.43630029e-01 + 4.43973365e-01 4.44316708e-01 4.44660058e-01 4.45003416e-01 4.45346779e-01 + 4.45690150e-01 4.46033526e-01 4.46376910e-01 4.46720299e-01 4.47063694e-01 + 4.47407095e-01 4.47750502e-01 4.48093915e-01 4.48437333e-01 4.48780757e-01 + 4.49124185e-01 4.49467619e-01 4.49811058e-01 4.50154502e-01 4.50497950e-01 + 4.50841403e-01 4.51184861e-01 4.51528322e-01 4.51871788e-01 4.52215259e-01 + 4.52558733e-01 4.52902210e-01 4.53245692e-01 4.53589177e-01 4.53932665e-01 + 4.54276157e-01 4.54619652e-01 4.54963150e-01 4.55306651e-01 4.55650154e-01 + 1.03953624e+00 1.03772749e+00 1.03592023e+00 1.03411445e+00 1.03231016e+00 + 1.03050735e+00 1.02870603e+00 1.02690620e+00 1.02510785e+00 1.02331100e+00 + 1.02151562e+00 1.01972174e+00 1.01792935e+00 1.01613844e+00 1.01434902e+00 + 1.01256110e+00 1.01077466e+00 1.00898971e+00 1.00720626e+00 1.00542429e+00 + 1.00364382e+00 1.00186484e+00 1.00008735e+00 9.98311355e-01 9.96536852e-01 + 9.94763842e-01 9.92992326e-01 9.91222304e-01 9.89453777e-01 9.87686744e-01 + 9.85921207e-01 9.84157165e-01 9.82394619e-01 9.80633570e-01 9.78874017e-01 + 9.77115962e-01 9.75359404e-01 9.73604344e-01 9.71850782e-01 9.70098719e-01 + 9.68348155e-01 9.66599090e-01 9.64851525e-01 9.63105460e-01 9.61360895e-01 + 9.59617832e-01 9.57876269e-01 9.56136208e-01 9.54397649e-01 9.52660593e-01 + 9.50925039e-01 9.49190988e-01 9.47458441e-01 9.45727397e-01 9.43997858e-01 + 9.42269823e-01 9.40543293e-01 9.38818268e-01 9.37094749e-01 9.35372736e-01 + 9.33652230e-01 9.31933230e-01 9.30215737e-01 9.28499752e-01 9.26785274e-01 + 9.25072305e-01 9.23360844e-01 9.21650893e-01 9.19942450e-01 9.18235517e-01 + 9.16530094e-01 9.14826182e-01 9.13123780e-01 9.11422890e-01 9.09723511e-01 + 9.08025644e-01 9.06329289e-01 9.04634446e-01 9.02941117e-01 9.01249300e-01 + 8.99558998e-01 8.97870209e-01 8.96182935e-01 8.94497176e-01 8.92812931e-01 + 8.91130202e-01 8.89448989e-01 8.87769292e-01 8.86091112e-01 8.84414448e-01 + 8.82739302e-01 8.81065673e-01 8.79393562e-01 8.77722970e-01 8.76053896e-01 + 8.74386341e-01 8.72720306e-01 8.71055790e-01 8.69392795e-01 8.67731320e-01 + 8.66071366e-01 8.64412932e-01 8.62756021e-01 8.61100631e-01 8.59446764e-01 + 8.57794419e-01 8.56143597e-01 8.54494298e-01 8.52846523e-01 8.51200272e-01 + 8.49555545e-01 8.47912343e-01 8.46270666e-01 8.44630515e-01 8.42991889e-01 + 8.41354789e-01 8.39719216e-01 8.38085170e-01 8.36452650e-01 8.34821658e-01 + 8.33192195e-01 8.31564259e-01 8.29937852e-01 8.28312973e-01 8.26689624e-01 + 8.25067805e-01 8.23447515e-01 8.21828756e-01 8.20211528e-01 8.18595830e-01 + 8.16981664e-01 8.15369029e-01 8.13757927e-01 8.12148357e-01 8.10540319e-01 + 8.08933815e-01 8.07328844e-01 8.05725406e-01 8.04123503e-01 8.02523135e-01 + 8.00924301e-01 7.99327002e-01 7.97731239e-01 7.96137011e-01 7.94544320e-01 + 7.92953165e-01 7.91363547e-01 7.89775466e-01 7.88188923e-01 7.86603918e-01 + 7.85020450e-01 7.83438522e-01 7.81858132e-01 7.80279281e-01 7.78701970e-01 + 7.77126199e-01 7.75551968e-01 7.73979278e-01 7.72408129e-01 7.70838521e-01 + 7.69270454e-01 7.67703930e-01 7.66138947e-01 7.64575508e-01 7.63013611e-01 + 7.61453258e-01 7.59894448e-01 7.58337182e-01 7.56781460e-01 7.55227283e-01 + 7.53674651e-01 7.52123565e-01 7.50574024e-01 7.49026029e-01 7.47479580e-01 + 7.45934678e-01 7.44391322e-01 7.42849514e-01 7.41309254e-01 7.39770542e-01 + 7.38233378e-01 7.36697762e-01 7.35163696e-01 7.33631179e-01 7.32100211e-01 + 7.30570794e-01 7.29042926e-01 7.27516610e-01 7.25991844e-01 7.24468629e-01 + 7.22946966e-01 7.21426855e-01 7.19908297e-01 7.18391291e-01 7.16875837e-01 + 7.15361937e-01 7.13849591e-01 7.12338798e-01 7.10829560e-01 7.09321876e-01 + 7.07815747e-01 7.06311174e-01 7.04808155e-01 7.03306693e-01 7.01806787e-01 + 7.00308437e-01 6.98811644e-01 6.97316408e-01 6.95822730e-01 6.94330610e-01 + 6.92840047e-01 6.91351043e-01 6.89863598e-01 6.88377712e-01 6.86893385e-01 + 6.85410618e-01 6.83929411e-01 6.82449765e-01 6.80971679e-01 6.79495154e-01 + 6.78020190e-01 6.76546789e-01 6.75074949e-01 6.73604671e-01 6.72135956e-01 + 6.70668804e-01 6.69203215e-01 6.67739189e-01 6.66276728e-01 6.64815830e-01 + 6.63356498e-01 6.61898730e-01 6.60442527e-01 6.58987889e-01 6.57534818e-01 + 6.56083312e-01 6.54633373e-01 6.53185001e-01 6.51738195e-01 6.50292957e-01 + 6.48849287e-01 6.47407184e-01 6.45966650e-01 6.44527685e-01 6.43090288e-01 + 6.41654460e-01 6.40220202e-01 6.38787514e-01 6.37356396e-01 6.35926849e-01 + 6.34498872e-01 6.33072467e-01 6.31647633e-01 6.30224370e-01 6.28802680e-01 + 6.27382561e-01 6.25964016e-01 6.24547043e-01 6.23131644e-01 6.21717818e-01 + 6.20305566e-01 6.18894889e-01 6.17485785e-01 6.16078257e-01 6.14672303e-01 + 6.13267925e-01 6.11865123e-01 6.10463897e-01 6.09064247e-01 6.07666173e-01 + 6.06269677e-01 6.04874758e-01 6.03481416e-01 6.02089652e-01 6.00699467e-01 + 5.99310859e-01 5.97923831e-01 5.96538381e-01 5.95154511e-01 5.93772221e-01 + 5.92391510e-01 5.91012380e-01 5.89634830e-01 5.88258861e-01 5.86884473e-01 + 5.85511667e-01 5.84140442e-01 5.82770800e-01 5.81402740e-01 5.80036262e-01 + 5.78671367e-01 5.77308056e-01 5.75946328e-01 5.74586184e-01 5.73227624e-01 + 5.71870649e-01 5.70515258e-01 5.69161453e-01 5.67809232e-01 5.66458597e-01 + 5.65109548e-01 5.63762086e-01 5.62416210e-01 5.61071920e-01 5.59729218e-01 + 5.58388103e-01 5.57048576e-01 5.55710636e-01 5.54374285e-01 5.53039523e-01 + 5.51706349e-01 5.50374764e-01 5.49044769e-01 5.47716364e-01 5.46389548e-01 + 5.45064323e-01 5.43740689e-01 5.42418645e-01 5.41098192e-01 5.39779331e-01 + 5.38462062e-01 5.37146385e-01 5.35832299e-01 5.34519807e-01 5.33208907e-01 + 5.31899601e-01 5.30591888e-01 5.29285769e-01 5.27981244e-01 5.26678313e-01 + 5.25376977e-01 5.24077235e-01 5.22779089e-01 5.21482538e-01 5.20187583e-01 + 5.18894224e-01 5.17602461e-01 5.16312295e-01 5.15023726e-01 5.13736754e-01 + 5.12451379e-01 5.11167602e-01 5.09885423e-01 5.08604843e-01 5.07325861e-01 + 5.06048477e-01 5.04772693e-01 5.03498508e-01 5.02225923e-01 5.00954938e-01 + 4.99685553e-01 4.98417769e-01 4.97151585e-01 4.95887003e-01 4.94624021e-01 + 4.93362642e-01 4.92102864e-01 4.90844689e-01 4.89588116e-01 4.88333145e-01 + 4.87079778e-01 4.85828014e-01 4.84577853e-01 4.83329297e-01 4.82082344e-01 + 4.80836996e-01 4.79593252e-01 4.78351114e-01 4.77110580e-01 4.75871652e-01 + 4.74634330e-01 4.73398614e-01 4.72164504e-01 4.70932001e-01 4.69701104e-01 + 4.68471815e-01 4.67244132e-01 4.66018058e-01 4.64793591e-01 4.63570733e-01 + 4.62349483e-01 4.61129842e-01 4.59911810e-01 4.58695387e-01 4.57480573e-01 + 4.56267369e-01 4.55055776e-01 4.53845792e-01 4.52637419e-01 4.51430658e-01 + 4.50225507e-01 4.49021967e-01 4.47820039e-01 4.46619724e-01 4.45421020e-01 + 4.44223928e-01 4.43028450e-01 4.41834584e-01 4.40642332e-01 4.39451693e-01 + 4.38262668e-01 4.37075256e-01 4.35889459e-01 4.34705277e-01 4.33522709e-01 + 4.32341757e-01 4.31162420e-01 4.29984698e-01 4.28808592e-01 4.27634102e-01 + 4.26461229e-01 4.25289972e-01 4.24120332e-01 4.22952310e-01 4.21785904e-01 + 4.20621116e-01 4.19457946e-01 4.18296395e-01 4.17136461e-01 4.15978147e-01 + 4.14821451e-01 4.13666374e-01 4.12512917e-01 4.11361080e-01 4.10210862e-01 + 4.09062265e-01 4.07915288e-01 4.06769932e-01 4.05626197e-01 4.04484083e-01 + 4.03343590e-01 4.02204719e-01 4.01067470e-01 3.99931844e-01 3.98797839e-01 + 3.97665458e-01 3.96534699e-01 3.95405564e-01 3.94278052e-01 3.93152164e-01 + 3.92027900e-01 3.90905259e-01 3.89784244e-01 3.88664853e-01 3.87547087e-01 + 3.86430946e-01 3.85316431e-01 3.84203541e-01 3.83092278e-01 3.81982640e-01 + 3.80874629e-01 3.79768245e-01 3.78663487e-01 3.77560357e-01 3.76458854e-01 + 3.75358979e-01 3.74260731e-01 3.73164112e-01 3.72069121e-01 3.70975759e-01 + 3.69884025e-01 3.68793921e-01 3.67705446e-01 3.66618601e-01 3.65533385e-01 + 3.64449799e-01 3.63367844e-01 3.62287520e-01 3.61208826e-01 3.60131763e-01 + 3.59056331e-01 3.57982531e-01 3.56910363e-01 3.55839826e-01 3.54770922e-01 + 3.53703650e-01 3.52638011e-01 3.51574005e-01 3.50511632e-01 3.49450892e-01 + 3.48391786e-01 3.47334314e-01 3.46278476e-01 3.45224272e-01 3.44171703e-01 + 3.43120769e-01 3.42071469e-01 3.41023805e-01 3.39977776e-01 3.38933384e-01 + 3.37890627e-01 3.36849506e-01 3.35810021e-01 3.34772174e-01 3.33735963e-01 + 3.32701389e-01 3.31668453e-01 3.30637154e-01 3.29607493e-01 3.28579470e-01 + 3.27553085e-01 3.26528339e-01 3.25505231e-01 3.24483762e-01 3.23463933e-01 + 3.22445743e-01 3.21429192e-01 3.20414282e-01 3.19401011e-01 3.18389381e-01 + 3.17379391e-01 3.16371042e-01 3.15364334e-01 3.14359267e-01 3.13355841e-01 + 3.12354057e-01 3.11353915e-01 3.10355415e-01 3.09358557e-01 3.08363342e-01 + 3.07369770e-01 3.06377840e-01 3.05387554e-01 3.04398911e-01 3.03411912e-01 + 3.02426556e-01 3.01442845e-01 3.00460777e-01 2.99480355e-01 2.98501577e-01 + 2.97524444e-01 2.96548956e-01 2.95575113e-01 2.94602916e-01 2.93632365e-01 + 2.92663460e-01 2.91696201e-01 2.90730589e-01 2.89766623e-01 2.88804304e-01 + 2.87843632e-01 2.86884607e-01 2.85927230e-01 2.84971501e-01 2.84017420e-01 + 2.83064986e-01 2.82114201e-01 2.81165065e-01 2.80217578e-01 2.79271739e-01 + 2.78327550e-01 2.77385010e-01 2.76444119e-01 2.75504879e-01 2.74567288e-01 + 2.73631348e-01 2.72697059e-01 2.71764419e-01 2.70833431e-01 2.69904094e-01 + 2.68976408e-01 2.68050374e-01 2.67125991e-01 2.66203261e-01 2.65282182e-01 + 2.64362756e-01 2.63444982e-01 2.62528861e-01 2.61614393e-01 2.60701578e-01 + 2.59790416e-01 2.58880908e-01 2.57973054e-01 2.57066853e-01 2.56162307e-01 + 2.55259415e-01 2.54358178e-01 2.53458595e-01 2.52560668e-01 2.51664395e-01 + 2.50769778e-01 2.49876816e-01 2.48985511e-01 2.48095861e-01 2.47207867e-01 + 2.46321530e-01 2.45436849e-01 2.44553825e-01 2.43672457e-01 2.42792747e-01 + 2.41914695e-01 2.41038300e-01 2.40163562e-01 2.39290483e-01 2.38419061e-01 + 2.37549298e-01 2.36681193e-01 2.35814748e-01 2.34949961e-01 2.34086833e-01 + 2.33225364e-01 2.32365555e-01 2.31507405e-01 2.30650916e-01 2.29796086e-01 + 2.28942916e-01 2.28091407e-01 2.27241559e-01 2.26393372e-01 2.25546845e-01 + 2.24701980e-01 2.23858776e-01 2.23017233e-01 2.22177352e-01 2.21339134e-01 + 2.20502577e-01 2.19667682e-01 2.18834451e-01 2.18002881e-01 2.17172975e-01 + 2.16344732e-01 2.15518152e-01 2.14693235e-01 2.13869982e-01 2.13048393e-01 + 2.12228468e-01 2.11410207e-01 2.10593610e-01 2.09778678e-01 2.08965410e-01 + 2.08153807e-01 2.07343870e-01 2.06535598e-01 2.05728991e-01 2.04924049e-01 + 2.04120774e-01 2.03319164e-01 2.02519221e-01 2.01720944e-01 2.00924334e-01 + 2.00129390e-01 1.99336113e-01 1.98544503e-01 1.97754560e-01 1.96966285e-01 + 1.96179677e-01 1.95394737e-01 1.94611465e-01 1.93829861e-01 1.93049925e-01 + 1.92271658e-01 1.91495059e-01 1.90720129e-01 1.89946869e-01 1.89175277e-01 + 1.88405354e-01 1.87637101e-01 1.86870518e-01 1.86105605e-01 1.85342361e-01 + 1.84580788e-01 1.83820885e-01 1.83062653e-01 1.82306091e-01 1.81551200e-01 + 1.80797980e-01 1.80046431e-01 1.79296554e-01 1.78548348e-01 1.77801814e-01 + 1.77056952e-01 1.76313762e-01 1.75572244e-01 1.74832398e-01 1.74094225e-01 + 1.73357725e-01 1.72622897e-01 1.71889743e-01 1.71158261e-01 1.70428453e-01 + 1.69700319e-01 1.68973858e-01 1.68249071e-01 1.67525958e-01 1.66804519e-01 + 1.66084755e-01 1.65366665e-01 1.64650249e-01 1.63935509e-01 1.63222443e-01 + 1.62511053e-01 1.61801338e-01 1.61093298e-01 1.60386934e-01 1.59682246e-01 + 1.58979233e-01 1.58277897e-01 1.57578237e-01 1.56880253e-01 1.56183946e-01 + 1.55489316e-01 1.54796362e-01 1.54105086e-01 1.53415486e-01 1.52727564e-01 + 1.52041320e-01 1.51356753e-01 1.50673864e-01 1.49992653e-01 1.49313120e-01 + 1.48635265e-01 1.47959088e-01 1.47284591e-01 1.46611771e-01 1.45940631e-01 + 1.45271170e-01 1.44603388e-01 1.43937285e-01 1.43272862e-01 1.42610118e-01 + 1.41949054e-01 1.41289670e-01 1.40631966e-01 1.39975942e-01 1.39321598e-01 + 1.38668935e-01 1.38017953e-01 1.37368652e-01 1.36721031e-01 1.36075091e-01 + 1.35430833e-01 1.34788256e-01 1.34147361e-01 1.33508147e-01 1.32870615e-01 + 1.32234765e-01 1.31600597e-01 1.30968111e-01 1.30337308e-01 1.29708187e-01 + 1.29080749e-01 1.28454994e-01 1.27830921e-01 1.27208532e-01 1.26587826e-01 + 1.25968803e-01 1.25351464e-01 1.24735808e-01 1.24121836e-01 1.23509548e-01 + 1.22898944e-01 1.22290024e-01 1.21682789e-01 1.21077238e-01 1.20473372e-01 + 1.19871190e-01 1.19270693e-01 1.18671881e-01 1.18074755e-01 1.17479313e-01 + 1.16885558e-01 1.16293487e-01 1.15703102e-01 1.15114403e-01 1.14527390e-01 + 1.13942064e-01 1.13358423e-01 1.12776468e-01 1.12196200e-01 1.11617619e-01 + 1.11040725e-01 1.10465517e-01 1.09891996e-01 1.09320162e-01 1.08750016e-01 + 1.08181557e-01 1.07614785e-01 1.07049701e-01 1.06486305e-01 1.05924597e-01 + 1.05364577e-01 1.04806244e-01 1.04249601e-01 1.03694645e-01 1.03141378e-01 + 1.02589800e-01 1.02039910e-01 1.01491709e-01 1.00945198e-01 1.00400375e-01 + 9.98572416e-02 9.93157976e-02 9.87760431e-02 9.82379782e-02 9.77016030e-02 + 9.71669178e-02 9.66339224e-02 9.61026172e-02 9.55730022e-02 9.50450776e-02 + 9.45188434e-02 9.39942997e-02 9.34714468e-02 9.29502847e-02 9.24308135e-02 + 9.19130333e-02 9.13969443e-02 9.08825466e-02 9.03698403e-02 8.98588255e-02 + 8.93495023e-02 8.88418708e-02 8.83359312e-02 8.78316836e-02 8.73291281e-02 + 8.68282647e-02 8.63290937e-02 8.58316150e-02 8.53358290e-02 8.48417355e-02 + 8.43493348e-02 8.38586270e-02 8.33696121e-02 8.28822904e-02 8.23966618e-02 + 8.19127265e-02 8.14304847e-02 8.09499364e-02 8.04710817e-02 7.99939207e-02 + 7.95184537e-02 7.90446805e-02 7.85726014e-02 7.81022165e-02 7.76335259e-02 + 7.71665296e-02 7.67012279e-02 7.62376207e-02 7.57757082e-02 7.53154905e-02 + 7.48569677e-02 7.44001400e-02 7.39450073e-02 7.34915699e-02 7.30398277e-02 + 7.25897810e-02 7.21414298e-02 7.16947743e-02 7.12498144e-02 7.08065504e-02 + 7.03649822e-02 6.99251102e-02 6.94869342e-02 6.90504544e-02 6.86156710e-02 + 6.81825840e-02 6.77511935e-02 6.73214996e-02 6.68935024e-02 6.64672020e-02 + 6.60425985e-02 6.56196920e-02 6.51984826e-02 6.47789704e-02 6.43611555e-02 + 6.39450379e-02 6.35306178e-02 6.31178953e-02 6.27068704e-02 6.22975433e-02 + 6.18899141e-02 6.14839827e-02 6.10797494e-02 6.06772142e-02 6.02763772e-02 + 5.98772385e-02 5.94797982e-02 5.90840564e-02 5.86900131e-02 5.82976685e-02 + 5.79070227e-02 5.75180757e-02 5.71308276e-02 5.67452785e-02 5.63614285e-02 + 5.59792777e-02 5.55988261e-02 5.52200739e-02 5.48430212e-02 5.44676679e-02 + 5.40940143e-02 5.37220604e-02 5.33518062e-02 5.29832520e-02 5.26163976e-02 + 5.22512433e-02 5.18877891e-02 5.15260351e-02 5.11659814e-02 5.08076280e-02 + 5.04509751e-02 5.00960227e-02 4.97427708e-02 4.93912197e-02 4.90413693e-02 + 4.86932198e-02 4.83467711e-02 4.80020235e-02 4.76589769e-02 4.73176315e-02 + 4.69779873e-02 4.66400444e-02 4.63038029e-02 4.59692628e-02 4.56364243e-02 + 4.53052874e-02 4.49758521e-02 4.46481186e-02 4.43220870e-02 4.39977572e-02 + 4.36751294e-02 4.33542037e-02 4.30349801e-02 4.27174587e-02 4.24016395e-02 + 4.20875227e-02 4.17751083e-02 4.14643964e-02 4.11553870e-02 4.08480802e-02 + 4.05424762e-02 4.02385749e-02 3.99363764e-02 3.96358808e-02 3.93370881e-02 + 3.90399985e-02 3.87446120e-02 3.84509287e-02 3.81589486e-02 3.78686718e-02 + 3.75800983e-02 3.72932283e-02 3.70080618e-02 3.67245988e-02 3.64428394e-02 + 3.61627838e-02 3.58844318e-02 3.56077837e-02 3.53328395e-02 3.50595992e-02 + 3.47880629e-02 3.45182306e-02 3.42501025e-02 3.39836786e-02 3.37189589e-02 + 3.34559435e-02 3.31946324e-02 3.29350258e-02 3.26771236e-02 3.24209260e-02 + 3.21664330e-02 3.19136446e-02 3.16625610e-02 3.14131821e-02 3.11655080e-02 + 3.09195388e-02 3.06752746e-02 3.04327153e-02 3.01918611e-02 2.99527120e-02 + 2.97152680e-02 2.94795292e-02 2.92454957e-02 2.90131675e-02 2.87825447e-02 + 2.85536273e-02 2.83264153e-02 2.81009089e-02 2.78771081e-02 2.76550128e-02 + 2.74346233e-02 2.72159395e-02 2.69989614e-02 2.67836892e-02 2.65701228e-02 + 2.63582623e-02 2.61481079e-02 2.59396594e-02 2.57329170e-02 2.55278807e-02 + 2.53245505e-02 2.51229266e-02 2.49230089e-02 2.47247975e-02 2.45282924e-02 + 2.43334937e-02 2.41404014e-02 2.39490156e-02 2.37593363e-02 2.35713636e-02 + 2.33850975e-02 2.32005380e-02 2.30176851e-02 2.28365390e-02 2.26570997e-02 + 2.24793672e-02 2.23033415e-02 2.21290227e-02 2.19564108e-02 2.17855059e-02 + 2.16163080e-02 2.14488171e-02 2.12830333e-02 2.11189566e-02 2.09565871e-02 + 2.07959248e-02 2.06369696e-02 2.04797218e-02 2.03241812e-02 2.01703480e-02 + 2.00182221e-02 1.98678037e-02 1.97190927e-02 1.95720891e-02 1.94267931e-02 + 1.92832045e-02 1.91413236e-02 1.90011502e-02 1.88626845e-02 1.87259265e-02 + 1.85908761e-02 1.84575335e-02 1.83258986e-02 1.81959715e-02 1.80677522e-02 + 1.79412408e-02 1.78164372e-02 1.76933415e-02 1.75719538e-02 1.74522740e-02 + 1.73343022e-02 1.72180384e-02 1.71034827e-02 1.69906350e-02 1.68794954e-02 + 1.67700639e-02 1.66623405e-02 1.65563253e-02 1.64520183e-02 1.63494195e-02 + 1.62485289e-02 1.61493466e-02 1.60518726e-02 1.59561068e-02 1.58620494e-02 + 1.57697003e-02 1.56790596e-02 1.55901273e-02 1.55029034e-02 1.54173879e-02 + 1.53335808e-02 1.52514822e-02 1.51710921e-02 1.50924105e-02 1.50154374e-02 + 1.49401728e-02 1.48666168e-02 1.47947694e-02 1.47246305e-02 1.46562002e-02 + 1.45894786e-02 1.45244656e-02 1.44611612e-02 1.43995655e-02 1.43396785e-02 + 1.42815001e-02 1.42250305e-02 1.41702695e-02 1.41172173e-02 1.40658738e-02 + 1.40162391e-02 1.39683132e-02 1.39220960e-02 1.38775876e-02 1.38347880e-02 + 1.37936971e-02 1.37543151e-02 1.37166420e-02 1.36806776e-02 1.36464221e-02 + 1.36138754e-02 1.35830376e-02 1.35539086e-02 1.35264885e-02 1.35007773e-02 + 1.34767750e-02 1.34544815e-02 1.34338969e-02 1.34150212e-02 1.33978544e-02 + 1.33823966e-02 1.33686476e-02 1.33566075e-02 1.33462763e-02 1.33376541e-02 + 1.33307407e-02 1.33255363e-02 1.33220408e-02 1.33202542e-02 1.33201765e-02 + 1.33218078e-02 1.33251480e-02 1.33301970e-02 1.33369550e-02 1.33454220e-02 + 1.33555978e-02 1.33674825e-02 1.33810762e-02 1.33963787e-02 1.34133902e-02 + 1.34321105e-02 1.34525397e-02 1.34746779e-02 1.34985249e-02 1.35240808e-02 + 1.35513455e-02 1.35803192e-02 1.36110016e-02 1.36433930e-02 1.36774932e-02 + 1.37133022e-02 1.37508200e-02 1.37900467e-02 1.38309822e-02 1.38736265e-02 + 1.39179796e-02 1.39640414e-02 1.40118121e-02 1.40612914e-02 1.41124796e-02 + 1.41653765e-02 1.42199821e-02 1.42762964e-02 1.43343194e-02 1.43940512e-02 + 1.44554916e-02 1.45186406e-02 1.45834983e-02 1.46500646e-02 1.47183396e-02 + 1.47883231e-02 1.48600153e-02 1.49334160e-02 1.50085252e-02 1.50853430e-02 + 1.51638693e-02 1.52441041e-02 1.53260474e-02 1.54096992e-02 1.54950594e-02 + 1.55821280e-02 1.56709051e-02 1.57613905e-02 1.58535843e-02 1.59474864e-02 + 1.60430969e-02 1.61404156e-02 1.62394427e-02 1.63401780e-02 1.64426215e-02 + 1.65467732e-02 1.66526331e-02 1.67602012e-02 1.68694775e-02 1.69804618e-02 + 1.70931542e-02 1.72075547e-02 1.73236633e-02 1.74414798e-02 1.75610043e-02 + 1.76822368e-02 1.78051772e-02 1.79298256e-02 1.80561818e-02 1.81842458e-02 + 1.83140177e-02 1.84454973e-02 1.85786847e-02 1.87135798e-02 1.88501827e-02 + 1.89884931e-02 1.91285113e-02 1.92702370e-02 1.94136703e-02 1.95588111e-02 + 1.97056595e-02 1.98542153e-02 2.00044786e-02 2.01564492e-02 2.03101272e-02 + 2.04655126e-02 2.06226053e-02 2.07814052e-02 2.09419123e-02 2.11041267e-02 + 2.12680482e-02 2.14336768e-02 2.16010125e-02 2.17700553e-02 2.19408050e-02 + 2.21132617e-02 2.22874254e-02 2.24632959e-02 2.26408733e-02 2.28201575e-02 + 2.30011484e-02 2.31838461e-02 2.33682505e-02 2.35543615e-02 2.37421791e-02 + 2.39317033e-02 2.41229339e-02 2.43158711e-02 2.45105147e-02 2.47068647e-02 + 2.49049210e-02 2.51046836e-02 2.53061524e-02 2.55093275e-02 2.57142087e-02 + 2.59207960e-02 2.61290894e-02 2.63390888e-02 2.65507942e-02 2.67642055e-02 + 2.69793227e-02 2.71961457e-02 2.74146744e-02 2.76349090e-02 2.78568491e-02 + 2.80804949e-02 2.83058463e-02 2.85329032e-02 2.87616656e-02 2.89921334e-02 + 2.92243066e-02 2.94581851e-02 2.96937689e-02 2.99310578e-02 3.01700520e-02 + 3.04107512e-02 3.06531555e-02 3.08972648e-02 3.11430790e-02 3.13905981e-02 + 3.16398220e-02 3.18907507e-02 3.21433841e-02 3.23977222e-02 3.26537648e-02 + 3.29115120e-02 3.31709637e-02 3.34321199e-02 3.36949803e-02 3.39595451e-02 + 3.42258142e-02 3.44937874e-02 3.47634647e-02 3.50348461e-02 3.53079315e-02 + 3.55827209e-02 3.58592141e-02 3.61374112e-02 3.64173120e-02 3.66989165e-02 + 3.69822246e-02 3.72672363e-02 3.75539515e-02 3.78423701e-02 3.81324920e-02 + 3.84243173e-02 3.87178458e-02 3.90130775e-02 3.93100123e-02 3.96086502e-02 + 3.99089910e-02 4.02110347e-02 4.05147812e-02 4.08202305e-02 4.11273825e-02 + 4.14362371e-02 4.17467942e-02 4.20590539e-02 4.23730160e-02 4.26886804e-02 + 4.30060471e-02 4.33251159e-02 4.36458870e-02 4.39683600e-02 4.42925351e-02 + 4.46184120e-02 4.49459908e-02 4.52752714e-02 4.56062536e-02 4.59389375e-02 + 4.62733229e-02 4.66094097e-02 4.69471980e-02 4.72866875e-02 4.76278783e-02 + 4.79707703e-02 4.83153633e-02 4.86616573e-02 4.90096522e-02 4.93593480e-02 + 4.97107446e-02 5.00638418e-02 5.04186396e-02 5.07751380e-02 5.11333368e-02 + 5.14932360e-02 5.18548354e-02 5.22181351e-02 5.25831349e-02 5.29498347e-02 + 5.33182344e-02 5.36883341e-02 5.40601335e-02 5.44336326e-02 5.48088313e-02 + 5.51857296e-02 5.55643273e-02 5.59446244e-02 5.63266207e-02 5.67103163e-02 + 5.70957109e-02 5.74828046e-02 5.78715972e-02 5.82620886e-02 5.86542788e-02 + 5.90481677e-02 5.94437551e-02 5.98410410e-02 6.02400253e-02 6.06407080e-02 + 6.10430888e-02 6.14471678e-02 6.18529447e-02 6.22604197e-02 6.26695925e-02 + 6.30804630e-02 6.34930312e-02 6.39072970e-02 6.43232602e-02 6.47409209e-02 + 6.51602788e-02 6.55813340e-02 6.60040862e-02 6.64285354e-02 6.68546816e-02 + 6.72825245e-02 6.77120642e-02 6.81433005e-02 6.85762333e-02 6.90108625e-02 + 6.94471881e-02 6.98852099e-02 7.03249278e-02 7.07663417e-02 7.12094516e-02 + 7.16542573e-02 7.21007588e-02 7.25489558e-02 7.29988484e-02 7.34504365e-02 + 7.39037198e-02 7.43586984e-02 7.48153721e-02 7.52737408e-02 7.57338044e-02 + 7.61955628e-02 7.66590160e-02 7.71241637e-02 7.75910059e-02 7.80595425e-02 + 7.85297734e-02 7.90016985e-02 7.94753177e-02 7.99506308e-02 8.04276378e-02 + 8.09063385e-02 8.13867329e-02 8.18688208e-02 8.23526021e-02 8.28380768e-02 + 8.33252446e-02 8.38141056e-02 8.43046595e-02 8.47969063e-02 8.52908459e-02 + 8.57864782e-02 8.62838029e-02 8.67828201e-02 8.72835297e-02 8.77859314e-02 + 8.82900252e-02 8.87958110e-02 8.93032887e-02 8.98124581e-02 9.03233191e-02 + 9.08358717e-02 9.13501157e-02 9.18660509e-02 9.23836774e-02 9.29029949e-02 + 9.34240033e-02 9.39467025e-02 9.44710925e-02 9.49971730e-02 9.55249440e-02 + 9.60544054e-02 9.65855570e-02 9.71183987e-02 9.76529303e-02 9.81891519e-02 + 9.87270632e-02 9.92666641e-02 9.98079545e-02 1.00350934e-01 1.00895603e-01 + 1.01441962e-01 1.01990009e-01 1.02539745e-01 1.03091170e-01 1.03644283e-01 + 1.04199085e-01 1.04755576e-01 1.05313754e-01 1.05873621e-01 1.06435176e-01 + 1.06998419e-01 1.07563349e-01 1.08129968e-01 1.08698273e-01 1.09268266e-01 + 1.09839947e-01 1.10413314e-01 1.10988368e-01 1.11565110e-01 1.12143538e-01 + 1.12723652e-01 1.13305453e-01 1.13888941e-01 1.14474115e-01 1.15060974e-01 + 1.15649520e-01 1.16239751e-01 1.16831669e-01 1.17425271e-01 1.18020560e-01 + 1.18617533e-01 1.19216192e-01 1.19816535e-01 1.20418564e-01 1.21022277e-01 + 1.21627675e-01 1.22234757e-01 1.22843524e-01 1.23453975e-01 1.24066109e-01 + 1.24679928e-01 1.25295431e-01 1.25912617e-01 1.26531487e-01 1.27152040e-01 + 1.27774276e-01 1.28398196e-01 1.29023798e-01 1.29651083e-01 1.30280051e-01 + 1.30910702e-01 1.31543034e-01 1.32177050e-01 1.32812747e-01 1.33450126e-01 + 1.34089187e-01 1.34729929e-01 1.35372353e-01 1.36016459e-01 1.36662246e-01 + 1.37309713e-01 1.37958862e-01 1.38609692e-01 1.39262202e-01 1.39916393e-01 + 1.40572264e-01 1.41229815e-01 1.41889046e-01 1.42549958e-01 1.43212549e-01 + 1.43876819e-01 1.44542770e-01 1.45210399e-01 1.45879708e-01 1.46550695e-01 + 1.47223362e-01 1.47897707e-01 1.48573731e-01 1.49251433e-01 1.49930814e-01 + 1.50611872e-01 1.51294609e-01 1.51979023e-01 1.52665115e-01 1.53352885e-01 + 1.54042332e-01 1.54733456e-01 1.55426257e-01 1.56120735e-01 1.56816890e-01 + 1.57514721e-01 1.58214229e-01 1.58915413e-01 1.59618273e-01 1.60322809e-01 + 1.61029020e-01 1.61736908e-01 1.62446471e-01 1.63157709e-01 1.63870622e-01 + 1.64585210e-01 1.65301473e-01 1.66019411e-01 1.66739023e-01 1.67460310e-01 + 1.68183271e-01 1.68907906e-01 1.69634214e-01 1.70362197e-01 1.71091853e-01 + 1.71823182e-01 1.72556184e-01 1.73290860e-01 1.74027208e-01 1.74765229e-01 + 1.75504923e-01 1.76246289e-01 1.76989327e-01 1.77734037e-01 1.78480419e-01 + 1.79228473e-01 1.79978199e-01 1.80729595e-01 1.81482663e-01 1.82237402e-01 + 1.82993812e-01 1.83751893e-01 1.84511644e-01 1.85273065e-01 1.86036157e-01 + 1.86800919e-01 1.87567350e-01 1.88335451e-01 1.89105222e-01 1.89876662e-01 + 1.90649771e-01 1.91424549e-01 1.92200996e-01 1.92979112e-01 1.93758896e-01 + 1.94540348e-01 1.95323469e-01 1.96108257e-01 1.96894713e-01 1.97682837e-01 + 1.98472628e-01 1.99264087e-01 2.00057212e-01 2.00852004e-01 2.01648463e-01 + 2.02446589e-01 2.03246381e-01 2.04047839e-01 2.04850963e-01 2.05655753e-01 + 2.06462208e-01 2.07270329e-01 2.08080115e-01 2.08891567e-01 2.09704683e-01 + 2.10519464e-01 2.11335909e-01 2.12154019e-01 2.12973793e-01 2.13795231e-01 + 2.14618333e-01 2.15443098e-01 2.16269527e-01 2.17097619e-01 2.17927374e-01 + 2.18758792e-01 2.19591873e-01 2.20426616e-01 2.21263022e-01 2.22101090e-01 + 2.22940819e-01 2.23782211e-01 2.24625264e-01 2.25469978e-01 2.26316354e-01 + 2.27164390e-01 2.28014088e-01 2.28865446e-01 2.29718464e-01 2.30573143e-01 + 2.31429482e-01 2.32287480e-01 2.33147139e-01 2.34008457e-01 2.34871434e-01 + 2.35736070e-01 2.36602365e-01 2.37470319e-01 2.38339931e-01 2.39211202e-01 + 2.40084131e-01 2.40958717e-01 2.41834962e-01 2.42712864e-01 2.43592423e-01 + 2.44473640e-01 2.45356513e-01 2.46241044e-01 2.47127230e-01 2.48015074e-01 + 2.48904573e-01 2.49795728e-01 2.50688539e-01 2.51583006e-01 2.52479128e-01 + 2.53376905e-01 2.54276337e-01 2.55177424e-01 2.56080166e-01 2.56984562e-01 + 2.57890612e-01 2.58798316e-01 2.59707674e-01 2.60618685e-01 2.61531350e-01 + 2.62445667e-01 2.63361638e-01 2.64279262e-01 2.65198538e-01 2.66119466e-01 + 2.67042047e-01 2.67966279e-01 2.68892164e-01 2.69819699e-01 2.70748886e-01 + 2.71679724e-01 2.72612213e-01 2.73546353e-01 2.74482143e-01 2.75419584e-01 + 2.76358674e-01 2.77299415e-01 2.78241805e-01 2.79185844e-01 2.80131533e-01 + 2.81078870e-01 2.82027857e-01 2.82978492e-01 2.83930775e-01 2.84884707e-01 + 2.85840287e-01 2.86797514e-01 2.87756389e-01 2.88716911e-01 2.89679080e-01 + 2.90642896e-01 2.91608359e-01 2.92575468e-01 2.93544224e-01 2.94514625e-01 + 2.95486673e-01 2.96460366e-01 2.97435704e-01 2.98412687e-01 2.99391316e-01 + 3.00371589e-01 3.01353507e-01 3.02337069e-01 3.03322275e-01 3.04309125e-01 + 3.05297618e-01 3.06287755e-01 3.07279535e-01 3.08272958e-01 3.09268024e-01 + 3.10264733e-01 3.11263084e-01 3.12263076e-01 3.13264711e-01 3.14267987e-01 + 3.15272905e-01 3.16279464e-01 3.17287664e-01 3.18297505e-01 3.19308986e-01 + 3.20322108e-01 3.21336869e-01 3.22353271e-01 3.23371312e-01 3.24390992e-01 + 3.25412312e-01 3.26435271e-01 3.27459868e-01 3.28486104e-01 3.29513978e-01 + 3.30543490e-01 3.31574640e-01 3.32607428e-01 3.33641852e-01 3.34677914e-01 + 3.35715613e-01 3.36754949e-01 3.37795921e-01 3.38838529e-01 3.39882774e-01 + 3.40928653e-01 3.41976169e-01 3.43025320e-01 3.44076105e-01 3.45128526e-01 + 3.46182581e-01 3.47238271e-01 3.48295594e-01 3.49354552e-01 3.50415143e-01 + 3.51477368e-01 3.52541225e-01 3.53606716e-01 3.54673839e-01 3.55742595e-01 + 3.56812983e-01 3.57885003e-01 3.58958655e-01 3.60033939e-01 3.61110853e-01 + 3.62189399e-01 3.63269575e-01 3.64351382e-01 3.65434820e-01 3.66519887e-01 + 3.67606584e-01 3.68694911e-01 3.69784868e-01 3.70876453e-01 3.71969667e-01 + 3.73064510e-01 3.74160981e-01 3.75259081e-01 3.76358808e-01 3.77460163e-01 + 3.78563145e-01 3.79667755e-01 3.80773992e-01 3.81881855e-01 3.82991344e-01 + 3.84102460e-01 3.85215202e-01 3.86329570e-01 3.87445563e-01 3.88563181e-01 + 3.89682424e-01 3.90803292e-01 3.91925784e-01 3.93049901e-01 3.94175642e-01 + 3.95303006e-01 3.96431994e-01 3.97562605e-01 3.98694839e-01 3.99828696e-01 + 4.00964175e-01 4.02101276e-01 4.03240000e-01 4.04380345e-01 4.05522312e-01 + 4.06665899e-01 4.07811108e-01 4.08957938e-01 4.10106388e-01 4.11256458e-01 + 4.12408148e-01 4.13561458e-01 4.14716388e-01 4.15872936e-01 4.17031104e-01 + 4.18190890e-01 4.19352295e-01 4.20515317e-01 4.21679958e-01 4.22846216e-01 + 4.24014092e-01 4.25183585e-01 4.26354695e-01 4.27527421e-01 4.28701764e-01 + 4.29877723e-01 4.31055298e-01 4.32234488e-01 4.33415294e-01 4.34597715e-01 + 4.35781751e-01 4.36967401e-01 4.38154665e-01 4.39343544e-01 4.40534036e-01 + 4.41726142e-01 4.42919861e-01 4.44115193e-01 4.45312138e-01 4.46510695e-01 + 4.47710864e-01 4.48912645e-01 4.50116038e-01 4.51321043e-01 4.52527658e-01 + 4.53735885e-01 4.54945722e-01 4.56157169e-01 4.57370226e-01 4.58584894e-01 + 4.59801170e-01 4.61019056e-01 4.62238551e-01 4.63459655e-01 4.64682367e-01 + 4.65906688e-01 4.67132616e-01 4.68360152e-01 4.69589295e-01 4.70820046e-01 + 4.72052403e-01 4.73286367e-01 4.74521937e-01 4.75759113e-01 4.76997895e-01 + 4.78238283e-01 4.79480276e-01 4.80723873e-01 4.81969076e-01 4.83215882e-01 + 4.84464293e-01 4.85714308e-01 4.86965926e-01 4.88219148e-01 4.89473972e-01 + 4.90730400e-01 4.91988430e-01 4.93248062e-01 4.94509296e-01 4.95772131e-01 + 4.97036568e-01 4.98302606e-01 4.99570245e-01 5.00839485e-01 5.02110324e-01 + 5.03382764e-01 5.04656804e-01 5.05932442e-01 5.07209680e-01 5.08488517e-01 + 5.09768953e-01 5.11050986e-01 5.12334618e-01 5.13619847e-01 5.14906674e-01 + 5.16195098e-01 5.17485119e-01 5.18776737e-01 5.20069951e-01 5.21364761e-01 + 5.22661167e-01 5.23959168e-01 5.25258764e-01 5.26559955e-01 5.27862741e-01 + 5.29167122e-01 5.30473096e-01 5.31780664e-01 5.33089826e-01 5.34400580e-01 + 5.35712928e-01 5.37026868e-01 5.38342401e-01 5.39659526e-01 5.40978242e-01 + 5.42298550e-01 5.43620449e-01 5.44943939e-01 5.46269020e-01 5.47595691e-01 + 5.48923952e-01 5.50253802e-01 5.51585242e-01 5.52918272e-01 5.54252890e-01 + 5.55589096e-01 5.56926891e-01 5.58266274e-01 5.59607245e-01 5.60949803e-01 + 5.62293948e-01 5.63639680e-01 5.64986999e-01 5.66335903e-01 5.67686394e-01 + 5.69038470e-01 5.70392132e-01 5.71747378e-01 5.73104210e-01 5.74462626e-01 + 5.75822626e-01 5.77184210e-01 5.78547377e-01 5.79912128e-01 5.81278461e-01 + 5.82646378e-01 5.84015876e-01 5.85386957e-01 5.86759620e-01 5.88133864e-01 + 5.89509689e-01 5.90887095e-01 5.92266082e-01 5.93646649e-01 5.95028796e-01 + 5.96412522e-01 5.97797828e-01 5.99184713e-01 6.00573177e-01 6.01963219e-01 + 6.03354840e-01 6.04748038e-01 6.06142814e-01 6.07539167e-01 6.08937097e-01 + 6.10336603e-01 6.11737686e-01 6.13140346e-01 6.14544580e-01 6.15950391e-01 + 6.17357776e-01 6.18766736e-01 6.20177271e-01 6.21589379e-01 6.23003062e-01 + 6.24418319e-01 6.25835148e-01 6.27253551e-01 6.28673526e-01 6.30095073e-01 + 6.31518193e-01 6.32942884e-01 6.34369147e-01 6.35796981e-01 6.37226386e-01 + 6.38657361e-01 6.40089906e-01 6.41524022e-01 6.42959706e-01 6.44396960e-01 + 6.45835783e-01 6.47276175e-01 6.48718135e-01 6.50161663e-01 6.51606758e-01 + 6.53053421e-01 6.54501651e-01 6.55951448e-01 6.57402811e-01 6.58855740e-01 + 6.60310236e-01 6.61766296e-01 6.63223922e-01 6.64683112e-01 6.66143868e-01 + 6.67606187e-01 6.69070070e-01 6.70535517e-01 6.72002527e-01 6.73471100e-01 + 6.74941236e-01 6.76412934e-01 6.77886194e-01 6.79361015e-01 6.80837398e-01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.65580254e-01 1.65563515e-01 1.65546741e-01 1.65529929e-01 1.65513082e-01 + 1.65496198e-01 1.65479277e-01 1.65462319e-01 1.65445324e-01 1.65428292e-01 + 1.65411223e-01 1.65394117e-01 1.65376974e-01 1.65359793e-01 1.65342574e-01 + 1.65325318e-01 1.65308025e-01 1.65290693e-01 1.65273323e-01 1.65255915e-01 + 1.65238469e-01 1.65220985e-01 1.65203462e-01 1.65185901e-01 1.65168301e-01 + 1.65150662e-01 1.65132985e-01 1.65115268e-01 1.65097513e-01 1.65079718e-01 + 1.65061884e-01 1.65044011e-01 1.65026098e-01 1.65008145e-01 1.64990153e-01 + 1.64972120e-01 1.64954048e-01 1.64935936e-01 1.64917783e-01 1.64899591e-01 + 1.64881357e-01 1.64863083e-01 1.64844769e-01 1.64826414e-01 1.64808017e-01 + 1.64789580e-01 1.64771102e-01 1.64752582e-01 1.64734021e-01 1.64715418e-01 + 1.64696774e-01 1.64678088e-01 1.64659360e-01 1.64640590e-01 1.64621778e-01 + 1.64602924e-01 1.64584027e-01 1.64565088e-01 1.64546107e-01 1.64527082e-01 + 1.64508015e-01 1.64488905e-01 1.64469751e-01 1.64450555e-01 1.64431315e-01 + 1.64412031e-01 1.64392704e-01 1.64373334e-01 1.64353919e-01 1.64334460e-01 + 1.64314958e-01 1.64295411e-01 1.64275819e-01 1.64256183e-01 1.64236503e-01 + 1.64216777e-01 1.64197007e-01 1.64177192e-01 1.64157331e-01 1.64137425e-01 + 1.64117474e-01 1.64097477e-01 1.64077435e-01 1.64057346e-01 1.64037212e-01 + 1.64017032e-01 1.63996805e-01 1.63976532e-01 1.63956212e-01 1.63935846e-01 + 1.63915433e-01 1.63894973e-01 1.63874465e-01 1.63853911e-01 1.63833309e-01 + 1.63812660e-01 1.63791963e-01 1.63771218e-01 1.63750426e-01 1.63729585e-01 + 1.63708696e-01 1.63687759e-01 1.63666773e-01 1.63645738e-01 1.63624655e-01 + 1.63603523e-01 1.63582341e-01 1.63561111e-01 1.63539831e-01 1.63518501e-01 + 1.63497122e-01 1.63475693e-01 1.63454214e-01 1.63432685e-01 1.63411106e-01 + 1.63389476e-01 1.63367795e-01 1.63346064e-01 1.63324282e-01 1.63302449e-01 + 1.63280565e-01 1.63258629e-01 1.63236642e-01 1.63214603e-01 1.63192512e-01 + 1.63170369e-01 1.63148174e-01 1.63125927e-01 1.63103628e-01 1.63081275e-01 + 1.63058870e-01 1.63036412e-01 1.63013901e-01 1.62991337e-01 1.62968719e-01 + 1.62946048e-01 1.62923323e-01 1.62900544e-01 1.62877710e-01 1.62854823e-01 + 1.62831881e-01 1.62808885e-01 1.62785834e-01 1.62762728e-01 1.62739567e-01 + 1.62716350e-01 1.62693078e-01 1.62669751e-01 1.62646368e-01 1.62622929e-01 + 1.62599433e-01 1.62575882e-01 1.62552274e-01 1.62528609e-01 1.62504888e-01 + 1.62481109e-01 1.62457274e-01 1.62433381e-01 1.62409431e-01 1.62385423e-01 + 1.62361357e-01 1.62337233e-01 1.62313050e-01 1.62288810e-01 1.62264510e-01 + 1.62240152e-01 1.62215735e-01 1.62191259e-01 1.62166724e-01 1.62142129e-01 + 1.62117474e-01 1.62092759e-01 1.62067985e-01 1.62043150e-01 1.62018255e-01 + 1.61993299e-01 1.61968282e-01 1.61943204e-01 1.61918065e-01 1.61892865e-01 + 1.61867603e-01 1.61842279e-01 1.61816893e-01 1.61791445e-01 1.61765935e-01 + 1.61740362e-01 1.61714726e-01 1.61689028e-01 1.61663266e-01 1.61637441e-01 + 1.61611552e-01 1.61585600e-01 1.61559583e-01 1.61533503e-01 1.61507358e-01 + 1.61481148e-01 1.61454874e-01 1.61428535e-01 1.61402130e-01 1.61375660e-01 + 1.61349125e-01 1.61322523e-01 1.61295856e-01 1.61269123e-01 1.61242323e-01 + 1.61215456e-01 1.61188522e-01 1.61161522e-01 1.61134454e-01 1.61107319e-01 + 1.61080115e-01 1.61052844e-01 1.61025505e-01 1.60998098e-01 1.60970621e-01 + 1.60943076e-01 1.60915462e-01 1.60887779e-01 1.60860026e-01 1.60832204e-01 + 1.60804311e-01 1.60776349e-01 1.60748316e-01 1.60720212e-01 1.60692038e-01 + 1.60663792e-01 1.60635475e-01 1.60607087e-01 1.60578627e-01 1.60550095e-01 + 1.60521491e-01 1.60492814e-01 1.60464065e-01 1.60435242e-01 1.60406347e-01 + 1.60377378e-01 1.60348335e-01 1.60319219e-01 1.60290028e-01 1.60260764e-01 + 1.60231424e-01 1.60202010e-01 1.60172520e-01 1.60142955e-01 1.60113315e-01 + 1.60083599e-01 1.60053807e-01 1.60023938e-01 1.59993993e-01 1.59963971e-01 + 1.59933872e-01 1.59903696e-01 1.59873442e-01 1.59843110e-01 1.59812700e-01 + 1.59782212e-01 1.59751645e-01 1.59720999e-01 1.59690274e-01 1.59659470e-01 + 1.59628586e-01 1.59597622e-01 1.59566578e-01 1.59535454e-01 1.59504249e-01 + 1.59472963e-01 1.59441595e-01 1.59410146e-01 1.59378616e-01 1.59347003e-01 + 1.59315308e-01 1.59283531e-01 1.59251670e-01 1.59219726e-01 1.59187699e-01 + 1.59155589e-01 1.59123394e-01 1.59091115e-01 1.59058751e-01 1.59026303e-01 + 1.58993770e-01 1.58961151e-01 1.58928446e-01 1.58895656e-01 1.58862779e-01 + 1.58829816e-01 1.58796766e-01 1.58763628e-01 1.58730404e-01 1.58697092e-01 + 1.58663691e-01 1.58630203e-01 1.58596625e-01 1.58562959e-01 1.58529204e-01 + 1.58495359e-01 1.58461425e-01 1.58427400e-01 1.58393285e-01 1.58359079e-01 + 1.58324782e-01 1.58290394e-01 1.58255915e-01 1.58221343e-01 1.58186679e-01 + 1.58151923e-01 1.58117073e-01 1.58082131e-01 1.58047095e-01 1.58011965e-01 + 1.57976741e-01 1.57941422e-01 1.57906009e-01 1.57870501e-01 1.57834897e-01 + 1.57799197e-01 1.57763402e-01 1.57727510e-01 1.57691521e-01 1.57655435e-01 + 1.57619252e-01 1.57582971e-01 1.57546592e-01 1.57510115e-01 1.57473538e-01 + 1.57436863e-01 1.57400088e-01 1.57363214e-01 1.57326239e-01 1.57289164e-01 + 1.57251989e-01 1.57214712e-01 1.57177333e-01 1.57139853e-01 1.57102271e-01 + 1.57064586e-01 1.57026798e-01 1.56988907e-01 1.56950912e-01 1.56912813e-01 + 1.56874610e-01 1.56836302e-01 1.56797890e-01 1.56759371e-01 1.56720748e-01 + 1.56682017e-01 1.56643181e-01 1.56604237e-01 1.56565187e-01 1.56526028e-01 + 1.56486762e-01 1.56447387e-01 1.56407903e-01 1.56368311e-01 1.56328609e-01 + 1.56288796e-01 1.56248874e-01 1.56208841e-01 1.56168697e-01 1.56128441e-01 + 1.56088074e-01 1.56047594e-01 1.56007002e-01 1.55966297e-01 1.55925478e-01 + 1.55884546e-01 1.55843499e-01 1.55802338e-01 1.55761062e-01 1.55719670e-01 + 1.55678163e-01 1.55636539e-01 1.55594799e-01 1.55552941e-01 1.55510966e-01 + 1.55468873e-01 1.55426662e-01 1.55384333e-01 1.55341884e-01 1.55299315e-01 + 1.55256627e-01 1.55213818e-01 1.55170888e-01 1.55127838e-01 1.55084665e-01 + 1.55041370e-01 1.54997953e-01 1.54954413e-01 1.54910749e-01 1.54866961e-01 + 1.54823050e-01 1.54779013e-01 1.54734851e-01 1.54690564e-01 1.54646150e-01 + 1.54601610e-01 1.54556943e-01 1.54512149e-01 1.54467226e-01 1.54422176e-01 + 1.54376996e-01 1.54331687e-01 1.54286249e-01 1.54240680e-01 1.54194981e-01 + 1.54149150e-01 1.54103188e-01 1.54057094e-01 1.54010867e-01 1.53964507e-01 + 1.53918014e-01 1.53871386e-01 1.53824625e-01 1.53777728e-01 1.53730696e-01 + 1.53683527e-01 1.53636223e-01 1.53588781e-01 1.53541202e-01 1.53493486e-01 + 1.53445630e-01 1.53397636e-01 1.53349503e-01 1.53301229e-01 1.53252815e-01 + 1.53204260e-01 1.53155564e-01 1.53106726e-01 1.53057745e-01 1.53008621e-01 + 1.52959354e-01 1.52909943e-01 1.52860387e-01 1.52810686e-01 1.52760840e-01 + 1.52710847e-01 1.52660708e-01 1.52610421e-01 1.52559987e-01 1.52509404e-01 + 1.52458673e-01 1.52407792e-01 1.52356762e-01 1.52305580e-01 1.52254248e-01 + 1.52202764e-01 1.52151129e-01 1.52099340e-01 1.52047398e-01 1.51995302e-01 + 1.51943052e-01 1.51890647e-01 1.51838087e-01 1.51785370e-01 1.51732497e-01 + 1.51679467e-01 1.51626279e-01 1.51572932e-01 1.51519426e-01 1.51465761e-01 + 1.51411936e-01 1.51357950e-01 1.51303802e-01 1.51249493e-01 1.51195021e-01 + 1.51140386e-01 1.51085587e-01 1.51030624e-01 1.50975496e-01 1.50920202e-01 + 1.50864742e-01 1.50809116e-01 1.50753322e-01 1.50697360e-01 1.50641229e-01 + 1.50584929e-01 1.50528459e-01 1.50471818e-01 1.50415007e-01 1.50358023e-01 + 1.50300867e-01 1.50243538e-01 1.50186035e-01 1.50128358e-01 1.50070506e-01 + 1.50012478e-01 1.49954274e-01 1.49895893e-01 1.49837334e-01 1.49778596e-01 + 1.49719680e-01 1.49660584e-01 1.49601308e-01 1.49541850e-01 1.49482211e-01 + 1.49422390e-01 1.49362385e-01 1.49302197e-01 1.49241824e-01 1.49181266e-01 + 1.49120523e-01 1.49059593e-01 1.48998475e-01 1.48937170e-01 1.48875676e-01 + 1.48813992e-01 1.48752119e-01 1.48690055e-01 1.48627799e-01 1.48565351e-01 + 1.48502710e-01 1.48439876e-01 1.48376847e-01 1.48313623e-01 1.48250203e-01 + 1.48186586e-01 1.48122773e-01 1.48058761e-01 1.47994550e-01 1.47930139e-01 + 1.47865528e-01 1.47800717e-01 1.47735703e-01 1.47670486e-01 1.47605066e-01 + 1.47539442e-01 1.47473613e-01 1.47407579e-01 1.47341337e-01 1.47274889e-01 + 1.47208232e-01 1.47141367e-01 1.47074292e-01 1.47007006e-01 1.46939509e-01 + 1.46871800e-01 1.46803878e-01 1.46735743e-01 1.46667393e-01 1.46598827e-01 + 1.46530046e-01 1.46461047e-01 1.46391831e-01 1.46322396e-01 1.46252742e-01 + 1.46182867e-01 1.46112772e-01 1.46042454e-01 1.45971913e-01 1.45901149e-01 + 1.45830160e-01 1.45758946e-01 1.45687506e-01 1.45615839e-01 1.45543943e-01 + 1.45471819e-01 1.45399465e-01 1.45326880e-01 1.45254064e-01 1.45181016e-01 + 1.45107734e-01 1.45034218e-01 1.44960467e-01 1.44886480e-01 1.44812256e-01 + 1.44737795e-01 1.44663094e-01 1.44588154e-01 1.44512974e-01 1.44437552e-01 + 1.44361888e-01 1.44285981e-01 1.44209829e-01 1.44133432e-01 1.44056789e-01 + 1.43979899e-01 1.43902761e-01 1.43825374e-01 1.43747737e-01 1.43669849e-01 + 1.43591710e-01 1.43513317e-01 1.43434671e-01 1.43355770e-01 1.43276613e-01 + 1.43197200e-01 1.43117528e-01 1.43037599e-01 1.42957409e-01 1.42876959e-01 + 1.42796247e-01 1.42715272e-01 1.42634034e-01 1.42552530e-01 1.42470761e-01 + 1.42388726e-01 1.42306422e-01 1.42223850e-01 1.42141007e-01 1.42057894e-01 + 1.41974509e-01 1.41890851e-01 1.41806919e-01 1.41722711e-01 1.41638228e-01 + 1.41553467e-01 1.41468428e-01 1.41383109e-01 1.41297511e-01 1.41211630e-01 + 1.41125467e-01 1.41039020e-01 1.40952288e-01 1.40865271e-01 1.40777966e-01 + 1.40690373e-01 1.40602491e-01 1.40514319e-01 1.40425855e-01 1.40337099e-01 + 1.40248048e-01 1.40158703e-01 1.40069062e-01 1.39979124e-01 1.39888888e-01 + 1.39798352e-01 1.39707515e-01 1.39616377e-01 1.39524936e-01 1.39433191e-01 + 1.39341140e-01 1.39248784e-01 1.39156119e-01 1.39063146e-01 1.38969862e-01 + 1.38876268e-01 1.38782361e-01 1.38688141e-01 1.38593606e-01 1.38498755e-01 + 1.38403586e-01 1.38308099e-01 1.38212293e-01 1.38116166e-01 1.38019716e-01 + 1.37922943e-01 1.37825846e-01 1.37728423e-01 1.37630672e-01 1.37532594e-01 + 1.37434185e-01 1.37335446e-01 1.37236375e-01 1.37136970e-01 1.37037230e-01 + 1.36937155e-01 1.36836742e-01 1.36735991e-01 1.36634900e-01 1.36533467e-01 + 1.36431692e-01 1.36329574e-01 1.36227110e-01 1.36124300e-01 1.36021142e-01 + 1.35917635e-01 1.35813778e-01 1.35709568e-01 1.35605006e-01 1.35500089e-01 + 1.35394817e-01 1.35289187e-01 1.35183199e-01 1.35076851e-01 1.34970142e-01 + 1.34863070e-01 1.34755634e-01 1.34647833e-01 1.34539665e-01 1.34431128e-01 + 1.34322223e-01 1.34212946e-01 1.34103297e-01 1.33993274e-01 1.33882876e-01 + 1.33772101e-01 1.33660948e-01 1.33549416e-01 1.33437503e-01 1.33325207e-01 + 1.33212528e-01 1.33099463e-01 1.32986012e-01 1.32872172e-01 1.32757943e-01 + 1.32643323e-01 1.32528310e-01 1.32412904e-01 1.32297101e-01 1.32180902e-01 + 1.32064305e-01 1.31947307e-01 1.31829908e-01 1.31712106e-01 1.31593899e-01 + 1.31475287e-01 1.31356267e-01 1.31236838e-01 1.31116998e-01 1.30996746e-01 + 1.30876081e-01 1.30755001e-01 1.30633504e-01 1.30511588e-01 1.30389253e-01 + 1.30266497e-01 1.30143318e-01 1.30019714e-01 1.29895684e-01 1.29771227e-01 + 1.29646341e-01 1.29521024e-01 1.29395274e-01 1.29269091e-01 1.29142472e-01 + 1.29015417e-01 1.28887922e-01 1.28759987e-01 1.28631611e-01 1.28502791e-01 + 1.28373525e-01 1.28243813e-01 1.28113653e-01 1.27983043e-01 1.27851981e-01 + 1.27720466e-01 1.27588496e-01 1.27456070e-01 1.27323186e-01 1.27189841e-01 + 1.27056036e-01 1.26921767e-01 1.26787033e-01 1.26651833e-01 1.26516166e-01 + 1.26380028e-01 1.26243419e-01 1.26106337e-01 1.25968780e-01 1.25830747e-01 + 1.25692235e-01 1.25553244e-01 1.25413771e-01 1.25273815e-01 1.25133375e-01 + 1.24992448e-01 1.24851032e-01 1.24709127e-01 1.24566730e-01 1.24423839e-01 + 1.24280454e-01 1.24136571e-01 1.23992190e-01 1.23847309e-01 1.23701926e-01 + 1.23556040e-01 1.23409647e-01 1.23262748e-01 1.23115340e-01 1.22967422e-01 + 1.22818991e-01 1.22670046e-01 1.22520585e-01 1.22370607e-01 1.22220110e-01 + 1.22069091e-01 1.21917550e-01 1.21765484e-01 1.21612892e-01 1.21459773e-01 + 1.21306123e-01 1.21151942e-01 1.20997228e-01 1.20841979e-01 1.20686193e-01 + 1.20529869e-01 1.20373004e-01 1.20215598e-01 1.20057648e-01 1.19899152e-01 + 1.19740109e-01 1.19580518e-01 1.19420375e-01 1.19259680e-01 1.19098431e-01 + 1.18936626e-01 1.18774263e-01 1.18611341e-01 1.18447857e-01 1.18283810e-01 + 1.18119199e-01 1.17954021e-01 1.17788276e-01 1.17621960e-01 1.17455072e-01 + 1.17287611e-01 1.17119575e-01 1.16950961e-01 1.16781770e-01 1.16611997e-01 + 1.16441643e-01 1.16270705e-01 1.16099181e-01 1.15927070e-01 1.15754370e-01 + 1.15581079e-01 1.15407195e-01 1.15232718e-01 1.15057644e-01 1.14881973e-01 + 1.14705703e-01 1.14528831e-01 1.14351357e-01 1.14173279e-01 1.13994594e-01 + 1.13815302e-01 1.13635400e-01 1.13454887e-01 1.13273762e-01 1.13092022e-01 + 1.12909666e-01 1.12726692e-01 1.12543099e-01 1.12358884e-01 1.12174047e-01 + 1.11988586e-01 1.11802499e-01 1.11615785e-01 1.11428441e-01 1.11240467e-01 + 1.11051860e-01 1.10862619e-01 1.10672743e-01 1.10482230e-01 1.10291079e-01 + 1.10099287e-01 1.09906853e-01 1.09713777e-01 1.09520055e-01 1.09325688e-01 + 1.09130672e-01 1.08935008e-01 1.08738692e-01 1.08541725e-01 1.08344104e-01 + 1.08145827e-01 1.07946894e-01 1.07747304e-01 1.07547053e-01 1.07346142e-01 + 1.07144569e-01 1.06942333e-01 1.06739431e-01 1.06535863e-01 1.06331627e-01 + 1.06126723e-01 1.05921148e-01 1.05714902e-01 1.05507982e-01 1.05300389e-01 + 1.05092120e-01 1.04883175e-01 1.04673552e-01 1.04463250e-01 1.04252268e-01 + 1.04040604e-01 1.03828258e-01 1.03615228e-01 1.03401513e-01 1.03187113e-01 + 1.02972026e-01 1.02756250e-01 1.02539786e-01 1.02322631e-01 1.02104785e-01 + 1.01886248e-01 1.01667017e-01 1.01447092e-01 1.01226473e-01 1.01005158e-01 + 1.00783146e-01 1.00560436e-01 1.00337028e-01 1.00112922e-01 9.98881150e-02 + 9.96626076e-02 9.94363989e-02 9.92094881e-02 9.89818746e-02 9.87535577e-02 + 9.85245367e-02 9.82948112e-02 9.80643804e-02 9.78332440e-02 9.76014013e-02 + 9.73688518e-02 9.71355952e-02 9.69016310e-02 9.66669588e-02 9.64315783e-02 + 9.61954891e-02 9.59586908e-02 9.57211834e-02 9.54829664e-02 9.52440398e-02 + 9.50044033e-02 9.47640568e-02 9.45230003e-02 9.42812335e-02 9.40387567e-02 + 9.37955696e-02 9.35516725e-02 9.33070653e-02 9.30617482e-02 9.28157214e-02 + 9.25689850e-02 9.23215393e-02 9.20733846e-02 9.18245212e-02 9.15749495e-02 + 9.13246699e-02 9.10736827e-02 9.08219886e-02 9.05695880e-02 9.03164816e-02 + 9.00626699e-02 8.98081536e-02 8.95529334e-02 8.92970102e-02 8.90403847e-02 + 8.87830577e-02 8.85250303e-02 8.82663032e-02 8.80068776e-02 8.77467546e-02 + 8.74859351e-02 8.72244204e-02 8.69622117e-02 8.66993103e-02 8.64357174e-02 + 8.61714345e-02 8.59064630e-02 8.56408044e-02 8.53744602e-02 8.51074320e-02 + 8.48397215e-02 8.45713304e-02 8.43022605e-02 8.40325136e-02 8.37620916e-02 + 8.34909965e-02 8.32192302e-02 8.29467950e-02 8.26736929e-02 8.23999262e-02 + 8.21254970e-02 8.18504079e-02 8.15746611e-02 8.12982592e-02 8.10212047e-02 + 8.07435002e-02 8.04651484e-02 8.01861521e-02 7.99065141e-02 7.96262372e-02 + 7.93453246e-02 7.90637791e-02 7.87816039e-02 7.84988023e-02 7.82153774e-02 + 7.79313327e-02 7.76466715e-02 7.73613974e-02 7.70755139e-02 7.67890246e-02 + 7.65019334e-02 7.62142440e-02 7.59259604e-02 7.56370865e-02 7.53476263e-02 + 7.50575841e-02 7.47669641e-02 7.44757706e-02 7.41840079e-02 7.38916807e-02 + 7.35987934e-02 7.33053507e-02 7.30113575e-02 7.27168185e-02 7.24217387e-02 + 7.21261231e-02 7.18299768e-02 7.15333051e-02 7.12361133e-02 7.09384067e-02 + 7.06401909e-02 7.03414715e-02 7.00422541e-02 6.97425446e-02 6.94423488e-02 + 6.91416728e-02 6.88405225e-02 6.85389043e-02 6.82368244e-02 6.79342891e-02 + 6.76313050e-02 6.73278787e-02 6.70240169e-02 6.67197264e-02 6.64150140e-02 + 6.61098869e-02 6.58043520e-02 6.54984168e-02 6.51920884e-02 6.48853744e-02 + 6.45782823e-02 6.42708198e-02 6.39629946e-02 6.36548146e-02 6.33462879e-02 + 6.30374225e-02 6.27282267e-02 6.24187088e-02 6.21088773e-02 6.17987406e-02 + 6.14883076e-02 6.11775870e-02 6.08665877e-02 6.05553188e-02 6.02437893e-02 + 5.99320086e-02 5.96199860e-02 5.93077311e-02 5.89952534e-02 5.86825627e-02 + 5.83696689e-02 5.80565818e-02 5.77433118e-02 5.74298688e-02 5.71162634e-02 + 5.68025058e-02 5.64886069e-02 5.61745771e-02 5.58604274e-02 5.55461687e-02 + 5.52318121e-02 5.49173687e-02 5.46028499e-02 5.42882672e-02 5.39736321e-02 + 5.36589562e-02 5.33442514e-02 5.30295296e-02 5.27148029e-02 5.24000835e-02 + 5.20853836e-02 5.17707158e-02 5.14560924e-02 5.11415263e-02 5.08270302e-02 + 5.05126170e-02 5.01982998e-02 4.98840918e-02 4.95700061e-02 4.92560564e-02 + 4.89422560e-02 4.86286186e-02 4.83151580e-02 4.80018882e-02 4.76888231e-02 + 4.73759769e-02 4.70633638e-02 4.67509982e-02 4.64388946e-02 4.61270676e-02 + 4.58155320e-02 4.55043026e-02 4.51933944e-02 4.48828225e-02 4.45726020e-02 + 4.42627483e-02 4.39532767e-02 4.36442030e-02 4.33355426e-02 4.30273114e-02 + 4.27195253e-02 4.24122002e-02 4.21053521e-02 4.17989974e-02 4.14931524e-02 + 4.11878333e-02 4.08830568e-02 4.05788395e-02 4.02751981e-02 3.99721494e-02 + 3.96697104e-02 3.93678979e-02 3.90667293e-02 3.87662217e-02 3.84663923e-02 + 3.81672586e-02 3.78688381e-02 3.75711484e-02 3.72742070e-02 3.69780319e-02 + 3.66826407e-02 3.63880515e-02 3.60942822e-02 3.58013509e-02 3.55092758e-02 + 3.52180750e-02 3.49277670e-02 3.46383700e-02 3.43499026e-02 3.40623832e-02 + 3.37758304e-02 3.34902629e-02 3.32056994e-02 3.29221586e-02 3.26396593e-02 + 3.23582205e-02 3.20778611e-02 3.17986000e-02 3.15204562e-02 3.12434489e-02 + 3.09675972e-02 3.06929202e-02 3.04194370e-02 3.01471670e-02 2.98761294e-02 + 2.96063435e-02 2.93378286e-02 2.90706040e-02 2.88046891e-02 2.85401033e-02 + 2.82768660e-02 2.80149966e-02 2.77545145e-02 2.74954392e-02 2.72377901e-02 + 2.69815866e-02 2.67268481e-02 2.64735941e-02 2.62218441e-02 2.59716174e-02 + 2.57229334e-02 2.54758115e-02 2.52302711e-02 2.49863315e-02 2.47440120e-02 + 2.45033320e-02 2.42643105e-02 2.40269669e-02 2.37913204e-02 2.35573900e-02 + 2.33251949e-02 2.30947540e-02 2.28660864e-02 2.26392110e-02 2.24141466e-02 + 2.21909120e-02 2.19695260e-02 2.17500072e-02 2.15323742e-02 2.13166455e-02 + 2.11028396e-02 2.08909747e-02 2.06810691e-02 2.04731411e-02 2.02672086e-02 + 2.00632896e-02 1.98614019e-02 1.96615634e-02 1.94637917e-02 1.92681043e-02 + 1.90745186e-02 1.88830519e-02 1.86937213e-02 1.85065440e-02 1.83215368e-02 + 1.81387165e-02 1.79580998e-02 1.77797030e-02 1.76035426e-02 1.74296348e-02 + 1.72579956e-02 1.70886409e-02 1.69215864e-02 1.67568478e-02 1.65944402e-02 + 1.64343791e-02 1.62766795e-02 1.61213562e-02 1.59684240e-02 1.58178973e-02 + 1.56697904e-02 1.55241176e-02 1.53808927e-02 1.52401295e-02 1.51018416e-02 + 1.49660422e-02 1.48327446e-02 1.47019616e-02 1.45737059e-02 1.44479901e-02 + 1.43248264e-02 1.42042269e-02 1.40862035e-02 1.39707676e-02 1.38579308e-02 + 1.37477041e-02 1.36400985e-02 1.35351246e-02 1.34327929e-02 1.33331135e-02 + 1.32360964e-02 1.31417514e-02 1.30500877e-02 1.29611147e-02 1.28748412e-02 + 1.27912760e-02 1.27104274e-02 1.26323037e-02 1.25569127e-02 1.24842620e-02 + 1.24143590e-02 1.23472109e-02 1.22828243e-02 1.22212060e-02 1.21623621e-02 + 1.21062986e-02 1.20530213e-02 1.20025356e-02 1.19548467e-02 1.19099595e-02 + 1.18678785e-02 1.18286081e-02 1.17921522e-02 1.17585148e-02 1.17276991e-02 + 1.16997084e-02 1.16745455e-02 1.16522130e-02 1.16327133e-02 1.16160484e-02 + 1.16022198e-02 1.15912292e-02 1.15830776e-02 1.15777658e-02 1.15752944e-02 + 1.15756637e-02 1.15788736e-02 1.15849238e-02 1.15938137e-02 1.16055423e-02 + 1.16201084e-02 1.16375106e-02 1.16577471e-02 1.16808156e-02 1.17067140e-02 + 1.17354395e-02 1.17669892e-02 1.18013598e-02 1.18385478e-02 1.18785493e-02 + 1.19213604e-02 1.19669765e-02 1.20153931e-02 1.20666051e-02 1.21206073e-02 + 1.21773942e-02 1.22369601e-02 1.22992988e-02 1.23644040e-02 1.24322691e-02 + 1.25028871e-02 1.25762510e-02 1.26523533e-02 1.27311863e-02 1.28127420e-02 + 1.28970121e-02 1.29839883e-02 1.30736618e-02 1.31660235e-02 1.32610642e-02 + 1.33587744e-02 1.34591444e-02 1.35621641e-02 1.36678232e-02 1.37761113e-02 + 1.38870177e-02 1.40005314e-02 1.41166411e-02 1.42353355e-02 1.43566028e-02 + 1.44804312e-02 1.46068085e-02 1.47357225e-02 1.48671606e-02 1.50011099e-02 + 1.51375576e-02 1.52764904e-02 1.54178949e-02 1.55617576e-02 1.57080646e-02 + 1.58568020e-02 1.60079555e-02 1.61615108e-02 1.63174534e-02 1.64757685e-02 + 1.66364411e-02 1.67994562e-02 1.69647985e-02 1.71324525e-02 1.73024027e-02 + 1.74746333e-02 1.76491283e-02 1.78258717e-02 1.80048472e-02 1.81860385e-02 + 1.83694290e-02 1.85550020e-02 1.87427408e-02 1.89326284e-02 1.91246477e-02 + 1.93187815e-02 1.95150125e-02 1.97133233e-02 1.99136963e-02 2.01161138e-02 + 2.03205580e-02 2.05270111e-02 2.07354551e-02 2.09458718e-02 2.11582431e-02 + 2.13725507e-02 2.15887763e-02 2.18069014e-02 2.20269075e-02 2.22487759e-02 + 2.24724880e-02 2.26980251e-02 2.29253683e-02 2.31544988e-02 2.33853976e-02 + 2.36180458e-02 2.38524242e-02 2.40885138e-02 2.43262955e-02 2.45657500e-02 + 2.48068582e-02 2.50496007e-02 2.52939584e-02 2.55399119e-02 2.57874418e-02 + 2.60365287e-02 2.62871534e-02 2.65392963e-02 2.67929381e-02 2.70480593e-02 + 2.73046406e-02 2.75626624e-02 2.78221053e-02 2.80829500e-02 2.83451769e-02 + 2.86087667e-02 2.88736999e-02 2.91399572e-02 2.94075191e-02 2.96763664e-02 + 2.99464796e-02 3.02178395e-02 3.04904267e-02 3.07642221e-02 3.10392064e-02 + 3.13153605e-02 3.15926651e-02 3.18711011e-02 3.21506496e-02 3.24312916e-02 + 3.27130079e-02 3.29957798e-02 3.32795883e-02 3.35644146e-02 3.38502401e-02 + 3.41370460e-02 3.44248137e-02 3.47135246e-02 3.50031602e-02 3.52937021e-02 + 3.55851319e-02 3.58774314e-02 3.61705823e-02 3.64645665e-02 3.67593660e-02 + 3.70549627e-02 3.73513388e-02 3.76484764e-02 3.79463579e-02 3.82449655e-02 + 3.85442817e-02 3.88442891e-02 3.91449703e-02 3.94463079e-02 3.97482849e-02 + 4.00508841e-02 4.03540886e-02 4.06578813e-02 4.09622456e-02 4.12671648e-02 + 4.15726221e-02 4.18786013e-02 4.21850858e-02 4.24920594e-02 4.27995060e-02 + 4.31074094e-02 4.34157537e-02 4.37245230e-02 4.40337017e-02 4.43432741e-02 + 4.46532246e-02 4.49635380e-02 4.52741988e-02 4.55851920e-02 4.58965024e-02 + 4.62081152e-02 4.65200155e-02 4.68321886e-02 4.71446199e-02 4.74572950e-02 + 4.77701996e-02 4.80833192e-02 4.83966400e-02 4.87101479e-02 4.90238289e-02 + 4.93376695e-02 4.96516559e-02 4.99657746e-02 5.02800123e-02 5.05943557e-02 + 5.09087917e-02 5.12233073e-02 5.15378895e-02 5.18525256e-02 5.21672030e-02 + 5.24819092e-02 5.27966317e-02 5.31113583e-02 5.34260768e-02 5.37407752e-02 + 5.40554416e-02 5.43700642e-02 5.46846314e-02 5.49991317e-02 5.53135536e-02 + 5.56278858e-02 5.59421172e-02 5.62562368e-02 5.65702336e-02 5.68840968e-02 + 5.71978158e-02 5.75113800e-02 5.78247790e-02 5.81380025e-02 5.84510402e-02 + 5.87638822e-02 5.90765185e-02 5.93889392e-02 5.97011346e-02 6.00130952e-02 + 6.03248115e-02 6.06362741e-02 6.09474738e-02 6.12584015e-02 6.15690482e-02 + 6.18794050e-02 6.21894631e-02 6.24992140e-02 6.28086489e-02 6.31177596e-02 + 6.34265377e-02 6.37349751e-02 6.40430636e-02 6.43507952e-02 6.46581622e-02 + 6.49651567e-02 6.52717712e-02 6.55779981e-02 6.58838299e-02 6.61892594e-02 + 6.64942794e-02 6.67988828e-02 6.71030625e-02 6.74068117e-02 6.77101237e-02 + 6.80129917e-02 6.83154092e-02 6.86173697e-02 6.89188669e-02 6.92198944e-02 + 6.95204462e-02 6.98205161e-02 7.01200982e-02 7.04191867e-02 7.07177757e-02 + 7.10158596e-02 7.13134329e-02 7.16104900e-02 7.19070256e-02 7.22030344e-02 + 7.24985112e-02 7.27934509e-02 7.30878484e-02 7.33816990e-02 7.36749977e-02 + 7.39677398e-02 7.42599207e-02 7.45515358e-02 7.48425807e-02 7.51330509e-02 + 7.54229421e-02 7.57122502e-02 7.60009711e-02 7.62891006e-02 7.65766348e-02 + 7.68635699e-02 7.71499020e-02 7.74356274e-02 7.77207425e-02 7.80052438e-02 + 7.82891277e-02 7.85723908e-02 7.88550299e-02 7.91370416e-02 7.94184229e-02 + 7.96991705e-02 7.99792815e-02 8.02587530e-02 8.05375820e-02 8.08157657e-02 + 8.10933015e-02 8.13701866e-02 8.16464184e-02 8.19219944e-02 8.21969122e-02 + 8.24711693e-02 8.27447635e-02 8.30176924e-02 8.32899539e-02 8.35615458e-02 + 8.38324661e-02 8.41027128e-02 8.43722839e-02 8.46411775e-02 8.49093918e-02 + 8.51769250e-02 8.54437756e-02 8.57099417e-02 8.59754218e-02 8.62402144e-02 + 8.65043180e-02 8.67677312e-02 8.70304527e-02 8.72924810e-02 8.75538151e-02 + 8.78144536e-02 8.80743954e-02 8.83336395e-02 8.85921847e-02 8.88500302e-02 + 8.91071748e-02 8.93636178e-02 8.96193583e-02 8.98743956e-02 9.01287287e-02 + 9.03823571e-02 9.06352801e-02 9.08874971e-02 9.11390074e-02 9.13898107e-02 + 9.16399063e-02 9.18892939e-02 9.21379731e-02 9.23859434e-02 9.26332047e-02 + 9.28797566e-02 9.31255989e-02 9.33707315e-02 9.36151540e-02 9.38588666e-02 + 9.41018690e-02 9.43441612e-02 9.45857433e-02 9.48266152e-02 9.50667771e-02 + 9.53062290e-02 9.55449711e-02 9.57830036e-02 9.60203266e-02 9.62569405e-02 + 9.64928454e-02 9.67280417e-02 9.69625298e-02 9.71963100e-02 9.74293827e-02 + 9.76617483e-02 9.78934074e-02 9.81243603e-02 9.83546076e-02 9.85841499e-02 + 9.88129878e-02 9.90411218e-02 9.92685525e-02 9.94952807e-02 9.97213070e-02 + 9.99466321e-02 1.00171257e-01 1.00395182e-01 1.00618408e-01 1.00840936e-01 + 1.01062766e-01 1.01283901e-01 1.01504340e-01 1.01724084e-01 1.01943134e-01 + 1.02161492e-01 1.02379158e-01 1.02596133e-01 1.02812418e-01 1.03028014e-01 + 1.03242923e-01 1.03457145e-01 1.03670682e-01 1.03883534e-01 1.04095702e-01 + 1.04307189e-01 1.04517994e-01 1.04728119e-01 1.04937566e-01 1.05146335e-01 + 1.05354428e-01 1.05561846e-01 1.05768590e-01 1.05974662e-01 1.06180062e-01 + 1.06384793e-01 1.06588855e-01 1.06792249e-01 1.06994978e-01 1.07197042e-01 + 1.07398443e-01 1.07599182e-01 1.07799261e-01 1.07998680e-01 1.08197442e-01 + 1.08395548e-01 1.08592999e-01 1.08789797e-01 1.08985943e-01 1.09181439e-01 + 1.09376286e-01 1.09570485e-01 1.09764039e-01 1.09956948e-01 1.10149214e-01 + 1.10340840e-01 1.10531825e-01 1.10722172e-01 1.10911883e-01 1.11100959e-01 + 1.11289401e-01 1.11477211e-01 1.11664391e-01 1.11850942e-01 1.12036866e-01 + 1.12222165e-01 1.12406840e-01 1.12590892e-01 1.12774325e-01 1.12957138e-01 + 1.13139333e-01 1.13320913e-01 1.13501880e-01 1.13682233e-01 1.13861976e-01 + 1.14041111e-01 1.14219637e-01 1.14397559e-01 1.14574876e-01 1.14751591e-01 + 1.14927705e-01 1.15103221e-01 1.15278139e-01 1.15452462e-01 1.15626191e-01 + 1.15799328e-01 1.15971875e-01 1.16143834e-01 1.16315205e-01 1.16485991e-01 + 1.16656194e-01 1.16825815e-01 1.16994856e-01 1.17163320e-01 1.17331206e-01 + 1.17498518e-01 1.17665257e-01 1.17831424e-01 1.17997022e-01 1.18162053e-01 + 1.18326517e-01 1.18490417e-01 1.18653754e-01 1.18816531e-01 1.18978749e-01 + 1.19140409e-01 1.19301514e-01 1.19462065e-01 1.19622064e-01 1.19781513e-01 + 1.19940414e-01 1.20098767e-01 1.20256576e-01 1.20413841e-01 1.20570565e-01 + 1.20726749e-01 1.20882395e-01 1.21037505e-01 1.21192080e-01 1.21346123e-01 + 1.21499635e-01 1.21652617e-01 1.21805072e-01 1.21957001e-01 1.22108406e-01 + 1.22259289e-01 1.22409651e-01 1.22559495e-01 1.22708821e-01 1.22857632e-01 + 1.23005930e-01 1.23153715e-01 1.23300991e-01 1.23447758e-01 1.23594019e-01 + 1.23739774e-01 1.23885027e-01 1.24029777e-01 1.24174028e-01 1.24317781e-01 + 1.24461038e-01 1.24603800e-01 1.24746069e-01 1.24887847e-01 1.25029136e-01 + 1.25169936e-01 1.25310251e-01 1.25450081e-01 1.25589428e-01 1.25728294e-01 + 1.25866681e-01 1.26004590e-01 1.26142024e-01 1.26278983e-01 1.26415469e-01 + 1.26551484e-01 1.26687030e-01 1.26822109e-01 1.26956721e-01 1.27090870e-01 + 1.27224555e-01 1.27357780e-01 1.27490545e-01 1.27622852e-01 1.27754704e-01 + 1.27886101e-01 1.28017045e-01 1.28147538e-01 1.28277582e-01 1.28407177e-01 + 1.28536327e-01 1.28665031e-01 1.28793293e-01 1.28921113e-01 1.29048493e-01 + 1.29175435e-01 1.29301941e-01 1.29428011e-01 1.29553648e-01 1.29678853e-01 + 1.29803627e-01 1.29927973e-01 1.30051892e-01 1.30175385e-01 1.30298454e-01 + 1.30421101e-01 1.30543327e-01 1.30665133e-01 1.30786522e-01 1.30907494e-01 + 1.31028051e-01 1.31148196e-01 1.31267929e-01 1.31387251e-01 1.31506165e-01 + 1.31624672e-01 1.31742773e-01 1.31860470e-01 1.31977765e-01 1.32094658e-01 + 1.32211152e-01 1.32327248e-01 1.32442947e-01 1.32558252e-01 1.32673162e-01 + 1.32787680e-01 1.32901808e-01 1.33015546e-01 1.33128897e-01 1.33241861e-01 + 1.33354441e-01 1.33466637e-01 1.33578451e-01 1.33689884e-01 1.33800939e-01 + 1.33911615e-01 1.34021916e-01 1.34131841e-01 1.34241394e-01 1.34350574e-01 + 1.34459383e-01 1.34567824e-01 1.34675896e-01 1.34783602e-01 1.34890944e-01 + 1.34997921e-01 1.35104536e-01 1.35210791e-01 1.35316685e-01 1.35422222e-01 + 1.35527402e-01 1.35632226e-01 1.35736697e-01 1.35840814e-01 1.35944580e-01 + 1.36047997e-01 1.36151064e-01 1.36253784e-01 1.36356158e-01 1.36458187e-01 + 1.36559873e-01 1.36661216e-01 1.36762219e-01 1.36862882e-01 1.36963207e-01 + 1.37063195e-01 1.37162847e-01 1.37262165e-01 1.37361150e-01 1.37459803e-01 + 1.37558126e-01 1.37656119e-01 1.37753784e-01 1.37851123e-01 1.37948136e-01 + 1.38044824e-01 1.38141190e-01 1.38237233e-01 1.38332957e-01 1.38428361e-01 + 1.38523446e-01 1.38618215e-01 1.38712668e-01 1.38806807e-01 1.38900633e-01 + 1.38994146e-01 1.39087349e-01 1.39180241e-01 1.39272826e-01 1.39365103e-01 + 1.39457074e-01 1.39548740e-01 1.39640102e-01 1.39731162e-01 1.39821920e-01 + 1.39912378e-01 1.40002537e-01 1.40092398e-01 1.40181961e-01 1.40271230e-01 + 1.40360203e-01 1.40448884e-01 1.40537272e-01 1.40625368e-01 1.40713175e-01 + 1.40800693e-01 1.40887923e-01 1.40974866e-01 1.41061523e-01 1.41147896e-01 + 1.41233986e-01 1.41319793e-01 1.41405319e-01 1.41490565e-01 1.41575532e-01 + 1.41660220e-01 1.41744632e-01 1.41828768e-01 1.41912628e-01 1.41996216e-01 + 1.42079530e-01 1.42162572e-01 1.42245344e-01 1.42327847e-01 1.42410081e-01 + 1.42492047e-01 1.42573747e-01 1.42655181e-01 1.42736351e-01 1.42817257e-01 + 1.42897901e-01 1.42978283e-01 1.43058405e-01 1.43138268e-01 1.43217872e-01 + 1.43297218e-01 1.43376309e-01 1.43455143e-01 1.43533723e-01 1.43612050e-01 + 1.43690124e-01 1.43767947e-01 1.43845519e-01 1.43922841e-01 1.43999914e-01 + 1.44076740e-01 1.44153319e-01 1.44229652e-01 1.44305740e-01 1.44381584e-01 + 1.44457185e-01 1.44532544e-01 1.44607662e-01 1.44682539e-01 1.44757177e-01 + 1.44831577e-01 1.44905739e-01 1.44979665e-01 1.45053355e-01 1.45126809e-01 + 1.45200031e-01 1.45273019e-01 1.45345774e-01 1.45418299e-01 1.45490593e-01 + 1.45562658e-01 1.45634494e-01 1.45706102e-01 1.45777484e-01 1.45848639e-01 + 1.45919569e-01 1.45990275e-01 1.46060758e-01 1.46131018e-01 1.46201056e-01 + 1.46270873e-01 1.46340470e-01 1.46409848e-01 1.46479008e-01 1.46547950e-01 + 1.46616675e-01 1.46685184e-01 1.46753479e-01 1.46821558e-01 1.46889425e-01 + 1.46957079e-01 1.47024520e-01 1.47091751e-01 1.47158772e-01 1.47225583e-01 + 1.47292185e-01 1.47358580e-01 1.47424768e-01 1.47490749e-01 1.47556524e-01 + 1.47622095e-01 1.47687462e-01 1.47752626e-01 1.47817587e-01 1.47882347e-01 + 1.19316516e-02 1.17837661e-02 1.16368916e-02 1.14910312e-02 1.13461881e-02 + 1.12023652e-02 1.10595657e-02 1.09177924e-02 1.07770486e-02 1.06373371e-02 + 1.04986608e-02 1.03610229e-02 1.02244262e-02 1.00888736e-02 9.95436796e-03 + 9.82091227e-03 9.68850936e-03 9.55716205e-03 9.42687318e-03 9.29764555e-03 + 9.16948195e-03 9.04238514e-03 8.91635788e-03 8.79140288e-03 8.66752287e-03 + 8.54472052e-03 8.42299850e-03 8.30235947e-03 8.18280604e-03 8.06434082e-03 + 7.94696640e-03 7.83068535e-03 7.71550020e-03 7.60141348e-03 7.48842769e-03 + 7.37654531e-03 7.26576880e-03 7.15610060e-03 7.04754311e-03 6.94009874e-03 + 6.83376985e-03 6.72855879e-03 6.62446789e-03 6.52149946e-03 6.41965576e-03 + 6.31893907e-03 6.21935162e-03 6.12089562e-03 6.02357326e-03 5.92738670e-03 + 5.83233810e-03 5.73842957e-03 5.64566320e-03 5.55404108e-03 5.46356524e-03 + 5.37423772e-03 5.28606051e-03 5.19903560e-03 5.11316493e-03 5.02845043e-03 + 4.94489402e-03 4.86249756e-03 4.78126291e-03 4.70119191e-03 4.62228636e-03 + 4.54454803e-03 4.46797870e-03 4.39258007e-03 4.31835387e-03 4.24530177e-03 + 4.17342543e-03 4.10272646e-03 4.03320649e-03 3.96486708e-03 3.89770979e-03 + 3.83173614e-03 3.76694764e-03 3.70334576e-03 3.64093194e-03 3.57970760e-03 + 3.51967415e-03 3.46083296e-03 3.40318535e-03 3.34673266e-03 3.29147617e-03 + 3.23741715e-03 3.18455682e-03 3.13289641e-03 3.08243708e-03 3.03318001e-03 + 2.98512631e-03 2.93827709e-03 2.89263342e-03 2.84819635e-03 2.80496690e-03 + 2.76294607e-03 2.72213481e-03 2.68253407e-03 2.64414475e-03 2.60696775e-03 + 2.57100391e-03 2.53625406e-03 2.50271900e-03 2.47039951e-03 2.43929633e-03 + 2.40941017e-03 2.38074173e-03 2.35329167e-03 2.32706061e-03 2.30204917e-03 + 2.27825792e-03 2.25568742e-03 2.23433817e-03 2.21421068e-03 2.19530540e-03 + 2.17762279e-03 2.16116324e-03 2.14592713e-03 2.13191482e-03 2.11912664e-03 + 2.10756286e-03 2.09722378e-03 2.08810961e-03 2.08022058e-03 2.07355687e-03 + 2.06811863e-03 2.06390598e-03 2.06091903e-03 2.05915784e-03 2.05862245e-03 + 2.05931288e-03 2.06122911e-03 2.06437109e-03 2.06873876e-03 2.07433201e-03 + 2.08115071e-03 2.08919471e-03 2.09846382e-03 2.10895782e-03 2.12067647e-03 + 2.13361950e-03 2.14778662e-03 2.16317748e-03 2.17979175e-03 2.19762903e-03 + 2.21668892e-03 2.23697097e-03 2.25847471e-03 2.28119965e-03 2.30514526e-03 + 2.33031099e-03 2.35669626e-03 2.38430046e-03 2.41312296e-03 2.44316308e-03 + 2.47442014e-03 2.50689342e-03 2.54058217e-03 2.57548561e-03 2.61160294e-03 + 2.64893333e-03 2.68747592e-03 2.72722982e-03 2.76819412e-03 2.81036787e-03 + 2.85375012e-03 2.89833986e-03 2.94413606e-03 2.99113769e-03 3.03934365e-03 + 3.08875285e-03 3.13936416e-03 3.19117640e-03 3.24418841e-03 3.29839896e-03 + 3.35380682e-03 3.41041071e-03 3.46820936e-03 3.52720143e-03 3.58738558e-03 + 3.64876043e-03 3.71132460e-03 3.77507665e-03 3.84001514e-03 3.90613858e-03 + 3.97344547e-03 4.04193428e-03 4.11160346e-03 4.18245143e-03 4.25447658e-03 + 4.32767727e-03 4.40205185e-03 4.47759865e-03 4.55431593e-03 4.63220199e-03 + 4.71125505e-03 4.79147333e-03 4.87285502e-03 4.95539830e-03 5.03910129e-03 + 5.12396213e-03 5.20997890e-03 5.29714966e-03 5.38547247e-03 5.47494535e-03 + 5.56556628e-03 5.65733324e-03 5.75024419e-03 5.84429703e-03 5.93948968e-03 + 6.03582001e-03 6.13328588e-03 6.23188511e-03 6.33161551e-03 6.43247487e-03 + 6.53446095e-03 6.63757148e-03 6.74180419e-03 6.84715676e-03 6.95362687e-03 + 7.06121216e-03 7.16991026e-03 7.27971878e-03 7.39063530e-03 7.50265737e-03 + 7.61578255e-03 7.73000833e-03 7.84533223e-03 7.96175172e-03 8.07926424e-03 + 8.19786724e-03 8.31755813e-03 8.43833428e-03 8.56019309e-03 8.68313189e-03 + 8.80714802e-03 8.93223879e-03 9.05840148e-03 9.18563337e-03 9.31393170e-03 + 9.44329371e-03 9.57371661e-03 9.70519759e-03 9.83773382e-03 9.97132246e-03 + 1.01059606e-02 1.02416455e-02 1.03783741e-02 1.05161435e-02 1.06549508e-02 + 1.07947931e-02 1.09356673e-02 1.10775705e-02 1.12204997e-02 1.13644517e-02 + 1.15094237e-02 1.16554125e-02 1.18024151e-02 1.19504282e-02 1.20994490e-02 + 1.22494741e-02 1.24005005e-02 1.25525250e-02 1.27055444e-02 1.28595555e-02 + 1.30145552e-02 1.31705401e-02 1.33275071e-02 1.34854528e-02 1.36443741e-02 + 1.38042677e-02 1.39651301e-02 1.41269582e-02 1.42897485e-02 1.44534978e-02 + 1.46182027e-02 1.47838598e-02 1.49504657e-02 1.51180170e-02 1.52865103e-02 + 1.54559422e-02 1.56263093e-02 1.57976080e-02 1.59698349e-02 1.61429866e-02 + 1.63170596e-02 1.64920502e-02 1.66679551e-02 1.68447707e-02 1.70224935e-02 + 1.72011198e-02 1.73806462e-02 1.75610691e-02 1.77423848e-02 1.79245899e-02 + 1.81076806e-02 1.82916533e-02 1.84765045e-02 1.86622305e-02 1.88488276e-02 + 1.90362922e-02 1.92246206e-02 1.94138091e-02 1.96038541e-02 1.97947518e-02 + 1.99864985e-02 2.01790905e-02 2.03725242e-02 2.05667957e-02 2.07619013e-02 + 2.09578372e-02 2.11545998e-02 2.13521852e-02 2.15505896e-02 2.17498093e-02 + 2.19498405e-02 2.21506794e-02 2.23523222e-02 2.25547650e-02 2.27580040e-02 + 2.29620355e-02 2.31668555e-02 2.33724603e-02 2.35788460e-02 2.37860087e-02 + 2.39939446e-02 2.42026499e-02 2.44121205e-02 2.46223528e-02 2.48333427e-02 + 2.50450864e-02 2.52575801e-02 2.54708198e-02 2.56848016e-02 2.58995216e-02 + 2.61149759e-02 2.63311606e-02 2.65480717e-02 2.67657054e-02 2.69840578e-02 + 2.72031248e-02 2.74229026e-02 2.76433871e-02 2.78645746e-02 2.80864610e-02 + 2.83090425e-02 2.85323149e-02 2.87562745e-02 2.89809172e-02 2.92062390e-02 + 2.94322361e-02 2.96589045e-02 2.98862402e-02 3.01142392e-02 3.03428976e-02 + 3.05722114e-02 3.08021766e-02 3.10327893e-02 3.12640455e-02 3.14959413e-02 + 3.17284726e-02 3.19616355e-02 3.21954260e-02 3.24298402e-02 3.26648740e-02 + 3.29005236e-02 3.31367848e-02 3.33736539e-02 3.36111267e-02 3.38491993e-02 + 3.40878677e-02 3.43271281e-02 3.45669763e-02 3.48074084e-02 3.50484206e-02 + 3.52900087e-02 3.55321689e-02 3.57748971e-02 3.60181895e-02 3.62620420e-02 + 3.65064508e-02 3.67514117e-02 3.69969210e-02 3.72429746e-02 3.74895686e-02 + 3.77366991e-02 3.79843621e-02 3.82325537e-02 3.84812698e-02 3.87305067e-02 + 3.89802604e-02 3.92305269e-02 3.94813024e-02 3.97325829e-02 3.99843644e-02 + 4.02366431e-02 4.04894151e-02 4.07426765e-02 4.09964234e-02 4.12506518e-02 + 4.15053579e-02 4.17605378e-02 4.20161876e-02 4.22723034e-02 4.25288815e-02 + 4.27859178e-02 4.30434086e-02 4.33013499e-02 4.35597380e-02 4.38185689e-02 + 4.40778389e-02 4.43375441e-02 4.45976807e-02 4.48582449e-02 4.51192328e-02 + 4.53806406e-02 4.56424645e-02 4.59047007e-02 4.61673455e-02 4.64303950e-02 + 4.66938455e-02 4.69576932e-02 4.72219342e-02 4.74865650e-02 4.77515816e-02 + 4.80169804e-02 4.82827576e-02 4.85489095e-02 4.88154324e-02 4.90823225e-02 + 4.93495761e-02 4.96171896e-02 4.98851592e-02 5.01534812e-02 5.04221520e-02 + 5.06911679e-02 5.09605252e-02 5.12302202e-02 5.15002494e-02 5.17706091e-02 + 5.20412956e-02 5.23123054e-02 5.25836347e-02 5.28552801e-02 5.31272378e-02 + 5.33995044e-02 5.36720762e-02 5.39449496e-02 5.42181211e-02 5.44915872e-02 + 5.47653442e-02 5.50393887e-02 5.53137171e-02 5.55883259e-02 5.58632116e-02 + 5.61383707e-02 5.64137997e-02 5.66894951e-02 5.69654535e-02 5.72416713e-02 + 5.75181451e-02 5.77948716e-02 5.80718471e-02 5.83490684e-02 5.86265320e-02 + 5.89042345e-02 5.91821725e-02 5.94603427e-02 5.97387415e-02 6.00173658e-02 + 6.02962120e-02 6.05752770e-02 6.08545573e-02 6.11340496e-02 6.14137506e-02 + 6.16936570e-02 6.19737655e-02 6.22540729e-02 6.25345758e-02 6.28152709e-02 + 6.30961552e-02 6.33772252e-02 6.36584778e-02 6.39399097e-02 6.42215178e-02 + 6.45032988e-02 6.47852496e-02 6.50673669e-02 6.53496477e-02 6.56320887e-02 + 6.59146868e-02 6.61974389e-02 6.64803419e-02 6.67633926e-02 6.70465880e-02 + 6.73299249e-02 6.76134004e-02 6.78970112e-02 6.81807545e-02 6.84646270e-02 + 6.87486259e-02 6.90327480e-02 6.93169904e-02 6.96013501e-02 6.98858240e-02 + 7.01704093e-02 7.04551029e-02 7.07399019e-02 7.10248033e-02 7.13098043e-02 + 7.15949019e-02 7.18800932e-02 7.21653753e-02 7.24507453e-02 7.27362004e-02 + 7.30217377e-02 7.33073544e-02 7.35930475e-02 7.38788144e-02 7.41646521e-02 + 7.44505580e-02 7.47365291e-02 7.50225627e-02 7.53086561e-02 7.55948066e-02 + 7.58810112e-02 7.61672674e-02 7.64535724e-02 7.67399235e-02 7.70263181e-02 + 7.73127534e-02 7.75992267e-02 7.78857354e-02 7.81722770e-02 7.84588486e-02 + 7.87454477e-02 7.90320718e-02 7.93187181e-02 7.96053841e-02 7.98920673e-02 + 8.01787651e-02 8.04654749e-02 8.07521941e-02 8.10389204e-02 8.13256510e-02 + 8.16123836e-02 8.18991157e-02 8.21858447e-02 8.24725683e-02 8.27592839e-02 + 8.30459891e-02 8.33326815e-02 8.36193586e-02 8.39060181e-02 8.41926576e-02 + 8.44792746e-02 8.47658669e-02 8.50524319e-02 8.53389675e-02 8.56254713e-02 + 8.59119408e-02 8.61983740e-02 8.64847683e-02 8.67711216e-02 8.70574315e-02 + 8.73436959e-02 8.76299124e-02 8.79160788e-02 8.82021929e-02 8.84882524e-02 + 8.87742552e-02 8.90601991e-02 8.93460819e-02 8.96319014e-02 8.99176554e-02 + 9.02033419e-02 9.04889586e-02 9.07745035e-02 9.10599745e-02 9.13453694e-02 + 9.16306861e-02 9.19159227e-02 9.22010770e-02 9.24861469e-02 9.27711305e-02 + 9.30560257e-02 9.33408305e-02 9.36255428e-02 9.39101607e-02 9.41946823e-02 + 9.44791055e-02 9.47634283e-02 9.50476489e-02 9.53317653e-02 9.56157755e-02 + 9.58996777e-02 9.61834699e-02 9.64671503e-02 9.67507170e-02 9.70341681e-02 + 9.73175018e-02 9.76007161e-02 9.78838094e-02 9.81667797e-02 9.84496252e-02 + 9.87323442e-02 9.90149348e-02 9.92973954e-02 9.95797240e-02 9.98619190e-02 + 1.00143979e-01 1.00425901e-01 1.00707685e-01 1.00989328e-01 1.01270829e-01 + 1.01552185e-01 1.01833397e-01 1.02114461e-01 1.02395376e-01 1.02676140e-01 + 1.02956752e-01 1.03237211e-01 1.03517513e-01 1.03797659e-01 1.04077646e-01 + 1.04357473e-01 1.04637138e-01 1.04916640e-01 1.05195977e-01 1.05475147e-01 + 1.05754150e-01 1.06032982e-01 1.06311644e-01 1.06590134e-01 1.06868449e-01 + 1.07146589e-01 1.07424552e-01 1.07702336e-01 1.07979941e-01 1.08257365e-01 + 1.08534605e-01 1.08811662e-01 1.09088533e-01 1.09365218e-01 1.09641714e-01 + 1.09918020e-01 1.10194135e-01 1.10470058e-01 1.10745788e-01 1.11021322e-01 + 1.11296660e-01 1.11571800e-01 1.11846741e-01 1.12121482e-01 1.12396021e-01 + 1.12670358e-01 1.12944490e-01 1.13218418e-01 1.13492138e-01 1.13765651e-01 + 1.14038955e-01 1.14312048e-01 1.14584930e-01 1.14857599e-01 1.15130055e-01 + 1.15402295e-01 1.15674319e-01 1.15946126e-01 1.16217714e-01 1.16489083e-01 + 1.16760231e-01 1.17031157e-01 1.17301860e-01 1.17572339e-01 1.17842593e-01 + 1.18112620e-01 1.18382420e-01 1.18651992e-01 1.18921334e-01 1.19190445e-01 + 1.19459326e-01 1.19727973e-01 1.19996387e-01 1.20264566e-01 1.20532510e-01 + 1.20800216e-01 1.21067686e-01 1.21334917e-01 1.21601908e-01 1.21868658e-01 + 1.22135167e-01 1.22401434e-01 1.22667458e-01 1.22933237e-01 1.23198771e-01 + 1.23464058e-01 1.23729099e-01 1.23993892e-01 1.24258436e-01 1.24522731e-01 + 1.24786775e-01 1.25050567e-01 1.25314108e-01 1.25577395e-01 1.25840428e-01 + 1.26103207e-01 1.26365730e-01 1.26627997e-01 1.26890006e-01 1.27151758e-01 + 1.27413251e-01 1.27674484e-01 1.27935457e-01 1.28196169e-01 1.28456619e-01 + 1.28716807e-01 1.28976731e-01 1.29236391e-01 1.29495787e-01 1.29754917e-01 + 1.30013780e-01 1.30272377e-01 1.30530707e-01 1.30788768e-01 1.31046560e-01 + 1.31304083e-01 1.31561335e-01 1.31818316e-01 1.32075026e-01 1.32331463e-01 + 1.32587628e-01 1.32843519e-01 1.33099136e-01 1.33354479e-01 1.33609546e-01 + 1.33864337e-01 1.34118851e-01 1.34373088e-01 1.34627048e-01 1.34880730e-01 + 1.35134132e-01 1.35387255e-01 1.35640099e-01 1.35892661e-01 1.36144943e-01 + 1.36396943e-01 1.36648661e-01 1.36900097e-01 1.37151249e-01 1.37402118e-01 + 1.37652702e-01 1.37903003e-01 1.38153017e-01 1.38402747e-01 1.38652190e-01 + 1.38901347e-01 1.39150217e-01 1.39398799e-01 1.39647094e-01 1.39895100e-01 + 1.40142817e-01 1.40390246e-01 1.40637384e-01 1.40884233e-01 1.41130791e-01 + 1.41377059e-01 1.41623035e-01 1.41868719e-01 1.42114112e-01 1.42359212e-01 + 1.42604020e-01 1.42848534e-01 1.43092755e-01 1.43336681e-01 1.43580314e-01 + 1.43823652e-01 1.44066695e-01 1.44309444e-01 1.44551896e-01 1.44794053e-01 + 1.45035913e-01 1.45277477e-01 1.45518744e-01 1.45759714e-01 1.46000386e-01 + 1.46240761e-01 1.46480838e-01 1.46720616e-01 1.46960096e-01 1.47199277e-01 + 1.47438159e-01 1.47676742e-01 1.47915025e-01 1.48153009e-01 1.48390692e-01 + 1.48628075e-01 1.48865157e-01 1.49101939e-01 1.49338419e-01 1.49574598e-01 + 1.49810476e-01 1.50046052e-01 1.50281327e-01 1.50516299e-01 1.50750969e-01 + 1.50985337e-01 1.51219402e-01 1.51453164e-01 1.51686623e-01 1.51919779e-01 + 1.52152632e-01 1.52385181e-01 1.52617427e-01 1.52849368e-01 1.53081006e-01 + 1.53312340e-01 1.53543370e-01 1.53774095e-01 1.54004516e-01 1.54234632e-01 + 1.54464444e-01 1.54693950e-01 1.54923152e-01 1.55152049e-01 1.55380640e-01 + 1.55608926e-01 1.55836907e-01 1.56064583e-01 1.56291953e-01 1.56519017e-01 + 1.56745775e-01 1.56972228e-01 1.57198375e-01 1.57424216e-01 1.57649751e-01 + 1.57874980e-01 1.58099903e-01 1.58324520e-01 1.58548831e-01 1.58772835e-01 + 1.58996533e-01 1.59219925e-01 1.59443010e-01 1.59665790e-01 1.59888262e-01 + 1.60110429e-01 1.60332289e-01 1.60553842e-01 1.60775089e-01 1.60996030e-01 + 1.61216664e-01 1.61436992e-01 1.61657013e-01 1.61876728e-01 1.62096136e-01 + 1.62315238e-01 1.62534034e-01 1.62752523e-01 1.62970706e-01 1.63188582e-01 + 1.63406152e-01 1.63623416e-01 1.63840374e-01 1.64057026e-01 1.64273371e-01 + 1.64489411e-01 1.64705144e-01 1.64920571e-01 1.65135693e-01 1.65350508e-01 + 1.65565018e-01 1.65779222e-01 1.65993121e-01 1.66206714e-01 1.66420001e-01 + 1.66632983e-01 1.66845660e-01 1.67058031e-01 1.67270097e-01 1.67481858e-01 + 1.67693314e-01 1.67904465e-01 1.68115312e-01 1.68325854e-01 1.68536091e-01 + 1.68746023e-01 1.68955652e-01 1.69164976e-01 1.69373996e-01 1.69582712e-01 + 1.69791124e-01 1.69999232e-01 1.70207037e-01 1.70414538e-01 1.70621735e-01 + 1.70828630e-01 1.71035221e-01 1.71241510e-01 1.71447495e-01 1.71653178e-01 + 1.71858558e-01 1.72063636e-01 1.72268412e-01 1.72472886e-01 1.72677057e-01 + 1.72880927e-01 1.73084495e-01 1.73287762e-01 1.73490728e-01 1.73693392e-01 + 1.73895756e-01 1.74097819e-01 1.74299581e-01 1.74501043e-01 1.74702204e-01 + 1.74903066e-01 1.75103627e-01 1.75303889e-01 1.75503852e-01 1.75703515e-01 + 1.75902879e-01 1.76101944e-01 1.76300710e-01 1.76499178e-01 1.76697348e-01 + 1.76895219e-01 1.77092792e-01 1.77290068e-01 1.77487046e-01 1.77683727e-01 + 1.77880111e-01 1.78076198e-01 1.78271989e-01 1.78467483e-01 1.78662680e-01 + 1.78857582e-01 1.79052188e-01 1.79246498e-01 1.79440514e-01 1.79634234e-01 + 1.79827659e-01 1.80020789e-01 1.80213625e-01 1.80406167e-01 1.80598415e-01 + 1.80790370e-01 1.80982031e-01 1.81173398e-01 1.81364473e-01 1.81555255e-01 + 1.81745745e-01 1.81935942e-01 1.82125848e-01 1.82315462e-01 1.82504784e-01 + 1.82693815e-01 1.82882555e-01 1.83071004e-01 1.83259163e-01 1.83447032e-01 + 1.83634611e-01 1.83821900e-01 1.84008900e-01 1.84195611e-01 1.84382033e-01 + 1.84568166e-01 1.84754012e-01 1.84939569e-01 1.85124838e-01 1.85309820e-01 + 1.85494514e-01 1.85678922e-01 1.85863043e-01 1.86046878e-01 1.86230426e-01 + 1.86413689e-01 1.86596666e-01 1.86779358e-01 1.86961765e-01 1.87143887e-01 + 1.87325725e-01 1.87507279e-01 1.87688549e-01 1.87869536e-01 1.88050239e-01 + 1.88230659e-01 1.88410797e-01 1.88590653e-01 1.88770226e-01 1.88949518e-01 + 1.89128528e-01 1.89307257e-01 1.89485705e-01 1.89663873e-01 1.89841761e-01 + 1.90019368e-01 1.90196696e-01 1.90373745e-01 1.90550515e-01 1.90727005e-01 + 1.90903218e-01 1.91079153e-01 1.91254809e-01 1.91430189e-01 1.91605291e-01 + 1.91780116e-01 1.91954665e-01 1.92128937e-01 1.92302934e-01 1.92476655e-01 + 1.92650101e-01 1.92823272e-01 1.92996169e-01 1.93168791e-01 1.93341139e-01 + 1.93513213e-01 1.93685014e-01 1.93856543e-01 1.94027798e-01 1.94198781e-01 + 1.94369492e-01 1.94539932e-01 1.94710100e-01 1.94879997e-01 1.95049623e-01 + 1.95218979e-01 1.95388065e-01 1.95556881e-01 1.95725428e-01 1.95893706e-01 + 1.96061715e-01 1.96229455e-01 1.96396928e-01 1.96564133e-01 1.96731070e-01 + 1.96897741e-01 1.97064144e-01 1.97230282e-01 1.97396153e-01 1.97561758e-01 + 1.97727099e-01 1.97892174e-01 1.98056984e-01 1.98221530e-01 1.98385813e-01 + 1.98549831e-01 1.98713586e-01 1.98877078e-01 1.99040308e-01 1.99203275e-01 + 1.99365980e-01 1.99528424e-01 1.99690606e-01 1.99852528e-01 2.00014188e-01 + 2.00175589e-01 2.00336730e-01 2.00497611e-01 2.00658233e-01 2.00818596e-01 + 2.00978701e-01 2.01138547e-01 2.01298136e-01 2.01457467e-01 2.01616542e-01 + 2.01775359e-01 2.01933920e-01 2.02092225e-01 2.02250274e-01 2.02408068e-01 + 2.02565607e-01 2.02722891e-01 2.02879921e-01 2.03036697e-01 2.03193220e-01 + 2.03349489e-01 2.03505505e-01 2.03661269e-01 2.03816780e-01 2.03972040e-01 + 2.04127048e-01 2.04281805e-01 2.04436312e-01 2.04590568e-01 2.04744573e-01 + 2.04898329e-01 2.05051836e-01 2.05205094e-01 2.05358103e-01 2.05510864e-01 + 2.05663377e-01 2.05815642e-01 2.05967660e-01 2.06119432e-01 2.06270956e-01 + 2.06422235e-01 2.06573268e-01 2.06724055e-01 2.06874598e-01 2.07024895e-01 + 2.07174948e-01 2.07324757e-01 2.07474323e-01 2.07623645e-01 2.07772725e-01 + 2.07921561e-01 2.08070156e-01 2.08218508e-01 2.08366619e-01 2.08514489e-01 + 2.08662119e-01 2.08809507e-01 2.08956656e-01 2.09103565e-01 2.09250235e-01 + 2.09396665e-01 2.09542857e-01 2.09688811e-01 2.09834526e-01 2.09980005e-01 + 2.10125246e-01 2.10270250e-01 2.10415017e-01 2.10559549e-01 2.10703844e-01 + 2.10847905e-01 2.10991730e-01 2.11135320e-01 2.11278676e-01 2.11421799e-01 + 2.11564687e-01 2.11707342e-01 2.11849765e-01 2.11991955e-01 2.12133912e-01 + 2.12275638e-01 2.12417132e-01 2.12558395e-01 2.12699428e-01 2.12840230e-01 + 2.12980802e-01 2.13121144e-01 2.13261257e-01 2.13401141e-01 2.13540796e-01 + 2.13680223e-01 2.13819422e-01 2.13958394e-01 2.14097138e-01 2.14235656e-01 + 2.14373947e-01 2.14512011e-01 2.14649851e-01 2.14787464e-01 2.14924853e-01 + 2.15062017e-01 2.15198957e-01 2.15335672e-01 2.15472164e-01 2.15608433e-01 + 2.15744479e-01 2.15880302e-01 2.16015903e-01 2.16151282e-01 2.16286440e-01 + 2.16421376e-01 2.16556092e-01 2.16690587e-01 2.16824862e-01 2.16958918e-01 + 2.17092754e-01 2.17226371e-01 2.17359769e-01 2.17492949e-01 2.17625911e-01 + 2.17758656e-01 2.17891183e-01 2.18023493e-01 2.18155587e-01 2.18287464e-01 + 2.18419126e-01 2.18550572e-01 2.18681803e-01 2.18812819e-01 2.18943621e-01 + 2.19074208e-01 2.19204582e-01 2.19334742e-01 2.19464690e-01 2.19594424e-01 + 2.19723946e-01 2.19853257e-01 2.19982355e-01 2.20111242e-01 2.20239919e-01 + 2.20368384e-01 2.20496640e-01 2.20624685e-01 2.20752521e-01 2.20880148e-01 + 2.21007566e-01 2.21134775e-01 2.21261776e-01 2.21388569e-01 2.21515155e-01 + 2.21641533e-01 2.21767705e-01 2.21893670e-01 2.22019429e-01 2.22144983e-01 + 2.22270331e-01 2.22395473e-01 2.22520411e-01 2.22645145e-01 2.22769675e-01 + 2.22894000e-01 2.23018123e-01 2.23142042e-01 2.23265759e-01 2.23389273e-01 + 2.23512586e-01 2.23635696e-01 2.23758606e-01 2.23881314e-01 2.24003822e-01 + 2.24126129e-01 2.24248236e-01 2.24370144e-01 2.24491852e-01 2.24613362e-01 + 2.24734673e-01 2.24855785e-01 2.24976700e-01 2.25097417e-01 2.25217936e-01 + 2.25338259e-01 2.25458385e-01 2.25578315e-01 2.25698048e-01 2.25817587e-01 + 2.25936930e-01 2.26056078e-01 2.26175031e-01 2.26293790e-01 2.26412355e-01 + 2.26530727e-01 2.26648905e-01 2.26766890e-01 2.26884683e-01 2.27002283e-01 + 2.27119691e-01 2.27236908e-01 2.27353934e-01 2.27470768e-01 2.27587412e-01 + 2.27703865e-01 2.27820129e-01 2.27936203e-01 2.28052087e-01 2.28167783e-01 + 2.28283290e-01 2.28398608e-01 2.28513738e-01 2.28628681e-01 2.28743437e-01 + 2.28858005e-01 2.28972386e-01 2.29086581e-01 2.29200591e-01 2.29314414e-01 + 2.29428052e-01 2.29541504e-01 2.29654772e-01 2.29767856e-01 2.29880755e-01 + 2.29993470e-01 2.30106002e-01 2.30218351e-01 2.30330517e-01 2.30442500e-01 + 2.30554301e-01 2.30665921e-01 2.30777358e-01 2.30888614e-01 2.30999690e-01 + 2.31110584e-01 2.31221299e-01 2.31331833e-01 2.31442188e-01 2.31552363e-01 + 2.31662359e-01 2.31772176e-01 2.31881815e-01 2.31991276e-01 2.32100559e-01 + 2.32209665e-01 2.32318593e-01 2.32427344e-01 2.32535919e-01 2.32644318e-01 + 2.32752540e-01 2.32860587e-01 2.32968459e-01 2.33076155e-01 2.33183677e-01 + 2.33291025e-01 2.33398198e-01 2.33505198e-01 2.33612024e-01 2.33718676e-01 + 2.33825157e-01 2.33931464e-01 2.34037599e-01 2.34143562e-01 2.34249354e-01 + 2.34354974e-01 2.34460423e-01 2.34565702e-01 2.34670810e-01 2.34775748e-01 + 2.34880516e-01 2.34985114e-01 2.35089544e-01 2.35193804e-01 2.35297896e-01 + 2.35401819e-01 2.35505574e-01 2.35609162e-01 2.35712582e-01 2.35815835e-01 + 2.35918921e-01 2.36021841e-01 2.36124594e-01 2.36227182e-01 2.36329603e-01 + 2.36431860e-01 2.36533951e-01 2.36635878e-01 2.36737640e-01 2.36839238e-01 + 2.36940672e-01 2.37041942e-01 2.37143049e-01 2.37243994e-01 2.37344775e-01 + 2.37445394e-01 2.37545851e-01 2.37646146e-01 2.37746279e-01 2.37846251e-01 + 2.37946062e-01 2.38045713e-01 2.38145203e-01 2.38244533e-01 2.38343703e-01 + 2.38442713e-01 2.38541565e-01 2.38640257e-01 2.38738790e-01 2.38837166e-01 + 2.38935383e-01 2.39033442e-01 2.39131344e-01 2.39229088e-01 2.39326676e-01 + 2.39424106e-01 2.39521381e-01 2.39618499e-01 2.39715461e-01 2.39812268e-01 + 2.39908919e-01 2.40005416e-01 2.40101757e-01 2.40197944e-01 2.40293977e-01 + 2.40389856e-01 2.40485582e-01 2.40581154e-01 2.40676573e-01 2.40771839e-01 + 2.40866953e-01 2.40961914e-01 2.41056724e-01 2.41151382e-01 2.41245888e-01 + 2.41340243e-01 2.41434447e-01 2.41528501e-01 2.41622404e-01 2.41716158e-01 + 2.41809761e-01 2.41903215e-01 2.41996520e-01 2.42089675e-01 2.42182682e-01 + 2.42275541e-01 2.42368251e-01 2.42460813e-01 2.42553228e-01 2.42645496e-01 + 2.42737616e-01 2.42829589e-01 2.42921416e-01 2.43013097e-01 2.43104631e-01 + 2.43196020e-01 2.43287263e-01 2.43378361e-01 2.43469314e-01 2.43560122e-01 + 2.43650786e-01 2.43741306e-01 2.43831681e-01 2.43921913e-01 2.44012001e-01 + 2.44101947e-01 2.44191749e-01 2.44281409e-01 2.44370926e-01 2.44460302e-01 + 2.44549535e-01 2.44638627e-01 2.44727577e-01 2.44816386e-01 2.44905055e-01 + 2.44993583e-01 2.45081970e-01 2.45170218e-01 2.45258325e-01 2.45346293e-01 + 2.45434122e-01 2.45521812e-01 2.45609362e-01 2.45696775e-01 2.45784049e-01 + 2.45871185e-01 2.45958183e-01 2.46045043e-01 2.46131766e-01 2.46218353e-01 + 2.46304802e-01 2.46391115e-01 2.46477291e-01 2.46563332e-01 2.46649236e-01 + 2.46735006e-01 2.46820639e-01 2.46906138e-01 2.46991502e-01 2.47076731e-01 + 2.47161826e-01 2.47246787e-01 2.47331614e-01 2.47416307e-01 2.47500867e-01 + 2.47585294e-01 2.47669588e-01 2.47753749e-01 2.47837778e-01 2.47921675e-01 + 2.48005440e-01 2.48089073e-01 2.48172575e-01 2.48255945e-01 2.48339185e-01 + 2.48422294e-01 2.48505272e-01 2.48588120e-01 2.48670839e-01 2.48753427e-01 + 2.48835886e-01 2.48918215e-01 2.49000416e-01 2.49082487e-01 2.49164431e-01 + 2.49246245e-01 2.49327932e-01 2.49409490e-01 2.49490922e-01 2.49572225e-01 + 2.49653402e-01 2.49734451e-01 2.49815374e-01 2.49896170e-01 2.49976840e-01 + 2.50057384e-01 2.50137802e-01 2.50218094e-01 2.50298261e-01 2.50378303e-01 + 2.50458221e-01 2.50538013e-01 2.50617681e-01 2.50697225e-01 2.50776645e-01 + 2.50855941e-01 2.50935113e-01 2.51014162e-01 2.51093088e-01 2.51171892e-01 + 2.51250572e-01 2.51329130e-01 2.51407566e-01 2.51485880e-01 2.51564073e-01 + 2.51642143e-01 2.51720093e-01 2.51797921e-01 2.51875629e-01 2.51953216e-01 + 2.52030682e-01 2.52108028e-01 2.52185254e-01 2.52262361e-01 2.52339348e-01 + 2.52416215e-01 2.52492964e-01 2.52569593e-01 2.52646104e-01 2.52722497e-01 + 2.52798771e-01 2.52874927e-01 2.52950965e-01 2.53026886e-01 2.53102689e-01 + 2.53178375e-01 2.53253944e-01 2.53329397e-01 2.53404733e-01 2.53479952e-01 + 2.53555056e-01 2.53630043e-01 2.53704915e-01 2.53779671e-01 2.53854312e-01 + 2.53928839e-01 2.54003250e-01 2.54077546e-01 2.54151728e-01 2.54225796e-01 + 2.54299750e-01 2.54373590e-01 2.54447316e-01 2.54520930e-01 2.54594429e-01 + 2.54667816e-01 2.54741090e-01 2.54814252e-01 2.54887301e-01 2.54960238e-01 + 2.55033063e-01 2.55105776e-01 2.55178378e-01 2.55250868e-01 2.55323247e-01 + 2.55395516e-01 2.55467673e-01 2.55539720e-01 2.55611657e-01 2.55683483e-01 + 2.55755200e-01 2.55826806e-01 2.55898304e-01 2.55969692e-01 2.56040970e-01 + 2.56112140e-01 2.56183201e-01 2.56254154e-01 2.56324998e-01 2.56395734e-01 + 2.56466362e-01 2.56536882e-01 2.56607295e-01 2.56677600e-01 2.56747798e-01 + 2.56817889e-01 2.56887874e-01 2.56957752e-01 2.57027523e-01 2.57097188e-01 + 2.57166747e-01 2.57236200e-01 2.57305548e-01 2.57374790e-01 2.57443927e-01 + 2.57512959e-01 2.57581886e-01 2.57650709e-01 2.57719427e-01 2.57788040e-01 + 2.57856550e-01 2.57924955e-01 2.57993257e-01 2.58061455e-01 2.58129550e-01 + 2.58197542e-01 2.58265431e-01 2.58333217e-01 2.58400900e-01 2.58468481e-01 + 2.58535960e-01 2.58603336e-01 2.58670611e-01 2.58737784e-01 2.58804856e-01 + 2.58871826e-01 2.58938695e-01 2.59005463e-01 2.59072131e-01 2.59138697e-01 + 2.59205164e-01 2.59271530e-01 2.59337796e-01 2.59403962e-01 2.59470029e-01 + 2.59535996e-01 2.59601864e-01 2.59667633e-01 2.59733302e-01 2.59798873e-01 + 2.59864345e-01 2.59929719e-01 2.59994995e-01 2.60060172e-01 2.60125252e-01 + 2.60190234e-01 2.60255118e-01 2.60319905e-01 2.60384595e-01 2.60449188e-01 + 2.60513684e-01 2.60578083e-01 2.60642386e-01 2.60706593e-01 2.60770703e-01 + 2.60834718e-01 2.60898636e-01 2.60962459e-01 2.61026187e-01 2.61089819e-01 + 2.61153356e-01 2.61216799e-01 2.61280146e-01 2.61343399e-01 2.61406557e-01 + 2.61469622e-01 2.61532592e-01 2.61595468e-01 2.61658250e-01 2.61720939e-01 + 2.61783535e-01 2.61846037e-01 2.61908446e-01 2.61970763e-01 2.62032986e-01 + 2.62095117e-01 2.62157156e-01 2.62219102e-01 2.62280956e-01 2.62342719e-01 + 2.62404389e-01 2.62465968e-01 2.62527456e-01 2.62588852e-01 2.62650158e-01 + 2.62711372e-01 2.62772496e-01 2.62833529e-01 2.62894471e-01 2.62955324e-01 + 2.63016086e-01 2.63076758e-01 2.63137341e-01 2.63197833e-01 2.63258237e-01 + 2.63318551e-01 2.63378776e-01 2.63438912e-01 2.63498959e-01 2.63558918e-01 + 2.63618788e-01 2.63678569e-01 2.63738263e-01 2.63797868e-01 2.63857386e-01 + 2.63916816e-01 2.63976158e-01 2.64035413e-01 2.64094581e-01 2.64153661e-01 + 2.64212655e-01 2.64271562e-01 2.64330382e-01 2.64389116e-01 2.64447763e-01 + 2.64506324e-01 2.64564800e-01 2.64623189e-01 2.64681493e-01 2.64739711e-01 + 2.64797844e-01 2.64855892e-01 2.64913854e-01 2.64971732e-01 2.65029524e-01 + 2.65087233e-01 2.65144856e-01 2.65202396e-01 2.65259851e-01 2.65317222e-01 + 2.65374509e-01 2.65431713e-01 2.65488833e-01 2.65545869e-01 2.65602822e-01 + 2.65659692e-01 2.65716480e-01 2.65773184e-01 2.65829805e-01 2.65886344e-01 + 2.65942801e-01 2.65999175e-01 2.66055468e-01 2.66111678e-01 2.66167806e-01 + 2.66223853e-01 2.66279819e-01 2.66335703e-01 2.66391505e-01 2.66447227e-01 + 2.66502868e-01 2.66558427e-01 2.66613907e-01 2.66669305e-01 2.66724624e-01 + 2.66779862e-01 2.66835020e-01 2.66890098e-01 2.66945096e-01 2.67000015e-01 + 2.67054854e-01 2.67109613e-01 2.67164294e-01 2.67218895e-01 2.67273418e-01 + 2.67327861e-01 2.67382226e-01 2.67436512e-01 2.67490720e-01 2.67544850e-01 + 2.67598902e-01 2.67652875e-01 2.67706771e-01 2.67760589e-01 2.67814330e-01 + 2.67867993e-01 2.67921578e-01 2.67975087e-01 2.68028519e-01 2.68081873e-01 + 2.68135151e-01 2.68188352e-01 2.68241477e-01 2.68294526e-01 2.68347498e-01 + 2.68400394e-01 2.68453214e-01 2.68505959e-01 2.68558628e-01 2.68611221e-01 + 2.68663738e-01 2.68716181e-01 2.68768548e-01 2.68820841e-01 2.68873058e-01 + 2.68925201e-01 2.68977269e-01 2.69029263e-01 2.69081182e-01 2.69133027e-01 + 2.69184798e-01 2.69236495e-01 2.69288118e-01 2.69339668e-01 2.69391143e-01 + 2.69442546e-01 2.69493875e-01 2.69545131e-01 2.69596314e-01 2.69647424e-01 + 2.69698461e-01 2.69749425e-01 2.69800317e-01 2.69851137e-01 2.69901884e-01 + 2.69952559e-01 2.70003162e-01 2.70053693e-01 2.70104153e-01 2.70154540e-01 + 2.70204856e-01 2.70255101e-01 2.70305274e-01 2.70355377e-01 2.70405408e-01 + 2.70455368e-01 2.70505258e-01 2.70555077e-01 2.70604825e-01 2.70654503e-01 + 2.70704110e-01 2.70753648e-01 2.70803115e-01 2.70852513e-01 2.70901840e-01 + 2.70951098e-01 2.71000287e-01 2.71049406e-01 2.71098455e-01 2.71147436e-01 + 2.71196347e-01 2.71245190e-01 2.71293963e-01 2.71342668e-01 2.71391304e-01 + 2.71439872e-01 2.71488372e-01 2.71536803e-01 2.71585166e-01 2.71633461e-01 + 2.71681688e-01 2.71729848e-01 2.71777939e-01 2.71825964e-01 2.71873921e-01 + 2.71921810e-01 2.71969632e-01 2.72017388e-01 2.72065076e-01 2.72112698e-01 + 2.72160252e-01 2.72207741e-01 2.72255162e-01 2.72302518e-01 2.72349807e-01 + 2.72397030e-01 2.72444187e-01 2.72491278e-01 2.72538303e-01 2.72585263e-01 + 2.72632157e-01 2.72678985e-01 2.72725748e-01 2.72772446e-01 2.72819079e-01 + 2.72865647e-01 2.72912150e-01 2.72958588e-01 2.73004962e-01 2.73051271e-01 + 2.73097516e-01 2.73143696e-01 2.73189812e-01 2.73235864e-01 2.73281852e-01 + 2.73327776e-01 2.73373636e-01 2.73419432e-01 2.73465166e-01 2.73510835e-01 + 2.73556441e-01 2.73601984e-01 2.73647464e-01 2.73692881e-01 2.73738235e-01 + 2.73783526e-01 2.73828755e-01 2.73873921e-01 2.73919024e-01 2.73964065e-01 + 2.74009044e-01 2.74053961e-01 2.74098815e-01 2.74143608e-01 2.74188339e-01 + 2.74233008e-01 2.74277616e-01 2.74322162e-01 2.74366646e-01 2.74411070e-01 + 2.74455432e-01 2.74499733e-01 2.74543973e-01 2.74588152e-01 2.74632270e-01 + 2.74676328e-01 2.74720325e-01 2.74764262e-01 2.74808138e-01 2.74851954e-01 + 2.74895710e-01 2.74939406e-01 2.74983042e-01 2.75026618e-01 2.75070135e-01 + 2.75113591e-01 2.75156988e-01 2.75200326e-01 2.75243604e-01 2.75286824e-01 + 2.75329984e-01 2.75373085e-01 2.75416127e-01 2.75459110e-01 2.75502034e-01 + 2.75544900e-01 2.75587707e-01 2.75630456e-01 2.75673147e-01 2.75715779e-01 + 2.75758353e-01 2.75800869e-01 2.75843328e-01 2.75885728e-01 2.75928070e-01 + 2.75970355e-01 2.76012583e-01 2.76054753e-01 2.76096866e-01 2.76138921e-01 + 2.76180919e-01 2.76222860e-01 2.76264745e-01 2.76306572e-01 2.76348342e-01 + 2.76390056e-01 2.76431714e-01 2.76473315e-01 2.76514859e-01 2.76556347e-01 + 2.76597779e-01 2.76639155e-01 2.76680475e-01 2.76721739e-01 2.76762947e-01 + 2.76804100e-01 2.76845197e-01 2.76886238e-01 2.76927224e-01 2.76968154e-01 + 2.77009030e-01 2.77049850e-01 2.77090615e-01 2.77131325e-01 2.77171980e-01 + 2.77212581e-01 2.77253126e-01 2.77293617e-01 2.77334054e-01 2.77374436e-01 + 2.77414764e-01 2.77455038e-01 2.77495257e-01 2.77535423e-01 2.77575534e-01 + 2.77615592e-01 2.77655596e-01 2.77695546e-01 2.77735443e-01 2.77775286e-01 + 2.77815076e-01 2.77854812e-01 2.77894495e-01 2.77934125e-01 2.77973702e-01 + 2.78013226e-01 2.78052697e-01 2.78092115e-01 2.78131481e-01 2.78170794e-01 + 2.78210054e-01 2.78249262e-01 2.78288418e-01 2.78327521e-01 2.78366572e-01 + 2.78405571e-01 2.78444519e-01 2.78483414e-01 2.78522257e-01 2.78561049e-01 + 2.78599789e-01 2.78638477e-01 2.78677114e-01 2.78715700e-01 2.78754234e-01 + 2.78792717e-01 2.78831149e-01 2.78869530e-01 2.78907859e-01 2.78946138e-01 + 1.03953624e+00 1.03772749e+00 1.03592023e+00 1.03411445e+00 1.03231016e+00 + 1.03050735e+00 1.02870603e+00 1.02690620e+00 1.02510785e+00 1.02331100e+00 + 1.02151562e+00 1.01972174e+00 1.01792935e+00 1.01613844e+00 1.01434902e+00 + 1.01256110e+00 1.01077466e+00 1.00898971e+00 1.00720626e+00 1.00542429e+00 + 1.00364382e+00 1.00186484e+00 1.00008735e+00 9.98311355e-01 9.96536852e-01 + 9.94763842e-01 9.92992326e-01 9.91222304e-01 9.89453777e-01 9.87686744e-01 + 9.85921207e-01 9.84157165e-01 9.82394619e-01 9.80633570e-01 9.78874017e-01 + 9.77115962e-01 9.75359404e-01 9.73604344e-01 9.71850782e-01 9.70098719e-01 + 9.68348155e-01 9.66599090e-01 9.64851525e-01 9.63105460e-01 9.61360895e-01 + 9.59617832e-01 9.57876269e-01 9.56136208e-01 9.54397649e-01 9.52660593e-01 + 9.50925039e-01 9.49190988e-01 9.47458441e-01 9.45727397e-01 9.43997858e-01 + 9.42269823e-01 9.40543293e-01 9.38818268e-01 9.37094749e-01 9.35372736e-01 + 9.33652230e-01 9.31933230e-01 9.30215737e-01 9.28499752e-01 9.26785274e-01 + 9.25072305e-01 9.23360844e-01 9.21650893e-01 9.19942450e-01 9.18235517e-01 + 9.16530094e-01 9.14826182e-01 9.13123780e-01 9.11422890e-01 9.09723511e-01 + 9.08025644e-01 9.06329289e-01 9.04634446e-01 9.02941117e-01 9.01249300e-01 + 8.99558998e-01 8.97870209e-01 8.96182935e-01 8.94497176e-01 8.92812931e-01 + 8.91130202e-01 8.89448989e-01 8.87769292e-01 8.86091112e-01 8.84414448e-01 + 8.82739302e-01 8.81065673e-01 8.79393562e-01 8.77722970e-01 8.76053896e-01 + 8.74386341e-01 8.72720306e-01 8.71055790e-01 8.69392795e-01 8.67731320e-01 + 8.66071366e-01 8.64412932e-01 8.62756021e-01 8.61100631e-01 8.59446764e-01 + 8.57794419e-01 8.56143597e-01 8.54494298e-01 8.52846523e-01 8.51200272e-01 + 8.49555545e-01 8.47912343e-01 8.46270666e-01 8.44630515e-01 8.42991889e-01 + 8.41354789e-01 8.39719216e-01 8.38085170e-01 8.36452650e-01 8.34821658e-01 + 8.33192195e-01 8.31564259e-01 8.29937852e-01 8.28312973e-01 8.26689624e-01 + 8.25067805e-01 8.23447515e-01 8.21828756e-01 8.20211528e-01 8.18595830e-01 + 8.16981664e-01 8.15369029e-01 8.13757927e-01 8.12148357e-01 8.10540319e-01 + 8.08933815e-01 8.07328844e-01 8.05725406e-01 8.04123503e-01 8.02523135e-01 + 8.00924301e-01 7.99327002e-01 7.97731239e-01 7.96137011e-01 7.94544320e-01 + 7.92953165e-01 7.91363547e-01 7.89775466e-01 7.88188923e-01 7.86603918e-01 + 7.85020450e-01 7.83438522e-01 7.81858132e-01 7.80279281e-01 7.78701970e-01 + 7.77126199e-01 7.75551968e-01 7.73979278e-01 7.72408129e-01 7.70838521e-01 + 7.69270454e-01 7.67703930e-01 7.66138947e-01 7.64575508e-01 7.63013611e-01 + 7.61453258e-01 7.59894448e-01 7.58337182e-01 7.56781460e-01 7.55227283e-01 + 7.53674651e-01 7.52123565e-01 7.50574024e-01 7.49026029e-01 7.47479580e-01 + 7.45934678e-01 7.44391322e-01 7.42849514e-01 7.41309254e-01 7.39770542e-01 + 7.38233378e-01 7.36697762e-01 7.35163696e-01 7.33631179e-01 7.32100211e-01 + 7.30570794e-01 7.29042926e-01 7.27516610e-01 7.25991844e-01 7.24468629e-01 + 7.22946966e-01 7.21426855e-01 7.19908297e-01 7.18391291e-01 7.16875837e-01 + 7.15361937e-01 7.13849591e-01 7.12338798e-01 7.10829560e-01 7.09321876e-01 + 7.07815747e-01 7.06311174e-01 7.04808155e-01 7.03306693e-01 7.01806787e-01 + 7.00308437e-01 6.98811644e-01 6.97316408e-01 6.95822730e-01 6.94330610e-01 + 6.92840047e-01 6.91351043e-01 6.89863598e-01 6.88377712e-01 6.86893385e-01 + 6.85410618e-01 6.83929411e-01 6.82449765e-01 6.80971679e-01 6.79495154e-01 + 6.78020190e-01 6.76546789e-01 6.75074949e-01 6.73604671e-01 6.72135956e-01 + 6.70668804e-01 6.69203215e-01 6.67739189e-01 6.66276728e-01 6.64815830e-01 + 6.63356498e-01 6.61898730e-01 6.60442527e-01 6.58987889e-01 6.57534818e-01 + 6.56083312e-01 6.54633373e-01 6.53185001e-01 6.51738195e-01 6.50292957e-01 + 6.48849287e-01 6.47407184e-01 6.45966650e-01 6.44527685e-01 6.43090288e-01 + 6.41654460e-01 6.40220202e-01 6.38787514e-01 6.37356396e-01 6.35926849e-01 + 6.34498872e-01 6.33072467e-01 6.31647633e-01 6.30224370e-01 6.28802680e-01 + 6.27382561e-01 6.25964016e-01 6.24547043e-01 6.23131644e-01 6.21717818e-01 + 6.20305566e-01 6.18894889e-01 6.17485785e-01 6.16078257e-01 6.14672303e-01 + 6.13267925e-01 6.11865123e-01 6.10463897e-01 6.09064247e-01 6.07666173e-01 + 6.06269677e-01 6.04874758e-01 6.03481416e-01 6.02089652e-01 6.00699467e-01 + 5.99310859e-01 5.97923831e-01 5.96538381e-01 5.95154511e-01 5.93772221e-01 + 5.92391510e-01 5.91012380e-01 5.89634830e-01 5.88258861e-01 5.86884473e-01 + 5.85511667e-01 5.84140442e-01 5.82770800e-01 5.81402740e-01 5.80036262e-01 + 5.78671367e-01 5.77308056e-01 5.75946328e-01 5.74586184e-01 5.73227624e-01 + 5.71870649e-01 5.70515258e-01 5.69161453e-01 5.67809232e-01 5.66458597e-01 + 5.65109548e-01 5.63762086e-01 5.62416210e-01 5.61071920e-01 5.59729218e-01 + 5.58388103e-01 5.57048576e-01 5.55710636e-01 5.54374285e-01 5.53039523e-01 + 5.51706349e-01 5.50374764e-01 5.49044769e-01 5.47716364e-01 5.46389548e-01 + 5.45064323e-01 5.43740689e-01 5.42418645e-01 5.41098192e-01 5.39779331e-01 + 5.38462062e-01 5.37146385e-01 5.35832299e-01 5.34519807e-01 5.33208907e-01 + 5.31899601e-01 5.30591888e-01 5.29285769e-01 5.27981244e-01 5.26678313e-01 + 5.25376977e-01 5.24077235e-01 5.22779089e-01 5.21482538e-01 5.20187583e-01 + 5.18894224e-01 5.17602461e-01 5.16312295e-01 5.15023726e-01 5.13736754e-01 + 5.12451379e-01 5.11167602e-01 5.09885423e-01 5.08604843e-01 5.07325861e-01 + 5.06048477e-01 5.04772693e-01 5.03498508e-01 5.02225923e-01 5.00954938e-01 + 4.99685553e-01 4.98417769e-01 4.97151585e-01 4.95887003e-01 4.94624021e-01 + 4.93362642e-01 4.92102864e-01 4.90844689e-01 4.89588116e-01 4.88333145e-01 + 4.87079778e-01 4.85828014e-01 4.84577853e-01 4.83329297e-01 4.82082344e-01 + 4.80836996e-01 4.79593252e-01 4.78351114e-01 4.77110580e-01 4.75871652e-01 + 4.74634330e-01 4.73398614e-01 4.72164504e-01 4.70932001e-01 4.69701104e-01 + 4.68471815e-01 4.67244132e-01 4.66018058e-01 4.64793591e-01 4.63570733e-01 + 4.62349483e-01 4.61129842e-01 4.59911810e-01 4.58695387e-01 4.57480573e-01 + 4.56267369e-01 4.55055776e-01 4.53845792e-01 4.52637419e-01 4.51430658e-01 + 4.50225507e-01 4.49021967e-01 4.47820039e-01 4.46619724e-01 4.45421020e-01 + 4.44223928e-01 4.43028450e-01 4.41834584e-01 4.40642332e-01 4.39451693e-01 + 4.38262668e-01 4.37075256e-01 4.35889459e-01 4.34705277e-01 4.33522709e-01 + 4.32341757e-01 4.31162420e-01 4.29984698e-01 4.28808592e-01 4.27634102e-01 + 4.26461229e-01 4.25289972e-01 4.24120332e-01 4.22952310e-01 4.21785904e-01 + 4.20621116e-01 4.19457946e-01 4.18296395e-01 4.17136461e-01 4.15978147e-01 + 4.14821451e-01 4.13666374e-01 4.12512917e-01 4.11361080e-01 4.10210862e-01 + 4.09062265e-01 4.07915288e-01 4.06769932e-01 4.05626197e-01 4.04484083e-01 + 4.03343590e-01 4.02204719e-01 4.01067470e-01 3.99931844e-01 3.98797839e-01 + 3.97665458e-01 3.96534699e-01 3.95405564e-01 3.94278052e-01 3.93152164e-01 + 3.92027900e-01 3.90905259e-01 3.89784244e-01 3.88664853e-01 3.87547087e-01 + 3.86430946e-01 3.85316431e-01 3.84203541e-01 3.83092278e-01 3.81982640e-01 + 3.80874629e-01 3.79768245e-01 3.78663487e-01 3.77560357e-01 3.76458854e-01 + 3.75358979e-01 3.74260731e-01 3.73164112e-01 3.72069121e-01 3.70975759e-01 + 3.69884025e-01 3.68793921e-01 3.67705446e-01 3.66618601e-01 3.65533385e-01 + 3.64449799e-01 3.63367844e-01 3.62287520e-01 3.61208826e-01 3.60131763e-01 + 3.59056331e-01 3.57982531e-01 3.56910363e-01 3.55839826e-01 3.54770922e-01 + 3.53703650e-01 3.52638011e-01 3.51574005e-01 3.50511632e-01 3.49450892e-01 + 3.48391786e-01 3.47334314e-01 3.46278476e-01 3.45224272e-01 3.44171703e-01 + 3.43120769e-01 3.42071469e-01 3.41023805e-01 3.39977776e-01 3.38933384e-01 + 3.37890627e-01 3.36849506e-01 3.35810021e-01 3.34772174e-01 3.33735963e-01 + 3.32701389e-01 3.31668453e-01 3.30637154e-01 3.29607493e-01 3.28579470e-01 + 3.27553085e-01 3.26528339e-01 3.25505231e-01 3.24483762e-01 3.23463933e-01 + 3.22445743e-01 3.21429192e-01 3.20414282e-01 3.19401011e-01 3.18389381e-01 + 3.17379391e-01 3.16371042e-01 3.15364334e-01 3.14359267e-01 3.13355841e-01 + 3.12354057e-01 3.11353915e-01 3.10355415e-01 3.09358557e-01 3.08363342e-01 + 3.07369770e-01 3.06377840e-01 3.05387554e-01 3.04398911e-01 3.03411912e-01 + 3.02426556e-01 3.01442845e-01 3.00460777e-01 2.99480355e-01 2.98501577e-01 + 2.97524444e-01 2.96548956e-01 2.95575113e-01 2.94602916e-01 2.93632365e-01 + 2.92663460e-01 2.91696201e-01 2.90730589e-01 2.89766623e-01 2.88804304e-01 + 2.87843632e-01 2.86884607e-01 2.85927230e-01 2.84971501e-01 2.84017420e-01 + 2.83064986e-01 2.82114201e-01 2.81165065e-01 2.80217578e-01 2.79271739e-01 + 2.78327550e-01 2.77385010e-01 2.76444119e-01 2.75504879e-01 2.74567288e-01 + 2.73631348e-01 2.72697059e-01 2.71764419e-01 2.70833431e-01 2.69904094e-01 + 2.68976408e-01 2.68050374e-01 2.67125991e-01 2.66203261e-01 2.65282182e-01 + 2.64362756e-01 2.63444982e-01 2.62528861e-01 2.61614393e-01 2.60701578e-01 + 2.59790416e-01 2.58880908e-01 2.57973054e-01 2.57066853e-01 2.56162307e-01 + 2.55259415e-01 2.54358178e-01 2.53458595e-01 2.52560668e-01 2.51664395e-01 + 2.50769778e-01 2.49876816e-01 2.48985511e-01 2.48095861e-01 2.47207867e-01 + 2.46321530e-01 2.45436849e-01 2.44553825e-01 2.43672457e-01 2.42792747e-01 + 2.41914695e-01 2.41038300e-01 2.40163562e-01 2.39290483e-01 2.38419061e-01 + 2.37549298e-01 2.36681193e-01 2.35814748e-01 2.34949961e-01 2.34086833e-01 + 2.33225364e-01 2.32365555e-01 2.31507405e-01 2.30650916e-01 2.29796086e-01 + 2.28942916e-01 2.28091407e-01 2.27241559e-01 2.26393372e-01 2.25546845e-01 + 2.24701980e-01 2.23858776e-01 2.23017233e-01 2.22177352e-01 2.21339134e-01 + 2.20502577e-01 2.19667682e-01 2.18834451e-01 2.18002881e-01 2.17172975e-01 + 2.16344732e-01 2.15518152e-01 2.14693235e-01 2.13869982e-01 2.13048393e-01 + 2.12228468e-01 2.11410207e-01 2.10593610e-01 2.09778678e-01 2.08965410e-01 + 2.08153807e-01 2.07343870e-01 2.06535598e-01 2.05728991e-01 2.04924049e-01 + 2.04120774e-01 2.03319164e-01 2.02519221e-01 2.01720944e-01 2.00924334e-01 + 2.00129390e-01 1.99336113e-01 1.98544503e-01 1.97754560e-01 1.96966285e-01 + 1.96179677e-01 1.95394737e-01 1.94611465e-01 1.93829861e-01 1.93049925e-01 + 1.92271658e-01 1.91495059e-01 1.90720129e-01 1.89946869e-01 1.89175277e-01 + 1.88405354e-01 1.87637101e-01 1.86870518e-01 1.86105605e-01 1.85342361e-01 + 1.84580788e-01 1.83820885e-01 1.83062653e-01 1.82306091e-01 1.81551200e-01 + 1.80797980e-01 1.80046431e-01 1.79296554e-01 1.78548348e-01 1.77801814e-01 + 1.77056952e-01 1.76313762e-01 1.75572244e-01 1.74832398e-01 1.74094225e-01 + 1.73357725e-01 1.72622897e-01 1.71889743e-01 1.71158261e-01 1.70428453e-01 + 1.69700319e-01 1.68973858e-01 1.68249071e-01 1.67525958e-01 1.66804519e-01 + 1.66084755e-01 1.65366665e-01 1.64650249e-01 1.63935509e-01 1.63222443e-01 + 1.62511053e-01 1.61801338e-01 1.61093298e-01 1.60386934e-01 1.59682246e-01 + 1.58979233e-01 1.58277897e-01 1.57578237e-01 1.56880253e-01 1.56183946e-01 + 1.55489316e-01 1.54796362e-01 1.54105086e-01 1.53415486e-01 1.52727564e-01 + 1.52041320e-01 1.51356753e-01 1.50673864e-01 1.49992653e-01 1.49313120e-01 + 1.48635265e-01 1.47959088e-01 1.47284591e-01 1.46611771e-01 1.45940631e-01 + 1.45271170e-01 1.44603388e-01 1.43937285e-01 1.43272862e-01 1.42610118e-01 + 1.41949054e-01 1.41289670e-01 1.40631966e-01 1.39975942e-01 1.39321598e-01 + 1.38668935e-01 1.38017953e-01 1.37368652e-01 1.36721031e-01 1.36075091e-01 + 1.35430833e-01 1.34788256e-01 1.34147361e-01 1.33508147e-01 1.32870615e-01 + 1.32234765e-01 1.31600597e-01 1.30968111e-01 1.30337308e-01 1.29708187e-01 + 1.29080749e-01 1.28454994e-01 1.27830921e-01 1.27208532e-01 1.26587826e-01 + 1.25968803e-01 1.25351464e-01 1.24735808e-01 1.24121836e-01 1.23509548e-01 + 1.22898944e-01 1.22290024e-01 1.21682789e-01 1.21077238e-01 1.20473372e-01 + 1.19871190e-01 1.19270693e-01 1.18671881e-01 1.18074755e-01 1.17479313e-01 + 1.16885558e-01 1.16293487e-01 1.15703102e-01 1.15114403e-01 1.14527390e-01 + 1.13942064e-01 1.13358423e-01 1.12776468e-01 1.12196200e-01 1.11617619e-01 + 1.11040725e-01 1.10465517e-01 1.09891996e-01 1.09320162e-01 1.08750016e-01 + 1.08181557e-01 1.07614785e-01 1.07049701e-01 1.06486305e-01 1.05924597e-01 + 1.05364577e-01 1.04806244e-01 1.04249601e-01 1.03694645e-01 1.03141378e-01 + 1.02589800e-01 1.02039910e-01 1.01491709e-01 1.00945198e-01 1.00400375e-01 + 9.98572416e-02 9.93157976e-02 9.87760431e-02 9.82379782e-02 9.77016030e-02 + 9.71669178e-02 9.66339224e-02 9.61026172e-02 9.55730022e-02 9.50450776e-02 + 9.45188434e-02 9.39942997e-02 9.34714468e-02 9.29502847e-02 9.24308135e-02 + 9.19130333e-02 9.13969443e-02 9.08825466e-02 9.03698403e-02 8.98588255e-02 + 8.93495023e-02 8.88418708e-02 8.83359312e-02 8.78316836e-02 8.73291281e-02 + 8.68282647e-02 8.63290937e-02 8.58316150e-02 8.53358290e-02 8.48417355e-02 + 8.43493348e-02 8.38586270e-02 8.33696121e-02 8.28822904e-02 8.23966618e-02 + 8.19127265e-02 8.14304847e-02 8.09499364e-02 8.04710817e-02 7.99939207e-02 + 7.95184537e-02 7.90446805e-02 7.85726014e-02 7.81022165e-02 7.76335259e-02 + 7.71665296e-02 7.67012279e-02 7.62376207e-02 7.57757082e-02 7.53154905e-02 + 7.48569677e-02 7.44001400e-02 7.39450073e-02 7.34915699e-02 7.30398277e-02 + 7.25897810e-02 7.21414298e-02 7.16947743e-02 7.12498144e-02 7.08065504e-02 + 7.03649822e-02 6.99251102e-02 6.94869342e-02 6.90504544e-02 6.86156710e-02 + 6.81825840e-02 6.77511935e-02 6.73214996e-02 6.68935024e-02 6.64672020e-02 + 6.60425985e-02 6.56196920e-02 6.51984826e-02 6.47789704e-02 6.43611555e-02 + 6.39450379e-02 6.35306178e-02 6.31178953e-02 6.27068704e-02 6.22975433e-02 + 6.18899141e-02 6.14839827e-02 6.10797494e-02 6.06772142e-02 6.02763772e-02 + 5.98772385e-02 5.94797982e-02 5.90840564e-02 5.86900131e-02 5.82976685e-02 + 5.79070227e-02 5.75180757e-02 5.71308276e-02 5.67452785e-02 5.63614285e-02 + 5.59792777e-02 5.55988261e-02 5.52200739e-02 5.48430212e-02 5.44676679e-02 + 5.40940143e-02 5.37220604e-02 5.33518062e-02 5.29832520e-02 5.26163976e-02 + 5.22512433e-02 5.18877891e-02 5.15260351e-02 5.11659814e-02 5.08076280e-02 + 5.04509751e-02 5.00960227e-02 4.97427708e-02 4.93912197e-02 4.90413693e-02 + 4.86932198e-02 4.83467711e-02 4.80020235e-02 4.76589769e-02 4.73176315e-02 + 4.69779873e-02 4.66400444e-02 4.63038029e-02 4.59692628e-02 4.56364243e-02 + 4.53052874e-02 4.49758521e-02 4.46481186e-02 4.43220870e-02 4.39977572e-02 + 4.36751294e-02 4.33542037e-02 4.30349801e-02 4.27174587e-02 4.24016395e-02 + 4.20875227e-02 4.17751083e-02 4.14643964e-02 4.11553870e-02 4.08480802e-02 + 4.05424762e-02 4.02385749e-02 3.99363764e-02 3.96358808e-02 3.93370881e-02 + 3.90399985e-02 3.87446120e-02 3.84509287e-02 3.81589486e-02 3.78686718e-02 + 3.75800983e-02 3.72932283e-02 3.70080618e-02 3.67245988e-02 3.64428394e-02 + 3.61627838e-02 3.58844318e-02 3.56077837e-02 3.53328395e-02 3.50595992e-02 + 3.47880629e-02 3.45182306e-02 3.42501025e-02 3.39836786e-02 3.37189589e-02 + 3.34559435e-02 3.31946324e-02 3.29350258e-02 3.26771236e-02 3.24209260e-02 + 3.21664330e-02 3.19136446e-02 3.16625610e-02 3.14131821e-02 3.11655080e-02 + 3.09195388e-02 3.06752746e-02 3.04327153e-02 3.01918611e-02 2.99527120e-02 + 2.97152680e-02 2.94795292e-02 2.92454957e-02 2.90131675e-02 2.87825447e-02 + 2.85536273e-02 2.83264153e-02 2.81009089e-02 2.78771081e-02 2.76550128e-02 + 2.74346233e-02 2.72159395e-02 2.69989614e-02 2.67836892e-02 2.65701228e-02 + 2.63582623e-02 2.61481079e-02 2.59396594e-02 2.57329170e-02 2.55278807e-02 + 2.53245505e-02 2.51229266e-02 2.49230089e-02 2.47247975e-02 2.45282924e-02 + 2.43334937e-02 2.41404014e-02 2.39490156e-02 2.37593363e-02 2.35713636e-02 + 2.33850975e-02 2.32005380e-02 2.30176851e-02 2.28365390e-02 2.26570997e-02 + 2.24793672e-02 2.23033415e-02 2.21290227e-02 2.19564108e-02 2.17855059e-02 + 2.16163080e-02 2.14488171e-02 2.12830333e-02 2.11189566e-02 2.09565871e-02 + 2.07959248e-02 2.06369696e-02 2.04797218e-02 2.03241812e-02 2.01703480e-02 + 2.00182221e-02 1.98678037e-02 1.97190927e-02 1.95720891e-02 1.94267931e-02 + 1.92832045e-02 1.91413236e-02 1.90011502e-02 1.88626845e-02 1.87259265e-02 + 1.85908761e-02 1.84575335e-02 1.83258986e-02 1.81959715e-02 1.80677522e-02 + 1.79412408e-02 1.78164372e-02 1.76933415e-02 1.75719538e-02 1.74522740e-02 + 1.73343022e-02 1.72180384e-02 1.71034827e-02 1.69906350e-02 1.68794954e-02 + 1.67700639e-02 1.66623405e-02 1.65563253e-02 1.64520183e-02 1.63494195e-02 + 1.62485289e-02 1.61493466e-02 1.60518726e-02 1.59561068e-02 1.58620494e-02 + 1.57697003e-02 1.56790596e-02 1.55901273e-02 1.55029034e-02 1.54173879e-02 + 1.53335808e-02 1.52514822e-02 1.51710921e-02 1.50924105e-02 1.50154374e-02 + 1.49401728e-02 1.48666168e-02 1.47947694e-02 1.47246305e-02 1.46562002e-02 + 1.45894786e-02 1.45244656e-02 1.44611612e-02 1.43995655e-02 1.43396785e-02 + 1.42815001e-02 1.42250305e-02 1.41702695e-02 1.41172173e-02 1.40658738e-02 + 1.40162391e-02 1.39683132e-02 1.39220960e-02 1.38775876e-02 1.38347880e-02 + 1.37936971e-02 1.37543151e-02 1.37166420e-02 1.36806776e-02 1.36464221e-02 + 1.36138754e-02 1.35830376e-02 1.35539086e-02 1.35264885e-02 1.35007773e-02 + 1.34767750e-02 1.34544815e-02 1.34338969e-02 1.34150212e-02 1.33978544e-02 + 1.33823966e-02 1.33686476e-02 1.33566075e-02 1.33462763e-02 1.33376541e-02 + 1.33307407e-02 1.33255363e-02 1.33220408e-02 1.33202542e-02 1.33201765e-02 + 1.33218078e-02 1.33251480e-02 1.33301970e-02 1.33369550e-02 1.33454220e-02 + 1.33555978e-02 1.33674825e-02 1.33810762e-02 1.33963787e-02 1.34133902e-02 + 1.34321105e-02 1.34525397e-02 1.34746779e-02 1.34985249e-02 1.35240808e-02 + 1.35513455e-02 1.35803192e-02 1.36110016e-02 1.36433930e-02 1.36774932e-02 + 1.37133022e-02 1.37508200e-02 1.37900467e-02 1.38309822e-02 1.38736265e-02 + 1.39179796e-02 1.39640414e-02 1.40118121e-02 1.40612914e-02 1.41124796e-02 + 1.41653765e-02 1.42199821e-02 1.42762964e-02 1.43343194e-02 1.43940512e-02 + 1.44554916e-02 1.45186406e-02 1.45834983e-02 1.46500646e-02 1.47183396e-02 + 1.47883231e-02 1.48600153e-02 1.49334160e-02 1.50085252e-02 1.50853430e-02 + 1.51638693e-02 1.52441041e-02 1.53260474e-02 1.54096992e-02 1.54950594e-02 + 1.55821280e-02 1.56709051e-02 1.57613905e-02 1.58535843e-02 1.59474864e-02 + 1.60430969e-02 1.61404156e-02 1.62394427e-02 1.63401780e-02 1.64426215e-02 + 1.65467732e-02 1.66526331e-02 1.67602012e-02 1.68694775e-02 1.69804618e-02 + 1.70931542e-02 1.72075547e-02 1.73236633e-02 1.74414798e-02 1.75610043e-02 + 1.76822368e-02 1.78051772e-02 1.79298256e-02 1.80561818e-02 1.81842458e-02 + 1.83140177e-02 1.84454973e-02 1.85786847e-02 1.87135798e-02 1.88501827e-02 + 1.89884931e-02 1.91285113e-02 1.92702370e-02 1.94136703e-02 1.95588111e-02 + 1.97056595e-02 1.98542153e-02 2.00044786e-02 2.01564492e-02 2.03101272e-02 + 2.04655126e-02 2.06226053e-02 2.07814052e-02 2.09419123e-02 2.11041267e-02 + 2.12680482e-02 2.14336768e-02 2.16010125e-02 2.17700553e-02 2.19408050e-02 + 2.21132617e-02 2.22874254e-02 2.24632959e-02 2.26408733e-02 2.28201575e-02 + 2.30011484e-02 2.31838461e-02 2.33682505e-02 2.35543615e-02 2.37421791e-02 + 2.39317033e-02 2.41229339e-02 2.43158711e-02 2.45105147e-02 2.47068647e-02 + 2.49049210e-02 2.51046836e-02 2.53061524e-02 2.55093275e-02 2.57142087e-02 + 2.59207960e-02 2.61290894e-02 2.63390888e-02 2.65507942e-02 2.67642055e-02 + 2.69793227e-02 2.71961457e-02 2.74146744e-02 2.76349090e-02 2.78568491e-02 + 2.80804949e-02 2.83058463e-02 2.85329032e-02 2.87616656e-02 2.89921334e-02 + 2.92243066e-02 2.94581851e-02 2.96937689e-02 2.99310578e-02 3.01700520e-02 + 3.04107512e-02 3.06531555e-02 3.08972648e-02 3.11430790e-02 3.13905981e-02 + 3.16398220e-02 3.18907507e-02 3.21433841e-02 3.23977222e-02 3.26537648e-02 + 3.29115120e-02 3.31709637e-02 3.34321199e-02 3.36949803e-02 3.39595451e-02 + 3.42258142e-02 3.44937874e-02 3.47634647e-02 3.50348461e-02 3.53079315e-02 + 3.55827209e-02 3.58592141e-02 3.61374112e-02 3.64173120e-02 3.66989165e-02 + 3.69822246e-02 3.72672363e-02 3.75539515e-02 3.78423701e-02 3.81324920e-02 + 3.84243173e-02 3.87178458e-02 3.90130775e-02 3.93100123e-02 3.96086502e-02 + 3.99089910e-02 4.02110347e-02 4.05147812e-02 4.08202305e-02 4.11273825e-02 + 4.14362371e-02 4.17467942e-02 4.20590539e-02 4.23730160e-02 4.26886804e-02 + 4.30060471e-02 4.33251159e-02 4.36458870e-02 4.39683600e-02 4.42925351e-02 + 4.46184120e-02 4.49459908e-02 4.52752714e-02 4.56062536e-02 4.59389375e-02 + 4.62733229e-02 4.66094097e-02 4.69471980e-02 4.72866875e-02 4.76278783e-02 + 4.79707703e-02 4.83153633e-02 4.86616573e-02 4.90096522e-02 4.93593480e-02 + 4.97107446e-02 5.00638418e-02 5.04186396e-02 5.07751380e-02 5.11333368e-02 + 5.14932360e-02 5.18548354e-02 5.22181351e-02 5.25831349e-02 5.29498347e-02 + 5.33182344e-02 5.36883341e-02 5.40601335e-02 5.44336326e-02 5.48088313e-02 + 5.51857296e-02 5.55643273e-02 5.59446244e-02 5.63266207e-02 5.67103163e-02 + 5.70957109e-02 5.74828046e-02 5.78715972e-02 5.82620886e-02 5.86542788e-02 + 5.90481677e-02 5.94437551e-02 5.98410410e-02 6.02400253e-02 6.06407080e-02 + 6.10430888e-02 6.14471678e-02 6.18529447e-02 6.22604197e-02 6.26695925e-02 + 6.30804630e-02 6.34930312e-02 6.39072970e-02 6.43232602e-02 6.47409209e-02 + 6.51602788e-02 6.55813340e-02 6.60040862e-02 6.64285354e-02 6.68546816e-02 + 6.72825245e-02 6.77120642e-02 6.81433005e-02 6.85762333e-02 6.90108625e-02 + 6.94471881e-02 6.98852099e-02 7.03249278e-02 7.07663417e-02 7.12094516e-02 + 7.16542573e-02 7.21007588e-02 7.25489558e-02 7.29988484e-02 7.34504365e-02 + 7.39037198e-02 7.43586984e-02 7.48153721e-02 7.52737408e-02 7.57338044e-02 + 7.61955628e-02 7.66590160e-02 7.71241637e-02 7.75910059e-02 7.80595425e-02 + 7.85297734e-02 7.90016985e-02 7.94753177e-02 7.99506308e-02 8.04276378e-02 + 8.09063385e-02 8.13867329e-02 8.18688208e-02 8.23526021e-02 8.28380768e-02 + 8.33252446e-02 8.38141056e-02 8.43046595e-02 8.47969063e-02 8.52908459e-02 + 8.57864782e-02 8.62838029e-02 8.67828201e-02 8.72835297e-02 8.77859314e-02 + 8.82900252e-02 8.87958110e-02 8.93032887e-02 8.98124581e-02 9.03233191e-02 + 9.08358717e-02 9.13501157e-02 9.18660509e-02 9.23836774e-02 9.29029949e-02 + 9.34240033e-02 9.39467025e-02 9.44710925e-02 9.49971730e-02 9.55249440e-02 + 9.60544054e-02 9.65855570e-02 9.71183987e-02 9.76529303e-02 9.81891519e-02 + 9.87270632e-02 9.92666641e-02 9.98079545e-02 1.00350934e-01 1.00895603e-01 + 1.01441962e-01 1.01990009e-01 1.02539745e-01 1.03091170e-01 1.03644283e-01 + 1.04199085e-01 1.04755576e-01 1.05313754e-01 1.05873621e-01 1.06435176e-01 + 1.06998419e-01 1.07563349e-01 1.08129968e-01 1.08698273e-01 1.09268266e-01 + 1.09839947e-01 1.10413314e-01 1.10988368e-01 1.11565110e-01 1.12143538e-01 + 1.12723652e-01 1.13305453e-01 1.13888941e-01 1.14474115e-01 1.15060974e-01 + 1.15649520e-01 1.16239751e-01 1.16831669e-01 1.17425271e-01 1.18020560e-01 + 1.18617533e-01 1.19216192e-01 1.19816535e-01 1.20418564e-01 1.21022277e-01 + 1.21627675e-01 1.22234757e-01 1.22843524e-01 1.23453975e-01 1.24066109e-01 + 1.24679928e-01 1.25295431e-01 1.25912617e-01 1.26531487e-01 1.27152040e-01 + 1.27774276e-01 1.28398196e-01 1.29023798e-01 1.29651083e-01 1.30280051e-01 + 1.30910702e-01 1.31543034e-01 1.32177050e-01 1.32812747e-01 1.33450126e-01 + 1.34089187e-01 1.34729929e-01 1.35372353e-01 1.36016459e-01 1.36662246e-01 + 1.37309713e-01 1.37958862e-01 1.38609692e-01 1.39262202e-01 1.39916393e-01 + 1.40572264e-01 1.41229815e-01 1.41889046e-01 1.42549958e-01 1.43212549e-01 + 1.43876819e-01 1.44542770e-01 1.45210399e-01 1.45879708e-01 1.46550695e-01 + 1.47223362e-01 1.47897707e-01 1.48573731e-01 1.49251433e-01 1.49930814e-01 + 1.50611872e-01 1.51294609e-01 1.51979023e-01 1.52665115e-01 1.53352885e-01 + 1.54042332e-01 1.54733456e-01 1.55426257e-01 1.56120735e-01 1.56816890e-01 + 1.57514721e-01 1.58214229e-01 1.58915413e-01 1.59618273e-01 1.60322809e-01 + 1.61029020e-01 1.61736908e-01 1.62446471e-01 1.63157709e-01 1.63870622e-01 + 1.64585210e-01 1.65301473e-01 1.66019411e-01 1.66739023e-01 1.67460310e-01 + 1.68183271e-01 1.68907906e-01 1.69634214e-01 1.70362197e-01 1.71091853e-01 + 1.71823182e-01 1.72556184e-01 1.73290860e-01 1.74027208e-01 1.74765229e-01 + 1.75504923e-01 1.76246289e-01 1.76989327e-01 1.77734037e-01 1.78480419e-01 + 1.79228473e-01 1.79978199e-01 1.80729595e-01 1.81482663e-01 1.82237402e-01 + 1.82993812e-01 1.83751893e-01 1.84511644e-01 1.85273065e-01 1.86036157e-01 + 1.86800919e-01 1.87567350e-01 1.88335451e-01 1.89105222e-01 1.89876662e-01 + 1.90649771e-01 1.91424549e-01 1.92200996e-01 1.92979112e-01 1.93758896e-01 + 1.94540348e-01 1.95323469e-01 1.96108257e-01 1.96894713e-01 1.97682837e-01 + 1.98472628e-01 1.99264087e-01 2.00057212e-01 2.00852004e-01 2.01648463e-01 + 2.02446589e-01 2.03246381e-01 2.04047839e-01 2.04850963e-01 2.05655753e-01 + 2.06462208e-01 2.07270329e-01 2.08080115e-01 2.08891567e-01 2.09704683e-01 + 2.10519464e-01 2.11335909e-01 2.12154019e-01 2.12973793e-01 2.13795231e-01 + 2.14618333e-01 2.15443098e-01 2.16269527e-01 2.17097619e-01 2.17927374e-01 + 2.18758792e-01 2.19591873e-01 2.20426616e-01 2.21263022e-01 2.22101090e-01 + 2.22940819e-01 2.23782211e-01 2.24625264e-01 2.25469978e-01 2.26316354e-01 + 2.27164390e-01 2.28014088e-01 2.28865446e-01 2.29718464e-01 2.30573143e-01 + 2.31429482e-01 2.32287480e-01 2.33147139e-01 2.34008457e-01 2.34871434e-01 + 2.35736070e-01 2.36602365e-01 2.37470319e-01 2.38339931e-01 2.39211202e-01 + 2.40084131e-01 2.40958717e-01 2.41834962e-01 2.42712864e-01 2.43592423e-01 + 2.44473640e-01 2.45356513e-01 2.46241044e-01 2.47127230e-01 2.48015074e-01 + 2.48904573e-01 2.49795728e-01 2.50688539e-01 2.51583006e-01 2.52479128e-01 + 2.53376905e-01 2.54276337e-01 2.55177424e-01 2.56080166e-01 2.56984562e-01 + 2.57890612e-01 2.58798316e-01 2.59707674e-01 2.60618685e-01 2.61531350e-01 + 2.62445667e-01 2.63361638e-01 2.64279262e-01 2.65198538e-01 2.66119466e-01 + 2.67042047e-01 2.67966279e-01 2.68892164e-01 2.69819699e-01 2.70748886e-01 + 2.71679724e-01 2.72612213e-01 2.73546353e-01 2.74482143e-01 2.75419584e-01 + 2.76358674e-01 2.77299415e-01 2.78241805e-01 2.79185844e-01 2.80131533e-01 + 2.81078870e-01 2.82027857e-01 2.82978492e-01 2.83930775e-01 2.84884707e-01 + 2.85840287e-01 2.86797514e-01 2.87756389e-01 2.88716911e-01 2.89679080e-01 + 2.90642896e-01 2.91608359e-01 2.92575468e-01 2.93544224e-01 2.94514625e-01 + 2.95486673e-01 2.96460366e-01 2.97435704e-01 2.98412687e-01 2.99391316e-01 + 3.00371589e-01 3.01353507e-01 3.02337069e-01 3.03322275e-01 3.04309125e-01 + 3.05297618e-01 3.06287755e-01 3.07279535e-01 3.08272958e-01 3.09268024e-01 + 3.10264733e-01 3.11263084e-01 3.12263076e-01 3.13264711e-01 3.14267987e-01 + 3.15272905e-01 3.16279464e-01 3.17287664e-01 3.18297505e-01 3.19308986e-01 + 3.20322108e-01 3.21336869e-01 3.22353271e-01 3.23371312e-01 3.24390992e-01 + 3.25412312e-01 3.26435271e-01 3.27459868e-01 3.28486104e-01 3.29513978e-01 + 3.30543490e-01 3.31574640e-01 3.32607428e-01 3.33641852e-01 3.34677914e-01 + 3.35715613e-01 3.36754949e-01 3.37795921e-01 3.38838529e-01 3.39882774e-01 + 3.40928653e-01 3.41976169e-01 3.43025320e-01 3.44076105e-01 3.45128526e-01 + 3.46182581e-01 3.47238271e-01 3.48295594e-01 3.49354552e-01 3.50415143e-01 + 3.51477368e-01 3.52541225e-01 3.53606716e-01 3.54673839e-01 3.55742595e-01 + 3.56812983e-01 3.57885003e-01 3.58958655e-01 3.60033939e-01 3.61110853e-01 + 3.62189399e-01 3.63269575e-01 3.64351382e-01 3.65434820e-01 3.66519887e-01 + 3.67606584e-01 3.68694911e-01 3.69784868e-01 3.70876453e-01 3.71969667e-01 + 3.73064510e-01 3.74160981e-01 3.75259081e-01 3.76358808e-01 3.77460163e-01 + 3.78563145e-01 3.79667755e-01 3.80773992e-01 3.81881855e-01 3.82991344e-01 + 3.84102460e-01 3.85215202e-01 3.86329570e-01 3.87445563e-01 3.88563181e-01 + 3.89682424e-01 3.90803292e-01 3.91925784e-01 3.93049901e-01 3.94175642e-01 + 3.95303006e-01 3.96431994e-01 3.97562605e-01 3.98694839e-01 3.99828696e-01 + 4.00964175e-01 4.02101276e-01 4.03240000e-01 4.04380345e-01 4.05522312e-01 + 4.06665899e-01 4.07811108e-01 4.08957938e-01 4.10106388e-01 4.11256458e-01 + 4.12408148e-01 4.13561458e-01 4.14716388e-01 4.15872936e-01 4.17031104e-01 + 4.18190890e-01 4.19352295e-01 4.20515317e-01 4.21679958e-01 4.22846216e-01 + 4.24014092e-01 4.25183585e-01 4.26354695e-01 4.27527421e-01 4.28701764e-01 + 4.29877723e-01 4.31055298e-01 4.32234488e-01 4.33415294e-01 4.34597715e-01 + 4.35781751e-01 4.36967401e-01 4.38154665e-01 4.39343544e-01 4.40534036e-01 + 4.41726142e-01 4.42919861e-01 4.44115193e-01 4.45312138e-01 4.46510695e-01 + 4.47710864e-01 4.48912645e-01 4.50116038e-01 4.51321043e-01 4.52527658e-01 + 4.53735885e-01 4.54945722e-01 4.56157169e-01 4.57370226e-01 4.58584894e-01 + 4.59801170e-01 4.61019056e-01 4.62238551e-01 4.63459655e-01 4.64682367e-01 + 4.65906688e-01 4.67132616e-01 4.68360152e-01 4.69589295e-01 4.70820046e-01 + 4.72052403e-01 4.73286367e-01 4.74521937e-01 4.75759113e-01 4.76997895e-01 + 4.78238283e-01 4.79480276e-01 4.80723873e-01 4.81969076e-01 4.83215882e-01 + 4.84464293e-01 4.85714308e-01 4.86965926e-01 4.88219148e-01 4.89473972e-01 + 4.90730400e-01 4.91988430e-01 4.93248062e-01 4.94509296e-01 4.95772131e-01 + 4.97036568e-01 4.98302606e-01 4.99570245e-01 5.00839485e-01 5.02110324e-01 + 5.03382764e-01 5.04656804e-01 5.05932442e-01 5.07209680e-01 5.08488517e-01 + 5.09768953e-01 5.11050986e-01 5.12334618e-01 5.13619847e-01 5.14906674e-01 + 5.16195098e-01 5.17485119e-01 5.18776737e-01 5.20069951e-01 5.21364761e-01 + 5.22661167e-01 5.23959168e-01 5.25258764e-01 5.26559955e-01 5.27862741e-01 + 5.29167122e-01 5.30473096e-01 5.31780664e-01 5.33089826e-01 5.34400580e-01 + 5.35712928e-01 5.37026868e-01 5.38342401e-01 5.39659526e-01 5.40978242e-01 + 5.42298550e-01 5.43620449e-01 5.44943939e-01 5.46269020e-01 5.47595691e-01 + 5.48923952e-01 5.50253802e-01 5.51585242e-01 5.52918272e-01 5.54252890e-01 + 5.55589096e-01 5.56926891e-01 5.58266274e-01 5.59607245e-01 5.60949803e-01 + 5.62293948e-01 5.63639680e-01 5.64986999e-01 5.66335903e-01 5.67686394e-01 + 5.69038470e-01 5.70392132e-01 5.71747378e-01 5.73104210e-01 5.74462626e-01 + 5.75822626e-01 5.77184210e-01 5.78547377e-01 5.79912128e-01 5.81278461e-01 + 5.82646378e-01 5.84015876e-01 5.85386957e-01 5.86759620e-01 5.88133864e-01 + 5.89509689e-01 5.90887095e-01 5.92266082e-01 5.93646649e-01 5.95028796e-01 + 5.96412522e-01 5.97797828e-01 5.99184713e-01 6.00573177e-01 6.01963219e-01 + 6.03354840e-01 6.04748038e-01 6.06142814e-01 6.07539167e-01 6.08937097e-01 + 6.10336603e-01 6.11737686e-01 6.13140346e-01 6.14544580e-01 6.15950391e-01 + 6.17357776e-01 6.18766736e-01 6.20177271e-01 6.21589379e-01 6.23003062e-01 + 6.24418319e-01 6.25835148e-01 6.27253551e-01 6.28673526e-01 6.30095073e-01 + 6.31518193e-01 6.32942884e-01 6.34369147e-01 6.35796981e-01 6.37226386e-01 + 6.38657361e-01 6.40089906e-01 6.41524022e-01 6.42959706e-01 6.44396960e-01 + 6.45835783e-01 6.47276175e-01 6.48718135e-01 6.50161663e-01 6.51606758e-01 + 6.53053421e-01 6.54501651e-01 6.55951448e-01 6.57402811e-01 6.58855740e-01 + 6.60310236e-01 6.61766296e-01 6.63223922e-01 6.64683112e-01 6.66143868e-01 + 6.67606187e-01 6.69070070e-01 6.70535517e-01 6.72002527e-01 6.73471100e-01 + 6.74941236e-01 6.76412934e-01 6.77886194e-01 6.79361015e-01 6.80837398e-01 + 1.19316516e-02 1.17837661e-02 1.16368916e-02 1.14910312e-02 1.13461881e-02 + 1.12023652e-02 1.10595657e-02 1.09177924e-02 1.07770486e-02 1.06373371e-02 + 1.04986608e-02 1.03610229e-02 1.02244262e-02 1.00888736e-02 9.95436796e-03 + 9.82091227e-03 9.68850936e-03 9.55716205e-03 9.42687318e-03 9.29764555e-03 + 9.16948195e-03 9.04238514e-03 8.91635788e-03 8.79140288e-03 8.66752287e-03 + 8.54472052e-03 8.42299850e-03 8.30235947e-03 8.18280604e-03 8.06434082e-03 + 7.94696640e-03 7.83068535e-03 7.71550020e-03 7.60141348e-03 7.48842769e-03 + 7.37654531e-03 7.26576880e-03 7.15610060e-03 7.04754311e-03 6.94009874e-03 + 6.83376985e-03 6.72855879e-03 6.62446789e-03 6.52149946e-03 6.41965576e-03 + 6.31893907e-03 6.21935162e-03 6.12089562e-03 6.02357326e-03 5.92738670e-03 + 5.83233810e-03 5.73842957e-03 5.64566320e-03 5.55404108e-03 5.46356524e-03 + 5.37423772e-03 5.28606051e-03 5.19903560e-03 5.11316493e-03 5.02845043e-03 + 4.94489402e-03 4.86249756e-03 4.78126291e-03 4.70119191e-03 4.62228636e-03 + 4.54454803e-03 4.46797870e-03 4.39258007e-03 4.31835387e-03 4.24530177e-03 + 4.17342543e-03 4.10272646e-03 4.03320649e-03 3.96486708e-03 3.89770979e-03 + 3.83173614e-03 3.76694764e-03 3.70334576e-03 3.64093194e-03 3.57970760e-03 + 3.51967415e-03 3.46083296e-03 3.40318535e-03 3.34673266e-03 3.29147617e-03 + 3.23741715e-03 3.18455682e-03 3.13289641e-03 3.08243708e-03 3.03318001e-03 + 2.98512631e-03 2.93827709e-03 2.89263342e-03 2.84819635e-03 2.80496690e-03 + 2.76294607e-03 2.72213481e-03 2.68253407e-03 2.64414475e-03 2.60696775e-03 + 2.57100391e-03 2.53625406e-03 2.50271900e-03 2.47039951e-03 2.43929633e-03 + 2.40941017e-03 2.38074173e-03 2.35329167e-03 2.32706061e-03 2.30204917e-03 + 2.27825792e-03 2.25568742e-03 2.23433817e-03 2.21421068e-03 2.19530540e-03 + 2.17762279e-03 2.16116324e-03 2.14592713e-03 2.13191482e-03 2.11912664e-03 + 2.10756286e-03 2.09722378e-03 2.08810961e-03 2.08022058e-03 2.07355687e-03 + 2.06811863e-03 2.06390598e-03 2.06091903e-03 2.05915784e-03 2.05862245e-03 + 2.05931288e-03 2.06122911e-03 2.06437109e-03 2.06873876e-03 2.07433201e-03 + 2.08115071e-03 2.08919471e-03 2.09846382e-03 2.10895782e-03 2.12067647e-03 + 2.13361950e-03 2.14778662e-03 2.16317748e-03 2.17979175e-03 2.19762903e-03 + 2.21668892e-03 2.23697097e-03 2.25847471e-03 2.28119965e-03 2.30514526e-03 + 2.33031099e-03 2.35669626e-03 2.38430046e-03 2.41312296e-03 2.44316308e-03 + 2.47442014e-03 2.50689342e-03 2.54058217e-03 2.57548561e-03 2.61160294e-03 + 2.64893333e-03 2.68747592e-03 2.72722982e-03 2.76819412e-03 2.81036787e-03 + 2.85375012e-03 2.89833986e-03 2.94413606e-03 2.99113769e-03 3.03934365e-03 + 3.08875285e-03 3.13936416e-03 3.19117640e-03 3.24418841e-03 3.29839896e-03 + 3.35380682e-03 3.41041071e-03 3.46820936e-03 3.52720143e-03 3.58738558e-03 + 3.64876043e-03 3.71132460e-03 3.77507665e-03 3.84001514e-03 3.90613858e-03 + 3.97344547e-03 4.04193428e-03 4.11160346e-03 4.18245143e-03 4.25447658e-03 + 4.32767727e-03 4.40205185e-03 4.47759865e-03 4.55431593e-03 4.63220199e-03 + 4.71125505e-03 4.79147333e-03 4.87285502e-03 4.95539830e-03 5.03910129e-03 + 5.12396213e-03 5.20997890e-03 5.29714966e-03 5.38547247e-03 5.47494535e-03 + 5.56556628e-03 5.65733324e-03 5.75024419e-03 5.84429703e-03 5.93948968e-03 + 6.03582001e-03 6.13328588e-03 6.23188511e-03 6.33161551e-03 6.43247487e-03 + 6.53446095e-03 6.63757148e-03 6.74180419e-03 6.84715676e-03 6.95362687e-03 + 7.06121216e-03 7.16991026e-03 7.27971878e-03 7.39063530e-03 7.50265737e-03 + 7.61578255e-03 7.73000833e-03 7.84533223e-03 7.96175172e-03 8.07926424e-03 + 8.19786724e-03 8.31755813e-03 8.43833428e-03 8.56019309e-03 8.68313189e-03 + 8.80714802e-03 8.93223879e-03 9.05840148e-03 9.18563337e-03 9.31393170e-03 + 9.44329371e-03 9.57371661e-03 9.70519759e-03 9.83773382e-03 9.97132246e-03 + 1.01059606e-02 1.02416455e-02 1.03783741e-02 1.05161435e-02 1.06549508e-02 + 1.07947931e-02 1.09356673e-02 1.10775705e-02 1.12204997e-02 1.13644517e-02 + 1.15094237e-02 1.16554125e-02 1.18024151e-02 1.19504282e-02 1.20994490e-02 + 1.22494741e-02 1.24005005e-02 1.25525250e-02 1.27055444e-02 1.28595555e-02 + 1.30145552e-02 1.31705401e-02 1.33275071e-02 1.34854528e-02 1.36443741e-02 + 1.38042677e-02 1.39651301e-02 1.41269582e-02 1.42897485e-02 1.44534978e-02 + 1.46182027e-02 1.47838598e-02 1.49504657e-02 1.51180170e-02 1.52865103e-02 + 1.54559422e-02 1.56263093e-02 1.57976080e-02 1.59698349e-02 1.61429866e-02 + 1.63170596e-02 1.64920502e-02 1.66679551e-02 1.68447707e-02 1.70224935e-02 + 1.72011198e-02 1.73806462e-02 1.75610691e-02 1.77423848e-02 1.79245899e-02 + 1.81076806e-02 1.82916533e-02 1.84765045e-02 1.86622305e-02 1.88488276e-02 + 1.90362922e-02 1.92246206e-02 1.94138091e-02 1.96038541e-02 1.97947518e-02 + 1.99864985e-02 2.01790905e-02 2.03725242e-02 2.05667957e-02 2.07619013e-02 + 2.09578372e-02 2.11545998e-02 2.13521852e-02 2.15505896e-02 2.17498093e-02 + 2.19498405e-02 2.21506794e-02 2.23523222e-02 2.25547650e-02 2.27580040e-02 + 2.29620355e-02 2.31668555e-02 2.33724603e-02 2.35788460e-02 2.37860087e-02 + 2.39939446e-02 2.42026499e-02 2.44121205e-02 2.46223528e-02 2.48333427e-02 + 2.50450864e-02 2.52575801e-02 2.54708198e-02 2.56848016e-02 2.58995216e-02 + 2.61149759e-02 2.63311606e-02 2.65480717e-02 2.67657054e-02 2.69840578e-02 + 2.72031248e-02 2.74229026e-02 2.76433871e-02 2.78645746e-02 2.80864610e-02 + 2.83090425e-02 2.85323149e-02 2.87562745e-02 2.89809172e-02 2.92062390e-02 + 2.94322361e-02 2.96589045e-02 2.98862402e-02 3.01142392e-02 3.03428976e-02 + 3.05722114e-02 3.08021766e-02 3.10327893e-02 3.12640455e-02 3.14959413e-02 + 3.17284726e-02 3.19616355e-02 3.21954260e-02 3.24298402e-02 3.26648740e-02 + 3.29005236e-02 3.31367848e-02 3.33736539e-02 3.36111267e-02 3.38491993e-02 + 3.40878677e-02 3.43271281e-02 3.45669763e-02 3.48074084e-02 3.50484206e-02 + 3.52900087e-02 3.55321689e-02 3.57748971e-02 3.60181895e-02 3.62620420e-02 + 3.65064508e-02 3.67514117e-02 3.69969210e-02 3.72429746e-02 3.74895686e-02 + 3.77366991e-02 3.79843621e-02 3.82325537e-02 3.84812698e-02 3.87305067e-02 + 3.89802604e-02 3.92305269e-02 3.94813024e-02 3.97325829e-02 3.99843644e-02 + 4.02366431e-02 4.04894151e-02 4.07426765e-02 4.09964234e-02 4.12506518e-02 + 4.15053579e-02 4.17605378e-02 4.20161876e-02 4.22723034e-02 4.25288815e-02 + 4.27859178e-02 4.30434086e-02 4.33013499e-02 4.35597380e-02 4.38185689e-02 + 4.40778389e-02 4.43375441e-02 4.45976807e-02 4.48582449e-02 4.51192328e-02 + 4.53806406e-02 4.56424645e-02 4.59047007e-02 4.61673455e-02 4.64303950e-02 + 4.66938455e-02 4.69576932e-02 4.72219342e-02 4.74865650e-02 4.77515816e-02 + 4.80169804e-02 4.82827576e-02 4.85489095e-02 4.88154324e-02 4.90823225e-02 + 4.93495761e-02 4.96171896e-02 4.98851592e-02 5.01534812e-02 5.04221520e-02 + 5.06911679e-02 5.09605252e-02 5.12302202e-02 5.15002494e-02 5.17706091e-02 + 5.20412956e-02 5.23123054e-02 5.25836347e-02 5.28552801e-02 5.31272378e-02 + 5.33995044e-02 5.36720762e-02 5.39449496e-02 5.42181211e-02 5.44915872e-02 + 5.47653442e-02 5.50393887e-02 5.53137171e-02 5.55883259e-02 5.58632116e-02 + 5.61383707e-02 5.64137997e-02 5.66894951e-02 5.69654535e-02 5.72416713e-02 + 5.75181451e-02 5.77948716e-02 5.80718471e-02 5.83490684e-02 5.86265320e-02 + 5.89042345e-02 5.91821725e-02 5.94603427e-02 5.97387415e-02 6.00173658e-02 + 6.02962120e-02 6.05752770e-02 6.08545573e-02 6.11340496e-02 6.14137506e-02 + 6.16936570e-02 6.19737655e-02 6.22540729e-02 6.25345758e-02 6.28152709e-02 + 6.30961552e-02 6.33772252e-02 6.36584778e-02 6.39399097e-02 6.42215178e-02 + 6.45032988e-02 6.47852496e-02 6.50673669e-02 6.53496477e-02 6.56320887e-02 + 6.59146868e-02 6.61974389e-02 6.64803419e-02 6.67633926e-02 6.70465880e-02 + 6.73299249e-02 6.76134004e-02 6.78970112e-02 6.81807545e-02 6.84646270e-02 + 6.87486259e-02 6.90327480e-02 6.93169904e-02 6.96013501e-02 6.98858240e-02 + 7.01704093e-02 7.04551029e-02 7.07399019e-02 7.10248033e-02 7.13098043e-02 + 7.15949019e-02 7.18800932e-02 7.21653753e-02 7.24507453e-02 7.27362004e-02 + 7.30217377e-02 7.33073544e-02 7.35930475e-02 7.38788144e-02 7.41646521e-02 + 7.44505580e-02 7.47365291e-02 7.50225627e-02 7.53086561e-02 7.55948066e-02 + 7.58810112e-02 7.61672674e-02 7.64535724e-02 7.67399235e-02 7.70263181e-02 + 7.73127534e-02 7.75992267e-02 7.78857354e-02 7.81722770e-02 7.84588486e-02 + 7.87454477e-02 7.90320718e-02 7.93187181e-02 7.96053841e-02 7.98920673e-02 + 8.01787651e-02 8.04654749e-02 8.07521941e-02 8.10389204e-02 8.13256510e-02 + 8.16123836e-02 8.18991157e-02 8.21858447e-02 8.24725683e-02 8.27592839e-02 + 8.30459891e-02 8.33326815e-02 8.36193586e-02 8.39060181e-02 8.41926576e-02 + 8.44792746e-02 8.47658669e-02 8.50524319e-02 8.53389675e-02 8.56254713e-02 + 8.59119408e-02 8.61983740e-02 8.64847683e-02 8.67711216e-02 8.70574315e-02 + 8.73436959e-02 8.76299124e-02 8.79160788e-02 8.82021929e-02 8.84882524e-02 + 8.87742552e-02 8.90601991e-02 8.93460819e-02 8.96319014e-02 8.99176554e-02 + 9.02033419e-02 9.04889586e-02 9.07745035e-02 9.10599745e-02 9.13453694e-02 + 9.16306861e-02 9.19159227e-02 9.22010770e-02 9.24861469e-02 9.27711305e-02 + 9.30560257e-02 9.33408305e-02 9.36255428e-02 9.39101607e-02 9.41946823e-02 + 9.44791055e-02 9.47634283e-02 9.50476489e-02 9.53317653e-02 9.56157755e-02 + 9.58996777e-02 9.61834699e-02 9.64671503e-02 9.67507170e-02 9.70341681e-02 + 9.73175018e-02 9.76007161e-02 9.78838094e-02 9.81667797e-02 9.84496252e-02 + 9.87323442e-02 9.90149348e-02 9.92973954e-02 9.95797240e-02 9.98619190e-02 + 1.00143979e-01 1.00425901e-01 1.00707685e-01 1.00989328e-01 1.01270829e-01 + 1.01552185e-01 1.01833397e-01 1.02114461e-01 1.02395376e-01 1.02676140e-01 + 1.02956752e-01 1.03237211e-01 1.03517513e-01 1.03797659e-01 1.04077646e-01 + 1.04357473e-01 1.04637138e-01 1.04916640e-01 1.05195977e-01 1.05475147e-01 + 1.05754150e-01 1.06032982e-01 1.06311644e-01 1.06590134e-01 1.06868449e-01 + 1.07146589e-01 1.07424552e-01 1.07702336e-01 1.07979941e-01 1.08257365e-01 + 1.08534605e-01 1.08811662e-01 1.09088533e-01 1.09365218e-01 1.09641714e-01 + 1.09918020e-01 1.10194135e-01 1.10470058e-01 1.10745788e-01 1.11021322e-01 + 1.11296660e-01 1.11571800e-01 1.11846741e-01 1.12121482e-01 1.12396021e-01 + 1.12670358e-01 1.12944490e-01 1.13218418e-01 1.13492138e-01 1.13765651e-01 + 1.14038955e-01 1.14312048e-01 1.14584930e-01 1.14857599e-01 1.15130055e-01 + 1.15402295e-01 1.15674319e-01 1.15946126e-01 1.16217714e-01 1.16489083e-01 + 1.16760231e-01 1.17031157e-01 1.17301860e-01 1.17572339e-01 1.17842593e-01 + 1.18112620e-01 1.18382420e-01 1.18651992e-01 1.18921334e-01 1.19190445e-01 + 1.19459326e-01 1.19727973e-01 1.19996387e-01 1.20264566e-01 1.20532510e-01 + 1.20800216e-01 1.21067686e-01 1.21334917e-01 1.21601908e-01 1.21868658e-01 + 1.22135167e-01 1.22401434e-01 1.22667458e-01 1.22933237e-01 1.23198771e-01 + 1.23464058e-01 1.23729099e-01 1.23993892e-01 1.24258436e-01 1.24522731e-01 + 1.24786775e-01 1.25050567e-01 1.25314108e-01 1.25577395e-01 1.25840428e-01 + 1.26103207e-01 1.26365730e-01 1.26627997e-01 1.26890006e-01 1.27151758e-01 + 1.27413251e-01 1.27674484e-01 1.27935457e-01 1.28196169e-01 1.28456619e-01 + 1.28716807e-01 1.28976731e-01 1.29236391e-01 1.29495787e-01 1.29754917e-01 + 1.30013780e-01 1.30272377e-01 1.30530707e-01 1.30788768e-01 1.31046560e-01 + 1.31304083e-01 1.31561335e-01 1.31818316e-01 1.32075026e-01 1.32331463e-01 + 1.32587628e-01 1.32843519e-01 1.33099136e-01 1.33354479e-01 1.33609546e-01 + 1.33864337e-01 1.34118851e-01 1.34373088e-01 1.34627048e-01 1.34880730e-01 + 1.35134132e-01 1.35387255e-01 1.35640099e-01 1.35892661e-01 1.36144943e-01 + 1.36396943e-01 1.36648661e-01 1.36900097e-01 1.37151249e-01 1.37402118e-01 + 1.37652702e-01 1.37903003e-01 1.38153017e-01 1.38402747e-01 1.38652190e-01 + 1.38901347e-01 1.39150217e-01 1.39398799e-01 1.39647094e-01 1.39895100e-01 + 1.40142817e-01 1.40390246e-01 1.40637384e-01 1.40884233e-01 1.41130791e-01 + 1.41377059e-01 1.41623035e-01 1.41868719e-01 1.42114112e-01 1.42359212e-01 + 1.42604020e-01 1.42848534e-01 1.43092755e-01 1.43336681e-01 1.43580314e-01 + 1.43823652e-01 1.44066695e-01 1.44309444e-01 1.44551896e-01 1.44794053e-01 + 1.45035913e-01 1.45277477e-01 1.45518744e-01 1.45759714e-01 1.46000386e-01 + 1.46240761e-01 1.46480838e-01 1.46720616e-01 1.46960096e-01 1.47199277e-01 + 1.47438159e-01 1.47676742e-01 1.47915025e-01 1.48153009e-01 1.48390692e-01 + 1.48628075e-01 1.48865157e-01 1.49101939e-01 1.49338419e-01 1.49574598e-01 + 1.49810476e-01 1.50046052e-01 1.50281327e-01 1.50516299e-01 1.50750969e-01 + 1.50985337e-01 1.51219402e-01 1.51453164e-01 1.51686623e-01 1.51919779e-01 + 1.52152632e-01 1.52385181e-01 1.52617427e-01 1.52849368e-01 1.53081006e-01 + 1.53312340e-01 1.53543370e-01 1.53774095e-01 1.54004516e-01 1.54234632e-01 + 1.54464444e-01 1.54693950e-01 1.54923152e-01 1.55152049e-01 1.55380640e-01 + 1.55608926e-01 1.55836907e-01 1.56064583e-01 1.56291953e-01 1.56519017e-01 + 1.56745775e-01 1.56972228e-01 1.57198375e-01 1.57424216e-01 1.57649751e-01 + 1.57874980e-01 1.58099903e-01 1.58324520e-01 1.58548831e-01 1.58772835e-01 + 1.58996533e-01 1.59219925e-01 1.59443010e-01 1.59665790e-01 1.59888262e-01 + 1.60110429e-01 1.60332289e-01 1.60553842e-01 1.60775089e-01 1.60996030e-01 + 1.61216664e-01 1.61436992e-01 1.61657013e-01 1.61876728e-01 1.62096136e-01 + 1.62315238e-01 1.62534034e-01 1.62752523e-01 1.62970706e-01 1.63188582e-01 + 1.63406152e-01 1.63623416e-01 1.63840374e-01 1.64057026e-01 1.64273371e-01 + 1.64489411e-01 1.64705144e-01 1.64920571e-01 1.65135693e-01 1.65350508e-01 + 1.65565018e-01 1.65779222e-01 1.65993121e-01 1.66206714e-01 1.66420001e-01 + 1.66632983e-01 1.66845660e-01 1.67058031e-01 1.67270097e-01 1.67481858e-01 + 1.67693314e-01 1.67904465e-01 1.68115312e-01 1.68325854e-01 1.68536091e-01 + 1.68746023e-01 1.68955652e-01 1.69164976e-01 1.69373996e-01 1.69582712e-01 + 1.69791124e-01 1.69999232e-01 1.70207037e-01 1.70414538e-01 1.70621735e-01 + 1.70828630e-01 1.71035221e-01 1.71241510e-01 1.71447495e-01 1.71653178e-01 + 1.71858558e-01 1.72063636e-01 1.72268412e-01 1.72472886e-01 1.72677057e-01 + 1.72880927e-01 1.73084495e-01 1.73287762e-01 1.73490728e-01 1.73693392e-01 + 1.73895756e-01 1.74097819e-01 1.74299581e-01 1.74501043e-01 1.74702204e-01 + 1.74903066e-01 1.75103627e-01 1.75303889e-01 1.75503852e-01 1.75703515e-01 + 1.75902879e-01 1.76101944e-01 1.76300710e-01 1.76499178e-01 1.76697348e-01 + 1.76895219e-01 1.77092792e-01 1.77290068e-01 1.77487046e-01 1.77683727e-01 + 1.77880111e-01 1.78076198e-01 1.78271989e-01 1.78467483e-01 1.78662680e-01 + 1.78857582e-01 1.79052188e-01 1.79246498e-01 1.79440514e-01 1.79634234e-01 + 1.79827659e-01 1.80020789e-01 1.80213625e-01 1.80406167e-01 1.80598415e-01 + 1.80790370e-01 1.80982031e-01 1.81173398e-01 1.81364473e-01 1.81555255e-01 + 1.81745745e-01 1.81935942e-01 1.82125848e-01 1.82315462e-01 1.82504784e-01 + 1.82693815e-01 1.82882555e-01 1.83071004e-01 1.83259163e-01 1.83447032e-01 + 1.83634611e-01 1.83821900e-01 1.84008900e-01 1.84195611e-01 1.84382033e-01 + 1.84568166e-01 1.84754012e-01 1.84939569e-01 1.85124838e-01 1.85309820e-01 + 1.85494514e-01 1.85678922e-01 1.85863043e-01 1.86046878e-01 1.86230426e-01 + 1.86413689e-01 1.86596666e-01 1.86779358e-01 1.86961765e-01 1.87143887e-01 + 1.87325725e-01 1.87507279e-01 1.87688549e-01 1.87869536e-01 1.88050239e-01 + 1.88230659e-01 1.88410797e-01 1.88590653e-01 1.88770226e-01 1.88949518e-01 + 1.89128528e-01 1.89307257e-01 1.89485705e-01 1.89663873e-01 1.89841761e-01 + 1.90019368e-01 1.90196696e-01 1.90373745e-01 1.90550515e-01 1.90727005e-01 + 1.90903218e-01 1.91079153e-01 1.91254809e-01 1.91430189e-01 1.91605291e-01 + 1.91780116e-01 1.91954665e-01 1.92128937e-01 1.92302934e-01 1.92476655e-01 + 1.92650101e-01 1.92823272e-01 1.92996169e-01 1.93168791e-01 1.93341139e-01 + 1.93513213e-01 1.93685014e-01 1.93856543e-01 1.94027798e-01 1.94198781e-01 + 1.94369492e-01 1.94539932e-01 1.94710100e-01 1.94879997e-01 1.95049623e-01 + 1.95218979e-01 1.95388065e-01 1.95556881e-01 1.95725428e-01 1.95893706e-01 + 1.96061715e-01 1.96229455e-01 1.96396928e-01 1.96564133e-01 1.96731070e-01 + 1.96897741e-01 1.97064144e-01 1.97230282e-01 1.97396153e-01 1.97561758e-01 + 1.97727099e-01 1.97892174e-01 1.98056984e-01 1.98221530e-01 1.98385813e-01 + 1.98549831e-01 1.98713586e-01 1.98877078e-01 1.99040308e-01 1.99203275e-01 + 1.99365980e-01 1.99528424e-01 1.99690606e-01 1.99852528e-01 2.00014188e-01 + 2.00175589e-01 2.00336730e-01 2.00497611e-01 2.00658233e-01 2.00818596e-01 + 2.00978701e-01 2.01138547e-01 2.01298136e-01 2.01457467e-01 2.01616542e-01 + 2.01775359e-01 2.01933920e-01 2.02092225e-01 2.02250274e-01 2.02408068e-01 + 2.02565607e-01 2.02722891e-01 2.02879921e-01 2.03036697e-01 2.03193220e-01 + 2.03349489e-01 2.03505505e-01 2.03661269e-01 2.03816780e-01 2.03972040e-01 + 2.04127048e-01 2.04281805e-01 2.04436312e-01 2.04590568e-01 2.04744573e-01 + 2.04898329e-01 2.05051836e-01 2.05205094e-01 2.05358103e-01 2.05510864e-01 + 2.05663377e-01 2.05815642e-01 2.05967660e-01 2.06119432e-01 2.06270956e-01 + 2.06422235e-01 2.06573268e-01 2.06724055e-01 2.06874598e-01 2.07024895e-01 + 2.07174948e-01 2.07324757e-01 2.07474323e-01 2.07623645e-01 2.07772725e-01 + 2.07921561e-01 2.08070156e-01 2.08218508e-01 2.08366619e-01 2.08514489e-01 + 2.08662119e-01 2.08809507e-01 2.08956656e-01 2.09103565e-01 2.09250235e-01 + 2.09396665e-01 2.09542857e-01 2.09688811e-01 2.09834526e-01 2.09980005e-01 + 2.10125246e-01 2.10270250e-01 2.10415017e-01 2.10559549e-01 2.10703844e-01 + 2.10847905e-01 2.10991730e-01 2.11135320e-01 2.11278676e-01 2.11421799e-01 + 2.11564687e-01 2.11707342e-01 2.11849765e-01 2.11991955e-01 2.12133912e-01 + 2.12275638e-01 2.12417132e-01 2.12558395e-01 2.12699428e-01 2.12840230e-01 + 2.12980802e-01 2.13121144e-01 2.13261257e-01 2.13401141e-01 2.13540796e-01 + 2.13680223e-01 2.13819422e-01 2.13958394e-01 2.14097138e-01 2.14235656e-01 + 2.14373947e-01 2.14512011e-01 2.14649851e-01 2.14787464e-01 2.14924853e-01 + 2.15062017e-01 2.15198957e-01 2.15335672e-01 2.15472164e-01 2.15608433e-01 + 2.15744479e-01 2.15880302e-01 2.16015903e-01 2.16151282e-01 2.16286440e-01 + 2.16421376e-01 2.16556092e-01 2.16690587e-01 2.16824862e-01 2.16958918e-01 + 2.17092754e-01 2.17226371e-01 2.17359769e-01 2.17492949e-01 2.17625911e-01 + 2.17758656e-01 2.17891183e-01 2.18023493e-01 2.18155587e-01 2.18287464e-01 + 2.18419126e-01 2.18550572e-01 2.18681803e-01 2.18812819e-01 2.18943621e-01 + 2.19074208e-01 2.19204582e-01 2.19334742e-01 2.19464690e-01 2.19594424e-01 + 2.19723946e-01 2.19853257e-01 2.19982355e-01 2.20111242e-01 2.20239919e-01 + 2.20368384e-01 2.20496640e-01 2.20624685e-01 2.20752521e-01 2.20880148e-01 + 2.21007566e-01 2.21134775e-01 2.21261776e-01 2.21388569e-01 2.21515155e-01 + 2.21641533e-01 2.21767705e-01 2.21893670e-01 2.22019429e-01 2.22144983e-01 + 2.22270331e-01 2.22395473e-01 2.22520411e-01 2.22645145e-01 2.22769675e-01 + 2.22894000e-01 2.23018123e-01 2.23142042e-01 2.23265759e-01 2.23389273e-01 + 2.23512586e-01 2.23635696e-01 2.23758606e-01 2.23881314e-01 2.24003822e-01 + 2.24126129e-01 2.24248236e-01 2.24370144e-01 2.24491852e-01 2.24613362e-01 + 2.24734673e-01 2.24855785e-01 2.24976700e-01 2.25097417e-01 2.25217936e-01 + 2.25338259e-01 2.25458385e-01 2.25578315e-01 2.25698048e-01 2.25817587e-01 + 2.25936930e-01 2.26056078e-01 2.26175031e-01 2.26293790e-01 2.26412355e-01 + 2.26530727e-01 2.26648905e-01 2.26766890e-01 2.26884683e-01 2.27002283e-01 + 2.27119691e-01 2.27236908e-01 2.27353934e-01 2.27470768e-01 2.27587412e-01 + 2.27703865e-01 2.27820129e-01 2.27936203e-01 2.28052087e-01 2.28167783e-01 + 2.28283290e-01 2.28398608e-01 2.28513738e-01 2.28628681e-01 2.28743437e-01 + 2.28858005e-01 2.28972386e-01 2.29086581e-01 2.29200591e-01 2.29314414e-01 + 2.29428052e-01 2.29541504e-01 2.29654772e-01 2.29767856e-01 2.29880755e-01 + 2.29993470e-01 2.30106002e-01 2.30218351e-01 2.30330517e-01 2.30442500e-01 + 2.30554301e-01 2.30665921e-01 2.30777358e-01 2.30888614e-01 2.30999690e-01 + 2.31110584e-01 2.31221299e-01 2.31331833e-01 2.31442188e-01 2.31552363e-01 + 2.31662359e-01 2.31772176e-01 2.31881815e-01 2.31991276e-01 2.32100559e-01 + 2.32209665e-01 2.32318593e-01 2.32427344e-01 2.32535919e-01 2.32644318e-01 + 2.32752540e-01 2.32860587e-01 2.32968459e-01 2.33076155e-01 2.33183677e-01 + 2.33291025e-01 2.33398198e-01 2.33505198e-01 2.33612024e-01 2.33718676e-01 + 2.33825157e-01 2.33931464e-01 2.34037599e-01 2.34143562e-01 2.34249354e-01 + 2.34354974e-01 2.34460423e-01 2.34565702e-01 2.34670810e-01 2.34775748e-01 + 2.34880516e-01 2.34985114e-01 2.35089544e-01 2.35193804e-01 2.35297896e-01 + 2.35401819e-01 2.35505574e-01 2.35609162e-01 2.35712582e-01 2.35815835e-01 + 2.35918921e-01 2.36021841e-01 2.36124594e-01 2.36227182e-01 2.36329603e-01 + 2.36431860e-01 2.36533951e-01 2.36635878e-01 2.36737640e-01 2.36839238e-01 + 2.36940672e-01 2.37041942e-01 2.37143049e-01 2.37243994e-01 2.37344775e-01 + 2.37445394e-01 2.37545851e-01 2.37646146e-01 2.37746279e-01 2.37846251e-01 + 2.37946062e-01 2.38045713e-01 2.38145203e-01 2.38244533e-01 2.38343703e-01 + 2.38442713e-01 2.38541565e-01 2.38640257e-01 2.38738790e-01 2.38837166e-01 + 2.38935383e-01 2.39033442e-01 2.39131344e-01 2.39229088e-01 2.39326676e-01 + 2.39424106e-01 2.39521381e-01 2.39618499e-01 2.39715461e-01 2.39812268e-01 + 2.39908919e-01 2.40005416e-01 2.40101757e-01 2.40197944e-01 2.40293977e-01 + 2.40389856e-01 2.40485582e-01 2.40581154e-01 2.40676573e-01 2.40771839e-01 + 2.40866953e-01 2.40961914e-01 2.41056724e-01 2.41151382e-01 2.41245888e-01 + 2.41340243e-01 2.41434447e-01 2.41528501e-01 2.41622404e-01 2.41716158e-01 + 2.41809761e-01 2.41903215e-01 2.41996520e-01 2.42089675e-01 2.42182682e-01 + 2.42275541e-01 2.42368251e-01 2.42460813e-01 2.42553228e-01 2.42645496e-01 + 2.42737616e-01 2.42829589e-01 2.42921416e-01 2.43013097e-01 2.43104631e-01 + 2.43196020e-01 2.43287263e-01 2.43378361e-01 2.43469314e-01 2.43560122e-01 + 2.43650786e-01 2.43741306e-01 2.43831681e-01 2.43921913e-01 2.44012001e-01 + 2.44101947e-01 2.44191749e-01 2.44281409e-01 2.44370926e-01 2.44460302e-01 + 2.44549535e-01 2.44638627e-01 2.44727577e-01 2.44816386e-01 2.44905055e-01 + 2.44993583e-01 2.45081970e-01 2.45170218e-01 2.45258325e-01 2.45346293e-01 + 2.45434122e-01 2.45521812e-01 2.45609362e-01 2.45696775e-01 2.45784049e-01 + 2.45871185e-01 2.45958183e-01 2.46045043e-01 2.46131766e-01 2.46218353e-01 + 2.46304802e-01 2.46391115e-01 2.46477291e-01 2.46563332e-01 2.46649236e-01 + 2.46735006e-01 2.46820639e-01 2.46906138e-01 2.46991502e-01 2.47076731e-01 + 2.47161826e-01 2.47246787e-01 2.47331614e-01 2.47416307e-01 2.47500867e-01 + 2.47585294e-01 2.47669588e-01 2.47753749e-01 2.47837778e-01 2.47921675e-01 + 2.48005440e-01 2.48089073e-01 2.48172575e-01 2.48255945e-01 2.48339185e-01 + 2.48422294e-01 2.48505272e-01 2.48588120e-01 2.48670839e-01 2.48753427e-01 + 2.48835886e-01 2.48918215e-01 2.49000416e-01 2.49082487e-01 2.49164431e-01 + 2.49246245e-01 2.49327932e-01 2.49409490e-01 2.49490922e-01 2.49572225e-01 + 2.49653402e-01 2.49734451e-01 2.49815374e-01 2.49896170e-01 2.49976840e-01 + 2.50057384e-01 2.50137802e-01 2.50218094e-01 2.50298261e-01 2.50378303e-01 + 2.50458221e-01 2.50538013e-01 2.50617681e-01 2.50697225e-01 2.50776645e-01 + 2.50855941e-01 2.50935113e-01 2.51014162e-01 2.51093088e-01 2.51171892e-01 + 2.51250572e-01 2.51329130e-01 2.51407566e-01 2.51485880e-01 2.51564073e-01 + 2.51642143e-01 2.51720093e-01 2.51797921e-01 2.51875629e-01 2.51953216e-01 + 2.52030682e-01 2.52108028e-01 2.52185254e-01 2.52262361e-01 2.52339348e-01 + 2.52416215e-01 2.52492964e-01 2.52569593e-01 2.52646104e-01 2.52722497e-01 + 2.52798771e-01 2.52874927e-01 2.52950965e-01 2.53026886e-01 2.53102689e-01 + 2.53178375e-01 2.53253944e-01 2.53329397e-01 2.53404733e-01 2.53479952e-01 + 2.53555056e-01 2.53630043e-01 2.53704915e-01 2.53779671e-01 2.53854312e-01 + 2.53928839e-01 2.54003250e-01 2.54077546e-01 2.54151728e-01 2.54225796e-01 + 2.54299750e-01 2.54373590e-01 2.54447316e-01 2.54520930e-01 2.54594429e-01 + 2.54667816e-01 2.54741090e-01 2.54814252e-01 2.54887301e-01 2.54960238e-01 + 2.55033063e-01 2.55105776e-01 2.55178378e-01 2.55250868e-01 2.55323247e-01 + 2.55395516e-01 2.55467673e-01 2.55539720e-01 2.55611657e-01 2.55683483e-01 + 2.55755200e-01 2.55826806e-01 2.55898304e-01 2.55969692e-01 2.56040970e-01 + 2.56112140e-01 2.56183201e-01 2.56254154e-01 2.56324998e-01 2.56395734e-01 + 2.56466362e-01 2.56536882e-01 2.56607295e-01 2.56677600e-01 2.56747798e-01 + 2.56817889e-01 2.56887874e-01 2.56957752e-01 2.57027523e-01 2.57097188e-01 + 2.57166747e-01 2.57236200e-01 2.57305548e-01 2.57374790e-01 2.57443927e-01 + 2.57512959e-01 2.57581886e-01 2.57650709e-01 2.57719427e-01 2.57788040e-01 + 2.57856550e-01 2.57924955e-01 2.57993257e-01 2.58061455e-01 2.58129550e-01 + 2.58197542e-01 2.58265431e-01 2.58333217e-01 2.58400900e-01 2.58468481e-01 + 2.58535960e-01 2.58603336e-01 2.58670611e-01 2.58737784e-01 2.58804856e-01 + 2.58871826e-01 2.58938695e-01 2.59005463e-01 2.59072131e-01 2.59138697e-01 + 2.59205164e-01 2.59271530e-01 2.59337796e-01 2.59403962e-01 2.59470029e-01 + 2.59535996e-01 2.59601864e-01 2.59667633e-01 2.59733302e-01 2.59798873e-01 + 2.59864345e-01 2.59929719e-01 2.59994995e-01 2.60060172e-01 2.60125252e-01 + 2.60190234e-01 2.60255118e-01 2.60319905e-01 2.60384595e-01 2.60449188e-01 + 2.60513684e-01 2.60578083e-01 2.60642386e-01 2.60706593e-01 2.60770703e-01 + 2.60834718e-01 2.60898636e-01 2.60962459e-01 2.61026187e-01 2.61089819e-01 + 2.61153356e-01 2.61216799e-01 2.61280146e-01 2.61343399e-01 2.61406557e-01 + 2.61469622e-01 2.61532592e-01 2.61595468e-01 2.61658250e-01 2.61720939e-01 + 2.61783535e-01 2.61846037e-01 2.61908446e-01 2.61970763e-01 2.62032986e-01 + 2.62095117e-01 2.62157156e-01 2.62219102e-01 2.62280956e-01 2.62342719e-01 + 2.62404389e-01 2.62465968e-01 2.62527456e-01 2.62588852e-01 2.62650158e-01 + 2.62711372e-01 2.62772496e-01 2.62833529e-01 2.62894471e-01 2.62955324e-01 + 2.63016086e-01 2.63076758e-01 2.63137341e-01 2.63197833e-01 2.63258237e-01 + 2.63318551e-01 2.63378776e-01 2.63438912e-01 2.63498959e-01 2.63558918e-01 + 2.63618788e-01 2.63678569e-01 2.63738263e-01 2.63797868e-01 2.63857386e-01 + 2.63916816e-01 2.63976158e-01 2.64035413e-01 2.64094581e-01 2.64153661e-01 + 2.64212655e-01 2.64271562e-01 2.64330382e-01 2.64389116e-01 2.64447763e-01 + 2.64506324e-01 2.64564800e-01 2.64623189e-01 2.64681493e-01 2.64739711e-01 + 2.64797844e-01 2.64855892e-01 2.64913854e-01 2.64971732e-01 2.65029524e-01 + 2.65087233e-01 2.65144856e-01 2.65202396e-01 2.65259851e-01 2.65317222e-01 + 2.65374509e-01 2.65431713e-01 2.65488833e-01 2.65545869e-01 2.65602822e-01 + 2.65659692e-01 2.65716480e-01 2.65773184e-01 2.65829805e-01 2.65886344e-01 + 2.65942801e-01 2.65999175e-01 2.66055468e-01 2.66111678e-01 2.66167806e-01 + 2.66223853e-01 2.66279819e-01 2.66335703e-01 2.66391505e-01 2.66447227e-01 + 2.66502868e-01 2.66558427e-01 2.66613907e-01 2.66669305e-01 2.66724624e-01 + 2.66779862e-01 2.66835020e-01 2.66890098e-01 2.66945096e-01 2.67000015e-01 + 2.67054854e-01 2.67109613e-01 2.67164294e-01 2.67218895e-01 2.67273418e-01 + 2.67327861e-01 2.67382226e-01 2.67436512e-01 2.67490720e-01 2.67544850e-01 + 2.67598902e-01 2.67652875e-01 2.67706771e-01 2.67760589e-01 2.67814330e-01 + 2.67867993e-01 2.67921578e-01 2.67975087e-01 2.68028519e-01 2.68081873e-01 + 2.68135151e-01 2.68188352e-01 2.68241477e-01 2.68294526e-01 2.68347498e-01 + 2.68400394e-01 2.68453214e-01 2.68505959e-01 2.68558628e-01 2.68611221e-01 + 2.68663738e-01 2.68716181e-01 2.68768548e-01 2.68820841e-01 2.68873058e-01 + 2.68925201e-01 2.68977269e-01 2.69029263e-01 2.69081182e-01 2.69133027e-01 + 2.69184798e-01 2.69236495e-01 2.69288118e-01 2.69339668e-01 2.69391143e-01 + 2.69442546e-01 2.69493875e-01 2.69545131e-01 2.69596314e-01 2.69647424e-01 + 2.69698461e-01 2.69749425e-01 2.69800317e-01 2.69851137e-01 2.69901884e-01 + 2.69952559e-01 2.70003162e-01 2.70053693e-01 2.70104153e-01 2.70154540e-01 + 2.70204856e-01 2.70255101e-01 2.70305274e-01 2.70355377e-01 2.70405408e-01 + 2.70455368e-01 2.70505258e-01 2.70555077e-01 2.70604825e-01 2.70654503e-01 + 2.70704110e-01 2.70753648e-01 2.70803115e-01 2.70852513e-01 2.70901840e-01 + 2.70951098e-01 2.71000287e-01 2.71049406e-01 2.71098455e-01 2.71147436e-01 + 2.71196347e-01 2.71245190e-01 2.71293963e-01 2.71342668e-01 2.71391304e-01 + 2.71439872e-01 2.71488372e-01 2.71536803e-01 2.71585166e-01 2.71633461e-01 + 2.71681688e-01 2.71729848e-01 2.71777939e-01 2.71825964e-01 2.71873921e-01 + 2.71921810e-01 2.71969632e-01 2.72017388e-01 2.72065076e-01 2.72112698e-01 + 2.72160252e-01 2.72207741e-01 2.72255162e-01 2.72302518e-01 2.72349807e-01 + 2.72397030e-01 2.72444187e-01 2.72491278e-01 2.72538303e-01 2.72585263e-01 + 2.72632157e-01 2.72678985e-01 2.72725748e-01 2.72772446e-01 2.72819079e-01 + 2.72865647e-01 2.72912150e-01 2.72958588e-01 2.73004962e-01 2.73051271e-01 + 2.73097516e-01 2.73143696e-01 2.73189812e-01 2.73235864e-01 2.73281852e-01 + 2.73327776e-01 2.73373636e-01 2.73419432e-01 2.73465166e-01 2.73510835e-01 + 2.73556441e-01 2.73601984e-01 2.73647464e-01 2.73692881e-01 2.73738235e-01 + 2.73783526e-01 2.73828755e-01 2.73873921e-01 2.73919024e-01 2.73964065e-01 + 2.74009044e-01 2.74053961e-01 2.74098815e-01 2.74143608e-01 2.74188339e-01 + 2.74233008e-01 2.74277616e-01 2.74322162e-01 2.74366646e-01 2.74411070e-01 + 2.74455432e-01 2.74499733e-01 2.74543973e-01 2.74588152e-01 2.74632270e-01 + 2.74676328e-01 2.74720325e-01 2.74764262e-01 2.74808138e-01 2.74851954e-01 + 2.74895710e-01 2.74939406e-01 2.74983042e-01 2.75026618e-01 2.75070135e-01 + 2.75113591e-01 2.75156988e-01 2.75200326e-01 2.75243604e-01 2.75286824e-01 + 2.75329984e-01 2.75373085e-01 2.75416127e-01 2.75459110e-01 2.75502034e-01 + 2.75544900e-01 2.75587707e-01 2.75630456e-01 2.75673147e-01 2.75715779e-01 + 2.75758353e-01 2.75800869e-01 2.75843328e-01 2.75885728e-01 2.75928070e-01 + 2.75970355e-01 2.76012583e-01 2.76054753e-01 2.76096866e-01 2.76138921e-01 + 2.76180919e-01 2.76222860e-01 2.76264745e-01 2.76306572e-01 2.76348342e-01 + 2.76390056e-01 2.76431714e-01 2.76473315e-01 2.76514859e-01 2.76556347e-01 + 2.76597779e-01 2.76639155e-01 2.76680475e-01 2.76721739e-01 2.76762947e-01 + 2.76804100e-01 2.76845197e-01 2.76886238e-01 2.76927224e-01 2.76968154e-01 + 2.77009030e-01 2.77049850e-01 2.77090615e-01 2.77131325e-01 2.77171980e-01 + 2.77212581e-01 2.77253126e-01 2.77293617e-01 2.77334054e-01 2.77374436e-01 + 2.77414764e-01 2.77455038e-01 2.77495257e-01 2.77535423e-01 2.77575534e-01 + 2.77615592e-01 2.77655596e-01 2.77695546e-01 2.77735443e-01 2.77775286e-01 + 2.77815076e-01 2.77854812e-01 2.77894495e-01 2.77934125e-01 2.77973702e-01 + 2.78013226e-01 2.78052697e-01 2.78092115e-01 2.78131481e-01 2.78170794e-01 + 2.78210054e-01 2.78249262e-01 2.78288418e-01 2.78327521e-01 2.78366572e-01 + 2.78405571e-01 2.78444519e-01 2.78483414e-01 2.78522257e-01 2.78561049e-01 + 2.78599789e-01 2.78638477e-01 2.78677114e-01 2.78715700e-01 2.78754234e-01 + 2.78792717e-01 2.78831149e-01 2.78869530e-01 2.78907859e-01 2.78946138e-01 + 2.08130000e-04 2.08281191e-04 2.08734762e-04 2.09490714e-04 2.10549046e-04 + 2.11909757e-04 2.13572846e-04 2.15538310e-04 2.17806148e-04 2.20376358e-04 + 2.23248936e-04 2.26423882e-04 2.29901190e-04 2.33680858e-04 2.37762883e-04 + 2.42147260e-04 2.46833984e-04 2.51823051e-04 2.57114457e-04 2.62708196e-04 + 2.68604263e-04 2.74802652e-04 2.81303356e-04 2.88106370e-04 2.95211687e-04 + 3.02619299e-04 3.10329200e-04 3.18341382e-04 3.26655837e-04 3.35272557e-04 + 3.44191533e-04 3.53412758e-04 3.62936221e-04 3.72761913e-04 3.82889825e-04 + 3.93319947e-04 4.04052269e-04 4.15086779e-04 4.26423468e-04 4.38062324e-04 + 4.50003336e-04 4.62246492e-04 4.74791780e-04 4.87639188e-04 5.00788703e-04 + 5.14240312e-04 5.27994002e-04 5.42049760e-04 5.56407572e-04 5.71067423e-04 + 5.86029300e-04 6.01293187e-04 6.16859071e-04 6.32726934e-04 6.48896763e-04 + 6.65368541e-04 6.82142252e-04 6.99217880e-04 7.16595407e-04 7.34274817e-04 + 7.52256092e-04 7.70539216e-04 7.89124169e-04 8.08010934e-04 8.27199493e-04 + 8.46689825e-04 8.66481913e-04 8.86575737e-04 9.06971278e-04 9.27668514e-04 + 9.48667427e-04 9.69967995e-04 9.91570198e-04 1.01347401e-03 1.03567942e-03 + 1.05818640e-03 1.08099493e-03 1.10410498e-03 1.12751654e-03 1.15122957e-03 + 1.17524406e-03 1.19955999e-03 1.22417733e-03 1.24909605e-03 1.27431613e-03 + 1.29983755e-03 1.32566029e-03 1.35178430e-03 1.37820958e-03 1.40493610e-03 + 1.43196382e-03 1.45929272e-03 1.48692278e-03 1.51485397e-03 1.54308626e-03 + 1.57161963e-03 1.60045404e-03 1.62958946e-03 1.65902588e-03 1.68876325e-03 + 1.71880156e-03 1.74914077e-03 1.77978085e-03 1.81072177e-03 1.84196351e-03 + 1.87350602e-03 1.90534929e-03 1.93749327e-03 1.96993795e-03 2.00268328e-03 + 2.03572923e-03 2.06907577e-03 2.10272288e-03 2.13667051e-03 2.17091863e-03 + 2.20546721e-03 2.24031622e-03 2.27546562e-03 2.31091538e-03 2.34666546e-03 + 2.38271583e-03 2.41906645e-03 2.45571729e-03 2.49266831e-03 2.52991947e-03 + 2.56747075e-03 2.60532209e-03 2.64347347e-03 2.68192485e-03 2.72067619e-03 + 2.75972745e-03 2.79907859e-03 2.83872959e-03 2.87868038e-03 2.91893095e-03 + 2.95948125e-03 3.00033123e-03 3.04148087e-03 3.08293011e-03 3.12467892e-03 + 3.16672726e-03 3.20907509e-03 3.25172236e-03 3.29466904e-03 3.33791508e-03 + 3.38146044e-03 3.42530507e-03 3.46944894e-03 3.51389201e-03 3.55863422e-03 + 3.60367554e-03 3.64901591e-03 3.69465531e-03 3.74059367e-03 3.78683096e-03 + 3.83336714e-03 3.88020215e-03 3.92733595e-03 3.97476850e-03 4.02249975e-03 + 4.07052965e-03 4.11885815e-03 4.16748522e-03 4.21641079e-03 4.26563483e-03 + 4.31515728e-03 4.36497811e-03 4.41509725e-03 4.46551466e-03 4.51623029e-03 + 4.56724409e-03 4.61855601e-03 4.67016601e-03 4.72207403e-03 4.77428002e-03 + 4.82678393e-03 4.87958570e-03 4.93268530e-03 4.98608266e-03 5.03977774e-03 + 5.09377048e-03 5.14806083e-03 5.20264873e-03 5.25753414e-03 5.31271700e-03 + 5.36819725e-03 5.42397485e-03 5.48004973e-03 5.53642185e-03 5.59309115e-03 + 5.65005757e-03 5.70732106e-03 5.76488157e-03 5.82273903e-03 5.88089339e-03 + 5.93934459e-03 5.99809258e-03 6.05713731e-03 6.11647870e-03 6.17611671e-03 + 6.23605128e-03 6.29628235e-03 6.35680986e-03 6.41763375e-03 6.47875396e-03 + 6.54017044e-03 6.60188312e-03 6.66389194e-03 6.72619685e-03 6.78879778e-03 + 6.85169468e-03 6.91488748e-03 6.97837611e-03 7.04216053e-03 7.10624066e-03 + 7.17061645e-03 7.23528783e-03 7.30025474e-03 7.36551712e-03 7.43107490e-03 + 7.49692802e-03 7.56307641e-03 7.62952002e-03 7.69625878e-03 7.76329262e-03 + 7.83062147e-03 7.89824528e-03 7.96616398e-03 8.03437750e-03 8.10288577e-03 + 8.17168874e-03 8.24078632e-03 8.31017847e-03 8.37986510e-03 8.44984615e-03 + 8.52012155e-03 8.59069124e-03 8.66155515e-03 8.73271321e-03 8.80416535e-03 + 8.87591149e-03 8.94795158e-03 9.02028554e-03 9.09291331e-03 9.16583480e-03 + 9.23904995e-03 9.31255870e-03 9.38636096e-03 9.46045668e-03 9.53484577e-03 + 9.60952816e-03 9.68450379e-03 9.75977258e-03 9.83533445e-03 9.91118934e-03 + 9.98733717e-03 1.00637779e-02 1.01405114e-02 1.02175376e-02 1.02948564e-02 + 1.03724679e-02 1.04503718e-02 1.05285681e-02 1.06070568e-02 1.06858378e-02 + 1.07649109e-02 1.08442762e-02 1.09239335e-02 1.10038828e-02 1.10841240e-02 + 1.11646570e-02 1.12454817e-02 1.13265980e-02 1.14080060e-02 1.14897054e-02 + 1.15716963e-02 1.16539785e-02 1.17365519e-02 1.18194166e-02 1.19025723e-02 + 1.19860191e-02 1.20697568e-02 1.21537854e-02 1.22381047e-02 1.23227148e-02 + 1.24076155e-02 1.24928067e-02 1.25782883e-02 1.26640604e-02 1.27501227e-02 + 1.28364752e-02 1.29231179e-02 1.30100506e-02 1.30972732e-02 1.31847858e-02 + 1.32725881e-02 1.33606801e-02 1.34490618e-02 1.35377329e-02 1.36266936e-02 + 1.37159436e-02 1.38054829e-02 1.38953113e-02 1.39854289e-02 1.40758355e-02 + 1.41665311e-02 1.42575155e-02 1.43487886e-02 1.44403504e-02 1.45322008e-02 + 1.46243398e-02 1.47167671e-02 1.48094827e-02 1.49024866e-02 1.49957786e-02 + 1.50893587e-02 1.51832267e-02 1.52773826e-02 1.53718263e-02 1.54665577e-02 + 1.55615767e-02 1.56568832e-02 1.57524771e-02 1.58483584e-02 1.59445269e-02 + 1.60409825e-02 1.61377252e-02 1.62347549e-02 1.63320714e-02 1.64296747e-02 + 1.65275647e-02 1.66257413e-02 1.67242043e-02 1.68229538e-02 1.69219896e-02 + 1.70213116e-02 1.71209197e-02 1.72208138e-02 1.73209939e-02 1.74214598e-02 + 1.75222114e-02 1.76232487e-02 1.77245715e-02 1.78261798e-02 1.79280734e-02 + 1.80302523e-02 1.81327163e-02 1.82354654e-02 1.83384994e-02 1.84418184e-02 + 1.85454220e-02 1.86493104e-02 1.87534833e-02 1.88579407e-02 1.89626824e-02 + 1.90677084e-02 1.91730186e-02 1.92786129e-02 1.93844911e-02 1.94906532e-02 + 1.95970991e-02 1.97038286e-02 1.98108417e-02 1.99181382e-02 2.00257182e-02 + 2.01335813e-02 2.02417277e-02 2.03501571e-02 2.04588694e-02 2.05678646e-02 + 2.06771425e-02 2.07867031e-02 2.08965462e-02 2.10066717e-02 2.11170796e-02 + 2.12277697e-02 2.13387419e-02 2.14499962e-02 2.15615323e-02 2.16733503e-02 + 2.17854499e-02 2.18978311e-02 2.20104938e-02 2.21234379e-02 2.22366633e-02 + 2.23501698e-02 2.24639574e-02 2.25780260e-02 2.26923753e-02 2.28070055e-02 + 2.29219162e-02 2.30371074e-02 2.31525791e-02 2.32683311e-02 2.33843632e-02 + 2.35006755e-02 2.36172677e-02 2.37341397e-02 2.38512915e-02 2.39687230e-02 + 2.40864339e-02 2.42044243e-02 2.43226940e-02 2.44412429e-02 2.45600709e-02 + 2.46791779e-02 2.47985637e-02 2.49182282e-02 2.50381714e-02 2.51583931e-02 + 2.52788932e-02 2.53996717e-02 2.55207283e-02 2.56420629e-02 2.57636755e-02 + 2.58855660e-02 2.60077341e-02 2.61301799e-02 2.62529032e-02 2.63759039e-02 + 2.64991818e-02 2.66227368e-02 2.67465689e-02 2.68706779e-02 2.69950637e-02 + 2.71197262e-02 2.72446653e-02 2.73698808e-02 2.74953726e-02 2.76211406e-02 + 2.77471848e-02 2.78735049e-02 2.80001009e-02 2.81269726e-02 2.82541199e-02 + 2.83815427e-02 2.85092409e-02 2.86372144e-02 2.87654630e-02 2.88939867e-02 + 2.90227852e-02 2.91518585e-02 2.92812065e-02 2.94108290e-02 2.95407260e-02 + 2.96708972e-02 2.98013426e-02 2.99320621e-02 3.00630555e-02 3.01943227e-02 + 3.03258636e-02 3.04576781e-02 3.05897660e-02 3.07221272e-02 3.08547616e-02 + 3.09876691e-02 3.11208496e-02 3.12543028e-02 3.13880288e-02 3.15220273e-02 + 3.16562983e-02 3.17908416e-02 3.19256571e-02 3.20607447e-02 3.21961042e-02 + 3.23317356e-02 3.24676386e-02 3.26038132e-02 3.27402593e-02 3.28769766e-02 + 3.30139652e-02 3.31512248e-02 3.32887554e-02 3.34265567e-02 3.35646288e-02 + 3.37029714e-02 3.38415844e-02 3.39804677e-02 3.41196212e-02 3.42590447e-02 + 3.43987381e-02 3.45387013e-02 3.46789341e-02 3.48194365e-02 3.49602082e-02 + 3.51012492e-02 3.52425593e-02 3.53841384e-02 3.55259864e-02 3.56681031e-02 + 3.58104884e-02 3.59531422e-02 3.60960643e-02 3.62392547e-02 3.63827131e-02 + 3.65264394e-02 3.66704335e-02 3.68146954e-02 3.69592247e-02 3.71040215e-02 + 3.72490856e-02 3.73944167e-02 3.75400149e-02 3.76858800e-02 3.78320118e-02 + 3.79784102e-02 3.81250751e-02 3.82720063e-02 3.84192037e-02 3.85666672e-02 + 3.87143966e-02 3.88623918e-02 3.90106526e-02 3.91591790e-02 3.93079707e-02 + 3.94570277e-02 3.96063498e-02 3.97559369e-02 3.99057888e-02 4.00559054e-02 + 4.02062865e-02 4.03569321e-02 4.05078419e-02 4.06590159e-02 4.08104539e-02 + 4.09621558e-02 4.11141214e-02 4.12663506e-02 4.14188432e-02 4.15715991e-02 + 4.17246182e-02 4.18779004e-02 4.20314454e-02 4.21852532e-02 4.23393235e-02 + 4.24936564e-02 4.26482515e-02 4.28031089e-02 4.29582283e-02 4.31136096e-02 + 4.32692526e-02 4.34251573e-02 4.35813234e-02 4.37377508e-02 4.38944395e-02 + 4.40513892e-02 4.42085998e-02 4.43660711e-02 4.45238031e-02 4.46817956e-02 + 4.48400483e-02 4.49985613e-02 4.51573343e-02 4.53163671e-02 4.54756598e-02 + 4.56352120e-02 4.57950237e-02 4.59550947e-02 4.61154249e-02 4.62760141e-02 + 4.64368622e-02 4.65979690e-02 4.67593344e-02 4.69209582e-02 4.70828403e-02 + 4.72449806e-02 4.74073789e-02 4.75700350e-02 4.77329488e-02 4.78961202e-02 + 4.80595489e-02 4.82232350e-02 4.83871781e-02 4.85513782e-02 4.87158351e-02 + 4.88805487e-02 4.90455188e-02 4.92107453e-02 4.93762280e-02 4.95419667e-02 + 4.97079614e-02 4.98742118e-02 5.00407179e-02 5.02074794e-02 5.03744963e-02 + 5.05417683e-02 5.07092953e-02 5.08770772e-02 5.10451138e-02 5.12134049e-02 + 5.13819505e-02 5.15507503e-02 5.17198043e-02 5.18891121e-02 5.20586738e-02 + 5.22284892e-02 5.23985580e-02 5.25688802e-02 5.27394555e-02 5.29102839e-02 + 5.30813652e-02 5.32526992e-02 5.34242858e-02 5.35961248e-02 5.37682161e-02 + 5.39405595e-02 5.41131548e-02 5.42860020e-02 5.44591008e-02 5.46324511e-02 + 5.48060527e-02 5.49799055e-02 5.51540094e-02 5.53283641e-02 5.55029695e-02 + 5.56778255e-02 5.58529319e-02 5.60282885e-02 5.62038952e-02 5.63797519e-02 + 5.65558583e-02 5.67322144e-02 5.69088199e-02 5.70856747e-02 5.72627786e-02 + 5.74401316e-02 5.76177334e-02 5.77955838e-02 5.79736828e-02 5.81520301e-02 + 5.83306256e-02 5.85094691e-02 5.86885605e-02 5.88678997e-02 5.90474864e-02 + 5.92273205e-02 5.94074018e-02 5.95877302e-02 5.97683055e-02 5.99491276e-02 + 6.01301963e-02 6.03115114e-02 6.04930728e-02 6.06748803e-02 6.08569338e-02 + 6.10392330e-02 6.12217779e-02 6.14045683e-02 6.15876039e-02 6.17708848e-02 + 6.19544105e-02 6.21381812e-02 6.23221964e-02 6.25064562e-02 6.26909603e-02 + 6.28757085e-02 6.30607008e-02 6.32459369e-02 6.34314167e-02 6.36171400e-02 + 6.38031067e-02 6.39893165e-02 6.41757694e-02 6.43624651e-02 6.45494036e-02 + 6.47365845e-02 6.49240078e-02 6.51116734e-02 6.52995809e-02 6.54877303e-02 + 6.56761215e-02 6.58647541e-02 6.60536282e-02 6.62427434e-02 6.64320997e-02 + 6.66216969e-02 6.68115348e-02 6.70016132e-02 6.71919320e-02 6.73824910e-02 + 6.75732900e-02 6.77643289e-02 6.79556075e-02 6.81471257e-02 6.83388832e-02 + 6.85308799e-02 6.87231157e-02 6.89155904e-02 6.91083037e-02 6.93012556e-02 + 6.94944458e-02 6.96878742e-02 6.98815407e-02 7.00754450e-02 7.02695870e-02 + 7.04639665e-02 7.06585833e-02 7.08534374e-02 7.10485284e-02 7.12438563e-02 + 7.14394208e-02 7.16352219e-02 7.18312593e-02 7.20275328e-02 7.22240423e-02 + 7.24207876e-02 7.26177686e-02 7.28149851e-02 7.30124368e-02 7.32101237e-02 + 7.34080456e-02 7.36062022e-02 7.38045935e-02 7.40032192e-02 7.42020791e-02 + 7.44011732e-02 7.46005012e-02 7.48000630e-02 7.49998583e-02 7.51998870e-02 + 7.54001490e-02 7.56006441e-02 7.58013720e-02 7.60023326e-02 7.62035258e-02 + 7.64049514e-02 7.66066092e-02 7.68084989e-02 7.70106206e-02 7.72129739e-02 + 7.74155587e-02 7.76183748e-02 7.78214221e-02 7.80247003e-02 7.82282094e-02 + 7.84319490e-02 7.86359192e-02 7.88401196e-02 7.90445501e-02 7.92492105e-02 + 7.94541007e-02 7.96592204e-02 7.98645695e-02 8.00701479e-02 8.02759553e-02 + 8.04819916e-02 8.06882565e-02 8.08947500e-02 8.11014718e-02 8.13084218e-02 + 8.15155998e-02 8.17230055e-02 8.19306389e-02 8.21384998e-02 8.23465879e-02 + 8.25549031e-02 8.27634452e-02 8.29722141e-02 8.31812095e-02 8.33904313e-02 + 8.35998794e-02 8.38095534e-02 8.40194533e-02 8.42295789e-02 8.44399299e-02 + 8.46505063e-02 8.48613078e-02 8.50723343e-02 8.52835855e-02 8.54950613e-02 + 8.57067616e-02 8.59186860e-02 8.61308346e-02 8.63432070e-02 8.65558031e-02 + 8.67686227e-02 8.69816656e-02 8.71949318e-02 8.74084208e-02 8.76221327e-02 + 8.78360672e-02 8.80502241e-02 8.82646033e-02 8.84792045e-02 8.86940276e-02 + 8.89090725e-02 8.91243388e-02 8.93398265e-02 8.95555354e-02 8.97714652e-02 + 8.99876159e-02 9.02039871e-02 9.04205788e-02 9.06373908e-02 9.08544228e-02 + 9.10716747e-02 9.12891463e-02 9.15068374e-02 9.17247478e-02 9.19428774e-02 + 9.21612260e-02 9.23797934e-02 9.25985793e-02 9.28175837e-02 9.30368064e-02 + 9.32562470e-02 9.34759056e-02 9.36957818e-02 9.39158756e-02 9.41361866e-02 + 9.43567148e-02 9.45774599e-02 9.47984219e-02 9.50196003e-02 9.52409952e-02 + 9.54626063e-02 9.56844334e-02 9.59064764e-02 9.61287350e-02 9.63512090e-02 + 9.65738984e-02 9.67968029e-02 9.70199222e-02 9.72432563e-02 9.74668050e-02 + 9.76905680e-02 9.79145452e-02 9.81387363e-02 9.83631413e-02 9.85877598e-02 + 9.88125918e-02 9.90376370e-02 9.92628953e-02 9.94883665e-02 9.97140503e-02 + 9.99399466e-02 1.00166055e-01 1.00392376e-01 1.00618909e-01 1.00845653e-01 + 1.01072609e-01 1.01299776e-01 1.01527155e-01 1.01754744e-01 1.01982545e-01 + 1.02210556e-01 1.02438777e-01 1.02667209e-01 1.02895850e-01 1.03124702e-01 + 1.03353763e-01 1.03583034e-01 1.03812514e-01 1.04042203e-01 1.04272101e-01 + 1.04502207e-01 1.04732523e-01 1.04963046e-01 1.05193778e-01 1.05424718e-01 + 1.05655865e-01 1.05887221e-01 1.06118783e-01 1.06350553e-01 1.06582530e-01 + 1.06814713e-01 1.07047104e-01 1.07279701e-01 1.07512504e-01 1.07745513e-01 + 1.07978728e-01 1.08212148e-01 1.08445775e-01 1.08679606e-01 1.08913643e-01 + 1.09147884e-01 1.09382331e-01 1.09616982e-01 1.09851837e-01 1.10086896e-01 + 1.10322160e-01 1.10557627e-01 1.10793298e-01 1.11029172e-01 1.11265249e-01 + 1.11501530e-01 1.11738013e-01 1.11974699e-01 1.12211587e-01 1.12448678e-01 + 1.12685971e-01 1.12923465e-01 1.13161162e-01 1.13399059e-01 1.13637158e-01 + 1.13875458e-01 1.14113960e-01 1.14352661e-01 1.14591564e-01 1.14830666e-01 + 1.15069969e-01 1.15309472e-01 1.15549174e-01 1.15789076e-01 1.16029178e-01 + 1.16269478e-01 1.16509978e-01 1.16750676e-01 1.16991573e-01 1.17232669e-01 + 1.17473962e-01 1.17715454e-01 1.17957143e-01 1.18199030e-01 1.18441115e-01 + 1.18683397e-01 1.18925875e-01 1.19168551e-01 1.19411423e-01 1.19654492e-01 + 1.19897757e-01 1.20141218e-01 1.20384875e-01 1.20628728e-01 1.20872776e-01 + 1.21117020e-01 1.21361458e-01 1.21606092e-01 1.21850920e-01 1.22095943e-01 + 1.22341160e-01 1.22586571e-01 1.22832176e-01 1.23077975e-01 1.23323967e-01 + 1.23570153e-01 1.23816532e-01 1.24063104e-01 1.24309869e-01 1.24556826e-01 + 1.24803975e-01 1.25051317e-01 1.25298851e-01 1.25546576e-01 1.25794494e-01 + 1.26042602e-01 1.26290902e-01 1.26539393e-01 1.26788074e-01 1.27036946e-01 + 1.27286009e-01 1.27535261e-01 1.27784704e-01 1.28034337e-01 1.28284159e-01 + 1.28534171e-01 1.28784372e-01 1.29034762e-01 1.29285340e-01 1.29536108e-01 + 1.29787064e-01 1.30038208e-01 1.30289540e-01 1.30541060e-01 1.30792768e-01 + 1.31044663e-01 1.31296746e-01 1.31549015e-01 1.31801471e-01 1.32054115e-01 + 1.32306944e-01 1.32559960e-01 1.32813162e-01 1.33066550e-01 1.33320123e-01 + 1.33573882e-01 1.33827826e-01 1.34081956e-01 1.34336270e-01 1.34590769e-01 + 1.34845452e-01 1.35100320e-01 1.35355372e-01 1.35610608e-01 1.35866027e-01 + 1.36121630e-01 1.36377417e-01 1.36633386e-01 1.36889538e-01 1.37145873e-01 + 1.37402391e-01 1.37659091e-01 1.37915973e-01 1.38173037e-01 1.38430283e-01 + 1.38687710e-01 1.38945318e-01 1.39203108e-01 1.39461079e-01 1.39719230e-01 + 1.39977562e-01 1.40236074e-01 1.40494766e-01 1.40753639e-01 1.41012691e-01 + 1.41271922e-01 1.41531333e-01 1.41790923e-01 1.42050692e-01 1.42310640e-01 + 1.42570766e-01 1.42831071e-01 1.43091554e-01 1.43352214e-01 1.43613053e-01 + 1.43874069e-01 1.44135262e-01 1.44396633e-01 1.44658180e-01 1.44919904e-01 + 1.45181805e-01 1.45443882e-01 1.45706135e-01 1.45968565e-01 1.46231170e-01 + 1.46493950e-01 1.46756906e-01 1.47020037e-01 1.47283343e-01 1.47546824e-01 + 1.47810479e-01 1.48074308e-01 1.48338312e-01 1.48602490e-01 1.48866841e-01 + 1.49131366e-01 1.49396065e-01 1.49660936e-01 1.49925981e-01 1.50191198e-01 + 1.50456588e-01 1.50722150e-01 1.50987884e-01 1.51253790e-01 1.51519868e-01 + 1.51786118e-01 1.52052539e-01 1.52319131e-01 1.52585894e-01 1.52852827e-01 + 1.53119932e-01 1.53387206e-01 1.53654651e-01 1.53922266e-01 1.54190050e-01 + 1.54458004e-01 1.54726127e-01 1.54994420e-01 1.55262881e-01 1.55531511e-01 + 1.55800310e-01 1.56069277e-01 1.56338412e-01 1.56607715e-01 1.56877186e-01 + 1.57146824e-01 1.57416630e-01 1.57686603e-01 1.57956743e-01 1.58227049e-01 + 1.58497522e-01 1.58768161e-01 1.59038967e-01 1.59309938e-01 1.59581075e-01 + 1.59852378e-01 1.60123846e-01 1.60395479e-01 1.60667277e-01 1.60939240e-01 + 1.61211367e-01 1.61483659e-01 1.61756114e-01 1.62028734e-01 1.62301517e-01 + 1.62574464e-01 1.62847574e-01 1.63120847e-01 1.63394283e-01 1.63667882e-01 + 1.63941644e-01 1.64215567e-01 1.64489653e-01 1.64763901e-01 1.65038310e-01 + 1.65312881e-01 1.65587613e-01 1.65862506e-01 1.66137560e-01 1.66412775e-01 + 1.66688150e-01 1.66963686e-01 1.67239381e-01 1.67515237e-01 1.67791252e-01 + 1.68067427e-01 1.68343761e-01 1.68620254e-01 1.68896906e-01 1.69173717e-01 + 1.69450686e-01 1.69727813e-01 1.70005098e-01 1.70282542e-01 1.70560143e-01 + 1.70837901e-01 1.71115817e-01 1.71393889e-01 1.71672119e-01 1.71950505e-01 + 1.72229048e-01 1.72507747e-01 1.72786602e-01 1.73065613e-01 1.73344779e-01 + 1.73624101e-01 1.73903579e-01 1.74183211e-01 1.74462998e-01 1.74742940e-01 + 1.75023036e-01 1.75303286e-01 1.75583691e-01 1.75864249e-01 1.76144961e-01 + 1.76425826e-01 1.76706845e-01 1.76988017e-01 1.77269341e-01 1.77550818e-01 + 1.77832448e-01 1.78114229e-01 1.78396163e-01 1.78678248e-01 1.78960486e-01 + 1.79242874e-01 1.79525414e-01 1.79808105e-01 1.80090946e-01 1.80373938e-01 + 1.80657081e-01 1.80940374e-01 1.81223816e-01 1.81507409e-01 1.81791151e-01 + 1.82075043e-01 1.82359084e-01 1.82643273e-01 1.82927612e-01 1.83212099e-01 + 1.83496734e-01 1.83781518e-01 1.84066450e-01 1.84351529e-01 1.84636756e-01 + 1.84922131e-01 1.85207652e-01 1.85493321e-01 1.85779136e-01 1.86065098e-01 + 1.86351206e-01 1.86637461e-01 1.86923861e-01 1.87210407e-01 1.87497099e-01 + 1.87783936e-01 1.88070919e-01 1.88358046e-01 1.88645318e-01 1.88932734e-01 + 1.89220295e-01 1.89508000e-01 1.89795849e-01 1.90083842e-01 1.90371978e-01 + 1.90660258e-01 1.90948681e-01 1.91237246e-01 1.91525955e-01 1.91814806e-01 + 1.92103799e-01 1.92392935e-01 1.92682212e-01 1.92971631e-01 1.93261192e-01 + 1.93550894e-01 1.93840737e-01 1.94130721e-01 1.94420846e-01 1.94711111e-01 + 1.95001517e-01 1.95292063e-01 1.95582748e-01 1.95873574e-01 1.96164539e-01 + 1.96455643e-01 1.96746886e-01 1.97038269e-01 1.97329790e-01 1.97621449e-01 + 1.97913247e-01 1.98205183e-01 1.98497257e-01 1.98789469e-01 1.99081818e-01 + 1.99374304e-01 1.99666928e-01 1.99959688e-01 2.00252585e-01 2.00545619e-01 + 2.00838789e-01 2.01132095e-01 2.01425537e-01 2.01719114e-01 2.02012828e-01 + 2.02306676e-01 2.02600660e-01 2.02894778e-01 2.03189031e-01 2.03483419e-01 + 2.03777941e-01 2.04072597e-01 2.04367387e-01 2.04662311e-01 2.04957368e-01 + 2.05252558e-01 2.05547882e-01 2.05843338e-01 2.06138928e-01 2.06434649e-01 + 2.06730503e-01 2.07026489e-01 2.07322607e-01 2.07618857e-01 2.07915238e-01 + 2.08211750e-01 2.08508394e-01 2.08805168e-01 2.09102073e-01 2.09399109e-01 + 2.09696275e-01 2.09993571e-01 2.10290997e-01 2.10588552e-01 2.10886237e-01 + 2.11184052e-01 2.11481995e-01 2.11780068e-01 2.12078269e-01 2.12376598e-01 + 2.12675056e-01 2.12973642e-01 2.13272356e-01 2.13571197e-01 2.13870166e-01 + 2.14169263e-01 2.14468486e-01 2.14767837e-01 2.15067314e-01 2.15366917e-01 + 2.15666647e-01 2.15966503e-01 2.16266485e-01 2.16566592e-01 2.16866825e-01 + 2.17167184e-01 2.17467667e-01 2.17768276e-01 2.18069009e-01 2.18369866e-01 + 2.18670848e-01 2.18971954e-01 2.19273184e-01 2.19574538e-01 2.19876015e-01 + 2.20177615e-01 2.20479339e-01 2.20781185e-01 2.21083155e-01 2.21385246e-01 + 2.21687460e-01 2.21989797e-01 2.22292255e-01 2.22594835e-01 2.22897536e-01 + 2.23200359e-01 2.23503303e-01 2.23806367e-01 2.24109553e-01 2.24412859e-01 + 2.24716285e-01 2.25019832e-01 2.25323498e-01 2.25627285e-01 2.25931191e-01 + 2.26235216e-01 2.26539360e-01 2.26843623e-01 2.27148005e-01 2.27452506e-01 + 2.27757125e-01 2.28061862e-01 2.28366717e-01 2.28671690e-01 2.28976780e-01 + 2.29281988e-01 2.29587313e-01 2.29892755e-01 2.30198313e-01 2.30503989e-01 + 2.30809780e-01 2.31115688e-01 2.31421712e-01 2.31727852e-01 2.32034107e-01 + 2.32340478e-01 2.32646964e-01 2.32953565e-01 2.33260280e-01 2.33567111e-01 + 2.33874055e-01 2.34181114e-01 2.34488287e-01 2.34795574e-01 2.35102975e-01 + 2.35410489e-01 2.35718116e-01 2.36025856e-01 2.36333709e-01 2.36641675e-01 + 2.36949753e-01 2.37257943e-01 2.37566246e-01 2.37874660e-01 2.38183186e-01 + 2.38491824e-01 2.38800572e-01 2.39109432e-01 2.39418403e-01 2.39727484e-01 + 2.40036676e-01 2.40345978e-01 2.40655391e-01 2.40964913e-01 2.41274545e-01 + 2.41584286e-01 2.41894137e-01 2.42204097e-01 2.42514166e-01 2.42824344e-01 + 2.43134630e-01 2.43445024e-01 2.43755527e-01 2.44066138e-01 2.44376856e-01 + 2.44687682e-01 2.44998615e-01 2.45309656e-01 2.45620803e-01 2.45932058e-01 + 2.46243419e-01 2.46554886e-01 2.46866459e-01 2.47178139e-01 2.47489924e-01 + 2.47801815e-01 2.48113812e-01 2.48425913e-01 2.48738120e-01 2.49050431e-01 + 2.49362848e-01 2.49675368e-01 2.49987993e-01 2.50300722e-01 2.50613555e-01 + 2.50926492e-01 2.51239532e-01 2.51552675e-01 2.51865922e-01 2.52179271e-01 + 2.52492723e-01 2.52806278e-01 2.53119935e-01 2.53433694e-01 2.53747555e-01 + 2.54061518e-01 2.54375582e-01 2.54689748e-01 2.55004015e-01 2.55318383e-01 + 2.55632851e-01 2.55947421e-01 2.56262090e-01 2.56576860e-01 2.56891730e-01 + 2.57206700e-01 2.57521770e-01 2.57836938e-01 2.58152207e-01 2.58467574e-01 + 2.58783040e-01 2.59098605e-01 2.59414268e-01 2.59730029e-01 2.60045889e-01 + 2.60361847e-01 2.60677902e-01 2.60994055e-01 2.61310305e-01 2.61626652e-01 + 2.61943096e-01 2.62259637e-01 2.62576275e-01 2.62893009e-01 2.63209839e-01 + 2.63526765e-01 2.63843787e-01 2.64160905e-01 2.64478118e-01 2.64795426e-01 + 2.65112830e-01 2.65430328e-01 2.65747921e-01 2.66065608e-01 2.66383390e-01 + 2.66701265e-01 2.67019235e-01 2.67337298e-01 2.67655455e-01 2.67973706e-01 + 2.68292049e-01 2.68610485e-01 2.68929014e-01 2.69247636e-01 2.69566350e-01 + 2.69885156e-01 2.70204055e-01 2.70523045e-01 2.70842127e-01 2.71161300e-01 + 2.71480564e-01 2.71799920e-01 2.72119366e-01 2.72438903e-01 2.72758531e-01 + 2.73078249e-01 2.73398057e-01 2.73717955e-01 2.74037942e-01 2.74358019e-01 + 2.74678186e-01 2.74998442e-01 2.75318787e-01 2.75639220e-01 2.75959743e-01 + 2.76280353e-01 2.76601052e-01 2.76921839e-01 2.77242714e-01 2.77563676e-01 + 2.77884726e-01 2.78205864e-01 2.78527088e-01 2.78848399e-01 2.79169798e-01 + 2.79491282e-01 2.79812853e-01 2.80134510e-01 2.80456254e-01 2.80778083e-01 + 2.81099997e-01 2.81421997e-01 2.81744083e-01 2.82066253e-01 2.82388508e-01 + 2.82710848e-01 2.83033273e-01 2.83355782e-01 2.83678374e-01 2.84001051e-01 + 2.84323812e-01 2.84646656e-01 2.84969584e-01 2.85292594e-01 2.85615688e-01 + 2.85938865e-01 2.86262124e-01 2.86585466e-01 2.86908890e-01 2.87232396e-01 + 2.87555984e-01 2.87879654e-01 2.88203405e-01 2.88527238e-01 2.88851152e-01 + 2.89175147e-01 2.89499222e-01 2.89823378e-01 2.90147615e-01 2.90471932e-01 + 2.90796329e-01 2.91120806e-01 2.91445362e-01 2.91769999e-01 2.92094714e-01 + 2.92419508e-01 2.92744382e-01 2.93069334e-01 2.93394365e-01 2.93719474e-01 + 2.94044662e-01 2.94369927e-01 2.94695271e-01 2.95020692e-01 2.95346191e-01 + 2.95671767e-01 2.95997420e-01 2.96323150e-01 2.96648956e-01 2.96974840e-01 + 2.97300799e-01 2.97626835e-01 2.97952947e-01 2.98279135e-01 2.98605399e-01 + 2.98931738e-01 2.99258152e-01 2.99584642e-01 2.99911206e-01 3.00237845e-01 + 3.00564559e-01 3.00891347e-01 3.01218209e-01 3.01545146e-01 3.01872156e-01 + 3.02199240e-01 3.02526398e-01 3.02853628e-01 3.03180932e-01 3.03508309e-01 + 3.03835759e-01 3.04163281e-01 3.04490876e-01 3.04818543e-01 3.05146281e-01 + 3.05474092e-01 3.05801975e-01 3.06129929e-01 3.06457954e-01 3.06786051e-01 + 3.07114218e-01 3.07442456e-01 3.07770765e-01 3.08099145e-01 3.08427594e-01 + 3.08756114e-01 3.09084703e-01 3.09413363e-01 3.09742091e-01 3.10070890e-01 + 3.10399757e-01 3.10728693e-01 3.11057699e-01 3.11386772e-01 3.11715915e-01 + 3.12045125e-01 3.12374404e-01 3.12703751e-01 3.13033165e-01 3.13362647e-01 + 3.13692197e-01 3.14021813e-01 3.14351497e-01 3.14681248e-01 3.15011065e-01 + 3.15340949e-01 3.15670899e-01 3.16000915e-01 3.16330997e-01 3.16661145e-01 + 3.16991359e-01 3.17321638e-01 3.17651983e-01 3.17982392e-01 3.18312867e-01 + 3.18643406e-01 3.18974010e-01 3.19304678e-01 3.19635411e-01 3.19966207e-01 + 3.20297067e-01 3.20627992e-01 3.20958979e-01 3.21290030e-01 3.21621144e-01 + 3.21952321e-01 3.22283561e-01 3.22614864e-01 3.22946229e-01 3.23277656e-01 + 3.23609146e-01 3.23940697e-01 3.24272310e-01 3.24603985e-01 3.24935721e-01 + 3.25267519e-01 3.25599377e-01 3.25931297e-01 3.26263277e-01 3.26595317e-01 + 3.26927419e-01 3.27259580e-01 3.27591801e-01 3.27924082e-01 3.28256423e-01 + 3.28588824e-01 3.28921283e-01 3.29253802e-01 3.29586380e-01 3.29919017e-01 + 3.30251712e-01 3.30584466e-01 3.30917278e-01 3.31250149e-01 3.31583077e-01 + 3.31916063e-01 3.32249107e-01 3.32582208e-01 3.32915366e-01 3.33248582e-01 + 3.33581854e-01 3.33915183e-01 3.34248569e-01 3.34582011e-01 3.34915510e-01 + 3.35249064e-01 3.35582675e-01 3.35916341e-01 3.36250062e-01 3.36583839e-01 + 3.36917672e-01 3.37251559e-01 3.37585501e-01 3.37919498e-01 3.38253550e-01 + 3.38587656e-01 3.38921816e-01 3.39256030e-01 3.39590298e-01 3.39924620e-01 + 3.40258995e-01 3.40593423e-01 3.40927905e-01 3.41262440e-01 3.41597027e-01 + 3.41931667e-01 3.42266360e-01 3.42601105e-01 3.42935903e-01 3.43270752e-01 + 3.43605653e-01 3.43940606e-01 3.44275610e-01 3.44610666e-01 3.44945772e-01 + 3.45280930e-01 3.45616139e-01 3.45951398e-01 3.46286708e-01 3.46622068e-01 + 3.46957478e-01 3.47292938e-01 3.47628448e-01 3.47964008e-01 3.48299617e-01 + 3.48635275e-01 3.48970983e-01 3.49306740e-01 3.49642545e-01 3.49978399e-01 + 3.50314302e-01 3.50650253e-01 3.50986252e-01 3.51322299e-01 3.51658394e-01 + 3.51994536e-01 3.52330726e-01 3.52666964e-01 3.53003248e-01 3.53339580e-01 + 3.53675958e-01 3.54012383e-01 3.54348855e-01 3.54685373e-01 3.55021937e-01 + 3.55358547e-01 3.55695203e-01 3.56031904e-01 3.56368651e-01 3.56705444e-01 + 3.57042281e-01 3.57379164e-01 3.57716092e-01 3.58053064e-01 3.58390081e-01 + 3.58727142e-01 3.59064247e-01 3.59401397e-01 3.59738590e-01 3.60075827e-01 + 3.60413107e-01 3.60750431e-01 3.61087799e-01 3.61425209e-01 3.61762662e-01 + 3.62100158e-01 3.62437696e-01 3.62775277e-01 3.63112900e-01 3.63450566e-01 + 3.63788273e-01 3.64126022e-01 3.64463812e-01 3.64801645e-01 3.65139518e-01 + 3.65477432e-01 3.65815388e-01 3.66153384e-01 3.66491421e-01 3.66829498e-01 + 3.67167616e-01 3.67505774e-01 3.67843971e-01 3.68182209e-01 3.68520487e-01 + 3.68858803e-01 3.69197160e-01 3.69535555e-01 3.69873990e-01 3.70212463e-01 + 3.70550975e-01 3.70889526e-01 3.71228115e-01 3.71566742e-01 3.71905408e-01 + 3.72244111e-01 3.72582852e-01 3.72921631e-01 3.73260447e-01 3.73599300e-01 + 3.73938191e-01 3.74277119e-01 3.74616083e-01 3.74955084e-01 3.75294122e-01 + 3.75633196e-01 3.75972306e-01 3.76311452e-01 3.76650634e-01 3.76989852e-01 + 3.77329105e-01 3.77668394e-01 3.78007718e-01 3.78347077e-01 3.78686471e-01 + 3.79025899e-01 3.79365363e-01 3.79704861e-01 3.80044393e-01 3.80383959e-01 + 3.80723559e-01 3.81063194e-01 3.81402861e-01 3.81742563e-01 3.82082298e-01 + 3.82422065e-01 3.82761866e-01 3.83101700e-01 3.83441567e-01 3.83781466e-01 + 3.84121398e-01 3.84461362e-01 3.84801358e-01 3.85141386e-01 3.85481446e-01 + 3.85821538e-01 3.86161661e-01 3.86501816e-01 3.86842001e-01 3.87182218e-01 + 3.87522466e-01 3.87862744e-01 3.88203053e-01 3.88543393e-01 3.88883763e-01 + 3.89224162e-01 3.89564592e-01 3.89905052e-01 3.90245541e-01 3.90586060e-01 + 3.90926609e-01 3.91267186e-01 3.91607793e-01 3.91948428e-01 3.92289093e-01 + 3.92629785e-01 3.92970507e-01 3.93311256e-01 3.93652034e-01 3.93992840e-01 + 3.94333674e-01 3.94674535e-01 3.95015424e-01 3.95356341e-01 3.95697284e-01 + 3.96038255e-01 3.96379253e-01 3.96720277e-01 3.97061328e-01 3.97402406e-01 + 3.97743510e-01 3.98084640e-01 3.98425796e-01 3.98766978e-01 3.99108186e-01 + 3.99449420e-01 3.99790679e-01 4.00131963e-01 4.00473272e-01 4.00814607e-01 + 4.01155966e-01 4.01497350e-01 4.01838759e-01 4.02180192e-01 4.02521649e-01 + 4.02863130e-01 4.03204636e-01 4.03546165e-01 4.03887718e-01 4.04229294e-01 + 4.04570894e-01 4.04912517e-01 4.05254163e-01 4.05595832e-01 4.05937524e-01 + 4.06279238e-01 4.06620975e-01 4.06962734e-01 4.07304516e-01 4.07646319e-01 + 4.07988145e-01 4.08329992e-01 4.08671861e-01 4.09013751e-01 4.09355663e-01 + 4.09697596e-01 4.10039549e-01 4.10381524e-01 4.10723520e-01 4.11065536e-01 + 4.11407572e-01 4.11749629e-01 4.12091706e-01 4.12433803e-01 4.12775920e-01 + 4.13118057e-01 4.13460213e-01 4.13802389e-01 4.14144583e-01 4.14486798e-01 + 4.14829031e-01 4.15171283e-01 4.15513553e-01 4.15855843e-01 4.16198150e-01 + 4.16540476e-01 4.16882821e-01 4.17225183e-01 4.17567563e-01 4.17909961e-01 + 4.18252376e-01 4.18594809e-01 4.18937259e-01 4.19279726e-01 4.19622210e-01 + 4.19964711e-01 4.20307229e-01 4.20649763e-01 4.20992314e-01 4.21334881e-01 + 4.21677465e-01 4.22020064e-01 4.22362679e-01 4.22705310e-01 4.23047957e-01 + 4.23390619e-01 4.23733296e-01 4.24075988e-01 4.24418696e-01 4.24761418e-01 + 4.25104155e-01 4.25446907e-01 4.25789673e-01 4.26132454e-01 4.26475249e-01 + 4.26818057e-01 4.27160880e-01 4.27503717e-01 4.27846567e-01 4.28189430e-01 + 4.28532307e-01 4.28875197e-01 4.29218101e-01 4.29561017e-01 4.29903946e-01 + 4.30246888e-01 4.30589842e-01 4.30932808e-01 4.31275787e-01 4.31618778e-01 + 4.31961781e-01 4.32304796e-01 4.32647822e-01 4.32990860e-01 4.33333909e-01 + 4.33676970e-01 4.34020042e-01 4.34363125e-01 4.34706219e-01 4.35049323e-01 + 4.35392438e-01 4.35735564e-01 4.36078700e-01 4.36421846e-01 4.36765002e-01 + 4.37108168e-01 4.37451344e-01 4.37794529e-01 4.38137724e-01 4.38480929e-01 + 4.38824142e-01 4.39167365e-01 4.39510597e-01 4.39853837e-01 4.40197087e-01 + 4.40540345e-01 4.40883611e-01 4.41226885e-01 4.41570168e-01 4.41913459e-01 + 4.42256758e-01 4.42600064e-01 4.42943378e-01 4.43286700e-01 4.43630029e-01 + 4.43973365e-01 4.44316708e-01 4.44660058e-01 4.45003416e-01 4.45346779e-01 + 4.45690150e-01 4.46033526e-01 4.46376910e-01 4.46720299e-01 4.47063694e-01 + 4.47407095e-01 4.47750502e-01 4.48093915e-01 4.48437333e-01 4.48780757e-01 + 4.49124185e-01 4.49467619e-01 4.49811058e-01 4.50154502e-01 4.50497950e-01 + 4.50841403e-01 4.51184861e-01 4.51528322e-01 4.51871788e-01 4.52215259e-01 + 4.52558733e-01 4.52902210e-01 4.53245692e-01 4.53589177e-01 4.53932665e-01 + 4.54276157e-01 4.54619652e-01 4.54963150e-01 4.55306651e-01 4.55650154e-01 + 2.08130000e-04 2.08281191e-04 2.08734762e-04 2.09490714e-04 2.10549046e-04 + 2.11909757e-04 2.13572846e-04 2.15538310e-04 2.17806148e-04 2.20376358e-04 + 2.23248936e-04 2.26423882e-04 2.29901190e-04 2.33680858e-04 2.37762883e-04 + 2.42147260e-04 2.46833984e-04 2.51823051e-04 2.57114457e-04 2.62708196e-04 + 2.68604263e-04 2.74802652e-04 2.81303356e-04 2.88106370e-04 2.95211687e-04 + 3.02619299e-04 3.10329200e-04 3.18341382e-04 3.26655837e-04 3.35272557e-04 + 3.44191533e-04 3.53412758e-04 3.62936221e-04 3.72761913e-04 3.82889825e-04 + 3.93319947e-04 4.04052269e-04 4.15086779e-04 4.26423468e-04 4.38062324e-04 + 4.50003336e-04 4.62246492e-04 4.74791780e-04 4.87639188e-04 5.00788703e-04 + 5.14240312e-04 5.27994002e-04 5.42049760e-04 5.56407572e-04 5.71067423e-04 + 5.86029300e-04 6.01293187e-04 6.16859071e-04 6.32726934e-04 6.48896763e-04 + 6.65368541e-04 6.82142252e-04 6.99217880e-04 7.16595407e-04 7.34274817e-04 + 7.52256092e-04 7.70539216e-04 7.89124169e-04 8.08010934e-04 8.27199493e-04 + 8.46689825e-04 8.66481913e-04 8.86575737e-04 9.06971278e-04 9.27668514e-04 + 9.48667427e-04 9.69967995e-04 9.91570198e-04 1.01347401e-03 1.03567942e-03 + 1.05818640e-03 1.08099493e-03 1.10410498e-03 1.12751654e-03 1.15122957e-03 + 1.17524406e-03 1.19955999e-03 1.22417733e-03 1.24909605e-03 1.27431613e-03 + 1.29983755e-03 1.32566029e-03 1.35178430e-03 1.37820958e-03 1.40493610e-03 + 1.43196382e-03 1.45929272e-03 1.48692278e-03 1.51485397e-03 1.54308626e-03 + 1.57161963e-03 1.60045404e-03 1.62958946e-03 1.65902588e-03 1.68876325e-03 + 1.71880156e-03 1.74914077e-03 1.77978085e-03 1.81072177e-03 1.84196351e-03 + 1.87350602e-03 1.90534929e-03 1.93749327e-03 1.96993795e-03 2.00268328e-03 + 2.03572923e-03 2.06907577e-03 2.10272288e-03 2.13667051e-03 2.17091863e-03 + 2.20546721e-03 2.24031622e-03 2.27546562e-03 2.31091538e-03 2.34666546e-03 + 2.38271583e-03 2.41906645e-03 2.45571729e-03 2.49266831e-03 2.52991947e-03 + 2.56747075e-03 2.60532209e-03 2.64347347e-03 2.68192485e-03 2.72067619e-03 + 2.75972745e-03 2.79907859e-03 2.83872959e-03 2.87868038e-03 2.91893095e-03 + 2.95948125e-03 3.00033123e-03 3.04148087e-03 3.08293011e-03 3.12467892e-03 + 3.16672726e-03 3.20907509e-03 3.25172236e-03 3.29466904e-03 3.33791508e-03 + 3.38146044e-03 3.42530507e-03 3.46944894e-03 3.51389201e-03 3.55863422e-03 + 3.60367554e-03 3.64901591e-03 3.69465531e-03 3.74059367e-03 3.78683096e-03 + 3.83336714e-03 3.88020215e-03 3.92733595e-03 3.97476850e-03 4.02249975e-03 + 4.07052965e-03 4.11885815e-03 4.16748522e-03 4.21641079e-03 4.26563483e-03 + 4.31515728e-03 4.36497811e-03 4.41509725e-03 4.46551466e-03 4.51623029e-03 + 4.56724409e-03 4.61855601e-03 4.67016601e-03 4.72207403e-03 4.77428002e-03 + 4.82678393e-03 4.87958570e-03 4.93268530e-03 4.98608266e-03 5.03977774e-03 + 5.09377048e-03 5.14806083e-03 5.20264873e-03 5.25753414e-03 5.31271700e-03 + 5.36819725e-03 5.42397485e-03 5.48004973e-03 5.53642185e-03 5.59309115e-03 + 5.65005757e-03 5.70732106e-03 5.76488157e-03 5.82273903e-03 5.88089339e-03 + 5.93934459e-03 5.99809258e-03 6.05713731e-03 6.11647870e-03 6.17611671e-03 + 6.23605128e-03 6.29628235e-03 6.35680986e-03 6.41763375e-03 6.47875396e-03 + 6.54017044e-03 6.60188312e-03 6.66389194e-03 6.72619685e-03 6.78879778e-03 + 6.85169468e-03 6.91488748e-03 6.97837611e-03 7.04216053e-03 7.10624066e-03 + 7.17061645e-03 7.23528783e-03 7.30025474e-03 7.36551712e-03 7.43107490e-03 + 7.49692802e-03 7.56307641e-03 7.62952002e-03 7.69625878e-03 7.76329262e-03 + 7.83062147e-03 7.89824528e-03 7.96616398e-03 8.03437750e-03 8.10288577e-03 + 8.17168874e-03 8.24078632e-03 8.31017847e-03 8.37986510e-03 8.44984615e-03 + 8.52012155e-03 8.59069124e-03 8.66155515e-03 8.73271321e-03 8.80416535e-03 + 8.87591149e-03 8.94795158e-03 9.02028554e-03 9.09291331e-03 9.16583480e-03 + 9.23904995e-03 9.31255870e-03 9.38636096e-03 9.46045668e-03 9.53484577e-03 + 9.60952816e-03 9.68450379e-03 9.75977258e-03 9.83533445e-03 9.91118934e-03 + 9.98733717e-03 1.00637779e-02 1.01405114e-02 1.02175376e-02 1.02948564e-02 + 1.03724679e-02 1.04503718e-02 1.05285681e-02 1.06070568e-02 1.06858378e-02 + 1.07649109e-02 1.08442762e-02 1.09239335e-02 1.10038828e-02 1.10841240e-02 + 1.11646570e-02 1.12454817e-02 1.13265980e-02 1.14080060e-02 1.14897054e-02 + 1.15716963e-02 1.16539785e-02 1.17365519e-02 1.18194166e-02 1.19025723e-02 + 1.19860191e-02 1.20697568e-02 1.21537854e-02 1.22381047e-02 1.23227148e-02 + 1.24076155e-02 1.24928067e-02 1.25782883e-02 1.26640604e-02 1.27501227e-02 + 1.28364752e-02 1.29231179e-02 1.30100506e-02 1.30972732e-02 1.31847858e-02 + 1.32725881e-02 1.33606801e-02 1.34490618e-02 1.35377329e-02 1.36266936e-02 + 1.37159436e-02 1.38054829e-02 1.38953113e-02 1.39854289e-02 1.40758355e-02 + 1.41665311e-02 1.42575155e-02 1.43487886e-02 1.44403504e-02 1.45322008e-02 + 1.46243398e-02 1.47167671e-02 1.48094827e-02 1.49024866e-02 1.49957786e-02 + 1.50893587e-02 1.51832267e-02 1.52773826e-02 1.53718263e-02 1.54665577e-02 + 1.55615767e-02 1.56568832e-02 1.57524771e-02 1.58483584e-02 1.59445269e-02 + 1.60409825e-02 1.61377252e-02 1.62347549e-02 1.63320714e-02 1.64296747e-02 + 1.65275647e-02 1.66257413e-02 1.67242043e-02 1.68229538e-02 1.69219896e-02 + 1.70213116e-02 1.71209197e-02 1.72208138e-02 1.73209939e-02 1.74214598e-02 + 1.75222114e-02 1.76232487e-02 1.77245715e-02 1.78261798e-02 1.79280734e-02 + 1.80302523e-02 1.81327163e-02 1.82354654e-02 1.83384994e-02 1.84418184e-02 + 1.85454220e-02 1.86493104e-02 1.87534833e-02 1.88579407e-02 1.89626824e-02 + 1.90677084e-02 1.91730186e-02 1.92786129e-02 1.93844911e-02 1.94906532e-02 + 1.95970991e-02 1.97038286e-02 1.98108417e-02 1.99181382e-02 2.00257182e-02 + 2.01335813e-02 2.02417277e-02 2.03501571e-02 2.04588694e-02 2.05678646e-02 + 2.06771425e-02 2.07867031e-02 2.08965462e-02 2.10066717e-02 2.11170796e-02 + 2.12277697e-02 2.13387419e-02 2.14499962e-02 2.15615323e-02 2.16733503e-02 + 2.17854499e-02 2.18978311e-02 2.20104938e-02 2.21234379e-02 2.22366633e-02 + 2.23501698e-02 2.24639574e-02 2.25780260e-02 2.26923753e-02 2.28070055e-02 + 2.29219162e-02 2.30371074e-02 2.31525791e-02 2.32683311e-02 2.33843632e-02 + 2.35006755e-02 2.36172677e-02 2.37341397e-02 2.38512915e-02 2.39687230e-02 + 2.40864339e-02 2.42044243e-02 2.43226940e-02 2.44412429e-02 2.45600709e-02 + 2.46791779e-02 2.47985637e-02 2.49182282e-02 2.50381714e-02 2.51583931e-02 + 2.52788932e-02 2.53996717e-02 2.55207283e-02 2.56420629e-02 2.57636755e-02 + 2.58855660e-02 2.60077341e-02 2.61301799e-02 2.62529032e-02 2.63759039e-02 + 2.64991818e-02 2.66227368e-02 2.67465689e-02 2.68706779e-02 2.69950637e-02 + 2.71197262e-02 2.72446653e-02 2.73698808e-02 2.74953726e-02 2.76211406e-02 + 2.77471848e-02 2.78735049e-02 2.80001009e-02 2.81269726e-02 2.82541199e-02 + 2.83815427e-02 2.85092409e-02 2.86372144e-02 2.87654630e-02 2.88939867e-02 + 2.90227852e-02 2.91518585e-02 2.92812065e-02 2.94108290e-02 2.95407260e-02 + 2.96708972e-02 2.98013426e-02 2.99320621e-02 3.00630555e-02 3.01943227e-02 + 3.03258636e-02 3.04576781e-02 3.05897660e-02 3.07221272e-02 3.08547616e-02 + 3.09876691e-02 3.11208496e-02 3.12543028e-02 3.13880288e-02 3.15220273e-02 + 3.16562983e-02 3.17908416e-02 3.19256571e-02 3.20607447e-02 3.21961042e-02 + 3.23317356e-02 3.24676386e-02 3.26038132e-02 3.27402593e-02 3.28769766e-02 + 3.30139652e-02 3.31512248e-02 3.32887554e-02 3.34265567e-02 3.35646288e-02 + 3.37029714e-02 3.38415844e-02 3.39804677e-02 3.41196212e-02 3.42590447e-02 + 3.43987381e-02 3.45387013e-02 3.46789341e-02 3.48194365e-02 3.49602082e-02 + 3.51012492e-02 3.52425593e-02 3.53841384e-02 3.55259864e-02 3.56681031e-02 + 3.58104884e-02 3.59531422e-02 3.60960643e-02 3.62392547e-02 3.63827131e-02 + 3.65264394e-02 3.66704335e-02 3.68146954e-02 3.69592247e-02 3.71040215e-02 + 3.72490856e-02 3.73944167e-02 3.75400149e-02 3.76858800e-02 3.78320118e-02 + 3.79784102e-02 3.81250751e-02 3.82720063e-02 3.84192037e-02 3.85666672e-02 + 3.87143966e-02 3.88623918e-02 3.90106526e-02 3.91591790e-02 3.93079707e-02 + 3.94570277e-02 3.96063498e-02 3.97559369e-02 3.99057888e-02 4.00559054e-02 + 4.02062865e-02 4.03569321e-02 4.05078419e-02 4.06590159e-02 4.08104539e-02 + 4.09621558e-02 4.11141214e-02 4.12663506e-02 4.14188432e-02 4.15715991e-02 + 4.17246182e-02 4.18779004e-02 4.20314454e-02 4.21852532e-02 4.23393235e-02 + 4.24936564e-02 4.26482515e-02 4.28031089e-02 4.29582283e-02 4.31136096e-02 + 4.32692526e-02 4.34251573e-02 4.35813234e-02 4.37377508e-02 4.38944395e-02 + 4.40513892e-02 4.42085998e-02 4.43660711e-02 4.45238031e-02 4.46817956e-02 + 4.48400483e-02 4.49985613e-02 4.51573343e-02 4.53163671e-02 4.54756598e-02 + 4.56352120e-02 4.57950237e-02 4.59550947e-02 4.61154249e-02 4.62760141e-02 + 4.64368622e-02 4.65979690e-02 4.67593344e-02 4.69209582e-02 4.70828403e-02 + 4.72449806e-02 4.74073789e-02 4.75700350e-02 4.77329488e-02 4.78961202e-02 + 4.80595489e-02 4.82232350e-02 4.83871781e-02 4.85513782e-02 4.87158351e-02 + 4.88805487e-02 4.90455188e-02 4.92107453e-02 4.93762280e-02 4.95419667e-02 + 4.97079614e-02 4.98742118e-02 5.00407179e-02 5.02074794e-02 5.03744963e-02 + 5.05417683e-02 5.07092953e-02 5.08770772e-02 5.10451138e-02 5.12134049e-02 + 5.13819505e-02 5.15507503e-02 5.17198043e-02 5.18891121e-02 5.20586738e-02 + 5.22284892e-02 5.23985580e-02 5.25688802e-02 5.27394555e-02 5.29102839e-02 + 5.30813652e-02 5.32526992e-02 5.34242858e-02 5.35961248e-02 5.37682161e-02 + 5.39405595e-02 5.41131548e-02 5.42860020e-02 5.44591008e-02 5.46324511e-02 + 5.48060527e-02 5.49799055e-02 5.51540094e-02 5.53283641e-02 5.55029695e-02 + 5.56778255e-02 5.58529319e-02 5.60282885e-02 5.62038952e-02 5.63797519e-02 + 5.65558583e-02 5.67322144e-02 5.69088199e-02 5.70856747e-02 5.72627786e-02 + 5.74401316e-02 5.76177334e-02 5.77955838e-02 5.79736828e-02 5.81520301e-02 + 5.83306256e-02 5.85094691e-02 5.86885605e-02 5.88678997e-02 5.90474864e-02 + 5.92273205e-02 5.94074018e-02 5.95877302e-02 5.97683055e-02 5.99491276e-02 + 6.01301963e-02 6.03115114e-02 6.04930728e-02 6.06748803e-02 6.08569338e-02 + 6.10392330e-02 6.12217779e-02 6.14045683e-02 6.15876039e-02 6.17708848e-02 + 6.19544105e-02 6.21381812e-02 6.23221964e-02 6.25064562e-02 6.26909603e-02 + 6.28757085e-02 6.30607008e-02 6.32459369e-02 6.34314167e-02 6.36171400e-02 + 6.38031067e-02 6.39893165e-02 6.41757694e-02 6.43624651e-02 6.45494036e-02 + 6.47365845e-02 6.49240078e-02 6.51116734e-02 6.52995809e-02 6.54877303e-02 + 6.56761215e-02 6.58647541e-02 6.60536282e-02 6.62427434e-02 6.64320997e-02 + 6.66216969e-02 6.68115348e-02 6.70016132e-02 6.71919320e-02 6.73824910e-02 + 6.75732900e-02 6.77643289e-02 6.79556075e-02 6.81471257e-02 6.83388832e-02 + 6.85308799e-02 6.87231157e-02 6.89155904e-02 6.91083037e-02 6.93012556e-02 + 6.94944458e-02 6.96878742e-02 6.98815407e-02 7.00754450e-02 7.02695870e-02 + 7.04639665e-02 7.06585833e-02 7.08534374e-02 7.10485284e-02 7.12438563e-02 + 7.14394208e-02 7.16352219e-02 7.18312593e-02 7.20275328e-02 7.22240423e-02 + 7.24207876e-02 7.26177686e-02 7.28149851e-02 7.30124368e-02 7.32101237e-02 + 7.34080456e-02 7.36062022e-02 7.38045935e-02 7.40032192e-02 7.42020791e-02 + 7.44011732e-02 7.46005012e-02 7.48000630e-02 7.49998583e-02 7.51998870e-02 + 7.54001490e-02 7.56006441e-02 7.58013720e-02 7.60023326e-02 7.62035258e-02 + 7.64049514e-02 7.66066092e-02 7.68084989e-02 7.70106206e-02 7.72129739e-02 + 7.74155587e-02 7.76183748e-02 7.78214221e-02 7.80247003e-02 7.82282094e-02 + 7.84319490e-02 7.86359192e-02 7.88401196e-02 7.90445501e-02 7.92492105e-02 + 7.94541007e-02 7.96592204e-02 7.98645695e-02 8.00701479e-02 8.02759553e-02 + 8.04819916e-02 8.06882565e-02 8.08947500e-02 8.11014718e-02 8.13084218e-02 + 8.15155998e-02 8.17230055e-02 8.19306389e-02 8.21384998e-02 8.23465879e-02 + 8.25549031e-02 8.27634452e-02 8.29722141e-02 8.31812095e-02 8.33904313e-02 + 8.35998794e-02 8.38095534e-02 8.40194533e-02 8.42295789e-02 8.44399299e-02 + 8.46505063e-02 8.48613078e-02 8.50723343e-02 8.52835855e-02 8.54950613e-02 + 8.57067616e-02 8.59186860e-02 8.61308346e-02 8.63432070e-02 8.65558031e-02 + 8.67686227e-02 8.69816656e-02 8.71949318e-02 8.74084208e-02 8.76221327e-02 + 8.78360672e-02 8.80502241e-02 8.82646033e-02 8.84792045e-02 8.86940276e-02 + 8.89090725e-02 8.91243388e-02 8.93398265e-02 8.95555354e-02 8.97714652e-02 + 8.99876159e-02 9.02039871e-02 9.04205788e-02 9.06373908e-02 9.08544228e-02 + 9.10716747e-02 9.12891463e-02 9.15068374e-02 9.17247478e-02 9.19428774e-02 + 9.21612260e-02 9.23797934e-02 9.25985793e-02 9.28175837e-02 9.30368064e-02 + 9.32562470e-02 9.34759056e-02 9.36957818e-02 9.39158756e-02 9.41361866e-02 + 9.43567148e-02 9.45774599e-02 9.47984219e-02 9.50196003e-02 9.52409952e-02 + 9.54626063e-02 9.56844334e-02 9.59064764e-02 9.61287350e-02 9.63512090e-02 + 9.65738984e-02 9.67968029e-02 9.70199222e-02 9.72432563e-02 9.74668050e-02 + 9.76905680e-02 9.79145452e-02 9.81387363e-02 9.83631413e-02 9.85877598e-02 + 9.88125918e-02 9.90376370e-02 9.92628953e-02 9.94883665e-02 9.97140503e-02 + 9.99399466e-02 1.00166055e-01 1.00392376e-01 1.00618909e-01 1.00845653e-01 + 1.01072609e-01 1.01299776e-01 1.01527155e-01 1.01754744e-01 1.01982545e-01 + 1.02210556e-01 1.02438777e-01 1.02667209e-01 1.02895850e-01 1.03124702e-01 + 1.03353763e-01 1.03583034e-01 1.03812514e-01 1.04042203e-01 1.04272101e-01 + 1.04502207e-01 1.04732523e-01 1.04963046e-01 1.05193778e-01 1.05424718e-01 + 1.05655865e-01 1.05887221e-01 1.06118783e-01 1.06350553e-01 1.06582530e-01 + 1.06814713e-01 1.07047104e-01 1.07279701e-01 1.07512504e-01 1.07745513e-01 + 1.07978728e-01 1.08212148e-01 1.08445775e-01 1.08679606e-01 1.08913643e-01 + 1.09147884e-01 1.09382331e-01 1.09616982e-01 1.09851837e-01 1.10086896e-01 + 1.10322160e-01 1.10557627e-01 1.10793298e-01 1.11029172e-01 1.11265249e-01 + 1.11501530e-01 1.11738013e-01 1.11974699e-01 1.12211587e-01 1.12448678e-01 + 1.12685971e-01 1.12923465e-01 1.13161162e-01 1.13399059e-01 1.13637158e-01 + 1.13875458e-01 1.14113960e-01 1.14352661e-01 1.14591564e-01 1.14830666e-01 + 1.15069969e-01 1.15309472e-01 1.15549174e-01 1.15789076e-01 1.16029178e-01 + 1.16269478e-01 1.16509978e-01 1.16750676e-01 1.16991573e-01 1.17232669e-01 + 1.17473962e-01 1.17715454e-01 1.17957143e-01 1.18199030e-01 1.18441115e-01 + 1.18683397e-01 1.18925875e-01 1.19168551e-01 1.19411423e-01 1.19654492e-01 + 1.19897757e-01 1.20141218e-01 1.20384875e-01 1.20628728e-01 1.20872776e-01 + 1.21117020e-01 1.21361458e-01 1.21606092e-01 1.21850920e-01 1.22095943e-01 + 1.22341160e-01 1.22586571e-01 1.22832176e-01 1.23077975e-01 1.23323967e-01 + 1.23570153e-01 1.23816532e-01 1.24063104e-01 1.24309869e-01 1.24556826e-01 + 1.24803975e-01 1.25051317e-01 1.25298851e-01 1.25546576e-01 1.25794494e-01 + 1.26042602e-01 1.26290902e-01 1.26539393e-01 1.26788074e-01 1.27036946e-01 + 1.27286009e-01 1.27535261e-01 1.27784704e-01 1.28034337e-01 1.28284159e-01 + 1.28534171e-01 1.28784372e-01 1.29034762e-01 1.29285340e-01 1.29536108e-01 + 1.29787064e-01 1.30038208e-01 1.30289540e-01 1.30541060e-01 1.30792768e-01 + 1.31044663e-01 1.31296746e-01 1.31549015e-01 1.31801471e-01 1.32054115e-01 + 1.32306944e-01 1.32559960e-01 1.32813162e-01 1.33066550e-01 1.33320123e-01 + 1.33573882e-01 1.33827826e-01 1.34081956e-01 1.34336270e-01 1.34590769e-01 + 1.34845452e-01 1.35100320e-01 1.35355372e-01 1.35610608e-01 1.35866027e-01 + 1.36121630e-01 1.36377417e-01 1.36633386e-01 1.36889538e-01 1.37145873e-01 + 1.37402391e-01 1.37659091e-01 1.37915973e-01 1.38173037e-01 1.38430283e-01 + 1.38687710e-01 1.38945318e-01 1.39203108e-01 1.39461079e-01 1.39719230e-01 + 1.39977562e-01 1.40236074e-01 1.40494766e-01 1.40753639e-01 1.41012691e-01 + 1.41271922e-01 1.41531333e-01 1.41790923e-01 1.42050692e-01 1.42310640e-01 + 1.42570766e-01 1.42831071e-01 1.43091554e-01 1.43352214e-01 1.43613053e-01 + 1.43874069e-01 1.44135262e-01 1.44396633e-01 1.44658180e-01 1.44919904e-01 + 1.45181805e-01 1.45443882e-01 1.45706135e-01 1.45968565e-01 1.46231170e-01 + 1.46493950e-01 1.46756906e-01 1.47020037e-01 1.47283343e-01 1.47546824e-01 + 1.47810479e-01 1.48074308e-01 1.48338312e-01 1.48602490e-01 1.48866841e-01 + 1.49131366e-01 1.49396065e-01 1.49660936e-01 1.49925981e-01 1.50191198e-01 + 1.50456588e-01 1.50722150e-01 1.50987884e-01 1.51253790e-01 1.51519868e-01 + 1.51786118e-01 1.52052539e-01 1.52319131e-01 1.52585894e-01 1.52852827e-01 + 1.53119932e-01 1.53387206e-01 1.53654651e-01 1.53922266e-01 1.54190050e-01 + 1.54458004e-01 1.54726127e-01 1.54994420e-01 1.55262881e-01 1.55531511e-01 + 1.55800310e-01 1.56069277e-01 1.56338412e-01 1.56607715e-01 1.56877186e-01 + 1.57146824e-01 1.57416630e-01 1.57686603e-01 1.57956743e-01 1.58227049e-01 + 1.58497522e-01 1.58768161e-01 1.59038967e-01 1.59309938e-01 1.59581075e-01 + 1.59852378e-01 1.60123846e-01 1.60395479e-01 1.60667277e-01 1.60939240e-01 + 1.61211367e-01 1.61483659e-01 1.61756114e-01 1.62028734e-01 1.62301517e-01 + 1.62574464e-01 1.62847574e-01 1.63120847e-01 1.63394283e-01 1.63667882e-01 + 1.63941644e-01 1.64215567e-01 1.64489653e-01 1.64763901e-01 1.65038310e-01 + 1.65312881e-01 1.65587613e-01 1.65862506e-01 1.66137560e-01 1.66412775e-01 + 1.66688150e-01 1.66963686e-01 1.67239381e-01 1.67515237e-01 1.67791252e-01 + 1.68067427e-01 1.68343761e-01 1.68620254e-01 1.68896906e-01 1.69173717e-01 + 1.69450686e-01 1.69727813e-01 1.70005098e-01 1.70282542e-01 1.70560143e-01 + 1.70837901e-01 1.71115817e-01 1.71393889e-01 1.71672119e-01 1.71950505e-01 + 1.72229048e-01 1.72507747e-01 1.72786602e-01 1.73065613e-01 1.73344779e-01 + 1.73624101e-01 1.73903579e-01 1.74183211e-01 1.74462998e-01 1.74742940e-01 + 1.75023036e-01 1.75303286e-01 1.75583691e-01 1.75864249e-01 1.76144961e-01 + 1.76425826e-01 1.76706845e-01 1.76988017e-01 1.77269341e-01 1.77550818e-01 + 1.77832448e-01 1.78114229e-01 1.78396163e-01 1.78678248e-01 1.78960486e-01 + 1.79242874e-01 1.79525414e-01 1.79808105e-01 1.80090946e-01 1.80373938e-01 + 1.80657081e-01 1.80940374e-01 1.81223816e-01 1.81507409e-01 1.81791151e-01 + 1.82075043e-01 1.82359084e-01 1.82643273e-01 1.82927612e-01 1.83212099e-01 + 1.83496734e-01 1.83781518e-01 1.84066450e-01 1.84351529e-01 1.84636756e-01 + 1.84922131e-01 1.85207652e-01 1.85493321e-01 1.85779136e-01 1.86065098e-01 + 1.86351206e-01 1.86637461e-01 1.86923861e-01 1.87210407e-01 1.87497099e-01 + 1.87783936e-01 1.88070919e-01 1.88358046e-01 1.88645318e-01 1.88932734e-01 + 1.89220295e-01 1.89508000e-01 1.89795849e-01 1.90083842e-01 1.90371978e-01 + 1.90660258e-01 1.90948681e-01 1.91237246e-01 1.91525955e-01 1.91814806e-01 + 1.92103799e-01 1.92392935e-01 1.92682212e-01 1.92971631e-01 1.93261192e-01 + 1.93550894e-01 1.93840737e-01 1.94130721e-01 1.94420846e-01 1.94711111e-01 + 1.95001517e-01 1.95292063e-01 1.95582748e-01 1.95873574e-01 1.96164539e-01 + 1.96455643e-01 1.96746886e-01 1.97038269e-01 1.97329790e-01 1.97621449e-01 + 1.97913247e-01 1.98205183e-01 1.98497257e-01 1.98789469e-01 1.99081818e-01 + 1.99374304e-01 1.99666928e-01 1.99959688e-01 2.00252585e-01 2.00545619e-01 + 2.00838789e-01 2.01132095e-01 2.01425537e-01 2.01719114e-01 2.02012828e-01 + 2.02306676e-01 2.02600660e-01 2.02894778e-01 2.03189031e-01 2.03483419e-01 + 2.03777941e-01 2.04072597e-01 2.04367387e-01 2.04662311e-01 2.04957368e-01 + 2.05252558e-01 2.05547882e-01 2.05843338e-01 2.06138928e-01 2.06434649e-01 + 2.06730503e-01 2.07026489e-01 2.07322607e-01 2.07618857e-01 2.07915238e-01 + 2.08211750e-01 2.08508394e-01 2.08805168e-01 2.09102073e-01 2.09399109e-01 + 2.09696275e-01 2.09993571e-01 2.10290997e-01 2.10588552e-01 2.10886237e-01 + 2.11184052e-01 2.11481995e-01 2.11780068e-01 2.12078269e-01 2.12376598e-01 + 2.12675056e-01 2.12973642e-01 2.13272356e-01 2.13571197e-01 2.13870166e-01 + 2.14169263e-01 2.14468486e-01 2.14767837e-01 2.15067314e-01 2.15366917e-01 + 2.15666647e-01 2.15966503e-01 2.16266485e-01 2.16566592e-01 2.16866825e-01 + 2.17167184e-01 2.17467667e-01 2.17768276e-01 2.18069009e-01 2.18369866e-01 + 2.18670848e-01 2.18971954e-01 2.19273184e-01 2.19574538e-01 2.19876015e-01 + 2.20177615e-01 2.20479339e-01 2.20781185e-01 2.21083155e-01 2.21385246e-01 + 2.21687460e-01 2.21989797e-01 2.22292255e-01 2.22594835e-01 2.22897536e-01 + 2.23200359e-01 2.23503303e-01 2.23806367e-01 2.24109553e-01 2.24412859e-01 + 2.24716285e-01 2.25019832e-01 2.25323498e-01 2.25627285e-01 2.25931191e-01 + 2.26235216e-01 2.26539360e-01 2.26843623e-01 2.27148005e-01 2.27452506e-01 + 2.27757125e-01 2.28061862e-01 2.28366717e-01 2.28671690e-01 2.28976780e-01 + 2.29281988e-01 2.29587313e-01 2.29892755e-01 2.30198313e-01 2.30503989e-01 + 2.30809780e-01 2.31115688e-01 2.31421712e-01 2.31727852e-01 2.32034107e-01 + 2.32340478e-01 2.32646964e-01 2.32953565e-01 2.33260280e-01 2.33567111e-01 + 2.33874055e-01 2.34181114e-01 2.34488287e-01 2.34795574e-01 2.35102975e-01 + 2.35410489e-01 2.35718116e-01 2.36025856e-01 2.36333709e-01 2.36641675e-01 + 2.36949753e-01 2.37257943e-01 2.37566246e-01 2.37874660e-01 2.38183186e-01 + 2.38491824e-01 2.38800572e-01 2.39109432e-01 2.39418403e-01 2.39727484e-01 + 2.40036676e-01 2.40345978e-01 2.40655391e-01 2.40964913e-01 2.41274545e-01 + 2.41584286e-01 2.41894137e-01 2.42204097e-01 2.42514166e-01 2.42824344e-01 + 2.43134630e-01 2.43445024e-01 2.43755527e-01 2.44066138e-01 2.44376856e-01 + 2.44687682e-01 2.44998615e-01 2.45309656e-01 2.45620803e-01 2.45932058e-01 + 2.46243419e-01 2.46554886e-01 2.46866459e-01 2.47178139e-01 2.47489924e-01 + 2.47801815e-01 2.48113812e-01 2.48425913e-01 2.48738120e-01 2.49050431e-01 + 2.49362848e-01 2.49675368e-01 2.49987993e-01 2.50300722e-01 2.50613555e-01 + 2.50926492e-01 2.51239532e-01 2.51552675e-01 2.51865922e-01 2.52179271e-01 + 2.52492723e-01 2.52806278e-01 2.53119935e-01 2.53433694e-01 2.53747555e-01 + 2.54061518e-01 2.54375582e-01 2.54689748e-01 2.55004015e-01 2.55318383e-01 + 2.55632851e-01 2.55947421e-01 2.56262090e-01 2.56576860e-01 2.56891730e-01 + 2.57206700e-01 2.57521770e-01 2.57836938e-01 2.58152207e-01 2.58467574e-01 + 2.58783040e-01 2.59098605e-01 2.59414268e-01 2.59730029e-01 2.60045889e-01 + 2.60361847e-01 2.60677902e-01 2.60994055e-01 2.61310305e-01 2.61626652e-01 + 2.61943096e-01 2.62259637e-01 2.62576275e-01 2.62893009e-01 2.63209839e-01 + 2.63526765e-01 2.63843787e-01 2.64160905e-01 2.64478118e-01 2.64795426e-01 + 2.65112830e-01 2.65430328e-01 2.65747921e-01 2.66065608e-01 2.66383390e-01 + 2.66701265e-01 2.67019235e-01 2.67337298e-01 2.67655455e-01 2.67973706e-01 + 2.68292049e-01 2.68610485e-01 2.68929014e-01 2.69247636e-01 2.69566350e-01 + 2.69885156e-01 2.70204055e-01 2.70523045e-01 2.70842127e-01 2.71161300e-01 + 2.71480564e-01 2.71799920e-01 2.72119366e-01 2.72438903e-01 2.72758531e-01 + 2.73078249e-01 2.73398057e-01 2.73717955e-01 2.74037942e-01 2.74358019e-01 + 2.74678186e-01 2.74998442e-01 2.75318787e-01 2.75639220e-01 2.75959743e-01 + 2.76280353e-01 2.76601052e-01 2.76921839e-01 2.77242714e-01 2.77563676e-01 + 2.77884726e-01 2.78205864e-01 2.78527088e-01 2.78848399e-01 2.79169798e-01 + 2.79491282e-01 2.79812853e-01 2.80134510e-01 2.80456254e-01 2.80778083e-01 + 2.81099997e-01 2.81421997e-01 2.81744083e-01 2.82066253e-01 2.82388508e-01 + 2.82710848e-01 2.83033273e-01 2.83355782e-01 2.83678374e-01 2.84001051e-01 + 2.84323812e-01 2.84646656e-01 2.84969584e-01 2.85292594e-01 2.85615688e-01 + 2.85938865e-01 2.86262124e-01 2.86585466e-01 2.86908890e-01 2.87232396e-01 + 2.87555984e-01 2.87879654e-01 2.88203405e-01 2.88527238e-01 2.88851152e-01 + 2.89175147e-01 2.89499222e-01 2.89823378e-01 2.90147615e-01 2.90471932e-01 + 2.90796329e-01 2.91120806e-01 2.91445362e-01 2.91769999e-01 2.92094714e-01 + 2.92419508e-01 2.92744382e-01 2.93069334e-01 2.93394365e-01 2.93719474e-01 + 2.94044662e-01 2.94369927e-01 2.94695271e-01 2.95020692e-01 2.95346191e-01 + 2.95671767e-01 2.95997420e-01 2.96323150e-01 2.96648956e-01 2.96974840e-01 + 2.97300799e-01 2.97626835e-01 2.97952947e-01 2.98279135e-01 2.98605399e-01 + 2.98931738e-01 2.99258152e-01 2.99584642e-01 2.99911206e-01 3.00237845e-01 + 3.00564559e-01 3.00891347e-01 3.01218209e-01 3.01545146e-01 3.01872156e-01 + 3.02199240e-01 3.02526398e-01 3.02853628e-01 3.03180932e-01 3.03508309e-01 + 3.03835759e-01 3.04163281e-01 3.04490876e-01 3.04818543e-01 3.05146281e-01 + 3.05474092e-01 3.05801975e-01 3.06129929e-01 3.06457954e-01 3.06786051e-01 + 3.07114218e-01 3.07442456e-01 3.07770765e-01 3.08099145e-01 3.08427594e-01 + 3.08756114e-01 3.09084703e-01 3.09413363e-01 3.09742091e-01 3.10070890e-01 + 3.10399757e-01 3.10728693e-01 3.11057699e-01 3.11386772e-01 3.11715915e-01 + 3.12045125e-01 3.12374404e-01 3.12703751e-01 3.13033165e-01 3.13362647e-01 + 3.13692197e-01 3.14021813e-01 3.14351497e-01 3.14681248e-01 3.15011065e-01 + 3.15340949e-01 3.15670899e-01 3.16000915e-01 3.16330997e-01 3.16661145e-01 + 3.16991359e-01 3.17321638e-01 3.17651983e-01 3.17982392e-01 3.18312867e-01 + 3.18643406e-01 3.18974010e-01 3.19304678e-01 3.19635411e-01 3.19966207e-01 + 3.20297067e-01 3.20627992e-01 3.20958979e-01 3.21290030e-01 3.21621144e-01 + 3.21952321e-01 3.22283561e-01 3.22614864e-01 3.22946229e-01 3.23277656e-01 + 3.23609146e-01 3.23940697e-01 3.24272310e-01 3.24603985e-01 3.24935721e-01 + 3.25267519e-01 3.25599377e-01 3.25931297e-01 3.26263277e-01 3.26595317e-01 + 3.26927419e-01 3.27259580e-01 3.27591801e-01 3.27924082e-01 3.28256423e-01 + 3.28588824e-01 3.28921283e-01 3.29253802e-01 3.29586380e-01 3.29919017e-01 + 3.30251712e-01 3.30584466e-01 3.30917278e-01 3.31250149e-01 3.31583077e-01 + 3.31916063e-01 3.32249107e-01 3.32582208e-01 3.32915366e-01 3.33248582e-01 + 3.33581854e-01 3.33915183e-01 3.34248569e-01 3.34582011e-01 3.34915510e-01 + 3.35249064e-01 3.35582675e-01 3.35916341e-01 3.36250062e-01 3.36583839e-01 + 3.36917672e-01 3.37251559e-01 3.37585501e-01 3.37919498e-01 3.38253550e-01 + 3.38587656e-01 3.38921816e-01 3.39256030e-01 3.39590298e-01 3.39924620e-01 + 3.40258995e-01 3.40593423e-01 3.40927905e-01 3.41262440e-01 3.41597027e-01 + 3.41931667e-01 3.42266360e-01 3.42601105e-01 3.42935903e-01 3.43270752e-01 + 3.43605653e-01 3.43940606e-01 3.44275610e-01 3.44610666e-01 3.44945772e-01 + 3.45280930e-01 3.45616139e-01 3.45951398e-01 3.46286708e-01 3.46622068e-01 + 3.46957478e-01 3.47292938e-01 3.47628448e-01 3.47964008e-01 3.48299617e-01 + 3.48635275e-01 3.48970983e-01 3.49306740e-01 3.49642545e-01 3.49978399e-01 + 3.50314302e-01 3.50650253e-01 3.50986252e-01 3.51322299e-01 3.51658394e-01 + 3.51994536e-01 3.52330726e-01 3.52666964e-01 3.53003248e-01 3.53339580e-01 + 3.53675958e-01 3.54012383e-01 3.54348855e-01 3.54685373e-01 3.55021937e-01 + 3.55358547e-01 3.55695203e-01 3.56031904e-01 3.56368651e-01 3.56705444e-01 + 3.57042281e-01 3.57379164e-01 3.57716092e-01 3.58053064e-01 3.58390081e-01 + 3.58727142e-01 3.59064247e-01 3.59401397e-01 3.59738590e-01 3.60075827e-01 + 3.60413107e-01 3.60750431e-01 3.61087799e-01 3.61425209e-01 3.61762662e-01 + 3.62100158e-01 3.62437696e-01 3.62775277e-01 3.63112900e-01 3.63450566e-01 + 3.63788273e-01 3.64126022e-01 3.64463812e-01 3.64801645e-01 3.65139518e-01 + 3.65477432e-01 3.65815388e-01 3.66153384e-01 3.66491421e-01 3.66829498e-01 + 3.67167616e-01 3.67505774e-01 3.67843971e-01 3.68182209e-01 3.68520487e-01 + 3.68858803e-01 3.69197160e-01 3.69535555e-01 3.69873990e-01 3.70212463e-01 + 3.70550975e-01 3.70889526e-01 3.71228115e-01 3.71566742e-01 3.71905408e-01 + 3.72244111e-01 3.72582852e-01 3.72921631e-01 3.73260447e-01 3.73599300e-01 + 3.73938191e-01 3.74277119e-01 3.74616083e-01 3.74955084e-01 3.75294122e-01 + 3.75633196e-01 3.75972306e-01 3.76311452e-01 3.76650634e-01 3.76989852e-01 + 3.77329105e-01 3.77668394e-01 3.78007718e-01 3.78347077e-01 3.78686471e-01 + 3.79025899e-01 3.79365363e-01 3.79704861e-01 3.80044393e-01 3.80383959e-01 + 3.80723559e-01 3.81063194e-01 3.81402861e-01 3.81742563e-01 3.82082298e-01 + 3.82422065e-01 3.82761866e-01 3.83101700e-01 3.83441567e-01 3.83781466e-01 + 3.84121398e-01 3.84461362e-01 3.84801358e-01 3.85141386e-01 3.85481446e-01 + 3.85821538e-01 3.86161661e-01 3.86501816e-01 3.86842001e-01 3.87182218e-01 + 3.87522466e-01 3.87862744e-01 3.88203053e-01 3.88543393e-01 3.88883763e-01 + 3.89224162e-01 3.89564592e-01 3.89905052e-01 3.90245541e-01 3.90586060e-01 + 3.90926609e-01 3.91267186e-01 3.91607793e-01 3.91948428e-01 3.92289093e-01 + 3.92629785e-01 3.92970507e-01 3.93311256e-01 3.93652034e-01 3.93992840e-01 + 3.94333674e-01 3.94674535e-01 3.95015424e-01 3.95356341e-01 3.95697284e-01 + 3.96038255e-01 3.96379253e-01 3.96720277e-01 3.97061328e-01 3.97402406e-01 + 3.97743510e-01 3.98084640e-01 3.98425796e-01 3.98766978e-01 3.99108186e-01 + 3.99449420e-01 3.99790679e-01 4.00131963e-01 4.00473272e-01 4.00814607e-01 + 4.01155966e-01 4.01497350e-01 4.01838759e-01 4.02180192e-01 4.02521649e-01 + 4.02863130e-01 4.03204636e-01 4.03546165e-01 4.03887718e-01 4.04229294e-01 + 4.04570894e-01 4.04912517e-01 4.05254163e-01 4.05595832e-01 4.05937524e-01 + 4.06279238e-01 4.06620975e-01 4.06962734e-01 4.07304516e-01 4.07646319e-01 + 4.07988145e-01 4.08329992e-01 4.08671861e-01 4.09013751e-01 4.09355663e-01 + 4.09697596e-01 4.10039549e-01 4.10381524e-01 4.10723520e-01 4.11065536e-01 + 4.11407572e-01 4.11749629e-01 4.12091706e-01 4.12433803e-01 4.12775920e-01 + 4.13118057e-01 4.13460213e-01 4.13802389e-01 4.14144583e-01 4.14486798e-01 + 4.14829031e-01 4.15171283e-01 4.15513553e-01 4.15855843e-01 4.16198150e-01 + 4.16540476e-01 4.16882821e-01 4.17225183e-01 4.17567563e-01 4.17909961e-01 + 4.18252376e-01 4.18594809e-01 4.18937259e-01 4.19279726e-01 4.19622210e-01 + 4.19964711e-01 4.20307229e-01 4.20649763e-01 4.20992314e-01 4.21334881e-01 + 4.21677465e-01 4.22020064e-01 4.22362679e-01 4.22705310e-01 4.23047957e-01 + 4.23390619e-01 4.23733296e-01 4.24075988e-01 4.24418696e-01 4.24761418e-01 + 4.25104155e-01 4.25446907e-01 4.25789673e-01 4.26132454e-01 4.26475249e-01 + 4.26818057e-01 4.27160880e-01 4.27503717e-01 4.27846567e-01 4.28189430e-01 + 4.28532307e-01 4.28875197e-01 4.29218101e-01 4.29561017e-01 4.29903946e-01 + 4.30246888e-01 4.30589842e-01 4.30932808e-01 4.31275787e-01 4.31618778e-01 + 4.31961781e-01 4.32304796e-01 4.32647822e-01 4.32990860e-01 4.33333909e-01 + 4.33676970e-01 4.34020042e-01 4.34363125e-01 4.34706219e-01 4.35049323e-01 + 4.35392438e-01 4.35735564e-01 4.36078700e-01 4.36421846e-01 4.36765002e-01 + 4.37108168e-01 4.37451344e-01 4.37794529e-01 4.38137724e-01 4.38480929e-01 + 4.38824142e-01 4.39167365e-01 4.39510597e-01 4.39853837e-01 4.40197087e-01 + 4.40540345e-01 4.40883611e-01 4.41226885e-01 4.41570168e-01 4.41913459e-01 + 4.42256758e-01 4.42600064e-01 4.42943378e-01 4.43286700e-01 4.43630029e-01 + 4.43973365e-01 4.44316708e-01 4.44660058e-01 4.45003416e-01 4.45346779e-01 + 4.45690150e-01 4.46033526e-01 4.46376910e-01 4.46720299e-01 4.47063694e-01 + 4.47407095e-01 4.47750502e-01 4.48093915e-01 4.48437333e-01 4.48780757e-01 + 4.49124185e-01 4.49467619e-01 4.49811058e-01 4.50154502e-01 4.50497950e-01 + 4.50841403e-01 4.51184861e-01 4.51528322e-01 4.51871788e-01 4.52215259e-01 + 4.52558733e-01 4.52902210e-01 4.53245692e-01 4.53589177e-01 4.53932665e-01 + 4.54276157e-01 4.54619652e-01 4.54963150e-01 4.55306651e-01 4.55650154e-01 + 1.03953624e+00 1.03772749e+00 1.03592023e+00 1.03411445e+00 1.03231016e+00 + 1.03050735e+00 1.02870603e+00 1.02690620e+00 1.02510785e+00 1.02331100e+00 + 1.02151562e+00 1.01972174e+00 1.01792935e+00 1.01613844e+00 1.01434902e+00 + 1.01256110e+00 1.01077466e+00 1.00898971e+00 1.00720626e+00 1.00542429e+00 + 1.00364382e+00 1.00186484e+00 1.00008735e+00 9.98311355e-01 9.96536852e-01 + 9.94763842e-01 9.92992326e-01 9.91222304e-01 9.89453777e-01 9.87686744e-01 + 9.85921207e-01 9.84157165e-01 9.82394619e-01 9.80633570e-01 9.78874017e-01 + 9.77115962e-01 9.75359404e-01 9.73604344e-01 9.71850782e-01 9.70098719e-01 + 9.68348155e-01 9.66599090e-01 9.64851525e-01 9.63105460e-01 9.61360895e-01 + 9.59617832e-01 9.57876269e-01 9.56136208e-01 9.54397649e-01 9.52660593e-01 + 9.50925039e-01 9.49190988e-01 9.47458441e-01 9.45727397e-01 9.43997858e-01 + 9.42269823e-01 9.40543293e-01 9.38818268e-01 9.37094749e-01 9.35372736e-01 + 9.33652230e-01 9.31933230e-01 9.30215737e-01 9.28499752e-01 9.26785274e-01 + 9.25072305e-01 9.23360844e-01 9.21650893e-01 9.19942450e-01 9.18235517e-01 + 9.16530094e-01 9.14826182e-01 9.13123780e-01 9.11422890e-01 9.09723511e-01 + 9.08025644e-01 9.06329289e-01 9.04634446e-01 9.02941117e-01 9.01249300e-01 + 8.99558998e-01 8.97870209e-01 8.96182935e-01 8.94497176e-01 8.92812931e-01 + 8.91130202e-01 8.89448989e-01 8.87769292e-01 8.86091112e-01 8.84414448e-01 + 8.82739302e-01 8.81065673e-01 8.79393562e-01 8.77722970e-01 8.76053896e-01 + 8.74386341e-01 8.72720306e-01 8.71055790e-01 8.69392795e-01 8.67731320e-01 + 8.66071366e-01 8.64412932e-01 8.62756021e-01 8.61100631e-01 8.59446764e-01 + 8.57794419e-01 8.56143597e-01 8.54494298e-01 8.52846523e-01 8.51200272e-01 + 8.49555545e-01 8.47912343e-01 8.46270666e-01 8.44630515e-01 8.42991889e-01 + 8.41354789e-01 8.39719216e-01 8.38085170e-01 8.36452650e-01 8.34821658e-01 + 8.33192195e-01 8.31564259e-01 8.29937852e-01 8.28312973e-01 8.26689624e-01 + 8.25067805e-01 8.23447515e-01 8.21828756e-01 8.20211528e-01 8.18595830e-01 + 8.16981664e-01 8.15369029e-01 8.13757927e-01 8.12148357e-01 8.10540319e-01 + 8.08933815e-01 8.07328844e-01 8.05725406e-01 8.04123503e-01 8.02523135e-01 + 8.00924301e-01 7.99327002e-01 7.97731239e-01 7.96137011e-01 7.94544320e-01 + 7.92953165e-01 7.91363547e-01 7.89775466e-01 7.88188923e-01 7.86603918e-01 + 7.85020450e-01 7.83438522e-01 7.81858132e-01 7.80279281e-01 7.78701970e-01 + 7.77126199e-01 7.75551968e-01 7.73979278e-01 7.72408129e-01 7.70838521e-01 + 7.69270454e-01 7.67703930e-01 7.66138947e-01 7.64575508e-01 7.63013611e-01 + 7.61453258e-01 7.59894448e-01 7.58337182e-01 7.56781460e-01 7.55227283e-01 + 7.53674651e-01 7.52123565e-01 7.50574024e-01 7.49026029e-01 7.47479580e-01 + 7.45934678e-01 7.44391322e-01 7.42849514e-01 7.41309254e-01 7.39770542e-01 + 7.38233378e-01 7.36697762e-01 7.35163696e-01 7.33631179e-01 7.32100211e-01 + 7.30570794e-01 7.29042926e-01 7.27516610e-01 7.25991844e-01 7.24468629e-01 + 7.22946966e-01 7.21426855e-01 7.19908297e-01 7.18391291e-01 7.16875837e-01 + 7.15361937e-01 7.13849591e-01 7.12338798e-01 7.10829560e-01 7.09321876e-01 + 7.07815747e-01 7.06311174e-01 7.04808155e-01 7.03306693e-01 7.01806787e-01 + 7.00308437e-01 6.98811644e-01 6.97316408e-01 6.95822730e-01 6.94330610e-01 + 6.92840047e-01 6.91351043e-01 6.89863598e-01 6.88377712e-01 6.86893385e-01 + 6.85410618e-01 6.83929411e-01 6.82449765e-01 6.80971679e-01 6.79495154e-01 + 6.78020190e-01 6.76546789e-01 6.75074949e-01 6.73604671e-01 6.72135956e-01 + 6.70668804e-01 6.69203215e-01 6.67739189e-01 6.66276728e-01 6.64815830e-01 + 6.63356498e-01 6.61898730e-01 6.60442527e-01 6.58987889e-01 6.57534818e-01 + 6.56083312e-01 6.54633373e-01 6.53185001e-01 6.51738195e-01 6.50292957e-01 + 6.48849287e-01 6.47407184e-01 6.45966650e-01 6.44527685e-01 6.43090288e-01 + 6.41654460e-01 6.40220202e-01 6.38787514e-01 6.37356396e-01 6.35926849e-01 + 6.34498872e-01 6.33072467e-01 6.31647633e-01 6.30224370e-01 6.28802680e-01 + 6.27382561e-01 6.25964016e-01 6.24547043e-01 6.23131644e-01 6.21717818e-01 + 6.20305566e-01 6.18894889e-01 6.17485785e-01 6.16078257e-01 6.14672303e-01 + 6.13267925e-01 6.11865123e-01 6.10463897e-01 6.09064247e-01 6.07666173e-01 + 6.06269677e-01 6.04874758e-01 6.03481416e-01 6.02089652e-01 6.00699467e-01 + 5.99310859e-01 5.97923831e-01 5.96538381e-01 5.95154511e-01 5.93772221e-01 + 5.92391510e-01 5.91012380e-01 5.89634830e-01 5.88258861e-01 5.86884473e-01 + 5.85511667e-01 5.84140442e-01 5.82770800e-01 5.81402740e-01 5.80036262e-01 + 5.78671367e-01 5.77308056e-01 5.75946328e-01 5.74586184e-01 5.73227624e-01 + 5.71870649e-01 5.70515258e-01 5.69161453e-01 5.67809232e-01 5.66458597e-01 + 5.65109548e-01 5.63762086e-01 5.62416210e-01 5.61071920e-01 5.59729218e-01 + 5.58388103e-01 5.57048576e-01 5.55710636e-01 5.54374285e-01 5.53039523e-01 + 5.51706349e-01 5.50374764e-01 5.49044769e-01 5.47716364e-01 5.46389548e-01 + 5.45064323e-01 5.43740689e-01 5.42418645e-01 5.41098192e-01 5.39779331e-01 + 5.38462062e-01 5.37146385e-01 5.35832299e-01 5.34519807e-01 5.33208907e-01 + 5.31899601e-01 5.30591888e-01 5.29285769e-01 5.27981244e-01 5.26678313e-01 + 5.25376977e-01 5.24077235e-01 5.22779089e-01 5.21482538e-01 5.20187583e-01 + 5.18894224e-01 5.17602461e-01 5.16312295e-01 5.15023726e-01 5.13736754e-01 + 5.12451379e-01 5.11167602e-01 5.09885423e-01 5.08604843e-01 5.07325861e-01 + 5.06048477e-01 5.04772693e-01 5.03498508e-01 5.02225923e-01 5.00954938e-01 + 4.99685553e-01 4.98417769e-01 4.97151585e-01 4.95887003e-01 4.94624021e-01 + 4.93362642e-01 4.92102864e-01 4.90844689e-01 4.89588116e-01 4.88333145e-01 + 4.87079778e-01 4.85828014e-01 4.84577853e-01 4.83329297e-01 4.82082344e-01 + 4.80836996e-01 4.79593252e-01 4.78351114e-01 4.77110580e-01 4.75871652e-01 + 4.74634330e-01 4.73398614e-01 4.72164504e-01 4.70932001e-01 4.69701104e-01 + 4.68471815e-01 4.67244132e-01 4.66018058e-01 4.64793591e-01 4.63570733e-01 + 4.62349483e-01 4.61129842e-01 4.59911810e-01 4.58695387e-01 4.57480573e-01 + 4.56267369e-01 4.55055776e-01 4.53845792e-01 4.52637419e-01 4.51430658e-01 + 4.50225507e-01 4.49021967e-01 4.47820039e-01 4.46619724e-01 4.45421020e-01 + 4.44223928e-01 4.43028450e-01 4.41834584e-01 4.40642332e-01 4.39451693e-01 + 4.38262668e-01 4.37075256e-01 4.35889459e-01 4.34705277e-01 4.33522709e-01 + 4.32341757e-01 4.31162420e-01 4.29984698e-01 4.28808592e-01 4.27634102e-01 + 4.26461229e-01 4.25289972e-01 4.24120332e-01 4.22952310e-01 4.21785904e-01 + 4.20621116e-01 4.19457946e-01 4.18296395e-01 4.17136461e-01 4.15978147e-01 + 4.14821451e-01 4.13666374e-01 4.12512917e-01 4.11361080e-01 4.10210862e-01 + 4.09062265e-01 4.07915288e-01 4.06769932e-01 4.05626197e-01 4.04484083e-01 + 4.03343590e-01 4.02204719e-01 4.01067470e-01 3.99931844e-01 3.98797839e-01 + 3.97665458e-01 3.96534699e-01 3.95405564e-01 3.94278052e-01 3.93152164e-01 + 3.92027900e-01 3.90905259e-01 3.89784244e-01 3.88664853e-01 3.87547087e-01 + 3.86430946e-01 3.85316431e-01 3.84203541e-01 3.83092278e-01 3.81982640e-01 + 3.80874629e-01 3.79768245e-01 3.78663487e-01 3.77560357e-01 3.76458854e-01 + 3.75358979e-01 3.74260731e-01 3.73164112e-01 3.72069121e-01 3.70975759e-01 + 3.69884025e-01 3.68793921e-01 3.67705446e-01 3.66618601e-01 3.65533385e-01 + 3.64449799e-01 3.63367844e-01 3.62287520e-01 3.61208826e-01 3.60131763e-01 + 3.59056331e-01 3.57982531e-01 3.56910363e-01 3.55839826e-01 3.54770922e-01 + 3.53703650e-01 3.52638011e-01 3.51574005e-01 3.50511632e-01 3.49450892e-01 + 3.48391786e-01 3.47334314e-01 3.46278476e-01 3.45224272e-01 3.44171703e-01 + 3.43120769e-01 3.42071469e-01 3.41023805e-01 3.39977776e-01 3.38933384e-01 + 3.37890627e-01 3.36849506e-01 3.35810021e-01 3.34772174e-01 3.33735963e-01 + 3.32701389e-01 3.31668453e-01 3.30637154e-01 3.29607493e-01 3.28579470e-01 + 3.27553085e-01 3.26528339e-01 3.25505231e-01 3.24483762e-01 3.23463933e-01 + 3.22445743e-01 3.21429192e-01 3.20414282e-01 3.19401011e-01 3.18389381e-01 + 3.17379391e-01 3.16371042e-01 3.15364334e-01 3.14359267e-01 3.13355841e-01 + 3.12354057e-01 3.11353915e-01 3.10355415e-01 3.09358557e-01 3.08363342e-01 + 3.07369770e-01 3.06377840e-01 3.05387554e-01 3.04398911e-01 3.03411912e-01 + 3.02426556e-01 3.01442845e-01 3.00460777e-01 2.99480355e-01 2.98501577e-01 + 2.97524444e-01 2.96548956e-01 2.95575113e-01 2.94602916e-01 2.93632365e-01 + 2.92663460e-01 2.91696201e-01 2.90730589e-01 2.89766623e-01 2.88804304e-01 + 2.87843632e-01 2.86884607e-01 2.85927230e-01 2.84971501e-01 2.84017420e-01 + 2.83064986e-01 2.82114201e-01 2.81165065e-01 2.80217578e-01 2.79271739e-01 + 2.78327550e-01 2.77385010e-01 2.76444119e-01 2.75504879e-01 2.74567288e-01 + 2.73631348e-01 2.72697059e-01 2.71764419e-01 2.70833431e-01 2.69904094e-01 + 2.68976408e-01 2.68050374e-01 2.67125991e-01 2.66203261e-01 2.65282182e-01 + 2.64362756e-01 2.63444982e-01 2.62528861e-01 2.61614393e-01 2.60701578e-01 + 2.59790416e-01 2.58880908e-01 2.57973054e-01 2.57066853e-01 2.56162307e-01 + 2.55259415e-01 2.54358178e-01 2.53458595e-01 2.52560668e-01 2.51664395e-01 + 2.50769778e-01 2.49876816e-01 2.48985511e-01 2.48095861e-01 2.47207867e-01 + 2.46321530e-01 2.45436849e-01 2.44553825e-01 2.43672457e-01 2.42792747e-01 + 2.41914695e-01 2.41038300e-01 2.40163562e-01 2.39290483e-01 2.38419061e-01 + 2.37549298e-01 2.36681193e-01 2.35814748e-01 2.34949961e-01 2.34086833e-01 + 2.33225364e-01 2.32365555e-01 2.31507405e-01 2.30650916e-01 2.29796086e-01 + 2.28942916e-01 2.28091407e-01 2.27241559e-01 2.26393372e-01 2.25546845e-01 + 2.24701980e-01 2.23858776e-01 2.23017233e-01 2.22177352e-01 2.21339134e-01 + 2.20502577e-01 2.19667682e-01 2.18834451e-01 2.18002881e-01 2.17172975e-01 + 2.16344732e-01 2.15518152e-01 2.14693235e-01 2.13869982e-01 2.13048393e-01 + 2.12228468e-01 2.11410207e-01 2.10593610e-01 2.09778678e-01 2.08965410e-01 + 2.08153807e-01 2.07343870e-01 2.06535598e-01 2.05728991e-01 2.04924049e-01 + 2.04120774e-01 2.03319164e-01 2.02519221e-01 2.01720944e-01 2.00924334e-01 + 2.00129390e-01 1.99336113e-01 1.98544503e-01 1.97754560e-01 1.96966285e-01 + 1.96179677e-01 1.95394737e-01 1.94611465e-01 1.93829861e-01 1.93049925e-01 + 1.92271658e-01 1.91495059e-01 1.90720129e-01 1.89946869e-01 1.89175277e-01 + 1.88405354e-01 1.87637101e-01 1.86870518e-01 1.86105605e-01 1.85342361e-01 + 1.84580788e-01 1.83820885e-01 1.83062653e-01 1.82306091e-01 1.81551200e-01 + 1.80797980e-01 1.80046431e-01 1.79296554e-01 1.78548348e-01 1.77801814e-01 + 1.77056952e-01 1.76313762e-01 1.75572244e-01 1.74832398e-01 1.74094225e-01 + 1.73357725e-01 1.72622897e-01 1.71889743e-01 1.71158261e-01 1.70428453e-01 + 1.69700319e-01 1.68973858e-01 1.68249071e-01 1.67525958e-01 1.66804519e-01 + 1.66084755e-01 1.65366665e-01 1.64650249e-01 1.63935509e-01 1.63222443e-01 + 1.62511053e-01 1.61801338e-01 1.61093298e-01 1.60386934e-01 1.59682246e-01 + 1.58979233e-01 1.58277897e-01 1.57578237e-01 1.56880253e-01 1.56183946e-01 + 1.55489316e-01 1.54796362e-01 1.54105086e-01 1.53415486e-01 1.52727564e-01 + 1.52041320e-01 1.51356753e-01 1.50673864e-01 1.49992653e-01 1.49313120e-01 + 1.48635265e-01 1.47959088e-01 1.47284591e-01 1.46611771e-01 1.45940631e-01 + 1.45271170e-01 1.44603388e-01 1.43937285e-01 1.43272862e-01 1.42610118e-01 + 1.41949054e-01 1.41289670e-01 1.40631966e-01 1.39975942e-01 1.39321598e-01 + 1.38668935e-01 1.38017953e-01 1.37368652e-01 1.36721031e-01 1.36075091e-01 + 1.35430833e-01 1.34788256e-01 1.34147361e-01 1.33508147e-01 1.32870615e-01 + 1.32234765e-01 1.31600597e-01 1.30968111e-01 1.30337308e-01 1.29708187e-01 + 1.29080749e-01 1.28454994e-01 1.27830921e-01 1.27208532e-01 1.26587826e-01 + 1.25968803e-01 1.25351464e-01 1.24735808e-01 1.24121836e-01 1.23509548e-01 + 1.22898944e-01 1.22290024e-01 1.21682789e-01 1.21077238e-01 1.20473372e-01 + 1.19871190e-01 1.19270693e-01 1.18671881e-01 1.18074755e-01 1.17479313e-01 + 1.16885558e-01 1.16293487e-01 1.15703102e-01 1.15114403e-01 1.14527390e-01 + 1.13942064e-01 1.13358423e-01 1.12776468e-01 1.12196200e-01 1.11617619e-01 + 1.11040725e-01 1.10465517e-01 1.09891996e-01 1.09320162e-01 1.08750016e-01 + 1.08181557e-01 1.07614785e-01 1.07049701e-01 1.06486305e-01 1.05924597e-01 + 1.05364577e-01 1.04806244e-01 1.04249601e-01 1.03694645e-01 1.03141378e-01 + 1.02589800e-01 1.02039910e-01 1.01491709e-01 1.00945198e-01 1.00400375e-01 + 9.98572416e-02 9.93157976e-02 9.87760431e-02 9.82379782e-02 9.77016030e-02 + 9.71669178e-02 9.66339224e-02 9.61026172e-02 9.55730022e-02 9.50450776e-02 + 9.45188434e-02 9.39942997e-02 9.34714468e-02 9.29502847e-02 9.24308135e-02 + 9.19130333e-02 9.13969443e-02 9.08825466e-02 9.03698403e-02 8.98588255e-02 + 8.93495023e-02 8.88418708e-02 8.83359312e-02 8.78316836e-02 8.73291281e-02 + 8.68282647e-02 8.63290937e-02 8.58316150e-02 8.53358290e-02 8.48417355e-02 + 8.43493348e-02 8.38586270e-02 8.33696121e-02 8.28822904e-02 8.23966618e-02 + 8.19127265e-02 8.14304847e-02 8.09499364e-02 8.04710817e-02 7.99939207e-02 + 7.95184537e-02 7.90446805e-02 7.85726014e-02 7.81022165e-02 7.76335259e-02 + 7.71665296e-02 7.67012279e-02 7.62376207e-02 7.57757082e-02 7.53154905e-02 + 7.48569677e-02 7.44001400e-02 7.39450073e-02 7.34915699e-02 7.30398277e-02 + 7.25897810e-02 7.21414298e-02 7.16947743e-02 7.12498144e-02 7.08065504e-02 + 7.03649822e-02 6.99251102e-02 6.94869342e-02 6.90504544e-02 6.86156710e-02 + 6.81825840e-02 6.77511935e-02 6.73214996e-02 6.68935024e-02 6.64672020e-02 + 6.60425985e-02 6.56196920e-02 6.51984826e-02 6.47789704e-02 6.43611555e-02 + 6.39450379e-02 6.35306178e-02 6.31178953e-02 6.27068704e-02 6.22975433e-02 + 6.18899141e-02 6.14839827e-02 6.10797494e-02 6.06772142e-02 6.02763772e-02 + 5.98772385e-02 5.94797982e-02 5.90840564e-02 5.86900131e-02 5.82976685e-02 + 5.79070227e-02 5.75180757e-02 5.71308276e-02 5.67452785e-02 5.63614285e-02 + 5.59792777e-02 5.55988261e-02 5.52200739e-02 5.48430212e-02 5.44676679e-02 + 5.40940143e-02 5.37220604e-02 5.33518062e-02 5.29832520e-02 5.26163976e-02 + 5.22512433e-02 5.18877891e-02 5.15260351e-02 5.11659814e-02 5.08076280e-02 + 5.04509751e-02 5.00960227e-02 4.97427708e-02 4.93912197e-02 4.90413693e-02 + 4.86932198e-02 4.83467711e-02 4.80020235e-02 4.76589769e-02 4.73176315e-02 + 4.69779873e-02 4.66400444e-02 4.63038029e-02 4.59692628e-02 4.56364243e-02 + 4.53052874e-02 4.49758521e-02 4.46481186e-02 4.43220870e-02 4.39977572e-02 + 4.36751294e-02 4.33542037e-02 4.30349801e-02 4.27174587e-02 4.24016395e-02 + 4.20875227e-02 4.17751083e-02 4.14643964e-02 4.11553870e-02 4.08480802e-02 + 4.05424762e-02 4.02385749e-02 3.99363764e-02 3.96358808e-02 3.93370881e-02 + 3.90399985e-02 3.87446120e-02 3.84509287e-02 3.81589486e-02 3.78686718e-02 + 3.75800983e-02 3.72932283e-02 3.70080618e-02 3.67245988e-02 3.64428394e-02 + 3.61627838e-02 3.58844318e-02 3.56077837e-02 3.53328395e-02 3.50595992e-02 + 3.47880629e-02 3.45182306e-02 3.42501025e-02 3.39836786e-02 3.37189589e-02 + 3.34559435e-02 3.31946324e-02 3.29350258e-02 3.26771236e-02 3.24209260e-02 + 3.21664330e-02 3.19136446e-02 3.16625610e-02 3.14131821e-02 3.11655080e-02 + 3.09195388e-02 3.06752746e-02 3.04327153e-02 3.01918611e-02 2.99527120e-02 + 2.97152680e-02 2.94795292e-02 2.92454957e-02 2.90131675e-02 2.87825447e-02 + 2.85536273e-02 2.83264153e-02 2.81009089e-02 2.78771081e-02 2.76550128e-02 + 2.74346233e-02 2.72159395e-02 2.69989614e-02 2.67836892e-02 2.65701228e-02 + 2.63582623e-02 2.61481079e-02 2.59396594e-02 2.57329170e-02 2.55278807e-02 + 2.53245505e-02 2.51229266e-02 2.49230089e-02 2.47247975e-02 2.45282924e-02 + 2.43334937e-02 2.41404014e-02 2.39490156e-02 2.37593363e-02 2.35713636e-02 + 2.33850975e-02 2.32005380e-02 2.30176851e-02 2.28365390e-02 2.26570997e-02 + 2.24793672e-02 2.23033415e-02 2.21290227e-02 2.19564108e-02 2.17855059e-02 + 2.16163080e-02 2.14488171e-02 2.12830333e-02 2.11189566e-02 2.09565871e-02 + 2.07959248e-02 2.06369696e-02 2.04797218e-02 2.03241812e-02 2.01703480e-02 + 2.00182221e-02 1.98678037e-02 1.97190927e-02 1.95720891e-02 1.94267931e-02 + 1.92832045e-02 1.91413236e-02 1.90011502e-02 1.88626845e-02 1.87259265e-02 + 1.85908761e-02 1.84575335e-02 1.83258986e-02 1.81959715e-02 1.80677522e-02 + 1.79412408e-02 1.78164372e-02 1.76933415e-02 1.75719538e-02 1.74522740e-02 + 1.73343022e-02 1.72180384e-02 1.71034827e-02 1.69906350e-02 1.68794954e-02 + 1.67700639e-02 1.66623405e-02 1.65563253e-02 1.64520183e-02 1.63494195e-02 + 1.62485289e-02 1.61493466e-02 1.60518726e-02 1.59561068e-02 1.58620494e-02 + 1.57697003e-02 1.56790596e-02 1.55901273e-02 1.55029034e-02 1.54173879e-02 + 1.53335808e-02 1.52514822e-02 1.51710921e-02 1.50924105e-02 1.50154374e-02 + 1.49401728e-02 1.48666168e-02 1.47947694e-02 1.47246305e-02 1.46562002e-02 + 1.45894786e-02 1.45244656e-02 1.44611612e-02 1.43995655e-02 1.43396785e-02 + 1.42815001e-02 1.42250305e-02 1.41702695e-02 1.41172173e-02 1.40658738e-02 + 1.40162391e-02 1.39683132e-02 1.39220960e-02 1.38775876e-02 1.38347880e-02 + 1.37936971e-02 1.37543151e-02 1.37166420e-02 1.36806776e-02 1.36464221e-02 + 1.36138754e-02 1.35830376e-02 1.35539086e-02 1.35264885e-02 1.35007773e-02 + 1.34767750e-02 1.34544815e-02 1.34338969e-02 1.34150212e-02 1.33978544e-02 + 1.33823966e-02 1.33686476e-02 1.33566075e-02 1.33462763e-02 1.33376541e-02 + 1.33307407e-02 1.33255363e-02 1.33220408e-02 1.33202542e-02 1.33201765e-02 + 1.33218078e-02 1.33251480e-02 1.33301970e-02 1.33369550e-02 1.33454220e-02 + 1.33555978e-02 1.33674825e-02 1.33810762e-02 1.33963787e-02 1.34133902e-02 + 1.34321105e-02 1.34525397e-02 1.34746779e-02 1.34985249e-02 1.35240808e-02 + 1.35513455e-02 1.35803192e-02 1.36110016e-02 1.36433930e-02 1.36774932e-02 + 1.37133022e-02 1.37508200e-02 1.37900467e-02 1.38309822e-02 1.38736265e-02 + 1.39179796e-02 1.39640414e-02 1.40118121e-02 1.40612914e-02 1.41124796e-02 + 1.41653765e-02 1.42199821e-02 1.42762964e-02 1.43343194e-02 1.43940512e-02 + 1.44554916e-02 1.45186406e-02 1.45834983e-02 1.46500646e-02 1.47183396e-02 + 1.47883231e-02 1.48600153e-02 1.49334160e-02 1.50085252e-02 1.50853430e-02 + 1.51638693e-02 1.52441041e-02 1.53260474e-02 1.54096992e-02 1.54950594e-02 + 1.55821280e-02 1.56709051e-02 1.57613905e-02 1.58535843e-02 1.59474864e-02 + 1.60430969e-02 1.61404156e-02 1.62394427e-02 1.63401780e-02 1.64426215e-02 + 1.65467732e-02 1.66526331e-02 1.67602012e-02 1.68694775e-02 1.69804618e-02 + 1.70931542e-02 1.72075547e-02 1.73236633e-02 1.74414798e-02 1.75610043e-02 + 1.76822368e-02 1.78051772e-02 1.79298256e-02 1.80561818e-02 1.81842458e-02 + 1.83140177e-02 1.84454973e-02 1.85786847e-02 1.87135798e-02 1.88501827e-02 + 1.89884931e-02 1.91285113e-02 1.92702370e-02 1.94136703e-02 1.95588111e-02 + 1.97056595e-02 1.98542153e-02 2.00044786e-02 2.01564492e-02 2.03101272e-02 + 2.04655126e-02 2.06226053e-02 2.07814052e-02 2.09419123e-02 2.11041267e-02 + 2.12680482e-02 2.14336768e-02 2.16010125e-02 2.17700553e-02 2.19408050e-02 + 2.21132617e-02 2.22874254e-02 2.24632959e-02 2.26408733e-02 2.28201575e-02 + 2.30011484e-02 2.31838461e-02 2.33682505e-02 2.35543615e-02 2.37421791e-02 + 2.39317033e-02 2.41229339e-02 2.43158711e-02 2.45105147e-02 2.47068647e-02 + 2.49049210e-02 2.51046836e-02 2.53061524e-02 2.55093275e-02 2.57142087e-02 + 2.59207960e-02 2.61290894e-02 2.63390888e-02 2.65507942e-02 2.67642055e-02 + 2.69793227e-02 2.71961457e-02 2.74146744e-02 2.76349090e-02 2.78568491e-02 + 2.80804949e-02 2.83058463e-02 2.85329032e-02 2.87616656e-02 2.89921334e-02 + 2.92243066e-02 2.94581851e-02 2.96937689e-02 2.99310578e-02 3.01700520e-02 + 3.04107512e-02 3.06531555e-02 3.08972648e-02 3.11430790e-02 3.13905981e-02 + 3.16398220e-02 3.18907507e-02 3.21433841e-02 3.23977222e-02 3.26537648e-02 + 3.29115120e-02 3.31709637e-02 3.34321199e-02 3.36949803e-02 3.39595451e-02 + 3.42258142e-02 3.44937874e-02 3.47634647e-02 3.50348461e-02 3.53079315e-02 + 3.55827209e-02 3.58592141e-02 3.61374112e-02 3.64173120e-02 3.66989165e-02 + 3.69822246e-02 3.72672363e-02 3.75539515e-02 3.78423701e-02 3.81324920e-02 + 3.84243173e-02 3.87178458e-02 3.90130775e-02 3.93100123e-02 3.96086502e-02 + 3.99089910e-02 4.02110347e-02 4.05147812e-02 4.08202305e-02 4.11273825e-02 + 4.14362371e-02 4.17467942e-02 4.20590539e-02 4.23730160e-02 4.26886804e-02 + 4.30060471e-02 4.33251159e-02 4.36458870e-02 4.39683600e-02 4.42925351e-02 + 4.46184120e-02 4.49459908e-02 4.52752714e-02 4.56062536e-02 4.59389375e-02 + 4.62733229e-02 4.66094097e-02 4.69471980e-02 4.72866875e-02 4.76278783e-02 + 4.79707703e-02 4.83153633e-02 4.86616573e-02 4.90096522e-02 4.93593480e-02 + 4.97107446e-02 5.00638418e-02 5.04186396e-02 5.07751380e-02 5.11333368e-02 + 5.14932360e-02 5.18548354e-02 5.22181351e-02 5.25831349e-02 5.29498347e-02 + 5.33182344e-02 5.36883341e-02 5.40601335e-02 5.44336326e-02 5.48088313e-02 + 5.51857296e-02 5.55643273e-02 5.59446244e-02 5.63266207e-02 5.67103163e-02 + 5.70957109e-02 5.74828046e-02 5.78715972e-02 5.82620886e-02 5.86542788e-02 + 5.90481677e-02 5.94437551e-02 5.98410410e-02 6.02400253e-02 6.06407080e-02 + 6.10430888e-02 6.14471678e-02 6.18529447e-02 6.22604197e-02 6.26695925e-02 + 6.30804630e-02 6.34930312e-02 6.39072970e-02 6.43232602e-02 6.47409209e-02 + 6.51602788e-02 6.55813340e-02 6.60040862e-02 6.64285354e-02 6.68546816e-02 + 6.72825245e-02 6.77120642e-02 6.81433005e-02 6.85762333e-02 6.90108625e-02 + 6.94471881e-02 6.98852099e-02 7.03249278e-02 7.07663417e-02 7.12094516e-02 + 7.16542573e-02 7.21007588e-02 7.25489558e-02 7.29988484e-02 7.34504365e-02 + 7.39037198e-02 7.43586984e-02 7.48153721e-02 7.52737408e-02 7.57338044e-02 + 7.61955628e-02 7.66590160e-02 7.71241637e-02 7.75910059e-02 7.80595425e-02 + 7.85297734e-02 7.90016985e-02 7.94753177e-02 7.99506308e-02 8.04276378e-02 + 8.09063385e-02 8.13867329e-02 8.18688208e-02 8.23526021e-02 8.28380768e-02 + 8.33252446e-02 8.38141056e-02 8.43046595e-02 8.47969063e-02 8.52908459e-02 + 8.57864782e-02 8.62838029e-02 8.67828201e-02 8.72835297e-02 8.77859314e-02 + 8.82900252e-02 8.87958110e-02 8.93032887e-02 8.98124581e-02 9.03233191e-02 + 9.08358717e-02 9.13501157e-02 9.18660509e-02 9.23836774e-02 9.29029949e-02 + 9.34240033e-02 9.39467025e-02 9.44710925e-02 9.49971730e-02 9.55249440e-02 + 9.60544054e-02 9.65855570e-02 9.71183987e-02 9.76529303e-02 9.81891519e-02 + 9.87270632e-02 9.92666641e-02 9.98079545e-02 1.00350934e-01 1.00895603e-01 + 1.01441962e-01 1.01990009e-01 1.02539745e-01 1.03091170e-01 1.03644283e-01 + 1.04199085e-01 1.04755576e-01 1.05313754e-01 1.05873621e-01 1.06435176e-01 + 1.06998419e-01 1.07563349e-01 1.08129968e-01 1.08698273e-01 1.09268266e-01 + 1.09839947e-01 1.10413314e-01 1.10988368e-01 1.11565110e-01 1.12143538e-01 + 1.12723652e-01 1.13305453e-01 1.13888941e-01 1.14474115e-01 1.15060974e-01 + 1.15649520e-01 1.16239751e-01 1.16831669e-01 1.17425271e-01 1.18020560e-01 + 1.18617533e-01 1.19216192e-01 1.19816535e-01 1.20418564e-01 1.21022277e-01 + 1.21627675e-01 1.22234757e-01 1.22843524e-01 1.23453975e-01 1.24066109e-01 + 1.24679928e-01 1.25295431e-01 1.25912617e-01 1.26531487e-01 1.27152040e-01 + 1.27774276e-01 1.28398196e-01 1.29023798e-01 1.29651083e-01 1.30280051e-01 + 1.30910702e-01 1.31543034e-01 1.32177050e-01 1.32812747e-01 1.33450126e-01 + 1.34089187e-01 1.34729929e-01 1.35372353e-01 1.36016459e-01 1.36662246e-01 + 1.37309713e-01 1.37958862e-01 1.38609692e-01 1.39262202e-01 1.39916393e-01 + 1.40572264e-01 1.41229815e-01 1.41889046e-01 1.42549958e-01 1.43212549e-01 + 1.43876819e-01 1.44542770e-01 1.45210399e-01 1.45879708e-01 1.46550695e-01 + 1.47223362e-01 1.47897707e-01 1.48573731e-01 1.49251433e-01 1.49930814e-01 + 1.50611872e-01 1.51294609e-01 1.51979023e-01 1.52665115e-01 1.53352885e-01 + 1.54042332e-01 1.54733456e-01 1.55426257e-01 1.56120735e-01 1.56816890e-01 + 1.57514721e-01 1.58214229e-01 1.58915413e-01 1.59618273e-01 1.60322809e-01 + 1.61029020e-01 1.61736908e-01 1.62446471e-01 1.63157709e-01 1.63870622e-01 + 1.64585210e-01 1.65301473e-01 1.66019411e-01 1.66739023e-01 1.67460310e-01 + 1.68183271e-01 1.68907906e-01 1.69634214e-01 1.70362197e-01 1.71091853e-01 + 1.71823182e-01 1.72556184e-01 1.73290860e-01 1.74027208e-01 1.74765229e-01 + 1.75504923e-01 1.76246289e-01 1.76989327e-01 1.77734037e-01 1.78480419e-01 + 1.79228473e-01 1.79978199e-01 1.80729595e-01 1.81482663e-01 1.82237402e-01 + 1.82993812e-01 1.83751893e-01 1.84511644e-01 1.85273065e-01 1.86036157e-01 + 1.86800919e-01 1.87567350e-01 1.88335451e-01 1.89105222e-01 1.89876662e-01 + 1.90649771e-01 1.91424549e-01 1.92200996e-01 1.92979112e-01 1.93758896e-01 + 1.94540348e-01 1.95323469e-01 1.96108257e-01 1.96894713e-01 1.97682837e-01 + 1.98472628e-01 1.99264087e-01 2.00057212e-01 2.00852004e-01 2.01648463e-01 + 2.02446589e-01 2.03246381e-01 2.04047839e-01 2.04850963e-01 2.05655753e-01 + 2.06462208e-01 2.07270329e-01 2.08080115e-01 2.08891567e-01 2.09704683e-01 + 2.10519464e-01 2.11335909e-01 2.12154019e-01 2.12973793e-01 2.13795231e-01 + 2.14618333e-01 2.15443098e-01 2.16269527e-01 2.17097619e-01 2.17927374e-01 + 2.18758792e-01 2.19591873e-01 2.20426616e-01 2.21263022e-01 2.22101090e-01 + 2.22940819e-01 2.23782211e-01 2.24625264e-01 2.25469978e-01 2.26316354e-01 + 2.27164390e-01 2.28014088e-01 2.28865446e-01 2.29718464e-01 2.30573143e-01 + 2.31429482e-01 2.32287480e-01 2.33147139e-01 2.34008457e-01 2.34871434e-01 + 2.35736070e-01 2.36602365e-01 2.37470319e-01 2.38339931e-01 2.39211202e-01 + 2.40084131e-01 2.40958717e-01 2.41834962e-01 2.42712864e-01 2.43592423e-01 + 2.44473640e-01 2.45356513e-01 2.46241044e-01 2.47127230e-01 2.48015074e-01 + 2.48904573e-01 2.49795728e-01 2.50688539e-01 2.51583006e-01 2.52479128e-01 + 2.53376905e-01 2.54276337e-01 2.55177424e-01 2.56080166e-01 2.56984562e-01 + 2.57890612e-01 2.58798316e-01 2.59707674e-01 2.60618685e-01 2.61531350e-01 + 2.62445667e-01 2.63361638e-01 2.64279262e-01 2.65198538e-01 2.66119466e-01 + 2.67042047e-01 2.67966279e-01 2.68892164e-01 2.69819699e-01 2.70748886e-01 + 2.71679724e-01 2.72612213e-01 2.73546353e-01 2.74482143e-01 2.75419584e-01 + 2.76358674e-01 2.77299415e-01 2.78241805e-01 2.79185844e-01 2.80131533e-01 + 2.81078870e-01 2.82027857e-01 2.82978492e-01 2.83930775e-01 2.84884707e-01 + 2.85840287e-01 2.86797514e-01 2.87756389e-01 2.88716911e-01 2.89679080e-01 + 2.90642896e-01 2.91608359e-01 2.92575468e-01 2.93544224e-01 2.94514625e-01 + 2.95486673e-01 2.96460366e-01 2.97435704e-01 2.98412687e-01 2.99391316e-01 + 3.00371589e-01 3.01353507e-01 3.02337069e-01 3.03322275e-01 3.04309125e-01 + 3.05297618e-01 3.06287755e-01 3.07279535e-01 3.08272958e-01 3.09268024e-01 + 3.10264733e-01 3.11263084e-01 3.12263076e-01 3.13264711e-01 3.14267987e-01 + 3.15272905e-01 3.16279464e-01 3.17287664e-01 3.18297505e-01 3.19308986e-01 + 3.20322108e-01 3.21336869e-01 3.22353271e-01 3.23371312e-01 3.24390992e-01 + 3.25412312e-01 3.26435271e-01 3.27459868e-01 3.28486104e-01 3.29513978e-01 + 3.30543490e-01 3.31574640e-01 3.32607428e-01 3.33641852e-01 3.34677914e-01 + 3.35715613e-01 3.36754949e-01 3.37795921e-01 3.38838529e-01 3.39882774e-01 + 3.40928653e-01 3.41976169e-01 3.43025320e-01 3.44076105e-01 3.45128526e-01 + 3.46182581e-01 3.47238271e-01 3.48295594e-01 3.49354552e-01 3.50415143e-01 + 3.51477368e-01 3.52541225e-01 3.53606716e-01 3.54673839e-01 3.55742595e-01 + 3.56812983e-01 3.57885003e-01 3.58958655e-01 3.60033939e-01 3.61110853e-01 + 3.62189399e-01 3.63269575e-01 3.64351382e-01 3.65434820e-01 3.66519887e-01 + 3.67606584e-01 3.68694911e-01 3.69784868e-01 3.70876453e-01 3.71969667e-01 + 3.73064510e-01 3.74160981e-01 3.75259081e-01 3.76358808e-01 3.77460163e-01 + 3.78563145e-01 3.79667755e-01 3.80773992e-01 3.81881855e-01 3.82991344e-01 + 3.84102460e-01 3.85215202e-01 3.86329570e-01 3.87445563e-01 3.88563181e-01 + 3.89682424e-01 3.90803292e-01 3.91925784e-01 3.93049901e-01 3.94175642e-01 + 3.95303006e-01 3.96431994e-01 3.97562605e-01 3.98694839e-01 3.99828696e-01 + 4.00964175e-01 4.02101276e-01 4.03240000e-01 4.04380345e-01 4.05522312e-01 + 4.06665899e-01 4.07811108e-01 4.08957938e-01 4.10106388e-01 4.11256458e-01 + 4.12408148e-01 4.13561458e-01 4.14716388e-01 4.15872936e-01 4.17031104e-01 + 4.18190890e-01 4.19352295e-01 4.20515317e-01 4.21679958e-01 4.22846216e-01 + 4.24014092e-01 4.25183585e-01 4.26354695e-01 4.27527421e-01 4.28701764e-01 + 4.29877723e-01 4.31055298e-01 4.32234488e-01 4.33415294e-01 4.34597715e-01 + 4.35781751e-01 4.36967401e-01 4.38154665e-01 4.39343544e-01 4.40534036e-01 + 4.41726142e-01 4.42919861e-01 4.44115193e-01 4.45312138e-01 4.46510695e-01 + 4.47710864e-01 4.48912645e-01 4.50116038e-01 4.51321043e-01 4.52527658e-01 + 4.53735885e-01 4.54945722e-01 4.56157169e-01 4.57370226e-01 4.58584894e-01 + 4.59801170e-01 4.61019056e-01 4.62238551e-01 4.63459655e-01 4.64682367e-01 + 4.65906688e-01 4.67132616e-01 4.68360152e-01 4.69589295e-01 4.70820046e-01 + 4.72052403e-01 4.73286367e-01 4.74521937e-01 4.75759113e-01 4.76997895e-01 + 4.78238283e-01 4.79480276e-01 4.80723873e-01 4.81969076e-01 4.83215882e-01 + 4.84464293e-01 4.85714308e-01 4.86965926e-01 4.88219148e-01 4.89473972e-01 + 4.90730400e-01 4.91988430e-01 4.93248062e-01 4.94509296e-01 4.95772131e-01 + 4.97036568e-01 4.98302606e-01 4.99570245e-01 5.00839485e-01 5.02110324e-01 + 5.03382764e-01 5.04656804e-01 5.05932442e-01 5.07209680e-01 5.08488517e-01 + 5.09768953e-01 5.11050986e-01 5.12334618e-01 5.13619847e-01 5.14906674e-01 + 5.16195098e-01 5.17485119e-01 5.18776737e-01 5.20069951e-01 5.21364761e-01 + 5.22661167e-01 5.23959168e-01 5.25258764e-01 5.26559955e-01 5.27862741e-01 + 5.29167122e-01 5.30473096e-01 5.31780664e-01 5.33089826e-01 5.34400580e-01 + 5.35712928e-01 5.37026868e-01 5.38342401e-01 5.39659526e-01 5.40978242e-01 + 5.42298550e-01 5.43620449e-01 5.44943939e-01 5.46269020e-01 5.47595691e-01 + 5.48923952e-01 5.50253802e-01 5.51585242e-01 5.52918272e-01 5.54252890e-01 + 5.55589096e-01 5.56926891e-01 5.58266274e-01 5.59607245e-01 5.60949803e-01 + 5.62293948e-01 5.63639680e-01 5.64986999e-01 5.66335903e-01 5.67686394e-01 + 5.69038470e-01 5.70392132e-01 5.71747378e-01 5.73104210e-01 5.74462626e-01 + 5.75822626e-01 5.77184210e-01 5.78547377e-01 5.79912128e-01 5.81278461e-01 + 5.82646378e-01 5.84015876e-01 5.85386957e-01 5.86759620e-01 5.88133864e-01 + 5.89509689e-01 5.90887095e-01 5.92266082e-01 5.93646649e-01 5.95028796e-01 + 5.96412522e-01 5.97797828e-01 5.99184713e-01 6.00573177e-01 6.01963219e-01 + 6.03354840e-01 6.04748038e-01 6.06142814e-01 6.07539167e-01 6.08937097e-01 + 6.10336603e-01 6.11737686e-01 6.13140346e-01 6.14544580e-01 6.15950391e-01 + 6.17357776e-01 6.18766736e-01 6.20177271e-01 6.21589379e-01 6.23003062e-01 + 6.24418319e-01 6.25835148e-01 6.27253551e-01 6.28673526e-01 6.30095073e-01 + 6.31518193e-01 6.32942884e-01 6.34369147e-01 6.35796981e-01 6.37226386e-01 + 6.38657361e-01 6.40089906e-01 6.41524022e-01 6.42959706e-01 6.44396960e-01 + 6.45835783e-01 6.47276175e-01 6.48718135e-01 6.50161663e-01 6.51606758e-01 + 6.53053421e-01 6.54501651e-01 6.55951448e-01 6.57402811e-01 6.58855740e-01 + 6.60310236e-01 6.61766296e-01 6.63223922e-01 6.64683112e-01 6.66143868e-01 + 6.67606187e-01 6.69070070e-01 6.70535517e-01 6.72002527e-01 6.73471100e-01 + 6.74941236e-01 6.76412934e-01 6.77886194e-01 6.79361015e-01 6.80837398e-01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.65580254e-01 1.65563515e-01 1.65546741e-01 1.65529929e-01 1.65513082e-01 + 1.65496198e-01 1.65479277e-01 1.65462319e-01 1.65445324e-01 1.65428292e-01 + 1.65411223e-01 1.65394117e-01 1.65376974e-01 1.65359793e-01 1.65342574e-01 + 1.65325318e-01 1.65308025e-01 1.65290693e-01 1.65273323e-01 1.65255915e-01 + 1.65238469e-01 1.65220985e-01 1.65203462e-01 1.65185901e-01 1.65168301e-01 + 1.65150662e-01 1.65132985e-01 1.65115268e-01 1.65097513e-01 1.65079718e-01 + 1.65061884e-01 1.65044011e-01 1.65026098e-01 1.65008145e-01 1.64990153e-01 + 1.64972120e-01 1.64954048e-01 1.64935936e-01 1.64917783e-01 1.64899591e-01 + 1.64881357e-01 1.64863083e-01 1.64844769e-01 1.64826414e-01 1.64808017e-01 + 1.64789580e-01 1.64771102e-01 1.64752582e-01 1.64734021e-01 1.64715418e-01 + 1.64696774e-01 1.64678088e-01 1.64659360e-01 1.64640590e-01 1.64621778e-01 + 1.64602924e-01 1.64584027e-01 1.64565088e-01 1.64546107e-01 1.64527082e-01 + 1.64508015e-01 1.64488905e-01 1.64469751e-01 1.64450555e-01 1.64431315e-01 + 1.64412031e-01 1.64392704e-01 1.64373334e-01 1.64353919e-01 1.64334460e-01 + 1.64314958e-01 1.64295411e-01 1.64275819e-01 1.64256183e-01 1.64236503e-01 + 1.64216777e-01 1.64197007e-01 1.64177192e-01 1.64157331e-01 1.64137425e-01 + 1.64117474e-01 1.64097477e-01 1.64077435e-01 1.64057346e-01 1.64037212e-01 + 1.64017032e-01 1.63996805e-01 1.63976532e-01 1.63956212e-01 1.63935846e-01 + 1.63915433e-01 1.63894973e-01 1.63874465e-01 1.63853911e-01 1.63833309e-01 + 1.63812660e-01 1.63791963e-01 1.63771218e-01 1.63750426e-01 1.63729585e-01 + 1.63708696e-01 1.63687759e-01 1.63666773e-01 1.63645738e-01 1.63624655e-01 + 1.63603523e-01 1.63582341e-01 1.63561111e-01 1.63539831e-01 1.63518501e-01 + 1.63497122e-01 1.63475693e-01 1.63454214e-01 1.63432685e-01 1.63411106e-01 + 1.63389476e-01 1.63367795e-01 1.63346064e-01 1.63324282e-01 1.63302449e-01 + 1.63280565e-01 1.63258629e-01 1.63236642e-01 1.63214603e-01 1.63192512e-01 + 1.63170369e-01 1.63148174e-01 1.63125927e-01 1.63103628e-01 1.63081275e-01 + 1.63058870e-01 1.63036412e-01 1.63013901e-01 1.62991337e-01 1.62968719e-01 + 1.62946048e-01 1.62923323e-01 1.62900544e-01 1.62877710e-01 1.62854823e-01 + 1.62831881e-01 1.62808885e-01 1.62785834e-01 1.62762728e-01 1.62739567e-01 + 1.62716350e-01 1.62693078e-01 1.62669751e-01 1.62646368e-01 1.62622929e-01 + 1.62599433e-01 1.62575882e-01 1.62552274e-01 1.62528609e-01 1.62504888e-01 + 1.62481109e-01 1.62457274e-01 1.62433381e-01 1.62409431e-01 1.62385423e-01 + 1.62361357e-01 1.62337233e-01 1.62313050e-01 1.62288810e-01 1.62264510e-01 + 1.62240152e-01 1.62215735e-01 1.62191259e-01 1.62166724e-01 1.62142129e-01 + 1.62117474e-01 1.62092759e-01 1.62067985e-01 1.62043150e-01 1.62018255e-01 + 1.61993299e-01 1.61968282e-01 1.61943204e-01 1.61918065e-01 1.61892865e-01 + 1.61867603e-01 1.61842279e-01 1.61816893e-01 1.61791445e-01 1.61765935e-01 + 1.61740362e-01 1.61714726e-01 1.61689028e-01 1.61663266e-01 1.61637441e-01 + 1.61611552e-01 1.61585600e-01 1.61559583e-01 1.61533503e-01 1.61507358e-01 + 1.61481148e-01 1.61454874e-01 1.61428535e-01 1.61402130e-01 1.61375660e-01 + 1.61349125e-01 1.61322523e-01 1.61295856e-01 1.61269123e-01 1.61242323e-01 + 1.61215456e-01 1.61188522e-01 1.61161522e-01 1.61134454e-01 1.61107319e-01 + 1.61080115e-01 1.61052844e-01 1.61025505e-01 1.60998098e-01 1.60970621e-01 + 1.60943076e-01 1.60915462e-01 1.60887779e-01 1.60860026e-01 1.60832204e-01 + 1.60804311e-01 1.60776349e-01 1.60748316e-01 1.60720212e-01 1.60692038e-01 + 1.60663792e-01 1.60635475e-01 1.60607087e-01 1.60578627e-01 1.60550095e-01 + 1.60521491e-01 1.60492814e-01 1.60464065e-01 1.60435242e-01 1.60406347e-01 + 1.60377378e-01 1.60348335e-01 1.60319219e-01 1.60290028e-01 1.60260764e-01 + 1.60231424e-01 1.60202010e-01 1.60172520e-01 1.60142955e-01 1.60113315e-01 + 1.60083599e-01 1.60053807e-01 1.60023938e-01 1.59993993e-01 1.59963971e-01 + 1.59933872e-01 1.59903696e-01 1.59873442e-01 1.59843110e-01 1.59812700e-01 + 1.59782212e-01 1.59751645e-01 1.59720999e-01 1.59690274e-01 1.59659470e-01 + 1.59628586e-01 1.59597622e-01 1.59566578e-01 1.59535454e-01 1.59504249e-01 + 1.59472963e-01 1.59441595e-01 1.59410146e-01 1.59378616e-01 1.59347003e-01 + 1.59315308e-01 1.59283531e-01 1.59251670e-01 1.59219726e-01 1.59187699e-01 + 1.59155589e-01 1.59123394e-01 1.59091115e-01 1.59058751e-01 1.59026303e-01 + 1.58993770e-01 1.58961151e-01 1.58928446e-01 1.58895656e-01 1.58862779e-01 + 1.58829816e-01 1.58796766e-01 1.58763628e-01 1.58730404e-01 1.58697092e-01 + 1.58663691e-01 1.58630203e-01 1.58596625e-01 1.58562959e-01 1.58529204e-01 + 1.58495359e-01 1.58461425e-01 1.58427400e-01 1.58393285e-01 1.58359079e-01 + 1.58324782e-01 1.58290394e-01 1.58255915e-01 1.58221343e-01 1.58186679e-01 + 1.58151923e-01 1.58117073e-01 1.58082131e-01 1.58047095e-01 1.58011965e-01 + 1.57976741e-01 1.57941422e-01 1.57906009e-01 1.57870501e-01 1.57834897e-01 + 1.57799197e-01 1.57763402e-01 1.57727510e-01 1.57691521e-01 1.57655435e-01 + 1.57619252e-01 1.57582971e-01 1.57546592e-01 1.57510115e-01 1.57473538e-01 + 1.57436863e-01 1.57400088e-01 1.57363214e-01 1.57326239e-01 1.57289164e-01 + 1.57251989e-01 1.57214712e-01 1.57177333e-01 1.57139853e-01 1.57102271e-01 + 1.57064586e-01 1.57026798e-01 1.56988907e-01 1.56950912e-01 1.56912813e-01 + 1.56874610e-01 1.56836302e-01 1.56797890e-01 1.56759371e-01 1.56720748e-01 + 1.56682017e-01 1.56643181e-01 1.56604237e-01 1.56565187e-01 1.56526028e-01 + 1.56486762e-01 1.56447387e-01 1.56407903e-01 1.56368311e-01 1.56328609e-01 + 1.56288796e-01 1.56248874e-01 1.56208841e-01 1.56168697e-01 1.56128441e-01 + 1.56088074e-01 1.56047594e-01 1.56007002e-01 1.55966297e-01 1.55925478e-01 + 1.55884546e-01 1.55843499e-01 1.55802338e-01 1.55761062e-01 1.55719670e-01 + 1.55678163e-01 1.55636539e-01 1.55594799e-01 1.55552941e-01 1.55510966e-01 + 1.55468873e-01 1.55426662e-01 1.55384333e-01 1.55341884e-01 1.55299315e-01 + 1.55256627e-01 1.55213818e-01 1.55170888e-01 1.55127838e-01 1.55084665e-01 + 1.55041370e-01 1.54997953e-01 1.54954413e-01 1.54910749e-01 1.54866961e-01 + 1.54823050e-01 1.54779013e-01 1.54734851e-01 1.54690564e-01 1.54646150e-01 + 1.54601610e-01 1.54556943e-01 1.54512149e-01 1.54467226e-01 1.54422176e-01 + 1.54376996e-01 1.54331687e-01 1.54286249e-01 1.54240680e-01 1.54194981e-01 + 1.54149150e-01 1.54103188e-01 1.54057094e-01 1.54010867e-01 1.53964507e-01 + 1.53918014e-01 1.53871386e-01 1.53824625e-01 1.53777728e-01 1.53730696e-01 + 1.53683527e-01 1.53636223e-01 1.53588781e-01 1.53541202e-01 1.53493486e-01 + 1.53445630e-01 1.53397636e-01 1.53349503e-01 1.53301229e-01 1.53252815e-01 + 1.53204260e-01 1.53155564e-01 1.53106726e-01 1.53057745e-01 1.53008621e-01 + 1.52959354e-01 1.52909943e-01 1.52860387e-01 1.52810686e-01 1.52760840e-01 + 1.52710847e-01 1.52660708e-01 1.52610421e-01 1.52559987e-01 1.52509404e-01 + 1.52458673e-01 1.52407792e-01 1.52356762e-01 1.52305580e-01 1.52254248e-01 + 1.52202764e-01 1.52151129e-01 1.52099340e-01 1.52047398e-01 1.51995302e-01 + 1.51943052e-01 1.51890647e-01 1.51838087e-01 1.51785370e-01 1.51732497e-01 + 1.51679467e-01 1.51626279e-01 1.51572932e-01 1.51519426e-01 1.51465761e-01 + 1.51411936e-01 1.51357950e-01 1.51303802e-01 1.51249493e-01 1.51195021e-01 + 1.51140386e-01 1.51085587e-01 1.51030624e-01 1.50975496e-01 1.50920202e-01 + 1.50864742e-01 1.50809116e-01 1.50753322e-01 1.50697360e-01 1.50641229e-01 + 1.50584929e-01 1.50528459e-01 1.50471818e-01 1.50415007e-01 1.50358023e-01 + 1.50300867e-01 1.50243538e-01 1.50186035e-01 1.50128358e-01 1.50070506e-01 + 1.50012478e-01 1.49954274e-01 1.49895893e-01 1.49837334e-01 1.49778596e-01 + 1.49719680e-01 1.49660584e-01 1.49601308e-01 1.49541850e-01 1.49482211e-01 + 1.49422390e-01 1.49362385e-01 1.49302197e-01 1.49241824e-01 1.49181266e-01 + 1.49120523e-01 1.49059593e-01 1.48998475e-01 1.48937170e-01 1.48875676e-01 + 1.48813992e-01 1.48752119e-01 1.48690055e-01 1.48627799e-01 1.48565351e-01 + 1.48502710e-01 1.48439876e-01 1.48376847e-01 1.48313623e-01 1.48250203e-01 + 1.48186586e-01 1.48122773e-01 1.48058761e-01 1.47994550e-01 1.47930139e-01 + 1.47865528e-01 1.47800717e-01 1.47735703e-01 1.47670486e-01 1.47605066e-01 + 1.47539442e-01 1.47473613e-01 1.47407579e-01 1.47341337e-01 1.47274889e-01 + 1.47208232e-01 1.47141367e-01 1.47074292e-01 1.47007006e-01 1.46939509e-01 + 1.46871800e-01 1.46803878e-01 1.46735743e-01 1.46667393e-01 1.46598827e-01 + 1.46530046e-01 1.46461047e-01 1.46391831e-01 1.46322396e-01 1.46252742e-01 + 1.46182867e-01 1.46112772e-01 1.46042454e-01 1.45971913e-01 1.45901149e-01 + 1.45830160e-01 1.45758946e-01 1.45687506e-01 1.45615839e-01 1.45543943e-01 + 1.45471819e-01 1.45399465e-01 1.45326880e-01 1.45254064e-01 1.45181016e-01 + 1.45107734e-01 1.45034218e-01 1.44960467e-01 1.44886480e-01 1.44812256e-01 + 1.44737795e-01 1.44663094e-01 1.44588154e-01 1.44512974e-01 1.44437552e-01 + 1.44361888e-01 1.44285981e-01 1.44209829e-01 1.44133432e-01 1.44056789e-01 + 1.43979899e-01 1.43902761e-01 1.43825374e-01 1.43747737e-01 1.43669849e-01 + 1.43591710e-01 1.43513317e-01 1.43434671e-01 1.43355770e-01 1.43276613e-01 + 1.43197200e-01 1.43117528e-01 1.43037599e-01 1.42957409e-01 1.42876959e-01 + 1.42796247e-01 1.42715272e-01 1.42634034e-01 1.42552530e-01 1.42470761e-01 + 1.42388726e-01 1.42306422e-01 1.42223850e-01 1.42141007e-01 1.42057894e-01 + 1.41974509e-01 1.41890851e-01 1.41806919e-01 1.41722711e-01 1.41638228e-01 + 1.41553467e-01 1.41468428e-01 1.41383109e-01 1.41297511e-01 1.41211630e-01 + 1.41125467e-01 1.41039020e-01 1.40952288e-01 1.40865271e-01 1.40777966e-01 + 1.40690373e-01 1.40602491e-01 1.40514319e-01 1.40425855e-01 1.40337099e-01 + 1.40248048e-01 1.40158703e-01 1.40069062e-01 1.39979124e-01 1.39888888e-01 + 1.39798352e-01 1.39707515e-01 1.39616377e-01 1.39524936e-01 1.39433191e-01 + 1.39341140e-01 1.39248784e-01 1.39156119e-01 1.39063146e-01 1.38969862e-01 + 1.38876268e-01 1.38782361e-01 1.38688141e-01 1.38593606e-01 1.38498755e-01 + 1.38403586e-01 1.38308099e-01 1.38212293e-01 1.38116166e-01 1.38019716e-01 + 1.37922943e-01 1.37825846e-01 1.37728423e-01 1.37630672e-01 1.37532594e-01 + 1.37434185e-01 1.37335446e-01 1.37236375e-01 1.37136970e-01 1.37037230e-01 + 1.36937155e-01 1.36836742e-01 1.36735991e-01 1.36634900e-01 1.36533467e-01 + 1.36431692e-01 1.36329574e-01 1.36227110e-01 1.36124300e-01 1.36021142e-01 + 1.35917635e-01 1.35813778e-01 1.35709568e-01 1.35605006e-01 1.35500089e-01 + 1.35394817e-01 1.35289187e-01 1.35183199e-01 1.35076851e-01 1.34970142e-01 + 1.34863070e-01 1.34755634e-01 1.34647833e-01 1.34539665e-01 1.34431128e-01 + 1.34322223e-01 1.34212946e-01 1.34103297e-01 1.33993274e-01 1.33882876e-01 + 1.33772101e-01 1.33660948e-01 1.33549416e-01 1.33437503e-01 1.33325207e-01 + 1.33212528e-01 1.33099463e-01 1.32986012e-01 1.32872172e-01 1.32757943e-01 + 1.32643323e-01 1.32528310e-01 1.32412904e-01 1.32297101e-01 1.32180902e-01 + 1.32064305e-01 1.31947307e-01 1.31829908e-01 1.31712106e-01 1.31593899e-01 + 1.31475287e-01 1.31356267e-01 1.31236838e-01 1.31116998e-01 1.30996746e-01 + 1.30876081e-01 1.30755001e-01 1.30633504e-01 1.30511588e-01 1.30389253e-01 + 1.30266497e-01 1.30143318e-01 1.30019714e-01 1.29895684e-01 1.29771227e-01 + 1.29646341e-01 1.29521024e-01 1.29395274e-01 1.29269091e-01 1.29142472e-01 + 1.29015417e-01 1.28887922e-01 1.28759987e-01 1.28631611e-01 1.28502791e-01 + 1.28373525e-01 1.28243813e-01 1.28113653e-01 1.27983043e-01 1.27851981e-01 + 1.27720466e-01 1.27588496e-01 1.27456070e-01 1.27323186e-01 1.27189841e-01 + 1.27056036e-01 1.26921767e-01 1.26787033e-01 1.26651833e-01 1.26516166e-01 + 1.26380028e-01 1.26243419e-01 1.26106337e-01 1.25968780e-01 1.25830747e-01 + 1.25692235e-01 1.25553244e-01 1.25413771e-01 1.25273815e-01 1.25133375e-01 + 1.24992448e-01 1.24851032e-01 1.24709127e-01 1.24566730e-01 1.24423839e-01 + 1.24280454e-01 1.24136571e-01 1.23992190e-01 1.23847309e-01 1.23701926e-01 + 1.23556040e-01 1.23409647e-01 1.23262748e-01 1.23115340e-01 1.22967422e-01 + 1.22818991e-01 1.22670046e-01 1.22520585e-01 1.22370607e-01 1.22220110e-01 + 1.22069091e-01 1.21917550e-01 1.21765484e-01 1.21612892e-01 1.21459773e-01 + 1.21306123e-01 1.21151942e-01 1.20997228e-01 1.20841979e-01 1.20686193e-01 + 1.20529869e-01 1.20373004e-01 1.20215598e-01 1.20057648e-01 1.19899152e-01 + 1.19740109e-01 1.19580518e-01 1.19420375e-01 1.19259680e-01 1.19098431e-01 + 1.18936626e-01 1.18774263e-01 1.18611341e-01 1.18447857e-01 1.18283810e-01 + 1.18119199e-01 1.17954021e-01 1.17788276e-01 1.17621960e-01 1.17455072e-01 + 1.17287611e-01 1.17119575e-01 1.16950961e-01 1.16781770e-01 1.16611997e-01 + 1.16441643e-01 1.16270705e-01 1.16099181e-01 1.15927070e-01 1.15754370e-01 + 1.15581079e-01 1.15407195e-01 1.15232718e-01 1.15057644e-01 1.14881973e-01 + 1.14705703e-01 1.14528831e-01 1.14351357e-01 1.14173279e-01 1.13994594e-01 + 1.13815302e-01 1.13635400e-01 1.13454887e-01 1.13273762e-01 1.13092022e-01 + 1.12909666e-01 1.12726692e-01 1.12543099e-01 1.12358884e-01 1.12174047e-01 + 1.11988586e-01 1.11802499e-01 1.11615785e-01 1.11428441e-01 1.11240467e-01 + 1.11051860e-01 1.10862619e-01 1.10672743e-01 1.10482230e-01 1.10291079e-01 + 1.10099287e-01 1.09906853e-01 1.09713777e-01 1.09520055e-01 1.09325688e-01 + 1.09130672e-01 1.08935008e-01 1.08738692e-01 1.08541725e-01 1.08344104e-01 + 1.08145827e-01 1.07946894e-01 1.07747304e-01 1.07547053e-01 1.07346142e-01 + 1.07144569e-01 1.06942333e-01 1.06739431e-01 1.06535863e-01 1.06331627e-01 + 1.06126723e-01 1.05921148e-01 1.05714902e-01 1.05507982e-01 1.05300389e-01 + 1.05092120e-01 1.04883175e-01 1.04673552e-01 1.04463250e-01 1.04252268e-01 + 1.04040604e-01 1.03828258e-01 1.03615228e-01 1.03401513e-01 1.03187113e-01 + 1.02972026e-01 1.02756250e-01 1.02539786e-01 1.02322631e-01 1.02104785e-01 + 1.01886248e-01 1.01667017e-01 1.01447092e-01 1.01226473e-01 1.01005158e-01 + 1.00783146e-01 1.00560436e-01 1.00337028e-01 1.00112922e-01 9.98881150e-02 + 9.96626076e-02 9.94363989e-02 9.92094881e-02 9.89818746e-02 9.87535577e-02 + 9.85245367e-02 9.82948112e-02 9.80643804e-02 9.78332440e-02 9.76014013e-02 + 9.73688518e-02 9.71355952e-02 9.69016310e-02 9.66669588e-02 9.64315783e-02 + 9.61954891e-02 9.59586908e-02 9.57211834e-02 9.54829664e-02 9.52440398e-02 + 9.50044033e-02 9.47640568e-02 9.45230003e-02 9.42812335e-02 9.40387567e-02 + 9.37955696e-02 9.35516725e-02 9.33070653e-02 9.30617482e-02 9.28157214e-02 + 9.25689850e-02 9.23215393e-02 9.20733846e-02 9.18245212e-02 9.15749495e-02 + 9.13246699e-02 9.10736827e-02 9.08219886e-02 9.05695880e-02 9.03164816e-02 + 9.00626699e-02 8.98081536e-02 8.95529334e-02 8.92970102e-02 8.90403847e-02 + 8.87830577e-02 8.85250303e-02 8.82663032e-02 8.80068776e-02 8.77467546e-02 + 8.74859351e-02 8.72244204e-02 8.69622117e-02 8.66993103e-02 8.64357174e-02 + 8.61714345e-02 8.59064630e-02 8.56408044e-02 8.53744602e-02 8.51074320e-02 + 8.48397215e-02 8.45713304e-02 8.43022605e-02 8.40325136e-02 8.37620916e-02 + 8.34909965e-02 8.32192302e-02 8.29467950e-02 8.26736929e-02 8.23999262e-02 + 8.21254970e-02 8.18504079e-02 8.15746611e-02 8.12982592e-02 8.10212047e-02 + 8.07435002e-02 8.04651484e-02 8.01861521e-02 7.99065141e-02 7.96262372e-02 + 7.93453246e-02 7.90637791e-02 7.87816039e-02 7.84988023e-02 7.82153774e-02 + 7.79313327e-02 7.76466715e-02 7.73613974e-02 7.70755139e-02 7.67890246e-02 + 7.65019334e-02 7.62142440e-02 7.59259604e-02 7.56370865e-02 7.53476263e-02 + 7.50575841e-02 7.47669641e-02 7.44757706e-02 7.41840079e-02 7.38916807e-02 + 7.35987934e-02 7.33053507e-02 7.30113575e-02 7.27168185e-02 7.24217387e-02 + 7.21261231e-02 7.18299768e-02 7.15333051e-02 7.12361133e-02 7.09384067e-02 + 7.06401909e-02 7.03414715e-02 7.00422541e-02 6.97425446e-02 6.94423488e-02 + 6.91416728e-02 6.88405225e-02 6.85389043e-02 6.82368244e-02 6.79342891e-02 + 6.76313050e-02 6.73278787e-02 6.70240169e-02 6.67197264e-02 6.64150140e-02 + 6.61098869e-02 6.58043520e-02 6.54984168e-02 6.51920884e-02 6.48853744e-02 + 6.45782823e-02 6.42708198e-02 6.39629946e-02 6.36548146e-02 6.33462879e-02 + 6.30374225e-02 6.27282267e-02 6.24187088e-02 6.21088773e-02 6.17987406e-02 + 6.14883076e-02 6.11775870e-02 6.08665877e-02 6.05553188e-02 6.02437893e-02 + 5.99320086e-02 5.96199860e-02 5.93077311e-02 5.89952534e-02 5.86825627e-02 + 5.83696689e-02 5.80565818e-02 5.77433118e-02 5.74298688e-02 5.71162634e-02 + 5.68025058e-02 5.64886069e-02 5.61745771e-02 5.58604274e-02 5.55461687e-02 + 5.52318121e-02 5.49173687e-02 5.46028499e-02 5.42882672e-02 5.39736321e-02 + 5.36589562e-02 5.33442514e-02 5.30295296e-02 5.27148029e-02 5.24000835e-02 + 5.20853836e-02 5.17707158e-02 5.14560924e-02 5.11415263e-02 5.08270302e-02 + 5.05126170e-02 5.01982998e-02 4.98840918e-02 4.95700061e-02 4.92560564e-02 + 4.89422560e-02 4.86286186e-02 4.83151580e-02 4.80018882e-02 4.76888231e-02 + 4.73759769e-02 4.70633638e-02 4.67509982e-02 4.64388946e-02 4.61270676e-02 + 4.58155320e-02 4.55043026e-02 4.51933944e-02 4.48828225e-02 4.45726020e-02 + 4.42627483e-02 4.39532767e-02 4.36442030e-02 4.33355426e-02 4.30273114e-02 + 4.27195253e-02 4.24122002e-02 4.21053521e-02 4.17989974e-02 4.14931524e-02 + 4.11878333e-02 4.08830568e-02 4.05788395e-02 4.02751981e-02 3.99721494e-02 + 3.96697104e-02 3.93678979e-02 3.90667293e-02 3.87662217e-02 3.84663923e-02 + 3.81672586e-02 3.78688381e-02 3.75711484e-02 3.72742070e-02 3.69780319e-02 + 3.66826407e-02 3.63880515e-02 3.60942822e-02 3.58013509e-02 3.55092758e-02 + 3.52180750e-02 3.49277670e-02 3.46383700e-02 3.43499026e-02 3.40623832e-02 + 3.37758304e-02 3.34902629e-02 3.32056994e-02 3.29221586e-02 3.26396593e-02 + 3.23582205e-02 3.20778611e-02 3.17986000e-02 3.15204562e-02 3.12434489e-02 + 3.09675972e-02 3.06929202e-02 3.04194370e-02 3.01471670e-02 2.98761294e-02 + 2.96063435e-02 2.93378286e-02 2.90706040e-02 2.88046891e-02 2.85401033e-02 + 2.82768660e-02 2.80149966e-02 2.77545145e-02 2.74954392e-02 2.72377901e-02 + 2.69815866e-02 2.67268481e-02 2.64735941e-02 2.62218441e-02 2.59716174e-02 + 2.57229334e-02 2.54758115e-02 2.52302711e-02 2.49863315e-02 2.47440120e-02 + 2.45033320e-02 2.42643105e-02 2.40269669e-02 2.37913204e-02 2.35573900e-02 + 2.33251949e-02 2.30947540e-02 2.28660864e-02 2.26392110e-02 2.24141466e-02 + 2.21909120e-02 2.19695260e-02 2.17500072e-02 2.15323742e-02 2.13166455e-02 + 2.11028396e-02 2.08909747e-02 2.06810691e-02 2.04731411e-02 2.02672086e-02 + 2.00632896e-02 1.98614019e-02 1.96615634e-02 1.94637917e-02 1.92681043e-02 + 1.90745186e-02 1.88830519e-02 1.86937213e-02 1.85065440e-02 1.83215368e-02 + 1.81387165e-02 1.79580998e-02 1.77797030e-02 1.76035426e-02 1.74296348e-02 + 1.72579956e-02 1.70886409e-02 1.69215864e-02 1.67568478e-02 1.65944402e-02 + 1.64343791e-02 1.62766795e-02 1.61213562e-02 1.59684240e-02 1.58178973e-02 + 1.56697904e-02 1.55241176e-02 1.53808927e-02 1.52401295e-02 1.51018416e-02 + 1.49660422e-02 1.48327446e-02 1.47019616e-02 1.45737059e-02 1.44479901e-02 + 1.43248264e-02 1.42042269e-02 1.40862035e-02 1.39707676e-02 1.38579308e-02 + 1.37477041e-02 1.36400985e-02 1.35351246e-02 1.34327929e-02 1.33331135e-02 + 1.32360964e-02 1.31417514e-02 1.30500877e-02 1.29611147e-02 1.28748412e-02 + 1.27912760e-02 1.27104274e-02 1.26323037e-02 1.25569127e-02 1.24842620e-02 + 1.24143590e-02 1.23472109e-02 1.22828243e-02 1.22212060e-02 1.21623621e-02 + 1.21062986e-02 1.20530213e-02 1.20025356e-02 1.19548467e-02 1.19099595e-02 + 1.18678785e-02 1.18286081e-02 1.17921522e-02 1.17585148e-02 1.17276991e-02 + 1.16997084e-02 1.16745455e-02 1.16522130e-02 1.16327133e-02 1.16160484e-02 + 1.16022198e-02 1.15912292e-02 1.15830776e-02 1.15777658e-02 1.15752944e-02 + 1.15756637e-02 1.15788736e-02 1.15849238e-02 1.15938137e-02 1.16055423e-02 + 1.16201084e-02 1.16375106e-02 1.16577471e-02 1.16808156e-02 1.17067140e-02 + 1.17354395e-02 1.17669892e-02 1.18013598e-02 1.18385478e-02 1.18785493e-02 + 1.19213604e-02 1.19669765e-02 1.20153931e-02 1.20666051e-02 1.21206073e-02 + 1.21773942e-02 1.22369601e-02 1.22992988e-02 1.23644040e-02 1.24322691e-02 + 1.25028871e-02 1.25762510e-02 1.26523533e-02 1.27311863e-02 1.28127420e-02 + 1.28970121e-02 1.29839883e-02 1.30736618e-02 1.31660235e-02 1.32610642e-02 + 1.33587744e-02 1.34591444e-02 1.35621641e-02 1.36678232e-02 1.37761113e-02 + 1.38870177e-02 1.40005314e-02 1.41166411e-02 1.42353355e-02 1.43566028e-02 + 1.44804312e-02 1.46068085e-02 1.47357225e-02 1.48671606e-02 1.50011099e-02 + 1.51375576e-02 1.52764904e-02 1.54178949e-02 1.55617576e-02 1.57080646e-02 + 1.58568020e-02 1.60079555e-02 1.61615108e-02 1.63174534e-02 1.64757685e-02 + 1.66364411e-02 1.67994562e-02 1.69647985e-02 1.71324525e-02 1.73024027e-02 + 1.74746333e-02 1.76491283e-02 1.78258717e-02 1.80048472e-02 1.81860385e-02 + 1.83694290e-02 1.85550020e-02 1.87427408e-02 1.89326284e-02 1.91246477e-02 + 1.93187815e-02 1.95150125e-02 1.97133233e-02 1.99136963e-02 2.01161138e-02 + 2.03205580e-02 2.05270111e-02 2.07354551e-02 2.09458718e-02 2.11582431e-02 + 2.13725507e-02 2.15887763e-02 2.18069014e-02 2.20269075e-02 2.22487759e-02 + 2.24724880e-02 2.26980251e-02 2.29253683e-02 2.31544988e-02 2.33853976e-02 + 2.36180458e-02 2.38524242e-02 2.40885138e-02 2.43262955e-02 2.45657500e-02 + 2.48068582e-02 2.50496007e-02 2.52939584e-02 2.55399119e-02 2.57874418e-02 + 2.60365287e-02 2.62871534e-02 2.65392963e-02 2.67929381e-02 2.70480593e-02 + 2.73046406e-02 2.75626624e-02 2.78221053e-02 2.80829500e-02 2.83451769e-02 + 2.86087667e-02 2.88736999e-02 2.91399572e-02 2.94075191e-02 2.96763664e-02 + 2.99464796e-02 3.02178395e-02 3.04904267e-02 3.07642221e-02 3.10392064e-02 + 3.13153605e-02 3.15926651e-02 3.18711011e-02 3.21506496e-02 3.24312916e-02 + 3.27130079e-02 3.29957798e-02 3.32795883e-02 3.35644146e-02 3.38502401e-02 + 3.41370460e-02 3.44248137e-02 3.47135246e-02 3.50031602e-02 3.52937021e-02 + 3.55851319e-02 3.58774314e-02 3.61705823e-02 3.64645665e-02 3.67593660e-02 + 3.70549627e-02 3.73513388e-02 3.76484764e-02 3.79463579e-02 3.82449655e-02 + 3.85442817e-02 3.88442891e-02 3.91449703e-02 3.94463079e-02 3.97482849e-02 + 4.00508841e-02 4.03540886e-02 4.06578813e-02 4.09622456e-02 4.12671648e-02 + 4.15726221e-02 4.18786013e-02 4.21850858e-02 4.24920594e-02 4.27995060e-02 + 4.31074094e-02 4.34157537e-02 4.37245230e-02 4.40337017e-02 4.43432741e-02 + 4.46532246e-02 4.49635380e-02 4.52741988e-02 4.55851920e-02 4.58965024e-02 + 4.62081152e-02 4.65200155e-02 4.68321886e-02 4.71446199e-02 4.74572950e-02 + 4.77701996e-02 4.80833192e-02 4.83966400e-02 4.87101479e-02 4.90238289e-02 + 4.93376695e-02 4.96516559e-02 4.99657746e-02 5.02800123e-02 5.05943557e-02 + 5.09087917e-02 5.12233073e-02 5.15378895e-02 5.18525256e-02 5.21672030e-02 + 5.24819092e-02 5.27966317e-02 5.31113583e-02 5.34260768e-02 5.37407752e-02 + 5.40554416e-02 5.43700642e-02 5.46846314e-02 5.49991317e-02 5.53135536e-02 + 5.56278858e-02 5.59421172e-02 5.62562368e-02 5.65702336e-02 5.68840968e-02 + 5.71978158e-02 5.75113800e-02 5.78247790e-02 5.81380025e-02 5.84510402e-02 + 5.87638822e-02 5.90765185e-02 5.93889392e-02 5.97011346e-02 6.00130952e-02 + 6.03248115e-02 6.06362741e-02 6.09474738e-02 6.12584015e-02 6.15690482e-02 + 6.18794050e-02 6.21894631e-02 6.24992140e-02 6.28086489e-02 6.31177596e-02 + 6.34265377e-02 6.37349751e-02 6.40430636e-02 6.43507952e-02 6.46581622e-02 + 6.49651567e-02 6.52717712e-02 6.55779981e-02 6.58838299e-02 6.61892594e-02 + 6.64942794e-02 6.67988828e-02 6.71030625e-02 6.74068117e-02 6.77101237e-02 + 6.80129917e-02 6.83154092e-02 6.86173697e-02 6.89188669e-02 6.92198944e-02 + 6.95204462e-02 6.98205161e-02 7.01200982e-02 7.04191867e-02 7.07177757e-02 + 7.10158596e-02 7.13134329e-02 7.16104900e-02 7.19070256e-02 7.22030344e-02 + 7.24985112e-02 7.27934509e-02 7.30878484e-02 7.33816990e-02 7.36749977e-02 + 7.39677398e-02 7.42599207e-02 7.45515358e-02 7.48425807e-02 7.51330509e-02 + 7.54229421e-02 7.57122502e-02 7.60009711e-02 7.62891006e-02 7.65766348e-02 + 7.68635699e-02 7.71499020e-02 7.74356274e-02 7.77207425e-02 7.80052438e-02 + 7.82891277e-02 7.85723908e-02 7.88550299e-02 7.91370416e-02 7.94184229e-02 + 7.96991705e-02 7.99792815e-02 8.02587530e-02 8.05375820e-02 8.08157657e-02 + 8.10933015e-02 8.13701866e-02 8.16464184e-02 8.19219944e-02 8.21969122e-02 + 8.24711693e-02 8.27447635e-02 8.30176924e-02 8.32899539e-02 8.35615458e-02 + 8.38324661e-02 8.41027128e-02 8.43722839e-02 8.46411775e-02 8.49093918e-02 + 8.51769250e-02 8.54437756e-02 8.57099417e-02 8.59754218e-02 8.62402144e-02 + 8.65043180e-02 8.67677312e-02 8.70304527e-02 8.72924810e-02 8.75538151e-02 + 8.78144536e-02 8.80743954e-02 8.83336395e-02 8.85921847e-02 8.88500302e-02 + 8.91071748e-02 8.93636178e-02 8.96193583e-02 8.98743956e-02 9.01287287e-02 + 9.03823571e-02 9.06352801e-02 9.08874971e-02 9.11390074e-02 9.13898107e-02 + 9.16399063e-02 9.18892939e-02 9.21379731e-02 9.23859434e-02 9.26332047e-02 + 9.28797566e-02 9.31255989e-02 9.33707315e-02 9.36151540e-02 9.38588666e-02 + 9.41018690e-02 9.43441612e-02 9.45857433e-02 9.48266152e-02 9.50667771e-02 + 9.53062290e-02 9.55449711e-02 9.57830036e-02 9.60203266e-02 9.62569405e-02 + 9.64928454e-02 9.67280417e-02 9.69625298e-02 9.71963100e-02 9.74293827e-02 + 9.76617483e-02 9.78934074e-02 9.81243603e-02 9.83546076e-02 9.85841499e-02 + 9.88129878e-02 9.90411218e-02 9.92685525e-02 9.94952807e-02 9.97213070e-02 + 9.99466321e-02 1.00171257e-01 1.00395182e-01 1.00618408e-01 1.00840936e-01 + 1.01062766e-01 1.01283901e-01 1.01504340e-01 1.01724084e-01 1.01943134e-01 + 1.02161492e-01 1.02379158e-01 1.02596133e-01 1.02812418e-01 1.03028014e-01 + 1.03242923e-01 1.03457145e-01 1.03670682e-01 1.03883534e-01 1.04095702e-01 + 1.04307189e-01 1.04517994e-01 1.04728119e-01 1.04937566e-01 1.05146335e-01 + 1.05354428e-01 1.05561846e-01 1.05768590e-01 1.05974662e-01 1.06180062e-01 + 1.06384793e-01 1.06588855e-01 1.06792249e-01 1.06994978e-01 1.07197042e-01 + 1.07398443e-01 1.07599182e-01 1.07799261e-01 1.07998680e-01 1.08197442e-01 + 1.08395548e-01 1.08592999e-01 1.08789797e-01 1.08985943e-01 1.09181439e-01 + 1.09376286e-01 1.09570485e-01 1.09764039e-01 1.09956948e-01 1.10149214e-01 + 1.10340840e-01 1.10531825e-01 1.10722172e-01 1.10911883e-01 1.11100959e-01 + 1.11289401e-01 1.11477211e-01 1.11664391e-01 1.11850942e-01 1.12036866e-01 + 1.12222165e-01 1.12406840e-01 1.12590892e-01 1.12774325e-01 1.12957138e-01 + 1.13139333e-01 1.13320913e-01 1.13501880e-01 1.13682233e-01 1.13861976e-01 + 1.14041111e-01 1.14219637e-01 1.14397559e-01 1.14574876e-01 1.14751591e-01 + 1.14927705e-01 1.15103221e-01 1.15278139e-01 1.15452462e-01 1.15626191e-01 + 1.15799328e-01 1.15971875e-01 1.16143834e-01 1.16315205e-01 1.16485991e-01 + 1.16656194e-01 1.16825815e-01 1.16994856e-01 1.17163320e-01 1.17331206e-01 + 1.17498518e-01 1.17665257e-01 1.17831424e-01 1.17997022e-01 1.18162053e-01 + 1.18326517e-01 1.18490417e-01 1.18653754e-01 1.18816531e-01 1.18978749e-01 + 1.19140409e-01 1.19301514e-01 1.19462065e-01 1.19622064e-01 1.19781513e-01 + 1.19940414e-01 1.20098767e-01 1.20256576e-01 1.20413841e-01 1.20570565e-01 + 1.20726749e-01 1.20882395e-01 1.21037505e-01 1.21192080e-01 1.21346123e-01 + 1.21499635e-01 1.21652617e-01 1.21805072e-01 1.21957001e-01 1.22108406e-01 + 1.22259289e-01 1.22409651e-01 1.22559495e-01 1.22708821e-01 1.22857632e-01 + 1.23005930e-01 1.23153715e-01 1.23300991e-01 1.23447758e-01 1.23594019e-01 + 1.23739774e-01 1.23885027e-01 1.24029777e-01 1.24174028e-01 1.24317781e-01 + 1.24461038e-01 1.24603800e-01 1.24746069e-01 1.24887847e-01 1.25029136e-01 + 1.25169936e-01 1.25310251e-01 1.25450081e-01 1.25589428e-01 1.25728294e-01 + 1.25866681e-01 1.26004590e-01 1.26142024e-01 1.26278983e-01 1.26415469e-01 + 1.26551484e-01 1.26687030e-01 1.26822109e-01 1.26956721e-01 1.27090870e-01 + 1.27224555e-01 1.27357780e-01 1.27490545e-01 1.27622852e-01 1.27754704e-01 + 1.27886101e-01 1.28017045e-01 1.28147538e-01 1.28277582e-01 1.28407177e-01 + 1.28536327e-01 1.28665031e-01 1.28793293e-01 1.28921113e-01 1.29048493e-01 + 1.29175435e-01 1.29301941e-01 1.29428011e-01 1.29553648e-01 1.29678853e-01 + 1.29803627e-01 1.29927973e-01 1.30051892e-01 1.30175385e-01 1.30298454e-01 + 1.30421101e-01 1.30543327e-01 1.30665133e-01 1.30786522e-01 1.30907494e-01 + 1.31028051e-01 1.31148196e-01 1.31267929e-01 1.31387251e-01 1.31506165e-01 + 1.31624672e-01 1.31742773e-01 1.31860470e-01 1.31977765e-01 1.32094658e-01 + 1.32211152e-01 1.32327248e-01 1.32442947e-01 1.32558252e-01 1.32673162e-01 + 1.32787680e-01 1.32901808e-01 1.33015546e-01 1.33128897e-01 1.33241861e-01 + 1.33354441e-01 1.33466637e-01 1.33578451e-01 1.33689884e-01 1.33800939e-01 + 1.33911615e-01 1.34021916e-01 1.34131841e-01 1.34241394e-01 1.34350574e-01 + 1.34459383e-01 1.34567824e-01 1.34675896e-01 1.34783602e-01 1.34890944e-01 + 1.34997921e-01 1.35104536e-01 1.35210791e-01 1.35316685e-01 1.35422222e-01 + 1.35527402e-01 1.35632226e-01 1.35736697e-01 1.35840814e-01 1.35944580e-01 + 1.36047997e-01 1.36151064e-01 1.36253784e-01 1.36356158e-01 1.36458187e-01 + 1.36559873e-01 1.36661216e-01 1.36762219e-01 1.36862882e-01 1.36963207e-01 + 1.37063195e-01 1.37162847e-01 1.37262165e-01 1.37361150e-01 1.37459803e-01 + 1.37558126e-01 1.37656119e-01 1.37753784e-01 1.37851123e-01 1.37948136e-01 + 1.38044824e-01 1.38141190e-01 1.38237233e-01 1.38332957e-01 1.38428361e-01 + 1.38523446e-01 1.38618215e-01 1.38712668e-01 1.38806807e-01 1.38900633e-01 + 1.38994146e-01 1.39087349e-01 1.39180241e-01 1.39272826e-01 1.39365103e-01 + 1.39457074e-01 1.39548740e-01 1.39640102e-01 1.39731162e-01 1.39821920e-01 + 1.39912378e-01 1.40002537e-01 1.40092398e-01 1.40181961e-01 1.40271230e-01 + 1.40360203e-01 1.40448884e-01 1.40537272e-01 1.40625368e-01 1.40713175e-01 + 1.40800693e-01 1.40887923e-01 1.40974866e-01 1.41061523e-01 1.41147896e-01 + 1.41233986e-01 1.41319793e-01 1.41405319e-01 1.41490565e-01 1.41575532e-01 + 1.41660220e-01 1.41744632e-01 1.41828768e-01 1.41912628e-01 1.41996216e-01 + 1.42079530e-01 1.42162572e-01 1.42245344e-01 1.42327847e-01 1.42410081e-01 + 1.42492047e-01 1.42573747e-01 1.42655181e-01 1.42736351e-01 1.42817257e-01 + 1.42897901e-01 1.42978283e-01 1.43058405e-01 1.43138268e-01 1.43217872e-01 + 1.43297218e-01 1.43376309e-01 1.43455143e-01 1.43533723e-01 1.43612050e-01 + 1.43690124e-01 1.43767947e-01 1.43845519e-01 1.43922841e-01 1.43999914e-01 + 1.44076740e-01 1.44153319e-01 1.44229652e-01 1.44305740e-01 1.44381584e-01 + 1.44457185e-01 1.44532544e-01 1.44607662e-01 1.44682539e-01 1.44757177e-01 + 1.44831577e-01 1.44905739e-01 1.44979665e-01 1.45053355e-01 1.45126809e-01 + 1.45200031e-01 1.45273019e-01 1.45345774e-01 1.45418299e-01 1.45490593e-01 + 1.45562658e-01 1.45634494e-01 1.45706102e-01 1.45777484e-01 1.45848639e-01 + 1.45919569e-01 1.45990275e-01 1.46060758e-01 1.46131018e-01 1.46201056e-01 + 1.46270873e-01 1.46340470e-01 1.46409848e-01 1.46479008e-01 1.46547950e-01 + 1.46616675e-01 1.46685184e-01 1.46753479e-01 1.46821558e-01 1.46889425e-01 + 1.46957079e-01 1.47024520e-01 1.47091751e-01 1.47158772e-01 1.47225583e-01 + 1.47292185e-01 1.47358580e-01 1.47424768e-01 1.47490749e-01 1.47556524e-01 + 1.47622095e-01 1.47687462e-01 1.47752626e-01 1.47817587e-01 1.47882347e-01 + 1.19316516e-02 1.17837661e-02 1.16368916e-02 1.14910312e-02 1.13461881e-02 + 1.12023652e-02 1.10595657e-02 1.09177924e-02 1.07770486e-02 1.06373371e-02 + 1.04986608e-02 1.03610229e-02 1.02244262e-02 1.00888736e-02 9.95436796e-03 + 9.82091227e-03 9.68850936e-03 9.55716205e-03 9.42687318e-03 9.29764555e-03 + 9.16948195e-03 9.04238514e-03 8.91635788e-03 8.79140288e-03 8.66752287e-03 + 8.54472052e-03 8.42299850e-03 8.30235947e-03 8.18280604e-03 8.06434082e-03 + 7.94696640e-03 7.83068535e-03 7.71550020e-03 7.60141348e-03 7.48842769e-03 + 7.37654531e-03 7.26576880e-03 7.15610060e-03 7.04754311e-03 6.94009874e-03 + 6.83376985e-03 6.72855879e-03 6.62446789e-03 6.52149946e-03 6.41965576e-03 + 6.31893907e-03 6.21935162e-03 6.12089562e-03 6.02357326e-03 5.92738670e-03 + 5.83233810e-03 5.73842957e-03 5.64566320e-03 5.55404108e-03 5.46356524e-03 + 5.37423772e-03 5.28606051e-03 5.19903560e-03 5.11316493e-03 5.02845043e-03 + 4.94489402e-03 4.86249756e-03 4.78126291e-03 4.70119191e-03 4.62228636e-03 + 4.54454803e-03 4.46797870e-03 4.39258007e-03 4.31835387e-03 4.24530177e-03 + 4.17342543e-03 4.10272646e-03 4.03320649e-03 3.96486708e-03 3.89770979e-03 + 3.83173614e-03 3.76694764e-03 3.70334576e-03 3.64093194e-03 3.57970760e-03 + 3.51967415e-03 3.46083296e-03 3.40318535e-03 3.34673266e-03 3.29147617e-03 + 3.23741715e-03 3.18455682e-03 3.13289641e-03 3.08243708e-03 3.03318001e-03 + 2.98512631e-03 2.93827709e-03 2.89263342e-03 2.84819635e-03 2.80496690e-03 + 2.76294607e-03 2.72213481e-03 2.68253407e-03 2.64414475e-03 2.60696775e-03 + 2.57100391e-03 2.53625406e-03 2.50271900e-03 2.47039951e-03 2.43929633e-03 + 2.40941017e-03 2.38074173e-03 2.35329167e-03 2.32706061e-03 2.30204917e-03 + 2.27825792e-03 2.25568742e-03 2.23433817e-03 2.21421068e-03 2.19530540e-03 + 2.17762279e-03 2.16116324e-03 2.14592713e-03 2.13191482e-03 2.11912664e-03 + 2.10756286e-03 2.09722378e-03 2.08810961e-03 2.08022058e-03 2.07355687e-03 + 2.06811863e-03 2.06390598e-03 2.06091903e-03 2.05915784e-03 2.05862245e-03 + 2.05931288e-03 2.06122911e-03 2.06437109e-03 2.06873876e-03 2.07433201e-03 + 2.08115071e-03 2.08919471e-03 2.09846382e-03 2.10895782e-03 2.12067647e-03 + 2.13361950e-03 2.14778662e-03 2.16317748e-03 2.17979175e-03 2.19762903e-03 + 2.21668892e-03 2.23697097e-03 2.25847471e-03 2.28119965e-03 2.30514526e-03 + 2.33031099e-03 2.35669626e-03 2.38430046e-03 2.41312296e-03 2.44316308e-03 + 2.47442014e-03 2.50689342e-03 2.54058217e-03 2.57548561e-03 2.61160294e-03 + 2.64893333e-03 2.68747592e-03 2.72722982e-03 2.76819412e-03 2.81036787e-03 + 2.85375012e-03 2.89833986e-03 2.94413606e-03 2.99113769e-03 3.03934365e-03 + 3.08875285e-03 3.13936416e-03 3.19117640e-03 3.24418841e-03 3.29839896e-03 + 3.35380682e-03 3.41041071e-03 3.46820936e-03 3.52720143e-03 3.58738558e-03 + 3.64876043e-03 3.71132460e-03 3.77507665e-03 3.84001514e-03 3.90613858e-03 + 3.97344547e-03 4.04193428e-03 4.11160346e-03 4.18245143e-03 4.25447658e-03 + 4.32767727e-03 4.40205185e-03 4.47759865e-03 4.55431593e-03 4.63220199e-03 + 4.71125505e-03 4.79147333e-03 4.87285502e-03 4.95539830e-03 5.03910129e-03 + 5.12396213e-03 5.20997890e-03 5.29714966e-03 5.38547247e-03 5.47494535e-03 + 5.56556628e-03 5.65733324e-03 5.75024419e-03 5.84429703e-03 5.93948968e-03 + 6.03582001e-03 6.13328588e-03 6.23188511e-03 6.33161551e-03 6.43247487e-03 + 6.53446095e-03 6.63757148e-03 6.74180419e-03 6.84715676e-03 6.95362687e-03 + 7.06121216e-03 7.16991026e-03 7.27971878e-03 7.39063530e-03 7.50265737e-03 + 7.61578255e-03 7.73000833e-03 7.84533223e-03 7.96175172e-03 8.07926424e-03 + 8.19786724e-03 8.31755813e-03 8.43833428e-03 8.56019309e-03 8.68313189e-03 + 8.80714802e-03 8.93223879e-03 9.05840148e-03 9.18563337e-03 9.31393170e-03 + 9.44329371e-03 9.57371661e-03 9.70519759e-03 9.83773382e-03 9.97132246e-03 + 1.01059606e-02 1.02416455e-02 1.03783741e-02 1.05161435e-02 1.06549508e-02 + 1.07947931e-02 1.09356673e-02 1.10775705e-02 1.12204997e-02 1.13644517e-02 + 1.15094237e-02 1.16554125e-02 1.18024151e-02 1.19504282e-02 1.20994490e-02 + 1.22494741e-02 1.24005005e-02 1.25525250e-02 1.27055444e-02 1.28595555e-02 + 1.30145552e-02 1.31705401e-02 1.33275071e-02 1.34854528e-02 1.36443741e-02 + 1.38042677e-02 1.39651301e-02 1.41269582e-02 1.42897485e-02 1.44534978e-02 + 1.46182027e-02 1.47838598e-02 1.49504657e-02 1.51180170e-02 1.52865103e-02 + 1.54559422e-02 1.56263093e-02 1.57976080e-02 1.59698349e-02 1.61429866e-02 + 1.63170596e-02 1.64920502e-02 1.66679551e-02 1.68447707e-02 1.70224935e-02 + 1.72011198e-02 1.73806462e-02 1.75610691e-02 1.77423848e-02 1.79245899e-02 + 1.81076806e-02 1.82916533e-02 1.84765045e-02 1.86622305e-02 1.88488276e-02 + 1.90362922e-02 1.92246206e-02 1.94138091e-02 1.96038541e-02 1.97947518e-02 + 1.99864985e-02 2.01790905e-02 2.03725242e-02 2.05667957e-02 2.07619013e-02 + 2.09578372e-02 2.11545998e-02 2.13521852e-02 2.15505896e-02 2.17498093e-02 + 2.19498405e-02 2.21506794e-02 2.23523222e-02 2.25547650e-02 2.27580040e-02 + 2.29620355e-02 2.31668555e-02 2.33724603e-02 2.35788460e-02 2.37860087e-02 + 2.39939446e-02 2.42026499e-02 2.44121205e-02 2.46223528e-02 2.48333427e-02 + 2.50450864e-02 2.52575801e-02 2.54708198e-02 2.56848016e-02 2.58995216e-02 + 2.61149759e-02 2.63311606e-02 2.65480717e-02 2.67657054e-02 2.69840578e-02 + 2.72031248e-02 2.74229026e-02 2.76433871e-02 2.78645746e-02 2.80864610e-02 + 2.83090425e-02 2.85323149e-02 2.87562745e-02 2.89809172e-02 2.92062390e-02 + 2.94322361e-02 2.96589045e-02 2.98862402e-02 3.01142392e-02 3.03428976e-02 + 3.05722114e-02 3.08021766e-02 3.10327893e-02 3.12640455e-02 3.14959413e-02 + 3.17284726e-02 3.19616355e-02 3.21954260e-02 3.24298402e-02 3.26648740e-02 + 3.29005236e-02 3.31367848e-02 3.33736539e-02 3.36111267e-02 3.38491993e-02 + 3.40878677e-02 3.43271281e-02 3.45669763e-02 3.48074084e-02 3.50484206e-02 + 3.52900087e-02 3.55321689e-02 3.57748971e-02 3.60181895e-02 3.62620420e-02 + 3.65064508e-02 3.67514117e-02 3.69969210e-02 3.72429746e-02 3.74895686e-02 + 3.77366991e-02 3.79843621e-02 3.82325537e-02 3.84812698e-02 3.87305067e-02 + 3.89802604e-02 3.92305269e-02 3.94813024e-02 3.97325829e-02 3.99843644e-02 + 4.02366431e-02 4.04894151e-02 4.07426765e-02 4.09964234e-02 4.12506518e-02 + 4.15053579e-02 4.17605378e-02 4.20161876e-02 4.22723034e-02 4.25288815e-02 + 4.27859178e-02 4.30434086e-02 4.33013499e-02 4.35597380e-02 4.38185689e-02 + 4.40778389e-02 4.43375441e-02 4.45976807e-02 4.48582449e-02 4.51192328e-02 + 4.53806406e-02 4.56424645e-02 4.59047007e-02 4.61673455e-02 4.64303950e-02 + 4.66938455e-02 4.69576932e-02 4.72219342e-02 4.74865650e-02 4.77515816e-02 + 4.80169804e-02 4.82827576e-02 4.85489095e-02 4.88154324e-02 4.90823225e-02 + 4.93495761e-02 4.96171896e-02 4.98851592e-02 5.01534812e-02 5.04221520e-02 + 5.06911679e-02 5.09605252e-02 5.12302202e-02 5.15002494e-02 5.17706091e-02 + 5.20412956e-02 5.23123054e-02 5.25836347e-02 5.28552801e-02 5.31272378e-02 + 5.33995044e-02 5.36720762e-02 5.39449496e-02 5.42181211e-02 5.44915872e-02 + 5.47653442e-02 5.50393887e-02 5.53137171e-02 5.55883259e-02 5.58632116e-02 + 5.61383707e-02 5.64137997e-02 5.66894951e-02 5.69654535e-02 5.72416713e-02 + 5.75181451e-02 5.77948716e-02 5.80718471e-02 5.83490684e-02 5.86265320e-02 + 5.89042345e-02 5.91821725e-02 5.94603427e-02 5.97387415e-02 6.00173658e-02 + 6.02962120e-02 6.05752770e-02 6.08545573e-02 6.11340496e-02 6.14137506e-02 + 6.16936570e-02 6.19737655e-02 6.22540729e-02 6.25345758e-02 6.28152709e-02 + 6.30961552e-02 6.33772252e-02 6.36584778e-02 6.39399097e-02 6.42215178e-02 + 6.45032988e-02 6.47852496e-02 6.50673669e-02 6.53496477e-02 6.56320887e-02 + 6.59146868e-02 6.61974389e-02 6.64803419e-02 6.67633926e-02 6.70465880e-02 + 6.73299249e-02 6.76134004e-02 6.78970112e-02 6.81807545e-02 6.84646270e-02 + 6.87486259e-02 6.90327480e-02 6.93169904e-02 6.96013501e-02 6.98858240e-02 + 7.01704093e-02 7.04551029e-02 7.07399019e-02 7.10248033e-02 7.13098043e-02 + 7.15949019e-02 7.18800932e-02 7.21653753e-02 7.24507453e-02 7.27362004e-02 + 7.30217377e-02 7.33073544e-02 7.35930475e-02 7.38788144e-02 7.41646521e-02 + 7.44505580e-02 7.47365291e-02 7.50225627e-02 7.53086561e-02 7.55948066e-02 + 7.58810112e-02 7.61672674e-02 7.64535724e-02 7.67399235e-02 7.70263181e-02 + 7.73127534e-02 7.75992267e-02 7.78857354e-02 7.81722770e-02 7.84588486e-02 + 7.87454477e-02 7.90320718e-02 7.93187181e-02 7.96053841e-02 7.98920673e-02 + 8.01787651e-02 8.04654749e-02 8.07521941e-02 8.10389204e-02 8.13256510e-02 + 8.16123836e-02 8.18991157e-02 8.21858447e-02 8.24725683e-02 8.27592839e-02 + 8.30459891e-02 8.33326815e-02 8.36193586e-02 8.39060181e-02 8.41926576e-02 + 8.44792746e-02 8.47658669e-02 8.50524319e-02 8.53389675e-02 8.56254713e-02 + 8.59119408e-02 8.61983740e-02 8.64847683e-02 8.67711216e-02 8.70574315e-02 + 8.73436959e-02 8.76299124e-02 8.79160788e-02 8.82021929e-02 8.84882524e-02 + 8.87742552e-02 8.90601991e-02 8.93460819e-02 8.96319014e-02 8.99176554e-02 + 9.02033419e-02 9.04889586e-02 9.07745035e-02 9.10599745e-02 9.13453694e-02 + 9.16306861e-02 9.19159227e-02 9.22010770e-02 9.24861469e-02 9.27711305e-02 + 9.30560257e-02 9.33408305e-02 9.36255428e-02 9.39101607e-02 9.41946823e-02 + 9.44791055e-02 9.47634283e-02 9.50476489e-02 9.53317653e-02 9.56157755e-02 + 9.58996777e-02 9.61834699e-02 9.64671503e-02 9.67507170e-02 9.70341681e-02 + 9.73175018e-02 9.76007161e-02 9.78838094e-02 9.81667797e-02 9.84496252e-02 + 9.87323442e-02 9.90149348e-02 9.92973954e-02 9.95797240e-02 9.98619190e-02 + 1.00143979e-01 1.00425901e-01 1.00707685e-01 1.00989328e-01 1.01270829e-01 + 1.01552185e-01 1.01833397e-01 1.02114461e-01 1.02395376e-01 1.02676140e-01 + 1.02956752e-01 1.03237211e-01 1.03517513e-01 1.03797659e-01 1.04077646e-01 + 1.04357473e-01 1.04637138e-01 1.04916640e-01 1.05195977e-01 1.05475147e-01 + 1.05754150e-01 1.06032982e-01 1.06311644e-01 1.06590134e-01 1.06868449e-01 + 1.07146589e-01 1.07424552e-01 1.07702336e-01 1.07979941e-01 1.08257365e-01 + 1.08534605e-01 1.08811662e-01 1.09088533e-01 1.09365218e-01 1.09641714e-01 + 1.09918020e-01 1.10194135e-01 1.10470058e-01 1.10745788e-01 1.11021322e-01 + 1.11296660e-01 1.11571800e-01 1.11846741e-01 1.12121482e-01 1.12396021e-01 + 1.12670358e-01 1.12944490e-01 1.13218418e-01 1.13492138e-01 1.13765651e-01 + 1.14038955e-01 1.14312048e-01 1.14584930e-01 1.14857599e-01 1.15130055e-01 + 1.15402295e-01 1.15674319e-01 1.15946126e-01 1.16217714e-01 1.16489083e-01 + 1.16760231e-01 1.17031157e-01 1.17301860e-01 1.17572339e-01 1.17842593e-01 + 1.18112620e-01 1.18382420e-01 1.18651992e-01 1.18921334e-01 1.19190445e-01 + 1.19459326e-01 1.19727973e-01 1.19996387e-01 1.20264566e-01 1.20532510e-01 + 1.20800216e-01 1.21067686e-01 1.21334917e-01 1.21601908e-01 1.21868658e-01 + 1.22135167e-01 1.22401434e-01 1.22667458e-01 1.22933237e-01 1.23198771e-01 + 1.23464058e-01 1.23729099e-01 1.23993892e-01 1.24258436e-01 1.24522731e-01 + 1.24786775e-01 1.25050567e-01 1.25314108e-01 1.25577395e-01 1.25840428e-01 + 1.26103207e-01 1.26365730e-01 1.26627997e-01 1.26890006e-01 1.27151758e-01 + 1.27413251e-01 1.27674484e-01 1.27935457e-01 1.28196169e-01 1.28456619e-01 + 1.28716807e-01 1.28976731e-01 1.29236391e-01 1.29495787e-01 1.29754917e-01 + 1.30013780e-01 1.30272377e-01 1.30530707e-01 1.30788768e-01 1.31046560e-01 + 1.31304083e-01 1.31561335e-01 1.31818316e-01 1.32075026e-01 1.32331463e-01 + 1.32587628e-01 1.32843519e-01 1.33099136e-01 1.33354479e-01 1.33609546e-01 + 1.33864337e-01 1.34118851e-01 1.34373088e-01 1.34627048e-01 1.34880730e-01 + 1.35134132e-01 1.35387255e-01 1.35640099e-01 1.35892661e-01 1.36144943e-01 + 1.36396943e-01 1.36648661e-01 1.36900097e-01 1.37151249e-01 1.37402118e-01 + 1.37652702e-01 1.37903003e-01 1.38153017e-01 1.38402747e-01 1.38652190e-01 + 1.38901347e-01 1.39150217e-01 1.39398799e-01 1.39647094e-01 1.39895100e-01 + 1.40142817e-01 1.40390246e-01 1.40637384e-01 1.40884233e-01 1.41130791e-01 + 1.41377059e-01 1.41623035e-01 1.41868719e-01 1.42114112e-01 1.42359212e-01 + 1.42604020e-01 1.42848534e-01 1.43092755e-01 1.43336681e-01 1.43580314e-01 + 1.43823652e-01 1.44066695e-01 1.44309444e-01 1.44551896e-01 1.44794053e-01 + 1.45035913e-01 1.45277477e-01 1.45518744e-01 1.45759714e-01 1.46000386e-01 + 1.46240761e-01 1.46480838e-01 1.46720616e-01 1.46960096e-01 1.47199277e-01 + 1.47438159e-01 1.47676742e-01 1.47915025e-01 1.48153009e-01 1.48390692e-01 + 1.48628075e-01 1.48865157e-01 1.49101939e-01 1.49338419e-01 1.49574598e-01 + 1.49810476e-01 1.50046052e-01 1.50281327e-01 1.50516299e-01 1.50750969e-01 + 1.50985337e-01 1.51219402e-01 1.51453164e-01 1.51686623e-01 1.51919779e-01 + 1.52152632e-01 1.52385181e-01 1.52617427e-01 1.52849368e-01 1.53081006e-01 + 1.53312340e-01 1.53543370e-01 1.53774095e-01 1.54004516e-01 1.54234632e-01 + 1.54464444e-01 1.54693950e-01 1.54923152e-01 1.55152049e-01 1.55380640e-01 + 1.55608926e-01 1.55836907e-01 1.56064583e-01 1.56291953e-01 1.56519017e-01 + 1.56745775e-01 1.56972228e-01 1.57198375e-01 1.57424216e-01 1.57649751e-01 + 1.57874980e-01 1.58099903e-01 1.58324520e-01 1.58548831e-01 1.58772835e-01 + 1.58996533e-01 1.59219925e-01 1.59443010e-01 1.59665790e-01 1.59888262e-01 + 1.60110429e-01 1.60332289e-01 1.60553842e-01 1.60775089e-01 1.60996030e-01 + 1.61216664e-01 1.61436992e-01 1.61657013e-01 1.61876728e-01 1.62096136e-01 + 1.62315238e-01 1.62534034e-01 1.62752523e-01 1.62970706e-01 1.63188582e-01 + 1.63406152e-01 1.63623416e-01 1.63840374e-01 1.64057026e-01 1.64273371e-01 + 1.64489411e-01 1.64705144e-01 1.64920571e-01 1.65135693e-01 1.65350508e-01 + 1.65565018e-01 1.65779222e-01 1.65993121e-01 1.66206714e-01 1.66420001e-01 + 1.66632983e-01 1.66845660e-01 1.67058031e-01 1.67270097e-01 1.67481858e-01 + 1.67693314e-01 1.67904465e-01 1.68115312e-01 1.68325854e-01 1.68536091e-01 + 1.68746023e-01 1.68955652e-01 1.69164976e-01 1.69373996e-01 1.69582712e-01 + 1.69791124e-01 1.69999232e-01 1.70207037e-01 1.70414538e-01 1.70621735e-01 + 1.70828630e-01 1.71035221e-01 1.71241510e-01 1.71447495e-01 1.71653178e-01 + 1.71858558e-01 1.72063636e-01 1.72268412e-01 1.72472886e-01 1.72677057e-01 + 1.72880927e-01 1.73084495e-01 1.73287762e-01 1.73490728e-01 1.73693392e-01 + 1.73895756e-01 1.74097819e-01 1.74299581e-01 1.74501043e-01 1.74702204e-01 + 1.74903066e-01 1.75103627e-01 1.75303889e-01 1.75503852e-01 1.75703515e-01 + 1.75902879e-01 1.76101944e-01 1.76300710e-01 1.76499178e-01 1.76697348e-01 + 1.76895219e-01 1.77092792e-01 1.77290068e-01 1.77487046e-01 1.77683727e-01 + 1.77880111e-01 1.78076198e-01 1.78271989e-01 1.78467483e-01 1.78662680e-01 + 1.78857582e-01 1.79052188e-01 1.79246498e-01 1.79440514e-01 1.79634234e-01 + 1.79827659e-01 1.80020789e-01 1.80213625e-01 1.80406167e-01 1.80598415e-01 + 1.80790370e-01 1.80982031e-01 1.81173398e-01 1.81364473e-01 1.81555255e-01 + 1.81745745e-01 1.81935942e-01 1.82125848e-01 1.82315462e-01 1.82504784e-01 + 1.82693815e-01 1.82882555e-01 1.83071004e-01 1.83259163e-01 1.83447032e-01 + 1.83634611e-01 1.83821900e-01 1.84008900e-01 1.84195611e-01 1.84382033e-01 + 1.84568166e-01 1.84754012e-01 1.84939569e-01 1.85124838e-01 1.85309820e-01 + 1.85494514e-01 1.85678922e-01 1.85863043e-01 1.86046878e-01 1.86230426e-01 + 1.86413689e-01 1.86596666e-01 1.86779358e-01 1.86961765e-01 1.87143887e-01 + 1.87325725e-01 1.87507279e-01 1.87688549e-01 1.87869536e-01 1.88050239e-01 + 1.88230659e-01 1.88410797e-01 1.88590653e-01 1.88770226e-01 1.88949518e-01 + 1.89128528e-01 1.89307257e-01 1.89485705e-01 1.89663873e-01 1.89841761e-01 + 1.90019368e-01 1.90196696e-01 1.90373745e-01 1.90550515e-01 1.90727005e-01 + 1.90903218e-01 1.91079153e-01 1.91254809e-01 1.91430189e-01 1.91605291e-01 + 1.91780116e-01 1.91954665e-01 1.92128937e-01 1.92302934e-01 1.92476655e-01 + 1.92650101e-01 1.92823272e-01 1.92996169e-01 1.93168791e-01 1.93341139e-01 + 1.93513213e-01 1.93685014e-01 1.93856543e-01 1.94027798e-01 1.94198781e-01 + 1.94369492e-01 1.94539932e-01 1.94710100e-01 1.94879997e-01 1.95049623e-01 + 1.95218979e-01 1.95388065e-01 1.95556881e-01 1.95725428e-01 1.95893706e-01 + 1.96061715e-01 1.96229455e-01 1.96396928e-01 1.96564133e-01 1.96731070e-01 + 1.96897741e-01 1.97064144e-01 1.97230282e-01 1.97396153e-01 1.97561758e-01 + 1.97727099e-01 1.97892174e-01 1.98056984e-01 1.98221530e-01 1.98385813e-01 + 1.98549831e-01 1.98713586e-01 1.98877078e-01 1.99040308e-01 1.99203275e-01 + 1.99365980e-01 1.99528424e-01 1.99690606e-01 1.99852528e-01 2.00014188e-01 + 2.00175589e-01 2.00336730e-01 2.00497611e-01 2.00658233e-01 2.00818596e-01 + 2.00978701e-01 2.01138547e-01 2.01298136e-01 2.01457467e-01 2.01616542e-01 + 2.01775359e-01 2.01933920e-01 2.02092225e-01 2.02250274e-01 2.02408068e-01 + 2.02565607e-01 2.02722891e-01 2.02879921e-01 2.03036697e-01 2.03193220e-01 + 2.03349489e-01 2.03505505e-01 2.03661269e-01 2.03816780e-01 2.03972040e-01 + 2.04127048e-01 2.04281805e-01 2.04436312e-01 2.04590568e-01 2.04744573e-01 + 2.04898329e-01 2.05051836e-01 2.05205094e-01 2.05358103e-01 2.05510864e-01 + 2.05663377e-01 2.05815642e-01 2.05967660e-01 2.06119432e-01 2.06270956e-01 + 2.06422235e-01 2.06573268e-01 2.06724055e-01 2.06874598e-01 2.07024895e-01 + 2.07174948e-01 2.07324757e-01 2.07474323e-01 2.07623645e-01 2.07772725e-01 + 2.07921561e-01 2.08070156e-01 2.08218508e-01 2.08366619e-01 2.08514489e-01 + 2.08662119e-01 2.08809507e-01 2.08956656e-01 2.09103565e-01 2.09250235e-01 + 2.09396665e-01 2.09542857e-01 2.09688811e-01 2.09834526e-01 2.09980005e-01 + 2.10125246e-01 2.10270250e-01 2.10415017e-01 2.10559549e-01 2.10703844e-01 + 2.10847905e-01 2.10991730e-01 2.11135320e-01 2.11278676e-01 2.11421799e-01 + 2.11564687e-01 2.11707342e-01 2.11849765e-01 2.11991955e-01 2.12133912e-01 + 2.12275638e-01 2.12417132e-01 2.12558395e-01 2.12699428e-01 2.12840230e-01 + 2.12980802e-01 2.13121144e-01 2.13261257e-01 2.13401141e-01 2.13540796e-01 + 2.13680223e-01 2.13819422e-01 2.13958394e-01 2.14097138e-01 2.14235656e-01 + 2.14373947e-01 2.14512011e-01 2.14649851e-01 2.14787464e-01 2.14924853e-01 + 2.15062017e-01 2.15198957e-01 2.15335672e-01 2.15472164e-01 2.15608433e-01 + 2.15744479e-01 2.15880302e-01 2.16015903e-01 2.16151282e-01 2.16286440e-01 + 2.16421376e-01 2.16556092e-01 2.16690587e-01 2.16824862e-01 2.16958918e-01 + 2.17092754e-01 2.17226371e-01 2.17359769e-01 2.17492949e-01 2.17625911e-01 + 2.17758656e-01 2.17891183e-01 2.18023493e-01 2.18155587e-01 2.18287464e-01 + 2.18419126e-01 2.18550572e-01 2.18681803e-01 2.18812819e-01 2.18943621e-01 + 2.19074208e-01 2.19204582e-01 2.19334742e-01 2.19464690e-01 2.19594424e-01 + 2.19723946e-01 2.19853257e-01 2.19982355e-01 2.20111242e-01 2.20239919e-01 + 2.20368384e-01 2.20496640e-01 2.20624685e-01 2.20752521e-01 2.20880148e-01 + 2.21007566e-01 2.21134775e-01 2.21261776e-01 2.21388569e-01 2.21515155e-01 + 2.21641533e-01 2.21767705e-01 2.21893670e-01 2.22019429e-01 2.22144983e-01 + 2.22270331e-01 2.22395473e-01 2.22520411e-01 2.22645145e-01 2.22769675e-01 + 2.22894000e-01 2.23018123e-01 2.23142042e-01 2.23265759e-01 2.23389273e-01 + 2.23512586e-01 2.23635696e-01 2.23758606e-01 2.23881314e-01 2.24003822e-01 + 2.24126129e-01 2.24248236e-01 2.24370144e-01 2.24491852e-01 2.24613362e-01 + 2.24734673e-01 2.24855785e-01 2.24976700e-01 2.25097417e-01 2.25217936e-01 + 2.25338259e-01 2.25458385e-01 2.25578315e-01 2.25698048e-01 2.25817587e-01 + 2.25936930e-01 2.26056078e-01 2.26175031e-01 2.26293790e-01 2.26412355e-01 + 2.26530727e-01 2.26648905e-01 2.26766890e-01 2.26884683e-01 2.27002283e-01 + 2.27119691e-01 2.27236908e-01 2.27353934e-01 2.27470768e-01 2.27587412e-01 + 2.27703865e-01 2.27820129e-01 2.27936203e-01 2.28052087e-01 2.28167783e-01 + 2.28283290e-01 2.28398608e-01 2.28513738e-01 2.28628681e-01 2.28743437e-01 + 2.28858005e-01 2.28972386e-01 2.29086581e-01 2.29200591e-01 2.29314414e-01 + 2.29428052e-01 2.29541504e-01 2.29654772e-01 2.29767856e-01 2.29880755e-01 + 2.29993470e-01 2.30106002e-01 2.30218351e-01 2.30330517e-01 2.30442500e-01 + 2.30554301e-01 2.30665921e-01 2.30777358e-01 2.30888614e-01 2.30999690e-01 + 2.31110584e-01 2.31221299e-01 2.31331833e-01 2.31442188e-01 2.31552363e-01 + 2.31662359e-01 2.31772176e-01 2.31881815e-01 2.31991276e-01 2.32100559e-01 + 2.32209665e-01 2.32318593e-01 2.32427344e-01 2.32535919e-01 2.32644318e-01 + 2.32752540e-01 2.32860587e-01 2.32968459e-01 2.33076155e-01 2.33183677e-01 + 2.33291025e-01 2.33398198e-01 2.33505198e-01 2.33612024e-01 2.33718676e-01 + 2.33825157e-01 2.33931464e-01 2.34037599e-01 2.34143562e-01 2.34249354e-01 + 2.34354974e-01 2.34460423e-01 2.34565702e-01 2.34670810e-01 2.34775748e-01 + 2.34880516e-01 2.34985114e-01 2.35089544e-01 2.35193804e-01 2.35297896e-01 + 2.35401819e-01 2.35505574e-01 2.35609162e-01 2.35712582e-01 2.35815835e-01 + 2.35918921e-01 2.36021841e-01 2.36124594e-01 2.36227182e-01 2.36329603e-01 + 2.36431860e-01 2.36533951e-01 2.36635878e-01 2.36737640e-01 2.36839238e-01 + 2.36940672e-01 2.37041942e-01 2.37143049e-01 2.37243994e-01 2.37344775e-01 + 2.37445394e-01 2.37545851e-01 2.37646146e-01 2.37746279e-01 2.37846251e-01 + 2.37946062e-01 2.38045713e-01 2.38145203e-01 2.38244533e-01 2.38343703e-01 + 2.38442713e-01 2.38541565e-01 2.38640257e-01 2.38738790e-01 2.38837166e-01 + 2.38935383e-01 2.39033442e-01 2.39131344e-01 2.39229088e-01 2.39326676e-01 + 2.39424106e-01 2.39521381e-01 2.39618499e-01 2.39715461e-01 2.39812268e-01 + 2.39908919e-01 2.40005416e-01 2.40101757e-01 2.40197944e-01 2.40293977e-01 + 2.40389856e-01 2.40485582e-01 2.40581154e-01 2.40676573e-01 2.40771839e-01 + 2.40866953e-01 2.40961914e-01 2.41056724e-01 2.41151382e-01 2.41245888e-01 + 2.41340243e-01 2.41434447e-01 2.41528501e-01 2.41622404e-01 2.41716158e-01 + 2.41809761e-01 2.41903215e-01 2.41996520e-01 2.42089675e-01 2.42182682e-01 + 2.42275541e-01 2.42368251e-01 2.42460813e-01 2.42553228e-01 2.42645496e-01 + 2.42737616e-01 2.42829589e-01 2.42921416e-01 2.43013097e-01 2.43104631e-01 + 2.43196020e-01 2.43287263e-01 2.43378361e-01 2.43469314e-01 2.43560122e-01 + 2.43650786e-01 2.43741306e-01 2.43831681e-01 2.43921913e-01 2.44012001e-01 + 2.44101947e-01 2.44191749e-01 2.44281409e-01 2.44370926e-01 2.44460302e-01 + 2.44549535e-01 2.44638627e-01 2.44727577e-01 2.44816386e-01 2.44905055e-01 + 2.44993583e-01 2.45081970e-01 2.45170218e-01 2.45258325e-01 2.45346293e-01 + 2.45434122e-01 2.45521812e-01 2.45609362e-01 2.45696775e-01 2.45784049e-01 + 2.45871185e-01 2.45958183e-01 2.46045043e-01 2.46131766e-01 2.46218353e-01 + 2.46304802e-01 2.46391115e-01 2.46477291e-01 2.46563332e-01 2.46649236e-01 + 2.46735006e-01 2.46820639e-01 2.46906138e-01 2.46991502e-01 2.47076731e-01 + 2.47161826e-01 2.47246787e-01 2.47331614e-01 2.47416307e-01 2.47500867e-01 + 2.47585294e-01 2.47669588e-01 2.47753749e-01 2.47837778e-01 2.47921675e-01 + 2.48005440e-01 2.48089073e-01 2.48172575e-01 2.48255945e-01 2.48339185e-01 + 2.48422294e-01 2.48505272e-01 2.48588120e-01 2.48670839e-01 2.48753427e-01 + 2.48835886e-01 2.48918215e-01 2.49000416e-01 2.49082487e-01 2.49164431e-01 + 2.49246245e-01 2.49327932e-01 2.49409490e-01 2.49490922e-01 2.49572225e-01 + 2.49653402e-01 2.49734451e-01 2.49815374e-01 2.49896170e-01 2.49976840e-01 + 2.50057384e-01 2.50137802e-01 2.50218094e-01 2.50298261e-01 2.50378303e-01 + 2.50458221e-01 2.50538013e-01 2.50617681e-01 2.50697225e-01 2.50776645e-01 + 2.50855941e-01 2.50935113e-01 2.51014162e-01 2.51093088e-01 2.51171892e-01 + 2.51250572e-01 2.51329130e-01 2.51407566e-01 2.51485880e-01 2.51564073e-01 + 2.51642143e-01 2.51720093e-01 2.51797921e-01 2.51875629e-01 2.51953216e-01 + 2.52030682e-01 2.52108028e-01 2.52185254e-01 2.52262361e-01 2.52339348e-01 + 2.52416215e-01 2.52492964e-01 2.52569593e-01 2.52646104e-01 2.52722497e-01 + 2.52798771e-01 2.52874927e-01 2.52950965e-01 2.53026886e-01 2.53102689e-01 + 2.53178375e-01 2.53253944e-01 2.53329397e-01 2.53404733e-01 2.53479952e-01 + 2.53555056e-01 2.53630043e-01 2.53704915e-01 2.53779671e-01 2.53854312e-01 + 2.53928839e-01 2.54003250e-01 2.54077546e-01 2.54151728e-01 2.54225796e-01 + 2.54299750e-01 2.54373590e-01 2.54447316e-01 2.54520930e-01 2.54594429e-01 + 2.54667816e-01 2.54741090e-01 2.54814252e-01 2.54887301e-01 2.54960238e-01 + 2.55033063e-01 2.55105776e-01 2.55178378e-01 2.55250868e-01 2.55323247e-01 + 2.55395516e-01 2.55467673e-01 2.55539720e-01 2.55611657e-01 2.55683483e-01 + 2.55755200e-01 2.55826806e-01 2.55898304e-01 2.55969692e-01 2.56040970e-01 + 2.56112140e-01 2.56183201e-01 2.56254154e-01 2.56324998e-01 2.56395734e-01 + 2.56466362e-01 2.56536882e-01 2.56607295e-01 2.56677600e-01 2.56747798e-01 + 2.56817889e-01 2.56887874e-01 2.56957752e-01 2.57027523e-01 2.57097188e-01 + 2.57166747e-01 2.57236200e-01 2.57305548e-01 2.57374790e-01 2.57443927e-01 + 2.57512959e-01 2.57581886e-01 2.57650709e-01 2.57719427e-01 2.57788040e-01 + 2.57856550e-01 2.57924955e-01 2.57993257e-01 2.58061455e-01 2.58129550e-01 + 2.58197542e-01 2.58265431e-01 2.58333217e-01 2.58400900e-01 2.58468481e-01 + 2.58535960e-01 2.58603336e-01 2.58670611e-01 2.58737784e-01 2.58804856e-01 + 2.58871826e-01 2.58938695e-01 2.59005463e-01 2.59072131e-01 2.59138697e-01 + 2.59205164e-01 2.59271530e-01 2.59337796e-01 2.59403962e-01 2.59470029e-01 + 2.59535996e-01 2.59601864e-01 2.59667633e-01 2.59733302e-01 2.59798873e-01 + 2.59864345e-01 2.59929719e-01 2.59994995e-01 2.60060172e-01 2.60125252e-01 + 2.60190234e-01 2.60255118e-01 2.60319905e-01 2.60384595e-01 2.60449188e-01 + 2.60513684e-01 2.60578083e-01 2.60642386e-01 2.60706593e-01 2.60770703e-01 + 2.60834718e-01 2.60898636e-01 2.60962459e-01 2.61026187e-01 2.61089819e-01 + 2.61153356e-01 2.61216799e-01 2.61280146e-01 2.61343399e-01 2.61406557e-01 + 2.61469622e-01 2.61532592e-01 2.61595468e-01 2.61658250e-01 2.61720939e-01 + 2.61783535e-01 2.61846037e-01 2.61908446e-01 2.61970763e-01 2.62032986e-01 + 2.62095117e-01 2.62157156e-01 2.62219102e-01 2.62280956e-01 2.62342719e-01 + 2.62404389e-01 2.62465968e-01 2.62527456e-01 2.62588852e-01 2.62650158e-01 + 2.62711372e-01 2.62772496e-01 2.62833529e-01 2.62894471e-01 2.62955324e-01 + 2.63016086e-01 2.63076758e-01 2.63137341e-01 2.63197833e-01 2.63258237e-01 + 2.63318551e-01 2.63378776e-01 2.63438912e-01 2.63498959e-01 2.63558918e-01 + 2.63618788e-01 2.63678569e-01 2.63738263e-01 2.63797868e-01 2.63857386e-01 + 2.63916816e-01 2.63976158e-01 2.64035413e-01 2.64094581e-01 2.64153661e-01 + 2.64212655e-01 2.64271562e-01 2.64330382e-01 2.64389116e-01 2.64447763e-01 + 2.64506324e-01 2.64564800e-01 2.64623189e-01 2.64681493e-01 2.64739711e-01 + 2.64797844e-01 2.64855892e-01 2.64913854e-01 2.64971732e-01 2.65029524e-01 + 2.65087233e-01 2.65144856e-01 2.65202396e-01 2.65259851e-01 2.65317222e-01 + 2.65374509e-01 2.65431713e-01 2.65488833e-01 2.65545869e-01 2.65602822e-01 + 2.65659692e-01 2.65716480e-01 2.65773184e-01 2.65829805e-01 2.65886344e-01 + 2.65942801e-01 2.65999175e-01 2.66055468e-01 2.66111678e-01 2.66167806e-01 + 2.66223853e-01 2.66279819e-01 2.66335703e-01 2.66391505e-01 2.66447227e-01 + 2.66502868e-01 2.66558427e-01 2.66613907e-01 2.66669305e-01 2.66724624e-01 + 2.66779862e-01 2.66835020e-01 2.66890098e-01 2.66945096e-01 2.67000015e-01 + 2.67054854e-01 2.67109613e-01 2.67164294e-01 2.67218895e-01 2.67273418e-01 + 2.67327861e-01 2.67382226e-01 2.67436512e-01 2.67490720e-01 2.67544850e-01 + 2.67598902e-01 2.67652875e-01 2.67706771e-01 2.67760589e-01 2.67814330e-01 + 2.67867993e-01 2.67921578e-01 2.67975087e-01 2.68028519e-01 2.68081873e-01 + 2.68135151e-01 2.68188352e-01 2.68241477e-01 2.68294526e-01 2.68347498e-01 + 2.68400394e-01 2.68453214e-01 2.68505959e-01 2.68558628e-01 2.68611221e-01 + 2.68663738e-01 2.68716181e-01 2.68768548e-01 2.68820841e-01 2.68873058e-01 + 2.68925201e-01 2.68977269e-01 2.69029263e-01 2.69081182e-01 2.69133027e-01 + 2.69184798e-01 2.69236495e-01 2.69288118e-01 2.69339668e-01 2.69391143e-01 + 2.69442546e-01 2.69493875e-01 2.69545131e-01 2.69596314e-01 2.69647424e-01 + 2.69698461e-01 2.69749425e-01 2.69800317e-01 2.69851137e-01 2.69901884e-01 + 2.69952559e-01 2.70003162e-01 2.70053693e-01 2.70104153e-01 2.70154540e-01 + 2.70204856e-01 2.70255101e-01 2.70305274e-01 2.70355377e-01 2.70405408e-01 + 2.70455368e-01 2.70505258e-01 2.70555077e-01 2.70604825e-01 2.70654503e-01 + 2.70704110e-01 2.70753648e-01 2.70803115e-01 2.70852513e-01 2.70901840e-01 + 2.70951098e-01 2.71000287e-01 2.71049406e-01 2.71098455e-01 2.71147436e-01 + 2.71196347e-01 2.71245190e-01 2.71293963e-01 2.71342668e-01 2.71391304e-01 + 2.71439872e-01 2.71488372e-01 2.71536803e-01 2.71585166e-01 2.71633461e-01 + 2.71681688e-01 2.71729848e-01 2.71777939e-01 2.71825964e-01 2.71873921e-01 + 2.71921810e-01 2.71969632e-01 2.72017388e-01 2.72065076e-01 2.72112698e-01 + 2.72160252e-01 2.72207741e-01 2.72255162e-01 2.72302518e-01 2.72349807e-01 + 2.72397030e-01 2.72444187e-01 2.72491278e-01 2.72538303e-01 2.72585263e-01 + 2.72632157e-01 2.72678985e-01 2.72725748e-01 2.72772446e-01 2.72819079e-01 + 2.72865647e-01 2.72912150e-01 2.72958588e-01 2.73004962e-01 2.73051271e-01 + 2.73097516e-01 2.73143696e-01 2.73189812e-01 2.73235864e-01 2.73281852e-01 + 2.73327776e-01 2.73373636e-01 2.73419432e-01 2.73465166e-01 2.73510835e-01 + 2.73556441e-01 2.73601984e-01 2.73647464e-01 2.73692881e-01 2.73738235e-01 + 2.73783526e-01 2.73828755e-01 2.73873921e-01 2.73919024e-01 2.73964065e-01 + 2.74009044e-01 2.74053961e-01 2.74098815e-01 2.74143608e-01 2.74188339e-01 + 2.74233008e-01 2.74277616e-01 2.74322162e-01 2.74366646e-01 2.74411070e-01 + 2.74455432e-01 2.74499733e-01 2.74543973e-01 2.74588152e-01 2.74632270e-01 + 2.74676328e-01 2.74720325e-01 2.74764262e-01 2.74808138e-01 2.74851954e-01 + 2.74895710e-01 2.74939406e-01 2.74983042e-01 2.75026618e-01 2.75070135e-01 + 2.75113591e-01 2.75156988e-01 2.75200326e-01 2.75243604e-01 2.75286824e-01 + 2.75329984e-01 2.75373085e-01 2.75416127e-01 2.75459110e-01 2.75502034e-01 + 2.75544900e-01 2.75587707e-01 2.75630456e-01 2.75673147e-01 2.75715779e-01 + 2.75758353e-01 2.75800869e-01 2.75843328e-01 2.75885728e-01 2.75928070e-01 + 2.75970355e-01 2.76012583e-01 2.76054753e-01 2.76096866e-01 2.76138921e-01 + 2.76180919e-01 2.76222860e-01 2.76264745e-01 2.76306572e-01 2.76348342e-01 + 2.76390056e-01 2.76431714e-01 2.76473315e-01 2.76514859e-01 2.76556347e-01 + 2.76597779e-01 2.76639155e-01 2.76680475e-01 2.76721739e-01 2.76762947e-01 + 2.76804100e-01 2.76845197e-01 2.76886238e-01 2.76927224e-01 2.76968154e-01 + 2.77009030e-01 2.77049850e-01 2.77090615e-01 2.77131325e-01 2.77171980e-01 + 2.77212581e-01 2.77253126e-01 2.77293617e-01 2.77334054e-01 2.77374436e-01 + 2.77414764e-01 2.77455038e-01 2.77495257e-01 2.77535423e-01 2.77575534e-01 + 2.77615592e-01 2.77655596e-01 2.77695546e-01 2.77735443e-01 2.77775286e-01 + 2.77815076e-01 2.77854812e-01 2.77894495e-01 2.77934125e-01 2.77973702e-01 + 2.78013226e-01 2.78052697e-01 2.78092115e-01 2.78131481e-01 2.78170794e-01 + 2.78210054e-01 2.78249262e-01 2.78288418e-01 2.78327521e-01 2.78366572e-01 + 2.78405571e-01 2.78444519e-01 2.78483414e-01 2.78522257e-01 2.78561049e-01 + 2.78599789e-01 2.78638477e-01 2.78677114e-01 2.78715700e-01 2.78754234e-01 + 2.78792717e-01 2.78831149e-01 2.78869530e-01 2.78907859e-01 2.78946138e-01 + 1.03953624e+00 1.03772749e+00 1.03592023e+00 1.03411445e+00 1.03231016e+00 + 1.03050735e+00 1.02870603e+00 1.02690620e+00 1.02510785e+00 1.02331100e+00 + 1.02151562e+00 1.01972174e+00 1.01792935e+00 1.01613844e+00 1.01434902e+00 + 1.01256110e+00 1.01077466e+00 1.00898971e+00 1.00720626e+00 1.00542429e+00 + 1.00364382e+00 1.00186484e+00 1.00008735e+00 9.98311355e-01 9.96536852e-01 + 9.94763842e-01 9.92992326e-01 9.91222304e-01 9.89453777e-01 9.87686744e-01 + 9.85921207e-01 9.84157165e-01 9.82394619e-01 9.80633570e-01 9.78874017e-01 + 9.77115962e-01 9.75359404e-01 9.73604344e-01 9.71850782e-01 9.70098719e-01 + 9.68348155e-01 9.66599090e-01 9.64851525e-01 9.63105460e-01 9.61360895e-01 + 9.59617832e-01 9.57876269e-01 9.56136208e-01 9.54397649e-01 9.52660593e-01 + 9.50925039e-01 9.49190988e-01 9.47458441e-01 9.45727397e-01 9.43997858e-01 + 9.42269823e-01 9.40543293e-01 9.38818268e-01 9.37094749e-01 9.35372736e-01 + 9.33652230e-01 9.31933230e-01 9.30215737e-01 9.28499752e-01 9.26785274e-01 + 9.25072305e-01 9.23360844e-01 9.21650893e-01 9.19942450e-01 9.18235517e-01 + 9.16530094e-01 9.14826182e-01 9.13123780e-01 9.11422890e-01 9.09723511e-01 + 9.08025644e-01 9.06329289e-01 9.04634446e-01 9.02941117e-01 9.01249300e-01 + 8.99558998e-01 8.97870209e-01 8.96182935e-01 8.94497176e-01 8.92812931e-01 + 8.91130202e-01 8.89448989e-01 8.87769292e-01 8.86091112e-01 8.84414448e-01 + 8.82739302e-01 8.81065673e-01 8.79393562e-01 8.77722970e-01 8.76053896e-01 + 8.74386341e-01 8.72720306e-01 8.71055790e-01 8.69392795e-01 8.67731320e-01 + 8.66071366e-01 8.64412932e-01 8.62756021e-01 8.61100631e-01 8.59446764e-01 + 8.57794419e-01 8.56143597e-01 8.54494298e-01 8.52846523e-01 8.51200272e-01 + 8.49555545e-01 8.47912343e-01 8.46270666e-01 8.44630515e-01 8.42991889e-01 + 8.41354789e-01 8.39719216e-01 8.38085170e-01 8.36452650e-01 8.34821658e-01 + 8.33192195e-01 8.31564259e-01 8.29937852e-01 8.28312973e-01 8.26689624e-01 + 8.25067805e-01 8.23447515e-01 8.21828756e-01 8.20211528e-01 8.18595830e-01 + 8.16981664e-01 8.15369029e-01 8.13757927e-01 8.12148357e-01 8.10540319e-01 + 8.08933815e-01 8.07328844e-01 8.05725406e-01 8.04123503e-01 8.02523135e-01 + 8.00924301e-01 7.99327002e-01 7.97731239e-01 7.96137011e-01 7.94544320e-01 + 7.92953165e-01 7.91363547e-01 7.89775466e-01 7.88188923e-01 7.86603918e-01 + 7.85020450e-01 7.83438522e-01 7.81858132e-01 7.80279281e-01 7.78701970e-01 + 7.77126199e-01 7.75551968e-01 7.73979278e-01 7.72408129e-01 7.70838521e-01 + 7.69270454e-01 7.67703930e-01 7.66138947e-01 7.64575508e-01 7.63013611e-01 + 7.61453258e-01 7.59894448e-01 7.58337182e-01 7.56781460e-01 7.55227283e-01 + 7.53674651e-01 7.52123565e-01 7.50574024e-01 7.49026029e-01 7.47479580e-01 + 7.45934678e-01 7.44391322e-01 7.42849514e-01 7.41309254e-01 7.39770542e-01 + 7.38233378e-01 7.36697762e-01 7.35163696e-01 7.33631179e-01 7.32100211e-01 + 7.30570794e-01 7.29042926e-01 7.27516610e-01 7.25991844e-01 7.24468629e-01 + 7.22946966e-01 7.21426855e-01 7.19908297e-01 7.18391291e-01 7.16875837e-01 + 7.15361937e-01 7.13849591e-01 7.12338798e-01 7.10829560e-01 7.09321876e-01 + 7.07815747e-01 7.06311174e-01 7.04808155e-01 7.03306693e-01 7.01806787e-01 + 7.00308437e-01 6.98811644e-01 6.97316408e-01 6.95822730e-01 6.94330610e-01 + 6.92840047e-01 6.91351043e-01 6.89863598e-01 6.88377712e-01 6.86893385e-01 + 6.85410618e-01 6.83929411e-01 6.82449765e-01 6.80971679e-01 6.79495154e-01 + 6.78020190e-01 6.76546789e-01 6.75074949e-01 6.73604671e-01 6.72135956e-01 + 6.70668804e-01 6.69203215e-01 6.67739189e-01 6.66276728e-01 6.64815830e-01 + 6.63356498e-01 6.61898730e-01 6.60442527e-01 6.58987889e-01 6.57534818e-01 + 6.56083312e-01 6.54633373e-01 6.53185001e-01 6.51738195e-01 6.50292957e-01 + 6.48849287e-01 6.47407184e-01 6.45966650e-01 6.44527685e-01 6.43090288e-01 + 6.41654460e-01 6.40220202e-01 6.38787514e-01 6.37356396e-01 6.35926849e-01 + 6.34498872e-01 6.33072467e-01 6.31647633e-01 6.30224370e-01 6.28802680e-01 + 6.27382561e-01 6.25964016e-01 6.24547043e-01 6.23131644e-01 6.21717818e-01 + 6.20305566e-01 6.18894889e-01 6.17485785e-01 6.16078257e-01 6.14672303e-01 + 6.13267925e-01 6.11865123e-01 6.10463897e-01 6.09064247e-01 6.07666173e-01 + 6.06269677e-01 6.04874758e-01 6.03481416e-01 6.02089652e-01 6.00699467e-01 + 5.99310859e-01 5.97923831e-01 5.96538381e-01 5.95154511e-01 5.93772221e-01 + 5.92391510e-01 5.91012380e-01 5.89634830e-01 5.88258861e-01 5.86884473e-01 + 5.85511667e-01 5.84140442e-01 5.82770800e-01 5.81402740e-01 5.80036262e-01 + 5.78671367e-01 5.77308056e-01 5.75946328e-01 5.74586184e-01 5.73227624e-01 + 5.71870649e-01 5.70515258e-01 5.69161453e-01 5.67809232e-01 5.66458597e-01 + 5.65109548e-01 5.63762086e-01 5.62416210e-01 5.61071920e-01 5.59729218e-01 + 5.58388103e-01 5.57048576e-01 5.55710636e-01 5.54374285e-01 5.53039523e-01 + 5.51706349e-01 5.50374764e-01 5.49044769e-01 5.47716364e-01 5.46389548e-01 + 5.45064323e-01 5.43740689e-01 5.42418645e-01 5.41098192e-01 5.39779331e-01 + 5.38462062e-01 5.37146385e-01 5.35832299e-01 5.34519807e-01 5.33208907e-01 + 5.31899601e-01 5.30591888e-01 5.29285769e-01 5.27981244e-01 5.26678313e-01 + 5.25376977e-01 5.24077235e-01 5.22779089e-01 5.21482538e-01 5.20187583e-01 + 5.18894224e-01 5.17602461e-01 5.16312295e-01 5.15023726e-01 5.13736754e-01 + 5.12451379e-01 5.11167602e-01 5.09885423e-01 5.08604843e-01 5.07325861e-01 + 5.06048477e-01 5.04772693e-01 5.03498508e-01 5.02225923e-01 5.00954938e-01 + 4.99685553e-01 4.98417769e-01 4.97151585e-01 4.95887003e-01 4.94624021e-01 + 4.93362642e-01 4.92102864e-01 4.90844689e-01 4.89588116e-01 4.88333145e-01 + 4.87079778e-01 4.85828014e-01 4.84577853e-01 4.83329297e-01 4.82082344e-01 + 4.80836996e-01 4.79593252e-01 4.78351114e-01 4.77110580e-01 4.75871652e-01 + 4.74634330e-01 4.73398614e-01 4.72164504e-01 4.70932001e-01 4.69701104e-01 + 4.68471815e-01 4.67244132e-01 4.66018058e-01 4.64793591e-01 4.63570733e-01 + 4.62349483e-01 4.61129842e-01 4.59911810e-01 4.58695387e-01 4.57480573e-01 + 4.56267369e-01 4.55055776e-01 4.53845792e-01 4.52637419e-01 4.51430658e-01 + 4.50225507e-01 4.49021967e-01 4.47820039e-01 4.46619724e-01 4.45421020e-01 + 4.44223928e-01 4.43028450e-01 4.41834584e-01 4.40642332e-01 4.39451693e-01 + 4.38262668e-01 4.37075256e-01 4.35889459e-01 4.34705277e-01 4.33522709e-01 + 4.32341757e-01 4.31162420e-01 4.29984698e-01 4.28808592e-01 4.27634102e-01 + 4.26461229e-01 4.25289972e-01 4.24120332e-01 4.22952310e-01 4.21785904e-01 + 4.20621116e-01 4.19457946e-01 4.18296395e-01 4.17136461e-01 4.15978147e-01 + 4.14821451e-01 4.13666374e-01 4.12512917e-01 4.11361080e-01 4.10210862e-01 + 4.09062265e-01 4.07915288e-01 4.06769932e-01 4.05626197e-01 4.04484083e-01 + 4.03343590e-01 4.02204719e-01 4.01067470e-01 3.99931844e-01 3.98797839e-01 + 3.97665458e-01 3.96534699e-01 3.95405564e-01 3.94278052e-01 3.93152164e-01 + 3.92027900e-01 3.90905259e-01 3.89784244e-01 3.88664853e-01 3.87547087e-01 + 3.86430946e-01 3.85316431e-01 3.84203541e-01 3.83092278e-01 3.81982640e-01 + 3.80874629e-01 3.79768245e-01 3.78663487e-01 3.77560357e-01 3.76458854e-01 + 3.75358979e-01 3.74260731e-01 3.73164112e-01 3.72069121e-01 3.70975759e-01 + 3.69884025e-01 3.68793921e-01 3.67705446e-01 3.66618601e-01 3.65533385e-01 + 3.64449799e-01 3.63367844e-01 3.62287520e-01 3.61208826e-01 3.60131763e-01 + 3.59056331e-01 3.57982531e-01 3.56910363e-01 3.55839826e-01 3.54770922e-01 + 3.53703650e-01 3.52638011e-01 3.51574005e-01 3.50511632e-01 3.49450892e-01 + 3.48391786e-01 3.47334314e-01 3.46278476e-01 3.45224272e-01 3.44171703e-01 + 3.43120769e-01 3.42071469e-01 3.41023805e-01 3.39977776e-01 3.38933384e-01 + 3.37890627e-01 3.36849506e-01 3.35810021e-01 3.34772174e-01 3.33735963e-01 + 3.32701389e-01 3.31668453e-01 3.30637154e-01 3.29607493e-01 3.28579470e-01 + 3.27553085e-01 3.26528339e-01 3.25505231e-01 3.24483762e-01 3.23463933e-01 + 3.22445743e-01 3.21429192e-01 3.20414282e-01 3.19401011e-01 3.18389381e-01 + 3.17379391e-01 3.16371042e-01 3.15364334e-01 3.14359267e-01 3.13355841e-01 + 3.12354057e-01 3.11353915e-01 3.10355415e-01 3.09358557e-01 3.08363342e-01 + 3.07369770e-01 3.06377840e-01 3.05387554e-01 3.04398911e-01 3.03411912e-01 + 3.02426556e-01 3.01442845e-01 3.00460777e-01 2.99480355e-01 2.98501577e-01 + 2.97524444e-01 2.96548956e-01 2.95575113e-01 2.94602916e-01 2.93632365e-01 + 2.92663460e-01 2.91696201e-01 2.90730589e-01 2.89766623e-01 2.88804304e-01 + 2.87843632e-01 2.86884607e-01 2.85927230e-01 2.84971501e-01 2.84017420e-01 + 2.83064986e-01 2.82114201e-01 2.81165065e-01 2.80217578e-01 2.79271739e-01 + 2.78327550e-01 2.77385010e-01 2.76444119e-01 2.75504879e-01 2.74567288e-01 + 2.73631348e-01 2.72697059e-01 2.71764419e-01 2.70833431e-01 2.69904094e-01 + 2.68976408e-01 2.68050374e-01 2.67125991e-01 2.66203261e-01 2.65282182e-01 + 2.64362756e-01 2.63444982e-01 2.62528861e-01 2.61614393e-01 2.60701578e-01 + 2.59790416e-01 2.58880908e-01 2.57973054e-01 2.57066853e-01 2.56162307e-01 + 2.55259415e-01 2.54358178e-01 2.53458595e-01 2.52560668e-01 2.51664395e-01 + 2.50769778e-01 2.49876816e-01 2.48985511e-01 2.48095861e-01 2.47207867e-01 + 2.46321530e-01 2.45436849e-01 2.44553825e-01 2.43672457e-01 2.42792747e-01 + 2.41914695e-01 2.41038300e-01 2.40163562e-01 2.39290483e-01 2.38419061e-01 + 2.37549298e-01 2.36681193e-01 2.35814748e-01 2.34949961e-01 2.34086833e-01 + 2.33225364e-01 2.32365555e-01 2.31507405e-01 2.30650916e-01 2.29796086e-01 + 2.28942916e-01 2.28091407e-01 2.27241559e-01 2.26393372e-01 2.25546845e-01 + 2.24701980e-01 2.23858776e-01 2.23017233e-01 2.22177352e-01 2.21339134e-01 + 2.20502577e-01 2.19667682e-01 2.18834451e-01 2.18002881e-01 2.17172975e-01 + 2.16344732e-01 2.15518152e-01 2.14693235e-01 2.13869982e-01 2.13048393e-01 + 2.12228468e-01 2.11410207e-01 2.10593610e-01 2.09778678e-01 2.08965410e-01 + 2.08153807e-01 2.07343870e-01 2.06535598e-01 2.05728991e-01 2.04924049e-01 + 2.04120774e-01 2.03319164e-01 2.02519221e-01 2.01720944e-01 2.00924334e-01 + 2.00129390e-01 1.99336113e-01 1.98544503e-01 1.97754560e-01 1.96966285e-01 + 1.96179677e-01 1.95394737e-01 1.94611465e-01 1.93829861e-01 1.93049925e-01 + 1.92271658e-01 1.91495059e-01 1.90720129e-01 1.89946869e-01 1.89175277e-01 + 1.88405354e-01 1.87637101e-01 1.86870518e-01 1.86105605e-01 1.85342361e-01 + 1.84580788e-01 1.83820885e-01 1.83062653e-01 1.82306091e-01 1.81551200e-01 + 1.80797980e-01 1.80046431e-01 1.79296554e-01 1.78548348e-01 1.77801814e-01 + 1.77056952e-01 1.76313762e-01 1.75572244e-01 1.74832398e-01 1.74094225e-01 + 1.73357725e-01 1.72622897e-01 1.71889743e-01 1.71158261e-01 1.70428453e-01 + 1.69700319e-01 1.68973858e-01 1.68249071e-01 1.67525958e-01 1.66804519e-01 + 1.66084755e-01 1.65366665e-01 1.64650249e-01 1.63935509e-01 1.63222443e-01 + 1.62511053e-01 1.61801338e-01 1.61093298e-01 1.60386934e-01 1.59682246e-01 + 1.58979233e-01 1.58277897e-01 1.57578237e-01 1.56880253e-01 1.56183946e-01 + 1.55489316e-01 1.54796362e-01 1.54105086e-01 1.53415486e-01 1.52727564e-01 + 1.52041320e-01 1.51356753e-01 1.50673864e-01 1.49992653e-01 1.49313120e-01 + 1.48635265e-01 1.47959088e-01 1.47284591e-01 1.46611771e-01 1.45940631e-01 + 1.45271170e-01 1.44603388e-01 1.43937285e-01 1.43272862e-01 1.42610118e-01 + 1.41949054e-01 1.41289670e-01 1.40631966e-01 1.39975942e-01 1.39321598e-01 + 1.38668935e-01 1.38017953e-01 1.37368652e-01 1.36721031e-01 1.36075091e-01 + 1.35430833e-01 1.34788256e-01 1.34147361e-01 1.33508147e-01 1.32870615e-01 + 1.32234765e-01 1.31600597e-01 1.30968111e-01 1.30337308e-01 1.29708187e-01 + 1.29080749e-01 1.28454994e-01 1.27830921e-01 1.27208532e-01 1.26587826e-01 + 1.25968803e-01 1.25351464e-01 1.24735808e-01 1.24121836e-01 1.23509548e-01 + 1.22898944e-01 1.22290024e-01 1.21682789e-01 1.21077238e-01 1.20473372e-01 + 1.19871190e-01 1.19270693e-01 1.18671881e-01 1.18074755e-01 1.17479313e-01 + 1.16885558e-01 1.16293487e-01 1.15703102e-01 1.15114403e-01 1.14527390e-01 + 1.13942064e-01 1.13358423e-01 1.12776468e-01 1.12196200e-01 1.11617619e-01 + 1.11040725e-01 1.10465517e-01 1.09891996e-01 1.09320162e-01 1.08750016e-01 + 1.08181557e-01 1.07614785e-01 1.07049701e-01 1.06486305e-01 1.05924597e-01 + 1.05364577e-01 1.04806244e-01 1.04249601e-01 1.03694645e-01 1.03141378e-01 + 1.02589800e-01 1.02039910e-01 1.01491709e-01 1.00945198e-01 1.00400375e-01 + 9.98572416e-02 9.93157976e-02 9.87760431e-02 9.82379782e-02 9.77016030e-02 + 9.71669178e-02 9.66339224e-02 9.61026172e-02 9.55730022e-02 9.50450776e-02 + 9.45188434e-02 9.39942997e-02 9.34714468e-02 9.29502847e-02 9.24308135e-02 + 9.19130333e-02 9.13969443e-02 9.08825466e-02 9.03698403e-02 8.98588255e-02 + 8.93495023e-02 8.88418708e-02 8.83359312e-02 8.78316836e-02 8.73291281e-02 + 8.68282647e-02 8.63290937e-02 8.58316150e-02 8.53358290e-02 8.48417355e-02 + 8.43493348e-02 8.38586270e-02 8.33696121e-02 8.28822904e-02 8.23966618e-02 + 8.19127265e-02 8.14304847e-02 8.09499364e-02 8.04710817e-02 7.99939207e-02 + 7.95184537e-02 7.90446805e-02 7.85726014e-02 7.81022165e-02 7.76335259e-02 + 7.71665296e-02 7.67012279e-02 7.62376207e-02 7.57757082e-02 7.53154905e-02 + 7.48569677e-02 7.44001400e-02 7.39450073e-02 7.34915699e-02 7.30398277e-02 + 7.25897810e-02 7.21414298e-02 7.16947743e-02 7.12498144e-02 7.08065504e-02 + 7.03649822e-02 6.99251102e-02 6.94869342e-02 6.90504544e-02 6.86156710e-02 + 6.81825840e-02 6.77511935e-02 6.73214996e-02 6.68935024e-02 6.64672020e-02 + 6.60425985e-02 6.56196920e-02 6.51984826e-02 6.47789704e-02 6.43611555e-02 + 6.39450379e-02 6.35306178e-02 6.31178953e-02 6.27068704e-02 6.22975433e-02 + 6.18899141e-02 6.14839827e-02 6.10797494e-02 6.06772142e-02 6.02763772e-02 + 5.98772385e-02 5.94797982e-02 5.90840564e-02 5.86900131e-02 5.82976685e-02 + 5.79070227e-02 5.75180757e-02 5.71308276e-02 5.67452785e-02 5.63614285e-02 + 5.59792777e-02 5.55988261e-02 5.52200739e-02 5.48430212e-02 5.44676679e-02 + 5.40940143e-02 5.37220604e-02 5.33518062e-02 5.29832520e-02 5.26163976e-02 + 5.22512433e-02 5.18877891e-02 5.15260351e-02 5.11659814e-02 5.08076280e-02 + 5.04509751e-02 5.00960227e-02 4.97427708e-02 4.93912197e-02 4.90413693e-02 + 4.86932198e-02 4.83467711e-02 4.80020235e-02 4.76589769e-02 4.73176315e-02 + 4.69779873e-02 4.66400444e-02 4.63038029e-02 4.59692628e-02 4.56364243e-02 + 4.53052874e-02 4.49758521e-02 4.46481186e-02 4.43220870e-02 4.39977572e-02 + 4.36751294e-02 4.33542037e-02 4.30349801e-02 4.27174587e-02 4.24016395e-02 + 4.20875227e-02 4.17751083e-02 4.14643964e-02 4.11553870e-02 4.08480802e-02 + 4.05424762e-02 4.02385749e-02 3.99363764e-02 3.96358808e-02 3.93370881e-02 + 3.90399985e-02 3.87446120e-02 3.84509287e-02 3.81589486e-02 3.78686718e-02 + 3.75800983e-02 3.72932283e-02 3.70080618e-02 3.67245988e-02 3.64428394e-02 + 3.61627838e-02 3.58844318e-02 3.56077837e-02 3.53328395e-02 3.50595992e-02 + 3.47880629e-02 3.45182306e-02 3.42501025e-02 3.39836786e-02 3.37189589e-02 + 3.34559435e-02 3.31946324e-02 3.29350258e-02 3.26771236e-02 3.24209260e-02 + 3.21664330e-02 3.19136446e-02 3.16625610e-02 3.14131821e-02 3.11655080e-02 + 3.09195388e-02 3.06752746e-02 3.04327153e-02 3.01918611e-02 2.99527120e-02 + 2.97152680e-02 2.94795292e-02 2.92454957e-02 2.90131675e-02 2.87825447e-02 + 2.85536273e-02 2.83264153e-02 2.81009089e-02 2.78771081e-02 2.76550128e-02 + 2.74346233e-02 2.72159395e-02 2.69989614e-02 2.67836892e-02 2.65701228e-02 + 2.63582623e-02 2.61481079e-02 2.59396594e-02 2.57329170e-02 2.55278807e-02 + 2.53245505e-02 2.51229266e-02 2.49230089e-02 2.47247975e-02 2.45282924e-02 + 2.43334937e-02 2.41404014e-02 2.39490156e-02 2.37593363e-02 2.35713636e-02 + 2.33850975e-02 2.32005380e-02 2.30176851e-02 2.28365390e-02 2.26570997e-02 + 2.24793672e-02 2.23033415e-02 2.21290227e-02 2.19564108e-02 2.17855059e-02 + 2.16163080e-02 2.14488171e-02 2.12830333e-02 2.11189566e-02 2.09565871e-02 + 2.07959248e-02 2.06369696e-02 2.04797218e-02 2.03241812e-02 2.01703480e-02 + 2.00182221e-02 1.98678037e-02 1.97190927e-02 1.95720891e-02 1.94267931e-02 + 1.92832045e-02 1.91413236e-02 1.90011502e-02 1.88626845e-02 1.87259265e-02 + 1.85908761e-02 1.84575335e-02 1.83258986e-02 1.81959715e-02 1.80677522e-02 + 1.79412408e-02 1.78164372e-02 1.76933415e-02 1.75719538e-02 1.74522740e-02 + 1.73343022e-02 1.72180384e-02 1.71034827e-02 1.69906350e-02 1.68794954e-02 + 1.67700639e-02 1.66623405e-02 1.65563253e-02 1.64520183e-02 1.63494195e-02 + 1.62485289e-02 1.61493466e-02 1.60518726e-02 1.59561068e-02 1.58620494e-02 + 1.57697003e-02 1.56790596e-02 1.55901273e-02 1.55029034e-02 1.54173879e-02 + 1.53335808e-02 1.52514822e-02 1.51710921e-02 1.50924105e-02 1.50154374e-02 + 1.49401728e-02 1.48666168e-02 1.47947694e-02 1.47246305e-02 1.46562002e-02 + 1.45894786e-02 1.45244656e-02 1.44611612e-02 1.43995655e-02 1.43396785e-02 + 1.42815001e-02 1.42250305e-02 1.41702695e-02 1.41172173e-02 1.40658738e-02 + 1.40162391e-02 1.39683132e-02 1.39220960e-02 1.38775876e-02 1.38347880e-02 + 1.37936971e-02 1.37543151e-02 1.37166420e-02 1.36806776e-02 1.36464221e-02 + 1.36138754e-02 1.35830376e-02 1.35539086e-02 1.35264885e-02 1.35007773e-02 + 1.34767750e-02 1.34544815e-02 1.34338969e-02 1.34150212e-02 1.33978544e-02 + 1.33823966e-02 1.33686476e-02 1.33566075e-02 1.33462763e-02 1.33376541e-02 + 1.33307407e-02 1.33255363e-02 1.33220408e-02 1.33202542e-02 1.33201765e-02 + 1.33218078e-02 1.33251480e-02 1.33301970e-02 1.33369550e-02 1.33454220e-02 + 1.33555978e-02 1.33674825e-02 1.33810762e-02 1.33963787e-02 1.34133902e-02 + 1.34321105e-02 1.34525397e-02 1.34746779e-02 1.34985249e-02 1.35240808e-02 + 1.35513455e-02 1.35803192e-02 1.36110016e-02 1.36433930e-02 1.36774932e-02 + 1.37133022e-02 1.37508200e-02 1.37900467e-02 1.38309822e-02 1.38736265e-02 + 1.39179796e-02 1.39640414e-02 1.40118121e-02 1.40612914e-02 1.41124796e-02 + 1.41653765e-02 1.42199821e-02 1.42762964e-02 1.43343194e-02 1.43940512e-02 + 1.44554916e-02 1.45186406e-02 1.45834983e-02 1.46500646e-02 1.47183396e-02 + 1.47883231e-02 1.48600153e-02 1.49334160e-02 1.50085252e-02 1.50853430e-02 + 1.51638693e-02 1.52441041e-02 1.53260474e-02 1.54096992e-02 1.54950594e-02 + 1.55821280e-02 1.56709051e-02 1.57613905e-02 1.58535843e-02 1.59474864e-02 + 1.60430969e-02 1.61404156e-02 1.62394427e-02 1.63401780e-02 1.64426215e-02 + 1.65467732e-02 1.66526331e-02 1.67602012e-02 1.68694775e-02 1.69804618e-02 + 1.70931542e-02 1.72075547e-02 1.73236633e-02 1.74414798e-02 1.75610043e-02 + 1.76822368e-02 1.78051772e-02 1.79298256e-02 1.80561818e-02 1.81842458e-02 + 1.83140177e-02 1.84454973e-02 1.85786847e-02 1.87135798e-02 1.88501827e-02 + 1.89884931e-02 1.91285113e-02 1.92702370e-02 1.94136703e-02 1.95588111e-02 + 1.97056595e-02 1.98542153e-02 2.00044786e-02 2.01564492e-02 2.03101272e-02 + 2.04655126e-02 2.06226053e-02 2.07814052e-02 2.09419123e-02 2.11041267e-02 + 2.12680482e-02 2.14336768e-02 2.16010125e-02 2.17700553e-02 2.19408050e-02 + 2.21132617e-02 2.22874254e-02 2.24632959e-02 2.26408733e-02 2.28201575e-02 + 2.30011484e-02 2.31838461e-02 2.33682505e-02 2.35543615e-02 2.37421791e-02 + 2.39317033e-02 2.41229339e-02 2.43158711e-02 2.45105147e-02 2.47068647e-02 + 2.49049210e-02 2.51046836e-02 2.53061524e-02 2.55093275e-02 2.57142087e-02 + 2.59207960e-02 2.61290894e-02 2.63390888e-02 2.65507942e-02 2.67642055e-02 + 2.69793227e-02 2.71961457e-02 2.74146744e-02 2.76349090e-02 2.78568491e-02 + 2.80804949e-02 2.83058463e-02 2.85329032e-02 2.87616656e-02 2.89921334e-02 + 2.92243066e-02 2.94581851e-02 2.96937689e-02 2.99310578e-02 3.01700520e-02 + 3.04107512e-02 3.06531555e-02 3.08972648e-02 3.11430790e-02 3.13905981e-02 + 3.16398220e-02 3.18907507e-02 3.21433841e-02 3.23977222e-02 3.26537648e-02 + 3.29115120e-02 3.31709637e-02 3.34321199e-02 3.36949803e-02 3.39595451e-02 + 3.42258142e-02 3.44937874e-02 3.47634647e-02 3.50348461e-02 3.53079315e-02 + 3.55827209e-02 3.58592141e-02 3.61374112e-02 3.64173120e-02 3.66989165e-02 + 3.69822246e-02 3.72672363e-02 3.75539515e-02 3.78423701e-02 3.81324920e-02 + 3.84243173e-02 3.87178458e-02 3.90130775e-02 3.93100123e-02 3.96086502e-02 + 3.99089910e-02 4.02110347e-02 4.05147812e-02 4.08202305e-02 4.11273825e-02 + 4.14362371e-02 4.17467942e-02 4.20590539e-02 4.23730160e-02 4.26886804e-02 + 4.30060471e-02 4.33251159e-02 4.36458870e-02 4.39683600e-02 4.42925351e-02 + 4.46184120e-02 4.49459908e-02 4.52752714e-02 4.56062536e-02 4.59389375e-02 + 4.62733229e-02 4.66094097e-02 4.69471980e-02 4.72866875e-02 4.76278783e-02 + 4.79707703e-02 4.83153633e-02 4.86616573e-02 4.90096522e-02 4.93593480e-02 + 4.97107446e-02 5.00638418e-02 5.04186396e-02 5.07751380e-02 5.11333368e-02 + 5.14932360e-02 5.18548354e-02 5.22181351e-02 5.25831349e-02 5.29498347e-02 + 5.33182344e-02 5.36883341e-02 5.40601335e-02 5.44336326e-02 5.48088313e-02 + 5.51857296e-02 5.55643273e-02 5.59446244e-02 5.63266207e-02 5.67103163e-02 + 5.70957109e-02 5.74828046e-02 5.78715972e-02 5.82620886e-02 5.86542788e-02 + 5.90481677e-02 5.94437551e-02 5.98410410e-02 6.02400253e-02 6.06407080e-02 + 6.10430888e-02 6.14471678e-02 6.18529447e-02 6.22604197e-02 6.26695925e-02 + 6.30804630e-02 6.34930312e-02 6.39072970e-02 6.43232602e-02 6.47409209e-02 + 6.51602788e-02 6.55813340e-02 6.60040862e-02 6.64285354e-02 6.68546816e-02 + 6.72825245e-02 6.77120642e-02 6.81433005e-02 6.85762333e-02 6.90108625e-02 + 6.94471881e-02 6.98852099e-02 7.03249278e-02 7.07663417e-02 7.12094516e-02 + 7.16542573e-02 7.21007588e-02 7.25489558e-02 7.29988484e-02 7.34504365e-02 + 7.39037198e-02 7.43586984e-02 7.48153721e-02 7.52737408e-02 7.57338044e-02 + 7.61955628e-02 7.66590160e-02 7.71241637e-02 7.75910059e-02 7.80595425e-02 + 7.85297734e-02 7.90016985e-02 7.94753177e-02 7.99506308e-02 8.04276378e-02 + 8.09063385e-02 8.13867329e-02 8.18688208e-02 8.23526021e-02 8.28380768e-02 + 8.33252446e-02 8.38141056e-02 8.43046595e-02 8.47969063e-02 8.52908459e-02 + 8.57864782e-02 8.62838029e-02 8.67828201e-02 8.72835297e-02 8.77859314e-02 + 8.82900252e-02 8.87958110e-02 8.93032887e-02 8.98124581e-02 9.03233191e-02 + 9.08358717e-02 9.13501157e-02 9.18660509e-02 9.23836774e-02 9.29029949e-02 + 9.34240033e-02 9.39467025e-02 9.44710925e-02 9.49971730e-02 9.55249440e-02 + 9.60544054e-02 9.65855570e-02 9.71183987e-02 9.76529303e-02 9.81891519e-02 + 9.87270632e-02 9.92666641e-02 9.98079545e-02 1.00350934e-01 1.00895603e-01 + 1.01441962e-01 1.01990009e-01 1.02539745e-01 1.03091170e-01 1.03644283e-01 + 1.04199085e-01 1.04755576e-01 1.05313754e-01 1.05873621e-01 1.06435176e-01 + 1.06998419e-01 1.07563349e-01 1.08129968e-01 1.08698273e-01 1.09268266e-01 + 1.09839947e-01 1.10413314e-01 1.10988368e-01 1.11565110e-01 1.12143538e-01 + 1.12723652e-01 1.13305453e-01 1.13888941e-01 1.14474115e-01 1.15060974e-01 + 1.15649520e-01 1.16239751e-01 1.16831669e-01 1.17425271e-01 1.18020560e-01 + 1.18617533e-01 1.19216192e-01 1.19816535e-01 1.20418564e-01 1.21022277e-01 + 1.21627675e-01 1.22234757e-01 1.22843524e-01 1.23453975e-01 1.24066109e-01 + 1.24679928e-01 1.25295431e-01 1.25912617e-01 1.26531487e-01 1.27152040e-01 + 1.27774276e-01 1.28398196e-01 1.29023798e-01 1.29651083e-01 1.30280051e-01 + 1.30910702e-01 1.31543034e-01 1.32177050e-01 1.32812747e-01 1.33450126e-01 + 1.34089187e-01 1.34729929e-01 1.35372353e-01 1.36016459e-01 1.36662246e-01 + 1.37309713e-01 1.37958862e-01 1.38609692e-01 1.39262202e-01 1.39916393e-01 + 1.40572264e-01 1.41229815e-01 1.41889046e-01 1.42549958e-01 1.43212549e-01 + 1.43876819e-01 1.44542770e-01 1.45210399e-01 1.45879708e-01 1.46550695e-01 + 1.47223362e-01 1.47897707e-01 1.48573731e-01 1.49251433e-01 1.49930814e-01 + 1.50611872e-01 1.51294609e-01 1.51979023e-01 1.52665115e-01 1.53352885e-01 + 1.54042332e-01 1.54733456e-01 1.55426257e-01 1.56120735e-01 1.56816890e-01 + 1.57514721e-01 1.58214229e-01 1.58915413e-01 1.59618273e-01 1.60322809e-01 + 1.61029020e-01 1.61736908e-01 1.62446471e-01 1.63157709e-01 1.63870622e-01 + 1.64585210e-01 1.65301473e-01 1.66019411e-01 1.66739023e-01 1.67460310e-01 + 1.68183271e-01 1.68907906e-01 1.69634214e-01 1.70362197e-01 1.71091853e-01 + 1.71823182e-01 1.72556184e-01 1.73290860e-01 1.74027208e-01 1.74765229e-01 + 1.75504923e-01 1.76246289e-01 1.76989327e-01 1.77734037e-01 1.78480419e-01 + 1.79228473e-01 1.79978199e-01 1.80729595e-01 1.81482663e-01 1.82237402e-01 + 1.82993812e-01 1.83751893e-01 1.84511644e-01 1.85273065e-01 1.86036157e-01 + 1.86800919e-01 1.87567350e-01 1.88335451e-01 1.89105222e-01 1.89876662e-01 + 1.90649771e-01 1.91424549e-01 1.92200996e-01 1.92979112e-01 1.93758896e-01 + 1.94540348e-01 1.95323469e-01 1.96108257e-01 1.96894713e-01 1.97682837e-01 + 1.98472628e-01 1.99264087e-01 2.00057212e-01 2.00852004e-01 2.01648463e-01 + 2.02446589e-01 2.03246381e-01 2.04047839e-01 2.04850963e-01 2.05655753e-01 + 2.06462208e-01 2.07270329e-01 2.08080115e-01 2.08891567e-01 2.09704683e-01 + 2.10519464e-01 2.11335909e-01 2.12154019e-01 2.12973793e-01 2.13795231e-01 + 2.14618333e-01 2.15443098e-01 2.16269527e-01 2.17097619e-01 2.17927374e-01 + 2.18758792e-01 2.19591873e-01 2.20426616e-01 2.21263022e-01 2.22101090e-01 + 2.22940819e-01 2.23782211e-01 2.24625264e-01 2.25469978e-01 2.26316354e-01 + 2.27164390e-01 2.28014088e-01 2.28865446e-01 2.29718464e-01 2.30573143e-01 + 2.31429482e-01 2.32287480e-01 2.33147139e-01 2.34008457e-01 2.34871434e-01 + 2.35736070e-01 2.36602365e-01 2.37470319e-01 2.38339931e-01 2.39211202e-01 + 2.40084131e-01 2.40958717e-01 2.41834962e-01 2.42712864e-01 2.43592423e-01 + 2.44473640e-01 2.45356513e-01 2.46241044e-01 2.47127230e-01 2.48015074e-01 + 2.48904573e-01 2.49795728e-01 2.50688539e-01 2.51583006e-01 2.52479128e-01 + 2.53376905e-01 2.54276337e-01 2.55177424e-01 2.56080166e-01 2.56984562e-01 + 2.57890612e-01 2.58798316e-01 2.59707674e-01 2.60618685e-01 2.61531350e-01 + 2.62445667e-01 2.63361638e-01 2.64279262e-01 2.65198538e-01 2.66119466e-01 + 2.67042047e-01 2.67966279e-01 2.68892164e-01 2.69819699e-01 2.70748886e-01 + 2.71679724e-01 2.72612213e-01 2.73546353e-01 2.74482143e-01 2.75419584e-01 + 2.76358674e-01 2.77299415e-01 2.78241805e-01 2.79185844e-01 2.80131533e-01 + 2.81078870e-01 2.82027857e-01 2.82978492e-01 2.83930775e-01 2.84884707e-01 + 2.85840287e-01 2.86797514e-01 2.87756389e-01 2.88716911e-01 2.89679080e-01 + 2.90642896e-01 2.91608359e-01 2.92575468e-01 2.93544224e-01 2.94514625e-01 + 2.95486673e-01 2.96460366e-01 2.97435704e-01 2.98412687e-01 2.99391316e-01 + 3.00371589e-01 3.01353507e-01 3.02337069e-01 3.03322275e-01 3.04309125e-01 + 3.05297618e-01 3.06287755e-01 3.07279535e-01 3.08272958e-01 3.09268024e-01 + 3.10264733e-01 3.11263084e-01 3.12263076e-01 3.13264711e-01 3.14267987e-01 + 3.15272905e-01 3.16279464e-01 3.17287664e-01 3.18297505e-01 3.19308986e-01 + 3.20322108e-01 3.21336869e-01 3.22353271e-01 3.23371312e-01 3.24390992e-01 + 3.25412312e-01 3.26435271e-01 3.27459868e-01 3.28486104e-01 3.29513978e-01 + 3.30543490e-01 3.31574640e-01 3.32607428e-01 3.33641852e-01 3.34677914e-01 + 3.35715613e-01 3.36754949e-01 3.37795921e-01 3.38838529e-01 3.39882774e-01 + 3.40928653e-01 3.41976169e-01 3.43025320e-01 3.44076105e-01 3.45128526e-01 + 3.46182581e-01 3.47238271e-01 3.48295594e-01 3.49354552e-01 3.50415143e-01 + 3.51477368e-01 3.52541225e-01 3.53606716e-01 3.54673839e-01 3.55742595e-01 + 3.56812983e-01 3.57885003e-01 3.58958655e-01 3.60033939e-01 3.61110853e-01 + 3.62189399e-01 3.63269575e-01 3.64351382e-01 3.65434820e-01 3.66519887e-01 + 3.67606584e-01 3.68694911e-01 3.69784868e-01 3.70876453e-01 3.71969667e-01 + 3.73064510e-01 3.74160981e-01 3.75259081e-01 3.76358808e-01 3.77460163e-01 + 3.78563145e-01 3.79667755e-01 3.80773992e-01 3.81881855e-01 3.82991344e-01 + 3.84102460e-01 3.85215202e-01 3.86329570e-01 3.87445563e-01 3.88563181e-01 + 3.89682424e-01 3.90803292e-01 3.91925784e-01 3.93049901e-01 3.94175642e-01 + 3.95303006e-01 3.96431994e-01 3.97562605e-01 3.98694839e-01 3.99828696e-01 + 4.00964175e-01 4.02101276e-01 4.03240000e-01 4.04380345e-01 4.05522312e-01 + 4.06665899e-01 4.07811108e-01 4.08957938e-01 4.10106388e-01 4.11256458e-01 + 4.12408148e-01 4.13561458e-01 4.14716388e-01 4.15872936e-01 4.17031104e-01 + 4.18190890e-01 4.19352295e-01 4.20515317e-01 4.21679958e-01 4.22846216e-01 + 4.24014092e-01 4.25183585e-01 4.26354695e-01 4.27527421e-01 4.28701764e-01 + 4.29877723e-01 4.31055298e-01 4.32234488e-01 4.33415294e-01 4.34597715e-01 + 4.35781751e-01 4.36967401e-01 4.38154665e-01 4.39343544e-01 4.40534036e-01 + 4.41726142e-01 4.42919861e-01 4.44115193e-01 4.45312138e-01 4.46510695e-01 + 4.47710864e-01 4.48912645e-01 4.50116038e-01 4.51321043e-01 4.52527658e-01 + 4.53735885e-01 4.54945722e-01 4.56157169e-01 4.57370226e-01 4.58584894e-01 + 4.59801170e-01 4.61019056e-01 4.62238551e-01 4.63459655e-01 4.64682367e-01 + 4.65906688e-01 4.67132616e-01 4.68360152e-01 4.69589295e-01 4.70820046e-01 + 4.72052403e-01 4.73286367e-01 4.74521937e-01 4.75759113e-01 4.76997895e-01 + 4.78238283e-01 4.79480276e-01 4.80723873e-01 4.81969076e-01 4.83215882e-01 + 4.84464293e-01 4.85714308e-01 4.86965926e-01 4.88219148e-01 4.89473972e-01 + 4.90730400e-01 4.91988430e-01 4.93248062e-01 4.94509296e-01 4.95772131e-01 + 4.97036568e-01 4.98302606e-01 4.99570245e-01 5.00839485e-01 5.02110324e-01 + 5.03382764e-01 5.04656804e-01 5.05932442e-01 5.07209680e-01 5.08488517e-01 + 5.09768953e-01 5.11050986e-01 5.12334618e-01 5.13619847e-01 5.14906674e-01 + 5.16195098e-01 5.17485119e-01 5.18776737e-01 5.20069951e-01 5.21364761e-01 + 5.22661167e-01 5.23959168e-01 5.25258764e-01 5.26559955e-01 5.27862741e-01 + 5.29167122e-01 5.30473096e-01 5.31780664e-01 5.33089826e-01 5.34400580e-01 + 5.35712928e-01 5.37026868e-01 5.38342401e-01 5.39659526e-01 5.40978242e-01 + 5.42298550e-01 5.43620449e-01 5.44943939e-01 5.46269020e-01 5.47595691e-01 + 5.48923952e-01 5.50253802e-01 5.51585242e-01 5.52918272e-01 5.54252890e-01 + 5.55589096e-01 5.56926891e-01 5.58266274e-01 5.59607245e-01 5.60949803e-01 + 5.62293948e-01 5.63639680e-01 5.64986999e-01 5.66335903e-01 5.67686394e-01 + 5.69038470e-01 5.70392132e-01 5.71747378e-01 5.73104210e-01 5.74462626e-01 + 5.75822626e-01 5.77184210e-01 5.78547377e-01 5.79912128e-01 5.81278461e-01 + 5.82646378e-01 5.84015876e-01 5.85386957e-01 5.86759620e-01 5.88133864e-01 + 5.89509689e-01 5.90887095e-01 5.92266082e-01 5.93646649e-01 5.95028796e-01 + 5.96412522e-01 5.97797828e-01 5.99184713e-01 6.00573177e-01 6.01963219e-01 + 6.03354840e-01 6.04748038e-01 6.06142814e-01 6.07539167e-01 6.08937097e-01 + 6.10336603e-01 6.11737686e-01 6.13140346e-01 6.14544580e-01 6.15950391e-01 + 6.17357776e-01 6.18766736e-01 6.20177271e-01 6.21589379e-01 6.23003062e-01 + 6.24418319e-01 6.25835148e-01 6.27253551e-01 6.28673526e-01 6.30095073e-01 + 6.31518193e-01 6.32942884e-01 6.34369147e-01 6.35796981e-01 6.37226386e-01 + 6.38657361e-01 6.40089906e-01 6.41524022e-01 6.42959706e-01 6.44396960e-01 + 6.45835783e-01 6.47276175e-01 6.48718135e-01 6.50161663e-01 6.51606758e-01 + 6.53053421e-01 6.54501651e-01 6.55951448e-01 6.57402811e-01 6.58855740e-01 + 6.60310236e-01 6.61766296e-01 6.63223922e-01 6.64683112e-01 6.66143868e-01 + 6.67606187e-01 6.69070070e-01 6.70535517e-01 6.72002527e-01 6.73471100e-01 + 6.74941236e-01 6.76412934e-01 6.77886194e-01 6.79361015e-01 6.80837398e-01 + 1.19316516e-02 1.17837661e-02 1.16368916e-02 1.14910312e-02 1.13461881e-02 + 1.12023652e-02 1.10595657e-02 1.09177924e-02 1.07770486e-02 1.06373371e-02 + 1.04986608e-02 1.03610229e-02 1.02244262e-02 1.00888736e-02 9.95436796e-03 + 9.82091227e-03 9.68850936e-03 9.55716205e-03 9.42687318e-03 9.29764555e-03 + 9.16948195e-03 9.04238514e-03 8.91635788e-03 8.79140288e-03 8.66752287e-03 + 8.54472052e-03 8.42299850e-03 8.30235947e-03 8.18280604e-03 8.06434082e-03 + 7.94696640e-03 7.83068535e-03 7.71550020e-03 7.60141348e-03 7.48842769e-03 + 7.37654531e-03 7.26576880e-03 7.15610060e-03 7.04754311e-03 6.94009874e-03 + 6.83376985e-03 6.72855879e-03 6.62446789e-03 6.52149946e-03 6.41965576e-03 + 6.31893907e-03 6.21935162e-03 6.12089562e-03 6.02357326e-03 5.92738670e-03 + 5.83233810e-03 5.73842957e-03 5.64566320e-03 5.55404108e-03 5.46356524e-03 + 5.37423772e-03 5.28606051e-03 5.19903560e-03 5.11316493e-03 5.02845043e-03 + 4.94489402e-03 4.86249756e-03 4.78126291e-03 4.70119191e-03 4.62228636e-03 + 4.54454803e-03 4.46797870e-03 4.39258007e-03 4.31835387e-03 4.24530177e-03 + 4.17342543e-03 4.10272646e-03 4.03320649e-03 3.96486708e-03 3.89770979e-03 + 3.83173614e-03 3.76694764e-03 3.70334576e-03 3.64093194e-03 3.57970760e-03 + 3.51967415e-03 3.46083296e-03 3.40318535e-03 3.34673266e-03 3.29147617e-03 + 3.23741715e-03 3.18455682e-03 3.13289641e-03 3.08243708e-03 3.03318001e-03 + 2.98512631e-03 2.93827709e-03 2.89263342e-03 2.84819635e-03 2.80496690e-03 + 2.76294607e-03 2.72213481e-03 2.68253407e-03 2.64414475e-03 2.60696775e-03 + 2.57100391e-03 2.53625406e-03 2.50271900e-03 2.47039951e-03 2.43929633e-03 + 2.40941017e-03 2.38074173e-03 2.35329167e-03 2.32706061e-03 2.30204917e-03 + 2.27825792e-03 2.25568742e-03 2.23433817e-03 2.21421068e-03 2.19530540e-03 + 2.17762279e-03 2.16116324e-03 2.14592713e-03 2.13191482e-03 2.11912664e-03 + 2.10756286e-03 2.09722378e-03 2.08810961e-03 2.08022058e-03 2.07355687e-03 + 2.06811863e-03 2.06390598e-03 2.06091903e-03 2.05915784e-03 2.05862245e-03 + 2.05931288e-03 2.06122911e-03 2.06437109e-03 2.06873876e-03 2.07433201e-03 + 2.08115071e-03 2.08919471e-03 2.09846382e-03 2.10895782e-03 2.12067647e-03 + 2.13361950e-03 2.14778662e-03 2.16317748e-03 2.17979175e-03 2.19762903e-03 + 2.21668892e-03 2.23697097e-03 2.25847471e-03 2.28119965e-03 2.30514526e-03 + 2.33031099e-03 2.35669626e-03 2.38430046e-03 2.41312296e-03 2.44316308e-03 + 2.47442014e-03 2.50689342e-03 2.54058217e-03 2.57548561e-03 2.61160294e-03 + 2.64893333e-03 2.68747592e-03 2.72722982e-03 2.76819412e-03 2.81036787e-03 + 2.85375012e-03 2.89833986e-03 2.94413606e-03 2.99113769e-03 3.03934365e-03 + 3.08875285e-03 3.13936416e-03 3.19117640e-03 3.24418841e-03 3.29839896e-03 + 3.35380682e-03 3.41041071e-03 3.46820936e-03 3.52720143e-03 3.58738558e-03 + 3.64876043e-03 3.71132460e-03 3.77507665e-03 3.84001514e-03 3.90613858e-03 + 3.97344547e-03 4.04193428e-03 4.11160346e-03 4.18245143e-03 4.25447658e-03 + 4.32767727e-03 4.40205185e-03 4.47759865e-03 4.55431593e-03 4.63220199e-03 + 4.71125505e-03 4.79147333e-03 4.87285502e-03 4.95539830e-03 5.03910129e-03 + 5.12396213e-03 5.20997890e-03 5.29714966e-03 5.38547247e-03 5.47494535e-03 + 5.56556628e-03 5.65733324e-03 5.75024419e-03 5.84429703e-03 5.93948968e-03 + 6.03582001e-03 6.13328588e-03 6.23188511e-03 6.33161551e-03 6.43247487e-03 + 6.53446095e-03 6.63757148e-03 6.74180419e-03 6.84715676e-03 6.95362687e-03 + 7.06121216e-03 7.16991026e-03 7.27971878e-03 7.39063530e-03 7.50265737e-03 + 7.61578255e-03 7.73000833e-03 7.84533223e-03 7.96175172e-03 8.07926424e-03 + 8.19786724e-03 8.31755813e-03 8.43833428e-03 8.56019309e-03 8.68313189e-03 + 8.80714802e-03 8.93223879e-03 9.05840148e-03 9.18563337e-03 9.31393170e-03 + 9.44329371e-03 9.57371661e-03 9.70519759e-03 9.83773382e-03 9.97132246e-03 + 1.01059606e-02 1.02416455e-02 1.03783741e-02 1.05161435e-02 1.06549508e-02 + 1.07947931e-02 1.09356673e-02 1.10775705e-02 1.12204997e-02 1.13644517e-02 + 1.15094237e-02 1.16554125e-02 1.18024151e-02 1.19504282e-02 1.20994490e-02 + 1.22494741e-02 1.24005005e-02 1.25525250e-02 1.27055444e-02 1.28595555e-02 + 1.30145552e-02 1.31705401e-02 1.33275071e-02 1.34854528e-02 1.36443741e-02 + 1.38042677e-02 1.39651301e-02 1.41269582e-02 1.42897485e-02 1.44534978e-02 + 1.46182027e-02 1.47838598e-02 1.49504657e-02 1.51180170e-02 1.52865103e-02 + 1.54559422e-02 1.56263093e-02 1.57976080e-02 1.59698349e-02 1.61429866e-02 + 1.63170596e-02 1.64920502e-02 1.66679551e-02 1.68447707e-02 1.70224935e-02 + 1.72011198e-02 1.73806462e-02 1.75610691e-02 1.77423848e-02 1.79245899e-02 + 1.81076806e-02 1.82916533e-02 1.84765045e-02 1.86622305e-02 1.88488276e-02 + 1.90362922e-02 1.92246206e-02 1.94138091e-02 1.96038541e-02 1.97947518e-02 + 1.99864985e-02 2.01790905e-02 2.03725242e-02 2.05667957e-02 2.07619013e-02 + 2.09578372e-02 2.11545998e-02 2.13521852e-02 2.15505896e-02 2.17498093e-02 + 2.19498405e-02 2.21506794e-02 2.23523222e-02 2.25547650e-02 2.27580040e-02 + 2.29620355e-02 2.31668555e-02 2.33724603e-02 2.35788460e-02 2.37860087e-02 + 2.39939446e-02 2.42026499e-02 2.44121205e-02 2.46223528e-02 2.48333427e-02 + 2.50450864e-02 2.52575801e-02 2.54708198e-02 2.56848016e-02 2.58995216e-02 + 2.61149759e-02 2.63311606e-02 2.65480717e-02 2.67657054e-02 2.69840578e-02 + 2.72031248e-02 2.74229026e-02 2.76433871e-02 2.78645746e-02 2.80864610e-02 + 2.83090425e-02 2.85323149e-02 2.87562745e-02 2.89809172e-02 2.92062390e-02 + 2.94322361e-02 2.96589045e-02 2.98862402e-02 3.01142392e-02 3.03428976e-02 + 3.05722114e-02 3.08021766e-02 3.10327893e-02 3.12640455e-02 3.14959413e-02 + 3.17284726e-02 3.19616355e-02 3.21954260e-02 3.24298402e-02 3.26648740e-02 + 3.29005236e-02 3.31367848e-02 3.33736539e-02 3.36111267e-02 3.38491993e-02 + 3.40878677e-02 3.43271281e-02 3.45669763e-02 3.48074084e-02 3.50484206e-02 + 3.52900087e-02 3.55321689e-02 3.57748971e-02 3.60181895e-02 3.62620420e-02 + 3.65064508e-02 3.67514117e-02 3.69969210e-02 3.72429746e-02 3.74895686e-02 + 3.77366991e-02 3.79843621e-02 3.82325537e-02 3.84812698e-02 3.87305067e-02 + 3.89802604e-02 3.92305269e-02 3.94813024e-02 3.97325829e-02 3.99843644e-02 + 4.02366431e-02 4.04894151e-02 4.07426765e-02 4.09964234e-02 4.12506518e-02 + 4.15053579e-02 4.17605378e-02 4.20161876e-02 4.22723034e-02 4.25288815e-02 + 4.27859178e-02 4.30434086e-02 4.33013499e-02 4.35597380e-02 4.38185689e-02 + 4.40778389e-02 4.43375441e-02 4.45976807e-02 4.48582449e-02 4.51192328e-02 + 4.53806406e-02 4.56424645e-02 4.59047007e-02 4.61673455e-02 4.64303950e-02 + 4.66938455e-02 4.69576932e-02 4.72219342e-02 4.74865650e-02 4.77515816e-02 + 4.80169804e-02 4.82827576e-02 4.85489095e-02 4.88154324e-02 4.90823225e-02 + 4.93495761e-02 4.96171896e-02 4.98851592e-02 5.01534812e-02 5.04221520e-02 + 5.06911679e-02 5.09605252e-02 5.12302202e-02 5.15002494e-02 5.17706091e-02 + 5.20412956e-02 5.23123054e-02 5.25836347e-02 5.28552801e-02 5.31272378e-02 + 5.33995044e-02 5.36720762e-02 5.39449496e-02 5.42181211e-02 5.44915872e-02 + 5.47653442e-02 5.50393887e-02 5.53137171e-02 5.55883259e-02 5.58632116e-02 + 5.61383707e-02 5.64137997e-02 5.66894951e-02 5.69654535e-02 5.72416713e-02 + 5.75181451e-02 5.77948716e-02 5.80718471e-02 5.83490684e-02 5.86265320e-02 + 5.89042345e-02 5.91821725e-02 5.94603427e-02 5.97387415e-02 6.00173658e-02 + 6.02962120e-02 6.05752770e-02 6.08545573e-02 6.11340496e-02 6.14137506e-02 + 6.16936570e-02 6.19737655e-02 6.22540729e-02 6.25345758e-02 6.28152709e-02 + 6.30961552e-02 6.33772252e-02 6.36584778e-02 6.39399097e-02 6.42215178e-02 + 6.45032988e-02 6.47852496e-02 6.50673669e-02 6.53496477e-02 6.56320887e-02 + 6.59146868e-02 6.61974389e-02 6.64803419e-02 6.67633926e-02 6.70465880e-02 + 6.73299249e-02 6.76134004e-02 6.78970112e-02 6.81807545e-02 6.84646270e-02 + 6.87486259e-02 6.90327480e-02 6.93169904e-02 6.96013501e-02 6.98858240e-02 + 7.01704093e-02 7.04551029e-02 7.07399019e-02 7.10248033e-02 7.13098043e-02 + 7.15949019e-02 7.18800932e-02 7.21653753e-02 7.24507453e-02 7.27362004e-02 + 7.30217377e-02 7.33073544e-02 7.35930475e-02 7.38788144e-02 7.41646521e-02 + 7.44505580e-02 7.47365291e-02 7.50225627e-02 7.53086561e-02 7.55948066e-02 + 7.58810112e-02 7.61672674e-02 7.64535724e-02 7.67399235e-02 7.70263181e-02 + 7.73127534e-02 7.75992267e-02 7.78857354e-02 7.81722770e-02 7.84588486e-02 + 7.87454477e-02 7.90320718e-02 7.93187181e-02 7.96053841e-02 7.98920673e-02 + 8.01787651e-02 8.04654749e-02 8.07521941e-02 8.10389204e-02 8.13256510e-02 + 8.16123836e-02 8.18991157e-02 8.21858447e-02 8.24725683e-02 8.27592839e-02 + 8.30459891e-02 8.33326815e-02 8.36193586e-02 8.39060181e-02 8.41926576e-02 + 8.44792746e-02 8.47658669e-02 8.50524319e-02 8.53389675e-02 8.56254713e-02 + 8.59119408e-02 8.61983740e-02 8.64847683e-02 8.67711216e-02 8.70574315e-02 + 8.73436959e-02 8.76299124e-02 8.79160788e-02 8.82021929e-02 8.84882524e-02 + 8.87742552e-02 8.90601991e-02 8.93460819e-02 8.96319014e-02 8.99176554e-02 + 9.02033419e-02 9.04889586e-02 9.07745035e-02 9.10599745e-02 9.13453694e-02 + 9.16306861e-02 9.19159227e-02 9.22010770e-02 9.24861469e-02 9.27711305e-02 + 9.30560257e-02 9.33408305e-02 9.36255428e-02 9.39101607e-02 9.41946823e-02 + 9.44791055e-02 9.47634283e-02 9.50476489e-02 9.53317653e-02 9.56157755e-02 + 9.58996777e-02 9.61834699e-02 9.64671503e-02 9.67507170e-02 9.70341681e-02 + 9.73175018e-02 9.76007161e-02 9.78838094e-02 9.81667797e-02 9.84496252e-02 + 9.87323442e-02 9.90149348e-02 9.92973954e-02 9.95797240e-02 9.98619190e-02 + 1.00143979e-01 1.00425901e-01 1.00707685e-01 1.00989328e-01 1.01270829e-01 + 1.01552185e-01 1.01833397e-01 1.02114461e-01 1.02395376e-01 1.02676140e-01 + 1.02956752e-01 1.03237211e-01 1.03517513e-01 1.03797659e-01 1.04077646e-01 + 1.04357473e-01 1.04637138e-01 1.04916640e-01 1.05195977e-01 1.05475147e-01 + 1.05754150e-01 1.06032982e-01 1.06311644e-01 1.06590134e-01 1.06868449e-01 + 1.07146589e-01 1.07424552e-01 1.07702336e-01 1.07979941e-01 1.08257365e-01 + 1.08534605e-01 1.08811662e-01 1.09088533e-01 1.09365218e-01 1.09641714e-01 + 1.09918020e-01 1.10194135e-01 1.10470058e-01 1.10745788e-01 1.11021322e-01 + 1.11296660e-01 1.11571800e-01 1.11846741e-01 1.12121482e-01 1.12396021e-01 + 1.12670358e-01 1.12944490e-01 1.13218418e-01 1.13492138e-01 1.13765651e-01 + 1.14038955e-01 1.14312048e-01 1.14584930e-01 1.14857599e-01 1.15130055e-01 + 1.15402295e-01 1.15674319e-01 1.15946126e-01 1.16217714e-01 1.16489083e-01 + 1.16760231e-01 1.17031157e-01 1.17301860e-01 1.17572339e-01 1.17842593e-01 + 1.18112620e-01 1.18382420e-01 1.18651992e-01 1.18921334e-01 1.19190445e-01 + 1.19459326e-01 1.19727973e-01 1.19996387e-01 1.20264566e-01 1.20532510e-01 + 1.20800216e-01 1.21067686e-01 1.21334917e-01 1.21601908e-01 1.21868658e-01 + 1.22135167e-01 1.22401434e-01 1.22667458e-01 1.22933237e-01 1.23198771e-01 + 1.23464058e-01 1.23729099e-01 1.23993892e-01 1.24258436e-01 1.24522731e-01 + 1.24786775e-01 1.25050567e-01 1.25314108e-01 1.25577395e-01 1.25840428e-01 + 1.26103207e-01 1.26365730e-01 1.26627997e-01 1.26890006e-01 1.27151758e-01 + 1.27413251e-01 1.27674484e-01 1.27935457e-01 1.28196169e-01 1.28456619e-01 + 1.28716807e-01 1.28976731e-01 1.29236391e-01 1.29495787e-01 1.29754917e-01 + 1.30013780e-01 1.30272377e-01 1.30530707e-01 1.30788768e-01 1.31046560e-01 + 1.31304083e-01 1.31561335e-01 1.31818316e-01 1.32075026e-01 1.32331463e-01 + 1.32587628e-01 1.32843519e-01 1.33099136e-01 1.33354479e-01 1.33609546e-01 + 1.33864337e-01 1.34118851e-01 1.34373088e-01 1.34627048e-01 1.34880730e-01 + 1.35134132e-01 1.35387255e-01 1.35640099e-01 1.35892661e-01 1.36144943e-01 + 1.36396943e-01 1.36648661e-01 1.36900097e-01 1.37151249e-01 1.37402118e-01 + 1.37652702e-01 1.37903003e-01 1.38153017e-01 1.38402747e-01 1.38652190e-01 + 1.38901347e-01 1.39150217e-01 1.39398799e-01 1.39647094e-01 1.39895100e-01 + 1.40142817e-01 1.40390246e-01 1.40637384e-01 1.40884233e-01 1.41130791e-01 + 1.41377059e-01 1.41623035e-01 1.41868719e-01 1.42114112e-01 1.42359212e-01 + 1.42604020e-01 1.42848534e-01 1.43092755e-01 1.43336681e-01 1.43580314e-01 + 1.43823652e-01 1.44066695e-01 1.44309444e-01 1.44551896e-01 1.44794053e-01 + 1.45035913e-01 1.45277477e-01 1.45518744e-01 1.45759714e-01 1.46000386e-01 + 1.46240761e-01 1.46480838e-01 1.46720616e-01 1.46960096e-01 1.47199277e-01 + 1.47438159e-01 1.47676742e-01 1.47915025e-01 1.48153009e-01 1.48390692e-01 + 1.48628075e-01 1.48865157e-01 1.49101939e-01 1.49338419e-01 1.49574598e-01 + 1.49810476e-01 1.50046052e-01 1.50281327e-01 1.50516299e-01 1.50750969e-01 + 1.50985337e-01 1.51219402e-01 1.51453164e-01 1.51686623e-01 1.51919779e-01 + 1.52152632e-01 1.52385181e-01 1.52617427e-01 1.52849368e-01 1.53081006e-01 + 1.53312340e-01 1.53543370e-01 1.53774095e-01 1.54004516e-01 1.54234632e-01 + 1.54464444e-01 1.54693950e-01 1.54923152e-01 1.55152049e-01 1.55380640e-01 + 1.55608926e-01 1.55836907e-01 1.56064583e-01 1.56291953e-01 1.56519017e-01 + 1.56745775e-01 1.56972228e-01 1.57198375e-01 1.57424216e-01 1.57649751e-01 + 1.57874980e-01 1.58099903e-01 1.58324520e-01 1.58548831e-01 1.58772835e-01 + 1.58996533e-01 1.59219925e-01 1.59443010e-01 1.59665790e-01 1.59888262e-01 + 1.60110429e-01 1.60332289e-01 1.60553842e-01 1.60775089e-01 1.60996030e-01 + 1.61216664e-01 1.61436992e-01 1.61657013e-01 1.61876728e-01 1.62096136e-01 + 1.62315238e-01 1.62534034e-01 1.62752523e-01 1.62970706e-01 1.63188582e-01 + 1.63406152e-01 1.63623416e-01 1.63840374e-01 1.64057026e-01 1.64273371e-01 + 1.64489411e-01 1.64705144e-01 1.64920571e-01 1.65135693e-01 1.65350508e-01 + 1.65565018e-01 1.65779222e-01 1.65993121e-01 1.66206714e-01 1.66420001e-01 + 1.66632983e-01 1.66845660e-01 1.67058031e-01 1.67270097e-01 1.67481858e-01 + 1.67693314e-01 1.67904465e-01 1.68115312e-01 1.68325854e-01 1.68536091e-01 + 1.68746023e-01 1.68955652e-01 1.69164976e-01 1.69373996e-01 1.69582712e-01 + 1.69791124e-01 1.69999232e-01 1.70207037e-01 1.70414538e-01 1.70621735e-01 + 1.70828630e-01 1.71035221e-01 1.71241510e-01 1.71447495e-01 1.71653178e-01 + 1.71858558e-01 1.72063636e-01 1.72268412e-01 1.72472886e-01 1.72677057e-01 + 1.72880927e-01 1.73084495e-01 1.73287762e-01 1.73490728e-01 1.73693392e-01 + 1.73895756e-01 1.74097819e-01 1.74299581e-01 1.74501043e-01 1.74702204e-01 + 1.74903066e-01 1.75103627e-01 1.75303889e-01 1.75503852e-01 1.75703515e-01 + 1.75902879e-01 1.76101944e-01 1.76300710e-01 1.76499178e-01 1.76697348e-01 + 1.76895219e-01 1.77092792e-01 1.77290068e-01 1.77487046e-01 1.77683727e-01 + 1.77880111e-01 1.78076198e-01 1.78271989e-01 1.78467483e-01 1.78662680e-01 + 1.78857582e-01 1.79052188e-01 1.79246498e-01 1.79440514e-01 1.79634234e-01 + 1.79827659e-01 1.80020789e-01 1.80213625e-01 1.80406167e-01 1.80598415e-01 + 1.80790370e-01 1.80982031e-01 1.81173398e-01 1.81364473e-01 1.81555255e-01 + 1.81745745e-01 1.81935942e-01 1.82125848e-01 1.82315462e-01 1.82504784e-01 + 1.82693815e-01 1.82882555e-01 1.83071004e-01 1.83259163e-01 1.83447032e-01 + 1.83634611e-01 1.83821900e-01 1.84008900e-01 1.84195611e-01 1.84382033e-01 + 1.84568166e-01 1.84754012e-01 1.84939569e-01 1.85124838e-01 1.85309820e-01 + 1.85494514e-01 1.85678922e-01 1.85863043e-01 1.86046878e-01 1.86230426e-01 + 1.86413689e-01 1.86596666e-01 1.86779358e-01 1.86961765e-01 1.87143887e-01 + 1.87325725e-01 1.87507279e-01 1.87688549e-01 1.87869536e-01 1.88050239e-01 + 1.88230659e-01 1.88410797e-01 1.88590653e-01 1.88770226e-01 1.88949518e-01 + 1.89128528e-01 1.89307257e-01 1.89485705e-01 1.89663873e-01 1.89841761e-01 + 1.90019368e-01 1.90196696e-01 1.90373745e-01 1.90550515e-01 1.90727005e-01 + 1.90903218e-01 1.91079153e-01 1.91254809e-01 1.91430189e-01 1.91605291e-01 + 1.91780116e-01 1.91954665e-01 1.92128937e-01 1.92302934e-01 1.92476655e-01 + 1.92650101e-01 1.92823272e-01 1.92996169e-01 1.93168791e-01 1.93341139e-01 + 1.93513213e-01 1.93685014e-01 1.93856543e-01 1.94027798e-01 1.94198781e-01 + 1.94369492e-01 1.94539932e-01 1.94710100e-01 1.94879997e-01 1.95049623e-01 + 1.95218979e-01 1.95388065e-01 1.95556881e-01 1.95725428e-01 1.95893706e-01 + 1.96061715e-01 1.96229455e-01 1.96396928e-01 1.96564133e-01 1.96731070e-01 + 1.96897741e-01 1.97064144e-01 1.97230282e-01 1.97396153e-01 1.97561758e-01 + 1.97727099e-01 1.97892174e-01 1.98056984e-01 1.98221530e-01 1.98385813e-01 + 1.98549831e-01 1.98713586e-01 1.98877078e-01 1.99040308e-01 1.99203275e-01 + 1.99365980e-01 1.99528424e-01 1.99690606e-01 1.99852528e-01 2.00014188e-01 + 2.00175589e-01 2.00336730e-01 2.00497611e-01 2.00658233e-01 2.00818596e-01 + 2.00978701e-01 2.01138547e-01 2.01298136e-01 2.01457467e-01 2.01616542e-01 + 2.01775359e-01 2.01933920e-01 2.02092225e-01 2.02250274e-01 2.02408068e-01 + 2.02565607e-01 2.02722891e-01 2.02879921e-01 2.03036697e-01 2.03193220e-01 + 2.03349489e-01 2.03505505e-01 2.03661269e-01 2.03816780e-01 2.03972040e-01 + 2.04127048e-01 2.04281805e-01 2.04436312e-01 2.04590568e-01 2.04744573e-01 + 2.04898329e-01 2.05051836e-01 2.05205094e-01 2.05358103e-01 2.05510864e-01 + 2.05663377e-01 2.05815642e-01 2.05967660e-01 2.06119432e-01 2.06270956e-01 + 2.06422235e-01 2.06573268e-01 2.06724055e-01 2.06874598e-01 2.07024895e-01 + 2.07174948e-01 2.07324757e-01 2.07474323e-01 2.07623645e-01 2.07772725e-01 + 2.07921561e-01 2.08070156e-01 2.08218508e-01 2.08366619e-01 2.08514489e-01 + 2.08662119e-01 2.08809507e-01 2.08956656e-01 2.09103565e-01 2.09250235e-01 + 2.09396665e-01 2.09542857e-01 2.09688811e-01 2.09834526e-01 2.09980005e-01 + 2.10125246e-01 2.10270250e-01 2.10415017e-01 2.10559549e-01 2.10703844e-01 + 2.10847905e-01 2.10991730e-01 2.11135320e-01 2.11278676e-01 2.11421799e-01 + 2.11564687e-01 2.11707342e-01 2.11849765e-01 2.11991955e-01 2.12133912e-01 + 2.12275638e-01 2.12417132e-01 2.12558395e-01 2.12699428e-01 2.12840230e-01 + 2.12980802e-01 2.13121144e-01 2.13261257e-01 2.13401141e-01 2.13540796e-01 + 2.13680223e-01 2.13819422e-01 2.13958394e-01 2.14097138e-01 2.14235656e-01 + 2.14373947e-01 2.14512011e-01 2.14649851e-01 2.14787464e-01 2.14924853e-01 + 2.15062017e-01 2.15198957e-01 2.15335672e-01 2.15472164e-01 2.15608433e-01 + 2.15744479e-01 2.15880302e-01 2.16015903e-01 2.16151282e-01 2.16286440e-01 + 2.16421376e-01 2.16556092e-01 2.16690587e-01 2.16824862e-01 2.16958918e-01 + 2.17092754e-01 2.17226371e-01 2.17359769e-01 2.17492949e-01 2.17625911e-01 + 2.17758656e-01 2.17891183e-01 2.18023493e-01 2.18155587e-01 2.18287464e-01 + 2.18419126e-01 2.18550572e-01 2.18681803e-01 2.18812819e-01 2.18943621e-01 + 2.19074208e-01 2.19204582e-01 2.19334742e-01 2.19464690e-01 2.19594424e-01 + 2.19723946e-01 2.19853257e-01 2.19982355e-01 2.20111242e-01 2.20239919e-01 + 2.20368384e-01 2.20496640e-01 2.20624685e-01 2.20752521e-01 2.20880148e-01 + 2.21007566e-01 2.21134775e-01 2.21261776e-01 2.21388569e-01 2.21515155e-01 + 2.21641533e-01 2.21767705e-01 2.21893670e-01 2.22019429e-01 2.22144983e-01 + 2.22270331e-01 2.22395473e-01 2.22520411e-01 2.22645145e-01 2.22769675e-01 + 2.22894000e-01 2.23018123e-01 2.23142042e-01 2.23265759e-01 2.23389273e-01 + 2.23512586e-01 2.23635696e-01 2.23758606e-01 2.23881314e-01 2.24003822e-01 + 2.24126129e-01 2.24248236e-01 2.24370144e-01 2.24491852e-01 2.24613362e-01 + 2.24734673e-01 2.24855785e-01 2.24976700e-01 2.25097417e-01 2.25217936e-01 + 2.25338259e-01 2.25458385e-01 2.25578315e-01 2.25698048e-01 2.25817587e-01 + 2.25936930e-01 2.26056078e-01 2.26175031e-01 2.26293790e-01 2.26412355e-01 + 2.26530727e-01 2.26648905e-01 2.26766890e-01 2.26884683e-01 2.27002283e-01 + 2.27119691e-01 2.27236908e-01 2.27353934e-01 2.27470768e-01 2.27587412e-01 + 2.27703865e-01 2.27820129e-01 2.27936203e-01 2.28052087e-01 2.28167783e-01 + 2.28283290e-01 2.28398608e-01 2.28513738e-01 2.28628681e-01 2.28743437e-01 + 2.28858005e-01 2.28972386e-01 2.29086581e-01 2.29200591e-01 2.29314414e-01 + 2.29428052e-01 2.29541504e-01 2.29654772e-01 2.29767856e-01 2.29880755e-01 + 2.29993470e-01 2.30106002e-01 2.30218351e-01 2.30330517e-01 2.30442500e-01 + 2.30554301e-01 2.30665921e-01 2.30777358e-01 2.30888614e-01 2.30999690e-01 + 2.31110584e-01 2.31221299e-01 2.31331833e-01 2.31442188e-01 2.31552363e-01 + 2.31662359e-01 2.31772176e-01 2.31881815e-01 2.31991276e-01 2.32100559e-01 + 2.32209665e-01 2.32318593e-01 2.32427344e-01 2.32535919e-01 2.32644318e-01 + 2.32752540e-01 2.32860587e-01 2.32968459e-01 2.33076155e-01 2.33183677e-01 + 2.33291025e-01 2.33398198e-01 2.33505198e-01 2.33612024e-01 2.33718676e-01 + 2.33825157e-01 2.33931464e-01 2.34037599e-01 2.34143562e-01 2.34249354e-01 + 2.34354974e-01 2.34460423e-01 2.34565702e-01 2.34670810e-01 2.34775748e-01 + 2.34880516e-01 2.34985114e-01 2.35089544e-01 2.35193804e-01 2.35297896e-01 + 2.35401819e-01 2.35505574e-01 2.35609162e-01 2.35712582e-01 2.35815835e-01 + 2.35918921e-01 2.36021841e-01 2.36124594e-01 2.36227182e-01 2.36329603e-01 + 2.36431860e-01 2.36533951e-01 2.36635878e-01 2.36737640e-01 2.36839238e-01 + 2.36940672e-01 2.37041942e-01 2.37143049e-01 2.37243994e-01 2.37344775e-01 + 2.37445394e-01 2.37545851e-01 2.37646146e-01 2.37746279e-01 2.37846251e-01 + 2.37946062e-01 2.38045713e-01 2.38145203e-01 2.38244533e-01 2.38343703e-01 + 2.38442713e-01 2.38541565e-01 2.38640257e-01 2.38738790e-01 2.38837166e-01 + 2.38935383e-01 2.39033442e-01 2.39131344e-01 2.39229088e-01 2.39326676e-01 + 2.39424106e-01 2.39521381e-01 2.39618499e-01 2.39715461e-01 2.39812268e-01 + 2.39908919e-01 2.40005416e-01 2.40101757e-01 2.40197944e-01 2.40293977e-01 + 2.40389856e-01 2.40485582e-01 2.40581154e-01 2.40676573e-01 2.40771839e-01 + 2.40866953e-01 2.40961914e-01 2.41056724e-01 2.41151382e-01 2.41245888e-01 + 2.41340243e-01 2.41434447e-01 2.41528501e-01 2.41622404e-01 2.41716158e-01 + 2.41809761e-01 2.41903215e-01 2.41996520e-01 2.42089675e-01 2.42182682e-01 + 2.42275541e-01 2.42368251e-01 2.42460813e-01 2.42553228e-01 2.42645496e-01 + 2.42737616e-01 2.42829589e-01 2.42921416e-01 2.43013097e-01 2.43104631e-01 + 2.43196020e-01 2.43287263e-01 2.43378361e-01 2.43469314e-01 2.43560122e-01 + 2.43650786e-01 2.43741306e-01 2.43831681e-01 2.43921913e-01 2.44012001e-01 + 2.44101947e-01 2.44191749e-01 2.44281409e-01 2.44370926e-01 2.44460302e-01 + 2.44549535e-01 2.44638627e-01 2.44727577e-01 2.44816386e-01 2.44905055e-01 + 2.44993583e-01 2.45081970e-01 2.45170218e-01 2.45258325e-01 2.45346293e-01 + 2.45434122e-01 2.45521812e-01 2.45609362e-01 2.45696775e-01 2.45784049e-01 + 2.45871185e-01 2.45958183e-01 2.46045043e-01 2.46131766e-01 2.46218353e-01 + 2.46304802e-01 2.46391115e-01 2.46477291e-01 2.46563332e-01 2.46649236e-01 + 2.46735006e-01 2.46820639e-01 2.46906138e-01 2.46991502e-01 2.47076731e-01 + 2.47161826e-01 2.47246787e-01 2.47331614e-01 2.47416307e-01 2.47500867e-01 + 2.47585294e-01 2.47669588e-01 2.47753749e-01 2.47837778e-01 2.47921675e-01 + 2.48005440e-01 2.48089073e-01 2.48172575e-01 2.48255945e-01 2.48339185e-01 + 2.48422294e-01 2.48505272e-01 2.48588120e-01 2.48670839e-01 2.48753427e-01 + 2.48835886e-01 2.48918215e-01 2.49000416e-01 2.49082487e-01 2.49164431e-01 + 2.49246245e-01 2.49327932e-01 2.49409490e-01 2.49490922e-01 2.49572225e-01 + 2.49653402e-01 2.49734451e-01 2.49815374e-01 2.49896170e-01 2.49976840e-01 + 2.50057384e-01 2.50137802e-01 2.50218094e-01 2.50298261e-01 2.50378303e-01 + 2.50458221e-01 2.50538013e-01 2.50617681e-01 2.50697225e-01 2.50776645e-01 + 2.50855941e-01 2.50935113e-01 2.51014162e-01 2.51093088e-01 2.51171892e-01 + 2.51250572e-01 2.51329130e-01 2.51407566e-01 2.51485880e-01 2.51564073e-01 + 2.51642143e-01 2.51720093e-01 2.51797921e-01 2.51875629e-01 2.51953216e-01 + 2.52030682e-01 2.52108028e-01 2.52185254e-01 2.52262361e-01 2.52339348e-01 + 2.52416215e-01 2.52492964e-01 2.52569593e-01 2.52646104e-01 2.52722497e-01 + 2.52798771e-01 2.52874927e-01 2.52950965e-01 2.53026886e-01 2.53102689e-01 + 2.53178375e-01 2.53253944e-01 2.53329397e-01 2.53404733e-01 2.53479952e-01 + 2.53555056e-01 2.53630043e-01 2.53704915e-01 2.53779671e-01 2.53854312e-01 + 2.53928839e-01 2.54003250e-01 2.54077546e-01 2.54151728e-01 2.54225796e-01 + 2.54299750e-01 2.54373590e-01 2.54447316e-01 2.54520930e-01 2.54594429e-01 + 2.54667816e-01 2.54741090e-01 2.54814252e-01 2.54887301e-01 2.54960238e-01 + 2.55033063e-01 2.55105776e-01 2.55178378e-01 2.55250868e-01 2.55323247e-01 + 2.55395516e-01 2.55467673e-01 2.55539720e-01 2.55611657e-01 2.55683483e-01 + 2.55755200e-01 2.55826806e-01 2.55898304e-01 2.55969692e-01 2.56040970e-01 + 2.56112140e-01 2.56183201e-01 2.56254154e-01 2.56324998e-01 2.56395734e-01 + 2.56466362e-01 2.56536882e-01 2.56607295e-01 2.56677600e-01 2.56747798e-01 + 2.56817889e-01 2.56887874e-01 2.56957752e-01 2.57027523e-01 2.57097188e-01 + 2.57166747e-01 2.57236200e-01 2.57305548e-01 2.57374790e-01 2.57443927e-01 + 2.57512959e-01 2.57581886e-01 2.57650709e-01 2.57719427e-01 2.57788040e-01 + 2.57856550e-01 2.57924955e-01 2.57993257e-01 2.58061455e-01 2.58129550e-01 + 2.58197542e-01 2.58265431e-01 2.58333217e-01 2.58400900e-01 2.58468481e-01 + 2.58535960e-01 2.58603336e-01 2.58670611e-01 2.58737784e-01 2.58804856e-01 + 2.58871826e-01 2.58938695e-01 2.59005463e-01 2.59072131e-01 2.59138697e-01 + 2.59205164e-01 2.59271530e-01 2.59337796e-01 2.59403962e-01 2.59470029e-01 + 2.59535996e-01 2.59601864e-01 2.59667633e-01 2.59733302e-01 2.59798873e-01 + 2.59864345e-01 2.59929719e-01 2.59994995e-01 2.60060172e-01 2.60125252e-01 + 2.60190234e-01 2.60255118e-01 2.60319905e-01 2.60384595e-01 2.60449188e-01 + 2.60513684e-01 2.60578083e-01 2.60642386e-01 2.60706593e-01 2.60770703e-01 + 2.60834718e-01 2.60898636e-01 2.60962459e-01 2.61026187e-01 2.61089819e-01 + 2.61153356e-01 2.61216799e-01 2.61280146e-01 2.61343399e-01 2.61406557e-01 + 2.61469622e-01 2.61532592e-01 2.61595468e-01 2.61658250e-01 2.61720939e-01 + 2.61783535e-01 2.61846037e-01 2.61908446e-01 2.61970763e-01 2.62032986e-01 + 2.62095117e-01 2.62157156e-01 2.62219102e-01 2.62280956e-01 2.62342719e-01 + 2.62404389e-01 2.62465968e-01 2.62527456e-01 2.62588852e-01 2.62650158e-01 + 2.62711372e-01 2.62772496e-01 2.62833529e-01 2.62894471e-01 2.62955324e-01 + 2.63016086e-01 2.63076758e-01 2.63137341e-01 2.63197833e-01 2.63258237e-01 + 2.63318551e-01 2.63378776e-01 2.63438912e-01 2.63498959e-01 2.63558918e-01 + 2.63618788e-01 2.63678569e-01 2.63738263e-01 2.63797868e-01 2.63857386e-01 + 2.63916816e-01 2.63976158e-01 2.64035413e-01 2.64094581e-01 2.64153661e-01 + 2.64212655e-01 2.64271562e-01 2.64330382e-01 2.64389116e-01 2.64447763e-01 + 2.64506324e-01 2.64564800e-01 2.64623189e-01 2.64681493e-01 2.64739711e-01 + 2.64797844e-01 2.64855892e-01 2.64913854e-01 2.64971732e-01 2.65029524e-01 + 2.65087233e-01 2.65144856e-01 2.65202396e-01 2.65259851e-01 2.65317222e-01 + 2.65374509e-01 2.65431713e-01 2.65488833e-01 2.65545869e-01 2.65602822e-01 + 2.65659692e-01 2.65716480e-01 2.65773184e-01 2.65829805e-01 2.65886344e-01 + 2.65942801e-01 2.65999175e-01 2.66055468e-01 2.66111678e-01 2.66167806e-01 + 2.66223853e-01 2.66279819e-01 2.66335703e-01 2.66391505e-01 2.66447227e-01 + 2.66502868e-01 2.66558427e-01 2.66613907e-01 2.66669305e-01 2.66724624e-01 + 2.66779862e-01 2.66835020e-01 2.66890098e-01 2.66945096e-01 2.67000015e-01 + 2.67054854e-01 2.67109613e-01 2.67164294e-01 2.67218895e-01 2.67273418e-01 + 2.67327861e-01 2.67382226e-01 2.67436512e-01 2.67490720e-01 2.67544850e-01 + 2.67598902e-01 2.67652875e-01 2.67706771e-01 2.67760589e-01 2.67814330e-01 + 2.67867993e-01 2.67921578e-01 2.67975087e-01 2.68028519e-01 2.68081873e-01 + 2.68135151e-01 2.68188352e-01 2.68241477e-01 2.68294526e-01 2.68347498e-01 + 2.68400394e-01 2.68453214e-01 2.68505959e-01 2.68558628e-01 2.68611221e-01 + 2.68663738e-01 2.68716181e-01 2.68768548e-01 2.68820841e-01 2.68873058e-01 + 2.68925201e-01 2.68977269e-01 2.69029263e-01 2.69081182e-01 2.69133027e-01 + 2.69184798e-01 2.69236495e-01 2.69288118e-01 2.69339668e-01 2.69391143e-01 + 2.69442546e-01 2.69493875e-01 2.69545131e-01 2.69596314e-01 2.69647424e-01 + 2.69698461e-01 2.69749425e-01 2.69800317e-01 2.69851137e-01 2.69901884e-01 + 2.69952559e-01 2.70003162e-01 2.70053693e-01 2.70104153e-01 2.70154540e-01 + 2.70204856e-01 2.70255101e-01 2.70305274e-01 2.70355377e-01 2.70405408e-01 + 2.70455368e-01 2.70505258e-01 2.70555077e-01 2.70604825e-01 2.70654503e-01 + 2.70704110e-01 2.70753648e-01 2.70803115e-01 2.70852513e-01 2.70901840e-01 + 2.70951098e-01 2.71000287e-01 2.71049406e-01 2.71098455e-01 2.71147436e-01 + 2.71196347e-01 2.71245190e-01 2.71293963e-01 2.71342668e-01 2.71391304e-01 + 2.71439872e-01 2.71488372e-01 2.71536803e-01 2.71585166e-01 2.71633461e-01 + 2.71681688e-01 2.71729848e-01 2.71777939e-01 2.71825964e-01 2.71873921e-01 + 2.71921810e-01 2.71969632e-01 2.72017388e-01 2.72065076e-01 2.72112698e-01 + 2.72160252e-01 2.72207741e-01 2.72255162e-01 2.72302518e-01 2.72349807e-01 + 2.72397030e-01 2.72444187e-01 2.72491278e-01 2.72538303e-01 2.72585263e-01 + 2.72632157e-01 2.72678985e-01 2.72725748e-01 2.72772446e-01 2.72819079e-01 + 2.72865647e-01 2.72912150e-01 2.72958588e-01 2.73004962e-01 2.73051271e-01 + 2.73097516e-01 2.73143696e-01 2.73189812e-01 2.73235864e-01 2.73281852e-01 + 2.73327776e-01 2.73373636e-01 2.73419432e-01 2.73465166e-01 2.73510835e-01 + 2.73556441e-01 2.73601984e-01 2.73647464e-01 2.73692881e-01 2.73738235e-01 + 2.73783526e-01 2.73828755e-01 2.73873921e-01 2.73919024e-01 2.73964065e-01 + 2.74009044e-01 2.74053961e-01 2.74098815e-01 2.74143608e-01 2.74188339e-01 + 2.74233008e-01 2.74277616e-01 2.74322162e-01 2.74366646e-01 2.74411070e-01 + 2.74455432e-01 2.74499733e-01 2.74543973e-01 2.74588152e-01 2.74632270e-01 + 2.74676328e-01 2.74720325e-01 2.74764262e-01 2.74808138e-01 2.74851954e-01 + 2.74895710e-01 2.74939406e-01 2.74983042e-01 2.75026618e-01 2.75070135e-01 + 2.75113591e-01 2.75156988e-01 2.75200326e-01 2.75243604e-01 2.75286824e-01 + 2.75329984e-01 2.75373085e-01 2.75416127e-01 2.75459110e-01 2.75502034e-01 + 2.75544900e-01 2.75587707e-01 2.75630456e-01 2.75673147e-01 2.75715779e-01 + 2.75758353e-01 2.75800869e-01 2.75843328e-01 2.75885728e-01 2.75928070e-01 + 2.75970355e-01 2.76012583e-01 2.76054753e-01 2.76096866e-01 2.76138921e-01 + 2.76180919e-01 2.76222860e-01 2.76264745e-01 2.76306572e-01 2.76348342e-01 + 2.76390056e-01 2.76431714e-01 2.76473315e-01 2.76514859e-01 2.76556347e-01 + 2.76597779e-01 2.76639155e-01 2.76680475e-01 2.76721739e-01 2.76762947e-01 + 2.76804100e-01 2.76845197e-01 2.76886238e-01 2.76927224e-01 2.76968154e-01 + 2.77009030e-01 2.77049850e-01 2.77090615e-01 2.77131325e-01 2.77171980e-01 + 2.77212581e-01 2.77253126e-01 2.77293617e-01 2.77334054e-01 2.77374436e-01 + 2.77414764e-01 2.77455038e-01 2.77495257e-01 2.77535423e-01 2.77575534e-01 + 2.77615592e-01 2.77655596e-01 2.77695546e-01 2.77735443e-01 2.77775286e-01 + 2.77815076e-01 2.77854812e-01 2.77894495e-01 2.77934125e-01 2.77973702e-01 + 2.78013226e-01 2.78052697e-01 2.78092115e-01 2.78131481e-01 2.78170794e-01 + 2.78210054e-01 2.78249262e-01 2.78288418e-01 2.78327521e-01 2.78366572e-01 + 2.78405571e-01 2.78444519e-01 2.78483414e-01 2.78522257e-01 2.78561049e-01 + 2.78599789e-01 2.78638477e-01 2.78677114e-01 2.78715700e-01 2.78754234e-01 + 2.78792717e-01 2.78831149e-01 2.78869530e-01 2.78907859e-01 2.78946138e-01 + 2.08130000e-04 2.08281191e-04 2.08734762e-04 2.09490714e-04 2.10549046e-04 + 2.11909757e-04 2.13572846e-04 2.15538310e-04 2.17806148e-04 2.20376358e-04 + 2.23248936e-04 2.26423882e-04 2.29901190e-04 2.33680858e-04 2.37762883e-04 + 2.42147260e-04 2.46833984e-04 2.51823051e-04 2.57114457e-04 2.62708196e-04 + 2.68604263e-04 2.74802652e-04 2.81303356e-04 2.88106370e-04 2.95211687e-04 + 3.02619299e-04 3.10329200e-04 3.18341382e-04 3.26655837e-04 3.35272557e-04 + 3.44191533e-04 3.53412758e-04 3.62936221e-04 3.72761913e-04 3.82889825e-04 + 3.93319947e-04 4.04052269e-04 4.15086779e-04 4.26423468e-04 4.38062324e-04 + 4.50003336e-04 4.62246492e-04 4.74791780e-04 4.87639188e-04 5.00788703e-04 + 5.14240312e-04 5.27994002e-04 5.42049760e-04 5.56407572e-04 5.71067423e-04 + 5.86029300e-04 6.01293187e-04 6.16859071e-04 6.32726934e-04 6.48896763e-04 + 6.65368541e-04 6.82142252e-04 6.99217880e-04 7.16595407e-04 7.34274817e-04 + 7.52256092e-04 7.70539216e-04 7.89124169e-04 8.08010934e-04 8.27199493e-04 + 8.46689825e-04 8.66481913e-04 8.86575737e-04 9.06971278e-04 9.27668514e-04 + 9.48667427e-04 9.69967995e-04 9.91570198e-04 1.01347401e-03 1.03567942e-03 + 1.05818640e-03 1.08099493e-03 1.10410498e-03 1.12751654e-03 1.15122957e-03 + 1.17524406e-03 1.19955999e-03 1.22417733e-03 1.24909605e-03 1.27431613e-03 + 1.29983755e-03 1.32566029e-03 1.35178430e-03 1.37820958e-03 1.40493610e-03 + 1.43196382e-03 1.45929272e-03 1.48692278e-03 1.51485397e-03 1.54308626e-03 + 1.57161963e-03 1.60045404e-03 1.62958946e-03 1.65902588e-03 1.68876325e-03 + 1.71880156e-03 1.74914077e-03 1.77978085e-03 1.81072177e-03 1.84196351e-03 + 1.87350602e-03 1.90534929e-03 1.93749327e-03 1.96993795e-03 2.00268328e-03 + 2.03572923e-03 2.06907577e-03 2.10272288e-03 2.13667051e-03 2.17091863e-03 + 2.20546721e-03 2.24031622e-03 2.27546562e-03 2.31091538e-03 2.34666546e-03 + 2.38271583e-03 2.41906645e-03 2.45571729e-03 2.49266831e-03 2.52991947e-03 + 2.56747075e-03 2.60532209e-03 2.64347347e-03 2.68192485e-03 2.72067619e-03 + 2.75972745e-03 2.79907859e-03 2.83872959e-03 2.87868038e-03 2.91893095e-03 + 2.95948125e-03 3.00033123e-03 3.04148087e-03 3.08293011e-03 3.12467892e-03 + 3.16672726e-03 3.20907509e-03 3.25172236e-03 3.29466904e-03 3.33791508e-03 + 3.38146044e-03 3.42530507e-03 3.46944894e-03 3.51389201e-03 3.55863422e-03 + 3.60367554e-03 3.64901591e-03 3.69465531e-03 3.74059367e-03 3.78683096e-03 + 3.83336714e-03 3.88020215e-03 3.92733595e-03 3.97476850e-03 4.02249975e-03 + 4.07052965e-03 4.11885815e-03 4.16748522e-03 4.21641079e-03 4.26563483e-03 + 4.31515728e-03 4.36497811e-03 4.41509725e-03 4.46551466e-03 4.51623029e-03 + 4.56724409e-03 4.61855601e-03 4.67016601e-03 4.72207403e-03 4.77428002e-03 + 4.82678393e-03 4.87958570e-03 4.93268530e-03 4.98608266e-03 5.03977774e-03 + 5.09377048e-03 5.14806083e-03 5.20264873e-03 5.25753414e-03 5.31271700e-03 + 5.36819725e-03 5.42397485e-03 5.48004973e-03 5.53642185e-03 5.59309115e-03 + 5.65005757e-03 5.70732106e-03 5.76488157e-03 5.82273903e-03 5.88089339e-03 + 5.93934459e-03 5.99809258e-03 6.05713731e-03 6.11647870e-03 6.17611671e-03 + 6.23605128e-03 6.29628235e-03 6.35680986e-03 6.41763375e-03 6.47875396e-03 + 6.54017044e-03 6.60188312e-03 6.66389194e-03 6.72619685e-03 6.78879778e-03 + 6.85169468e-03 6.91488748e-03 6.97837611e-03 7.04216053e-03 7.10624066e-03 + 7.17061645e-03 7.23528783e-03 7.30025474e-03 7.36551712e-03 7.43107490e-03 + 7.49692802e-03 7.56307641e-03 7.62952002e-03 7.69625878e-03 7.76329262e-03 + 7.83062147e-03 7.89824528e-03 7.96616398e-03 8.03437750e-03 8.10288577e-03 + 8.17168874e-03 8.24078632e-03 8.31017847e-03 8.37986510e-03 8.44984615e-03 + 8.52012155e-03 8.59069124e-03 8.66155515e-03 8.73271321e-03 8.80416535e-03 + 8.87591149e-03 8.94795158e-03 9.02028554e-03 9.09291331e-03 9.16583480e-03 + 9.23904995e-03 9.31255870e-03 9.38636096e-03 9.46045668e-03 9.53484577e-03 + 9.60952816e-03 9.68450379e-03 9.75977258e-03 9.83533445e-03 9.91118934e-03 + 9.98733717e-03 1.00637779e-02 1.01405114e-02 1.02175376e-02 1.02948564e-02 + 1.03724679e-02 1.04503718e-02 1.05285681e-02 1.06070568e-02 1.06858378e-02 + 1.07649109e-02 1.08442762e-02 1.09239335e-02 1.10038828e-02 1.10841240e-02 + 1.11646570e-02 1.12454817e-02 1.13265980e-02 1.14080060e-02 1.14897054e-02 + 1.15716963e-02 1.16539785e-02 1.17365519e-02 1.18194166e-02 1.19025723e-02 + 1.19860191e-02 1.20697568e-02 1.21537854e-02 1.22381047e-02 1.23227148e-02 + 1.24076155e-02 1.24928067e-02 1.25782883e-02 1.26640604e-02 1.27501227e-02 + 1.28364752e-02 1.29231179e-02 1.30100506e-02 1.30972732e-02 1.31847858e-02 + 1.32725881e-02 1.33606801e-02 1.34490618e-02 1.35377329e-02 1.36266936e-02 + 1.37159436e-02 1.38054829e-02 1.38953113e-02 1.39854289e-02 1.40758355e-02 + 1.41665311e-02 1.42575155e-02 1.43487886e-02 1.44403504e-02 1.45322008e-02 + 1.46243398e-02 1.47167671e-02 1.48094827e-02 1.49024866e-02 1.49957786e-02 + 1.50893587e-02 1.51832267e-02 1.52773826e-02 1.53718263e-02 1.54665577e-02 + 1.55615767e-02 1.56568832e-02 1.57524771e-02 1.58483584e-02 1.59445269e-02 + 1.60409825e-02 1.61377252e-02 1.62347549e-02 1.63320714e-02 1.64296747e-02 + 1.65275647e-02 1.66257413e-02 1.67242043e-02 1.68229538e-02 1.69219896e-02 + 1.70213116e-02 1.71209197e-02 1.72208138e-02 1.73209939e-02 1.74214598e-02 + 1.75222114e-02 1.76232487e-02 1.77245715e-02 1.78261798e-02 1.79280734e-02 + 1.80302523e-02 1.81327163e-02 1.82354654e-02 1.83384994e-02 1.84418184e-02 + 1.85454220e-02 1.86493104e-02 1.87534833e-02 1.88579407e-02 1.89626824e-02 + 1.90677084e-02 1.91730186e-02 1.92786129e-02 1.93844911e-02 1.94906532e-02 + 1.95970991e-02 1.97038286e-02 1.98108417e-02 1.99181382e-02 2.00257182e-02 + 2.01335813e-02 2.02417277e-02 2.03501571e-02 2.04588694e-02 2.05678646e-02 + 2.06771425e-02 2.07867031e-02 2.08965462e-02 2.10066717e-02 2.11170796e-02 + 2.12277697e-02 2.13387419e-02 2.14499962e-02 2.15615323e-02 2.16733503e-02 + 2.17854499e-02 2.18978311e-02 2.20104938e-02 2.21234379e-02 2.22366633e-02 + 2.23501698e-02 2.24639574e-02 2.25780260e-02 2.26923753e-02 2.28070055e-02 + 2.29219162e-02 2.30371074e-02 2.31525791e-02 2.32683311e-02 2.33843632e-02 + 2.35006755e-02 2.36172677e-02 2.37341397e-02 2.38512915e-02 2.39687230e-02 + 2.40864339e-02 2.42044243e-02 2.43226940e-02 2.44412429e-02 2.45600709e-02 + 2.46791779e-02 2.47985637e-02 2.49182282e-02 2.50381714e-02 2.51583931e-02 + 2.52788932e-02 2.53996717e-02 2.55207283e-02 2.56420629e-02 2.57636755e-02 + 2.58855660e-02 2.60077341e-02 2.61301799e-02 2.62529032e-02 2.63759039e-02 + 2.64991818e-02 2.66227368e-02 2.67465689e-02 2.68706779e-02 2.69950637e-02 + 2.71197262e-02 2.72446653e-02 2.73698808e-02 2.74953726e-02 2.76211406e-02 + 2.77471848e-02 2.78735049e-02 2.80001009e-02 2.81269726e-02 2.82541199e-02 + 2.83815427e-02 2.85092409e-02 2.86372144e-02 2.87654630e-02 2.88939867e-02 + 2.90227852e-02 2.91518585e-02 2.92812065e-02 2.94108290e-02 2.95407260e-02 + 2.96708972e-02 2.98013426e-02 2.99320621e-02 3.00630555e-02 3.01943227e-02 + 3.03258636e-02 3.04576781e-02 3.05897660e-02 3.07221272e-02 3.08547616e-02 + 3.09876691e-02 3.11208496e-02 3.12543028e-02 3.13880288e-02 3.15220273e-02 + 3.16562983e-02 3.17908416e-02 3.19256571e-02 3.20607447e-02 3.21961042e-02 + 3.23317356e-02 3.24676386e-02 3.26038132e-02 3.27402593e-02 3.28769766e-02 + 3.30139652e-02 3.31512248e-02 3.32887554e-02 3.34265567e-02 3.35646288e-02 + 3.37029714e-02 3.38415844e-02 3.39804677e-02 3.41196212e-02 3.42590447e-02 + 3.43987381e-02 3.45387013e-02 3.46789341e-02 3.48194365e-02 3.49602082e-02 + 3.51012492e-02 3.52425593e-02 3.53841384e-02 3.55259864e-02 3.56681031e-02 + 3.58104884e-02 3.59531422e-02 3.60960643e-02 3.62392547e-02 3.63827131e-02 + 3.65264394e-02 3.66704335e-02 3.68146954e-02 3.69592247e-02 3.71040215e-02 + 3.72490856e-02 3.73944167e-02 3.75400149e-02 3.76858800e-02 3.78320118e-02 + 3.79784102e-02 3.81250751e-02 3.82720063e-02 3.84192037e-02 3.85666672e-02 + 3.87143966e-02 3.88623918e-02 3.90106526e-02 3.91591790e-02 3.93079707e-02 + 3.94570277e-02 3.96063498e-02 3.97559369e-02 3.99057888e-02 4.00559054e-02 + 4.02062865e-02 4.03569321e-02 4.05078419e-02 4.06590159e-02 4.08104539e-02 + 4.09621558e-02 4.11141214e-02 4.12663506e-02 4.14188432e-02 4.15715991e-02 + 4.17246182e-02 4.18779004e-02 4.20314454e-02 4.21852532e-02 4.23393235e-02 + 4.24936564e-02 4.26482515e-02 4.28031089e-02 4.29582283e-02 4.31136096e-02 + 4.32692526e-02 4.34251573e-02 4.35813234e-02 4.37377508e-02 4.38944395e-02 + 4.40513892e-02 4.42085998e-02 4.43660711e-02 4.45238031e-02 4.46817956e-02 + 4.48400483e-02 4.49985613e-02 4.51573343e-02 4.53163671e-02 4.54756598e-02 + 4.56352120e-02 4.57950237e-02 4.59550947e-02 4.61154249e-02 4.62760141e-02 + 4.64368622e-02 4.65979690e-02 4.67593344e-02 4.69209582e-02 4.70828403e-02 + 4.72449806e-02 4.74073789e-02 4.75700350e-02 4.77329488e-02 4.78961202e-02 + 4.80595489e-02 4.82232350e-02 4.83871781e-02 4.85513782e-02 4.87158351e-02 + 4.88805487e-02 4.90455188e-02 4.92107453e-02 4.93762280e-02 4.95419667e-02 + 4.97079614e-02 4.98742118e-02 5.00407179e-02 5.02074794e-02 5.03744963e-02 + 5.05417683e-02 5.07092953e-02 5.08770772e-02 5.10451138e-02 5.12134049e-02 + 5.13819505e-02 5.15507503e-02 5.17198043e-02 5.18891121e-02 5.20586738e-02 + 5.22284892e-02 5.23985580e-02 5.25688802e-02 5.27394555e-02 5.29102839e-02 + 5.30813652e-02 5.32526992e-02 5.34242858e-02 5.35961248e-02 5.37682161e-02 + 5.39405595e-02 5.41131548e-02 5.42860020e-02 5.44591008e-02 5.46324511e-02 + 5.48060527e-02 5.49799055e-02 5.51540094e-02 5.53283641e-02 5.55029695e-02 + 5.56778255e-02 5.58529319e-02 5.60282885e-02 5.62038952e-02 5.63797519e-02 + 5.65558583e-02 5.67322144e-02 5.69088199e-02 5.70856747e-02 5.72627786e-02 + 5.74401316e-02 5.76177334e-02 5.77955838e-02 5.79736828e-02 5.81520301e-02 + 5.83306256e-02 5.85094691e-02 5.86885605e-02 5.88678997e-02 5.90474864e-02 + 5.92273205e-02 5.94074018e-02 5.95877302e-02 5.97683055e-02 5.99491276e-02 + 6.01301963e-02 6.03115114e-02 6.04930728e-02 6.06748803e-02 6.08569338e-02 + 6.10392330e-02 6.12217779e-02 6.14045683e-02 6.15876039e-02 6.17708848e-02 + 6.19544105e-02 6.21381812e-02 6.23221964e-02 6.25064562e-02 6.26909603e-02 + 6.28757085e-02 6.30607008e-02 6.32459369e-02 6.34314167e-02 6.36171400e-02 + 6.38031067e-02 6.39893165e-02 6.41757694e-02 6.43624651e-02 6.45494036e-02 + 6.47365845e-02 6.49240078e-02 6.51116734e-02 6.52995809e-02 6.54877303e-02 + 6.56761215e-02 6.58647541e-02 6.60536282e-02 6.62427434e-02 6.64320997e-02 + 6.66216969e-02 6.68115348e-02 6.70016132e-02 6.71919320e-02 6.73824910e-02 + 6.75732900e-02 6.77643289e-02 6.79556075e-02 6.81471257e-02 6.83388832e-02 + 6.85308799e-02 6.87231157e-02 6.89155904e-02 6.91083037e-02 6.93012556e-02 + 6.94944458e-02 6.96878742e-02 6.98815407e-02 7.00754450e-02 7.02695870e-02 + 7.04639665e-02 7.06585833e-02 7.08534374e-02 7.10485284e-02 7.12438563e-02 + 7.14394208e-02 7.16352219e-02 7.18312593e-02 7.20275328e-02 7.22240423e-02 + 7.24207876e-02 7.26177686e-02 7.28149851e-02 7.30124368e-02 7.32101237e-02 + 7.34080456e-02 7.36062022e-02 7.38045935e-02 7.40032192e-02 7.42020791e-02 + 7.44011732e-02 7.46005012e-02 7.48000630e-02 7.49998583e-02 7.51998870e-02 + 7.54001490e-02 7.56006441e-02 7.58013720e-02 7.60023326e-02 7.62035258e-02 + 7.64049514e-02 7.66066092e-02 7.68084989e-02 7.70106206e-02 7.72129739e-02 + 7.74155587e-02 7.76183748e-02 7.78214221e-02 7.80247003e-02 7.82282094e-02 + 7.84319490e-02 7.86359192e-02 7.88401196e-02 7.90445501e-02 7.92492105e-02 + 7.94541007e-02 7.96592204e-02 7.98645695e-02 8.00701479e-02 8.02759553e-02 + 8.04819916e-02 8.06882565e-02 8.08947500e-02 8.11014718e-02 8.13084218e-02 + 8.15155998e-02 8.17230055e-02 8.19306389e-02 8.21384998e-02 8.23465879e-02 + 8.25549031e-02 8.27634452e-02 8.29722141e-02 8.31812095e-02 8.33904313e-02 + 8.35998794e-02 8.38095534e-02 8.40194533e-02 8.42295789e-02 8.44399299e-02 + 8.46505063e-02 8.48613078e-02 8.50723343e-02 8.52835855e-02 8.54950613e-02 + 8.57067616e-02 8.59186860e-02 8.61308346e-02 8.63432070e-02 8.65558031e-02 + 8.67686227e-02 8.69816656e-02 8.71949318e-02 8.74084208e-02 8.76221327e-02 + 8.78360672e-02 8.80502241e-02 8.82646033e-02 8.84792045e-02 8.86940276e-02 + 8.89090725e-02 8.91243388e-02 8.93398265e-02 8.95555354e-02 8.97714652e-02 + 8.99876159e-02 9.02039871e-02 9.04205788e-02 9.06373908e-02 9.08544228e-02 + 9.10716747e-02 9.12891463e-02 9.15068374e-02 9.17247478e-02 9.19428774e-02 + 9.21612260e-02 9.23797934e-02 9.25985793e-02 9.28175837e-02 9.30368064e-02 + 9.32562470e-02 9.34759056e-02 9.36957818e-02 9.39158756e-02 9.41361866e-02 + 9.43567148e-02 9.45774599e-02 9.47984219e-02 9.50196003e-02 9.52409952e-02 + 9.54626063e-02 9.56844334e-02 9.59064764e-02 9.61287350e-02 9.63512090e-02 + 9.65738984e-02 9.67968029e-02 9.70199222e-02 9.72432563e-02 9.74668050e-02 + 9.76905680e-02 9.79145452e-02 9.81387363e-02 9.83631413e-02 9.85877598e-02 + 9.88125918e-02 9.90376370e-02 9.92628953e-02 9.94883665e-02 9.97140503e-02 + 9.99399466e-02 1.00166055e-01 1.00392376e-01 1.00618909e-01 1.00845653e-01 + 1.01072609e-01 1.01299776e-01 1.01527155e-01 1.01754744e-01 1.01982545e-01 + 1.02210556e-01 1.02438777e-01 1.02667209e-01 1.02895850e-01 1.03124702e-01 + 1.03353763e-01 1.03583034e-01 1.03812514e-01 1.04042203e-01 1.04272101e-01 + 1.04502207e-01 1.04732523e-01 1.04963046e-01 1.05193778e-01 1.05424718e-01 + 1.05655865e-01 1.05887221e-01 1.06118783e-01 1.06350553e-01 1.06582530e-01 + 1.06814713e-01 1.07047104e-01 1.07279701e-01 1.07512504e-01 1.07745513e-01 + 1.07978728e-01 1.08212148e-01 1.08445775e-01 1.08679606e-01 1.08913643e-01 + 1.09147884e-01 1.09382331e-01 1.09616982e-01 1.09851837e-01 1.10086896e-01 + 1.10322160e-01 1.10557627e-01 1.10793298e-01 1.11029172e-01 1.11265249e-01 + 1.11501530e-01 1.11738013e-01 1.11974699e-01 1.12211587e-01 1.12448678e-01 + 1.12685971e-01 1.12923465e-01 1.13161162e-01 1.13399059e-01 1.13637158e-01 + 1.13875458e-01 1.14113960e-01 1.14352661e-01 1.14591564e-01 1.14830666e-01 + 1.15069969e-01 1.15309472e-01 1.15549174e-01 1.15789076e-01 1.16029178e-01 + 1.16269478e-01 1.16509978e-01 1.16750676e-01 1.16991573e-01 1.17232669e-01 + 1.17473962e-01 1.17715454e-01 1.17957143e-01 1.18199030e-01 1.18441115e-01 + 1.18683397e-01 1.18925875e-01 1.19168551e-01 1.19411423e-01 1.19654492e-01 + 1.19897757e-01 1.20141218e-01 1.20384875e-01 1.20628728e-01 1.20872776e-01 + 1.21117020e-01 1.21361458e-01 1.21606092e-01 1.21850920e-01 1.22095943e-01 + 1.22341160e-01 1.22586571e-01 1.22832176e-01 1.23077975e-01 1.23323967e-01 + 1.23570153e-01 1.23816532e-01 1.24063104e-01 1.24309869e-01 1.24556826e-01 + 1.24803975e-01 1.25051317e-01 1.25298851e-01 1.25546576e-01 1.25794494e-01 + 1.26042602e-01 1.26290902e-01 1.26539393e-01 1.26788074e-01 1.27036946e-01 + 1.27286009e-01 1.27535261e-01 1.27784704e-01 1.28034337e-01 1.28284159e-01 + 1.28534171e-01 1.28784372e-01 1.29034762e-01 1.29285340e-01 1.29536108e-01 + 1.29787064e-01 1.30038208e-01 1.30289540e-01 1.30541060e-01 1.30792768e-01 + 1.31044663e-01 1.31296746e-01 1.31549015e-01 1.31801471e-01 1.32054115e-01 + 1.32306944e-01 1.32559960e-01 1.32813162e-01 1.33066550e-01 1.33320123e-01 + 1.33573882e-01 1.33827826e-01 1.34081956e-01 1.34336270e-01 1.34590769e-01 + 1.34845452e-01 1.35100320e-01 1.35355372e-01 1.35610608e-01 1.35866027e-01 + 1.36121630e-01 1.36377417e-01 1.36633386e-01 1.36889538e-01 1.37145873e-01 + 1.37402391e-01 1.37659091e-01 1.37915973e-01 1.38173037e-01 1.38430283e-01 + 1.38687710e-01 1.38945318e-01 1.39203108e-01 1.39461079e-01 1.39719230e-01 + 1.39977562e-01 1.40236074e-01 1.40494766e-01 1.40753639e-01 1.41012691e-01 + 1.41271922e-01 1.41531333e-01 1.41790923e-01 1.42050692e-01 1.42310640e-01 + 1.42570766e-01 1.42831071e-01 1.43091554e-01 1.43352214e-01 1.43613053e-01 + 1.43874069e-01 1.44135262e-01 1.44396633e-01 1.44658180e-01 1.44919904e-01 + 1.45181805e-01 1.45443882e-01 1.45706135e-01 1.45968565e-01 1.46231170e-01 + 1.46493950e-01 1.46756906e-01 1.47020037e-01 1.47283343e-01 1.47546824e-01 + 1.47810479e-01 1.48074308e-01 1.48338312e-01 1.48602490e-01 1.48866841e-01 + 1.49131366e-01 1.49396065e-01 1.49660936e-01 1.49925981e-01 1.50191198e-01 + 1.50456588e-01 1.50722150e-01 1.50987884e-01 1.51253790e-01 1.51519868e-01 + 1.51786118e-01 1.52052539e-01 1.52319131e-01 1.52585894e-01 1.52852827e-01 + 1.53119932e-01 1.53387206e-01 1.53654651e-01 1.53922266e-01 1.54190050e-01 + 1.54458004e-01 1.54726127e-01 1.54994420e-01 1.55262881e-01 1.55531511e-01 + 1.55800310e-01 1.56069277e-01 1.56338412e-01 1.56607715e-01 1.56877186e-01 + 1.57146824e-01 1.57416630e-01 1.57686603e-01 1.57956743e-01 1.58227049e-01 + 1.58497522e-01 1.58768161e-01 1.59038967e-01 1.59309938e-01 1.59581075e-01 + 1.59852378e-01 1.60123846e-01 1.60395479e-01 1.60667277e-01 1.60939240e-01 + 1.61211367e-01 1.61483659e-01 1.61756114e-01 1.62028734e-01 1.62301517e-01 + 1.62574464e-01 1.62847574e-01 1.63120847e-01 1.63394283e-01 1.63667882e-01 + 1.63941644e-01 1.64215567e-01 1.64489653e-01 1.64763901e-01 1.65038310e-01 + 1.65312881e-01 1.65587613e-01 1.65862506e-01 1.66137560e-01 1.66412775e-01 + 1.66688150e-01 1.66963686e-01 1.67239381e-01 1.67515237e-01 1.67791252e-01 + 1.68067427e-01 1.68343761e-01 1.68620254e-01 1.68896906e-01 1.69173717e-01 + 1.69450686e-01 1.69727813e-01 1.70005098e-01 1.70282542e-01 1.70560143e-01 + 1.70837901e-01 1.71115817e-01 1.71393889e-01 1.71672119e-01 1.71950505e-01 + 1.72229048e-01 1.72507747e-01 1.72786602e-01 1.73065613e-01 1.73344779e-01 + 1.73624101e-01 1.73903579e-01 1.74183211e-01 1.74462998e-01 1.74742940e-01 + 1.75023036e-01 1.75303286e-01 1.75583691e-01 1.75864249e-01 1.76144961e-01 + 1.76425826e-01 1.76706845e-01 1.76988017e-01 1.77269341e-01 1.77550818e-01 + 1.77832448e-01 1.78114229e-01 1.78396163e-01 1.78678248e-01 1.78960486e-01 + 1.79242874e-01 1.79525414e-01 1.79808105e-01 1.80090946e-01 1.80373938e-01 + 1.80657081e-01 1.80940374e-01 1.81223816e-01 1.81507409e-01 1.81791151e-01 + 1.82075043e-01 1.82359084e-01 1.82643273e-01 1.82927612e-01 1.83212099e-01 + 1.83496734e-01 1.83781518e-01 1.84066450e-01 1.84351529e-01 1.84636756e-01 + 1.84922131e-01 1.85207652e-01 1.85493321e-01 1.85779136e-01 1.86065098e-01 + 1.86351206e-01 1.86637461e-01 1.86923861e-01 1.87210407e-01 1.87497099e-01 + 1.87783936e-01 1.88070919e-01 1.88358046e-01 1.88645318e-01 1.88932734e-01 + 1.89220295e-01 1.89508000e-01 1.89795849e-01 1.90083842e-01 1.90371978e-01 + 1.90660258e-01 1.90948681e-01 1.91237246e-01 1.91525955e-01 1.91814806e-01 + 1.92103799e-01 1.92392935e-01 1.92682212e-01 1.92971631e-01 1.93261192e-01 + 1.93550894e-01 1.93840737e-01 1.94130721e-01 1.94420846e-01 1.94711111e-01 + 1.95001517e-01 1.95292063e-01 1.95582748e-01 1.95873574e-01 1.96164539e-01 + 1.96455643e-01 1.96746886e-01 1.97038269e-01 1.97329790e-01 1.97621449e-01 + 1.97913247e-01 1.98205183e-01 1.98497257e-01 1.98789469e-01 1.99081818e-01 + 1.99374304e-01 1.99666928e-01 1.99959688e-01 2.00252585e-01 2.00545619e-01 + 2.00838789e-01 2.01132095e-01 2.01425537e-01 2.01719114e-01 2.02012828e-01 + 2.02306676e-01 2.02600660e-01 2.02894778e-01 2.03189031e-01 2.03483419e-01 + 2.03777941e-01 2.04072597e-01 2.04367387e-01 2.04662311e-01 2.04957368e-01 + 2.05252558e-01 2.05547882e-01 2.05843338e-01 2.06138928e-01 2.06434649e-01 + 2.06730503e-01 2.07026489e-01 2.07322607e-01 2.07618857e-01 2.07915238e-01 + 2.08211750e-01 2.08508394e-01 2.08805168e-01 2.09102073e-01 2.09399109e-01 + 2.09696275e-01 2.09993571e-01 2.10290997e-01 2.10588552e-01 2.10886237e-01 + 2.11184052e-01 2.11481995e-01 2.11780068e-01 2.12078269e-01 2.12376598e-01 + 2.12675056e-01 2.12973642e-01 2.13272356e-01 2.13571197e-01 2.13870166e-01 + 2.14169263e-01 2.14468486e-01 2.14767837e-01 2.15067314e-01 2.15366917e-01 + 2.15666647e-01 2.15966503e-01 2.16266485e-01 2.16566592e-01 2.16866825e-01 + 2.17167184e-01 2.17467667e-01 2.17768276e-01 2.18069009e-01 2.18369866e-01 + 2.18670848e-01 2.18971954e-01 2.19273184e-01 2.19574538e-01 2.19876015e-01 + 2.20177615e-01 2.20479339e-01 2.20781185e-01 2.21083155e-01 2.21385246e-01 + 2.21687460e-01 2.21989797e-01 2.22292255e-01 2.22594835e-01 2.22897536e-01 + 2.23200359e-01 2.23503303e-01 2.23806367e-01 2.24109553e-01 2.24412859e-01 + 2.24716285e-01 2.25019832e-01 2.25323498e-01 2.25627285e-01 2.25931191e-01 + 2.26235216e-01 2.26539360e-01 2.26843623e-01 2.27148005e-01 2.27452506e-01 + 2.27757125e-01 2.28061862e-01 2.28366717e-01 2.28671690e-01 2.28976780e-01 + 2.29281988e-01 2.29587313e-01 2.29892755e-01 2.30198313e-01 2.30503989e-01 + 2.30809780e-01 2.31115688e-01 2.31421712e-01 2.31727852e-01 2.32034107e-01 + 2.32340478e-01 2.32646964e-01 2.32953565e-01 2.33260280e-01 2.33567111e-01 + 2.33874055e-01 2.34181114e-01 2.34488287e-01 2.34795574e-01 2.35102975e-01 + 2.35410489e-01 2.35718116e-01 2.36025856e-01 2.36333709e-01 2.36641675e-01 + 2.36949753e-01 2.37257943e-01 2.37566246e-01 2.37874660e-01 2.38183186e-01 + 2.38491824e-01 2.38800572e-01 2.39109432e-01 2.39418403e-01 2.39727484e-01 + 2.40036676e-01 2.40345978e-01 2.40655391e-01 2.40964913e-01 2.41274545e-01 + 2.41584286e-01 2.41894137e-01 2.42204097e-01 2.42514166e-01 2.42824344e-01 + 2.43134630e-01 2.43445024e-01 2.43755527e-01 2.44066138e-01 2.44376856e-01 + 2.44687682e-01 2.44998615e-01 2.45309656e-01 2.45620803e-01 2.45932058e-01 + 2.46243419e-01 2.46554886e-01 2.46866459e-01 2.47178139e-01 2.47489924e-01 + 2.47801815e-01 2.48113812e-01 2.48425913e-01 2.48738120e-01 2.49050431e-01 + 2.49362848e-01 2.49675368e-01 2.49987993e-01 2.50300722e-01 2.50613555e-01 + 2.50926492e-01 2.51239532e-01 2.51552675e-01 2.51865922e-01 2.52179271e-01 + 2.52492723e-01 2.52806278e-01 2.53119935e-01 2.53433694e-01 2.53747555e-01 + 2.54061518e-01 2.54375582e-01 2.54689748e-01 2.55004015e-01 2.55318383e-01 + 2.55632851e-01 2.55947421e-01 2.56262090e-01 2.56576860e-01 2.56891730e-01 + 2.57206700e-01 2.57521770e-01 2.57836938e-01 2.58152207e-01 2.58467574e-01 + 2.58783040e-01 2.59098605e-01 2.59414268e-01 2.59730029e-01 2.60045889e-01 + 2.60361847e-01 2.60677902e-01 2.60994055e-01 2.61310305e-01 2.61626652e-01 + 2.61943096e-01 2.62259637e-01 2.62576275e-01 2.62893009e-01 2.63209839e-01 + 2.63526765e-01 2.63843787e-01 2.64160905e-01 2.64478118e-01 2.64795426e-01 + 2.65112830e-01 2.65430328e-01 2.65747921e-01 2.66065608e-01 2.66383390e-01 + 2.66701265e-01 2.67019235e-01 2.67337298e-01 2.67655455e-01 2.67973706e-01 + 2.68292049e-01 2.68610485e-01 2.68929014e-01 2.69247636e-01 2.69566350e-01 + 2.69885156e-01 2.70204055e-01 2.70523045e-01 2.70842127e-01 2.71161300e-01 + 2.71480564e-01 2.71799920e-01 2.72119366e-01 2.72438903e-01 2.72758531e-01 + 2.73078249e-01 2.73398057e-01 2.73717955e-01 2.74037942e-01 2.74358019e-01 + 2.74678186e-01 2.74998442e-01 2.75318787e-01 2.75639220e-01 2.75959743e-01 + 2.76280353e-01 2.76601052e-01 2.76921839e-01 2.77242714e-01 2.77563676e-01 + 2.77884726e-01 2.78205864e-01 2.78527088e-01 2.78848399e-01 2.79169798e-01 + 2.79491282e-01 2.79812853e-01 2.80134510e-01 2.80456254e-01 2.80778083e-01 + 2.81099997e-01 2.81421997e-01 2.81744083e-01 2.82066253e-01 2.82388508e-01 + 2.82710848e-01 2.83033273e-01 2.83355782e-01 2.83678374e-01 2.84001051e-01 + 2.84323812e-01 2.84646656e-01 2.84969584e-01 2.85292594e-01 2.85615688e-01 + 2.85938865e-01 2.86262124e-01 2.86585466e-01 2.86908890e-01 2.87232396e-01 + 2.87555984e-01 2.87879654e-01 2.88203405e-01 2.88527238e-01 2.88851152e-01 + 2.89175147e-01 2.89499222e-01 2.89823378e-01 2.90147615e-01 2.90471932e-01 + 2.90796329e-01 2.91120806e-01 2.91445362e-01 2.91769999e-01 2.92094714e-01 + 2.92419508e-01 2.92744382e-01 2.93069334e-01 2.93394365e-01 2.93719474e-01 + 2.94044662e-01 2.94369927e-01 2.94695271e-01 2.95020692e-01 2.95346191e-01 + 2.95671767e-01 2.95997420e-01 2.96323150e-01 2.96648956e-01 2.96974840e-01 + 2.97300799e-01 2.97626835e-01 2.97952947e-01 2.98279135e-01 2.98605399e-01 + 2.98931738e-01 2.99258152e-01 2.99584642e-01 2.99911206e-01 3.00237845e-01 + 3.00564559e-01 3.00891347e-01 3.01218209e-01 3.01545146e-01 3.01872156e-01 + 3.02199240e-01 3.02526398e-01 3.02853628e-01 3.03180932e-01 3.03508309e-01 + 3.03835759e-01 3.04163281e-01 3.04490876e-01 3.04818543e-01 3.05146281e-01 + 3.05474092e-01 3.05801975e-01 3.06129929e-01 3.06457954e-01 3.06786051e-01 + 3.07114218e-01 3.07442456e-01 3.07770765e-01 3.08099145e-01 3.08427594e-01 + 3.08756114e-01 3.09084703e-01 3.09413363e-01 3.09742091e-01 3.10070890e-01 + 3.10399757e-01 3.10728693e-01 3.11057699e-01 3.11386772e-01 3.11715915e-01 + 3.12045125e-01 3.12374404e-01 3.12703751e-01 3.13033165e-01 3.13362647e-01 + 3.13692197e-01 3.14021813e-01 3.14351497e-01 3.14681248e-01 3.15011065e-01 + 3.15340949e-01 3.15670899e-01 3.16000915e-01 3.16330997e-01 3.16661145e-01 + 3.16991359e-01 3.17321638e-01 3.17651983e-01 3.17982392e-01 3.18312867e-01 + 3.18643406e-01 3.18974010e-01 3.19304678e-01 3.19635411e-01 3.19966207e-01 + 3.20297067e-01 3.20627992e-01 3.20958979e-01 3.21290030e-01 3.21621144e-01 + 3.21952321e-01 3.22283561e-01 3.22614864e-01 3.22946229e-01 3.23277656e-01 + 3.23609146e-01 3.23940697e-01 3.24272310e-01 3.24603985e-01 3.24935721e-01 + 3.25267519e-01 3.25599377e-01 3.25931297e-01 3.26263277e-01 3.26595317e-01 + 3.26927419e-01 3.27259580e-01 3.27591801e-01 3.27924082e-01 3.28256423e-01 + 3.28588824e-01 3.28921283e-01 3.29253802e-01 3.29586380e-01 3.29919017e-01 + 3.30251712e-01 3.30584466e-01 3.30917278e-01 3.31250149e-01 3.31583077e-01 + 3.31916063e-01 3.32249107e-01 3.32582208e-01 3.32915366e-01 3.33248582e-01 + 3.33581854e-01 3.33915183e-01 3.34248569e-01 3.34582011e-01 3.34915510e-01 + 3.35249064e-01 3.35582675e-01 3.35916341e-01 3.36250062e-01 3.36583839e-01 + 3.36917672e-01 3.37251559e-01 3.37585501e-01 3.37919498e-01 3.38253550e-01 + 3.38587656e-01 3.38921816e-01 3.39256030e-01 3.39590298e-01 3.39924620e-01 + 3.40258995e-01 3.40593423e-01 3.40927905e-01 3.41262440e-01 3.41597027e-01 + 3.41931667e-01 3.42266360e-01 3.42601105e-01 3.42935903e-01 3.43270752e-01 + 3.43605653e-01 3.43940606e-01 3.44275610e-01 3.44610666e-01 3.44945772e-01 + 3.45280930e-01 3.45616139e-01 3.45951398e-01 3.46286708e-01 3.46622068e-01 + 3.46957478e-01 3.47292938e-01 3.47628448e-01 3.47964008e-01 3.48299617e-01 + 3.48635275e-01 3.48970983e-01 3.49306740e-01 3.49642545e-01 3.49978399e-01 + 3.50314302e-01 3.50650253e-01 3.50986252e-01 3.51322299e-01 3.51658394e-01 + 3.51994536e-01 3.52330726e-01 3.52666964e-01 3.53003248e-01 3.53339580e-01 + 3.53675958e-01 3.54012383e-01 3.54348855e-01 3.54685373e-01 3.55021937e-01 + 3.55358547e-01 3.55695203e-01 3.56031904e-01 3.56368651e-01 3.56705444e-01 + 3.57042281e-01 3.57379164e-01 3.57716092e-01 3.58053064e-01 3.58390081e-01 + 3.58727142e-01 3.59064247e-01 3.59401397e-01 3.59738590e-01 3.60075827e-01 + 3.60413107e-01 3.60750431e-01 3.61087799e-01 3.61425209e-01 3.61762662e-01 + 3.62100158e-01 3.62437696e-01 3.62775277e-01 3.63112900e-01 3.63450566e-01 + 3.63788273e-01 3.64126022e-01 3.64463812e-01 3.64801645e-01 3.65139518e-01 + 3.65477432e-01 3.65815388e-01 3.66153384e-01 3.66491421e-01 3.66829498e-01 + 3.67167616e-01 3.67505774e-01 3.67843971e-01 3.68182209e-01 3.68520487e-01 + 3.68858803e-01 3.69197160e-01 3.69535555e-01 3.69873990e-01 3.70212463e-01 + 3.70550975e-01 3.70889526e-01 3.71228115e-01 3.71566742e-01 3.71905408e-01 + 3.72244111e-01 3.72582852e-01 3.72921631e-01 3.73260447e-01 3.73599300e-01 + 3.73938191e-01 3.74277119e-01 3.74616083e-01 3.74955084e-01 3.75294122e-01 + 3.75633196e-01 3.75972306e-01 3.76311452e-01 3.76650634e-01 3.76989852e-01 + 3.77329105e-01 3.77668394e-01 3.78007718e-01 3.78347077e-01 3.78686471e-01 + 3.79025899e-01 3.79365363e-01 3.79704861e-01 3.80044393e-01 3.80383959e-01 + 3.80723559e-01 3.81063194e-01 3.81402861e-01 3.81742563e-01 3.82082298e-01 + 3.82422065e-01 3.82761866e-01 3.83101700e-01 3.83441567e-01 3.83781466e-01 + 3.84121398e-01 3.84461362e-01 3.84801358e-01 3.85141386e-01 3.85481446e-01 + 3.85821538e-01 3.86161661e-01 3.86501816e-01 3.86842001e-01 3.87182218e-01 + 3.87522466e-01 3.87862744e-01 3.88203053e-01 3.88543393e-01 3.88883763e-01 + 3.89224162e-01 3.89564592e-01 3.89905052e-01 3.90245541e-01 3.90586060e-01 + 3.90926609e-01 3.91267186e-01 3.91607793e-01 3.91948428e-01 3.92289093e-01 + 3.92629785e-01 3.92970507e-01 3.93311256e-01 3.93652034e-01 3.93992840e-01 + 3.94333674e-01 3.94674535e-01 3.95015424e-01 3.95356341e-01 3.95697284e-01 + 3.96038255e-01 3.96379253e-01 3.96720277e-01 3.97061328e-01 3.97402406e-01 + 3.97743510e-01 3.98084640e-01 3.98425796e-01 3.98766978e-01 3.99108186e-01 + 3.99449420e-01 3.99790679e-01 4.00131963e-01 4.00473272e-01 4.00814607e-01 + 4.01155966e-01 4.01497350e-01 4.01838759e-01 4.02180192e-01 4.02521649e-01 + 4.02863130e-01 4.03204636e-01 4.03546165e-01 4.03887718e-01 4.04229294e-01 + 4.04570894e-01 4.04912517e-01 4.05254163e-01 4.05595832e-01 4.05937524e-01 + 4.06279238e-01 4.06620975e-01 4.06962734e-01 4.07304516e-01 4.07646319e-01 + 4.07988145e-01 4.08329992e-01 4.08671861e-01 4.09013751e-01 4.09355663e-01 + 4.09697596e-01 4.10039549e-01 4.10381524e-01 4.10723520e-01 4.11065536e-01 + 4.11407572e-01 4.11749629e-01 4.12091706e-01 4.12433803e-01 4.12775920e-01 + 4.13118057e-01 4.13460213e-01 4.13802389e-01 4.14144583e-01 4.14486798e-01 + 4.14829031e-01 4.15171283e-01 4.15513553e-01 4.15855843e-01 4.16198150e-01 + 4.16540476e-01 4.16882821e-01 4.17225183e-01 4.17567563e-01 4.17909961e-01 + 4.18252376e-01 4.18594809e-01 4.18937259e-01 4.19279726e-01 4.19622210e-01 + 4.19964711e-01 4.20307229e-01 4.20649763e-01 4.20992314e-01 4.21334881e-01 + 4.21677465e-01 4.22020064e-01 4.22362679e-01 4.22705310e-01 4.23047957e-01 + 4.23390619e-01 4.23733296e-01 4.24075988e-01 4.24418696e-01 4.24761418e-01 + 4.25104155e-01 4.25446907e-01 4.25789673e-01 4.26132454e-01 4.26475249e-01 + 4.26818057e-01 4.27160880e-01 4.27503717e-01 4.27846567e-01 4.28189430e-01 + 4.28532307e-01 4.28875197e-01 4.29218101e-01 4.29561017e-01 4.29903946e-01 + 4.30246888e-01 4.30589842e-01 4.30932808e-01 4.31275787e-01 4.31618778e-01 + 4.31961781e-01 4.32304796e-01 4.32647822e-01 4.32990860e-01 4.33333909e-01 + 4.33676970e-01 4.34020042e-01 4.34363125e-01 4.34706219e-01 4.35049323e-01 + 4.35392438e-01 4.35735564e-01 4.36078700e-01 4.36421846e-01 4.36765002e-01 + 4.37108168e-01 4.37451344e-01 4.37794529e-01 4.38137724e-01 4.38480929e-01 + 4.38824142e-01 4.39167365e-01 4.39510597e-01 4.39853837e-01 4.40197087e-01 + 4.40540345e-01 4.40883611e-01 4.41226885e-01 4.41570168e-01 4.41913459e-01 + 4.42256758e-01 4.42600064e-01 4.42943378e-01 4.43286700e-01 4.43630029e-01 + 4.43973365e-01 4.44316708e-01 4.44660058e-01 4.45003416e-01 4.45346779e-01 + 4.45690150e-01 4.46033526e-01 4.46376910e-01 4.46720299e-01 4.47063694e-01 + 4.47407095e-01 4.47750502e-01 4.48093915e-01 4.48437333e-01 4.48780757e-01 + 4.49124185e-01 4.49467619e-01 4.49811058e-01 4.50154502e-01 4.50497950e-01 + 4.50841403e-01 4.51184861e-01 4.51528322e-01 4.51871788e-01 4.52215259e-01 + 4.52558733e-01 4.52902210e-01 4.53245692e-01 4.53589177e-01 4.53932665e-01 + 4.54276157e-01 4.54619652e-01 4.54963150e-01 4.55306651e-01 4.55650154e-01 + 2.08130000e-04 2.08281191e-04 2.08734762e-04 2.09490714e-04 2.10549046e-04 + 2.11909757e-04 2.13572846e-04 2.15538310e-04 2.17806148e-04 2.20376358e-04 + 2.23248936e-04 2.26423882e-04 2.29901190e-04 2.33680858e-04 2.37762883e-04 + 2.42147260e-04 2.46833984e-04 2.51823051e-04 2.57114457e-04 2.62708196e-04 + 2.68604263e-04 2.74802652e-04 2.81303356e-04 2.88106370e-04 2.95211687e-04 + 3.02619299e-04 3.10329200e-04 3.18341382e-04 3.26655837e-04 3.35272557e-04 + 3.44191533e-04 3.53412758e-04 3.62936221e-04 3.72761913e-04 3.82889825e-04 + 3.93319947e-04 4.04052269e-04 4.15086779e-04 4.26423468e-04 4.38062324e-04 + 4.50003336e-04 4.62246492e-04 4.74791780e-04 4.87639188e-04 5.00788703e-04 + 5.14240312e-04 5.27994002e-04 5.42049760e-04 5.56407572e-04 5.71067423e-04 + 5.86029300e-04 6.01293187e-04 6.16859071e-04 6.32726934e-04 6.48896763e-04 + 6.65368541e-04 6.82142252e-04 6.99217880e-04 7.16595407e-04 7.34274817e-04 + 7.52256092e-04 7.70539216e-04 7.89124169e-04 8.08010934e-04 8.27199493e-04 + 8.46689825e-04 8.66481913e-04 8.86575737e-04 9.06971278e-04 9.27668514e-04 + 9.48667427e-04 9.69967995e-04 9.91570198e-04 1.01347401e-03 1.03567942e-03 + 1.05818640e-03 1.08099493e-03 1.10410498e-03 1.12751654e-03 1.15122957e-03 + 1.17524406e-03 1.19955999e-03 1.22417733e-03 1.24909605e-03 1.27431613e-03 + 1.29983755e-03 1.32566029e-03 1.35178430e-03 1.37820958e-03 1.40493610e-03 + 1.43196382e-03 1.45929272e-03 1.48692278e-03 1.51485397e-03 1.54308626e-03 + 1.57161963e-03 1.60045404e-03 1.62958946e-03 1.65902588e-03 1.68876325e-03 + 1.71880156e-03 1.74914077e-03 1.77978085e-03 1.81072177e-03 1.84196351e-03 + 1.87350602e-03 1.90534929e-03 1.93749327e-03 1.96993795e-03 2.00268328e-03 + 2.03572923e-03 2.06907577e-03 2.10272288e-03 2.13667051e-03 2.17091863e-03 + 2.20546721e-03 2.24031622e-03 2.27546562e-03 2.31091538e-03 2.34666546e-03 + 2.38271583e-03 2.41906645e-03 2.45571729e-03 2.49266831e-03 2.52991947e-03 + 2.56747075e-03 2.60532209e-03 2.64347347e-03 2.68192485e-03 2.72067619e-03 + 2.75972745e-03 2.79907859e-03 2.83872959e-03 2.87868038e-03 2.91893095e-03 + 2.95948125e-03 3.00033123e-03 3.04148087e-03 3.08293011e-03 3.12467892e-03 + 3.16672726e-03 3.20907509e-03 3.25172236e-03 3.29466904e-03 3.33791508e-03 + 3.38146044e-03 3.42530507e-03 3.46944894e-03 3.51389201e-03 3.55863422e-03 + 3.60367554e-03 3.64901591e-03 3.69465531e-03 3.74059367e-03 3.78683096e-03 + 3.83336714e-03 3.88020215e-03 3.92733595e-03 3.97476850e-03 4.02249975e-03 + 4.07052965e-03 4.11885815e-03 4.16748522e-03 4.21641079e-03 4.26563483e-03 + 4.31515728e-03 4.36497811e-03 4.41509725e-03 4.46551466e-03 4.51623029e-03 + 4.56724409e-03 4.61855601e-03 4.67016601e-03 4.72207403e-03 4.77428002e-03 + 4.82678393e-03 4.87958570e-03 4.93268530e-03 4.98608266e-03 5.03977774e-03 + 5.09377048e-03 5.14806083e-03 5.20264873e-03 5.25753414e-03 5.31271700e-03 + 5.36819725e-03 5.42397485e-03 5.48004973e-03 5.53642185e-03 5.59309115e-03 + 5.65005757e-03 5.70732106e-03 5.76488157e-03 5.82273903e-03 5.88089339e-03 + 5.93934459e-03 5.99809258e-03 6.05713731e-03 6.11647870e-03 6.17611671e-03 + 6.23605128e-03 6.29628235e-03 6.35680986e-03 6.41763375e-03 6.47875396e-03 + 6.54017044e-03 6.60188312e-03 6.66389194e-03 6.72619685e-03 6.78879778e-03 + 6.85169468e-03 6.91488748e-03 6.97837611e-03 7.04216053e-03 7.10624066e-03 + 7.17061645e-03 7.23528783e-03 7.30025474e-03 7.36551712e-03 7.43107490e-03 + 7.49692802e-03 7.56307641e-03 7.62952002e-03 7.69625878e-03 7.76329262e-03 + 7.83062147e-03 7.89824528e-03 7.96616398e-03 8.03437750e-03 8.10288577e-03 + 8.17168874e-03 8.24078632e-03 8.31017847e-03 8.37986510e-03 8.44984615e-03 + 8.52012155e-03 8.59069124e-03 8.66155515e-03 8.73271321e-03 8.80416535e-03 + 8.87591149e-03 8.94795158e-03 9.02028554e-03 9.09291331e-03 9.16583480e-03 + 9.23904995e-03 9.31255870e-03 9.38636096e-03 9.46045668e-03 9.53484577e-03 + 9.60952816e-03 9.68450379e-03 9.75977258e-03 9.83533445e-03 9.91118934e-03 + 9.98733717e-03 1.00637779e-02 1.01405114e-02 1.02175376e-02 1.02948564e-02 + 1.03724679e-02 1.04503718e-02 1.05285681e-02 1.06070568e-02 1.06858378e-02 + 1.07649109e-02 1.08442762e-02 1.09239335e-02 1.10038828e-02 1.10841240e-02 + 1.11646570e-02 1.12454817e-02 1.13265980e-02 1.14080060e-02 1.14897054e-02 + 1.15716963e-02 1.16539785e-02 1.17365519e-02 1.18194166e-02 1.19025723e-02 + 1.19860191e-02 1.20697568e-02 1.21537854e-02 1.22381047e-02 1.23227148e-02 + 1.24076155e-02 1.24928067e-02 1.25782883e-02 1.26640604e-02 1.27501227e-02 + 1.28364752e-02 1.29231179e-02 1.30100506e-02 1.30972732e-02 1.31847858e-02 + 1.32725881e-02 1.33606801e-02 1.34490618e-02 1.35377329e-02 1.36266936e-02 + 1.37159436e-02 1.38054829e-02 1.38953113e-02 1.39854289e-02 1.40758355e-02 + 1.41665311e-02 1.42575155e-02 1.43487886e-02 1.44403504e-02 1.45322008e-02 + 1.46243398e-02 1.47167671e-02 1.48094827e-02 1.49024866e-02 1.49957786e-02 + 1.50893587e-02 1.51832267e-02 1.52773826e-02 1.53718263e-02 1.54665577e-02 + 1.55615767e-02 1.56568832e-02 1.57524771e-02 1.58483584e-02 1.59445269e-02 + 1.60409825e-02 1.61377252e-02 1.62347549e-02 1.63320714e-02 1.64296747e-02 + 1.65275647e-02 1.66257413e-02 1.67242043e-02 1.68229538e-02 1.69219896e-02 + 1.70213116e-02 1.71209197e-02 1.72208138e-02 1.73209939e-02 1.74214598e-02 + 1.75222114e-02 1.76232487e-02 1.77245715e-02 1.78261798e-02 1.79280734e-02 + 1.80302523e-02 1.81327163e-02 1.82354654e-02 1.83384994e-02 1.84418184e-02 + 1.85454220e-02 1.86493104e-02 1.87534833e-02 1.88579407e-02 1.89626824e-02 + 1.90677084e-02 1.91730186e-02 1.92786129e-02 1.93844911e-02 1.94906532e-02 + 1.95970991e-02 1.97038286e-02 1.98108417e-02 1.99181382e-02 2.00257182e-02 + 2.01335813e-02 2.02417277e-02 2.03501571e-02 2.04588694e-02 2.05678646e-02 + 2.06771425e-02 2.07867031e-02 2.08965462e-02 2.10066717e-02 2.11170796e-02 + 2.12277697e-02 2.13387419e-02 2.14499962e-02 2.15615323e-02 2.16733503e-02 + 2.17854499e-02 2.18978311e-02 2.20104938e-02 2.21234379e-02 2.22366633e-02 + 2.23501698e-02 2.24639574e-02 2.25780260e-02 2.26923753e-02 2.28070055e-02 + 2.29219162e-02 2.30371074e-02 2.31525791e-02 2.32683311e-02 2.33843632e-02 + 2.35006755e-02 2.36172677e-02 2.37341397e-02 2.38512915e-02 2.39687230e-02 + 2.40864339e-02 2.42044243e-02 2.43226940e-02 2.44412429e-02 2.45600709e-02 + 2.46791779e-02 2.47985637e-02 2.49182282e-02 2.50381714e-02 2.51583931e-02 + 2.52788932e-02 2.53996717e-02 2.55207283e-02 2.56420629e-02 2.57636755e-02 + 2.58855660e-02 2.60077341e-02 2.61301799e-02 2.62529032e-02 2.63759039e-02 + 2.64991818e-02 2.66227368e-02 2.67465689e-02 2.68706779e-02 2.69950637e-02 + 2.71197262e-02 2.72446653e-02 2.73698808e-02 2.74953726e-02 2.76211406e-02 + 2.77471848e-02 2.78735049e-02 2.80001009e-02 2.81269726e-02 2.82541199e-02 + 2.83815427e-02 2.85092409e-02 2.86372144e-02 2.87654630e-02 2.88939867e-02 + 2.90227852e-02 2.91518585e-02 2.92812065e-02 2.94108290e-02 2.95407260e-02 + 2.96708972e-02 2.98013426e-02 2.99320621e-02 3.00630555e-02 3.01943227e-02 + 3.03258636e-02 3.04576781e-02 3.05897660e-02 3.07221272e-02 3.08547616e-02 + 3.09876691e-02 3.11208496e-02 3.12543028e-02 3.13880288e-02 3.15220273e-02 + 3.16562983e-02 3.17908416e-02 3.19256571e-02 3.20607447e-02 3.21961042e-02 + 3.23317356e-02 3.24676386e-02 3.26038132e-02 3.27402593e-02 3.28769766e-02 + 3.30139652e-02 3.31512248e-02 3.32887554e-02 3.34265567e-02 3.35646288e-02 + 3.37029714e-02 3.38415844e-02 3.39804677e-02 3.41196212e-02 3.42590447e-02 + 3.43987381e-02 3.45387013e-02 3.46789341e-02 3.48194365e-02 3.49602082e-02 + 3.51012492e-02 3.52425593e-02 3.53841384e-02 3.55259864e-02 3.56681031e-02 + 3.58104884e-02 3.59531422e-02 3.60960643e-02 3.62392547e-02 3.63827131e-02 + 3.65264394e-02 3.66704335e-02 3.68146954e-02 3.69592247e-02 3.71040215e-02 + 3.72490856e-02 3.73944167e-02 3.75400149e-02 3.76858800e-02 3.78320118e-02 + 3.79784102e-02 3.81250751e-02 3.82720063e-02 3.84192037e-02 3.85666672e-02 + 3.87143966e-02 3.88623918e-02 3.90106526e-02 3.91591790e-02 3.93079707e-02 + 3.94570277e-02 3.96063498e-02 3.97559369e-02 3.99057888e-02 4.00559054e-02 + 4.02062865e-02 4.03569321e-02 4.05078419e-02 4.06590159e-02 4.08104539e-02 + 4.09621558e-02 4.11141214e-02 4.12663506e-02 4.14188432e-02 4.15715991e-02 + 4.17246182e-02 4.18779004e-02 4.20314454e-02 4.21852532e-02 4.23393235e-02 + 4.24936564e-02 4.26482515e-02 4.28031089e-02 4.29582283e-02 4.31136096e-02 + 4.32692526e-02 4.34251573e-02 4.35813234e-02 4.37377508e-02 4.38944395e-02 + 4.40513892e-02 4.42085998e-02 4.43660711e-02 4.45238031e-02 4.46817956e-02 + 4.48400483e-02 4.49985613e-02 4.51573343e-02 4.53163671e-02 4.54756598e-02 + 4.56352120e-02 4.57950237e-02 4.59550947e-02 4.61154249e-02 4.62760141e-02 + 4.64368622e-02 4.65979690e-02 4.67593344e-02 4.69209582e-02 4.70828403e-02 + 4.72449806e-02 4.74073789e-02 4.75700350e-02 4.77329488e-02 4.78961202e-02 + 4.80595489e-02 4.82232350e-02 4.83871781e-02 4.85513782e-02 4.87158351e-02 + 4.88805487e-02 4.90455188e-02 4.92107453e-02 4.93762280e-02 4.95419667e-02 + 4.97079614e-02 4.98742118e-02 5.00407179e-02 5.02074794e-02 5.03744963e-02 + 5.05417683e-02 5.07092953e-02 5.08770772e-02 5.10451138e-02 5.12134049e-02 + 5.13819505e-02 5.15507503e-02 5.17198043e-02 5.18891121e-02 5.20586738e-02 + 5.22284892e-02 5.23985580e-02 5.25688802e-02 5.27394555e-02 5.29102839e-02 + 5.30813652e-02 5.32526992e-02 5.34242858e-02 5.35961248e-02 5.37682161e-02 + 5.39405595e-02 5.41131548e-02 5.42860020e-02 5.44591008e-02 5.46324511e-02 + 5.48060527e-02 5.49799055e-02 5.51540094e-02 5.53283641e-02 5.55029695e-02 + 5.56778255e-02 5.58529319e-02 5.60282885e-02 5.62038952e-02 5.63797519e-02 + 5.65558583e-02 5.67322144e-02 5.69088199e-02 5.70856747e-02 5.72627786e-02 + 5.74401316e-02 5.76177334e-02 5.77955838e-02 5.79736828e-02 5.81520301e-02 + 5.83306256e-02 5.85094691e-02 5.86885605e-02 5.88678997e-02 5.90474864e-02 + 5.92273205e-02 5.94074018e-02 5.95877302e-02 5.97683055e-02 5.99491276e-02 + 6.01301963e-02 6.03115114e-02 6.04930728e-02 6.06748803e-02 6.08569338e-02 + 6.10392330e-02 6.12217779e-02 6.14045683e-02 6.15876039e-02 6.17708848e-02 + 6.19544105e-02 6.21381812e-02 6.23221964e-02 6.25064562e-02 6.26909603e-02 + 6.28757085e-02 6.30607008e-02 6.32459369e-02 6.34314167e-02 6.36171400e-02 + 6.38031067e-02 6.39893165e-02 6.41757694e-02 6.43624651e-02 6.45494036e-02 + 6.47365845e-02 6.49240078e-02 6.51116734e-02 6.52995809e-02 6.54877303e-02 + 6.56761215e-02 6.58647541e-02 6.60536282e-02 6.62427434e-02 6.64320997e-02 + 6.66216969e-02 6.68115348e-02 6.70016132e-02 6.71919320e-02 6.73824910e-02 + 6.75732900e-02 6.77643289e-02 6.79556075e-02 6.81471257e-02 6.83388832e-02 + 6.85308799e-02 6.87231157e-02 6.89155904e-02 6.91083037e-02 6.93012556e-02 + 6.94944458e-02 6.96878742e-02 6.98815407e-02 7.00754450e-02 7.02695870e-02 + 7.04639665e-02 7.06585833e-02 7.08534374e-02 7.10485284e-02 7.12438563e-02 + 7.14394208e-02 7.16352219e-02 7.18312593e-02 7.20275328e-02 7.22240423e-02 + 7.24207876e-02 7.26177686e-02 7.28149851e-02 7.30124368e-02 7.32101237e-02 + 7.34080456e-02 7.36062022e-02 7.38045935e-02 7.40032192e-02 7.42020791e-02 + 7.44011732e-02 7.46005012e-02 7.48000630e-02 7.49998583e-02 7.51998870e-02 + 7.54001490e-02 7.56006441e-02 7.58013720e-02 7.60023326e-02 7.62035258e-02 + 7.64049514e-02 7.66066092e-02 7.68084989e-02 7.70106206e-02 7.72129739e-02 + 7.74155587e-02 7.76183748e-02 7.78214221e-02 7.80247003e-02 7.82282094e-02 + 7.84319490e-02 7.86359192e-02 7.88401196e-02 7.90445501e-02 7.92492105e-02 + 7.94541007e-02 7.96592204e-02 7.98645695e-02 8.00701479e-02 8.02759553e-02 + 8.04819916e-02 8.06882565e-02 8.08947500e-02 8.11014718e-02 8.13084218e-02 + 8.15155998e-02 8.17230055e-02 8.19306389e-02 8.21384998e-02 8.23465879e-02 + 8.25549031e-02 8.27634452e-02 8.29722141e-02 8.31812095e-02 8.33904313e-02 + 8.35998794e-02 8.38095534e-02 8.40194533e-02 8.42295789e-02 8.44399299e-02 + 8.46505063e-02 8.48613078e-02 8.50723343e-02 8.52835855e-02 8.54950613e-02 + 8.57067616e-02 8.59186860e-02 8.61308346e-02 8.63432070e-02 8.65558031e-02 + 8.67686227e-02 8.69816656e-02 8.71949318e-02 8.74084208e-02 8.76221327e-02 + 8.78360672e-02 8.80502241e-02 8.82646033e-02 8.84792045e-02 8.86940276e-02 + 8.89090725e-02 8.91243388e-02 8.93398265e-02 8.95555354e-02 8.97714652e-02 + 8.99876159e-02 9.02039871e-02 9.04205788e-02 9.06373908e-02 9.08544228e-02 + 9.10716747e-02 9.12891463e-02 9.15068374e-02 9.17247478e-02 9.19428774e-02 + 9.21612260e-02 9.23797934e-02 9.25985793e-02 9.28175837e-02 9.30368064e-02 + 9.32562470e-02 9.34759056e-02 9.36957818e-02 9.39158756e-02 9.41361866e-02 + 9.43567148e-02 9.45774599e-02 9.47984219e-02 9.50196003e-02 9.52409952e-02 + 9.54626063e-02 9.56844334e-02 9.59064764e-02 9.61287350e-02 9.63512090e-02 + 9.65738984e-02 9.67968029e-02 9.70199222e-02 9.72432563e-02 9.74668050e-02 + 9.76905680e-02 9.79145452e-02 9.81387363e-02 9.83631413e-02 9.85877598e-02 + 9.88125918e-02 9.90376370e-02 9.92628953e-02 9.94883665e-02 9.97140503e-02 + 9.99399466e-02 1.00166055e-01 1.00392376e-01 1.00618909e-01 1.00845653e-01 + 1.01072609e-01 1.01299776e-01 1.01527155e-01 1.01754744e-01 1.01982545e-01 + 1.02210556e-01 1.02438777e-01 1.02667209e-01 1.02895850e-01 1.03124702e-01 + 1.03353763e-01 1.03583034e-01 1.03812514e-01 1.04042203e-01 1.04272101e-01 + 1.04502207e-01 1.04732523e-01 1.04963046e-01 1.05193778e-01 1.05424718e-01 + 1.05655865e-01 1.05887221e-01 1.06118783e-01 1.06350553e-01 1.06582530e-01 + 1.06814713e-01 1.07047104e-01 1.07279701e-01 1.07512504e-01 1.07745513e-01 + 1.07978728e-01 1.08212148e-01 1.08445775e-01 1.08679606e-01 1.08913643e-01 + 1.09147884e-01 1.09382331e-01 1.09616982e-01 1.09851837e-01 1.10086896e-01 + 1.10322160e-01 1.10557627e-01 1.10793298e-01 1.11029172e-01 1.11265249e-01 + 1.11501530e-01 1.11738013e-01 1.11974699e-01 1.12211587e-01 1.12448678e-01 + 1.12685971e-01 1.12923465e-01 1.13161162e-01 1.13399059e-01 1.13637158e-01 + 1.13875458e-01 1.14113960e-01 1.14352661e-01 1.14591564e-01 1.14830666e-01 + 1.15069969e-01 1.15309472e-01 1.15549174e-01 1.15789076e-01 1.16029178e-01 + 1.16269478e-01 1.16509978e-01 1.16750676e-01 1.16991573e-01 1.17232669e-01 + 1.17473962e-01 1.17715454e-01 1.17957143e-01 1.18199030e-01 1.18441115e-01 + 1.18683397e-01 1.18925875e-01 1.19168551e-01 1.19411423e-01 1.19654492e-01 + 1.19897757e-01 1.20141218e-01 1.20384875e-01 1.20628728e-01 1.20872776e-01 + 1.21117020e-01 1.21361458e-01 1.21606092e-01 1.21850920e-01 1.22095943e-01 + 1.22341160e-01 1.22586571e-01 1.22832176e-01 1.23077975e-01 1.23323967e-01 + 1.23570153e-01 1.23816532e-01 1.24063104e-01 1.24309869e-01 1.24556826e-01 + 1.24803975e-01 1.25051317e-01 1.25298851e-01 1.25546576e-01 1.25794494e-01 + 1.26042602e-01 1.26290902e-01 1.26539393e-01 1.26788074e-01 1.27036946e-01 + 1.27286009e-01 1.27535261e-01 1.27784704e-01 1.28034337e-01 1.28284159e-01 + 1.28534171e-01 1.28784372e-01 1.29034762e-01 1.29285340e-01 1.29536108e-01 + 1.29787064e-01 1.30038208e-01 1.30289540e-01 1.30541060e-01 1.30792768e-01 + 1.31044663e-01 1.31296746e-01 1.31549015e-01 1.31801471e-01 1.32054115e-01 + 1.32306944e-01 1.32559960e-01 1.32813162e-01 1.33066550e-01 1.33320123e-01 + 1.33573882e-01 1.33827826e-01 1.34081956e-01 1.34336270e-01 1.34590769e-01 + 1.34845452e-01 1.35100320e-01 1.35355372e-01 1.35610608e-01 1.35866027e-01 + 1.36121630e-01 1.36377417e-01 1.36633386e-01 1.36889538e-01 1.37145873e-01 + 1.37402391e-01 1.37659091e-01 1.37915973e-01 1.38173037e-01 1.38430283e-01 + 1.38687710e-01 1.38945318e-01 1.39203108e-01 1.39461079e-01 1.39719230e-01 + 1.39977562e-01 1.40236074e-01 1.40494766e-01 1.40753639e-01 1.41012691e-01 + 1.41271922e-01 1.41531333e-01 1.41790923e-01 1.42050692e-01 1.42310640e-01 + 1.42570766e-01 1.42831071e-01 1.43091554e-01 1.43352214e-01 1.43613053e-01 + 1.43874069e-01 1.44135262e-01 1.44396633e-01 1.44658180e-01 1.44919904e-01 + 1.45181805e-01 1.45443882e-01 1.45706135e-01 1.45968565e-01 1.46231170e-01 + 1.46493950e-01 1.46756906e-01 1.47020037e-01 1.47283343e-01 1.47546824e-01 + 1.47810479e-01 1.48074308e-01 1.48338312e-01 1.48602490e-01 1.48866841e-01 + 1.49131366e-01 1.49396065e-01 1.49660936e-01 1.49925981e-01 1.50191198e-01 + 1.50456588e-01 1.50722150e-01 1.50987884e-01 1.51253790e-01 1.51519868e-01 + 1.51786118e-01 1.52052539e-01 1.52319131e-01 1.52585894e-01 1.52852827e-01 + 1.53119932e-01 1.53387206e-01 1.53654651e-01 1.53922266e-01 1.54190050e-01 + 1.54458004e-01 1.54726127e-01 1.54994420e-01 1.55262881e-01 1.55531511e-01 + 1.55800310e-01 1.56069277e-01 1.56338412e-01 1.56607715e-01 1.56877186e-01 + 1.57146824e-01 1.57416630e-01 1.57686603e-01 1.57956743e-01 1.58227049e-01 + 1.58497522e-01 1.58768161e-01 1.59038967e-01 1.59309938e-01 1.59581075e-01 + 1.59852378e-01 1.60123846e-01 1.60395479e-01 1.60667277e-01 1.60939240e-01 + 1.61211367e-01 1.61483659e-01 1.61756114e-01 1.62028734e-01 1.62301517e-01 + 1.62574464e-01 1.62847574e-01 1.63120847e-01 1.63394283e-01 1.63667882e-01 + 1.63941644e-01 1.64215567e-01 1.64489653e-01 1.64763901e-01 1.65038310e-01 + 1.65312881e-01 1.65587613e-01 1.65862506e-01 1.66137560e-01 1.66412775e-01 + 1.66688150e-01 1.66963686e-01 1.67239381e-01 1.67515237e-01 1.67791252e-01 + 1.68067427e-01 1.68343761e-01 1.68620254e-01 1.68896906e-01 1.69173717e-01 + 1.69450686e-01 1.69727813e-01 1.70005098e-01 1.70282542e-01 1.70560143e-01 + 1.70837901e-01 1.71115817e-01 1.71393889e-01 1.71672119e-01 1.71950505e-01 + 1.72229048e-01 1.72507747e-01 1.72786602e-01 1.73065613e-01 1.73344779e-01 + 1.73624101e-01 1.73903579e-01 1.74183211e-01 1.74462998e-01 1.74742940e-01 + 1.75023036e-01 1.75303286e-01 1.75583691e-01 1.75864249e-01 1.76144961e-01 + 1.76425826e-01 1.76706845e-01 1.76988017e-01 1.77269341e-01 1.77550818e-01 + 1.77832448e-01 1.78114229e-01 1.78396163e-01 1.78678248e-01 1.78960486e-01 + 1.79242874e-01 1.79525414e-01 1.79808105e-01 1.80090946e-01 1.80373938e-01 + 1.80657081e-01 1.80940374e-01 1.81223816e-01 1.81507409e-01 1.81791151e-01 + 1.82075043e-01 1.82359084e-01 1.82643273e-01 1.82927612e-01 1.83212099e-01 + 1.83496734e-01 1.83781518e-01 1.84066450e-01 1.84351529e-01 1.84636756e-01 + 1.84922131e-01 1.85207652e-01 1.85493321e-01 1.85779136e-01 1.86065098e-01 + 1.86351206e-01 1.86637461e-01 1.86923861e-01 1.87210407e-01 1.87497099e-01 + 1.87783936e-01 1.88070919e-01 1.88358046e-01 1.88645318e-01 1.88932734e-01 + 1.89220295e-01 1.89508000e-01 1.89795849e-01 1.90083842e-01 1.90371978e-01 + 1.90660258e-01 1.90948681e-01 1.91237246e-01 1.91525955e-01 1.91814806e-01 + 1.92103799e-01 1.92392935e-01 1.92682212e-01 1.92971631e-01 1.93261192e-01 + 1.93550894e-01 1.93840737e-01 1.94130721e-01 1.94420846e-01 1.94711111e-01 + 1.95001517e-01 1.95292063e-01 1.95582748e-01 1.95873574e-01 1.96164539e-01 + 1.96455643e-01 1.96746886e-01 1.97038269e-01 1.97329790e-01 1.97621449e-01 + 1.97913247e-01 1.98205183e-01 1.98497257e-01 1.98789469e-01 1.99081818e-01 + 1.99374304e-01 1.99666928e-01 1.99959688e-01 2.00252585e-01 2.00545619e-01 + 2.00838789e-01 2.01132095e-01 2.01425537e-01 2.01719114e-01 2.02012828e-01 + 2.02306676e-01 2.02600660e-01 2.02894778e-01 2.03189031e-01 2.03483419e-01 + 2.03777941e-01 2.04072597e-01 2.04367387e-01 2.04662311e-01 2.04957368e-01 + 2.05252558e-01 2.05547882e-01 2.05843338e-01 2.06138928e-01 2.06434649e-01 + 2.06730503e-01 2.07026489e-01 2.07322607e-01 2.07618857e-01 2.07915238e-01 + 2.08211750e-01 2.08508394e-01 2.08805168e-01 2.09102073e-01 2.09399109e-01 + 2.09696275e-01 2.09993571e-01 2.10290997e-01 2.10588552e-01 2.10886237e-01 + 2.11184052e-01 2.11481995e-01 2.11780068e-01 2.12078269e-01 2.12376598e-01 + 2.12675056e-01 2.12973642e-01 2.13272356e-01 2.13571197e-01 2.13870166e-01 + 2.14169263e-01 2.14468486e-01 2.14767837e-01 2.15067314e-01 2.15366917e-01 + 2.15666647e-01 2.15966503e-01 2.16266485e-01 2.16566592e-01 2.16866825e-01 + 2.17167184e-01 2.17467667e-01 2.17768276e-01 2.18069009e-01 2.18369866e-01 + 2.18670848e-01 2.18971954e-01 2.19273184e-01 2.19574538e-01 2.19876015e-01 + 2.20177615e-01 2.20479339e-01 2.20781185e-01 2.21083155e-01 2.21385246e-01 + 2.21687460e-01 2.21989797e-01 2.22292255e-01 2.22594835e-01 2.22897536e-01 + 2.23200359e-01 2.23503303e-01 2.23806367e-01 2.24109553e-01 2.24412859e-01 + 2.24716285e-01 2.25019832e-01 2.25323498e-01 2.25627285e-01 2.25931191e-01 + 2.26235216e-01 2.26539360e-01 2.26843623e-01 2.27148005e-01 2.27452506e-01 + 2.27757125e-01 2.28061862e-01 2.28366717e-01 2.28671690e-01 2.28976780e-01 + 2.29281988e-01 2.29587313e-01 2.29892755e-01 2.30198313e-01 2.30503989e-01 + 2.30809780e-01 2.31115688e-01 2.31421712e-01 2.31727852e-01 2.32034107e-01 + 2.32340478e-01 2.32646964e-01 2.32953565e-01 2.33260280e-01 2.33567111e-01 + 2.33874055e-01 2.34181114e-01 2.34488287e-01 2.34795574e-01 2.35102975e-01 + 2.35410489e-01 2.35718116e-01 2.36025856e-01 2.36333709e-01 2.36641675e-01 + 2.36949753e-01 2.37257943e-01 2.37566246e-01 2.37874660e-01 2.38183186e-01 + 2.38491824e-01 2.38800572e-01 2.39109432e-01 2.39418403e-01 2.39727484e-01 + 2.40036676e-01 2.40345978e-01 2.40655391e-01 2.40964913e-01 2.41274545e-01 + 2.41584286e-01 2.41894137e-01 2.42204097e-01 2.42514166e-01 2.42824344e-01 + 2.43134630e-01 2.43445024e-01 2.43755527e-01 2.44066138e-01 2.44376856e-01 + 2.44687682e-01 2.44998615e-01 2.45309656e-01 2.45620803e-01 2.45932058e-01 + 2.46243419e-01 2.46554886e-01 2.46866459e-01 2.47178139e-01 2.47489924e-01 + 2.47801815e-01 2.48113812e-01 2.48425913e-01 2.48738120e-01 2.49050431e-01 + 2.49362848e-01 2.49675368e-01 2.49987993e-01 2.50300722e-01 2.50613555e-01 + 2.50926492e-01 2.51239532e-01 2.51552675e-01 2.51865922e-01 2.52179271e-01 + 2.52492723e-01 2.52806278e-01 2.53119935e-01 2.53433694e-01 2.53747555e-01 + 2.54061518e-01 2.54375582e-01 2.54689748e-01 2.55004015e-01 2.55318383e-01 + 2.55632851e-01 2.55947421e-01 2.56262090e-01 2.56576860e-01 2.56891730e-01 + 2.57206700e-01 2.57521770e-01 2.57836938e-01 2.58152207e-01 2.58467574e-01 + 2.58783040e-01 2.59098605e-01 2.59414268e-01 2.59730029e-01 2.60045889e-01 + 2.60361847e-01 2.60677902e-01 2.60994055e-01 2.61310305e-01 2.61626652e-01 + 2.61943096e-01 2.62259637e-01 2.62576275e-01 2.62893009e-01 2.63209839e-01 + 2.63526765e-01 2.63843787e-01 2.64160905e-01 2.64478118e-01 2.64795426e-01 + 2.65112830e-01 2.65430328e-01 2.65747921e-01 2.66065608e-01 2.66383390e-01 + 2.66701265e-01 2.67019235e-01 2.67337298e-01 2.67655455e-01 2.67973706e-01 + 2.68292049e-01 2.68610485e-01 2.68929014e-01 2.69247636e-01 2.69566350e-01 + 2.69885156e-01 2.70204055e-01 2.70523045e-01 2.70842127e-01 2.71161300e-01 + 2.71480564e-01 2.71799920e-01 2.72119366e-01 2.72438903e-01 2.72758531e-01 + 2.73078249e-01 2.73398057e-01 2.73717955e-01 2.74037942e-01 2.74358019e-01 + 2.74678186e-01 2.74998442e-01 2.75318787e-01 2.75639220e-01 2.75959743e-01 + 2.76280353e-01 2.76601052e-01 2.76921839e-01 2.77242714e-01 2.77563676e-01 + 2.77884726e-01 2.78205864e-01 2.78527088e-01 2.78848399e-01 2.79169798e-01 + 2.79491282e-01 2.79812853e-01 2.80134510e-01 2.80456254e-01 2.80778083e-01 + 2.81099997e-01 2.81421997e-01 2.81744083e-01 2.82066253e-01 2.82388508e-01 + 2.82710848e-01 2.83033273e-01 2.83355782e-01 2.83678374e-01 2.84001051e-01 + 2.84323812e-01 2.84646656e-01 2.84969584e-01 2.85292594e-01 2.85615688e-01 + 2.85938865e-01 2.86262124e-01 2.86585466e-01 2.86908890e-01 2.87232396e-01 + 2.87555984e-01 2.87879654e-01 2.88203405e-01 2.88527238e-01 2.88851152e-01 + 2.89175147e-01 2.89499222e-01 2.89823378e-01 2.90147615e-01 2.90471932e-01 + 2.90796329e-01 2.91120806e-01 2.91445362e-01 2.91769999e-01 2.92094714e-01 + 2.92419508e-01 2.92744382e-01 2.93069334e-01 2.93394365e-01 2.93719474e-01 + 2.94044662e-01 2.94369927e-01 2.94695271e-01 2.95020692e-01 2.95346191e-01 + 2.95671767e-01 2.95997420e-01 2.96323150e-01 2.96648956e-01 2.96974840e-01 + 2.97300799e-01 2.97626835e-01 2.97952947e-01 2.98279135e-01 2.98605399e-01 + 2.98931738e-01 2.99258152e-01 2.99584642e-01 2.99911206e-01 3.00237845e-01 + 3.00564559e-01 3.00891347e-01 3.01218209e-01 3.01545146e-01 3.01872156e-01 + 3.02199240e-01 3.02526398e-01 3.02853628e-01 3.03180932e-01 3.03508309e-01 + 3.03835759e-01 3.04163281e-01 3.04490876e-01 3.04818543e-01 3.05146281e-01 + 3.05474092e-01 3.05801975e-01 3.06129929e-01 3.06457954e-01 3.06786051e-01 + 3.07114218e-01 3.07442456e-01 3.07770765e-01 3.08099145e-01 3.08427594e-01 + 3.08756114e-01 3.09084703e-01 3.09413363e-01 3.09742091e-01 3.10070890e-01 + 3.10399757e-01 3.10728693e-01 3.11057699e-01 3.11386772e-01 3.11715915e-01 + 3.12045125e-01 3.12374404e-01 3.12703751e-01 3.13033165e-01 3.13362647e-01 + 3.13692197e-01 3.14021813e-01 3.14351497e-01 3.14681248e-01 3.15011065e-01 + 3.15340949e-01 3.15670899e-01 3.16000915e-01 3.16330997e-01 3.16661145e-01 + 3.16991359e-01 3.17321638e-01 3.17651983e-01 3.17982392e-01 3.18312867e-01 + 3.18643406e-01 3.18974010e-01 3.19304678e-01 3.19635411e-01 3.19966207e-01 + 3.20297067e-01 3.20627992e-01 3.20958979e-01 3.21290030e-01 3.21621144e-01 + 3.21952321e-01 3.22283561e-01 3.22614864e-01 3.22946229e-01 3.23277656e-01 + 3.23609146e-01 3.23940697e-01 3.24272310e-01 3.24603985e-01 3.24935721e-01 + 3.25267519e-01 3.25599377e-01 3.25931297e-01 3.26263277e-01 3.26595317e-01 + 3.26927419e-01 3.27259580e-01 3.27591801e-01 3.27924082e-01 3.28256423e-01 + 3.28588824e-01 3.28921283e-01 3.29253802e-01 3.29586380e-01 3.29919017e-01 + 3.30251712e-01 3.30584466e-01 3.30917278e-01 3.31250149e-01 3.31583077e-01 + 3.31916063e-01 3.32249107e-01 3.32582208e-01 3.32915366e-01 3.33248582e-01 + 3.33581854e-01 3.33915183e-01 3.34248569e-01 3.34582011e-01 3.34915510e-01 + 3.35249064e-01 3.35582675e-01 3.35916341e-01 3.36250062e-01 3.36583839e-01 + 3.36917672e-01 3.37251559e-01 3.37585501e-01 3.37919498e-01 3.38253550e-01 + 3.38587656e-01 3.38921816e-01 3.39256030e-01 3.39590298e-01 3.39924620e-01 + 3.40258995e-01 3.40593423e-01 3.40927905e-01 3.41262440e-01 3.41597027e-01 + 3.41931667e-01 3.42266360e-01 3.42601105e-01 3.42935903e-01 3.43270752e-01 + 3.43605653e-01 3.43940606e-01 3.44275610e-01 3.44610666e-01 3.44945772e-01 + 3.45280930e-01 3.45616139e-01 3.45951398e-01 3.46286708e-01 3.46622068e-01 + 3.46957478e-01 3.47292938e-01 3.47628448e-01 3.47964008e-01 3.48299617e-01 + 3.48635275e-01 3.48970983e-01 3.49306740e-01 3.49642545e-01 3.49978399e-01 + 3.50314302e-01 3.50650253e-01 3.50986252e-01 3.51322299e-01 3.51658394e-01 + 3.51994536e-01 3.52330726e-01 3.52666964e-01 3.53003248e-01 3.53339580e-01 + 3.53675958e-01 3.54012383e-01 3.54348855e-01 3.54685373e-01 3.55021937e-01 + 3.55358547e-01 3.55695203e-01 3.56031904e-01 3.56368651e-01 3.56705444e-01 + 3.57042281e-01 3.57379164e-01 3.57716092e-01 3.58053064e-01 3.58390081e-01 + 3.58727142e-01 3.59064247e-01 3.59401397e-01 3.59738590e-01 3.60075827e-01 + 3.60413107e-01 3.60750431e-01 3.61087799e-01 3.61425209e-01 3.61762662e-01 + 3.62100158e-01 3.62437696e-01 3.62775277e-01 3.63112900e-01 3.63450566e-01 + 3.63788273e-01 3.64126022e-01 3.64463812e-01 3.64801645e-01 3.65139518e-01 + 3.65477432e-01 3.65815388e-01 3.66153384e-01 3.66491421e-01 3.66829498e-01 + 3.67167616e-01 3.67505774e-01 3.67843971e-01 3.68182209e-01 3.68520487e-01 + 3.68858803e-01 3.69197160e-01 3.69535555e-01 3.69873990e-01 3.70212463e-01 + 3.70550975e-01 3.70889526e-01 3.71228115e-01 3.71566742e-01 3.71905408e-01 + 3.72244111e-01 3.72582852e-01 3.72921631e-01 3.73260447e-01 3.73599300e-01 + 3.73938191e-01 3.74277119e-01 3.74616083e-01 3.74955084e-01 3.75294122e-01 + 3.75633196e-01 3.75972306e-01 3.76311452e-01 3.76650634e-01 3.76989852e-01 + 3.77329105e-01 3.77668394e-01 3.78007718e-01 3.78347077e-01 3.78686471e-01 + 3.79025899e-01 3.79365363e-01 3.79704861e-01 3.80044393e-01 3.80383959e-01 + 3.80723559e-01 3.81063194e-01 3.81402861e-01 3.81742563e-01 3.82082298e-01 + 3.82422065e-01 3.82761866e-01 3.83101700e-01 3.83441567e-01 3.83781466e-01 + 3.84121398e-01 3.84461362e-01 3.84801358e-01 3.85141386e-01 3.85481446e-01 + 3.85821538e-01 3.86161661e-01 3.86501816e-01 3.86842001e-01 3.87182218e-01 + 3.87522466e-01 3.87862744e-01 3.88203053e-01 3.88543393e-01 3.88883763e-01 + 3.89224162e-01 3.89564592e-01 3.89905052e-01 3.90245541e-01 3.90586060e-01 + 3.90926609e-01 3.91267186e-01 3.91607793e-01 3.91948428e-01 3.92289093e-01 + 3.92629785e-01 3.92970507e-01 3.93311256e-01 3.93652034e-01 3.93992840e-01 + 3.94333674e-01 3.94674535e-01 3.95015424e-01 3.95356341e-01 3.95697284e-01 + 3.96038255e-01 3.96379253e-01 3.96720277e-01 3.97061328e-01 3.97402406e-01 + 3.97743510e-01 3.98084640e-01 3.98425796e-01 3.98766978e-01 3.99108186e-01 + 3.99449420e-01 3.99790679e-01 4.00131963e-01 4.00473272e-01 4.00814607e-01 + 4.01155966e-01 4.01497350e-01 4.01838759e-01 4.02180192e-01 4.02521649e-01 + 4.02863130e-01 4.03204636e-01 4.03546165e-01 4.03887718e-01 4.04229294e-01 + 4.04570894e-01 4.04912517e-01 4.05254163e-01 4.05595832e-01 4.05937524e-01 + 4.06279238e-01 4.06620975e-01 4.06962734e-01 4.07304516e-01 4.07646319e-01 + 4.07988145e-01 4.08329992e-01 4.08671861e-01 4.09013751e-01 4.09355663e-01 + 4.09697596e-01 4.10039549e-01 4.10381524e-01 4.10723520e-01 4.11065536e-01 + 4.11407572e-01 4.11749629e-01 4.12091706e-01 4.12433803e-01 4.12775920e-01 + 4.13118057e-01 4.13460213e-01 4.13802389e-01 4.14144583e-01 4.14486798e-01 + 4.14829031e-01 4.15171283e-01 4.15513553e-01 4.15855843e-01 4.16198150e-01 + 4.16540476e-01 4.16882821e-01 4.17225183e-01 4.17567563e-01 4.17909961e-01 + 4.18252376e-01 4.18594809e-01 4.18937259e-01 4.19279726e-01 4.19622210e-01 + 4.19964711e-01 4.20307229e-01 4.20649763e-01 4.20992314e-01 4.21334881e-01 + 4.21677465e-01 4.22020064e-01 4.22362679e-01 4.22705310e-01 4.23047957e-01 + 4.23390619e-01 4.23733296e-01 4.24075988e-01 4.24418696e-01 4.24761418e-01 + 4.25104155e-01 4.25446907e-01 4.25789673e-01 4.26132454e-01 4.26475249e-01 + 4.26818057e-01 4.27160880e-01 4.27503717e-01 4.27846567e-01 4.28189430e-01 + 4.28532307e-01 4.28875197e-01 4.29218101e-01 4.29561017e-01 4.29903946e-01 + 4.30246888e-01 4.30589842e-01 4.30932808e-01 4.31275787e-01 4.31618778e-01 + 4.31961781e-01 4.32304796e-01 4.32647822e-01 4.32990860e-01 4.33333909e-01 + 4.33676970e-01 4.34020042e-01 4.34363125e-01 4.34706219e-01 4.35049323e-01 + 4.35392438e-01 4.35735564e-01 4.36078700e-01 4.36421846e-01 4.36765002e-01 + 4.37108168e-01 4.37451344e-01 4.37794529e-01 4.38137724e-01 4.38480929e-01 + 4.38824142e-01 4.39167365e-01 4.39510597e-01 4.39853837e-01 4.40197087e-01 + 4.40540345e-01 4.40883611e-01 4.41226885e-01 4.41570168e-01 4.41913459e-01 + 4.42256758e-01 4.42600064e-01 4.42943378e-01 4.43286700e-01 4.43630029e-01 + 4.43973365e-01 4.44316708e-01 4.44660058e-01 4.45003416e-01 4.45346779e-01 + 4.45690150e-01 4.46033526e-01 4.46376910e-01 4.46720299e-01 4.47063694e-01 + 4.47407095e-01 4.47750502e-01 4.48093915e-01 4.48437333e-01 4.48780757e-01 + 4.49124185e-01 4.49467619e-01 4.49811058e-01 4.50154502e-01 4.50497950e-01 + 4.50841403e-01 4.51184861e-01 4.51528322e-01 4.51871788e-01 4.52215259e-01 + 4.52558733e-01 4.52902210e-01 4.53245692e-01 4.53589177e-01 4.53932665e-01 + 4.54276157e-01 4.54619652e-01 4.54963150e-01 4.55306651e-01 4.55650154e-01 + 1.03953624e+00 1.03772749e+00 1.03592023e+00 1.03411445e+00 1.03231016e+00 + 1.03050735e+00 1.02870603e+00 1.02690620e+00 1.02510785e+00 1.02331100e+00 + 1.02151562e+00 1.01972174e+00 1.01792935e+00 1.01613844e+00 1.01434902e+00 + 1.01256110e+00 1.01077466e+00 1.00898971e+00 1.00720626e+00 1.00542429e+00 + 1.00364382e+00 1.00186484e+00 1.00008735e+00 9.98311355e-01 9.96536852e-01 + 9.94763842e-01 9.92992326e-01 9.91222304e-01 9.89453777e-01 9.87686744e-01 + 9.85921207e-01 9.84157165e-01 9.82394619e-01 9.80633570e-01 9.78874017e-01 + 9.77115962e-01 9.75359404e-01 9.73604344e-01 9.71850782e-01 9.70098719e-01 + 9.68348155e-01 9.66599090e-01 9.64851525e-01 9.63105460e-01 9.61360895e-01 + 9.59617832e-01 9.57876269e-01 9.56136208e-01 9.54397649e-01 9.52660593e-01 + 9.50925039e-01 9.49190988e-01 9.47458441e-01 9.45727397e-01 9.43997858e-01 + 9.42269823e-01 9.40543293e-01 9.38818268e-01 9.37094749e-01 9.35372736e-01 + 9.33652230e-01 9.31933230e-01 9.30215737e-01 9.28499752e-01 9.26785274e-01 + 9.25072305e-01 9.23360844e-01 9.21650893e-01 9.19942450e-01 9.18235517e-01 + 9.16530094e-01 9.14826182e-01 9.13123780e-01 9.11422890e-01 9.09723511e-01 + 9.08025644e-01 9.06329289e-01 9.04634446e-01 9.02941117e-01 9.01249300e-01 + 8.99558998e-01 8.97870209e-01 8.96182935e-01 8.94497176e-01 8.92812931e-01 + 8.91130202e-01 8.89448989e-01 8.87769292e-01 8.86091112e-01 8.84414448e-01 + 8.82739302e-01 8.81065673e-01 8.79393562e-01 8.77722970e-01 8.76053896e-01 + 8.74386341e-01 8.72720306e-01 8.71055790e-01 8.69392795e-01 8.67731320e-01 + 8.66071366e-01 8.64412932e-01 8.62756021e-01 8.61100631e-01 8.59446764e-01 + 8.57794419e-01 8.56143597e-01 8.54494298e-01 8.52846523e-01 8.51200272e-01 + 8.49555545e-01 8.47912343e-01 8.46270666e-01 8.44630515e-01 8.42991889e-01 + 8.41354789e-01 8.39719216e-01 8.38085170e-01 8.36452650e-01 8.34821658e-01 + 8.33192195e-01 8.31564259e-01 8.29937852e-01 8.28312973e-01 8.26689624e-01 + 8.25067805e-01 8.23447515e-01 8.21828756e-01 8.20211528e-01 8.18595830e-01 + 8.16981664e-01 8.15369029e-01 8.13757927e-01 8.12148357e-01 8.10540319e-01 + 8.08933815e-01 8.07328844e-01 8.05725406e-01 8.04123503e-01 8.02523135e-01 + 8.00924301e-01 7.99327002e-01 7.97731239e-01 7.96137011e-01 7.94544320e-01 + 7.92953165e-01 7.91363547e-01 7.89775466e-01 7.88188923e-01 7.86603918e-01 + 7.85020450e-01 7.83438522e-01 7.81858132e-01 7.80279281e-01 7.78701970e-01 + 7.77126199e-01 7.75551968e-01 7.73979278e-01 7.72408129e-01 7.70838521e-01 + 7.69270454e-01 7.67703930e-01 7.66138947e-01 7.64575508e-01 7.63013611e-01 + 7.61453258e-01 7.59894448e-01 7.58337182e-01 7.56781460e-01 7.55227283e-01 + 7.53674651e-01 7.52123565e-01 7.50574024e-01 7.49026029e-01 7.47479580e-01 + 7.45934678e-01 7.44391322e-01 7.42849514e-01 7.41309254e-01 7.39770542e-01 + 7.38233378e-01 7.36697762e-01 7.35163696e-01 7.33631179e-01 7.32100211e-01 + 7.30570794e-01 7.29042926e-01 7.27516610e-01 7.25991844e-01 7.24468629e-01 + 7.22946966e-01 7.21426855e-01 7.19908297e-01 7.18391291e-01 7.16875837e-01 + 7.15361937e-01 7.13849591e-01 7.12338798e-01 7.10829560e-01 7.09321876e-01 + 7.07815747e-01 7.06311174e-01 7.04808155e-01 7.03306693e-01 7.01806787e-01 + 7.00308437e-01 6.98811644e-01 6.97316408e-01 6.95822730e-01 6.94330610e-01 + 6.92840047e-01 6.91351043e-01 6.89863598e-01 6.88377712e-01 6.86893385e-01 + 6.85410618e-01 6.83929411e-01 6.82449765e-01 6.80971679e-01 6.79495154e-01 + 6.78020190e-01 6.76546789e-01 6.75074949e-01 6.73604671e-01 6.72135956e-01 + 6.70668804e-01 6.69203215e-01 6.67739189e-01 6.66276728e-01 6.64815830e-01 + 6.63356498e-01 6.61898730e-01 6.60442527e-01 6.58987889e-01 6.57534818e-01 + 6.56083312e-01 6.54633373e-01 6.53185001e-01 6.51738195e-01 6.50292957e-01 + 6.48849287e-01 6.47407184e-01 6.45966650e-01 6.44527685e-01 6.43090288e-01 + 6.41654460e-01 6.40220202e-01 6.38787514e-01 6.37356396e-01 6.35926849e-01 + 6.34498872e-01 6.33072467e-01 6.31647633e-01 6.30224370e-01 6.28802680e-01 + 6.27382561e-01 6.25964016e-01 6.24547043e-01 6.23131644e-01 6.21717818e-01 + 6.20305566e-01 6.18894889e-01 6.17485785e-01 6.16078257e-01 6.14672303e-01 + 6.13267925e-01 6.11865123e-01 6.10463897e-01 6.09064247e-01 6.07666173e-01 + 6.06269677e-01 6.04874758e-01 6.03481416e-01 6.02089652e-01 6.00699467e-01 + 5.99310859e-01 5.97923831e-01 5.96538381e-01 5.95154511e-01 5.93772221e-01 + 5.92391510e-01 5.91012380e-01 5.89634830e-01 5.88258861e-01 5.86884473e-01 + 5.85511667e-01 5.84140442e-01 5.82770800e-01 5.81402740e-01 5.80036262e-01 + 5.78671367e-01 5.77308056e-01 5.75946328e-01 5.74586184e-01 5.73227624e-01 + 5.71870649e-01 5.70515258e-01 5.69161453e-01 5.67809232e-01 5.66458597e-01 + 5.65109548e-01 5.63762086e-01 5.62416210e-01 5.61071920e-01 5.59729218e-01 + 5.58388103e-01 5.57048576e-01 5.55710636e-01 5.54374285e-01 5.53039523e-01 + 5.51706349e-01 5.50374764e-01 5.49044769e-01 5.47716364e-01 5.46389548e-01 + 5.45064323e-01 5.43740689e-01 5.42418645e-01 5.41098192e-01 5.39779331e-01 + 5.38462062e-01 5.37146385e-01 5.35832299e-01 5.34519807e-01 5.33208907e-01 + 5.31899601e-01 5.30591888e-01 5.29285769e-01 5.27981244e-01 5.26678313e-01 + 5.25376977e-01 5.24077235e-01 5.22779089e-01 5.21482538e-01 5.20187583e-01 + 5.18894224e-01 5.17602461e-01 5.16312295e-01 5.15023726e-01 5.13736754e-01 + 5.12451379e-01 5.11167602e-01 5.09885423e-01 5.08604843e-01 5.07325861e-01 + 5.06048477e-01 5.04772693e-01 5.03498508e-01 5.02225923e-01 5.00954938e-01 + 4.99685553e-01 4.98417769e-01 4.97151585e-01 4.95887003e-01 4.94624021e-01 + 4.93362642e-01 4.92102864e-01 4.90844689e-01 4.89588116e-01 4.88333145e-01 + 4.87079778e-01 4.85828014e-01 4.84577853e-01 4.83329297e-01 4.82082344e-01 + 4.80836996e-01 4.79593252e-01 4.78351114e-01 4.77110580e-01 4.75871652e-01 + 4.74634330e-01 4.73398614e-01 4.72164504e-01 4.70932001e-01 4.69701104e-01 + 4.68471815e-01 4.67244132e-01 4.66018058e-01 4.64793591e-01 4.63570733e-01 + 4.62349483e-01 4.61129842e-01 4.59911810e-01 4.58695387e-01 4.57480573e-01 + 4.56267369e-01 4.55055776e-01 4.53845792e-01 4.52637419e-01 4.51430658e-01 + 4.50225507e-01 4.49021967e-01 4.47820039e-01 4.46619724e-01 4.45421020e-01 + 4.44223928e-01 4.43028450e-01 4.41834584e-01 4.40642332e-01 4.39451693e-01 + 4.38262668e-01 4.37075256e-01 4.35889459e-01 4.34705277e-01 4.33522709e-01 + 4.32341757e-01 4.31162420e-01 4.29984698e-01 4.28808592e-01 4.27634102e-01 + 4.26461229e-01 4.25289972e-01 4.24120332e-01 4.22952310e-01 4.21785904e-01 + 4.20621116e-01 4.19457946e-01 4.18296395e-01 4.17136461e-01 4.15978147e-01 + 4.14821451e-01 4.13666374e-01 4.12512917e-01 4.11361080e-01 4.10210862e-01 + 4.09062265e-01 4.07915288e-01 4.06769932e-01 4.05626197e-01 4.04484083e-01 + 4.03343590e-01 4.02204719e-01 4.01067470e-01 3.99931844e-01 3.98797839e-01 + 3.97665458e-01 3.96534699e-01 3.95405564e-01 3.94278052e-01 3.93152164e-01 + 3.92027900e-01 3.90905259e-01 3.89784244e-01 3.88664853e-01 3.87547087e-01 + 3.86430946e-01 3.85316431e-01 3.84203541e-01 3.83092278e-01 3.81982640e-01 + 3.80874629e-01 3.79768245e-01 3.78663487e-01 3.77560357e-01 3.76458854e-01 + 3.75358979e-01 3.74260731e-01 3.73164112e-01 3.72069121e-01 3.70975759e-01 + 3.69884025e-01 3.68793921e-01 3.67705446e-01 3.66618601e-01 3.65533385e-01 + 3.64449799e-01 3.63367844e-01 3.62287520e-01 3.61208826e-01 3.60131763e-01 + 3.59056331e-01 3.57982531e-01 3.56910363e-01 3.55839826e-01 3.54770922e-01 + 3.53703650e-01 3.52638011e-01 3.51574005e-01 3.50511632e-01 3.49450892e-01 + 3.48391786e-01 3.47334314e-01 3.46278476e-01 3.45224272e-01 3.44171703e-01 + 3.43120769e-01 3.42071469e-01 3.41023805e-01 3.39977776e-01 3.38933384e-01 + 3.37890627e-01 3.36849506e-01 3.35810021e-01 3.34772174e-01 3.33735963e-01 + 3.32701389e-01 3.31668453e-01 3.30637154e-01 3.29607493e-01 3.28579470e-01 + 3.27553085e-01 3.26528339e-01 3.25505231e-01 3.24483762e-01 3.23463933e-01 + 3.22445743e-01 3.21429192e-01 3.20414282e-01 3.19401011e-01 3.18389381e-01 + 3.17379391e-01 3.16371042e-01 3.15364334e-01 3.14359267e-01 3.13355841e-01 + 3.12354057e-01 3.11353915e-01 3.10355415e-01 3.09358557e-01 3.08363342e-01 + 3.07369770e-01 3.06377840e-01 3.05387554e-01 3.04398911e-01 3.03411912e-01 + 3.02426556e-01 3.01442845e-01 3.00460777e-01 2.99480355e-01 2.98501577e-01 + 2.97524444e-01 2.96548956e-01 2.95575113e-01 2.94602916e-01 2.93632365e-01 + 2.92663460e-01 2.91696201e-01 2.90730589e-01 2.89766623e-01 2.88804304e-01 + 2.87843632e-01 2.86884607e-01 2.85927230e-01 2.84971501e-01 2.84017420e-01 + 2.83064986e-01 2.82114201e-01 2.81165065e-01 2.80217578e-01 2.79271739e-01 + 2.78327550e-01 2.77385010e-01 2.76444119e-01 2.75504879e-01 2.74567288e-01 + 2.73631348e-01 2.72697059e-01 2.71764419e-01 2.70833431e-01 2.69904094e-01 + 2.68976408e-01 2.68050374e-01 2.67125991e-01 2.66203261e-01 2.65282182e-01 + 2.64362756e-01 2.63444982e-01 2.62528861e-01 2.61614393e-01 2.60701578e-01 + 2.59790416e-01 2.58880908e-01 2.57973054e-01 2.57066853e-01 2.56162307e-01 + 2.55259415e-01 2.54358178e-01 2.53458595e-01 2.52560668e-01 2.51664395e-01 + 2.50769778e-01 2.49876816e-01 2.48985511e-01 2.48095861e-01 2.47207867e-01 + 2.46321530e-01 2.45436849e-01 2.44553825e-01 2.43672457e-01 2.42792747e-01 + 2.41914695e-01 2.41038300e-01 2.40163562e-01 2.39290483e-01 2.38419061e-01 + 2.37549298e-01 2.36681193e-01 2.35814748e-01 2.34949961e-01 2.34086833e-01 + 2.33225364e-01 2.32365555e-01 2.31507405e-01 2.30650916e-01 2.29796086e-01 + 2.28942916e-01 2.28091407e-01 2.27241559e-01 2.26393372e-01 2.25546845e-01 + 2.24701980e-01 2.23858776e-01 2.23017233e-01 2.22177352e-01 2.21339134e-01 + 2.20502577e-01 2.19667682e-01 2.18834451e-01 2.18002881e-01 2.17172975e-01 + 2.16344732e-01 2.15518152e-01 2.14693235e-01 2.13869982e-01 2.13048393e-01 + 2.12228468e-01 2.11410207e-01 2.10593610e-01 2.09778678e-01 2.08965410e-01 + 2.08153807e-01 2.07343870e-01 2.06535598e-01 2.05728991e-01 2.04924049e-01 + 2.04120774e-01 2.03319164e-01 2.02519221e-01 2.01720944e-01 2.00924334e-01 + 2.00129390e-01 1.99336113e-01 1.98544503e-01 1.97754560e-01 1.96966285e-01 + 1.96179677e-01 1.95394737e-01 1.94611465e-01 1.93829861e-01 1.93049925e-01 + 1.92271658e-01 1.91495059e-01 1.90720129e-01 1.89946869e-01 1.89175277e-01 + 1.88405354e-01 1.87637101e-01 1.86870518e-01 1.86105605e-01 1.85342361e-01 + 1.84580788e-01 1.83820885e-01 1.83062653e-01 1.82306091e-01 1.81551200e-01 + 1.80797980e-01 1.80046431e-01 1.79296554e-01 1.78548348e-01 1.77801814e-01 + 1.77056952e-01 1.76313762e-01 1.75572244e-01 1.74832398e-01 1.74094225e-01 + 1.73357725e-01 1.72622897e-01 1.71889743e-01 1.71158261e-01 1.70428453e-01 + 1.69700319e-01 1.68973858e-01 1.68249071e-01 1.67525958e-01 1.66804519e-01 + 1.66084755e-01 1.65366665e-01 1.64650249e-01 1.63935509e-01 1.63222443e-01 + 1.62511053e-01 1.61801338e-01 1.61093298e-01 1.60386934e-01 1.59682246e-01 + 1.58979233e-01 1.58277897e-01 1.57578237e-01 1.56880253e-01 1.56183946e-01 + 1.55489316e-01 1.54796362e-01 1.54105086e-01 1.53415486e-01 1.52727564e-01 + 1.52041320e-01 1.51356753e-01 1.50673864e-01 1.49992653e-01 1.49313120e-01 + 1.48635265e-01 1.47959088e-01 1.47284591e-01 1.46611771e-01 1.45940631e-01 + 1.45271170e-01 1.44603388e-01 1.43937285e-01 1.43272862e-01 1.42610118e-01 + 1.41949054e-01 1.41289670e-01 1.40631966e-01 1.39975942e-01 1.39321598e-01 + 1.38668935e-01 1.38017953e-01 1.37368652e-01 1.36721031e-01 1.36075091e-01 + 1.35430833e-01 1.34788256e-01 1.34147361e-01 1.33508147e-01 1.32870615e-01 + 1.32234765e-01 1.31600597e-01 1.30968111e-01 1.30337308e-01 1.29708187e-01 + 1.29080749e-01 1.28454994e-01 1.27830921e-01 1.27208532e-01 1.26587826e-01 + 1.25968803e-01 1.25351464e-01 1.24735808e-01 1.24121836e-01 1.23509548e-01 + 1.22898944e-01 1.22290024e-01 1.21682789e-01 1.21077238e-01 1.20473372e-01 + 1.19871190e-01 1.19270693e-01 1.18671881e-01 1.18074755e-01 1.17479313e-01 + 1.16885558e-01 1.16293487e-01 1.15703102e-01 1.15114403e-01 1.14527390e-01 + 1.13942064e-01 1.13358423e-01 1.12776468e-01 1.12196200e-01 1.11617619e-01 + 1.11040725e-01 1.10465517e-01 1.09891996e-01 1.09320162e-01 1.08750016e-01 + 1.08181557e-01 1.07614785e-01 1.07049701e-01 1.06486305e-01 1.05924597e-01 + 1.05364577e-01 1.04806244e-01 1.04249601e-01 1.03694645e-01 1.03141378e-01 + 1.02589800e-01 1.02039910e-01 1.01491709e-01 1.00945198e-01 1.00400375e-01 + 9.98572416e-02 9.93157976e-02 9.87760431e-02 9.82379782e-02 9.77016030e-02 + 9.71669178e-02 9.66339224e-02 9.61026172e-02 9.55730022e-02 9.50450776e-02 + 9.45188434e-02 9.39942997e-02 9.34714468e-02 9.29502847e-02 9.24308135e-02 + 9.19130333e-02 9.13969443e-02 9.08825466e-02 9.03698403e-02 8.98588255e-02 + 8.93495023e-02 8.88418708e-02 8.83359312e-02 8.78316836e-02 8.73291281e-02 + 8.68282647e-02 8.63290937e-02 8.58316150e-02 8.53358290e-02 8.48417355e-02 + 8.43493348e-02 8.38586270e-02 8.33696121e-02 8.28822904e-02 8.23966618e-02 + 8.19127265e-02 8.14304847e-02 8.09499364e-02 8.04710817e-02 7.99939207e-02 + 7.95184537e-02 7.90446805e-02 7.85726014e-02 7.81022165e-02 7.76335259e-02 + 7.71665296e-02 7.67012279e-02 7.62376207e-02 7.57757082e-02 7.53154905e-02 + 7.48569677e-02 7.44001400e-02 7.39450073e-02 7.34915699e-02 7.30398277e-02 + 7.25897810e-02 7.21414298e-02 7.16947743e-02 7.12498144e-02 7.08065504e-02 + 7.03649822e-02 6.99251102e-02 6.94869342e-02 6.90504544e-02 6.86156710e-02 + 6.81825840e-02 6.77511935e-02 6.73214996e-02 6.68935024e-02 6.64672020e-02 + 6.60425985e-02 6.56196920e-02 6.51984826e-02 6.47789704e-02 6.43611555e-02 + 6.39450379e-02 6.35306178e-02 6.31178953e-02 6.27068704e-02 6.22975433e-02 + 6.18899141e-02 6.14839827e-02 6.10797494e-02 6.06772142e-02 6.02763772e-02 + 5.98772385e-02 5.94797982e-02 5.90840564e-02 5.86900131e-02 5.82976685e-02 + 5.79070227e-02 5.75180757e-02 5.71308276e-02 5.67452785e-02 5.63614285e-02 + 5.59792777e-02 5.55988261e-02 5.52200739e-02 5.48430212e-02 5.44676679e-02 + 5.40940143e-02 5.37220604e-02 5.33518062e-02 5.29832520e-02 5.26163976e-02 + 5.22512433e-02 5.18877891e-02 5.15260351e-02 5.11659814e-02 5.08076280e-02 + 5.04509751e-02 5.00960227e-02 4.97427708e-02 4.93912197e-02 4.90413693e-02 + 4.86932198e-02 4.83467711e-02 4.80020235e-02 4.76589769e-02 4.73176315e-02 + 4.69779873e-02 4.66400444e-02 4.63038029e-02 4.59692628e-02 4.56364243e-02 + 4.53052874e-02 4.49758521e-02 4.46481186e-02 4.43220870e-02 4.39977572e-02 + 4.36751294e-02 4.33542037e-02 4.30349801e-02 4.27174587e-02 4.24016395e-02 + 4.20875227e-02 4.17751083e-02 4.14643964e-02 4.11553870e-02 4.08480802e-02 + 4.05424762e-02 4.02385749e-02 3.99363764e-02 3.96358808e-02 3.93370881e-02 + 3.90399985e-02 3.87446120e-02 3.84509287e-02 3.81589486e-02 3.78686718e-02 + 3.75800983e-02 3.72932283e-02 3.70080618e-02 3.67245988e-02 3.64428394e-02 + 3.61627838e-02 3.58844318e-02 3.56077837e-02 3.53328395e-02 3.50595992e-02 + 3.47880629e-02 3.45182306e-02 3.42501025e-02 3.39836786e-02 3.37189589e-02 + 3.34559435e-02 3.31946324e-02 3.29350258e-02 3.26771236e-02 3.24209260e-02 + 3.21664330e-02 3.19136446e-02 3.16625610e-02 3.14131821e-02 3.11655080e-02 + 3.09195388e-02 3.06752746e-02 3.04327153e-02 3.01918611e-02 2.99527120e-02 + 2.97152680e-02 2.94795292e-02 2.92454957e-02 2.90131675e-02 2.87825447e-02 + 2.85536273e-02 2.83264153e-02 2.81009089e-02 2.78771081e-02 2.76550128e-02 + 2.74346233e-02 2.72159395e-02 2.69989614e-02 2.67836892e-02 2.65701228e-02 + 2.63582623e-02 2.61481079e-02 2.59396594e-02 2.57329170e-02 2.55278807e-02 + 2.53245505e-02 2.51229266e-02 2.49230089e-02 2.47247975e-02 2.45282924e-02 + 2.43334937e-02 2.41404014e-02 2.39490156e-02 2.37593363e-02 2.35713636e-02 + 2.33850975e-02 2.32005380e-02 2.30176851e-02 2.28365390e-02 2.26570997e-02 + 2.24793672e-02 2.23033415e-02 2.21290227e-02 2.19564108e-02 2.17855059e-02 + 2.16163080e-02 2.14488171e-02 2.12830333e-02 2.11189566e-02 2.09565871e-02 + 2.07959248e-02 2.06369696e-02 2.04797218e-02 2.03241812e-02 2.01703480e-02 + 2.00182221e-02 1.98678037e-02 1.97190927e-02 1.95720891e-02 1.94267931e-02 + 1.92832045e-02 1.91413236e-02 1.90011502e-02 1.88626845e-02 1.87259265e-02 + 1.85908761e-02 1.84575335e-02 1.83258986e-02 1.81959715e-02 1.80677522e-02 + 1.79412408e-02 1.78164372e-02 1.76933415e-02 1.75719538e-02 1.74522740e-02 + 1.73343022e-02 1.72180384e-02 1.71034827e-02 1.69906350e-02 1.68794954e-02 + 1.67700639e-02 1.66623405e-02 1.65563253e-02 1.64520183e-02 1.63494195e-02 + 1.62485289e-02 1.61493466e-02 1.60518726e-02 1.59561068e-02 1.58620494e-02 + 1.57697003e-02 1.56790596e-02 1.55901273e-02 1.55029034e-02 1.54173879e-02 + 1.53335808e-02 1.52514822e-02 1.51710921e-02 1.50924105e-02 1.50154374e-02 + 1.49401728e-02 1.48666168e-02 1.47947694e-02 1.47246305e-02 1.46562002e-02 + 1.45894786e-02 1.45244656e-02 1.44611612e-02 1.43995655e-02 1.43396785e-02 + 1.42815001e-02 1.42250305e-02 1.41702695e-02 1.41172173e-02 1.40658738e-02 + 1.40162391e-02 1.39683132e-02 1.39220960e-02 1.38775876e-02 1.38347880e-02 + 1.37936971e-02 1.37543151e-02 1.37166420e-02 1.36806776e-02 1.36464221e-02 + 1.36138754e-02 1.35830376e-02 1.35539086e-02 1.35264885e-02 1.35007773e-02 + 1.34767750e-02 1.34544815e-02 1.34338969e-02 1.34150212e-02 1.33978544e-02 + 1.33823966e-02 1.33686476e-02 1.33566075e-02 1.33462763e-02 1.33376541e-02 + 1.33307407e-02 1.33255363e-02 1.33220408e-02 1.33202542e-02 1.33201765e-02 + 1.33218078e-02 1.33251480e-02 1.33301970e-02 1.33369550e-02 1.33454220e-02 + 1.33555978e-02 1.33674825e-02 1.33810762e-02 1.33963787e-02 1.34133902e-02 + 1.34321105e-02 1.34525397e-02 1.34746779e-02 1.34985249e-02 1.35240808e-02 + 1.35513455e-02 1.35803192e-02 1.36110016e-02 1.36433930e-02 1.36774932e-02 + 1.37133022e-02 1.37508200e-02 1.37900467e-02 1.38309822e-02 1.38736265e-02 + 1.39179796e-02 1.39640414e-02 1.40118121e-02 1.40612914e-02 1.41124796e-02 + 1.41653765e-02 1.42199821e-02 1.42762964e-02 1.43343194e-02 1.43940512e-02 + 1.44554916e-02 1.45186406e-02 1.45834983e-02 1.46500646e-02 1.47183396e-02 + 1.47883231e-02 1.48600153e-02 1.49334160e-02 1.50085252e-02 1.50853430e-02 + 1.51638693e-02 1.52441041e-02 1.53260474e-02 1.54096992e-02 1.54950594e-02 + 1.55821280e-02 1.56709051e-02 1.57613905e-02 1.58535843e-02 1.59474864e-02 + 1.60430969e-02 1.61404156e-02 1.62394427e-02 1.63401780e-02 1.64426215e-02 + 1.65467732e-02 1.66526331e-02 1.67602012e-02 1.68694775e-02 1.69804618e-02 + 1.70931542e-02 1.72075547e-02 1.73236633e-02 1.74414798e-02 1.75610043e-02 + 1.76822368e-02 1.78051772e-02 1.79298256e-02 1.80561818e-02 1.81842458e-02 + 1.83140177e-02 1.84454973e-02 1.85786847e-02 1.87135798e-02 1.88501827e-02 + 1.89884931e-02 1.91285113e-02 1.92702370e-02 1.94136703e-02 1.95588111e-02 + 1.97056595e-02 1.98542153e-02 2.00044786e-02 2.01564492e-02 2.03101272e-02 + 2.04655126e-02 2.06226053e-02 2.07814052e-02 2.09419123e-02 2.11041267e-02 + 2.12680482e-02 2.14336768e-02 2.16010125e-02 2.17700553e-02 2.19408050e-02 + 2.21132617e-02 2.22874254e-02 2.24632959e-02 2.26408733e-02 2.28201575e-02 + 2.30011484e-02 2.31838461e-02 2.33682505e-02 2.35543615e-02 2.37421791e-02 + 2.39317033e-02 2.41229339e-02 2.43158711e-02 2.45105147e-02 2.47068647e-02 + 2.49049210e-02 2.51046836e-02 2.53061524e-02 2.55093275e-02 2.57142087e-02 + 2.59207960e-02 2.61290894e-02 2.63390888e-02 2.65507942e-02 2.67642055e-02 + 2.69793227e-02 2.71961457e-02 2.74146744e-02 2.76349090e-02 2.78568491e-02 + 2.80804949e-02 2.83058463e-02 2.85329032e-02 2.87616656e-02 2.89921334e-02 + 2.92243066e-02 2.94581851e-02 2.96937689e-02 2.99310578e-02 3.01700520e-02 + 3.04107512e-02 3.06531555e-02 3.08972648e-02 3.11430790e-02 3.13905981e-02 + 3.16398220e-02 3.18907507e-02 3.21433841e-02 3.23977222e-02 3.26537648e-02 + 3.29115120e-02 3.31709637e-02 3.34321199e-02 3.36949803e-02 3.39595451e-02 + 3.42258142e-02 3.44937874e-02 3.47634647e-02 3.50348461e-02 3.53079315e-02 + 3.55827209e-02 3.58592141e-02 3.61374112e-02 3.64173120e-02 3.66989165e-02 + 3.69822246e-02 3.72672363e-02 3.75539515e-02 3.78423701e-02 3.81324920e-02 + 3.84243173e-02 3.87178458e-02 3.90130775e-02 3.93100123e-02 3.96086502e-02 + 3.99089910e-02 4.02110347e-02 4.05147812e-02 4.08202305e-02 4.11273825e-02 + 4.14362371e-02 4.17467942e-02 4.20590539e-02 4.23730160e-02 4.26886804e-02 + 4.30060471e-02 4.33251159e-02 4.36458870e-02 4.39683600e-02 4.42925351e-02 + 4.46184120e-02 4.49459908e-02 4.52752714e-02 4.56062536e-02 4.59389375e-02 + 4.62733229e-02 4.66094097e-02 4.69471980e-02 4.72866875e-02 4.76278783e-02 + 4.79707703e-02 4.83153633e-02 4.86616573e-02 4.90096522e-02 4.93593480e-02 + 4.97107446e-02 5.00638418e-02 5.04186396e-02 5.07751380e-02 5.11333368e-02 + 5.14932360e-02 5.18548354e-02 5.22181351e-02 5.25831349e-02 5.29498347e-02 + 5.33182344e-02 5.36883341e-02 5.40601335e-02 5.44336326e-02 5.48088313e-02 + 5.51857296e-02 5.55643273e-02 5.59446244e-02 5.63266207e-02 5.67103163e-02 + 5.70957109e-02 5.74828046e-02 5.78715972e-02 5.82620886e-02 5.86542788e-02 + 5.90481677e-02 5.94437551e-02 5.98410410e-02 6.02400253e-02 6.06407080e-02 + 6.10430888e-02 6.14471678e-02 6.18529447e-02 6.22604197e-02 6.26695925e-02 + 6.30804630e-02 6.34930312e-02 6.39072970e-02 6.43232602e-02 6.47409209e-02 + 6.51602788e-02 6.55813340e-02 6.60040862e-02 6.64285354e-02 6.68546816e-02 + 6.72825245e-02 6.77120642e-02 6.81433005e-02 6.85762333e-02 6.90108625e-02 + 6.94471881e-02 6.98852099e-02 7.03249278e-02 7.07663417e-02 7.12094516e-02 + 7.16542573e-02 7.21007588e-02 7.25489558e-02 7.29988484e-02 7.34504365e-02 + 7.39037198e-02 7.43586984e-02 7.48153721e-02 7.52737408e-02 7.57338044e-02 + 7.61955628e-02 7.66590160e-02 7.71241637e-02 7.75910059e-02 7.80595425e-02 + 7.85297734e-02 7.90016985e-02 7.94753177e-02 7.99506308e-02 8.04276378e-02 + 8.09063385e-02 8.13867329e-02 8.18688208e-02 8.23526021e-02 8.28380768e-02 + 8.33252446e-02 8.38141056e-02 8.43046595e-02 8.47969063e-02 8.52908459e-02 + 8.57864782e-02 8.62838029e-02 8.67828201e-02 8.72835297e-02 8.77859314e-02 + 8.82900252e-02 8.87958110e-02 8.93032887e-02 8.98124581e-02 9.03233191e-02 + 9.08358717e-02 9.13501157e-02 9.18660509e-02 9.23836774e-02 9.29029949e-02 + 9.34240033e-02 9.39467025e-02 9.44710925e-02 9.49971730e-02 9.55249440e-02 + 9.60544054e-02 9.65855570e-02 9.71183987e-02 9.76529303e-02 9.81891519e-02 + 9.87270632e-02 9.92666641e-02 9.98079545e-02 1.00350934e-01 1.00895603e-01 + 1.01441962e-01 1.01990009e-01 1.02539745e-01 1.03091170e-01 1.03644283e-01 + 1.04199085e-01 1.04755576e-01 1.05313754e-01 1.05873621e-01 1.06435176e-01 + 1.06998419e-01 1.07563349e-01 1.08129968e-01 1.08698273e-01 1.09268266e-01 + 1.09839947e-01 1.10413314e-01 1.10988368e-01 1.11565110e-01 1.12143538e-01 + 1.12723652e-01 1.13305453e-01 1.13888941e-01 1.14474115e-01 1.15060974e-01 + 1.15649520e-01 1.16239751e-01 1.16831669e-01 1.17425271e-01 1.18020560e-01 + 1.18617533e-01 1.19216192e-01 1.19816535e-01 1.20418564e-01 1.21022277e-01 + 1.21627675e-01 1.22234757e-01 1.22843524e-01 1.23453975e-01 1.24066109e-01 + 1.24679928e-01 1.25295431e-01 1.25912617e-01 1.26531487e-01 1.27152040e-01 + 1.27774276e-01 1.28398196e-01 1.29023798e-01 1.29651083e-01 1.30280051e-01 + 1.30910702e-01 1.31543034e-01 1.32177050e-01 1.32812747e-01 1.33450126e-01 + 1.34089187e-01 1.34729929e-01 1.35372353e-01 1.36016459e-01 1.36662246e-01 + 1.37309713e-01 1.37958862e-01 1.38609692e-01 1.39262202e-01 1.39916393e-01 + 1.40572264e-01 1.41229815e-01 1.41889046e-01 1.42549958e-01 1.43212549e-01 + 1.43876819e-01 1.44542770e-01 1.45210399e-01 1.45879708e-01 1.46550695e-01 + 1.47223362e-01 1.47897707e-01 1.48573731e-01 1.49251433e-01 1.49930814e-01 + 1.50611872e-01 1.51294609e-01 1.51979023e-01 1.52665115e-01 1.53352885e-01 + 1.54042332e-01 1.54733456e-01 1.55426257e-01 1.56120735e-01 1.56816890e-01 + 1.57514721e-01 1.58214229e-01 1.58915413e-01 1.59618273e-01 1.60322809e-01 + 1.61029020e-01 1.61736908e-01 1.62446471e-01 1.63157709e-01 1.63870622e-01 + 1.64585210e-01 1.65301473e-01 1.66019411e-01 1.66739023e-01 1.67460310e-01 + 1.68183271e-01 1.68907906e-01 1.69634214e-01 1.70362197e-01 1.71091853e-01 + 1.71823182e-01 1.72556184e-01 1.73290860e-01 1.74027208e-01 1.74765229e-01 + 1.75504923e-01 1.76246289e-01 1.76989327e-01 1.77734037e-01 1.78480419e-01 + 1.79228473e-01 1.79978199e-01 1.80729595e-01 1.81482663e-01 1.82237402e-01 + 1.82993812e-01 1.83751893e-01 1.84511644e-01 1.85273065e-01 1.86036157e-01 + 1.86800919e-01 1.87567350e-01 1.88335451e-01 1.89105222e-01 1.89876662e-01 + 1.90649771e-01 1.91424549e-01 1.92200996e-01 1.92979112e-01 1.93758896e-01 + 1.94540348e-01 1.95323469e-01 1.96108257e-01 1.96894713e-01 1.97682837e-01 + 1.98472628e-01 1.99264087e-01 2.00057212e-01 2.00852004e-01 2.01648463e-01 + 2.02446589e-01 2.03246381e-01 2.04047839e-01 2.04850963e-01 2.05655753e-01 + 2.06462208e-01 2.07270329e-01 2.08080115e-01 2.08891567e-01 2.09704683e-01 + 2.10519464e-01 2.11335909e-01 2.12154019e-01 2.12973793e-01 2.13795231e-01 + 2.14618333e-01 2.15443098e-01 2.16269527e-01 2.17097619e-01 2.17927374e-01 + 2.18758792e-01 2.19591873e-01 2.20426616e-01 2.21263022e-01 2.22101090e-01 + 2.22940819e-01 2.23782211e-01 2.24625264e-01 2.25469978e-01 2.26316354e-01 + 2.27164390e-01 2.28014088e-01 2.28865446e-01 2.29718464e-01 2.30573143e-01 + 2.31429482e-01 2.32287480e-01 2.33147139e-01 2.34008457e-01 2.34871434e-01 + 2.35736070e-01 2.36602365e-01 2.37470319e-01 2.38339931e-01 2.39211202e-01 + 2.40084131e-01 2.40958717e-01 2.41834962e-01 2.42712864e-01 2.43592423e-01 + 2.44473640e-01 2.45356513e-01 2.46241044e-01 2.47127230e-01 2.48015074e-01 + 2.48904573e-01 2.49795728e-01 2.50688539e-01 2.51583006e-01 2.52479128e-01 + 2.53376905e-01 2.54276337e-01 2.55177424e-01 2.56080166e-01 2.56984562e-01 + 2.57890612e-01 2.58798316e-01 2.59707674e-01 2.60618685e-01 2.61531350e-01 + 2.62445667e-01 2.63361638e-01 2.64279262e-01 2.65198538e-01 2.66119466e-01 + 2.67042047e-01 2.67966279e-01 2.68892164e-01 2.69819699e-01 2.70748886e-01 + 2.71679724e-01 2.72612213e-01 2.73546353e-01 2.74482143e-01 2.75419584e-01 + 2.76358674e-01 2.77299415e-01 2.78241805e-01 2.79185844e-01 2.80131533e-01 + 2.81078870e-01 2.82027857e-01 2.82978492e-01 2.83930775e-01 2.84884707e-01 + 2.85840287e-01 2.86797514e-01 2.87756389e-01 2.88716911e-01 2.89679080e-01 + 2.90642896e-01 2.91608359e-01 2.92575468e-01 2.93544224e-01 2.94514625e-01 + 2.95486673e-01 2.96460366e-01 2.97435704e-01 2.98412687e-01 2.99391316e-01 + 3.00371589e-01 3.01353507e-01 3.02337069e-01 3.03322275e-01 3.04309125e-01 + 3.05297618e-01 3.06287755e-01 3.07279535e-01 3.08272958e-01 3.09268024e-01 + 3.10264733e-01 3.11263084e-01 3.12263076e-01 3.13264711e-01 3.14267987e-01 + 3.15272905e-01 3.16279464e-01 3.17287664e-01 3.18297505e-01 3.19308986e-01 + 3.20322108e-01 3.21336869e-01 3.22353271e-01 3.23371312e-01 3.24390992e-01 + 3.25412312e-01 3.26435271e-01 3.27459868e-01 3.28486104e-01 3.29513978e-01 + 3.30543490e-01 3.31574640e-01 3.32607428e-01 3.33641852e-01 3.34677914e-01 + 3.35715613e-01 3.36754949e-01 3.37795921e-01 3.38838529e-01 3.39882774e-01 + 3.40928653e-01 3.41976169e-01 3.43025320e-01 3.44076105e-01 3.45128526e-01 + 3.46182581e-01 3.47238271e-01 3.48295594e-01 3.49354552e-01 3.50415143e-01 + 3.51477368e-01 3.52541225e-01 3.53606716e-01 3.54673839e-01 3.55742595e-01 + 3.56812983e-01 3.57885003e-01 3.58958655e-01 3.60033939e-01 3.61110853e-01 + 3.62189399e-01 3.63269575e-01 3.64351382e-01 3.65434820e-01 3.66519887e-01 + 3.67606584e-01 3.68694911e-01 3.69784868e-01 3.70876453e-01 3.71969667e-01 + 3.73064510e-01 3.74160981e-01 3.75259081e-01 3.76358808e-01 3.77460163e-01 + 3.78563145e-01 3.79667755e-01 3.80773992e-01 3.81881855e-01 3.82991344e-01 + 3.84102460e-01 3.85215202e-01 3.86329570e-01 3.87445563e-01 3.88563181e-01 + 3.89682424e-01 3.90803292e-01 3.91925784e-01 3.93049901e-01 3.94175642e-01 + 3.95303006e-01 3.96431994e-01 3.97562605e-01 3.98694839e-01 3.99828696e-01 + 4.00964175e-01 4.02101276e-01 4.03240000e-01 4.04380345e-01 4.05522312e-01 + 4.06665899e-01 4.07811108e-01 4.08957938e-01 4.10106388e-01 4.11256458e-01 + 4.12408148e-01 4.13561458e-01 4.14716388e-01 4.15872936e-01 4.17031104e-01 + 4.18190890e-01 4.19352295e-01 4.20515317e-01 4.21679958e-01 4.22846216e-01 + 4.24014092e-01 4.25183585e-01 4.26354695e-01 4.27527421e-01 4.28701764e-01 + 4.29877723e-01 4.31055298e-01 4.32234488e-01 4.33415294e-01 4.34597715e-01 + 4.35781751e-01 4.36967401e-01 4.38154665e-01 4.39343544e-01 4.40534036e-01 + 4.41726142e-01 4.42919861e-01 4.44115193e-01 4.45312138e-01 4.46510695e-01 + 4.47710864e-01 4.48912645e-01 4.50116038e-01 4.51321043e-01 4.52527658e-01 + 4.53735885e-01 4.54945722e-01 4.56157169e-01 4.57370226e-01 4.58584894e-01 + 4.59801170e-01 4.61019056e-01 4.62238551e-01 4.63459655e-01 4.64682367e-01 + 4.65906688e-01 4.67132616e-01 4.68360152e-01 4.69589295e-01 4.70820046e-01 + 4.72052403e-01 4.73286367e-01 4.74521937e-01 4.75759113e-01 4.76997895e-01 + 4.78238283e-01 4.79480276e-01 4.80723873e-01 4.81969076e-01 4.83215882e-01 + 4.84464293e-01 4.85714308e-01 4.86965926e-01 4.88219148e-01 4.89473972e-01 + 4.90730400e-01 4.91988430e-01 4.93248062e-01 4.94509296e-01 4.95772131e-01 + 4.97036568e-01 4.98302606e-01 4.99570245e-01 5.00839485e-01 5.02110324e-01 + 5.03382764e-01 5.04656804e-01 5.05932442e-01 5.07209680e-01 5.08488517e-01 + 5.09768953e-01 5.11050986e-01 5.12334618e-01 5.13619847e-01 5.14906674e-01 + 5.16195098e-01 5.17485119e-01 5.18776737e-01 5.20069951e-01 5.21364761e-01 + 5.22661167e-01 5.23959168e-01 5.25258764e-01 5.26559955e-01 5.27862741e-01 + 5.29167122e-01 5.30473096e-01 5.31780664e-01 5.33089826e-01 5.34400580e-01 + 5.35712928e-01 5.37026868e-01 5.38342401e-01 5.39659526e-01 5.40978242e-01 + 5.42298550e-01 5.43620449e-01 5.44943939e-01 5.46269020e-01 5.47595691e-01 + 5.48923952e-01 5.50253802e-01 5.51585242e-01 5.52918272e-01 5.54252890e-01 + 5.55589096e-01 5.56926891e-01 5.58266274e-01 5.59607245e-01 5.60949803e-01 + 5.62293948e-01 5.63639680e-01 5.64986999e-01 5.66335903e-01 5.67686394e-01 + 5.69038470e-01 5.70392132e-01 5.71747378e-01 5.73104210e-01 5.74462626e-01 + 5.75822626e-01 5.77184210e-01 5.78547377e-01 5.79912128e-01 5.81278461e-01 + 5.82646378e-01 5.84015876e-01 5.85386957e-01 5.86759620e-01 5.88133864e-01 + 5.89509689e-01 5.90887095e-01 5.92266082e-01 5.93646649e-01 5.95028796e-01 + 5.96412522e-01 5.97797828e-01 5.99184713e-01 6.00573177e-01 6.01963219e-01 + 6.03354840e-01 6.04748038e-01 6.06142814e-01 6.07539167e-01 6.08937097e-01 + 6.10336603e-01 6.11737686e-01 6.13140346e-01 6.14544580e-01 6.15950391e-01 + 6.17357776e-01 6.18766736e-01 6.20177271e-01 6.21589379e-01 6.23003062e-01 + 6.24418319e-01 6.25835148e-01 6.27253551e-01 6.28673526e-01 6.30095073e-01 + 6.31518193e-01 6.32942884e-01 6.34369147e-01 6.35796981e-01 6.37226386e-01 + 6.38657361e-01 6.40089906e-01 6.41524022e-01 6.42959706e-01 6.44396960e-01 + 6.45835783e-01 6.47276175e-01 6.48718135e-01 6.50161663e-01 6.51606758e-01 + 6.53053421e-01 6.54501651e-01 6.55951448e-01 6.57402811e-01 6.58855740e-01 + 6.60310236e-01 6.61766296e-01 6.63223922e-01 6.64683112e-01 6.66143868e-01 + 6.67606187e-01 6.69070070e-01 6.70535517e-01 6.72002527e-01 6.73471100e-01 + 6.74941236e-01 6.76412934e-01 6.77886194e-01 6.79361015e-01 6.80837398e-01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.00000000e+00 9.75894263e-01 9.53451752e-01 9.32489601e-01 9.12851907e-01 + 8.94404826e-01 8.77032714e-01 8.60635068e-01 8.45124065e-01 8.30422576e-01 + 8.16462554e-01 8.03183696e-01 7.90532350e-01 7.78460602e-01 7.66925506e-01 + 7.55888443e-01 7.45314577e-01 7.35172390e-01 7.25433287e-01 7.16071258e-01 + 7.07062580e-01 6.98385572e-01 6.90020370e-01 6.81948734e-01 6.74153887e-01 + 6.66620364e-01 6.59333880e-01 6.52281224e-01 6.45450150e-01 6.38829295e-01 + 6.32408091e-01 6.26176704e-01 6.20125961e-01 6.14247300e-01 6.08532716e-01 + 6.02974715e-01 5.97566276e-01 5.92300808e-01 5.87172122e-01 5.82174396e-01 + 5.77302151e-01 5.72550221e-01 5.67913735e-01 5.63388093e-01 5.58968948e-01 + 5.54652188e-01 5.50433918e-01 5.46310451e-01 5.42278287e-01 5.38334105e-01 + 5.34474753e-01 5.30697232e-01 5.26998691e-01 5.23376415e-01 5.19827818e-01 + 5.16350438e-01 5.12941922e-01 5.09600027e-01 5.06322612e-01 5.03107629e-01 + 4.99953120e-01 4.96857213e-01 4.93818117e-01 4.90834114e-01 4.87903560e-01 + 4.85024878e-01 4.82196556e-01 4.79417141e-01 4.76685242e-01 4.73999519e-01 + 4.71358685e-01 4.68761505e-01 4.66206788e-01 4.63693390e-01 4.61220209e-01 + 4.58786184e-01 4.56390292e-01 4.54031548e-01 4.51709002e-01 4.49421737e-01 + 4.47168870e-01 4.44949545e-01 4.42762941e-01 4.40608259e-01 4.38484731e-01 + 4.36391613e-01 4.34328187e-01 4.32293756e-01 4.30287649e-01 4.28309213e-01 + 4.26357819e-01 4.24432857e-01 4.22533734e-01 4.20659877e-01 4.18810733e-01 + 4.16985761e-01 4.15184441e-01 4.13406264e-01 4.11650741e-01 4.09917394e-01 + 4.08205761e-01 4.06515390e-01 4.04845847e-01 4.03196706e-01 4.01567556e-01 + 3.99957996e-01 3.98367636e-01 3.96796098e-01 3.95243014e-01 3.93708024e-01 + 3.92190780e-01 3.90690944e-01 3.89208184e-01 3.87742180e-01 3.86292617e-01 + 3.84859191e-01 3.83441605e-01 3.82039569e-01 3.80652800e-01 3.79281024e-01 + 3.77923973e-01 3.76581385e-01 3.75253005e-01 3.73938583e-01 3.72637878e-01 + 3.71350652e-01 3.70076675e-01 3.68815719e-01 3.67567566e-01 3.66332000e-01 + 3.65108810e-01 3.63897792e-01 3.62698745e-01 3.61511473e-01 3.60335785e-01 + 3.59171493e-01 3.58018415e-01 3.56876371e-01 3.55745187e-01 3.54624691e-01 + 3.53514717e-01 3.52415101e-01 3.51325683e-01 3.50246306e-01 3.49176816e-01 + 3.48117064e-01 3.47066903e-01 3.46026189e-01 3.44994782e-01 3.43972542e-01 + 3.42959337e-01 3.41955032e-01 3.40959498e-01 3.39972609e-01 3.38994241e-01 + 3.38024270e-01 3.37062579e-01 3.36109049e-01 3.35163566e-01 3.34226018e-01 + 3.33296293e-01 3.32374284e-01 3.31459885e-01 3.30552992e-01 3.29653502e-01 + 3.28761315e-01 3.27876333e-01 3.26998460e-01 3.26127600e-01 3.25263662e-01 + 3.24406553e-01 3.23556184e-01 3.22712468e-01 3.21875318e-01 3.21044649e-01 + 3.20220378e-01 3.19402424e-01 3.18590706e-01 3.17785145e-01 3.16985665e-01 + 3.16192188e-01 3.15404639e-01 3.14622947e-01 3.13847038e-01 3.13076841e-01 + 3.12312287e-01 3.11553306e-01 3.10799833e-01 3.10051800e-01 3.09309142e-01 + 3.08571795e-01 3.07839697e-01 3.07112784e-01 3.06390997e-01 3.05674275e-01 + 3.04962560e-01 3.04255793e-01 3.03553917e-01 3.02856876e-01 3.02164615e-01 + 3.01477079e-01 3.00794216e-01 3.00115971e-01 2.99442294e-01 2.98773134e-01 + 2.98108439e-01 2.97448161e-01 2.96792252e-01 2.96140662e-01 2.95493345e-01 + 2.94850254e-01 2.94211344e-01 2.93576570e-01 2.92945886e-01 2.92319250e-01 + 2.91696618e-01 2.91077947e-01 2.90463197e-01 2.89852325e-01 2.89245291e-01 + 2.88642055e-01 2.88042577e-01 2.87446820e-01 2.86854743e-01 2.86266311e-01 + 2.85681484e-01 2.85100228e-01 2.84522505e-01 2.83948280e-01 2.83377517e-01 + 2.82810183e-01 2.82246243e-01 2.81685662e-01 2.81128409e-01 2.80574450e-01 + 2.80023753e-01 2.79476286e-01 2.78932017e-01 2.78390916e-01 2.77852951e-01 + 2.77318094e-01 2.76786313e-01 2.76257580e-01 2.75731865e-01 2.75209140e-01 + 2.74689377e-01 2.74172548e-01 2.73658625e-01 2.73147581e-01 2.72639389e-01 + 2.72134024e-01 2.71631458e-01 2.71131667e-01 2.70634624e-01 2.70140305e-01 + 2.69648684e-01 2.69159738e-01 2.68673442e-01 2.68189772e-01 2.67708706e-01 + 2.67230218e-01 2.66754287e-01 2.66280890e-01 2.65810005e-01 2.65341608e-01 + 2.64875680e-01 2.64412197e-01 2.63951138e-01 2.63492483e-01 2.63036211e-01 + 2.62582301e-01 2.62130732e-01 2.61681486e-01 2.61234541e-01 2.60789879e-01 + 2.60347479e-01 2.59907323e-01 2.59469393e-01 2.59033668e-01 2.58600131e-01 + 2.58168764e-01 2.57739549e-01 2.57312467e-01 2.56887501e-01 2.56464633e-01 + 2.56043847e-01 2.55625126e-01 2.55208452e-01 2.54793809e-01 2.54381180e-01 + 2.53970550e-01 2.53561902e-01 2.53155220e-01 2.52750489e-01 2.52347693e-01 + 2.51946816e-01 2.51547844e-01 2.51150761e-01 2.50755553e-01 2.50362204e-01 + 2.49970701e-01 2.49581029e-01 2.49193173e-01 2.48807120e-01 2.48422856e-01 + 2.48040367e-01 2.47659639e-01 2.47280658e-01 2.46903413e-01 2.46527888e-01 + 2.46154072e-01 2.45781951e-01 2.45411513e-01 2.45042745e-01 2.44675634e-01 + 2.44310168e-01 2.43946335e-01 2.43584122e-01 2.43223518e-01 2.42864511e-01 + 2.42507089e-01 2.42151241e-01 2.41796954e-01 2.41444218e-01 2.41093021e-01 + 2.40743352e-01 2.40395201e-01 2.40048555e-01 2.39703404e-01 2.39359739e-01 + 2.39017547e-01 2.38676818e-01 2.38337542e-01 2.37999710e-01 2.37663309e-01 + 2.37328332e-01 2.36994766e-01 2.36662603e-01 2.36331833e-01 2.36002446e-01 + 2.35674432e-01 2.35347783e-01 2.35022487e-01 2.34698537e-01 2.34375923e-01 + 2.34054635e-01 2.33734666e-01 2.33416004e-01 2.33098643e-01 2.32782573e-01 + 2.32467784e-01 2.32154270e-01 2.31842020e-01 2.31531028e-01 2.31221283e-01 + 2.30912778e-01 2.30605504e-01 2.30299454e-01 2.29994620e-01 2.29690992e-01 + 2.29388564e-01 2.29087328e-01 2.28787275e-01 2.28488398e-01 2.28190689e-01 + 2.27894141e-01 2.27598746e-01 2.27304497e-01 2.27011386e-01 2.26719406e-01 + 2.26428550e-01 2.26138810e-01 2.25850180e-01 2.25562652e-01 2.25276219e-01 + 2.24990875e-01 2.24706613e-01 2.24423425e-01 2.24141305e-01 2.23860246e-01 + 2.23580243e-01 2.23301287e-01 2.23023372e-01 2.22746493e-01 2.22470643e-01 + 2.22195814e-01 2.21922002e-01 2.21649200e-01 2.21377401e-01 2.21106599e-01 + 2.20836789e-01 2.20567964e-01 2.20300119e-01 2.20033247e-01 2.19767342e-01 + 2.19502400e-01 2.19238413e-01 2.18975376e-01 2.18713284e-01 2.18452130e-01 + 2.18191910e-01 2.17932618e-01 2.17674247e-01 2.17416794e-01 2.17160252e-01 + 2.16904616e-01 2.16649880e-01 2.16396040e-01 2.16143090e-01 2.15891025e-01 + 2.15639840e-01 2.15389530e-01 2.15140089e-01 2.14891513e-01 2.14643796e-01 + 2.14396935e-01 2.14150923e-01 2.13905756e-01 2.13661429e-01 2.13417937e-01 + 2.13175276e-01 2.12933441e-01 2.12692427e-01 2.12452229e-01 2.12212843e-01 + 2.11974265e-01 2.11736490e-01 2.11499513e-01 2.11263330e-01 2.11027936e-01 + 2.10793328e-01 2.10559500e-01 2.10326449e-01 2.10094169e-01 2.09862658e-01 + 2.09631910e-01 2.09401922e-01 2.09172689e-01 2.08944208e-01 2.08716473e-01 + 2.08489481e-01 2.08263229e-01 2.08037711e-01 2.07812924e-01 2.07588865e-01 + 2.07365528e-01 2.07142911e-01 2.06921010e-01 2.06699820e-01 2.06479337e-01 + 2.06259559e-01 2.06040481e-01 2.05822100e-01 2.05604412e-01 2.05387413e-01 + 2.05171099e-01 2.04955468e-01 2.04740515e-01 2.04526237e-01 2.04312630e-01 + 2.04099691e-01 2.03887417e-01 2.03675803e-01 2.03464847e-01 2.03254545e-01 + 2.03044894e-01 2.02835891e-01 2.02627531e-01 2.02419812e-01 2.02212731e-01 + 2.02006284e-01 2.01800468e-01 2.01595280e-01 2.01390716e-01 2.01186774e-01 + 2.00983451e-01 2.00780742e-01 2.00578646e-01 2.00377158e-01 2.00176277e-01 + 1.99975998e-01 1.99776320e-01 1.99577238e-01 1.99378751e-01 1.99180854e-01 + 1.98983546e-01 1.98786822e-01 1.98590681e-01 1.98395120e-01 1.98200135e-01 + 1.98005724e-01 1.97811884e-01 1.97618612e-01 1.97425905e-01 1.97233761e-01 + 1.97042177e-01 1.96851151e-01 1.96660678e-01 1.96470758e-01 1.96281387e-01 + 1.96092562e-01 1.95904281e-01 1.95716541e-01 1.95529341e-01 1.95342676e-01 + 1.95156545e-01 1.94970945e-01 1.94785873e-01 1.94601328e-01 1.94417306e-01 + 1.94233805e-01 1.94050823e-01 1.93868357e-01 1.93686404e-01 1.93504963e-01 + 1.93324031e-01 1.93143606e-01 1.92963685e-01 1.92784265e-01 1.92605345e-01 + 1.92426923e-01 1.92248995e-01 1.92071560e-01 1.91894616e-01 1.91718159e-01 + 1.91542189e-01 1.91366702e-01 1.91191696e-01 1.91017170e-01 1.90843121e-01 + 1.90669546e-01 1.90496445e-01 1.90323814e-01 1.90151652e-01 1.89979956e-01 + 1.89808724e-01 1.89637954e-01 1.89467644e-01 1.89297793e-01 1.89128397e-01 + 1.88959456e-01 1.88790966e-01 1.88622926e-01 1.88455335e-01 1.88288189e-01 + 1.88121487e-01 1.87955227e-01 1.87789407e-01 1.87624025e-01 1.87459079e-01 + 1.87294568e-01 1.87130489e-01 1.86966840e-01 1.86803620e-01 1.86640827e-01 + 1.86478458e-01 1.86316513e-01 1.86154989e-01 1.85993884e-01 1.85833197e-01 + 1.85672925e-01 1.85513068e-01 1.85353622e-01 1.85194587e-01 1.85035961e-01 + 1.84877742e-01 1.84719927e-01 1.84562517e-01 1.84405508e-01 1.84248899e-01 + 1.84092688e-01 1.83936874e-01 1.83781455e-01 1.83626429e-01 1.83471795e-01 + 1.83317551e-01 1.83163695e-01 1.83010226e-01 1.82857142e-01 1.82704442e-01 + 1.82552123e-01 1.82400185e-01 1.82248626e-01 1.82097444e-01 1.81946637e-01 + 1.81796204e-01 1.81646144e-01 1.81496455e-01 1.81347136e-01 1.81198184e-01 + 1.81049599e-01 1.80901378e-01 1.80753522e-01 1.80606027e-01 1.80458892e-01 + 1.80312117e-01 1.80165699e-01 1.80019637e-01 1.79873930e-01 1.79728576e-01 + 1.79583574e-01 1.79438922e-01 1.79294620e-01 1.79150665e-01 1.79007056e-01 + 1.78863792e-01 1.78720871e-01 1.78578292e-01 1.78436054e-01 1.78294156e-01 + 1.78152595e-01 1.78011371e-01 1.77870482e-01 1.77729928e-01 1.77589706e-01 + 1.77449815e-01 1.77310255e-01 1.77171023e-01 1.77032119e-01 1.76893540e-01 + 1.76755287e-01 1.76617358e-01 1.76479751e-01 1.76342465e-01 1.76205499e-01 + 1.76068851e-01 1.75932521e-01 1.75796507e-01 1.75660808e-01 1.75525423e-01 + 1.75390351e-01 1.75255589e-01 1.75121138e-01 1.74986996e-01 1.74853162e-01 + 1.74719634e-01 1.74586412e-01 1.74453494e-01 1.74320879e-01 1.74188566e-01 + 1.74056554e-01 1.73924842e-01 1.73793428e-01 1.73662312e-01 1.73531492e-01 + 1.73400967e-01 1.73270736e-01 1.73140798e-01 1.73011152e-01 1.72881797e-01 + 1.72752732e-01 1.72623955e-01 1.72495466e-01 1.72367263e-01 1.72239346e-01 + 1.72111713e-01 1.71984363e-01 1.71857296e-01 1.71730510e-01 1.71604004e-01 + 1.71477777e-01 1.71351828e-01 1.71226157e-01 1.71100761e-01 1.70975641e-01 + 1.70850795e-01 1.70726222e-01 1.70601921e-01 1.70477891e-01 1.70354131e-01 + 1.70230640e-01 1.70107418e-01 1.69984462e-01 1.69861773e-01 1.69739349e-01 + 1.69617190e-01 1.69495294e-01 1.69373660e-01 1.69252288e-01 1.69131176e-01 + 1.69010324e-01 1.68889731e-01 1.68769395e-01 1.68649317e-01 1.68529494e-01 + 1.68409926e-01 1.68290613e-01 1.68171552e-01 1.68052744e-01 1.67934188e-01 + 1.67815882e-01 1.67697825e-01 1.67580018e-01 1.67462458e-01 1.67345146e-01 + 1.67228079e-01 1.67111258e-01 1.66994682e-01 1.66878349e-01 1.66762259e-01 + 1.66646411e-01 1.66530804e-01 1.66415437e-01 1.66300309e-01 1.66185421e-01 + 1.66070770e-01 1.65956356e-01 1.65842178e-01 1.65728235e-01 1.65614527e-01 + 1.65501053e-01 1.65387812e-01 1.65274803e-01 1.65162025e-01 1.65049477e-01 + 1.64937160e-01 1.64825071e-01 1.64713211e-01 1.64601578e-01 1.64490172e-01 + 1.64378991e-01 1.64268036e-01 1.64157305e-01 1.64046798e-01 1.63936514e-01 + 1.63826452e-01 1.63716611e-01 1.63606991e-01 1.63497591e-01 1.63388409e-01 + 1.63279447e-01 1.63170702e-01 1.63062174e-01 1.62953862e-01 1.62845766e-01 + 1.62737885e-01 1.62630217e-01 1.62522764e-01 1.62415523e-01 1.62308493e-01 + 1.62201676e-01 1.62095069e-01 1.61988671e-01 1.61882483e-01 1.61776504e-01 + 1.61670732e-01 1.61565168e-01 1.61459810e-01 1.61354658e-01 1.61249711e-01 + 1.61144969e-01 1.61040431e-01 1.60936095e-01 1.60831963e-01 1.60728032e-01 + 1.60624302e-01 1.60520773e-01 1.60417444e-01 1.60314314e-01 1.60211383e-01 + 1.60108650e-01 1.60006114e-01 1.59903775e-01 1.59801632e-01 1.59699684e-01 + 1.59597932e-01 1.59496373e-01 1.59395009e-01 1.59293837e-01 1.59192858e-01 + 1.59092070e-01 1.58991474e-01 1.58891068e-01 1.58790852e-01 1.58690826e-01 + 1.58590988e-01 1.58491339e-01 1.58391877e-01 1.58292602e-01 1.58193514e-01 + 1.58094612e-01 1.57995894e-01 1.57897362e-01 1.57799013e-01 1.57700849e-01 + 1.57602867e-01 1.57505067e-01 1.57407450e-01 1.57310013e-01 1.57212758e-01 + 1.57115682e-01 1.57018786e-01 1.56922069e-01 1.56825531e-01 1.56729171e-01 + 1.56632988e-01 1.56536982e-01 1.56441152e-01 1.56345498e-01 1.56250019e-01 + 1.56154715e-01 1.56059585e-01 1.55964629e-01 1.55869846e-01 1.55775235e-01 + 1.55680797e-01 1.55586530e-01 1.55492434e-01 1.55398509e-01 1.55304754e-01 + 1.55211168e-01 1.55117751e-01 1.55024502e-01 1.54931422e-01 1.54838509e-01 + 1.54745763e-01 1.54653183e-01 1.54560770e-01 1.54468522e-01 1.54376439e-01 + 1.54284520e-01 1.54192765e-01 1.54101174e-01 1.54009746e-01 1.53918481e-01 + 1.53827377e-01 1.53736435e-01 1.53645654e-01 1.53555034e-01 1.53464574e-01 + 1.53374274e-01 1.53284132e-01 1.53194150e-01 1.53104326e-01 1.53014660e-01 + 1.52925151e-01 1.52835798e-01 1.52746603e-01 1.52657563e-01 1.52568679e-01 + 1.52479950e-01 1.52391376e-01 1.52302955e-01 1.52214689e-01 1.52126576e-01 + 1.52038615e-01 1.51950807e-01 1.51863151e-01 1.51775647e-01 1.51688293e-01 + 1.51601091e-01 1.51514038e-01 1.51427135e-01 1.51340382e-01 1.51253778e-01 + 1.51167322e-01 1.51081014e-01 1.50994854e-01 1.50908841e-01 1.50822975e-01 + 1.50737255e-01 1.50651681e-01 1.50566253e-01 1.50480970e-01 1.50395832e-01 + 1.50310838e-01 1.50225988e-01 1.50141281e-01 1.50056718e-01 1.49972298e-01 + 1.49888019e-01 1.49803883e-01 1.49719888e-01 1.49636035e-01 1.49552322e-01 + 1.49468749e-01 1.49385316e-01 1.49302023e-01 1.49218869e-01 1.49135854e-01 + 1.49052977e-01 1.48970239e-01 1.48887638e-01 1.48805174e-01 1.48722847e-01 + 1.48640656e-01 1.48558602e-01 1.48476683e-01 1.48394900e-01 1.48313252e-01 + 1.48231738e-01 1.48150359e-01 1.48069113e-01 1.47988001e-01 1.47907022e-01 + 1.47826176e-01 1.47745463e-01 1.47664881e-01 1.47584431e-01 1.47504113e-01 + 1.47423925e-01 1.47343868e-01 1.47263942e-01 1.47184145e-01 1.47104478e-01 + 1.47024940e-01 1.46945531e-01 1.46866251e-01 1.46787099e-01 1.46708074e-01 + 1.46629177e-01 1.46550407e-01 1.46471764e-01 1.46393248e-01 1.46314857e-01 + 1.46236593e-01 1.46158454e-01 1.46080440e-01 1.46002551e-01 1.45924786e-01 + 1.45847145e-01 1.45769628e-01 1.45692235e-01 1.45614965e-01 1.45537817e-01 + 1.45460792e-01 1.45383890e-01 1.45307109e-01 1.45230449e-01 1.45153911e-01 + 1.45077494e-01 1.45001197e-01 1.44925021e-01 1.44848964e-01 1.44773027e-01 + 1.44697209e-01 1.44621511e-01 1.44545931e-01 1.44470469e-01 1.44395126e-01 + 1.44319900e-01 1.44244791e-01 1.44169800e-01 1.44094926e-01 1.44020168e-01 + 1.43945527e-01 1.43871001e-01 1.43796591e-01 1.43722296e-01 1.43648117e-01 + 1.43574052e-01 1.43500101e-01 1.43426265e-01 1.43352542e-01 1.43278934e-01 + 1.43205438e-01 1.43132055e-01 1.43058785e-01 1.42985628e-01 1.42912583e-01 + 1.42839649e-01 1.42766827e-01 1.42694116e-01 1.42621516e-01 1.42549027e-01 + 1.42476649e-01 1.42404380e-01 1.42332222e-01 1.42260172e-01 1.42188233e-01 + 1.42116402e-01 1.42044680e-01 1.41973066e-01 1.41901561e-01 1.41830164e-01 + 1.41758874e-01 1.41687692e-01 1.41616617e-01 1.41545648e-01 1.41474786e-01 + 1.41404031e-01 1.41333382e-01 1.41262838e-01 1.41192400e-01 1.41122067e-01 + 1.41051839e-01 1.40981716e-01 1.40911698e-01 1.40841783e-01 1.40771973e-01 + 1.40702266e-01 1.40632663e-01 1.40563163e-01 1.40493766e-01 1.40424471e-01 + 1.40355279e-01 1.40286189e-01 1.40217202e-01 1.40148315e-01 1.40079531e-01 + 1.40010847e-01 1.39942264e-01 1.39873782e-01 1.39805401e-01 1.39737119e-01 + 1.39668938e-01 1.39600856e-01 1.39532874e-01 1.39464991e-01 1.39397207e-01 + 1.39329522e-01 1.39261935e-01 1.39194446e-01 1.39127056e-01 1.39059763e-01 + 1.38992568e-01 1.38925470e-01 1.38858469e-01 1.38791565e-01 1.38724758e-01 + 1.38658047e-01 1.38591432e-01 1.38524913e-01 1.38458490e-01 1.38392162e-01 + 1.38325930e-01 1.38259792e-01 1.38193750e-01 1.38127801e-01 1.38061947e-01 + 1.37996188e-01 1.37930522e-01 1.37864950e-01 1.37799471e-01 1.37734085e-01 + 1.37668793e-01 1.37603593e-01 1.37538485e-01 1.37473471e-01 1.37408548e-01 + 1.37343717e-01 1.37278977e-01 1.37214330e-01 1.37149773e-01 1.37085308e-01 + 1.37020933e-01 1.36956649e-01 1.36892455e-01 1.36828351e-01 1.36764338e-01 + 1.36700414e-01 1.36636580e-01 1.36572835e-01 1.36509179e-01 1.36445612e-01 + 1.36382134e-01 1.36318745e-01 1.36255443e-01 1.36192230e-01 1.36129105e-01 + 1.36066067e-01 1.36003117e-01 1.35940254e-01 1.35877478e-01 1.35814789e-01 + 1.35752187e-01 1.35689672e-01 1.35627242e-01 1.35564899e-01 1.35502641e-01 + 1.35440470e-01 1.35378384e-01 1.35316383e-01 1.35254467e-01 1.35192636e-01 + 1.35130890e-01 1.35069228e-01 1.35007651e-01 1.34946158e-01 1.34884748e-01 + 1.34823423e-01 1.34762181e-01 1.34701022e-01 1.34639947e-01 1.34578955e-01 + 1.34518045e-01 1.34457218e-01 1.34396474e-01 1.34335812e-01 1.34275232e-01 + 1.34214733e-01 1.34154317e-01 1.34093982e-01 1.34033728e-01 1.33973556e-01 + 1.33913464e-01 1.33853453e-01 1.33793523e-01 1.33733673e-01 1.33673904e-01 + 1.33614214e-01 1.33554605e-01 1.33495075e-01 1.33435625e-01 1.33376254e-01 + 1.33316962e-01 1.33257749e-01 1.33198615e-01 1.33139560e-01 1.33080583e-01 + 1.33021685e-01 1.32962864e-01 1.32904122e-01 1.32845457e-01 1.32786870e-01 + 1.32728361e-01 1.32669928e-01 1.32611573e-01 1.32553295e-01 1.32495093e-01 + 1.32436968e-01 1.32378920e-01 1.32320948e-01 1.32263052e-01 1.32205232e-01 + 1.32147487e-01 1.32089818e-01 1.32032225e-01 1.31974707e-01 1.31917264e-01 + 1.31859896e-01 1.31802603e-01 1.31745384e-01 1.31688240e-01 1.31631170e-01 + 1.31574174e-01 1.31517252e-01 1.31460404e-01 1.31403630e-01 1.31346929e-01 + 1.31290301e-01 1.31233747e-01 1.31177266e-01 1.31120857e-01 1.31064522e-01 + 1.31008258e-01 1.30952068e-01 1.30895949e-01 1.30839903e-01 1.30783928e-01 + 1.30728025e-01 1.30672194e-01 1.30616435e-01 1.30560746e-01 1.30505129e-01 + 1.30449583e-01 1.30394108e-01 1.30338703e-01 1.30283369e-01 1.30228105e-01 + 1.30172912e-01 1.30117789e-01 1.30062736e-01 1.30007752e-01 1.29952839e-01 + 1.29897994e-01 1.29843219e-01 1.29788514e-01 1.29733877e-01 1.29679310e-01 + 1.29624811e-01 1.29570381e-01 1.29516019e-01 1.29461726e-01 1.29407501e-01 + 1.29353344e-01 1.29299255e-01 1.29245234e-01 1.29191280e-01 1.29137394e-01 + 1.29083575e-01 1.29029824e-01 1.28976140e-01 1.28922522e-01 1.28868972e-01 + 1.28815488e-01 1.28762070e-01 1.28708719e-01 1.28655435e-01 1.28602216e-01 + 1.28549063e-01 1.28495977e-01 1.28442955e-01 1.28390000e-01 1.28337110e-01 + 1.28284285e-01 1.28231526e-01 1.28178831e-01 1.28126202e-01 1.28073637e-01 + 1.28021137e-01 1.27968701e-01 1.27916330e-01 1.27864023e-01 1.27811780e-01 + 1.27759601e-01 1.27707486e-01 1.27655434e-01 1.27603447e-01 1.27551522e-01 + 1.27499661e-01 1.27447864e-01 1.27396129e-01 1.27344457e-01 1.27292848e-01 + 1.27241302e-01 1.27189818e-01 1.27138397e-01 1.27087038e-01 1.27035742e-01 + 1.26984507e-01 1.26933334e-01 1.26882223e-01 1.26831174e-01 1.26780187e-01 + 1.26729260e-01 1.26678396e-01 1.26627592e-01 1.26576849e-01 1.26526168e-01 + 1.26475547e-01 1.26424987e-01 1.26374487e-01 1.26324048e-01 1.26273670e-01 + 1.26223351e-01 1.26173093e-01 1.26122894e-01 1.26072756e-01 1.26022677e-01 + 1.25972658e-01 1.25922698e-01 1.25872798e-01 1.25822957e-01 1.25773176e-01 + 1.25723453e-01 1.25673789e-01 1.25624184e-01 1.25574638e-01 1.25525150e-01 + 1.25475721e-01 1.25426350e-01 1.25377037e-01 1.25327782e-01 1.25278586e-01 + 1.25229447e-01 1.25180366e-01 1.25131343e-01 1.25082377e-01 1.25033469e-01 + 1.24984618e-01 1.24935824e-01 1.24887088e-01 1.24838408e-01 1.24789785e-01 + 1.24741219e-01 1.24692710e-01 1.24644257e-01 1.24595861e-01 1.24547521e-01 + 1.24499237e-01 1.24451010e-01 1.24402838e-01 1.24354722e-01 1.24306662e-01 + 1.24258658e-01 1.24210709e-01 1.24162816e-01 1.24114978e-01 1.24067195e-01 + 1.24019468e-01 1.23971795e-01 1.23924178e-01 1.23876615e-01 1.23829107e-01 + 1.23781654e-01 1.23734255e-01 1.23686910e-01 1.23639620e-01 1.23592384e-01 + 1.23545202e-01 1.23498075e-01 1.23451001e-01 1.23403980e-01 1.23357014e-01 + 1.23310101e-01 1.23263242e-01 1.23216436e-01 1.23169683e-01 1.23122983e-01 + 1.23076337e-01 1.23029743e-01 1.22983202e-01 1.22936715e-01 1.22890279e-01 + 1.22843897e-01 1.22797567e-01 1.22751289e-01 1.22705063e-01 1.22658890e-01 + 1.22612769e-01 1.22566700e-01 1.22520682e-01 1.22474717e-01 1.22428803e-01 + 1.22382941e-01 1.22337130e-01 1.22291371e-01 1.22245663e-01 1.22200006e-01 + 1.22154400e-01 1.22108845e-01 1.22063342e-01 1.22017889e-01 1.21972487e-01 + 1.21927135e-01 1.21881834e-01 1.21836584e-01 1.21791383e-01 1.21746234e-01 + 1.21701134e-01 1.21656084e-01 1.21611085e-01 1.21566135e-01 1.21521235e-01 + 1.21476385e-01 1.21431584e-01 1.21386833e-01 1.21342131e-01 1.21297479e-01 + 1.21252876e-01 1.21208322e-01 1.21163817e-01 1.21119362e-01 1.21074955e-01 + 1.21030597e-01 1.20986287e-01 1.20942026e-01 1.20897814e-01 1.20853651e-01 + 1.20809535e-01 1.20765468e-01 1.20721449e-01 1.20677478e-01 1.20633555e-01 + 1.20589681e-01 1.20545854e-01 1.20502074e-01 1.20458343e-01 1.20414659e-01 + 1.20371022e-01 1.20327433e-01 1.20283891e-01 1.20240396e-01 1.20196949e-01 + 1.20153549e-01 1.20110195e-01 1.20066889e-01 1.20023629e-01 1.19980416e-01 + 1.19937250e-01 1.19894130e-01 1.19851056e-01 1.19808030e-01 1.19765049e-01 + 1.19722115e-01 1.19679226e-01 1.19636384e-01 1.19593588e-01 1.19550838e-01 + 1.19508133e-01 1.19465474e-01 1.19422861e-01 1.19380294e-01 1.19337772e-01 + 1.19295295e-01 1.19252863e-01 1.19210477e-01 1.19168136e-01 1.19125841e-01 + 1.19083590e-01 1.19041384e-01 1.18999223e-01 1.18957106e-01 1.18915035e-01 + 1.18873008e-01 1.18831025e-01 1.18789087e-01 1.18747194e-01 1.18705344e-01 + 1.18663539e-01 1.18621778e-01 1.18580061e-01 1.18538388e-01 1.18496759e-01 + 1.18455174e-01 1.18413632e-01 1.18372134e-01 1.18330680e-01 1.18289269e-01 + 1.18247902e-01 1.18206578e-01 1.18165298e-01 1.18124060e-01 1.18082866e-01 + 1.18041715e-01 1.18000607e-01 1.17959541e-01 1.17918519e-01 1.17877539e-01 + 1.17836602e-01 1.17795708e-01 1.17754856e-01 1.17714047e-01 1.17673280e-01 + 1.17632556e-01 1.17591873e-01 1.17551233e-01 1.17510635e-01 1.17470079e-01 + 1.17429565e-01 1.17389093e-01 1.17348662e-01 1.17308274e-01 1.17267927e-01 + 1.17227622e-01 1.17187358e-01 1.17147135e-01 1.17106955e-01 1.17066815e-01 + 1.17026717e-01 1.16986659e-01 1.16946643e-01 1.16906668e-01 1.16866734e-01 + 1.16826841e-01 1.16786988e-01 1.16747177e-01 1.16707406e-01 1.16667676e-01 + 1.16627986e-01 1.16588337e-01 1.16548728e-01 1.16509159e-01 1.16469631e-01 + 1.16430143e-01 1.16390695e-01 1.16351287e-01 1.16311919e-01 1.16272591e-01 + 1.16233303e-01 1.16194055e-01 1.16154846e-01 1.16115678e-01 1.16076548e-01 + 1.16037459e-01 1.15998408e-01 1.15959397e-01 1.15920426e-01 1.15881494e-01 + 1.15842601e-01 1.15803747e-01 1.15764932e-01 1.15726156e-01 1.15687419e-01 + 1.15648721e-01 1.15610062e-01 1.15571441e-01 1.15532859e-01 1.15494316e-01 + 1.15455812e-01 1.15417345e-01 1.15378918e-01 1.15340528e-01 1.15302177e-01 + 1.15263864e-01 1.15225590e-01 1.15187353e-01 1.15149155e-01 1.15110994e-01 + 1.15072871e-01 1.15034786e-01 1.14996739e-01 1.14958730e-01 1.14920759e-01 + 1.14882824e-01 1.14844928e-01 1.14807069e-01 1.14769247e-01 1.14731463e-01 + 1.14693716e-01 1.14656006e-01 1.14618334e-01 1.14580699e-01 1.14543100e-01 + 1.14505539e-01 1.14468014e-01 1.14430527e-01 1.14393076e-01 1.14355662e-01 + 1.14318284e-01 1.14280944e-01 1.14243640e-01 1.14206372e-01 1.14169141e-01 + 1.14131946e-01 1.14094787e-01 1.14057665e-01 1.14020579e-01 1.13983529e-01 + 1.13946515e-01 1.13909538e-01 1.13872596e-01 1.13835690e-01 1.13798820e-01 + 1.13761986e-01 1.13725188e-01 1.13688425e-01 1.13651698e-01 1.13615006e-01 + 1.13578350e-01 1.13541730e-01 1.13505144e-01 1.13468595e-01 1.13432080e-01 + 1.13395601e-01 1.13359156e-01 1.13322747e-01 1.13286373e-01 1.13250035e-01 + 1.13213730e-01 1.13177461e-01 1.13141227e-01 1.13105028e-01 1.13068863e-01 + 1.13032733e-01 1.12996637e-01 1.12960576e-01 1.12924550e-01 1.12888558e-01 + 1.12852600e-01 1.12816677e-01 1.12780788e-01 1.12744933e-01 1.12709112e-01 + 1.12673326e-01 1.12637574e-01 1.12601855e-01 1.12566171e-01 1.12530520e-01 + 1.12494904e-01 1.12459321e-01 1.12423772e-01 1.12388256e-01 1.12352774e-01 + 1.12317326e-01 1.12281911e-01 1.12246530e-01 1.12211182e-01 1.12175868e-01 + 1.12140587e-01 1.12105339e-01 1.12070125e-01 1.12034943e-01 1.11999795e-01 + 1.11964679e-01 1.11929597e-01 1.11894548e-01 1.11859532e-01 1.11824548e-01 + 1.11789597e-01 1.11754679e-01 1.11719794e-01 1.11684941e-01 1.11650121e-01 + 1.11615334e-01 1.11580579e-01 1.11545856e-01 1.11511166e-01 1.11476508e-01 + 1.11441883e-01 1.11407289e-01 1.11372728e-01 1.11338199e-01 1.11303703e-01 + 1.11269238e-01 1.11234805e-01 1.11200404e-01 1.11166035e-01 1.11131698e-01 + 1.11097393e-01 1.11063119e-01 1.11028877e-01 1.10994667e-01 1.10960489e-01 + 1.10926342e-01 1.10892226e-01 1.10858142e-01 1.10824089e-01 1.10790068e-01 + 1.10756078e-01 1.10722119e-01 1.10688192e-01 1.10654295e-01 1.10620430e-01 + 1.10586596e-01 1.10552793e-01 1.10519021e-01 1.10485279e-01 1.10451569e-01 + 1.10417890e-01 1.10384241e-01 1.10350623e-01 1.10317036e-01 1.10283479e-01 + 1.10249953e-01 1.10216458e-01 1.10182993e-01 1.10149558e-01 1.10116154e-01 + 1.10082780e-01 1.10049437e-01 1.10016124e-01 1.09982841e-01 1.09949588e-01 + 1.09916366e-01 1.09883174e-01 1.09850011e-01 1.09816879e-01 1.09783776e-01 + 1.09750704e-01 1.09717661e-01 1.09684648e-01 1.09651665e-01 1.09618712e-01 + 1.09585789e-01 1.09552895e-01 1.09520030e-01 1.09487196e-01 1.09454390e-01 + 1.09421615e-01 1.09388868e-01 1.09356151e-01 1.09323464e-01 1.09290805e-01 + 1.09258176e-01 1.09225576e-01 1.09193006e-01 1.09160464e-01 1.09127951e-01 + 1.09095468e-01 1.09063013e-01 1.09030588e-01 1.08998191e-01 1.08965824e-01 + 1.08933485e-01 1.08901174e-01 1.08868893e-01 1.08836640e-01 1.08804416e-01 + 1.08772220e-01 1.08740054e-01 1.08707915e-01 1.08675805e-01 1.08643724e-01 + 1.08611671e-01 1.08579646e-01 1.08547649e-01 1.08515681e-01 1.08483741e-01 + 1.08451829e-01 1.08419946e-01 1.08388090e-01 1.08356263e-01 1.08324463e-01 + 1.08292692e-01 1.08260948e-01 1.08229233e-01 1.08197545e-01 1.08165885e-01 + 1.08134253e-01 1.08102648e-01 1.08071072e-01 1.08039523e-01 1.08008001e-01 + 1.07976507e-01 1.07945041e-01 1.07913602e-01 1.07882191e-01 1.07850807e-01 + 1.07819450e-01 1.07788121e-01 1.07756819e-01 1.07725544e-01 1.07694296e-01 + 1.07663076e-01 1.07631883e-01 1.07600717e-01 1.07569578e-01 1.07538466e-01 + 1.07507381e-01 1.07476322e-01 1.07445291e-01 1.07414287e-01 1.07383309e-01 + 1.07352359e-01 1.07321435e-01 1.07290537e-01 1.07259667e-01 1.07228823e-01 + 1.07198005e-01 1.07167214e-01 1.07136450e-01 1.07105712e-01 1.07075001e-01 + 1.07044316e-01 1.07013657e-01 1.06983025e-01 1.06952419e-01 1.06921839e-01 + 1.06891286e-01 1.06860758e-01 1.06830257e-01 1.06799782e-01 1.06769333e-01 + 1.06738910e-01 1.06708513e-01 1.06678142e-01 1.06647796e-01 1.06617477e-01 + 1.06587184e-01 1.06556916e-01 1.06526674e-01 1.06496458e-01 1.06466268e-01 + 1.06436103e-01 1.06405964e-01 1.06375850e-01 1.06345762e-01 1.06315700e-01 + 1.06285663e-01 1.06255651e-01 1.06225665e-01 1.06195704e-01 1.06165769e-01 + 1.06135859e-01 1.06105974e-01 1.06076114e-01 1.06046280e-01 1.06016470e-01 + 1.05986686e-01 1.05956927e-01 1.05927193e-01 1.05897484e-01 1.05867800e-01 + 1.05838141e-01 1.05808507e-01 1.05778897e-01 1.05749313e-01 1.05719753e-01 + 1.05690218e-01 1.05660708e-01 1.05631223e-01 1.05601762e-01 1.05572326e-01 + 1.05542914e-01 1.05513528e-01 1.05484165e-01 1.05454827e-01 1.05425514e-01 + 1.05396225e-01 1.05366960e-01 1.05337720e-01 1.05308504e-01 1.05279312e-01 + 1.05250145e-01 1.05221002e-01 1.05191883e-01 1.05162788e-01 1.05133717e-01 + 1.05104671e-01 1.05075648e-01 1.05046650e-01 1.05017675e-01 1.04988725e-01 + 1.04959798e-01 1.04930896e-01 1.04902017e-01 1.04873162e-01 1.04844331e-01 + 1.04815523e-01 1.04786740e-01 1.04757980e-01 1.04729243e-01 1.04700531e-01 + 1.04671841e-01 1.04643176e-01 1.04614534e-01 1.04585916e-01 1.04557321e-01 + 1.04528749e-01 1.04500201e-01 1.04471676e-01 1.04443175e-01 1.04414697e-01 + 1.04386242e-01 1.04357810e-01 1.04329402e-01 1.04301017e-01 1.04272655e-01 + 1.04244316e-01 1.04216000e-01 1.04187707e-01 1.04159437e-01 1.04131191e-01 + 1.04102967e-01 1.04074766e-01 1.04046588e-01 1.04018433e-01 1.03990301e-01 + 1.03962192e-01 1.03934105e-01 1.03906041e-01 1.03878000e-01 1.03849982e-01 + 1.03821986e-01 1.03794013e-01 1.03766062e-01 1.03738134e-01 1.03710229e-01 + 1.03682346e-01 1.03654486e-01 1.03626648e-01 1.03598832e-01 1.03571039e-01 + 1.03543268e-01 1.03515520e-01 1.03487793e-01 1.03460089e-01 1.03432408e-01 + 1.03404748e-01 1.03377111e-01 1.03349496e-01 1.03321903e-01 1.03294332e-01 + 1.03266783e-01 1.03239256e-01 1.03211751e-01 1.03184268e-01 1.03156807e-01 + 1.03129368e-01 1.03101951e-01 1.03074556e-01 1.03047182e-01 1.03019831e-01 + 1.02992501e-01 1.02965192e-01 1.02937906e-01 1.02910641e-01 1.02883398e-01 + 1.02856177e-01 1.02828977e-01 1.02801798e-01 1.02774642e-01 1.02747506e-01 + 1.02720392e-01 1.02693300e-01 1.02666229e-01 1.02639180e-01 1.02612151e-01 + 1.02585145e-01 1.02558159e-01 1.02531195e-01 1.02504252e-01 1.02477330e-01 + 1.02450430e-01 1.02423550e-01 1.02396692e-01 1.02369855e-01 1.02343039e-01 + 1.02316244e-01 1.02289470e-01 1.02262717e-01 1.02235985e-01 1.02209274e-01 + 1.02182584e-01 1.02155915e-01 1.02129267e-01 1.02102639e-01 1.02076033e-01 + 1.02049447e-01 1.02022882e-01 1.01996338e-01 1.01969814e-01 1.01943311e-01 + 1.01916829e-01 1.01890367e-01 1.01863926e-01 1.01837505e-01 1.01811106e-01 + 1.01784726e-01 1.01758367e-01 1.01732029e-01 1.01705711e-01 1.01679413e-01 + 1.01653136e-01 1.01626879e-01 1.01600643e-01 1.01574426e-01 1.01548230e-01 + 1.01522055e-01 1.01495899e-01 1.01469764e-01 1.01443649e-01 1.01417554e-01 + 1.01391479e-01 1.01365425e-01 1.01339390e-01 1.01313376e-01 1.01287381e-01 + 1.01261406e-01 1.01235452e-01 1.01209517e-01 1.01183603e-01 1.01157708e-01 + 1.01131833e-01 1.01105978e-01 1.01080143e-01 1.01054327e-01 1.01028532e-01 + 1.01002756e-01 1.00976999e-01 1.00951263e-01 1.00925546e-01 1.00899849e-01 + 1.00874171e-01 1.00848513e-01 1.00822875e-01 1.00797256e-01 1.00771656e-01 + 1.00746077e-01 1.00720516e-01 1.00694975e-01 1.00669454e-01 1.00643952e-01 + 1.00618469e-01 1.00593005e-01 1.00567561e-01 1.00542136e-01 1.00516731e-01 + 1.00491345e-01 1.00465978e-01 1.00440630e-01 1.00415301e-01 1.00389992e-01 + 1.00364701e-01 1.00339430e-01 1.00314178e-01 1.00288944e-01 1.00263730e-01 + 1.00238535e-01 1.00213359e-01 1.00188202e-01 1.00163064e-01 1.00137944e-01 + 1.00112844e-01 1.00087762e-01 1.00062700e-01 1.00037656e-01 1.00012631e-01 + 9.99876242e-02 9.99626366e-02 9.99376677e-02 9.99127176e-02 9.98877861e-02 + 9.98628732e-02 9.98379790e-02 9.98131034e-02 9.97882464e-02 9.97634079e-02 + 9.97385880e-02 9.97137866e-02 9.96890037e-02 9.96642393e-02 9.96394933e-02 + 9.96147657e-02 9.95900565e-02 9.95653657e-02 9.95406933e-02 9.95160392e-02 + 9.94914034e-02 9.94667859e-02 9.94421867e-02 9.94176057e-02 9.93930429e-02 + 9.93684983e-02 9.93439719e-02 9.93194636e-02 9.92949735e-02 9.92705015e-02 + 9.92460476e-02 9.92216117e-02 9.91971939e-02 9.91727940e-02 9.91484122e-02 + 9.91240484e-02 9.90997025e-02 9.90753745e-02 9.90510645e-02 9.90267723e-02 + 9.90024980e-02 9.89782415e-02 9.89540029e-02 9.89297821e-02 9.89055790e-02 + 9.88813937e-02 9.88572261e-02 9.88330763e-02 9.88089441e-02 9.87848296e-02 + 9.87607327e-02 9.87366535e-02 9.87125919e-02 9.86885478e-02 9.86645213e-02 + 9.86405124e-02 9.86165209e-02 9.85925470e-02 9.85685906e-02 9.85446516e-02 + 9.85207300e-02 9.84968258e-02 9.84729391e-02 9.84490697e-02 9.84252176e-02 + 9.84013829e-02 9.83775655e-02 9.83537654e-02 9.83299825e-02 9.83062169e-02 + 9.82824685e-02 9.82587374e-02 9.82350233e-02 9.82113265e-02 9.81876468e-02 + 9.81639842e-02 9.81403387e-02 9.81167103e-02 9.80930990e-02 9.80695047e-02 + 9.80459274e-02 9.80223671e-02 9.79988238e-02 9.79752974e-02 9.79517880e-02 + 9.79282955e-02 9.79048199e-02 9.78813611e-02 9.78579192e-02 9.78344942e-02 + 9.78110859e-02 9.77876945e-02 9.77643198e-02 9.77409619e-02 9.77176207e-02 + 9.76942963e-02 9.76709885e-02 9.76476974e-02 9.76244230e-02 9.76011651e-02 + 9.75779239e-02 9.75546993e-02 9.75314913e-02 9.75082999e-02 9.74851249e-02 + 9.74619665e-02 9.74388246e-02 9.74156991e-02 9.73925901e-02 9.73694976e-02 + 9.73464215e-02 9.73233617e-02 9.73003184e-02 9.72772914e-02 9.72542807e-02 + 9.72312864e-02 9.72083084e-02 9.71853467e-02 9.71624012e-02 9.71394719e-02 + 9.71165589e-02 9.70936621e-02 9.70707815e-02 9.70479171e-02 9.70250688e-02 + 9.70022366e-02 9.69794205e-02 9.69566206e-02 9.69338367e-02 9.69110688e-02 + 9.68883170e-02 9.68655813e-02 9.68428615e-02 9.68201577e-02 9.67974698e-02 + 9.67747979e-02 9.67521419e-02 9.67295019e-02 9.67068777e-02 9.66842693e-02 + 9.66616769e-02 9.66391002e-02 9.66165394e-02 9.65939943e-02 9.65714651e-02 + 9.65489516e-02 9.65264538e-02 9.65039718e-02 9.64815054e-02 9.64590547e-02 + 9.64366197e-02 9.64142004e-02 9.63917967e-02 9.63694086e-02 9.63470360e-02 + 9.63246791e-02 9.63023377e-02 9.62800118e-02 9.62577015e-02 9.62354067e-02 + 9.62131273e-02 9.61908635e-02 9.61686150e-02 9.61463820e-02 9.61241644e-02 + 9.61019623e-02 9.60797754e-02 9.60576040e-02 9.60354479e-02 9.60133071e-02 + 9.59911816e-02 9.59690714e-02 9.59469765e-02 9.59248968e-02 9.59028324e-02 + 9.58807832e-02 9.58587492e-02 9.58367303e-02 9.58147267e-02 9.57927382e-02 + 9.57707648e-02 9.57488065e-02 9.57268633e-02 9.57049352e-02 9.56830222e-02 + 9.56611242e-02 9.56392413e-02 9.56173733e-02 9.55955204e-02 9.55736824e-02 + 9.55518594e-02 9.55300513e-02 9.55082582e-02 9.54864799e-02 9.54647166e-02 + 9.54429681e-02 9.54212345e-02 9.53995157e-02 9.53778117e-02 9.53561226e-02 + 9.53344482e-02 9.53127886e-02 9.52911438e-02 9.52695137e-02 9.52478984e-02 + 9.52262977e-02 9.52047117e-02 9.51831404e-02 9.51615838e-02 9.51400418e-02 + 9.51185144e-02 9.50970016e-02 9.50755034e-02 9.50540198e-02 9.50325508e-02 + 9.50110963e-02 9.49896563e-02 9.49682308e-02 9.49468198e-02 9.49254233e-02 + 9.49040412e-02 9.48826736e-02 9.48613204e-02 9.48399817e-02 9.48186573e-02 + 9.47973473e-02 9.47760516e-02 9.47547703e-02 9.47335034e-02 9.47122507e-02 + 9.46910123e-02 9.46697883e-02 9.46485784e-02 9.46273829e-02 9.46062015e-02 + 9.45850344e-02 9.45638815e-02 9.45427428e-02 9.45216182e-02 9.45005078e-02 + 9.44794116e-02 9.44583294e-02 9.44372614e-02 9.44162074e-02 9.43951676e-02 + 9.43741418e-02 9.43531300e-02 9.43321323e-02 9.43111485e-02 9.42901788e-02 + 9.42692231e-02 9.42482813e-02 9.42273534e-02 9.42064395e-02 9.41855396e-02 + 9.41646535e-02 9.41437813e-02 9.41229230e-02 9.41020785e-02 9.40812479e-02 + 9.40604311e-02 9.40396282e-02 9.40188390e-02 9.39980636e-02 9.39773020e-02 + 9.39565541e-02 9.39358200e-02 9.39150995e-02 9.38943928e-02 9.38736998e-02 + 9.38530204e-02 9.38323548e-02 9.38117027e-02 9.37910643e-02 9.37704395e-02 + 9.37498283e-02 9.37292307e-02 9.37086466e-02 9.36880762e-02 9.36675192e-02 + 9.36469758e-02 9.36264459e-02 9.36059295e-02 9.35854265e-02 9.35649371e-02 + 9.35444611e-02 9.35239985e-02 9.35035493e-02 9.34831136e-02 9.34626912e-02 + 9.34422823e-02 9.34218866e-02 9.34015044e-02 9.33811355e-02 9.33607798e-02 + 9.33404375e-02 9.33201085e-02 9.32997928e-02 9.32794903e-02 9.32592011e-02 + 9.32389251e-02 9.32186624e-02 9.31984128e-02 9.31781764e-02 9.31579532e-02 + 9.31377432e-02 9.31175463e-02 9.30973626e-02 9.30771919e-02 9.30570344e-02 + 9.30368899e-02 9.30167586e-02 9.29966403e-02 9.29765350e-02 9.29564428e-02 + 9.29363636e-02 9.29162974e-02 9.28962442e-02 9.28762040e-02 9.28561768e-02 + 9.28361624e-02 9.28161611e-02 9.27961726e-02 9.27761971e-02 9.27562344e-02 + 9.27362847e-02 9.27163478e-02 9.26964237e-02 9.26765125e-02 9.26566141e-02 + 9.26367286e-02 9.26168558e-02 9.25969958e-02 9.25771486e-02 9.25573141e-02 + 9.25374924e-02 9.25176834e-02 9.24978871e-02 9.24781036e-02 9.24583327e-02 + 9.24385745e-02 9.24188289e-02 9.23990960e-02 9.23793758e-02 9.23596681e-02 + 9.23399731e-02 9.23202907e-02 9.23006208e-02 9.22809635e-02 9.22613188e-02 + 9.22416866e-02 9.22220669e-02 9.22024597e-02 9.21828651e-02 9.21632829e-02 + 9.21437132e-02 9.21241560e-02 9.21046112e-02 9.20850788e-02 9.20655589e-02 + 9.20460514e-02 9.20265563e-02 9.20070735e-02 9.19876031e-02 9.19681451e-02 + 9.19486994e-02 9.19292661e-02 9.19098451e-02 9.18904363e-02 9.18710399e-02 + 9.18516557e-02 9.18322838e-02 9.18129242e-02 9.17935768e-02 9.17742416e-02 + 9.17549186e-02 9.17356079e-02 9.17163093e-02 9.16970229e-02 9.16777486e-02 + 9.16584865e-02 9.16392366e-02 9.16199987e-02 9.16007730e-02 9.15815594e-02 + 9.15623578e-02 9.15431684e-02 9.15239910e-02 9.15048256e-02 9.14856723e-02 + 9.14665310e-02 9.14474017e-02 9.14282844e-02 9.14091791e-02 9.13900857e-02 + 9.13710043e-02 9.13519349e-02 9.13328774e-02 9.13138318e-02 9.12947982e-02 + 9.12757764e-02 9.12567665e-02 9.12377685e-02 9.12187823e-02 9.11998080e-02 + 9.11808456e-02 9.11618949e-02 9.11429561e-02 9.11240290e-02 9.11051138e-02 + 9.10862103e-02 9.10673186e-02 9.10484386e-02 9.10295704e-02 9.10107139e-02 + 9.09918691e-02 9.09730360e-02 9.09542146e-02 9.09354049e-02 9.09166069e-02 + 9.08978205e-02 9.08790457e-02 9.08602826e-02 9.08415311e-02 9.08227911e-02 + 9.08040628e-02 9.07853461e-02 9.07666409e-02 9.07479473e-02 9.07292652e-02 + 9.07105947e-02 9.06919357e-02 9.06732882e-02 9.06546522e-02 9.06360277e-02 + 9.06174146e-02 9.05988131e-02 9.05802229e-02 9.05616442e-02 9.05430770e-02 + 9.05245211e-02 9.05059767e-02 9.04874436e-02 9.04689219e-02 9.04504116e-02 + 9.04319127e-02 9.04134251e-02 9.03949488e-02 9.03764839e-02 9.03580303e-02 + 9.03395879e-02 9.03211569e-02 9.03027371e-02 9.02843286e-02 9.02659313e-02 + 9.02475453e-02 9.02291706e-02 9.02108070e-02 9.01924546e-02 9.01741135e-02 + 9.01557835e-02 9.01374647e-02 9.01191571e-02 9.01008606e-02 9.00825752e-02 + 9.00643010e-02 9.00460379e-02 9.00277859e-02 9.00095450e-02 8.99913152e-02 + 8.99730965e-02 8.99548888e-02 8.99366921e-02 8.99185065e-02 8.99003320e-02 + 8.98821684e-02 8.98640159e-02 8.98458743e-02 8.98277437e-02 8.98096241e-02 + 8.97915155e-02 8.97734178e-02 8.97553311e-02 8.97372552e-02 8.97191903e-02 + 8.97011363e-02 8.96830932e-02 8.96650610e-02 8.96470396e-02 8.96290291e-02 + 8.96110295e-02 8.95930407e-02 8.95750627e-02 8.95570956e-02 8.95391392e-02 + 8.95211937e-02 8.95032589e-02 8.94853349e-02 8.94674217e-02 8.94495192e-02 + 8.94316275e-02 8.94137465e-02 8.93958762e-02 8.93780167e-02 8.93601678e-02 + 8.93423296e-02 8.93245021e-02 8.93066853e-02 8.92888791e-02 8.92710836e-02 + 8.92532987e-02 8.92355244e-02 8.92177608e-02 8.92000077e-02 8.91822653e-02 + 8.91645334e-02 8.91468121e-02 8.91291014e-02 8.91114012e-02 8.90937115e-02 + 8.90760324e-02 8.90583638e-02 8.90407057e-02 8.90230582e-02 8.90054211e-02 + 8.89877945e-02 8.89701783e-02 8.89525726e-02 8.89349774e-02 8.89173926e-02 + 8.88998182e-02 8.88822542e-02 8.88647007e-02 8.88471575e-02 8.88296247e-02 + 8.88121023e-02 8.87945903e-02 8.87770886e-02 8.87595973e-02 8.87421163e-02 + 8.87246456e-02 8.87071853e-02 8.86897352e-02 8.86722954e-02 8.86548660e-02 + 8.86374468e-02 8.86200378e-02 8.86026391e-02 8.85852507e-02 8.85678725e-02 + 8.85505045e-02 8.85331467e-02 8.85157991e-02 8.84984618e-02 8.84811346e-02 + 8.84638176e-02 8.84465107e-02 8.84292140e-02 8.84119274e-02 8.83946510e-02 + 8.83773847e-02 8.83601285e-02 8.83428825e-02 8.83256465e-02 8.83084206e-02 + 8.82912047e-02 8.82739990e-02 8.82568033e-02 8.82396176e-02 8.82224420e-02 + 8.82052764e-02 8.81881208e-02 8.81709752e-02 8.81538396e-02 8.81367140e-02 + 8.81195984e-02 8.81024927e-02 8.80853970e-02 8.80683113e-02 8.80512355e-02 + 8.80341696e-02 8.80171137e-02 8.80000676e-02 8.79830314e-02 8.79660052e-02 + 8.79489888e-02 8.79319823e-02 8.79149857e-02 8.78979989e-02 8.78810219e-02 + 8.78640548e-02 8.78470975e-02 8.78301500e-02 8.78132123e-02 8.77962845e-02 + 8.77793664e-02 8.77624580e-02 8.77455595e-02 8.77286707e-02 8.77117916e-02 + 8.76949223e-02 8.76780628e-02 8.76612129e-02 8.76443728e-02 8.76275423e-02 + 8.76107216e-02 8.75939105e-02 8.75771091e-02 8.75603174e-02 8.75435353e-02 + 8.75267629e-02 8.75100001e-02 8.74932469e-02 8.74765033e-02 8.74597694e-02 + 8.74430451e-02 8.74263303e-02 8.74096251e-02 8.73929296e-02 8.73762435e-02 + 8.73595670e-02 8.73429001e-02 8.73262427e-02 8.73095948e-02 8.72929565e-02 + 8.72763276e-02 8.72597083e-02 8.72430984e-02 8.72264981e-02 8.72099072e-02 + 8.71933257e-02 8.71767537e-02 8.71601912e-02 8.71436381e-02 8.71270944e-02 + 8.71105602e-02 8.70940353e-02 8.70775199e-02 8.70610138e-02 8.70445172e-02 + 8.70280299e-02 8.70115519e-02 8.69950834e-02 8.69786241e-02 8.69621742e-02 + 8.69457337e-02 8.69293024e-02 8.69128805e-02 8.68964679e-02 8.68800646e-02 + 8.68636705e-02 8.68472857e-02 8.68309103e-02 8.68145440e-02 8.67981870e-02 + 8.67818393e-02 8.67655008e-02 8.67491715e-02 8.67328514e-02 8.67165406e-02 + 8.67002389e-02 8.66839464e-02 8.66676631e-02 8.66513890e-02 8.66351240e-02 + 8.66188682e-02 8.66026216e-02 8.65863841e-02 8.65701557e-02 8.65539364e-02 + 8.65377263e-02 8.65215252e-02 8.65053333e-02 8.64891504e-02 8.64729766e-02 + 8.64568119e-02 8.64406563e-02 8.64245097e-02 8.64083721e-02 8.63922436e-02 + 8.63761241e-02 8.63600136e-02 8.63439122e-02 8.63278197e-02 8.63117363e-02 + 8.62956618e-02 8.62795963e-02 8.62635398e-02 8.62474922e-02 8.62314536e-02 + 8.62154239e-02 8.61994032e-02 8.61833914e-02 8.61673885e-02 8.61513945e-02 + 8.61354094e-02 8.61194332e-02 8.61034659e-02 8.60875075e-02 8.60715580e-02 + 8.60556173e-02 8.60396855e-02 8.60237625e-02 8.60078483e-02 8.59919430e-02 + 8.59760465e-02 8.59601588e-02 8.59442800e-02 8.59284099e-02 8.59125486e-02 + 8.58966961e-02 8.58808523e-02 8.58650173e-02 8.58491911e-02 8.58333736e-02 + 8.58175649e-02 8.58017649e-02 8.57859736e-02 8.57701911e-02 8.57544172e-02 + 8.57386520e-02 8.57228956e-02 8.57071478e-02 8.56914087e-02 8.56756782e-02 + 8.56599565e-02 8.56442433e-02 8.56285389e-02 8.56128430e-02 8.55971558e-02 + 8.55814772e-02 8.55658072e-02 8.55501458e-02 8.55344930e-02 8.55188488e-02 + 8.55032132e-02 8.54875862e-02 8.54719677e-02 8.54563578e-02 8.54407564e-02 + 8.54251636e-02 8.54095793e-02 8.53940035e-02 8.53784363e-02 8.53628775e-02 + 8.53473273e-02 8.53317855e-02 8.53162523e-02 8.53007275e-02 8.52852112e-02 + 8.52697034e-02 8.52542040e-02 8.52387130e-02 8.52232305e-02 8.52077565e-02 + 8.51922909e-02 8.51768336e-02 8.51613848e-02 8.51459444e-02 8.51305124e-02 + 8.51150888e-02 8.50996736e-02 8.50842667e-02 8.50688682e-02 8.50534780e-02 + 8.50380963e-02 8.50227228e-02 8.50073577e-02 8.49920009e-02 8.49766524e-02 + 8.49613123e-02 8.49459804e-02 8.49306569e-02 8.49153416e-02 8.49000346e-02 + 8.48847359e-02 8.48694455e-02 8.48541633e-02 8.48388893e-02 8.48236237e-02 + 8.48083662e-02 8.47931170e-02 8.47778760e-02 8.47626432e-02 8.47474187e-02 + 8.47322023e-02 8.47169941e-02 8.47017941e-02 8.46866023e-02 8.46714187e-02 + 8.46562432e-02 8.46410759e-02 8.46259167e-02 8.46107657e-02 8.45956228e-02 + 8.45804880e-02 8.45653614e-02 8.45502428e-02 8.45351324e-02 8.45200301e-02 + 8.45049358e-02 8.44898497e-02 8.44747716e-02 8.44597016e-02 8.44446397e-02 + 8.44295858e-02 8.44145399e-02 8.43995021e-02 8.43844724e-02 8.43694506e-02 + 8.43544369e-02 8.43394312e-02 8.43244335e-02 8.43094438e-02 8.42944621e-02 + 8.42794883e-02 8.42645226e-02 8.42495648e-02 8.42346150e-02 8.42196731e-02 + 8.42047392e-02 8.41898132e-02 8.41748952e-02 8.41599851e-02 8.41450829e-02 + 8.41301886e-02 8.41153022e-02 8.41004238e-02 8.40855532e-02 8.40706905e-02 + 8.40558357e-02 8.40409887e-02 8.40261496e-02 8.40113184e-02 8.39964950e-02 + 8.39816795e-02 8.39668718e-02 8.39520719e-02 8.39372799e-02 8.39224957e-02 + 8.39077193e-02 8.38929507e-02 8.38781898e-02 8.38634368e-02 8.38486916e-02 + 8.38339541e-02 8.38192244e-02 8.38045025e-02 8.37897883e-02 8.37750818e-02 + 8.37603831e-02 8.37456922e-02 8.37310089e-02 8.37163334e-02 8.37016656e-02 + 8.36870055e-02 8.36723531e-02 8.36577084e-02 8.36430714e-02 8.36284421e-02 + 8.36138204e-02 8.35992064e-02 8.35846001e-02 8.35700014e-02 8.35554104e-02 + 8.35408270e-02 8.35262512e-02 8.35116831e-02 8.34971226e-02 8.34825697e-02 + 8.34680244e-02 8.34534867e-02 8.34389566e-02 8.34244341e-02 8.34099191e-02 + 8.33954118e-02 8.33809120e-02 8.33664197e-02 8.33519351e-02 8.33374579e-02 + 8.33229883e-02 8.33085263e-02 8.32940718e-02 8.32796248e-02 8.32651853e-02 + 8.32507533e-02 8.32363288e-02 8.32219118e-02 8.32075023e-02 8.31931003e-02 + 8.31787058e-02 8.31643187e-02 8.31499391e-02 8.31355669e-02 8.31212022e-02 + 8.31068450e-02 8.30924951e-02 8.30781528e-02 8.30638178e-02 8.30494902e-02 + 8.30351701e-02 8.30208574e-02 8.30065520e-02 8.29922541e-02 8.29779635e-02 + 8.29636804e-02 8.29494046e-02 8.29351361e-02 8.29208751e-02 8.29066213e-02 + 8.28923750e-02 8.28781359e-02 8.28639042e-02 8.28496799e-02 8.28354628e-02 + 8.28212531e-02 8.28070507e-02 8.27928556e-02 8.27786678e-02 8.27644872e-02 + 8.27503140e-02 8.27361480e-02 8.27219893e-02 8.27078379e-02 8.26936938e-02 + 8.26795569e-02 8.26654272e-02 8.26513048e-02 8.26371896e-02 8.26230816e-02 + 8.26089809e-02 8.25948874e-02 8.25808011e-02 8.25667220e-02 8.25526501e-02 + 8.25385854e-02 8.25245279e-02 8.25104775e-02 8.24964344e-02 8.24823984e-02 + 8.24683695e-02 8.24543479e-02 8.24403333e-02 8.24263259e-02 8.24123257e-02 + 8.23983326e-02 8.23843466e-02 8.23703677e-02 8.23563960e-02 8.23424313e-02 + 8.23284737e-02 8.23145233e-02 8.23005799e-02 8.22866436e-02 8.22727144e-02 + 8.22587923e-02 8.22448772e-02 8.22309692e-02 8.22170683e-02 8.22031744e-02 + 8.21892875e-02 8.21754077e-02 8.21615349e-02 8.21476691e-02 8.21338103e-02 + 8.21199586e-02 8.21061138e-02 8.20922761e-02 8.20784453e-02 8.20646216e-02 + 8.20508048e-02 8.20369950e-02 8.20231922e-02 8.20093963e-02 8.19956074e-02 + 8.19818254e-02 8.19680504e-02 8.19542823e-02 8.19405212e-02 8.19267670e-02 + 8.19130197e-02 8.18992794e-02 8.18855459e-02 8.18718194e-02 8.18580997e-02 + 8.18443870e-02 8.18306811e-02 8.18169822e-02 8.18032901e-02 8.17896048e-02 + 8.17759265e-02 8.17622550e-02 8.17485903e-02 8.17349326e-02 8.17212816e-02 + 8.17076375e-02 8.16940002e-02 8.16803697e-02 8.16667461e-02 8.16531293e-02 + 8.16395193e-02 8.16259161e-02 8.16123197e-02 8.15987300e-02 8.15851472e-02 + 8.15715712e-02 8.15580019e-02 8.15444394e-02 8.15308836e-02 8.15173346e-02 + 8.15037924e-02 8.14902569e-02 8.14767282e-02 8.14632062e-02 8.14496909e-02 + 8.14361823e-02 8.14226805e-02 8.14091854e-02 8.13956970e-02 8.13822153e-02 + 8.13687402e-02 8.13552719e-02 8.13418103e-02 8.13283553e-02 8.13149070e-02 + 8.13014654e-02 8.12880305e-02 8.12746022e-02 8.12611805e-02 8.12477656e-02 + 8.12343572e-02 8.12209555e-02 8.12075604e-02 8.11941719e-02 8.11807901e-02 + 8.11674149e-02 8.11540463e-02 8.11406843e-02 8.11273288e-02 8.11139800e-02 + 8.11006378e-02 8.10873021e-02 8.10739731e-02 8.10606506e-02 8.10473346e-02 + 8.10340252e-02 8.10207224e-02 8.10074261e-02 8.09941364e-02 8.09808532e-02 + 8.09675765e-02 8.09543064e-02 8.09410428e-02 8.09277857e-02 8.09145351e-02 + 8.09012911e-02 8.08880535e-02 8.08748224e-02 8.08615978e-02 8.08483797e-02 + 8.08351681e-02 8.08219630e-02 8.08087643e-02 8.07955721e-02 8.07823863e-02 + 8.07692070e-02 8.07560342e-02 8.07428678e-02 8.07297078e-02 8.07165542e-02 + 8.07034071e-02 8.06902664e-02 8.06771322e-02 8.06640043e-02 8.06508829e-02 + 8.06377678e-02 8.06246592e-02 8.06115569e-02 8.05984610e-02 8.05853715e-02 + 8.05722884e-02 8.05592116e-02 8.05461412e-02 8.05330772e-02 8.05200195e-02 + 8.05069682e-02 8.04939232e-02 8.04808846e-02 8.04678523e-02 8.04548263e-02 + 8.04418066e-02 8.04287933e-02 8.04157863e-02 8.04027856e-02 8.03897912e-02 + 8.03768031e-02 8.03638212e-02 8.03508457e-02 8.03378765e-02 8.03249135e-02 + 8.03119568e-02 8.02990064e-02 8.02860622e-02 8.02731243e-02 8.02601926e-02 + 8.02472672e-02 8.02343481e-02 8.02214351e-02 8.02085284e-02 8.01956280e-02 + 8.01827337e-02 8.01698457e-02 8.01569639e-02 8.01440883e-02 8.01312189e-02 + 8.01183557e-02 8.01054986e-02 8.00926478e-02 8.00798032e-02 8.00669647e-02 + 8.00541324e-02 8.00413063e-02 8.00284863e-02 8.00156725e-02 8.00028649e-02 + 7.99900634e-02 7.99772680e-02 7.99644788e-02 7.99516957e-02 7.99389187e-02 + 7.99261479e-02 7.99133832e-02 7.99006246e-02 7.98878721e-02 7.98751257e-02 + 7.98623854e-02 7.98496512e-02 7.98369231e-02 7.98242011e-02 7.98114851e-02 + 7.97987753e-02 7.97860715e-02 7.97733737e-02 7.97606821e-02 7.97479965e-02 + 7.97353169e-02 7.97226434e-02 7.97099759e-02 7.96973145e-02 7.96846590e-02 + 7.96720097e-02 7.96593663e-02 7.96467290e-02 7.96340976e-02 7.96214723e-02 + 7.96088530e-02 7.95962397e-02 7.95836323e-02 7.95710310e-02 7.95584356e-02 + 7.95458463e-02 7.95332629e-02 7.95206854e-02 7.95081140e-02 7.94955485e-02 + 7.94829889e-02 7.94704353e-02 7.94578877e-02 7.94453459e-02 7.94328102e-02 + 7.94202803e-02 7.94077564e-02 7.93952384e-02 7.93827263e-02 7.93702202e-02 + 7.93577199e-02 7.93452256e-02 7.93327371e-02 7.93202546e-02 7.93077779e-02 + 7.92953071e-02 7.92828423e-02 7.92703832e-02 7.92579301e-02 7.92454828e-02 + 7.92330414e-02 7.92206058e-02 7.92081761e-02 7.91957523e-02 7.91833343e-02 + 7.91709221e-02 7.91585157e-02 7.91461152e-02 7.91337206e-02 7.91213317e-02 + 7.91089486e-02 7.90965714e-02 7.90842000e-02 7.90718344e-02 7.90594746e-02 + 7.90471205e-02 7.90347723e-02 7.90224298e-02 7.90100932e-02 7.89977623e-02 + 7.89854371e-02 7.89731178e-02 7.89608042e-02 7.89484964e-02 7.89361943e-02 + 7.89238979e-02 7.89116073e-02 7.88993225e-02 7.88870434e-02 7.88747700e-02 + 7.88625023e-02 7.88502404e-02 7.88379842e-02 7.88257337e-02 7.88134889e-02 + 7.88012498e-02 7.87890164e-02 7.87767887e-02 7.87645667e-02 7.87523504e-02 + 7.87401398e-02 7.87279348e-02 7.87157355e-02 7.87035419e-02 7.86913540e-02 + 7.86791717e-02 7.86669951e-02 7.86548241e-02 7.86426588e-02 7.86304991e-02 + 7.86183450e-02 7.86061966e-02 7.85940538e-02 7.85819167e-02 7.85697851e-02 + 7.85576592e-02 7.85455389e-02 7.85334242e-02 7.85213151e-02 7.85092116e-02 + 7.84971137e-02 7.84850214e-02 7.84729347e-02 7.84608535e-02 7.84487780e-02 + 7.84367080e-02 7.84246436e-02 7.84125847e-02 7.84005314e-02 7.83884837e-02 + 7.83764415e-02 7.83644048e-02 7.83523737e-02 7.83403482e-02 7.83283282e-02 + 7.83163137e-02 7.83043047e-02 7.82923013e-02 7.82803034e-02 7.82683110e-02 + 7.82563241e-02 7.82443427e-02 7.82323668e-02 7.82203964e-02 7.82084315e-02 + 7.81964721e-02 7.81845182e-02 7.81725697e-02 7.81606268e-02 7.81486893e-02 + 7.81367572e-02 7.81248307e-02 7.81129096e-02 7.81009939e-02 7.80890837e-02 + 7.80771790e-02 7.80652797e-02 7.80533858e-02 7.80414974e-02 7.80296144e-02 + 7.80177368e-02 7.80058646e-02 7.79939979e-02 7.79821366e-02 7.79702807e-02 + 7.79584302e-02 7.79465851e-02 7.79347454e-02 7.79229111e-02 7.79110821e-02 + 7.78992586e-02 7.78874404e-02 7.78756277e-02 7.78638202e-02 7.78520182e-02 + 7.78402215e-02 7.78284302e-02 7.78166443e-02 7.78048637e-02 7.77930884e-02 + 7.77813185e-02 7.77695539e-02 7.77577947e-02 7.77460408e-02 7.77342922e-02 + 7.77225490e-02 7.77108111e-02 7.76990785e-02 7.76873512e-02 7.76756292e-02 + 7.76639125e-02 7.76522011e-02 7.76404950e-02 7.76287942e-02 7.76170987e-02 + 7.76054085e-02 7.75937236e-02 7.75820439e-02 7.75703695e-02 7.75587004e-02 + 7.75470365e-02 7.75353780e-02 7.75237246e-02 7.75120765e-02 7.75004337e-02 + 7.74887961e-02 7.74771637e-02 7.74655366e-02 7.74539147e-02 7.74422981e-02 + 7.74306867e-02 7.74190805e-02 7.74074795e-02 7.73958837e-02 7.73842931e-02 + 7.73727078e-02 7.73611276e-02 7.73495527e-02 7.73379829e-02 7.73264183e-02 + 7.73148589e-02 7.73033047e-02 7.72917557e-02 7.72802118e-02 7.72686732e-02 + 7.72571396e-02 7.72456113e-02 7.72340881e-02 7.72225701e-02 7.72110572e-02 + 7.71995494e-02 7.71880468e-02 7.71765494e-02 7.71650571e-02 7.71535699e-02 + 7.71420878e-02 7.71306109e-02 7.71191391e-02 7.71076724e-02 7.70962108e-02 + 7.70847543e-02 7.70733030e-02 7.70618567e-02 7.70504155e-02 7.70389795e-02 + 7.70275485e-02 7.70161226e-02 7.70047018e-02 7.69932860e-02 7.69818754e-02 + 7.69704698e-02 7.69590693e-02 7.69476738e-02 7.69362834e-02 7.69248981e-02 + 7.69135178e-02 7.69021426e-02 7.68907724e-02 7.68794073e-02 7.68680472e-02 + 7.68566921e-02 7.68453420e-02 7.68339970e-02 7.68226570e-02 7.68113221e-02 + 7.67999921e-02 7.67886672e-02 7.67773472e-02 7.67660323e-02 7.67547224e-02 + 7.67434174e-02 7.67321175e-02 7.67208226e-02 7.67095326e-02 7.66982476e-02 + 7.66869676e-02 7.66756926e-02 7.66644225e-02 7.66531574e-02 7.66418973e-02 + 7.66306422e-02 7.66193920e-02 7.66081467e-02 7.65969064e-02 7.65856711e-02 + 7.65744407e-02 7.65632152e-02 7.65519946e-02 7.65407790e-02 7.65295684e-02 + 7.65183626e-02 7.65071618e-02 7.64959659e-02 7.64847749e-02 7.64735888e-02 + 7.64624076e-02 7.64512313e-02 7.64400599e-02 7.64288935e-02 7.64177319e-02 + 7.64065752e-02 7.63954233e-02 7.63842764e-02 7.63731343e-02 7.63619972e-02 + 7.63508648e-02 7.63397374e-02 7.63286148e-02 7.63174971e-02 7.63063842e-02 + 7.62952762e-02 7.62841730e-02 7.62730747e-02 7.62619813e-02 7.62508926e-02 + 7.62398088e-02 7.62287298e-02 7.62176557e-02 7.62065864e-02 7.61955219e-02 + 7.61844622e-02 7.61734074e-02 7.61623573e-02 7.61513121e-02 7.61402716e-02 + 7.61292360e-02 7.61182052e-02 7.61071791e-02 7.60961579e-02 7.60851414e-02 + 7.60741297e-02 7.60631228e-02 7.60521207e-02 7.60411233e-02 7.60301307e-02 + 7.60191429e-02 7.60081598e-02 7.59971815e-02 7.59862080e-02 7.59752392e-02 + 7.59642751e-02 7.59533158e-02 7.59423613e-02 7.59314115e-02 7.59204664e-02 + 7.59095260e-02 7.58985904e-02 7.58876595e-02 7.58767333e-02 7.58658119e-02 + 7.58548951e-02 7.58439831e-02 7.58330758e-02 7.58221731e-02 7.58112752e-02 + 7.58003820e-02 7.57894935e-02 7.57786096e-02 7.57677305e-02 7.57568560e-02 + 7.57459862e-02 7.57351211e-02 7.57242607e-02 7.57134049e-02 7.57025538e-02 + 7.56917074e-02 7.56808656e-02 7.56700285e-02 7.56591961e-02 7.56483683e-02 + 7.56375451e-02 7.56267266e-02 7.56159127e-02 7.56051035e-02 7.55942989e-02 + 7.55834989e-02 7.55727035e-02 7.55619128e-02 7.55511267e-02 7.55403452e-02 + 7.55295684e-02 7.55187961e-02 7.55080285e-02 7.54972654e-02 7.54865070e-02 + 7.54757531e-02 7.54650039e-02 7.54542592e-02 7.54435192e-02 7.54327837e-02 + 7.54220528e-02 7.54113264e-02 7.54006047e-02 7.53898875e-02 7.53791749e-02 + 7.53684669e-02 7.53577634e-02 7.53470644e-02 7.53363701e-02 7.53256803e-02 + 7.53149950e-02 7.53043143e-02 7.52936381e-02 7.52829665e-02 7.52722994e-02 + 7.52616368e-02 7.52509787e-02 7.52403252e-02 7.52296762e-02 7.52190318e-02 + 7.52083918e-02 7.51977564e-02 7.51871255e-02 7.51764990e-02 7.51658771e-02 + 7.51552597e-02 7.51446468e-02 7.51340384e-02 7.51234344e-02 7.51128350e-02 + 7.51022400e-02 7.50916496e-02 7.50810636e-02 7.50704821e-02 7.50599050e-02 + 7.50493324e-02 7.50387643e-02 7.50282007e-02 7.50176415e-02 7.50070868e-02 + 7.49965365e-02 7.49859907e-02 7.49754493e-02 7.49649123e-02 7.49543799e-02 + 7.49438518e-02 7.49333282e-02 7.49228090e-02 7.49122942e-02 7.49017839e-02 + 7.48912780e-02 7.48807765e-02 7.48702794e-02 7.48597868e-02 7.48492985e-02 + 7.48388147e-02 7.48283352e-02 7.48178602e-02 7.48073895e-02 7.47969233e-02 + 7.47864614e-02 7.47760040e-02 7.47655509e-02 7.47551022e-02 7.47446579e-02 + 7.47342179e-02 7.47237824e-02 7.47133512e-02 7.47029243e-02 7.46925019e-02 + 7.46820838e-02 7.46716700e-02 7.46612606e-02 7.46508556e-02 7.46404549e-02 + 7.46300586e-02 7.46196666e-02 7.46092789e-02 7.45988956e-02 7.45885166e-02 + 7.45781419e-02 7.45677716e-02 7.45574056e-02 7.45470439e-02 7.45366865e-02 + 7.45263335e-02 7.45159847e-02 7.45056403e-02 7.44953002e-02 7.44849644e-02 + 7.44746329e-02 7.44643056e-02 7.44539827e-02 7.44436641e-02 7.44333497e-02 + 7.44230397e-02 7.44127339e-02 7.44024324e-02 7.43921352e-02 7.43818423e-02 + 7.43715536e-02 7.43612692e-02 7.43509890e-02 7.43407132e-02 7.43304416e-02 + 7.43201742e-02 7.43099111e-02 7.42996522e-02 7.42893976e-02 7.42791473e-02 + 7.42689011e-02 7.42586593e-02 7.42484216e-02 7.42381882e-02 7.42279590e-02 + 7.42177341e-02 7.42075133e-02 7.41972968e-02 7.41870845e-02 7.41768765e-02 + 7.41666726e-02 7.41564729e-02 7.41462775e-02 7.41360863e-02 7.41258992e-02 + 7.41157164e-02 7.41055377e-02 7.40953633e-02 7.40851930e-02 7.40750269e-02 + 7.40648650e-02 7.40547073e-02 7.40445538e-02 7.40344044e-02 7.40242592e-02 + 7.40141182e-02 7.40039814e-02 7.39938487e-02 7.39837202e-02 7.39735958e-02 + 7.39634756e-02 7.39533595e-02 7.39432476e-02 7.39331398e-02 7.39230362e-02 + 7.39129367e-02 7.39028414e-02 7.38927502e-02 7.38826631e-02 7.38725802e-02 + 7.38625014e-02 7.38524267e-02 7.38423561e-02 7.38322896e-02 7.38222273e-02 + 7.38121691e-02 7.38021150e-02 7.37920650e-02 7.37820191e-02 7.37719773e-02 + 7.37619396e-02 7.37519060e-02 7.37418765e-02 7.37318510e-02 7.37218297e-02 + 7.37118125e-02 7.37017993e-02 7.36917902e-02 7.36817852e-02 7.36717843e-02 + 7.36617874e-02 7.36517946e-02 7.36418059e-02 7.36318212e-02 7.36218406e-02 + 7.36118641e-02 7.36018916e-02 7.35919231e-02 7.35819587e-02 7.35719984e-02 + 7.35620421e-02 7.35520898e-02 7.35421416e-02 7.35321974e-02 7.35222572e-02 + 7.35123211e-02 7.35023890e-02 7.34924610e-02 7.34825369e-02 7.34726169e-02 + 7.34627009e-02 7.34527889e-02 7.34428809e-02 7.34329769e-02 7.34230769e-02 + 7.34131809e-02 7.34032890e-02 7.33934010e-02 7.33835170e-02 7.33736370e-02 + 7.33637610e-02 7.33538890e-02 7.33440210e-02 7.33341569e-02 7.33242969e-02 + 7.33144408e-02 7.33045886e-02 7.32947405e-02 7.32848963e-02 7.32750561e-02 + 7.32652199e-02 7.32553876e-02 7.32455592e-02 7.32357348e-02 7.32259144e-02 + 7.32160979e-02 7.32062854e-02 7.31964768e-02 7.31866722e-02 7.31768715e-02 + 7.31670747e-02 7.31572819e-02 7.31474930e-02 7.31377080e-02 7.31279269e-02 + 7.31181498e-02 7.31083766e-02 7.30986073e-02 7.30888419e-02 7.30790805e-02 + 7.30693229e-02 7.30595693e-02 7.30498195e-02 7.30400737e-02 7.30303318e-02 + 7.30205937e-02 7.30108596e-02 7.30011293e-02 7.29914030e-02 7.29816805e-02 + 7.29719619e-02 7.29622472e-02 7.29525364e-02 7.29428294e-02 7.29331263e-02 + 7.29234271e-02 7.29137318e-02 7.29040403e-02 7.28943527e-02 7.28846689e-02 + 7.28749890e-02 7.28653130e-02 7.28556408e-02 7.28459725e-02 7.28363080e-02 + 7.28266473e-02 7.28169905e-02 7.28073376e-02 7.27976885e-02 7.27880432e-02 + 7.27784017e-02 7.27687641e-02 7.27591303e-02 7.27495003e-02 7.27398742e-02 + 7.27302519e-02 7.27206334e-02 7.27110187e-02 7.27014078e-02 7.26918007e-02 + 7.26821975e-02 7.26725980e-02 7.26630023e-02 7.26534105e-02 7.26438224e-02 + 7.26342382e-02 7.26246577e-02 7.26150810e-02 7.26055081e-02 7.25959390e-02 + 7.25863737e-02 7.25768121e-02 7.25672544e-02 7.25577004e-02 7.25481502e-02 + 7.25386037e-02 7.25290610e-02 7.25195221e-02 7.25099870e-02 7.25004556e-02 + 7.24909279e-02 7.24814040e-02 7.24718839e-02 7.24623675e-02 7.24528549e-02 + 7.24433460e-02 7.24338409e-02 7.24243395e-02 7.24148418e-02 7.24053479e-02 + 7.23958577e-02 7.23863712e-02 7.23768885e-02 7.23674095e-02 7.23579342e-02 + 7.23484626e-02 7.23389948e-02 7.23295307e-02 7.23200702e-02 7.23106135e-02 + 7.23011605e-02 7.22917112e-02 7.22822656e-02 7.22728238e-02 7.22633856e-02 + 7.22539511e-02 7.22445203e-02 7.22350932e-02 7.22256698e-02 7.22162500e-02 + 7.22068340e-02 7.21974216e-02 7.21880130e-02 7.21786080e-02 7.21692066e-02 + 7.21598090e-02 7.21504150e-02 7.21410247e-02 7.21316380e-02 7.21222550e-02 + 7.21128757e-02 7.21035000e-02 7.20941280e-02 7.20847596e-02 7.20753949e-02 + 7.20660339e-02 7.20566765e-02 7.20473227e-02 7.20379726e-02 7.20286261e-02 + 7.20192832e-02 7.20099440e-02 7.20006084e-02 7.19912765e-02 7.19819481e-02 + 7.19726234e-02 7.19633024e-02 7.19539849e-02 7.19446711e-02 7.19353608e-02 + 7.19260542e-02 7.19167512e-02 7.19074518e-02 7.18981560e-02 7.18888639e-02 + 7.18795753e-02 7.18702903e-02 7.18610089e-02 7.18517311e-02 7.18424569e-02 + 7.18331863e-02 7.18239193e-02 7.18146559e-02 7.18053960e-02 7.17961398e-02 + 7.17868871e-02 7.17776380e-02 7.17683924e-02 7.17591505e-02 7.17499121e-02 + 7.17406772e-02 7.17314460e-02 7.17222183e-02 7.17129941e-02 7.17037735e-02 + 7.16945565e-02 7.16853430e-02 7.16761331e-02 7.16669267e-02 7.16577239e-02 + 7.16485246e-02 7.16393289e-02 7.16301367e-02 7.16209480e-02 7.16117629e-02 + 7.16025813e-02 7.15934032e-02 7.15842287e-02 7.15750577e-02 7.15658902e-02 + 7.15567262e-02 7.15475658e-02 7.15384089e-02 7.15292555e-02 7.15201056e-02 + 7.15109592e-02 7.15018163e-02 7.14926769e-02 7.14835410e-02 7.14744087e-02 + 7.14652798e-02 7.14561544e-02 7.14470325e-02 7.14379142e-02 7.14287993e-02 + 7.14196878e-02 7.14105799e-02 7.14014755e-02 7.13923745e-02 7.13832770e-02 + 7.13741830e-02 7.13650925e-02 7.13560055e-02 7.13469219e-02 7.13378418e-02 + 7.13287651e-02 7.13196919e-02 7.13106222e-02 7.13015559e-02 7.12924931e-02 + 7.12834338e-02 7.12743779e-02 7.12653254e-02 7.12562764e-02 7.12472309e-02 + 7.12381888e-02 7.12291501e-02 7.12201149e-02 7.12110831e-02 7.12020547e-02 + 7.11930298e-02 7.11840083e-02 7.11749902e-02 7.11659756e-02 7.11569644e-02 + 7.11479566e-02 7.11389522e-02 7.11299512e-02 7.11209537e-02 7.11119596e-02 + 7.11029689e-02 7.10939816e-02 7.10849977e-02 7.10760172e-02 7.10670401e-02 + 7.10580664e-02 7.10490961e-02 7.10401292e-02 7.10311657e-02 7.10222056e-02 + 7.10132489e-02 7.10042956e-02 7.09953456e-02 7.09863990e-02 7.09774559e-02 + 7.09685161e-02 7.09595796e-02 7.09506466e-02 7.09417169e-02 7.09327906e-02 + 7.09238677e-02 7.09149481e-02 7.09060319e-02 7.08971191e-02 7.08882096e-02 + 7.08793035e-02 7.08704007e-02 7.08615013e-02 7.08526052e-02 7.08437125e-02 + 7.08348231e-02 7.08259371e-02 7.08170544e-02 7.08081751e-02 7.07992991e-02 + 7.07904264e-02 7.07815571e-02 7.07726911e-02 7.07638285e-02 7.07549691e-02 + 7.07461131e-02 7.07372604e-02 7.07284111e-02 7.07195650e-02 7.07107223e-02 + 7.07018829e-02 7.06930468e-02 7.06842141e-02 7.06753846e-02 7.06665584e-02 + 7.06577356e-02 7.06489160e-02 7.06400998e-02 7.06312868e-02 7.06224772e-02 + 7.06136708e-02 7.06048678e-02 7.05960680e-02 7.05872715e-02 7.05784783e-02 + 7.05696884e-02 7.05609018e-02 7.05521184e-02 7.05433384e-02 7.05345616e-02 + 1.00000000e+00 9.75894263e-01 9.53451752e-01 9.32489601e-01 9.12851907e-01 + 8.94404826e-01 8.77032714e-01 8.60635068e-01 8.45124065e-01 8.30422576e-01 + 8.16462554e-01 8.03183696e-01 7.90532350e-01 7.78460602e-01 7.66925506e-01 + 7.55888443e-01 7.45314577e-01 7.35172390e-01 7.25433287e-01 7.16071258e-01 + 7.07062580e-01 6.98385572e-01 6.90020370e-01 6.81948734e-01 6.74153887e-01 + 6.66620364e-01 6.59333880e-01 6.52281224e-01 6.45450150e-01 6.38829295e-01 + 6.32408091e-01 6.26176704e-01 6.20125961e-01 6.14247300e-01 6.08532716e-01 + 6.02974715e-01 5.97566276e-01 5.92300808e-01 5.87172122e-01 5.82174396e-01 + 5.77302151e-01 5.72550221e-01 5.67913735e-01 5.63388093e-01 5.58968948e-01 + 5.54652188e-01 5.50433918e-01 5.46310451e-01 5.42278287e-01 5.38334105e-01 + 5.34474753e-01 5.30697232e-01 5.26998691e-01 5.23376415e-01 5.19827818e-01 + 5.16350438e-01 5.12941922e-01 5.09600027e-01 5.06322612e-01 5.03107629e-01 + 4.99953120e-01 4.96857213e-01 4.93818117e-01 4.90834114e-01 4.87903560e-01 + 4.85024878e-01 4.82196556e-01 4.79417141e-01 4.76685242e-01 4.73999519e-01 + 4.71358685e-01 4.68761505e-01 4.66206788e-01 4.63693390e-01 4.61220209e-01 + 4.58786184e-01 4.56390292e-01 4.54031548e-01 4.51709002e-01 4.49421737e-01 + 4.47168870e-01 4.44949545e-01 4.42762941e-01 4.40608259e-01 4.38484731e-01 + 4.36391613e-01 4.34328187e-01 4.32293756e-01 4.30287649e-01 4.28309213e-01 + 4.26357819e-01 4.24432857e-01 4.22533734e-01 4.20659877e-01 4.18810733e-01 + 4.16985761e-01 4.15184441e-01 4.13406264e-01 4.11650741e-01 4.09917394e-01 + 4.08205761e-01 4.06515390e-01 4.04845847e-01 4.03196706e-01 4.01567556e-01 + 3.99957996e-01 3.98367636e-01 3.96796098e-01 3.95243014e-01 3.93708024e-01 + 3.92190780e-01 3.90690944e-01 3.89208184e-01 3.87742180e-01 3.86292617e-01 + 3.84859191e-01 3.83441605e-01 3.82039569e-01 3.80652800e-01 3.79281024e-01 + 3.77923973e-01 3.76581385e-01 3.75253005e-01 3.73938583e-01 3.72637878e-01 + 3.71350652e-01 3.70076675e-01 3.68815719e-01 3.67567566e-01 3.66332000e-01 + 3.65108810e-01 3.63897792e-01 3.62698745e-01 3.61511473e-01 3.60335785e-01 + 3.59171493e-01 3.58018415e-01 3.56876371e-01 3.55745187e-01 3.54624691e-01 + 3.53514717e-01 3.52415101e-01 3.51325683e-01 3.50246306e-01 3.49176816e-01 + 3.48117064e-01 3.47066903e-01 3.46026189e-01 3.44994782e-01 3.43972542e-01 + 3.42959337e-01 3.41955032e-01 3.40959498e-01 3.39972609e-01 3.38994241e-01 + 3.38024270e-01 3.37062579e-01 3.36109049e-01 3.35163566e-01 3.34226018e-01 + 3.33296293e-01 3.32374284e-01 3.31459885e-01 3.30552992e-01 3.29653502e-01 + 3.28761315e-01 3.27876333e-01 3.26998460e-01 3.26127600e-01 3.25263662e-01 + 3.24406553e-01 3.23556184e-01 3.22712468e-01 3.21875318e-01 3.21044649e-01 + 3.20220378e-01 3.19402424e-01 3.18590706e-01 3.17785145e-01 3.16985665e-01 + 3.16192188e-01 3.15404639e-01 3.14622947e-01 3.13847038e-01 3.13076841e-01 + 3.12312287e-01 3.11553306e-01 3.10799833e-01 3.10051800e-01 3.09309142e-01 + 3.08571795e-01 3.07839697e-01 3.07112784e-01 3.06390997e-01 3.05674275e-01 + 3.04962560e-01 3.04255793e-01 3.03553917e-01 3.02856876e-01 3.02164615e-01 + 3.01477079e-01 3.00794216e-01 3.00115971e-01 2.99442294e-01 2.98773134e-01 + 2.98108439e-01 2.97448161e-01 2.96792252e-01 2.96140662e-01 2.95493345e-01 + 2.94850254e-01 2.94211344e-01 2.93576570e-01 2.92945886e-01 2.92319250e-01 + 2.91696618e-01 2.91077947e-01 2.90463197e-01 2.89852325e-01 2.89245291e-01 + 2.88642055e-01 2.88042577e-01 2.87446820e-01 2.86854743e-01 2.86266311e-01 + 2.85681484e-01 2.85100228e-01 2.84522505e-01 2.83948280e-01 2.83377517e-01 + 2.82810183e-01 2.82246243e-01 2.81685662e-01 2.81128409e-01 2.80574450e-01 + 2.80023753e-01 2.79476286e-01 2.78932017e-01 2.78390916e-01 2.77852951e-01 + 2.77318094e-01 2.76786313e-01 2.76257580e-01 2.75731865e-01 2.75209140e-01 + 2.74689377e-01 2.74172548e-01 2.73658625e-01 2.73147581e-01 2.72639389e-01 + 2.72134024e-01 2.71631458e-01 2.71131667e-01 2.70634624e-01 2.70140305e-01 + 2.69648684e-01 2.69159738e-01 2.68673442e-01 2.68189772e-01 2.67708706e-01 + 2.67230218e-01 2.66754287e-01 2.66280890e-01 2.65810005e-01 2.65341608e-01 + 2.64875680e-01 2.64412197e-01 2.63951138e-01 2.63492483e-01 2.63036211e-01 + 2.62582301e-01 2.62130732e-01 2.61681486e-01 2.61234541e-01 2.60789879e-01 + 2.60347479e-01 2.59907323e-01 2.59469393e-01 2.59033668e-01 2.58600131e-01 + 2.58168764e-01 2.57739549e-01 2.57312467e-01 2.56887501e-01 2.56464633e-01 + 2.56043847e-01 2.55625126e-01 2.55208452e-01 2.54793809e-01 2.54381180e-01 + 2.53970550e-01 2.53561902e-01 2.53155220e-01 2.52750489e-01 2.52347693e-01 + 2.51946816e-01 2.51547844e-01 2.51150761e-01 2.50755553e-01 2.50362204e-01 + 2.49970701e-01 2.49581029e-01 2.49193173e-01 2.48807120e-01 2.48422856e-01 + 2.48040367e-01 2.47659639e-01 2.47280658e-01 2.46903413e-01 2.46527888e-01 + 2.46154072e-01 2.45781951e-01 2.45411513e-01 2.45042745e-01 2.44675634e-01 + 2.44310168e-01 2.43946335e-01 2.43584122e-01 2.43223518e-01 2.42864511e-01 + 2.42507089e-01 2.42151241e-01 2.41796954e-01 2.41444218e-01 2.41093021e-01 + 2.40743352e-01 2.40395201e-01 2.40048555e-01 2.39703404e-01 2.39359739e-01 + 2.39017547e-01 2.38676818e-01 2.38337542e-01 2.37999710e-01 2.37663309e-01 + 2.37328332e-01 2.36994766e-01 2.36662603e-01 2.36331833e-01 2.36002446e-01 + 2.35674432e-01 2.35347783e-01 2.35022487e-01 2.34698537e-01 2.34375923e-01 + 2.34054635e-01 2.33734666e-01 2.33416004e-01 2.33098643e-01 2.32782573e-01 + 2.32467784e-01 2.32154270e-01 2.31842020e-01 2.31531028e-01 2.31221283e-01 + 2.30912778e-01 2.30605504e-01 2.30299454e-01 2.29994620e-01 2.29690992e-01 + 2.29388564e-01 2.29087328e-01 2.28787275e-01 2.28488398e-01 2.28190689e-01 + 2.27894141e-01 2.27598746e-01 2.27304497e-01 2.27011386e-01 2.26719406e-01 + 2.26428550e-01 2.26138810e-01 2.25850180e-01 2.25562652e-01 2.25276219e-01 + 2.24990875e-01 2.24706613e-01 2.24423425e-01 2.24141305e-01 2.23860246e-01 + 2.23580243e-01 2.23301287e-01 2.23023372e-01 2.22746493e-01 2.22470643e-01 + 2.22195814e-01 2.21922002e-01 2.21649200e-01 2.21377401e-01 2.21106599e-01 + 2.20836789e-01 2.20567964e-01 2.20300119e-01 2.20033247e-01 2.19767342e-01 + 2.19502400e-01 2.19238413e-01 2.18975376e-01 2.18713284e-01 2.18452130e-01 + 2.18191910e-01 2.17932618e-01 2.17674247e-01 2.17416794e-01 2.17160252e-01 + 2.16904616e-01 2.16649880e-01 2.16396040e-01 2.16143090e-01 2.15891025e-01 + 2.15639840e-01 2.15389530e-01 2.15140089e-01 2.14891513e-01 2.14643796e-01 + 2.14396935e-01 2.14150923e-01 2.13905756e-01 2.13661429e-01 2.13417937e-01 + 2.13175276e-01 2.12933441e-01 2.12692427e-01 2.12452229e-01 2.12212843e-01 + 2.11974265e-01 2.11736490e-01 2.11499513e-01 2.11263330e-01 2.11027936e-01 + 2.10793328e-01 2.10559500e-01 2.10326449e-01 2.10094169e-01 2.09862658e-01 + 2.09631910e-01 2.09401922e-01 2.09172689e-01 2.08944208e-01 2.08716473e-01 + 2.08489481e-01 2.08263229e-01 2.08037711e-01 2.07812924e-01 2.07588865e-01 + 2.07365528e-01 2.07142911e-01 2.06921010e-01 2.06699820e-01 2.06479337e-01 + 2.06259559e-01 2.06040481e-01 2.05822100e-01 2.05604412e-01 2.05387413e-01 + 2.05171099e-01 2.04955468e-01 2.04740515e-01 2.04526237e-01 2.04312630e-01 + 2.04099691e-01 2.03887417e-01 2.03675803e-01 2.03464847e-01 2.03254545e-01 + 2.03044894e-01 2.02835891e-01 2.02627531e-01 2.02419812e-01 2.02212731e-01 + 2.02006284e-01 2.01800468e-01 2.01595280e-01 2.01390716e-01 2.01186774e-01 + 2.00983451e-01 2.00780742e-01 2.00578646e-01 2.00377158e-01 2.00176277e-01 + 1.99975998e-01 1.99776320e-01 1.99577238e-01 1.99378751e-01 1.99180854e-01 + 1.98983546e-01 1.98786822e-01 1.98590681e-01 1.98395120e-01 1.98200135e-01 + 1.98005724e-01 1.97811884e-01 1.97618612e-01 1.97425905e-01 1.97233761e-01 + 1.97042177e-01 1.96851151e-01 1.96660678e-01 1.96470758e-01 1.96281387e-01 + 1.96092562e-01 1.95904281e-01 1.95716541e-01 1.95529341e-01 1.95342676e-01 + 1.95156545e-01 1.94970945e-01 1.94785873e-01 1.94601328e-01 1.94417306e-01 + 1.94233805e-01 1.94050823e-01 1.93868357e-01 1.93686404e-01 1.93504963e-01 + 1.93324031e-01 1.93143606e-01 1.92963685e-01 1.92784265e-01 1.92605345e-01 + 1.92426923e-01 1.92248995e-01 1.92071560e-01 1.91894616e-01 1.91718159e-01 + 1.91542189e-01 1.91366702e-01 1.91191696e-01 1.91017170e-01 1.90843121e-01 + 1.90669546e-01 1.90496445e-01 1.90323814e-01 1.90151652e-01 1.89979956e-01 + 1.89808724e-01 1.89637954e-01 1.89467644e-01 1.89297793e-01 1.89128397e-01 + 1.88959456e-01 1.88790966e-01 1.88622926e-01 1.88455335e-01 1.88288189e-01 + 1.88121487e-01 1.87955227e-01 1.87789407e-01 1.87624025e-01 1.87459079e-01 + 1.87294568e-01 1.87130489e-01 1.86966840e-01 1.86803620e-01 1.86640827e-01 + 1.86478458e-01 1.86316513e-01 1.86154989e-01 1.85993884e-01 1.85833197e-01 + 1.85672925e-01 1.85513068e-01 1.85353622e-01 1.85194587e-01 1.85035961e-01 + 1.84877742e-01 1.84719927e-01 1.84562517e-01 1.84405508e-01 1.84248899e-01 + 1.84092688e-01 1.83936874e-01 1.83781455e-01 1.83626429e-01 1.83471795e-01 + 1.83317551e-01 1.83163695e-01 1.83010226e-01 1.82857142e-01 1.82704442e-01 + 1.82552123e-01 1.82400185e-01 1.82248626e-01 1.82097444e-01 1.81946637e-01 + 1.81796204e-01 1.81646144e-01 1.81496455e-01 1.81347136e-01 1.81198184e-01 + 1.81049599e-01 1.80901378e-01 1.80753522e-01 1.80606027e-01 1.80458892e-01 + 1.80312117e-01 1.80165699e-01 1.80019637e-01 1.79873930e-01 1.79728576e-01 + 1.79583574e-01 1.79438922e-01 1.79294620e-01 1.79150665e-01 1.79007056e-01 + 1.78863792e-01 1.78720871e-01 1.78578292e-01 1.78436054e-01 1.78294156e-01 + 1.78152595e-01 1.78011371e-01 1.77870482e-01 1.77729928e-01 1.77589706e-01 + 1.77449815e-01 1.77310255e-01 1.77171023e-01 1.77032119e-01 1.76893540e-01 + 1.76755287e-01 1.76617358e-01 1.76479751e-01 1.76342465e-01 1.76205499e-01 + 1.76068851e-01 1.75932521e-01 1.75796507e-01 1.75660808e-01 1.75525423e-01 + 1.75390351e-01 1.75255589e-01 1.75121138e-01 1.74986996e-01 1.74853162e-01 + 1.74719634e-01 1.74586412e-01 1.74453494e-01 1.74320879e-01 1.74188566e-01 + 1.74056554e-01 1.73924842e-01 1.73793428e-01 1.73662312e-01 1.73531492e-01 + 1.73400967e-01 1.73270736e-01 1.73140798e-01 1.73011152e-01 1.72881797e-01 + 1.72752732e-01 1.72623955e-01 1.72495466e-01 1.72367263e-01 1.72239346e-01 + 1.72111713e-01 1.71984363e-01 1.71857296e-01 1.71730510e-01 1.71604004e-01 + 1.71477777e-01 1.71351828e-01 1.71226157e-01 1.71100761e-01 1.70975641e-01 + 1.70850795e-01 1.70726222e-01 1.70601921e-01 1.70477891e-01 1.70354131e-01 + 1.70230640e-01 1.70107418e-01 1.69984462e-01 1.69861773e-01 1.69739349e-01 + 1.69617190e-01 1.69495294e-01 1.69373660e-01 1.69252288e-01 1.69131176e-01 + 1.69010324e-01 1.68889731e-01 1.68769395e-01 1.68649317e-01 1.68529494e-01 + 1.68409926e-01 1.68290613e-01 1.68171552e-01 1.68052744e-01 1.67934188e-01 + 1.67815882e-01 1.67697825e-01 1.67580018e-01 1.67462458e-01 1.67345146e-01 + 1.67228079e-01 1.67111258e-01 1.66994682e-01 1.66878349e-01 1.66762259e-01 + 1.66646411e-01 1.66530804e-01 1.66415437e-01 1.66300309e-01 1.66185421e-01 + 1.66070770e-01 1.65956356e-01 1.65842178e-01 1.65728235e-01 1.65614527e-01 + 1.65501053e-01 1.65387812e-01 1.65274803e-01 1.65162025e-01 1.65049477e-01 + 1.64937160e-01 1.64825071e-01 1.64713211e-01 1.64601578e-01 1.64490172e-01 + 1.64378991e-01 1.64268036e-01 1.64157305e-01 1.64046798e-01 1.63936514e-01 + 1.63826452e-01 1.63716611e-01 1.63606991e-01 1.63497591e-01 1.63388409e-01 + 1.63279447e-01 1.63170702e-01 1.63062174e-01 1.62953862e-01 1.62845766e-01 + 1.62737885e-01 1.62630217e-01 1.62522764e-01 1.62415523e-01 1.62308493e-01 + 1.62201676e-01 1.62095069e-01 1.61988671e-01 1.61882483e-01 1.61776504e-01 + 1.61670732e-01 1.61565168e-01 1.61459810e-01 1.61354658e-01 1.61249711e-01 + 1.61144969e-01 1.61040431e-01 1.60936095e-01 1.60831963e-01 1.60728032e-01 + 1.60624302e-01 1.60520773e-01 1.60417444e-01 1.60314314e-01 1.60211383e-01 + 1.60108650e-01 1.60006114e-01 1.59903775e-01 1.59801632e-01 1.59699684e-01 + 1.59597932e-01 1.59496373e-01 1.59395009e-01 1.59293837e-01 1.59192858e-01 + 1.59092070e-01 1.58991474e-01 1.58891068e-01 1.58790852e-01 1.58690826e-01 + 1.58590988e-01 1.58491339e-01 1.58391877e-01 1.58292602e-01 1.58193514e-01 + 1.58094612e-01 1.57995894e-01 1.57897362e-01 1.57799013e-01 1.57700849e-01 + 1.57602867e-01 1.57505067e-01 1.57407450e-01 1.57310013e-01 1.57212758e-01 + 1.57115682e-01 1.57018786e-01 1.56922069e-01 1.56825531e-01 1.56729171e-01 + 1.56632988e-01 1.56536982e-01 1.56441152e-01 1.56345498e-01 1.56250019e-01 + 1.56154715e-01 1.56059585e-01 1.55964629e-01 1.55869846e-01 1.55775235e-01 + 1.55680797e-01 1.55586530e-01 1.55492434e-01 1.55398509e-01 1.55304754e-01 + 1.55211168e-01 1.55117751e-01 1.55024502e-01 1.54931422e-01 1.54838509e-01 + 1.54745763e-01 1.54653183e-01 1.54560770e-01 1.54468522e-01 1.54376439e-01 + 1.54284520e-01 1.54192765e-01 1.54101174e-01 1.54009746e-01 1.53918481e-01 + 1.53827377e-01 1.53736435e-01 1.53645654e-01 1.53555034e-01 1.53464574e-01 + 1.53374274e-01 1.53284132e-01 1.53194150e-01 1.53104326e-01 1.53014660e-01 + 1.52925151e-01 1.52835798e-01 1.52746603e-01 1.52657563e-01 1.52568679e-01 + 1.52479950e-01 1.52391376e-01 1.52302955e-01 1.52214689e-01 1.52126576e-01 + 1.52038615e-01 1.51950807e-01 1.51863151e-01 1.51775647e-01 1.51688293e-01 + 1.51601091e-01 1.51514038e-01 1.51427135e-01 1.51340382e-01 1.51253778e-01 + 1.51167322e-01 1.51081014e-01 1.50994854e-01 1.50908841e-01 1.50822975e-01 + 1.50737255e-01 1.50651681e-01 1.50566253e-01 1.50480970e-01 1.50395832e-01 + 1.50310838e-01 1.50225988e-01 1.50141281e-01 1.50056718e-01 1.49972298e-01 + 1.49888019e-01 1.49803883e-01 1.49719888e-01 1.49636035e-01 1.49552322e-01 + 1.49468749e-01 1.49385316e-01 1.49302023e-01 1.49218869e-01 1.49135854e-01 + 1.49052977e-01 1.48970239e-01 1.48887638e-01 1.48805174e-01 1.48722847e-01 + 1.48640656e-01 1.48558602e-01 1.48476683e-01 1.48394900e-01 1.48313252e-01 + 1.48231738e-01 1.48150359e-01 1.48069113e-01 1.47988001e-01 1.47907022e-01 + 1.47826176e-01 1.47745463e-01 1.47664881e-01 1.47584431e-01 1.47504113e-01 + 1.47423925e-01 1.47343868e-01 1.47263942e-01 1.47184145e-01 1.47104478e-01 + 1.47024940e-01 1.46945531e-01 1.46866251e-01 1.46787099e-01 1.46708074e-01 + 1.46629177e-01 1.46550407e-01 1.46471764e-01 1.46393248e-01 1.46314857e-01 + 1.46236593e-01 1.46158454e-01 1.46080440e-01 1.46002551e-01 1.45924786e-01 + 1.45847145e-01 1.45769628e-01 1.45692235e-01 1.45614965e-01 1.45537817e-01 + 1.45460792e-01 1.45383890e-01 1.45307109e-01 1.45230449e-01 1.45153911e-01 + 1.45077494e-01 1.45001197e-01 1.44925021e-01 1.44848964e-01 1.44773027e-01 + 1.44697209e-01 1.44621511e-01 1.44545931e-01 1.44470469e-01 1.44395126e-01 + 1.44319900e-01 1.44244791e-01 1.44169800e-01 1.44094926e-01 1.44020168e-01 + 1.43945527e-01 1.43871001e-01 1.43796591e-01 1.43722296e-01 1.43648117e-01 + 1.43574052e-01 1.43500101e-01 1.43426265e-01 1.43352542e-01 1.43278934e-01 + 1.43205438e-01 1.43132055e-01 1.43058785e-01 1.42985628e-01 1.42912583e-01 + 1.42839649e-01 1.42766827e-01 1.42694116e-01 1.42621516e-01 1.42549027e-01 + 1.42476649e-01 1.42404380e-01 1.42332222e-01 1.42260172e-01 1.42188233e-01 + 1.42116402e-01 1.42044680e-01 1.41973066e-01 1.41901561e-01 1.41830164e-01 + 1.41758874e-01 1.41687692e-01 1.41616617e-01 1.41545648e-01 1.41474786e-01 + 1.41404031e-01 1.41333382e-01 1.41262838e-01 1.41192400e-01 1.41122067e-01 + 1.41051839e-01 1.40981716e-01 1.40911698e-01 1.40841783e-01 1.40771973e-01 + 1.40702266e-01 1.40632663e-01 1.40563163e-01 1.40493766e-01 1.40424471e-01 + 1.40355279e-01 1.40286189e-01 1.40217202e-01 1.40148315e-01 1.40079531e-01 + 1.40010847e-01 1.39942264e-01 1.39873782e-01 1.39805401e-01 1.39737119e-01 + 1.39668938e-01 1.39600856e-01 1.39532874e-01 1.39464991e-01 1.39397207e-01 + 1.39329522e-01 1.39261935e-01 1.39194446e-01 1.39127056e-01 1.39059763e-01 + 1.38992568e-01 1.38925470e-01 1.38858469e-01 1.38791565e-01 1.38724758e-01 + 1.38658047e-01 1.38591432e-01 1.38524913e-01 1.38458490e-01 1.38392162e-01 + 1.38325930e-01 1.38259792e-01 1.38193750e-01 1.38127801e-01 1.38061947e-01 + 1.37996188e-01 1.37930522e-01 1.37864950e-01 1.37799471e-01 1.37734085e-01 + 1.37668793e-01 1.37603593e-01 1.37538485e-01 1.37473471e-01 1.37408548e-01 + 1.37343717e-01 1.37278977e-01 1.37214330e-01 1.37149773e-01 1.37085308e-01 + 1.37020933e-01 1.36956649e-01 1.36892455e-01 1.36828351e-01 1.36764338e-01 + 1.36700414e-01 1.36636580e-01 1.36572835e-01 1.36509179e-01 1.36445612e-01 + 1.36382134e-01 1.36318745e-01 1.36255443e-01 1.36192230e-01 1.36129105e-01 + 1.36066067e-01 1.36003117e-01 1.35940254e-01 1.35877478e-01 1.35814789e-01 + 1.35752187e-01 1.35689672e-01 1.35627242e-01 1.35564899e-01 1.35502641e-01 + 1.35440470e-01 1.35378384e-01 1.35316383e-01 1.35254467e-01 1.35192636e-01 + 1.35130890e-01 1.35069228e-01 1.35007651e-01 1.34946158e-01 1.34884748e-01 + 1.34823423e-01 1.34762181e-01 1.34701022e-01 1.34639947e-01 1.34578955e-01 + 1.34518045e-01 1.34457218e-01 1.34396474e-01 1.34335812e-01 1.34275232e-01 + 1.34214733e-01 1.34154317e-01 1.34093982e-01 1.34033728e-01 1.33973556e-01 + 1.33913464e-01 1.33853453e-01 1.33793523e-01 1.33733673e-01 1.33673904e-01 + 1.33614214e-01 1.33554605e-01 1.33495075e-01 1.33435625e-01 1.33376254e-01 + 1.33316962e-01 1.33257749e-01 1.33198615e-01 1.33139560e-01 1.33080583e-01 + 1.33021685e-01 1.32962864e-01 1.32904122e-01 1.32845457e-01 1.32786870e-01 + 1.32728361e-01 1.32669928e-01 1.32611573e-01 1.32553295e-01 1.32495093e-01 + 1.32436968e-01 1.32378920e-01 1.32320948e-01 1.32263052e-01 1.32205232e-01 + 1.32147487e-01 1.32089818e-01 1.32032225e-01 1.31974707e-01 1.31917264e-01 + 1.31859896e-01 1.31802603e-01 1.31745384e-01 1.31688240e-01 1.31631170e-01 + 1.31574174e-01 1.31517252e-01 1.31460404e-01 1.31403630e-01 1.31346929e-01 + 1.31290301e-01 1.31233747e-01 1.31177266e-01 1.31120857e-01 1.31064522e-01 + 1.31008258e-01 1.30952068e-01 1.30895949e-01 1.30839903e-01 1.30783928e-01 + 1.30728025e-01 1.30672194e-01 1.30616435e-01 1.30560746e-01 1.30505129e-01 + 1.30449583e-01 1.30394108e-01 1.30338703e-01 1.30283369e-01 1.30228105e-01 + 1.30172912e-01 1.30117789e-01 1.30062736e-01 1.30007752e-01 1.29952839e-01 + 1.29897994e-01 1.29843219e-01 1.29788514e-01 1.29733877e-01 1.29679310e-01 + 1.29624811e-01 1.29570381e-01 1.29516019e-01 1.29461726e-01 1.29407501e-01 + 1.29353344e-01 1.29299255e-01 1.29245234e-01 1.29191280e-01 1.29137394e-01 + 1.29083575e-01 1.29029824e-01 1.28976140e-01 1.28922522e-01 1.28868972e-01 + 1.28815488e-01 1.28762070e-01 1.28708719e-01 1.28655435e-01 1.28602216e-01 + 1.28549063e-01 1.28495977e-01 1.28442955e-01 1.28390000e-01 1.28337110e-01 + 1.28284285e-01 1.28231526e-01 1.28178831e-01 1.28126202e-01 1.28073637e-01 + 1.28021137e-01 1.27968701e-01 1.27916330e-01 1.27864023e-01 1.27811780e-01 + 1.27759601e-01 1.27707486e-01 1.27655434e-01 1.27603447e-01 1.27551522e-01 + 1.27499661e-01 1.27447864e-01 1.27396129e-01 1.27344457e-01 1.27292848e-01 + 1.27241302e-01 1.27189818e-01 1.27138397e-01 1.27087038e-01 1.27035742e-01 + 1.26984507e-01 1.26933334e-01 1.26882223e-01 1.26831174e-01 1.26780187e-01 + 1.26729260e-01 1.26678396e-01 1.26627592e-01 1.26576849e-01 1.26526168e-01 + 1.26475547e-01 1.26424987e-01 1.26374487e-01 1.26324048e-01 1.26273670e-01 + 1.26223351e-01 1.26173093e-01 1.26122894e-01 1.26072756e-01 1.26022677e-01 + 1.25972658e-01 1.25922698e-01 1.25872798e-01 1.25822957e-01 1.25773176e-01 + 1.25723453e-01 1.25673789e-01 1.25624184e-01 1.25574638e-01 1.25525150e-01 + 1.25475721e-01 1.25426350e-01 1.25377037e-01 1.25327782e-01 1.25278586e-01 + 1.25229447e-01 1.25180366e-01 1.25131343e-01 1.25082377e-01 1.25033469e-01 + 1.24984618e-01 1.24935824e-01 1.24887088e-01 1.24838408e-01 1.24789785e-01 + 1.24741219e-01 1.24692710e-01 1.24644257e-01 1.24595861e-01 1.24547521e-01 + 1.24499237e-01 1.24451010e-01 1.24402838e-01 1.24354722e-01 1.24306662e-01 + 1.24258658e-01 1.24210709e-01 1.24162816e-01 1.24114978e-01 1.24067195e-01 + 1.24019468e-01 1.23971795e-01 1.23924178e-01 1.23876615e-01 1.23829107e-01 + 1.23781654e-01 1.23734255e-01 1.23686910e-01 1.23639620e-01 1.23592384e-01 + 1.23545202e-01 1.23498075e-01 1.23451001e-01 1.23403980e-01 1.23357014e-01 + 1.23310101e-01 1.23263242e-01 1.23216436e-01 1.23169683e-01 1.23122983e-01 + 1.23076337e-01 1.23029743e-01 1.22983202e-01 1.22936715e-01 1.22890279e-01 + 1.22843897e-01 1.22797567e-01 1.22751289e-01 1.22705063e-01 1.22658890e-01 + 1.22612769e-01 1.22566700e-01 1.22520682e-01 1.22474717e-01 1.22428803e-01 + 1.22382941e-01 1.22337130e-01 1.22291371e-01 1.22245663e-01 1.22200006e-01 + 1.22154400e-01 1.22108845e-01 1.22063342e-01 1.22017889e-01 1.21972487e-01 + 1.21927135e-01 1.21881834e-01 1.21836584e-01 1.21791383e-01 1.21746234e-01 + 1.21701134e-01 1.21656084e-01 1.21611085e-01 1.21566135e-01 1.21521235e-01 + 1.21476385e-01 1.21431584e-01 1.21386833e-01 1.21342131e-01 1.21297479e-01 + 1.21252876e-01 1.21208322e-01 1.21163817e-01 1.21119362e-01 1.21074955e-01 + 1.21030597e-01 1.20986287e-01 1.20942026e-01 1.20897814e-01 1.20853651e-01 + 1.20809535e-01 1.20765468e-01 1.20721449e-01 1.20677478e-01 1.20633555e-01 + 1.20589681e-01 1.20545854e-01 1.20502074e-01 1.20458343e-01 1.20414659e-01 + 1.20371022e-01 1.20327433e-01 1.20283891e-01 1.20240396e-01 1.20196949e-01 + 1.20153549e-01 1.20110195e-01 1.20066889e-01 1.20023629e-01 1.19980416e-01 + 1.19937250e-01 1.19894130e-01 1.19851056e-01 1.19808030e-01 1.19765049e-01 + 1.19722115e-01 1.19679226e-01 1.19636384e-01 1.19593588e-01 1.19550838e-01 + 1.19508133e-01 1.19465474e-01 1.19422861e-01 1.19380294e-01 1.19337772e-01 + 1.19295295e-01 1.19252863e-01 1.19210477e-01 1.19168136e-01 1.19125841e-01 + 1.19083590e-01 1.19041384e-01 1.18999223e-01 1.18957106e-01 1.18915035e-01 + 1.18873008e-01 1.18831025e-01 1.18789087e-01 1.18747194e-01 1.18705344e-01 + 1.18663539e-01 1.18621778e-01 1.18580061e-01 1.18538388e-01 1.18496759e-01 + 1.18455174e-01 1.18413632e-01 1.18372134e-01 1.18330680e-01 1.18289269e-01 + 1.18247902e-01 1.18206578e-01 1.18165298e-01 1.18124060e-01 1.18082866e-01 + 1.18041715e-01 1.18000607e-01 1.17959541e-01 1.17918519e-01 1.17877539e-01 + 1.17836602e-01 1.17795708e-01 1.17754856e-01 1.17714047e-01 1.17673280e-01 + 1.17632556e-01 1.17591873e-01 1.17551233e-01 1.17510635e-01 1.17470079e-01 + 1.17429565e-01 1.17389093e-01 1.17348662e-01 1.17308274e-01 1.17267927e-01 + 1.17227622e-01 1.17187358e-01 1.17147135e-01 1.17106955e-01 1.17066815e-01 + 1.17026717e-01 1.16986659e-01 1.16946643e-01 1.16906668e-01 1.16866734e-01 + 1.16826841e-01 1.16786988e-01 1.16747177e-01 1.16707406e-01 1.16667676e-01 + 1.16627986e-01 1.16588337e-01 1.16548728e-01 1.16509159e-01 1.16469631e-01 + 1.16430143e-01 1.16390695e-01 1.16351287e-01 1.16311919e-01 1.16272591e-01 + 1.16233303e-01 1.16194055e-01 1.16154846e-01 1.16115678e-01 1.16076548e-01 + 1.16037459e-01 1.15998408e-01 1.15959397e-01 1.15920426e-01 1.15881494e-01 + 1.15842601e-01 1.15803747e-01 1.15764932e-01 1.15726156e-01 1.15687419e-01 + 1.15648721e-01 1.15610062e-01 1.15571441e-01 1.15532859e-01 1.15494316e-01 + 1.15455812e-01 1.15417345e-01 1.15378918e-01 1.15340528e-01 1.15302177e-01 + 1.15263864e-01 1.15225590e-01 1.15187353e-01 1.15149155e-01 1.15110994e-01 + 1.15072871e-01 1.15034786e-01 1.14996739e-01 1.14958730e-01 1.14920759e-01 + 1.14882824e-01 1.14844928e-01 1.14807069e-01 1.14769247e-01 1.14731463e-01 + 1.14693716e-01 1.14656006e-01 1.14618334e-01 1.14580699e-01 1.14543100e-01 + 1.14505539e-01 1.14468014e-01 1.14430527e-01 1.14393076e-01 1.14355662e-01 + 1.14318284e-01 1.14280944e-01 1.14243640e-01 1.14206372e-01 1.14169141e-01 + 1.14131946e-01 1.14094787e-01 1.14057665e-01 1.14020579e-01 1.13983529e-01 + 1.13946515e-01 1.13909538e-01 1.13872596e-01 1.13835690e-01 1.13798820e-01 + 1.13761986e-01 1.13725188e-01 1.13688425e-01 1.13651698e-01 1.13615006e-01 + 1.13578350e-01 1.13541730e-01 1.13505144e-01 1.13468595e-01 1.13432080e-01 + 1.13395601e-01 1.13359156e-01 1.13322747e-01 1.13286373e-01 1.13250035e-01 + 1.13213730e-01 1.13177461e-01 1.13141227e-01 1.13105028e-01 1.13068863e-01 + 1.13032733e-01 1.12996637e-01 1.12960576e-01 1.12924550e-01 1.12888558e-01 + 1.12852600e-01 1.12816677e-01 1.12780788e-01 1.12744933e-01 1.12709112e-01 + 1.12673326e-01 1.12637574e-01 1.12601855e-01 1.12566171e-01 1.12530520e-01 + 1.12494904e-01 1.12459321e-01 1.12423772e-01 1.12388256e-01 1.12352774e-01 + 1.12317326e-01 1.12281911e-01 1.12246530e-01 1.12211182e-01 1.12175868e-01 + 1.12140587e-01 1.12105339e-01 1.12070125e-01 1.12034943e-01 1.11999795e-01 + 1.11964679e-01 1.11929597e-01 1.11894548e-01 1.11859532e-01 1.11824548e-01 + 1.11789597e-01 1.11754679e-01 1.11719794e-01 1.11684941e-01 1.11650121e-01 + 1.11615334e-01 1.11580579e-01 1.11545856e-01 1.11511166e-01 1.11476508e-01 + 1.11441883e-01 1.11407289e-01 1.11372728e-01 1.11338199e-01 1.11303703e-01 + 1.11269238e-01 1.11234805e-01 1.11200404e-01 1.11166035e-01 1.11131698e-01 + 1.11097393e-01 1.11063119e-01 1.11028877e-01 1.10994667e-01 1.10960489e-01 + 1.10926342e-01 1.10892226e-01 1.10858142e-01 1.10824089e-01 1.10790068e-01 + 1.10756078e-01 1.10722119e-01 1.10688192e-01 1.10654295e-01 1.10620430e-01 + 1.10586596e-01 1.10552793e-01 1.10519021e-01 1.10485279e-01 1.10451569e-01 + 1.10417890e-01 1.10384241e-01 1.10350623e-01 1.10317036e-01 1.10283479e-01 + 1.10249953e-01 1.10216458e-01 1.10182993e-01 1.10149558e-01 1.10116154e-01 + 1.10082780e-01 1.10049437e-01 1.10016124e-01 1.09982841e-01 1.09949588e-01 + 1.09916366e-01 1.09883174e-01 1.09850011e-01 1.09816879e-01 1.09783776e-01 + 1.09750704e-01 1.09717661e-01 1.09684648e-01 1.09651665e-01 1.09618712e-01 + 1.09585789e-01 1.09552895e-01 1.09520030e-01 1.09487196e-01 1.09454390e-01 + 1.09421615e-01 1.09388868e-01 1.09356151e-01 1.09323464e-01 1.09290805e-01 + 1.09258176e-01 1.09225576e-01 1.09193006e-01 1.09160464e-01 1.09127951e-01 + 1.09095468e-01 1.09063013e-01 1.09030588e-01 1.08998191e-01 1.08965824e-01 + 1.08933485e-01 1.08901174e-01 1.08868893e-01 1.08836640e-01 1.08804416e-01 + 1.08772220e-01 1.08740054e-01 1.08707915e-01 1.08675805e-01 1.08643724e-01 + 1.08611671e-01 1.08579646e-01 1.08547649e-01 1.08515681e-01 1.08483741e-01 + 1.08451829e-01 1.08419946e-01 1.08388090e-01 1.08356263e-01 1.08324463e-01 + 1.08292692e-01 1.08260948e-01 1.08229233e-01 1.08197545e-01 1.08165885e-01 + 1.08134253e-01 1.08102648e-01 1.08071072e-01 1.08039523e-01 1.08008001e-01 + 1.07976507e-01 1.07945041e-01 1.07913602e-01 1.07882191e-01 1.07850807e-01 + 1.07819450e-01 1.07788121e-01 1.07756819e-01 1.07725544e-01 1.07694296e-01 + 1.07663076e-01 1.07631883e-01 1.07600717e-01 1.07569578e-01 1.07538466e-01 + 1.07507381e-01 1.07476322e-01 1.07445291e-01 1.07414287e-01 1.07383309e-01 + 1.07352359e-01 1.07321435e-01 1.07290537e-01 1.07259667e-01 1.07228823e-01 + 1.07198005e-01 1.07167214e-01 1.07136450e-01 1.07105712e-01 1.07075001e-01 + 1.07044316e-01 1.07013657e-01 1.06983025e-01 1.06952419e-01 1.06921839e-01 + 1.06891286e-01 1.06860758e-01 1.06830257e-01 1.06799782e-01 1.06769333e-01 + 1.06738910e-01 1.06708513e-01 1.06678142e-01 1.06647796e-01 1.06617477e-01 + 1.06587184e-01 1.06556916e-01 1.06526674e-01 1.06496458e-01 1.06466268e-01 + 1.06436103e-01 1.06405964e-01 1.06375850e-01 1.06345762e-01 1.06315700e-01 + 1.06285663e-01 1.06255651e-01 1.06225665e-01 1.06195704e-01 1.06165769e-01 + 1.06135859e-01 1.06105974e-01 1.06076114e-01 1.06046280e-01 1.06016470e-01 + 1.05986686e-01 1.05956927e-01 1.05927193e-01 1.05897484e-01 1.05867800e-01 + 1.05838141e-01 1.05808507e-01 1.05778897e-01 1.05749313e-01 1.05719753e-01 + 1.05690218e-01 1.05660708e-01 1.05631223e-01 1.05601762e-01 1.05572326e-01 + 1.05542914e-01 1.05513528e-01 1.05484165e-01 1.05454827e-01 1.05425514e-01 + 1.05396225e-01 1.05366960e-01 1.05337720e-01 1.05308504e-01 1.05279312e-01 + 1.05250145e-01 1.05221002e-01 1.05191883e-01 1.05162788e-01 1.05133717e-01 + 1.05104671e-01 1.05075648e-01 1.05046650e-01 1.05017675e-01 1.04988725e-01 + 1.04959798e-01 1.04930896e-01 1.04902017e-01 1.04873162e-01 1.04844331e-01 + 1.04815523e-01 1.04786740e-01 1.04757980e-01 1.04729243e-01 1.04700531e-01 + 1.04671841e-01 1.04643176e-01 1.04614534e-01 1.04585916e-01 1.04557321e-01 + 1.04528749e-01 1.04500201e-01 1.04471676e-01 1.04443175e-01 1.04414697e-01 + 1.04386242e-01 1.04357810e-01 1.04329402e-01 1.04301017e-01 1.04272655e-01 + 1.04244316e-01 1.04216000e-01 1.04187707e-01 1.04159437e-01 1.04131191e-01 + 1.04102967e-01 1.04074766e-01 1.04046588e-01 1.04018433e-01 1.03990301e-01 + 1.03962192e-01 1.03934105e-01 1.03906041e-01 1.03878000e-01 1.03849982e-01 + 1.03821986e-01 1.03794013e-01 1.03766062e-01 1.03738134e-01 1.03710229e-01 + 1.03682346e-01 1.03654486e-01 1.03626648e-01 1.03598832e-01 1.03571039e-01 + 1.03543268e-01 1.03515520e-01 1.03487793e-01 1.03460089e-01 1.03432408e-01 + 1.03404748e-01 1.03377111e-01 1.03349496e-01 1.03321903e-01 1.03294332e-01 + 1.03266783e-01 1.03239256e-01 1.03211751e-01 1.03184268e-01 1.03156807e-01 + 1.03129368e-01 1.03101951e-01 1.03074556e-01 1.03047182e-01 1.03019831e-01 + 1.02992501e-01 1.02965192e-01 1.02937906e-01 1.02910641e-01 1.02883398e-01 + 1.02856177e-01 1.02828977e-01 1.02801798e-01 1.02774642e-01 1.02747506e-01 + 1.02720392e-01 1.02693300e-01 1.02666229e-01 1.02639180e-01 1.02612151e-01 + 1.02585145e-01 1.02558159e-01 1.02531195e-01 1.02504252e-01 1.02477330e-01 + 1.02450430e-01 1.02423550e-01 1.02396692e-01 1.02369855e-01 1.02343039e-01 + 1.02316244e-01 1.02289470e-01 1.02262717e-01 1.02235985e-01 1.02209274e-01 + 1.02182584e-01 1.02155915e-01 1.02129267e-01 1.02102639e-01 1.02076033e-01 + 1.02049447e-01 1.02022882e-01 1.01996338e-01 1.01969814e-01 1.01943311e-01 + 1.01916829e-01 1.01890367e-01 1.01863926e-01 1.01837505e-01 1.01811106e-01 + 1.01784726e-01 1.01758367e-01 1.01732029e-01 1.01705711e-01 1.01679413e-01 + 1.01653136e-01 1.01626879e-01 1.01600643e-01 1.01574426e-01 1.01548230e-01 + 1.01522055e-01 1.01495899e-01 1.01469764e-01 1.01443649e-01 1.01417554e-01 + 1.01391479e-01 1.01365425e-01 1.01339390e-01 1.01313376e-01 1.01287381e-01 + 1.01261406e-01 1.01235452e-01 1.01209517e-01 1.01183603e-01 1.01157708e-01 + 1.01131833e-01 1.01105978e-01 1.01080143e-01 1.01054327e-01 1.01028532e-01 + 1.01002756e-01 1.00976999e-01 1.00951263e-01 1.00925546e-01 1.00899849e-01 + 1.00874171e-01 1.00848513e-01 1.00822875e-01 1.00797256e-01 1.00771656e-01 + 1.00746077e-01 1.00720516e-01 1.00694975e-01 1.00669454e-01 1.00643952e-01 + 1.00618469e-01 1.00593005e-01 1.00567561e-01 1.00542136e-01 1.00516731e-01 + 1.00491345e-01 1.00465978e-01 1.00440630e-01 1.00415301e-01 1.00389992e-01 + 1.00364701e-01 1.00339430e-01 1.00314178e-01 1.00288944e-01 1.00263730e-01 + 1.00238535e-01 1.00213359e-01 1.00188202e-01 1.00163064e-01 1.00137944e-01 + 1.00112844e-01 1.00087762e-01 1.00062700e-01 1.00037656e-01 1.00012631e-01 + 9.99876242e-02 9.99626366e-02 9.99376677e-02 9.99127176e-02 9.98877861e-02 + 9.98628732e-02 9.98379790e-02 9.98131034e-02 9.97882464e-02 9.97634079e-02 + 9.97385880e-02 9.97137866e-02 9.96890037e-02 9.96642393e-02 9.96394933e-02 + 9.96147657e-02 9.95900565e-02 9.95653657e-02 9.95406933e-02 9.95160392e-02 + 9.94914034e-02 9.94667859e-02 9.94421867e-02 9.94176057e-02 9.93930429e-02 + 9.93684983e-02 9.93439719e-02 9.93194636e-02 9.92949735e-02 9.92705015e-02 + 9.92460476e-02 9.92216117e-02 9.91971939e-02 9.91727940e-02 9.91484122e-02 + 9.91240484e-02 9.90997025e-02 9.90753745e-02 9.90510645e-02 9.90267723e-02 + 9.90024980e-02 9.89782415e-02 9.89540029e-02 9.89297821e-02 9.89055790e-02 + 9.88813937e-02 9.88572261e-02 9.88330763e-02 9.88089441e-02 9.87848296e-02 + 9.87607327e-02 9.87366535e-02 9.87125919e-02 9.86885478e-02 9.86645213e-02 + 9.86405124e-02 9.86165209e-02 9.85925470e-02 9.85685906e-02 9.85446516e-02 + 9.85207300e-02 9.84968258e-02 9.84729391e-02 9.84490697e-02 9.84252176e-02 + 9.84013829e-02 9.83775655e-02 9.83537654e-02 9.83299825e-02 9.83062169e-02 + 9.82824685e-02 9.82587374e-02 9.82350233e-02 9.82113265e-02 9.81876468e-02 + 9.81639842e-02 9.81403387e-02 9.81167103e-02 9.80930990e-02 9.80695047e-02 + 9.80459274e-02 9.80223671e-02 9.79988238e-02 9.79752974e-02 9.79517880e-02 + 9.79282955e-02 9.79048199e-02 9.78813611e-02 9.78579192e-02 9.78344942e-02 + 9.78110859e-02 9.77876945e-02 9.77643198e-02 9.77409619e-02 9.77176207e-02 + 9.76942963e-02 9.76709885e-02 9.76476974e-02 9.76244230e-02 9.76011651e-02 + 9.75779239e-02 9.75546993e-02 9.75314913e-02 9.75082999e-02 9.74851249e-02 + 9.74619665e-02 9.74388246e-02 9.74156991e-02 9.73925901e-02 9.73694976e-02 + 9.73464215e-02 9.73233617e-02 9.73003184e-02 9.72772914e-02 9.72542807e-02 + 9.72312864e-02 9.72083084e-02 9.71853467e-02 9.71624012e-02 9.71394719e-02 + 9.71165589e-02 9.70936621e-02 9.70707815e-02 9.70479171e-02 9.70250688e-02 + 9.70022366e-02 9.69794205e-02 9.69566206e-02 9.69338367e-02 9.69110688e-02 + 9.68883170e-02 9.68655813e-02 9.68428615e-02 9.68201577e-02 9.67974698e-02 + 9.67747979e-02 9.67521419e-02 9.67295019e-02 9.67068777e-02 9.66842693e-02 + 9.66616769e-02 9.66391002e-02 9.66165394e-02 9.65939943e-02 9.65714651e-02 + 9.65489516e-02 9.65264538e-02 9.65039718e-02 9.64815054e-02 9.64590547e-02 + 9.64366197e-02 9.64142004e-02 9.63917967e-02 9.63694086e-02 9.63470360e-02 + 9.63246791e-02 9.63023377e-02 9.62800118e-02 9.62577015e-02 9.62354067e-02 + 9.62131273e-02 9.61908635e-02 9.61686150e-02 9.61463820e-02 9.61241644e-02 + 9.61019623e-02 9.60797754e-02 9.60576040e-02 9.60354479e-02 9.60133071e-02 + 9.59911816e-02 9.59690714e-02 9.59469765e-02 9.59248968e-02 9.59028324e-02 + 9.58807832e-02 9.58587492e-02 9.58367303e-02 9.58147267e-02 9.57927382e-02 + 9.57707648e-02 9.57488065e-02 9.57268633e-02 9.57049352e-02 9.56830222e-02 + 9.56611242e-02 9.56392413e-02 9.56173733e-02 9.55955204e-02 9.55736824e-02 + 9.55518594e-02 9.55300513e-02 9.55082582e-02 9.54864799e-02 9.54647166e-02 + 9.54429681e-02 9.54212345e-02 9.53995157e-02 9.53778117e-02 9.53561226e-02 + 9.53344482e-02 9.53127886e-02 9.52911438e-02 9.52695137e-02 9.52478984e-02 + 9.52262977e-02 9.52047117e-02 9.51831404e-02 9.51615838e-02 9.51400418e-02 + 9.51185144e-02 9.50970016e-02 9.50755034e-02 9.50540198e-02 9.50325508e-02 + 9.50110963e-02 9.49896563e-02 9.49682308e-02 9.49468198e-02 9.49254233e-02 + 9.49040412e-02 9.48826736e-02 9.48613204e-02 9.48399817e-02 9.48186573e-02 + 9.47973473e-02 9.47760516e-02 9.47547703e-02 9.47335034e-02 9.47122507e-02 + 9.46910123e-02 9.46697883e-02 9.46485784e-02 9.46273829e-02 9.46062015e-02 + 9.45850344e-02 9.45638815e-02 9.45427428e-02 9.45216182e-02 9.45005078e-02 + 9.44794116e-02 9.44583294e-02 9.44372614e-02 9.44162074e-02 9.43951676e-02 + 9.43741418e-02 9.43531300e-02 9.43321323e-02 9.43111485e-02 9.42901788e-02 + 9.42692231e-02 9.42482813e-02 9.42273534e-02 9.42064395e-02 9.41855396e-02 + 9.41646535e-02 9.41437813e-02 9.41229230e-02 9.41020785e-02 9.40812479e-02 + 9.40604311e-02 9.40396282e-02 9.40188390e-02 9.39980636e-02 9.39773020e-02 + 9.39565541e-02 9.39358200e-02 9.39150995e-02 9.38943928e-02 9.38736998e-02 + 9.38530204e-02 9.38323548e-02 9.38117027e-02 9.37910643e-02 9.37704395e-02 + 9.37498283e-02 9.37292307e-02 9.37086466e-02 9.36880762e-02 9.36675192e-02 + 9.36469758e-02 9.36264459e-02 9.36059295e-02 9.35854265e-02 9.35649371e-02 + 9.35444611e-02 9.35239985e-02 9.35035493e-02 9.34831136e-02 9.34626912e-02 + 9.34422823e-02 9.34218866e-02 9.34015044e-02 9.33811355e-02 9.33607798e-02 + 9.33404375e-02 9.33201085e-02 9.32997928e-02 9.32794903e-02 9.32592011e-02 + 9.32389251e-02 9.32186624e-02 9.31984128e-02 9.31781764e-02 9.31579532e-02 + 9.31377432e-02 9.31175463e-02 9.30973626e-02 9.30771919e-02 9.30570344e-02 + 9.30368899e-02 9.30167586e-02 9.29966403e-02 9.29765350e-02 9.29564428e-02 + 9.29363636e-02 9.29162974e-02 9.28962442e-02 9.28762040e-02 9.28561768e-02 + 9.28361624e-02 9.28161611e-02 9.27961726e-02 9.27761971e-02 9.27562344e-02 + 9.27362847e-02 9.27163478e-02 9.26964237e-02 9.26765125e-02 9.26566141e-02 + 9.26367286e-02 9.26168558e-02 9.25969958e-02 9.25771486e-02 9.25573141e-02 + 9.25374924e-02 9.25176834e-02 9.24978871e-02 9.24781036e-02 9.24583327e-02 + 9.24385745e-02 9.24188289e-02 9.23990960e-02 9.23793758e-02 9.23596681e-02 + 9.23399731e-02 9.23202907e-02 9.23006208e-02 9.22809635e-02 9.22613188e-02 + 9.22416866e-02 9.22220669e-02 9.22024597e-02 9.21828651e-02 9.21632829e-02 + 9.21437132e-02 9.21241560e-02 9.21046112e-02 9.20850788e-02 9.20655589e-02 + 9.20460514e-02 9.20265563e-02 9.20070735e-02 9.19876031e-02 9.19681451e-02 + 9.19486994e-02 9.19292661e-02 9.19098451e-02 9.18904363e-02 9.18710399e-02 + 9.18516557e-02 9.18322838e-02 9.18129242e-02 9.17935768e-02 9.17742416e-02 + 9.17549186e-02 9.17356079e-02 9.17163093e-02 9.16970229e-02 9.16777486e-02 + 9.16584865e-02 9.16392366e-02 9.16199987e-02 9.16007730e-02 9.15815594e-02 + 9.15623578e-02 9.15431684e-02 9.15239910e-02 9.15048256e-02 9.14856723e-02 + 9.14665310e-02 9.14474017e-02 9.14282844e-02 9.14091791e-02 9.13900857e-02 + 9.13710043e-02 9.13519349e-02 9.13328774e-02 9.13138318e-02 9.12947982e-02 + 9.12757764e-02 9.12567665e-02 9.12377685e-02 9.12187823e-02 9.11998080e-02 + 9.11808456e-02 9.11618949e-02 9.11429561e-02 9.11240290e-02 9.11051138e-02 + 9.10862103e-02 9.10673186e-02 9.10484386e-02 9.10295704e-02 9.10107139e-02 + 9.09918691e-02 9.09730360e-02 9.09542146e-02 9.09354049e-02 9.09166069e-02 + 9.08978205e-02 9.08790457e-02 9.08602826e-02 9.08415311e-02 9.08227911e-02 + 9.08040628e-02 9.07853461e-02 9.07666409e-02 9.07479473e-02 9.07292652e-02 + 9.07105947e-02 9.06919357e-02 9.06732882e-02 9.06546522e-02 9.06360277e-02 + 9.06174146e-02 9.05988131e-02 9.05802229e-02 9.05616442e-02 9.05430770e-02 + 9.05245211e-02 9.05059767e-02 9.04874436e-02 9.04689219e-02 9.04504116e-02 + 9.04319127e-02 9.04134251e-02 9.03949488e-02 9.03764839e-02 9.03580303e-02 + 9.03395879e-02 9.03211569e-02 9.03027371e-02 9.02843286e-02 9.02659313e-02 + 9.02475453e-02 9.02291706e-02 9.02108070e-02 9.01924546e-02 9.01741135e-02 + 9.01557835e-02 9.01374647e-02 9.01191571e-02 9.01008606e-02 9.00825752e-02 + 9.00643010e-02 9.00460379e-02 9.00277859e-02 9.00095450e-02 8.99913152e-02 + 8.99730965e-02 8.99548888e-02 8.99366921e-02 8.99185065e-02 8.99003320e-02 + 8.98821684e-02 8.98640159e-02 8.98458743e-02 8.98277437e-02 8.98096241e-02 + 8.97915155e-02 8.97734178e-02 8.97553311e-02 8.97372552e-02 8.97191903e-02 + 8.97011363e-02 8.96830932e-02 8.96650610e-02 8.96470396e-02 8.96290291e-02 + 8.96110295e-02 8.95930407e-02 8.95750627e-02 8.95570956e-02 8.95391392e-02 + 8.95211937e-02 8.95032589e-02 8.94853349e-02 8.94674217e-02 8.94495192e-02 + 8.94316275e-02 8.94137465e-02 8.93958762e-02 8.93780167e-02 8.93601678e-02 + 8.93423296e-02 8.93245021e-02 8.93066853e-02 8.92888791e-02 8.92710836e-02 + 8.92532987e-02 8.92355244e-02 8.92177608e-02 8.92000077e-02 8.91822653e-02 + 8.91645334e-02 8.91468121e-02 8.91291014e-02 8.91114012e-02 8.90937115e-02 + 8.90760324e-02 8.90583638e-02 8.90407057e-02 8.90230582e-02 8.90054211e-02 + 8.89877945e-02 8.89701783e-02 8.89525726e-02 8.89349774e-02 8.89173926e-02 + 8.88998182e-02 8.88822542e-02 8.88647007e-02 8.88471575e-02 8.88296247e-02 + 8.88121023e-02 8.87945903e-02 8.87770886e-02 8.87595973e-02 8.87421163e-02 + 8.87246456e-02 8.87071853e-02 8.86897352e-02 8.86722954e-02 8.86548660e-02 + 8.86374468e-02 8.86200378e-02 8.86026391e-02 8.85852507e-02 8.85678725e-02 + 8.85505045e-02 8.85331467e-02 8.85157991e-02 8.84984618e-02 8.84811346e-02 + 8.84638176e-02 8.84465107e-02 8.84292140e-02 8.84119274e-02 8.83946510e-02 + 8.83773847e-02 8.83601285e-02 8.83428825e-02 8.83256465e-02 8.83084206e-02 + 8.82912047e-02 8.82739990e-02 8.82568033e-02 8.82396176e-02 8.82224420e-02 + 8.82052764e-02 8.81881208e-02 8.81709752e-02 8.81538396e-02 8.81367140e-02 + 8.81195984e-02 8.81024927e-02 8.80853970e-02 8.80683113e-02 8.80512355e-02 + 8.80341696e-02 8.80171137e-02 8.80000676e-02 8.79830314e-02 8.79660052e-02 + 8.79489888e-02 8.79319823e-02 8.79149857e-02 8.78979989e-02 8.78810219e-02 + 8.78640548e-02 8.78470975e-02 8.78301500e-02 8.78132123e-02 8.77962845e-02 + 8.77793664e-02 8.77624580e-02 8.77455595e-02 8.77286707e-02 8.77117916e-02 + 8.76949223e-02 8.76780628e-02 8.76612129e-02 8.76443728e-02 8.76275423e-02 + 8.76107216e-02 8.75939105e-02 8.75771091e-02 8.75603174e-02 8.75435353e-02 + 8.75267629e-02 8.75100001e-02 8.74932469e-02 8.74765033e-02 8.74597694e-02 + 8.74430451e-02 8.74263303e-02 8.74096251e-02 8.73929296e-02 8.73762435e-02 + 8.73595670e-02 8.73429001e-02 8.73262427e-02 8.73095948e-02 8.72929565e-02 + 8.72763276e-02 8.72597083e-02 8.72430984e-02 8.72264981e-02 8.72099072e-02 + 8.71933257e-02 8.71767537e-02 8.71601912e-02 8.71436381e-02 8.71270944e-02 + 8.71105602e-02 8.70940353e-02 8.70775199e-02 8.70610138e-02 8.70445172e-02 + 8.70280299e-02 8.70115519e-02 8.69950834e-02 8.69786241e-02 8.69621742e-02 + 8.69457337e-02 8.69293024e-02 8.69128805e-02 8.68964679e-02 8.68800646e-02 + 8.68636705e-02 8.68472857e-02 8.68309103e-02 8.68145440e-02 8.67981870e-02 + 8.67818393e-02 8.67655008e-02 8.67491715e-02 8.67328514e-02 8.67165406e-02 + 8.67002389e-02 8.66839464e-02 8.66676631e-02 8.66513890e-02 8.66351240e-02 + 8.66188682e-02 8.66026216e-02 8.65863841e-02 8.65701557e-02 8.65539364e-02 + 8.65377263e-02 8.65215252e-02 8.65053333e-02 8.64891504e-02 8.64729766e-02 + 8.64568119e-02 8.64406563e-02 8.64245097e-02 8.64083721e-02 8.63922436e-02 + 8.63761241e-02 8.63600136e-02 8.63439122e-02 8.63278197e-02 8.63117363e-02 + 8.62956618e-02 8.62795963e-02 8.62635398e-02 8.62474922e-02 8.62314536e-02 + 8.62154239e-02 8.61994032e-02 8.61833914e-02 8.61673885e-02 8.61513945e-02 + 8.61354094e-02 8.61194332e-02 8.61034659e-02 8.60875075e-02 8.60715580e-02 + 8.60556173e-02 8.60396855e-02 8.60237625e-02 8.60078483e-02 8.59919430e-02 + 8.59760465e-02 8.59601588e-02 8.59442800e-02 8.59284099e-02 8.59125486e-02 + 8.58966961e-02 8.58808523e-02 8.58650173e-02 8.58491911e-02 8.58333736e-02 + 8.58175649e-02 8.58017649e-02 8.57859736e-02 8.57701911e-02 8.57544172e-02 + 8.57386520e-02 8.57228956e-02 8.57071478e-02 8.56914087e-02 8.56756782e-02 + 8.56599565e-02 8.56442433e-02 8.56285389e-02 8.56128430e-02 8.55971558e-02 + 8.55814772e-02 8.55658072e-02 8.55501458e-02 8.55344930e-02 8.55188488e-02 + 8.55032132e-02 8.54875862e-02 8.54719677e-02 8.54563578e-02 8.54407564e-02 + 8.54251636e-02 8.54095793e-02 8.53940035e-02 8.53784363e-02 8.53628775e-02 + 8.53473273e-02 8.53317855e-02 8.53162523e-02 8.53007275e-02 8.52852112e-02 + 8.52697034e-02 8.52542040e-02 8.52387130e-02 8.52232305e-02 8.52077565e-02 + 8.51922909e-02 8.51768336e-02 8.51613848e-02 8.51459444e-02 8.51305124e-02 + 8.51150888e-02 8.50996736e-02 8.50842667e-02 8.50688682e-02 8.50534780e-02 + 8.50380963e-02 8.50227228e-02 8.50073577e-02 8.49920009e-02 8.49766524e-02 + 8.49613123e-02 8.49459804e-02 8.49306569e-02 8.49153416e-02 8.49000346e-02 + 8.48847359e-02 8.48694455e-02 8.48541633e-02 8.48388893e-02 8.48236237e-02 + 8.48083662e-02 8.47931170e-02 8.47778760e-02 8.47626432e-02 8.47474187e-02 + 8.47322023e-02 8.47169941e-02 8.47017941e-02 8.46866023e-02 8.46714187e-02 + 8.46562432e-02 8.46410759e-02 8.46259167e-02 8.46107657e-02 8.45956228e-02 + 8.45804880e-02 8.45653614e-02 8.45502428e-02 8.45351324e-02 8.45200301e-02 + 8.45049358e-02 8.44898497e-02 8.44747716e-02 8.44597016e-02 8.44446397e-02 + 8.44295858e-02 8.44145399e-02 8.43995021e-02 8.43844724e-02 8.43694506e-02 + 8.43544369e-02 8.43394312e-02 8.43244335e-02 8.43094438e-02 8.42944621e-02 + 8.42794883e-02 8.42645226e-02 8.42495648e-02 8.42346150e-02 8.42196731e-02 + 8.42047392e-02 8.41898132e-02 8.41748952e-02 8.41599851e-02 8.41450829e-02 + 8.41301886e-02 8.41153022e-02 8.41004238e-02 8.40855532e-02 8.40706905e-02 + 8.40558357e-02 8.40409887e-02 8.40261496e-02 8.40113184e-02 8.39964950e-02 + 8.39816795e-02 8.39668718e-02 8.39520719e-02 8.39372799e-02 8.39224957e-02 + 8.39077193e-02 8.38929507e-02 8.38781898e-02 8.38634368e-02 8.38486916e-02 + 8.38339541e-02 8.38192244e-02 8.38045025e-02 8.37897883e-02 8.37750818e-02 + 8.37603831e-02 8.37456922e-02 8.37310089e-02 8.37163334e-02 8.37016656e-02 + 8.36870055e-02 8.36723531e-02 8.36577084e-02 8.36430714e-02 8.36284421e-02 + 8.36138204e-02 8.35992064e-02 8.35846001e-02 8.35700014e-02 8.35554104e-02 + 8.35408270e-02 8.35262512e-02 8.35116831e-02 8.34971226e-02 8.34825697e-02 + 8.34680244e-02 8.34534867e-02 8.34389566e-02 8.34244341e-02 8.34099191e-02 + 8.33954118e-02 8.33809120e-02 8.33664197e-02 8.33519351e-02 8.33374579e-02 + 8.33229883e-02 8.33085263e-02 8.32940718e-02 8.32796248e-02 8.32651853e-02 + 8.32507533e-02 8.32363288e-02 8.32219118e-02 8.32075023e-02 8.31931003e-02 + 8.31787058e-02 8.31643187e-02 8.31499391e-02 8.31355669e-02 8.31212022e-02 + 8.31068450e-02 8.30924951e-02 8.30781528e-02 8.30638178e-02 8.30494902e-02 + 8.30351701e-02 8.30208574e-02 8.30065520e-02 8.29922541e-02 8.29779635e-02 + 8.29636804e-02 8.29494046e-02 8.29351361e-02 8.29208751e-02 8.29066213e-02 + 8.28923750e-02 8.28781359e-02 8.28639042e-02 8.28496799e-02 8.28354628e-02 + 8.28212531e-02 8.28070507e-02 8.27928556e-02 8.27786678e-02 8.27644872e-02 + 8.27503140e-02 8.27361480e-02 8.27219893e-02 8.27078379e-02 8.26936938e-02 + 8.26795569e-02 8.26654272e-02 8.26513048e-02 8.26371896e-02 8.26230816e-02 + 8.26089809e-02 8.25948874e-02 8.25808011e-02 8.25667220e-02 8.25526501e-02 + 8.25385854e-02 8.25245279e-02 8.25104775e-02 8.24964344e-02 8.24823984e-02 + 8.24683695e-02 8.24543479e-02 8.24403333e-02 8.24263259e-02 8.24123257e-02 + 8.23983326e-02 8.23843466e-02 8.23703677e-02 8.23563960e-02 8.23424313e-02 + 8.23284737e-02 8.23145233e-02 8.23005799e-02 8.22866436e-02 8.22727144e-02 + 8.22587923e-02 8.22448772e-02 8.22309692e-02 8.22170683e-02 8.22031744e-02 + 8.21892875e-02 8.21754077e-02 8.21615349e-02 8.21476691e-02 8.21338103e-02 + 8.21199586e-02 8.21061138e-02 8.20922761e-02 8.20784453e-02 8.20646216e-02 + 8.20508048e-02 8.20369950e-02 8.20231922e-02 8.20093963e-02 8.19956074e-02 + 8.19818254e-02 8.19680504e-02 8.19542823e-02 8.19405212e-02 8.19267670e-02 + 8.19130197e-02 8.18992794e-02 8.18855459e-02 8.18718194e-02 8.18580997e-02 + 8.18443870e-02 8.18306811e-02 8.18169822e-02 8.18032901e-02 8.17896048e-02 + 8.17759265e-02 8.17622550e-02 8.17485903e-02 8.17349326e-02 8.17212816e-02 + 8.17076375e-02 8.16940002e-02 8.16803697e-02 8.16667461e-02 8.16531293e-02 + 8.16395193e-02 8.16259161e-02 8.16123197e-02 8.15987300e-02 8.15851472e-02 + 8.15715712e-02 8.15580019e-02 8.15444394e-02 8.15308836e-02 8.15173346e-02 + 8.15037924e-02 8.14902569e-02 8.14767282e-02 8.14632062e-02 8.14496909e-02 + 8.14361823e-02 8.14226805e-02 8.14091854e-02 8.13956970e-02 8.13822153e-02 + 8.13687402e-02 8.13552719e-02 8.13418103e-02 8.13283553e-02 8.13149070e-02 + 8.13014654e-02 8.12880305e-02 8.12746022e-02 8.12611805e-02 8.12477656e-02 + 8.12343572e-02 8.12209555e-02 8.12075604e-02 8.11941719e-02 8.11807901e-02 + 8.11674149e-02 8.11540463e-02 8.11406843e-02 8.11273288e-02 8.11139800e-02 + 8.11006378e-02 8.10873021e-02 8.10739731e-02 8.10606506e-02 8.10473346e-02 + 8.10340252e-02 8.10207224e-02 8.10074261e-02 8.09941364e-02 8.09808532e-02 + 8.09675765e-02 8.09543064e-02 8.09410428e-02 8.09277857e-02 8.09145351e-02 + 8.09012911e-02 8.08880535e-02 8.08748224e-02 8.08615978e-02 8.08483797e-02 + 8.08351681e-02 8.08219630e-02 8.08087643e-02 8.07955721e-02 8.07823863e-02 + 8.07692070e-02 8.07560342e-02 8.07428678e-02 8.07297078e-02 8.07165542e-02 + 8.07034071e-02 8.06902664e-02 8.06771322e-02 8.06640043e-02 8.06508829e-02 + 8.06377678e-02 8.06246592e-02 8.06115569e-02 8.05984610e-02 8.05853715e-02 + 8.05722884e-02 8.05592116e-02 8.05461412e-02 8.05330772e-02 8.05200195e-02 + 8.05069682e-02 8.04939232e-02 8.04808846e-02 8.04678523e-02 8.04548263e-02 + 8.04418066e-02 8.04287933e-02 8.04157863e-02 8.04027856e-02 8.03897912e-02 + 8.03768031e-02 8.03638212e-02 8.03508457e-02 8.03378765e-02 8.03249135e-02 + 8.03119568e-02 8.02990064e-02 8.02860622e-02 8.02731243e-02 8.02601926e-02 + 8.02472672e-02 8.02343481e-02 8.02214351e-02 8.02085284e-02 8.01956280e-02 + 8.01827337e-02 8.01698457e-02 8.01569639e-02 8.01440883e-02 8.01312189e-02 + 8.01183557e-02 8.01054986e-02 8.00926478e-02 8.00798032e-02 8.00669647e-02 + 8.00541324e-02 8.00413063e-02 8.00284863e-02 8.00156725e-02 8.00028649e-02 + 7.99900634e-02 7.99772680e-02 7.99644788e-02 7.99516957e-02 7.99389187e-02 + 7.99261479e-02 7.99133832e-02 7.99006246e-02 7.98878721e-02 7.98751257e-02 + 7.98623854e-02 7.98496512e-02 7.98369231e-02 7.98242011e-02 7.98114851e-02 + 7.97987753e-02 7.97860715e-02 7.97733737e-02 7.97606821e-02 7.97479965e-02 + 7.97353169e-02 7.97226434e-02 7.97099759e-02 7.96973145e-02 7.96846590e-02 + 7.96720097e-02 7.96593663e-02 7.96467290e-02 7.96340976e-02 7.96214723e-02 + 7.96088530e-02 7.95962397e-02 7.95836323e-02 7.95710310e-02 7.95584356e-02 + 7.95458463e-02 7.95332629e-02 7.95206854e-02 7.95081140e-02 7.94955485e-02 + 7.94829889e-02 7.94704353e-02 7.94578877e-02 7.94453459e-02 7.94328102e-02 + 7.94202803e-02 7.94077564e-02 7.93952384e-02 7.93827263e-02 7.93702202e-02 + 7.93577199e-02 7.93452256e-02 7.93327371e-02 7.93202546e-02 7.93077779e-02 + 7.92953071e-02 7.92828423e-02 7.92703832e-02 7.92579301e-02 7.92454828e-02 + 7.92330414e-02 7.92206058e-02 7.92081761e-02 7.91957523e-02 7.91833343e-02 + 7.91709221e-02 7.91585157e-02 7.91461152e-02 7.91337206e-02 7.91213317e-02 + 7.91089486e-02 7.90965714e-02 7.90842000e-02 7.90718344e-02 7.90594746e-02 + 7.90471205e-02 7.90347723e-02 7.90224298e-02 7.90100932e-02 7.89977623e-02 + 7.89854371e-02 7.89731178e-02 7.89608042e-02 7.89484964e-02 7.89361943e-02 + 7.89238979e-02 7.89116073e-02 7.88993225e-02 7.88870434e-02 7.88747700e-02 + 7.88625023e-02 7.88502404e-02 7.88379842e-02 7.88257337e-02 7.88134889e-02 + 7.88012498e-02 7.87890164e-02 7.87767887e-02 7.87645667e-02 7.87523504e-02 + 7.87401398e-02 7.87279348e-02 7.87157355e-02 7.87035419e-02 7.86913540e-02 + 7.86791717e-02 7.86669951e-02 7.86548241e-02 7.86426588e-02 7.86304991e-02 + 7.86183450e-02 7.86061966e-02 7.85940538e-02 7.85819167e-02 7.85697851e-02 + 7.85576592e-02 7.85455389e-02 7.85334242e-02 7.85213151e-02 7.85092116e-02 + 7.84971137e-02 7.84850214e-02 7.84729347e-02 7.84608535e-02 7.84487780e-02 + 7.84367080e-02 7.84246436e-02 7.84125847e-02 7.84005314e-02 7.83884837e-02 + 7.83764415e-02 7.83644048e-02 7.83523737e-02 7.83403482e-02 7.83283282e-02 + 7.83163137e-02 7.83043047e-02 7.82923013e-02 7.82803034e-02 7.82683110e-02 + 7.82563241e-02 7.82443427e-02 7.82323668e-02 7.82203964e-02 7.82084315e-02 + 7.81964721e-02 7.81845182e-02 7.81725697e-02 7.81606268e-02 7.81486893e-02 + 7.81367572e-02 7.81248307e-02 7.81129096e-02 7.81009939e-02 7.80890837e-02 + 7.80771790e-02 7.80652797e-02 7.80533858e-02 7.80414974e-02 7.80296144e-02 + 7.80177368e-02 7.80058646e-02 7.79939979e-02 7.79821366e-02 7.79702807e-02 + 7.79584302e-02 7.79465851e-02 7.79347454e-02 7.79229111e-02 7.79110821e-02 + 7.78992586e-02 7.78874404e-02 7.78756277e-02 7.78638202e-02 7.78520182e-02 + 7.78402215e-02 7.78284302e-02 7.78166443e-02 7.78048637e-02 7.77930884e-02 + 7.77813185e-02 7.77695539e-02 7.77577947e-02 7.77460408e-02 7.77342922e-02 + 7.77225490e-02 7.77108111e-02 7.76990785e-02 7.76873512e-02 7.76756292e-02 + 7.76639125e-02 7.76522011e-02 7.76404950e-02 7.76287942e-02 7.76170987e-02 + 7.76054085e-02 7.75937236e-02 7.75820439e-02 7.75703695e-02 7.75587004e-02 + 7.75470365e-02 7.75353780e-02 7.75237246e-02 7.75120765e-02 7.75004337e-02 + 7.74887961e-02 7.74771637e-02 7.74655366e-02 7.74539147e-02 7.74422981e-02 + 7.74306867e-02 7.74190805e-02 7.74074795e-02 7.73958837e-02 7.73842931e-02 + 7.73727078e-02 7.73611276e-02 7.73495527e-02 7.73379829e-02 7.73264183e-02 + 7.73148589e-02 7.73033047e-02 7.72917557e-02 7.72802118e-02 7.72686732e-02 + 7.72571396e-02 7.72456113e-02 7.72340881e-02 7.72225701e-02 7.72110572e-02 + 7.71995494e-02 7.71880468e-02 7.71765494e-02 7.71650571e-02 7.71535699e-02 + 7.71420878e-02 7.71306109e-02 7.71191391e-02 7.71076724e-02 7.70962108e-02 + 7.70847543e-02 7.70733030e-02 7.70618567e-02 7.70504155e-02 7.70389795e-02 + 7.70275485e-02 7.70161226e-02 7.70047018e-02 7.69932860e-02 7.69818754e-02 + 7.69704698e-02 7.69590693e-02 7.69476738e-02 7.69362834e-02 7.69248981e-02 + 7.69135178e-02 7.69021426e-02 7.68907724e-02 7.68794073e-02 7.68680472e-02 + 7.68566921e-02 7.68453420e-02 7.68339970e-02 7.68226570e-02 7.68113221e-02 + 7.67999921e-02 7.67886672e-02 7.67773472e-02 7.67660323e-02 7.67547224e-02 + 7.67434174e-02 7.67321175e-02 7.67208226e-02 7.67095326e-02 7.66982476e-02 + 7.66869676e-02 7.66756926e-02 7.66644225e-02 7.66531574e-02 7.66418973e-02 + 7.66306422e-02 7.66193920e-02 7.66081467e-02 7.65969064e-02 7.65856711e-02 + 7.65744407e-02 7.65632152e-02 7.65519946e-02 7.65407790e-02 7.65295684e-02 + 7.65183626e-02 7.65071618e-02 7.64959659e-02 7.64847749e-02 7.64735888e-02 + 7.64624076e-02 7.64512313e-02 7.64400599e-02 7.64288935e-02 7.64177319e-02 + 7.64065752e-02 7.63954233e-02 7.63842764e-02 7.63731343e-02 7.63619972e-02 + 7.63508648e-02 7.63397374e-02 7.63286148e-02 7.63174971e-02 7.63063842e-02 + 7.62952762e-02 7.62841730e-02 7.62730747e-02 7.62619813e-02 7.62508926e-02 + 7.62398088e-02 7.62287298e-02 7.62176557e-02 7.62065864e-02 7.61955219e-02 + 7.61844622e-02 7.61734074e-02 7.61623573e-02 7.61513121e-02 7.61402716e-02 + 7.61292360e-02 7.61182052e-02 7.61071791e-02 7.60961579e-02 7.60851414e-02 + 7.60741297e-02 7.60631228e-02 7.60521207e-02 7.60411233e-02 7.60301307e-02 + 7.60191429e-02 7.60081598e-02 7.59971815e-02 7.59862080e-02 7.59752392e-02 + 7.59642751e-02 7.59533158e-02 7.59423613e-02 7.59314115e-02 7.59204664e-02 + 7.59095260e-02 7.58985904e-02 7.58876595e-02 7.58767333e-02 7.58658119e-02 + 7.58548951e-02 7.58439831e-02 7.58330758e-02 7.58221731e-02 7.58112752e-02 + 7.58003820e-02 7.57894935e-02 7.57786096e-02 7.57677305e-02 7.57568560e-02 + 7.57459862e-02 7.57351211e-02 7.57242607e-02 7.57134049e-02 7.57025538e-02 + 7.56917074e-02 7.56808656e-02 7.56700285e-02 7.56591961e-02 7.56483683e-02 + 7.56375451e-02 7.56267266e-02 7.56159127e-02 7.56051035e-02 7.55942989e-02 + 7.55834989e-02 7.55727035e-02 7.55619128e-02 7.55511267e-02 7.55403452e-02 + 7.55295684e-02 7.55187961e-02 7.55080285e-02 7.54972654e-02 7.54865070e-02 + 7.54757531e-02 7.54650039e-02 7.54542592e-02 7.54435192e-02 7.54327837e-02 + 7.54220528e-02 7.54113264e-02 7.54006047e-02 7.53898875e-02 7.53791749e-02 + 7.53684669e-02 7.53577634e-02 7.53470644e-02 7.53363701e-02 7.53256803e-02 + 7.53149950e-02 7.53043143e-02 7.52936381e-02 7.52829665e-02 7.52722994e-02 + 7.52616368e-02 7.52509787e-02 7.52403252e-02 7.52296762e-02 7.52190318e-02 + 7.52083918e-02 7.51977564e-02 7.51871255e-02 7.51764990e-02 7.51658771e-02 + 7.51552597e-02 7.51446468e-02 7.51340384e-02 7.51234344e-02 7.51128350e-02 + 7.51022400e-02 7.50916496e-02 7.50810636e-02 7.50704821e-02 7.50599050e-02 + 7.50493324e-02 7.50387643e-02 7.50282007e-02 7.50176415e-02 7.50070868e-02 + 7.49965365e-02 7.49859907e-02 7.49754493e-02 7.49649123e-02 7.49543799e-02 + 7.49438518e-02 7.49333282e-02 7.49228090e-02 7.49122942e-02 7.49017839e-02 + 7.48912780e-02 7.48807765e-02 7.48702794e-02 7.48597868e-02 7.48492985e-02 + 7.48388147e-02 7.48283352e-02 7.48178602e-02 7.48073895e-02 7.47969233e-02 + 7.47864614e-02 7.47760040e-02 7.47655509e-02 7.47551022e-02 7.47446579e-02 + 7.47342179e-02 7.47237824e-02 7.47133512e-02 7.47029243e-02 7.46925019e-02 + 7.46820838e-02 7.46716700e-02 7.46612606e-02 7.46508556e-02 7.46404549e-02 + 7.46300586e-02 7.46196666e-02 7.46092789e-02 7.45988956e-02 7.45885166e-02 + 7.45781419e-02 7.45677716e-02 7.45574056e-02 7.45470439e-02 7.45366865e-02 + 7.45263335e-02 7.45159847e-02 7.45056403e-02 7.44953002e-02 7.44849644e-02 + 7.44746329e-02 7.44643056e-02 7.44539827e-02 7.44436641e-02 7.44333497e-02 + 7.44230397e-02 7.44127339e-02 7.44024324e-02 7.43921352e-02 7.43818423e-02 + 7.43715536e-02 7.43612692e-02 7.43509890e-02 7.43407132e-02 7.43304416e-02 + 7.43201742e-02 7.43099111e-02 7.42996522e-02 7.42893976e-02 7.42791473e-02 + 7.42689011e-02 7.42586593e-02 7.42484216e-02 7.42381882e-02 7.42279590e-02 + 7.42177341e-02 7.42075133e-02 7.41972968e-02 7.41870845e-02 7.41768765e-02 + 7.41666726e-02 7.41564729e-02 7.41462775e-02 7.41360863e-02 7.41258992e-02 + 7.41157164e-02 7.41055377e-02 7.40953633e-02 7.40851930e-02 7.40750269e-02 + 7.40648650e-02 7.40547073e-02 7.40445538e-02 7.40344044e-02 7.40242592e-02 + 7.40141182e-02 7.40039814e-02 7.39938487e-02 7.39837202e-02 7.39735958e-02 + 7.39634756e-02 7.39533595e-02 7.39432476e-02 7.39331398e-02 7.39230362e-02 + 7.39129367e-02 7.39028414e-02 7.38927502e-02 7.38826631e-02 7.38725802e-02 + 7.38625014e-02 7.38524267e-02 7.38423561e-02 7.38322896e-02 7.38222273e-02 + 7.38121691e-02 7.38021150e-02 7.37920650e-02 7.37820191e-02 7.37719773e-02 + 7.37619396e-02 7.37519060e-02 7.37418765e-02 7.37318510e-02 7.37218297e-02 + 7.37118125e-02 7.37017993e-02 7.36917902e-02 7.36817852e-02 7.36717843e-02 + 7.36617874e-02 7.36517946e-02 7.36418059e-02 7.36318212e-02 7.36218406e-02 + 7.36118641e-02 7.36018916e-02 7.35919231e-02 7.35819587e-02 7.35719984e-02 + 7.35620421e-02 7.35520898e-02 7.35421416e-02 7.35321974e-02 7.35222572e-02 + 7.35123211e-02 7.35023890e-02 7.34924610e-02 7.34825369e-02 7.34726169e-02 + 7.34627009e-02 7.34527889e-02 7.34428809e-02 7.34329769e-02 7.34230769e-02 + 7.34131809e-02 7.34032890e-02 7.33934010e-02 7.33835170e-02 7.33736370e-02 + 7.33637610e-02 7.33538890e-02 7.33440210e-02 7.33341569e-02 7.33242969e-02 + 7.33144408e-02 7.33045886e-02 7.32947405e-02 7.32848963e-02 7.32750561e-02 + 7.32652199e-02 7.32553876e-02 7.32455592e-02 7.32357348e-02 7.32259144e-02 + 7.32160979e-02 7.32062854e-02 7.31964768e-02 7.31866722e-02 7.31768715e-02 + 7.31670747e-02 7.31572819e-02 7.31474930e-02 7.31377080e-02 7.31279269e-02 + 7.31181498e-02 7.31083766e-02 7.30986073e-02 7.30888419e-02 7.30790805e-02 + 7.30693229e-02 7.30595693e-02 7.30498195e-02 7.30400737e-02 7.30303318e-02 + 7.30205937e-02 7.30108596e-02 7.30011293e-02 7.29914030e-02 7.29816805e-02 + 7.29719619e-02 7.29622472e-02 7.29525364e-02 7.29428294e-02 7.29331263e-02 + 7.29234271e-02 7.29137318e-02 7.29040403e-02 7.28943527e-02 7.28846689e-02 + 7.28749890e-02 7.28653130e-02 7.28556408e-02 7.28459725e-02 7.28363080e-02 + 7.28266473e-02 7.28169905e-02 7.28073376e-02 7.27976885e-02 7.27880432e-02 + 7.27784017e-02 7.27687641e-02 7.27591303e-02 7.27495003e-02 7.27398742e-02 + 7.27302519e-02 7.27206334e-02 7.27110187e-02 7.27014078e-02 7.26918007e-02 + 7.26821975e-02 7.26725980e-02 7.26630023e-02 7.26534105e-02 7.26438224e-02 + 7.26342382e-02 7.26246577e-02 7.26150810e-02 7.26055081e-02 7.25959390e-02 + 7.25863737e-02 7.25768121e-02 7.25672544e-02 7.25577004e-02 7.25481502e-02 + 7.25386037e-02 7.25290610e-02 7.25195221e-02 7.25099870e-02 7.25004556e-02 + 7.24909279e-02 7.24814040e-02 7.24718839e-02 7.24623675e-02 7.24528549e-02 + 7.24433460e-02 7.24338409e-02 7.24243395e-02 7.24148418e-02 7.24053479e-02 + 7.23958577e-02 7.23863712e-02 7.23768885e-02 7.23674095e-02 7.23579342e-02 + 7.23484626e-02 7.23389948e-02 7.23295307e-02 7.23200702e-02 7.23106135e-02 + 7.23011605e-02 7.22917112e-02 7.22822656e-02 7.22728238e-02 7.22633856e-02 + 7.22539511e-02 7.22445203e-02 7.22350932e-02 7.22256698e-02 7.22162500e-02 + 7.22068340e-02 7.21974216e-02 7.21880130e-02 7.21786080e-02 7.21692066e-02 + 7.21598090e-02 7.21504150e-02 7.21410247e-02 7.21316380e-02 7.21222550e-02 + 7.21128757e-02 7.21035000e-02 7.20941280e-02 7.20847596e-02 7.20753949e-02 + 7.20660339e-02 7.20566765e-02 7.20473227e-02 7.20379726e-02 7.20286261e-02 + 7.20192832e-02 7.20099440e-02 7.20006084e-02 7.19912765e-02 7.19819481e-02 + 7.19726234e-02 7.19633024e-02 7.19539849e-02 7.19446711e-02 7.19353608e-02 + 7.19260542e-02 7.19167512e-02 7.19074518e-02 7.18981560e-02 7.18888639e-02 + 7.18795753e-02 7.18702903e-02 7.18610089e-02 7.18517311e-02 7.18424569e-02 + 7.18331863e-02 7.18239193e-02 7.18146559e-02 7.18053960e-02 7.17961398e-02 + 7.17868871e-02 7.17776380e-02 7.17683924e-02 7.17591505e-02 7.17499121e-02 + 7.17406772e-02 7.17314460e-02 7.17222183e-02 7.17129941e-02 7.17037735e-02 + 7.16945565e-02 7.16853430e-02 7.16761331e-02 7.16669267e-02 7.16577239e-02 + 7.16485246e-02 7.16393289e-02 7.16301367e-02 7.16209480e-02 7.16117629e-02 + 7.16025813e-02 7.15934032e-02 7.15842287e-02 7.15750577e-02 7.15658902e-02 + 7.15567262e-02 7.15475658e-02 7.15384089e-02 7.15292555e-02 7.15201056e-02 + 7.15109592e-02 7.15018163e-02 7.14926769e-02 7.14835410e-02 7.14744087e-02 + 7.14652798e-02 7.14561544e-02 7.14470325e-02 7.14379142e-02 7.14287993e-02 + 7.14196878e-02 7.14105799e-02 7.14014755e-02 7.13923745e-02 7.13832770e-02 + 7.13741830e-02 7.13650925e-02 7.13560055e-02 7.13469219e-02 7.13378418e-02 + 7.13287651e-02 7.13196919e-02 7.13106222e-02 7.13015559e-02 7.12924931e-02 + 7.12834338e-02 7.12743779e-02 7.12653254e-02 7.12562764e-02 7.12472309e-02 + 7.12381888e-02 7.12291501e-02 7.12201149e-02 7.12110831e-02 7.12020547e-02 + 7.11930298e-02 7.11840083e-02 7.11749902e-02 7.11659756e-02 7.11569644e-02 + 7.11479566e-02 7.11389522e-02 7.11299512e-02 7.11209537e-02 7.11119596e-02 + 7.11029689e-02 7.10939816e-02 7.10849977e-02 7.10760172e-02 7.10670401e-02 + 7.10580664e-02 7.10490961e-02 7.10401292e-02 7.10311657e-02 7.10222056e-02 + 7.10132489e-02 7.10042956e-02 7.09953456e-02 7.09863990e-02 7.09774559e-02 + 7.09685161e-02 7.09595796e-02 7.09506466e-02 7.09417169e-02 7.09327906e-02 + 7.09238677e-02 7.09149481e-02 7.09060319e-02 7.08971191e-02 7.08882096e-02 + 7.08793035e-02 7.08704007e-02 7.08615013e-02 7.08526052e-02 7.08437125e-02 + 7.08348231e-02 7.08259371e-02 7.08170544e-02 7.08081751e-02 7.07992991e-02 + 7.07904264e-02 7.07815571e-02 7.07726911e-02 7.07638285e-02 7.07549691e-02 + 7.07461131e-02 7.07372604e-02 7.07284111e-02 7.07195650e-02 7.07107223e-02 + 7.07018829e-02 7.06930468e-02 7.06842141e-02 7.06753846e-02 7.06665584e-02 + 7.06577356e-02 7.06489160e-02 7.06400998e-02 7.06312868e-02 7.06224772e-02 + 7.06136708e-02 7.06048678e-02 7.05960680e-02 7.05872715e-02 7.05784783e-02 + 7.05696884e-02 7.05609018e-02 7.05521184e-02 7.05433384e-02 7.05345616e-02 + 1.00000000e+00 9.75894263e-01 9.53451752e-01 9.32489601e-01 9.12851907e-01 + 8.94404826e-01 8.77032714e-01 8.60635068e-01 8.45124065e-01 8.30422576e-01 + 8.16462554e-01 8.03183696e-01 7.90532350e-01 7.78460602e-01 7.66925506e-01 + 7.55888443e-01 7.45314577e-01 7.35172390e-01 7.25433287e-01 7.16071258e-01 + 7.07062580e-01 6.98385572e-01 6.90020370e-01 6.81948734e-01 6.74153887e-01 + 6.66620364e-01 6.59333880e-01 6.52281224e-01 6.45450150e-01 6.38829295e-01 + 6.32408091e-01 6.26176704e-01 6.20125961e-01 6.14247300e-01 6.08532716e-01 + 6.02974715e-01 5.97566276e-01 5.92300808e-01 5.87172122e-01 5.82174396e-01 + 5.77302151e-01 5.72550221e-01 5.67913735e-01 5.63388093e-01 5.58968948e-01 + 5.54652188e-01 5.50433918e-01 5.46310451e-01 5.42278287e-01 5.38334105e-01 + 5.34474753e-01 5.30697232e-01 5.26998691e-01 5.23376415e-01 5.19827818e-01 + 5.16350438e-01 5.12941922e-01 5.09600027e-01 5.06322612e-01 5.03107629e-01 + 4.99953120e-01 4.96857213e-01 4.93818117e-01 4.90834114e-01 4.87903560e-01 + 4.85024878e-01 4.82196556e-01 4.79417141e-01 4.76685242e-01 4.73999519e-01 + 4.71358685e-01 4.68761505e-01 4.66206788e-01 4.63693390e-01 4.61220209e-01 + 4.58786184e-01 4.56390292e-01 4.54031548e-01 4.51709002e-01 4.49421737e-01 + 4.47168870e-01 4.44949545e-01 4.42762941e-01 4.40608259e-01 4.38484731e-01 + 4.36391613e-01 4.34328187e-01 4.32293756e-01 4.30287649e-01 4.28309213e-01 + 4.26357819e-01 4.24432857e-01 4.22533734e-01 4.20659877e-01 4.18810733e-01 + 4.16985761e-01 4.15184441e-01 4.13406264e-01 4.11650741e-01 4.09917394e-01 + 4.08205761e-01 4.06515390e-01 4.04845847e-01 4.03196706e-01 4.01567556e-01 + 3.99957996e-01 3.98367636e-01 3.96796098e-01 3.95243014e-01 3.93708024e-01 + 3.92190780e-01 3.90690944e-01 3.89208184e-01 3.87742180e-01 3.86292617e-01 + 3.84859191e-01 3.83441605e-01 3.82039569e-01 3.80652800e-01 3.79281024e-01 + 3.77923973e-01 3.76581385e-01 3.75253005e-01 3.73938583e-01 3.72637878e-01 + 3.71350652e-01 3.70076675e-01 3.68815719e-01 3.67567566e-01 3.66332000e-01 + 3.65108810e-01 3.63897792e-01 3.62698745e-01 3.61511473e-01 3.60335785e-01 + 3.59171493e-01 3.58018415e-01 3.56876371e-01 3.55745187e-01 3.54624691e-01 + 3.53514717e-01 3.52415101e-01 3.51325683e-01 3.50246306e-01 3.49176816e-01 + 3.48117064e-01 3.47066903e-01 3.46026189e-01 3.44994782e-01 3.43972542e-01 + 3.42959337e-01 3.41955032e-01 3.40959498e-01 3.39972609e-01 3.38994241e-01 + 3.38024270e-01 3.37062579e-01 3.36109049e-01 3.35163566e-01 3.34226018e-01 + 3.33296293e-01 3.32374284e-01 3.31459885e-01 3.30552992e-01 3.29653502e-01 + 3.28761315e-01 3.27876333e-01 3.26998460e-01 3.26127600e-01 3.25263662e-01 + 3.24406553e-01 3.23556184e-01 3.22712468e-01 3.21875318e-01 3.21044649e-01 + 3.20220378e-01 3.19402424e-01 3.18590706e-01 3.17785145e-01 3.16985665e-01 + 3.16192188e-01 3.15404639e-01 3.14622947e-01 3.13847038e-01 3.13076841e-01 + 3.12312287e-01 3.11553306e-01 3.10799833e-01 3.10051800e-01 3.09309142e-01 + 3.08571795e-01 3.07839697e-01 3.07112784e-01 3.06390997e-01 3.05674275e-01 + 3.04962560e-01 3.04255793e-01 3.03553917e-01 3.02856876e-01 3.02164615e-01 + 3.01477079e-01 3.00794216e-01 3.00115971e-01 2.99442294e-01 2.98773134e-01 + 2.98108439e-01 2.97448161e-01 2.96792252e-01 2.96140662e-01 2.95493345e-01 + 2.94850254e-01 2.94211344e-01 2.93576570e-01 2.92945886e-01 2.92319250e-01 + 2.91696618e-01 2.91077947e-01 2.90463197e-01 2.89852325e-01 2.89245291e-01 + 2.88642055e-01 2.88042577e-01 2.87446820e-01 2.86854743e-01 2.86266311e-01 + 2.85681484e-01 2.85100228e-01 2.84522505e-01 2.83948280e-01 2.83377517e-01 + 2.82810183e-01 2.82246243e-01 2.81685662e-01 2.81128409e-01 2.80574450e-01 + 2.80023753e-01 2.79476286e-01 2.78932017e-01 2.78390916e-01 2.77852951e-01 + 2.77318094e-01 2.76786313e-01 2.76257580e-01 2.75731865e-01 2.75209140e-01 + 2.74689377e-01 2.74172548e-01 2.73658625e-01 2.73147581e-01 2.72639389e-01 + 2.72134024e-01 2.71631458e-01 2.71131667e-01 2.70634624e-01 2.70140305e-01 + 2.69648684e-01 2.69159738e-01 2.68673442e-01 2.68189772e-01 2.67708706e-01 + 2.67230218e-01 2.66754287e-01 2.66280890e-01 2.65810005e-01 2.65341608e-01 + 2.64875680e-01 2.64412197e-01 2.63951138e-01 2.63492483e-01 2.63036211e-01 + 2.62582301e-01 2.62130732e-01 2.61681486e-01 2.61234541e-01 2.60789879e-01 + 2.60347479e-01 2.59907323e-01 2.59469393e-01 2.59033668e-01 2.58600131e-01 + 2.58168764e-01 2.57739549e-01 2.57312467e-01 2.56887501e-01 2.56464633e-01 + 2.56043847e-01 2.55625126e-01 2.55208452e-01 2.54793809e-01 2.54381180e-01 + 2.53970550e-01 2.53561902e-01 2.53155220e-01 2.52750489e-01 2.52347693e-01 + 2.51946816e-01 2.51547844e-01 2.51150761e-01 2.50755553e-01 2.50362204e-01 + 2.49970701e-01 2.49581029e-01 2.49193173e-01 2.48807120e-01 2.48422856e-01 + 2.48040367e-01 2.47659639e-01 2.47280658e-01 2.46903413e-01 2.46527888e-01 + 2.46154072e-01 2.45781951e-01 2.45411513e-01 2.45042745e-01 2.44675634e-01 + 2.44310168e-01 2.43946335e-01 2.43584122e-01 2.43223518e-01 2.42864511e-01 + 2.42507089e-01 2.42151241e-01 2.41796954e-01 2.41444218e-01 2.41093021e-01 + 2.40743352e-01 2.40395201e-01 2.40048555e-01 2.39703404e-01 2.39359739e-01 + 2.39017547e-01 2.38676818e-01 2.38337542e-01 2.37999710e-01 2.37663309e-01 + 2.37328332e-01 2.36994766e-01 2.36662603e-01 2.36331833e-01 2.36002446e-01 + 2.35674432e-01 2.35347783e-01 2.35022487e-01 2.34698537e-01 2.34375923e-01 + 2.34054635e-01 2.33734666e-01 2.33416004e-01 2.33098643e-01 2.32782573e-01 + 2.32467784e-01 2.32154270e-01 2.31842020e-01 2.31531028e-01 2.31221283e-01 + 2.30912778e-01 2.30605504e-01 2.30299454e-01 2.29994620e-01 2.29690992e-01 + 2.29388564e-01 2.29087328e-01 2.28787275e-01 2.28488398e-01 2.28190689e-01 + 2.27894141e-01 2.27598746e-01 2.27304497e-01 2.27011386e-01 2.26719406e-01 + 2.26428550e-01 2.26138810e-01 2.25850180e-01 2.25562652e-01 2.25276219e-01 + 2.24990875e-01 2.24706613e-01 2.24423425e-01 2.24141305e-01 2.23860246e-01 + 2.23580243e-01 2.23301287e-01 2.23023372e-01 2.22746493e-01 2.22470643e-01 + 2.22195814e-01 2.21922002e-01 2.21649200e-01 2.21377401e-01 2.21106599e-01 + 2.20836789e-01 2.20567964e-01 2.20300119e-01 2.20033247e-01 2.19767342e-01 + 2.19502400e-01 2.19238413e-01 2.18975376e-01 2.18713284e-01 2.18452130e-01 + 2.18191910e-01 2.17932618e-01 2.17674247e-01 2.17416794e-01 2.17160252e-01 + 2.16904616e-01 2.16649880e-01 2.16396040e-01 2.16143090e-01 2.15891025e-01 + 2.15639840e-01 2.15389530e-01 2.15140089e-01 2.14891513e-01 2.14643796e-01 + 2.14396935e-01 2.14150923e-01 2.13905756e-01 2.13661429e-01 2.13417937e-01 + 2.13175276e-01 2.12933441e-01 2.12692427e-01 2.12452229e-01 2.12212843e-01 + 2.11974265e-01 2.11736490e-01 2.11499513e-01 2.11263330e-01 2.11027936e-01 + 2.10793328e-01 2.10559500e-01 2.10326449e-01 2.10094169e-01 2.09862658e-01 + 2.09631910e-01 2.09401922e-01 2.09172689e-01 2.08944208e-01 2.08716473e-01 + 2.08489481e-01 2.08263229e-01 2.08037711e-01 2.07812924e-01 2.07588865e-01 + 2.07365528e-01 2.07142911e-01 2.06921010e-01 2.06699820e-01 2.06479337e-01 + 2.06259559e-01 2.06040481e-01 2.05822100e-01 2.05604412e-01 2.05387413e-01 + 2.05171099e-01 2.04955468e-01 2.04740515e-01 2.04526237e-01 2.04312630e-01 + 2.04099691e-01 2.03887417e-01 2.03675803e-01 2.03464847e-01 2.03254545e-01 + 2.03044894e-01 2.02835891e-01 2.02627531e-01 2.02419812e-01 2.02212731e-01 + 2.02006284e-01 2.01800468e-01 2.01595280e-01 2.01390716e-01 2.01186774e-01 + 2.00983451e-01 2.00780742e-01 2.00578646e-01 2.00377158e-01 2.00176277e-01 + 1.99975998e-01 1.99776320e-01 1.99577238e-01 1.99378751e-01 1.99180854e-01 + 1.98983546e-01 1.98786822e-01 1.98590681e-01 1.98395120e-01 1.98200135e-01 + 1.98005724e-01 1.97811884e-01 1.97618612e-01 1.97425905e-01 1.97233761e-01 + 1.97042177e-01 1.96851151e-01 1.96660678e-01 1.96470758e-01 1.96281387e-01 + 1.96092562e-01 1.95904281e-01 1.95716541e-01 1.95529341e-01 1.95342676e-01 + 1.95156545e-01 1.94970945e-01 1.94785873e-01 1.94601328e-01 1.94417306e-01 + 1.94233805e-01 1.94050823e-01 1.93868357e-01 1.93686404e-01 1.93504963e-01 + 1.93324031e-01 1.93143606e-01 1.92963685e-01 1.92784265e-01 1.92605345e-01 + 1.92426923e-01 1.92248995e-01 1.92071560e-01 1.91894616e-01 1.91718159e-01 + 1.91542189e-01 1.91366702e-01 1.91191696e-01 1.91017170e-01 1.90843121e-01 + 1.90669546e-01 1.90496445e-01 1.90323814e-01 1.90151652e-01 1.89979956e-01 + 1.89808724e-01 1.89637954e-01 1.89467644e-01 1.89297793e-01 1.89128397e-01 + 1.88959456e-01 1.88790966e-01 1.88622926e-01 1.88455335e-01 1.88288189e-01 + 1.88121487e-01 1.87955227e-01 1.87789407e-01 1.87624025e-01 1.87459079e-01 + 1.87294568e-01 1.87130489e-01 1.86966840e-01 1.86803620e-01 1.86640827e-01 + 1.86478458e-01 1.86316513e-01 1.86154989e-01 1.85993884e-01 1.85833197e-01 + 1.85672925e-01 1.85513068e-01 1.85353622e-01 1.85194587e-01 1.85035961e-01 + 1.84877742e-01 1.84719927e-01 1.84562517e-01 1.84405508e-01 1.84248899e-01 + 1.84092688e-01 1.83936874e-01 1.83781455e-01 1.83626429e-01 1.83471795e-01 + 1.83317551e-01 1.83163695e-01 1.83010226e-01 1.82857142e-01 1.82704442e-01 + 1.82552123e-01 1.82400185e-01 1.82248626e-01 1.82097444e-01 1.81946637e-01 + 1.81796204e-01 1.81646144e-01 1.81496455e-01 1.81347136e-01 1.81198184e-01 + 1.81049599e-01 1.80901378e-01 1.80753522e-01 1.80606027e-01 1.80458892e-01 + 1.80312117e-01 1.80165699e-01 1.80019637e-01 1.79873930e-01 1.79728576e-01 + 1.79583574e-01 1.79438922e-01 1.79294620e-01 1.79150665e-01 1.79007056e-01 + 1.78863792e-01 1.78720871e-01 1.78578292e-01 1.78436054e-01 1.78294156e-01 + 1.78152595e-01 1.78011371e-01 1.77870482e-01 1.77729928e-01 1.77589706e-01 + 1.77449815e-01 1.77310255e-01 1.77171023e-01 1.77032119e-01 1.76893540e-01 + 1.76755287e-01 1.76617358e-01 1.76479751e-01 1.76342465e-01 1.76205499e-01 + 1.76068851e-01 1.75932521e-01 1.75796507e-01 1.75660808e-01 1.75525423e-01 + 1.75390351e-01 1.75255589e-01 1.75121138e-01 1.74986996e-01 1.74853162e-01 + 1.74719634e-01 1.74586412e-01 1.74453494e-01 1.74320879e-01 1.74188566e-01 + 1.74056554e-01 1.73924842e-01 1.73793428e-01 1.73662312e-01 1.73531492e-01 + 1.73400967e-01 1.73270736e-01 1.73140798e-01 1.73011152e-01 1.72881797e-01 + 1.72752732e-01 1.72623955e-01 1.72495466e-01 1.72367263e-01 1.72239346e-01 + 1.72111713e-01 1.71984363e-01 1.71857296e-01 1.71730510e-01 1.71604004e-01 + 1.71477777e-01 1.71351828e-01 1.71226157e-01 1.71100761e-01 1.70975641e-01 + 1.70850795e-01 1.70726222e-01 1.70601921e-01 1.70477891e-01 1.70354131e-01 + 1.70230640e-01 1.70107418e-01 1.69984462e-01 1.69861773e-01 1.69739349e-01 + 1.69617190e-01 1.69495294e-01 1.69373660e-01 1.69252288e-01 1.69131176e-01 + 1.69010324e-01 1.68889731e-01 1.68769395e-01 1.68649317e-01 1.68529494e-01 + 1.68409926e-01 1.68290613e-01 1.68171552e-01 1.68052744e-01 1.67934188e-01 + 1.67815882e-01 1.67697825e-01 1.67580018e-01 1.67462458e-01 1.67345146e-01 + 1.67228079e-01 1.67111258e-01 1.66994682e-01 1.66878349e-01 1.66762259e-01 + 1.66646411e-01 1.66530804e-01 1.66415437e-01 1.66300309e-01 1.66185421e-01 + 1.66070770e-01 1.65956356e-01 1.65842178e-01 1.65728235e-01 1.65614527e-01 + 1.65501053e-01 1.65387812e-01 1.65274803e-01 1.65162025e-01 1.65049477e-01 + 1.64937160e-01 1.64825071e-01 1.64713211e-01 1.64601578e-01 1.64490172e-01 + 1.64378991e-01 1.64268036e-01 1.64157305e-01 1.64046798e-01 1.63936514e-01 + 1.63826452e-01 1.63716611e-01 1.63606991e-01 1.63497591e-01 1.63388409e-01 + 1.63279447e-01 1.63170702e-01 1.63062174e-01 1.62953862e-01 1.62845766e-01 + 1.62737885e-01 1.62630217e-01 1.62522764e-01 1.62415523e-01 1.62308493e-01 + 1.62201676e-01 1.62095069e-01 1.61988671e-01 1.61882483e-01 1.61776504e-01 + 1.61670732e-01 1.61565168e-01 1.61459810e-01 1.61354658e-01 1.61249711e-01 + 1.61144969e-01 1.61040431e-01 1.60936095e-01 1.60831963e-01 1.60728032e-01 + 1.60624302e-01 1.60520773e-01 1.60417444e-01 1.60314314e-01 1.60211383e-01 + 1.60108650e-01 1.60006114e-01 1.59903775e-01 1.59801632e-01 1.59699684e-01 + 1.59597932e-01 1.59496373e-01 1.59395009e-01 1.59293837e-01 1.59192858e-01 + 1.59092070e-01 1.58991474e-01 1.58891068e-01 1.58790852e-01 1.58690826e-01 + 1.58590988e-01 1.58491339e-01 1.58391877e-01 1.58292602e-01 1.58193514e-01 + 1.58094612e-01 1.57995894e-01 1.57897362e-01 1.57799013e-01 1.57700849e-01 + 1.57602867e-01 1.57505067e-01 1.57407450e-01 1.57310013e-01 1.57212758e-01 + 1.57115682e-01 1.57018786e-01 1.56922069e-01 1.56825531e-01 1.56729171e-01 + 1.56632988e-01 1.56536982e-01 1.56441152e-01 1.56345498e-01 1.56250019e-01 + 1.56154715e-01 1.56059585e-01 1.55964629e-01 1.55869846e-01 1.55775235e-01 + 1.55680797e-01 1.55586530e-01 1.55492434e-01 1.55398509e-01 1.55304754e-01 + 1.55211168e-01 1.55117751e-01 1.55024502e-01 1.54931422e-01 1.54838509e-01 + 1.54745763e-01 1.54653183e-01 1.54560770e-01 1.54468522e-01 1.54376439e-01 + 1.54284520e-01 1.54192765e-01 1.54101174e-01 1.54009746e-01 1.53918481e-01 + 1.53827377e-01 1.53736435e-01 1.53645654e-01 1.53555034e-01 1.53464574e-01 + 1.53374274e-01 1.53284132e-01 1.53194150e-01 1.53104326e-01 1.53014660e-01 + 1.52925151e-01 1.52835798e-01 1.52746603e-01 1.52657563e-01 1.52568679e-01 + 1.52479950e-01 1.52391376e-01 1.52302955e-01 1.52214689e-01 1.52126576e-01 + 1.52038615e-01 1.51950807e-01 1.51863151e-01 1.51775647e-01 1.51688293e-01 + 1.51601091e-01 1.51514038e-01 1.51427135e-01 1.51340382e-01 1.51253778e-01 + 1.51167322e-01 1.51081014e-01 1.50994854e-01 1.50908841e-01 1.50822975e-01 + 1.50737255e-01 1.50651681e-01 1.50566253e-01 1.50480970e-01 1.50395832e-01 + 1.50310838e-01 1.50225988e-01 1.50141281e-01 1.50056718e-01 1.49972298e-01 + 1.49888019e-01 1.49803883e-01 1.49719888e-01 1.49636035e-01 1.49552322e-01 + 1.49468749e-01 1.49385316e-01 1.49302023e-01 1.49218869e-01 1.49135854e-01 + 1.49052977e-01 1.48970239e-01 1.48887638e-01 1.48805174e-01 1.48722847e-01 + 1.48640656e-01 1.48558602e-01 1.48476683e-01 1.48394900e-01 1.48313252e-01 + 1.48231738e-01 1.48150359e-01 1.48069113e-01 1.47988001e-01 1.47907022e-01 + 1.47826176e-01 1.47745463e-01 1.47664881e-01 1.47584431e-01 1.47504113e-01 + 1.47423925e-01 1.47343868e-01 1.47263942e-01 1.47184145e-01 1.47104478e-01 + 1.47024940e-01 1.46945531e-01 1.46866251e-01 1.46787099e-01 1.46708074e-01 + 1.46629177e-01 1.46550407e-01 1.46471764e-01 1.46393248e-01 1.46314857e-01 + 1.46236593e-01 1.46158454e-01 1.46080440e-01 1.46002551e-01 1.45924786e-01 + 1.45847145e-01 1.45769628e-01 1.45692235e-01 1.45614965e-01 1.45537817e-01 + 1.45460792e-01 1.45383890e-01 1.45307109e-01 1.45230449e-01 1.45153911e-01 + 1.45077494e-01 1.45001197e-01 1.44925021e-01 1.44848964e-01 1.44773027e-01 + 1.44697209e-01 1.44621511e-01 1.44545931e-01 1.44470469e-01 1.44395126e-01 + 1.44319900e-01 1.44244791e-01 1.44169800e-01 1.44094926e-01 1.44020168e-01 + 1.43945527e-01 1.43871001e-01 1.43796591e-01 1.43722296e-01 1.43648117e-01 + 1.43574052e-01 1.43500101e-01 1.43426265e-01 1.43352542e-01 1.43278934e-01 + 1.43205438e-01 1.43132055e-01 1.43058785e-01 1.42985628e-01 1.42912583e-01 + 1.42839649e-01 1.42766827e-01 1.42694116e-01 1.42621516e-01 1.42549027e-01 + 1.42476649e-01 1.42404380e-01 1.42332222e-01 1.42260172e-01 1.42188233e-01 + 1.42116402e-01 1.42044680e-01 1.41973066e-01 1.41901561e-01 1.41830164e-01 + 1.41758874e-01 1.41687692e-01 1.41616617e-01 1.41545648e-01 1.41474786e-01 + 1.41404031e-01 1.41333382e-01 1.41262838e-01 1.41192400e-01 1.41122067e-01 + 1.41051839e-01 1.40981716e-01 1.40911698e-01 1.40841783e-01 1.40771973e-01 + 1.40702266e-01 1.40632663e-01 1.40563163e-01 1.40493766e-01 1.40424471e-01 + 1.40355279e-01 1.40286189e-01 1.40217202e-01 1.40148315e-01 1.40079531e-01 + 1.40010847e-01 1.39942264e-01 1.39873782e-01 1.39805401e-01 1.39737119e-01 + 1.39668938e-01 1.39600856e-01 1.39532874e-01 1.39464991e-01 1.39397207e-01 + 1.39329522e-01 1.39261935e-01 1.39194446e-01 1.39127056e-01 1.39059763e-01 + 1.38992568e-01 1.38925470e-01 1.38858469e-01 1.38791565e-01 1.38724758e-01 + 1.38658047e-01 1.38591432e-01 1.38524913e-01 1.38458490e-01 1.38392162e-01 + 1.38325930e-01 1.38259792e-01 1.38193750e-01 1.38127801e-01 1.38061947e-01 + 1.37996188e-01 1.37930522e-01 1.37864950e-01 1.37799471e-01 1.37734085e-01 + 1.37668793e-01 1.37603593e-01 1.37538485e-01 1.37473471e-01 1.37408548e-01 + 1.37343717e-01 1.37278977e-01 1.37214330e-01 1.37149773e-01 1.37085308e-01 + 1.37020933e-01 1.36956649e-01 1.36892455e-01 1.36828351e-01 1.36764338e-01 + 1.36700414e-01 1.36636580e-01 1.36572835e-01 1.36509179e-01 1.36445612e-01 + 1.36382134e-01 1.36318745e-01 1.36255443e-01 1.36192230e-01 1.36129105e-01 + 1.36066067e-01 1.36003117e-01 1.35940254e-01 1.35877478e-01 1.35814789e-01 + 1.35752187e-01 1.35689672e-01 1.35627242e-01 1.35564899e-01 1.35502641e-01 + 1.35440470e-01 1.35378384e-01 1.35316383e-01 1.35254467e-01 1.35192636e-01 + 1.35130890e-01 1.35069228e-01 1.35007651e-01 1.34946158e-01 1.34884748e-01 + 1.34823423e-01 1.34762181e-01 1.34701022e-01 1.34639947e-01 1.34578955e-01 + 1.34518045e-01 1.34457218e-01 1.34396474e-01 1.34335812e-01 1.34275232e-01 + 1.34214733e-01 1.34154317e-01 1.34093982e-01 1.34033728e-01 1.33973556e-01 + 1.33913464e-01 1.33853453e-01 1.33793523e-01 1.33733673e-01 1.33673904e-01 + 1.33614214e-01 1.33554605e-01 1.33495075e-01 1.33435625e-01 1.33376254e-01 + 1.33316962e-01 1.33257749e-01 1.33198615e-01 1.33139560e-01 1.33080583e-01 + 1.33021685e-01 1.32962864e-01 1.32904122e-01 1.32845457e-01 1.32786870e-01 + 1.32728361e-01 1.32669928e-01 1.32611573e-01 1.32553295e-01 1.32495093e-01 + 1.32436968e-01 1.32378920e-01 1.32320948e-01 1.32263052e-01 1.32205232e-01 + 1.32147487e-01 1.32089818e-01 1.32032225e-01 1.31974707e-01 1.31917264e-01 + 1.31859896e-01 1.31802603e-01 1.31745384e-01 1.31688240e-01 1.31631170e-01 + 1.31574174e-01 1.31517252e-01 1.31460404e-01 1.31403630e-01 1.31346929e-01 + 1.31290301e-01 1.31233747e-01 1.31177266e-01 1.31120857e-01 1.31064522e-01 + 1.31008258e-01 1.30952068e-01 1.30895949e-01 1.30839903e-01 1.30783928e-01 + 1.30728025e-01 1.30672194e-01 1.30616435e-01 1.30560746e-01 1.30505129e-01 + 1.30449583e-01 1.30394108e-01 1.30338703e-01 1.30283369e-01 1.30228105e-01 + 1.30172912e-01 1.30117789e-01 1.30062736e-01 1.30007752e-01 1.29952839e-01 + 1.29897994e-01 1.29843219e-01 1.29788514e-01 1.29733877e-01 1.29679310e-01 + 1.29624811e-01 1.29570381e-01 1.29516019e-01 1.29461726e-01 1.29407501e-01 + 1.29353344e-01 1.29299255e-01 1.29245234e-01 1.29191280e-01 1.29137394e-01 + 1.29083575e-01 1.29029824e-01 1.28976140e-01 1.28922522e-01 1.28868972e-01 + 1.28815488e-01 1.28762070e-01 1.28708719e-01 1.28655435e-01 1.28602216e-01 + 1.28549063e-01 1.28495977e-01 1.28442955e-01 1.28390000e-01 1.28337110e-01 + 1.28284285e-01 1.28231526e-01 1.28178831e-01 1.28126202e-01 1.28073637e-01 + 1.28021137e-01 1.27968701e-01 1.27916330e-01 1.27864023e-01 1.27811780e-01 + 1.27759601e-01 1.27707486e-01 1.27655434e-01 1.27603447e-01 1.27551522e-01 + 1.27499661e-01 1.27447864e-01 1.27396129e-01 1.27344457e-01 1.27292848e-01 + 1.27241302e-01 1.27189818e-01 1.27138397e-01 1.27087038e-01 1.27035742e-01 + 1.26984507e-01 1.26933334e-01 1.26882223e-01 1.26831174e-01 1.26780187e-01 + 1.26729260e-01 1.26678396e-01 1.26627592e-01 1.26576849e-01 1.26526168e-01 + 1.26475547e-01 1.26424987e-01 1.26374487e-01 1.26324048e-01 1.26273670e-01 + 1.26223351e-01 1.26173093e-01 1.26122894e-01 1.26072756e-01 1.26022677e-01 + 1.25972658e-01 1.25922698e-01 1.25872798e-01 1.25822957e-01 1.25773176e-01 + 1.25723453e-01 1.25673789e-01 1.25624184e-01 1.25574638e-01 1.25525150e-01 + 1.25475721e-01 1.25426350e-01 1.25377037e-01 1.25327782e-01 1.25278586e-01 + 1.25229447e-01 1.25180366e-01 1.25131343e-01 1.25082377e-01 1.25033469e-01 + 1.24984618e-01 1.24935824e-01 1.24887088e-01 1.24838408e-01 1.24789785e-01 + 1.24741219e-01 1.24692710e-01 1.24644257e-01 1.24595861e-01 1.24547521e-01 + 1.24499237e-01 1.24451010e-01 1.24402838e-01 1.24354722e-01 1.24306662e-01 + 1.24258658e-01 1.24210709e-01 1.24162816e-01 1.24114978e-01 1.24067195e-01 + 1.24019468e-01 1.23971795e-01 1.23924178e-01 1.23876615e-01 1.23829107e-01 + 1.23781654e-01 1.23734255e-01 1.23686910e-01 1.23639620e-01 1.23592384e-01 + 1.23545202e-01 1.23498075e-01 1.23451001e-01 1.23403980e-01 1.23357014e-01 + 1.23310101e-01 1.23263242e-01 1.23216436e-01 1.23169683e-01 1.23122983e-01 + 1.23076337e-01 1.23029743e-01 1.22983202e-01 1.22936715e-01 1.22890279e-01 + 1.22843897e-01 1.22797567e-01 1.22751289e-01 1.22705063e-01 1.22658890e-01 + 1.22612769e-01 1.22566700e-01 1.22520682e-01 1.22474717e-01 1.22428803e-01 + 1.22382941e-01 1.22337130e-01 1.22291371e-01 1.22245663e-01 1.22200006e-01 + 1.22154400e-01 1.22108845e-01 1.22063342e-01 1.22017889e-01 1.21972487e-01 + 1.21927135e-01 1.21881834e-01 1.21836584e-01 1.21791383e-01 1.21746234e-01 + 1.21701134e-01 1.21656084e-01 1.21611085e-01 1.21566135e-01 1.21521235e-01 + 1.21476385e-01 1.21431584e-01 1.21386833e-01 1.21342131e-01 1.21297479e-01 + 1.21252876e-01 1.21208322e-01 1.21163817e-01 1.21119362e-01 1.21074955e-01 + 1.21030597e-01 1.20986287e-01 1.20942026e-01 1.20897814e-01 1.20853651e-01 + 1.20809535e-01 1.20765468e-01 1.20721449e-01 1.20677478e-01 1.20633555e-01 + 1.20589681e-01 1.20545854e-01 1.20502074e-01 1.20458343e-01 1.20414659e-01 + 1.20371022e-01 1.20327433e-01 1.20283891e-01 1.20240396e-01 1.20196949e-01 + 1.20153549e-01 1.20110195e-01 1.20066889e-01 1.20023629e-01 1.19980416e-01 + 1.19937250e-01 1.19894130e-01 1.19851056e-01 1.19808030e-01 1.19765049e-01 + 1.19722115e-01 1.19679226e-01 1.19636384e-01 1.19593588e-01 1.19550838e-01 + 1.19508133e-01 1.19465474e-01 1.19422861e-01 1.19380294e-01 1.19337772e-01 + 1.19295295e-01 1.19252863e-01 1.19210477e-01 1.19168136e-01 1.19125841e-01 + 1.19083590e-01 1.19041384e-01 1.18999223e-01 1.18957106e-01 1.18915035e-01 + 1.18873008e-01 1.18831025e-01 1.18789087e-01 1.18747194e-01 1.18705344e-01 + 1.18663539e-01 1.18621778e-01 1.18580061e-01 1.18538388e-01 1.18496759e-01 + 1.18455174e-01 1.18413632e-01 1.18372134e-01 1.18330680e-01 1.18289269e-01 + 1.18247902e-01 1.18206578e-01 1.18165298e-01 1.18124060e-01 1.18082866e-01 + 1.18041715e-01 1.18000607e-01 1.17959541e-01 1.17918519e-01 1.17877539e-01 + 1.17836602e-01 1.17795708e-01 1.17754856e-01 1.17714047e-01 1.17673280e-01 + 1.17632556e-01 1.17591873e-01 1.17551233e-01 1.17510635e-01 1.17470079e-01 + 1.17429565e-01 1.17389093e-01 1.17348662e-01 1.17308274e-01 1.17267927e-01 + 1.17227622e-01 1.17187358e-01 1.17147135e-01 1.17106955e-01 1.17066815e-01 + 1.17026717e-01 1.16986659e-01 1.16946643e-01 1.16906668e-01 1.16866734e-01 + 1.16826841e-01 1.16786988e-01 1.16747177e-01 1.16707406e-01 1.16667676e-01 + 1.16627986e-01 1.16588337e-01 1.16548728e-01 1.16509159e-01 1.16469631e-01 + 1.16430143e-01 1.16390695e-01 1.16351287e-01 1.16311919e-01 1.16272591e-01 + 1.16233303e-01 1.16194055e-01 1.16154846e-01 1.16115678e-01 1.16076548e-01 + 1.16037459e-01 1.15998408e-01 1.15959397e-01 1.15920426e-01 1.15881494e-01 + 1.15842601e-01 1.15803747e-01 1.15764932e-01 1.15726156e-01 1.15687419e-01 + 1.15648721e-01 1.15610062e-01 1.15571441e-01 1.15532859e-01 1.15494316e-01 + 1.15455812e-01 1.15417345e-01 1.15378918e-01 1.15340528e-01 1.15302177e-01 + 1.15263864e-01 1.15225590e-01 1.15187353e-01 1.15149155e-01 1.15110994e-01 + 1.15072871e-01 1.15034786e-01 1.14996739e-01 1.14958730e-01 1.14920759e-01 + 1.14882824e-01 1.14844928e-01 1.14807069e-01 1.14769247e-01 1.14731463e-01 + 1.14693716e-01 1.14656006e-01 1.14618334e-01 1.14580699e-01 1.14543100e-01 + 1.14505539e-01 1.14468014e-01 1.14430527e-01 1.14393076e-01 1.14355662e-01 + 1.14318284e-01 1.14280944e-01 1.14243640e-01 1.14206372e-01 1.14169141e-01 + 1.14131946e-01 1.14094787e-01 1.14057665e-01 1.14020579e-01 1.13983529e-01 + 1.13946515e-01 1.13909538e-01 1.13872596e-01 1.13835690e-01 1.13798820e-01 + 1.13761986e-01 1.13725188e-01 1.13688425e-01 1.13651698e-01 1.13615006e-01 + 1.13578350e-01 1.13541730e-01 1.13505144e-01 1.13468595e-01 1.13432080e-01 + 1.13395601e-01 1.13359156e-01 1.13322747e-01 1.13286373e-01 1.13250035e-01 + 1.13213730e-01 1.13177461e-01 1.13141227e-01 1.13105028e-01 1.13068863e-01 + 1.13032733e-01 1.12996637e-01 1.12960576e-01 1.12924550e-01 1.12888558e-01 + 1.12852600e-01 1.12816677e-01 1.12780788e-01 1.12744933e-01 1.12709112e-01 + 1.12673326e-01 1.12637574e-01 1.12601855e-01 1.12566171e-01 1.12530520e-01 + 1.12494904e-01 1.12459321e-01 1.12423772e-01 1.12388256e-01 1.12352774e-01 + 1.12317326e-01 1.12281911e-01 1.12246530e-01 1.12211182e-01 1.12175868e-01 + 1.12140587e-01 1.12105339e-01 1.12070125e-01 1.12034943e-01 1.11999795e-01 + 1.11964679e-01 1.11929597e-01 1.11894548e-01 1.11859532e-01 1.11824548e-01 + 1.11789597e-01 1.11754679e-01 1.11719794e-01 1.11684941e-01 1.11650121e-01 + 1.11615334e-01 1.11580579e-01 1.11545856e-01 1.11511166e-01 1.11476508e-01 + 1.11441883e-01 1.11407289e-01 1.11372728e-01 1.11338199e-01 1.11303703e-01 + 1.11269238e-01 1.11234805e-01 1.11200404e-01 1.11166035e-01 1.11131698e-01 + 1.11097393e-01 1.11063119e-01 1.11028877e-01 1.10994667e-01 1.10960489e-01 + 1.10926342e-01 1.10892226e-01 1.10858142e-01 1.10824089e-01 1.10790068e-01 + 1.10756078e-01 1.10722119e-01 1.10688192e-01 1.10654295e-01 1.10620430e-01 + 1.10586596e-01 1.10552793e-01 1.10519021e-01 1.10485279e-01 1.10451569e-01 + 1.10417890e-01 1.10384241e-01 1.10350623e-01 1.10317036e-01 1.10283479e-01 + 1.10249953e-01 1.10216458e-01 1.10182993e-01 1.10149558e-01 1.10116154e-01 + 1.10082780e-01 1.10049437e-01 1.10016124e-01 1.09982841e-01 1.09949588e-01 + 1.09916366e-01 1.09883174e-01 1.09850011e-01 1.09816879e-01 1.09783776e-01 + 1.09750704e-01 1.09717661e-01 1.09684648e-01 1.09651665e-01 1.09618712e-01 + 1.09585789e-01 1.09552895e-01 1.09520030e-01 1.09487196e-01 1.09454390e-01 + 1.09421615e-01 1.09388868e-01 1.09356151e-01 1.09323464e-01 1.09290805e-01 + 1.09258176e-01 1.09225576e-01 1.09193006e-01 1.09160464e-01 1.09127951e-01 + 1.09095468e-01 1.09063013e-01 1.09030588e-01 1.08998191e-01 1.08965824e-01 + 1.08933485e-01 1.08901174e-01 1.08868893e-01 1.08836640e-01 1.08804416e-01 + 1.08772220e-01 1.08740054e-01 1.08707915e-01 1.08675805e-01 1.08643724e-01 + 1.08611671e-01 1.08579646e-01 1.08547649e-01 1.08515681e-01 1.08483741e-01 + 1.08451829e-01 1.08419946e-01 1.08388090e-01 1.08356263e-01 1.08324463e-01 + 1.08292692e-01 1.08260948e-01 1.08229233e-01 1.08197545e-01 1.08165885e-01 + 1.08134253e-01 1.08102648e-01 1.08071072e-01 1.08039523e-01 1.08008001e-01 + 1.07976507e-01 1.07945041e-01 1.07913602e-01 1.07882191e-01 1.07850807e-01 + 1.07819450e-01 1.07788121e-01 1.07756819e-01 1.07725544e-01 1.07694296e-01 + 1.07663076e-01 1.07631883e-01 1.07600717e-01 1.07569578e-01 1.07538466e-01 + 1.07507381e-01 1.07476322e-01 1.07445291e-01 1.07414287e-01 1.07383309e-01 + 1.07352359e-01 1.07321435e-01 1.07290537e-01 1.07259667e-01 1.07228823e-01 + 1.07198005e-01 1.07167214e-01 1.07136450e-01 1.07105712e-01 1.07075001e-01 + 1.07044316e-01 1.07013657e-01 1.06983025e-01 1.06952419e-01 1.06921839e-01 + 1.06891286e-01 1.06860758e-01 1.06830257e-01 1.06799782e-01 1.06769333e-01 + 1.06738910e-01 1.06708513e-01 1.06678142e-01 1.06647796e-01 1.06617477e-01 + 1.06587184e-01 1.06556916e-01 1.06526674e-01 1.06496458e-01 1.06466268e-01 + 1.06436103e-01 1.06405964e-01 1.06375850e-01 1.06345762e-01 1.06315700e-01 + 1.06285663e-01 1.06255651e-01 1.06225665e-01 1.06195704e-01 1.06165769e-01 + 1.06135859e-01 1.06105974e-01 1.06076114e-01 1.06046280e-01 1.06016470e-01 + 1.05986686e-01 1.05956927e-01 1.05927193e-01 1.05897484e-01 1.05867800e-01 + 1.05838141e-01 1.05808507e-01 1.05778897e-01 1.05749313e-01 1.05719753e-01 + 1.05690218e-01 1.05660708e-01 1.05631223e-01 1.05601762e-01 1.05572326e-01 + 1.05542914e-01 1.05513528e-01 1.05484165e-01 1.05454827e-01 1.05425514e-01 + 1.05396225e-01 1.05366960e-01 1.05337720e-01 1.05308504e-01 1.05279312e-01 + 1.05250145e-01 1.05221002e-01 1.05191883e-01 1.05162788e-01 1.05133717e-01 + 1.05104671e-01 1.05075648e-01 1.05046650e-01 1.05017675e-01 1.04988725e-01 + 1.04959798e-01 1.04930896e-01 1.04902017e-01 1.04873162e-01 1.04844331e-01 + 1.04815523e-01 1.04786740e-01 1.04757980e-01 1.04729243e-01 1.04700531e-01 + 1.04671841e-01 1.04643176e-01 1.04614534e-01 1.04585916e-01 1.04557321e-01 + 1.04528749e-01 1.04500201e-01 1.04471676e-01 1.04443175e-01 1.04414697e-01 + 1.04386242e-01 1.04357810e-01 1.04329402e-01 1.04301017e-01 1.04272655e-01 + 1.04244316e-01 1.04216000e-01 1.04187707e-01 1.04159437e-01 1.04131191e-01 + 1.04102967e-01 1.04074766e-01 1.04046588e-01 1.04018433e-01 1.03990301e-01 + 1.03962192e-01 1.03934105e-01 1.03906041e-01 1.03878000e-01 1.03849982e-01 + 1.03821986e-01 1.03794013e-01 1.03766062e-01 1.03738134e-01 1.03710229e-01 + 1.03682346e-01 1.03654486e-01 1.03626648e-01 1.03598832e-01 1.03571039e-01 + 1.03543268e-01 1.03515520e-01 1.03487793e-01 1.03460089e-01 1.03432408e-01 + 1.03404748e-01 1.03377111e-01 1.03349496e-01 1.03321903e-01 1.03294332e-01 + 1.03266783e-01 1.03239256e-01 1.03211751e-01 1.03184268e-01 1.03156807e-01 + 1.03129368e-01 1.03101951e-01 1.03074556e-01 1.03047182e-01 1.03019831e-01 + 1.02992501e-01 1.02965192e-01 1.02937906e-01 1.02910641e-01 1.02883398e-01 + 1.02856177e-01 1.02828977e-01 1.02801798e-01 1.02774642e-01 1.02747506e-01 + 1.02720392e-01 1.02693300e-01 1.02666229e-01 1.02639180e-01 1.02612151e-01 + 1.02585145e-01 1.02558159e-01 1.02531195e-01 1.02504252e-01 1.02477330e-01 + 1.02450430e-01 1.02423550e-01 1.02396692e-01 1.02369855e-01 1.02343039e-01 + 1.02316244e-01 1.02289470e-01 1.02262717e-01 1.02235985e-01 1.02209274e-01 + 1.02182584e-01 1.02155915e-01 1.02129267e-01 1.02102639e-01 1.02076033e-01 + 1.02049447e-01 1.02022882e-01 1.01996338e-01 1.01969814e-01 1.01943311e-01 + 1.01916829e-01 1.01890367e-01 1.01863926e-01 1.01837505e-01 1.01811106e-01 + 1.01784726e-01 1.01758367e-01 1.01732029e-01 1.01705711e-01 1.01679413e-01 + 1.01653136e-01 1.01626879e-01 1.01600643e-01 1.01574426e-01 1.01548230e-01 + 1.01522055e-01 1.01495899e-01 1.01469764e-01 1.01443649e-01 1.01417554e-01 + 1.01391479e-01 1.01365425e-01 1.01339390e-01 1.01313376e-01 1.01287381e-01 + 1.01261406e-01 1.01235452e-01 1.01209517e-01 1.01183603e-01 1.01157708e-01 + 1.01131833e-01 1.01105978e-01 1.01080143e-01 1.01054327e-01 1.01028532e-01 + 1.01002756e-01 1.00976999e-01 1.00951263e-01 1.00925546e-01 1.00899849e-01 + 1.00874171e-01 1.00848513e-01 1.00822875e-01 1.00797256e-01 1.00771656e-01 + 1.00746077e-01 1.00720516e-01 1.00694975e-01 1.00669454e-01 1.00643952e-01 + 1.00618469e-01 1.00593005e-01 1.00567561e-01 1.00542136e-01 1.00516731e-01 + 1.00491345e-01 1.00465978e-01 1.00440630e-01 1.00415301e-01 1.00389992e-01 + 1.00364701e-01 1.00339430e-01 1.00314178e-01 1.00288944e-01 1.00263730e-01 + 1.00238535e-01 1.00213359e-01 1.00188202e-01 1.00163064e-01 1.00137944e-01 + 1.00112844e-01 1.00087762e-01 1.00062700e-01 1.00037656e-01 1.00012631e-01 + 9.99876242e-02 9.99626366e-02 9.99376677e-02 9.99127176e-02 9.98877861e-02 + 9.98628732e-02 9.98379790e-02 9.98131034e-02 9.97882464e-02 9.97634079e-02 + 9.97385880e-02 9.97137866e-02 9.96890037e-02 9.96642393e-02 9.96394933e-02 + 9.96147657e-02 9.95900565e-02 9.95653657e-02 9.95406933e-02 9.95160392e-02 + 9.94914034e-02 9.94667859e-02 9.94421867e-02 9.94176057e-02 9.93930429e-02 + 9.93684983e-02 9.93439719e-02 9.93194636e-02 9.92949735e-02 9.92705015e-02 + 9.92460476e-02 9.92216117e-02 9.91971939e-02 9.91727940e-02 9.91484122e-02 + 9.91240484e-02 9.90997025e-02 9.90753745e-02 9.90510645e-02 9.90267723e-02 + 9.90024980e-02 9.89782415e-02 9.89540029e-02 9.89297821e-02 9.89055790e-02 + 9.88813937e-02 9.88572261e-02 9.88330763e-02 9.88089441e-02 9.87848296e-02 + 9.87607327e-02 9.87366535e-02 9.87125919e-02 9.86885478e-02 9.86645213e-02 + 9.86405124e-02 9.86165209e-02 9.85925470e-02 9.85685906e-02 9.85446516e-02 + 9.85207300e-02 9.84968258e-02 9.84729391e-02 9.84490697e-02 9.84252176e-02 + 9.84013829e-02 9.83775655e-02 9.83537654e-02 9.83299825e-02 9.83062169e-02 + 9.82824685e-02 9.82587374e-02 9.82350233e-02 9.82113265e-02 9.81876468e-02 + 9.81639842e-02 9.81403387e-02 9.81167103e-02 9.80930990e-02 9.80695047e-02 + 9.80459274e-02 9.80223671e-02 9.79988238e-02 9.79752974e-02 9.79517880e-02 + 9.79282955e-02 9.79048199e-02 9.78813611e-02 9.78579192e-02 9.78344942e-02 + 9.78110859e-02 9.77876945e-02 9.77643198e-02 9.77409619e-02 9.77176207e-02 + 9.76942963e-02 9.76709885e-02 9.76476974e-02 9.76244230e-02 9.76011651e-02 + 9.75779239e-02 9.75546993e-02 9.75314913e-02 9.75082999e-02 9.74851249e-02 + 9.74619665e-02 9.74388246e-02 9.74156991e-02 9.73925901e-02 9.73694976e-02 + 9.73464215e-02 9.73233617e-02 9.73003184e-02 9.72772914e-02 9.72542807e-02 + 9.72312864e-02 9.72083084e-02 9.71853467e-02 9.71624012e-02 9.71394719e-02 + 9.71165589e-02 9.70936621e-02 9.70707815e-02 9.70479171e-02 9.70250688e-02 + 9.70022366e-02 9.69794205e-02 9.69566206e-02 9.69338367e-02 9.69110688e-02 + 9.68883170e-02 9.68655813e-02 9.68428615e-02 9.68201577e-02 9.67974698e-02 + 9.67747979e-02 9.67521419e-02 9.67295019e-02 9.67068777e-02 9.66842693e-02 + 9.66616769e-02 9.66391002e-02 9.66165394e-02 9.65939943e-02 9.65714651e-02 + 9.65489516e-02 9.65264538e-02 9.65039718e-02 9.64815054e-02 9.64590547e-02 + 9.64366197e-02 9.64142004e-02 9.63917967e-02 9.63694086e-02 9.63470360e-02 + 9.63246791e-02 9.63023377e-02 9.62800118e-02 9.62577015e-02 9.62354067e-02 + 9.62131273e-02 9.61908635e-02 9.61686150e-02 9.61463820e-02 9.61241644e-02 + 9.61019623e-02 9.60797754e-02 9.60576040e-02 9.60354479e-02 9.60133071e-02 + 9.59911816e-02 9.59690714e-02 9.59469765e-02 9.59248968e-02 9.59028324e-02 + 9.58807832e-02 9.58587492e-02 9.58367303e-02 9.58147267e-02 9.57927382e-02 + 9.57707648e-02 9.57488065e-02 9.57268633e-02 9.57049352e-02 9.56830222e-02 + 9.56611242e-02 9.56392413e-02 9.56173733e-02 9.55955204e-02 9.55736824e-02 + 9.55518594e-02 9.55300513e-02 9.55082582e-02 9.54864799e-02 9.54647166e-02 + 9.54429681e-02 9.54212345e-02 9.53995157e-02 9.53778117e-02 9.53561226e-02 + 9.53344482e-02 9.53127886e-02 9.52911438e-02 9.52695137e-02 9.52478984e-02 + 9.52262977e-02 9.52047117e-02 9.51831404e-02 9.51615838e-02 9.51400418e-02 + 9.51185144e-02 9.50970016e-02 9.50755034e-02 9.50540198e-02 9.50325508e-02 + 9.50110963e-02 9.49896563e-02 9.49682308e-02 9.49468198e-02 9.49254233e-02 + 9.49040412e-02 9.48826736e-02 9.48613204e-02 9.48399817e-02 9.48186573e-02 + 9.47973473e-02 9.47760516e-02 9.47547703e-02 9.47335034e-02 9.47122507e-02 + 9.46910123e-02 9.46697883e-02 9.46485784e-02 9.46273829e-02 9.46062015e-02 + 9.45850344e-02 9.45638815e-02 9.45427428e-02 9.45216182e-02 9.45005078e-02 + 9.44794116e-02 9.44583294e-02 9.44372614e-02 9.44162074e-02 9.43951676e-02 + 9.43741418e-02 9.43531300e-02 9.43321323e-02 9.43111485e-02 9.42901788e-02 + 9.42692231e-02 9.42482813e-02 9.42273534e-02 9.42064395e-02 9.41855396e-02 + 9.41646535e-02 9.41437813e-02 9.41229230e-02 9.41020785e-02 9.40812479e-02 + 9.40604311e-02 9.40396282e-02 9.40188390e-02 9.39980636e-02 9.39773020e-02 + 9.39565541e-02 9.39358200e-02 9.39150995e-02 9.38943928e-02 9.38736998e-02 + 9.38530204e-02 9.38323548e-02 9.38117027e-02 9.37910643e-02 9.37704395e-02 + 9.37498283e-02 9.37292307e-02 9.37086466e-02 9.36880762e-02 9.36675192e-02 + 9.36469758e-02 9.36264459e-02 9.36059295e-02 9.35854265e-02 9.35649371e-02 + 9.35444611e-02 9.35239985e-02 9.35035493e-02 9.34831136e-02 9.34626912e-02 + 9.34422823e-02 9.34218866e-02 9.34015044e-02 9.33811355e-02 9.33607798e-02 + 9.33404375e-02 9.33201085e-02 9.32997928e-02 9.32794903e-02 9.32592011e-02 + 9.32389251e-02 9.32186624e-02 9.31984128e-02 9.31781764e-02 9.31579532e-02 + 9.31377432e-02 9.31175463e-02 9.30973626e-02 9.30771919e-02 9.30570344e-02 + 9.30368899e-02 9.30167586e-02 9.29966403e-02 9.29765350e-02 9.29564428e-02 + 9.29363636e-02 9.29162974e-02 9.28962442e-02 9.28762040e-02 9.28561768e-02 + 9.28361624e-02 9.28161611e-02 9.27961726e-02 9.27761971e-02 9.27562344e-02 + 9.27362847e-02 9.27163478e-02 9.26964237e-02 9.26765125e-02 9.26566141e-02 + 9.26367286e-02 9.26168558e-02 9.25969958e-02 9.25771486e-02 9.25573141e-02 + 9.25374924e-02 9.25176834e-02 9.24978871e-02 9.24781036e-02 9.24583327e-02 + 9.24385745e-02 9.24188289e-02 9.23990960e-02 9.23793758e-02 9.23596681e-02 + 9.23399731e-02 9.23202907e-02 9.23006208e-02 9.22809635e-02 9.22613188e-02 + 9.22416866e-02 9.22220669e-02 9.22024597e-02 9.21828651e-02 9.21632829e-02 + 9.21437132e-02 9.21241560e-02 9.21046112e-02 9.20850788e-02 9.20655589e-02 + 9.20460514e-02 9.20265563e-02 9.20070735e-02 9.19876031e-02 9.19681451e-02 + 9.19486994e-02 9.19292661e-02 9.19098451e-02 9.18904363e-02 9.18710399e-02 + 9.18516557e-02 9.18322838e-02 9.18129242e-02 9.17935768e-02 9.17742416e-02 + 9.17549186e-02 9.17356079e-02 9.17163093e-02 9.16970229e-02 9.16777486e-02 + 9.16584865e-02 9.16392366e-02 9.16199987e-02 9.16007730e-02 9.15815594e-02 + 9.15623578e-02 9.15431684e-02 9.15239910e-02 9.15048256e-02 9.14856723e-02 + 9.14665310e-02 9.14474017e-02 9.14282844e-02 9.14091791e-02 9.13900857e-02 + 9.13710043e-02 9.13519349e-02 9.13328774e-02 9.13138318e-02 9.12947982e-02 + 9.12757764e-02 9.12567665e-02 9.12377685e-02 9.12187823e-02 9.11998080e-02 + 9.11808456e-02 9.11618949e-02 9.11429561e-02 9.11240290e-02 9.11051138e-02 + 9.10862103e-02 9.10673186e-02 9.10484386e-02 9.10295704e-02 9.10107139e-02 + 9.09918691e-02 9.09730360e-02 9.09542146e-02 9.09354049e-02 9.09166069e-02 + 9.08978205e-02 9.08790457e-02 9.08602826e-02 9.08415311e-02 9.08227911e-02 + 9.08040628e-02 9.07853461e-02 9.07666409e-02 9.07479473e-02 9.07292652e-02 + 9.07105947e-02 9.06919357e-02 9.06732882e-02 9.06546522e-02 9.06360277e-02 + 9.06174146e-02 9.05988131e-02 9.05802229e-02 9.05616442e-02 9.05430770e-02 + 9.05245211e-02 9.05059767e-02 9.04874436e-02 9.04689219e-02 9.04504116e-02 + 9.04319127e-02 9.04134251e-02 9.03949488e-02 9.03764839e-02 9.03580303e-02 + 9.03395879e-02 9.03211569e-02 9.03027371e-02 9.02843286e-02 9.02659313e-02 + 9.02475453e-02 9.02291706e-02 9.02108070e-02 9.01924546e-02 9.01741135e-02 + 9.01557835e-02 9.01374647e-02 9.01191571e-02 9.01008606e-02 9.00825752e-02 + 9.00643010e-02 9.00460379e-02 9.00277859e-02 9.00095450e-02 8.99913152e-02 + 8.99730965e-02 8.99548888e-02 8.99366921e-02 8.99185065e-02 8.99003320e-02 + 8.98821684e-02 8.98640159e-02 8.98458743e-02 8.98277437e-02 8.98096241e-02 + 8.97915155e-02 8.97734178e-02 8.97553311e-02 8.97372552e-02 8.97191903e-02 + 8.97011363e-02 8.96830932e-02 8.96650610e-02 8.96470396e-02 8.96290291e-02 + 8.96110295e-02 8.95930407e-02 8.95750627e-02 8.95570956e-02 8.95391392e-02 + 8.95211937e-02 8.95032589e-02 8.94853349e-02 8.94674217e-02 8.94495192e-02 + 8.94316275e-02 8.94137465e-02 8.93958762e-02 8.93780167e-02 8.93601678e-02 + 8.93423296e-02 8.93245021e-02 8.93066853e-02 8.92888791e-02 8.92710836e-02 + 8.92532987e-02 8.92355244e-02 8.92177608e-02 8.92000077e-02 8.91822653e-02 + 8.91645334e-02 8.91468121e-02 8.91291014e-02 8.91114012e-02 8.90937115e-02 + 8.90760324e-02 8.90583638e-02 8.90407057e-02 8.90230582e-02 8.90054211e-02 + 8.89877945e-02 8.89701783e-02 8.89525726e-02 8.89349774e-02 8.89173926e-02 + 8.88998182e-02 8.88822542e-02 8.88647007e-02 8.88471575e-02 8.88296247e-02 + 8.88121023e-02 8.87945903e-02 8.87770886e-02 8.87595973e-02 8.87421163e-02 + 8.87246456e-02 8.87071853e-02 8.86897352e-02 8.86722954e-02 8.86548660e-02 + 8.86374468e-02 8.86200378e-02 8.86026391e-02 8.85852507e-02 8.85678725e-02 + 8.85505045e-02 8.85331467e-02 8.85157991e-02 8.84984618e-02 8.84811346e-02 + 8.84638176e-02 8.84465107e-02 8.84292140e-02 8.84119274e-02 8.83946510e-02 + 8.83773847e-02 8.83601285e-02 8.83428825e-02 8.83256465e-02 8.83084206e-02 + 8.82912047e-02 8.82739990e-02 8.82568033e-02 8.82396176e-02 8.82224420e-02 + 8.82052764e-02 8.81881208e-02 8.81709752e-02 8.81538396e-02 8.81367140e-02 + 8.81195984e-02 8.81024927e-02 8.80853970e-02 8.80683113e-02 8.80512355e-02 + 8.80341696e-02 8.80171137e-02 8.80000676e-02 8.79830314e-02 8.79660052e-02 + 8.79489888e-02 8.79319823e-02 8.79149857e-02 8.78979989e-02 8.78810219e-02 + 8.78640548e-02 8.78470975e-02 8.78301500e-02 8.78132123e-02 8.77962845e-02 + 8.77793664e-02 8.77624580e-02 8.77455595e-02 8.77286707e-02 8.77117916e-02 + 8.76949223e-02 8.76780628e-02 8.76612129e-02 8.76443728e-02 8.76275423e-02 + 8.76107216e-02 8.75939105e-02 8.75771091e-02 8.75603174e-02 8.75435353e-02 + 8.75267629e-02 8.75100001e-02 8.74932469e-02 8.74765033e-02 8.74597694e-02 + 8.74430451e-02 8.74263303e-02 8.74096251e-02 8.73929296e-02 8.73762435e-02 + 8.73595670e-02 8.73429001e-02 8.73262427e-02 8.73095948e-02 8.72929565e-02 + 8.72763276e-02 8.72597083e-02 8.72430984e-02 8.72264981e-02 8.72099072e-02 + 8.71933257e-02 8.71767537e-02 8.71601912e-02 8.71436381e-02 8.71270944e-02 + 8.71105602e-02 8.70940353e-02 8.70775199e-02 8.70610138e-02 8.70445172e-02 + 8.70280299e-02 8.70115519e-02 8.69950834e-02 8.69786241e-02 8.69621742e-02 + 8.69457337e-02 8.69293024e-02 8.69128805e-02 8.68964679e-02 8.68800646e-02 + 8.68636705e-02 8.68472857e-02 8.68309103e-02 8.68145440e-02 8.67981870e-02 + 8.67818393e-02 8.67655008e-02 8.67491715e-02 8.67328514e-02 8.67165406e-02 + 8.67002389e-02 8.66839464e-02 8.66676631e-02 8.66513890e-02 8.66351240e-02 + 8.66188682e-02 8.66026216e-02 8.65863841e-02 8.65701557e-02 8.65539364e-02 + 8.65377263e-02 8.65215252e-02 8.65053333e-02 8.64891504e-02 8.64729766e-02 + 8.64568119e-02 8.64406563e-02 8.64245097e-02 8.64083721e-02 8.63922436e-02 + 8.63761241e-02 8.63600136e-02 8.63439122e-02 8.63278197e-02 8.63117363e-02 + 8.62956618e-02 8.62795963e-02 8.62635398e-02 8.62474922e-02 8.62314536e-02 + 8.62154239e-02 8.61994032e-02 8.61833914e-02 8.61673885e-02 8.61513945e-02 + 8.61354094e-02 8.61194332e-02 8.61034659e-02 8.60875075e-02 8.60715580e-02 + 8.60556173e-02 8.60396855e-02 8.60237625e-02 8.60078483e-02 8.59919430e-02 + 8.59760465e-02 8.59601588e-02 8.59442800e-02 8.59284099e-02 8.59125486e-02 + 8.58966961e-02 8.58808523e-02 8.58650173e-02 8.58491911e-02 8.58333736e-02 + 8.58175649e-02 8.58017649e-02 8.57859736e-02 8.57701911e-02 8.57544172e-02 + 8.57386520e-02 8.57228956e-02 8.57071478e-02 8.56914087e-02 8.56756782e-02 + 8.56599565e-02 8.56442433e-02 8.56285389e-02 8.56128430e-02 8.55971558e-02 + 8.55814772e-02 8.55658072e-02 8.55501458e-02 8.55344930e-02 8.55188488e-02 + 8.55032132e-02 8.54875862e-02 8.54719677e-02 8.54563578e-02 8.54407564e-02 + 8.54251636e-02 8.54095793e-02 8.53940035e-02 8.53784363e-02 8.53628775e-02 + 8.53473273e-02 8.53317855e-02 8.53162523e-02 8.53007275e-02 8.52852112e-02 + 8.52697034e-02 8.52542040e-02 8.52387130e-02 8.52232305e-02 8.52077565e-02 + 8.51922909e-02 8.51768336e-02 8.51613848e-02 8.51459444e-02 8.51305124e-02 + 8.51150888e-02 8.50996736e-02 8.50842667e-02 8.50688682e-02 8.50534780e-02 + 8.50380963e-02 8.50227228e-02 8.50073577e-02 8.49920009e-02 8.49766524e-02 + 8.49613123e-02 8.49459804e-02 8.49306569e-02 8.49153416e-02 8.49000346e-02 + 8.48847359e-02 8.48694455e-02 8.48541633e-02 8.48388893e-02 8.48236237e-02 + 8.48083662e-02 8.47931170e-02 8.47778760e-02 8.47626432e-02 8.47474187e-02 + 8.47322023e-02 8.47169941e-02 8.47017941e-02 8.46866023e-02 8.46714187e-02 + 8.46562432e-02 8.46410759e-02 8.46259167e-02 8.46107657e-02 8.45956228e-02 + 8.45804880e-02 8.45653614e-02 8.45502428e-02 8.45351324e-02 8.45200301e-02 + 8.45049358e-02 8.44898497e-02 8.44747716e-02 8.44597016e-02 8.44446397e-02 + 8.44295858e-02 8.44145399e-02 8.43995021e-02 8.43844724e-02 8.43694506e-02 + 8.43544369e-02 8.43394312e-02 8.43244335e-02 8.43094438e-02 8.42944621e-02 + 8.42794883e-02 8.42645226e-02 8.42495648e-02 8.42346150e-02 8.42196731e-02 + 8.42047392e-02 8.41898132e-02 8.41748952e-02 8.41599851e-02 8.41450829e-02 + 8.41301886e-02 8.41153022e-02 8.41004238e-02 8.40855532e-02 8.40706905e-02 + 8.40558357e-02 8.40409887e-02 8.40261496e-02 8.40113184e-02 8.39964950e-02 + 8.39816795e-02 8.39668718e-02 8.39520719e-02 8.39372799e-02 8.39224957e-02 + 8.39077193e-02 8.38929507e-02 8.38781898e-02 8.38634368e-02 8.38486916e-02 + 8.38339541e-02 8.38192244e-02 8.38045025e-02 8.37897883e-02 8.37750818e-02 + 8.37603831e-02 8.37456922e-02 8.37310089e-02 8.37163334e-02 8.37016656e-02 + 8.36870055e-02 8.36723531e-02 8.36577084e-02 8.36430714e-02 8.36284421e-02 + 8.36138204e-02 8.35992064e-02 8.35846001e-02 8.35700014e-02 8.35554104e-02 + 8.35408270e-02 8.35262512e-02 8.35116831e-02 8.34971226e-02 8.34825697e-02 + 8.34680244e-02 8.34534867e-02 8.34389566e-02 8.34244341e-02 8.34099191e-02 + 8.33954118e-02 8.33809120e-02 8.33664197e-02 8.33519351e-02 8.33374579e-02 + 8.33229883e-02 8.33085263e-02 8.32940718e-02 8.32796248e-02 8.32651853e-02 + 8.32507533e-02 8.32363288e-02 8.32219118e-02 8.32075023e-02 8.31931003e-02 + 8.31787058e-02 8.31643187e-02 8.31499391e-02 8.31355669e-02 8.31212022e-02 + 8.31068450e-02 8.30924951e-02 8.30781528e-02 8.30638178e-02 8.30494902e-02 + 8.30351701e-02 8.30208574e-02 8.30065520e-02 8.29922541e-02 8.29779635e-02 + 8.29636804e-02 8.29494046e-02 8.29351361e-02 8.29208751e-02 8.29066213e-02 + 8.28923750e-02 8.28781359e-02 8.28639042e-02 8.28496799e-02 8.28354628e-02 + 8.28212531e-02 8.28070507e-02 8.27928556e-02 8.27786678e-02 8.27644872e-02 + 8.27503140e-02 8.27361480e-02 8.27219893e-02 8.27078379e-02 8.26936938e-02 + 8.26795569e-02 8.26654272e-02 8.26513048e-02 8.26371896e-02 8.26230816e-02 + 8.26089809e-02 8.25948874e-02 8.25808011e-02 8.25667220e-02 8.25526501e-02 + 8.25385854e-02 8.25245279e-02 8.25104775e-02 8.24964344e-02 8.24823984e-02 + 8.24683695e-02 8.24543479e-02 8.24403333e-02 8.24263259e-02 8.24123257e-02 + 8.23983326e-02 8.23843466e-02 8.23703677e-02 8.23563960e-02 8.23424313e-02 + 8.23284737e-02 8.23145233e-02 8.23005799e-02 8.22866436e-02 8.22727144e-02 + 8.22587923e-02 8.22448772e-02 8.22309692e-02 8.22170683e-02 8.22031744e-02 + 8.21892875e-02 8.21754077e-02 8.21615349e-02 8.21476691e-02 8.21338103e-02 + 8.21199586e-02 8.21061138e-02 8.20922761e-02 8.20784453e-02 8.20646216e-02 + 8.20508048e-02 8.20369950e-02 8.20231922e-02 8.20093963e-02 8.19956074e-02 + 8.19818254e-02 8.19680504e-02 8.19542823e-02 8.19405212e-02 8.19267670e-02 + 8.19130197e-02 8.18992794e-02 8.18855459e-02 8.18718194e-02 8.18580997e-02 + 8.18443870e-02 8.18306811e-02 8.18169822e-02 8.18032901e-02 8.17896048e-02 + 8.17759265e-02 8.17622550e-02 8.17485903e-02 8.17349326e-02 8.17212816e-02 + 8.17076375e-02 8.16940002e-02 8.16803697e-02 8.16667461e-02 8.16531293e-02 + 8.16395193e-02 8.16259161e-02 8.16123197e-02 8.15987300e-02 8.15851472e-02 + 8.15715712e-02 8.15580019e-02 8.15444394e-02 8.15308836e-02 8.15173346e-02 + 8.15037924e-02 8.14902569e-02 8.14767282e-02 8.14632062e-02 8.14496909e-02 + 8.14361823e-02 8.14226805e-02 8.14091854e-02 8.13956970e-02 8.13822153e-02 + 8.13687402e-02 8.13552719e-02 8.13418103e-02 8.13283553e-02 8.13149070e-02 + 8.13014654e-02 8.12880305e-02 8.12746022e-02 8.12611805e-02 8.12477656e-02 + 8.12343572e-02 8.12209555e-02 8.12075604e-02 8.11941719e-02 8.11807901e-02 + 8.11674149e-02 8.11540463e-02 8.11406843e-02 8.11273288e-02 8.11139800e-02 + 8.11006378e-02 8.10873021e-02 8.10739731e-02 8.10606506e-02 8.10473346e-02 + 8.10340252e-02 8.10207224e-02 8.10074261e-02 8.09941364e-02 8.09808532e-02 + 8.09675765e-02 8.09543064e-02 8.09410428e-02 8.09277857e-02 8.09145351e-02 + 8.09012911e-02 8.08880535e-02 8.08748224e-02 8.08615978e-02 8.08483797e-02 + 8.08351681e-02 8.08219630e-02 8.08087643e-02 8.07955721e-02 8.07823863e-02 + 8.07692070e-02 8.07560342e-02 8.07428678e-02 8.07297078e-02 8.07165542e-02 + 8.07034071e-02 8.06902664e-02 8.06771322e-02 8.06640043e-02 8.06508829e-02 + 8.06377678e-02 8.06246592e-02 8.06115569e-02 8.05984610e-02 8.05853715e-02 + 8.05722884e-02 8.05592116e-02 8.05461412e-02 8.05330772e-02 8.05200195e-02 + 8.05069682e-02 8.04939232e-02 8.04808846e-02 8.04678523e-02 8.04548263e-02 + 8.04418066e-02 8.04287933e-02 8.04157863e-02 8.04027856e-02 8.03897912e-02 + 8.03768031e-02 8.03638212e-02 8.03508457e-02 8.03378765e-02 8.03249135e-02 + 8.03119568e-02 8.02990064e-02 8.02860622e-02 8.02731243e-02 8.02601926e-02 + 8.02472672e-02 8.02343481e-02 8.02214351e-02 8.02085284e-02 8.01956280e-02 + 8.01827337e-02 8.01698457e-02 8.01569639e-02 8.01440883e-02 8.01312189e-02 + 8.01183557e-02 8.01054986e-02 8.00926478e-02 8.00798032e-02 8.00669647e-02 + 8.00541324e-02 8.00413063e-02 8.00284863e-02 8.00156725e-02 8.00028649e-02 + 7.99900634e-02 7.99772680e-02 7.99644788e-02 7.99516957e-02 7.99389187e-02 + 7.99261479e-02 7.99133832e-02 7.99006246e-02 7.98878721e-02 7.98751257e-02 + 7.98623854e-02 7.98496512e-02 7.98369231e-02 7.98242011e-02 7.98114851e-02 + 7.97987753e-02 7.97860715e-02 7.97733737e-02 7.97606821e-02 7.97479965e-02 + 7.97353169e-02 7.97226434e-02 7.97099759e-02 7.96973145e-02 7.96846590e-02 + 7.96720097e-02 7.96593663e-02 7.96467290e-02 7.96340976e-02 7.96214723e-02 + 7.96088530e-02 7.95962397e-02 7.95836323e-02 7.95710310e-02 7.95584356e-02 + 7.95458463e-02 7.95332629e-02 7.95206854e-02 7.95081140e-02 7.94955485e-02 + 7.94829889e-02 7.94704353e-02 7.94578877e-02 7.94453459e-02 7.94328102e-02 + 7.94202803e-02 7.94077564e-02 7.93952384e-02 7.93827263e-02 7.93702202e-02 + 7.93577199e-02 7.93452256e-02 7.93327371e-02 7.93202546e-02 7.93077779e-02 + 7.92953071e-02 7.92828423e-02 7.92703832e-02 7.92579301e-02 7.92454828e-02 + 7.92330414e-02 7.92206058e-02 7.92081761e-02 7.91957523e-02 7.91833343e-02 + 7.91709221e-02 7.91585157e-02 7.91461152e-02 7.91337206e-02 7.91213317e-02 + 7.91089486e-02 7.90965714e-02 7.90842000e-02 7.90718344e-02 7.90594746e-02 + 7.90471205e-02 7.90347723e-02 7.90224298e-02 7.90100932e-02 7.89977623e-02 + 7.89854371e-02 7.89731178e-02 7.89608042e-02 7.89484964e-02 7.89361943e-02 + 7.89238979e-02 7.89116073e-02 7.88993225e-02 7.88870434e-02 7.88747700e-02 + 7.88625023e-02 7.88502404e-02 7.88379842e-02 7.88257337e-02 7.88134889e-02 + 7.88012498e-02 7.87890164e-02 7.87767887e-02 7.87645667e-02 7.87523504e-02 + 7.87401398e-02 7.87279348e-02 7.87157355e-02 7.87035419e-02 7.86913540e-02 + 7.86791717e-02 7.86669951e-02 7.86548241e-02 7.86426588e-02 7.86304991e-02 + 7.86183450e-02 7.86061966e-02 7.85940538e-02 7.85819167e-02 7.85697851e-02 + 7.85576592e-02 7.85455389e-02 7.85334242e-02 7.85213151e-02 7.85092116e-02 + 7.84971137e-02 7.84850214e-02 7.84729347e-02 7.84608535e-02 7.84487780e-02 + 7.84367080e-02 7.84246436e-02 7.84125847e-02 7.84005314e-02 7.83884837e-02 + 7.83764415e-02 7.83644048e-02 7.83523737e-02 7.83403482e-02 7.83283282e-02 + 7.83163137e-02 7.83043047e-02 7.82923013e-02 7.82803034e-02 7.82683110e-02 + 7.82563241e-02 7.82443427e-02 7.82323668e-02 7.82203964e-02 7.82084315e-02 + 7.81964721e-02 7.81845182e-02 7.81725697e-02 7.81606268e-02 7.81486893e-02 + 7.81367572e-02 7.81248307e-02 7.81129096e-02 7.81009939e-02 7.80890837e-02 + 7.80771790e-02 7.80652797e-02 7.80533858e-02 7.80414974e-02 7.80296144e-02 + 7.80177368e-02 7.80058646e-02 7.79939979e-02 7.79821366e-02 7.79702807e-02 + 7.79584302e-02 7.79465851e-02 7.79347454e-02 7.79229111e-02 7.79110821e-02 + 7.78992586e-02 7.78874404e-02 7.78756277e-02 7.78638202e-02 7.78520182e-02 + 7.78402215e-02 7.78284302e-02 7.78166443e-02 7.78048637e-02 7.77930884e-02 + 7.77813185e-02 7.77695539e-02 7.77577947e-02 7.77460408e-02 7.77342922e-02 + 7.77225490e-02 7.77108111e-02 7.76990785e-02 7.76873512e-02 7.76756292e-02 + 7.76639125e-02 7.76522011e-02 7.76404950e-02 7.76287942e-02 7.76170987e-02 + 7.76054085e-02 7.75937236e-02 7.75820439e-02 7.75703695e-02 7.75587004e-02 + 7.75470365e-02 7.75353780e-02 7.75237246e-02 7.75120765e-02 7.75004337e-02 + 7.74887961e-02 7.74771637e-02 7.74655366e-02 7.74539147e-02 7.74422981e-02 + 7.74306867e-02 7.74190805e-02 7.74074795e-02 7.73958837e-02 7.73842931e-02 + 7.73727078e-02 7.73611276e-02 7.73495527e-02 7.73379829e-02 7.73264183e-02 + 7.73148589e-02 7.73033047e-02 7.72917557e-02 7.72802118e-02 7.72686732e-02 + 7.72571396e-02 7.72456113e-02 7.72340881e-02 7.72225701e-02 7.72110572e-02 + 7.71995494e-02 7.71880468e-02 7.71765494e-02 7.71650571e-02 7.71535699e-02 + 7.71420878e-02 7.71306109e-02 7.71191391e-02 7.71076724e-02 7.70962108e-02 + 7.70847543e-02 7.70733030e-02 7.70618567e-02 7.70504155e-02 7.70389795e-02 + 7.70275485e-02 7.70161226e-02 7.70047018e-02 7.69932860e-02 7.69818754e-02 + 7.69704698e-02 7.69590693e-02 7.69476738e-02 7.69362834e-02 7.69248981e-02 + 7.69135178e-02 7.69021426e-02 7.68907724e-02 7.68794073e-02 7.68680472e-02 + 7.68566921e-02 7.68453420e-02 7.68339970e-02 7.68226570e-02 7.68113221e-02 + 7.67999921e-02 7.67886672e-02 7.67773472e-02 7.67660323e-02 7.67547224e-02 + 7.67434174e-02 7.67321175e-02 7.67208226e-02 7.67095326e-02 7.66982476e-02 + 7.66869676e-02 7.66756926e-02 7.66644225e-02 7.66531574e-02 7.66418973e-02 + 7.66306422e-02 7.66193920e-02 7.66081467e-02 7.65969064e-02 7.65856711e-02 + 7.65744407e-02 7.65632152e-02 7.65519946e-02 7.65407790e-02 7.65295684e-02 + 7.65183626e-02 7.65071618e-02 7.64959659e-02 7.64847749e-02 7.64735888e-02 + 7.64624076e-02 7.64512313e-02 7.64400599e-02 7.64288935e-02 7.64177319e-02 + 7.64065752e-02 7.63954233e-02 7.63842764e-02 7.63731343e-02 7.63619972e-02 + 7.63508648e-02 7.63397374e-02 7.63286148e-02 7.63174971e-02 7.63063842e-02 + 7.62952762e-02 7.62841730e-02 7.62730747e-02 7.62619813e-02 7.62508926e-02 + 7.62398088e-02 7.62287298e-02 7.62176557e-02 7.62065864e-02 7.61955219e-02 + 7.61844622e-02 7.61734074e-02 7.61623573e-02 7.61513121e-02 7.61402716e-02 + 7.61292360e-02 7.61182052e-02 7.61071791e-02 7.60961579e-02 7.60851414e-02 + 7.60741297e-02 7.60631228e-02 7.60521207e-02 7.60411233e-02 7.60301307e-02 + 7.60191429e-02 7.60081598e-02 7.59971815e-02 7.59862080e-02 7.59752392e-02 + 7.59642751e-02 7.59533158e-02 7.59423613e-02 7.59314115e-02 7.59204664e-02 + 7.59095260e-02 7.58985904e-02 7.58876595e-02 7.58767333e-02 7.58658119e-02 + 7.58548951e-02 7.58439831e-02 7.58330758e-02 7.58221731e-02 7.58112752e-02 + 7.58003820e-02 7.57894935e-02 7.57786096e-02 7.57677305e-02 7.57568560e-02 + 7.57459862e-02 7.57351211e-02 7.57242607e-02 7.57134049e-02 7.57025538e-02 + 7.56917074e-02 7.56808656e-02 7.56700285e-02 7.56591961e-02 7.56483683e-02 + 7.56375451e-02 7.56267266e-02 7.56159127e-02 7.56051035e-02 7.55942989e-02 + 7.55834989e-02 7.55727035e-02 7.55619128e-02 7.55511267e-02 7.55403452e-02 + 7.55295684e-02 7.55187961e-02 7.55080285e-02 7.54972654e-02 7.54865070e-02 + 7.54757531e-02 7.54650039e-02 7.54542592e-02 7.54435192e-02 7.54327837e-02 + 7.54220528e-02 7.54113264e-02 7.54006047e-02 7.53898875e-02 7.53791749e-02 + 7.53684669e-02 7.53577634e-02 7.53470644e-02 7.53363701e-02 7.53256803e-02 + 7.53149950e-02 7.53043143e-02 7.52936381e-02 7.52829665e-02 7.52722994e-02 + 7.52616368e-02 7.52509787e-02 7.52403252e-02 7.52296762e-02 7.52190318e-02 + 7.52083918e-02 7.51977564e-02 7.51871255e-02 7.51764990e-02 7.51658771e-02 + 7.51552597e-02 7.51446468e-02 7.51340384e-02 7.51234344e-02 7.51128350e-02 + 7.51022400e-02 7.50916496e-02 7.50810636e-02 7.50704821e-02 7.50599050e-02 + 7.50493324e-02 7.50387643e-02 7.50282007e-02 7.50176415e-02 7.50070868e-02 + 7.49965365e-02 7.49859907e-02 7.49754493e-02 7.49649123e-02 7.49543799e-02 + 7.49438518e-02 7.49333282e-02 7.49228090e-02 7.49122942e-02 7.49017839e-02 + 7.48912780e-02 7.48807765e-02 7.48702794e-02 7.48597868e-02 7.48492985e-02 + 7.48388147e-02 7.48283352e-02 7.48178602e-02 7.48073895e-02 7.47969233e-02 + 7.47864614e-02 7.47760040e-02 7.47655509e-02 7.47551022e-02 7.47446579e-02 + 7.47342179e-02 7.47237824e-02 7.47133512e-02 7.47029243e-02 7.46925019e-02 + 7.46820838e-02 7.46716700e-02 7.46612606e-02 7.46508556e-02 7.46404549e-02 + 7.46300586e-02 7.46196666e-02 7.46092789e-02 7.45988956e-02 7.45885166e-02 + 7.45781419e-02 7.45677716e-02 7.45574056e-02 7.45470439e-02 7.45366865e-02 + 7.45263335e-02 7.45159847e-02 7.45056403e-02 7.44953002e-02 7.44849644e-02 + 7.44746329e-02 7.44643056e-02 7.44539827e-02 7.44436641e-02 7.44333497e-02 + 7.44230397e-02 7.44127339e-02 7.44024324e-02 7.43921352e-02 7.43818423e-02 + 7.43715536e-02 7.43612692e-02 7.43509890e-02 7.43407132e-02 7.43304416e-02 + 7.43201742e-02 7.43099111e-02 7.42996522e-02 7.42893976e-02 7.42791473e-02 + 7.42689011e-02 7.42586593e-02 7.42484216e-02 7.42381882e-02 7.42279590e-02 + 7.42177341e-02 7.42075133e-02 7.41972968e-02 7.41870845e-02 7.41768765e-02 + 7.41666726e-02 7.41564729e-02 7.41462775e-02 7.41360863e-02 7.41258992e-02 + 7.41157164e-02 7.41055377e-02 7.40953633e-02 7.40851930e-02 7.40750269e-02 + 7.40648650e-02 7.40547073e-02 7.40445538e-02 7.40344044e-02 7.40242592e-02 + 7.40141182e-02 7.40039814e-02 7.39938487e-02 7.39837202e-02 7.39735958e-02 + 7.39634756e-02 7.39533595e-02 7.39432476e-02 7.39331398e-02 7.39230362e-02 + 7.39129367e-02 7.39028414e-02 7.38927502e-02 7.38826631e-02 7.38725802e-02 + 7.38625014e-02 7.38524267e-02 7.38423561e-02 7.38322896e-02 7.38222273e-02 + 7.38121691e-02 7.38021150e-02 7.37920650e-02 7.37820191e-02 7.37719773e-02 + 7.37619396e-02 7.37519060e-02 7.37418765e-02 7.37318510e-02 7.37218297e-02 + 7.37118125e-02 7.37017993e-02 7.36917902e-02 7.36817852e-02 7.36717843e-02 + 7.36617874e-02 7.36517946e-02 7.36418059e-02 7.36318212e-02 7.36218406e-02 + 7.36118641e-02 7.36018916e-02 7.35919231e-02 7.35819587e-02 7.35719984e-02 + 7.35620421e-02 7.35520898e-02 7.35421416e-02 7.35321974e-02 7.35222572e-02 + 7.35123211e-02 7.35023890e-02 7.34924610e-02 7.34825369e-02 7.34726169e-02 + 7.34627009e-02 7.34527889e-02 7.34428809e-02 7.34329769e-02 7.34230769e-02 + 7.34131809e-02 7.34032890e-02 7.33934010e-02 7.33835170e-02 7.33736370e-02 + 7.33637610e-02 7.33538890e-02 7.33440210e-02 7.33341569e-02 7.33242969e-02 + 7.33144408e-02 7.33045886e-02 7.32947405e-02 7.32848963e-02 7.32750561e-02 + 7.32652199e-02 7.32553876e-02 7.32455592e-02 7.32357348e-02 7.32259144e-02 + 7.32160979e-02 7.32062854e-02 7.31964768e-02 7.31866722e-02 7.31768715e-02 + 7.31670747e-02 7.31572819e-02 7.31474930e-02 7.31377080e-02 7.31279269e-02 + 7.31181498e-02 7.31083766e-02 7.30986073e-02 7.30888419e-02 7.30790805e-02 + 7.30693229e-02 7.30595693e-02 7.30498195e-02 7.30400737e-02 7.30303318e-02 + 7.30205937e-02 7.30108596e-02 7.30011293e-02 7.29914030e-02 7.29816805e-02 + 7.29719619e-02 7.29622472e-02 7.29525364e-02 7.29428294e-02 7.29331263e-02 + 7.29234271e-02 7.29137318e-02 7.29040403e-02 7.28943527e-02 7.28846689e-02 + 7.28749890e-02 7.28653130e-02 7.28556408e-02 7.28459725e-02 7.28363080e-02 + 7.28266473e-02 7.28169905e-02 7.28073376e-02 7.27976885e-02 7.27880432e-02 + 7.27784017e-02 7.27687641e-02 7.27591303e-02 7.27495003e-02 7.27398742e-02 + 7.27302519e-02 7.27206334e-02 7.27110187e-02 7.27014078e-02 7.26918007e-02 + 7.26821975e-02 7.26725980e-02 7.26630023e-02 7.26534105e-02 7.26438224e-02 + 7.26342382e-02 7.26246577e-02 7.26150810e-02 7.26055081e-02 7.25959390e-02 + 7.25863737e-02 7.25768121e-02 7.25672544e-02 7.25577004e-02 7.25481502e-02 + 7.25386037e-02 7.25290610e-02 7.25195221e-02 7.25099870e-02 7.25004556e-02 + 7.24909279e-02 7.24814040e-02 7.24718839e-02 7.24623675e-02 7.24528549e-02 + 7.24433460e-02 7.24338409e-02 7.24243395e-02 7.24148418e-02 7.24053479e-02 + 7.23958577e-02 7.23863712e-02 7.23768885e-02 7.23674095e-02 7.23579342e-02 + 7.23484626e-02 7.23389948e-02 7.23295307e-02 7.23200702e-02 7.23106135e-02 + 7.23011605e-02 7.22917112e-02 7.22822656e-02 7.22728238e-02 7.22633856e-02 + 7.22539511e-02 7.22445203e-02 7.22350932e-02 7.22256698e-02 7.22162500e-02 + 7.22068340e-02 7.21974216e-02 7.21880130e-02 7.21786080e-02 7.21692066e-02 + 7.21598090e-02 7.21504150e-02 7.21410247e-02 7.21316380e-02 7.21222550e-02 + 7.21128757e-02 7.21035000e-02 7.20941280e-02 7.20847596e-02 7.20753949e-02 + 7.20660339e-02 7.20566765e-02 7.20473227e-02 7.20379726e-02 7.20286261e-02 + 7.20192832e-02 7.20099440e-02 7.20006084e-02 7.19912765e-02 7.19819481e-02 + 7.19726234e-02 7.19633024e-02 7.19539849e-02 7.19446711e-02 7.19353608e-02 + 7.19260542e-02 7.19167512e-02 7.19074518e-02 7.18981560e-02 7.18888639e-02 + 7.18795753e-02 7.18702903e-02 7.18610089e-02 7.18517311e-02 7.18424569e-02 + 7.18331863e-02 7.18239193e-02 7.18146559e-02 7.18053960e-02 7.17961398e-02 + 7.17868871e-02 7.17776380e-02 7.17683924e-02 7.17591505e-02 7.17499121e-02 + 7.17406772e-02 7.17314460e-02 7.17222183e-02 7.17129941e-02 7.17037735e-02 + 7.16945565e-02 7.16853430e-02 7.16761331e-02 7.16669267e-02 7.16577239e-02 + 7.16485246e-02 7.16393289e-02 7.16301367e-02 7.16209480e-02 7.16117629e-02 + 7.16025813e-02 7.15934032e-02 7.15842287e-02 7.15750577e-02 7.15658902e-02 + 7.15567262e-02 7.15475658e-02 7.15384089e-02 7.15292555e-02 7.15201056e-02 + 7.15109592e-02 7.15018163e-02 7.14926769e-02 7.14835410e-02 7.14744087e-02 + 7.14652798e-02 7.14561544e-02 7.14470325e-02 7.14379142e-02 7.14287993e-02 + 7.14196878e-02 7.14105799e-02 7.14014755e-02 7.13923745e-02 7.13832770e-02 + 7.13741830e-02 7.13650925e-02 7.13560055e-02 7.13469219e-02 7.13378418e-02 + 7.13287651e-02 7.13196919e-02 7.13106222e-02 7.13015559e-02 7.12924931e-02 + 7.12834338e-02 7.12743779e-02 7.12653254e-02 7.12562764e-02 7.12472309e-02 + 7.12381888e-02 7.12291501e-02 7.12201149e-02 7.12110831e-02 7.12020547e-02 + 7.11930298e-02 7.11840083e-02 7.11749902e-02 7.11659756e-02 7.11569644e-02 + 7.11479566e-02 7.11389522e-02 7.11299512e-02 7.11209537e-02 7.11119596e-02 + 7.11029689e-02 7.10939816e-02 7.10849977e-02 7.10760172e-02 7.10670401e-02 + 7.10580664e-02 7.10490961e-02 7.10401292e-02 7.10311657e-02 7.10222056e-02 + 7.10132489e-02 7.10042956e-02 7.09953456e-02 7.09863990e-02 7.09774559e-02 + 7.09685161e-02 7.09595796e-02 7.09506466e-02 7.09417169e-02 7.09327906e-02 + 7.09238677e-02 7.09149481e-02 7.09060319e-02 7.08971191e-02 7.08882096e-02 + 7.08793035e-02 7.08704007e-02 7.08615013e-02 7.08526052e-02 7.08437125e-02 + 7.08348231e-02 7.08259371e-02 7.08170544e-02 7.08081751e-02 7.07992991e-02 + 7.07904264e-02 7.07815571e-02 7.07726911e-02 7.07638285e-02 7.07549691e-02 + 7.07461131e-02 7.07372604e-02 7.07284111e-02 7.07195650e-02 7.07107223e-02 + 7.07018829e-02 7.06930468e-02 7.06842141e-02 7.06753846e-02 7.06665584e-02 + 7.06577356e-02 7.06489160e-02 7.06400998e-02 7.06312868e-02 7.06224772e-02 + 7.06136708e-02 7.06048678e-02 7.05960680e-02 7.05872715e-02 7.05784783e-02 + 7.05696884e-02 7.05609018e-02 7.05521184e-02 7.05433384e-02 7.05345616e-02 + 1.00000000e+00 9.75894263e-01 9.53451752e-01 9.32489601e-01 9.12851907e-01 + 8.94404826e-01 8.77032714e-01 8.60635068e-01 8.45124065e-01 8.30422576e-01 + 8.16462554e-01 8.03183696e-01 7.90532350e-01 7.78460602e-01 7.66925506e-01 + 7.55888443e-01 7.45314577e-01 7.35172390e-01 7.25433287e-01 7.16071258e-01 + 7.07062580e-01 6.98385572e-01 6.90020370e-01 6.81948734e-01 6.74153887e-01 + 6.66620364e-01 6.59333880e-01 6.52281224e-01 6.45450150e-01 6.38829295e-01 + 6.32408091e-01 6.26176704e-01 6.20125961e-01 6.14247300e-01 6.08532716e-01 + 6.02974715e-01 5.97566276e-01 5.92300808e-01 5.87172122e-01 5.82174396e-01 + 5.77302151e-01 5.72550221e-01 5.67913735e-01 5.63388093e-01 5.58968948e-01 + 5.54652188e-01 5.50433918e-01 5.46310451e-01 5.42278287e-01 5.38334105e-01 + 5.34474753e-01 5.30697232e-01 5.26998691e-01 5.23376415e-01 5.19827818e-01 + 5.16350438e-01 5.12941922e-01 5.09600027e-01 5.06322612e-01 5.03107629e-01 + 4.99953120e-01 4.96857213e-01 4.93818117e-01 4.90834114e-01 4.87903560e-01 + 4.85024878e-01 4.82196556e-01 4.79417141e-01 4.76685242e-01 4.73999519e-01 + 4.71358685e-01 4.68761505e-01 4.66206788e-01 4.63693390e-01 4.61220209e-01 + 4.58786184e-01 4.56390292e-01 4.54031548e-01 4.51709002e-01 4.49421737e-01 + 4.47168870e-01 4.44949545e-01 4.42762941e-01 4.40608259e-01 4.38484731e-01 + 4.36391613e-01 4.34328187e-01 4.32293756e-01 4.30287649e-01 4.28309213e-01 + 4.26357819e-01 4.24432857e-01 4.22533734e-01 4.20659877e-01 4.18810733e-01 + 4.16985761e-01 4.15184441e-01 4.13406264e-01 4.11650741e-01 4.09917394e-01 + 4.08205761e-01 4.06515390e-01 4.04845847e-01 4.03196706e-01 4.01567556e-01 + 3.99957996e-01 3.98367636e-01 3.96796098e-01 3.95243014e-01 3.93708024e-01 + 3.92190780e-01 3.90690944e-01 3.89208184e-01 3.87742180e-01 3.86292617e-01 + 3.84859191e-01 3.83441605e-01 3.82039569e-01 3.80652800e-01 3.79281024e-01 + 3.77923973e-01 3.76581385e-01 3.75253005e-01 3.73938583e-01 3.72637878e-01 + 3.71350652e-01 3.70076675e-01 3.68815719e-01 3.67567566e-01 3.66332000e-01 + 3.65108810e-01 3.63897792e-01 3.62698745e-01 3.61511473e-01 3.60335785e-01 + 3.59171493e-01 3.58018415e-01 3.56876371e-01 3.55745187e-01 3.54624691e-01 + 3.53514717e-01 3.52415101e-01 3.51325683e-01 3.50246306e-01 3.49176816e-01 + 3.48117064e-01 3.47066903e-01 3.46026189e-01 3.44994782e-01 3.43972542e-01 + 3.42959337e-01 3.41955032e-01 3.40959498e-01 3.39972609e-01 3.38994241e-01 + 3.38024270e-01 3.37062579e-01 3.36109049e-01 3.35163566e-01 3.34226018e-01 + 3.33296293e-01 3.32374284e-01 3.31459885e-01 3.30552992e-01 3.29653502e-01 + 3.28761315e-01 3.27876333e-01 3.26998460e-01 3.26127600e-01 3.25263662e-01 + 3.24406553e-01 3.23556184e-01 3.22712468e-01 3.21875318e-01 3.21044649e-01 + 3.20220378e-01 3.19402424e-01 3.18590706e-01 3.17785145e-01 3.16985665e-01 + 3.16192188e-01 3.15404639e-01 3.14622947e-01 3.13847038e-01 3.13076841e-01 + 3.12312287e-01 3.11553306e-01 3.10799833e-01 3.10051800e-01 3.09309142e-01 + 3.08571795e-01 3.07839697e-01 3.07112784e-01 3.06390997e-01 3.05674275e-01 + 3.04962560e-01 3.04255793e-01 3.03553917e-01 3.02856876e-01 3.02164615e-01 + 3.01477079e-01 3.00794216e-01 3.00115971e-01 2.99442294e-01 2.98773134e-01 + 2.98108439e-01 2.97448161e-01 2.96792252e-01 2.96140662e-01 2.95493345e-01 + 2.94850254e-01 2.94211344e-01 2.93576570e-01 2.92945886e-01 2.92319250e-01 + 2.91696618e-01 2.91077947e-01 2.90463197e-01 2.89852325e-01 2.89245291e-01 + 2.88642055e-01 2.88042577e-01 2.87446820e-01 2.86854743e-01 2.86266311e-01 + 2.85681484e-01 2.85100228e-01 2.84522505e-01 2.83948280e-01 2.83377517e-01 + 2.82810183e-01 2.82246243e-01 2.81685662e-01 2.81128409e-01 2.80574450e-01 + 2.80023753e-01 2.79476286e-01 2.78932017e-01 2.78390916e-01 2.77852951e-01 + 2.77318094e-01 2.76786313e-01 2.76257580e-01 2.75731865e-01 2.75209140e-01 + 2.74689377e-01 2.74172548e-01 2.73658625e-01 2.73147581e-01 2.72639389e-01 + 2.72134024e-01 2.71631458e-01 2.71131667e-01 2.70634624e-01 2.70140305e-01 + 2.69648684e-01 2.69159738e-01 2.68673442e-01 2.68189772e-01 2.67708706e-01 + 2.67230218e-01 2.66754287e-01 2.66280890e-01 2.65810005e-01 2.65341608e-01 + 2.64875680e-01 2.64412197e-01 2.63951138e-01 2.63492483e-01 2.63036211e-01 + 2.62582301e-01 2.62130732e-01 2.61681486e-01 2.61234541e-01 2.60789879e-01 + 2.60347479e-01 2.59907323e-01 2.59469393e-01 2.59033668e-01 2.58600131e-01 + 2.58168764e-01 2.57739549e-01 2.57312467e-01 2.56887501e-01 2.56464633e-01 + 2.56043847e-01 2.55625126e-01 2.55208452e-01 2.54793809e-01 2.54381180e-01 + 2.53970550e-01 2.53561902e-01 2.53155220e-01 2.52750489e-01 2.52347693e-01 + 2.51946816e-01 2.51547844e-01 2.51150761e-01 2.50755553e-01 2.50362204e-01 + 2.49970701e-01 2.49581029e-01 2.49193173e-01 2.48807120e-01 2.48422856e-01 + 2.48040367e-01 2.47659639e-01 2.47280658e-01 2.46903413e-01 2.46527888e-01 + 2.46154072e-01 2.45781951e-01 2.45411513e-01 2.45042745e-01 2.44675634e-01 + 2.44310168e-01 2.43946335e-01 2.43584122e-01 2.43223518e-01 2.42864511e-01 + 2.42507089e-01 2.42151241e-01 2.41796954e-01 2.41444218e-01 2.41093021e-01 + 2.40743352e-01 2.40395201e-01 2.40048555e-01 2.39703404e-01 2.39359739e-01 + 2.39017547e-01 2.38676818e-01 2.38337542e-01 2.37999710e-01 2.37663309e-01 + 2.37328332e-01 2.36994766e-01 2.36662603e-01 2.36331833e-01 2.36002446e-01 + 2.35674432e-01 2.35347783e-01 2.35022487e-01 2.34698537e-01 2.34375923e-01 + 2.34054635e-01 2.33734666e-01 2.33416004e-01 2.33098643e-01 2.32782573e-01 + 2.32467784e-01 2.32154270e-01 2.31842020e-01 2.31531028e-01 2.31221283e-01 + 2.30912778e-01 2.30605504e-01 2.30299454e-01 2.29994620e-01 2.29690992e-01 + 2.29388564e-01 2.29087328e-01 2.28787275e-01 2.28488398e-01 2.28190689e-01 + 2.27894141e-01 2.27598746e-01 2.27304497e-01 2.27011386e-01 2.26719406e-01 + 2.26428550e-01 2.26138810e-01 2.25850180e-01 2.25562652e-01 2.25276219e-01 + 2.24990875e-01 2.24706613e-01 2.24423425e-01 2.24141305e-01 2.23860246e-01 + 2.23580243e-01 2.23301287e-01 2.23023372e-01 2.22746493e-01 2.22470643e-01 + 2.22195814e-01 2.21922002e-01 2.21649200e-01 2.21377401e-01 2.21106599e-01 + 2.20836789e-01 2.20567964e-01 2.20300119e-01 2.20033247e-01 2.19767342e-01 + 2.19502400e-01 2.19238413e-01 2.18975376e-01 2.18713284e-01 2.18452130e-01 + 2.18191910e-01 2.17932618e-01 2.17674247e-01 2.17416794e-01 2.17160252e-01 + 2.16904616e-01 2.16649880e-01 2.16396040e-01 2.16143090e-01 2.15891025e-01 + 2.15639840e-01 2.15389530e-01 2.15140089e-01 2.14891513e-01 2.14643796e-01 + 2.14396935e-01 2.14150923e-01 2.13905756e-01 2.13661429e-01 2.13417937e-01 + 2.13175276e-01 2.12933441e-01 2.12692427e-01 2.12452229e-01 2.12212843e-01 + 2.11974265e-01 2.11736490e-01 2.11499513e-01 2.11263330e-01 2.11027936e-01 + 2.10793328e-01 2.10559500e-01 2.10326449e-01 2.10094169e-01 2.09862658e-01 + 2.09631910e-01 2.09401922e-01 2.09172689e-01 2.08944208e-01 2.08716473e-01 + 2.08489481e-01 2.08263229e-01 2.08037711e-01 2.07812924e-01 2.07588865e-01 + 2.07365528e-01 2.07142911e-01 2.06921010e-01 2.06699820e-01 2.06479337e-01 + 2.06259559e-01 2.06040481e-01 2.05822100e-01 2.05604412e-01 2.05387413e-01 + 2.05171099e-01 2.04955468e-01 2.04740515e-01 2.04526237e-01 2.04312630e-01 + 2.04099691e-01 2.03887417e-01 2.03675803e-01 2.03464847e-01 2.03254545e-01 + 2.03044894e-01 2.02835891e-01 2.02627531e-01 2.02419812e-01 2.02212731e-01 + 2.02006284e-01 2.01800468e-01 2.01595280e-01 2.01390716e-01 2.01186774e-01 + 2.00983451e-01 2.00780742e-01 2.00578646e-01 2.00377158e-01 2.00176277e-01 + 1.99975998e-01 1.99776320e-01 1.99577238e-01 1.99378751e-01 1.99180854e-01 + 1.98983546e-01 1.98786822e-01 1.98590681e-01 1.98395120e-01 1.98200135e-01 + 1.98005724e-01 1.97811884e-01 1.97618612e-01 1.97425905e-01 1.97233761e-01 + 1.97042177e-01 1.96851151e-01 1.96660678e-01 1.96470758e-01 1.96281387e-01 + 1.96092562e-01 1.95904281e-01 1.95716541e-01 1.95529341e-01 1.95342676e-01 + 1.95156545e-01 1.94970945e-01 1.94785873e-01 1.94601328e-01 1.94417306e-01 + 1.94233805e-01 1.94050823e-01 1.93868357e-01 1.93686404e-01 1.93504963e-01 + 1.93324031e-01 1.93143606e-01 1.92963685e-01 1.92784265e-01 1.92605345e-01 + 1.92426923e-01 1.92248995e-01 1.92071560e-01 1.91894616e-01 1.91718159e-01 + 1.91542189e-01 1.91366702e-01 1.91191696e-01 1.91017170e-01 1.90843121e-01 + 1.90669546e-01 1.90496445e-01 1.90323814e-01 1.90151652e-01 1.89979956e-01 + 1.89808724e-01 1.89637954e-01 1.89467644e-01 1.89297793e-01 1.89128397e-01 + 1.88959456e-01 1.88790966e-01 1.88622926e-01 1.88455335e-01 1.88288189e-01 + 1.88121487e-01 1.87955227e-01 1.87789407e-01 1.87624025e-01 1.87459079e-01 + 1.87294568e-01 1.87130489e-01 1.86966840e-01 1.86803620e-01 1.86640827e-01 + 1.86478458e-01 1.86316513e-01 1.86154989e-01 1.85993884e-01 1.85833197e-01 + 1.85672925e-01 1.85513068e-01 1.85353622e-01 1.85194587e-01 1.85035961e-01 + 1.84877742e-01 1.84719927e-01 1.84562517e-01 1.84405508e-01 1.84248899e-01 + 1.84092688e-01 1.83936874e-01 1.83781455e-01 1.83626429e-01 1.83471795e-01 + 1.83317551e-01 1.83163695e-01 1.83010226e-01 1.82857142e-01 1.82704442e-01 + 1.82552123e-01 1.82400185e-01 1.82248626e-01 1.82097444e-01 1.81946637e-01 + 1.81796204e-01 1.81646144e-01 1.81496455e-01 1.81347136e-01 1.81198184e-01 + 1.81049599e-01 1.80901378e-01 1.80753522e-01 1.80606027e-01 1.80458892e-01 + 1.80312117e-01 1.80165699e-01 1.80019637e-01 1.79873930e-01 1.79728576e-01 + 1.79583574e-01 1.79438922e-01 1.79294620e-01 1.79150665e-01 1.79007056e-01 + 1.78863792e-01 1.78720871e-01 1.78578292e-01 1.78436054e-01 1.78294156e-01 + 1.78152595e-01 1.78011371e-01 1.77870482e-01 1.77729928e-01 1.77589706e-01 + 1.77449815e-01 1.77310255e-01 1.77171023e-01 1.77032119e-01 1.76893540e-01 + 1.76755287e-01 1.76617358e-01 1.76479751e-01 1.76342465e-01 1.76205499e-01 + 1.76068851e-01 1.75932521e-01 1.75796507e-01 1.75660808e-01 1.75525423e-01 + 1.75390351e-01 1.75255589e-01 1.75121138e-01 1.74986996e-01 1.74853162e-01 + 1.74719634e-01 1.74586412e-01 1.74453494e-01 1.74320879e-01 1.74188566e-01 + 1.74056554e-01 1.73924842e-01 1.73793428e-01 1.73662312e-01 1.73531492e-01 + 1.73400967e-01 1.73270736e-01 1.73140798e-01 1.73011152e-01 1.72881797e-01 + 1.72752732e-01 1.72623955e-01 1.72495466e-01 1.72367263e-01 1.72239346e-01 + 1.72111713e-01 1.71984363e-01 1.71857296e-01 1.71730510e-01 1.71604004e-01 + 1.71477777e-01 1.71351828e-01 1.71226157e-01 1.71100761e-01 1.70975641e-01 + 1.70850795e-01 1.70726222e-01 1.70601921e-01 1.70477891e-01 1.70354131e-01 + 1.70230640e-01 1.70107418e-01 1.69984462e-01 1.69861773e-01 1.69739349e-01 + 1.69617190e-01 1.69495294e-01 1.69373660e-01 1.69252288e-01 1.69131176e-01 + 1.69010324e-01 1.68889731e-01 1.68769395e-01 1.68649317e-01 1.68529494e-01 + 1.68409926e-01 1.68290613e-01 1.68171552e-01 1.68052744e-01 1.67934188e-01 + 1.67815882e-01 1.67697825e-01 1.67580018e-01 1.67462458e-01 1.67345146e-01 + 1.67228079e-01 1.67111258e-01 1.66994682e-01 1.66878349e-01 1.66762259e-01 + 1.66646411e-01 1.66530804e-01 1.66415437e-01 1.66300309e-01 1.66185421e-01 + 1.66070770e-01 1.65956356e-01 1.65842178e-01 1.65728235e-01 1.65614527e-01 + 1.65501053e-01 1.65387812e-01 1.65274803e-01 1.65162025e-01 1.65049477e-01 + 1.64937160e-01 1.64825071e-01 1.64713211e-01 1.64601578e-01 1.64490172e-01 + 1.64378991e-01 1.64268036e-01 1.64157305e-01 1.64046798e-01 1.63936514e-01 + 1.63826452e-01 1.63716611e-01 1.63606991e-01 1.63497591e-01 1.63388409e-01 + 1.63279447e-01 1.63170702e-01 1.63062174e-01 1.62953862e-01 1.62845766e-01 + 1.62737885e-01 1.62630217e-01 1.62522764e-01 1.62415523e-01 1.62308493e-01 + 1.62201676e-01 1.62095069e-01 1.61988671e-01 1.61882483e-01 1.61776504e-01 + 1.61670732e-01 1.61565168e-01 1.61459810e-01 1.61354658e-01 1.61249711e-01 + 1.61144969e-01 1.61040431e-01 1.60936095e-01 1.60831963e-01 1.60728032e-01 + 1.60624302e-01 1.60520773e-01 1.60417444e-01 1.60314314e-01 1.60211383e-01 + 1.60108650e-01 1.60006114e-01 1.59903775e-01 1.59801632e-01 1.59699684e-01 + 1.59597932e-01 1.59496373e-01 1.59395009e-01 1.59293837e-01 1.59192858e-01 + 1.59092070e-01 1.58991474e-01 1.58891068e-01 1.58790852e-01 1.58690826e-01 + 1.58590988e-01 1.58491339e-01 1.58391877e-01 1.58292602e-01 1.58193514e-01 + 1.58094612e-01 1.57995894e-01 1.57897362e-01 1.57799013e-01 1.57700849e-01 + 1.57602867e-01 1.57505067e-01 1.57407450e-01 1.57310013e-01 1.57212758e-01 + 1.57115682e-01 1.57018786e-01 1.56922069e-01 1.56825531e-01 1.56729171e-01 + 1.56632988e-01 1.56536982e-01 1.56441152e-01 1.56345498e-01 1.56250019e-01 + 1.56154715e-01 1.56059585e-01 1.55964629e-01 1.55869846e-01 1.55775235e-01 + 1.55680797e-01 1.55586530e-01 1.55492434e-01 1.55398509e-01 1.55304754e-01 + 1.55211168e-01 1.55117751e-01 1.55024502e-01 1.54931422e-01 1.54838509e-01 + 1.54745763e-01 1.54653183e-01 1.54560770e-01 1.54468522e-01 1.54376439e-01 + 1.54284520e-01 1.54192765e-01 1.54101174e-01 1.54009746e-01 1.53918481e-01 + 1.53827377e-01 1.53736435e-01 1.53645654e-01 1.53555034e-01 1.53464574e-01 + 1.53374274e-01 1.53284132e-01 1.53194150e-01 1.53104326e-01 1.53014660e-01 + 1.52925151e-01 1.52835798e-01 1.52746603e-01 1.52657563e-01 1.52568679e-01 + 1.52479950e-01 1.52391376e-01 1.52302955e-01 1.52214689e-01 1.52126576e-01 + 1.52038615e-01 1.51950807e-01 1.51863151e-01 1.51775647e-01 1.51688293e-01 + 1.51601091e-01 1.51514038e-01 1.51427135e-01 1.51340382e-01 1.51253778e-01 + 1.51167322e-01 1.51081014e-01 1.50994854e-01 1.50908841e-01 1.50822975e-01 + 1.50737255e-01 1.50651681e-01 1.50566253e-01 1.50480970e-01 1.50395832e-01 + 1.50310838e-01 1.50225988e-01 1.50141281e-01 1.50056718e-01 1.49972298e-01 + 1.49888019e-01 1.49803883e-01 1.49719888e-01 1.49636035e-01 1.49552322e-01 + 1.49468749e-01 1.49385316e-01 1.49302023e-01 1.49218869e-01 1.49135854e-01 + 1.49052977e-01 1.48970239e-01 1.48887638e-01 1.48805174e-01 1.48722847e-01 + 1.48640656e-01 1.48558602e-01 1.48476683e-01 1.48394900e-01 1.48313252e-01 + 1.48231738e-01 1.48150359e-01 1.48069113e-01 1.47988001e-01 1.47907022e-01 + 1.47826176e-01 1.47745463e-01 1.47664881e-01 1.47584431e-01 1.47504113e-01 + 1.47423925e-01 1.47343868e-01 1.47263942e-01 1.47184145e-01 1.47104478e-01 + 1.47024940e-01 1.46945531e-01 1.46866251e-01 1.46787099e-01 1.46708074e-01 + 1.46629177e-01 1.46550407e-01 1.46471764e-01 1.46393248e-01 1.46314857e-01 + 1.46236593e-01 1.46158454e-01 1.46080440e-01 1.46002551e-01 1.45924786e-01 + 1.45847145e-01 1.45769628e-01 1.45692235e-01 1.45614965e-01 1.45537817e-01 + 1.45460792e-01 1.45383890e-01 1.45307109e-01 1.45230449e-01 1.45153911e-01 + 1.45077494e-01 1.45001197e-01 1.44925021e-01 1.44848964e-01 1.44773027e-01 + 1.44697209e-01 1.44621511e-01 1.44545931e-01 1.44470469e-01 1.44395126e-01 + 1.44319900e-01 1.44244791e-01 1.44169800e-01 1.44094926e-01 1.44020168e-01 + 1.43945527e-01 1.43871001e-01 1.43796591e-01 1.43722296e-01 1.43648117e-01 + 1.43574052e-01 1.43500101e-01 1.43426265e-01 1.43352542e-01 1.43278934e-01 + 1.43205438e-01 1.43132055e-01 1.43058785e-01 1.42985628e-01 1.42912583e-01 + 1.42839649e-01 1.42766827e-01 1.42694116e-01 1.42621516e-01 1.42549027e-01 + 1.42476649e-01 1.42404380e-01 1.42332222e-01 1.42260172e-01 1.42188233e-01 + 1.42116402e-01 1.42044680e-01 1.41973066e-01 1.41901561e-01 1.41830164e-01 + 1.41758874e-01 1.41687692e-01 1.41616617e-01 1.41545648e-01 1.41474786e-01 + 1.41404031e-01 1.41333382e-01 1.41262838e-01 1.41192400e-01 1.41122067e-01 + 1.41051839e-01 1.40981716e-01 1.40911698e-01 1.40841783e-01 1.40771973e-01 + 1.40702266e-01 1.40632663e-01 1.40563163e-01 1.40493766e-01 1.40424471e-01 + 1.40355279e-01 1.40286189e-01 1.40217202e-01 1.40148315e-01 1.40079531e-01 + 1.40010847e-01 1.39942264e-01 1.39873782e-01 1.39805401e-01 1.39737119e-01 + 1.39668938e-01 1.39600856e-01 1.39532874e-01 1.39464991e-01 1.39397207e-01 + 1.39329522e-01 1.39261935e-01 1.39194446e-01 1.39127056e-01 1.39059763e-01 + 1.38992568e-01 1.38925470e-01 1.38858469e-01 1.38791565e-01 1.38724758e-01 + 1.38658047e-01 1.38591432e-01 1.38524913e-01 1.38458490e-01 1.38392162e-01 + 1.38325930e-01 1.38259792e-01 1.38193750e-01 1.38127801e-01 1.38061947e-01 + 1.37996188e-01 1.37930522e-01 1.37864950e-01 1.37799471e-01 1.37734085e-01 + 1.37668793e-01 1.37603593e-01 1.37538485e-01 1.37473471e-01 1.37408548e-01 + 1.37343717e-01 1.37278977e-01 1.37214330e-01 1.37149773e-01 1.37085308e-01 + 1.37020933e-01 1.36956649e-01 1.36892455e-01 1.36828351e-01 1.36764338e-01 + 1.36700414e-01 1.36636580e-01 1.36572835e-01 1.36509179e-01 1.36445612e-01 + 1.36382134e-01 1.36318745e-01 1.36255443e-01 1.36192230e-01 1.36129105e-01 + 1.36066067e-01 1.36003117e-01 1.35940254e-01 1.35877478e-01 1.35814789e-01 + 1.35752187e-01 1.35689672e-01 1.35627242e-01 1.35564899e-01 1.35502641e-01 + 1.35440470e-01 1.35378384e-01 1.35316383e-01 1.35254467e-01 1.35192636e-01 + 1.35130890e-01 1.35069228e-01 1.35007651e-01 1.34946158e-01 1.34884748e-01 + 1.34823423e-01 1.34762181e-01 1.34701022e-01 1.34639947e-01 1.34578955e-01 + 1.34518045e-01 1.34457218e-01 1.34396474e-01 1.34335812e-01 1.34275232e-01 + 1.34214733e-01 1.34154317e-01 1.34093982e-01 1.34033728e-01 1.33973556e-01 + 1.33913464e-01 1.33853453e-01 1.33793523e-01 1.33733673e-01 1.33673904e-01 + 1.33614214e-01 1.33554605e-01 1.33495075e-01 1.33435625e-01 1.33376254e-01 + 1.33316962e-01 1.33257749e-01 1.33198615e-01 1.33139560e-01 1.33080583e-01 + 1.33021685e-01 1.32962864e-01 1.32904122e-01 1.32845457e-01 1.32786870e-01 + 1.32728361e-01 1.32669928e-01 1.32611573e-01 1.32553295e-01 1.32495093e-01 + 1.32436968e-01 1.32378920e-01 1.32320948e-01 1.32263052e-01 1.32205232e-01 + 1.32147487e-01 1.32089818e-01 1.32032225e-01 1.31974707e-01 1.31917264e-01 + 1.31859896e-01 1.31802603e-01 1.31745384e-01 1.31688240e-01 1.31631170e-01 + 1.31574174e-01 1.31517252e-01 1.31460404e-01 1.31403630e-01 1.31346929e-01 + 1.31290301e-01 1.31233747e-01 1.31177266e-01 1.31120857e-01 1.31064522e-01 + 1.31008258e-01 1.30952068e-01 1.30895949e-01 1.30839903e-01 1.30783928e-01 + 1.30728025e-01 1.30672194e-01 1.30616435e-01 1.30560746e-01 1.30505129e-01 + 1.30449583e-01 1.30394108e-01 1.30338703e-01 1.30283369e-01 1.30228105e-01 + 1.30172912e-01 1.30117789e-01 1.30062736e-01 1.30007752e-01 1.29952839e-01 + 1.29897994e-01 1.29843219e-01 1.29788514e-01 1.29733877e-01 1.29679310e-01 + 1.29624811e-01 1.29570381e-01 1.29516019e-01 1.29461726e-01 1.29407501e-01 + 1.29353344e-01 1.29299255e-01 1.29245234e-01 1.29191280e-01 1.29137394e-01 + 1.29083575e-01 1.29029824e-01 1.28976140e-01 1.28922522e-01 1.28868972e-01 + 1.28815488e-01 1.28762070e-01 1.28708719e-01 1.28655435e-01 1.28602216e-01 + 1.28549063e-01 1.28495977e-01 1.28442955e-01 1.28390000e-01 1.28337110e-01 + 1.28284285e-01 1.28231526e-01 1.28178831e-01 1.28126202e-01 1.28073637e-01 + 1.28021137e-01 1.27968701e-01 1.27916330e-01 1.27864023e-01 1.27811780e-01 + 1.27759601e-01 1.27707486e-01 1.27655434e-01 1.27603447e-01 1.27551522e-01 + 1.27499661e-01 1.27447864e-01 1.27396129e-01 1.27344457e-01 1.27292848e-01 + 1.27241302e-01 1.27189818e-01 1.27138397e-01 1.27087038e-01 1.27035742e-01 + 1.26984507e-01 1.26933334e-01 1.26882223e-01 1.26831174e-01 1.26780187e-01 + 1.26729260e-01 1.26678396e-01 1.26627592e-01 1.26576849e-01 1.26526168e-01 + 1.26475547e-01 1.26424987e-01 1.26374487e-01 1.26324048e-01 1.26273670e-01 + 1.26223351e-01 1.26173093e-01 1.26122894e-01 1.26072756e-01 1.26022677e-01 + 1.25972658e-01 1.25922698e-01 1.25872798e-01 1.25822957e-01 1.25773176e-01 + 1.25723453e-01 1.25673789e-01 1.25624184e-01 1.25574638e-01 1.25525150e-01 + 1.25475721e-01 1.25426350e-01 1.25377037e-01 1.25327782e-01 1.25278586e-01 + 1.25229447e-01 1.25180366e-01 1.25131343e-01 1.25082377e-01 1.25033469e-01 + 1.24984618e-01 1.24935824e-01 1.24887088e-01 1.24838408e-01 1.24789785e-01 + 1.24741219e-01 1.24692710e-01 1.24644257e-01 1.24595861e-01 1.24547521e-01 + 1.24499237e-01 1.24451010e-01 1.24402838e-01 1.24354722e-01 1.24306662e-01 + 1.24258658e-01 1.24210709e-01 1.24162816e-01 1.24114978e-01 1.24067195e-01 + 1.24019468e-01 1.23971795e-01 1.23924178e-01 1.23876615e-01 1.23829107e-01 + 1.23781654e-01 1.23734255e-01 1.23686910e-01 1.23639620e-01 1.23592384e-01 + 1.23545202e-01 1.23498075e-01 1.23451001e-01 1.23403980e-01 1.23357014e-01 + 1.23310101e-01 1.23263242e-01 1.23216436e-01 1.23169683e-01 1.23122983e-01 + 1.23076337e-01 1.23029743e-01 1.22983202e-01 1.22936715e-01 1.22890279e-01 + 1.22843897e-01 1.22797567e-01 1.22751289e-01 1.22705063e-01 1.22658890e-01 + 1.22612769e-01 1.22566700e-01 1.22520682e-01 1.22474717e-01 1.22428803e-01 + 1.22382941e-01 1.22337130e-01 1.22291371e-01 1.22245663e-01 1.22200006e-01 + 1.22154400e-01 1.22108845e-01 1.22063342e-01 1.22017889e-01 1.21972487e-01 + 1.21927135e-01 1.21881834e-01 1.21836584e-01 1.21791383e-01 1.21746234e-01 + 1.21701134e-01 1.21656084e-01 1.21611085e-01 1.21566135e-01 1.21521235e-01 + 1.21476385e-01 1.21431584e-01 1.21386833e-01 1.21342131e-01 1.21297479e-01 + 1.21252876e-01 1.21208322e-01 1.21163817e-01 1.21119362e-01 1.21074955e-01 + 1.21030597e-01 1.20986287e-01 1.20942026e-01 1.20897814e-01 1.20853651e-01 + 1.20809535e-01 1.20765468e-01 1.20721449e-01 1.20677478e-01 1.20633555e-01 + 1.20589681e-01 1.20545854e-01 1.20502074e-01 1.20458343e-01 1.20414659e-01 + 1.20371022e-01 1.20327433e-01 1.20283891e-01 1.20240396e-01 1.20196949e-01 + 1.20153549e-01 1.20110195e-01 1.20066889e-01 1.20023629e-01 1.19980416e-01 + 1.19937250e-01 1.19894130e-01 1.19851056e-01 1.19808030e-01 1.19765049e-01 + 1.19722115e-01 1.19679226e-01 1.19636384e-01 1.19593588e-01 1.19550838e-01 + 1.19508133e-01 1.19465474e-01 1.19422861e-01 1.19380294e-01 1.19337772e-01 + 1.19295295e-01 1.19252863e-01 1.19210477e-01 1.19168136e-01 1.19125841e-01 + 1.19083590e-01 1.19041384e-01 1.18999223e-01 1.18957106e-01 1.18915035e-01 + 1.18873008e-01 1.18831025e-01 1.18789087e-01 1.18747194e-01 1.18705344e-01 + 1.18663539e-01 1.18621778e-01 1.18580061e-01 1.18538388e-01 1.18496759e-01 + 1.18455174e-01 1.18413632e-01 1.18372134e-01 1.18330680e-01 1.18289269e-01 + 1.18247902e-01 1.18206578e-01 1.18165298e-01 1.18124060e-01 1.18082866e-01 + 1.18041715e-01 1.18000607e-01 1.17959541e-01 1.17918519e-01 1.17877539e-01 + 1.17836602e-01 1.17795708e-01 1.17754856e-01 1.17714047e-01 1.17673280e-01 + 1.17632556e-01 1.17591873e-01 1.17551233e-01 1.17510635e-01 1.17470079e-01 + 1.17429565e-01 1.17389093e-01 1.17348662e-01 1.17308274e-01 1.17267927e-01 + 1.17227622e-01 1.17187358e-01 1.17147135e-01 1.17106955e-01 1.17066815e-01 + 1.17026717e-01 1.16986659e-01 1.16946643e-01 1.16906668e-01 1.16866734e-01 + 1.16826841e-01 1.16786988e-01 1.16747177e-01 1.16707406e-01 1.16667676e-01 + 1.16627986e-01 1.16588337e-01 1.16548728e-01 1.16509159e-01 1.16469631e-01 + 1.16430143e-01 1.16390695e-01 1.16351287e-01 1.16311919e-01 1.16272591e-01 + 1.16233303e-01 1.16194055e-01 1.16154846e-01 1.16115678e-01 1.16076548e-01 + 1.16037459e-01 1.15998408e-01 1.15959397e-01 1.15920426e-01 1.15881494e-01 + 1.15842601e-01 1.15803747e-01 1.15764932e-01 1.15726156e-01 1.15687419e-01 + 1.15648721e-01 1.15610062e-01 1.15571441e-01 1.15532859e-01 1.15494316e-01 + 1.15455812e-01 1.15417345e-01 1.15378918e-01 1.15340528e-01 1.15302177e-01 + 1.15263864e-01 1.15225590e-01 1.15187353e-01 1.15149155e-01 1.15110994e-01 + 1.15072871e-01 1.15034786e-01 1.14996739e-01 1.14958730e-01 1.14920759e-01 + 1.14882824e-01 1.14844928e-01 1.14807069e-01 1.14769247e-01 1.14731463e-01 + 1.14693716e-01 1.14656006e-01 1.14618334e-01 1.14580699e-01 1.14543100e-01 + 1.14505539e-01 1.14468014e-01 1.14430527e-01 1.14393076e-01 1.14355662e-01 + 1.14318284e-01 1.14280944e-01 1.14243640e-01 1.14206372e-01 1.14169141e-01 + 1.14131946e-01 1.14094787e-01 1.14057665e-01 1.14020579e-01 1.13983529e-01 + 1.13946515e-01 1.13909538e-01 1.13872596e-01 1.13835690e-01 1.13798820e-01 + 1.13761986e-01 1.13725188e-01 1.13688425e-01 1.13651698e-01 1.13615006e-01 + 1.13578350e-01 1.13541730e-01 1.13505144e-01 1.13468595e-01 1.13432080e-01 + 1.13395601e-01 1.13359156e-01 1.13322747e-01 1.13286373e-01 1.13250035e-01 + 1.13213730e-01 1.13177461e-01 1.13141227e-01 1.13105028e-01 1.13068863e-01 + 1.13032733e-01 1.12996637e-01 1.12960576e-01 1.12924550e-01 1.12888558e-01 + 1.12852600e-01 1.12816677e-01 1.12780788e-01 1.12744933e-01 1.12709112e-01 + 1.12673326e-01 1.12637574e-01 1.12601855e-01 1.12566171e-01 1.12530520e-01 + 1.12494904e-01 1.12459321e-01 1.12423772e-01 1.12388256e-01 1.12352774e-01 + 1.12317326e-01 1.12281911e-01 1.12246530e-01 1.12211182e-01 1.12175868e-01 + 1.12140587e-01 1.12105339e-01 1.12070125e-01 1.12034943e-01 1.11999795e-01 + 1.11964679e-01 1.11929597e-01 1.11894548e-01 1.11859532e-01 1.11824548e-01 + 1.11789597e-01 1.11754679e-01 1.11719794e-01 1.11684941e-01 1.11650121e-01 + 1.11615334e-01 1.11580579e-01 1.11545856e-01 1.11511166e-01 1.11476508e-01 + 1.11441883e-01 1.11407289e-01 1.11372728e-01 1.11338199e-01 1.11303703e-01 + 1.11269238e-01 1.11234805e-01 1.11200404e-01 1.11166035e-01 1.11131698e-01 + 1.11097393e-01 1.11063119e-01 1.11028877e-01 1.10994667e-01 1.10960489e-01 + 1.10926342e-01 1.10892226e-01 1.10858142e-01 1.10824089e-01 1.10790068e-01 + 1.10756078e-01 1.10722119e-01 1.10688192e-01 1.10654295e-01 1.10620430e-01 + 1.10586596e-01 1.10552793e-01 1.10519021e-01 1.10485279e-01 1.10451569e-01 + 1.10417890e-01 1.10384241e-01 1.10350623e-01 1.10317036e-01 1.10283479e-01 + 1.10249953e-01 1.10216458e-01 1.10182993e-01 1.10149558e-01 1.10116154e-01 + 1.10082780e-01 1.10049437e-01 1.10016124e-01 1.09982841e-01 1.09949588e-01 + 1.09916366e-01 1.09883174e-01 1.09850011e-01 1.09816879e-01 1.09783776e-01 + 1.09750704e-01 1.09717661e-01 1.09684648e-01 1.09651665e-01 1.09618712e-01 + 1.09585789e-01 1.09552895e-01 1.09520030e-01 1.09487196e-01 1.09454390e-01 + 1.09421615e-01 1.09388868e-01 1.09356151e-01 1.09323464e-01 1.09290805e-01 + 1.09258176e-01 1.09225576e-01 1.09193006e-01 1.09160464e-01 1.09127951e-01 + 1.09095468e-01 1.09063013e-01 1.09030588e-01 1.08998191e-01 1.08965824e-01 + 1.08933485e-01 1.08901174e-01 1.08868893e-01 1.08836640e-01 1.08804416e-01 + 1.08772220e-01 1.08740054e-01 1.08707915e-01 1.08675805e-01 1.08643724e-01 + 1.08611671e-01 1.08579646e-01 1.08547649e-01 1.08515681e-01 1.08483741e-01 + 1.08451829e-01 1.08419946e-01 1.08388090e-01 1.08356263e-01 1.08324463e-01 + 1.08292692e-01 1.08260948e-01 1.08229233e-01 1.08197545e-01 1.08165885e-01 + 1.08134253e-01 1.08102648e-01 1.08071072e-01 1.08039523e-01 1.08008001e-01 + 1.07976507e-01 1.07945041e-01 1.07913602e-01 1.07882191e-01 1.07850807e-01 + 1.07819450e-01 1.07788121e-01 1.07756819e-01 1.07725544e-01 1.07694296e-01 + 1.07663076e-01 1.07631883e-01 1.07600717e-01 1.07569578e-01 1.07538466e-01 + 1.07507381e-01 1.07476322e-01 1.07445291e-01 1.07414287e-01 1.07383309e-01 + 1.07352359e-01 1.07321435e-01 1.07290537e-01 1.07259667e-01 1.07228823e-01 + 1.07198005e-01 1.07167214e-01 1.07136450e-01 1.07105712e-01 1.07075001e-01 + 1.07044316e-01 1.07013657e-01 1.06983025e-01 1.06952419e-01 1.06921839e-01 + 1.06891286e-01 1.06860758e-01 1.06830257e-01 1.06799782e-01 1.06769333e-01 + 1.06738910e-01 1.06708513e-01 1.06678142e-01 1.06647796e-01 1.06617477e-01 + 1.06587184e-01 1.06556916e-01 1.06526674e-01 1.06496458e-01 1.06466268e-01 + 1.06436103e-01 1.06405964e-01 1.06375850e-01 1.06345762e-01 1.06315700e-01 + 1.06285663e-01 1.06255651e-01 1.06225665e-01 1.06195704e-01 1.06165769e-01 + 1.06135859e-01 1.06105974e-01 1.06076114e-01 1.06046280e-01 1.06016470e-01 + 1.05986686e-01 1.05956927e-01 1.05927193e-01 1.05897484e-01 1.05867800e-01 + 1.05838141e-01 1.05808507e-01 1.05778897e-01 1.05749313e-01 1.05719753e-01 + 1.05690218e-01 1.05660708e-01 1.05631223e-01 1.05601762e-01 1.05572326e-01 + 1.05542914e-01 1.05513528e-01 1.05484165e-01 1.05454827e-01 1.05425514e-01 + 1.05396225e-01 1.05366960e-01 1.05337720e-01 1.05308504e-01 1.05279312e-01 + 1.05250145e-01 1.05221002e-01 1.05191883e-01 1.05162788e-01 1.05133717e-01 + 1.05104671e-01 1.05075648e-01 1.05046650e-01 1.05017675e-01 1.04988725e-01 + 1.04959798e-01 1.04930896e-01 1.04902017e-01 1.04873162e-01 1.04844331e-01 + 1.04815523e-01 1.04786740e-01 1.04757980e-01 1.04729243e-01 1.04700531e-01 + 1.04671841e-01 1.04643176e-01 1.04614534e-01 1.04585916e-01 1.04557321e-01 + 1.04528749e-01 1.04500201e-01 1.04471676e-01 1.04443175e-01 1.04414697e-01 + 1.04386242e-01 1.04357810e-01 1.04329402e-01 1.04301017e-01 1.04272655e-01 + 1.04244316e-01 1.04216000e-01 1.04187707e-01 1.04159437e-01 1.04131191e-01 + 1.04102967e-01 1.04074766e-01 1.04046588e-01 1.04018433e-01 1.03990301e-01 + 1.03962192e-01 1.03934105e-01 1.03906041e-01 1.03878000e-01 1.03849982e-01 + 1.03821986e-01 1.03794013e-01 1.03766062e-01 1.03738134e-01 1.03710229e-01 + 1.03682346e-01 1.03654486e-01 1.03626648e-01 1.03598832e-01 1.03571039e-01 + 1.03543268e-01 1.03515520e-01 1.03487793e-01 1.03460089e-01 1.03432408e-01 + 1.03404748e-01 1.03377111e-01 1.03349496e-01 1.03321903e-01 1.03294332e-01 + 1.03266783e-01 1.03239256e-01 1.03211751e-01 1.03184268e-01 1.03156807e-01 + 1.03129368e-01 1.03101951e-01 1.03074556e-01 1.03047182e-01 1.03019831e-01 + 1.02992501e-01 1.02965192e-01 1.02937906e-01 1.02910641e-01 1.02883398e-01 + 1.02856177e-01 1.02828977e-01 1.02801798e-01 1.02774642e-01 1.02747506e-01 + 1.02720392e-01 1.02693300e-01 1.02666229e-01 1.02639180e-01 1.02612151e-01 + 1.02585145e-01 1.02558159e-01 1.02531195e-01 1.02504252e-01 1.02477330e-01 + 1.02450430e-01 1.02423550e-01 1.02396692e-01 1.02369855e-01 1.02343039e-01 + 1.02316244e-01 1.02289470e-01 1.02262717e-01 1.02235985e-01 1.02209274e-01 + 1.02182584e-01 1.02155915e-01 1.02129267e-01 1.02102639e-01 1.02076033e-01 + 1.02049447e-01 1.02022882e-01 1.01996338e-01 1.01969814e-01 1.01943311e-01 + 1.01916829e-01 1.01890367e-01 1.01863926e-01 1.01837505e-01 1.01811106e-01 + 1.01784726e-01 1.01758367e-01 1.01732029e-01 1.01705711e-01 1.01679413e-01 + 1.01653136e-01 1.01626879e-01 1.01600643e-01 1.01574426e-01 1.01548230e-01 + 1.01522055e-01 1.01495899e-01 1.01469764e-01 1.01443649e-01 1.01417554e-01 + 1.01391479e-01 1.01365425e-01 1.01339390e-01 1.01313376e-01 1.01287381e-01 + 1.01261406e-01 1.01235452e-01 1.01209517e-01 1.01183603e-01 1.01157708e-01 + 1.01131833e-01 1.01105978e-01 1.01080143e-01 1.01054327e-01 1.01028532e-01 + 1.01002756e-01 1.00976999e-01 1.00951263e-01 1.00925546e-01 1.00899849e-01 + 1.00874171e-01 1.00848513e-01 1.00822875e-01 1.00797256e-01 1.00771656e-01 + 1.00746077e-01 1.00720516e-01 1.00694975e-01 1.00669454e-01 1.00643952e-01 + 1.00618469e-01 1.00593005e-01 1.00567561e-01 1.00542136e-01 1.00516731e-01 + 1.00491345e-01 1.00465978e-01 1.00440630e-01 1.00415301e-01 1.00389992e-01 + 1.00364701e-01 1.00339430e-01 1.00314178e-01 1.00288944e-01 1.00263730e-01 + 1.00238535e-01 1.00213359e-01 1.00188202e-01 1.00163064e-01 1.00137944e-01 + 1.00112844e-01 1.00087762e-01 1.00062700e-01 1.00037656e-01 1.00012631e-01 + 9.99876242e-02 9.99626366e-02 9.99376677e-02 9.99127176e-02 9.98877861e-02 + 9.98628732e-02 9.98379790e-02 9.98131034e-02 9.97882464e-02 9.97634079e-02 + 9.97385880e-02 9.97137866e-02 9.96890037e-02 9.96642393e-02 9.96394933e-02 + 9.96147657e-02 9.95900565e-02 9.95653657e-02 9.95406933e-02 9.95160392e-02 + 9.94914034e-02 9.94667859e-02 9.94421867e-02 9.94176057e-02 9.93930429e-02 + 9.93684983e-02 9.93439719e-02 9.93194636e-02 9.92949735e-02 9.92705015e-02 + 9.92460476e-02 9.92216117e-02 9.91971939e-02 9.91727940e-02 9.91484122e-02 + 9.91240484e-02 9.90997025e-02 9.90753745e-02 9.90510645e-02 9.90267723e-02 + 9.90024980e-02 9.89782415e-02 9.89540029e-02 9.89297821e-02 9.89055790e-02 + 9.88813937e-02 9.88572261e-02 9.88330763e-02 9.88089441e-02 9.87848296e-02 + 9.87607327e-02 9.87366535e-02 9.87125919e-02 9.86885478e-02 9.86645213e-02 + 9.86405124e-02 9.86165209e-02 9.85925470e-02 9.85685906e-02 9.85446516e-02 + 9.85207300e-02 9.84968258e-02 9.84729391e-02 9.84490697e-02 9.84252176e-02 + 9.84013829e-02 9.83775655e-02 9.83537654e-02 9.83299825e-02 9.83062169e-02 + 9.82824685e-02 9.82587374e-02 9.82350233e-02 9.82113265e-02 9.81876468e-02 + 9.81639842e-02 9.81403387e-02 9.81167103e-02 9.80930990e-02 9.80695047e-02 + 9.80459274e-02 9.80223671e-02 9.79988238e-02 9.79752974e-02 9.79517880e-02 + 9.79282955e-02 9.79048199e-02 9.78813611e-02 9.78579192e-02 9.78344942e-02 + 9.78110859e-02 9.77876945e-02 9.77643198e-02 9.77409619e-02 9.77176207e-02 + 9.76942963e-02 9.76709885e-02 9.76476974e-02 9.76244230e-02 9.76011651e-02 + 9.75779239e-02 9.75546993e-02 9.75314913e-02 9.75082999e-02 9.74851249e-02 + 9.74619665e-02 9.74388246e-02 9.74156991e-02 9.73925901e-02 9.73694976e-02 + 9.73464215e-02 9.73233617e-02 9.73003184e-02 9.72772914e-02 9.72542807e-02 + 9.72312864e-02 9.72083084e-02 9.71853467e-02 9.71624012e-02 9.71394719e-02 + 9.71165589e-02 9.70936621e-02 9.70707815e-02 9.70479171e-02 9.70250688e-02 + 9.70022366e-02 9.69794205e-02 9.69566206e-02 9.69338367e-02 9.69110688e-02 + 9.68883170e-02 9.68655813e-02 9.68428615e-02 9.68201577e-02 9.67974698e-02 + 9.67747979e-02 9.67521419e-02 9.67295019e-02 9.67068777e-02 9.66842693e-02 + 9.66616769e-02 9.66391002e-02 9.66165394e-02 9.65939943e-02 9.65714651e-02 + 9.65489516e-02 9.65264538e-02 9.65039718e-02 9.64815054e-02 9.64590547e-02 + 9.64366197e-02 9.64142004e-02 9.63917967e-02 9.63694086e-02 9.63470360e-02 + 9.63246791e-02 9.63023377e-02 9.62800118e-02 9.62577015e-02 9.62354067e-02 + 9.62131273e-02 9.61908635e-02 9.61686150e-02 9.61463820e-02 9.61241644e-02 + 9.61019623e-02 9.60797754e-02 9.60576040e-02 9.60354479e-02 9.60133071e-02 + 9.59911816e-02 9.59690714e-02 9.59469765e-02 9.59248968e-02 9.59028324e-02 + 9.58807832e-02 9.58587492e-02 9.58367303e-02 9.58147267e-02 9.57927382e-02 + 9.57707648e-02 9.57488065e-02 9.57268633e-02 9.57049352e-02 9.56830222e-02 + 9.56611242e-02 9.56392413e-02 9.56173733e-02 9.55955204e-02 9.55736824e-02 + 9.55518594e-02 9.55300513e-02 9.55082582e-02 9.54864799e-02 9.54647166e-02 + 9.54429681e-02 9.54212345e-02 9.53995157e-02 9.53778117e-02 9.53561226e-02 + 9.53344482e-02 9.53127886e-02 9.52911438e-02 9.52695137e-02 9.52478984e-02 + 9.52262977e-02 9.52047117e-02 9.51831404e-02 9.51615838e-02 9.51400418e-02 + 9.51185144e-02 9.50970016e-02 9.50755034e-02 9.50540198e-02 9.50325508e-02 + 9.50110963e-02 9.49896563e-02 9.49682308e-02 9.49468198e-02 9.49254233e-02 + 9.49040412e-02 9.48826736e-02 9.48613204e-02 9.48399817e-02 9.48186573e-02 + 9.47973473e-02 9.47760516e-02 9.47547703e-02 9.47335034e-02 9.47122507e-02 + 9.46910123e-02 9.46697883e-02 9.46485784e-02 9.46273829e-02 9.46062015e-02 + 9.45850344e-02 9.45638815e-02 9.45427428e-02 9.45216182e-02 9.45005078e-02 + 9.44794116e-02 9.44583294e-02 9.44372614e-02 9.44162074e-02 9.43951676e-02 + 9.43741418e-02 9.43531300e-02 9.43321323e-02 9.43111485e-02 9.42901788e-02 + 9.42692231e-02 9.42482813e-02 9.42273534e-02 9.42064395e-02 9.41855396e-02 + 9.41646535e-02 9.41437813e-02 9.41229230e-02 9.41020785e-02 9.40812479e-02 + 9.40604311e-02 9.40396282e-02 9.40188390e-02 9.39980636e-02 9.39773020e-02 + 9.39565541e-02 9.39358200e-02 9.39150995e-02 9.38943928e-02 9.38736998e-02 + 9.38530204e-02 9.38323548e-02 9.38117027e-02 9.37910643e-02 9.37704395e-02 + 9.37498283e-02 9.37292307e-02 9.37086466e-02 9.36880762e-02 9.36675192e-02 + 9.36469758e-02 9.36264459e-02 9.36059295e-02 9.35854265e-02 9.35649371e-02 + 9.35444611e-02 9.35239985e-02 9.35035493e-02 9.34831136e-02 9.34626912e-02 + 9.34422823e-02 9.34218866e-02 9.34015044e-02 9.33811355e-02 9.33607798e-02 + 9.33404375e-02 9.33201085e-02 9.32997928e-02 9.32794903e-02 9.32592011e-02 + 9.32389251e-02 9.32186624e-02 9.31984128e-02 9.31781764e-02 9.31579532e-02 + 9.31377432e-02 9.31175463e-02 9.30973626e-02 9.30771919e-02 9.30570344e-02 + 9.30368899e-02 9.30167586e-02 9.29966403e-02 9.29765350e-02 9.29564428e-02 + 9.29363636e-02 9.29162974e-02 9.28962442e-02 9.28762040e-02 9.28561768e-02 + 9.28361624e-02 9.28161611e-02 9.27961726e-02 9.27761971e-02 9.27562344e-02 + 9.27362847e-02 9.27163478e-02 9.26964237e-02 9.26765125e-02 9.26566141e-02 + 9.26367286e-02 9.26168558e-02 9.25969958e-02 9.25771486e-02 9.25573141e-02 + 9.25374924e-02 9.25176834e-02 9.24978871e-02 9.24781036e-02 9.24583327e-02 + 9.24385745e-02 9.24188289e-02 9.23990960e-02 9.23793758e-02 9.23596681e-02 + 9.23399731e-02 9.23202907e-02 9.23006208e-02 9.22809635e-02 9.22613188e-02 + 9.22416866e-02 9.22220669e-02 9.22024597e-02 9.21828651e-02 9.21632829e-02 + 9.21437132e-02 9.21241560e-02 9.21046112e-02 9.20850788e-02 9.20655589e-02 + 9.20460514e-02 9.20265563e-02 9.20070735e-02 9.19876031e-02 9.19681451e-02 + 9.19486994e-02 9.19292661e-02 9.19098451e-02 9.18904363e-02 9.18710399e-02 + 9.18516557e-02 9.18322838e-02 9.18129242e-02 9.17935768e-02 9.17742416e-02 + 9.17549186e-02 9.17356079e-02 9.17163093e-02 9.16970229e-02 9.16777486e-02 + 9.16584865e-02 9.16392366e-02 9.16199987e-02 9.16007730e-02 9.15815594e-02 + 9.15623578e-02 9.15431684e-02 9.15239910e-02 9.15048256e-02 9.14856723e-02 + 9.14665310e-02 9.14474017e-02 9.14282844e-02 9.14091791e-02 9.13900857e-02 + 9.13710043e-02 9.13519349e-02 9.13328774e-02 9.13138318e-02 9.12947982e-02 + 9.12757764e-02 9.12567665e-02 9.12377685e-02 9.12187823e-02 9.11998080e-02 + 9.11808456e-02 9.11618949e-02 9.11429561e-02 9.11240290e-02 9.11051138e-02 + 9.10862103e-02 9.10673186e-02 9.10484386e-02 9.10295704e-02 9.10107139e-02 + 9.09918691e-02 9.09730360e-02 9.09542146e-02 9.09354049e-02 9.09166069e-02 + 9.08978205e-02 9.08790457e-02 9.08602826e-02 9.08415311e-02 9.08227911e-02 + 9.08040628e-02 9.07853461e-02 9.07666409e-02 9.07479473e-02 9.07292652e-02 + 9.07105947e-02 9.06919357e-02 9.06732882e-02 9.06546522e-02 9.06360277e-02 + 9.06174146e-02 9.05988131e-02 9.05802229e-02 9.05616442e-02 9.05430770e-02 + 9.05245211e-02 9.05059767e-02 9.04874436e-02 9.04689219e-02 9.04504116e-02 + 9.04319127e-02 9.04134251e-02 9.03949488e-02 9.03764839e-02 9.03580303e-02 + 9.03395879e-02 9.03211569e-02 9.03027371e-02 9.02843286e-02 9.02659313e-02 + 9.02475453e-02 9.02291706e-02 9.02108070e-02 9.01924546e-02 9.01741135e-02 + 9.01557835e-02 9.01374647e-02 9.01191571e-02 9.01008606e-02 9.00825752e-02 + 9.00643010e-02 9.00460379e-02 9.00277859e-02 9.00095450e-02 8.99913152e-02 + 8.99730965e-02 8.99548888e-02 8.99366921e-02 8.99185065e-02 8.99003320e-02 + 8.98821684e-02 8.98640159e-02 8.98458743e-02 8.98277437e-02 8.98096241e-02 + 8.97915155e-02 8.97734178e-02 8.97553311e-02 8.97372552e-02 8.97191903e-02 + 8.97011363e-02 8.96830932e-02 8.96650610e-02 8.96470396e-02 8.96290291e-02 + 8.96110295e-02 8.95930407e-02 8.95750627e-02 8.95570956e-02 8.95391392e-02 + 8.95211937e-02 8.95032589e-02 8.94853349e-02 8.94674217e-02 8.94495192e-02 + 8.94316275e-02 8.94137465e-02 8.93958762e-02 8.93780167e-02 8.93601678e-02 + 8.93423296e-02 8.93245021e-02 8.93066853e-02 8.92888791e-02 8.92710836e-02 + 8.92532987e-02 8.92355244e-02 8.92177608e-02 8.92000077e-02 8.91822653e-02 + 8.91645334e-02 8.91468121e-02 8.91291014e-02 8.91114012e-02 8.90937115e-02 + 8.90760324e-02 8.90583638e-02 8.90407057e-02 8.90230582e-02 8.90054211e-02 + 8.89877945e-02 8.89701783e-02 8.89525726e-02 8.89349774e-02 8.89173926e-02 + 8.88998182e-02 8.88822542e-02 8.88647007e-02 8.88471575e-02 8.88296247e-02 + 8.88121023e-02 8.87945903e-02 8.87770886e-02 8.87595973e-02 8.87421163e-02 + 8.87246456e-02 8.87071853e-02 8.86897352e-02 8.86722954e-02 8.86548660e-02 + 8.86374468e-02 8.86200378e-02 8.86026391e-02 8.85852507e-02 8.85678725e-02 + 8.85505045e-02 8.85331467e-02 8.85157991e-02 8.84984618e-02 8.84811346e-02 + 8.84638176e-02 8.84465107e-02 8.84292140e-02 8.84119274e-02 8.83946510e-02 + 8.83773847e-02 8.83601285e-02 8.83428825e-02 8.83256465e-02 8.83084206e-02 + 8.82912047e-02 8.82739990e-02 8.82568033e-02 8.82396176e-02 8.82224420e-02 + 8.82052764e-02 8.81881208e-02 8.81709752e-02 8.81538396e-02 8.81367140e-02 + 8.81195984e-02 8.81024927e-02 8.80853970e-02 8.80683113e-02 8.80512355e-02 + 8.80341696e-02 8.80171137e-02 8.80000676e-02 8.79830314e-02 8.79660052e-02 + 8.79489888e-02 8.79319823e-02 8.79149857e-02 8.78979989e-02 8.78810219e-02 + 8.78640548e-02 8.78470975e-02 8.78301500e-02 8.78132123e-02 8.77962845e-02 + 8.77793664e-02 8.77624580e-02 8.77455595e-02 8.77286707e-02 8.77117916e-02 + 8.76949223e-02 8.76780628e-02 8.76612129e-02 8.76443728e-02 8.76275423e-02 + 8.76107216e-02 8.75939105e-02 8.75771091e-02 8.75603174e-02 8.75435353e-02 + 8.75267629e-02 8.75100001e-02 8.74932469e-02 8.74765033e-02 8.74597694e-02 + 8.74430451e-02 8.74263303e-02 8.74096251e-02 8.73929296e-02 8.73762435e-02 + 8.73595670e-02 8.73429001e-02 8.73262427e-02 8.73095948e-02 8.72929565e-02 + 8.72763276e-02 8.72597083e-02 8.72430984e-02 8.72264981e-02 8.72099072e-02 + 8.71933257e-02 8.71767537e-02 8.71601912e-02 8.71436381e-02 8.71270944e-02 + 8.71105602e-02 8.70940353e-02 8.70775199e-02 8.70610138e-02 8.70445172e-02 + 8.70280299e-02 8.70115519e-02 8.69950834e-02 8.69786241e-02 8.69621742e-02 + 8.69457337e-02 8.69293024e-02 8.69128805e-02 8.68964679e-02 8.68800646e-02 + 8.68636705e-02 8.68472857e-02 8.68309103e-02 8.68145440e-02 8.67981870e-02 + 8.67818393e-02 8.67655008e-02 8.67491715e-02 8.67328514e-02 8.67165406e-02 + 8.67002389e-02 8.66839464e-02 8.66676631e-02 8.66513890e-02 8.66351240e-02 + 8.66188682e-02 8.66026216e-02 8.65863841e-02 8.65701557e-02 8.65539364e-02 + 8.65377263e-02 8.65215252e-02 8.65053333e-02 8.64891504e-02 8.64729766e-02 + 8.64568119e-02 8.64406563e-02 8.64245097e-02 8.64083721e-02 8.63922436e-02 + 8.63761241e-02 8.63600136e-02 8.63439122e-02 8.63278197e-02 8.63117363e-02 + 8.62956618e-02 8.62795963e-02 8.62635398e-02 8.62474922e-02 8.62314536e-02 + 8.62154239e-02 8.61994032e-02 8.61833914e-02 8.61673885e-02 8.61513945e-02 + 8.61354094e-02 8.61194332e-02 8.61034659e-02 8.60875075e-02 8.60715580e-02 + 8.60556173e-02 8.60396855e-02 8.60237625e-02 8.60078483e-02 8.59919430e-02 + 8.59760465e-02 8.59601588e-02 8.59442800e-02 8.59284099e-02 8.59125486e-02 + 8.58966961e-02 8.58808523e-02 8.58650173e-02 8.58491911e-02 8.58333736e-02 + 8.58175649e-02 8.58017649e-02 8.57859736e-02 8.57701911e-02 8.57544172e-02 + 8.57386520e-02 8.57228956e-02 8.57071478e-02 8.56914087e-02 8.56756782e-02 + 8.56599565e-02 8.56442433e-02 8.56285389e-02 8.56128430e-02 8.55971558e-02 + 8.55814772e-02 8.55658072e-02 8.55501458e-02 8.55344930e-02 8.55188488e-02 + 8.55032132e-02 8.54875862e-02 8.54719677e-02 8.54563578e-02 8.54407564e-02 + 8.54251636e-02 8.54095793e-02 8.53940035e-02 8.53784363e-02 8.53628775e-02 + 8.53473273e-02 8.53317855e-02 8.53162523e-02 8.53007275e-02 8.52852112e-02 + 8.52697034e-02 8.52542040e-02 8.52387130e-02 8.52232305e-02 8.52077565e-02 + 8.51922909e-02 8.51768336e-02 8.51613848e-02 8.51459444e-02 8.51305124e-02 + 8.51150888e-02 8.50996736e-02 8.50842667e-02 8.50688682e-02 8.50534780e-02 + 8.50380963e-02 8.50227228e-02 8.50073577e-02 8.49920009e-02 8.49766524e-02 + 8.49613123e-02 8.49459804e-02 8.49306569e-02 8.49153416e-02 8.49000346e-02 + 8.48847359e-02 8.48694455e-02 8.48541633e-02 8.48388893e-02 8.48236237e-02 + 8.48083662e-02 8.47931170e-02 8.47778760e-02 8.47626432e-02 8.47474187e-02 + 8.47322023e-02 8.47169941e-02 8.47017941e-02 8.46866023e-02 8.46714187e-02 + 8.46562432e-02 8.46410759e-02 8.46259167e-02 8.46107657e-02 8.45956228e-02 + 8.45804880e-02 8.45653614e-02 8.45502428e-02 8.45351324e-02 8.45200301e-02 + 8.45049358e-02 8.44898497e-02 8.44747716e-02 8.44597016e-02 8.44446397e-02 + 8.44295858e-02 8.44145399e-02 8.43995021e-02 8.43844724e-02 8.43694506e-02 + 8.43544369e-02 8.43394312e-02 8.43244335e-02 8.43094438e-02 8.42944621e-02 + 8.42794883e-02 8.42645226e-02 8.42495648e-02 8.42346150e-02 8.42196731e-02 + 8.42047392e-02 8.41898132e-02 8.41748952e-02 8.41599851e-02 8.41450829e-02 + 8.41301886e-02 8.41153022e-02 8.41004238e-02 8.40855532e-02 8.40706905e-02 + 8.40558357e-02 8.40409887e-02 8.40261496e-02 8.40113184e-02 8.39964950e-02 + 8.39816795e-02 8.39668718e-02 8.39520719e-02 8.39372799e-02 8.39224957e-02 + 8.39077193e-02 8.38929507e-02 8.38781898e-02 8.38634368e-02 8.38486916e-02 + 8.38339541e-02 8.38192244e-02 8.38045025e-02 8.37897883e-02 8.37750818e-02 + 8.37603831e-02 8.37456922e-02 8.37310089e-02 8.37163334e-02 8.37016656e-02 + 8.36870055e-02 8.36723531e-02 8.36577084e-02 8.36430714e-02 8.36284421e-02 + 8.36138204e-02 8.35992064e-02 8.35846001e-02 8.35700014e-02 8.35554104e-02 + 8.35408270e-02 8.35262512e-02 8.35116831e-02 8.34971226e-02 8.34825697e-02 + 8.34680244e-02 8.34534867e-02 8.34389566e-02 8.34244341e-02 8.34099191e-02 + 8.33954118e-02 8.33809120e-02 8.33664197e-02 8.33519351e-02 8.33374579e-02 + 8.33229883e-02 8.33085263e-02 8.32940718e-02 8.32796248e-02 8.32651853e-02 + 8.32507533e-02 8.32363288e-02 8.32219118e-02 8.32075023e-02 8.31931003e-02 + 8.31787058e-02 8.31643187e-02 8.31499391e-02 8.31355669e-02 8.31212022e-02 + 8.31068450e-02 8.30924951e-02 8.30781528e-02 8.30638178e-02 8.30494902e-02 + 8.30351701e-02 8.30208574e-02 8.30065520e-02 8.29922541e-02 8.29779635e-02 + 8.29636804e-02 8.29494046e-02 8.29351361e-02 8.29208751e-02 8.29066213e-02 + 8.28923750e-02 8.28781359e-02 8.28639042e-02 8.28496799e-02 8.28354628e-02 + 8.28212531e-02 8.28070507e-02 8.27928556e-02 8.27786678e-02 8.27644872e-02 + 8.27503140e-02 8.27361480e-02 8.27219893e-02 8.27078379e-02 8.26936938e-02 + 8.26795569e-02 8.26654272e-02 8.26513048e-02 8.26371896e-02 8.26230816e-02 + 8.26089809e-02 8.25948874e-02 8.25808011e-02 8.25667220e-02 8.25526501e-02 + 8.25385854e-02 8.25245279e-02 8.25104775e-02 8.24964344e-02 8.24823984e-02 + 8.24683695e-02 8.24543479e-02 8.24403333e-02 8.24263259e-02 8.24123257e-02 + 8.23983326e-02 8.23843466e-02 8.23703677e-02 8.23563960e-02 8.23424313e-02 + 8.23284737e-02 8.23145233e-02 8.23005799e-02 8.22866436e-02 8.22727144e-02 + 8.22587923e-02 8.22448772e-02 8.22309692e-02 8.22170683e-02 8.22031744e-02 + 8.21892875e-02 8.21754077e-02 8.21615349e-02 8.21476691e-02 8.21338103e-02 + 8.21199586e-02 8.21061138e-02 8.20922761e-02 8.20784453e-02 8.20646216e-02 + 8.20508048e-02 8.20369950e-02 8.20231922e-02 8.20093963e-02 8.19956074e-02 + 8.19818254e-02 8.19680504e-02 8.19542823e-02 8.19405212e-02 8.19267670e-02 + 8.19130197e-02 8.18992794e-02 8.18855459e-02 8.18718194e-02 8.18580997e-02 + 8.18443870e-02 8.18306811e-02 8.18169822e-02 8.18032901e-02 8.17896048e-02 + 8.17759265e-02 8.17622550e-02 8.17485903e-02 8.17349326e-02 8.17212816e-02 + 8.17076375e-02 8.16940002e-02 8.16803697e-02 8.16667461e-02 8.16531293e-02 + 8.16395193e-02 8.16259161e-02 8.16123197e-02 8.15987300e-02 8.15851472e-02 + 8.15715712e-02 8.15580019e-02 8.15444394e-02 8.15308836e-02 8.15173346e-02 + 8.15037924e-02 8.14902569e-02 8.14767282e-02 8.14632062e-02 8.14496909e-02 + 8.14361823e-02 8.14226805e-02 8.14091854e-02 8.13956970e-02 8.13822153e-02 + 8.13687402e-02 8.13552719e-02 8.13418103e-02 8.13283553e-02 8.13149070e-02 + 8.13014654e-02 8.12880305e-02 8.12746022e-02 8.12611805e-02 8.12477656e-02 + 8.12343572e-02 8.12209555e-02 8.12075604e-02 8.11941719e-02 8.11807901e-02 + 8.11674149e-02 8.11540463e-02 8.11406843e-02 8.11273288e-02 8.11139800e-02 + 8.11006378e-02 8.10873021e-02 8.10739731e-02 8.10606506e-02 8.10473346e-02 + 8.10340252e-02 8.10207224e-02 8.10074261e-02 8.09941364e-02 8.09808532e-02 + 8.09675765e-02 8.09543064e-02 8.09410428e-02 8.09277857e-02 8.09145351e-02 + 8.09012911e-02 8.08880535e-02 8.08748224e-02 8.08615978e-02 8.08483797e-02 + 8.08351681e-02 8.08219630e-02 8.08087643e-02 8.07955721e-02 8.07823863e-02 + 8.07692070e-02 8.07560342e-02 8.07428678e-02 8.07297078e-02 8.07165542e-02 + 8.07034071e-02 8.06902664e-02 8.06771322e-02 8.06640043e-02 8.06508829e-02 + 8.06377678e-02 8.06246592e-02 8.06115569e-02 8.05984610e-02 8.05853715e-02 + 8.05722884e-02 8.05592116e-02 8.05461412e-02 8.05330772e-02 8.05200195e-02 + 8.05069682e-02 8.04939232e-02 8.04808846e-02 8.04678523e-02 8.04548263e-02 + 8.04418066e-02 8.04287933e-02 8.04157863e-02 8.04027856e-02 8.03897912e-02 + 8.03768031e-02 8.03638212e-02 8.03508457e-02 8.03378765e-02 8.03249135e-02 + 8.03119568e-02 8.02990064e-02 8.02860622e-02 8.02731243e-02 8.02601926e-02 + 8.02472672e-02 8.02343481e-02 8.02214351e-02 8.02085284e-02 8.01956280e-02 + 8.01827337e-02 8.01698457e-02 8.01569639e-02 8.01440883e-02 8.01312189e-02 + 8.01183557e-02 8.01054986e-02 8.00926478e-02 8.00798032e-02 8.00669647e-02 + 8.00541324e-02 8.00413063e-02 8.00284863e-02 8.00156725e-02 8.00028649e-02 + 7.99900634e-02 7.99772680e-02 7.99644788e-02 7.99516957e-02 7.99389187e-02 + 7.99261479e-02 7.99133832e-02 7.99006246e-02 7.98878721e-02 7.98751257e-02 + 7.98623854e-02 7.98496512e-02 7.98369231e-02 7.98242011e-02 7.98114851e-02 + 7.97987753e-02 7.97860715e-02 7.97733737e-02 7.97606821e-02 7.97479965e-02 + 7.97353169e-02 7.97226434e-02 7.97099759e-02 7.96973145e-02 7.96846590e-02 + 7.96720097e-02 7.96593663e-02 7.96467290e-02 7.96340976e-02 7.96214723e-02 + 7.96088530e-02 7.95962397e-02 7.95836323e-02 7.95710310e-02 7.95584356e-02 + 7.95458463e-02 7.95332629e-02 7.95206854e-02 7.95081140e-02 7.94955485e-02 + 7.94829889e-02 7.94704353e-02 7.94578877e-02 7.94453459e-02 7.94328102e-02 + 7.94202803e-02 7.94077564e-02 7.93952384e-02 7.93827263e-02 7.93702202e-02 + 7.93577199e-02 7.93452256e-02 7.93327371e-02 7.93202546e-02 7.93077779e-02 + 7.92953071e-02 7.92828423e-02 7.92703832e-02 7.92579301e-02 7.92454828e-02 + 7.92330414e-02 7.92206058e-02 7.92081761e-02 7.91957523e-02 7.91833343e-02 + 7.91709221e-02 7.91585157e-02 7.91461152e-02 7.91337206e-02 7.91213317e-02 + 7.91089486e-02 7.90965714e-02 7.90842000e-02 7.90718344e-02 7.90594746e-02 + 7.90471205e-02 7.90347723e-02 7.90224298e-02 7.90100932e-02 7.89977623e-02 + 7.89854371e-02 7.89731178e-02 7.89608042e-02 7.89484964e-02 7.89361943e-02 + 7.89238979e-02 7.89116073e-02 7.88993225e-02 7.88870434e-02 7.88747700e-02 + 7.88625023e-02 7.88502404e-02 7.88379842e-02 7.88257337e-02 7.88134889e-02 + 7.88012498e-02 7.87890164e-02 7.87767887e-02 7.87645667e-02 7.87523504e-02 + 7.87401398e-02 7.87279348e-02 7.87157355e-02 7.87035419e-02 7.86913540e-02 + 7.86791717e-02 7.86669951e-02 7.86548241e-02 7.86426588e-02 7.86304991e-02 + 7.86183450e-02 7.86061966e-02 7.85940538e-02 7.85819167e-02 7.85697851e-02 + 7.85576592e-02 7.85455389e-02 7.85334242e-02 7.85213151e-02 7.85092116e-02 + 7.84971137e-02 7.84850214e-02 7.84729347e-02 7.84608535e-02 7.84487780e-02 + 7.84367080e-02 7.84246436e-02 7.84125847e-02 7.84005314e-02 7.83884837e-02 + 7.83764415e-02 7.83644048e-02 7.83523737e-02 7.83403482e-02 7.83283282e-02 + 7.83163137e-02 7.83043047e-02 7.82923013e-02 7.82803034e-02 7.82683110e-02 + 7.82563241e-02 7.82443427e-02 7.82323668e-02 7.82203964e-02 7.82084315e-02 + 7.81964721e-02 7.81845182e-02 7.81725697e-02 7.81606268e-02 7.81486893e-02 + 7.81367572e-02 7.81248307e-02 7.81129096e-02 7.81009939e-02 7.80890837e-02 + 7.80771790e-02 7.80652797e-02 7.80533858e-02 7.80414974e-02 7.80296144e-02 + 7.80177368e-02 7.80058646e-02 7.79939979e-02 7.79821366e-02 7.79702807e-02 + 7.79584302e-02 7.79465851e-02 7.79347454e-02 7.79229111e-02 7.79110821e-02 + 7.78992586e-02 7.78874404e-02 7.78756277e-02 7.78638202e-02 7.78520182e-02 + 7.78402215e-02 7.78284302e-02 7.78166443e-02 7.78048637e-02 7.77930884e-02 + 7.77813185e-02 7.77695539e-02 7.77577947e-02 7.77460408e-02 7.77342922e-02 + 7.77225490e-02 7.77108111e-02 7.76990785e-02 7.76873512e-02 7.76756292e-02 + 7.76639125e-02 7.76522011e-02 7.76404950e-02 7.76287942e-02 7.76170987e-02 + 7.76054085e-02 7.75937236e-02 7.75820439e-02 7.75703695e-02 7.75587004e-02 + 7.75470365e-02 7.75353780e-02 7.75237246e-02 7.75120765e-02 7.75004337e-02 + 7.74887961e-02 7.74771637e-02 7.74655366e-02 7.74539147e-02 7.74422981e-02 + 7.74306867e-02 7.74190805e-02 7.74074795e-02 7.73958837e-02 7.73842931e-02 + 7.73727078e-02 7.73611276e-02 7.73495527e-02 7.73379829e-02 7.73264183e-02 + 7.73148589e-02 7.73033047e-02 7.72917557e-02 7.72802118e-02 7.72686732e-02 + 7.72571396e-02 7.72456113e-02 7.72340881e-02 7.72225701e-02 7.72110572e-02 + 7.71995494e-02 7.71880468e-02 7.71765494e-02 7.71650571e-02 7.71535699e-02 + 7.71420878e-02 7.71306109e-02 7.71191391e-02 7.71076724e-02 7.70962108e-02 + 7.70847543e-02 7.70733030e-02 7.70618567e-02 7.70504155e-02 7.70389795e-02 + 7.70275485e-02 7.70161226e-02 7.70047018e-02 7.69932860e-02 7.69818754e-02 + 7.69704698e-02 7.69590693e-02 7.69476738e-02 7.69362834e-02 7.69248981e-02 + 7.69135178e-02 7.69021426e-02 7.68907724e-02 7.68794073e-02 7.68680472e-02 + 7.68566921e-02 7.68453420e-02 7.68339970e-02 7.68226570e-02 7.68113221e-02 + 7.67999921e-02 7.67886672e-02 7.67773472e-02 7.67660323e-02 7.67547224e-02 + 7.67434174e-02 7.67321175e-02 7.67208226e-02 7.67095326e-02 7.66982476e-02 + 7.66869676e-02 7.66756926e-02 7.66644225e-02 7.66531574e-02 7.66418973e-02 + 7.66306422e-02 7.66193920e-02 7.66081467e-02 7.65969064e-02 7.65856711e-02 + 7.65744407e-02 7.65632152e-02 7.65519946e-02 7.65407790e-02 7.65295684e-02 + 7.65183626e-02 7.65071618e-02 7.64959659e-02 7.64847749e-02 7.64735888e-02 + 7.64624076e-02 7.64512313e-02 7.64400599e-02 7.64288935e-02 7.64177319e-02 + 7.64065752e-02 7.63954233e-02 7.63842764e-02 7.63731343e-02 7.63619972e-02 + 7.63508648e-02 7.63397374e-02 7.63286148e-02 7.63174971e-02 7.63063842e-02 + 7.62952762e-02 7.62841730e-02 7.62730747e-02 7.62619813e-02 7.62508926e-02 + 7.62398088e-02 7.62287298e-02 7.62176557e-02 7.62065864e-02 7.61955219e-02 + 7.61844622e-02 7.61734074e-02 7.61623573e-02 7.61513121e-02 7.61402716e-02 + 7.61292360e-02 7.61182052e-02 7.61071791e-02 7.60961579e-02 7.60851414e-02 + 7.60741297e-02 7.60631228e-02 7.60521207e-02 7.60411233e-02 7.60301307e-02 + 7.60191429e-02 7.60081598e-02 7.59971815e-02 7.59862080e-02 7.59752392e-02 + 7.59642751e-02 7.59533158e-02 7.59423613e-02 7.59314115e-02 7.59204664e-02 + 7.59095260e-02 7.58985904e-02 7.58876595e-02 7.58767333e-02 7.58658119e-02 + 7.58548951e-02 7.58439831e-02 7.58330758e-02 7.58221731e-02 7.58112752e-02 + 7.58003820e-02 7.57894935e-02 7.57786096e-02 7.57677305e-02 7.57568560e-02 + 7.57459862e-02 7.57351211e-02 7.57242607e-02 7.57134049e-02 7.57025538e-02 + 7.56917074e-02 7.56808656e-02 7.56700285e-02 7.56591961e-02 7.56483683e-02 + 7.56375451e-02 7.56267266e-02 7.56159127e-02 7.56051035e-02 7.55942989e-02 + 7.55834989e-02 7.55727035e-02 7.55619128e-02 7.55511267e-02 7.55403452e-02 + 7.55295684e-02 7.55187961e-02 7.55080285e-02 7.54972654e-02 7.54865070e-02 + 7.54757531e-02 7.54650039e-02 7.54542592e-02 7.54435192e-02 7.54327837e-02 + 7.54220528e-02 7.54113264e-02 7.54006047e-02 7.53898875e-02 7.53791749e-02 + 7.53684669e-02 7.53577634e-02 7.53470644e-02 7.53363701e-02 7.53256803e-02 + 7.53149950e-02 7.53043143e-02 7.52936381e-02 7.52829665e-02 7.52722994e-02 + 7.52616368e-02 7.52509787e-02 7.52403252e-02 7.52296762e-02 7.52190318e-02 + 7.52083918e-02 7.51977564e-02 7.51871255e-02 7.51764990e-02 7.51658771e-02 + 7.51552597e-02 7.51446468e-02 7.51340384e-02 7.51234344e-02 7.51128350e-02 + 7.51022400e-02 7.50916496e-02 7.50810636e-02 7.50704821e-02 7.50599050e-02 + 7.50493324e-02 7.50387643e-02 7.50282007e-02 7.50176415e-02 7.50070868e-02 + 7.49965365e-02 7.49859907e-02 7.49754493e-02 7.49649123e-02 7.49543799e-02 + 7.49438518e-02 7.49333282e-02 7.49228090e-02 7.49122942e-02 7.49017839e-02 + 7.48912780e-02 7.48807765e-02 7.48702794e-02 7.48597868e-02 7.48492985e-02 + 7.48388147e-02 7.48283352e-02 7.48178602e-02 7.48073895e-02 7.47969233e-02 + 7.47864614e-02 7.47760040e-02 7.47655509e-02 7.47551022e-02 7.47446579e-02 + 7.47342179e-02 7.47237824e-02 7.47133512e-02 7.47029243e-02 7.46925019e-02 + 7.46820838e-02 7.46716700e-02 7.46612606e-02 7.46508556e-02 7.46404549e-02 + 7.46300586e-02 7.46196666e-02 7.46092789e-02 7.45988956e-02 7.45885166e-02 + 7.45781419e-02 7.45677716e-02 7.45574056e-02 7.45470439e-02 7.45366865e-02 + 7.45263335e-02 7.45159847e-02 7.45056403e-02 7.44953002e-02 7.44849644e-02 + 7.44746329e-02 7.44643056e-02 7.44539827e-02 7.44436641e-02 7.44333497e-02 + 7.44230397e-02 7.44127339e-02 7.44024324e-02 7.43921352e-02 7.43818423e-02 + 7.43715536e-02 7.43612692e-02 7.43509890e-02 7.43407132e-02 7.43304416e-02 + 7.43201742e-02 7.43099111e-02 7.42996522e-02 7.42893976e-02 7.42791473e-02 + 7.42689011e-02 7.42586593e-02 7.42484216e-02 7.42381882e-02 7.42279590e-02 + 7.42177341e-02 7.42075133e-02 7.41972968e-02 7.41870845e-02 7.41768765e-02 + 7.41666726e-02 7.41564729e-02 7.41462775e-02 7.41360863e-02 7.41258992e-02 + 7.41157164e-02 7.41055377e-02 7.40953633e-02 7.40851930e-02 7.40750269e-02 + 7.40648650e-02 7.40547073e-02 7.40445538e-02 7.40344044e-02 7.40242592e-02 + 7.40141182e-02 7.40039814e-02 7.39938487e-02 7.39837202e-02 7.39735958e-02 + 7.39634756e-02 7.39533595e-02 7.39432476e-02 7.39331398e-02 7.39230362e-02 + 7.39129367e-02 7.39028414e-02 7.38927502e-02 7.38826631e-02 7.38725802e-02 + 7.38625014e-02 7.38524267e-02 7.38423561e-02 7.38322896e-02 7.38222273e-02 + 7.38121691e-02 7.38021150e-02 7.37920650e-02 7.37820191e-02 7.37719773e-02 + 7.37619396e-02 7.37519060e-02 7.37418765e-02 7.37318510e-02 7.37218297e-02 + 7.37118125e-02 7.37017993e-02 7.36917902e-02 7.36817852e-02 7.36717843e-02 + 7.36617874e-02 7.36517946e-02 7.36418059e-02 7.36318212e-02 7.36218406e-02 + 7.36118641e-02 7.36018916e-02 7.35919231e-02 7.35819587e-02 7.35719984e-02 + 7.35620421e-02 7.35520898e-02 7.35421416e-02 7.35321974e-02 7.35222572e-02 + 7.35123211e-02 7.35023890e-02 7.34924610e-02 7.34825369e-02 7.34726169e-02 + 7.34627009e-02 7.34527889e-02 7.34428809e-02 7.34329769e-02 7.34230769e-02 + 7.34131809e-02 7.34032890e-02 7.33934010e-02 7.33835170e-02 7.33736370e-02 + 7.33637610e-02 7.33538890e-02 7.33440210e-02 7.33341569e-02 7.33242969e-02 + 7.33144408e-02 7.33045886e-02 7.32947405e-02 7.32848963e-02 7.32750561e-02 + 7.32652199e-02 7.32553876e-02 7.32455592e-02 7.32357348e-02 7.32259144e-02 + 7.32160979e-02 7.32062854e-02 7.31964768e-02 7.31866722e-02 7.31768715e-02 + 7.31670747e-02 7.31572819e-02 7.31474930e-02 7.31377080e-02 7.31279269e-02 + 7.31181498e-02 7.31083766e-02 7.30986073e-02 7.30888419e-02 7.30790805e-02 + 7.30693229e-02 7.30595693e-02 7.30498195e-02 7.30400737e-02 7.30303318e-02 + 7.30205937e-02 7.30108596e-02 7.30011293e-02 7.29914030e-02 7.29816805e-02 + 7.29719619e-02 7.29622472e-02 7.29525364e-02 7.29428294e-02 7.29331263e-02 + 7.29234271e-02 7.29137318e-02 7.29040403e-02 7.28943527e-02 7.28846689e-02 + 7.28749890e-02 7.28653130e-02 7.28556408e-02 7.28459725e-02 7.28363080e-02 + 7.28266473e-02 7.28169905e-02 7.28073376e-02 7.27976885e-02 7.27880432e-02 + 7.27784017e-02 7.27687641e-02 7.27591303e-02 7.27495003e-02 7.27398742e-02 + 7.27302519e-02 7.27206334e-02 7.27110187e-02 7.27014078e-02 7.26918007e-02 + 7.26821975e-02 7.26725980e-02 7.26630023e-02 7.26534105e-02 7.26438224e-02 + 7.26342382e-02 7.26246577e-02 7.26150810e-02 7.26055081e-02 7.25959390e-02 + 7.25863737e-02 7.25768121e-02 7.25672544e-02 7.25577004e-02 7.25481502e-02 + 7.25386037e-02 7.25290610e-02 7.25195221e-02 7.25099870e-02 7.25004556e-02 + 7.24909279e-02 7.24814040e-02 7.24718839e-02 7.24623675e-02 7.24528549e-02 + 7.24433460e-02 7.24338409e-02 7.24243395e-02 7.24148418e-02 7.24053479e-02 + 7.23958577e-02 7.23863712e-02 7.23768885e-02 7.23674095e-02 7.23579342e-02 + 7.23484626e-02 7.23389948e-02 7.23295307e-02 7.23200702e-02 7.23106135e-02 + 7.23011605e-02 7.22917112e-02 7.22822656e-02 7.22728238e-02 7.22633856e-02 + 7.22539511e-02 7.22445203e-02 7.22350932e-02 7.22256698e-02 7.22162500e-02 + 7.22068340e-02 7.21974216e-02 7.21880130e-02 7.21786080e-02 7.21692066e-02 + 7.21598090e-02 7.21504150e-02 7.21410247e-02 7.21316380e-02 7.21222550e-02 + 7.21128757e-02 7.21035000e-02 7.20941280e-02 7.20847596e-02 7.20753949e-02 + 7.20660339e-02 7.20566765e-02 7.20473227e-02 7.20379726e-02 7.20286261e-02 + 7.20192832e-02 7.20099440e-02 7.20006084e-02 7.19912765e-02 7.19819481e-02 + 7.19726234e-02 7.19633024e-02 7.19539849e-02 7.19446711e-02 7.19353608e-02 + 7.19260542e-02 7.19167512e-02 7.19074518e-02 7.18981560e-02 7.18888639e-02 + 7.18795753e-02 7.18702903e-02 7.18610089e-02 7.18517311e-02 7.18424569e-02 + 7.18331863e-02 7.18239193e-02 7.18146559e-02 7.18053960e-02 7.17961398e-02 + 7.17868871e-02 7.17776380e-02 7.17683924e-02 7.17591505e-02 7.17499121e-02 + 7.17406772e-02 7.17314460e-02 7.17222183e-02 7.17129941e-02 7.17037735e-02 + 7.16945565e-02 7.16853430e-02 7.16761331e-02 7.16669267e-02 7.16577239e-02 + 7.16485246e-02 7.16393289e-02 7.16301367e-02 7.16209480e-02 7.16117629e-02 + 7.16025813e-02 7.15934032e-02 7.15842287e-02 7.15750577e-02 7.15658902e-02 + 7.15567262e-02 7.15475658e-02 7.15384089e-02 7.15292555e-02 7.15201056e-02 + 7.15109592e-02 7.15018163e-02 7.14926769e-02 7.14835410e-02 7.14744087e-02 + 7.14652798e-02 7.14561544e-02 7.14470325e-02 7.14379142e-02 7.14287993e-02 + 7.14196878e-02 7.14105799e-02 7.14014755e-02 7.13923745e-02 7.13832770e-02 + 7.13741830e-02 7.13650925e-02 7.13560055e-02 7.13469219e-02 7.13378418e-02 + 7.13287651e-02 7.13196919e-02 7.13106222e-02 7.13015559e-02 7.12924931e-02 + 7.12834338e-02 7.12743779e-02 7.12653254e-02 7.12562764e-02 7.12472309e-02 + 7.12381888e-02 7.12291501e-02 7.12201149e-02 7.12110831e-02 7.12020547e-02 + 7.11930298e-02 7.11840083e-02 7.11749902e-02 7.11659756e-02 7.11569644e-02 + 7.11479566e-02 7.11389522e-02 7.11299512e-02 7.11209537e-02 7.11119596e-02 + 7.11029689e-02 7.10939816e-02 7.10849977e-02 7.10760172e-02 7.10670401e-02 + 7.10580664e-02 7.10490961e-02 7.10401292e-02 7.10311657e-02 7.10222056e-02 + 7.10132489e-02 7.10042956e-02 7.09953456e-02 7.09863990e-02 7.09774559e-02 + 7.09685161e-02 7.09595796e-02 7.09506466e-02 7.09417169e-02 7.09327906e-02 + 7.09238677e-02 7.09149481e-02 7.09060319e-02 7.08971191e-02 7.08882096e-02 + 7.08793035e-02 7.08704007e-02 7.08615013e-02 7.08526052e-02 7.08437125e-02 + 7.08348231e-02 7.08259371e-02 7.08170544e-02 7.08081751e-02 7.07992991e-02 + 7.07904264e-02 7.07815571e-02 7.07726911e-02 7.07638285e-02 7.07549691e-02 + 7.07461131e-02 7.07372604e-02 7.07284111e-02 7.07195650e-02 7.07107223e-02 + 7.07018829e-02 7.06930468e-02 7.06842141e-02 7.06753846e-02 7.06665584e-02 + 7.06577356e-02 7.06489160e-02 7.06400998e-02 7.06312868e-02 7.06224772e-02 + 7.06136708e-02 7.06048678e-02 7.05960680e-02 7.05872715e-02 7.05784783e-02 + 7.05696884e-02 7.05609018e-02 7.05521184e-02 7.05433384e-02 7.05345616e-02 + 1.00000000e+00 9.75894263e-01 9.53451752e-01 9.32489601e-01 9.12851907e-01 + 8.94404826e-01 8.77032714e-01 8.60635068e-01 8.45124065e-01 8.30422576e-01 + 8.16462554e-01 8.03183696e-01 7.90532350e-01 7.78460602e-01 7.66925506e-01 + 7.55888443e-01 7.45314577e-01 7.35172390e-01 7.25433287e-01 7.16071258e-01 + 7.07062580e-01 6.98385572e-01 6.90020370e-01 6.81948734e-01 6.74153887e-01 + 6.66620364e-01 6.59333880e-01 6.52281224e-01 6.45450150e-01 6.38829295e-01 + 6.32408091e-01 6.26176704e-01 6.20125961e-01 6.14247300e-01 6.08532716e-01 + 6.02974715e-01 5.97566276e-01 5.92300808e-01 5.87172122e-01 5.82174396e-01 + 5.77302151e-01 5.72550221e-01 5.67913735e-01 5.63388093e-01 5.58968948e-01 + 5.54652188e-01 5.50433918e-01 5.46310451e-01 5.42278287e-01 5.38334105e-01 + 5.34474753e-01 5.30697232e-01 5.26998691e-01 5.23376415e-01 5.19827818e-01 + 5.16350438e-01 5.12941922e-01 5.09600027e-01 5.06322612e-01 5.03107629e-01 + 4.99953120e-01 4.96857213e-01 4.93818117e-01 4.90834114e-01 4.87903560e-01 + 4.85024878e-01 4.82196556e-01 4.79417141e-01 4.76685242e-01 4.73999519e-01 + 4.71358685e-01 4.68761505e-01 4.66206788e-01 4.63693390e-01 4.61220209e-01 + 4.58786184e-01 4.56390292e-01 4.54031548e-01 4.51709002e-01 4.49421737e-01 + 4.47168870e-01 4.44949545e-01 4.42762941e-01 4.40608259e-01 4.38484731e-01 + 4.36391613e-01 4.34328187e-01 4.32293756e-01 4.30287649e-01 4.28309213e-01 + 4.26357819e-01 4.24432857e-01 4.22533734e-01 4.20659877e-01 4.18810733e-01 + 4.16985761e-01 4.15184441e-01 4.13406264e-01 4.11650741e-01 4.09917394e-01 + 4.08205761e-01 4.06515390e-01 4.04845847e-01 4.03196706e-01 4.01567556e-01 + 3.99957996e-01 3.98367636e-01 3.96796098e-01 3.95243014e-01 3.93708024e-01 + 3.92190780e-01 3.90690944e-01 3.89208184e-01 3.87742180e-01 3.86292617e-01 + 3.84859191e-01 3.83441605e-01 3.82039569e-01 3.80652800e-01 3.79281024e-01 + 3.77923973e-01 3.76581385e-01 3.75253005e-01 3.73938583e-01 3.72637878e-01 + 3.71350652e-01 3.70076675e-01 3.68815719e-01 3.67567566e-01 3.66332000e-01 + 3.65108810e-01 3.63897792e-01 3.62698745e-01 3.61511473e-01 3.60335785e-01 + 3.59171493e-01 3.58018415e-01 3.56876371e-01 3.55745187e-01 3.54624691e-01 + 3.53514717e-01 3.52415101e-01 3.51325683e-01 3.50246306e-01 3.49176816e-01 + 3.48117064e-01 3.47066903e-01 3.46026189e-01 3.44994782e-01 3.43972542e-01 + 3.42959337e-01 3.41955032e-01 3.40959498e-01 3.39972609e-01 3.38994241e-01 + 3.38024270e-01 3.37062579e-01 3.36109049e-01 3.35163566e-01 3.34226018e-01 + 3.33296293e-01 3.32374284e-01 3.31459885e-01 3.30552992e-01 3.29653502e-01 + 3.28761315e-01 3.27876333e-01 3.26998460e-01 3.26127600e-01 3.25263662e-01 + 3.24406553e-01 3.23556184e-01 3.22712468e-01 3.21875318e-01 3.21044649e-01 + 3.20220378e-01 3.19402424e-01 3.18590706e-01 3.17785145e-01 3.16985665e-01 + 3.16192188e-01 3.15404639e-01 3.14622947e-01 3.13847038e-01 3.13076841e-01 + 3.12312287e-01 3.11553306e-01 3.10799833e-01 3.10051800e-01 3.09309142e-01 + 3.08571795e-01 3.07839697e-01 3.07112784e-01 3.06390997e-01 3.05674275e-01 + 3.04962560e-01 3.04255793e-01 3.03553917e-01 3.02856876e-01 3.02164615e-01 + 3.01477079e-01 3.00794216e-01 3.00115971e-01 2.99442294e-01 2.98773134e-01 + 2.98108439e-01 2.97448161e-01 2.96792252e-01 2.96140662e-01 2.95493345e-01 + 2.94850254e-01 2.94211344e-01 2.93576570e-01 2.92945886e-01 2.92319250e-01 + 2.91696618e-01 2.91077947e-01 2.90463197e-01 2.89852325e-01 2.89245291e-01 + 2.88642055e-01 2.88042577e-01 2.87446820e-01 2.86854743e-01 2.86266311e-01 + 2.85681484e-01 2.85100228e-01 2.84522505e-01 2.83948280e-01 2.83377517e-01 + 2.82810183e-01 2.82246243e-01 2.81685662e-01 2.81128409e-01 2.80574450e-01 + 2.80023753e-01 2.79476286e-01 2.78932017e-01 2.78390916e-01 2.77852951e-01 + 2.77318094e-01 2.76786313e-01 2.76257580e-01 2.75731865e-01 2.75209140e-01 + 2.74689377e-01 2.74172548e-01 2.73658625e-01 2.73147581e-01 2.72639389e-01 + 2.72134024e-01 2.71631458e-01 2.71131667e-01 2.70634624e-01 2.70140305e-01 + 2.69648684e-01 2.69159738e-01 2.68673442e-01 2.68189772e-01 2.67708706e-01 + 2.67230218e-01 2.66754287e-01 2.66280890e-01 2.65810005e-01 2.65341608e-01 + 2.64875680e-01 2.64412197e-01 2.63951138e-01 2.63492483e-01 2.63036211e-01 + 2.62582301e-01 2.62130732e-01 2.61681486e-01 2.61234541e-01 2.60789879e-01 + 2.60347479e-01 2.59907323e-01 2.59469393e-01 2.59033668e-01 2.58600131e-01 + 2.58168764e-01 2.57739549e-01 2.57312467e-01 2.56887501e-01 2.56464633e-01 + 2.56043847e-01 2.55625126e-01 2.55208452e-01 2.54793809e-01 2.54381180e-01 + 2.53970550e-01 2.53561902e-01 2.53155220e-01 2.52750489e-01 2.52347693e-01 + 2.51946816e-01 2.51547844e-01 2.51150761e-01 2.50755553e-01 2.50362204e-01 + 2.49970701e-01 2.49581029e-01 2.49193173e-01 2.48807120e-01 2.48422856e-01 + 2.48040367e-01 2.47659639e-01 2.47280658e-01 2.46903413e-01 2.46527888e-01 + 2.46154072e-01 2.45781951e-01 2.45411513e-01 2.45042745e-01 2.44675634e-01 + 2.44310168e-01 2.43946335e-01 2.43584122e-01 2.43223518e-01 2.42864511e-01 + 2.42507089e-01 2.42151241e-01 2.41796954e-01 2.41444218e-01 2.41093021e-01 + 2.40743352e-01 2.40395201e-01 2.40048555e-01 2.39703404e-01 2.39359739e-01 + 2.39017547e-01 2.38676818e-01 2.38337542e-01 2.37999710e-01 2.37663309e-01 + 2.37328332e-01 2.36994766e-01 2.36662603e-01 2.36331833e-01 2.36002446e-01 + 2.35674432e-01 2.35347783e-01 2.35022487e-01 2.34698537e-01 2.34375923e-01 + 2.34054635e-01 2.33734666e-01 2.33416004e-01 2.33098643e-01 2.32782573e-01 + 2.32467784e-01 2.32154270e-01 2.31842020e-01 2.31531028e-01 2.31221283e-01 + 2.30912778e-01 2.30605504e-01 2.30299454e-01 2.29994620e-01 2.29690992e-01 + 2.29388564e-01 2.29087328e-01 2.28787275e-01 2.28488398e-01 2.28190689e-01 + 2.27894141e-01 2.27598746e-01 2.27304497e-01 2.27011386e-01 2.26719406e-01 + 2.26428550e-01 2.26138810e-01 2.25850180e-01 2.25562652e-01 2.25276219e-01 + 2.24990875e-01 2.24706613e-01 2.24423425e-01 2.24141305e-01 2.23860246e-01 + 2.23580243e-01 2.23301287e-01 2.23023372e-01 2.22746493e-01 2.22470643e-01 + 2.22195814e-01 2.21922002e-01 2.21649200e-01 2.21377401e-01 2.21106599e-01 + 2.20836789e-01 2.20567964e-01 2.20300119e-01 2.20033247e-01 2.19767342e-01 + 2.19502400e-01 2.19238413e-01 2.18975376e-01 2.18713284e-01 2.18452130e-01 + 2.18191910e-01 2.17932618e-01 2.17674247e-01 2.17416794e-01 2.17160252e-01 + 2.16904616e-01 2.16649880e-01 2.16396040e-01 2.16143090e-01 2.15891025e-01 + 2.15639840e-01 2.15389530e-01 2.15140089e-01 2.14891513e-01 2.14643796e-01 + 2.14396935e-01 2.14150923e-01 2.13905756e-01 2.13661429e-01 2.13417937e-01 + 2.13175276e-01 2.12933441e-01 2.12692427e-01 2.12452229e-01 2.12212843e-01 + 2.11974265e-01 2.11736490e-01 2.11499513e-01 2.11263330e-01 2.11027936e-01 + 2.10793328e-01 2.10559500e-01 2.10326449e-01 2.10094169e-01 2.09862658e-01 + 2.09631910e-01 2.09401922e-01 2.09172689e-01 2.08944208e-01 2.08716473e-01 + 2.08489481e-01 2.08263229e-01 2.08037711e-01 2.07812924e-01 2.07588865e-01 + 2.07365528e-01 2.07142911e-01 2.06921010e-01 2.06699820e-01 2.06479337e-01 + 2.06259559e-01 2.06040481e-01 2.05822100e-01 2.05604412e-01 2.05387413e-01 + 2.05171099e-01 2.04955468e-01 2.04740515e-01 2.04526237e-01 2.04312630e-01 + 2.04099691e-01 2.03887417e-01 2.03675803e-01 2.03464847e-01 2.03254545e-01 + 2.03044894e-01 2.02835891e-01 2.02627531e-01 2.02419812e-01 2.02212731e-01 + 2.02006284e-01 2.01800468e-01 2.01595280e-01 2.01390716e-01 2.01186774e-01 + 2.00983451e-01 2.00780742e-01 2.00578646e-01 2.00377158e-01 2.00176277e-01 + 1.99975998e-01 1.99776320e-01 1.99577238e-01 1.99378751e-01 1.99180854e-01 + 1.98983546e-01 1.98786822e-01 1.98590681e-01 1.98395120e-01 1.98200135e-01 + 1.98005724e-01 1.97811884e-01 1.97618612e-01 1.97425905e-01 1.97233761e-01 + 1.97042177e-01 1.96851151e-01 1.96660678e-01 1.96470758e-01 1.96281387e-01 + 1.96092562e-01 1.95904281e-01 1.95716541e-01 1.95529341e-01 1.95342676e-01 + 1.95156545e-01 1.94970945e-01 1.94785873e-01 1.94601328e-01 1.94417306e-01 + 1.94233805e-01 1.94050823e-01 1.93868357e-01 1.93686404e-01 1.93504963e-01 + 1.93324031e-01 1.93143606e-01 1.92963685e-01 1.92784265e-01 1.92605345e-01 + 1.92426923e-01 1.92248995e-01 1.92071560e-01 1.91894616e-01 1.91718159e-01 + 1.91542189e-01 1.91366702e-01 1.91191696e-01 1.91017170e-01 1.90843121e-01 + 1.90669546e-01 1.90496445e-01 1.90323814e-01 1.90151652e-01 1.89979956e-01 + 1.89808724e-01 1.89637954e-01 1.89467644e-01 1.89297793e-01 1.89128397e-01 + 1.88959456e-01 1.88790966e-01 1.88622926e-01 1.88455335e-01 1.88288189e-01 + 1.88121487e-01 1.87955227e-01 1.87789407e-01 1.87624025e-01 1.87459079e-01 + 1.87294568e-01 1.87130489e-01 1.86966840e-01 1.86803620e-01 1.86640827e-01 + 1.86478458e-01 1.86316513e-01 1.86154989e-01 1.85993884e-01 1.85833197e-01 + 1.85672925e-01 1.85513068e-01 1.85353622e-01 1.85194587e-01 1.85035961e-01 + 1.84877742e-01 1.84719927e-01 1.84562517e-01 1.84405508e-01 1.84248899e-01 + 1.84092688e-01 1.83936874e-01 1.83781455e-01 1.83626429e-01 1.83471795e-01 + 1.83317551e-01 1.83163695e-01 1.83010226e-01 1.82857142e-01 1.82704442e-01 + 1.82552123e-01 1.82400185e-01 1.82248626e-01 1.82097444e-01 1.81946637e-01 + 1.81796204e-01 1.81646144e-01 1.81496455e-01 1.81347136e-01 1.81198184e-01 + 1.81049599e-01 1.80901378e-01 1.80753522e-01 1.80606027e-01 1.80458892e-01 + 1.80312117e-01 1.80165699e-01 1.80019637e-01 1.79873930e-01 1.79728576e-01 + 1.79583574e-01 1.79438922e-01 1.79294620e-01 1.79150665e-01 1.79007056e-01 + 1.78863792e-01 1.78720871e-01 1.78578292e-01 1.78436054e-01 1.78294156e-01 + 1.78152595e-01 1.78011371e-01 1.77870482e-01 1.77729928e-01 1.77589706e-01 + 1.77449815e-01 1.77310255e-01 1.77171023e-01 1.77032119e-01 1.76893540e-01 + 1.76755287e-01 1.76617358e-01 1.76479751e-01 1.76342465e-01 1.76205499e-01 + 1.76068851e-01 1.75932521e-01 1.75796507e-01 1.75660808e-01 1.75525423e-01 + 1.75390351e-01 1.75255589e-01 1.75121138e-01 1.74986996e-01 1.74853162e-01 + 1.74719634e-01 1.74586412e-01 1.74453494e-01 1.74320879e-01 1.74188566e-01 + 1.74056554e-01 1.73924842e-01 1.73793428e-01 1.73662312e-01 1.73531492e-01 + 1.73400967e-01 1.73270736e-01 1.73140798e-01 1.73011152e-01 1.72881797e-01 + 1.72752732e-01 1.72623955e-01 1.72495466e-01 1.72367263e-01 1.72239346e-01 + 1.72111713e-01 1.71984363e-01 1.71857296e-01 1.71730510e-01 1.71604004e-01 + 1.71477777e-01 1.71351828e-01 1.71226157e-01 1.71100761e-01 1.70975641e-01 + 1.70850795e-01 1.70726222e-01 1.70601921e-01 1.70477891e-01 1.70354131e-01 + 1.70230640e-01 1.70107418e-01 1.69984462e-01 1.69861773e-01 1.69739349e-01 + 1.69617190e-01 1.69495294e-01 1.69373660e-01 1.69252288e-01 1.69131176e-01 + 1.69010324e-01 1.68889731e-01 1.68769395e-01 1.68649317e-01 1.68529494e-01 + 1.68409926e-01 1.68290613e-01 1.68171552e-01 1.68052744e-01 1.67934188e-01 + 1.67815882e-01 1.67697825e-01 1.67580018e-01 1.67462458e-01 1.67345146e-01 + 1.67228079e-01 1.67111258e-01 1.66994682e-01 1.66878349e-01 1.66762259e-01 + 1.66646411e-01 1.66530804e-01 1.66415437e-01 1.66300309e-01 1.66185421e-01 + 1.66070770e-01 1.65956356e-01 1.65842178e-01 1.65728235e-01 1.65614527e-01 + 1.65501053e-01 1.65387812e-01 1.65274803e-01 1.65162025e-01 1.65049477e-01 + 1.64937160e-01 1.64825071e-01 1.64713211e-01 1.64601578e-01 1.64490172e-01 + 1.64378991e-01 1.64268036e-01 1.64157305e-01 1.64046798e-01 1.63936514e-01 + 1.63826452e-01 1.63716611e-01 1.63606991e-01 1.63497591e-01 1.63388409e-01 + 1.63279447e-01 1.63170702e-01 1.63062174e-01 1.62953862e-01 1.62845766e-01 + 1.62737885e-01 1.62630217e-01 1.62522764e-01 1.62415523e-01 1.62308493e-01 + 1.62201676e-01 1.62095069e-01 1.61988671e-01 1.61882483e-01 1.61776504e-01 + 1.61670732e-01 1.61565168e-01 1.61459810e-01 1.61354658e-01 1.61249711e-01 + 1.61144969e-01 1.61040431e-01 1.60936095e-01 1.60831963e-01 1.60728032e-01 + 1.60624302e-01 1.60520773e-01 1.60417444e-01 1.60314314e-01 1.60211383e-01 + 1.60108650e-01 1.60006114e-01 1.59903775e-01 1.59801632e-01 1.59699684e-01 + 1.59597932e-01 1.59496373e-01 1.59395009e-01 1.59293837e-01 1.59192858e-01 + 1.59092070e-01 1.58991474e-01 1.58891068e-01 1.58790852e-01 1.58690826e-01 + 1.58590988e-01 1.58491339e-01 1.58391877e-01 1.58292602e-01 1.58193514e-01 + 1.58094612e-01 1.57995894e-01 1.57897362e-01 1.57799013e-01 1.57700849e-01 + 1.57602867e-01 1.57505067e-01 1.57407450e-01 1.57310013e-01 1.57212758e-01 + 1.57115682e-01 1.57018786e-01 1.56922069e-01 1.56825531e-01 1.56729171e-01 + 1.56632988e-01 1.56536982e-01 1.56441152e-01 1.56345498e-01 1.56250019e-01 + 1.56154715e-01 1.56059585e-01 1.55964629e-01 1.55869846e-01 1.55775235e-01 + 1.55680797e-01 1.55586530e-01 1.55492434e-01 1.55398509e-01 1.55304754e-01 + 1.55211168e-01 1.55117751e-01 1.55024502e-01 1.54931422e-01 1.54838509e-01 + 1.54745763e-01 1.54653183e-01 1.54560770e-01 1.54468522e-01 1.54376439e-01 + 1.54284520e-01 1.54192765e-01 1.54101174e-01 1.54009746e-01 1.53918481e-01 + 1.53827377e-01 1.53736435e-01 1.53645654e-01 1.53555034e-01 1.53464574e-01 + 1.53374274e-01 1.53284132e-01 1.53194150e-01 1.53104326e-01 1.53014660e-01 + 1.52925151e-01 1.52835798e-01 1.52746603e-01 1.52657563e-01 1.52568679e-01 + 1.52479950e-01 1.52391376e-01 1.52302955e-01 1.52214689e-01 1.52126576e-01 + 1.52038615e-01 1.51950807e-01 1.51863151e-01 1.51775647e-01 1.51688293e-01 + 1.51601091e-01 1.51514038e-01 1.51427135e-01 1.51340382e-01 1.51253778e-01 + 1.51167322e-01 1.51081014e-01 1.50994854e-01 1.50908841e-01 1.50822975e-01 + 1.50737255e-01 1.50651681e-01 1.50566253e-01 1.50480970e-01 1.50395832e-01 + 1.50310838e-01 1.50225988e-01 1.50141281e-01 1.50056718e-01 1.49972298e-01 + 1.49888019e-01 1.49803883e-01 1.49719888e-01 1.49636035e-01 1.49552322e-01 + 1.49468749e-01 1.49385316e-01 1.49302023e-01 1.49218869e-01 1.49135854e-01 + 1.49052977e-01 1.48970239e-01 1.48887638e-01 1.48805174e-01 1.48722847e-01 + 1.48640656e-01 1.48558602e-01 1.48476683e-01 1.48394900e-01 1.48313252e-01 + 1.48231738e-01 1.48150359e-01 1.48069113e-01 1.47988001e-01 1.47907022e-01 + 1.47826176e-01 1.47745463e-01 1.47664881e-01 1.47584431e-01 1.47504113e-01 + 1.47423925e-01 1.47343868e-01 1.47263942e-01 1.47184145e-01 1.47104478e-01 + 1.47024940e-01 1.46945531e-01 1.46866251e-01 1.46787099e-01 1.46708074e-01 + 1.46629177e-01 1.46550407e-01 1.46471764e-01 1.46393248e-01 1.46314857e-01 + 1.46236593e-01 1.46158454e-01 1.46080440e-01 1.46002551e-01 1.45924786e-01 + 1.45847145e-01 1.45769628e-01 1.45692235e-01 1.45614965e-01 1.45537817e-01 + 1.45460792e-01 1.45383890e-01 1.45307109e-01 1.45230449e-01 1.45153911e-01 + 1.45077494e-01 1.45001197e-01 1.44925021e-01 1.44848964e-01 1.44773027e-01 + 1.44697209e-01 1.44621511e-01 1.44545931e-01 1.44470469e-01 1.44395126e-01 + 1.44319900e-01 1.44244791e-01 1.44169800e-01 1.44094926e-01 1.44020168e-01 + 1.43945527e-01 1.43871001e-01 1.43796591e-01 1.43722296e-01 1.43648117e-01 + 1.43574052e-01 1.43500101e-01 1.43426265e-01 1.43352542e-01 1.43278934e-01 + 1.43205438e-01 1.43132055e-01 1.43058785e-01 1.42985628e-01 1.42912583e-01 + 1.42839649e-01 1.42766827e-01 1.42694116e-01 1.42621516e-01 1.42549027e-01 + 1.42476649e-01 1.42404380e-01 1.42332222e-01 1.42260172e-01 1.42188233e-01 + 1.42116402e-01 1.42044680e-01 1.41973066e-01 1.41901561e-01 1.41830164e-01 + 1.41758874e-01 1.41687692e-01 1.41616617e-01 1.41545648e-01 1.41474786e-01 + 1.41404031e-01 1.41333382e-01 1.41262838e-01 1.41192400e-01 1.41122067e-01 + 1.41051839e-01 1.40981716e-01 1.40911698e-01 1.40841783e-01 1.40771973e-01 + 1.40702266e-01 1.40632663e-01 1.40563163e-01 1.40493766e-01 1.40424471e-01 + 1.40355279e-01 1.40286189e-01 1.40217202e-01 1.40148315e-01 1.40079531e-01 + 1.40010847e-01 1.39942264e-01 1.39873782e-01 1.39805401e-01 1.39737119e-01 + 1.39668938e-01 1.39600856e-01 1.39532874e-01 1.39464991e-01 1.39397207e-01 + 1.39329522e-01 1.39261935e-01 1.39194446e-01 1.39127056e-01 1.39059763e-01 + 1.38992568e-01 1.38925470e-01 1.38858469e-01 1.38791565e-01 1.38724758e-01 + 1.38658047e-01 1.38591432e-01 1.38524913e-01 1.38458490e-01 1.38392162e-01 + 1.38325930e-01 1.38259792e-01 1.38193750e-01 1.38127801e-01 1.38061947e-01 + 1.37996188e-01 1.37930522e-01 1.37864950e-01 1.37799471e-01 1.37734085e-01 + 1.37668793e-01 1.37603593e-01 1.37538485e-01 1.37473471e-01 1.37408548e-01 + 1.37343717e-01 1.37278977e-01 1.37214330e-01 1.37149773e-01 1.37085308e-01 + 1.37020933e-01 1.36956649e-01 1.36892455e-01 1.36828351e-01 1.36764338e-01 + 1.36700414e-01 1.36636580e-01 1.36572835e-01 1.36509179e-01 1.36445612e-01 + 1.36382134e-01 1.36318745e-01 1.36255443e-01 1.36192230e-01 1.36129105e-01 + 1.36066067e-01 1.36003117e-01 1.35940254e-01 1.35877478e-01 1.35814789e-01 + 1.35752187e-01 1.35689672e-01 1.35627242e-01 1.35564899e-01 1.35502641e-01 + 1.35440470e-01 1.35378384e-01 1.35316383e-01 1.35254467e-01 1.35192636e-01 + 1.35130890e-01 1.35069228e-01 1.35007651e-01 1.34946158e-01 1.34884748e-01 + 1.34823423e-01 1.34762181e-01 1.34701022e-01 1.34639947e-01 1.34578955e-01 + 1.34518045e-01 1.34457218e-01 1.34396474e-01 1.34335812e-01 1.34275232e-01 + 1.34214733e-01 1.34154317e-01 1.34093982e-01 1.34033728e-01 1.33973556e-01 + 1.33913464e-01 1.33853453e-01 1.33793523e-01 1.33733673e-01 1.33673904e-01 + 1.33614214e-01 1.33554605e-01 1.33495075e-01 1.33435625e-01 1.33376254e-01 + 1.33316962e-01 1.33257749e-01 1.33198615e-01 1.33139560e-01 1.33080583e-01 + 1.33021685e-01 1.32962864e-01 1.32904122e-01 1.32845457e-01 1.32786870e-01 + 1.32728361e-01 1.32669928e-01 1.32611573e-01 1.32553295e-01 1.32495093e-01 + 1.32436968e-01 1.32378920e-01 1.32320948e-01 1.32263052e-01 1.32205232e-01 + 1.32147487e-01 1.32089818e-01 1.32032225e-01 1.31974707e-01 1.31917264e-01 + 1.31859896e-01 1.31802603e-01 1.31745384e-01 1.31688240e-01 1.31631170e-01 + 1.31574174e-01 1.31517252e-01 1.31460404e-01 1.31403630e-01 1.31346929e-01 + 1.31290301e-01 1.31233747e-01 1.31177266e-01 1.31120857e-01 1.31064522e-01 + 1.31008258e-01 1.30952068e-01 1.30895949e-01 1.30839903e-01 1.30783928e-01 + 1.30728025e-01 1.30672194e-01 1.30616435e-01 1.30560746e-01 1.30505129e-01 + 1.30449583e-01 1.30394108e-01 1.30338703e-01 1.30283369e-01 1.30228105e-01 + 1.30172912e-01 1.30117789e-01 1.30062736e-01 1.30007752e-01 1.29952839e-01 + 1.29897994e-01 1.29843219e-01 1.29788514e-01 1.29733877e-01 1.29679310e-01 + 1.29624811e-01 1.29570381e-01 1.29516019e-01 1.29461726e-01 1.29407501e-01 + 1.29353344e-01 1.29299255e-01 1.29245234e-01 1.29191280e-01 1.29137394e-01 + 1.29083575e-01 1.29029824e-01 1.28976140e-01 1.28922522e-01 1.28868972e-01 + 1.28815488e-01 1.28762070e-01 1.28708719e-01 1.28655435e-01 1.28602216e-01 + 1.28549063e-01 1.28495977e-01 1.28442955e-01 1.28390000e-01 1.28337110e-01 + 1.28284285e-01 1.28231526e-01 1.28178831e-01 1.28126202e-01 1.28073637e-01 + 1.28021137e-01 1.27968701e-01 1.27916330e-01 1.27864023e-01 1.27811780e-01 + 1.27759601e-01 1.27707486e-01 1.27655434e-01 1.27603447e-01 1.27551522e-01 + 1.27499661e-01 1.27447864e-01 1.27396129e-01 1.27344457e-01 1.27292848e-01 + 1.27241302e-01 1.27189818e-01 1.27138397e-01 1.27087038e-01 1.27035742e-01 + 1.26984507e-01 1.26933334e-01 1.26882223e-01 1.26831174e-01 1.26780187e-01 + 1.26729260e-01 1.26678396e-01 1.26627592e-01 1.26576849e-01 1.26526168e-01 + 1.26475547e-01 1.26424987e-01 1.26374487e-01 1.26324048e-01 1.26273670e-01 + 1.26223351e-01 1.26173093e-01 1.26122894e-01 1.26072756e-01 1.26022677e-01 + 1.25972658e-01 1.25922698e-01 1.25872798e-01 1.25822957e-01 1.25773176e-01 + 1.25723453e-01 1.25673789e-01 1.25624184e-01 1.25574638e-01 1.25525150e-01 + 1.25475721e-01 1.25426350e-01 1.25377037e-01 1.25327782e-01 1.25278586e-01 + 1.25229447e-01 1.25180366e-01 1.25131343e-01 1.25082377e-01 1.25033469e-01 + 1.24984618e-01 1.24935824e-01 1.24887088e-01 1.24838408e-01 1.24789785e-01 + 1.24741219e-01 1.24692710e-01 1.24644257e-01 1.24595861e-01 1.24547521e-01 + 1.24499237e-01 1.24451010e-01 1.24402838e-01 1.24354722e-01 1.24306662e-01 + 1.24258658e-01 1.24210709e-01 1.24162816e-01 1.24114978e-01 1.24067195e-01 + 1.24019468e-01 1.23971795e-01 1.23924178e-01 1.23876615e-01 1.23829107e-01 + 1.23781654e-01 1.23734255e-01 1.23686910e-01 1.23639620e-01 1.23592384e-01 + 1.23545202e-01 1.23498075e-01 1.23451001e-01 1.23403980e-01 1.23357014e-01 + 1.23310101e-01 1.23263242e-01 1.23216436e-01 1.23169683e-01 1.23122983e-01 + 1.23076337e-01 1.23029743e-01 1.22983202e-01 1.22936715e-01 1.22890279e-01 + 1.22843897e-01 1.22797567e-01 1.22751289e-01 1.22705063e-01 1.22658890e-01 + 1.22612769e-01 1.22566700e-01 1.22520682e-01 1.22474717e-01 1.22428803e-01 + 1.22382941e-01 1.22337130e-01 1.22291371e-01 1.22245663e-01 1.22200006e-01 + 1.22154400e-01 1.22108845e-01 1.22063342e-01 1.22017889e-01 1.21972487e-01 + 1.21927135e-01 1.21881834e-01 1.21836584e-01 1.21791383e-01 1.21746234e-01 + 1.21701134e-01 1.21656084e-01 1.21611085e-01 1.21566135e-01 1.21521235e-01 + 1.21476385e-01 1.21431584e-01 1.21386833e-01 1.21342131e-01 1.21297479e-01 + 1.21252876e-01 1.21208322e-01 1.21163817e-01 1.21119362e-01 1.21074955e-01 + 1.21030597e-01 1.20986287e-01 1.20942026e-01 1.20897814e-01 1.20853651e-01 + 1.20809535e-01 1.20765468e-01 1.20721449e-01 1.20677478e-01 1.20633555e-01 + 1.20589681e-01 1.20545854e-01 1.20502074e-01 1.20458343e-01 1.20414659e-01 + 1.20371022e-01 1.20327433e-01 1.20283891e-01 1.20240396e-01 1.20196949e-01 + 1.20153549e-01 1.20110195e-01 1.20066889e-01 1.20023629e-01 1.19980416e-01 + 1.19937250e-01 1.19894130e-01 1.19851056e-01 1.19808030e-01 1.19765049e-01 + 1.19722115e-01 1.19679226e-01 1.19636384e-01 1.19593588e-01 1.19550838e-01 + 1.19508133e-01 1.19465474e-01 1.19422861e-01 1.19380294e-01 1.19337772e-01 + 1.19295295e-01 1.19252863e-01 1.19210477e-01 1.19168136e-01 1.19125841e-01 + 1.19083590e-01 1.19041384e-01 1.18999223e-01 1.18957106e-01 1.18915035e-01 + 1.18873008e-01 1.18831025e-01 1.18789087e-01 1.18747194e-01 1.18705344e-01 + 1.18663539e-01 1.18621778e-01 1.18580061e-01 1.18538388e-01 1.18496759e-01 + 1.18455174e-01 1.18413632e-01 1.18372134e-01 1.18330680e-01 1.18289269e-01 + 1.18247902e-01 1.18206578e-01 1.18165298e-01 1.18124060e-01 1.18082866e-01 + 1.18041715e-01 1.18000607e-01 1.17959541e-01 1.17918519e-01 1.17877539e-01 + 1.17836602e-01 1.17795708e-01 1.17754856e-01 1.17714047e-01 1.17673280e-01 + 1.17632556e-01 1.17591873e-01 1.17551233e-01 1.17510635e-01 1.17470079e-01 + 1.17429565e-01 1.17389093e-01 1.17348662e-01 1.17308274e-01 1.17267927e-01 + 1.17227622e-01 1.17187358e-01 1.17147135e-01 1.17106955e-01 1.17066815e-01 + 1.17026717e-01 1.16986659e-01 1.16946643e-01 1.16906668e-01 1.16866734e-01 + 1.16826841e-01 1.16786988e-01 1.16747177e-01 1.16707406e-01 1.16667676e-01 + 1.16627986e-01 1.16588337e-01 1.16548728e-01 1.16509159e-01 1.16469631e-01 + 1.16430143e-01 1.16390695e-01 1.16351287e-01 1.16311919e-01 1.16272591e-01 + 1.16233303e-01 1.16194055e-01 1.16154846e-01 1.16115678e-01 1.16076548e-01 + 1.16037459e-01 1.15998408e-01 1.15959397e-01 1.15920426e-01 1.15881494e-01 + 1.15842601e-01 1.15803747e-01 1.15764932e-01 1.15726156e-01 1.15687419e-01 + 1.15648721e-01 1.15610062e-01 1.15571441e-01 1.15532859e-01 1.15494316e-01 + 1.15455812e-01 1.15417345e-01 1.15378918e-01 1.15340528e-01 1.15302177e-01 + 1.15263864e-01 1.15225590e-01 1.15187353e-01 1.15149155e-01 1.15110994e-01 + 1.15072871e-01 1.15034786e-01 1.14996739e-01 1.14958730e-01 1.14920759e-01 + 1.14882824e-01 1.14844928e-01 1.14807069e-01 1.14769247e-01 1.14731463e-01 + 1.14693716e-01 1.14656006e-01 1.14618334e-01 1.14580699e-01 1.14543100e-01 + 1.14505539e-01 1.14468014e-01 1.14430527e-01 1.14393076e-01 1.14355662e-01 + 1.14318284e-01 1.14280944e-01 1.14243640e-01 1.14206372e-01 1.14169141e-01 + 1.14131946e-01 1.14094787e-01 1.14057665e-01 1.14020579e-01 1.13983529e-01 + 1.13946515e-01 1.13909538e-01 1.13872596e-01 1.13835690e-01 1.13798820e-01 + 1.13761986e-01 1.13725188e-01 1.13688425e-01 1.13651698e-01 1.13615006e-01 + 1.13578350e-01 1.13541730e-01 1.13505144e-01 1.13468595e-01 1.13432080e-01 + 1.13395601e-01 1.13359156e-01 1.13322747e-01 1.13286373e-01 1.13250035e-01 + 1.13213730e-01 1.13177461e-01 1.13141227e-01 1.13105028e-01 1.13068863e-01 + 1.13032733e-01 1.12996637e-01 1.12960576e-01 1.12924550e-01 1.12888558e-01 + 1.12852600e-01 1.12816677e-01 1.12780788e-01 1.12744933e-01 1.12709112e-01 + 1.12673326e-01 1.12637574e-01 1.12601855e-01 1.12566171e-01 1.12530520e-01 + 1.12494904e-01 1.12459321e-01 1.12423772e-01 1.12388256e-01 1.12352774e-01 + 1.12317326e-01 1.12281911e-01 1.12246530e-01 1.12211182e-01 1.12175868e-01 + 1.12140587e-01 1.12105339e-01 1.12070125e-01 1.12034943e-01 1.11999795e-01 + 1.11964679e-01 1.11929597e-01 1.11894548e-01 1.11859532e-01 1.11824548e-01 + 1.11789597e-01 1.11754679e-01 1.11719794e-01 1.11684941e-01 1.11650121e-01 + 1.11615334e-01 1.11580579e-01 1.11545856e-01 1.11511166e-01 1.11476508e-01 + 1.11441883e-01 1.11407289e-01 1.11372728e-01 1.11338199e-01 1.11303703e-01 + 1.11269238e-01 1.11234805e-01 1.11200404e-01 1.11166035e-01 1.11131698e-01 + 1.11097393e-01 1.11063119e-01 1.11028877e-01 1.10994667e-01 1.10960489e-01 + 1.10926342e-01 1.10892226e-01 1.10858142e-01 1.10824089e-01 1.10790068e-01 + 1.10756078e-01 1.10722119e-01 1.10688192e-01 1.10654295e-01 1.10620430e-01 + 1.10586596e-01 1.10552793e-01 1.10519021e-01 1.10485279e-01 1.10451569e-01 + 1.10417890e-01 1.10384241e-01 1.10350623e-01 1.10317036e-01 1.10283479e-01 + 1.10249953e-01 1.10216458e-01 1.10182993e-01 1.10149558e-01 1.10116154e-01 + 1.10082780e-01 1.10049437e-01 1.10016124e-01 1.09982841e-01 1.09949588e-01 + 1.09916366e-01 1.09883174e-01 1.09850011e-01 1.09816879e-01 1.09783776e-01 + 1.09750704e-01 1.09717661e-01 1.09684648e-01 1.09651665e-01 1.09618712e-01 + 1.09585789e-01 1.09552895e-01 1.09520030e-01 1.09487196e-01 1.09454390e-01 + 1.09421615e-01 1.09388868e-01 1.09356151e-01 1.09323464e-01 1.09290805e-01 + 1.09258176e-01 1.09225576e-01 1.09193006e-01 1.09160464e-01 1.09127951e-01 + 1.09095468e-01 1.09063013e-01 1.09030588e-01 1.08998191e-01 1.08965824e-01 + 1.08933485e-01 1.08901174e-01 1.08868893e-01 1.08836640e-01 1.08804416e-01 + 1.08772220e-01 1.08740054e-01 1.08707915e-01 1.08675805e-01 1.08643724e-01 + 1.08611671e-01 1.08579646e-01 1.08547649e-01 1.08515681e-01 1.08483741e-01 + 1.08451829e-01 1.08419946e-01 1.08388090e-01 1.08356263e-01 1.08324463e-01 + 1.08292692e-01 1.08260948e-01 1.08229233e-01 1.08197545e-01 1.08165885e-01 + 1.08134253e-01 1.08102648e-01 1.08071072e-01 1.08039523e-01 1.08008001e-01 + 1.07976507e-01 1.07945041e-01 1.07913602e-01 1.07882191e-01 1.07850807e-01 + 1.07819450e-01 1.07788121e-01 1.07756819e-01 1.07725544e-01 1.07694296e-01 + 1.07663076e-01 1.07631883e-01 1.07600717e-01 1.07569578e-01 1.07538466e-01 + 1.07507381e-01 1.07476322e-01 1.07445291e-01 1.07414287e-01 1.07383309e-01 + 1.07352359e-01 1.07321435e-01 1.07290537e-01 1.07259667e-01 1.07228823e-01 + 1.07198005e-01 1.07167214e-01 1.07136450e-01 1.07105712e-01 1.07075001e-01 + 1.07044316e-01 1.07013657e-01 1.06983025e-01 1.06952419e-01 1.06921839e-01 + 1.06891286e-01 1.06860758e-01 1.06830257e-01 1.06799782e-01 1.06769333e-01 + 1.06738910e-01 1.06708513e-01 1.06678142e-01 1.06647796e-01 1.06617477e-01 + 1.06587184e-01 1.06556916e-01 1.06526674e-01 1.06496458e-01 1.06466268e-01 + 1.06436103e-01 1.06405964e-01 1.06375850e-01 1.06345762e-01 1.06315700e-01 + 1.06285663e-01 1.06255651e-01 1.06225665e-01 1.06195704e-01 1.06165769e-01 + 1.06135859e-01 1.06105974e-01 1.06076114e-01 1.06046280e-01 1.06016470e-01 + 1.05986686e-01 1.05956927e-01 1.05927193e-01 1.05897484e-01 1.05867800e-01 + 1.05838141e-01 1.05808507e-01 1.05778897e-01 1.05749313e-01 1.05719753e-01 + 1.05690218e-01 1.05660708e-01 1.05631223e-01 1.05601762e-01 1.05572326e-01 + 1.05542914e-01 1.05513528e-01 1.05484165e-01 1.05454827e-01 1.05425514e-01 + 1.05396225e-01 1.05366960e-01 1.05337720e-01 1.05308504e-01 1.05279312e-01 + 1.05250145e-01 1.05221002e-01 1.05191883e-01 1.05162788e-01 1.05133717e-01 + 1.05104671e-01 1.05075648e-01 1.05046650e-01 1.05017675e-01 1.04988725e-01 + 1.04959798e-01 1.04930896e-01 1.04902017e-01 1.04873162e-01 1.04844331e-01 + 1.04815523e-01 1.04786740e-01 1.04757980e-01 1.04729243e-01 1.04700531e-01 + 1.04671841e-01 1.04643176e-01 1.04614534e-01 1.04585916e-01 1.04557321e-01 + 1.04528749e-01 1.04500201e-01 1.04471676e-01 1.04443175e-01 1.04414697e-01 + 1.04386242e-01 1.04357810e-01 1.04329402e-01 1.04301017e-01 1.04272655e-01 + 1.04244316e-01 1.04216000e-01 1.04187707e-01 1.04159437e-01 1.04131191e-01 + 1.04102967e-01 1.04074766e-01 1.04046588e-01 1.04018433e-01 1.03990301e-01 + 1.03962192e-01 1.03934105e-01 1.03906041e-01 1.03878000e-01 1.03849982e-01 + 1.03821986e-01 1.03794013e-01 1.03766062e-01 1.03738134e-01 1.03710229e-01 + 1.03682346e-01 1.03654486e-01 1.03626648e-01 1.03598832e-01 1.03571039e-01 + 1.03543268e-01 1.03515520e-01 1.03487793e-01 1.03460089e-01 1.03432408e-01 + 1.03404748e-01 1.03377111e-01 1.03349496e-01 1.03321903e-01 1.03294332e-01 + 1.03266783e-01 1.03239256e-01 1.03211751e-01 1.03184268e-01 1.03156807e-01 + 1.03129368e-01 1.03101951e-01 1.03074556e-01 1.03047182e-01 1.03019831e-01 + 1.02992501e-01 1.02965192e-01 1.02937906e-01 1.02910641e-01 1.02883398e-01 + 1.02856177e-01 1.02828977e-01 1.02801798e-01 1.02774642e-01 1.02747506e-01 + 1.02720392e-01 1.02693300e-01 1.02666229e-01 1.02639180e-01 1.02612151e-01 + 1.02585145e-01 1.02558159e-01 1.02531195e-01 1.02504252e-01 1.02477330e-01 + 1.02450430e-01 1.02423550e-01 1.02396692e-01 1.02369855e-01 1.02343039e-01 + 1.02316244e-01 1.02289470e-01 1.02262717e-01 1.02235985e-01 1.02209274e-01 + 1.02182584e-01 1.02155915e-01 1.02129267e-01 1.02102639e-01 1.02076033e-01 + 1.02049447e-01 1.02022882e-01 1.01996338e-01 1.01969814e-01 1.01943311e-01 + 1.01916829e-01 1.01890367e-01 1.01863926e-01 1.01837505e-01 1.01811106e-01 + 1.01784726e-01 1.01758367e-01 1.01732029e-01 1.01705711e-01 1.01679413e-01 + 1.01653136e-01 1.01626879e-01 1.01600643e-01 1.01574426e-01 1.01548230e-01 + 1.01522055e-01 1.01495899e-01 1.01469764e-01 1.01443649e-01 1.01417554e-01 + 1.01391479e-01 1.01365425e-01 1.01339390e-01 1.01313376e-01 1.01287381e-01 + 1.01261406e-01 1.01235452e-01 1.01209517e-01 1.01183603e-01 1.01157708e-01 + 1.01131833e-01 1.01105978e-01 1.01080143e-01 1.01054327e-01 1.01028532e-01 + 1.01002756e-01 1.00976999e-01 1.00951263e-01 1.00925546e-01 1.00899849e-01 + 1.00874171e-01 1.00848513e-01 1.00822875e-01 1.00797256e-01 1.00771656e-01 + 1.00746077e-01 1.00720516e-01 1.00694975e-01 1.00669454e-01 1.00643952e-01 + 1.00618469e-01 1.00593005e-01 1.00567561e-01 1.00542136e-01 1.00516731e-01 + 1.00491345e-01 1.00465978e-01 1.00440630e-01 1.00415301e-01 1.00389992e-01 + 1.00364701e-01 1.00339430e-01 1.00314178e-01 1.00288944e-01 1.00263730e-01 + 1.00238535e-01 1.00213359e-01 1.00188202e-01 1.00163064e-01 1.00137944e-01 + 1.00112844e-01 1.00087762e-01 1.00062700e-01 1.00037656e-01 1.00012631e-01 + 9.99876242e-02 9.99626366e-02 9.99376677e-02 9.99127176e-02 9.98877861e-02 + 9.98628732e-02 9.98379790e-02 9.98131034e-02 9.97882464e-02 9.97634079e-02 + 9.97385880e-02 9.97137866e-02 9.96890037e-02 9.96642393e-02 9.96394933e-02 + 9.96147657e-02 9.95900565e-02 9.95653657e-02 9.95406933e-02 9.95160392e-02 + 9.94914034e-02 9.94667859e-02 9.94421867e-02 9.94176057e-02 9.93930429e-02 + 9.93684983e-02 9.93439719e-02 9.93194636e-02 9.92949735e-02 9.92705015e-02 + 9.92460476e-02 9.92216117e-02 9.91971939e-02 9.91727940e-02 9.91484122e-02 + 9.91240484e-02 9.90997025e-02 9.90753745e-02 9.90510645e-02 9.90267723e-02 + 9.90024980e-02 9.89782415e-02 9.89540029e-02 9.89297821e-02 9.89055790e-02 + 9.88813937e-02 9.88572261e-02 9.88330763e-02 9.88089441e-02 9.87848296e-02 + 9.87607327e-02 9.87366535e-02 9.87125919e-02 9.86885478e-02 9.86645213e-02 + 9.86405124e-02 9.86165209e-02 9.85925470e-02 9.85685906e-02 9.85446516e-02 + 9.85207300e-02 9.84968258e-02 9.84729391e-02 9.84490697e-02 9.84252176e-02 + 9.84013829e-02 9.83775655e-02 9.83537654e-02 9.83299825e-02 9.83062169e-02 + 9.82824685e-02 9.82587374e-02 9.82350233e-02 9.82113265e-02 9.81876468e-02 + 9.81639842e-02 9.81403387e-02 9.81167103e-02 9.80930990e-02 9.80695047e-02 + 9.80459274e-02 9.80223671e-02 9.79988238e-02 9.79752974e-02 9.79517880e-02 + 9.79282955e-02 9.79048199e-02 9.78813611e-02 9.78579192e-02 9.78344942e-02 + 9.78110859e-02 9.77876945e-02 9.77643198e-02 9.77409619e-02 9.77176207e-02 + 9.76942963e-02 9.76709885e-02 9.76476974e-02 9.76244230e-02 9.76011651e-02 + 9.75779239e-02 9.75546993e-02 9.75314913e-02 9.75082999e-02 9.74851249e-02 + 9.74619665e-02 9.74388246e-02 9.74156991e-02 9.73925901e-02 9.73694976e-02 + 9.73464215e-02 9.73233617e-02 9.73003184e-02 9.72772914e-02 9.72542807e-02 + 9.72312864e-02 9.72083084e-02 9.71853467e-02 9.71624012e-02 9.71394719e-02 + 9.71165589e-02 9.70936621e-02 9.70707815e-02 9.70479171e-02 9.70250688e-02 + 9.70022366e-02 9.69794205e-02 9.69566206e-02 9.69338367e-02 9.69110688e-02 + 9.68883170e-02 9.68655813e-02 9.68428615e-02 9.68201577e-02 9.67974698e-02 + 9.67747979e-02 9.67521419e-02 9.67295019e-02 9.67068777e-02 9.66842693e-02 + 9.66616769e-02 9.66391002e-02 9.66165394e-02 9.65939943e-02 9.65714651e-02 + 9.65489516e-02 9.65264538e-02 9.65039718e-02 9.64815054e-02 9.64590547e-02 + 9.64366197e-02 9.64142004e-02 9.63917967e-02 9.63694086e-02 9.63470360e-02 + 9.63246791e-02 9.63023377e-02 9.62800118e-02 9.62577015e-02 9.62354067e-02 + 9.62131273e-02 9.61908635e-02 9.61686150e-02 9.61463820e-02 9.61241644e-02 + 9.61019623e-02 9.60797754e-02 9.60576040e-02 9.60354479e-02 9.60133071e-02 + 9.59911816e-02 9.59690714e-02 9.59469765e-02 9.59248968e-02 9.59028324e-02 + 9.58807832e-02 9.58587492e-02 9.58367303e-02 9.58147267e-02 9.57927382e-02 + 9.57707648e-02 9.57488065e-02 9.57268633e-02 9.57049352e-02 9.56830222e-02 + 9.56611242e-02 9.56392413e-02 9.56173733e-02 9.55955204e-02 9.55736824e-02 + 9.55518594e-02 9.55300513e-02 9.55082582e-02 9.54864799e-02 9.54647166e-02 + 9.54429681e-02 9.54212345e-02 9.53995157e-02 9.53778117e-02 9.53561226e-02 + 9.53344482e-02 9.53127886e-02 9.52911438e-02 9.52695137e-02 9.52478984e-02 + 9.52262977e-02 9.52047117e-02 9.51831404e-02 9.51615838e-02 9.51400418e-02 + 9.51185144e-02 9.50970016e-02 9.50755034e-02 9.50540198e-02 9.50325508e-02 + 9.50110963e-02 9.49896563e-02 9.49682308e-02 9.49468198e-02 9.49254233e-02 + 9.49040412e-02 9.48826736e-02 9.48613204e-02 9.48399817e-02 9.48186573e-02 + 9.47973473e-02 9.47760516e-02 9.47547703e-02 9.47335034e-02 9.47122507e-02 + 9.46910123e-02 9.46697883e-02 9.46485784e-02 9.46273829e-02 9.46062015e-02 + 9.45850344e-02 9.45638815e-02 9.45427428e-02 9.45216182e-02 9.45005078e-02 + 9.44794116e-02 9.44583294e-02 9.44372614e-02 9.44162074e-02 9.43951676e-02 + 9.43741418e-02 9.43531300e-02 9.43321323e-02 9.43111485e-02 9.42901788e-02 + 9.42692231e-02 9.42482813e-02 9.42273534e-02 9.42064395e-02 9.41855396e-02 + 9.41646535e-02 9.41437813e-02 9.41229230e-02 9.41020785e-02 9.40812479e-02 + 9.40604311e-02 9.40396282e-02 9.40188390e-02 9.39980636e-02 9.39773020e-02 + 9.39565541e-02 9.39358200e-02 9.39150995e-02 9.38943928e-02 9.38736998e-02 + 9.38530204e-02 9.38323548e-02 9.38117027e-02 9.37910643e-02 9.37704395e-02 + 9.37498283e-02 9.37292307e-02 9.37086466e-02 9.36880762e-02 9.36675192e-02 + 9.36469758e-02 9.36264459e-02 9.36059295e-02 9.35854265e-02 9.35649371e-02 + 9.35444611e-02 9.35239985e-02 9.35035493e-02 9.34831136e-02 9.34626912e-02 + 9.34422823e-02 9.34218866e-02 9.34015044e-02 9.33811355e-02 9.33607798e-02 + 9.33404375e-02 9.33201085e-02 9.32997928e-02 9.32794903e-02 9.32592011e-02 + 9.32389251e-02 9.32186624e-02 9.31984128e-02 9.31781764e-02 9.31579532e-02 + 9.31377432e-02 9.31175463e-02 9.30973626e-02 9.30771919e-02 9.30570344e-02 + 9.30368899e-02 9.30167586e-02 9.29966403e-02 9.29765350e-02 9.29564428e-02 + 9.29363636e-02 9.29162974e-02 9.28962442e-02 9.28762040e-02 9.28561768e-02 + 9.28361624e-02 9.28161611e-02 9.27961726e-02 9.27761971e-02 9.27562344e-02 + 9.27362847e-02 9.27163478e-02 9.26964237e-02 9.26765125e-02 9.26566141e-02 + 9.26367286e-02 9.26168558e-02 9.25969958e-02 9.25771486e-02 9.25573141e-02 + 9.25374924e-02 9.25176834e-02 9.24978871e-02 9.24781036e-02 9.24583327e-02 + 9.24385745e-02 9.24188289e-02 9.23990960e-02 9.23793758e-02 9.23596681e-02 + 9.23399731e-02 9.23202907e-02 9.23006208e-02 9.22809635e-02 9.22613188e-02 + 9.22416866e-02 9.22220669e-02 9.22024597e-02 9.21828651e-02 9.21632829e-02 + 9.21437132e-02 9.21241560e-02 9.21046112e-02 9.20850788e-02 9.20655589e-02 + 9.20460514e-02 9.20265563e-02 9.20070735e-02 9.19876031e-02 9.19681451e-02 + 9.19486994e-02 9.19292661e-02 9.19098451e-02 9.18904363e-02 9.18710399e-02 + 9.18516557e-02 9.18322838e-02 9.18129242e-02 9.17935768e-02 9.17742416e-02 + 9.17549186e-02 9.17356079e-02 9.17163093e-02 9.16970229e-02 9.16777486e-02 + 9.16584865e-02 9.16392366e-02 9.16199987e-02 9.16007730e-02 9.15815594e-02 + 9.15623578e-02 9.15431684e-02 9.15239910e-02 9.15048256e-02 9.14856723e-02 + 9.14665310e-02 9.14474017e-02 9.14282844e-02 9.14091791e-02 9.13900857e-02 + 9.13710043e-02 9.13519349e-02 9.13328774e-02 9.13138318e-02 9.12947982e-02 + 9.12757764e-02 9.12567665e-02 9.12377685e-02 9.12187823e-02 9.11998080e-02 + 9.11808456e-02 9.11618949e-02 9.11429561e-02 9.11240290e-02 9.11051138e-02 + 9.10862103e-02 9.10673186e-02 9.10484386e-02 9.10295704e-02 9.10107139e-02 + 9.09918691e-02 9.09730360e-02 9.09542146e-02 9.09354049e-02 9.09166069e-02 + 9.08978205e-02 9.08790457e-02 9.08602826e-02 9.08415311e-02 9.08227911e-02 + 9.08040628e-02 9.07853461e-02 9.07666409e-02 9.07479473e-02 9.07292652e-02 + 9.07105947e-02 9.06919357e-02 9.06732882e-02 9.06546522e-02 9.06360277e-02 + 9.06174146e-02 9.05988131e-02 9.05802229e-02 9.05616442e-02 9.05430770e-02 + 9.05245211e-02 9.05059767e-02 9.04874436e-02 9.04689219e-02 9.04504116e-02 + 9.04319127e-02 9.04134251e-02 9.03949488e-02 9.03764839e-02 9.03580303e-02 + 9.03395879e-02 9.03211569e-02 9.03027371e-02 9.02843286e-02 9.02659313e-02 + 9.02475453e-02 9.02291706e-02 9.02108070e-02 9.01924546e-02 9.01741135e-02 + 9.01557835e-02 9.01374647e-02 9.01191571e-02 9.01008606e-02 9.00825752e-02 + 9.00643010e-02 9.00460379e-02 9.00277859e-02 9.00095450e-02 8.99913152e-02 + 8.99730965e-02 8.99548888e-02 8.99366921e-02 8.99185065e-02 8.99003320e-02 + 8.98821684e-02 8.98640159e-02 8.98458743e-02 8.98277437e-02 8.98096241e-02 + 8.97915155e-02 8.97734178e-02 8.97553311e-02 8.97372552e-02 8.97191903e-02 + 8.97011363e-02 8.96830932e-02 8.96650610e-02 8.96470396e-02 8.96290291e-02 + 8.96110295e-02 8.95930407e-02 8.95750627e-02 8.95570956e-02 8.95391392e-02 + 8.95211937e-02 8.95032589e-02 8.94853349e-02 8.94674217e-02 8.94495192e-02 + 8.94316275e-02 8.94137465e-02 8.93958762e-02 8.93780167e-02 8.93601678e-02 + 8.93423296e-02 8.93245021e-02 8.93066853e-02 8.92888791e-02 8.92710836e-02 + 8.92532987e-02 8.92355244e-02 8.92177608e-02 8.92000077e-02 8.91822653e-02 + 8.91645334e-02 8.91468121e-02 8.91291014e-02 8.91114012e-02 8.90937115e-02 + 8.90760324e-02 8.90583638e-02 8.90407057e-02 8.90230582e-02 8.90054211e-02 + 8.89877945e-02 8.89701783e-02 8.89525726e-02 8.89349774e-02 8.89173926e-02 + 8.88998182e-02 8.88822542e-02 8.88647007e-02 8.88471575e-02 8.88296247e-02 + 8.88121023e-02 8.87945903e-02 8.87770886e-02 8.87595973e-02 8.87421163e-02 + 8.87246456e-02 8.87071853e-02 8.86897352e-02 8.86722954e-02 8.86548660e-02 + 8.86374468e-02 8.86200378e-02 8.86026391e-02 8.85852507e-02 8.85678725e-02 + 8.85505045e-02 8.85331467e-02 8.85157991e-02 8.84984618e-02 8.84811346e-02 + 8.84638176e-02 8.84465107e-02 8.84292140e-02 8.84119274e-02 8.83946510e-02 + 8.83773847e-02 8.83601285e-02 8.83428825e-02 8.83256465e-02 8.83084206e-02 + 8.82912047e-02 8.82739990e-02 8.82568033e-02 8.82396176e-02 8.82224420e-02 + 8.82052764e-02 8.81881208e-02 8.81709752e-02 8.81538396e-02 8.81367140e-02 + 8.81195984e-02 8.81024927e-02 8.80853970e-02 8.80683113e-02 8.80512355e-02 + 8.80341696e-02 8.80171137e-02 8.80000676e-02 8.79830314e-02 8.79660052e-02 + 8.79489888e-02 8.79319823e-02 8.79149857e-02 8.78979989e-02 8.78810219e-02 + 8.78640548e-02 8.78470975e-02 8.78301500e-02 8.78132123e-02 8.77962845e-02 + 8.77793664e-02 8.77624580e-02 8.77455595e-02 8.77286707e-02 8.77117916e-02 + 8.76949223e-02 8.76780628e-02 8.76612129e-02 8.76443728e-02 8.76275423e-02 + 8.76107216e-02 8.75939105e-02 8.75771091e-02 8.75603174e-02 8.75435353e-02 + 8.75267629e-02 8.75100001e-02 8.74932469e-02 8.74765033e-02 8.74597694e-02 + 8.74430451e-02 8.74263303e-02 8.74096251e-02 8.73929296e-02 8.73762435e-02 + 8.73595670e-02 8.73429001e-02 8.73262427e-02 8.73095948e-02 8.72929565e-02 + 8.72763276e-02 8.72597083e-02 8.72430984e-02 8.72264981e-02 8.72099072e-02 + 8.71933257e-02 8.71767537e-02 8.71601912e-02 8.71436381e-02 8.71270944e-02 + 8.71105602e-02 8.70940353e-02 8.70775199e-02 8.70610138e-02 8.70445172e-02 + 8.70280299e-02 8.70115519e-02 8.69950834e-02 8.69786241e-02 8.69621742e-02 + 8.69457337e-02 8.69293024e-02 8.69128805e-02 8.68964679e-02 8.68800646e-02 + 8.68636705e-02 8.68472857e-02 8.68309103e-02 8.68145440e-02 8.67981870e-02 + 8.67818393e-02 8.67655008e-02 8.67491715e-02 8.67328514e-02 8.67165406e-02 + 8.67002389e-02 8.66839464e-02 8.66676631e-02 8.66513890e-02 8.66351240e-02 + 8.66188682e-02 8.66026216e-02 8.65863841e-02 8.65701557e-02 8.65539364e-02 + 8.65377263e-02 8.65215252e-02 8.65053333e-02 8.64891504e-02 8.64729766e-02 + 8.64568119e-02 8.64406563e-02 8.64245097e-02 8.64083721e-02 8.63922436e-02 + 8.63761241e-02 8.63600136e-02 8.63439122e-02 8.63278197e-02 8.63117363e-02 + 8.62956618e-02 8.62795963e-02 8.62635398e-02 8.62474922e-02 8.62314536e-02 + 8.62154239e-02 8.61994032e-02 8.61833914e-02 8.61673885e-02 8.61513945e-02 + 8.61354094e-02 8.61194332e-02 8.61034659e-02 8.60875075e-02 8.60715580e-02 + 8.60556173e-02 8.60396855e-02 8.60237625e-02 8.60078483e-02 8.59919430e-02 + 8.59760465e-02 8.59601588e-02 8.59442800e-02 8.59284099e-02 8.59125486e-02 + 8.58966961e-02 8.58808523e-02 8.58650173e-02 8.58491911e-02 8.58333736e-02 + 8.58175649e-02 8.58017649e-02 8.57859736e-02 8.57701911e-02 8.57544172e-02 + 8.57386520e-02 8.57228956e-02 8.57071478e-02 8.56914087e-02 8.56756782e-02 + 8.56599565e-02 8.56442433e-02 8.56285389e-02 8.56128430e-02 8.55971558e-02 + 8.55814772e-02 8.55658072e-02 8.55501458e-02 8.55344930e-02 8.55188488e-02 + 8.55032132e-02 8.54875862e-02 8.54719677e-02 8.54563578e-02 8.54407564e-02 + 8.54251636e-02 8.54095793e-02 8.53940035e-02 8.53784363e-02 8.53628775e-02 + 8.53473273e-02 8.53317855e-02 8.53162523e-02 8.53007275e-02 8.52852112e-02 + 8.52697034e-02 8.52542040e-02 8.52387130e-02 8.52232305e-02 8.52077565e-02 + 8.51922909e-02 8.51768336e-02 8.51613848e-02 8.51459444e-02 8.51305124e-02 + 8.51150888e-02 8.50996736e-02 8.50842667e-02 8.50688682e-02 8.50534780e-02 + 8.50380963e-02 8.50227228e-02 8.50073577e-02 8.49920009e-02 8.49766524e-02 + 8.49613123e-02 8.49459804e-02 8.49306569e-02 8.49153416e-02 8.49000346e-02 + 8.48847359e-02 8.48694455e-02 8.48541633e-02 8.48388893e-02 8.48236237e-02 + 8.48083662e-02 8.47931170e-02 8.47778760e-02 8.47626432e-02 8.47474187e-02 + 8.47322023e-02 8.47169941e-02 8.47017941e-02 8.46866023e-02 8.46714187e-02 + 8.46562432e-02 8.46410759e-02 8.46259167e-02 8.46107657e-02 8.45956228e-02 + 8.45804880e-02 8.45653614e-02 8.45502428e-02 8.45351324e-02 8.45200301e-02 + 8.45049358e-02 8.44898497e-02 8.44747716e-02 8.44597016e-02 8.44446397e-02 + 8.44295858e-02 8.44145399e-02 8.43995021e-02 8.43844724e-02 8.43694506e-02 + 8.43544369e-02 8.43394312e-02 8.43244335e-02 8.43094438e-02 8.42944621e-02 + 8.42794883e-02 8.42645226e-02 8.42495648e-02 8.42346150e-02 8.42196731e-02 + 8.42047392e-02 8.41898132e-02 8.41748952e-02 8.41599851e-02 8.41450829e-02 + 8.41301886e-02 8.41153022e-02 8.41004238e-02 8.40855532e-02 8.40706905e-02 + 8.40558357e-02 8.40409887e-02 8.40261496e-02 8.40113184e-02 8.39964950e-02 + 8.39816795e-02 8.39668718e-02 8.39520719e-02 8.39372799e-02 8.39224957e-02 + 8.39077193e-02 8.38929507e-02 8.38781898e-02 8.38634368e-02 8.38486916e-02 + 8.38339541e-02 8.38192244e-02 8.38045025e-02 8.37897883e-02 8.37750818e-02 + 8.37603831e-02 8.37456922e-02 8.37310089e-02 8.37163334e-02 8.37016656e-02 + 8.36870055e-02 8.36723531e-02 8.36577084e-02 8.36430714e-02 8.36284421e-02 + 8.36138204e-02 8.35992064e-02 8.35846001e-02 8.35700014e-02 8.35554104e-02 + 8.35408270e-02 8.35262512e-02 8.35116831e-02 8.34971226e-02 8.34825697e-02 + 8.34680244e-02 8.34534867e-02 8.34389566e-02 8.34244341e-02 8.34099191e-02 + 8.33954118e-02 8.33809120e-02 8.33664197e-02 8.33519351e-02 8.33374579e-02 + 8.33229883e-02 8.33085263e-02 8.32940718e-02 8.32796248e-02 8.32651853e-02 + 8.32507533e-02 8.32363288e-02 8.32219118e-02 8.32075023e-02 8.31931003e-02 + 8.31787058e-02 8.31643187e-02 8.31499391e-02 8.31355669e-02 8.31212022e-02 + 8.31068450e-02 8.30924951e-02 8.30781528e-02 8.30638178e-02 8.30494902e-02 + 8.30351701e-02 8.30208574e-02 8.30065520e-02 8.29922541e-02 8.29779635e-02 + 8.29636804e-02 8.29494046e-02 8.29351361e-02 8.29208751e-02 8.29066213e-02 + 8.28923750e-02 8.28781359e-02 8.28639042e-02 8.28496799e-02 8.28354628e-02 + 8.28212531e-02 8.28070507e-02 8.27928556e-02 8.27786678e-02 8.27644872e-02 + 8.27503140e-02 8.27361480e-02 8.27219893e-02 8.27078379e-02 8.26936938e-02 + 8.26795569e-02 8.26654272e-02 8.26513048e-02 8.26371896e-02 8.26230816e-02 + 8.26089809e-02 8.25948874e-02 8.25808011e-02 8.25667220e-02 8.25526501e-02 + 8.25385854e-02 8.25245279e-02 8.25104775e-02 8.24964344e-02 8.24823984e-02 + 8.24683695e-02 8.24543479e-02 8.24403333e-02 8.24263259e-02 8.24123257e-02 + 8.23983326e-02 8.23843466e-02 8.23703677e-02 8.23563960e-02 8.23424313e-02 + 8.23284737e-02 8.23145233e-02 8.23005799e-02 8.22866436e-02 8.22727144e-02 + 8.22587923e-02 8.22448772e-02 8.22309692e-02 8.22170683e-02 8.22031744e-02 + 8.21892875e-02 8.21754077e-02 8.21615349e-02 8.21476691e-02 8.21338103e-02 + 8.21199586e-02 8.21061138e-02 8.20922761e-02 8.20784453e-02 8.20646216e-02 + 8.20508048e-02 8.20369950e-02 8.20231922e-02 8.20093963e-02 8.19956074e-02 + 8.19818254e-02 8.19680504e-02 8.19542823e-02 8.19405212e-02 8.19267670e-02 + 8.19130197e-02 8.18992794e-02 8.18855459e-02 8.18718194e-02 8.18580997e-02 + 8.18443870e-02 8.18306811e-02 8.18169822e-02 8.18032901e-02 8.17896048e-02 + 8.17759265e-02 8.17622550e-02 8.17485903e-02 8.17349326e-02 8.17212816e-02 + 8.17076375e-02 8.16940002e-02 8.16803697e-02 8.16667461e-02 8.16531293e-02 + 8.16395193e-02 8.16259161e-02 8.16123197e-02 8.15987300e-02 8.15851472e-02 + 8.15715712e-02 8.15580019e-02 8.15444394e-02 8.15308836e-02 8.15173346e-02 + 8.15037924e-02 8.14902569e-02 8.14767282e-02 8.14632062e-02 8.14496909e-02 + 8.14361823e-02 8.14226805e-02 8.14091854e-02 8.13956970e-02 8.13822153e-02 + 8.13687402e-02 8.13552719e-02 8.13418103e-02 8.13283553e-02 8.13149070e-02 + 8.13014654e-02 8.12880305e-02 8.12746022e-02 8.12611805e-02 8.12477656e-02 + 8.12343572e-02 8.12209555e-02 8.12075604e-02 8.11941719e-02 8.11807901e-02 + 8.11674149e-02 8.11540463e-02 8.11406843e-02 8.11273288e-02 8.11139800e-02 + 8.11006378e-02 8.10873021e-02 8.10739731e-02 8.10606506e-02 8.10473346e-02 + 8.10340252e-02 8.10207224e-02 8.10074261e-02 8.09941364e-02 8.09808532e-02 + 8.09675765e-02 8.09543064e-02 8.09410428e-02 8.09277857e-02 8.09145351e-02 + 8.09012911e-02 8.08880535e-02 8.08748224e-02 8.08615978e-02 8.08483797e-02 + 8.08351681e-02 8.08219630e-02 8.08087643e-02 8.07955721e-02 8.07823863e-02 + 8.07692070e-02 8.07560342e-02 8.07428678e-02 8.07297078e-02 8.07165542e-02 + 8.07034071e-02 8.06902664e-02 8.06771322e-02 8.06640043e-02 8.06508829e-02 + 8.06377678e-02 8.06246592e-02 8.06115569e-02 8.05984610e-02 8.05853715e-02 + 8.05722884e-02 8.05592116e-02 8.05461412e-02 8.05330772e-02 8.05200195e-02 + 8.05069682e-02 8.04939232e-02 8.04808846e-02 8.04678523e-02 8.04548263e-02 + 8.04418066e-02 8.04287933e-02 8.04157863e-02 8.04027856e-02 8.03897912e-02 + 8.03768031e-02 8.03638212e-02 8.03508457e-02 8.03378765e-02 8.03249135e-02 + 8.03119568e-02 8.02990064e-02 8.02860622e-02 8.02731243e-02 8.02601926e-02 + 8.02472672e-02 8.02343481e-02 8.02214351e-02 8.02085284e-02 8.01956280e-02 + 8.01827337e-02 8.01698457e-02 8.01569639e-02 8.01440883e-02 8.01312189e-02 + 8.01183557e-02 8.01054986e-02 8.00926478e-02 8.00798032e-02 8.00669647e-02 + 8.00541324e-02 8.00413063e-02 8.00284863e-02 8.00156725e-02 8.00028649e-02 + 7.99900634e-02 7.99772680e-02 7.99644788e-02 7.99516957e-02 7.99389187e-02 + 7.99261479e-02 7.99133832e-02 7.99006246e-02 7.98878721e-02 7.98751257e-02 + 7.98623854e-02 7.98496512e-02 7.98369231e-02 7.98242011e-02 7.98114851e-02 + 7.97987753e-02 7.97860715e-02 7.97733737e-02 7.97606821e-02 7.97479965e-02 + 7.97353169e-02 7.97226434e-02 7.97099759e-02 7.96973145e-02 7.96846590e-02 + 7.96720097e-02 7.96593663e-02 7.96467290e-02 7.96340976e-02 7.96214723e-02 + 7.96088530e-02 7.95962397e-02 7.95836323e-02 7.95710310e-02 7.95584356e-02 + 7.95458463e-02 7.95332629e-02 7.95206854e-02 7.95081140e-02 7.94955485e-02 + 7.94829889e-02 7.94704353e-02 7.94578877e-02 7.94453459e-02 7.94328102e-02 + 7.94202803e-02 7.94077564e-02 7.93952384e-02 7.93827263e-02 7.93702202e-02 + 7.93577199e-02 7.93452256e-02 7.93327371e-02 7.93202546e-02 7.93077779e-02 + 7.92953071e-02 7.92828423e-02 7.92703832e-02 7.92579301e-02 7.92454828e-02 + 7.92330414e-02 7.92206058e-02 7.92081761e-02 7.91957523e-02 7.91833343e-02 + 7.91709221e-02 7.91585157e-02 7.91461152e-02 7.91337206e-02 7.91213317e-02 + 7.91089486e-02 7.90965714e-02 7.90842000e-02 7.90718344e-02 7.90594746e-02 + 7.90471205e-02 7.90347723e-02 7.90224298e-02 7.90100932e-02 7.89977623e-02 + 7.89854371e-02 7.89731178e-02 7.89608042e-02 7.89484964e-02 7.89361943e-02 + 7.89238979e-02 7.89116073e-02 7.88993225e-02 7.88870434e-02 7.88747700e-02 + 7.88625023e-02 7.88502404e-02 7.88379842e-02 7.88257337e-02 7.88134889e-02 + 7.88012498e-02 7.87890164e-02 7.87767887e-02 7.87645667e-02 7.87523504e-02 + 7.87401398e-02 7.87279348e-02 7.87157355e-02 7.87035419e-02 7.86913540e-02 + 7.86791717e-02 7.86669951e-02 7.86548241e-02 7.86426588e-02 7.86304991e-02 + 7.86183450e-02 7.86061966e-02 7.85940538e-02 7.85819167e-02 7.85697851e-02 + 7.85576592e-02 7.85455389e-02 7.85334242e-02 7.85213151e-02 7.85092116e-02 + 7.84971137e-02 7.84850214e-02 7.84729347e-02 7.84608535e-02 7.84487780e-02 + 7.84367080e-02 7.84246436e-02 7.84125847e-02 7.84005314e-02 7.83884837e-02 + 7.83764415e-02 7.83644048e-02 7.83523737e-02 7.83403482e-02 7.83283282e-02 + 7.83163137e-02 7.83043047e-02 7.82923013e-02 7.82803034e-02 7.82683110e-02 + 7.82563241e-02 7.82443427e-02 7.82323668e-02 7.82203964e-02 7.82084315e-02 + 7.81964721e-02 7.81845182e-02 7.81725697e-02 7.81606268e-02 7.81486893e-02 + 7.81367572e-02 7.81248307e-02 7.81129096e-02 7.81009939e-02 7.80890837e-02 + 7.80771790e-02 7.80652797e-02 7.80533858e-02 7.80414974e-02 7.80296144e-02 + 7.80177368e-02 7.80058646e-02 7.79939979e-02 7.79821366e-02 7.79702807e-02 + 7.79584302e-02 7.79465851e-02 7.79347454e-02 7.79229111e-02 7.79110821e-02 + 7.78992586e-02 7.78874404e-02 7.78756277e-02 7.78638202e-02 7.78520182e-02 + 7.78402215e-02 7.78284302e-02 7.78166443e-02 7.78048637e-02 7.77930884e-02 + 7.77813185e-02 7.77695539e-02 7.77577947e-02 7.77460408e-02 7.77342922e-02 + 7.77225490e-02 7.77108111e-02 7.76990785e-02 7.76873512e-02 7.76756292e-02 + 7.76639125e-02 7.76522011e-02 7.76404950e-02 7.76287942e-02 7.76170987e-02 + 7.76054085e-02 7.75937236e-02 7.75820439e-02 7.75703695e-02 7.75587004e-02 + 7.75470365e-02 7.75353780e-02 7.75237246e-02 7.75120765e-02 7.75004337e-02 + 7.74887961e-02 7.74771637e-02 7.74655366e-02 7.74539147e-02 7.74422981e-02 + 7.74306867e-02 7.74190805e-02 7.74074795e-02 7.73958837e-02 7.73842931e-02 + 7.73727078e-02 7.73611276e-02 7.73495527e-02 7.73379829e-02 7.73264183e-02 + 7.73148589e-02 7.73033047e-02 7.72917557e-02 7.72802118e-02 7.72686732e-02 + 7.72571396e-02 7.72456113e-02 7.72340881e-02 7.72225701e-02 7.72110572e-02 + 7.71995494e-02 7.71880468e-02 7.71765494e-02 7.71650571e-02 7.71535699e-02 + 7.71420878e-02 7.71306109e-02 7.71191391e-02 7.71076724e-02 7.70962108e-02 + 7.70847543e-02 7.70733030e-02 7.70618567e-02 7.70504155e-02 7.70389795e-02 + 7.70275485e-02 7.70161226e-02 7.70047018e-02 7.69932860e-02 7.69818754e-02 + 7.69704698e-02 7.69590693e-02 7.69476738e-02 7.69362834e-02 7.69248981e-02 + 7.69135178e-02 7.69021426e-02 7.68907724e-02 7.68794073e-02 7.68680472e-02 + 7.68566921e-02 7.68453420e-02 7.68339970e-02 7.68226570e-02 7.68113221e-02 + 7.67999921e-02 7.67886672e-02 7.67773472e-02 7.67660323e-02 7.67547224e-02 + 7.67434174e-02 7.67321175e-02 7.67208226e-02 7.67095326e-02 7.66982476e-02 + 7.66869676e-02 7.66756926e-02 7.66644225e-02 7.66531574e-02 7.66418973e-02 + 7.66306422e-02 7.66193920e-02 7.66081467e-02 7.65969064e-02 7.65856711e-02 + 7.65744407e-02 7.65632152e-02 7.65519946e-02 7.65407790e-02 7.65295684e-02 + 7.65183626e-02 7.65071618e-02 7.64959659e-02 7.64847749e-02 7.64735888e-02 + 7.64624076e-02 7.64512313e-02 7.64400599e-02 7.64288935e-02 7.64177319e-02 + 7.64065752e-02 7.63954233e-02 7.63842764e-02 7.63731343e-02 7.63619972e-02 + 7.63508648e-02 7.63397374e-02 7.63286148e-02 7.63174971e-02 7.63063842e-02 + 7.62952762e-02 7.62841730e-02 7.62730747e-02 7.62619813e-02 7.62508926e-02 + 7.62398088e-02 7.62287298e-02 7.62176557e-02 7.62065864e-02 7.61955219e-02 + 7.61844622e-02 7.61734074e-02 7.61623573e-02 7.61513121e-02 7.61402716e-02 + 7.61292360e-02 7.61182052e-02 7.61071791e-02 7.60961579e-02 7.60851414e-02 + 7.60741297e-02 7.60631228e-02 7.60521207e-02 7.60411233e-02 7.60301307e-02 + 7.60191429e-02 7.60081598e-02 7.59971815e-02 7.59862080e-02 7.59752392e-02 + 7.59642751e-02 7.59533158e-02 7.59423613e-02 7.59314115e-02 7.59204664e-02 + 7.59095260e-02 7.58985904e-02 7.58876595e-02 7.58767333e-02 7.58658119e-02 + 7.58548951e-02 7.58439831e-02 7.58330758e-02 7.58221731e-02 7.58112752e-02 + 7.58003820e-02 7.57894935e-02 7.57786096e-02 7.57677305e-02 7.57568560e-02 + 7.57459862e-02 7.57351211e-02 7.57242607e-02 7.57134049e-02 7.57025538e-02 + 7.56917074e-02 7.56808656e-02 7.56700285e-02 7.56591961e-02 7.56483683e-02 + 7.56375451e-02 7.56267266e-02 7.56159127e-02 7.56051035e-02 7.55942989e-02 + 7.55834989e-02 7.55727035e-02 7.55619128e-02 7.55511267e-02 7.55403452e-02 + 7.55295684e-02 7.55187961e-02 7.55080285e-02 7.54972654e-02 7.54865070e-02 + 7.54757531e-02 7.54650039e-02 7.54542592e-02 7.54435192e-02 7.54327837e-02 + 7.54220528e-02 7.54113264e-02 7.54006047e-02 7.53898875e-02 7.53791749e-02 + 7.53684669e-02 7.53577634e-02 7.53470644e-02 7.53363701e-02 7.53256803e-02 + 7.53149950e-02 7.53043143e-02 7.52936381e-02 7.52829665e-02 7.52722994e-02 + 7.52616368e-02 7.52509787e-02 7.52403252e-02 7.52296762e-02 7.52190318e-02 + 7.52083918e-02 7.51977564e-02 7.51871255e-02 7.51764990e-02 7.51658771e-02 + 7.51552597e-02 7.51446468e-02 7.51340384e-02 7.51234344e-02 7.51128350e-02 + 7.51022400e-02 7.50916496e-02 7.50810636e-02 7.50704821e-02 7.50599050e-02 + 7.50493324e-02 7.50387643e-02 7.50282007e-02 7.50176415e-02 7.50070868e-02 + 7.49965365e-02 7.49859907e-02 7.49754493e-02 7.49649123e-02 7.49543799e-02 + 7.49438518e-02 7.49333282e-02 7.49228090e-02 7.49122942e-02 7.49017839e-02 + 7.48912780e-02 7.48807765e-02 7.48702794e-02 7.48597868e-02 7.48492985e-02 + 7.48388147e-02 7.48283352e-02 7.48178602e-02 7.48073895e-02 7.47969233e-02 + 7.47864614e-02 7.47760040e-02 7.47655509e-02 7.47551022e-02 7.47446579e-02 + 7.47342179e-02 7.47237824e-02 7.47133512e-02 7.47029243e-02 7.46925019e-02 + 7.46820838e-02 7.46716700e-02 7.46612606e-02 7.46508556e-02 7.46404549e-02 + 7.46300586e-02 7.46196666e-02 7.46092789e-02 7.45988956e-02 7.45885166e-02 + 7.45781419e-02 7.45677716e-02 7.45574056e-02 7.45470439e-02 7.45366865e-02 + 7.45263335e-02 7.45159847e-02 7.45056403e-02 7.44953002e-02 7.44849644e-02 + 7.44746329e-02 7.44643056e-02 7.44539827e-02 7.44436641e-02 7.44333497e-02 + 7.44230397e-02 7.44127339e-02 7.44024324e-02 7.43921352e-02 7.43818423e-02 + 7.43715536e-02 7.43612692e-02 7.43509890e-02 7.43407132e-02 7.43304416e-02 + 7.43201742e-02 7.43099111e-02 7.42996522e-02 7.42893976e-02 7.42791473e-02 + 7.42689011e-02 7.42586593e-02 7.42484216e-02 7.42381882e-02 7.42279590e-02 + 7.42177341e-02 7.42075133e-02 7.41972968e-02 7.41870845e-02 7.41768765e-02 + 7.41666726e-02 7.41564729e-02 7.41462775e-02 7.41360863e-02 7.41258992e-02 + 7.41157164e-02 7.41055377e-02 7.40953633e-02 7.40851930e-02 7.40750269e-02 + 7.40648650e-02 7.40547073e-02 7.40445538e-02 7.40344044e-02 7.40242592e-02 + 7.40141182e-02 7.40039814e-02 7.39938487e-02 7.39837202e-02 7.39735958e-02 + 7.39634756e-02 7.39533595e-02 7.39432476e-02 7.39331398e-02 7.39230362e-02 + 7.39129367e-02 7.39028414e-02 7.38927502e-02 7.38826631e-02 7.38725802e-02 + 7.38625014e-02 7.38524267e-02 7.38423561e-02 7.38322896e-02 7.38222273e-02 + 7.38121691e-02 7.38021150e-02 7.37920650e-02 7.37820191e-02 7.37719773e-02 + 7.37619396e-02 7.37519060e-02 7.37418765e-02 7.37318510e-02 7.37218297e-02 + 7.37118125e-02 7.37017993e-02 7.36917902e-02 7.36817852e-02 7.36717843e-02 + 7.36617874e-02 7.36517946e-02 7.36418059e-02 7.36318212e-02 7.36218406e-02 + 7.36118641e-02 7.36018916e-02 7.35919231e-02 7.35819587e-02 7.35719984e-02 + 7.35620421e-02 7.35520898e-02 7.35421416e-02 7.35321974e-02 7.35222572e-02 + 7.35123211e-02 7.35023890e-02 7.34924610e-02 7.34825369e-02 7.34726169e-02 + 7.34627009e-02 7.34527889e-02 7.34428809e-02 7.34329769e-02 7.34230769e-02 + 7.34131809e-02 7.34032890e-02 7.33934010e-02 7.33835170e-02 7.33736370e-02 + 7.33637610e-02 7.33538890e-02 7.33440210e-02 7.33341569e-02 7.33242969e-02 + 7.33144408e-02 7.33045886e-02 7.32947405e-02 7.32848963e-02 7.32750561e-02 + 7.32652199e-02 7.32553876e-02 7.32455592e-02 7.32357348e-02 7.32259144e-02 + 7.32160979e-02 7.32062854e-02 7.31964768e-02 7.31866722e-02 7.31768715e-02 + 7.31670747e-02 7.31572819e-02 7.31474930e-02 7.31377080e-02 7.31279269e-02 + 7.31181498e-02 7.31083766e-02 7.30986073e-02 7.30888419e-02 7.30790805e-02 + 7.30693229e-02 7.30595693e-02 7.30498195e-02 7.30400737e-02 7.30303318e-02 + 7.30205937e-02 7.30108596e-02 7.30011293e-02 7.29914030e-02 7.29816805e-02 + 7.29719619e-02 7.29622472e-02 7.29525364e-02 7.29428294e-02 7.29331263e-02 + 7.29234271e-02 7.29137318e-02 7.29040403e-02 7.28943527e-02 7.28846689e-02 + 7.28749890e-02 7.28653130e-02 7.28556408e-02 7.28459725e-02 7.28363080e-02 + 7.28266473e-02 7.28169905e-02 7.28073376e-02 7.27976885e-02 7.27880432e-02 + 7.27784017e-02 7.27687641e-02 7.27591303e-02 7.27495003e-02 7.27398742e-02 + 7.27302519e-02 7.27206334e-02 7.27110187e-02 7.27014078e-02 7.26918007e-02 + 7.26821975e-02 7.26725980e-02 7.26630023e-02 7.26534105e-02 7.26438224e-02 + 7.26342382e-02 7.26246577e-02 7.26150810e-02 7.26055081e-02 7.25959390e-02 + 7.25863737e-02 7.25768121e-02 7.25672544e-02 7.25577004e-02 7.25481502e-02 + 7.25386037e-02 7.25290610e-02 7.25195221e-02 7.25099870e-02 7.25004556e-02 + 7.24909279e-02 7.24814040e-02 7.24718839e-02 7.24623675e-02 7.24528549e-02 + 7.24433460e-02 7.24338409e-02 7.24243395e-02 7.24148418e-02 7.24053479e-02 + 7.23958577e-02 7.23863712e-02 7.23768885e-02 7.23674095e-02 7.23579342e-02 + 7.23484626e-02 7.23389948e-02 7.23295307e-02 7.23200702e-02 7.23106135e-02 + 7.23011605e-02 7.22917112e-02 7.22822656e-02 7.22728238e-02 7.22633856e-02 + 7.22539511e-02 7.22445203e-02 7.22350932e-02 7.22256698e-02 7.22162500e-02 + 7.22068340e-02 7.21974216e-02 7.21880130e-02 7.21786080e-02 7.21692066e-02 + 7.21598090e-02 7.21504150e-02 7.21410247e-02 7.21316380e-02 7.21222550e-02 + 7.21128757e-02 7.21035000e-02 7.20941280e-02 7.20847596e-02 7.20753949e-02 + 7.20660339e-02 7.20566765e-02 7.20473227e-02 7.20379726e-02 7.20286261e-02 + 7.20192832e-02 7.20099440e-02 7.20006084e-02 7.19912765e-02 7.19819481e-02 + 7.19726234e-02 7.19633024e-02 7.19539849e-02 7.19446711e-02 7.19353608e-02 + 7.19260542e-02 7.19167512e-02 7.19074518e-02 7.18981560e-02 7.18888639e-02 + 7.18795753e-02 7.18702903e-02 7.18610089e-02 7.18517311e-02 7.18424569e-02 + 7.18331863e-02 7.18239193e-02 7.18146559e-02 7.18053960e-02 7.17961398e-02 + 7.17868871e-02 7.17776380e-02 7.17683924e-02 7.17591505e-02 7.17499121e-02 + 7.17406772e-02 7.17314460e-02 7.17222183e-02 7.17129941e-02 7.17037735e-02 + 7.16945565e-02 7.16853430e-02 7.16761331e-02 7.16669267e-02 7.16577239e-02 + 7.16485246e-02 7.16393289e-02 7.16301367e-02 7.16209480e-02 7.16117629e-02 + 7.16025813e-02 7.15934032e-02 7.15842287e-02 7.15750577e-02 7.15658902e-02 + 7.15567262e-02 7.15475658e-02 7.15384089e-02 7.15292555e-02 7.15201056e-02 + 7.15109592e-02 7.15018163e-02 7.14926769e-02 7.14835410e-02 7.14744087e-02 + 7.14652798e-02 7.14561544e-02 7.14470325e-02 7.14379142e-02 7.14287993e-02 + 7.14196878e-02 7.14105799e-02 7.14014755e-02 7.13923745e-02 7.13832770e-02 + 7.13741830e-02 7.13650925e-02 7.13560055e-02 7.13469219e-02 7.13378418e-02 + 7.13287651e-02 7.13196919e-02 7.13106222e-02 7.13015559e-02 7.12924931e-02 + 7.12834338e-02 7.12743779e-02 7.12653254e-02 7.12562764e-02 7.12472309e-02 + 7.12381888e-02 7.12291501e-02 7.12201149e-02 7.12110831e-02 7.12020547e-02 + 7.11930298e-02 7.11840083e-02 7.11749902e-02 7.11659756e-02 7.11569644e-02 + 7.11479566e-02 7.11389522e-02 7.11299512e-02 7.11209537e-02 7.11119596e-02 + 7.11029689e-02 7.10939816e-02 7.10849977e-02 7.10760172e-02 7.10670401e-02 + 7.10580664e-02 7.10490961e-02 7.10401292e-02 7.10311657e-02 7.10222056e-02 + 7.10132489e-02 7.10042956e-02 7.09953456e-02 7.09863990e-02 7.09774559e-02 + 7.09685161e-02 7.09595796e-02 7.09506466e-02 7.09417169e-02 7.09327906e-02 + 7.09238677e-02 7.09149481e-02 7.09060319e-02 7.08971191e-02 7.08882096e-02 + 7.08793035e-02 7.08704007e-02 7.08615013e-02 7.08526052e-02 7.08437125e-02 + 7.08348231e-02 7.08259371e-02 7.08170544e-02 7.08081751e-02 7.07992991e-02 + 7.07904264e-02 7.07815571e-02 7.07726911e-02 7.07638285e-02 7.07549691e-02 + 7.07461131e-02 7.07372604e-02 7.07284111e-02 7.07195650e-02 7.07107223e-02 + 7.07018829e-02 7.06930468e-02 7.06842141e-02 7.06753846e-02 7.06665584e-02 + 7.06577356e-02 7.06489160e-02 7.06400998e-02 7.06312868e-02 7.06224772e-02 + 7.06136708e-02 7.06048678e-02 7.05960680e-02 7.05872715e-02 7.05784783e-02 + 7.05696884e-02 7.05609018e-02 7.05521184e-02 7.05433384e-02 7.05345616e-02 + 1.00000000e+00 9.75894263e-01 9.53451752e-01 9.32489601e-01 9.12851907e-01 + 8.94404826e-01 8.77032714e-01 8.60635068e-01 8.45124065e-01 8.30422576e-01 + 8.16462554e-01 8.03183696e-01 7.90532350e-01 7.78460602e-01 7.66925506e-01 + 7.55888443e-01 7.45314577e-01 7.35172390e-01 7.25433287e-01 7.16071258e-01 + 7.07062580e-01 6.98385572e-01 6.90020370e-01 6.81948734e-01 6.74153887e-01 + 6.66620364e-01 6.59333880e-01 6.52281224e-01 6.45450150e-01 6.38829295e-01 + 6.32408091e-01 6.26176704e-01 6.20125961e-01 6.14247300e-01 6.08532716e-01 + 6.02974715e-01 5.97566276e-01 5.92300808e-01 5.87172122e-01 5.82174396e-01 + 5.77302151e-01 5.72550221e-01 5.67913735e-01 5.63388093e-01 5.58968948e-01 + 5.54652188e-01 5.50433918e-01 5.46310451e-01 5.42278287e-01 5.38334105e-01 + 5.34474753e-01 5.30697232e-01 5.26998691e-01 5.23376415e-01 5.19827818e-01 + 5.16350438e-01 5.12941922e-01 5.09600027e-01 5.06322612e-01 5.03107629e-01 + 4.99953120e-01 4.96857213e-01 4.93818117e-01 4.90834114e-01 4.87903560e-01 + 4.85024878e-01 4.82196556e-01 4.79417141e-01 4.76685242e-01 4.73999519e-01 + 4.71358685e-01 4.68761505e-01 4.66206788e-01 4.63693390e-01 4.61220209e-01 + 4.58786184e-01 4.56390292e-01 4.54031548e-01 4.51709002e-01 4.49421737e-01 + 4.47168870e-01 4.44949545e-01 4.42762941e-01 4.40608259e-01 4.38484731e-01 + 4.36391613e-01 4.34328187e-01 4.32293756e-01 4.30287649e-01 4.28309213e-01 + 4.26357819e-01 4.24432857e-01 4.22533734e-01 4.20659877e-01 4.18810733e-01 + 4.16985761e-01 4.15184441e-01 4.13406264e-01 4.11650741e-01 4.09917394e-01 + 4.08205761e-01 4.06515390e-01 4.04845847e-01 4.03196706e-01 4.01567556e-01 + 3.99957996e-01 3.98367636e-01 3.96796098e-01 3.95243014e-01 3.93708024e-01 + 3.92190780e-01 3.90690944e-01 3.89208184e-01 3.87742180e-01 3.86292617e-01 + 3.84859191e-01 3.83441605e-01 3.82039569e-01 3.80652800e-01 3.79281024e-01 + 3.77923973e-01 3.76581385e-01 3.75253005e-01 3.73938583e-01 3.72637878e-01 + 3.71350652e-01 3.70076675e-01 3.68815719e-01 3.67567566e-01 3.66332000e-01 + 3.65108810e-01 3.63897792e-01 3.62698745e-01 3.61511473e-01 3.60335785e-01 + 3.59171493e-01 3.58018415e-01 3.56876371e-01 3.55745187e-01 3.54624691e-01 + 3.53514717e-01 3.52415101e-01 3.51325683e-01 3.50246306e-01 3.49176816e-01 + 3.48117064e-01 3.47066903e-01 3.46026189e-01 3.44994782e-01 3.43972542e-01 + 3.42959337e-01 3.41955032e-01 3.40959498e-01 3.39972609e-01 3.38994241e-01 + 3.38024270e-01 3.37062579e-01 3.36109049e-01 3.35163566e-01 3.34226018e-01 + 3.33296293e-01 3.32374284e-01 3.31459885e-01 3.30552992e-01 3.29653502e-01 + 3.28761315e-01 3.27876333e-01 3.26998460e-01 3.26127600e-01 3.25263662e-01 + 3.24406553e-01 3.23556184e-01 3.22712468e-01 3.21875318e-01 3.21044649e-01 + 3.20220378e-01 3.19402424e-01 3.18590706e-01 3.17785145e-01 3.16985665e-01 + 3.16192188e-01 3.15404639e-01 3.14622947e-01 3.13847038e-01 3.13076841e-01 + 3.12312287e-01 3.11553306e-01 3.10799833e-01 3.10051800e-01 3.09309142e-01 + 3.08571795e-01 3.07839697e-01 3.07112784e-01 3.06390997e-01 3.05674275e-01 + 3.04962560e-01 3.04255793e-01 3.03553917e-01 3.02856876e-01 3.02164615e-01 + 3.01477079e-01 3.00794216e-01 3.00115971e-01 2.99442294e-01 2.98773134e-01 + 2.98108439e-01 2.97448161e-01 2.96792252e-01 2.96140662e-01 2.95493345e-01 + 2.94850254e-01 2.94211344e-01 2.93576570e-01 2.92945886e-01 2.92319250e-01 + 2.91696618e-01 2.91077947e-01 2.90463197e-01 2.89852325e-01 2.89245291e-01 + 2.88642055e-01 2.88042577e-01 2.87446820e-01 2.86854743e-01 2.86266311e-01 + 2.85681484e-01 2.85100228e-01 2.84522505e-01 2.83948280e-01 2.83377517e-01 + 2.82810183e-01 2.82246243e-01 2.81685662e-01 2.81128409e-01 2.80574450e-01 + 2.80023753e-01 2.79476286e-01 2.78932017e-01 2.78390916e-01 2.77852951e-01 + 2.77318094e-01 2.76786313e-01 2.76257580e-01 2.75731865e-01 2.75209140e-01 + 2.74689377e-01 2.74172548e-01 2.73658625e-01 2.73147581e-01 2.72639389e-01 + 2.72134024e-01 2.71631458e-01 2.71131667e-01 2.70634624e-01 2.70140305e-01 + 2.69648684e-01 2.69159738e-01 2.68673442e-01 2.68189772e-01 2.67708706e-01 + 2.67230218e-01 2.66754287e-01 2.66280890e-01 2.65810005e-01 2.65341608e-01 + 2.64875680e-01 2.64412197e-01 2.63951138e-01 2.63492483e-01 2.63036211e-01 + 2.62582301e-01 2.62130732e-01 2.61681486e-01 2.61234541e-01 2.60789879e-01 + 2.60347479e-01 2.59907323e-01 2.59469393e-01 2.59033668e-01 2.58600131e-01 + 2.58168764e-01 2.57739549e-01 2.57312467e-01 2.56887501e-01 2.56464633e-01 + 2.56043847e-01 2.55625126e-01 2.55208452e-01 2.54793809e-01 2.54381180e-01 + 2.53970550e-01 2.53561902e-01 2.53155220e-01 2.52750489e-01 2.52347693e-01 + 2.51946816e-01 2.51547844e-01 2.51150761e-01 2.50755553e-01 2.50362204e-01 + 2.49970701e-01 2.49581029e-01 2.49193173e-01 2.48807120e-01 2.48422856e-01 + 2.48040367e-01 2.47659639e-01 2.47280658e-01 2.46903413e-01 2.46527888e-01 + 2.46154072e-01 2.45781951e-01 2.45411513e-01 2.45042745e-01 2.44675634e-01 + 2.44310168e-01 2.43946335e-01 2.43584122e-01 2.43223518e-01 2.42864511e-01 + 2.42507089e-01 2.42151241e-01 2.41796954e-01 2.41444218e-01 2.41093021e-01 + 2.40743352e-01 2.40395201e-01 2.40048555e-01 2.39703404e-01 2.39359739e-01 + 2.39017547e-01 2.38676818e-01 2.38337542e-01 2.37999710e-01 2.37663309e-01 + 2.37328332e-01 2.36994766e-01 2.36662603e-01 2.36331833e-01 2.36002446e-01 + 2.35674432e-01 2.35347783e-01 2.35022487e-01 2.34698537e-01 2.34375923e-01 + 2.34054635e-01 2.33734666e-01 2.33416004e-01 2.33098643e-01 2.32782573e-01 + 2.32467784e-01 2.32154270e-01 2.31842020e-01 2.31531028e-01 2.31221283e-01 + 2.30912778e-01 2.30605504e-01 2.30299454e-01 2.29994620e-01 2.29690992e-01 + 2.29388564e-01 2.29087328e-01 2.28787275e-01 2.28488398e-01 2.28190689e-01 + 2.27894141e-01 2.27598746e-01 2.27304497e-01 2.27011386e-01 2.26719406e-01 + 2.26428550e-01 2.26138810e-01 2.25850180e-01 2.25562652e-01 2.25276219e-01 + 2.24990875e-01 2.24706613e-01 2.24423425e-01 2.24141305e-01 2.23860246e-01 + 2.23580243e-01 2.23301287e-01 2.23023372e-01 2.22746493e-01 2.22470643e-01 + 2.22195814e-01 2.21922002e-01 2.21649200e-01 2.21377401e-01 2.21106599e-01 + 2.20836789e-01 2.20567964e-01 2.20300119e-01 2.20033247e-01 2.19767342e-01 + 2.19502400e-01 2.19238413e-01 2.18975376e-01 2.18713284e-01 2.18452130e-01 + 2.18191910e-01 2.17932618e-01 2.17674247e-01 2.17416794e-01 2.17160252e-01 + 2.16904616e-01 2.16649880e-01 2.16396040e-01 2.16143090e-01 2.15891025e-01 + 2.15639840e-01 2.15389530e-01 2.15140089e-01 2.14891513e-01 2.14643796e-01 + 2.14396935e-01 2.14150923e-01 2.13905756e-01 2.13661429e-01 2.13417937e-01 + 2.13175276e-01 2.12933441e-01 2.12692427e-01 2.12452229e-01 2.12212843e-01 + 2.11974265e-01 2.11736490e-01 2.11499513e-01 2.11263330e-01 2.11027936e-01 + 2.10793328e-01 2.10559500e-01 2.10326449e-01 2.10094169e-01 2.09862658e-01 + 2.09631910e-01 2.09401922e-01 2.09172689e-01 2.08944208e-01 2.08716473e-01 + 2.08489481e-01 2.08263229e-01 2.08037711e-01 2.07812924e-01 2.07588865e-01 + 2.07365528e-01 2.07142911e-01 2.06921010e-01 2.06699820e-01 2.06479337e-01 + 2.06259559e-01 2.06040481e-01 2.05822100e-01 2.05604412e-01 2.05387413e-01 + 2.05171099e-01 2.04955468e-01 2.04740515e-01 2.04526237e-01 2.04312630e-01 + 2.04099691e-01 2.03887417e-01 2.03675803e-01 2.03464847e-01 2.03254545e-01 + 2.03044894e-01 2.02835891e-01 2.02627531e-01 2.02419812e-01 2.02212731e-01 + 2.02006284e-01 2.01800468e-01 2.01595280e-01 2.01390716e-01 2.01186774e-01 + 2.00983451e-01 2.00780742e-01 2.00578646e-01 2.00377158e-01 2.00176277e-01 + 1.99975998e-01 1.99776320e-01 1.99577238e-01 1.99378751e-01 1.99180854e-01 + 1.98983546e-01 1.98786822e-01 1.98590681e-01 1.98395120e-01 1.98200135e-01 + 1.98005724e-01 1.97811884e-01 1.97618612e-01 1.97425905e-01 1.97233761e-01 + 1.97042177e-01 1.96851151e-01 1.96660678e-01 1.96470758e-01 1.96281387e-01 + 1.96092562e-01 1.95904281e-01 1.95716541e-01 1.95529341e-01 1.95342676e-01 + 1.95156545e-01 1.94970945e-01 1.94785873e-01 1.94601328e-01 1.94417306e-01 + 1.94233805e-01 1.94050823e-01 1.93868357e-01 1.93686404e-01 1.93504963e-01 + 1.93324031e-01 1.93143606e-01 1.92963685e-01 1.92784265e-01 1.92605345e-01 + 1.92426923e-01 1.92248995e-01 1.92071560e-01 1.91894616e-01 1.91718159e-01 + 1.91542189e-01 1.91366702e-01 1.91191696e-01 1.91017170e-01 1.90843121e-01 + 1.90669546e-01 1.90496445e-01 1.90323814e-01 1.90151652e-01 1.89979956e-01 + 1.89808724e-01 1.89637954e-01 1.89467644e-01 1.89297793e-01 1.89128397e-01 + 1.88959456e-01 1.88790966e-01 1.88622926e-01 1.88455335e-01 1.88288189e-01 + 1.88121487e-01 1.87955227e-01 1.87789407e-01 1.87624025e-01 1.87459079e-01 + 1.87294568e-01 1.87130489e-01 1.86966840e-01 1.86803620e-01 1.86640827e-01 + 1.86478458e-01 1.86316513e-01 1.86154989e-01 1.85993884e-01 1.85833197e-01 + 1.85672925e-01 1.85513068e-01 1.85353622e-01 1.85194587e-01 1.85035961e-01 + 1.84877742e-01 1.84719927e-01 1.84562517e-01 1.84405508e-01 1.84248899e-01 + 1.84092688e-01 1.83936874e-01 1.83781455e-01 1.83626429e-01 1.83471795e-01 + 1.83317551e-01 1.83163695e-01 1.83010226e-01 1.82857142e-01 1.82704442e-01 + 1.82552123e-01 1.82400185e-01 1.82248626e-01 1.82097444e-01 1.81946637e-01 + 1.81796204e-01 1.81646144e-01 1.81496455e-01 1.81347136e-01 1.81198184e-01 + 1.81049599e-01 1.80901378e-01 1.80753522e-01 1.80606027e-01 1.80458892e-01 + 1.80312117e-01 1.80165699e-01 1.80019637e-01 1.79873930e-01 1.79728576e-01 + 1.79583574e-01 1.79438922e-01 1.79294620e-01 1.79150665e-01 1.79007056e-01 + 1.78863792e-01 1.78720871e-01 1.78578292e-01 1.78436054e-01 1.78294156e-01 + 1.78152595e-01 1.78011371e-01 1.77870482e-01 1.77729928e-01 1.77589706e-01 + 1.77449815e-01 1.77310255e-01 1.77171023e-01 1.77032119e-01 1.76893540e-01 + 1.76755287e-01 1.76617358e-01 1.76479751e-01 1.76342465e-01 1.76205499e-01 + 1.76068851e-01 1.75932521e-01 1.75796507e-01 1.75660808e-01 1.75525423e-01 + 1.75390351e-01 1.75255589e-01 1.75121138e-01 1.74986996e-01 1.74853162e-01 + 1.74719634e-01 1.74586412e-01 1.74453494e-01 1.74320879e-01 1.74188566e-01 + 1.74056554e-01 1.73924842e-01 1.73793428e-01 1.73662312e-01 1.73531492e-01 + 1.73400967e-01 1.73270736e-01 1.73140798e-01 1.73011152e-01 1.72881797e-01 + 1.72752732e-01 1.72623955e-01 1.72495466e-01 1.72367263e-01 1.72239346e-01 + 1.72111713e-01 1.71984363e-01 1.71857296e-01 1.71730510e-01 1.71604004e-01 + 1.71477777e-01 1.71351828e-01 1.71226157e-01 1.71100761e-01 1.70975641e-01 + 1.70850795e-01 1.70726222e-01 1.70601921e-01 1.70477891e-01 1.70354131e-01 + 1.70230640e-01 1.70107418e-01 1.69984462e-01 1.69861773e-01 1.69739349e-01 + 1.69617190e-01 1.69495294e-01 1.69373660e-01 1.69252288e-01 1.69131176e-01 + 1.69010324e-01 1.68889731e-01 1.68769395e-01 1.68649317e-01 1.68529494e-01 + 1.68409926e-01 1.68290613e-01 1.68171552e-01 1.68052744e-01 1.67934188e-01 + 1.67815882e-01 1.67697825e-01 1.67580018e-01 1.67462458e-01 1.67345146e-01 + 1.67228079e-01 1.67111258e-01 1.66994682e-01 1.66878349e-01 1.66762259e-01 + 1.66646411e-01 1.66530804e-01 1.66415437e-01 1.66300309e-01 1.66185421e-01 + 1.66070770e-01 1.65956356e-01 1.65842178e-01 1.65728235e-01 1.65614527e-01 + 1.65501053e-01 1.65387812e-01 1.65274803e-01 1.65162025e-01 1.65049477e-01 + 1.64937160e-01 1.64825071e-01 1.64713211e-01 1.64601578e-01 1.64490172e-01 + 1.64378991e-01 1.64268036e-01 1.64157305e-01 1.64046798e-01 1.63936514e-01 + 1.63826452e-01 1.63716611e-01 1.63606991e-01 1.63497591e-01 1.63388409e-01 + 1.63279447e-01 1.63170702e-01 1.63062174e-01 1.62953862e-01 1.62845766e-01 + 1.62737885e-01 1.62630217e-01 1.62522764e-01 1.62415523e-01 1.62308493e-01 + 1.62201676e-01 1.62095069e-01 1.61988671e-01 1.61882483e-01 1.61776504e-01 + 1.61670732e-01 1.61565168e-01 1.61459810e-01 1.61354658e-01 1.61249711e-01 + 1.61144969e-01 1.61040431e-01 1.60936095e-01 1.60831963e-01 1.60728032e-01 + 1.60624302e-01 1.60520773e-01 1.60417444e-01 1.60314314e-01 1.60211383e-01 + 1.60108650e-01 1.60006114e-01 1.59903775e-01 1.59801632e-01 1.59699684e-01 + 1.59597932e-01 1.59496373e-01 1.59395009e-01 1.59293837e-01 1.59192858e-01 + 1.59092070e-01 1.58991474e-01 1.58891068e-01 1.58790852e-01 1.58690826e-01 + 1.58590988e-01 1.58491339e-01 1.58391877e-01 1.58292602e-01 1.58193514e-01 + 1.58094612e-01 1.57995894e-01 1.57897362e-01 1.57799013e-01 1.57700849e-01 + 1.57602867e-01 1.57505067e-01 1.57407450e-01 1.57310013e-01 1.57212758e-01 + 1.57115682e-01 1.57018786e-01 1.56922069e-01 1.56825531e-01 1.56729171e-01 + 1.56632988e-01 1.56536982e-01 1.56441152e-01 1.56345498e-01 1.56250019e-01 + 1.56154715e-01 1.56059585e-01 1.55964629e-01 1.55869846e-01 1.55775235e-01 + 1.55680797e-01 1.55586530e-01 1.55492434e-01 1.55398509e-01 1.55304754e-01 + 1.55211168e-01 1.55117751e-01 1.55024502e-01 1.54931422e-01 1.54838509e-01 + 1.54745763e-01 1.54653183e-01 1.54560770e-01 1.54468522e-01 1.54376439e-01 + 1.54284520e-01 1.54192765e-01 1.54101174e-01 1.54009746e-01 1.53918481e-01 + 1.53827377e-01 1.53736435e-01 1.53645654e-01 1.53555034e-01 1.53464574e-01 + 1.53374274e-01 1.53284132e-01 1.53194150e-01 1.53104326e-01 1.53014660e-01 + 1.52925151e-01 1.52835798e-01 1.52746603e-01 1.52657563e-01 1.52568679e-01 + 1.52479950e-01 1.52391376e-01 1.52302955e-01 1.52214689e-01 1.52126576e-01 + 1.52038615e-01 1.51950807e-01 1.51863151e-01 1.51775647e-01 1.51688293e-01 + 1.51601091e-01 1.51514038e-01 1.51427135e-01 1.51340382e-01 1.51253778e-01 + 1.51167322e-01 1.51081014e-01 1.50994854e-01 1.50908841e-01 1.50822975e-01 + 1.50737255e-01 1.50651681e-01 1.50566253e-01 1.50480970e-01 1.50395832e-01 + 1.50310838e-01 1.50225988e-01 1.50141281e-01 1.50056718e-01 1.49972298e-01 + 1.49888019e-01 1.49803883e-01 1.49719888e-01 1.49636035e-01 1.49552322e-01 + 1.49468749e-01 1.49385316e-01 1.49302023e-01 1.49218869e-01 1.49135854e-01 + 1.49052977e-01 1.48970239e-01 1.48887638e-01 1.48805174e-01 1.48722847e-01 + 1.48640656e-01 1.48558602e-01 1.48476683e-01 1.48394900e-01 1.48313252e-01 + 1.48231738e-01 1.48150359e-01 1.48069113e-01 1.47988001e-01 1.47907022e-01 + 1.47826176e-01 1.47745463e-01 1.47664881e-01 1.47584431e-01 1.47504113e-01 + 1.47423925e-01 1.47343868e-01 1.47263942e-01 1.47184145e-01 1.47104478e-01 + 1.47024940e-01 1.46945531e-01 1.46866251e-01 1.46787099e-01 1.46708074e-01 + 1.46629177e-01 1.46550407e-01 1.46471764e-01 1.46393248e-01 1.46314857e-01 + 1.46236593e-01 1.46158454e-01 1.46080440e-01 1.46002551e-01 1.45924786e-01 + 1.45847145e-01 1.45769628e-01 1.45692235e-01 1.45614965e-01 1.45537817e-01 + 1.45460792e-01 1.45383890e-01 1.45307109e-01 1.45230449e-01 1.45153911e-01 + 1.45077494e-01 1.45001197e-01 1.44925021e-01 1.44848964e-01 1.44773027e-01 + 1.44697209e-01 1.44621511e-01 1.44545931e-01 1.44470469e-01 1.44395126e-01 + 1.44319900e-01 1.44244791e-01 1.44169800e-01 1.44094926e-01 1.44020168e-01 + 1.43945527e-01 1.43871001e-01 1.43796591e-01 1.43722296e-01 1.43648117e-01 + 1.43574052e-01 1.43500101e-01 1.43426265e-01 1.43352542e-01 1.43278934e-01 + 1.43205438e-01 1.43132055e-01 1.43058785e-01 1.42985628e-01 1.42912583e-01 + 1.42839649e-01 1.42766827e-01 1.42694116e-01 1.42621516e-01 1.42549027e-01 + 1.42476649e-01 1.42404380e-01 1.42332222e-01 1.42260172e-01 1.42188233e-01 + 1.42116402e-01 1.42044680e-01 1.41973066e-01 1.41901561e-01 1.41830164e-01 + 1.41758874e-01 1.41687692e-01 1.41616617e-01 1.41545648e-01 1.41474786e-01 + 1.41404031e-01 1.41333382e-01 1.41262838e-01 1.41192400e-01 1.41122067e-01 + 1.41051839e-01 1.40981716e-01 1.40911698e-01 1.40841783e-01 1.40771973e-01 + 1.40702266e-01 1.40632663e-01 1.40563163e-01 1.40493766e-01 1.40424471e-01 + 1.40355279e-01 1.40286189e-01 1.40217202e-01 1.40148315e-01 1.40079531e-01 + 1.40010847e-01 1.39942264e-01 1.39873782e-01 1.39805401e-01 1.39737119e-01 + 1.39668938e-01 1.39600856e-01 1.39532874e-01 1.39464991e-01 1.39397207e-01 + 1.39329522e-01 1.39261935e-01 1.39194446e-01 1.39127056e-01 1.39059763e-01 + 1.38992568e-01 1.38925470e-01 1.38858469e-01 1.38791565e-01 1.38724758e-01 + 1.38658047e-01 1.38591432e-01 1.38524913e-01 1.38458490e-01 1.38392162e-01 + 1.38325930e-01 1.38259792e-01 1.38193750e-01 1.38127801e-01 1.38061947e-01 + 1.37996188e-01 1.37930522e-01 1.37864950e-01 1.37799471e-01 1.37734085e-01 + 1.37668793e-01 1.37603593e-01 1.37538485e-01 1.37473471e-01 1.37408548e-01 + 1.37343717e-01 1.37278977e-01 1.37214330e-01 1.37149773e-01 1.37085308e-01 + 1.37020933e-01 1.36956649e-01 1.36892455e-01 1.36828351e-01 1.36764338e-01 + 1.36700414e-01 1.36636580e-01 1.36572835e-01 1.36509179e-01 1.36445612e-01 + 1.36382134e-01 1.36318745e-01 1.36255443e-01 1.36192230e-01 1.36129105e-01 + 1.36066067e-01 1.36003117e-01 1.35940254e-01 1.35877478e-01 1.35814789e-01 + 1.35752187e-01 1.35689672e-01 1.35627242e-01 1.35564899e-01 1.35502641e-01 + 1.35440470e-01 1.35378384e-01 1.35316383e-01 1.35254467e-01 1.35192636e-01 + 1.35130890e-01 1.35069228e-01 1.35007651e-01 1.34946158e-01 1.34884748e-01 + 1.34823423e-01 1.34762181e-01 1.34701022e-01 1.34639947e-01 1.34578955e-01 + 1.34518045e-01 1.34457218e-01 1.34396474e-01 1.34335812e-01 1.34275232e-01 + 1.34214733e-01 1.34154317e-01 1.34093982e-01 1.34033728e-01 1.33973556e-01 + 1.33913464e-01 1.33853453e-01 1.33793523e-01 1.33733673e-01 1.33673904e-01 + 1.33614214e-01 1.33554605e-01 1.33495075e-01 1.33435625e-01 1.33376254e-01 + 1.33316962e-01 1.33257749e-01 1.33198615e-01 1.33139560e-01 1.33080583e-01 + 1.33021685e-01 1.32962864e-01 1.32904122e-01 1.32845457e-01 1.32786870e-01 + 1.32728361e-01 1.32669928e-01 1.32611573e-01 1.32553295e-01 1.32495093e-01 + 1.32436968e-01 1.32378920e-01 1.32320948e-01 1.32263052e-01 1.32205232e-01 + 1.32147487e-01 1.32089818e-01 1.32032225e-01 1.31974707e-01 1.31917264e-01 + 1.31859896e-01 1.31802603e-01 1.31745384e-01 1.31688240e-01 1.31631170e-01 + 1.31574174e-01 1.31517252e-01 1.31460404e-01 1.31403630e-01 1.31346929e-01 + 1.31290301e-01 1.31233747e-01 1.31177266e-01 1.31120857e-01 1.31064522e-01 + 1.31008258e-01 1.30952068e-01 1.30895949e-01 1.30839903e-01 1.30783928e-01 + 1.30728025e-01 1.30672194e-01 1.30616435e-01 1.30560746e-01 1.30505129e-01 + 1.30449583e-01 1.30394108e-01 1.30338703e-01 1.30283369e-01 1.30228105e-01 + 1.30172912e-01 1.30117789e-01 1.30062736e-01 1.30007752e-01 1.29952839e-01 + 1.29897994e-01 1.29843219e-01 1.29788514e-01 1.29733877e-01 1.29679310e-01 + 1.29624811e-01 1.29570381e-01 1.29516019e-01 1.29461726e-01 1.29407501e-01 + 1.29353344e-01 1.29299255e-01 1.29245234e-01 1.29191280e-01 1.29137394e-01 + 1.29083575e-01 1.29029824e-01 1.28976140e-01 1.28922522e-01 1.28868972e-01 + 1.28815488e-01 1.28762070e-01 1.28708719e-01 1.28655435e-01 1.28602216e-01 + 1.28549063e-01 1.28495977e-01 1.28442955e-01 1.28390000e-01 1.28337110e-01 + 1.28284285e-01 1.28231526e-01 1.28178831e-01 1.28126202e-01 1.28073637e-01 + 1.28021137e-01 1.27968701e-01 1.27916330e-01 1.27864023e-01 1.27811780e-01 + 1.27759601e-01 1.27707486e-01 1.27655434e-01 1.27603447e-01 1.27551522e-01 + 1.27499661e-01 1.27447864e-01 1.27396129e-01 1.27344457e-01 1.27292848e-01 + 1.27241302e-01 1.27189818e-01 1.27138397e-01 1.27087038e-01 1.27035742e-01 + 1.26984507e-01 1.26933334e-01 1.26882223e-01 1.26831174e-01 1.26780187e-01 + 1.26729260e-01 1.26678396e-01 1.26627592e-01 1.26576849e-01 1.26526168e-01 + 1.26475547e-01 1.26424987e-01 1.26374487e-01 1.26324048e-01 1.26273670e-01 + 1.26223351e-01 1.26173093e-01 1.26122894e-01 1.26072756e-01 1.26022677e-01 + 1.25972658e-01 1.25922698e-01 1.25872798e-01 1.25822957e-01 1.25773176e-01 + 1.25723453e-01 1.25673789e-01 1.25624184e-01 1.25574638e-01 1.25525150e-01 + 1.25475721e-01 1.25426350e-01 1.25377037e-01 1.25327782e-01 1.25278586e-01 + 1.25229447e-01 1.25180366e-01 1.25131343e-01 1.25082377e-01 1.25033469e-01 + 1.24984618e-01 1.24935824e-01 1.24887088e-01 1.24838408e-01 1.24789785e-01 + 1.24741219e-01 1.24692710e-01 1.24644257e-01 1.24595861e-01 1.24547521e-01 + 1.24499237e-01 1.24451010e-01 1.24402838e-01 1.24354722e-01 1.24306662e-01 + 1.24258658e-01 1.24210709e-01 1.24162816e-01 1.24114978e-01 1.24067195e-01 + 1.24019468e-01 1.23971795e-01 1.23924178e-01 1.23876615e-01 1.23829107e-01 + 1.23781654e-01 1.23734255e-01 1.23686910e-01 1.23639620e-01 1.23592384e-01 + 1.23545202e-01 1.23498075e-01 1.23451001e-01 1.23403980e-01 1.23357014e-01 + 1.23310101e-01 1.23263242e-01 1.23216436e-01 1.23169683e-01 1.23122983e-01 + 1.23076337e-01 1.23029743e-01 1.22983202e-01 1.22936715e-01 1.22890279e-01 + 1.22843897e-01 1.22797567e-01 1.22751289e-01 1.22705063e-01 1.22658890e-01 + 1.22612769e-01 1.22566700e-01 1.22520682e-01 1.22474717e-01 1.22428803e-01 + 1.22382941e-01 1.22337130e-01 1.22291371e-01 1.22245663e-01 1.22200006e-01 + 1.22154400e-01 1.22108845e-01 1.22063342e-01 1.22017889e-01 1.21972487e-01 + 1.21927135e-01 1.21881834e-01 1.21836584e-01 1.21791383e-01 1.21746234e-01 + 1.21701134e-01 1.21656084e-01 1.21611085e-01 1.21566135e-01 1.21521235e-01 + 1.21476385e-01 1.21431584e-01 1.21386833e-01 1.21342131e-01 1.21297479e-01 + 1.21252876e-01 1.21208322e-01 1.21163817e-01 1.21119362e-01 1.21074955e-01 + 1.21030597e-01 1.20986287e-01 1.20942026e-01 1.20897814e-01 1.20853651e-01 + 1.20809535e-01 1.20765468e-01 1.20721449e-01 1.20677478e-01 1.20633555e-01 + 1.20589681e-01 1.20545854e-01 1.20502074e-01 1.20458343e-01 1.20414659e-01 + 1.20371022e-01 1.20327433e-01 1.20283891e-01 1.20240396e-01 1.20196949e-01 + 1.20153549e-01 1.20110195e-01 1.20066889e-01 1.20023629e-01 1.19980416e-01 + 1.19937250e-01 1.19894130e-01 1.19851056e-01 1.19808030e-01 1.19765049e-01 + 1.19722115e-01 1.19679226e-01 1.19636384e-01 1.19593588e-01 1.19550838e-01 + 1.19508133e-01 1.19465474e-01 1.19422861e-01 1.19380294e-01 1.19337772e-01 + 1.19295295e-01 1.19252863e-01 1.19210477e-01 1.19168136e-01 1.19125841e-01 + 1.19083590e-01 1.19041384e-01 1.18999223e-01 1.18957106e-01 1.18915035e-01 + 1.18873008e-01 1.18831025e-01 1.18789087e-01 1.18747194e-01 1.18705344e-01 + 1.18663539e-01 1.18621778e-01 1.18580061e-01 1.18538388e-01 1.18496759e-01 + 1.18455174e-01 1.18413632e-01 1.18372134e-01 1.18330680e-01 1.18289269e-01 + 1.18247902e-01 1.18206578e-01 1.18165298e-01 1.18124060e-01 1.18082866e-01 + 1.18041715e-01 1.18000607e-01 1.17959541e-01 1.17918519e-01 1.17877539e-01 + 1.17836602e-01 1.17795708e-01 1.17754856e-01 1.17714047e-01 1.17673280e-01 + 1.17632556e-01 1.17591873e-01 1.17551233e-01 1.17510635e-01 1.17470079e-01 + 1.17429565e-01 1.17389093e-01 1.17348662e-01 1.17308274e-01 1.17267927e-01 + 1.17227622e-01 1.17187358e-01 1.17147135e-01 1.17106955e-01 1.17066815e-01 + 1.17026717e-01 1.16986659e-01 1.16946643e-01 1.16906668e-01 1.16866734e-01 + 1.16826841e-01 1.16786988e-01 1.16747177e-01 1.16707406e-01 1.16667676e-01 + 1.16627986e-01 1.16588337e-01 1.16548728e-01 1.16509159e-01 1.16469631e-01 + 1.16430143e-01 1.16390695e-01 1.16351287e-01 1.16311919e-01 1.16272591e-01 + 1.16233303e-01 1.16194055e-01 1.16154846e-01 1.16115678e-01 1.16076548e-01 + 1.16037459e-01 1.15998408e-01 1.15959397e-01 1.15920426e-01 1.15881494e-01 + 1.15842601e-01 1.15803747e-01 1.15764932e-01 1.15726156e-01 1.15687419e-01 + 1.15648721e-01 1.15610062e-01 1.15571441e-01 1.15532859e-01 1.15494316e-01 + 1.15455812e-01 1.15417345e-01 1.15378918e-01 1.15340528e-01 1.15302177e-01 + 1.15263864e-01 1.15225590e-01 1.15187353e-01 1.15149155e-01 1.15110994e-01 + 1.15072871e-01 1.15034786e-01 1.14996739e-01 1.14958730e-01 1.14920759e-01 + 1.14882824e-01 1.14844928e-01 1.14807069e-01 1.14769247e-01 1.14731463e-01 + 1.14693716e-01 1.14656006e-01 1.14618334e-01 1.14580699e-01 1.14543100e-01 + 1.14505539e-01 1.14468014e-01 1.14430527e-01 1.14393076e-01 1.14355662e-01 + 1.14318284e-01 1.14280944e-01 1.14243640e-01 1.14206372e-01 1.14169141e-01 + 1.14131946e-01 1.14094787e-01 1.14057665e-01 1.14020579e-01 1.13983529e-01 + 1.13946515e-01 1.13909538e-01 1.13872596e-01 1.13835690e-01 1.13798820e-01 + 1.13761986e-01 1.13725188e-01 1.13688425e-01 1.13651698e-01 1.13615006e-01 + 1.13578350e-01 1.13541730e-01 1.13505144e-01 1.13468595e-01 1.13432080e-01 + 1.13395601e-01 1.13359156e-01 1.13322747e-01 1.13286373e-01 1.13250035e-01 + 1.13213730e-01 1.13177461e-01 1.13141227e-01 1.13105028e-01 1.13068863e-01 + 1.13032733e-01 1.12996637e-01 1.12960576e-01 1.12924550e-01 1.12888558e-01 + 1.12852600e-01 1.12816677e-01 1.12780788e-01 1.12744933e-01 1.12709112e-01 + 1.12673326e-01 1.12637574e-01 1.12601855e-01 1.12566171e-01 1.12530520e-01 + 1.12494904e-01 1.12459321e-01 1.12423772e-01 1.12388256e-01 1.12352774e-01 + 1.12317326e-01 1.12281911e-01 1.12246530e-01 1.12211182e-01 1.12175868e-01 + 1.12140587e-01 1.12105339e-01 1.12070125e-01 1.12034943e-01 1.11999795e-01 + 1.11964679e-01 1.11929597e-01 1.11894548e-01 1.11859532e-01 1.11824548e-01 + 1.11789597e-01 1.11754679e-01 1.11719794e-01 1.11684941e-01 1.11650121e-01 + 1.11615334e-01 1.11580579e-01 1.11545856e-01 1.11511166e-01 1.11476508e-01 + 1.11441883e-01 1.11407289e-01 1.11372728e-01 1.11338199e-01 1.11303703e-01 + 1.11269238e-01 1.11234805e-01 1.11200404e-01 1.11166035e-01 1.11131698e-01 + 1.11097393e-01 1.11063119e-01 1.11028877e-01 1.10994667e-01 1.10960489e-01 + 1.10926342e-01 1.10892226e-01 1.10858142e-01 1.10824089e-01 1.10790068e-01 + 1.10756078e-01 1.10722119e-01 1.10688192e-01 1.10654295e-01 1.10620430e-01 + 1.10586596e-01 1.10552793e-01 1.10519021e-01 1.10485279e-01 1.10451569e-01 + 1.10417890e-01 1.10384241e-01 1.10350623e-01 1.10317036e-01 1.10283479e-01 + 1.10249953e-01 1.10216458e-01 1.10182993e-01 1.10149558e-01 1.10116154e-01 + 1.10082780e-01 1.10049437e-01 1.10016124e-01 1.09982841e-01 1.09949588e-01 + 1.09916366e-01 1.09883174e-01 1.09850011e-01 1.09816879e-01 1.09783776e-01 + 1.09750704e-01 1.09717661e-01 1.09684648e-01 1.09651665e-01 1.09618712e-01 + 1.09585789e-01 1.09552895e-01 1.09520030e-01 1.09487196e-01 1.09454390e-01 + 1.09421615e-01 1.09388868e-01 1.09356151e-01 1.09323464e-01 1.09290805e-01 + 1.09258176e-01 1.09225576e-01 1.09193006e-01 1.09160464e-01 1.09127951e-01 + 1.09095468e-01 1.09063013e-01 1.09030588e-01 1.08998191e-01 1.08965824e-01 + 1.08933485e-01 1.08901174e-01 1.08868893e-01 1.08836640e-01 1.08804416e-01 + 1.08772220e-01 1.08740054e-01 1.08707915e-01 1.08675805e-01 1.08643724e-01 + 1.08611671e-01 1.08579646e-01 1.08547649e-01 1.08515681e-01 1.08483741e-01 + 1.08451829e-01 1.08419946e-01 1.08388090e-01 1.08356263e-01 1.08324463e-01 + 1.08292692e-01 1.08260948e-01 1.08229233e-01 1.08197545e-01 1.08165885e-01 + 1.08134253e-01 1.08102648e-01 1.08071072e-01 1.08039523e-01 1.08008001e-01 + 1.07976507e-01 1.07945041e-01 1.07913602e-01 1.07882191e-01 1.07850807e-01 + 1.07819450e-01 1.07788121e-01 1.07756819e-01 1.07725544e-01 1.07694296e-01 + 1.07663076e-01 1.07631883e-01 1.07600717e-01 1.07569578e-01 1.07538466e-01 + 1.07507381e-01 1.07476322e-01 1.07445291e-01 1.07414287e-01 1.07383309e-01 + 1.07352359e-01 1.07321435e-01 1.07290537e-01 1.07259667e-01 1.07228823e-01 + 1.07198005e-01 1.07167214e-01 1.07136450e-01 1.07105712e-01 1.07075001e-01 + 1.07044316e-01 1.07013657e-01 1.06983025e-01 1.06952419e-01 1.06921839e-01 + 1.06891286e-01 1.06860758e-01 1.06830257e-01 1.06799782e-01 1.06769333e-01 + 1.06738910e-01 1.06708513e-01 1.06678142e-01 1.06647796e-01 1.06617477e-01 + 1.06587184e-01 1.06556916e-01 1.06526674e-01 1.06496458e-01 1.06466268e-01 + 1.06436103e-01 1.06405964e-01 1.06375850e-01 1.06345762e-01 1.06315700e-01 + 1.06285663e-01 1.06255651e-01 1.06225665e-01 1.06195704e-01 1.06165769e-01 + 1.06135859e-01 1.06105974e-01 1.06076114e-01 1.06046280e-01 1.06016470e-01 + 1.05986686e-01 1.05956927e-01 1.05927193e-01 1.05897484e-01 1.05867800e-01 + 1.05838141e-01 1.05808507e-01 1.05778897e-01 1.05749313e-01 1.05719753e-01 + 1.05690218e-01 1.05660708e-01 1.05631223e-01 1.05601762e-01 1.05572326e-01 + 1.05542914e-01 1.05513528e-01 1.05484165e-01 1.05454827e-01 1.05425514e-01 + 1.05396225e-01 1.05366960e-01 1.05337720e-01 1.05308504e-01 1.05279312e-01 + 1.05250145e-01 1.05221002e-01 1.05191883e-01 1.05162788e-01 1.05133717e-01 + 1.05104671e-01 1.05075648e-01 1.05046650e-01 1.05017675e-01 1.04988725e-01 + 1.04959798e-01 1.04930896e-01 1.04902017e-01 1.04873162e-01 1.04844331e-01 + 1.04815523e-01 1.04786740e-01 1.04757980e-01 1.04729243e-01 1.04700531e-01 + 1.04671841e-01 1.04643176e-01 1.04614534e-01 1.04585916e-01 1.04557321e-01 + 1.04528749e-01 1.04500201e-01 1.04471676e-01 1.04443175e-01 1.04414697e-01 + 1.04386242e-01 1.04357810e-01 1.04329402e-01 1.04301017e-01 1.04272655e-01 + 1.04244316e-01 1.04216000e-01 1.04187707e-01 1.04159437e-01 1.04131191e-01 + 1.04102967e-01 1.04074766e-01 1.04046588e-01 1.04018433e-01 1.03990301e-01 + 1.03962192e-01 1.03934105e-01 1.03906041e-01 1.03878000e-01 1.03849982e-01 + 1.03821986e-01 1.03794013e-01 1.03766062e-01 1.03738134e-01 1.03710229e-01 + 1.03682346e-01 1.03654486e-01 1.03626648e-01 1.03598832e-01 1.03571039e-01 + 1.03543268e-01 1.03515520e-01 1.03487793e-01 1.03460089e-01 1.03432408e-01 + 1.03404748e-01 1.03377111e-01 1.03349496e-01 1.03321903e-01 1.03294332e-01 + 1.03266783e-01 1.03239256e-01 1.03211751e-01 1.03184268e-01 1.03156807e-01 + 1.03129368e-01 1.03101951e-01 1.03074556e-01 1.03047182e-01 1.03019831e-01 + 1.02992501e-01 1.02965192e-01 1.02937906e-01 1.02910641e-01 1.02883398e-01 + 1.02856177e-01 1.02828977e-01 1.02801798e-01 1.02774642e-01 1.02747506e-01 + 1.02720392e-01 1.02693300e-01 1.02666229e-01 1.02639180e-01 1.02612151e-01 + 1.02585145e-01 1.02558159e-01 1.02531195e-01 1.02504252e-01 1.02477330e-01 + 1.02450430e-01 1.02423550e-01 1.02396692e-01 1.02369855e-01 1.02343039e-01 + 1.02316244e-01 1.02289470e-01 1.02262717e-01 1.02235985e-01 1.02209274e-01 + 1.02182584e-01 1.02155915e-01 1.02129267e-01 1.02102639e-01 1.02076033e-01 + 1.02049447e-01 1.02022882e-01 1.01996338e-01 1.01969814e-01 1.01943311e-01 + 1.01916829e-01 1.01890367e-01 1.01863926e-01 1.01837505e-01 1.01811106e-01 + 1.01784726e-01 1.01758367e-01 1.01732029e-01 1.01705711e-01 1.01679413e-01 + 1.01653136e-01 1.01626879e-01 1.01600643e-01 1.01574426e-01 1.01548230e-01 + 1.01522055e-01 1.01495899e-01 1.01469764e-01 1.01443649e-01 1.01417554e-01 + 1.01391479e-01 1.01365425e-01 1.01339390e-01 1.01313376e-01 1.01287381e-01 + 1.01261406e-01 1.01235452e-01 1.01209517e-01 1.01183603e-01 1.01157708e-01 + 1.01131833e-01 1.01105978e-01 1.01080143e-01 1.01054327e-01 1.01028532e-01 + 1.01002756e-01 1.00976999e-01 1.00951263e-01 1.00925546e-01 1.00899849e-01 + 1.00874171e-01 1.00848513e-01 1.00822875e-01 1.00797256e-01 1.00771656e-01 + 1.00746077e-01 1.00720516e-01 1.00694975e-01 1.00669454e-01 1.00643952e-01 + 1.00618469e-01 1.00593005e-01 1.00567561e-01 1.00542136e-01 1.00516731e-01 + 1.00491345e-01 1.00465978e-01 1.00440630e-01 1.00415301e-01 1.00389992e-01 + 1.00364701e-01 1.00339430e-01 1.00314178e-01 1.00288944e-01 1.00263730e-01 + 1.00238535e-01 1.00213359e-01 1.00188202e-01 1.00163064e-01 1.00137944e-01 + 1.00112844e-01 1.00087762e-01 1.00062700e-01 1.00037656e-01 1.00012631e-01 + 9.99876242e-02 9.99626366e-02 9.99376677e-02 9.99127176e-02 9.98877861e-02 + 9.98628732e-02 9.98379790e-02 9.98131034e-02 9.97882464e-02 9.97634079e-02 + 9.97385880e-02 9.97137866e-02 9.96890037e-02 9.96642393e-02 9.96394933e-02 + 9.96147657e-02 9.95900565e-02 9.95653657e-02 9.95406933e-02 9.95160392e-02 + 9.94914034e-02 9.94667859e-02 9.94421867e-02 9.94176057e-02 9.93930429e-02 + 9.93684983e-02 9.93439719e-02 9.93194636e-02 9.92949735e-02 9.92705015e-02 + 9.92460476e-02 9.92216117e-02 9.91971939e-02 9.91727940e-02 9.91484122e-02 + 9.91240484e-02 9.90997025e-02 9.90753745e-02 9.90510645e-02 9.90267723e-02 + 9.90024980e-02 9.89782415e-02 9.89540029e-02 9.89297821e-02 9.89055790e-02 + 9.88813937e-02 9.88572261e-02 9.88330763e-02 9.88089441e-02 9.87848296e-02 + 9.87607327e-02 9.87366535e-02 9.87125919e-02 9.86885478e-02 9.86645213e-02 + 9.86405124e-02 9.86165209e-02 9.85925470e-02 9.85685906e-02 9.85446516e-02 + 9.85207300e-02 9.84968258e-02 9.84729391e-02 9.84490697e-02 9.84252176e-02 + 9.84013829e-02 9.83775655e-02 9.83537654e-02 9.83299825e-02 9.83062169e-02 + 9.82824685e-02 9.82587374e-02 9.82350233e-02 9.82113265e-02 9.81876468e-02 + 9.81639842e-02 9.81403387e-02 9.81167103e-02 9.80930990e-02 9.80695047e-02 + 9.80459274e-02 9.80223671e-02 9.79988238e-02 9.79752974e-02 9.79517880e-02 + 9.79282955e-02 9.79048199e-02 9.78813611e-02 9.78579192e-02 9.78344942e-02 + 9.78110859e-02 9.77876945e-02 9.77643198e-02 9.77409619e-02 9.77176207e-02 + 9.76942963e-02 9.76709885e-02 9.76476974e-02 9.76244230e-02 9.76011651e-02 + 9.75779239e-02 9.75546993e-02 9.75314913e-02 9.75082999e-02 9.74851249e-02 + 9.74619665e-02 9.74388246e-02 9.74156991e-02 9.73925901e-02 9.73694976e-02 + 9.73464215e-02 9.73233617e-02 9.73003184e-02 9.72772914e-02 9.72542807e-02 + 9.72312864e-02 9.72083084e-02 9.71853467e-02 9.71624012e-02 9.71394719e-02 + 9.71165589e-02 9.70936621e-02 9.70707815e-02 9.70479171e-02 9.70250688e-02 + 9.70022366e-02 9.69794205e-02 9.69566206e-02 9.69338367e-02 9.69110688e-02 + 9.68883170e-02 9.68655813e-02 9.68428615e-02 9.68201577e-02 9.67974698e-02 + 9.67747979e-02 9.67521419e-02 9.67295019e-02 9.67068777e-02 9.66842693e-02 + 9.66616769e-02 9.66391002e-02 9.66165394e-02 9.65939943e-02 9.65714651e-02 + 9.65489516e-02 9.65264538e-02 9.65039718e-02 9.64815054e-02 9.64590547e-02 + 9.64366197e-02 9.64142004e-02 9.63917967e-02 9.63694086e-02 9.63470360e-02 + 9.63246791e-02 9.63023377e-02 9.62800118e-02 9.62577015e-02 9.62354067e-02 + 9.62131273e-02 9.61908635e-02 9.61686150e-02 9.61463820e-02 9.61241644e-02 + 9.61019623e-02 9.60797754e-02 9.60576040e-02 9.60354479e-02 9.60133071e-02 + 9.59911816e-02 9.59690714e-02 9.59469765e-02 9.59248968e-02 9.59028324e-02 + 9.58807832e-02 9.58587492e-02 9.58367303e-02 9.58147267e-02 9.57927382e-02 + 9.57707648e-02 9.57488065e-02 9.57268633e-02 9.57049352e-02 9.56830222e-02 + 9.56611242e-02 9.56392413e-02 9.56173733e-02 9.55955204e-02 9.55736824e-02 + 9.55518594e-02 9.55300513e-02 9.55082582e-02 9.54864799e-02 9.54647166e-02 + 9.54429681e-02 9.54212345e-02 9.53995157e-02 9.53778117e-02 9.53561226e-02 + 9.53344482e-02 9.53127886e-02 9.52911438e-02 9.52695137e-02 9.52478984e-02 + 9.52262977e-02 9.52047117e-02 9.51831404e-02 9.51615838e-02 9.51400418e-02 + 9.51185144e-02 9.50970016e-02 9.50755034e-02 9.50540198e-02 9.50325508e-02 + 9.50110963e-02 9.49896563e-02 9.49682308e-02 9.49468198e-02 9.49254233e-02 + 9.49040412e-02 9.48826736e-02 9.48613204e-02 9.48399817e-02 9.48186573e-02 + 9.47973473e-02 9.47760516e-02 9.47547703e-02 9.47335034e-02 9.47122507e-02 + 9.46910123e-02 9.46697883e-02 9.46485784e-02 9.46273829e-02 9.46062015e-02 + 9.45850344e-02 9.45638815e-02 9.45427428e-02 9.45216182e-02 9.45005078e-02 + 9.44794116e-02 9.44583294e-02 9.44372614e-02 9.44162074e-02 9.43951676e-02 + 9.43741418e-02 9.43531300e-02 9.43321323e-02 9.43111485e-02 9.42901788e-02 + 9.42692231e-02 9.42482813e-02 9.42273534e-02 9.42064395e-02 9.41855396e-02 + 9.41646535e-02 9.41437813e-02 9.41229230e-02 9.41020785e-02 9.40812479e-02 + 9.40604311e-02 9.40396282e-02 9.40188390e-02 9.39980636e-02 9.39773020e-02 + 9.39565541e-02 9.39358200e-02 9.39150995e-02 9.38943928e-02 9.38736998e-02 + 9.38530204e-02 9.38323548e-02 9.38117027e-02 9.37910643e-02 9.37704395e-02 + 9.37498283e-02 9.37292307e-02 9.37086466e-02 9.36880762e-02 9.36675192e-02 + 9.36469758e-02 9.36264459e-02 9.36059295e-02 9.35854265e-02 9.35649371e-02 + 9.35444611e-02 9.35239985e-02 9.35035493e-02 9.34831136e-02 9.34626912e-02 + 9.34422823e-02 9.34218866e-02 9.34015044e-02 9.33811355e-02 9.33607798e-02 + 9.33404375e-02 9.33201085e-02 9.32997928e-02 9.32794903e-02 9.32592011e-02 + 9.32389251e-02 9.32186624e-02 9.31984128e-02 9.31781764e-02 9.31579532e-02 + 9.31377432e-02 9.31175463e-02 9.30973626e-02 9.30771919e-02 9.30570344e-02 + 9.30368899e-02 9.30167586e-02 9.29966403e-02 9.29765350e-02 9.29564428e-02 + 9.29363636e-02 9.29162974e-02 9.28962442e-02 9.28762040e-02 9.28561768e-02 + 9.28361624e-02 9.28161611e-02 9.27961726e-02 9.27761971e-02 9.27562344e-02 + 9.27362847e-02 9.27163478e-02 9.26964237e-02 9.26765125e-02 9.26566141e-02 + 9.26367286e-02 9.26168558e-02 9.25969958e-02 9.25771486e-02 9.25573141e-02 + 9.25374924e-02 9.25176834e-02 9.24978871e-02 9.24781036e-02 9.24583327e-02 + 9.24385745e-02 9.24188289e-02 9.23990960e-02 9.23793758e-02 9.23596681e-02 + 9.23399731e-02 9.23202907e-02 9.23006208e-02 9.22809635e-02 9.22613188e-02 + 9.22416866e-02 9.22220669e-02 9.22024597e-02 9.21828651e-02 9.21632829e-02 + 9.21437132e-02 9.21241560e-02 9.21046112e-02 9.20850788e-02 9.20655589e-02 + 9.20460514e-02 9.20265563e-02 9.20070735e-02 9.19876031e-02 9.19681451e-02 + 9.19486994e-02 9.19292661e-02 9.19098451e-02 9.18904363e-02 9.18710399e-02 + 9.18516557e-02 9.18322838e-02 9.18129242e-02 9.17935768e-02 9.17742416e-02 + 9.17549186e-02 9.17356079e-02 9.17163093e-02 9.16970229e-02 9.16777486e-02 + 9.16584865e-02 9.16392366e-02 9.16199987e-02 9.16007730e-02 9.15815594e-02 + 9.15623578e-02 9.15431684e-02 9.15239910e-02 9.15048256e-02 9.14856723e-02 + 9.14665310e-02 9.14474017e-02 9.14282844e-02 9.14091791e-02 9.13900857e-02 + 9.13710043e-02 9.13519349e-02 9.13328774e-02 9.13138318e-02 9.12947982e-02 + 9.12757764e-02 9.12567665e-02 9.12377685e-02 9.12187823e-02 9.11998080e-02 + 9.11808456e-02 9.11618949e-02 9.11429561e-02 9.11240290e-02 9.11051138e-02 + 9.10862103e-02 9.10673186e-02 9.10484386e-02 9.10295704e-02 9.10107139e-02 + 9.09918691e-02 9.09730360e-02 9.09542146e-02 9.09354049e-02 9.09166069e-02 + 9.08978205e-02 9.08790457e-02 9.08602826e-02 9.08415311e-02 9.08227911e-02 + 9.08040628e-02 9.07853461e-02 9.07666409e-02 9.07479473e-02 9.07292652e-02 + 9.07105947e-02 9.06919357e-02 9.06732882e-02 9.06546522e-02 9.06360277e-02 + 9.06174146e-02 9.05988131e-02 9.05802229e-02 9.05616442e-02 9.05430770e-02 + 9.05245211e-02 9.05059767e-02 9.04874436e-02 9.04689219e-02 9.04504116e-02 + 9.04319127e-02 9.04134251e-02 9.03949488e-02 9.03764839e-02 9.03580303e-02 + 9.03395879e-02 9.03211569e-02 9.03027371e-02 9.02843286e-02 9.02659313e-02 + 9.02475453e-02 9.02291706e-02 9.02108070e-02 9.01924546e-02 9.01741135e-02 + 9.01557835e-02 9.01374647e-02 9.01191571e-02 9.01008606e-02 9.00825752e-02 + 9.00643010e-02 9.00460379e-02 9.00277859e-02 9.00095450e-02 8.99913152e-02 + 8.99730965e-02 8.99548888e-02 8.99366921e-02 8.99185065e-02 8.99003320e-02 + 8.98821684e-02 8.98640159e-02 8.98458743e-02 8.98277437e-02 8.98096241e-02 + 8.97915155e-02 8.97734178e-02 8.97553311e-02 8.97372552e-02 8.97191903e-02 + 8.97011363e-02 8.96830932e-02 8.96650610e-02 8.96470396e-02 8.96290291e-02 + 8.96110295e-02 8.95930407e-02 8.95750627e-02 8.95570956e-02 8.95391392e-02 + 8.95211937e-02 8.95032589e-02 8.94853349e-02 8.94674217e-02 8.94495192e-02 + 8.94316275e-02 8.94137465e-02 8.93958762e-02 8.93780167e-02 8.93601678e-02 + 8.93423296e-02 8.93245021e-02 8.93066853e-02 8.92888791e-02 8.92710836e-02 + 8.92532987e-02 8.92355244e-02 8.92177608e-02 8.92000077e-02 8.91822653e-02 + 8.91645334e-02 8.91468121e-02 8.91291014e-02 8.91114012e-02 8.90937115e-02 + 8.90760324e-02 8.90583638e-02 8.90407057e-02 8.90230582e-02 8.90054211e-02 + 8.89877945e-02 8.89701783e-02 8.89525726e-02 8.89349774e-02 8.89173926e-02 + 8.88998182e-02 8.88822542e-02 8.88647007e-02 8.88471575e-02 8.88296247e-02 + 8.88121023e-02 8.87945903e-02 8.87770886e-02 8.87595973e-02 8.87421163e-02 + 8.87246456e-02 8.87071853e-02 8.86897352e-02 8.86722954e-02 8.86548660e-02 + 8.86374468e-02 8.86200378e-02 8.86026391e-02 8.85852507e-02 8.85678725e-02 + 8.85505045e-02 8.85331467e-02 8.85157991e-02 8.84984618e-02 8.84811346e-02 + 8.84638176e-02 8.84465107e-02 8.84292140e-02 8.84119274e-02 8.83946510e-02 + 8.83773847e-02 8.83601285e-02 8.83428825e-02 8.83256465e-02 8.83084206e-02 + 8.82912047e-02 8.82739990e-02 8.82568033e-02 8.82396176e-02 8.82224420e-02 + 8.82052764e-02 8.81881208e-02 8.81709752e-02 8.81538396e-02 8.81367140e-02 + 8.81195984e-02 8.81024927e-02 8.80853970e-02 8.80683113e-02 8.80512355e-02 + 8.80341696e-02 8.80171137e-02 8.80000676e-02 8.79830314e-02 8.79660052e-02 + 8.79489888e-02 8.79319823e-02 8.79149857e-02 8.78979989e-02 8.78810219e-02 + 8.78640548e-02 8.78470975e-02 8.78301500e-02 8.78132123e-02 8.77962845e-02 + 8.77793664e-02 8.77624580e-02 8.77455595e-02 8.77286707e-02 8.77117916e-02 + 8.76949223e-02 8.76780628e-02 8.76612129e-02 8.76443728e-02 8.76275423e-02 + 8.76107216e-02 8.75939105e-02 8.75771091e-02 8.75603174e-02 8.75435353e-02 + 8.75267629e-02 8.75100001e-02 8.74932469e-02 8.74765033e-02 8.74597694e-02 + 8.74430451e-02 8.74263303e-02 8.74096251e-02 8.73929296e-02 8.73762435e-02 + 8.73595670e-02 8.73429001e-02 8.73262427e-02 8.73095948e-02 8.72929565e-02 + 8.72763276e-02 8.72597083e-02 8.72430984e-02 8.72264981e-02 8.72099072e-02 + 8.71933257e-02 8.71767537e-02 8.71601912e-02 8.71436381e-02 8.71270944e-02 + 8.71105602e-02 8.70940353e-02 8.70775199e-02 8.70610138e-02 8.70445172e-02 + 8.70280299e-02 8.70115519e-02 8.69950834e-02 8.69786241e-02 8.69621742e-02 + 8.69457337e-02 8.69293024e-02 8.69128805e-02 8.68964679e-02 8.68800646e-02 + 8.68636705e-02 8.68472857e-02 8.68309103e-02 8.68145440e-02 8.67981870e-02 + 8.67818393e-02 8.67655008e-02 8.67491715e-02 8.67328514e-02 8.67165406e-02 + 8.67002389e-02 8.66839464e-02 8.66676631e-02 8.66513890e-02 8.66351240e-02 + 8.66188682e-02 8.66026216e-02 8.65863841e-02 8.65701557e-02 8.65539364e-02 + 8.65377263e-02 8.65215252e-02 8.65053333e-02 8.64891504e-02 8.64729766e-02 + 8.64568119e-02 8.64406563e-02 8.64245097e-02 8.64083721e-02 8.63922436e-02 + 8.63761241e-02 8.63600136e-02 8.63439122e-02 8.63278197e-02 8.63117363e-02 + 8.62956618e-02 8.62795963e-02 8.62635398e-02 8.62474922e-02 8.62314536e-02 + 8.62154239e-02 8.61994032e-02 8.61833914e-02 8.61673885e-02 8.61513945e-02 + 8.61354094e-02 8.61194332e-02 8.61034659e-02 8.60875075e-02 8.60715580e-02 + 8.60556173e-02 8.60396855e-02 8.60237625e-02 8.60078483e-02 8.59919430e-02 + 8.59760465e-02 8.59601588e-02 8.59442800e-02 8.59284099e-02 8.59125486e-02 + 8.58966961e-02 8.58808523e-02 8.58650173e-02 8.58491911e-02 8.58333736e-02 + 8.58175649e-02 8.58017649e-02 8.57859736e-02 8.57701911e-02 8.57544172e-02 + 8.57386520e-02 8.57228956e-02 8.57071478e-02 8.56914087e-02 8.56756782e-02 + 8.56599565e-02 8.56442433e-02 8.56285389e-02 8.56128430e-02 8.55971558e-02 + 8.55814772e-02 8.55658072e-02 8.55501458e-02 8.55344930e-02 8.55188488e-02 + 8.55032132e-02 8.54875862e-02 8.54719677e-02 8.54563578e-02 8.54407564e-02 + 8.54251636e-02 8.54095793e-02 8.53940035e-02 8.53784363e-02 8.53628775e-02 + 8.53473273e-02 8.53317855e-02 8.53162523e-02 8.53007275e-02 8.52852112e-02 + 8.52697034e-02 8.52542040e-02 8.52387130e-02 8.52232305e-02 8.52077565e-02 + 8.51922909e-02 8.51768336e-02 8.51613848e-02 8.51459444e-02 8.51305124e-02 + 8.51150888e-02 8.50996736e-02 8.50842667e-02 8.50688682e-02 8.50534780e-02 + 8.50380963e-02 8.50227228e-02 8.50073577e-02 8.49920009e-02 8.49766524e-02 + 8.49613123e-02 8.49459804e-02 8.49306569e-02 8.49153416e-02 8.49000346e-02 + 8.48847359e-02 8.48694455e-02 8.48541633e-02 8.48388893e-02 8.48236237e-02 + 8.48083662e-02 8.47931170e-02 8.47778760e-02 8.47626432e-02 8.47474187e-02 + 8.47322023e-02 8.47169941e-02 8.47017941e-02 8.46866023e-02 8.46714187e-02 + 8.46562432e-02 8.46410759e-02 8.46259167e-02 8.46107657e-02 8.45956228e-02 + 8.45804880e-02 8.45653614e-02 8.45502428e-02 8.45351324e-02 8.45200301e-02 + 8.45049358e-02 8.44898497e-02 8.44747716e-02 8.44597016e-02 8.44446397e-02 + 8.44295858e-02 8.44145399e-02 8.43995021e-02 8.43844724e-02 8.43694506e-02 + 8.43544369e-02 8.43394312e-02 8.43244335e-02 8.43094438e-02 8.42944621e-02 + 8.42794883e-02 8.42645226e-02 8.42495648e-02 8.42346150e-02 8.42196731e-02 + 8.42047392e-02 8.41898132e-02 8.41748952e-02 8.41599851e-02 8.41450829e-02 + 8.41301886e-02 8.41153022e-02 8.41004238e-02 8.40855532e-02 8.40706905e-02 + 8.40558357e-02 8.40409887e-02 8.40261496e-02 8.40113184e-02 8.39964950e-02 + 8.39816795e-02 8.39668718e-02 8.39520719e-02 8.39372799e-02 8.39224957e-02 + 8.39077193e-02 8.38929507e-02 8.38781898e-02 8.38634368e-02 8.38486916e-02 + 8.38339541e-02 8.38192244e-02 8.38045025e-02 8.37897883e-02 8.37750818e-02 + 8.37603831e-02 8.37456922e-02 8.37310089e-02 8.37163334e-02 8.37016656e-02 + 8.36870055e-02 8.36723531e-02 8.36577084e-02 8.36430714e-02 8.36284421e-02 + 8.36138204e-02 8.35992064e-02 8.35846001e-02 8.35700014e-02 8.35554104e-02 + 8.35408270e-02 8.35262512e-02 8.35116831e-02 8.34971226e-02 8.34825697e-02 + 8.34680244e-02 8.34534867e-02 8.34389566e-02 8.34244341e-02 8.34099191e-02 + 8.33954118e-02 8.33809120e-02 8.33664197e-02 8.33519351e-02 8.33374579e-02 + 8.33229883e-02 8.33085263e-02 8.32940718e-02 8.32796248e-02 8.32651853e-02 + 8.32507533e-02 8.32363288e-02 8.32219118e-02 8.32075023e-02 8.31931003e-02 + 8.31787058e-02 8.31643187e-02 8.31499391e-02 8.31355669e-02 8.31212022e-02 + 8.31068450e-02 8.30924951e-02 8.30781528e-02 8.30638178e-02 8.30494902e-02 + 8.30351701e-02 8.30208574e-02 8.30065520e-02 8.29922541e-02 8.29779635e-02 + 8.29636804e-02 8.29494046e-02 8.29351361e-02 8.29208751e-02 8.29066213e-02 + 8.28923750e-02 8.28781359e-02 8.28639042e-02 8.28496799e-02 8.28354628e-02 + 8.28212531e-02 8.28070507e-02 8.27928556e-02 8.27786678e-02 8.27644872e-02 + 8.27503140e-02 8.27361480e-02 8.27219893e-02 8.27078379e-02 8.26936938e-02 + 8.26795569e-02 8.26654272e-02 8.26513048e-02 8.26371896e-02 8.26230816e-02 + 8.26089809e-02 8.25948874e-02 8.25808011e-02 8.25667220e-02 8.25526501e-02 + 8.25385854e-02 8.25245279e-02 8.25104775e-02 8.24964344e-02 8.24823984e-02 + 8.24683695e-02 8.24543479e-02 8.24403333e-02 8.24263259e-02 8.24123257e-02 + 8.23983326e-02 8.23843466e-02 8.23703677e-02 8.23563960e-02 8.23424313e-02 + 8.23284737e-02 8.23145233e-02 8.23005799e-02 8.22866436e-02 8.22727144e-02 + 8.22587923e-02 8.22448772e-02 8.22309692e-02 8.22170683e-02 8.22031744e-02 + 8.21892875e-02 8.21754077e-02 8.21615349e-02 8.21476691e-02 8.21338103e-02 + 8.21199586e-02 8.21061138e-02 8.20922761e-02 8.20784453e-02 8.20646216e-02 + 8.20508048e-02 8.20369950e-02 8.20231922e-02 8.20093963e-02 8.19956074e-02 + 8.19818254e-02 8.19680504e-02 8.19542823e-02 8.19405212e-02 8.19267670e-02 + 8.19130197e-02 8.18992794e-02 8.18855459e-02 8.18718194e-02 8.18580997e-02 + 8.18443870e-02 8.18306811e-02 8.18169822e-02 8.18032901e-02 8.17896048e-02 + 8.17759265e-02 8.17622550e-02 8.17485903e-02 8.17349326e-02 8.17212816e-02 + 8.17076375e-02 8.16940002e-02 8.16803697e-02 8.16667461e-02 8.16531293e-02 + 8.16395193e-02 8.16259161e-02 8.16123197e-02 8.15987300e-02 8.15851472e-02 + 8.15715712e-02 8.15580019e-02 8.15444394e-02 8.15308836e-02 8.15173346e-02 + 8.15037924e-02 8.14902569e-02 8.14767282e-02 8.14632062e-02 8.14496909e-02 + 8.14361823e-02 8.14226805e-02 8.14091854e-02 8.13956970e-02 8.13822153e-02 + 8.13687402e-02 8.13552719e-02 8.13418103e-02 8.13283553e-02 8.13149070e-02 + 8.13014654e-02 8.12880305e-02 8.12746022e-02 8.12611805e-02 8.12477656e-02 + 8.12343572e-02 8.12209555e-02 8.12075604e-02 8.11941719e-02 8.11807901e-02 + 8.11674149e-02 8.11540463e-02 8.11406843e-02 8.11273288e-02 8.11139800e-02 + 8.11006378e-02 8.10873021e-02 8.10739731e-02 8.10606506e-02 8.10473346e-02 + 8.10340252e-02 8.10207224e-02 8.10074261e-02 8.09941364e-02 8.09808532e-02 + 8.09675765e-02 8.09543064e-02 8.09410428e-02 8.09277857e-02 8.09145351e-02 + 8.09012911e-02 8.08880535e-02 8.08748224e-02 8.08615978e-02 8.08483797e-02 + 8.08351681e-02 8.08219630e-02 8.08087643e-02 8.07955721e-02 8.07823863e-02 + 8.07692070e-02 8.07560342e-02 8.07428678e-02 8.07297078e-02 8.07165542e-02 + 8.07034071e-02 8.06902664e-02 8.06771322e-02 8.06640043e-02 8.06508829e-02 + 8.06377678e-02 8.06246592e-02 8.06115569e-02 8.05984610e-02 8.05853715e-02 + 8.05722884e-02 8.05592116e-02 8.05461412e-02 8.05330772e-02 8.05200195e-02 + 8.05069682e-02 8.04939232e-02 8.04808846e-02 8.04678523e-02 8.04548263e-02 + 8.04418066e-02 8.04287933e-02 8.04157863e-02 8.04027856e-02 8.03897912e-02 + 8.03768031e-02 8.03638212e-02 8.03508457e-02 8.03378765e-02 8.03249135e-02 + 8.03119568e-02 8.02990064e-02 8.02860622e-02 8.02731243e-02 8.02601926e-02 + 8.02472672e-02 8.02343481e-02 8.02214351e-02 8.02085284e-02 8.01956280e-02 + 8.01827337e-02 8.01698457e-02 8.01569639e-02 8.01440883e-02 8.01312189e-02 + 8.01183557e-02 8.01054986e-02 8.00926478e-02 8.00798032e-02 8.00669647e-02 + 8.00541324e-02 8.00413063e-02 8.00284863e-02 8.00156725e-02 8.00028649e-02 + 7.99900634e-02 7.99772680e-02 7.99644788e-02 7.99516957e-02 7.99389187e-02 + 7.99261479e-02 7.99133832e-02 7.99006246e-02 7.98878721e-02 7.98751257e-02 + 7.98623854e-02 7.98496512e-02 7.98369231e-02 7.98242011e-02 7.98114851e-02 + 7.97987753e-02 7.97860715e-02 7.97733737e-02 7.97606821e-02 7.97479965e-02 + 7.97353169e-02 7.97226434e-02 7.97099759e-02 7.96973145e-02 7.96846590e-02 + 7.96720097e-02 7.96593663e-02 7.96467290e-02 7.96340976e-02 7.96214723e-02 + 7.96088530e-02 7.95962397e-02 7.95836323e-02 7.95710310e-02 7.95584356e-02 + 7.95458463e-02 7.95332629e-02 7.95206854e-02 7.95081140e-02 7.94955485e-02 + 7.94829889e-02 7.94704353e-02 7.94578877e-02 7.94453459e-02 7.94328102e-02 + 7.94202803e-02 7.94077564e-02 7.93952384e-02 7.93827263e-02 7.93702202e-02 + 7.93577199e-02 7.93452256e-02 7.93327371e-02 7.93202546e-02 7.93077779e-02 + 7.92953071e-02 7.92828423e-02 7.92703832e-02 7.92579301e-02 7.92454828e-02 + 7.92330414e-02 7.92206058e-02 7.92081761e-02 7.91957523e-02 7.91833343e-02 + 7.91709221e-02 7.91585157e-02 7.91461152e-02 7.91337206e-02 7.91213317e-02 + 7.91089486e-02 7.90965714e-02 7.90842000e-02 7.90718344e-02 7.90594746e-02 + 7.90471205e-02 7.90347723e-02 7.90224298e-02 7.90100932e-02 7.89977623e-02 + 7.89854371e-02 7.89731178e-02 7.89608042e-02 7.89484964e-02 7.89361943e-02 + 7.89238979e-02 7.89116073e-02 7.88993225e-02 7.88870434e-02 7.88747700e-02 + 7.88625023e-02 7.88502404e-02 7.88379842e-02 7.88257337e-02 7.88134889e-02 + 7.88012498e-02 7.87890164e-02 7.87767887e-02 7.87645667e-02 7.87523504e-02 + 7.87401398e-02 7.87279348e-02 7.87157355e-02 7.87035419e-02 7.86913540e-02 + 7.86791717e-02 7.86669951e-02 7.86548241e-02 7.86426588e-02 7.86304991e-02 + 7.86183450e-02 7.86061966e-02 7.85940538e-02 7.85819167e-02 7.85697851e-02 + 7.85576592e-02 7.85455389e-02 7.85334242e-02 7.85213151e-02 7.85092116e-02 + 7.84971137e-02 7.84850214e-02 7.84729347e-02 7.84608535e-02 7.84487780e-02 + 7.84367080e-02 7.84246436e-02 7.84125847e-02 7.84005314e-02 7.83884837e-02 + 7.83764415e-02 7.83644048e-02 7.83523737e-02 7.83403482e-02 7.83283282e-02 + 7.83163137e-02 7.83043047e-02 7.82923013e-02 7.82803034e-02 7.82683110e-02 + 7.82563241e-02 7.82443427e-02 7.82323668e-02 7.82203964e-02 7.82084315e-02 + 7.81964721e-02 7.81845182e-02 7.81725697e-02 7.81606268e-02 7.81486893e-02 + 7.81367572e-02 7.81248307e-02 7.81129096e-02 7.81009939e-02 7.80890837e-02 + 7.80771790e-02 7.80652797e-02 7.80533858e-02 7.80414974e-02 7.80296144e-02 + 7.80177368e-02 7.80058646e-02 7.79939979e-02 7.79821366e-02 7.79702807e-02 + 7.79584302e-02 7.79465851e-02 7.79347454e-02 7.79229111e-02 7.79110821e-02 + 7.78992586e-02 7.78874404e-02 7.78756277e-02 7.78638202e-02 7.78520182e-02 + 7.78402215e-02 7.78284302e-02 7.78166443e-02 7.78048637e-02 7.77930884e-02 + 7.77813185e-02 7.77695539e-02 7.77577947e-02 7.77460408e-02 7.77342922e-02 + 7.77225490e-02 7.77108111e-02 7.76990785e-02 7.76873512e-02 7.76756292e-02 + 7.76639125e-02 7.76522011e-02 7.76404950e-02 7.76287942e-02 7.76170987e-02 + 7.76054085e-02 7.75937236e-02 7.75820439e-02 7.75703695e-02 7.75587004e-02 + 7.75470365e-02 7.75353780e-02 7.75237246e-02 7.75120765e-02 7.75004337e-02 + 7.74887961e-02 7.74771637e-02 7.74655366e-02 7.74539147e-02 7.74422981e-02 + 7.74306867e-02 7.74190805e-02 7.74074795e-02 7.73958837e-02 7.73842931e-02 + 7.73727078e-02 7.73611276e-02 7.73495527e-02 7.73379829e-02 7.73264183e-02 + 7.73148589e-02 7.73033047e-02 7.72917557e-02 7.72802118e-02 7.72686732e-02 + 7.72571396e-02 7.72456113e-02 7.72340881e-02 7.72225701e-02 7.72110572e-02 + 7.71995494e-02 7.71880468e-02 7.71765494e-02 7.71650571e-02 7.71535699e-02 + 7.71420878e-02 7.71306109e-02 7.71191391e-02 7.71076724e-02 7.70962108e-02 + 7.70847543e-02 7.70733030e-02 7.70618567e-02 7.70504155e-02 7.70389795e-02 + 7.70275485e-02 7.70161226e-02 7.70047018e-02 7.69932860e-02 7.69818754e-02 + 7.69704698e-02 7.69590693e-02 7.69476738e-02 7.69362834e-02 7.69248981e-02 + 7.69135178e-02 7.69021426e-02 7.68907724e-02 7.68794073e-02 7.68680472e-02 + 7.68566921e-02 7.68453420e-02 7.68339970e-02 7.68226570e-02 7.68113221e-02 + 7.67999921e-02 7.67886672e-02 7.67773472e-02 7.67660323e-02 7.67547224e-02 + 7.67434174e-02 7.67321175e-02 7.67208226e-02 7.67095326e-02 7.66982476e-02 + 7.66869676e-02 7.66756926e-02 7.66644225e-02 7.66531574e-02 7.66418973e-02 + 7.66306422e-02 7.66193920e-02 7.66081467e-02 7.65969064e-02 7.65856711e-02 + 7.65744407e-02 7.65632152e-02 7.65519946e-02 7.65407790e-02 7.65295684e-02 + 7.65183626e-02 7.65071618e-02 7.64959659e-02 7.64847749e-02 7.64735888e-02 + 7.64624076e-02 7.64512313e-02 7.64400599e-02 7.64288935e-02 7.64177319e-02 + 7.64065752e-02 7.63954233e-02 7.63842764e-02 7.63731343e-02 7.63619972e-02 + 7.63508648e-02 7.63397374e-02 7.63286148e-02 7.63174971e-02 7.63063842e-02 + 7.62952762e-02 7.62841730e-02 7.62730747e-02 7.62619813e-02 7.62508926e-02 + 7.62398088e-02 7.62287298e-02 7.62176557e-02 7.62065864e-02 7.61955219e-02 + 7.61844622e-02 7.61734074e-02 7.61623573e-02 7.61513121e-02 7.61402716e-02 + 7.61292360e-02 7.61182052e-02 7.61071791e-02 7.60961579e-02 7.60851414e-02 + 7.60741297e-02 7.60631228e-02 7.60521207e-02 7.60411233e-02 7.60301307e-02 + 7.60191429e-02 7.60081598e-02 7.59971815e-02 7.59862080e-02 7.59752392e-02 + 7.59642751e-02 7.59533158e-02 7.59423613e-02 7.59314115e-02 7.59204664e-02 + 7.59095260e-02 7.58985904e-02 7.58876595e-02 7.58767333e-02 7.58658119e-02 + 7.58548951e-02 7.58439831e-02 7.58330758e-02 7.58221731e-02 7.58112752e-02 + 7.58003820e-02 7.57894935e-02 7.57786096e-02 7.57677305e-02 7.57568560e-02 + 7.57459862e-02 7.57351211e-02 7.57242607e-02 7.57134049e-02 7.57025538e-02 + 7.56917074e-02 7.56808656e-02 7.56700285e-02 7.56591961e-02 7.56483683e-02 + 7.56375451e-02 7.56267266e-02 7.56159127e-02 7.56051035e-02 7.55942989e-02 + 7.55834989e-02 7.55727035e-02 7.55619128e-02 7.55511267e-02 7.55403452e-02 + 7.55295684e-02 7.55187961e-02 7.55080285e-02 7.54972654e-02 7.54865070e-02 + 7.54757531e-02 7.54650039e-02 7.54542592e-02 7.54435192e-02 7.54327837e-02 + 7.54220528e-02 7.54113264e-02 7.54006047e-02 7.53898875e-02 7.53791749e-02 + 7.53684669e-02 7.53577634e-02 7.53470644e-02 7.53363701e-02 7.53256803e-02 + 7.53149950e-02 7.53043143e-02 7.52936381e-02 7.52829665e-02 7.52722994e-02 + 7.52616368e-02 7.52509787e-02 7.52403252e-02 7.52296762e-02 7.52190318e-02 + 7.52083918e-02 7.51977564e-02 7.51871255e-02 7.51764990e-02 7.51658771e-02 + 7.51552597e-02 7.51446468e-02 7.51340384e-02 7.51234344e-02 7.51128350e-02 + 7.51022400e-02 7.50916496e-02 7.50810636e-02 7.50704821e-02 7.50599050e-02 + 7.50493324e-02 7.50387643e-02 7.50282007e-02 7.50176415e-02 7.50070868e-02 + 7.49965365e-02 7.49859907e-02 7.49754493e-02 7.49649123e-02 7.49543799e-02 + 7.49438518e-02 7.49333282e-02 7.49228090e-02 7.49122942e-02 7.49017839e-02 + 7.48912780e-02 7.48807765e-02 7.48702794e-02 7.48597868e-02 7.48492985e-02 + 7.48388147e-02 7.48283352e-02 7.48178602e-02 7.48073895e-02 7.47969233e-02 + 7.47864614e-02 7.47760040e-02 7.47655509e-02 7.47551022e-02 7.47446579e-02 + 7.47342179e-02 7.47237824e-02 7.47133512e-02 7.47029243e-02 7.46925019e-02 + 7.46820838e-02 7.46716700e-02 7.46612606e-02 7.46508556e-02 7.46404549e-02 + 7.46300586e-02 7.46196666e-02 7.46092789e-02 7.45988956e-02 7.45885166e-02 + 7.45781419e-02 7.45677716e-02 7.45574056e-02 7.45470439e-02 7.45366865e-02 + 7.45263335e-02 7.45159847e-02 7.45056403e-02 7.44953002e-02 7.44849644e-02 + 7.44746329e-02 7.44643056e-02 7.44539827e-02 7.44436641e-02 7.44333497e-02 + 7.44230397e-02 7.44127339e-02 7.44024324e-02 7.43921352e-02 7.43818423e-02 + 7.43715536e-02 7.43612692e-02 7.43509890e-02 7.43407132e-02 7.43304416e-02 + 7.43201742e-02 7.43099111e-02 7.42996522e-02 7.42893976e-02 7.42791473e-02 + 7.42689011e-02 7.42586593e-02 7.42484216e-02 7.42381882e-02 7.42279590e-02 + 7.42177341e-02 7.42075133e-02 7.41972968e-02 7.41870845e-02 7.41768765e-02 + 7.41666726e-02 7.41564729e-02 7.41462775e-02 7.41360863e-02 7.41258992e-02 + 7.41157164e-02 7.41055377e-02 7.40953633e-02 7.40851930e-02 7.40750269e-02 + 7.40648650e-02 7.40547073e-02 7.40445538e-02 7.40344044e-02 7.40242592e-02 + 7.40141182e-02 7.40039814e-02 7.39938487e-02 7.39837202e-02 7.39735958e-02 + 7.39634756e-02 7.39533595e-02 7.39432476e-02 7.39331398e-02 7.39230362e-02 + 7.39129367e-02 7.39028414e-02 7.38927502e-02 7.38826631e-02 7.38725802e-02 + 7.38625014e-02 7.38524267e-02 7.38423561e-02 7.38322896e-02 7.38222273e-02 + 7.38121691e-02 7.38021150e-02 7.37920650e-02 7.37820191e-02 7.37719773e-02 + 7.37619396e-02 7.37519060e-02 7.37418765e-02 7.37318510e-02 7.37218297e-02 + 7.37118125e-02 7.37017993e-02 7.36917902e-02 7.36817852e-02 7.36717843e-02 + 7.36617874e-02 7.36517946e-02 7.36418059e-02 7.36318212e-02 7.36218406e-02 + 7.36118641e-02 7.36018916e-02 7.35919231e-02 7.35819587e-02 7.35719984e-02 + 7.35620421e-02 7.35520898e-02 7.35421416e-02 7.35321974e-02 7.35222572e-02 + 7.35123211e-02 7.35023890e-02 7.34924610e-02 7.34825369e-02 7.34726169e-02 + 7.34627009e-02 7.34527889e-02 7.34428809e-02 7.34329769e-02 7.34230769e-02 + 7.34131809e-02 7.34032890e-02 7.33934010e-02 7.33835170e-02 7.33736370e-02 + 7.33637610e-02 7.33538890e-02 7.33440210e-02 7.33341569e-02 7.33242969e-02 + 7.33144408e-02 7.33045886e-02 7.32947405e-02 7.32848963e-02 7.32750561e-02 + 7.32652199e-02 7.32553876e-02 7.32455592e-02 7.32357348e-02 7.32259144e-02 + 7.32160979e-02 7.32062854e-02 7.31964768e-02 7.31866722e-02 7.31768715e-02 + 7.31670747e-02 7.31572819e-02 7.31474930e-02 7.31377080e-02 7.31279269e-02 + 7.31181498e-02 7.31083766e-02 7.30986073e-02 7.30888419e-02 7.30790805e-02 + 7.30693229e-02 7.30595693e-02 7.30498195e-02 7.30400737e-02 7.30303318e-02 + 7.30205937e-02 7.30108596e-02 7.30011293e-02 7.29914030e-02 7.29816805e-02 + 7.29719619e-02 7.29622472e-02 7.29525364e-02 7.29428294e-02 7.29331263e-02 + 7.29234271e-02 7.29137318e-02 7.29040403e-02 7.28943527e-02 7.28846689e-02 + 7.28749890e-02 7.28653130e-02 7.28556408e-02 7.28459725e-02 7.28363080e-02 + 7.28266473e-02 7.28169905e-02 7.28073376e-02 7.27976885e-02 7.27880432e-02 + 7.27784017e-02 7.27687641e-02 7.27591303e-02 7.27495003e-02 7.27398742e-02 + 7.27302519e-02 7.27206334e-02 7.27110187e-02 7.27014078e-02 7.26918007e-02 + 7.26821975e-02 7.26725980e-02 7.26630023e-02 7.26534105e-02 7.26438224e-02 + 7.26342382e-02 7.26246577e-02 7.26150810e-02 7.26055081e-02 7.25959390e-02 + 7.25863737e-02 7.25768121e-02 7.25672544e-02 7.25577004e-02 7.25481502e-02 + 7.25386037e-02 7.25290610e-02 7.25195221e-02 7.25099870e-02 7.25004556e-02 + 7.24909279e-02 7.24814040e-02 7.24718839e-02 7.24623675e-02 7.24528549e-02 + 7.24433460e-02 7.24338409e-02 7.24243395e-02 7.24148418e-02 7.24053479e-02 + 7.23958577e-02 7.23863712e-02 7.23768885e-02 7.23674095e-02 7.23579342e-02 + 7.23484626e-02 7.23389948e-02 7.23295307e-02 7.23200702e-02 7.23106135e-02 + 7.23011605e-02 7.22917112e-02 7.22822656e-02 7.22728238e-02 7.22633856e-02 + 7.22539511e-02 7.22445203e-02 7.22350932e-02 7.22256698e-02 7.22162500e-02 + 7.22068340e-02 7.21974216e-02 7.21880130e-02 7.21786080e-02 7.21692066e-02 + 7.21598090e-02 7.21504150e-02 7.21410247e-02 7.21316380e-02 7.21222550e-02 + 7.21128757e-02 7.21035000e-02 7.20941280e-02 7.20847596e-02 7.20753949e-02 + 7.20660339e-02 7.20566765e-02 7.20473227e-02 7.20379726e-02 7.20286261e-02 + 7.20192832e-02 7.20099440e-02 7.20006084e-02 7.19912765e-02 7.19819481e-02 + 7.19726234e-02 7.19633024e-02 7.19539849e-02 7.19446711e-02 7.19353608e-02 + 7.19260542e-02 7.19167512e-02 7.19074518e-02 7.18981560e-02 7.18888639e-02 + 7.18795753e-02 7.18702903e-02 7.18610089e-02 7.18517311e-02 7.18424569e-02 + 7.18331863e-02 7.18239193e-02 7.18146559e-02 7.18053960e-02 7.17961398e-02 + 7.17868871e-02 7.17776380e-02 7.17683924e-02 7.17591505e-02 7.17499121e-02 + 7.17406772e-02 7.17314460e-02 7.17222183e-02 7.17129941e-02 7.17037735e-02 + 7.16945565e-02 7.16853430e-02 7.16761331e-02 7.16669267e-02 7.16577239e-02 + 7.16485246e-02 7.16393289e-02 7.16301367e-02 7.16209480e-02 7.16117629e-02 + 7.16025813e-02 7.15934032e-02 7.15842287e-02 7.15750577e-02 7.15658902e-02 + 7.15567262e-02 7.15475658e-02 7.15384089e-02 7.15292555e-02 7.15201056e-02 + 7.15109592e-02 7.15018163e-02 7.14926769e-02 7.14835410e-02 7.14744087e-02 + 7.14652798e-02 7.14561544e-02 7.14470325e-02 7.14379142e-02 7.14287993e-02 + 7.14196878e-02 7.14105799e-02 7.14014755e-02 7.13923745e-02 7.13832770e-02 + 7.13741830e-02 7.13650925e-02 7.13560055e-02 7.13469219e-02 7.13378418e-02 + 7.13287651e-02 7.13196919e-02 7.13106222e-02 7.13015559e-02 7.12924931e-02 + 7.12834338e-02 7.12743779e-02 7.12653254e-02 7.12562764e-02 7.12472309e-02 + 7.12381888e-02 7.12291501e-02 7.12201149e-02 7.12110831e-02 7.12020547e-02 + 7.11930298e-02 7.11840083e-02 7.11749902e-02 7.11659756e-02 7.11569644e-02 + 7.11479566e-02 7.11389522e-02 7.11299512e-02 7.11209537e-02 7.11119596e-02 + 7.11029689e-02 7.10939816e-02 7.10849977e-02 7.10760172e-02 7.10670401e-02 + 7.10580664e-02 7.10490961e-02 7.10401292e-02 7.10311657e-02 7.10222056e-02 + 7.10132489e-02 7.10042956e-02 7.09953456e-02 7.09863990e-02 7.09774559e-02 + 7.09685161e-02 7.09595796e-02 7.09506466e-02 7.09417169e-02 7.09327906e-02 + 7.09238677e-02 7.09149481e-02 7.09060319e-02 7.08971191e-02 7.08882096e-02 + 7.08793035e-02 7.08704007e-02 7.08615013e-02 7.08526052e-02 7.08437125e-02 + 7.08348231e-02 7.08259371e-02 7.08170544e-02 7.08081751e-02 7.07992991e-02 + 7.07904264e-02 7.07815571e-02 7.07726911e-02 7.07638285e-02 7.07549691e-02 + 7.07461131e-02 7.07372604e-02 7.07284111e-02 7.07195650e-02 7.07107223e-02 + 7.07018829e-02 7.06930468e-02 7.06842141e-02 7.06753846e-02 7.06665584e-02 + 7.06577356e-02 7.06489160e-02 7.06400998e-02 7.06312868e-02 7.06224772e-02 + 7.06136708e-02 7.06048678e-02 7.05960680e-02 7.05872715e-02 7.05784783e-02 + 7.05696884e-02 7.05609018e-02 7.05521184e-02 7.05433384e-02 7.05345616e-02 diff --git a/potentials/FeCH_BOP_II.poly b/potentials/FeCH_BOP_II.poly new file mode 100644 index 0000000000..ed0b771887 --- /dev/null +++ b/potentials/FeCH_BOP_II.poly @@ -0,0 +1,33618 @@ +# DATE 2018-12-18 CONTRIBUTOR: X. W. Zhou, xzhou@sandia.gov CITATION: X. W. Zhou, +# M. E. Foster, J. A. Ronevich, and C. W San Marchi, J. Comp. Chem., 41, 1299 (2020). +# M. Muller, P. Erhart, and K. Albe, J. Phys.: Condens. Matter, 19, 326220 (2007). +# D. W. Brenner, Phys. Rev. B, 42, 9458 (1990). N. Juslin et al, J. Appl. Phys., +# 98, 123520 (2005). P. Kuopanportti et al, Comp. Mater. Sci., 111, 525 (2016). +# K. O. E. Hendriksson, C. Bjorkas, and K. Nordlund, J. Phys.: Condens. Matter, +# 25, 445401 (2013). + 3 3 + 26. 5.58500000e+01 Fe + 6. 1.20100000e+01 C + 1. 1.01000000e+00 H + 2000 2000 4000 2.00000000e+02 + 3.35000000e+00 1.00000000e+00 + 2.00000000e+00 1.00000000e+00 + 1.70000000e+00 1.00000000e+00 + 2.80000000e+00 1.00000000e+00 + 2.69660000e+00 1.00000000e+00 + 1.80000000e+00 1.00000000e+00 + 9.05461601e+06 5.36400429e+06 2.63461103e+06 1.72573643e+06 1.27196396e+06 + 1.00021130e+06 8.19451798e+05 6.90674672e+05 5.94375068e+05 5.19717409e+05 + 4.60200739e+05 4.11688423e+05 3.71423001e+05 3.37495720e+05 3.08543417e+05 + 2.83566642e+05 2.61815992e+05 2.42718557e+05 2.25828890e+05 2.10795455e+05 + 1.97337145e+05 1.85226505e+05 1.74277539e+05 1.64336688e+05 1.55276068e+05 + 1.46988336e+05 1.39382733e+05 1.32382007e+05 1.25920006e+05 1.19939754e+05 + 1.14391924e+05 1.09233599e+05 1.04427270e+05 9.99400149e+04 9.57428218e+04 + 9.18100283e+04 8.81188552e+04 8.46490156e+04 8.13823855e+04 7.83027252e+04 + 7.53954428e+04 7.26473922e+04 7.00467000e+04 6.75826165e+04 6.52453872e+04 + 6.30261416e+04 6.09167962e+04 5.89099701e+04 5.69989113e+04 5.51774319e+04 + 5.34398509e+04 5.17809444e+04 5.01959007e+04 4.86802814e+04 4.72299860e+04 + 4.58412213e+04 4.45104728e+04 4.32344809e+04 4.20102176e+04 4.08348673e+04 + 3.97058085e+04 3.86205977e+04 3.75769545e+04 3.65727491e+04 3.56059895e+04 + 3.46748114e+04 3.37774676e+04 3.29123197e+04 3.20778299e+04 3.12725529e+04 + 3.04951300e+04 2.97442821e+04 2.90188046e+04 2.83175618e+04 2.76394824e+04 + 2.69835548e+04 2.63488233e+04 2.57343842e+04 2.51393827e+04 2.45630092e+04 + 2.40044967e+04 2.34631182e+04 2.29381839e+04 2.24290391e+04 2.19350619e+04 + 2.14556614e+04 2.09902755e+04 2.05383695e+04 2.00994344e+04 1.96729855e+04 + 1.92585606e+04 1.88557194e+04 1.84640414e+04 1.80831257e+04 1.77125894e+04 + 1.73520664e+04 1.70012072e+04 1.66596774e+04 1.63271571e+04 1.60033402e+04 + 1.56879336e+04 1.53806565e+04 1.50812401e+04 1.47894263e+04 1.45049679e+04 + 1.42276276e+04 1.39571778e+04 1.36933997e+04 1.34360835e+04 1.31850274e+04 + 1.29400376e+04 1.27009275e+04 1.24675180e+04 1.22396366e+04 1.20171172e+04 + 1.17998000e+04 1.15875312e+04 1.13801624e+04 1.11775509e+04 1.09795589e+04 + 1.07860536e+04 1.05969071e+04 1.04119957e+04 1.02312003e+04 1.00544059e+04 + 9.88150120e+03 9.71237907e+03 9.54693582e+03 9.38507131e+03 9.22668873e+03 + 9.07169452e+03 8.91999818e+03 8.77151221e+03 8.62615193e+03 8.48383542e+03 + 8.34448337e+03 8.20801901e+03 8.07436802e+03 7.94345839e+03 7.81522038e+03 + 7.68958642e+03 7.56649102e+03 7.44587069e+03 7.32766388e+03 7.21181093e+03 + 7.09825393e+03 6.98693673e+03 6.87780486e+03 6.77080544e+03 6.66588714e+03 + 6.56300015e+03 6.46209609e+03 6.36312798e+03 6.26605019e+03 6.17081839e+03 + 6.07738950e+03 5.98572168e+03 5.89577424e+03 5.80750762e+03 5.72088339e+03 + 5.63586415e+03 5.55241353e+03 5.47049616e+03 5.39007764e+03 5.31112448e+03 + 5.23360410e+03 5.15748479e+03 5.08273568e+03 5.00932671e+03 4.93722863e+03 + 4.86641295e+03 4.79685190e+03 4.72851846e+03 4.66138630e+03 4.59542975e+03 + 4.53062382e+03 4.46694413e+03 4.40436693e+03 4.34286908e+03 4.28242800e+03 + 4.22302168e+03 4.16462866e+03 4.10722802e+03 4.05079934e+03 3.99532269e+03 + 3.94077867e+03 3.88714830e+03 3.83441308e+03 3.78255498e+03 3.73155636e+03 + 3.68140002e+03 3.63206918e+03 3.58354745e+03 3.53581881e+03 3.48886764e+03 + 3.44267867e+03 3.39723699e+03 3.35252804e+03 3.30853758e+03 3.26525173e+03 + 3.22265689e+03 3.18073979e+03 3.13948747e+03 3.09888724e+03 3.05892672e+03 + 3.01959379e+03 2.98087661e+03 2.94276360e+03 2.90524344e+03 2.86830507e+03 + 2.83193765e+03 2.79613060e+03 2.76087356e+03 2.72615640e+03 2.69196921e+03 + 2.65830228e+03 2.62514615e+03 2.59249151e+03 2.56032930e+03 2.52865060e+03 + 2.49744673e+03 2.46670917e+03 2.43642957e+03 2.40659978e+03 2.37721180e+03 + 2.34825782e+03 2.31973016e+03 2.29162133e+03 2.26392397e+03 2.23663090e+03 + 2.20973506e+03 2.18322956e+03 2.15710762e+03 2.13136263e+03 2.10598809e+03 + 2.08097764e+03 2.05632506e+03 2.03202423e+03 2.00806917e+03 1.98445402e+03 + 1.96117302e+03 1.93822056e+03 1.91559109e+03 1.89327921e+03 1.87127961e+03 + 1.84958709e+03 1.82819654e+03 1.80710296e+03 1.78630146e+03 1.76578720e+03 + 1.74555549e+03 1.72560169e+03 1.70592126e+03 1.68650975e+03 1.66736279e+03 + 1.64847611e+03 1.62984549e+03 1.61146682e+03 1.59333605e+03 1.57544921e+03 + 1.55780240e+03 1.54039180e+03 1.52321367e+03 1.50626431e+03 1.48954012e+03 + 1.47303755e+03 1.45675312e+03 1.44068341e+03 1.42482506e+03 1.40917478e+03 + 1.39372935e+03 1.37848557e+03 1.36344035e+03 1.34859060e+03 1.33393334e+03 + 1.31946560e+03 1.30518449e+03 1.29108716e+03 1.27717082e+03 1.26343271e+03 + 1.24987014e+03 1.23648046e+03 1.22326106e+03 1.21020939e+03 1.19732293e+03 + 1.18459921e+03 1.17203582e+03 1.15963035e+03 1.14738048e+03 1.13528390e+03 + 1.12333834e+03 1.11154159e+03 1.09989146e+03 1.08838579e+03 1.07702249e+03 + 1.06579947e+03 1.05471469e+03 1.04376616e+03 1.03295189e+03 1.02226995e+03 + 1.01171844e+03 1.00129547e+03 9.90999221e+02 9.80827866e+02 9.70779627e+02 + 9.60852753e+02 9.51045522e+02 9.41356240e+02 9.31783240e+02 9.22324884e+02 + 9.12979560e+02 9.03745682e+02 8.94621693e+02 8.85606056e+02 8.76697264e+02 + 8.67893832e+02 8.59194298e+02 8.50597227e+02 8.42101203e+02 8.33704837e+02 + 8.25406759e+02 8.17205622e+02 8.09100100e+02 8.01088890e+02 7.93170707e+02 + 7.85344289e+02 7.77608391e+02 7.69961790e+02 7.62403281e+02 7.54931679e+02 + 7.47545817e+02 7.40244545e+02 7.33026733e+02 7.25891267e+02 7.18837051e+02 + 7.11863007e+02 7.04968070e+02 6.98151197e+02 6.91411355e+02 6.84747531e+02 + 6.78158727e+02 6.71643958e+02 6.65202257e+02 6.58832668e+02 6.52534254e+02 + 6.46306089e+02 6.40147261e+02 6.34056873e+02 6.28034042e+02 6.22077896e+02 + 6.16187577e+02 6.10362242e+02 6.04601056e+02 5.98903202e+02 5.93267870e+02 + 5.87694264e+02 5.82181602e+02 5.76729110e+02 5.71336026e+02 5.66001601e+02 + 5.60725097e+02 5.55505783e+02 5.50342944e+02 5.45235871e+02 5.40183867e+02 + 5.35186247e+02 5.30242332e+02 5.25351455e+02 5.20512960e+02 5.15726197e+02 + 5.10990527e+02 5.06305322e+02 5.01669960e+02 4.97083829e+02 4.92546326e+02 + 4.88056856e+02 4.83614833e+02 4.79219679e+02 4.74870824e+02 4.70567705e+02 + 4.66309770e+02 4.62096471e+02 4.57927271e+02 4.53801637e+02 4.49719046e+02 + 4.45678982e+02 4.41680935e+02 4.37724403e+02 4.33808890e+02 4.29933908e+02 + 4.26098976e+02 4.22303617e+02 4.18547364e+02 4.14829753e+02 4.11150329e+02 + 4.07508641e+02 4.03904247e+02 4.00336708e+02 3.96805592e+02 3.93310474e+02 + 3.89850933e+02 3.86426555e+02 3.83036929e+02 3.79681654e+02 3.76360330e+02 + 3.73072565e+02 3.69817971e+02 3.66596165e+02 3.63406770e+02 3.60249413e+02 + 3.57123727e+02 3.54029350e+02 3.50965922e+02 3.47933091e+02 3.44930508e+02 + 3.41957830e+02 3.39014715e+02 3.36100830e+02 3.33215844e+02 3.30359429e+02 + 3.27531263e+02 3.24731029e+02 3.21958412e+02 3.19213102e+02 3.16494793e+02 + 3.13803184e+02 3.11137975e+02 3.08498872e+02 3.05885585e+02 3.03297826e+02 + 3.00735313e+02 2.98197764e+02 2.95684905e+02 2.93196463e+02 2.90732167e+02 + 2.88291753e+02 2.85874957e+02 2.83481521e+02 2.81111187e+02 2.78763704e+02 + 2.76438822e+02 2.74136293e+02 2.71855875e+02 2.69597327e+02 2.67360411e+02 + 2.65144894e+02 2.62950542e+02 2.60777127e+02 2.58624423e+02 2.56492207e+02 + 2.54380259e+02 2.52288359e+02 2.50216294e+02 2.48163850e+02 2.46130818e+02 + 2.44116990e+02 2.42122161e+02 2.40146129e+02 2.38188694e+02 2.36249657e+02 + 2.34328824e+02 2.32426002e+02 2.30541001e+02 2.28673631e+02 2.26823707e+02 + 2.24991045e+02 2.23175464e+02 2.21376784e+02 2.19594827e+02 2.17829418e+02 + 2.16080385e+02 2.14347555e+02 2.12630760e+02 2.10929833e+02 2.09244609e+02 + 2.07574923e+02 2.05920616e+02 2.04281526e+02 2.02657498e+02 2.01048375e+02 + 1.99454003e+02 1.97874230e+02 1.96308905e+02 1.94757881e+02 1.93221009e+02 + 1.91698145e+02 1.90189145e+02 1.88693868e+02 1.87212173e+02 1.85743920e+02 + 1.84288974e+02 1.82847199e+02 1.81418460e+02 1.80002626e+02 1.78599565e+02 + 1.77209147e+02 1.75831246e+02 1.74465733e+02 1.73112485e+02 1.71771377e+02 + 1.70442287e+02 1.69125095e+02 1.67819680e+02 1.66525924e+02 1.65243711e+02 + 1.63972925e+02 1.62713451e+02 1.61465177e+02 1.60227990e+02 1.59001781e+02 + 1.57786440e+02 1.56581858e+02 1.55387929e+02 1.54204547e+02 1.53031608e+02 + 1.51869008e+02 1.50716645e+02 1.49574417e+02 1.48442226e+02 1.47319971e+02 + 1.46207555e+02 1.45104882e+02 1.44011854e+02 1.42928379e+02 1.41854362e+02 + 1.40789710e+02 1.39734332e+02 1.38688137e+02 1.37651036e+02 1.36622940e+02 + 1.35603760e+02 1.34593412e+02 1.33591807e+02 1.32598863e+02 1.31614494e+02 + 1.30638617e+02 1.29671151e+02 1.28712014e+02 1.27761125e+02 1.26818405e+02 + 1.25883774e+02 1.24957157e+02 1.24038474e+02 1.23127650e+02 1.22224609e+02 + 1.21329277e+02 1.20441579e+02 1.19561443e+02 1.18688797e+02 1.17823568e+02 + 1.16965686e+02 1.16115081e+02 1.15271684e+02 1.14435425e+02 1.13606238e+02 + 1.12784054e+02 1.11968807e+02 1.11160433e+02 1.10358864e+02 1.09564038e+02 + 1.08775890e+02 1.07994357e+02 1.07219377e+02 1.06450888e+02 1.05688829e+02 + 1.04933139e+02 1.04183758e+02 1.03440628e+02 1.02703689e+02 1.01972884e+02 + 1.01248155e+02 1.00529444e+02 9.98166971e+01 9.91098568e+01 9.84088685e+01 + 9.77136777e+01 9.70242302e+01 9.63404726e+01 9.56623521e+01 9.49898161e+01 + 9.43228130e+01 9.36612913e+01 9.30052002e+01 9.23544895e+01 9.17091095e+01 + 9.10690107e+01 9.04341445e+01 8.98044625e+01 8.91799170e+01 8.85604607e+01 + 8.79460467e+01 8.73366286e+01 8.67321606e+01 8.61325973e+01 8.55378935e+01 + 8.49480049e+01 8.43628874e+01 8.37824972e+01 8.32067912e+01 8.26357266e+01 + 8.20692610e+01 8.15073526e+01 8.09499598e+01 8.03970415e+01 7.98485571e+01 + 7.93044662e+01 7.87647290e+01 7.82293059e+01 7.76981580e+01 7.71712464e+01 + 7.66485329e+01 7.61299794e+01 7.56155485e+01 7.51052029e+01 7.45989058e+01 + 7.40966207e+01 7.35983115e+01 7.31039424e+01 7.26134780e+01 7.21268833e+01 + 7.16441236e+01 7.11651643e+01 7.06899717e+01 7.02185118e+01 6.97507513e+01 + 6.92866573e+01 6.88261968e+01 6.83693376e+01 6.79160476e+01 6.74662949e+01 + 6.70200480e+01 6.65772759e+01 6.61379476e+01 6.57020326e+01 6.52695006e+01 + 6.48403216e+01 6.44144660e+01 6.39919043e+01 6.35726074e+01 6.31565465e+01 + 6.27436931e+01 6.23340188e+01 6.19274956e+01 6.15240959e+01 6.11237920e+01 + 6.07265569e+01 6.03323636e+01 5.99411853e+01 5.95529958e+01 5.91677686e+01 + 5.87854781e+01 5.84060984e+01 5.80296042e+01 5.76559702e+01 5.72851715e+01 + 5.69171834e+01 5.65519814e+01 5.61895413e+01 5.58298391e+01 5.54728509e+01 + 5.51185533e+01 5.47669228e+01 5.44179365e+01 5.40715713e+01 5.37278046e+01 + 5.33866140e+01 5.30479772e+01 5.27118722e+01 5.23782772e+01 5.20471704e+01 + 5.17185306e+01 5.13923365e+01 5.10685671e+01 5.07472016e+01 5.04282193e+01 + 5.01115998e+01 4.97973230e+01 4.94853687e+01 4.91757171e+01 4.88683486e+01 + 4.85632436e+01 4.82603829e+01 4.79597473e+01 4.76613179e+01 4.73650760e+01 + 4.70710029e+01 4.67790803e+01 4.64892899e+01 4.62016137e+01 4.59160336e+01 + 4.56325321e+01 4.53510916e+01 4.50716945e+01 4.47943238e+01 4.45189623e+01 + 4.42455931e+01 4.39741994e+01 4.37047647e+01 4.34372724e+01 4.31717063e+01 + 4.29080503e+01 4.26462882e+01 4.23864043e+01 4.21283829e+01 4.18722084e+01 + 4.16178654e+01 4.13653386e+01 4.11146129e+01 4.08656732e+01 4.06185049e+01 + 4.03730930e+01 4.01294231e+01 3.98874807e+01 3.96472515e+01 3.94087213e+01 + 3.91718761e+01 3.89367019e+01 3.87031849e+01 3.84713115e+01 3.82410682e+01 + 3.80124414e+01 3.77854180e+01 3.75599847e+01 3.73361285e+01 3.71138365e+01 + 3.68930959e+01 3.66738939e+01 3.64562179e+01 3.62400556e+01 3.60253946e+01 + 3.58122225e+01 3.56005273e+01 3.53902971e+01 3.51815197e+01 3.49741836e+01 + 3.47682769e+01 3.45637881e+01 3.43607057e+01 3.41590183e+01 3.39587147e+01 + 3.37597837e+01 3.35622142e+01 3.33659952e+01 3.31711159e+01 3.29775655e+01 + 3.27853334e+01 3.25944089e+01 3.24047816e+01 3.22164410e+01 3.20293769e+01 + 3.18435792e+01 3.16590376e+01 3.14757421e+01 3.12936829e+01 3.11128501e+01 + 3.09332339e+01 3.07548247e+01 3.05776129e+01 3.04015890e+01 3.02267437e+01 + 3.00530675e+01 2.98805512e+01 2.97091858e+01 2.95389621e+01 2.93698711e+01 + 2.92019039e+01 2.90350517e+01 2.88693057e+01 2.87046574e+01 2.85410979e+01 + 2.83786189e+01 2.82172119e+01 2.80568686e+01 2.78975805e+01 2.77393396e+01 + 2.75821376e+01 2.74259665e+01 2.72708183e+01 2.71166850e+01 2.69635588e+01 + 2.68114319e+01 2.66602966e+01 2.65101451e+01 2.63609700e+01 2.62127637e+01 + 2.60655187e+01 2.59192276e+01 2.57738831e+01 2.56294781e+01 2.54860051e+01 + 2.53434572e+01 2.52018273e+01 2.50611083e+01 2.49212933e+01 2.47823754e+01 + 2.46443478e+01 2.45072037e+01 2.43709365e+01 2.42355394e+01 2.41010058e+01 + 2.39673294e+01 2.38345034e+01 2.37025216e+01 2.35713776e+01 2.34410651e+01 + 2.33115778e+01 2.31829095e+01 2.30550541e+01 2.29280055e+01 2.28017576e+01 + 2.26763044e+01 2.25516401e+01 2.24277587e+01 2.23046545e+01 2.21823215e+01 + 2.20607542e+01 2.19399467e+01 2.18198935e+01 2.17005890e+01 2.15820277e+01 + 2.14642040e+01 2.13471125e+01 2.12307479e+01 2.11151047e+01 2.10001777e+01 + 2.08859616e+01 2.07724512e+01 2.06596413e+01 2.05475268e+01 2.04361027e+01 + 2.03253638e+01 2.02153052e+01 2.01059220e+01 1.99972092e+01 1.98891619e+01 + 1.97817754e+01 1.96750448e+01 1.95689655e+01 1.94635326e+01 1.93587416e+01 + 1.92545877e+01 1.91510665e+01 1.90481733e+01 1.89459038e+01 1.88442533e+01 + 1.87432174e+01 1.86427918e+01 1.85429721e+01 1.84437540e+01 1.83451332e+01 + 1.82471054e+01 1.81496665e+01 1.80528122e+01 1.79565384e+01 1.78608409e+01 + 1.77657158e+01 1.76711590e+01 1.75771664e+01 1.74837341e+01 1.73908582e+01 + 1.72985347e+01 1.72067597e+01 1.71155295e+01 1.70248401e+01 1.69346879e+01 + 1.68450691e+01 1.67559799e+01 1.66674167e+01 1.65793758e+01 1.64918535e+01 + 1.64048464e+01 1.63183507e+01 1.62323630e+01 1.61468798e+01 1.60618976e+01 + 1.59774129e+01 1.58934223e+01 1.58099224e+01 1.57269098e+01 1.56443812e+01 + 1.55623334e+01 1.54807629e+01 1.53996665e+01 1.53190411e+01 1.52388833e+01 + 1.51591901e+01 1.50799582e+01 1.50011845e+01 1.49228660e+01 1.48449995e+01 + 1.47675820e+01 1.46906104e+01 1.46140818e+01 1.45379931e+01 1.44623414e+01 + 1.43871239e+01 1.43123374e+01 1.42379793e+01 1.41640465e+01 1.40905364e+01 + 1.40174459e+01 1.39447724e+01 1.38725131e+01 1.38006652e+01 1.37292261e+01 + 1.36581928e+01 1.35875629e+01 1.35173336e+01 1.34475023e+01 1.33780664e+01 + 1.33090232e+01 1.32403701e+01 1.31721047e+01 1.31042244e+01 1.30367265e+01 + 1.29696088e+01 1.29028685e+01 1.28365034e+01 1.27705109e+01 1.27048887e+01 + 1.26396342e+01 1.25747452e+01 1.25102192e+01 1.24460540e+01 1.23822471e+01 + 1.23187962e+01 1.22556992e+01 1.21929536e+01 1.21305572e+01 1.20685078e+01 + 1.20068031e+01 1.19454410e+01 1.18844192e+01 1.18237356e+01 1.17633880e+01 + 1.17033742e+01 1.16436922e+01 1.15843398e+01 1.15253150e+01 1.14666156e+01 + 1.14082396e+01 1.13501849e+01 1.12924496e+01 1.12350315e+01 1.11779288e+01 + 1.11211393e+01 1.10646612e+01 1.10084925e+01 1.09526312e+01 1.08970754e+01 + 1.08418233e+01 1.07868728e+01 1.07322221e+01 1.06778695e+01 1.06238129e+01 + 1.05700505e+01 1.05165806e+01 1.04634013e+01 1.04105108e+01 1.03579073e+01 + 1.03055891e+01 1.02535544e+01 1.02018014e+01 1.01503283e+01 1.00991336e+01 + 1.00482155e+01 9.99757219e+00 9.94720209e+00 9.89710351e+00 9.84727478e+00 + 9.79771426e+00 9.74842031e+00 9.69939130e+00 9.65062562e+00 9.60212167e+00 + 9.55387786e+00 9.50589262e+00 9.45816438e+00 9.41069157e+00 9.36347267e+00 + 9.31650613e+00 9.26979044e+00 9.22332408e+00 9.17710556e+00 9.13113337e+00 + 9.08540606e+00 9.03992214e+00 8.99468017e+00 8.94967869e+00 8.90491626e+00 + 8.86039147e+00 8.81610289e+00 8.77204912e+00 8.72822876e+00 8.68464043e+00 + 8.64128274e+00 8.59815434e+00 8.55525386e+00 8.51257996e+00 8.47013129e+00 + 8.42790653e+00 8.38590436e+00 8.34412347e+00 8.30256256e+00 8.26122033e+00 + 8.22009551e+00 8.17918681e+00 8.13849297e+00 8.09801274e+00 8.05774487e+00 + 8.01768811e+00 7.97784124e+00 7.93820303e+00 7.89877228e+00 7.85954777e+00 + 7.82052831e+00 7.78171270e+00 7.74309977e+00 7.70468835e+00 7.66647727e+00 + 7.62846537e+00 7.59065151e+00 7.55303453e+00 7.51561332e+00 7.47838674e+00 + 7.44135367e+00 7.40451301e+00 7.36786365e+00 7.33140449e+00 7.29513445e+00 + 7.25905245e+00 7.22315741e+00 7.18744826e+00 7.15192396e+00 7.11658343e+00 + 7.08142564e+00 7.04644956e+00 7.01165414e+00 6.97703837e+00 6.94260122e+00 + 6.90834169e+00 6.87425877e+00 6.84035146e+00 6.80661878e+00 6.77305973e+00 + 6.73967334e+00 6.70645864e+00 6.67341467e+00 6.64054045e+00 6.60783505e+00 + 6.57529751e+00 6.54292690e+00 6.51072227e+00 6.47868271e+00 6.44680729e+00 + 6.41509509e+00 6.38354521e+00 6.35215673e+00 6.32092877e+00 6.28986042e+00 + 6.25895081e+00 6.22819905e+00 6.19760426e+00 6.16716558e+00 6.13688214e+00 + 6.10675309e+00 6.07677756e+00 6.04695472e+00 6.01728371e+00 5.98776371e+00 + 5.95839388e+00 5.92917339e+00 5.90010142e+00 5.87117717e+00 5.84239981e+00 + 5.81376854e+00 5.78528256e+00 5.75694108e+00 5.72874330e+00 5.70068845e+00 + 5.67277573e+00 5.64500437e+00 5.61737361e+00 5.58988267e+00 5.56253080e+00 + 5.53531723e+00 5.50824123e+00 5.48130203e+00 5.45449890e+00 5.42783110e+00 + 5.40129789e+00 5.37489855e+00 5.34863236e+00 5.32249859e+00 5.29649653e+00 + 5.27062546e+00 5.24488469e+00 5.21927350e+00 5.19379121e+00 5.16843711e+00 + 5.14321052e+00 5.11811076e+00 5.09313713e+00 5.06828897e+00 5.04356560e+00 + 5.01896636e+00 4.99449057e+00 4.97013759e+00 4.94590674e+00 4.92179739e+00 + 4.89780888e+00 4.87394056e+00 4.85019180e+00 4.82656195e+00 4.80305039e+00 + 4.77965649e+00 4.75637962e+00 4.73321916e+00 4.71017449e+00 4.68724499e+00 + 4.66443006e+00 4.64172909e+00 4.61914148e+00 4.59666662e+00 4.57430392e+00 + 4.55205278e+00 4.52991263e+00 4.50788286e+00 4.48596291e+00 4.46415218e+00 + 4.44245011e+00 4.42085612e+00 4.39936965e+00 4.37799012e+00 4.35671699e+00 + 4.33554968e+00 4.31448764e+00 4.29353033e+00 4.27267718e+00 4.25192766e+00 + 4.23128123e+00 4.21073734e+00 4.19029546e+00 4.16995505e+00 4.14971559e+00 + 4.12957654e+00 4.10953739e+00 4.08959761e+00 4.06975669e+00 4.05001410e+00 + 4.03036935e+00 4.01082191e+00 3.99137129e+00 3.97201698e+00 3.95275847e+00 + 3.93359529e+00 3.91452691e+00 3.89555287e+00 3.87667266e+00 3.85788581e+00 + 3.83919182e+00 3.82059022e+00 3.80208053e+00 3.78366227e+00 3.76533498e+00 + 3.74709818e+00 3.72895141e+00 3.71089420e+00 3.69292608e+00 3.67504661e+00 + 3.65725533e+00 3.63955177e+00 3.62193549e+00 3.60440604e+00 3.58696298e+00 + 3.56960585e+00 3.55233422e+00 3.53514766e+00 3.51804571e+00 3.50102796e+00 + 3.48409396e+00 3.46724329e+00 3.45047553e+00 3.43379024e+00 3.41718700e+00 + 3.40066541e+00 3.38422503e+00 3.36786545e+00 3.35158627e+00 3.33538707e+00 + 3.31926744e+00 3.30322698e+00 3.28726528e+00 3.27138194e+00 3.25557657e+00 + 3.23984876e+00 3.22419813e+00 3.20862427e+00 3.19312680e+00 3.17770533e+00 + 3.16235948e+00 3.14708885e+00 3.13189308e+00 3.11677177e+00 3.10172455e+00 + 3.08675105e+00 3.07185089e+00 3.05702370e+00 3.04226911e+00 3.02758675e+00 + 3.01297626e+00 2.99843728e+00 2.98396943e+00 2.96957237e+00 2.95524574e+00 + 2.94098917e+00 2.92680232e+00 2.91268483e+00 2.89863636e+00 2.88465656e+00 + 2.87074507e+00 2.85690156e+00 2.84312568e+00 2.82941710e+00 2.81577547e+00 + 2.80220045e+00 2.78869172e+00 2.77524894e+00 2.76187177e+00 2.74855989e+00 + 2.73531297e+00 2.72213068e+00 2.70901271e+00 2.69595871e+00 2.68296839e+00 + 2.67004141e+00 2.65717745e+00 2.64437621e+00 2.63163737e+00 2.61896061e+00 + 2.60634563e+00 2.59379211e+00 2.58129976e+00 2.56886825e+00 2.55649729e+00 + 2.54418658e+00 2.53193581e+00 2.51974468e+00 2.50761290e+00 2.49554018e+00 + 2.48352620e+00 2.47157070e+00 2.45967336e+00 2.44783390e+00 2.43605203e+00 + 2.42432747e+00 2.41265993e+00 2.40104912e+00 2.38949477e+00 2.37799659e+00 + 2.36655430e+00 2.35516763e+00 2.34383629e+00 2.33256002e+00 2.32133853e+00 + 2.31017156e+00 2.29905884e+00 2.28800009e+00 2.27699505e+00 2.26604346e+00 + 2.25514503e+00 2.24429952e+00 2.23350666e+00 2.22276619e+00 2.21207785e+00 + 2.20144138e+00 2.19085652e+00 2.18032302e+00 2.16984062e+00 2.15940907e+00 + 2.14902812e+00 2.13869751e+00 2.12841701e+00 2.11818636e+00 2.10800531e+00 + 2.09787362e+00 2.08779104e+00 2.07775734e+00 2.06777226e+00 2.05783558e+00 + 2.04794705e+00 2.03810643e+00 2.02831349e+00 2.01856799e+00 2.00886969e+00 + 1.99921838e+00 1.98961380e+00 1.98005574e+00 1.97054395e+00 1.96107823e+00 + 1.95165833e+00 1.94228403e+00 1.93295511e+00 1.92367134e+00 1.91443251e+00 + 1.90523838e+00 1.89608874e+00 1.88698338e+00 1.87792206e+00 1.86890459e+00 + 1.85993073e+00 1.85100028e+00 1.84211302e+00 1.83326875e+00 1.82446724e+00 + 1.81570829e+00 1.80699169e+00 1.79831723e+00 1.78968471e+00 1.78109391e+00 + 1.77254464e+00 1.76403669e+00 1.75556986e+00 1.74714394e+00 1.73875873e+00 + 1.73041405e+00 1.72210967e+00 1.71384542e+00 1.70562109e+00 1.69743648e+00 + 1.68929141e+00 1.68118567e+00 1.67311908e+00 1.66509145e+00 1.65710257e+00 + 1.64915227e+00 1.64124035e+00 1.63336663e+00 1.62553091e+00 1.61773302e+00 + 1.60997277e+00 1.60224997e+00 1.59456444e+00 1.58691600e+00 1.57930447e+00 + 1.57172966e+00 1.56419140e+00 1.55668951e+00 1.54922381e+00 1.54179412e+00 + 1.53440027e+00 1.52704208e+00 1.51971938e+00 1.51243200e+00 1.50517976e+00 + 1.49796249e+00 1.49078002e+00 1.48363218e+00 1.47651881e+00 1.46943972e+00 + 1.46239477e+00 1.45538377e+00 1.44840657e+00 1.44146299e+00 1.43455288e+00 + 1.42767608e+00 1.42083241e+00 1.41402172e+00 1.40724385e+00 1.40049863e+00 + 1.39378592e+00 1.38710554e+00 1.38045735e+00 1.37384119e+00 1.36725689e+00 + 1.36070431e+00 1.35418329e+00 1.34769367e+00 1.34123531e+00 1.33480805e+00 + 1.32841174e+00 1.32204623e+00 1.31571137e+00 1.30940702e+00 1.30313301e+00 + 1.29688921e+00 1.29067547e+00 1.28449163e+00 1.27833757e+00 1.27221313e+00 + 1.26611816e+00 1.26005253e+00 1.25401609e+00 1.24800870e+00 1.24203022e+00 + 1.23608051e+00 1.23015943e+00 1.22426684e+00 1.21840259e+00 1.21256657e+00 + 1.20675861e+00 1.20097860e+00 1.19522640e+00 1.18950186e+00 1.18380486e+00 + 1.17813526e+00 1.17249293e+00 1.16687773e+00 1.16128954e+00 1.15572823e+00 + 1.15019366e+00 1.14468570e+00 1.13920423e+00 1.13374911e+00 1.12832022e+00 + 1.12291743e+00 1.11754062e+00 1.11218966e+00 1.10686442e+00 1.10156477e+00 + 1.09629061e+00 1.09104179e+00 1.08581821e+00 1.08061973e+00 1.07544623e+00 + 1.07029760e+00 1.06517371e+00 1.06007445e+00 1.05499969e+00 1.04994931e+00 + 1.04492320e+00 1.03992125e+00 1.03494332e+00 1.02998931e+00 1.02505910e+00 + 1.02015258e+00 1.01526963e+00 1.01041014e+00 1.00557399e+00 1.00076107e+00 + 9.95971269e-01 9.91204474e-01 9.86460574e-01 9.81739459e-01 9.77041017e-01 + 9.72365141e-01 9.67711719e-01 9.63080644e-01 9.58471808e-01 9.53885103e-01 + 9.49320422e-01 9.44777659e-01 9.40256708e-01 9.35757463e-01 9.31279819e-01 + 9.26823673e-01 9.22388920e-01 9.17975456e-01 9.13583180e-01 9.09211987e-01 + 9.04861778e-01 9.00532450e-01 8.96223902e-01 8.91936035e-01 8.87668748e-01 + 8.83421941e-01 8.79195517e-01 8.74989376e-01 8.70803420e-01 8.66637553e-01 + 8.62491677e-01 8.58365695e-01 8.54259512e-01 8.50173032e-01 8.46106160e-01 + 8.42058801e-01 8.38030861e-01 8.34022246e-01 8.30032864e-01 8.26062621e-01 + 8.22111425e-01 8.18179184e-01 8.14265806e-01 8.10371202e-01 8.06495279e-01 + 8.02637948e-01 7.98799120e-01 7.94978705e-01 7.91176614e-01 7.87392758e-01 + 7.83627051e-01 7.79879404e-01 7.76149731e-01 7.72437944e-01 7.68743958e-01 + 7.65067686e-01 7.61409044e-01 7.57767945e-01 7.54144307e-01 7.50538044e-01 + 7.46949073e-01 7.43377311e-01 7.39822674e-01 7.36285080e-01 7.32764446e-01 + 7.29260693e-01 7.25773736e-01 7.22303497e-01 7.18849895e-01 7.15412848e-01 + 7.11992278e-01 7.08588105e-01 7.05200250e-01 7.01828635e-01 6.98473181e-01 + 6.95133811e-01 6.91810447e-01 6.88503011e-01 6.85211428e-01 6.81935621e-01 + 6.78675514e-01 6.75431031e-01 6.72202097e-01 6.68988638e-01 6.65790578e-01 + 6.62607844e-01 6.59440362e-01 6.56288059e-01 6.53150861e-01 6.50028696e-01 + 6.46921491e-01 6.43829174e-01 6.40751674e-01 6.37688920e-01 6.34640840e-01 + 6.31607364e-01 6.28588422e-01 6.25583943e-01 6.22593858e-01 6.19618099e-01 + 6.16656595e-01 6.13709278e-01 6.10776081e-01 6.07856935e-01 6.04951772e-01 + 6.02060526e-01 5.99183129e-01 5.96319515e-01 5.93469617e-01 5.90633370e-01 + 5.87810708e-01 5.85001566e-01 5.82205878e-01 5.79423580e-01 5.76654607e-01 + 5.73898896e-01 5.71156383e-01 5.68427004e-01 5.65710696e-01 5.63007396e-01 + 5.60317042e-01 5.57639571e-01 5.54974922e-01 5.52323033e-01 5.49683843e-01 + 5.47057290e-01 5.44443314e-01 5.41841854e-01 5.39252851e-01 5.36676244e-01 + 5.34111973e-01 5.31559981e-01 5.29020206e-01 5.26492592e-01 5.23977079e-01 + 5.21473609e-01 5.18982125e-01 5.16502568e-01 5.14034882e-01 5.11579010e-01 + 5.09134894e-01 5.06702479e-01 5.04281707e-01 5.01872524e-01 4.99474873e-01 + 4.97088699e-01 4.94713948e-01 4.92350563e-01 4.89998491e-01 4.87657677e-01 + 4.85328067e-01 4.83009607e-01 4.80702244e-01 4.78405925e-01 4.76120596e-01 + 4.73846204e-01 4.71582698e-01 4.69330025e-01 4.67088133e-01 4.64856970e-01 + 4.62636484e-01 4.60426625e-01 4.58227341e-01 4.56038581e-01 4.53860296e-01 + 4.51692435e-01 4.49534947e-01 4.47387783e-01 4.45250893e-01 4.43124229e-01 + 4.41007741e-01 4.38901379e-01 4.36805097e-01 4.34718844e-01 4.32642574e-01 + 4.30576237e-01 4.28519788e-01 4.26473177e-01 4.24436358e-01 4.22409284e-01 + 4.20391908e-01 4.18384183e-01 4.16386064e-01 4.14397504e-01 4.12418457e-01 + 4.10448878e-01 4.08488721e-01 4.06537941e-01 4.04596493e-01 4.02664332e-01 + 4.00741414e-01 3.98827694e-01 3.96923129e-01 3.95027674e-01 3.93141285e-01 + 3.91263920e-01 3.89395535e-01 3.87536086e-01 3.85685532e-01 3.83843828e-01 + 3.82010934e-01 3.80186806e-01 3.78371402e-01 3.76564682e-01 3.74766602e-01 + 3.72977122e-01 3.71196200e-01 3.69423796e-01 3.67659868e-01 3.65904377e-01 + 3.64157280e-01 3.62418539e-01 3.60688113e-01 3.58965962e-01 3.57252046e-01 + 3.55546327e-01 3.53848764e-01 3.52159319e-01 3.50477953e-01 3.48804627e-01 + 3.47139302e-01 3.45481941e-01 3.43832504e-01 3.42190955e-01 3.40557254e-01 + 3.38931366e-01 3.37313251e-01 3.35702873e-01 3.34100195e-01 3.32505179e-01 + 3.30917790e-01 3.29337990e-01 3.27765744e-01 3.26201014e-01 3.24643766e-01 + 3.23093962e-01 3.21551569e-01 3.20016548e-01 3.18488867e-01 3.16968489e-01 + 3.15455379e-01 3.13949503e-01 3.12450826e-01 3.10959314e-01 3.09474931e-01 + 3.07997645e-01 3.06527420e-01 3.05064224e-01 3.03608022e-01 3.02158781e-01 + 3.00716467e-01 2.99281048e-01 2.97852490e-01 2.96430761e-01 2.95015827e-01 + 2.93607657e-01 2.92206218e-01 2.90811477e-01 2.89423403e-01 2.88041963e-01 + 2.86667126e-01 2.85298860e-01 2.83937134e-01 2.82581916e-01 2.81233175e-01 + 2.79890881e-01 2.78555001e-01 2.77225507e-01 2.75902366e-01 2.74585549e-01 + 2.73275025e-01 2.71970764e-01 2.70672736e-01 2.69380912e-01 2.68095261e-01 + 2.66815754e-01 2.65542362e-01 2.64275055e-01 2.63013804e-01 2.61758580e-01 + 2.60509355e-01 2.59266099e-01 2.58028784e-01 2.56797382e-01 2.55571864e-01 + 2.54352202e-01 2.53138368e-01 2.51930334e-01 2.50728072e-01 2.49531555e-01 + 2.48340756e-01 2.47155646e-01 2.45976199e-01 2.44802387e-01 2.43634184e-01 + 2.42471562e-01 2.41314495e-01 2.40162957e-01 2.39016920e-01 2.37876359e-01 + 2.36741248e-01 2.35611559e-01 2.34487268e-01 2.33368348e-01 2.32254774e-01 + 2.31146520e-01 2.30043561e-01 2.28945871e-01 2.27853426e-01 2.26766199e-01 + 2.25684166e-01 2.24607302e-01 2.23535583e-01 2.22468984e-01 2.21407480e-01 + 2.20351047e-01 2.19299660e-01 2.18253296e-01 2.17211931e-01 2.16175540e-01 + 2.15144100e-01 2.14113243e-01 2.13069891e-01 2.12013376e-01 2.10943940e-01 + 2.09861825e-01 2.08767274e-01 2.07660532e-01 2.06541843e-01 2.05411450e-01 + 2.04269601e-01 2.03116539e-01 2.01952510e-01 2.00777762e-01 1.99592539e-01 + 1.98397087e-01 1.97191654e-01 1.95976486e-01 1.94751828e-01 1.93517927e-01 + 1.92275030e-01 1.91023382e-01 1.89763228e-01 1.88494815e-01 1.87218387e-01 + 1.85934189e-01 1.84642465e-01 1.83343460e-01 1.82037416e-01 1.80724576e-01 + 1.79405183e-01 1.78079478e-01 1.76747703e-01 1.75410096e-01 1.74066898e-01 + 1.72718347e-01 1.71364681e-01 1.70006137e-01 1.68642951e-01 1.67275357e-01 + 1.65903590e-01 1.64527883e-01 1.63148467e-01 1.61765573e-01 1.60379431e-01 + 1.58990269e-01 1.57598315e-01 1.56203794e-01 1.54806930e-01 1.53407948e-01 + 1.52007068e-01 1.50604512e-01 1.49200499e-01 1.47795247e-01 1.46388970e-01 + 1.44981885e-01 1.43574205e-01 1.42166140e-01 1.40757901e-01 1.39349697e-01 + 1.37941733e-01 1.36534215e-01 1.35127346e-01 1.33721328e-01 1.32316360e-01 + 1.30912641e-01 1.29510367e-01 1.28109732e-01 1.26710929e-01 1.25314148e-01 + 1.23919578e-01 1.22527407e-01 1.21137818e-01 1.19750996e-01 1.18367121e-01 + 1.16986372e-01 1.15608926e-01 1.14234958e-01 1.12864641e-01 1.11498147e-01 + 1.10135644e-01 1.08777298e-01 1.07423275e-01 1.06073737e-01 1.04728844e-01 + 1.03388755e-01 1.02053626e-01 1.00723611e-01 9.93988621e-02 9.80795283e-02 + 9.67657573e-02 9.54576944e-02 9.41554826e-02 9.28592628e-02 9.15691736e-02 + 9.02853512e-02 8.90079298e-02 8.77370413e-02 8.64728153e-02 8.52153791e-02 + 8.39648579e-02 8.27213744e-02 8.14850493e-02 8.02560007e-02 7.90343447e-02 + 7.78201951e-02 7.66136632e-02 7.54148582e-02 7.42238870e-02 7.30408542e-02 + 7.18658621e-02 7.06990106e-02 6.95403977e-02 6.83901186e-02 6.72482667e-02 + 6.61149327e-02 6.49902053e-02 6.38741708e-02 6.27669135e-02 6.16685149e-02 + 6.05790548e-02 5.94986105e-02 5.84272569e-02 5.73650669e-02 5.63121110e-02 + 5.52684577e-02 5.42341729e-02 5.32093207e-02 5.21939626e-02 5.11881582e-02 + 5.01919647e-02 4.92054373e-02 4.82286288e-02 4.72615900e-02 4.63043694e-02 + 4.53570136e-02 4.44195668e-02 4.34920712e-02 4.25745668e-02 4.16670917e-02 + 4.07696815e-02 3.98823701e-02 3.90051893e-02 3.81381685e-02 3.72813355e-02 + 3.64347158e-02 3.55983328e-02 3.47722083e-02 3.39563616e-02 3.31508103e-02 + 3.23555701e-02 3.15706545e-02 3.07960754e-02 3.00318424e-02 2.92779635e-02 + 2.85344447e-02 2.78012900e-02 2.70785019e-02 2.63660805e-02 2.56640247e-02 + 2.49723312e-02 2.42909949e-02 2.36200091e-02 2.29593653e-02 2.23090532e-02 + 2.16690608e-02 2.10393744e-02 2.04199786e-02 1.98108565e-02 1.92119892e-02 + 1.86233564e-02 1.80449363e-02 1.74767052e-02 1.69186380e-02 1.63707081e-02 + 1.58328873e-02 1.53051458e-02 1.47874523e-02 1.42797743e-02 1.37820775e-02 + 1.32943263e-02 1.28164837e-02 1.23485112e-02 1.18903690e-02 1.14420160e-02 + 1.10034096e-02 1.05745061e-02 1.01552602e-02 9.74562554e-03 9.34555446e-03 + 8.95499803e-03 8.57390613e-03 8.20222740e-03 7.83990935e-03 7.48689830e-03 + 7.14313944e-03 6.80857685e-03 6.48315351e-03 6.16681133e-03 5.85949117e-03 + 5.56113283e-03 5.27167514e-03 4.99105590e-03 4.71921196e-03 4.45607922e-03 + 4.20159263e-03 3.95568626e-03 3.71829328e-03 3.48934599e-03 3.26877583e-03 + 3.05651345e-03 2.85248865e-03 2.65663049e-03 2.46886724e-03 2.28912643e-03 + 2.11733486e-03 1.95341864e-03 1.79730319e-03 1.64891328e-03 1.50817302e-03 + 1.37500590e-03 1.24933483e-03 1.13108212e-03 1.02016951e-03 9.16518227e-04 + 8.20048948e-04 7.30681861e-04 6.48336671e-04 5.72932617e-04 5.04388498e-04 + 4.42622685e-04 3.87553146e-04 3.39097464e-04 2.97172855e-04 2.61696185e-04 + 2.32583995e-04 2.09752512e-04 1.93117675e-04 1.82595147e-04 1.78100339e-04 + 5.10303315e+05 5.10046225e+05 2.53097548e+05 1.67464388e+05 1.24659895e+05 + 9.89867038e+04 8.18790278e+04 6.96658180e+04 6.05115520e+04 5.33964966e+04 + 4.77088135e+04 4.30591523e+04 3.91879473e+04 3.59155003e+04 3.31134563e+04 + 3.06876893e+04 2.85676056e+04 2.66992224e+04 2.50405539e+04 2.35584542e+04 + 2.22264069e+04 2.10229471e+04 1.99305132e+04 1.89345980e+04 1.80231129e+04 + 1.71859038e+04 1.64143793e+04 1.57012210e+04 1.50401564e+04 1.44257787e+04 + 1.38534022e+04 1.33189460e+04 1.28188399e+04 1.23499464e+04 1.19094977e+04 + 1.14950424e+04 1.11044018e+04 1.07356328e+04 1.03869972e+04 1.00569354e+04 + 9.74404375e+03 9.44705580e+03 9.16482594e+03 8.89631528e+03 8.64057954e+03 + 8.39675857e+03 8.16406712e+03 7.94178697e+03 7.72925986e+03 7.52588141e+03 + 7.33109575e+03 7.14439069e+03 6.96529360e+03 6.79336763e+03 6.62820838e+03 + 6.46944099e+03 6.31671748e+03 6.16971439e+03 6.02813065e+03 5.89168572e+03 + 5.76011783e+03 5.63318249e+03 5.51065103e+03 5.39230941e+03 5.27795704e+03 + 5.16740574e+03 5.06047881e+03 4.95701018e+03 4.85684361e+03 4.75983198e+03 + 4.66583665e+03 4.57472683e+03 4.48637909e+03 4.40067679e+03 4.31750967e+03 + 4.23677339e+03 4.15836916e+03 4.08220338e+03 4.00818728e+03 3.93623666e+03 + 3.86627154e+03 3.79821596e+03 3.73199770e+03 3.66754806e+03 3.60480166e+03 + 3.54369622e+03 3.48417242e+03 3.42617367e+03 3.36964602e+03 3.31453796e+03 + 3.26080030e+03 3.20838606e+03 3.15725033e+03 3.10735015e+03 3.05864443e+03 + 3.01109383e+03 2.96466068e+03 2.91930891e+03 2.87500390e+03 2.83171251e+03 + 2.78940292e+03 2.74804459e+03 2.70760821e+03 2.66806564e+03 2.62938983e+03 + 2.59155479e+03 2.55453552e+03 2.51830799e+03 2.48284908e+03 2.44813652e+03 + 2.41414887e+03 2.38086551e+03 2.34826654e+03 2.31633280e+03 2.28504581e+03 + 2.25438775e+03 2.22434144e+03 2.19489029e+03 2.16601829e+03 2.13770999e+03 + 2.10995046e+03 2.08272529e+03 2.05602053e+03 2.02982273e+03 2.00411886e+03 + 1.97889633e+03 1.95414296e+03 1.92984697e+03 1.90599695e+03 1.88258187e+03 + 1.85959103e+03 1.83701408e+03 1.81484100e+03 1.79306205e+03 1.77166784e+03 + 1.75064922e+03 1.72999735e+03 1.70970364e+03 1.68975977e+03 1.67015765e+03 + 1.65088945e+03 1.63194756e+03 1.61332459e+03 1.59501336e+03 1.57700693e+03 + 1.55929851e+03 1.54188153e+03 1.52474960e+03 1.50789653e+03 1.49131626e+03 + 1.47500294e+03 1.45895085e+03 1.44315444e+03 1.42760833e+03 1.41230725e+03 + 1.39724609e+03 1.38241988e+03 1.36782377e+03 1.35345305e+03 1.33930313e+03 + 1.32536953e+03 1.31164791e+03 1.29813401e+03 1.28482370e+03 1.27171296e+03 + 1.25879786e+03 1.24607457e+03 1.23353935e+03 1.22118857e+03 1.20901868e+03 + 1.19702622e+03 1.18520781e+03 1.17356016e+03 1.16208005e+03 1.15076434e+03 + 1.13960999e+03 1.12861399e+03 1.11777342e+03 1.10708545e+03 1.09654729e+03 + 1.08615621e+03 1.07590958e+03 1.06580478e+03 1.05583930e+03 1.04601066e+03 + 1.03631643e+03 1.02675426e+03 1.01732183e+03 1.00801689e+03 9.98837223e+02 + 9.89780672e+02 9.80845126e+02 9.72028519e+02 9.63328832e+02 9.54744087e+02 + 9.46272351e+02 9.37911733e+02 9.29660381e+02 9.21516483e+02 9.13478267e+02 + 9.05543995e+02 8.97711969e+02 8.89980525e+02 8.82348035e+02 8.74812902e+02 + 8.67373564e+02 8.60028492e+02 8.52776186e+02 8.45615178e+02 8.38544029e+02 + 8.31561330e+02 8.24665699e+02 8.17855783e+02 8.11130255e+02 8.04487814e+02 + 7.97927187e+02 7.91447123e+02 7.85046396e+02 7.78723806e+02 7.72478175e+02 + 7.66308347e+02 7.60213188e+02 7.54191588e+02 7.48242457e+02 7.42364723e+02 + 7.36557340e+02 7.30819275e+02 7.25149520e+02 7.19547083e+02 7.14010990e+02 + 7.08540286e+02 7.03134035e+02 6.97791316e+02 6.92511225e+02 6.87292875e+02 + 6.82135395e+02 6.77037931e+02 6.71999642e+02 6.67019703e+02 6.62097305e+02 + 6.57231651e+02 6.52421960e+02 6.47667464e+02 6.42967409e+02 6.38321053e+02 + 6.33727668e+02 6.29186538e+02 6.24696960e+02 6.20258243e+02 6.15869708e+02 + 6.11530686e+02 6.07240521e+02 6.02998567e+02 5.98804191e+02 5.94656769e+02 + 5.90555686e+02 5.86500341e+02 5.82490139e+02 5.78524499e+02 5.74602845e+02 + 5.70724613e+02 5.66889250e+02 5.63096208e+02 5.59344950e+02 5.55634949e+02 + 5.51965684e+02 5.48336644e+02 5.44747325e+02 5.41197231e+02 5.37685877e+02 + 5.34212781e+02 5.30777471e+02 5.27379483e+02 5.24018359e+02 5.20693648e+02 + 5.17404908e+02 5.14151701e+02 5.10933598e+02 5.07750176e+02 5.04601017e+02 + 5.01485712e+02 4.98403856e+02 4.95355051e+02 4.92338905e+02 4.89355032e+02 + 4.86403051e+02 4.83482588e+02 4.80593273e+02 4.77734743e+02 4.74906640e+02 + 4.72108610e+02 4.69340305e+02 4.66601383e+02 4.63891506e+02 4.61210340e+02 + 4.58557558e+02 4.55932836e+02 4.53335856e+02 4.50766302e+02 4.48223866e+02 + 4.45708241e+02 4.43219127e+02 4.40756227e+02 4.38319248e+02 4.35907902e+02 + 4.33521903e+02 4.31160971e+02 4.28824829e+02 4.26513205e+02 4.24225829e+02 + 4.21962435e+02 4.19722762e+02 4.17506550e+02 4.15313545e+02 4.13143496e+02 + 4.10996155e+02 4.08871275e+02 4.06768616e+02 4.04687940e+02 4.02629011e+02 + 4.00591597e+02 3.98575469e+02 3.96580400e+02 3.94606168e+02 3.92652552e+02 + 3.90719335e+02 3.88806302e+02 3.86913240e+02 3.85039942e+02 3.83186199e+02 + 3.81351809e+02 3.79536569e+02 3.77740281e+02 3.75962749e+02 3.74203778e+02 + 3.72463176e+02 3.70740756e+02 3.69036329e+02 3.67349711e+02 3.65680719e+02 + 3.64029175e+02 3.62394898e+02 3.60777715e+02 3.59177450e+02 3.57593933e+02 + 3.56026994e+02 3.54476464e+02 3.52942179e+02 3.51423975e+02 3.49921689e+02 + 3.48435163e+02 3.46964237e+02 3.45508756e+02 3.44068565e+02 3.42643511e+02 + 3.41233444e+02 3.39838215e+02 3.38457674e+02 3.37091678e+02 3.35740081e+02 + 3.34402740e+02 3.33079515e+02 3.31770266e+02 3.30474855e+02 3.29193145e+02 + 3.27925002e+02 3.26670291e+02 3.25428880e+02 3.24200640e+02 3.22985439e+02 + 3.21783151e+02 3.20593649e+02 3.19416806e+02 3.18252500e+02 3.17100608e+02 + 3.15961007e+02 3.14833578e+02 3.13718202e+02 3.12614761e+02 3.11523138e+02 + 3.10443218e+02 3.09374887e+02 3.08318030e+02 3.07272538e+02 3.06238297e+02 + 3.05215199e+02 3.04203134e+02 3.03201996e+02 3.02211676e+02 3.01232070e+02 + 3.00263073e+02 2.99304581e+02 2.98356492e+02 2.97418703e+02 2.96491113e+02 + 2.95573624e+02 2.94666135e+02 2.93768550e+02 2.92880770e+02 2.92002699e+02 + 2.91134242e+02 2.90275304e+02 2.89425791e+02 2.88585611e+02 2.87754672e+02 + 2.86932882e+02 2.86120150e+02 2.85316386e+02 2.84521503e+02 2.83735411e+02 + 2.82958023e+02 2.82189252e+02 2.81429013e+02 2.80677219e+02 2.79933787e+02 + 2.79198632e+02 2.78471671e+02 2.77752821e+02 2.77042001e+02 2.76339129e+02 + 2.75644124e+02 2.74956907e+02 2.74277399e+02 2.73605519e+02 2.72941192e+02 + 2.72284337e+02 2.71634880e+02 2.70992743e+02 2.70357851e+02 2.69730128e+02 + 2.69109499e+02 2.68495891e+02 2.67889230e+02 2.67289443e+02 2.66696458e+02 + 2.66110201e+02 2.65530603e+02 2.64957592e+02 2.64391096e+02 2.63831048e+02 + 2.63277376e+02 2.62730013e+02 2.62188888e+02 2.61653935e+02 2.61125086e+02 + 2.60602273e+02 2.60085431e+02 2.59574492e+02 2.59069390e+02 2.58570061e+02 + 2.58076440e+02 2.57588462e+02 2.57106063e+02 2.56629179e+02 2.56157746e+02 + 2.55691703e+02 2.55230987e+02 2.54775535e+02 2.54325287e+02 2.53880179e+02 + 2.53440153e+02 2.53005147e+02 2.52575100e+02 2.52149954e+02 2.51729649e+02 + 2.51314126e+02 2.50903326e+02 2.50497191e+02 2.50095662e+02 2.49698683e+02 + 2.49306196e+02 2.48918144e+02 2.48534470e+02 2.48155118e+02 2.47780033e+02 + 2.47409158e+02 2.47042438e+02 2.46679819e+02 2.46321246e+02 2.45966664e+02 + 2.45616020e+02 2.45269260e+02 2.44926330e+02 2.44587178e+02 2.44251750e+02 + 2.43919995e+02 2.43591860e+02 2.43267294e+02 2.42946244e+02 2.42628660e+02 + 2.42314491e+02 2.42003686e+02 2.41696195e+02 2.41391967e+02 2.41090953e+02 + 2.40793105e+02 2.40498371e+02 2.40206704e+02 2.39918055e+02 2.39632375e+02 + 2.39349617e+02 2.39069733e+02 2.38792675e+02 2.38518396e+02 2.38246849e+02 + 2.37977988e+02 2.37711767e+02 2.37448138e+02 2.37187057e+02 2.36928477e+02 + 2.36672354e+02 2.36418643e+02 2.36167298e+02 2.35918276e+02 2.35671532e+02 + 2.35427023e+02 2.35184704e+02 2.34944533e+02 2.34706466e+02 2.34470460e+02 + 2.34236473e+02 2.34004463e+02 2.33774388e+02 2.33546205e+02 2.33319874e+02 + 2.33095353e+02 2.32872602e+02 2.32651579e+02 2.32432244e+02 2.32214558e+02 + 2.31998480e+02 2.31783971e+02 2.31570991e+02 2.31359501e+02 2.31149464e+02 + 2.30940839e+02 2.30733589e+02 2.30527677e+02 2.30323063e+02 2.30119712e+02 + 2.29917585e+02 2.29716646e+02 2.29516859e+02 2.29318186e+02 2.29120593e+02 + 2.28924042e+02 2.28728500e+02 2.28533929e+02 2.28340297e+02 2.28147567e+02 + 2.27955705e+02 2.27764678e+02 2.27574452e+02 2.27384992e+02 2.27196266e+02 + 2.27008241e+02 2.26820884e+02 2.26634163e+02 2.26448044e+02 2.26262498e+02 + 2.26077491e+02 2.25892993e+02 2.25708972e+02 2.25525399e+02 2.25342242e+02 + 2.25159470e+02 2.24977056e+02 2.24794968e+02 2.24613177e+02 2.24431655e+02 + 2.24250372e+02 2.24069301e+02 2.23888413e+02 2.23707679e+02 2.23527074e+02 + 2.23346568e+02 2.23166136e+02 2.22985751e+02 2.22805385e+02 2.22625013e+02 + 2.22444610e+02 2.22264149e+02 2.22083605e+02 2.21902954e+02 2.21722170e+02 + 2.21541230e+02 2.21360109e+02 2.21178783e+02 2.20997229e+02 2.20815424e+02 + 2.20633345e+02 2.20450968e+02 2.20268273e+02 2.20085237e+02 2.19901837e+02 + 2.19718053e+02 2.19533864e+02 2.19349248e+02 2.19164186e+02 2.18978656e+02 + 2.18792640e+02 2.18606116e+02 2.18419067e+02 2.18231472e+02 2.18043313e+02 + 2.17854572e+02 2.17665230e+02 2.17475270e+02 2.17284673e+02 2.17093423e+02 + 2.16901503e+02 2.16708895e+02 2.16515584e+02 2.16321553e+02 2.16126786e+02 + 2.15931269e+02 2.15734985e+02 2.15537919e+02 2.15340058e+02 2.15141386e+02 + 2.14941889e+02 2.14741555e+02 2.14540368e+02 2.14338316e+02 2.14135386e+02 + 2.13931566e+02 2.13726842e+02 2.13521203e+02 2.13314637e+02 2.13107133e+02 + 2.12898678e+02 2.12689263e+02 2.12478876e+02 2.12267508e+02 2.12055147e+02 + 2.11841784e+02 2.11627410e+02 2.11412015e+02 2.11195590e+02 2.10978127e+02 + 2.10759616e+02 2.10540050e+02 2.10319420e+02 2.10097719e+02 2.09874940e+02 + 2.09651076e+02 2.09426118e+02 2.09200061e+02 2.08972899e+02 2.08744625e+02 + 2.08515233e+02 2.08284718e+02 2.08053074e+02 2.07820297e+02 2.07586381e+02 + 2.07351321e+02 2.07115114e+02 2.06877755e+02 2.06639241e+02 2.06399567e+02 + 2.06158730e+02 2.05916728e+02 2.05673556e+02 2.05429214e+02 2.05183697e+02 + 2.04937004e+02 2.04689132e+02 2.04440081e+02 2.04189848e+02 2.03938432e+02 + 2.03685832e+02 2.03432047e+02 2.03177076e+02 2.02920920e+02 2.02663577e+02 + 2.02405047e+02 2.02145331e+02 2.01884430e+02 2.01622343e+02 2.01359072e+02 + 2.01094617e+02 2.00828980e+02 2.00562162e+02 2.00294164e+02 2.00024989e+02 + 1.99754638e+02 1.99483114e+02 1.99210418e+02 1.98936553e+02 1.98661523e+02 + 1.98385329e+02 1.98107975e+02 1.97829464e+02 1.97549799e+02 1.97268984e+02 + 1.96987023e+02 1.96703919e+02 1.96419677e+02 1.96134301e+02 1.95847795e+02 + 1.95560163e+02 1.95271410e+02 1.94981542e+02 1.94690563e+02 1.94398477e+02 + 1.94105292e+02 1.93811010e+02 1.93515640e+02 1.93219185e+02 1.92921652e+02 + 1.92623046e+02 1.92323374e+02 1.92022643e+02 1.91720857e+02 1.91418024e+02 + 1.91114151e+02 1.90809243e+02 1.90503308e+02 1.90196352e+02 1.89888383e+02 + 1.89579408e+02 1.89269434e+02 1.88958468e+02 1.88646517e+02 1.88333590e+02 + 1.88019694e+02 1.87704836e+02 1.87389025e+02 1.87072268e+02 1.86754573e+02 + 1.86435949e+02 1.86116403e+02 1.85795944e+02 1.85474580e+02 1.85152320e+02 + 1.84829171e+02 1.84505143e+02 1.84180245e+02 1.83854484e+02 1.83527870e+02 + 1.83200411e+02 1.82872117e+02 1.82542996e+02 1.82213057e+02 1.81882310e+02 + 1.81550763e+02 1.81218426e+02 1.80885308e+02 1.80551418e+02 1.80216766e+02 + 1.79881360e+02 1.79545211e+02 1.79208327e+02 1.78870719e+02 1.78532395e+02 + 1.78193366e+02 1.77853641e+02 1.77513229e+02 1.77172140e+02 1.76830384e+02 + 1.76487971e+02 1.76144911e+02 1.75801212e+02 1.75456885e+02 1.75111940e+02 + 1.74766387e+02 1.74420235e+02 1.74073494e+02 1.73726174e+02 1.73378285e+02 + 1.73029837e+02 1.72680840e+02 1.72331304e+02 1.71981238e+02 1.71630653e+02 + 1.71279558e+02 1.70927963e+02 1.70575879e+02 1.70223315e+02 1.69870281e+02 + 1.69516787e+02 1.69162843e+02 1.68808459e+02 1.68453644e+02 1.68098409e+02 + 1.67742764e+02 1.67386718e+02 1.67030281e+02 1.66673463e+02 1.66316274e+02 + 1.65958724e+02 1.65600822e+02 1.65242578e+02 1.64884002e+02 1.64525104e+02 + 1.64165893e+02 1.63806379e+02 1.63446572e+02 1.63086481e+02 1.62726115e+02 + 1.62365486e+02 1.62004601e+02 1.61643471e+02 1.61282104e+02 1.60920511e+02 + 1.60558701e+02 1.60196684e+02 1.59834467e+02 1.59472062e+02 1.59109477e+02 + 1.58746721e+02 1.58383804e+02 1.58020734e+02 1.57657521e+02 1.57294175e+02 + 1.56930703e+02 1.56567116e+02 1.56203421e+02 1.55839629e+02 1.55475747e+02 + 1.55111785e+02 1.54747751e+02 1.54383654e+02 1.54019504e+02 1.53655308e+02 + 1.53291075e+02 1.52926813e+02 1.52562532e+02 1.52198240e+02 1.51833945e+02 + 1.51469655e+02 1.51105379e+02 1.50741125e+02 1.50376902e+02 1.50012717e+02 + 1.49648578e+02 1.49284494e+02 1.48920473e+02 1.48556522e+02 1.48192650e+02 + 1.47828864e+02 1.47465173e+02 1.47101583e+02 1.46738103e+02 1.46374741e+02 + 1.46011503e+02 1.45648398e+02 1.45285432e+02 1.44922614e+02 1.44559950e+02 + 1.44197449e+02 1.43835116e+02 1.43472960e+02 1.43110988e+02 1.42749206e+02 + 1.42387622e+02 1.42026243e+02 1.41665075e+02 1.41304126e+02 1.40943402e+02 + 1.40582910e+02 1.40222657e+02 1.39862648e+02 1.39502892e+02 1.39143395e+02 + 1.38784162e+02 1.38425200e+02 1.38066516e+02 1.37708117e+02 1.37350007e+02 + 1.36992193e+02 1.36634682e+02 1.36277480e+02 1.35920592e+02 1.35564024e+02 + 1.35207783e+02 1.34851874e+02 1.34496303e+02 1.34141076e+02 1.33786198e+02 + 1.33431675e+02 1.33077512e+02 1.32723715e+02 1.32370290e+02 1.32017242e+02 + 1.31664575e+02 1.31312296e+02 1.30960410e+02 1.30608921e+02 1.30257835e+02 + 1.29907157e+02 1.29556892e+02 1.29207045e+02 1.28857620e+02 1.28508623e+02 + 1.28160058e+02 1.27811930e+02 1.27464243e+02 1.27117003e+02 1.26770214e+02 + 1.26423879e+02 1.26078005e+02 1.25732594e+02 1.25387652e+02 1.25043183e+02 + 1.24699190e+02 1.24355679e+02 1.24012652e+02 1.23670115e+02 1.23328071e+02 + 1.22986525e+02 1.22645479e+02 1.22304939e+02 1.21964907e+02 1.21625388e+02 + 1.21286385e+02 1.20947903e+02 1.20609943e+02 1.20272511e+02 1.19935610e+02 + 1.19599242e+02 1.19263412e+02 1.18928123e+02 1.18593378e+02 1.18259180e+02 + 1.17925533e+02 1.17592440e+02 1.17259904e+02 1.16927927e+02 1.16596514e+02 + 1.16265667e+02 1.15935389e+02 1.15605682e+02 1.15276550e+02 1.14947996e+02 + 1.14620022e+02 1.14292630e+02 1.13965825e+02 1.13639607e+02 1.13313981e+02 + 1.12988947e+02 1.12664510e+02 1.12340671e+02 1.12017432e+02 1.11694796e+02 + 1.11372766e+02 1.11051343e+02 1.10730530e+02 1.10410329e+02 1.10090743e+02 + 1.09771772e+02 1.09453420e+02 1.09135688e+02 1.08818579e+02 1.08502094e+02 + 1.08186235e+02 1.07871004e+02 1.07556404e+02 1.07242435e+02 1.06929099e+02 + 1.06616399e+02 1.06304336e+02 1.05992911e+02 1.05682126e+02 1.05371983e+02 + 1.05062483e+02 1.04753628e+02 1.04445420e+02 1.04137859e+02 1.03830947e+02 + 1.03524685e+02 1.03219075e+02 1.02914119e+02 1.02609816e+02 1.02306169e+02 + 1.02003179e+02 1.01700846e+02 1.01399173e+02 1.01098160e+02 1.00797808e+02 + 1.00498118e+02 1.00199091e+02 9.99007283e+01 9.96030307e+01 9.93059992e+01 + 9.90096345e+01 9.87139375e+01 9.84189091e+01 9.81245500e+01 9.78308609e+01 + 9.75378427e+01 9.72454959e+01 9.69538214e+01 9.66628197e+01 9.63724914e+01 + 9.60828371e+01 9.57938574e+01 9.55055529e+01 9.52179239e+01 9.49309711e+01 + 9.46446949e+01 9.43590956e+01 9.40741738e+01 9.37899297e+01 9.35063638e+01 + 9.32234763e+01 9.29412676e+01 9.26597379e+01 9.23788875e+01 9.20987167e+01 + 9.18192256e+01 9.15404144e+01 9.12622833e+01 9.09848325e+01 9.07080619e+01 + 9.04319719e+01 9.01565623e+01 8.98818333e+01 8.96077848e+01 8.93344170e+01 + 8.90617297e+01 8.87897230e+01 8.85183968e+01 8.82477510e+01 8.79777855e+01 + 8.77085002e+01 8.74398950e+01 8.71719697e+01 8.69047241e+01 8.66381581e+01 + 8.63722714e+01 8.61070638e+01 8.58425350e+01 8.55786849e+01 8.53155130e+01 + 8.50530192e+01 8.47912030e+01 8.45300641e+01 8.42696023e+01 8.40098170e+01 + 8.37507080e+01 8.34922748e+01 8.32345170e+01 8.29774342e+01 8.27210259e+01 + 8.24652916e+01 8.22102308e+01 8.19558432e+01 8.17021280e+01 8.14490849e+01 + 8.11967133e+01 8.09450125e+01 8.06939821e+01 8.04436215e+01 8.01939300e+01 + 7.99449070e+01 7.96965520e+01 7.94488642e+01 7.92018430e+01 7.89554878e+01 + 7.87097978e+01 7.84647724e+01 7.82204109e+01 7.79767125e+01 7.77336765e+01 + 7.74913023e+01 7.72495889e+01 7.70085357e+01 7.67681418e+01 7.65284066e+01 + 7.62893292e+01 7.60509087e+01 7.58131444e+01 7.55760354e+01 7.53395809e+01 + 7.51037800e+01 7.48686319e+01 7.46341358e+01 7.44002906e+01 7.41670955e+01 + 7.39345497e+01 7.37026521e+01 7.34714020e+01 7.32407983e+01 7.30108401e+01 + 7.27815265e+01 7.25528565e+01 7.23248291e+01 7.20974435e+01 7.18706985e+01 + 7.16445932e+01 7.14191266e+01 7.11942977e+01 7.09701055e+01 7.07465489e+01 + 7.05236270e+01 7.03013386e+01 7.00796828e+01 6.98586585e+01 6.96382647e+01 + 6.94185002e+01 6.91993640e+01 6.89808550e+01 6.87629722e+01 6.85457144e+01 + 6.83290806e+01 6.81130696e+01 6.78976804e+01 6.76829117e+01 6.74687626e+01 + 6.72552318e+01 6.70423183e+01 6.68300208e+01 6.66183384e+01 6.64072697e+01 + 6.61968136e+01 6.59869691e+01 6.57777348e+01 6.55691097e+01 6.53610926e+01 + 6.51536823e+01 6.49468776e+01 6.47406774e+01 6.45350803e+01 6.43300853e+01 + 6.41256912e+01 6.39218966e+01 6.37187005e+01 6.35161016e+01 6.33140987e+01 + 6.31126905e+01 6.29118759e+01 6.27116536e+01 6.25120224e+01 6.23129810e+01 + 6.21145283e+01 6.19166629e+01 6.17193836e+01 6.15226892e+01 6.13265785e+01 + 6.11310501e+01 6.09361028e+01 6.07417354e+01 6.05479465e+01 6.03547350e+01 + 6.01620996e+01 5.99700389e+01 5.97785518e+01 5.95876369e+01 5.93972930e+01 + 5.92075188e+01 5.90183130e+01 5.88296743e+01 5.86416014e+01 5.84540932e+01 + 5.82671481e+01 5.80807651e+01 5.78949427e+01 5.77096798e+01 5.75249749e+01 + 5.73408269e+01 5.71572343e+01 5.69741960e+01 5.67917105e+01 5.66097767e+01 + 5.64283931e+01 5.62475586e+01 5.60672718e+01 5.58875313e+01 5.57083359e+01 + 5.55296843e+01 5.53515752e+01 5.51740072e+01 5.49969790e+01 5.48204894e+01 + 5.46445370e+01 5.44691206e+01 5.42942387e+01 5.41198901e+01 5.39460735e+01 + 5.37727875e+01 5.36000309e+01 5.34278023e+01 5.32561004e+01 5.30849240e+01 + 5.29142716e+01 5.27441420e+01 5.25745339e+01 5.24054459e+01 5.22368767e+01 + 5.20688251e+01 5.19012896e+01 5.17342691e+01 5.15677621e+01 5.14017674e+01 + 5.12362836e+01 5.10713095e+01 5.09068437e+01 5.07428849e+01 5.05794318e+01 + 5.04164830e+01 5.02540374e+01 5.00920935e+01 4.99306501e+01 4.97697059e+01 + 4.96092595e+01 4.94493096e+01 4.92898550e+01 4.91308942e+01 4.89724261e+01 + 4.88144493e+01 4.86569626e+01 4.84999645e+01 4.83434539e+01 4.81874293e+01 + 4.80318896e+01 4.78768334e+01 4.77222594e+01 4.75681664e+01 4.74145529e+01 + 4.72614178e+01 4.71087598e+01 4.69565775e+01 4.68048696e+01 4.66536350e+01 + 4.65028722e+01 4.63525800e+01 4.62027572e+01 4.60534023e+01 4.59045143e+01 + 4.57560917e+01 4.56081333e+01 4.54606378e+01 4.53136040e+01 4.51670306e+01 + 4.50209162e+01 4.48752597e+01 4.47300597e+01 4.45853150e+01 4.44410244e+01 + 4.42971865e+01 4.41538001e+01 4.40108640e+01 4.38683768e+01 4.37263374e+01 + 4.35847444e+01 4.34435966e+01 4.33028929e+01 4.31626318e+01 4.30228122e+01 + 4.28834328e+01 4.27444924e+01 4.26059897e+01 4.24679235e+01 4.23302926e+01 + 4.21930956e+01 4.20563315e+01 4.19199989e+01 4.17840967e+01 4.16486235e+01 + 4.15135782e+01 4.13789595e+01 4.12447663e+01 4.11109973e+01 4.09776512e+01 + 4.08447269e+01 4.07122232e+01 4.05801387e+01 4.04484725e+01 4.03172231e+01 + 4.01863895e+01 4.00559704e+01 3.99259645e+01 3.97963709e+01 3.96671881e+01 + 3.95384150e+01 3.94100505e+01 3.92820933e+01 3.91545423e+01 3.90273962e+01 + 3.89006540e+01 3.87743143e+01 3.86483760e+01 3.85228381e+01 3.83976991e+01 + 3.82729581e+01 3.81486139e+01 3.80246652e+01 3.79011109e+01 3.77779498e+01 + 3.76551809e+01 3.75328028e+01 3.74108145e+01 3.72892149e+01 3.71680027e+01 + 3.70471769e+01 3.69267362e+01 3.68066795e+01 3.66870058e+01 3.65677138e+01 + 3.64488024e+01 3.63302705e+01 3.62121170e+01 3.60943407e+01 3.59769405e+01 + 3.58599153e+01 3.57432639e+01 3.56269853e+01 3.55110783e+01 3.53955418e+01 + 3.52803747e+01 3.51655759e+01 3.50511443e+01 3.49370788e+01 3.48233782e+01 + 3.47100416e+01 3.45970677e+01 3.44844555e+01 3.43722040e+01 3.42603119e+01 + 3.41487783e+01 3.40376020e+01 3.39267820e+01 3.38163172e+01 3.37062065e+01 + 3.35964488e+01 3.34870432e+01 3.33779884e+01 3.32692834e+01 3.31609272e+01 + 3.30529188e+01 3.29452570e+01 3.28379408e+01 3.27309691e+01 3.26243410e+01 + 3.25180553e+01 3.24121110e+01 3.23065071e+01 3.22012425e+01 3.20963161e+01 + 3.19917271e+01 3.18874742e+01 3.17835566e+01 3.16799731e+01 3.15767228e+01 + 3.14738046e+01 3.13712175e+01 3.12689604e+01 3.11670325e+01 3.10654326e+01 + 3.09641597e+01 3.08632129e+01 3.07625912e+01 3.06622934e+01 3.05623187e+01 + 3.04626661e+01 3.03633345e+01 3.02643230e+01 3.01656305e+01 3.00672562e+01 + 2.99691989e+01 2.98714578e+01 2.97740318e+01 2.96769199e+01 2.95801213e+01 + 2.94836349e+01 2.93874598e+01 2.92915949e+01 2.91960394e+01 2.91007922e+01 + 2.90058525e+01 2.89112192e+01 2.88168915e+01 2.87228682e+01 2.86291486e+01 + 2.85357317e+01 2.84426165e+01 2.83498020e+01 2.82572874e+01 2.81650717e+01 + 2.80731540e+01 2.79815334e+01 2.78902088e+01 2.77991795e+01 2.77084444e+01 + 2.76180027e+01 2.75278535e+01 2.74379957e+01 2.73484286e+01 2.72591511e+01 + 2.71701625e+01 2.70814617e+01 2.69930480e+01 2.69049203e+01 2.68170778e+01 + 2.67295196e+01 2.66422449e+01 2.65552526e+01 2.64685420e+01 2.63821121e+01 + 2.62959621e+01 2.62100910e+01 2.61244981e+01 2.60391824e+01 2.59541430e+01 + 2.58693792e+01 2.57848899e+01 2.57006744e+01 2.56167319e+01 2.55330613e+01 + 2.54496619e+01 2.53665329e+01 2.52836733e+01 2.52010823e+01 2.51187591e+01 + 2.50367028e+01 2.49549127e+01 2.48733877e+01 2.47921272e+01 2.47111302e+01 + 2.46303959e+01 2.45499236e+01 2.44697123e+01 2.43897613e+01 2.43100697e+01 + 2.42306367e+01 2.41514615e+01 2.40725433e+01 2.39938812e+01 2.39154744e+01 + 2.38373222e+01 2.37594237e+01 2.36817781e+01 2.36043846e+01 2.35272425e+01 + 2.34503509e+01 2.33737090e+01 2.32973160e+01 2.32211711e+01 2.31452736e+01 + 2.30696227e+01 2.29942176e+01 2.29190574e+01 2.28441415e+01 2.27694690e+01 + 2.26950391e+01 2.26208512e+01 2.25469044e+01 2.24731979e+01 2.23997310e+01 + 2.23265030e+01 2.22535130e+01 2.21807603e+01 2.21082441e+01 2.20359638e+01 + 2.19639185e+01 2.18921075e+01 2.18205300e+01 2.17491853e+01 2.16780727e+01 + 2.16071914e+01 2.15365407e+01 2.14661198e+01 2.13959280e+01 2.13259646e+01 + 2.12562288e+01 2.11867200e+01 2.11174373e+01 2.10483801e+01 2.09795476e+01 + 2.09109392e+01 2.08425541e+01 2.07743915e+01 2.07064508e+01 2.06387313e+01 + 2.05712323e+01 2.05039530e+01 2.04368928e+01 2.03700509e+01 2.03034266e+01 + 2.02370194e+01 2.01708283e+01 2.01048528e+01 2.00390922e+01 1.99735458e+01 + 1.99082129e+01 1.98430927e+01 1.97781847e+01 1.97134882e+01 1.96490024e+01 + 1.95847267e+01 1.95206604e+01 1.94568028e+01 1.93931533e+01 1.93297112e+01 + 1.92664759e+01 1.92034466e+01 1.91406227e+01 1.90780035e+01 1.90155885e+01 + 1.89533769e+01 1.88913680e+01 1.88295613e+01 1.87679561e+01 1.87065517e+01 + 1.86453474e+01 1.85843427e+01 1.85235369e+01 1.84629294e+01 1.84025194e+01 + 1.83423064e+01 1.82822898e+01 1.82224689e+01 1.81628431e+01 1.81034117e+01 + 1.80441741e+01 1.79851297e+01 1.79262779e+01 1.78676181e+01 1.78091496e+01 + 1.77508718e+01 1.76927841e+01 1.76348859e+01 1.75771766e+01 1.75196556e+01 + 1.74623222e+01 1.74051759e+01 1.73482160e+01 1.72914420e+01 1.72348532e+01 + 1.71784491e+01 1.71222290e+01 1.70661924e+01 1.70103386e+01 1.69546672e+01 + 1.68991774e+01 1.68438687e+01 1.67887405e+01 1.67337923e+01 1.66790234e+01 + 1.66244333e+01 1.65700214e+01 1.65157871e+01 1.64617298e+01 1.64078490e+01 + 1.63541441e+01 1.63006145e+01 1.62472597e+01 1.61940791e+01 1.61410721e+01 + 1.60882382e+01 1.60355768e+01 1.59830874e+01 1.59307693e+01 1.58786221e+01 + 1.58266452e+01 1.57748380e+01 1.57232000e+01 1.56717306e+01 1.56204294e+01 + 1.55692956e+01 1.55183289e+01 1.54675287e+01 1.54168943e+01 1.53664254e+01 + 1.53161213e+01 1.52659815e+01 1.52160055e+01 1.51661927e+01 1.51165427e+01 + 1.50670549e+01 1.50177287e+01 1.49685637e+01 1.49195593e+01 1.48707150e+01 + 1.48220303e+01 1.47735047e+01 1.47251376e+01 1.46769285e+01 1.46288769e+01 + 1.45809824e+01 1.45332444e+01 1.44856623e+01 1.44382358e+01 1.43909642e+01 + 1.43438471e+01 1.42968840e+01 1.42500743e+01 1.42034177e+01 1.41569135e+01 + 1.41105613e+01 1.40643606e+01 1.40183109e+01 1.39724117e+01 1.39266625e+01 + 1.38810629e+01 1.38356123e+01 1.37903103e+01 1.37451563e+01 1.37001500e+01 + 1.36552907e+01 1.36105781e+01 1.35660117e+01 1.35215910e+01 1.34773155e+01 + 1.34331847e+01 1.33891982e+01 1.33453555e+01 1.33016562e+01 1.32580997e+01 + 1.32146856e+01 1.31714135e+01 1.31282829e+01 1.30852932e+01 1.30424442e+01 + 1.29997352e+01 1.29571659e+01 1.29147358e+01 1.28724444e+01 1.28302914e+01 + 1.27882761e+01 1.27463983e+01 1.27046574e+01 1.26630530e+01 1.26215847e+01 + 1.25802519e+01 1.25390544e+01 1.24979916e+01 1.24570630e+01 1.24162684e+01 + 1.23756071e+01 1.23350789e+01 1.22946831e+01 1.22544196e+01 1.22142877e+01 + 1.21742870e+01 1.21344172e+01 1.20946778e+01 1.20550684e+01 1.20155886e+01 + 1.19762379e+01 1.19370159e+01 1.18979222e+01 1.18589564e+01 1.18201180e+01 + 1.17814067e+01 1.17428220e+01 1.17043636e+01 1.16660310e+01 1.16278237e+01 + 1.15897415e+01 1.15517839e+01 1.15139504e+01 1.14762407e+01 1.14386544e+01 + 1.14011910e+01 1.13638502e+01 1.13266316e+01 1.12895347e+01 1.12525593e+01 + 1.12157048e+01 1.11789708e+01 1.11423571e+01 1.11058632e+01 1.10694887e+01 + 1.10332332e+01 1.09970963e+01 1.09610777e+01 1.09251769e+01 1.08893936e+01 + 1.08537274e+01 1.08181779e+01 1.07827447e+01 1.07474275e+01 1.07122258e+01 + 1.06771394e+01 1.06421677e+01 1.06073105e+01 1.05725674e+01 1.05379379e+01 + 1.05034218e+01 1.04690187e+01 1.04347281e+01 1.04005498e+01 1.03664833e+01 + 1.03325283e+01 1.02986844e+01 1.02649513e+01 1.02313286e+01 1.01978159e+01 + 1.01644129e+01 1.01311193e+01 1.00979346e+01 1.00648585e+01 1.00318907e+01 + 9.99903076e+00 9.96627839e+00 9.93363322e+00 9.90109490e+00 9.86866308e+00 + 9.83614239e+00 9.80319678e+00 9.76982516e+00 9.73603257e+00 9.70182408e+00 + 9.66720477e+00 9.63217974e+00 9.59675413e+00 9.56093309e+00 9.52472178e+00 + 9.48812539e+00 9.45114912e+00 9.41379820e+00 9.37607786e+00 9.33799336e+00 + 9.29954996e+00 9.26075296e+00 9.22160764e+00 9.18211931e+00 9.14229331e+00 + 9.10213495e+00 9.06164959e+00 9.02084257e+00 8.97971926e+00 8.93828502e+00 + 8.89654524e+00 8.85450530e+00 8.81217059e+00 8.76954651e+00 8.72663845e+00 + 8.68345183e+00 8.63999205e+00 8.59626452e+00 8.55227466e+00 8.50802788e+00 + 8.46352960e+00 8.41878522e+00 8.37380017e+00 8.32857986e+00 8.28312970e+00 + 8.23745510e+00 8.19156147e+00 8.14545420e+00 8.09913868e+00 8.05262033e+00 + 8.00590451e+00 7.95899661e+00 7.91190200e+00 7.86462604e+00 7.81717409e+00 + 7.76955150e+00 7.72176361e+00 7.67381573e+00 7.62571320e+00 7.57746130e+00 + 7.52906535e+00 7.48053061e+00 7.43186235e+00 7.38306584e+00 7.33414631e+00 + 7.28510898e+00 7.23595907e+00 7.18670176e+00 7.13734225e+00 7.08788568e+00 + 7.03833721e+00 6.98870196e+00 6.93898503e+00 6.88919151e+00 6.83932648e+00 + 6.78939499e+00 6.73940205e+00 6.68935268e+00 6.63925187e+00 6.58910458e+00 + 6.53891575e+00 6.48869031e+00 6.43843314e+00 6.38814912e+00 6.33784310e+00 + 6.28751990e+00 6.23718433e+00 6.18684115e+00 6.13649511e+00 6.08615093e+00 + 6.03581331e+00 5.98548692e+00 5.93517639e+00 5.88488633e+00 5.83462134e+00 + 5.78438596e+00 5.73418472e+00 5.68402212e+00 5.63390262e+00 5.58383066e+00 + 5.53381065e+00 5.48384696e+00 5.43394394e+00 5.38410590e+00 5.33433712e+00 + 5.28464184e+00 5.23502429e+00 5.18548865e+00 5.13603907e+00 5.08667967e+00 + 5.03741453e+00 4.98824769e+00 4.93918318e+00 4.89022498e+00 4.84137703e+00 + 4.79264324e+00 4.74402749e+00 4.69553363e+00 4.64716544e+00 4.59892671e+00 + 4.55082117e+00 4.50285251e+00 4.45502439e+00 4.40734043e+00 4.35980422e+00 + 4.31241932e+00 4.26518921e+00 4.21811739e+00 4.17120729e+00 4.12446230e+00 + 4.07788579e+00 4.03148106e+00 3.98525142e+00 3.93920009e+00 3.89333028e+00 + 3.84764517e+00 3.80214787e+00 3.75684147e+00 3.71172903e+00 3.66681354e+00 + 3.62209799e+00 3.57758528e+00 3.53327833e+00 3.48917997e+00 3.44529302e+00 + 3.40162024e+00 3.35816437e+00 3.31492809e+00 3.27191405e+00 3.22912486e+00 + 3.18656308e+00 3.14423125e+00 3.10213185e+00 3.06026733e+00 3.01864009e+00 + 2.97725249e+00 2.93610687e+00 2.89520550e+00 2.85455062e+00 2.81414444e+00 + 2.77398912e+00 2.73408678e+00 2.69443950e+00 2.65504931e+00 2.61591822e+00 + 2.57704818e+00 2.53844110e+00 2.50009887e+00 2.46202332e+00 2.42421623e+00 + 2.38667938e+00 2.34941446e+00 2.31242315e+00 2.27570709e+00 2.23926786e+00 + 2.20310702e+00 2.16722608e+00 2.13162650e+00 2.09630973e+00 2.06127714e+00 + 2.02653009e+00 1.99206990e+00 1.95789783e+00 1.92401511e+00 1.89042294e+00 + 1.85712247e+00 1.82411481e+00 1.79140103e+00 1.75898217e+00 1.72685923e+00 + 1.69503316e+00 1.66350488e+00 1.63227527e+00 1.60134517e+00 1.57071538e+00 + 1.54038667e+00 1.51035976e+00 1.48063534e+00 1.45121406e+00 1.42209654e+00 + 1.39328335e+00 1.36477502e+00 1.33657207e+00 1.30867494e+00 1.28108408e+00 + 1.25379988e+00 1.22682267e+00 1.20015280e+00 1.17379052e+00 1.14773611e+00 + 1.12198975e+00 1.09655164e+00 1.07142191e+00 1.04660066e+00 1.02208796e+00 + 9.97883860e-01 9.73988350e-01 9.50401399e-01 9.27122941e-01 9.04152875e-01 + 8.81491067e-01 8.59137350e-01 8.37091523e-01 8.15353353e-01 7.93922575e-01 + 7.72798890e-01 7.51981967e-01 7.31471445e-01 7.11266929e-01 6.91367995e-01 + 6.71774185e-01 6.52485014e-01 6.33499962e-01 6.14818482e-01 5.96439995e-01 + 5.78363892e-01 5.60589536e-01 5.43116259e-01 5.25943365e-01 5.09070129e-01 + 4.92495797e-01 4.76219586e-01 4.60240687e-01 4.44558262e-01 4.29171445e-01 + 4.14079344e-01 3.99281039e-01 3.84775584e-01 3.70562007e-01 3.56639309e-01 + 3.43006466e-01 3.29662427e-01 3.16606118e-01 3.03836438e-01 2.91352263e-01 + 2.79152444e-01 2.67235806e-01 2.55601154e-01 2.44247267e-01 2.33172900e-01 + 2.22376787e-01 2.11857640e-01 2.01614145e-01 1.91644970e-01 1.81948759e-01 + 1.72524135e-01 1.63369700e-01 1.54484036e-01 1.45865702e-01 1.37513239e-01 + 1.29425168e-01 1.21599989e-01 1.14036184e-01 1.06732215e-01 9.96865252e-02 + 9.28975401e-02 8.63636667e-02 8.00832940e-02 7.40547937e-02 6.82765202e-02 + 6.27468109e-02 5.74639865e-02 5.24263517e-02 4.76321948e-02 4.30797886e-02 + 3.87673904e-02 3.46932424e-02 3.08555720e-02 2.72525920e-02 2.38825011e-02 + 2.07434841e-02 1.78337121e-02 1.51513430e-02 1.26945216e-02 1.04613800e-02 + 8.45003801e-03 6.65860321e-03 5.08517143e-03 3.72782701e-03 2.58464306e-03 + 1.65368178e-03 9.32994753e-04 4.20623265e-04 1.14598566e-04 1.29421836e-05 + 1.42532190e+04 1.42532190e+04 8.35034822e+03 5.54302535e+03 4.13949198e+03 + 3.29747342e+03 2.73621144e+03 2.33538110e+03 2.03481994e+03 1.80110437e+03 + 1.61418025e+03 1.46128584e+03 1.33391334e+03 1.22617273e+03 1.13385685e+03 + 1.05388046e+03 9.83929637e+02 9.22234903e+02 8.67420006e+02 8.18398433e+02 + 7.74300975e+02 7.34423991e+02 6.98191774e+02 6.65128743e+02 6.34838584e+02 + 6.06988393e+02 5.81296485e+02 5.57522906e+02 5.35461985e+02 5.14936419e+02 + 4.95792548e+02 4.77896540e+02 4.61131293e+02 4.45393901e+02 4.30593565e+02 + 4.16649865e+02 4.03491318e+02 3.91054168e+02 3.79281373e+02 3.68121742e+02 + 3.57529204e+02 3.47462184e+02 3.37883066e+02 3.28757736e+02 3.20055180e+02 + 3.11747144e+02 3.03807830e+02 2.96213636e+02 2.88942929e+02 2.81975842e+02 + 2.75294097e+02 2.68880852e+02 2.62720560e+02 2.56798848e+02 2.51102410e+02 + 2.45618906e+02 2.40336878e+02 2.35245675e+02 2.30335379e+02 2.25596746e+02 + 2.21021147e+02 2.16600522e+02 2.12327330e+02 2.08194509e+02 2.04195440e+02 + 2.00323909e+02 1.96574084e+02 1.92940476e+02 1.89417923e+02 1.86001562e+02 + 1.82686808e+02 1.79469334e+02 1.76345054e+02 1.73310107e+02 1.70360841e+02 + 1.67493798e+02 1.64705704e+02 1.61993454e+02 1.59354103e+02 1.56784856e+02 + 1.54283057e+02 1.51846183e+02 1.49471832e+02 1.47157720e+02 1.44901673e+02 + 1.42701615e+02 1.40555573e+02 1.38461660e+02 1.36418077e+02 1.34423107e+02 + 1.32475108e+02 1.30572512e+02 1.28713816e+02 1.26897587e+02 1.25122449e+02 + 1.23387086e+02 1.21690237e+02 1.20030692e+02 1.18407293e+02 1.16818927e+02 + 1.15264525e+02 1.13743063e+02 1.12253557e+02 1.10795059e+02 1.09366659e+02 + 1.07967484e+02 1.06596690e+02 1.05253468e+02 1.03937038e+02 1.02646649e+02 + 1.01381577e+02 1.00141124e+02 9.89246189e+01 9.77314125e+01 9.65608793e+01 + 9.54124160e+01 9.42854397e+01 9.31793879e+01 9.20937174e+01 9.10279032e+01 + 8.99814378e+01 8.89538311e+01 8.79446087e+01 8.69533121e+01 8.59794975e+01 + 8.50227355e+01 8.40826106e+01 8.31587203e+01 8.22506749e+01 8.13580969e+01 + 8.04806206e+01 7.96178913e+01 7.87695656e+01 7.79353102e+01 7.71148019e+01 + 7.63077273e+01 7.55137824e+01 7.47326719e+01 7.39641093e+01 7.32078166e+01 + 7.24635236e+01 7.17309679e+01 7.10098949e+01 7.03000567e+01 6.96012128e+01 + 6.89131293e+01 6.82355787e+01 6.75683399e+01 6.69111977e+01 6.62639431e+01 + 6.56263723e+01 6.49982874e+01 6.43794956e+01 6.37698091e+01 6.31690453e+01 + 6.25770263e+01 6.19935787e+01 6.14185338e+01 6.08517272e+01 6.02929986e+01 + 5.97421918e+01 5.91991547e+01 5.86637390e+01 5.81357998e+01 5.76151962e+01 + 5.71017906e+01 5.65954489e+01 5.60960400e+01 5.56034362e+01 5.51175129e+01 + 5.46381485e+01 5.41652242e+01 5.36986241e+01 5.32382349e+01 5.27839462e+01 + 5.23356501e+01 5.18932410e+01 5.14566160e+01 5.10256745e+01 5.06003182e+01 + 5.01804510e+01 4.97659789e+01 4.93568102e+01 4.89528552e+01 4.85540261e+01 + 4.81602371e+01 4.77714044e+01 4.73874459e+01 4.70082813e+01 4.66338322e+01 + 4.62640217e+01 4.58987746e+01 4.55380174e+01 4.51816782e+01 4.48296865e+01 + 4.44819732e+01 4.41384709e+01 4.37991135e+01 4.34638362e+01 4.31325757e+01 + 4.28052699e+01 4.24818579e+01 4.21622802e+01 4.18464784e+01 4.15343953e+01 + 4.12259749e+01 4.09211624e+01 4.06199038e+01 4.03221464e+01 4.00278386e+01 + 3.97369296e+01 3.94493698e+01 3.91651104e+01 3.88841037e+01 3.86063027e+01 + 3.83316615e+01 3.80601351e+01 3.77916792e+01 3.75262504e+01 3.72638062e+01 + 3.70043048e+01 3.67477053e+01 3.64939673e+01 3.62430514e+01 3.59949189e+01 + 3.57495317e+01 3.55068525e+01 3.52668446e+01 3.50294720e+01 3.47946994e+01 + 3.45624920e+01 3.43328158e+01 3.41056372e+01 3.38809233e+01 3.36586419e+01 + 3.34387612e+01 3.32212499e+01 3.30060774e+01 3.27932136e+01 3.25826288e+01 + 3.23742940e+01 3.21681806e+01 3.19642604e+01 3.17625057e+01 3.15628894e+01 + 3.13653847e+01 3.11699654e+01 3.09766056e+01 3.07852799e+01 3.05959632e+01 + 3.04086309e+01 3.02232588e+01 3.00398232e+01 2.98583005e+01 2.96786677e+01 + 2.95009021e+01 2.93249814e+01 2.91508835e+01 2.89785868e+01 2.88080701e+01 + 2.86393122e+01 2.84722926e+01 2.83069909e+01 2.81433870e+01 2.79814613e+01 + 2.78211942e+01 2.76625666e+01 2.75055597e+01 2.73501548e+01 2.71963336e+01 + 2.70440781e+01 2.68933704e+01 2.67441931e+01 2.65965287e+01 2.64503604e+01 + 2.63056711e+01 2.61624445e+01 2.60206641e+01 2.58803138e+01 2.57413777e+01 + 2.56038401e+01 2.54676856e+01 2.53328988e+01 2.51994647e+01 2.50673684e+01 + 2.49365953e+01 2.48071308e+01 2.46789607e+01 2.45520708e+01 2.44264471e+01 + 2.43020760e+01 2.41789438e+01 2.40570371e+01 2.39363426e+01 2.38168472e+01 + 2.36985380e+01 2.35814021e+01 2.34654270e+01 2.33506000e+01 2.32369090e+01 + 2.31243415e+01 2.30128857e+01 2.29025295e+01 2.27932611e+01 2.26850689e+01 + 2.25779413e+01 2.24718668e+01 2.23668342e+01 2.22628324e+01 2.21598501e+01 + 2.20578765e+01 2.19569007e+01 2.18569121e+01 2.17578999e+01 2.16598537e+01 + 2.15627630e+01 2.14666176e+01 2.13714072e+01 2.12771217e+01 2.11837511e+01 + 2.10912855e+01 2.09997150e+01 2.09090298e+01 2.08192204e+01 2.07302772e+01 + 2.06421906e+01 2.05549512e+01 2.04685498e+01 2.03829771e+01 2.02982239e+01 + 2.02142812e+01 2.01311398e+01 2.00487910e+01 1.99672258e+01 1.98864354e+01 + 1.98064111e+01 1.97271442e+01 1.96486262e+01 1.95708485e+01 1.94938027e+01 + 1.94174804e+01 1.93418732e+01 1.92669729e+01 1.91927713e+01 1.91192603e+01 + 1.90464316e+01 1.89742774e+01 1.89027897e+01 1.88319605e+01 1.87617819e+01 + 1.86922463e+01 1.86233458e+01 1.85550727e+01 1.84874195e+01 1.84203785e+01 + 1.83539421e+01 1.82881030e+01 1.82228537e+01 1.81581868e+01 1.80940949e+01 + 1.80305708e+01 1.79676074e+01 1.79051973e+01 1.78433334e+01 1.77820088e+01 + 1.77212163e+01 1.76609489e+01 1.76011998e+01 1.75419620e+01 1.74832287e+01 + 1.74249931e+01 1.73672484e+01 1.73099880e+01 1.72532052e+01 1.71968933e+01 + 1.71410459e+01 1.70856564e+01 1.70307183e+01 1.69762252e+01 1.69221707e+01 + 1.68685486e+01 1.68153525e+01 1.67625761e+01 1.67102134e+01 1.66582581e+01 + 1.66067041e+01 1.65555455e+01 1.65047762e+01 1.64543902e+01 1.64043816e+01 + 1.63547447e+01 1.63054735e+01 1.62565623e+01 1.62080053e+01 1.61597970e+01 + 1.61119317e+01 1.60644038e+01 1.60172077e+01 1.59703381e+01 1.59237895e+01 + 1.58775564e+01 1.58316337e+01 1.57860159e+01 1.57406980e+01 1.56956746e+01 + 1.56509407e+01 1.56064912e+01 1.55623210e+01 1.55184252e+01 1.54747989e+01 + 1.54314371e+01 1.53883351e+01 1.53454881e+01 1.53028914e+01 1.52605403e+01 + 1.52184302e+01 1.51765565e+01 1.51349148e+01 1.50935005e+01 1.50523092e+01 + 1.50113367e+01 1.49705786e+01 1.49300307e+01 1.48896888e+01 1.48495487e+01 + 1.48096064e+01 1.47698579e+01 1.47302991e+01 1.46909262e+01 1.46517353e+01 + 1.46127226e+01 1.45738843e+01 1.45352167e+01 1.44967163e+01 1.44583793e+01 + 1.44202022e+01 1.43821817e+01 1.43443142e+01 1.43065963e+01 1.42690248e+01 + 1.42315964e+01 1.41943079e+01 1.41571561e+01 1.41201380e+01 1.40832504e+01 + 1.40464903e+01 1.40098550e+01 1.39733414e+01 1.39369467e+01 1.39006681e+01 + 1.38645030e+01 1.38284486e+01 1.37925024e+01 1.37566617e+01 1.37209240e+01 + 1.36852870e+01 1.36497481e+01 1.36143050e+01 1.35789554e+01 1.35436970e+01 + 1.35085277e+01 1.34734452e+01 1.34384476e+01 1.34035326e+01 1.33686983e+01 + 1.33339428e+01 1.32992641e+01 1.32646604e+01 1.32301299e+01 1.31956707e+01 + 1.31612811e+01 1.31269596e+01 1.30927044e+01 1.30585140e+01 1.30243869e+01 + 1.29903215e+01 1.29563163e+01 1.29223701e+01 1.28884813e+01 1.28546488e+01 + 1.28208712e+01 1.27871473e+01 1.27534759e+01 1.27198558e+01 1.26862859e+01 + 1.26527651e+01 1.26192925e+01 1.25858669e+01 1.25524875e+01 1.25191534e+01 + 1.24858635e+01 1.24526171e+01 1.24194134e+01 1.23862516e+01 1.23531309e+01 + 1.23200507e+01 1.22870102e+01 1.22540087e+01 1.22210458e+01 1.21881208e+01 + 1.21552331e+01 1.21223823e+01 1.20895678e+01 1.20567892e+01 1.20240460e+01 + 1.19913379e+01 1.19586644e+01 1.19260252e+01 1.18934200e+01 1.18608486e+01 + 1.18283105e+01 1.17958056e+01 1.17633336e+01 1.17308944e+01 1.16984877e+01 + 1.16661134e+01 1.16337715e+01 1.16014616e+01 1.15691839e+01 1.15369381e+01 + 1.15047243e+01 1.14725424e+01 1.14403924e+01 1.14082743e+01 1.13761882e+01 + 1.13441340e+01 1.13121118e+01 1.12801217e+01 1.12481638e+01 1.12162382e+01 + 1.11843451e+01 1.11524844e+01 1.11206564e+01 1.10888613e+01 1.10570992e+01 + 1.10253702e+01 1.09936747e+01 1.09620128e+01 1.09303847e+01 1.08987906e+01 + 1.08672309e+01 1.08357056e+01 1.08042152e+01 1.07727598e+01 1.07413398e+01 + 1.07099554e+01 1.06786069e+01 1.06472947e+01 1.06160189e+01 1.05847800e+01 + 1.05535783e+01 1.05224140e+01 1.04912875e+01 1.04601992e+01 1.04291494e+01 + 1.03981385e+01 1.03671667e+01 1.03362344e+01 1.03053421e+01 1.02744901e+01 + 1.02436786e+01 1.02129082e+01 1.01821791e+01 1.01514918e+01 1.01208466e+01 + 1.00902439e+01 1.00596841e+01 1.00291676e+01 9.99869465e+00 9.96826576e+00 + 9.93788127e+00 9.90754156e+00 9.87724703e+00 9.84699806e+00 9.81679503e+00 + 9.78663832e+00 9.75652833e+00 9.72646541e+00 9.69644998e+00 9.66648239e+00 + 9.63656303e+00 9.60669228e+00 9.57687051e+00 9.54709811e+00 9.51737543e+00 + 9.48770285e+00 9.45808075e+00 9.42850948e+00 9.39898941e+00 9.36952091e+00 + 9.34010432e+00 9.31074002e+00 9.28142834e+00 9.25216964e+00 9.22296427e+00 + 9.19381257e+00 9.16471488e+00 9.13567154e+00 9.10668288e+00 9.07774924e+00 + 9.04887094e+00 9.02004831e+00 8.99128166e+00 8.96257131e+00 8.93391757e+00 + 8.90532075e+00 8.87678116e+00 8.84829910e+00 8.81987485e+00 8.79150872e+00 + 8.76320099e+00 8.73495195e+00 8.70676187e+00 8.67863103e+00 8.65055970e+00 + 8.62254815e+00 8.59459664e+00 8.56670543e+00 8.53887477e+00 8.51110492e+00 + 8.48339611e+00 8.45574859e+00 8.42816259e+00 8.40063835e+00 8.37317608e+00 + 8.34577603e+00 8.31843839e+00 8.29116339e+00 8.26395124e+00 8.23680214e+00 + 8.20971629e+00 8.18269388e+00 8.15573511e+00 8.12884017e+00 8.10200923e+00 + 8.07524248e+00 8.04854008e+00 8.02190221e+00 7.99532904e+00 7.96882072e+00 + 7.94237740e+00 7.91599925e+00 7.88968640e+00 7.86343901e+00 7.83725720e+00 + 7.81114112e+00 7.78509089e+00 7.75910664e+00 7.73318849e+00 7.70733656e+00 + 7.68155097e+00 7.65583181e+00 7.63017921e+00 7.60459325e+00 7.57907404e+00 + 7.55362167e+00 7.52823623e+00 7.50291780e+00 7.47766647e+00 7.45248231e+00 + 7.42736540e+00 7.40231580e+00 7.37733359e+00 7.35241882e+00 7.32757156e+00 + 7.30279186e+00 7.27807976e+00 7.25343533e+00 7.22885860e+00 7.20434961e+00 + 7.17990840e+00 7.15553501e+00 7.13122946e+00 7.10699178e+00 7.08282200e+00 + 7.05872014e+00 7.03468621e+00 7.01072022e+00 6.98682220e+00 6.96299214e+00 + 6.93923004e+00 6.91553592e+00 6.89190977e+00 6.86835159e+00 6.84486136e+00 + 6.82143907e+00 6.79808472e+00 6.77479828e+00 6.75157975e+00 6.72842908e+00 + 6.70534627e+00 6.68233128e+00 6.65938408e+00 6.63650464e+00 6.61369293e+00 + 6.59094890e+00 6.56827252e+00 6.54566374e+00 6.52312252e+00 6.50064881e+00 + 6.47824255e+00 6.45590371e+00 6.43363221e+00 6.41142801e+00 6.38929105e+00 + 6.36722125e+00 6.34521857e+00 6.32328293e+00 6.30141427e+00 6.27961251e+00 + 6.25787758e+00 6.23620941e+00 6.21460793e+00 6.19307305e+00 6.17160469e+00 + 6.15020277e+00 6.12886721e+00 6.10759793e+00 6.08639483e+00 6.06525782e+00 + 6.04418682e+00 6.02318173e+00 6.00224246e+00 5.98136891e+00 5.96056098e+00 + 5.93981858e+00 5.91914161e+00 5.89852995e+00 5.87798352e+00 5.85750219e+00 + 5.83708588e+00 5.81673446e+00 5.79644783e+00 5.77622588e+00 5.75606849e+00 + 5.73597556e+00 5.71594697e+00 5.69598259e+00 5.67608233e+00 5.65624605e+00 + 5.63647363e+00 5.61676497e+00 5.59711992e+00 5.57753838e+00 5.55802022e+00 + 5.53856531e+00 5.51917352e+00 5.49984474e+00 5.48057882e+00 5.46137565e+00 + 5.44223509e+00 5.42315701e+00 5.40414129e+00 5.38518777e+00 5.36629635e+00 + 5.34746687e+00 5.32869920e+00 5.30999322e+00 5.29134877e+00 5.27276573e+00 + 5.25424395e+00 5.23578330e+00 5.21738364e+00 5.19904482e+00 5.18076671e+00 + 5.16254917e+00 5.14439204e+00 5.12629520e+00 5.10825849e+00 5.09028177e+00 + 5.07236490e+00 5.05450773e+00 5.03671012e+00 5.01897192e+00 5.00129298e+00 + 4.98367316e+00 4.96611231e+00 4.94861028e+00 4.93116692e+00 4.91378209e+00 + 4.89645563e+00 4.87918740e+00 4.86197724e+00 4.84482501e+00 4.82773055e+00 + 4.81069372e+00 4.79371436e+00 4.77679233e+00 4.75992746e+00 4.74311961e+00 + 4.72636862e+00 4.70967435e+00 4.69303663e+00 4.67645533e+00 4.65993027e+00 + 4.64346132e+00 4.62704831e+00 4.61069110e+00 4.59438952e+00 4.57814343e+00 + 4.56195267e+00 4.54581708e+00 4.52973652e+00 4.51371082e+00 4.49773984e+00 + 4.48182341e+00 4.46596139e+00 4.45015361e+00 4.43439993e+00 4.41870018e+00 + 4.40305422e+00 4.38746188e+00 4.37192301e+00 4.35643746e+00 4.34100508e+00 + 4.32562570e+00 4.31029917e+00 4.29502534e+00 4.27980405e+00 4.26463514e+00 + 4.24951847e+00 4.23445387e+00 4.21944120e+00 4.20448029e+00 4.18957099e+00 + 4.17471315e+00 4.15990661e+00 4.14515122e+00 4.13044682e+00 4.11579326e+00 + 4.10119038e+00 4.08663804e+00 4.07213607e+00 4.05768433e+00 4.04328265e+00 + 4.02893089e+00 4.01462889e+00 4.00037650e+00 3.98617357e+00 3.97201993e+00 + 3.95791545e+00 3.94385997e+00 3.92985333e+00 3.91589538e+00 3.90198597e+00 + 3.88812495e+00 3.87431217e+00 3.86054747e+00 3.84683071e+00 3.83316173e+00 + 3.81954038e+00 3.80596652e+00 3.79243998e+00 3.77896063e+00 3.76552831e+00 + 3.75214287e+00 3.73880416e+00 3.72551204e+00 3.71226635e+00 3.69906694e+00 + 3.68591367e+00 3.67280639e+00 3.65974495e+00 3.64672921e+00 3.63375901e+00 + 3.62083421e+00 3.60795466e+00 3.59512021e+00 3.58233073e+00 3.56958605e+00 + 3.55688605e+00 3.54423056e+00 3.53161946e+00 3.51905258e+00 3.50652979e+00 + 3.49405095e+00 3.48161590e+00 3.46922451e+00 3.45687663e+00 3.44457213e+00 + 3.43231084e+00 3.42009264e+00 3.40791739e+00 3.39578493e+00 3.38369513e+00 + 3.37164785e+00 3.35964295e+00 3.34768028e+00 3.33575971e+00 3.32388109e+00 + 3.31204429e+00 3.30024917e+00 3.28849559e+00 3.27678341e+00 3.26511249e+00 + 3.25348269e+00 3.24189388e+00 3.23034592e+00 3.21883867e+00 3.20737200e+00 + 3.19594577e+00 3.18455984e+00 3.17321408e+00 3.16190835e+00 3.15064252e+00 + 3.13941646e+00 3.12823003e+00 3.11708309e+00 3.10597552e+00 3.09490717e+00 + 3.08387793e+00 3.07288764e+00 3.06193620e+00 3.05102345e+00 3.04014927e+00 + 3.02931353e+00 3.01851611e+00 3.00775685e+00 2.99703565e+00 2.98635237e+00 + 2.97570688e+00 2.96509904e+00 2.95452874e+00 2.94399585e+00 2.93350023e+00 + 2.92304176e+00 2.91262032e+00 2.90223577e+00 2.89188799e+00 2.88157685e+00 + 2.87130223e+00 2.86106401e+00 2.85086205e+00 2.84069624e+00 2.83056645e+00 + 2.82047255e+00 2.81041442e+00 2.80039195e+00 2.79040500e+00 2.78045345e+00 + 2.77053719e+00 2.76065609e+00 2.75081003e+00 2.74099889e+00 2.73122254e+00 + 2.72148088e+00 2.71177377e+00 2.70210110e+00 2.69246275e+00 2.68285861e+00 + 2.67328854e+00 2.66375244e+00 2.65425019e+00 2.64478167e+00 2.63534676e+00 + 2.62594535e+00 2.61657732e+00 2.60724255e+00 2.59794093e+00 2.58867235e+00 + 2.57943668e+00 2.57023382e+00 2.56106365e+00 2.55192606e+00 2.54282093e+00 + 2.53374816e+00 2.52470762e+00 2.51569920e+00 2.50672280e+00 2.49777830e+00 + 2.48886559e+00 2.47998457e+00 2.47113511e+00 2.46231711e+00 2.45353046e+00 + 2.44477506e+00 2.43605078e+00 2.42735752e+00 2.41869518e+00 2.41006365e+00 + 2.40146281e+00 2.39289257e+00 2.38435280e+00 2.37584342e+00 2.36736430e+00 + 2.35891535e+00 2.35049646e+00 2.34210752e+00 2.33374843e+00 2.32541909e+00 + 2.31711938e+00 2.30884921e+00 2.30060847e+00 2.29239706e+00 2.28421488e+00 + 2.27606182e+00 2.26793778e+00 2.25984266e+00 2.25177636e+00 2.24373877e+00 + 2.23572980e+00 2.22774934e+00 2.21979730e+00 2.21187357e+00 2.20397806e+00 + 2.19611066e+00 2.18827128e+00 2.18045982e+00 2.17267618e+00 2.16492026e+00 + 2.15719196e+00 2.14949119e+00 2.14181785e+00 2.13417184e+00 2.12655307e+00 + 2.11896144e+00 2.11139686e+00 2.10385922e+00 2.09634844e+00 2.08886442e+00 + 2.08140707e+00 2.07397629e+00 2.06657198e+00 2.05919406e+00 2.05184243e+00 + 2.04451700e+00 2.03721767e+00 2.02994436e+00 2.02269697e+00 2.01547541e+00 + 2.00827959e+00 2.00110941e+00 1.99396479e+00 1.98684564e+00 1.97975187e+00 + 1.97268338e+00 1.96564009e+00 1.95862191e+00 1.95162875e+00 1.94466051e+00 + 1.93771713e+00 1.93079849e+00 1.92390453e+00 1.91703514e+00 1.91019025e+00 + 1.90336976e+00 1.89657359e+00 1.88980166e+00 1.88305387e+00 1.87633015e+00 + 1.86963040e+00 1.86295454e+00 1.85630249e+00 1.84967417e+00 1.84306948e+00 + 1.83648835e+00 1.82993069e+00 1.82339642e+00 1.81688545e+00 1.81039771e+00 + 1.80393311e+00 1.79749156e+00 1.79107300e+00 1.78467732e+00 1.77830446e+00 + 1.77195434e+00 1.76562686e+00 1.75932196e+00 1.75303955e+00 1.74677955e+00 + 1.74054188e+00 1.73432647e+00 1.72813323e+00 1.72196208e+00 1.71581295e+00 + 1.70968576e+00 1.70358043e+00 1.69749689e+00 1.69143505e+00 1.68539483e+00 + 1.67937617e+00 1.67337899e+00 1.66740320e+00 1.66144874e+00 1.65551552e+00 + 1.64960347e+00 1.64371252e+00 1.63784260e+00 1.63199361e+00 1.62616550e+00 + 1.62035819e+00 1.61457160e+00 1.60880567e+00 1.60306030e+00 1.59733545e+00 + 1.59163102e+00 1.58594695e+00 1.58028317e+00 1.57463960e+00 1.56901617e+00 + 1.56341281e+00 1.55782945e+00 1.55226601e+00 1.54672244e+00 1.54119865e+00 + 1.53569457e+00 1.53021014e+00 1.52474528e+00 1.51929993e+00 1.51387402e+00 + 1.50846747e+00 1.50308023e+00 1.49771221e+00 1.49236335e+00 1.48703358e+00 + 1.48172284e+00 1.47643106e+00 1.47115816e+00 1.46590409e+00 1.46066878e+00 + 1.45545215e+00 1.45025414e+00 1.44507469e+00 1.43991373e+00 1.43477119e+00 + 1.42964701e+00 1.42454112e+00 1.41945346e+00 1.41438397e+00 1.40933257e+00 + 1.40429920e+00 1.39928380e+00 1.39428631e+00 1.38930666e+00 1.38434479e+00 + 1.37940063e+00 1.37447412e+00 1.36956521e+00 1.36467381e+00 1.35979988e+00 + 1.35494335e+00 1.35010416e+00 1.34528225e+00 1.34047755e+00 1.33569001e+00 + 1.33091956e+00 1.32616615e+00 1.32142970e+00 1.31671017e+00 1.31200748e+00 + 1.30732159e+00 1.30265243e+00 1.29799993e+00 1.29336405e+00 1.28874473e+00 + 1.28414189e+00 1.27955549e+00 1.27498547e+00 1.27043177e+00 1.26589432e+00 + 1.26137308e+00 1.25686798e+00 1.25237896e+00 1.24790598e+00 1.24344896e+00 + 1.23900786e+00 1.23458262e+00 1.23017318e+00 1.22577949e+00 1.22140148e+00 + 1.21703911e+00 1.21269231e+00 1.20836104e+00 1.20404523e+00 1.19974484e+00 + 1.19545980e+00 1.19119006e+00 1.18693557e+00 1.18269627e+00 1.17847210e+00 + 1.17426303e+00 1.17006898e+00 1.16588991e+00 1.16172576e+00 1.15757649e+00 + 1.15344203e+00 1.14932233e+00 1.14521735e+00 1.14112702e+00 1.13705130e+00 + 1.13299014e+00 1.12894348e+00 1.12491127e+00 1.12089346e+00 1.11689000e+00 + 1.11290083e+00 1.10892591e+00 1.10496519e+00 1.10101861e+00 1.09708612e+00 + 1.09316768e+00 1.08926323e+00 1.08537272e+00 1.08149611e+00 1.07763334e+00 + 1.07378437e+00 1.06994914e+00 1.06612761e+00 1.06231972e+00 1.05852544e+00 + 1.05474470e+00 1.05097747e+00 1.04722369e+00 1.04348332e+00 1.03975630e+00 + 1.03604260e+00 1.03234216e+00 1.02865493e+00 1.02498087e+00 1.02131993e+00 + 1.01767207e+00 1.01403724e+00 1.01041538e+00 1.00680646e+00 1.00321043e+00 + 9.99627246e-01 9.96056856e-01 9.92499216e-01 9.88954283e-01 9.85422010e-01 + 9.81902352e-01 9.78395264e-01 9.74900702e-01 9.71418620e-01 9.67948974e-01 + 9.64491719e-01 9.61046812e-01 9.57614208e-01 9.54193864e-01 9.50785735e-01 + 9.47389779e-01 9.44005950e-01 9.40634207e-01 9.37274506e-01 9.33926805e-01 + 9.30591059e-01 9.27267227e-01 9.23955266e-01 9.20655134e-01 9.17366788e-01 + 9.14090187e-01 9.10825288e-01 9.07572050e-01 9.04330430e-01 9.01100389e-01 + 8.97881883e-01 8.94674872e-01 8.91479316e-01 8.88295172e-01 8.85122401e-01 + 8.81960962e-01 8.78810814e-01 8.75671916e-01 8.72544230e-01 8.69427714e-01 + 8.66322329e-01 8.63228035e-01 8.60144793e-01 8.57072563e-01 8.54011306e-01 + 8.50960982e-01 8.47921552e-01 8.44892979e-01 8.41875222e-01 8.38868243e-01 + 8.35872004e-01 8.32886467e-01 8.29911592e-01 8.26947343e-01 8.23993681e-01 + 8.21050568e-01 8.18117967e-01 8.15195841e-01 8.12284151e-01 8.09382860e-01 + 8.06491932e-01 8.03611329e-01 8.00741015e-01 7.97880952e-01 7.95031104e-01 + 7.92191436e-01 7.89361909e-01 7.86542489e-01 7.83733138e-01 7.80932737e-01 + 7.78135481e-01 7.75340559e-01 7.72548015e-01 7.69757898e-01 7.66970253e-01 + 7.64185126e-01 7.61402562e-01 7.58622607e-01 7.55845306e-01 7.53070703e-01 + 7.50298843e-01 7.47529769e-01 7.44763525e-01 7.42000155e-01 7.39239702e-01 + 7.36482208e-01 7.33727716e-01 7.30976267e-01 7.28227905e-01 7.25482670e-01 + 7.22740604e-01 7.20001747e-01 7.17266140e-01 7.14533823e-01 7.11804837e-01 + 7.09079221e-01 7.06357014e-01 7.03638256e-01 7.00922986e-01 6.98211241e-01 + 6.95503060e-01 6.92798481e-01 6.90097542e-01 6.87400280e-01 6.84706731e-01 + 6.82016933e-01 6.79330922e-01 6.76648734e-01 6.73970405e-01 6.71295970e-01 + 6.68625464e-01 6.65958924e-01 6.63296382e-01 6.60637874e-01 6.57983434e-01 + 6.55333095e-01 6.52686890e-01 6.50044854e-01 6.47407019e-01 6.44773417e-01 + 6.42144081e-01 6.39519042e-01 6.36898334e-01 6.34281986e-01 6.31670031e-01 + 6.29062499e-01 6.26459420e-01 6.23860826e-01 6.21266746e-01 6.18677209e-01 + 6.16092246e-01 6.13511886e-01 6.10936157e-01 6.08365088e-01 6.05798708e-01 + 6.03237045e-01 6.00680126e-01 5.98127979e-01 5.95580631e-01 5.93038110e-01 + 5.90500441e-01 5.87967652e-01 5.85439769e-01 5.82916817e-01 5.80398823e-01 + 5.77885811e-01 5.75377807e-01 5.72874835e-01 5.70376921e-01 5.67884088e-01 + 5.65396360e-01 5.62913762e-01 5.60436316e-01 5.57964047e-01 5.55496977e-01 + 5.53035128e-01 5.50578524e-01 5.48127187e-01 5.45681138e-01 5.43240399e-01 + 5.40804991e-01 5.38374937e-01 5.35950256e-01 5.33530970e-01 5.31117099e-01 + 5.28708663e-01 5.26305682e-01 5.23908176e-01 5.21516164e-01 5.19129666e-01 + 5.16748699e-01 5.14373284e-01 5.12003438e-01 5.09639180e-01 5.07280528e-01 + 5.04927499e-01 5.02580111e-01 5.00238381e-01 4.97902326e-01 4.95571964e-01 + 4.93247309e-01 4.90928379e-01 4.88615190e-01 4.86307758e-01 4.84006098e-01 + 4.81710225e-01 4.79420155e-01 4.77135903e-01 4.74857483e-01 4.72584909e-01 + 4.70318196e-01 4.68057358e-01 4.65802409e-01 4.63553362e-01 4.61310230e-01 + 4.59073026e-01 4.56841764e-01 4.54616456e-01 4.52397114e-01 4.50183750e-01 + 4.47976377e-01 4.45775007e-01 4.43579650e-01 4.41390318e-01 4.39207022e-01 + 4.37029774e-01 4.34858583e-01 4.32693460e-01 4.30534416e-01 4.28381460e-01 + 4.26234603e-01 4.24093854e-01 4.21959222e-01 4.19830716e-01 4.17708346e-01 + 4.15592121e-01 4.13482048e-01 4.11378137e-01 4.09280395e-01 4.07188831e-01 + 4.05103452e-01 4.03024267e-01 4.00951281e-01 3.98884503e-01 3.96823939e-01 + 3.94769597e-01 3.92721483e-01 3.90679603e-01 3.88643963e-01 3.86614570e-01 + 3.84591429e-01 3.82574547e-01 3.80563928e-01 3.78559578e-01 3.76561502e-01 + 3.74569704e-01 3.72584190e-01 3.70604965e-01 3.68632031e-01 3.66665395e-01 + 3.64705058e-01 3.62751027e-01 3.60803303e-01 3.58861891e-01 3.56926793e-01 + 3.54998014e-01 3.53075555e-01 3.51159420e-01 3.49249611e-01 3.47346130e-01 + 3.45448981e-01 3.43558164e-01 3.41673682e-01 3.39795537e-01 3.37923729e-01 + 3.36058261e-01 3.34199134e-01 3.32346349e-01 3.30499906e-01 3.28659807e-01 + 3.26826052e-01 3.24998641e-01 3.23177575e-01 3.21362854e-01 3.19554477e-01 + 3.17752446e-01 3.15956758e-01 3.14167414e-01 3.12384413e-01 3.10607754e-01 + 3.08837437e-01 3.07073459e-01 3.05315821e-01 3.03564519e-01 3.01819554e-01 + 3.00080922e-01 2.98348623e-01 2.96622654e-01 2.94903013e-01 2.93189698e-01 + 2.91482706e-01 2.89782035e-01 2.88087682e-01 2.86399644e-01 2.84717918e-01 + 2.83042501e-01 2.81373389e-01 2.79710580e-01 2.78054070e-01 2.76403855e-01 + 2.74759931e-01 2.73122294e-01 2.71490940e-01 2.69865865e-01 2.68247065e-01 + 2.66634536e-01 2.65028271e-01 2.63428268e-01 2.61834520e-01 2.60247024e-01 + 2.58665773e-01 2.57090764e-01 2.55521989e-01 2.53959444e-01 2.52403124e-01 + 2.50853022e-01 2.49309133e-01 2.47771451e-01 2.46239969e-01 2.44714682e-01 + 2.43195584e-01 2.41682667e-01 2.40175925e-01 2.38675352e-01 2.37180941e-01 + 2.35692686e-01 2.34210578e-01 2.32734611e-01 2.31264778e-01 2.29801072e-01 + 2.28343485e-01 2.26892010e-01 2.25446638e-01 2.24007363e-01 2.22574177e-01 + 2.21147071e-01 2.19726037e-01 2.18311068e-01 2.16902156e-01 2.15499291e-01 + 2.14102466e-01 2.12711671e-01 2.11326899e-01 2.09948141e-01 2.08575387e-01 + 2.07208630e-01 2.05847859e-01 2.04493066e-01 2.03144242e-01 2.01801377e-01 + 2.00464463e-01 1.99133489e-01 1.97808446e-01 1.96489324e-01 1.95176114e-01 + 1.93868806e-01 1.92567391e-01 1.91271857e-01 1.89982196e-01 1.88698396e-01 + 1.87420448e-01 1.86148342e-01 1.84882066e-01 1.83621611e-01 1.82366967e-01 + 1.81118121e-01 1.79875065e-01 1.78637786e-01 1.77406275e-01 1.76180520e-01 + 1.74960510e-01 1.73746235e-01 1.72537682e-01 1.71334841e-01 1.70137701e-01 + 1.68946250e-01 1.67760477e-01 1.66580371e-01 1.65405919e-01 1.64237110e-01 + 1.63073933e-01 1.61916375e-01 1.60764425e-01 1.59618071e-01 1.58477302e-01 + 1.57342104e-01 1.56212466e-01 1.55088376e-01 1.53969822e-01 1.52856791e-01 + 1.51749271e-01 1.50647250e-01 1.49550715e-01 1.48459654e-01 1.47374054e-01 + 1.46293903e-01 1.45219188e-01 1.44149895e-01 1.43086014e-01 1.42027530e-01 + 1.40974430e-01 1.39926703e-01 1.38884334e-01 1.37847312e-01 1.36815622e-01 + 1.35789251e-01 1.34768187e-01 1.33752417e-01 1.32741926e-01 1.31736702e-01 + 1.30736731e-01 1.29742001e-01 1.28752496e-01 1.27768205e-01 1.26789113e-01 + 1.25815206e-01 1.24846472e-01 1.23882897e-01 1.22924466e-01 1.21971167e-01 + 1.21022984e-01 1.20079906e-01 1.19141916e-01 1.18209003e-01 1.17281151e-01 + 1.16358347e-01 1.15440577e-01 1.14527827e-01 1.13620082e-01 1.12717329e-01 + 1.11819553e-01 1.10926741e-01 1.10038877e-01 1.09155949e-01 1.08277940e-01 + 1.07404838e-01 1.06536628e-01 1.05673296e-01 1.04814826e-01 1.03961206e-01 + 1.03112419e-01 1.02268453e-01 1.01429291e-01 1.00594921e-01 9.97653261e-02 + 9.89404933e-02 9.81204076e-02 9.73050542e-02 9.64944186e-02 9.56884861e-02 + 9.48872421e-02 9.40906717e-02 9.32987602e-02 9.25114930e-02 9.17288552e-02 + 9.09508321e-02 9.01774088e-02 8.94085704e-02 8.86443023e-02 8.78845894e-02 + 8.71294169e-02 8.63787700e-02 8.56326336e-02 8.48909929e-02 8.41538330e-02 + 8.34211388e-02 8.26928954e-02 8.19690879e-02 8.12497011e-02 8.05347202e-02 + 7.98241301e-02 7.91179157e-02 7.84160621e-02 7.77185541e-02 7.70253768e-02 + 7.63365150e-02 7.56519536e-02 7.49716776e-02 7.42956719e-02 7.36239214e-02 + 7.29564109e-02 7.22931253e-02 7.16340496e-02 7.09791686e-02 7.03284671e-02 + 6.96819300e-02 6.90395422e-02 6.84012886e-02 6.77671539e-02 6.71371231e-02 + 6.65111809e-02 6.58893122e-02 6.52715019e-02 6.46577348e-02 6.40479958e-02 + 6.34422696e-02 6.28405411e-02 6.22427951e-02 6.16490165e-02 6.10591902e-02 + 6.04733010e-02 5.98913336e-02 5.93132730e-02 5.87391041e-02 5.81688116e-02 + 5.76023804e-02 5.70397954e-02 5.64810414e-02 5.59261034e-02 5.53749662e-02 + 5.48276146e-02 5.42840336e-02 5.37442081e-02 5.32081229e-02 5.26757629e-02 + 5.21471132e-02 5.16221585e-02 5.11008839e-02 5.05832742e-02 5.00693144e-02 + 4.95589895e-02 4.90522845e-02 4.85491842e-02 4.80496738e-02 4.75537381e-02 + 4.70613623e-02 4.65725312e-02 4.60872300e-02 4.56054437e-02 4.51271574e-02 + 4.46523560e-02 4.41810248e-02 4.37131487e-02 4.32487129e-02 4.27877026e-02 + 4.23301028e-02 4.18758987e-02 4.14250754e-02 4.09776182e-02 4.05335123e-02 + 4.00927428e-02 3.96552949e-02 3.92211540e-02 3.87903053e-02 3.83627340e-02 + 3.79384255e-02 3.75173650e-02 3.70995379e-02 3.66849296e-02 3.62735253e-02 + 3.58653105e-02 3.54602706e-02 3.50583911e-02 3.46596572e-02 3.42640546e-02 + 3.38715687e-02 3.34821850e-02 3.30958890e-02 3.27126662e-02 3.23325023e-02 + 3.19553828e-02 3.15812932e-02 3.12102194e-02 3.08421468e-02 3.04770612e-02 + 3.01149482e-02 2.97557936e-02 2.93995832e-02 2.90463026e-02 2.86959377e-02 + 2.83484743e-02 2.80038982e-02 2.76621952e-02 2.73233514e-02 2.69873525e-02 + 2.66541845e-02 2.63238333e-02 2.59962850e-02 2.56715256e-02 2.53495410e-02 + 2.50303174e-02 2.47138408e-02 2.44000974e-02 2.40890733e-02 2.37807546e-02 + 2.34751275e-02 2.31721784e-02 2.28718933e-02 2.25742587e-02 2.22792607e-02 + 2.19868858e-02 2.16971202e-02 2.14099505e-02 2.11253629e-02 2.08433439e-02 + 2.05638801e-02 2.02869579e-02 2.00125638e-02 1.97406844e-02 1.94713063e-02 + 1.92044162e-02 1.89400006e-02 1.86780462e-02 1.84185398e-02 1.81614681e-02 + 1.79068179e-02 1.76545759e-02 1.74047290e-02 1.71572641e-02 1.69121681e-02 + 1.66694279e-02 1.64290304e-02 1.61909626e-02 1.59552116e-02 1.57217644e-02 + 1.54906081e-02 1.52617298e-02 1.50351167e-02 1.48107559e-02 1.45886347e-02 + 1.43687403e-02 1.41510600e-02 1.39355811e-02 1.37222909e-02 1.35111769e-02 + 1.33022264e-02 1.30954269e-02 1.28907658e-02 1.26882308e-02 1.24878092e-02 + 1.22894888e-02 1.20932571e-02 1.18991017e-02 1.17070104e-02 1.15169709e-02 + 1.13289709e-02 1.11429983e-02 1.09590407e-02 1.07770862e-02 1.05971226e-02 + 1.04191377e-02 1.02431196e-02 1.00690563e-02 9.89693584e-03 9.72674620e-03 + 9.55847554e-03 9.39211199e-03 9.22764373e-03 9.06505895e-03 8.90434592e-03 + 8.74549290e-03 8.58848822e-03 8.43332023e-03 8.27997732e-03 8.12844792e-03 + 7.97872048e-03 7.83078350e-03 7.68462553e-03 7.54023512e-03 7.39760089e-03 + 7.25671149e-03 7.11755558e-03 6.98012189e-03 6.84439918e-03 6.71037622e-03 + 6.57804186e-03 6.44738496e-03 6.31839441e-03 6.19105916e-03 6.06536818e-03 + 5.94131048e-03 5.81887512e-03 5.69805119e-03 5.57882780e-03 5.46119412e-03 + 5.34513934e-03 5.23065272e-03 5.11772351e-03 5.00634104e-03 4.89649464e-03 + 4.78817372e-03 4.68136769e-03 4.57606601e-03 4.47225819e-03 4.36993376e-03 + 4.26908230e-03 4.16969342e-03 4.07175677e-03 3.97526205e-03 3.88019897e-03 + 3.78655730e-03 3.69432685e-03 3.60349746e-03 3.51405899e-03 3.42600138e-03 + 3.33931457e-03 3.25398856e-03 3.17001338e-03 3.08737909e-03 3.00607580e-03 + 2.92609366e-03 2.84742285e-03 2.77005359e-03 2.69397614e-03 2.61918079e-03 + 2.54565788e-03 2.47339778e-03 2.40239090e-03 2.33262770e-03 2.26409866e-03 + 2.19679431e-03 2.13070520e-03 2.06582195e-03 2.00213518e-03 1.93963558e-03 + 1.87831387e-03 1.81816080e-03 1.75916715e-03 1.70132377e-03 1.64462151e-03 + 1.58905129e-03 1.53460405e-03 1.48127077e-03 1.42904247e-03 1.37791021e-03 + 1.32786509e-03 1.27889824e-03 1.23100083e-03 1.18416408e-03 1.13837922e-03 + 1.09363756e-03 1.04993040e-03 1.00724912e-03 9.65585108e-04 9.24929807e-04 + 8.85274690e-04 8.46611271e-04 8.08931100e-04 7.72225766e-04 7.36486893e-04 + 7.01706146e-04 6.67875227e-04 6.34985873e-04 6.03029860e-04 5.71999004e-04 + 5.41885154e-04 5.12680200e-04 4.84376068e-04 4.56964721e-04 4.30438160e-04 + 4.04788423e-04 3.80007585e-04 3.56087759e-04 3.33021095e-04 3.10799778e-04 + 2.89416035e-04 2.68862124e-04 2.49130345e-04 2.30213031e-04 2.12102556e-04 + 1.94791327e-04 1.78271789e-04 1.62536427e-04 1.47577757e-04 1.33388336e-04 + 1.19960756e-04 1.07287646e-04 9.53616714e-05 8.41755336e-05 7.37219709e-05 + 6.39937580e-05 5.49837057e-05 4.66846611e-05 3.90895074e-05 3.21911642e-05 + 2.59825869e-05 2.04567671e-05 1.56067322e-05 1.14255457e-05 7.90630673e-06 + 5.04215042e-06 2.82624746e-06 1.25180428e-06 3.12062870e-07 0.00000000e+00 + 2.22608225e+06 1.58349819e+06 7.81810035e+05 5.14720588e+05 3.81277804e+05 + 3.01291353e+05 2.48031186e+05 2.10041621e+05 1.81594861e+05 1.59508832e+05 + 1.41874326e+05 1.27476419e+05 1.15505188e+05 1.05399940e+05 9.67601994e+04 + 8.92923040e+04 8.27760232e+04 7.70429606e+04 7.19621553e+04 6.74302297e+04 + 6.33644936e+04 5.96980178e+04 5.63760523e+04 5.33533778e+04 5.05923202e+04 + 4.80612410e+04 4.57333767e+04 4.35859354e+04 4.15993877e+04 3.97569038e+04 + 3.80439035e+04 3.64476930e+04 3.49571701e+04 3.35625831e+04 3.22553317e+04 + 3.10278024e+04 2.98732316e+04 2.87855905e+04 2.77594881e+04 2.67900896e+04 + 2.58730467e+04 2.50044379e+04 2.41807181e+04 2.33986745e+04 2.26553884e+04 + 2.19482032e+04 2.12746952e+04 2.06326489e+04 2.00200357e+04 1.94349939e+04 + 1.88758129e+04 1.83409177e+04 1.78288558e+04 1.73382861e+04 1.68679681e+04 + 1.64167529e+04 1.59835747e+04 1.55674439e+04 1.51674403e+04 1.47827070e+04 + 1.44124453e+04 1.40559100e+04 1.37124046e+04 1.33812782e+04 1.30619208e+04 + 1.27537613e+04 1.24562637e+04 1.21689247e+04 1.18912715e+04 1.16228592e+04 + 1.13632689e+04 1.11121063e+04 1.08689990e+04 1.06335961e+04 1.04055659e+04 + 1.01845949e+04 9.97038669e+03 9.76266069e+03 9.56115111e+03 9.36560607e+03 + 9.17578669e+03 8.99146627e+03 8.81242953e+03 8.63847193e+03 8.46939900e+03 + 8.30502576e+03 8.14517614e+03 7.98968245e+03 7.83838493e+03 7.69113127e+03 + 7.54777618e+03 7.40818102e+03 7.27221341e+03 7.13974691e+03 7.01066068e+03 + 6.88483917e+03 6.76217186e+03 6.64255298e+03 6.52588127e+03 6.41205975e+03 + 6.30099549e+03 6.19259938e+03 6.08678602e+03 5.98347343e+03 5.88258297e+03 + 5.78403912e+03 5.68776935e+03 5.59370398e+03 5.50177603e+03 5.41192111e+03 + 5.32407728e+03 5.23818495e+03 5.15418678e+03 5.07202755e+03 4.99165408e+03 + 4.91301515e+03 4.83606139e+03 4.76074521e+03 4.68702073e+03 4.61484368e+03 + 4.54417137e+03 4.47496258e+03 4.40717752e+03 4.34077778e+03 4.27572626e+03 + 4.21198709e+03 4.14952564e+03 4.08830841e+03 4.02830302e+03 3.96947815e+03 + 3.91180349e+03 3.85524973e+03 3.79978850e+03 3.74539232e+03 3.69203459e+03 + 3.63968956e+03 3.58833225e+03 3.53793850e+03 3.48848485e+03 3.43994858e+03 + 3.39230768e+03 3.34554075e+03 3.29962709e+03 3.25454659e+03 3.21027972e+03 + 3.16680755e+03 3.12411169e+03 3.08217429e+03 3.04097801e+03 3.00050601e+03 + 2.96074193e+03 2.92166985e+03 2.88327434e+03 2.84554037e+03 2.80845334e+03 + 2.77199904e+03 2.73616366e+03 2.70093376e+03 2.66629629e+03 2.63223850e+03 + 2.59874804e+03 2.56581284e+03 2.53342118e+03 2.50156163e+03 2.47022308e+03 + 2.43939468e+03 2.40906589e+03 2.37922642e+03 2.34986625e+03 2.32097563e+03 + 2.29254502e+03 2.26456516e+03 2.23702699e+03 2.20992170e+03 2.18324069e+03 + 2.15697556e+03 2.13111812e+03 2.10566040e+03 2.08059459e+03 2.05591310e+03 + 2.03160849e+03 2.00767354e+03 1.98410115e+03 1.96088443e+03 1.93801663e+03 + 1.91549116e+03 1.89330159e+03 1.87144164e+03 1.84990517e+03 1.82868617e+03 + 1.80777879e+03 1.78717729e+03 1.76687607e+03 1.74686967e+03 1.72715272e+03 + 1.70772001e+03 1.68856640e+03 1.66968690e+03 1.65107661e+03 1.63273076e+03 + 1.61464464e+03 1.59681369e+03 1.57923342e+03 1.56189944e+03 1.54480747e+03 + 1.52795329e+03 1.51133281e+03 1.49494199e+03 1.47877690e+03 1.46283367e+03 + 1.44710853e+03 1.43159778e+03 1.41629779e+03 1.40120502e+03 1.38631599e+03 + 1.37162730e+03 1.35713560e+03 1.34283764e+03 1.32873021e+03 1.31481016e+03 + 1.30107443e+03 1.28752000e+03 1.27414392e+03 1.26094329e+03 1.24791526e+03 + 1.23505706e+03 1.22236596e+03 1.20983928e+03 1.19747440e+03 1.18526874e+03 + 1.17321977e+03 1.16132503e+03 1.14958208e+03 1.13798854e+03 1.12654208e+03 + 1.11524039e+03 1.10408123e+03 1.09306240e+03 1.08218171e+03 1.07143706e+03 + 1.06082635e+03 1.05034752e+03 1.03999858e+03 1.02977755e+03 1.01968248e+03 + 1.00971148e+03 9.99862673e+02 9.90134232e+02 9.80524352e+02 9.71031265e+02 + 9.61653233e+02 9.52388550e+02 9.43235540e+02 9.34192556e+02 9.25257981e+02 + 9.16430226e+02 9.07707731e+02 8.99088962e+02 8.90572412e+02 8.82156601e+02 + 8.73840073e+02 8.65621398e+02 8.57499172e+02 8.49472013e+02 8.41538563e+02 + 8.33697489e+02 8.25947478e+02 8.18287242e+02 8.10715512e+02 8.03231042e+02 + 7.95832607e+02 7.88519002e+02 7.81289042e+02 7.74141562e+02 7.67075417e+02 + 7.60089480e+02 7.53182643e+02 7.46353816e+02 7.39601926e+02 7.32925920e+02 + 7.26324759e+02 7.19797425e+02 7.13342912e+02 7.06960233e+02 7.00648417e+02 + 6.94406507e+02 6.88233563e+02 6.82128659e+02 6.76090883e+02 6.70119341e+02 + 6.64213148e+02 6.58371437e+02 6.52593354e+02 6.46878057e+02 6.41224718e+02 + 6.35632522e+02 6.30100667e+02 6.24628363e+02 6.19214833e+02 6.13859311e+02 + 6.08561043e+02 6.03319287e+02 5.98133313e+02 5.93002401e+02 5.87925843e+02 + 5.82902941e+02 5.77933007e+02 5.73015366e+02 5.68149350e+02 5.63334303e+02 + 5.58569579e+02 5.53854542e+02 5.49188562e+02 5.44571024e+02 5.40001318e+02 + 5.35478844e+02 5.31003012e+02 5.26573240e+02 5.22188954e+02 5.17849590e+02 + 5.13554590e+02 5.09303406e+02 5.05095498e+02 5.00930333e+02 4.96807386e+02 + 4.92726140e+02 4.88686085e+02 4.84686718e+02 4.80727545e+02 4.76808077e+02 + 4.72927834e+02 4.69086341e+02 4.65283131e+02 4.61517743e+02 4.57789722e+02 + 4.54098622e+02 4.50444001e+02 4.46825423e+02 4.43242459e+02 4.39694687e+02 + 4.36181689e+02 4.32703055e+02 4.29258377e+02 4.25847258e+02 4.22469302e+02 + 4.19124121e+02 4.15811330e+02 4.12530553e+02 4.09281415e+02 4.06063550e+02 + 4.02876594e+02 3.99720190e+02 3.96593984e+02 3.93497629e+02 3.90430781e+02 + 3.87393101e+02 3.84384256e+02 3.81403915e+02 3.78451754e+02 3.75527452e+02 + 3.72630692e+02 3.69761162e+02 3.66918554e+02 3.64102564e+02 3.61312892e+02 + 3.58549243e+02 3.55811324e+02 3.53098846e+02 3.50411527e+02 3.47749085e+02 + 3.45111244e+02 3.42497730e+02 3.39908273e+02 3.37342608e+02 3.34800472e+02 + 3.32281605e+02 3.29785752e+02 3.27312661e+02 3.24862081e+02 3.22433768e+02 + 3.20027478e+02 3.17642971e+02 3.15280011e+02 3.12938364e+02 3.10617800e+02 + 3.08318091e+02 3.06039012e+02 3.03780341e+02 3.01541860e+02 2.99323352e+02 + 2.97124603e+02 2.94945402e+02 2.92785542e+02 2.90644817e+02 2.88523024e+02 + 2.86419962e+02 2.84335434e+02 2.82269244e+02 2.80221198e+02 2.78191108e+02 + 2.76178783e+02 2.74184039e+02 2.72206692e+02 2.70246559e+02 2.68303464e+02 + 2.66377228e+02 2.64467676e+02 2.62574637e+02 2.60697939e+02 2.58837415e+02 + 2.56992898e+02 2.55164224e+02 2.53351231e+02 2.51553757e+02 2.49771646e+02 + 2.48004741e+02 2.46252886e+02 2.44515930e+02 2.42793721e+02 2.41086110e+02 + 2.39392951e+02 2.37714098e+02 2.36049407e+02 2.34398736e+02 2.32761944e+02 + 2.31138894e+02 2.29529448e+02 2.27933471e+02 2.26350828e+02 2.24781389e+02 + 2.23225022e+02 2.21681598e+02 2.20150990e+02 2.18633071e+02 2.17127717e+02 + 2.15634805e+02 2.14154214e+02 2.12685822e+02 2.11229511e+02 2.09785165e+02 + 2.08352666e+02 2.06931899e+02 2.05522752e+02 2.04125113e+02 2.02738870e+02 + 2.01363914e+02 2.00000136e+02 1.98647431e+02 1.97305691e+02 1.95974813e+02 + 1.94654692e+02 1.93345228e+02 1.92046318e+02 1.90757863e+02 1.89479764e+02 + 1.88211924e+02 1.86954245e+02 1.85706633e+02 1.84468994e+02 1.83241234e+02 + 1.82023260e+02 1.80814982e+02 1.79616309e+02 1.78427153e+02 1.77247425e+02 + 1.76077038e+02 1.74915905e+02 1.73763943e+02 1.72621066e+02 1.71487191e+02 + 1.70362235e+02 1.69246118e+02 1.68138758e+02 1.67040077e+02 1.65949994e+02 + 1.64868433e+02 1.63795316e+02 1.62730567e+02 1.61674111e+02 1.60625872e+02 + 1.59585778e+02 1.58553755e+02 1.57529732e+02 1.56513636e+02 1.55505398e+02 + 1.54504947e+02 1.53512215e+02 1.52527133e+02 1.51549634e+02 1.50579651e+02 + 1.49617117e+02 1.48661968e+02 1.47714139e+02 1.46773566e+02 1.45840185e+02 + 1.44913934e+02 1.43994752e+02 1.43082576e+02 1.42177346e+02 1.41279003e+02 + 1.40387486e+02 1.39502738e+02 1.38624700e+02 1.37753314e+02 1.36888525e+02 + 1.36030275e+02 1.35178509e+02 1.34333173e+02 1.33494210e+02 1.32661569e+02 + 1.31835195e+02 1.31015035e+02 1.30201038e+02 1.29393152e+02 1.28591325e+02 + 1.27795507e+02 1.27005648e+02 1.26221699e+02 1.25443610e+02 1.24671333e+02 + 1.23904819e+02 1.23144023e+02 1.22388895e+02 1.21639390e+02 1.20895462e+02 + 1.20157066e+02 1.19424155e+02 1.18696686e+02 1.17974614e+02 1.17257895e+02 + 1.16546486e+02 1.15840345e+02 1.15139429e+02 1.14443696e+02 1.13753104e+02 + 1.13067612e+02 1.12387179e+02 1.11711766e+02 1.11041331e+02 1.10375837e+02 + 1.09715243e+02 1.09059510e+02 1.08408601e+02 1.07762478e+02 1.07121102e+02 + 1.06484437e+02 1.05852445e+02 1.05225091e+02 1.04602338e+02 1.03984150e+02 + 1.03370492e+02 1.02761329e+02 1.02156626e+02 1.01556348e+02 1.00960462e+02 + 1.00368933e+02 9.97817288e+01 9.91988155e+01 9.86201604e+01 9.80457312e+01 + 9.74754955e+01 9.69094215e+01 9.63474776e+01 9.57896324e+01 9.52358551e+01 + 9.46861147e+01 9.41403810e+01 9.35986237e+01 9.30608129e+01 9.25269190e+01 + 9.19969127e+01 9.14707649e+01 9.09484468e+01 9.04299298e+01 8.99151856e+01 + 8.94041860e+01 8.88969034e+01 8.83933101e+01 8.78933789e+01 8.73970825e+01 + 8.69043941e+01 8.64152872e+01 8.59297352e+01 8.54477121e+01 8.49691918e+01 + 8.44941486e+01 8.40225570e+01 8.35543915e+01 8.30896273e+01 8.26282392e+01 + 8.21702026e+01 8.17154929e+01 8.12640859e+01 8.08159575e+01 8.03710836e+01 + 7.99294406e+01 7.94910048e+01 7.90557528e+01 7.86236615e+01 7.81947079e+01 + 7.77688689e+01 7.73461220e+01 7.69264446e+01 7.65098144e+01 7.60962090e+01 + 7.56856065e+01 7.52779850e+01 7.48733228e+01 7.44715981e+01 7.40727897e+01 + 7.36768761e+01 7.32838363e+01 7.28936492e+01 7.25062939e+01 7.21217496e+01 + 7.17399959e+01 7.13610121e+01 7.09847779e+01 7.06112732e+01 7.02404777e+01 + 6.98723715e+01 6.95069348e+01 6.91441478e+01 6.87839908e+01 6.84264444e+01 + 6.80714892e+01 6.77191058e+01 6.73692750e+01 6.70219779e+01 6.66771953e+01 + 6.63349084e+01 6.59950985e+01 6.56577468e+01 6.53228348e+01 6.49903439e+01 + 6.46602559e+01 6.43325523e+01 6.40072149e+01 6.36842258e+01 6.33635667e+01 + 6.30452197e+01 6.27291670e+01 6.24153909e+01 6.21038734e+01 6.17945972e+01 + 6.14875446e+01 6.11826981e+01 6.08800404e+01 6.05795541e+01 6.02812221e+01 + 5.99850271e+01 5.96909520e+01 5.93989799e+01 5.91090938e+01 5.88212767e+01 + 5.85355120e+01 5.82517829e+01 5.79700727e+01 5.76903647e+01 5.74126425e+01 + 5.71368896e+01 5.68630897e+01 5.65912262e+01 5.63212831e+01 5.60532440e+01 + 5.57870929e+01 5.55228137e+01 5.52603904e+01 5.49998069e+01 5.47410475e+01 + 5.44840964e+01 5.42289376e+01 5.39755557e+01 5.37239350e+01 5.34740598e+01 + 5.32259147e+01 5.29794844e+01 5.27347533e+01 5.24917062e+01 5.22503279e+01 + 5.20106033e+01 5.17725171e+01 5.15360544e+01 5.13012002e+01 5.10679396e+01 + 5.08362578e+01 5.06061399e+01 5.03775714e+01 5.01505376e+01 4.99250240e+01 + 4.97010159e+01 4.94784991e+01 4.92574593e+01 4.90378820e+01 4.88197532e+01 + 4.86030588e+01 4.83877846e+01 4.81739168e+01 4.79614414e+01 4.77503447e+01 + 4.75406128e+01 4.73322323e+01 4.71251894e+01 4.69194707e+01 4.67150628e+01 + 4.65119524e+01 4.63101262e+01 4.61095712e+01 4.59102741e+01 4.57122221e+01 + 4.55154023e+01 4.53198019e+01 4.51254081e+01 4.49322083e+01 4.47401900e+01 + 4.45493409e+01 4.43596484e+01 4.41711005e+01 4.39836848e+01 4.37973895e+01 + 4.36122025e+01 4.34281120e+01 4.32451062e+01 4.30631734e+01 4.28823021e+01 + 4.27024809e+01 4.25236983e+01 4.23459432e+01 4.21692043e+01 4.19934706e+01 + 4.18187313e+01 4.16449754e+01 4.14721922e+01 4.13003711e+01 4.11295016e+01 + 4.09595733e+01 4.07905759e+01 4.06224991e+01 4.04553330e+01 4.02890674e+01 + 4.01236927e+01 3.99591990e+01 3.97955766e+01 3.96328161e+01 3.94709080e+01 + 3.93098430e+01 3.91496120e+01 3.89902058e+01 3.88316154e+01 3.86738321e+01 + 3.85168470e+01 3.83606515e+01 3.82052371e+01 3.80505954e+01 3.78967181e+01 + 3.77435969e+01 3.75912238e+01 3.74395909e+01 3.72886902e+01 3.71385140e+01 + 3.69890548e+01 3.68403049e+01 3.66922569e+01 3.65449035e+01 3.63982376e+01 + 3.62522520e+01 3.61069398e+01 3.59622940e+01 3.58183080e+01 3.56749750e+01 + 3.55322884e+01 3.53902419e+01 3.52488290e+01 3.51080436e+01 3.49678794e+01 + 3.48283304e+01 3.46893908e+01 3.45510545e+01 3.44133160e+01 3.42761695e+01 + 3.41396096e+01 3.40036306e+01 3.38682274e+01 3.37333946e+01 3.35991271e+01 + 3.34654197e+01 3.33322676e+01 3.31996658e+01 3.30676095e+01 3.29360940e+01 + 3.28051146e+01 3.26746669e+01 3.25447464e+01 3.24153486e+01 3.22864694e+01 + 3.21581045e+01 3.20302498e+01 3.19029013e+01 3.17760549e+01 3.16497068e+01 + 3.15238532e+01 3.13984903e+01 3.12736145e+01 3.11492222e+01 3.10253099e+01 + 3.09018741e+01 3.07789115e+01 3.06564187e+01 3.05343925e+01 3.04128297e+01 + 3.02917272e+01 3.01710820e+01 3.00508911e+01 2.99311516e+01 2.98118605e+01 + 2.96930151e+01 2.95746127e+01 2.94566505e+01 2.93391259e+01 2.92220364e+01 + 2.91053793e+01 2.89891523e+01 2.88733530e+01 2.87579788e+01 2.86430275e+01 + 2.85284969e+01 2.84143847e+01 2.83006887e+01 2.81874068e+01 2.80745368e+01 + 2.79620768e+01 2.78500247e+01 2.77383786e+01 2.76271364e+01 2.75162964e+01 + 2.74058566e+01 2.72958153e+01 2.71861707e+01 2.70769209e+01 2.69680644e+01 + 2.68595994e+01 2.67515242e+01 2.66438373e+01 2.65365371e+01 2.64296219e+01 + 2.63230904e+01 2.62169409e+01 2.61111720e+01 2.60057823e+01 2.59007703e+01 + 2.57961347e+01 2.56918740e+01 2.55879869e+01 2.54844721e+01 2.53813283e+01 + 2.52785542e+01 2.51761485e+01 2.50741101e+01 2.49724376e+01 2.48711298e+01 + 2.47701856e+01 2.46696038e+01 2.45693833e+01 2.44695229e+01 2.43700215e+01 + 2.42708779e+01 2.41720911e+01 2.40736601e+01 2.39755837e+01 2.38778609e+01 + 2.37804906e+01 2.36834719e+01 2.35868037e+01 2.34904850e+01 2.33945148e+01 + 2.32988921e+01 2.32036160e+01 2.31086854e+01 2.30140995e+01 2.29198573e+01 + 2.28259578e+01 2.27324001e+01 2.26391833e+01 2.25463065e+01 2.24537687e+01 + 2.23615691e+01 2.22697067e+01 2.21781807e+01 2.20869902e+01 2.19961343e+01 + 2.19056121e+01 2.18154227e+01 2.17255653e+01 2.16360390e+01 2.15468430e+01 + 2.14579763e+01 2.13694383e+01 2.12812279e+01 2.11933443e+01 2.11057868e+01 + 2.10185544e+01 2.09316464e+01 2.08450619e+01 2.07588000e+01 2.06728599e+01 + 2.05872409e+01 2.05019420e+01 2.04169624e+01 2.03323014e+01 2.02479581e+01 + 2.01639316e+01 2.00802212e+01 1.99968260e+01 1.99137452e+01 1.98309780e+01 + 1.97485236e+01 1.96663811e+01 1.95845497e+01 1.95030287e+01 1.94218171e+01 + 1.93409142e+01 1.92603192e+01 1.91800312e+01 1.91000494e+01 1.90203730e+01 + 1.89410012e+01 1.88619332e+01 1.87831681e+01 1.87047051e+01 1.86265434e+01 + 1.85486822e+01 1.84711207e+01 1.83938580e+01 1.83168933e+01 1.82402258e+01 + 1.81638547e+01 1.80877791e+01 1.80119982e+01 1.79365112e+01 1.78613173e+01 + 1.77864157e+01 1.77118054e+01 1.76374858e+01 1.75634559e+01 1.74897149e+01 + 1.74162620e+01 1.73430964e+01 1.72702173e+01 1.71976237e+01 1.71253149e+01 + 1.70532900e+01 1.69815482e+01 1.69100887e+01 1.68389107e+01 1.67680132e+01 + 1.66973955e+01 1.66270567e+01 1.65569960e+01 1.64872125e+01 1.64177054e+01 + 1.63484739e+01 1.62795171e+01 1.62108342e+01 1.61424243e+01 1.60742866e+01 + 1.60064203e+01 1.59388245e+01 1.58714984e+01 1.58044411e+01 1.57376518e+01 + 1.56711296e+01 1.56048737e+01 1.55388833e+01 1.54731575e+01 1.54076954e+01 + 1.53424963e+01 1.52775592e+01 1.52128833e+01 1.51484679e+01 1.50843120e+01 + 1.50204147e+01 1.49567753e+01 1.48933929e+01 1.48302667e+01 1.47673958e+01 + 1.47047793e+01 1.46424165e+01 1.45803065e+01 1.45184483e+01 1.44568413e+01 + 1.43954845e+01 1.43343772e+01 1.42735183e+01 1.42129073e+01 1.41525430e+01 + 1.40924249e+01 1.40325519e+01 1.39729232e+01 1.39135381e+01 1.38543957e+01 + 1.37954951e+01 1.37368355e+01 1.36784161e+01 1.36202360e+01 1.35622943e+01 + 1.35045904e+01 1.34471233e+01 1.33898921e+01 1.33328961e+01 1.32761345e+01 + 1.32196063e+01 1.31633108e+01 1.31072471e+01 1.30514145e+01 1.29958120e+01 + 1.29404389e+01 1.28852943e+01 1.28303774e+01 1.27756875e+01 1.27212235e+01 + 1.26669849e+01 1.26129706e+01 1.25591800e+01 1.25056122e+01 1.24522663e+01 + 1.23991416e+01 1.23462373e+01 1.22935525e+01 1.22410865e+01 1.21888384e+01 + 1.21368074e+01 1.20849927e+01 1.20333935e+01 1.19820090e+01 1.19308385e+01 + 1.18798810e+01 1.18291359e+01 1.17786023e+01 1.17282794e+01 1.16781664e+01 + 1.16282626e+01 1.15785671e+01 1.15290791e+01 1.14797980e+01 1.14307228e+01 + 1.13818529e+01 1.13331873e+01 1.12847254e+01 1.12364664e+01 1.11884095e+01 + 1.11405539e+01 1.10928988e+01 1.10454435e+01 1.09981872e+01 1.09511292e+01 + 1.09042686e+01 1.08576047e+01 1.08111368e+01 1.07648641e+01 1.07187858e+01 + 1.06729012e+01 1.06272095e+01 1.05817100e+01 1.05364019e+01 1.04912845e+01 + 1.04463570e+01 1.04016187e+01 1.03570688e+01 1.03127066e+01 1.02685315e+01 + 1.02245425e+01 1.01807390e+01 1.01371203e+01 1.00936857e+01 1.00504343e+01 + 1.00073655e+01 9.96447860e+00 9.92177282e+00 9.87924746e+00 9.83690179e+00 + 9.79473512e+00 9.75274671e+00 9.71093587e+00 9.66930188e+00 9.62784404e+00 + 9.58656164e+00 9.54545398e+00 9.50452035e+00 9.46376007e+00 9.42317244e+00 + 9.38275676e+00 9.34251233e+00 9.30243848e+00 9.26253451e+00 9.22279974e+00 + 9.18323348e+00 9.14383506e+00 9.10460379e+00 9.06553900e+00 9.02664002e+00 + 8.98790617e+00 8.94933678e+00 8.91093119e+00 8.87268873e+00 8.83460873e+00 + 8.79669054e+00 8.75893350e+00 8.72133695e+00 8.68390023e+00 8.64662269e+00 + 8.60950368e+00 8.57254256e+00 8.53573868e+00 8.49909140e+00 8.46260006e+00 + 8.42626405e+00 8.39008271e+00 8.35405541e+00 8.31818152e+00 8.28246041e+00 + 8.24689146e+00 8.21147403e+00 8.17620750e+00 8.14109126e+00 8.10612467e+00 + 8.07130713e+00 8.03663801e+00 8.00211672e+00 7.96774262e+00 7.93351513e+00 + 7.89943362e+00 7.86549750e+00 7.83170617e+00 7.79805902e+00 7.76455546e+00 + 7.73119489e+00 7.69797671e+00 7.66490035e+00 7.63196520e+00 7.59917068e+00 + 7.56651621e+00 7.53400121e+00 7.50162509e+00 7.46938727e+00 7.43728719e+00 + 7.40532426e+00 7.37349792e+00 7.34180759e+00 7.31025271e+00 7.27883270e+00 + 7.24754702e+00 7.21639510e+00 7.18537637e+00 7.15449029e+00 7.12373629e+00 + 7.09311383e+00 7.06262235e+00 7.03226130e+00 7.00203015e+00 6.97192833e+00 + 6.94195532e+00 6.91211058e+00 6.88239355e+00 6.85280371e+00 6.82334053e+00 + 6.79400347e+00 6.76479200e+00 6.73570560e+00 6.70674373e+00 6.67790588e+00 + 6.64919152e+00 6.62060013e+00 6.59213120e+00 6.56378421e+00 6.53555865e+00 + 6.50745400e+00 6.47946976e+00 6.45160541e+00 6.42386046e+00 6.39623439e+00 + 6.36872671e+00 6.34133692e+00 6.31406452e+00 6.28690901e+00 6.25986990e+00 + 6.23294670e+00 6.20613892e+00 6.17944607e+00 6.15286766e+00 6.12640322e+00 + 6.10005225e+00 6.07381428e+00 6.04768883e+00 6.02167542e+00 5.99577358e+00 + 5.96998284e+00 5.94430272e+00 5.91873277e+00 5.89327250e+00 5.86792145e+00 + 5.84267917e+00 5.81754519e+00 5.79251905e+00 5.76760030e+00 5.74278847e+00 + 5.71808312e+00 5.69348379e+00 5.66899003e+00 5.64460139e+00 5.62031743e+00 + 5.59613771e+00 5.57206177e+00 5.54808918e+00 5.52421950e+00 5.50045229e+00 + 5.47678712e+00 5.45322355e+00 5.42976115e+00 5.40639949e+00 5.38313814e+00 + 5.35997667e+00 5.33691466e+00 5.31395168e+00 5.29108732e+00 5.26832115e+00 + 5.24565275e+00 5.22308172e+00 5.20060762e+00 5.17823006e+00 5.15594861e+00 + 5.13376288e+00 5.11167245e+00 5.08967691e+00 5.06777586e+00 5.04596890e+00 + 5.02425562e+00 5.00263563e+00 4.98110853e+00 4.95967392e+00 4.93833141e+00 + 4.91708060e+00 4.89592111e+00 4.87485253e+00 4.85387449e+00 4.83298660e+00 + 4.81218848e+00 4.79147973e+00 4.77085998e+00 4.75032884e+00 4.72988595e+00 + 4.70953091e+00 4.68926337e+00 4.66908293e+00 4.64898924e+00 4.62898191e+00 + 4.60906059e+00 4.58922490e+00 4.56947447e+00 4.54980894e+00 4.53022796e+00 + 4.51073115e+00 4.49131815e+00 4.47198862e+00 4.45274218e+00 4.43357849e+00 + 4.41449719e+00 4.39549793e+00 4.37658036e+00 4.35774412e+00 4.33898888e+00 + 4.32031427e+00 4.30171997e+00 4.28320562e+00 4.26477088e+00 4.24641541e+00 + 4.22813887e+00 4.20994092e+00 4.19182123e+00 4.17377947e+00 4.15581528e+00 + 4.13792836e+00 4.12011835e+00 4.10238495e+00 4.08472780e+00 4.06714660e+00 + 4.04964101e+00 4.03221071e+00 4.01485537e+00 3.99757469e+00 3.98036832e+00 + 3.96323597e+00 3.94617730e+00 3.92919201e+00 3.91227977e+00 3.89544028e+00 + 3.87867323e+00 3.86197830e+00 3.84535518e+00 3.82880356e+00 3.81232315e+00 + 3.79591363e+00 3.77957470e+00 3.76330605e+00 3.74710739e+00 3.73097842e+00 + 3.71491883e+00 3.69892833e+00 3.68300662e+00 3.66715340e+00 3.65136839e+00 + 3.63565129e+00 3.62000181e+00 3.60441965e+00 3.58890454e+00 3.57345617e+00 + 3.55807427e+00 3.54275855e+00 3.52750872e+00 3.51232451e+00 3.49720562e+00 + 3.48215179e+00 3.46716273e+00 3.45223816e+00 3.43737780e+00 3.42258139e+00 + 3.40784864e+00 3.39317928e+00 3.37857305e+00 3.36402966e+00 3.34954885e+00 + 3.33513035e+00 3.32077389e+00 3.30647921e+00 3.29224604e+00 3.27807411e+00 + 3.26396317e+00 3.24991295e+00 3.23592318e+00 3.22199362e+00 3.20812400e+00 + 3.19431407e+00 3.18056356e+00 3.16687223e+00 3.15323981e+00 3.13966606e+00 + 3.12615072e+00 3.11269354e+00 3.09929428e+00 3.08595268e+00 3.07266849e+00 + 3.05944147e+00 3.04627137e+00 3.03315796e+00 3.02010097e+00 3.00710018e+00 + 2.99415534e+00 2.98126621e+00 2.96843255e+00 2.95565412e+00 2.94293069e+00 + 2.93026201e+00 2.91764786e+00 2.90508800e+00 2.89258219e+00 2.88013020e+00 + 2.86773181e+00 2.85538677e+00 2.84309487e+00 2.83085587e+00 2.81866954e+00 + 2.80653567e+00 2.79445401e+00 2.78242436e+00 2.77044648e+00 2.75852016e+00 + 2.74664516e+00 2.73482128e+00 2.72304828e+00 2.71132596e+00 2.69965409e+00 + 2.68803246e+00 2.67646085e+00 2.66493904e+00 2.65346683e+00 2.64204399e+00 + 2.63067032e+00 2.61934561e+00 2.60806964e+00 2.59684220e+00 2.58566308e+00 + 2.57453209e+00 2.56344901e+00 2.55241362e+00 2.54142574e+00 2.53048516e+00 + 2.51959166e+00 2.50874506e+00 2.49794514e+00 2.48719171e+00 2.47648456e+00 + 2.46582351e+00 2.45520834e+00 2.44463886e+00 2.43411488e+00 2.42363620e+00 + 2.41320262e+00 2.40281395e+00 2.39247000e+00 2.38217057e+00 2.37191548e+00 + 2.36170453e+00 2.35153754e+00 2.34141430e+00 2.33133465e+00 2.32129838e+00 + 2.31130531e+00 2.30135526e+00 2.29144803e+00 2.28158346e+00 2.27176134e+00 + 2.26198151e+00 2.25224377e+00 2.24254795e+00 2.23289387e+00 2.22328134e+00 + 2.21371020e+00 2.20418025e+00 2.19469132e+00 2.18524324e+00 2.17583583e+00 + 2.16646892e+00 2.15714233e+00 2.14785588e+00 2.13860941e+00 2.12940274e+00 + 2.12023571e+00 2.11110813e+00 2.10201985e+00 2.09297069e+00 2.08396048e+00 + 2.07498906e+00 2.06605626e+00 2.05716191e+00 2.04830585e+00 2.03948791e+00 + 2.03070793e+00 2.02196575e+00 2.01326120e+00 2.00459412e+00 1.99596435e+00 + 1.98737173e+00 1.97881609e+00 1.97029729e+00 1.96181516e+00 1.95336954e+00 + 1.94496028e+00 1.93658722e+00 1.92825021e+00 1.91994908e+00 1.91168369e+00 + 1.90345387e+00 1.89525949e+00 1.88710038e+00 1.87897640e+00 1.87088738e+00 + 1.86283319e+00 1.85481367e+00 1.84682867e+00 1.83887805e+00 1.83096166e+00 + 1.82307934e+00 1.81523095e+00 1.80741635e+00 1.79963539e+00 1.79188793e+00 + 1.78417382e+00 1.77649292e+00 1.76884508e+00 1.76123016e+00 1.75364803e+00 + 1.74609854e+00 1.73858154e+00 1.73109691e+00 1.72364450e+00 1.71622416e+00 + 1.70883578e+00 1.70147920e+00 1.69415428e+00 1.68686090e+00 1.67959892e+00 + 1.67236820e+00 1.66516861e+00 1.65800001e+00 1.65086227e+00 1.64375526e+00 + 1.63667885e+00 1.62963289e+00 1.62261727e+00 1.61563185e+00 1.60867651e+00 + 1.60175110e+00 1.59485551e+00 1.58798960e+00 1.58115326e+00 1.57434634e+00 + 1.56756872e+00 1.56082028e+00 1.55410090e+00 1.54741044e+00 1.54074878e+00 + 1.53411580e+00 1.52751137e+00 1.52093538e+00 1.51438770e+00 1.50786820e+00 + 1.50137677e+00 1.49491329e+00 1.48847763e+00 1.48206967e+00 1.47568930e+00 + 1.46933640e+00 1.46301085e+00 1.45671253e+00 1.45044132e+00 1.44419711e+00 + 1.43797979e+00 1.43178922e+00 1.42562531e+00 1.41948793e+00 1.41337698e+00 + 1.40729233e+00 1.40123388e+00 1.39520150e+00 1.38919510e+00 1.38321456e+00 + 1.37725976e+00 1.37133059e+00 1.36542696e+00 1.35954873e+00 1.35369581e+00 + 1.34786809e+00 1.34206546e+00 1.33628781e+00 1.33053503e+00 1.32480701e+00 + 1.31910366e+00 1.31342486e+00 1.30777050e+00 1.30214049e+00 1.29653472e+00 + 1.29095307e+00 1.28539546e+00 1.27986177e+00 1.27435191e+00 1.26886576e+00 + 1.26340323e+00 1.25796422e+00 1.25254863e+00 1.24715635e+00 1.24178728e+00 + 1.23644132e+00 1.23111838e+00 1.22581836e+00 1.22054115e+00 1.21528666e+00 + 1.21005479e+00 1.20484545e+00 1.19965853e+00 1.19449394e+00 1.18935159e+00 + 1.18423137e+00 1.17913319e+00 1.17405697e+00 1.16900259e+00 1.16396998e+00 + 1.15895903e+00 1.15396965e+00 1.14900176e+00 1.14405525e+00 1.13913003e+00 + 1.13422602e+00 1.12934312e+00 1.12448124e+00 1.11964029e+00 1.11482018e+00 + 1.11002083e+00 1.10524213e+00 1.10048401e+00 1.09574637e+00 1.09102912e+00 + 1.08633219e+00 1.08165547e+00 1.07699889e+00 1.07236235e+00 1.06774578e+00 + 1.06314908e+00 1.05857217e+00 1.05401496e+00 1.04947737e+00 1.04495932e+00 + 1.04046071e+00 1.03598147e+00 1.03152152e+00 1.02708077e+00 1.02265913e+00 + 1.01825653e+00 1.01387288e+00 1.00950811e+00 1.00516212e+00 1.00083485e+00 + 9.96526200e-01 9.92236102e-01 9.87964474e-01 9.83711235e-01 9.79476307e-01 + 9.75259610e-01 9.71061066e-01 9.66880597e-01 9.62718125e-01 9.58573573e-01 + 9.54446863e-01 9.50337919e-01 9.46246665e-01 9.42173023e-01 9.38116918e-01 + 9.34078275e-01 9.30057019e-01 9.26053075e-01 9.22066367e-01 9.18096823e-01 + 9.14144367e-01 9.10208927e-01 9.06290430e-01 9.02388801e-01 8.98503970e-01 + 8.94635863e-01 8.90784408e-01 8.86949534e-01 8.83131169e-01 8.79329242e-01 + 8.75543683e-01 8.71774421e-01 8.68021386e-01 8.64284508e-01 8.60563717e-01 + 8.56858944e-01 8.53170121e-01 8.49497178e-01 8.45840048e-01 8.42198661e-01 + 8.38572951e-01 8.34962850e-01 8.31368290e-01 8.27789206e-01 8.24225529e-01 + 8.20677194e-01 8.17144135e-01 8.13626286e-01 8.10123581e-01 8.06635956e-01 + 8.03163345e-01 7.99705684e-01 7.96262909e-01 7.92834954e-01 7.89421757e-01 + 7.86023255e-01 7.82639383e-01 7.79270078e-01 7.75915279e-01 7.72574922e-01 + 7.69248946e-01 7.65937288e-01 7.62639887e-01 7.59356682e-01 7.56087611e-01 + 7.52832613e-01 7.49591629e-01 7.46364597e-01 7.43151457e-01 7.39952150e-01 + 7.36766617e-01 7.33594797e-01 7.30436632e-01 7.27292064e-01 7.24161032e-01 + 7.21043481e-01 7.17939350e-01 7.14848583e-01 7.11771121e-01 7.08706909e-01 + 7.05655887e-01 7.02618001e-01 6.99593193e-01 6.96581407e-01 6.93582587e-01 + 6.90596677e-01 6.87623621e-01 6.84663365e-01 6.81715852e-01 6.78781029e-01 + 6.75858841e-01 6.72949232e-01 6.70052150e-01 6.67167540e-01 6.64295348e-01 + 6.61435521e-01 6.58588006e-01 6.55752749e-01 6.52929699e-01 6.50118801e-01 + 6.47320005e-01 6.44533258e-01 6.41758508e-01 6.38995703e-01 6.36238507e-01 + 6.33458395e-01 6.30652264e-01 6.27820565e-01 6.24963747e-01 6.22082260e-01 + 6.19176555e-01 6.16247082e-01 6.13294291e-01 6.10318634e-01 6.07320561e-01 + 6.04300524e-01 6.01258971e-01 5.98196355e-01 5.95113124e-01 5.92009729e-01 + 5.88886619e-01 5.85744243e-01 5.82583049e-01 5.79403486e-01 5.76206000e-01 + 5.72991037e-01 5.69759044e-01 5.66510466e-01 5.63245747e-01 5.59965329e-01 + 5.56669655e-01 5.53359166e-01 5.50034303e-01 5.46695503e-01 5.43343205e-01 + 5.39977845e-01 5.36599858e-01 5.33209679e-01 5.29807738e-01 5.26394469e-01 + 5.22970298e-01 5.19535655e-01 5.16090966e-01 5.12636655e-01 5.09173146e-01 + 5.05700858e-01 5.02220212e-01 4.98731626e-01 4.95235513e-01 4.91732289e-01 + 4.88222365e-01 4.84706151e-01 4.81184053e-01 4.77656479e-01 4.74123830e-01 + 4.70586509e-01 4.67044914e-01 4.63499441e-01 4.59950486e-01 4.56398440e-01 + 4.52843693e-01 4.49286632e-01 4.45727643e-01 4.42167106e-01 4.38605403e-01 + 4.35042911e-01 4.31480003e-01 4.27917053e-01 4.24354430e-01 4.20792500e-01 + 4.17231628e-01 4.13672175e-01 4.10114499e-01 4.06558956e-01 4.03005900e-01 + 3.99455680e-01 3.95908643e-01 3.92365134e-01 3.88825495e-01 3.85290063e-01 + 3.81759174e-01 3.78233160e-01 3.74712352e-01 3.71197075e-01 3.67687654e-01 + 3.64184407e-01 3.60687652e-01 3.57197704e-01 3.53714873e-01 3.50239466e-01 + 3.46771790e-01 3.43312144e-01 3.39860827e-01 3.36418134e-01 3.32984356e-01 + 3.29559782e-01 3.26144697e-01 3.22739384e-01 3.19344119e-01 3.15959180e-01 + 3.12584837e-01 3.09221359e-01 3.05869011e-01 3.02528056e-01 2.99198751e-01 + 2.95881353e-01 2.92576112e-01 2.89283277e-01 2.86003093e-01 2.82735801e-01 + 2.79481640e-01 2.76240845e-01 2.73013646e-01 2.69800271e-01 2.66600946e-01 + 2.63415890e-01 2.60245322e-01 2.57089455e-01 2.53948501e-01 2.50822666e-01 + 2.47712155e-01 2.44617167e-01 2.41537899e-01 2.38474546e-01 2.35427297e-01 + 2.32396338e-01 2.29381852e-01 2.26384020e-01 2.23403018e-01 2.20439018e-01 + 2.17492189e-01 2.14562698e-01 2.11650708e-01 2.08756376e-01 2.05879860e-01 + 2.03021310e-01 2.00180877e-01 1.97358705e-01 1.94554938e-01 1.91769712e-01 + 1.89003164e-01 1.86255427e-01 1.83526627e-01 1.80816892e-01 1.78126342e-01 + 1.75455096e-01 1.72803270e-01 1.70170976e-01 1.67558322e-01 1.64965415e-01 + 1.62392355e-01 1.59839242e-01 1.57306173e-01 1.54793238e-01 1.52300528e-01 + 1.49828128e-01 1.47376122e-01 1.44944589e-01 1.42533605e-01 1.40143244e-01 + 1.37773576e-01 1.35424669e-01 1.33096586e-01 1.30789388e-01 1.28503133e-01 + 1.26237876e-01 1.23993669e-01 1.21770561e-01 1.19568597e-01 1.17387819e-01 + 1.15228269e-01 1.13089983e-01 1.10972994e-01 1.08877334e-01 1.06803032e-01 + 1.04750111e-01 1.02718596e-01 1.00708504e-01 9.87198546e-02 9.67526601e-02 + 9.48069321e-02 9.28826793e-02 9.09799074e-02 8.90986195e-02 8.72388160e-02 + 8.54004947e-02 8.35836507e-02 8.17882765e-02 8.00143621e-02 7.82618946e-02 + 7.65308589e-02 7.48212373e-02 7.31330096e-02 7.14661528e-02 6.98206420e-02 + 6.81964494e-02 6.65935450e-02 6.50118964e-02 6.34514687e-02 6.19122249e-02 + 6.03941255e-02 5.88971287e-02 5.74211906e-02 5.59662647e-02 5.45323028e-02 + 5.31192541e-02 5.17270657e-02 5.03556826e-02 4.90050478e-02 4.76751021e-02 + 4.63657840e-02 4.50770304e-02 4.38087758e-02 4.25609529e-02 4.13334924e-02 + 4.01263230e-02 3.89393716e-02 3.77725629e-02 3.66258202e-02 3.54990645e-02 + 3.43922153e-02 3.33051902e-02 3.22379050e-02 3.11902738e-02 3.01622089e-02 + 2.91536210e-02 2.81644191e-02 2.71945107e-02 2.62438014e-02 2.53121954e-02 + 2.43995955e-02 2.35059025e-02 2.26310161e-02 2.17748345e-02 2.09372541e-02 + 2.01181702e-02 1.93174766e-02 1.85350657e-02 1.77708286e-02 1.70246549e-02 + 1.62964331e-02 1.55860503e-02 1.48933924e-02 1.42183441e-02 1.35607888e-02 + 1.29206088e-02 1.22976853e-02 1.16918981e-02 1.11031263e-02 1.05312477e-02 + 9.97613897e-03 9.43767596e-03 8.91573339e-03 8.41018504e-03 7.92090374e-03 + 7.44776140e-03 6.99062900e-03 6.54937668e-03 6.12387372e-03 5.71398855e-03 + 5.31958883e-03 4.94054141e-03 4.57671242e-03 4.22796722e-03 3.89417050e-03 + 3.57518626e-03 3.27087781e-03 2.98110787e-03 2.70573852e-03 2.44463127e-03 + 2.19764704e-03 1.96464623e-03 1.74548872e-03 1.54003390e-03 1.34814065e-03 + 1.16966746e-03 1.00447234e-03 8.52412931e-04 7.13346467e-04 5.87129835e-04 + 4.73619582e-04 3.72671936e-04 2.84142832e-04 2.07887934e-04 1.43762651e-04 + 9.16221633e-05 5.13214436e-05 2.27152755e-05 5.65827573e-06 0.00000000e+00 + 3.71505131e+05 2.74649258e+05 1.35893225e+05 8.96579686e+04 6.65526070e+04 + 5.26989696e+04 4.34710050e+04 3.68861241e+04 3.19530360e+04 2.81210268e+04 + 2.50596707e+04 2.25586996e+04 2.04779367e+04 1.87203386e+04 1.72165903e+04 + 1.59158625e+04 1.47800346e+04 1.37799571e+04 1.28929591e+04 1.21011439e+04 + 1.13901951e+04 1.07485244e+04 1.01666510e+04 9.63674408e+03 9.15227864e+03 + 8.70777443e+03 8.29859499e+03 7.92079138e+03 7.57097941e+03 7.24624224e+03 + 6.94405245e+03 6.66220928e+03 6.39878750e+03 6.15209569e+03 5.92064187e+03 + 5.70310492e+03 5.49831093e+03 5.30521323e+03 5.12287567e+03 4.95045842e+03 + 4.78720594e+03 4.63243671e+03 4.48553435e+03 4.34594011e+03 4.21314626e+03 + 4.08669044e+03 3.96615071e+03 3.85114128e+03 3.74130867e+03 3.63632847e+03 + 3.53590240e+03 3.43975576e+03 3.34763513e+03 3.25930639e+03 3.17455290e+03 + 3.09317393e+03 3.01498322e+03 2.93980772e+03 2.86748644e+03 2.79786941e+03 + 2.73081680e+03 2.66619804e+03 2.60389110e+03 2.54378179e+03 2.48576316e+03 + 2.42973494e+03 2.37560302e+03 2.32327899e+03 2.27267973e+03 2.22372701e+03 + 2.17634716e+03 2.13047071e+03 2.08603215e+03 2.04296960e+03 2.00122459e+03 + 1.96074185e+03 1.92146906e+03 1.88335668e+03 1.84635776e+03 1.81042780e+03 + 1.77552455e+03 1.74160791e+03 1.70863977e+03 1.67658393e+03 1.64540592e+03 + 1.61507295e+03 1.58555380e+03 1.55681872e+03 1.52883936e+03 1.50158865e+03 + 1.47504079e+03 1.44917112e+03 1.42395612e+03 1.39937327e+03 1.37540106e+03 + 1.35201892e+03 1.32920716e+03 1.30694691e+03 1.28522013e+03 1.26400950e+03 + 1.24329844e+03 1.22307103e+03 1.20331203e+03 1.18400677e+03 1.16514119e+03 + 1.14670178e+03 1.12867557e+03 1.11105008e+03 1.09381330e+03 1.07695372e+03 + 1.06046021e+03 1.04432210e+03 1.02852909e+03 1.01307129e+03 9.97939129e+02 + 9.83123423e+02 9.68615298e+02 9.54406200e+02 9.40487878e+02 9.26852371e+02 + 9.13491996e+02 9.00399335e+02 8.87567225e+02 8.74988744e+02 8.62657207e+02 + 8.50566152e+02 8.38709332e+02 8.27080706e+02 8.15674431e+02 8.04484854e+02 + 7.93506505e+02 7.82734090e+02 7.72162481e+02 7.61786715e+02 7.51601983e+02 + 7.41603627e+02 7.31787132e+02 7.22148123e+02 7.12682357e+02 7.03385720e+02 + 6.94254225e+02 6.85283999e+02 6.76471287e+02 6.67812446e+02 6.59303936e+02 + 6.50942324e+02 6.42724275e+02 6.34646548e+02 6.26705997e+02 6.18899565e+02 + 6.11224280e+02 6.03677253e+02 5.96255678e+02 5.88956824e+02 5.81778037e+02 + 5.74716734e+02 5.67770403e+02 5.60936600e+02 5.54212947e+02 5.47597127e+02 + 5.41086888e+02 5.34680034e+02 5.28374430e+02 5.22167994e+02 5.16058699e+02 + 5.10044569e+02 5.04123681e+02 4.98294159e+02 4.92554175e+02 4.86901947e+02 + 4.81335739e+02 4.75853855e+02 4.70454645e+02 4.65136496e+02 4.59897836e+02 + 4.54737133e+02 4.49652890e+02 4.44643646e+02 4.39707976e+02 4.34844488e+02 + 4.30051824e+02 4.25328659e+02 4.20673696e+02 4.16085670e+02 4.11563347e+02 + 4.07105518e+02 4.02711005e+02 3.98378656e+02 3.94107344e+02 3.89895969e+02 + 3.85743454e+02 3.81648749e+02 3.77610825e+02 3.73628677e+02 3.69701321e+02 + 3.65827796e+02 3.62007162e+02 3.58238498e+02 3.54520905e+02 3.50853501e+02 + 3.47235425e+02 3.43665834e+02 3.40143902e+02 3.36668821e+02 3.33239801e+02 + 3.29856066e+02 3.26516860e+02 3.23221438e+02 3.19969076e+02 3.16759059e+02 + 3.13590692e+02 3.10463290e+02 3.07376184e+02 3.04328720e+02 3.01320253e+02 + 2.98350154e+02 2.95417807e+02 2.92522606e+02 2.89663958e+02 2.86841283e+02 + 2.84054011e+02 2.81301582e+02 2.78583450e+02 2.75899078e+02 2.73247937e+02 + 2.70629513e+02 2.68043298e+02 2.65488794e+02 2.62965516e+02 2.60472984e+02 + 2.58010728e+02 2.55578289e+02 2.53175214e+02 2.50801060e+02 2.48455392e+02 + 2.46137782e+02 2.43847811e+02 2.41585068e+02 2.39349147e+02 2.37139654e+02 + 2.34956196e+02 2.32798393e+02 2.30665869e+02 2.28558254e+02 2.26475186e+02 + 2.24416310e+02 2.22381275e+02 2.20369739e+02 2.18381363e+02 2.16415817e+02 + 2.14472775e+02 2.12551916e+02 2.10652927e+02 2.08775497e+02 2.06919325e+02 + 2.05084110e+02 2.03269560e+02 2.01475387e+02 1.99701306e+02 1.97947040e+02 + 1.96212314e+02 1.94496858e+02 1.92800409e+02 1.91122705e+02 1.89463490e+02 + 1.87822514e+02 1.86199527e+02 1.84594287e+02 1.83006553e+02 1.81436090e+02 + 1.79882667e+02 1.78346055e+02 1.76826030e+02 1.75322370e+02 1.73834860e+02 + 1.72363285e+02 1.70907435e+02 1.69467104e+02 1.68042086e+02 1.66632183e+02 + 1.65237197e+02 1.63856933e+02 1.62491201e+02 1.61139813e+02 1.59802583e+02 + 1.58479330e+02 1.57169873e+02 1.55874037e+02 1.54591647e+02 1.53322532e+02 + 1.52066524e+02 1.50823456e+02 1.49593165e+02 1.48375490e+02 1.47170273e+02 + 1.45977356e+02 1.44796588e+02 1.43627815e+02 1.42470889e+02 1.41325662e+02 + 1.40191991e+02 1.39069732e+02 1.37958744e+02 1.36858890e+02 1.35770033e+02 + 1.34692038e+02 1.33624774e+02 1.32568109e+02 1.31521915e+02 1.30486065e+02 + 1.29460434e+02 1.28444900e+02 1.27439341e+02 1.26443637e+02 1.25457671e+02 + 1.24481326e+02 1.23514488e+02 1.22557044e+02 1.21608883e+02 1.20669895e+02 + 1.19739973e+02 1.18819008e+02 1.17906897e+02 1.17003536e+02 1.16108822e+02 + 1.15222655e+02 1.14344935e+02 1.13475565e+02 1.12614448e+02 1.11761488e+02 + 1.10916591e+02 1.10079666e+02 1.09250620e+02 1.08429363e+02 1.07615807e+02 + 1.06809864e+02 1.06011446e+02 1.05220470e+02 1.04436850e+02 1.03660504e+02 + 1.02891350e+02 1.02129306e+02 1.01374294e+02 1.00626234e+02 9.98850490e+01 + 9.91506621e+01 9.84229978e+01 9.77019815e+01 9.69875397e+01 9.62795998e+01 + 9.55780899e+01 9.48829395e+01 9.41940788e+01 9.35114387e+01 9.28349515e+01 + 9.21645498e+01 9.15001676e+01 9.08417394e+01 9.01892007e+01 8.95424878e+01 + 8.89015379e+01 8.82662888e+01 8.76366793e+01 8.70126489e+01 8.63941379e+01 + 8.57810873e+01 8.51734390e+01 8.45711354e+01 8.39741198e+01 8.33823362e+01 + 8.27957293e+01 8.22142444e+01 8.16378276e+01 8.10664257e+01 8.04999861e+01 + 7.99384568e+01 7.93817865e+01 7.88299247e+01 7.82828212e+01 7.77404266e+01 + 7.72026922e+01 7.66695698e+01 7.61410118e+01 7.56169711e+01 7.50974014e+01 + 7.45822568e+01 7.40714918e+01 7.35650619e+01 7.30629228e+01 7.25650308e+01 + 7.20713427e+01 7.15818160e+01 7.10964085e+01 7.06150787e+01 7.01377854e+01 + 6.96644881e+01 6.91951466e+01 6.87297212e+01 6.82681729e+01 6.78104629e+01 + 6.73565530e+01 6.69064053e+01 6.64599827e+01 6.60172481e+01 6.55781651e+01 + 6.51426977e+01 6.47108103e+01 6.42824677e+01 6.38576352e+01 6.34362783e+01 + 6.30183631e+01 6.26038561e+01 6.21927241e+01 6.17849342e+01 6.13804542e+01 + 6.09792519e+01 6.05812957e+01 6.01865543e+01 5.97949967e+01 5.94065925e+01 + 5.90213113e+01 5.86391234e+01 5.82599991e+01 5.78839092e+01 5.75108250e+01 + 5.71407179e+01 5.67735596e+01 5.64093223e+01 5.60479784e+01 5.56895007e+01 + 5.53338621e+01 5.49810362e+01 5.46309964e+01 5.42837169e+01 5.39391717e+01 + 5.35973355e+01 5.32581831e+01 5.29216896e+01 5.25878303e+01 5.22565810e+01 + 5.19279175e+01 5.16018161e+01 5.12782532e+01 5.09572056e+01 5.06386501e+01 + 5.03225641e+01 5.00089251e+01 4.96977108e+01 4.93888991e+01 4.90824683e+01 + 4.87783969e+01 4.84766635e+01 4.81772471e+01 4.78801269e+01 4.75852822e+01 + 4.72926927e+01 4.70023383e+01 4.67141989e+01 4.64282548e+01 4.61444866e+01 + 4.58628749e+01 4.55834007e+01 4.53060451e+01 4.50307894e+01 4.47576150e+01 + 4.44865039e+01 4.42174378e+01 4.39503989e+01 4.36853695e+01 4.34223320e+01 + 4.31612692e+01 4.29021640e+01 4.26449994e+01 4.23897586e+01 4.21364250e+01 + 4.18849823e+01 4.16354141e+01 4.13877045e+01 4.11418375e+01 4.08977974e+01 + 4.06555686e+01 4.04151358e+01 4.01764837e+01 3.99395973e+01 3.97044616e+01 + 3.94710618e+01 3.92393834e+01 3.90094120e+01 3.87811332e+01 3.85545328e+01 + 3.83295969e+01 3.81063117e+01 3.78846634e+01 3.76646384e+01 3.74462233e+01 + 3.72294049e+01 3.70141699e+01 3.68005054e+01 3.65883986e+01 3.63778365e+01 + 3.61688067e+01 3.59612967e+01 3.57552940e+01 3.55507865e+01 3.53477621e+01 + 3.51462088e+01 3.49461146e+01 3.47474680e+01 3.45502573e+01 3.43544709e+01 + 3.41600975e+01 3.39671259e+01 3.37755448e+01 3.35853433e+01 3.33965104e+01 + 3.32090353e+01 3.30229073e+01 3.28381158e+01 3.26546502e+01 3.24725003e+01 + 3.22916557e+01 3.21121062e+01 3.19338418e+01 3.17568524e+01 3.15811282e+01 + 3.14066595e+01 3.12334364e+01 3.10614495e+01 3.08906892e+01 3.07211461e+01 + 3.05528109e+01 3.03856744e+01 3.02197274e+01 3.00549609e+01 2.98913659e+01 + 2.97289337e+01 2.95676552e+01 2.94075220e+01 2.92485253e+01 2.90906567e+01 + 2.89339075e+01 2.87782696e+01 2.86237345e+01 2.84702941e+01 2.83179402e+01 + 2.81666647e+01 2.80164597e+01 2.78673172e+01 2.77192294e+01 2.75721884e+01 + 2.74261867e+01 2.72812164e+01 2.71372702e+01 2.69943404e+01 2.68524196e+01 + 2.67115005e+01 2.65715758e+01 2.64326381e+01 2.62946804e+01 2.61576954e+01 + 2.60216762e+01 2.58866157e+01 2.57525070e+01 2.56193432e+01 2.54871175e+01 + 2.53558231e+01 2.52254532e+01 2.50960012e+01 2.49674605e+01 2.48398246e+01 + 2.47130868e+01 2.45872407e+01 2.44622800e+01 2.43381982e+01 2.42149890e+01 + 2.40926461e+01 2.39711634e+01 2.38505345e+01 2.37307534e+01 2.36118139e+01 + 2.34937099e+01 2.33764355e+01 2.32599847e+01 2.31443514e+01 2.30295297e+01 + 2.29155138e+01 2.28022979e+01 2.26898760e+01 2.25782423e+01 2.24673913e+01 + 2.23573170e+01 2.22480138e+01 2.21394760e+01 2.20316979e+01 2.19246741e+01 + 2.18183987e+01 2.17128663e+01 2.16080713e+01 2.15040081e+01 2.14006713e+01 + 2.12980553e+01 2.11961547e+01 2.10949639e+01 2.09944776e+01 2.08946903e+01 + 2.07955965e+01 2.06971909e+01 2.05994680e+01 2.05024225e+01 2.04060489e+01 + 2.03103419e+01 2.02152961e+01 2.01209062e+01 2.00271667e+01 1.99340723e+01 + 1.98416176e+01 1.97497974e+01 1.96586061e+01 1.95680384e+01 1.94780891e+01 + 1.93887526e+01 1.93000236e+01 1.92118968e+01 1.91243667e+01 1.90374279e+01 + 1.89510751e+01 1.88653027e+01 1.87801054e+01 1.86954777e+01 1.86114142e+01 + 1.85279093e+01 1.84449576e+01 1.83625536e+01 1.82806917e+01 1.81993664e+01 + 1.81185722e+01 1.80383034e+01 1.79585544e+01 1.78793197e+01 1.78005935e+01 + 1.77223703e+01 1.76446442e+01 1.75674096e+01 1.74906608e+01 1.74143919e+01 + 1.73385972e+01 1.72632708e+01 1.71884069e+01 1.71139997e+01 1.70400432e+01 + 1.69665314e+01 1.68934585e+01 1.68208185e+01 1.67486053e+01 1.66768129e+01 + 1.66054352e+01 1.65344662e+01 1.64638996e+01 1.63937295e+01 1.63239495e+01 + 1.62545536e+01 1.61855354e+01 1.61168888e+01 1.60486074e+01 1.59806849e+01 + 1.59131152e+01 1.58458917e+01 1.57790082e+01 1.57124583e+01 1.56462356e+01 + 1.55803337e+01 1.55147462e+01 1.54494667e+01 1.53844886e+01 1.53198057e+01 + 1.52554114e+01 1.51912992e+01 1.51274628e+01 1.50638956e+01 1.50005912e+01 + 1.49375432e+01 1.48747451e+01 1.48121904e+01 1.47498729e+01 1.46877860e+01 + 1.46259234e+01 1.45642788e+01 1.45028458e+01 1.44416180e+01 1.43805894e+01 + 1.43197535e+01 1.42591043e+01 1.41986356e+01 1.41383412e+01 1.40782152e+01 + 1.40182515e+01 1.39584442e+01 1.38987874e+01 1.38392754e+01 1.37799023e+01 + 1.37206626e+01 1.36615506e+01 1.36025608e+01 1.35436879e+01 1.34849265e+01 + 1.34262714e+01 1.33677175e+01 1.33092596e+01 1.32508930e+01 1.31926128e+01 + 1.31344143e+01 1.30762930e+01 1.30182443e+01 1.29602640e+01 1.29023479e+01 + 1.28444919e+01 1.27866920e+01 1.27289446e+01 1.26712459e+01 1.26135925e+01 + 1.25559810e+01 1.24984082e+01 1.24408710e+01 1.23833667e+01 1.23258924e+01 + 1.22684456e+01 1.22110239e+01 1.21536251e+01 1.20962470e+01 1.20388879e+01 + 1.19815458e+01 1.19242194e+01 1.18669071e+01 1.18096078e+01 1.17523204e+01 + 1.16950440e+01 1.16377779e+01 1.15805216e+01 1.15232746e+01 1.14660369e+01 + 1.14088083e+01 1.13515889e+01 1.12943791e+01 1.12371794e+01 1.11799903e+01 + 1.11228126e+01 1.10656472e+01 1.10084953e+01 1.09513580e+01 1.08942368e+01 + 1.08371332e+01 1.07800489e+01 1.07229856e+01 1.06659454e+01 1.06089302e+01 + 1.05519423e+01 1.04949840e+01 1.04380578e+01 1.03811662e+01 1.03243118e+01 + 1.02674975e+01 1.02107262e+01 1.01540007e+01 1.00973241e+01 1.00406996e+01 + 9.98413044e+00 9.92761985e+00 9.87117124e+00 9.81478802e+00 9.75847371e+00 + 9.70223184e+00 9.64606603e+00 9.58997992e+00 9.53397719e+00 9.47806158e+00 + 9.42223684e+00 9.36650675e+00 9.31087511e+00 9.25534574e+00 9.19992248e+00 + 9.14460916e+00 9.08940962e+00 9.03432771e+00 8.97936725e+00 8.92453207e+00 + 8.86982599e+00 8.81525279e+00 8.76081624e+00 8.70652009e+00 8.65236805e+00 + 8.59836381e+00 8.54451101e+00 8.49081326e+00 8.43727413e+00 8.38389714e+00 + 8.33068575e+00 8.27764339e+00 8.22477343e+00 8.17207918e+00 8.11956390e+00 + 8.06723078e+00 8.01508296e+00 7.96312350e+00 7.91135542e+00 7.85978164e+00 + 7.80840505e+00 7.75722843e+00 7.70625452e+00 7.65548598e+00 7.60492538e+00 + 7.55457525e+00 7.50443802e+00 7.45451604e+00 7.40481162e+00 7.35532695e+00 + 7.30606417e+00 7.25702534e+00 7.20821245e+00 7.15962739e+00 7.11127200e+00 + 7.06314804e+00 7.01525718e+00 6.96760102e+00 6.92018109e+00 6.87299885e+00 + 6.82605568e+00 6.77935288e+00 6.73289168e+00 6.68667325e+00 6.64069867e+00 + 6.59496898e+00 6.54948512e+00 6.50424797e+00 6.45925834e+00 6.41451700e+00 + 6.37002461e+00 6.32578181e+00 6.28178913e+00 6.23804709e+00 6.19455611e+00 + 6.15131656e+00 6.10832876e+00 6.06559296e+00 6.02310937e+00 5.98087813e+00 + 5.93889933e+00 5.89717300e+00 5.85569914e+00 5.81447769e+00 5.77350853e+00 + 5.73279150e+00 5.69232639e+00 5.65211296e+00 5.61215092e+00 5.57243991e+00 + 5.53297956e+00 5.49376946e+00 5.45480915e+00 5.41609812e+00 5.37763584e+00 + 5.33942175e+00 5.30145525e+00 5.26373568e+00 5.22626240e+00 5.18903469e+00 + 5.15205182e+00 5.11531304e+00 5.07881756e+00 5.04256457e+00 5.00655322e+00 + 4.97078266e+00 4.93525199e+00 4.89996030e+00 4.86490667e+00 4.83009013e+00 + 4.79550971e+00 4.76116442e+00 4.72705324e+00 4.69317516e+00 4.65952911e+00 + 4.62611405e+00 4.59292889e+00 4.55997254e+00 4.52724390e+00 4.49474186e+00 + 4.46246527e+00 4.43041301e+00 4.39858391e+00 4.36697683e+00 4.33559058e+00 + 4.30442399e+00 4.27347587e+00 4.24274502e+00 4.21223025e+00 4.18193034e+00 + 4.15184408e+00 4.12197025e+00 4.09230762e+00 4.06285497e+00 4.03361105e+00 + 4.00457465e+00 3.97574451e+00 3.94711939e+00 3.91869805e+00 3.89047924e+00 + 3.86246171e+00 3.83464422e+00 3.80702552e+00 3.77960436e+00 3.75237948e+00 + 3.72534965e+00 3.69851361e+00 3.67187011e+00 3.64541790e+00 3.61915576e+00 + 3.59308242e+00 3.56719665e+00 3.54149722e+00 3.51598288e+00 3.49065241e+00 + 3.46550458e+00 3.44053815e+00 3.41575191e+00 3.39114464e+00 3.36671512e+00 + 3.34246213e+00 3.31838448e+00 3.29448096e+00 3.27075038e+00 3.24719152e+00 + 3.22380322e+00 3.20058428e+00 3.17753353e+00 3.15464979e+00 3.13193188e+00 + 3.10937866e+00 3.08698896e+00 3.06476163e+00 3.04269551e+00 3.02078948e+00 + 2.99904239e+00 2.97745312e+00 2.95602054e+00 2.93474353e+00 2.91362099e+00 + 2.89265181e+00 2.87183488e+00 2.85116912e+00 2.83065343e+00 2.81028675e+00 + 2.79006799e+00 2.76999609e+00 2.75006998e+00 2.73028861e+00 2.71065093e+00 + 2.69115591e+00 2.67180250e+00 2.65258967e+00 2.63351641e+00 2.61458169e+00 + 2.59578452e+00 2.57712388e+00 2.55859877e+00 2.54020822e+00 2.52195123e+00 + 2.50382683e+00 2.48583406e+00 2.46797193e+00 2.45023951e+00 2.43263583e+00 + 2.41515996e+00 2.39781095e+00 2.38058788e+00 2.36348981e+00 2.34651584e+00 + 2.32966505e+00 2.31293654e+00 2.29632940e+00 2.27984274e+00 2.26347568e+00 + 2.24722733e+00 2.23109683e+00 2.21508330e+00 2.19918589e+00 2.18340374e+00 + 2.16773599e+00 2.15218181e+00 2.13674036e+00 2.12141081e+00 2.10619234e+00 + 2.09108412e+00 2.07608534e+00 2.06119520e+00 2.04641290e+00 2.03173764e+00 + 2.01716864e+00 2.00270510e+00 1.98834625e+00 1.97409133e+00 1.95993956e+00 + 1.94589018e+00 1.93194245e+00 1.91809560e+00 1.90434891e+00 1.89070162e+00 + 1.87715301e+00 1.86370236e+00 1.85034893e+00 1.83709202e+00 1.82393091e+00 + 1.81086490e+00 1.79789329e+00 1.78501538e+00 1.77223049e+00 1.75953793e+00 + 1.74693701e+00 1.73442708e+00 1.72200745e+00 1.70967747e+00 1.69743647e+00 + 1.68528380e+00 1.67321882e+00 1.66124088e+00 1.64934933e+00 1.63754355e+00 + 1.62582290e+00 1.61418677e+00 1.60263452e+00 1.59116555e+00 1.57977925e+00 + 1.56847500e+00 1.55725221e+00 1.54611027e+00 1.53504861e+00 1.52406662e+00 + 1.51316373e+00 1.50233935e+00 1.49159292e+00 1.48092386e+00 1.47033160e+00 + 1.45981558e+00 1.44937525e+00 1.43901005e+00 1.42871943e+00 1.41850285e+00 + 1.40835976e+00 1.39828964e+00 1.38829194e+00 1.37836613e+00 1.36851170e+00 + 1.35872813e+00 1.34901488e+00 1.33937146e+00 1.32979735e+00 1.32029205e+00 + 1.31085505e+00 1.30148586e+00 1.29218399e+00 1.28294893e+00 1.27378022e+00 + 1.26467735e+00 1.25563986e+00 1.24666727e+00 1.23775911e+00 1.22891490e+00 + 1.22013419e+00 1.21141650e+00 1.20276139e+00 1.19416839e+00 1.18563706e+00 + 1.17716695e+00 1.16875761e+00 1.16040861e+00 1.15211950e+00 1.14388985e+00 + 1.13571922e+00 1.12760720e+00 1.11955335e+00 1.11155725e+00 1.10361848e+00 + 1.09573664e+00 1.08791130e+00 1.08014205e+00 1.07242850e+00 1.06477023e+00 + 1.05716685e+00 1.04961796e+00 1.04212316e+00 1.03468206e+00 1.02729427e+00 + 1.01995942e+00 1.01267711e+00 1.00544696e+00 9.98268607e-01 9.91141664e-01 + 9.84065763e-01 9.77040534e-01 9.70065612e-01 9.63140634e-01 9.56265238e-01 + 9.49439067e-01 9.42661765e-01 9.35932979e-01 9.29252359e-01 9.22619557e-01 + 9.16034229e-01 9.09496031e-01 9.03004625e-01 8.96559671e-01 8.90160836e-01 + 8.83807786e-01 8.77500192e-01 8.71237727e-01 8.65020063e-01 8.58846880e-01 + 8.52717856e-01 8.46632673e-01 8.40591016e-01 8.34592571e-01 8.28637027e-01 + 8.22724074e-01 8.16853407e-01 8.11024721e-01 8.05237713e-01 7.99492085e-01 + 7.93787537e-01 7.88123775e-01 7.82500506e-01 7.76917437e-01 7.71374280e-01 + 7.65870748e-01 7.60406556e-01 7.54981421e-01 7.49595063e-01 7.44247202e-01 + 7.38937563e-01 7.33665869e-01 7.28431850e-01 7.23235234e-01 7.18075752e-01 + 7.12953138e-01 7.07867127e-01 7.02817456e-01 6.97803864e-01 6.92826092e-01 + 6.87883884e-01 6.82976983e-01 6.78105137e-01 6.73268093e-01 6.68465603e-01 + 6.63697417e-01 6.58963291e-01 6.54262979e-01 6.49596240e-01 6.44962832e-01 + 6.40362516e-01 6.35795055e-01 6.31260213e-01 6.26757758e-01 6.22287455e-01 + 6.17849075e-01 6.13442390e-01 6.09067171e-01 6.04723193e-01 6.00410233e-01 + 5.96128068e-01 5.91876478e-01 5.87655243e-01 5.83464146e-01 5.79302972e-01 + 5.75171505e-01 5.71069533e-01 5.66996845e-01 5.62953230e-01 5.58938482e-01 + 5.54952393e-01 5.50994758e-01 5.47065373e-01 5.43164035e-01 5.39290546e-01 + 5.35444703e-01 5.31626311e-01 5.27835173e-01 5.24071092e-01 5.20333877e-01 + 5.16623334e-01 5.12939273e-01 5.09281504e-01 5.05649839e-01 5.02044091e-01 + 4.98464075e-01 4.94909607e-01 4.91380505e-01 4.87876585e-01 4.84397670e-01 + 4.80943579e-01 4.77514135e-01 4.74109162e-01 4.70728485e-01 4.67371930e-01 + 4.64039325e-01 4.60730498e-01 4.57445280e-01 4.54183502e-01 4.50944995e-01 + 4.47729594e-01 4.44537134e-01 4.41367451e-01 4.38220381e-01 4.35095763e-01 + 4.31993437e-01 4.28913243e-01 4.25855024e-01 4.22818621e-01 4.19803880e-01 + 4.16810646e-01 4.13838764e-01 4.10888082e-01 4.07958449e-01 4.05049714e-01 + 4.02161729e-01 3.99294344e-01 3.96447413e-01 3.93620789e-01 3.90814328e-01 + 3.88027885e-01 3.85261318e-01 3.82514484e-01 3.79787243e-01 3.77079454e-01 + 3.74390979e-01 3.71721680e-01 3.69071419e-01 3.66440061e-01 3.63827471e-01 + 3.61233515e-01 3.58658059e-01 3.56100972e-01 3.53562123e-01 3.51041381e-01 + 3.48538617e-01 3.46053702e-01 3.43586510e-01 3.41136913e-01 3.38704786e-01 + 3.36290004e-01 3.33892444e-01 3.31511982e-01 3.29148497e-01 3.26801867e-01 + 3.24471972e-01 3.22158693e-01 3.19861910e-01 3.17581506e-01 3.15317365e-01 + 3.13069370e-01 3.10837405e-01 3.08621358e-01 3.06421113e-01 3.04236558e-01 + 3.02067581e-01 2.99914071e-01 2.97775918e-01 2.95653012e-01 2.93545243e-01 + 2.91452505e-01 2.89374690e-01 2.87311691e-01 2.85263403e-01 2.83229721e-01 + 2.81210540e-01 2.79205757e-01 2.77215269e-01 2.75238974e-01 2.73276772e-01 + 2.71328561e-01 2.69394241e-01 2.67473714e-01 2.65566881e-01 2.63673644e-01 + 2.61793907e-01 2.59927573e-01 2.58074546e-01 2.56234732e-01 2.54408036e-01 + 2.52594364e-01 2.50793624e-01 2.49005724e-01 2.47230572e-01 2.45468077e-01 + 2.43718148e-01 2.41980696e-01 2.40255632e-01 2.38542868e-01 2.36842316e-01 + 2.35153889e-01 2.33477499e-01 2.31813063e-01 2.30160493e-01 2.28519706e-01 + 2.26890618e-01 2.25273144e-01 2.23667203e-01 2.22072711e-01 2.20489588e-01 + 2.18917752e-01 2.17357123e-01 2.15807620e-01 2.14269165e-01 2.12741679e-01 + 2.11225083e-01 2.09719299e-01 2.08224251e-01 2.06739862e-01 2.05266056e-01 + 2.03802758e-01 2.02349892e-01 2.00907384e-01 1.99475161e-01 1.98053148e-01 + 1.96641274e-01 1.95239466e-01 1.93847651e-01 1.92465759e-01 1.91093720e-01 + 1.89731462e-01 1.88378916e-01 1.87036013e-01 1.85702683e-01 1.84378860e-01 + 1.83064474e-01 1.81759459e-01 1.80463748e-01 1.79177274e-01 1.77899972e-01 + 1.76631776e-01 1.75372621e-01 1.74122443e-01 1.72881178e-01 1.71648762e-01 + 1.70425132e-01 1.69210225e-01 1.68003980e-01 1.66806334e-01 1.65617226e-01 + 1.64436595e-01 1.63264382e-01 1.62100525e-01 1.60944965e-01 1.59797644e-01 + 1.58658502e-01 1.57527480e-01 1.56404522e-01 1.55289570e-01 1.54182566e-01 + 1.53083453e-01 1.51992177e-01 1.50908680e-01 1.49832907e-01 1.48764803e-01 + 1.47704314e-01 1.46651386e-01 1.45605963e-01 1.44567993e-01 1.43537423e-01 + 1.42514199e-01 1.41498271e-01 1.40489584e-01 1.39488089e-01 1.38493732e-01 + 1.37506465e-01 1.36526236e-01 1.35552995e-01 1.34586691e-01 1.33627277e-01 + 1.32674702e-01 1.31728917e-01 1.30789875e-01 1.29857528e-01 1.28931827e-01 + 1.28012725e-01 1.27100175e-01 1.26194131e-01 1.25294545e-01 1.24401373e-01 + 1.23514568e-01 1.22634084e-01 1.21759878e-01 1.20891903e-01 1.20030116e-01 + 1.19174473e-01 1.18324929e-01 1.17481442e-01 1.16643967e-01 1.15812463e-01 + 1.14986886e-01 1.14167195e-01 1.13353347e-01 1.12545300e-01 1.11743014e-01 + 1.10946447e-01 1.10155559e-01 1.09370309e-01 1.08590657e-01 1.07816562e-01 + 1.07047986e-01 1.06284889e-01 1.05527232e-01 1.04774975e-01 1.04028082e-01 + 1.03286513e-01 1.02550230e-01 1.01819196e-01 1.01093373e-01 1.00372724e-01 + 9.96572130e-02 9.89468023e-02 9.82414559e-02 9.75411377e-02 9.68458118e-02 + 9.61554427e-02 9.54699950e-02 9.47894335e-02 9.41137236e-02 9.34428306e-02 + 9.27767201e-02 9.21153581e-02 9.14587107e-02 9.08067443e-02 9.01594255e-02 + 8.95167213e-02 8.88785986e-02 8.82450249e-02 8.76159677e-02 8.69913948e-02 + 8.63712742e-02 8.57555743e-02 8.51442634e-02 8.45373104e-02 8.39346840e-02 + 8.33363536e-02 8.27422884e-02 8.21524581e-02 8.15668325e-02 8.09853815e-02 + 8.04080755e-02 7.98348848e-02 7.92657803e-02 7.87007326e-02 7.81397129e-02 + 7.75826925e-02 7.70296429e-02 7.64805357e-02 7.59353429e-02 7.53940365e-02 + 7.48565889e-02 7.43229725e-02 7.37931601e-02 7.32671244e-02 7.27448387e-02 + 7.22262761e-02 7.17114101e-02 7.12002144e-02 7.06926628e-02 7.01887293e-02 + 6.96883881e-02 6.91916136e-02 6.86983804e-02 6.82086633e-02 6.77224371e-02 + 6.72396770e-02 6.67603584e-02 6.62844565e-02 6.58119472e-02 6.53428062e-02 + 6.48770095e-02 6.44145332e-02 6.39553537e-02 6.34994475e-02 6.30467913e-02 + 6.25973618e-02 6.21511361e-02 6.17080914e-02 6.12682049e-02 6.08314542e-02 + 6.03978168e-02 5.99672707e-02 5.95397938e-02 5.91153641e-02 5.86939600e-02 + 5.82755599e-02 5.78601423e-02 5.74476861e-02 5.70381701e-02 5.66315734e-02 + 5.62278751e-02 5.58270545e-02 5.54290913e-02 5.50339649e-02 5.46416552e-02 + 5.42521421e-02 5.38654056e-02 5.34814260e-02 5.31001837e-02 5.27216590e-02 + 5.23458326e-02 5.19726854e-02 5.16021981e-02 5.12343518e-02 5.08691278e-02 + 5.05065072e-02 5.01464716e-02 4.97890026e-02 4.94340817e-02 4.90816910e-02 + 4.87318122e-02 4.83844276e-02 4.80395193e-02 4.76970697e-02 4.73570612e-02 + 4.70194765e-02 4.66842983e-02 4.63515094e-02 4.60210928e-02 4.56930316e-02 + 4.53673090e-02 4.50439082e-02 4.47228129e-02 4.44040065e-02 4.40874727e-02 + 4.37731953e-02 4.34611583e-02 4.31513456e-02 4.28437414e-02 4.25383300e-02 + 4.22350957e-02 4.19340230e-02 4.16350965e-02 4.13383009e-02 4.10436211e-02 + 4.07510418e-02 4.04605482e-02 4.01721254e-02 3.98857586e-02 3.96014332e-02 + 3.93191346e-02 3.90388484e-02 3.87605602e-02 3.84842558e-02 3.82099210e-02 + 3.79375418e-02 3.76671043e-02 3.73985946e-02 3.71319989e-02 3.68673037e-02 + 3.66044954e-02 3.63435605e-02 3.60844856e-02 3.58272576e-02 3.55718633e-02 + 3.53182895e-02 3.50665233e-02 3.48165518e-02 3.45683623e-02 3.43219420e-02 + 3.40772783e-02 3.38343586e-02 3.35931707e-02 3.33537020e-02 3.31159404e-02 + 3.28798737e-02 3.26454897e-02 3.24127766e-02 3.21817224e-02 3.19523153e-02 + 3.17245434e-02 3.14983953e-02 3.12738592e-02 3.10509238e-02 3.08295775e-02 + 3.06098091e-02 3.03916074e-02 3.01749610e-02 2.99598591e-02 2.97462905e-02 + 2.95342443e-02 2.93237097e-02 2.91146759e-02 2.89071322e-02 2.87010679e-02 + 2.84964726e-02 2.82933358e-02 2.80916470e-02 2.78913959e-02 2.76925724e-02 + 2.74951661e-02 2.72991671e-02 2.71045652e-02 2.69113506e-02 2.67195132e-02 + 2.65290434e-02 2.63399314e-02 2.61521674e-02 2.59657420e-02 2.57806454e-02 + 2.55968683e-02 2.54144013e-02 2.52332350e-02 2.50533601e-02 2.48747675e-02 + 2.46974479e-02 2.45213924e-02 2.43465919e-02 2.41730374e-02 2.40007202e-02 + 2.38296313e-02 2.36597620e-02 2.34911036e-02 2.33236475e-02 2.31573851e-02 + 2.29923079e-02 2.28284075e-02 2.26656754e-02 2.25041034e-02 2.23436831e-02 + 2.21844064e-02 2.20262651e-02 2.18692510e-02 2.17133563e-02 2.15585729e-02 + 2.14048928e-02 2.12523082e-02 2.11008114e-02 2.09503945e-02 2.08010498e-02 + 2.06527697e-02 2.05055467e-02 2.03593731e-02 2.02142415e-02 2.00701445e-02 + 1.99270747e-02 1.97850247e-02 1.96439874e-02 1.95039554e-02 1.93649217e-02 + 1.92268790e-02 1.90898204e-02 1.89537388e-02 1.88186273e-02 1.86844789e-02 + 1.85512868e-02 1.84190442e-02 1.82877442e-02 1.81573802e-02 1.80279455e-02 + 1.78994335e-02 1.77718376e-02 1.76451512e-02 1.75193680e-02 1.73944813e-02 + 1.72704850e-02 1.71473725e-02 1.70251376e-02 1.69037741e-02 1.67832757e-02 + 1.66636363e-02 1.65448498e-02 1.64269100e-02 1.63098110e-02 1.61935467e-02 + 1.60781111e-02 1.59634985e-02 1.58497029e-02 1.57367184e-02 1.56245394e-02 + 1.55131600e-02 1.54025746e-02 1.52927776e-02 1.51837632e-02 1.50755259e-02 + 1.49680602e-02 1.48613605e-02 1.47554215e-02 1.46502376e-02 1.45458035e-02 + 1.44421139e-02 1.43391635e-02 1.42369469e-02 1.41354590e-02 1.40346945e-02 + 1.39346484e-02 1.38353154e-02 1.37366905e-02 1.36387686e-02 1.35415448e-02 + 1.34450141e-02 1.33491714e-02 1.32540120e-02 1.31595309e-02 1.30657234e-02 + 1.29725845e-02 1.28801096e-02 1.27882939e-02 1.26971327e-02 1.26063151e-02 + 1.25154436e-02 1.24245269e-02 1.23335755e-02 1.22425997e-02 1.21516097e-02 + 1.20606156e-02 1.19696276e-02 1.18786553e-02 1.17877088e-02 1.16967975e-02 + 1.16059312e-02 1.15151193e-02 1.14243711e-02 1.13336959e-02 1.12431028e-02 + 1.11526008e-02 1.10621990e-02 1.09719059e-02 1.08817305e-02 1.07916812e-02 + 1.07017665e-02 1.06119947e-02 1.05223742e-02 1.04329131e-02 1.03436193e-02 + 1.02545008e-02 1.01655655e-02 1.00768209e-02 9.98827475e-03 9.89993445e-03 + 9.81180737e-03 9.72390078e-03 9.63622180e-03 9.54877749e-03 9.46157475e-03 + 9.37462041e-03 9.28792117e-03 9.20148363e-03 9.11531428e-03 9.02941949e-03 + 8.94380554e-03 8.85847859e-03 8.77344469e-03 8.68870981e-03 8.60427978e-03 + 8.52016033e-03 8.43635711e-03 8.35287563e-03 8.26972131e-03 8.18689948e-03 + 8.10441534e-03 8.02227400e-03 7.94048046e-03 7.85903964e-03 7.77795632e-03 + 7.69723520e-03 7.61688088e-03 7.53689786e-03 7.45729054e-03 7.37806320e-03 + 7.29922004e-03 7.22076516e-03 7.14270257e-03 7.06503616e-03 6.98776974e-03 + 6.91090701e-03 6.83445160e-03 6.75840702e-03 6.68277668e-03 6.60756394e-03 + 6.53277201e-03 6.45840404e-03 6.38446310e-03 6.31095212e-03 6.23787400e-03 + 6.16523150e-03 6.09302732e-03 6.02126407e-03 5.94994425e-03 5.87907029e-03 + 5.80864453e-03 5.73866924e-03 5.66914657e-03 5.60007862e-03 5.53146739e-03 + 5.46331479e-03 5.39562266e-03 5.32839276e-03 5.26162676e-03 5.19532625e-03 + 5.12949276e-03 5.06412771e-03 4.99923247e-03 4.93480832e-03 4.87085646e-03 + 4.80737803e-03 4.74437407e-03 4.68184557e-03 4.61979344e-03 4.55821851e-03 + 4.49712154e-03 4.43650324e-03 4.37636421e-03 4.31670502e-03 4.25752614e-03 + 4.19882800e-03 4.14061094e-03 4.08287524e-03 4.02562113e-03 3.96884876e-03 + 3.91255821e-03 3.85674951e-03 3.80142263e-03 3.74657745e-03 3.69221384e-03 + 3.63833156e-03 3.58493033e-03 3.53200982e-03 3.47956964e-03 3.42760932e-03 + 3.37612837e-03 3.32512621e-03 3.27460223e-03 3.22455576e-03 3.17498607e-03 + 3.12589238e-03 3.07727386e-03 3.02912963e-03 2.98145877e-03 2.93426028e-03 + 2.88753314e-03 2.84127627e-03 2.79548856e-03 2.75016882e-03 2.70531585e-03 + 2.66092838e-03 2.61700511e-03 2.57354469e-03 2.53054574e-03 2.48800680e-03 + 2.44592643e-03 2.40430309e-03 2.36313524e-03 2.32242128e-03 2.28215958e-03 + 2.24234848e-03 2.20298627e-03 2.16407120e-03 2.12560150e-03 2.08757536e-03 + 2.04999094e-03 2.01284635e-03 1.97613968e-03 1.93986899e-03 1.90403230e-03 + 1.86862762e-03 1.83365289e-03 1.79910607e-03 1.76498506e-03 1.73128773e-03 + 1.69801194e-03 1.66515551e-03 1.63271624e-03 1.60069191e-03 1.56908027e-03 + 1.53787904e-03 1.50708593e-03 1.47669860e-03 1.44671473e-03 1.41713194e-03 + 1.38794786e-03 1.35916007e-03 1.33076615e-03 1.30276366e-03 1.27515013e-03 + 1.24792309e-03 1.22108002e-03 1.19461843e-03 1.16853578e-03 1.14282952e-03 + 1.11749709e-03 1.09253592e-03 1.06794342e-03 1.04371697e-03 1.01985397e-03 + 9.96351789e-04 9.73207785e-04 9.50419307e-04 9.27983692e-04 9.05898268e-04 + 8.84160354e-04 8.62767259e-04 8.41716282e-04 8.21004715e-04 8.00629843e-04 + 7.80588942e-04 7.60879284e-04 7.41498133e-04 7.22442746e-04 7.03710377e-04 + 6.85298275e-04 6.67203682e-04 6.49423839e-04 6.31955983e-04 6.14797347e-04 + 5.97945161e-04 5.81396654e-04 5.65149053e-04 5.49199583e-04 5.33545470e-04 + 5.18183936e-04 5.03112205e-04 4.88327503e-04 4.73827052e-04 4.59608080e-04 + 4.45667814e-04 4.32003482e-04 4.18612315e-04 4.05491548e-04 3.92638416e-04 + 3.80050161e-04 3.67724024e-04 3.55657254e-04 3.43847102e-04 3.32290824e-04 + 3.20985682e-04 3.09928942e-04 2.99117876e-04 2.88549763e-04 2.78221885e-04 + 2.68131534e-04 2.58276007e-04 2.48652609e-04 2.39258651e-04 2.30091454e-04 + 2.21148345e-04 2.12426659e-04 2.03923742e-04 1.95636945e-04 1.87563631e-04 + 1.79701172e-04 1.72046947e-04 1.64598349e-04 1.57352776e-04 1.50307641e-04 + 1.43460364e-04 1.36808378e-04 1.30349125e-04 1.24080059e-04 1.17998647e-04 + 1.12102364e-04 1.06388699e-04 1.00855154e-04 9.54992401e-05 9.03184837e-05 + 8.53104220e-05 8.04726054e-05 7.58025972e-05 7.12979737e-05 6.69563244e-05 + 6.27752523e-05 5.87523737e-05 5.48853189e-05 5.11717319e-05 4.76092706e-05 + 4.41956073e-05 4.09284284e-05 3.78054347e-05 3.48243416e-05 3.19828792e-05 + 2.92787923e-05 2.67098408e-05 2.42737994e-05 2.19684581e-05 1.97916221e-05 + 1.77411120e-05 1.58147637e-05 1.40104289e-05 1.23259747e-05 1.07592841e-05 + 9.30825580e-06 7.97080453e-06 6.74486090e-06 5.62837161e-06 4.61929948e-06 + 3.71562352e-06 2.91533901e-06 2.21645756e-06 1.61700713e-06 1.11503215e-06 + 7.08593517e-07 3.95768671e-07 1.74651632e-07 4.33530448e-08 0.00000000e+00 + 8.54089214e+04 8.54089214e+04 4.71851341e+04 3.12780768e+04 2.33258140e+04 + 1.85554559e+04 1.53760394e+04 1.31057232e+04 1.14035870e+04 1.00802305e+04 + 9.02201376e+03 8.15662046e+03 7.43583982e+03 6.82629521e+03 6.30414625e+03 + 5.85191002e+03 5.45647442e+03 5.10781256e+03 4.79812582e+03 4.52125743e+03 + 4.27228201e+03 4.04721238e+03 3.84278633e+03 3.65630905e+03 3.48553486e+03 + 3.32857745e+03 3.18384071e+03 3.04996505e+03 2.92578509e+03 2.81029625e+03 + 2.70262791e+03 2.60202179e+03 2.50781443e+03 2.41942281e+03 2.33633252e+03 + 2.25808794e+03 2.18428413e+03 2.11455989e+03 2.04859210e+03 1.98609078e+03 + 1.92679496e+03 1.87046914e+03 1.81690028e+03 1.76589516e+03 1.71727813e+03 + 1.67088917e+03 1.62658219e+03 1.58422355e+03 1.54369075e+03 1.50487129e+03 + 1.46766169e+03 1.43196661e+03 1.39769802e+03 1.36477457e+03 1.33312095e+03 + 1.30266729e+03 1.27334878e+03 1.24510512e+03 1.21788020e+03 1.19162171e+03 + 1.16628084e+03 1.14181198e+03 1.11817248e+03 1.09532240e+03 1.07322430e+03 + 1.05184306e+03 1.03114567e+03 1.01110113e+03 9.91680241e+02 9.72855519e+02 + 9.54601047e+02 9.36892379e+02 9.19706428e+02 9.03021378e+02 8.86816598e+02 + 8.71072562e+02 8.55770773e+02 8.40893704e+02 8.26424727e+02 8.12348062e+02 + 7.98648722e+02 7.85312464e+02 7.72325742e+02 7.59675669e+02 7.47349973e+02 + 7.35336964e+02 7.23625501e+02 7.12204954e+02 7.01065184e+02 6.90196508e+02 + 6.79589678e+02 6.69235854e+02 6.59126586e+02 6.49253787e+02 6.39609720e+02 + 6.30186973e+02 6.20978448e+02 6.11977343e+02 6.03177134e+02 5.94571564e+02 + 5.86154629e+02 5.77920564e+02 5.69863834e+02 5.61979120e+02 5.54261311e+02 + 5.46705492e+02 5.39306934e+02 5.32061090e+02 5.24963582e+02 5.18010194e+02 + 5.11196866e+02 5.04519685e+02 4.97974882e+02 4.91558820e+02 4.85267995e+02 + 4.79099023e+02 4.73048641e+02 4.67113699e+02 4.61291153e+02 4.55578065e+02 + 4.49971597e+02 4.44469004e+02 4.39067634e+02 4.33764924e+02 4.28558392e+02 + 4.23445639e+02 4.18424343e+02 4.13492256e+02 4.08647203e+02 4.03887075e+02 + 3.99209833e+02 3.94613497e+02 3.90096152e+02 3.85655939e+02 3.81291059e+02 + 3.76999763e+02 3.72780358e+02 3.68631201e+02 3.64550696e+02 3.60537296e+02 + 3.56589497e+02 3.52705842e+02 3.48884912e+02 3.45125332e+02 3.41425764e+02 + 3.37784909e+02 3.34201504e+02 3.30674322e+02 3.27202169e+02 3.23783884e+02 + 3.20418339e+02 3.17104435e+02 3.13841105e+02 3.10627308e+02 3.07462032e+02 + 3.04344294e+02 3.01273133e+02 2.98247616e+02 2.95266833e+02 2.92329900e+02 + 2.89435952e+02 2.86584149e+02 2.83773672e+02 2.81003722e+02 2.78273520e+02 + 2.75582308e+02 2.72929346e+02 2.70313911e+02 2.67735301e+02 2.65192828e+02 + 2.62685823e+02 2.60213632e+02 2.57775617e+02 2.55371156e+02 2.52999641e+02 + 2.50660479e+02 2.48353090e+02 2.46076909e+02 2.43831384e+02 2.41615975e+02 + 2.39430155e+02 2.37273410e+02 2.35145235e+02 2.33045140e+02 2.30972644e+02 + 2.28927278e+02 2.26908581e+02 2.24916107e+02 2.22949415e+02 2.21008077e+02 + 2.19091672e+02 2.17199792e+02 2.15332033e+02 2.13488004e+02 2.11667319e+02 + 2.09869604e+02 2.08094489e+02 2.06341616e+02 2.04610631e+02 2.02901189e+02 + 2.01212953e+02 1.99545592e+02 1.97898782e+02 1.96272206e+02 1.94665554e+02 + 1.93078520e+02 1.91510808e+02 1.89962126e+02 1.88432186e+02 1.86920710e+02 + 1.85427423e+02 1.83952055e+02 1.82494343e+02 1.81054029e+02 1.79630858e+02 + 1.78224583e+02 1.76834961e+02 1.75461751e+02 1.74104720e+02 1.72763638e+02 + 1.71438281e+02 1.70128427e+02 1.68833859e+02 1.67554365e+02 1.66289736e+02 + 1.65039768e+02 1.63804259e+02 1.62583012e+02 1.61375835e+02 1.60182536e+02 + 1.59002930e+02 1.57836834e+02 1.56684068e+02 1.55544455e+02 1.54417822e+02 + 1.53304000e+02 1.52202820e+02 1.51114119e+02 1.50037736e+02 1.48973511e+02 + 1.47921291e+02 1.46880920e+02 1.45852251e+02 1.44835133e+02 1.43829423e+02 + 1.42834978e+02 1.41851657e+02 1.40879323e+02 1.39917840e+02 1.38967075e+02 + 1.38026896e+02 1.37097174e+02 1.36177784e+02 1.35268599e+02 1.34369498e+02 + 1.33480360e+02 1.32601065e+02 1.31731497e+02 1.30871541e+02 1.30021083e+02 + 1.29180012e+02 1.28348219e+02 1.27525595e+02 1.26712033e+02 1.25907430e+02 + 1.25111682e+02 1.24324686e+02 1.23546344e+02 1.22776556e+02 1.22015225e+02 + 1.21262256e+02 1.20517553e+02 1.19781025e+02 1.19052579e+02 1.18332124e+02 + 1.17619573e+02 1.16914836e+02 1.16217827e+02 1.15528460e+02 1.14846652e+02 + 1.14172318e+02 1.13505378e+02 1.12845749e+02 1.12193352e+02 1.11548107e+02 + 1.10909938e+02 1.10278766e+02 1.09654517e+02 1.09037114e+02 1.08426484e+02 + 1.07822554e+02 1.07225250e+02 1.06634503e+02 1.06050240e+02 1.05472393e+02 + 1.04900892e+02 1.04335670e+02 1.03776657e+02 1.03223789e+02 1.02676999e+02 + 1.02136221e+02 1.01601391e+02 1.01072445e+02 1.00549321e+02 1.00031955e+02 + 9.95202850e+01 9.90142506e+01 9.85137906e+01 9.80188451e+01 9.75293545e+01 + 9.70452599e+01 9.65665028e+01 9.60930254e+01 9.56247704e+01 9.51616810e+01 + 9.47037009e+01 9.42507742e+01 9.38028458e+01 9.33598606e+01 9.29217644e+01 + 9.24885033e+01 9.20600236e+01 9.16362725e+01 9.12171972e+01 9.08027455e+01 + 9.03928657e+01 8.99875063e+01 8.95866163e+01 8.91901451e+01 8.87980424e+01 + 8.84102583e+01 8.80267434e+01 8.76474484e+01 8.72723244e+01 8.69013231e+01 + 8.65343963e+01 8.61714961e+01 8.58125750e+01 8.54575859e+01 8.51064819e+01 + 8.47592164e+01 8.44157432e+01 8.40760164e+01 8.37399902e+01 8.34076193e+01 + 8.30788587e+01 8.27536636e+01 8.24319894e+01 8.21137919e+01 8.17990272e+01 + 8.14876516e+01 8.11796217e+01 8.08748944e+01 8.05734267e+01 8.02751761e+01 + 7.99801003e+01 7.96881571e+01 7.93993048e+01 7.91135019e+01 7.88307069e+01 + 7.85508789e+01 7.82739771e+01 7.79999609e+01 7.77287902e+01 7.74604249e+01 + 7.71948253e+01 7.69319518e+01 7.66717652e+01 7.64142266e+01 7.61592973e+01 + 7.59069387e+01 7.56571128e+01 7.54097815e+01 7.51649071e+01 7.49224524e+01 + 7.46823800e+01 7.44446532e+01 7.42092353e+01 7.39760900e+01 7.37451811e+01 + 7.35164730e+01 7.32899300e+01 7.30655169e+01 7.28431986e+01 7.26229406e+01 + 7.24047084e+01 7.21884677e+01 7.19741848e+01 7.17618261e+01 7.15513583e+01 + 7.13427483e+01 7.11359635e+01 7.09309715e+01 7.07277401e+01 7.05262375e+01 + 7.03264321e+01 7.01282928e+01 6.99317885e+01 6.97368888e+01 6.95435632e+01 + 6.93517818e+01 6.91615148e+01 6.89727329e+01 6.87854070e+01 6.85995083e+01 + 6.84150084e+01 6.82318792e+01 6.80500928e+01 6.78696219e+01 6.76904391e+01 + 6.75125177e+01 6.73358312e+01 6.71603534e+01 6.69860584e+01 6.68129207e+01 + 6.66409151e+01 6.64700167e+01 6.63002010e+01 6.61314439e+01 6.59637213e+01 + 6.57970099e+01 6.56312863e+01 6.54665278e+01 6.53027117e+01 6.51398160e+01 + 6.49778186e+01 6.48166982e+01 6.46564335e+01 6.44970036e+01 6.43383881e+01 + 6.41805668e+01 6.40235197e+01 6.38672274e+01 6.37116708e+01 6.35568308e+01 + 6.34026891e+01 6.32492275e+01 6.30964280e+01 6.29442732e+01 6.27927459e+01 + 6.26418291e+01 6.24915063e+01 6.23417613e+01 6.21925783e+01 6.20439415e+01 + 6.18958357e+01 6.17482461e+01 6.16011579e+01 6.14545569e+01 6.13084290e+01 + 6.11627605e+01 6.10175380e+01 6.08727484e+01 6.07283791e+01 6.05844173e+01 + 6.04408511e+01 6.02976684e+01 6.01548577e+01 6.00124076e+01 5.98703072e+01 + 5.97285456e+01 5.95871125e+01 5.94459976e+01 5.93051910e+01 5.91646830e+01 + 5.90244644e+01 5.88845260e+01 5.87448589e+01 5.86054545e+01 5.84663047e+01 + 5.83274012e+01 5.81887362e+01 5.80503022e+01 5.79120918e+01 5.77740979e+01 + 5.76363137e+01 5.74987325e+01 5.73613480e+01 5.72241539e+01 5.70871444e+01 + 5.69503136e+01 5.68136560e+01 5.66771664e+01 5.65408396e+01 5.64046708e+01 + 5.62686552e+01 5.61327884e+01 5.59970660e+01 5.58614839e+01 5.57260382e+01 + 5.55907252e+01 5.54555412e+01 5.53204830e+01 5.51855472e+01 5.50507308e+01 + 5.49160309e+01 5.47814449e+01 5.46469700e+01 5.45126041e+01 5.43783446e+01 + 5.42441897e+01 5.41101372e+01 5.39761853e+01 5.38423325e+01 5.37085770e+01 + 5.35749175e+01 5.34413527e+01 5.33078815e+01 5.31745027e+01 5.30412154e+01 + 5.29080189e+01 5.27749124e+01 5.26418952e+01 5.25089671e+01 5.23761274e+01 + 5.22433760e+01 5.21107127e+01 5.19781374e+01 5.18456500e+01 5.17132507e+01 + 5.15809395e+01 5.14487169e+01 5.13165831e+01 5.11845384e+01 5.10525835e+01 + 5.09207189e+01 5.07889451e+01 5.06572630e+01 5.05256731e+01 5.03941765e+01 + 5.02627739e+01 5.01314663e+01 5.00002547e+01 4.98691402e+01 4.97381238e+01 + 4.96072067e+01 4.94763901e+01 4.93456753e+01 4.92150635e+01 4.90845560e+01 + 4.89541543e+01 4.88238597e+01 4.86936737e+01 4.85635977e+01 4.84336333e+01 + 4.83037819e+01 4.81740452e+01 4.80444247e+01 4.79149220e+01 4.77855388e+01 + 4.76562768e+01 4.75271375e+01 4.73981228e+01 4.72692343e+01 4.71404737e+01 + 4.70118428e+01 4.68833434e+01 4.67549771e+01 4.66267459e+01 4.64986515e+01 + 4.63706956e+01 4.62428801e+01 4.61152068e+01 4.59876775e+01 4.58602941e+01 + 4.57330582e+01 4.56059719e+01 4.54790368e+01 4.53522548e+01 4.52256277e+01 + 4.50991574e+01 4.49728457e+01 4.48466943e+01 4.47207051e+01 4.45948799e+01 + 4.44692205e+01 4.43437286e+01 4.42184061e+01 4.40932546e+01 4.39682761e+01 + 4.38434722e+01 4.37188447e+01 4.35943953e+01 4.34701257e+01 4.33460377e+01 + 4.32221329e+01 4.30984131e+01 4.29748798e+01 4.28515348e+01 4.27283798e+01 + 4.26054162e+01 4.24826459e+01 4.23600702e+01 4.22376909e+01 4.21155096e+01 + 4.19935276e+01 4.18717467e+01 4.17501683e+01 4.16287939e+01 4.15076250e+01 + 4.13866631e+01 4.12659096e+01 4.11453659e+01 4.10250336e+01 4.09049138e+01 + 4.07850081e+01 4.06653178e+01 4.05458443e+01 4.04265888e+01 4.03075526e+01 + 4.01887371e+01 4.00701435e+01 3.99517730e+01 3.98336269e+01 3.97157064e+01 + 3.95980126e+01 3.94805467e+01 3.93633099e+01 3.92463033e+01 3.91295280e+01 + 3.90129851e+01 3.88966757e+01 3.87806007e+01 3.86647613e+01 3.85491584e+01 + 3.84337931e+01 3.83186662e+01 3.82037788e+01 3.80891318e+01 3.79747260e+01 + 3.78605625e+01 3.77466420e+01 3.76329654e+01 3.75195335e+01 3.74063472e+01 + 3.72934073e+01 3.71807145e+01 3.70682695e+01 3.69560733e+01 3.68441263e+01 + 3.67324294e+01 3.66209833e+01 3.65097885e+01 3.63988459e+01 3.62881559e+01 + 3.61777192e+01 3.60675364e+01 3.59576080e+01 3.58479347e+01 3.57385170e+01 + 3.56293554e+01 3.55204504e+01 3.54118025e+01 3.53034122e+01 3.51952799e+01 + 3.50874060e+01 3.49797911e+01 3.48724355e+01 3.47653396e+01 3.46585038e+01 + 3.45519285e+01 3.44456139e+01 3.43395604e+01 3.42337684e+01 3.41282382e+01 + 3.40229699e+01 3.39179640e+01 3.38132206e+01 3.37087400e+01 3.36045224e+01 + 3.35005681e+01 3.33968772e+01 3.32934500e+01 3.31902865e+01 3.30873870e+01 + 3.29847516e+01 3.28823804e+01 3.27802736e+01 3.26784313e+01 3.25768535e+01 + 3.24755403e+01 3.23744918e+01 3.22737081e+01 3.21731893e+01 3.20729352e+01 + 3.19729460e+01 3.18732217e+01 3.17737623e+01 3.16745677e+01 3.15756379e+01 + 3.14769730e+01 3.13785728e+01 3.12804372e+01 3.11825664e+01 3.10849600e+01 + 3.09876181e+01 3.08905406e+01 3.07937274e+01 3.06971783e+01 3.06008932e+01 + 3.05048719e+01 3.04091144e+01 3.03136205e+01 3.02183900e+01 3.01234227e+01 + 3.00287185e+01 2.99342772e+01 2.98400985e+01 2.97461823e+01 2.96525283e+01 + 2.95591363e+01 2.94660061e+01 2.93731375e+01 2.92805302e+01 2.91881839e+01 + 2.90960984e+01 2.90042734e+01 2.89127086e+01 2.88214038e+01 2.87303587e+01 + 2.86395729e+01 2.85490462e+01 2.84587782e+01 2.83687687e+01 2.82790172e+01 + 2.81895236e+01 2.81002873e+01 2.80113082e+01 2.79225858e+01 2.78341198e+01 + 2.77459099e+01 2.76579556e+01 2.75702566e+01 2.74828125e+01 2.73956229e+01 + 2.73086875e+01 2.72220059e+01 2.71355776e+01 2.70494022e+01 2.69634795e+01 + 2.68778088e+01 2.67923899e+01 2.67072223e+01 2.66223055e+01 2.65376392e+01 + 2.64532230e+01 2.63690562e+01 2.62851387e+01 2.62014698e+01 2.61180491e+01 + 2.60348762e+01 2.59519507e+01 2.58692720e+01 2.57868397e+01 2.57046534e+01 + 2.56227125e+01 2.55410166e+01 2.54595652e+01 2.53783578e+01 2.52973940e+01 + 2.52166733e+01 2.51361951e+01 2.50559589e+01 2.49759644e+01 2.48962109e+01 + 2.48166980e+01 2.47374252e+01 2.46583919e+01 2.45795977e+01 2.45010421e+01 + 2.44227245e+01 2.43446444e+01 2.42668013e+01 2.41891946e+01 2.41118240e+01 + 2.40346888e+01 2.39577884e+01 2.38811225e+01 2.38046904e+01 2.37284917e+01 + 2.36525257e+01 2.35767919e+01 2.35012899e+01 2.34260191e+01 2.33509789e+01 + 2.32761688e+01 2.32015882e+01 2.31272367e+01 2.30531136e+01 2.29792185e+01 + 2.29055507e+01 2.28321097e+01 2.27588950e+01 2.26859061e+01 2.26131423e+01 + 2.25406031e+01 2.24682880e+01 2.23961964e+01 2.23243277e+01 2.22526815e+01 + 2.21812571e+01 2.21100539e+01 2.20390715e+01 2.19683093e+01 2.18977666e+01 + 2.18274430e+01 2.17573379e+01 2.16874508e+01 2.16177809e+01 2.15483279e+01 + 2.14790911e+01 2.14100700e+01 2.13412640e+01 2.12726726e+01 2.12042951e+01 + 2.11361311e+01 2.10681799e+01 2.10004410e+01 2.09329138e+01 2.08655978e+01 + 2.07984924e+01 2.07315971e+01 2.06649112e+01 2.05984342e+01 2.05321655e+01 + 2.04661046e+01 2.04002510e+01 2.03346039e+01 2.02691630e+01 2.02039276e+01 + 2.01388971e+01 2.00740711e+01 2.00094488e+01 1.99450298e+01 1.98808136e+01 + 1.98167994e+01 1.97529869e+01 1.96893754e+01 1.96259643e+01 1.95627531e+01 + 1.94997413e+01 1.94369282e+01 1.93743134e+01 1.93118962e+01 1.92496761e+01 + 1.91876525e+01 1.91258250e+01 1.90641928e+01 1.90027555e+01 1.89415126e+01 + 1.88804634e+01 1.88196074e+01 1.87589440e+01 1.86984728e+01 1.86381931e+01 + 1.85781044e+01 1.85182061e+01 1.84584977e+01 1.83989787e+01 1.83396484e+01 + 1.82805064e+01 1.82215521e+01 1.81627849e+01 1.81042044e+01 1.80458099e+01 + 1.79876009e+01 1.79295769e+01 1.78717373e+01 1.78140817e+01 1.77566093e+01 + 1.76993198e+01 1.76422125e+01 1.75852870e+01 1.75285426e+01 1.74719789e+01 + 1.74155954e+01 1.73593914e+01 1.73033665e+01 1.72475200e+01 1.71918516e+01 + 1.71363607e+01 1.70810466e+01 1.70259090e+01 1.69709472e+01 1.69161608e+01 + 1.68615492e+01 1.68071119e+01 1.67528484e+01 1.66987581e+01 1.66448405e+01 + 1.65910952e+01 1.65375215e+01 1.64841190e+01 1.64308872e+01 1.63778255e+01 + 1.63249334e+01 1.62722105e+01 1.62196561e+01 1.61672698e+01 1.61150511e+01 + 1.60629994e+01 1.60111143e+01 1.59593953e+01 1.59078418e+01 1.58564533e+01 + 1.58052293e+01 1.57541694e+01 1.57032730e+01 1.56525397e+01 1.56019688e+01 + 1.55515600e+01 1.55013128e+01 1.54512266e+01 1.54013009e+01 1.53515352e+01 + 1.53019291e+01 1.52524821e+01 1.52031937e+01 1.51540633e+01 1.51050906e+01 + 1.50562750e+01 1.50076159e+01 1.49591131e+01 1.49107659e+01 1.48625738e+01 + 1.48145365e+01 1.47666534e+01 1.47189241e+01 1.46713480e+01 1.46239246e+01 + 1.45766536e+01 1.45295345e+01 1.44825667e+01 1.44357498e+01 1.43890834e+01 + 1.43425669e+01 1.42961999e+01 1.42499819e+01 1.42039125e+01 1.41579912e+01 + 1.41122175e+01 1.40665910e+01 1.40211112e+01 1.39757777e+01 1.39305900e+01 + 1.38855476e+01 1.38406501e+01 1.37958971e+01 1.37512880e+01 1.37068225e+01 + 1.36625000e+01 1.36183202e+01 1.35742825e+01 1.35303866e+01 1.34866320e+01 + 1.34430183e+01 1.33995449e+01 1.33562115e+01 1.33130177e+01 1.32699629e+01 + 1.32270467e+01 1.31842688e+01 1.31416287e+01 1.30991259e+01 1.30567600e+01 + 1.30145306e+01 1.29724372e+01 1.29304794e+01 1.28886568e+01 1.28469690e+01 + 1.28054156e+01 1.27639960e+01 1.27227099e+01 1.26815569e+01 1.26405365e+01 + 1.25996484e+01 1.25588920e+01 1.25182671e+01 1.24777731e+01 1.24374097e+01 + 1.23971764e+01 1.23570729e+01 1.23170986e+01 1.22772533e+01 1.22375365e+01 + 1.21979477e+01 1.21584867e+01 1.21191529e+01 1.20799461e+01 1.20408656e+01 + 1.20019113e+01 1.19630826e+01 1.19243792e+01 1.18858007e+01 1.18473466e+01 + 1.18090166e+01 1.17708103e+01 1.17327273e+01 1.16947672e+01 1.16569296e+01 + 1.16192141e+01 1.15816204e+01 1.15441480e+01 1.15067965e+01 1.14695656e+01 + 1.14324549e+01 1.13954640e+01 1.13585925e+01 1.13218400e+01 1.12852062e+01 + 1.12486906e+01 1.12122930e+01 1.11760129e+01 1.11398499e+01 1.11038037e+01 + 1.10678739e+01 1.10320602e+01 1.09963621e+01 1.09607793e+01 1.09253114e+01 + 1.08899580e+01 1.08547189e+01 1.08195935e+01 1.07845816e+01 1.07496829e+01 + 1.07148968e+01 1.06802231e+01 1.06456614e+01 1.06112114e+01 1.05768727e+01 + 1.05426449e+01 1.05085277e+01 1.04745207e+01 1.04406236e+01 1.04068360e+01 + 1.03731576e+01 1.03395880e+01 1.03061269e+01 1.02727739e+01 1.02395287e+01 + 1.02063909e+01 1.01733603e+01 1.01404363e+01 1.01076188e+01 1.00749073e+01 + 1.00423016e+01 1.00098012e+01 9.97740586e+00 9.94511523e+00 9.91292898e+00 + 9.88084676e+00 9.84886825e+00 9.81699310e+00 9.78522099e+00 9.75355158e+00 + 9.72198455e+00 9.69051957e+00 9.65915630e+00 9.62789442e+00 9.59673361e+00 + 9.56567354e+00 9.53471389e+00 9.50385433e+00 9.47309455e+00 9.44243421e+00 + 9.41187301e+00 9.38141062e+00 9.35104672e+00 9.32078101e+00 9.29061315e+00 + 9.26054285e+00 9.23056977e+00 9.20069362e+00 9.17091408e+00 9.14123084e+00 + 9.11164358e+00 9.08215200e+00 9.05275580e+00 9.02345465e+00 8.99424827e+00 + 8.96513634e+00 8.93611856e+00 8.90719462e+00 8.87836423e+00 8.84962708e+00 + 8.82098287e+00 8.79243131e+00 8.76397209e+00 8.73560491e+00 8.70732949e+00 + 8.67914552e+00 8.65105271e+00 8.62305076e+00 8.59513939e+00 8.56731831e+00 + 8.53958721e+00 8.51194581e+00 8.48439382e+00 8.45693096e+00 8.42955693e+00 + 8.40227145e+00 8.37507424e+00 8.34796500e+00 8.32094347e+00 8.29400934e+00 + 8.26716234e+00 8.24040220e+00 8.21372862e+00 8.18714134e+00 8.16064006e+00 + 8.13422453e+00 8.10789445e+00 8.08164955e+00 8.05548956e+00 8.02941421e+00 + 8.00342321e+00 7.97751631e+00 7.95169322e+00 7.92595368e+00 7.90029741e+00 + 7.87472416e+00 7.84923364e+00 7.82382560e+00 7.79849977e+00 7.77325588e+00 + 7.74809366e+00 7.72301286e+00 7.69801321e+00 7.67309445e+00 7.64825632e+00 + 7.62349856e+00 7.59882090e+00 7.57422310e+00 7.54970489e+00 7.52526601e+00 + 7.50090621e+00 7.47662523e+00 7.45242282e+00 7.42829873e+00 7.40425270e+00 + 7.38028448e+00 7.35639382e+00 7.33258046e+00 7.30884417e+00 7.28518468e+00 + 7.26160176e+00 7.23809515e+00 7.21466461e+00 7.19130989e+00 7.16803075e+00 + 7.14482694e+00 7.12169822e+00 7.09864435e+00 7.07566508e+00 7.05276018e+00 + 7.02992940e+00 7.00717250e+00 6.98448925e+00 6.96187941e+00 6.93934274e+00 + 6.91687900e+00 6.89448796e+00 6.87216939e+00 6.84992304e+00 6.82774869e+00 + 6.80564610e+00 6.78361505e+00 6.76165529e+00 6.73976661e+00 6.71794876e+00 + 6.69620152e+00 6.67452467e+00 6.65291797e+00 6.63138120e+00 6.60991414e+00 + 6.58851655e+00 6.56718821e+00 6.54592890e+00 6.52473840e+00 6.50361648e+00 + 6.48256292e+00 6.46157750e+00 6.44066000e+00 6.41981020e+00 6.39902789e+00 + 6.37831283e+00 6.35766483e+00 6.33708365e+00 6.31656908e+00 6.29612092e+00 + 6.27573893e+00 6.25542292e+00 6.23517266e+00 6.21498794e+00 6.19486855e+00 + 6.17481429e+00 6.15482493e+00 6.13490027e+00 6.11504011e+00 6.09524422e+00 + 6.07551241e+00 6.05584446e+00 6.03624018e+00 6.01669935e+00 5.99722177e+00 + 5.97780723e+00 5.95845553e+00 5.93916647e+00 5.91993984e+00 5.90077545e+00 + 5.88167309e+00 5.86263256e+00 5.84365365e+00 5.82473619e+00 5.80587995e+00 + 5.78708475e+00 5.76835038e+00 5.74967666e+00 5.73106338e+00 5.71251035e+00 + 5.69401737e+00 5.67558425e+00 5.65721080e+00 5.63889682e+00 5.62064212e+00 + 5.60244651e+00 5.58430980e+00 5.56623179e+00 5.54821231e+00 5.53025115e+00 + 5.51234812e+00 5.49450305e+00 5.47671575e+00 5.45898602e+00 5.44131368e+00 + 5.42369855e+00 5.40614043e+00 5.38863915e+00 5.37119452e+00 5.35380636e+00 + 5.33647449e+00 5.31919872e+00 5.30197887e+00 5.28481476e+00 5.26770621e+00 + 5.25065305e+00 5.23365508e+00 5.21671214e+00 5.19982404e+00 5.18299061e+00 + 5.16621167e+00 5.14948704e+00 5.13281656e+00 5.11620003e+00 5.09963730e+00 + 5.08312818e+00 5.06667250e+00 5.05027009e+00 5.03392077e+00 5.01762438e+00 + 5.00138074e+00 4.98518969e+00 4.96905104e+00 4.95296464e+00 4.93693031e+00 + 4.92094789e+00 4.90501720e+00 4.88913808e+00 4.87331037e+00 4.85753389e+00 + 4.84180848e+00 4.82613398e+00 4.81051021e+00 4.79493703e+00 4.77941425e+00 + 4.76394173e+00 4.74851929e+00 4.73314678e+00 4.71782403e+00 4.70255088e+00 + 4.68732717e+00 4.67215275e+00 4.65702744e+00 4.64195110e+00 4.62692357e+00 + 4.61194468e+00 4.59701428e+00 4.58213221e+00 4.56729832e+00 4.55251245e+00 + 4.53777444e+00 4.52308415e+00 4.50844141e+00 4.49384606e+00 4.47929797e+00 + 4.46479697e+00 4.45034292e+00 4.43593566e+00 4.42157503e+00 4.40726089e+00 + 4.39299310e+00 4.37877148e+00 4.36459591e+00 4.35046623e+00 4.33638229e+00 + 4.32234394e+00 4.30835103e+00 4.29440343e+00 4.28050097e+00 4.26664352e+00 + 4.25283093e+00 4.23906306e+00 4.22533975e+00 4.21166087e+00 4.19802627e+00 + 4.18443581e+00 4.17088935e+00 4.15738674e+00 4.14392784e+00 4.13051251e+00 + 4.11714061e+00 4.10381200e+00 4.09052653e+00 4.07728407e+00 4.06408449e+00 + 4.05092763e+00 4.03781337e+00 4.02474156e+00 4.01171206e+00 3.99872475e+00 + 3.98577948e+00 3.97287611e+00 3.96001452e+00 3.94719457e+00 3.93441611e+00 + 3.92167903e+00 3.90898318e+00 3.89632842e+00 3.88371464e+00 3.87114168e+00 + 3.85860944e+00 3.84611776e+00 3.83366652e+00 3.82125558e+00 3.80888483e+00 + 3.79655412e+00 3.78426333e+00 3.77201234e+00 3.75980100e+00 3.74762919e+00 + 3.73549678e+00 3.72340365e+00 3.71134967e+00 3.69933472e+00 3.68735866e+00 + 3.67542137e+00 3.66352272e+00 3.65166259e+00 3.63984086e+00 3.62805740e+00 + 3.61631208e+00 3.60460479e+00 3.59293540e+00 3.58130378e+00 3.56970982e+00 + 3.55815340e+00 3.54663438e+00 3.53515266e+00 3.52370810e+00 3.51230060e+00 + 3.50093002e+00 3.48959626e+00 3.47829918e+00 3.46703868e+00 3.45581463e+00 + 3.44462692e+00 3.43347542e+00 3.42236003e+00 3.41128062e+00 3.40023708e+00 + 3.38922929e+00 3.37825713e+00 3.36732050e+00 3.35641927e+00 3.34555333e+00 + 3.33472257e+00 3.32392687e+00 3.31316612e+00 3.30244021e+00 3.29174901e+00 + 3.28109243e+00 3.27047035e+00 3.25988266e+00 3.24932924e+00 3.23880999e+00 + 3.22832479e+00 3.21787353e+00 3.20745611e+00 3.19707242e+00 3.18672234e+00 + 3.17640576e+00 3.16612258e+00 3.15587270e+00 3.14565599e+00 3.13547237e+00 + 3.12532170e+00 3.11520390e+00 3.10511886e+00 3.09506646e+00 3.08504661e+00 + 3.07505919e+00 3.06510411e+00 3.05518125e+00 3.04529052e+00 3.03543181e+00 + 3.02560501e+00 3.01581003e+00 3.00604676e+00 2.99631509e+00 2.98661493e+00 + 2.97694617e+00 2.96730871e+00 2.95770245e+00 2.94812729e+00 2.93858313e+00 + 2.92906986e+00 2.91958740e+00 2.91013563e+00 2.90071446e+00 2.89132379e+00 + 2.88196352e+00 2.87263355e+00 2.86333379e+00 2.85406413e+00 2.84482448e+00 + 2.83561475e+00 2.82643483e+00 2.81728463e+00 2.80816405e+00 2.79907299e+00 + 2.79001137e+00 2.78097909e+00 2.77197604e+00 2.76300214e+00 2.75405559e+00 + 2.74510554e+00 2.73614077e+00 2.72716164e+00 2.71816846e+00 2.70916157e+00 + 2.70014130e+00 2.69110798e+00 2.68206194e+00 2.67300350e+00 2.66393299e+00 + 2.65485073e+00 2.64575705e+00 2.63665226e+00 2.62753670e+00 2.61841067e+00 + 2.60927450e+00 2.60012851e+00 2.59097300e+00 2.58180831e+00 2.57263473e+00 + 2.56345258e+00 2.55426218e+00 2.54506383e+00 2.53585784e+00 2.52664452e+00 + 2.51742418e+00 2.50819712e+00 2.49896364e+00 2.48972406e+00 2.48047866e+00 + 2.47122774e+00 2.46197162e+00 2.45271058e+00 2.44344492e+00 2.43417494e+00 + 2.42490093e+00 2.41562317e+00 2.40634197e+00 2.39705762e+00 2.38777039e+00 + 2.37848057e+00 2.36918847e+00 2.35989434e+00 2.35059849e+00 2.34130118e+00 + 2.33200271e+00 2.32270335e+00 2.31340337e+00 2.30410306e+00 2.29480269e+00 + 2.28550252e+00 2.27620284e+00 2.26690392e+00 2.25760601e+00 2.24830940e+00 + 2.23901434e+00 2.22972110e+00 2.22042995e+00 2.21114115e+00 2.20185495e+00 + 2.19257162e+00 2.18329142e+00 2.17401459e+00 2.16474141e+00 2.15547211e+00 + 2.14620696e+00 2.13694620e+00 2.12769008e+00 2.11843885e+00 2.10919276e+00 + 2.09995205e+00 2.09071696e+00 2.08148774e+00 2.07226463e+00 2.06304787e+00 + 2.05383769e+00 2.04463433e+00 2.03543803e+00 2.02624901e+00 2.01706752e+00 + 2.00789378e+00 1.99872802e+00 1.98957047e+00 1.98042135e+00 1.97128090e+00 + 1.96214932e+00 1.95302685e+00 1.94391370e+00 1.93481009e+00 1.92571625e+00 + 1.91663238e+00 1.90755870e+00 1.89849542e+00 1.88944276e+00 1.88040092e+00 + 1.87137011e+00 1.86235054e+00 1.85334242e+00 1.84434594e+00 1.83536132e+00 + 1.82638875e+00 1.81742843e+00 1.80848057e+00 1.79954534e+00 1.79062296e+00 + 1.78171362e+00 1.77281750e+00 1.76393481e+00 1.75506572e+00 1.74621042e+00 + 1.73736911e+00 1.72854196e+00 1.71972916e+00 1.71093090e+00 1.70214734e+00 + 1.69337868e+00 1.68462508e+00 1.67588673e+00 1.66716380e+00 1.65845646e+00 + 1.64976489e+00 1.64108925e+00 1.63242971e+00 1.62378644e+00 1.61515960e+00 + 1.60654936e+00 1.59795589e+00 1.58937934e+00 1.58081988e+00 1.57227765e+00 + 1.56375283e+00 1.55524556e+00 1.54675599e+00 1.53828429e+00 1.52983061e+00 + 1.52139508e+00 1.51297787e+00 1.50457911e+00 1.49619895e+00 1.48783755e+00 + 1.47949503e+00 1.47117154e+00 1.46286723e+00 1.45458222e+00 1.44631666e+00 + 1.43807068e+00 1.42984441e+00 1.42163800e+00 1.41345156e+00 1.40528523e+00 + 1.39713914e+00 1.38901341e+00 1.38090818e+00 1.37282356e+00 1.36475967e+00 + 1.35671664e+00 1.34869460e+00 1.34069364e+00 1.33271391e+00 1.32475550e+00 + 1.31681854e+00 1.30890314e+00 1.30100940e+00 1.29313745e+00 1.28528739e+00 + 1.27745932e+00 1.26965336e+00 1.26186960e+00 1.25410815e+00 1.24636912e+00 + 1.23865261e+00 1.23095871e+00 1.22328752e+00 1.21563914e+00 1.20801367e+00 + 1.20041119e+00 1.19283181e+00 1.18527561e+00 1.17774269e+00 1.17023313e+00 + 1.16274702e+00 1.15528445e+00 1.14784550e+00 1.14043025e+00 1.13303880e+00 + 1.12567121e+00 1.11832758e+00 1.11100797e+00 1.10371247e+00 1.09644115e+00 + 1.08919409e+00 1.08197135e+00 1.07477302e+00 1.06759917e+00 1.06044985e+00 + 1.05332515e+00 1.04622513e+00 1.03914985e+00 1.03209938e+00 1.02507379e+00 + 1.01807313e+00 1.01109747e+00 1.00414687e+00 9.97221386e-01 9.90321073e-01 + 9.83445990e-01 9.76596193e-01 9.69771734e-01 9.62972667e-01 9.56199044e-01 + 9.49450914e-01 9.42728328e-01 9.36031332e-01 9.29359975e-01 9.22714301e-01 + 9.16094356e-01 9.09500183e-01 9.02931824e-01 8.96389320e-01 8.89872712e-01 + 8.83382038e-01 8.76917335e-01 8.70478642e-01 8.64065993e-01 8.57679422e-01 + 8.51318963e-01 8.44984649e-01 8.38676510e-01 8.32394576e-01 8.26138877e-01 + 8.19909440e-01 8.13706292e-01 8.07529459e-01 8.01378965e-01 7.95254834e-01 + 7.89157089e-01 7.83085752e-01 7.77040841e-01 7.71022378e-01 7.65030381e-01 + 7.59064866e-01 7.53125850e-01 7.47213349e-01 7.41327376e-01 7.35467946e-01 + 7.29635070e-01 7.23828760e-01 7.18049026e-01 7.12295878e-01 7.06569323e-01 + 7.00869370e-01 6.95196024e-01 6.89549291e-01 6.83929175e-01 6.78335681e-01 + 6.72768810e-01 6.67228564e-01 6.61714945e-01 6.56227951e-01 6.50767581e-01 + 6.45333835e-01 6.39926707e-01 6.34546195e-01 6.29192295e-01 6.23864999e-01 + 6.18564301e-01 6.13290195e-01 6.08042671e-01 6.02821721e-01 5.97627334e-01 + 5.92459499e-01 5.87318204e-01 5.82203438e-01 5.77115185e-01 5.72053432e-01 + 5.67018163e-01 5.62009363e-01 5.57027014e-01 5.52071099e-01 5.47141599e-01 + 5.42238495e-01 5.37361766e-01 5.32511392e-01 5.27687351e-01 5.22889620e-01 + 5.18118177e-01 5.13372996e-01 5.08654052e-01 5.03961322e-01 4.99294776e-01 + 4.94654390e-01 4.90040134e-01 4.85451980e-01 4.80889899e-01 4.76353860e-01 + 4.71843832e-01 4.67359785e-01 4.62901684e-01 4.58469498e-01 4.54063193e-01 + 4.49682734e-01 4.45328086e-01 4.40999213e-01 4.36696079e-01 4.32418646e-01 + 4.28166876e-01 4.23940731e-01 4.19740172e-01 4.15565159e-01 4.11415650e-01 + 4.07291606e-01 4.03192983e-01 3.99119741e-01 3.95071834e-01 3.91049220e-01 + 3.87051855e-01 3.83079693e-01 3.79132688e-01 3.75210796e-01 3.71313967e-01 + 3.67442156e-01 3.63595315e-01 3.59773394e-01 3.55976344e-01 3.52204117e-01 + 3.48456661e-01 3.44733925e-01 3.41035859e-01 3.37362410e-01 3.33713525e-01 + 3.30089152e-01 3.26489237e-01 3.22913726e-01 3.19362564e-01 3.15835697e-01 + 3.12333067e-01 3.08854620e-01 3.05400297e-01 3.01970043e-01 2.98563800e-01 + 2.95181508e-01 2.91823110e-01 2.88488547e-01 2.85177758e-01 2.81890683e-01 + 2.78627263e-01 2.75387435e-01 2.72171139e-01 2.68978312e-01 2.65808892e-01 + 2.62662816e-01 2.59540022e-01 2.56440444e-01 2.53364020e-01 2.50310684e-01 + 2.47280372e-01 2.44273018e-01 2.41288556e-01 2.38326921e-01 2.35388045e-01 + 2.32471862e-01 2.29578304e-01 2.26707304e-01 2.23858794e-01 2.21032705e-01 + 2.18228967e-01 2.15447513e-01 2.12688273e-01 2.09951176e-01 2.07236152e-01 + 2.04543131e-01 2.01872042e-01 1.99222813e-01 1.96595373e-01 1.93989650e-01 + 1.91405572e-01 1.88843066e-01 1.86302060e-01 1.83782479e-01 1.81284252e-01 + 1.78807303e-01 1.76351559e-01 1.73916946e-01 1.71503389e-01 1.69110813e-01 + 1.66739143e-01 1.64388303e-01 1.62058219e-01 1.59748813e-01 1.57460009e-01 + 1.55191732e-01 1.52943905e-01 1.50716450e-01 1.48509290e-01 1.46322348e-01 + 1.44155547e-01 1.42008808e-01 1.39882053e-01 1.37775205e-01 1.35688184e-01 + 1.33620912e-01 1.31573309e-01 1.29545298e-01 1.27536798e-01 1.25547730e-01 + 1.23578015e-01 1.21627572e-01 1.19696321e-01 1.17784183e-01 1.15891077e-01 + 1.14016921e-01 1.12161637e-01 1.10325142e-01 1.08507356e-01 1.06708197e-01 + 1.04927585e-01 1.03165437e-01 1.01421673e-01 9.96962103e-02 9.79889672e-02 + 9.62998618e-02 9.46288120e-02 9.29757356e-02 9.13405503e-02 8.97231736e-02 + 8.81235231e-02 8.65415161e-02 8.49770698e-02 8.34301014e-02 8.19005281e-02 + 8.03882668e-02 7.88932345e-02 7.74153479e-02 7.59545239e-02 7.45106790e-02 + 7.30837300e-02 7.16735935e-02 7.02801858e-02 6.89034235e-02 6.75432228e-02 + 6.61995003e-02 6.48721721e-02 6.35611545e-02 6.22663637e-02 6.09877158e-02 + 5.97251271e-02 5.84785135e-02 5.72477913e-02 5.60328764e-02 5.48336849e-02 + 5.36501328e-02 5.24821361e-02 5.13296109e-02 5.01924730e-02 4.90706386e-02 + 4.79640236e-02 4.68725440e-02 4.57961157e-02 4.47346549e-02 4.36880775e-02 + 4.26562996e-02 4.16392373e-02 4.06368065e-02 3.96489235e-02 3.86755044e-02 + 3.77164653e-02 3.67717225e-02 3.58411921e-02 3.49247905e-02 3.40224340e-02 + 3.31340390e-02 3.22595219e-02 3.13987991e-02 3.05517872e-02 2.97184028e-02 + 2.88985626e-02 2.80921832e-02 2.72991814e-02 2.65194740e-02 2.57529781e-02 + 2.49996105e-02 2.42592885e-02 2.35319290e-02 2.28174494e-02 2.21157669e-02 + 2.14267990e-02 2.07504632e-02 2.00866771e-02 1.94353583e-02 1.87964247e-02 + 1.81697941e-02 1.75553845e-02 1.69531141e-02 1.63629010e-02 1.57846636e-02 + 1.52183202e-02 1.46637895e-02 1.41209901e-02 1.35898408e-02 1.30702605e-02 + 1.25621682e-02 1.20654832e-02 1.15801246e-02 1.11060119e-02 1.06430648e-02 + 1.01912028e-02 9.75034577e-03 9.32041377e-03 8.90132688e-03 8.49300538e-03 + 8.09536966e-03 7.70834030e-03 7.33183802e-03 6.96578368e-03 6.61009831e-03 + 6.26470310e-03 5.92951939e-03 5.60446868e-03 5.28947266e-03 4.98445316e-03 + 4.68933218e-03 4.40403190e-03 4.12847467e-03 3.86258301e-03 3.60627963e-03 + 3.35948739e-03 3.12212936e-03 2.89412876e-03 2.67540903e-03 2.46589377e-03 + 2.26550676e-03 2.07417199e-03 1.89181364e-03 1.71835606e-03 1.55372381e-03 + 1.39784164e-03 1.25063451e-03 1.11202756e-03 9.81946133e-04 8.60315789e-04 + 7.47062278e-04 6.42111559e-04 5.45389798e-04 4.56823367e-04 3.76338850e-04 + 3.03863043e-04 2.39322951e-04 1.82645796e-04 1.33759016e-04 9.25902631e-05 + 5.90674105e-05 3.31185502e-05 1.46719954e-05 3.65628182e-06 0.00000000e+00 + 4.06412796e+00 4.06783653e+00 4.07704324e+00 4.08626532e+00 4.09550275e+00 + 4.10475551e+00 4.11402360e+00 4.12330700e+00 4.13260568e+00 4.14191965e+00 + 4.15124888e+00 4.16059336e+00 4.16995307e+00 4.17932799e+00 4.18871811e+00 + 4.19812340e+00 4.20754387e+00 4.21697947e+00 4.22643020e+00 4.23589604e+00 + 4.24537696e+00 4.25487296e+00 4.26438400e+00 4.27391007e+00 4.28345115e+00 + 4.29300721e+00 4.30257824e+00 4.31216421e+00 4.32176511e+00 4.33138090e+00 + 4.34101157e+00 4.35065709e+00 4.36031744e+00 4.36999260e+00 4.37968253e+00 + 4.38938722e+00 4.39910664e+00 4.40884076e+00 4.41858956e+00 4.42835301e+00 + 4.43813109e+00 4.44792376e+00 4.45773100e+00 4.46755278e+00 4.47738908e+00 + 4.48723985e+00 4.49710508e+00 4.50698473e+00 4.51687878e+00 4.52678718e+00 + 4.53670992e+00 4.54664696e+00 4.55659826e+00 4.56656380e+00 4.57654353e+00 + 4.58653744e+00 4.59654548e+00 4.60656761e+00 4.61660382e+00 4.62665405e+00 + 4.63671827e+00 4.64679645e+00 4.65688855e+00 4.66699453e+00 4.67711435e+00 + 4.68724799e+00 4.69739539e+00 4.70755652e+00 4.71773133e+00 4.72791980e+00 + 4.73812188e+00 4.74833752e+00 4.75856669e+00 4.76880934e+00 4.77906544e+00 + 4.78933493e+00 4.79961778e+00 4.80991393e+00 4.82022336e+00 4.83054600e+00 + 4.84088182e+00 4.85123077e+00 4.86159280e+00 4.87196787e+00 4.88235592e+00 + 4.89275691e+00 4.90317080e+00 4.91359752e+00 4.92403704e+00 4.93448930e+00 + 4.94495425e+00 4.95543184e+00 4.96592201e+00 4.97642472e+00 4.98693991e+00 + 4.99746754e+00 5.00800753e+00 5.01855985e+00 5.02912442e+00 5.03970121e+00 + 5.05029015e+00 5.06089119e+00 5.07150426e+00 5.08212932e+00 5.09276629e+00 + 5.10341513e+00 5.11407577e+00 5.12474815e+00 5.13543222e+00 5.14612790e+00 + 5.15683515e+00 5.16755389e+00 5.17828406e+00 5.18902560e+00 5.19977844e+00 + 5.21054252e+00 5.22131778e+00 5.23210415e+00 5.24290155e+00 5.25370993e+00 + 5.26452922e+00 5.27535934e+00 5.28620023e+00 5.29705182e+00 5.30791404e+00 + 5.31878681e+00 5.32967007e+00 5.34056375e+00 5.35146776e+00 5.36238204e+00 + 5.37330652e+00 5.38424111e+00 5.39518574e+00 5.40614035e+00 5.41710484e+00 + 5.42807915e+00 5.43906319e+00 5.45005689e+00 5.46106017e+00 5.47207294e+00 + 5.48309514e+00 5.49412667e+00 5.50516746e+00 5.51621742e+00 5.52727647e+00 + 5.53834452e+00 5.54942150e+00 5.56050732e+00 5.57160189e+00 5.58270512e+00 + 5.59381693e+00 5.60493724e+00 5.61606594e+00 5.62720297e+00 5.63834821e+00 + 5.64950159e+00 5.66066301e+00 5.67183239e+00 5.68300962e+00 5.69419463e+00 + 5.70538730e+00 5.71658756e+00 5.72779530e+00 5.73901042e+00 5.75023284e+00 + 5.76146246e+00 5.77269917e+00 5.78394289e+00 5.79519350e+00 5.80645092e+00 + 5.81771503e+00 5.82898575e+00 5.84026296e+00 5.85154657e+00 5.86283647e+00 + 5.87413256e+00 5.88543473e+00 5.89674289e+00 5.90805691e+00 5.91937670e+00 + 5.93070215e+00 5.94203316e+00 5.95336960e+00 5.96471138e+00 5.97605838e+00 + 5.98741049e+00 5.99876760e+00 6.01012960e+00 6.02149638e+00 6.03286782e+00 + 6.04424380e+00 6.05562422e+00 6.06700896e+00 6.07839789e+00 6.08979091e+00 + 6.10118790e+00 6.11258873e+00 6.12399329e+00 6.13540145e+00 6.14681311e+00 + 6.15822813e+00 6.16964639e+00 6.18106777e+00 6.19249215e+00 6.20391941e+00 + 6.21534941e+00 6.22678203e+00 6.23821715e+00 6.24965464e+00 6.26109436e+00 + 6.27253621e+00 6.28398003e+00 6.29542571e+00 6.30687311e+00 6.31832210e+00 + 6.32977255e+00 6.34122433e+00 6.35267730e+00 6.36413133e+00 6.37558628e+00 + 6.38704202e+00 6.39849842e+00 6.40995532e+00 6.42141261e+00 6.43287013e+00 + 6.44432776e+00 6.45578534e+00 6.46724275e+00 6.47869983e+00 6.49015644e+00 + 6.50161246e+00 6.51306772e+00 6.52452208e+00 6.53597541e+00 6.54742756e+00 + 6.55887837e+00 6.57032771e+00 6.58177542e+00 6.59322136e+00 6.60466538e+00 + 6.61610733e+00 6.62754705e+00 6.63898441e+00 6.65041923e+00 6.66185139e+00 + 6.67328071e+00 6.68470705e+00 6.69613025e+00 6.70755016e+00 6.71896662e+00 + 6.73037948e+00 6.74178857e+00 6.75319375e+00 6.76459484e+00 6.77599170e+00 + 6.78738417e+00 6.79877207e+00 6.81015526e+00 6.82153357e+00 6.83290684e+00 + 6.84427490e+00 6.85563759e+00 6.86699475e+00 6.87834621e+00 6.88969181e+00 + 6.90103138e+00 6.91236475e+00 6.92369176e+00 6.93501224e+00 6.94632601e+00 + 6.95763292e+00 6.96893279e+00 6.98022544e+00 6.99151072e+00 7.00278844e+00 + 7.01405843e+00 7.02532053e+00 7.03657455e+00 7.04782033e+00 7.05905769e+00 + 7.07028644e+00 7.08150643e+00 7.09271747e+00 7.10391938e+00 7.11511199e+00 + 7.12629511e+00 7.13746858e+00 7.14863220e+00 7.15978581e+00 7.17092921e+00 + 7.18206223e+00 7.19318469e+00 7.20429640e+00 7.21539719e+00 7.22648686e+00 + 7.23756524e+00 7.24863215e+00 7.25968738e+00 7.27073077e+00 7.28176213e+00 + 7.29278126e+00 7.30378798e+00 7.31478212e+00 7.32576346e+00 7.33673184e+00 + 7.34768706e+00 7.35862893e+00 7.36955726e+00 7.38047187e+00 7.39137255e+00 + 7.40225913e+00 7.41313140e+00 7.42398918e+00 7.43483228e+00 7.44566050e+00 + 7.45647365e+00 7.46727153e+00 7.47805396e+00 7.48882073e+00 7.49957166e+00 + 7.51030654e+00 7.52102519e+00 7.53172740e+00 7.54241298e+00 7.55308173e+00 + 7.56373346e+00 7.57436797e+00 7.58498506e+00 7.59558453e+00 7.60616619e+00 + 7.61672984e+00 7.62727527e+00 7.63780229e+00 7.64831069e+00 7.65880029e+00 + 7.66927087e+00 7.67972224e+00 7.69015420e+00 7.70056655e+00 7.71095908e+00 + 7.72133159e+00 7.73168388e+00 7.74201575e+00 7.75232700e+00 7.76261742e+00 + 7.77288682e+00 7.78313498e+00 7.79336172e+00 7.80356681e+00 7.81375006e+00 + 7.82391127e+00 7.83405023e+00 7.84416673e+00 7.85426058e+00 7.86433157e+00 + 7.87437949e+00 7.88440415e+00 7.89440533e+00 7.90438283e+00 7.91433644e+00 + 7.92426597e+00 7.93417120e+00 7.94405193e+00 7.95390796e+00 7.96373908e+00 + 7.97354509e+00 7.98332577e+00 7.99308093e+00 8.00281035e+00 8.01251384e+00 + 8.02219119e+00 8.03184219e+00 8.04146664e+00 8.05106433e+00 8.06063505e+00 + 8.07017861e+00 8.07969479e+00 8.08918339e+00 8.09864421e+00 8.10807704e+00 + 8.11748167e+00 8.12685791e+00 8.13620553e+00 8.14552435e+00 8.15481416e+00 + 8.16407475e+00 8.17330592e+00 8.18250746e+00 8.19167916e+00 8.20082084e+00 + 8.20993228e+00 8.21901327e+00 8.22806362e+00 8.23708313e+00 8.24607158e+00 + 8.25502879e+00 8.26395453e+00 8.27284862e+00 8.28171085e+00 8.29054102e+00 + 8.29933893e+00 8.30810438e+00 8.31683717e+00 8.32553709e+00 8.33420394e+00 + 8.34283754e+00 8.35143767e+00 8.36000414e+00 8.36853676e+00 8.37703531e+00 + 8.38549961e+00 8.39392946e+00 8.40232465e+00 8.41068500e+00 8.41901031e+00 + 8.42730037e+00 8.43555501e+00 8.44377401e+00 8.45195719e+00 8.46010436e+00 + 8.46821531e+00 8.47628987e+00 8.48432782e+00 8.49232899e+00 8.50029318e+00 + 8.50822020e+00 8.51610986e+00 8.52396198e+00 8.53177635e+00 8.53955280e+00 + 8.54729113e+00 8.55499116e+00 8.56265270e+00 8.57027557e+00 8.57785958e+00 + 8.58540454e+00 8.59291028e+00 8.60037660e+00 8.60780333e+00 8.61519028e+00 + 8.62253727e+00 8.62984412e+00 8.63711066e+00 8.64433670e+00 8.65152206e+00 + 8.65866656e+00 8.66577004e+00 8.67283231e+00 8.67985319e+00 8.68683252e+00 + 8.69377012e+00 8.70066582e+00 8.70751944e+00 8.71433081e+00 8.72109977e+00 + 8.72782614e+00 8.73450975e+00 8.74115044e+00 8.74774804e+00 8.75430239e+00 + 8.76081331e+00 8.76728065e+00 8.77370424e+00 8.78008391e+00 8.78641952e+00 + 8.79271089e+00 8.79895787e+00 8.80516030e+00 8.81131803e+00 8.81743088e+00 + 8.82349872e+00 8.82952138e+00 8.83549872e+00 8.84143057e+00 8.84731680e+00 + 8.85315724e+00 8.85895175e+00 8.86470018e+00 8.87040239e+00 8.87605822e+00 + 8.88166754e+00 8.88723019e+00 8.89274604e+00 8.89821495e+00 8.90363677e+00 + 8.90901137e+00 8.91433860e+00 8.91961834e+00 8.92485044e+00 8.93003477e+00 + 8.93517119e+00 8.94025959e+00 8.94529981e+00 8.95029174e+00 8.95523525e+00 + 8.96013020e+00 8.96497648e+00 8.96977395e+00 8.97452250e+00 8.97922200e+00 + 8.98387233e+00 8.98847338e+00 8.99302501e+00 8.99752712e+00 9.00197960e+00 + 9.00638231e+00 9.01073516e+00 9.01503803e+00 9.01929081e+00 9.02349339e+00 + 9.02764567e+00 9.03174753e+00 9.03579887e+00 9.03979959e+00 9.04374958e+00 + 9.04764875e+00 9.05149699e+00 9.05529422e+00 9.05904032e+00 9.06273520e+00 + 9.06637878e+00 9.06997095e+00 9.07351163e+00 9.07700073e+00 9.08043816e+00 + 9.08382383e+00 9.08715765e+00 9.09043955e+00 9.09366944e+00 9.09684724e+00 + 9.09997287e+00 9.10304626e+00 9.10606732e+00 9.10903597e+00 9.11195216e+00 + 9.11481580e+00 9.11762683e+00 9.12038517e+00 9.12309076e+00 9.12574353e+00 + 9.12834342e+00 9.13089036e+00 9.13338430e+00 9.13582517e+00 9.13821291e+00 + 9.14054747e+00 9.14282880e+00 9.14505683e+00 9.14723152e+00 9.14935282e+00 + 9.15142067e+00 9.15343503e+00 9.15539586e+00 9.15730311e+00 9.15915673e+00 + 9.16095669e+00 9.16270294e+00 9.16439545e+00 9.16603418e+00 9.16761910e+00 + 9.16915017e+00 9.17062736e+00 9.17205064e+00 9.17341998e+00 9.17473536e+00 + 9.17599674e+00 9.17720412e+00 9.17835745e+00 9.17945673e+00 9.18050193e+00 + 9.18149304e+00 9.18243003e+00 9.18331291e+00 9.18414165e+00 9.18491623e+00 + 9.18563667e+00 9.18630293e+00 9.18691503e+00 9.18747295e+00 9.18797669e+00 + 9.18842625e+00 9.18882163e+00 9.18916283e+00 9.18944985e+00 9.18968271e+00 + 9.18986140e+00 9.18998593e+00 9.19005632e+00 9.19007257e+00 9.19003470e+00 + 9.18994273e+00 9.18979666e+00 9.18959652e+00 9.18934232e+00 9.18903409e+00 + 9.18867185e+00 9.18825562e+00 9.18778542e+00 9.18726130e+00 9.18668327e+00 + 9.18605136e+00 9.18536561e+00 9.18462604e+00 9.18383270e+00 9.18298563e+00 + 9.18208485e+00 9.18113041e+00 9.18012235e+00 9.17906071e+00 9.17794554e+00 + 9.17677688e+00 9.17555479e+00 9.17427930e+00 9.17295047e+00 9.17156835e+00 + 9.17013299e+00 9.16864446e+00 9.16710280e+00 9.16550808e+00 9.16386035e+00 + 9.16215967e+00 9.16040612e+00 9.15859974e+00 9.15674061e+00 9.15482879e+00 + 9.15286435e+00 9.15084737e+00 9.14877791e+00 9.14665604e+00 9.14448185e+00 + 9.14225540e+00 9.13997677e+00 9.13764605e+00 9.13526330e+00 9.13282862e+00 + 9.13034209e+00 9.12780378e+00 9.12521379e+00 9.12257220e+00 9.11987911e+00 + 9.11713459e+00 9.11433875e+00 9.11149167e+00 9.10859345e+00 9.10564418e+00 + 9.10264397e+00 9.09959290e+00 9.09649108e+00 9.09333860e+00 9.09013558e+00 + 9.08688211e+00 9.08357830e+00 9.08022426e+00 9.07682008e+00 9.07336589e+00 + 9.06986178e+00 9.06630788e+00 9.06270429e+00 9.05905112e+00 9.05534850e+00 + 9.05159653e+00 9.04779534e+00 9.04394504e+00 9.04004575e+00 9.03609759e+00 + 9.03210069e+00 9.02805517e+00 9.02396116e+00 9.01981877e+00 9.01562814e+00 + 9.01138939e+00 9.00710265e+00 9.00276806e+00 8.99838574e+00 8.99395583e+00 + 8.98947846e+00 8.98495376e+00 8.98038187e+00 8.97576293e+00 8.97109708e+00 + 8.96638445e+00 8.96162519e+00 8.95681943e+00 8.95196732e+00 8.94706900e+00 + 8.94212462e+00 8.93713431e+00 8.93209824e+00 8.92701653e+00 8.92188935e+00 + 8.91671684e+00 8.91149915e+00 8.90623643e+00 8.90092884e+00 8.89557652e+00 + 8.89017964e+00 8.88473834e+00 8.87925278e+00 8.87372312e+00 8.86814952e+00 + 8.86253212e+00 8.85687110e+00 8.85116662e+00 8.84541882e+00 8.83962789e+00 + 8.83379397e+00 8.82791723e+00 8.82199783e+00 8.81603595e+00 8.81003174e+00 + 8.80398538e+00 8.79789702e+00 8.79176684e+00 8.78559501e+00 8.77938169e+00 + 8.77312706e+00 8.76683129e+00 8.76049454e+00 8.75411700e+00 8.74769883e+00 + 8.74124020e+00 8.73474130e+00 8.72820229e+00 8.72162336e+00 8.71500467e+00 + 8.70834641e+00 8.70164876e+00 8.69491188e+00 8.68813596e+00 8.68132118e+00 + 8.67446772e+00 8.66757576e+00 8.66064548e+00 8.65367706e+00 8.64667068e+00 + 8.63962653e+00 8.63254478e+00 8.62542563e+00 8.61826925e+00 8.61107584e+00 + 8.60384557e+00 8.59657863e+00 8.58927521e+00 8.58193549e+00 8.57455966e+00 + 8.56714790e+00 8.55970041e+00 8.55221737e+00 8.54469898e+00 8.53714541e+00 + 8.52955686e+00 8.52193351e+00 8.51427557e+00 8.50658321e+00 8.49885663e+00 + 8.49109602e+00 8.48330156e+00 8.47547346e+00 8.46761190e+00 8.45971708e+00 + 8.45178918e+00 8.44382840e+00 8.43583493e+00 8.42780897e+00 8.41975070e+00 + 8.41166033e+00 8.40353804e+00 8.39538403e+00 8.38719849e+00 8.37898162e+00 + 8.37073361e+00 8.36245465e+00 8.35414495e+00 8.34580469e+00 8.33743407e+00 + 8.32903329e+00 8.32060254e+00 8.31214201e+00 8.30365190e+00 8.29513241e+00 + 8.28658374e+00 8.27800607e+00 8.26939960e+00 8.26076454e+00 8.25210107e+00 + 8.24340939e+00 8.23468970e+00 8.22594219e+00 8.21716706e+00 8.20836451e+00 + 8.19953473e+00 8.19067791e+00 8.18179426e+00 8.17288396e+00 8.16394722e+00 + 8.15498424e+00 8.14599519e+00 8.13698029e+00 8.12793973e+00 8.11887370e+00 + 8.10978240e+00 8.10066603e+00 8.09152477e+00 8.08235883e+00 8.07316840e+00 + 8.06395367e+00 8.05471485e+00 8.04545211e+00 8.03616567e+00 8.02685571e+00 + 8.01752243e+00 8.00816601e+00 7.99878667e+00 7.98938458e+00 7.97995994e+00 + 7.97051296e+00 7.96104381e+00 7.95155269e+00 7.94203979e+00 7.93250532e+00 + 7.92294945e+00 7.91337238e+00 7.90377431e+00 7.89415542e+00 7.88451590e+00 + 7.87485596e+00 7.86517577e+00 7.85547552e+00 7.84575542e+00 7.83601564e+00 + 7.82625638e+00 7.81647783e+00 7.80668017e+00 7.79686359e+00 7.78702829e+00 + 7.77717445e+00 7.76730225e+00 7.75741189e+00 7.74750355e+00 7.73757742e+00 + 7.72763369e+00 7.71767253e+00 7.70769414e+00 7.69769870e+00 7.68768640e+00 + 7.67765742e+00 7.66761194e+00 7.65755015e+00 7.64747223e+00 7.63737837e+00 + 7.62726874e+00 7.61714352e+00 7.60700291e+00 7.59684708e+00 7.58667621e+00 + 7.57649048e+00 7.56629007e+00 7.55607516e+00 7.54584593e+00 7.53560256e+00 + 7.52534522e+00 7.51507410e+00 7.50478936e+00 7.49449120e+00 7.48417977e+00 + 7.47385527e+00 7.46351786e+00 7.45316771e+00 7.44280501e+00 7.43242993e+00 + 7.42204263e+00 7.41164329e+00 7.40123209e+00 7.39080920e+00 7.38037478e+00 + 7.36992901e+00 7.35947205e+00 7.34900408e+00 7.33852527e+00 7.32803578e+00 + 7.31753578e+00 7.30702545e+00 7.29650493e+00 7.28597442e+00 7.27543405e+00 + 7.26488402e+00 7.25432447e+00 7.24375557e+00 7.23317749e+00 7.22259039e+00 + 7.21199442e+00 7.20138976e+00 7.19077657e+00 7.18015500e+00 7.16952521e+00 + 7.15888737e+00 7.14824163e+00 7.13758815e+00 7.12692709e+00 7.11625861e+00 + 7.10558286e+00 7.09490000e+00 7.08421018e+00 7.07351356e+00 7.06281029e+00 + 7.05210053e+00 7.04138443e+00 7.03066215e+00 7.01993382e+00 7.00919961e+00 + 6.99845967e+00 6.98771414e+00 6.97696317e+00 6.96620692e+00 6.95544553e+00 + 6.94467914e+00 6.93390791e+00 6.92313198e+00 6.91235150e+00 6.90156661e+00 + 6.89077746e+00 6.87998418e+00 6.86918693e+00 6.85838585e+00 6.84758107e+00 + 6.83677273e+00 6.82596099e+00 6.81514597e+00 6.80432782e+00 6.79350668e+00 + 6.78268268e+00 6.77185596e+00 6.76102665e+00 6.75019490e+00 6.73936084e+00 + 6.72852461e+00 6.71768633e+00 6.70684614e+00 6.69600417e+00 6.68516056e+00 + 6.67431544e+00 6.66346894e+00 6.65262118e+00 6.64177230e+00 6.63092243e+00 + 6.62007169e+00 6.60922022e+00 6.59836813e+00 6.58751556e+00 6.57666263e+00 + 6.56580946e+00 6.55495619e+00 6.54410293e+00 6.53324981e+00 6.52239695e+00 + 6.51154446e+00 6.50069248e+00 6.48984112e+00 6.47899051e+00 6.46814075e+00 + 6.45729198e+00 6.44644430e+00 6.43559784e+00 6.42475271e+00 6.41390903e+00 + 6.40306690e+00 6.39222646e+00 6.38138781e+00 6.37055106e+00 6.35971632e+00 + 6.34888372e+00 6.33805335e+00 6.32722534e+00 6.31639979e+00 6.30557680e+00 + 6.29475650e+00 6.28393898e+00 6.27312436e+00 6.26231274e+00 6.25150422e+00 + 6.24069892e+00 6.22989694e+00 6.21909838e+00 6.20830334e+00 6.19751193e+00 + 6.18672426e+00 6.17594041e+00 6.16516051e+00 6.15438463e+00 6.14361289e+00 + 6.13284538e+00 6.12208221e+00 6.11132347e+00 6.10056925e+00 6.08981965e+00 + 6.07907478e+00 6.06833472e+00 6.05759958e+00 6.04686943e+00 6.03614439e+00 + 6.02542453e+00 6.01470996e+00 6.00400077e+00 5.99329704e+00 5.98259887e+00 + 5.97190634e+00 5.96121955e+00 5.95053859e+00 5.93986353e+00 5.92919448e+00 + 5.91853152e+00 5.90787472e+00 5.89722419e+00 5.88658000e+00 5.87594224e+00 + 5.86531099e+00 5.85468634e+00 5.84406836e+00 5.83345715e+00 5.82285277e+00 + 5.81225532e+00 5.80166487e+00 5.79108151e+00 5.78050530e+00 5.76993634e+00 + 5.75937469e+00 5.74882044e+00 5.73827366e+00 5.72773443e+00 5.71720283e+00 + 5.70667892e+00 5.69616279e+00 5.68565450e+00 5.67515414e+00 5.66466177e+00 + 5.65417746e+00 5.64370130e+00 5.63323334e+00 5.62277366e+00 5.61232233e+00 + 5.60187942e+00 5.59144500e+00 5.58101913e+00 5.57060189e+00 5.56019334e+00 + 5.54979355e+00 5.53940258e+00 5.52902050e+00 5.51864737e+00 5.50828327e+00 + 5.49792824e+00 5.48758237e+00 5.47724570e+00 5.46691830e+00 5.45660024e+00 + 5.44629158e+00 5.43599237e+00 5.42570267e+00 5.41542255e+00 5.40515207e+00 + 5.39489128e+00 5.38464024e+00 5.37439902e+00 5.36416766e+00 5.35394622e+00 + 5.34373477e+00 5.33353335e+00 5.32334202e+00 5.31316083e+00 5.30298985e+00 + 5.29282912e+00 5.28267869e+00 5.27253863e+00 5.26240898e+00 5.25228979e+00 + 5.24218111e+00 5.23208300e+00 5.22199550e+00 5.21191867e+00 5.20185256e+00 + 5.19179721e+00 5.18175267e+00 5.17171899e+00 5.16169621e+00 5.15168439e+00 + 5.14168357e+00 5.13169380e+00 5.12171512e+00 5.11174758e+00 5.10179121e+00 + 5.09184608e+00 5.08191221e+00 5.07198966e+00 5.06207846e+00 5.05217866e+00 + 5.04229030e+00 5.03241343e+00 5.02254807e+00 5.01269428e+00 5.00285209e+00 + 4.99302155e+00 4.98320269e+00 4.97339555e+00 4.96360017e+00 4.95381659e+00 + 4.94404484e+00 4.93428497e+00 4.92453700e+00 4.91480098e+00 4.90507695e+00 + 4.89536493e+00 4.88566496e+00 4.87597708e+00 4.86630132e+00 4.85663772e+00 + 4.84698631e+00 4.83734712e+00 4.82772018e+00 4.81810553e+00 4.80850320e+00 + 4.79891322e+00 4.78933562e+00 4.77977044e+00 4.77021769e+00 4.76067742e+00 + 4.75114965e+00 4.74163441e+00 4.73213174e+00 4.72264165e+00 4.71316418e+00 + 4.70369935e+00 4.69424719e+00 4.68480774e+00 4.67538100e+00 4.66596702e+00 + 4.65656582e+00 4.64717742e+00 4.63780185e+00 4.62843913e+00 4.61908929e+00 + 4.60975235e+00 4.60042833e+00 4.59111726e+00 4.58181917e+00 4.57253407e+00 + 4.56326198e+00 4.55400294e+00 4.54475695e+00 4.53552405e+00 4.52630425e+00 + 4.51709757e+00 4.50790404e+00 4.49872367e+00 4.48955648e+00 4.48040250e+00 + 4.47126174e+00 4.46213422e+00 4.45301995e+00 4.44391897e+00 4.43483128e+00 + 4.42575690e+00 4.41669585e+00 4.40764815e+00 4.39861381e+00 4.38959285e+00 + 4.38058529e+00 4.37159113e+00 4.36261041e+00 4.35364312e+00 4.34468929e+00 + 4.33574893e+00 4.32682205e+00 4.31790867e+00 4.30900881e+00 4.30012247e+00 + 4.29124966e+00 4.28239041e+00 4.27354472e+00 4.26471261e+00 4.25589408e+00 + 4.24708916e+00 4.23829784e+00 4.22952014e+00 4.22075608e+00 4.21200566e+00 + 4.20326889e+00 4.19454579e+00 4.18583635e+00 4.17714060e+00 4.16845854e+00 + 4.15979019e+00 4.15113553e+00 4.14249460e+00 4.13386739e+00 4.12525392e+00 + 4.11665419e+00 4.10806820e+00 4.09949597e+00 4.09093751e+00 4.08239281e+00 + 4.07386189e+00 4.06534475e+00 4.05684139e+00 4.04835184e+00 4.03987608e+00 + 4.03141412e+00 4.02296598e+00 4.01453165e+00 4.00611113e+00 3.99770444e+00 + 3.98931158e+00 3.98093255e+00 3.97256735e+00 3.96421600e+00 3.95587848e+00 + 3.94755481e+00 3.93924499e+00 3.93094901e+00 3.92266689e+00 3.91439862e+00 + 3.90614421e+00 3.89790366e+00 3.88967697e+00 3.88146413e+00 3.87326516e+00 + 3.86508006e+00 3.85690881e+00 3.84875144e+00 3.84060792e+00 3.83247827e+00 + 3.82436249e+00 3.81626057e+00 3.80817252e+00 3.80009833e+00 3.79203800e+00 + 3.78399153e+00 3.77595892e+00 3.76794018e+00 3.75993529e+00 3.75194425e+00 + 3.74396707e+00 3.73600375e+00 3.72805427e+00 3.72011864e+00 3.71219685e+00 + 3.70428890e+00 3.69639480e+00 3.68851453e+00 3.68064809e+00 3.67279548e+00 + 3.66495669e+00 3.65713173e+00 3.64932058e+00 3.64152325e+00 3.63373972e+00 + 3.62597000e+00 3.61821408e+00 3.61047196e+00 3.60274362e+00 3.59502907e+00 + 3.58732830e+00 3.57964131e+00 3.57196808e+00 3.56430861e+00 3.55666291e+00 + 3.54903095e+00 3.54141274e+00 3.53380827e+00 3.52621753e+00 3.51864051e+00 + 3.51107722e+00 3.50352763e+00 3.49599176e+00 3.48846958e+00 3.48096109e+00 + 3.47346628e+00 3.46598515e+00 3.45851769e+00 3.45106389e+00 3.44362374e+00 + 3.43619724e+00 3.42878437e+00 3.42138513e+00 3.41399951e+00 3.40662750e+00 + 3.39926909e+00 3.39192428e+00 3.38459305e+00 3.37727539e+00 3.36997131e+00 + 3.36268077e+00 3.35540379e+00 3.34814034e+00 3.34089043e+00 3.33365403e+00 + 3.32643114e+00 3.31922175e+00 3.31202584e+00 3.30484342e+00 3.29767446e+00 + 3.29051896e+00 3.28337691e+00 3.27624829e+00 3.26913310e+00 3.26203132e+00 + 3.25494295e+00 3.24786797e+00 3.24080638e+00 3.23375815e+00 3.22672328e+00 + 3.21970176e+00 3.21269357e+00 3.20569871e+00 3.19871717e+00 3.19174892e+00 + 3.18479396e+00 3.17785228e+00 3.17092386e+00 3.16400870e+00 3.15710677e+00 + 3.15021808e+00 3.14334260e+00 3.13648032e+00 3.12963123e+00 3.12279532e+00 + 3.11597257e+00 3.10916298e+00 3.10236652e+00 3.09558319e+00 3.08881297e+00 + 3.08205585e+00 3.07531182e+00 3.06858086e+00 3.06186296e+00 3.05515810e+00 + 3.04846628e+00 3.04178747e+00 3.03512167e+00 3.02846886e+00 3.02182902e+00 + 3.01520215e+00 3.00858823e+00 3.00198724e+00 2.99539917e+00 2.98882400e+00 + 2.98226173e+00 2.97571234e+00 2.96917581e+00 2.96265212e+00 2.95614127e+00 + 2.94964324e+00 2.94315802e+00 2.93668558e+00 2.93022592e+00 2.92377902e+00 + 2.91734486e+00 2.91092343e+00 2.90451471e+00 2.89811870e+00 2.89173537e+00 + 2.88536471e+00 2.87900670e+00 2.87266133e+00 2.86632858e+00 2.86000844e+00 + 2.85370090e+00 2.84740593e+00 2.84112351e+00 2.83485365e+00 2.82859631e+00 + 2.82235149e+00 2.81611916e+00 2.80989931e+00 2.80369193e+00 2.79749700e+00 + 2.79131451e+00 2.78514443e+00 2.77898675e+00 2.77284146e+00 2.76670853e+00 + 2.76058796e+00 2.75447972e+00 2.74838381e+00 2.74230020e+00 2.73622887e+00 + 2.73016982e+00 2.72412302e+00 2.71808845e+00 2.71206611e+00 2.70605597e+00 + 2.70005802e+00 2.69407224e+00 2.68809862e+00 2.68213713e+00 2.67618776e+00 + 2.67025050e+00 2.66432532e+00 2.65841221e+00 2.65251116e+00 2.64662214e+00 + 2.64074514e+00 2.63488014e+00 2.62902713e+00 2.62318608e+00 2.61735698e+00 + 2.61153982e+00 2.60573457e+00 2.59994122e+00 2.59415976e+00 2.58839016e+00 + 2.58263240e+00 2.57688647e+00 2.57115236e+00 2.56543004e+00 2.55971950e+00 + 2.55402071e+00 2.54833367e+00 2.54265836e+00 2.53699475e+00 2.53134283e+00 + 2.52570258e+00 2.52007399e+00 2.51445704e+00 2.50885170e+00 2.50325797e+00 + 2.49767582e+00 2.49210523e+00 2.48654620e+00 2.48099869e+00 2.47546270e+00 + 2.46993821e+00 2.46442519e+00 2.45892363e+00 2.45343351e+00 2.44795481e+00 + 2.44248753e+00 2.43703163e+00 2.43158710e+00 2.42615392e+00 2.42073208e+00 + 2.41532155e+00 2.40992232e+00 2.40453438e+00 2.39915769e+00 2.39379225e+00 + 2.38843804e+00 2.38309504e+00 2.37776322e+00 2.37244258e+00 2.36713309e+00 + 2.36183474e+00 2.35654751e+00 2.35127138e+00 2.34600633e+00 2.34075234e+00 + 2.33550940e+00 2.33027749e+00 2.32505659e+00 2.31984668e+00 2.31464774e+00 + 2.30945976e+00 2.30428272e+00 2.29911659e+00 2.29396137e+00 2.28881702e+00 + 2.28368355e+00 2.27856091e+00 2.27344911e+00 2.26834812e+00 2.26325792e+00 + 2.25817849e+00 2.25310982e+00 2.24805188e+00 2.24300466e+00 2.23796815e+00 + 2.23294231e+00 2.22792715e+00 2.22292262e+00 2.21792873e+00 2.21294544e+00 + 2.20797275e+00 2.20301063e+00 2.19805906e+00 2.19311803e+00 2.18818752e+00 + 2.18326751e+00 2.17835798e+00 2.17345892e+00 2.16857030e+00 2.16369211e+00 + 2.15882433e+00 2.15396694e+00 2.14911992e+00 2.14428325e+00 2.13945693e+00 + 2.13464092e+00 2.12983521e+00 2.12503978e+00 2.12025462e+00 2.11547970e+00 + 2.11071501e+00 2.10596053e+00 2.10121624e+00 2.09648213e+00 2.09175816e+00 + 2.08704434e+00 2.08234063e+00 2.07764702e+00 2.07296350e+00 2.06829004e+00 + 2.06362662e+00 2.05897323e+00 2.05432985e+00 2.04969647e+00 2.04507305e+00 + 2.04045960e+00 2.03585608e+00 2.03126247e+00 2.02667877e+00 2.02210496e+00 + 2.01754101e+00 2.01298690e+00 2.00844262e+00 2.00390816e+00 1.99938349e+00 + 1.99486859e+00 1.99036345e+00 1.98586805e+00 1.98138237e+00 1.97690639e+00 + 1.97244010e+00 1.96798348e+00 1.96353650e+00 1.95909916e+00 1.95467143e+00 + 1.95025330e+00 1.94584474e+00 1.94144574e+00 1.93705629e+00 1.93267636e+00 + 1.92830594e+00 1.92394500e+00 1.91959354e+00 1.91525153e+00 1.91091895e+00 + 1.90659579e+00 1.90228203e+00 1.89797766e+00 1.89368264e+00 1.88939698e+00 + 1.88512064e+00 1.88085361e+00 1.87659588e+00 1.87234743e+00 1.86810823e+00 + 1.86387827e+00 1.85965754e+00 1.85544601e+00 1.85124367e+00 1.84705050e+00 + 1.84286648e+00 1.83869160e+00 1.83452583e+00 1.83036917e+00 1.82622159e+00 + 1.82208307e+00 1.81795360e+00 1.81383316e+00 1.80972174e+00 1.80561931e+00 + 1.80152586e+00 1.79744137e+00 1.79336582e+00 1.78929920e+00 1.78524149e+00 + 1.78119267e+00 1.77715272e+00 1.77312163e+00 1.76909939e+00 1.76508596e+00 + 1.76108134e+00 1.75708551e+00 1.75309844e+00 1.74912014e+00 1.74515057e+00 + 1.74118972e+00 1.73723757e+00 1.73329410e+00 1.72935931e+00 1.72543317e+00 + 1.72151566e+00 1.71760676e+00 1.71370647e+00 1.70981477e+00 1.70593162e+00 + 1.70205703e+00 1.69819097e+00 1.69433343e+00 1.69048438e+00 1.68664382e+00 + 1.68281172e+00 1.67898807e+00 1.67517286e+00 1.67136605e+00 1.66756765e+00 + 1.66377762e+00 1.65999597e+00 1.65622265e+00 1.65245767e+00 1.64870101e+00 + 1.64495264e+00 1.64121256e+00 1.63748074e+00 1.63375716e+00 1.63004182e+00 + 1.62633470e+00 1.62263577e+00 1.61894502e+00 1.61526245e+00 1.61158802e+00 + 1.60792172e+00 1.60426354e+00 1.60061346e+00 1.59697146e+00 1.59333753e+00 + 1.58971165e+00 1.58609381e+00 1.58248399e+00 1.57888216e+00 1.57528833e+00 + 1.57170246e+00 1.56812455e+00 1.56455458e+00 1.56099252e+00 1.55743837e+00 + 1.55389211e+00 1.55035373e+00 1.54682320e+00 1.54330051e+00 1.53978565e+00 + 1.53627860e+00 1.53277934e+00 1.52928786e+00 1.52580413e+00 1.52232816e+00 + 1.51885991e+00 1.51539938e+00 1.51194655e+00 1.50850139e+00 1.50506391e+00 + 1.50163407e+00 1.49821187e+00 1.49479729e+00 1.49139031e+00 1.48799092e+00 + 1.48459910e+00 1.48121484e+00 1.47783812e+00 1.47446893e+00 1.47110724e+00 + 1.46775305e+00 1.46440634e+00 1.46106709e+00 1.45773529e+00 1.45441092e+00 + 1.45109397e+00 1.44778442e+00 1.44448226e+00 1.44118747e+00 1.43790003e+00 + 1.43461994e+00 1.43134717e+00 1.42808171e+00 1.42482354e+00 1.42157265e+00 + 1.41832903e+00 1.41509266e+00 1.41186352e+00 1.40864160e+00 1.40542689e+00 + 1.40221936e+00 1.39901901e+00 1.39582581e+00 1.39263976e+00 1.38946084e+00 + 1.38628904e+00 1.38312433e+00 1.37996670e+00 1.37681615e+00 1.37367265e+00 + 1.37053619e+00 1.36740676e+00 1.36428433e+00 1.36116890e+00 1.35806045e+00 + 1.35495897e+00 1.35186444e+00 1.34877684e+00 1.34569617e+00 1.34262240e+00 + 1.33955553e+00 1.33649554e+00 1.33344241e+00 1.33039613e+00 1.32735668e+00 + 1.32432406e+00 1.32129824e+00 1.31827921e+00 1.31526696e+00 1.31226147e+00 + 1.30926273e+00 1.30627073e+00 1.30328544e+00 1.30030687e+00 1.29733498e+00 + 1.29436977e+00 1.29141122e+00 1.28845932e+00 1.28551406e+00 1.28257542e+00 + 1.27964338e+00 1.27671794e+00 1.27379907e+00 1.27088677e+00 1.26798102e+00 + 1.26508181e+00 1.26218912e+00 1.25930293e+00 1.25642325e+00 1.25355004e+00 + 1.25068330e+00 1.24782302e+00 1.24496917e+00 1.24212175e+00 1.23928074e+00 + 1.23644613e+00 1.23361790e+00 1.23079605e+00 1.22798055e+00 1.22517139e+00 + 1.22236857e+00 1.21957206e+00 1.21678186e+00 1.21399794e+00 1.21122030e+00 + 1.20844892e+00 1.20568379e+00 1.20292490e+00 1.20017223e+00 1.19742577e+00 + 1.19468550e+00 1.19195141e+00 1.18922350e+00 1.18650174e+00 1.18378612e+00 + 1.18107663e+00 1.17837325e+00 1.17567598e+00 1.17298479e+00 1.17029969e+00 + 1.16762064e+00 1.16492387e+00 1.16213751e+00 1.15925731e+00 1.15628397e+00 + 1.15321822e+00 1.15006080e+00 1.14681247e+00 1.14347399e+00 1.14004614e+00 + 1.13652972e+00 1.13292553e+00 1.12923439e+00 1.12545713e+00 1.12159460e+00 + 1.11764764e+00 1.11361712e+00 1.10950393e+00 1.10530894e+00 1.10103307e+00 + 1.09667722e+00 1.09224230e+00 1.08772926e+00 1.08313904e+00 1.07847259e+00 + 1.07373086e+00 1.06891483e+00 1.06402548e+00 1.05906380e+00 1.05403079e+00 + 1.04892746e+00 1.04375481e+00 1.03851388e+00 1.03320569e+00 1.02783129e+00 + 1.02239172e+00 1.01688803e+00 1.01132129e+00 1.00569257e+00 1.00000294e+00 + 9.94253473e-01 9.88445268e-01 9.82579415e-01 9.76657013e-01 9.70679167e-01 + 9.64646985e-01 9.58561585e-01 9.52424084e-01 9.46235609e-01 9.39997288e-01 + 9.33710253e-01 9.27375643e-01 9.20994598e-01 9.14568262e-01 9.08097783e-01 + 9.01584312e-01 8.95029002e-01 8.88433010e-01 8.81797494e-01 8.75123616e-01 + 8.68412537e-01 8.61665423e-01 8.54883440e-01 8.48067755e-01 8.41219538e-01 + 8.34339956e-01 8.27430181e-01 8.20491384e-01 8.13524734e-01 8.06531404e-01 + 7.99512564e-01 7.92469384e-01 7.85403035e-01 7.78314685e-01 7.71205503e-01 + 7.64076656e-01 7.56929308e-01 7.49764624e-01 7.42583767e-01 7.35387895e-01 + 7.28178168e-01 7.20955740e-01 7.13721765e-01 7.06477392e-01 6.99223769e-01 + 6.91962040e-01 6.84693345e-01 6.77418822e-01 6.70139603e-01 6.62856818e-01 + 6.55571593e-01 6.48285047e-01 6.40998299e-01 6.33712459e-01 6.26428635e-01 + 6.19147929e-01 6.11871437e-01 6.04600250e-01 5.97335456e-01 5.90078134e-01 + 5.82829357e-01 5.75590196e-01 5.68361711e-01 5.61144959e-01 5.53940989e-01 + 5.46750843e-01 5.39575557e-01 5.32416160e-01 5.25273674e-01 5.18149112e-01 + 5.11043482e-01 5.03957784e-01 4.96893007e-01 4.89850137e-01 4.82830149e-01 + 4.75834011e-01 4.68862681e-01 4.61917111e-01 4.54998243e-01 4.48107011e-01 + 4.41244339e-01 4.34411143e-01 4.27608330e-01 4.20836798e-01 4.14097435e-01 + 4.07391119e-01 4.00718721e-01 3.94081100e-01 3.87479106e-01 3.80913579e-01 + 3.74385350e-01 3.67895238e-01 3.61444053e-01 3.55032596e-01 3.48661655e-01 + 3.42332009e-01 3.36044427e-01 3.29799666e-01 3.23598473e-01 3.17441585e-01 + 3.11329726e-01 3.05263611e-01 2.99243943e-01 2.93271414e-01 2.87346706e-01 + 2.81470487e-01 2.75643416e-01 2.69866139e-01 2.64139293e-01 2.58463501e-01 + 2.52839376e-01 2.47267517e-01 2.41748515e-01 2.36282946e-01 2.30871375e-01 + 2.25514356e-01 2.20212432e-01 2.14966130e-01 2.09775970e-01 2.04642457e-01 + 1.99566084e-01 1.94547333e-01 1.89586674e-01 1.84684564e-01 1.79841448e-01 + 1.75057759e-01 1.70333918e-01 1.65670332e-01 1.61067399e-01 1.56525503e-01 + 1.52045014e-01 1.47626293e-01 1.43269686e-01 1.38975529e-01 1.34744143e-01 + 1.30575839e-01 1.26470915e-01 1.22429656e-01 1.18452335e-01 1.14539213e-01 + 1.10690539e-01 1.06906550e-01 1.03187468e-01 9.95335069e-02 9.59448653e-02 + 9.24217306e-02 8.89642782e-02 8.55726710e-02 8.22470599e-02 7.89875836e-02 + 7.57943689e-02 7.26675303e-02 6.96071705e-02 6.66133801e-02 6.36862378e-02 + 6.08258104e-02 5.80321528e-02 5.53053081e-02 5.26453077e-02 5.00521712e-02 + 4.75259065e-02 4.50665099e-02 4.26739664e-02 4.03482489e-02 3.80893195e-02 + 3.58971284e-02 3.37716148e-02 3.17127063e-02 2.97203197e-02 2.77943602e-02 + 2.59347223e-02 2.41412894e-02 2.24139337e-02 2.07525169e-02 1.91568897e-02 + 1.76268922e-02 1.61623537e-02 1.47630931e-02 1.34289187e-02 1.21596286e-02 + 1.09550102e-02 9.81484109e-03 8.73888848e-03 7.72690959e-03 6.77865166e-03 + 5.89385204e-03 5.07223831e-03 4.31352836e-03 3.61743045e-03 2.98364337e-03 + 2.41185648e-03 1.90174984e-03 1.45299430e-03 1.06525159e-03 7.38174448e-04 + 4.71406686e-04 2.64583325e-04 1.17330685e-04 2.92664954e-05 0.00000000e+00 + 1.14636847e+01 1.14637147e+01 1.15240318e+01 1.15846601e+01 1.16456011e+01 + 1.17068565e+01 1.17684277e+01 1.18303164e+01 1.18925239e+01 1.19550520e+01 + 1.20179021e+01 1.20810759e+01 1.21445749e+01 1.22084007e+01 1.22725549e+01 + 1.23370391e+01 1.24018548e+01 1.24670037e+01 1.25324875e+01 1.25983076e+01 + 1.26644659e+01 1.27309638e+01 1.27978031e+01 1.28649853e+01 1.29325122e+01 + 1.30003854e+01 1.30686065e+01 1.31371773e+01 1.32060994e+01 1.32753745e+01 + 1.33450043e+01 1.34149905e+01 1.34853349e+01 1.35560390e+01 1.36271047e+01 + 1.36985337e+01 1.37703277e+01 1.38424884e+01 1.39150176e+01 1.39879171e+01 + 1.40611886e+01 1.41348338e+01 1.42088546e+01 1.42832528e+01 1.43580300e+01 + 1.44331882e+01 1.45087290e+01 1.45846544e+01 1.46609661e+01 1.47376660e+01 + 1.48147558e+01 1.48922374e+01 1.49701127e+01 1.50483835e+01 1.51270516e+01 + 1.52061190e+01 1.52855874e+01 1.53654587e+01 1.54457349e+01 1.55264178e+01 + 1.56075093e+01 1.56890113e+01 1.57709257e+01 1.58532545e+01 1.59359994e+01 + 1.60191626e+01 1.61027458e+01 1.61867511e+01 1.62711803e+01 1.63560355e+01 + 1.64413185e+01 1.65270315e+01 1.66131762e+01 1.66997547e+01 1.67867690e+01 + 1.68742211e+01 1.69621130e+01 1.70504466e+01 1.71392240e+01 1.72284472e+01 + 1.73181182e+01 1.74082391e+01 1.74988118e+01 1.75898384e+01 1.76813210e+01 + 1.77732616e+01 1.78656623e+01 1.79585251e+01 1.80518522e+01 1.81456455e+01 + 1.82399071e+01 1.83346392e+01 1.84298439e+01 1.85255232e+01 1.86216793e+01 + 1.87183142e+01 1.88154301e+01 1.89130291e+01 1.90111134e+01 1.91096850e+01 + 1.92087462e+01 1.93082990e+01 1.94083456e+01 1.95088881e+01 1.96099288e+01 + 1.97114699e+01 1.98135133e+01 1.99160615e+01 2.00191164e+01 2.01226804e+01 + 2.02267556e+01 2.03313443e+01 2.04364485e+01 2.05420707e+01 2.06482128e+01 + 2.07548773e+01 2.08620662e+01 2.09697819e+01 2.10780265e+01 2.11868023e+01 + 2.12961116e+01 2.14059566e+01 2.15163395e+01 2.16272627e+01 2.17387283e+01 + 2.18507387e+01 2.19632961e+01 2.20764027e+01 2.21900610e+01 2.23042731e+01 + 2.24190413e+01 2.25343679e+01 2.26502553e+01 2.27667057e+01 2.28837215e+01 + 2.30013049e+01 2.31194582e+01 2.32381838e+01 2.33574839e+01 2.34773610e+01 + 2.35978172e+01 2.37188550e+01 2.38404767e+01 2.39626846e+01 2.40854811e+01 + 2.42088684e+01 2.43328489e+01 2.44574250e+01 2.45825991e+01 2.47083733e+01 + 2.48347502e+01 2.49617321e+01 2.50893212e+01 2.52175201e+01 2.53463309e+01 + 2.54757562e+01 2.56057981e+01 2.57364592e+01 2.58677418e+01 2.59996482e+01 + 2.61321808e+01 2.62653420e+01 2.63991341e+01 2.65335596e+01 2.66686207e+01 + 2.68043198e+01 2.69406594e+01 2.70776417e+01 2.72152692e+01 2.73535442e+01 + 2.74924691e+01 2.76320462e+01 2.77722780e+01 2.79131668e+01 2.80547149e+01 + 2.81969248e+01 2.83397987e+01 2.84833391e+01 2.86275483e+01 2.87724286e+01 + 2.89179825e+01 2.90642123e+01 2.92111203e+01 2.93587088e+01 2.95069803e+01 + 2.96559371e+01 2.98055815e+01 2.99559159e+01 3.01069425e+01 3.02586638e+01 + 3.04110820e+01 3.05641996e+01 3.07180187e+01 3.08725417e+01 3.10277709e+01 + 3.11837087e+01 3.13403573e+01 3.14977190e+01 3.16557962e+01 3.18145911e+01 + 3.19741059e+01 3.21343430e+01 3.22953047e+01 3.24569931e+01 3.26194106e+01 + 3.27825594e+01 3.29464417e+01 3.31110597e+01 3.32764158e+01 3.34425121e+01 + 3.36093508e+01 3.37769341e+01 3.39452642e+01 3.41143433e+01 3.42841736e+01 + 3.44547572e+01 3.46260964e+01 3.47981931e+01 3.49710496e+01 3.51446681e+01 + 3.53190505e+01 3.54941990e+01 3.56701158e+01 3.58468028e+01 3.60242622e+01 + 3.62024960e+01 3.63815062e+01 3.65612949e+01 3.67418641e+01 3.69232158e+01 + 3.71053520e+01 3.72882746e+01 3.74719857e+01 3.76564872e+01 3.78417809e+01 + 3.80278689e+01 3.82147530e+01 3.84024351e+01 3.85909171e+01 3.87802007e+01 + 3.89702880e+01 3.91611806e+01 3.93528804e+01 3.95453892e+01 3.97387086e+01 + 3.99328406e+01 4.01277867e+01 4.03235487e+01 4.05201283e+01 4.07175271e+01 + 4.09157468e+01 4.11147890e+01 4.13146553e+01 4.15153472e+01 4.17168665e+01 + 4.19192145e+01 4.21223928e+01 4.23264028e+01 4.25312461e+01 4.27369241e+01 + 4.29434382e+01 4.31507898e+01 4.33589802e+01 4.35680108e+01 4.37778828e+01 + 4.39885977e+01 4.42001566e+01 4.44125608e+01 4.46258114e+01 4.48399097e+01 + 4.50548568e+01 4.52706538e+01 4.54873017e+01 4.57048017e+01 4.59231548e+01 + 4.61423619e+01 4.63624241e+01 4.65833421e+01 4.68051170e+01 4.70277497e+01 + 4.72512408e+01 4.74755912e+01 4.77008018e+01 4.79268731e+01 4.81538059e+01 + 4.83816009e+01 4.86102586e+01 4.88397796e+01 4.90701646e+01 4.93014139e+01 + 4.95335280e+01 4.97665074e+01 5.00003524e+01 5.02350634e+01 5.04706407e+01 + 5.07070845e+01 5.09443951e+01 5.11825727e+01 5.14216173e+01 5.16615291e+01 + 5.19023081e+01 5.21439543e+01 5.23864676e+01 5.26298480e+01 5.28740954e+01 + 5.31192095e+01 5.33651902e+01 5.36120371e+01 5.38597499e+01 5.41083282e+01 + 5.43577717e+01 5.46080798e+01 5.48592520e+01 5.51112877e+01 5.53641863e+01 + 5.56179471e+01 5.58725694e+01 5.61280524e+01 5.63843952e+01 5.66415969e+01 + 5.68996567e+01 5.71585734e+01 5.74183459e+01 5.76789733e+01 5.79404543e+01 + 5.82027876e+01 5.84659719e+01 5.87300059e+01 5.89948882e+01 5.92606173e+01 + 5.95271916e+01 5.97946095e+01 6.00628694e+01 6.03319696e+01 6.06019081e+01 + 6.08726832e+01 6.11442930e+01 6.14167355e+01 6.16900085e+01 6.19641100e+01 + 6.22390378e+01 6.25147896e+01 6.27913631e+01 6.30687559e+01 6.33469656e+01 + 6.36259895e+01 6.39058251e+01 6.41864697e+01 6.44679206e+01 6.47501749e+01 + 6.50332297e+01 6.53170821e+01 6.56017290e+01 6.58871673e+01 6.61733938e+01 + 6.64604052e+01 6.67481982e+01 6.70367693e+01 6.73261150e+01 6.76162318e+01 + 6.79071160e+01 6.81987638e+01 6.84911715e+01 6.87843350e+01 6.90782505e+01 + 6.93729139e+01 6.96683210e+01 6.99644676e+01 7.02613493e+01 7.05589619e+01 + 7.08573007e+01 7.11563612e+01 7.14561389e+01 7.17566288e+01 7.20578263e+01 + 7.23597263e+01 7.26623240e+01 7.29656142e+01 7.32695917e+01 7.35742513e+01 + 7.38795876e+01 7.41855952e+01 7.44922686e+01 7.47996021e+01 7.51075900e+01 + 7.54162265e+01 7.57255057e+01 7.60354217e+01 7.63459683e+01 7.66571394e+01 + 7.69689287e+01 7.72813299e+01 7.75943364e+01 7.79079418e+01 7.82221395e+01 + 7.85369226e+01 7.88522843e+01 7.91682178e+01 7.94847160e+01 7.98017717e+01 + 8.01193779e+01 8.04375271e+01 8.07562119e+01 8.10754249e+01 8.13951584e+01 + 8.17154048e+01 8.20361563e+01 8.23574049e+01 8.26791427e+01 8.30013615e+01 + 8.33240533e+01 8.36472097e+01 8.39708223e+01 8.42948827e+01 8.46193822e+01 + 8.49443123e+01 8.52696640e+01 8.55954286e+01 8.59215971e+01 8.62481604e+01 + 8.65751093e+01 8.69024346e+01 8.72301269e+01 8.75581767e+01 8.78865745e+01 + 8.82153106e+01 8.85443752e+01 8.88737586e+01 8.92034507e+01 8.95334414e+01 + 8.98637208e+01 9.01942784e+01 9.05251039e+01 9.08561870e+01 9.11875170e+01 + 9.15190834e+01 9.18508754e+01 9.21828822e+01 9.25150929e+01 9.28474964e+01 + 9.31800817e+01 9.35128376e+01 9.38457526e+01 9.41788156e+01 9.45120150e+01 + 9.48453391e+01 9.51787764e+01 9.55123152e+01 9.58459434e+01 9.61796493e+01 + 9.65134208e+01 9.68472458e+01 9.71811120e+01 9.75150072e+01 9.78489190e+01 + 9.81828350e+01 9.85167426e+01 9.88506292e+01 9.91844820e+01 9.95182882e+01 + 9.98520351e+01 1.00185710e+02 1.00519299e+02 1.00852789e+02 1.01186168e+02 + 1.01519421e+02 1.01852537e+02 1.02185500e+02 1.02518298e+02 1.02850918e+02 + 1.03183344e+02 1.03515565e+02 1.03847565e+02 1.04179331e+02 1.04510850e+02 + 1.04842106e+02 1.05173087e+02 1.05503777e+02 1.05834164e+02 1.06164231e+02 + 1.06493966e+02 1.06823354e+02 1.07152380e+02 1.07481029e+02 1.07809288e+02 + 1.08137142e+02 1.08464575e+02 1.08791574e+02 1.09118124e+02 1.09444209e+02 + 1.09769815e+02 1.10094926e+02 1.10419529e+02 1.10743608e+02 1.11067148e+02 + 1.11390133e+02 1.11712550e+02 1.12034382e+02 1.12355614e+02 1.12676232e+02 + 1.12996219e+02 1.13315562e+02 1.13634243e+02 1.13952249e+02 1.14269563e+02 + 1.14586171e+02 1.14902056e+02 1.15217204e+02 1.15531599e+02 1.15845226e+02 + 1.16158068e+02 1.16470111e+02 1.16781340e+02 1.17091737e+02 1.17401289e+02 + 1.17709980e+02 1.18017793e+02 1.18324714e+02 1.18630727e+02 1.18935817e+02 + 1.19239967e+02 1.19543163e+02 1.19845389e+02 1.20146630e+02 1.20446869e+02 + 1.20746092e+02 1.21044283e+02 1.21341427e+02 1.21637508e+02 1.21932512e+02 + 1.22226421e+02 1.22519222e+02 1.22810899e+02 1.23101437e+02 1.23390820e+02 + 1.23679033e+02 1.23966062e+02 1.24251891e+02 1.24536504e+02 1.24819888e+02 + 1.25102026e+02 1.25382904e+02 1.25662508e+02 1.25940822e+02 1.26217831e+02 + 1.26493521e+02 1.26767877e+02 1.27040885e+02 1.27312529e+02 1.27582796e+02 + 1.27851672e+02 1.28119141e+02 1.28385189e+02 1.28649803e+02 1.28912968e+02 + 1.29174670e+02 1.29434895e+02 1.29693630e+02 1.29950860e+02 1.30206572e+02 + 1.30460752e+02 1.30713387e+02 1.30964463e+02 1.31213966e+02 1.31461885e+02 + 1.31708205e+02 1.31952913e+02 1.32195997e+02 1.32437443e+02 1.32677239e+02 + 1.32915372e+02 1.33151830e+02 1.33386601e+02 1.33619671e+02 1.33851029e+02 + 1.34080662e+02 1.34308560e+02 1.34534709e+02 1.34759099e+02 1.34981717e+02 + 1.35202552e+02 1.35421593e+02 1.35638829e+02 1.35854248e+02 1.36067840e+02 + 1.36279593e+02 1.36489498e+02 1.36697543e+02 1.36903718e+02 1.37108013e+02 + 1.37310417e+02 1.37510922e+02 1.37709516e+02 1.37906191e+02 1.38100936e+02 + 1.38293742e+02 1.38484600e+02 1.38673502e+02 1.38860437e+02 1.39045397e+02 + 1.39228374e+02 1.39409359e+02 1.39588343e+02 1.39765319e+02 1.39940278e+02 + 1.40113213e+02 1.40284116e+02 1.40452979e+02 1.40619796e+02 1.40784558e+02 + 1.40947259e+02 1.41107891e+02 1.41266449e+02 1.41422926e+02 1.41577314e+02 + 1.41729609e+02 1.41879804e+02 1.42027892e+02 1.42173869e+02 1.42317729e+02 + 1.42459467e+02 1.42599077e+02 1.42736554e+02 1.42871893e+02 1.43005090e+02 + 1.43136140e+02 1.43265040e+02 1.43391784e+02 1.43516369e+02 1.43638790e+02 + 1.43759046e+02 1.43877131e+02 1.43993042e+02 1.44106777e+02 1.44218333e+02 + 1.44327706e+02 1.44434895e+02 1.44539897e+02 1.44642709e+02 1.44743329e+02 + 1.44841757e+02 1.44937989e+02 1.45032025e+02 1.45123862e+02 1.45213501e+02 + 1.45300939e+02 1.45386177e+02 1.45469212e+02 1.45550046e+02 1.45628677e+02 + 1.45705106e+02 1.45779332e+02 1.45851355e+02 1.45921177e+02 1.45988797e+02 + 1.46054216e+02 1.46117435e+02 1.46178455e+02 1.46237278e+02 1.46293904e+02 + 1.46348336e+02 1.46400574e+02 1.46450622e+02 1.46498480e+02 1.46544151e+02 + 1.46587637e+02 1.46628941e+02 1.46668066e+02 1.46705014e+02 1.46739788e+02 + 1.46772392e+02 1.46802828e+02 1.46831101e+02 1.46857213e+02 1.46881169e+02 + 1.46902973e+02 1.46922628e+02 1.46940138e+02 1.46955509e+02 1.46968744e+02 + 1.46979849e+02 1.46988827e+02 1.46995684e+02 1.47000426e+02 1.47003056e+02 + 1.47003581e+02 1.47002006e+02 1.46998336e+02 1.46992578e+02 1.46984737e+02 + 1.46974819e+02 1.46962831e+02 1.46948778e+02 1.46932668e+02 1.46914506e+02 + 1.46894299e+02 1.46872054e+02 1.46847778e+02 1.46821478e+02 1.46793161e+02 + 1.46762834e+02 1.46730505e+02 1.46696181e+02 1.46659869e+02 1.46621578e+02 + 1.46581315e+02 1.46539088e+02 1.46494906e+02 1.46448775e+02 1.46400705e+02 + 1.46350703e+02 1.46298779e+02 1.46244940e+02 1.46189196e+02 1.46131554e+02 + 1.46072025e+02 1.46010616e+02 1.45947336e+02 1.45882196e+02 1.45815203e+02 + 1.45746367e+02 1.45675697e+02 1.45603203e+02 1.45528895e+02 1.45452781e+02 + 1.45374871e+02 1.45295176e+02 1.45213704e+02 1.45130467e+02 1.45045472e+02 + 1.44958732e+02 1.44870254e+02 1.44780051e+02 1.44688131e+02 1.44594506e+02 + 1.44499185e+02 1.44402178e+02 1.44303497e+02 1.44203151e+02 1.44101151e+02 + 1.43997508e+02 1.43892232e+02 1.43785334e+02 1.43676825e+02 1.43566715e+02 + 1.43455014e+02 1.43341735e+02 1.43226888e+02 1.43110483e+02 1.42992531e+02 + 1.42873045e+02 1.42752034e+02 1.42629509e+02 1.42505482e+02 1.42379964e+02 + 1.42252966e+02 1.42124499e+02 1.41994574e+02 1.41863202e+02 1.41730395e+02 + 1.41596164e+02 1.41460520e+02 1.41323475e+02 1.41185039e+02 1.41045224e+02 + 1.40904041e+02 1.40761503e+02 1.40617619e+02 1.40472401e+02 1.40325861e+02 + 1.40178011e+02 1.40028860e+02 1.39878422e+02 1.39726706e+02 1.39573726e+02 + 1.39419491e+02 1.39264013e+02 1.39107304e+02 1.38949376e+02 1.38790238e+02 + 1.38629904e+02 1.38468384e+02 1.38305689e+02 1.38141831e+02 1.37976821e+02 + 1.37810671e+02 1.37643391e+02 1.37474994e+02 1.37305490e+02 1.37134890e+02 + 1.36963207e+02 1.36790450e+02 1.36616632e+02 1.36441764e+02 1.36265856e+02 + 1.36088919e+02 1.35910966e+02 1.35732007e+02 1.35552053e+02 1.35371115e+02 + 1.35189204e+02 1.35006331e+02 1.34822508e+02 1.34637745e+02 1.34452052e+02 + 1.34265442e+02 1.34077924e+02 1.33889510e+02 1.33700211e+02 1.33510036e+02 + 1.33318997e+02 1.33127105e+02 1.32934370e+02 1.32740803e+02 1.32546414e+02 + 1.32351214e+02 1.32155213e+02 1.31958423e+02 1.31760852e+02 1.31562512e+02 + 1.31363414e+02 1.31163566e+02 1.30962981e+02 1.30761667e+02 1.30559635e+02 + 1.30356895e+02 1.30153458e+02 1.29949332e+02 1.29744529e+02 1.29539058e+02 + 1.29332930e+02 1.29126153e+02 1.28918738e+02 1.28710695e+02 1.28502033e+02 + 1.28292762e+02 1.28082892e+02 1.27872431e+02 1.27661391e+02 1.27449780e+02 + 1.27237607e+02 1.27024882e+02 1.26811615e+02 1.26597815e+02 1.26383490e+02 + 1.26168650e+02 1.25953305e+02 1.25737462e+02 1.25521132e+02 1.25304323e+02 + 1.25087045e+02 1.24869305e+02 1.24651113e+02 1.24432478e+02 1.24213408e+02 + 1.23993912e+02 1.23773999e+02 1.23553677e+02 1.23332954e+02 1.23111839e+02 + 1.22890341e+02 1.22668468e+02 1.22446227e+02 1.22223628e+02 1.22000678e+02 + 1.21777386e+02 1.21553760e+02 1.21329807e+02 1.21105535e+02 1.20880953e+02 + 1.20656068e+02 1.20430889e+02 1.20205422e+02 1.19979676e+02 1.19753657e+02 + 1.19527375e+02 1.19300835e+02 1.19074046e+02 1.18847015e+02 1.18619750e+02 + 1.18392257e+02 1.18164544e+02 1.17936618e+02 1.17708486e+02 1.17480156e+02 + 1.17251634e+02 1.17022927e+02 1.16794042e+02 1.16564986e+02 1.16335766e+02 + 1.16106388e+02 1.15876860e+02 1.15647187e+02 1.15417377e+02 1.15187436e+02 + 1.14957370e+02 1.14727186e+02 1.14496890e+02 1.14266489e+02 1.14035988e+02 + 1.13805395e+02 1.13574714e+02 1.13343953e+02 1.13113117e+02 1.12882212e+02 + 1.12651245e+02 1.12420220e+02 1.12189145e+02 1.11958024e+02 1.11726863e+02 + 1.11495669e+02 1.11264446e+02 1.11033201e+02 1.10801938e+02 1.10570664e+02 + 1.10339384e+02 1.10108102e+02 1.09876825e+02 1.09645558e+02 1.09414306e+02 + 1.09183074e+02 1.08951867e+02 1.08720690e+02 1.08489549e+02 1.08258447e+02 + 1.08027392e+02 1.07796386e+02 1.07565435e+02 1.07334544e+02 1.07103717e+02 + 1.06872960e+02 1.06642276e+02 1.06411671e+02 1.06181148e+02 1.05950713e+02 + 1.05720370e+02 1.05490123e+02 1.05259977e+02 1.05029936e+02 1.04800004e+02 + 1.04570186e+02 1.04340485e+02 1.04110906e+02 1.03881453e+02 1.03652130e+02 + 1.03422940e+02 1.03193889e+02 1.02964980e+02 1.02736216e+02 1.02507602e+02 + 1.02279141e+02 1.02050837e+02 1.01822694e+02 1.01594715e+02 1.01366905e+02 + 1.01139266e+02 1.00911802e+02 1.00684517e+02 1.00457414e+02 1.00230497e+02 + 1.00003768e+02 9.97772321e+01 9.95508915e+01 9.93247499e+01 9.90988103e+01 + 9.88730759e+01 9.86475500e+01 9.84222355e+01 9.81971356e+01 9.79722534e+01 + 9.77475917e+01 9.75231536e+01 9.72989420e+01 9.70749597e+01 9.68512097e+01 + 9.66276947e+01 9.64044174e+01 9.61813808e+01 9.59585873e+01 9.57360398e+01 + 9.55137409e+01 9.52916930e+01 9.50698990e+01 9.48483611e+01 9.46270821e+01 + 9.44060642e+01 9.41853100e+01 9.39648219e+01 9.37446022e+01 9.35246532e+01 + 9.33049773e+01 9.30855768e+01 9.28664538e+01 9.26476106e+01 9.24290493e+01 + 9.22107722e+01 9.19927813e+01 9.17750786e+01 9.15576664e+01 9.13405465e+01 + 9.11237210e+01 9.09071919e+01 9.06909610e+01 9.04750303e+01 9.02594017e+01 + 9.00440770e+01 8.98290581e+01 8.96143467e+01 8.93999446e+01 8.91858535e+01 + 8.89720752e+01 8.87586114e+01 8.85454636e+01 8.83326336e+01 8.81201229e+01 + 8.79079332e+01 8.76960659e+01 8.74845226e+01 8.72733048e+01 8.70624140e+01 + 8.68518516e+01 8.66416191e+01 8.64317178e+01 8.62221492e+01 8.60129146e+01 + 8.58040153e+01 8.55954526e+01 8.53872279e+01 8.51793423e+01 8.49717971e+01 + 8.47645936e+01 8.45577329e+01 8.43512162e+01 8.41450446e+01 8.39392193e+01 + 8.37337413e+01 8.35286118e+01 8.33238319e+01 8.31194024e+01 8.29153246e+01 + 8.27115993e+01 8.25082275e+01 8.23052103e+01 8.21025484e+01 8.19002430e+01 + 8.16982948e+01 8.14967047e+01 8.12954737e+01 8.10946024e+01 8.08940918e+01 + 8.06939427e+01 8.04941558e+01 8.02947318e+01 8.00956717e+01 7.98969760e+01 + 7.96986455e+01 7.95006808e+01 7.93030827e+01 7.91058518e+01 7.89089888e+01 + 7.87124942e+01 7.85163688e+01 7.83206129e+01 7.81252274e+01 7.79302126e+01 + 7.77355691e+01 7.75412975e+01 7.73473983e+01 7.71538720e+01 7.69607190e+01 + 7.67679398e+01 7.65755348e+01 7.63835046e+01 7.61918494e+01 7.60005698e+01 + 7.58096660e+01 7.56191385e+01 7.54289877e+01 7.52392138e+01 7.50498172e+01 + 7.48607982e+01 7.46721572e+01 7.44838943e+01 7.42960100e+01 7.41085045e+01 + 7.39213779e+01 7.37346306e+01 7.35482627e+01 7.33622746e+01 7.31766663e+01 + 7.29914382e+01 7.28065902e+01 7.26221227e+01 7.24380357e+01 7.22543295e+01 + 7.20710041e+01 7.18880596e+01 7.17054962e+01 7.15233140e+01 7.13415130e+01 + 7.11600933e+01 7.09790550e+01 7.07983980e+01 7.06181226e+01 7.04382286e+01 + 7.02587162e+01 7.00795852e+01 6.99008358e+01 6.97224679e+01 6.95444815e+01 + 6.93668765e+01 6.91896529e+01 6.90128107e+01 6.88363498e+01 6.86602702e+01 + 6.84845716e+01 6.83092542e+01 6.81343177e+01 6.79597621e+01 6.77855872e+01 + 6.76117930e+01 6.74383792e+01 6.72653459e+01 6.70926927e+01 6.69204196e+01 + 6.67485263e+01 6.65770128e+01 6.64058788e+01 6.62351242e+01 6.60647487e+01 + 6.58947522e+01 6.57251344e+01 6.55558951e+01 6.53870341e+01 6.52185512e+01 + 6.50504461e+01 6.48827185e+01 6.47153683e+01 6.45483951e+01 6.43817987e+01 + 6.42155788e+01 6.40497352e+01 6.38842675e+01 6.37191754e+01 6.35544587e+01 + 6.33901170e+01 6.32261501e+01 6.30625575e+01 6.28993390e+01 6.27364943e+01 + 6.25740230e+01 6.24119248e+01 6.22501992e+01 6.20888461e+01 6.19278649e+01 + 6.17672554e+01 6.16070172e+01 6.14471498e+01 6.12876529e+01 6.11285262e+01 + 6.09697692e+01 6.08113816e+01 6.06533628e+01 6.04957126e+01 6.03384305e+01 + 6.01815161e+01 6.00249690e+01 5.98687888e+01 5.97129749e+01 5.95575271e+01 + 5.94024448e+01 5.92477276e+01 5.90933750e+01 5.89393867e+01 5.87857621e+01 + 5.86325008e+01 5.84796024e+01 5.83270662e+01 5.81748920e+01 5.80230792e+01 + 5.78716273e+01 5.77205359e+01 5.75698044e+01 5.74194325e+01 5.72694194e+01 + 5.71197649e+01 5.69704684e+01 5.68215293e+01 5.66729472e+01 5.65247215e+01 + 5.63768518e+01 5.62293375e+01 5.60821782e+01 5.59353732e+01 5.57889220e+01 + 5.56428242e+01 5.54970792e+01 5.53516865e+01 5.52066455e+01 5.50619556e+01 + 5.49176164e+01 5.47736273e+01 5.46299878e+01 5.44866972e+01 5.43437551e+01 + 5.42011609e+01 5.40589140e+01 5.39170138e+01 5.37754599e+01 5.36342516e+01 + 5.34933884e+01 5.33528697e+01 5.32126949e+01 5.30728635e+01 5.29333749e+01 + 5.27942284e+01 5.26554236e+01 5.25169599e+01 5.23788366e+01 5.22410531e+01 + 5.21036090e+01 5.19665035e+01 5.18297362e+01 5.16933064e+01 5.15572135e+01 + 5.14214569e+01 5.12860360e+01 5.11509503e+01 5.10161991e+01 5.08817818e+01 + 5.07476979e+01 5.06139466e+01 5.04805275e+01 5.03474399e+01 5.02146831e+01 + 5.00822567e+01 4.99501599e+01 4.98183922e+01 4.96869529e+01 4.95558415e+01 + 4.94250573e+01 4.92945997e+01 4.91644680e+01 4.90346617e+01 4.89051802e+01 + 4.87760228e+01 4.86471889e+01 4.85186778e+01 4.83904890e+01 4.82626219e+01 + 4.81350757e+01 4.80078499e+01 4.78809439e+01 4.77543570e+01 4.76280885e+01 + 4.75021379e+01 4.73765046e+01 4.72511879e+01 4.71261871e+01 4.70015017e+01 + 4.68771310e+01 4.67530743e+01 4.66293311e+01 4.65059007e+01 4.63827825e+01 + 4.62599758e+01 4.61374800e+01 4.60152945e+01 4.58934186e+01 4.57718517e+01 + 4.56505932e+01 4.55296424e+01 4.54089987e+01 4.52886614e+01 4.51686299e+01 + 4.50489036e+01 4.49294819e+01 4.48103640e+01 4.46915494e+01 4.45730374e+01 + 4.44548274e+01 4.43369187e+01 4.42193108e+01 4.41020029e+01 4.39849944e+01 + 4.38682847e+01 4.37518731e+01 4.36357591e+01 4.35199419e+01 4.34044210e+01 + 4.32891956e+01 4.31742652e+01 4.30596292e+01 4.29452868e+01 4.28312374e+01 + 4.27174804e+01 4.26040152e+01 4.24908411e+01 4.23779575e+01 4.22653637e+01 + 4.21530592e+01 4.20410432e+01 4.19293152e+01 4.18178744e+01 4.17067204e+01 + 4.15958523e+01 4.14852696e+01 4.13749717e+01 4.12649579e+01 4.11552276e+01 + 4.10457802e+01 4.09366150e+01 4.08277313e+01 4.07191286e+01 4.06108062e+01 + 4.05027635e+01 4.03949999e+01 4.02875147e+01 4.01803072e+01 4.00733770e+01 + 3.99667232e+01 3.98603454e+01 3.97542428e+01 3.96484149e+01 3.95428610e+01 + 3.94375804e+01 3.93325727e+01 3.92278370e+01 3.91233729e+01 3.90191797e+01 + 3.89152567e+01 3.88116033e+01 3.87082190e+01 3.86051031e+01 3.85022549e+01 + 3.83996738e+01 3.82973593e+01 3.81953107e+01 3.80935274e+01 3.79920087e+01 + 3.78907541e+01 3.77897629e+01 3.76890345e+01 3.75885683e+01 3.74883637e+01 + 3.73884200e+01 3.72887367e+01 3.71893131e+01 3.70901487e+01 3.69912428e+01 + 3.68925948e+01 3.67942040e+01 3.66960700e+01 3.65981920e+01 3.65005695e+01 + 3.64032018e+01 3.63060884e+01 3.62092287e+01 3.61126219e+01 3.60162677e+01 + 3.59201652e+01 3.58243140e+01 3.57287134e+01 3.56333628e+01 3.55382617e+01 + 3.54434094e+01 3.53488054e+01 3.52544489e+01 3.51603395e+01 3.50664766e+01 + 3.49728595e+01 3.48794877e+01 3.47863605e+01 3.46934774e+01 3.46008377e+01 + 3.45084410e+01 3.44162866e+01 3.43243738e+01 3.42327022e+01 3.41412712e+01 + 3.40500801e+01 3.39591283e+01 3.38684154e+01 3.37779406e+01 3.36877035e+01 + 3.35977034e+01 3.35079398e+01 3.34184120e+01 3.33291196e+01 3.32400618e+01 + 3.31512383e+01 3.30626483e+01 3.29742913e+01 3.28861667e+01 3.27982740e+01 + 3.27106125e+01 3.26231818e+01 3.25359813e+01 3.24490103e+01 3.23622683e+01 + 3.22757548e+01 3.21894691e+01 3.21034108e+01 3.20175792e+01 3.19319738e+01 + 3.18465940e+01 3.17614393e+01 3.16765091e+01 3.15918029e+01 3.15073200e+01 + 3.14230600e+01 3.13390223e+01 3.12552063e+01 3.11716115e+01 3.10882373e+01 + 3.10050832e+01 3.09221486e+01 3.08394330e+01 3.07569358e+01 3.06746565e+01 + 3.05925945e+01 3.05107493e+01 3.04291204e+01 3.03477071e+01 3.02665091e+01 + 3.01855256e+01 3.01047563e+01 3.00242005e+01 2.99438576e+01 2.98637273e+01 + 2.97838089e+01 2.97041019e+01 2.96246058e+01 2.95453200e+01 2.94662440e+01 + 2.93873773e+01 2.93087194e+01 2.92302697e+01 2.91520276e+01 2.90739928e+01 + 2.89961646e+01 2.89185425e+01 2.88411260e+01 2.87639145e+01 2.86869077e+01 + 2.86101048e+01 2.85335055e+01 2.84571092e+01 2.83809154e+01 2.83049236e+01 + 2.82291332e+01 2.81535438e+01 2.80781548e+01 2.80029657e+01 2.79279760e+01 + 2.78531853e+01 2.77785929e+01 2.77041985e+01 2.76300014e+01 2.75560012e+01 + 2.74821974e+01 2.74085895e+01 2.73351769e+01 2.72619592e+01 2.71889360e+01 + 2.71161065e+01 2.70434705e+01 2.69710274e+01 2.68987766e+01 2.68267178e+01 + 2.67548504e+01 2.66831739e+01 2.66116878e+01 2.65403917e+01 2.64692850e+01 + 2.63983673e+01 2.63276380e+01 2.62570968e+01 2.61867431e+01 2.61165764e+01 + 2.60465962e+01 2.59768021e+01 2.59071936e+01 2.58377702e+01 2.57685315e+01 + 2.56994769e+01 2.56306059e+01 2.55619182e+01 2.54934132e+01 2.54250905e+01 + 2.53569496e+01 2.52889900e+01 2.52212112e+01 2.51536129e+01 2.50861944e+01 + 2.50189554e+01 2.49518954e+01 2.48850139e+01 2.48183105e+01 2.47517847e+01 + 2.46854360e+01 2.46192641e+01 2.45532683e+01 2.44874483e+01 2.44218036e+01 + 2.43563338e+01 2.42910384e+01 2.42259169e+01 2.41609689e+01 2.40961940e+01 + 2.40315917e+01 2.39671615e+01 2.39029030e+01 2.38388158e+01 2.37748994e+01 + 2.37111533e+01 2.36475772e+01 2.35841706e+01 2.35209330e+01 2.34578640e+01 + 2.33949631e+01 2.33322300e+01 2.32696641e+01 2.32072651e+01 2.31450326e+01 + 2.30829659e+01 2.30210649e+01 2.29593289e+01 2.28977577e+01 2.28363507e+01 + 2.27751075e+01 2.27140277e+01 2.26531109e+01 2.25923566e+01 2.25317644e+01 + 2.24713339e+01 2.24110647e+01 2.23509564e+01 2.22910085e+01 2.22312206e+01 + 2.21715922e+01 2.21121231e+01 2.20528127e+01 2.19936606e+01 2.19346665e+01 + 2.18758299e+01 2.18171503e+01 2.17586275e+01 2.17002609e+01 2.16420503e+01 + 2.15839950e+01 2.15260948e+01 2.14683493e+01 2.14107580e+01 2.13533205e+01 + 2.12960364e+01 2.12389054e+01 2.11819270e+01 2.11251008e+01 2.10684265e+01 + 2.10119035e+01 2.09555316e+01 2.08993103e+01 2.08432393e+01 2.07873181e+01 + 2.07315463e+01 2.06759236e+01 2.06204495e+01 2.05651237e+01 2.05099458e+01 + 2.04549154e+01 2.04000321e+01 2.03452954e+01 2.02907052e+01 2.02362608e+01 + 2.01819620e+01 2.01278084e+01 2.00737995e+01 2.00199351e+01 1.99662147e+01 + 1.99126380e+01 1.98592045e+01 1.98059139e+01 1.97527658e+01 1.96997599e+01 + 1.96468957e+01 1.95941729e+01 1.95415912e+01 1.94891500e+01 1.94368492e+01 + 1.93846882e+01 1.93326668e+01 1.92807846e+01 1.92290411e+01 1.91774361e+01 + 1.91259691e+01 1.90746398e+01 1.90234479e+01 1.89723930e+01 1.89214746e+01 + 1.88706925e+01 1.88200463e+01 1.87695356e+01 1.87191601e+01 1.86689194e+01 + 1.86188132e+01 1.85688411e+01 1.85190027e+01 1.84692977e+01 1.84197257e+01 + 1.83702865e+01 1.83209796e+01 1.82718046e+01 1.82227613e+01 1.81738493e+01 + 1.81250682e+01 1.80764177e+01 1.80278975e+01 1.79795071e+01 1.79312463e+01 + 1.78831148e+01 1.78351121e+01 1.77872379e+01 1.77394919e+01 1.76918738e+01 + 1.76443832e+01 1.75970197e+01 1.75497831e+01 1.75026730e+01 1.74556891e+01 + 1.74088310e+01 1.73620983e+01 1.73154909e+01 1.72690082e+01 1.72226501e+01 + 1.71764161e+01 1.71303060e+01 1.70843194e+01 1.70384560e+01 1.69927154e+01 + 1.69470973e+01 1.69016015e+01 1.68562275e+01 1.68109751e+01 1.67658439e+01 + 1.67208336e+01 1.66759439e+01 1.66311745e+01 1.65865250e+01 1.65419952e+01 + 1.64975846e+01 1.64532931e+01 1.64091202e+01 1.63650657e+01 1.63211293e+01 + 1.62773106e+01 1.62336093e+01 1.61900251e+01 1.61465577e+01 1.61032068e+01 + 1.60599721e+01 1.60168532e+01 1.59738499e+01 1.59309619e+01 1.58881887e+01 + 1.58455303e+01 1.58029861e+01 1.57605560e+01 1.57182397e+01 1.56760367e+01 + 1.56339469e+01 1.55919699e+01 1.55501054e+01 1.55083531e+01 1.54667128e+01 + 1.54251840e+01 1.53837666e+01 1.53424603e+01 1.53012646e+01 1.52601794e+01 + 1.52192044e+01 1.51783392e+01 1.51375835e+01 1.50969371e+01 1.50563997e+01 + 1.50159710e+01 1.49756507e+01 1.49354385e+01 1.48953341e+01 1.48553372e+01 + 1.48154476e+01 1.47756649e+01 1.47359889e+01 1.46964193e+01 1.46569558e+01 + 1.46175982e+01 1.45783460e+01 1.45391992e+01 1.45001573e+01 1.44612201e+01 + 1.44221013e+01 1.43823077e+01 1.43418365e+01 1.43006939e+01 1.42588863e+01 + 1.42164199e+01 1.41733013e+01 1.41295367e+01 1.40851327e+01 1.40400959e+01 + 1.39944327e+01 1.39481499e+01 1.39012541e+01 1.38537520e+01 1.38056503e+01 + 1.37569558e+01 1.37076754e+01 1.36578159e+01 1.36073842e+01 1.35563871e+01 + 1.35048318e+01 1.34527252e+01 1.34000743e+01 1.33468861e+01 1.32931679e+01 + 1.32389266e+01 1.31841694e+01 1.31289036e+01 1.30731363e+01 1.30168747e+01 + 1.29601261e+01 1.29028978e+01 1.28451971e+01 1.27870312e+01 1.27284076e+01 + 1.26693335e+01 1.26098164e+01 1.25498637e+01 1.24894827e+01 1.24286808e+01 + 1.23674656e+01 1.23058445e+01 1.22438250e+01 1.21814144e+01 1.21186203e+01 + 1.20554503e+01 1.19919118e+01 1.19280122e+01 1.18637593e+01 1.17991604e+01 + 1.17342231e+01 1.16689549e+01 1.16033634e+01 1.15374562e+01 1.14712406e+01 + 1.14047244e+01 1.13379151e+01 1.12708201e+01 1.12034471e+01 1.11358035e+01 + 1.10678969e+01 1.09997348e+01 1.09313248e+01 1.08626743e+01 1.07937909e+01 + 1.07246820e+01 1.06553552e+01 1.05858180e+01 1.05160777e+01 1.04461419e+01 + 1.03760180e+01 1.03057134e+01 1.02352356e+01 1.01645919e+01 1.00937898e+01 + 1.00228366e+01 9.95173971e+00 9.88050638e+00 9.80914398e+00 9.73765979e+00 + 9.66606109e+00 9.59435515e+00 9.52254919e+00 9.45065043e+00 9.37866605e+00 + 9.30660322e+00 9.23446907e+00 9.16227073e+00 9.09001528e+00 9.01770977e+00 + 8.94536125e+00 8.87297672e+00 8.80056316e+00 8.72812750e+00 8.65567668e+00 + 8.58321756e+00 8.51075702e+00 8.43830186e+00 8.36585889e+00 8.29343485e+00 + 8.22103646e+00 8.14867042e+00 8.07634337e+00 8.00406193e+00 7.93183268e+00 + 7.85966216e+00 7.78755688e+00 7.71552329e+00 7.64356784e+00 7.57169690e+00 + 7.49991683e+00 7.42823393e+00 7.35665448e+00 7.28518468e+00 7.21383074e+00 + 7.14259879e+00 7.07149492e+00 7.00052520e+00 6.92969562e+00 6.85901217e+00 + 6.78848076e+00 6.71810726e+00 6.64789751e+00 6.57785729e+00 6.50799234e+00 + 6.43830834e+00 6.36881094e+00 6.29950573e+00 6.23039827e+00 6.16149404e+00 + 6.09279849e+00 6.02431702e+00 5.95605499e+00 5.88801768e+00 5.82021035e+00 + 5.75263820e+00 5.68530636e+00 5.61821994e+00 5.55138397e+00 5.48480344e+00 + 5.41848329e+00 5.35242840e+00 5.28664361e+00 5.22113368e+00 5.15590335e+00 + 5.09095728e+00 5.02630009e+00 4.96193633e+00 4.89787051e+00 4.83410709e+00 + 4.77065045e+00 4.70750493e+00 4.64467483e+00 4.58216436e+00 4.51997769e+00 + 4.45811895e+00 4.39659218e+00 4.33540140e+00 4.27455054e+00 4.21404350e+00 + 4.15388409e+00 4.09407611e+00 4.03462325e+00 3.97552918e+00 3.91679750e+00 + 3.85843175e+00 3.80043541e+00 3.74281191e+00 3.68556461e+00 3.62869683e+00 + 3.57221182e+00 3.51611277e+00 3.46040280e+00 3.40508500e+00 3.35016239e+00 + 3.29563791e+00 3.24151448e+00 3.18779492e+00 3.13448202e+00 3.08157850e+00 + 3.02908703e+00 2.97701021e+00 2.92535059e+00 2.87411065e+00 2.82329282e+00 + 2.77289947e+00 2.72293291e+00 2.67339540e+00 2.62428912e+00 2.57561621e+00 + 2.52737875e+00 2.47957875e+00 2.43221817e+00 2.38529892e+00 2.33882283e+00 + 2.29279169e+00 2.24720723e+00 2.20207111e+00 2.15738494e+00 2.11315028e+00 + 2.06936862e+00 2.02604139e+00 1.98316998e+00 1.94075571e+00 1.89879985e+00 + 1.85730359e+00 1.81626811e+00 1.77569447e+00 1.73558374e+00 1.69593688e+00 + 1.65675483e+00 1.61803846e+00 1.57978857e+00 1.54200593e+00 1.50469123e+00 + 1.46784514e+00 1.43146824e+00 1.39556106e+00 1.36012410e+00 1.32515778e+00 + 1.29066248e+00 1.25663851e+00 1.22308616e+00 1.19000563e+00 1.15739708e+00 + 1.12526062e+00 1.09359631e+00 1.06240415e+00 1.03168410e+00 1.00143606e+00 + 9.71659862e-01 9.42355321e-01 9.13522177e-01 8.85160127e-01 8.57268818e-01 + 8.29847844e-01 8.02896752e-01 7.76415039e-01 7.50402153e-01 7.24857492e-01 + 6.99780408e-01 6.75170202e-01 6.51026130e-01 6.27347399e-01 6.04133170e-01 + 5.81382555e-01 5.59094623e-01 5.37268394e-01 5.15902844e-01 4.94996902e-01 + 4.74549455e-01 4.54559343e-01 4.35025362e-01 4.15946264e-01 3.97320759e-01 + 3.79147513e-01 3.61425148e-01 3.44152245e-01 3.27327344e-01 3.10948942e-01 + 2.95015494e-01 2.79525416e-01 2.64477082e-01 2.49868829e-01 2.35698950e-01 + 2.21965702e-01 2.08667302e-01 1.95801929e-01 1.83367724e-01 1.71362791e-01 + 1.59785195e-01 1.48632967e-01 1.37904098e-01 1.27596548e-01 1.17708236e-01 + 1.08237051e-01 9.91808451e-02 9.05374353e-02 8.23046065e-02 7.44801094e-02 + 6.70616623e-02 6.00469508e-02 5.34336286e-02 4.72193177e-02 4.14016091e-02 + 3.59780630e-02 3.09462095e-02 2.63035487e-02 2.20475516e-02 1.81756600e-02 + 1.46852874e-02 1.15738194e-02 8.83861364e-03 6.47700104e-03 4.48628566e-03 + 2.86374536e-03 1.60663225e-03 7.12173109e-04 1.77569856e-04 0.00000000e+00 + 1.65968286e-01 1.65968286e-01 1.67501954e-01 1.69381845e-01 1.71282685e-01 + 1.73204702e-01 1.75148130e-01 1.77113201e-01 1.79100155e-01 1.81109230e-01 + 1.83140669e-01 1.85194716e-01 1.87271619e-01 1.89371627e-01 1.91494994e-01 + 1.93641974e-01 1.95812825e-01 1.98007809e-01 2.00227187e-01 2.02471227e-01 + 2.04740197e-01 2.07034369e-01 2.09354018e-01 2.11699420e-01 2.14070856e-01 + 2.16468609e-01 2.18892965e-01 2.21344213e-01 2.23822646e-01 2.26328558e-01 + 2.28862247e-01 2.31424015e-01 2.34014167e-01 2.36633008e-01 2.39280850e-01 + 2.41958008e-01 2.44664796e-01 2.47401537e-01 2.50168554e-01 2.52966173e-01 + 2.55794724e-01 2.58654541e-01 2.61545961e-01 2.64469325e-01 2.67424975e-01 + 2.70413260e-01 2.73434529e-01 2.76489138e-01 2.79577445e-01 2.82699810e-01 + 2.85856598e-01 2.89048180e-01 2.92274926e-01 2.95537214e-01 2.98835423e-01 + 3.02169937e-01 3.05541143e-01 3.08949433e-01 3.12395202e-01 3.15878849e-01 + 3.19400778e-01 3.22961395e-01 3.26561111e-01 3.30200343e-01 3.33879508e-01 + 3.37599030e-01 3.41359337e-01 3.45160859e-01 3.49004034e-01 3.52889300e-01 + 3.56817102e-01 3.60787889e-01 3.64802114e-01 3.68860232e-01 3.72962707e-01 + 3.77110004e-01 3.81302594e-01 3.85540951e-01 3.89825554e-01 3.94156889e-01 + 3.98535442e-01 4.02961708e-01 4.07436184e-01 4.11959373e-01 4.16531781e-01 + 4.21153920e-01 4.25826307e-01 4.30549463e-01 4.35323915e-01 4.40150193e-01 + 4.45028834e-01 4.49960377e-01 4.54945369e-01 4.59984360e-01 4.65077907e-01 + 4.70226569e-01 4.75430912e-01 4.80691507e-01 4.86008931e-01 4.91383763e-01 + 4.96816591e-01 5.02308005e-01 5.07858602e-01 5.13468983e-01 5.19139757e-01 + 5.24871535e-01 5.30664934e-01 5.36520578e-01 5.42439096e-01 5.48421119e-01 + 5.54467289e-01 5.60578249e-01 5.66754649e-01 5.72997145e-01 5.79306397e-01 + 5.85683073e-01 5.92127843e-01 5.98641385e-01 6.05224382e-01 6.11877524e-01 + 6.18601503e-01 6.25397020e-01 6.32264781e-01 6.39205495e-01 6.46219881e-01 + 6.53308659e-01 6.60472559e-01 6.67712313e-01 6.75028662e-01 6.82422349e-01 + 6.89894127e-01 6.97444750e-01 7.05074982e-01 7.12785590e-01 7.20577348e-01 + 7.28451035e-01 7.36407436e-01 7.44447341e-01 7.52571547e-01 7.60780856e-01 + 7.69076076e-01 7.77458020e-01 7.85927507e-01 7.94485362e-01 8.03132416e-01 + 8.11869504e-01 8.20697469e-01 8.29617157e-01 8.38629421e-01 8.47735121e-01 + 8.56935119e-01 8.66230285e-01 8.75621495e-01 8.85109628e-01 8.94695572e-01 + 9.04380216e-01 9.14164458e-01 9.24049199e-01 9.34035347e-01 9.44123815e-01 + 9.54315519e-01 9.64611384e-01 9.75012336e-01 9.85519310e-01 9.96133242e-01 + 1.00685508e+00 1.01768576e+00 1.02862625e+00 1.03967749e+00 1.05084046e+00 + 1.06211612e+00 1.07350544e+00 1.08500939e+00 1.09662896e+00 1.10836513e+00 + 1.12021890e+00 1.13219124e+00 1.14428316e+00 1.15649566e+00 1.16882975e+00 + 1.18128643e+00 1.19386672e+00 1.20657163e+00 1.21940218e+00 1.23235939e+00 + 1.24544429e+00 1.25865790e+00 1.27200127e+00 1.28547542e+00 1.29908139e+00 + 1.31282021e+00 1.32669294e+00 1.34070062e+00 1.35484429e+00 1.36912500e+00 + 1.38354380e+00 1.39810174e+00 1.41279987e+00 1.42763926e+00 1.44262095e+00 + 1.45774600e+00 1.47301546e+00 1.48843041e+00 1.50399188e+00 1.51970095e+00 + 1.53555866e+00 1.55156608e+00 1.56772426e+00 1.58403426e+00 1.60049713e+00 + 1.61711393e+00 1.63388570e+00 1.65081351e+00 1.66789840e+00 1.68514141e+00 + 1.70254358e+00 1.72010597e+00 1.73782961e+00 1.75571552e+00 1.77376475e+00 + 1.79197832e+00 1.81035726e+00 1.82890257e+00 1.84761528e+00 1.86649640e+00 + 1.88554692e+00 1.90476784e+00 1.92416016e+00 1.94372486e+00 1.96346292e+00 + 1.98337531e+00 2.00346299e+00 2.02372692e+00 2.04416804e+00 2.06478730e+00 + 2.08558562e+00 2.10656392e+00 2.12772312e+00 2.14906411e+00 2.17058779e+00 + 2.19229503e+00 2.21418670e+00 2.23626366e+00 2.25852674e+00 2.28097679e+00 + 2.30361461e+00 2.32644102e+00 2.34945680e+00 2.37266272e+00 2.39605955e+00 + 2.41964804e+00 2.44342891e+00 2.46740287e+00 2.49157062e+00 2.51593285e+00 + 2.54049020e+00 2.56524333e+00 2.59019286e+00 2.61533938e+00 2.64068350e+00 + 2.66622577e+00 2.69196673e+00 2.71790690e+00 2.74404680e+00 2.77038689e+00 + 2.79692763e+00 2.82366945e+00 2.85061275e+00 2.87775793e+00 2.90510534e+00 + 2.93265530e+00 2.96040813e+00 2.98836411e+00 3.01652347e+00 3.04488646e+00 + 3.07345326e+00 3.10222404e+00 3.13119894e+00 3.16037805e+00 3.18976147e+00 + 3.21934922e+00 3.24914133e+00 3.27913778e+00 3.30933850e+00 3.33974343e+00 + 3.37035242e+00 3.40116534e+00 3.43218198e+00 3.46340213e+00 3.49482552e+00 + 3.52645185e+00 3.55828079e+00 3.59031197e+00 3.62254496e+00 3.65497933e+00 + 3.68761457e+00 3.72045016e+00 3.75348554e+00 3.78672008e+00 3.82015313e+00 + 3.85378401e+00 3.88761196e+00 3.92163622e+00 3.95585596e+00 3.99027032e+00 + 4.02487837e+00 4.05967918e+00 4.09467173e+00 4.12985498e+00 4.16522784e+00 + 4.20078917e+00 4.23653779e+00 4.27247247e+00 4.30859194e+00 4.34489485e+00 + 4.38137985e+00 4.41804551e+00 4.45489037e+00 4.49191289e+00 4.52911153e+00 + 4.56648465e+00 4.60403061e+00 4.64174767e+00 4.67963408e+00 4.71768803e+00 + 4.75590765e+00 4.79429103e+00 4.83283620e+00 4.87154114e+00 4.91040381e+00 + 4.94942207e+00 4.98859378e+00 5.02791670e+00 5.06738858e+00 5.10700710e+00 + 5.14676990e+00 5.18667457e+00 5.22671863e+00 5.26689957e+00 5.30721483e+00 + 5.34766180e+00 5.38823781e+00 5.42894016e+00 5.46976609e+00 5.51071278e+00 + 5.55177738e+00 5.59295700e+00 5.63424868e+00 5.67564943e+00 5.71715620e+00 + 5.75876591e+00 5.80047542e+00 5.84228156e+00 5.88418111e+00 5.92617080e+00 + 5.96824732e+00 6.01040733e+00 6.05264743e+00 6.09496419e+00 6.13735413e+00 + 6.17981376e+00 6.22233950e+00 6.26492779e+00 6.30757498e+00 6.35027743e+00 + 6.39303142e+00 6.43583324e+00 6.47867912e+00 6.52156525e+00 6.56448781e+00 + 6.60744295e+00 6.65042676e+00 6.69343534e+00 6.73646474e+00 6.77951098e+00 + 6.82257007e+00 6.86563800e+00 6.90871071e+00 6.95178414e+00 6.99485420e+00 + 7.03791679e+00 7.08096779e+00 7.12400304e+00 7.16701841e+00 7.21000970e+00 + 7.25297275e+00 7.29590336e+00 7.33879731e+00 7.38165039e+00 7.42445838e+00 + 7.46721705e+00 7.50992216e+00 7.55256947e+00 7.59515474e+00 7.63767373e+00 + 7.68012218e+00 7.72249588e+00 7.76479056e+00 7.80700201e+00 7.84912598e+00 + 7.89115827e+00 7.93309466e+00 7.97493094e+00 8.01666293e+00 8.05828645e+00 + 8.09979734e+00 8.14119143e+00 8.18246462e+00 8.22361278e+00 8.26463181e+00 + 8.30551766e+00 8.34626626e+00 8.38687359e+00 8.42733566e+00 8.46764848e+00 + 8.50780811e+00 8.54781063e+00 8.58765216e+00 8.62732884e+00 8.66683685e+00 + 8.70617239e+00 8.74533171e+00 8.78431109e+00 8.82310687e+00 8.86171538e+00 + 8.90013304e+00 8.93835627e+00 8.97638157e+00 9.01420545e+00 9.05182449e+00 + 9.08923530e+00 9.12643453e+00 9.16341889e+00 9.20018514e+00 9.23673009e+00 + 9.27305057e+00 9.30914350e+00 9.34500584e+00 9.38063458e+00 9.41602679e+00 + 9.45117958e+00 9.48609012e+00 9.52075564e+00 9.55517340e+00 9.58934075e+00 + 9.62325508e+00 9.65691384e+00 9.69031453e+00 9.72345472e+00 9.75633204e+00 + 9.78894416e+00 9.82128884e+00 9.85336387e+00 9.88516712e+00 9.91669651e+00 + 9.94795003e+00 9.97892573e+00 1.00096217e+01 1.00400361e+01 1.00701673e+01 + 1.01000134e+01 1.01295728e+01 1.01588440e+01 1.01878254e+01 1.02165155e+01 + 1.02449131e+01 1.02730167e+01 1.03008250e+01 1.03283369e+01 1.03555512e+01 + 1.03824668e+01 1.04090827e+01 1.04353979e+01 1.04614115e+01 1.04871227e+01 + 1.05125307e+01 1.05376347e+01 1.05624341e+01 1.05869282e+01 1.06111166e+01 + 1.06349988e+01 1.06585742e+01 1.06818426e+01 1.07048035e+01 1.07274568e+01 + 1.07498023e+01 1.07718397e+01 1.07935690e+01 1.08149902e+01 1.08361032e+01 + 1.08569082e+01 1.08774051e+01 1.08975943e+01 1.09174759e+01 1.09370501e+01 + 1.09563174e+01 1.09752780e+01 1.09939325e+01 1.10122811e+01 1.10303246e+01 + 1.10480633e+01 1.10654980e+01 1.10826292e+01 1.10994577e+01 1.11159841e+01 + 1.11322093e+01 1.11481341e+01 1.11637593e+01 1.11790858e+01 1.11941146e+01 + 1.12088466e+01 1.12232829e+01 1.12374245e+01 1.12512725e+01 1.12648279e+01 + 1.12780921e+01 1.12910660e+01 1.13037511e+01 1.13161484e+01 1.13282594e+01 + 1.13400853e+01 1.13516274e+01 1.13628872e+01 1.13738660e+01 1.13845653e+01 + 1.13949865e+01 1.14051310e+01 1.14150005e+01 1.14245965e+01 1.14339203e+01 + 1.14429738e+01 1.14517584e+01 1.14602758e+01 1.14685276e+01 1.14765154e+01 + 1.14842410e+01 1.14917060e+01 1.14989121e+01 1.15058611e+01 1.15125547e+01 + 1.15189947e+01 1.15251829e+01 1.15311209e+01 1.15368107e+01 1.15422540e+01 + 1.15474527e+01 1.15524086e+01 1.15571235e+01 1.15615993e+01 1.15658378e+01 + 1.15698410e+01 1.15736107e+01 1.15771488e+01 1.15804572e+01 1.15835378e+01 + 1.15863925e+01 1.15890232e+01 1.15914318e+01 1.15936202e+01 1.15955905e+01 + 1.15973444e+01 1.15988840e+01 1.16002111e+01 1.16013277e+01 1.16022357e+01 + 1.16029371e+01 1.16034338e+01 1.16037276e+01 1.16038207e+01 1.16037148e+01 + 1.16034120e+01 1.16029141e+01 1.16022230e+01 1.16013408e+01 1.16002692e+01 + 1.15990103e+01 1.15975659e+01 1.15959380e+01 1.15941284e+01 1.15921390e+01 + 1.15899718e+01 1.15876286e+01 1.15851113e+01 1.15824217e+01 1.15795618e+01 + 1.15765334e+01 1.15733384e+01 1.15699786e+01 1.15664558e+01 1.15627718e+01 + 1.15589286e+01 1.15549279e+01 1.15507715e+01 1.15464612e+01 1.15419987e+01 + 1.15373860e+01 1.15326247e+01 1.15277166e+01 1.15226635e+01 1.15174671e+01 + 1.15121291e+01 1.15066512e+01 1.15010352e+01 1.14952827e+01 1.14893955e+01 + 1.14833752e+01 1.14772235e+01 1.14709421e+01 1.14645325e+01 1.14579965e+01 + 1.14513356e+01 1.14445514e+01 1.14376456e+01 1.14306198e+01 1.14234754e+01 + 1.14162142e+01 1.14088375e+01 1.14013471e+01 1.13937443e+01 1.13860308e+01 + 1.13782080e+01 1.13702775e+01 1.13622406e+01 1.13540989e+01 1.13458538e+01 + 1.13375068e+01 1.13290592e+01 1.13205127e+01 1.13118684e+01 1.13031278e+01 + 1.12942924e+01 1.12853635e+01 1.12763423e+01 1.12672304e+01 1.12580290e+01 + 1.12487394e+01 1.12393630e+01 1.12299010e+01 1.12203547e+01 1.12107255e+01 + 1.12010145e+01 1.11912231e+01 1.11813524e+01 1.11714036e+01 1.11613781e+01 + 1.11512770e+01 1.11411014e+01 1.11308526e+01 1.11205317e+01 1.11101399e+01 + 1.10996784e+01 1.10891481e+01 1.10785504e+01 1.10678862e+01 1.10571567e+01 + 1.10463630e+01 1.10355060e+01 1.10245870e+01 1.10136069e+01 1.10025668e+01 + 1.09914677e+01 1.09803106e+01 1.09690966e+01 1.09578266e+01 1.09465015e+01 + 1.09351225e+01 1.09236904e+01 1.09122062e+01 1.09006708e+01 1.08890852e+01 + 1.08774503e+01 1.08657669e+01 1.08540361e+01 1.08422586e+01 1.08304354e+01 + 1.08185673e+01 1.08066552e+01 1.07947000e+01 1.07827024e+01 1.07706633e+01 + 1.07585835e+01 1.07464638e+01 1.07343051e+01 1.07221081e+01 1.07098735e+01 + 1.06976023e+01 1.06852951e+01 1.06729526e+01 1.06605757e+01 1.06481651e+01 + 1.06357214e+01 1.06232455e+01 1.06107379e+01 1.05981995e+01 1.05856309e+01 + 1.05730327e+01 1.05604057e+01 1.05477506e+01 1.05350679e+01 1.05223583e+01 + 1.05096226e+01 1.04968612e+01 1.04840748e+01 1.04712641e+01 1.04584297e+01 + 1.04455721e+01 1.04326919e+01 1.04197898e+01 1.04068663e+01 1.03939220e+01 + 1.03809575e+01 1.03679732e+01 1.03549698e+01 1.03419478e+01 1.03289077e+01 + 1.03158501e+01 1.03027754e+01 1.02896843e+01 1.02765771e+01 1.02634544e+01 + 1.02503168e+01 1.02371646e+01 1.02239984e+01 1.02108186e+01 1.01976257e+01 + 1.01844202e+01 1.01712025e+01 1.01579730e+01 1.01447323e+01 1.01314808e+01 + 1.01182188e+01 1.01049468e+01 1.00916652e+01 1.00783745e+01 1.00650751e+01 + 1.00517673e+01 1.00384515e+01 1.00251282e+01 1.00117977e+01 9.99846039e+00 + 9.98511668e+00 9.97176692e+00 9.95841148e+00 9.94505072e+00 9.93168499e+00 + 9.91831464e+00 9.90494002e+00 9.89156146e+00 9.87817931e+00 9.86479389e+00 + 9.85140552e+00 9.83801454e+00 9.82462125e+00 9.81122596e+00 9.79782899e+00 + 9.78443064e+00 9.77103121e+00 9.75763099e+00 9.74423026e+00 9.73082933e+00 + 9.71742846e+00 9.70402794e+00 9.69062803e+00 9.67722902e+00 9.66383116e+00 + 9.65043471e+00 9.63703994e+00 9.62364710e+00 9.61025643e+00 9.59686819e+00 + 9.58348261e+00 9.57009994e+00 9.55672041e+00 9.54334426e+00 9.52997170e+00 + 9.51660298e+00 9.50323830e+00 9.48987788e+00 9.47652195e+00 9.46317071e+00 + 9.44982438e+00 9.43648315e+00 9.42314723e+00 9.40981681e+00 9.39649211e+00 + 9.38317329e+00 9.36986057e+00 9.35655411e+00 9.34325412e+00 9.32996076e+00 + 9.31667422e+00 9.30339467e+00 9.29012228e+00 9.27685723e+00 9.26359969e+00 + 9.25034980e+00 9.23710775e+00 9.22387369e+00 9.21064777e+00 9.19743015e+00 + 9.18422098e+00 9.17102040e+00 9.15782858e+00 9.14464565e+00 9.13147175e+00 + 9.11830703e+00 9.10515161e+00 9.09200565e+00 9.07886926e+00 9.06574258e+00 + 9.05262574e+00 9.03951887e+00 9.02642209e+00 9.01333552e+00 9.00025928e+00 + 8.98719349e+00 8.97413827e+00 8.96109373e+00 8.94805998e+00 8.93503713e+00 + 8.92202530e+00 8.90902459e+00 8.89603510e+00 8.88305693e+00 8.87009019e+00 + 8.85713498e+00 8.84419139e+00 8.83125952e+00 8.81833946e+00 8.80543131e+00 + 8.79253516e+00 8.77965109e+00 8.76677920e+00 8.75391957e+00 8.74107228e+00 + 8.72823741e+00 8.71541505e+00 8.70260529e+00 8.68980818e+00 8.67702382e+00 + 8.66425228e+00 8.65149363e+00 8.63874794e+00 8.62601529e+00 8.61329575e+00 + 8.60058938e+00 8.58789625e+00 8.57521642e+00 8.56254997e+00 8.54989695e+00 + 8.53725743e+00 8.52463147e+00 8.51201913e+00 8.49942046e+00 8.48683552e+00 + 8.47426437e+00 8.46170706e+00 8.44916365e+00 8.43663420e+00 8.42411874e+00 + 8.41161733e+00 8.39913003e+00 8.38665687e+00 8.37419791e+00 8.36175319e+00 + 8.34932276e+00 8.33690667e+00 8.32450494e+00 8.31211764e+00 8.29974479e+00 + 8.28738645e+00 8.27504264e+00 8.26271341e+00 8.25039879e+00 8.23809882e+00 + 8.22581354e+00 8.21354298e+00 8.20128718e+00 8.18904617e+00 8.17681998e+00 + 8.16460864e+00 8.15241219e+00 8.14023065e+00 8.12806405e+00 8.11591243e+00 + 8.10377580e+00 8.09165420e+00 8.07954766e+00 8.06745619e+00 8.05537982e+00 + 8.04331859e+00 8.03127250e+00 8.01924158e+00 8.00722586e+00 7.99522536e+00 + 7.98324009e+00 7.97127008e+00 7.95931535e+00 7.94737591e+00 7.93545178e+00 + 7.92354299e+00 7.91164954e+00 7.89977146e+00 7.88790876e+00 7.87606145e+00 + 7.86422956e+00 7.85241308e+00 7.84061205e+00 7.82882646e+00 7.81705634e+00 + 7.80530170e+00 7.79356254e+00 7.78183887e+00 7.77013072e+00 7.75843808e+00 + 7.74676097e+00 7.73509939e+00 7.72345336e+00 7.71182288e+00 7.70020796e+00 + 7.68860861e+00 7.67702484e+00 7.66545664e+00 7.65390403e+00 7.64236701e+00 + 7.63084558e+00 7.61933976e+00 7.60784954e+00 7.59637493e+00 7.58491593e+00 + 7.57347255e+00 7.56204478e+00 7.55063263e+00 7.53923611e+00 7.52785521e+00 + 7.51648993e+00 7.50514027e+00 7.49380625e+00 7.48248784e+00 7.47118506e+00 + 7.45989791e+00 7.44862638e+00 7.43737047e+00 7.42613019e+00 7.41490552e+00 + 7.40369647e+00 7.39250303e+00 7.38132520e+00 7.37016298e+00 7.35901637e+00 + 7.34788536e+00 7.33676995e+00 7.32567012e+00 7.31458589e+00 7.30351724e+00 + 7.29246417e+00 7.28142668e+00 7.27040475e+00 7.25939839e+00 7.24840758e+00 + 7.23743232e+00 7.22647260e+00 7.21552843e+00 7.20459978e+00 7.19368666e+00 + 7.18278905e+00 7.17190695e+00 7.16104035e+00 7.15018924e+00 7.13935361e+00 + 7.12853346e+00 7.11772878e+00 7.10693956e+00 7.09616578e+00 7.08540745e+00 + 7.07466454e+00 7.06393706e+00 7.05322498e+00 7.04252831e+00 7.03184703e+00 + 7.02118113e+00 7.01053060e+00 6.99989543e+00 6.98927560e+00 6.97867112e+00 + 6.96808196e+00 6.95750811e+00 6.94694957e+00 6.93640632e+00 6.92587836e+00 + 6.91536566e+00 6.90486821e+00 6.89438602e+00 6.88391905e+00 6.87346730e+00 + 6.86303076e+00 6.85260942e+00 6.84220325e+00 6.83181225e+00 6.82143641e+00 + 6.81107571e+00 6.80073014e+00 6.79039969e+00 6.78008434e+00 6.76978407e+00 + 6.75949888e+00 6.74922875e+00 6.73897367e+00 6.72873362e+00 6.71850858e+00 + 6.70829855e+00 6.69810351e+00 6.68792344e+00 6.67775834e+00 6.66760818e+00 + 6.65747295e+00 6.64735264e+00 6.63724722e+00 6.62715669e+00 6.61708104e+00 + 6.60702024e+00 6.59697427e+00 6.58694314e+00 6.57692681e+00 6.56692528e+00 + 6.55693852e+00 6.54696653e+00 6.53700928e+00 6.52706676e+00 6.51713896e+00 + 6.50722585e+00 6.49732743e+00 6.48744368e+00 6.47757458e+00 6.46772011e+00 + 6.45788025e+00 6.44805500e+00 6.43824434e+00 6.42844824e+00 6.41866669e+00 + 6.40889968e+00 6.39914719e+00 6.38940920e+00 6.37968570e+00 6.36997666e+00 + 6.36028208e+00 6.35060193e+00 6.34093620e+00 6.33128487e+00 6.32164792e+00 + 6.31202534e+00 6.30241711e+00 6.29282321e+00 6.28324363e+00 6.27367834e+00 + 6.26412734e+00 6.25459059e+00 6.24506810e+00 6.23555983e+00 6.22606577e+00 + 6.21658591e+00 6.20712022e+00 6.19766869e+00 6.18823131e+00 6.17880804e+00 + 6.16939888e+00 6.16000381e+00 6.15062281e+00 6.14125587e+00 6.13190295e+00 + 6.12256406e+00 6.11323916e+00 6.10392825e+00 6.09463130e+00 6.08534829e+00 + 6.07607921e+00 6.06682405e+00 6.05758277e+00 6.04835537e+00 6.03914183e+00 + 6.02994212e+00 6.02075624e+00 6.01158416e+00 6.00242586e+00 5.99328133e+00 + 5.98415054e+00 5.97503349e+00 5.96593015e+00 5.95684050e+00 5.94776453e+00 + 5.93870221e+00 5.92965354e+00 5.92061849e+00 5.91159704e+00 5.90258917e+00 + 5.89359488e+00 5.88461413e+00 5.87564691e+00 5.86669320e+00 5.85775299e+00 + 5.84882626e+00 5.83991298e+00 5.83101314e+00 5.82212673e+00 5.81325371e+00 + 5.80439408e+00 5.79554782e+00 5.78671491e+00 5.77789533e+00 5.76908906e+00 + 5.76029608e+00 5.75151638e+00 5.74274993e+00 5.73399672e+00 5.72525674e+00 + 5.71652996e+00 5.70781636e+00 5.69911593e+00 5.69042864e+00 5.68175449e+00 + 5.67309344e+00 5.66444549e+00 5.65581061e+00 5.64718879e+00 5.63858001e+00 + 5.62998425e+00 5.62140149e+00 5.61283171e+00 5.60427490e+00 5.59573104e+00 + 5.58720011e+00 5.57868208e+00 5.57017695e+00 5.56168469e+00 5.55320529e+00 + 5.54473873e+00 5.53628499e+00 5.52784405e+00 5.51941589e+00 5.51100050e+00 + 5.50259785e+00 5.49420794e+00 5.48583073e+00 5.47746622e+00 5.46911438e+00 + 5.46077521e+00 5.45244866e+00 5.44413474e+00 5.43583343e+00 5.42754469e+00 + 5.41926853e+00 5.41100491e+00 5.40275382e+00 5.39451524e+00 5.38628916e+00 + 5.37807556e+00 5.36987441e+00 5.36168571e+00 5.35350943e+00 5.34534555e+00 + 5.33719406e+00 5.32905493e+00 5.32092816e+00 5.31281372e+00 5.30471160e+00 + 5.29662178e+00 5.28854423e+00 5.28047895e+00 5.27242591e+00 5.26438509e+00 + 5.25635649e+00 5.24834007e+00 5.24033583e+00 5.23234374e+00 5.22436379e+00 + 5.21639596e+00 5.20844023e+00 5.20049659e+00 5.19256501e+00 5.18464548e+00 + 5.17673799e+00 5.16884250e+00 5.16095902e+00 5.15308751e+00 5.14522796e+00 + 5.13738036e+00 5.12954468e+00 5.12172091e+00 5.11390904e+00 5.10610903e+00 + 5.09832088e+00 5.09054457e+00 5.08278008e+00 5.07502740e+00 5.06728650e+00 + 5.05955737e+00 5.05184000e+00 5.04413435e+00 5.03644043e+00 5.02875820e+00 + 5.02108766e+00 5.01342878e+00 5.00578155e+00 4.99814595e+00 4.99052196e+00 + 4.98290957e+00 4.97530876e+00 4.96771951e+00 4.96014181e+00 4.95257563e+00 + 4.94502096e+00 4.93747779e+00 4.92994610e+00 4.92242586e+00 4.91491707e+00 + 4.90741970e+00 4.89993374e+00 4.89245917e+00 4.88499598e+00 4.87754414e+00 + 4.87010365e+00 4.86267447e+00 4.85525661e+00 4.84785004e+00 4.84045474e+00 + 4.83307069e+00 4.82569789e+00 4.81833631e+00 4.81098593e+00 4.80364675e+00 + 4.79631873e+00 4.78900188e+00 4.78169616e+00 4.77440157e+00 4.76711808e+00 + 4.75984568e+00 4.75258436e+00 4.74533409e+00 4.73809486e+00 4.73086666e+00 + 4.72364946e+00 4.71644325e+00 4.70924802e+00 4.70206374e+00 4.69489041e+00 + 4.68772800e+00 4.68057649e+00 4.67343589e+00 4.66630615e+00 4.65918728e+00 + 4.65207925e+00 4.64498204e+00 4.63789565e+00 4.63082005e+00 4.62375523e+00 + 4.61670117e+00 4.60965786e+00 4.60262527e+00 4.59560340e+00 4.58859223e+00 + 4.58159174e+00 4.57460191e+00 4.56762274e+00 4.56065419e+00 4.55369627e+00 + 4.54674894e+00 4.53981220e+00 4.53288603e+00 4.52597042e+00 4.51906534e+00 + 4.51217078e+00 4.50528673e+00 4.49841317e+00 4.49155008e+00 4.48469745e+00 + 4.47785527e+00 4.47102351e+00 4.46420216e+00 4.45739121e+00 4.45059063e+00 + 4.44380043e+00 4.43702057e+00 4.43025104e+00 4.42349183e+00 4.41674292e+00 + 4.41000430e+00 4.40327595e+00 4.39655786e+00 4.38985000e+00 4.38315237e+00 + 4.37646495e+00 4.36978772e+00 4.36312067e+00 4.35646378e+00 4.34981100e+00 + 4.34313007e+00 4.33641641e+00 4.32967019e+00 4.32289160e+00 4.31608082e+00 + 4.30923804e+00 4.30236343e+00 4.29545719e+00 4.28851949e+00 4.28155052e+00 + 4.27455047e+00 4.26751952e+00 4.26045786e+00 4.25336567e+00 4.24624314e+00 + 4.23909045e+00 4.23190779e+00 4.22469535e+00 4.21745331e+00 4.21018186e+00 + 4.20288119e+00 4.19555148e+00 4.18819292e+00 4.18080570e+00 4.17339000e+00 + 4.16594602e+00 4.15847393e+00 4.15097394e+00 4.14344622e+00 4.13589097e+00 + 4.12830837e+00 4.12069861e+00 4.11306189e+00 4.10539838e+00 4.09770828e+00 + 4.08999178e+00 4.08224906e+00 4.07448032e+00 4.06668575e+00 4.05886552e+00 + 4.05101984e+00 4.04314890e+00 4.03525287e+00 4.02733196e+00 4.01938635e+00 + 4.01141623e+00 4.00342179e+00 3.99540322e+00 3.98736072e+00 3.97929446e+00 + 3.97120464e+00 3.96309146e+00 3.95495510e+00 3.94679575e+00 3.93861359e+00 + 3.93040883e+00 3.92218166e+00 3.91393225e+00 3.90566080e+00 3.89736751e+00 + 3.88905256e+00 3.88071614e+00 3.87235844e+00 3.86397966e+00 3.85557998e+00 + 3.84715959e+00 3.83871868e+00 3.83025744e+00 3.82177607e+00 3.81327475e+00 + 3.80475367e+00 3.79621303e+00 3.78765300e+00 3.77907379e+00 3.77047558e+00 + 3.76185855e+00 3.75322291e+00 3.74456884e+00 3.73589653e+00 3.72720616e+00 + 3.71849793e+00 3.70977203e+00 3.70102864e+00 3.69226796e+00 3.68349016e+00 + 3.67469545e+00 3.66588401e+00 3.65705603e+00 3.64821169e+00 3.63935119e+00 + 3.63047471e+00 3.62158245e+00 3.61267458e+00 3.60375129e+00 3.59481278e+00 + 3.58585923e+00 3.57689083e+00 3.56790776e+00 3.55891022e+00 3.54989838e+00 + 3.54087244e+00 3.53183258e+00 3.52277899e+00 3.51371185e+00 3.50463135e+00 + 3.49553767e+00 3.48643101e+00 3.47731154e+00 3.46817945e+00 3.45903493e+00 + 3.44987815e+00 3.44070932e+00 3.43152860e+00 3.42233618e+00 3.41313225e+00 + 3.40391699e+00 3.39469059e+00 3.38545322e+00 3.37620507e+00 3.36694632e+00 + 3.35767716e+00 3.34839776e+00 3.33910832e+00 3.32980900e+00 3.32050000e+00 + 3.31118149e+00 3.30185365e+00 3.29251667e+00 3.28317072e+00 3.27381599e+00 + 3.26445265e+00 3.25508089e+00 3.24570088e+00 3.23631281e+00 3.22691684e+00 + 3.21751317e+00 3.20810196e+00 3.19868340e+00 3.18925766e+00 3.17982493e+00 + 3.17038537e+00 3.16093916e+00 3.15148649e+00 3.14202752e+00 3.13256244e+00 + 3.12309141e+00 3.11361462e+00 3.10413223e+00 3.09464443e+00 3.08515138e+00 + 3.07565326e+00 3.06615024e+00 3.05664250e+00 3.04713021e+00 3.03761354e+00 + 3.02809266e+00 3.01856774e+00 3.00903897e+00 2.99950650e+00 2.98997050e+00 + 2.98043116e+00 2.97088863e+00 2.96134309e+00 2.95179470e+00 2.94224364e+00 + 2.93269008e+00 2.92313417e+00 2.91357609e+00 2.90401601e+00 2.89445409e+00 + 2.88489050e+00 2.87532541e+00 2.86575898e+00 2.85619137e+00 2.84662275e+00 + 2.83705329e+00 2.82748315e+00 2.81791249e+00 2.80834148e+00 2.79877027e+00 + 2.78919904e+00 2.77962794e+00 2.77005714e+00 2.76048679e+00 2.75091706e+00 + 2.74134810e+00 2.73178009e+00 2.72221316e+00 2.71264750e+00 2.70308325e+00 + 2.69352056e+00 2.68395961e+00 2.67440055e+00 2.66484352e+00 2.65528870e+00 + 2.64573623e+00 2.63618628e+00 2.62663899e+00 2.61709452e+00 2.60755302e+00 + 2.59801465e+00 2.58847956e+00 2.57894791e+00 2.56941984e+00 2.55989551e+00 + 2.55037507e+00 2.54085867e+00 2.53134646e+00 2.52183858e+00 2.51233520e+00 + 2.50283645e+00 2.49334249e+00 2.48385347e+00 2.47436952e+00 2.46489080e+00 + 2.45541746e+00 2.44594964e+00 2.43648748e+00 2.42703114e+00 2.41758075e+00 + 2.40813646e+00 2.39869841e+00 2.38926675e+00 2.37984161e+00 2.37042314e+00 + 2.36101149e+00 2.35160679e+00 2.34220918e+00 2.33281880e+00 2.32343580e+00 + 2.31406030e+00 2.30469245e+00 2.29533239e+00 2.28598026e+00 2.27663618e+00 + 2.26730030e+00 2.25797276e+00 2.24865368e+00 2.23934320e+00 2.23004146e+00 + 2.22074859e+00 2.21146472e+00 2.20218999e+00 2.19292452e+00 2.18366846e+00 + 2.17442192e+00 2.16518504e+00 2.15595795e+00 2.14674078e+00 2.13753366e+00 + 2.12833672e+00 2.11915008e+00 2.10997386e+00 2.10080821e+00 2.09165324e+00 + 2.08250907e+00 2.07337585e+00 2.06425367e+00 2.05514268e+00 2.04604299e+00 + 2.03695473e+00 2.02787802e+00 2.01881298e+00 2.00975974e+00 2.00071840e+00 + 1.99168910e+00 1.98267194e+00 1.97366706e+00 1.96467456e+00 1.95569457e+00 + 1.94672720e+00 1.93777257e+00 1.92883080e+00 1.91990200e+00 1.91098628e+00 + 1.90208375e+00 1.89319455e+00 1.88431876e+00 1.87545652e+00 1.86660792e+00 + 1.85777308e+00 1.84895212e+00 1.84014514e+00 1.83135225e+00 1.82257356e+00 + 1.81380917e+00 1.80505921e+00 1.79632376e+00 1.78760295e+00 1.77889687e+00 + 1.77020564e+00 1.76152935e+00 1.75286811e+00 1.74422202e+00 1.73559119e+00 + 1.72697573e+00 1.71837572e+00 1.70979128e+00 1.70122250e+00 1.69266948e+00 + 1.68413233e+00 1.67561114e+00 1.66710601e+00 1.65861704e+00 1.65014433e+00 + 1.64168796e+00 1.63324805e+00 1.62482468e+00 1.61641795e+00 1.60802795e+00 + 1.59965478e+00 1.59129852e+00 1.58295928e+00 1.57463714e+00 1.56633220e+00 + 1.55804454e+00 1.54977426e+00 1.54152144e+00 1.53328618e+00 1.52506856e+00 + 1.51686867e+00 1.50868660e+00 1.50052243e+00 1.49237625e+00 1.48424814e+00 + 1.47613819e+00 1.46804649e+00 1.45997311e+00 1.45191814e+00 1.44388167e+00 + 1.43586376e+00 1.42786452e+00 1.41988400e+00 1.41192230e+00 1.40397950e+00 + 1.39605567e+00 1.38815089e+00 1.38026524e+00 1.37239879e+00 1.36455162e+00 + 1.35672382e+00 1.34891544e+00 1.34112657e+00 1.33335728e+00 1.32560765e+00 + 1.31787774e+00 1.31016763e+00 1.30247739e+00 1.29480709e+00 1.28715681e+00 + 1.27952660e+00 1.27191655e+00 1.26432671e+00 1.25675716e+00 1.24920796e+00 + 1.24167918e+00 1.23417089e+00 1.22668316e+00 1.21921604e+00 1.21176960e+00 + 1.20434390e+00 1.19693902e+00 1.18955500e+00 1.18219192e+00 1.17484983e+00 + 1.16752879e+00 1.16022887e+00 1.15295013e+00 1.14569262e+00 1.13845640e+00 + 1.13124153e+00 1.12404806e+00 1.11687606e+00 1.10972558e+00 1.10259667e+00 + 1.09548940e+00 1.08840380e+00 1.08133995e+00 1.07429788e+00 1.06727766e+00 + 1.06027933e+00 1.05330295e+00 1.04634857e+00 1.03941623e+00 1.03250599e+00 + 1.02561789e+00 1.01875199e+00 1.01190833e+00 1.00508696e+00 9.98287921e-01 + 9.91511267e-01 9.84757040e-01 9.78025284e-01 9.71316045e-01 9.64629366e-01 + 9.57965290e-01 9.51323860e-01 9.44705117e-01 9.38109103e-01 9.31535860e-01 + 9.24985426e-01 9.18457843e-01 9.11953148e-01 9.05471382e-01 8.99012580e-01 + 8.92576782e-01 8.86164024e-01 8.79774342e-01 8.73407772e-01 8.67064349e-01 + 8.60744107e-01 8.54447081e-01 8.48173305e-01 8.41922810e-01 8.35695630e-01 + 8.29491795e-01 8.23311338e-01 8.17154289e-01 8.11020678e-01 8.04910535e-01 + 7.98823888e-01 7.92760766e-01 7.86721197e-01 7.80705208e-01 7.74712826e-01 + 7.68744078e-01 7.62798988e-01 7.56877582e-01 7.50979884e-01 7.45105919e-01 + 7.39255710e-01 7.33429280e-01 7.27626651e-01 7.21847845e-01 7.16092884e-01 + 7.10361787e-01 7.04654576e-01 6.98971271e-01 6.93311889e-01 6.87676450e-01 + 6.82064972e-01 6.76477473e-01 6.70913968e-01 6.65374476e-01 6.59859012e-01 + 6.54367590e-01 6.48900227e-01 6.43456936e-01 6.38037732e-01 6.32642627e-01 + 6.27271635e-01 6.21924767e-01 6.16602035e-01 6.11303451e-01 6.06029026e-01 + 6.00778769e-01 5.95552690e-01 5.90350798e-01 5.85173102e-01 5.80019611e-01 + 5.74890331e-01 5.69785270e-01 5.64704434e-01 5.59647830e-01 5.54615462e-01 + 5.49607337e-01 5.44623459e-01 5.39663832e-01 5.34728459e-01 5.29817343e-01 + 5.24930488e-01 5.20067895e-01 5.15229565e-01 5.10415501e-01 5.05625702e-01 + 5.00860168e-01 4.96118900e-01 4.91401897e-01 4.86709156e-01 4.82040676e-01 + 4.77396456e-01 4.72776492e-01 4.68180780e-01 4.63609318e-01 4.59062100e-01 + 4.54539123e-01 4.50040381e-01 4.45565868e-01 4.41115579e-01 4.36689506e-01 + 4.32287643e-01 4.27909982e-01 4.23556515e-01 4.19227234e-01 4.14922129e-01 + 4.10641192e-01 4.06384413e-01 4.02151780e-01 3.97943285e-01 3.93758914e-01 + 3.89598658e-01 3.85462502e-01 3.81350436e-01 3.77262446e-01 3.73198519e-01 + 3.69158640e-01 3.65142795e-01 3.61150970e-01 3.57183150e-01 3.53239318e-01 + 3.49319459e-01 3.45423556e-01 3.41551592e-01 3.37703549e-01 3.33879411e-01 + 3.30079158e-01 3.26302772e-01 3.22550234e-01 3.18821524e-01 3.15116623e-01 + 3.11435510e-01 3.07778164e-01 3.04144564e-01 3.00534688e-01 2.96948515e-01 + 2.93386021e-01 2.89847185e-01 2.86331983e-01 2.82840390e-01 2.79372384e-01 + 2.75927939e-01 2.72507030e-01 2.69109633e-01 2.65735722e-01 2.62385270e-01 + 2.59058252e-01 2.55754640e-01 2.52474406e-01 2.49217524e-01 2.45983966e-01 + 2.42773702e-01 2.39586704e-01 2.36422943e-01 2.33282390e-01 2.30165013e-01 + 2.27070784e-01 2.23999671e-01 2.20951643e-01 2.17926669e-01 2.14924717e-01 + 2.11945755e-01 2.08989749e-01 2.06056668e-01 2.03146478e-01 2.00259146e-01 + 1.97394636e-01 1.94552916e-01 1.91733949e-01 1.88937702e-01 1.86164139e-01 + 1.83413223e-01 1.80684919e-01 1.77979190e-01 1.75296000e-01 1.72635311e-01 + 1.69997086e-01 1.67381287e-01 1.64787875e-01 1.62216813e-01 1.59668060e-01 + 1.57141579e-01 1.54637330e-01 1.52155272e-01 1.49695366e-01 1.47257571e-01 + 1.44841846e-01 1.42448150e-01 1.40076442e-01 1.37726679e-01 1.35398821e-01 + 1.33092823e-01 1.30808644e-01 1.28546240e-01 1.26305568e-01 1.24086585e-01 + 1.21889246e-01 1.19713507e-01 1.17559324e-01 1.15426652e-01 1.13315445e-01 + 1.11225658e-01 1.09157245e-01 1.07110161e-01 1.05084359e-01 1.03079791e-01 + 1.01096412e-01 9.91341744e-02 9.71930301e-02 9.52729316e-02 9.33738308e-02 + 9.14956795e-02 8.96384290e-02 8.78020304e-02 8.59864346e-02 8.41915922e-02 + 8.24174533e-02 8.06639682e-02 7.89310865e-02 7.72187578e-02 7.55269312e-02 + 7.38555559e-02 7.22045805e-02 7.05739536e-02 6.89636232e-02 6.73735375e-02 + 6.58036440e-02 6.42538904e-02 6.27242238e-02 6.12145912e-02 5.97249393e-02 + 5.82552147e-02 5.68053636e-02 5.53753320e-02 5.39650657e-02 5.25745103e-02 + 5.12036111e-02 4.98523131e-02 4.85205613e-02 4.72083003e-02 4.59154745e-02 + 4.46420281e-02 4.33879051e-02 4.21530492e-02 4.09374040e-02 3.97409128e-02 + 3.85635187e-02 3.74051646e-02 3.62657932e-02 3.51453469e-02 3.40437682e-02 + 3.29609990e-02 3.18969812e-02 3.08516564e-02 2.98249663e-02 2.88168520e-02 + 2.78272546e-02 2.68561150e-02 2.59033739e-02 2.49689719e-02 2.40528492e-02 + 2.31549461e-02 2.22752024e-02 2.14135579e-02 2.05699522e-02 1.97443248e-02 + 1.89366149e-02 1.81467615e-02 1.73747036e-02 1.66203799e-02 1.58837289e-02 + 1.51646890e-02 1.44631985e-02 1.37791954e-02 1.31126175e-02 1.24634028e-02 + 1.18314886e-02 1.12168125e-02 1.06193117e-02 1.00389234e-02 9.47558447e-03 + 8.92923178e-03 8.39980199e-03 7.88723163e-03 7.39145708e-03 6.91241458e-03 + 6.45004024e-03 6.00427002e-03 5.57503974e-03 5.16228511e-03 4.76594168e-03 + 4.38594487e-03 4.02222999e-03 3.67473222e-03 3.34338659e-03 3.02812803e-03 + 2.72889134e-03 2.44561121e-03 2.17822219e-03 1.92665872e-03 1.69085514e-03 + 1.47074567e-03 1.26626440e-03 1.07734534e-03 9.03922361e-04 7.45929254e-04 + 6.03299692e-04 4.75967247e-04 3.63865391e-04 2.66927494e-04 1.85086832e-04 + 1.18276582e-04 6.64298274e-05 2.94795605e-05 7.35868100e-06 0.00000000e+00 + 1.63504040e-02 1.64018897e-02 1.65831418e-02 1.67663967e-02 1.69516765e-02 + 1.71390036e-02 1.73284007e-02 1.75198905e-02 1.77134962e-02 1.79092413e-02 + 1.81071492e-02 1.83072440e-02 1.85095497e-02 1.87140908e-02 1.89208921e-02 + 1.91299784e-02 1.93413750e-02 1.95551074e-02 1.97712014e-02 1.99896832e-02 + 2.02105791e-02 2.04339157e-02 2.06597201e-02 2.08880195e-02 2.11188414e-02 + 2.13522138e-02 2.15881647e-02 2.18267227e-02 2.20679166e-02 2.23117755e-02 + 2.25583288e-02 2.28076063e-02 2.30596381e-02 2.33144546e-02 2.35720866e-02 + 2.38325651e-02 2.40959217e-02 2.43621881e-02 2.46313964e-02 2.49035791e-02 + 2.51787692e-02 2.54569998e-02 2.57383044e-02 2.60227172e-02 2.63102723e-02 + 2.66010045e-02 2.68949488e-02 2.71921409e-02 2.74926164e-02 2.77964118e-02 + 2.81035636e-02 2.84141090e-02 2.87280854e-02 2.90455306e-02 2.93664831e-02 + 2.96909816e-02 3.00190652e-02 3.03507735e-02 3.06861465e-02 3.10252247e-02 + 3.13680491e-02 3.17146610e-02 3.20651022e-02 3.24194151e-02 3.27776423e-02 + 3.31398271e-02 3.35060133e-02 3.38762449e-02 3.42505667e-02 3.46290239e-02 + 3.50116620e-02 3.53985274e-02 3.57896665e-02 3.61851268e-02 3.65849557e-02 + 3.69892017e-02 3.73979135e-02 3.78111403e-02 3.82289321e-02 3.86513391e-02 + 3.90784125e-02 3.95102037e-02 3.99467649e-02 4.03881486e-02 4.08344081e-02 + 4.12855972e-02 4.17417704e-02 4.22029828e-02 4.26692898e-02 4.31407479e-02 + 4.36174138e-02 4.40993450e-02 4.45865997e-02 4.50792366e-02 4.55773152e-02 + 4.60808954e-02 4.65900382e-02 4.71048048e-02 4.76252573e-02 4.81514585e-02 + 4.86834719e-02 4.92213615e-02 4.97651924e-02 5.03150299e-02 5.08709405e-02 + 5.14329912e-02 5.20012497e-02 5.25757846e-02 5.31566651e-02 5.37439612e-02 + 5.43377438e-02 5.49380844e-02 5.55450555e-02 5.61587301e-02 5.67791823e-02 + 5.74064868e-02 5.80407193e-02 5.86819562e-02 5.93302748e-02 5.99857533e-02 + 6.06484706e-02 6.13185066e-02 6.19959420e-02 6.26808586e-02 6.33733388e-02 + 6.40734660e-02 6.47813248e-02 6.54970002e-02 6.62205787e-02 6.69521473e-02 + 6.76917942e-02 6.84396085e-02 6.91956803e-02 6.99601006e-02 7.07329617e-02 + 7.15143565e-02 7.23043792e-02 7.31031250e-02 7.39106900e-02 7.47271715e-02 + 7.55526679e-02 7.63872785e-02 7.72311040e-02 7.80842458e-02 7.89468067e-02 + 7.98188906e-02 8.07006024e-02 8.15920484e-02 8.24933359e-02 8.34045733e-02 + 8.43258704e-02 8.52573380e-02 8.61990883e-02 8.71512346e-02 8.81138916e-02 + 8.90871750e-02 9.00712021e-02 9.10660912e-02 9.20719620e-02 9.30889356e-02 + 9.41171343e-02 9.51566819e-02 9.62077033e-02 9.72703251e-02 9.83446751e-02 + 9.94308824e-02 1.00529078e-01 1.01639393e-01 1.02761962e-01 1.03896920e-01 + 1.05044403e-01 1.06204549e-01 1.07377497e-01 1.08563390e-01 1.09762368e-01 + 1.10974576e-01 1.12200161e-01 1.13439268e-01 1.14692048e-01 1.15958651e-01 + 1.17239229e-01 1.18533935e-01 1.19842926e-01 1.21166358e-01 1.22504391e-01 + 1.23857185e-01 1.25224903e-01 1.26607709e-01 1.28005770e-01 1.29419252e-01 + 1.30848326e-01 1.32293163e-01 1.33753937e-01 1.35230823e-01 1.36723998e-01 + 1.38233642e-01 1.39759936e-01 1.41303062e-01 1.42863207e-01 1.44440557e-01 + 1.46035301e-01 1.47647630e-01 1.49277739e-01 1.50925822e-01 1.52592078e-01 + 1.54276705e-01 1.55979907e-01 1.57701886e-01 1.59442850e-01 1.61203007e-01 + 1.62982568e-01 1.64781746e-01 1.66600758e-01 1.68439819e-01 1.70299152e-01 + 1.72178979e-01 1.74079524e-01 1.76001016e-01 1.77943684e-01 1.79907761e-01 + 1.81893482e-01 1.83901085e-01 1.85930809e-01 1.87982898e-01 1.90057598e-01 + 1.92155156e-01 1.94275823e-01 1.96419852e-01 1.98587501e-01 2.00779028e-01 + 2.02994696e-01 2.05234768e-01 2.07499513e-01 2.09789201e-01 2.12104105e-01 + 2.14444503e-01 2.16810673e-01 2.19202899e-01 2.21621465e-01 2.24066661e-01 + 2.26538777e-01 2.29038110e-01 2.31564957e-01 2.34119619e-01 2.36702402e-01 + 2.39313613e-01 2.41953563e-01 2.44622567e-01 2.47320943e-01 2.50049013e-01 + 2.52807102e-01 2.55595537e-01 2.58414651e-01 2.61264780e-01 2.64146262e-01 + 2.67059441e-01 2.70004664e-01 2.72982279e-01 2.75992643e-01 2.79036111e-01 + 2.82113047e-01 2.85223816e-01 2.88368787e-01 2.91548334e-01 2.94762834e-01 + 2.98012670e-01 3.01298226e-01 3.04619893e-01 3.07978065e-01 3.11373140e-01 + 3.14805520e-01 3.18275613e-01 3.21783830e-01 3.25330585e-01 3.28916301e-01 + 3.32541400e-01 3.36206312e-01 3.39911471e-01 3.43657315e-01 3.47444287e-01 + 3.51272835e-01 3.55143411e-01 3.59056473e-01 3.63012483e-01 3.67011909e-01 + 3.71055221e-01 3.75142898e-01 3.79275422e-01 3.83453280e-01 3.87676964e-01 + 3.91946972e-01 3.96263808e-01 4.00627980e-01 4.05040001e-01 4.09500391e-01 + 4.14009675e-01 4.18568382e-01 4.23177049e-01 4.27836217e-01 4.32546434e-01 + 4.37308252e-01 4.42122230e-01 4.46988934e-01 4.51908933e-01 4.56882804e-01 + 4.61911131e-01 4.66994503e-01 4.72133513e-01 4.77328764e-01 4.82580863e-01 + 4.87890425e-01 4.93258069e-01 4.98684422e-01 5.04170119e-01 5.09715799e-01 + 5.15322109e-01 5.20989702e-01 5.26719239e-01 5.32511387e-01 5.38366819e-01 + 5.44286219e-01 5.50270272e-01 5.56319675e-01 5.62435131e-01 5.68617349e-01 + 5.74867046e-01 5.81184947e-01 5.87571784e-01 5.94028296e-01 6.00555231e-01 + 6.07153344e-01 6.13823397e-01 6.20566161e-01 6.27382414e-01 6.34272942e-01 + 6.41238540e-01 6.48280011e-01 6.55398166e-01 6.62593822e-01 6.69867808e-01 + 6.77220959e-01 6.84654120e-01 6.92168143e-01 6.99763890e-01 7.07442231e-01 + 7.15204044e-01 7.23050219e-01 7.30981650e-01 7.38999246e-01 7.47103919e-01 + 7.55296595e-01 7.63578206e-01 7.71949696e-01 7.80412016e-01 7.88966128e-01 + 7.97613003e-01 8.06353622e-01 8.15188976e-01 8.24120065e-01 8.33147899e-01 + 8.42273499e-01 8.51497895e-01 8.60822127e-01 8.70247246e-01 8.79774313e-01 + 8.89404400e-01 8.99138588e-01 9.08977970e-01 9.18923649e-01 9.28976738e-01 + 9.39138363e-01 9.49409658e-01 9.59791770e-01 9.70285857e-01 9.80893086e-01 + 9.91614639e-01 1.00245171e+00 1.01340549e+00 1.02447720e+00 1.03566807e+00 + 1.04697933e+00 1.05841224e+00 1.06996804e+00 1.08164802e+00 1.09345346e+00 + 1.10538566e+00 1.11744592e+00 1.12963556e+00 1.14195593e+00 1.15440835e+00 + 1.16699420e+00 1.17971484e+00 1.19257165e+00 1.20556603e+00 1.21869939e+00 + 1.23197314e+00 1.24538873e+00 1.25894760e+00 1.27265121e+00 1.28650104e+00 + 1.30049856e+00 1.31464528e+00 1.32894271e+00 1.34339238e+00 1.35799582e+00 + 1.37275460e+00 1.38767027e+00 1.40274442e+00 1.41797865e+00 1.43337455e+00 + 1.44893375e+00 1.46465790e+00 1.48054862e+00 1.49660760e+00 1.51283651e+00 + 1.52923704e+00 1.54581089e+00 1.56255979e+00 1.57948548e+00 1.59658969e+00 + 1.61387419e+00 1.63134077e+00 1.64899121e+00 1.66682733e+00 1.68485093e+00 + 1.70306386e+00 1.72146797e+00 1.74006512e+00 1.75885719e+00 1.77784608e+00 + 1.79703369e+00 1.81642195e+00 1.83601280e+00 1.85580819e+00 1.87581009e+00 + 1.89602048e+00 1.91644135e+00 1.93707473e+00 1.95792263e+00 1.97898710e+00 + 2.00027019e+00 2.02177398e+00 2.04350055e+00 2.06545200e+00 2.08763045e+00 + 2.11003801e+00 2.13267685e+00 2.15554911e+00 2.17865698e+00 2.20200263e+00 + 2.22558826e+00 2.24941610e+00 2.27348838e+00 2.29780733e+00 2.32237521e+00 + 2.34719430e+00 2.37226689e+00 2.39759526e+00 2.42318174e+00 2.44902865e+00 + 2.47513834e+00 2.50151315e+00 2.52815545e+00 2.55506762e+00 2.58225206e+00 + 2.60971116e+00 2.63744735e+00 2.66546305e+00 2.69376072e+00 2.72234279e+00 + 2.75121174e+00 2.78037005e+00 2.80982021e+00 2.83956470e+00 2.86960606e+00 + 2.89994679e+00 2.93058943e+00 2.96153652e+00 2.99279062e+00 3.02435428e+00 + 3.05623008e+00 3.08842060e+00 3.12092843e+00 3.15375616e+00 3.18690640e+00 + 3.22038177e+00 3.25418489e+00 3.28831837e+00 3.32278487e+00 3.35758701e+00 + 3.39272745e+00 3.42820884e+00 3.46403383e+00 3.50020509e+00 3.53672528e+00 + 3.57359708e+00 3.61082314e+00 3.64840616e+00 3.68634881e+00 3.72465376e+00 + 3.76332370e+00 3.80236131e+00 3.84176927e+00 3.88155025e+00 3.92170694e+00 + 3.96224202e+00 4.00315816e+00 4.04445802e+00 4.08614428e+00 4.12821960e+00 + 4.17068664e+00 4.21354806e+00 4.25680648e+00 4.30046456e+00 4.34452492e+00 + 4.38899019e+00 4.43386296e+00 4.47914586e+00 4.52484145e+00 4.57095233e+00 + 4.61748105e+00 4.66443016e+00 4.71180220e+00 4.75959968e+00 4.80782510e+00 + 4.85648096e+00 4.90556971e+00 4.95509379e+00 5.00505564e+00 5.05545765e+00 + 5.10630220e+00 5.15759165e+00 5.20932831e+00 5.26151451e+00 5.31415250e+00 + 5.36724454e+00 5.42079284e+00 5.47479959e+00 5.52926693e+00 5.58419699e+00 + 5.63959185e+00 5.69545356e+00 5.75178411e+00 5.80858549e+00 5.86585963e+00 + 5.92360840e+00 5.98183366e+00 6.04053721e+00 6.09972079e+00 6.15938611e+00 + 6.21953483e+00 6.28016856e+00 6.34128885e+00 6.40289720e+00 6.46499505e+00 + 6.52758380e+00 6.59066476e+00 6.65423922e+00 6.71830838e+00 6.78287339e+00 + 6.84793531e+00 6.91349517e+00 6.97955391e+00 7.04611241e+00 7.11317146e+00 + 7.18073180e+00 7.24879407e+00 7.31735886e+00 7.38642666e+00 7.45599788e+00 + 7.52607287e+00 7.59665186e+00 7.66773503e+00 7.73932244e+00 7.81141409e+00 + 7.88400986e+00 7.95710956e+00 8.03071290e+00 8.10481947e+00 8.17942878e+00 + 8.25454026e+00 8.33015318e+00 8.40626677e+00 8.48288011e+00 8.55999218e+00 + 8.63760187e+00 8.71570793e+00 8.79430901e+00 8.87340364e+00 8.95299024e+00 + 9.03306711e+00 9.11363242e+00 9.19468422e+00 9.27622044e+00 9.35823888e+00 + 9.44073721e+00 9.52371298e+00 9.60716359e+00 9.69108633e+00 9.77547834e+00 + 9.86033663e+00 9.94565806e+00 1.00314394e+01 1.01176771e+01 1.02043678e+01 + 1.02915077e+01 1.03790930e+01 1.04671196e+01 1.05555835e+01 1.06444803e+01 + 1.07338057e+01 1.08235550e+01 1.09137235e+01 1.10043062e+01 1.10952983e+01 + 1.11866943e+01 1.12784891e+01 1.13706770e+01 1.14632524e+01 1.15562095e+01 + 1.16495422e+01 1.17432444e+01 1.18373098e+01 1.19317319e+01 1.20265041e+01 + 1.21216196e+01 1.22170714e+01 1.23128523e+01 1.24089552e+01 1.25053726e+01 + 1.26020968e+01 1.26991201e+01 1.27964345e+01 1.28940320e+01 1.29919044e+01 + 1.30900431e+01 1.31884397e+01 1.32870854e+01 1.33859713e+01 1.34850885e+01 + 1.35844276e+01 1.36839794e+01 1.37837343e+01 1.38836827e+01 1.39838149e+01 + 1.40841207e+01 1.41845903e+01 1.42852132e+01 1.43859792e+01 1.44868777e+01 + 1.45878980e+01 1.46890294e+01 1.47902609e+01 1.48915815e+01 1.49929800e+01 + 1.50944450e+01 1.51959651e+01 1.52975288e+01 1.53991244e+01 1.55007401e+01 + 1.56023640e+01 1.57039840e+01 1.58055882e+01 1.59071642e+01 1.60086998e+01 + 1.61101825e+01 1.62116000e+01 1.63129394e+01 1.64141884e+01 1.65153340e+01 + 1.66163635e+01 1.67172641e+01 1.68180227e+01 1.69186264e+01 1.70190621e+01 + 1.71193167e+01 1.72193771e+01 1.73192300e+01 1.74188623e+01 1.75182606e+01 + 1.76174118e+01 1.77163024e+01 1.78149192e+01 1.79132487e+01 1.80112778e+01 + 1.81089930e+01 1.82063809e+01 1.83034283e+01 1.84001219e+01 1.84964482e+01 + 1.85923942e+01 1.86879464e+01 1.87830918e+01 1.88778172e+01 1.89721094e+01 + 1.90659553e+01 1.91593421e+01 1.92522566e+01 1.93446861e+01 1.94366178e+01 + 1.95280389e+01 1.96189368e+01 1.97092990e+01 1.97991129e+01 1.98883663e+01 + 1.99770470e+01 2.00651426e+01 2.01526413e+01 2.02395312e+01 2.03258004e+01 + 2.04114374e+01 2.04964306e+01 2.05807686e+01 2.06644403e+01 2.07474345e+01 + 2.08297404e+01 2.09113471e+01 2.09922441e+01 2.10724209e+01 2.11518673e+01 + 2.12305732e+01 2.13085287e+01 2.13857240e+01 2.14621496e+01 2.15377961e+01 + 2.16126544e+01 2.16867156e+01 2.17599708e+01 2.18324115e+01 2.19040294e+01 + 2.19748162e+01 2.20447641e+01 2.21138653e+01 2.21821123e+01 2.22494979e+01 + 2.23160149e+01 2.23816566e+01 2.24464162e+01 2.25102874e+01 2.25732640e+01 + 2.26353400e+01 2.26965099e+01 2.27567680e+01 2.28161091e+01 2.28745282e+01 + 2.29320206e+01 2.29885816e+01 2.30442069e+01 2.30988925e+01 2.31526346e+01 + 2.32054295e+01 2.32572738e+01 2.33081644e+01 2.33580984e+01 2.34070731e+01 + 2.34550860e+01 2.35021351e+01 2.35482182e+01 2.35933337e+01 2.36374799e+01 + 2.36806558e+01 2.37228600e+01 2.37640920e+01 2.38043509e+01 2.38436364e+01 + 2.38819484e+01 2.39192869e+01 2.39556521e+01 2.39910445e+01 2.40254649e+01 + 2.40589140e+01 2.40913931e+01 2.41229033e+01 2.41534463e+01 2.41830236e+01 + 2.42116373e+01 2.42392894e+01 2.42659822e+01 2.42917181e+01 2.43164999e+01 + 2.43403303e+01 2.43632125e+01 2.43851494e+01 2.44061447e+01 2.44262016e+01 + 2.44453241e+01 2.44635158e+01 2.44807810e+01 2.44971236e+01 2.45125481e+01 + 2.45270589e+01 2.45406606e+01 2.45533580e+01 2.45651561e+01 2.45760597e+01 + 2.45860741e+01 2.45952047e+01 2.46034567e+01 2.46108357e+01 2.46173474e+01 + 2.46229976e+01 2.46277920e+01 2.46317367e+01 2.46348378e+01 2.46371015e+01 + 2.46385339e+01 2.46391415e+01 2.46389307e+01 2.46379081e+01 2.46360803e+01 + 2.46334539e+01 2.46300357e+01 2.46258327e+01 2.46208515e+01 2.46150994e+01 + 2.46085832e+01 2.46013100e+01 2.45932871e+01 2.45845215e+01 2.45750206e+01 + 2.45647916e+01 2.45538418e+01 2.45421787e+01 2.45298095e+01 2.45167418e+01 + 2.45029829e+01 2.44885405e+01 2.44734220e+01 2.44576348e+01 2.44411867e+01 + 2.44240852e+01 2.44063377e+01 2.43879520e+01 2.43689357e+01 2.43492963e+01 + 2.43290414e+01 2.43081788e+01 2.42867159e+01 2.42646603e+01 2.42420198e+01 + 2.42188019e+01 2.41950141e+01 2.41706641e+01 2.41457594e+01 2.41203075e+01 + 2.40943160e+01 2.40677924e+01 2.40407441e+01 2.40131787e+01 2.39851036e+01 + 2.39565261e+01 2.39274536e+01 2.38978936e+01 2.38678533e+01 2.38373400e+01 + 2.38063610e+01 2.37749235e+01 2.37430347e+01 2.37107017e+01 2.36779316e+01 + 2.36447316e+01 2.36111085e+01 2.35770695e+01 2.35426214e+01 2.35077712e+01 + 2.34725257e+01 2.34368916e+01 2.34008758e+01 2.33644850e+01 2.33277258e+01 + 2.32906049e+01 2.32531287e+01 2.32153039e+01 2.31771368e+01 2.31386339e+01 + 2.30998016e+01 2.30606460e+01 2.30211736e+01 2.29813904e+01 2.29413026e+01 + 2.29009163e+01 2.28602376e+01 2.28192723e+01 2.27780264e+01 2.27365058e+01 + 2.26947163e+01 2.26526636e+01 2.26103534e+01 2.25677914e+01 2.25249831e+01 + 2.24819340e+01 2.24386496e+01 2.23951354e+01 2.23513966e+01 2.23074385e+01 + 2.22632664e+01 2.22188855e+01 2.21743008e+01 2.21295175e+01 2.20845404e+01 + 2.20393747e+01 2.19940251e+01 2.19484965e+01 2.19027936e+01 2.18569212e+01 + 2.18108840e+01 2.17646864e+01 2.17183332e+01 2.16718287e+01 2.16251775e+01 + 2.15783838e+01 2.15314521e+01 2.14843865e+01 2.14371913e+01 2.13898707e+01 + 2.13424287e+01 2.12948694e+01 2.12471969e+01 2.11994150e+01 2.11515276e+01 + 2.11035386e+01 2.10554518e+01 2.10072709e+01 2.09589996e+01 2.09106416e+01 + 2.08622003e+01 2.08136794e+01 2.07650822e+01 2.07164124e+01 2.06676732e+01 + 2.06188679e+01 2.05699999e+01 2.05210724e+01 2.04720886e+01 2.04230515e+01 + 2.03739645e+01 2.03248304e+01 2.02756522e+01 2.02264330e+01 2.01771757e+01 + 2.01278830e+01 2.00785580e+01 2.00292032e+01 1.99798215e+01 1.99304156e+01 + 1.98809881e+01 1.98315416e+01 1.97820787e+01 1.97326019e+01 1.96831137e+01 + 1.96336166e+01 1.95841129e+01 1.95346051e+01 1.94850955e+01 1.94355863e+01 + 1.93860798e+01 1.93365782e+01 1.92870838e+01 1.92375986e+01 1.91881247e+01 + 1.91386643e+01 1.90892193e+01 1.90397918e+01 1.89903837e+01 1.89409969e+01 + 1.88916334e+01 1.88422950e+01 1.87929836e+01 1.87437009e+01 1.86944486e+01 + 1.86452287e+01 1.85960426e+01 1.85468922e+01 1.84977791e+01 1.84487048e+01 + 1.83996709e+01 1.83506791e+01 1.83017308e+01 1.82528275e+01 1.82039707e+01 + 1.81551618e+01 1.81064023e+01 1.80576934e+01 1.80090367e+01 1.79604334e+01 + 1.79118848e+01 1.78633921e+01 1.78149568e+01 1.77665799e+01 1.77182627e+01 + 1.76700064e+01 1.76218121e+01 1.75736809e+01 1.75256141e+01 1.74776126e+01 + 1.74296775e+01 1.73818098e+01 1.73340107e+01 1.72862810e+01 1.72386219e+01 + 1.71910341e+01 1.71435187e+01 1.70960765e+01 1.70487086e+01 1.70014157e+01 + 1.69541986e+01 1.69070584e+01 1.68599957e+01 1.68130113e+01 1.67661061e+01 + 1.67192808e+01 1.66725362e+01 1.66258729e+01 1.65792917e+01 1.65327934e+01 + 1.64863785e+01 1.64400477e+01 1.63938017e+01 1.63476411e+01 1.63015666e+01 + 1.62555786e+01 1.62096779e+01 1.61638649e+01 1.61181402e+01 1.60725044e+01 + 1.60269580e+01 1.59815015e+01 1.59361354e+01 1.58908602e+01 1.58456763e+01 + 1.58005842e+01 1.57555844e+01 1.57106773e+01 1.56658633e+01 1.56211427e+01 + 1.55765161e+01 1.55319838e+01 1.54875461e+01 1.54432035e+01 1.53989562e+01 + 1.53548046e+01 1.53107491e+01 1.52667899e+01 1.52229273e+01 1.51791617e+01 + 1.51354933e+01 1.50919224e+01 1.50484493e+01 1.50050742e+01 1.49617974e+01 + 1.49186190e+01 1.48755394e+01 1.48325588e+01 1.47896772e+01 1.47468951e+01 + 1.47042125e+01 1.46616296e+01 1.46191466e+01 1.45767637e+01 1.45344810e+01 + 1.44922987e+01 1.44502169e+01 1.44082357e+01 1.43663553e+01 1.43245758e+01 + 1.42828974e+01 1.42413200e+01 1.41998439e+01 1.41584690e+01 1.41171956e+01 + 1.40760236e+01 1.40349532e+01 1.39939844e+01 1.39531172e+01 1.39123518e+01 + 1.38716881e+01 1.38311263e+01 1.37906663e+01 1.37503081e+01 1.37100519e+01 + 1.36698975e+01 1.36298452e+01 1.35898947e+01 1.35500462e+01 1.35102996e+01 + 1.34706550e+01 1.34311123e+01 1.33916715e+01 1.33523325e+01 1.33130954e+01 + 1.32739602e+01 1.32349267e+01 1.31959950e+01 1.31571650e+01 1.31184367e+01 + 1.30798100e+01 1.30412848e+01 1.30028611e+01 1.29645389e+01 1.29263180e+01 + 1.28881984e+01 1.28501800e+01 1.28122627e+01 1.27744466e+01 1.27367313e+01 + 1.26991170e+01 1.26616034e+01 1.26241906e+01 1.25868783e+01 1.25496665e+01 + 1.25125551e+01 1.24755440e+01 1.24386331e+01 1.24018222e+01 1.23651113e+01 + 1.23285002e+01 1.22919888e+01 1.22555770e+01 1.22192646e+01 1.21830515e+01 + 1.21469377e+01 1.21109229e+01 1.20750070e+01 1.20391899e+01 1.20034714e+01 + 1.19678515e+01 1.19323299e+01 1.18969065e+01 1.18615812e+01 1.18263537e+01 + 1.17912241e+01 1.17561920e+01 1.17212574e+01 1.16864200e+01 1.16516798e+01 + 1.16170365e+01 1.15824901e+01 1.15480403e+01 1.15136869e+01 1.14794298e+01 + 1.14452689e+01 1.14112039e+01 1.13772347e+01 1.13433612e+01 1.13095830e+01 + 1.12759001e+01 1.12423123e+01 1.12088194e+01 1.11754212e+01 1.11421175e+01 + 1.11089082e+01 1.10757931e+01 1.10427719e+01 1.10098445e+01 1.09770108e+01 + 1.09442704e+01 1.09116233e+01 1.08790693e+01 1.08466080e+01 1.08142395e+01 + 1.07819634e+01 1.07497795e+01 1.07176878e+01 1.06856879e+01 1.06537797e+01 + 1.06219629e+01 1.05902375e+01 1.05586031e+01 1.05270597e+01 1.04956069e+01 + 1.04642446e+01 1.04329726e+01 1.04017907e+01 1.03706986e+01 1.03396963e+01 + 1.03087834e+01 1.02779597e+01 1.02472252e+01 1.02165795e+01 1.01860224e+01 + 1.01555538e+01 1.01251735e+01 1.00948812e+01 1.00646767e+01 1.00345598e+01 + 1.00045304e+01 9.97458814e+00 9.94473290e+00 9.91496445e+00 9.88528258e+00 + 9.85568708e+00 9.82617774e+00 9.79675435e+00 9.76741671e+00 9.73816461e+00 + 9.70899782e+00 9.67991615e+00 9.65091938e+00 9.62200731e+00 9.59317971e+00 + 9.56443639e+00 9.53577712e+00 9.50720171e+00 9.47870993e+00 9.45030158e+00 + 9.42197644e+00 9.39373431e+00 9.36557497e+00 9.33749821e+00 9.30950383e+00 + 9.28159160e+00 9.25376132e+00 9.22601278e+00 9.19834576e+00 9.17076006e+00 + 9.14325546e+00 9.11583176e+00 9.08848873e+00 9.06122618e+00 9.03404388e+00 + 9.00694164e+00 8.97991924e+00 8.95297646e+00 8.92611310e+00 8.89932895e+00 + 8.87262380e+00 8.84599744e+00 8.81944966e+00 8.79298024e+00 8.76658899e+00 + 8.74027568e+00 8.71404012e+00 8.68788209e+00 8.66180139e+00 8.63579780e+00 + 8.60987112e+00 8.58402115e+00 8.55824766e+00 8.53255046e+00 8.50692933e+00 + 8.48138408e+00 8.45591449e+00 8.43052036e+00 8.40520148e+00 8.37995765e+00 + 8.35478866e+00 8.32969430e+00 8.30467437e+00 8.27972866e+00 8.25485698e+00 + 8.23005911e+00 8.20533485e+00 8.18068400e+00 8.15610636e+00 8.13160172e+00 + 8.10716987e+00 8.08281063e+00 8.05852378e+00 8.03430912e+00 8.01016645e+00 + 7.98609558e+00 7.96209630e+00 7.93816840e+00 7.91431170e+00 7.89052598e+00 + 7.86681106e+00 7.84316673e+00 7.81959279e+00 7.79608904e+00 7.77265530e+00 + 7.74929135e+00 7.72599701e+00 7.70277207e+00 7.67961634e+00 7.65652962e+00 + 7.63351172e+00 7.61056245e+00 7.58768160e+00 7.56486899e+00 7.54212441e+00 + 7.51944768e+00 7.49683860e+00 7.47429699e+00 7.45182263e+00 7.42941536e+00 + 7.40707496e+00 7.38480126e+00 7.36259406e+00 7.34045317e+00 7.31837840e+00 + 7.29636956e+00 7.27442647e+00 7.25254892e+00 7.23073674e+00 7.20898973e+00 + 7.18730772e+00 7.16569050e+00 7.14413790e+00 7.12264973e+00 7.10122580e+00 + 7.07986593e+00 7.05856993e+00 7.03733762e+00 7.01616881e+00 6.99506332e+00 + 6.97402096e+00 6.95304156e+00 6.93212493e+00 6.91127089e+00 6.89047925e+00 + 6.86974984e+00 6.84908248e+00 6.82847698e+00 6.80793316e+00 6.78745085e+00 + 6.76702986e+00 6.74667003e+00 6.72637116e+00 6.70613308e+00 6.68595562e+00 + 6.66583859e+00 6.64578183e+00 6.62578515e+00 6.60584838e+00 6.58597135e+00 + 6.56615387e+00 6.54639578e+00 6.52669691e+00 6.50705707e+00 6.48747609e+00 + 6.46795381e+00 6.44849005e+00 6.42908464e+00 6.40973740e+00 6.39044818e+00 + 6.37121679e+00 6.35204307e+00 6.33292684e+00 6.31386795e+00 6.29486621e+00 + 6.27592147e+00 6.25703355e+00 6.23820229e+00 6.21942752e+00 6.20070907e+00 + 6.18204679e+00 6.16344049e+00 6.14489002e+00 6.12639522e+00 6.10795591e+00 + 6.08957194e+00 6.07124314e+00 6.05296935e+00 6.03475041e+00 6.01658615e+00 + 5.99847642e+00 5.98042104e+00 5.96241987e+00 5.94447274e+00 5.92657949e+00 + 5.90873996e+00 5.89095400e+00 5.87322144e+00 5.85554212e+00 5.83791590e+00 + 5.82034260e+00 5.80282208e+00 5.78535418e+00 5.76793874e+00 5.75057561e+00 + 5.73326463e+00 5.71600564e+00 5.69879850e+00 5.68164305e+00 5.66453913e+00 + 5.64748659e+00 5.63048529e+00 5.61353506e+00 5.59663576e+00 5.57978723e+00 + 5.56298932e+00 5.54624189e+00 5.52954479e+00 5.51289785e+00 5.49630094e+00 + 5.47975391e+00 5.46325661e+00 5.44680888e+00 5.43041059e+00 5.41406158e+00 + 5.39776171e+00 5.38151083e+00 5.36530879e+00 5.34915546e+00 5.33305068e+00 + 5.31699432e+00 5.30098622e+00 5.28502624e+00 5.26911424e+00 5.25325008e+00 + 5.23743361e+00 5.22166470e+00 5.20594319e+00 5.19026895e+00 5.17464184e+00 + 5.15906171e+00 5.14352844e+00 5.12804187e+00 5.11260186e+00 5.09720829e+00 + 5.08186100e+00 5.06655986e+00 5.05130474e+00 5.03609550e+00 5.02093199e+00 + 5.00581409e+00 4.99074165e+00 4.97571455e+00 4.96073264e+00 4.94579579e+00 + 4.93090386e+00 4.91605673e+00 4.90125425e+00 4.88649630e+00 4.87178274e+00 + 4.85711343e+00 4.84248825e+00 4.82790707e+00 4.81336974e+00 4.79887615e+00 + 4.78442616e+00 4.77001963e+00 4.75565645e+00 4.74133647e+00 4.72705958e+00 + 4.71282564e+00 4.69863452e+00 4.68448609e+00 4.67038023e+00 4.65631681e+00 + 4.64229571e+00 4.62831678e+00 4.61437992e+00 4.60048499e+00 4.58663187e+00 + 4.57282043e+00 4.55905055e+00 4.54532210e+00 4.53163497e+00 4.51798901e+00 + 4.50438412e+00 4.49082017e+00 4.47729703e+00 4.46381458e+00 4.45037271e+00 + 4.43697129e+00 4.42361020e+00 4.41028931e+00 4.39700851e+00 4.38376768e+00 + 4.37056670e+00 4.35740544e+00 4.34428380e+00 4.33120164e+00 4.31815885e+00 + 4.30515532e+00 4.29219093e+00 4.27926555e+00 4.26637907e+00 4.25353138e+00 + 4.24072235e+00 4.22795188e+00 4.21521984e+00 4.20252613e+00 4.18987062e+00 + 4.17725320e+00 4.16467376e+00 4.15213218e+00 4.13962835e+00 4.12716216e+00 + 4.11473349e+00 4.10234223e+00 4.08998827e+00 4.07767150e+00 4.06539180e+00 + 4.05314906e+00 4.04094318e+00 4.02877403e+00 4.01664152e+00 4.00454553e+00 + 3.99248595e+00 3.98046268e+00 3.96847559e+00 3.95652460e+00 3.94460957e+00 + 3.93273042e+00 3.92088702e+00 3.90907928e+00 3.89730709e+00 3.88557033e+00 + 3.87386891e+00 3.86220271e+00 3.85057163e+00 3.83897557e+00 3.82741442e+00 + 3.81588807e+00 3.80439643e+00 3.79293938e+00 3.78151682e+00 3.77012865e+00 + 3.75877476e+00 3.74745506e+00 3.73616944e+00 3.72491779e+00 3.71370002e+00 + 3.70251602e+00 3.69136569e+00 3.68024894e+00 3.66916565e+00 3.65811573e+00 + 3.64709908e+00 3.63611560e+00 3.62516518e+00 3.61424774e+00 3.60336317e+00 + 3.59251136e+00 3.58169223e+00 3.57090568e+00 3.56015160e+00 3.54942990e+00 + 3.53874049e+00 3.52808325e+00 3.51745811e+00 3.50686495e+00 3.49630370e+00 + 3.48577424e+00 3.47527648e+00 3.46481033e+00 3.45437570e+00 3.44397248e+00 + 3.43360059e+00 3.42325993e+00 3.41295040e+00 3.40267192e+00 3.39242438e+00 + 3.38220770e+00 3.37202179e+00 3.36186654e+00 3.35174187e+00 3.34164769e+00 + 3.33158390e+00 3.32155042e+00 3.31154714e+00 3.30157399e+00 3.29163087e+00 + 3.28171769e+00 3.27183436e+00 3.26198078e+00 3.25215688e+00 3.24236256e+00 + 3.23259774e+00 3.22286231e+00 3.21315620e+00 3.20347932e+00 3.19383158e+00 + 3.18421289e+00 3.17462316e+00 3.16506231e+00 3.15553025e+00 3.14602689e+00 + 3.13655215e+00 3.12710594e+00 3.11768818e+00 3.10829878e+00 3.09893764e+00 + 3.08960470e+00 3.08029986e+00 3.07102305e+00 3.06177416e+00 3.05255313e+00 + 3.04335987e+00 3.03419429e+00 3.02505631e+00 3.01594584e+00 3.00686282e+00 + 2.99780714e+00 2.98877873e+00 2.97977752e+00 2.97080340e+00 2.96185631e+00 + 2.95293617e+00 2.94404288e+00 2.93517638e+00 2.92633658e+00 2.91752340e+00 + 2.90873676e+00 2.89997657e+00 2.89124277e+00 2.88253527e+00 2.87385399e+00 + 2.86519886e+00 2.85656979e+00 2.84796670e+00 2.83938952e+00 2.83083817e+00 + 2.82231258e+00 2.81381265e+00 2.80533833e+00 2.79688952e+00 2.78846616e+00 + 2.78006816e+00 2.77169546e+00 2.76334797e+00 2.75502561e+00 2.74672832e+00 + 2.73845602e+00 2.73020863e+00 2.72198607e+00 2.71378828e+00 2.70561518e+00 + 2.69746668e+00 2.68934273e+00 2.68124324e+00 2.67316815e+00 2.66511737e+00 + 2.65709084e+00 2.64908848e+00 2.64111022e+00 2.63315598e+00 2.62522570e+00 + 2.61731930e+00 2.60943672e+00 2.60157787e+00 2.59374268e+00 2.58593110e+00 + 2.57814304e+00 2.57037843e+00 2.56263721e+00 2.55491930e+00 2.54722463e+00 + 2.53955314e+00 2.53190474e+00 2.52427939e+00 2.51667699e+00 2.50909749e+00 + 2.50154082e+00 2.49400691e+00 2.48649568e+00 2.47900708e+00 2.47154102e+00 + 2.46409745e+00 2.45667630e+00 2.44927750e+00 2.44190098e+00 2.43454668e+00 + 2.42721452e+00 2.41990444e+00 2.41261638e+00 2.40535027e+00 2.39810604e+00 + 2.39088363e+00 2.38368297e+00 2.37650400e+00 2.36934664e+00 2.36221084e+00 + 2.35509653e+00 2.34800365e+00 2.34093212e+00 2.33388190e+00 2.32685290e+00 + 2.31984508e+00 2.31285835e+00 2.30589268e+00 2.29894797e+00 2.29202419e+00 + 2.28512125e+00 2.27823911e+00 2.27137769e+00 2.26453693e+00 2.25771678e+00 + 2.25091717e+00 2.24413803e+00 2.23737931e+00 2.23064095e+00 2.22392288e+00 + 2.21722504e+00 2.21054737e+00 2.20388982e+00 2.19725231e+00 2.19063479e+00 + 2.18403721e+00 2.17745949e+00 2.17090158e+00 2.16436343e+00 2.15784496e+00 + 2.15134613e+00 2.14486686e+00 2.13840711e+00 2.13196682e+00 2.12554592e+00 + 2.11914436e+00 2.11276208e+00 2.10639902e+00 2.10005512e+00 2.09373033e+00 + 2.08742458e+00 2.08113783e+00 2.07487001e+00 2.06862107e+00 2.06239095e+00 + 2.05617959e+00 2.04998693e+00 2.04381293e+00 2.03765752e+00 2.03150058e+00 + 2.02525094e+00 2.01889835e+00 2.01244387e+00 2.00588860e+00 1.99923363e+00 + 1.99248005e+00 1.98562896e+00 1.97868149e+00 1.97163875e+00 1.96450186e+00 + 1.95727197e+00 1.94995020e+00 1.94253771e+00 1.93503564e+00 1.92744516e+00 + 1.91976742e+00 1.91200360e+00 1.90415486e+00 1.89622239e+00 1.88820736e+00 + 1.88011098e+00 1.87193441e+00 1.86367888e+00 1.85534557e+00 1.84693568e+00 + 1.83845044e+00 1.82989104e+00 1.82125871e+00 1.81255466e+00 1.80378012e+00 + 1.79493630e+00 1.78602444e+00 1.77704576e+00 1.76800150e+00 1.75889289e+00 + 1.74972116e+00 1.74048755e+00 1.73119331e+00 1.72183966e+00 1.71242786e+00 + 1.70295915e+00 1.69343476e+00 1.68385594e+00 1.67422395e+00 1.66454001e+00 + 1.65480539e+00 1.64502132e+00 1.63518905e+00 1.62530982e+00 1.61538488e+00 + 1.60541547e+00 1.59540285e+00 1.58534824e+00 1.57525289e+00 1.56511804e+00 + 1.55494493e+00 1.54473479e+00 1.53448887e+00 1.52420839e+00 1.51389459e+00 + 1.50354870e+00 1.49317194e+00 1.48276553e+00 1.47233071e+00 1.46186869e+00 + 1.45138068e+00 1.44086791e+00 1.43033157e+00 1.41977288e+00 1.40919304e+00 + 1.39859326e+00 1.38797471e+00 1.37733861e+00 1.36668614e+00 1.35601847e+00 + 1.34533680e+00 1.33464230e+00 1.32393613e+00 1.31321947e+00 1.30249348e+00 + 1.29175931e+00 1.28101811e+00 1.27027104e+00 1.25951922e+00 1.24876381e+00 + 1.23800593e+00 1.22724670e+00 1.21648724e+00 1.20572867e+00 1.19497209e+00 + 1.18421861e+00 1.17346932e+00 1.16272530e+00 1.15198765e+00 1.14125743e+00 + 1.13053572e+00 1.11982358e+00 1.10912207e+00 1.09843223e+00 1.08775510e+00 + 1.07709172e+00 1.06644313e+00 1.05581033e+00 1.04519434e+00 1.03459617e+00 + 1.02401681e+00 1.01345726e+00 1.00291849e+00 9.92401492e-01 9.81907221e-01 + 9.71436639e-01 9.60990696e-01 9.50570336e-01 9.40176493e-01 9.29810093e-01 + 9.19472056e-01 9.09163289e-01 8.98884695e-01 8.88637166e-01 8.78421586e-01 + 8.68238831e-01 8.58089766e-01 8.47975250e-01 8.37896131e-01 8.27853250e-01 + 8.17847437e-01 8.07879515e-01 7.97950295e-01 7.88060583e-01 7.78211172e-01 + 7.68402847e-01 7.58636385e-01 7.48912551e-01 7.39232104e-01 7.29595791e-01 + 7.20004351e-01 7.10458511e-01 7.00958991e-01 6.91506501e-01 6.82101741e-01 + 6.72745401e-01 6.63438161e-01 6.54180693e-01 6.44973658e-01 6.35817706e-01 + 6.26713480e-01 6.17661611e-01 6.08662720e-01 5.99717420e-01 5.90826313e-01 + 5.81989990e-01 5.73209034e-01 5.64484016e-01 5.55815499e-01 5.47204035e-01 + 5.38650166e-01 5.30154423e-01 5.21717329e-01 5.13339396e-01 5.05021126e-01 + 4.96763010e-01 4.88565529e-01 4.80429157e-01 4.72354354e-01 4.64341571e-01 + 4.56391251e-01 4.48503824e-01 4.40679712e-01 4.32919326e-01 4.25223066e-01 + 4.17591324e-01 4.10024482e-01 4.02522909e-01 3.95086967e-01 3.87717007e-01 + 3.80413369e-01 3.73176384e-01 3.66006374e-01 3.58903648e-01 3.51868509e-01 + 3.44901247e-01 3.38002144e-01 3.31171470e-01 3.24409487e-01 3.17716446e-01 + 3.11092590e-01 3.04538150e-01 2.98053348e-01 2.91638397e-01 2.85293500e-01 + 2.79018849e-01 2.72814628e-01 2.66681011e-01 2.60618162e-01 2.54626235e-01 + 2.48705377e-01 2.42855722e-01 2.37077396e-01 2.31370518e-01 2.25735193e-01 + 2.20171521e-01 2.14679590e-01 2.09259479e-01 2.03911260e-01 1.98634994e-01 + 1.93430733e-01 1.88298520e-01 1.83238389e-01 1.78250365e-01 1.73334466e-01 + 1.68490697e-01 1.63719059e-01 1.59019540e-01 1.54392122e-01 1.49836778e-01 + 1.45353470e-01 1.40942156e-01 1.36602781e-01 1.32335284e-01 1.28139595e-01 + 1.24015636e-01 1.19963320e-01 1.15982553e-01 1.12073231e-01 1.08235245e-01 + 1.04468474e-01 1.00772792e-01 9.71480639e-02 9.35941475e-02 9.01108922e-02 + 8.66981398e-02 8.33557246e-02 8.00834733e-02 7.68812050e-02 7.37487314e-02 + 7.06858571e-02 6.76923789e-02 6.47680867e-02 6.19127631e-02 5.91261838e-02 + 5.64081173e-02 5.37583251e-02 5.11765620e-02 4.86625757e-02 4.62161076e-02 + 4.38368919e-02 4.15246567e-02 3.92791232e-02 3.71000065e-02 3.49870149e-02 + 3.29398508e-02 3.09582101e-02 2.90417828e-02 2.71902526e-02 2.54032973e-02 + 2.36805888e-02 2.20217931e-02 2.04265704e-02 1.88945754e-02 1.74254570e-02 + 1.60188586e-02 1.46744181e-02 1.33917682e-02 1.21705362e-02 1.10103441e-02 + 9.91080879e-03 8.87154218e-03 7.89215113e-03 6.97223762e-03 6.11139877e-03 + 5.30922700e-03 4.56531002e-03 3.87923100e-03 3.25056856e-03 2.67889694e-03 + 2.16378599e-03 1.70480133e-03 1.30150438e-03 9.53452457e-04 6.60198872e-04 + 4.21292975e-04 2.36280265e-04 1.04702458e-04 2.60975699e-05 0.00000000e+00 + 2.04047571e-06 2.05095161e-06 2.09195486e-06 2.13377786e-06 2.17643701e-06 + 2.21994900e-06 2.26433090e-06 2.30960010e-06 2.35577433e-06 2.40287169e-06 + 2.45091064e-06 2.49991000e-06 2.54988896e-06 2.60086712e-06 2.65286446e-06 + 2.70590133e-06 2.75999854e-06 2.81517728e-06 2.87145916e-06 2.92886625e-06 + 2.98742104e-06 3.04714647e-06 3.10806596e-06 3.17020336e-06 3.23358303e-06 + 3.29822981e-06 3.36416903e-06 3.43142652e-06 3.50002865e-06 3.57000228e-06 + 3.64137486e-06 3.71417433e-06 3.78842924e-06 3.86416867e-06 3.94142230e-06 + 4.02022042e-06 4.10059389e-06 4.18257420e-06 4.26619350e-06 4.35148453e-06 + 4.43848073e-06 4.52721619e-06 4.61772567e-06 4.71004464e-06 4.80420928e-06 + 4.90025648e-06 4.99822390e-06 5.09814990e-06 5.20007365e-06 5.30403510e-06 + 5.41007497e-06 5.51823482e-06 5.62855704e-06 5.74108485e-06 5.85586235e-06 + 5.97293451e-06 6.09234722e-06 6.21414726e-06 6.33838236e-06 6.46510120e-06 + 6.59435345e-06 6.72618974e-06 6.86066175e-06 6.99782215e-06 7.13772471e-06 + 7.28042424e-06 7.42597666e-06 7.57443900e-06 7.72586945e-06 7.88032734e-06 + 8.03787319e-06 8.19856875e-06 8.36247698e-06 8.52966210e-06 8.70018965e-06 + 8.87412642e-06 9.05154059e-06 9.23250167e-06 9.41708058e-06 9.60534964e-06 + 9.79738263e-06 9.99325479e-06 1.01930429e-05 1.03968252e-05 1.06046816e-05 + 1.08166935e-05 1.10329440e-05 1.12535179e-05 1.14785015e-05 1.17079831e-05 + 1.19420525e-05 1.21808015e-05 1.24243236e-05 1.26727143e-05 1.29260709e-05 + 1.31844927e-05 1.34480809e-05 1.37169388e-05 1.39911718e-05 1.42708873e-05 + 1.45561950e-05 1.48472067e-05 1.51440363e-05 1.54468002e-05 1.57556170e-05 + 1.60706078e-05 1.63918960e-05 1.67196075e-05 1.70538706e-05 1.73948164e-05 + 1.77425785e-05 1.80972932e-05 1.84590994e-05 1.88281389e-05 1.92045563e-05 + 1.95884992e-05 1.99801179e-05 2.03795660e-05 2.07869999e-05 2.12025794e-05 + 2.16264672e-05 2.20588295e-05 2.24998357e-05 2.29496586e-05 2.34084745e-05 + 2.38764631e-05 2.43538078e-05 2.48406958e-05 2.53373177e-05 2.58438682e-05 + 2.63605457e-05 2.68875528e-05 2.74250960e-05 2.79733858e-05 2.85326371e-05 + 2.91030692e-05 2.96849054e-05 3.02783738e-05 3.08837069e-05 3.15011420e-05 + 3.21309210e-05 3.27732907e-05 3.34285027e-05 3.40968139e-05 3.47784861e-05 + 3.54737864e-05 3.61829873e-05 3.69063666e-05 3.76442079e-05 3.83968003e-05 + 3.91644386e-05 3.99474237e-05 4.07460623e-05 4.15606675e-05 4.23915584e-05 + 4.32390606e-05 4.41035062e-05 4.49852339e-05 4.58845893e-05 4.68019247e-05 + 4.77375996e-05 4.86919807e-05 4.96654419e-05 5.06583647e-05 5.16711381e-05 + 5.27041590e-05 5.37578322e-05 5.48325706e-05 5.59287953e-05 5.70469358e-05 + 5.81874303e-05 5.93507257e-05 6.05372778e-05 6.17475516e-05 6.29820212e-05 + 6.42411705e-05 6.55254929e-05 6.68354915e-05 6.81716797e-05 6.95345810e-05 + 7.09247296e-05 7.23426700e-05 7.37889581e-05 7.52641604e-05 7.67688550e-05 + 7.83036314e-05 7.98690912e-05 8.14658477e-05 8.30945266e-05 8.47557661e-05 + 8.64502170e-05 8.81785434e-05 8.99414225e-05 9.17395450e-05 9.35736156e-05 + 9.54443528e-05 9.73524898e-05 9.92987741e-05 1.01283968e-04 1.03308851e-04 + 1.05374214e-04 1.07480868e-04 1.09629638e-04 1.11821367e-04 1.14056912e-04 + 1.16337149e-04 1.18662973e-04 1.21035295e-04 1.23455043e-04 1.25923167e-04 + 1.28440634e-04 1.31008428e-04 1.33627558e-04 1.36299049e-04 1.39023948e-04 + 1.41803323e-04 1.44638262e-04 1.47529876e-04 1.50479299e-04 1.53487686e-04 + 1.56556216e-04 1.59686091e-04 1.62878538e-04 1.66134807e-04 1.69456174e-04 + 1.72843941e-04 1.76299435e-04 1.79824010e-04 1.83419046e-04 1.87085954e-04 + 1.90826168e-04 1.94641156e-04 1.98532411e-04 2.02501458e-04 2.06549852e-04 + 2.10679180e-04 2.14891059e-04 2.19187140e-04 2.23569105e-04 2.28038673e-04 + 2.32597593e-04 2.37247653e-04 2.41990673e-04 2.46828513e-04 2.51763068e-04 + 2.56796271e-04 2.61930094e-04 2.67166549e-04 2.72507687e-04 2.77955601e-04 + 2.83512425e-04 2.89180337e-04 2.94961556e-04 3.00858349e-04 3.06873025e-04 + 3.13007940e-04 3.19265499e-04 3.25648153e-04 3.32158403e-04 3.38798798e-04 + 3.45571942e-04 3.52480486e-04 3.59527138e-04 3.66714659e-04 3.74045863e-04 + 3.81523625e-04 3.89150872e-04 3.96930593e-04 4.04865836e-04 4.12959709e-04 + 4.21215383e-04 4.29636094e-04 4.38225138e-04 4.46985881e-04 4.55921756e-04 + 4.65036262e-04 4.74332970e-04 4.83815523e-04 4.93487634e-04 5.03353093e-04 + 5.13415764e-04 5.23679589e-04 5.34148588e-04 5.44826864e-04 5.55718598e-04 + 5.66828057e-04 5.78159592e-04 5.89717643e-04 6.01506737e-04 6.13531492e-04 + 6.25796617e-04 6.38306917e-04 6.51067293e-04 6.64082741e-04 6.77358361e-04 + 6.90899352e-04 7.04711018e-04 7.18798769e-04 7.33168121e-04 7.47824704e-04 + 7.62774258e-04 7.78022638e-04 7.93575816e-04 8.09439883e-04 8.25621052e-04 + 8.42125661e-04 8.58960174e-04 8.76131183e-04 8.93645413e-04 9.11509723e-04 + 9.29731109e-04 9.48316707e-04 9.67273794e-04 9.86609795e-04 1.00633228e-03 + 1.02644898e-03 1.04696776e-03 1.06789666e-03 1.08924387e-03 1.11101776e-03 + 1.13322685e-03 1.15587984e-03 1.17898559e-03 1.20255316e-03 1.22659177e-03 + 1.25111082e-03 1.27611993e-03 1.30162888e-03 1.32764766e-03 1.35418646e-03 + 1.38125566e-03 1.40886586e-03 1.43702787e-03 1.46575272e-03 1.49505165e-03 + 1.52493613e-03 1.55541785e-03 1.58650875e-03 1.61822099e-03 1.65056700e-03 + 1.68355942e-03 1.71721118e-03 1.75153544e-03 1.78654563e-03 1.82225546e-03 + 1.85867890e-03 1.89583021e-03 1.93372392e-03 1.97237487e-03 2.01179817e-03 + 2.05200925e-03 2.09302385e-03 2.13485800e-03 2.17752809e-03 2.22105080e-03 + 2.26544317e-03 2.31072255e-03 2.35690665e-03 2.40401356e-03 2.45206169e-03 + 2.50106983e-03 2.55105716e-03 2.60204323e-03 2.65404797e-03 2.70709172e-03 + 2.76119524e-03 2.81637966e-03 2.87266659e-03 2.93007801e-03 2.98863639e-03 + 3.04836461e-03 3.10928602e-03 3.17142445e-03 3.23480418e-03 3.29944999e-03 + 3.36538715e-03 3.43264142e-03 3.50123910e-03 3.57120699e-03 3.64257244e-03 + 3.71536332e-03 3.78960809e-03 3.86533575e-03 3.94257589e-03 4.02135868e-03 + 4.10171490e-03 4.18367594e-03 4.26727380e-03 4.35254115e-03 4.43951127e-03 + 4.52821813e-03 4.61869637e-03 4.71098131e-03 4.80510898e-03 4.90111612e-03 + 4.99904022e-03 5.09891950e-03 5.20079293e-03 5.30470026e-03 5.41068205e-03 + 5.51877965e-03 5.62903523e-03 5.74149179e-03 5.85619321e-03 5.97318421e-03 + 6.09251043e-03 6.21421839e-03 6.33835555e-03 6.46497030e-03 6.59411200e-03 + 6.72583098e-03 6.86017857e-03 6.99720713e-03 7.13697005e-03 7.27952178e-03 + 7.42491784e-03 7.57321486e-03 7.72447059e-03 7.87874393e-03 8.03609494e-03 + 8.19658487e-03 8.36027618e-03 8.52723257e-03 8.69751901e-03 8.87120173e-03 + 9.04834830e-03 9.22902762e-03 9.41330992e-03 9.60126687e-03 9.79297152e-03 + 9.98849837e-03 1.01879234e-02 1.03913241e-02 1.05987794e-02 1.08103700e-02 + 1.10261779e-02 1.12462870e-02 1.14707827e-02 1.16997521e-02 1.19332840e-02 + 1.21714690e-02 1.24143995e-02 1.26621696e-02 1.29148754e-02 1.31726148e-02 + 1.34354876e-02 1.37035958e-02 1.39770430e-02 1.42559352e-02 1.45403802e-02 + 1.48304882e-02 1.51263713e-02 1.54281440e-02 1.57359229e-02 1.60498269e-02 + 1.63699774e-02 1.66964980e-02 1.70295147e-02 1.73691561e-02 1.77155533e-02 + 1.80688398e-02 1.84291520e-02 1.87966285e-02 1.91714111e-02 1.95536442e-02 + 1.99434748e-02 2.03410530e-02 2.07465318e-02 2.11600670e-02 2.15818178e-02 + 2.20119461e-02 2.24506171e-02 2.28979992e-02 2.33542642e-02 2.38195870e-02 + 2.42941460e-02 2.47781231e-02 2.52717037e-02 2.57750767e-02 2.62884346e-02 + 2.68119739e-02 2.73458947e-02 2.78904008e-02 2.84457003e-02 2.90120049e-02 + 2.95895307e-02 3.01784978e-02 3.07791305e-02 3.13916574e-02 3.20163116e-02 + 3.26533305e-02 3.33029562e-02 3.39654353e-02 3.46410192e-02 3.53299639e-02 + 3.60325306e-02 3.67489851e-02 3.74795985e-02 3.82246470e-02 3.89844119e-02 + 3.97591800e-02 4.05492435e-02 4.13549000e-02 4.21764528e-02 4.30142108e-02 + 4.38684889e-02 4.47396078e-02 4.56278942e-02 4.65336809e-02 4.74573070e-02 + 4.83991179e-02 4.93594654e-02 5.03387080e-02 5.13372105e-02 5.23553449e-02 + 5.33934898e-02 5.44520309e-02 5.55313610e-02 5.66318801e-02 5.77539956e-02 + 5.88981224e-02 6.00646830e-02 6.12541074e-02 6.24668337e-02 6.37033078e-02 + 6.49639840e-02 6.62493243e-02 6.75597995e-02 6.88958888e-02 7.02580798e-02 + 7.16468690e-02 7.30627619e-02 7.45062728e-02 7.59779252e-02 7.74782520e-02 + 7.90077955e-02 8.05671075e-02 8.21567496e-02 8.37772930e-02 8.54293193e-02 + 8.71134198e-02 8.88301965e-02 9.05802615e-02 9.23642375e-02 9.41827581e-02 + 9.60364675e-02 9.79260210e-02 9.98520852e-02 1.01815338e-01 1.03816468e-01 + 1.05856176e-01 1.07935174e-01 1.10054188e-01 1.12213953e-01 1.14415217e-01 + 1.16658742e-01 1.18945300e-01 1.21275677e-01 1.23650671e-01 1.26071094e-01 + 1.28537770e-01 1.31051536e-01 1.33613243e-01 1.36223754e-01 1.38883946e-01 + 1.41594711e-01 1.44356954e-01 1.47171591e-01 1.50039557e-01 1.52961797e-01 + 1.55939273e-01 1.58972958e-01 1.62063842e-01 1.65212929e-01 1.68421236e-01 + 1.71689797e-01 1.75019659e-01 1.78411885e-01 1.81867550e-01 1.85387748e-01 + 1.88973584e-01 1.92626180e-01 1.96346674e-01 2.00136216e-01 2.03995974e-01 + 2.07927128e-01 2.11930876e-01 2.16008430e-01 2.20161015e-01 2.24389873e-01 + 2.28696261e-01 2.33081449e-01 2.37546724e-01 2.42093385e-01 2.46722749e-01 + 2.51436143e-01 2.56234912e-01 2.61120413e-01 2.66094017e-01 2.71157111e-01 + 2.76311093e-01 2.81557374e-01 2.86897380e-01 2.92332550e-01 2.97864332e-01 + 3.03494190e-01 3.09223599e-01 3.15054044e-01 3.20987022e-01 3.27024041e-01 + 3.33166619e-01 3.39416285e-01 3.45774574e-01 3.52243033e-01 3.58823217e-01 + 3.65516687e-01 3.72325013e-01 3.79249770e-01 3.86292540e-01 3.93454910e-01 + 4.00738470e-01 4.08144814e-01 4.15675541e-01 4.23332251e-01 4.31116542e-01 + 4.39030017e-01 4.47074276e-01 4.55250916e-01 4.63561533e-01 4.72007720e-01 + 4.80591063e-01 4.89313143e-01 4.98175533e-01 5.07179799e-01 5.16327497e-01 + 5.25620170e-01 5.35059350e-01 5.44646556e-01 5.54383291e-01 5.64271040e-01 + 5.74311272e-01 5.84505434e-01 5.94854953e-01 6.05361233e-01 6.16025651e-01 + 6.26849561e-01 6.37834285e-01 6.48981116e-01 6.60291318e-01 6.71766115e-01 + 6.83406701e-01 6.95214229e-01 7.07189811e-01 7.19334521e-01 7.31649384e-01 + 7.44135384e-01 7.56793451e-01 7.69624469e-01 7.82629267e-01 7.95808620e-01 + 8.09163245e-01 8.22693799e-01 8.36400879e-01 8.50285015e-01 8.64346674e-01 + 8.78586252e-01 8.93004073e-01 9.07600389e-01 9.22375377e-01 9.37329134e-01 + 9.52461677e-01 9.67772941e-01 9.83262776e-01 9.98930942e-01 1.01477711e+00 + 1.03080087e+00 1.04700170e+00 1.06337899e+00 1.07993204e+00 1.09666004e+00 + 1.11356207e+00 1.13063713e+00 1.14788410e+00 1.16530174e+00 1.18288873e+00 + 1.20064361e+00 1.21856482e+00 1.23665070e+00 1.25489945e+00 1.27330916e+00 + 1.29187782e+00 1.31060328e+00 1.32948329e+00 1.34851546e+00 1.36769729e+00 + 1.38702617e+00 1.40649935e+00 1.42611396e+00 1.44586702e+00 1.46575542e+00 + 1.48577594e+00 1.50592523e+00 1.52619982e+00 1.54659613e+00 1.56711045e+00 + 1.58773895e+00 1.60847772e+00 1.62932269e+00 1.65026971e+00 1.67131450e+00 + 1.69245268e+00 1.71367978e+00 1.73499120e+00 1.75638226e+00 1.77784817e+00 + 1.79938405e+00 1.82098493e+00 1.84264575e+00 1.86436137e+00 1.88612657e+00 + 1.90793604e+00 1.92978441e+00 1.95166624e+00 1.97357603e+00 1.99550821e+00 + 2.01745715e+00 2.03941720e+00 2.06138263e+00 2.08334768e+00 2.10530657e+00 + 2.12725347e+00 2.14918254e+00 2.17108791e+00 2.19296369e+00 2.21480400e+00 + 2.23660295e+00 2.25835463e+00 2.28005318e+00 2.30169271e+00 2.32326738e+00 + 2.34477136e+00 2.36619884e+00 2.38754407e+00 2.40880133e+00 2.42996492e+00 + 2.45102924e+00 2.47198870e+00 2.49283781e+00 2.51357111e+00 2.53418325e+00 + 2.55466891e+00 2.57502290e+00 2.59524008e+00 2.61531541e+00 2.63524395e+00 + 2.65502086e+00 2.67464139e+00 2.69410090e+00 2.71339486e+00 2.73251886e+00 + 2.75146860e+00 2.77023990e+00 2.78882870e+00 2.80723106e+00 2.82544319e+00 + 2.84346139e+00 2.86128213e+00 2.87890199e+00 2.89631769e+00 2.91352609e+00 + 2.93052419e+00 2.94730912e+00 2.96387815e+00 2.98022870e+00 2.99635831e+00 + 3.01226468e+00 3.02794565e+00 3.04339918e+00 3.05862340e+00 3.07361655e+00 + 3.08837703e+00 3.10290336e+00 3.11719422e+00 3.13124840e+00 3.14506485e+00 + 3.15864262e+00 3.17198093e+00 3.18507910e+00 3.19793658e+00 3.21055297e+00 + 3.22292797e+00 3.23506140e+00 3.24695322e+00 3.25860348e+00 3.27001236e+00 + 3.28118016e+00 3.29210726e+00 3.30279418e+00 3.31324151e+00 3.32344997e+00 + 3.33342036e+00 3.34315358e+00 3.35265062e+00 3.36191256e+00 3.37094056e+00 + 3.37973589e+00 3.38829985e+00 3.39663387e+00 3.40473941e+00 3.41261803e+00 + 3.42027135e+00 3.42770104e+00 3.43490886e+00 3.44189660e+00 3.44866613e+00 + 3.45521936e+00 3.46155824e+00 3.46768480e+00 3.47360108e+00 3.47930919e+00 + 3.48481125e+00 3.49010944e+00 3.49520597e+00 3.50010308e+00 3.50480303e+00 + 3.50930811e+00 3.51362065e+00 3.51774299e+00 3.52167748e+00 3.52542650e+00 + 3.52899245e+00 3.53237772e+00 3.53558474e+00 3.53861594e+00 3.54147374e+00 + 3.54416059e+00 3.54667892e+00 3.54903119e+00 3.55121984e+00 3.55324732e+00 + 3.55511606e+00 3.55682850e+00 3.55838708e+00 3.55979422e+00 3.56105233e+00 + 3.56216384e+00 3.56313112e+00 3.56395658e+00 3.56464257e+00 3.56519147e+00 + 3.56560561e+00 3.56588732e+00 3.56603892e+00 3.56606270e+00 3.56596093e+00 + 3.56573588e+00 3.56538979e+00 3.56492486e+00 3.56434331e+00 3.56364730e+00 + 3.56283899e+00 3.56192051e+00 3.56089397e+00 3.55976147e+00 3.55852505e+00 + 3.55718677e+00 3.55574864e+00 3.55421264e+00 3.55258076e+00 3.55085491e+00 + 3.54903704e+00 3.54712902e+00 3.54513272e+00 3.54304999e+00 3.54088264e+00 + 3.53863246e+00 3.53630122e+00 3.53389065e+00 3.53140248e+00 3.52883839e+00 + 3.52620004e+00 3.52348907e+00 3.52070710e+00 3.51785572e+00 3.51493648e+00 + 3.51195092e+00 3.50890056e+00 3.50578689e+00 3.50261136e+00 3.49937543e+00 + 3.49608051e+00 3.49272798e+00 3.48931922e+00 3.48585557e+00 3.48233835e+00 + 3.47876886e+00 3.47514837e+00 3.47147815e+00 3.46775941e+00 3.46399337e+00 + 3.46018121e+00 3.45632410e+00 3.45242318e+00 3.44847957e+00 3.44449438e+00 + 3.44046868e+00 3.43640354e+00 3.43229999e+00 3.42815906e+00 3.42398175e+00 + 3.41976903e+00 3.41552187e+00 3.41124122e+00 3.40692800e+00 3.40258311e+00 + 3.39820746e+00 3.39380190e+00 3.38936729e+00 3.38490448e+00 3.38041427e+00 + 3.37589748e+00 3.37135489e+00 3.36678728e+00 3.36219540e+00 3.35757999e+00 + 3.35294177e+00 3.34828146e+00 3.34359975e+00 3.33889733e+00 3.33417485e+00 + 3.32943298e+00 3.32467235e+00 3.31989358e+00 3.31509730e+00 3.31028410e+00 + 3.30545456e+00 3.30060926e+00 3.29574877e+00 3.29087362e+00 3.28598437e+00 + 3.28108153e+00 3.27616563e+00 3.27123716e+00 3.26629662e+00 3.26134448e+00 + 3.25638123e+00 3.25140733e+00 3.24642321e+00 3.24142933e+00 3.23642612e+00 + 3.23141399e+00 3.22639337e+00 3.22136464e+00 3.21632821e+00 3.21128447e+00 + 3.20623378e+00 3.20117652e+00 3.19611304e+00 3.19104371e+00 3.18596885e+00 + 3.18088881e+00 3.17580392e+00 3.17071449e+00 3.16562085e+00 3.16052328e+00 + 3.15542211e+00 3.15031760e+00 3.14521006e+00 3.14009976e+00 3.13498697e+00 + 3.12987197e+00 3.12475499e+00 3.11963632e+00 3.11451618e+00 3.10939482e+00 + 3.10427248e+00 3.09914938e+00 3.09402576e+00 3.08890183e+00 3.08377781e+00 + 3.07865391e+00 3.07353033e+00 3.06840726e+00 3.06328491e+00 3.05816347e+00 + 3.05304312e+00 3.04792404e+00 3.04280640e+00 3.03769039e+00 3.03257616e+00 + 3.02746388e+00 3.02235372e+00 3.01724582e+00 3.01214034e+00 3.00703743e+00 + 3.00193723e+00 2.99683988e+00 2.99174552e+00 2.98665429e+00 2.98156632e+00 + 2.97648172e+00 2.97140063e+00 2.96632317e+00 2.96124945e+00 2.95617960e+00 + 2.95111371e+00 2.94605191e+00 2.94099429e+00 2.93594097e+00 2.93089203e+00 + 2.92584759e+00 2.92080773e+00 2.91577254e+00 2.91074213e+00 2.90571657e+00 + 2.90069596e+00 2.89568037e+00 2.89066989e+00 2.88566460e+00 2.88066457e+00 + 2.87566987e+00 2.87068059e+00 2.86569679e+00 2.86071855e+00 2.85574592e+00 + 2.85077897e+00 2.84581777e+00 2.84086238e+00 2.83591285e+00 2.83096925e+00 + 2.82603163e+00 2.82110005e+00 2.81617456e+00 2.81125521e+00 2.80634205e+00 + 2.80143513e+00 2.79653450e+00 2.79164020e+00 2.78675227e+00 2.78187077e+00 + 2.77699573e+00 2.77212719e+00 2.76726520e+00 2.76240978e+00 2.75756098e+00 + 2.75271883e+00 2.74788336e+00 2.74305462e+00 2.73823262e+00 2.73341741e+00 + 2.72860901e+00 2.72380745e+00 2.71901276e+00 2.71422497e+00 2.70944410e+00 + 2.70467018e+00 2.69990323e+00 2.69514328e+00 2.69039035e+00 2.68564445e+00 + 2.68090562e+00 2.67617386e+00 2.67144921e+00 2.66673167e+00 2.66202127e+00 + 2.65731803e+00 2.65262195e+00 2.64793306e+00 2.64325137e+00 2.63857689e+00 + 2.63390964e+00 2.62924963e+00 2.62459688e+00 2.61995139e+00 2.61531318e+00 + 2.61068225e+00 2.60605863e+00 2.60144230e+00 2.59683330e+00 2.59223161e+00 + 2.58763726e+00 2.58305025e+00 2.57847059e+00 2.57389828e+00 2.56933332e+00 + 2.56477573e+00 2.56022551e+00 2.55568267e+00 2.55114720e+00 2.54661911e+00 + 2.54209841e+00 2.53758510e+00 2.53307918e+00 2.52858066e+00 2.52408953e+00 + 2.51960579e+00 2.51512946e+00 2.51066052e+00 2.50619899e+00 2.50174486e+00 + 2.49729812e+00 2.49285879e+00 2.48842685e+00 2.48400232e+00 2.47958518e+00 + 2.47517543e+00 2.47077309e+00 2.46637813e+00 2.46199056e+00 2.45761038e+00 + 2.45323759e+00 2.44887217e+00 2.44451414e+00 2.44016348e+00 2.43582019e+00 + 2.43148426e+00 2.42715571e+00 2.42283451e+00 2.41852066e+00 2.41421416e+00 + 2.40991501e+00 2.40562320e+00 2.40133873e+00 2.39706158e+00 2.39279176e+00 + 2.38852925e+00 2.38427406e+00 2.38002617e+00 2.37578559e+00 2.37155229e+00 + 2.36732629e+00 2.36310756e+00 2.35889611e+00 2.35469192e+00 2.35049500e+00 + 2.34630533e+00 2.34212290e+00 2.33794771e+00 2.33377975e+00 2.32961902e+00 + 2.32546550e+00 2.32131918e+00 2.31718007e+00 2.31304815e+00 2.30892341e+00 + 2.30480585e+00 2.30069545e+00 2.29659221e+00 2.29249613e+00 2.28840718e+00 + 2.28432536e+00 2.28025067e+00 2.27618310e+00 2.27212263e+00 2.26806926e+00 + 2.26402298e+00 2.25998377e+00 2.25595164e+00 2.25192657e+00 2.24790854e+00 + 2.24389756e+00 2.23989362e+00 2.23589669e+00 2.23190679e+00 2.22792388e+00 + 2.22394797e+00 2.21997904e+00 2.21601709e+00 2.21206211e+00 2.20811408e+00 + 2.20417300e+00 2.20023885e+00 2.19631163e+00 2.19239132e+00 2.18847792e+00 + 2.18457142e+00 2.18067180e+00 2.17677906e+00 2.17289318e+00 2.16901416e+00 + 2.16514198e+00 2.16127664e+00 2.15741813e+00 2.15356642e+00 2.14972153e+00 + 2.14588342e+00 2.14205210e+00 2.13822755e+00 2.13440977e+00 2.13059873e+00 + 2.12679444e+00 2.12299688e+00 2.11920604e+00 2.11542191e+00 2.11164448e+00 + 2.10787374e+00 2.10410968e+00 2.10035229e+00 2.09660155e+00 2.09285746e+00 + 2.08912001e+00 2.08538918e+00 2.08166497e+00 2.07794736e+00 2.07423635e+00 + 2.07053191e+00 2.06683406e+00 2.06314276e+00 2.05945801e+00 2.05577981e+00 + 2.05210813e+00 2.04844298e+00 2.04478433e+00 2.04113218e+00 2.03748651e+00 + 2.03384733e+00 2.03021461e+00 2.02658834e+00 2.02296852e+00 2.01935513e+00 + 2.01574817e+00 2.01214761e+00 2.00855346e+00 2.00496570e+00 2.00138432e+00 + 1.99780931e+00 1.99424066e+00 1.99067835e+00 1.98712239e+00 1.98357275e+00 + 1.98002942e+00 1.97649240e+00 1.97296168e+00 1.96943724e+00 1.96591907e+00 + 1.96240717e+00 1.95890152e+00 1.95540211e+00 1.95190893e+00 1.94842197e+00 + 1.94494122e+00 1.94146667e+00 1.93799831e+00 1.93453613e+00 1.93108011e+00 + 1.92763025e+00 1.92418654e+00 1.92074896e+00 1.91731750e+00 1.91389217e+00 + 1.91047293e+00 1.90705979e+00 1.90365273e+00 1.90025175e+00 1.89685682e+00 + 1.89346795e+00 1.89008512e+00 1.88670832e+00 1.88333754e+00 1.87997276e+00 + 1.87661399e+00 1.87326121e+00 1.86991440e+00 1.86657357e+00 1.86323869e+00 + 1.85990976e+00 1.85658676e+00 1.85326969e+00 1.84995854e+00 1.84665329e+00 + 1.84335394e+00 1.84006048e+00 1.83677289e+00 1.83349116e+00 1.83021529e+00 + 1.82694527e+00 1.82368107e+00 1.82042271e+00 1.81717015e+00 1.81392340e+00 + 1.81068244e+00 1.80744727e+00 1.80421786e+00 1.80099422e+00 1.79777634e+00 + 1.79456419e+00 1.79135778e+00 1.78815710e+00 1.78496212e+00 1.78177285e+00 + 1.77858926e+00 1.77541136e+00 1.77223914e+00 1.76907257e+00 1.76591166e+00 + 1.76275639e+00 1.75960675e+00 1.75646274e+00 1.75332434e+00 1.75019154e+00 + 1.74706433e+00 1.74394271e+00 1.74082665e+00 1.73771617e+00 1.73461123e+00 + 1.73151184e+00 1.72841799e+00 1.72532965e+00 1.72224683e+00 1.71916952e+00 + 1.71609770e+00 1.71303137e+00 1.70997051e+00 1.70691511e+00 1.70386518e+00 + 1.70082068e+00 1.69778163e+00 1.69474800e+00 1.69171979e+00 1.68869699e+00 + 1.68567958e+00 1.68266757e+00 1.67966093e+00 1.67665967e+00 1.67366376e+00 + 1.67067320e+00 1.66768799e+00 1.66470810e+00 1.66173354e+00 1.65876429e+00 + 1.65580034e+00 1.65284169e+00 1.64988832e+00 1.64694023e+00 1.64399740e+00 + 1.64105983e+00 1.63812751e+00 1.63520042e+00 1.63227856e+00 1.62936192e+00 + 1.62645049e+00 1.62354426e+00 1.62064322e+00 1.61774737e+00 1.61485669e+00 + 1.61197117e+00 1.60909080e+00 1.60621558e+00 1.60334550e+00 1.60048054e+00 + 1.59762070e+00 1.59476597e+00 1.59191634e+00 1.58907180e+00 1.58623234e+00 + 1.58339795e+00 1.58056863e+00 1.57774436e+00 1.57492513e+00 1.57211094e+00 + 1.56930178e+00 1.56649764e+00 1.56369851e+00 1.56090438e+00 1.55811524e+00 + 1.55533108e+00 1.55255190e+00 1.54977768e+00 1.54700842e+00 1.54424410e+00 + 1.54148473e+00 1.53873028e+00 1.53598076e+00 1.53323614e+00 1.53049643e+00 + 1.52776162e+00 1.52503169e+00 1.52230664e+00 1.51958646e+00 1.51687113e+00 + 1.51416066e+00 1.51145503e+00 1.50875424e+00 1.50605826e+00 1.50336711e+00 + 1.50068077e+00 1.49799922e+00 1.49532247e+00 1.49265049e+00 1.48998329e+00 + 1.48732086e+00 1.48466319e+00 1.48201026e+00 1.47936207e+00 1.47671861e+00 + 1.47407988e+00 1.47144586e+00 1.46881655e+00 1.46619193e+00 1.46357201e+00 + 1.46095676e+00 1.45834619e+00 1.45574029e+00 1.45313903e+00 1.45054243e+00 + 1.44795047e+00 1.44536313e+00 1.44278042e+00 1.44020233e+00 1.43762884e+00 + 1.43505995e+00 1.43249565e+00 1.42993593e+00 1.42738079e+00 1.42483021e+00 + 1.42228418e+00 1.41974271e+00 1.41720578e+00 1.41467338e+00 1.41214550e+00 + 1.40962214e+00 1.40710330e+00 1.40458895e+00 1.40207909e+00 1.39957372e+00 + 1.39707283e+00 1.39457640e+00 1.39208443e+00 1.38959692e+00 1.38711385e+00 + 1.38463522e+00 1.38216102e+00 1.37969124e+00 1.37722587e+00 1.37476490e+00 + 1.37230834e+00 1.36985616e+00 1.36740837e+00 1.36496495e+00 1.36252589e+00 + 1.36009119e+00 1.35766085e+00 1.35523484e+00 1.35281317e+00 1.35039583e+00 + 1.34798281e+00 1.34557410e+00 1.34316969e+00 1.34076958e+00 1.33837375e+00 + 1.33598221e+00 1.33359495e+00 1.33121194e+00 1.32883320e+00 1.32645870e+00 + 1.32408845e+00 1.32172244e+00 1.31936065e+00 1.31700308e+00 1.31464973e+00 + 1.31230058e+00 1.30995562e+00 1.30761486e+00 1.30527828e+00 1.30294588e+00 + 1.30061764e+00 1.29829356e+00 1.29597364e+00 1.29365786e+00 1.29134622e+00 + 1.28903871e+00 1.28673532e+00 1.28443605e+00 1.28214089e+00 1.27984983e+00 + 1.27756286e+00 1.27527998e+00 1.27300118e+00 1.27072645e+00 1.26845578e+00 + 1.26618917e+00 1.26392662e+00 1.26166810e+00 1.25941362e+00 1.25716317e+00 + 1.25491674e+00 1.25267433e+00 1.25043592e+00 1.24820151e+00 1.24597109e+00 + 1.24374466e+00 1.24152221e+00 1.23930373e+00 1.23708921e+00 1.23487865e+00 + 1.23267204e+00 1.23046938e+00 1.22827064e+00 1.22607584e+00 1.22388496e+00 + 1.22169800e+00 1.21951494e+00 1.21733578e+00 1.21516052e+00 1.21298915e+00 + 1.21082165e+00 1.20865803e+00 1.20649827e+00 1.20434237e+00 1.20219033e+00 + 1.20004213e+00 1.19789777e+00 1.19575724e+00 1.19362053e+00 1.19148765e+00 + 1.18935857e+00 1.18723330e+00 1.18511183e+00 1.18299415e+00 1.18088025e+00 + 1.17877013e+00 1.17666378e+00 1.17456119e+00 1.17246236e+00 1.17036728e+00 + 1.16827595e+00 1.16618835e+00 1.16410448e+00 1.16202434e+00 1.15994791e+00 + 1.15787520e+00 1.15580618e+00 1.15374087e+00 1.15167924e+00 1.14962130e+00 + 1.14756704e+00 1.14551644e+00 1.14346951e+00 1.14142624e+00 1.13938662e+00 + 1.13735064e+00 1.13531831e+00 1.13328960e+00 1.13126452e+00 1.12924306e+00 + 1.12722521e+00 1.12521096e+00 1.12320032e+00 1.12119326e+00 1.11918980e+00 + 1.11718991e+00 1.11519360e+00 1.11320085e+00 1.11121167e+00 1.10922604e+00 + 1.10724396e+00 1.10526542e+00 1.10329041e+00 1.10131893e+00 1.09935098e+00 + 1.09738655e+00 1.09542562e+00 1.09346820e+00 1.09151427e+00 1.08956384e+00 + 1.08761689e+00 1.08567342e+00 1.08373343e+00 1.08179690e+00 1.07986383e+00 + 1.07793421e+00 1.07600805e+00 1.07408532e+00 1.07216603e+00 1.07025017e+00 + 1.06833774e+00 1.06642872e+00 1.06452311e+00 1.06262091e+00 1.06072211e+00 + 1.05882670e+00 1.05693467e+00 1.05504603e+00 1.05316076e+00 1.05127886e+00 + 1.04940033e+00 1.04752515e+00 1.04565332e+00 1.04378484e+00 1.04191969e+00 + 1.04005788e+00 1.03819939e+00 1.03634423e+00 1.03449238e+00 1.03264384e+00 + 1.03079860e+00 1.02895666e+00 1.02711801e+00 1.02528265e+00 1.02345057e+00 + 1.02162176e+00 1.01979621e+00 1.01797393e+00 1.01615491e+00 1.01433914e+00 + 1.01252661e+00 1.01071732e+00 1.00891126e+00 1.00710843e+00 1.00530883e+00 + 1.00351243e+00 1.00171925e+00 9.99929274e-01 9.98142494e-01 9.96358908e-01 + 9.94578508e-01 9.92801290e-01 9.91027248e-01 9.89256375e-01 9.87488667e-01 + 9.85724118e-01 9.83962722e-01 9.82204473e-01 9.80449366e-01 9.78697395e-01 + 9.76948555e-01 9.75202840e-01 9.73460244e-01 9.71720763e-01 9.69984389e-01 + 9.68251118e-01 9.66520945e-01 9.64793863e-01 9.63069867e-01 9.61348952e-01 + 9.59631112e-01 9.57916341e-01 9.56204635e-01 9.54495987e-01 9.52790393e-01 + 9.51087846e-01 9.49388341e-01 9.47691874e-01 9.45998438e-01 9.44308027e-01 + 9.42620638e-01 9.40936263e-01 9.39254899e-01 9.37576539e-01 9.35901178e-01 + 9.34228810e-01 9.32559431e-01 9.30893035e-01 9.29229617e-01 9.27569171e-01 + 9.25911692e-01 9.24257175e-01 9.22605615e-01 9.20957005e-01 9.19311342e-01 + 9.17668619e-01 9.16028831e-01 9.14391974e-01 9.12758042e-01 9.11127029e-01 + 9.09498931e-01 9.07873742e-01 9.06251457e-01 9.04632071e-01 9.03015578e-01 + 9.01401974e-01 8.99791254e-01 8.98183411e-01 8.96578442e-01 8.94976341e-01 + 8.93377102e-01 8.91780721e-01 8.90187193e-01 8.88596512e-01 8.87008674e-01 + 8.85423673e-01 8.83841504e-01 8.82262163e-01 8.80685643e-01 8.79111941e-01 + 8.77541050e-01 8.75972967e-01 8.74407686e-01 8.72845201e-01 8.71285509e-01 + 8.69728604e-01 8.68174481e-01 8.66623135e-01 8.65074560e-01 8.63528754e-01 + 8.61985709e-01 8.60445422e-01 8.58907887e-01 8.57373099e-01 8.55841054e-01 + 8.54311746e-01 8.52785172e-01 8.51261325e-01 8.49740201e-01 8.48201192e-01 + 8.46617382e-01 8.44988908e-01 8.43316032e-01 8.41599021e-01 8.39838147e-01 + 8.38033686e-01 8.36185917e-01 8.34295124e-01 8.32361596e-01 8.30385625e-01 + 8.28367507e-01 8.26307542e-01 8.24206035e-01 8.22063293e-01 8.19879628e-01 + 8.17655357e-01 8.15390797e-01 8.13086273e-01 8.10742111e-01 8.08358641e-01 + 8.05936196e-01 8.03475115e-01 8.00975736e-01 7.98438405e-01 7.95863469e-01 + 7.93251278e-01 7.90602186e-01 7.87916549e-01 7.85194728e-01 7.82437085e-01 + 7.79643987e-01 7.76815803e-01 7.73952904e-01 7.71055665e-01 7.68124463e-01 + 7.65159679e-01 7.62161696e-01 7.59130898e-01 7.56067674e-01 7.52972415e-01 + 7.49845513e-01 7.46687363e-01 7.43498364e-01 7.40278916e-01 7.37029420e-01 + 7.33750281e-01 7.30441906e-01 7.27104703e-01 7.23739083e-01 7.20345459e-01 + 7.16924244e-01 7.13475856e-01 7.10000712e-01 7.06499233e-01 7.02971840e-01 + 6.99418956e-01 6.95841006e-01 6.92238416e-01 6.88611614e-01 6.84961030e-01 + 6.81287093e-01 6.77590236e-01 6.73870892e-01 6.70129494e-01 6.66366479e-01 + 6.62582283e-01 6.58777343e-01 6.54952099e-01 6.51106988e-01 6.47242453e-01 + 6.43358933e-01 6.39456870e-01 6.35536708e-01 6.31598889e-01 6.27643857e-01 + 6.23672057e-01 6.19683933e-01 6.15679931e-01 6.11660495e-01 6.07626073e-01 + 6.03577111e-01 5.99514054e-01 5.95437349e-01 5.91347444e-01 5.87244785e-01 + 5.83129819e-01 5.79002992e-01 5.74864752e-01 5.70715544e-01 5.66555816e-01 + 5.62386013e-01 5.58206581e-01 5.54017965e-01 5.49820611e-01 5.45614964e-01 + 5.41401466e-01 5.37180563e-01 5.32952696e-01 5.28718309e-01 5.24477842e-01 + 5.20231737e-01 5.15980433e-01 5.11724371e-01 5.07463987e-01 5.03199721e-01 + 4.98932007e-01 4.94661282e-01 4.90387980e-01 4.86112534e-01 4.81835376e-01 + 4.77556936e-01 4.73277645e-01 4.68997930e-01 4.64718219e-01 4.60438936e-01 + 4.56160507e-01 4.51883352e-01 4.47607894e-01 4.43334552e-01 4.39063743e-01 + 4.34795884e-01 4.30531389e-01 4.26270671e-01 4.22014140e-01 4.17762207e-01 + 4.13515277e-01 4.09273757e-01 4.05038049e-01 4.00808555e-01 3.96585674e-01 + 3.92369804e-01 3.88161340e-01 3.83960674e-01 3.79768198e-01 3.75584299e-01 + 3.71409365e-01 3.67243780e-01 3.63087924e-01 3.58942178e-01 3.54806918e-01 + 3.50682519e-01 3.46569353e-01 3.42467789e-01 3.38378195e-01 3.34300933e-01 + 3.30236368e-01 3.26184857e-01 3.22146757e-01 3.18122421e-01 3.14112201e-01 + 3.10116445e-01 3.06135499e-01 3.02169705e-01 2.98219402e-01 2.94284928e-01 + 2.90366616e-01 2.86464798e-01 2.82579801e-01 2.78711951e-01 2.74861569e-01 + 2.71028975e-01 2.67214484e-01 2.63418409e-01 2.59641060e-01 2.55882743e-01 + 2.52143761e-01 2.48424414e-01 2.44725000e-01 2.41045812e-01 2.37387139e-01 + 2.33749270e-01 2.30132488e-01 2.26537072e-01 2.22963301e-01 2.19411448e-01 + 2.15881782e-01 2.12374571e-01 2.08890078e-01 2.05428563e-01 2.01990283e-01 + 1.98575490e-01 1.95184433e-01 1.91817359e-01 1.88474510e-01 1.85156124e-01 + 1.81862438e-01 1.78593682e-01 1.75350084e-01 1.72131869e-01 1.68939258e-01 + 1.65772468e-01 1.62631713e-01 1.59517201e-01 1.56429140e-01 1.53367731e-01 + 1.50333174e-01 1.47325663e-01 1.44345390e-01 1.41392542e-01 1.38467304e-01 + 1.35569855e-01 1.32700372e-01 1.29859028e-01 1.27045990e-01 1.24261425e-01 + 1.21505494e-01 1.18778353e-01 1.16080157e-01 1.13411056e-01 1.10771196e-01 + 1.08160719e-01 1.05579764e-01 1.03028466e-01 1.00506954e-01 9.80153575e-02 + 9.55537985e-02 9.31223968e-02 9.07212680e-02 8.83505241e-02 8.60102730e-02 + 8.37006190e-02 8.14216626e-02 7.91735004e-02 7.69562251e-02 7.47699258e-02 + 7.26146878e-02 7.04905924e-02 6.83977173e-02 6.63361363e-02 6.43059195e-02 + 6.23071332e-02 6.03398398e-02 5.84040982e-02 5.64999633e-02 5.46274863e-02 + 5.27867148e-02 5.09776925e-02 4.92004594e-02 4.74550517e-02 4.57415023e-02 + 4.40598398e-02 4.24100894e-02 4.07922728e-02 3.92064078e-02 3.76525084e-02 + 3.61305853e-02 3.46406454e-02 3.31826918e-02 3.17567243e-02 3.03627389e-02 + 2.90007281e-02 2.76706807e-02 2.63725820e-02 2.51064140e-02 2.38721547e-02 + 2.26697789e-02 2.14992579e-02 2.03605594e-02 1.92536477e-02 1.81784835e-02 + 1.71350243e-02 1.61232240e-02 1.51430332e-02 1.41943991e-02 1.32772654e-02 + 1.23915726e-02 1.15372579e-02 1.07142551e-02 9.92249463e-03 9.16190382e-03 + 8.43240666e-03 7.73392391e-03 7.06637314e-03 6.42966871e-03 5.82372182e-03 + 5.24844054e-03 4.70372977e-03 4.18949135e-03 3.70562400e-03 3.25202343e-03 + 2.82858225e-03 2.43519012e-03 2.07173366e-03 1.73809655e-03 1.43415952e-03 + 1.15980039e-03 9.14894082e-04 6.99312635e-04 5.12925259e-04 3.55598341e-04 + 2.27195472e-04 1.27577478e-04 5.66024399e-05 1.41257221e-05 0.00000000e+00 + 5.11971098e-01 5.11971098e-01 5.17242510e-01 5.23233505e-01 5.29293369e-01 + 5.35422881e-01 5.41622827e-01 5.47894004e-01 5.54237214e-01 5.60653272e-01 + 5.67142999e-01 5.73707225e-01 5.80346789e-01 5.87062542e-01 5.93855339e-01 + 6.00726049e-01 6.07675547e-01 6.14704719e-01 6.21814461e-01 6.29005677e-01 + 6.36279282e-01 6.43636201e-01 6.51077366e-01 6.58603723e-01 6.66216226e-01 + 6.73915839e-01 6.81703537e-01 6.89580304e-01 6.97547137e-01 7.05605040e-01 + 7.13755031e-01 7.21998138e-01 7.30335397e-01 7.38767858e-01 7.47296582e-01 + 7.55922638e-01 7.64647111e-01 7.73471093e-01 7.82395690e-01 7.91422019e-01 + 8.00551207e-01 8.09784394e-01 8.19122734e-01 8.28567388e-01 8.38119534e-01 + 8.47780359e-01 8.57551064e-01 8.67432860e-01 8.77426973e-01 8.87534640e-01 + 8.97757111e-01 9.08095650e-01 9.18551533e-01 9.29126046e-01 9.39820494e-01 + 9.50636190e-01 9.61574463e-01 9.72636655e-01 9.83824120e-01 9.95138227e-01 + 1.00658036e+00 1.01815191e+00 1.02985430e+00 1.04168894e+00 1.05365727e+00 + 1.06576075e+00 1.07800084e+00 1.09037902e+00 1.10289680e+00 1.11555567e+00 + 1.12835717e+00 1.14130283e+00 1.15439422e+00 1.16763289e+00 1.18102044e+00 + 1.19455846e+00 1.20824858e+00 1.22209242e+00 1.23609162e+00 1.25024786e+00 + 1.26456280e+00 1.27903815e+00 1.29367562e+00 1.30847692e+00 1.32344380e+00 + 1.33857802e+00 1.35388135e+00 1.36935559e+00 1.38500254e+00 1.40082403e+00 + 1.41682189e+00 1.43299799e+00 1.44935419e+00 1.46589240e+00 1.48261451e+00 + 1.49952245e+00 1.51661817e+00 1.53390362e+00 1.55138079e+00 1.56905166e+00 + 1.58691825e+00 1.60498258e+00 1.62324671e+00 1.64171270e+00 1.66038262e+00 + 1.67925859e+00 1.69834272e+00 1.71763713e+00 1.73714400e+00 1.75686548e+00 + 1.77680377e+00 1.79696108e+00 1.81733963e+00 1.83794166e+00 1.85876944e+00 + 1.87982524e+00 1.90111137e+00 1.92263014e+00 1.94438389e+00 1.96637497e+00 + 1.98860574e+00 2.01107861e+00 2.03379597e+00 2.05676026e+00 2.07997391e+00 + 2.10343939e+00 2.12715919e+00 2.15113579e+00 2.17537172e+00 2.19986952e+00 + 2.22463173e+00 2.24966092e+00 2.27495969e+00 2.30053064e+00 2.32637640e+00 + 2.35249962e+00 2.37890294e+00 2.40558905e+00 2.43256065e+00 2.45982045e+00 + 2.48737117e+00 2.51521557e+00 2.54335641e+00 2.57179648e+00 2.60053857e+00 + 2.62958549e+00 2.65894009e+00 2.68860520e+00 2.71858370e+00 2.74887845e+00 + 2.77949237e+00 2.81042835e+00 2.84168934e+00 2.87327827e+00 2.90519809e+00 + 2.93745179e+00 2.97004235e+00 3.00297276e+00 3.03624605e+00 3.06986525e+00 + 3.10383339e+00 3.13815354e+00 3.17282876e+00 3.20786213e+00 3.24325674e+00 + 3.27901571e+00 3.31514214e+00 3.35163917e+00 3.38850993e+00 3.42575757e+00 + 3.46338525e+00 3.50139614e+00 3.53979341e+00 3.57858025e+00 3.61775985e+00 + 3.65733542e+00 3.69731016e+00 3.73768729e+00 3.77847002e+00 3.81966159e+00 + 3.86126523e+00 3.90328416e+00 3.94572164e+00 3.98858089e+00 4.03186518e+00 + 4.07557773e+00 4.11972181e+00 4.16430066e+00 4.20931753e+00 4.25477566e+00 + 4.30067831e+00 4.34702870e+00 4.39383010e+00 4.44108572e+00 4.48879881e+00 + 4.53697258e+00 4.58561026e+00 4.63471506e+00 4.68429018e+00 4.73433881e+00 + 4.78486415e+00 4.83586936e+00 4.88735761e+00 4.93933204e+00 4.99179578e+00 + 5.04475196e+00 5.09820369e+00 5.15215403e+00 5.20660607e+00 5.26156285e+00 + 5.31702739e+00 5.37300271e+00 5.42949179e+00 5.48649757e+00 5.54402301e+00 + 5.60207099e+00 5.66064441e+00 5.71974611e+00 5.77937891e+00 5.83954559e+00 + 5.90024891e+00 5.96149159e+00 6.02327631e+00 6.08560572e+00 6.14848241e+00 + 6.21190897e+00 6.27588790e+00 6.34042169e+00 6.40551278e+00 6.47116356e+00 + 6.53737636e+00 6.60415348e+00 6.67149715e+00 6.73940957e+00 6.80789285e+00 + 6.87694909e+00 6.94658030e+00 7.01678842e+00 7.08757537e+00 7.15894297e+00 + 7.23089300e+00 7.30342714e+00 7.37654704e+00 7.45025425e+00 7.52455027e+00 + 7.59943651e+00 7.67491431e+00 7.75098493e+00 7.82764955e+00 7.90490929e+00 + 7.98276514e+00 8.06121804e+00 8.14026884e+00 8.21991829e+00 8.30016706e+00 + 8.38101571e+00 8.46246472e+00 8.54451447e+00 8.62716524e+00 8.71041720e+00 + 8.79427042e+00 8.87872489e+00 8.96378046e+00 9.04943689e+00 9.13569381e+00 + 9.22255077e+00 9.31000717e+00 9.39806232e+00 9.48671539e+00 9.57596544e+00 + 9.66581142e+00 9.75625214e+00 9.84728628e+00 9.93891240e+00 1.00311289e+01 + 1.01239342e+01 1.02173263e+01 1.03113033e+01 1.04058631e+01 1.05010035e+01 + 1.05967220e+01 1.06930162e+01 1.07898833e+01 1.08873205e+01 1.09853250e+01 + 1.10838934e+01 1.11830227e+01 1.12827094e+01 1.13829499e+01 1.14837404e+01 + 1.15850772e+01 1.16869562e+01 1.17893732e+01 1.18923238e+01 1.19958035e+01 + 1.20998077e+01 1.22043314e+01 1.23093699e+01 1.24149177e+01 1.25209698e+01 + 1.26275204e+01 1.27345640e+01 1.28420948e+01 1.29501068e+01 1.30585938e+01 + 1.31675494e+01 1.32769672e+01 1.33868405e+01 1.34971625e+01 1.36079262e+01 + 1.37191244e+01 1.38307497e+01 1.39427946e+01 1.40552516e+01 1.41681126e+01 + 1.42813698e+01 1.43950148e+01 1.45090394e+01 1.46234351e+01 1.47381932e+01 + 1.48533048e+01 1.49687609e+01 1.50845524e+01 1.52006699e+01 1.53171040e+01 + 1.54338449e+01 1.55508829e+01 1.56682081e+01 1.57858103e+01 1.59036792e+01 + 1.60218045e+01 1.61401756e+01 1.62587818e+01 1.63776122e+01 1.64966559e+01 + 1.66159016e+01 1.67353383e+01 1.68549545e+01 1.69747385e+01 1.70946789e+01 + 1.72147639e+01 1.73349814e+01 1.74553195e+01 1.75757662e+01 1.76963091e+01 + 1.78169358e+01 1.79376340e+01 1.80583911e+01 1.81791944e+01 1.83000312e+01 + 1.84208886e+01 1.85417538e+01 1.86626136e+01 1.87834551e+01 1.89042651e+01 + 1.90250303e+01 1.91457375e+01 1.92663733e+01 1.93869243e+01 1.95073771e+01 + 1.96277181e+01 1.97479338e+01 1.98680106e+01 1.99879349e+01 2.01076930e+01 + 2.02272714e+01 2.03466562e+01 2.04658338e+01 2.05847906e+01 2.07035127e+01 + 2.08219864e+01 2.09401981e+01 2.10581341e+01 2.11757807e+01 2.12931242e+01 + 2.14101510e+01 2.15268475e+01 2.16432002e+01 2.17591956e+01 2.18748201e+01 + 2.19900603e+01 2.21049030e+01 2.22193347e+01 2.23333424e+01 2.24469127e+01 + 2.25600327e+01 2.26726893e+01 2.27848696e+01 2.28965608e+01 2.30077502e+01 + 2.31184251e+01 2.32285731e+01 2.33381817e+01 2.34472387e+01 2.35557318e+01 + 2.36636490e+01 2.37709785e+01 2.38777084e+01 2.39838270e+01 2.40893229e+01 + 2.41941847e+01 2.42984012e+01 2.44019613e+01 2.45048542e+01 2.46070690e+01 + 2.47085951e+01 2.48094223e+01 2.49095401e+01 2.50089387e+01 2.51076079e+01 + 2.52055383e+01 2.53027201e+01 2.53991441e+01 2.54948011e+01 2.55896821e+01 + 2.56837784e+01 2.57770813e+01 2.58695826e+01 2.59612740e+01 2.60521475e+01 + 2.61421953e+01 2.62314100e+01 2.63197840e+01 2.64073104e+01 2.64939820e+01 + 2.65797922e+01 2.66647345e+01 2.67488026e+01 2.68319902e+01 2.69142917e+01 + 2.69957012e+01 2.70762134e+01 2.71558231e+01 2.72345251e+01 2.73123147e+01 + 2.73891873e+01 2.74651386e+01 2.75401644e+01 2.76142607e+01 2.76874239e+01 + 2.77596504e+01 2.78309370e+01 2.79012805e+01 2.79706782e+01 2.80391273e+01 + 2.81066254e+01 2.81731704e+01 2.82387601e+01 2.83033927e+01 2.83670667e+01 + 2.84297807e+01 2.84915333e+01 2.85523238e+01 2.86121511e+01 2.86710148e+01 + 2.87289145e+01 2.87858498e+01 2.88418209e+01 2.88968278e+01 2.89508709e+01 + 2.90039508e+01 2.90560681e+01 2.91072238e+01 2.91574190e+01 2.92066549e+01 + 2.92549329e+01 2.93022546e+01 2.93486219e+01 2.93940365e+01 2.94385007e+01 + 2.94820167e+01 2.95245868e+01 2.95662136e+01 2.96068999e+01 2.96466484e+01 + 2.96854623e+01 2.97233446e+01 2.97602986e+01 2.97963278e+01 2.98314357e+01 + 2.98656260e+01 2.98989025e+01 2.99312691e+01 2.99627299e+01 2.99932890e+01 + 3.00229508e+01 3.00517197e+01 3.00796001e+01 3.01065967e+01 3.01327141e+01 + 3.01579573e+01 3.01823311e+01 3.02058406e+01 3.02284907e+01 3.02502868e+01 + 3.02712341e+01 3.02913379e+01 3.03106037e+01 3.03290370e+01 3.03466434e+01 + 3.03634285e+01 3.03793980e+01 3.03945578e+01 3.04089136e+01 3.04224715e+01 + 3.04352373e+01 3.04472170e+01 3.04584168e+01 3.04688428e+01 3.04785011e+01 + 3.04873979e+01 3.04955395e+01 3.05029321e+01 3.05095822e+01 3.05154960e+01 + 3.05206800e+01 3.05251405e+01 3.05288840e+01 3.05319170e+01 3.05342459e+01 + 3.05358773e+01 3.05368177e+01 3.05370737e+01 3.05366518e+01 3.05355586e+01 + 3.05338006e+01 3.05313844e+01 3.05283167e+01 3.05246041e+01 3.05202531e+01 + 3.05152703e+01 3.05096624e+01 3.05034359e+01 3.04965974e+01 3.04891535e+01 + 3.04811109e+01 3.04724759e+01 3.04632553e+01 3.04534556e+01 3.04430832e+01 + 3.04321448e+01 3.04206467e+01 3.04085955e+01 3.03959977e+01 3.03828596e+01 + 3.03691878e+01 3.03549885e+01 3.03402682e+01 3.03250332e+01 3.03092899e+01 + 3.02930445e+01 3.02763032e+01 3.02590725e+01 3.02413583e+01 3.02231670e+01 + 3.02045046e+01 3.01853773e+01 3.01657911e+01 3.01457522e+01 3.01252664e+01 + 3.01043398e+01 3.00829783e+01 3.00611878e+01 3.00389742e+01 3.00163433e+01 + 2.99933008e+01 2.99698526e+01 2.99460043e+01 2.99217616e+01 2.98971302e+01 + 2.98721155e+01 2.98467232e+01 2.98209588e+01 2.97948277e+01 2.97683353e+01 + 2.97414870e+01 2.97142882e+01 2.96867441e+01 2.96588599e+01 2.96306410e+01 + 2.96020923e+01 2.95732191e+01 2.95440265e+01 2.95145193e+01 2.94847027e+01 + 2.94545815e+01 2.94241606e+01 2.93934449e+01 2.93624392e+01 2.93311482e+01 + 2.92995767e+01 2.92677292e+01 2.92356105e+01 2.92032251e+01 2.91705775e+01 + 2.91376723e+01 2.91045137e+01 2.90711064e+01 2.90374545e+01 2.90035624e+01 + 2.89694344e+01 2.89350746e+01 2.89004873e+01 2.88656766e+01 2.88306465e+01 + 2.87954011e+01 2.87599444e+01 2.87242804e+01 2.86884129e+01 2.86523458e+01 + 2.86160830e+01 2.85796281e+01 2.85429851e+01 2.85061574e+01 2.84691489e+01 + 2.84319631e+01 2.83946035e+01 2.83570738e+01 2.83193774e+01 2.82815177e+01 + 2.82434981e+01 2.82053220e+01 2.81669928e+01 2.81285137e+01 2.80898879e+01 + 2.80511187e+01 2.80122092e+01 2.79731625e+01 2.79339818e+01 2.78946701e+01 + 2.78552303e+01 2.78156656e+01 2.77759787e+01 2.77361727e+01 2.76962503e+01 + 2.76562144e+01 2.76160678e+01 2.75758133e+01 2.75354535e+01 2.74949912e+01 + 2.74544289e+01 2.74137694e+01 2.73730151e+01 2.73321687e+01 2.72912326e+01 + 2.72502094e+01 2.72091014e+01 2.71679111e+01 2.71266408e+01 2.70852930e+01 + 2.70438699e+01 2.70023738e+01 2.69608070e+01 2.69191717e+01 2.68774700e+01 + 2.68357042e+01 2.67938764e+01 2.67519887e+01 2.67100431e+01 2.66680417e+01 + 2.66259866e+01 2.65838796e+01 2.65417228e+01 2.64995182e+01 2.64572675e+01 + 2.64149727e+01 2.63726356e+01 2.63302581e+01 2.62878419e+01 2.62453889e+01 + 2.62029007e+01 2.61603792e+01 2.61178259e+01 2.60752425e+01 2.60326308e+01 + 2.59899923e+01 2.59473287e+01 2.59046414e+01 2.58619321e+01 2.58192022e+01 + 2.57764534e+01 2.57336870e+01 2.56909045e+01 2.56481074e+01 2.56052971e+01 + 2.55624750e+01 2.55196424e+01 2.54768007e+01 2.54339513e+01 2.53910954e+01 + 2.53482344e+01 2.53053694e+01 2.52625019e+01 2.52196329e+01 2.51767637e+01 + 2.51338956e+01 2.50910296e+01 2.50481669e+01 2.50053088e+01 2.49624562e+01 + 2.49196103e+01 2.48767722e+01 2.48339430e+01 2.47911236e+01 2.47483152e+01 + 2.47055188e+01 2.46627353e+01 2.46199657e+01 2.45772111e+01 2.45344723e+01 + 2.44917503e+01 2.44490460e+01 2.44063604e+01 2.43636943e+01 2.43210485e+01 + 2.42784241e+01 2.42358217e+01 2.41932423e+01 2.41506866e+01 2.41081555e+01 + 2.40656497e+01 2.40231701e+01 2.39807174e+01 2.39382923e+01 2.38958957e+01 + 2.38535281e+01 2.38111904e+01 2.37688832e+01 2.37266073e+01 2.36843632e+01 + 2.36421517e+01 2.35999735e+01 2.35578291e+01 2.35157192e+01 2.34736444e+01 + 2.34316053e+01 2.33896025e+01 2.33476367e+01 2.33057084e+01 2.32638180e+01 + 2.32219664e+01 2.31801538e+01 2.31383810e+01 2.30966483e+01 2.30549564e+01 + 2.30133057e+01 2.29716968e+01 2.29301300e+01 2.28886060e+01 2.28471252e+01 + 2.28056879e+01 2.27642948e+01 2.27229461e+01 2.26816425e+01 2.26403842e+01 + 2.25991717e+01 2.25580054e+01 2.25168857e+01 2.24758130e+01 2.24347878e+01 + 2.23938102e+01 2.23528809e+01 2.23120000e+01 2.22711680e+01 2.22303851e+01 + 2.21896519e+01 2.21489685e+01 2.21083353e+01 2.20677526e+01 2.20272208e+01 + 2.19867401e+01 2.19463109e+01 2.19059334e+01 2.18656079e+01 2.18253348e+01 + 2.17851142e+01 2.17449465e+01 2.17048318e+01 2.16647706e+01 2.16247630e+01 + 2.15848092e+01 2.15449096e+01 2.15050643e+01 2.14652736e+01 2.14255376e+01 + 2.13858567e+01 2.13462310e+01 2.13066607e+01 2.12671461e+01 2.12276873e+01 + 2.11882845e+01 2.11489380e+01 2.11096478e+01 2.10704142e+01 2.10312374e+01 + 2.09921175e+01 2.09530546e+01 2.09140491e+01 2.08751009e+01 2.08362102e+01 + 2.07973773e+01 2.07586022e+01 2.07198851e+01 2.06812261e+01 2.06426254e+01 + 2.06040830e+01 2.05655991e+01 2.05271739e+01 2.04888074e+01 2.04504997e+01 + 2.04122511e+01 2.03740614e+01 2.03359310e+01 2.02978598e+01 2.02598479e+01 + 2.02218956e+01 2.01840027e+01 2.01461695e+01 2.01083960e+01 2.00706823e+01 + 2.00330285e+01 1.99954346e+01 1.99579007e+01 1.99204268e+01 1.98830132e+01 + 1.98456597e+01 1.98083665e+01 1.97711336e+01 1.97339610e+01 1.96968489e+01 + 1.96597973e+01 1.96228062e+01 1.95858756e+01 1.95490056e+01 1.95121963e+01 + 1.94754476e+01 1.94387597e+01 1.94021325e+01 1.93655660e+01 1.93290604e+01 + 1.92926155e+01 1.92562315e+01 1.92199084e+01 1.91836461e+01 1.91474447e+01 + 1.91113042e+01 1.90752247e+01 1.90392061e+01 1.90032484e+01 1.89673516e+01 + 1.89315158e+01 1.88957410e+01 1.88600271e+01 1.88243741e+01 1.87887821e+01 + 1.87532511e+01 1.87177809e+01 1.86823717e+01 1.86470234e+01 1.86117360e+01 + 1.85765095e+01 1.85413439e+01 1.85062392e+01 1.84711952e+01 1.84362122e+01 + 1.84012899e+01 1.83664284e+01 1.83316276e+01 1.82968876e+01 1.82622083e+01 + 1.82275897e+01 1.81930318e+01 1.81585344e+01 1.81240977e+01 1.80897215e+01 + 1.80554058e+01 1.80211507e+01 1.79869560e+01 1.79528217e+01 1.79187478e+01 + 1.78847342e+01 1.78507810e+01 1.78168880e+01 1.77830552e+01 1.77492826e+01 + 1.77155701e+01 1.76819177e+01 1.76483254e+01 1.76147930e+01 1.75813206e+01 + 1.75479081e+01 1.75145554e+01 1.74812625e+01 1.74480294e+01 1.74148559e+01 + 1.73817421e+01 1.73486879e+01 1.73156931e+01 1.72827579e+01 1.72498821e+01 + 1.72170656e+01 1.71843084e+01 1.71516105e+01 1.71189717e+01 1.70863920e+01 + 1.70538715e+01 1.70214099e+01 1.69890072e+01 1.69566634e+01 1.69243784e+01 + 1.68921522e+01 1.68599846e+01 1.68278756e+01 1.67958252e+01 1.67638333e+01 + 1.67318997e+01 1.67000245e+01 1.66682076e+01 1.66364489e+01 1.66047483e+01 + 1.65731058e+01 1.65415213e+01 1.65099947e+01 1.64785260e+01 1.64471150e+01 + 1.64157618e+01 1.63844662e+01 1.63532281e+01 1.63220476e+01 1.62909244e+01 + 1.62598586e+01 1.62288501e+01 1.61978987e+01 1.61670045e+01 1.61361673e+01 + 1.61053871e+01 1.60746637e+01 1.60439972e+01 1.60133874e+01 1.59828342e+01 + 1.59523377e+01 1.59218976e+01 1.58915139e+01 1.58611866e+01 1.58309155e+01 + 1.58007007e+01 1.57705419e+01 1.57404391e+01 1.57103923e+01 1.56804013e+01 + 1.56504661e+01 1.56205866e+01 1.55907628e+01 1.55609944e+01 1.55312816e+01 + 1.55016240e+01 1.54720218e+01 1.54424748e+01 1.54129829e+01 1.53835460e+01 + 1.53541641e+01 1.53248371e+01 1.52955649e+01 1.52663473e+01 1.52371844e+01 + 1.52080761e+01 1.51790222e+01 1.51500226e+01 1.51210774e+01 1.50921863e+01 + 1.50633494e+01 1.50345665e+01 1.50058375e+01 1.49771624e+01 1.49485411e+01 + 1.49199735e+01 1.48914595e+01 1.48629990e+01 1.48345920e+01 1.48062382e+01 + 1.47779378e+01 1.47496905e+01 1.47214964e+01 1.46933552e+01 1.46652670e+01 + 1.46372316e+01 1.46092489e+01 1.45813189e+01 1.45534415e+01 1.45256166e+01 + 1.44978440e+01 1.44701238e+01 1.44424559e+01 1.44148400e+01 1.43872762e+01 + 1.43597644e+01 1.43323045e+01 1.43048964e+01 1.42775400e+01 1.42502352e+01 + 1.42229819e+01 1.41957801e+01 1.41686296e+01 1.41415305e+01 1.41144825e+01 + 1.40874856e+01 1.40605397e+01 1.40336448e+01 1.40068007e+01 1.39800074e+01 + 1.39532647e+01 1.39265726e+01 1.38999310e+01 1.38733398e+01 1.38467989e+01 + 1.38203083e+01 1.37938678e+01 1.37674774e+01 1.37411369e+01 1.37148464e+01 + 1.36886056e+01 1.36624145e+01 1.36362731e+01 1.36101812e+01 1.35841388e+01 + 1.35581457e+01 1.35322019e+01 1.35063073e+01 1.34804618e+01 1.34546654e+01 + 1.34289178e+01 1.34032192e+01 1.33775692e+01 1.33519680e+01 1.33264153e+01 + 1.33009112e+01 1.32754555e+01 1.32500481e+01 1.32246889e+01 1.31993779e+01 + 1.31741150e+01 1.31489001e+01 1.31237331e+01 1.30986139e+01 1.30735424e+01 + 1.30485186e+01 1.30235423e+01 1.29986135e+01 1.29737321e+01 1.29488980e+01 + 1.29241112e+01 1.28993714e+01 1.28746788e+01 1.28500330e+01 1.28254342e+01 + 1.28008822e+01 1.27763769e+01 1.27519182e+01 1.27275060e+01 1.27031403e+01 + 1.26788210e+01 1.26545480e+01 1.26303212e+01 1.26061405e+01 1.25820059e+01 + 1.25579172e+01 1.25338743e+01 1.25098773e+01 1.24859260e+01 1.24620203e+01 + 1.24381601e+01 1.24143454e+01 1.23905761e+01 1.23668520e+01 1.23431732e+01 + 1.23195394e+01 1.22959508e+01 1.22724070e+01 1.22489082e+01 1.22254541e+01 + 1.22020448e+01 1.21786801e+01 1.21553599e+01 1.21320842e+01 1.21088529e+01 + 1.20856658e+01 1.20625230e+01 1.20394244e+01 1.20163698e+01 1.19933591e+01 + 1.19703924e+01 1.19474695e+01 1.19245903e+01 1.19017547e+01 1.18789628e+01 + 1.18562143e+01 1.18335092e+01 1.18108474e+01 1.17882289e+01 1.17656536e+01 + 1.17431214e+01 1.17206321e+01 1.16981858e+01 1.16757823e+01 1.16534217e+01 + 1.16311036e+01 1.16088283e+01 1.15865954e+01 1.15644050e+01 1.15422569e+01 + 1.15201512e+01 1.14980876e+01 1.14760662e+01 1.14540869e+01 1.14321495e+01 + 1.14102540e+01 1.13884004e+01 1.13665885e+01 1.13448182e+01 1.13230896e+01 + 1.13014025e+01 1.12797567e+01 1.12581524e+01 1.12365893e+01 1.12150674e+01 + 1.11935867e+01 1.11721470e+01 1.11507482e+01 1.11293904e+01 1.11080733e+01 + 1.10867970e+01 1.10655614e+01 1.10443663e+01 1.10232118e+01 1.10020977e+01 + 1.09810239e+01 1.09599905e+01 1.09389972e+01 1.09180441e+01 1.08971310e+01 + 1.08762579e+01 1.08554247e+01 1.08346313e+01 1.08138777e+01 1.07931638e+01 + 1.07724894e+01 1.07518546e+01 1.07312593e+01 1.07107033e+01 1.06901867e+01 + 1.06697093e+01 1.06492710e+01 1.06288718e+01 1.06085117e+01 1.05881904e+01 + 1.05679081e+01 1.05476645e+01 1.05274596e+01 1.05072934e+01 1.04871658e+01 + 1.04670766e+01 1.04470259e+01 1.04270135e+01 1.04070395e+01 1.03871036e+01 + 1.03672058e+01 1.03473462e+01 1.03275245e+01 1.03077407e+01 1.02879948e+01 + 1.02682866e+01 1.02486162e+01 1.02289834e+01 1.02093882e+01 1.01898304e+01 + 1.01703101e+01 1.01508271e+01 1.01313814e+01 1.01119729e+01 1.00926016e+01 + 1.00732673e+01 1.00539700e+01 1.00347096e+01 1.00154861e+01 9.99629938e+00 + 9.97714938e+00 9.95803602e+00 9.93895924e+00 9.91991896e+00 9.90091513e+00 + 9.88194766e+00 9.86301650e+00 9.84412157e+00 9.82526280e+00 9.80644012e+00 + 9.78765347e+00 9.76890278e+00 9.75018798e+00 9.73150899e+00 9.71286576e+00 + 9.69425822e+00 9.67568629e+00 9.65714991e+00 9.63864901e+00 9.62018353e+00 + 9.60175339e+00 9.58335854e+00 9.56499889e+00 9.54667439e+00 9.52838497e+00 + 9.51013056e+00 9.49191110e+00 9.47372652e+00 9.45557675e+00 9.43746172e+00 + 9.41938137e+00 9.40133564e+00 9.38332446e+00 9.36534776e+00 9.34740547e+00 + 9.32949754e+00 9.31162389e+00 9.29378447e+00 9.27597920e+00 9.25820801e+00 + 9.24047086e+00 9.22276766e+00 9.20509836e+00 9.18746289e+00 9.16986119e+00 + 9.15229319e+00 9.13475883e+00 9.11725804e+00 9.09979077e+00 9.08235693e+00 + 9.06495649e+00 9.04758936e+00 9.03025548e+00 9.01295480e+00 8.99568724e+00 + 8.97845276e+00 8.96125127e+00 8.94408272e+00 8.92694705e+00 8.90984419e+00 + 8.89277409e+00 8.87573667e+00 8.85873188e+00 8.84175965e+00 8.82481993e+00 + 8.80791264e+00 8.79103774e+00 8.77419515e+00 8.75738481e+00 8.74060667e+00 + 8.72386066e+00 8.70714672e+00 8.69046479e+00 8.67381480e+00 8.65719671e+00 + 8.64061044e+00 8.62405593e+00 8.60753313e+00 8.59104198e+00 8.57458240e+00 + 8.55815435e+00 8.54175777e+00 8.52539259e+00 8.50905875e+00 8.49275619e+00 + 8.47648486e+00 8.46024469e+00 8.44403563e+00 8.42785761e+00 8.41171057e+00 + 8.39559447e+00 8.37950923e+00 8.36345479e+00 8.34743111e+00 8.33143812e+00 + 8.31547576e+00 8.29954398e+00 8.28364271e+00 8.26777190e+00 8.25193148e+00 + 8.23612141e+00 8.22034162e+00 8.20459205e+00 8.18887265e+00 8.17318336e+00 + 8.15752412e+00 8.14189488e+00 8.12629557e+00 8.11072614e+00 8.09518654e+00 + 8.07967670e+00 8.06419657e+00 8.04874609e+00 8.03332521e+00 8.01793386e+00 + 8.00257200e+00 7.98723957e+00 7.97193650e+00 7.95666274e+00 7.94141825e+00 + 7.92620295e+00 7.91101680e+00 7.89585974e+00 7.88073172e+00 7.86563267e+00 + 7.85056255e+00 7.83552129e+00 7.82050885e+00 7.80552516e+00 7.79057018e+00 + 7.77564385e+00 7.76074610e+00 7.74587690e+00 7.73103618e+00 7.71622389e+00 + 7.70143997e+00 7.68668438e+00 7.67195705e+00 7.65725793e+00 7.64258697e+00 + 7.62794411e+00 7.61332931e+00 7.59874250e+00 7.58418364e+00 7.56965266e+00 + 7.55514952e+00 7.54067417e+00 7.52622655e+00 7.51180660e+00 7.49741427e+00 + 7.48304952e+00 7.46871229e+00 7.45440252e+00 7.44012017e+00 7.42586517e+00 + 7.41163749e+00 7.39743706e+00 7.38326383e+00 7.36911776e+00 7.35499879e+00 + 7.34090686e+00 7.32684193e+00 7.31280395e+00 7.29879286e+00 7.28480861e+00 + 7.27085115e+00 7.25692043e+00 7.24301640e+00 7.22913900e+00 7.21528819e+00 + 7.20146392e+00 7.18766613e+00 7.17389477e+00 7.16014979e+00 7.14643115e+00 + 7.13273879e+00 7.11907266e+00 7.10543272e+00 7.09181890e+00 7.07823116e+00 + 7.06466946e+00 7.05113374e+00 7.03762395e+00 7.02414004e+00 7.01068196e+00 + 6.99724967e+00 6.98384311e+00 6.97046224e+00 6.95710700e+00 6.94377734e+00 + 6.93047323e+00 6.91719460e+00 6.90394141e+00 6.89071361e+00 6.87751116e+00 + 6.86433400e+00 6.85118208e+00 6.83805536e+00 6.82495379e+00 6.81187732e+00 + 6.79882590e+00 6.78579949e+00 6.77279803e+00 6.75982148e+00 6.74686980e+00 + 6.73394292e+00 6.72104082e+00 6.70816343e+00 6.69531071e+00 6.68248262e+00 + 6.66967910e+00 6.65690011e+00 6.64414561e+00 6.63141554e+00 6.61870986e+00 + 6.60602853e+00 6.59337149e+00 6.58073869e+00 6.56813011e+00 6.55554567e+00 + 6.54298535e+00 6.53044909e+00 6.51793685e+00 6.50544859e+00 6.49298424e+00 + 6.48054378e+00 6.46812716e+00 6.45573432e+00 6.44336522e+00 6.43101983e+00 + 6.41869808e+00 6.40639995e+00 6.39412537e+00 6.38187431e+00 6.36964673e+00 + 6.35744257e+00 6.34526179e+00 6.33310435e+00 6.32097020e+00 6.30885930e+00 + 6.29677160e+00 6.28470707e+00 6.27266564e+00 6.26064729e+00 6.24865196e+00 + 6.23667962e+00 6.22473021e+00 6.21280370e+00 6.20090004e+00 6.18901918e+00 + 6.17716109e+00 6.16532571e+00 6.15351301e+00 6.14172295e+00 6.12995547e+00 + 6.11821054e+00 6.10648811e+00 6.09478814e+00 6.08311058e+00 6.07145165e+00 + 6.05974338e+00 6.04796088e+00 6.03610468e+00 6.02417530e+00 6.01217326e+00 + 6.00009907e+00 5.98795327e+00 5.97573636e+00 5.96344889e+00 5.95109137e+00 + 5.93866433e+00 5.92616829e+00 5.91360379e+00 5.90097135e+00 5.88827149e+00 + 5.87550476e+00 5.86267167e+00 5.84977277e+00 5.83680857e+00 5.82377962e+00 + 5.81068645e+00 5.79752958e+00 5.78430956e+00 5.77102692e+00 5.75768219e+00 + 5.74427591e+00 5.73080862e+00 5.71728085e+00 5.70369313e+00 5.69004601e+00 + 5.67634003e+00 5.66257572e+00 5.64875361e+00 5.63487426e+00 5.62093820e+00 + 5.60694596e+00 5.59289809e+00 5.57879513e+00 5.56463761e+00 5.55042608e+00 + 5.53616108e+00 5.52184315e+00 5.50747283e+00 5.49305067e+00 5.47857719e+00 + 5.46405294e+00 5.44947847e+00 5.43485432e+00 5.42018102e+00 5.40545912e+00 + 5.39068917e+00 5.37587169e+00 5.36100723e+00 5.34609634e+00 5.33113955e+00 + 5.31613741e+00 5.30109045e+00 5.28599922e+00 5.27086425e+00 5.25568610e+00 + 5.24046529e+00 5.22520236e+00 5.20989787e+00 5.19455234e+00 5.17916631e+00 + 5.16374033e+00 5.14827493e+00 5.13277065e+00 5.11722803e+00 5.10164761e+00 + 5.08602991e+00 5.07037549e+00 5.05468487e+00 5.03895859e+00 5.02319718e+00 + 5.00740119e+00 4.99157113e+00 4.97570756e+00 4.95981100e+00 4.94388198e+00 + 4.92792103e+00 4.91192870e+00 4.89590550e+00 4.87985196e+00 4.86376863e+00 + 4.84765602e+00 4.83151466e+00 4.81534508e+00 4.79914782e+00 4.78292338e+00 + 4.76667231e+00 4.75039512e+00 4.73409233e+00 4.71776448e+00 4.70141208e+00 + 4.68503565e+00 4.66863572e+00 4.65221280e+00 4.63576741e+00 4.61930007e+00 + 4.60281130e+00 4.58630161e+00 4.56977152e+00 4.55322154e+00 4.53665219e+00 + 4.52006398e+00 4.50345741e+00 4.48683300e+00 4.47019126e+00 4.45353270e+00 + 4.43685781e+00 4.42016712e+00 4.40346112e+00 4.38674032e+00 4.37000522e+00 + 4.35325631e+00 4.33649412e+00 4.31971912e+00 4.30293182e+00 4.28613271e+00 + 4.26932230e+00 4.25250108e+00 4.23566953e+00 4.21882815e+00 4.20197744e+00 + 4.18511788e+00 4.16824996e+00 4.15137416e+00 4.13449098e+00 4.11760089e+00 + 4.10070438e+00 4.08380193e+00 4.06689403e+00 4.04998114e+00 4.03306375e+00 + 4.01614234e+00 3.99921737e+00 3.98228932e+00 3.96535867e+00 3.94842588e+00 + 3.93149143e+00 3.91455578e+00 3.89761939e+00 3.88068273e+00 3.86374627e+00 + 3.84681046e+00 3.82987577e+00 3.81294265e+00 3.79601156e+00 3.77908296e+00 + 3.76215730e+00 3.74523503e+00 3.72831661e+00 3.71140247e+00 3.69449308e+00 + 3.67758887e+00 3.66069030e+00 3.64379779e+00 3.62691180e+00 3.61003276e+00 + 3.59316111e+00 3.57629729e+00 3.55944172e+00 3.54259485e+00 3.52575711e+00 + 3.50892892e+00 3.49211070e+00 3.47530290e+00 3.45850592e+00 3.44172019e+00 + 3.42494614e+00 3.40818418e+00 3.39143473e+00 3.37469820e+00 3.35797501e+00 + 3.34126556e+00 3.32457027e+00 3.30788955e+00 3.29122380e+00 3.27457343e+00 + 3.25793884e+00 3.24132042e+00 3.22471858e+00 3.20813372e+00 3.19156622e+00 + 3.17501649e+00 3.15848491e+00 3.14197187e+00 3.12547777e+00 3.10900298e+00 + 3.09254788e+00 3.07611287e+00 3.05969832e+00 3.04330461e+00 3.02693211e+00 + 3.01058120e+00 2.99425225e+00 2.97794563e+00 2.96166171e+00 2.94540085e+00 + 2.92916342e+00 2.91294978e+00 2.89676028e+00 2.88059530e+00 2.86445518e+00 + 2.84834028e+00 2.83225095e+00 2.81618754e+00 2.80015040e+00 2.78413987e+00 + 2.76815630e+00 2.75220003e+00 2.73627139e+00 2.72037074e+00 2.70449840e+00 + 2.68865471e+00 2.67283999e+00 2.65705459e+00 2.64129882e+00 2.62557301e+00 + 2.60987749e+00 2.59421257e+00 2.57857857e+00 2.56297582e+00 2.54740463e+00 + 2.53186530e+00 2.51635816e+00 2.50088350e+00 2.48544165e+00 2.47003289e+00 + 2.45465753e+00 2.43931588e+00 2.42400823e+00 2.40873488e+00 2.39349611e+00 + 2.37829223e+00 2.36312353e+00 2.34799028e+00 2.33289278e+00 2.31783130e+00 + 2.30280614e+00 2.28781756e+00 2.27286585e+00 2.25795128e+00 2.24307412e+00 + 2.22823464e+00 2.21343311e+00 2.19866980e+00 2.18394497e+00 2.16925889e+00 + 2.15461180e+00 2.14000397e+00 2.12543566e+00 2.11090712e+00 2.09641859e+00 + 2.08197033e+00 2.06756258e+00 2.05319559e+00 2.03886960e+00 2.02458485e+00 + 2.01034158e+00 1.99614002e+00 1.98198041e+00 1.96786297e+00 1.95378795e+00 + 1.93975556e+00 1.92576602e+00 1.91181957e+00 1.89791642e+00 1.88405680e+00 + 1.87024091e+00 1.85646897e+00 1.84274119e+00 1.82905778e+00 1.81541896e+00 + 1.80182492e+00 1.78827586e+00 1.77477200e+00 1.76131352e+00 1.74790063e+00 + 1.73453352e+00 1.72121237e+00 1.70793739e+00 1.69470876e+00 1.68152666e+00 + 1.66839128e+00 1.65530280e+00 1.64226140e+00 1.62926725e+00 1.61632054e+00 + 1.60342143e+00 1.59057009e+00 1.57776670e+00 1.56501142e+00 1.55230441e+00 + 1.53964583e+00 1.52703585e+00 1.51447463e+00 1.50196231e+00 1.48949906e+00 + 1.47708502e+00 1.46472034e+00 1.45240518e+00 1.44013967e+00 1.42792395e+00 + 1.41575818e+00 1.40364248e+00 1.39157700e+00 1.37956187e+00 1.36759721e+00 + 1.35568317e+00 1.34381987e+00 1.33200743e+00 1.32024598e+00 1.30853564e+00 + 1.29687653e+00 1.28526877e+00 1.27371247e+00 1.26220775e+00 1.25075472e+00 + 1.23935348e+00 1.22800415e+00 1.21670683e+00 1.20546162e+00 1.19426863e+00 + 1.18312795e+00 1.17203968e+00 1.16100391e+00 1.15002074e+00 1.13909026e+00 + 1.12821255e+00 1.11738771e+00 1.10661582e+00 1.09589696e+00 1.08523121e+00 + 1.07461865e+00 1.06405936e+00 1.05355341e+00 1.04310087e+00 1.03270182e+00 + 1.02235632e+00 1.01206445e+00 1.00182626e+00 9.91641811e-01 9.81511175e-01 + 9.71434406e-01 9.61411561e-01 9.51442695e-01 9.41527861e-01 9.31667110e-01 + 9.21860490e-01 9.12108049e-01 9.02409833e-01 8.92765883e-01 8.83176243e-01 + 8.73640950e-01 8.64160043e-01 8.54733558e-01 8.45361527e-01 8.36043983e-01 + 8.26780955e-01 8.17572473e-01 8.08418561e-01 7.99319245e-01 7.90274546e-01 + 7.81284486e-01 7.72349083e-01 7.63468354e-01 7.54642314e-01 7.45870976e-01 + 7.37154353e-01 7.28492452e-01 7.19885284e-01 7.11332852e-01 7.02835162e-01 + 6.94392216e-01 6.86004014e-01 6.77670556e-01 6.69391838e-01 6.61167856e-01 + 6.52998603e-01 6.44884072e-01 6.36824251e-01 6.28819131e-01 6.20868696e-01 + 6.12972932e-01 6.05131822e-01 5.97345348e-01 5.89613489e-01 5.81936223e-01 + 5.74313527e-01 5.66745375e-01 5.59231740e-01 5.51772594e-01 5.44367906e-01 + 5.37017644e-01 5.29721774e-01 5.22480262e-01 5.15293069e-01 5.08160159e-01 + 5.01081489e-01 4.94057020e-01 4.87086706e-01 4.80170504e-01 4.73308366e-01 + 4.66500245e-01 4.59746091e-01 4.53045851e-01 4.46399475e-01 4.39806906e-01 + 4.33268089e-01 4.26782967e-01 4.20351481e-01 4.13973569e-01 4.07649170e-01 + 4.01378220e-01 3.95160655e-01 3.88996407e-01 3.82885408e-01 3.76827589e-01 + 3.70822880e-01 3.64871206e-01 3.58972495e-01 3.53126672e-01 3.47333658e-01 + 3.41593377e-01 3.35905748e-01 3.30270691e-01 3.24688122e-01 3.19157958e-01 + 3.13680115e-01 3.08254504e-01 3.02881038e-01 2.97559628e-01 2.92290183e-01 + 2.87072611e-01 2.81906818e-01 2.76792711e-01 2.71730191e-01 2.66719163e-01 + 2.61759528e-01 2.56851184e-01 2.51994033e-01 2.47187969e-01 2.42432891e-01 + 2.37728692e-01 2.33075267e-01 2.28472507e-01 2.23920304e-01 2.19418548e-01 + 2.14967127e-01 2.10565929e-01 2.06214840e-01 2.01913745e-01 1.97662529e-01 + 1.93461073e-01 1.89309259e-01 1.85206967e-01 1.81154078e-01 1.77150468e-01 + 1.73196014e-01 1.69290593e-01 1.65434080e-01 1.61626346e-01 1.57867266e-01 + 1.54156710e-01 1.50494548e-01 1.46880650e-01 1.43314884e-01 1.39797116e-01 + 1.36327214e-01 1.32905040e-01 1.29530461e-01 1.26203337e-01 1.22923532e-01 + 1.19690905e-01 1.16505318e-01 1.13366628e-01 1.10274693e-01 1.07229370e-01 + 1.04230516e-01 1.01277984e-01 9.83716292e-02 9.55113045e-02 9.26968618e-02 + 8.99281522e-02 8.72050260e-02 8.45273325e-02 8.18949202e-02 7.93076365e-02 + 7.67653281e-02 7.42678408e-02 7.18150195e-02 6.94067082e-02 6.70427500e-02 + 6.47229875e-02 6.24472620e-02 6.02154142e-02 5.80272842e-02 5.58827108e-02 + 5.37815325e-02 5.17235866e-02 4.97087099e-02 4.77367383e-02 4.58075070e-02 + 4.39208503e-02 4.20766021e-02 4.02745951e-02 3.85146615e-02 3.67966330e-02 + 3.51203401e-02 3.34856129e-02 3.18922809e-02 3.03401727e-02 2.88291163e-02 + 2.73589389e-02 2.59294673e-02 2.45405275e-02 2.31919449e-02 2.18835440e-02 + 2.06151492e-02 1.93865837e-02 1.81976705e-02 1.70482319e-02 1.59380895e-02 + 1.48670644e-02 1.38349771e-02 1.28416476e-02 1.18868951e-02 1.09705385e-02 + 1.00923962e-02 9.25228574e-03 8.45002444e-03 7.68542897e-03 6.95831551e-03 + 6.26849972e-03 5.61579679e-03 5.00002140e-03 4.42098778e-03 3.87850967e-03 + 3.37240035e-03 2.90247264e-03 2.46853892e-03 2.07041115e-03 1.70790084e-03 + 1.38081907e-03 1.08897653e-03 8.32183493e-04 6.10249837e-04 4.22985050e-04 + 2.70198238e-04 1.51698135e-04 6.72931116e-05 1.67911789e-05 0.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 9.99979585e-01 9.99876811e-01 9.99687440e-01 9.99411505e-01 + 9.99049054e-01 9.98600150e-01 9.98064871e-01 9.97443309e-01 9.96735573e-01 + 9.95941783e-01 9.95062079e-01 9.94096613e-01 9.93045551e-01 9.91909077e-01 + 9.90687386e-01 9.89380690e-01 9.87989216e-01 9.86513205e-01 9.84952913e-01 + 9.83308609e-01 9.81580579e-01 9.79769122e-01 9.77874552e-01 9.75897197e-01 + 9.73837399e-01 9.71695516e-01 9.69471919e-01 9.67166992e-01 9.64781135e-01 + 9.62314761e-01 9.59768298e-01 9.57142187e-01 9.54436882e-01 9.51652852e-01 + 9.48790581e-01 9.45850562e-01 9.42833306e-01 9.39739336e-01 9.36569187e-01 + 9.33323409e-01 9.30002564e-01 9.26607226e-01 9.23137986e-01 9.19595442e-01 + 9.15980210e-01 9.12292915e-01 9.08534196e-01 9.04704704e-01 9.00805103e-01 + 8.96836069e-01 8.92798288e-01 8.88692460e-01 8.84519297e-01 8.80279522e-01 + 8.75973868e-01 8.71603083e-01 8.67167922e-01 8.62669155e-01 8.58107560e-01 + 8.53483929e-01 8.48799061e-01 8.44053769e-01 8.39248875e-01 8.34385211e-01 + 8.29463619e-01 8.24484952e-01 8.19450073e-01 8.14359853e-01 8.09215176e-01 + 8.04016931e-01 7.98766019e-01 7.93463351e-01 7.88109844e-01 7.82706427e-01 + 7.77254034e-01 7.71753611e-01 7.66206111e-01 7.60612494e-01 7.54973730e-01 + 7.49290796e-01 7.43564675e-01 7.37796360e-01 7.31986850e-01 7.26137152e-01 + 7.20248279e-01 7.14321251e-01 7.08357095e-01 7.02356844e-01 6.96321537e-01 + 6.90252221e-01 6.84149946e-01 6.78015770e-01 6.71850755e-01 6.65655970e-01 + 6.59432486e-01 6.53181384e-01 6.46903745e-01 6.40600657e-01 6.34273212e-01 + 6.27922506e-01 6.21549639e-01 6.15155716e-01 6.08741843e-01 6.02309133e-01 + 5.95858698e-01 5.89391658e-01 5.82909132e-01 5.76412243e-01 5.69902117e-01 + 5.63379881e-01 5.56846666e-01 5.50303602e-01 5.43751824e-01 5.37192467e-01 + 5.30626667e-01 5.24055561e-01 5.17480288e-01 5.10901987e-01 5.04321797e-01 + 4.97740858e-01 4.91160311e-01 4.84581295e-01 4.78004950e-01 4.71432416e-01 + 4.64864830e-01 4.58303331e-01 4.51749056e-01 4.45203139e-01 4.38666715e-01 + 4.32140916e-01 4.25626873e-01 4.19125714e-01 4.12638565e-01 4.06166550e-01 + 3.99710791e-01 3.93272405e-01 3.86852508e-01 3.80452213e-01 3.74072627e-01 + 3.67714857e-01 3.61380003e-01 3.55069163e-01 3.48783430e-01 3.42523893e-01 + 3.36291637e-01 3.30087741e-01 3.23913280e-01 3.17769323e-01 3.11656936e-01 + 3.05577176e-01 2.99531097e-01 2.93519746e-01 2.87544165e-01 2.81605389e-01 + 2.75704447e-01 2.69842361e-01 2.64020146e-01 2.58238812e-01 2.52499359e-01 + 2.46802782e-01 2.41150068e-01 2.35542196e-01 2.29980137e-01 2.24464856e-01 + 2.18997307e-01 2.13578438e-01 2.08209187e-01 2.02890485e-01 1.97623253e-01 + 1.92408404e-01 1.87246840e-01 1.82139456e-01 1.77087137e-01 1.72090758e-01 + 1.67151185e-01 1.62269273e-01 1.57445868e-01 1.52681806e-01 1.47977912e-01 + 1.43335000e-01 1.38753876e-01 1.34235332e-01 1.29780152e-01 1.25389107e-01 + 1.21062958e-01 1.16802455e-01 1.12608335e-01 1.08481325e-01 1.04422140e-01 + 1.00431484e-01 9.65100466e-02 9.26585085e-02 8.88775365e-02 8.51677856e-02 + 8.15298985e-02 7.79645054e-02 7.44722238e-02 7.10536590e-02 6.77094029e-02 + 6.44400350e-02 6.12461217e-02 5.81282163e-02 5.50868588e-02 5.21225762e-02 + 4.92358820e-02 4.64272763e-02 4.36972455e-02 4.10462627e-02 3.84747871e-02 + 3.59832642e-02 3.35721256e-02 3.12417889e-02 2.89926579e-02 2.68251222e-02 + 2.47395574e-02 2.27363246e-02 2.08157709e-02 1.89782291e-02 1.72240175e-02 + 1.55534399e-02 1.39667858e-02 1.24643300e-02 1.10463329e-02 9.71303993e-03 + 8.46468223e-03 7.30147603e-03 6.22362282e-03 5.23130933e-03 4.32470747e-03 + 3.50397429e-03 2.76925197e-03 2.12066779e-03 1.55833411e-03 1.08234835e-03 + 6.92792954e-04 3.89735421e-04 1.73228247e-04 4.33089373e-05 0.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 9.99980173e-01 9.99906079e-01 9.99777111e-01 9.99593281e-01 9.99354611e-01 + 9.99061126e-01 9.98712858e-01 9.98309847e-01 9.97852135e-01 9.97339773e-01 + 9.96772819e-01 9.96151332e-01 9.95475383e-01 9.94745045e-01 9.93960398e-01 + 9.93121529e-01 9.92228529e-01 9.91281497e-01 9.90280537e-01 9.89225758e-01 + 9.88117276e-01 9.86955213e-01 9.85739696e-01 9.84470859e-01 9.83148841e-01 + 9.81773788e-01 9.80345850e-01 9.78865184e-01 9.77331952e-01 9.75746323e-01 + 9.74108471e-01 9.72418575e-01 9.70676822e-01 9.68883402e-01 9.67038512e-01 + 9.65142355e-01 9.63195139e-01 9.61197077e-01 9.59148389e-01 9.57049300e-01 + 9.54900041e-01 9.52700846e-01 9.50451958e-01 9.48153624e-01 9.45806095e-01 + 9.43409630e-01 9.40964491e-01 9.38470947e-01 9.35929271e-01 9.33339743e-01 + 9.30702647e-01 9.28018273e-01 9.25286914e-01 9.22508871e-01 9.19684449e-01 + 9.16813958e-01 9.13897713e-01 9.10936034e-01 9.07929245e-01 9.04877679e-01 + 9.01781668e-01 8.98641553e-01 8.95457679e-01 8.92230395e-01 8.88960056e-01 + 8.85647020e-01 8.82291651e-01 8.78894318e-01 8.75455393e-01 8.71975254e-01 + 8.68454283e-01 8.64892866e-01 8.61291395e-01 8.57650264e-01 8.53969874e-01 + 8.50250628e-01 8.46492934e-01 8.42697206e-01 8.38863860e-01 8.34993316e-01 + 8.31085999e-01 8.27142339e-01 8.23162768e-01 8.19147724e-01 8.15097646e-01 + 8.11012979e-01 8.06894173e-01 8.02741678e-01 7.98555951e-01 7.94337451e-01 + 7.90086642e-01 7.85803989e-01 7.81489963e-01 7.77145038e-01 7.72769691e-01 + 7.68364401e-01 7.63929652e-01 7.59465932e-01 7.54973730e-01 7.50453539e-01 + 7.45905856e-01 7.41331179e-01 7.36730012e-01 7.32102858e-01 7.27450226e-01 + 7.22772626e-01 7.18070573e-01 7.13344581e-01 7.08595171e-01 7.03822863e-01 + 6.99028181e-01 6.94211651e-01 6.89373803e-01 6.84515167e-01 6.79636277e-01 + 6.74737667e-01 6.69819877e-01 6.64883445e-01 6.59928914e-01 6.54956827e-01 + 6.49967731e-01 6.44962172e-01 6.39940701e-01 6.34903869e-01 6.29852227e-01 + 6.24786332e-01 6.19706739e-01 6.14614006e-01 6.09508691e-01 6.04391355e-01 + 5.99262560e-01 5.94122870e-01 5.88972847e-01 5.83813057e-01 5.78644067e-01 + 5.73466445e-01 5.68280758e-01 5.63087575e-01 5.57887468e-01 5.52681006e-01 + 5.47468761e-01 5.42251306e-01 5.37029212e-01 5.31803054e-01 5.26573405e-01 + 5.21340839e-01 5.16105930e-01 5.10869253e-01 5.05631384e-01 5.00392895e-01 + 4.95154364e-01 4.89916365e-01 4.84679473e-01 4.79444262e-01 4.74211308e-01 + 4.68981185e-01 4.63754466e-01 4.58531727e-01 4.53313539e-01 4.48100476e-01 + 4.42893110e-01 4.37692013e-01 4.32497756e-01 4.27310908e-01 4.22132040e-01 + 4.16961719e-01 4.11800513e-01 4.06648989e-01 4.01507712e-01 3.96377247e-01 + 3.91258157e-01 3.86151003e-01 3.81056347e-01 3.75974747e-01 3.70906762e-01 + 3.65852947e-01 3.60813858e-01 3.55790047e-01 3.50782067e-01 3.45790466e-01 + 3.40815793e-01 3.35858594e-01 3.30919413e-01 3.25998792e-01 3.21097271e-01 + 3.16215388e-01 3.11353680e-01 3.06512680e-01 3.01692919e-01 2.96894926e-01 + 2.92119228e-01 2.87366350e-01 2.82636813e-01 2.77931136e-01 2.73249835e-01 + 2.68593425e-01 2.63962417e-01 2.59357319e-01 2.54778637e-01 2.50226873e-01 + 2.45702526e-01 2.41206094e-01 2.36738071e-01 2.32298945e-01 2.27889206e-01 + 2.23509336e-01 2.19159817e-01 2.14841126e-01 2.10553738e-01 2.06298122e-01 + 2.02074746e-01 1.97884074e-01 1.93726565e-01 1.89602676e-01 1.85512860e-01 + 1.81457565e-01 1.77437238e-01 1.73452318e-01 1.69503243e-01 1.65590448e-01 + 1.61714361e-01 1.57875408e-01 1.54074010e-01 1.50310585e-01 1.46585546e-01 + 1.42899302e-01 1.39252256e-01 1.35644811e-01 1.32077361e-01 1.28550298e-01 + 1.25064010e-01 1.21618879e-01 1.18215283e-01 1.14853596e-01 1.11534187e-01 + 1.08257420e-01 1.05023655e-01 1.01833247e-01 9.86865462e-02 9.55838981e-02 + 9.25256431e-02 8.95121170e-02 8.65436505e-02 8.36205696e-02 8.07431951e-02 + 7.79118428e-02 7.51268235e-02 7.23884430e-02 6.96970019e-02 6.70527955e-02 + 6.44561143e-02 6.19072431e-02 5.94064618e-02 5.69540448e-02 5.45502615e-02 + 5.21953757e-02 4.98896458e-02 4.76333250e-02 4.54266610e-02 4.32698959e-02 + 4.11632665e-02 3.91070041e-02 3.71013344e-02 3.51464776e-02 3.32426482e-02 + 3.13900552e-02 2.95889020e-02 2.78393864e-02 2.61417002e-02 2.44960300e-02 + 2.29025563e-02 2.13614541e-02 1.98728925e-02 1.84370350e-02 1.70540391e-02 + 1.57240567e-02 1.44472338e-02 1.32237104e-02 1.20536210e-02 1.09370940e-02 + 9.87425188e-03 8.86521137e-03 7.91008322e-03 7.00897228e-03 6.16197747e-03 + 5.36919175e-03 4.63070216e-03 3.94658975e-03 3.31692963e-03 2.74179092e-03 + 2.22123674e-03 1.75532423e-03 1.34410455e-03 9.87622837e-04 6.85918213e-04 + 4.39023800e-04 2.46966702e-04 1.09767999e-04 2.74427529e-05 0.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 9.99998611e-01 + 9.99988405e-01 9.99968287e-01 9.99938255e-01 9.99898310e-01 9.99848454e-01 + 9.99788687e-01 9.99719010e-01 9.99639425e-01 9.99549934e-01 9.99450537e-01 + 9.99341238e-01 9.99222038e-01 9.99092940e-01 9.98953946e-01 9.98805059e-01 + 9.98646282e-01 9.98477618e-01 9.98299070e-01 9.98110643e-01 9.97912339e-01 + 9.97704162e-01 9.97486118e-01 9.97258209e-01 9.97020441e-01 9.96772819e-01 + 9.96515346e-01 9.96248029e-01 9.95970873e-01 9.95683882e-01 9.95387064e-01 + 9.95080423e-01 9.94763966e-01 9.94437699e-01 9.94101628e-01 9.93755761e-01 + 9.93400104e-01 9.93034664e-01 9.92659448e-01 9.92274464e-01 9.91879719e-01 + 9.91475222e-01 9.91060979e-01 9.90637001e-01 9.90203294e-01 9.89759867e-01 + 9.89306730e-01 9.88843892e-01 9.88371360e-01 9.87889146e-01 9.87397257e-01 + 9.86895705e-01 9.86384499e-01 9.85863649e-01 9.85333166e-01 9.84793060e-01 + 9.84243341e-01 9.83684021e-01 9.83115111e-01 9.82536622e-01 9.81948565e-01 + 9.81350952e-01 9.80743796e-01 9.80127107e-01 9.79500899e-01 9.78865184e-01 + 9.78219973e-01 9.77565281e-01 9.76901120e-01 9.76227503e-01 9.75544444e-01 + 9.74851956e-01 9.74150052e-01 9.73438748e-01 9.72718056e-01 9.71987991e-01 + 9.71248568e-01 9.70499802e-01 9.69741706e-01 9.68974297e-01 9.68197589e-01 + 9.67411598e-01 9.66616339e-01 9.65811829e-01 9.64998082e-01 9.64175116e-01 + 9.63342946e-01 9.62501590e-01 9.61651063e-01 9.60791382e-01 9.59922566e-01 + 9.59044630e-01 9.58157592e-01 9.57261471e-01 9.56356283e-01 9.55442046e-01 + 9.54518780e-01 9.53586501e-01 9.52645229e-01 9.51694982e-01 9.50735778e-01 + 9.49767638e-01 9.48790581e-01 9.47804624e-01 9.46809789e-01 9.45806095e-01 + 9.44793561e-01 9.43772209e-01 9.42742057e-01 9.41703127e-01 9.40655439e-01 + 9.39599014e-01 9.38533873e-01 9.37460037e-01 9.36377527e-01 9.35286364e-01 + 9.34186571e-01 9.33078170e-01 9.31961181e-01 9.30835628e-01 9.29701532e-01 + 9.28558916e-01 9.27407803e-01 9.26248215e-01 9.25080177e-01 9.23903709e-01 + 9.22718837e-01 9.21525584e-01 9.20323972e-01 9.19114027e-01 9.17895771e-01 + 9.16669230e-01 9.15434427e-01 9.14191387e-01 9.12940135e-01 9.11680695e-01 + 9.10413093e-01 9.09137353e-01 9.07853501e-01 9.06561562e-01 9.05261562e-01 + 9.03953527e-01 9.02637482e-01 9.01313454e-01 8.99981469e-01 8.98641553e-01 + 8.97293733e-01 8.95938036e-01 8.94574488e-01 8.93203117e-01 8.91823950e-01 + 8.90437014e-01 8.89042336e-01 8.87639945e-01 8.86229867e-01 8.84812132e-01 + 8.83386767e-01 8.81953800e-01 8.80513260e-01 8.79065175e-01 8.77609575e-01 + 8.76146487e-01 8.74675941e-01 8.73197967e-01 8.71712593e-01 8.70219848e-01 + 8.68719763e-01 8.67212368e-01 8.65697691e-01 8.64175763e-01 8.62646615e-01 + 8.61110277e-01 8.59566778e-01 8.58016150e-01 8.56458424e-01 8.54893630e-01 + 8.53321799e-01 8.51742963e-01 8.50157152e-01 8.48564399e-01 8.46964734e-01 + 8.45358191e-01 8.43744799e-01 8.42124592e-01 8.40497601e-01 8.38863860e-01 + 8.37223399e-01 8.35576252e-01 8.33922451e-01 8.32262030e-01 8.30595020e-01 + 8.28921456e-01 8.27241370e-01 8.25554796e-01 8.23861766e-01 8.22162316e-01 + 8.20456477e-01 8.18744285e-01 8.17025773e-01 8.15300975e-01 8.13569925e-01 + 8.11832658e-01 8.10089208e-01 8.08339610e-01 8.06583898e-01 8.04822108e-01 + 8.03054273e-01 8.01280430e-01 7.99500613e-01 7.97714858e-01 7.95923200e-01 + 7.94125674e-01 7.92322317e-01 7.90513163e-01 7.88698249e-01 7.86877612e-01 + 7.85051286e-01 7.83219308e-01 7.81381715e-01 7.79538542e-01 7.77689827e-01 + 7.75835606e-01 7.73975916e-01 7.72110794e-01 7.70240277e-01 7.68364401e-01 + 7.66483204e-01 7.64596724e-01 7.62704997e-01 7.60808061e-01 7.58905954e-01 + 7.56998714e-01 7.55086378e-01 7.53168985e-01 7.51246571e-01 7.49319177e-01 + 7.47386838e-01 7.45449595e-01 7.43507485e-01 7.41560547e-01 7.39608819e-01 + 7.37652340e-01 7.35691150e-01 7.33725286e-01 7.31754788e-01 7.29779695e-01 + 7.27800045e-01 7.25815880e-01 7.23827236e-01 7.21834155e-01 7.19836676e-01 + 7.17834837e-01 7.15828680e-01 7.13818243e-01 7.11803566e-01 7.09784691e-01 + 7.07761655e-01 7.05734500e-01 7.03703266e-01 7.01667993e-01 6.99628722e-01 + 6.97585492e-01 6.95538345e-01 6.93487320e-01 6.91432460e-01 6.89373803e-01 + 6.87311392e-01 6.85245267e-01 6.83175469e-01 6.81102039e-01 6.79025018e-01 + 6.76944447e-01 6.74860369e-01 6.72772823e-01 6.70681851e-01 6.68587496e-01 + 6.66489797e-01 6.64388798e-01 6.62284539e-01 6.60177062e-01 6.58066410e-01 + 6.55952623e-01 6.53835744e-01 6.51715815e-01 6.49592878e-01 6.47466975e-01 + 6.45338148e-01 6.43206439e-01 6.41071891e-01 6.38934546e-01 6.36794446e-01 + 6.34651634e-01 6.32506151e-01 6.30358042e-01 6.28207348e-01 6.26054112e-01 + 6.23898376e-01 6.21740184e-01 6.19579579e-01 6.17416602e-01 6.15251297e-01 + 6.13083707e-01 6.10913875e-01 6.08741843e-01 6.06567656e-01 6.04391355e-01 + 6.02212985e-01 6.00032588e-01 5.97850208e-01 5.95665887e-01 5.93479670e-01 + 5.91291599e-01 5.89101719e-01 5.86910071e-01 5.84716701e-01 5.82521650e-01 + 5.80324964e-01 5.78126684e-01 5.75926856e-01 5.73725522e-01 5.71522727e-01 + 5.69318513e-01 5.67112925e-01 5.64906006e-01 5.62697800e-01 5.60488352e-01 + 5.58277703e-01 5.56065900e-01 5.53852984e-01 5.51639001e-01 5.49423994e-01 + 5.47208007e-01 5.44991085e-01 5.42773270e-01 5.40554606e-01 5.38335139e-01 + 5.36114912e-01 5.33893969e-01 5.31672353e-01 5.29450110e-01 5.27227283e-01 + 5.25003915e-01 5.22780052e-01 5.20555738e-01 5.18331016e-01 5.16105930e-01 + 5.13880525e-01 5.11654845e-01 5.09428934e-01 5.07202836e-01 5.04976595e-01 + 5.02750255e-01 5.00523861e-01 4.98297456e-01 4.96071085e-01 4.93844792e-01 + 4.91618621e-01 4.89392617e-01 4.87166822e-01 4.84941282e-01 4.82716041e-01 + 4.80491142e-01 4.78266630e-01 4.76042549e-01 4.73818943e-01 4.71595856e-01 + 4.69373333e-01 4.67151416e-01 4.64930151e-01 4.62709582e-01 4.60489751e-01 + 4.58270704e-01 4.56052485e-01 4.53835136e-01 4.51618704e-01 4.49403230e-01 + 4.47188760e-01 4.44975336e-01 4.42763004e-01 4.40551807e-01 4.38341788e-01 + 4.36132992e-01 4.33925462e-01 4.31719242e-01 4.29514376e-01 4.27310908e-01 + 4.25108881e-01 4.22908339e-01 4.20709325e-01 4.18511884e-01 4.16316058e-01 + 4.14121891e-01 4.11929427e-01 4.09738710e-01 4.07549782e-01 4.05362687e-01 + 4.03177469e-01 4.00994170e-01 3.98812834e-01 3.96633505e-01 3.94456225e-01 + 3.92281038e-01 3.90107987e-01 3.87937114e-01 3.85768464e-01 3.83602078e-01 + 3.81438000e-01 3.79276273e-01 3.77116940e-01 3.74960043e-01 3.72805626e-01 + 3.70653730e-01 3.68504399e-01 3.66357675e-01 3.64213601e-01 3.62072219e-01 + 3.59933573e-01 3.57797703e-01 3.55664653e-01 3.53534464e-01 3.51407180e-01 + 3.49282842e-01 3.47161492e-01 3.45043173e-01 3.42927926e-01 3.40815793e-01 + 3.38706817e-01 3.36601038e-01 3.34498500e-01 3.32399243e-01 3.30303309e-01 + 3.28210740e-01 3.26121577e-01 3.24035861e-01 3.21953634e-01 3.19874938e-01 + 3.17799813e-01 3.15728301e-01 3.13660442e-01 3.11596278e-01 3.09535850e-01 + 3.07479198e-01 3.05426363e-01 3.03377386e-01 3.01332308e-01 2.99291168e-01 + 2.97254009e-01 2.95220869e-01 2.93191789e-01 2.91166810e-01 2.89145972e-01 + 2.87129315e-01 2.85116878e-01 2.83108701e-01 2.81104825e-01 2.79105290e-01 + 2.77110134e-01 2.75119397e-01 2.73133119e-01 2.71151340e-01 2.69174098e-01 + 2.67201433e-01 2.65233383e-01 2.63269988e-01 2.61311288e-01 2.59357319e-01 + 2.57408122e-01 2.55463735e-01 2.53524197e-01 2.51589546e-01 2.49659820e-01 + 2.47735057e-01 2.45815297e-01 2.43900576e-01 2.41990933e-01 2.40086406e-01 + 2.38187032e-01 2.36292850e-01 2.34403896e-01 2.32520208e-01 2.30641823e-01 + 2.28768780e-01 2.26901114e-01 2.25038863e-01 2.23182064e-01 2.21330753e-01 + 2.19484968e-01 2.17644744e-01 2.15810120e-01 2.13981129e-01 2.12157810e-01 + 2.10340199e-01 2.08528330e-01 2.06722240e-01 2.04921966e-01 2.03127542e-01 + 2.01339005e-01 1.99556389e-01 1.97779730e-01 1.96009063e-01 1.94244424e-01 + 1.92485848e-01 1.90733368e-01 1.88987021e-01 1.87246840e-01 1.85512860e-01 + 1.83785116e-01 1.82063641e-01 1.80348471e-01 1.78639638e-01 1.76937177e-01 + 1.75241122e-01 1.73551506e-01 1.71868362e-01 1.70191725e-01 1.68521627e-01 + 1.66858101e-01 1.65201180e-01 1.63550898e-01 1.61907287e-01 1.60270379e-01 + 1.58640208e-01 1.57016804e-01 1.55400201e-01 1.53790431e-01 1.52187525e-01 + 1.50591516e-01 1.49002434e-01 1.47420312e-01 1.45845181e-01 1.44277071e-01 + 1.42716015e-01 1.41162043e-01 1.39615186e-01 1.38075474e-01 1.36542938e-01 + 1.35017609e-01 1.33499516e-01 1.31988690e-01 1.30485161e-01 1.28988959e-01 + 1.27500113e-01 1.26018652e-01 1.24544607e-01 1.23078006e-01 1.21618879e-01 + 1.20167254e-01 1.18723160e-01 1.17286625e-01 1.15857679e-01 1.14436350e-01 + 1.13022665e-01 1.11616654e-01 1.10218343e-01 1.08827760e-01 1.07444933e-01 + 1.06069890e-01 1.04702657e-01 1.03343262e-01 1.01991732e-01 1.00648094e-01 + 9.93123732e-02 9.79845974e-02 9.66647925e-02 9.53529849e-02 9.40492003e-02 + 9.27534648e-02 9.14658040e-02 9.01862434e-02 8.89148084e-02 8.76515242e-02 + 8.63964159e-02 8.51495083e-02 8.39108261e-02 8.26803940e-02 8.14582364e-02 + 8.02443773e-02 7.90388410e-02 7.78416513e-02 7.66528320e-02 7.54724066e-02 + 7.43003985e-02 7.31368310e-02 7.19817272e-02 7.08351099e-02 6.96970019e-02 + 6.85674257e-02 6.74464038e-02 6.63339584e-02 6.52301115e-02 6.41348850e-02 + 6.30483006e-02 6.19703799e-02 6.09011443e-02 5.98406149e-02 5.87888128e-02 + 5.77457588e-02 5.67114736e-02 5.56859778e-02 5.46692916e-02 5.36614352e-02 + 5.26624286e-02 5.16722916e-02 5.06910438e-02 4.97187048e-02 4.87552937e-02 + 4.78008297e-02 4.68553316e-02 4.59188183e-02 4.49913084e-02 4.40728201e-02 + 4.31633717e-02 4.22629813e-02 4.13716667e-02 4.04894456e-02 3.96163354e-02 + 3.87523535e-02 3.78975170e-02 3.70518428e-02 3.62153478e-02 3.53880485e-02 + 3.45699613e-02 3.37611024e-02 3.29614879e-02 3.21711336e-02 3.13900552e-02 + 3.06182682e-02 2.98557879e-02 2.91026294e-02 2.83588076e-02 2.76243373e-02 + 2.68992330e-02 2.61835092e-02 2.54771800e-02 2.47802594e-02 2.40927612e-02 + 2.34146991e-02 2.27460866e-02 2.20869367e-02 2.14372628e-02 2.07970775e-02 + 2.01663937e-02 1.95452238e-02 1.89335801e-02 1.83314748e-02 1.77389197e-02 + 1.71559268e-02 1.65825074e-02 1.60186730e-02 1.54644348e-02 1.49198037e-02 + 1.43847906e-02 1.38594060e-02 1.33436604e-02 1.28375640e-02 1.23411268e-02 + 1.18543587e-02 1.13772693e-02 1.09098682e-02 1.04521644e-02 1.00041672e-02 + 9.56588541e-03 9.13732771e-03 8.71850261e-03 8.30941841e-03 7.91008322e-03 + 7.52050497e-03 7.14069137e-03 6.77064996e-03 6.41038807e-03 6.05991285e-03 + 5.71923124e-03 5.38835001e-03 5.06727570e-03 4.75601470e-03 4.45457316e-03 + 4.16295707e-03 3.88117220e-03 3.60922415e-03 3.34711831e-03 3.09485987e-03 + 2.85245383e-03 2.61990501e-03 2.39721801e-03 2.18439724e-03 1.98144694e-03 + 1.78837111e-03 1.60517360e-03 1.43185803e-03 1.26842784e-03 1.11488626e-03 + 9.71236350e-04 8.37480951e-04 7.13622715e-04 5.99664099e-04 4.95607361e-04 + 4.01454566e-04 3.17207579e-04 2.42868072e-04 1.78437519e-04 1.23917196e-04 + 7.93081847e-05 4.46113698e-05 1.98274393e-05 4.95688439e-06 0.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 9.99990121e-01 + 9.99925288e-01 9.99799954e-01 9.99614132e-01 9.99367846e-01 9.99061126e-01 + 9.98694008e-01 9.98266536e-01 9.97778763e-01 9.97230748e-01 9.96622557e-01 + 9.95954263e-01 9.95225948e-01 9.94437699e-01 9.93589612e-01 9.92681790e-01 + 9.91714342e-01 9.90687386e-01 9.89601045e-01 9.88455452e-01 9.87250745e-01 + 9.85987069e-01 9.84664578e-01 9.83283432e-01 9.81843798e-01 9.80345850e-01 + 9.78789769e-01 9.77175744e-01 9.75503970e-01 9.73774649e-01 9.71987991e-01 + 9.70144212e-01 9.68243535e-01 9.66286190e-01 9.64272414e-01 9.62202450e-01 + 9.60076550e-01 9.57894969e-01 9.55657974e-01 9.53365833e-01 9.51018826e-01 + 9.48617234e-01 9.46161350e-01 9.43651471e-01 9.41087899e-01 9.38470947e-01 + 9.35800929e-01 9.33078170e-01 9.30302998e-01 9.27475750e-01 9.24596768e-01 + 9.21666401e-01 9.18685002e-01 9.15652933e-01 9.12570560e-01 9.09438258e-01 + 9.06256404e-01 9.03025384e-01 8.99745589e-01 8.96417415e-01 8.93041266e-01 + 8.89617551e-01 8.86146683e-01 8.82629082e-01 8.79065175e-01 8.75455393e-01 + 8.71800172e-01 8.68099955e-01 8.64355189e-01 8.60566328e-01 8.56733831e-01 + 8.52858161e-01 8.48939787e-01 8.44979184e-01 8.40976830e-01 8.36933211e-01 + 8.32848815e-01 8.28724137e-01 8.24559676e-01 8.20355936e-01 8.16113425e-01 + 8.11832658e-01 8.07514152e-01 8.03158430e-01 7.98766019e-01 7.94337451e-01 + 7.89873261e-01 7.85373990e-01 7.80840183e-01 7.76272387e-01 7.71671156e-01 + 7.67037047e-01 7.62370621e-01 7.57672442e-01 7.52943078e-01 7.48183103e-01 + 7.43393092e-01 7.38573625e-01 7.33725286e-01 7.28848660e-01 7.23944339e-01 + 7.19012915e-01 7.14054986e-01 7.09071151e-01 7.04062014e-01 6.99028181e-01 + 6.93970261e-01 6.88888866e-01 6.83784612e-01 6.78658115e-01 6.73509997e-01 + 6.68340880e-01 6.63151390e-01 6.57942156e-01 6.52713806e-01 6.47466975e-01 + 6.42202297e-01 6.36920410e-01 6.31621952e-01 6.26307564e-01 6.20977891e-01 + 6.15633577e-01 6.10275268e-01 6.04903614e-01 5.99519264e-01 5.94122870e-01 + 5.88715084e-01 5.83296563e-01 5.77867960e-01 5.72429934e-01 5.66983143e-01 + 5.61528244e-01 5.56065900e-01 5.50596770e-01 5.45121517e-01 5.39640803e-01 + 5.34155292e-01 5.28665647e-01 5.23172533e-01 5.17676615e-01 5.12178557e-01 + 5.06679025e-01 5.01178685e-01 4.95678203e-01 4.90178244e-01 4.84679473e-01 + 4.79182556e-01 4.73688159e-01 4.68196946e-01 4.62709582e-01 4.57226730e-01 + 4.51749056e-01 4.46277221e-01 4.40811887e-01 4.35353717e-01 4.29903370e-01 + 4.24461507e-01 4.19028785e-01 4.13605863e-01 4.08193396e-01 4.02792040e-01 + 3.97402448e-01 3.92025273e-01 3.86661165e-01 3.81310774e-01 3.75974747e-01 + 3.70653730e-01 3.65348366e-01 3.60059299e-01 3.54787167e-01 3.49532610e-01 + 3.44296262e-01 3.39078758e-01 3.33880729e-01 3.28702804e-01 3.23545610e-01 + 3.18409771e-01 3.13295908e-01 3.08204641e-01 3.03136585e-01 2.98092355e-01 + 2.93072559e-01 2.88077807e-01 2.83108701e-01 2.78165845e-01 2.73249835e-01 + 2.68361267e-01 2.63500733e-01 2.58668821e-01 2.53866115e-01 2.49093196e-01 + 2.44350643e-01 2.39639029e-01 2.34958925e-01 2.30310897e-01 2.25695507e-01 + 2.21113314e-01 2.16564873e-01 2.12050734e-01 2.07571443e-01 2.03127542e-01 + 1.98719570e-01 1.94348059e-01 1.90013539e-01 1.85716535e-01 1.81457565e-01 + 1.77237147e-01 1.73055790e-01 1.68914001e-01 1.64812280e-01 1.60751125e-01 + 1.56731026e-01 1.52752471e-01 1.48815940e-01 1.44921911e-01 1.41070854e-01 + 1.37263235e-01 1.33499516e-01 1.29780152e-01 1.26105592e-01 1.22476282e-01 + 1.18892661e-01 1.15355162e-01 1.11864215e-01 1.08420240e-01 1.05023655e-01 + 1.01674871e-01 9.83742934e-02 9.51223215e-02 9.19193489e-02 8.87657632e-02 + 8.56619461e-02 8.26082731e-02 7.96051139e-02 7.66528320e-02 7.37517845e-02 + 7.09023226e-02 6.81047912e-02 6.53595288e-02 6.26668676e-02 6.00271336e-02 + 5.74406461e-02 5.49077182e-02 5.24286565e-02 5.00037609e-02 4.76333250e-02 + 4.53176356e-02 4.30569730e-02 4.08516107e-02 3.87018157e-02 3.66078480e-02 + 3.45699613e-02 3.25884020e-02 3.06634100e-02 2.87952182e-02 2.69840528e-02 + 2.52301330e-02 2.35336709e-02 2.18948719e-02 2.03139344e-02 1.87910497e-02 + 1.73264020e-02 1.59201687e-02 1.45725199e-02 1.32836186e-02 1.20536210e-02 + 1.08826759e-02 9.77092489e-03 8.71850261e-03 7.72553641e-03 6.79214646e-03 + 5.91844572e-03 5.10453993e-03 4.35052759e-03 3.65649996e-03 3.02254101e-03 + 2.44872749e-03 1.93512883e-03 1.48180718e-03 1.08881742e-03 7.56207102e-04 + 4.84016478e-04 2.72278491e-04 1.21018765e-04 3.02556067e-05 0.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 9.99975710e-01 + 9.99895217e-01 9.99758386e-01 9.99565232e-01 9.99315778e-01 9.99010051e-01 + 9.98648086e-01 9.98229923e-01 9.97755610e-01 9.97225201e-01 9.96638754e-01 + 9.95996336e-01 9.95298020e-01 9.94543884e-01 9.93734013e-01 9.92868499e-01 + 9.91947438e-01 9.90970935e-01 9.89939101e-01 9.88852050e-01 9.87709905e-01 + 9.86512796e-01 9.85260858e-01 9.83954230e-01 9.82593062e-01 9.81177505e-01 + 9.79707720e-01 9.78183872e-01 9.76606132e-01 9.74974680e-01 9.73289698e-01 + 9.71551377e-01 9.69759912e-01 9.67915505e-01 9.66018364e-01 9.64068704e-01 + 9.62066743e-01 9.60012707e-01 9.57906828e-01 9.55749343e-01 9.53540496e-01 + 9.51280535e-01 9.48969714e-01 9.46608295e-01 9.44196544e-01 9.41734731e-01 + 9.39223136e-01 9.36662040e-01 9.34051732e-01 9.31392507e-01 9.28684665e-01 + 9.25928510e-01 9.23124352e-01 9.20272509e-01 9.17373302e-01 9.14427057e-01 + 9.11434106e-01 9.08394786e-01 9.05309441e-01 9.02178417e-01 8.99002068e-01 + 8.95780752e-01 8.92514832e-01 8.89204675e-01 8.85850655e-01 8.82453150e-01 + 8.79012542e-01 8.75529221e-01 8.72003577e-01 8.68436008e-01 8.64826917e-01 + 8.61176710e-01 8.57485799e-01 8.53754599e-01 8.49983531e-01 8.46173020e-01 + 8.42323496e-01 8.38435392e-01 8.34509147e-01 8.30545202e-01 8.26544005e-01 + 8.22506007e-01 8.18431663e-01 8.14321431e-01 8.10175776e-01 8.05995164e-01 + 8.01780066e-01 7.97530958e-01 7.93248319e-01 7.88932630e-01 7.84584379e-01 + 7.80204055e-01 7.75792153e-01 7.71349168e-01 7.66875603e-01 7.62371961e-01 + 7.57838750e-01 7.53276481e-01 7.48685668e-01 7.44066827e-01 7.39420481e-01 + 7.34747152e-01 7.30047367e-01 7.25321656e-01 7.20570551e-01 7.15794588e-01 + 7.10994305e-01 7.06170243e-01 7.01322946e-01 6.96452960e-01 6.91560833e-01 + 6.86647118e-01 6.81712368e-01 6.76757139e-01 6.71781989e-01 6.66787480e-01 + 6.61774174e-01 6.56742636e-01 6.51693433e-01 6.46627134e-01 6.41544311e-01 + 6.36445535e-01 6.31331383e-01 6.26202429e-01 6.21059252e-01 6.15902432e-01 + 6.10732550e-01 6.05550188e-01 6.00355931e-01 5.95150364e-01 5.89934073e-01 + 5.84707647e-01 5.79471675e-01 5.74226746e-01 5.68973451e-01 5.63712384e-01 + 5.58444136e-01 5.53169301e-01 5.47888474e-01 5.42602250e-01 5.37311225e-01 + 5.32015995e-01 5.26717157e-01 5.21415308e-01 5.16111045e-01 5.10804967e-01 + 5.05497671e-01 5.00189755e-01 4.94881818e-01 4.89574458e-01 4.84268272e-01 + 4.78963860e-01 4.73661819e-01 4.68362745e-01 4.63067237e-01 4.57775892e-01 + 4.52489305e-01 4.47208073e-01 4.41932790e-01 4.36664051e-01 4.31402451e-01 + 4.26148581e-01 4.20903034e-01 4.15666401e-01 4.10439273e-01 4.05222238e-01 + 4.00015885e-01 3.94820800e-01 3.89637568e-01 3.84466774e-01 3.79309001e-01 + 3.74164830e-01 3.69034840e-01 3.63919610e-01 3.58819716e-01 3.53735733e-01 + 3.48668234e-01 3.43617790e-01 3.38584970e-01 3.33570341e-01 3.28574469e-01 + 3.23597917e-01 3.18641245e-01 3.13705012e-01 3.08789775e-01 3.03896087e-01 + 2.99024499e-01 2.94175562e-01 2.89349820e-01 2.84547819e-01 2.79770100e-01 + 2.75017200e-01 2.70289655e-01 2.65587999e-01 2.60912761e-01 2.56264468e-01 + 2.51643644e-01 2.47050809e-01 2.42486482e-01 2.37951176e-01 2.33445403e-01 + 2.28969671e-01 2.24524484e-01 2.20110342e-01 2.15727744e-01 2.11377184e-01 + 2.07059151e-01 2.02774132e-01 1.98522611e-01 1.94305066e-01 1.90121972e-01 + 1.85973802e-01 1.81861023e-01 1.77784097e-01 1.73743485e-01 1.69739642e-01 + 1.65773019e-01 1.61844064e-01 1.57953218e-01 1.54100921e-01 1.50287606e-01 + 1.46513704e-01 1.42779640e-01 1.39085834e-01 1.35432703e-01 1.31820659e-01 + 1.28250109e-01 1.24721454e-01 1.21235093e-01 1.17791419e-01 1.14390819e-01 + 1.11033677e-01 1.07720372e-01 1.04451277e-01 1.01226759e-01 9.80471834e-02 + 9.49129074e-02 9.18242846e-02 8.87816629e-02 8.57853854e-02 8.28357897e-02 + 7.99332082e-02 7.70779680e-02 7.42703909e-02 7.15107933e-02 6.87994863e-02 + 6.61367753e-02 6.35229606e-02 6.09583365e-02 5.84431923e-02 5.59778113e-02 + 5.35624714e-02 5.11974448e-02 4.88829981e-02 4.66193920e-02 4.44068816e-02 + 4.22457164e-02 4.01361399e-02 3.80783899e-02 3.60726981e-02 3.41192908e-02 + 3.22183880e-02 3.03702040e-02 2.85749470e-02 2.68328194e-02 2.51440175e-02 + 2.35087316e-02 2.19271461e-02 2.03994392e-02 1.89257830e-02 1.75063436e-02 + 1.61412811e-02 1.48307492e-02 1.35748956e-02 1.23738620e-02 1.12277835e-02 + 1.01367895e-02 9.10100279e-03 8.12054017e-03 7.19551214e-03 6.32602293e-03 + 5.51217055e-03 4.75404670e-03 4.05173684e-03 3.40532012e-03 2.81486937e-03 + 2.28045115e-03 1.80212569e-03 1.37994689e-03 1.01396233e-03 7.04213259e-04 + 4.50734584e-04 2.53554873e-04 1.12696347e-04 2.81748805e-05 0.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 9.99999383e-01 + 9.99986934e-01 9.99958482e-01 9.99914026e-01 9.99853569e-01 9.99777111e-01 + 9.99684655e-01 9.99576205e-01 9.99451764e-01 9.99311336e-01 9.99154925e-01 + 9.98982536e-01 9.98794176e-01 9.98589849e-01 9.98369562e-01 9.98133323e-01 + 9.97881139e-01 9.97613018e-01 9.97328969e-01 9.97029001e-01 9.96713123e-01 + 9.96381345e-01 9.96033679e-01 9.95670135e-01 9.95290724e-01 9.94895460e-01 + 9.94484354e-01 9.94057421e-01 9.93614672e-01 9.93156124e-01 9.92681790e-01 + 9.92191685e-01 9.91685825e-01 9.91164227e-01 9.90626907e-01 9.90073883e-01 + 9.89505171e-01 9.88920791e-01 9.88320760e-01 9.87705099e-01 9.87073826e-01 + 9.86426963e-01 9.85764529e-01 9.85086546e-01 9.84393036e-01 9.83684021e-01 + 9.82959523e-01 9.82219566e-01 9.81464174e-01 9.80693370e-01 9.79907179e-01 + 9.79105627e-01 9.78288739e-01 9.77456541e-01 9.76609060e-01 9.75746323e-01 + 9.74868358e-01 9.73975192e-01 9.73066855e-01 9.72143375e-01 9.71204782e-01 + 9.70251106e-01 9.69282377e-01 9.68298628e-01 9.67299888e-01 9.66286190e-01 + 9.65257566e-01 9.64214050e-01 9.63155675e-01 9.62082474e-01 9.60994483e-01 + 9.59891735e-01 9.58774266e-01 9.57642113e-01 9.56495310e-01 9.55333895e-01 + 9.54157905e-01 9.52967378e-01 9.51762352e-01 9.50542865e-01 9.49308956e-01 + 9.48060665e-01 9.46798032e-01 9.45521098e-01 9.44229902e-01 9.42924487e-01 + 9.41604894e-01 9.40271166e-01 9.38923345e-01 9.37561474e-01 9.36185597e-01 + 9.34795758e-01 9.33392001e-01 9.31974372e-01 9.30542915e-01 9.29097677e-01 + 9.27638704e-01 9.26166043e-01 9.24679740e-01 9.23179843e-01 9.21666401e-01 + 9.20139461e-01 9.18599073e-01 9.17045285e-01 9.15478149e-01 9.13897713e-01 + 9.12304028e-01 9.10697146e-01 9.09077118e-01 9.07443995e-01 9.05797831e-01 + 9.04138676e-01 9.02466586e-01 9.00781613e-01 8.99083811e-01 8.97373235e-01 + 8.95649939e-01 8.93913979e-01 8.92165409e-01 8.90404287e-01 8.88630668e-01 + 8.86844609e-01 8.85046167e-01 8.83235400e-01 8.81412366e-01 8.79577124e-01 + 8.77729731e-01 8.75870247e-01 8.73998732e-01 8.72115246e-01 8.70219848e-01 + 8.68312600e-01 8.66393562e-01 8.64462797e-01 8.62520365e-01 8.60566328e-01 + 8.58600751e-01 8.56623695e-01 8.54635223e-01 8.52635400e-01 8.50624289e-01 + 8.48601955e-01 8.46568462e-01 8.44523876e-01 8.42468262e-01 8.40401685e-01 + 8.38324213e-01 8.36235911e-01 8.34136846e-01 8.32027086e-01 8.29906698e-01 + 8.27775749e-01 8.25634309e-01 8.23482445e-01 8.21320227e-01 8.19147724e-01 + 8.16965004e-01 8.14772139e-01 8.12569199e-01 8.10356253e-01 8.08133373e-01 + 8.05900629e-01 8.03658094e-01 8.01405839e-01 7.99143936e-01 7.96872458e-01 + 7.94591477e-01 7.92301066e-01 7.90001299e-01 7.87692249e-01 7.85373990e-01 + 7.83046597e-01 7.80710143e-01 7.78364704e-01 7.76010355e-01 7.73647171e-01 + 7.71275227e-01 7.68894601e-01 7.66505367e-01 7.64107602e-01 7.61701383e-01 + 7.59286788e-01 7.56863893e-01 7.54432775e-01 7.51993514e-01 7.49546186e-01 + 7.47090871e-01 7.44627646e-01 7.42156591e-01 7.39677784e-01 7.37191306e-01 + 7.34697235e-01 7.32195652e-01 7.29686636e-01 7.27170269e-01 7.24646629e-01 + 7.22115799e-01 7.19577859e-01 7.17032890e-01 7.14480975e-01 7.11922193e-01 + 7.09356629e-01 7.06784363e-01 7.04205478e-01 7.01620056e-01 6.99028181e-01 + 6.96429935e-01 6.93825401e-01 6.91214663e-01 6.88597804e-01 6.85974909e-01 + 6.83346060e-01 6.80711343e-01 6.78070841e-01 6.75424640e-01 6.72772823e-01 + 6.70115475e-01 6.67452683e-01 6.64784530e-01 6.62111103e-01 6.59432486e-01 + 6.56748767e-01 6.54060030e-01 6.51366361e-01 6.48667847e-01 6.45964575e-01 + 6.43256630e-01 6.40544100e-01 6.37827071e-01 6.35105630e-01 6.32379864e-01 + 6.29649862e-01 6.26915709e-01 6.24177493e-01 6.21435303e-01 6.18689226e-01 + 6.15939349e-01 6.13185762e-01 6.10428551e-01 6.07667806e-01 6.04903614e-01 + 6.02136064e-01 5.99365245e-01 5.96591245e-01 5.93814154e-01 5.91034060e-01 + 5.88251051e-01 5.85465218e-01 5.82676649e-01 5.79885434e-01 5.77091661e-01 + 5.74295421e-01 5.71496803e-01 5.68695896e-01 5.65892790e-01 5.63087575e-01 + 5.60280341e-01 5.57471177e-01 5.54660174e-01 5.51847421e-01 5.49033008e-01 + 5.46217026e-01 5.43399564e-01 5.40580713e-01 5.37760563e-01 5.34939205e-01 + 5.32116728e-01 5.29293223e-01 5.26468780e-01 5.23643491e-01 5.20817444e-01 + 5.17990731e-01 5.15163442e-01 5.12335668e-01 5.09507499e-01 5.06679025e-01 + 5.03850338e-01 5.01021528e-01 4.98192685e-01 4.95363899e-01 4.92535262e-01 + 4.89706864e-01 4.86878796e-01 4.84051147e-01 4.81224009e-01 4.78397472e-01 + 4.75571627e-01 4.72746563e-01 4.69922372e-01 4.67099144e-01 4.64276968e-01 + 4.61455937e-01 4.58636139e-01 4.55817665e-01 4.53000605e-01 4.50185050e-01 + 4.47371089e-01 4.44558813e-01 4.41748311e-01 4.38939674e-01 4.36132992e-01 + 4.33328354e-01 4.30525850e-01 4.27725570e-01 4.24927603e-01 4.22132040e-01 + 4.19338968e-01 4.16548479e-01 4.13760661e-01 4.10975604e-01 4.08193396e-01 + 4.05414127e-01 4.02637885e-01 3.99864760e-01 3.97094840e-01 3.94328215e-01 + 3.91564971e-01 3.88805199e-01 3.86048986e-01 3.83296420e-01 3.80547590e-01 + 3.77802584e-01 3.75061489e-01 3.72324393e-01 3.69591384e-01 3.66862550e-01 + 3.64137977e-01 3.61417753e-01 3.58701965e-01 3.55990699e-01 3.53284044e-01 + 3.50582085e-01 3.47884908e-01 3.45192601e-01 3.42505249e-01 3.39822938e-01 + 3.37145754e-01 3.34473784e-01 3.31807111e-01 3.29145823e-01 3.26490003e-01 + 3.23839737e-01 3.21195110e-01 3.18556207e-01 3.15923112e-01 3.13295908e-01 + 3.10674681e-01 3.08059514e-01 3.05450491e-01 3.02847696e-01 3.00251211e-01 + 2.97661120e-01 2.95077506e-01 2.92500451e-01 2.89930039e-01 2.87366350e-01 + 2.84809468e-01 2.82259474e-01 2.79716449e-01 2.77180476e-01 2.74651635e-01 + 2.72130007e-01 2.69615674e-01 2.67108715e-01 2.64609210e-01 2.62117240e-01 + 2.59632885e-01 2.57156224e-01 2.54687336e-01 2.52226300e-01 2.49773196e-01 + 2.47328101e-01 2.44891094e-01 2.42462253e-01 2.40041655e-01 2.37629379e-01 + 2.35225501e-01 2.32830098e-01 2.30443248e-01 2.28065025e-01 2.25695507e-01 + 2.23334770e-01 2.20982888e-01 2.18639937e-01 2.16305993e-01 2.13981129e-01 + 2.11665421e-01 2.09358943e-01 2.07061767e-01 2.04773968e-01 2.02495620e-01 + 2.00226794e-01 1.97967564e-01 1.95718001e-01 1.93478179e-01 1.91248168e-01 + 1.89028040e-01 1.86817867e-01 1.84617718e-01 1.82427664e-01 1.80247775e-01 + 1.78078122e-01 1.75918773e-01 1.73769798e-01 1.71631265e-01 1.69503243e-01 + 1.67385801e-01 1.65279004e-01 1.63182923e-01 1.61097622e-01 1.59023170e-01 + 1.56959632e-01 1.54907074e-01 1.52865563e-01 1.50835164e-01 1.48815940e-01 + 1.46807959e-01 1.44811282e-01 1.42825975e-01 1.40852101e-01 1.38889723e-01 + 1.36938904e-01 1.34999707e-01 1.33072193e-01 1.31156424e-01 1.29252461e-01 + 1.27360366e-01 1.25480199e-01 1.23612020e-01 1.21755889e-01 1.19911865e-01 + 1.18080008e-01 1.16260376e-01 1.14453027e-01 1.12658019e-01 1.10875410e-01 + 1.09105257e-01 1.07347616e-01 1.05602543e-01 1.03870095e-01 1.02150327e-01 + 1.00443293e-01 9.87490497e-02 9.70676498e-02 9.53991475e-02 9.37435963e-02 + 9.21010491e-02 9.04715586e-02 8.88551768e-02 8.72519555e-02 8.56619461e-02 + 8.40851993e-02 8.25217658e-02 8.09716956e-02 7.94350381e-02 7.79118428e-02 + 7.64021582e-02 7.49060328e-02 7.34235143e-02 7.19546504e-02 7.04994879e-02 + 6.90580735e-02 6.76304533e-02 6.62166731e-02 6.48167779e-02 6.34308128e-02 + 6.20588220e-02 6.07008494e-02 5.93569385e-02 5.80271324e-02 5.67114736e-02 + 5.54100042e-02 5.41227659e-02 5.28497998e-02 5.15911468e-02 5.03468471e-02 + 4.91169405e-02 4.79014665e-02 4.67004638e-02 4.55139711e-02 4.43420261e-02 + 4.31846665e-02 4.20419294e-02 4.09138512e-02 3.98004680e-02 3.87018157e-02 + 3.76179292e-02 3.65488433e-02 3.54945922e-02 3.44552096e-02 3.34307289e-02 + 3.24211828e-02 3.14266036e-02 3.04470233e-02 2.94824730e-02 2.85329837e-02 + 2.75985858e-02 2.66793093e-02 2.57751834e-02 2.48862372e-02 2.40124992e-02 + 2.31539972e-02 2.23107588e-02 2.14828110e-02 2.06701802e-02 1.98728925e-02 + 1.90909735e-02 1.83244480e-02 1.75733407e-02 1.68376756e-02 1.61174762e-02 + 1.54127657e-02 1.47235665e-02 1.40499008e-02 1.33917900e-02 1.27492553e-02 + 1.21223172e-02 1.15109958e-02 1.09153106e-02 1.03352808e-02 9.77092489e-03 + 9.22226091e-03 8.68930645e-03 8.17207857e-03 7.67059382e-03 7.18486826e-03 + 6.71491743e-03 6.26075638e-03 5.82239964e-03 5.39986125e-03 4.99315473e-03 + 4.60229310e-03 4.22728887e-03 3.86815404e-03 3.52490011e-03 3.19753807e-03 + 2.88607840e-03 2.59053106e-03 2.31090551e-03 2.04721071e-03 1.79945510e-03 + 1.56764661e-03 1.35179266e-03 1.15190015e-03 9.67975486e-04 8.00024557e-04 + 6.48052736e-04 5.12064889e-04 3.92065368e-04 2.88058015e-04 2.00046158e-04 + 1.28032615e-04 7.20196905e-05 3.20091782e-05 8.00235860e-06 0.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 5.14330820e-07 5.21272731e-07 5.28308337e-07 5.35438902e-07 5.42665708e-07 + 5.49990054e-07 5.57413257e-07 5.64936650e-07 5.72561587e-07 5.80289437e-07 + 5.88121589e-07 5.96059452e-07 6.04104453e-07 6.12258036e-07 6.20521668e-07 + 6.28896834e-07 6.37385040e-07 6.45987811e-07 6.54706693e-07 6.63543253e-07 + 6.72499081e-07 6.81575785e-07 6.90774997e-07 7.00098371e-07 7.09547582e-07 + 7.19124329e-07 7.28830332e-07 7.38667338e-07 7.48637114e-07 7.58741451e-07 + 7.68982166e-07 7.79361100e-07 7.89880118e-07 8.00541111e-07 8.11345996e-07 + 8.22296713e-07 8.33395232e-07 8.44643548e-07 8.56043682e-07 8.67597683e-07 + 8.79307628e-07 8.91175622e-07 9.03203799e-07 9.15394319e-07 9.27749374e-07 + 9.40271185e-07 9.52962003e-07 9.65824108e-07 9.78859813e-07 9.92071461e-07 + 1.00546143e-06 1.01903211e-06 1.03278597e-06 1.04672545e-06 1.06085308e-06 + 1.07517139e-06 1.08968295e-06 1.10439038e-06 1.11929631e-06 1.13440343e-06 + 1.14971444e-06 1.16523211e-06 1.18095922e-06 1.19689860e-06 1.21305311e-06 + 1.22942566e-06 1.24601919e-06 1.26283668e-06 1.27988116e-06 1.29715568e-06 + 1.31466336e-06 1.33240734e-06 1.35039081e-06 1.36861700e-06 1.38708919e-06 + 1.40581070e-06 1.42478490e-06 1.44401519e-06 1.46350502e-06 1.48325792e-06 + 1.50327741e-06 1.52356711e-06 1.54413066e-06 1.56497176e-06 1.58609414e-06 + 1.60750162e-06 1.62919803e-06 1.65118728e-06 1.67347331e-06 1.69606014e-06 + 1.71895182e-06 1.74215248e-06 1.76566627e-06 1.78949742e-06 1.81365023e-06 + 1.83812902e-06 1.86293820e-06 1.88808224e-06 1.91356564e-06 1.93939299e-06 + 1.96556893e-06 1.99209816e-06 2.01898547e-06 2.04623566e-06 2.07385366e-06 + 2.10184441e-06 2.13021296e-06 2.15896439e-06 2.18810388e-06 2.21763667e-06 + 2.24756806e-06 2.27790343e-06 2.30864824e-06 2.33980801e-06 2.37138834e-06 + 2.40339491e-06 2.43583348e-06 2.46870986e-06 2.50202998e-06 2.53579982e-06 + 2.57002545e-06 2.60471302e-06 2.63986877e-06 2.67549902e-06 2.71161016e-06 + 2.74820870e-06 2.78530121e-06 2.82289435e-06 2.86099489e-06 2.89960967e-06 + 2.93874563e-06 2.97840981e-06 3.01860934e-06 3.05935144e-06 3.10064343e-06 + 3.14249274e-06 3.18490689e-06 3.22789350e-06 3.27146030e-06 3.31561513e-06 + 3.36036590e-06 3.40572068e-06 3.45168761e-06 3.49827496e-06 3.54549109e-06 + 3.59334450e-06 3.64184379e-06 3.69099766e-06 3.74081497e-06 3.79130466e-06 + 3.84247581e-06 3.89433762e-06 3.94689940e-06 4.00017061e-06 4.05416081e-06 + 4.10887972e-06 4.16433718e-06 4.22054314e-06 4.27750771e-06 4.33524113e-06 + 4.39375377e-06 4.45305616e-06 4.51315895e-06 4.57407295e-06 4.63580911e-06 + 4.69837851e-06 4.76179241e-06 4.82606221e-06 4.89119946e-06 4.95721586e-06 + 5.02412329e-06 5.09193376e-06 5.16065947e-06 5.23031277e-06 5.30090617e-06 + 5.37245238e-06 5.44496424e-06 5.51845479e-06 5.59293724e-06 5.66842498e-06 + 5.74493158e-06 5.82247079e-06 5.90105654e-06 5.98070296e-06 6.06142436e-06 + 6.14323526e-06 6.22615036e-06 6.31018456e-06 6.39535297e-06 6.48167090e-06 + 6.56915386e-06 6.65781757e-06 6.74767798e-06 6.83875123e-06 6.93105369e-06 + 7.02460195e-06 7.11941284e-06 7.21550338e-06 7.31289086e-06 7.41159278e-06 + 7.51162687e-06 7.61301112e-06 7.71576375e-06 7.81990322e-06 7.92544827e-06 + 8.03241786e-06 8.14083121e-06 8.25070782e-06 8.36206742e-06 8.47493005e-06 + 8.58931598e-06 8.70524577e-06 8.82274026e-06 8.94182058e-06 9.06250812e-06 + 9.18482457e-06 9.30879193e-06 9.43443248e-06 9.56176879e-06 9.69082375e-06 + 9.82162057e-06 9.95418275e-06 1.00885341e-05 1.02246988e-05 1.03627013e-05 + 1.05025665e-05 1.06443194e-05 1.07879855e-05 1.09335907e-05 1.10811611e-05 + 1.12307232e-05 1.13823040e-05 1.15359307e-05 1.16916309e-05 1.18494326e-05 + 1.20093641e-05 1.21714542e-05 1.23357320e-05 1.25022271e-05 1.26709694e-05 + 1.28419891e-05 1.30153172e-05 1.31909846e-05 1.33690230e-05 1.35494644e-05 + 1.37323412e-05 1.39176862e-05 1.41055329e-05 1.42959150e-05 1.44888666e-05 + 1.46844225e-05 1.48826178e-05 1.50834881e-05 1.52870696e-05 1.54933988e-05 + 1.57025128e-05 1.59144493e-05 1.61292462e-05 1.63469423e-05 1.65675766e-05 + 1.67911888e-05 1.70178190e-05 1.72475081e-05 1.74802973e-05 1.77162285e-05 + 1.79553440e-05 1.81976869e-05 1.84433006e-05 1.86922294e-05 1.89445180e-05 + 1.92002117e-05 1.94593565e-05 1.97219989e-05 1.99881863e-05 2.02579664e-05 + 2.05313877e-05 2.08084993e-05 2.10893511e-05 2.13739936e-05 2.16624779e-05 + 2.19548558e-05 2.22511800e-05 2.25515036e-05 2.28558807e-05 2.31643660e-05 + 2.34770149e-05 2.37938836e-05 2.41150291e-05 2.44405091e-05 2.47703821e-05 + 2.51047073e-05 2.54435449e-05 2.57869559e-05 2.61350018e-05 2.64877453e-05 + 2.68452498e-05 2.72075795e-05 2.75747995e-05 2.79469759e-05 2.83241756e-05 + 2.87064663e-05 2.90939168e-05 2.94865967e-05 2.98845766e-05 3.02879280e-05 + 3.06967235e-05 3.11110364e-05 3.15309413e-05 3.19565137e-05 3.23878300e-05 + 3.28249678e-05 3.32680056e-05 3.37170230e-05 3.41721009e-05 3.46333209e-05 + 3.51007660e-05 3.55745202e-05 3.60546687e-05 3.65412977e-05 3.70344947e-05 + 3.75343484e-05 3.80409486e-05 3.85543864e-05 3.90747540e-05 3.96021450e-05 + 4.01366543e-05 4.06783777e-05 4.12274128e-05 4.17838582e-05 4.23478140e-05 + 4.29193814e-05 4.34986633e-05 4.40857637e-05 4.46807882e-05 4.52838437e-05 + 4.58950387e-05 4.65144829e-05 4.71422878e-05 4.77785661e-05 4.84234323e-05 + 4.90770022e-05 4.97393933e-05 5.04107247e-05 5.10911171e-05 5.17806927e-05 + 5.24795755e-05 5.31878910e-05 5.39057667e-05 5.46333316e-05 5.53707164e-05 + 5.61180536e-05 5.68754776e-05 5.76431246e-05 5.84211325e-05 5.92096411e-05 + 6.00087922e-05 6.08187295e-05 6.16395984e-05 6.24715466e-05 6.33147236e-05 + 6.41692809e-05 6.50353721e-05 6.59131530e-05 6.68027813e-05 6.77044168e-05 + 6.86182217e-05 6.95443602e-05 7.04829988e-05 7.14343061e-05 7.23984533e-05 + 7.33756135e-05 7.43659624e-05 7.53696780e-05 7.63869407e-05 7.74179335e-05 + 7.84628415e-05 7.95218526e-05 8.05951571e-05 8.16829480e-05 8.27854208e-05 + 8.39027737e-05 8.50352074e-05 8.61829256e-05 8.73461345e-05 8.85250432e-05 + 8.97198636e-05 9.09308104e-05 9.21581014e-05 9.34019571e-05 9.46626011e-05 + 9.59402600e-05 9.72351634e-05 9.85475441e-05 9.98776379e-05 1.01225684e-04 + 1.02591925e-04 1.03976605e-04 1.05379975e-04 1.06802286e-04 1.08243794e-04 + 1.09704758e-04 1.11185441e-04 1.12686108e-04 1.14207029e-04 1.15748479e-04 + 1.17310733e-04 1.18894074e-04 1.20498784e-04 1.22125153e-04 1.23773474e-04 + 1.25444041e-04 1.27137157e-04 1.28853124e-04 1.30592251e-04 1.32354852e-04 + 1.34141242e-04 1.35951743e-04 1.37786681e-04 1.39646384e-04 1.41531188e-04 + 1.43441431e-04 1.45377457e-04 1.47339613e-04 1.49328252e-04 1.51343732e-04 + 1.53386415e-04 1.55456667e-04 1.57554862e-04 1.59681377e-04 1.61836592e-04 + 1.64020897e-04 1.66234683e-04 1.68478349e-04 1.70752297e-04 1.73056937e-04 + 1.75392682e-04 1.77759953e-04 1.80159175e-04 1.82590779e-04 1.85055202e-04 + 1.87552888e-04 1.90084285e-04 1.92649848e-04 1.95250038e-04 1.97885323e-04 + 2.00556177e-04 2.03263079e-04 2.06006515e-04 2.08786981e-04 2.11604973e-04 + 2.14461001e-04 2.17355576e-04 2.20289219e-04 2.23262457e-04 2.26275825e-04 + 2.29329865e-04 2.32425124e-04 2.35562161e-04 2.38741538e-04 2.41963826e-04 + 2.45229606e-04 2.48539465e-04 2.51893996e-04 2.55293803e-04 2.58739497e-04 + 2.62231698e-04 2.65771033e-04 2.69358138e-04 2.72993659e-04 2.76678248e-04 + 2.80412567e-04 2.84197289e-04 2.88033093e-04 2.91920669e-04 2.95860715e-04 + 2.99853940e-04 3.03901062e-04 3.08002807e-04 3.12159914e-04 3.16373129e-04 + 3.20643209e-04 3.24970923e-04 3.29357048e-04 3.33802372e-04 3.38307695e-04 + 3.42873826e-04 3.47501586e-04 3.52191806e-04 3.56945331e-04 3.61763013e-04 + 3.66645720e-04 3.71594328e-04 3.76609728e-04 3.81692821e-04 3.86844520e-04 + 3.92065751e-04 3.97357453e-04 4.02720577e-04 4.08156087e-04 4.13664960e-04 + 4.19248186e-04 4.24906769e-04 4.30641726e-04 4.36454087e-04 4.42344897e-04 + 4.48315216e-04 4.54366115e-04 4.60498684e-04 4.66714024e-04 4.73013252e-04 + 4.79397500e-04 4.85867917e-04 4.92425665e-04 4.99071922e-04 5.05807884e-04 + 5.12634761e-04 5.19553780e-04 5.26566185e-04 5.33673236e-04 5.40876211e-04 + 5.48176405e-04 5.55575129e-04 5.63073713e-04 5.70673505e-04 5.78375872e-04 + 5.86182197e-04 5.94093885e-04 6.02112356e-04 6.10239052e-04 6.18475434e-04 + 6.26822982e-04 6.35283197e-04 6.43857599e-04 6.52547729e-04 6.61355151e-04 + 6.70281445e-04 6.79328218e-04 6.88497095e-04 6.97789724e-04 7.07207775e-04 + 7.16752941e-04 7.26426939e-04 7.36231506e-04 7.46168405e-04 7.56239422e-04 + 7.66446368e-04 7.76791076e-04 7.87275407e-04 7.97901244e-04 8.08670498e-04 + 8.19585105e-04 8.30647025e-04 8.41858248e-04 8.53220789e-04 8.64736690e-04 + 8.76408020e-04 8.88236878e-04 9.00225390e-04 9.12375711e-04 9.24690024e-04 + 9.37170543e-04 9.49819512e-04 9.62639203e-04 9.75631922e-04 9.88800002e-04 + 1.00214581e-03 1.01567175e-03 1.02938025e-03 1.04327377e-03 1.05735481e-03 + 1.07162590e-03 1.08608961e-03 1.10074854e-03 1.11560531e-03 1.13066261e-03 + 1.14592314e-03 1.16138964e-03 1.17706488e-03 1.19295170e-03 1.20905294e-03 + 1.22537150e-03 1.24191031e-03 1.25867234e-03 1.27566061e-03 1.29287818e-03 + 1.31032812e-03 1.32801359e-03 1.34593776e-03 1.36410385e-03 1.38251512e-03 + 1.40117490e-03 1.42008652e-03 1.43925340e-03 1.45867896e-03 1.47836672e-03 + 1.49832020e-03 1.51854299e-03 1.53903873e-03 1.55981110e-03 1.58086383e-03 + 1.60220071e-03 1.62382558e-03 1.64574231e-03 1.66795486e-03 1.69046721e-03 + 1.71328340e-03 1.73640755e-03 1.75984380e-03 1.78359637e-03 1.80766953e-03 + 1.83206760e-03 1.85679497e-03 1.88185609e-03 1.90725546e-03 1.93299764e-03 + 1.95908726e-03 1.98552901e-03 2.01232765e-03 2.03948799e-03 2.06701491e-03 + 2.09491336e-03 2.12318836e-03 2.15184498e-03 2.18088838e-03 2.21032378e-03 + 2.24015647e-03 2.27039180e-03 2.30103523e-03 2.33209225e-03 2.36356844e-03 + 2.39546947e-03 2.42780106e-03 2.46056903e-03 2.49377928e-03 2.52743776e-03 + 2.56155052e-03 2.59612371e-03 2.63116353e-03 2.66667628e-03 2.70266835e-03 + 2.73914620e-03 2.77611639e-03 2.81358556e-03 2.85156046e-03 2.89004791e-03 + 2.92905481e-03 2.96858820e-03 3.00865516e-03 3.04926291e-03 3.09041874e-03 + 3.13213004e-03 3.17440433e-03 3.21724919e-03 3.26067232e-03 3.30468154e-03 + 3.34928475e-03 3.39448996e-03 3.44030531e-03 3.48673903e-03 3.53379947e-03 + 3.58149507e-03 3.62983443e-03 3.67882622e-03 3.72847925e-03 3.77880244e-03 + 3.82980485e-03 3.88149563e-03 3.93388409e-03 3.98697963e-03 4.04079180e-03 + 4.09533027e-03 4.15060484e-03 4.20662546e-03 4.26340218e-03 4.32094522e-03 + 4.37926491e-03 4.43837175e-03 4.49827634e-03 4.55898947e-03 4.62052205e-03 + 4.68288512e-03 4.74608991e-03 4.81014777e-03 4.87507022e-03 4.94086893e-03 + 5.00755572e-03 5.07514258e-03 5.14364166e-03 5.21306527e-03 5.28342588e-03 + 5.35473616e-03 5.42700890e-03 5.50025711e-03 5.57449395e-03 5.64973276e-03 + 5.72598707e-03 5.80327058e-03 5.88159719e-03 5.96098097e-03 6.04143618e-03 + 6.12297730e-03 6.20561898e-03 6.28937607e-03 6.37426363e-03 6.46029692e-03 + 6.54749139e-03 6.63586273e-03 6.72542681e-03 6.81619973e-03 6.90819782e-03 + 7.00143760e-03 7.09593584e-03 7.19170951e-03 7.28877585e-03 7.38715228e-03 + 7.48685650e-03 7.58790642e-03 7.69032021e-03 7.79411628e-03 7.89931328e-03 + 8.00593013e-03 8.11398598e-03 8.22350025e-03 8.33449264e-03 8.44698309e-03 + 8.56099182e-03 8.67653932e-03 8.79364636e-03 8.91233400e-03 9.03262356e-03 + 9.15453666e-03 9.27809523e-03 9.40332146e-03 9.53023786e-03 9.65886725e-03 + 9.78923276e-03 9.92135780e-03 1.00552661e-02 1.01909818e-02 1.03285293e-02 + 1.04679332e-02 1.06092186e-02 1.07524110e-02 1.08975360e-02 1.10446198e-02 + 1.11936888e-02 1.13447697e-02 1.14978898e-02 1.16530766e-02 1.18103578e-02 + 1.19697620e-02 1.21313176e-02 1.22950537e-02 1.24609997e-02 1.26291855e-02 + 1.27996413e-02 1.29723978e-02 1.31474859e-02 1.33249372e-02 1.35047836e-02 + 1.36870573e-02 1.38717912e-02 1.40590185e-02 1.42487727e-02 1.44410881e-02 + 1.46359991e-02 1.48335408e-02 1.50337487e-02 1.52366589e-02 1.54423077e-02 + 1.56507322e-02 1.58619697e-02 1.60760584e-02 1.62930365e-02 1.65129433e-02 + 1.67358181e-02 1.69617010e-02 1.71906327e-02 1.74226542e-02 1.76578074e-02 + 1.78961344e-02 1.81376781e-02 1.83824819e-02 1.86305898e-02 1.88820465e-02 + 1.91368970e-02 1.93951872e-02 1.96569636e-02 1.99222732e-02 2.01911636e-02 + 2.04636833e-02 2.07398811e-02 2.10198068e-02 2.13035106e-02 2.15910436e-02 + 2.18824574e-02 2.21778044e-02 2.24771377e-02 2.27805111e-02 2.30879791e-02 + 2.33995970e-02 2.37154208e-02 2.40355073e-02 2.43599140e-02 2.46886991e-02 + 2.50219219e-02 2.53596422e-02 2.57019207e-02 2.60488189e-02 2.64003992e-02 + 2.67567248e-02 2.71178596e-02 2.74838687e-02 2.78548179e-02 2.82307737e-02 + 2.86118038e-02 2.89979766e-02 2.93893616e-02 2.97860291e-02 3.01880504e-02 + 3.05954978e-02 3.10084445e-02 3.14269648e-02 3.18511338e-02 3.22810278e-02 + 3.27167240e-02 3.31583009e-02 3.36058377e-02 3.40594148e-02 3.45191140e-02 + 3.49850176e-02 3.54572096e-02 3.59357747e-02 3.64207990e-02 3.69123696e-02 + 3.74105750e-02 3.79155046e-02 3.84272493e-02 3.89459010e-02 3.94715529e-02 + 4.00042995e-02 4.05442365e-02 4.10914611e-02 4.16460716e-02 4.22081677e-02 + 4.27778503e-02 4.33552219e-02 4.39403863e-02 4.45334487e-02 4.51345155e-02 + 4.57436950e-02 4.63610966e-02 4.69868312e-02 4.76210113e-02 4.82637510e-02 + 4.89151657e-02 4.95753725e-02 5.02444901e-02 5.09226388e-02 5.16099405e-02 + 5.23065186e-02 5.30124984e-02 5.37280069e-02 5.44531725e-02 5.51881257e-02 + 5.59329985e-02 5.66879248e-02 5.74530404e-02 5.82284827e-02 5.90143912e-02 + 5.98109070e-02 6.06181734e-02 6.14363354e-02 6.22655402e-02 6.31059367e-02 + 6.39576760e-02 6.48209113e-02 6.56957975e-02 6.65824922e-02 6.74811545e-02 + 6.83919460e-02 6.93150305e-02 7.02505738e-02 7.11987441e-02 7.21597119e-02 + 7.31336498e-02 7.41207329e-02 7.51211387e-02 7.61350469e-02 7.71626398e-02 + 7.82041021e-02 7.92596210e-02 8.03293862e-02 8.14135900e-02 8.25124273e-02 + 8.36260956e-02 8.47547950e-02 8.58987284e-02 8.70581015e-02 8.82331227e-02 + 8.94240030e-02 9.06309567e-02 9.18542005e-02 9.30939545e-02 9.43504414e-02 + 9.56238870e-02 9.69145203e-02 9.82225733e-02 9.95482810e-02 1.00891882e-01 + 1.02253617e-01 1.03633732e-01 1.05032474e-01 1.06450095e-01 1.07886849e-01 + 1.09342995e-01 1.10818795e-01 1.12314514e-01 1.13830420e-01 1.15366786e-01 + 1.16923889e-01 1.18502008e-01 1.20101427e-01 1.21722433e-01 1.23365318e-01 + 1.25030377e-01 1.26717909e-01 1.28428217e-01 1.30161610e-01 1.31918398e-01 + 1.33698897e-01 1.35503428e-01 1.37332315e-01 1.39185886e-01 1.41064474e-01 + 1.42968418e-01 1.44898059e-01 1.46853745e-01 1.48835827e-01 1.50844660e-01 + 1.52880607e-01 1.54944033e-01 1.57035309e-01 1.59154811e-01 1.61302919e-01 + 1.63480021e-01 1.65686507e-01 1.67922774e-01 1.70189223e-01 1.72486263e-01 + 1.74814306e-01 1.77173771e-01 1.79565081e-01 1.81988667e-01 1.84444963e-01 + 1.86934413e-01 1.89457462e-01 1.92014565e-01 1.94606181e-01 1.97232776e-01 + 1.99894822e-01 2.02592797e-01 2.05327188e-01 2.08098484e-01 2.10907184e-01 + 2.13753793e-01 2.16638823e-01 2.19562792e-01 2.22526226e-01 2.25529657e-01 + 2.28573626e-01 2.31658678e-01 2.34785370e-01 2.37954263e-01 2.41165926e-01 + 2.44420936e-01 2.47719880e-01 2.51063349e-01 2.54451945e-01 2.57886277e-01 + 2.61366962e-01 2.64894626e-01 2.68469902e-01 2.72093434e-01 2.75765873e-01 + 2.79487878e-01 2.83260119e-01 2.87083274e-01 2.90958030e-01 2.94885084e-01 + 2.98865141e-01 3.02898917e-01 3.06987136e-01 3.11130534e-01 3.15329856e-01 + 3.19585855e-01 3.23899298e-01 3.28270959e-01 3.32701624e-01 3.37192090e-01 + 3.41743164e-01 3.46355663e-01 3.51030417e-01 3.55768266e-01 3.60570062e-01 + 3.65436668e-01 3.70368958e-01 3.75367819e-01 3.80434149e-01 3.85568860e-01 + 3.90772873e-01 3.96047126e-01 4.01392564e-01 4.06810150e-01 4.12300857e-01 + 4.17865672e-01 4.23505595e-01 4.29221640e-01 4.35014834e-01 4.40886219e-01 + 4.46836850e-01 4.52867796e-01 4.58980142e-01 4.65174986e-01 4.71453442e-01 + 4.77816637e-01 4.84265717e-01 4.90801840e-01 4.97426181e-01 5.04139930e-01 + 5.10944295e-01 5.17840498e-01 5.24829779e-01 5.31913394e-01 5.39092616e-01 + 5.46368736e-01 5.53743062e-01 5.61216919e-01 5.68791650e-01 5.76468618e-01 + 5.84249201e-01 5.92134798e-01 6.00126828e-01 6.08226725e-01 6.16435947e-01 + 6.24755968e-01 6.33188284e-01 6.41734412e-01 6.50395886e-01 6.59174263e-01 + 6.68071123e-01 6.77088063e-01 6.86226704e-01 6.95488690e-01 7.04875684e-01 + 7.14389374e-01 7.24031471e-01 7.33803706e-01 7.43707837e-01 7.53745644e-01 + 7.63918931e-01 7.74229527e-01 7.84679284e-01 7.95270082e-01 8.06003823e-01 + 8.16882438e-01 8.27907880e-01 8.39082133e-01 8.50407205e-01 8.61885131e-01 + 8.73517974e-01 8.85307825e-01 8.97256804e-01 9.09367057e-01 9.21640763e-01 + 9.34080126e-01 9.46687383e-01 9.59464800e-01 9.72414674e-01 9.85539332e-01 + 9.98841133e-01 1.01232247e+00 1.02598576e+00 1.03983347e+00 1.05386807e+00 + 1.06809210e+00 1.08250812e+00 1.09711870e+00 1.11192649e+00 1.12693414e+00 + 1.14214434e+00 1.15755983e+00 1.17318339e+00 1.18901782e+00 1.20506596e+00 + 1.22133071e+00 1.23781498e+00 1.25452174e+00 1.27145399e+00 1.28861478e+00 + 1.30600718e+00 1.32363433e+00 1.34149939e+00 1.35960557e+00 1.37795614e+00 + 1.39655438e+00 1.41540364e+00 1.43450731e+00 1.45386882e+00 1.47349165e+00 + 1.49337933e+00 1.51353544e+00 1.53396359e+00 1.55466746e+00 1.57565077e+00 + 1.59691729e+00 1.61847085e+00 1.64031531e+00 1.66245461e+00 1.68489272e+00 + 1.70763367e+00 1.73068156e+00 1.75404053e+00 1.77771477e+00 1.80170855e+00 + 1.82602617e+00 1.85067200e+00 1.87565047e+00 1.90096608e+00 1.92662338e+00 + 1.95262697e+00 1.97898153e+00 2.00569179e+00 2.03276257e+00 2.06019871e+00 + 2.08800517e+00 2.11618692e+00 2.14474905e+00 2.17369667e+00 2.20303501e+00 + 2.23276932e+00 2.26290495e+00 2.29344733e+00 2.32440193e+00 2.35577433e+00 + 2.38757016e+00 2.41979514e+00 2.45245505e+00 2.48555578e+00 2.51910327e+00 + 2.55310354e+00 2.58756272e+00 2.62248699e+00 2.65788264e+00 2.69375602e+00 + 2.73011358e+00 2.76696186e+00 2.80430747e+00 2.84215715e+00 2.88051767e+00 + 2.91939595e+00 2.95879897e+00 2.99873381e+00 3.03920765e+00 3.08022776e+00 + 3.12180152e+00 3.16393640e+00 3.20663997e+00 3.24991992e+00 3.29378401e+00 + 3.33824013e+00 3.38329628e+00 3.42896055e+00 3.47524115e+00 3.52214640e+00 + 3.56968472e+00 3.61786467e+00 3.66669491e+00 3.71618420e+00 3.76634145e+00 + 3.81717567e+00 3.86869600e+00 3.92091170e+00 3.97383215e+00 4.02746687e+00 + 4.08182549e+00 4.13691779e+00 4.19275367e+00 4.24934317e+00 4.30669645e+00 + 4.36482383e+00 4.42373576e+00 4.48344281e+00 4.54395573e+00 4.60528539e+00 + 4.66744282e+00 4.73043919e+00 4.79428581e+00 4.85899417e+00 4.92457590e+00 + 4.99104278e+00 5.05840677e+00 5.12667997e+00 5.19587464e+00 5.26600324e+00 + 5.33707836e+00 5.40911278e+00 5.48211944e+00 5.55611148e+00 5.63110218e+00 + 5.70710504e+00 5.78413370e+00 5.86220201e+00 5.94132401e+00 6.02151392e+00 + 6.10278615e+00 6.18515531e+00 6.26863620e+00 6.35324384e+00 6.43899342e+00 + 6.52590036e+00 6.61398028e+00 6.70324902e+00 6.79372261e+00 6.88541732e+00 + 6.97834963e+00 7.07253625e+00 7.16799410e+00 7.26474035e+00 7.36279238e+00 + 7.46216781e+00 7.56288451e+00 7.66496058e+00 7.76841437e+00 7.87326448e+00 + 7.97952974e+00 8.08722926e+00 8.19638240e+00 8.30700878e+00 8.41912828e+00 + 8.53276106e+00 8.64792753e+00 8.76464840e+00 8.88294465e+00 9.00283754e+00 + 9.12434863e+00 9.24749974e+00 9.37231303e+00 9.49881091e+00 9.62701614e+00 + 9.75695174e+00 9.88864109e+00 1.00221078e+01 1.01573760e+01 1.02944699e+01 + 1.04334141e+01 1.05742336e+01 1.07169538e+01 1.08616003e+01 1.10081990e+01 + 1.11567764e+01 1.13073592e+01 1.14599743e+01 1.16146493e+01 1.17714120e+01 + 1.19302904e+01 1.20913133e+01 1.22545094e+01 1.24199083e+01 1.25875395e+01 + 1.27574332e+01 1.29296200e+01 1.31041307e+01 1.32809969e+01 1.34602502e+01 + 1.36419229e+01 1.38260476e+01 1.40126574e+01 1.42017859e+01 1.43934671e+01 + 1.45877353e+01 1.47846257e+01 1.49841734e+01 1.51864144e+01 1.53913851e+01 + 1.55991223e+01 1.58096632e+01 1.60230459e+01 1.62393086e+01 1.64584901e+01 + 1.66806300e+01 1.69057680e+01 1.71339448e+01 1.73652012e+01 1.75995789e+01 + 1.78371200e+01 1.80778672e+01 1.83218638e+01 1.85691535e+01 1.88197809e+01 + 1.90737911e+01 1.93312296e+01 1.95921427e+01 1.98565774e+01 2.01245812e+01 + 2.03962022e+01 2.06714892e+01 2.09504918e+01 2.12332601e+01 2.15198449e+01 + 2.18102977e+01 2.21046708e+01 2.24030170e+01 2.27053900e+01 2.30118441e+01 + 2.33224344e+01 2.36372168e+01 2.39562477e+01 2.42795846e+01 2.46072856e+01 + 2.49394095e+01 2.52760162e+01 2.56171659e+01 2.59629202e+01 2.63133411e+01 + 2.66684917e+01 2.70284357e+01 2.73932378e+01 2.77629637e+01 2.81376798e+01 + 2.85174534e+01 2.89023527e+01 2.92924471e+01 2.96878066e+01 3.00885022e+01 + 3.04946060e+01 3.09061910e+01 3.13233311e+01 3.17461013e+01 3.21745777e+01 + 3.26088372e+01 3.30489579e+01 3.34950189e+01 3.39471004e+01 3.44052836e+01 + 3.48696509e+01 3.53402857e+01 3.58172727e+01 3.63006976e+01 3.67906473e+01 + 3.72872097e+01 3.77904743e+01 3.83005315e+01 3.88174728e+01 3.93413913e+01 + 3.98723811e+01 4.04105377e+01 4.09559578e+01 4.15087394e+01 4.20689818e+01 + 4.26367859e+01 4.32122536e+01 4.37954883e+01 4.43865950e+01 4.49856798e+01 + 4.55928504e+01 4.62082161e+01 4.68318873e+01 4.74639761e+01 4.81045963e+01 + 4.87538629e+01 4.94118926e+01 5.00788037e+01 5.07547161e+01 5.14397513e+01 + 5.21340324e+01 5.28376842e+01 5.35508332e+01 5.42736075e+01 5.50061371e+01 + 5.57485536e+01 5.65009905e+01 5.72635830e+01 5.80364683e+01 5.88197851e+01 + 5.96136743e+01 6.04182787e+01 6.12337427e+01 6.20602131e+01 6.28978383e+01 + 6.37467689e+01 6.46071576e+01 6.54791588e+01 6.63629295e+01 6.72586284e+01 + 6.81664165e+01 6.90864570e+01 7.00189152e+01 7.09639589e+01 7.19217577e+01 + 7.28924840e+01 7.38763121e+01 7.48734189e+01 7.58839837e+01 7.69081880e+01 + 7.79462160e+01 7.89982542e+01 8.00644917e+01 8.11451203e+01 8.22403340e+01 + 8.33503299e+01 8.44753073e+01 8.56154685e+01 8.67710184e+01 8.79421648e+01 + 8.91291181e+01 9.03320917e+01 9.15513018e+01 9.27869675e+01 9.40393110e+01 + 9.53085573e+01 9.65949346e+01 9.78986742e+01 9.92200103e+01 1.00559180e+02 + 1.01916425e+02 1.03291989e+02 1.04686118e+02 1.06099064e+02 1.07531081e+02 + 1.08982425e+02 1.10453359e+02 1.11944145e+02 1.13455052e+02 1.14986352e+02 + 1.16538321e+02 1.18111235e+02 1.19705380e+02 1.21321041e+02 1.22958508e+02 + 1.24618076e+02 1.26300043e+02 1.28004712e+02 1.29732388e+02 1.31483383e+02 + 1.33258011e+02 1.35056592e+02 1.36879447e+02 1.38726906e+02 1.40599300e+02 + 1.42496965e+02 1.44420243e+02 1.46369480e+02 1.48345025e+02 1.50347234e+02 + 1.52376467e+02 1.54433089e+02 1.56517469e+02 1.58629981e+02 1.60771006e+02 + 1.62940929e+02 1.65140138e+02 1.67369031e+02 1.69628007e+02 1.71917472e+02 + 1.74237838e+02 1.76589522e+02 1.78972947e+02 1.81388540e+02 1.83836737e+02 + 1.86317977e+02 1.88832706e+02 1.91381377e+02 1.93964447e+02 1.96582380e+02 + 1.99235648e+02 2.01924727e+02 2.04650100e+02 2.07412257e+02 2.10211696e+02 + 2.13048918e+02 2.15924434e+02 2.18838761e+02 2.21792423e+02 2.24785950e+02 + 2.27819880e+02 2.30894760e+02 2.34011141e+02 2.37169584e+02 2.40370656e+02 + 2.43614933e+02 2.46902998e+02 2.50235442e+02 2.53612863e+02 2.57035870e+02 + 2.60505077e+02 2.64021108e+02 2.67584595e+02 2.71196178e+02 2.74856506e+02 + 2.78566238e+02 2.82326040e+02 2.86136587e+02 2.89998566e+02 2.93912670e+02 + 2.97879602e+02 3.01900076e+02 3.05974814e+02 3.10104549e+02 3.14290023e+02 + 3.18531988e+02 3.22831206e+02 3.27188451e+02 3.31604506e+02 3.36080164e+02 + 3.40616230e+02 3.45213519e+02 3.49872858e+02 3.54595083e+02 3.59381045e+02 + 3.64231602e+02 3.69147628e+02 3.74130004e+02 3.79179628e+02 3.84297406e+02 + 3.89484259e+02 3.94741119e+02 4.00068931e+02 4.05468651e+02 4.10941252e+02 + 4.16487716e+02 4.22109041e+02 4.27806237e+02 4.33580327e+02 4.39432351e+02 + 4.45363359e+02 4.51374417e+02 4.57466607e+02 4.63641023e+02 4.69898775e+02 + 4.76240987e+02 4.82668801e+02 4.89183370e+02 4.95785866e+02 5.02477476e+02 + 5.09259403e+02 5.16132865e+02 5.23099098e+02 5.30159354e+02 5.37314902e+02 + 5.44567029e+02 5.51917037e+02 5.59366248e+02 5.66916001e+02 5.74567652e+02 + 5.82322578e+02 5.90182172e+02 5.98147847e+02 6.06221034e+02 6.14403185e+02 + 6.22695770e+02 6.31100280e+02 6.39618226e+02 6.48251138e+02 6.57000568e+02 + 6.65868089e+02 6.74855295e+02 6.83963800e+02 6.93195244e+02 7.02551283e+02 + 7.12033601e+02 7.21643902e+02 7.31383912e+02 7.41255383e+02 7.51260090e+02 + 7.61399829e+02 7.71676425e+02 7.82091723e+02 7.92647596e+02 8.03345942e+02 + 8.14188683e+02 8.25177768e+02 8.36315173e+02 8.47602899e+02 8.59042975e+02 + 8.70637458e+02 8.82388431e+02 8.94298006e+02 9.06368325e+02 9.18601557e+02 + 9.30999900e+02 9.43565584e+02 9.56300866e+02 9.69208036e+02 9.82289413e+02 + 9.95547350e+02 1.00898423e+03 1.02260247e+03 1.03640451e+03 1.05039283e+03 + 1.06456996e+03 1.07893844e+03 1.09350084e+03 1.10825980e+03 1.12321795e+03 + 1.13837800e+03 1.15374266e+03 1.16931470e+03 1.18509691e+03 1.20109213e+03 + 1.21730325e+03 1.23373316e+03 1.25038483e+03 1.26726124e+03 1.28436543e+03 + 1.30170048e+03 1.31926950e+03 1.33707565e+03 1.35512213e+03 1.37341218e+03 + 1.39194909e+03 1.41073620e+03 1.42977687e+03 1.44907454e+03 1.46863266e+03 + 1.48845476e+03 1.50854440e+03 1.52890519e+03 1.54954078e+03 1.57045490e+03 + 1.59165129e+03 1.61313377e+03 1.63490620e+03 1.65697249e+03 1.67933661e+03 + 1.70200257e+03 1.72497446e+03 1.74825640e+03 1.77185258e+03 1.79576723e+03 + 1.82000465e+03 1.84456921e+03 1.86946532e+03 1.89469745e+03 1.92027014e+03 + 1.94618798e+03 1.97245563e+03 1.99907782e+03 2.02605932e+03 2.05340500e+03 + 2.08111975e+03 2.10920858e+03 2.13767652e+03 2.16652868e+03 2.19577027e+03 + 2.22540653e+03 2.25544279e+03 2.28588445e+03 2.31673697e+03 2.34800592e+03 + 2.37969690e+03 2.41181561e+03 2.44436783e+03 2.47735940e+03 2.51079626e+03 + 2.54468442e+03 2.57902996e+03 2.61383907e+03 2.64911799e+03 2.68487308e+03 + 2.72111074e+03 2.75783751e+03 2.79505998e+03 2.83278484e+03 2.87101887e+03 + 2.90976894e+03 2.94904202e+03 2.98884517e+03 3.02918554e+03 3.07007039e+03 + 3.11150706e+03 3.15350299e+03 3.19606575e+03 3.23920297e+03 3.28292242e+03 + 3.32723194e+03 3.37213951e+03 3.41765320e+03 3.46378118e+03 3.51053175e+03 + 3.55791332e+03 3.60593439e+03 3.65460360e+03 3.70392970e+03 3.75392155e+03 + 3.80458814e+03 3.85593857e+03 3.90798208e+03 3.96072802e+03 4.01418588e+03 + 4.06836525e+03 4.12327588e+03 4.17892763e+03 4.23533052e+03 4.29249467e+03 + 4.35043037e+03 4.40914803e+03 4.46865819e+03 4.52897157e+03 4.59009899e+03 + 4.65205144e+03 4.71484007e+03 4.77847616e+03 4.84297113e+03 4.90833660e+03 + 4.97458430e+03 5.04172615e+03 5.10977421e+03 5.17874071e+03 5.24863805e+03 + 5.31947879e+03 5.39127567e+03 5.46404159e+03 5.53778963e+03 5.61253304e+03 + 5.68828527e+03 5.76505992e+03 5.84287079e+03 5.92173188e+03 6.00165735e+03 + 6.08266158e+03 6.16475912e+03 6.24796473e+03 6.33229336e+03 6.41776017e+03 + 6.50438053e+03 6.59216999e+03 6.68114436e+03 6.77131960e+03 6.86271194e+03 + 6.95533780e+03 7.04921383e+03 7.14435690e+03 7.24078412e+03 7.33851281e+03 + 7.43756054e+03 7.53794512e+03 7.63968458e+03 7.74279722e+03 7.84730157e+03 + 7.95321641e+03 8.06056079e+03 8.16935398e+03 8.27961556e+03 8.39136533e+03 + 8.50462339e+03 8.61941009e+03 8.73574606e+03 8.85365222e+03 8.97314975e+03 + 9.09426014e+03 9.21700515e+03 9.34140685e+03 9.46748760e+03 9.59527005e+03 + 9.72477718e+03 9.85603227e+03 9.98905890e+03 1.01238810e+04 1.02605228e+04 + 1.03990088e+04 1.05393640e+04 1.06816135e+04 1.08257830e+04 1.09718983e+04 + 1.11199858e+04 1.12700720e+04 1.14221839e+04 1.15763488e+04 1.17325945e+04 + 1.18909491e+04 1.20514409e+04 1.22140989e+04 1.23789523e+04 1.25460308e+04 + 1.27153642e+04 1.28869832e+04 1.30609185e+04 1.32372014e+04 1.34158636e+04 + 1.35969372e+04 1.37804547e+04 1.39664492e+04 1.41549540e+04 1.43460031e+04 + 1.45396308e+04 1.47358718e+04 1.49347615e+04 1.51363357e+04 1.53406304e+04 + 1.55476825e+04 1.57575292e+04 1.59702082e+04 1.61857578e+04 1.64042165e+04 + 1.66256239e+04 1.68500195e+04 1.70774438e+04 1.73079377e+04 1.75415425e+04 + 1.77783003e+04 1.80182536e+04 1.82614455e+04 1.85079198e+04 1.87577208e+04 + 1.90108933e+04 1.92674828e+04 1.95275356e+04 1.97910983e+04 2.00582183e+04 + 2.03289436e+04 2.06033228e+04 2.08814054e+04 2.11632412e+04 2.14488810e+04 + 2.17383760e+04 2.20317784e+04 2.23291407e+04 2.26305166e+04 2.29359602e+04 + 2.32455263e+04 2.35592706e+04 2.38772495e+04 2.41995202e+04 2.45261405e+04 + 2.48571693e+04 2.51926659e+04 2.55326907e+04 2.58773048e+04 2.62265702e+04 + 2.65805496e+04 2.69393066e+04 2.73029058e+04 2.76714125e+04 2.80448928e+04 + 2.84234141e+04 2.88070442e+04 2.91958522e+04 2.95899080e+04 2.99892822e+04 + 3.03940469e+04 3.08042746e+04 3.12200391e+04 3.16414153e+04 3.20684787e+04 + 3.25013062e+04 3.29399755e+04 3.33845656e+04 3.38351563e+04 3.42918286e+04 + 3.47546646e+04 3.52237475e+04 3.56991616e+04 3.61809923e+04 3.66693263e+04 + 3.71642513e+04 3.76658563e+04 3.81742315e+04 3.86894682e+04 3.92116590e+04 + 3.97408978e+04 4.02772798e+04 4.08209013e+04 4.13718600e+04 4.19302550e+04 + 4.24961867e+04 4.30697567e+04 4.36510682e+04 4.42402256e+04 4.48373349e+04 + 4.54425033e+04 4.60558397e+04 4.66774542e+04 4.73074587e+04 4.79459664e+04 + 4.85930919e+04 4.92489517e+04 4.99136637e+04 5.05873472e+04 5.12701234e+04 + 5.19621151e+04 5.26634465e+04 5.33742438e+04 5.40946347e+04 5.48247487e+04 + 5.55647170e+04 5.63146726e+04 5.70747504e+04 5.78450870e+04 5.86258207e+04 + 5.94170921e+04 6.02190431e+04 6.10318181e+04 6.18555631e+04 6.26904262e+04 + 6.35365574e+04 6.43941088e+04 6.52632345e+04 6.61440908e+04 6.70368361e+04 + 6.79416306e+04 6.88586372e+04 6.97880206e+04 7.07299478e+04 7.16845883e+04 + 7.26521134e+04 7.36326973e+04 7.46265160e+04 7.56337483e+04 7.66545752e+04 + 7.76891802e+04 7.87377492e+04 7.98004708e+04 8.08775358e+04 8.19691380e+04 + 8.30754735e+04 8.41967412e+04 8.53331426e+04 8.64848820e+04 8.76521664e+04 + 8.88352056e+04 9.00342122e+04 9.12494018e+04 9.24809928e+04 9.37292066e+04 + 9.49942675e+04 9.62764028e+04 9.75758431e+04 9.88928220e+04 1.00227576e+05 + 1.01580345e+05 1.02951373e+05 1.04340905e+05 1.05749192e+05 1.07176486e+05 + 1.08623044e+05 1.10089127e+05 1.11574997e+05 1.13080923e+05 1.14607173e+05 + 1.16154023e+05 1.17721751e+05 1.19310639e+05 1.20920972e+05 1.22553039e+05 + 1.24207135e+05 1.25883556e+05 1.27582603e+05 1.29304582e+05 1.31049803e+05 + 1.32818579e+05 1.34611228e+05 1.36428073e+05 1.38269439e+05 1.40135659e+05 + 1.42027066e+05 1.43944002e+05 1.45886811e+05 1.47855842e+05 1.49851449e+05 + 1.51873990e+05 1.53923830e+05 1.56001336e+05 1.58106882e+05 1.60240847e+05 + 1.62403614e+05 1.64595572e+05 1.66817114e+05 1.69068641e+05 1.71350556e+05 + 1.73663271e+05 1.76007200e+05 1.78382765e+05 1.80790393e+05 1.83230516e+05 + 1.85703574e+05 1.88210011e+05 1.90750277e+05 1.93324829e+05 1.95934129e+05 + 1.98578648e+05 2.01258859e+05 2.03975245e+05 2.06728294e+05 2.09518501e+05 + 2.12346367e+05 2.15212401e+05 2.18117118e+05 2.21061039e+05 2.24044695e+05 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.51514411e-06 1.53559398e-06 1.55631985e-06 1.57732546e-06 1.59861459e-06 + 1.62019105e-06 1.64205873e-06 1.66422156e-06 1.68668352e-06 1.70944864e-06 + 1.73252103e-06 1.75590483e-06 1.77960423e-06 1.80362351e-06 1.82796697e-06 + 1.85263900e-06 1.87764402e-06 1.90298654e-06 1.92867110e-06 1.95470233e-06 + 1.98108490e-06 2.00782356e-06 2.03492310e-06 2.06238841e-06 2.09022442e-06 + 2.11843613e-06 2.14702861e-06 2.17600701e-06 2.20537652e-06 2.23514243e-06 + 2.26531010e-06 2.29588494e-06 2.32687244e-06 2.35827818e-06 2.39010781e-06 + 2.42236703e-06 2.45506166e-06 2.48819757e-06 2.52178072e-06 2.55581713e-06 + 2.59031293e-06 2.62527433e-06 2.66070759e-06 2.69661910e-06 2.73301530e-06 + 2.76990274e-06 2.80728805e-06 2.84517795e-06 2.88357925e-06 2.92249885e-06 + 2.96194375e-06 3.00192104e-06 3.04243789e-06 3.08350160e-06 3.12511955e-06 + 3.16729922e-06 3.21004818e-06 3.25337412e-06 3.29728483e-06 3.34178821e-06 + 3.38689225e-06 3.43260505e-06 3.47893484e-06 3.52588994e-06 3.57347879e-06 + 3.62170995e-06 3.67059208e-06 3.72013398e-06 3.77034453e-06 3.82123279e-06 + 3.87280787e-06 3.92507907e-06 3.97805577e-06 4.03174749e-06 4.08616389e-06 + 4.14131475e-06 4.19720997e-06 4.25385962e-06 4.31127386e-06 4.36946302e-06 + 4.42843756e-06 4.48820807e-06 4.54878531e-06 4.61018016e-06 4.67240365e-06 + 4.73546697e-06 4.79938146e-06 4.86415859e-06 4.92981003e-06 4.99634755e-06 + 5.06378314e-06 5.13212890e-06 5.20139712e-06 5.27160025e-06 5.34275092e-06 + 5.41486190e-06 5.48794616e-06 5.56201684e-06 5.63708725e-06 5.71317088e-06 + 5.79028141e-06 5.86843270e-06 5.94763880e-06 6.02791394e-06 6.10927255e-06 + 6.19172925e-06 6.27529887e-06 6.35999643e-06 6.44583715e-06 6.53283646e-06 + 6.62101000e-06 6.71037362e-06 6.80094337e-06 6.89273554e-06 6.98576663e-06 + 7.08005335e-06 7.17561266e-06 7.27246174e-06 7.37061798e-06 7.47009904e-06 + 7.57092278e-06 7.67310735e-06 7.77667110e-06 7.88163264e-06 7.98801085e-06 + 8.09582484e-06 8.20509399e-06 8.31583795e-06 8.42807662e-06 8.54183017e-06 + 8.65711905e-06 8.77396398e-06 8.89238596e-06 9.01240628e-06 9.13404651e-06 + 9.25732852e-06 9.38227446e-06 9.50890680e-06 9.63724829e-06 9.76732200e-06 + 9.89915131e-06 1.00327599e-05 1.01681718e-05 1.03054114e-05 1.04445033e-05 + 1.05854725e-05 1.07283444e-05 1.08731446e-05 1.10198992e-05 1.11686345e-05 + 1.13193773e-05 1.14721546e-05 1.16269940e-05 1.17839233e-05 1.19429706e-05 + 1.21041646e-05 1.22675342e-05 1.24331089e-05 1.26009182e-05 1.27709925e-05 + 1.29433623e-05 1.31180586e-05 1.32951127e-05 1.34745565e-05 1.36564223e-05 + 1.38407427e-05 1.40275509e-05 1.42168804e-05 1.44087653e-05 1.46032400e-05 + 1.48003396e-05 1.50000995e-05 1.52025554e-05 1.54077440e-05 1.56157019e-05 + 1.58264667e-05 1.60400761e-05 1.62565686e-05 1.64759832e-05 1.66983591e-05 + 1.69237365e-05 1.71521557e-05 1.73836580e-05 1.76182848e-05 1.78560784e-05 + 1.80970814e-05 1.83413373e-05 1.85888899e-05 1.88397837e-05 1.90940638e-05 + 1.93517759e-05 1.96129664e-05 1.98776821e-05 2.01459707e-05 2.04178804e-05 + 2.06934601e-05 2.09727592e-05 2.12558280e-05 2.15427174e-05 2.18334790e-05 + 2.21281649e-05 2.24268282e-05 2.27295226e-05 2.30363024e-05 2.33472229e-05 + 2.36623398e-05 2.39817098e-05 2.43053904e-05 2.46334396e-05 2.49659166e-05 + 2.53028810e-05 2.56443934e-05 2.59905151e-05 2.63413085e-05 2.66968365e-05 + 2.70571631e-05 2.74223530e-05 2.77924718e-05 2.81675861e-05 2.85477634e-05 + 2.89330718e-05 2.93235808e-05 2.97193605e-05 3.01204820e-05 3.05270174e-05 + 3.09390399e-05 3.13566233e-05 3.17798429e-05 3.22087747e-05 3.26434958e-05 + 3.30840843e-05 3.35306194e-05 3.39831813e-05 3.44418515e-05 3.49067124e-05 + 3.53778474e-05 3.58553414e-05 3.63392801e-05 3.68297505e-05 3.73268407e-05 + 3.78306402e-05 3.83412395e-05 3.88587303e-05 3.93832056e-05 3.99147598e-05 + 4.04534884e-05 4.09994881e-05 4.15528573e-05 4.21136952e-05 4.26821027e-05 + 4.32581821e-05 4.38420367e-05 4.44337716e-05 4.50334932e-05 4.56413092e-05 + 4.62573288e-05 4.68816629e-05 4.75144236e-05 4.81557246e-05 4.88056813e-05 + 4.94644104e-05 5.01320304e-05 5.08086612e-05 5.14944245e-05 5.21894435e-05 + 5.28938432e-05 5.36077501e-05 5.43312927e-05 5.50646008e-05 5.58078064e-05 + 5.65610431e-05 5.73244461e-05 5.80981528e-05 5.88823022e-05 5.96770352e-05 + 6.04824947e-05 6.12988255e-05 6.21261743e-05 6.29646898e-05 6.38145227e-05 + 6.46758258e-05 6.55487539e-05 6.64334638e-05 6.73301147e-05 6.82388677e-05 + 6.91598861e-05 7.00933354e-05 7.10393835e-05 7.19982003e-05 7.29699583e-05 + 7.39548321e-05 7.49529987e-05 7.59646376e-05 7.69899305e-05 7.80290617e-05 + 7.90822181e-05 8.01495889e-05 8.12313660e-05 8.23277438e-05 8.34389194e-05 + 8.45650925e-05 8.57064656e-05 8.68632437e-05 8.80356348e-05 8.92238497e-05 + 9.04281018e-05 9.16486078e-05 9.28855869e-05 9.41392614e-05 9.54098568e-05 + 9.66976013e-05 9.80027266e-05 9.93254670e-05 1.00666060e-04 1.02024748e-04 + 1.03401773e-04 1.04797385e-04 1.06211833e-04 1.07645371e-04 1.09098258e-04 + 1.10570755e-04 1.12063126e-04 1.13575639e-04 1.15108567e-04 1.16662184e-04 + 1.18236771e-04 1.19832610e-04 1.21449988e-04 1.23089195e-04 1.24750527e-04 + 1.26434282e-04 1.28140763e-04 1.29870275e-04 1.31623131e-04 1.33399646e-04 + 1.35200138e-04 1.37024931e-04 1.38874353e-04 1.40748737e-04 1.42648419e-04 + 1.44573741e-04 1.46525050e-04 1.48502695e-04 1.50507032e-04 1.52538422e-04 + 1.54597229e-04 1.56683824e-04 1.58798582e-04 1.60941883e-04 1.63114112e-04 + 1.65315659e-04 1.67546920e-04 1.69808297e-04 1.72100196e-04 1.74423028e-04 + 1.76777212e-04 1.79163169e-04 1.81581330e-04 1.84032129e-04 1.86516007e-04 + 1.89033409e-04 1.91584788e-04 1.94170603e-04 1.96791319e-04 1.99447407e-04 + 2.02139344e-04 2.04867614e-04 2.07632707e-04 2.10435121e-04 2.13275359e-04 + 2.16153931e-04 2.19071356e-04 2.22028156e-04 2.25024865e-04 2.28062020e-04 + 2.31140168e-04 2.34259861e-04 2.37421661e-04 2.40626136e-04 2.43873861e-04 + 2.47165421e-04 2.50501406e-04 2.53882418e-04 2.57309063e-04 2.60781957e-04 + 2.64301725e-04 2.67868999e-04 2.71484421e-04 2.75148639e-04 2.78862314e-04 + 2.82626112e-04 2.86440710e-04 2.90306793e-04 2.94225057e-04 2.98196206e-04 + 3.02220953e-04 3.06300022e-04 3.10434146e-04 3.14624068e-04 3.18870542e-04 + 3.23174330e-04 3.27536206e-04 3.31956954e-04 3.36437370e-04 3.40978257e-04 + 3.45580432e-04 3.50244723e-04 3.54971968e-04 3.59763016e-04 3.64618729e-04 + 3.69539979e-04 3.74527651e-04 3.79582642e-04 3.84705860e-04 3.89898226e-04 + 3.95160673e-04 4.00494147e-04 4.05899607e-04 4.11378024e-04 4.16930384e-04 + 4.22557683e-04 4.28260934e-04 4.34041162e-04 4.39899405e-04 4.45836717e-04 + 4.51854164e-04 4.57952829e-04 4.64133808e-04 4.70398211e-04 4.76747164e-04 + 4.83181809e-04 4.89703302e-04 4.96312816e-04 5.03011539e-04 5.09800673e-04 + 5.16681441e-04 5.23655078e-04 5.30722838e-04 5.37885992e-04 5.45145826e-04 + 5.52503646e-04 5.59960775e-04 5.67518552e-04 5.75178336e-04 5.82941505e-04 + 5.90809452e-04 5.98783593e-04 6.06865361e-04 6.15056208e-04 6.23357607e-04 + 6.31771050e-04 6.40298049e-04 6.48940137e-04 6.57698866e-04 6.66575812e-04 + 6.75572570e-04 6.84690757e-04 6.93932012e-04 7.03297995e-04 7.12790392e-04 + 7.22410907e-04 7.32161269e-04 7.42043233e-04 7.52058572e-04 7.62209089e-04 + 7.72496607e-04 7.82922975e-04 7.93490068e-04 8.04199785e-04 8.15054050e-04 + 8.26054815e-04 8.37204057e-04 8.48503780e-04 8.59956016e-04 8.71562821e-04 + 8.83326284e-04 8.95248518e-04 9.07331666e-04 9.19577900e-04 9.31989421e-04 + 9.44568460e-04 9.57317278e-04 9.70238166e-04 9.83333448e-04 9.96605476e-04 + 1.01005664e-03 1.02368935e-03 1.03750606e-03 1.05150925e-03 1.06570145e-03 + 1.08008519e-03 1.09466308e-03 1.10943772e-03 1.12441177e-03 1.13958793e-03 + 1.15496892e-03 1.17055751e-03 1.18635650e-03 1.20236872e-03 1.21859707e-03 + 1.23504444e-03 1.25171381e-03 1.26860816e-03 1.28573053e-03 1.30308401e-03 + 1.32067170e-03 1.33849678e-03 1.35656243e-03 1.37487193e-03 1.39342854e-03 + 1.41223561e-03 1.43129652e-03 1.45061470e-03 1.47019361e-03 1.49003678e-03 + 1.51014777e-03 1.53053020e-03 1.55118773e-03 1.57212407e-03 1.59334299e-03 + 1.61484830e-03 1.63664387e-03 1.65873361e-03 1.68112150e-03 1.70381156e-03 + 1.72680786e-03 1.75011455e-03 1.77373580e-03 1.79767587e-03 1.82193906e-03 + 1.84652973e-03 1.87145230e-03 1.89671124e-03 1.92231111e-03 1.94825650e-03 + 1.97455207e-03 2.00120255e-03 2.02821273e-03 2.05558747e-03 2.08333169e-03 + 2.11145037e-03 2.13994856e-03 2.16883140e-03 2.19810406e-03 2.22777182e-03 + 2.25784000e-03 2.28831402e-03 2.31919934e-03 2.35050151e-03 2.38222618e-03 + 2.41437903e-03 2.44696584e-03 2.47999248e-03 2.51346488e-03 2.54738906e-03 + 2.58177111e-03 2.61661721e-03 2.65193363e-03 2.68772672e-03 2.72400290e-03 + 2.76076870e-03 2.79803073e-03 2.83579568e-03 2.87407035e-03 2.91286161e-03 + 2.95217643e-03 2.99202189e-03 3.03240514e-03 3.07333344e-03 3.11481415e-03 + 3.15685472e-03 3.19946271e-03 3.24264578e-03 3.28641170e-03 3.33076832e-03 + 3.37572362e-03 3.42128568e-03 3.46746269e-03 3.51426295e-03 3.56169487e-03 + 3.60976698e-03 3.65848792e-03 3.70786645e-03 3.75791143e-03 3.80863187e-03 + 3.86003689e-03 3.91213571e-03 3.96493772e-03 4.01845239e-03 4.07268934e-03 + 4.12765833e-03 4.18336924e-03 4.23983207e-03 4.29705699e-03 4.35505426e-03 + 4.41383433e-03 4.47340774e-03 4.53378522e-03 4.59497761e-03 4.65699591e-03 + 4.71985128e-03 4.78355500e-03 4.84811852e-03 4.91355347e-03 4.97987158e-03 + 5.04708479e-03 5.11520517e-03 5.18424497e-03 5.25421660e-03 5.32513264e-03 + 5.39700583e-03 5.46984909e-03 5.54367551e-03 5.61849837e-03 5.69433110e-03 + 5.77118736e-03 5.84908093e-03 5.92802584e-03 6.00803626e-03 6.08912659e-03 + 6.17131138e-03 6.25460542e-03 6.33902369e-03 6.42458134e-03 6.51129376e-03 + 6.59917653e-03 6.68824546e-03 6.77851655e-03 6.87000603e-03 6.96273034e-03 + 7.05670614e-03 7.15195034e-03 7.24848004e-03 7.34631260e-03 7.44546561e-03 + 7.54595688e-03 7.64780448e-03 7.75102672e-03 7.85564214e-03 7.96166955e-03 + 8.06912802e-03 8.17803685e-03 8.28841561e-03 8.40028416e-03 8.51366260e-03 + 8.62857130e-03 8.74503092e-03 8.86306239e-03 8.98268694e-03 9.10392605e-03 + 9.22680152e-03 9.35133544e-03 9.47755019e-03 9.60546846e-03 9.73511324e-03 + 9.86650783e-03 9.99967585e-03 1.01346412e-02 1.02714283e-02 1.04100615e-02 + 1.05505658e-02 1.06929666e-02 1.08372893e-02 1.09835599e-02 1.11318048e-02 + 1.12820505e-02 1.14343240e-02 1.15886528e-02 1.17450646e-02 1.19035875e-02 + 1.20642499e-02 1.22270808e-02 1.23921094e-02 1.25593654e-02 1.27288789e-02 + 1.29006802e-02 1.30748004e-02 1.32512707e-02 1.34301228e-02 1.36113888e-02 + 1.37951014e-02 1.39812936e-02 1.41699987e-02 1.43612509e-02 1.45550843e-02 + 1.47515340e-02 1.49506351e-02 1.51524234e-02 1.53569353e-02 1.55642075e-02 + 1.57742773e-02 1.59871823e-02 1.62029609e-02 1.64216519e-02 1.66432945e-02 + 1.68679287e-02 1.70955947e-02 1.73263336e-02 1.75601867e-02 1.77971961e-02 + 1.80374044e-02 1.82808548e-02 1.85275911e-02 1.87776576e-02 1.90310992e-02 + 1.92879614e-02 1.95482906e-02 1.98121334e-02 2.00795373e-02 2.03505503e-02 + 2.06252212e-02 2.09035994e-02 2.11857347e-02 2.14716781e-02 2.17614808e-02 + 2.20551950e-02 2.23528734e-02 2.26545697e-02 2.29603378e-02 2.32702330e-02 + 2.35843107e-02 2.39026276e-02 2.42252408e-02 2.45522083e-02 2.48835889e-02 + 2.52194421e-02 2.55598283e-02 2.59048087e-02 2.62544453e-02 2.66088009e-02 + 2.69679393e-02 2.73319249e-02 2.77008232e-02 2.80747006e-02 2.84536242e-02 + 2.88376620e-02 2.92268833e-02 2.96213578e-02 3.00211566e-02 3.04263514e-02 + 3.08370152e-02 3.12532216e-02 3.16750456e-02 3.21025629e-02 3.25358505e-02 + 3.29749861e-02 3.34200487e-02 3.38711183e-02 3.43282759e-02 3.47916039e-02 + 3.52611853e-02 3.57371047e-02 3.62194475e-02 3.67083006e-02 3.72037516e-02 + 3.77058898e-02 3.82148053e-02 3.87305896e-02 3.92533354e-02 3.97831368e-02 + 4.03200888e-02 4.08642881e-02 4.14158324e-02 4.19748209e-02 4.25413541e-02 + 4.31155337e-02 4.36974630e-02 4.42872467e-02 4.48849906e-02 4.54908022e-02 + 4.61047905e-02 4.67270657e-02 4.73577398e-02 4.79969261e-02 4.86447395e-02 + 4.93012964e-02 4.99667148e-02 5.06411144e-02 5.13246163e-02 5.20173434e-02 + 5.27194202e-02 5.34309730e-02 5.41521296e-02 5.48830196e-02 5.56237744e-02 + 5.63745271e-02 5.71354128e-02 5.79065681e-02 5.86881317e-02 5.94802440e-02 + 6.02830474e-02 6.10966863e-02 6.19213068e-02 6.27570572e-02 6.36040877e-02 + 6.44625506e-02 6.53326001e-02 6.62143926e-02 6.71080867e-02 6.80138429e-02 + 6.89318241e-02 6.98621953e-02 7.08051237e-02 7.17607788e-02 7.27293323e-02 + 7.37109584e-02 7.47058334e-02 7.57141363e-02 7.67360482e-02 7.77717528e-02 + 7.88214363e-02 7.98852873e-02 8.09634971e-02 8.20562595e-02 8.31637709e-02 + 8.42862303e-02 8.54238396e-02 8.65768031e-02 8.77453282e-02 8.89296248e-02 + 9.01299058e-02 9.13463870e-02 9.25792870e-02 9.38288274e-02 9.50952329e-02 + 9.63787310e-02 9.76795524e-02 9.89979310e-02 1.00334104e-01 1.01688311e-01 + 1.03060795e-01 1.04451805e-01 1.05861588e-01 1.07290399e-01 1.08738495e-01 + 1.10206136e-01 1.11693586e-01 1.13201111e-01 1.14728984e-01 1.16277479e-01 + 1.17846873e-01 1.19437449e-01 1.21049494e-01 1.22683296e-01 1.24339149e-01 + 1.26017352e-01 1.27718205e-01 1.29442015e-01 1.31189090e-01 1.32959747e-01 + 1.34754301e-01 1.36573077e-01 1.38416400e-01 1.40284603e-01 1.42178021e-01 + 1.44096994e-01 1.46041868e-01 1.48012992e-01 1.50010719e-01 1.52035411e-01 + 1.54087429e-01 1.56167143e-01 1.58274927e-01 1.60411160e-01 1.62576226e-01 + 1.64770513e-01 1.66994417e-01 1.69248337e-01 1.71532678e-01 1.73847850e-01 + 1.76194270e-01 1.78572360e-01 1.80982547e-01 1.83425264e-01 1.85900951e-01 + 1.88410051e-01 1.90953017e-01 1.93530306e-01 1.96142380e-01 1.98789709e-01 + 2.01472769e-01 2.04192042e-01 2.06948017e-01 2.09741189e-01 2.12572061e-01 + 2.15441141e-01 2.18348945e-01 2.21295996e-01 2.24282822e-01 2.27309962e-01 + 2.30377959e-01 2.33487365e-01 2.36638739e-01 2.39832646e-01 2.43069662e-01 + 2.46350367e-01 2.49675352e-01 2.53045214e-01 2.56460560e-01 2.59922002e-01 + 2.63430163e-01 2.66985673e-01 2.70589173e-01 2.74241308e-01 2.77942737e-01 + 2.81694123e-01 2.85496142e-01 2.89349477e-01 2.93254820e-01 2.97212873e-01 + 3.01224348e-01 3.05289966e-01 3.09410457e-01 3.13586563e-01 3.17819033e-01 + 3.22108629e-01 3.26456121e-01 3.30862292e-01 3.35327932e-01 3.39853846e-01 + 3.44440845e-01 3.49089755e-01 3.53801411e-01 3.58576660e-01 3.63416361e-01 + 3.68321383e-01 3.73292608e-01 3.78330929e-01 3.83437252e-01 3.88612496e-01 + 3.93857590e-01 3.99173476e-01 4.04561111e-01 4.10021463e-01 4.15555512e-01 + 4.21164255e-01 4.26848699e-01 4.32609866e-01 4.38448791e-01 4.44366524e-01 + 4.50364128e-01 4.56442682e-01 4.62603278e-01 4.68847024e-01 4.75175041e-01 + 4.81588467e-01 4.88088455e-01 4.94676173e-01 5.01352806e-01 5.08119553e-01 + 5.14977630e-01 5.21928271e-01 5.28972724e-01 5.36112257e-01 5.43348151e-01 + 5.50681708e-01 5.58114246e-01 5.65647101e-01 5.73281626e-01 5.81019194e-01 + 5.88861197e-01 5.96809042e-01 6.04864160e-01 6.13027997e-01 6.21302021e-01 + 6.29687720e-01 6.38186600e-01 6.46800189e-01 6.55530036e-01 6.64377709e-01 + 6.73344799e-01 6.82432918e-01 6.91643699e-01 7.00978797e-01 7.10439891e-01 + 7.20028682e-01 7.29746892e-01 7.39596268e-01 7.49578581e-01 7.59695625e-01 + 7.69949219e-01 7.80341205e-01 7.90873452e-01 8.01547852e-01 8.12366325e-01 + 8.23330813e-01 8.34443290e-01 8.45705751e-01 8.57120221e-01 8.68688753e-01 + 8.80413424e-01 8.92296343e-01 9.04339645e-01 9.16545496e-01 9.28916089e-01 + 9.41453647e-01 9.54160425e-01 9.67038705e-01 9.80090803e-01 9.93319066e-01 + 1.00672587e+00 1.02031362e+00 1.03408477e+00 1.04804179e+00 1.06218719e+00 + 1.07652350e+00 1.09105331e+00 1.10577923e+00 1.12070391e+00 1.13583002e+00 + 1.15116029e+00 1.16669748e+00 1.18244437e+00 1.19840379e+00 1.21457862e+00 + 1.23097175e+00 1.24758615e+00 1.26442479e+00 1.28149070e+00 1.29878695e+00 + 1.31631665e+00 1.33408294e+00 1.35208903e+00 1.37033814e+00 1.38883356e+00 + 1.40757862e+00 1.42657667e+00 1.44583114e+00 1.46534549e+00 1.48512323e+00 + 1.50516790e+00 1.52548311e+00 1.54607252e+00 1.56693983e+00 1.58808878e+00 + 1.60952317e+00 1.63124687e+00 1.65326377e+00 1.67557783e+00 1.69819306e+00 + 1.72111354e+00 1.74434336e+00 1.76788672e+00 1.79174785e+00 1.81593103e+00 + 1.84044061e+00 1.86528099e+00 1.89045664e+00 1.91597209e+00 1.94183192e+00 + 1.96804078e+00 1.99460338e+00 2.02152449e+00 2.04880896e+00 2.07646169e+00 + 2.10448764e+00 2.13289186e+00 2.16167945e+00 2.19085559e+00 2.22042551e+00 + 2.25039454e+00 2.28076806e+00 2.31155154e+00 2.34275049e+00 2.37437054e+00 + 2.40641736e+00 2.43889672e+00 2.47181445e+00 2.50517647e+00 2.53898878e+00 + 2.57325745e+00 2.60798864e+00 2.64318860e+00 2.67886366e+00 2.71502022e+00 + 2.75166478e+00 2.78880393e+00 2.82644435e+00 2.86459281e+00 2.90325615e+00 + 2.94244133e+00 2.98215539e+00 3.02240547e+00 3.06319880e+00 3.10454272e+00 + 3.14644466e+00 3.18891215e+00 3.23195282e+00 3.27557441e+00 3.31978476e+00 + 3.36459182e+00 3.41000363e+00 3.45602837e+00 3.50267430e+00 3.54994981e+00 + 3.59786340e+00 3.64642368e+00 3.69563937e+00 3.74551933e+00 3.79607251e+00 + 3.84730801e+00 3.89923504e+00 3.95186292e+00 4.00520112e+00 4.05925923e+00 + 4.11404695e+00 4.16957414e+00 4.22585079e+00 4.28288699e+00 4.34069302e+00 + 4.39927925e+00 4.45865622e+00 4.51883459e+00 4.57982520e+00 4.64163899e+00 + 4.70428708e+00 4.76778073e+00 4.83213135e+00 4.89735051e+00 4.96344994e+00 + 5.03044150e+00 5.09833725e+00 5.16714939e+00 5.23689028e+00 5.30757246e+00 + 5.37920864e+00 5.45181169e+00 5.52539466e+00 5.59997078e+00 5.67555346e+00 + 5.75215627e+00 5.82979298e+00 5.90847756e+00 5.98822414e+00 6.06904706e+00 + 6.15096084e+00 6.23398021e+00 6.31812010e+00 6.40339561e+00 6.48982209e+00 + 6.57741507e+00 6.66619028e+00 6.75616369e+00 6.84735147e+00 6.93977001e+00 + 7.03343592e+00 7.12836604e+00 7.22457742e+00 7.32208737e+00 7.42091341e+00 + 7.52107330e+00 7.62258505e+00 7.72546690e+00 7.82973734e+00 7.93541512e+00 + 8.04251923e+00 8.15106892e+00 8.26108370e+00 8.37258335e+00 8.48558791e+00 + 8.60011769e+00 8.71619327e+00 8.83383553e+00 8.95306559e+00 9.07390491e+00 + 9.19637518e+00 9.32049844e+00 9.44629699e+00 9.57379343e+00 9.70301069e+00 + 9.83397200e+00 9.96670088e+00 1.01012212e+01 1.02375571e+01 1.03757332e+01 + 1.05157742e+01 1.06577054e+01 1.08015522e+01 1.09473405e+01 1.10950965e+01 + 1.12448467e+01 1.13966182e+01 1.15504380e+01 1.17063340e+01 1.18643341e+01 + 1.20244668e+01 1.21867607e+01 1.23512451e+01 1.25179496e+01 1.26869041e+01 + 1.28581389e+01 1.30316849e+01 1.32075732e+01 1.33858355e+01 1.35665038e+01 + 1.37496106e+01 1.39351888e+01 1.41232717e+01 1.43138932e+01 1.45070874e+01 + 1.47028892e+01 1.49013338e+01 1.51024567e+01 1.53062942e+01 1.55128829e+01 + 1.57222599e+01 1.59344629e+01 1.61495300e+01 1.63674998e+01 1.65884115e+01 + 1.68123049e+01 1.70392202e+01 1.72691982e+01 1.75022801e+01 1.77385080e+01 + 1.79779242e+01 1.82205718e+01 1.84664944e+01 1.87157363e+01 1.89683421e+01 + 1.92243574e+01 1.94838281e+01 1.97468008e+01 2.00133229e+01 2.02834423e+01 + 2.05572074e+01 2.08346676e+01 2.11158726e+01 2.14008730e+01 2.16897201e+01 + 2.19824657e+01 2.22791625e+01 2.25798639e+01 2.28846237e+01 2.31934970e+01 + 2.35065390e+01 2.38238062e+01 2.41453556e+01 2.44712449e+01 2.48015327e+01 + 2.51362784e+01 2.54755421e+01 2.58193849e+01 2.61678685e+01 2.65210556e+01 + 2.68790097e+01 2.72417950e+01 2.76094769e+01 2.79821213e+01 2.83597954e+01 + 2.87425669e+01 2.91305046e+01 2.95236783e+01 2.99221587e+01 3.03260174e+01 + 3.07353269e+01 3.11501609e+01 3.15705939e+01 3.19967014e+01 3.24285601e+01 + 3.28662476e+01 3.33098426e+01 3.37594247e+01 3.42150749e+01 3.46768749e+01 + 3.51449079e+01 3.56192579e+01 3.61000102e+01 3.65872511e+01 3.70810684e+01 + 3.75815507e+01 3.80887880e+01 3.86028714e+01 3.91238935e+01 3.96519477e+01 + 4.01871291e+01 4.07295339e+01 4.12792594e+01 4.18364046e+01 4.24010695e+01 + 4.29733558e+01 4.35533661e+01 4.41412049e+01 4.47369777e+01 4.53407916e+01 + 4.59527552e+01 4.65729784e+01 4.72015728e+01 4.78386513e+01 4.84843284e+01 + 4.91387202e+01 4.98019444e+01 5.04741200e+01 5.11553680e+01 5.18458108e+01 + 5.25455725e+01 5.32547788e+01 5.39735573e+01 5.47020371e+01 5.54403492e+01 + 5.61886263e+01 5.69470028e+01 5.77156152e+01 5.84946015e+01 5.92841017e+01 + 6.00842578e+01 6.08952136e+01 6.17171149e+01 6.25501093e+01 6.33943466e+01 + 6.42499786e+01 6.51171590e+01 6.59960438e+01 6.68867908e+01 6.77895602e+01 + 6.87045143e+01 6.96318175e+01 7.05716365e+01 7.15241402e+01 7.24894998e+01 + 7.34678888e+01 7.44594832e+01 7.54644611e+01 7.64830031e+01 7.75152924e+01 + 7.85615144e+01 7.96218573e+01 8.06965116e+01 8.17856705e+01 8.28895297e+01 + 8.40082878e+01 8.51421456e+01 8.62913071e+01 8.74559788e+01 8.86363701e+01 + 8.98326931e+01 9.10451628e+01 9.22739972e+01 9.35194171e+01 9.47816465e+01 + 9.60609121e+01 9.73574439e+01 9.86714750e+01 1.00003242e+02 1.01352983e+02 + 1.02720942e+02 1.04107364e+02 1.05512498e+02 1.06936598e+02 1.08379919e+02 + 1.09842720e+02 1.11325265e+02 1.12827819e+02 1.14350653e+02 1.15894041e+02 + 1.17458261e+02 1.19043592e+02 1.20650320e+02 1.22278735e+02 1.23929128e+02 + 1.25601797e+02 1.27297041e+02 1.29015166e+02 1.30756481e+02 1.32521298e+02 + 1.34309935e+02 1.36122713e+02 1.37959958e+02 1.39822000e+02 1.41709174e+02 + 1.43621820e+02 1.45560280e+02 1.47524903e+02 1.49516044e+02 1.51534058e+02 + 1.53579310e+02 1.55652166e+02 1.57752999e+02 1.59882188e+02 1.62040114e+02 + 1.64227166e+02 1.66443736e+02 1.68690223e+02 1.70967031e+02 1.73274569e+02 + 1.75613251e+02 1.77983499e+02 1.80385738e+02 1.82820400e+02 1.85287923e+02 + 1.87788750e+02 1.90323330e+02 1.92892119e+02 1.95495580e+02 1.98134179e+02 + 2.00808391e+02 2.03518697e+02 2.06265584e+02 2.09049546e+02 2.11871083e+02 + 2.14730702e+02 2.17628917e+02 2.20566249e+02 2.23543226e+02 2.26560384e+02 + 2.29618264e+02 2.32717416e+02 2.35858398e+02 2.39041773e+02 2.42268114e+02 + 2.45538001e+02 2.48852022e+02 2.52210771e+02 2.55614854e+02 2.59064882e+02 + 2.62561474e+02 2.66105260e+02 2.69696877e+02 2.73336969e+02 2.77026192e+02 + 2.80765207e+02 2.84554689e+02 2.88395317e+02 2.92287781e+02 2.96232783e+02 + 3.00231029e+02 3.04283240e+02 3.08390144e+02 3.12552478e+02 3.16770992e+02 + 3.21046442e+02 3.25379599e+02 3.29771239e+02 3.34222154e+02 3.38733142e+02 + 3.43305015e+02 3.47938595e+02 3.52634714e+02 3.57394216e+02 3.62217957e+02 + 3.67106805e+02 3.72061636e+02 3.77083343e+02 3.82172828e+02 3.87331006e+02 + 3.92558803e+02 3.97857160e+02 4.03227029e+02 4.08669374e+02 4.14185175e+02 + 4.19775422e+02 4.25441121e+02 4.31183290e+02 4.37002961e+02 4.42901179e+02 + 4.48879006e+02 4.54937515e+02 4.61077796e+02 4.67300952e+02 4.73608102e+02 + 4.80000379e+02 4.86478933e+02 4.93044927e+02 4.99699543e+02 5.06443976e+02 + 5.13279438e+02 5.20207158e+02 5.27228382e+02 5.34344371e+02 5.41556404e+02 + 5.48865778e+02 5.56273806e+02 5.63781821e+02 5.71391170e+02 5.79103223e+02 + 5.86919366e+02 5.94841002e+02 6.02869557e+02 6.11006473e+02 6.19253213e+02 + 6.27611259e+02 6.36082113e+02 6.44667298e+02 6.53368357e+02 6.62186855e+02 + 6.71124375e+02 6.80182525e+02 6.89362932e+02 6.98667247e+02 7.08097142e+02 + 7.17654312e+02 7.27340476e+02 7.37157373e+02 7.47106768e+02 7.57190450e+02 + 7.67410232e+02 7.77767949e+02 7.88265465e+02 7.98904665e+02 8.09687462e+02 + 8.20615795e+02 8.31691626e+02 8.42916949e+02 8.54293779e+02 8.65824161e+02 + 8.77510169e+02 8.89353903e+02 9.01357492e+02 9.13523092e+02 9.25852892e+02 + 9.38349106e+02 9.51013982e+02 9.63849795e+02 9.76858852e+02 9.90043493e+02 + 1.00340609e+03 1.01694903e+03 1.03067477e+03 1.04458576e+03 1.05868451e+03 + 1.07297355e+03 1.08745545e+03 1.10213281e+03 1.11700827e+03 1.13208451e+03 + 1.14736422e+03 1.16285017e+03 1.17854513e+03 1.19445193e+03 1.21057342e+03 + 1.22691250e+03 1.24347211e+03 1.26025522e+03 1.27726485e+03 1.29450407e+03 + 1.31197596e+03 1.32968367e+03 1.34763038e+03 1.36581931e+03 1.38425374e+03 + 1.40293698e+03 1.42187239e+03 1.44106337e+03 1.46051336e+03 1.48022588e+03 + 1.50020445e+03 1.52045267e+03 1.54097419e+03 1.56177268e+03 1.58285189e+03 + 1.60421560e+03 1.62586766e+03 1.64781196e+03 1.67005244e+03 1.69259310e+03 + 1.71543799e+03 1.73859121e+03 1.76205693e+03 1.78583938e+03 1.80994281e+03 + 1.83437156e+03 1.85913003e+03 1.88422266e+03 1.90965397e+03 1.93542853e+03 + 1.96155096e+03 1.98802597e+03 2.01485831e+03 2.04205280e+03 2.06961434e+03 + 2.09754787e+03 2.12585843e+03 2.15455109e+03 2.18363101e+03 2.21310343e+03 + 2.24297363e+03 2.27324699e+03 2.30392895e+03 2.33502503e+03 2.36654081e+03 + 2.39848195e+03 2.43085420e+03 2.46366339e+03 2.49691539e+03 2.53061620e+03 + 2.56477187e+03 2.59938853e+03 2.63447242e+03 2.67002983e+03 2.70606716e+03 + 2.74259088e+03 2.77960756e+03 2.81712386e+03 2.85514651e+03 2.89368236e+03 + 2.93273832e+03 2.97232142e+03 3.01243877e+03 3.05309759e+03 3.09430517e+03 + 3.13606893e+03 3.17839638e+03 3.22129512e+03 3.26477287e+03 3.30883743e+03 + 3.35349673e+03 3.39875879e+03 3.44463176e+03 3.49112387e+03 3.53824349e+03 + 3.58599907e+03 3.63439922e+03 3.68345262e+03 3.73316809e+03 3.78355457e+03 + 3.83462112e+03 3.88637691e+03 3.93883124e+03 3.99199356e+03 4.04587340e+03 + 4.10048045e+03 4.15582454e+03 4.21191561e+03 4.26876373e+03 4.32637913e+03 + 4.38477217e+03 4.44395333e+03 4.50393327e+03 4.56472275e+03 4.62633270e+03 + 4.68877420e+03 4.75205848e+03 4.81619690e+03 4.88120099e+03 4.94708244e+03 + 5.01385310e+03 5.08152495e+03 5.15011018e+03 5.21962109e+03 5.29007019e+03 + 5.36147014e+03 5.43383378e+03 5.50717410e+03 5.58150430e+03 5.65683773e+03 + 5.73318793e+03 5.81056864e+03 5.88899374e+03 5.96847735e+03 6.04903375e+03 + 6.13067741e+03 6.21342302e+03 6.29728544e+03 6.38227975e+03 6.46842123e+03 + 6.55572536e+03 6.64420783e+03 6.73388454e+03 6.82477162e+03 6.91688540e+03 + 7.01024244e+03 7.10485951e+03 7.20075363e+03 7.29794203e+03 7.39644218e+03 + 7.49627178e+03 7.59744879e+03 7.69999137e+03 7.80391797e+03 7.90924727e+03 + 8.01599819e+03 8.12418992e+03 8.23384192e+03 8.34497389e+03 8.45760580e+03 + 8.57175791e+03 8.68745072e+03 8.80470504e+03 8.92354193e+03 9.04398276e+03 + 9.16604918e+03 9.28976313e+03 9.41514684e+03 9.54222285e+03 9.67101401e+03 + 9.80154345e+03 9.93383465e+03 1.00679114e+04 1.02037977e+04 1.03415182e+04 + 1.04810974e+04 1.06225605e+04 1.07659329e+04 1.09112405e+04 1.10585092e+04 + 1.12077657e+04 1.13590366e+04 1.15123493e+04 1.16677312e+04 1.18252103e+04 + 1.19848148e+04 1.21465736e+04 1.23105156e+04 1.24766704e+04 1.26450677e+04 + 1.28157379e+04 1.29887116e+04 1.31640199e+04 1.33416944e+04 1.35217669e+04 + 1.37042699e+04 1.38892361e+04 1.40766987e+04 1.42666916e+04 1.44592488e+04 + 1.46544049e+04 1.48521951e+04 1.50526548e+04 1.52558201e+04 1.54617276e+04 + 1.56704142e+04 1.58819174e+04 1.60962752e+04 1.63135263e+04 1.65337095e+04 + 1.67568646e+04 1.69830316e+04 1.72122512e+04 1.74445645e+04 1.76800134e+04 + 1.79186401e+04 1.81604876e+04 1.84055993e+04 1.86540192e+04 1.89057921e+04 + 1.91609631e+04 1.94195781e+04 1.96816837e+04 1.99473269e+04 2.02165555e+04 + 2.04894179e+04 2.07659631e+04 2.10462408e+04 2.13303014e+04 2.16181960e+04 + 2.19099763e+04 2.22056947e+04 2.25054044e+04 2.28091593e+04 2.31170140e+04 + 2.34290238e+04 2.37452448e+04 2.40657338e+04 2.43905484e+04 2.47197470e+04 + 2.50533889e+04 2.53915339e+04 2.57342428e+04 2.60815773e+04 2.64335997e+04 + 2.67903734e+04 2.71519624e+04 2.75184318e+04 2.78898474e+04 2.82662760e+04 + 2.86477853e+04 2.90344437e+04 2.94263209e+04 2.98234873e+04 3.02260142e+04 + 3.06339740e+04 3.10474400e+04 3.14664865e+04 3.18911890e+04 3.23216236e+04 + 3.27578678e+04 3.31999999e+04 3.36480995e+04 3.41022471e+04 3.45625243e+04 + 3.50290139e+04 3.55017997e+04 3.59809666e+04 3.64666009e+04 3.69587897e+04 + 3.74576216e+04 3.79631862e+04 3.84755745e+04 3.89948784e+04 3.95211913e+04 + 4.00546079e+04 4.05952240e+04 4.11431368e+04 4.16984447e+04 4.22612476e+04 + 4.28316467e+04 4.34097444e+04 4.39956447e+04 4.45894528e+04 4.51912756e+04 + 4.58012212e+04 4.64193992e+04 4.70459207e+04 4.76808984e+04 4.83244463e+04 + 4.89766802e+04 4.96377173e+04 5.03076764e+04 5.09866779e+04 5.16748439e+04 + 5.23722980e+04 5.30791657e+04 5.37955739e+04 5.45216515e+04 5.52575289e+04 + 5.60033385e+04 5.67592142e+04 5.75252919e+04 5.83017094e+04 5.90886062e+04 + 5.98861237e+04 6.06944053e+04 6.15135963e+04 6.23438438e+04 6.31852972e+04 + 6.40381076e+04 6.49024284e+04 6.57784150e+04 6.66662247e+04 6.75660171e+04 + 6.84779540e+04 6.94021994e+04 7.03389192e+04 7.12882819e+04 7.22504581e+04 + 7.32256209e+04 7.42139453e+04 7.52156092e+04 7.62307924e+04 7.72596776e+04 + 7.83024497e+04 7.93592960e+04 8.04304065e+04 8.15159738e+04 8.26161929e+04 + 8.37312617e+04 8.48613806e+04 8.60067526e+04 8.71675837e+04 8.83440825e+04 + 8.95364604e+04 9.07449319e+04 9.19697141e+04 9.32110271e+04 9.44690942e+04 + 9.57441413e+04 9.70363977e+04 9.83460956e+04 9.96734705e+04 1.01018761e+05 + 1.02382209e+05 1.03764059e+05 1.05164560e+05 1.06583964e+05 1.08022525e+05 + 1.09480502e+05 1.10958158e+05 1.12455758e+05 1.13973570e+05 1.15511869e+05 + 1.17070930e+05 1.18651033e+05 1.20252464e+05 1.21875508e+05 1.23520459e+05 + 1.25187612e+05 1.26877266e+05 1.28589725e+05 1.30325298e+05 1.32084295e+05 + 1.33867034e+05 1.35673834e+05 1.37505020e+05 1.39360922e+05 1.41241873e+05 + 1.43148212e+05 1.45080280e+05 1.47038425e+05 1.49022999e+05 1.51034359e+05 + 1.53072866e+05 1.55138887e+05 1.57232793e+05 1.59354960e+05 1.61505770e+05 + 1.63685609e+05 1.65894870e+05 1.68133949e+05 1.70403249e+05 1.72703178e+05 + 1.75034149e+05 1.77396580e+05 1.79790898e+05 1.82217531e+05 1.84676917e+05 + 1.87169497e+05 1.89695719e+05 1.92256038e+05 1.94850913e+05 1.97480811e+05 + 2.00146205e+05 2.02847573e+05 2.05585402e+05 2.08360183e+05 2.11172416e+05 + 2.14022605e+05 2.16911263e+05 2.19838909e+05 2.22806069e+05 2.25813278e+05 + 2.28861074e+05 2.31950007e+05 2.35080630e+05 2.38253508e+05 2.41469210e+05 + 2.44728314e+05 2.48031406e+05 2.51379080e+05 2.54771938e+05 2.58210588e+05 + 2.61695651e+05 2.65227751e+05 2.68807523e+05 2.72435612e+05 2.76112669e+05 + 2.79839355e+05 2.83616340e+05 2.87444303e+05 2.91323932e+05 2.95255924e+05 + 2.99240986e+05 3.03279835e+05 3.07373196e+05 3.11521804e+05 3.15726407e+05 + 3.19987758e+05 3.24306626e+05 3.28683784e+05 3.33120022e+05 3.37616135e+05 + 3.42172931e+05 3.46791231e+05 3.51471864e+05 3.56215672e+05 3.61023506e+05 + 3.65896232e+05 3.70834725e+05 3.75839872e+05 3.80912574e+05 3.86053742e+05 + 3.91264300e+05 3.96545185e+05 4.01897346e+05 4.07321745e+05 4.12819356e+05 + 4.18391169e+05 4.24038185e+05 4.29761418e+05 4.35561898e+05 4.41440667e+05 + 4.47398781e+05 4.53437311e+05 4.59557344e+05 4.65759979e+05 4.72046330e+05 + 4.78417528e+05 4.84874718e+05 4.91419060e+05 4.98051732e+05 5.04773924e+05 + 5.11586846e+05 5.18491721e+05 5.25489792e+05 5.32582315e+05 5.39770566e+05 + 5.47055836e+05 5.54439436e+05 5.61922691e+05 5.69506949e+05 5.77193570e+05 + 5.84983938e+05 5.92879453e+05 6.00881532e+05 6.08991616e+05 6.17211161e+05 + 6.25541646e+05 6.33984566e+05 6.42541441e+05 6.51213808e+05 6.60003225e+05 + 3.33422613e-07 3.37922810e-07 3.42483747e-07 3.47106241e-07 3.51791126e-07 + 3.56539243e-07 3.61351444e-07 3.66228596e-07 3.71171575e-07 3.76181269e-07 + 3.81258578e-07 3.86404416e-07 3.91619707e-07 3.96905389e-07 4.02262412e-07 + 4.07691738e-07 4.13194344e-07 4.18771218e-07 4.24423363e-07 4.30151795e-07 + 4.35957544e-07 4.41841652e-07 4.47805178e-07 4.53849194e-07 4.59974786e-07 + 4.66183055e-07 4.72475116e-07 4.78852102e-07 4.85315157e-07 4.91865444e-07 + 4.98504140e-07 5.05232439e-07 5.12051549e-07 5.18962697e-07 5.25967124e-07 + 5.33066089e-07 5.40260870e-07 5.47552758e-07 5.54943064e-07 5.62433118e-07 + 5.70024264e-07 5.77717868e-07 5.85515312e-07 5.93417998e-07 6.01427347e-07 + 6.09544798e-07 6.17771809e-07 6.26109861e-07 6.34560451e-07 6.43125098e-07 + 6.51805342e-07 6.60602743e-07 6.69518883e-07 6.78555363e-07 6.87713809e-07 + 6.96995865e-07 7.06403202e-07 7.15937509e-07 7.25600501e-07 7.35393913e-07 + 7.45319507e-07 7.55379067e-07 7.65574400e-07 7.75907340e-07 7.86379743e-07 + 7.96993491e-07 8.07750493e-07 8.18652683e-07 8.29702018e-07 8.40900487e-07 + 8.52250101e-07 8.63752900e-07 8.75410952e-07 8.87226353e-07 8.99201226e-07 + 9.11337723e-07 9.23638027e-07 9.36104347e-07 9.48738925e-07 9.61544032e-07 + 9.74521969e-07 9.87675069e-07 1.00100570e-06 1.01451625e-06 1.02820915e-06 + 1.04208686e-06 1.05615188e-06 1.07040674e-06 1.08485399e-06 1.09949624e-06 + 1.11433612e-06 1.12937629e-06 1.14461945e-06 1.16006835e-06 1.17572577e-06 + 1.19159451e-06 1.20767743e-06 1.22397743e-06 1.24049742e-06 1.25724038e-06 + 1.27420933e-06 1.29140730e-06 1.30883739e-06 1.32650274e-06 1.34440652e-06 + 1.36255194e-06 1.38094227e-06 1.39958082e-06 1.41847092e-06 1.43761599e-06 + 1.45701946e-06 1.47668482e-06 1.49661560e-06 1.51681538e-06 1.53728780e-06 + 1.55803654e-06 1.57906532e-06 1.60037793e-06 1.62197819e-06 1.64386999e-06 + 1.66605727e-06 1.68854400e-06 1.71133424e-06 1.73443208e-06 1.75784167e-06 + 1.78156721e-06 1.80561298e-06 1.82998330e-06 1.85468254e-06 1.87971515e-06 + 1.90508562e-06 1.93079851e-06 1.95685845e-06 1.98327013e-06 2.01003828e-06 + 2.03716771e-06 2.06466332e-06 2.09253003e-06 2.12077286e-06 2.14939688e-06 + 2.17840724e-06 2.20780915e-06 2.23760790e-06 2.26780884e-06 2.29841740e-06 + 2.32943908e-06 2.36087947e-06 2.39274420e-06 2.42503901e-06 2.45776971e-06 + 2.49094216e-06 2.52456235e-06 2.55863631e-06 2.59317016e-06 2.62817012e-06 + 2.66364247e-06 2.69959359e-06 2.73602994e-06 2.77295807e-06 2.81038462e-06 + 2.84831631e-06 2.88675997e-06 2.92572250e-06 2.96521091e-06 3.00523229e-06 + 3.04579384e-06 3.08690284e-06 3.12856670e-06 3.17079289e-06 3.21358900e-06 + 3.25696274e-06 3.30092189e-06 3.34547435e-06 3.39062814e-06 3.43639136e-06 + 3.48277226e-06 3.52977915e-06 3.57742050e-06 3.62570485e-06 3.67464091e-06 + 3.72423745e-06 3.77450339e-06 3.82544777e-06 3.87707975e-06 3.92940860e-06 + 3.98244374e-06 4.03619469e-06 4.09067111e-06 4.14588280e-06 4.20183968e-06 + 4.25855181e-06 4.31602938e-06 4.37428273e-06 4.43332232e-06 4.49315877e-06 + 4.55380282e-06 4.61526539e-06 4.67755752e-06 4.74069040e-06 4.80467539e-06 + 4.86952397e-06 4.93524782e-06 5.00185875e-06 5.06936871e-06 5.13778986e-06 + 5.20713449e-06 5.27741506e-06 5.34864421e-06 5.42083473e-06 5.49399961e-06 + 5.56815199e-06 5.64330520e-06 5.71947276e-06 5.79666835e-06 5.87490584e-06 + 5.95419930e-06 6.03456299e-06 6.11601134e-06 6.19855900e-06 6.28222081e-06 + 6.36701179e-06 6.45294720e-06 6.54004247e-06 6.62831327e-06 6.71777545e-06 + 6.80844511e-06 6.90033853e-06 6.99347224e-06 7.08786296e-06 7.18352768e-06 + 7.28048358e-06 7.37874810e-06 7.47833888e-06 7.57927385e-06 7.68157112e-06 + 7.78524911e-06 7.89032643e-06 7.99682198e-06 8.10475489e-06 8.21414458e-06 + 8.32501069e-06 8.43737316e-06 8.55125218e-06 8.66666823e-06 8.78364205e-06 + 8.90219465e-06 9.02234736e-06 9.14412177e-06 9.26753976e-06 9.39262353e-06 + 9.51939554e-06 9.64787860e-06 9.77809578e-06 9.91007051e-06 1.00438265e-05 + 1.01793878e-05 1.03167787e-05 1.04560241e-05 1.05971488e-05 1.07401782e-05 + 1.08851382e-05 1.10320546e-05 1.11809540e-05 1.13318631e-05 1.14848089e-05 + 1.16398191e-05 1.17969215e-05 1.19561443e-05 1.21175161e-05 1.22810659e-05 + 1.24468231e-05 1.26148176e-05 1.27850795e-05 1.29576394e-05 1.31325284e-05 + 1.33097778e-05 1.34894195e-05 1.36714859e-05 1.38560096e-05 1.40430239e-05 + 1.42325622e-05 1.44246588e-05 1.46193481e-05 1.48166650e-05 1.50166452e-05 + 1.52193245e-05 1.54247394e-05 1.56329267e-05 1.58439240e-05 1.60577690e-05 + 1.62745004e-05 1.64941569e-05 1.67167781e-05 1.69424041e-05 1.71710753e-05 + 1.74028329e-05 1.76377185e-05 1.78757744e-05 1.81170433e-05 1.83615686e-05 + 1.86093943e-05 1.88605648e-05 1.91151254e-05 1.93731218e-05 1.96346004e-05 + 1.98996081e-05 2.01681926e-05 2.04404022e-05 2.07162859e-05 2.09958931e-05 + 2.12792742e-05 2.15664800e-05 2.18575623e-05 2.21525733e-05 2.24515660e-05 + 2.27545943e-05 2.30617125e-05 2.33729759e-05 2.36884404e-05 2.40081627e-05 + 2.43322003e-05 2.46606114e-05 2.49934551e-05 2.53307912e-05 2.56726803e-05 + 2.60191838e-05 2.63703641e-05 2.67262843e-05 2.70870083e-05 2.74526010e-05 + 2.78231281e-05 2.81986562e-05 2.85792528e-05 2.89649863e-05 2.93559260e-05 + 2.97521423e-05 3.01537062e-05 3.05606901e-05 3.09731670e-05 3.13912111e-05 + 3.18148975e-05 3.22443024e-05 3.26795030e-05 3.31205775e-05 3.35676051e-05 + 3.40206663e-05 3.44798424e-05 3.49452160e-05 3.54168708e-05 3.58948914e-05 + 3.63793639e-05 3.68703753e-05 3.73680139e-05 3.78723691e-05 3.83835316e-05 + 3.89015932e-05 3.94266470e-05 3.99587876e-05 4.04981104e-05 4.10447124e-05 + 4.15986919e-05 4.21601485e-05 4.27291830e-05 4.33058977e-05 4.38903964e-05 + 4.44827840e-05 4.50831671e-05 4.56916535e-05 4.63083527e-05 4.69333754e-05 + 4.75668341e-05 4.82088425e-05 4.88595161e-05 4.95189718e-05 5.01873282e-05 + 5.08647054e-05 5.15512251e-05 5.22470108e-05 5.29521874e-05 5.36668818e-05 + 5.43912225e-05 5.51253395e-05 5.58693649e-05 5.66234324e-05 5.73876775e-05 + 5.81622376e-05 5.89472519e-05 5.97428616e-05 6.05492096e-05 6.13664408e-05 + 6.21947022e-05 6.30341426e-05 6.38849129e-05 6.47471661e-05 6.56210570e-05 + 6.65067429e-05 6.74043828e-05 6.83141382e-05 6.92361725e-05 7.01706514e-05 + 7.11177430e-05 7.20776175e-05 7.30504474e-05 7.40364076e-05 7.50356752e-05 + 7.60484299e-05 7.70748537e-05 7.81151312e-05 7.91694493e-05 8.02379974e-05 + 8.13209678e-05 8.24185549e-05 8.35309562e-05 8.46583715e-05 8.58010036e-05 + 8.69590577e-05 8.81327420e-05 8.93222675e-05 9.05278480e-05 9.17497002e-05 + 9.29880438e-05 9.42431012e-05 9.55150981e-05 9.68042631e-05 9.81108279e-05 + 9.94350274e-05 1.00777100e-04 1.02137286e-04 1.03515830e-04 1.04912981e-04 + 1.06328989e-04 1.07764109e-04 1.09218598e-04 1.10692719e-04 1.12186736e-04 + 1.13700918e-04 1.15235536e-04 1.16790868e-04 1.18367191e-04 1.19964790e-04 + 1.21583952e-04 1.23224968e-04 1.24888133e-04 1.26573745e-04 1.28282107e-04 + 1.30013528e-04 1.31768318e-04 1.33546791e-04 1.35349269e-04 1.37176075e-04 + 1.39027537e-04 1.40903989e-04 1.42805766e-04 1.44733212e-04 1.46686673e-04 + 1.48666500e-04 1.50673048e-04 1.52706678e-04 1.54767757e-04 1.56856654e-04 + 1.58973744e-04 1.61119409e-04 1.63294034e-04 1.65498009e-04 1.67731732e-04 + 1.69995603e-04 1.72290030e-04 1.74615424e-04 1.76972205e-04 1.79360794e-04 + 1.81781623e-04 1.84235125e-04 1.86721742e-04 1.89241921e-04 1.91796114e-04 + 1.94384782e-04 1.97008389e-04 1.99667406e-04 2.02362313e-04 2.05093592e-04 + 2.07861735e-04 2.10667240e-04 2.13510611e-04 2.16392358e-04 2.19313001e-04 + 2.22273063e-04 2.25273078e-04 2.28313583e-04 2.31395126e-04 2.34518260e-04 + 2.37683548e-04 2.40891557e-04 2.44142865e-04 2.47438055e-04 2.50777721e-04 + 2.54162461e-04 2.57592886e-04 2.61069611e-04 2.64593261e-04 2.68164470e-04 + 2.71783880e-04 2.75452140e-04 2.79169911e-04 2.82937861e-04 2.86756667e-04 + 2.90627015e-04 2.94549600e-04 2.98525129e-04 3.02554316e-04 3.06637884e-04 + 3.10776569e-04 3.14971112e-04 3.19222270e-04 3.23530805e-04 3.27897493e-04 + 3.32323118e-04 3.36808475e-04 3.41354371e-04 3.45961623e-04 3.50631058e-04 + 3.55363517e-04 3.60159850e-04 3.65020919e-04 3.69947598e-04 3.74940772e-04 + 3.80001338e-04 3.85130207e-04 3.90328301e-04 3.95596553e-04 4.00935910e-04 + 4.06347332e-04 4.11831792e-04 4.17390276e-04 4.23023783e-04 4.28733325e-04 + 4.34519928e-04 4.40384633e-04 4.46328494e-04 4.52352579e-04 4.58457971e-04 + 4.64645768e-04 4.70917081e-04 4.77273037e-04 4.83714780e-04 4.90243467e-04 + 4.96860271e-04 5.03566382e-04 5.10363006e-04 5.17251363e-04 5.24232693e-04 + 5.31308249e-04 5.38479303e-04 5.45747146e-04 5.53113082e-04 5.60578436e-04 + 5.68144550e-04 5.75812783e-04 5.83584515e-04 5.91461141e-04 5.99444078e-04 + 6.07534760e-04 6.15734643e-04 6.24045198e-04 6.32467922e-04 6.41004326e-04 + 6.49655946e-04 6.58424337e-04 6.67311075e-04 6.76317756e-04 6.85446001e-04 + 6.94697449e-04 7.04073764e-04 7.13576631e-04 7.23207758e-04 7.32968876e-04 + 7.42861739e-04 7.52888126e-04 7.63049839e-04 7.73348705e-04 7.83786574e-04 + 7.94365323e-04 8.05086852e-04 8.15953090e-04 8.26965990e-04 8.38127530e-04 + 8.49439717e-04 8.60904585e-04 8.72524194e-04 8.84300632e-04 8.96236017e-04 + 9.08332493e-04 9.20592235e-04 9.33017446e-04 9.45610360e-04 9.58373241e-04 + 9.71308382e-04 9.84418108e-04 9.97704775e-04 1.01117077e-03 1.02481852e-03 + 1.03865047e-03 1.05266911e-03 1.06687696e-03 1.08127658e-03 1.09587054e-03 + 1.11066148e-03 1.12565205e-03 1.14084495e-03 1.15624291e-03 1.17184869e-03 + 1.18766510e-03 1.20369499e-03 1.21994123e-03 1.23640675e-03 1.25309450e-03 + 1.27000749e-03 1.28714875e-03 1.30452137e-03 1.32212846e-03 1.33997320e-03 + 1.35805878e-03 1.37638847e-03 1.39496555e-03 1.41379337e-03 1.43287530e-03 + 1.45221479e-03 1.47181530e-03 1.49168035e-03 1.51181353e-03 1.53221844e-03 + 1.55289875e-03 1.57385819e-03 1.59510052e-03 1.61662955e-03 1.63844916e-03 + 1.66056327e-03 1.68297585e-03 1.70569094e-03 1.72871261e-03 1.75204500e-03 + 1.77569231e-03 1.79965879e-03 1.82394874e-03 1.84856653e-03 1.87351659e-03 + 1.89880340e-03 1.92443150e-03 1.95040551e-03 1.97673009e-03 2.00340997e-03 + 2.03044994e-03 2.05785488e-03 2.08562970e-03 2.11377939e-03 2.14230902e-03 + 2.17122371e-03 2.20052867e-03 2.23022915e-03 2.26033050e-03 2.29083813e-03 + 2.32175752e-03 2.35309422e-03 2.38485388e-03 2.41704219e-03 2.44966495e-03 + 2.48272802e-03 2.51623735e-03 2.55019894e-03 2.58461891e-03 2.61950345e-03 + 2.65485883e-03 2.69069140e-03 2.72700759e-03 2.76381395e-03 2.80111708e-03 + 2.83892369e-03 2.87724058e-03 2.91607463e-03 2.95543282e-03 2.99532222e-03 + 3.03575001e-03 3.07672346e-03 3.11824992e-03 3.16033687e-03 3.20299186e-03 + 3.24622256e-03 3.29003675e-03 3.33444230e-03 3.37944719e-03 3.42505951e-03 + 3.47128745e-03 3.51813934e-03 3.56562358e-03 3.61374872e-03 3.66252340e-03 + 3.71195639e-03 3.76205657e-03 3.81283296e-03 3.86429468e-03 3.91645097e-03 + 3.96931122e-03 4.02288492e-03 4.07718170e-03 4.13221132e-03 4.18798368e-03 + 4.24450880e-03 4.30179683e-03 4.35985808e-03 4.41870298e-03 4.47834211e-03 + 4.53878618e-03 4.60004607e-03 4.66213279e-03 4.72505748e-03 4.78883147e-03 + 4.85346621e-03 4.91897333e-03 4.98536460e-03 5.05265194e-03 5.12084747e-03 + 5.18996342e-03 5.26001224e-03 5.33100650e-03 5.40295896e-03 5.47588257e-03 + 5.54979043e-03 5.62469582e-03 5.70061220e-03 5.77755323e-03 5.85553273e-03 + 5.93456471e-03 6.01466339e-03 6.09584316e-03 6.17811861e-03 6.26150453e-03 + 6.34601591e-03 6.43166793e-03 6.51847600e-03 6.60645572e-03 6.69562289e-03 + 6.78599356e-03 6.87758395e-03 6.97041054e-03 7.06449000e-03 7.15983925e-03 + 7.25647543e-03 7.35441591e-03 7.45367829e-03 7.55428040e-03 7.65624035e-03 + 7.75957644e-03 7.86430726e-03 7.97045163e-03 8.07802862e-03 8.18705758e-03 + 8.29755810e-03 8.40955005e-03 8.52305354e-03 8.63808899e-03 8.75467707e-03 + 8.87283874e-03 8.99259524e-03 9.11396808e-03 9.23697909e-03 9.36165038e-03 + 9.48800435e-03 9.61606372e-03 9.74585150e-03 9.87739102e-03 1.00107059e-02 + 1.01458202e-02 1.02827581e-02 1.04215442e-02 1.05622036e-02 1.07047614e-02 + 1.08492433e-02 1.09956753e-02 1.11440836e-02 1.12944951e-02 1.14469366e-02 + 1.16014356e-02 1.17580199e-02 1.19167176e-02 1.20775573e-02 1.22405678e-02 + 1.24057784e-02 1.25732189e-02 1.27429194e-02 1.29149103e-02 1.30892225e-02 + 1.32658874e-02 1.34449368e-02 1.36264028e-02 1.38103180e-02 1.39967155e-02 + 1.41856289e-02 1.43770920e-02 1.45711392e-02 1.47678056e-02 1.49671263e-02 + 1.51691372e-02 1.53738747e-02 1.55813755e-02 1.57916770e-02 1.60048169e-02 + 1.62208335e-02 1.64397657e-02 1.66616528e-02 1.68865348e-02 1.71144519e-02 + 1.73454453e-02 1.75795563e-02 1.78168272e-02 1.80573005e-02 1.83010194e-02 + 1.85480279e-02 1.87983701e-02 1.90520913e-02 1.93092369e-02 1.95698532e-02 + 1.98339871e-02 2.01016859e-02 2.03729979e-02 2.06479718e-02 2.09266569e-02 + 2.12091035e-02 2.14953623e-02 2.17854847e-02 2.20795229e-02 2.23775297e-02 + 2.26795586e-02 2.29856641e-02 2.32959011e-02 2.36103253e-02 2.39289933e-02 + 2.42519623e-02 2.45792905e-02 2.49110366e-02 2.52472603e-02 2.55880219e-02 + 2.59333828e-02 2.62834051e-02 2.66381516e-02 2.69976861e-02 2.73620732e-02 + 2.77313785e-02 2.81056682e-02 2.84850098e-02 2.88694713e-02 2.92591218e-02 + 2.96540315e-02 3.00542712e-02 3.04599130e-02 3.08710297e-02 3.12876953e-02 + 3.17099846e-02 3.21379735e-02 3.25717389e-02 3.30113589e-02 3.34569125e-02 + 3.39084796e-02 3.43661415e-02 3.48299805e-02 3.53000800e-02 3.57765243e-02 + 3.62593992e-02 3.67487914e-02 3.72447890e-02 3.77474810e-02 3.82569579e-02 + 3.87733111e-02 3.92966336e-02 3.98270193e-02 4.03645636e-02 4.09093632e-02 + 4.14615159e-02 4.20211210e-02 4.25882791e-02 4.31630920e-02 4.37456633e-02 + 4.43360974e-02 4.49345007e-02 4.55409806e-02 4.61556461e-02 4.67786078e-02 + 4.74099775e-02 4.80498689e-02 4.86983968e-02 4.93556779e-02 5.00218303e-02 + 5.06969737e-02 5.13812296e-02 5.20747208e-02 5.27775721e-02 5.34899097e-02 + 5.42118618e-02 5.49435580e-02 5.56851299e-02 5.64367107e-02 5.71984357e-02 + 5.79704416e-02 5.87528673e-02 5.95458533e-02 6.03495423e-02 6.11640786e-02 + 6.19896087e-02 6.28262810e-02 6.36742458e-02 6.45336556e-02 6.54046648e-02 + 6.62874300e-02 6.71821099e-02 6.80888652e-02 6.90078590e-02 6.99392564e-02 + 7.08832249e-02 7.18399341e-02 7.28095560e-02 7.37922648e-02 7.47882373e-02 + 7.57976523e-02 7.68206914e-02 7.78575385e-02 7.89083798e-02 7.99734043e-02 + 8.10528035e-02 8.21467712e-02 8.32555042e-02 8.43792018e-02 8.55180659e-02 + 8.66723011e-02 8.78421151e-02 8.90277181e-02 9.02293231e-02 9.14471461e-02 + 9.26814060e-02 9.39323248e-02 9.52001271e-02 9.64850410e-02 9.77872973e-02 + 9.91071301e-02 1.00444777e-01 1.01800477e-01 1.03174476e-01 1.04567019e-01 + 1.05978358e-01 1.07408745e-01 1.08858439e-01 1.10327698e-01 1.11816789e-01 + 1.13325977e-01 1.14855535e-01 1.16405738e-01 1.17976863e-01 1.19569194e-01 + 1.21183017e-01 1.22818621e-01 1.24476301e-01 1.26156355e-01 1.27859084e-01 + 1.29584795e-01 1.31333798e-01 1.33106407e-01 1.34902941e-01 1.36723723e-01 + 1.38569080e-01 1.40439343e-01 1.42334850e-01 1.44255940e-01 1.46202959e-01 + 1.48176257e-01 1.50176188e-01 1.52203112e-01 1.54257394e-01 1.56339402e-01 + 1.58449512e-01 1.60588101e-01 1.62755555e-01 1.64952263e-01 1.67178619e-01 + 1.69435025e-01 1.71721886e-01 1.74039612e-01 1.76388620e-01 1.78769333e-01 + 1.81182179e-01 1.83627590e-01 1.86106008e-01 1.88617876e-01 1.91163647e-01 + 1.93743778e-01 1.96358733e-01 1.99008982e-01 2.01695002e-01 2.04417275e-01 + 2.07176290e-01 2.09972543e-01 2.12806537e-01 2.15678782e-01 2.18589794e-01 + 2.21540095e-01 2.24530216e-01 2.27560695e-01 2.30632076e-01 2.33744912e-01 + 2.36899762e-01 2.40097192e-01 2.43337778e-01 2.46622102e-01 2.49950755e-01 + 2.53324334e-01 2.56743447e-01 2.60208707e-01 2.63720738e-01 2.67280170e-01 + 2.70887644e-01 2.74543808e-01 2.78249320e-01 2.82004844e-01 2.85811057e-01 + 2.89668642e-01 2.93578293e-01 2.97540712e-01 3.01556612e-01 3.05626714e-01 + 3.09751751e-01 3.13932463e-01 3.18169601e-01 3.22463929e-01 3.26816217e-01 + 3.31227248e-01 3.35697814e-01 3.40228719e-01 3.44820778e-01 3.49474816e-01 + 3.54191669e-01 3.58972186e-01 3.63817225e-01 3.68727657e-01 3.73704366e-01 + 3.78748245e-01 3.83860201e-01 3.89041153e-01 3.94292032e-01 3.99613782e-01 + 4.05007360e-01 4.10473734e-01 4.16013889e-01 4.21628818e-01 4.27319532e-01 + 4.33087054e-01 4.38932419e-01 4.44856680e-01 4.50860900e-01 4.56946159e-01 + 4.63113550e-01 4.69364183e-01 4.75699180e-01 4.82119680e-01 4.88626838e-01 + 4.95221823e-01 5.01905820e-01 5.08680031e-01 5.15545673e-01 5.22503981e-01 + 5.29556205e-01 5.36703612e-01 5.43947488e-01 5.51289134e-01 5.58729871e-01 + 5.66271034e-01 5.73913981e-01 5.81660084e-01 5.89510737e-01 5.97467349e-01 + 6.05531351e-01 6.13704194e-01 6.21987345e-01 6.30382293e-01 6.38890548e-01 + 6.47513638e-01 6.56253114e-01 6.65110547e-01 6.74087528e-01 6.83185672e-01 + 6.92406612e-01 7.01752008e-01 7.11223538e-01 7.20822905e-01 7.30551835e-01 + 7.40412075e-01 7.50405399e-01 7.60533603e-01 7.70798507e-01 7.81201956e-01 + 7.91745820e-01 8.02431995e-01 8.13262400e-01 8.24238984e-01 8.35363718e-01 + 8.46638602e-01 8.58065663e-01 8.69646955e-01 8.81384559e-01 8.93280585e-01 + 9.05337172e-01 9.17556486e-01 9.29940724e-01 9.42492112e-01 9.55212906e-01 + 9.68105391e-01 9.81171887e-01 9.94414740e-01 1.00783633e+00 1.02143908e+00 + 1.03522541e+00 1.04919783e+00 1.06335883e+00 1.07771095e+00 1.09225679e+00 + 1.10699896e+00 1.12194010e+00 1.13708289e+00 1.15243007e+00 1.16798440e+00 + 1.18374865e+00 1.19972568e+00 1.21591835e+00 1.23232957e+00 1.24896229e+00 + 1.26581951e+00 1.28290424e+00 1.30021957e+00 1.31776860e+00 1.33555450e+00 + 1.35358044e+00 1.37184969e+00 1.39036551e+00 1.40913124e+00 1.42815025e+00 + 1.44742596e+00 1.46696183e+00 1.48676138e+00 1.50682816e+00 1.52716579e+00 + 1.54777791e+00 1.56866823e+00 1.58984051e+00 1.61129855e+00 1.63304621e+00 + 1.65508739e+00 1.67742607e+00 1.70006625e+00 1.72301200e+00 1.74626745e+00 + 1.76983678e+00 1.79372423e+00 1.81793408e+00 1.84247069e+00 1.86733848e+00 + 1.89254190e+00 1.91808549e+00 1.94397385e+00 1.97021161e+00 1.99680351e+00 + 2.02375432e+00 2.05106889e+00 2.07875211e+00 2.10680898e+00 2.13524453e+00 + 2.16406388e+00 2.19327220e+00 2.22287474e+00 2.25287683e+00 2.28328385e+00 + 2.31410128e+00 2.34533465e+00 2.37698957e+00 2.40907175e+00 2.44158693e+00 + 2.47454097e+00 2.50793979e+00 2.54178939e+00 2.57609587e+00 2.61086537e+00 + 2.64610416e+00 2.68181856e+00 2.71801500e+00 2.75469999e+00 2.79188011e+00 + 2.82956205e+00 2.86775258e+00 2.90645857e+00 2.94568697e+00 2.98544484e+00 + 3.02573931e+00 3.06657764e+00 3.10796717e+00 3.14991533e+00 3.19242966e+00 + 3.23551781e+00 3.27918751e+00 3.32344663e+00 3.36830311e+00 3.41376502e+00 + 3.45984052e+00 3.50653791e+00 3.55386557e+00 3.60183200e+00 3.65044585e+00 + 3.69971583e+00 3.74965080e+00 3.80025975e+00 3.85155177e+00 3.90353607e+00 + 3.95622200e+00 4.00961904e+00 4.06373677e+00 4.11858493e+00 4.17417337e+00 + 4.23051209e+00 4.28761121e+00 4.34548099e+00 4.40413185e+00 4.46357431e+00 + 4.52381907e+00 4.58487694e+00 4.64675892e+00 4.70947611e+00 4.77303980e+00 + 4.83746140e+00 4.90275251e+00 4.96892484e+00 5.03599030e+00 5.10396094e+00 + 5.17284898e+00 5.24266680e+00 5.31342695e+00 5.38514215e+00 5.45782528e+00 + 5.53148942e+00 5.60614780e+00 5.68181384e+00 5.75850115e+00 5.83622350e+00 + 5.91499487e+00 5.99482942e+00 6.07574149e+00 6.15774562e+00 6.24085657e+00 + 6.32508926e+00 6.41045884e+00 6.49698065e+00 6.58467024e+00 6.67354338e+00 + 6.76361604e+00 6.85490440e+00 6.94742488e+00 7.04119411e+00 7.13622894e+00 + 7.23254645e+00 7.33016396e+00 7.42909901e+00 7.52936938e+00 7.63099310e+00 + 7.73398843e+00 7.83837389e+00 7.94416823e+00 8.05139048e+00 8.16005991e+00 + 8.27019604e+00 8.38181868e+00 8.49494789e+00 8.60960400e+00 8.72580762e+00 + 8.84357964e+00 8.96294122e+00 9.08391382e+00 9.20651919e+00 9.33077936e+00 + 9.45671667e+00 9.58435375e+00 9.71371354e+00 9.84481930e+00 9.97769459e+00 + 1.01123633e+01 1.02488496e+01 1.03871781e+01 1.05273736e+01 1.06694613e+01 + 1.08134668e+01 1.09594159e+01 1.11073349e+01 1.12572503e+01 1.14091891e+01 + 1.15631787e+01 1.17192466e+01 1.18774210e+01 1.20377303e+01 1.22002032e+01 + 1.23648691e+01 1.25317574e+01 1.27008983e+01 1.28723220e+01 1.30460594e+01 + 1.32221418e+01 1.34006007e+01 1.35814683e+01 1.37647770e+01 1.39505599e+01 + 1.41388503e+01 1.43296820e+01 1.45230894e+01 1.47191072e+01 1.49177706e+01 + 1.51191154e+01 1.53231778e+01 1.55299943e+01 1.57396023e+01 1.59520393e+01 + 1.61673436e+01 1.63855539e+01 1.66067093e+01 1.68308497e+01 1.70580152e+01 + 1.72882469e+01 1.75215859e+01 1.77580743e+01 1.79977547e+01 1.82406699e+01 + 1.84868638e+01 1.87363806e+01 1.89892650e+01 1.92455627e+01 1.95053196e+01 + 1.97685824e+01 2.00353985e+01 2.03058158e+01 2.05798829e+01 2.08576491e+01 + 2.11391643e+01 2.14244791e+01 2.17136448e+01 2.20067133e+01 2.23037374e+01 + 2.26047704e+01 2.29098665e+01 2.32190804e+01 2.35324678e+01 2.38500849e+01 + 2.41719890e+01 2.44982377e+01 2.48288899e+01 2.51640048e+01 2.55036428e+01 + 2.58478648e+01 2.61967328e+01 2.65503095e+01 2.69086584e+01 2.72718439e+01 + 2.76399314e+01 2.80129869e+01 2.83910775e+01 2.87742712e+01 2.91626368e+01 + 2.95562442e+01 2.99551642e+01 3.03594683e+01 3.07692293e+01 3.11845209e+01 + 3.16054176e+01 3.20319952e+01 3.24643303e+01 3.29025005e+01 3.33465848e+01 + 3.37966629e+01 3.42528156e+01 3.47151251e+01 3.51836743e+01 3.56585475e+01 + 3.61398301e+01 3.66276085e+01 3.71219704e+01 3.76230048e+01 3.81308016e+01 + 3.86454521e+01 3.91670489e+01 3.96956856e+01 4.02314573e+01 4.07744603e+01 + 4.13247922e+01 4.18825520e+01 4.24478398e+01 4.30207573e+01 4.36014074e+01 + 4.41898946e+01 4.47863245e+01 4.53908045e+01 4.60034431e+01 4.66243504e+01 + 4.72536382e+01 4.78914194e+01 4.85378088e+01 4.91929224e+01 4.98568781e+01 + 5.05297952e+01 5.12117947e+01 5.19029990e+01 5.26035326e+01 5.33135212e+01 + 5.40330925e+01 5.47623759e+01 5.55015024e+01 5.62506048e+01 5.70098179e+01 + 5.77792780e+01 5.85591236e+01 5.93494947e+01 6.01505334e+01 6.09623837e+01 + 6.17851916e+01 6.26191048e+01 6.34642734e+01 6.43208492e+01 6.51889861e+01 + 6.60688403e+01 6.69605699e+01 6.78643351e+01 6.87802984e+01 6.97086245e+01 + 7.06494801e+01 7.16030345e+01 7.25694589e+01 7.35489272e+01 7.45416153e+01 + 7.55477017e+01 7.65673672e+01 7.76007951e+01 7.86481712e+01 7.97096837e+01 + 8.07855234e+01 8.18758837e+01 8.29809606e+01 8.41009526e+01 8.52360612e+01 + 8.63864902e+01 8.75524466e+01 8.87341399e+01 8.99317825e+01 9.11455896e+01 + 9.23757795e+01 9.36225732e+01 9.48861948e+01 9.61668715e+01 9.74648335e+01 + 9.87803140e+01 1.00113550e+02 1.01464780e+02 1.02834247e+02 1.04222199e+02 + 1.05628883e+02 1.07054554e+02 1.08499467e+02 1.09963881e+02 1.11448061e+02 + 1.12952273e+02 1.14476787e+02 1.16021878e+02 1.17587822e+02 1.19174902e+02 + 1.20783403e+02 1.22413614e+02 1.24065827e+02 1.25740341e+02 1.27437455e+02 + 1.29157476e+02 1.30900711e+02 1.32667475e+02 1.34458085e+02 1.36272862e+02 + 1.38112134e+02 1.39976230e+02 1.41865486e+02 1.43780241e+02 1.45720839e+02 + 1.47687630e+02 1.49680966e+02 1.51701207e+02 1.53748714e+02 1.55823857e+02 + 1.57927008e+02 1.60058545e+02 1.62218851e+02 1.64408315e+02 1.66627330e+02 + 1.68876296e+02 1.71155615e+02 1.73465698e+02 1.75806961e+02 1.78179823e+02 + 1.80584712e+02 1.83022059e+02 1.85492304e+02 1.87995889e+02 1.90533265e+02 + 1.93104888e+02 1.95711220e+02 1.98352730e+02 2.01029892e+02 2.03743187e+02 + 2.06493104e+02 2.09280137e+02 2.12104786e+02 2.14967559e+02 2.17868971e+02 + 2.20809543e+02 2.23789805e+02 2.26810290e+02 2.29871543e+02 2.32974114e+02 + 2.36118560e+02 2.39305447e+02 2.42535347e+02 2.45808840e+02 2.49126516e+02 + 2.52488971e+02 2.55896809e+02 2.59350642e+02 2.62851091e+02 2.66398786e+02 + 2.69994364e+02 2.73638472e+02 2.77331764e+02 2.81074904e+02 2.84868565e+02 + 2.88713429e+02 2.92610188e+02 2.96559540e+02 3.00562197e+02 3.04618878e+02 + 3.08730312e+02 3.12897238e+02 3.17120404e+02 3.21400571e+02 3.25738507e+02 + 3.30134991e+02 3.34590816e+02 3.39106780e+02 3.43683696e+02 3.48322387e+02 + 3.53023686e+02 3.57788438e+02 3.62617500e+02 3.67511740e+02 3.72472037e+02 + 3.77499283e+02 3.82594382e+02 3.87758249e+02 3.92991813e+02 3.98296014e+02 + 4.03671806e+02 4.09120155e+02 4.14642040e+02 4.20238453e+02 4.25910402e+02 + 4.31658904e+02 4.37484994e+02 4.43389719e+02 4.49374139e+02 4.55439331e+02 + 4.61586385e+02 4.67816405e+02 4.74130512e+02 4.80529841e+02 4.87015540e+02 + 4.93588778e+02 5.00250733e+02 5.07002606e+02 5.13845608e+02 5.20780970e+02 + 5.27809938e+02 5.34933776e+02 5.42153765e+02 5.49471201e+02 5.56887401e+02 + 5.64403697e+02 5.72021440e+02 5.79742000e+02 5.87566764e+02 5.95497138e+02 + 6.03534549e+02 6.11680440e+02 6.19936277e+02 6.28303542e+02 6.36783740e+02 + 6.45378395e+02 6.54089052e+02 6.62917276e+02 6.71864655e+02 6.80932796e+02 + 6.90123330e+02 6.99437908e+02 7.08878204e+02 7.18445917e+02 7.28142764e+02 + 7.37970490e+02 7.47930860e+02 7.58025665e+02 7.68256719e+02 7.78625862e+02 + 7.89134956e+02 7.99785892e+02 8.10580583e+02 8.21520970e+02 8.32609019e+02 + 8.43846723e+02 8.55236102e+02 8.66779204e+02 8.78478102e+02 8.90334900e+02 + 9.02351729e+02 9.14530748e+02 9.26874148e+02 9.39384146e+02 9.52062992e+02 + 9.64912963e+02 9.77936371e+02 9.91135555e+02 1.00451289e+03 1.01807077e+03 + 1.03181165e+03 1.04573799e+03 1.05985229e+03 1.07415709e+03 1.08865496e+03 + 1.10334851e+03 1.11824038e+03 1.13333325e+03 1.14862982e+03 1.16413285e+03 + 1.17984512e+03 1.19576946e+03 1.21190873e+03 1.22826584e+03 1.24484371e+03 + 1.26164534e+03 1.27867373e+03 1.29593196e+03 1.31342313e+03 1.33115037e+03 + 1.34911687e+03 1.36732587e+03 1.38578063e+03 1.40448448e+03 1.42344078e+03 + 1.44265292e+03 1.46212437e+03 1.48185863e+03 1.50185924e+03 1.52212980e+03 + 1.54267395e+03 1.56349538e+03 1.58459784e+03 1.60598512e+03 1.62766107e+03 + 1.64962957e+03 1.67189458e+03 1.69446010e+03 1.71733019e+03 1.74050895e+03 + 1.76400056e+03 1.78780923e+03 1.81193925e+03 1.83639495e+03 1.86118073e+03 + 1.88630105e+03 1.91176041e+03 1.93756339e+03 1.96371464e+03 1.99021885e+03 + 2.01708078e+03 2.04430527e+03 2.07189721e+03 2.09986156e+03 2.12820334e+03 + 2.15692765e+03 2.18603965e+03 2.21554458e+03 2.24544773e+03 2.27575449e+03 + 2.30647029e+03 2.33760066e+03 2.36915120e+03 2.40112758e+03 2.43353554e+03 + 2.46638092e+03 2.49966960e+03 2.53340758e+03 2.56760092e+03 2.60225577e+03 + 2.63737835e+03 2.67297499e+03 2.70905207e+03 2.74561608e+03 2.78267359e+03 + 2.82023127e+03 2.85829587e+03 2.89687422e+03 2.93597326e+03 2.97560002e+03 + 3.01576162e+03 3.05646529e+03 3.09771833e+03 3.13952816e+03 3.18190229e+03 + 3.22484835e+03 3.26837405e+03 3.31248722e+03 3.35719578e+03 3.40250777e+03 + 3.44843134e+03 3.49497473e+03 3.54214633e+03 3.58995459e+03 3.63840812e+03 + 3.68751563e+03 3.73728594e+03 3.78772800e+03 3.83885087e+03 3.89066375e+03 + 3.94317595e+03 3.99639690e+03 4.05033617e+03 4.10500346e+03 4.16040860e+03 + 4.21656153e+03 4.27347236e+03 4.33115132e+03 4.38960877e+03 4.44885521e+03 + 4.50890130e+03 4.56975784e+03 4.63143575e+03 4.69394613e+03 4.75730021e+03 + 4.82150937e+03 4.88658517e+03 4.95253929e+03 5.01938360e+03 5.08713010e+03 + 5.15579097e+03 5.22537856e+03 5.29590537e+03 5.36738408e+03 5.43982754e+03 + 5.51324876e+03 5.58766095e+03 5.66307747e+03 5.73951189e+03 5.81697795e+03 + 5.89548956e+03 5.97506084e+03 6.05570610e+03 6.13743982e+03 6.22027670e+03 + 6.30423162e+03 6.38931969e+03 6.47555618e+03 6.56295661e+03 6.65153668e+03 + 6.74131231e+03 6.83229964e+03 6.92451503e+03 7.01797504e+03 7.11269648e+03 + 7.20869638e+03 7.30599198e+03 7.40460078e+03 7.50454050e+03 7.60582911e+03 + 7.70848480e+03 7.81252604e+03 7.91797151e+03 8.02484019e+03 8.13315126e+03 + 8.24292421e+03 8.35417876e+03 8.46693492e+03 8.58121294e+03 8.69703336e+03 + 8.81441701e+03 8.93338499e+03 9.05395867e+03 9.17615974e+03 9.30001015e+03 + 9.42553216e+03 9.55274835e+03 9.68168156e+03 9.81235499e+03 9.94479211e+03 + 1.00790167e+04 1.02150530e+04 1.03529253e+04 1.04926585e+04 1.06342777e+04 + 1.07778082e+04 1.09232761e+04 1.10707073e+04 1.12201283e+04 1.13715661e+04 + 1.15250479e+04 1.16806012e+04 1.18382540e+04 1.19980346e+04 1.21599718e+04 + 1.23240947e+04 1.24904327e+04 1.26590157e+04 1.28298742e+04 1.30030387e+04 + 1.31785404e+04 1.33564108e+04 1.35366820e+04 1.37193863e+04 1.39045565e+04 + 1.40922260e+04 1.42824284e+04 1.44751980e+04 1.46705694e+04 1.48685777e+04 + 1.50692586e+04 1.52726480e+04 1.54787826e+04 1.56876993e+04 1.58994358e+04 + 1.61140301e+04 1.63315208e+04 1.65519470e+04 1.67753482e+04 1.70017647e+04 + 1.72312371e+04 1.74638067e+04 1.76995153e+04 1.79384052e+04 1.81805194e+04 + 1.84259015e+04 1.86745954e+04 1.89266460e+04 1.91820985e+04 1.94409988e+04 + 1.97033935e+04 1.99693297e+04 2.02388553e+04 2.05120186e+04 2.07888689e+04 + 2.10694557e+04 2.13538297e+04 2.16420418e+04 2.19341439e+04 2.22301885e+04 + 2.25302289e+04 2.28343188e+04 2.31425131e+04 2.34548670e+04 2.37714368e+04 + 2.40922793e+04 2.44174522e+04 2.47470140e+04 2.50810239e+04 2.54195419e+04 + 2.57626288e+04 2.61103464e+04 2.64627571e+04 2.68199243e+04 2.71819122e+04 + 2.75487858e+04 2.79206111e+04 2.82974550e+04 2.86793850e+04 2.90664700e+04 + 2.94587795e+04 2.98563839e+04 3.02593548e+04 3.06677646e+04 3.10816867e+04 + 3.15011955e+04 3.19263663e+04 3.23572758e+04 3.27940011e+04 3.32366210e+04 + 3.36852149e+04 3.41398634e+04 3.46006483e+04 3.50676525e+04 3.55409597e+04 + 3.60206552e+04 3.65068251e+04 3.69995569e+04 3.74989390e+04 3.80050613e+04 + 3.85180147e+04 3.90378914e+04 3.95647849e+04 4.00987899e+04 4.06400023e+04 + 4.11885195e+04 4.17444399e+04 4.23078636e+04 4.28788919e+04 4.34576272e+04 + 4.40441738e+04 4.46386370e+04 4.52411236e+04 4.58517419e+04 4.64706018e+04 + 4.70978144e+04 4.77334925e+04 4.83777503e+04 4.90307037e+04 4.96924699e+04 + 5.03631680e+04 5.10429184e+04 5.17318435e+04 5.24300670e+04 5.31377143e+04 + 5.38549128e+04 5.45817913e+04 5.53184804e+04 5.60651126e+04 5.68218221e+04 + 5.75887449e+04 5.83660188e+04 5.91537836e+04 5.99521808e+04 6.07613539e+04 + 6.15814485e+04 6.24126118e+04 6.32549933e+04 6.41087445e+04 6.49740187e+04 + 6.58509715e+04 6.67397605e+04 6.76405454e+04 6.85534882e+04 6.94787530e+04 + 7.04165061e+04 7.13669160e+04 7.23301536e+04 7.33063919e+04 7.42958066e+04 + 7.52985753e+04 7.63148784e+04 7.73448985e+04 7.83888207e+04 7.94468328e+04 + 8.05191248e+04 8.16058895e+04 8.27073222e+04 8.38236210e+04 8.49549864e+04 + 8.61016218e+04 8.72637334e+04 8.84415299e+04 8.96352231e+04 9.08450276e+04 + 9.20711608e+04 9.33138430e+04 9.45732977e+04 9.58497513e+04 9.71434331e+04 + 9.84545757e+04 9.97834147e+04 1.01130189e+05 1.02495141e+05 1.03878515e+05 + 1.05280561e+05 1.06701530e+05 1.08141678e+05 1.09601264e+05 1.11080550e+05 + 1.12579801e+05 1.14099288e+05 1.15639284e+05 1.17200064e+05 1.18781911e+05 + 1.20385107e+05 1.22009942e+05 1.23656707e+05 1.25325699e+05 1.27017217e+05 + 1.28731565e+05 1.30469052e+05 1.32229990e+05 1.34014695e+05 1.35823488e+05 + 1.37656695e+05 1.39514644e+05 1.41397670e+05 1.43306110e+05 1.45240310e+05 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 4.46340243e-06 4.52364487e-06 4.58470040e-06 4.64657999e-06 4.70929477e-06 + 4.77285601e-06 4.83727513e-06 4.90256372e-06 4.96873350e-06 5.03579638e-06 + 5.10376441e-06 5.17264979e-06 5.24246492e-06 5.31322235e-06 5.38493478e-06 + 5.45761512e-06 5.53127642e-06 5.60593193e-06 5.68159506e-06 5.75827941e-06 + 5.83599877e-06 5.91476711e-06 5.99459858e-06 6.07550753e-06 6.15750851e-06 + 6.24061626e-06 6.32484571e-06 6.41021200e-06 6.49673048e-06 6.58441669e-06 + 6.67328641e-06 6.76335560e-06 6.85464044e-06 6.94715736e-06 7.04092298e-06 + 7.13595415e-06 7.23226795e-06 7.32988170e-06 7.42881294e-06 7.52907945e-06 + 7.63069926e-06 7.73369062e-06 7.83807206e-06 7.94386233e-06 8.05108045e-06 + 8.15974569e-06 8.26987759e-06 8.38149593e-06 8.49462078e-06 8.60927247e-06 + 8.72547162e-06 8.84323910e-06 8.96259609e-06 9.08356403e-06 9.20616468e-06 + 9.33042007e-06 9.45635252e-06 9.58398469e-06 9.71333950e-06 9.84444021e-06 + 9.97731039e-06 1.01119739e-05 1.02484550e-05 1.03867781e-05 1.05269682e-05 + 1.06690505e-05 1.08130504e-05 1.09589939e-05 1.11069072e-05 1.12568168e-05 + 1.14087498e-05 1.15627334e-05 1.17187954e-05 1.18769637e-05 1.20372668e-05 + 1.21997335e-05 1.23643930e-05 1.25312749e-05 1.27004092e-05 1.28718263e-05 + 1.30455571e-05 1.32216326e-05 1.34000847e-05 1.35809453e-05 1.37642470e-05 + 1.39500227e-05 1.41383059e-05 1.43291302e-05 1.45225302e-05 1.47185404e-05 + 1.49171962e-05 1.51185332e-05 1.53225877e-05 1.55293963e-05 1.57389962e-05 + 1.59514251e-05 1.61667211e-05 1.63849229e-05 1.66060698e-05 1.68302016e-05 + 1.70573584e-05 1.72875812e-05 1.75209112e-05 1.77573905e-05 1.79970616e-05 + 1.82399675e-05 1.84861519e-05 1.87356591e-05 1.89885338e-05 1.92448216e-05 + 1.95045685e-05 1.97678212e-05 2.00346270e-05 2.03050339e-05 2.05790905e-05 + 2.08568460e-05 2.11383503e-05 2.14236541e-05 2.17128087e-05 2.20058659e-05 + 2.23028786e-05 2.26039000e-05 2.29089843e-05 2.32181863e-05 2.35315616e-05 + 2.38491666e-05 2.41710582e-05 2.44972944e-05 2.48279338e-05 2.51630358e-05 + 2.55026607e-05 2.58468695e-05 2.61957241e-05 2.65492872e-05 2.69076223e-05 + 2.72707938e-05 2.76388671e-05 2.80119082e-05 2.83899842e-05 2.87731632e-05 + 2.91615139e-05 2.95551061e-05 2.99540107e-05 3.03582993e-05 3.07680445e-05 + 3.11833201e-05 3.16042006e-05 3.20307617e-05 3.24630802e-05 3.29012336e-05 + 3.33453008e-05 3.37953615e-05 3.42514967e-05 3.47137883e-05 3.51823195e-05 + 3.56571744e-05 3.61384384e-05 3.66261981e-05 3.71205410e-05 3.76215561e-05 + 3.81293333e-05 3.86439640e-05 3.91655407e-05 3.96941570e-05 4.02299081e-05 + 4.07728902e-05 4.13232010e-05 4.18809392e-05 4.24462053e-05 4.30191007e-05 + 4.35997285e-05 4.41881930e-05 4.47846000e-05 4.53890566e-05 4.60016716e-05 + 4.66225551e-05 4.72518186e-05 4.78895753e-05 4.85359398e-05 4.91910282e-05 + 4.98549583e-05 5.05278495e-05 5.12098227e-05 5.19010004e-05 5.26015070e-05 + 5.33114683e-05 5.40310119e-05 5.47602672e-05 5.54993652e-05 5.62484388e-05 + 5.70076227e-05 5.77770532e-05 5.85568687e-05 5.93472093e-05 6.01482172e-05 + 6.09600363e-05 6.17828124e-05 6.26166936e-05 6.34618296e-05 6.43183724e-05 + 6.51864759e-05 6.60662962e-05 6.69579915e-05 6.78617219e-05 6.87776499e-05 + 6.97059402e-05 7.06467597e-05 7.16002773e-05 7.25666645e-05 7.35460951e-05 + 7.45387450e-05 7.55447926e-05 7.65644189e-05 7.75978070e-05 7.86451428e-05 + 7.97066144e-05 8.07824127e-05 8.18727310e-05 8.29777653e-05 8.40977142e-05 + 8.52327790e-05 8.63831638e-05 8.75490753e-05 8.87307231e-05 8.99283196e-05 + 9.11420799e-05 9.23722224e-05 9.36189681e-05 9.48825411e-05 9.61631685e-05 + 9.74610805e-05 9.87765104e-05 1.00109695e-04 1.01460873e-04 1.02830288e-04 + 1.04218186e-04 1.05624816e-04 1.07050432e-04 1.08495289e-04 1.09959647e-04 + 1.11443770e-04 1.12947924e-04 1.14472379e-04 1.16017410e-04 1.17583294e-04 + 1.19170313e-04 1.20778752e-04 1.22408900e-04 1.24061050e-04 1.25735499e-04 + 1.27432548e-04 1.29152502e-04 1.30895670e-04 1.32662366e-04 1.34452907e-04 + 1.36267615e-04 1.38106815e-04 1.39970840e-04 1.41860023e-04 1.43774704e-04 + 1.45715228e-04 1.47681943e-04 1.49675203e-04 1.51695365e-04 1.53742794e-04 + 1.55817857e-04 1.57920927e-04 1.60052382e-04 1.62212605e-04 1.64401985e-04 + 1.66620914e-04 1.68869793e-04 1.71149024e-04 1.73459019e-04 1.75800191e-04 + 1.78172962e-04 1.80577758e-04 1.83015012e-04 1.85485161e-04 1.87988650e-04 + 1.90525928e-04 1.93097452e-04 1.95703684e-04 1.98345092e-04 2.01022151e-04 + 2.03735342e-04 2.06485153e-04 2.09272078e-04 2.12096618e-04 2.14959281e-04 + 2.17860582e-04 2.20801041e-04 2.23781187e-04 2.26801557e-04 2.29862692e-04 + 2.32965143e-04 2.36109468e-04 2.39296232e-04 2.42526007e-04 2.45799375e-04 + 2.49116923e-04 2.52479249e-04 2.55886955e-04 2.59340655e-04 2.62840970e-04 + 2.66388528e-04 2.69983968e-04 2.73627935e-04 2.77321085e-04 2.81064081e-04 + 2.84857596e-04 2.88702312e-04 2.92598920e-04 2.96548121e-04 3.00550624e-04 + 3.04607148e-04 3.08718424e-04 3.12885189e-04 3.17108193e-04 3.21388195e-04 + 3.25725964e-04 3.30122279e-04 3.34577932e-04 3.39093722e-04 3.43670462e-04 + 3.48308974e-04 3.53010092e-04 3.57774661e-04 3.62603537e-04 3.67497588e-04 + 3.72457694e-04 3.77484747e-04 3.82579649e-04 3.87743318e-04 3.92976680e-04 + 3.98280677e-04 4.03656262e-04 4.09104401e-04 4.14626073e-04 4.20222271e-04 + 4.25894001e-04 4.31642283e-04 4.37468148e-04 4.43372645e-04 4.49356835e-04 + 4.55421794e-04 4.61568611e-04 4.67798392e-04 4.74112255e-04 4.80511337e-04 + 4.86996787e-04 4.93569771e-04 5.00231471e-04 5.06983083e-04 5.13825821e-04 + 5.20760916e-04 5.27789614e-04 5.34913178e-04 5.42132888e-04 5.49450043e-04 + 5.56865957e-04 5.64381964e-04 5.71999414e-04 5.79719676e-04 5.87544139e-04 + 5.95474208e-04 6.03511309e-04 6.11656887e-04 6.19912405e-04 6.28279348e-04 + 6.36759220e-04 6.45353544e-04 6.54063865e-04 6.62891749e-04 6.71838784e-04 + 6.80906576e-04 6.90096755e-04 6.99410975e-04 7.08850908e-04 7.18418252e-04 + 7.28114726e-04 7.37942073e-04 7.47902060e-04 7.57996476e-04 7.68227136e-04 + 7.78595880e-04 7.89104570e-04 7.99755095e-04 8.10549371e-04 8.21489336e-04 + 8.32576958e-04 8.43814230e-04 8.55203170e-04 8.66745827e-04 8.78444275e-04 + 8.90300616e-04 9.02316982e-04 9.14495533e-04 9.26838458e-04 9.39347974e-04 + 9.52026331e-04 9.64875808e-04 9.77898714e-04 9.91097390e-04 1.00447421e-03 + 1.01803157e-03 1.03177192e-03 1.04569772e-03 1.05981148e-03 1.07411573e-03 + 1.08861304e-03 1.10330603e-03 1.11819732e-03 1.13328960e-03 1.14858559e-03 + 1.16408802e-03 1.17979969e-03 1.19572342e-03 1.21186207e-03 1.22821854e-03 + 1.24479578e-03 1.26159676e-03 1.27862450e-03 1.29588206e-03 1.31337255e-03 + 1.33109911e-03 1.34906492e-03 1.36727322e-03 1.38572727e-03 1.40443040e-03 + 1.42338596e-03 1.44259737e-03 1.46206807e-03 1.48180157e-03 1.50180141e-03 + 1.52207119e-03 1.54261455e-03 1.56343518e-03 1.58453683e-03 1.60592328e-03 + 1.62759839e-03 1.64956605e-03 1.67183020e-03 1.69439485e-03 1.71726406e-03 + 1.74044193e-03 1.76393264e-03 1.78774039e-03 1.81186948e-03 1.83632424e-03 + 1.86110907e-03 1.88622841e-03 1.91168679e-03 1.93748878e-03 1.96363902e-03 + 1.99014221e-03 2.01700311e-03 2.04422656e-03 2.07181743e-03 2.09978070e-03 + 2.12812139e-03 2.15684460e-03 2.18595548e-03 2.21545927e-03 2.24536127e-03 + 2.27566685e-03 2.30638148e-03 2.33751065e-03 2.36905998e-03 2.40103512e-03 + 2.43344184e-03 2.46628594e-03 2.49957335e-03 2.53331003e-03 2.56750205e-03 + 2.60215557e-03 2.63727680e-03 2.67287206e-03 2.70894775e-03 2.74551035e-03 + 2.78256644e-03 2.82012268e-03 2.85818580e-03 2.89676267e-03 2.93586021e-03 + 2.97548544e-03 3.01564550e-03 3.05634759e-03 3.09759904e-03 3.13940726e-03 + 3.18177977e-03 3.22472418e-03 3.26824820e-03 3.31235967e-03 3.35706651e-03 + 3.40237675e-03 3.44829855e-03 3.49484016e-03 3.54200993e-03 3.58981635e-03 + 3.63826802e-03 3.68737364e-03 3.73714203e-03 3.78758215e-03 3.83870305e-03 + 3.89051394e-03 3.94302411e-03 3.99624301e-03 4.05018021e-03 4.10484540e-03 + 4.16024840e-03 4.21639917e-03 4.27330781e-03 4.33098454e-03 4.38943974e-03 + 4.44868390e-03 4.50872768e-03 4.56958187e-03 4.63125741e-03 4.69376538e-03 + 4.75711702e-03 4.82132372e-03 4.88639701e-03 4.95234859e-03 5.01919032e-03 + 5.08693421e-03 5.15559244e-03 5.22517735e-03 5.29570145e-03 5.36717740e-03 + 5.43961807e-03 5.51303646e-03 5.58744578e-03 5.66285941e-03 5.73929089e-03 + 5.81675396e-03 5.89526255e-03 5.97483077e-03 6.05547291e-03 6.13720349e-03 + 6.22003718e-03 6.30398887e-03 6.38907366e-03 6.47530683e-03 6.56270389e-03 + 6.65128055e-03 6.74105273e-03 6.83203656e-03 6.92424839e-03 7.01770481e-03 + 7.11242260e-03 7.20841880e-03 7.30571066e-03 7.40431566e-03 7.50425153e-03 + 7.60553623e-03 7.70818798e-03 7.81222521e-03 7.91766662e-03 8.02453118e-03 + 8.13283809e-03 8.24260681e-03 8.35385708e-03 8.46660889e-03 8.58088250e-03 + 8.69669847e-03 8.81407760e-03 8.93304100e-03 9.05361004e-03 9.17580640e-03 + 9.29965204e-03 9.42516922e-03 9.55238051e-03 9.68130876e-03 9.81197715e-03 + 9.94440917e-03 1.00786286e-02 1.02146596e-02 1.03525267e-02 1.04922545e-02 + 1.06338682e-02 1.07773932e-02 1.09228555e-02 1.10702810e-02 1.12196963e-02 + 1.13711283e-02 1.15246041e-02 1.16801514e-02 1.18377981e-02 1.19975726e-02 + 1.21595036e-02 1.23236201e-02 1.24899517e-02 1.26585283e-02 1.28293801e-02 + 1.30025380e-02 1.31780329e-02 1.33558965e-02 1.35361607e-02 1.37188580e-02 + 1.39040211e-02 1.40916833e-02 1.42818784e-02 1.44746406e-02 1.46700045e-02 + 1.48680052e-02 1.50686783e-02 1.52720599e-02 1.54781865e-02 1.56870952e-02 + 1.58988236e-02 1.61134096e-02 1.63308919e-02 1.65513096e-02 1.67747022e-02 + 1.70011100e-02 1.72305736e-02 1.74631342e-02 1.76988337e-02 1.79377144e-02 + 1.81798193e-02 1.84251919e-02 1.86738763e-02 1.89259172e-02 1.91813598e-02 + 1.94402502e-02 1.97026348e-02 1.99685608e-02 2.02380760e-02 2.05112288e-02 + 2.07880684e-02 2.10686444e-02 2.13530074e-02 2.16412084e-02 2.19332993e-02 + 2.22293325e-02 2.25293613e-02 2.28334396e-02 2.31416219e-02 2.34539639e-02 + 2.37705215e-02 2.40913516e-02 2.44165120e-02 2.47460611e-02 2.50800581e-02 + 2.54185630e-02 2.57616368e-02 2.61093410e-02 2.64617381e-02 2.68188916e-02 + 2.71808655e-02 2.75477250e-02 2.79195360e-02 2.82963653e-02 2.86782807e-02 + 2.90653508e-02 2.94576451e-02 2.98552342e-02 3.02581896e-02 3.06665837e-02 + 3.10804898e-02 3.14999825e-02 3.19251370e-02 3.23560298e-02 3.27927384e-02 + 3.32353412e-02 3.36839178e-02 3.41385488e-02 3.45993160e-02 3.50663021e-02 + 3.55395912e-02 3.60192682e-02 3.65054194e-02 3.69981322e-02 3.74974951e-02 + 3.80035979e-02 3.85165315e-02 3.90363882e-02 3.95632614e-02 4.00972458e-02 + 4.06384374e-02 4.11869334e-02 4.17428325e-02 4.23062345e-02 4.28772407e-02 + 4.34559538e-02 4.40424778e-02 4.46369181e-02 4.52393815e-02 4.58499764e-02 + 4.64688124e-02 4.70960009e-02 4.77316545e-02 4.83758875e-02 4.90288157e-02 + 4.96905564e-02 5.03612287e-02 5.10409530e-02 5.17298515e-02 5.24280481e-02 + 5.31356682e-02 5.38528390e-02 5.45796895e-02 5.53163503e-02 5.60629537e-02 + 5.68196341e-02 5.75865273e-02 5.83637713e-02 5.91515058e-02 5.99498722e-02 + 6.07590142e-02 6.15790772e-02 6.24102085e-02 6.32525576e-02 6.41062759e-02 + 6.49715168e-02 6.58484358e-02 6.67371905e-02 6.76379408e-02 6.85508485e-02 + 6.94760777e-02 7.04137946e-02 7.13641679e-02 7.23273684e-02 7.33035692e-02 + 7.42929457e-02 7.52956758e-02 7.63119398e-02 7.73419202e-02 7.83858022e-02 + 7.94437736e-02 8.05160243e-02 8.16027471e-02 8.27041375e-02 8.38203932e-02 + 8.49517151e-02 8.60983064e-02 8.72603732e-02 8.84381243e-02 8.96317716e-02 + 9.08415295e-02 9.20676154e-02 9.33102498e-02 9.45696561e-02 9.58460605e-02 + 9.71396924e-02 9.84507846e-02 9.97795725e-02 1.01126295e-01 1.02491194e-01 + 1.03874515e-01 1.05276507e-01 1.06697422e-01 1.08137514e-01 1.09597044e-01 + 1.11076272e-01 1.12575466e-01 1.14094895e-01 1.15634831e-01 1.17195551e-01 + 1.18777337e-01 1.20380472e-01 1.22005244e-01 1.23651946e-01 1.25320873e-01 + 1.27012326e-01 1.28726608e-01 1.30464028e-01 1.32224898e-01 1.34009535e-01 + 1.35818258e-01 1.37651394e-01 1.39509271e-01 1.41392225e-01 1.43300592e-01 + 1.45234717e-01 1.47194946e-01 1.49181633e-01 1.51195134e-01 1.53235811e-01 + 1.55304031e-01 1.57400166e-01 1.59524592e-01 1.61677692e-01 1.63859852e-01 + 1.66071465e-01 1.68312927e-01 1.70584643e-01 1.72887020e-01 1.75220472e-01 + 1.77585418e-01 1.79982284e-01 1.82411501e-01 1.84873504e-01 1.87368738e-01 + 1.89897649e-01 1.92460693e-01 1.95058331e-01 1.97691028e-01 2.00359259e-01 + 2.03063503e-01 2.05804247e-01 2.08581982e-01 2.11397208e-01 2.14250431e-01 + 2.17142164e-01 2.20072926e-01 2.23043245e-01 2.26053655e-01 2.29104696e-01 + 2.32196916e-01 2.35330873e-01 2.38507128e-01 2.41726253e-01 2.44988826e-01 + 2.48295435e-01 2.51646672e-01 2.55043141e-01 2.58485452e-01 2.61974224e-01 + 2.65510084e-01 2.69093668e-01 2.72725618e-01 2.76406590e-01 2.80137243e-01 + 2.83918248e-01 2.87750286e-01 2.91634045e-01 2.95570223e-01 2.99559527e-01 + 3.03602675e-01 3.07700393e-01 3.11853418e-01 3.16062496e-01 3.20328384e-01 + 3.24651848e-01 3.29033667e-01 3.33474626e-01 3.37975525e-01 3.42537173e-01 + 3.47160389e-01 3.51846004e-01 3.56594862e-01 3.61407814e-01 3.66285727e-01 + 3.71229476e-01 3.76239952e-01 3.81318053e-01 3.86464694e-01 3.91680799e-01 + 3.96967305e-01 4.02325164e-01 4.07755337e-01 4.13258801e-01 4.18836545e-01 + 4.24489572e-01 4.30218897e-01 4.36025552e-01 4.41910578e-01 4.47875035e-01 + 4.53919993e-01 4.60046541e-01 4.66255778e-01 4.72548821e-01 4.78926801e-01 + 4.85390865e-01 4.91942174e-01 4.98581905e-01 5.05311254e-01 5.12131428e-01 + 5.19043653e-01 5.26049173e-01 5.33149246e-01 5.40345149e-01 5.47638174e-01 + 5.55029634e-01 5.62520856e-01 5.70113186e-01 5.77807990e-01 5.85606651e-01 + 5.93510570e-01 6.01521168e-01 6.09639885e-01 6.17868180e-01 6.26207532e-01 + 6.34659440e-01 6.43225423e-01 6.51907022e-01 6.60705795e-01 6.69623325e-01 + 6.78661216e-01 6.87821090e-01 6.97104595e-01 7.06513399e-01 7.16049193e-01 + 7.25713692e-01 7.35508633e-01 7.45435775e-01 7.55496904e-01 7.65693828e-01 + 7.76028379e-01 7.86502415e-01 7.97117820e-01 8.07876500e-01 8.18780390e-01 + 8.29831449e-01 8.41031665e-01 8.52383049e-01 8.63887643e-01 8.75547514e-01 + 8.87364758e-01 8.99341499e-01 9.11479889e-01 9.23782112e-01 9.36250377e-01 + 9.48886926e-01 9.61694030e-01 9.74673991e-01 9.87829143e-01 1.00116185e+00 + 1.01467451e+00 1.02836954e+00 1.04224942e+00 1.05631664e+00 1.07057372e+00 + 1.08502323e+00 1.09966776e+00 1.11450995e+00 1.12955246e+00 1.14479801e+00 + 1.16024932e+00 1.17590918e+00 1.19178039e+00 1.20786583e+00 1.22416836e+00 + 1.24069093e+00 1.25743651e+00 1.27440810e+00 1.29160876e+00 1.30904157e+00 + 1.32670967e+00 1.34461624e+00 1.36276449e+00 1.38115769e+00 1.39979915e+00 + 1.41869220e+00 1.43784026e+00 1.45724675e+00 1.47691518e+00 1.49684907e+00 + 1.51705200e+00 1.53752762e+00 1.55827959e+00 1.57931165e+00 1.60062758e+00 + 1.62223122e+00 1.64412643e+00 1.66631717e+00 1.68880741e+00 1.71160120e+00 + 1.73470264e+00 1.75811589e+00 1.78184513e+00 1.80589465e+00 1.83026877e+00 + 1.85497187e+00 1.88000838e+00 1.90538281e+00 1.93109971e+00 1.95716372e+00 + 1.98357951e+00 2.01035184e+00 2.03748551e+00 2.06498540e+00 2.09285646e+00 + 2.12110369e+00 2.14973218e+00 2.17874706e+00 2.20815356e+00 2.23795696e+00 + 2.26816261e+00 2.29877594e+00 2.32980247e+00 2.36124776e+00 2.39311746e+00 + 2.42541731e+00 2.45815311e+00 2.49133074e+00 2.52495618e+00 2.55903545e+00 + 2.59357469e+00 2.62858010e+00 2.66405799e+00 2.70001472e+00 2.73645675e+00 + 2.77339064e+00 2.81082303e+00 2.84876064e+00 2.88721029e+00 2.92617890e+00 + 2.96567347e+00 3.00570109e+00 3.04626897e+00 3.08738439e+00 3.12905474e+00 + 3.17128752e+00 3.21409031e+00 3.25747081e+00 3.30143682e+00 3.34599623e+00 + 3.39115706e+00 3.43692743e+00 3.48331556e+00 3.53032979e+00 3.57797856e+00 + 3.62627045e+00 3.67521414e+00 3.72481842e+00 3.77509220e+00 3.82604453e+00 + 3.87768456e+00 3.93002158e+00 3.98306499e+00 4.03682432e+00 4.09130924e+00 + 4.14652955e+00 4.20249516e+00 4.25921613e+00 4.31670267e+00 4.37496510e+00 + 4.43401390e+00 4.49385968e+00 4.55451320e+00 4.61598536e+00 4.67828720e+00 + 4.74142993e+00 4.80542490e+00 4.87028361e+00 4.93601771e+00 5.00263902e+00 + 5.07015952e+00 5.13859134e+00 5.20794679e+00 5.27823832e+00 5.34947858e+00 + 5.42168036e+00 5.49485665e+00 5.56902060e+00 5.64418554e+00 5.72036498e+00 + 5.79757261e+00 5.87582231e+00 5.95512814e+00 6.03550436e+00 6.11696542e+00 + 6.19952596e+00 6.28320081e+00 6.36800502e+00 6.45395384e+00 6.54106270e+00 + 6.62934727e+00 6.71882341e+00 6.80950721e+00 6.90141496e+00 6.99456320e+00 + 7.08896865e+00 7.18464829e+00 7.28161932e+00 7.37989916e+00 7.47950548e+00 + 7.58045619e+00 7.68276943e+00 7.78646358e+00 7.89155730e+00 7.99806946e+00 + 8.10601921e+00 8.21542596e+00 8.32630937e+00 8.43868936e+00 8.55258615e+00 + 8.66802020e+00 8.78501227e+00 8.90358337e+00 9.02375482e+00 9.14554822e+00 + 9.26898547e+00 9.39408875e+00 9.52088054e+00 9.64938364e+00 9.77962114e+00 + 9.91161645e+00 1.00453933e+01 1.01809757e+01 1.03183881e+01 1.04576552e+01 + 1.05988019e+01 1.07418537e+01 1.08868362e+01 1.10337756e+01 1.11826982e+01 + 1.13336308e+01 1.14866005e+01 1.16416349e+01 1.17987618e+01 1.19580094e+01 + 1.21194064e+01 1.22829817e+01 1.24487648e+01 1.26167855e+01 1.27870739e+01 + 1.29596608e+01 1.31345770e+01 1.33118541e+01 1.34915238e+01 1.36736186e+01 + 1.38581711e+01 1.40452145e+01 1.42347825e+01 1.44269090e+01 1.46216286e+01 + 1.48189764e+01 1.50189878e+01 1.52216987e+01 1.54271456e+01 1.56353654e+01 + 1.58463956e+01 1.60602740e+01 1.62770391e+01 1.64967299e+01 1.67193859e+01 + 1.69450471e+01 1.71737540e+01 1.74055477e+01 1.76404700e+01 1.78785630e+01 + 1.81198695e+01 1.83644330e+01 1.86122973e+01 1.88635070e+01 1.91181073e+01 + 1.93761439e+01 1.96376633e+01 1.99027124e+01 2.01713388e+01 2.04435909e+01 + 2.07195175e+01 2.09991684e+01 2.12825937e+01 2.15698443e+01 2.18609720e+01 + 2.21560290e+01 2.24550684e+01 2.27581439e+01 2.30653100e+01 2.33766220e+01 + 2.36921357e+01 2.40119079e+01 2.43359960e+01 2.46644584e+01 2.49973540e+01 + 2.53347427e+01 2.56766851e+01 2.60232427e+01 2.63744778e+01 2.67304535e+01 + 2.70912338e+01 2.74568835e+01 2.78274684e+01 2.82030551e+01 2.85837111e+01 + 2.89695047e+01 2.93605055e+01 2.97567835e+01 3.01584101e+01 3.05654574e+01 + 3.09779987e+01 3.13961080e+01 3.18198605e+01 3.22493324e+01 3.26846009e+01 + 3.31257442e+01 3.35728416e+01 3.40259734e+01 3.44852212e+01 3.49506674e+01 + 3.54223957e+01 3.59004909e+01 3.63850390e+01 3.68761270e+01 3.73738432e+01 + 3.78782771e+01 3.83895193e+01 3.89076617e+01 3.94327975e+01 3.99650210e+01 + 4.05044279e+01 4.10511152e+01 4.16051812e+01 4.21667253e+01 4.27358486e+01 + 4.33126533e+01 4.38972432e+01 4.44897232e+01 4.50902000e+01 4.56987813e+01 + 4.63155767e+01 4.69406969e+01 4.75742544e+01 4.82163629e+01 4.88671380e+01 + 4.95266966e+01 5.01951573e+01 5.08726401e+01 5.15592669e+01 5.22551611e+01 + 5.29604478e+01 5.36752537e+01 5.43997073e+01 5.51339389e+01 5.58780803e+01 + 5.66322655e+01 5.73966298e+01 5.81713107e+01 5.89564475e+01 5.97521813e+01 + 6.05586551e+01 6.13760138e+01 6.22044044e+01 6.30439758e+01 6.38948788e+01 + 6.47572664e+01 6.56312937e+01 6.65171177e+01 6.74148977e+01 6.83247950e+01 + 6.92469731e+01 7.01815978e+01 7.11288372e+01 7.20888614e+01 7.30618430e+01 + 7.40479570e+01 7.50473805e+01 7.60602932e+01 7.70868772e+01 7.81273169e+01 + 7.91817995e+01 8.02505143e+01 8.13336536e+01 8.24314120e+01 8.35439868e+01 + 8.46715780e+01 8.58143883e+01 8.69726230e+01 8.81464904e+01 8.93362015e+01 + 9.05419701e+01 9.17640129e+01 9.30025496e+01 9.42578028e+01 9.55299981e+01 + 9.68193642e+01 9.81261329e+01 9.94505390e+01 1.00792821e+02 1.02153219e+02 + 1.03531978e+02 1.04929347e+02 1.06345576e+02 1.07780920e+02 1.09235636e+02 + 1.10709987e+02 1.12204237e+02 1.13718655e+02 1.15253513e+02 1.16809087e+02 + 1.18385656e+02 1.19983505e+02 1.21602919e+02 1.23244191e+02 1.24907615e+02 + 1.26593490e+02 1.28302119e+02 1.30033810e+02 1.31788873e+02 1.33567624e+02 + 1.35370383e+02 1.37197474e+02 1.39049225e+02 1.40925969e+02 1.42828044e+02 + 1.44755790e+02 1.46709556e+02 1.48689691e+02 1.50696552e+02 1.52730500e+02 + 1.54791900e+02 1.56881123e+02 1.58998544e+02 1.61144543e+02 1.63319507e+02 + 1.65523827e+02 1.67757898e+02 1.70022122e+02 1.72316907e+02 1.74642664e+02 + 1.76999812e+02 1.79388774e+02 1.81809980e+02 1.84263865e+02 1.86750870e+02 + 1.89271442e+02 1.91826034e+02 1.94415106e+02 1.97039122e+02 1.99698554e+02 + 2.02393881e+02 2.05125586e+02 2.07894161e+02 2.10700104e+02 2.13543918e+02 + 2.16426115e+02 2.19347213e+02 2.22307737e+02 2.25308219e+02 2.28349199e+02 + 2.31431223e+02 2.34554845e+02 2.37720626e+02 2.40929135e+02 2.44180950e+02 + 2.47476655e+02 2.50816841e+02 2.54202110e+02 2.57633070e+02 2.61110337e+02 + 2.64634537e+02 2.68206303e+02 2.71826277e+02 2.75495110e+02 2.79213461e+02 + 2.82981999e+02 2.86801400e+02 2.90672351e+02 2.94595549e+02 2.98571698e+02 + 3.02601513e+02 3.06685719e+02 3.10825049e+02 3.15020247e+02 3.19272068e+02 + 3.23581275e+02 3.27948644e+02 3.32374959e+02 3.36861016e+02 3.41407621e+02 + 3.46015592e+02 3.50685756e+02 3.55418953e+02 3.60216034e+02 3.65077861e+02 + 3.70005309e+02 3.74999261e+02 3.80060618e+02 3.85190287e+02 3.90389191e+02 + 3.95658264e+02 4.00998455e+02 4.06410721e+02 4.11896037e+02 4.17455388e+02 + 4.23089773e+02 4.28800206e+02 4.34587712e+02 4.40453332e+02 4.46398120e+02 + 4.52423145e+02 4.58529489e+02 4.64718251e+02 4.70990542e+02 4.77347490e+02 + 4.83790238e+02 4.90319943e+02 4.96937780e+02 5.03644937e+02 5.10442621e+02 + 5.17332053e+02 5.24314471e+02 5.31391131e+02 5.38563305e+02 5.45832281e+02 + 5.53199366e+02 5.60665885e+02 5.68233179e+02 5.75902608e+02 5.83675552e+02 + 5.91553407e+02 5.99537589e+02 6.07629534e+02 6.15830695e+02 6.24142548e+02 + 6.32566585e+02 6.41104321e+02 6.49757290e+02 6.58527049e+02 6.67415173e+02 + 6.76423260e+02 6.85552928e+02 6.94805820e+02 7.04183597e+02 7.13687947e+02 + 7.23320576e+02 7.33083216e+02 7.42977623e+02 7.53005574e+02 7.63168873e+02 + 7.73469345e+02 7.83908842e+02 7.94489241e+02 8.05212443e+02 8.16080377e+02 + 8.27094994e+02 8.38258275e+02 8.49572227e+02 8.61038884e+02 8.72660305e+02 + 8.84438580e+02 8.96375827e+02 9.08474190e+02 9.20735844e+02 9.33162994e+02 + 9.45757873e+02 9.58522744e+02 9.71459903e+02 9.84571674e+02 9.97860414e+02 + 1.01132851e+03 1.02497839e+03 1.03881250e+03 1.05283333e+03 1.06704339e+03 + 1.08144525e+03 1.09604149e+03 1.11083474e+03 1.12582765e+03 1.14102292e+03 + 1.15642328e+03 1.17203149e+03 1.18785037e+03 1.20388276e+03 1.22013154e+03 + 1.23659963e+03 1.25328998e+03 1.27020561e+03 1.28734954e+03 1.30472487e+03 + 1.32233471e+03 1.34018223e+03 1.35827064e+03 1.37660318e+03 1.39518316e+03 + 1.41401392e+03 1.43309883e+03 1.45244133e+03 1.47204490e+03 1.49191305e+03 + 1.51204937e+03 1.53245746e+03 1.55314100e+03 1.57410371e+03 1.59534935e+03 + 1.61688174e+03 1.63870475e+03 1.66082231e+03 1.68323839e+03 1.70595702e+03 + 1.72898228e+03 1.75231832e+03 1.77596931e+03 1.79993953e+03 1.82423327e+03 + 1.84885490e+03 1.87380885e+03 1.89909961e+03 1.92473171e+03 1.95070977e+03 + 1.97703845e+03 2.00372249e+03 2.03076669e+03 2.05817590e+03 2.08595505e+03 + 2.11410913e+03 2.14264321e+03 2.17156242e+03 2.20087194e+03 2.23057706e+03 + 2.26068311e+03 2.29119549e+03 2.32211970e+03 2.35346130e+03 2.38522591e+03 + 2.41741924e+03 2.45004709e+03 2.48311532e+03 2.51662987e+03 2.55059676e+03 + 2.58502211e+03 2.61991209e+03 2.65527298e+03 2.69111114e+03 2.72743300e+03 + 2.76424510e+03 2.80155405e+03 2.83936656e+03 2.87768942e+03 2.91652952e+03 + 2.95589385e+03 2.99578948e+03 3.03622358e+03 3.07720342e+03 3.11873636e+03 + 3.16082987e+03 3.20349152e+03 3.24672896e+03 3.29054999e+03 3.33496246e+03 + 3.37997437e+03 3.42559381e+03 3.47182896e+03 3.51868816e+03 3.56617981e+03 + 3.61431245e+03 3.66309474e+03 3.71253544e+03 3.76264344e+03 3.81342775e+03 + 3.86489750e+03 3.91706193e+03 3.96993042e+03 4.02351247e+03 4.07781773e+03 + 4.13285593e+03 4.18863699e+03 4.24517093e+03 4.30246790e+03 4.36053820e+03 + 4.41939228e+03 4.47904072e+03 4.53949422e+03 4.60076367e+03 4.66286006e+03 + 4.72579458e+03 4.78957851e+03 4.85422334e+03 4.91974068e+03 4.98614230e+03 + 5.05344014e+03 5.12164630e+03 5.19077304e+03 5.26083278e+03 5.33183812e+03 + 5.40380181e+03 5.47673679e+03 5.55065618e+03 5.62557325e+03 5.70150148e+03 + 5.77845451e+03 5.85644617e+03 5.93549049e+03 6.01560166e+03 6.09679409e+03 + 6.17908238e+03 6.26248131e+03 6.34700587e+03 6.43267125e+03 6.51949286e+03 + 6.60748630e+03 6.69666739e+03 6.78705215e+03 6.87865683e+03 6.97149790e+03 + 7.06559204e+03 7.16095617e+03 7.25760742e+03 7.35556318e+03 7.45484104e+03 + 7.55545885e+03 7.65743470e+03 7.76078691e+03 7.86553407e+03 7.97169499e+03 + 8.07928877e+03 8.18833474e+03 8.29885250e+03 8.41086191e+03 8.52438311e+03 + 8.63943651e+03 8.75604278e+03 8.87422288e+03 8.99399805e+03 9.11538983e+03 + 9.23842003e+03 9.36311076e+03 9.48948445e+03 9.61756379e+03 9.74737182e+03 + 9.87893187e+03 1.00122676e+04 1.01474029e+04 1.02843622e+04 1.04231700e+04 + 1.05638512e+04 1.07064313e+04 1.08509357e+04 1.09973906e+04 1.11458221e+04 + 1.12962570e+04 1.14487223e+04 1.16032454e+04 1.17598541e+04 1.19185766e+04 + 1.20794414e+04 1.22424773e+04 1.24077137e+04 1.25751803e+04 1.27449072e+04 + 1.29169249e+04 1.30912644e+04 1.32679569e+04 1.34470341e+04 1.36285284e+04 + 1.38124724e+04 1.39988990e+04 1.41878418e+04 1.43793348e+04 1.45734123e+04 + 1.47701093e+04 1.49694611e+04 1.51715036e+04 1.53762730e+04 1.55838062e+04 + 1.57941404e+04 1.60073136e+04 1.62233639e+04 1.64423303e+04 1.66642520e+04 + 1.68891690e+04 1.71171217e+04 1.73481511e+04 1.75822987e+04 1.78196066e+04 + 1.80601174e+04 1.83038743e+04 1.85509213e+04 1.88013026e+04 1.90550634e+04 + 1.93122491e+04 1.95729061e+04 1.98370811e+04 2.01048217e+04 2.03761760e+04 + 2.06511928e+04 2.09299214e+04 2.12124121e+04 2.14987155e+04 2.17888832e+04 + 2.20829672e+04 2.23810205e+04 2.26830966e+04 2.29892498e+04 2.32995352e+04 + 2.36140084e+04 2.39327261e+04 2.42557456e+04 2.45831248e+04 2.49149226e+04 + 2.52511988e+04 2.55920136e+04 2.59374284e+04 2.62875052e+04 2.66423071e+04 + 2.70018976e+04 2.73663416e+04 2.77357045e+04 2.81100526e+04 2.84894533e+04 + 2.88739748e+04 2.92636861e+04 2.96586574e+04 3.00589596e+04 3.04646647e+04 + 3.08758455e+04 3.12925761e+04 3.17149312e+04 3.21429869e+04 3.25768200e+04 + 3.30165086e+04 3.34621316e+04 3.39137692e+04 3.43715026e+04 3.48354139e+04 + 3.53055867e+04 3.57821053e+04 3.62650555e+04 3.67545241e+04 3.72505991e+04 + 3.77533695e+04 3.82629258e+04 3.87793596e+04 3.93027637e+04 3.98332322e+04 + 4.03708604e+04 4.09157449e+04 4.14679838e+04 4.20276762e+04 4.25949227e+04 + 4.31698254e+04 4.37524875e+04 4.43430137e+04 4.49415103e+04 4.55480848e+04 + 4.61628462e+04 4.67859051e+04 4.74173733e+04 4.80573645e+04 4.87059936e+04 + 4.93633772e+04 5.00296335e+04 5.07048823e+04 5.13892449e+04 5.20828443e+04 + 5.27858052e+04 5.34982540e+04 5.42203186e+04 5.49521290e+04 5.56938166e+04 + 5.64455147e+04 5.72073585e+04 5.79794848e+04 5.87620325e+04 5.95551423e+04 + 6.03589566e+04 6.11736200e+04 6.19992789e+04 6.28360817e+04 6.36841788e+04 + 6.45437226e+04 6.54148677e+04 6.62977706e+04 6.71925901e+04 6.80994869e+04 + 6.90186240e+04 6.99501667e+04 7.08942825e+04 7.18511409e+04 7.28209140e+04 + 7.38037762e+04 7.47999040e+04 7.58094765e+04 7.68326752e+04 7.78696840e+04 + 7.89206893e+04 7.99858799e+04 8.10654474e+04 8.21595859e+04 8.32684918e+04 + 8.43923647e+04 8.55314064e+04 8.66858218e+04 8.78558182e+04 8.90416061e+04 + 9.02433986e+04 9.14614116e+04 9.26958640e+04 9.39469779e+04 9.52149780e+04 + 9.65000923e+04 9.78025518e+04 9.91225905e+04 1.00460446e+05 1.01816358e+05 + 1.03190571e+05 1.04583332e+05 1.05994890e+05 1.07425501e+05 1.08875420e+05 + 1.10344909e+05 1.11834232e+05 1.13343656e+05 1.14873452e+05 1.16423897e+05 + 1.17995267e+05 1.19587847e+05 1.21201921e+05 1.22837780e+05 1.24495719e+05 + 1.26176035e+05 1.27879030e+05 1.29605010e+05 1.31354286e+05 1.33127171e+05 + 1.34923985e+05 1.36745051e+05 1.38590696e+05 1.40461251e+05 1.42357053e+05 + 1.44278443e+05 1.46225766e+05 1.48199372e+05 1.50199615e+05 1.52226856e+05 + 1.54281458e+05 1.56363791e+05 1.58474229e+05 1.60613152e+05 1.62780944e+05 + 1.64977995e+05 1.67204699e+05 1.69461457e+05 1.71748674e+05 1.74066762e+05 + 1.76416136e+05 1.78797221e+05 1.81210443e+05 1.83656236e+05 1.86135040e+05 + 1.88647300e+05 1.91193468e+05 1.93774002e+05 1.96389365e+05 1.99040027e+05 + 2.01726466e+05 2.04449163e+05 2.07208608e+05 2.10005298e+05 2.12839735e+05 + 2.15712427e+05 2.18623893e+05 2.21574654e+05 2.24565242e+05 2.27596194e+05 + 2.30668054e+05 2.33781376e+05 2.36936717e+05 2.40134646e+05 2.43375738e+05 + 2.46660575e+05 2.49989747e+05 2.53363852e+05 2.56783498e+05 2.60249299e+05 + 2.63761877e+05 2.67321865e+05 2.70929902e+05 2.74586636e+05 2.78292726e+05 + 2.82048836e+05 2.85855642e+05 2.89713829e+05 2.93624090e+05 2.97587127e+05 + 3.01603654e+05 3.05674391e+05 3.09800071e+05 3.13981435e+05 3.18219235e+05 + 3.22514232e+05 3.26867199e+05 3.31278918e+05 3.35750182e+05 3.40281794e+05 + 3.44874569e+05 3.49529333e+05 3.54246922e+05 3.59028184e+05 3.63873979e+05 + 3.68785178e+05 3.73762662e+05 3.78807328e+05 3.83920082e+05 3.89101842e+05 + 3.94353540e+05 3.99676120e+05 4.05070540e+05 4.10537767e+05 4.16078785e+05 + 4.21694591e+05 4.27386193e+05 4.33154614e+05 4.39000892e+05 4.44926076e+05 + 4.50931233e+05 4.57017441e+05 4.63185794e+05 4.69437402e+05 4.75773387e+05 + 4.82194889e+05 4.88703062e+05 4.95299076e+05 5.01984116e+05 5.08759383e+05 + 5.15626097e+05 5.22585490e+05 5.29638814e+05 5.36787336e+05 5.44032342e+05 + 5.51375134e+05 5.58817031e+05 5.66359371e+05 5.74003510e+05 5.81750821e+05 + 5.89602698e+05 5.97560552e+05 6.05625813e+05 6.13799930e+05 6.22084373e+05 + 6.30480631e+05 6.38990213e+05 6.47614648e+05 6.56355488e+05 6.65214302e+05 + 6.74192684e+05 6.83292246e+05 6.92514626e+05 7.01861479e+05 7.11334487e+05 + 7.20935351e+05 7.30665798e+05 7.40527577e+05 7.50522460e+05 7.60652244e+05 + 7.70918749e+05 7.81323821e+05 7.91869330e+05 8.02557172e+05 8.13389267e+05 + 8.24367562e+05 8.35494032e+05 8.46770675e+05 8.58199518e+05 8.69782617e+05 + 8.81522052e+05 8.93419934e+05 9.05478402e+05 9.17699622e+05 9.30085792e+05 + 9.42639138e+05 9.55361916e+05 9.68256413e+05 9.81324947e+05 9.94569866e+05 + 1.00799355e+06 1.02159842e+06 1.03538691e+06 1.04936150e+06 1.06352471e+06 + 1.07787907e+06 1.09242718e+06 1.10717165e+06 1.12211511e+06 1.13726028e+06 + 1.15260985e+06 1.16816660e+06 1.18393331e+06 1.19991283e+06 1.21610803e+06 + 1.23252181e+06 1.24915713e+06 1.26601697e+06 1.28310437e+06 1.30042240e+06 + 1.31797417e+06 1.33576284e+06 1.35379160e+06 1.37206369e+06 1.39058240e+06 + 1.40935106e+06 1.42837304e+06 1.44765175e+06 1.46719067e+06 1.48699331e+06 + 1.50706323e+06 1.52740402e+06 1.54801936e+06 1.56891294e+06 1.59008852e+06 + 1.61154991e+06 1.63330096e+06 1.65534558e+06 1.67768774e+06 1.70033145e+06 + 1.72328078e+06 1.74653986e+06 1.77011287e+06 1.79400404e+06 1.81821767e+06 + 1.84275811e+06 1.86762977e+06 1.89283713e+06 1.91838471e+06 1.94427710e+06 + 1.51514411e-06 1.53559398e-06 1.55631985e-06 1.57732546e-06 1.59861459e-06 + 1.62019105e-06 1.64205873e-06 1.66422156e-06 1.68668352e-06 1.70944864e-06 + 1.73252103e-06 1.75590483e-06 1.77960423e-06 1.80362351e-06 1.82796697e-06 + 1.85263900e-06 1.87764402e-06 1.90298654e-06 1.92867110e-06 1.95470233e-06 + 1.98108490e-06 2.00782356e-06 2.03492310e-06 2.06238841e-06 2.09022442e-06 + 2.11843613e-06 2.14702861e-06 2.17600701e-06 2.20537652e-06 2.23514243e-06 + 2.26531010e-06 2.29588494e-06 2.32687244e-06 2.35827818e-06 2.39010781e-06 + 2.42236703e-06 2.45506166e-06 2.48819757e-06 2.52178072e-06 2.55581713e-06 + 2.59031293e-06 2.62527433e-06 2.66070759e-06 2.69661910e-06 2.73301530e-06 + 2.76990274e-06 2.80728805e-06 2.84517795e-06 2.88357925e-06 2.92249885e-06 + 2.96194375e-06 3.00192104e-06 3.04243789e-06 3.08350160e-06 3.12511955e-06 + 3.16729922e-06 3.21004818e-06 3.25337412e-06 3.29728483e-06 3.34178821e-06 + 3.38689225e-06 3.43260505e-06 3.47893484e-06 3.52588994e-06 3.57347879e-06 + 3.62170995e-06 3.67059208e-06 3.72013398e-06 3.77034453e-06 3.82123279e-06 + 3.87280787e-06 3.92507907e-06 3.97805577e-06 4.03174749e-06 4.08616389e-06 + 4.14131475e-06 4.19720997e-06 4.25385962e-06 4.31127386e-06 4.36946302e-06 + 4.42843756e-06 4.48820807e-06 4.54878531e-06 4.61018016e-06 4.67240365e-06 + 4.73546697e-06 4.79938146e-06 4.86415859e-06 4.92981003e-06 4.99634755e-06 + 5.06378314e-06 5.13212890e-06 5.20139712e-06 5.27160025e-06 5.34275092e-06 + 5.41486190e-06 5.48794616e-06 5.56201684e-06 5.63708725e-06 5.71317088e-06 + 5.79028141e-06 5.86843270e-06 5.94763880e-06 6.02791394e-06 6.10927255e-06 + 6.19172925e-06 6.27529887e-06 6.35999643e-06 6.44583715e-06 6.53283646e-06 + 6.62101000e-06 6.71037362e-06 6.80094337e-06 6.89273554e-06 6.98576663e-06 + 7.08005335e-06 7.17561266e-06 7.27246174e-06 7.37061798e-06 7.47009904e-06 + 7.57092278e-06 7.67310735e-06 7.77667110e-06 7.88163264e-06 7.98801085e-06 + 8.09582484e-06 8.20509399e-06 8.31583795e-06 8.42807662e-06 8.54183017e-06 + 8.65711905e-06 8.77396398e-06 8.89238596e-06 9.01240628e-06 9.13404651e-06 + 9.25732852e-06 9.38227446e-06 9.50890680e-06 9.63724829e-06 9.76732200e-06 + 9.89915131e-06 1.00327599e-05 1.01681718e-05 1.03054114e-05 1.04445033e-05 + 1.05854725e-05 1.07283444e-05 1.08731446e-05 1.10198992e-05 1.11686345e-05 + 1.13193773e-05 1.14721546e-05 1.16269940e-05 1.17839233e-05 1.19429706e-05 + 1.21041646e-05 1.22675342e-05 1.24331089e-05 1.26009182e-05 1.27709925e-05 + 1.29433623e-05 1.31180586e-05 1.32951127e-05 1.34745565e-05 1.36564223e-05 + 1.38407427e-05 1.40275509e-05 1.42168804e-05 1.44087653e-05 1.46032400e-05 + 1.48003396e-05 1.50000995e-05 1.52025554e-05 1.54077440e-05 1.56157019e-05 + 1.58264667e-05 1.60400761e-05 1.62565686e-05 1.64759832e-05 1.66983591e-05 + 1.69237365e-05 1.71521557e-05 1.73836580e-05 1.76182848e-05 1.78560784e-05 + 1.80970814e-05 1.83413373e-05 1.85888899e-05 1.88397837e-05 1.90940638e-05 + 1.93517759e-05 1.96129664e-05 1.98776821e-05 2.01459707e-05 2.04178804e-05 + 2.06934601e-05 2.09727592e-05 2.12558280e-05 2.15427174e-05 2.18334790e-05 + 2.21281649e-05 2.24268282e-05 2.27295226e-05 2.30363024e-05 2.33472229e-05 + 2.36623398e-05 2.39817098e-05 2.43053904e-05 2.46334396e-05 2.49659166e-05 + 2.53028810e-05 2.56443934e-05 2.59905151e-05 2.63413085e-05 2.66968365e-05 + 2.70571631e-05 2.74223530e-05 2.77924718e-05 2.81675861e-05 2.85477634e-05 + 2.89330718e-05 2.93235808e-05 2.97193605e-05 3.01204820e-05 3.05270174e-05 + 3.09390399e-05 3.13566233e-05 3.17798429e-05 3.22087747e-05 3.26434958e-05 + 3.30840843e-05 3.35306194e-05 3.39831813e-05 3.44418515e-05 3.49067124e-05 + 3.53778474e-05 3.58553414e-05 3.63392801e-05 3.68297505e-05 3.73268407e-05 + 3.78306402e-05 3.83412395e-05 3.88587303e-05 3.93832056e-05 3.99147598e-05 + 4.04534884e-05 4.09994881e-05 4.15528573e-05 4.21136952e-05 4.26821027e-05 + 4.32581821e-05 4.38420367e-05 4.44337716e-05 4.50334932e-05 4.56413092e-05 + 4.62573288e-05 4.68816629e-05 4.75144236e-05 4.81557246e-05 4.88056813e-05 + 4.94644104e-05 5.01320304e-05 5.08086612e-05 5.14944245e-05 5.21894435e-05 + 5.28938432e-05 5.36077501e-05 5.43312927e-05 5.50646008e-05 5.58078064e-05 + 5.65610431e-05 5.73244461e-05 5.80981528e-05 5.88823022e-05 5.96770352e-05 + 6.04824947e-05 6.12988255e-05 6.21261743e-05 6.29646898e-05 6.38145227e-05 + 6.46758258e-05 6.55487539e-05 6.64334638e-05 6.73301147e-05 6.82388677e-05 + 6.91598861e-05 7.00933354e-05 7.10393835e-05 7.19982003e-05 7.29699583e-05 + 7.39548321e-05 7.49529987e-05 7.59646376e-05 7.69899305e-05 7.80290617e-05 + 7.90822181e-05 8.01495889e-05 8.12313660e-05 8.23277438e-05 8.34389194e-05 + 8.45650925e-05 8.57064656e-05 8.68632437e-05 8.80356348e-05 8.92238497e-05 + 9.04281018e-05 9.16486078e-05 9.28855869e-05 9.41392614e-05 9.54098568e-05 + 9.66976013e-05 9.80027266e-05 9.93254670e-05 1.00666060e-04 1.02024748e-04 + 1.03401773e-04 1.04797385e-04 1.06211833e-04 1.07645371e-04 1.09098258e-04 + 1.10570755e-04 1.12063126e-04 1.13575639e-04 1.15108567e-04 1.16662184e-04 + 1.18236771e-04 1.19832610e-04 1.21449988e-04 1.23089195e-04 1.24750527e-04 + 1.26434282e-04 1.28140763e-04 1.29870275e-04 1.31623131e-04 1.33399646e-04 + 1.35200138e-04 1.37024931e-04 1.38874353e-04 1.40748737e-04 1.42648419e-04 + 1.44573741e-04 1.46525050e-04 1.48502695e-04 1.50507032e-04 1.52538422e-04 + 1.54597229e-04 1.56683824e-04 1.58798582e-04 1.60941883e-04 1.63114112e-04 + 1.65315659e-04 1.67546920e-04 1.69808297e-04 1.72100196e-04 1.74423028e-04 + 1.76777212e-04 1.79163169e-04 1.81581330e-04 1.84032129e-04 1.86516007e-04 + 1.89033409e-04 1.91584788e-04 1.94170603e-04 1.96791319e-04 1.99447407e-04 + 2.02139344e-04 2.04867614e-04 2.07632707e-04 2.10435121e-04 2.13275359e-04 + 2.16153931e-04 2.19071356e-04 2.22028156e-04 2.25024865e-04 2.28062020e-04 + 2.31140168e-04 2.34259861e-04 2.37421661e-04 2.40626136e-04 2.43873861e-04 + 2.47165421e-04 2.50501406e-04 2.53882418e-04 2.57309063e-04 2.60781957e-04 + 2.64301725e-04 2.67868999e-04 2.71484421e-04 2.75148639e-04 2.78862314e-04 + 2.82626112e-04 2.86440710e-04 2.90306793e-04 2.94225057e-04 2.98196206e-04 + 3.02220953e-04 3.06300022e-04 3.10434146e-04 3.14624068e-04 3.18870542e-04 + 3.23174330e-04 3.27536206e-04 3.31956954e-04 3.36437370e-04 3.40978257e-04 + 3.45580432e-04 3.50244723e-04 3.54971968e-04 3.59763016e-04 3.64618729e-04 + 3.69539979e-04 3.74527651e-04 3.79582642e-04 3.84705860e-04 3.89898226e-04 + 3.95160673e-04 4.00494147e-04 4.05899607e-04 4.11378024e-04 4.16930384e-04 + 4.22557683e-04 4.28260934e-04 4.34041162e-04 4.39899405e-04 4.45836717e-04 + 4.51854164e-04 4.57952829e-04 4.64133808e-04 4.70398211e-04 4.76747164e-04 + 4.83181809e-04 4.89703302e-04 4.96312816e-04 5.03011539e-04 5.09800673e-04 + 5.16681441e-04 5.23655078e-04 5.30722838e-04 5.37885992e-04 5.45145826e-04 + 5.52503646e-04 5.59960775e-04 5.67518552e-04 5.75178336e-04 5.82941505e-04 + 5.90809452e-04 5.98783593e-04 6.06865361e-04 6.15056208e-04 6.23357607e-04 + 6.31771050e-04 6.40298049e-04 6.48940137e-04 6.57698866e-04 6.66575812e-04 + 6.75572570e-04 6.84690757e-04 6.93932012e-04 7.03297995e-04 7.12790392e-04 + 7.22410907e-04 7.32161269e-04 7.42043233e-04 7.52058572e-04 7.62209089e-04 + 7.72496607e-04 7.82922975e-04 7.93490068e-04 8.04199785e-04 8.15054050e-04 + 8.26054815e-04 8.37204057e-04 8.48503780e-04 8.59956016e-04 8.71562821e-04 + 8.83326284e-04 8.95248518e-04 9.07331666e-04 9.19577900e-04 9.31989421e-04 + 9.44568460e-04 9.57317278e-04 9.70238166e-04 9.83333448e-04 9.96605476e-04 + 1.01005664e-03 1.02368935e-03 1.03750606e-03 1.05150925e-03 1.06570145e-03 + 1.08008519e-03 1.09466308e-03 1.10943772e-03 1.12441177e-03 1.13958793e-03 + 1.15496892e-03 1.17055751e-03 1.18635650e-03 1.20236872e-03 1.21859707e-03 + 1.23504444e-03 1.25171381e-03 1.26860816e-03 1.28573053e-03 1.30308401e-03 + 1.32067170e-03 1.33849678e-03 1.35656243e-03 1.37487193e-03 1.39342854e-03 + 1.41223561e-03 1.43129652e-03 1.45061470e-03 1.47019361e-03 1.49003678e-03 + 1.51014777e-03 1.53053020e-03 1.55118773e-03 1.57212407e-03 1.59334299e-03 + 1.61484830e-03 1.63664387e-03 1.65873361e-03 1.68112150e-03 1.70381156e-03 + 1.72680786e-03 1.75011455e-03 1.77373580e-03 1.79767587e-03 1.82193906e-03 + 1.84652973e-03 1.87145230e-03 1.89671124e-03 1.92231111e-03 1.94825650e-03 + 1.97455207e-03 2.00120255e-03 2.02821273e-03 2.05558747e-03 2.08333169e-03 + 2.11145037e-03 2.13994856e-03 2.16883140e-03 2.19810406e-03 2.22777182e-03 + 2.25784000e-03 2.28831402e-03 2.31919934e-03 2.35050151e-03 2.38222618e-03 + 2.41437903e-03 2.44696584e-03 2.47999248e-03 2.51346488e-03 2.54738906e-03 + 2.58177111e-03 2.61661721e-03 2.65193363e-03 2.68772672e-03 2.72400290e-03 + 2.76076870e-03 2.79803073e-03 2.83579568e-03 2.87407035e-03 2.91286161e-03 + 2.95217643e-03 2.99202189e-03 3.03240514e-03 3.07333344e-03 3.11481415e-03 + 3.15685472e-03 3.19946271e-03 3.24264578e-03 3.28641170e-03 3.33076832e-03 + 3.37572362e-03 3.42128568e-03 3.46746269e-03 3.51426295e-03 3.56169487e-03 + 3.60976698e-03 3.65848792e-03 3.70786645e-03 3.75791143e-03 3.80863187e-03 + 3.86003689e-03 3.91213571e-03 3.96493772e-03 4.01845239e-03 4.07268934e-03 + 4.12765833e-03 4.18336924e-03 4.23983207e-03 4.29705699e-03 4.35505426e-03 + 4.41383433e-03 4.47340774e-03 4.53378522e-03 4.59497761e-03 4.65699591e-03 + 4.71985128e-03 4.78355500e-03 4.84811852e-03 4.91355347e-03 4.97987158e-03 + 5.04708479e-03 5.11520517e-03 5.18424497e-03 5.25421660e-03 5.32513264e-03 + 5.39700583e-03 5.46984909e-03 5.54367551e-03 5.61849837e-03 5.69433110e-03 + 5.77118736e-03 5.84908093e-03 5.92802584e-03 6.00803626e-03 6.08912659e-03 + 6.17131138e-03 6.25460542e-03 6.33902369e-03 6.42458134e-03 6.51129376e-03 + 6.59917653e-03 6.68824546e-03 6.77851655e-03 6.87000603e-03 6.96273034e-03 + 7.05670614e-03 7.15195034e-03 7.24848004e-03 7.34631260e-03 7.44546561e-03 + 7.54595688e-03 7.64780448e-03 7.75102672e-03 7.85564214e-03 7.96166955e-03 + 8.06912802e-03 8.17803685e-03 8.28841561e-03 8.40028416e-03 8.51366260e-03 + 8.62857130e-03 8.74503092e-03 8.86306239e-03 8.98268694e-03 9.10392605e-03 + 9.22680152e-03 9.35133544e-03 9.47755019e-03 9.60546846e-03 9.73511324e-03 + 9.86650783e-03 9.99967585e-03 1.01346412e-02 1.02714283e-02 1.04100615e-02 + 1.05505658e-02 1.06929666e-02 1.08372893e-02 1.09835599e-02 1.11318048e-02 + 1.12820505e-02 1.14343240e-02 1.15886528e-02 1.17450646e-02 1.19035875e-02 + 1.20642499e-02 1.22270808e-02 1.23921094e-02 1.25593654e-02 1.27288789e-02 + 1.29006802e-02 1.30748004e-02 1.32512707e-02 1.34301228e-02 1.36113888e-02 + 1.37951014e-02 1.39812936e-02 1.41699987e-02 1.43612509e-02 1.45550843e-02 + 1.47515340e-02 1.49506351e-02 1.51524234e-02 1.53569353e-02 1.55642075e-02 + 1.57742773e-02 1.59871823e-02 1.62029609e-02 1.64216519e-02 1.66432945e-02 + 1.68679287e-02 1.70955947e-02 1.73263336e-02 1.75601867e-02 1.77971961e-02 + 1.80374044e-02 1.82808548e-02 1.85275911e-02 1.87776576e-02 1.90310992e-02 + 1.92879614e-02 1.95482906e-02 1.98121334e-02 2.00795373e-02 2.03505503e-02 + 2.06252212e-02 2.09035994e-02 2.11857347e-02 2.14716781e-02 2.17614808e-02 + 2.20551950e-02 2.23528734e-02 2.26545697e-02 2.29603378e-02 2.32702330e-02 + 2.35843107e-02 2.39026276e-02 2.42252408e-02 2.45522083e-02 2.48835889e-02 + 2.52194421e-02 2.55598283e-02 2.59048087e-02 2.62544453e-02 2.66088009e-02 + 2.69679393e-02 2.73319249e-02 2.77008232e-02 2.80747006e-02 2.84536242e-02 + 2.88376620e-02 2.92268833e-02 2.96213578e-02 3.00211566e-02 3.04263514e-02 + 3.08370152e-02 3.12532216e-02 3.16750456e-02 3.21025629e-02 3.25358505e-02 + 3.29749861e-02 3.34200487e-02 3.38711183e-02 3.43282759e-02 3.47916039e-02 + 3.52611853e-02 3.57371047e-02 3.62194475e-02 3.67083006e-02 3.72037516e-02 + 3.77058898e-02 3.82148053e-02 3.87305896e-02 3.92533354e-02 3.97831368e-02 + 4.03200888e-02 4.08642881e-02 4.14158324e-02 4.19748209e-02 4.25413541e-02 + 4.31155337e-02 4.36974630e-02 4.42872467e-02 4.48849906e-02 4.54908022e-02 + 4.61047905e-02 4.67270657e-02 4.73577398e-02 4.79969261e-02 4.86447395e-02 + 4.93012964e-02 4.99667148e-02 5.06411144e-02 5.13246163e-02 5.20173434e-02 + 5.27194202e-02 5.34309730e-02 5.41521296e-02 5.48830196e-02 5.56237744e-02 + 5.63745271e-02 5.71354128e-02 5.79065681e-02 5.86881317e-02 5.94802440e-02 + 6.02830474e-02 6.10966863e-02 6.19213068e-02 6.27570572e-02 6.36040877e-02 + 6.44625506e-02 6.53326001e-02 6.62143926e-02 6.71080867e-02 6.80138429e-02 + 6.89318241e-02 6.98621953e-02 7.08051237e-02 7.17607788e-02 7.27293323e-02 + 7.37109584e-02 7.47058334e-02 7.57141363e-02 7.67360482e-02 7.77717528e-02 + 7.88214363e-02 7.98852873e-02 8.09634971e-02 8.20562595e-02 8.31637709e-02 + 8.42862303e-02 8.54238396e-02 8.65768031e-02 8.77453282e-02 8.89296248e-02 + 9.01299058e-02 9.13463870e-02 9.25792870e-02 9.38288274e-02 9.50952329e-02 + 9.63787310e-02 9.76795524e-02 9.89979310e-02 1.00334104e-01 1.01688311e-01 + 1.03060795e-01 1.04451805e-01 1.05861588e-01 1.07290399e-01 1.08738495e-01 + 1.10206136e-01 1.11693586e-01 1.13201111e-01 1.14728984e-01 1.16277479e-01 + 1.17846873e-01 1.19437449e-01 1.21049494e-01 1.22683296e-01 1.24339149e-01 + 1.26017352e-01 1.27718205e-01 1.29442015e-01 1.31189090e-01 1.32959747e-01 + 1.34754301e-01 1.36573077e-01 1.38416400e-01 1.40284603e-01 1.42178021e-01 + 1.44096994e-01 1.46041868e-01 1.48012992e-01 1.50010719e-01 1.52035411e-01 + 1.54087429e-01 1.56167143e-01 1.58274927e-01 1.60411160e-01 1.62576226e-01 + 1.64770513e-01 1.66994417e-01 1.69248337e-01 1.71532678e-01 1.73847850e-01 + 1.76194270e-01 1.78572360e-01 1.80982547e-01 1.83425264e-01 1.85900951e-01 + 1.88410051e-01 1.90953017e-01 1.93530306e-01 1.96142380e-01 1.98789709e-01 + 2.01472769e-01 2.04192042e-01 2.06948017e-01 2.09741189e-01 2.12572061e-01 + 2.15441141e-01 2.18348945e-01 2.21295996e-01 2.24282822e-01 2.27309962e-01 + 2.30377959e-01 2.33487365e-01 2.36638739e-01 2.39832646e-01 2.43069662e-01 + 2.46350367e-01 2.49675352e-01 2.53045214e-01 2.56460560e-01 2.59922002e-01 + 2.63430163e-01 2.66985673e-01 2.70589173e-01 2.74241308e-01 2.77942737e-01 + 2.81694123e-01 2.85496142e-01 2.89349477e-01 2.93254820e-01 2.97212873e-01 + 3.01224348e-01 3.05289966e-01 3.09410457e-01 3.13586563e-01 3.17819033e-01 + 3.22108629e-01 3.26456121e-01 3.30862292e-01 3.35327932e-01 3.39853846e-01 + 3.44440845e-01 3.49089755e-01 3.53801411e-01 3.58576660e-01 3.63416361e-01 + 3.68321383e-01 3.73292608e-01 3.78330929e-01 3.83437252e-01 3.88612496e-01 + 3.93857590e-01 3.99173476e-01 4.04561111e-01 4.10021463e-01 4.15555512e-01 + 4.21164255e-01 4.26848699e-01 4.32609866e-01 4.38448791e-01 4.44366524e-01 + 4.50364128e-01 4.56442682e-01 4.62603278e-01 4.68847024e-01 4.75175041e-01 + 4.81588467e-01 4.88088455e-01 4.94676173e-01 5.01352806e-01 5.08119553e-01 + 5.14977630e-01 5.21928271e-01 5.28972724e-01 5.36112257e-01 5.43348151e-01 + 5.50681708e-01 5.58114246e-01 5.65647101e-01 5.73281626e-01 5.81019194e-01 + 5.88861197e-01 5.96809042e-01 6.04864160e-01 6.13027997e-01 6.21302021e-01 + 6.29687720e-01 6.38186600e-01 6.46800189e-01 6.55530036e-01 6.64377709e-01 + 6.73344799e-01 6.82432918e-01 6.91643699e-01 7.00978797e-01 7.10439891e-01 + 7.20028682e-01 7.29746892e-01 7.39596268e-01 7.49578581e-01 7.59695625e-01 + 7.69949219e-01 7.80341205e-01 7.90873452e-01 8.01547852e-01 8.12366325e-01 + 8.23330813e-01 8.34443290e-01 8.45705751e-01 8.57120221e-01 8.68688753e-01 + 8.80413424e-01 8.92296343e-01 9.04339645e-01 9.16545496e-01 9.28916089e-01 + 9.41453647e-01 9.54160425e-01 9.67038705e-01 9.80090803e-01 9.93319066e-01 + 1.00672587e+00 1.02031362e+00 1.03408477e+00 1.04804179e+00 1.06218719e+00 + 1.07652350e+00 1.09105331e+00 1.10577923e+00 1.12070391e+00 1.13583002e+00 + 1.15116029e+00 1.16669748e+00 1.18244437e+00 1.19840379e+00 1.21457862e+00 + 1.23097175e+00 1.24758615e+00 1.26442479e+00 1.28149070e+00 1.29878695e+00 + 1.31631665e+00 1.33408294e+00 1.35208903e+00 1.37033814e+00 1.38883356e+00 + 1.40757862e+00 1.42657667e+00 1.44583114e+00 1.46534549e+00 1.48512323e+00 + 1.50516790e+00 1.52548311e+00 1.54607252e+00 1.56693983e+00 1.58808878e+00 + 1.60952317e+00 1.63124687e+00 1.65326377e+00 1.67557783e+00 1.69819306e+00 + 1.72111354e+00 1.74434336e+00 1.76788672e+00 1.79174785e+00 1.81593103e+00 + 1.84044061e+00 1.86528099e+00 1.89045664e+00 1.91597209e+00 1.94183192e+00 + 1.96804078e+00 1.99460338e+00 2.02152449e+00 2.04880896e+00 2.07646169e+00 + 2.10448764e+00 2.13289186e+00 2.16167945e+00 2.19085559e+00 2.22042551e+00 + 2.25039454e+00 2.28076806e+00 2.31155154e+00 2.34275049e+00 2.37437054e+00 + 2.40641736e+00 2.43889672e+00 2.47181445e+00 2.50517647e+00 2.53898878e+00 + 2.57325745e+00 2.60798864e+00 2.64318860e+00 2.67886366e+00 2.71502022e+00 + 2.75166478e+00 2.78880393e+00 2.82644435e+00 2.86459281e+00 2.90325615e+00 + 2.94244133e+00 2.98215539e+00 3.02240547e+00 3.06319880e+00 3.10454272e+00 + 3.14644466e+00 3.18891215e+00 3.23195282e+00 3.27557441e+00 3.31978476e+00 + 3.36459182e+00 3.41000363e+00 3.45602837e+00 3.50267430e+00 3.54994981e+00 + 3.59786340e+00 3.64642368e+00 3.69563937e+00 3.74551933e+00 3.79607251e+00 + 3.84730801e+00 3.89923504e+00 3.95186292e+00 4.00520112e+00 4.05925923e+00 + 4.11404695e+00 4.16957414e+00 4.22585079e+00 4.28288699e+00 4.34069302e+00 + 4.39927925e+00 4.45865622e+00 4.51883459e+00 4.57982520e+00 4.64163899e+00 + 4.70428708e+00 4.76778073e+00 4.83213135e+00 4.89735051e+00 4.96344994e+00 + 5.03044150e+00 5.09833725e+00 5.16714939e+00 5.23689028e+00 5.30757246e+00 + 5.37920864e+00 5.45181169e+00 5.52539466e+00 5.59997078e+00 5.67555346e+00 + 5.75215627e+00 5.82979298e+00 5.90847756e+00 5.98822414e+00 6.06904706e+00 + 6.15096084e+00 6.23398021e+00 6.31812010e+00 6.40339561e+00 6.48982209e+00 + 6.57741507e+00 6.66619028e+00 6.75616369e+00 6.84735147e+00 6.93977001e+00 + 7.03343592e+00 7.12836604e+00 7.22457742e+00 7.32208737e+00 7.42091341e+00 + 7.52107330e+00 7.62258505e+00 7.72546690e+00 7.82973734e+00 7.93541512e+00 + 8.04251923e+00 8.15106892e+00 8.26108370e+00 8.37258335e+00 8.48558791e+00 + 8.60011769e+00 8.71619327e+00 8.83383553e+00 8.95306559e+00 9.07390491e+00 + 9.19637518e+00 9.32049844e+00 9.44629699e+00 9.57379343e+00 9.70301069e+00 + 9.83397200e+00 9.96670088e+00 1.01012212e+01 1.02375571e+01 1.03757332e+01 + 1.05157742e+01 1.06577054e+01 1.08015522e+01 1.09473405e+01 1.10950965e+01 + 1.12448467e+01 1.13966182e+01 1.15504380e+01 1.17063340e+01 1.18643341e+01 + 1.20244668e+01 1.21867607e+01 1.23512451e+01 1.25179496e+01 1.26869041e+01 + 1.28581389e+01 1.30316849e+01 1.32075732e+01 1.33858355e+01 1.35665038e+01 + 1.37496106e+01 1.39351888e+01 1.41232717e+01 1.43138932e+01 1.45070874e+01 + 1.47028892e+01 1.49013338e+01 1.51024567e+01 1.53062942e+01 1.55128829e+01 + 1.57222599e+01 1.59344629e+01 1.61495300e+01 1.63674998e+01 1.65884115e+01 + 1.68123049e+01 1.70392202e+01 1.72691982e+01 1.75022801e+01 1.77385080e+01 + 1.79779242e+01 1.82205718e+01 1.84664944e+01 1.87157363e+01 1.89683421e+01 + 1.92243574e+01 1.94838281e+01 1.97468008e+01 2.00133229e+01 2.02834423e+01 + 2.05572074e+01 2.08346676e+01 2.11158726e+01 2.14008730e+01 2.16897201e+01 + 2.19824657e+01 2.22791625e+01 2.25798639e+01 2.28846237e+01 2.31934970e+01 + 2.35065390e+01 2.38238062e+01 2.41453556e+01 2.44712449e+01 2.48015327e+01 + 2.51362784e+01 2.54755421e+01 2.58193849e+01 2.61678685e+01 2.65210556e+01 + 2.68790097e+01 2.72417950e+01 2.76094769e+01 2.79821213e+01 2.83597954e+01 + 2.87425669e+01 2.91305046e+01 2.95236783e+01 2.99221587e+01 3.03260174e+01 + 3.07353269e+01 3.11501609e+01 3.15705939e+01 3.19967014e+01 3.24285601e+01 + 3.28662476e+01 3.33098426e+01 3.37594247e+01 3.42150749e+01 3.46768749e+01 + 3.51449079e+01 3.56192579e+01 3.61000102e+01 3.65872511e+01 3.70810684e+01 + 3.75815507e+01 3.80887880e+01 3.86028714e+01 3.91238935e+01 3.96519477e+01 + 4.01871291e+01 4.07295339e+01 4.12792594e+01 4.18364046e+01 4.24010695e+01 + 4.29733558e+01 4.35533661e+01 4.41412049e+01 4.47369777e+01 4.53407916e+01 + 4.59527552e+01 4.65729784e+01 4.72015728e+01 4.78386513e+01 4.84843284e+01 + 4.91387202e+01 4.98019444e+01 5.04741200e+01 5.11553680e+01 5.18458108e+01 + 5.25455725e+01 5.32547788e+01 5.39735573e+01 5.47020371e+01 5.54403492e+01 + 5.61886263e+01 5.69470028e+01 5.77156152e+01 5.84946015e+01 5.92841017e+01 + 6.00842578e+01 6.08952136e+01 6.17171149e+01 6.25501093e+01 6.33943466e+01 + 6.42499786e+01 6.51171590e+01 6.59960438e+01 6.68867908e+01 6.77895602e+01 + 6.87045143e+01 6.96318175e+01 7.05716365e+01 7.15241402e+01 7.24894998e+01 + 7.34678888e+01 7.44594832e+01 7.54644611e+01 7.64830031e+01 7.75152924e+01 + 7.85615144e+01 7.96218573e+01 8.06965116e+01 8.17856705e+01 8.28895297e+01 + 8.40082878e+01 8.51421456e+01 8.62913071e+01 8.74559788e+01 8.86363701e+01 + 8.98326931e+01 9.10451628e+01 9.22739972e+01 9.35194171e+01 9.47816465e+01 + 9.60609121e+01 9.73574439e+01 9.86714750e+01 1.00003242e+02 1.01352983e+02 + 1.02720942e+02 1.04107364e+02 1.05512498e+02 1.06936598e+02 1.08379919e+02 + 1.09842720e+02 1.11325265e+02 1.12827819e+02 1.14350653e+02 1.15894041e+02 + 1.17458261e+02 1.19043592e+02 1.20650320e+02 1.22278735e+02 1.23929128e+02 + 1.25601797e+02 1.27297041e+02 1.29015166e+02 1.30756481e+02 1.32521298e+02 + 1.34309935e+02 1.36122713e+02 1.37959958e+02 1.39822000e+02 1.41709174e+02 + 1.43621820e+02 1.45560280e+02 1.47524903e+02 1.49516044e+02 1.51534058e+02 + 1.53579310e+02 1.55652166e+02 1.57752999e+02 1.59882188e+02 1.62040114e+02 + 1.64227166e+02 1.66443736e+02 1.68690223e+02 1.70967031e+02 1.73274569e+02 + 1.75613251e+02 1.77983499e+02 1.80385738e+02 1.82820400e+02 1.85287923e+02 + 1.87788750e+02 1.90323330e+02 1.92892119e+02 1.95495580e+02 1.98134179e+02 + 2.00808391e+02 2.03518697e+02 2.06265584e+02 2.09049546e+02 2.11871083e+02 + 2.14730702e+02 2.17628917e+02 2.20566249e+02 2.23543226e+02 2.26560384e+02 + 2.29618264e+02 2.32717416e+02 2.35858398e+02 2.39041773e+02 2.42268114e+02 + 2.45538001e+02 2.48852022e+02 2.52210771e+02 2.55614854e+02 2.59064882e+02 + 2.62561474e+02 2.66105260e+02 2.69696877e+02 2.73336969e+02 2.77026192e+02 + 2.80765207e+02 2.84554689e+02 2.88395317e+02 2.92287781e+02 2.96232783e+02 + 3.00231029e+02 3.04283240e+02 3.08390144e+02 3.12552478e+02 3.16770992e+02 + 3.21046442e+02 3.25379599e+02 3.29771239e+02 3.34222154e+02 3.38733142e+02 + 3.43305015e+02 3.47938595e+02 3.52634714e+02 3.57394216e+02 3.62217957e+02 + 3.67106805e+02 3.72061636e+02 3.77083343e+02 3.82172828e+02 3.87331006e+02 + 3.92558803e+02 3.97857160e+02 4.03227029e+02 4.08669374e+02 4.14185175e+02 + 4.19775422e+02 4.25441121e+02 4.31183290e+02 4.37002961e+02 4.42901179e+02 + 4.48879006e+02 4.54937515e+02 4.61077796e+02 4.67300952e+02 4.73608102e+02 + 4.80000379e+02 4.86478933e+02 4.93044927e+02 4.99699543e+02 5.06443976e+02 + 5.13279438e+02 5.20207158e+02 5.27228382e+02 5.34344371e+02 5.41556404e+02 + 5.48865778e+02 5.56273806e+02 5.63781821e+02 5.71391170e+02 5.79103223e+02 + 5.86919366e+02 5.94841002e+02 6.02869557e+02 6.11006473e+02 6.19253213e+02 + 6.27611259e+02 6.36082113e+02 6.44667298e+02 6.53368357e+02 6.62186855e+02 + 6.71124375e+02 6.80182525e+02 6.89362932e+02 6.98667247e+02 7.08097142e+02 + 7.17654312e+02 7.27340476e+02 7.37157373e+02 7.47106768e+02 7.57190450e+02 + 7.67410232e+02 7.77767949e+02 7.88265465e+02 7.98904665e+02 8.09687462e+02 + 8.20615795e+02 8.31691626e+02 8.42916949e+02 8.54293779e+02 8.65824161e+02 + 8.77510169e+02 8.89353903e+02 9.01357492e+02 9.13523092e+02 9.25852892e+02 + 9.38349106e+02 9.51013982e+02 9.63849795e+02 9.76858852e+02 9.90043493e+02 + 1.00340609e+03 1.01694903e+03 1.03067477e+03 1.04458576e+03 1.05868451e+03 + 1.07297355e+03 1.08745545e+03 1.10213281e+03 1.11700827e+03 1.13208451e+03 + 1.14736422e+03 1.16285017e+03 1.17854513e+03 1.19445193e+03 1.21057342e+03 + 1.22691250e+03 1.24347211e+03 1.26025522e+03 1.27726485e+03 1.29450407e+03 + 1.31197596e+03 1.32968367e+03 1.34763038e+03 1.36581931e+03 1.38425374e+03 + 1.40293698e+03 1.42187239e+03 1.44106337e+03 1.46051336e+03 1.48022588e+03 + 1.50020445e+03 1.52045267e+03 1.54097419e+03 1.56177268e+03 1.58285189e+03 + 1.60421560e+03 1.62586766e+03 1.64781196e+03 1.67005244e+03 1.69259310e+03 + 1.71543799e+03 1.73859121e+03 1.76205693e+03 1.78583938e+03 1.80994281e+03 + 1.83437156e+03 1.85913003e+03 1.88422266e+03 1.90965397e+03 1.93542853e+03 + 1.96155096e+03 1.98802597e+03 2.01485831e+03 2.04205280e+03 2.06961434e+03 + 2.09754787e+03 2.12585843e+03 2.15455109e+03 2.18363101e+03 2.21310343e+03 + 2.24297363e+03 2.27324699e+03 2.30392895e+03 2.33502503e+03 2.36654081e+03 + 2.39848195e+03 2.43085420e+03 2.46366339e+03 2.49691539e+03 2.53061620e+03 + 2.56477187e+03 2.59938853e+03 2.63447242e+03 2.67002983e+03 2.70606716e+03 + 2.74259088e+03 2.77960756e+03 2.81712386e+03 2.85514651e+03 2.89368236e+03 + 2.93273832e+03 2.97232142e+03 3.01243877e+03 3.05309759e+03 3.09430517e+03 + 3.13606893e+03 3.17839638e+03 3.22129512e+03 3.26477287e+03 3.30883743e+03 + 3.35349673e+03 3.39875879e+03 3.44463176e+03 3.49112387e+03 3.53824349e+03 + 3.58599907e+03 3.63439922e+03 3.68345262e+03 3.73316809e+03 3.78355457e+03 + 3.83462112e+03 3.88637691e+03 3.93883124e+03 3.99199356e+03 4.04587340e+03 + 4.10048045e+03 4.15582454e+03 4.21191561e+03 4.26876373e+03 4.32637913e+03 + 4.38477217e+03 4.44395333e+03 4.50393327e+03 4.56472275e+03 4.62633270e+03 + 4.68877420e+03 4.75205848e+03 4.81619690e+03 4.88120099e+03 4.94708244e+03 + 5.01385310e+03 5.08152495e+03 5.15011018e+03 5.21962109e+03 5.29007019e+03 + 5.36147014e+03 5.43383378e+03 5.50717410e+03 5.58150430e+03 5.65683773e+03 + 5.73318793e+03 5.81056864e+03 5.88899374e+03 5.96847735e+03 6.04903375e+03 + 6.13067741e+03 6.21342302e+03 6.29728544e+03 6.38227975e+03 6.46842123e+03 + 6.55572536e+03 6.64420783e+03 6.73388454e+03 6.82477162e+03 6.91688540e+03 + 7.01024244e+03 7.10485951e+03 7.20075363e+03 7.29794203e+03 7.39644218e+03 + 7.49627178e+03 7.59744879e+03 7.69999137e+03 7.80391797e+03 7.90924727e+03 + 8.01599819e+03 8.12418992e+03 8.23384192e+03 8.34497389e+03 8.45760580e+03 + 8.57175791e+03 8.68745072e+03 8.80470504e+03 8.92354193e+03 9.04398276e+03 + 9.16604918e+03 9.28976313e+03 9.41514684e+03 9.54222285e+03 9.67101401e+03 + 9.80154345e+03 9.93383465e+03 1.00679114e+04 1.02037977e+04 1.03415182e+04 + 1.04810974e+04 1.06225605e+04 1.07659329e+04 1.09112405e+04 1.10585092e+04 + 1.12077657e+04 1.13590366e+04 1.15123493e+04 1.16677312e+04 1.18252103e+04 + 1.19848148e+04 1.21465736e+04 1.23105156e+04 1.24766704e+04 1.26450677e+04 + 1.28157379e+04 1.29887116e+04 1.31640199e+04 1.33416944e+04 1.35217669e+04 + 1.37042699e+04 1.38892361e+04 1.40766987e+04 1.42666916e+04 1.44592488e+04 + 1.46544049e+04 1.48521951e+04 1.50526548e+04 1.52558201e+04 1.54617276e+04 + 1.56704142e+04 1.58819174e+04 1.60962752e+04 1.63135263e+04 1.65337095e+04 + 1.67568646e+04 1.69830316e+04 1.72122512e+04 1.74445645e+04 1.76800134e+04 + 1.79186401e+04 1.81604876e+04 1.84055993e+04 1.86540192e+04 1.89057921e+04 + 1.91609631e+04 1.94195781e+04 1.96816837e+04 1.99473269e+04 2.02165555e+04 + 2.04894179e+04 2.07659631e+04 2.10462408e+04 2.13303014e+04 2.16181960e+04 + 2.19099763e+04 2.22056947e+04 2.25054044e+04 2.28091593e+04 2.31170140e+04 + 2.34290238e+04 2.37452448e+04 2.40657338e+04 2.43905484e+04 2.47197470e+04 + 2.50533889e+04 2.53915339e+04 2.57342428e+04 2.60815773e+04 2.64335997e+04 + 2.67903734e+04 2.71519624e+04 2.75184318e+04 2.78898474e+04 2.82662760e+04 + 2.86477853e+04 2.90344437e+04 2.94263209e+04 2.98234873e+04 3.02260142e+04 + 3.06339740e+04 3.10474400e+04 3.14664865e+04 3.18911890e+04 3.23216236e+04 + 3.27578678e+04 3.31999999e+04 3.36480995e+04 3.41022471e+04 3.45625243e+04 + 3.50290139e+04 3.55017997e+04 3.59809666e+04 3.64666009e+04 3.69587897e+04 + 3.74576216e+04 3.79631862e+04 3.84755745e+04 3.89948784e+04 3.95211913e+04 + 4.00546079e+04 4.05952240e+04 4.11431368e+04 4.16984447e+04 4.22612476e+04 + 4.28316467e+04 4.34097444e+04 4.39956447e+04 4.45894528e+04 4.51912756e+04 + 4.58012212e+04 4.64193992e+04 4.70459207e+04 4.76808984e+04 4.83244463e+04 + 4.89766802e+04 4.96377173e+04 5.03076764e+04 5.09866779e+04 5.16748439e+04 + 5.23722980e+04 5.30791657e+04 5.37955739e+04 5.45216515e+04 5.52575289e+04 + 5.60033385e+04 5.67592142e+04 5.75252919e+04 5.83017094e+04 5.90886062e+04 + 5.98861237e+04 6.06944053e+04 6.15135963e+04 6.23438438e+04 6.31852972e+04 + 6.40381076e+04 6.49024284e+04 6.57784150e+04 6.66662247e+04 6.75660171e+04 + 6.84779540e+04 6.94021994e+04 7.03389192e+04 7.12882819e+04 7.22504581e+04 + 7.32256209e+04 7.42139453e+04 7.52156092e+04 7.62307924e+04 7.72596776e+04 + 7.83024497e+04 7.93592960e+04 8.04304065e+04 8.15159738e+04 8.26161929e+04 + 8.37312617e+04 8.48613806e+04 8.60067526e+04 8.71675837e+04 8.83440825e+04 + 8.95364604e+04 9.07449319e+04 9.19697141e+04 9.32110271e+04 9.44690942e+04 + 9.57441413e+04 9.70363977e+04 9.83460956e+04 9.96734705e+04 1.01018761e+05 + 1.02382209e+05 1.03764059e+05 1.05164560e+05 1.06583964e+05 1.08022525e+05 + 1.09480502e+05 1.10958158e+05 1.12455758e+05 1.13973570e+05 1.15511869e+05 + 1.17070930e+05 1.18651033e+05 1.20252464e+05 1.21875508e+05 1.23520459e+05 + 1.25187612e+05 1.26877266e+05 1.28589725e+05 1.30325298e+05 1.32084295e+05 + 1.33867034e+05 1.35673834e+05 1.37505020e+05 1.39360922e+05 1.41241873e+05 + 1.43148212e+05 1.45080280e+05 1.47038425e+05 1.49022999e+05 1.51034359e+05 + 1.53072866e+05 1.55138887e+05 1.57232793e+05 1.59354960e+05 1.61505770e+05 + 1.63685609e+05 1.65894870e+05 1.68133949e+05 1.70403249e+05 1.72703178e+05 + 1.75034149e+05 1.77396580e+05 1.79790898e+05 1.82217531e+05 1.84676917e+05 + 1.87169497e+05 1.89695719e+05 1.92256038e+05 1.94850913e+05 1.97480811e+05 + 2.00146205e+05 2.02847573e+05 2.05585402e+05 2.08360183e+05 2.11172416e+05 + 2.14022605e+05 2.16911263e+05 2.19838909e+05 2.22806069e+05 2.25813278e+05 + 2.28861074e+05 2.31950007e+05 2.35080630e+05 2.38253508e+05 2.41469210e+05 + 2.44728314e+05 2.48031406e+05 2.51379080e+05 2.54771938e+05 2.58210588e+05 + 2.61695651e+05 2.65227751e+05 2.68807523e+05 2.72435612e+05 2.76112669e+05 + 2.79839355e+05 2.83616340e+05 2.87444303e+05 2.91323932e+05 2.95255924e+05 + 2.99240986e+05 3.03279835e+05 3.07373196e+05 3.11521804e+05 3.15726407e+05 + 3.19987758e+05 3.24306626e+05 3.28683784e+05 3.33120022e+05 3.37616135e+05 + 3.42172931e+05 3.46791231e+05 3.51471864e+05 3.56215672e+05 3.61023506e+05 + 3.65896232e+05 3.70834725e+05 3.75839872e+05 3.80912574e+05 3.86053742e+05 + 3.91264300e+05 3.96545185e+05 4.01897346e+05 4.07321745e+05 4.12819356e+05 + 4.18391169e+05 4.24038185e+05 4.29761418e+05 4.35561898e+05 4.41440667e+05 + 4.47398781e+05 4.53437311e+05 4.59557344e+05 4.65759979e+05 4.72046330e+05 + 4.78417528e+05 4.84874718e+05 4.91419060e+05 4.98051732e+05 5.04773924e+05 + 5.11586846e+05 5.18491721e+05 5.25489792e+05 5.32582315e+05 5.39770566e+05 + 5.47055836e+05 5.54439436e+05 5.61922691e+05 5.69506949e+05 5.77193570e+05 + 5.84983938e+05 5.92879453e+05 6.00881532e+05 6.08991616e+05 6.17211161e+05 + 6.25541646e+05 6.33984566e+05 6.42541441e+05 6.51213808e+05 6.60003225e+05 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 6.88504212e-06 6.97796937e-06 7.07215085e-06 7.16760350e-06 7.26434448e-06 + 7.36239116e-06 7.46176118e-06 7.56247239e-06 7.66454290e-06 7.76799106e-06 + 7.87283545e-06 7.97909492e-06 8.08678857e-06 8.19593576e-06 8.30655611e-06 + 8.41866950e-06 8.53229609e-06 8.64745628e-06 8.76417079e-06 8.88246060e-06 + 9.00234696e-06 9.12385142e-06 9.24699583e-06 9.37180231e-06 9.49829330e-06 + 9.62649154e-06 9.75642007e-06 9.88810223e-06 1.00215617e-05 1.01568225e-05 + 1.02939089e-05 1.04328455e-05 1.05736574e-05 1.07163698e-05 1.08610084e-05 + 1.10075992e-05 1.11561685e-05 1.13067430e-05 1.14593498e-05 1.16140164e-05 + 1.17707705e-05 1.19296403e-05 1.20906544e-05 1.22538417e-05 1.24192315e-05 + 1.25868536e-05 1.27567380e-05 1.29289154e-05 1.31034167e-05 1.32802732e-05 + 1.34595167e-05 1.36411795e-05 1.38252941e-05 1.40118938e-05 1.42010120e-05 + 1.43926827e-05 1.45869404e-05 1.47838200e-05 1.49833569e-05 1.51855869e-05 + 1.53905464e-05 1.55982722e-05 1.58088017e-05 1.60221728e-05 1.62384236e-05 + 1.64575933e-05 1.66797210e-05 1.69048468e-05 1.71330111e-05 1.73642550e-05 + 1.75986199e-05 1.78361481e-05 1.80768821e-05 1.83208654e-05 1.85681416e-05 + 1.88187554e-05 1.90727517e-05 1.93301762e-05 1.95910751e-05 1.98554954e-05 + 2.01234845e-05 2.03950907e-05 2.06703628e-05 2.09493502e-05 2.12321030e-05 + 2.15186722e-05 2.18091092e-05 2.21034663e-05 2.24017962e-05 2.27041527e-05 + 2.30105901e-05 2.33211635e-05 2.36359287e-05 2.39549423e-05 2.42782616e-05 + 2.46059447e-05 2.49380505e-05 2.52746388e-05 2.56157700e-05 2.59615054e-05 + 2.63119073e-05 2.66670385e-05 2.70269628e-05 2.73917451e-05 2.77614508e-05 + 2.81361465e-05 2.85158994e-05 2.89007778e-05 2.92908509e-05 2.96861888e-05 + 3.00868626e-05 3.04929443e-05 3.09045068e-05 3.13216242e-05 3.17443714e-05 + 3.21728244e-05 3.26070603e-05 3.30471570e-05 3.34931937e-05 3.39452505e-05 + 3.44034088e-05 3.48677508e-05 3.53383600e-05 3.58153210e-05 3.62987195e-05 + 3.67886424e-05 3.72851779e-05 3.77884150e-05 3.82984444e-05 3.88153576e-05 + 3.93392475e-05 3.98702084e-05 4.04083357e-05 4.09537260e-05 4.15064775e-05 + 4.20666894e-05 4.26344625e-05 4.32098988e-05 4.37931018e-05 4.43841763e-05 + 4.49832284e-05 4.55903660e-05 4.62056981e-05 4.68293353e-05 4.74613897e-05 + 4.81019749e-05 4.87512062e-05 4.94092000e-05 5.00760748e-05 5.07519504e-05 + 5.14369483e-05 5.21311915e-05 5.28348050e-05 5.35479151e-05 5.42706500e-05 + 5.50031397e-05 5.57455158e-05 5.64979117e-05 5.72604626e-05 5.80333057e-05 + 5.88165799e-05 5.96104258e-05 6.04149863e-05 6.12304060e-05 6.20568313e-05 + 6.28944109e-05 6.37432952e-05 6.46036370e-05 6.54755907e-05 6.63593132e-05 + 6.72549633e-05 6.81627019e-05 6.90826923e-05 7.00150997e-05 7.09600919e-05 + 7.19178385e-05 7.28885119e-05 7.38722864e-05 7.48693389e-05 7.58798486e-05 + 7.69039971e-05 7.79419685e-05 7.89939494e-05 8.00601288e-05 8.11406985e-05 + 8.22358526e-05 8.33457879e-05 8.44707040e-05 8.56108031e-05 8.67662901e-05 + 8.79373726e-05 8.91242612e-05 9.03271693e-05 9.15463129e-05 9.27819113e-05 + 9.40341866e-05 9.53033637e-05 9.65896710e-05 9.78933395e-05 9.92146035e-05 + 1.00553701e-04 1.01910872e-04 1.03286360e-04 1.04680414e-04 1.06093283e-04 + 1.07525221e-04 1.08976487e-04 1.10447340e-04 1.11938045e-04 1.13448870e-04 + 1.14980087e-04 1.16531970e-04 1.18104799e-04 1.19698857e-04 1.21314430e-04 + 1.22951808e-04 1.24611285e-04 1.26293161e-04 1.27997736e-04 1.29725319e-04 + 1.31476218e-04 1.33250750e-04 1.35049232e-04 1.36871988e-04 1.38719346e-04 + 1.40591638e-04 1.42489200e-04 1.44412373e-04 1.46361504e-04 1.48336941e-04 + 1.50339042e-04 1.52368164e-04 1.54424673e-04 1.56508940e-04 1.58621337e-04 + 1.60762245e-04 1.62932050e-04 1.65131140e-04 1.67359911e-04 1.69618763e-04 + 1.71908104e-04 1.74228343e-04 1.76579899e-04 1.78963194e-04 1.81378656e-04 + 1.83826719e-04 1.86307824e-04 1.88822416e-04 1.91370948e-04 1.93953877e-04 + 1.96571668e-04 1.99224791e-04 2.01913723e-04 2.04638948e-04 2.07400955e-04 + 2.10200241e-04 2.13037308e-04 2.15912668e-04 2.18826836e-04 2.21780337e-04 + 2.24773701e-04 2.27807466e-04 2.30882178e-04 2.33998389e-04 2.37156660e-04 + 2.40357558e-04 2.43601658e-04 2.46889543e-04 2.50221806e-04 2.53599044e-04 + 2.57021864e-04 2.60490882e-04 2.64006721e-04 2.67570013e-04 2.71181399e-04 + 2.74841528e-04 2.78551058e-04 2.82310655e-04 2.86120995e-04 2.89982763e-04 + 2.93896654e-04 2.97863370e-04 3.01883625e-04 3.05958141e-04 3.10087651e-04 + 3.14272896e-04 3.18514630e-04 3.22813614e-04 3.27170622e-04 3.31586436e-04 + 3.36061850e-04 3.40597669e-04 3.45194708e-04 3.49853792e-04 3.54575761e-04 + 3.59361461e-04 3.64211754e-04 3.69127512e-04 3.74109617e-04 3.79158966e-04 + 3.84276465e-04 3.89463035e-04 3.94719609e-04 4.00047130e-04 4.05446556e-04 + 4.10918859e-04 4.16465021e-04 4.22086040e-04 4.27782925e-04 4.33556701e-04 + 4.39408405e-04 4.45339090e-04 4.51349821e-04 4.57441679e-04 4.63615758e-04 + 4.69873169e-04 4.76215036e-04 4.82642499e-04 4.89156713e-04 4.95758850e-04 + 5.02450095e-04 5.09231652e-04 5.16104740e-04 5.23070593e-04 5.30130464e-04 + 5.37285623e-04 5.44537354e-04 5.51886961e-04 5.59335767e-04 5.66885108e-04 + 5.74536343e-04 5.82290846e-04 5.90150012e-04 5.98115253e-04 6.06188000e-04 + 6.14369705e-04 6.22661838e-04 6.31065890e-04 6.39583371e-04 6.48215813e-04 + 6.56964766e-04 6.65831804e-04 6.74818520e-04 6.83926530e-04 6.93157470e-04 + 7.02513000e-04 7.11994801e-04 7.21604578e-04 7.31344057e-04 7.41214991e-04 + 7.51219152e-04 7.61358339e-04 7.71634374e-04 7.82049105e-04 7.92604403e-04 + 8.03302166e-04 8.14144316e-04 8.25132802e-04 8.36269600e-04 8.47556711e-04 + 8.58996164e-04 8.70590014e-04 8.82340347e-04 8.94249274e-04 9.06318935e-04 + 9.18551500e-04 9.30949168e-04 9.43514166e-04 9.56248755e-04 9.69155221e-04 + 9.82235886e-04 9.95493101e-04 1.00892925e-03 1.02254674e-03 1.03634803e-03 + 1.05033559e-03 1.06451195e-03 1.07887964e-03 1.09344125e-03 1.10819941e-03 + 1.12315675e-03 1.13831597e-03 1.15367979e-03 1.16925098e-03 1.18503233e-03 + 1.20102668e-03 1.21723691e-03 1.23366593e-03 1.25031669e-03 1.26719218e-03 + 1.28429545e-03 1.30162955e-03 1.31919761e-03 1.33700279e-03 1.35504829e-03 + 1.37333734e-03 1.39187324e-03 1.41065932e-03 1.42969896e-03 1.44899557e-03 + 1.46855263e-03 1.48837365e-03 1.50846219e-03 1.52882187e-03 1.54945635e-03 + 1.57036932e-03 1.59156456e-03 1.61304587e-03 1.63481711e-03 1.65688220e-03 + 1.67924510e-03 1.70190983e-03 1.72488046e-03 1.74816113e-03 1.77175602e-03 + 1.79566937e-03 1.81990548e-03 1.84446870e-03 1.86936345e-03 1.89459420e-03 + 1.92016550e-03 1.94608192e-03 1.97234815e-03 1.99896888e-03 2.02594892e-03 + 2.05329310e-03 2.08100635e-03 2.10909364e-03 2.13756003e-03 2.16641063e-03 + 2.19565062e-03 2.22528526e-03 2.25531988e-03 2.28575988e-03 2.31661073e-03 + 2.34787797e-03 2.37956722e-03 2.41168418e-03 2.44423463e-03 2.47722440e-03 + 2.51065944e-03 2.54454575e-03 2.57888943e-03 2.61369664e-03 2.64897364e-03 + 2.68472677e-03 2.72096247e-03 2.75768723e-03 2.79490767e-03 2.83263047e-03 + 2.87086242e-03 2.90961038e-03 2.94888132e-03 2.98868230e-03 3.02902048e-03 + 3.06990309e-03 3.11133750e-03 3.15333115e-03 3.19589159e-03 3.23902646e-03 + 3.28274352e-03 3.32705063e-03 3.37195576e-03 3.41746696e-03 3.46359243e-03 + 3.51034046e-03 3.55771944e-03 3.60573789e-03 3.65440445e-03 3.70372786e-03 + 3.75371699e-03 3.80438082e-03 3.85572845e-03 3.90776913e-03 3.96051220e-03 + 4.01396713e-03 4.06814355e-03 4.12305119e-03 4.17869991e-03 4.23509973e-03 + 4.29226077e-03 4.35019331e-03 4.40890776e-03 4.46841469e-03 4.52872477e-03 + 4.58984886e-03 4.65179794e-03 4.71458315e-03 4.77821577e-03 4.84270723e-03 + 4.90806913e-03 4.97431323e-03 5.04145141e-03 5.10949576e-03 5.17845851e-03 + 5.24835204e-03 5.31918892e-03 5.39098188e-03 5.46374384e-03 5.53748786e-03 + 5.61222720e-03 5.68797530e-03 5.76474576e-03 5.84255240e-03 5.92140919e-03 + 6.00133031e-03 6.08233012e-03 6.16442319e-03 6.24762426e-03 6.33194830e-03 + 6.41741045e-03 6.50402609e-03 6.59181077e-03 6.68078028e-03 6.77095062e-03 + 6.86233798e-03 6.95495879e-03 7.04882970e-03 7.14396759e-03 7.24038955e-03 + 7.33811291e-03 7.43715525e-03 7.53753436e-03 7.63926828e-03 7.74237530e-03 + 7.84687395e-03 7.95278302e-03 8.06012155e-03 8.16890882e-03 8.27916438e-03 + 8.39090807e-03 8.50415995e-03 8.61894040e-03 8.73527003e-03 8.85316976e-03 + 8.97266078e-03 9.09376457e-03 9.21650290e-03 9.34089782e-03 9.46697169e-03 + 9.59474718e-03 9.72424726e-03 9.85549519e-03 9.98851457e-03 1.01233293e-02 + 1.02599637e-02 1.03984421e-02 1.05387897e-02 1.06810315e-02 1.08251931e-02 + 1.09713005e-02 1.11193798e-02 1.12694578e-02 1.14215614e-02 1.15757180e-02 + 1.17319552e-02 1.18903011e-02 1.20507842e-02 1.22134334e-02 1.23782778e-02 + 1.25453471e-02 1.27146713e-02 1.28862810e-02 1.30602068e-02 1.32364801e-02 + 1.34151325e-02 1.35961963e-02 1.37797038e-02 1.39656881e-02 1.41541827e-02 + 1.43452214e-02 1.45388385e-02 1.47350688e-02 1.49339477e-02 1.51355108e-02 + 1.53397945e-02 1.55468353e-02 1.57566706e-02 1.59693380e-02 1.61848758e-02 + 1.64033226e-02 1.66247179e-02 1.68491013e-02 1.70765132e-02 1.73069945e-02 + 1.75405866e-02 1.77773315e-02 1.80172717e-02 1.82604504e-02 1.85069113e-02 + 1.87566986e-02 1.90098573e-02 1.92664329e-02 1.95264715e-02 1.97900198e-02 + 2.00571252e-02 2.03278358e-02 2.06022001e-02 2.08802675e-02 2.11620880e-02 + 2.14477122e-02 2.17371914e-02 2.20305778e-02 2.23279240e-02 2.26292834e-02 + 2.29347103e-02 2.32442596e-02 2.35579868e-02 2.38759484e-02 2.41982015e-02 + 2.45248040e-02 2.48558147e-02 2.51912931e-02 2.55312994e-02 2.58758947e-02 + 2.62251410e-02 2.65791011e-02 2.69378386e-02 2.73014180e-02 2.76699046e-02 + 2.80433646e-02 2.84218652e-02 2.88054745e-02 2.91942613e-02 2.95882955e-02 + 2.99876481e-02 3.03923906e-02 3.08025960e-02 3.12183379e-02 3.16396911e-02 + 3.20667312e-02 3.24995351e-02 3.29381806e-02 3.33827464e-02 3.38333125e-02 + 3.42899600e-02 3.47527707e-02 3.52218280e-02 3.56972162e-02 3.61790207e-02 + 3.66673281e-02 3.71622261e-02 3.76638038e-02 3.81721513e-02 3.86873599e-02 + 3.92095223e-02 3.97387323e-02 4.02750850e-02 4.08186768e-02 4.13696055e-02 + 4.19279701e-02 4.24938709e-02 4.30674097e-02 4.36486895e-02 4.42378148e-02 + 4.48348916e-02 4.54400270e-02 4.60533300e-02 4.66749107e-02 4.73048808e-02 + 4.79433537e-02 4.85904440e-02 4.92462681e-02 4.99109438e-02 5.05845906e-02 + 5.12673296e-02 5.19592835e-02 5.26605767e-02 5.33713353e-02 5.40916869e-02 + 5.48217611e-02 5.55616891e-02 5.63116039e-02 5.70716403e-02 5.78419349e-02 + 5.86226261e-02 5.94138543e-02 6.02157617e-02 6.10284924e-02 6.18521925e-02 + 6.26870100e-02 6.35330951e-02 6.43905998e-02 6.52596782e-02 6.61404865e-02 + 6.70331831e-02 6.79379283e-02 6.88548849e-02 6.97842177e-02 7.07260936e-02 + 7.16806820e-02 7.26481545e-02 7.36286849e-02 7.46224495e-02 7.56296269e-02 + 7.66503982e-02 7.76849468e-02 7.87334586e-02 7.97961222e-02 8.08731286e-02 + 8.19646713e-02 8.30709465e-02 8.41921531e-02 8.53284926e-02 8.64801692e-02 + 8.76473900e-02 8.88303647e-02 9.00293060e-02 9.12444294e-02 9.24759533e-02 + 9.37240991e-02 9.49890910e-02 9.62711565e-02 9.75705260e-02 9.88874331e-02 + 1.00222114e-01 1.01574810e-01 1.02945763e-01 1.04335219e-01 1.05743429e-01 + 1.07170646e-01 1.08617125e-01 1.10083128e-01 1.11568917e-01 1.13074760e-01 + 1.14600928e-01 1.16147694e-01 1.17715336e-01 1.19304138e-01 1.20914383e-01 + 1.22546361e-01 1.24200367e-01 1.25876696e-01 1.27575651e-01 1.29297536e-01 + 1.31042662e-01 1.32811342e-01 1.34603893e-01 1.36420639e-01 1.38261905e-01 + 1.40128022e-01 1.42019327e-01 1.43936158e-01 1.45878861e-01 1.47847785e-01 + 1.49843283e-01 1.51865714e-01 1.53915442e-01 1.55992835e-01 1.58098267e-01 + 1.60232115e-01 1.62394764e-01 1.64586603e-01 1.66808024e-01 1.69059428e-01 + 1.71341219e-01 1.73653807e-01 1.75997609e-01 1.78373044e-01 1.80780541e-01 + 1.83220532e-01 1.85693455e-01 1.88199755e-01 1.90739882e-01 1.93314294e-01 + 1.95923452e-01 1.98567827e-01 2.01247892e-01 2.03964130e-01 2.06717029e-01 + 2.09507084e-01 2.12334796e-01 2.15200673e-01 2.18105232e-01 2.21048993e-01 + 2.24032486e-01 2.27056247e-01 2.30120820e-01 2.33226755e-01 2.36374611e-01 + 2.39564954e-01 2.42798356e-01 2.46075400e-01 2.49396673e-01 2.52762774e-01 + 2.56174308e-01 2.59631886e-01 2.63136131e-01 2.66687674e-01 2.70287151e-01 + 2.73935210e-01 2.77632507e-01 2.81379706e-01 2.85177481e-01 2.89026515e-01 + 2.92927499e-01 2.96881135e-01 3.00888132e-01 3.04949212e-01 3.09065104e-01 + 3.13236549e-01 3.17464295e-01 3.21749103e-01 3.26091743e-01 3.30492995e-01 + 3.34953651e-01 3.39474513e-01 3.44056392e-01 3.48700113e-01 3.53406510e-01 + 3.58176430e-01 3.63010728e-01 3.67910276e-01 3.72875952e-01 3.77908650e-01 + 3.83009274e-01 3.88178741e-01 3.93417980e-01 3.98727933e-01 4.04109554e-01 + 4.09563811e-01 4.15091684e-01 4.20694167e-01 4.26372266e-01 4.32127002e-01 + 4.37959410e-01 4.43870538e-01 4.49861448e-01 4.55933217e-01 4.62086937e-01 + 4.68323713e-01 4.74644667e-01 4.81050935e-01 4.87543668e-01 4.94124034e-01 + 5.00793214e-01 5.07552408e-01 5.14402831e-01 5.21345713e-01 5.28382304e-01 + 5.35513867e-01 5.42741685e-01 5.50067057e-01 5.57491299e-01 5.65015746e-01 + 5.72641750e-01 5.80370682e-01 5.88203931e-01 5.96142905e-01 6.04189032e-01 + 6.12343757e-01 6.20608546e-01 6.28984885e-01 6.37474279e-01 6.46078254e-01 + 6.54798357e-01 6.63636155e-01 6.72593236e-01 6.81671211e-01 6.90871711e-01 + 7.00196390e-01 7.09646924e-01 7.19225012e-01 7.28932374e-01 7.38770757e-01 + 7.48741929e-01 7.58847681e-01 7.69089830e-01 7.79470217e-01 7.89990708e-01 + 8.00653193e-01 8.11459591e-01 8.22411841e-01 8.33511914e-01 8.44761805e-01 + 8.56163535e-01 8.67719154e-01 8.79430738e-01 8.91300394e-01 9.03330254e-01 + 9.15522481e-01 9.27879266e-01 9.40402831e-01 9.53095425e-01 9.65959331e-01 + 9.78996861e-01 9.92210359e-01 1.00560220e+00 1.01917479e+00 1.03293057e+00 + 1.04687200e+00 1.06100161e+00 1.07532192e+00 1.08983552e+00 1.10454500e+00 + 1.11945302e+00 1.13456225e+00 1.14987541e+00 1.16539525e+00 1.18112456e+00 + 1.19706617e+00 1.21322295e+00 1.22959779e+00 1.24619364e+00 1.26301349e+00 + 1.28006035e+00 1.29733729e+00 1.31484742e+00 1.33259389e+00 1.35057988e+00 + 1.36880862e+00 1.38728340e+00 1.40600753e+00 1.42498438e+00 1.44421736e+00 + 1.46370993e+00 1.48346558e+00 1.50348788e+00 1.52378042e+00 1.54434685e+00 + 1.56519086e+00 1.58631621e+00 1.60772668e+00 1.62942613e+00 1.65141846e+00 + 1.67370761e+00 1.69629760e+00 1.71919249e+00 1.74239639e+00 1.76591347e+00 + 1.78974797e+00 1.81390415e+00 1.83838637e+00 1.86319903e+00 1.88834658e+00 + 1.91383355e+00 1.93966452e+00 1.96584412e+00 1.99237707e+00 2.01926814e+00 + 2.04652215e+00 2.07414401e+00 2.10213869e+00 2.13051120e+00 2.15926666e+00 + 2.18841023e+00 2.21794715e+00 2.24788273e+00 2.27822235e+00 2.30897147e+00 + 2.34013560e+00 2.37172035e+00 2.40373141e+00 2.43617451e+00 2.46905550e+00 + 2.50238028e+00 2.53615485e+00 2.57038527e+00 2.60507770e+00 2.64023837e+00 + 2.67587361e+00 2.71198981e+00 2.74859347e+00 2.78569117e+00 2.82328958e+00 + 2.86139545e+00 2.90001564e+00 2.93915708e+00 2.97882681e+00 3.01903197e+00 + 3.05977977e+00 3.10107754e+00 3.14293271e+00 3.18535280e+00 3.22834543e+00 + 3.27191833e+00 3.31607934e+00 3.36083638e+00 3.40619751e+00 3.45217088e+00 + 3.49876474e+00 3.54598749e+00 3.59384760e+00 3.64235367e+00 3.69151443e+00 + 3.74133872e+00 3.79183548e+00 3.84301379e+00 3.89488285e+00 3.94745200e+00 + 4.00073066e+00 4.05472843e+00 4.10945500e+00 4.16492022e+00 4.22113405e+00 + 4.27810659e+00 4.33584809e+00 4.39436893e+00 4.45367962e+00 4.51379083e+00 + 4.57471336e+00 4.63645816e+00 4.69903632e+00 4.76245910e+00 4.82673790e+00 + 4.89188427e+00 4.95790991e+00 5.02482670e+00 5.09264667e+00 5.16138200e+00 + 5.23104505e+00 5.30164834e+00 5.37320456e+00 5.44572658e+00 5.51922742e+00 + 5.59372030e+00 5.66921861e+00 5.74573592e+00 5.82328598e+00 5.90188273e+00 + 5.98154030e+00 6.06227301e+00 6.14409536e+00 6.22702207e+00 6.31106804e+00 + 6.39624837e+00 6.48257839e+00 6.57007359e+00 6.65874972e+00 6.74862270e+00 + 6.83970870e+00 6.93202409e+00 7.02558545e+00 7.12040961e+00 7.21651361e+00 + 7.31391472e+00 7.41263046e+00 7.51267855e+00 7.61407700e+00 7.71684401e+00 + 7.82099807e+00 7.92655790e+00 8.03354246e+00 8.14197099e+00 8.25186298e+00 + 8.36323818e+00 8.47611660e+00 8.59051855e+00 8.70646457e+00 8.82397552e+00 + 8.94307250e+00 9.06377694e+00 9.18611052e+00 9.31009524e+00 9.43575337e+00 + 9.56310751e+00 9.69218054e+00 9.82299567e+00 9.95557641e+00 1.00899466e+01 + 1.02261304e+01 1.03641522e+01 1.05040369e+01 1.06458096e+01 1.07894959e+01 + 1.09351215e+01 1.10827125e+01 1.12322956e+01 1.13838977e+01 1.15375459e+01 + 1.16932678e+01 1.18510916e+01 1.20110455e+01 1.21731583e+01 1.23374591e+01 + 1.25039775e+01 1.26727434e+01 1.28437871e+01 1.30171394e+01 1.31928314e+01 + 1.33708948e+01 1.35513614e+01 1.37342638e+01 1.39196348e+01 1.41075078e+01 + 1.42979165e+01 1.44908951e+01 1.46864784e+01 1.48847015e+01 1.50855999e+01 + 1.52892099e+01 1.54955680e+01 1.57047113e+01 1.59166774e+01 1.61315045e+01 + 1.63492310e+01 1.65698962e+01 1.67935397e+01 1.70202017e+01 1.72499229e+01 + 1.74827447e+01 1.77187089e+01 1.79578579e+01 1.82002347e+01 1.84458828e+01 + 1.86948465e+01 1.89471703e+01 1.92028999e+01 1.94620809e+01 1.97247602e+01 + 1.99909848e+01 2.02608026e+01 2.05342622e+01 2.08114127e+01 2.10923038e+01 + 2.13769861e+01 2.16655108e+01 2.19579297e+01 2.22542953e+01 2.25546610e+01 + 2.28590807e+01 2.31676092e+01 2.34803019e+01 2.37972150e+01 2.41184054e+01 + 2.44439309e+01 2.47738501e+01 2.51082222e+01 2.54471072e+01 2.57905662e+01 + 2.61386609e+01 2.64914538e+01 2.68490083e+01 2.72113887e+01 2.75786602e+01 + 2.79508887e+01 2.83281412e+01 2.87104854e+01 2.90979902e+01 2.94907251e+01 + 2.98887607e+01 3.02921686e+01 3.07010212e+01 3.11153922e+01 3.15353559e+01 + 3.19609878e+01 3.23923645e+01 3.28295635e+01 3.32726633e+01 3.37217437e+01 + 3.41768853e+01 3.46381699e+01 3.51056804e+01 3.55795009e+01 3.60597166e+01 + 3.65464138e+01 3.70396798e+01 3.75396035e+01 3.80462746e+01 3.85597843e+01 + 3.90802248e+01 3.96076897e+01 4.01422737e+01 4.06840730e+01 4.12331850e+01 + 4.17897083e+01 4.23537430e+01 4.29253905e+01 4.35047534e+01 4.40919360e+01 + 4.46870439e+01 4.52901838e+01 4.59014643e+01 4.65209953e+01 4.71488881e+01 + 4.77852555e+01 4.84302120e+01 4.90838734e+01 4.97463572e+01 5.04177826e+01 + 5.10982703e+01 5.17879424e+01 5.24869230e+01 5.31953378e+01 5.39133140e+01 + 5.46409807e+01 5.53784687e+01 5.61259106e+01 5.68834406e+01 5.76511951e+01 + 5.84293119e+01 5.92179309e+01 6.00171939e+01 6.08272446e+01 6.16482284e+01 + 6.24802931e+01 6.33235881e+01 6.41782651e+01 6.50444776e+01 6.59223814e+01 + 6.68121342e+01 6.77138960e+01 6.86278288e+01 6.95540970e+01 7.04928670e+01 + 7.14443075e+01 7.24085896e+01 7.33858866e+01 7.43763742e+01 7.53802303e+01 + 7.63976355e+01 7.74287726e+01 7.84738269e+01 7.95329863e+01 8.06064411e+01 + 8.16943843e+01 8.27970114e+01 8.39145207e+01 8.50471130e+01 8.61949919e+01 + 8.73583636e+01 8.85374374e+01 8.97324251e+01 9.09435415e+01 9.21710043e+01 + 9.34150341e+01 9.46758546e+01 9.59536924e+01 9.72487771e+01 9.85613415e+01 + 9.98916216e+01 1.01239856e+02 1.02606288e+02 1.03991163e+02 1.05394729e+02 + 1.06817239e+02 1.08258949e+02 1.09720118e+02 1.11201007e+02 1.12701885e+02 + 1.14223019e+02 1.15764685e+02 1.17327158e+02 1.18910720e+02 1.20515655e+02 + 1.22142252e+02 1.23790803e+02 1.25461604e+02 1.27154957e+02 1.28871164e+02 + 1.30610535e+02 1.32373382e+02 1.34160023e+02 1.35970777e+02 1.37805972e+02 + 1.39665936e+02 1.41551004e+02 1.43461514e+02 1.45397811e+02 1.47360241e+02 + 1.49349159e+02 1.51364921e+02 1.53407890e+02 1.55478433e+02 1.57576921e+02 + 1.59703733e+02 1.61859251e+02 1.64043861e+02 1.66257957e+02 1.68501937e+02 + 1.70776204e+02 1.73081166e+02 1.75417238e+02 1.77784841e+02 1.80184398e+02 + 1.82616343e+02 1.85081111e+02 1.87579147e+02 1.90110898e+02 1.92676820e+02 + 1.95277375e+02 1.97913029e+02 2.00584256e+02 2.03291537e+02 2.06035358e+02 + 2.08816212e+02 2.11634600e+02 2.14491027e+02 2.17386007e+02 2.20320061e+02 + 2.23293716e+02 2.26307506e+02 2.29361973e+02 2.32457666e+02 2.35595141e+02 + 2.38774963e+02 2.41997703e+02 2.45263940e+02 2.48574262e+02 2.51929263e+02 + 2.55329546e+02 2.58775723e+02 2.62268413e+02 2.65808243e+02 2.69395851e+02 + 2.73031880e+02 2.76716985e+02 2.80451827e+02 2.84237079e+02 2.88073420e+02 + 2.91961540e+02 2.95902138e+02 2.99895922e+02 3.03943610e+02 3.08045930e+02 + 3.12203619e+02 3.16417423e+02 3.20688102e+02 3.25016422e+02 3.29403160e+02 + 3.33849107e+02 3.38355061e+02 3.42921831e+02 3.47550238e+02 3.52241116e+02 + 3.56995306e+02 3.61813663e+02 3.66697053e+02 3.71646355e+02 3.76662457e+02 + 3.81746261e+02 3.86898681e+02 3.92120643e+02 3.97413086e+02 4.02776961e+02 + 4.08213232e+02 4.13722877e+02 4.19306884e+02 4.24966259e+02 4.30702019e+02 + 4.36515194e+02 4.42406829e+02 4.48377983e+02 4.54429730e+02 4.60563157e+02 + 4.66779367e+02 4.73079477e+02 4.79464620e+02 4.85935942e+02 4.92494608e+02 + 4.99141796e+02 5.05878701e+02 5.12706534e+02 5.19626522e+02 5.26639909e+02 + 5.33747955e+02 5.40951938e+02 5.48253154e+02 5.55652913e+02 5.63152548e+02 + 5.70753404e+02 5.78456849e+02 5.86264268e+02 5.94177062e+02 6.02196656e+02 + 6.10324490e+02 6.18562025e+02 6.26910742e+02 6.35372141e+02 6.43947744e+02 + 6.52639091e+02 6.61447746e+02 6.70375290e+02 6.79423329e+02 6.88593490e+02 + 6.97887420e+02 7.07306790e+02 7.16853293e+02 7.26528644e+02 7.36334584e+02 + 7.46272874e+02 7.56345302e+02 7.66553676e+02 7.76899833e+02 7.87385631e+02 + 7.98012956e+02 8.08783718e+02 8.19699853e+02 8.30763322e+02 8.41976115e+02 + 8.53340247e+02 8.64857760e+02 8.76530724e+02 8.88361238e+02 9.00351429e+02 + 9.12503451e+02 9.24819488e+02 9.37301755e+02 9.49952494e+02 9.62773980e+02 + 9.75768518e+02 9.88938442e+02 1.00228612e+03 1.01581395e+03 1.02952437e+03 + 1.04341984e+03 1.05750285e+03 1.07177594e+03 1.08624167e+03 1.10090265e+03 + 1.11576151e+03 1.13082091e+03 1.14608358e+03 1.16155224e+03 1.17722968e+03 + 1.19311872e+03 1.20922222e+03 1.22554306e+03 1.24208419e+03 1.25884857e+03 + 1.27583922e+03 1.29305919e+03 1.31051158e+03 1.32819952e+03 1.34612620e+03 + 1.36429483e+03 1.38270869e+03 1.40137107e+03 1.42028535e+03 1.43945490e+03 + 1.45888319e+03 1.47857370e+03 1.49852998e+03 1.51875560e+03 1.53925421e+03 + 1.56002949e+03 1.58108517e+03 1.60242504e+03 1.62405293e+03 1.64597273e+03 + 1.66818839e+03 1.69070388e+03 1.71352328e+03 1.73665066e+03 1.76009019e+03 + 1.78384609e+03 1.80792261e+03 1.83232410e+03 1.85705494e+03 1.88211956e+03 + 1.90752249e+03 1.93326827e+03 1.95936155e+03 1.98580700e+03 2.01260939e+03 + 2.03977353e+03 2.06730431e+03 2.09520667e+03 2.12348562e+03 2.15214626e+03 + 2.18119372e+03 2.21063324e+03 2.24047011e+03 2.27070968e+03 2.30135739e+03 + 2.33241876e+03 2.36389936e+03 2.39580485e+03 2.42814097e+03 2.46091353e+03 + 2.49412842e+03 2.52779162e+03 2.56190916e+03 2.59648719e+03 2.63153191e+03 + 2.66704964e+03 2.70304674e+03 2.73952970e+03 2.77650507e+03 2.81397949e+03 + 2.85195970e+03 2.89045253e+03 2.92946490e+03 2.96900382e+03 3.00907640e+03 + 3.04968983e+03 3.09085142e+03 3.13256857e+03 3.17484877e+03 3.21769963e+03 + 3.26112884e+03 3.30514422e+03 3.34975367e+03 3.39496522e+03 3.44078698e+03 + 3.48722720e+03 3.53429423e+03 3.58199651e+03 3.63034263e+03 3.67934128e+03 + 3.72900126e+03 3.77933150e+03 3.83034105e+03 3.88203907e+03 3.93443486e+03 + 3.98753784e+03 4.04135754e+03 4.09590365e+03 4.15118596e+03 4.20721442e+03 + 4.26399909e+03 4.32155018e+03 4.37987804e+03 4.43899315e+03 4.49890614e+03 + 4.55962777e+03 4.62116895e+03 4.68354076e+03 4.74675440e+03 4.81082123e+03 + 4.87575277e+03 4.94156069e+03 5.00825682e+03 5.07585314e+03 5.14436181e+03 + 5.21379514e+03 5.28416561e+03 5.35548586e+03 5.42776873e+03 5.50102719e+03 + 5.57527443e+03 5.65052377e+03 5.72678876e+03 5.80408309e+03 5.88242066e+03 + 5.96181555e+03 6.04228203e+03 6.12383457e+03 6.20648782e+03 6.29025664e+03 + 6.37515608e+03 6.46120141e+03 6.54840809e+03 6.63679180e+03 6.72636842e+03 + 6.81715406e+03 6.90916502e+03 7.00241786e+03 7.09692932e+03 7.19271641e+03 + 7.28979633e+03 7.38818654e+03 7.48790472e+03 7.58896879e+03 7.69139692e+03 + 7.79520752e+03 7.90041925e+03 8.00705102e+03 8.11512200e+03 8.22465161e+03 + 8.33565953e+03 8.44816573e+03 8.56219042e+03 8.67775410e+03 8.79487754e+03 + 8.91358179e+03 9.03388820e+03 9.15581837e+03 9.27939423e+03 9.40463799e+03 + 9.53157217e+03 9.66021957e+03 9.79060332e+03 9.92274686e+03 1.00566739e+04 + 1.01924086e+04 1.03299753e+04 1.04693988e+04 1.06107040e+04 1.07539164e+04 + 1.08990618e+04 1.10461661e+04 1.11952560e+04 1.13463581e+04 1.14994996e+04 + 1.16547081e+04 1.18120114e+04 1.19714378e+04 1.21330160e+04 1.22967751e+04 + 1.24627443e+04 1.26309537e+04 1.28014334e+04 1.29742140e+04 1.31493267e+04 + 1.33268028e+04 1.35066744e+04 1.36889736e+04 1.38737334e+04 1.40609868e+04 + 1.42507676e+04 1.44431099e+04 1.46380482e+04 1.48356176e+04 1.50358536e+04 + 1.52387922e+04 1.54444698e+04 1.56529234e+04 1.58641905e+04 1.60783091e+04 + 1.62953177e+04 1.65152552e+04 1.67381612e+04 1.69640758e+04 1.71930395e+04 + 1.74250936e+04 1.76602796e+04 1.78986400e+04 1.81402175e+04 1.83850556e+04 + 1.86331983e+04 1.88846901e+04 1.91395763e+04 1.93979027e+04 1.96597157e+04 + 1.99250625e+04 2.01939905e+04 2.04665484e+04 2.07427849e+04 2.10227497e+04 + 2.13064933e+04 2.15940665e+04 2.18855211e+04 2.21809095e+04 2.24802847e+04 + 2.27837006e+04 2.30912116e+04 2.34028732e+04 2.37187412e+04 2.40388725e+04 + 2.43633245e+04 2.46921558e+04 2.50254252e+04 2.53631928e+04 2.57055192e+04 + 2.60524660e+04 2.64040955e+04 2.67604709e+04 2.71216563e+04 2.74877167e+04 + 2.78587178e+04 2.82347262e+04 2.86158096e+04 2.90020365e+04 2.93934763e+04 + 2.97901994e+04 3.01922770e+04 3.05997814e+04 3.10127860e+04 3.14313648e+04 + 3.18555932e+04 3.22855473e+04 3.27213046e+04 3.31629433e+04 3.36105427e+04 + 3.40641834e+04 3.45239469e+04 3.49899158e+04 3.54621738e+04 3.59408060e+04 + 3.64258982e+04 3.69175376e+04 3.74158128e+04 3.79208131e+04 3.84326294e+04 + 3.89513537e+04 3.94770792e+04 4.00099004e+04 4.05499131e+04 4.10972143e+04 + 4.16519024e+04 4.22140771e+04 4.27838395e+04 4.33612920e+04 4.39465383e+04 + 4.45396837e+04 4.51408347e+04 4.57500995e+04 4.63675875e+04 4.69934097e+04 + 4.76276787e+04 4.82705083e+04 4.89220142e+04 4.95823135e+04 5.02515248e+04 + 5.09297684e+04 5.16171663e+04 5.23138419e+04 5.30199206e+04 5.37355292e+04 + 5.44607964e+04 5.51958524e+04 5.59408296e+04 5.66958616e+04 5.74610843e+04 + 5.82366352e+04 5.90226537e+04 5.98192810e+04 6.06266604e+04 6.14449370e+04 + 6.22742579e+04 6.31147720e+04 6.39666306e+04 6.48299867e+04 6.57049955e+04 + 6.65918142e+04 6.74906024e+04 6.84015214e+04 6.93247351e+04 7.02604094e+04 + 7.12087125e+04 7.21698148e+04 7.31438891e+04 7.41311104e+04 7.51316562e+04 + 7.61457064e+04 7.71734432e+04 7.82150513e+04 7.92707180e+04 8.03406330e+04 + 8.14249886e+04 8.25239797e+04 8.36378039e+04 8.47666613e+04 8.59107549e+04 + 8.70702904e+04 8.82454760e+04 8.94365231e+04 9.06436457e+04 9.18670608e+04 + 9.31069884e+04 9.43636512e+04 9.56372751e+04 9.69280891e+04 9.82363252e+04 + 9.95622186e+04 1.00906007e+05 1.02267933e+05 1.03648241e+05 1.05047179e+05 + 1.06464998e+05 1.07901954e+05 1.09358304e+05 1.10834311e+05 1.12330239e+05 + 1.13846357e+05 1.15382939e+05 1.16940259e+05 1.18518599e+05 1.20118242e+05 + 1.21739475e+05 1.23382590e+05 1.25047882e+05 1.26735650e+05 1.28446198e+05 + 1.30179833e+05 1.31936867e+05 1.33717616e+05 1.35522400e+05 1.37351542e+05 + 1.39205373e+05 1.41084224e+05 1.42988435e+05 1.44918346e+05 1.46874306e+05 + 1.48856665e+05 1.50865780e+05 1.52902011e+05 1.54965726e+05 1.57057295e+05 + 1.59177094e+05 1.61325503e+05 1.63502909e+05 1.65709704e+05 1.67946284e+05 + 1.70213051e+05 1.72510413e+05 1.74838782e+05 1.77198577e+05 1.79590222e+05 + 1.82014146e+05 1.84470787e+05 1.86960585e+05 1.89483987e+05 1.92041448e+05 + 1.94633427e+05 1.97260390e+05 1.99922809e+05 2.02621162e+05 2.05355935e+05 + 2.08127619e+05 2.10936713e+05 2.13783721e+05 2.16669154e+05 2.19593533e+05 + 2.22557381e+05 2.25561233e+05 2.28605628e+05 2.31691112e+05 2.34818242e+05 + 2.37987578e+05 2.41199691e+05 2.44455157e+05 2.47754563e+05 2.51098500e+05 + 2.54487570e+05 2.57922383e+05 2.61403555e+05 2.64931713e+05 2.68507490e+05 + 2.72131529e+05 2.75804482e+05 2.79527008e+05 2.83299778e+05 2.87123468e+05 + 2.90998767e+05 2.94926370e+05 2.98906984e+05 3.02941325e+05 3.07030117e+05 + 3.11174095e+05 3.15374004e+05 3.19630600e+05 3.23944646e+05 3.28316919e+05 + 3.32748205e+05 3.37239300e+05 3.41791010e+05 3.46404155e+05 3.51079564e+05 + 3.55818077e+05 3.60620545e+05 3.65487832e+05 3.70420812e+05 3.75420373e+05 + 3.80487413e+05 3.85622842e+05 3.90827585e+05 3.96102575e+05 4.01448762e+05 + 4.06867107e+05 4.12358582e+05 4.17924176e+05 4.23564889e+05 4.29281734e+05 + 4.35075740e+05 4.40947946e+05 4.46899410e+05 4.52931201e+05 4.59044403e+05 + 4.65240114e+05 4.71519449e+05 4.77883536e+05 4.84333518e+05 4.90870556e+05 + 4.97495824e+05 5.04210514e+05 5.11015831e+05 5.17912999e+05 5.24903259e+05 + 5.31987866e+05 5.39168093e+05 5.46445232e+05 5.53820590e+05 5.61295494e+05 + 5.68871286e+05 5.76549328e+05 5.84331000e+05 5.92217702e+05 6.00210850e+05 + 6.08311882e+05 6.16522253e+05 6.24843439e+05 6.33276936e+05 6.41824259e+05 + 6.50486946e+05 6.59266553e+05 6.68164658e+05 6.77182860e+05 6.86322781e+05 + 6.95586064e+05 7.04974372e+05 7.14489394e+05 7.24132841e+05 7.33906444e+05 + 7.43811962e+05 7.53851175e+05 7.64025886e+05 7.74337925e+05 7.84789146e+05 + 7.95381426e+05 8.06116670e+05 8.16996808e+05 8.28023794e+05 8.39199611e+05 + 8.50526269e+05 8.62005801e+05 8.73640273e+05 8.85431775e+05 8.97382427e+05 + 9.09494376e+05 9.21769800e+05 9.34210905e+05 9.46819927e+05 9.59599133e+05 + 9.72550820e+05 9.85677315e+05 9.98980978e+05 1.01246420e+06 1.02612941e+06 + 1.03997905e+06 1.05401562e+06 1.06824165e+06 1.08265968e+06 1.09727231e+06 + 1.11208217e+06 1.12709191e+06 1.14230425e+06 1.15772190e+06 1.17334765e+06 + 1.18918429e+06 1.20523468e+06 1.22150171e+06 1.23798829e+06 1.25469738e+06 + 1.27163201e+06 1.28879519e+06 1.30619003e+06 1.32381965e+06 1.34168721e+06 + 1.35979593e+06 1.37814906e+06 1.39674991e+06 1.41560181e+06 1.43470815e+06 + 1.45407237e+06 1.47369795e+06 1.49358842e+06 1.51374735e+06 1.53417836e+06 + 1.55488513e+06 1.57587137e+06 1.59714087e+06 1.61869744e+06 1.64054497e+06 + 1.66268736e+06 1.68512861e+06 1.70787275e+06 1.73092387e+06 1.75428611e+06 + 1.77796367e+06 1.80196080e+06 1.82628182e+06 1.85093111e+06 1.87591308e+06 + 1.90123223e+06 1.92689312e+06 1.95290035e+06 1.97925860e+06 2.00597261e+06 + 2.03304717e+06 2.06048716e+06 2.08829750e+06 2.11648321e+06 2.14504933e+06 + 2.17400101e+06 2.20334345e+06 2.23308192e+06 2.26322178e+06 2.29376843e+06 + 2.32472736e+06 2.35610415e+06 2.38790444e+06 2.42013393e+06 2.45279842e+06 + 2.48590378e+06 2.51945596e+06 2.55346100e+06 2.58792500e+06 2.62285416e+06 + 2.65825476e+06 2.69413316e+06 2.73049582e+06 2.76734925e+06 2.80470010e+06 + 2.84255507e+06 2.88092097e+06 2.91980469e+06 2.95921322e+06 2.99915365e+06 + 1.51514411e-06 1.53559398e-06 1.55631985e-06 1.57732546e-06 1.59861459e-06 + 1.62019105e-06 1.64205873e-06 1.66422156e-06 1.68668352e-06 1.70944864e-06 + 1.73252103e-06 1.75590483e-06 1.77960423e-06 1.80362351e-06 1.82796697e-06 + 1.85263900e-06 1.87764402e-06 1.90298654e-06 1.92867110e-06 1.95470233e-06 + 1.98108490e-06 2.00782356e-06 2.03492310e-06 2.06238841e-06 2.09022442e-06 + 2.11843613e-06 2.14702861e-06 2.17600701e-06 2.20537652e-06 2.23514243e-06 + 2.26531010e-06 2.29588494e-06 2.32687244e-06 2.35827818e-06 2.39010781e-06 + 2.42236703e-06 2.45506166e-06 2.48819757e-06 2.52178072e-06 2.55581713e-06 + 2.59031293e-06 2.62527433e-06 2.66070759e-06 2.69661910e-06 2.73301530e-06 + 2.76990274e-06 2.80728805e-06 2.84517795e-06 2.88357925e-06 2.92249885e-06 + 2.96194375e-06 3.00192104e-06 3.04243789e-06 3.08350160e-06 3.12511955e-06 + 3.16729922e-06 3.21004818e-06 3.25337412e-06 3.29728483e-06 3.34178821e-06 + 3.38689225e-06 3.43260505e-06 3.47893484e-06 3.52588994e-06 3.57347879e-06 + 3.62170995e-06 3.67059208e-06 3.72013398e-06 3.77034453e-06 3.82123279e-06 + 3.87280787e-06 3.92507907e-06 3.97805577e-06 4.03174749e-06 4.08616389e-06 + 4.14131475e-06 4.19720997e-06 4.25385962e-06 4.31127386e-06 4.36946302e-06 + 4.42843756e-06 4.48820807e-06 4.54878531e-06 4.61018016e-06 4.67240365e-06 + 4.73546697e-06 4.79938146e-06 4.86415859e-06 4.92981003e-06 4.99634755e-06 + 5.06378314e-06 5.13212890e-06 5.20139712e-06 5.27160025e-06 5.34275092e-06 + 5.41486190e-06 5.48794616e-06 5.56201684e-06 5.63708725e-06 5.71317088e-06 + 5.79028141e-06 5.86843270e-06 5.94763880e-06 6.02791394e-06 6.10927255e-06 + 6.19172925e-06 6.27529887e-06 6.35999643e-06 6.44583715e-06 6.53283646e-06 + 6.62101000e-06 6.71037362e-06 6.80094337e-06 6.89273554e-06 6.98576663e-06 + 7.08005335e-06 7.17561266e-06 7.27246174e-06 7.37061798e-06 7.47009904e-06 + 7.57092278e-06 7.67310735e-06 7.77667110e-06 7.88163264e-06 7.98801085e-06 + 8.09582484e-06 8.20509399e-06 8.31583795e-06 8.42807662e-06 8.54183017e-06 + 8.65711905e-06 8.77396398e-06 8.89238596e-06 9.01240628e-06 9.13404651e-06 + 9.25732852e-06 9.38227446e-06 9.50890680e-06 9.63724829e-06 9.76732200e-06 + 9.89915131e-06 1.00327599e-05 1.01681718e-05 1.03054114e-05 1.04445033e-05 + 1.05854725e-05 1.07283444e-05 1.08731446e-05 1.10198992e-05 1.11686345e-05 + 1.13193773e-05 1.14721546e-05 1.16269940e-05 1.17839233e-05 1.19429706e-05 + 1.21041646e-05 1.22675342e-05 1.24331089e-05 1.26009182e-05 1.27709925e-05 + 1.29433623e-05 1.31180586e-05 1.32951127e-05 1.34745565e-05 1.36564223e-05 + 1.38407427e-05 1.40275509e-05 1.42168804e-05 1.44087653e-05 1.46032400e-05 + 1.48003396e-05 1.50000995e-05 1.52025554e-05 1.54077440e-05 1.56157019e-05 + 1.58264667e-05 1.60400761e-05 1.62565686e-05 1.64759832e-05 1.66983591e-05 + 1.69237365e-05 1.71521557e-05 1.73836580e-05 1.76182848e-05 1.78560784e-05 + 1.80970814e-05 1.83413373e-05 1.85888899e-05 1.88397837e-05 1.90940638e-05 + 1.93517759e-05 1.96129664e-05 1.98776821e-05 2.01459707e-05 2.04178804e-05 + 2.06934601e-05 2.09727592e-05 2.12558280e-05 2.15427174e-05 2.18334790e-05 + 2.21281649e-05 2.24268282e-05 2.27295226e-05 2.30363024e-05 2.33472229e-05 + 2.36623398e-05 2.39817098e-05 2.43053904e-05 2.46334396e-05 2.49659166e-05 + 2.53028810e-05 2.56443934e-05 2.59905151e-05 2.63413085e-05 2.66968365e-05 + 2.70571631e-05 2.74223530e-05 2.77924718e-05 2.81675861e-05 2.85477634e-05 + 2.89330718e-05 2.93235808e-05 2.97193605e-05 3.01204820e-05 3.05270174e-05 + 3.09390399e-05 3.13566233e-05 3.17798429e-05 3.22087747e-05 3.26434958e-05 + 3.30840843e-05 3.35306194e-05 3.39831813e-05 3.44418515e-05 3.49067124e-05 + 3.53778474e-05 3.58553414e-05 3.63392801e-05 3.68297505e-05 3.73268407e-05 + 3.78306402e-05 3.83412395e-05 3.88587303e-05 3.93832056e-05 3.99147598e-05 + 4.04534884e-05 4.09994881e-05 4.15528573e-05 4.21136952e-05 4.26821027e-05 + 4.32581821e-05 4.38420367e-05 4.44337716e-05 4.50334932e-05 4.56413092e-05 + 4.62573288e-05 4.68816629e-05 4.75144236e-05 4.81557246e-05 4.88056813e-05 + 4.94644104e-05 5.01320304e-05 5.08086612e-05 5.14944245e-05 5.21894435e-05 + 5.28938432e-05 5.36077501e-05 5.43312927e-05 5.50646008e-05 5.58078064e-05 + 5.65610431e-05 5.73244461e-05 5.80981528e-05 5.88823022e-05 5.96770352e-05 + 6.04824947e-05 6.12988255e-05 6.21261743e-05 6.29646898e-05 6.38145227e-05 + 6.46758258e-05 6.55487539e-05 6.64334638e-05 6.73301147e-05 6.82388677e-05 + 6.91598861e-05 7.00933354e-05 7.10393835e-05 7.19982003e-05 7.29699583e-05 + 7.39548321e-05 7.49529987e-05 7.59646376e-05 7.69899305e-05 7.80290617e-05 + 7.90822181e-05 8.01495889e-05 8.12313660e-05 8.23277438e-05 8.34389194e-05 + 8.45650925e-05 8.57064656e-05 8.68632437e-05 8.80356348e-05 8.92238497e-05 + 9.04281018e-05 9.16486078e-05 9.28855869e-05 9.41392614e-05 9.54098568e-05 + 9.66976013e-05 9.80027266e-05 9.93254670e-05 1.00666060e-04 1.02024748e-04 + 1.03401773e-04 1.04797385e-04 1.06211833e-04 1.07645371e-04 1.09098258e-04 + 1.10570755e-04 1.12063126e-04 1.13575639e-04 1.15108567e-04 1.16662184e-04 + 1.18236771e-04 1.19832610e-04 1.21449988e-04 1.23089195e-04 1.24750527e-04 + 1.26434282e-04 1.28140763e-04 1.29870275e-04 1.31623131e-04 1.33399646e-04 + 1.35200138e-04 1.37024931e-04 1.38874353e-04 1.40748737e-04 1.42648419e-04 + 1.44573741e-04 1.46525050e-04 1.48502695e-04 1.50507032e-04 1.52538422e-04 + 1.54597229e-04 1.56683824e-04 1.58798582e-04 1.60941883e-04 1.63114112e-04 + 1.65315659e-04 1.67546920e-04 1.69808297e-04 1.72100196e-04 1.74423028e-04 + 1.76777212e-04 1.79163169e-04 1.81581330e-04 1.84032129e-04 1.86516007e-04 + 1.89033409e-04 1.91584788e-04 1.94170603e-04 1.96791319e-04 1.99447407e-04 + 2.02139344e-04 2.04867614e-04 2.07632707e-04 2.10435121e-04 2.13275359e-04 + 2.16153931e-04 2.19071356e-04 2.22028156e-04 2.25024865e-04 2.28062020e-04 + 2.31140168e-04 2.34259861e-04 2.37421661e-04 2.40626136e-04 2.43873861e-04 + 2.47165421e-04 2.50501406e-04 2.53882418e-04 2.57309063e-04 2.60781957e-04 + 2.64301725e-04 2.67868999e-04 2.71484421e-04 2.75148639e-04 2.78862314e-04 + 2.82626112e-04 2.86440710e-04 2.90306793e-04 2.94225057e-04 2.98196206e-04 + 3.02220953e-04 3.06300022e-04 3.10434146e-04 3.14624068e-04 3.18870542e-04 + 3.23174330e-04 3.27536206e-04 3.31956954e-04 3.36437370e-04 3.40978257e-04 + 3.45580432e-04 3.50244723e-04 3.54971968e-04 3.59763016e-04 3.64618729e-04 + 3.69539979e-04 3.74527651e-04 3.79582642e-04 3.84705860e-04 3.89898226e-04 + 3.95160673e-04 4.00494147e-04 4.05899607e-04 4.11378024e-04 4.16930384e-04 + 4.22557683e-04 4.28260934e-04 4.34041162e-04 4.39899405e-04 4.45836717e-04 + 4.51854164e-04 4.57952829e-04 4.64133808e-04 4.70398211e-04 4.76747164e-04 + 4.83181809e-04 4.89703302e-04 4.96312816e-04 5.03011539e-04 5.09800673e-04 + 5.16681441e-04 5.23655078e-04 5.30722838e-04 5.37885992e-04 5.45145826e-04 + 5.52503646e-04 5.59960775e-04 5.67518552e-04 5.75178336e-04 5.82941505e-04 + 5.90809452e-04 5.98783593e-04 6.06865361e-04 6.15056208e-04 6.23357607e-04 + 6.31771050e-04 6.40298049e-04 6.48940137e-04 6.57698866e-04 6.66575812e-04 + 6.75572570e-04 6.84690757e-04 6.93932012e-04 7.03297995e-04 7.12790392e-04 + 7.22410907e-04 7.32161269e-04 7.42043233e-04 7.52058572e-04 7.62209089e-04 + 7.72496607e-04 7.82922975e-04 7.93490068e-04 8.04199785e-04 8.15054050e-04 + 8.26054815e-04 8.37204057e-04 8.48503780e-04 8.59956016e-04 8.71562821e-04 + 8.83326284e-04 8.95248518e-04 9.07331666e-04 9.19577900e-04 9.31989421e-04 + 9.44568460e-04 9.57317278e-04 9.70238166e-04 9.83333448e-04 9.96605476e-04 + 1.01005664e-03 1.02368935e-03 1.03750606e-03 1.05150925e-03 1.06570145e-03 + 1.08008519e-03 1.09466308e-03 1.10943772e-03 1.12441177e-03 1.13958793e-03 + 1.15496892e-03 1.17055751e-03 1.18635650e-03 1.20236872e-03 1.21859707e-03 + 1.23504444e-03 1.25171381e-03 1.26860816e-03 1.28573053e-03 1.30308401e-03 + 1.32067170e-03 1.33849678e-03 1.35656243e-03 1.37487193e-03 1.39342854e-03 + 1.41223561e-03 1.43129652e-03 1.45061470e-03 1.47019361e-03 1.49003678e-03 + 1.51014777e-03 1.53053020e-03 1.55118773e-03 1.57212407e-03 1.59334299e-03 + 1.61484830e-03 1.63664387e-03 1.65873361e-03 1.68112150e-03 1.70381156e-03 + 1.72680786e-03 1.75011455e-03 1.77373580e-03 1.79767587e-03 1.82193906e-03 + 1.84652973e-03 1.87145230e-03 1.89671124e-03 1.92231111e-03 1.94825650e-03 + 1.97455207e-03 2.00120255e-03 2.02821273e-03 2.05558747e-03 2.08333169e-03 + 2.11145037e-03 2.13994856e-03 2.16883140e-03 2.19810406e-03 2.22777182e-03 + 2.25784000e-03 2.28831402e-03 2.31919934e-03 2.35050151e-03 2.38222618e-03 + 2.41437903e-03 2.44696584e-03 2.47999248e-03 2.51346488e-03 2.54738906e-03 + 2.58177111e-03 2.61661721e-03 2.65193363e-03 2.68772672e-03 2.72400290e-03 + 2.76076870e-03 2.79803073e-03 2.83579568e-03 2.87407035e-03 2.91286161e-03 + 2.95217643e-03 2.99202189e-03 3.03240514e-03 3.07333344e-03 3.11481415e-03 + 3.15685472e-03 3.19946271e-03 3.24264578e-03 3.28641170e-03 3.33076832e-03 + 3.37572362e-03 3.42128568e-03 3.46746269e-03 3.51426295e-03 3.56169487e-03 + 3.60976698e-03 3.65848792e-03 3.70786645e-03 3.75791143e-03 3.80863187e-03 + 3.86003689e-03 3.91213571e-03 3.96493772e-03 4.01845239e-03 4.07268934e-03 + 4.12765833e-03 4.18336924e-03 4.23983207e-03 4.29705699e-03 4.35505426e-03 + 4.41383433e-03 4.47340774e-03 4.53378522e-03 4.59497761e-03 4.65699591e-03 + 4.71985128e-03 4.78355500e-03 4.84811852e-03 4.91355347e-03 4.97987158e-03 + 5.04708479e-03 5.11520517e-03 5.18424497e-03 5.25421660e-03 5.32513264e-03 + 5.39700583e-03 5.46984909e-03 5.54367551e-03 5.61849837e-03 5.69433110e-03 + 5.77118736e-03 5.84908093e-03 5.92802584e-03 6.00803626e-03 6.08912659e-03 + 6.17131138e-03 6.25460542e-03 6.33902369e-03 6.42458134e-03 6.51129376e-03 + 6.59917653e-03 6.68824546e-03 6.77851655e-03 6.87000603e-03 6.96273034e-03 + 7.05670614e-03 7.15195034e-03 7.24848004e-03 7.34631260e-03 7.44546561e-03 + 7.54595688e-03 7.64780448e-03 7.75102672e-03 7.85564214e-03 7.96166955e-03 + 8.06912802e-03 8.17803685e-03 8.28841561e-03 8.40028416e-03 8.51366260e-03 + 8.62857130e-03 8.74503092e-03 8.86306239e-03 8.98268694e-03 9.10392605e-03 + 9.22680152e-03 9.35133544e-03 9.47755019e-03 9.60546846e-03 9.73511324e-03 + 9.86650783e-03 9.99967585e-03 1.01346412e-02 1.02714283e-02 1.04100615e-02 + 1.05505658e-02 1.06929666e-02 1.08372893e-02 1.09835599e-02 1.11318048e-02 + 1.12820505e-02 1.14343240e-02 1.15886528e-02 1.17450646e-02 1.19035875e-02 + 1.20642499e-02 1.22270808e-02 1.23921094e-02 1.25593654e-02 1.27288789e-02 + 1.29006802e-02 1.30748004e-02 1.32512707e-02 1.34301228e-02 1.36113888e-02 + 1.37951014e-02 1.39812936e-02 1.41699987e-02 1.43612509e-02 1.45550843e-02 + 1.47515340e-02 1.49506351e-02 1.51524234e-02 1.53569353e-02 1.55642075e-02 + 1.57742773e-02 1.59871823e-02 1.62029609e-02 1.64216519e-02 1.66432945e-02 + 1.68679287e-02 1.70955947e-02 1.73263336e-02 1.75601867e-02 1.77971961e-02 + 1.80374044e-02 1.82808548e-02 1.85275911e-02 1.87776576e-02 1.90310992e-02 + 1.92879614e-02 1.95482906e-02 1.98121334e-02 2.00795373e-02 2.03505503e-02 + 2.06252212e-02 2.09035994e-02 2.11857347e-02 2.14716781e-02 2.17614808e-02 + 2.20551950e-02 2.23528734e-02 2.26545697e-02 2.29603378e-02 2.32702330e-02 + 2.35843107e-02 2.39026276e-02 2.42252408e-02 2.45522083e-02 2.48835889e-02 + 2.52194421e-02 2.55598283e-02 2.59048087e-02 2.62544453e-02 2.66088009e-02 + 2.69679393e-02 2.73319249e-02 2.77008232e-02 2.80747006e-02 2.84536242e-02 + 2.88376620e-02 2.92268833e-02 2.96213578e-02 3.00211566e-02 3.04263514e-02 + 3.08370152e-02 3.12532216e-02 3.16750456e-02 3.21025629e-02 3.25358505e-02 + 3.29749861e-02 3.34200487e-02 3.38711183e-02 3.43282759e-02 3.47916039e-02 + 3.52611853e-02 3.57371047e-02 3.62194475e-02 3.67083006e-02 3.72037516e-02 + 3.77058898e-02 3.82148053e-02 3.87305896e-02 3.92533354e-02 3.97831368e-02 + 4.03200888e-02 4.08642881e-02 4.14158324e-02 4.19748209e-02 4.25413541e-02 + 4.31155337e-02 4.36974630e-02 4.42872467e-02 4.48849906e-02 4.54908022e-02 + 4.61047905e-02 4.67270657e-02 4.73577398e-02 4.79969261e-02 4.86447395e-02 + 4.93012964e-02 4.99667148e-02 5.06411144e-02 5.13246163e-02 5.20173434e-02 + 5.27194202e-02 5.34309730e-02 5.41521296e-02 5.48830196e-02 5.56237744e-02 + 5.63745271e-02 5.71354128e-02 5.79065681e-02 5.86881317e-02 5.94802440e-02 + 6.02830474e-02 6.10966863e-02 6.19213068e-02 6.27570572e-02 6.36040877e-02 + 6.44625506e-02 6.53326001e-02 6.62143926e-02 6.71080867e-02 6.80138429e-02 + 6.89318241e-02 6.98621953e-02 7.08051237e-02 7.17607788e-02 7.27293323e-02 + 7.37109584e-02 7.47058334e-02 7.57141363e-02 7.67360482e-02 7.77717528e-02 + 7.88214363e-02 7.98852873e-02 8.09634971e-02 8.20562595e-02 8.31637709e-02 + 8.42862303e-02 8.54238396e-02 8.65768031e-02 8.77453282e-02 8.89296248e-02 + 9.01299058e-02 9.13463870e-02 9.25792870e-02 9.38288274e-02 9.50952329e-02 + 9.63787310e-02 9.76795524e-02 9.89979310e-02 1.00334104e-01 1.01688311e-01 + 1.03060795e-01 1.04451805e-01 1.05861588e-01 1.07290399e-01 1.08738495e-01 + 1.10206136e-01 1.11693586e-01 1.13201111e-01 1.14728984e-01 1.16277479e-01 + 1.17846873e-01 1.19437449e-01 1.21049494e-01 1.22683296e-01 1.24339149e-01 + 1.26017352e-01 1.27718205e-01 1.29442015e-01 1.31189090e-01 1.32959747e-01 + 1.34754301e-01 1.36573077e-01 1.38416400e-01 1.40284603e-01 1.42178021e-01 + 1.44096994e-01 1.46041868e-01 1.48012992e-01 1.50010719e-01 1.52035411e-01 + 1.54087429e-01 1.56167143e-01 1.58274927e-01 1.60411160e-01 1.62576226e-01 + 1.64770513e-01 1.66994417e-01 1.69248337e-01 1.71532678e-01 1.73847850e-01 + 1.76194270e-01 1.78572360e-01 1.80982547e-01 1.83425264e-01 1.85900951e-01 + 1.88410051e-01 1.90953017e-01 1.93530306e-01 1.96142380e-01 1.98789709e-01 + 2.01472769e-01 2.04192042e-01 2.06948017e-01 2.09741189e-01 2.12572061e-01 + 2.15441141e-01 2.18348945e-01 2.21295996e-01 2.24282822e-01 2.27309962e-01 + 2.30377959e-01 2.33487365e-01 2.36638739e-01 2.39832646e-01 2.43069662e-01 + 2.46350367e-01 2.49675352e-01 2.53045214e-01 2.56460560e-01 2.59922002e-01 + 2.63430163e-01 2.66985673e-01 2.70589173e-01 2.74241308e-01 2.77942737e-01 + 2.81694123e-01 2.85496142e-01 2.89349477e-01 2.93254820e-01 2.97212873e-01 + 3.01224348e-01 3.05289966e-01 3.09410457e-01 3.13586563e-01 3.17819033e-01 + 3.22108629e-01 3.26456121e-01 3.30862292e-01 3.35327932e-01 3.39853846e-01 + 3.44440845e-01 3.49089755e-01 3.53801411e-01 3.58576660e-01 3.63416361e-01 + 3.68321383e-01 3.73292608e-01 3.78330929e-01 3.83437252e-01 3.88612496e-01 + 3.93857590e-01 3.99173476e-01 4.04561111e-01 4.10021463e-01 4.15555512e-01 + 4.21164255e-01 4.26848699e-01 4.32609866e-01 4.38448791e-01 4.44366524e-01 + 4.50364128e-01 4.56442682e-01 4.62603278e-01 4.68847024e-01 4.75175041e-01 + 4.81588467e-01 4.88088455e-01 4.94676173e-01 5.01352806e-01 5.08119553e-01 + 5.14977630e-01 5.21928271e-01 5.28972724e-01 5.36112257e-01 5.43348151e-01 + 5.50681708e-01 5.58114246e-01 5.65647101e-01 5.73281626e-01 5.81019194e-01 + 5.88861197e-01 5.96809042e-01 6.04864160e-01 6.13027997e-01 6.21302021e-01 + 6.29687720e-01 6.38186600e-01 6.46800189e-01 6.55530036e-01 6.64377709e-01 + 6.73344799e-01 6.82432918e-01 6.91643699e-01 7.00978797e-01 7.10439891e-01 + 7.20028682e-01 7.29746892e-01 7.39596268e-01 7.49578581e-01 7.59695625e-01 + 7.69949219e-01 7.80341205e-01 7.90873452e-01 8.01547852e-01 8.12366325e-01 + 8.23330813e-01 8.34443290e-01 8.45705751e-01 8.57120221e-01 8.68688753e-01 + 8.80413424e-01 8.92296343e-01 9.04339645e-01 9.16545496e-01 9.28916089e-01 + 9.41453647e-01 9.54160425e-01 9.67038705e-01 9.80090803e-01 9.93319066e-01 + 1.00672587e+00 1.02031362e+00 1.03408477e+00 1.04804179e+00 1.06218719e+00 + 1.07652350e+00 1.09105331e+00 1.10577923e+00 1.12070391e+00 1.13583002e+00 + 1.15116029e+00 1.16669748e+00 1.18244437e+00 1.19840379e+00 1.21457862e+00 + 1.23097175e+00 1.24758615e+00 1.26442479e+00 1.28149070e+00 1.29878695e+00 + 1.31631665e+00 1.33408294e+00 1.35208903e+00 1.37033814e+00 1.38883356e+00 + 1.40757862e+00 1.42657667e+00 1.44583114e+00 1.46534549e+00 1.48512323e+00 + 1.50516790e+00 1.52548311e+00 1.54607252e+00 1.56693983e+00 1.58808878e+00 + 1.60952317e+00 1.63124687e+00 1.65326377e+00 1.67557783e+00 1.69819306e+00 + 1.72111354e+00 1.74434336e+00 1.76788672e+00 1.79174785e+00 1.81593103e+00 + 1.84044061e+00 1.86528099e+00 1.89045664e+00 1.91597209e+00 1.94183192e+00 + 1.96804078e+00 1.99460338e+00 2.02152449e+00 2.04880896e+00 2.07646169e+00 + 2.10448764e+00 2.13289186e+00 2.16167945e+00 2.19085559e+00 2.22042551e+00 + 2.25039454e+00 2.28076806e+00 2.31155154e+00 2.34275049e+00 2.37437054e+00 + 2.40641736e+00 2.43889672e+00 2.47181445e+00 2.50517647e+00 2.53898878e+00 + 2.57325745e+00 2.60798864e+00 2.64318860e+00 2.67886366e+00 2.71502022e+00 + 2.75166478e+00 2.78880393e+00 2.82644435e+00 2.86459281e+00 2.90325615e+00 + 2.94244133e+00 2.98215539e+00 3.02240547e+00 3.06319880e+00 3.10454272e+00 + 3.14644466e+00 3.18891215e+00 3.23195282e+00 3.27557441e+00 3.31978476e+00 + 3.36459182e+00 3.41000363e+00 3.45602837e+00 3.50267430e+00 3.54994981e+00 + 3.59786340e+00 3.64642368e+00 3.69563937e+00 3.74551933e+00 3.79607251e+00 + 3.84730801e+00 3.89923504e+00 3.95186292e+00 4.00520112e+00 4.05925923e+00 + 4.11404695e+00 4.16957414e+00 4.22585079e+00 4.28288699e+00 4.34069302e+00 + 4.39927925e+00 4.45865622e+00 4.51883459e+00 4.57982520e+00 4.64163899e+00 + 4.70428708e+00 4.76778073e+00 4.83213135e+00 4.89735051e+00 4.96344994e+00 + 5.03044150e+00 5.09833725e+00 5.16714939e+00 5.23689028e+00 5.30757246e+00 + 5.37920864e+00 5.45181169e+00 5.52539466e+00 5.59997078e+00 5.67555346e+00 + 5.75215627e+00 5.82979298e+00 5.90847756e+00 5.98822414e+00 6.06904706e+00 + 6.15096084e+00 6.23398021e+00 6.31812010e+00 6.40339561e+00 6.48982209e+00 + 6.57741507e+00 6.66619028e+00 6.75616369e+00 6.84735147e+00 6.93977001e+00 + 7.03343592e+00 7.12836604e+00 7.22457742e+00 7.32208737e+00 7.42091341e+00 + 7.52107330e+00 7.62258505e+00 7.72546690e+00 7.82973734e+00 7.93541512e+00 + 8.04251923e+00 8.15106892e+00 8.26108370e+00 8.37258335e+00 8.48558791e+00 + 8.60011769e+00 8.71619327e+00 8.83383553e+00 8.95306559e+00 9.07390491e+00 + 9.19637518e+00 9.32049844e+00 9.44629699e+00 9.57379343e+00 9.70301069e+00 + 9.83397200e+00 9.96670088e+00 1.01012212e+01 1.02375571e+01 1.03757332e+01 + 1.05157742e+01 1.06577054e+01 1.08015522e+01 1.09473405e+01 1.10950965e+01 + 1.12448467e+01 1.13966182e+01 1.15504380e+01 1.17063340e+01 1.18643341e+01 + 1.20244668e+01 1.21867607e+01 1.23512451e+01 1.25179496e+01 1.26869041e+01 + 1.28581389e+01 1.30316849e+01 1.32075732e+01 1.33858355e+01 1.35665038e+01 + 1.37496106e+01 1.39351888e+01 1.41232717e+01 1.43138932e+01 1.45070874e+01 + 1.47028892e+01 1.49013338e+01 1.51024567e+01 1.53062942e+01 1.55128829e+01 + 1.57222599e+01 1.59344629e+01 1.61495300e+01 1.63674998e+01 1.65884115e+01 + 1.68123049e+01 1.70392202e+01 1.72691982e+01 1.75022801e+01 1.77385080e+01 + 1.79779242e+01 1.82205718e+01 1.84664944e+01 1.87157363e+01 1.89683421e+01 + 1.92243574e+01 1.94838281e+01 1.97468008e+01 2.00133229e+01 2.02834423e+01 + 2.05572074e+01 2.08346676e+01 2.11158726e+01 2.14008730e+01 2.16897201e+01 + 2.19824657e+01 2.22791625e+01 2.25798639e+01 2.28846237e+01 2.31934970e+01 + 2.35065390e+01 2.38238062e+01 2.41453556e+01 2.44712449e+01 2.48015327e+01 + 2.51362784e+01 2.54755421e+01 2.58193849e+01 2.61678685e+01 2.65210556e+01 + 2.68790097e+01 2.72417950e+01 2.76094769e+01 2.79821213e+01 2.83597954e+01 + 2.87425669e+01 2.91305046e+01 2.95236783e+01 2.99221587e+01 3.03260174e+01 + 3.07353269e+01 3.11501609e+01 3.15705939e+01 3.19967014e+01 3.24285601e+01 + 3.28662476e+01 3.33098426e+01 3.37594247e+01 3.42150749e+01 3.46768749e+01 + 3.51449079e+01 3.56192579e+01 3.61000102e+01 3.65872511e+01 3.70810684e+01 + 3.75815507e+01 3.80887880e+01 3.86028714e+01 3.91238935e+01 3.96519477e+01 + 4.01871291e+01 4.07295339e+01 4.12792594e+01 4.18364046e+01 4.24010695e+01 + 4.29733558e+01 4.35533661e+01 4.41412049e+01 4.47369777e+01 4.53407916e+01 + 4.59527552e+01 4.65729784e+01 4.72015728e+01 4.78386513e+01 4.84843284e+01 + 4.91387202e+01 4.98019444e+01 5.04741200e+01 5.11553680e+01 5.18458108e+01 + 5.25455725e+01 5.32547788e+01 5.39735573e+01 5.47020371e+01 5.54403492e+01 + 5.61886263e+01 5.69470028e+01 5.77156152e+01 5.84946015e+01 5.92841017e+01 + 6.00842578e+01 6.08952136e+01 6.17171149e+01 6.25501093e+01 6.33943466e+01 + 6.42499786e+01 6.51171590e+01 6.59960438e+01 6.68867908e+01 6.77895602e+01 + 6.87045143e+01 6.96318175e+01 7.05716365e+01 7.15241402e+01 7.24894998e+01 + 7.34678888e+01 7.44594832e+01 7.54644611e+01 7.64830031e+01 7.75152924e+01 + 7.85615144e+01 7.96218573e+01 8.06965116e+01 8.17856705e+01 8.28895297e+01 + 8.40082878e+01 8.51421456e+01 8.62913071e+01 8.74559788e+01 8.86363701e+01 + 8.98326931e+01 9.10451628e+01 9.22739972e+01 9.35194171e+01 9.47816465e+01 + 9.60609121e+01 9.73574439e+01 9.86714750e+01 1.00003242e+02 1.01352983e+02 + 1.02720942e+02 1.04107364e+02 1.05512498e+02 1.06936598e+02 1.08379919e+02 + 1.09842720e+02 1.11325265e+02 1.12827819e+02 1.14350653e+02 1.15894041e+02 + 1.17458261e+02 1.19043592e+02 1.20650320e+02 1.22278735e+02 1.23929128e+02 + 1.25601797e+02 1.27297041e+02 1.29015166e+02 1.30756481e+02 1.32521298e+02 + 1.34309935e+02 1.36122713e+02 1.37959958e+02 1.39822000e+02 1.41709174e+02 + 1.43621820e+02 1.45560280e+02 1.47524903e+02 1.49516044e+02 1.51534058e+02 + 1.53579310e+02 1.55652166e+02 1.57752999e+02 1.59882188e+02 1.62040114e+02 + 1.64227166e+02 1.66443736e+02 1.68690223e+02 1.70967031e+02 1.73274569e+02 + 1.75613251e+02 1.77983499e+02 1.80385738e+02 1.82820400e+02 1.85287923e+02 + 1.87788750e+02 1.90323330e+02 1.92892119e+02 1.95495580e+02 1.98134179e+02 + 2.00808391e+02 2.03518697e+02 2.06265584e+02 2.09049546e+02 2.11871083e+02 + 2.14730702e+02 2.17628917e+02 2.20566249e+02 2.23543226e+02 2.26560384e+02 + 2.29618264e+02 2.32717416e+02 2.35858398e+02 2.39041773e+02 2.42268114e+02 + 2.45538001e+02 2.48852022e+02 2.52210771e+02 2.55614854e+02 2.59064882e+02 + 2.62561474e+02 2.66105260e+02 2.69696877e+02 2.73336969e+02 2.77026192e+02 + 2.80765207e+02 2.84554689e+02 2.88395317e+02 2.92287781e+02 2.96232783e+02 + 3.00231029e+02 3.04283240e+02 3.08390144e+02 3.12552478e+02 3.16770992e+02 + 3.21046442e+02 3.25379599e+02 3.29771239e+02 3.34222154e+02 3.38733142e+02 + 3.43305015e+02 3.47938595e+02 3.52634714e+02 3.57394216e+02 3.62217957e+02 + 3.67106805e+02 3.72061636e+02 3.77083343e+02 3.82172828e+02 3.87331006e+02 + 3.92558803e+02 3.97857160e+02 4.03227029e+02 4.08669374e+02 4.14185175e+02 + 4.19775422e+02 4.25441121e+02 4.31183290e+02 4.37002961e+02 4.42901179e+02 + 4.48879006e+02 4.54937515e+02 4.61077796e+02 4.67300952e+02 4.73608102e+02 + 4.80000379e+02 4.86478933e+02 4.93044927e+02 4.99699543e+02 5.06443976e+02 + 5.13279438e+02 5.20207158e+02 5.27228382e+02 5.34344371e+02 5.41556404e+02 + 5.48865778e+02 5.56273806e+02 5.63781821e+02 5.71391170e+02 5.79103223e+02 + 5.86919366e+02 5.94841002e+02 6.02869557e+02 6.11006473e+02 6.19253213e+02 + 6.27611259e+02 6.36082113e+02 6.44667298e+02 6.53368357e+02 6.62186855e+02 + 6.71124375e+02 6.80182525e+02 6.89362932e+02 6.98667247e+02 7.08097142e+02 + 7.17654312e+02 7.27340476e+02 7.37157373e+02 7.47106768e+02 7.57190450e+02 + 7.67410232e+02 7.77767949e+02 7.88265465e+02 7.98904665e+02 8.09687462e+02 + 8.20615795e+02 8.31691626e+02 8.42916949e+02 8.54293779e+02 8.65824161e+02 + 8.77510169e+02 8.89353903e+02 9.01357492e+02 9.13523092e+02 9.25852892e+02 + 9.38349106e+02 9.51013982e+02 9.63849795e+02 9.76858852e+02 9.90043493e+02 + 1.00340609e+03 1.01694903e+03 1.03067477e+03 1.04458576e+03 1.05868451e+03 + 1.07297355e+03 1.08745545e+03 1.10213281e+03 1.11700827e+03 1.13208451e+03 + 1.14736422e+03 1.16285017e+03 1.17854513e+03 1.19445193e+03 1.21057342e+03 + 1.22691250e+03 1.24347211e+03 1.26025522e+03 1.27726485e+03 1.29450407e+03 + 1.31197596e+03 1.32968367e+03 1.34763038e+03 1.36581931e+03 1.38425374e+03 + 1.40293698e+03 1.42187239e+03 1.44106337e+03 1.46051336e+03 1.48022588e+03 + 1.50020445e+03 1.52045267e+03 1.54097419e+03 1.56177268e+03 1.58285189e+03 + 1.60421560e+03 1.62586766e+03 1.64781196e+03 1.67005244e+03 1.69259310e+03 + 1.71543799e+03 1.73859121e+03 1.76205693e+03 1.78583938e+03 1.80994281e+03 + 1.83437156e+03 1.85913003e+03 1.88422266e+03 1.90965397e+03 1.93542853e+03 + 1.96155096e+03 1.98802597e+03 2.01485831e+03 2.04205280e+03 2.06961434e+03 + 2.09754787e+03 2.12585843e+03 2.15455109e+03 2.18363101e+03 2.21310343e+03 + 2.24297363e+03 2.27324699e+03 2.30392895e+03 2.33502503e+03 2.36654081e+03 + 2.39848195e+03 2.43085420e+03 2.46366339e+03 2.49691539e+03 2.53061620e+03 + 2.56477187e+03 2.59938853e+03 2.63447242e+03 2.67002983e+03 2.70606716e+03 + 2.74259088e+03 2.77960756e+03 2.81712386e+03 2.85514651e+03 2.89368236e+03 + 2.93273832e+03 2.97232142e+03 3.01243877e+03 3.05309759e+03 3.09430517e+03 + 3.13606893e+03 3.17839638e+03 3.22129512e+03 3.26477287e+03 3.30883743e+03 + 3.35349673e+03 3.39875879e+03 3.44463176e+03 3.49112387e+03 3.53824349e+03 + 3.58599907e+03 3.63439922e+03 3.68345262e+03 3.73316809e+03 3.78355457e+03 + 3.83462112e+03 3.88637691e+03 3.93883124e+03 3.99199356e+03 4.04587340e+03 + 4.10048045e+03 4.15582454e+03 4.21191561e+03 4.26876373e+03 4.32637913e+03 + 4.38477217e+03 4.44395333e+03 4.50393327e+03 4.56472275e+03 4.62633270e+03 + 4.68877420e+03 4.75205848e+03 4.81619690e+03 4.88120099e+03 4.94708244e+03 + 5.01385310e+03 5.08152495e+03 5.15011018e+03 5.21962109e+03 5.29007019e+03 + 5.36147014e+03 5.43383378e+03 5.50717410e+03 5.58150430e+03 5.65683773e+03 + 5.73318793e+03 5.81056864e+03 5.88899374e+03 5.96847735e+03 6.04903375e+03 + 6.13067741e+03 6.21342302e+03 6.29728544e+03 6.38227975e+03 6.46842123e+03 + 6.55572536e+03 6.64420783e+03 6.73388454e+03 6.82477162e+03 6.91688540e+03 + 7.01024244e+03 7.10485951e+03 7.20075363e+03 7.29794203e+03 7.39644218e+03 + 7.49627178e+03 7.59744879e+03 7.69999137e+03 7.80391797e+03 7.90924727e+03 + 8.01599819e+03 8.12418992e+03 8.23384192e+03 8.34497389e+03 8.45760580e+03 + 8.57175791e+03 8.68745072e+03 8.80470504e+03 8.92354193e+03 9.04398276e+03 + 9.16604918e+03 9.28976313e+03 9.41514684e+03 9.54222285e+03 9.67101401e+03 + 9.80154345e+03 9.93383465e+03 1.00679114e+04 1.02037977e+04 1.03415182e+04 + 1.04810974e+04 1.06225605e+04 1.07659329e+04 1.09112405e+04 1.10585092e+04 + 1.12077657e+04 1.13590366e+04 1.15123493e+04 1.16677312e+04 1.18252103e+04 + 1.19848148e+04 1.21465736e+04 1.23105156e+04 1.24766704e+04 1.26450677e+04 + 1.28157379e+04 1.29887116e+04 1.31640199e+04 1.33416944e+04 1.35217669e+04 + 1.37042699e+04 1.38892361e+04 1.40766987e+04 1.42666916e+04 1.44592488e+04 + 1.46544049e+04 1.48521951e+04 1.50526548e+04 1.52558201e+04 1.54617276e+04 + 1.56704142e+04 1.58819174e+04 1.60962752e+04 1.63135263e+04 1.65337095e+04 + 1.67568646e+04 1.69830316e+04 1.72122512e+04 1.74445645e+04 1.76800134e+04 + 1.79186401e+04 1.81604876e+04 1.84055993e+04 1.86540192e+04 1.89057921e+04 + 1.91609631e+04 1.94195781e+04 1.96816837e+04 1.99473269e+04 2.02165555e+04 + 2.04894179e+04 2.07659631e+04 2.10462408e+04 2.13303014e+04 2.16181960e+04 + 2.19099763e+04 2.22056947e+04 2.25054044e+04 2.28091593e+04 2.31170140e+04 + 2.34290238e+04 2.37452448e+04 2.40657338e+04 2.43905484e+04 2.47197470e+04 + 2.50533889e+04 2.53915339e+04 2.57342428e+04 2.60815773e+04 2.64335997e+04 + 2.67903734e+04 2.71519624e+04 2.75184318e+04 2.78898474e+04 2.82662760e+04 + 2.86477853e+04 2.90344437e+04 2.94263209e+04 2.98234873e+04 3.02260142e+04 + 3.06339740e+04 3.10474400e+04 3.14664865e+04 3.18911890e+04 3.23216236e+04 + 3.27578678e+04 3.31999999e+04 3.36480995e+04 3.41022471e+04 3.45625243e+04 + 3.50290139e+04 3.55017997e+04 3.59809666e+04 3.64666009e+04 3.69587897e+04 + 3.74576216e+04 3.79631862e+04 3.84755745e+04 3.89948784e+04 3.95211913e+04 + 4.00546079e+04 4.05952240e+04 4.11431368e+04 4.16984447e+04 4.22612476e+04 + 4.28316467e+04 4.34097444e+04 4.39956447e+04 4.45894528e+04 4.51912756e+04 + 4.58012212e+04 4.64193992e+04 4.70459207e+04 4.76808984e+04 4.83244463e+04 + 4.89766802e+04 4.96377173e+04 5.03076764e+04 5.09866779e+04 5.16748439e+04 + 5.23722980e+04 5.30791657e+04 5.37955739e+04 5.45216515e+04 5.52575289e+04 + 5.60033385e+04 5.67592142e+04 5.75252919e+04 5.83017094e+04 5.90886062e+04 + 5.98861237e+04 6.06944053e+04 6.15135963e+04 6.23438438e+04 6.31852972e+04 + 6.40381076e+04 6.49024284e+04 6.57784150e+04 6.66662247e+04 6.75660171e+04 + 6.84779540e+04 6.94021994e+04 7.03389192e+04 7.12882819e+04 7.22504581e+04 + 7.32256209e+04 7.42139453e+04 7.52156092e+04 7.62307924e+04 7.72596776e+04 + 7.83024497e+04 7.93592960e+04 8.04304065e+04 8.15159738e+04 8.26161929e+04 + 8.37312617e+04 8.48613806e+04 8.60067526e+04 8.71675837e+04 8.83440825e+04 + 8.95364604e+04 9.07449319e+04 9.19697141e+04 9.32110271e+04 9.44690942e+04 + 9.57441413e+04 9.70363977e+04 9.83460956e+04 9.96734705e+04 1.01018761e+05 + 1.02382209e+05 1.03764059e+05 1.05164560e+05 1.06583964e+05 1.08022525e+05 + 1.09480502e+05 1.10958158e+05 1.12455758e+05 1.13973570e+05 1.15511869e+05 + 1.17070930e+05 1.18651033e+05 1.20252464e+05 1.21875508e+05 1.23520459e+05 + 1.25187612e+05 1.26877266e+05 1.28589725e+05 1.30325298e+05 1.32084295e+05 + 1.33867034e+05 1.35673834e+05 1.37505020e+05 1.39360922e+05 1.41241873e+05 + 1.43148212e+05 1.45080280e+05 1.47038425e+05 1.49022999e+05 1.51034359e+05 + 1.53072866e+05 1.55138887e+05 1.57232793e+05 1.59354960e+05 1.61505770e+05 + 1.63685609e+05 1.65894870e+05 1.68133949e+05 1.70403249e+05 1.72703178e+05 + 1.75034149e+05 1.77396580e+05 1.79790898e+05 1.82217531e+05 1.84676917e+05 + 1.87169497e+05 1.89695719e+05 1.92256038e+05 1.94850913e+05 1.97480811e+05 + 2.00146205e+05 2.02847573e+05 2.05585402e+05 2.08360183e+05 2.11172416e+05 + 2.14022605e+05 2.16911263e+05 2.19838909e+05 2.22806069e+05 2.25813278e+05 + 2.28861074e+05 2.31950007e+05 2.35080630e+05 2.38253508e+05 2.41469210e+05 + 2.44728314e+05 2.48031406e+05 2.51379080e+05 2.54771938e+05 2.58210588e+05 + 2.61695651e+05 2.65227751e+05 2.68807523e+05 2.72435612e+05 2.76112669e+05 + 2.79839355e+05 2.83616340e+05 2.87444303e+05 2.91323932e+05 2.95255924e+05 + 2.99240986e+05 3.03279835e+05 3.07373196e+05 3.11521804e+05 3.15726407e+05 + 3.19987758e+05 3.24306626e+05 3.28683784e+05 3.33120022e+05 3.37616135e+05 + 3.42172931e+05 3.46791231e+05 3.51471864e+05 3.56215672e+05 3.61023506e+05 + 3.65896232e+05 3.70834725e+05 3.75839872e+05 3.80912574e+05 3.86053742e+05 + 3.91264300e+05 3.96545185e+05 4.01897346e+05 4.07321745e+05 4.12819356e+05 + 4.18391169e+05 4.24038185e+05 4.29761418e+05 4.35561898e+05 4.41440667e+05 + 4.47398781e+05 4.53437311e+05 4.59557344e+05 4.65759979e+05 4.72046330e+05 + 4.78417528e+05 4.84874718e+05 4.91419060e+05 4.98051732e+05 5.04773924e+05 + 5.11586846e+05 5.18491721e+05 5.25489792e+05 5.32582315e+05 5.39770566e+05 + 5.47055836e+05 5.54439436e+05 5.61922691e+05 5.69506949e+05 5.77193570e+05 + 5.84983938e+05 5.92879453e+05 6.00881532e+05 6.08991616e+05 6.17211161e+05 + 6.25541646e+05 6.33984566e+05 6.42541441e+05 6.51213808e+05 6.60003225e+05 + 1.65580254e-01 1.65563515e-01 1.65546741e-01 1.65529929e-01 1.65513082e-01 + 1.65496198e-01 1.65479277e-01 1.65462319e-01 1.65445324e-01 1.65428292e-01 + 1.65411223e-01 1.65394117e-01 1.65376974e-01 1.65359793e-01 1.65342574e-01 + 1.65325318e-01 1.65308025e-01 1.65290693e-01 1.65273323e-01 1.65255915e-01 + 1.65238469e-01 1.65220985e-01 1.65203462e-01 1.65185901e-01 1.65168301e-01 + 1.65150662e-01 1.65132985e-01 1.65115268e-01 1.65097513e-01 1.65079718e-01 + 1.65061884e-01 1.65044011e-01 1.65026098e-01 1.65008145e-01 1.64990153e-01 + 1.64972120e-01 1.64954048e-01 1.64935936e-01 1.64917783e-01 1.64899591e-01 + 1.64881357e-01 1.64863083e-01 1.64844769e-01 1.64826414e-01 1.64808017e-01 + 1.64789580e-01 1.64771102e-01 1.64752582e-01 1.64734021e-01 1.64715418e-01 + 1.64696774e-01 1.64678088e-01 1.64659360e-01 1.64640590e-01 1.64621778e-01 + 1.64602924e-01 1.64584027e-01 1.64565088e-01 1.64546107e-01 1.64527082e-01 + 1.64508015e-01 1.64488905e-01 1.64469751e-01 1.64450555e-01 1.64431315e-01 + 1.64412031e-01 1.64392704e-01 1.64373334e-01 1.64353919e-01 1.64334460e-01 + 1.64314958e-01 1.64295411e-01 1.64275819e-01 1.64256183e-01 1.64236503e-01 + 1.64216777e-01 1.64197007e-01 1.64177192e-01 1.64157331e-01 1.64137425e-01 + 1.64117474e-01 1.64097477e-01 1.64077435e-01 1.64057346e-01 1.64037212e-01 + 1.64017032e-01 1.63996805e-01 1.63976532e-01 1.63956212e-01 1.63935846e-01 + 1.63915433e-01 1.63894973e-01 1.63874465e-01 1.63853911e-01 1.63833309e-01 + 1.63812660e-01 1.63791963e-01 1.63771218e-01 1.63750426e-01 1.63729585e-01 + 1.63708696e-01 1.63687759e-01 1.63666773e-01 1.63645738e-01 1.63624655e-01 + 1.63603523e-01 1.63582341e-01 1.63561111e-01 1.63539831e-01 1.63518501e-01 + 1.63497122e-01 1.63475693e-01 1.63454214e-01 1.63432685e-01 1.63411106e-01 + 1.63389476e-01 1.63367795e-01 1.63346064e-01 1.63324282e-01 1.63302449e-01 + 1.63280565e-01 1.63258629e-01 1.63236642e-01 1.63214603e-01 1.63192512e-01 + 1.63170369e-01 1.63148174e-01 1.63125927e-01 1.63103628e-01 1.63081275e-01 + 1.63058870e-01 1.63036412e-01 1.63013901e-01 1.62991337e-01 1.62968719e-01 + 1.62946048e-01 1.62923323e-01 1.62900544e-01 1.62877710e-01 1.62854823e-01 + 1.62831881e-01 1.62808885e-01 1.62785834e-01 1.62762728e-01 1.62739567e-01 + 1.62716350e-01 1.62693078e-01 1.62669751e-01 1.62646368e-01 1.62622929e-01 + 1.62599433e-01 1.62575882e-01 1.62552274e-01 1.62528609e-01 1.62504888e-01 + 1.62481109e-01 1.62457274e-01 1.62433381e-01 1.62409431e-01 1.62385423e-01 + 1.62361357e-01 1.62337233e-01 1.62313050e-01 1.62288810e-01 1.62264510e-01 + 1.62240152e-01 1.62215735e-01 1.62191259e-01 1.62166724e-01 1.62142129e-01 + 1.62117474e-01 1.62092759e-01 1.62067985e-01 1.62043150e-01 1.62018255e-01 + 1.61993299e-01 1.61968282e-01 1.61943204e-01 1.61918065e-01 1.61892865e-01 + 1.61867603e-01 1.61842279e-01 1.61816893e-01 1.61791445e-01 1.61765935e-01 + 1.61740362e-01 1.61714726e-01 1.61689028e-01 1.61663266e-01 1.61637441e-01 + 1.61611552e-01 1.61585600e-01 1.61559583e-01 1.61533503e-01 1.61507358e-01 + 1.61481148e-01 1.61454874e-01 1.61428535e-01 1.61402130e-01 1.61375660e-01 + 1.61349125e-01 1.61322523e-01 1.61295856e-01 1.61269123e-01 1.61242323e-01 + 1.61215456e-01 1.61188522e-01 1.61161522e-01 1.61134454e-01 1.61107319e-01 + 1.61080115e-01 1.61052844e-01 1.61025505e-01 1.60998098e-01 1.60970621e-01 + 1.60943076e-01 1.60915462e-01 1.60887779e-01 1.60860026e-01 1.60832204e-01 + 1.60804311e-01 1.60776349e-01 1.60748316e-01 1.60720212e-01 1.60692038e-01 + 1.60663792e-01 1.60635475e-01 1.60607087e-01 1.60578627e-01 1.60550095e-01 + 1.60521491e-01 1.60492814e-01 1.60464065e-01 1.60435242e-01 1.60406347e-01 + 1.60377378e-01 1.60348335e-01 1.60319219e-01 1.60290028e-01 1.60260764e-01 + 1.60231424e-01 1.60202010e-01 1.60172520e-01 1.60142955e-01 1.60113315e-01 + 1.60083599e-01 1.60053807e-01 1.60023938e-01 1.59993993e-01 1.59963971e-01 + 1.59933872e-01 1.59903696e-01 1.59873442e-01 1.59843110e-01 1.59812700e-01 + 1.59782212e-01 1.59751645e-01 1.59720999e-01 1.59690274e-01 1.59659470e-01 + 1.59628586e-01 1.59597622e-01 1.59566578e-01 1.59535454e-01 1.59504249e-01 + 1.59472963e-01 1.59441595e-01 1.59410146e-01 1.59378616e-01 1.59347003e-01 + 1.59315308e-01 1.59283531e-01 1.59251670e-01 1.59219726e-01 1.59187699e-01 + 1.59155589e-01 1.59123394e-01 1.59091115e-01 1.59058751e-01 1.59026303e-01 + 1.58993770e-01 1.58961151e-01 1.58928446e-01 1.58895656e-01 1.58862779e-01 + 1.58829816e-01 1.58796766e-01 1.58763628e-01 1.58730404e-01 1.58697092e-01 + 1.58663691e-01 1.58630203e-01 1.58596625e-01 1.58562959e-01 1.58529204e-01 + 1.58495359e-01 1.58461425e-01 1.58427400e-01 1.58393285e-01 1.58359079e-01 + 1.58324782e-01 1.58290394e-01 1.58255915e-01 1.58221343e-01 1.58186679e-01 + 1.58151923e-01 1.58117073e-01 1.58082131e-01 1.58047095e-01 1.58011965e-01 + 1.57976741e-01 1.57941422e-01 1.57906009e-01 1.57870501e-01 1.57834897e-01 + 1.57799197e-01 1.57763402e-01 1.57727510e-01 1.57691521e-01 1.57655435e-01 + 1.57619252e-01 1.57582971e-01 1.57546592e-01 1.57510115e-01 1.57473538e-01 + 1.57436863e-01 1.57400088e-01 1.57363214e-01 1.57326239e-01 1.57289164e-01 + 1.57251989e-01 1.57214712e-01 1.57177333e-01 1.57139853e-01 1.57102271e-01 + 1.57064586e-01 1.57026798e-01 1.56988907e-01 1.56950912e-01 1.56912813e-01 + 1.56874610e-01 1.56836302e-01 1.56797890e-01 1.56759371e-01 1.56720748e-01 + 1.56682017e-01 1.56643181e-01 1.56604237e-01 1.56565187e-01 1.56526028e-01 + 1.56486762e-01 1.56447387e-01 1.56407903e-01 1.56368311e-01 1.56328609e-01 + 1.56288796e-01 1.56248874e-01 1.56208841e-01 1.56168697e-01 1.56128441e-01 + 1.56088074e-01 1.56047594e-01 1.56007002e-01 1.55966297e-01 1.55925478e-01 + 1.55884546e-01 1.55843499e-01 1.55802338e-01 1.55761062e-01 1.55719670e-01 + 1.55678163e-01 1.55636539e-01 1.55594799e-01 1.55552941e-01 1.55510966e-01 + 1.55468873e-01 1.55426662e-01 1.55384333e-01 1.55341884e-01 1.55299315e-01 + 1.55256627e-01 1.55213818e-01 1.55170888e-01 1.55127838e-01 1.55084665e-01 + 1.55041370e-01 1.54997953e-01 1.54954413e-01 1.54910749e-01 1.54866961e-01 + 1.54823050e-01 1.54779013e-01 1.54734851e-01 1.54690564e-01 1.54646150e-01 + 1.54601610e-01 1.54556943e-01 1.54512149e-01 1.54467226e-01 1.54422176e-01 + 1.54376996e-01 1.54331687e-01 1.54286249e-01 1.54240680e-01 1.54194981e-01 + 1.54149150e-01 1.54103188e-01 1.54057094e-01 1.54010867e-01 1.53964507e-01 + 1.53918014e-01 1.53871386e-01 1.53824625e-01 1.53777728e-01 1.53730696e-01 + 1.53683527e-01 1.53636223e-01 1.53588781e-01 1.53541202e-01 1.53493486e-01 + 1.53445630e-01 1.53397636e-01 1.53349503e-01 1.53301229e-01 1.53252815e-01 + 1.53204260e-01 1.53155564e-01 1.53106726e-01 1.53057745e-01 1.53008621e-01 + 1.52959354e-01 1.52909943e-01 1.52860387e-01 1.52810686e-01 1.52760840e-01 + 1.52710847e-01 1.52660708e-01 1.52610421e-01 1.52559987e-01 1.52509404e-01 + 1.52458673e-01 1.52407792e-01 1.52356762e-01 1.52305580e-01 1.52254248e-01 + 1.52202764e-01 1.52151129e-01 1.52099340e-01 1.52047398e-01 1.51995302e-01 + 1.51943052e-01 1.51890647e-01 1.51838087e-01 1.51785370e-01 1.51732497e-01 + 1.51679467e-01 1.51626279e-01 1.51572932e-01 1.51519426e-01 1.51465761e-01 + 1.51411936e-01 1.51357950e-01 1.51303802e-01 1.51249493e-01 1.51195021e-01 + 1.51140386e-01 1.51085587e-01 1.51030624e-01 1.50975496e-01 1.50920202e-01 + 1.50864742e-01 1.50809116e-01 1.50753322e-01 1.50697360e-01 1.50641229e-01 + 1.50584929e-01 1.50528459e-01 1.50471818e-01 1.50415007e-01 1.50358023e-01 + 1.50300867e-01 1.50243538e-01 1.50186035e-01 1.50128358e-01 1.50070506e-01 + 1.50012478e-01 1.49954274e-01 1.49895893e-01 1.49837334e-01 1.49778596e-01 + 1.49719680e-01 1.49660584e-01 1.49601308e-01 1.49541850e-01 1.49482211e-01 + 1.49422390e-01 1.49362385e-01 1.49302197e-01 1.49241824e-01 1.49181266e-01 + 1.49120523e-01 1.49059593e-01 1.48998475e-01 1.48937170e-01 1.48875676e-01 + 1.48813992e-01 1.48752119e-01 1.48690055e-01 1.48627799e-01 1.48565351e-01 + 1.48502710e-01 1.48439876e-01 1.48376847e-01 1.48313623e-01 1.48250203e-01 + 1.48186586e-01 1.48122773e-01 1.48058761e-01 1.47994550e-01 1.47930139e-01 + 1.47865528e-01 1.47800717e-01 1.47735703e-01 1.47670486e-01 1.47605066e-01 + 1.47539442e-01 1.47473613e-01 1.47407579e-01 1.47341337e-01 1.47274889e-01 + 1.47208232e-01 1.47141367e-01 1.47074292e-01 1.47007006e-01 1.46939509e-01 + 1.46871800e-01 1.46803878e-01 1.46735743e-01 1.46667393e-01 1.46598827e-01 + 1.46530046e-01 1.46461047e-01 1.46391831e-01 1.46322396e-01 1.46252742e-01 + 1.46182867e-01 1.46112772e-01 1.46042454e-01 1.45971913e-01 1.45901149e-01 + 1.45830160e-01 1.45758946e-01 1.45687506e-01 1.45615839e-01 1.45543943e-01 + 1.45471819e-01 1.45399465e-01 1.45326880e-01 1.45254064e-01 1.45181016e-01 + 1.45107734e-01 1.45034218e-01 1.44960467e-01 1.44886480e-01 1.44812256e-01 + 1.44737795e-01 1.44663094e-01 1.44588154e-01 1.44512974e-01 1.44437552e-01 + 1.44361888e-01 1.44285981e-01 1.44209829e-01 1.44133432e-01 1.44056789e-01 + 1.43979899e-01 1.43902761e-01 1.43825374e-01 1.43747737e-01 1.43669849e-01 + 1.43591710e-01 1.43513317e-01 1.43434671e-01 1.43355770e-01 1.43276613e-01 + 1.43197200e-01 1.43117528e-01 1.43037599e-01 1.42957409e-01 1.42876959e-01 + 1.42796247e-01 1.42715272e-01 1.42634034e-01 1.42552530e-01 1.42470761e-01 + 1.42388726e-01 1.42306422e-01 1.42223850e-01 1.42141007e-01 1.42057894e-01 + 1.41974509e-01 1.41890851e-01 1.41806919e-01 1.41722711e-01 1.41638228e-01 + 1.41553467e-01 1.41468428e-01 1.41383109e-01 1.41297511e-01 1.41211630e-01 + 1.41125467e-01 1.41039020e-01 1.40952288e-01 1.40865271e-01 1.40777966e-01 + 1.40690373e-01 1.40602491e-01 1.40514319e-01 1.40425855e-01 1.40337099e-01 + 1.40248048e-01 1.40158703e-01 1.40069062e-01 1.39979124e-01 1.39888888e-01 + 1.39798352e-01 1.39707515e-01 1.39616377e-01 1.39524936e-01 1.39433191e-01 + 1.39341140e-01 1.39248784e-01 1.39156119e-01 1.39063146e-01 1.38969862e-01 + 1.38876268e-01 1.38782361e-01 1.38688141e-01 1.38593606e-01 1.38498755e-01 + 1.38403586e-01 1.38308099e-01 1.38212293e-01 1.38116166e-01 1.38019716e-01 + 1.37922943e-01 1.37825846e-01 1.37728423e-01 1.37630672e-01 1.37532594e-01 + 1.37434185e-01 1.37335446e-01 1.37236375e-01 1.37136970e-01 1.37037230e-01 + 1.36937155e-01 1.36836742e-01 1.36735991e-01 1.36634900e-01 1.36533467e-01 + 1.36431692e-01 1.36329574e-01 1.36227110e-01 1.36124300e-01 1.36021142e-01 + 1.35917635e-01 1.35813778e-01 1.35709568e-01 1.35605006e-01 1.35500089e-01 + 1.35394817e-01 1.35289187e-01 1.35183199e-01 1.35076851e-01 1.34970142e-01 + 1.34863070e-01 1.34755634e-01 1.34647833e-01 1.34539665e-01 1.34431128e-01 + 1.34322223e-01 1.34212946e-01 1.34103297e-01 1.33993274e-01 1.33882876e-01 + 1.33772101e-01 1.33660948e-01 1.33549416e-01 1.33437503e-01 1.33325207e-01 + 1.33212528e-01 1.33099463e-01 1.32986012e-01 1.32872172e-01 1.32757943e-01 + 1.32643323e-01 1.32528310e-01 1.32412904e-01 1.32297101e-01 1.32180902e-01 + 1.32064305e-01 1.31947307e-01 1.31829908e-01 1.31712106e-01 1.31593899e-01 + 1.31475287e-01 1.31356267e-01 1.31236838e-01 1.31116998e-01 1.30996746e-01 + 1.30876081e-01 1.30755001e-01 1.30633504e-01 1.30511588e-01 1.30389253e-01 + 1.30266497e-01 1.30143318e-01 1.30019714e-01 1.29895684e-01 1.29771227e-01 + 1.29646341e-01 1.29521024e-01 1.29395274e-01 1.29269091e-01 1.29142472e-01 + 1.29015417e-01 1.28887922e-01 1.28759987e-01 1.28631611e-01 1.28502791e-01 + 1.28373525e-01 1.28243813e-01 1.28113653e-01 1.27983043e-01 1.27851981e-01 + 1.27720466e-01 1.27588496e-01 1.27456070e-01 1.27323186e-01 1.27189841e-01 + 1.27056036e-01 1.26921767e-01 1.26787033e-01 1.26651833e-01 1.26516166e-01 + 1.26380028e-01 1.26243419e-01 1.26106337e-01 1.25968780e-01 1.25830747e-01 + 1.25692235e-01 1.25553244e-01 1.25413771e-01 1.25273815e-01 1.25133375e-01 + 1.24992448e-01 1.24851032e-01 1.24709127e-01 1.24566730e-01 1.24423839e-01 + 1.24280454e-01 1.24136571e-01 1.23992190e-01 1.23847309e-01 1.23701926e-01 + 1.23556040e-01 1.23409647e-01 1.23262748e-01 1.23115340e-01 1.22967422e-01 + 1.22818991e-01 1.22670046e-01 1.22520585e-01 1.22370607e-01 1.22220110e-01 + 1.22069091e-01 1.21917550e-01 1.21765484e-01 1.21612892e-01 1.21459773e-01 + 1.21306123e-01 1.21151942e-01 1.20997228e-01 1.20841979e-01 1.20686193e-01 + 1.20529869e-01 1.20373004e-01 1.20215598e-01 1.20057648e-01 1.19899152e-01 + 1.19740109e-01 1.19580518e-01 1.19420375e-01 1.19259680e-01 1.19098431e-01 + 1.18936626e-01 1.18774263e-01 1.18611341e-01 1.18447857e-01 1.18283810e-01 + 1.18119199e-01 1.17954021e-01 1.17788276e-01 1.17621960e-01 1.17455072e-01 + 1.17287611e-01 1.17119575e-01 1.16950961e-01 1.16781770e-01 1.16611997e-01 + 1.16441643e-01 1.16270705e-01 1.16099181e-01 1.15927070e-01 1.15754370e-01 + 1.15581079e-01 1.15407195e-01 1.15232718e-01 1.15057644e-01 1.14881973e-01 + 1.14705703e-01 1.14528831e-01 1.14351357e-01 1.14173279e-01 1.13994594e-01 + 1.13815302e-01 1.13635400e-01 1.13454887e-01 1.13273762e-01 1.13092022e-01 + 1.12909666e-01 1.12726692e-01 1.12543099e-01 1.12358884e-01 1.12174047e-01 + 1.11988586e-01 1.11802499e-01 1.11615785e-01 1.11428441e-01 1.11240467e-01 + 1.11051860e-01 1.10862619e-01 1.10672743e-01 1.10482230e-01 1.10291079e-01 + 1.10099287e-01 1.09906853e-01 1.09713777e-01 1.09520055e-01 1.09325688e-01 + 1.09130672e-01 1.08935008e-01 1.08738692e-01 1.08541725e-01 1.08344104e-01 + 1.08145827e-01 1.07946894e-01 1.07747304e-01 1.07547053e-01 1.07346142e-01 + 1.07144569e-01 1.06942333e-01 1.06739431e-01 1.06535863e-01 1.06331627e-01 + 1.06126723e-01 1.05921148e-01 1.05714902e-01 1.05507982e-01 1.05300389e-01 + 1.05092120e-01 1.04883175e-01 1.04673552e-01 1.04463250e-01 1.04252268e-01 + 1.04040604e-01 1.03828258e-01 1.03615228e-01 1.03401513e-01 1.03187113e-01 + 1.02972026e-01 1.02756250e-01 1.02539786e-01 1.02322631e-01 1.02104785e-01 + 1.01886248e-01 1.01667017e-01 1.01447092e-01 1.01226473e-01 1.01005158e-01 + 1.00783146e-01 1.00560436e-01 1.00337028e-01 1.00112922e-01 9.98881150e-02 + 9.96626076e-02 9.94363989e-02 9.92094881e-02 9.89818746e-02 9.87535577e-02 + 9.85245367e-02 9.82948112e-02 9.80643804e-02 9.78332440e-02 9.76014013e-02 + 9.73688518e-02 9.71355952e-02 9.69016310e-02 9.66669588e-02 9.64315783e-02 + 9.61954891e-02 9.59586908e-02 9.57211834e-02 9.54829664e-02 9.52440398e-02 + 9.50044033e-02 9.47640568e-02 9.45230003e-02 9.42812335e-02 9.40387567e-02 + 9.37955696e-02 9.35516725e-02 9.33070653e-02 9.30617482e-02 9.28157214e-02 + 9.25689850e-02 9.23215393e-02 9.20733846e-02 9.18245212e-02 9.15749495e-02 + 9.13246699e-02 9.10736827e-02 9.08219886e-02 9.05695880e-02 9.03164816e-02 + 9.00626699e-02 8.98081536e-02 8.95529334e-02 8.92970102e-02 8.90403847e-02 + 8.87830577e-02 8.85250303e-02 8.82663032e-02 8.80068776e-02 8.77467546e-02 + 8.74859351e-02 8.72244204e-02 8.69622117e-02 8.66993103e-02 8.64357174e-02 + 8.61714345e-02 8.59064630e-02 8.56408044e-02 8.53744602e-02 8.51074320e-02 + 8.48397215e-02 8.45713304e-02 8.43022605e-02 8.40325136e-02 8.37620916e-02 + 8.34909965e-02 8.32192302e-02 8.29467950e-02 8.26736929e-02 8.23999262e-02 + 8.21254970e-02 8.18504079e-02 8.15746611e-02 8.12982592e-02 8.10212047e-02 + 8.07435002e-02 8.04651484e-02 8.01861521e-02 7.99065141e-02 7.96262372e-02 + 7.93453246e-02 7.90637791e-02 7.87816039e-02 7.84988023e-02 7.82153774e-02 + 7.79313327e-02 7.76466715e-02 7.73613974e-02 7.70755139e-02 7.67890246e-02 + 7.65019334e-02 7.62142440e-02 7.59259604e-02 7.56370865e-02 7.53476263e-02 + 7.50575841e-02 7.47669641e-02 7.44757706e-02 7.41840079e-02 7.38916807e-02 + 7.35987934e-02 7.33053507e-02 7.30113575e-02 7.27168185e-02 7.24217387e-02 + 7.21261231e-02 7.18299768e-02 7.15333051e-02 7.12361133e-02 7.09384067e-02 + 7.06401909e-02 7.03414715e-02 7.00422541e-02 6.97425446e-02 6.94423488e-02 + 6.91416728e-02 6.88405225e-02 6.85389043e-02 6.82368244e-02 6.79342891e-02 + 6.76313050e-02 6.73278787e-02 6.70240169e-02 6.67197264e-02 6.64150140e-02 + 6.61098869e-02 6.58043520e-02 6.54984168e-02 6.51920884e-02 6.48853744e-02 + 6.45782823e-02 6.42708198e-02 6.39629946e-02 6.36548146e-02 6.33462879e-02 + 6.30374225e-02 6.27282267e-02 6.24187088e-02 6.21088773e-02 6.17987406e-02 + 6.14883076e-02 6.11775870e-02 6.08665877e-02 6.05553188e-02 6.02437893e-02 + 5.99320086e-02 5.96199860e-02 5.93077311e-02 5.89952534e-02 5.86825627e-02 + 5.83696689e-02 5.80565818e-02 5.77433118e-02 5.74298688e-02 5.71162634e-02 + 5.68025058e-02 5.64886069e-02 5.61745771e-02 5.58604274e-02 5.55461687e-02 + 5.52318121e-02 5.49173687e-02 5.46028499e-02 5.42882672e-02 5.39736321e-02 + 5.36589562e-02 5.33442514e-02 5.30295296e-02 5.27148029e-02 5.24000835e-02 + 5.20853836e-02 5.17707158e-02 5.14560924e-02 5.11415263e-02 5.08270302e-02 + 5.05126170e-02 5.01982998e-02 4.98840918e-02 4.95700061e-02 4.92560564e-02 + 4.89422560e-02 4.86286186e-02 4.83151580e-02 4.80018882e-02 4.76888231e-02 + 4.73759769e-02 4.70633638e-02 4.67509982e-02 4.64388946e-02 4.61270676e-02 + 4.58155320e-02 4.55043026e-02 4.51933944e-02 4.48828225e-02 4.45726020e-02 + 4.42627483e-02 4.39532767e-02 4.36442030e-02 4.33355426e-02 4.30273114e-02 + 4.27195253e-02 4.24122002e-02 4.21053521e-02 4.17989974e-02 4.14931524e-02 + 4.11878333e-02 4.08830568e-02 4.05788395e-02 4.02751981e-02 3.99721494e-02 + 3.96697104e-02 3.93678979e-02 3.90667293e-02 3.87662217e-02 3.84663923e-02 + 3.81672586e-02 3.78688381e-02 3.75711484e-02 3.72742070e-02 3.69780319e-02 + 3.66826407e-02 3.63880515e-02 3.60942822e-02 3.58013509e-02 3.55092758e-02 + 3.52180750e-02 3.49277670e-02 3.46383700e-02 3.43499026e-02 3.40623832e-02 + 3.37758304e-02 3.34902629e-02 3.32056994e-02 3.29221586e-02 3.26396593e-02 + 3.23582205e-02 3.20778611e-02 3.17986000e-02 3.15204562e-02 3.12434489e-02 + 3.09675972e-02 3.06929202e-02 3.04194370e-02 3.01471670e-02 2.98761294e-02 + 2.96063435e-02 2.93378286e-02 2.90706040e-02 2.88046891e-02 2.85401033e-02 + 2.82768660e-02 2.80149966e-02 2.77545145e-02 2.74954392e-02 2.72377901e-02 + 2.69815866e-02 2.67268481e-02 2.64735941e-02 2.62218441e-02 2.59716174e-02 + 2.57229334e-02 2.54758115e-02 2.52302711e-02 2.49863315e-02 2.47440120e-02 + 2.45033320e-02 2.42643105e-02 2.40269669e-02 2.37913204e-02 2.35573900e-02 + 2.33251949e-02 2.30947540e-02 2.28660864e-02 2.26392110e-02 2.24141466e-02 + 2.21909120e-02 2.19695260e-02 2.17500072e-02 2.15323742e-02 2.13166455e-02 + 2.11028396e-02 2.08909747e-02 2.06810691e-02 2.04731411e-02 2.02672086e-02 + 2.00632896e-02 1.98614019e-02 1.96615634e-02 1.94637917e-02 1.92681043e-02 + 1.90745186e-02 1.88830519e-02 1.86937213e-02 1.85065440e-02 1.83215368e-02 + 1.81387165e-02 1.79580998e-02 1.77797030e-02 1.76035426e-02 1.74296348e-02 + 1.72579956e-02 1.70886409e-02 1.69215864e-02 1.67568478e-02 1.65944402e-02 + 1.64343791e-02 1.62766795e-02 1.61213562e-02 1.59684240e-02 1.58178973e-02 + 1.56697904e-02 1.55241176e-02 1.53808927e-02 1.52401295e-02 1.51018416e-02 + 1.49660422e-02 1.48327446e-02 1.47019616e-02 1.45737059e-02 1.44479901e-02 + 1.43248264e-02 1.42042269e-02 1.40862035e-02 1.39707676e-02 1.38579308e-02 + 1.37477041e-02 1.36400985e-02 1.35351246e-02 1.34327929e-02 1.33331135e-02 + 1.32360964e-02 1.31417514e-02 1.30500877e-02 1.29611147e-02 1.28748412e-02 + 1.27912760e-02 1.27104274e-02 1.26323037e-02 1.25569127e-02 1.24842620e-02 + 1.24143590e-02 1.23472109e-02 1.22828243e-02 1.22212060e-02 1.21623621e-02 + 1.21062986e-02 1.20530213e-02 1.20025356e-02 1.19548467e-02 1.19099595e-02 + 1.18678785e-02 1.18286081e-02 1.17921522e-02 1.17585148e-02 1.17276991e-02 + 1.16997084e-02 1.16745455e-02 1.16522130e-02 1.16327133e-02 1.16160484e-02 + 1.16022198e-02 1.15912292e-02 1.15830776e-02 1.15777658e-02 1.15752944e-02 + 1.15756637e-02 1.15788736e-02 1.15849238e-02 1.15938137e-02 1.16055423e-02 + 1.16201084e-02 1.16375106e-02 1.16577471e-02 1.16808156e-02 1.17067140e-02 + 1.17354395e-02 1.17669892e-02 1.18013598e-02 1.18385478e-02 1.18785493e-02 + 1.19213604e-02 1.19669765e-02 1.20153931e-02 1.20666051e-02 1.21206073e-02 + 1.21773942e-02 1.22369601e-02 1.22992988e-02 1.23644040e-02 1.24322691e-02 + 1.25028871e-02 1.25762510e-02 1.26523533e-02 1.27311863e-02 1.28127420e-02 + 1.28970121e-02 1.29839883e-02 1.30736618e-02 1.31660235e-02 1.32610642e-02 + 1.33587744e-02 1.34591444e-02 1.35621641e-02 1.36678232e-02 1.37761113e-02 + 1.38870177e-02 1.40005314e-02 1.41166411e-02 1.42353355e-02 1.43566028e-02 + 1.44804312e-02 1.46068085e-02 1.47357225e-02 1.48671606e-02 1.50011099e-02 + 1.51375576e-02 1.52764904e-02 1.54178949e-02 1.55617576e-02 1.57080646e-02 + 1.58568020e-02 1.60079555e-02 1.61615108e-02 1.63174534e-02 1.64757685e-02 + 1.66364411e-02 1.67994562e-02 1.69647985e-02 1.71324525e-02 1.73024027e-02 + 1.74746333e-02 1.76491283e-02 1.78258717e-02 1.80048472e-02 1.81860385e-02 + 1.83694290e-02 1.85550020e-02 1.87427408e-02 1.89326284e-02 1.91246477e-02 + 1.93187815e-02 1.95150125e-02 1.97133233e-02 1.99136963e-02 2.01161138e-02 + 2.03205580e-02 2.05270111e-02 2.07354551e-02 2.09458718e-02 2.11582431e-02 + 2.13725507e-02 2.15887763e-02 2.18069014e-02 2.20269075e-02 2.22487759e-02 + 2.24724880e-02 2.26980251e-02 2.29253683e-02 2.31544988e-02 2.33853976e-02 + 2.36180458e-02 2.38524242e-02 2.40885138e-02 2.43262955e-02 2.45657500e-02 + 2.48068582e-02 2.50496007e-02 2.52939584e-02 2.55399119e-02 2.57874418e-02 + 2.60365287e-02 2.62871534e-02 2.65392963e-02 2.67929381e-02 2.70480593e-02 + 2.73046406e-02 2.75626624e-02 2.78221053e-02 2.80829500e-02 2.83451769e-02 + 2.86087667e-02 2.88736999e-02 2.91399572e-02 2.94075191e-02 2.96763664e-02 + 2.99464796e-02 3.02178395e-02 3.04904267e-02 3.07642221e-02 3.10392064e-02 + 3.13153605e-02 3.15926651e-02 3.18711011e-02 3.21506496e-02 3.24312916e-02 + 3.27130079e-02 3.29957798e-02 3.32795883e-02 3.35644146e-02 3.38502401e-02 + 3.41370460e-02 3.44248137e-02 3.47135246e-02 3.50031602e-02 3.52937021e-02 + 3.55851319e-02 3.58774314e-02 3.61705823e-02 3.64645665e-02 3.67593660e-02 + 3.70549627e-02 3.73513388e-02 3.76484764e-02 3.79463579e-02 3.82449655e-02 + 3.85442817e-02 3.88442891e-02 3.91449703e-02 3.94463079e-02 3.97482849e-02 + 4.00508841e-02 4.03540886e-02 4.06578813e-02 4.09622456e-02 4.12671648e-02 + 4.15726221e-02 4.18786013e-02 4.21850858e-02 4.24920594e-02 4.27995060e-02 + 4.31074094e-02 4.34157537e-02 4.37245230e-02 4.40337017e-02 4.43432741e-02 + 4.46532246e-02 4.49635380e-02 4.52741988e-02 4.55851920e-02 4.58965024e-02 + 4.62081152e-02 4.65200155e-02 4.68321886e-02 4.71446199e-02 4.74572950e-02 + 4.77701996e-02 4.80833192e-02 4.83966400e-02 4.87101479e-02 4.90238289e-02 + 4.93376695e-02 4.96516559e-02 4.99657746e-02 5.02800123e-02 5.05943557e-02 + 5.09087917e-02 5.12233073e-02 5.15378895e-02 5.18525256e-02 5.21672030e-02 + 5.24819092e-02 5.27966317e-02 5.31113583e-02 5.34260768e-02 5.37407752e-02 + 5.40554416e-02 5.43700642e-02 5.46846314e-02 5.49991317e-02 5.53135536e-02 + 5.56278858e-02 5.59421172e-02 5.62562368e-02 5.65702336e-02 5.68840968e-02 + 5.71978158e-02 5.75113800e-02 5.78247790e-02 5.81380025e-02 5.84510402e-02 + 5.87638822e-02 5.90765185e-02 5.93889392e-02 5.97011346e-02 6.00130952e-02 + 6.03248115e-02 6.06362741e-02 6.09474738e-02 6.12584015e-02 6.15690482e-02 + 6.18794050e-02 6.21894631e-02 6.24992140e-02 6.28086489e-02 6.31177596e-02 + 6.34265377e-02 6.37349751e-02 6.40430636e-02 6.43507952e-02 6.46581622e-02 + 6.49651567e-02 6.52717712e-02 6.55779981e-02 6.58838299e-02 6.61892594e-02 + 6.64942794e-02 6.67988828e-02 6.71030625e-02 6.74068117e-02 6.77101237e-02 + 6.80129917e-02 6.83154092e-02 6.86173697e-02 6.89188669e-02 6.92198944e-02 + 6.95204462e-02 6.98205161e-02 7.01200982e-02 7.04191867e-02 7.07177757e-02 + 7.10158596e-02 7.13134329e-02 7.16104900e-02 7.19070256e-02 7.22030344e-02 + 7.24985112e-02 7.27934509e-02 7.30878484e-02 7.33816990e-02 7.36749977e-02 + 7.39677398e-02 7.42599207e-02 7.45515358e-02 7.48425807e-02 7.51330509e-02 + 7.54229421e-02 7.57122502e-02 7.60009711e-02 7.62891006e-02 7.65766348e-02 + 7.68635699e-02 7.71499020e-02 7.74356274e-02 7.77207425e-02 7.80052438e-02 + 7.82891277e-02 7.85723908e-02 7.88550299e-02 7.91370416e-02 7.94184229e-02 + 7.96991705e-02 7.99792815e-02 8.02587530e-02 8.05375820e-02 8.08157657e-02 + 8.10933015e-02 8.13701866e-02 8.16464184e-02 8.19219944e-02 8.21969122e-02 + 8.24711693e-02 8.27447635e-02 8.30176924e-02 8.32899539e-02 8.35615458e-02 + 8.38324661e-02 8.41027128e-02 8.43722839e-02 8.46411775e-02 8.49093918e-02 + 8.51769250e-02 8.54437756e-02 8.57099417e-02 8.59754218e-02 8.62402144e-02 + 8.65043180e-02 8.67677312e-02 8.70304527e-02 8.72924810e-02 8.75538151e-02 + 8.78144536e-02 8.80743954e-02 8.83336395e-02 8.85921847e-02 8.88500302e-02 + 8.91071748e-02 8.93636178e-02 8.96193583e-02 8.98743956e-02 9.01287287e-02 + 9.03823571e-02 9.06352801e-02 9.08874971e-02 9.11390074e-02 9.13898107e-02 + 9.16399063e-02 9.18892939e-02 9.21379731e-02 9.23859434e-02 9.26332047e-02 + 9.28797566e-02 9.31255989e-02 9.33707315e-02 9.36151540e-02 9.38588666e-02 + 9.41018690e-02 9.43441612e-02 9.45857433e-02 9.48266152e-02 9.50667771e-02 + 9.53062290e-02 9.55449711e-02 9.57830036e-02 9.60203266e-02 9.62569405e-02 + 9.64928454e-02 9.67280417e-02 9.69625298e-02 9.71963100e-02 9.74293827e-02 + 9.76617483e-02 9.78934074e-02 9.81243603e-02 9.83546076e-02 9.85841499e-02 + 9.88129878e-02 9.90411218e-02 9.92685525e-02 9.94952807e-02 9.97213070e-02 + 9.99466321e-02 1.00171257e-01 1.00395182e-01 1.00618408e-01 1.00840936e-01 + 1.01062766e-01 1.01283901e-01 1.01504340e-01 1.01724084e-01 1.01943134e-01 + 1.02161492e-01 1.02379158e-01 1.02596133e-01 1.02812418e-01 1.03028014e-01 + 1.03242923e-01 1.03457145e-01 1.03670682e-01 1.03883534e-01 1.04095702e-01 + 1.04307189e-01 1.04517994e-01 1.04728119e-01 1.04937566e-01 1.05146335e-01 + 1.05354428e-01 1.05561846e-01 1.05768590e-01 1.05974662e-01 1.06180062e-01 + 1.06384793e-01 1.06588855e-01 1.06792249e-01 1.06994978e-01 1.07197042e-01 + 1.07398443e-01 1.07599182e-01 1.07799261e-01 1.07998680e-01 1.08197442e-01 + 1.08395548e-01 1.08592999e-01 1.08789797e-01 1.08985943e-01 1.09181439e-01 + 1.09376286e-01 1.09570485e-01 1.09764039e-01 1.09956948e-01 1.10149214e-01 + 1.10340840e-01 1.10531825e-01 1.10722172e-01 1.10911883e-01 1.11100959e-01 + 1.11289401e-01 1.11477211e-01 1.11664391e-01 1.11850942e-01 1.12036866e-01 + 1.12222165e-01 1.12406840e-01 1.12590892e-01 1.12774325e-01 1.12957138e-01 + 1.13139333e-01 1.13320913e-01 1.13501880e-01 1.13682233e-01 1.13861976e-01 + 1.14041111e-01 1.14219637e-01 1.14397559e-01 1.14574876e-01 1.14751591e-01 + 1.14927705e-01 1.15103221e-01 1.15278139e-01 1.15452462e-01 1.15626191e-01 + 1.15799328e-01 1.15971875e-01 1.16143834e-01 1.16315205e-01 1.16485991e-01 + 1.16656194e-01 1.16825815e-01 1.16994856e-01 1.17163320e-01 1.17331206e-01 + 1.17498518e-01 1.17665257e-01 1.17831424e-01 1.17997022e-01 1.18162053e-01 + 1.18326517e-01 1.18490417e-01 1.18653754e-01 1.18816531e-01 1.18978749e-01 + 1.19140409e-01 1.19301514e-01 1.19462065e-01 1.19622064e-01 1.19781513e-01 + 1.19940414e-01 1.20098767e-01 1.20256576e-01 1.20413841e-01 1.20570565e-01 + 1.20726749e-01 1.20882395e-01 1.21037505e-01 1.21192080e-01 1.21346123e-01 + 1.21499635e-01 1.21652617e-01 1.21805072e-01 1.21957001e-01 1.22108406e-01 + 1.22259289e-01 1.22409651e-01 1.22559495e-01 1.22708821e-01 1.22857632e-01 + 1.23005930e-01 1.23153715e-01 1.23300991e-01 1.23447758e-01 1.23594019e-01 + 1.23739774e-01 1.23885027e-01 1.24029777e-01 1.24174028e-01 1.24317781e-01 + 1.24461038e-01 1.24603800e-01 1.24746069e-01 1.24887847e-01 1.25029136e-01 + 1.25169936e-01 1.25310251e-01 1.25450081e-01 1.25589428e-01 1.25728294e-01 + 1.25866681e-01 1.26004590e-01 1.26142024e-01 1.26278983e-01 1.26415469e-01 + 1.26551484e-01 1.26687030e-01 1.26822109e-01 1.26956721e-01 1.27090870e-01 + 1.27224555e-01 1.27357780e-01 1.27490545e-01 1.27622852e-01 1.27754704e-01 + 1.27886101e-01 1.28017045e-01 1.28147538e-01 1.28277582e-01 1.28407177e-01 + 1.28536327e-01 1.28665031e-01 1.28793293e-01 1.28921113e-01 1.29048493e-01 + 1.29175435e-01 1.29301941e-01 1.29428011e-01 1.29553648e-01 1.29678853e-01 + 1.29803627e-01 1.29927973e-01 1.30051892e-01 1.30175385e-01 1.30298454e-01 + 1.30421101e-01 1.30543327e-01 1.30665133e-01 1.30786522e-01 1.30907494e-01 + 1.31028051e-01 1.31148196e-01 1.31267929e-01 1.31387251e-01 1.31506165e-01 + 1.31624672e-01 1.31742773e-01 1.31860470e-01 1.31977765e-01 1.32094658e-01 + 1.32211152e-01 1.32327248e-01 1.32442947e-01 1.32558252e-01 1.32673162e-01 + 1.32787680e-01 1.32901808e-01 1.33015546e-01 1.33128897e-01 1.33241861e-01 + 1.33354441e-01 1.33466637e-01 1.33578451e-01 1.33689884e-01 1.33800939e-01 + 1.33911615e-01 1.34021916e-01 1.34131841e-01 1.34241394e-01 1.34350574e-01 + 1.34459383e-01 1.34567824e-01 1.34675896e-01 1.34783602e-01 1.34890944e-01 + 1.34997921e-01 1.35104536e-01 1.35210791e-01 1.35316685e-01 1.35422222e-01 + 1.35527402e-01 1.35632226e-01 1.35736697e-01 1.35840814e-01 1.35944580e-01 + 1.36047997e-01 1.36151064e-01 1.36253784e-01 1.36356158e-01 1.36458187e-01 + 1.36559873e-01 1.36661216e-01 1.36762219e-01 1.36862882e-01 1.36963207e-01 + 1.37063195e-01 1.37162847e-01 1.37262165e-01 1.37361150e-01 1.37459803e-01 + 1.37558126e-01 1.37656119e-01 1.37753784e-01 1.37851123e-01 1.37948136e-01 + 1.38044824e-01 1.38141190e-01 1.38237233e-01 1.38332957e-01 1.38428361e-01 + 1.38523446e-01 1.38618215e-01 1.38712668e-01 1.38806807e-01 1.38900633e-01 + 1.38994146e-01 1.39087349e-01 1.39180241e-01 1.39272826e-01 1.39365103e-01 + 1.39457074e-01 1.39548740e-01 1.39640102e-01 1.39731162e-01 1.39821920e-01 + 1.39912378e-01 1.40002537e-01 1.40092398e-01 1.40181961e-01 1.40271230e-01 + 1.40360203e-01 1.40448884e-01 1.40537272e-01 1.40625368e-01 1.40713175e-01 + 1.40800693e-01 1.40887923e-01 1.40974866e-01 1.41061523e-01 1.41147896e-01 + 1.41233986e-01 1.41319793e-01 1.41405319e-01 1.41490565e-01 1.41575532e-01 + 1.41660220e-01 1.41744632e-01 1.41828768e-01 1.41912628e-01 1.41996216e-01 + 1.42079530e-01 1.42162572e-01 1.42245344e-01 1.42327847e-01 1.42410081e-01 + 1.42492047e-01 1.42573747e-01 1.42655181e-01 1.42736351e-01 1.42817257e-01 + 1.42897901e-01 1.42978283e-01 1.43058405e-01 1.43138268e-01 1.43217872e-01 + 1.43297218e-01 1.43376309e-01 1.43455143e-01 1.43533723e-01 1.43612050e-01 + 1.43690124e-01 1.43767947e-01 1.43845519e-01 1.43922841e-01 1.43999914e-01 + 1.44076740e-01 1.44153319e-01 1.44229652e-01 1.44305740e-01 1.44381584e-01 + 1.44457185e-01 1.44532544e-01 1.44607662e-01 1.44682539e-01 1.44757177e-01 + 1.44831577e-01 1.44905739e-01 1.44979665e-01 1.45053355e-01 1.45126809e-01 + 1.45200031e-01 1.45273019e-01 1.45345774e-01 1.45418299e-01 1.45490593e-01 + 1.45562658e-01 1.45634494e-01 1.45706102e-01 1.45777484e-01 1.45848639e-01 + 1.45919569e-01 1.45990275e-01 1.46060758e-01 1.46131018e-01 1.46201056e-01 + 1.46270873e-01 1.46340470e-01 1.46409848e-01 1.46479008e-01 1.46547950e-01 + 1.46616675e-01 1.46685184e-01 1.46753479e-01 1.46821558e-01 1.46889425e-01 + 1.46957079e-01 1.47024520e-01 1.47091751e-01 1.47158772e-01 1.47225583e-01 + 1.47292185e-01 1.47358580e-01 1.47424768e-01 1.47490749e-01 1.47556524e-01 + 1.47622095e-01 1.47687462e-01 1.47752626e-01 1.47817587e-01 1.47882347e-01 + 1.38518338e-01 1.38476565e-01 1.38434740e-01 1.38392864e-01 1.38350938e-01 + 1.38308960e-01 1.38266931e-01 1.38224851e-01 1.38182720e-01 1.38140538e-01 + 1.38098305e-01 1.38056020e-01 1.38013684e-01 1.37971296e-01 1.37928857e-01 + 1.37886366e-01 1.37843824e-01 1.37801230e-01 1.37758585e-01 1.37715888e-01 + 1.37673139e-01 1.37630338e-01 1.37587486e-01 1.37544581e-01 1.37501625e-01 + 1.37458617e-01 1.37415556e-01 1.37372444e-01 1.37329279e-01 1.37286062e-01 + 1.37242794e-01 1.37199472e-01 1.37156099e-01 1.37112673e-01 1.37069195e-01 + 1.37025664e-01 1.36982081e-01 1.36938445e-01 1.36894757e-01 1.36851016e-01 + 1.36807222e-01 1.36763376e-01 1.36719477e-01 1.36675525e-01 1.36631520e-01 + 1.36587463e-01 1.36543352e-01 1.36499189e-01 1.36454972e-01 1.36410702e-01 + 1.36366380e-01 1.36322004e-01 1.36277574e-01 1.36233092e-01 1.36188556e-01 + 1.36143967e-01 1.36099325e-01 1.36054629e-01 1.36009880e-01 1.35965077e-01 + 1.35920221e-01 1.35875311e-01 1.35830347e-01 1.35785330e-01 1.35740259e-01 + 1.35695134e-01 1.35649956e-01 1.35604723e-01 1.35559437e-01 1.35514096e-01 + 1.35468702e-01 1.35423254e-01 1.35377752e-01 1.35332195e-01 1.35286585e-01 + 1.35240920e-01 1.35195201e-01 1.35149428e-01 1.35103600e-01 1.35057718e-01 + 1.35011782e-01 1.34965791e-01 1.34919746e-01 1.34873646e-01 1.34827492e-01 + 1.34781283e-01 1.34735020e-01 1.34688702e-01 1.34642329e-01 1.34595901e-01 + 1.34549419e-01 1.34502882e-01 1.34456290e-01 1.34409643e-01 1.34362941e-01 + 1.34316184e-01 1.34269372e-01 1.34222505e-01 1.34175583e-01 1.34128606e-01 + 1.34081573e-01 1.34034486e-01 1.33987343e-01 1.33940145e-01 1.33892892e-01 + 1.33845583e-01 1.33798219e-01 1.33750799e-01 1.33703324e-01 1.33655794e-01 + 1.33608207e-01 1.33560566e-01 1.33512869e-01 1.33465116e-01 1.33417307e-01 + 1.33369443e-01 1.33321523e-01 1.33273547e-01 1.33225515e-01 1.33177428e-01 + 1.33129285e-01 1.33081085e-01 1.33032830e-01 1.32984519e-01 1.32936152e-01 + 1.32887728e-01 1.32839249e-01 1.32790713e-01 1.32742122e-01 1.32693474e-01 + 1.32644770e-01 1.32596010e-01 1.32547193e-01 1.32498320e-01 1.32449391e-01 + 1.32400405e-01 1.32351363e-01 1.32302265e-01 1.32253110e-01 1.32203899e-01 + 1.32154631e-01 1.32105306e-01 1.32055925e-01 1.32006488e-01 1.31956993e-01 + 1.31907442e-01 1.31857835e-01 1.31808170e-01 1.31758449e-01 1.31708671e-01 + 1.31658836e-01 1.31608945e-01 1.31558996e-01 1.31508991e-01 1.31458929e-01 + 1.31408809e-01 1.31358633e-01 1.31308400e-01 1.31258110e-01 1.31207762e-01 + 1.31157358e-01 1.31106897e-01 1.31056378e-01 1.31005802e-01 1.30955169e-01 + 1.30904479e-01 1.30853732e-01 1.30802927e-01 1.30752065e-01 1.30701146e-01 + 1.30650170e-01 1.30599136e-01 1.30548045e-01 1.30496896e-01 1.30445690e-01 + 1.30394426e-01 1.30343106e-01 1.30291727e-01 1.30240291e-01 1.30188798e-01 + 1.30137247e-01 1.30085639e-01 1.30033973e-01 1.29982249e-01 1.29930468e-01 + 1.29878629e-01 1.29826732e-01 1.29774778e-01 1.29722766e-01 1.29670696e-01 + 1.29618569e-01 1.29566384e-01 1.29514141e-01 1.29461841e-01 1.29409482e-01 + 1.29357066e-01 1.29304592e-01 1.29252060e-01 1.29199470e-01 1.29146823e-01 + 1.29094117e-01 1.29041354e-01 1.28988533e-01 1.28935654e-01 1.28882717e-01 + 1.28829721e-01 1.28776668e-01 1.28723557e-01 1.28670388e-01 1.28617161e-01 + 1.28563876e-01 1.28510533e-01 1.28457132e-01 1.28403673e-01 1.28350156e-01 + 1.28296581e-01 1.28242948e-01 1.28189256e-01 1.28135507e-01 1.28081699e-01 + 1.28027834e-01 1.27973910e-01 1.27919928e-01 1.27865888e-01 1.27811790e-01 + 1.27757634e-01 1.27703420e-01 1.27649147e-01 1.27594816e-01 1.27540427e-01 + 1.27485980e-01 1.27431475e-01 1.27376912e-01 1.27322290e-01 1.27267611e-01 + 1.27212873e-01 1.27158077e-01 1.27103223e-01 1.27048310e-01 1.26993340e-01 + 1.26938311e-01 1.26883224e-01 1.26828079e-01 1.26772875e-01 1.26717614e-01 + 1.26662294e-01 1.26606916e-01 1.26551480e-01 1.26495986e-01 1.26440433e-01 + 1.26384823e-01 1.26329154e-01 1.26273427e-01 1.26217642e-01 1.26161799e-01 + 1.26105898e-01 1.26049938e-01 1.25993920e-01 1.25937845e-01 1.25881711e-01 + 1.25825519e-01 1.25769269e-01 1.25712961e-01 1.25656594e-01 1.25600170e-01 + 1.25543688e-01 1.25487147e-01 1.25430549e-01 1.25373892e-01 1.25317178e-01 + 1.25260405e-01 1.25203574e-01 1.25146686e-01 1.25089739e-01 1.25032735e-01 + 1.24975672e-01 1.24918552e-01 1.24861374e-01 1.24804137e-01 1.24746843e-01 + 1.24689491e-01 1.24632082e-01 1.24574614e-01 1.24517089e-01 1.24459505e-01 + 1.24401864e-01 1.24344166e-01 1.24286409e-01 1.24228595e-01 1.24170723e-01 + 1.24112794e-01 1.24054806e-01 1.23996762e-01 1.23938659e-01 1.23880499e-01 + 1.23822281e-01 1.23764006e-01 1.23705674e-01 1.23647284e-01 1.23588836e-01 + 1.23530331e-01 1.23471769e-01 1.23413149e-01 1.23354472e-01 1.23295737e-01 + 1.23236946e-01 1.23178097e-01 1.23119190e-01 1.23060227e-01 1.23001206e-01 + 1.22942129e-01 1.22882994e-01 1.22823802e-01 1.22764553e-01 1.22705247e-01 + 1.22645884e-01 1.22586464e-01 1.22526988e-01 1.22467454e-01 1.22407864e-01 + 1.22348217e-01 1.22288513e-01 1.22228752e-01 1.22168935e-01 1.22109061e-01 + 1.22049130e-01 1.21989143e-01 1.21929100e-01 1.21869000e-01 1.21808843e-01 + 1.21748630e-01 1.21688361e-01 1.21628036e-01 1.21567654e-01 1.21507216e-01 + 1.21446722e-01 1.21386172e-01 1.21325566e-01 1.21264904e-01 1.21204185e-01 + 1.21143411e-01 1.21082581e-01 1.21021696e-01 1.20960754e-01 1.20899757e-01 + 1.20838704e-01 1.20777596e-01 1.20716432e-01 1.20655212e-01 1.20593937e-01 + 1.20532607e-01 1.20471221e-01 1.20409780e-01 1.20348284e-01 1.20286733e-01 + 1.20225127e-01 1.20163465e-01 1.20101749e-01 1.20039978e-01 1.19978152e-01 + 1.19916271e-01 1.19854335e-01 1.19792345e-01 1.19730300e-01 1.19668200e-01 + 1.19606047e-01 1.19543838e-01 1.19481576e-01 1.19419259e-01 1.19356888e-01 + 1.19294463e-01 1.19231984e-01 1.19169450e-01 1.19106863e-01 1.19044222e-01 + 1.18981528e-01 1.18918779e-01 1.18855977e-01 1.18793122e-01 1.18730213e-01 + 1.18667250e-01 1.18604235e-01 1.18541166e-01 1.18478043e-01 1.18414868e-01 + 1.18351640e-01 1.18288359e-01 1.18225025e-01 1.18161638e-01 1.18098199e-01 + 1.18034707e-01 1.17971163e-01 1.17907566e-01 1.17843917e-01 1.17780216e-01 + 1.17716462e-01 1.17652656e-01 1.17588799e-01 1.17524889e-01 1.17460928e-01 + 1.17396915e-01 1.17332851e-01 1.17268735e-01 1.17204567e-01 1.17140349e-01 + 1.17076079e-01 1.17011757e-01 1.16947385e-01 1.16882962e-01 1.16818488e-01 + 1.16753964e-01 1.16689388e-01 1.16624762e-01 1.16560086e-01 1.16495360e-01 + 1.16430583e-01 1.16365756e-01 1.16300879e-01 1.16235952e-01 1.16170975e-01 + 1.16105949e-01 1.16040873e-01 1.15975748e-01 1.15910573e-01 1.15845349e-01 + 1.15780076e-01 1.15714754e-01 1.15649383e-01 1.15583963e-01 1.15518494e-01 + 1.15452977e-01 1.15387412e-01 1.15321798e-01 1.15256136e-01 1.15190426e-01 + 1.15124668e-01 1.15058862e-01 1.14993008e-01 1.14927107e-01 1.14861158e-01 + 1.14795162e-01 1.14729119e-01 1.14663029e-01 1.14596892e-01 1.14530707e-01 + 1.14464477e-01 1.14398199e-01 1.14331875e-01 1.14265505e-01 1.14199089e-01 + 1.14132627e-01 1.14066119e-01 1.13999565e-01 1.13932965e-01 1.13866320e-01 + 1.13799630e-01 1.13732894e-01 1.13666113e-01 1.13599288e-01 1.13532417e-01 + 1.13465503e-01 1.13398543e-01 1.13331539e-01 1.13264491e-01 1.13197399e-01 + 1.13130263e-01 1.13063084e-01 1.12995861e-01 1.12928594e-01 1.12861284e-01 + 1.12793931e-01 1.12726535e-01 1.12659096e-01 1.12591615e-01 1.12524091e-01 + 1.12456524e-01 1.12388916e-01 1.12321265e-01 1.12253573e-01 1.12185839e-01 + 1.12118063e-01 1.12050246e-01 1.11982388e-01 1.11914489e-01 1.11846549e-01 + 1.11778568e-01 1.11710547e-01 1.11642485e-01 1.11574383e-01 1.11506242e-01 + 1.11438060e-01 1.11369839e-01 1.11301578e-01 1.11233278e-01 1.11164939e-01 + 1.11096561e-01 1.11028144e-01 1.10959689e-01 1.10891195e-01 1.10822663e-01 + 1.10754093e-01 1.10685486e-01 1.10616840e-01 1.10548157e-01 1.10479437e-01 + 1.10410680e-01 1.10341886e-01 1.10273055e-01 1.10204188e-01 1.10135284e-01 + 1.10066345e-01 1.09997369e-01 1.09928358e-01 1.09859311e-01 1.09790229e-01 + 1.09721112e-01 1.09651960e-01 1.09582773e-01 1.09513552e-01 1.09444296e-01 + 1.09375007e-01 1.09305683e-01 1.09236326e-01 1.09166936e-01 1.09097512e-01 + 1.09028055e-01 1.08958566e-01 1.08889044e-01 1.08819489e-01 1.08749902e-01 + 1.08680284e-01 1.08610634e-01 1.08540952e-01 1.08471239e-01 1.08401495e-01 + 1.08331720e-01 1.08261914e-01 1.08192078e-01 1.08122212e-01 1.08052316e-01 + 1.07982391e-01 1.07912436e-01 1.07842452e-01 1.07772438e-01 1.07702397e-01 + 1.07632326e-01 1.07562227e-01 1.07492101e-01 1.07421946e-01 1.07351764e-01 + 1.07281555e-01 1.07211318e-01 1.07141055e-01 1.07070766e-01 1.07000449e-01 + 1.06930107e-01 1.06859739e-01 1.06789346e-01 1.06718927e-01 1.06648483e-01 + 1.06578015e-01 1.06507521e-01 1.06437004e-01 1.06366462e-01 1.06295897e-01 + 1.06225308e-01 1.06154696e-01 1.06084061e-01 1.06013403e-01 1.05942723e-01 + 1.05872021e-01 1.05801296e-01 1.05730551e-01 1.05659783e-01 1.05588995e-01 + 1.05518186e-01 1.05447356e-01 1.05376506e-01 1.05305636e-01 1.05234746e-01 + 1.05163837e-01 1.05092908e-01 1.05021961e-01 1.04950995e-01 1.04880011e-01 + 1.04809009e-01 1.04737989e-01 1.04666951e-01 1.04595897e-01 1.04524826e-01 + 1.04453738e-01 1.04382633e-01 1.04311513e-01 1.04240377e-01 1.04169226e-01 + 1.04098060e-01 1.04026878e-01 1.03955683e-01 1.03884473e-01 1.03813249e-01 + 1.03742012e-01 1.03670761e-01 1.03599498e-01 1.03528222e-01 1.03456933e-01 + 1.03385633e-01 1.03314321e-01 1.03242997e-01 1.03171662e-01 1.03100317e-01 + 1.03028961e-01 1.02957595e-01 1.02886219e-01 1.02814833e-01 1.02743439e-01 + 1.02672036e-01 1.02600624e-01 1.02529204e-01 1.02457776e-01 1.02386340e-01 + 1.02314898e-01 1.02243448e-01 1.02171992e-01 1.02100530e-01 1.02029062e-01 + 1.01957589e-01 1.01886110e-01 1.01814626e-01 1.01743138e-01 1.01671646e-01 + 1.01600150e-01 1.01528651e-01 1.01457148e-01 1.01385643e-01 1.01314135e-01 + 1.01242625e-01 1.01171114e-01 1.01099601e-01 1.01028087e-01 1.00956573e-01 + 1.00885058e-01 1.00813543e-01 1.00742029e-01 1.00670515e-01 1.00599003e-01 + 1.00527492e-01 1.00455983e-01 1.00384477e-01 1.00312973e-01 1.00241472e-01 + 1.00169974e-01 1.00098480e-01 1.00026990e-01 9.99555050e-02 9.98840245e-02 + 9.98125493e-02 9.97410797e-02 9.96696161e-02 9.95981588e-02 9.95267084e-02 + 9.94552650e-02 9.93838292e-02 9.93124014e-02 9.92409818e-02 9.91695709e-02 + 9.90981691e-02 9.90267768e-02 9.89553944e-02 9.88840222e-02 9.88126607e-02 + 9.87413103e-02 9.86699713e-02 9.85986441e-02 9.85273293e-02 9.84560271e-02 + 9.83847379e-02 9.83134622e-02 9.82422004e-02 9.81709529e-02 9.80997201e-02 + 9.80285023e-02 9.79573001e-02 9.78861138e-02 9.78149439e-02 9.77437907e-02 + 9.76726547e-02 9.76015362e-02 9.75304358e-02 9.74593538e-02 9.73882907e-02 + 9.73172468e-02 9.72462226e-02 9.71752186e-02 9.71042351e-02 9.70332725e-02 + 9.69623314e-02 9.68914121e-02 9.68205151e-02 9.67496408e-02 9.66787897e-02 + 9.66079621e-02 9.65371585e-02 9.64663793e-02 9.63956251e-02 9.63248961e-02 + 9.62541930e-02 9.61835160e-02 9.61128657e-02 9.60422425e-02 9.59716469e-02 + 9.59010792e-02 9.58305400e-02 9.57600297e-02 9.56895487e-02 9.56190976e-02 + 9.55486767e-02 9.54782865e-02 9.54079274e-02 9.53376000e-02 9.52673047e-02 + 9.51970419e-02 9.51268121e-02 9.50566158e-02 9.49864534e-02 9.49163254e-02 + 9.48462322e-02 9.47761744e-02 9.47061524e-02 9.46361667e-02 9.45662176e-02 + 9.44963058e-02 9.44264317e-02 9.43565957e-02 9.42867984e-02 9.42170402e-02 + 9.41473215e-02 9.40776429e-02 9.40080049e-02 9.39384078e-02 9.38688523e-02 + 9.37993388e-02 9.37298677e-02 9.36604397e-02 9.35910550e-02 9.35217143e-02 + 9.34524180e-02 9.33831666e-02 9.33139606e-02 9.32448006e-02 9.31756869e-02 + 9.31066201e-02 9.30376006e-02 9.29686291e-02 9.28997059e-02 9.28308316e-02 + 9.27620066e-02 9.26932315e-02 9.26245068e-02 9.25558330e-02 9.24872106e-02 + 9.24186400e-02 9.23501218e-02 9.22816566e-02 9.22132447e-02 9.21448867e-02 + 9.20765832e-02 9.20083346e-02 9.19401414e-02 9.18720042e-02 9.18039235e-02 + 9.17358998e-02 9.16679335e-02 9.16000253e-02 9.15321756e-02 9.14643850e-02 + 9.13966540e-02 9.13289830e-02 9.12613727e-02 9.11938235e-02 9.11263360e-02 + 9.10589106e-02 9.09915480e-02 9.09242486e-02 9.08570130e-02 9.07898417e-02 + 9.07227352e-02 9.06556940e-02 9.05887187e-02 9.05218099e-02 9.04549680e-02 + 9.03881935e-02 9.03214871e-02 9.02548492e-02 9.01882804e-02 9.01217813e-02 + 9.00553522e-02 8.99889939e-02 8.99227068e-02 8.98564915e-02 8.97903485e-02 + 8.97242783e-02 8.96582816e-02 8.95923588e-02 8.95265104e-02 8.94607371e-02 + 8.93950394e-02 8.93294177e-02 8.92638728e-02 8.91984050e-02 8.91330150e-02 + 8.90677033e-02 8.90024705e-02 8.89373170e-02 8.88722435e-02 8.88072505e-02 + 8.87423386e-02 8.86775083e-02 8.86127602e-02 8.85480947e-02 8.84835126e-02 + 8.84190142e-02 8.83546003e-02 8.82902712e-02 8.82260277e-02 8.81618702e-02 + 8.80977994e-02 8.80338157e-02 8.79699197e-02 8.79061120e-02 8.78423932e-02 + 8.77787637e-02 8.77152243e-02 8.76517753e-02 8.75884175e-02 8.75251513e-02 + 8.74619773e-02 8.73988961e-02 8.73359083e-02 8.72730143e-02 8.72102149e-02 + 8.71475104e-02 8.70849016e-02 8.70223890e-02 8.69599731e-02 8.68976544e-02 + 8.68354337e-02 8.67733114e-02 8.67112881e-02 8.66493644e-02 8.65875409e-02 + 8.65258180e-02 8.64641964e-02 8.64026767e-02 8.63412594e-02 8.62799451e-02 + 8.62187344e-02 8.61576278e-02 8.60966259e-02 8.60357293e-02 8.59749386e-02 + 8.59142542e-02 8.58536769e-02 8.57932071e-02 8.57328455e-02 8.56725925e-02 + 8.56124489e-02 8.55524151e-02 8.54924918e-02 8.54326794e-02 8.53729787e-02 + 8.53133900e-02 8.52539141e-02 8.51945515e-02 8.51353028e-02 8.50761685e-02 + 8.50171493e-02 8.49582456e-02 8.48994581e-02 8.48407874e-02 8.47822340e-02 + 8.47237984e-02 8.46654813e-02 8.46072833e-02 8.45492049e-02 8.44912466e-02 + 8.44334092e-02 8.43756930e-02 8.43180988e-02 8.42606271e-02 8.42032784e-02 + 8.41460533e-02 8.40889525e-02 8.40319764e-02 8.39751257e-02 8.39184009e-02 + 8.38618026e-02 8.38053314e-02 8.37489878e-02 8.36927724e-02 8.36366859e-02 + 8.35807286e-02 8.35249013e-02 8.34692046e-02 8.34136388e-02 8.33582048e-02 + 8.33029029e-02 8.32477338e-02 8.31926981e-02 8.31377963e-02 8.30830290e-02 + 8.30283967e-02 8.29739001e-02 8.29195397e-02 8.28653161e-02 8.28112297e-02 + 8.27572813e-02 8.27034714e-02 8.26498005e-02 8.25962691e-02 8.25428780e-02 + 8.24896276e-02 8.24365184e-02 8.23835511e-02 8.23307263e-02 8.22780444e-02 + 8.22255060e-02 8.21731118e-02 8.21208622e-02 8.20687579e-02 8.20167993e-02 + 8.19649871e-02 8.19133218e-02 8.18618039e-02 8.18104341e-02 8.17592128e-02 + 8.17081407e-02 8.16572182e-02 8.16064460e-02 8.15558245e-02 8.15053545e-02 + 8.14550363e-02 8.14048705e-02 8.13548578e-02 8.13049986e-02 8.12552935e-02 + 8.12057430e-02 8.11563478e-02 8.11071082e-02 8.10580250e-02 8.10090986e-02 + 8.09603295e-02 8.09117184e-02 8.08632657e-02 8.08149721e-02 8.07668379e-02 + 8.07188639e-02 8.06710504e-02 8.06233982e-02 8.05759075e-02 8.05285792e-02 + 8.04814136e-02 8.04344112e-02 8.03875727e-02 8.03408986e-02 8.02943893e-02 + 8.02480455e-02 8.02018675e-02 8.01558561e-02 8.01100116e-02 8.00643347e-02 + 8.00188258e-02 7.99734855e-02 7.99283142e-02 7.98833126e-02 7.98384810e-02 + 7.97938201e-02 7.97493304e-02 7.97050123e-02 7.96608664e-02 7.96168932e-02 + 7.95730933e-02 7.95294670e-02 7.94860149e-02 7.94427376e-02 7.93996355e-02 + 7.93567091e-02 7.93139590e-02 7.92713856e-02 7.92289895e-02 7.91867711e-02 + 7.91447310e-02 7.91028695e-02 7.90611873e-02 7.90196849e-02 7.89783626e-02 + 7.89372210e-02 7.88962607e-02 7.88554819e-02 7.88148854e-02 7.87744715e-02 + 7.87342407e-02 7.86941935e-02 7.86543304e-02 7.86146519e-02 7.85751584e-02 + 7.85358504e-02 7.84967284e-02 7.84577929e-02 7.84190442e-02 7.83804830e-02 + 7.83421096e-02 7.83039245e-02 7.82659282e-02 7.82281212e-02 7.81905038e-02 + 7.81530766e-02 7.81158400e-02 7.80787945e-02 7.80419405e-02 7.80052784e-02 + 7.79688088e-02 7.79325320e-02 7.78964485e-02 7.78605587e-02 7.78248631e-02 + 7.77893622e-02 7.77540563e-02 7.77189459e-02 7.76840314e-02 7.76493132e-02 + 7.76147919e-02 7.75804677e-02 7.75463412e-02 7.75124127e-02 7.74786828e-02 + 7.74451517e-02 7.74118199e-02 7.73786878e-02 7.73457559e-02 7.73130245e-02 + 7.72804941e-02 7.72481650e-02 7.72160377e-02 7.71841125e-02 7.71523900e-02 + 7.71208703e-02 7.70895541e-02 7.70584416e-02 7.70275332e-02 7.69968293e-02 + 7.69663304e-02 7.69360368e-02 7.69059488e-02 7.68760670e-02 7.68463915e-02 + 7.68169229e-02 7.67876614e-02 7.67586075e-02 7.67297616e-02 7.67011239e-02 + 7.66726949e-02 7.66444749e-02 7.66164642e-02 7.65886633e-02 7.65610725e-02 + 7.65336921e-02 7.65065225e-02 7.64795641e-02 7.64528171e-02 7.64262819e-02 + 7.63999589e-02 7.63738484e-02 7.63479508e-02 7.63222662e-02 7.62967952e-02 + 7.62715380e-02 7.62464950e-02 7.62216664e-02 7.61970526e-02 7.61726539e-02 + 7.61484706e-02 7.61245031e-02 7.61007516e-02 7.60772164e-02 7.60538979e-02 + 7.60307964e-02 7.60079121e-02 7.59852453e-02 7.59627964e-02 7.59405657e-02 + 7.59185533e-02 7.58967597e-02 7.58751851e-02 7.58538297e-02 7.58326939e-02 + 7.58117779e-02 7.57910820e-02 7.57706065e-02 7.57503516e-02 7.57303176e-02 + 7.57105048e-02 7.56909134e-02 7.56715437e-02 7.56523959e-02 7.56334703e-02 + 7.56147671e-02 7.55962866e-02 7.55780290e-02 7.55599946e-02 7.55421835e-02 + 7.55245961e-02 7.55072326e-02 7.54900931e-02 7.54731780e-02 7.54564874e-02 + 7.54400215e-02 7.54237806e-02 7.54077649e-02 7.53919746e-02 7.53764099e-02 + 7.53610711e-02 7.53459582e-02 7.53310716e-02 7.53164113e-02 7.53019777e-02 + 7.52877708e-02 7.52737910e-02 7.52600383e-02 7.52465130e-02 7.52332152e-02 + 7.52201451e-02 7.52073028e-02 7.51946887e-02 7.51823027e-02 7.51701451e-02 + 7.51582161e-02 7.51465158e-02 7.51350443e-02 7.51238019e-02 7.51127886e-02 + 7.51020046e-02 7.50914500e-02 7.50811251e-02 7.50710299e-02 7.50611645e-02 + 7.50515291e-02 7.50421239e-02 7.50329489e-02 7.50240043e-02 7.50152901e-02 + 7.50068066e-02 7.49985538e-02 7.49905318e-02 7.49827407e-02 7.49751807e-02 + 7.49678518e-02 7.49607542e-02 7.49538879e-02 7.49472530e-02 7.49408496e-02 + 7.49346779e-02 7.49287378e-02 7.49230295e-02 7.49175530e-02 7.49123084e-02 + 7.49072958e-02 7.49025153e-02 7.48979669e-02 7.48936506e-02 7.48895666e-02 + 7.48857148e-02 7.48820954e-02 7.48787084e-02 7.48755538e-02 7.48726317e-02 + 7.48699421e-02 7.48674851e-02 7.48652606e-02 7.48632687e-02 7.48615095e-02 + 7.48599830e-02 7.48586891e-02 7.48576279e-02 7.48567994e-02 7.48562037e-02 + 7.48558407e-02 7.48557104e-02 7.48558129e-02 7.48561481e-02 7.48567160e-02 + 7.48575167e-02 7.48585501e-02 7.48598162e-02 7.48613149e-02 7.48630464e-02 + 7.48650104e-02 7.48672071e-02 7.48696364e-02 7.48722982e-02 7.48751926e-02 + 7.48783194e-02 7.48816786e-02 7.48852703e-02 7.48890943e-02 7.48931506e-02 + 7.48974391e-02 7.49019598e-02 7.49067126e-02 7.49116975e-02 7.49169143e-02 + 7.49223631e-02 7.49280438e-02 7.49339562e-02 7.49401003e-02 7.49464760e-02 + 7.49530832e-02 7.49599219e-02 7.49669919e-02 7.49742931e-02 7.49818255e-02 + 7.49895890e-02 7.49975834e-02 7.50058087e-02 7.50142646e-02 7.50229512e-02 + 7.50318684e-02 7.50410158e-02 7.50503936e-02 7.50600015e-02 7.50698394e-02 + 7.50799072e-02 7.50902047e-02 7.51007318e-02 7.51114884e-02 7.51224743e-02 + 7.51336894e-02 7.51451335e-02 7.51568065e-02 7.51687082e-02 7.51808385e-02 + 7.51931972e-02 7.52057841e-02 7.52185991e-02 7.52316420e-02 7.52449126e-02 + 7.52584108e-02 7.52721363e-02 7.52860890e-02 7.53002688e-02 7.53146753e-02 + 7.53293085e-02 7.53441681e-02 7.53592540e-02 7.53745659e-02 7.53901036e-02 + 7.54058670e-02 7.54218558e-02 7.54380698e-02 7.54545087e-02 7.54711725e-02 + 7.54880609e-02 7.55051735e-02 7.55225103e-02 7.55400710e-02 7.55578553e-02 + 7.55758631e-02 7.55940940e-02 7.56125479e-02 7.56312245e-02 7.56501236e-02 + 7.56692448e-02 7.56885881e-02 7.57081530e-02 7.57279394e-02 7.57479470e-02 + 7.57681755e-02 7.57886247e-02 7.58092942e-02 7.58301840e-02 7.58512935e-02 + 7.58726227e-02 7.58941712e-02 7.59159386e-02 7.59379249e-02 7.59601296e-02 + 7.59825524e-02 7.60051932e-02 7.60280515e-02 7.60511271e-02 7.60744197e-02 + 7.60979290e-02 7.61216547e-02 7.61455964e-02 7.61697540e-02 7.61941269e-02 + 7.62187151e-02 7.62435180e-02 7.62685354e-02 7.62937671e-02 7.63192126e-02 + 7.63448716e-02 7.63707438e-02 7.63968289e-02 7.64231266e-02 7.64496364e-02 + 7.64763581e-02 7.65032913e-02 7.65304357e-02 7.65577909e-02 7.65853566e-02 + 7.66131325e-02 7.66411181e-02 7.66693131e-02 7.66977171e-02 7.67263299e-02 + 7.67551510e-02 7.67841801e-02 7.68134168e-02 7.68428607e-02 7.68725114e-02 + 7.69023687e-02 7.69324320e-02 7.69627011e-02 7.69931756e-02 7.70238549e-02 + 7.70547389e-02 7.70858271e-02 7.71171190e-02 7.71486144e-02 7.71803127e-02 + 7.72122137e-02 7.72443169e-02 7.72766219e-02 7.73091283e-02 7.73418357e-02 + 7.73747437e-02 7.74078518e-02 7.74411598e-02 7.74746671e-02 7.75083734e-02 + 7.75422781e-02 7.75763810e-02 7.76106816e-02 7.76451794e-02 7.76798741e-02 + 7.77147651e-02 7.77498522e-02 7.77851347e-02 7.78206124e-02 7.78562848e-02 + 7.78921513e-02 7.79282117e-02 7.79644654e-02 7.80009121e-02 7.80375512e-02 + 7.80743823e-02 7.81114050e-02 7.81486188e-02 7.81860233e-02 7.82236179e-02 + 7.82614023e-02 7.82993761e-02 7.83375386e-02 7.83758895e-02 7.84144284e-02 + 7.84531546e-02 7.84920679e-02 7.85311676e-02 7.85704534e-02 7.86099248e-02 + 7.86495813e-02 7.86894223e-02 7.87294475e-02 7.87696564e-02 7.88100485e-02 + 7.88506232e-02 7.88913802e-02 7.89323189e-02 7.89734389e-02 7.90147396e-02 + 7.90562205e-02 7.90978813e-02 7.91397213e-02 7.91817402e-02 7.92239373e-02 + 7.92663122e-02 7.93088645e-02 7.93515935e-02 7.93944988e-02 7.94375800e-02 + 7.94808364e-02 7.95242676e-02 7.95678731e-02 7.96116524e-02 7.96556049e-02 + 7.96997302e-02 7.97440277e-02 7.97884970e-02 7.98331374e-02 7.98779486e-02 + 7.99229300e-02 7.99680810e-02 8.00134012e-02 8.00588900e-02 8.01045468e-02 + 8.01503713e-02 8.01963628e-02 8.02425209e-02 8.02888450e-02 8.03353345e-02 + 8.03819890e-02 8.04288079e-02 8.04757907e-02 8.05229368e-02 8.05702458e-02 + 8.06177170e-02 8.06653500e-02 8.07131443e-02 8.07610992e-02 8.08092142e-02 + 8.08574888e-02 8.09059225e-02 8.09545148e-02 8.10032650e-02 8.10521726e-02 + 8.11012372e-02 8.11504581e-02 8.11998347e-02 8.12493667e-02 8.12990534e-02 + 8.13488942e-02 8.13988886e-02 8.14490361e-02 8.14993361e-02 8.15497881e-02 + 8.16003915e-02 8.16511457e-02 8.17020502e-02 8.17531045e-02 8.18043080e-02 + 8.18556601e-02 8.19071604e-02 8.19588081e-02 8.20106028e-02 8.20625439e-02 + 8.21146309e-02 8.21668631e-02 8.22192401e-02 8.22717613e-02 8.23244260e-02 + 8.23772339e-02 8.24301842e-02 8.24832764e-02 8.25365100e-02 8.25898843e-02 + 8.26433990e-02 8.26970532e-02 8.27508466e-02 8.28047785e-02 8.28588484e-02 + 8.29130557e-02 8.29673998e-02 8.30218801e-02 8.30764962e-02 8.31312474e-02 + 8.31861332e-02 8.32411529e-02 8.32963061e-02 8.33515922e-02 8.34070105e-02 + 8.34625605e-02 8.35182417e-02 8.35740534e-02 8.36299951e-02 8.36860663e-02 + 8.37422663e-02 8.37985946e-02 8.38550506e-02 8.39116338e-02 8.39683435e-02 + 8.40251792e-02 8.40821403e-02 8.41392263e-02 8.41964365e-02 8.42537705e-02 + 8.43112275e-02 8.43688072e-02 8.44265088e-02 8.44843318e-02 8.45422756e-02 + 8.46003397e-02 8.46585235e-02 8.47168264e-02 8.47752478e-02 8.48337872e-02 + 8.48924439e-02 8.49512175e-02 8.50101073e-02 8.50691128e-02 8.51282334e-02 + 8.51874685e-02 8.52468175e-02 8.53062799e-02 8.53658551e-02 8.54255425e-02 + 8.54853415e-02 8.55452516e-02 8.56052723e-02 8.56654028e-02 8.57256427e-02 + 8.57859914e-02 8.58464483e-02 8.59070128e-02 8.59676844e-02 8.60284625e-02 + 8.60893465e-02 8.61503358e-02 8.62114299e-02 8.62726282e-02 8.63339302e-02 + 8.63953352e-02 8.64568427e-02 8.65184522e-02 8.65801629e-02 8.66419745e-02 + 8.67038863e-02 8.67658977e-02 8.68280082e-02 8.68902172e-02 8.69525242e-02 + 8.70149285e-02 8.70774296e-02 8.71400270e-02 8.72027200e-02 8.72655081e-02 + 8.73283908e-02 8.73913675e-02 8.74544376e-02 8.75176005e-02 8.75808557e-02 + 8.76442026e-02 8.77076407e-02 8.77711694e-02 8.78347881e-02 8.78984963e-02 + 8.79622934e-02 8.80261789e-02 8.80901521e-02 8.81542126e-02 8.82183598e-02 + 8.82825930e-02 8.83469119e-02 8.84113157e-02 8.84758040e-02 8.85403762e-02 + 8.86050317e-02 8.86697700e-02 8.87345905e-02 8.87994927e-02 8.88644761e-02 + 8.89295400e-02 8.89946839e-02 8.90599073e-02 8.91252096e-02 8.91905903e-02 + 8.92560488e-02 8.93215845e-02 8.93871970e-02 8.94528857e-02 8.95186500e-02 + 8.95844894e-02 8.96504034e-02 8.97163914e-02 8.97824528e-02 8.98485871e-02 + 8.99147938e-02 8.99810724e-02 9.00474222e-02 9.01138428e-02 9.01803336e-02 + 9.02468942e-02 9.03135238e-02 9.03802221e-02 9.04469884e-02 9.05138223e-02 + 9.05807232e-02 9.06476906e-02 9.07147239e-02 9.07818226e-02 9.08489862e-02 + 9.09162142e-02 9.09835060e-02 9.10508611e-02 9.11182790e-02 9.11857591e-02 + 9.12533009e-02 9.13209040e-02 9.13885677e-02 9.14562916e-02 9.15240751e-02 + 9.15919178e-02 9.16598190e-02 9.17277784e-02 9.17957953e-02 9.18638692e-02 + 9.19319997e-02 9.20001862e-02 9.20684282e-02 9.21367252e-02 9.22050767e-02 + 9.22734821e-02 9.23419411e-02 9.24104530e-02 9.24790173e-02 9.25476336e-02 + 9.26163013e-02 9.26850199e-02 9.27537890e-02 9.28226080e-02 9.28914765e-02 + 9.29603938e-02 9.30293596e-02 9.30983734e-02 9.31674346e-02 9.32365427e-02 + 9.33056973e-02 9.33748978e-02 9.34441438e-02 9.35134347e-02 9.35827701e-02 + 9.36521496e-02 9.37215725e-02 9.37910385e-02 9.38605469e-02 9.39300975e-02 + 9.39996895e-02 9.40693227e-02 9.41389965e-02 9.42087104e-02 9.42784639e-02 + 9.43482566e-02 9.44180880e-02 9.44879576e-02 9.45578649e-02 9.46278095e-02 + 9.46977909e-02 9.47678086e-02 9.48378622e-02 9.49079511e-02 9.49780750e-02 + 9.50482333e-02 9.51184256e-02 9.51886514e-02 9.52589103e-02 9.53292017e-02 + 9.53995254e-02 9.54698806e-02 9.55402671e-02 9.56106844e-02 9.56811320e-02 + 9.57516094e-02 9.58221162e-02 9.58926520e-02 9.59632163e-02 9.60338086e-02 + 9.61044286e-02 9.61750756e-02 9.62457494e-02 9.63164495e-02 9.63871754e-02 + 9.64579266e-02 9.65287028e-02 9.65995035e-02 9.66703283e-02 9.67411766e-02 + 9.68120482e-02 9.68829425e-02 9.69538592e-02 9.70247977e-02 9.70957577e-02 + 9.71667387e-02 9.72377403e-02 9.73087621e-02 9.73798037e-02 9.74508645e-02 + 9.75219443e-02 9.75930426e-02 9.76641589e-02 9.77352928e-02 9.78064440e-02 + 9.78776119e-02 9.79487963e-02 9.80199966e-02 9.80912125e-02 9.81624436e-02 + 9.82336894e-02 9.83049495e-02 9.83762235e-02 9.84475111e-02 9.85188118e-02 + 9.85901251e-02 9.86614508e-02 9.87327884e-02 9.88041375e-02 9.88754977e-02 + 9.89468687e-02 9.90182499e-02 9.90896410e-02 9.91610417e-02 9.92324515e-02 + 9.93038701e-02 9.93752970e-02 9.94467318e-02 9.95181743e-02 9.95896239e-02 + 9.96610804e-02 9.97325432e-02 9.98040122e-02 9.98754867e-02 9.99469666e-02 + 1.00018451e-01 1.00089941e-01 1.00161434e-01 1.00232931e-01 1.00304432e-01 + 1.00375936e-01 1.00447442e-01 1.00518951e-01 1.00590461e-01 1.00661973e-01 + 1.00733487e-01 1.00805001e-01 1.00876516e-01 1.00948030e-01 1.01019545e-01 + 1.01091059e-01 1.01162572e-01 1.01234084e-01 1.01305594e-01 1.01377102e-01 + 1.01448607e-01 1.01520110e-01 1.01591610e-01 1.01663106e-01 1.01734599e-01 + 1.01806088e-01 1.01877572e-01 1.01949051e-01 1.02020525e-01 1.02091994e-01 + 1.02163457e-01 1.02234914e-01 1.02306364e-01 1.02377807e-01 1.02449244e-01 + 1.02520672e-01 1.02592093e-01 1.02663506e-01 1.02734911e-01 1.02806306e-01 + 1.02877693e-01 1.02949070e-01 1.03020437e-01 1.03091794e-01 1.03163141e-01 + 1.03234477e-01 1.03305802e-01 1.03377115e-01 1.03448417e-01 1.03519707e-01 + 1.03590985e-01 1.03662250e-01 1.03733502e-01 1.03804741e-01 1.03875966e-01 + 1.03947178e-01 1.04018375e-01 1.04089558e-01 1.04160726e-01 1.04231879e-01 + 1.04303017e-01 1.04374139e-01 1.04445245e-01 1.04516335e-01 1.04587409e-01 + 1.04658465e-01 1.04729504e-01 1.04800527e-01 1.04871531e-01 1.04942517e-01 + 1.05013485e-01 1.05084435e-01 1.05155365e-01 1.05226277e-01 1.05297169e-01 + 1.05368041e-01 1.05438894e-01 1.05509726e-01 1.05580538e-01 1.05651329e-01 + 1.05722099e-01 1.05792847e-01 1.05863574e-01 1.05934279e-01 1.06004962e-01 + 1.06075622e-01 1.06146260e-01 1.06216875e-01 1.06287467e-01 1.06358035e-01 + 1.06428579e-01 1.06499100e-01 1.06569596e-01 1.06640067e-01 1.06710514e-01 + 1.06780936e-01 1.06851332e-01 1.06921703e-01 1.06992049e-01 1.07062368e-01 + 1.07132661e-01 1.07202927e-01 1.07273167e-01 1.07343379e-01 1.07413565e-01 + 1.07483722e-01 1.07553852e-01 1.07623955e-01 1.07694028e-01 1.07764074e-01 + 1.07834090e-01 1.07904078e-01 1.07974036e-01 1.08043966e-01 1.08113865e-01 + 1.08183735e-01 1.08253574e-01 1.08323383e-01 1.08393162e-01 1.08462910e-01 + 1.08532626e-01 1.08602312e-01 1.08671966e-01 1.08741588e-01 1.08811179e-01 + 1.08880737e-01 1.08950263e-01 1.09019757e-01 1.09089217e-01 1.09158645e-01 + 1.09228040e-01 1.09297401e-01 1.09366728e-01 1.09436022e-01 1.09505281e-01 + 1.09574507e-01 1.09643698e-01 1.09712854e-01 1.09781975e-01 1.09851061e-01 + 1.09920112e-01 1.09989128e-01 1.10058108e-01 1.10127052e-01 1.10195959e-01 + 1.10264831e-01 1.10333666e-01 1.10402465e-01 1.10471226e-01 1.10539951e-01 + 1.10608638e-01 1.10677288e-01 1.10745900e-01 1.10814475e-01 1.10883011e-01 + 1.10951510e-01 1.11019970e-01 1.11088391e-01 1.11156774e-01 1.11225117e-01 + 1.11293422e-01 1.11361687e-01 1.11429913e-01 1.11498100e-01 1.11566246e-01 + 1.11634353e-01 1.11702419e-01 1.11770445e-01 1.11838431e-01 1.11906376e-01 + 1.11974280e-01 1.12042143e-01 1.12109965e-01 1.12177745e-01 1.12245484e-01 + 1.12313182e-01 1.12380837e-01 1.12448451e-01 1.12516022e-01 1.12583551e-01 + 1.12651038e-01 1.12718482e-01 1.12785883e-01 1.12853241e-01 1.12920556e-01 + 1.12987828e-01 1.13055056e-01 1.13122241e-01 1.13189382e-01 1.13256480e-01 + 1.13323533e-01 1.13390542e-01 1.13457507e-01 1.13524427e-01 1.13591303e-01 + 1.13658134e-01 1.13724920e-01 1.13791661e-01 1.13858356e-01 1.13925007e-01 + 1.13991612e-01 1.14058171e-01 1.14124685e-01 1.14191153e-01 1.14257575e-01 + 1.14323950e-01 1.14390280e-01 1.14456562e-01 1.14522799e-01 1.14588988e-01 + 1.14655131e-01 1.14721227e-01 1.14787276e-01 1.14853278e-01 1.14919232e-01 + 1.14985139e-01 1.15050998e-01 1.15116810e-01 1.15182574e-01 1.15248290e-01 + 1.15313957e-01 1.15379577e-01 1.15445148e-01 1.15510671e-01 1.15576146e-01 + 1.15641571e-01 1.15706948e-01 1.15772276e-01 1.15837555e-01 1.15902785e-01 + 1.15967965e-01 1.16033097e-01 1.16098179e-01 1.16163211e-01 1.16228193e-01 + 1.16293126e-01 1.16358009e-01 1.16422842e-01 1.16487625e-01 1.16552357e-01 + 1.16617040e-01 1.16681672e-01 1.16746253e-01 1.16810784e-01 1.16875264e-01 + 1.16939693e-01 1.17004071e-01 1.17068398e-01 1.17132674e-01 1.17196899e-01 + 1.17261073e-01 1.17325195e-01 1.17389266e-01 1.17453285e-01 1.17517252e-01 + 1.17581168e-01 1.17645032e-01 1.17708843e-01 1.17772603e-01 1.17836311e-01 + 1.17899966e-01 1.17963569e-01 1.18027120e-01 1.18090618e-01 1.18154064e-01 + 1.18217457e-01 1.18280797e-01 1.18344084e-01 1.18407319e-01 1.18470500e-01 + 1.18533629e-01 1.18596704e-01 1.18659726e-01 1.18722695e-01 1.18785610e-01 + 1.18848472e-01 1.18911281e-01 1.18974035e-01 1.19036736e-01 1.19099384e-01 + 1.03953624e+00 1.03772749e+00 1.03592023e+00 1.03411445e+00 1.03231016e+00 + 1.03050735e+00 1.02870603e+00 1.02690620e+00 1.02510785e+00 1.02331100e+00 + 1.02151562e+00 1.01972174e+00 1.01792935e+00 1.01613844e+00 1.01434902e+00 + 1.01256110e+00 1.01077466e+00 1.00898971e+00 1.00720626e+00 1.00542429e+00 + 1.00364382e+00 1.00186484e+00 1.00008735e+00 9.98311355e-01 9.96536852e-01 + 9.94763842e-01 9.92992326e-01 9.91222304e-01 9.89453777e-01 9.87686744e-01 + 9.85921207e-01 9.84157165e-01 9.82394619e-01 9.80633570e-01 9.78874017e-01 + 9.77115962e-01 9.75359404e-01 9.73604344e-01 9.71850782e-01 9.70098719e-01 + 9.68348155e-01 9.66599090e-01 9.64851525e-01 9.63105460e-01 9.61360895e-01 + 9.59617832e-01 9.57876269e-01 9.56136208e-01 9.54397649e-01 9.52660593e-01 + 9.50925039e-01 9.49190988e-01 9.47458441e-01 9.45727397e-01 9.43997858e-01 + 9.42269823e-01 9.40543293e-01 9.38818268e-01 9.37094749e-01 9.35372736e-01 + 9.33652230e-01 9.31933230e-01 9.30215737e-01 9.28499752e-01 9.26785274e-01 + 9.25072305e-01 9.23360844e-01 9.21650893e-01 9.19942450e-01 9.18235517e-01 + 9.16530094e-01 9.14826182e-01 9.13123780e-01 9.11422890e-01 9.09723511e-01 + 9.08025644e-01 9.06329289e-01 9.04634446e-01 9.02941117e-01 9.01249300e-01 + 8.99558998e-01 8.97870209e-01 8.96182935e-01 8.94497176e-01 8.92812931e-01 + 8.91130202e-01 8.89448989e-01 8.87769292e-01 8.86091112e-01 8.84414448e-01 + 8.82739302e-01 8.81065673e-01 8.79393562e-01 8.77722970e-01 8.76053896e-01 + 8.74386341e-01 8.72720306e-01 8.71055790e-01 8.69392795e-01 8.67731320e-01 + 8.66071366e-01 8.64412932e-01 8.62756021e-01 8.61100631e-01 8.59446764e-01 + 8.57794419e-01 8.56143597e-01 8.54494298e-01 8.52846523e-01 8.51200272e-01 + 8.49555545e-01 8.47912343e-01 8.46270666e-01 8.44630515e-01 8.42991889e-01 + 8.41354789e-01 8.39719216e-01 8.38085170e-01 8.36452650e-01 8.34821658e-01 + 8.33192195e-01 8.31564259e-01 8.29937852e-01 8.28312973e-01 8.26689624e-01 + 8.25067805e-01 8.23447515e-01 8.21828756e-01 8.20211528e-01 8.18595830e-01 + 8.16981664e-01 8.15369029e-01 8.13757927e-01 8.12148357e-01 8.10540319e-01 + 8.08933815e-01 8.07328844e-01 8.05725406e-01 8.04123503e-01 8.02523135e-01 + 8.00924301e-01 7.99327002e-01 7.97731239e-01 7.96137011e-01 7.94544320e-01 + 7.92953165e-01 7.91363547e-01 7.89775466e-01 7.88188923e-01 7.86603918e-01 + 7.85020450e-01 7.83438522e-01 7.81858132e-01 7.80279281e-01 7.78701970e-01 + 7.77126199e-01 7.75551968e-01 7.73979278e-01 7.72408129e-01 7.70838521e-01 + 7.69270454e-01 7.67703930e-01 7.66138947e-01 7.64575508e-01 7.63013611e-01 + 7.61453258e-01 7.59894448e-01 7.58337182e-01 7.56781460e-01 7.55227283e-01 + 7.53674651e-01 7.52123565e-01 7.50574024e-01 7.49026029e-01 7.47479580e-01 + 7.45934678e-01 7.44391322e-01 7.42849514e-01 7.41309254e-01 7.39770542e-01 + 7.38233378e-01 7.36697762e-01 7.35163696e-01 7.33631179e-01 7.32100211e-01 + 7.30570794e-01 7.29042926e-01 7.27516610e-01 7.25991844e-01 7.24468629e-01 + 7.22946966e-01 7.21426855e-01 7.19908297e-01 7.18391291e-01 7.16875837e-01 + 7.15361937e-01 7.13849591e-01 7.12338798e-01 7.10829560e-01 7.09321876e-01 + 7.07815747e-01 7.06311174e-01 7.04808155e-01 7.03306693e-01 7.01806787e-01 + 7.00308437e-01 6.98811644e-01 6.97316408e-01 6.95822730e-01 6.94330610e-01 + 6.92840047e-01 6.91351043e-01 6.89863598e-01 6.88377712e-01 6.86893385e-01 + 6.85410618e-01 6.83929411e-01 6.82449765e-01 6.80971679e-01 6.79495154e-01 + 6.78020190e-01 6.76546789e-01 6.75074949e-01 6.73604671e-01 6.72135956e-01 + 6.70668804e-01 6.69203215e-01 6.67739189e-01 6.66276728e-01 6.64815830e-01 + 6.63356498e-01 6.61898730e-01 6.60442527e-01 6.58987889e-01 6.57534818e-01 + 6.56083312e-01 6.54633373e-01 6.53185001e-01 6.51738195e-01 6.50292957e-01 + 6.48849287e-01 6.47407184e-01 6.45966650e-01 6.44527685e-01 6.43090288e-01 + 6.41654460e-01 6.40220202e-01 6.38787514e-01 6.37356396e-01 6.35926849e-01 + 6.34498872e-01 6.33072467e-01 6.31647633e-01 6.30224370e-01 6.28802680e-01 + 6.27382561e-01 6.25964016e-01 6.24547043e-01 6.23131644e-01 6.21717818e-01 + 6.20305566e-01 6.18894889e-01 6.17485785e-01 6.16078257e-01 6.14672303e-01 + 6.13267925e-01 6.11865123e-01 6.10463897e-01 6.09064247e-01 6.07666173e-01 + 6.06269677e-01 6.04874758e-01 6.03481416e-01 6.02089652e-01 6.00699467e-01 + 5.99310859e-01 5.97923831e-01 5.96538381e-01 5.95154511e-01 5.93772221e-01 + 5.92391510e-01 5.91012380e-01 5.89634830e-01 5.88258861e-01 5.86884473e-01 + 5.85511667e-01 5.84140442e-01 5.82770800e-01 5.81402740e-01 5.80036262e-01 + 5.78671367e-01 5.77308056e-01 5.75946328e-01 5.74586184e-01 5.73227624e-01 + 5.71870649e-01 5.70515258e-01 5.69161453e-01 5.67809232e-01 5.66458597e-01 + 5.65109548e-01 5.63762086e-01 5.62416210e-01 5.61071920e-01 5.59729218e-01 + 5.58388103e-01 5.57048576e-01 5.55710636e-01 5.54374285e-01 5.53039523e-01 + 5.51706349e-01 5.50374764e-01 5.49044769e-01 5.47716364e-01 5.46389548e-01 + 5.45064323e-01 5.43740689e-01 5.42418645e-01 5.41098192e-01 5.39779331e-01 + 5.38462062e-01 5.37146385e-01 5.35832299e-01 5.34519807e-01 5.33208907e-01 + 5.31899601e-01 5.30591888e-01 5.29285769e-01 5.27981244e-01 5.26678313e-01 + 5.25376977e-01 5.24077235e-01 5.22779089e-01 5.21482538e-01 5.20187583e-01 + 5.18894224e-01 5.17602461e-01 5.16312295e-01 5.15023726e-01 5.13736754e-01 + 5.12451379e-01 5.11167602e-01 5.09885423e-01 5.08604843e-01 5.07325861e-01 + 5.06048477e-01 5.04772693e-01 5.03498508e-01 5.02225923e-01 5.00954938e-01 + 4.99685553e-01 4.98417769e-01 4.97151585e-01 4.95887003e-01 4.94624021e-01 + 4.93362642e-01 4.92102864e-01 4.90844689e-01 4.89588116e-01 4.88333145e-01 + 4.87079778e-01 4.85828014e-01 4.84577853e-01 4.83329297e-01 4.82082344e-01 + 4.80836996e-01 4.79593252e-01 4.78351114e-01 4.77110580e-01 4.75871652e-01 + 4.74634330e-01 4.73398614e-01 4.72164504e-01 4.70932001e-01 4.69701104e-01 + 4.68471815e-01 4.67244132e-01 4.66018058e-01 4.64793591e-01 4.63570733e-01 + 4.62349483e-01 4.61129842e-01 4.59911810e-01 4.58695387e-01 4.57480573e-01 + 4.56267369e-01 4.55055776e-01 4.53845792e-01 4.52637419e-01 4.51430658e-01 + 4.50225507e-01 4.49021967e-01 4.47820039e-01 4.46619724e-01 4.45421020e-01 + 4.44223928e-01 4.43028450e-01 4.41834584e-01 4.40642332e-01 4.39451693e-01 + 4.38262668e-01 4.37075256e-01 4.35889459e-01 4.34705277e-01 4.33522709e-01 + 4.32341757e-01 4.31162420e-01 4.29984698e-01 4.28808592e-01 4.27634102e-01 + 4.26461229e-01 4.25289972e-01 4.24120332e-01 4.22952310e-01 4.21785904e-01 + 4.20621116e-01 4.19457946e-01 4.18296395e-01 4.17136461e-01 4.15978147e-01 + 4.14821451e-01 4.13666374e-01 4.12512917e-01 4.11361080e-01 4.10210862e-01 + 4.09062265e-01 4.07915288e-01 4.06769932e-01 4.05626197e-01 4.04484083e-01 + 4.03343590e-01 4.02204719e-01 4.01067470e-01 3.99931844e-01 3.98797839e-01 + 3.97665458e-01 3.96534699e-01 3.95405564e-01 3.94278052e-01 3.93152164e-01 + 3.92027900e-01 3.90905259e-01 3.89784244e-01 3.88664853e-01 3.87547087e-01 + 3.86430946e-01 3.85316431e-01 3.84203541e-01 3.83092278e-01 3.81982640e-01 + 3.80874629e-01 3.79768245e-01 3.78663487e-01 3.77560357e-01 3.76458854e-01 + 3.75358979e-01 3.74260731e-01 3.73164112e-01 3.72069121e-01 3.70975759e-01 + 3.69884025e-01 3.68793921e-01 3.67705446e-01 3.66618601e-01 3.65533385e-01 + 3.64449799e-01 3.63367844e-01 3.62287520e-01 3.61208826e-01 3.60131763e-01 + 3.59056331e-01 3.57982531e-01 3.56910363e-01 3.55839826e-01 3.54770922e-01 + 3.53703650e-01 3.52638011e-01 3.51574005e-01 3.50511632e-01 3.49450892e-01 + 3.48391786e-01 3.47334314e-01 3.46278476e-01 3.45224272e-01 3.44171703e-01 + 3.43120769e-01 3.42071469e-01 3.41023805e-01 3.39977776e-01 3.38933384e-01 + 3.37890627e-01 3.36849506e-01 3.35810021e-01 3.34772174e-01 3.33735963e-01 + 3.32701389e-01 3.31668453e-01 3.30637154e-01 3.29607493e-01 3.28579470e-01 + 3.27553085e-01 3.26528339e-01 3.25505231e-01 3.24483762e-01 3.23463933e-01 + 3.22445743e-01 3.21429192e-01 3.20414282e-01 3.19401011e-01 3.18389381e-01 + 3.17379391e-01 3.16371042e-01 3.15364334e-01 3.14359267e-01 3.13355841e-01 + 3.12354057e-01 3.11353915e-01 3.10355415e-01 3.09358557e-01 3.08363342e-01 + 3.07369770e-01 3.06377840e-01 3.05387554e-01 3.04398911e-01 3.03411912e-01 + 3.02426556e-01 3.01442845e-01 3.00460777e-01 2.99480355e-01 2.98501577e-01 + 2.97524444e-01 2.96548956e-01 2.95575113e-01 2.94602916e-01 2.93632365e-01 + 2.92663460e-01 2.91696201e-01 2.90730589e-01 2.89766623e-01 2.88804304e-01 + 2.87843632e-01 2.86884607e-01 2.85927230e-01 2.84971501e-01 2.84017420e-01 + 2.83064986e-01 2.82114201e-01 2.81165065e-01 2.80217578e-01 2.79271739e-01 + 2.78327550e-01 2.77385010e-01 2.76444119e-01 2.75504879e-01 2.74567288e-01 + 2.73631348e-01 2.72697059e-01 2.71764419e-01 2.70833431e-01 2.69904094e-01 + 2.68976408e-01 2.68050374e-01 2.67125991e-01 2.66203261e-01 2.65282182e-01 + 2.64362756e-01 2.63444982e-01 2.62528861e-01 2.61614393e-01 2.60701578e-01 + 2.59790416e-01 2.58880908e-01 2.57973054e-01 2.57066853e-01 2.56162307e-01 + 2.55259415e-01 2.54358178e-01 2.53458595e-01 2.52560668e-01 2.51664395e-01 + 2.50769778e-01 2.49876816e-01 2.48985511e-01 2.48095861e-01 2.47207867e-01 + 2.46321530e-01 2.45436849e-01 2.44553825e-01 2.43672457e-01 2.42792747e-01 + 2.41914695e-01 2.41038300e-01 2.40163562e-01 2.39290483e-01 2.38419061e-01 + 2.37549298e-01 2.36681193e-01 2.35814748e-01 2.34949961e-01 2.34086833e-01 + 2.33225364e-01 2.32365555e-01 2.31507405e-01 2.30650916e-01 2.29796086e-01 + 2.28942916e-01 2.28091407e-01 2.27241559e-01 2.26393372e-01 2.25546845e-01 + 2.24701980e-01 2.23858776e-01 2.23017233e-01 2.22177352e-01 2.21339134e-01 + 2.20502577e-01 2.19667682e-01 2.18834451e-01 2.18002881e-01 2.17172975e-01 + 2.16344732e-01 2.15518152e-01 2.14693235e-01 2.13869982e-01 2.13048393e-01 + 2.12228468e-01 2.11410207e-01 2.10593610e-01 2.09778678e-01 2.08965410e-01 + 2.08153807e-01 2.07343870e-01 2.06535598e-01 2.05728991e-01 2.04924049e-01 + 2.04120774e-01 2.03319164e-01 2.02519221e-01 2.01720944e-01 2.00924334e-01 + 2.00129390e-01 1.99336113e-01 1.98544503e-01 1.97754560e-01 1.96966285e-01 + 1.96179677e-01 1.95394737e-01 1.94611465e-01 1.93829861e-01 1.93049925e-01 + 1.92271658e-01 1.91495059e-01 1.90720129e-01 1.89946869e-01 1.89175277e-01 + 1.88405354e-01 1.87637101e-01 1.86870518e-01 1.86105605e-01 1.85342361e-01 + 1.84580788e-01 1.83820885e-01 1.83062653e-01 1.82306091e-01 1.81551200e-01 + 1.80797980e-01 1.80046431e-01 1.79296554e-01 1.78548348e-01 1.77801814e-01 + 1.77056952e-01 1.76313762e-01 1.75572244e-01 1.74832398e-01 1.74094225e-01 + 1.73357725e-01 1.72622897e-01 1.71889743e-01 1.71158261e-01 1.70428453e-01 + 1.69700319e-01 1.68973858e-01 1.68249071e-01 1.67525958e-01 1.66804519e-01 + 1.66084755e-01 1.65366665e-01 1.64650249e-01 1.63935509e-01 1.63222443e-01 + 1.62511053e-01 1.61801338e-01 1.61093298e-01 1.60386934e-01 1.59682246e-01 + 1.58979233e-01 1.58277897e-01 1.57578237e-01 1.56880253e-01 1.56183946e-01 + 1.55489316e-01 1.54796362e-01 1.54105086e-01 1.53415486e-01 1.52727564e-01 + 1.52041320e-01 1.51356753e-01 1.50673864e-01 1.49992653e-01 1.49313120e-01 + 1.48635265e-01 1.47959088e-01 1.47284591e-01 1.46611771e-01 1.45940631e-01 + 1.45271170e-01 1.44603388e-01 1.43937285e-01 1.43272862e-01 1.42610118e-01 + 1.41949054e-01 1.41289670e-01 1.40631966e-01 1.39975942e-01 1.39321598e-01 + 1.38668935e-01 1.38017953e-01 1.37368652e-01 1.36721031e-01 1.36075091e-01 + 1.35430833e-01 1.34788256e-01 1.34147361e-01 1.33508147e-01 1.32870615e-01 + 1.32234765e-01 1.31600597e-01 1.30968111e-01 1.30337308e-01 1.29708187e-01 + 1.29080749e-01 1.28454994e-01 1.27830921e-01 1.27208532e-01 1.26587826e-01 + 1.25968803e-01 1.25351464e-01 1.24735808e-01 1.24121836e-01 1.23509548e-01 + 1.22898944e-01 1.22290024e-01 1.21682789e-01 1.21077238e-01 1.20473372e-01 + 1.19871190e-01 1.19270693e-01 1.18671881e-01 1.18074755e-01 1.17479313e-01 + 1.16885558e-01 1.16293487e-01 1.15703102e-01 1.15114403e-01 1.14527390e-01 + 1.13942064e-01 1.13358423e-01 1.12776468e-01 1.12196200e-01 1.11617619e-01 + 1.11040725e-01 1.10465517e-01 1.09891996e-01 1.09320162e-01 1.08750016e-01 + 1.08181557e-01 1.07614785e-01 1.07049701e-01 1.06486305e-01 1.05924597e-01 + 1.05364577e-01 1.04806244e-01 1.04249601e-01 1.03694645e-01 1.03141378e-01 + 1.02589800e-01 1.02039910e-01 1.01491709e-01 1.00945198e-01 1.00400375e-01 + 9.98572416e-02 9.93157976e-02 9.87760431e-02 9.82379782e-02 9.77016030e-02 + 9.71669178e-02 9.66339224e-02 9.61026172e-02 9.55730022e-02 9.50450776e-02 + 9.45188434e-02 9.39942997e-02 9.34714468e-02 9.29502847e-02 9.24308135e-02 + 9.19130333e-02 9.13969443e-02 9.08825466e-02 9.03698403e-02 8.98588255e-02 + 8.93495023e-02 8.88418708e-02 8.83359312e-02 8.78316836e-02 8.73291281e-02 + 8.68282647e-02 8.63290937e-02 8.58316150e-02 8.53358290e-02 8.48417355e-02 + 8.43493348e-02 8.38586270e-02 8.33696121e-02 8.28822904e-02 8.23966618e-02 + 8.19127265e-02 8.14304847e-02 8.09499364e-02 8.04710817e-02 7.99939207e-02 + 7.95184537e-02 7.90446805e-02 7.85726014e-02 7.81022165e-02 7.76335259e-02 + 7.71665296e-02 7.67012279e-02 7.62376207e-02 7.57757082e-02 7.53154905e-02 + 7.48569677e-02 7.44001400e-02 7.39450073e-02 7.34915699e-02 7.30398277e-02 + 7.25897810e-02 7.21414298e-02 7.16947743e-02 7.12498144e-02 7.08065504e-02 + 7.03649822e-02 6.99251102e-02 6.94869342e-02 6.90504544e-02 6.86156710e-02 + 6.81825840e-02 6.77511935e-02 6.73214996e-02 6.68935024e-02 6.64672020e-02 + 6.60425985e-02 6.56196920e-02 6.51984826e-02 6.47789704e-02 6.43611555e-02 + 6.39450379e-02 6.35306178e-02 6.31178953e-02 6.27068704e-02 6.22975433e-02 + 6.18899141e-02 6.14839827e-02 6.10797494e-02 6.06772142e-02 6.02763772e-02 + 5.98772385e-02 5.94797982e-02 5.90840564e-02 5.86900131e-02 5.82976685e-02 + 5.79070227e-02 5.75180757e-02 5.71308276e-02 5.67452785e-02 5.63614285e-02 + 5.59792777e-02 5.55988261e-02 5.52200739e-02 5.48430212e-02 5.44676679e-02 + 5.40940143e-02 5.37220604e-02 5.33518062e-02 5.29832520e-02 5.26163976e-02 + 5.22512433e-02 5.18877891e-02 5.15260351e-02 5.11659814e-02 5.08076280e-02 + 5.04509751e-02 5.00960227e-02 4.97427708e-02 4.93912197e-02 4.90413693e-02 + 4.86932198e-02 4.83467711e-02 4.80020235e-02 4.76589769e-02 4.73176315e-02 + 4.69779873e-02 4.66400444e-02 4.63038029e-02 4.59692628e-02 4.56364243e-02 + 4.53052874e-02 4.49758521e-02 4.46481186e-02 4.43220870e-02 4.39977572e-02 + 4.36751294e-02 4.33542037e-02 4.30349801e-02 4.27174587e-02 4.24016395e-02 + 4.20875227e-02 4.17751083e-02 4.14643964e-02 4.11553870e-02 4.08480802e-02 + 4.05424762e-02 4.02385749e-02 3.99363764e-02 3.96358808e-02 3.93370881e-02 + 3.90399985e-02 3.87446120e-02 3.84509287e-02 3.81589486e-02 3.78686718e-02 + 3.75800983e-02 3.72932283e-02 3.70080618e-02 3.67245988e-02 3.64428394e-02 + 3.61627838e-02 3.58844318e-02 3.56077837e-02 3.53328395e-02 3.50595992e-02 + 3.47880629e-02 3.45182306e-02 3.42501025e-02 3.39836786e-02 3.37189589e-02 + 3.34559435e-02 3.31946324e-02 3.29350258e-02 3.26771236e-02 3.24209260e-02 + 3.21664330e-02 3.19136446e-02 3.16625610e-02 3.14131821e-02 3.11655080e-02 + 3.09195388e-02 3.06752746e-02 3.04327153e-02 3.01918611e-02 2.99527120e-02 + 2.97152680e-02 2.94795292e-02 2.92454957e-02 2.90131675e-02 2.87825447e-02 + 2.85536273e-02 2.83264153e-02 2.81009089e-02 2.78771081e-02 2.76550128e-02 + 2.74346233e-02 2.72159395e-02 2.69989614e-02 2.67836892e-02 2.65701228e-02 + 2.63582623e-02 2.61481079e-02 2.59396594e-02 2.57329170e-02 2.55278807e-02 + 2.53245505e-02 2.51229266e-02 2.49230089e-02 2.47247975e-02 2.45282924e-02 + 2.43334937e-02 2.41404014e-02 2.39490156e-02 2.37593363e-02 2.35713636e-02 + 2.33850975e-02 2.32005380e-02 2.30176851e-02 2.28365390e-02 2.26570997e-02 + 2.24793672e-02 2.23033415e-02 2.21290227e-02 2.19564108e-02 2.17855059e-02 + 2.16163080e-02 2.14488171e-02 2.12830333e-02 2.11189566e-02 2.09565871e-02 + 2.07959248e-02 2.06369696e-02 2.04797218e-02 2.03241812e-02 2.01703480e-02 + 2.00182221e-02 1.98678037e-02 1.97190927e-02 1.95720891e-02 1.94267931e-02 + 1.92832045e-02 1.91413236e-02 1.90011502e-02 1.88626845e-02 1.87259265e-02 + 1.85908761e-02 1.84575335e-02 1.83258986e-02 1.81959715e-02 1.80677522e-02 + 1.79412408e-02 1.78164372e-02 1.76933415e-02 1.75719538e-02 1.74522740e-02 + 1.73343022e-02 1.72180384e-02 1.71034827e-02 1.69906350e-02 1.68794954e-02 + 1.67700639e-02 1.66623405e-02 1.65563253e-02 1.64520183e-02 1.63494195e-02 + 1.62485289e-02 1.61493466e-02 1.60518726e-02 1.59561068e-02 1.58620494e-02 + 1.57697003e-02 1.56790596e-02 1.55901273e-02 1.55029034e-02 1.54173879e-02 + 1.53335808e-02 1.52514822e-02 1.51710921e-02 1.50924105e-02 1.50154374e-02 + 1.49401728e-02 1.48666168e-02 1.47947694e-02 1.47246305e-02 1.46562002e-02 + 1.45894786e-02 1.45244656e-02 1.44611612e-02 1.43995655e-02 1.43396785e-02 + 1.42815001e-02 1.42250305e-02 1.41702695e-02 1.41172173e-02 1.40658738e-02 + 1.40162391e-02 1.39683132e-02 1.39220960e-02 1.38775876e-02 1.38347880e-02 + 1.37936971e-02 1.37543151e-02 1.37166420e-02 1.36806776e-02 1.36464221e-02 + 1.36138754e-02 1.35830376e-02 1.35539086e-02 1.35264885e-02 1.35007773e-02 + 1.34767750e-02 1.34544815e-02 1.34338969e-02 1.34150212e-02 1.33978544e-02 + 1.33823966e-02 1.33686476e-02 1.33566075e-02 1.33462763e-02 1.33376541e-02 + 1.33307407e-02 1.33255363e-02 1.33220408e-02 1.33202542e-02 1.33201765e-02 + 1.33218078e-02 1.33251480e-02 1.33301970e-02 1.33369550e-02 1.33454220e-02 + 1.33555978e-02 1.33674825e-02 1.33810762e-02 1.33963787e-02 1.34133902e-02 + 1.34321105e-02 1.34525397e-02 1.34746779e-02 1.34985249e-02 1.35240808e-02 + 1.35513455e-02 1.35803192e-02 1.36110016e-02 1.36433930e-02 1.36774932e-02 + 1.37133022e-02 1.37508200e-02 1.37900467e-02 1.38309822e-02 1.38736265e-02 + 1.39179796e-02 1.39640414e-02 1.40118121e-02 1.40612914e-02 1.41124796e-02 + 1.41653765e-02 1.42199821e-02 1.42762964e-02 1.43343194e-02 1.43940512e-02 + 1.44554916e-02 1.45186406e-02 1.45834983e-02 1.46500646e-02 1.47183396e-02 + 1.47883231e-02 1.48600153e-02 1.49334160e-02 1.50085252e-02 1.50853430e-02 + 1.51638693e-02 1.52441041e-02 1.53260474e-02 1.54096992e-02 1.54950594e-02 + 1.55821280e-02 1.56709051e-02 1.57613905e-02 1.58535843e-02 1.59474864e-02 + 1.60430969e-02 1.61404156e-02 1.62394427e-02 1.63401780e-02 1.64426215e-02 + 1.65467732e-02 1.66526331e-02 1.67602012e-02 1.68694775e-02 1.69804618e-02 + 1.70931542e-02 1.72075547e-02 1.73236633e-02 1.74414798e-02 1.75610043e-02 + 1.76822368e-02 1.78051772e-02 1.79298256e-02 1.80561818e-02 1.81842458e-02 + 1.83140177e-02 1.84454973e-02 1.85786847e-02 1.87135798e-02 1.88501827e-02 + 1.89884931e-02 1.91285113e-02 1.92702370e-02 1.94136703e-02 1.95588111e-02 + 1.97056595e-02 1.98542153e-02 2.00044786e-02 2.01564492e-02 2.03101272e-02 + 2.04655126e-02 2.06226053e-02 2.07814052e-02 2.09419123e-02 2.11041267e-02 + 2.12680482e-02 2.14336768e-02 2.16010125e-02 2.17700553e-02 2.19408050e-02 + 2.21132617e-02 2.22874254e-02 2.24632959e-02 2.26408733e-02 2.28201575e-02 + 2.30011484e-02 2.31838461e-02 2.33682505e-02 2.35543615e-02 2.37421791e-02 + 2.39317033e-02 2.41229339e-02 2.43158711e-02 2.45105147e-02 2.47068647e-02 + 2.49049210e-02 2.51046836e-02 2.53061524e-02 2.55093275e-02 2.57142087e-02 + 2.59207960e-02 2.61290894e-02 2.63390888e-02 2.65507942e-02 2.67642055e-02 + 2.69793227e-02 2.71961457e-02 2.74146744e-02 2.76349090e-02 2.78568491e-02 + 2.80804949e-02 2.83058463e-02 2.85329032e-02 2.87616656e-02 2.89921334e-02 + 2.92243066e-02 2.94581851e-02 2.96937689e-02 2.99310578e-02 3.01700520e-02 + 3.04107512e-02 3.06531555e-02 3.08972648e-02 3.11430790e-02 3.13905981e-02 + 3.16398220e-02 3.18907507e-02 3.21433841e-02 3.23977222e-02 3.26537648e-02 + 3.29115120e-02 3.31709637e-02 3.34321199e-02 3.36949803e-02 3.39595451e-02 + 3.42258142e-02 3.44937874e-02 3.47634647e-02 3.50348461e-02 3.53079315e-02 + 3.55827209e-02 3.58592141e-02 3.61374112e-02 3.64173120e-02 3.66989165e-02 + 3.69822246e-02 3.72672363e-02 3.75539515e-02 3.78423701e-02 3.81324920e-02 + 3.84243173e-02 3.87178458e-02 3.90130775e-02 3.93100123e-02 3.96086502e-02 + 3.99089910e-02 4.02110347e-02 4.05147812e-02 4.08202305e-02 4.11273825e-02 + 4.14362371e-02 4.17467942e-02 4.20590539e-02 4.23730160e-02 4.26886804e-02 + 4.30060471e-02 4.33251159e-02 4.36458870e-02 4.39683600e-02 4.42925351e-02 + 4.46184120e-02 4.49459908e-02 4.52752714e-02 4.56062536e-02 4.59389375e-02 + 4.62733229e-02 4.66094097e-02 4.69471980e-02 4.72866875e-02 4.76278783e-02 + 4.79707703e-02 4.83153633e-02 4.86616573e-02 4.90096522e-02 4.93593480e-02 + 4.97107446e-02 5.00638418e-02 5.04186396e-02 5.07751380e-02 5.11333368e-02 + 5.14932360e-02 5.18548354e-02 5.22181351e-02 5.25831349e-02 5.29498347e-02 + 5.33182344e-02 5.36883341e-02 5.40601335e-02 5.44336326e-02 5.48088313e-02 + 5.51857296e-02 5.55643273e-02 5.59446244e-02 5.63266207e-02 5.67103163e-02 + 5.70957109e-02 5.74828046e-02 5.78715972e-02 5.82620886e-02 5.86542788e-02 + 5.90481677e-02 5.94437551e-02 5.98410410e-02 6.02400253e-02 6.06407080e-02 + 6.10430888e-02 6.14471678e-02 6.18529447e-02 6.22604197e-02 6.26695925e-02 + 6.30804630e-02 6.34930312e-02 6.39072970e-02 6.43232602e-02 6.47409209e-02 + 6.51602788e-02 6.55813340e-02 6.60040862e-02 6.64285354e-02 6.68546816e-02 + 6.72825245e-02 6.77120642e-02 6.81433005e-02 6.85762333e-02 6.90108625e-02 + 6.94471881e-02 6.98852099e-02 7.03249278e-02 7.07663417e-02 7.12094516e-02 + 7.16542573e-02 7.21007588e-02 7.25489558e-02 7.29988484e-02 7.34504365e-02 + 7.39037198e-02 7.43586984e-02 7.48153721e-02 7.52737408e-02 7.57338044e-02 + 7.61955628e-02 7.66590160e-02 7.71241637e-02 7.75910059e-02 7.80595425e-02 + 7.85297734e-02 7.90016985e-02 7.94753177e-02 7.99506308e-02 8.04276378e-02 + 8.09063385e-02 8.13867329e-02 8.18688208e-02 8.23526021e-02 8.28380768e-02 + 8.33252446e-02 8.38141056e-02 8.43046595e-02 8.47969063e-02 8.52908459e-02 + 8.57864782e-02 8.62838029e-02 8.67828201e-02 8.72835297e-02 8.77859314e-02 + 8.82900252e-02 8.87958110e-02 8.93032887e-02 8.98124581e-02 9.03233191e-02 + 9.08358717e-02 9.13501157e-02 9.18660509e-02 9.23836774e-02 9.29029949e-02 + 9.34240033e-02 9.39467025e-02 9.44710925e-02 9.49971730e-02 9.55249440e-02 + 9.60544054e-02 9.65855570e-02 9.71183987e-02 9.76529303e-02 9.81891519e-02 + 9.87270632e-02 9.92666641e-02 9.98079545e-02 1.00350934e-01 1.00895603e-01 + 1.01441962e-01 1.01990009e-01 1.02539745e-01 1.03091170e-01 1.03644283e-01 + 1.04199085e-01 1.04755576e-01 1.05313754e-01 1.05873621e-01 1.06435176e-01 + 1.06998419e-01 1.07563349e-01 1.08129968e-01 1.08698273e-01 1.09268266e-01 + 1.09839947e-01 1.10413314e-01 1.10988368e-01 1.11565110e-01 1.12143538e-01 + 1.12723652e-01 1.13305453e-01 1.13888941e-01 1.14474115e-01 1.15060974e-01 + 1.15649520e-01 1.16239751e-01 1.16831669e-01 1.17425271e-01 1.18020560e-01 + 1.18617533e-01 1.19216192e-01 1.19816535e-01 1.20418564e-01 1.21022277e-01 + 1.21627675e-01 1.22234757e-01 1.22843524e-01 1.23453975e-01 1.24066109e-01 + 1.24679928e-01 1.25295431e-01 1.25912617e-01 1.26531487e-01 1.27152040e-01 + 1.27774276e-01 1.28398196e-01 1.29023798e-01 1.29651083e-01 1.30280051e-01 + 1.30910702e-01 1.31543034e-01 1.32177050e-01 1.32812747e-01 1.33450126e-01 + 1.34089187e-01 1.34729929e-01 1.35372353e-01 1.36016459e-01 1.36662246e-01 + 1.37309713e-01 1.37958862e-01 1.38609692e-01 1.39262202e-01 1.39916393e-01 + 1.40572264e-01 1.41229815e-01 1.41889046e-01 1.42549958e-01 1.43212549e-01 + 1.43876819e-01 1.44542770e-01 1.45210399e-01 1.45879708e-01 1.46550695e-01 + 1.47223362e-01 1.47897707e-01 1.48573731e-01 1.49251433e-01 1.49930814e-01 + 1.50611872e-01 1.51294609e-01 1.51979023e-01 1.52665115e-01 1.53352885e-01 + 1.54042332e-01 1.54733456e-01 1.55426257e-01 1.56120735e-01 1.56816890e-01 + 1.57514721e-01 1.58214229e-01 1.58915413e-01 1.59618273e-01 1.60322809e-01 + 1.61029020e-01 1.61736908e-01 1.62446471e-01 1.63157709e-01 1.63870622e-01 + 1.64585210e-01 1.65301473e-01 1.66019411e-01 1.66739023e-01 1.67460310e-01 + 1.68183271e-01 1.68907906e-01 1.69634214e-01 1.70362197e-01 1.71091853e-01 + 1.71823182e-01 1.72556184e-01 1.73290860e-01 1.74027208e-01 1.74765229e-01 + 1.75504923e-01 1.76246289e-01 1.76989327e-01 1.77734037e-01 1.78480419e-01 + 1.79228473e-01 1.79978199e-01 1.80729595e-01 1.81482663e-01 1.82237402e-01 + 1.82993812e-01 1.83751893e-01 1.84511644e-01 1.85273065e-01 1.86036157e-01 + 1.86800919e-01 1.87567350e-01 1.88335451e-01 1.89105222e-01 1.89876662e-01 + 1.90649771e-01 1.91424549e-01 1.92200996e-01 1.92979112e-01 1.93758896e-01 + 1.94540348e-01 1.95323469e-01 1.96108257e-01 1.96894713e-01 1.97682837e-01 + 1.98472628e-01 1.99264087e-01 2.00057212e-01 2.00852004e-01 2.01648463e-01 + 2.02446589e-01 2.03246381e-01 2.04047839e-01 2.04850963e-01 2.05655753e-01 + 2.06462208e-01 2.07270329e-01 2.08080115e-01 2.08891567e-01 2.09704683e-01 + 2.10519464e-01 2.11335909e-01 2.12154019e-01 2.12973793e-01 2.13795231e-01 + 2.14618333e-01 2.15443098e-01 2.16269527e-01 2.17097619e-01 2.17927374e-01 + 2.18758792e-01 2.19591873e-01 2.20426616e-01 2.21263022e-01 2.22101090e-01 + 2.22940819e-01 2.23782211e-01 2.24625264e-01 2.25469978e-01 2.26316354e-01 + 2.27164390e-01 2.28014088e-01 2.28865446e-01 2.29718464e-01 2.30573143e-01 + 2.31429482e-01 2.32287480e-01 2.33147139e-01 2.34008457e-01 2.34871434e-01 + 2.35736070e-01 2.36602365e-01 2.37470319e-01 2.38339931e-01 2.39211202e-01 + 2.40084131e-01 2.40958717e-01 2.41834962e-01 2.42712864e-01 2.43592423e-01 + 2.44473640e-01 2.45356513e-01 2.46241044e-01 2.47127230e-01 2.48015074e-01 + 2.48904573e-01 2.49795728e-01 2.50688539e-01 2.51583006e-01 2.52479128e-01 + 2.53376905e-01 2.54276337e-01 2.55177424e-01 2.56080166e-01 2.56984562e-01 + 2.57890612e-01 2.58798316e-01 2.59707674e-01 2.60618685e-01 2.61531350e-01 + 2.62445667e-01 2.63361638e-01 2.64279262e-01 2.65198538e-01 2.66119466e-01 + 2.67042047e-01 2.67966279e-01 2.68892164e-01 2.69819699e-01 2.70748886e-01 + 2.71679724e-01 2.72612213e-01 2.73546353e-01 2.74482143e-01 2.75419584e-01 + 2.76358674e-01 2.77299415e-01 2.78241805e-01 2.79185844e-01 2.80131533e-01 + 2.81078870e-01 2.82027857e-01 2.82978492e-01 2.83930775e-01 2.84884707e-01 + 2.85840287e-01 2.86797514e-01 2.87756389e-01 2.88716911e-01 2.89679080e-01 + 2.90642896e-01 2.91608359e-01 2.92575468e-01 2.93544224e-01 2.94514625e-01 + 2.95486673e-01 2.96460366e-01 2.97435704e-01 2.98412687e-01 2.99391316e-01 + 3.00371589e-01 3.01353507e-01 3.02337069e-01 3.03322275e-01 3.04309125e-01 + 3.05297618e-01 3.06287755e-01 3.07279535e-01 3.08272958e-01 3.09268024e-01 + 3.10264733e-01 3.11263084e-01 3.12263076e-01 3.13264711e-01 3.14267987e-01 + 3.15272905e-01 3.16279464e-01 3.17287664e-01 3.18297505e-01 3.19308986e-01 + 3.20322108e-01 3.21336869e-01 3.22353271e-01 3.23371312e-01 3.24390992e-01 + 3.25412312e-01 3.26435271e-01 3.27459868e-01 3.28486104e-01 3.29513978e-01 + 3.30543490e-01 3.31574640e-01 3.32607428e-01 3.33641852e-01 3.34677914e-01 + 3.35715613e-01 3.36754949e-01 3.37795921e-01 3.38838529e-01 3.39882774e-01 + 3.40928653e-01 3.41976169e-01 3.43025320e-01 3.44076105e-01 3.45128526e-01 + 3.46182581e-01 3.47238271e-01 3.48295594e-01 3.49354552e-01 3.50415143e-01 + 3.51477368e-01 3.52541225e-01 3.53606716e-01 3.54673839e-01 3.55742595e-01 + 3.56812983e-01 3.57885003e-01 3.58958655e-01 3.60033939e-01 3.61110853e-01 + 3.62189399e-01 3.63269575e-01 3.64351382e-01 3.65434820e-01 3.66519887e-01 + 3.67606584e-01 3.68694911e-01 3.69784868e-01 3.70876453e-01 3.71969667e-01 + 3.73064510e-01 3.74160981e-01 3.75259081e-01 3.76358808e-01 3.77460163e-01 + 3.78563145e-01 3.79667755e-01 3.80773992e-01 3.81881855e-01 3.82991344e-01 + 3.84102460e-01 3.85215202e-01 3.86329570e-01 3.87445563e-01 3.88563181e-01 + 3.89682424e-01 3.90803292e-01 3.91925784e-01 3.93049901e-01 3.94175642e-01 + 3.95303006e-01 3.96431994e-01 3.97562605e-01 3.98694839e-01 3.99828696e-01 + 4.00964175e-01 4.02101276e-01 4.03240000e-01 4.04380345e-01 4.05522312e-01 + 4.06665899e-01 4.07811108e-01 4.08957938e-01 4.10106388e-01 4.11256458e-01 + 4.12408148e-01 4.13561458e-01 4.14716388e-01 4.15872936e-01 4.17031104e-01 + 4.18190890e-01 4.19352295e-01 4.20515317e-01 4.21679958e-01 4.22846216e-01 + 4.24014092e-01 4.25183585e-01 4.26354695e-01 4.27527421e-01 4.28701764e-01 + 4.29877723e-01 4.31055298e-01 4.32234488e-01 4.33415294e-01 4.34597715e-01 + 4.35781751e-01 4.36967401e-01 4.38154665e-01 4.39343544e-01 4.40534036e-01 + 4.41726142e-01 4.42919861e-01 4.44115193e-01 4.45312138e-01 4.46510695e-01 + 4.47710864e-01 4.48912645e-01 4.50116038e-01 4.51321043e-01 4.52527658e-01 + 4.53735885e-01 4.54945722e-01 4.56157169e-01 4.57370226e-01 4.58584894e-01 + 4.59801170e-01 4.61019056e-01 4.62238551e-01 4.63459655e-01 4.64682367e-01 + 4.65906688e-01 4.67132616e-01 4.68360152e-01 4.69589295e-01 4.70820046e-01 + 4.72052403e-01 4.73286367e-01 4.74521937e-01 4.75759113e-01 4.76997895e-01 + 4.78238283e-01 4.79480276e-01 4.80723873e-01 4.81969076e-01 4.83215882e-01 + 4.84464293e-01 4.85714308e-01 4.86965926e-01 4.88219148e-01 4.89473972e-01 + 4.90730400e-01 4.91988430e-01 4.93248062e-01 4.94509296e-01 4.95772131e-01 + 4.97036568e-01 4.98302606e-01 4.99570245e-01 5.00839485e-01 5.02110324e-01 + 5.03382764e-01 5.04656804e-01 5.05932442e-01 5.07209680e-01 5.08488517e-01 + 5.09768953e-01 5.11050986e-01 5.12334618e-01 5.13619847e-01 5.14906674e-01 + 5.16195098e-01 5.17485119e-01 5.18776737e-01 5.20069951e-01 5.21364761e-01 + 5.22661167e-01 5.23959168e-01 5.25258764e-01 5.26559955e-01 5.27862741e-01 + 5.29167122e-01 5.30473096e-01 5.31780664e-01 5.33089826e-01 5.34400580e-01 + 5.35712928e-01 5.37026868e-01 5.38342401e-01 5.39659526e-01 5.40978242e-01 + 5.42298550e-01 5.43620449e-01 5.44943939e-01 5.46269020e-01 5.47595691e-01 + 5.48923952e-01 5.50253802e-01 5.51585242e-01 5.52918272e-01 5.54252890e-01 + 5.55589096e-01 5.56926891e-01 5.58266274e-01 5.59607245e-01 5.60949803e-01 + 5.62293948e-01 5.63639680e-01 5.64986999e-01 5.66335903e-01 5.67686394e-01 + 5.69038470e-01 5.70392132e-01 5.71747378e-01 5.73104210e-01 5.74462626e-01 + 5.75822626e-01 5.77184210e-01 5.78547377e-01 5.79912128e-01 5.81278461e-01 + 5.82646378e-01 5.84015876e-01 5.85386957e-01 5.86759620e-01 5.88133864e-01 + 5.89509689e-01 5.90887095e-01 5.92266082e-01 5.93646649e-01 5.95028796e-01 + 5.96412522e-01 5.97797828e-01 5.99184713e-01 6.00573177e-01 6.01963219e-01 + 6.03354840e-01 6.04748038e-01 6.06142814e-01 6.07539167e-01 6.08937097e-01 + 6.10336603e-01 6.11737686e-01 6.13140346e-01 6.14544580e-01 6.15950391e-01 + 6.17357776e-01 6.18766736e-01 6.20177271e-01 6.21589379e-01 6.23003062e-01 + 6.24418319e-01 6.25835148e-01 6.27253551e-01 6.28673526e-01 6.30095073e-01 + 6.31518193e-01 6.32942884e-01 6.34369147e-01 6.35796981e-01 6.37226386e-01 + 6.38657361e-01 6.40089906e-01 6.41524022e-01 6.42959706e-01 6.44396960e-01 + 6.45835783e-01 6.47276175e-01 6.48718135e-01 6.50161663e-01 6.51606758e-01 + 6.53053421e-01 6.54501651e-01 6.55951448e-01 6.57402811e-01 6.58855740e-01 + 6.60310236e-01 6.61766296e-01 6.63223922e-01 6.64683112e-01 6.66143868e-01 + 6.67606187e-01 6.69070070e-01 6.70535517e-01 6.72002527e-01 6.73471100e-01 + 6.74941236e-01 6.76412934e-01 6.77886194e-01 6.79361015e-01 6.80837398e-01 + 1.38518338e-01 1.38476565e-01 1.38434740e-01 1.38392864e-01 1.38350938e-01 + 1.38308960e-01 1.38266931e-01 1.38224851e-01 1.38182720e-01 1.38140538e-01 + 1.38098305e-01 1.38056020e-01 1.38013684e-01 1.37971296e-01 1.37928857e-01 + 1.37886366e-01 1.37843824e-01 1.37801230e-01 1.37758585e-01 1.37715888e-01 + 1.37673139e-01 1.37630338e-01 1.37587486e-01 1.37544581e-01 1.37501625e-01 + 1.37458617e-01 1.37415556e-01 1.37372444e-01 1.37329279e-01 1.37286062e-01 + 1.37242794e-01 1.37199472e-01 1.37156099e-01 1.37112673e-01 1.37069195e-01 + 1.37025664e-01 1.36982081e-01 1.36938445e-01 1.36894757e-01 1.36851016e-01 + 1.36807222e-01 1.36763376e-01 1.36719477e-01 1.36675525e-01 1.36631520e-01 + 1.36587463e-01 1.36543352e-01 1.36499189e-01 1.36454972e-01 1.36410702e-01 + 1.36366380e-01 1.36322004e-01 1.36277574e-01 1.36233092e-01 1.36188556e-01 + 1.36143967e-01 1.36099325e-01 1.36054629e-01 1.36009880e-01 1.35965077e-01 + 1.35920221e-01 1.35875311e-01 1.35830347e-01 1.35785330e-01 1.35740259e-01 + 1.35695134e-01 1.35649956e-01 1.35604723e-01 1.35559437e-01 1.35514096e-01 + 1.35468702e-01 1.35423254e-01 1.35377752e-01 1.35332195e-01 1.35286585e-01 + 1.35240920e-01 1.35195201e-01 1.35149428e-01 1.35103600e-01 1.35057718e-01 + 1.35011782e-01 1.34965791e-01 1.34919746e-01 1.34873646e-01 1.34827492e-01 + 1.34781283e-01 1.34735020e-01 1.34688702e-01 1.34642329e-01 1.34595901e-01 + 1.34549419e-01 1.34502882e-01 1.34456290e-01 1.34409643e-01 1.34362941e-01 + 1.34316184e-01 1.34269372e-01 1.34222505e-01 1.34175583e-01 1.34128606e-01 + 1.34081573e-01 1.34034486e-01 1.33987343e-01 1.33940145e-01 1.33892892e-01 + 1.33845583e-01 1.33798219e-01 1.33750799e-01 1.33703324e-01 1.33655794e-01 + 1.33608207e-01 1.33560566e-01 1.33512869e-01 1.33465116e-01 1.33417307e-01 + 1.33369443e-01 1.33321523e-01 1.33273547e-01 1.33225515e-01 1.33177428e-01 + 1.33129285e-01 1.33081085e-01 1.33032830e-01 1.32984519e-01 1.32936152e-01 + 1.32887728e-01 1.32839249e-01 1.32790713e-01 1.32742122e-01 1.32693474e-01 + 1.32644770e-01 1.32596010e-01 1.32547193e-01 1.32498320e-01 1.32449391e-01 + 1.32400405e-01 1.32351363e-01 1.32302265e-01 1.32253110e-01 1.32203899e-01 + 1.32154631e-01 1.32105306e-01 1.32055925e-01 1.32006488e-01 1.31956993e-01 + 1.31907442e-01 1.31857835e-01 1.31808170e-01 1.31758449e-01 1.31708671e-01 + 1.31658836e-01 1.31608945e-01 1.31558996e-01 1.31508991e-01 1.31458929e-01 + 1.31408809e-01 1.31358633e-01 1.31308400e-01 1.31258110e-01 1.31207762e-01 + 1.31157358e-01 1.31106897e-01 1.31056378e-01 1.31005802e-01 1.30955169e-01 + 1.30904479e-01 1.30853732e-01 1.30802927e-01 1.30752065e-01 1.30701146e-01 + 1.30650170e-01 1.30599136e-01 1.30548045e-01 1.30496896e-01 1.30445690e-01 + 1.30394426e-01 1.30343106e-01 1.30291727e-01 1.30240291e-01 1.30188798e-01 + 1.30137247e-01 1.30085639e-01 1.30033973e-01 1.29982249e-01 1.29930468e-01 + 1.29878629e-01 1.29826732e-01 1.29774778e-01 1.29722766e-01 1.29670696e-01 + 1.29618569e-01 1.29566384e-01 1.29514141e-01 1.29461841e-01 1.29409482e-01 + 1.29357066e-01 1.29304592e-01 1.29252060e-01 1.29199470e-01 1.29146823e-01 + 1.29094117e-01 1.29041354e-01 1.28988533e-01 1.28935654e-01 1.28882717e-01 + 1.28829721e-01 1.28776668e-01 1.28723557e-01 1.28670388e-01 1.28617161e-01 + 1.28563876e-01 1.28510533e-01 1.28457132e-01 1.28403673e-01 1.28350156e-01 + 1.28296581e-01 1.28242948e-01 1.28189256e-01 1.28135507e-01 1.28081699e-01 + 1.28027834e-01 1.27973910e-01 1.27919928e-01 1.27865888e-01 1.27811790e-01 + 1.27757634e-01 1.27703420e-01 1.27649147e-01 1.27594816e-01 1.27540427e-01 + 1.27485980e-01 1.27431475e-01 1.27376912e-01 1.27322290e-01 1.27267611e-01 + 1.27212873e-01 1.27158077e-01 1.27103223e-01 1.27048310e-01 1.26993340e-01 + 1.26938311e-01 1.26883224e-01 1.26828079e-01 1.26772875e-01 1.26717614e-01 + 1.26662294e-01 1.26606916e-01 1.26551480e-01 1.26495986e-01 1.26440433e-01 + 1.26384823e-01 1.26329154e-01 1.26273427e-01 1.26217642e-01 1.26161799e-01 + 1.26105898e-01 1.26049938e-01 1.25993920e-01 1.25937845e-01 1.25881711e-01 + 1.25825519e-01 1.25769269e-01 1.25712961e-01 1.25656594e-01 1.25600170e-01 + 1.25543688e-01 1.25487147e-01 1.25430549e-01 1.25373892e-01 1.25317178e-01 + 1.25260405e-01 1.25203574e-01 1.25146686e-01 1.25089739e-01 1.25032735e-01 + 1.24975672e-01 1.24918552e-01 1.24861374e-01 1.24804137e-01 1.24746843e-01 + 1.24689491e-01 1.24632082e-01 1.24574614e-01 1.24517089e-01 1.24459505e-01 + 1.24401864e-01 1.24344166e-01 1.24286409e-01 1.24228595e-01 1.24170723e-01 + 1.24112794e-01 1.24054806e-01 1.23996762e-01 1.23938659e-01 1.23880499e-01 + 1.23822281e-01 1.23764006e-01 1.23705674e-01 1.23647284e-01 1.23588836e-01 + 1.23530331e-01 1.23471769e-01 1.23413149e-01 1.23354472e-01 1.23295737e-01 + 1.23236946e-01 1.23178097e-01 1.23119190e-01 1.23060227e-01 1.23001206e-01 + 1.22942129e-01 1.22882994e-01 1.22823802e-01 1.22764553e-01 1.22705247e-01 + 1.22645884e-01 1.22586464e-01 1.22526988e-01 1.22467454e-01 1.22407864e-01 + 1.22348217e-01 1.22288513e-01 1.22228752e-01 1.22168935e-01 1.22109061e-01 + 1.22049130e-01 1.21989143e-01 1.21929100e-01 1.21869000e-01 1.21808843e-01 + 1.21748630e-01 1.21688361e-01 1.21628036e-01 1.21567654e-01 1.21507216e-01 + 1.21446722e-01 1.21386172e-01 1.21325566e-01 1.21264904e-01 1.21204185e-01 + 1.21143411e-01 1.21082581e-01 1.21021696e-01 1.20960754e-01 1.20899757e-01 + 1.20838704e-01 1.20777596e-01 1.20716432e-01 1.20655212e-01 1.20593937e-01 + 1.20532607e-01 1.20471221e-01 1.20409780e-01 1.20348284e-01 1.20286733e-01 + 1.20225127e-01 1.20163465e-01 1.20101749e-01 1.20039978e-01 1.19978152e-01 + 1.19916271e-01 1.19854335e-01 1.19792345e-01 1.19730300e-01 1.19668200e-01 + 1.19606047e-01 1.19543838e-01 1.19481576e-01 1.19419259e-01 1.19356888e-01 + 1.19294463e-01 1.19231984e-01 1.19169450e-01 1.19106863e-01 1.19044222e-01 + 1.18981528e-01 1.18918779e-01 1.18855977e-01 1.18793122e-01 1.18730213e-01 + 1.18667250e-01 1.18604235e-01 1.18541166e-01 1.18478043e-01 1.18414868e-01 + 1.18351640e-01 1.18288359e-01 1.18225025e-01 1.18161638e-01 1.18098199e-01 + 1.18034707e-01 1.17971163e-01 1.17907566e-01 1.17843917e-01 1.17780216e-01 + 1.17716462e-01 1.17652656e-01 1.17588799e-01 1.17524889e-01 1.17460928e-01 + 1.17396915e-01 1.17332851e-01 1.17268735e-01 1.17204567e-01 1.17140349e-01 + 1.17076079e-01 1.17011757e-01 1.16947385e-01 1.16882962e-01 1.16818488e-01 + 1.16753964e-01 1.16689388e-01 1.16624762e-01 1.16560086e-01 1.16495360e-01 + 1.16430583e-01 1.16365756e-01 1.16300879e-01 1.16235952e-01 1.16170975e-01 + 1.16105949e-01 1.16040873e-01 1.15975748e-01 1.15910573e-01 1.15845349e-01 + 1.15780076e-01 1.15714754e-01 1.15649383e-01 1.15583963e-01 1.15518494e-01 + 1.15452977e-01 1.15387412e-01 1.15321798e-01 1.15256136e-01 1.15190426e-01 + 1.15124668e-01 1.15058862e-01 1.14993008e-01 1.14927107e-01 1.14861158e-01 + 1.14795162e-01 1.14729119e-01 1.14663029e-01 1.14596892e-01 1.14530707e-01 + 1.14464477e-01 1.14398199e-01 1.14331875e-01 1.14265505e-01 1.14199089e-01 + 1.14132627e-01 1.14066119e-01 1.13999565e-01 1.13932965e-01 1.13866320e-01 + 1.13799630e-01 1.13732894e-01 1.13666113e-01 1.13599288e-01 1.13532417e-01 + 1.13465503e-01 1.13398543e-01 1.13331539e-01 1.13264491e-01 1.13197399e-01 + 1.13130263e-01 1.13063084e-01 1.12995861e-01 1.12928594e-01 1.12861284e-01 + 1.12793931e-01 1.12726535e-01 1.12659096e-01 1.12591615e-01 1.12524091e-01 + 1.12456524e-01 1.12388916e-01 1.12321265e-01 1.12253573e-01 1.12185839e-01 + 1.12118063e-01 1.12050246e-01 1.11982388e-01 1.11914489e-01 1.11846549e-01 + 1.11778568e-01 1.11710547e-01 1.11642485e-01 1.11574383e-01 1.11506242e-01 + 1.11438060e-01 1.11369839e-01 1.11301578e-01 1.11233278e-01 1.11164939e-01 + 1.11096561e-01 1.11028144e-01 1.10959689e-01 1.10891195e-01 1.10822663e-01 + 1.10754093e-01 1.10685486e-01 1.10616840e-01 1.10548157e-01 1.10479437e-01 + 1.10410680e-01 1.10341886e-01 1.10273055e-01 1.10204188e-01 1.10135284e-01 + 1.10066345e-01 1.09997369e-01 1.09928358e-01 1.09859311e-01 1.09790229e-01 + 1.09721112e-01 1.09651960e-01 1.09582773e-01 1.09513552e-01 1.09444296e-01 + 1.09375007e-01 1.09305683e-01 1.09236326e-01 1.09166936e-01 1.09097512e-01 + 1.09028055e-01 1.08958566e-01 1.08889044e-01 1.08819489e-01 1.08749902e-01 + 1.08680284e-01 1.08610634e-01 1.08540952e-01 1.08471239e-01 1.08401495e-01 + 1.08331720e-01 1.08261914e-01 1.08192078e-01 1.08122212e-01 1.08052316e-01 + 1.07982391e-01 1.07912436e-01 1.07842452e-01 1.07772438e-01 1.07702397e-01 + 1.07632326e-01 1.07562227e-01 1.07492101e-01 1.07421946e-01 1.07351764e-01 + 1.07281555e-01 1.07211318e-01 1.07141055e-01 1.07070766e-01 1.07000449e-01 + 1.06930107e-01 1.06859739e-01 1.06789346e-01 1.06718927e-01 1.06648483e-01 + 1.06578015e-01 1.06507521e-01 1.06437004e-01 1.06366462e-01 1.06295897e-01 + 1.06225308e-01 1.06154696e-01 1.06084061e-01 1.06013403e-01 1.05942723e-01 + 1.05872021e-01 1.05801296e-01 1.05730551e-01 1.05659783e-01 1.05588995e-01 + 1.05518186e-01 1.05447356e-01 1.05376506e-01 1.05305636e-01 1.05234746e-01 + 1.05163837e-01 1.05092908e-01 1.05021961e-01 1.04950995e-01 1.04880011e-01 + 1.04809009e-01 1.04737989e-01 1.04666951e-01 1.04595897e-01 1.04524826e-01 + 1.04453738e-01 1.04382633e-01 1.04311513e-01 1.04240377e-01 1.04169226e-01 + 1.04098060e-01 1.04026878e-01 1.03955683e-01 1.03884473e-01 1.03813249e-01 + 1.03742012e-01 1.03670761e-01 1.03599498e-01 1.03528222e-01 1.03456933e-01 + 1.03385633e-01 1.03314321e-01 1.03242997e-01 1.03171662e-01 1.03100317e-01 + 1.03028961e-01 1.02957595e-01 1.02886219e-01 1.02814833e-01 1.02743439e-01 + 1.02672036e-01 1.02600624e-01 1.02529204e-01 1.02457776e-01 1.02386340e-01 + 1.02314898e-01 1.02243448e-01 1.02171992e-01 1.02100530e-01 1.02029062e-01 + 1.01957589e-01 1.01886110e-01 1.01814626e-01 1.01743138e-01 1.01671646e-01 + 1.01600150e-01 1.01528651e-01 1.01457148e-01 1.01385643e-01 1.01314135e-01 + 1.01242625e-01 1.01171114e-01 1.01099601e-01 1.01028087e-01 1.00956573e-01 + 1.00885058e-01 1.00813543e-01 1.00742029e-01 1.00670515e-01 1.00599003e-01 + 1.00527492e-01 1.00455983e-01 1.00384477e-01 1.00312973e-01 1.00241472e-01 + 1.00169974e-01 1.00098480e-01 1.00026990e-01 9.99555050e-02 9.98840245e-02 + 9.98125493e-02 9.97410797e-02 9.96696161e-02 9.95981588e-02 9.95267084e-02 + 9.94552650e-02 9.93838292e-02 9.93124014e-02 9.92409818e-02 9.91695709e-02 + 9.90981691e-02 9.90267768e-02 9.89553944e-02 9.88840222e-02 9.88126607e-02 + 9.87413103e-02 9.86699713e-02 9.85986441e-02 9.85273293e-02 9.84560271e-02 + 9.83847379e-02 9.83134622e-02 9.82422004e-02 9.81709529e-02 9.80997201e-02 + 9.80285023e-02 9.79573001e-02 9.78861138e-02 9.78149439e-02 9.77437907e-02 + 9.76726547e-02 9.76015362e-02 9.75304358e-02 9.74593538e-02 9.73882907e-02 + 9.73172468e-02 9.72462226e-02 9.71752186e-02 9.71042351e-02 9.70332725e-02 + 9.69623314e-02 9.68914121e-02 9.68205151e-02 9.67496408e-02 9.66787897e-02 + 9.66079621e-02 9.65371585e-02 9.64663793e-02 9.63956251e-02 9.63248961e-02 + 9.62541930e-02 9.61835160e-02 9.61128657e-02 9.60422425e-02 9.59716469e-02 + 9.59010792e-02 9.58305400e-02 9.57600297e-02 9.56895487e-02 9.56190976e-02 + 9.55486767e-02 9.54782865e-02 9.54079274e-02 9.53376000e-02 9.52673047e-02 + 9.51970419e-02 9.51268121e-02 9.50566158e-02 9.49864534e-02 9.49163254e-02 + 9.48462322e-02 9.47761744e-02 9.47061524e-02 9.46361667e-02 9.45662176e-02 + 9.44963058e-02 9.44264317e-02 9.43565957e-02 9.42867984e-02 9.42170402e-02 + 9.41473215e-02 9.40776429e-02 9.40080049e-02 9.39384078e-02 9.38688523e-02 + 9.37993388e-02 9.37298677e-02 9.36604397e-02 9.35910550e-02 9.35217143e-02 + 9.34524180e-02 9.33831666e-02 9.33139606e-02 9.32448006e-02 9.31756869e-02 + 9.31066201e-02 9.30376006e-02 9.29686291e-02 9.28997059e-02 9.28308316e-02 + 9.27620066e-02 9.26932315e-02 9.26245068e-02 9.25558330e-02 9.24872106e-02 + 9.24186400e-02 9.23501218e-02 9.22816566e-02 9.22132447e-02 9.21448867e-02 + 9.20765832e-02 9.20083346e-02 9.19401414e-02 9.18720042e-02 9.18039235e-02 + 9.17358998e-02 9.16679335e-02 9.16000253e-02 9.15321756e-02 9.14643850e-02 + 9.13966540e-02 9.13289830e-02 9.12613727e-02 9.11938235e-02 9.11263360e-02 + 9.10589106e-02 9.09915480e-02 9.09242486e-02 9.08570130e-02 9.07898417e-02 + 9.07227352e-02 9.06556940e-02 9.05887187e-02 9.05218099e-02 9.04549680e-02 + 9.03881935e-02 9.03214871e-02 9.02548492e-02 9.01882804e-02 9.01217813e-02 + 9.00553522e-02 8.99889939e-02 8.99227068e-02 8.98564915e-02 8.97903485e-02 + 8.97242783e-02 8.96582816e-02 8.95923588e-02 8.95265104e-02 8.94607371e-02 + 8.93950394e-02 8.93294177e-02 8.92638728e-02 8.91984050e-02 8.91330150e-02 + 8.90677033e-02 8.90024705e-02 8.89373170e-02 8.88722435e-02 8.88072505e-02 + 8.87423386e-02 8.86775083e-02 8.86127602e-02 8.85480947e-02 8.84835126e-02 + 8.84190142e-02 8.83546003e-02 8.82902712e-02 8.82260277e-02 8.81618702e-02 + 8.80977994e-02 8.80338157e-02 8.79699197e-02 8.79061120e-02 8.78423932e-02 + 8.77787637e-02 8.77152243e-02 8.76517753e-02 8.75884175e-02 8.75251513e-02 + 8.74619773e-02 8.73988961e-02 8.73359083e-02 8.72730143e-02 8.72102149e-02 + 8.71475104e-02 8.70849016e-02 8.70223890e-02 8.69599731e-02 8.68976544e-02 + 8.68354337e-02 8.67733114e-02 8.67112881e-02 8.66493644e-02 8.65875409e-02 + 8.65258180e-02 8.64641964e-02 8.64026767e-02 8.63412594e-02 8.62799451e-02 + 8.62187344e-02 8.61576278e-02 8.60966259e-02 8.60357293e-02 8.59749386e-02 + 8.59142542e-02 8.58536769e-02 8.57932071e-02 8.57328455e-02 8.56725925e-02 + 8.56124489e-02 8.55524151e-02 8.54924918e-02 8.54326794e-02 8.53729787e-02 + 8.53133900e-02 8.52539141e-02 8.51945515e-02 8.51353028e-02 8.50761685e-02 + 8.50171493e-02 8.49582456e-02 8.48994581e-02 8.48407874e-02 8.47822340e-02 + 8.47237984e-02 8.46654813e-02 8.46072833e-02 8.45492049e-02 8.44912466e-02 + 8.44334092e-02 8.43756930e-02 8.43180988e-02 8.42606271e-02 8.42032784e-02 + 8.41460533e-02 8.40889525e-02 8.40319764e-02 8.39751257e-02 8.39184009e-02 + 8.38618026e-02 8.38053314e-02 8.37489878e-02 8.36927724e-02 8.36366859e-02 + 8.35807286e-02 8.35249013e-02 8.34692046e-02 8.34136388e-02 8.33582048e-02 + 8.33029029e-02 8.32477338e-02 8.31926981e-02 8.31377963e-02 8.30830290e-02 + 8.30283967e-02 8.29739001e-02 8.29195397e-02 8.28653161e-02 8.28112297e-02 + 8.27572813e-02 8.27034714e-02 8.26498005e-02 8.25962691e-02 8.25428780e-02 + 8.24896276e-02 8.24365184e-02 8.23835511e-02 8.23307263e-02 8.22780444e-02 + 8.22255060e-02 8.21731118e-02 8.21208622e-02 8.20687579e-02 8.20167993e-02 + 8.19649871e-02 8.19133218e-02 8.18618039e-02 8.18104341e-02 8.17592128e-02 + 8.17081407e-02 8.16572182e-02 8.16064460e-02 8.15558245e-02 8.15053545e-02 + 8.14550363e-02 8.14048705e-02 8.13548578e-02 8.13049986e-02 8.12552935e-02 + 8.12057430e-02 8.11563478e-02 8.11071082e-02 8.10580250e-02 8.10090986e-02 + 8.09603295e-02 8.09117184e-02 8.08632657e-02 8.08149721e-02 8.07668379e-02 + 8.07188639e-02 8.06710504e-02 8.06233982e-02 8.05759075e-02 8.05285792e-02 + 8.04814136e-02 8.04344112e-02 8.03875727e-02 8.03408986e-02 8.02943893e-02 + 8.02480455e-02 8.02018675e-02 8.01558561e-02 8.01100116e-02 8.00643347e-02 + 8.00188258e-02 7.99734855e-02 7.99283142e-02 7.98833126e-02 7.98384810e-02 + 7.97938201e-02 7.97493304e-02 7.97050123e-02 7.96608664e-02 7.96168932e-02 + 7.95730933e-02 7.95294670e-02 7.94860149e-02 7.94427376e-02 7.93996355e-02 + 7.93567091e-02 7.93139590e-02 7.92713856e-02 7.92289895e-02 7.91867711e-02 + 7.91447310e-02 7.91028695e-02 7.90611873e-02 7.90196849e-02 7.89783626e-02 + 7.89372210e-02 7.88962607e-02 7.88554819e-02 7.88148854e-02 7.87744715e-02 + 7.87342407e-02 7.86941935e-02 7.86543304e-02 7.86146519e-02 7.85751584e-02 + 7.85358504e-02 7.84967284e-02 7.84577929e-02 7.84190442e-02 7.83804830e-02 + 7.83421096e-02 7.83039245e-02 7.82659282e-02 7.82281212e-02 7.81905038e-02 + 7.81530766e-02 7.81158400e-02 7.80787945e-02 7.80419405e-02 7.80052784e-02 + 7.79688088e-02 7.79325320e-02 7.78964485e-02 7.78605587e-02 7.78248631e-02 + 7.77893622e-02 7.77540563e-02 7.77189459e-02 7.76840314e-02 7.76493132e-02 + 7.76147919e-02 7.75804677e-02 7.75463412e-02 7.75124127e-02 7.74786828e-02 + 7.74451517e-02 7.74118199e-02 7.73786878e-02 7.73457559e-02 7.73130245e-02 + 7.72804941e-02 7.72481650e-02 7.72160377e-02 7.71841125e-02 7.71523900e-02 + 7.71208703e-02 7.70895541e-02 7.70584416e-02 7.70275332e-02 7.69968293e-02 + 7.69663304e-02 7.69360368e-02 7.69059488e-02 7.68760670e-02 7.68463915e-02 + 7.68169229e-02 7.67876614e-02 7.67586075e-02 7.67297616e-02 7.67011239e-02 + 7.66726949e-02 7.66444749e-02 7.66164642e-02 7.65886633e-02 7.65610725e-02 + 7.65336921e-02 7.65065225e-02 7.64795641e-02 7.64528171e-02 7.64262819e-02 + 7.63999589e-02 7.63738484e-02 7.63479508e-02 7.63222662e-02 7.62967952e-02 + 7.62715380e-02 7.62464950e-02 7.62216664e-02 7.61970526e-02 7.61726539e-02 + 7.61484706e-02 7.61245031e-02 7.61007516e-02 7.60772164e-02 7.60538979e-02 + 7.60307964e-02 7.60079121e-02 7.59852453e-02 7.59627964e-02 7.59405657e-02 + 7.59185533e-02 7.58967597e-02 7.58751851e-02 7.58538297e-02 7.58326939e-02 + 7.58117779e-02 7.57910820e-02 7.57706065e-02 7.57503516e-02 7.57303176e-02 + 7.57105048e-02 7.56909134e-02 7.56715437e-02 7.56523959e-02 7.56334703e-02 + 7.56147671e-02 7.55962866e-02 7.55780290e-02 7.55599946e-02 7.55421835e-02 + 7.55245961e-02 7.55072326e-02 7.54900931e-02 7.54731780e-02 7.54564874e-02 + 7.54400215e-02 7.54237806e-02 7.54077649e-02 7.53919746e-02 7.53764099e-02 + 7.53610711e-02 7.53459582e-02 7.53310716e-02 7.53164113e-02 7.53019777e-02 + 7.52877708e-02 7.52737910e-02 7.52600383e-02 7.52465130e-02 7.52332152e-02 + 7.52201451e-02 7.52073028e-02 7.51946887e-02 7.51823027e-02 7.51701451e-02 + 7.51582161e-02 7.51465158e-02 7.51350443e-02 7.51238019e-02 7.51127886e-02 + 7.51020046e-02 7.50914500e-02 7.50811251e-02 7.50710299e-02 7.50611645e-02 + 7.50515291e-02 7.50421239e-02 7.50329489e-02 7.50240043e-02 7.50152901e-02 + 7.50068066e-02 7.49985538e-02 7.49905318e-02 7.49827407e-02 7.49751807e-02 + 7.49678518e-02 7.49607542e-02 7.49538879e-02 7.49472530e-02 7.49408496e-02 + 7.49346779e-02 7.49287378e-02 7.49230295e-02 7.49175530e-02 7.49123084e-02 + 7.49072958e-02 7.49025153e-02 7.48979669e-02 7.48936506e-02 7.48895666e-02 + 7.48857148e-02 7.48820954e-02 7.48787084e-02 7.48755538e-02 7.48726317e-02 + 7.48699421e-02 7.48674851e-02 7.48652606e-02 7.48632687e-02 7.48615095e-02 + 7.48599830e-02 7.48586891e-02 7.48576279e-02 7.48567994e-02 7.48562037e-02 + 7.48558407e-02 7.48557104e-02 7.48558129e-02 7.48561481e-02 7.48567160e-02 + 7.48575167e-02 7.48585501e-02 7.48598162e-02 7.48613149e-02 7.48630464e-02 + 7.48650104e-02 7.48672071e-02 7.48696364e-02 7.48722982e-02 7.48751926e-02 + 7.48783194e-02 7.48816786e-02 7.48852703e-02 7.48890943e-02 7.48931506e-02 + 7.48974391e-02 7.49019598e-02 7.49067126e-02 7.49116975e-02 7.49169143e-02 + 7.49223631e-02 7.49280438e-02 7.49339562e-02 7.49401003e-02 7.49464760e-02 + 7.49530832e-02 7.49599219e-02 7.49669919e-02 7.49742931e-02 7.49818255e-02 + 7.49895890e-02 7.49975834e-02 7.50058087e-02 7.50142646e-02 7.50229512e-02 + 7.50318684e-02 7.50410158e-02 7.50503936e-02 7.50600015e-02 7.50698394e-02 + 7.50799072e-02 7.50902047e-02 7.51007318e-02 7.51114884e-02 7.51224743e-02 + 7.51336894e-02 7.51451335e-02 7.51568065e-02 7.51687082e-02 7.51808385e-02 + 7.51931972e-02 7.52057841e-02 7.52185991e-02 7.52316420e-02 7.52449126e-02 + 7.52584108e-02 7.52721363e-02 7.52860890e-02 7.53002688e-02 7.53146753e-02 + 7.53293085e-02 7.53441681e-02 7.53592540e-02 7.53745659e-02 7.53901036e-02 + 7.54058670e-02 7.54218558e-02 7.54380698e-02 7.54545087e-02 7.54711725e-02 + 7.54880609e-02 7.55051735e-02 7.55225103e-02 7.55400710e-02 7.55578553e-02 + 7.55758631e-02 7.55940940e-02 7.56125479e-02 7.56312245e-02 7.56501236e-02 + 7.56692448e-02 7.56885881e-02 7.57081530e-02 7.57279394e-02 7.57479470e-02 + 7.57681755e-02 7.57886247e-02 7.58092942e-02 7.58301840e-02 7.58512935e-02 + 7.58726227e-02 7.58941712e-02 7.59159386e-02 7.59379249e-02 7.59601296e-02 + 7.59825524e-02 7.60051932e-02 7.60280515e-02 7.60511271e-02 7.60744197e-02 + 7.60979290e-02 7.61216547e-02 7.61455964e-02 7.61697540e-02 7.61941269e-02 + 7.62187151e-02 7.62435180e-02 7.62685354e-02 7.62937671e-02 7.63192126e-02 + 7.63448716e-02 7.63707438e-02 7.63968289e-02 7.64231266e-02 7.64496364e-02 + 7.64763581e-02 7.65032913e-02 7.65304357e-02 7.65577909e-02 7.65853566e-02 + 7.66131325e-02 7.66411181e-02 7.66693131e-02 7.66977171e-02 7.67263299e-02 + 7.67551510e-02 7.67841801e-02 7.68134168e-02 7.68428607e-02 7.68725114e-02 + 7.69023687e-02 7.69324320e-02 7.69627011e-02 7.69931756e-02 7.70238549e-02 + 7.70547389e-02 7.70858271e-02 7.71171190e-02 7.71486144e-02 7.71803127e-02 + 7.72122137e-02 7.72443169e-02 7.72766219e-02 7.73091283e-02 7.73418357e-02 + 7.73747437e-02 7.74078518e-02 7.74411598e-02 7.74746671e-02 7.75083734e-02 + 7.75422781e-02 7.75763810e-02 7.76106816e-02 7.76451794e-02 7.76798741e-02 + 7.77147651e-02 7.77498522e-02 7.77851347e-02 7.78206124e-02 7.78562848e-02 + 7.78921513e-02 7.79282117e-02 7.79644654e-02 7.80009121e-02 7.80375512e-02 + 7.80743823e-02 7.81114050e-02 7.81486188e-02 7.81860233e-02 7.82236179e-02 + 7.82614023e-02 7.82993761e-02 7.83375386e-02 7.83758895e-02 7.84144284e-02 + 7.84531546e-02 7.84920679e-02 7.85311676e-02 7.85704534e-02 7.86099248e-02 + 7.86495813e-02 7.86894223e-02 7.87294475e-02 7.87696564e-02 7.88100485e-02 + 7.88506232e-02 7.88913802e-02 7.89323189e-02 7.89734389e-02 7.90147396e-02 + 7.90562205e-02 7.90978813e-02 7.91397213e-02 7.91817402e-02 7.92239373e-02 + 7.92663122e-02 7.93088645e-02 7.93515935e-02 7.93944988e-02 7.94375800e-02 + 7.94808364e-02 7.95242676e-02 7.95678731e-02 7.96116524e-02 7.96556049e-02 + 7.96997302e-02 7.97440277e-02 7.97884970e-02 7.98331374e-02 7.98779486e-02 + 7.99229300e-02 7.99680810e-02 8.00134012e-02 8.00588900e-02 8.01045468e-02 + 8.01503713e-02 8.01963628e-02 8.02425209e-02 8.02888450e-02 8.03353345e-02 + 8.03819890e-02 8.04288079e-02 8.04757907e-02 8.05229368e-02 8.05702458e-02 + 8.06177170e-02 8.06653500e-02 8.07131443e-02 8.07610992e-02 8.08092142e-02 + 8.08574888e-02 8.09059225e-02 8.09545148e-02 8.10032650e-02 8.10521726e-02 + 8.11012372e-02 8.11504581e-02 8.11998347e-02 8.12493667e-02 8.12990534e-02 + 8.13488942e-02 8.13988886e-02 8.14490361e-02 8.14993361e-02 8.15497881e-02 + 8.16003915e-02 8.16511457e-02 8.17020502e-02 8.17531045e-02 8.18043080e-02 + 8.18556601e-02 8.19071604e-02 8.19588081e-02 8.20106028e-02 8.20625439e-02 + 8.21146309e-02 8.21668631e-02 8.22192401e-02 8.22717613e-02 8.23244260e-02 + 8.23772339e-02 8.24301842e-02 8.24832764e-02 8.25365100e-02 8.25898843e-02 + 8.26433990e-02 8.26970532e-02 8.27508466e-02 8.28047785e-02 8.28588484e-02 + 8.29130557e-02 8.29673998e-02 8.30218801e-02 8.30764962e-02 8.31312474e-02 + 8.31861332e-02 8.32411529e-02 8.32963061e-02 8.33515922e-02 8.34070105e-02 + 8.34625605e-02 8.35182417e-02 8.35740534e-02 8.36299951e-02 8.36860663e-02 + 8.37422663e-02 8.37985946e-02 8.38550506e-02 8.39116338e-02 8.39683435e-02 + 8.40251792e-02 8.40821403e-02 8.41392263e-02 8.41964365e-02 8.42537705e-02 + 8.43112275e-02 8.43688072e-02 8.44265088e-02 8.44843318e-02 8.45422756e-02 + 8.46003397e-02 8.46585235e-02 8.47168264e-02 8.47752478e-02 8.48337872e-02 + 8.48924439e-02 8.49512175e-02 8.50101073e-02 8.50691128e-02 8.51282334e-02 + 8.51874685e-02 8.52468175e-02 8.53062799e-02 8.53658551e-02 8.54255425e-02 + 8.54853415e-02 8.55452516e-02 8.56052723e-02 8.56654028e-02 8.57256427e-02 + 8.57859914e-02 8.58464483e-02 8.59070128e-02 8.59676844e-02 8.60284625e-02 + 8.60893465e-02 8.61503358e-02 8.62114299e-02 8.62726282e-02 8.63339302e-02 + 8.63953352e-02 8.64568427e-02 8.65184522e-02 8.65801629e-02 8.66419745e-02 + 8.67038863e-02 8.67658977e-02 8.68280082e-02 8.68902172e-02 8.69525242e-02 + 8.70149285e-02 8.70774296e-02 8.71400270e-02 8.72027200e-02 8.72655081e-02 + 8.73283908e-02 8.73913675e-02 8.74544376e-02 8.75176005e-02 8.75808557e-02 + 8.76442026e-02 8.77076407e-02 8.77711694e-02 8.78347881e-02 8.78984963e-02 + 8.79622934e-02 8.80261789e-02 8.80901521e-02 8.81542126e-02 8.82183598e-02 + 8.82825930e-02 8.83469119e-02 8.84113157e-02 8.84758040e-02 8.85403762e-02 + 8.86050317e-02 8.86697700e-02 8.87345905e-02 8.87994927e-02 8.88644761e-02 + 8.89295400e-02 8.89946839e-02 8.90599073e-02 8.91252096e-02 8.91905903e-02 + 8.92560488e-02 8.93215845e-02 8.93871970e-02 8.94528857e-02 8.95186500e-02 + 8.95844894e-02 8.96504034e-02 8.97163914e-02 8.97824528e-02 8.98485871e-02 + 8.99147938e-02 8.99810724e-02 9.00474222e-02 9.01138428e-02 9.01803336e-02 + 9.02468942e-02 9.03135238e-02 9.03802221e-02 9.04469884e-02 9.05138223e-02 + 9.05807232e-02 9.06476906e-02 9.07147239e-02 9.07818226e-02 9.08489862e-02 + 9.09162142e-02 9.09835060e-02 9.10508611e-02 9.11182790e-02 9.11857591e-02 + 9.12533009e-02 9.13209040e-02 9.13885677e-02 9.14562916e-02 9.15240751e-02 + 9.15919178e-02 9.16598190e-02 9.17277784e-02 9.17957953e-02 9.18638692e-02 + 9.19319997e-02 9.20001862e-02 9.20684282e-02 9.21367252e-02 9.22050767e-02 + 9.22734821e-02 9.23419411e-02 9.24104530e-02 9.24790173e-02 9.25476336e-02 + 9.26163013e-02 9.26850199e-02 9.27537890e-02 9.28226080e-02 9.28914765e-02 + 9.29603938e-02 9.30293596e-02 9.30983734e-02 9.31674346e-02 9.32365427e-02 + 9.33056973e-02 9.33748978e-02 9.34441438e-02 9.35134347e-02 9.35827701e-02 + 9.36521496e-02 9.37215725e-02 9.37910385e-02 9.38605469e-02 9.39300975e-02 + 9.39996895e-02 9.40693227e-02 9.41389965e-02 9.42087104e-02 9.42784639e-02 + 9.43482566e-02 9.44180880e-02 9.44879576e-02 9.45578649e-02 9.46278095e-02 + 9.46977909e-02 9.47678086e-02 9.48378622e-02 9.49079511e-02 9.49780750e-02 + 9.50482333e-02 9.51184256e-02 9.51886514e-02 9.52589103e-02 9.53292017e-02 + 9.53995254e-02 9.54698806e-02 9.55402671e-02 9.56106844e-02 9.56811320e-02 + 9.57516094e-02 9.58221162e-02 9.58926520e-02 9.59632163e-02 9.60338086e-02 + 9.61044286e-02 9.61750756e-02 9.62457494e-02 9.63164495e-02 9.63871754e-02 + 9.64579266e-02 9.65287028e-02 9.65995035e-02 9.66703283e-02 9.67411766e-02 + 9.68120482e-02 9.68829425e-02 9.69538592e-02 9.70247977e-02 9.70957577e-02 + 9.71667387e-02 9.72377403e-02 9.73087621e-02 9.73798037e-02 9.74508645e-02 + 9.75219443e-02 9.75930426e-02 9.76641589e-02 9.77352928e-02 9.78064440e-02 + 9.78776119e-02 9.79487963e-02 9.80199966e-02 9.80912125e-02 9.81624436e-02 + 9.82336894e-02 9.83049495e-02 9.83762235e-02 9.84475111e-02 9.85188118e-02 + 9.85901251e-02 9.86614508e-02 9.87327884e-02 9.88041375e-02 9.88754977e-02 + 9.89468687e-02 9.90182499e-02 9.90896410e-02 9.91610417e-02 9.92324515e-02 + 9.93038701e-02 9.93752970e-02 9.94467318e-02 9.95181743e-02 9.95896239e-02 + 9.96610804e-02 9.97325432e-02 9.98040122e-02 9.98754867e-02 9.99469666e-02 + 1.00018451e-01 1.00089941e-01 1.00161434e-01 1.00232931e-01 1.00304432e-01 + 1.00375936e-01 1.00447442e-01 1.00518951e-01 1.00590461e-01 1.00661973e-01 + 1.00733487e-01 1.00805001e-01 1.00876516e-01 1.00948030e-01 1.01019545e-01 + 1.01091059e-01 1.01162572e-01 1.01234084e-01 1.01305594e-01 1.01377102e-01 + 1.01448607e-01 1.01520110e-01 1.01591610e-01 1.01663106e-01 1.01734599e-01 + 1.01806088e-01 1.01877572e-01 1.01949051e-01 1.02020525e-01 1.02091994e-01 + 1.02163457e-01 1.02234914e-01 1.02306364e-01 1.02377807e-01 1.02449244e-01 + 1.02520672e-01 1.02592093e-01 1.02663506e-01 1.02734911e-01 1.02806306e-01 + 1.02877693e-01 1.02949070e-01 1.03020437e-01 1.03091794e-01 1.03163141e-01 + 1.03234477e-01 1.03305802e-01 1.03377115e-01 1.03448417e-01 1.03519707e-01 + 1.03590985e-01 1.03662250e-01 1.03733502e-01 1.03804741e-01 1.03875966e-01 + 1.03947178e-01 1.04018375e-01 1.04089558e-01 1.04160726e-01 1.04231879e-01 + 1.04303017e-01 1.04374139e-01 1.04445245e-01 1.04516335e-01 1.04587409e-01 + 1.04658465e-01 1.04729504e-01 1.04800527e-01 1.04871531e-01 1.04942517e-01 + 1.05013485e-01 1.05084435e-01 1.05155365e-01 1.05226277e-01 1.05297169e-01 + 1.05368041e-01 1.05438894e-01 1.05509726e-01 1.05580538e-01 1.05651329e-01 + 1.05722099e-01 1.05792847e-01 1.05863574e-01 1.05934279e-01 1.06004962e-01 + 1.06075622e-01 1.06146260e-01 1.06216875e-01 1.06287467e-01 1.06358035e-01 + 1.06428579e-01 1.06499100e-01 1.06569596e-01 1.06640067e-01 1.06710514e-01 + 1.06780936e-01 1.06851332e-01 1.06921703e-01 1.06992049e-01 1.07062368e-01 + 1.07132661e-01 1.07202927e-01 1.07273167e-01 1.07343379e-01 1.07413565e-01 + 1.07483722e-01 1.07553852e-01 1.07623955e-01 1.07694028e-01 1.07764074e-01 + 1.07834090e-01 1.07904078e-01 1.07974036e-01 1.08043966e-01 1.08113865e-01 + 1.08183735e-01 1.08253574e-01 1.08323383e-01 1.08393162e-01 1.08462910e-01 + 1.08532626e-01 1.08602312e-01 1.08671966e-01 1.08741588e-01 1.08811179e-01 + 1.08880737e-01 1.08950263e-01 1.09019757e-01 1.09089217e-01 1.09158645e-01 + 1.09228040e-01 1.09297401e-01 1.09366728e-01 1.09436022e-01 1.09505281e-01 + 1.09574507e-01 1.09643698e-01 1.09712854e-01 1.09781975e-01 1.09851061e-01 + 1.09920112e-01 1.09989128e-01 1.10058108e-01 1.10127052e-01 1.10195959e-01 + 1.10264831e-01 1.10333666e-01 1.10402465e-01 1.10471226e-01 1.10539951e-01 + 1.10608638e-01 1.10677288e-01 1.10745900e-01 1.10814475e-01 1.10883011e-01 + 1.10951510e-01 1.11019970e-01 1.11088391e-01 1.11156774e-01 1.11225117e-01 + 1.11293422e-01 1.11361687e-01 1.11429913e-01 1.11498100e-01 1.11566246e-01 + 1.11634353e-01 1.11702419e-01 1.11770445e-01 1.11838431e-01 1.11906376e-01 + 1.11974280e-01 1.12042143e-01 1.12109965e-01 1.12177745e-01 1.12245484e-01 + 1.12313182e-01 1.12380837e-01 1.12448451e-01 1.12516022e-01 1.12583551e-01 + 1.12651038e-01 1.12718482e-01 1.12785883e-01 1.12853241e-01 1.12920556e-01 + 1.12987828e-01 1.13055056e-01 1.13122241e-01 1.13189382e-01 1.13256480e-01 + 1.13323533e-01 1.13390542e-01 1.13457507e-01 1.13524427e-01 1.13591303e-01 + 1.13658134e-01 1.13724920e-01 1.13791661e-01 1.13858356e-01 1.13925007e-01 + 1.13991612e-01 1.14058171e-01 1.14124685e-01 1.14191153e-01 1.14257575e-01 + 1.14323950e-01 1.14390280e-01 1.14456562e-01 1.14522799e-01 1.14588988e-01 + 1.14655131e-01 1.14721227e-01 1.14787276e-01 1.14853278e-01 1.14919232e-01 + 1.14985139e-01 1.15050998e-01 1.15116810e-01 1.15182574e-01 1.15248290e-01 + 1.15313957e-01 1.15379577e-01 1.15445148e-01 1.15510671e-01 1.15576146e-01 + 1.15641571e-01 1.15706948e-01 1.15772276e-01 1.15837555e-01 1.15902785e-01 + 1.15967965e-01 1.16033097e-01 1.16098179e-01 1.16163211e-01 1.16228193e-01 + 1.16293126e-01 1.16358009e-01 1.16422842e-01 1.16487625e-01 1.16552357e-01 + 1.16617040e-01 1.16681672e-01 1.16746253e-01 1.16810784e-01 1.16875264e-01 + 1.16939693e-01 1.17004071e-01 1.17068398e-01 1.17132674e-01 1.17196899e-01 + 1.17261073e-01 1.17325195e-01 1.17389266e-01 1.17453285e-01 1.17517252e-01 + 1.17581168e-01 1.17645032e-01 1.17708843e-01 1.17772603e-01 1.17836311e-01 + 1.17899966e-01 1.17963569e-01 1.18027120e-01 1.18090618e-01 1.18154064e-01 + 1.18217457e-01 1.18280797e-01 1.18344084e-01 1.18407319e-01 1.18470500e-01 + 1.18533629e-01 1.18596704e-01 1.18659726e-01 1.18722695e-01 1.18785610e-01 + 1.18848472e-01 1.18911281e-01 1.18974035e-01 1.19036736e-01 1.19099384e-01 + 2.08130000e-04 2.08281191e-04 2.08734762e-04 2.09490714e-04 2.10549046e-04 + 2.11909757e-04 2.13572846e-04 2.15538310e-04 2.17806148e-04 2.20376358e-04 + 2.23248936e-04 2.26423882e-04 2.29901190e-04 2.33680858e-04 2.37762883e-04 + 2.42147260e-04 2.46833984e-04 2.51823051e-04 2.57114457e-04 2.62708196e-04 + 2.68604263e-04 2.74802652e-04 2.81303356e-04 2.88106370e-04 2.95211687e-04 + 3.02619299e-04 3.10329200e-04 3.18341382e-04 3.26655837e-04 3.35272557e-04 + 3.44191533e-04 3.53412758e-04 3.62936221e-04 3.72761913e-04 3.82889825e-04 + 3.93319947e-04 4.04052269e-04 4.15086779e-04 4.26423468e-04 4.38062324e-04 + 4.50003336e-04 4.62246492e-04 4.74791780e-04 4.87639188e-04 5.00788703e-04 + 5.14240312e-04 5.27994002e-04 5.42049760e-04 5.56407572e-04 5.71067423e-04 + 5.86029300e-04 6.01293187e-04 6.16859071e-04 6.32726934e-04 6.48896763e-04 + 6.65368541e-04 6.82142252e-04 6.99217880e-04 7.16595407e-04 7.34274817e-04 + 7.52256092e-04 7.70539216e-04 7.89124169e-04 8.08010934e-04 8.27199493e-04 + 8.46689825e-04 8.66481913e-04 8.86575737e-04 9.06971278e-04 9.27668514e-04 + 9.48667427e-04 9.69967995e-04 9.91570198e-04 1.01347401e-03 1.03567942e-03 + 1.05818640e-03 1.08099493e-03 1.10410498e-03 1.12751654e-03 1.15122957e-03 + 1.17524406e-03 1.19955999e-03 1.22417733e-03 1.24909605e-03 1.27431613e-03 + 1.29983755e-03 1.32566029e-03 1.35178430e-03 1.37820958e-03 1.40493610e-03 + 1.43196382e-03 1.45929272e-03 1.48692278e-03 1.51485397e-03 1.54308626e-03 + 1.57161963e-03 1.60045404e-03 1.62958946e-03 1.65902588e-03 1.68876325e-03 + 1.71880156e-03 1.74914077e-03 1.77978085e-03 1.81072177e-03 1.84196351e-03 + 1.87350602e-03 1.90534929e-03 1.93749327e-03 1.96993795e-03 2.00268328e-03 + 2.03572923e-03 2.06907577e-03 2.10272288e-03 2.13667051e-03 2.17091863e-03 + 2.20546721e-03 2.24031622e-03 2.27546562e-03 2.31091538e-03 2.34666546e-03 + 2.38271583e-03 2.41906645e-03 2.45571729e-03 2.49266831e-03 2.52991947e-03 + 2.56747075e-03 2.60532209e-03 2.64347347e-03 2.68192485e-03 2.72067619e-03 + 2.75972745e-03 2.79907859e-03 2.83872959e-03 2.87868038e-03 2.91893095e-03 + 2.95948125e-03 3.00033123e-03 3.04148087e-03 3.08293011e-03 3.12467892e-03 + 3.16672726e-03 3.20907509e-03 3.25172236e-03 3.29466904e-03 3.33791508e-03 + 3.38146044e-03 3.42530507e-03 3.46944894e-03 3.51389201e-03 3.55863422e-03 + 3.60367554e-03 3.64901591e-03 3.69465531e-03 3.74059367e-03 3.78683096e-03 + 3.83336714e-03 3.88020215e-03 3.92733595e-03 3.97476850e-03 4.02249975e-03 + 4.07052965e-03 4.11885815e-03 4.16748522e-03 4.21641079e-03 4.26563483e-03 + 4.31515728e-03 4.36497811e-03 4.41509725e-03 4.46551466e-03 4.51623029e-03 + 4.56724409e-03 4.61855601e-03 4.67016601e-03 4.72207403e-03 4.77428002e-03 + 4.82678393e-03 4.87958570e-03 4.93268530e-03 4.98608266e-03 5.03977774e-03 + 5.09377048e-03 5.14806083e-03 5.20264873e-03 5.25753414e-03 5.31271700e-03 + 5.36819725e-03 5.42397485e-03 5.48004973e-03 5.53642185e-03 5.59309115e-03 + 5.65005757e-03 5.70732106e-03 5.76488157e-03 5.82273903e-03 5.88089339e-03 + 5.93934459e-03 5.99809258e-03 6.05713731e-03 6.11647870e-03 6.17611671e-03 + 6.23605128e-03 6.29628235e-03 6.35680986e-03 6.41763375e-03 6.47875396e-03 + 6.54017044e-03 6.60188312e-03 6.66389194e-03 6.72619685e-03 6.78879778e-03 + 6.85169468e-03 6.91488748e-03 6.97837611e-03 7.04216053e-03 7.10624066e-03 + 7.17061645e-03 7.23528783e-03 7.30025474e-03 7.36551712e-03 7.43107490e-03 + 7.49692802e-03 7.56307641e-03 7.62952002e-03 7.69625878e-03 7.76329262e-03 + 7.83062147e-03 7.89824528e-03 7.96616398e-03 8.03437750e-03 8.10288577e-03 + 8.17168874e-03 8.24078632e-03 8.31017847e-03 8.37986510e-03 8.44984615e-03 + 8.52012155e-03 8.59069124e-03 8.66155515e-03 8.73271321e-03 8.80416535e-03 + 8.87591149e-03 8.94795158e-03 9.02028554e-03 9.09291331e-03 9.16583480e-03 + 9.23904995e-03 9.31255870e-03 9.38636096e-03 9.46045668e-03 9.53484577e-03 + 9.60952816e-03 9.68450379e-03 9.75977258e-03 9.83533445e-03 9.91118934e-03 + 9.98733717e-03 1.00637779e-02 1.01405114e-02 1.02175376e-02 1.02948564e-02 + 1.03724679e-02 1.04503718e-02 1.05285681e-02 1.06070568e-02 1.06858378e-02 + 1.07649109e-02 1.08442762e-02 1.09239335e-02 1.10038828e-02 1.10841240e-02 + 1.11646570e-02 1.12454817e-02 1.13265980e-02 1.14080060e-02 1.14897054e-02 + 1.15716963e-02 1.16539785e-02 1.17365519e-02 1.18194166e-02 1.19025723e-02 + 1.19860191e-02 1.20697568e-02 1.21537854e-02 1.22381047e-02 1.23227148e-02 + 1.24076155e-02 1.24928067e-02 1.25782883e-02 1.26640604e-02 1.27501227e-02 + 1.28364752e-02 1.29231179e-02 1.30100506e-02 1.30972732e-02 1.31847858e-02 + 1.32725881e-02 1.33606801e-02 1.34490618e-02 1.35377329e-02 1.36266936e-02 + 1.37159436e-02 1.38054829e-02 1.38953113e-02 1.39854289e-02 1.40758355e-02 + 1.41665311e-02 1.42575155e-02 1.43487886e-02 1.44403504e-02 1.45322008e-02 + 1.46243398e-02 1.47167671e-02 1.48094827e-02 1.49024866e-02 1.49957786e-02 + 1.50893587e-02 1.51832267e-02 1.52773826e-02 1.53718263e-02 1.54665577e-02 + 1.55615767e-02 1.56568832e-02 1.57524771e-02 1.58483584e-02 1.59445269e-02 + 1.60409825e-02 1.61377252e-02 1.62347549e-02 1.63320714e-02 1.64296747e-02 + 1.65275647e-02 1.66257413e-02 1.67242043e-02 1.68229538e-02 1.69219896e-02 + 1.70213116e-02 1.71209197e-02 1.72208138e-02 1.73209939e-02 1.74214598e-02 + 1.75222114e-02 1.76232487e-02 1.77245715e-02 1.78261798e-02 1.79280734e-02 + 1.80302523e-02 1.81327163e-02 1.82354654e-02 1.83384994e-02 1.84418184e-02 + 1.85454220e-02 1.86493104e-02 1.87534833e-02 1.88579407e-02 1.89626824e-02 + 1.90677084e-02 1.91730186e-02 1.92786129e-02 1.93844911e-02 1.94906532e-02 + 1.95970991e-02 1.97038286e-02 1.98108417e-02 1.99181382e-02 2.00257182e-02 + 2.01335813e-02 2.02417277e-02 2.03501571e-02 2.04588694e-02 2.05678646e-02 + 2.06771425e-02 2.07867031e-02 2.08965462e-02 2.10066717e-02 2.11170796e-02 + 2.12277697e-02 2.13387419e-02 2.14499962e-02 2.15615323e-02 2.16733503e-02 + 2.17854499e-02 2.18978311e-02 2.20104938e-02 2.21234379e-02 2.22366633e-02 + 2.23501698e-02 2.24639574e-02 2.25780260e-02 2.26923753e-02 2.28070055e-02 + 2.29219162e-02 2.30371074e-02 2.31525791e-02 2.32683311e-02 2.33843632e-02 + 2.35006755e-02 2.36172677e-02 2.37341397e-02 2.38512915e-02 2.39687230e-02 + 2.40864339e-02 2.42044243e-02 2.43226940e-02 2.44412429e-02 2.45600709e-02 + 2.46791779e-02 2.47985637e-02 2.49182282e-02 2.50381714e-02 2.51583931e-02 + 2.52788932e-02 2.53996717e-02 2.55207283e-02 2.56420629e-02 2.57636755e-02 + 2.58855660e-02 2.60077341e-02 2.61301799e-02 2.62529032e-02 2.63759039e-02 + 2.64991818e-02 2.66227368e-02 2.67465689e-02 2.68706779e-02 2.69950637e-02 + 2.71197262e-02 2.72446653e-02 2.73698808e-02 2.74953726e-02 2.76211406e-02 + 2.77471848e-02 2.78735049e-02 2.80001009e-02 2.81269726e-02 2.82541199e-02 + 2.83815427e-02 2.85092409e-02 2.86372144e-02 2.87654630e-02 2.88939867e-02 + 2.90227852e-02 2.91518585e-02 2.92812065e-02 2.94108290e-02 2.95407260e-02 + 2.96708972e-02 2.98013426e-02 2.99320621e-02 3.00630555e-02 3.01943227e-02 + 3.03258636e-02 3.04576781e-02 3.05897660e-02 3.07221272e-02 3.08547616e-02 + 3.09876691e-02 3.11208496e-02 3.12543028e-02 3.13880288e-02 3.15220273e-02 + 3.16562983e-02 3.17908416e-02 3.19256571e-02 3.20607447e-02 3.21961042e-02 + 3.23317356e-02 3.24676386e-02 3.26038132e-02 3.27402593e-02 3.28769766e-02 + 3.30139652e-02 3.31512248e-02 3.32887554e-02 3.34265567e-02 3.35646288e-02 + 3.37029714e-02 3.38415844e-02 3.39804677e-02 3.41196212e-02 3.42590447e-02 + 3.43987381e-02 3.45387013e-02 3.46789341e-02 3.48194365e-02 3.49602082e-02 + 3.51012492e-02 3.52425593e-02 3.53841384e-02 3.55259864e-02 3.56681031e-02 + 3.58104884e-02 3.59531422e-02 3.60960643e-02 3.62392547e-02 3.63827131e-02 + 3.65264394e-02 3.66704335e-02 3.68146954e-02 3.69592247e-02 3.71040215e-02 + 3.72490856e-02 3.73944167e-02 3.75400149e-02 3.76858800e-02 3.78320118e-02 + 3.79784102e-02 3.81250751e-02 3.82720063e-02 3.84192037e-02 3.85666672e-02 + 3.87143966e-02 3.88623918e-02 3.90106526e-02 3.91591790e-02 3.93079707e-02 + 3.94570277e-02 3.96063498e-02 3.97559369e-02 3.99057888e-02 4.00559054e-02 + 4.02062865e-02 4.03569321e-02 4.05078419e-02 4.06590159e-02 4.08104539e-02 + 4.09621558e-02 4.11141214e-02 4.12663506e-02 4.14188432e-02 4.15715991e-02 + 4.17246182e-02 4.18779004e-02 4.20314454e-02 4.21852532e-02 4.23393235e-02 + 4.24936564e-02 4.26482515e-02 4.28031089e-02 4.29582283e-02 4.31136096e-02 + 4.32692526e-02 4.34251573e-02 4.35813234e-02 4.37377508e-02 4.38944395e-02 + 4.40513892e-02 4.42085998e-02 4.43660711e-02 4.45238031e-02 4.46817956e-02 + 4.48400483e-02 4.49985613e-02 4.51573343e-02 4.53163671e-02 4.54756598e-02 + 4.56352120e-02 4.57950237e-02 4.59550947e-02 4.61154249e-02 4.62760141e-02 + 4.64368622e-02 4.65979690e-02 4.67593344e-02 4.69209582e-02 4.70828403e-02 + 4.72449806e-02 4.74073789e-02 4.75700350e-02 4.77329488e-02 4.78961202e-02 + 4.80595489e-02 4.82232350e-02 4.83871781e-02 4.85513782e-02 4.87158351e-02 + 4.88805487e-02 4.90455188e-02 4.92107453e-02 4.93762280e-02 4.95419667e-02 + 4.97079614e-02 4.98742118e-02 5.00407179e-02 5.02074794e-02 5.03744963e-02 + 5.05417683e-02 5.07092953e-02 5.08770772e-02 5.10451138e-02 5.12134049e-02 + 5.13819505e-02 5.15507503e-02 5.17198043e-02 5.18891121e-02 5.20586738e-02 + 5.22284892e-02 5.23985580e-02 5.25688802e-02 5.27394555e-02 5.29102839e-02 + 5.30813652e-02 5.32526992e-02 5.34242858e-02 5.35961248e-02 5.37682161e-02 + 5.39405595e-02 5.41131548e-02 5.42860020e-02 5.44591008e-02 5.46324511e-02 + 5.48060527e-02 5.49799055e-02 5.51540094e-02 5.53283641e-02 5.55029695e-02 + 5.56778255e-02 5.58529319e-02 5.60282885e-02 5.62038952e-02 5.63797519e-02 + 5.65558583e-02 5.67322144e-02 5.69088199e-02 5.70856747e-02 5.72627786e-02 + 5.74401316e-02 5.76177334e-02 5.77955838e-02 5.79736828e-02 5.81520301e-02 + 5.83306256e-02 5.85094691e-02 5.86885605e-02 5.88678997e-02 5.90474864e-02 + 5.92273205e-02 5.94074018e-02 5.95877302e-02 5.97683055e-02 5.99491276e-02 + 6.01301963e-02 6.03115114e-02 6.04930728e-02 6.06748803e-02 6.08569338e-02 + 6.10392330e-02 6.12217779e-02 6.14045683e-02 6.15876039e-02 6.17708848e-02 + 6.19544105e-02 6.21381812e-02 6.23221964e-02 6.25064562e-02 6.26909603e-02 + 6.28757085e-02 6.30607008e-02 6.32459369e-02 6.34314167e-02 6.36171400e-02 + 6.38031067e-02 6.39893165e-02 6.41757694e-02 6.43624651e-02 6.45494036e-02 + 6.47365845e-02 6.49240078e-02 6.51116734e-02 6.52995809e-02 6.54877303e-02 + 6.56761215e-02 6.58647541e-02 6.60536282e-02 6.62427434e-02 6.64320997e-02 + 6.66216969e-02 6.68115348e-02 6.70016132e-02 6.71919320e-02 6.73824910e-02 + 6.75732900e-02 6.77643289e-02 6.79556075e-02 6.81471257e-02 6.83388832e-02 + 6.85308799e-02 6.87231157e-02 6.89155904e-02 6.91083037e-02 6.93012556e-02 + 6.94944458e-02 6.96878742e-02 6.98815407e-02 7.00754450e-02 7.02695870e-02 + 7.04639665e-02 7.06585833e-02 7.08534374e-02 7.10485284e-02 7.12438563e-02 + 7.14394208e-02 7.16352219e-02 7.18312593e-02 7.20275328e-02 7.22240423e-02 + 7.24207876e-02 7.26177686e-02 7.28149851e-02 7.30124368e-02 7.32101237e-02 + 7.34080456e-02 7.36062022e-02 7.38045935e-02 7.40032192e-02 7.42020791e-02 + 7.44011732e-02 7.46005012e-02 7.48000630e-02 7.49998583e-02 7.51998870e-02 + 7.54001490e-02 7.56006441e-02 7.58013720e-02 7.60023326e-02 7.62035258e-02 + 7.64049514e-02 7.66066092e-02 7.68084989e-02 7.70106206e-02 7.72129739e-02 + 7.74155587e-02 7.76183748e-02 7.78214221e-02 7.80247003e-02 7.82282094e-02 + 7.84319490e-02 7.86359192e-02 7.88401196e-02 7.90445501e-02 7.92492105e-02 + 7.94541007e-02 7.96592204e-02 7.98645695e-02 8.00701479e-02 8.02759553e-02 + 8.04819916e-02 8.06882565e-02 8.08947500e-02 8.11014718e-02 8.13084218e-02 + 8.15155998e-02 8.17230055e-02 8.19306389e-02 8.21384998e-02 8.23465879e-02 + 8.25549031e-02 8.27634452e-02 8.29722141e-02 8.31812095e-02 8.33904313e-02 + 8.35998794e-02 8.38095534e-02 8.40194533e-02 8.42295789e-02 8.44399299e-02 + 8.46505063e-02 8.48613078e-02 8.50723343e-02 8.52835855e-02 8.54950613e-02 + 8.57067616e-02 8.59186860e-02 8.61308346e-02 8.63432070e-02 8.65558031e-02 + 8.67686227e-02 8.69816656e-02 8.71949318e-02 8.74084208e-02 8.76221327e-02 + 8.78360672e-02 8.80502241e-02 8.82646033e-02 8.84792045e-02 8.86940276e-02 + 8.89090725e-02 8.91243388e-02 8.93398265e-02 8.95555354e-02 8.97714652e-02 + 8.99876159e-02 9.02039871e-02 9.04205788e-02 9.06373908e-02 9.08544228e-02 + 9.10716747e-02 9.12891463e-02 9.15068374e-02 9.17247478e-02 9.19428774e-02 + 9.21612260e-02 9.23797934e-02 9.25985793e-02 9.28175837e-02 9.30368064e-02 + 9.32562470e-02 9.34759056e-02 9.36957818e-02 9.39158756e-02 9.41361866e-02 + 9.43567148e-02 9.45774599e-02 9.47984219e-02 9.50196003e-02 9.52409952e-02 + 9.54626063e-02 9.56844334e-02 9.59064764e-02 9.61287350e-02 9.63512090e-02 + 9.65738984e-02 9.67968029e-02 9.70199222e-02 9.72432563e-02 9.74668050e-02 + 9.76905680e-02 9.79145452e-02 9.81387363e-02 9.83631413e-02 9.85877598e-02 + 9.88125918e-02 9.90376370e-02 9.92628953e-02 9.94883665e-02 9.97140503e-02 + 9.99399466e-02 1.00166055e-01 1.00392376e-01 1.00618909e-01 1.00845653e-01 + 1.01072609e-01 1.01299776e-01 1.01527155e-01 1.01754744e-01 1.01982545e-01 + 1.02210556e-01 1.02438777e-01 1.02667209e-01 1.02895850e-01 1.03124702e-01 + 1.03353763e-01 1.03583034e-01 1.03812514e-01 1.04042203e-01 1.04272101e-01 + 1.04502207e-01 1.04732523e-01 1.04963046e-01 1.05193778e-01 1.05424718e-01 + 1.05655865e-01 1.05887221e-01 1.06118783e-01 1.06350553e-01 1.06582530e-01 + 1.06814713e-01 1.07047104e-01 1.07279701e-01 1.07512504e-01 1.07745513e-01 + 1.07978728e-01 1.08212148e-01 1.08445775e-01 1.08679606e-01 1.08913643e-01 + 1.09147884e-01 1.09382331e-01 1.09616982e-01 1.09851837e-01 1.10086896e-01 + 1.10322160e-01 1.10557627e-01 1.10793298e-01 1.11029172e-01 1.11265249e-01 + 1.11501530e-01 1.11738013e-01 1.11974699e-01 1.12211587e-01 1.12448678e-01 + 1.12685971e-01 1.12923465e-01 1.13161162e-01 1.13399059e-01 1.13637158e-01 + 1.13875458e-01 1.14113960e-01 1.14352661e-01 1.14591564e-01 1.14830666e-01 + 1.15069969e-01 1.15309472e-01 1.15549174e-01 1.15789076e-01 1.16029178e-01 + 1.16269478e-01 1.16509978e-01 1.16750676e-01 1.16991573e-01 1.17232669e-01 + 1.17473962e-01 1.17715454e-01 1.17957143e-01 1.18199030e-01 1.18441115e-01 + 1.18683397e-01 1.18925875e-01 1.19168551e-01 1.19411423e-01 1.19654492e-01 + 1.19897757e-01 1.20141218e-01 1.20384875e-01 1.20628728e-01 1.20872776e-01 + 1.21117020e-01 1.21361458e-01 1.21606092e-01 1.21850920e-01 1.22095943e-01 + 1.22341160e-01 1.22586571e-01 1.22832176e-01 1.23077975e-01 1.23323967e-01 + 1.23570153e-01 1.23816532e-01 1.24063104e-01 1.24309869e-01 1.24556826e-01 + 1.24803975e-01 1.25051317e-01 1.25298851e-01 1.25546576e-01 1.25794494e-01 + 1.26042602e-01 1.26290902e-01 1.26539393e-01 1.26788074e-01 1.27036946e-01 + 1.27286009e-01 1.27535261e-01 1.27784704e-01 1.28034337e-01 1.28284159e-01 + 1.28534171e-01 1.28784372e-01 1.29034762e-01 1.29285340e-01 1.29536108e-01 + 1.29787064e-01 1.30038208e-01 1.30289540e-01 1.30541060e-01 1.30792768e-01 + 1.31044663e-01 1.31296746e-01 1.31549015e-01 1.31801471e-01 1.32054115e-01 + 1.32306944e-01 1.32559960e-01 1.32813162e-01 1.33066550e-01 1.33320123e-01 + 1.33573882e-01 1.33827826e-01 1.34081956e-01 1.34336270e-01 1.34590769e-01 + 1.34845452e-01 1.35100320e-01 1.35355372e-01 1.35610608e-01 1.35866027e-01 + 1.36121630e-01 1.36377417e-01 1.36633386e-01 1.36889538e-01 1.37145873e-01 + 1.37402391e-01 1.37659091e-01 1.37915973e-01 1.38173037e-01 1.38430283e-01 + 1.38687710e-01 1.38945318e-01 1.39203108e-01 1.39461079e-01 1.39719230e-01 + 1.39977562e-01 1.40236074e-01 1.40494766e-01 1.40753639e-01 1.41012691e-01 + 1.41271922e-01 1.41531333e-01 1.41790923e-01 1.42050692e-01 1.42310640e-01 + 1.42570766e-01 1.42831071e-01 1.43091554e-01 1.43352214e-01 1.43613053e-01 + 1.43874069e-01 1.44135262e-01 1.44396633e-01 1.44658180e-01 1.44919904e-01 + 1.45181805e-01 1.45443882e-01 1.45706135e-01 1.45968565e-01 1.46231170e-01 + 1.46493950e-01 1.46756906e-01 1.47020037e-01 1.47283343e-01 1.47546824e-01 + 1.47810479e-01 1.48074308e-01 1.48338312e-01 1.48602490e-01 1.48866841e-01 + 1.49131366e-01 1.49396065e-01 1.49660936e-01 1.49925981e-01 1.50191198e-01 + 1.50456588e-01 1.50722150e-01 1.50987884e-01 1.51253790e-01 1.51519868e-01 + 1.51786118e-01 1.52052539e-01 1.52319131e-01 1.52585894e-01 1.52852827e-01 + 1.53119932e-01 1.53387206e-01 1.53654651e-01 1.53922266e-01 1.54190050e-01 + 1.54458004e-01 1.54726127e-01 1.54994420e-01 1.55262881e-01 1.55531511e-01 + 1.55800310e-01 1.56069277e-01 1.56338412e-01 1.56607715e-01 1.56877186e-01 + 1.57146824e-01 1.57416630e-01 1.57686603e-01 1.57956743e-01 1.58227049e-01 + 1.58497522e-01 1.58768161e-01 1.59038967e-01 1.59309938e-01 1.59581075e-01 + 1.59852378e-01 1.60123846e-01 1.60395479e-01 1.60667277e-01 1.60939240e-01 + 1.61211367e-01 1.61483659e-01 1.61756114e-01 1.62028734e-01 1.62301517e-01 + 1.62574464e-01 1.62847574e-01 1.63120847e-01 1.63394283e-01 1.63667882e-01 + 1.63941644e-01 1.64215567e-01 1.64489653e-01 1.64763901e-01 1.65038310e-01 + 1.65312881e-01 1.65587613e-01 1.65862506e-01 1.66137560e-01 1.66412775e-01 + 1.66688150e-01 1.66963686e-01 1.67239381e-01 1.67515237e-01 1.67791252e-01 + 1.68067427e-01 1.68343761e-01 1.68620254e-01 1.68896906e-01 1.69173717e-01 + 1.69450686e-01 1.69727813e-01 1.70005098e-01 1.70282542e-01 1.70560143e-01 + 1.70837901e-01 1.71115817e-01 1.71393889e-01 1.71672119e-01 1.71950505e-01 + 1.72229048e-01 1.72507747e-01 1.72786602e-01 1.73065613e-01 1.73344779e-01 + 1.73624101e-01 1.73903579e-01 1.74183211e-01 1.74462998e-01 1.74742940e-01 + 1.75023036e-01 1.75303286e-01 1.75583691e-01 1.75864249e-01 1.76144961e-01 + 1.76425826e-01 1.76706845e-01 1.76988017e-01 1.77269341e-01 1.77550818e-01 + 1.77832448e-01 1.78114229e-01 1.78396163e-01 1.78678248e-01 1.78960486e-01 + 1.79242874e-01 1.79525414e-01 1.79808105e-01 1.80090946e-01 1.80373938e-01 + 1.80657081e-01 1.80940374e-01 1.81223816e-01 1.81507409e-01 1.81791151e-01 + 1.82075043e-01 1.82359084e-01 1.82643273e-01 1.82927612e-01 1.83212099e-01 + 1.83496734e-01 1.83781518e-01 1.84066450e-01 1.84351529e-01 1.84636756e-01 + 1.84922131e-01 1.85207652e-01 1.85493321e-01 1.85779136e-01 1.86065098e-01 + 1.86351206e-01 1.86637461e-01 1.86923861e-01 1.87210407e-01 1.87497099e-01 + 1.87783936e-01 1.88070919e-01 1.88358046e-01 1.88645318e-01 1.88932734e-01 + 1.89220295e-01 1.89508000e-01 1.89795849e-01 1.90083842e-01 1.90371978e-01 + 1.90660258e-01 1.90948681e-01 1.91237246e-01 1.91525955e-01 1.91814806e-01 + 1.92103799e-01 1.92392935e-01 1.92682212e-01 1.92971631e-01 1.93261192e-01 + 1.93550894e-01 1.93840737e-01 1.94130721e-01 1.94420846e-01 1.94711111e-01 + 1.95001517e-01 1.95292063e-01 1.95582748e-01 1.95873574e-01 1.96164539e-01 + 1.96455643e-01 1.96746886e-01 1.97038269e-01 1.97329790e-01 1.97621449e-01 + 1.97913247e-01 1.98205183e-01 1.98497257e-01 1.98789469e-01 1.99081818e-01 + 1.99374304e-01 1.99666928e-01 1.99959688e-01 2.00252585e-01 2.00545619e-01 + 2.00838789e-01 2.01132095e-01 2.01425537e-01 2.01719114e-01 2.02012828e-01 + 2.02306676e-01 2.02600660e-01 2.02894778e-01 2.03189031e-01 2.03483419e-01 + 2.03777941e-01 2.04072597e-01 2.04367387e-01 2.04662311e-01 2.04957368e-01 + 2.05252558e-01 2.05547882e-01 2.05843338e-01 2.06138928e-01 2.06434649e-01 + 2.06730503e-01 2.07026489e-01 2.07322607e-01 2.07618857e-01 2.07915238e-01 + 2.08211750e-01 2.08508394e-01 2.08805168e-01 2.09102073e-01 2.09399109e-01 + 2.09696275e-01 2.09993571e-01 2.10290997e-01 2.10588552e-01 2.10886237e-01 + 2.11184052e-01 2.11481995e-01 2.11780068e-01 2.12078269e-01 2.12376598e-01 + 2.12675056e-01 2.12973642e-01 2.13272356e-01 2.13571197e-01 2.13870166e-01 + 2.14169263e-01 2.14468486e-01 2.14767837e-01 2.15067314e-01 2.15366917e-01 + 2.15666647e-01 2.15966503e-01 2.16266485e-01 2.16566592e-01 2.16866825e-01 + 2.17167184e-01 2.17467667e-01 2.17768276e-01 2.18069009e-01 2.18369866e-01 + 2.18670848e-01 2.18971954e-01 2.19273184e-01 2.19574538e-01 2.19876015e-01 + 2.20177615e-01 2.20479339e-01 2.20781185e-01 2.21083155e-01 2.21385246e-01 + 2.21687460e-01 2.21989797e-01 2.22292255e-01 2.22594835e-01 2.22897536e-01 + 2.23200359e-01 2.23503303e-01 2.23806367e-01 2.24109553e-01 2.24412859e-01 + 2.24716285e-01 2.25019832e-01 2.25323498e-01 2.25627285e-01 2.25931191e-01 + 2.26235216e-01 2.26539360e-01 2.26843623e-01 2.27148005e-01 2.27452506e-01 + 2.27757125e-01 2.28061862e-01 2.28366717e-01 2.28671690e-01 2.28976780e-01 + 2.29281988e-01 2.29587313e-01 2.29892755e-01 2.30198313e-01 2.30503989e-01 + 2.30809780e-01 2.31115688e-01 2.31421712e-01 2.31727852e-01 2.32034107e-01 + 2.32340478e-01 2.32646964e-01 2.32953565e-01 2.33260280e-01 2.33567111e-01 + 2.33874055e-01 2.34181114e-01 2.34488287e-01 2.34795574e-01 2.35102975e-01 + 2.35410489e-01 2.35718116e-01 2.36025856e-01 2.36333709e-01 2.36641675e-01 + 2.36949753e-01 2.37257943e-01 2.37566246e-01 2.37874660e-01 2.38183186e-01 + 2.38491824e-01 2.38800572e-01 2.39109432e-01 2.39418403e-01 2.39727484e-01 + 2.40036676e-01 2.40345978e-01 2.40655391e-01 2.40964913e-01 2.41274545e-01 + 2.41584286e-01 2.41894137e-01 2.42204097e-01 2.42514166e-01 2.42824344e-01 + 2.43134630e-01 2.43445024e-01 2.43755527e-01 2.44066138e-01 2.44376856e-01 + 2.44687682e-01 2.44998615e-01 2.45309656e-01 2.45620803e-01 2.45932058e-01 + 2.46243419e-01 2.46554886e-01 2.46866459e-01 2.47178139e-01 2.47489924e-01 + 2.47801815e-01 2.48113812e-01 2.48425913e-01 2.48738120e-01 2.49050431e-01 + 2.49362848e-01 2.49675368e-01 2.49987993e-01 2.50300722e-01 2.50613555e-01 + 2.50926492e-01 2.51239532e-01 2.51552675e-01 2.51865922e-01 2.52179271e-01 + 2.52492723e-01 2.52806278e-01 2.53119935e-01 2.53433694e-01 2.53747555e-01 + 2.54061518e-01 2.54375582e-01 2.54689748e-01 2.55004015e-01 2.55318383e-01 + 2.55632851e-01 2.55947421e-01 2.56262090e-01 2.56576860e-01 2.56891730e-01 + 2.57206700e-01 2.57521770e-01 2.57836938e-01 2.58152207e-01 2.58467574e-01 + 2.58783040e-01 2.59098605e-01 2.59414268e-01 2.59730029e-01 2.60045889e-01 + 2.60361847e-01 2.60677902e-01 2.60994055e-01 2.61310305e-01 2.61626652e-01 + 2.61943096e-01 2.62259637e-01 2.62576275e-01 2.62893009e-01 2.63209839e-01 + 2.63526765e-01 2.63843787e-01 2.64160905e-01 2.64478118e-01 2.64795426e-01 + 2.65112830e-01 2.65430328e-01 2.65747921e-01 2.66065608e-01 2.66383390e-01 + 2.66701265e-01 2.67019235e-01 2.67337298e-01 2.67655455e-01 2.67973706e-01 + 2.68292049e-01 2.68610485e-01 2.68929014e-01 2.69247636e-01 2.69566350e-01 + 2.69885156e-01 2.70204055e-01 2.70523045e-01 2.70842127e-01 2.71161300e-01 + 2.71480564e-01 2.71799920e-01 2.72119366e-01 2.72438903e-01 2.72758531e-01 + 2.73078249e-01 2.73398057e-01 2.73717955e-01 2.74037942e-01 2.74358019e-01 + 2.74678186e-01 2.74998442e-01 2.75318787e-01 2.75639220e-01 2.75959743e-01 + 2.76280353e-01 2.76601052e-01 2.76921839e-01 2.77242714e-01 2.77563676e-01 + 2.77884726e-01 2.78205864e-01 2.78527088e-01 2.78848399e-01 2.79169798e-01 + 2.79491282e-01 2.79812853e-01 2.80134510e-01 2.80456254e-01 2.80778083e-01 + 2.81099997e-01 2.81421997e-01 2.81744083e-01 2.82066253e-01 2.82388508e-01 + 2.82710848e-01 2.83033273e-01 2.83355782e-01 2.83678374e-01 2.84001051e-01 + 2.84323812e-01 2.84646656e-01 2.84969584e-01 2.85292594e-01 2.85615688e-01 + 2.85938865e-01 2.86262124e-01 2.86585466e-01 2.86908890e-01 2.87232396e-01 + 2.87555984e-01 2.87879654e-01 2.88203405e-01 2.88527238e-01 2.88851152e-01 + 2.89175147e-01 2.89499222e-01 2.89823378e-01 2.90147615e-01 2.90471932e-01 + 2.90796329e-01 2.91120806e-01 2.91445362e-01 2.91769999e-01 2.92094714e-01 + 2.92419508e-01 2.92744382e-01 2.93069334e-01 2.93394365e-01 2.93719474e-01 + 2.94044662e-01 2.94369927e-01 2.94695271e-01 2.95020692e-01 2.95346191e-01 + 2.95671767e-01 2.95997420e-01 2.96323150e-01 2.96648956e-01 2.96974840e-01 + 2.97300799e-01 2.97626835e-01 2.97952947e-01 2.98279135e-01 2.98605399e-01 + 2.98931738e-01 2.99258152e-01 2.99584642e-01 2.99911206e-01 3.00237845e-01 + 3.00564559e-01 3.00891347e-01 3.01218209e-01 3.01545146e-01 3.01872156e-01 + 3.02199240e-01 3.02526398e-01 3.02853628e-01 3.03180932e-01 3.03508309e-01 + 3.03835759e-01 3.04163281e-01 3.04490876e-01 3.04818543e-01 3.05146281e-01 + 3.05474092e-01 3.05801975e-01 3.06129929e-01 3.06457954e-01 3.06786051e-01 + 3.07114218e-01 3.07442456e-01 3.07770765e-01 3.08099145e-01 3.08427594e-01 + 3.08756114e-01 3.09084703e-01 3.09413363e-01 3.09742091e-01 3.10070890e-01 + 3.10399757e-01 3.10728693e-01 3.11057699e-01 3.11386772e-01 3.11715915e-01 + 3.12045125e-01 3.12374404e-01 3.12703751e-01 3.13033165e-01 3.13362647e-01 + 3.13692197e-01 3.14021813e-01 3.14351497e-01 3.14681248e-01 3.15011065e-01 + 3.15340949e-01 3.15670899e-01 3.16000915e-01 3.16330997e-01 3.16661145e-01 + 3.16991359e-01 3.17321638e-01 3.17651983e-01 3.17982392e-01 3.18312867e-01 + 3.18643406e-01 3.18974010e-01 3.19304678e-01 3.19635411e-01 3.19966207e-01 + 3.20297067e-01 3.20627992e-01 3.20958979e-01 3.21290030e-01 3.21621144e-01 + 3.21952321e-01 3.22283561e-01 3.22614864e-01 3.22946229e-01 3.23277656e-01 + 3.23609146e-01 3.23940697e-01 3.24272310e-01 3.24603985e-01 3.24935721e-01 + 3.25267519e-01 3.25599377e-01 3.25931297e-01 3.26263277e-01 3.26595317e-01 + 3.26927419e-01 3.27259580e-01 3.27591801e-01 3.27924082e-01 3.28256423e-01 + 3.28588824e-01 3.28921283e-01 3.29253802e-01 3.29586380e-01 3.29919017e-01 + 3.30251712e-01 3.30584466e-01 3.30917278e-01 3.31250149e-01 3.31583077e-01 + 3.31916063e-01 3.32249107e-01 3.32582208e-01 3.32915366e-01 3.33248582e-01 + 3.33581854e-01 3.33915183e-01 3.34248569e-01 3.34582011e-01 3.34915510e-01 + 3.35249064e-01 3.35582675e-01 3.35916341e-01 3.36250062e-01 3.36583839e-01 + 3.36917672e-01 3.37251559e-01 3.37585501e-01 3.37919498e-01 3.38253550e-01 + 3.38587656e-01 3.38921816e-01 3.39256030e-01 3.39590298e-01 3.39924620e-01 + 3.40258995e-01 3.40593423e-01 3.40927905e-01 3.41262440e-01 3.41597027e-01 + 3.41931667e-01 3.42266360e-01 3.42601105e-01 3.42935903e-01 3.43270752e-01 + 3.43605653e-01 3.43940606e-01 3.44275610e-01 3.44610666e-01 3.44945772e-01 + 3.45280930e-01 3.45616139e-01 3.45951398e-01 3.46286708e-01 3.46622068e-01 + 3.46957478e-01 3.47292938e-01 3.47628448e-01 3.47964008e-01 3.48299617e-01 + 3.48635275e-01 3.48970983e-01 3.49306740e-01 3.49642545e-01 3.49978399e-01 + 3.50314302e-01 3.50650253e-01 3.50986252e-01 3.51322299e-01 3.51658394e-01 + 3.51994536e-01 3.52330726e-01 3.52666964e-01 3.53003248e-01 3.53339580e-01 + 3.53675958e-01 3.54012383e-01 3.54348855e-01 3.54685373e-01 3.55021937e-01 + 3.55358547e-01 3.55695203e-01 3.56031904e-01 3.56368651e-01 3.56705444e-01 + 3.57042281e-01 3.57379164e-01 3.57716092e-01 3.58053064e-01 3.58390081e-01 + 3.58727142e-01 3.59064247e-01 3.59401397e-01 3.59738590e-01 3.60075827e-01 + 3.60413107e-01 3.60750431e-01 3.61087799e-01 3.61425209e-01 3.61762662e-01 + 3.62100158e-01 3.62437696e-01 3.62775277e-01 3.63112900e-01 3.63450566e-01 + 3.63788273e-01 3.64126022e-01 3.64463812e-01 3.64801645e-01 3.65139518e-01 + 3.65477432e-01 3.65815388e-01 3.66153384e-01 3.66491421e-01 3.66829498e-01 + 3.67167616e-01 3.67505774e-01 3.67843971e-01 3.68182209e-01 3.68520487e-01 + 3.68858803e-01 3.69197160e-01 3.69535555e-01 3.69873990e-01 3.70212463e-01 + 3.70550975e-01 3.70889526e-01 3.71228115e-01 3.71566742e-01 3.71905408e-01 + 3.72244111e-01 3.72582852e-01 3.72921631e-01 3.73260447e-01 3.73599300e-01 + 3.73938191e-01 3.74277119e-01 3.74616083e-01 3.74955084e-01 3.75294122e-01 + 3.75633196e-01 3.75972306e-01 3.76311452e-01 3.76650634e-01 3.76989852e-01 + 3.77329105e-01 3.77668394e-01 3.78007718e-01 3.78347077e-01 3.78686471e-01 + 3.79025899e-01 3.79365363e-01 3.79704861e-01 3.80044393e-01 3.80383959e-01 + 3.80723559e-01 3.81063194e-01 3.81402861e-01 3.81742563e-01 3.82082298e-01 + 3.82422065e-01 3.82761866e-01 3.83101700e-01 3.83441567e-01 3.83781466e-01 + 3.84121398e-01 3.84461362e-01 3.84801358e-01 3.85141386e-01 3.85481446e-01 + 3.85821538e-01 3.86161661e-01 3.86501816e-01 3.86842001e-01 3.87182218e-01 + 3.87522466e-01 3.87862744e-01 3.88203053e-01 3.88543393e-01 3.88883763e-01 + 3.89224162e-01 3.89564592e-01 3.89905052e-01 3.90245541e-01 3.90586060e-01 + 3.90926609e-01 3.91267186e-01 3.91607793e-01 3.91948428e-01 3.92289093e-01 + 3.92629785e-01 3.92970507e-01 3.93311256e-01 3.93652034e-01 3.93992840e-01 + 3.94333674e-01 3.94674535e-01 3.95015424e-01 3.95356341e-01 3.95697284e-01 + 3.96038255e-01 3.96379253e-01 3.96720277e-01 3.97061328e-01 3.97402406e-01 + 3.97743510e-01 3.98084640e-01 3.98425796e-01 3.98766978e-01 3.99108186e-01 + 3.99449420e-01 3.99790679e-01 4.00131963e-01 4.00473272e-01 4.00814607e-01 + 4.01155966e-01 4.01497350e-01 4.01838759e-01 4.02180192e-01 4.02521649e-01 + 4.02863130e-01 4.03204636e-01 4.03546165e-01 4.03887718e-01 4.04229294e-01 + 4.04570894e-01 4.04912517e-01 4.05254163e-01 4.05595832e-01 4.05937524e-01 + 4.06279238e-01 4.06620975e-01 4.06962734e-01 4.07304516e-01 4.07646319e-01 + 4.07988145e-01 4.08329992e-01 4.08671861e-01 4.09013751e-01 4.09355663e-01 + 4.09697596e-01 4.10039549e-01 4.10381524e-01 4.10723520e-01 4.11065536e-01 + 4.11407572e-01 4.11749629e-01 4.12091706e-01 4.12433803e-01 4.12775920e-01 + 4.13118057e-01 4.13460213e-01 4.13802389e-01 4.14144583e-01 4.14486798e-01 + 4.14829031e-01 4.15171283e-01 4.15513553e-01 4.15855843e-01 4.16198150e-01 + 4.16540476e-01 4.16882821e-01 4.17225183e-01 4.17567563e-01 4.17909961e-01 + 4.18252376e-01 4.18594809e-01 4.18937259e-01 4.19279726e-01 4.19622210e-01 + 4.19964711e-01 4.20307229e-01 4.20649763e-01 4.20992314e-01 4.21334881e-01 + 4.21677465e-01 4.22020064e-01 4.22362679e-01 4.22705310e-01 4.23047957e-01 + 4.23390619e-01 4.23733296e-01 4.24075988e-01 4.24418696e-01 4.24761418e-01 + 4.25104155e-01 4.25446907e-01 4.25789673e-01 4.26132454e-01 4.26475249e-01 + 4.26818057e-01 4.27160880e-01 4.27503717e-01 4.27846567e-01 4.28189430e-01 + 4.28532307e-01 4.28875197e-01 4.29218101e-01 4.29561017e-01 4.29903946e-01 + 4.30246888e-01 4.30589842e-01 4.30932808e-01 4.31275787e-01 4.31618778e-01 + 4.31961781e-01 4.32304796e-01 4.32647822e-01 4.32990860e-01 4.33333909e-01 + 4.33676970e-01 4.34020042e-01 4.34363125e-01 4.34706219e-01 4.35049323e-01 + 4.35392438e-01 4.35735564e-01 4.36078700e-01 4.36421846e-01 4.36765002e-01 + 4.37108168e-01 4.37451344e-01 4.37794529e-01 4.38137724e-01 4.38480929e-01 + 4.38824142e-01 4.39167365e-01 4.39510597e-01 4.39853837e-01 4.40197087e-01 + 4.40540345e-01 4.40883611e-01 4.41226885e-01 4.41570168e-01 4.41913459e-01 + 4.42256758e-01 4.42600064e-01 4.42943378e-01 4.43286700e-01 4.43630029e-01 + 4.43973365e-01 4.44316708e-01 4.44660058e-01 4.45003416e-01 4.45346779e-01 + 4.45690150e-01 4.46033526e-01 4.46376910e-01 4.46720299e-01 4.47063694e-01 + 4.47407095e-01 4.47750502e-01 4.48093915e-01 4.48437333e-01 4.48780757e-01 + 4.49124185e-01 4.49467619e-01 4.49811058e-01 4.50154502e-01 4.50497950e-01 + 4.50841403e-01 4.51184861e-01 4.51528322e-01 4.51871788e-01 4.52215259e-01 + 4.52558733e-01 4.52902210e-01 4.53245692e-01 4.53589177e-01 4.53932665e-01 + 4.54276157e-01 4.54619652e-01 4.54963150e-01 4.55306651e-01 4.55650154e-01 + 2.08130000e-04 2.08281191e-04 2.08734762e-04 2.09490714e-04 2.10549046e-04 + 2.11909757e-04 2.13572846e-04 2.15538310e-04 2.17806148e-04 2.20376358e-04 + 2.23248936e-04 2.26423882e-04 2.29901190e-04 2.33680858e-04 2.37762883e-04 + 2.42147260e-04 2.46833984e-04 2.51823051e-04 2.57114457e-04 2.62708196e-04 + 2.68604263e-04 2.74802652e-04 2.81303356e-04 2.88106370e-04 2.95211687e-04 + 3.02619299e-04 3.10329200e-04 3.18341382e-04 3.26655837e-04 3.35272557e-04 + 3.44191533e-04 3.53412758e-04 3.62936221e-04 3.72761913e-04 3.82889825e-04 + 3.93319947e-04 4.04052269e-04 4.15086779e-04 4.26423468e-04 4.38062324e-04 + 4.50003336e-04 4.62246492e-04 4.74791780e-04 4.87639188e-04 5.00788703e-04 + 5.14240312e-04 5.27994002e-04 5.42049760e-04 5.56407572e-04 5.71067423e-04 + 5.86029300e-04 6.01293187e-04 6.16859071e-04 6.32726934e-04 6.48896763e-04 + 6.65368541e-04 6.82142252e-04 6.99217880e-04 7.16595407e-04 7.34274817e-04 + 7.52256092e-04 7.70539216e-04 7.89124169e-04 8.08010934e-04 8.27199493e-04 + 8.46689825e-04 8.66481913e-04 8.86575737e-04 9.06971278e-04 9.27668514e-04 + 9.48667427e-04 9.69967995e-04 9.91570198e-04 1.01347401e-03 1.03567942e-03 + 1.05818640e-03 1.08099493e-03 1.10410498e-03 1.12751654e-03 1.15122957e-03 + 1.17524406e-03 1.19955999e-03 1.22417733e-03 1.24909605e-03 1.27431613e-03 + 1.29983755e-03 1.32566029e-03 1.35178430e-03 1.37820958e-03 1.40493610e-03 + 1.43196382e-03 1.45929272e-03 1.48692278e-03 1.51485397e-03 1.54308626e-03 + 1.57161963e-03 1.60045404e-03 1.62958946e-03 1.65902588e-03 1.68876325e-03 + 1.71880156e-03 1.74914077e-03 1.77978085e-03 1.81072177e-03 1.84196351e-03 + 1.87350602e-03 1.90534929e-03 1.93749327e-03 1.96993795e-03 2.00268328e-03 + 2.03572923e-03 2.06907577e-03 2.10272288e-03 2.13667051e-03 2.17091863e-03 + 2.20546721e-03 2.24031622e-03 2.27546562e-03 2.31091538e-03 2.34666546e-03 + 2.38271583e-03 2.41906645e-03 2.45571729e-03 2.49266831e-03 2.52991947e-03 + 2.56747075e-03 2.60532209e-03 2.64347347e-03 2.68192485e-03 2.72067619e-03 + 2.75972745e-03 2.79907859e-03 2.83872959e-03 2.87868038e-03 2.91893095e-03 + 2.95948125e-03 3.00033123e-03 3.04148087e-03 3.08293011e-03 3.12467892e-03 + 3.16672726e-03 3.20907509e-03 3.25172236e-03 3.29466904e-03 3.33791508e-03 + 3.38146044e-03 3.42530507e-03 3.46944894e-03 3.51389201e-03 3.55863422e-03 + 3.60367554e-03 3.64901591e-03 3.69465531e-03 3.74059367e-03 3.78683096e-03 + 3.83336714e-03 3.88020215e-03 3.92733595e-03 3.97476850e-03 4.02249975e-03 + 4.07052965e-03 4.11885815e-03 4.16748522e-03 4.21641079e-03 4.26563483e-03 + 4.31515728e-03 4.36497811e-03 4.41509725e-03 4.46551466e-03 4.51623029e-03 + 4.56724409e-03 4.61855601e-03 4.67016601e-03 4.72207403e-03 4.77428002e-03 + 4.82678393e-03 4.87958570e-03 4.93268530e-03 4.98608266e-03 5.03977774e-03 + 5.09377048e-03 5.14806083e-03 5.20264873e-03 5.25753414e-03 5.31271700e-03 + 5.36819725e-03 5.42397485e-03 5.48004973e-03 5.53642185e-03 5.59309115e-03 + 5.65005757e-03 5.70732106e-03 5.76488157e-03 5.82273903e-03 5.88089339e-03 + 5.93934459e-03 5.99809258e-03 6.05713731e-03 6.11647870e-03 6.17611671e-03 + 6.23605128e-03 6.29628235e-03 6.35680986e-03 6.41763375e-03 6.47875396e-03 + 6.54017044e-03 6.60188312e-03 6.66389194e-03 6.72619685e-03 6.78879778e-03 + 6.85169468e-03 6.91488748e-03 6.97837611e-03 7.04216053e-03 7.10624066e-03 + 7.17061645e-03 7.23528783e-03 7.30025474e-03 7.36551712e-03 7.43107490e-03 + 7.49692802e-03 7.56307641e-03 7.62952002e-03 7.69625878e-03 7.76329262e-03 + 7.83062147e-03 7.89824528e-03 7.96616398e-03 8.03437750e-03 8.10288577e-03 + 8.17168874e-03 8.24078632e-03 8.31017847e-03 8.37986510e-03 8.44984615e-03 + 8.52012155e-03 8.59069124e-03 8.66155515e-03 8.73271321e-03 8.80416535e-03 + 8.87591149e-03 8.94795158e-03 9.02028554e-03 9.09291331e-03 9.16583480e-03 + 9.23904995e-03 9.31255870e-03 9.38636096e-03 9.46045668e-03 9.53484577e-03 + 9.60952816e-03 9.68450379e-03 9.75977258e-03 9.83533445e-03 9.91118934e-03 + 9.98733717e-03 1.00637779e-02 1.01405114e-02 1.02175376e-02 1.02948564e-02 + 1.03724679e-02 1.04503718e-02 1.05285681e-02 1.06070568e-02 1.06858378e-02 + 1.07649109e-02 1.08442762e-02 1.09239335e-02 1.10038828e-02 1.10841240e-02 + 1.11646570e-02 1.12454817e-02 1.13265980e-02 1.14080060e-02 1.14897054e-02 + 1.15716963e-02 1.16539785e-02 1.17365519e-02 1.18194166e-02 1.19025723e-02 + 1.19860191e-02 1.20697568e-02 1.21537854e-02 1.22381047e-02 1.23227148e-02 + 1.24076155e-02 1.24928067e-02 1.25782883e-02 1.26640604e-02 1.27501227e-02 + 1.28364752e-02 1.29231179e-02 1.30100506e-02 1.30972732e-02 1.31847858e-02 + 1.32725881e-02 1.33606801e-02 1.34490618e-02 1.35377329e-02 1.36266936e-02 + 1.37159436e-02 1.38054829e-02 1.38953113e-02 1.39854289e-02 1.40758355e-02 + 1.41665311e-02 1.42575155e-02 1.43487886e-02 1.44403504e-02 1.45322008e-02 + 1.46243398e-02 1.47167671e-02 1.48094827e-02 1.49024866e-02 1.49957786e-02 + 1.50893587e-02 1.51832267e-02 1.52773826e-02 1.53718263e-02 1.54665577e-02 + 1.55615767e-02 1.56568832e-02 1.57524771e-02 1.58483584e-02 1.59445269e-02 + 1.60409825e-02 1.61377252e-02 1.62347549e-02 1.63320714e-02 1.64296747e-02 + 1.65275647e-02 1.66257413e-02 1.67242043e-02 1.68229538e-02 1.69219896e-02 + 1.70213116e-02 1.71209197e-02 1.72208138e-02 1.73209939e-02 1.74214598e-02 + 1.75222114e-02 1.76232487e-02 1.77245715e-02 1.78261798e-02 1.79280734e-02 + 1.80302523e-02 1.81327163e-02 1.82354654e-02 1.83384994e-02 1.84418184e-02 + 1.85454220e-02 1.86493104e-02 1.87534833e-02 1.88579407e-02 1.89626824e-02 + 1.90677084e-02 1.91730186e-02 1.92786129e-02 1.93844911e-02 1.94906532e-02 + 1.95970991e-02 1.97038286e-02 1.98108417e-02 1.99181382e-02 2.00257182e-02 + 2.01335813e-02 2.02417277e-02 2.03501571e-02 2.04588694e-02 2.05678646e-02 + 2.06771425e-02 2.07867031e-02 2.08965462e-02 2.10066717e-02 2.11170796e-02 + 2.12277697e-02 2.13387419e-02 2.14499962e-02 2.15615323e-02 2.16733503e-02 + 2.17854499e-02 2.18978311e-02 2.20104938e-02 2.21234379e-02 2.22366633e-02 + 2.23501698e-02 2.24639574e-02 2.25780260e-02 2.26923753e-02 2.28070055e-02 + 2.29219162e-02 2.30371074e-02 2.31525791e-02 2.32683311e-02 2.33843632e-02 + 2.35006755e-02 2.36172677e-02 2.37341397e-02 2.38512915e-02 2.39687230e-02 + 2.40864339e-02 2.42044243e-02 2.43226940e-02 2.44412429e-02 2.45600709e-02 + 2.46791779e-02 2.47985637e-02 2.49182282e-02 2.50381714e-02 2.51583931e-02 + 2.52788932e-02 2.53996717e-02 2.55207283e-02 2.56420629e-02 2.57636755e-02 + 2.58855660e-02 2.60077341e-02 2.61301799e-02 2.62529032e-02 2.63759039e-02 + 2.64991818e-02 2.66227368e-02 2.67465689e-02 2.68706779e-02 2.69950637e-02 + 2.71197262e-02 2.72446653e-02 2.73698808e-02 2.74953726e-02 2.76211406e-02 + 2.77471848e-02 2.78735049e-02 2.80001009e-02 2.81269726e-02 2.82541199e-02 + 2.83815427e-02 2.85092409e-02 2.86372144e-02 2.87654630e-02 2.88939867e-02 + 2.90227852e-02 2.91518585e-02 2.92812065e-02 2.94108290e-02 2.95407260e-02 + 2.96708972e-02 2.98013426e-02 2.99320621e-02 3.00630555e-02 3.01943227e-02 + 3.03258636e-02 3.04576781e-02 3.05897660e-02 3.07221272e-02 3.08547616e-02 + 3.09876691e-02 3.11208496e-02 3.12543028e-02 3.13880288e-02 3.15220273e-02 + 3.16562983e-02 3.17908416e-02 3.19256571e-02 3.20607447e-02 3.21961042e-02 + 3.23317356e-02 3.24676386e-02 3.26038132e-02 3.27402593e-02 3.28769766e-02 + 3.30139652e-02 3.31512248e-02 3.32887554e-02 3.34265567e-02 3.35646288e-02 + 3.37029714e-02 3.38415844e-02 3.39804677e-02 3.41196212e-02 3.42590447e-02 + 3.43987381e-02 3.45387013e-02 3.46789341e-02 3.48194365e-02 3.49602082e-02 + 3.51012492e-02 3.52425593e-02 3.53841384e-02 3.55259864e-02 3.56681031e-02 + 3.58104884e-02 3.59531422e-02 3.60960643e-02 3.62392547e-02 3.63827131e-02 + 3.65264394e-02 3.66704335e-02 3.68146954e-02 3.69592247e-02 3.71040215e-02 + 3.72490856e-02 3.73944167e-02 3.75400149e-02 3.76858800e-02 3.78320118e-02 + 3.79784102e-02 3.81250751e-02 3.82720063e-02 3.84192037e-02 3.85666672e-02 + 3.87143966e-02 3.88623918e-02 3.90106526e-02 3.91591790e-02 3.93079707e-02 + 3.94570277e-02 3.96063498e-02 3.97559369e-02 3.99057888e-02 4.00559054e-02 + 4.02062865e-02 4.03569321e-02 4.05078419e-02 4.06590159e-02 4.08104539e-02 + 4.09621558e-02 4.11141214e-02 4.12663506e-02 4.14188432e-02 4.15715991e-02 + 4.17246182e-02 4.18779004e-02 4.20314454e-02 4.21852532e-02 4.23393235e-02 + 4.24936564e-02 4.26482515e-02 4.28031089e-02 4.29582283e-02 4.31136096e-02 + 4.32692526e-02 4.34251573e-02 4.35813234e-02 4.37377508e-02 4.38944395e-02 + 4.40513892e-02 4.42085998e-02 4.43660711e-02 4.45238031e-02 4.46817956e-02 + 4.48400483e-02 4.49985613e-02 4.51573343e-02 4.53163671e-02 4.54756598e-02 + 4.56352120e-02 4.57950237e-02 4.59550947e-02 4.61154249e-02 4.62760141e-02 + 4.64368622e-02 4.65979690e-02 4.67593344e-02 4.69209582e-02 4.70828403e-02 + 4.72449806e-02 4.74073789e-02 4.75700350e-02 4.77329488e-02 4.78961202e-02 + 4.80595489e-02 4.82232350e-02 4.83871781e-02 4.85513782e-02 4.87158351e-02 + 4.88805487e-02 4.90455188e-02 4.92107453e-02 4.93762280e-02 4.95419667e-02 + 4.97079614e-02 4.98742118e-02 5.00407179e-02 5.02074794e-02 5.03744963e-02 + 5.05417683e-02 5.07092953e-02 5.08770772e-02 5.10451138e-02 5.12134049e-02 + 5.13819505e-02 5.15507503e-02 5.17198043e-02 5.18891121e-02 5.20586738e-02 + 5.22284892e-02 5.23985580e-02 5.25688802e-02 5.27394555e-02 5.29102839e-02 + 5.30813652e-02 5.32526992e-02 5.34242858e-02 5.35961248e-02 5.37682161e-02 + 5.39405595e-02 5.41131548e-02 5.42860020e-02 5.44591008e-02 5.46324511e-02 + 5.48060527e-02 5.49799055e-02 5.51540094e-02 5.53283641e-02 5.55029695e-02 + 5.56778255e-02 5.58529319e-02 5.60282885e-02 5.62038952e-02 5.63797519e-02 + 5.65558583e-02 5.67322144e-02 5.69088199e-02 5.70856747e-02 5.72627786e-02 + 5.74401316e-02 5.76177334e-02 5.77955838e-02 5.79736828e-02 5.81520301e-02 + 5.83306256e-02 5.85094691e-02 5.86885605e-02 5.88678997e-02 5.90474864e-02 + 5.92273205e-02 5.94074018e-02 5.95877302e-02 5.97683055e-02 5.99491276e-02 + 6.01301963e-02 6.03115114e-02 6.04930728e-02 6.06748803e-02 6.08569338e-02 + 6.10392330e-02 6.12217779e-02 6.14045683e-02 6.15876039e-02 6.17708848e-02 + 6.19544105e-02 6.21381812e-02 6.23221964e-02 6.25064562e-02 6.26909603e-02 + 6.28757085e-02 6.30607008e-02 6.32459369e-02 6.34314167e-02 6.36171400e-02 + 6.38031067e-02 6.39893165e-02 6.41757694e-02 6.43624651e-02 6.45494036e-02 + 6.47365845e-02 6.49240078e-02 6.51116734e-02 6.52995809e-02 6.54877303e-02 + 6.56761215e-02 6.58647541e-02 6.60536282e-02 6.62427434e-02 6.64320997e-02 + 6.66216969e-02 6.68115348e-02 6.70016132e-02 6.71919320e-02 6.73824910e-02 + 6.75732900e-02 6.77643289e-02 6.79556075e-02 6.81471257e-02 6.83388832e-02 + 6.85308799e-02 6.87231157e-02 6.89155904e-02 6.91083037e-02 6.93012556e-02 + 6.94944458e-02 6.96878742e-02 6.98815407e-02 7.00754450e-02 7.02695870e-02 + 7.04639665e-02 7.06585833e-02 7.08534374e-02 7.10485284e-02 7.12438563e-02 + 7.14394208e-02 7.16352219e-02 7.18312593e-02 7.20275328e-02 7.22240423e-02 + 7.24207876e-02 7.26177686e-02 7.28149851e-02 7.30124368e-02 7.32101237e-02 + 7.34080456e-02 7.36062022e-02 7.38045935e-02 7.40032192e-02 7.42020791e-02 + 7.44011732e-02 7.46005012e-02 7.48000630e-02 7.49998583e-02 7.51998870e-02 + 7.54001490e-02 7.56006441e-02 7.58013720e-02 7.60023326e-02 7.62035258e-02 + 7.64049514e-02 7.66066092e-02 7.68084989e-02 7.70106206e-02 7.72129739e-02 + 7.74155587e-02 7.76183748e-02 7.78214221e-02 7.80247003e-02 7.82282094e-02 + 7.84319490e-02 7.86359192e-02 7.88401196e-02 7.90445501e-02 7.92492105e-02 + 7.94541007e-02 7.96592204e-02 7.98645695e-02 8.00701479e-02 8.02759553e-02 + 8.04819916e-02 8.06882565e-02 8.08947500e-02 8.11014718e-02 8.13084218e-02 + 8.15155998e-02 8.17230055e-02 8.19306389e-02 8.21384998e-02 8.23465879e-02 + 8.25549031e-02 8.27634452e-02 8.29722141e-02 8.31812095e-02 8.33904313e-02 + 8.35998794e-02 8.38095534e-02 8.40194533e-02 8.42295789e-02 8.44399299e-02 + 8.46505063e-02 8.48613078e-02 8.50723343e-02 8.52835855e-02 8.54950613e-02 + 8.57067616e-02 8.59186860e-02 8.61308346e-02 8.63432070e-02 8.65558031e-02 + 8.67686227e-02 8.69816656e-02 8.71949318e-02 8.74084208e-02 8.76221327e-02 + 8.78360672e-02 8.80502241e-02 8.82646033e-02 8.84792045e-02 8.86940276e-02 + 8.89090725e-02 8.91243388e-02 8.93398265e-02 8.95555354e-02 8.97714652e-02 + 8.99876159e-02 9.02039871e-02 9.04205788e-02 9.06373908e-02 9.08544228e-02 + 9.10716747e-02 9.12891463e-02 9.15068374e-02 9.17247478e-02 9.19428774e-02 + 9.21612260e-02 9.23797934e-02 9.25985793e-02 9.28175837e-02 9.30368064e-02 + 9.32562470e-02 9.34759056e-02 9.36957818e-02 9.39158756e-02 9.41361866e-02 + 9.43567148e-02 9.45774599e-02 9.47984219e-02 9.50196003e-02 9.52409952e-02 + 9.54626063e-02 9.56844334e-02 9.59064764e-02 9.61287350e-02 9.63512090e-02 + 9.65738984e-02 9.67968029e-02 9.70199222e-02 9.72432563e-02 9.74668050e-02 + 9.76905680e-02 9.79145452e-02 9.81387363e-02 9.83631413e-02 9.85877598e-02 + 9.88125918e-02 9.90376370e-02 9.92628953e-02 9.94883665e-02 9.97140503e-02 + 9.99399466e-02 1.00166055e-01 1.00392376e-01 1.00618909e-01 1.00845653e-01 + 1.01072609e-01 1.01299776e-01 1.01527155e-01 1.01754744e-01 1.01982545e-01 + 1.02210556e-01 1.02438777e-01 1.02667209e-01 1.02895850e-01 1.03124702e-01 + 1.03353763e-01 1.03583034e-01 1.03812514e-01 1.04042203e-01 1.04272101e-01 + 1.04502207e-01 1.04732523e-01 1.04963046e-01 1.05193778e-01 1.05424718e-01 + 1.05655865e-01 1.05887221e-01 1.06118783e-01 1.06350553e-01 1.06582530e-01 + 1.06814713e-01 1.07047104e-01 1.07279701e-01 1.07512504e-01 1.07745513e-01 + 1.07978728e-01 1.08212148e-01 1.08445775e-01 1.08679606e-01 1.08913643e-01 + 1.09147884e-01 1.09382331e-01 1.09616982e-01 1.09851837e-01 1.10086896e-01 + 1.10322160e-01 1.10557627e-01 1.10793298e-01 1.11029172e-01 1.11265249e-01 + 1.11501530e-01 1.11738013e-01 1.11974699e-01 1.12211587e-01 1.12448678e-01 + 1.12685971e-01 1.12923465e-01 1.13161162e-01 1.13399059e-01 1.13637158e-01 + 1.13875458e-01 1.14113960e-01 1.14352661e-01 1.14591564e-01 1.14830666e-01 + 1.15069969e-01 1.15309472e-01 1.15549174e-01 1.15789076e-01 1.16029178e-01 + 1.16269478e-01 1.16509978e-01 1.16750676e-01 1.16991573e-01 1.17232669e-01 + 1.17473962e-01 1.17715454e-01 1.17957143e-01 1.18199030e-01 1.18441115e-01 + 1.18683397e-01 1.18925875e-01 1.19168551e-01 1.19411423e-01 1.19654492e-01 + 1.19897757e-01 1.20141218e-01 1.20384875e-01 1.20628728e-01 1.20872776e-01 + 1.21117020e-01 1.21361458e-01 1.21606092e-01 1.21850920e-01 1.22095943e-01 + 1.22341160e-01 1.22586571e-01 1.22832176e-01 1.23077975e-01 1.23323967e-01 + 1.23570153e-01 1.23816532e-01 1.24063104e-01 1.24309869e-01 1.24556826e-01 + 1.24803975e-01 1.25051317e-01 1.25298851e-01 1.25546576e-01 1.25794494e-01 + 1.26042602e-01 1.26290902e-01 1.26539393e-01 1.26788074e-01 1.27036946e-01 + 1.27286009e-01 1.27535261e-01 1.27784704e-01 1.28034337e-01 1.28284159e-01 + 1.28534171e-01 1.28784372e-01 1.29034762e-01 1.29285340e-01 1.29536108e-01 + 1.29787064e-01 1.30038208e-01 1.30289540e-01 1.30541060e-01 1.30792768e-01 + 1.31044663e-01 1.31296746e-01 1.31549015e-01 1.31801471e-01 1.32054115e-01 + 1.32306944e-01 1.32559960e-01 1.32813162e-01 1.33066550e-01 1.33320123e-01 + 1.33573882e-01 1.33827826e-01 1.34081956e-01 1.34336270e-01 1.34590769e-01 + 1.34845452e-01 1.35100320e-01 1.35355372e-01 1.35610608e-01 1.35866027e-01 + 1.36121630e-01 1.36377417e-01 1.36633386e-01 1.36889538e-01 1.37145873e-01 + 1.37402391e-01 1.37659091e-01 1.37915973e-01 1.38173037e-01 1.38430283e-01 + 1.38687710e-01 1.38945318e-01 1.39203108e-01 1.39461079e-01 1.39719230e-01 + 1.39977562e-01 1.40236074e-01 1.40494766e-01 1.40753639e-01 1.41012691e-01 + 1.41271922e-01 1.41531333e-01 1.41790923e-01 1.42050692e-01 1.42310640e-01 + 1.42570766e-01 1.42831071e-01 1.43091554e-01 1.43352214e-01 1.43613053e-01 + 1.43874069e-01 1.44135262e-01 1.44396633e-01 1.44658180e-01 1.44919904e-01 + 1.45181805e-01 1.45443882e-01 1.45706135e-01 1.45968565e-01 1.46231170e-01 + 1.46493950e-01 1.46756906e-01 1.47020037e-01 1.47283343e-01 1.47546824e-01 + 1.47810479e-01 1.48074308e-01 1.48338312e-01 1.48602490e-01 1.48866841e-01 + 1.49131366e-01 1.49396065e-01 1.49660936e-01 1.49925981e-01 1.50191198e-01 + 1.50456588e-01 1.50722150e-01 1.50987884e-01 1.51253790e-01 1.51519868e-01 + 1.51786118e-01 1.52052539e-01 1.52319131e-01 1.52585894e-01 1.52852827e-01 + 1.53119932e-01 1.53387206e-01 1.53654651e-01 1.53922266e-01 1.54190050e-01 + 1.54458004e-01 1.54726127e-01 1.54994420e-01 1.55262881e-01 1.55531511e-01 + 1.55800310e-01 1.56069277e-01 1.56338412e-01 1.56607715e-01 1.56877186e-01 + 1.57146824e-01 1.57416630e-01 1.57686603e-01 1.57956743e-01 1.58227049e-01 + 1.58497522e-01 1.58768161e-01 1.59038967e-01 1.59309938e-01 1.59581075e-01 + 1.59852378e-01 1.60123846e-01 1.60395479e-01 1.60667277e-01 1.60939240e-01 + 1.61211367e-01 1.61483659e-01 1.61756114e-01 1.62028734e-01 1.62301517e-01 + 1.62574464e-01 1.62847574e-01 1.63120847e-01 1.63394283e-01 1.63667882e-01 + 1.63941644e-01 1.64215567e-01 1.64489653e-01 1.64763901e-01 1.65038310e-01 + 1.65312881e-01 1.65587613e-01 1.65862506e-01 1.66137560e-01 1.66412775e-01 + 1.66688150e-01 1.66963686e-01 1.67239381e-01 1.67515237e-01 1.67791252e-01 + 1.68067427e-01 1.68343761e-01 1.68620254e-01 1.68896906e-01 1.69173717e-01 + 1.69450686e-01 1.69727813e-01 1.70005098e-01 1.70282542e-01 1.70560143e-01 + 1.70837901e-01 1.71115817e-01 1.71393889e-01 1.71672119e-01 1.71950505e-01 + 1.72229048e-01 1.72507747e-01 1.72786602e-01 1.73065613e-01 1.73344779e-01 + 1.73624101e-01 1.73903579e-01 1.74183211e-01 1.74462998e-01 1.74742940e-01 + 1.75023036e-01 1.75303286e-01 1.75583691e-01 1.75864249e-01 1.76144961e-01 + 1.76425826e-01 1.76706845e-01 1.76988017e-01 1.77269341e-01 1.77550818e-01 + 1.77832448e-01 1.78114229e-01 1.78396163e-01 1.78678248e-01 1.78960486e-01 + 1.79242874e-01 1.79525414e-01 1.79808105e-01 1.80090946e-01 1.80373938e-01 + 1.80657081e-01 1.80940374e-01 1.81223816e-01 1.81507409e-01 1.81791151e-01 + 1.82075043e-01 1.82359084e-01 1.82643273e-01 1.82927612e-01 1.83212099e-01 + 1.83496734e-01 1.83781518e-01 1.84066450e-01 1.84351529e-01 1.84636756e-01 + 1.84922131e-01 1.85207652e-01 1.85493321e-01 1.85779136e-01 1.86065098e-01 + 1.86351206e-01 1.86637461e-01 1.86923861e-01 1.87210407e-01 1.87497099e-01 + 1.87783936e-01 1.88070919e-01 1.88358046e-01 1.88645318e-01 1.88932734e-01 + 1.89220295e-01 1.89508000e-01 1.89795849e-01 1.90083842e-01 1.90371978e-01 + 1.90660258e-01 1.90948681e-01 1.91237246e-01 1.91525955e-01 1.91814806e-01 + 1.92103799e-01 1.92392935e-01 1.92682212e-01 1.92971631e-01 1.93261192e-01 + 1.93550894e-01 1.93840737e-01 1.94130721e-01 1.94420846e-01 1.94711111e-01 + 1.95001517e-01 1.95292063e-01 1.95582748e-01 1.95873574e-01 1.96164539e-01 + 1.96455643e-01 1.96746886e-01 1.97038269e-01 1.97329790e-01 1.97621449e-01 + 1.97913247e-01 1.98205183e-01 1.98497257e-01 1.98789469e-01 1.99081818e-01 + 1.99374304e-01 1.99666928e-01 1.99959688e-01 2.00252585e-01 2.00545619e-01 + 2.00838789e-01 2.01132095e-01 2.01425537e-01 2.01719114e-01 2.02012828e-01 + 2.02306676e-01 2.02600660e-01 2.02894778e-01 2.03189031e-01 2.03483419e-01 + 2.03777941e-01 2.04072597e-01 2.04367387e-01 2.04662311e-01 2.04957368e-01 + 2.05252558e-01 2.05547882e-01 2.05843338e-01 2.06138928e-01 2.06434649e-01 + 2.06730503e-01 2.07026489e-01 2.07322607e-01 2.07618857e-01 2.07915238e-01 + 2.08211750e-01 2.08508394e-01 2.08805168e-01 2.09102073e-01 2.09399109e-01 + 2.09696275e-01 2.09993571e-01 2.10290997e-01 2.10588552e-01 2.10886237e-01 + 2.11184052e-01 2.11481995e-01 2.11780068e-01 2.12078269e-01 2.12376598e-01 + 2.12675056e-01 2.12973642e-01 2.13272356e-01 2.13571197e-01 2.13870166e-01 + 2.14169263e-01 2.14468486e-01 2.14767837e-01 2.15067314e-01 2.15366917e-01 + 2.15666647e-01 2.15966503e-01 2.16266485e-01 2.16566592e-01 2.16866825e-01 + 2.17167184e-01 2.17467667e-01 2.17768276e-01 2.18069009e-01 2.18369866e-01 + 2.18670848e-01 2.18971954e-01 2.19273184e-01 2.19574538e-01 2.19876015e-01 + 2.20177615e-01 2.20479339e-01 2.20781185e-01 2.21083155e-01 2.21385246e-01 + 2.21687460e-01 2.21989797e-01 2.22292255e-01 2.22594835e-01 2.22897536e-01 + 2.23200359e-01 2.23503303e-01 2.23806367e-01 2.24109553e-01 2.24412859e-01 + 2.24716285e-01 2.25019832e-01 2.25323498e-01 2.25627285e-01 2.25931191e-01 + 2.26235216e-01 2.26539360e-01 2.26843623e-01 2.27148005e-01 2.27452506e-01 + 2.27757125e-01 2.28061862e-01 2.28366717e-01 2.28671690e-01 2.28976780e-01 + 2.29281988e-01 2.29587313e-01 2.29892755e-01 2.30198313e-01 2.30503989e-01 + 2.30809780e-01 2.31115688e-01 2.31421712e-01 2.31727852e-01 2.32034107e-01 + 2.32340478e-01 2.32646964e-01 2.32953565e-01 2.33260280e-01 2.33567111e-01 + 2.33874055e-01 2.34181114e-01 2.34488287e-01 2.34795574e-01 2.35102975e-01 + 2.35410489e-01 2.35718116e-01 2.36025856e-01 2.36333709e-01 2.36641675e-01 + 2.36949753e-01 2.37257943e-01 2.37566246e-01 2.37874660e-01 2.38183186e-01 + 2.38491824e-01 2.38800572e-01 2.39109432e-01 2.39418403e-01 2.39727484e-01 + 2.40036676e-01 2.40345978e-01 2.40655391e-01 2.40964913e-01 2.41274545e-01 + 2.41584286e-01 2.41894137e-01 2.42204097e-01 2.42514166e-01 2.42824344e-01 + 2.43134630e-01 2.43445024e-01 2.43755527e-01 2.44066138e-01 2.44376856e-01 + 2.44687682e-01 2.44998615e-01 2.45309656e-01 2.45620803e-01 2.45932058e-01 + 2.46243419e-01 2.46554886e-01 2.46866459e-01 2.47178139e-01 2.47489924e-01 + 2.47801815e-01 2.48113812e-01 2.48425913e-01 2.48738120e-01 2.49050431e-01 + 2.49362848e-01 2.49675368e-01 2.49987993e-01 2.50300722e-01 2.50613555e-01 + 2.50926492e-01 2.51239532e-01 2.51552675e-01 2.51865922e-01 2.52179271e-01 + 2.52492723e-01 2.52806278e-01 2.53119935e-01 2.53433694e-01 2.53747555e-01 + 2.54061518e-01 2.54375582e-01 2.54689748e-01 2.55004015e-01 2.55318383e-01 + 2.55632851e-01 2.55947421e-01 2.56262090e-01 2.56576860e-01 2.56891730e-01 + 2.57206700e-01 2.57521770e-01 2.57836938e-01 2.58152207e-01 2.58467574e-01 + 2.58783040e-01 2.59098605e-01 2.59414268e-01 2.59730029e-01 2.60045889e-01 + 2.60361847e-01 2.60677902e-01 2.60994055e-01 2.61310305e-01 2.61626652e-01 + 2.61943096e-01 2.62259637e-01 2.62576275e-01 2.62893009e-01 2.63209839e-01 + 2.63526765e-01 2.63843787e-01 2.64160905e-01 2.64478118e-01 2.64795426e-01 + 2.65112830e-01 2.65430328e-01 2.65747921e-01 2.66065608e-01 2.66383390e-01 + 2.66701265e-01 2.67019235e-01 2.67337298e-01 2.67655455e-01 2.67973706e-01 + 2.68292049e-01 2.68610485e-01 2.68929014e-01 2.69247636e-01 2.69566350e-01 + 2.69885156e-01 2.70204055e-01 2.70523045e-01 2.70842127e-01 2.71161300e-01 + 2.71480564e-01 2.71799920e-01 2.72119366e-01 2.72438903e-01 2.72758531e-01 + 2.73078249e-01 2.73398057e-01 2.73717955e-01 2.74037942e-01 2.74358019e-01 + 2.74678186e-01 2.74998442e-01 2.75318787e-01 2.75639220e-01 2.75959743e-01 + 2.76280353e-01 2.76601052e-01 2.76921839e-01 2.77242714e-01 2.77563676e-01 + 2.77884726e-01 2.78205864e-01 2.78527088e-01 2.78848399e-01 2.79169798e-01 + 2.79491282e-01 2.79812853e-01 2.80134510e-01 2.80456254e-01 2.80778083e-01 + 2.81099997e-01 2.81421997e-01 2.81744083e-01 2.82066253e-01 2.82388508e-01 + 2.82710848e-01 2.83033273e-01 2.83355782e-01 2.83678374e-01 2.84001051e-01 + 2.84323812e-01 2.84646656e-01 2.84969584e-01 2.85292594e-01 2.85615688e-01 + 2.85938865e-01 2.86262124e-01 2.86585466e-01 2.86908890e-01 2.87232396e-01 + 2.87555984e-01 2.87879654e-01 2.88203405e-01 2.88527238e-01 2.88851152e-01 + 2.89175147e-01 2.89499222e-01 2.89823378e-01 2.90147615e-01 2.90471932e-01 + 2.90796329e-01 2.91120806e-01 2.91445362e-01 2.91769999e-01 2.92094714e-01 + 2.92419508e-01 2.92744382e-01 2.93069334e-01 2.93394365e-01 2.93719474e-01 + 2.94044662e-01 2.94369927e-01 2.94695271e-01 2.95020692e-01 2.95346191e-01 + 2.95671767e-01 2.95997420e-01 2.96323150e-01 2.96648956e-01 2.96974840e-01 + 2.97300799e-01 2.97626835e-01 2.97952947e-01 2.98279135e-01 2.98605399e-01 + 2.98931738e-01 2.99258152e-01 2.99584642e-01 2.99911206e-01 3.00237845e-01 + 3.00564559e-01 3.00891347e-01 3.01218209e-01 3.01545146e-01 3.01872156e-01 + 3.02199240e-01 3.02526398e-01 3.02853628e-01 3.03180932e-01 3.03508309e-01 + 3.03835759e-01 3.04163281e-01 3.04490876e-01 3.04818543e-01 3.05146281e-01 + 3.05474092e-01 3.05801975e-01 3.06129929e-01 3.06457954e-01 3.06786051e-01 + 3.07114218e-01 3.07442456e-01 3.07770765e-01 3.08099145e-01 3.08427594e-01 + 3.08756114e-01 3.09084703e-01 3.09413363e-01 3.09742091e-01 3.10070890e-01 + 3.10399757e-01 3.10728693e-01 3.11057699e-01 3.11386772e-01 3.11715915e-01 + 3.12045125e-01 3.12374404e-01 3.12703751e-01 3.13033165e-01 3.13362647e-01 + 3.13692197e-01 3.14021813e-01 3.14351497e-01 3.14681248e-01 3.15011065e-01 + 3.15340949e-01 3.15670899e-01 3.16000915e-01 3.16330997e-01 3.16661145e-01 + 3.16991359e-01 3.17321638e-01 3.17651983e-01 3.17982392e-01 3.18312867e-01 + 3.18643406e-01 3.18974010e-01 3.19304678e-01 3.19635411e-01 3.19966207e-01 + 3.20297067e-01 3.20627992e-01 3.20958979e-01 3.21290030e-01 3.21621144e-01 + 3.21952321e-01 3.22283561e-01 3.22614864e-01 3.22946229e-01 3.23277656e-01 + 3.23609146e-01 3.23940697e-01 3.24272310e-01 3.24603985e-01 3.24935721e-01 + 3.25267519e-01 3.25599377e-01 3.25931297e-01 3.26263277e-01 3.26595317e-01 + 3.26927419e-01 3.27259580e-01 3.27591801e-01 3.27924082e-01 3.28256423e-01 + 3.28588824e-01 3.28921283e-01 3.29253802e-01 3.29586380e-01 3.29919017e-01 + 3.30251712e-01 3.30584466e-01 3.30917278e-01 3.31250149e-01 3.31583077e-01 + 3.31916063e-01 3.32249107e-01 3.32582208e-01 3.32915366e-01 3.33248582e-01 + 3.33581854e-01 3.33915183e-01 3.34248569e-01 3.34582011e-01 3.34915510e-01 + 3.35249064e-01 3.35582675e-01 3.35916341e-01 3.36250062e-01 3.36583839e-01 + 3.36917672e-01 3.37251559e-01 3.37585501e-01 3.37919498e-01 3.38253550e-01 + 3.38587656e-01 3.38921816e-01 3.39256030e-01 3.39590298e-01 3.39924620e-01 + 3.40258995e-01 3.40593423e-01 3.40927905e-01 3.41262440e-01 3.41597027e-01 + 3.41931667e-01 3.42266360e-01 3.42601105e-01 3.42935903e-01 3.43270752e-01 + 3.43605653e-01 3.43940606e-01 3.44275610e-01 3.44610666e-01 3.44945772e-01 + 3.45280930e-01 3.45616139e-01 3.45951398e-01 3.46286708e-01 3.46622068e-01 + 3.46957478e-01 3.47292938e-01 3.47628448e-01 3.47964008e-01 3.48299617e-01 + 3.48635275e-01 3.48970983e-01 3.49306740e-01 3.49642545e-01 3.49978399e-01 + 3.50314302e-01 3.50650253e-01 3.50986252e-01 3.51322299e-01 3.51658394e-01 + 3.51994536e-01 3.52330726e-01 3.52666964e-01 3.53003248e-01 3.53339580e-01 + 3.53675958e-01 3.54012383e-01 3.54348855e-01 3.54685373e-01 3.55021937e-01 + 3.55358547e-01 3.55695203e-01 3.56031904e-01 3.56368651e-01 3.56705444e-01 + 3.57042281e-01 3.57379164e-01 3.57716092e-01 3.58053064e-01 3.58390081e-01 + 3.58727142e-01 3.59064247e-01 3.59401397e-01 3.59738590e-01 3.60075827e-01 + 3.60413107e-01 3.60750431e-01 3.61087799e-01 3.61425209e-01 3.61762662e-01 + 3.62100158e-01 3.62437696e-01 3.62775277e-01 3.63112900e-01 3.63450566e-01 + 3.63788273e-01 3.64126022e-01 3.64463812e-01 3.64801645e-01 3.65139518e-01 + 3.65477432e-01 3.65815388e-01 3.66153384e-01 3.66491421e-01 3.66829498e-01 + 3.67167616e-01 3.67505774e-01 3.67843971e-01 3.68182209e-01 3.68520487e-01 + 3.68858803e-01 3.69197160e-01 3.69535555e-01 3.69873990e-01 3.70212463e-01 + 3.70550975e-01 3.70889526e-01 3.71228115e-01 3.71566742e-01 3.71905408e-01 + 3.72244111e-01 3.72582852e-01 3.72921631e-01 3.73260447e-01 3.73599300e-01 + 3.73938191e-01 3.74277119e-01 3.74616083e-01 3.74955084e-01 3.75294122e-01 + 3.75633196e-01 3.75972306e-01 3.76311452e-01 3.76650634e-01 3.76989852e-01 + 3.77329105e-01 3.77668394e-01 3.78007718e-01 3.78347077e-01 3.78686471e-01 + 3.79025899e-01 3.79365363e-01 3.79704861e-01 3.80044393e-01 3.80383959e-01 + 3.80723559e-01 3.81063194e-01 3.81402861e-01 3.81742563e-01 3.82082298e-01 + 3.82422065e-01 3.82761866e-01 3.83101700e-01 3.83441567e-01 3.83781466e-01 + 3.84121398e-01 3.84461362e-01 3.84801358e-01 3.85141386e-01 3.85481446e-01 + 3.85821538e-01 3.86161661e-01 3.86501816e-01 3.86842001e-01 3.87182218e-01 + 3.87522466e-01 3.87862744e-01 3.88203053e-01 3.88543393e-01 3.88883763e-01 + 3.89224162e-01 3.89564592e-01 3.89905052e-01 3.90245541e-01 3.90586060e-01 + 3.90926609e-01 3.91267186e-01 3.91607793e-01 3.91948428e-01 3.92289093e-01 + 3.92629785e-01 3.92970507e-01 3.93311256e-01 3.93652034e-01 3.93992840e-01 + 3.94333674e-01 3.94674535e-01 3.95015424e-01 3.95356341e-01 3.95697284e-01 + 3.96038255e-01 3.96379253e-01 3.96720277e-01 3.97061328e-01 3.97402406e-01 + 3.97743510e-01 3.98084640e-01 3.98425796e-01 3.98766978e-01 3.99108186e-01 + 3.99449420e-01 3.99790679e-01 4.00131963e-01 4.00473272e-01 4.00814607e-01 + 4.01155966e-01 4.01497350e-01 4.01838759e-01 4.02180192e-01 4.02521649e-01 + 4.02863130e-01 4.03204636e-01 4.03546165e-01 4.03887718e-01 4.04229294e-01 + 4.04570894e-01 4.04912517e-01 4.05254163e-01 4.05595832e-01 4.05937524e-01 + 4.06279238e-01 4.06620975e-01 4.06962734e-01 4.07304516e-01 4.07646319e-01 + 4.07988145e-01 4.08329992e-01 4.08671861e-01 4.09013751e-01 4.09355663e-01 + 4.09697596e-01 4.10039549e-01 4.10381524e-01 4.10723520e-01 4.11065536e-01 + 4.11407572e-01 4.11749629e-01 4.12091706e-01 4.12433803e-01 4.12775920e-01 + 4.13118057e-01 4.13460213e-01 4.13802389e-01 4.14144583e-01 4.14486798e-01 + 4.14829031e-01 4.15171283e-01 4.15513553e-01 4.15855843e-01 4.16198150e-01 + 4.16540476e-01 4.16882821e-01 4.17225183e-01 4.17567563e-01 4.17909961e-01 + 4.18252376e-01 4.18594809e-01 4.18937259e-01 4.19279726e-01 4.19622210e-01 + 4.19964711e-01 4.20307229e-01 4.20649763e-01 4.20992314e-01 4.21334881e-01 + 4.21677465e-01 4.22020064e-01 4.22362679e-01 4.22705310e-01 4.23047957e-01 + 4.23390619e-01 4.23733296e-01 4.24075988e-01 4.24418696e-01 4.24761418e-01 + 4.25104155e-01 4.25446907e-01 4.25789673e-01 4.26132454e-01 4.26475249e-01 + 4.26818057e-01 4.27160880e-01 4.27503717e-01 4.27846567e-01 4.28189430e-01 + 4.28532307e-01 4.28875197e-01 4.29218101e-01 4.29561017e-01 4.29903946e-01 + 4.30246888e-01 4.30589842e-01 4.30932808e-01 4.31275787e-01 4.31618778e-01 + 4.31961781e-01 4.32304796e-01 4.32647822e-01 4.32990860e-01 4.33333909e-01 + 4.33676970e-01 4.34020042e-01 4.34363125e-01 4.34706219e-01 4.35049323e-01 + 4.35392438e-01 4.35735564e-01 4.36078700e-01 4.36421846e-01 4.36765002e-01 + 4.37108168e-01 4.37451344e-01 4.37794529e-01 4.38137724e-01 4.38480929e-01 + 4.38824142e-01 4.39167365e-01 4.39510597e-01 4.39853837e-01 4.40197087e-01 + 4.40540345e-01 4.40883611e-01 4.41226885e-01 4.41570168e-01 4.41913459e-01 + 4.42256758e-01 4.42600064e-01 4.42943378e-01 4.43286700e-01 4.43630029e-01 + 4.43973365e-01 4.44316708e-01 4.44660058e-01 4.45003416e-01 4.45346779e-01 + 4.45690150e-01 4.46033526e-01 4.46376910e-01 4.46720299e-01 4.47063694e-01 + 4.47407095e-01 4.47750502e-01 4.48093915e-01 4.48437333e-01 4.48780757e-01 + 4.49124185e-01 4.49467619e-01 4.49811058e-01 4.50154502e-01 4.50497950e-01 + 4.50841403e-01 4.51184861e-01 4.51528322e-01 4.51871788e-01 4.52215259e-01 + 4.52558733e-01 4.52902210e-01 4.53245692e-01 4.53589177e-01 4.53932665e-01 + 4.54276157e-01 4.54619652e-01 4.54963150e-01 4.55306651e-01 4.55650154e-01 + 1.03953624e+00 1.03772749e+00 1.03592023e+00 1.03411445e+00 1.03231016e+00 + 1.03050735e+00 1.02870603e+00 1.02690620e+00 1.02510785e+00 1.02331100e+00 + 1.02151562e+00 1.01972174e+00 1.01792935e+00 1.01613844e+00 1.01434902e+00 + 1.01256110e+00 1.01077466e+00 1.00898971e+00 1.00720626e+00 1.00542429e+00 + 1.00364382e+00 1.00186484e+00 1.00008735e+00 9.98311355e-01 9.96536852e-01 + 9.94763842e-01 9.92992326e-01 9.91222304e-01 9.89453777e-01 9.87686744e-01 + 9.85921207e-01 9.84157165e-01 9.82394619e-01 9.80633570e-01 9.78874017e-01 + 9.77115962e-01 9.75359404e-01 9.73604344e-01 9.71850782e-01 9.70098719e-01 + 9.68348155e-01 9.66599090e-01 9.64851525e-01 9.63105460e-01 9.61360895e-01 + 9.59617832e-01 9.57876269e-01 9.56136208e-01 9.54397649e-01 9.52660593e-01 + 9.50925039e-01 9.49190988e-01 9.47458441e-01 9.45727397e-01 9.43997858e-01 + 9.42269823e-01 9.40543293e-01 9.38818268e-01 9.37094749e-01 9.35372736e-01 + 9.33652230e-01 9.31933230e-01 9.30215737e-01 9.28499752e-01 9.26785274e-01 + 9.25072305e-01 9.23360844e-01 9.21650893e-01 9.19942450e-01 9.18235517e-01 + 9.16530094e-01 9.14826182e-01 9.13123780e-01 9.11422890e-01 9.09723511e-01 + 9.08025644e-01 9.06329289e-01 9.04634446e-01 9.02941117e-01 9.01249300e-01 + 8.99558998e-01 8.97870209e-01 8.96182935e-01 8.94497176e-01 8.92812931e-01 + 8.91130202e-01 8.89448989e-01 8.87769292e-01 8.86091112e-01 8.84414448e-01 + 8.82739302e-01 8.81065673e-01 8.79393562e-01 8.77722970e-01 8.76053896e-01 + 8.74386341e-01 8.72720306e-01 8.71055790e-01 8.69392795e-01 8.67731320e-01 + 8.66071366e-01 8.64412932e-01 8.62756021e-01 8.61100631e-01 8.59446764e-01 + 8.57794419e-01 8.56143597e-01 8.54494298e-01 8.52846523e-01 8.51200272e-01 + 8.49555545e-01 8.47912343e-01 8.46270666e-01 8.44630515e-01 8.42991889e-01 + 8.41354789e-01 8.39719216e-01 8.38085170e-01 8.36452650e-01 8.34821658e-01 + 8.33192195e-01 8.31564259e-01 8.29937852e-01 8.28312973e-01 8.26689624e-01 + 8.25067805e-01 8.23447515e-01 8.21828756e-01 8.20211528e-01 8.18595830e-01 + 8.16981664e-01 8.15369029e-01 8.13757927e-01 8.12148357e-01 8.10540319e-01 + 8.08933815e-01 8.07328844e-01 8.05725406e-01 8.04123503e-01 8.02523135e-01 + 8.00924301e-01 7.99327002e-01 7.97731239e-01 7.96137011e-01 7.94544320e-01 + 7.92953165e-01 7.91363547e-01 7.89775466e-01 7.88188923e-01 7.86603918e-01 + 7.85020450e-01 7.83438522e-01 7.81858132e-01 7.80279281e-01 7.78701970e-01 + 7.77126199e-01 7.75551968e-01 7.73979278e-01 7.72408129e-01 7.70838521e-01 + 7.69270454e-01 7.67703930e-01 7.66138947e-01 7.64575508e-01 7.63013611e-01 + 7.61453258e-01 7.59894448e-01 7.58337182e-01 7.56781460e-01 7.55227283e-01 + 7.53674651e-01 7.52123565e-01 7.50574024e-01 7.49026029e-01 7.47479580e-01 + 7.45934678e-01 7.44391322e-01 7.42849514e-01 7.41309254e-01 7.39770542e-01 + 7.38233378e-01 7.36697762e-01 7.35163696e-01 7.33631179e-01 7.32100211e-01 + 7.30570794e-01 7.29042926e-01 7.27516610e-01 7.25991844e-01 7.24468629e-01 + 7.22946966e-01 7.21426855e-01 7.19908297e-01 7.18391291e-01 7.16875837e-01 + 7.15361937e-01 7.13849591e-01 7.12338798e-01 7.10829560e-01 7.09321876e-01 + 7.07815747e-01 7.06311174e-01 7.04808155e-01 7.03306693e-01 7.01806787e-01 + 7.00308437e-01 6.98811644e-01 6.97316408e-01 6.95822730e-01 6.94330610e-01 + 6.92840047e-01 6.91351043e-01 6.89863598e-01 6.88377712e-01 6.86893385e-01 + 6.85410618e-01 6.83929411e-01 6.82449765e-01 6.80971679e-01 6.79495154e-01 + 6.78020190e-01 6.76546789e-01 6.75074949e-01 6.73604671e-01 6.72135956e-01 + 6.70668804e-01 6.69203215e-01 6.67739189e-01 6.66276728e-01 6.64815830e-01 + 6.63356498e-01 6.61898730e-01 6.60442527e-01 6.58987889e-01 6.57534818e-01 + 6.56083312e-01 6.54633373e-01 6.53185001e-01 6.51738195e-01 6.50292957e-01 + 6.48849287e-01 6.47407184e-01 6.45966650e-01 6.44527685e-01 6.43090288e-01 + 6.41654460e-01 6.40220202e-01 6.38787514e-01 6.37356396e-01 6.35926849e-01 + 6.34498872e-01 6.33072467e-01 6.31647633e-01 6.30224370e-01 6.28802680e-01 + 6.27382561e-01 6.25964016e-01 6.24547043e-01 6.23131644e-01 6.21717818e-01 + 6.20305566e-01 6.18894889e-01 6.17485785e-01 6.16078257e-01 6.14672303e-01 + 6.13267925e-01 6.11865123e-01 6.10463897e-01 6.09064247e-01 6.07666173e-01 + 6.06269677e-01 6.04874758e-01 6.03481416e-01 6.02089652e-01 6.00699467e-01 + 5.99310859e-01 5.97923831e-01 5.96538381e-01 5.95154511e-01 5.93772221e-01 + 5.92391510e-01 5.91012380e-01 5.89634830e-01 5.88258861e-01 5.86884473e-01 + 5.85511667e-01 5.84140442e-01 5.82770800e-01 5.81402740e-01 5.80036262e-01 + 5.78671367e-01 5.77308056e-01 5.75946328e-01 5.74586184e-01 5.73227624e-01 + 5.71870649e-01 5.70515258e-01 5.69161453e-01 5.67809232e-01 5.66458597e-01 + 5.65109548e-01 5.63762086e-01 5.62416210e-01 5.61071920e-01 5.59729218e-01 + 5.58388103e-01 5.57048576e-01 5.55710636e-01 5.54374285e-01 5.53039523e-01 + 5.51706349e-01 5.50374764e-01 5.49044769e-01 5.47716364e-01 5.46389548e-01 + 5.45064323e-01 5.43740689e-01 5.42418645e-01 5.41098192e-01 5.39779331e-01 + 5.38462062e-01 5.37146385e-01 5.35832299e-01 5.34519807e-01 5.33208907e-01 + 5.31899601e-01 5.30591888e-01 5.29285769e-01 5.27981244e-01 5.26678313e-01 + 5.25376977e-01 5.24077235e-01 5.22779089e-01 5.21482538e-01 5.20187583e-01 + 5.18894224e-01 5.17602461e-01 5.16312295e-01 5.15023726e-01 5.13736754e-01 + 5.12451379e-01 5.11167602e-01 5.09885423e-01 5.08604843e-01 5.07325861e-01 + 5.06048477e-01 5.04772693e-01 5.03498508e-01 5.02225923e-01 5.00954938e-01 + 4.99685553e-01 4.98417769e-01 4.97151585e-01 4.95887003e-01 4.94624021e-01 + 4.93362642e-01 4.92102864e-01 4.90844689e-01 4.89588116e-01 4.88333145e-01 + 4.87079778e-01 4.85828014e-01 4.84577853e-01 4.83329297e-01 4.82082344e-01 + 4.80836996e-01 4.79593252e-01 4.78351114e-01 4.77110580e-01 4.75871652e-01 + 4.74634330e-01 4.73398614e-01 4.72164504e-01 4.70932001e-01 4.69701104e-01 + 4.68471815e-01 4.67244132e-01 4.66018058e-01 4.64793591e-01 4.63570733e-01 + 4.62349483e-01 4.61129842e-01 4.59911810e-01 4.58695387e-01 4.57480573e-01 + 4.56267369e-01 4.55055776e-01 4.53845792e-01 4.52637419e-01 4.51430658e-01 + 4.50225507e-01 4.49021967e-01 4.47820039e-01 4.46619724e-01 4.45421020e-01 + 4.44223928e-01 4.43028450e-01 4.41834584e-01 4.40642332e-01 4.39451693e-01 + 4.38262668e-01 4.37075256e-01 4.35889459e-01 4.34705277e-01 4.33522709e-01 + 4.32341757e-01 4.31162420e-01 4.29984698e-01 4.28808592e-01 4.27634102e-01 + 4.26461229e-01 4.25289972e-01 4.24120332e-01 4.22952310e-01 4.21785904e-01 + 4.20621116e-01 4.19457946e-01 4.18296395e-01 4.17136461e-01 4.15978147e-01 + 4.14821451e-01 4.13666374e-01 4.12512917e-01 4.11361080e-01 4.10210862e-01 + 4.09062265e-01 4.07915288e-01 4.06769932e-01 4.05626197e-01 4.04484083e-01 + 4.03343590e-01 4.02204719e-01 4.01067470e-01 3.99931844e-01 3.98797839e-01 + 3.97665458e-01 3.96534699e-01 3.95405564e-01 3.94278052e-01 3.93152164e-01 + 3.92027900e-01 3.90905259e-01 3.89784244e-01 3.88664853e-01 3.87547087e-01 + 3.86430946e-01 3.85316431e-01 3.84203541e-01 3.83092278e-01 3.81982640e-01 + 3.80874629e-01 3.79768245e-01 3.78663487e-01 3.77560357e-01 3.76458854e-01 + 3.75358979e-01 3.74260731e-01 3.73164112e-01 3.72069121e-01 3.70975759e-01 + 3.69884025e-01 3.68793921e-01 3.67705446e-01 3.66618601e-01 3.65533385e-01 + 3.64449799e-01 3.63367844e-01 3.62287520e-01 3.61208826e-01 3.60131763e-01 + 3.59056331e-01 3.57982531e-01 3.56910363e-01 3.55839826e-01 3.54770922e-01 + 3.53703650e-01 3.52638011e-01 3.51574005e-01 3.50511632e-01 3.49450892e-01 + 3.48391786e-01 3.47334314e-01 3.46278476e-01 3.45224272e-01 3.44171703e-01 + 3.43120769e-01 3.42071469e-01 3.41023805e-01 3.39977776e-01 3.38933384e-01 + 3.37890627e-01 3.36849506e-01 3.35810021e-01 3.34772174e-01 3.33735963e-01 + 3.32701389e-01 3.31668453e-01 3.30637154e-01 3.29607493e-01 3.28579470e-01 + 3.27553085e-01 3.26528339e-01 3.25505231e-01 3.24483762e-01 3.23463933e-01 + 3.22445743e-01 3.21429192e-01 3.20414282e-01 3.19401011e-01 3.18389381e-01 + 3.17379391e-01 3.16371042e-01 3.15364334e-01 3.14359267e-01 3.13355841e-01 + 3.12354057e-01 3.11353915e-01 3.10355415e-01 3.09358557e-01 3.08363342e-01 + 3.07369770e-01 3.06377840e-01 3.05387554e-01 3.04398911e-01 3.03411912e-01 + 3.02426556e-01 3.01442845e-01 3.00460777e-01 2.99480355e-01 2.98501577e-01 + 2.97524444e-01 2.96548956e-01 2.95575113e-01 2.94602916e-01 2.93632365e-01 + 2.92663460e-01 2.91696201e-01 2.90730589e-01 2.89766623e-01 2.88804304e-01 + 2.87843632e-01 2.86884607e-01 2.85927230e-01 2.84971501e-01 2.84017420e-01 + 2.83064986e-01 2.82114201e-01 2.81165065e-01 2.80217578e-01 2.79271739e-01 + 2.78327550e-01 2.77385010e-01 2.76444119e-01 2.75504879e-01 2.74567288e-01 + 2.73631348e-01 2.72697059e-01 2.71764419e-01 2.70833431e-01 2.69904094e-01 + 2.68976408e-01 2.68050374e-01 2.67125991e-01 2.66203261e-01 2.65282182e-01 + 2.64362756e-01 2.63444982e-01 2.62528861e-01 2.61614393e-01 2.60701578e-01 + 2.59790416e-01 2.58880908e-01 2.57973054e-01 2.57066853e-01 2.56162307e-01 + 2.55259415e-01 2.54358178e-01 2.53458595e-01 2.52560668e-01 2.51664395e-01 + 2.50769778e-01 2.49876816e-01 2.48985511e-01 2.48095861e-01 2.47207867e-01 + 2.46321530e-01 2.45436849e-01 2.44553825e-01 2.43672457e-01 2.42792747e-01 + 2.41914695e-01 2.41038300e-01 2.40163562e-01 2.39290483e-01 2.38419061e-01 + 2.37549298e-01 2.36681193e-01 2.35814748e-01 2.34949961e-01 2.34086833e-01 + 2.33225364e-01 2.32365555e-01 2.31507405e-01 2.30650916e-01 2.29796086e-01 + 2.28942916e-01 2.28091407e-01 2.27241559e-01 2.26393372e-01 2.25546845e-01 + 2.24701980e-01 2.23858776e-01 2.23017233e-01 2.22177352e-01 2.21339134e-01 + 2.20502577e-01 2.19667682e-01 2.18834451e-01 2.18002881e-01 2.17172975e-01 + 2.16344732e-01 2.15518152e-01 2.14693235e-01 2.13869982e-01 2.13048393e-01 + 2.12228468e-01 2.11410207e-01 2.10593610e-01 2.09778678e-01 2.08965410e-01 + 2.08153807e-01 2.07343870e-01 2.06535598e-01 2.05728991e-01 2.04924049e-01 + 2.04120774e-01 2.03319164e-01 2.02519221e-01 2.01720944e-01 2.00924334e-01 + 2.00129390e-01 1.99336113e-01 1.98544503e-01 1.97754560e-01 1.96966285e-01 + 1.96179677e-01 1.95394737e-01 1.94611465e-01 1.93829861e-01 1.93049925e-01 + 1.92271658e-01 1.91495059e-01 1.90720129e-01 1.89946869e-01 1.89175277e-01 + 1.88405354e-01 1.87637101e-01 1.86870518e-01 1.86105605e-01 1.85342361e-01 + 1.84580788e-01 1.83820885e-01 1.83062653e-01 1.82306091e-01 1.81551200e-01 + 1.80797980e-01 1.80046431e-01 1.79296554e-01 1.78548348e-01 1.77801814e-01 + 1.77056952e-01 1.76313762e-01 1.75572244e-01 1.74832398e-01 1.74094225e-01 + 1.73357725e-01 1.72622897e-01 1.71889743e-01 1.71158261e-01 1.70428453e-01 + 1.69700319e-01 1.68973858e-01 1.68249071e-01 1.67525958e-01 1.66804519e-01 + 1.66084755e-01 1.65366665e-01 1.64650249e-01 1.63935509e-01 1.63222443e-01 + 1.62511053e-01 1.61801338e-01 1.61093298e-01 1.60386934e-01 1.59682246e-01 + 1.58979233e-01 1.58277897e-01 1.57578237e-01 1.56880253e-01 1.56183946e-01 + 1.55489316e-01 1.54796362e-01 1.54105086e-01 1.53415486e-01 1.52727564e-01 + 1.52041320e-01 1.51356753e-01 1.50673864e-01 1.49992653e-01 1.49313120e-01 + 1.48635265e-01 1.47959088e-01 1.47284591e-01 1.46611771e-01 1.45940631e-01 + 1.45271170e-01 1.44603388e-01 1.43937285e-01 1.43272862e-01 1.42610118e-01 + 1.41949054e-01 1.41289670e-01 1.40631966e-01 1.39975942e-01 1.39321598e-01 + 1.38668935e-01 1.38017953e-01 1.37368652e-01 1.36721031e-01 1.36075091e-01 + 1.35430833e-01 1.34788256e-01 1.34147361e-01 1.33508147e-01 1.32870615e-01 + 1.32234765e-01 1.31600597e-01 1.30968111e-01 1.30337308e-01 1.29708187e-01 + 1.29080749e-01 1.28454994e-01 1.27830921e-01 1.27208532e-01 1.26587826e-01 + 1.25968803e-01 1.25351464e-01 1.24735808e-01 1.24121836e-01 1.23509548e-01 + 1.22898944e-01 1.22290024e-01 1.21682789e-01 1.21077238e-01 1.20473372e-01 + 1.19871190e-01 1.19270693e-01 1.18671881e-01 1.18074755e-01 1.17479313e-01 + 1.16885558e-01 1.16293487e-01 1.15703102e-01 1.15114403e-01 1.14527390e-01 + 1.13942064e-01 1.13358423e-01 1.12776468e-01 1.12196200e-01 1.11617619e-01 + 1.11040725e-01 1.10465517e-01 1.09891996e-01 1.09320162e-01 1.08750016e-01 + 1.08181557e-01 1.07614785e-01 1.07049701e-01 1.06486305e-01 1.05924597e-01 + 1.05364577e-01 1.04806244e-01 1.04249601e-01 1.03694645e-01 1.03141378e-01 + 1.02589800e-01 1.02039910e-01 1.01491709e-01 1.00945198e-01 1.00400375e-01 + 9.98572416e-02 9.93157976e-02 9.87760431e-02 9.82379782e-02 9.77016030e-02 + 9.71669178e-02 9.66339224e-02 9.61026172e-02 9.55730022e-02 9.50450776e-02 + 9.45188434e-02 9.39942997e-02 9.34714468e-02 9.29502847e-02 9.24308135e-02 + 9.19130333e-02 9.13969443e-02 9.08825466e-02 9.03698403e-02 8.98588255e-02 + 8.93495023e-02 8.88418708e-02 8.83359312e-02 8.78316836e-02 8.73291281e-02 + 8.68282647e-02 8.63290937e-02 8.58316150e-02 8.53358290e-02 8.48417355e-02 + 8.43493348e-02 8.38586270e-02 8.33696121e-02 8.28822904e-02 8.23966618e-02 + 8.19127265e-02 8.14304847e-02 8.09499364e-02 8.04710817e-02 7.99939207e-02 + 7.95184537e-02 7.90446805e-02 7.85726014e-02 7.81022165e-02 7.76335259e-02 + 7.71665296e-02 7.67012279e-02 7.62376207e-02 7.57757082e-02 7.53154905e-02 + 7.48569677e-02 7.44001400e-02 7.39450073e-02 7.34915699e-02 7.30398277e-02 + 7.25897810e-02 7.21414298e-02 7.16947743e-02 7.12498144e-02 7.08065504e-02 + 7.03649822e-02 6.99251102e-02 6.94869342e-02 6.90504544e-02 6.86156710e-02 + 6.81825840e-02 6.77511935e-02 6.73214996e-02 6.68935024e-02 6.64672020e-02 + 6.60425985e-02 6.56196920e-02 6.51984826e-02 6.47789704e-02 6.43611555e-02 + 6.39450379e-02 6.35306178e-02 6.31178953e-02 6.27068704e-02 6.22975433e-02 + 6.18899141e-02 6.14839827e-02 6.10797494e-02 6.06772142e-02 6.02763772e-02 + 5.98772385e-02 5.94797982e-02 5.90840564e-02 5.86900131e-02 5.82976685e-02 + 5.79070227e-02 5.75180757e-02 5.71308276e-02 5.67452785e-02 5.63614285e-02 + 5.59792777e-02 5.55988261e-02 5.52200739e-02 5.48430212e-02 5.44676679e-02 + 5.40940143e-02 5.37220604e-02 5.33518062e-02 5.29832520e-02 5.26163976e-02 + 5.22512433e-02 5.18877891e-02 5.15260351e-02 5.11659814e-02 5.08076280e-02 + 5.04509751e-02 5.00960227e-02 4.97427708e-02 4.93912197e-02 4.90413693e-02 + 4.86932198e-02 4.83467711e-02 4.80020235e-02 4.76589769e-02 4.73176315e-02 + 4.69779873e-02 4.66400444e-02 4.63038029e-02 4.59692628e-02 4.56364243e-02 + 4.53052874e-02 4.49758521e-02 4.46481186e-02 4.43220870e-02 4.39977572e-02 + 4.36751294e-02 4.33542037e-02 4.30349801e-02 4.27174587e-02 4.24016395e-02 + 4.20875227e-02 4.17751083e-02 4.14643964e-02 4.11553870e-02 4.08480802e-02 + 4.05424762e-02 4.02385749e-02 3.99363764e-02 3.96358808e-02 3.93370881e-02 + 3.90399985e-02 3.87446120e-02 3.84509287e-02 3.81589486e-02 3.78686718e-02 + 3.75800983e-02 3.72932283e-02 3.70080618e-02 3.67245988e-02 3.64428394e-02 + 3.61627838e-02 3.58844318e-02 3.56077837e-02 3.53328395e-02 3.50595992e-02 + 3.47880629e-02 3.45182306e-02 3.42501025e-02 3.39836786e-02 3.37189589e-02 + 3.34559435e-02 3.31946324e-02 3.29350258e-02 3.26771236e-02 3.24209260e-02 + 3.21664330e-02 3.19136446e-02 3.16625610e-02 3.14131821e-02 3.11655080e-02 + 3.09195388e-02 3.06752746e-02 3.04327153e-02 3.01918611e-02 2.99527120e-02 + 2.97152680e-02 2.94795292e-02 2.92454957e-02 2.90131675e-02 2.87825447e-02 + 2.85536273e-02 2.83264153e-02 2.81009089e-02 2.78771081e-02 2.76550128e-02 + 2.74346233e-02 2.72159395e-02 2.69989614e-02 2.67836892e-02 2.65701228e-02 + 2.63582623e-02 2.61481079e-02 2.59396594e-02 2.57329170e-02 2.55278807e-02 + 2.53245505e-02 2.51229266e-02 2.49230089e-02 2.47247975e-02 2.45282924e-02 + 2.43334937e-02 2.41404014e-02 2.39490156e-02 2.37593363e-02 2.35713636e-02 + 2.33850975e-02 2.32005380e-02 2.30176851e-02 2.28365390e-02 2.26570997e-02 + 2.24793672e-02 2.23033415e-02 2.21290227e-02 2.19564108e-02 2.17855059e-02 + 2.16163080e-02 2.14488171e-02 2.12830333e-02 2.11189566e-02 2.09565871e-02 + 2.07959248e-02 2.06369696e-02 2.04797218e-02 2.03241812e-02 2.01703480e-02 + 2.00182221e-02 1.98678037e-02 1.97190927e-02 1.95720891e-02 1.94267931e-02 + 1.92832045e-02 1.91413236e-02 1.90011502e-02 1.88626845e-02 1.87259265e-02 + 1.85908761e-02 1.84575335e-02 1.83258986e-02 1.81959715e-02 1.80677522e-02 + 1.79412408e-02 1.78164372e-02 1.76933415e-02 1.75719538e-02 1.74522740e-02 + 1.73343022e-02 1.72180384e-02 1.71034827e-02 1.69906350e-02 1.68794954e-02 + 1.67700639e-02 1.66623405e-02 1.65563253e-02 1.64520183e-02 1.63494195e-02 + 1.62485289e-02 1.61493466e-02 1.60518726e-02 1.59561068e-02 1.58620494e-02 + 1.57697003e-02 1.56790596e-02 1.55901273e-02 1.55029034e-02 1.54173879e-02 + 1.53335808e-02 1.52514822e-02 1.51710921e-02 1.50924105e-02 1.50154374e-02 + 1.49401728e-02 1.48666168e-02 1.47947694e-02 1.47246305e-02 1.46562002e-02 + 1.45894786e-02 1.45244656e-02 1.44611612e-02 1.43995655e-02 1.43396785e-02 + 1.42815001e-02 1.42250305e-02 1.41702695e-02 1.41172173e-02 1.40658738e-02 + 1.40162391e-02 1.39683132e-02 1.39220960e-02 1.38775876e-02 1.38347880e-02 + 1.37936971e-02 1.37543151e-02 1.37166420e-02 1.36806776e-02 1.36464221e-02 + 1.36138754e-02 1.35830376e-02 1.35539086e-02 1.35264885e-02 1.35007773e-02 + 1.34767750e-02 1.34544815e-02 1.34338969e-02 1.34150212e-02 1.33978544e-02 + 1.33823966e-02 1.33686476e-02 1.33566075e-02 1.33462763e-02 1.33376541e-02 + 1.33307407e-02 1.33255363e-02 1.33220408e-02 1.33202542e-02 1.33201765e-02 + 1.33218078e-02 1.33251480e-02 1.33301970e-02 1.33369550e-02 1.33454220e-02 + 1.33555978e-02 1.33674825e-02 1.33810762e-02 1.33963787e-02 1.34133902e-02 + 1.34321105e-02 1.34525397e-02 1.34746779e-02 1.34985249e-02 1.35240808e-02 + 1.35513455e-02 1.35803192e-02 1.36110016e-02 1.36433930e-02 1.36774932e-02 + 1.37133022e-02 1.37508200e-02 1.37900467e-02 1.38309822e-02 1.38736265e-02 + 1.39179796e-02 1.39640414e-02 1.40118121e-02 1.40612914e-02 1.41124796e-02 + 1.41653765e-02 1.42199821e-02 1.42762964e-02 1.43343194e-02 1.43940512e-02 + 1.44554916e-02 1.45186406e-02 1.45834983e-02 1.46500646e-02 1.47183396e-02 + 1.47883231e-02 1.48600153e-02 1.49334160e-02 1.50085252e-02 1.50853430e-02 + 1.51638693e-02 1.52441041e-02 1.53260474e-02 1.54096992e-02 1.54950594e-02 + 1.55821280e-02 1.56709051e-02 1.57613905e-02 1.58535843e-02 1.59474864e-02 + 1.60430969e-02 1.61404156e-02 1.62394427e-02 1.63401780e-02 1.64426215e-02 + 1.65467732e-02 1.66526331e-02 1.67602012e-02 1.68694775e-02 1.69804618e-02 + 1.70931542e-02 1.72075547e-02 1.73236633e-02 1.74414798e-02 1.75610043e-02 + 1.76822368e-02 1.78051772e-02 1.79298256e-02 1.80561818e-02 1.81842458e-02 + 1.83140177e-02 1.84454973e-02 1.85786847e-02 1.87135798e-02 1.88501827e-02 + 1.89884931e-02 1.91285113e-02 1.92702370e-02 1.94136703e-02 1.95588111e-02 + 1.97056595e-02 1.98542153e-02 2.00044786e-02 2.01564492e-02 2.03101272e-02 + 2.04655126e-02 2.06226053e-02 2.07814052e-02 2.09419123e-02 2.11041267e-02 + 2.12680482e-02 2.14336768e-02 2.16010125e-02 2.17700553e-02 2.19408050e-02 + 2.21132617e-02 2.22874254e-02 2.24632959e-02 2.26408733e-02 2.28201575e-02 + 2.30011484e-02 2.31838461e-02 2.33682505e-02 2.35543615e-02 2.37421791e-02 + 2.39317033e-02 2.41229339e-02 2.43158711e-02 2.45105147e-02 2.47068647e-02 + 2.49049210e-02 2.51046836e-02 2.53061524e-02 2.55093275e-02 2.57142087e-02 + 2.59207960e-02 2.61290894e-02 2.63390888e-02 2.65507942e-02 2.67642055e-02 + 2.69793227e-02 2.71961457e-02 2.74146744e-02 2.76349090e-02 2.78568491e-02 + 2.80804949e-02 2.83058463e-02 2.85329032e-02 2.87616656e-02 2.89921334e-02 + 2.92243066e-02 2.94581851e-02 2.96937689e-02 2.99310578e-02 3.01700520e-02 + 3.04107512e-02 3.06531555e-02 3.08972648e-02 3.11430790e-02 3.13905981e-02 + 3.16398220e-02 3.18907507e-02 3.21433841e-02 3.23977222e-02 3.26537648e-02 + 3.29115120e-02 3.31709637e-02 3.34321199e-02 3.36949803e-02 3.39595451e-02 + 3.42258142e-02 3.44937874e-02 3.47634647e-02 3.50348461e-02 3.53079315e-02 + 3.55827209e-02 3.58592141e-02 3.61374112e-02 3.64173120e-02 3.66989165e-02 + 3.69822246e-02 3.72672363e-02 3.75539515e-02 3.78423701e-02 3.81324920e-02 + 3.84243173e-02 3.87178458e-02 3.90130775e-02 3.93100123e-02 3.96086502e-02 + 3.99089910e-02 4.02110347e-02 4.05147812e-02 4.08202305e-02 4.11273825e-02 + 4.14362371e-02 4.17467942e-02 4.20590539e-02 4.23730160e-02 4.26886804e-02 + 4.30060471e-02 4.33251159e-02 4.36458870e-02 4.39683600e-02 4.42925351e-02 + 4.46184120e-02 4.49459908e-02 4.52752714e-02 4.56062536e-02 4.59389375e-02 + 4.62733229e-02 4.66094097e-02 4.69471980e-02 4.72866875e-02 4.76278783e-02 + 4.79707703e-02 4.83153633e-02 4.86616573e-02 4.90096522e-02 4.93593480e-02 + 4.97107446e-02 5.00638418e-02 5.04186396e-02 5.07751380e-02 5.11333368e-02 + 5.14932360e-02 5.18548354e-02 5.22181351e-02 5.25831349e-02 5.29498347e-02 + 5.33182344e-02 5.36883341e-02 5.40601335e-02 5.44336326e-02 5.48088313e-02 + 5.51857296e-02 5.55643273e-02 5.59446244e-02 5.63266207e-02 5.67103163e-02 + 5.70957109e-02 5.74828046e-02 5.78715972e-02 5.82620886e-02 5.86542788e-02 + 5.90481677e-02 5.94437551e-02 5.98410410e-02 6.02400253e-02 6.06407080e-02 + 6.10430888e-02 6.14471678e-02 6.18529447e-02 6.22604197e-02 6.26695925e-02 + 6.30804630e-02 6.34930312e-02 6.39072970e-02 6.43232602e-02 6.47409209e-02 + 6.51602788e-02 6.55813340e-02 6.60040862e-02 6.64285354e-02 6.68546816e-02 + 6.72825245e-02 6.77120642e-02 6.81433005e-02 6.85762333e-02 6.90108625e-02 + 6.94471881e-02 6.98852099e-02 7.03249278e-02 7.07663417e-02 7.12094516e-02 + 7.16542573e-02 7.21007588e-02 7.25489558e-02 7.29988484e-02 7.34504365e-02 + 7.39037198e-02 7.43586984e-02 7.48153721e-02 7.52737408e-02 7.57338044e-02 + 7.61955628e-02 7.66590160e-02 7.71241637e-02 7.75910059e-02 7.80595425e-02 + 7.85297734e-02 7.90016985e-02 7.94753177e-02 7.99506308e-02 8.04276378e-02 + 8.09063385e-02 8.13867329e-02 8.18688208e-02 8.23526021e-02 8.28380768e-02 + 8.33252446e-02 8.38141056e-02 8.43046595e-02 8.47969063e-02 8.52908459e-02 + 8.57864782e-02 8.62838029e-02 8.67828201e-02 8.72835297e-02 8.77859314e-02 + 8.82900252e-02 8.87958110e-02 8.93032887e-02 8.98124581e-02 9.03233191e-02 + 9.08358717e-02 9.13501157e-02 9.18660509e-02 9.23836774e-02 9.29029949e-02 + 9.34240033e-02 9.39467025e-02 9.44710925e-02 9.49971730e-02 9.55249440e-02 + 9.60544054e-02 9.65855570e-02 9.71183987e-02 9.76529303e-02 9.81891519e-02 + 9.87270632e-02 9.92666641e-02 9.98079545e-02 1.00350934e-01 1.00895603e-01 + 1.01441962e-01 1.01990009e-01 1.02539745e-01 1.03091170e-01 1.03644283e-01 + 1.04199085e-01 1.04755576e-01 1.05313754e-01 1.05873621e-01 1.06435176e-01 + 1.06998419e-01 1.07563349e-01 1.08129968e-01 1.08698273e-01 1.09268266e-01 + 1.09839947e-01 1.10413314e-01 1.10988368e-01 1.11565110e-01 1.12143538e-01 + 1.12723652e-01 1.13305453e-01 1.13888941e-01 1.14474115e-01 1.15060974e-01 + 1.15649520e-01 1.16239751e-01 1.16831669e-01 1.17425271e-01 1.18020560e-01 + 1.18617533e-01 1.19216192e-01 1.19816535e-01 1.20418564e-01 1.21022277e-01 + 1.21627675e-01 1.22234757e-01 1.22843524e-01 1.23453975e-01 1.24066109e-01 + 1.24679928e-01 1.25295431e-01 1.25912617e-01 1.26531487e-01 1.27152040e-01 + 1.27774276e-01 1.28398196e-01 1.29023798e-01 1.29651083e-01 1.30280051e-01 + 1.30910702e-01 1.31543034e-01 1.32177050e-01 1.32812747e-01 1.33450126e-01 + 1.34089187e-01 1.34729929e-01 1.35372353e-01 1.36016459e-01 1.36662246e-01 + 1.37309713e-01 1.37958862e-01 1.38609692e-01 1.39262202e-01 1.39916393e-01 + 1.40572264e-01 1.41229815e-01 1.41889046e-01 1.42549958e-01 1.43212549e-01 + 1.43876819e-01 1.44542770e-01 1.45210399e-01 1.45879708e-01 1.46550695e-01 + 1.47223362e-01 1.47897707e-01 1.48573731e-01 1.49251433e-01 1.49930814e-01 + 1.50611872e-01 1.51294609e-01 1.51979023e-01 1.52665115e-01 1.53352885e-01 + 1.54042332e-01 1.54733456e-01 1.55426257e-01 1.56120735e-01 1.56816890e-01 + 1.57514721e-01 1.58214229e-01 1.58915413e-01 1.59618273e-01 1.60322809e-01 + 1.61029020e-01 1.61736908e-01 1.62446471e-01 1.63157709e-01 1.63870622e-01 + 1.64585210e-01 1.65301473e-01 1.66019411e-01 1.66739023e-01 1.67460310e-01 + 1.68183271e-01 1.68907906e-01 1.69634214e-01 1.70362197e-01 1.71091853e-01 + 1.71823182e-01 1.72556184e-01 1.73290860e-01 1.74027208e-01 1.74765229e-01 + 1.75504923e-01 1.76246289e-01 1.76989327e-01 1.77734037e-01 1.78480419e-01 + 1.79228473e-01 1.79978199e-01 1.80729595e-01 1.81482663e-01 1.82237402e-01 + 1.82993812e-01 1.83751893e-01 1.84511644e-01 1.85273065e-01 1.86036157e-01 + 1.86800919e-01 1.87567350e-01 1.88335451e-01 1.89105222e-01 1.89876662e-01 + 1.90649771e-01 1.91424549e-01 1.92200996e-01 1.92979112e-01 1.93758896e-01 + 1.94540348e-01 1.95323469e-01 1.96108257e-01 1.96894713e-01 1.97682837e-01 + 1.98472628e-01 1.99264087e-01 2.00057212e-01 2.00852004e-01 2.01648463e-01 + 2.02446589e-01 2.03246381e-01 2.04047839e-01 2.04850963e-01 2.05655753e-01 + 2.06462208e-01 2.07270329e-01 2.08080115e-01 2.08891567e-01 2.09704683e-01 + 2.10519464e-01 2.11335909e-01 2.12154019e-01 2.12973793e-01 2.13795231e-01 + 2.14618333e-01 2.15443098e-01 2.16269527e-01 2.17097619e-01 2.17927374e-01 + 2.18758792e-01 2.19591873e-01 2.20426616e-01 2.21263022e-01 2.22101090e-01 + 2.22940819e-01 2.23782211e-01 2.24625264e-01 2.25469978e-01 2.26316354e-01 + 2.27164390e-01 2.28014088e-01 2.28865446e-01 2.29718464e-01 2.30573143e-01 + 2.31429482e-01 2.32287480e-01 2.33147139e-01 2.34008457e-01 2.34871434e-01 + 2.35736070e-01 2.36602365e-01 2.37470319e-01 2.38339931e-01 2.39211202e-01 + 2.40084131e-01 2.40958717e-01 2.41834962e-01 2.42712864e-01 2.43592423e-01 + 2.44473640e-01 2.45356513e-01 2.46241044e-01 2.47127230e-01 2.48015074e-01 + 2.48904573e-01 2.49795728e-01 2.50688539e-01 2.51583006e-01 2.52479128e-01 + 2.53376905e-01 2.54276337e-01 2.55177424e-01 2.56080166e-01 2.56984562e-01 + 2.57890612e-01 2.58798316e-01 2.59707674e-01 2.60618685e-01 2.61531350e-01 + 2.62445667e-01 2.63361638e-01 2.64279262e-01 2.65198538e-01 2.66119466e-01 + 2.67042047e-01 2.67966279e-01 2.68892164e-01 2.69819699e-01 2.70748886e-01 + 2.71679724e-01 2.72612213e-01 2.73546353e-01 2.74482143e-01 2.75419584e-01 + 2.76358674e-01 2.77299415e-01 2.78241805e-01 2.79185844e-01 2.80131533e-01 + 2.81078870e-01 2.82027857e-01 2.82978492e-01 2.83930775e-01 2.84884707e-01 + 2.85840287e-01 2.86797514e-01 2.87756389e-01 2.88716911e-01 2.89679080e-01 + 2.90642896e-01 2.91608359e-01 2.92575468e-01 2.93544224e-01 2.94514625e-01 + 2.95486673e-01 2.96460366e-01 2.97435704e-01 2.98412687e-01 2.99391316e-01 + 3.00371589e-01 3.01353507e-01 3.02337069e-01 3.03322275e-01 3.04309125e-01 + 3.05297618e-01 3.06287755e-01 3.07279535e-01 3.08272958e-01 3.09268024e-01 + 3.10264733e-01 3.11263084e-01 3.12263076e-01 3.13264711e-01 3.14267987e-01 + 3.15272905e-01 3.16279464e-01 3.17287664e-01 3.18297505e-01 3.19308986e-01 + 3.20322108e-01 3.21336869e-01 3.22353271e-01 3.23371312e-01 3.24390992e-01 + 3.25412312e-01 3.26435271e-01 3.27459868e-01 3.28486104e-01 3.29513978e-01 + 3.30543490e-01 3.31574640e-01 3.32607428e-01 3.33641852e-01 3.34677914e-01 + 3.35715613e-01 3.36754949e-01 3.37795921e-01 3.38838529e-01 3.39882774e-01 + 3.40928653e-01 3.41976169e-01 3.43025320e-01 3.44076105e-01 3.45128526e-01 + 3.46182581e-01 3.47238271e-01 3.48295594e-01 3.49354552e-01 3.50415143e-01 + 3.51477368e-01 3.52541225e-01 3.53606716e-01 3.54673839e-01 3.55742595e-01 + 3.56812983e-01 3.57885003e-01 3.58958655e-01 3.60033939e-01 3.61110853e-01 + 3.62189399e-01 3.63269575e-01 3.64351382e-01 3.65434820e-01 3.66519887e-01 + 3.67606584e-01 3.68694911e-01 3.69784868e-01 3.70876453e-01 3.71969667e-01 + 3.73064510e-01 3.74160981e-01 3.75259081e-01 3.76358808e-01 3.77460163e-01 + 3.78563145e-01 3.79667755e-01 3.80773992e-01 3.81881855e-01 3.82991344e-01 + 3.84102460e-01 3.85215202e-01 3.86329570e-01 3.87445563e-01 3.88563181e-01 + 3.89682424e-01 3.90803292e-01 3.91925784e-01 3.93049901e-01 3.94175642e-01 + 3.95303006e-01 3.96431994e-01 3.97562605e-01 3.98694839e-01 3.99828696e-01 + 4.00964175e-01 4.02101276e-01 4.03240000e-01 4.04380345e-01 4.05522312e-01 + 4.06665899e-01 4.07811108e-01 4.08957938e-01 4.10106388e-01 4.11256458e-01 + 4.12408148e-01 4.13561458e-01 4.14716388e-01 4.15872936e-01 4.17031104e-01 + 4.18190890e-01 4.19352295e-01 4.20515317e-01 4.21679958e-01 4.22846216e-01 + 4.24014092e-01 4.25183585e-01 4.26354695e-01 4.27527421e-01 4.28701764e-01 + 4.29877723e-01 4.31055298e-01 4.32234488e-01 4.33415294e-01 4.34597715e-01 + 4.35781751e-01 4.36967401e-01 4.38154665e-01 4.39343544e-01 4.40534036e-01 + 4.41726142e-01 4.42919861e-01 4.44115193e-01 4.45312138e-01 4.46510695e-01 + 4.47710864e-01 4.48912645e-01 4.50116038e-01 4.51321043e-01 4.52527658e-01 + 4.53735885e-01 4.54945722e-01 4.56157169e-01 4.57370226e-01 4.58584894e-01 + 4.59801170e-01 4.61019056e-01 4.62238551e-01 4.63459655e-01 4.64682367e-01 + 4.65906688e-01 4.67132616e-01 4.68360152e-01 4.69589295e-01 4.70820046e-01 + 4.72052403e-01 4.73286367e-01 4.74521937e-01 4.75759113e-01 4.76997895e-01 + 4.78238283e-01 4.79480276e-01 4.80723873e-01 4.81969076e-01 4.83215882e-01 + 4.84464293e-01 4.85714308e-01 4.86965926e-01 4.88219148e-01 4.89473972e-01 + 4.90730400e-01 4.91988430e-01 4.93248062e-01 4.94509296e-01 4.95772131e-01 + 4.97036568e-01 4.98302606e-01 4.99570245e-01 5.00839485e-01 5.02110324e-01 + 5.03382764e-01 5.04656804e-01 5.05932442e-01 5.07209680e-01 5.08488517e-01 + 5.09768953e-01 5.11050986e-01 5.12334618e-01 5.13619847e-01 5.14906674e-01 + 5.16195098e-01 5.17485119e-01 5.18776737e-01 5.20069951e-01 5.21364761e-01 + 5.22661167e-01 5.23959168e-01 5.25258764e-01 5.26559955e-01 5.27862741e-01 + 5.29167122e-01 5.30473096e-01 5.31780664e-01 5.33089826e-01 5.34400580e-01 + 5.35712928e-01 5.37026868e-01 5.38342401e-01 5.39659526e-01 5.40978242e-01 + 5.42298550e-01 5.43620449e-01 5.44943939e-01 5.46269020e-01 5.47595691e-01 + 5.48923952e-01 5.50253802e-01 5.51585242e-01 5.52918272e-01 5.54252890e-01 + 5.55589096e-01 5.56926891e-01 5.58266274e-01 5.59607245e-01 5.60949803e-01 + 5.62293948e-01 5.63639680e-01 5.64986999e-01 5.66335903e-01 5.67686394e-01 + 5.69038470e-01 5.70392132e-01 5.71747378e-01 5.73104210e-01 5.74462626e-01 + 5.75822626e-01 5.77184210e-01 5.78547377e-01 5.79912128e-01 5.81278461e-01 + 5.82646378e-01 5.84015876e-01 5.85386957e-01 5.86759620e-01 5.88133864e-01 + 5.89509689e-01 5.90887095e-01 5.92266082e-01 5.93646649e-01 5.95028796e-01 + 5.96412522e-01 5.97797828e-01 5.99184713e-01 6.00573177e-01 6.01963219e-01 + 6.03354840e-01 6.04748038e-01 6.06142814e-01 6.07539167e-01 6.08937097e-01 + 6.10336603e-01 6.11737686e-01 6.13140346e-01 6.14544580e-01 6.15950391e-01 + 6.17357776e-01 6.18766736e-01 6.20177271e-01 6.21589379e-01 6.23003062e-01 + 6.24418319e-01 6.25835148e-01 6.27253551e-01 6.28673526e-01 6.30095073e-01 + 6.31518193e-01 6.32942884e-01 6.34369147e-01 6.35796981e-01 6.37226386e-01 + 6.38657361e-01 6.40089906e-01 6.41524022e-01 6.42959706e-01 6.44396960e-01 + 6.45835783e-01 6.47276175e-01 6.48718135e-01 6.50161663e-01 6.51606758e-01 + 6.53053421e-01 6.54501651e-01 6.55951448e-01 6.57402811e-01 6.58855740e-01 + 6.60310236e-01 6.61766296e-01 6.63223922e-01 6.64683112e-01 6.66143868e-01 + 6.67606187e-01 6.69070070e-01 6.70535517e-01 6.72002527e-01 6.73471100e-01 + 6.74941236e-01 6.76412934e-01 6.77886194e-01 6.79361015e-01 6.80837398e-01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.65580254e-01 1.65563515e-01 1.65546741e-01 1.65529929e-01 1.65513082e-01 + 1.65496198e-01 1.65479277e-01 1.65462319e-01 1.65445324e-01 1.65428292e-01 + 1.65411223e-01 1.65394117e-01 1.65376974e-01 1.65359793e-01 1.65342574e-01 + 1.65325318e-01 1.65308025e-01 1.65290693e-01 1.65273323e-01 1.65255915e-01 + 1.65238469e-01 1.65220985e-01 1.65203462e-01 1.65185901e-01 1.65168301e-01 + 1.65150662e-01 1.65132985e-01 1.65115268e-01 1.65097513e-01 1.65079718e-01 + 1.65061884e-01 1.65044011e-01 1.65026098e-01 1.65008145e-01 1.64990153e-01 + 1.64972120e-01 1.64954048e-01 1.64935936e-01 1.64917783e-01 1.64899591e-01 + 1.64881357e-01 1.64863083e-01 1.64844769e-01 1.64826414e-01 1.64808017e-01 + 1.64789580e-01 1.64771102e-01 1.64752582e-01 1.64734021e-01 1.64715418e-01 + 1.64696774e-01 1.64678088e-01 1.64659360e-01 1.64640590e-01 1.64621778e-01 + 1.64602924e-01 1.64584027e-01 1.64565088e-01 1.64546107e-01 1.64527082e-01 + 1.64508015e-01 1.64488905e-01 1.64469751e-01 1.64450555e-01 1.64431315e-01 + 1.64412031e-01 1.64392704e-01 1.64373334e-01 1.64353919e-01 1.64334460e-01 + 1.64314958e-01 1.64295411e-01 1.64275819e-01 1.64256183e-01 1.64236503e-01 + 1.64216777e-01 1.64197007e-01 1.64177192e-01 1.64157331e-01 1.64137425e-01 + 1.64117474e-01 1.64097477e-01 1.64077435e-01 1.64057346e-01 1.64037212e-01 + 1.64017032e-01 1.63996805e-01 1.63976532e-01 1.63956212e-01 1.63935846e-01 + 1.63915433e-01 1.63894973e-01 1.63874465e-01 1.63853911e-01 1.63833309e-01 + 1.63812660e-01 1.63791963e-01 1.63771218e-01 1.63750426e-01 1.63729585e-01 + 1.63708696e-01 1.63687759e-01 1.63666773e-01 1.63645738e-01 1.63624655e-01 + 1.63603523e-01 1.63582341e-01 1.63561111e-01 1.63539831e-01 1.63518501e-01 + 1.63497122e-01 1.63475693e-01 1.63454214e-01 1.63432685e-01 1.63411106e-01 + 1.63389476e-01 1.63367795e-01 1.63346064e-01 1.63324282e-01 1.63302449e-01 + 1.63280565e-01 1.63258629e-01 1.63236642e-01 1.63214603e-01 1.63192512e-01 + 1.63170369e-01 1.63148174e-01 1.63125927e-01 1.63103628e-01 1.63081275e-01 + 1.63058870e-01 1.63036412e-01 1.63013901e-01 1.62991337e-01 1.62968719e-01 + 1.62946048e-01 1.62923323e-01 1.62900544e-01 1.62877710e-01 1.62854823e-01 + 1.62831881e-01 1.62808885e-01 1.62785834e-01 1.62762728e-01 1.62739567e-01 + 1.62716350e-01 1.62693078e-01 1.62669751e-01 1.62646368e-01 1.62622929e-01 + 1.62599433e-01 1.62575882e-01 1.62552274e-01 1.62528609e-01 1.62504888e-01 + 1.62481109e-01 1.62457274e-01 1.62433381e-01 1.62409431e-01 1.62385423e-01 + 1.62361357e-01 1.62337233e-01 1.62313050e-01 1.62288810e-01 1.62264510e-01 + 1.62240152e-01 1.62215735e-01 1.62191259e-01 1.62166724e-01 1.62142129e-01 + 1.62117474e-01 1.62092759e-01 1.62067985e-01 1.62043150e-01 1.62018255e-01 + 1.61993299e-01 1.61968282e-01 1.61943204e-01 1.61918065e-01 1.61892865e-01 + 1.61867603e-01 1.61842279e-01 1.61816893e-01 1.61791445e-01 1.61765935e-01 + 1.61740362e-01 1.61714726e-01 1.61689028e-01 1.61663266e-01 1.61637441e-01 + 1.61611552e-01 1.61585600e-01 1.61559583e-01 1.61533503e-01 1.61507358e-01 + 1.61481148e-01 1.61454874e-01 1.61428535e-01 1.61402130e-01 1.61375660e-01 + 1.61349125e-01 1.61322523e-01 1.61295856e-01 1.61269123e-01 1.61242323e-01 + 1.61215456e-01 1.61188522e-01 1.61161522e-01 1.61134454e-01 1.61107319e-01 + 1.61080115e-01 1.61052844e-01 1.61025505e-01 1.60998098e-01 1.60970621e-01 + 1.60943076e-01 1.60915462e-01 1.60887779e-01 1.60860026e-01 1.60832204e-01 + 1.60804311e-01 1.60776349e-01 1.60748316e-01 1.60720212e-01 1.60692038e-01 + 1.60663792e-01 1.60635475e-01 1.60607087e-01 1.60578627e-01 1.60550095e-01 + 1.60521491e-01 1.60492814e-01 1.60464065e-01 1.60435242e-01 1.60406347e-01 + 1.60377378e-01 1.60348335e-01 1.60319219e-01 1.60290028e-01 1.60260764e-01 + 1.60231424e-01 1.60202010e-01 1.60172520e-01 1.60142955e-01 1.60113315e-01 + 1.60083599e-01 1.60053807e-01 1.60023938e-01 1.59993993e-01 1.59963971e-01 + 1.59933872e-01 1.59903696e-01 1.59873442e-01 1.59843110e-01 1.59812700e-01 + 1.59782212e-01 1.59751645e-01 1.59720999e-01 1.59690274e-01 1.59659470e-01 + 1.59628586e-01 1.59597622e-01 1.59566578e-01 1.59535454e-01 1.59504249e-01 + 1.59472963e-01 1.59441595e-01 1.59410146e-01 1.59378616e-01 1.59347003e-01 + 1.59315308e-01 1.59283531e-01 1.59251670e-01 1.59219726e-01 1.59187699e-01 + 1.59155589e-01 1.59123394e-01 1.59091115e-01 1.59058751e-01 1.59026303e-01 + 1.58993770e-01 1.58961151e-01 1.58928446e-01 1.58895656e-01 1.58862779e-01 + 1.58829816e-01 1.58796766e-01 1.58763628e-01 1.58730404e-01 1.58697092e-01 + 1.58663691e-01 1.58630203e-01 1.58596625e-01 1.58562959e-01 1.58529204e-01 + 1.58495359e-01 1.58461425e-01 1.58427400e-01 1.58393285e-01 1.58359079e-01 + 1.58324782e-01 1.58290394e-01 1.58255915e-01 1.58221343e-01 1.58186679e-01 + 1.58151923e-01 1.58117073e-01 1.58082131e-01 1.58047095e-01 1.58011965e-01 + 1.57976741e-01 1.57941422e-01 1.57906009e-01 1.57870501e-01 1.57834897e-01 + 1.57799197e-01 1.57763402e-01 1.57727510e-01 1.57691521e-01 1.57655435e-01 + 1.57619252e-01 1.57582971e-01 1.57546592e-01 1.57510115e-01 1.57473538e-01 + 1.57436863e-01 1.57400088e-01 1.57363214e-01 1.57326239e-01 1.57289164e-01 + 1.57251989e-01 1.57214712e-01 1.57177333e-01 1.57139853e-01 1.57102271e-01 + 1.57064586e-01 1.57026798e-01 1.56988907e-01 1.56950912e-01 1.56912813e-01 + 1.56874610e-01 1.56836302e-01 1.56797890e-01 1.56759371e-01 1.56720748e-01 + 1.56682017e-01 1.56643181e-01 1.56604237e-01 1.56565187e-01 1.56526028e-01 + 1.56486762e-01 1.56447387e-01 1.56407903e-01 1.56368311e-01 1.56328609e-01 + 1.56288796e-01 1.56248874e-01 1.56208841e-01 1.56168697e-01 1.56128441e-01 + 1.56088074e-01 1.56047594e-01 1.56007002e-01 1.55966297e-01 1.55925478e-01 + 1.55884546e-01 1.55843499e-01 1.55802338e-01 1.55761062e-01 1.55719670e-01 + 1.55678163e-01 1.55636539e-01 1.55594799e-01 1.55552941e-01 1.55510966e-01 + 1.55468873e-01 1.55426662e-01 1.55384333e-01 1.55341884e-01 1.55299315e-01 + 1.55256627e-01 1.55213818e-01 1.55170888e-01 1.55127838e-01 1.55084665e-01 + 1.55041370e-01 1.54997953e-01 1.54954413e-01 1.54910749e-01 1.54866961e-01 + 1.54823050e-01 1.54779013e-01 1.54734851e-01 1.54690564e-01 1.54646150e-01 + 1.54601610e-01 1.54556943e-01 1.54512149e-01 1.54467226e-01 1.54422176e-01 + 1.54376996e-01 1.54331687e-01 1.54286249e-01 1.54240680e-01 1.54194981e-01 + 1.54149150e-01 1.54103188e-01 1.54057094e-01 1.54010867e-01 1.53964507e-01 + 1.53918014e-01 1.53871386e-01 1.53824625e-01 1.53777728e-01 1.53730696e-01 + 1.53683527e-01 1.53636223e-01 1.53588781e-01 1.53541202e-01 1.53493486e-01 + 1.53445630e-01 1.53397636e-01 1.53349503e-01 1.53301229e-01 1.53252815e-01 + 1.53204260e-01 1.53155564e-01 1.53106726e-01 1.53057745e-01 1.53008621e-01 + 1.52959354e-01 1.52909943e-01 1.52860387e-01 1.52810686e-01 1.52760840e-01 + 1.52710847e-01 1.52660708e-01 1.52610421e-01 1.52559987e-01 1.52509404e-01 + 1.52458673e-01 1.52407792e-01 1.52356762e-01 1.52305580e-01 1.52254248e-01 + 1.52202764e-01 1.52151129e-01 1.52099340e-01 1.52047398e-01 1.51995302e-01 + 1.51943052e-01 1.51890647e-01 1.51838087e-01 1.51785370e-01 1.51732497e-01 + 1.51679467e-01 1.51626279e-01 1.51572932e-01 1.51519426e-01 1.51465761e-01 + 1.51411936e-01 1.51357950e-01 1.51303802e-01 1.51249493e-01 1.51195021e-01 + 1.51140386e-01 1.51085587e-01 1.51030624e-01 1.50975496e-01 1.50920202e-01 + 1.50864742e-01 1.50809116e-01 1.50753322e-01 1.50697360e-01 1.50641229e-01 + 1.50584929e-01 1.50528459e-01 1.50471818e-01 1.50415007e-01 1.50358023e-01 + 1.50300867e-01 1.50243538e-01 1.50186035e-01 1.50128358e-01 1.50070506e-01 + 1.50012478e-01 1.49954274e-01 1.49895893e-01 1.49837334e-01 1.49778596e-01 + 1.49719680e-01 1.49660584e-01 1.49601308e-01 1.49541850e-01 1.49482211e-01 + 1.49422390e-01 1.49362385e-01 1.49302197e-01 1.49241824e-01 1.49181266e-01 + 1.49120523e-01 1.49059593e-01 1.48998475e-01 1.48937170e-01 1.48875676e-01 + 1.48813992e-01 1.48752119e-01 1.48690055e-01 1.48627799e-01 1.48565351e-01 + 1.48502710e-01 1.48439876e-01 1.48376847e-01 1.48313623e-01 1.48250203e-01 + 1.48186586e-01 1.48122773e-01 1.48058761e-01 1.47994550e-01 1.47930139e-01 + 1.47865528e-01 1.47800717e-01 1.47735703e-01 1.47670486e-01 1.47605066e-01 + 1.47539442e-01 1.47473613e-01 1.47407579e-01 1.47341337e-01 1.47274889e-01 + 1.47208232e-01 1.47141367e-01 1.47074292e-01 1.47007006e-01 1.46939509e-01 + 1.46871800e-01 1.46803878e-01 1.46735743e-01 1.46667393e-01 1.46598827e-01 + 1.46530046e-01 1.46461047e-01 1.46391831e-01 1.46322396e-01 1.46252742e-01 + 1.46182867e-01 1.46112772e-01 1.46042454e-01 1.45971913e-01 1.45901149e-01 + 1.45830160e-01 1.45758946e-01 1.45687506e-01 1.45615839e-01 1.45543943e-01 + 1.45471819e-01 1.45399465e-01 1.45326880e-01 1.45254064e-01 1.45181016e-01 + 1.45107734e-01 1.45034218e-01 1.44960467e-01 1.44886480e-01 1.44812256e-01 + 1.44737795e-01 1.44663094e-01 1.44588154e-01 1.44512974e-01 1.44437552e-01 + 1.44361888e-01 1.44285981e-01 1.44209829e-01 1.44133432e-01 1.44056789e-01 + 1.43979899e-01 1.43902761e-01 1.43825374e-01 1.43747737e-01 1.43669849e-01 + 1.43591710e-01 1.43513317e-01 1.43434671e-01 1.43355770e-01 1.43276613e-01 + 1.43197200e-01 1.43117528e-01 1.43037599e-01 1.42957409e-01 1.42876959e-01 + 1.42796247e-01 1.42715272e-01 1.42634034e-01 1.42552530e-01 1.42470761e-01 + 1.42388726e-01 1.42306422e-01 1.42223850e-01 1.42141007e-01 1.42057894e-01 + 1.41974509e-01 1.41890851e-01 1.41806919e-01 1.41722711e-01 1.41638228e-01 + 1.41553467e-01 1.41468428e-01 1.41383109e-01 1.41297511e-01 1.41211630e-01 + 1.41125467e-01 1.41039020e-01 1.40952288e-01 1.40865271e-01 1.40777966e-01 + 1.40690373e-01 1.40602491e-01 1.40514319e-01 1.40425855e-01 1.40337099e-01 + 1.40248048e-01 1.40158703e-01 1.40069062e-01 1.39979124e-01 1.39888888e-01 + 1.39798352e-01 1.39707515e-01 1.39616377e-01 1.39524936e-01 1.39433191e-01 + 1.39341140e-01 1.39248784e-01 1.39156119e-01 1.39063146e-01 1.38969862e-01 + 1.38876268e-01 1.38782361e-01 1.38688141e-01 1.38593606e-01 1.38498755e-01 + 1.38403586e-01 1.38308099e-01 1.38212293e-01 1.38116166e-01 1.38019716e-01 + 1.37922943e-01 1.37825846e-01 1.37728423e-01 1.37630672e-01 1.37532594e-01 + 1.37434185e-01 1.37335446e-01 1.37236375e-01 1.37136970e-01 1.37037230e-01 + 1.36937155e-01 1.36836742e-01 1.36735991e-01 1.36634900e-01 1.36533467e-01 + 1.36431692e-01 1.36329574e-01 1.36227110e-01 1.36124300e-01 1.36021142e-01 + 1.35917635e-01 1.35813778e-01 1.35709568e-01 1.35605006e-01 1.35500089e-01 + 1.35394817e-01 1.35289187e-01 1.35183199e-01 1.35076851e-01 1.34970142e-01 + 1.34863070e-01 1.34755634e-01 1.34647833e-01 1.34539665e-01 1.34431128e-01 + 1.34322223e-01 1.34212946e-01 1.34103297e-01 1.33993274e-01 1.33882876e-01 + 1.33772101e-01 1.33660948e-01 1.33549416e-01 1.33437503e-01 1.33325207e-01 + 1.33212528e-01 1.33099463e-01 1.32986012e-01 1.32872172e-01 1.32757943e-01 + 1.32643323e-01 1.32528310e-01 1.32412904e-01 1.32297101e-01 1.32180902e-01 + 1.32064305e-01 1.31947307e-01 1.31829908e-01 1.31712106e-01 1.31593899e-01 + 1.31475287e-01 1.31356267e-01 1.31236838e-01 1.31116998e-01 1.30996746e-01 + 1.30876081e-01 1.30755001e-01 1.30633504e-01 1.30511588e-01 1.30389253e-01 + 1.30266497e-01 1.30143318e-01 1.30019714e-01 1.29895684e-01 1.29771227e-01 + 1.29646341e-01 1.29521024e-01 1.29395274e-01 1.29269091e-01 1.29142472e-01 + 1.29015417e-01 1.28887922e-01 1.28759987e-01 1.28631611e-01 1.28502791e-01 + 1.28373525e-01 1.28243813e-01 1.28113653e-01 1.27983043e-01 1.27851981e-01 + 1.27720466e-01 1.27588496e-01 1.27456070e-01 1.27323186e-01 1.27189841e-01 + 1.27056036e-01 1.26921767e-01 1.26787033e-01 1.26651833e-01 1.26516166e-01 + 1.26380028e-01 1.26243419e-01 1.26106337e-01 1.25968780e-01 1.25830747e-01 + 1.25692235e-01 1.25553244e-01 1.25413771e-01 1.25273815e-01 1.25133375e-01 + 1.24992448e-01 1.24851032e-01 1.24709127e-01 1.24566730e-01 1.24423839e-01 + 1.24280454e-01 1.24136571e-01 1.23992190e-01 1.23847309e-01 1.23701926e-01 + 1.23556040e-01 1.23409647e-01 1.23262748e-01 1.23115340e-01 1.22967422e-01 + 1.22818991e-01 1.22670046e-01 1.22520585e-01 1.22370607e-01 1.22220110e-01 + 1.22069091e-01 1.21917550e-01 1.21765484e-01 1.21612892e-01 1.21459773e-01 + 1.21306123e-01 1.21151942e-01 1.20997228e-01 1.20841979e-01 1.20686193e-01 + 1.20529869e-01 1.20373004e-01 1.20215598e-01 1.20057648e-01 1.19899152e-01 + 1.19740109e-01 1.19580518e-01 1.19420375e-01 1.19259680e-01 1.19098431e-01 + 1.18936626e-01 1.18774263e-01 1.18611341e-01 1.18447857e-01 1.18283810e-01 + 1.18119199e-01 1.17954021e-01 1.17788276e-01 1.17621960e-01 1.17455072e-01 + 1.17287611e-01 1.17119575e-01 1.16950961e-01 1.16781770e-01 1.16611997e-01 + 1.16441643e-01 1.16270705e-01 1.16099181e-01 1.15927070e-01 1.15754370e-01 + 1.15581079e-01 1.15407195e-01 1.15232718e-01 1.15057644e-01 1.14881973e-01 + 1.14705703e-01 1.14528831e-01 1.14351357e-01 1.14173279e-01 1.13994594e-01 + 1.13815302e-01 1.13635400e-01 1.13454887e-01 1.13273762e-01 1.13092022e-01 + 1.12909666e-01 1.12726692e-01 1.12543099e-01 1.12358884e-01 1.12174047e-01 + 1.11988586e-01 1.11802499e-01 1.11615785e-01 1.11428441e-01 1.11240467e-01 + 1.11051860e-01 1.10862619e-01 1.10672743e-01 1.10482230e-01 1.10291079e-01 + 1.10099287e-01 1.09906853e-01 1.09713777e-01 1.09520055e-01 1.09325688e-01 + 1.09130672e-01 1.08935008e-01 1.08738692e-01 1.08541725e-01 1.08344104e-01 + 1.08145827e-01 1.07946894e-01 1.07747304e-01 1.07547053e-01 1.07346142e-01 + 1.07144569e-01 1.06942333e-01 1.06739431e-01 1.06535863e-01 1.06331627e-01 + 1.06126723e-01 1.05921148e-01 1.05714902e-01 1.05507982e-01 1.05300389e-01 + 1.05092120e-01 1.04883175e-01 1.04673552e-01 1.04463250e-01 1.04252268e-01 + 1.04040604e-01 1.03828258e-01 1.03615228e-01 1.03401513e-01 1.03187113e-01 + 1.02972026e-01 1.02756250e-01 1.02539786e-01 1.02322631e-01 1.02104785e-01 + 1.01886248e-01 1.01667017e-01 1.01447092e-01 1.01226473e-01 1.01005158e-01 + 1.00783146e-01 1.00560436e-01 1.00337028e-01 1.00112922e-01 9.98881150e-02 + 9.96626076e-02 9.94363989e-02 9.92094881e-02 9.89818746e-02 9.87535577e-02 + 9.85245367e-02 9.82948112e-02 9.80643804e-02 9.78332440e-02 9.76014013e-02 + 9.73688518e-02 9.71355952e-02 9.69016310e-02 9.66669588e-02 9.64315783e-02 + 9.61954891e-02 9.59586908e-02 9.57211834e-02 9.54829664e-02 9.52440398e-02 + 9.50044033e-02 9.47640568e-02 9.45230003e-02 9.42812335e-02 9.40387567e-02 + 9.37955696e-02 9.35516725e-02 9.33070653e-02 9.30617482e-02 9.28157214e-02 + 9.25689850e-02 9.23215393e-02 9.20733846e-02 9.18245212e-02 9.15749495e-02 + 9.13246699e-02 9.10736827e-02 9.08219886e-02 9.05695880e-02 9.03164816e-02 + 9.00626699e-02 8.98081536e-02 8.95529334e-02 8.92970102e-02 8.90403847e-02 + 8.87830577e-02 8.85250303e-02 8.82663032e-02 8.80068776e-02 8.77467546e-02 + 8.74859351e-02 8.72244204e-02 8.69622117e-02 8.66993103e-02 8.64357174e-02 + 8.61714345e-02 8.59064630e-02 8.56408044e-02 8.53744602e-02 8.51074320e-02 + 8.48397215e-02 8.45713304e-02 8.43022605e-02 8.40325136e-02 8.37620916e-02 + 8.34909965e-02 8.32192302e-02 8.29467950e-02 8.26736929e-02 8.23999262e-02 + 8.21254970e-02 8.18504079e-02 8.15746611e-02 8.12982592e-02 8.10212047e-02 + 8.07435002e-02 8.04651484e-02 8.01861521e-02 7.99065141e-02 7.96262372e-02 + 7.93453246e-02 7.90637791e-02 7.87816039e-02 7.84988023e-02 7.82153774e-02 + 7.79313327e-02 7.76466715e-02 7.73613974e-02 7.70755139e-02 7.67890246e-02 + 7.65019334e-02 7.62142440e-02 7.59259604e-02 7.56370865e-02 7.53476263e-02 + 7.50575841e-02 7.47669641e-02 7.44757706e-02 7.41840079e-02 7.38916807e-02 + 7.35987934e-02 7.33053507e-02 7.30113575e-02 7.27168185e-02 7.24217387e-02 + 7.21261231e-02 7.18299768e-02 7.15333051e-02 7.12361133e-02 7.09384067e-02 + 7.06401909e-02 7.03414715e-02 7.00422541e-02 6.97425446e-02 6.94423488e-02 + 6.91416728e-02 6.88405225e-02 6.85389043e-02 6.82368244e-02 6.79342891e-02 + 6.76313050e-02 6.73278787e-02 6.70240169e-02 6.67197264e-02 6.64150140e-02 + 6.61098869e-02 6.58043520e-02 6.54984168e-02 6.51920884e-02 6.48853744e-02 + 6.45782823e-02 6.42708198e-02 6.39629946e-02 6.36548146e-02 6.33462879e-02 + 6.30374225e-02 6.27282267e-02 6.24187088e-02 6.21088773e-02 6.17987406e-02 + 6.14883076e-02 6.11775870e-02 6.08665877e-02 6.05553188e-02 6.02437893e-02 + 5.99320086e-02 5.96199860e-02 5.93077311e-02 5.89952534e-02 5.86825627e-02 + 5.83696689e-02 5.80565818e-02 5.77433118e-02 5.74298688e-02 5.71162634e-02 + 5.68025058e-02 5.64886069e-02 5.61745771e-02 5.58604274e-02 5.55461687e-02 + 5.52318121e-02 5.49173687e-02 5.46028499e-02 5.42882672e-02 5.39736321e-02 + 5.36589562e-02 5.33442514e-02 5.30295296e-02 5.27148029e-02 5.24000835e-02 + 5.20853836e-02 5.17707158e-02 5.14560924e-02 5.11415263e-02 5.08270302e-02 + 5.05126170e-02 5.01982998e-02 4.98840918e-02 4.95700061e-02 4.92560564e-02 + 4.89422560e-02 4.86286186e-02 4.83151580e-02 4.80018882e-02 4.76888231e-02 + 4.73759769e-02 4.70633638e-02 4.67509982e-02 4.64388946e-02 4.61270676e-02 + 4.58155320e-02 4.55043026e-02 4.51933944e-02 4.48828225e-02 4.45726020e-02 + 4.42627483e-02 4.39532767e-02 4.36442030e-02 4.33355426e-02 4.30273114e-02 + 4.27195253e-02 4.24122002e-02 4.21053521e-02 4.17989974e-02 4.14931524e-02 + 4.11878333e-02 4.08830568e-02 4.05788395e-02 4.02751981e-02 3.99721494e-02 + 3.96697104e-02 3.93678979e-02 3.90667293e-02 3.87662217e-02 3.84663923e-02 + 3.81672586e-02 3.78688381e-02 3.75711484e-02 3.72742070e-02 3.69780319e-02 + 3.66826407e-02 3.63880515e-02 3.60942822e-02 3.58013509e-02 3.55092758e-02 + 3.52180750e-02 3.49277670e-02 3.46383700e-02 3.43499026e-02 3.40623832e-02 + 3.37758304e-02 3.34902629e-02 3.32056994e-02 3.29221586e-02 3.26396593e-02 + 3.23582205e-02 3.20778611e-02 3.17986000e-02 3.15204562e-02 3.12434489e-02 + 3.09675972e-02 3.06929202e-02 3.04194370e-02 3.01471670e-02 2.98761294e-02 + 2.96063435e-02 2.93378286e-02 2.90706040e-02 2.88046891e-02 2.85401033e-02 + 2.82768660e-02 2.80149966e-02 2.77545145e-02 2.74954392e-02 2.72377901e-02 + 2.69815866e-02 2.67268481e-02 2.64735941e-02 2.62218441e-02 2.59716174e-02 + 2.57229334e-02 2.54758115e-02 2.52302711e-02 2.49863315e-02 2.47440120e-02 + 2.45033320e-02 2.42643105e-02 2.40269669e-02 2.37913204e-02 2.35573900e-02 + 2.33251949e-02 2.30947540e-02 2.28660864e-02 2.26392110e-02 2.24141466e-02 + 2.21909120e-02 2.19695260e-02 2.17500072e-02 2.15323742e-02 2.13166455e-02 + 2.11028396e-02 2.08909747e-02 2.06810691e-02 2.04731411e-02 2.02672086e-02 + 2.00632896e-02 1.98614019e-02 1.96615634e-02 1.94637917e-02 1.92681043e-02 + 1.90745186e-02 1.88830519e-02 1.86937213e-02 1.85065440e-02 1.83215368e-02 + 1.81387165e-02 1.79580998e-02 1.77797030e-02 1.76035426e-02 1.74296348e-02 + 1.72579956e-02 1.70886409e-02 1.69215864e-02 1.67568478e-02 1.65944402e-02 + 1.64343791e-02 1.62766795e-02 1.61213562e-02 1.59684240e-02 1.58178973e-02 + 1.56697904e-02 1.55241176e-02 1.53808927e-02 1.52401295e-02 1.51018416e-02 + 1.49660422e-02 1.48327446e-02 1.47019616e-02 1.45737059e-02 1.44479901e-02 + 1.43248264e-02 1.42042269e-02 1.40862035e-02 1.39707676e-02 1.38579308e-02 + 1.37477041e-02 1.36400985e-02 1.35351246e-02 1.34327929e-02 1.33331135e-02 + 1.32360964e-02 1.31417514e-02 1.30500877e-02 1.29611147e-02 1.28748412e-02 + 1.27912760e-02 1.27104274e-02 1.26323037e-02 1.25569127e-02 1.24842620e-02 + 1.24143590e-02 1.23472109e-02 1.22828243e-02 1.22212060e-02 1.21623621e-02 + 1.21062986e-02 1.20530213e-02 1.20025356e-02 1.19548467e-02 1.19099595e-02 + 1.18678785e-02 1.18286081e-02 1.17921522e-02 1.17585148e-02 1.17276991e-02 + 1.16997084e-02 1.16745455e-02 1.16522130e-02 1.16327133e-02 1.16160484e-02 + 1.16022198e-02 1.15912292e-02 1.15830776e-02 1.15777658e-02 1.15752944e-02 + 1.15756637e-02 1.15788736e-02 1.15849238e-02 1.15938137e-02 1.16055423e-02 + 1.16201084e-02 1.16375106e-02 1.16577471e-02 1.16808156e-02 1.17067140e-02 + 1.17354395e-02 1.17669892e-02 1.18013598e-02 1.18385478e-02 1.18785493e-02 + 1.19213604e-02 1.19669765e-02 1.20153931e-02 1.20666051e-02 1.21206073e-02 + 1.21773942e-02 1.22369601e-02 1.22992988e-02 1.23644040e-02 1.24322691e-02 + 1.25028871e-02 1.25762510e-02 1.26523533e-02 1.27311863e-02 1.28127420e-02 + 1.28970121e-02 1.29839883e-02 1.30736618e-02 1.31660235e-02 1.32610642e-02 + 1.33587744e-02 1.34591444e-02 1.35621641e-02 1.36678232e-02 1.37761113e-02 + 1.38870177e-02 1.40005314e-02 1.41166411e-02 1.42353355e-02 1.43566028e-02 + 1.44804312e-02 1.46068085e-02 1.47357225e-02 1.48671606e-02 1.50011099e-02 + 1.51375576e-02 1.52764904e-02 1.54178949e-02 1.55617576e-02 1.57080646e-02 + 1.58568020e-02 1.60079555e-02 1.61615108e-02 1.63174534e-02 1.64757685e-02 + 1.66364411e-02 1.67994562e-02 1.69647985e-02 1.71324525e-02 1.73024027e-02 + 1.74746333e-02 1.76491283e-02 1.78258717e-02 1.80048472e-02 1.81860385e-02 + 1.83694290e-02 1.85550020e-02 1.87427408e-02 1.89326284e-02 1.91246477e-02 + 1.93187815e-02 1.95150125e-02 1.97133233e-02 1.99136963e-02 2.01161138e-02 + 2.03205580e-02 2.05270111e-02 2.07354551e-02 2.09458718e-02 2.11582431e-02 + 2.13725507e-02 2.15887763e-02 2.18069014e-02 2.20269075e-02 2.22487759e-02 + 2.24724880e-02 2.26980251e-02 2.29253683e-02 2.31544988e-02 2.33853976e-02 + 2.36180458e-02 2.38524242e-02 2.40885138e-02 2.43262955e-02 2.45657500e-02 + 2.48068582e-02 2.50496007e-02 2.52939584e-02 2.55399119e-02 2.57874418e-02 + 2.60365287e-02 2.62871534e-02 2.65392963e-02 2.67929381e-02 2.70480593e-02 + 2.73046406e-02 2.75626624e-02 2.78221053e-02 2.80829500e-02 2.83451769e-02 + 2.86087667e-02 2.88736999e-02 2.91399572e-02 2.94075191e-02 2.96763664e-02 + 2.99464796e-02 3.02178395e-02 3.04904267e-02 3.07642221e-02 3.10392064e-02 + 3.13153605e-02 3.15926651e-02 3.18711011e-02 3.21506496e-02 3.24312916e-02 + 3.27130079e-02 3.29957798e-02 3.32795883e-02 3.35644146e-02 3.38502401e-02 + 3.41370460e-02 3.44248137e-02 3.47135246e-02 3.50031602e-02 3.52937021e-02 + 3.55851319e-02 3.58774314e-02 3.61705823e-02 3.64645665e-02 3.67593660e-02 + 3.70549627e-02 3.73513388e-02 3.76484764e-02 3.79463579e-02 3.82449655e-02 + 3.85442817e-02 3.88442891e-02 3.91449703e-02 3.94463079e-02 3.97482849e-02 + 4.00508841e-02 4.03540886e-02 4.06578813e-02 4.09622456e-02 4.12671648e-02 + 4.15726221e-02 4.18786013e-02 4.21850858e-02 4.24920594e-02 4.27995060e-02 + 4.31074094e-02 4.34157537e-02 4.37245230e-02 4.40337017e-02 4.43432741e-02 + 4.46532246e-02 4.49635380e-02 4.52741988e-02 4.55851920e-02 4.58965024e-02 + 4.62081152e-02 4.65200155e-02 4.68321886e-02 4.71446199e-02 4.74572950e-02 + 4.77701996e-02 4.80833192e-02 4.83966400e-02 4.87101479e-02 4.90238289e-02 + 4.93376695e-02 4.96516559e-02 4.99657746e-02 5.02800123e-02 5.05943557e-02 + 5.09087917e-02 5.12233073e-02 5.15378895e-02 5.18525256e-02 5.21672030e-02 + 5.24819092e-02 5.27966317e-02 5.31113583e-02 5.34260768e-02 5.37407752e-02 + 5.40554416e-02 5.43700642e-02 5.46846314e-02 5.49991317e-02 5.53135536e-02 + 5.56278858e-02 5.59421172e-02 5.62562368e-02 5.65702336e-02 5.68840968e-02 + 5.71978158e-02 5.75113800e-02 5.78247790e-02 5.81380025e-02 5.84510402e-02 + 5.87638822e-02 5.90765185e-02 5.93889392e-02 5.97011346e-02 6.00130952e-02 + 6.03248115e-02 6.06362741e-02 6.09474738e-02 6.12584015e-02 6.15690482e-02 + 6.18794050e-02 6.21894631e-02 6.24992140e-02 6.28086489e-02 6.31177596e-02 + 6.34265377e-02 6.37349751e-02 6.40430636e-02 6.43507952e-02 6.46581622e-02 + 6.49651567e-02 6.52717712e-02 6.55779981e-02 6.58838299e-02 6.61892594e-02 + 6.64942794e-02 6.67988828e-02 6.71030625e-02 6.74068117e-02 6.77101237e-02 + 6.80129917e-02 6.83154092e-02 6.86173697e-02 6.89188669e-02 6.92198944e-02 + 6.95204462e-02 6.98205161e-02 7.01200982e-02 7.04191867e-02 7.07177757e-02 + 7.10158596e-02 7.13134329e-02 7.16104900e-02 7.19070256e-02 7.22030344e-02 + 7.24985112e-02 7.27934509e-02 7.30878484e-02 7.33816990e-02 7.36749977e-02 + 7.39677398e-02 7.42599207e-02 7.45515358e-02 7.48425807e-02 7.51330509e-02 + 7.54229421e-02 7.57122502e-02 7.60009711e-02 7.62891006e-02 7.65766348e-02 + 7.68635699e-02 7.71499020e-02 7.74356274e-02 7.77207425e-02 7.80052438e-02 + 7.82891277e-02 7.85723908e-02 7.88550299e-02 7.91370416e-02 7.94184229e-02 + 7.96991705e-02 7.99792815e-02 8.02587530e-02 8.05375820e-02 8.08157657e-02 + 8.10933015e-02 8.13701866e-02 8.16464184e-02 8.19219944e-02 8.21969122e-02 + 8.24711693e-02 8.27447635e-02 8.30176924e-02 8.32899539e-02 8.35615458e-02 + 8.38324661e-02 8.41027128e-02 8.43722839e-02 8.46411775e-02 8.49093918e-02 + 8.51769250e-02 8.54437756e-02 8.57099417e-02 8.59754218e-02 8.62402144e-02 + 8.65043180e-02 8.67677312e-02 8.70304527e-02 8.72924810e-02 8.75538151e-02 + 8.78144536e-02 8.80743954e-02 8.83336395e-02 8.85921847e-02 8.88500302e-02 + 8.91071748e-02 8.93636178e-02 8.96193583e-02 8.98743956e-02 9.01287287e-02 + 9.03823571e-02 9.06352801e-02 9.08874971e-02 9.11390074e-02 9.13898107e-02 + 9.16399063e-02 9.18892939e-02 9.21379731e-02 9.23859434e-02 9.26332047e-02 + 9.28797566e-02 9.31255989e-02 9.33707315e-02 9.36151540e-02 9.38588666e-02 + 9.41018690e-02 9.43441612e-02 9.45857433e-02 9.48266152e-02 9.50667771e-02 + 9.53062290e-02 9.55449711e-02 9.57830036e-02 9.60203266e-02 9.62569405e-02 + 9.64928454e-02 9.67280417e-02 9.69625298e-02 9.71963100e-02 9.74293827e-02 + 9.76617483e-02 9.78934074e-02 9.81243603e-02 9.83546076e-02 9.85841499e-02 + 9.88129878e-02 9.90411218e-02 9.92685525e-02 9.94952807e-02 9.97213070e-02 + 9.99466321e-02 1.00171257e-01 1.00395182e-01 1.00618408e-01 1.00840936e-01 + 1.01062766e-01 1.01283901e-01 1.01504340e-01 1.01724084e-01 1.01943134e-01 + 1.02161492e-01 1.02379158e-01 1.02596133e-01 1.02812418e-01 1.03028014e-01 + 1.03242923e-01 1.03457145e-01 1.03670682e-01 1.03883534e-01 1.04095702e-01 + 1.04307189e-01 1.04517994e-01 1.04728119e-01 1.04937566e-01 1.05146335e-01 + 1.05354428e-01 1.05561846e-01 1.05768590e-01 1.05974662e-01 1.06180062e-01 + 1.06384793e-01 1.06588855e-01 1.06792249e-01 1.06994978e-01 1.07197042e-01 + 1.07398443e-01 1.07599182e-01 1.07799261e-01 1.07998680e-01 1.08197442e-01 + 1.08395548e-01 1.08592999e-01 1.08789797e-01 1.08985943e-01 1.09181439e-01 + 1.09376286e-01 1.09570485e-01 1.09764039e-01 1.09956948e-01 1.10149214e-01 + 1.10340840e-01 1.10531825e-01 1.10722172e-01 1.10911883e-01 1.11100959e-01 + 1.11289401e-01 1.11477211e-01 1.11664391e-01 1.11850942e-01 1.12036866e-01 + 1.12222165e-01 1.12406840e-01 1.12590892e-01 1.12774325e-01 1.12957138e-01 + 1.13139333e-01 1.13320913e-01 1.13501880e-01 1.13682233e-01 1.13861976e-01 + 1.14041111e-01 1.14219637e-01 1.14397559e-01 1.14574876e-01 1.14751591e-01 + 1.14927705e-01 1.15103221e-01 1.15278139e-01 1.15452462e-01 1.15626191e-01 + 1.15799328e-01 1.15971875e-01 1.16143834e-01 1.16315205e-01 1.16485991e-01 + 1.16656194e-01 1.16825815e-01 1.16994856e-01 1.17163320e-01 1.17331206e-01 + 1.17498518e-01 1.17665257e-01 1.17831424e-01 1.17997022e-01 1.18162053e-01 + 1.18326517e-01 1.18490417e-01 1.18653754e-01 1.18816531e-01 1.18978749e-01 + 1.19140409e-01 1.19301514e-01 1.19462065e-01 1.19622064e-01 1.19781513e-01 + 1.19940414e-01 1.20098767e-01 1.20256576e-01 1.20413841e-01 1.20570565e-01 + 1.20726749e-01 1.20882395e-01 1.21037505e-01 1.21192080e-01 1.21346123e-01 + 1.21499635e-01 1.21652617e-01 1.21805072e-01 1.21957001e-01 1.22108406e-01 + 1.22259289e-01 1.22409651e-01 1.22559495e-01 1.22708821e-01 1.22857632e-01 + 1.23005930e-01 1.23153715e-01 1.23300991e-01 1.23447758e-01 1.23594019e-01 + 1.23739774e-01 1.23885027e-01 1.24029777e-01 1.24174028e-01 1.24317781e-01 + 1.24461038e-01 1.24603800e-01 1.24746069e-01 1.24887847e-01 1.25029136e-01 + 1.25169936e-01 1.25310251e-01 1.25450081e-01 1.25589428e-01 1.25728294e-01 + 1.25866681e-01 1.26004590e-01 1.26142024e-01 1.26278983e-01 1.26415469e-01 + 1.26551484e-01 1.26687030e-01 1.26822109e-01 1.26956721e-01 1.27090870e-01 + 1.27224555e-01 1.27357780e-01 1.27490545e-01 1.27622852e-01 1.27754704e-01 + 1.27886101e-01 1.28017045e-01 1.28147538e-01 1.28277582e-01 1.28407177e-01 + 1.28536327e-01 1.28665031e-01 1.28793293e-01 1.28921113e-01 1.29048493e-01 + 1.29175435e-01 1.29301941e-01 1.29428011e-01 1.29553648e-01 1.29678853e-01 + 1.29803627e-01 1.29927973e-01 1.30051892e-01 1.30175385e-01 1.30298454e-01 + 1.30421101e-01 1.30543327e-01 1.30665133e-01 1.30786522e-01 1.30907494e-01 + 1.31028051e-01 1.31148196e-01 1.31267929e-01 1.31387251e-01 1.31506165e-01 + 1.31624672e-01 1.31742773e-01 1.31860470e-01 1.31977765e-01 1.32094658e-01 + 1.32211152e-01 1.32327248e-01 1.32442947e-01 1.32558252e-01 1.32673162e-01 + 1.32787680e-01 1.32901808e-01 1.33015546e-01 1.33128897e-01 1.33241861e-01 + 1.33354441e-01 1.33466637e-01 1.33578451e-01 1.33689884e-01 1.33800939e-01 + 1.33911615e-01 1.34021916e-01 1.34131841e-01 1.34241394e-01 1.34350574e-01 + 1.34459383e-01 1.34567824e-01 1.34675896e-01 1.34783602e-01 1.34890944e-01 + 1.34997921e-01 1.35104536e-01 1.35210791e-01 1.35316685e-01 1.35422222e-01 + 1.35527402e-01 1.35632226e-01 1.35736697e-01 1.35840814e-01 1.35944580e-01 + 1.36047997e-01 1.36151064e-01 1.36253784e-01 1.36356158e-01 1.36458187e-01 + 1.36559873e-01 1.36661216e-01 1.36762219e-01 1.36862882e-01 1.36963207e-01 + 1.37063195e-01 1.37162847e-01 1.37262165e-01 1.37361150e-01 1.37459803e-01 + 1.37558126e-01 1.37656119e-01 1.37753784e-01 1.37851123e-01 1.37948136e-01 + 1.38044824e-01 1.38141190e-01 1.38237233e-01 1.38332957e-01 1.38428361e-01 + 1.38523446e-01 1.38618215e-01 1.38712668e-01 1.38806807e-01 1.38900633e-01 + 1.38994146e-01 1.39087349e-01 1.39180241e-01 1.39272826e-01 1.39365103e-01 + 1.39457074e-01 1.39548740e-01 1.39640102e-01 1.39731162e-01 1.39821920e-01 + 1.39912378e-01 1.40002537e-01 1.40092398e-01 1.40181961e-01 1.40271230e-01 + 1.40360203e-01 1.40448884e-01 1.40537272e-01 1.40625368e-01 1.40713175e-01 + 1.40800693e-01 1.40887923e-01 1.40974866e-01 1.41061523e-01 1.41147896e-01 + 1.41233986e-01 1.41319793e-01 1.41405319e-01 1.41490565e-01 1.41575532e-01 + 1.41660220e-01 1.41744632e-01 1.41828768e-01 1.41912628e-01 1.41996216e-01 + 1.42079530e-01 1.42162572e-01 1.42245344e-01 1.42327847e-01 1.42410081e-01 + 1.42492047e-01 1.42573747e-01 1.42655181e-01 1.42736351e-01 1.42817257e-01 + 1.42897901e-01 1.42978283e-01 1.43058405e-01 1.43138268e-01 1.43217872e-01 + 1.43297218e-01 1.43376309e-01 1.43455143e-01 1.43533723e-01 1.43612050e-01 + 1.43690124e-01 1.43767947e-01 1.43845519e-01 1.43922841e-01 1.43999914e-01 + 1.44076740e-01 1.44153319e-01 1.44229652e-01 1.44305740e-01 1.44381584e-01 + 1.44457185e-01 1.44532544e-01 1.44607662e-01 1.44682539e-01 1.44757177e-01 + 1.44831577e-01 1.44905739e-01 1.44979665e-01 1.45053355e-01 1.45126809e-01 + 1.45200031e-01 1.45273019e-01 1.45345774e-01 1.45418299e-01 1.45490593e-01 + 1.45562658e-01 1.45634494e-01 1.45706102e-01 1.45777484e-01 1.45848639e-01 + 1.45919569e-01 1.45990275e-01 1.46060758e-01 1.46131018e-01 1.46201056e-01 + 1.46270873e-01 1.46340470e-01 1.46409848e-01 1.46479008e-01 1.46547950e-01 + 1.46616675e-01 1.46685184e-01 1.46753479e-01 1.46821558e-01 1.46889425e-01 + 1.46957079e-01 1.47024520e-01 1.47091751e-01 1.47158772e-01 1.47225583e-01 + 1.47292185e-01 1.47358580e-01 1.47424768e-01 1.47490749e-01 1.47556524e-01 + 1.47622095e-01 1.47687462e-01 1.47752626e-01 1.47817587e-01 1.47882347e-01 + 1.38518338e-01 1.38476565e-01 1.38434740e-01 1.38392864e-01 1.38350938e-01 + 1.38308960e-01 1.38266931e-01 1.38224851e-01 1.38182720e-01 1.38140538e-01 + 1.38098305e-01 1.38056020e-01 1.38013684e-01 1.37971296e-01 1.37928857e-01 + 1.37886366e-01 1.37843824e-01 1.37801230e-01 1.37758585e-01 1.37715888e-01 + 1.37673139e-01 1.37630338e-01 1.37587486e-01 1.37544581e-01 1.37501625e-01 + 1.37458617e-01 1.37415556e-01 1.37372444e-01 1.37329279e-01 1.37286062e-01 + 1.37242794e-01 1.37199472e-01 1.37156099e-01 1.37112673e-01 1.37069195e-01 + 1.37025664e-01 1.36982081e-01 1.36938445e-01 1.36894757e-01 1.36851016e-01 + 1.36807222e-01 1.36763376e-01 1.36719477e-01 1.36675525e-01 1.36631520e-01 + 1.36587463e-01 1.36543352e-01 1.36499189e-01 1.36454972e-01 1.36410702e-01 + 1.36366380e-01 1.36322004e-01 1.36277574e-01 1.36233092e-01 1.36188556e-01 + 1.36143967e-01 1.36099325e-01 1.36054629e-01 1.36009880e-01 1.35965077e-01 + 1.35920221e-01 1.35875311e-01 1.35830347e-01 1.35785330e-01 1.35740259e-01 + 1.35695134e-01 1.35649956e-01 1.35604723e-01 1.35559437e-01 1.35514096e-01 + 1.35468702e-01 1.35423254e-01 1.35377752e-01 1.35332195e-01 1.35286585e-01 + 1.35240920e-01 1.35195201e-01 1.35149428e-01 1.35103600e-01 1.35057718e-01 + 1.35011782e-01 1.34965791e-01 1.34919746e-01 1.34873646e-01 1.34827492e-01 + 1.34781283e-01 1.34735020e-01 1.34688702e-01 1.34642329e-01 1.34595901e-01 + 1.34549419e-01 1.34502882e-01 1.34456290e-01 1.34409643e-01 1.34362941e-01 + 1.34316184e-01 1.34269372e-01 1.34222505e-01 1.34175583e-01 1.34128606e-01 + 1.34081573e-01 1.34034486e-01 1.33987343e-01 1.33940145e-01 1.33892892e-01 + 1.33845583e-01 1.33798219e-01 1.33750799e-01 1.33703324e-01 1.33655794e-01 + 1.33608207e-01 1.33560566e-01 1.33512869e-01 1.33465116e-01 1.33417307e-01 + 1.33369443e-01 1.33321523e-01 1.33273547e-01 1.33225515e-01 1.33177428e-01 + 1.33129285e-01 1.33081085e-01 1.33032830e-01 1.32984519e-01 1.32936152e-01 + 1.32887728e-01 1.32839249e-01 1.32790713e-01 1.32742122e-01 1.32693474e-01 + 1.32644770e-01 1.32596010e-01 1.32547193e-01 1.32498320e-01 1.32449391e-01 + 1.32400405e-01 1.32351363e-01 1.32302265e-01 1.32253110e-01 1.32203899e-01 + 1.32154631e-01 1.32105306e-01 1.32055925e-01 1.32006488e-01 1.31956993e-01 + 1.31907442e-01 1.31857835e-01 1.31808170e-01 1.31758449e-01 1.31708671e-01 + 1.31658836e-01 1.31608945e-01 1.31558996e-01 1.31508991e-01 1.31458929e-01 + 1.31408809e-01 1.31358633e-01 1.31308400e-01 1.31258110e-01 1.31207762e-01 + 1.31157358e-01 1.31106897e-01 1.31056378e-01 1.31005802e-01 1.30955169e-01 + 1.30904479e-01 1.30853732e-01 1.30802927e-01 1.30752065e-01 1.30701146e-01 + 1.30650170e-01 1.30599136e-01 1.30548045e-01 1.30496896e-01 1.30445690e-01 + 1.30394426e-01 1.30343106e-01 1.30291727e-01 1.30240291e-01 1.30188798e-01 + 1.30137247e-01 1.30085639e-01 1.30033973e-01 1.29982249e-01 1.29930468e-01 + 1.29878629e-01 1.29826732e-01 1.29774778e-01 1.29722766e-01 1.29670696e-01 + 1.29618569e-01 1.29566384e-01 1.29514141e-01 1.29461841e-01 1.29409482e-01 + 1.29357066e-01 1.29304592e-01 1.29252060e-01 1.29199470e-01 1.29146823e-01 + 1.29094117e-01 1.29041354e-01 1.28988533e-01 1.28935654e-01 1.28882717e-01 + 1.28829721e-01 1.28776668e-01 1.28723557e-01 1.28670388e-01 1.28617161e-01 + 1.28563876e-01 1.28510533e-01 1.28457132e-01 1.28403673e-01 1.28350156e-01 + 1.28296581e-01 1.28242948e-01 1.28189256e-01 1.28135507e-01 1.28081699e-01 + 1.28027834e-01 1.27973910e-01 1.27919928e-01 1.27865888e-01 1.27811790e-01 + 1.27757634e-01 1.27703420e-01 1.27649147e-01 1.27594816e-01 1.27540427e-01 + 1.27485980e-01 1.27431475e-01 1.27376912e-01 1.27322290e-01 1.27267611e-01 + 1.27212873e-01 1.27158077e-01 1.27103223e-01 1.27048310e-01 1.26993340e-01 + 1.26938311e-01 1.26883224e-01 1.26828079e-01 1.26772875e-01 1.26717614e-01 + 1.26662294e-01 1.26606916e-01 1.26551480e-01 1.26495986e-01 1.26440433e-01 + 1.26384823e-01 1.26329154e-01 1.26273427e-01 1.26217642e-01 1.26161799e-01 + 1.26105898e-01 1.26049938e-01 1.25993920e-01 1.25937845e-01 1.25881711e-01 + 1.25825519e-01 1.25769269e-01 1.25712961e-01 1.25656594e-01 1.25600170e-01 + 1.25543688e-01 1.25487147e-01 1.25430549e-01 1.25373892e-01 1.25317178e-01 + 1.25260405e-01 1.25203574e-01 1.25146686e-01 1.25089739e-01 1.25032735e-01 + 1.24975672e-01 1.24918552e-01 1.24861374e-01 1.24804137e-01 1.24746843e-01 + 1.24689491e-01 1.24632082e-01 1.24574614e-01 1.24517089e-01 1.24459505e-01 + 1.24401864e-01 1.24344166e-01 1.24286409e-01 1.24228595e-01 1.24170723e-01 + 1.24112794e-01 1.24054806e-01 1.23996762e-01 1.23938659e-01 1.23880499e-01 + 1.23822281e-01 1.23764006e-01 1.23705674e-01 1.23647284e-01 1.23588836e-01 + 1.23530331e-01 1.23471769e-01 1.23413149e-01 1.23354472e-01 1.23295737e-01 + 1.23236946e-01 1.23178097e-01 1.23119190e-01 1.23060227e-01 1.23001206e-01 + 1.22942129e-01 1.22882994e-01 1.22823802e-01 1.22764553e-01 1.22705247e-01 + 1.22645884e-01 1.22586464e-01 1.22526988e-01 1.22467454e-01 1.22407864e-01 + 1.22348217e-01 1.22288513e-01 1.22228752e-01 1.22168935e-01 1.22109061e-01 + 1.22049130e-01 1.21989143e-01 1.21929100e-01 1.21869000e-01 1.21808843e-01 + 1.21748630e-01 1.21688361e-01 1.21628036e-01 1.21567654e-01 1.21507216e-01 + 1.21446722e-01 1.21386172e-01 1.21325566e-01 1.21264904e-01 1.21204185e-01 + 1.21143411e-01 1.21082581e-01 1.21021696e-01 1.20960754e-01 1.20899757e-01 + 1.20838704e-01 1.20777596e-01 1.20716432e-01 1.20655212e-01 1.20593937e-01 + 1.20532607e-01 1.20471221e-01 1.20409780e-01 1.20348284e-01 1.20286733e-01 + 1.20225127e-01 1.20163465e-01 1.20101749e-01 1.20039978e-01 1.19978152e-01 + 1.19916271e-01 1.19854335e-01 1.19792345e-01 1.19730300e-01 1.19668200e-01 + 1.19606047e-01 1.19543838e-01 1.19481576e-01 1.19419259e-01 1.19356888e-01 + 1.19294463e-01 1.19231984e-01 1.19169450e-01 1.19106863e-01 1.19044222e-01 + 1.18981528e-01 1.18918779e-01 1.18855977e-01 1.18793122e-01 1.18730213e-01 + 1.18667250e-01 1.18604235e-01 1.18541166e-01 1.18478043e-01 1.18414868e-01 + 1.18351640e-01 1.18288359e-01 1.18225025e-01 1.18161638e-01 1.18098199e-01 + 1.18034707e-01 1.17971163e-01 1.17907566e-01 1.17843917e-01 1.17780216e-01 + 1.17716462e-01 1.17652656e-01 1.17588799e-01 1.17524889e-01 1.17460928e-01 + 1.17396915e-01 1.17332851e-01 1.17268735e-01 1.17204567e-01 1.17140349e-01 + 1.17076079e-01 1.17011757e-01 1.16947385e-01 1.16882962e-01 1.16818488e-01 + 1.16753964e-01 1.16689388e-01 1.16624762e-01 1.16560086e-01 1.16495360e-01 + 1.16430583e-01 1.16365756e-01 1.16300879e-01 1.16235952e-01 1.16170975e-01 + 1.16105949e-01 1.16040873e-01 1.15975748e-01 1.15910573e-01 1.15845349e-01 + 1.15780076e-01 1.15714754e-01 1.15649383e-01 1.15583963e-01 1.15518494e-01 + 1.15452977e-01 1.15387412e-01 1.15321798e-01 1.15256136e-01 1.15190426e-01 + 1.15124668e-01 1.15058862e-01 1.14993008e-01 1.14927107e-01 1.14861158e-01 + 1.14795162e-01 1.14729119e-01 1.14663029e-01 1.14596892e-01 1.14530707e-01 + 1.14464477e-01 1.14398199e-01 1.14331875e-01 1.14265505e-01 1.14199089e-01 + 1.14132627e-01 1.14066119e-01 1.13999565e-01 1.13932965e-01 1.13866320e-01 + 1.13799630e-01 1.13732894e-01 1.13666113e-01 1.13599288e-01 1.13532417e-01 + 1.13465503e-01 1.13398543e-01 1.13331539e-01 1.13264491e-01 1.13197399e-01 + 1.13130263e-01 1.13063084e-01 1.12995861e-01 1.12928594e-01 1.12861284e-01 + 1.12793931e-01 1.12726535e-01 1.12659096e-01 1.12591615e-01 1.12524091e-01 + 1.12456524e-01 1.12388916e-01 1.12321265e-01 1.12253573e-01 1.12185839e-01 + 1.12118063e-01 1.12050246e-01 1.11982388e-01 1.11914489e-01 1.11846549e-01 + 1.11778568e-01 1.11710547e-01 1.11642485e-01 1.11574383e-01 1.11506242e-01 + 1.11438060e-01 1.11369839e-01 1.11301578e-01 1.11233278e-01 1.11164939e-01 + 1.11096561e-01 1.11028144e-01 1.10959689e-01 1.10891195e-01 1.10822663e-01 + 1.10754093e-01 1.10685486e-01 1.10616840e-01 1.10548157e-01 1.10479437e-01 + 1.10410680e-01 1.10341886e-01 1.10273055e-01 1.10204188e-01 1.10135284e-01 + 1.10066345e-01 1.09997369e-01 1.09928358e-01 1.09859311e-01 1.09790229e-01 + 1.09721112e-01 1.09651960e-01 1.09582773e-01 1.09513552e-01 1.09444296e-01 + 1.09375007e-01 1.09305683e-01 1.09236326e-01 1.09166936e-01 1.09097512e-01 + 1.09028055e-01 1.08958566e-01 1.08889044e-01 1.08819489e-01 1.08749902e-01 + 1.08680284e-01 1.08610634e-01 1.08540952e-01 1.08471239e-01 1.08401495e-01 + 1.08331720e-01 1.08261914e-01 1.08192078e-01 1.08122212e-01 1.08052316e-01 + 1.07982391e-01 1.07912436e-01 1.07842452e-01 1.07772438e-01 1.07702397e-01 + 1.07632326e-01 1.07562227e-01 1.07492101e-01 1.07421946e-01 1.07351764e-01 + 1.07281555e-01 1.07211318e-01 1.07141055e-01 1.07070766e-01 1.07000449e-01 + 1.06930107e-01 1.06859739e-01 1.06789346e-01 1.06718927e-01 1.06648483e-01 + 1.06578015e-01 1.06507521e-01 1.06437004e-01 1.06366462e-01 1.06295897e-01 + 1.06225308e-01 1.06154696e-01 1.06084061e-01 1.06013403e-01 1.05942723e-01 + 1.05872021e-01 1.05801296e-01 1.05730551e-01 1.05659783e-01 1.05588995e-01 + 1.05518186e-01 1.05447356e-01 1.05376506e-01 1.05305636e-01 1.05234746e-01 + 1.05163837e-01 1.05092908e-01 1.05021961e-01 1.04950995e-01 1.04880011e-01 + 1.04809009e-01 1.04737989e-01 1.04666951e-01 1.04595897e-01 1.04524826e-01 + 1.04453738e-01 1.04382633e-01 1.04311513e-01 1.04240377e-01 1.04169226e-01 + 1.04098060e-01 1.04026878e-01 1.03955683e-01 1.03884473e-01 1.03813249e-01 + 1.03742012e-01 1.03670761e-01 1.03599498e-01 1.03528222e-01 1.03456933e-01 + 1.03385633e-01 1.03314321e-01 1.03242997e-01 1.03171662e-01 1.03100317e-01 + 1.03028961e-01 1.02957595e-01 1.02886219e-01 1.02814833e-01 1.02743439e-01 + 1.02672036e-01 1.02600624e-01 1.02529204e-01 1.02457776e-01 1.02386340e-01 + 1.02314898e-01 1.02243448e-01 1.02171992e-01 1.02100530e-01 1.02029062e-01 + 1.01957589e-01 1.01886110e-01 1.01814626e-01 1.01743138e-01 1.01671646e-01 + 1.01600150e-01 1.01528651e-01 1.01457148e-01 1.01385643e-01 1.01314135e-01 + 1.01242625e-01 1.01171114e-01 1.01099601e-01 1.01028087e-01 1.00956573e-01 + 1.00885058e-01 1.00813543e-01 1.00742029e-01 1.00670515e-01 1.00599003e-01 + 1.00527492e-01 1.00455983e-01 1.00384477e-01 1.00312973e-01 1.00241472e-01 + 1.00169974e-01 1.00098480e-01 1.00026990e-01 9.99555050e-02 9.98840245e-02 + 9.98125493e-02 9.97410797e-02 9.96696161e-02 9.95981588e-02 9.95267084e-02 + 9.94552650e-02 9.93838292e-02 9.93124014e-02 9.92409818e-02 9.91695709e-02 + 9.90981691e-02 9.90267768e-02 9.89553944e-02 9.88840222e-02 9.88126607e-02 + 9.87413103e-02 9.86699713e-02 9.85986441e-02 9.85273293e-02 9.84560271e-02 + 9.83847379e-02 9.83134622e-02 9.82422004e-02 9.81709529e-02 9.80997201e-02 + 9.80285023e-02 9.79573001e-02 9.78861138e-02 9.78149439e-02 9.77437907e-02 + 9.76726547e-02 9.76015362e-02 9.75304358e-02 9.74593538e-02 9.73882907e-02 + 9.73172468e-02 9.72462226e-02 9.71752186e-02 9.71042351e-02 9.70332725e-02 + 9.69623314e-02 9.68914121e-02 9.68205151e-02 9.67496408e-02 9.66787897e-02 + 9.66079621e-02 9.65371585e-02 9.64663793e-02 9.63956251e-02 9.63248961e-02 + 9.62541930e-02 9.61835160e-02 9.61128657e-02 9.60422425e-02 9.59716469e-02 + 9.59010792e-02 9.58305400e-02 9.57600297e-02 9.56895487e-02 9.56190976e-02 + 9.55486767e-02 9.54782865e-02 9.54079274e-02 9.53376000e-02 9.52673047e-02 + 9.51970419e-02 9.51268121e-02 9.50566158e-02 9.49864534e-02 9.49163254e-02 + 9.48462322e-02 9.47761744e-02 9.47061524e-02 9.46361667e-02 9.45662176e-02 + 9.44963058e-02 9.44264317e-02 9.43565957e-02 9.42867984e-02 9.42170402e-02 + 9.41473215e-02 9.40776429e-02 9.40080049e-02 9.39384078e-02 9.38688523e-02 + 9.37993388e-02 9.37298677e-02 9.36604397e-02 9.35910550e-02 9.35217143e-02 + 9.34524180e-02 9.33831666e-02 9.33139606e-02 9.32448006e-02 9.31756869e-02 + 9.31066201e-02 9.30376006e-02 9.29686291e-02 9.28997059e-02 9.28308316e-02 + 9.27620066e-02 9.26932315e-02 9.26245068e-02 9.25558330e-02 9.24872106e-02 + 9.24186400e-02 9.23501218e-02 9.22816566e-02 9.22132447e-02 9.21448867e-02 + 9.20765832e-02 9.20083346e-02 9.19401414e-02 9.18720042e-02 9.18039235e-02 + 9.17358998e-02 9.16679335e-02 9.16000253e-02 9.15321756e-02 9.14643850e-02 + 9.13966540e-02 9.13289830e-02 9.12613727e-02 9.11938235e-02 9.11263360e-02 + 9.10589106e-02 9.09915480e-02 9.09242486e-02 9.08570130e-02 9.07898417e-02 + 9.07227352e-02 9.06556940e-02 9.05887187e-02 9.05218099e-02 9.04549680e-02 + 9.03881935e-02 9.03214871e-02 9.02548492e-02 9.01882804e-02 9.01217813e-02 + 9.00553522e-02 8.99889939e-02 8.99227068e-02 8.98564915e-02 8.97903485e-02 + 8.97242783e-02 8.96582816e-02 8.95923588e-02 8.95265104e-02 8.94607371e-02 + 8.93950394e-02 8.93294177e-02 8.92638728e-02 8.91984050e-02 8.91330150e-02 + 8.90677033e-02 8.90024705e-02 8.89373170e-02 8.88722435e-02 8.88072505e-02 + 8.87423386e-02 8.86775083e-02 8.86127602e-02 8.85480947e-02 8.84835126e-02 + 8.84190142e-02 8.83546003e-02 8.82902712e-02 8.82260277e-02 8.81618702e-02 + 8.80977994e-02 8.80338157e-02 8.79699197e-02 8.79061120e-02 8.78423932e-02 + 8.77787637e-02 8.77152243e-02 8.76517753e-02 8.75884175e-02 8.75251513e-02 + 8.74619773e-02 8.73988961e-02 8.73359083e-02 8.72730143e-02 8.72102149e-02 + 8.71475104e-02 8.70849016e-02 8.70223890e-02 8.69599731e-02 8.68976544e-02 + 8.68354337e-02 8.67733114e-02 8.67112881e-02 8.66493644e-02 8.65875409e-02 + 8.65258180e-02 8.64641964e-02 8.64026767e-02 8.63412594e-02 8.62799451e-02 + 8.62187344e-02 8.61576278e-02 8.60966259e-02 8.60357293e-02 8.59749386e-02 + 8.59142542e-02 8.58536769e-02 8.57932071e-02 8.57328455e-02 8.56725925e-02 + 8.56124489e-02 8.55524151e-02 8.54924918e-02 8.54326794e-02 8.53729787e-02 + 8.53133900e-02 8.52539141e-02 8.51945515e-02 8.51353028e-02 8.50761685e-02 + 8.50171493e-02 8.49582456e-02 8.48994581e-02 8.48407874e-02 8.47822340e-02 + 8.47237984e-02 8.46654813e-02 8.46072833e-02 8.45492049e-02 8.44912466e-02 + 8.44334092e-02 8.43756930e-02 8.43180988e-02 8.42606271e-02 8.42032784e-02 + 8.41460533e-02 8.40889525e-02 8.40319764e-02 8.39751257e-02 8.39184009e-02 + 8.38618026e-02 8.38053314e-02 8.37489878e-02 8.36927724e-02 8.36366859e-02 + 8.35807286e-02 8.35249013e-02 8.34692046e-02 8.34136388e-02 8.33582048e-02 + 8.33029029e-02 8.32477338e-02 8.31926981e-02 8.31377963e-02 8.30830290e-02 + 8.30283967e-02 8.29739001e-02 8.29195397e-02 8.28653161e-02 8.28112297e-02 + 8.27572813e-02 8.27034714e-02 8.26498005e-02 8.25962691e-02 8.25428780e-02 + 8.24896276e-02 8.24365184e-02 8.23835511e-02 8.23307263e-02 8.22780444e-02 + 8.22255060e-02 8.21731118e-02 8.21208622e-02 8.20687579e-02 8.20167993e-02 + 8.19649871e-02 8.19133218e-02 8.18618039e-02 8.18104341e-02 8.17592128e-02 + 8.17081407e-02 8.16572182e-02 8.16064460e-02 8.15558245e-02 8.15053545e-02 + 8.14550363e-02 8.14048705e-02 8.13548578e-02 8.13049986e-02 8.12552935e-02 + 8.12057430e-02 8.11563478e-02 8.11071082e-02 8.10580250e-02 8.10090986e-02 + 8.09603295e-02 8.09117184e-02 8.08632657e-02 8.08149721e-02 8.07668379e-02 + 8.07188639e-02 8.06710504e-02 8.06233982e-02 8.05759075e-02 8.05285792e-02 + 8.04814136e-02 8.04344112e-02 8.03875727e-02 8.03408986e-02 8.02943893e-02 + 8.02480455e-02 8.02018675e-02 8.01558561e-02 8.01100116e-02 8.00643347e-02 + 8.00188258e-02 7.99734855e-02 7.99283142e-02 7.98833126e-02 7.98384810e-02 + 7.97938201e-02 7.97493304e-02 7.97050123e-02 7.96608664e-02 7.96168932e-02 + 7.95730933e-02 7.95294670e-02 7.94860149e-02 7.94427376e-02 7.93996355e-02 + 7.93567091e-02 7.93139590e-02 7.92713856e-02 7.92289895e-02 7.91867711e-02 + 7.91447310e-02 7.91028695e-02 7.90611873e-02 7.90196849e-02 7.89783626e-02 + 7.89372210e-02 7.88962607e-02 7.88554819e-02 7.88148854e-02 7.87744715e-02 + 7.87342407e-02 7.86941935e-02 7.86543304e-02 7.86146519e-02 7.85751584e-02 + 7.85358504e-02 7.84967284e-02 7.84577929e-02 7.84190442e-02 7.83804830e-02 + 7.83421096e-02 7.83039245e-02 7.82659282e-02 7.82281212e-02 7.81905038e-02 + 7.81530766e-02 7.81158400e-02 7.80787945e-02 7.80419405e-02 7.80052784e-02 + 7.79688088e-02 7.79325320e-02 7.78964485e-02 7.78605587e-02 7.78248631e-02 + 7.77893622e-02 7.77540563e-02 7.77189459e-02 7.76840314e-02 7.76493132e-02 + 7.76147919e-02 7.75804677e-02 7.75463412e-02 7.75124127e-02 7.74786828e-02 + 7.74451517e-02 7.74118199e-02 7.73786878e-02 7.73457559e-02 7.73130245e-02 + 7.72804941e-02 7.72481650e-02 7.72160377e-02 7.71841125e-02 7.71523900e-02 + 7.71208703e-02 7.70895541e-02 7.70584416e-02 7.70275332e-02 7.69968293e-02 + 7.69663304e-02 7.69360368e-02 7.69059488e-02 7.68760670e-02 7.68463915e-02 + 7.68169229e-02 7.67876614e-02 7.67586075e-02 7.67297616e-02 7.67011239e-02 + 7.66726949e-02 7.66444749e-02 7.66164642e-02 7.65886633e-02 7.65610725e-02 + 7.65336921e-02 7.65065225e-02 7.64795641e-02 7.64528171e-02 7.64262819e-02 + 7.63999589e-02 7.63738484e-02 7.63479508e-02 7.63222662e-02 7.62967952e-02 + 7.62715380e-02 7.62464950e-02 7.62216664e-02 7.61970526e-02 7.61726539e-02 + 7.61484706e-02 7.61245031e-02 7.61007516e-02 7.60772164e-02 7.60538979e-02 + 7.60307964e-02 7.60079121e-02 7.59852453e-02 7.59627964e-02 7.59405657e-02 + 7.59185533e-02 7.58967597e-02 7.58751851e-02 7.58538297e-02 7.58326939e-02 + 7.58117779e-02 7.57910820e-02 7.57706065e-02 7.57503516e-02 7.57303176e-02 + 7.57105048e-02 7.56909134e-02 7.56715437e-02 7.56523959e-02 7.56334703e-02 + 7.56147671e-02 7.55962866e-02 7.55780290e-02 7.55599946e-02 7.55421835e-02 + 7.55245961e-02 7.55072326e-02 7.54900931e-02 7.54731780e-02 7.54564874e-02 + 7.54400215e-02 7.54237806e-02 7.54077649e-02 7.53919746e-02 7.53764099e-02 + 7.53610711e-02 7.53459582e-02 7.53310716e-02 7.53164113e-02 7.53019777e-02 + 7.52877708e-02 7.52737910e-02 7.52600383e-02 7.52465130e-02 7.52332152e-02 + 7.52201451e-02 7.52073028e-02 7.51946887e-02 7.51823027e-02 7.51701451e-02 + 7.51582161e-02 7.51465158e-02 7.51350443e-02 7.51238019e-02 7.51127886e-02 + 7.51020046e-02 7.50914500e-02 7.50811251e-02 7.50710299e-02 7.50611645e-02 + 7.50515291e-02 7.50421239e-02 7.50329489e-02 7.50240043e-02 7.50152901e-02 + 7.50068066e-02 7.49985538e-02 7.49905318e-02 7.49827407e-02 7.49751807e-02 + 7.49678518e-02 7.49607542e-02 7.49538879e-02 7.49472530e-02 7.49408496e-02 + 7.49346779e-02 7.49287378e-02 7.49230295e-02 7.49175530e-02 7.49123084e-02 + 7.49072958e-02 7.49025153e-02 7.48979669e-02 7.48936506e-02 7.48895666e-02 + 7.48857148e-02 7.48820954e-02 7.48787084e-02 7.48755538e-02 7.48726317e-02 + 7.48699421e-02 7.48674851e-02 7.48652606e-02 7.48632687e-02 7.48615095e-02 + 7.48599830e-02 7.48586891e-02 7.48576279e-02 7.48567994e-02 7.48562037e-02 + 7.48558407e-02 7.48557104e-02 7.48558129e-02 7.48561481e-02 7.48567160e-02 + 7.48575167e-02 7.48585501e-02 7.48598162e-02 7.48613149e-02 7.48630464e-02 + 7.48650104e-02 7.48672071e-02 7.48696364e-02 7.48722982e-02 7.48751926e-02 + 7.48783194e-02 7.48816786e-02 7.48852703e-02 7.48890943e-02 7.48931506e-02 + 7.48974391e-02 7.49019598e-02 7.49067126e-02 7.49116975e-02 7.49169143e-02 + 7.49223631e-02 7.49280438e-02 7.49339562e-02 7.49401003e-02 7.49464760e-02 + 7.49530832e-02 7.49599219e-02 7.49669919e-02 7.49742931e-02 7.49818255e-02 + 7.49895890e-02 7.49975834e-02 7.50058087e-02 7.50142646e-02 7.50229512e-02 + 7.50318684e-02 7.50410158e-02 7.50503936e-02 7.50600015e-02 7.50698394e-02 + 7.50799072e-02 7.50902047e-02 7.51007318e-02 7.51114884e-02 7.51224743e-02 + 7.51336894e-02 7.51451335e-02 7.51568065e-02 7.51687082e-02 7.51808385e-02 + 7.51931972e-02 7.52057841e-02 7.52185991e-02 7.52316420e-02 7.52449126e-02 + 7.52584108e-02 7.52721363e-02 7.52860890e-02 7.53002688e-02 7.53146753e-02 + 7.53293085e-02 7.53441681e-02 7.53592540e-02 7.53745659e-02 7.53901036e-02 + 7.54058670e-02 7.54218558e-02 7.54380698e-02 7.54545087e-02 7.54711725e-02 + 7.54880609e-02 7.55051735e-02 7.55225103e-02 7.55400710e-02 7.55578553e-02 + 7.55758631e-02 7.55940940e-02 7.56125479e-02 7.56312245e-02 7.56501236e-02 + 7.56692448e-02 7.56885881e-02 7.57081530e-02 7.57279394e-02 7.57479470e-02 + 7.57681755e-02 7.57886247e-02 7.58092942e-02 7.58301840e-02 7.58512935e-02 + 7.58726227e-02 7.58941712e-02 7.59159386e-02 7.59379249e-02 7.59601296e-02 + 7.59825524e-02 7.60051932e-02 7.60280515e-02 7.60511271e-02 7.60744197e-02 + 7.60979290e-02 7.61216547e-02 7.61455964e-02 7.61697540e-02 7.61941269e-02 + 7.62187151e-02 7.62435180e-02 7.62685354e-02 7.62937671e-02 7.63192126e-02 + 7.63448716e-02 7.63707438e-02 7.63968289e-02 7.64231266e-02 7.64496364e-02 + 7.64763581e-02 7.65032913e-02 7.65304357e-02 7.65577909e-02 7.65853566e-02 + 7.66131325e-02 7.66411181e-02 7.66693131e-02 7.66977171e-02 7.67263299e-02 + 7.67551510e-02 7.67841801e-02 7.68134168e-02 7.68428607e-02 7.68725114e-02 + 7.69023687e-02 7.69324320e-02 7.69627011e-02 7.69931756e-02 7.70238549e-02 + 7.70547389e-02 7.70858271e-02 7.71171190e-02 7.71486144e-02 7.71803127e-02 + 7.72122137e-02 7.72443169e-02 7.72766219e-02 7.73091283e-02 7.73418357e-02 + 7.73747437e-02 7.74078518e-02 7.74411598e-02 7.74746671e-02 7.75083734e-02 + 7.75422781e-02 7.75763810e-02 7.76106816e-02 7.76451794e-02 7.76798741e-02 + 7.77147651e-02 7.77498522e-02 7.77851347e-02 7.78206124e-02 7.78562848e-02 + 7.78921513e-02 7.79282117e-02 7.79644654e-02 7.80009121e-02 7.80375512e-02 + 7.80743823e-02 7.81114050e-02 7.81486188e-02 7.81860233e-02 7.82236179e-02 + 7.82614023e-02 7.82993761e-02 7.83375386e-02 7.83758895e-02 7.84144284e-02 + 7.84531546e-02 7.84920679e-02 7.85311676e-02 7.85704534e-02 7.86099248e-02 + 7.86495813e-02 7.86894223e-02 7.87294475e-02 7.87696564e-02 7.88100485e-02 + 7.88506232e-02 7.88913802e-02 7.89323189e-02 7.89734389e-02 7.90147396e-02 + 7.90562205e-02 7.90978813e-02 7.91397213e-02 7.91817402e-02 7.92239373e-02 + 7.92663122e-02 7.93088645e-02 7.93515935e-02 7.93944988e-02 7.94375800e-02 + 7.94808364e-02 7.95242676e-02 7.95678731e-02 7.96116524e-02 7.96556049e-02 + 7.96997302e-02 7.97440277e-02 7.97884970e-02 7.98331374e-02 7.98779486e-02 + 7.99229300e-02 7.99680810e-02 8.00134012e-02 8.00588900e-02 8.01045468e-02 + 8.01503713e-02 8.01963628e-02 8.02425209e-02 8.02888450e-02 8.03353345e-02 + 8.03819890e-02 8.04288079e-02 8.04757907e-02 8.05229368e-02 8.05702458e-02 + 8.06177170e-02 8.06653500e-02 8.07131443e-02 8.07610992e-02 8.08092142e-02 + 8.08574888e-02 8.09059225e-02 8.09545148e-02 8.10032650e-02 8.10521726e-02 + 8.11012372e-02 8.11504581e-02 8.11998347e-02 8.12493667e-02 8.12990534e-02 + 8.13488942e-02 8.13988886e-02 8.14490361e-02 8.14993361e-02 8.15497881e-02 + 8.16003915e-02 8.16511457e-02 8.17020502e-02 8.17531045e-02 8.18043080e-02 + 8.18556601e-02 8.19071604e-02 8.19588081e-02 8.20106028e-02 8.20625439e-02 + 8.21146309e-02 8.21668631e-02 8.22192401e-02 8.22717613e-02 8.23244260e-02 + 8.23772339e-02 8.24301842e-02 8.24832764e-02 8.25365100e-02 8.25898843e-02 + 8.26433990e-02 8.26970532e-02 8.27508466e-02 8.28047785e-02 8.28588484e-02 + 8.29130557e-02 8.29673998e-02 8.30218801e-02 8.30764962e-02 8.31312474e-02 + 8.31861332e-02 8.32411529e-02 8.32963061e-02 8.33515922e-02 8.34070105e-02 + 8.34625605e-02 8.35182417e-02 8.35740534e-02 8.36299951e-02 8.36860663e-02 + 8.37422663e-02 8.37985946e-02 8.38550506e-02 8.39116338e-02 8.39683435e-02 + 8.40251792e-02 8.40821403e-02 8.41392263e-02 8.41964365e-02 8.42537705e-02 + 8.43112275e-02 8.43688072e-02 8.44265088e-02 8.44843318e-02 8.45422756e-02 + 8.46003397e-02 8.46585235e-02 8.47168264e-02 8.47752478e-02 8.48337872e-02 + 8.48924439e-02 8.49512175e-02 8.50101073e-02 8.50691128e-02 8.51282334e-02 + 8.51874685e-02 8.52468175e-02 8.53062799e-02 8.53658551e-02 8.54255425e-02 + 8.54853415e-02 8.55452516e-02 8.56052723e-02 8.56654028e-02 8.57256427e-02 + 8.57859914e-02 8.58464483e-02 8.59070128e-02 8.59676844e-02 8.60284625e-02 + 8.60893465e-02 8.61503358e-02 8.62114299e-02 8.62726282e-02 8.63339302e-02 + 8.63953352e-02 8.64568427e-02 8.65184522e-02 8.65801629e-02 8.66419745e-02 + 8.67038863e-02 8.67658977e-02 8.68280082e-02 8.68902172e-02 8.69525242e-02 + 8.70149285e-02 8.70774296e-02 8.71400270e-02 8.72027200e-02 8.72655081e-02 + 8.73283908e-02 8.73913675e-02 8.74544376e-02 8.75176005e-02 8.75808557e-02 + 8.76442026e-02 8.77076407e-02 8.77711694e-02 8.78347881e-02 8.78984963e-02 + 8.79622934e-02 8.80261789e-02 8.80901521e-02 8.81542126e-02 8.82183598e-02 + 8.82825930e-02 8.83469119e-02 8.84113157e-02 8.84758040e-02 8.85403762e-02 + 8.86050317e-02 8.86697700e-02 8.87345905e-02 8.87994927e-02 8.88644761e-02 + 8.89295400e-02 8.89946839e-02 8.90599073e-02 8.91252096e-02 8.91905903e-02 + 8.92560488e-02 8.93215845e-02 8.93871970e-02 8.94528857e-02 8.95186500e-02 + 8.95844894e-02 8.96504034e-02 8.97163914e-02 8.97824528e-02 8.98485871e-02 + 8.99147938e-02 8.99810724e-02 9.00474222e-02 9.01138428e-02 9.01803336e-02 + 9.02468942e-02 9.03135238e-02 9.03802221e-02 9.04469884e-02 9.05138223e-02 + 9.05807232e-02 9.06476906e-02 9.07147239e-02 9.07818226e-02 9.08489862e-02 + 9.09162142e-02 9.09835060e-02 9.10508611e-02 9.11182790e-02 9.11857591e-02 + 9.12533009e-02 9.13209040e-02 9.13885677e-02 9.14562916e-02 9.15240751e-02 + 9.15919178e-02 9.16598190e-02 9.17277784e-02 9.17957953e-02 9.18638692e-02 + 9.19319997e-02 9.20001862e-02 9.20684282e-02 9.21367252e-02 9.22050767e-02 + 9.22734821e-02 9.23419411e-02 9.24104530e-02 9.24790173e-02 9.25476336e-02 + 9.26163013e-02 9.26850199e-02 9.27537890e-02 9.28226080e-02 9.28914765e-02 + 9.29603938e-02 9.30293596e-02 9.30983734e-02 9.31674346e-02 9.32365427e-02 + 9.33056973e-02 9.33748978e-02 9.34441438e-02 9.35134347e-02 9.35827701e-02 + 9.36521496e-02 9.37215725e-02 9.37910385e-02 9.38605469e-02 9.39300975e-02 + 9.39996895e-02 9.40693227e-02 9.41389965e-02 9.42087104e-02 9.42784639e-02 + 9.43482566e-02 9.44180880e-02 9.44879576e-02 9.45578649e-02 9.46278095e-02 + 9.46977909e-02 9.47678086e-02 9.48378622e-02 9.49079511e-02 9.49780750e-02 + 9.50482333e-02 9.51184256e-02 9.51886514e-02 9.52589103e-02 9.53292017e-02 + 9.53995254e-02 9.54698806e-02 9.55402671e-02 9.56106844e-02 9.56811320e-02 + 9.57516094e-02 9.58221162e-02 9.58926520e-02 9.59632163e-02 9.60338086e-02 + 9.61044286e-02 9.61750756e-02 9.62457494e-02 9.63164495e-02 9.63871754e-02 + 9.64579266e-02 9.65287028e-02 9.65995035e-02 9.66703283e-02 9.67411766e-02 + 9.68120482e-02 9.68829425e-02 9.69538592e-02 9.70247977e-02 9.70957577e-02 + 9.71667387e-02 9.72377403e-02 9.73087621e-02 9.73798037e-02 9.74508645e-02 + 9.75219443e-02 9.75930426e-02 9.76641589e-02 9.77352928e-02 9.78064440e-02 + 9.78776119e-02 9.79487963e-02 9.80199966e-02 9.80912125e-02 9.81624436e-02 + 9.82336894e-02 9.83049495e-02 9.83762235e-02 9.84475111e-02 9.85188118e-02 + 9.85901251e-02 9.86614508e-02 9.87327884e-02 9.88041375e-02 9.88754977e-02 + 9.89468687e-02 9.90182499e-02 9.90896410e-02 9.91610417e-02 9.92324515e-02 + 9.93038701e-02 9.93752970e-02 9.94467318e-02 9.95181743e-02 9.95896239e-02 + 9.96610804e-02 9.97325432e-02 9.98040122e-02 9.98754867e-02 9.99469666e-02 + 1.00018451e-01 1.00089941e-01 1.00161434e-01 1.00232931e-01 1.00304432e-01 + 1.00375936e-01 1.00447442e-01 1.00518951e-01 1.00590461e-01 1.00661973e-01 + 1.00733487e-01 1.00805001e-01 1.00876516e-01 1.00948030e-01 1.01019545e-01 + 1.01091059e-01 1.01162572e-01 1.01234084e-01 1.01305594e-01 1.01377102e-01 + 1.01448607e-01 1.01520110e-01 1.01591610e-01 1.01663106e-01 1.01734599e-01 + 1.01806088e-01 1.01877572e-01 1.01949051e-01 1.02020525e-01 1.02091994e-01 + 1.02163457e-01 1.02234914e-01 1.02306364e-01 1.02377807e-01 1.02449244e-01 + 1.02520672e-01 1.02592093e-01 1.02663506e-01 1.02734911e-01 1.02806306e-01 + 1.02877693e-01 1.02949070e-01 1.03020437e-01 1.03091794e-01 1.03163141e-01 + 1.03234477e-01 1.03305802e-01 1.03377115e-01 1.03448417e-01 1.03519707e-01 + 1.03590985e-01 1.03662250e-01 1.03733502e-01 1.03804741e-01 1.03875966e-01 + 1.03947178e-01 1.04018375e-01 1.04089558e-01 1.04160726e-01 1.04231879e-01 + 1.04303017e-01 1.04374139e-01 1.04445245e-01 1.04516335e-01 1.04587409e-01 + 1.04658465e-01 1.04729504e-01 1.04800527e-01 1.04871531e-01 1.04942517e-01 + 1.05013485e-01 1.05084435e-01 1.05155365e-01 1.05226277e-01 1.05297169e-01 + 1.05368041e-01 1.05438894e-01 1.05509726e-01 1.05580538e-01 1.05651329e-01 + 1.05722099e-01 1.05792847e-01 1.05863574e-01 1.05934279e-01 1.06004962e-01 + 1.06075622e-01 1.06146260e-01 1.06216875e-01 1.06287467e-01 1.06358035e-01 + 1.06428579e-01 1.06499100e-01 1.06569596e-01 1.06640067e-01 1.06710514e-01 + 1.06780936e-01 1.06851332e-01 1.06921703e-01 1.06992049e-01 1.07062368e-01 + 1.07132661e-01 1.07202927e-01 1.07273167e-01 1.07343379e-01 1.07413565e-01 + 1.07483722e-01 1.07553852e-01 1.07623955e-01 1.07694028e-01 1.07764074e-01 + 1.07834090e-01 1.07904078e-01 1.07974036e-01 1.08043966e-01 1.08113865e-01 + 1.08183735e-01 1.08253574e-01 1.08323383e-01 1.08393162e-01 1.08462910e-01 + 1.08532626e-01 1.08602312e-01 1.08671966e-01 1.08741588e-01 1.08811179e-01 + 1.08880737e-01 1.08950263e-01 1.09019757e-01 1.09089217e-01 1.09158645e-01 + 1.09228040e-01 1.09297401e-01 1.09366728e-01 1.09436022e-01 1.09505281e-01 + 1.09574507e-01 1.09643698e-01 1.09712854e-01 1.09781975e-01 1.09851061e-01 + 1.09920112e-01 1.09989128e-01 1.10058108e-01 1.10127052e-01 1.10195959e-01 + 1.10264831e-01 1.10333666e-01 1.10402465e-01 1.10471226e-01 1.10539951e-01 + 1.10608638e-01 1.10677288e-01 1.10745900e-01 1.10814475e-01 1.10883011e-01 + 1.10951510e-01 1.11019970e-01 1.11088391e-01 1.11156774e-01 1.11225117e-01 + 1.11293422e-01 1.11361687e-01 1.11429913e-01 1.11498100e-01 1.11566246e-01 + 1.11634353e-01 1.11702419e-01 1.11770445e-01 1.11838431e-01 1.11906376e-01 + 1.11974280e-01 1.12042143e-01 1.12109965e-01 1.12177745e-01 1.12245484e-01 + 1.12313182e-01 1.12380837e-01 1.12448451e-01 1.12516022e-01 1.12583551e-01 + 1.12651038e-01 1.12718482e-01 1.12785883e-01 1.12853241e-01 1.12920556e-01 + 1.12987828e-01 1.13055056e-01 1.13122241e-01 1.13189382e-01 1.13256480e-01 + 1.13323533e-01 1.13390542e-01 1.13457507e-01 1.13524427e-01 1.13591303e-01 + 1.13658134e-01 1.13724920e-01 1.13791661e-01 1.13858356e-01 1.13925007e-01 + 1.13991612e-01 1.14058171e-01 1.14124685e-01 1.14191153e-01 1.14257575e-01 + 1.14323950e-01 1.14390280e-01 1.14456562e-01 1.14522799e-01 1.14588988e-01 + 1.14655131e-01 1.14721227e-01 1.14787276e-01 1.14853278e-01 1.14919232e-01 + 1.14985139e-01 1.15050998e-01 1.15116810e-01 1.15182574e-01 1.15248290e-01 + 1.15313957e-01 1.15379577e-01 1.15445148e-01 1.15510671e-01 1.15576146e-01 + 1.15641571e-01 1.15706948e-01 1.15772276e-01 1.15837555e-01 1.15902785e-01 + 1.15967965e-01 1.16033097e-01 1.16098179e-01 1.16163211e-01 1.16228193e-01 + 1.16293126e-01 1.16358009e-01 1.16422842e-01 1.16487625e-01 1.16552357e-01 + 1.16617040e-01 1.16681672e-01 1.16746253e-01 1.16810784e-01 1.16875264e-01 + 1.16939693e-01 1.17004071e-01 1.17068398e-01 1.17132674e-01 1.17196899e-01 + 1.17261073e-01 1.17325195e-01 1.17389266e-01 1.17453285e-01 1.17517252e-01 + 1.17581168e-01 1.17645032e-01 1.17708843e-01 1.17772603e-01 1.17836311e-01 + 1.17899966e-01 1.17963569e-01 1.18027120e-01 1.18090618e-01 1.18154064e-01 + 1.18217457e-01 1.18280797e-01 1.18344084e-01 1.18407319e-01 1.18470500e-01 + 1.18533629e-01 1.18596704e-01 1.18659726e-01 1.18722695e-01 1.18785610e-01 + 1.18848472e-01 1.18911281e-01 1.18974035e-01 1.19036736e-01 1.19099384e-01 + 1.03953624e+00 1.03772749e+00 1.03592023e+00 1.03411445e+00 1.03231016e+00 + 1.03050735e+00 1.02870603e+00 1.02690620e+00 1.02510785e+00 1.02331100e+00 + 1.02151562e+00 1.01972174e+00 1.01792935e+00 1.01613844e+00 1.01434902e+00 + 1.01256110e+00 1.01077466e+00 1.00898971e+00 1.00720626e+00 1.00542429e+00 + 1.00364382e+00 1.00186484e+00 1.00008735e+00 9.98311355e-01 9.96536852e-01 + 9.94763842e-01 9.92992326e-01 9.91222304e-01 9.89453777e-01 9.87686744e-01 + 9.85921207e-01 9.84157165e-01 9.82394619e-01 9.80633570e-01 9.78874017e-01 + 9.77115962e-01 9.75359404e-01 9.73604344e-01 9.71850782e-01 9.70098719e-01 + 9.68348155e-01 9.66599090e-01 9.64851525e-01 9.63105460e-01 9.61360895e-01 + 9.59617832e-01 9.57876269e-01 9.56136208e-01 9.54397649e-01 9.52660593e-01 + 9.50925039e-01 9.49190988e-01 9.47458441e-01 9.45727397e-01 9.43997858e-01 + 9.42269823e-01 9.40543293e-01 9.38818268e-01 9.37094749e-01 9.35372736e-01 + 9.33652230e-01 9.31933230e-01 9.30215737e-01 9.28499752e-01 9.26785274e-01 + 9.25072305e-01 9.23360844e-01 9.21650893e-01 9.19942450e-01 9.18235517e-01 + 9.16530094e-01 9.14826182e-01 9.13123780e-01 9.11422890e-01 9.09723511e-01 + 9.08025644e-01 9.06329289e-01 9.04634446e-01 9.02941117e-01 9.01249300e-01 + 8.99558998e-01 8.97870209e-01 8.96182935e-01 8.94497176e-01 8.92812931e-01 + 8.91130202e-01 8.89448989e-01 8.87769292e-01 8.86091112e-01 8.84414448e-01 + 8.82739302e-01 8.81065673e-01 8.79393562e-01 8.77722970e-01 8.76053896e-01 + 8.74386341e-01 8.72720306e-01 8.71055790e-01 8.69392795e-01 8.67731320e-01 + 8.66071366e-01 8.64412932e-01 8.62756021e-01 8.61100631e-01 8.59446764e-01 + 8.57794419e-01 8.56143597e-01 8.54494298e-01 8.52846523e-01 8.51200272e-01 + 8.49555545e-01 8.47912343e-01 8.46270666e-01 8.44630515e-01 8.42991889e-01 + 8.41354789e-01 8.39719216e-01 8.38085170e-01 8.36452650e-01 8.34821658e-01 + 8.33192195e-01 8.31564259e-01 8.29937852e-01 8.28312973e-01 8.26689624e-01 + 8.25067805e-01 8.23447515e-01 8.21828756e-01 8.20211528e-01 8.18595830e-01 + 8.16981664e-01 8.15369029e-01 8.13757927e-01 8.12148357e-01 8.10540319e-01 + 8.08933815e-01 8.07328844e-01 8.05725406e-01 8.04123503e-01 8.02523135e-01 + 8.00924301e-01 7.99327002e-01 7.97731239e-01 7.96137011e-01 7.94544320e-01 + 7.92953165e-01 7.91363547e-01 7.89775466e-01 7.88188923e-01 7.86603918e-01 + 7.85020450e-01 7.83438522e-01 7.81858132e-01 7.80279281e-01 7.78701970e-01 + 7.77126199e-01 7.75551968e-01 7.73979278e-01 7.72408129e-01 7.70838521e-01 + 7.69270454e-01 7.67703930e-01 7.66138947e-01 7.64575508e-01 7.63013611e-01 + 7.61453258e-01 7.59894448e-01 7.58337182e-01 7.56781460e-01 7.55227283e-01 + 7.53674651e-01 7.52123565e-01 7.50574024e-01 7.49026029e-01 7.47479580e-01 + 7.45934678e-01 7.44391322e-01 7.42849514e-01 7.41309254e-01 7.39770542e-01 + 7.38233378e-01 7.36697762e-01 7.35163696e-01 7.33631179e-01 7.32100211e-01 + 7.30570794e-01 7.29042926e-01 7.27516610e-01 7.25991844e-01 7.24468629e-01 + 7.22946966e-01 7.21426855e-01 7.19908297e-01 7.18391291e-01 7.16875837e-01 + 7.15361937e-01 7.13849591e-01 7.12338798e-01 7.10829560e-01 7.09321876e-01 + 7.07815747e-01 7.06311174e-01 7.04808155e-01 7.03306693e-01 7.01806787e-01 + 7.00308437e-01 6.98811644e-01 6.97316408e-01 6.95822730e-01 6.94330610e-01 + 6.92840047e-01 6.91351043e-01 6.89863598e-01 6.88377712e-01 6.86893385e-01 + 6.85410618e-01 6.83929411e-01 6.82449765e-01 6.80971679e-01 6.79495154e-01 + 6.78020190e-01 6.76546789e-01 6.75074949e-01 6.73604671e-01 6.72135956e-01 + 6.70668804e-01 6.69203215e-01 6.67739189e-01 6.66276728e-01 6.64815830e-01 + 6.63356498e-01 6.61898730e-01 6.60442527e-01 6.58987889e-01 6.57534818e-01 + 6.56083312e-01 6.54633373e-01 6.53185001e-01 6.51738195e-01 6.50292957e-01 + 6.48849287e-01 6.47407184e-01 6.45966650e-01 6.44527685e-01 6.43090288e-01 + 6.41654460e-01 6.40220202e-01 6.38787514e-01 6.37356396e-01 6.35926849e-01 + 6.34498872e-01 6.33072467e-01 6.31647633e-01 6.30224370e-01 6.28802680e-01 + 6.27382561e-01 6.25964016e-01 6.24547043e-01 6.23131644e-01 6.21717818e-01 + 6.20305566e-01 6.18894889e-01 6.17485785e-01 6.16078257e-01 6.14672303e-01 + 6.13267925e-01 6.11865123e-01 6.10463897e-01 6.09064247e-01 6.07666173e-01 + 6.06269677e-01 6.04874758e-01 6.03481416e-01 6.02089652e-01 6.00699467e-01 + 5.99310859e-01 5.97923831e-01 5.96538381e-01 5.95154511e-01 5.93772221e-01 + 5.92391510e-01 5.91012380e-01 5.89634830e-01 5.88258861e-01 5.86884473e-01 + 5.85511667e-01 5.84140442e-01 5.82770800e-01 5.81402740e-01 5.80036262e-01 + 5.78671367e-01 5.77308056e-01 5.75946328e-01 5.74586184e-01 5.73227624e-01 + 5.71870649e-01 5.70515258e-01 5.69161453e-01 5.67809232e-01 5.66458597e-01 + 5.65109548e-01 5.63762086e-01 5.62416210e-01 5.61071920e-01 5.59729218e-01 + 5.58388103e-01 5.57048576e-01 5.55710636e-01 5.54374285e-01 5.53039523e-01 + 5.51706349e-01 5.50374764e-01 5.49044769e-01 5.47716364e-01 5.46389548e-01 + 5.45064323e-01 5.43740689e-01 5.42418645e-01 5.41098192e-01 5.39779331e-01 + 5.38462062e-01 5.37146385e-01 5.35832299e-01 5.34519807e-01 5.33208907e-01 + 5.31899601e-01 5.30591888e-01 5.29285769e-01 5.27981244e-01 5.26678313e-01 + 5.25376977e-01 5.24077235e-01 5.22779089e-01 5.21482538e-01 5.20187583e-01 + 5.18894224e-01 5.17602461e-01 5.16312295e-01 5.15023726e-01 5.13736754e-01 + 5.12451379e-01 5.11167602e-01 5.09885423e-01 5.08604843e-01 5.07325861e-01 + 5.06048477e-01 5.04772693e-01 5.03498508e-01 5.02225923e-01 5.00954938e-01 + 4.99685553e-01 4.98417769e-01 4.97151585e-01 4.95887003e-01 4.94624021e-01 + 4.93362642e-01 4.92102864e-01 4.90844689e-01 4.89588116e-01 4.88333145e-01 + 4.87079778e-01 4.85828014e-01 4.84577853e-01 4.83329297e-01 4.82082344e-01 + 4.80836996e-01 4.79593252e-01 4.78351114e-01 4.77110580e-01 4.75871652e-01 + 4.74634330e-01 4.73398614e-01 4.72164504e-01 4.70932001e-01 4.69701104e-01 + 4.68471815e-01 4.67244132e-01 4.66018058e-01 4.64793591e-01 4.63570733e-01 + 4.62349483e-01 4.61129842e-01 4.59911810e-01 4.58695387e-01 4.57480573e-01 + 4.56267369e-01 4.55055776e-01 4.53845792e-01 4.52637419e-01 4.51430658e-01 + 4.50225507e-01 4.49021967e-01 4.47820039e-01 4.46619724e-01 4.45421020e-01 + 4.44223928e-01 4.43028450e-01 4.41834584e-01 4.40642332e-01 4.39451693e-01 + 4.38262668e-01 4.37075256e-01 4.35889459e-01 4.34705277e-01 4.33522709e-01 + 4.32341757e-01 4.31162420e-01 4.29984698e-01 4.28808592e-01 4.27634102e-01 + 4.26461229e-01 4.25289972e-01 4.24120332e-01 4.22952310e-01 4.21785904e-01 + 4.20621116e-01 4.19457946e-01 4.18296395e-01 4.17136461e-01 4.15978147e-01 + 4.14821451e-01 4.13666374e-01 4.12512917e-01 4.11361080e-01 4.10210862e-01 + 4.09062265e-01 4.07915288e-01 4.06769932e-01 4.05626197e-01 4.04484083e-01 + 4.03343590e-01 4.02204719e-01 4.01067470e-01 3.99931844e-01 3.98797839e-01 + 3.97665458e-01 3.96534699e-01 3.95405564e-01 3.94278052e-01 3.93152164e-01 + 3.92027900e-01 3.90905259e-01 3.89784244e-01 3.88664853e-01 3.87547087e-01 + 3.86430946e-01 3.85316431e-01 3.84203541e-01 3.83092278e-01 3.81982640e-01 + 3.80874629e-01 3.79768245e-01 3.78663487e-01 3.77560357e-01 3.76458854e-01 + 3.75358979e-01 3.74260731e-01 3.73164112e-01 3.72069121e-01 3.70975759e-01 + 3.69884025e-01 3.68793921e-01 3.67705446e-01 3.66618601e-01 3.65533385e-01 + 3.64449799e-01 3.63367844e-01 3.62287520e-01 3.61208826e-01 3.60131763e-01 + 3.59056331e-01 3.57982531e-01 3.56910363e-01 3.55839826e-01 3.54770922e-01 + 3.53703650e-01 3.52638011e-01 3.51574005e-01 3.50511632e-01 3.49450892e-01 + 3.48391786e-01 3.47334314e-01 3.46278476e-01 3.45224272e-01 3.44171703e-01 + 3.43120769e-01 3.42071469e-01 3.41023805e-01 3.39977776e-01 3.38933384e-01 + 3.37890627e-01 3.36849506e-01 3.35810021e-01 3.34772174e-01 3.33735963e-01 + 3.32701389e-01 3.31668453e-01 3.30637154e-01 3.29607493e-01 3.28579470e-01 + 3.27553085e-01 3.26528339e-01 3.25505231e-01 3.24483762e-01 3.23463933e-01 + 3.22445743e-01 3.21429192e-01 3.20414282e-01 3.19401011e-01 3.18389381e-01 + 3.17379391e-01 3.16371042e-01 3.15364334e-01 3.14359267e-01 3.13355841e-01 + 3.12354057e-01 3.11353915e-01 3.10355415e-01 3.09358557e-01 3.08363342e-01 + 3.07369770e-01 3.06377840e-01 3.05387554e-01 3.04398911e-01 3.03411912e-01 + 3.02426556e-01 3.01442845e-01 3.00460777e-01 2.99480355e-01 2.98501577e-01 + 2.97524444e-01 2.96548956e-01 2.95575113e-01 2.94602916e-01 2.93632365e-01 + 2.92663460e-01 2.91696201e-01 2.90730589e-01 2.89766623e-01 2.88804304e-01 + 2.87843632e-01 2.86884607e-01 2.85927230e-01 2.84971501e-01 2.84017420e-01 + 2.83064986e-01 2.82114201e-01 2.81165065e-01 2.80217578e-01 2.79271739e-01 + 2.78327550e-01 2.77385010e-01 2.76444119e-01 2.75504879e-01 2.74567288e-01 + 2.73631348e-01 2.72697059e-01 2.71764419e-01 2.70833431e-01 2.69904094e-01 + 2.68976408e-01 2.68050374e-01 2.67125991e-01 2.66203261e-01 2.65282182e-01 + 2.64362756e-01 2.63444982e-01 2.62528861e-01 2.61614393e-01 2.60701578e-01 + 2.59790416e-01 2.58880908e-01 2.57973054e-01 2.57066853e-01 2.56162307e-01 + 2.55259415e-01 2.54358178e-01 2.53458595e-01 2.52560668e-01 2.51664395e-01 + 2.50769778e-01 2.49876816e-01 2.48985511e-01 2.48095861e-01 2.47207867e-01 + 2.46321530e-01 2.45436849e-01 2.44553825e-01 2.43672457e-01 2.42792747e-01 + 2.41914695e-01 2.41038300e-01 2.40163562e-01 2.39290483e-01 2.38419061e-01 + 2.37549298e-01 2.36681193e-01 2.35814748e-01 2.34949961e-01 2.34086833e-01 + 2.33225364e-01 2.32365555e-01 2.31507405e-01 2.30650916e-01 2.29796086e-01 + 2.28942916e-01 2.28091407e-01 2.27241559e-01 2.26393372e-01 2.25546845e-01 + 2.24701980e-01 2.23858776e-01 2.23017233e-01 2.22177352e-01 2.21339134e-01 + 2.20502577e-01 2.19667682e-01 2.18834451e-01 2.18002881e-01 2.17172975e-01 + 2.16344732e-01 2.15518152e-01 2.14693235e-01 2.13869982e-01 2.13048393e-01 + 2.12228468e-01 2.11410207e-01 2.10593610e-01 2.09778678e-01 2.08965410e-01 + 2.08153807e-01 2.07343870e-01 2.06535598e-01 2.05728991e-01 2.04924049e-01 + 2.04120774e-01 2.03319164e-01 2.02519221e-01 2.01720944e-01 2.00924334e-01 + 2.00129390e-01 1.99336113e-01 1.98544503e-01 1.97754560e-01 1.96966285e-01 + 1.96179677e-01 1.95394737e-01 1.94611465e-01 1.93829861e-01 1.93049925e-01 + 1.92271658e-01 1.91495059e-01 1.90720129e-01 1.89946869e-01 1.89175277e-01 + 1.88405354e-01 1.87637101e-01 1.86870518e-01 1.86105605e-01 1.85342361e-01 + 1.84580788e-01 1.83820885e-01 1.83062653e-01 1.82306091e-01 1.81551200e-01 + 1.80797980e-01 1.80046431e-01 1.79296554e-01 1.78548348e-01 1.77801814e-01 + 1.77056952e-01 1.76313762e-01 1.75572244e-01 1.74832398e-01 1.74094225e-01 + 1.73357725e-01 1.72622897e-01 1.71889743e-01 1.71158261e-01 1.70428453e-01 + 1.69700319e-01 1.68973858e-01 1.68249071e-01 1.67525958e-01 1.66804519e-01 + 1.66084755e-01 1.65366665e-01 1.64650249e-01 1.63935509e-01 1.63222443e-01 + 1.62511053e-01 1.61801338e-01 1.61093298e-01 1.60386934e-01 1.59682246e-01 + 1.58979233e-01 1.58277897e-01 1.57578237e-01 1.56880253e-01 1.56183946e-01 + 1.55489316e-01 1.54796362e-01 1.54105086e-01 1.53415486e-01 1.52727564e-01 + 1.52041320e-01 1.51356753e-01 1.50673864e-01 1.49992653e-01 1.49313120e-01 + 1.48635265e-01 1.47959088e-01 1.47284591e-01 1.46611771e-01 1.45940631e-01 + 1.45271170e-01 1.44603388e-01 1.43937285e-01 1.43272862e-01 1.42610118e-01 + 1.41949054e-01 1.41289670e-01 1.40631966e-01 1.39975942e-01 1.39321598e-01 + 1.38668935e-01 1.38017953e-01 1.37368652e-01 1.36721031e-01 1.36075091e-01 + 1.35430833e-01 1.34788256e-01 1.34147361e-01 1.33508147e-01 1.32870615e-01 + 1.32234765e-01 1.31600597e-01 1.30968111e-01 1.30337308e-01 1.29708187e-01 + 1.29080749e-01 1.28454994e-01 1.27830921e-01 1.27208532e-01 1.26587826e-01 + 1.25968803e-01 1.25351464e-01 1.24735808e-01 1.24121836e-01 1.23509548e-01 + 1.22898944e-01 1.22290024e-01 1.21682789e-01 1.21077238e-01 1.20473372e-01 + 1.19871190e-01 1.19270693e-01 1.18671881e-01 1.18074755e-01 1.17479313e-01 + 1.16885558e-01 1.16293487e-01 1.15703102e-01 1.15114403e-01 1.14527390e-01 + 1.13942064e-01 1.13358423e-01 1.12776468e-01 1.12196200e-01 1.11617619e-01 + 1.11040725e-01 1.10465517e-01 1.09891996e-01 1.09320162e-01 1.08750016e-01 + 1.08181557e-01 1.07614785e-01 1.07049701e-01 1.06486305e-01 1.05924597e-01 + 1.05364577e-01 1.04806244e-01 1.04249601e-01 1.03694645e-01 1.03141378e-01 + 1.02589800e-01 1.02039910e-01 1.01491709e-01 1.00945198e-01 1.00400375e-01 + 9.98572416e-02 9.93157976e-02 9.87760431e-02 9.82379782e-02 9.77016030e-02 + 9.71669178e-02 9.66339224e-02 9.61026172e-02 9.55730022e-02 9.50450776e-02 + 9.45188434e-02 9.39942997e-02 9.34714468e-02 9.29502847e-02 9.24308135e-02 + 9.19130333e-02 9.13969443e-02 9.08825466e-02 9.03698403e-02 8.98588255e-02 + 8.93495023e-02 8.88418708e-02 8.83359312e-02 8.78316836e-02 8.73291281e-02 + 8.68282647e-02 8.63290937e-02 8.58316150e-02 8.53358290e-02 8.48417355e-02 + 8.43493348e-02 8.38586270e-02 8.33696121e-02 8.28822904e-02 8.23966618e-02 + 8.19127265e-02 8.14304847e-02 8.09499364e-02 8.04710817e-02 7.99939207e-02 + 7.95184537e-02 7.90446805e-02 7.85726014e-02 7.81022165e-02 7.76335259e-02 + 7.71665296e-02 7.67012279e-02 7.62376207e-02 7.57757082e-02 7.53154905e-02 + 7.48569677e-02 7.44001400e-02 7.39450073e-02 7.34915699e-02 7.30398277e-02 + 7.25897810e-02 7.21414298e-02 7.16947743e-02 7.12498144e-02 7.08065504e-02 + 7.03649822e-02 6.99251102e-02 6.94869342e-02 6.90504544e-02 6.86156710e-02 + 6.81825840e-02 6.77511935e-02 6.73214996e-02 6.68935024e-02 6.64672020e-02 + 6.60425985e-02 6.56196920e-02 6.51984826e-02 6.47789704e-02 6.43611555e-02 + 6.39450379e-02 6.35306178e-02 6.31178953e-02 6.27068704e-02 6.22975433e-02 + 6.18899141e-02 6.14839827e-02 6.10797494e-02 6.06772142e-02 6.02763772e-02 + 5.98772385e-02 5.94797982e-02 5.90840564e-02 5.86900131e-02 5.82976685e-02 + 5.79070227e-02 5.75180757e-02 5.71308276e-02 5.67452785e-02 5.63614285e-02 + 5.59792777e-02 5.55988261e-02 5.52200739e-02 5.48430212e-02 5.44676679e-02 + 5.40940143e-02 5.37220604e-02 5.33518062e-02 5.29832520e-02 5.26163976e-02 + 5.22512433e-02 5.18877891e-02 5.15260351e-02 5.11659814e-02 5.08076280e-02 + 5.04509751e-02 5.00960227e-02 4.97427708e-02 4.93912197e-02 4.90413693e-02 + 4.86932198e-02 4.83467711e-02 4.80020235e-02 4.76589769e-02 4.73176315e-02 + 4.69779873e-02 4.66400444e-02 4.63038029e-02 4.59692628e-02 4.56364243e-02 + 4.53052874e-02 4.49758521e-02 4.46481186e-02 4.43220870e-02 4.39977572e-02 + 4.36751294e-02 4.33542037e-02 4.30349801e-02 4.27174587e-02 4.24016395e-02 + 4.20875227e-02 4.17751083e-02 4.14643964e-02 4.11553870e-02 4.08480802e-02 + 4.05424762e-02 4.02385749e-02 3.99363764e-02 3.96358808e-02 3.93370881e-02 + 3.90399985e-02 3.87446120e-02 3.84509287e-02 3.81589486e-02 3.78686718e-02 + 3.75800983e-02 3.72932283e-02 3.70080618e-02 3.67245988e-02 3.64428394e-02 + 3.61627838e-02 3.58844318e-02 3.56077837e-02 3.53328395e-02 3.50595992e-02 + 3.47880629e-02 3.45182306e-02 3.42501025e-02 3.39836786e-02 3.37189589e-02 + 3.34559435e-02 3.31946324e-02 3.29350258e-02 3.26771236e-02 3.24209260e-02 + 3.21664330e-02 3.19136446e-02 3.16625610e-02 3.14131821e-02 3.11655080e-02 + 3.09195388e-02 3.06752746e-02 3.04327153e-02 3.01918611e-02 2.99527120e-02 + 2.97152680e-02 2.94795292e-02 2.92454957e-02 2.90131675e-02 2.87825447e-02 + 2.85536273e-02 2.83264153e-02 2.81009089e-02 2.78771081e-02 2.76550128e-02 + 2.74346233e-02 2.72159395e-02 2.69989614e-02 2.67836892e-02 2.65701228e-02 + 2.63582623e-02 2.61481079e-02 2.59396594e-02 2.57329170e-02 2.55278807e-02 + 2.53245505e-02 2.51229266e-02 2.49230089e-02 2.47247975e-02 2.45282924e-02 + 2.43334937e-02 2.41404014e-02 2.39490156e-02 2.37593363e-02 2.35713636e-02 + 2.33850975e-02 2.32005380e-02 2.30176851e-02 2.28365390e-02 2.26570997e-02 + 2.24793672e-02 2.23033415e-02 2.21290227e-02 2.19564108e-02 2.17855059e-02 + 2.16163080e-02 2.14488171e-02 2.12830333e-02 2.11189566e-02 2.09565871e-02 + 2.07959248e-02 2.06369696e-02 2.04797218e-02 2.03241812e-02 2.01703480e-02 + 2.00182221e-02 1.98678037e-02 1.97190927e-02 1.95720891e-02 1.94267931e-02 + 1.92832045e-02 1.91413236e-02 1.90011502e-02 1.88626845e-02 1.87259265e-02 + 1.85908761e-02 1.84575335e-02 1.83258986e-02 1.81959715e-02 1.80677522e-02 + 1.79412408e-02 1.78164372e-02 1.76933415e-02 1.75719538e-02 1.74522740e-02 + 1.73343022e-02 1.72180384e-02 1.71034827e-02 1.69906350e-02 1.68794954e-02 + 1.67700639e-02 1.66623405e-02 1.65563253e-02 1.64520183e-02 1.63494195e-02 + 1.62485289e-02 1.61493466e-02 1.60518726e-02 1.59561068e-02 1.58620494e-02 + 1.57697003e-02 1.56790596e-02 1.55901273e-02 1.55029034e-02 1.54173879e-02 + 1.53335808e-02 1.52514822e-02 1.51710921e-02 1.50924105e-02 1.50154374e-02 + 1.49401728e-02 1.48666168e-02 1.47947694e-02 1.47246305e-02 1.46562002e-02 + 1.45894786e-02 1.45244656e-02 1.44611612e-02 1.43995655e-02 1.43396785e-02 + 1.42815001e-02 1.42250305e-02 1.41702695e-02 1.41172173e-02 1.40658738e-02 + 1.40162391e-02 1.39683132e-02 1.39220960e-02 1.38775876e-02 1.38347880e-02 + 1.37936971e-02 1.37543151e-02 1.37166420e-02 1.36806776e-02 1.36464221e-02 + 1.36138754e-02 1.35830376e-02 1.35539086e-02 1.35264885e-02 1.35007773e-02 + 1.34767750e-02 1.34544815e-02 1.34338969e-02 1.34150212e-02 1.33978544e-02 + 1.33823966e-02 1.33686476e-02 1.33566075e-02 1.33462763e-02 1.33376541e-02 + 1.33307407e-02 1.33255363e-02 1.33220408e-02 1.33202542e-02 1.33201765e-02 + 1.33218078e-02 1.33251480e-02 1.33301970e-02 1.33369550e-02 1.33454220e-02 + 1.33555978e-02 1.33674825e-02 1.33810762e-02 1.33963787e-02 1.34133902e-02 + 1.34321105e-02 1.34525397e-02 1.34746779e-02 1.34985249e-02 1.35240808e-02 + 1.35513455e-02 1.35803192e-02 1.36110016e-02 1.36433930e-02 1.36774932e-02 + 1.37133022e-02 1.37508200e-02 1.37900467e-02 1.38309822e-02 1.38736265e-02 + 1.39179796e-02 1.39640414e-02 1.40118121e-02 1.40612914e-02 1.41124796e-02 + 1.41653765e-02 1.42199821e-02 1.42762964e-02 1.43343194e-02 1.43940512e-02 + 1.44554916e-02 1.45186406e-02 1.45834983e-02 1.46500646e-02 1.47183396e-02 + 1.47883231e-02 1.48600153e-02 1.49334160e-02 1.50085252e-02 1.50853430e-02 + 1.51638693e-02 1.52441041e-02 1.53260474e-02 1.54096992e-02 1.54950594e-02 + 1.55821280e-02 1.56709051e-02 1.57613905e-02 1.58535843e-02 1.59474864e-02 + 1.60430969e-02 1.61404156e-02 1.62394427e-02 1.63401780e-02 1.64426215e-02 + 1.65467732e-02 1.66526331e-02 1.67602012e-02 1.68694775e-02 1.69804618e-02 + 1.70931542e-02 1.72075547e-02 1.73236633e-02 1.74414798e-02 1.75610043e-02 + 1.76822368e-02 1.78051772e-02 1.79298256e-02 1.80561818e-02 1.81842458e-02 + 1.83140177e-02 1.84454973e-02 1.85786847e-02 1.87135798e-02 1.88501827e-02 + 1.89884931e-02 1.91285113e-02 1.92702370e-02 1.94136703e-02 1.95588111e-02 + 1.97056595e-02 1.98542153e-02 2.00044786e-02 2.01564492e-02 2.03101272e-02 + 2.04655126e-02 2.06226053e-02 2.07814052e-02 2.09419123e-02 2.11041267e-02 + 2.12680482e-02 2.14336768e-02 2.16010125e-02 2.17700553e-02 2.19408050e-02 + 2.21132617e-02 2.22874254e-02 2.24632959e-02 2.26408733e-02 2.28201575e-02 + 2.30011484e-02 2.31838461e-02 2.33682505e-02 2.35543615e-02 2.37421791e-02 + 2.39317033e-02 2.41229339e-02 2.43158711e-02 2.45105147e-02 2.47068647e-02 + 2.49049210e-02 2.51046836e-02 2.53061524e-02 2.55093275e-02 2.57142087e-02 + 2.59207960e-02 2.61290894e-02 2.63390888e-02 2.65507942e-02 2.67642055e-02 + 2.69793227e-02 2.71961457e-02 2.74146744e-02 2.76349090e-02 2.78568491e-02 + 2.80804949e-02 2.83058463e-02 2.85329032e-02 2.87616656e-02 2.89921334e-02 + 2.92243066e-02 2.94581851e-02 2.96937689e-02 2.99310578e-02 3.01700520e-02 + 3.04107512e-02 3.06531555e-02 3.08972648e-02 3.11430790e-02 3.13905981e-02 + 3.16398220e-02 3.18907507e-02 3.21433841e-02 3.23977222e-02 3.26537648e-02 + 3.29115120e-02 3.31709637e-02 3.34321199e-02 3.36949803e-02 3.39595451e-02 + 3.42258142e-02 3.44937874e-02 3.47634647e-02 3.50348461e-02 3.53079315e-02 + 3.55827209e-02 3.58592141e-02 3.61374112e-02 3.64173120e-02 3.66989165e-02 + 3.69822246e-02 3.72672363e-02 3.75539515e-02 3.78423701e-02 3.81324920e-02 + 3.84243173e-02 3.87178458e-02 3.90130775e-02 3.93100123e-02 3.96086502e-02 + 3.99089910e-02 4.02110347e-02 4.05147812e-02 4.08202305e-02 4.11273825e-02 + 4.14362371e-02 4.17467942e-02 4.20590539e-02 4.23730160e-02 4.26886804e-02 + 4.30060471e-02 4.33251159e-02 4.36458870e-02 4.39683600e-02 4.42925351e-02 + 4.46184120e-02 4.49459908e-02 4.52752714e-02 4.56062536e-02 4.59389375e-02 + 4.62733229e-02 4.66094097e-02 4.69471980e-02 4.72866875e-02 4.76278783e-02 + 4.79707703e-02 4.83153633e-02 4.86616573e-02 4.90096522e-02 4.93593480e-02 + 4.97107446e-02 5.00638418e-02 5.04186396e-02 5.07751380e-02 5.11333368e-02 + 5.14932360e-02 5.18548354e-02 5.22181351e-02 5.25831349e-02 5.29498347e-02 + 5.33182344e-02 5.36883341e-02 5.40601335e-02 5.44336326e-02 5.48088313e-02 + 5.51857296e-02 5.55643273e-02 5.59446244e-02 5.63266207e-02 5.67103163e-02 + 5.70957109e-02 5.74828046e-02 5.78715972e-02 5.82620886e-02 5.86542788e-02 + 5.90481677e-02 5.94437551e-02 5.98410410e-02 6.02400253e-02 6.06407080e-02 + 6.10430888e-02 6.14471678e-02 6.18529447e-02 6.22604197e-02 6.26695925e-02 + 6.30804630e-02 6.34930312e-02 6.39072970e-02 6.43232602e-02 6.47409209e-02 + 6.51602788e-02 6.55813340e-02 6.60040862e-02 6.64285354e-02 6.68546816e-02 + 6.72825245e-02 6.77120642e-02 6.81433005e-02 6.85762333e-02 6.90108625e-02 + 6.94471881e-02 6.98852099e-02 7.03249278e-02 7.07663417e-02 7.12094516e-02 + 7.16542573e-02 7.21007588e-02 7.25489558e-02 7.29988484e-02 7.34504365e-02 + 7.39037198e-02 7.43586984e-02 7.48153721e-02 7.52737408e-02 7.57338044e-02 + 7.61955628e-02 7.66590160e-02 7.71241637e-02 7.75910059e-02 7.80595425e-02 + 7.85297734e-02 7.90016985e-02 7.94753177e-02 7.99506308e-02 8.04276378e-02 + 8.09063385e-02 8.13867329e-02 8.18688208e-02 8.23526021e-02 8.28380768e-02 + 8.33252446e-02 8.38141056e-02 8.43046595e-02 8.47969063e-02 8.52908459e-02 + 8.57864782e-02 8.62838029e-02 8.67828201e-02 8.72835297e-02 8.77859314e-02 + 8.82900252e-02 8.87958110e-02 8.93032887e-02 8.98124581e-02 9.03233191e-02 + 9.08358717e-02 9.13501157e-02 9.18660509e-02 9.23836774e-02 9.29029949e-02 + 9.34240033e-02 9.39467025e-02 9.44710925e-02 9.49971730e-02 9.55249440e-02 + 9.60544054e-02 9.65855570e-02 9.71183987e-02 9.76529303e-02 9.81891519e-02 + 9.87270632e-02 9.92666641e-02 9.98079545e-02 1.00350934e-01 1.00895603e-01 + 1.01441962e-01 1.01990009e-01 1.02539745e-01 1.03091170e-01 1.03644283e-01 + 1.04199085e-01 1.04755576e-01 1.05313754e-01 1.05873621e-01 1.06435176e-01 + 1.06998419e-01 1.07563349e-01 1.08129968e-01 1.08698273e-01 1.09268266e-01 + 1.09839947e-01 1.10413314e-01 1.10988368e-01 1.11565110e-01 1.12143538e-01 + 1.12723652e-01 1.13305453e-01 1.13888941e-01 1.14474115e-01 1.15060974e-01 + 1.15649520e-01 1.16239751e-01 1.16831669e-01 1.17425271e-01 1.18020560e-01 + 1.18617533e-01 1.19216192e-01 1.19816535e-01 1.20418564e-01 1.21022277e-01 + 1.21627675e-01 1.22234757e-01 1.22843524e-01 1.23453975e-01 1.24066109e-01 + 1.24679928e-01 1.25295431e-01 1.25912617e-01 1.26531487e-01 1.27152040e-01 + 1.27774276e-01 1.28398196e-01 1.29023798e-01 1.29651083e-01 1.30280051e-01 + 1.30910702e-01 1.31543034e-01 1.32177050e-01 1.32812747e-01 1.33450126e-01 + 1.34089187e-01 1.34729929e-01 1.35372353e-01 1.36016459e-01 1.36662246e-01 + 1.37309713e-01 1.37958862e-01 1.38609692e-01 1.39262202e-01 1.39916393e-01 + 1.40572264e-01 1.41229815e-01 1.41889046e-01 1.42549958e-01 1.43212549e-01 + 1.43876819e-01 1.44542770e-01 1.45210399e-01 1.45879708e-01 1.46550695e-01 + 1.47223362e-01 1.47897707e-01 1.48573731e-01 1.49251433e-01 1.49930814e-01 + 1.50611872e-01 1.51294609e-01 1.51979023e-01 1.52665115e-01 1.53352885e-01 + 1.54042332e-01 1.54733456e-01 1.55426257e-01 1.56120735e-01 1.56816890e-01 + 1.57514721e-01 1.58214229e-01 1.58915413e-01 1.59618273e-01 1.60322809e-01 + 1.61029020e-01 1.61736908e-01 1.62446471e-01 1.63157709e-01 1.63870622e-01 + 1.64585210e-01 1.65301473e-01 1.66019411e-01 1.66739023e-01 1.67460310e-01 + 1.68183271e-01 1.68907906e-01 1.69634214e-01 1.70362197e-01 1.71091853e-01 + 1.71823182e-01 1.72556184e-01 1.73290860e-01 1.74027208e-01 1.74765229e-01 + 1.75504923e-01 1.76246289e-01 1.76989327e-01 1.77734037e-01 1.78480419e-01 + 1.79228473e-01 1.79978199e-01 1.80729595e-01 1.81482663e-01 1.82237402e-01 + 1.82993812e-01 1.83751893e-01 1.84511644e-01 1.85273065e-01 1.86036157e-01 + 1.86800919e-01 1.87567350e-01 1.88335451e-01 1.89105222e-01 1.89876662e-01 + 1.90649771e-01 1.91424549e-01 1.92200996e-01 1.92979112e-01 1.93758896e-01 + 1.94540348e-01 1.95323469e-01 1.96108257e-01 1.96894713e-01 1.97682837e-01 + 1.98472628e-01 1.99264087e-01 2.00057212e-01 2.00852004e-01 2.01648463e-01 + 2.02446589e-01 2.03246381e-01 2.04047839e-01 2.04850963e-01 2.05655753e-01 + 2.06462208e-01 2.07270329e-01 2.08080115e-01 2.08891567e-01 2.09704683e-01 + 2.10519464e-01 2.11335909e-01 2.12154019e-01 2.12973793e-01 2.13795231e-01 + 2.14618333e-01 2.15443098e-01 2.16269527e-01 2.17097619e-01 2.17927374e-01 + 2.18758792e-01 2.19591873e-01 2.20426616e-01 2.21263022e-01 2.22101090e-01 + 2.22940819e-01 2.23782211e-01 2.24625264e-01 2.25469978e-01 2.26316354e-01 + 2.27164390e-01 2.28014088e-01 2.28865446e-01 2.29718464e-01 2.30573143e-01 + 2.31429482e-01 2.32287480e-01 2.33147139e-01 2.34008457e-01 2.34871434e-01 + 2.35736070e-01 2.36602365e-01 2.37470319e-01 2.38339931e-01 2.39211202e-01 + 2.40084131e-01 2.40958717e-01 2.41834962e-01 2.42712864e-01 2.43592423e-01 + 2.44473640e-01 2.45356513e-01 2.46241044e-01 2.47127230e-01 2.48015074e-01 + 2.48904573e-01 2.49795728e-01 2.50688539e-01 2.51583006e-01 2.52479128e-01 + 2.53376905e-01 2.54276337e-01 2.55177424e-01 2.56080166e-01 2.56984562e-01 + 2.57890612e-01 2.58798316e-01 2.59707674e-01 2.60618685e-01 2.61531350e-01 + 2.62445667e-01 2.63361638e-01 2.64279262e-01 2.65198538e-01 2.66119466e-01 + 2.67042047e-01 2.67966279e-01 2.68892164e-01 2.69819699e-01 2.70748886e-01 + 2.71679724e-01 2.72612213e-01 2.73546353e-01 2.74482143e-01 2.75419584e-01 + 2.76358674e-01 2.77299415e-01 2.78241805e-01 2.79185844e-01 2.80131533e-01 + 2.81078870e-01 2.82027857e-01 2.82978492e-01 2.83930775e-01 2.84884707e-01 + 2.85840287e-01 2.86797514e-01 2.87756389e-01 2.88716911e-01 2.89679080e-01 + 2.90642896e-01 2.91608359e-01 2.92575468e-01 2.93544224e-01 2.94514625e-01 + 2.95486673e-01 2.96460366e-01 2.97435704e-01 2.98412687e-01 2.99391316e-01 + 3.00371589e-01 3.01353507e-01 3.02337069e-01 3.03322275e-01 3.04309125e-01 + 3.05297618e-01 3.06287755e-01 3.07279535e-01 3.08272958e-01 3.09268024e-01 + 3.10264733e-01 3.11263084e-01 3.12263076e-01 3.13264711e-01 3.14267987e-01 + 3.15272905e-01 3.16279464e-01 3.17287664e-01 3.18297505e-01 3.19308986e-01 + 3.20322108e-01 3.21336869e-01 3.22353271e-01 3.23371312e-01 3.24390992e-01 + 3.25412312e-01 3.26435271e-01 3.27459868e-01 3.28486104e-01 3.29513978e-01 + 3.30543490e-01 3.31574640e-01 3.32607428e-01 3.33641852e-01 3.34677914e-01 + 3.35715613e-01 3.36754949e-01 3.37795921e-01 3.38838529e-01 3.39882774e-01 + 3.40928653e-01 3.41976169e-01 3.43025320e-01 3.44076105e-01 3.45128526e-01 + 3.46182581e-01 3.47238271e-01 3.48295594e-01 3.49354552e-01 3.50415143e-01 + 3.51477368e-01 3.52541225e-01 3.53606716e-01 3.54673839e-01 3.55742595e-01 + 3.56812983e-01 3.57885003e-01 3.58958655e-01 3.60033939e-01 3.61110853e-01 + 3.62189399e-01 3.63269575e-01 3.64351382e-01 3.65434820e-01 3.66519887e-01 + 3.67606584e-01 3.68694911e-01 3.69784868e-01 3.70876453e-01 3.71969667e-01 + 3.73064510e-01 3.74160981e-01 3.75259081e-01 3.76358808e-01 3.77460163e-01 + 3.78563145e-01 3.79667755e-01 3.80773992e-01 3.81881855e-01 3.82991344e-01 + 3.84102460e-01 3.85215202e-01 3.86329570e-01 3.87445563e-01 3.88563181e-01 + 3.89682424e-01 3.90803292e-01 3.91925784e-01 3.93049901e-01 3.94175642e-01 + 3.95303006e-01 3.96431994e-01 3.97562605e-01 3.98694839e-01 3.99828696e-01 + 4.00964175e-01 4.02101276e-01 4.03240000e-01 4.04380345e-01 4.05522312e-01 + 4.06665899e-01 4.07811108e-01 4.08957938e-01 4.10106388e-01 4.11256458e-01 + 4.12408148e-01 4.13561458e-01 4.14716388e-01 4.15872936e-01 4.17031104e-01 + 4.18190890e-01 4.19352295e-01 4.20515317e-01 4.21679958e-01 4.22846216e-01 + 4.24014092e-01 4.25183585e-01 4.26354695e-01 4.27527421e-01 4.28701764e-01 + 4.29877723e-01 4.31055298e-01 4.32234488e-01 4.33415294e-01 4.34597715e-01 + 4.35781751e-01 4.36967401e-01 4.38154665e-01 4.39343544e-01 4.40534036e-01 + 4.41726142e-01 4.42919861e-01 4.44115193e-01 4.45312138e-01 4.46510695e-01 + 4.47710864e-01 4.48912645e-01 4.50116038e-01 4.51321043e-01 4.52527658e-01 + 4.53735885e-01 4.54945722e-01 4.56157169e-01 4.57370226e-01 4.58584894e-01 + 4.59801170e-01 4.61019056e-01 4.62238551e-01 4.63459655e-01 4.64682367e-01 + 4.65906688e-01 4.67132616e-01 4.68360152e-01 4.69589295e-01 4.70820046e-01 + 4.72052403e-01 4.73286367e-01 4.74521937e-01 4.75759113e-01 4.76997895e-01 + 4.78238283e-01 4.79480276e-01 4.80723873e-01 4.81969076e-01 4.83215882e-01 + 4.84464293e-01 4.85714308e-01 4.86965926e-01 4.88219148e-01 4.89473972e-01 + 4.90730400e-01 4.91988430e-01 4.93248062e-01 4.94509296e-01 4.95772131e-01 + 4.97036568e-01 4.98302606e-01 4.99570245e-01 5.00839485e-01 5.02110324e-01 + 5.03382764e-01 5.04656804e-01 5.05932442e-01 5.07209680e-01 5.08488517e-01 + 5.09768953e-01 5.11050986e-01 5.12334618e-01 5.13619847e-01 5.14906674e-01 + 5.16195098e-01 5.17485119e-01 5.18776737e-01 5.20069951e-01 5.21364761e-01 + 5.22661167e-01 5.23959168e-01 5.25258764e-01 5.26559955e-01 5.27862741e-01 + 5.29167122e-01 5.30473096e-01 5.31780664e-01 5.33089826e-01 5.34400580e-01 + 5.35712928e-01 5.37026868e-01 5.38342401e-01 5.39659526e-01 5.40978242e-01 + 5.42298550e-01 5.43620449e-01 5.44943939e-01 5.46269020e-01 5.47595691e-01 + 5.48923952e-01 5.50253802e-01 5.51585242e-01 5.52918272e-01 5.54252890e-01 + 5.55589096e-01 5.56926891e-01 5.58266274e-01 5.59607245e-01 5.60949803e-01 + 5.62293948e-01 5.63639680e-01 5.64986999e-01 5.66335903e-01 5.67686394e-01 + 5.69038470e-01 5.70392132e-01 5.71747378e-01 5.73104210e-01 5.74462626e-01 + 5.75822626e-01 5.77184210e-01 5.78547377e-01 5.79912128e-01 5.81278461e-01 + 5.82646378e-01 5.84015876e-01 5.85386957e-01 5.86759620e-01 5.88133864e-01 + 5.89509689e-01 5.90887095e-01 5.92266082e-01 5.93646649e-01 5.95028796e-01 + 5.96412522e-01 5.97797828e-01 5.99184713e-01 6.00573177e-01 6.01963219e-01 + 6.03354840e-01 6.04748038e-01 6.06142814e-01 6.07539167e-01 6.08937097e-01 + 6.10336603e-01 6.11737686e-01 6.13140346e-01 6.14544580e-01 6.15950391e-01 + 6.17357776e-01 6.18766736e-01 6.20177271e-01 6.21589379e-01 6.23003062e-01 + 6.24418319e-01 6.25835148e-01 6.27253551e-01 6.28673526e-01 6.30095073e-01 + 6.31518193e-01 6.32942884e-01 6.34369147e-01 6.35796981e-01 6.37226386e-01 + 6.38657361e-01 6.40089906e-01 6.41524022e-01 6.42959706e-01 6.44396960e-01 + 6.45835783e-01 6.47276175e-01 6.48718135e-01 6.50161663e-01 6.51606758e-01 + 6.53053421e-01 6.54501651e-01 6.55951448e-01 6.57402811e-01 6.58855740e-01 + 6.60310236e-01 6.61766296e-01 6.63223922e-01 6.64683112e-01 6.66143868e-01 + 6.67606187e-01 6.69070070e-01 6.70535517e-01 6.72002527e-01 6.73471100e-01 + 6.74941236e-01 6.76412934e-01 6.77886194e-01 6.79361015e-01 6.80837398e-01 + 1.38518338e-01 1.38476565e-01 1.38434740e-01 1.38392864e-01 1.38350938e-01 + 1.38308960e-01 1.38266931e-01 1.38224851e-01 1.38182720e-01 1.38140538e-01 + 1.38098305e-01 1.38056020e-01 1.38013684e-01 1.37971296e-01 1.37928857e-01 + 1.37886366e-01 1.37843824e-01 1.37801230e-01 1.37758585e-01 1.37715888e-01 + 1.37673139e-01 1.37630338e-01 1.37587486e-01 1.37544581e-01 1.37501625e-01 + 1.37458617e-01 1.37415556e-01 1.37372444e-01 1.37329279e-01 1.37286062e-01 + 1.37242794e-01 1.37199472e-01 1.37156099e-01 1.37112673e-01 1.37069195e-01 + 1.37025664e-01 1.36982081e-01 1.36938445e-01 1.36894757e-01 1.36851016e-01 + 1.36807222e-01 1.36763376e-01 1.36719477e-01 1.36675525e-01 1.36631520e-01 + 1.36587463e-01 1.36543352e-01 1.36499189e-01 1.36454972e-01 1.36410702e-01 + 1.36366380e-01 1.36322004e-01 1.36277574e-01 1.36233092e-01 1.36188556e-01 + 1.36143967e-01 1.36099325e-01 1.36054629e-01 1.36009880e-01 1.35965077e-01 + 1.35920221e-01 1.35875311e-01 1.35830347e-01 1.35785330e-01 1.35740259e-01 + 1.35695134e-01 1.35649956e-01 1.35604723e-01 1.35559437e-01 1.35514096e-01 + 1.35468702e-01 1.35423254e-01 1.35377752e-01 1.35332195e-01 1.35286585e-01 + 1.35240920e-01 1.35195201e-01 1.35149428e-01 1.35103600e-01 1.35057718e-01 + 1.35011782e-01 1.34965791e-01 1.34919746e-01 1.34873646e-01 1.34827492e-01 + 1.34781283e-01 1.34735020e-01 1.34688702e-01 1.34642329e-01 1.34595901e-01 + 1.34549419e-01 1.34502882e-01 1.34456290e-01 1.34409643e-01 1.34362941e-01 + 1.34316184e-01 1.34269372e-01 1.34222505e-01 1.34175583e-01 1.34128606e-01 + 1.34081573e-01 1.34034486e-01 1.33987343e-01 1.33940145e-01 1.33892892e-01 + 1.33845583e-01 1.33798219e-01 1.33750799e-01 1.33703324e-01 1.33655794e-01 + 1.33608207e-01 1.33560566e-01 1.33512869e-01 1.33465116e-01 1.33417307e-01 + 1.33369443e-01 1.33321523e-01 1.33273547e-01 1.33225515e-01 1.33177428e-01 + 1.33129285e-01 1.33081085e-01 1.33032830e-01 1.32984519e-01 1.32936152e-01 + 1.32887728e-01 1.32839249e-01 1.32790713e-01 1.32742122e-01 1.32693474e-01 + 1.32644770e-01 1.32596010e-01 1.32547193e-01 1.32498320e-01 1.32449391e-01 + 1.32400405e-01 1.32351363e-01 1.32302265e-01 1.32253110e-01 1.32203899e-01 + 1.32154631e-01 1.32105306e-01 1.32055925e-01 1.32006488e-01 1.31956993e-01 + 1.31907442e-01 1.31857835e-01 1.31808170e-01 1.31758449e-01 1.31708671e-01 + 1.31658836e-01 1.31608945e-01 1.31558996e-01 1.31508991e-01 1.31458929e-01 + 1.31408809e-01 1.31358633e-01 1.31308400e-01 1.31258110e-01 1.31207762e-01 + 1.31157358e-01 1.31106897e-01 1.31056378e-01 1.31005802e-01 1.30955169e-01 + 1.30904479e-01 1.30853732e-01 1.30802927e-01 1.30752065e-01 1.30701146e-01 + 1.30650170e-01 1.30599136e-01 1.30548045e-01 1.30496896e-01 1.30445690e-01 + 1.30394426e-01 1.30343106e-01 1.30291727e-01 1.30240291e-01 1.30188798e-01 + 1.30137247e-01 1.30085639e-01 1.30033973e-01 1.29982249e-01 1.29930468e-01 + 1.29878629e-01 1.29826732e-01 1.29774778e-01 1.29722766e-01 1.29670696e-01 + 1.29618569e-01 1.29566384e-01 1.29514141e-01 1.29461841e-01 1.29409482e-01 + 1.29357066e-01 1.29304592e-01 1.29252060e-01 1.29199470e-01 1.29146823e-01 + 1.29094117e-01 1.29041354e-01 1.28988533e-01 1.28935654e-01 1.28882717e-01 + 1.28829721e-01 1.28776668e-01 1.28723557e-01 1.28670388e-01 1.28617161e-01 + 1.28563876e-01 1.28510533e-01 1.28457132e-01 1.28403673e-01 1.28350156e-01 + 1.28296581e-01 1.28242948e-01 1.28189256e-01 1.28135507e-01 1.28081699e-01 + 1.28027834e-01 1.27973910e-01 1.27919928e-01 1.27865888e-01 1.27811790e-01 + 1.27757634e-01 1.27703420e-01 1.27649147e-01 1.27594816e-01 1.27540427e-01 + 1.27485980e-01 1.27431475e-01 1.27376912e-01 1.27322290e-01 1.27267611e-01 + 1.27212873e-01 1.27158077e-01 1.27103223e-01 1.27048310e-01 1.26993340e-01 + 1.26938311e-01 1.26883224e-01 1.26828079e-01 1.26772875e-01 1.26717614e-01 + 1.26662294e-01 1.26606916e-01 1.26551480e-01 1.26495986e-01 1.26440433e-01 + 1.26384823e-01 1.26329154e-01 1.26273427e-01 1.26217642e-01 1.26161799e-01 + 1.26105898e-01 1.26049938e-01 1.25993920e-01 1.25937845e-01 1.25881711e-01 + 1.25825519e-01 1.25769269e-01 1.25712961e-01 1.25656594e-01 1.25600170e-01 + 1.25543688e-01 1.25487147e-01 1.25430549e-01 1.25373892e-01 1.25317178e-01 + 1.25260405e-01 1.25203574e-01 1.25146686e-01 1.25089739e-01 1.25032735e-01 + 1.24975672e-01 1.24918552e-01 1.24861374e-01 1.24804137e-01 1.24746843e-01 + 1.24689491e-01 1.24632082e-01 1.24574614e-01 1.24517089e-01 1.24459505e-01 + 1.24401864e-01 1.24344166e-01 1.24286409e-01 1.24228595e-01 1.24170723e-01 + 1.24112794e-01 1.24054806e-01 1.23996762e-01 1.23938659e-01 1.23880499e-01 + 1.23822281e-01 1.23764006e-01 1.23705674e-01 1.23647284e-01 1.23588836e-01 + 1.23530331e-01 1.23471769e-01 1.23413149e-01 1.23354472e-01 1.23295737e-01 + 1.23236946e-01 1.23178097e-01 1.23119190e-01 1.23060227e-01 1.23001206e-01 + 1.22942129e-01 1.22882994e-01 1.22823802e-01 1.22764553e-01 1.22705247e-01 + 1.22645884e-01 1.22586464e-01 1.22526988e-01 1.22467454e-01 1.22407864e-01 + 1.22348217e-01 1.22288513e-01 1.22228752e-01 1.22168935e-01 1.22109061e-01 + 1.22049130e-01 1.21989143e-01 1.21929100e-01 1.21869000e-01 1.21808843e-01 + 1.21748630e-01 1.21688361e-01 1.21628036e-01 1.21567654e-01 1.21507216e-01 + 1.21446722e-01 1.21386172e-01 1.21325566e-01 1.21264904e-01 1.21204185e-01 + 1.21143411e-01 1.21082581e-01 1.21021696e-01 1.20960754e-01 1.20899757e-01 + 1.20838704e-01 1.20777596e-01 1.20716432e-01 1.20655212e-01 1.20593937e-01 + 1.20532607e-01 1.20471221e-01 1.20409780e-01 1.20348284e-01 1.20286733e-01 + 1.20225127e-01 1.20163465e-01 1.20101749e-01 1.20039978e-01 1.19978152e-01 + 1.19916271e-01 1.19854335e-01 1.19792345e-01 1.19730300e-01 1.19668200e-01 + 1.19606047e-01 1.19543838e-01 1.19481576e-01 1.19419259e-01 1.19356888e-01 + 1.19294463e-01 1.19231984e-01 1.19169450e-01 1.19106863e-01 1.19044222e-01 + 1.18981528e-01 1.18918779e-01 1.18855977e-01 1.18793122e-01 1.18730213e-01 + 1.18667250e-01 1.18604235e-01 1.18541166e-01 1.18478043e-01 1.18414868e-01 + 1.18351640e-01 1.18288359e-01 1.18225025e-01 1.18161638e-01 1.18098199e-01 + 1.18034707e-01 1.17971163e-01 1.17907566e-01 1.17843917e-01 1.17780216e-01 + 1.17716462e-01 1.17652656e-01 1.17588799e-01 1.17524889e-01 1.17460928e-01 + 1.17396915e-01 1.17332851e-01 1.17268735e-01 1.17204567e-01 1.17140349e-01 + 1.17076079e-01 1.17011757e-01 1.16947385e-01 1.16882962e-01 1.16818488e-01 + 1.16753964e-01 1.16689388e-01 1.16624762e-01 1.16560086e-01 1.16495360e-01 + 1.16430583e-01 1.16365756e-01 1.16300879e-01 1.16235952e-01 1.16170975e-01 + 1.16105949e-01 1.16040873e-01 1.15975748e-01 1.15910573e-01 1.15845349e-01 + 1.15780076e-01 1.15714754e-01 1.15649383e-01 1.15583963e-01 1.15518494e-01 + 1.15452977e-01 1.15387412e-01 1.15321798e-01 1.15256136e-01 1.15190426e-01 + 1.15124668e-01 1.15058862e-01 1.14993008e-01 1.14927107e-01 1.14861158e-01 + 1.14795162e-01 1.14729119e-01 1.14663029e-01 1.14596892e-01 1.14530707e-01 + 1.14464477e-01 1.14398199e-01 1.14331875e-01 1.14265505e-01 1.14199089e-01 + 1.14132627e-01 1.14066119e-01 1.13999565e-01 1.13932965e-01 1.13866320e-01 + 1.13799630e-01 1.13732894e-01 1.13666113e-01 1.13599288e-01 1.13532417e-01 + 1.13465503e-01 1.13398543e-01 1.13331539e-01 1.13264491e-01 1.13197399e-01 + 1.13130263e-01 1.13063084e-01 1.12995861e-01 1.12928594e-01 1.12861284e-01 + 1.12793931e-01 1.12726535e-01 1.12659096e-01 1.12591615e-01 1.12524091e-01 + 1.12456524e-01 1.12388916e-01 1.12321265e-01 1.12253573e-01 1.12185839e-01 + 1.12118063e-01 1.12050246e-01 1.11982388e-01 1.11914489e-01 1.11846549e-01 + 1.11778568e-01 1.11710547e-01 1.11642485e-01 1.11574383e-01 1.11506242e-01 + 1.11438060e-01 1.11369839e-01 1.11301578e-01 1.11233278e-01 1.11164939e-01 + 1.11096561e-01 1.11028144e-01 1.10959689e-01 1.10891195e-01 1.10822663e-01 + 1.10754093e-01 1.10685486e-01 1.10616840e-01 1.10548157e-01 1.10479437e-01 + 1.10410680e-01 1.10341886e-01 1.10273055e-01 1.10204188e-01 1.10135284e-01 + 1.10066345e-01 1.09997369e-01 1.09928358e-01 1.09859311e-01 1.09790229e-01 + 1.09721112e-01 1.09651960e-01 1.09582773e-01 1.09513552e-01 1.09444296e-01 + 1.09375007e-01 1.09305683e-01 1.09236326e-01 1.09166936e-01 1.09097512e-01 + 1.09028055e-01 1.08958566e-01 1.08889044e-01 1.08819489e-01 1.08749902e-01 + 1.08680284e-01 1.08610634e-01 1.08540952e-01 1.08471239e-01 1.08401495e-01 + 1.08331720e-01 1.08261914e-01 1.08192078e-01 1.08122212e-01 1.08052316e-01 + 1.07982391e-01 1.07912436e-01 1.07842452e-01 1.07772438e-01 1.07702397e-01 + 1.07632326e-01 1.07562227e-01 1.07492101e-01 1.07421946e-01 1.07351764e-01 + 1.07281555e-01 1.07211318e-01 1.07141055e-01 1.07070766e-01 1.07000449e-01 + 1.06930107e-01 1.06859739e-01 1.06789346e-01 1.06718927e-01 1.06648483e-01 + 1.06578015e-01 1.06507521e-01 1.06437004e-01 1.06366462e-01 1.06295897e-01 + 1.06225308e-01 1.06154696e-01 1.06084061e-01 1.06013403e-01 1.05942723e-01 + 1.05872021e-01 1.05801296e-01 1.05730551e-01 1.05659783e-01 1.05588995e-01 + 1.05518186e-01 1.05447356e-01 1.05376506e-01 1.05305636e-01 1.05234746e-01 + 1.05163837e-01 1.05092908e-01 1.05021961e-01 1.04950995e-01 1.04880011e-01 + 1.04809009e-01 1.04737989e-01 1.04666951e-01 1.04595897e-01 1.04524826e-01 + 1.04453738e-01 1.04382633e-01 1.04311513e-01 1.04240377e-01 1.04169226e-01 + 1.04098060e-01 1.04026878e-01 1.03955683e-01 1.03884473e-01 1.03813249e-01 + 1.03742012e-01 1.03670761e-01 1.03599498e-01 1.03528222e-01 1.03456933e-01 + 1.03385633e-01 1.03314321e-01 1.03242997e-01 1.03171662e-01 1.03100317e-01 + 1.03028961e-01 1.02957595e-01 1.02886219e-01 1.02814833e-01 1.02743439e-01 + 1.02672036e-01 1.02600624e-01 1.02529204e-01 1.02457776e-01 1.02386340e-01 + 1.02314898e-01 1.02243448e-01 1.02171992e-01 1.02100530e-01 1.02029062e-01 + 1.01957589e-01 1.01886110e-01 1.01814626e-01 1.01743138e-01 1.01671646e-01 + 1.01600150e-01 1.01528651e-01 1.01457148e-01 1.01385643e-01 1.01314135e-01 + 1.01242625e-01 1.01171114e-01 1.01099601e-01 1.01028087e-01 1.00956573e-01 + 1.00885058e-01 1.00813543e-01 1.00742029e-01 1.00670515e-01 1.00599003e-01 + 1.00527492e-01 1.00455983e-01 1.00384477e-01 1.00312973e-01 1.00241472e-01 + 1.00169974e-01 1.00098480e-01 1.00026990e-01 9.99555050e-02 9.98840245e-02 + 9.98125493e-02 9.97410797e-02 9.96696161e-02 9.95981588e-02 9.95267084e-02 + 9.94552650e-02 9.93838292e-02 9.93124014e-02 9.92409818e-02 9.91695709e-02 + 9.90981691e-02 9.90267768e-02 9.89553944e-02 9.88840222e-02 9.88126607e-02 + 9.87413103e-02 9.86699713e-02 9.85986441e-02 9.85273293e-02 9.84560271e-02 + 9.83847379e-02 9.83134622e-02 9.82422004e-02 9.81709529e-02 9.80997201e-02 + 9.80285023e-02 9.79573001e-02 9.78861138e-02 9.78149439e-02 9.77437907e-02 + 9.76726547e-02 9.76015362e-02 9.75304358e-02 9.74593538e-02 9.73882907e-02 + 9.73172468e-02 9.72462226e-02 9.71752186e-02 9.71042351e-02 9.70332725e-02 + 9.69623314e-02 9.68914121e-02 9.68205151e-02 9.67496408e-02 9.66787897e-02 + 9.66079621e-02 9.65371585e-02 9.64663793e-02 9.63956251e-02 9.63248961e-02 + 9.62541930e-02 9.61835160e-02 9.61128657e-02 9.60422425e-02 9.59716469e-02 + 9.59010792e-02 9.58305400e-02 9.57600297e-02 9.56895487e-02 9.56190976e-02 + 9.55486767e-02 9.54782865e-02 9.54079274e-02 9.53376000e-02 9.52673047e-02 + 9.51970419e-02 9.51268121e-02 9.50566158e-02 9.49864534e-02 9.49163254e-02 + 9.48462322e-02 9.47761744e-02 9.47061524e-02 9.46361667e-02 9.45662176e-02 + 9.44963058e-02 9.44264317e-02 9.43565957e-02 9.42867984e-02 9.42170402e-02 + 9.41473215e-02 9.40776429e-02 9.40080049e-02 9.39384078e-02 9.38688523e-02 + 9.37993388e-02 9.37298677e-02 9.36604397e-02 9.35910550e-02 9.35217143e-02 + 9.34524180e-02 9.33831666e-02 9.33139606e-02 9.32448006e-02 9.31756869e-02 + 9.31066201e-02 9.30376006e-02 9.29686291e-02 9.28997059e-02 9.28308316e-02 + 9.27620066e-02 9.26932315e-02 9.26245068e-02 9.25558330e-02 9.24872106e-02 + 9.24186400e-02 9.23501218e-02 9.22816566e-02 9.22132447e-02 9.21448867e-02 + 9.20765832e-02 9.20083346e-02 9.19401414e-02 9.18720042e-02 9.18039235e-02 + 9.17358998e-02 9.16679335e-02 9.16000253e-02 9.15321756e-02 9.14643850e-02 + 9.13966540e-02 9.13289830e-02 9.12613727e-02 9.11938235e-02 9.11263360e-02 + 9.10589106e-02 9.09915480e-02 9.09242486e-02 9.08570130e-02 9.07898417e-02 + 9.07227352e-02 9.06556940e-02 9.05887187e-02 9.05218099e-02 9.04549680e-02 + 9.03881935e-02 9.03214871e-02 9.02548492e-02 9.01882804e-02 9.01217813e-02 + 9.00553522e-02 8.99889939e-02 8.99227068e-02 8.98564915e-02 8.97903485e-02 + 8.97242783e-02 8.96582816e-02 8.95923588e-02 8.95265104e-02 8.94607371e-02 + 8.93950394e-02 8.93294177e-02 8.92638728e-02 8.91984050e-02 8.91330150e-02 + 8.90677033e-02 8.90024705e-02 8.89373170e-02 8.88722435e-02 8.88072505e-02 + 8.87423386e-02 8.86775083e-02 8.86127602e-02 8.85480947e-02 8.84835126e-02 + 8.84190142e-02 8.83546003e-02 8.82902712e-02 8.82260277e-02 8.81618702e-02 + 8.80977994e-02 8.80338157e-02 8.79699197e-02 8.79061120e-02 8.78423932e-02 + 8.77787637e-02 8.77152243e-02 8.76517753e-02 8.75884175e-02 8.75251513e-02 + 8.74619773e-02 8.73988961e-02 8.73359083e-02 8.72730143e-02 8.72102149e-02 + 8.71475104e-02 8.70849016e-02 8.70223890e-02 8.69599731e-02 8.68976544e-02 + 8.68354337e-02 8.67733114e-02 8.67112881e-02 8.66493644e-02 8.65875409e-02 + 8.65258180e-02 8.64641964e-02 8.64026767e-02 8.63412594e-02 8.62799451e-02 + 8.62187344e-02 8.61576278e-02 8.60966259e-02 8.60357293e-02 8.59749386e-02 + 8.59142542e-02 8.58536769e-02 8.57932071e-02 8.57328455e-02 8.56725925e-02 + 8.56124489e-02 8.55524151e-02 8.54924918e-02 8.54326794e-02 8.53729787e-02 + 8.53133900e-02 8.52539141e-02 8.51945515e-02 8.51353028e-02 8.50761685e-02 + 8.50171493e-02 8.49582456e-02 8.48994581e-02 8.48407874e-02 8.47822340e-02 + 8.47237984e-02 8.46654813e-02 8.46072833e-02 8.45492049e-02 8.44912466e-02 + 8.44334092e-02 8.43756930e-02 8.43180988e-02 8.42606271e-02 8.42032784e-02 + 8.41460533e-02 8.40889525e-02 8.40319764e-02 8.39751257e-02 8.39184009e-02 + 8.38618026e-02 8.38053314e-02 8.37489878e-02 8.36927724e-02 8.36366859e-02 + 8.35807286e-02 8.35249013e-02 8.34692046e-02 8.34136388e-02 8.33582048e-02 + 8.33029029e-02 8.32477338e-02 8.31926981e-02 8.31377963e-02 8.30830290e-02 + 8.30283967e-02 8.29739001e-02 8.29195397e-02 8.28653161e-02 8.28112297e-02 + 8.27572813e-02 8.27034714e-02 8.26498005e-02 8.25962691e-02 8.25428780e-02 + 8.24896276e-02 8.24365184e-02 8.23835511e-02 8.23307263e-02 8.22780444e-02 + 8.22255060e-02 8.21731118e-02 8.21208622e-02 8.20687579e-02 8.20167993e-02 + 8.19649871e-02 8.19133218e-02 8.18618039e-02 8.18104341e-02 8.17592128e-02 + 8.17081407e-02 8.16572182e-02 8.16064460e-02 8.15558245e-02 8.15053545e-02 + 8.14550363e-02 8.14048705e-02 8.13548578e-02 8.13049986e-02 8.12552935e-02 + 8.12057430e-02 8.11563478e-02 8.11071082e-02 8.10580250e-02 8.10090986e-02 + 8.09603295e-02 8.09117184e-02 8.08632657e-02 8.08149721e-02 8.07668379e-02 + 8.07188639e-02 8.06710504e-02 8.06233982e-02 8.05759075e-02 8.05285792e-02 + 8.04814136e-02 8.04344112e-02 8.03875727e-02 8.03408986e-02 8.02943893e-02 + 8.02480455e-02 8.02018675e-02 8.01558561e-02 8.01100116e-02 8.00643347e-02 + 8.00188258e-02 7.99734855e-02 7.99283142e-02 7.98833126e-02 7.98384810e-02 + 7.97938201e-02 7.97493304e-02 7.97050123e-02 7.96608664e-02 7.96168932e-02 + 7.95730933e-02 7.95294670e-02 7.94860149e-02 7.94427376e-02 7.93996355e-02 + 7.93567091e-02 7.93139590e-02 7.92713856e-02 7.92289895e-02 7.91867711e-02 + 7.91447310e-02 7.91028695e-02 7.90611873e-02 7.90196849e-02 7.89783626e-02 + 7.89372210e-02 7.88962607e-02 7.88554819e-02 7.88148854e-02 7.87744715e-02 + 7.87342407e-02 7.86941935e-02 7.86543304e-02 7.86146519e-02 7.85751584e-02 + 7.85358504e-02 7.84967284e-02 7.84577929e-02 7.84190442e-02 7.83804830e-02 + 7.83421096e-02 7.83039245e-02 7.82659282e-02 7.82281212e-02 7.81905038e-02 + 7.81530766e-02 7.81158400e-02 7.80787945e-02 7.80419405e-02 7.80052784e-02 + 7.79688088e-02 7.79325320e-02 7.78964485e-02 7.78605587e-02 7.78248631e-02 + 7.77893622e-02 7.77540563e-02 7.77189459e-02 7.76840314e-02 7.76493132e-02 + 7.76147919e-02 7.75804677e-02 7.75463412e-02 7.75124127e-02 7.74786828e-02 + 7.74451517e-02 7.74118199e-02 7.73786878e-02 7.73457559e-02 7.73130245e-02 + 7.72804941e-02 7.72481650e-02 7.72160377e-02 7.71841125e-02 7.71523900e-02 + 7.71208703e-02 7.70895541e-02 7.70584416e-02 7.70275332e-02 7.69968293e-02 + 7.69663304e-02 7.69360368e-02 7.69059488e-02 7.68760670e-02 7.68463915e-02 + 7.68169229e-02 7.67876614e-02 7.67586075e-02 7.67297616e-02 7.67011239e-02 + 7.66726949e-02 7.66444749e-02 7.66164642e-02 7.65886633e-02 7.65610725e-02 + 7.65336921e-02 7.65065225e-02 7.64795641e-02 7.64528171e-02 7.64262819e-02 + 7.63999589e-02 7.63738484e-02 7.63479508e-02 7.63222662e-02 7.62967952e-02 + 7.62715380e-02 7.62464950e-02 7.62216664e-02 7.61970526e-02 7.61726539e-02 + 7.61484706e-02 7.61245031e-02 7.61007516e-02 7.60772164e-02 7.60538979e-02 + 7.60307964e-02 7.60079121e-02 7.59852453e-02 7.59627964e-02 7.59405657e-02 + 7.59185533e-02 7.58967597e-02 7.58751851e-02 7.58538297e-02 7.58326939e-02 + 7.58117779e-02 7.57910820e-02 7.57706065e-02 7.57503516e-02 7.57303176e-02 + 7.57105048e-02 7.56909134e-02 7.56715437e-02 7.56523959e-02 7.56334703e-02 + 7.56147671e-02 7.55962866e-02 7.55780290e-02 7.55599946e-02 7.55421835e-02 + 7.55245961e-02 7.55072326e-02 7.54900931e-02 7.54731780e-02 7.54564874e-02 + 7.54400215e-02 7.54237806e-02 7.54077649e-02 7.53919746e-02 7.53764099e-02 + 7.53610711e-02 7.53459582e-02 7.53310716e-02 7.53164113e-02 7.53019777e-02 + 7.52877708e-02 7.52737910e-02 7.52600383e-02 7.52465130e-02 7.52332152e-02 + 7.52201451e-02 7.52073028e-02 7.51946887e-02 7.51823027e-02 7.51701451e-02 + 7.51582161e-02 7.51465158e-02 7.51350443e-02 7.51238019e-02 7.51127886e-02 + 7.51020046e-02 7.50914500e-02 7.50811251e-02 7.50710299e-02 7.50611645e-02 + 7.50515291e-02 7.50421239e-02 7.50329489e-02 7.50240043e-02 7.50152901e-02 + 7.50068066e-02 7.49985538e-02 7.49905318e-02 7.49827407e-02 7.49751807e-02 + 7.49678518e-02 7.49607542e-02 7.49538879e-02 7.49472530e-02 7.49408496e-02 + 7.49346779e-02 7.49287378e-02 7.49230295e-02 7.49175530e-02 7.49123084e-02 + 7.49072958e-02 7.49025153e-02 7.48979669e-02 7.48936506e-02 7.48895666e-02 + 7.48857148e-02 7.48820954e-02 7.48787084e-02 7.48755538e-02 7.48726317e-02 + 7.48699421e-02 7.48674851e-02 7.48652606e-02 7.48632687e-02 7.48615095e-02 + 7.48599830e-02 7.48586891e-02 7.48576279e-02 7.48567994e-02 7.48562037e-02 + 7.48558407e-02 7.48557104e-02 7.48558129e-02 7.48561481e-02 7.48567160e-02 + 7.48575167e-02 7.48585501e-02 7.48598162e-02 7.48613149e-02 7.48630464e-02 + 7.48650104e-02 7.48672071e-02 7.48696364e-02 7.48722982e-02 7.48751926e-02 + 7.48783194e-02 7.48816786e-02 7.48852703e-02 7.48890943e-02 7.48931506e-02 + 7.48974391e-02 7.49019598e-02 7.49067126e-02 7.49116975e-02 7.49169143e-02 + 7.49223631e-02 7.49280438e-02 7.49339562e-02 7.49401003e-02 7.49464760e-02 + 7.49530832e-02 7.49599219e-02 7.49669919e-02 7.49742931e-02 7.49818255e-02 + 7.49895890e-02 7.49975834e-02 7.50058087e-02 7.50142646e-02 7.50229512e-02 + 7.50318684e-02 7.50410158e-02 7.50503936e-02 7.50600015e-02 7.50698394e-02 + 7.50799072e-02 7.50902047e-02 7.51007318e-02 7.51114884e-02 7.51224743e-02 + 7.51336894e-02 7.51451335e-02 7.51568065e-02 7.51687082e-02 7.51808385e-02 + 7.51931972e-02 7.52057841e-02 7.52185991e-02 7.52316420e-02 7.52449126e-02 + 7.52584108e-02 7.52721363e-02 7.52860890e-02 7.53002688e-02 7.53146753e-02 + 7.53293085e-02 7.53441681e-02 7.53592540e-02 7.53745659e-02 7.53901036e-02 + 7.54058670e-02 7.54218558e-02 7.54380698e-02 7.54545087e-02 7.54711725e-02 + 7.54880609e-02 7.55051735e-02 7.55225103e-02 7.55400710e-02 7.55578553e-02 + 7.55758631e-02 7.55940940e-02 7.56125479e-02 7.56312245e-02 7.56501236e-02 + 7.56692448e-02 7.56885881e-02 7.57081530e-02 7.57279394e-02 7.57479470e-02 + 7.57681755e-02 7.57886247e-02 7.58092942e-02 7.58301840e-02 7.58512935e-02 + 7.58726227e-02 7.58941712e-02 7.59159386e-02 7.59379249e-02 7.59601296e-02 + 7.59825524e-02 7.60051932e-02 7.60280515e-02 7.60511271e-02 7.60744197e-02 + 7.60979290e-02 7.61216547e-02 7.61455964e-02 7.61697540e-02 7.61941269e-02 + 7.62187151e-02 7.62435180e-02 7.62685354e-02 7.62937671e-02 7.63192126e-02 + 7.63448716e-02 7.63707438e-02 7.63968289e-02 7.64231266e-02 7.64496364e-02 + 7.64763581e-02 7.65032913e-02 7.65304357e-02 7.65577909e-02 7.65853566e-02 + 7.66131325e-02 7.66411181e-02 7.66693131e-02 7.66977171e-02 7.67263299e-02 + 7.67551510e-02 7.67841801e-02 7.68134168e-02 7.68428607e-02 7.68725114e-02 + 7.69023687e-02 7.69324320e-02 7.69627011e-02 7.69931756e-02 7.70238549e-02 + 7.70547389e-02 7.70858271e-02 7.71171190e-02 7.71486144e-02 7.71803127e-02 + 7.72122137e-02 7.72443169e-02 7.72766219e-02 7.73091283e-02 7.73418357e-02 + 7.73747437e-02 7.74078518e-02 7.74411598e-02 7.74746671e-02 7.75083734e-02 + 7.75422781e-02 7.75763810e-02 7.76106816e-02 7.76451794e-02 7.76798741e-02 + 7.77147651e-02 7.77498522e-02 7.77851347e-02 7.78206124e-02 7.78562848e-02 + 7.78921513e-02 7.79282117e-02 7.79644654e-02 7.80009121e-02 7.80375512e-02 + 7.80743823e-02 7.81114050e-02 7.81486188e-02 7.81860233e-02 7.82236179e-02 + 7.82614023e-02 7.82993761e-02 7.83375386e-02 7.83758895e-02 7.84144284e-02 + 7.84531546e-02 7.84920679e-02 7.85311676e-02 7.85704534e-02 7.86099248e-02 + 7.86495813e-02 7.86894223e-02 7.87294475e-02 7.87696564e-02 7.88100485e-02 + 7.88506232e-02 7.88913802e-02 7.89323189e-02 7.89734389e-02 7.90147396e-02 + 7.90562205e-02 7.90978813e-02 7.91397213e-02 7.91817402e-02 7.92239373e-02 + 7.92663122e-02 7.93088645e-02 7.93515935e-02 7.93944988e-02 7.94375800e-02 + 7.94808364e-02 7.95242676e-02 7.95678731e-02 7.96116524e-02 7.96556049e-02 + 7.96997302e-02 7.97440277e-02 7.97884970e-02 7.98331374e-02 7.98779486e-02 + 7.99229300e-02 7.99680810e-02 8.00134012e-02 8.00588900e-02 8.01045468e-02 + 8.01503713e-02 8.01963628e-02 8.02425209e-02 8.02888450e-02 8.03353345e-02 + 8.03819890e-02 8.04288079e-02 8.04757907e-02 8.05229368e-02 8.05702458e-02 + 8.06177170e-02 8.06653500e-02 8.07131443e-02 8.07610992e-02 8.08092142e-02 + 8.08574888e-02 8.09059225e-02 8.09545148e-02 8.10032650e-02 8.10521726e-02 + 8.11012372e-02 8.11504581e-02 8.11998347e-02 8.12493667e-02 8.12990534e-02 + 8.13488942e-02 8.13988886e-02 8.14490361e-02 8.14993361e-02 8.15497881e-02 + 8.16003915e-02 8.16511457e-02 8.17020502e-02 8.17531045e-02 8.18043080e-02 + 8.18556601e-02 8.19071604e-02 8.19588081e-02 8.20106028e-02 8.20625439e-02 + 8.21146309e-02 8.21668631e-02 8.22192401e-02 8.22717613e-02 8.23244260e-02 + 8.23772339e-02 8.24301842e-02 8.24832764e-02 8.25365100e-02 8.25898843e-02 + 8.26433990e-02 8.26970532e-02 8.27508466e-02 8.28047785e-02 8.28588484e-02 + 8.29130557e-02 8.29673998e-02 8.30218801e-02 8.30764962e-02 8.31312474e-02 + 8.31861332e-02 8.32411529e-02 8.32963061e-02 8.33515922e-02 8.34070105e-02 + 8.34625605e-02 8.35182417e-02 8.35740534e-02 8.36299951e-02 8.36860663e-02 + 8.37422663e-02 8.37985946e-02 8.38550506e-02 8.39116338e-02 8.39683435e-02 + 8.40251792e-02 8.40821403e-02 8.41392263e-02 8.41964365e-02 8.42537705e-02 + 8.43112275e-02 8.43688072e-02 8.44265088e-02 8.44843318e-02 8.45422756e-02 + 8.46003397e-02 8.46585235e-02 8.47168264e-02 8.47752478e-02 8.48337872e-02 + 8.48924439e-02 8.49512175e-02 8.50101073e-02 8.50691128e-02 8.51282334e-02 + 8.51874685e-02 8.52468175e-02 8.53062799e-02 8.53658551e-02 8.54255425e-02 + 8.54853415e-02 8.55452516e-02 8.56052723e-02 8.56654028e-02 8.57256427e-02 + 8.57859914e-02 8.58464483e-02 8.59070128e-02 8.59676844e-02 8.60284625e-02 + 8.60893465e-02 8.61503358e-02 8.62114299e-02 8.62726282e-02 8.63339302e-02 + 8.63953352e-02 8.64568427e-02 8.65184522e-02 8.65801629e-02 8.66419745e-02 + 8.67038863e-02 8.67658977e-02 8.68280082e-02 8.68902172e-02 8.69525242e-02 + 8.70149285e-02 8.70774296e-02 8.71400270e-02 8.72027200e-02 8.72655081e-02 + 8.73283908e-02 8.73913675e-02 8.74544376e-02 8.75176005e-02 8.75808557e-02 + 8.76442026e-02 8.77076407e-02 8.77711694e-02 8.78347881e-02 8.78984963e-02 + 8.79622934e-02 8.80261789e-02 8.80901521e-02 8.81542126e-02 8.82183598e-02 + 8.82825930e-02 8.83469119e-02 8.84113157e-02 8.84758040e-02 8.85403762e-02 + 8.86050317e-02 8.86697700e-02 8.87345905e-02 8.87994927e-02 8.88644761e-02 + 8.89295400e-02 8.89946839e-02 8.90599073e-02 8.91252096e-02 8.91905903e-02 + 8.92560488e-02 8.93215845e-02 8.93871970e-02 8.94528857e-02 8.95186500e-02 + 8.95844894e-02 8.96504034e-02 8.97163914e-02 8.97824528e-02 8.98485871e-02 + 8.99147938e-02 8.99810724e-02 9.00474222e-02 9.01138428e-02 9.01803336e-02 + 9.02468942e-02 9.03135238e-02 9.03802221e-02 9.04469884e-02 9.05138223e-02 + 9.05807232e-02 9.06476906e-02 9.07147239e-02 9.07818226e-02 9.08489862e-02 + 9.09162142e-02 9.09835060e-02 9.10508611e-02 9.11182790e-02 9.11857591e-02 + 9.12533009e-02 9.13209040e-02 9.13885677e-02 9.14562916e-02 9.15240751e-02 + 9.15919178e-02 9.16598190e-02 9.17277784e-02 9.17957953e-02 9.18638692e-02 + 9.19319997e-02 9.20001862e-02 9.20684282e-02 9.21367252e-02 9.22050767e-02 + 9.22734821e-02 9.23419411e-02 9.24104530e-02 9.24790173e-02 9.25476336e-02 + 9.26163013e-02 9.26850199e-02 9.27537890e-02 9.28226080e-02 9.28914765e-02 + 9.29603938e-02 9.30293596e-02 9.30983734e-02 9.31674346e-02 9.32365427e-02 + 9.33056973e-02 9.33748978e-02 9.34441438e-02 9.35134347e-02 9.35827701e-02 + 9.36521496e-02 9.37215725e-02 9.37910385e-02 9.38605469e-02 9.39300975e-02 + 9.39996895e-02 9.40693227e-02 9.41389965e-02 9.42087104e-02 9.42784639e-02 + 9.43482566e-02 9.44180880e-02 9.44879576e-02 9.45578649e-02 9.46278095e-02 + 9.46977909e-02 9.47678086e-02 9.48378622e-02 9.49079511e-02 9.49780750e-02 + 9.50482333e-02 9.51184256e-02 9.51886514e-02 9.52589103e-02 9.53292017e-02 + 9.53995254e-02 9.54698806e-02 9.55402671e-02 9.56106844e-02 9.56811320e-02 + 9.57516094e-02 9.58221162e-02 9.58926520e-02 9.59632163e-02 9.60338086e-02 + 9.61044286e-02 9.61750756e-02 9.62457494e-02 9.63164495e-02 9.63871754e-02 + 9.64579266e-02 9.65287028e-02 9.65995035e-02 9.66703283e-02 9.67411766e-02 + 9.68120482e-02 9.68829425e-02 9.69538592e-02 9.70247977e-02 9.70957577e-02 + 9.71667387e-02 9.72377403e-02 9.73087621e-02 9.73798037e-02 9.74508645e-02 + 9.75219443e-02 9.75930426e-02 9.76641589e-02 9.77352928e-02 9.78064440e-02 + 9.78776119e-02 9.79487963e-02 9.80199966e-02 9.80912125e-02 9.81624436e-02 + 9.82336894e-02 9.83049495e-02 9.83762235e-02 9.84475111e-02 9.85188118e-02 + 9.85901251e-02 9.86614508e-02 9.87327884e-02 9.88041375e-02 9.88754977e-02 + 9.89468687e-02 9.90182499e-02 9.90896410e-02 9.91610417e-02 9.92324515e-02 + 9.93038701e-02 9.93752970e-02 9.94467318e-02 9.95181743e-02 9.95896239e-02 + 9.96610804e-02 9.97325432e-02 9.98040122e-02 9.98754867e-02 9.99469666e-02 + 1.00018451e-01 1.00089941e-01 1.00161434e-01 1.00232931e-01 1.00304432e-01 + 1.00375936e-01 1.00447442e-01 1.00518951e-01 1.00590461e-01 1.00661973e-01 + 1.00733487e-01 1.00805001e-01 1.00876516e-01 1.00948030e-01 1.01019545e-01 + 1.01091059e-01 1.01162572e-01 1.01234084e-01 1.01305594e-01 1.01377102e-01 + 1.01448607e-01 1.01520110e-01 1.01591610e-01 1.01663106e-01 1.01734599e-01 + 1.01806088e-01 1.01877572e-01 1.01949051e-01 1.02020525e-01 1.02091994e-01 + 1.02163457e-01 1.02234914e-01 1.02306364e-01 1.02377807e-01 1.02449244e-01 + 1.02520672e-01 1.02592093e-01 1.02663506e-01 1.02734911e-01 1.02806306e-01 + 1.02877693e-01 1.02949070e-01 1.03020437e-01 1.03091794e-01 1.03163141e-01 + 1.03234477e-01 1.03305802e-01 1.03377115e-01 1.03448417e-01 1.03519707e-01 + 1.03590985e-01 1.03662250e-01 1.03733502e-01 1.03804741e-01 1.03875966e-01 + 1.03947178e-01 1.04018375e-01 1.04089558e-01 1.04160726e-01 1.04231879e-01 + 1.04303017e-01 1.04374139e-01 1.04445245e-01 1.04516335e-01 1.04587409e-01 + 1.04658465e-01 1.04729504e-01 1.04800527e-01 1.04871531e-01 1.04942517e-01 + 1.05013485e-01 1.05084435e-01 1.05155365e-01 1.05226277e-01 1.05297169e-01 + 1.05368041e-01 1.05438894e-01 1.05509726e-01 1.05580538e-01 1.05651329e-01 + 1.05722099e-01 1.05792847e-01 1.05863574e-01 1.05934279e-01 1.06004962e-01 + 1.06075622e-01 1.06146260e-01 1.06216875e-01 1.06287467e-01 1.06358035e-01 + 1.06428579e-01 1.06499100e-01 1.06569596e-01 1.06640067e-01 1.06710514e-01 + 1.06780936e-01 1.06851332e-01 1.06921703e-01 1.06992049e-01 1.07062368e-01 + 1.07132661e-01 1.07202927e-01 1.07273167e-01 1.07343379e-01 1.07413565e-01 + 1.07483722e-01 1.07553852e-01 1.07623955e-01 1.07694028e-01 1.07764074e-01 + 1.07834090e-01 1.07904078e-01 1.07974036e-01 1.08043966e-01 1.08113865e-01 + 1.08183735e-01 1.08253574e-01 1.08323383e-01 1.08393162e-01 1.08462910e-01 + 1.08532626e-01 1.08602312e-01 1.08671966e-01 1.08741588e-01 1.08811179e-01 + 1.08880737e-01 1.08950263e-01 1.09019757e-01 1.09089217e-01 1.09158645e-01 + 1.09228040e-01 1.09297401e-01 1.09366728e-01 1.09436022e-01 1.09505281e-01 + 1.09574507e-01 1.09643698e-01 1.09712854e-01 1.09781975e-01 1.09851061e-01 + 1.09920112e-01 1.09989128e-01 1.10058108e-01 1.10127052e-01 1.10195959e-01 + 1.10264831e-01 1.10333666e-01 1.10402465e-01 1.10471226e-01 1.10539951e-01 + 1.10608638e-01 1.10677288e-01 1.10745900e-01 1.10814475e-01 1.10883011e-01 + 1.10951510e-01 1.11019970e-01 1.11088391e-01 1.11156774e-01 1.11225117e-01 + 1.11293422e-01 1.11361687e-01 1.11429913e-01 1.11498100e-01 1.11566246e-01 + 1.11634353e-01 1.11702419e-01 1.11770445e-01 1.11838431e-01 1.11906376e-01 + 1.11974280e-01 1.12042143e-01 1.12109965e-01 1.12177745e-01 1.12245484e-01 + 1.12313182e-01 1.12380837e-01 1.12448451e-01 1.12516022e-01 1.12583551e-01 + 1.12651038e-01 1.12718482e-01 1.12785883e-01 1.12853241e-01 1.12920556e-01 + 1.12987828e-01 1.13055056e-01 1.13122241e-01 1.13189382e-01 1.13256480e-01 + 1.13323533e-01 1.13390542e-01 1.13457507e-01 1.13524427e-01 1.13591303e-01 + 1.13658134e-01 1.13724920e-01 1.13791661e-01 1.13858356e-01 1.13925007e-01 + 1.13991612e-01 1.14058171e-01 1.14124685e-01 1.14191153e-01 1.14257575e-01 + 1.14323950e-01 1.14390280e-01 1.14456562e-01 1.14522799e-01 1.14588988e-01 + 1.14655131e-01 1.14721227e-01 1.14787276e-01 1.14853278e-01 1.14919232e-01 + 1.14985139e-01 1.15050998e-01 1.15116810e-01 1.15182574e-01 1.15248290e-01 + 1.15313957e-01 1.15379577e-01 1.15445148e-01 1.15510671e-01 1.15576146e-01 + 1.15641571e-01 1.15706948e-01 1.15772276e-01 1.15837555e-01 1.15902785e-01 + 1.15967965e-01 1.16033097e-01 1.16098179e-01 1.16163211e-01 1.16228193e-01 + 1.16293126e-01 1.16358009e-01 1.16422842e-01 1.16487625e-01 1.16552357e-01 + 1.16617040e-01 1.16681672e-01 1.16746253e-01 1.16810784e-01 1.16875264e-01 + 1.16939693e-01 1.17004071e-01 1.17068398e-01 1.17132674e-01 1.17196899e-01 + 1.17261073e-01 1.17325195e-01 1.17389266e-01 1.17453285e-01 1.17517252e-01 + 1.17581168e-01 1.17645032e-01 1.17708843e-01 1.17772603e-01 1.17836311e-01 + 1.17899966e-01 1.17963569e-01 1.18027120e-01 1.18090618e-01 1.18154064e-01 + 1.18217457e-01 1.18280797e-01 1.18344084e-01 1.18407319e-01 1.18470500e-01 + 1.18533629e-01 1.18596704e-01 1.18659726e-01 1.18722695e-01 1.18785610e-01 + 1.18848472e-01 1.18911281e-01 1.18974035e-01 1.19036736e-01 1.19099384e-01 + 2.08130000e-04 2.08281191e-04 2.08734762e-04 2.09490714e-04 2.10549046e-04 + 2.11909757e-04 2.13572846e-04 2.15538310e-04 2.17806148e-04 2.20376358e-04 + 2.23248936e-04 2.26423882e-04 2.29901190e-04 2.33680858e-04 2.37762883e-04 + 2.42147260e-04 2.46833984e-04 2.51823051e-04 2.57114457e-04 2.62708196e-04 + 2.68604263e-04 2.74802652e-04 2.81303356e-04 2.88106370e-04 2.95211687e-04 + 3.02619299e-04 3.10329200e-04 3.18341382e-04 3.26655837e-04 3.35272557e-04 + 3.44191533e-04 3.53412758e-04 3.62936221e-04 3.72761913e-04 3.82889825e-04 + 3.93319947e-04 4.04052269e-04 4.15086779e-04 4.26423468e-04 4.38062324e-04 + 4.50003336e-04 4.62246492e-04 4.74791780e-04 4.87639188e-04 5.00788703e-04 + 5.14240312e-04 5.27994002e-04 5.42049760e-04 5.56407572e-04 5.71067423e-04 + 5.86029300e-04 6.01293187e-04 6.16859071e-04 6.32726934e-04 6.48896763e-04 + 6.65368541e-04 6.82142252e-04 6.99217880e-04 7.16595407e-04 7.34274817e-04 + 7.52256092e-04 7.70539216e-04 7.89124169e-04 8.08010934e-04 8.27199493e-04 + 8.46689825e-04 8.66481913e-04 8.86575737e-04 9.06971278e-04 9.27668514e-04 + 9.48667427e-04 9.69967995e-04 9.91570198e-04 1.01347401e-03 1.03567942e-03 + 1.05818640e-03 1.08099493e-03 1.10410498e-03 1.12751654e-03 1.15122957e-03 + 1.17524406e-03 1.19955999e-03 1.22417733e-03 1.24909605e-03 1.27431613e-03 + 1.29983755e-03 1.32566029e-03 1.35178430e-03 1.37820958e-03 1.40493610e-03 + 1.43196382e-03 1.45929272e-03 1.48692278e-03 1.51485397e-03 1.54308626e-03 + 1.57161963e-03 1.60045404e-03 1.62958946e-03 1.65902588e-03 1.68876325e-03 + 1.71880156e-03 1.74914077e-03 1.77978085e-03 1.81072177e-03 1.84196351e-03 + 1.87350602e-03 1.90534929e-03 1.93749327e-03 1.96993795e-03 2.00268328e-03 + 2.03572923e-03 2.06907577e-03 2.10272288e-03 2.13667051e-03 2.17091863e-03 + 2.20546721e-03 2.24031622e-03 2.27546562e-03 2.31091538e-03 2.34666546e-03 + 2.38271583e-03 2.41906645e-03 2.45571729e-03 2.49266831e-03 2.52991947e-03 + 2.56747075e-03 2.60532209e-03 2.64347347e-03 2.68192485e-03 2.72067619e-03 + 2.75972745e-03 2.79907859e-03 2.83872959e-03 2.87868038e-03 2.91893095e-03 + 2.95948125e-03 3.00033123e-03 3.04148087e-03 3.08293011e-03 3.12467892e-03 + 3.16672726e-03 3.20907509e-03 3.25172236e-03 3.29466904e-03 3.33791508e-03 + 3.38146044e-03 3.42530507e-03 3.46944894e-03 3.51389201e-03 3.55863422e-03 + 3.60367554e-03 3.64901591e-03 3.69465531e-03 3.74059367e-03 3.78683096e-03 + 3.83336714e-03 3.88020215e-03 3.92733595e-03 3.97476850e-03 4.02249975e-03 + 4.07052965e-03 4.11885815e-03 4.16748522e-03 4.21641079e-03 4.26563483e-03 + 4.31515728e-03 4.36497811e-03 4.41509725e-03 4.46551466e-03 4.51623029e-03 + 4.56724409e-03 4.61855601e-03 4.67016601e-03 4.72207403e-03 4.77428002e-03 + 4.82678393e-03 4.87958570e-03 4.93268530e-03 4.98608266e-03 5.03977774e-03 + 5.09377048e-03 5.14806083e-03 5.20264873e-03 5.25753414e-03 5.31271700e-03 + 5.36819725e-03 5.42397485e-03 5.48004973e-03 5.53642185e-03 5.59309115e-03 + 5.65005757e-03 5.70732106e-03 5.76488157e-03 5.82273903e-03 5.88089339e-03 + 5.93934459e-03 5.99809258e-03 6.05713731e-03 6.11647870e-03 6.17611671e-03 + 6.23605128e-03 6.29628235e-03 6.35680986e-03 6.41763375e-03 6.47875396e-03 + 6.54017044e-03 6.60188312e-03 6.66389194e-03 6.72619685e-03 6.78879778e-03 + 6.85169468e-03 6.91488748e-03 6.97837611e-03 7.04216053e-03 7.10624066e-03 + 7.17061645e-03 7.23528783e-03 7.30025474e-03 7.36551712e-03 7.43107490e-03 + 7.49692802e-03 7.56307641e-03 7.62952002e-03 7.69625878e-03 7.76329262e-03 + 7.83062147e-03 7.89824528e-03 7.96616398e-03 8.03437750e-03 8.10288577e-03 + 8.17168874e-03 8.24078632e-03 8.31017847e-03 8.37986510e-03 8.44984615e-03 + 8.52012155e-03 8.59069124e-03 8.66155515e-03 8.73271321e-03 8.80416535e-03 + 8.87591149e-03 8.94795158e-03 9.02028554e-03 9.09291331e-03 9.16583480e-03 + 9.23904995e-03 9.31255870e-03 9.38636096e-03 9.46045668e-03 9.53484577e-03 + 9.60952816e-03 9.68450379e-03 9.75977258e-03 9.83533445e-03 9.91118934e-03 + 9.98733717e-03 1.00637779e-02 1.01405114e-02 1.02175376e-02 1.02948564e-02 + 1.03724679e-02 1.04503718e-02 1.05285681e-02 1.06070568e-02 1.06858378e-02 + 1.07649109e-02 1.08442762e-02 1.09239335e-02 1.10038828e-02 1.10841240e-02 + 1.11646570e-02 1.12454817e-02 1.13265980e-02 1.14080060e-02 1.14897054e-02 + 1.15716963e-02 1.16539785e-02 1.17365519e-02 1.18194166e-02 1.19025723e-02 + 1.19860191e-02 1.20697568e-02 1.21537854e-02 1.22381047e-02 1.23227148e-02 + 1.24076155e-02 1.24928067e-02 1.25782883e-02 1.26640604e-02 1.27501227e-02 + 1.28364752e-02 1.29231179e-02 1.30100506e-02 1.30972732e-02 1.31847858e-02 + 1.32725881e-02 1.33606801e-02 1.34490618e-02 1.35377329e-02 1.36266936e-02 + 1.37159436e-02 1.38054829e-02 1.38953113e-02 1.39854289e-02 1.40758355e-02 + 1.41665311e-02 1.42575155e-02 1.43487886e-02 1.44403504e-02 1.45322008e-02 + 1.46243398e-02 1.47167671e-02 1.48094827e-02 1.49024866e-02 1.49957786e-02 + 1.50893587e-02 1.51832267e-02 1.52773826e-02 1.53718263e-02 1.54665577e-02 + 1.55615767e-02 1.56568832e-02 1.57524771e-02 1.58483584e-02 1.59445269e-02 + 1.60409825e-02 1.61377252e-02 1.62347549e-02 1.63320714e-02 1.64296747e-02 + 1.65275647e-02 1.66257413e-02 1.67242043e-02 1.68229538e-02 1.69219896e-02 + 1.70213116e-02 1.71209197e-02 1.72208138e-02 1.73209939e-02 1.74214598e-02 + 1.75222114e-02 1.76232487e-02 1.77245715e-02 1.78261798e-02 1.79280734e-02 + 1.80302523e-02 1.81327163e-02 1.82354654e-02 1.83384994e-02 1.84418184e-02 + 1.85454220e-02 1.86493104e-02 1.87534833e-02 1.88579407e-02 1.89626824e-02 + 1.90677084e-02 1.91730186e-02 1.92786129e-02 1.93844911e-02 1.94906532e-02 + 1.95970991e-02 1.97038286e-02 1.98108417e-02 1.99181382e-02 2.00257182e-02 + 2.01335813e-02 2.02417277e-02 2.03501571e-02 2.04588694e-02 2.05678646e-02 + 2.06771425e-02 2.07867031e-02 2.08965462e-02 2.10066717e-02 2.11170796e-02 + 2.12277697e-02 2.13387419e-02 2.14499962e-02 2.15615323e-02 2.16733503e-02 + 2.17854499e-02 2.18978311e-02 2.20104938e-02 2.21234379e-02 2.22366633e-02 + 2.23501698e-02 2.24639574e-02 2.25780260e-02 2.26923753e-02 2.28070055e-02 + 2.29219162e-02 2.30371074e-02 2.31525791e-02 2.32683311e-02 2.33843632e-02 + 2.35006755e-02 2.36172677e-02 2.37341397e-02 2.38512915e-02 2.39687230e-02 + 2.40864339e-02 2.42044243e-02 2.43226940e-02 2.44412429e-02 2.45600709e-02 + 2.46791779e-02 2.47985637e-02 2.49182282e-02 2.50381714e-02 2.51583931e-02 + 2.52788932e-02 2.53996717e-02 2.55207283e-02 2.56420629e-02 2.57636755e-02 + 2.58855660e-02 2.60077341e-02 2.61301799e-02 2.62529032e-02 2.63759039e-02 + 2.64991818e-02 2.66227368e-02 2.67465689e-02 2.68706779e-02 2.69950637e-02 + 2.71197262e-02 2.72446653e-02 2.73698808e-02 2.74953726e-02 2.76211406e-02 + 2.77471848e-02 2.78735049e-02 2.80001009e-02 2.81269726e-02 2.82541199e-02 + 2.83815427e-02 2.85092409e-02 2.86372144e-02 2.87654630e-02 2.88939867e-02 + 2.90227852e-02 2.91518585e-02 2.92812065e-02 2.94108290e-02 2.95407260e-02 + 2.96708972e-02 2.98013426e-02 2.99320621e-02 3.00630555e-02 3.01943227e-02 + 3.03258636e-02 3.04576781e-02 3.05897660e-02 3.07221272e-02 3.08547616e-02 + 3.09876691e-02 3.11208496e-02 3.12543028e-02 3.13880288e-02 3.15220273e-02 + 3.16562983e-02 3.17908416e-02 3.19256571e-02 3.20607447e-02 3.21961042e-02 + 3.23317356e-02 3.24676386e-02 3.26038132e-02 3.27402593e-02 3.28769766e-02 + 3.30139652e-02 3.31512248e-02 3.32887554e-02 3.34265567e-02 3.35646288e-02 + 3.37029714e-02 3.38415844e-02 3.39804677e-02 3.41196212e-02 3.42590447e-02 + 3.43987381e-02 3.45387013e-02 3.46789341e-02 3.48194365e-02 3.49602082e-02 + 3.51012492e-02 3.52425593e-02 3.53841384e-02 3.55259864e-02 3.56681031e-02 + 3.58104884e-02 3.59531422e-02 3.60960643e-02 3.62392547e-02 3.63827131e-02 + 3.65264394e-02 3.66704335e-02 3.68146954e-02 3.69592247e-02 3.71040215e-02 + 3.72490856e-02 3.73944167e-02 3.75400149e-02 3.76858800e-02 3.78320118e-02 + 3.79784102e-02 3.81250751e-02 3.82720063e-02 3.84192037e-02 3.85666672e-02 + 3.87143966e-02 3.88623918e-02 3.90106526e-02 3.91591790e-02 3.93079707e-02 + 3.94570277e-02 3.96063498e-02 3.97559369e-02 3.99057888e-02 4.00559054e-02 + 4.02062865e-02 4.03569321e-02 4.05078419e-02 4.06590159e-02 4.08104539e-02 + 4.09621558e-02 4.11141214e-02 4.12663506e-02 4.14188432e-02 4.15715991e-02 + 4.17246182e-02 4.18779004e-02 4.20314454e-02 4.21852532e-02 4.23393235e-02 + 4.24936564e-02 4.26482515e-02 4.28031089e-02 4.29582283e-02 4.31136096e-02 + 4.32692526e-02 4.34251573e-02 4.35813234e-02 4.37377508e-02 4.38944395e-02 + 4.40513892e-02 4.42085998e-02 4.43660711e-02 4.45238031e-02 4.46817956e-02 + 4.48400483e-02 4.49985613e-02 4.51573343e-02 4.53163671e-02 4.54756598e-02 + 4.56352120e-02 4.57950237e-02 4.59550947e-02 4.61154249e-02 4.62760141e-02 + 4.64368622e-02 4.65979690e-02 4.67593344e-02 4.69209582e-02 4.70828403e-02 + 4.72449806e-02 4.74073789e-02 4.75700350e-02 4.77329488e-02 4.78961202e-02 + 4.80595489e-02 4.82232350e-02 4.83871781e-02 4.85513782e-02 4.87158351e-02 + 4.88805487e-02 4.90455188e-02 4.92107453e-02 4.93762280e-02 4.95419667e-02 + 4.97079614e-02 4.98742118e-02 5.00407179e-02 5.02074794e-02 5.03744963e-02 + 5.05417683e-02 5.07092953e-02 5.08770772e-02 5.10451138e-02 5.12134049e-02 + 5.13819505e-02 5.15507503e-02 5.17198043e-02 5.18891121e-02 5.20586738e-02 + 5.22284892e-02 5.23985580e-02 5.25688802e-02 5.27394555e-02 5.29102839e-02 + 5.30813652e-02 5.32526992e-02 5.34242858e-02 5.35961248e-02 5.37682161e-02 + 5.39405595e-02 5.41131548e-02 5.42860020e-02 5.44591008e-02 5.46324511e-02 + 5.48060527e-02 5.49799055e-02 5.51540094e-02 5.53283641e-02 5.55029695e-02 + 5.56778255e-02 5.58529319e-02 5.60282885e-02 5.62038952e-02 5.63797519e-02 + 5.65558583e-02 5.67322144e-02 5.69088199e-02 5.70856747e-02 5.72627786e-02 + 5.74401316e-02 5.76177334e-02 5.77955838e-02 5.79736828e-02 5.81520301e-02 + 5.83306256e-02 5.85094691e-02 5.86885605e-02 5.88678997e-02 5.90474864e-02 + 5.92273205e-02 5.94074018e-02 5.95877302e-02 5.97683055e-02 5.99491276e-02 + 6.01301963e-02 6.03115114e-02 6.04930728e-02 6.06748803e-02 6.08569338e-02 + 6.10392330e-02 6.12217779e-02 6.14045683e-02 6.15876039e-02 6.17708848e-02 + 6.19544105e-02 6.21381812e-02 6.23221964e-02 6.25064562e-02 6.26909603e-02 + 6.28757085e-02 6.30607008e-02 6.32459369e-02 6.34314167e-02 6.36171400e-02 + 6.38031067e-02 6.39893165e-02 6.41757694e-02 6.43624651e-02 6.45494036e-02 + 6.47365845e-02 6.49240078e-02 6.51116734e-02 6.52995809e-02 6.54877303e-02 + 6.56761215e-02 6.58647541e-02 6.60536282e-02 6.62427434e-02 6.64320997e-02 + 6.66216969e-02 6.68115348e-02 6.70016132e-02 6.71919320e-02 6.73824910e-02 + 6.75732900e-02 6.77643289e-02 6.79556075e-02 6.81471257e-02 6.83388832e-02 + 6.85308799e-02 6.87231157e-02 6.89155904e-02 6.91083037e-02 6.93012556e-02 + 6.94944458e-02 6.96878742e-02 6.98815407e-02 7.00754450e-02 7.02695870e-02 + 7.04639665e-02 7.06585833e-02 7.08534374e-02 7.10485284e-02 7.12438563e-02 + 7.14394208e-02 7.16352219e-02 7.18312593e-02 7.20275328e-02 7.22240423e-02 + 7.24207876e-02 7.26177686e-02 7.28149851e-02 7.30124368e-02 7.32101237e-02 + 7.34080456e-02 7.36062022e-02 7.38045935e-02 7.40032192e-02 7.42020791e-02 + 7.44011732e-02 7.46005012e-02 7.48000630e-02 7.49998583e-02 7.51998870e-02 + 7.54001490e-02 7.56006441e-02 7.58013720e-02 7.60023326e-02 7.62035258e-02 + 7.64049514e-02 7.66066092e-02 7.68084989e-02 7.70106206e-02 7.72129739e-02 + 7.74155587e-02 7.76183748e-02 7.78214221e-02 7.80247003e-02 7.82282094e-02 + 7.84319490e-02 7.86359192e-02 7.88401196e-02 7.90445501e-02 7.92492105e-02 + 7.94541007e-02 7.96592204e-02 7.98645695e-02 8.00701479e-02 8.02759553e-02 + 8.04819916e-02 8.06882565e-02 8.08947500e-02 8.11014718e-02 8.13084218e-02 + 8.15155998e-02 8.17230055e-02 8.19306389e-02 8.21384998e-02 8.23465879e-02 + 8.25549031e-02 8.27634452e-02 8.29722141e-02 8.31812095e-02 8.33904313e-02 + 8.35998794e-02 8.38095534e-02 8.40194533e-02 8.42295789e-02 8.44399299e-02 + 8.46505063e-02 8.48613078e-02 8.50723343e-02 8.52835855e-02 8.54950613e-02 + 8.57067616e-02 8.59186860e-02 8.61308346e-02 8.63432070e-02 8.65558031e-02 + 8.67686227e-02 8.69816656e-02 8.71949318e-02 8.74084208e-02 8.76221327e-02 + 8.78360672e-02 8.80502241e-02 8.82646033e-02 8.84792045e-02 8.86940276e-02 + 8.89090725e-02 8.91243388e-02 8.93398265e-02 8.95555354e-02 8.97714652e-02 + 8.99876159e-02 9.02039871e-02 9.04205788e-02 9.06373908e-02 9.08544228e-02 + 9.10716747e-02 9.12891463e-02 9.15068374e-02 9.17247478e-02 9.19428774e-02 + 9.21612260e-02 9.23797934e-02 9.25985793e-02 9.28175837e-02 9.30368064e-02 + 9.32562470e-02 9.34759056e-02 9.36957818e-02 9.39158756e-02 9.41361866e-02 + 9.43567148e-02 9.45774599e-02 9.47984219e-02 9.50196003e-02 9.52409952e-02 + 9.54626063e-02 9.56844334e-02 9.59064764e-02 9.61287350e-02 9.63512090e-02 + 9.65738984e-02 9.67968029e-02 9.70199222e-02 9.72432563e-02 9.74668050e-02 + 9.76905680e-02 9.79145452e-02 9.81387363e-02 9.83631413e-02 9.85877598e-02 + 9.88125918e-02 9.90376370e-02 9.92628953e-02 9.94883665e-02 9.97140503e-02 + 9.99399466e-02 1.00166055e-01 1.00392376e-01 1.00618909e-01 1.00845653e-01 + 1.01072609e-01 1.01299776e-01 1.01527155e-01 1.01754744e-01 1.01982545e-01 + 1.02210556e-01 1.02438777e-01 1.02667209e-01 1.02895850e-01 1.03124702e-01 + 1.03353763e-01 1.03583034e-01 1.03812514e-01 1.04042203e-01 1.04272101e-01 + 1.04502207e-01 1.04732523e-01 1.04963046e-01 1.05193778e-01 1.05424718e-01 + 1.05655865e-01 1.05887221e-01 1.06118783e-01 1.06350553e-01 1.06582530e-01 + 1.06814713e-01 1.07047104e-01 1.07279701e-01 1.07512504e-01 1.07745513e-01 + 1.07978728e-01 1.08212148e-01 1.08445775e-01 1.08679606e-01 1.08913643e-01 + 1.09147884e-01 1.09382331e-01 1.09616982e-01 1.09851837e-01 1.10086896e-01 + 1.10322160e-01 1.10557627e-01 1.10793298e-01 1.11029172e-01 1.11265249e-01 + 1.11501530e-01 1.11738013e-01 1.11974699e-01 1.12211587e-01 1.12448678e-01 + 1.12685971e-01 1.12923465e-01 1.13161162e-01 1.13399059e-01 1.13637158e-01 + 1.13875458e-01 1.14113960e-01 1.14352661e-01 1.14591564e-01 1.14830666e-01 + 1.15069969e-01 1.15309472e-01 1.15549174e-01 1.15789076e-01 1.16029178e-01 + 1.16269478e-01 1.16509978e-01 1.16750676e-01 1.16991573e-01 1.17232669e-01 + 1.17473962e-01 1.17715454e-01 1.17957143e-01 1.18199030e-01 1.18441115e-01 + 1.18683397e-01 1.18925875e-01 1.19168551e-01 1.19411423e-01 1.19654492e-01 + 1.19897757e-01 1.20141218e-01 1.20384875e-01 1.20628728e-01 1.20872776e-01 + 1.21117020e-01 1.21361458e-01 1.21606092e-01 1.21850920e-01 1.22095943e-01 + 1.22341160e-01 1.22586571e-01 1.22832176e-01 1.23077975e-01 1.23323967e-01 + 1.23570153e-01 1.23816532e-01 1.24063104e-01 1.24309869e-01 1.24556826e-01 + 1.24803975e-01 1.25051317e-01 1.25298851e-01 1.25546576e-01 1.25794494e-01 + 1.26042602e-01 1.26290902e-01 1.26539393e-01 1.26788074e-01 1.27036946e-01 + 1.27286009e-01 1.27535261e-01 1.27784704e-01 1.28034337e-01 1.28284159e-01 + 1.28534171e-01 1.28784372e-01 1.29034762e-01 1.29285340e-01 1.29536108e-01 + 1.29787064e-01 1.30038208e-01 1.30289540e-01 1.30541060e-01 1.30792768e-01 + 1.31044663e-01 1.31296746e-01 1.31549015e-01 1.31801471e-01 1.32054115e-01 + 1.32306944e-01 1.32559960e-01 1.32813162e-01 1.33066550e-01 1.33320123e-01 + 1.33573882e-01 1.33827826e-01 1.34081956e-01 1.34336270e-01 1.34590769e-01 + 1.34845452e-01 1.35100320e-01 1.35355372e-01 1.35610608e-01 1.35866027e-01 + 1.36121630e-01 1.36377417e-01 1.36633386e-01 1.36889538e-01 1.37145873e-01 + 1.37402391e-01 1.37659091e-01 1.37915973e-01 1.38173037e-01 1.38430283e-01 + 1.38687710e-01 1.38945318e-01 1.39203108e-01 1.39461079e-01 1.39719230e-01 + 1.39977562e-01 1.40236074e-01 1.40494766e-01 1.40753639e-01 1.41012691e-01 + 1.41271922e-01 1.41531333e-01 1.41790923e-01 1.42050692e-01 1.42310640e-01 + 1.42570766e-01 1.42831071e-01 1.43091554e-01 1.43352214e-01 1.43613053e-01 + 1.43874069e-01 1.44135262e-01 1.44396633e-01 1.44658180e-01 1.44919904e-01 + 1.45181805e-01 1.45443882e-01 1.45706135e-01 1.45968565e-01 1.46231170e-01 + 1.46493950e-01 1.46756906e-01 1.47020037e-01 1.47283343e-01 1.47546824e-01 + 1.47810479e-01 1.48074308e-01 1.48338312e-01 1.48602490e-01 1.48866841e-01 + 1.49131366e-01 1.49396065e-01 1.49660936e-01 1.49925981e-01 1.50191198e-01 + 1.50456588e-01 1.50722150e-01 1.50987884e-01 1.51253790e-01 1.51519868e-01 + 1.51786118e-01 1.52052539e-01 1.52319131e-01 1.52585894e-01 1.52852827e-01 + 1.53119932e-01 1.53387206e-01 1.53654651e-01 1.53922266e-01 1.54190050e-01 + 1.54458004e-01 1.54726127e-01 1.54994420e-01 1.55262881e-01 1.55531511e-01 + 1.55800310e-01 1.56069277e-01 1.56338412e-01 1.56607715e-01 1.56877186e-01 + 1.57146824e-01 1.57416630e-01 1.57686603e-01 1.57956743e-01 1.58227049e-01 + 1.58497522e-01 1.58768161e-01 1.59038967e-01 1.59309938e-01 1.59581075e-01 + 1.59852378e-01 1.60123846e-01 1.60395479e-01 1.60667277e-01 1.60939240e-01 + 1.61211367e-01 1.61483659e-01 1.61756114e-01 1.62028734e-01 1.62301517e-01 + 1.62574464e-01 1.62847574e-01 1.63120847e-01 1.63394283e-01 1.63667882e-01 + 1.63941644e-01 1.64215567e-01 1.64489653e-01 1.64763901e-01 1.65038310e-01 + 1.65312881e-01 1.65587613e-01 1.65862506e-01 1.66137560e-01 1.66412775e-01 + 1.66688150e-01 1.66963686e-01 1.67239381e-01 1.67515237e-01 1.67791252e-01 + 1.68067427e-01 1.68343761e-01 1.68620254e-01 1.68896906e-01 1.69173717e-01 + 1.69450686e-01 1.69727813e-01 1.70005098e-01 1.70282542e-01 1.70560143e-01 + 1.70837901e-01 1.71115817e-01 1.71393889e-01 1.71672119e-01 1.71950505e-01 + 1.72229048e-01 1.72507747e-01 1.72786602e-01 1.73065613e-01 1.73344779e-01 + 1.73624101e-01 1.73903579e-01 1.74183211e-01 1.74462998e-01 1.74742940e-01 + 1.75023036e-01 1.75303286e-01 1.75583691e-01 1.75864249e-01 1.76144961e-01 + 1.76425826e-01 1.76706845e-01 1.76988017e-01 1.77269341e-01 1.77550818e-01 + 1.77832448e-01 1.78114229e-01 1.78396163e-01 1.78678248e-01 1.78960486e-01 + 1.79242874e-01 1.79525414e-01 1.79808105e-01 1.80090946e-01 1.80373938e-01 + 1.80657081e-01 1.80940374e-01 1.81223816e-01 1.81507409e-01 1.81791151e-01 + 1.82075043e-01 1.82359084e-01 1.82643273e-01 1.82927612e-01 1.83212099e-01 + 1.83496734e-01 1.83781518e-01 1.84066450e-01 1.84351529e-01 1.84636756e-01 + 1.84922131e-01 1.85207652e-01 1.85493321e-01 1.85779136e-01 1.86065098e-01 + 1.86351206e-01 1.86637461e-01 1.86923861e-01 1.87210407e-01 1.87497099e-01 + 1.87783936e-01 1.88070919e-01 1.88358046e-01 1.88645318e-01 1.88932734e-01 + 1.89220295e-01 1.89508000e-01 1.89795849e-01 1.90083842e-01 1.90371978e-01 + 1.90660258e-01 1.90948681e-01 1.91237246e-01 1.91525955e-01 1.91814806e-01 + 1.92103799e-01 1.92392935e-01 1.92682212e-01 1.92971631e-01 1.93261192e-01 + 1.93550894e-01 1.93840737e-01 1.94130721e-01 1.94420846e-01 1.94711111e-01 + 1.95001517e-01 1.95292063e-01 1.95582748e-01 1.95873574e-01 1.96164539e-01 + 1.96455643e-01 1.96746886e-01 1.97038269e-01 1.97329790e-01 1.97621449e-01 + 1.97913247e-01 1.98205183e-01 1.98497257e-01 1.98789469e-01 1.99081818e-01 + 1.99374304e-01 1.99666928e-01 1.99959688e-01 2.00252585e-01 2.00545619e-01 + 2.00838789e-01 2.01132095e-01 2.01425537e-01 2.01719114e-01 2.02012828e-01 + 2.02306676e-01 2.02600660e-01 2.02894778e-01 2.03189031e-01 2.03483419e-01 + 2.03777941e-01 2.04072597e-01 2.04367387e-01 2.04662311e-01 2.04957368e-01 + 2.05252558e-01 2.05547882e-01 2.05843338e-01 2.06138928e-01 2.06434649e-01 + 2.06730503e-01 2.07026489e-01 2.07322607e-01 2.07618857e-01 2.07915238e-01 + 2.08211750e-01 2.08508394e-01 2.08805168e-01 2.09102073e-01 2.09399109e-01 + 2.09696275e-01 2.09993571e-01 2.10290997e-01 2.10588552e-01 2.10886237e-01 + 2.11184052e-01 2.11481995e-01 2.11780068e-01 2.12078269e-01 2.12376598e-01 + 2.12675056e-01 2.12973642e-01 2.13272356e-01 2.13571197e-01 2.13870166e-01 + 2.14169263e-01 2.14468486e-01 2.14767837e-01 2.15067314e-01 2.15366917e-01 + 2.15666647e-01 2.15966503e-01 2.16266485e-01 2.16566592e-01 2.16866825e-01 + 2.17167184e-01 2.17467667e-01 2.17768276e-01 2.18069009e-01 2.18369866e-01 + 2.18670848e-01 2.18971954e-01 2.19273184e-01 2.19574538e-01 2.19876015e-01 + 2.20177615e-01 2.20479339e-01 2.20781185e-01 2.21083155e-01 2.21385246e-01 + 2.21687460e-01 2.21989797e-01 2.22292255e-01 2.22594835e-01 2.22897536e-01 + 2.23200359e-01 2.23503303e-01 2.23806367e-01 2.24109553e-01 2.24412859e-01 + 2.24716285e-01 2.25019832e-01 2.25323498e-01 2.25627285e-01 2.25931191e-01 + 2.26235216e-01 2.26539360e-01 2.26843623e-01 2.27148005e-01 2.27452506e-01 + 2.27757125e-01 2.28061862e-01 2.28366717e-01 2.28671690e-01 2.28976780e-01 + 2.29281988e-01 2.29587313e-01 2.29892755e-01 2.30198313e-01 2.30503989e-01 + 2.30809780e-01 2.31115688e-01 2.31421712e-01 2.31727852e-01 2.32034107e-01 + 2.32340478e-01 2.32646964e-01 2.32953565e-01 2.33260280e-01 2.33567111e-01 + 2.33874055e-01 2.34181114e-01 2.34488287e-01 2.34795574e-01 2.35102975e-01 + 2.35410489e-01 2.35718116e-01 2.36025856e-01 2.36333709e-01 2.36641675e-01 + 2.36949753e-01 2.37257943e-01 2.37566246e-01 2.37874660e-01 2.38183186e-01 + 2.38491824e-01 2.38800572e-01 2.39109432e-01 2.39418403e-01 2.39727484e-01 + 2.40036676e-01 2.40345978e-01 2.40655391e-01 2.40964913e-01 2.41274545e-01 + 2.41584286e-01 2.41894137e-01 2.42204097e-01 2.42514166e-01 2.42824344e-01 + 2.43134630e-01 2.43445024e-01 2.43755527e-01 2.44066138e-01 2.44376856e-01 + 2.44687682e-01 2.44998615e-01 2.45309656e-01 2.45620803e-01 2.45932058e-01 + 2.46243419e-01 2.46554886e-01 2.46866459e-01 2.47178139e-01 2.47489924e-01 + 2.47801815e-01 2.48113812e-01 2.48425913e-01 2.48738120e-01 2.49050431e-01 + 2.49362848e-01 2.49675368e-01 2.49987993e-01 2.50300722e-01 2.50613555e-01 + 2.50926492e-01 2.51239532e-01 2.51552675e-01 2.51865922e-01 2.52179271e-01 + 2.52492723e-01 2.52806278e-01 2.53119935e-01 2.53433694e-01 2.53747555e-01 + 2.54061518e-01 2.54375582e-01 2.54689748e-01 2.55004015e-01 2.55318383e-01 + 2.55632851e-01 2.55947421e-01 2.56262090e-01 2.56576860e-01 2.56891730e-01 + 2.57206700e-01 2.57521770e-01 2.57836938e-01 2.58152207e-01 2.58467574e-01 + 2.58783040e-01 2.59098605e-01 2.59414268e-01 2.59730029e-01 2.60045889e-01 + 2.60361847e-01 2.60677902e-01 2.60994055e-01 2.61310305e-01 2.61626652e-01 + 2.61943096e-01 2.62259637e-01 2.62576275e-01 2.62893009e-01 2.63209839e-01 + 2.63526765e-01 2.63843787e-01 2.64160905e-01 2.64478118e-01 2.64795426e-01 + 2.65112830e-01 2.65430328e-01 2.65747921e-01 2.66065608e-01 2.66383390e-01 + 2.66701265e-01 2.67019235e-01 2.67337298e-01 2.67655455e-01 2.67973706e-01 + 2.68292049e-01 2.68610485e-01 2.68929014e-01 2.69247636e-01 2.69566350e-01 + 2.69885156e-01 2.70204055e-01 2.70523045e-01 2.70842127e-01 2.71161300e-01 + 2.71480564e-01 2.71799920e-01 2.72119366e-01 2.72438903e-01 2.72758531e-01 + 2.73078249e-01 2.73398057e-01 2.73717955e-01 2.74037942e-01 2.74358019e-01 + 2.74678186e-01 2.74998442e-01 2.75318787e-01 2.75639220e-01 2.75959743e-01 + 2.76280353e-01 2.76601052e-01 2.76921839e-01 2.77242714e-01 2.77563676e-01 + 2.77884726e-01 2.78205864e-01 2.78527088e-01 2.78848399e-01 2.79169798e-01 + 2.79491282e-01 2.79812853e-01 2.80134510e-01 2.80456254e-01 2.80778083e-01 + 2.81099997e-01 2.81421997e-01 2.81744083e-01 2.82066253e-01 2.82388508e-01 + 2.82710848e-01 2.83033273e-01 2.83355782e-01 2.83678374e-01 2.84001051e-01 + 2.84323812e-01 2.84646656e-01 2.84969584e-01 2.85292594e-01 2.85615688e-01 + 2.85938865e-01 2.86262124e-01 2.86585466e-01 2.86908890e-01 2.87232396e-01 + 2.87555984e-01 2.87879654e-01 2.88203405e-01 2.88527238e-01 2.88851152e-01 + 2.89175147e-01 2.89499222e-01 2.89823378e-01 2.90147615e-01 2.90471932e-01 + 2.90796329e-01 2.91120806e-01 2.91445362e-01 2.91769999e-01 2.92094714e-01 + 2.92419508e-01 2.92744382e-01 2.93069334e-01 2.93394365e-01 2.93719474e-01 + 2.94044662e-01 2.94369927e-01 2.94695271e-01 2.95020692e-01 2.95346191e-01 + 2.95671767e-01 2.95997420e-01 2.96323150e-01 2.96648956e-01 2.96974840e-01 + 2.97300799e-01 2.97626835e-01 2.97952947e-01 2.98279135e-01 2.98605399e-01 + 2.98931738e-01 2.99258152e-01 2.99584642e-01 2.99911206e-01 3.00237845e-01 + 3.00564559e-01 3.00891347e-01 3.01218209e-01 3.01545146e-01 3.01872156e-01 + 3.02199240e-01 3.02526398e-01 3.02853628e-01 3.03180932e-01 3.03508309e-01 + 3.03835759e-01 3.04163281e-01 3.04490876e-01 3.04818543e-01 3.05146281e-01 + 3.05474092e-01 3.05801975e-01 3.06129929e-01 3.06457954e-01 3.06786051e-01 + 3.07114218e-01 3.07442456e-01 3.07770765e-01 3.08099145e-01 3.08427594e-01 + 3.08756114e-01 3.09084703e-01 3.09413363e-01 3.09742091e-01 3.10070890e-01 + 3.10399757e-01 3.10728693e-01 3.11057699e-01 3.11386772e-01 3.11715915e-01 + 3.12045125e-01 3.12374404e-01 3.12703751e-01 3.13033165e-01 3.13362647e-01 + 3.13692197e-01 3.14021813e-01 3.14351497e-01 3.14681248e-01 3.15011065e-01 + 3.15340949e-01 3.15670899e-01 3.16000915e-01 3.16330997e-01 3.16661145e-01 + 3.16991359e-01 3.17321638e-01 3.17651983e-01 3.17982392e-01 3.18312867e-01 + 3.18643406e-01 3.18974010e-01 3.19304678e-01 3.19635411e-01 3.19966207e-01 + 3.20297067e-01 3.20627992e-01 3.20958979e-01 3.21290030e-01 3.21621144e-01 + 3.21952321e-01 3.22283561e-01 3.22614864e-01 3.22946229e-01 3.23277656e-01 + 3.23609146e-01 3.23940697e-01 3.24272310e-01 3.24603985e-01 3.24935721e-01 + 3.25267519e-01 3.25599377e-01 3.25931297e-01 3.26263277e-01 3.26595317e-01 + 3.26927419e-01 3.27259580e-01 3.27591801e-01 3.27924082e-01 3.28256423e-01 + 3.28588824e-01 3.28921283e-01 3.29253802e-01 3.29586380e-01 3.29919017e-01 + 3.30251712e-01 3.30584466e-01 3.30917278e-01 3.31250149e-01 3.31583077e-01 + 3.31916063e-01 3.32249107e-01 3.32582208e-01 3.32915366e-01 3.33248582e-01 + 3.33581854e-01 3.33915183e-01 3.34248569e-01 3.34582011e-01 3.34915510e-01 + 3.35249064e-01 3.35582675e-01 3.35916341e-01 3.36250062e-01 3.36583839e-01 + 3.36917672e-01 3.37251559e-01 3.37585501e-01 3.37919498e-01 3.38253550e-01 + 3.38587656e-01 3.38921816e-01 3.39256030e-01 3.39590298e-01 3.39924620e-01 + 3.40258995e-01 3.40593423e-01 3.40927905e-01 3.41262440e-01 3.41597027e-01 + 3.41931667e-01 3.42266360e-01 3.42601105e-01 3.42935903e-01 3.43270752e-01 + 3.43605653e-01 3.43940606e-01 3.44275610e-01 3.44610666e-01 3.44945772e-01 + 3.45280930e-01 3.45616139e-01 3.45951398e-01 3.46286708e-01 3.46622068e-01 + 3.46957478e-01 3.47292938e-01 3.47628448e-01 3.47964008e-01 3.48299617e-01 + 3.48635275e-01 3.48970983e-01 3.49306740e-01 3.49642545e-01 3.49978399e-01 + 3.50314302e-01 3.50650253e-01 3.50986252e-01 3.51322299e-01 3.51658394e-01 + 3.51994536e-01 3.52330726e-01 3.52666964e-01 3.53003248e-01 3.53339580e-01 + 3.53675958e-01 3.54012383e-01 3.54348855e-01 3.54685373e-01 3.55021937e-01 + 3.55358547e-01 3.55695203e-01 3.56031904e-01 3.56368651e-01 3.56705444e-01 + 3.57042281e-01 3.57379164e-01 3.57716092e-01 3.58053064e-01 3.58390081e-01 + 3.58727142e-01 3.59064247e-01 3.59401397e-01 3.59738590e-01 3.60075827e-01 + 3.60413107e-01 3.60750431e-01 3.61087799e-01 3.61425209e-01 3.61762662e-01 + 3.62100158e-01 3.62437696e-01 3.62775277e-01 3.63112900e-01 3.63450566e-01 + 3.63788273e-01 3.64126022e-01 3.64463812e-01 3.64801645e-01 3.65139518e-01 + 3.65477432e-01 3.65815388e-01 3.66153384e-01 3.66491421e-01 3.66829498e-01 + 3.67167616e-01 3.67505774e-01 3.67843971e-01 3.68182209e-01 3.68520487e-01 + 3.68858803e-01 3.69197160e-01 3.69535555e-01 3.69873990e-01 3.70212463e-01 + 3.70550975e-01 3.70889526e-01 3.71228115e-01 3.71566742e-01 3.71905408e-01 + 3.72244111e-01 3.72582852e-01 3.72921631e-01 3.73260447e-01 3.73599300e-01 + 3.73938191e-01 3.74277119e-01 3.74616083e-01 3.74955084e-01 3.75294122e-01 + 3.75633196e-01 3.75972306e-01 3.76311452e-01 3.76650634e-01 3.76989852e-01 + 3.77329105e-01 3.77668394e-01 3.78007718e-01 3.78347077e-01 3.78686471e-01 + 3.79025899e-01 3.79365363e-01 3.79704861e-01 3.80044393e-01 3.80383959e-01 + 3.80723559e-01 3.81063194e-01 3.81402861e-01 3.81742563e-01 3.82082298e-01 + 3.82422065e-01 3.82761866e-01 3.83101700e-01 3.83441567e-01 3.83781466e-01 + 3.84121398e-01 3.84461362e-01 3.84801358e-01 3.85141386e-01 3.85481446e-01 + 3.85821538e-01 3.86161661e-01 3.86501816e-01 3.86842001e-01 3.87182218e-01 + 3.87522466e-01 3.87862744e-01 3.88203053e-01 3.88543393e-01 3.88883763e-01 + 3.89224162e-01 3.89564592e-01 3.89905052e-01 3.90245541e-01 3.90586060e-01 + 3.90926609e-01 3.91267186e-01 3.91607793e-01 3.91948428e-01 3.92289093e-01 + 3.92629785e-01 3.92970507e-01 3.93311256e-01 3.93652034e-01 3.93992840e-01 + 3.94333674e-01 3.94674535e-01 3.95015424e-01 3.95356341e-01 3.95697284e-01 + 3.96038255e-01 3.96379253e-01 3.96720277e-01 3.97061328e-01 3.97402406e-01 + 3.97743510e-01 3.98084640e-01 3.98425796e-01 3.98766978e-01 3.99108186e-01 + 3.99449420e-01 3.99790679e-01 4.00131963e-01 4.00473272e-01 4.00814607e-01 + 4.01155966e-01 4.01497350e-01 4.01838759e-01 4.02180192e-01 4.02521649e-01 + 4.02863130e-01 4.03204636e-01 4.03546165e-01 4.03887718e-01 4.04229294e-01 + 4.04570894e-01 4.04912517e-01 4.05254163e-01 4.05595832e-01 4.05937524e-01 + 4.06279238e-01 4.06620975e-01 4.06962734e-01 4.07304516e-01 4.07646319e-01 + 4.07988145e-01 4.08329992e-01 4.08671861e-01 4.09013751e-01 4.09355663e-01 + 4.09697596e-01 4.10039549e-01 4.10381524e-01 4.10723520e-01 4.11065536e-01 + 4.11407572e-01 4.11749629e-01 4.12091706e-01 4.12433803e-01 4.12775920e-01 + 4.13118057e-01 4.13460213e-01 4.13802389e-01 4.14144583e-01 4.14486798e-01 + 4.14829031e-01 4.15171283e-01 4.15513553e-01 4.15855843e-01 4.16198150e-01 + 4.16540476e-01 4.16882821e-01 4.17225183e-01 4.17567563e-01 4.17909961e-01 + 4.18252376e-01 4.18594809e-01 4.18937259e-01 4.19279726e-01 4.19622210e-01 + 4.19964711e-01 4.20307229e-01 4.20649763e-01 4.20992314e-01 4.21334881e-01 + 4.21677465e-01 4.22020064e-01 4.22362679e-01 4.22705310e-01 4.23047957e-01 + 4.23390619e-01 4.23733296e-01 4.24075988e-01 4.24418696e-01 4.24761418e-01 + 4.25104155e-01 4.25446907e-01 4.25789673e-01 4.26132454e-01 4.26475249e-01 + 4.26818057e-01 4.27160880e-01 4.27503717e-01 4.27846567e-01 4.28189430e-01 + 4.28532307e-01 4.28875197e-01 4.29218101e-01 4.29561017e-01 4.29903946e-01 + 4.30246888e-01 4.30589842e-01 4.30932808e-01 4.31275787e-01 4.31618778e-01 + 4.31961781e-01 4.32304796e-01 4.32647822e-01 4.32990860e-01 4.33333909e-01 + 4.33676970e-01 4.34020042e-01 4.34363125e-01 4.34706219e-01 4.35049323e-01 + 4.35392438e-01 4.35735564e-01 4.36078700e-01 4.36421846e-01 4.36765002e-01 + 4.37108168e-01 4.37451344e-01 4.37794529e-01 4.38137724e-01 4.38480929e-01 + 4.38824142e-01 4.39167365e-01 4.39510597e-01 4.39853837e-01 4.40197087e-01 + 4.40540345e-01 4.40883611e-01 4.41226885e-01 4.41570168e-01 4.41913459e-01 + 4.42256758e-01 4.42600064e-01 4.42943378e-01 4.43286700e-01 4.43630029e-01 + 4.43973365e-01 4.44316708e-01 4.44660058e-01 4.45003416e-01 4.45346779e-01 + 4.45690150e-01 4.46033526e-01 4.46376910e-01 4.46720299e-01 4.47063694e-01 + 4.47407095e-01 4.47750502e-01 4.48093915e-01 4.48437333e-01 4.48780757e-01 + 4.49124185e-01 4.49467619e-01 4.49811058e-01 4.50154502e-01 4.50497950e-01 + 4.50841403e-01 4.51184861e-01 4.51528322e-01 4.51871788e-01 4.52215259e-01 + 4.52558733e-01 4.52902210e-01 4.53245692e-01 4.53589177e-01 4.53932665e-01 + 4.54276157e-01 4.54619652e-01 4.54963150e-01 4.55306651e-01 4.55650154e-01 + 2.08130000e-04 2.08281191e-04 2.08734762e-04 2.09490714e-04 2.10549046e-04 + 2.11909757e-04 2.13572846e-04 2.15538310e-04 2.17806148e-04 2.20376358e-04 + 2.23248936e-04 2.26423882e-04 2.29901190e-04 2.33680858e-04 2.37762883e-04 + 2.42147260e-04 2.46833984e-04 2.51823051e-04 2.57114457e-04 2.62708196e-04 + 2.68604263e-04 2.74802652e-04 2.81303356e-04 2.88106370e-04 2.95211687e-04 + 3.02619299e-04 3.10329200e-04 3.18341382e-04 3.26655837e-04 3.35272557e-04 + 3.44191533e-04 3.53412758e-04 3.62936221e-04 3.72761913e-04 3.82889825e-04 + 3.93319947e-04 4.04052269e-04 4.15086779e-04 4.26423468e-04 4.38062324e-04 + 4.50003336e-04 4.62246492e-04 4.74791780e-04 4.87639188e-04 5.00788703e-04 + 5.14240312e-04 5.27994002e-04 5.42049760e-04 5.56407572e-04 5.71067423e-04 + 5.86029300e-04 6.01293187e-04 6.16859071e-04 6.32726934e-04 6.48896763e-04 + 6.65368541e-04 6.82142252e-04 6.99217880e-04 7.16595407e-04 7.34274817e-04 + 7.52256092e-04 7.70539216e-04 7.89124169e-04 8.08010934e-04 8.27199493e-04 + 8.46689825e-04 8.66481913e-04 8.86575737e-04 9.06971278e-04 9.27668514e-04 + 9.48667427e-04 9.69967995e-04 9.91570198e-04 1.01347401e-03 1.03567942e-03 + 1.05818640e-03 1.08099493e-03 1.10410498e-03 1.12751654e-03 1.15122957e-03 + 1.17524406e-03 1.19955999e-03 1.22417733e-03 1.24909605e-03 1.27431613e-03 + 1.29983755e-03 1.32566029e-03 1.35178430e-03 1.37820958e-03 1.40493610e-03 + 1.43196382e-03 1.45929272e-03 1.48692278e-03 1.51485397e-03 1.54308626e-03 + 1.57161963e-03 1.60045404e-03 1.62958946e-03 1.65902588e-03 1.68876325e-03 + 1.71880156e-03 1.74914077e-03 1.77978085e-03 1.81072177e-03 1.84196351e-03 + 1.87350602e-03 1.90534929e-03 1.93749327e-03 1.96993795e-03 2.00268328e-03 + 2.03572923e-03 2.06907577e-03 2.10272288e-03 2.13667051e-03 2.17091863e-03 + 2.20546721e-03 2.24031622e-03 2.27546562e-03 2.31091538e-03 2.34666546e-03 + 2.38271583e-03 2.41906645e-03 2.45571729e-03 2.49266831e-03 2.52991947e-03 + 2.56747075e-03 2.60532209e-03 2.64347347e-03 2.68192485e-03 2.72067619e-03 + 2.75972745e-03 2.79907859e-03 2.83872959e-03 2.87868038e-03 2.91893095e-03 + 2.95948125e-03 3.00033123e-03 3.04148087e-03 3.08293011e-03 3.12467892e-03 + 3.16672726e-03 3.20907509e-03 3.25172236e-03 3.29466904e-03 3.33791508e-03 + 3.38146044e-03 3.42530507e-03 3.46944894e-03 3.51389201e-03 3.55863422e-03 + 3.60367554e-03 3.64901591e-03 3.69465531e-03 3.74059367e-03 3.78683096e-03 + 3.83336714e-03 3.88020215e-03 3.92733595e-03 3.97476850e-03 4.02249975e-03 + 4.07052965e-03 4.11885815e-03 4.16748522e-03 4.21641079e-03 4.26563483e-03 + 4.31515728e-03 4.36497811e-03 4.41509725e-03 4.46551466e-03 4.51623029e-03 + 4.56724409e-03 4.61855601e-03 4.67016601e-03 4.72207403e-03 4.77428002e-03 + 4.82678393e-03 4.87958570e-03 4.93268530e-03 4.98608266e-03 5.03977774e-03 + 5.09377048e-03 5.14806083e-03 5.20264873e-03 5.25753414e-03 5.31271700e-03 + 5.36819725e-03 5.42397485e-03 5.48004973e-03 5.53642185e-03 5.59309115e-03 + 5.65005757e-03 5.70732106e-03 5.76488157e-03 5.82273903e-03 5.88089339e-03 + 5.93934459e-03 5.99809258e-03 6.05713731e-03 6.11647870e-03 6.17611671e-03 + 6.23605128e-03 6.29628235e-03 6.35680986e-03 6.41763375e-03 6.47875396e-03 + 6.54017044e-03 6.60188312e-03 6.66389194e-03 6.72619685e-03 6.78879778e-03 + 6.85169468e-03 6.91488748e-03 6.97837611e-03 7.04216053e-03 7.10624066e-03 + 7.17061645e-03 7.23528783e-03 7.30025474e-03 7.36551712e-03 7.43107490e-03 + 7.49692802e-03 7.56307641e-03 7.62952002e-03 7.69625878e-03 7.76329262e-03 + 7.83062147e-03 7.89824528e-03 7.96616398e-03 8.03437750e-03 8.10288577e-03 + 8.17168874e-03 8.24078632e-03 8.31017847e-03 8.37986510e-03 8.44984615e-03 + 8.52012155e-03 8.59069124e-03 8.66155515e-03 8.73271321e-03 8.80416535e-03 + 8.87591149e-03 8.94795158e-03 9.02028554e-03 9.09291331e-03 9.16583480e-03 + 9.23904995e-03 9.31255870e-03 9.38636096e-03 9.46045668e-03 9.53484577e-03 + 9.60952816e-03 9.68450379e-03 9.75977258e-03 9.83533445e-03 9.91118934e-03 + 9.98733717e-03 1.00637779e-02 1.01405114e-02 1.02175376e-02 1.02948564e-02 + 1.03724679e-02 1.04503718e-02 1.05285681e-02 1.06070568e-02 1.06858378e-02 + 1.07649109e-02 1.08442762e-02 1.09239335e-02 1.10038828e-02 1.10841240e-02 + 1.11646570e-02 1.12454817e-02 1.13265980e-02 1.14080060e-02 1.14897054e-02 + 1.15716963e-02 1.16539785e-02 1.17365519e-02 1.18194166e-02 1.19025723e-02 + 1.19860191e-02 1.20697568e-02 1.21537854e-02 1.22381047e-02 1.23227148e-02 + 1.24076155e-02 1.24928067e-02 1.25782883e-02 1.26640604e-02 1.27501227e-02 + 1.28364752e-02 1.29231179e-02 1.30100506e-02 1.30972732e-02 1.31847858e-02 + 1.32725881e-02 1.33606801e-02 1.34490618e-02 1.35377329e-02 1.36266936e-02 + 1.37159436e-02 1.38054829e-02 1.38953113e-02 1.39854289e-02 1.40758355e-02 + 1.41665311e-02 1.42575155e-02 1.43487886e-02 1.44403504e-02 1.45322008e-02 + 1.46243398e-02 1.47167671e-02 1.48094827e-02 1.49024866e-02 1.49957786e-02 + 1.50893587e-02 1.51832267e-02 1.52773826e-02 1.53718263e-02 1.54665577e-02 + 1.55615767e-02 1.56568832e-02 1.57524771e-02 1.58483584e-02 1.59445269e-02 + 1.60409825e-02 1.61377252e-02 1.62347549e-02 1.63320714e-02 1.64296747e-02 + 1.65275647e-02 1.66257413e-02 1.67242043e-02 1.68229538e-02 1.69219896e-02 + 1.70213116e-02 1.71209197e-02 1.72208138e-02 1.73209939e-02 1.74214598e-02 + 1.75222114e-02 1.76232487e-02 1.77245715e-02 1.78261798e-02 1.79280734e-02 + 1.80302523e-02 1.81327163e-02 1.82354654e-02 1.83384994e-02 1.84418184e-02 + 1.85454220e-02 1.86493104e-02 1.87534833e-02 1.88579407e-02 1.89626824e-02 + 1.90677084e-02 1.91730186e-02 1.92786129e-02 1.93844911e-02 1.94906532e-02 + 1.95970991e-02 1.97038286e-02 1.98108417e-02 1.99181382e-02 2.00257182e-02 + 2.01335813e-02 2.02417277e-02 2.03501571e-02 2.04588694e-02 2.05678646e-02 + 2.06771425e-02 2.07867031e-02 2.08965462e-02 2.10066717e-02 2.11170796e-02 + 2.12277697e-02 2.13387419e-02 2.14499962e-02 2.15615323e-02 2.16733503e-02 + 2.17854499e-02 2.18978311e-02 2.20104938e-02 2.21234379e-02 2.22366633e-02 + 2.23501698e-02 2.24639574e-02 2.25780260e-02 2.26923753e-02 2.28070055e-02 + 2.29219162e-02 2.30371074e-02 2.31525791e-02 2.32683311e-02 2.33843632e-02 + 2.35006755e-02 2.36172677e-02 2.37341397e-02 2.38512915e-02 2.39687230e-02 + 2.40864339e-02 2.42044243e-02 2.43226940e-02 2.44412429e-02 2.45600709e-02 + 2.46791779e-02 2.47985637e-02 2.49182282e-02 2.50381714e-02 2.51583931e-02 + 2.52788932e-02 2.53996717e-02 2.55207283e-02 2.56420629e-02 2.57636755e-02 + 2.58855660e-02 2.60077341e-02 2.61301799e-02 2.62529032e-02 2.63759039e-02 + 2.64991818e-02 2.66227368e-02 2.67465689e-02 2.68706779e-02 2.69950637e-02 + 2.71197262e-02 2.72446653e-02 2.73698808e-02 2.74953726e-02 2.76211406e-02 + 2.77471848e-02 2.78735049e-02 2.80001009e-02 2.81269726e-02 2.82541199e-02 + 2.83815427e-02 2.85092409e-02 2.86372144e-02 2.87654630e-02 2.88939867e-02 + 2.90227852e-02 2.91518585e-02 2.92812065e-02 2.94108290e-02 2.95407260e-02 + 2.96708972e-02 2.98013426e-02 2.99320621e-02 3.00630555e-02 3.01943227e-02 + 3.03258636e-02 3.04576781e-02 3.05897660e-02 3.07221272e-02 3.08547616e-02 + 3.09876691e-02 3.11208496e-02 3.12543028e-02 3.13880288e-02 3.15220273e-02 + 3.16562983e-02 3.17908416e-02 3.19256571e-02 3.20607447e-02 3.21961042e-02 + 3.23317356e-02 3.24676386e-02 3.26038132e-02 3.27402593e-02 3.28769766e-02 + 3.30139652e-02 3.31512248e-02 3.32887554e-02 3.34265567e-02 3.35646288e-02 + 3.37029714e-02 3.38415844e-02 3.39804677e-02 3.41196212e-02 3.42590447e-02 + 3.43987381e-02 3.45387013e-02 3.46789341e-02 3.48194365e-02 3.49602082e-02 + 3.51012492e-02 3.52425593e-02 3.53841384e-02 3.55259864e-02 3.56681031e-02 + 3.58104884e-02 3.59531422e-02 3.60960643e-02 3.62392547e-02 3.63827131e-02 + 3.65264394e-02 3.66704335e-02 3.68146954e-02 3.69592247e-02 3.71040215e-02 + 3.72490856e-02 3.73944167e-02 3.75400149e-02 3.76858800e-02 3.78320118e-02 + 3.79784102e-02 3.81250751e-02 3.82720063e-02 3.84192037e-02 3.85666672e-02 + 3.87143966e-02 3.88623918e-02 3.90106526e-02 3.91591790e-02 3.93079707e-02 + 3.94570277e-02 3.96063498e-02 3.97559369e-02 3.99057888e-02 4.00559054e-02 + 4.02062865e-02 4.03569321e-02 4.05078419e-02 4.06590159e-02 4.08104539e-02 + 4.09621558e-02 4.11141214e-02 4.12663506e-02 4.14188432e-02 4.15715991e-02 + 4.17246182e-02 4.18779004e-02 4.20314454e-02 4.21852532e-02 4.23393235e-02 + 4.24936564e-02 4.26482515e-02 4.28031089e-02 4.29582283e-02 4.31136096e-02 + 4.32692526e-02 4.34251573e-02 4.35813234e-02 4.37377508e-02 4.38944395e-02 + 4.40513892e-02 4.42085998e-02 4.43660711e-02 4.45238031e-02 4.46817956e-02 + 4.48400483e-02 4.49985613e-02 4.51573343e-02 4.53163671e-02 4.54756598e-02 + 4.56352120e-02 4.57950237e-02 4.59550947e-02 4.61154249e-02 4.62760141e-02 + 4.64368622e-02 4.65979690e-02 4.67593344e-02 4.69209582e-02 4.70828403e-02 + 4.72449806e-02 4.74073789e-02 4.75700350e-02 4.77329488e-02 4.78961202e-02 + 4.80595489e-02 4.82232350e-02 4.83871781e-02 4.85513782e-02 4.87158351e-02 + 4.88805487e-02 4.90455188e-02 4.92107453e-02 4.93762280e-02 4.95419667e-02 + 4.97079614e-02 4.98742118e-02 5.00407179e-02 5.02074794e-02 5.03744963e-02 + 5.05417683e-02 5.07092953e-02 5.08770772e-02 5.10451138e-02 5.12134049e-02 + 5.13819505e-02 5.15507503e-02 5.17198043e-02 5.18891121e-02 5.20586738e-02 + 5.22284892e-02 5.23985580e-02 5.25688802e-02 5.27394555e-02 5.29102839e-02 + 5.30813652e-02 5.32526992e-02 5.34242858e-02 5.35961248e-02 5.37682161e-02 + 5.39405595e-02 5.41131548e-02 5.42860020e-02 5.44591008e-02 5.46324511e-02 + 5.48060527e-02 5.49799055e-02 5.51540094e-02 5.53283641e-02 5.55029695e-02 + 5.56778255e-02 5.58529319e-02 5.60282885e-02 5.62038952e-02 5.63797519e-02 + 5.65558583e-02 5.67322144e-02 5.69088199e-02 5.70856747e-02 5.72627786e-02 + 5.74401316e-02 5.76177334e-02 5.77955838e-02 5.79736828e-02 5.81520301e-02 + 5.83306256e-02 5.85094691e-02 5.86885605e-02 5.88678997e-02 5.90474864e-02 + 5.92273205e-02 5.94074018e-02 5.95877302e-02 5.97683055e-02 5.99491276e-02 + 6.01301963e-02 6.03115114e-02 6.04930728e-02 6.06748803e-02 6.08569338e-02 + 6.10392330e-02 6.12217779e-02 6.14045683e-02 6.15876039e-02 6.17708848e-02 + 6.19544105e-02 6.21381812e-02 6.23221964e-02 6.25064562e-02 6.26909603e-02 + 6.28757085e-02 6.30607008e-02 6.32459369e-02 6.34314167e-02 6.36171400e-02 + 6.38031067e-02 6.39893165e-02 6.41757694e-02 6.43624651e-02 6.45494036e-02 + 6.47365845e-02 6.49240078e-02 6.51116734e-02 6.52995809e-02 6.54877303e-02 + 6.56761215e-02 6.58647541e-02 6.60536282e-02 6.62427434e-02 6.64320997e-02 + 6.66216969e-02 6.68115348e-02 6.70016132e-02 6.71919320e-02 6.73824910e-02 + 6.75732900e-02 6.77643289e-02 6.79556075e-02 6.81471257e-02 6.83388832e-02 + 6.85308799e-02 6.87231157e-02 6.89155904e-02 6.91083037e-02 6.93012556e-02 + 6.94944458e-02 6.96878742e-02 6.98815407e-02 7.00754450e-02 7.02695870e-02 + 7.04639665e-02 7.06585833e-02 7.08534374e-02 7.10485284e-02 7.12438563e-02 + 7.14394208e-02 7.16352219e-02 7.18312593e-02 7.20275328e-02 7.22240423e-02 + 7.24207876e-02 7.26177686e-02 7.28149851e-02 7.30124368e-02 7.32101237e-02 + 7.34080456e-02 7.36062022e-02 7.38045935e-02 7.40032192e-02 7.42020791e-02 + 7.44011732e-02 7.46005012e-02 7.48000630e-02 7.49998583e-02 7.51998870e-02 + 7.54001490e-02 7.56006441e-02 7.58013720e-02 7.60023326e-02 7.62035258e-02 + 7.64049514e-02 7.66066092e-02 7.68084989e-02 7.70106206e-02 7.72129739e-02 + 7.74155587e-02 7.76183748e-02 7.78214221e-02 7.80247003e-02 7.82282094e-02 + 7.84319490e-02 7.86359192e-02 7.88401196e-02 7.90445501e-02 7.92492105e-02 + 7.94541007e-02 7.96592204e-02 7.98645695e-02 8.00701479e-02 8.02759553e-02 + 8.04819916e-02 8.06882565e-02 8.08947500e-02 8.11014718e-02 8.13084218e-02 + 8.15155998e-02 8.17230055e-02 8.19306389e-02 8.21384998e-02 8.23465879e-02 + 8.25549031e-02 8.27634452e-02 8.29722141e-02 8.31812095e-02 8.33904313e-02 + 8.35998794e-02 8.38095534e-02 8.40194533e-02 8.42295789e-02 8.44399299e-02 + 8.46505063e-02 8.48613078e-02 8.50723343e-02 8.52835855e-02 8.54950613e-02 + 8.57067616e-02 8.59186860e-02 8.61308346e-02 8.63432070e-02 8.65558031e-02 + 8.67686227e-02 8.69816656e-02 8.71949318e-02 8.74084208e-02 8.76221327e-02 + 8.78360672e-02 8.80502241e-02 8.82646033e-02 8.84792045e-02 8.86940276e-02 + 8.89090725e-02 8.91243388e-02 8.93398265e-02 8.95555354e-02 8.97714652e-02 + 8.99876159e-02 9.02039871e-02 9.04205788e-02 9.06373908e-02 9.08544228e-02 + 9.10716747e-02 9.12891463e-02 9.15068374e-02 9.17247478e-02 9.19428774e-02 + 9.21612260e-02 9.23797934e-02 9.25985793e-02 9.28175837e-02 9.30368064e-02 + 9.32562470e-02 9.34759056e-02 9.36957818e-02 9.39158756e-02 9.41361866e-02 + 9.43567148e-02 9.45774599e-02 9.47984219e-02 9.50196003e-02 9.52409952e-02 + 9.54626063e-02 9.56844334e-02 9.59064764e-02 9.61287350e-02 9.63512090e-02 + 9.65738984e-02 9.67968029e-02 9.70199222e-02 9.72432563e-02 9.74668050e-02 + 9.76905680e-02 9.79145452e-02 9.81387363e-02 9.83631413e-02 9.85877598e-02 + 9.88125918e-02 9.90376370e-02 9.92628953e-02 9.94883665e-02 9.97140503e-02 + 9.99399466e-02 1.00166055e-01 1.00392376e-01 1.00618909e-01 1.00845653e-01 + 1.01072609e-01 1.01299776e-01 1.01527155e-01 1.01754744e-01 1.01982545e-01 + 1.02210556e-01 1.02438777e-01 1.02667209e-01 1.02895850e-01 1.03124702e-01 + 1.03353763e-01 1.03583034e-01 1.03812514e-01 1.04042203e-01 1.04272101e-01 + 1.04502207e-01 1.04732523e-01 1.04963046e-01 1.05193778e-01 1.05424718e-01 + 1.05655865e-01 1.05887221e-01 1.06118783e-01 1.06350553e-01 1.06582530e-01 + 1.06814713e-01 1.07047104e-01 1.07279701e-01 1.07512504e-01 1.07745513e-01 + 1.07978728e-01 1.08212148e-01 1.08445775e-01 1.08679606e-01 1.08913643e-01 + 1.09147884e-01 1.09382331e-01 1.09616982e-01 1.09851837e-01 1.10086896e-01 + 1.10322160e-01 1.10557627e-01 1.10793298e-01 1.11029172e-01 1.11265249e-01 + 1.11501530e-01 1.11738013e-01 1.11974699e-01 1.12211587e-01 1.12448678e-01 + 1.12685971e-01 1.12923465e-01 1.13161162e-01 1.13399059e-01 1.13637158e-01 + 1.13875458e-01 1.14113960e-01 1.14352661e-01 1.14591564e-01 1.14830666e-01 + 1.15069969e-01 1.15309472e-01 1.15549174e-01 1.15789076e-01 1.16029178e-01 + 1.16269478e-01 1.16509978e-01 1.16750676e-01 1.16991573e-01 1.17232669e-01 + 1.17473962e-01 1.17715454e-01 1.17957143e-01 1.18199030e-01 1.18441115e-01 + 1.18683397e-01 1.18925875e-01 1.19168551e-01 1.19411423e-01 1.19654492e-01 + 1.19897757e-01 1.20141218e-01 1.20384875e-01 1.20628728e-01 1.20872776e-01 + 1.21117020e-01 1.21361458e-01 1.21606092e-01 1.21850920e-01 1.22095943e-01 + 1.22341160e-01 1.22586571e-01 1.22832176e-01 1.23077975e-01 1.23323967e-01 + 1.23570153e-01 1.23816532e-01 1.24063104e-01 1.24309869e-01 1.24556826e-01 + 1.24803975e-01 1.25051317e-01 1.25298851e-01 1.25546576e-01 1.25794494e-01 + 1.26042602e-01 1.26290902e-01 1.26539393e-01 1.26788074e-01 1.27036946e-01 + 1.27286009e-01 1.27535261e-01 1.27784704e-01 1.28034337e-01 1.28284159e-01 + 1.28534171e-01 1.28784372e-01 1.29034762e-01 1.29285340e-01 1.29536108e-01 + 1.29787064e-01 1.30038208e-01 1.30289540e-01 1.30541060e-01 1.30792768e-01 + 1.31044663e-01 1.31296746e-01 1.31549015e-01 1.31801471e-01 1.32054115e-01 + 1.32306944e-01 1.32559960e-01 1.32813162e-01 1.33066550e-01 1.33320123e-01 + 1.33573882e-01 1.33827826e-01 1.34081956e-01 1.34336270e-01 1.34590769e-01 + 1.34845452e-01 1.35100320e-01 1.35355372e-01 1.35610608e-01 1.35866027e-01 + 1.36121630e-01 1.36377417e-01 1.36633386e-01 1.36889538e-01 1.37145873e-01 + 1.37402391e-01 1.37659091e-01 1.37915973e-01 1.38173037e-01 1.38430283e-01 + 1.38687710e-01 1.38945318e-01 1.39203108e-01 1.39461079e-01 1.39719230e-01 + 1.39977562e-01 1.40236074e-01 1.40494766e-01 1.40753639e-01 1.41012691e-01 + 1.41271922e-01 1.41531333e-01 1.41790923e-01 1.42050692e-01 1.42310640e-01 + 1.42570766e-01 1.42831071e-01 1.43091554e-01 1.43352214e-01 1.43613053e-01 + 1.43874069e-01 1.44135262e-01 1.44396633e-01 1.44658180e-01 1.44919904e-01 + 1.45181805e-01 1.45443882e-01 1.45706135e-01 1.45968565e-01 1.46231170e-01 + 1.46493950e-01 1.46756906e-01 1.47020037e-01 1.47283343e-01 1.47546824e-01 + 1.47810479e-01 1.48074308e-01 1.48338312e-01 1.48602490e-01 1.48866841e-01 + 1.49131366e-01 1.49396065e-01 1.49660936e-01 1.49925981e-01 1.50191198e-01 + 1.50456588e-01 1.50722150e-01 1.50987884e-01 1.51253790e-01 1.51519868e-01 + 1.51786118e-01 1.52052539e-01 1.52319131e-01 1.52585894e-01 1.52852827e-01 + 1.53119932e-01 1.53387206e-01 1.53654651e-01 1.53922266e-01 1.54190050e-01 + 1.54458004e-01 1.54726127e-01 1.54994420e-01 1.55262881e-01 1.55531511e-01 + 1.55800310e-01 1.56069277e-01 1.56338412e-01 1.56607715e-01 1.56877186e-01 + 1.57146824e-01 1.57416630e-01 1.57686603e-01 1.57956743e-01 1.58227049e-01 + 1.58497522e-01 1.58768161e-01 1.59038967e-01 1.59309938e-01 1.59581075e-01 + 1.59852378e-01 1.60123846e-01 1.60395479e-01 1.60667277e-01 1.60939240e-01 + 1.61211367e-01 1.61483659e-01 1.61756114e-01 1.62028734e-01 1.62301517e-01 + 1.62574464e-01 1.62847574e-01 1.63120847e-01 1.63394283e-01 1.63667882e-01 + 1.63941644e-01 1.64215567e-01 1.64489653e-01 1.64763901e-01 1.65038310e-01 + 1.65312881e-01 1.65587613e-01 1.65862506e-01 1.66137560e-01 1.66412775e-01 + 1.66688150e-01 1.66963686e-01 1.67239381e-01 1.67515237e-01 1.67791252e-01 + 1.68067427e-01 1.68343761e-01 1.68620254e-01 1.68896906e-01 1.69173717e-01 + 1.69450686e-01 1.69727813e-01 1.70005098e-01 1.70282542e-01 1.70560143e-01 + 1.70837901e-01 1.71115817e-01 1.71393889e-01 1.71672119e-01 1.71950505e-01 + 1.72229048e-01 1.72507747e-01 1.72786602e-01 1.73065613e-01 1.73344779e-01 + 1.73624101e-01 1.73903579e-01 1.74183211e-01 1.74462998e-01 1.74742940e-01 + 1.75023036e-01 1.75303286e-01 1.75583691e-01 1.75864249e-01 1.76144961e-01 + 1.76425826e-01 1.76706845e-01 1.76988017e-01 1.77269341e-01 1.77550818e-01 + 1.77832448e-01 1.78114229e-01 1.78396163e-01 1.78678248e-01 1.78960486e-01 + 1.79242874e-01 1.79525414e-01 1.79808105e-01 1.80090946e-01 1.80373938e-01 + 1.80657081e-01 1.80940374e-01 1.81223816e-01 1.81507409e-01 1.81791151e-01 + 1.82075043e-01 1.82359084e-01 1.82643273e-01 1.82927612e-01 1.83212099e-01 + 1.83496734e-01 1.83781518e-01 1.84066450e-01 1.84351529e-01 1.84636756e-01 + 1.84922131e-01 1.85207652e-01 1.85493321e-01 1.85779136e-01 1.86065098e-01 + 1.86351206e-01 1.86637461e-01 1.86923861e-01 1.87210407e-01 1.87497099e-01 + 1.87783936e-01 1.88070919e-01 1.88358046e-01 1.88645318e-01 1.88932734e-01 + 1.89220295e-01 1.89508000e-01 1.89795849e-01 1.90083842e-01 1.90371978e-01 + 1.90660258e-01 1.90948681e-01 1.91237246e-01 1.91525955e-01 1.91814806e-01 + 1.92103799e-01 1.92392935e-01 1.92682212e-01 1.92971631e-01 1.93261192e-01 + 1.93550894e-01 1.93840737e-01 1.94130721e-01 1.94420846e-01 1.94711111e-01 + 1.95001517e-01 1.95292063e-01 1.95582748e-01 1.95873574e-01 1.96164539e-01 + 1.96455643e-01 1.96746886e-01 1.97038269e-01 1.97329790e-01 1.97621449e-01 + 1.97913247e-01 1.98205183e-01 1.98497257e-01 1.98789469e-01 1.99081818e-01 + 1.99374304e-01 1.99666928e-01 1.99959688e-01 2.00252585e-01 2.00545619e-01 + 2.00838789e-01 2.01132095e-01 2.01425537e-01 2.01719114e-01 2.02012828e-01 + 2.02306676e-01 2.02600660e-01 2.02894778e-01 2.03189031e-01 2.03483419e-01 + 2.03777941e-01 2.04072597e-01 2.04367387e-01 2.04662311e-01 2.04957368e-01 + 2.05252558e-01 2.05547882e-01 2.05843338e-01 2.06138928e-01 2.06434649e-01 + 2.06730503e-01 2.07026489e-01 2.07322607e-01 2.07618857e-01 2.07915238e-01 + 2.08211750e-01 2.08508394e-01 2.08805168e-01 2.09102073e-01 2.09399109e-01 + 2.09696275e-01 2.09993571e-01 2.10290997e-01 2.10588552e-01 2.10886237e-01 + 2.11184052e-01 2.11481995e-01 2.11780068e-01 2.12078269e-01 2.12376598e-01 + 2.12675056e-01 2.12973642e-01 2.13272356e-01 2.13571197e-01 2.13870166e-01 + 2.14169263e-01 2.14468486e-01 2.14767837e-01 2.15067314e-01 2.15366917e-01 + 2.15666647e-01 2.15966503e-01 2.16266485e-01 2.16566592e-01 2.16866825e-01 + 2.17167184e-01 2.17467667e-01 2.17768276e-01 2.18069009e-01 2.18369866e-01 + 2.18670848e-01 2.18971954e-01 2.19273184e-01 2.19574538e-01 2.19876015e-01 + 2.20177615e-01 2.20479339e-01 2.20781185e-01 2.21083155e-01 2.21385246e-01 + 2.21687460e-01 2.21989797e-01 2.22292255e-01 2.22594835e-01 2.22897536e-01 + 2.23200359e-01 2.23503303e-01 2.23806367e-01 2.24109553e-01 2.24412859e-01 + 2.24716285e-01 2.25019832e-01 2.25323498e-01 2.25627285e-01 2.25931191e-01 + 2.26235216e-01 2.26539360e-01 2.26843623e-01 2.27148005e-01 2.27452506e-01 + 2.27757125e-01 2.28061862e-01 2.28366717e-01 2.28671690e-01 2.28976780e-01 + 2.29281988e-01 2.29587313e-01 2.29892755e-01 2.30198313e-01 2.30503989e-01 + 2.30809780e-01 2.31115688e-01 2.31421712e-01 2.31727852e-01 2.32034107e-01 + 2.32340478e-01 2.32646964e-01 2.32953565e-01 2.33260280e-01 2.33567111e-01 + 2.33874055e-01 2.34181114e-01 2.34488287e-01 2.34795574e-01 2.35102975e-01 + 2.35410489e-01 2.35718116e-01 2.36025856e-01 2.36333709e-01 2.36641675e-01 + 2.36949753e-01 2.37257943e-01 2.37566246e-01 2.37874660e-01 2.38183186e-01 + 2.38491824e-01 2.38800572e-01 2.39109432e-01 2.39418403e-01 2.39727484e-01 + 2.40036676e-01 2.40345978e-01 2.40655391e-01 2.40964913e-01 2.41274545e-01 + 2.41584286e-01 2.41894137e-01 2.42204097e-01 2.42514166e-01 2.42824344e-01 + 2.43134630e-01 2.43445024e-01 2.43755527e-01 2.44066138e-01 2.44376856e-01 + 2.44687682e-01 2.44998615e-01 2.45309656e-01 2.45620803e-01 2.45932058e-01 + 2.46243419e-01 2.46554886e-01 2.46866459e-01 2.47178139e-01 2.47489924e-01 + 2.47801815e-01 2.48113812e-01 2.48425913e-01 2.48738120e-01 2.49050431e-01 + 2.49362848e-01 2.49675368e-01 2.49987993e-01 2.50300722e-01 2.50613555e-01 + 2.50926492e-01 2.51239532e-01 2.51552675e-01 2.51865922e-01 2.52179271e-01 + 2.52492723e-01 2.52806278e-01 2.53119935e-01 2.53433694e-01 2.53747555e-01 + 2.54061518e-01 2.54375582e-01 2.54689748e-01 2.55004015e-01 2.55318383e-01 + 2.55632851e-01 2.55947421e-01 2.56262090e-01 2.56576860e-01 2.56891730e-01 + 2.57206700e-01 2.57521770e-01 2.57836938e-01 2.58152207e-01 2.58467574e-01 + 2.58783040e-01 2.59098605e-01 2.59414268e-01 2.59730029e-01 2.60045889e-01 + 2.60361847e-01 2.60677902e-01 2.60994055e-01 2.61310305e-01 2.61626652e-01 + 2.61943096e-01 2.62259637e-01 2.62576275e-01 2.62893009e-01 2.63209839e-01 + 2.63526765e-01 2.63843787e-01 2.64160905e-01 2.64478118e-01 2.64795426e-01 + 2.65112830e-01 2.65430328e-01 2.65747921e-01 2.66065608e-01 2.66383390e-01 + 2.66701265e-01 2.67019235e-01 2.67337298e-01 2.67655455e-01 2.67973706e-01 + 2.68292049e-01 2.68610485e-01 2.68929014e-01 2.69247636e-01 2.69566350e-01 + 2.69885156e-01 2.70204055e-01 2.70523045e-01 2.70842127e-01 2.71161300e-01 + 2.71480564e-01 2.71799920e-01 2.72119366e-01 2.72438903e-01 2.72758531e-01 + 2.73078249e-01 2.73398057e-01 2.73717955e-01 2.74037942e-01 2.74358019e-01 + 2.74678186e-01 2.74998442e-01 2.75318787e-01 2.75639220e-01 2.75959743e-01 + 2.76280353e-01 2.76601052e-01 2.76921839e-01 2.77242714e-01 2.77563676e-01 + 2.77884726e-01 2.78205864e-01 2.78527088e-01 2.78848399e-01 2.79169798e-01 + 2.79491282e-01 2.79812853e-01 2.80134510e-01 2.80456254e-01 2.80778083e-01 + 2.81099997e-01 2.81421997e-01 2.81744083e-01 2.82066253e-01 2.82388508e-01 + 2.82710848e-01 2.83033273e-01 2.83355782e-01 2.83678374e-01 2.84001051e-01 + 2.84323812e-01 2.84646656e-01 2.84969584e-01 2.85292594e-01 2.85615688e-01 + 2.85938865e-01 2.86262124e-01 2.86585466e-01 2.86908890e-01 2.87232396e-01 + 2.87555984e-01 2.87879654e-01 2.88203405e-01 2.88527238e-01 2.88851152e-01 + 2.89175147e-01 2.89499222e-01 2.89823378e-01 2.90147615e-01 2.90471932e-01 + 2.90796329e-01 2.91120806e-01 2.91445362e-01 2.91769999e-01 2.92094714e-01 + 2.92419508e-01 2.92744382e-01 2.93069334e-01 2.93394365e-01 2.93719474e-01 + 2.94044662e-01 2.94369927e-01 2.94695271e-01 2.95020692e-01 2.95346191e-01 + 2.95671767e-01 2.95997420e-01 2.96323150e-01 2.96648956e-01 2.96974840e-01 + 2.97300799e-01 2.97626835e-01 2.97952947e-01 2.98279135e-01 2.98605399e-01 + 2.98931738e-01 2.99258152e-01 2.99584642e-01 2.99911206e-01 3.00237845e-01 + 3.00564559e-01 3.00891347e-01 3.01218209e-01 3.01545146e-01 3.01872156e-01 + 3.02199240e-01 3.02526398e-01 3.02853628e-01 3.03180932e-01 3.03508309e-01 + 3.03835759e-01 3.04163281e-01 3.04490876e-01 3.04818543e-01 3.05146281e-01 + 3.05474092e-01 3.05801975e-01 3.06129929e-01 3.06457954e-01 3.06786051e-01 + 3.07114218e-01 3.07442456e-01 3.07770765e-01 3.08099145e-01 3.08427594e-01 + 3.08756114e-01 3.09084703e-01 3.09413363e-01 3.09742091e-01 3.10070890e-01 + 3.10399757e-01 3.10728693e-01 3.11057699e-01 3.11386772e-01 3.11715915e-01 + 3.12045125e-01 3.12374404e-01 3.12703751e-01 3.13033165e-01 3.13362647e-01 + 3.13692197e-01 3.14021813e-01 3.14351497e-01 3.14681248e-01 3.15011065e-01 + 3.15340949e-01 3.15670899e-01 3.16000915e-01 3.16330997e-01 3.16661145e-01 + 3.16991359e-01 3.17321638e-01 3.17651983e-01 3.17982392e-01 3.18312867e-01 + 3.18643406e-01 3.18974010e-01 3.19304678e-01 3.19635411e-01 3.19966207e-01 + 3.20297067e-01 3.20627992e-01 3.20958979e-01 3.21290030e-01 3.21621144e-01 + 3.21952321e-01 3.22283561e-01 3.22614864e-01 3.22946229e-01 3.23277656e-01 + 3.23609146e-01 3.23940697e-01 3.24272310e-01 3.24603985e-01 3.24935721e-01 + 3.25267519e-01 3.25599377e-01 3.25931297e-01 3.26263277e-01 3.26595317e-01 + 3.26927419e-01 3.27259580e-01 3.27591801e-01 3.27924082e-01 3.28256423e-01 + 3.28588824e-01 3.28921283e-01 3.29253802e-01 3.29586380e-01 3.29919017e-01 + 3.30251712e-01 3.30584466e-01 3.30917278e-01 3.31250149e-01 3.31583077e-01 + 3.31916063e-01 3.32249107e-01 3.32582208e-01 3.32915366e-01 3.33248582e-01 + 3.33581854e-01 3.33915183e-01 3.34248569e-01 3.34582011e-01 3.34915510e-01 + 3.35249064e-01 3.35582675e-01 3.35916341e-01 3.36250062e-01 3.36583839e-01 + 3.36917672e-01 3.37251559e-01 3.37585501e-01 3.37919498e-01 3.38253550e-01 + 3.38587656e-01 3.38921816e-01 3.39256030e-01 3.39590298e-01 3.39924620e-01 + 3.40258995e-01 3.40593423e-01 3.40927905e-01 3.41262440e-01 3.41597027e-01 + 3.41931667e-01 3.42266360e-01 3.42601105e-01 3.42935903e-01 3.43270752e-01 + 3.43605653e-01 3.43940606e-01 3.44275610e-01 3.44610666e-01 3.44945772e-01 + 3.45280930e-01 3.45616139e-01 3.45951398e-01 3.46286708e-01 3.46622068e-01 + 3.46957478e-01 3.47292938e-01 3.47628448e-01 3.47964008e-01 3.48299617e-01 + 3.48635275e-01 3.48970983e-01 3.49306740e-01 3.49642545e-01 3.49978399e-01 + 3.50314302e-01 3.50650253e-01 3.50986252e-01 3.51322299e-01 3.51658394e-01 + 3.51994536e-01 3.52330726e-01 3.52666964e-01 3.53003248e-01 3.53339580e-01 + 3.53675958e-01 3.54012383e-01 3.54348855e-01 3.54685373e-01 3.55021937e-01 + 3.55358547e-01 3.55695203e-01 3.56031904e-01 3.56368651e-01 3.56705444e-01 + 3.57042281e-01 3.57379164e-01 3.57716092e-01 3.58053064e-01 3.58390081e-01 + 3.58727142e-01 3.59064247e-01 3.59401397e-01 3.59738590e-01 3.60075827e-01 + 3.60413107e-01 3.60750431e-01 3.61087799e-01 3.61425209e-01 3.61762662e-01 + 3.62100158e-01 3.62437696e-01 3.62775277e-01 3.63112900e-01 3.63450566e-01 + 3.63788273e-01 3.64126022e-01 3.64463812e-01 3.64801645e-01 3.65139518e-01 + 3.65477432e-01 3.65815388e-01 3.66153384e-01 3.66491421e-01 3.66829498e-01 + 3.67167616e-01 3.67505774e-01 3.67843971e-01 3.68182209e-01 3.68520487e-01 + 3.68858803e-01 3.69197160e-01 3.69535555e-01 3.69873990e-01 3.70212463e-01 + 3.70550975e-01 3.70889526e-01 3.71228115e-01 3.71566742e-01 3.71905408e-01 + 3.72244111e-01 3.72582852e-01 3.72921631e-01 3.73260447e-01 3.73599300e-01 + 3.73938191e-01 3.74277119e-01 3.74616083e-01 3.74955084e-01 3.75294122e-01 + 3.75633196e-01 3.75972306e-01 3.76311452e-01 3.76650634e-01 3.76989852e-01 + 3.77329105e-01 3.77668394e-01 3.78007718e-01 3.78347077e-01 3.78686471e-01 + 3.79025899e-01 3.79365363e-01 3.79704861e-01 3.80044393e-01 3.80383959e-01 + 3.80723559e-01 3.81063194e-01 3.81402861e-01 3.81742563e-01 3.82082298e-01 + 3.82422065e-01 3.82761866e-01 3.83101700e-01 3.83441567e-01 3.83781466e-01 + 3.84121398e-01 3.84461362e-01 3.84801358e-01 3.85141386e-01 3.85481446e-01 + 3.85821538e-01 3.86161661e-01 3.86501816e-01 3.86842001e-01 3.87182218e-01 + 3.87522466e-01 3.87862744e-01 3.88203053e-01 3.88543393e-01 3.88883763e-01 + 3.89224162e-01 3.89564592e-01 3.89905052e-01 3.90245541e-01 3.90586060e-01 + 3.90926609e-01 3.91267186e-01 3.91607793e-01 3.91948428e-01 3.92289093e-01 + 3.92629785e-01 3.92970507e-01 3.93311256e-01 3.93652034e-01 3.93992840e-01 + 3.94333674e-01 3.94674535e-01 3.95015424e-01 3.95356341e-01 3.95697284e-01 + 3.96038255e-01 3.96379253e-01 3.96720277e-01 3.97061328e-01 3.97402406e-01 + 3.97743510e-01 3.98084640e-01 3.98425796e-01 3.98766978e-01 3.99108186e-01 + 3.99449420e-01 3.99790679e-01 4.00131963e-01 4.00473272e-01 4.00814607e-01 + 4.01155966e-01 4.01497350e-01 4.01838759e-01 4.02180192e-01 4.02521649e-01 + 4.02863130e-01 4.03204636e-01 4.03546165e-01 4.03887718e-01 4.04229294e-01 + 4.04570894e-01 4.04912517e-01 4.05254163e-01 4.05595832e-01 4.05937524e-01 + 4.06279238e-01 4.06620975e-01 4.06962734e-01 4.07304516e-01 4.07646319e-01 + 4.07988145e-01 4.08329992e-01 4.08671861e-01 4.09013751e-01 4.09355663e-01 + 4.09697596e-01 4.10039549e-01 4.10381524e-01 4.10723520e-01 4.11065536e-01 + 4.11407572e-01 4.11749629e-01 4.12091706e-01 4.12433803e-01 4.12775920e-01 + 4.13118057e-01 4.13460213e-01 4.13802389e-01 4.14144583e-01 4.14486798e-01 + 4.14829031e-01 4.15171283e-01 4.15513553e-01 4.15855843e-01 4.16198150e-01 + 4.16540476e-01 4.16882821e-01 4.17225183e-01 4.17567563e-01 4.17909961e-01 + 4.18252376e-01 4.18594809e-01 4.18937259e-01 4.19279726e-01 4.19622210e-01 + 4.19964711e-01 4.20307229e-01 4.20649763e-01 4.20992314e-01 4.21334881e-01 + 4.21677465e-01 4.22020064e-01 4.22362679e-01 4.22705310e-01 4.23047957e-01 + 4.23390619e-01 4.23733296e-01 4.24075988e-01 4.24418696e-01 4.24761418e-01 + 4.25104155e-01 4.25446907e-01 4.25789673e-01 4.26132454e-01 4.26475249e-01 + 4.26818057e-01 4.27160880e-01 4.27503717e-01 4.27846567e-01 4.28189430e-01 + 4.28532307e-01 4.28875197e-01 4.29218101e-01 4.29561017e-01 4.29903946e-01 + 4.30246888e-01 4.30589842e-01 4.30932808e-01 4.31275787e-01 4.31618778e-01 + 4.31961781e-01 4.32304796e-01 4.32647822e-01 4.32990860e-01 4.33333909e-01 + 4.33676970e-01 4.34020042e-01 4.34363125e-01 4.34706219e-01 4.35049323e-01 + 4.35392438e-01 4.35735564e-01 4.36078700e-01 4.36421846e-01 4.36765002e-01 + 4.37108168e-01 4.37451344e-01 4.37794529e-01 4.38137724e-01 4.38480929e-01 + 4.38824142e-01 4.39167365e-01 4.39510597e-01 4.39853837e-01 4.40197087e-01 + 4.40540345e-01 4.40883611e-01 4.41226885e-01 4.41570168e-01 4.41913459e-01 + 4.42256758e-01 4.42600064e-01 4.42943378e-01 4.43286700e-01 4.43630029e-01 + 4.43973365e-01 4.44316708e-01 4.44660058e-01 4.45003416e-01 4.45346779e-01 + 4.45690150e-01 4.46033526e-01 4.46376910e-01 4.46720299e-01 4.47063694e-01 + 4.47407095e-01 4.47750502e-01 4.48093915e-01 4.48437333e-01 4.48780757e-01 + 4.49124185e-01 4.49467619e-01 4.49811058e-01 4.50154502e-01 4.50497950e-01 + 4.50841403e-01 4.51184861e-01 4.51528322e-01 4.51871788e-01 4.52215259e-01 + 4.52558733e-01 4.52902210e-01 4.53245692e-01 4.53589177e-01 4.53932665e-01 + 4.54276157e-01 4.54619652e-01 4.54963150e-01 4.55306651e-01 4.55650154e-01 + 1.03953624e+00 1.03772749e+00 1.03592023e+00 1.03411445e+00 1.03231016e+00 + 1.03050735e+00 1.02870603e+00 1.02690620e+00 1.02510785e+00 1.02331100e+00 + 1.02151562e+00 1.01972174e+00 1.01792935e+00 1.01613844e+00 1.01434902e+00 + 1.01256110e+00 1.01077466e+00 1.00898971e+00 1.00720626e+00 1.00542429e+00 + 1.00364382e+00 1.00186484e+00 1.00008735e+00 9.98311355e-01 9.96536852e-01 + 9.94763842e-01 9.92992326e-01 9.91222304e-01 9.89453777e-01 9.87686744e-01 + 9.85921207e-01 9.84157165e-01 9.82394619e-01 9.80633570e-01 9.78874017e-01 + 9.77115962e-01 9.75359404e-01 9.73604344e-01 9.71850782e-01 9.70098719e-01 + 9.68348155e-01 9.66599090e-01 9.64851525e-01 9.63105460e-01 9.61360895e-01 + 9.59617832e-01 9.57876269e-01 9.56136208e-01 9.54397649e-01 9.52660593e-01 + 9.50925039e-01 9.49190988e-01 9.47458441e-01 9.45727397e-01 9.43997858e-01 + 9.42269823e-01 9.40543293e-01 9.38818268e-01 9.37094749e-01 9.35372736e-01 + 9.33652230e-01 9.31933230e-01 9.30215737e-01 9.28499752e-01 9.26785274e-01 + 9.25072305e-01 9.23360844e-01 9.21650893e-01 9.19942450e-01 9.18235517e-01 + 9.16530094e-01 9.14826182e-01 9.13123780e-01 9.11422890e-01 9.09723511e-01 + 9.08025644e-01 9.06329289e-01 9.04634446e-01 9.02941117e-01 9.01249300e-01 + 8.99558998e-01 8.97870209e-01 8.96182935e-01 8.94497176e-01 8.92812931e-01 + 8.91130202e-01 8.89448989e-01 8.87769292e-01 8.86091112e-01 8.84414448e-01 + 8.82739302e-01 8.81065673e-01 8.79393562e-01 8.77722970e-01 8.76053896e-01 + 8.74386341e-01 8.72720306e-01 8.71055790e-01 8.69392795e-01 8.67731320e-01 + 8.66071366e-01 8.64412932e-01 8.62756021e-01 8.61100631e-01 8.59446764e-01 + 8.57794419e-01 8.56143597e-01 8.54494298e-01 8.52846523e-01 8.51200272e-01 + 8.49555545e-01 8.47912343e-01 8.46270666e-01 8.44630515e-01 8.42991889e-01 + 8.41354789e-01 8.39719216e-01 8.38085170e-01 8.36452650e-01 8.34821658e-01 + 8.33192195e-01 8.31564259e-01 8.29937852e-01 8.28312973e-01 8.26689624e-01 + 8.25067805e-01 8.23447515e-01 8.21828756e-01 8.20211528e-01 8.18595830e-01 + 8.16981664e-01 8.15369029e-01 8.13757927e-01 8.12148357e-01 8.10540319e-01 + 8.08933815e-01 8.07328844e-01 8.05725406e-01 8.04123503e-01 8.02523135e-01 + 8.00924301e-01 7.99327002e-01 7.97731239e-01 7.96137011e-01 7.94544320e-01 + 7.92953165e-01 7.91363547e-01 7.89775466e-01 7.88188923e-01 7.86603918e-01 + 7.85020450e-01 7.83438522e-01 7.81858132e-01 7.80279281e-01 7.78701970e-01 + 7.77126199e-01 7.75551968e-01 7.73979278e-01 7.72408129e-01 7.70838521e-01 + 7.69270454e-01 7.67703930e-01 7.66138947e-01 7.64575508e-01 7.63013611e-01 + 7.61453258e-01 7.59894448e-01 7.58337182e-01 7.56781460e-01 7.55227283e-01 + 7.53674651e-01 7.52123565e-01 7.50574024e-01 7.49026029e-01 7.47479580e-01 + 7.45934678e-01 7.44391322e-01 7.42849514e-01 7.41309254e-01 7.39770542e-01 + 7.38233378e-01 7.36697762e-01 7.35163696e-01 7.33631179e-01 7.32100211e-01 + 7.30570794e-01 7.29042926e-01 7.27516610e-01 7.25991844e-01 7.24468629e-01 + 7.22946966e-01 7.21426855e-01 7.19908297e-01 7.18391291e-01 7.16875837e-01 + 7.15361937e-01 7.13849591e-01 7.12338798e-01 7.10829560e-01 7.09321876e-01 + 7.07815747e-01 7.06311174e-01 7.04808155e-01 7.03306693e-01 7.01806787e-01 + 7.00308437e-01 6.98811644e-01 6.97316408e-01 6.95822730e-01 6.94330610e-01 + 6.92840047e-01 6.91351043e-01 6.89863598e-01 6.88377712e-01 6.86893385e-01 + 6.85410618e-01 6.83929411e-01 6.82449765e-01 6.80971679e-01 6.79495154e-01 + 6.78020190e-01 6.76546789e-01 6.75074949e-01 6.73604671e-01 6.72135956e-01 + 6.70668804e-01 6.69203215e-01 6.67739189e-01 6.66276728e-01 6.64815830e-01 + 6.63356498e-01 6.61898730e-01 6.60442527e-01 6.58987889e-01 6.57534818e-01 + 6.56083312e-01 6.54633373e-01 6.53185001e-01 6.51738195e-01 6.50292957e-01 + 6.48849287e-01 6.47407184e-01 6.45966650e-01 6.44527685e-01 6.43090288e-01 + 6.41654460e-01 6.40220202e-01 6.38787514e-01 6.37356396e-01 6.35926849e-01 + 6.34498872e-01 6.33072467e-01 6.31647633e-01 6.30224370e-01 6.28802680e-01 + 6.27382561e-01 6.25964016e-01 6.24547043e-01 6.23131644e-01 6.21717818e-01 + 6.20305566e-01 6.18894889e-01 6.17485785e-01 6.16078257e-01 6.14672303e-01 + 6.13267925e-01 6.11865123e-01 6.10463897e-01 6.09064247e-01 6.07666173e-01 + 6.06269677e-01 6.04874758e-01 6.03481416e-01 6.02089652e-01 6.00699467e-01 + 5.99310859e-01 5.97923831e-01 5.96538381e-01 5.95154511e-01 5.93772221e-01 + 5.92391510e-01 5.91012380e-01 5.89634830e-01 5.88258861e-01 5.86884473e-01 + 5.85511667e-01 5.84140442e-01 5.82770800e-01 5.81402740e-01 5.80036262e-01 + 5.78671367e-01 5.77308056e-01 5.75946328e-01 5.74586184e-01 5.73227624e-01 + 5.71870649e-01 5.70515258e-01 5.69161453e-01 5.67809232e-01 5.66458597e-01 + 5.65109548e-01 5.63762086e-01 5.62416210e-01 5.61071920e-01 5.59729218e-01 + 5.58388103e-01 5.57048576e-01 5.55710636e-01 5.54374285e-01 5.53039523e-01 + 5.51706349e-01 5.50374764e-01 5.49044769e-01 5.47716364e-01 5.46389548e-01 + 5.45064323e-01 5.43740689e-01 5.42418645e-01 5.41098192e-01 5.39779331e-01 + 5.38462062e-01 5.37146385e-01 5.35832299e-01 5.34519807e-01 5.33208907e-01 + 5.31899601e-01 5.30591888e-01 5.29285769e-01 5.27981244e-01 5.26678313e-01 + 5.25376977e-01 5.24077235e-01 5.22779089e-01 5.21482538e-01 5.20187583e-01 + 5.18894224e-01 5.17602461e-01 5.16312295e-01 5.15023726e-01 5.13736754e-01 + 5.12451379e-01 5.11167602e-01 5.09885423e-01 5.08604843e-01 5.07325861e-01 + 5.06048477e-01 5.04772693e-01 5.03498508e-01 5.02225923e-01 5.00954938e-01 + 4.99685553e-01 4.98417769e-01 4.97151585e-01 4.95887003e-01 4.94624021e-01 + 4.93362642e-01 4.92102864e-01 4.90844689e-01 4.89588116e-01 4.88333145e-01 + 4.87079778e-01 4.85828014e-01 4.84577853e-01 4.83329297e-01 4.82082344e-01 + 4.80836996e-01 4.79593252e-01 4.78351114e-01 4.77110580e-01 4.75871652e-01 + 4.74634330e-01 4.73398614e-01 4.72164504e-01 4.70932001e-01 4.69701104e-01 + 4.68471815e-01 4.67244132e-01 4.66018058e-01 4.64793591e-01 4.63570733e-01 + 4.62349483e-01 4.61129842e-01 4.59911810e-01 4.58695387e-01 4.57480573e-01 + 4.56267369e-01 4.55055776e-01 4.53845792e-01 4.52637419e-01 4.51430658e-01 + 4.50225507e-01 4.49021967e-01 4.47820039e-01 4.46619724e-01 4.45421020e-01 + 4.44223928e-01 4.43028450e-01 4.41834584e-01 4.40642332e-01 4.39451693e-01 + 4.38262668e-01 4.37075256e-01 4.35889459e-01 4.34705277e-01 4.33522709e-01 + 4.32341757e-01 4.31162420e-01 4.29984698e-01 4.28808592e-01 4.27634102e-01 + 4.26461229e-01 4.25289972e-01 4.24120332e-01 4.22952310e-01 4.21785904e-01 + 4.20621116e-01 4.19457946e-01 4.18296395e-01 4.17136461e-01 4.15978147e-01 + 4.14821451e-01 4.13666374e-01 4.12512917e-01 4.11361080e-01 4.10210862e-01 + 4.09062265e-01 4.07915288e-01 4.06769932e-01 4.05626197e-01 4.04484083e-01 + 4.03343590e-01 4.02204719e-01 4.01067470e-01 3.99931844e-01 3.98797839e-01 + 3.97665458e-01 3.96534699e-01 3.95405564e-01 3.94278052e-01 3.93152164e-01 + 3.92027900e-01 3.90905259e-01 3.89784244e-01 3.88664853e-01 3.87547087e-01 + 3.86430946e-01 3.85316431e-01 3.84203541e-01 3.83092278e-01 3.81982640e-01 + 3.80874629e-01 3.79768245e-01 3.78663487e-01 3.77560357e-01 3.76458854e-01 + 3.75358979e-01 3.74260731e-01 3.73164112e-01 3.72069121e-01 3.70975759e-01 + 3.69884025e-01 3.68793921e-01 3.67705446e-01 3.66618601e-01 3.65533385e-01 + 3.64449799e-01 3.63367844e-01 3.62287520e-01 3.61208826e-01 3.60131763e-01 + 3.59056331e-01 3.57982531e-01 3.56910363e-01 3.55839826e-01 3.54770922e-01 + 3.53703650e-01 3.52638011e-01 3.51574005e-01 3.50511632e-01 3.49450892e-01 + 3.48391786e-01 3.47334314e-01 3.46278476e-01 3.45224272e-01 3.44171703e-01 + 3.43120769e-01 3.42071469e-01 3.41023805e-01 3.39977776e-01 3.38933384e-01 + 3.37890627e-01 3.36849506e-01 3.35810021e-01 3.34772174e-01 3.33735963e-01 + 3.32701389e-01 3.31668453e-01 3.30637154e-01 3.29607493e-01 3.28579470e-01 + 3.27553085e-01 3.26528339e-01 3.25505231e-01 3.24483762e-01 3.23463933e-01 + 3.22445743e-01 3.21429192e-01 3.20414282e-01 3.19401011e-01 3.18389381e-01 + 3.17379391e-01 3.16371042e-01 3.15364334e-01 3.14359267e-01 3.13355841e-01 + 3.12354057e-01 3.11353915e-01 3.10355415e-01 3.09358557e-01 3.08363342e-01 + 3.07369770e-01 3.06377840e-01 3.05387554e-01 3.04398911e-01 3.03411912e-01 + 3.02426556e-01 3.01442845e-01 3.00460777e-01 2.99480355e-01 2.98501577e-01 + 2.97524444e-01 2.96548956e-01 2.95575113e-01 2.94602916e-01 2.93632365e-01 + 2.92663460e-01 2.91696201e-01 2.90730589e-01 2.89766623e-01 2.88804304e-01 + 2.87843632e-01 2.86884607e-01 2.85927230e-01 2.84971501e-01 2.84017420e-01 + 2.83064986e-01 2.82114201e-01 2.81165065e-01 2.80217578e-01 2.79271739e-01 + 2.78327550e-01 2.77385010e-01 2.76444119e-01 2.75504879e-01 2.74567288e-01 + 2.73631348e-01 2.72697059e-01 2.71764419e-01 2.70833431e-01 2.69904094e-01 + 2.68976408e-01 2.68050374e-01 2.67125991e-01 2.66203261e-01 2.65282182e-01 + 2.64362756e-01 2.63444982e-01 2.62528861e-01 2.61614393e-01 2.60701578e-01 + 2.59790416e-01 2.58880908e-01 2.57973054e-01 2.57066853e-01 2.56162307e-01 + 2.55259415e-01 2.54358178e-01 2.53458595e-01 2.52560668e-01 2.51664395e-01 + 2.50769778e-01 2.49876816e-01 2.48985511e-01 2.48095861e-01 2.47207867e-01 + 2.46321530e-01 2.45436849e-01 2.44553825e-01 2.43672457e-01 2.42792747e-01 + 2.41914695e-01 2.41038300e-01 2.40163562e-01 2.39290483e-01 2.38419061e-01 + 2.37549298e-01 2.36681193e-01 2.35814748e-01 2.34949961e-01 2.34086833e-01 + 2.33225364e-01 2.32365555e-01 2.31507405e-01 2.30650916e-01 2.29796086e-01 + 2.28942916e-01 2.28091407e-01 2.27241559e-01 2.26393372e-01 2.25546845e-01 + 2.24701980e-01 2.23858776e-01 2.23017233e-01 2.22177352e-01 2.21339134e-01 + 2.20502577e-01 2.19667682e-01 2.18834451e-01 2.18002881e-01 2.17172975e-01 + 2.16344732e-01 2.15518152e-01 2.14693235e-01 2.13869982e-01 2.13048393e-01 + 2.12228468e-01 2.11410207e-01 2.10593610e-01 2.09778678e-01 2.08965410e-01 + 2.08153807e-01 2.07343870e-01 2.06535598e-01 2.05728991e-01 2.04924049e-01 + 2.04120774e-01 2.03319164e-01 2.02519221e-01 2.01720944e-01 2.00924334e-01 + 2.00129390e-01 1.99336113e-01 1.98544503e-01 1.97754560e-01 1.96966285e-01 + 1.96179677e-01 1.95394737e-01 1.94611465e-01 1.93829861e-01 1.93049925e-01 + 1.92271658e-01 1.91495059e-01 1.90720129e-01 1.89946869e-01 1.89175277e-01 + 1.88405354e-01 1.87637101e-01 1.86870518e-01 1.86105605e-01 1.85342361e-01 + 1.84580788e-01 1.83820885e-01 1.83062653e-01 1.82306091e-01 1.81551200e-01 + 1.80797980e-01 1.80046431e-01 1.79296554e-01 1.78548348e-01 1.77801814e-01 + 1.77056952e-01 1.76313762e-01 1.75572244e-01 1.74832398e-01 1.74094225e-01 + 1.73357725e-01 1.72622897e-01 1.71889743e-01 1.71158261e-01 1.70428453e-01 + 1.69700319e-01 1.68973858e-01 1.68249071e-01 1.67525958e-01 1.66804519e-01 + 1.66084755e-01 1.65366665e-01 1.64650249e-01 1.63935509e-01 1.63222443e-01 + 1.62511053e-01 1.61801338e-01 1.61093298e-01 1.60386934e-01 1.59682246e-01 + 1.58979233e-01 1.58277897e-01 1.57578237e-01 1.56880253e-01 1.56183946e-01 + 1.55489316e-01 1.54796362e-01 1.54105086e-01 1.53415486e-01 1.52727564e-01 + 1.52041320e-01 1.51356753e-01 1.50673864e-01 1.49992653e-01 1.49313120e-01 + 1.48635265e-01 1.47959088e-01 1.47284591e-01 1.46611771e-01 1.45940631e-01 + 1.45271170e-01 1.44603388e-01 1.43937285e-01 1.43272862e-01 1.42610118e-01 + 1.41949054e-01 1.41289670e-01 1.40631966e-01 1.39975942e-01 1.39321598e-01 + 1.38668935e-01 1.38017953e-01 1.37368652e-01 1.36721031e-01 1.36075091e-01 + 1.35430833e-01 1.34788256e-01 1.34147361e-01 1.33508147e-01 1.32870615e-01 + 1.32234765e-01 1.31600597e-01 1.30968111e-01 1.30337308e-01 1.29708187e-01 + 1.29080749e-01 1.28454994e-01 1.27830921e-01 1.27208532e-01 1.26587826e-01 + 1.25968803e-01 1.25351464e-01 1.24735808e-01 1.24121836e-01 1.23509548e-01 + 1.22898944e-01 1.22290024e-01 1.21682789e-01 1.21077238e-01 1.20473372e-01 + 1.19871190e-01 1.19270693e-01 1.18671881e-01 1.18074755e-01 1.17479313e-01 + 1.16885558e-01 1.16293487e-01 1.15703102e-01 1.15114403e-01 1.14527390e-01 + 1.13942064e-01 1.13358423e-01 1.12776468e-01 1.12196200e-01 1.11617619e-01 + 1.11040725e-01 1.10465517e-01 1.09891996e-01 1.09320162e-01 1.08750016e-01 + 1.08181557e-01 1.07614785e-01 1.07049701e-01 1.06486305e-01 1.05924597e-01 + 1.05364577e-01 1.04806244e-01 1.04249601e-01 1.03694645e-01 1.03141378e-01 + 1.02589800e-01 1.02039910e-01 1.01491709e-01 1.00945198e-01 1.00400375e-01 + 9.98572416e-02 9.93157976e-02 9.87760431e-02 9.82379782e-02 9.77016030e-02 + 9.71669178e-02 9.66339224e-02 9.61026172e-02 9.55730022e-02 9.50450776e-02 + 9.45188434e-02 9.39942997e-02 9.34714468e-02 9.29502847e-02 9.24308135e-02 + 9.19130333e-02 9.13969443e-02 9.08825466e-02 9.03698403e-02 8.98588255e-02 + 8.93495023e-02 8.88418708e-02 8.83359312e-02 8.78316836e-02 8.73291281e-02 + 8.68282647e-02 8.63290937e-02 8.58316150e-02 8.53358290e-02 8.48417355e-02 + 8.43493348e-02 8.38586270e-02 8.33696121e-02 8.28822904e-02 8.23966618e-02 + 8.19127265e-02 8.14304847e-02 8.09499364e-02 8.04710817e-02 7.99939207e-02 + 7.95184537e-02 7.90446805e-02 7.85726014e-02 7.81022165e-02 7.76335259e-02 + 7.71665296e-02 7.67012279e-02 7.62376207e-02 7.57757082e-02 7.53154905e-02 + 7.48569677e-02 7.44001400e-02 7.39450073e-02 7.34915699e-02 7.30398277e-02 + 7.25897810e-02 7.21414298e-02 7.16947743e-02 7.12498144e-02 7.08065504e-02 + 7.03649822e-02 6.99251102e-02 6.94869342e-02 6.90504544e-02 6.86156710e-02 + 6.81825840e-02 6.77511935e-02 6.73214996e-02 6.68935024e-02 6.64672020e-02 + 6.60425985e-02 6.56196920e-02 6.51984826e-02 6.47789704e-02 6.43611555e-02 + 6.39450379e-02 6.35306178e-02 6.31178953e-02 6.27068704e-02 6.22975433e-02 + 6.18899141e-02 6.14839827e-02 6.10797494e-02 6.06772142e-02 6.02763772e-02 + 5.98772385e-02 5.94797982e-02 5.90840564e-02 5.86900131e-02 5.82976685e-02 + 5.79070227e-02 5.75180757e-02 5.71308276e-02 5.67452785e-02 5.63614285e-02 + 5.59792777e-02 5.55988261e-02 5.52200739e-02 5.48430212e-02 5.44676679e-02 + 5.40940143e-02 5.37220604e-02 5.33518062e-02 5.29832520e-02 5.26163976e-02 + 5.22512433e-02 5.18877891e-02 5.15260351e-02 5.11659814e-02 5.08076280e-02 + 5.04509751e-02 5.00960227e-02 4.97427708e-02 4.93912197e-02 4.90413693e-02 + 4.86932198e-02 4.83467711e-02 4.80020235e-02 4.76589769e-02 4.73176315e-02 + 4.69779873e-02 4.66400444e-02 4.63038029e-02 4.59692628e-02 4.56364243e-02 + 4.53052874e-02 4.49758521e-02 4.46481186e-02 4.43220870e-02 4.39977572e-02 + 4.36751294e-02 4.33542037e-02 4.30349801e-02 4.27174587e-02 4.24016395e-02 + 4.20875227e-02 4.17751083e-02 4.14643964e-02 4.11553870e-02 4.08480802e-02 + 4.05424762e-02 4.02385749e-02 3.99363764e-02 3.96358808e-02 3.93370881e-02 + 3.90399985e-02 3.87446120e-02 3.84509287e-02 3.81589486e-02 3.78686718e-02 + 3.75800983e-02 3.72932283e-02 3.70080618e-02 3.67245988e-02 3.64428394e-02 + 3.61627838e-02 3.58844318e-02 3.56077837e-02 3.53328395e-02 3.50595992e-02 + 3.47880629e-02 3.45182306e-02 3.42501025e-02 3.39836786e-02 3.37189589e-02 + 3.34559435e-02 3.31946324e-02 3.29350258e-02 3.26771236e-02 3.24209260e-02 + 3.21664330e-02 3.19136446e-02 3.16625610e-02 3.14131821e-02 3.11655080e-02 + 3.09195388e-02 3.06752746e-02 3.04327153e-02 3.01918611e-02 2.99527120e-02 + 2.97152680e-02 2.94795292e-02 2.92454957e-02 2.90131675e-02 2.87825447e-02 + 2.85536273e-02 2.83264153e-02 2.81009089e-02 2.78771081e-02 2.76550128e-02 + 2.74346233e-02 2.72159395e-02 2.69989614e-02 2.67836892e-02 2.65701228e-02 + 2.63582623e-02 2.61481079e-02 2.59396594e-02 2.57329170e-02 2.55278807e-02 + 2.53245505e-02 2.51229266e-02 2.49230089e-02 2.47247975e-02 2.45282924e-02 + 2.43334937e-02 2.41404014e-02 2.39490156e-02 2.37593363e-02 2.35713636e-02 + 2.33850975e-02 2.32005380e-02 2.30176851e-02 2.28365390e-02 2.26570997e-02 + 2.24793672e-02 2.23033415e-02 2.21290227e-02 2.19564108e-02 2.17855059e-02 + 2.16163080e-02 2.14488171e-02 2.12830333e-02 2.11189566e-02 2.09565871e-02 + 2.07959248e-02 2.06369696e-02 2.04797218e-02 2.03241812e-02 2.01703480e-02 + 2.00182221e-02 1.98678037e-02 1.97190927e-02 1.95720891e-02 1.94267931e-02 + 1.92832045e-02 1.91413236e-02 1.90011502e-02 1.88626845e-02 1.87259265e-02 + 1.85908761e-02 1.84575335e-02 1.83258986e-02 1.81959715e-02 1.80677522e-02 + 1.79412408e-02 1.78164372e-02 1.76933415e-02 1.75719538e-02 1.74522740e-02 + 1.73343022e-02 1.72180384e-02 1.71034827e-02 1.69906350e-02 1.68794954e-02 + 1.67700639e-02 1.66623405e-02 1.65563253e-02 1.64520183e-02 1.63494195e-02 + 1.62485289e-02 1.61493466e-02 1.60518726e-02 1.59561068e-02 1.58620494e-02 + 1.57697003e-02 1.56790596e-02 1.55901273e-02 1.55029034e-02 1.54173879e-02 + 1.53335808e-02 1.52514822e-02 1.51710921e-02 1.50924105e-02 1.50154374e-02 + 1.49401728e-02 1.48666168e-02 1.47947694e-02 1.47246305e-02 1.46562002e-02 + 1.45894786e-02 1.45244656e-02 1.44611612e-02 1.43995655e-02 1.43396785e-02 + 1.42815001e-02 1.42250305e-02 1.41702695e-02 1.41172173e-02 1.40658738e-02 + 1.40162391e-02 1.39683132e-02 1.39220960e-02 1.38775876e-02 1.38347880e-02 + 1.37936971e-02 1.37543151e-02 1.37166420e-02 1.36806776e-02 1.36464221e-02 + 1.36138754e-02 1.35830376e-02 1.35539086e-02 1.35264885e-02 1.35007773e-02 + 1.34767750e-02 1.34544815e-02 1.34338969e-02 1.34150212e-02 1.33978544e-02 + 1.33823966e-02 1.33686476e-02 1.33566075e-02 1.33462763e-02 1.33376541e-02 + 1.33307407e-02 1.33255363e-02 1.33220408e-02 1.33202542e-02 1.33201765e-02 + 1.33218078e-02 1.33251480e-02 1.33301970e-02 1.33369550e-02 1.33454220e-02 + 1.33555978e-02 1.33674825e-02 1.33810762e-02 1.33963787e-02 1.34133902e-02 + 1.34321105e-02 1.34525397e-02 1.34746779e-02 1.34985249e-02 1.35240808e-02 + 1.35513455e-02 1.35803192e-02 1.36110016e-02 1.36433930e-02 1.36774932e-02 + 1.37133022e-02 1.37508200e-02 1.37900467e-02 1.38309822e-02 1.38736265e-02 + 1.39179796e-02 1.39640414e-02 1.40118121e-02 1.40612914e-02 1.41124796e-02 + 1.41653765e-02 1.42199821e-02 1.42762964e-02 1.43343194e-02 1.43940512e-02 + 1.44554916e-02 1.45186406e-02 1.45834983e-02 1.46500646e-02 1.47183396e-02 + 1.47883231e-02 1.48600153e-02 1.49334160e-02 1.50085252e-02 1.50853430e-02 + 1.51638693e-02 1.52441041e-02 1.53260474e-02 1.54096992e-02 1.54950594e-02 + 1.55821280e-02 1.56709051e-02 1.57613905e-02 1.58535843e-02 1.59474864e-02 + 1.60430969e-02 1.61404156e-02 1.62394427e-02 1.63401780e-02 1.64426215e-02 + 1.65467732e-02 1.66526331e-02 1.67602012e-02 1.68694775e-02 1.69804618e-02 + 1.70931542e-02 1.72075547e-02 1.73236633e-02 1.74414798e-02 1.75610043e-02 + 1.76822368e-02 1.78051772e-02 1.79298256e-02 1.80561818e-02 1.81842458e-02 + 1.83140177e-02 1.84454973e-02 1.85786847e-02 1.87135798e-02 1.88501827e-02 + 1.89884931e-02 1.91285113e-02 1.92702370e-02 1.94136703e-02 1.95588111e-02 + 1.97056595e-02 1.98542153e-02 2.00044786e-02 2.01564492e-02 2.03101272e-02 + 2.04655126e-02 2.06226053e-02 2.07814052e-02 2.09419123e-02 2.11041267e-02 + 2.12680482e-02 2.14336768e-02 2.16010125e-02 2.17700553e-02 2.19408050e-02 + 2.21132617e-02 2.22874254e-02 2.24632959e-02 2.26408733e-02 2.28201575e-02 + 2.30011484e-02 2.31838461e-02 2.33682505e-02 2.35543615e-02 2.37421791e-02 + 2.39317033e-02 2.41229339e-02 2.43158711e-02 2.45105147e-02 2.47068647e-02 + 2.49049210e-02 2.51046836e-02 2.53061524e-02 2.55093275e-02 2.57142087e-02 + 2.59207960e-02 2.61290894e-02 2.63390888e-02 2.65507942e-02 2.67642055e-02 + 2.69793227e-02 2.71961457e-02 2.74146744e-02 2.76349090e-02 2.78568491e-02 + 2.80804949e-02 2.83058463e-02 2.85329032e-02 2.87616656e-02 2.89921334e-02 + 2.92243066e-02 2.94581851e-02 2.96937689e-02 2.99310578e-02 3.01700520e-02 + 3.04107512e-02 3.06531555e-02 3.08972648e-02 3.11430790e-02 3.13905981e-02 + 3.16398220e-02 3.18907507e-02 3.21433841e-02 3.23977222e-02 3.26537648e-02 + 3.29115120e-02 3.31709637e-02 3.34321199e-02 3.36949803e-02 3.39595451e-02 + 3.42258142e-02 3.44937874e-02 3.47634647e-02 3.50348461e-02 3.53079315e-02 + 3.55827209e-02 3.58592141e-02 3.61374112e-02 3.64173120e-02 3.66989165e-02 + 3.69822246e-02 3.72672363e-02 3.75539515e-02 3.78423701e-02 3.81324920e-02 + 3.84243173e-02 3.87178458e-02 3.90130775e-02 3.93100123e-02 3.96086502e-02 + 3.99089910e-02 4.02110347e-02 4.05147812e-02 4.08202305e-02 4.11273825e-02 + 4.14362371e-02 4.17467942e-02 4.20590539e-02 4.23730160e-02 4.26886804e-02 + 4.30060471e-02 4.33251159e-02 4.36458870e-02 4.39683600e-02 4.42925351e-02 + 4.46184120e-02 4.49459908e-02 4.52752714e-02 4.56062536e-02 4.59389375e-02 + 4.62733229e-02 4.66094097e-02 4.69471980e-02 4.72866875e-02 4.76278783e-02 + 4.79707703e-02 4.83153633e-02 4.86616573e-02 4.90096522e-02 4.93593480e-02 + 4.97107446e-02 5.00638418e-02 5.04186396e-02 5.07751380e-02 5.11333368e-02 + 5.14932360e-02 5.18548354e-02 5.22181351e-02 5.25831349e-02 5.29498347e-02 + 5.33182344e-02 5.36883341e-02 5.40601335e-02 5.44336326e-02 5.48088313e-02 + 5.51857296e-02 5.55643273e-02 5.59446244e-02 5.63266207e-02 5.67103163e-02 + 5.70957109e-02 5.74828046e-02 5.78715972e-02 5.82620886e-02 5.86542788e-02 + 5.90481677e-02 5.94437551e-02 5.98410410e-02 6.02400253e-02 6.06407080e-02 + 6.10430888e-02 6.14471678e-02 6.18529447e-02 6.22604197e-02 6.26695925e-02 + 6.30804630e-02 6.34930312e-02 6.39072970e-02 6.43232602e-02 6.47409209e-02 + 6.51602788e-02 6.55813340e-02 6.60040862e-02 6.64285354e-02 6.68546816e-02 + 6.72825245e-02 6.77120642e-02 6.81433005e-02 6.85762333e-02 6.90108625e-02 + 6.94471881e-02 6.98852099e-02 7.03249278e-02 7.07663417e-02 7.12094516e-02 + 7.16542573e-02 7.21007588e-02 7.25489558e-02 7.29988484e-02 7.34504365e-02 + 7.39037198e-02 7.43586984e-02 7.48153721e-02 7.52737408e-02 7.57338044e-02 + 7.61955628e-02 7.66590160e-02 7.71241637e-02 7.75910059e-02 7.80595425e-02 + 7.85297734e-02 7.90016985e-02 7.94753177e-02 7.99506308e-02 8.04276378e-02 + 8.09063385e-02 8.13867329e-02 8.18688208e-02 8.23526021e-02 8.28380768e-02 + 8.33252446e-02 8.38141056e-02 8.43046595e-02 8.47969063e-02 8.52908459e-02 + 8.57864782e-02 8.62838029e-02 8.67828201e-02 8.72835297e-02 8.77859314e-02 + 8.82900252e-02 8.87958110e-02 8.93032887e-02 8.98124581e-02 9.03233191e-02 + 9.08358717e-02 9.13501157e-02 9.18660509e-02 9.23836774e-02 9.29029949e-02 + 9.34240033e-02 9.39467025e-02 9.44710925e-02 9.49971730e-02 9.55249440e-02 + 9.60544054e-02 9.65855570e-02 9.71183987e-02 9.76529303e-02 9.81891519e-02 + 9.87270632e-02 9.92666641e-02 9.98079545e-02 1.00350934e-01 1.00895603e-01 + 1.01441962e-01 1.01990009e-01 1.02539745e-01 1.03091170e-01 1.03644283e-01 + 1.04199085e-01 1.04755576e-01 1.05313754e-01 1.05873621e-01 1.06435176e-01 + 1.06998419e-01 1.07563349e-01 1.08129968e-01 1.08698273e-01 1.09268266e-01 + 1.09839947e-01 1.10413314e-01 1.10988368e-01 1.11565110e-01 1.12143538e-01 + 1.12723652e-01 1.13305453e-01 1.13888941e-01 1.14474115e-01 1.15060974e-01 + 1.15649520e-01 1.16239751e-01 1.16831669e-01 1.17425271e-01 1.18020560e-01 + 1.18617533e-01 1.19216192e-01 1.19816535e-01 1.20418564e-01 1.21022277e-01 + 1.21627675e-01 1.22234757e-01 1.22843524e-01 1.23453975e-01 1.24066109e-01 + 1.24679928e-01 1.25295431e-01 1.25912617e-01 1.26531487e-01 1.27152040e-01 + 1.27774276e-01 1.28398196e-01 1.29023798e-01 1.29651083e-01 1.30280051e-01 + 1.30910702e-01 1.31543034e-01 1.32177050e-01 1.32812747e-01 1.33450126e-01 + 1.34089187e-01 1.34729929e-01 1.35372353e-01 1.36016459e-01 1.36662246e-01 + 1.37309713e-01 1.37958862e-01 1.38609692e-01 1.39262202e-01 1.39916393e-01 + 1.40572264e-01 1.41229815e-01 1.41889046e-01 1.42549958e-01 1.43212549e-01 + 1.43876819e-01 1.44542770e-01 1.45210399e-01 1.45879708e-01 1.46550695e-01 + 1.47223362e-01 1.47897707e-01 1.48573731e-01 1.49251433e-01 1.49930814e-01 + 1.50611872e-01 1.51294609e-01 1.51979023e-01 1.52665115e-01 1.53352885e-01 + 1.54042332e-01 1.54733456e-01 1.55426257e-01 1.56120735e-01 1.56816890e-01 + 1.57514721e-01 1.58214229e-01 1.58915413e-01 1.59618273e-01 1.60322809e-01 + 1.61029020e-01 1.61736908e-01 1.62446471e-01 1.63157709e-01 1.63870622e-01 + 1.64585210e-01 1.65301473e-01 1.66019411e-01 1.66739023e-01 1.67460310e-01 + 1.68183271e-01 1.68907906e-01 1.69634214e-01 1.70362197e-01 1.71091853e-01 + 1.71823182e-01 1.72556184e-01 1.73290860e-01 1.74027208e-01 1.74765229e-01 + 1.75504923e-01 1.76246289e-01 1.76989327e-01 1.77734037e-01 1.78480419e-01 + 1.79228473e-01 1.79978199e-01 1.80729595e-01 1.81482663e-01 1.82237402e-01 + 1.82993812e-01 1.83751893e-01 1.84511644e-01 1.85273065e-01 1.86036157e-01 + 1.86800919e-01 1.87567350e-01 1.88335451e-01 1.89105222e-01 1.89876662e-01 + 1.90649771e-01 1.91424549e-01 1.92200996e-01 1.92979112e-01 1.93758896e-01 + 1.94540348e-01 1.95323469e-01 1.96108257e-01 1.96894713e-01 1.97682837e-01 + 1.98472628e-01 1.99264087e-01 2.00057212e-01 2.00852004e-01 2.01648463e-01 + 2.02446589e-01 2.03246381e-01 2.04047839e-01 2.04850963e-01 2.05655753e-01 + 2.06462208e-01 2.07270329e-01 2.08080115e-01 2.08891567e-01 2.09704683e-01 + 2.10519464e-01 2.11335909e-01 2.12154019e-01 2.12973793e-01 2.13795231e-01 + 2.14618333e-01 2.15443098e-01 2.16269527e-01 2.17097619e-01 2.17927374e-01 + 2.18758792e-01 2.19591873e-01 2.20426616e-01 2.21263022e-01 2.22101090e-01 + 2.22940819e-01 2.23782211e-01 2.24625264e-01 2.25469978e-01 2.26316354e-01 + 2.27164390e-01 2.28014088e-01 2.28865446e-01 2.29718464e-01 2.30573143e-01 + 2.31429482e-01 2.32287480e-01 2.33147139e-01 2.34008457e-01 2.34871434e-01 + 2.35736070e-01 2.36602365e-01 2.37470319e-01 2.38339931e-01 2.39211202e-01 + 2.40084131e-01 2.40958717e-01 2.41834962e-01 2.42712864e-01 2.43592423e-01 + 2.44473640e-01 2.45356513e-01 2.46241044e-01 2.47127230e-01 2.48015074e-01 + 2.48904573e-01 2.49795728e-01 2.50688539e-01 2.51583006e-01 2.52479128e-01 + 2.53376905e-01 2.54276337e-01 2.55177424e-01 2.56080166e-01 2.56984562e-01 + 2.57890612e-01 2.58798316e-01 2.59707674e-01 2.60618685e-01 2.61531350e-01 + 2.62445667e-01 2.63361638e-01 2.64279262e-01 2.65198538e-01 2.66119466e-01 + 2.67042047e-01 2.67966279e-01 2.68892164e-01 2.69819699e-01 2.70748886e-01 + 2.71679724e-01 2.72612213e-01 2.73546353e-01 2.74482143e-01 2.75419584e-01 + 2.76358674e-01 2.77299415e-01 2.78241805e-01 2.79185844e-01 2.80131533e-01 + 2.81078870e-01 2.82027857e-01 2.82978492e-01 2.83930775e-01 2.84884707e-01 + 2.85840287e-01 2.86797514e-01 2.87756389e-01 2.88716911e-01 2.89679080e-01 + 2.90642896e-01 2.91608359e-01 2.92575468e-01 2.93544224e-01 2.94514625e-01 + 2.95486673e-01 2.96460366e-01 2.97435704e-01 2.98412687e-01 2.99391316e-01 + 3.00371589e-01 3.01353507e-01 3.02337069e-01 3.03322275e-01 3.04309125e-01 + 3.05297618e-01 3.06287755e-01 3.07279535e-01 3.08272958e-01 3.09268024e-01 + 3.10264733e-01 3.11263084e-01 3.12263076e-01 3.13264711e-01 3.14267987e-01 + 3.15272905e-01 3.16279464e-01 3.17287664e-01 3.18297505e-01 3.19308986e-01 + 3.20322108e-01 3.21336869e-01 3.22353271e-01 3.23371312e-01 3.24390992e-01 + 3.25412312e-01 3.26435271e-01 3.27459868e-01 3.28486104e-01 3.29513978e-01 + 3.30543490e-01 3.31574640e-01 3.32607428e-01 3.33641852e-01 3.34677914e-01 + 3.35715613e-01 3.36754949e-01 3.37795921e-01 3.38838529e-01 3.39882774e-01 + 3.40928653e-01 3.41976169e-01 3.43025320e-01 3.44076105e-01 3.45128526e-01 + 3.46182581e-01 3.47238271e-01 3.48295594e-01 3.49354552e-01 3.50415143e-01 + 3.51477368e-01 3.52541225e-01 3.53606716e-01 3.54673839e-01 3.55742595e-01 + 3.56812983e-01 3.57885003e-01 3.58958655e-01 3.60033939e-01 3.61110853e-01 + 3.62189399e-01 3.63269575e-01 3.64351382e-01 3.65434820e-01 3.66519887e-01 + 3.67606584e-01 3.68694911e-01 3.69784868e-01 3.70876453e-01 3.71969667e-01 + 3.73064510e-01 3.74160981e-01 3.75259081e-01 3.76358808e-01 3.77460163e-01 + 3.78563145e-01 3.79667755e-01 3.80773992e-01 3.81881855e-01 3.82991344e-01 + 3.84102460e-01 3.85215202e-01 3.86329570e-01 3.87445563e-01 3.88563181e-01 + 3.89682424e-01 3.90803292e-01 3.91925784e-01 3.93049901e-01 3.94175642e-01 + 3.95303006e-01 3.96431994e-01 3.97562605e-01 3.98694839e-01 3.99828696e-01 + 4.00964175e-01 4.02101276e-01 4.03240000e-01 4.04380345e-01 4.05522312e-01 + 4.06665899e-01 4.07811108e-01 4.08957938e-01 4.10106388e-01 4.11256458e-01 + 4.12408148e-01 4.13561458e-01 4.14716388e-01 4.15872936e-01 4.17031104e-01 + 4.18190890e-01 4.19352295e-01 4.20515317e-01 4.21679958e-01 4.22846216e-01 + 4.24014092e-01 4.25183585e-01 4.26354695e-01 4.27527421e-01 4.28701764e-01 + 4.29877723e-01 4.31055298e-01 4.32234488e-01 4.33415294e-01 4.34597715e-01 + 4.35781751e-01 4.36967401e-01 4.38154665e-01 4.39343544e-01 4.40534036e-01 + 4.41726142e-01 4.42919861e-01 4.44115193e-01 4.45312138e-01 4.46510695e-01 + 4.47710864e-01 4.48912645e-01 4.50116038e-01 4.51321043e-01 4.52527658e-01 + 4.53735885e-01 4.54945722e-01 4.56157169e-01 4.57370226e-01 4.58584894e-01 + 4.59801170e-01 4.61019056e-01 4.62238551e-01 4.63459655e-01 4.64682367e-01 + 4.65906688e-01 4.67132616e-01 4.68360152e-01 4.69589295e-01 4.70820046e-01 + 4.72052403e-01 4.73286367e-01 4.74521937e-01 4.75759113e-01 4.76997895e-01 + 4.78238283e-01 4.79480276e-01 4.80723873e-01 4.81969076e-01 4.83215882e-01 + 4.84464293e-01 4.85714308e-01 4.86965926e-01 4.88219148e-01 4.89473972e-01 + 4.90730400e-01 4.91988430e-01 4.93248062e-01 4.94509296e-01 4.95772131e-01 + 4.97036568e-01 4.98302606e-01 4.99570245e-01 5.00839485e-01 5.02110324e-01 + 5.03382764e-01 5.04656804e-01 5.05932442e-01 5.07209680e-01 5.08488517e-01 + 5.09768953e-01 5.11050986e-01 5.12334618e-01 5.13619847e-01 5.14906674e-01 + 5.16195098e-01 5.17485119e-01 5.18776737e-01 5.20069951e-01 5.21364761e-01 + 5.22661167e-01 5.23959168e-01 5.25258764e-01 5.26559955e-01 5.27862741e-01 + 5.29167122e-01 5.30473096e-01 5.31780664e-01 5.33089826e-01 5.34400580e-01 + 5.35712928e-01 5.37026868e-01 5.38342401e-01 5.39659526e-01 5.40978242e-01 + 5.42298550e-01 5.43620449e-01 5.44943939e-01 5.46269020e-01 5.47595691e-01 + 5.48923952e-01 5.50253802e-01 5.51585242e-01 5.52918272e-01 5.54252890e-01 + 5.55589096e-01 5.56926891e-01 5.58266274e-01 5.59607245e-01 5.60949803e-01 + 5.62293948e-01 5.63639680e-01 5.64986999e-01 5.66335903e-01 5.67686394e-01 + 5.69038470e-01 5.70392132e-01 5.71747378e-01 5.73104210e-01 5.74462626e-01 + 5.75822626e-01 5.77184210e-01 5.78547377e-01 5.79912128e-01 5.81278461e-01 + 5.82646378e-01 5.84015876e-01 5.85386957e-01 5.86759620e-01 5.88133864e-01 + 5.89509689e-01 5.90887095e-01 5.92266082e-01 5.93646649e-01 5.95028796e-01 + 5.96412522e-01 5.97797828e-01 5.99184713e-01 6.00573177e-01 6.01963219e-01 + 6.03354840e-01 6.04748038e-01 6.06142814e-01 6.07539167e-01 6.08937097e-01 + 6.10336603e-01 6.11737686e-01 6.13140346e-01 6.14544580e-01 6.15950391e-01 + 6.17357776e-01 6.18766736e-01 6.20177271e-01 6.21589379e-01 6.23003062e-01 + 6.24418319e-01 6.25835148e-01 6.27253551e-01 6.28673526e-01 6.30095073e-01 + 6.31518193e-01 6.32942884e-01 6.34369147e-01 6.35796981e-01 6.37226386e-01 + 6.38657361e-01 6.40089906e-01 6.41524022e-01 6.42959706e-01 6.44396960e-01 + 6.45835783e-01 6.47276175e-01 6.48718135e-01 6.50161663e-01 6.51606758e-01 + 6.53053421e-01 6.54501651e-01 6.55951448e-01 6.57402811e-01 6.58855740e-01 + 6.60310236e-01 6.61766296e-01 6.63223922e-01 6.64683112e-01 6.66143868e-01 + 6.67606187e-01 6.69070070e-01 6.70535517e-01 6.72002527e-01 6.73471100e-01 + 6.74941236e-01 6.76412934e-01 6.77886194e-01 6.79361015e-01 6.80837398e-01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.65580254e-01 1.65563515e-01 1.65546741e-01 1.65529929e-01 1.65513082e-01 + 1.65496198e-01 1.65479277e-01 1.65462319e-01 1.65445324e-01 1.65428292e-01 + 1.65411223e-01 1.65394117e-01 1.65376974e-01 1.65359793e-01 1.65342574e-01 + 1.65325318e-01 1.65308025e-01 1.65290693e-01 1.65273323e-01 1.65255915e-01 + 1.65238469e-01 1.65220985e-01 1.65203462e-01 1.65185901e-01 1.65168301e-01 + 1.65150662e-01 1.65132985e-01 1.65115268e-01 1.65097513e-01 1.65079718e-01 + 1.65061884e-01 1.65044011e-01 1.65026098e-01 1.65008145e-01 1.64990153e-01 + 1.64972120e-01 1.64954048e-01 1.64935936e-01 1.64917783e-01 1.64899591e-01 + 1.64881357e-01 1.64863083e-01 1.64844769e-01 1.64826414e-01 1.64808017e-01 + 1.64789580e-01 1.64771102e-01 1.64752582e-01 1.64734021e-01 1.64715418e-01 + 1.64696774e-01 1.64678088e-01 1.64659360e-01 1.64640590e-01 1.64621778e-01 + 1.64602924e-01 1.64584027e-01 1.64565088e-01 1.64546107e-01 1.64527082e-01 + 1.64508015e-01 1.64488905e-01 1.64469751e-01 1.64450555e-01 1.64431315e-01 + 1.64412031e-01 1.64392704e-01 1.64373334e-01 1.64353919e-01 1.64334460e-01 + 1.64314958e-01 1.64295411e-01 1.64275819e-01 1.64256183e-01 1.64236503e-01 + 1.64216777e-01 1.64197007e-01 1.64177192e-01 1.64157331e-01 1.64137425e-01 + 1.64117474e-01 1.64097477e-01 1.64077435e-01 1.64057346e-01 1.64037212e-01 + 1.64017032e-01 1.63996805e-01 1.63976532e-01 1.63956212e-01 1.63935846e-01 + 1.63915433e-01 1.63894973e-01 1.63874465e-01 1.63853911e-01 1.63833309e-01 + 1.63812660e-01 1.63791963e-01 1.63771218e-01 1.63750426e-01 1.63729585e-01 + 1.63708696e-01 1.63687759e-01 1.63666773e-01 1.63645738e-01 1.63624655e-01 + 1.63603523e-01 1.63582341e-01 1.63561111e-01 1.63539831e-01 1.63518501e-01 + 1.63497122e-01 1.63475693e-01 1.63454214e-01 1.63432685e-01 1.63411106e-01 + 1.63389476e-01 1.63367795e-01 1.63346064e-01 1.63324282e-01 1.63302449e-01 + 1.63280565e-01 1.63258629e-01 1.63236642e-01 1.63214603e-01 1.63192512e-01 + 1.63170369e-01 1.63148174e-01 1.63125927e-01 1.63103628e-01 1.63081275e-01 + 1.63058870e-01 1.63036412e-01 1.63013901e-01 1.62991337e-01 1.62968719e-01 + 1.62946048e-01 1.62923323e-01 1.62900544e-01 1.62877710e-01 1.62854823e-01 + 1.62831881e-01 1.62808885e-01 1.62785834e-01 1.62762728e-01 1.62739567e-01 + 1.62716350e-01 1.62693078e-01 1.62669751e-01 1.62646368e-01 1.62622929e-01 + 1.62599433e-01 1.62575882e-01 1.62552274e-01 1.62528609e-01 1.62504888e-01 + 1.62481109e-01 1.62457274e-01 1.62433381e-01 1.62409431e-01 1.62385423e-01 + 1.62361357e-01 1.62337233e-01 1.62313050e-01 1.62288810e-01 1.62264510e-01 + 1.62240152e-01 1.62215735e-01 1.62191259e-01 1.62166724e-01 1.62142129e-01 + 1.62117474e-01 1.62092759e-01 1.62067985e-01 1.62043150e-01 1.62018255e-01 + 1.61993299e-01 1.61968282e-01 1.61943204e-01 1.61918065e-01 1.61892865e-01 + 1.61867603e-01 1.61842279e-01 1.61816893e-01 1.61791445e-01 1.61765935e-01 + 1.61740362e-01 1.61714726e-01 1.61689028e-01 1.61663266e-01 1.61637441e-01 + 1.61611552e-01 1.61585600e-01 1.61559583e-01 1.61533503e-01 1.61507358e-01 + 1.61481148e-01 1.61454874e-01 1.61428535e-01 1.61402130e-01 1.61375660e-01 + 1.61349125e-01 1.61322523e-01 1.61295856e-01 1.61269123e-01 1.61242323e-01 + 1.61215456e-01 1.61188522e-01 1.61161522e-01 1.61134454e-01 1.61107319e-01 + 1.61080115e-01 1.61052844e-01 1.61025505e-01 1.60998098e-01 1.60970621e-01 + 1.60943076e-01 1.60915462e-01 1.60887779e-01 1.60860026e-01 1.60832204e-01 + 1.60804311e-01 1.60776349e-01 1.60748316e-01 1.60720212e-01 1.60692038e-01 + 1.60663792e-01 1.60635475e-01 1.60607087e-01 1.60578627e-01 1.60550095e-01 + 1.60521491e-01 1.60492814e-01 1.60464065e-01 1.60435242e-01 1.60406347e-01 + 1.60377378e-01 1.60348335e-01 1.60319219e-01 1.60290028e-01 1.60260764e-01 + 1.60231424e-01 1.60202010e-01 1.60172520e-01 1.60142955e-01 1.60113315e-01 + 1.60083599e-01 1.60053807e-01 1.60023938e-01 1.59993993e-01 1.59963971e-01 + 1.59933872e-01 1.59903696e-01 1.59873442e-01 1.59843110e-01 1.59812700e-01 + 1.59782212e-01 1.59751645e-01 1.59720999e-01 1.59690274e-01 1.59659470e-01 + 1.59628586e-01 1.59597622e-01 1.59566578e-01 1.59535454e-01 1.59504249e-01 + 1.59472963e-01 1.59441595e-01 1.59410146e-01 1.59378616e-01 1.59347003e-01 + 1.59315308e-01 1.59283531e-01 1.59251670e-01 1.59219726e-01 1.59187699e-01 + 1.59155589e-01 1.59123394e-01 1.59091115e-01 1.59058751e-01 1.59026303e-01 + 1.58993770e-01 1.58961151e-01 1.58928446e-01 1.58895656e-01 1.58862779e-01 + 1.58829816e-01 1.58796766e-01 1.58763628e-01 1.58730404e-01 1.58697092e-01 + 1.58663691e-01 1.58630203e-01 1.58596625e-01 1.58562959e-01 1.58529204e-01 + 1.58495359e-01 1.58461425e-01 1.58427400e-01 1.58393285e-01 1.58359079e-01 + 1.58324782e-01 1.58290394e-01 1.58255915e-01 1.58221343e-01 1.58186679e-01 + 1.58151923e-01 1.58117073e-01 1.58082131e-01 1.58047095e-01 1.58011965e-01 + 1.57976741e-01 1.57941422e-01 1.57906009e-01 1.57870501e-01 1.57834897e-01 + 1.57799197e-01 1.57763402e-01 1.57727510e-01 1.57691521e-01 1.57655435e-01 + 1.57619252e-01 1.57582971e-01 1.57546592e-01 1.57510115e-01 1.57473538e-01 + 1.57436863e-01 1.57400088e-01 1.57363214e-01 1.57326239e-01 1.57289164e-01 + 1.57251989e-01 1.57214712e-01 1.57177333e-01 1.57139853e-01 1.57102271e-01 + 1.57064586e-01 1.57026798e-01 1.56988907e-01 1.56950912e-01 1.56912813e-01 + 1.56874610e-01 1.56836302e-01 1.56797890e-01 1.56759371e-01 1.56720748e-01 + 1.56682017e-01 1.56643181e-01 1.56604237e-01 1.56565187e-01 1.56526028e-01 + 1.56486762e-01 1.56447387e-01 1.56407903e-01 1.56368311e-01 1.56328609e-01 + 1.56288796e-01 1.56248874e-01 1.56208841e-01 1.56168697e-01 1.56128441e-01 + 1.56088074e-01 1.56047594e-01 1.56007002e-01 1.55966297e-01 1.55925478e-01 + 1.55884546e-01 1.55843499e-01 1.55802338e-01 1.55761062e-01 1.55719670e-01 + 1.55678163e-01 1.55636539e-01 1.55594799e-01 1.55552941e-01 1.55510966e-01 + 1.55468873e-01 1.55426662e-01 1.55384333e-01 1.55341884e-01 1.55299315e-01 + 1.55256627e-01 1.55213818e-01 1.55170888e-01 1.55127838e-01 1.55084665e-01 + 1.55041370e-01 1.54997953e-01 1.54954413e-01 1.54910749e-01 1.54866961e-01 + 1.54823050e-01 1.54779013e-01 1.54734851e-01 1.54690564e-01 1.54646150e-01 + 1.54601610e-01 1.54556943e-01 1.54512149e-01 1.54467226e-01 1.54422176e-01 + 1.54376996e-01 1.54331687e-01 1.54286249e-01 1.54240680e-01 1.54194981e-01 + 1.54149150e-01 1.54103188e-01 1.54057094e-01 1.54010867e-01 1.53964507e-01 + 1.53918014e-01 1.53871386e-01 1.53824625e-01 1.53777728e-01 1.53730696e-01 + 1.53683527e-01 1.53636223e-01 1.53588781e-01 1.53541202e-01 1.53493486e-01 + 1.53445630e-01 1.53397636e-01 1.53349503e-01 1.53301229e-01 1.53252815e-01 + 1.53204260e-01 1.53155564e-01 1.53106726e-01 1.53057745e-01 1.53008621e-01 + 1.52959354e-01 1.52909943e-01 1.52860387e-01 1.52810686e-01 1.52760840e-01 + 1.52710847e-01 1.52660708e-01 1.52610421e-01 1.52559987e-01 1.52509404e-01 + 1.52458673e-01 1.52407792e-01 1.52356762e-01 1.52305580e-01 1.52254248e-01 + 1.52202764e-01 1.52151129e-01 1.52099340e-01 1.52047398e-01 1.51995302e-01 + 1.51943052e-01 1.51890647e-01 1.51838087e-01 1.51785370e-01 1.51732497e-01 + 1.51679467e-01 1.51626279e-01 1.51572932e-01 1.51519426e-01 1.51465761e-01 + 1.51411936e-01 1.51357950e-01 1.51303802e-01 1.51249493e-01 1.51195021e-01 + 1.51140386e-01 1.51085587e-01 1.51030624e-01 1.50975496e-01 1.50920202e-01 + 1.50864742e-01 1.50809116e-01 1.50753322e-01 1.50697360e-01 1.50641229e-01 + 1.50584929e-01 1.50528459e-01 1.50471818e-01 1.50415007e-01 1.50358023e-01 + 1.50300867e-01 1.50243538e-01 1.50186035e-01 1.50128358e-01 1.50070506e-01 + 1.50012478e-01 1.49954274e-01 1.49895893e-01 1.49837334e-01 1.49778596e-01 + 1.49719680e-01 1.49660584e-01 1.49601308e-01 1.49541850e-01 1.49482211e-01 + 1.49422390e-01 1.49362385e-01 1.49302197e-01 1.49241824e-01 1.49181266e-01 + 1.49120523e-01 1.49059593e-01 1.48998475e-01 1.48937170e-01 1.48875676e-01 + 1.48813992e-01 1.48752119e-01 1.48690055e-01 1.48627799e-01 1.48565351e-01 + 1.48502710e-01 1.48439876e-01 1.48376847e-01 1.48313623e-01 1.48250203e-01 + 1.48186586e-01 1.48122773e-01 1.48058761e-01 1.47994550e-01 1.47930139e-01 + 1.47865528e-01 1.47800717e-01 1.47735703e-01 1.47670486e-01 1.47605066e-01 + 1.47539442e-01 1.47473613e-01 1.47407579e-01 1.47341337e-01 1.47274889e-01 + 1.47208232e-01 1.47141367e-01 1.47074292e-01 1.47007006e-01 1.46939509e-01 + 1.46871800e-01 1.46803878e-01 1.46735743e-01 1.46667393e-01 1.46598827e-01 + 1.46530046e-01 1.46461047e-01 1.46391831e-01 1.46322396e-01 1.46252742e-01 + 1.46182867e-01 1.46112772e-01 1.46042454e-01 1.45971913e-01 1.45901149e-01 + 1.45830160e-01 1.45758946e-01 1.45687506e-01 1.45615839e-01 1.45543943e-01 + 1.45471819e-01 1.45399465e-01 1.45326880e-01 1.45254064e-01 1.45181016e-01 + 1.45107734e-01 1.45034218e-01 1.44960467e-01 1.44886480e-01 1.44812256e-01 + 1.44737795e-01 1.44663094e-01 1.44588154e-01 1.44512974e-01 1.44437552e-01 + 1.44361888e-01 1.44285981e-01 1.44209829e-01 1.44133432e-01 1.44056789e-01 + 1.43979899e-01 1.43902761e-01 1.43825374e-01 1.43747737e-01 1.43669849e-01 + 1.43591710e-01 1.43513317e-01 1.43434671e-01 1.43355770e-01 1.43276613e-01 + 1.43197200e-01 1.43117528e-01 1.43037599e-01 1.42957409e-01 1.42876959e-01 + 1.42796247e-01 1.42715272e-01 1.42634034e-01 1.42552530e-01 1.42470761e-01 + 1.42388726e-01 1.42306422e-01 1.42223850e-01 1.42141007e-01 1.42057894e-01 + 1.41974509e-01 1.41890851e-01 1.41806919e-01 1.41722711e-01 1.41638228e-01 + 1.41553467e-01 1.41468428e-01 1.41383109e-01 1.41297511e-01 1.41211630e-01 + 1.41125467e-01 1.41039020e-01 1.40952288e-01 1.40865271e-01 1.40777966e-01 + 1.40690373e-01 1.40602491e-01 1.40514319e-01 1.40425855e-01 1.40337099e-01 + 1.40248048e-01 1.40158703e-01 1.40069062e-01 1.39979124e-01 1.39888888e-01 + 1.39798352e-01 1.39707515e-01 1.39616377e-01 1.39524936e-01 1.39433191e-01 + 1.39341140e-01 1.39248784e-01 1.39156119e-01 1.39063146e-01 1.38969862e-01 + 1.38876268e-01 1.38782361e-01 1.38688141e-01 1.38593606e-01 1.38498755e-01 + 1.38403586e-01 1.38308099e-01 1.38212293e-01 1.38116166e-01 1.38019716e-01 + 1.37922943e-01 1.37825846e-01 1.37728423e-01 1.37630672e-01 1.37532594e-01 + 1.37434185e-01 1.37335446e-01 1.37236375e-01 1.37136970e-01 1.37037230e-01 + 1.36937155e-01 1.36836742e-01 1.36735991e-01 1.36634900e-01 1.36533467e-01 + 1.36431692e-01 1.36329574e-01 1.36227110e-01 1.36124300e-01 1.36021142e-01 + 1.35917635e-01 1.35813778e-01 1.35709568e-01 1.35605006e-01 1.35500089e-01 + 1.35394817e-01 1.35289187e-01 1.35183199e-01 1.35076851e-01 1.34970142e-01 + 1.34863070e-01 1.34755634e-01 1.34647833e-01 1.34539665e-01 1.34431128e-01 + 1.34322223e-01 1.34212946e-01 1.34103297e-01 1.33993274e-01 1.33882876e-01 + 1.33772101e-01 1.33660948e-01 1.33549416e-01 1.33437503e-01 1.33325207e-01 + 1.33212528e-01 1.33099463e-01 1.32986012e-01 1.32872172e-01 1.32757943e-01 + 1.32643323e-01 1.32528310e-01 1.32412904e-01 1.32297101e-01 1.32180902e-01 + 1.32064305e-01 1.31947307e-01 1.31829908e-01 1.31712106e-01 1.31593899e-01 + 1.31475287e-01 1.31356267e-01 1.31236838e-01 1.31116998e-01 1.30996746e-01 + 1.30876081e-01 1.30755001e-01 1.30633504e-01 1.30511588e-01 1.30389253e-01 + 1.30266497e-01 1.30143318e-01 1.30019714e-01 1.29895684e-01 1.29771227e-01 + 1.29646341e-01 1.29521024e-01 1.29395274e-01 1.29269091e-01 1.29142472e-01 + 1.29015417e-01 1.28887922e-01 1.28759987e-01 1.28631611e-01 1.28502791e-01 + 1.28373525e-01 1.28243813e-01 1.28113653e-01 1.27983043e-01 1.27851981e-01 + 1.27720466e-01 1.27588496e-01 1.27456070e-01 1.27323186e-01 1.27189841e-01 + 1.27056036e-01 1.26921767e-01 1.26787033e-01 1.26651833e-01 1.26516166e-01 + 1.26380028e-01 1.26243419e-01 1.26106337e-01 1.25968780e-01 1.25830747e-01 + 1.25692235e-01 1.25553244e-01 1.25413771e-01 1.25273815e-01 1.25133375e-01 + 1.24992448e-01 1.24851032e-01 1.24709127e-01 1.24566730e-01 1.24423839e-01 + 1.24280454e-01 1.24136571e-01 1.23992190e-01 1.23847309e-01 1.23701926e-01 + 1.23556040e-01 1.23409647e-01 1.23262748e-01 1.23115340e-01 1.22967422e-01 + 1.22818991e-01 1.22670046e-01 1.22520585e-01 1.22370607e-01 1.22220110e-01 + 1.22069091e-01 1.21917550e-01 1.21765484e-01 1.21612892e-01 1.21459773e-01 + 1.21306123e-01 1.21151942e-01 1.20997228e-01 1.20841979e-01 1.20686193e-01 + 1.20529869e-01 1.20373004e-01 1.20215598e-01 1.20057648e-01 1.19899152e-01 + 1.19740109e-01 1.19580518e-01 1.19420375e-01 1.19259680e-01 1.19098431e-01 + 1.18936626e-01 1.18774263e-01 1.18611341e-01 1.18447857e-01 1.18283810e-01 + 1.18119199e-01 1.17954021e-01 1.17788276e-01 1.17621960e-01 1.17455072e-01 + 1.17287611e-01 1.17119575e-01 1.16950961e-01 1.16781770e-01 1.16611997e-01 + 1.16441643e-01 1.16270705e-01 1.16099181e-01 1.15927070e-01 1.15754370e-01 + 1.15581079e-01 1.15407195e-01 1.15232718e-01 1.15057644e-01 1.14881973e-01 + 1.14705703e-01 1.14528831e-01 1.14351357e-01 1.14173279e-01 1.13994594e-01 + 1.13815302e-01 1.13635400e-01 1.13454887e-01 1.13273762e-01 1.13092022e-01 + 1.12909666e-01 1.12726692e-01 1.12543099e-01 1.12358884e-01 1.12174047e-01 + 1.11988586e-01 1.11802499e-01 1.11615785e-01 1.11428441e-01 1.11240467e-01 + 1.11051860e-01 1.10862619e-01 1.10672743e-01 1.10482230e-01 1.10291079e-01 + 1.10099287e-01 1.09906853e-01 1.09713777e-01 1.09520055e-01 1.09325688e-01 + 1.09130672e-01 1.08935008e-01 1.08738692e-01 1.08541725e-01 1.08344104e-01 + 1.08145827e-01 1.07946894e-01 1.07747304e-01 1.07547053e-01 1.07346142e-01 + 1.07144569e-01 1.06942333e-01 1.06739431e-01 1.06535863e-01 1.06331627e-01 + 1.06126723e-01 1.05921148e-01 1.05714902e-01 1.05507982e-01 1.05300389e-01 + 1.05092120e-01 1.04883175e-01 1.04673552e-01 1.04463250e-01 1.04252268e-01 + 1.04040604e-01 1.03828258e-01 1.03615228e-01 1.03401513e-01 1.03187113e-01 + 1.02972026e-01 1.02756250e-01 1.02539786e-01 1.02322631e-01 1.02104785e-01 + 1.01886248e-01 1.01667017e-01 1.01447092e-01 1.01226473e-01 1.01005158e-01 + 1.00783146e-01 1.00560436e-01 1.00337028e-01 1.00112922e-01 9.98881150e-02 + 9.96626076e-02 9.94363989e-02 9.92094881e-02 9.89818746e-02 9.87535577e-02 + 9.85245367e-02 9.82948112e-02 9.80643804e-02 9.78332440e-02 9.76014013e-02 + 9.73688518e-02 9.71355952e-02 9.69016310e-02 9.66669588e-02 9.64315783e-02 + 9.61954891e-02 9.59586908e-02 9.57211834e-02 9.54829664e-02 9.52440398e-02 + 9.50044033e-02 9.47640568e-02 9.45230003e-02 9.42812335e-02 9.40387567e-02 + 9.37955696e-02 9.35516725e-02 9.33070653e-02 9.30617482e-02 9.28157214e-02 + 9.25689850e-02 9.23215393e-02 9.20733846e-02 9.18245212e-02 9.15749495e-02 + 9.13246699e-02 9.10736827e-02 9.08219886e-02 9.05695880e-02 9.03164816e-02 + 9.00626699e-02 8.98081536e-02 8.95529334e-02 8.92970102e-02 8.90403847e-02 + 8.87830577e-02 8.85250303e-02 8.82663032e-02 8.80068776e-02 8.77467546e-02 + 8.74859351e-02 8.72244204e-02 8.69622117e-02 8.66993103e-02 8.64357174e-02 + 8.61714345e-02 8.59064630e-02 8.56408044e-02 8.53744602e-02 8.51074320e-02 + 8.48397215e-02 8.45713304e-02 8.43022605e-02 8.40325136e-02 8.37620916e-02 + 8.34909965e-02 8.32192302e-02 8.29467950e-02 8.26736929e-02 8.23999262e-02 + 8.21254970e-02 8.18504079e-02 8.15746611e-02 8.12982592e-02 8.10212047e-02 + 8.07435002e-02 8.04651484e-02 8.01861521e-02 7.99065141e-02 7.96262372e-02 + 7.93453246e-02 7.90637791e-02 7.87816039e-02 7.84988023e-02 7.82153774e-02 + 7.79313327e-02 7.76466715e-02 7.73613974e-02 7.70755139e-02 7.67890246e-02 + 7.65019334e-02 7.62142440e-02 7.59259604e-02 7.56370865e-02 7.53476263e-02 + 7.50575841e-02 7.47669641e-02 7.44757706e-02 7.41840079e-02 7.38916807e-02 + 7.35987934e-02 7.33053507e-02 7.30113575e-02 7.27168185e-02 7.24217387e-02 + 7.21261231e-02 7.18299768e-02 7.15333051e-02 7.12361133e-02 7.09384067e-02 + 7.06401909e-02 7.03414715e-02 7.00422541e-02 6.97425446e-02 6.94423488e-02 + 6.91416728e-02 6.88405225e-02 6.85389043e-02 6.82368244e-02 6.79342891e-02 + 6.76313050e-02 6.73278787e-02 6.70240169e-02 6.67197264e-02 6.64150140e-02 + 6.61098869e-02 6.58043520e-02 6.54984168e-02 6.51920884e-02 6.48853744e-02 + 6.45782823e-02 6.42708198e-02 6.39629946e-02 6.36548146e-02 6.33462879e-02 + 6.30374225e-02 6.27282267e-02 6.24187088e-02 6.21088773e-02 6.17987406e-02 + 6.14883076e-02 6.11775870e-02 6.08665877e-02 6.05553188e-02 6.02437893e-02 + 5.99320086e-02 5.96199860e-02 5.93077311e-02 5.89952534e-02 5.86825627e-02 + 5.83696689e-02 5.80565818e-02 5.77433118e-02 5.74298688e-02 5.71162634e-02 + 5.68025058e-02 5.64886069e-02 5.61745771e-02 5.58604274e-02 5.55461687e-02 + 5.52318121e-02 5.49173687e-02 5.46028499e-02 5.42882672e-02 5.39736321e-02 + 5.36589562e-02 5.33442514e-02 5.30295296e-02 5.27148029e-02 5.24000835e-02 + 5.20853836e-02 5.17707158e-02 5.14560924e-02 5.11415263e-02 5.08270302e-02 + 5.05126170e-02 5.01982998e-02 4.98840918e-02 4.95700061e-02 4.92560564e-02 + 4.89422560e-02 4.86286186e-02 4.83151580e-02 4.80018882e-02 4.76888231e-02 + 4.73759769e-02 4.70633638e-02 4.67509982e-02 4.64388946e-02 4.61270676e-02 + 4.58155320e-02 4.55043026e-02 4.51933944e-02 4.48828225e-02 4.45726020e-02 + 4.42627483e-02 4.39532767e-02 4.36442030e-02 4.33355426e-02 4.30273114e-02 + 4.27195253e-02 4.24122002e-02 4.21053521e-02 4.17989974e-02 4.14931524e-02 + 4.11878333e-02 4.08830568e-02 4.05788395e-02 4.02751981e-02 3.99721494e-02 + 3.96697104e-02 3.93678979e-02 3.90667293e-02 3.87662217e-02 3.84663923e-02 + 3.81672586e-02 3.78688381e-02 3.75711484e-02 3.72742070e-02 3.69780319e-02 + 3.66826407e-02 3.63880515e-02 3.60942822e-02 3.58013509e-02 3.55092758e-02 + 3.52180750e-02 3.49277670e-02 3.46383700e-02 3.43499026e-02 3.40623832e-02 + 3.37758304e-02 3.34902629e-02 3.32056994e-02 3.29221586e-02 3.26396593e-02 + 3.23582205e-02 3.20778611e-02 3.17986000e-02 3.15204562e-02 3.12434489e-02 + 3.09675972e-02 3.06929202e-02 3.04194370e-02 3.01471670e-02 2.98761294e-02 + 2.96063435e-02 2.93378286e-02 2.90706040e-02 2.88046891e-02 2.85401033e-02 + 2.82768660e-02 2.80149966e-02 2.77545145e-02 2.74954392e-02 2.72377901e-02 + 2.69815866e-02 2.67268481e-02 2.64735941e-02 2.62218441e-02 2.59716174e-02 + 2.57229334e-02 2.54758115e-02 2.52302711e-02 2.49863315e-02 2.47440120e-02 + 2.45033320e-02 2.42643105e-02 2.40269669e-02 2.37913204e-02 2.35573900e-02 + 2.33251949e-02 2.30947540e-02 2.28660864e-02 2.26392110e-02 2.24141466e-02 + 2.21909120e-02 2.19695260e-02 2.17500072e-02 2.15323742e-02 2.13166455e-02 + 2.11028396e-02 2.08909747e-02 2.06810691e-02 2.04731411e-02 2.02672086e-02 + 2.00632896e-02 1.98614019e-02 1.96615634e-02 1.94637917e-02 1.92681043e-02 + 1.90745186e-02 1.88830519e-02 1.86937213e-02 1.85065440e-02 1.83215368e-02 + 1.81387165e-02 1.79580998e-02 1.77797030e-02 1.76035426e-02 1.74296348e-02 + 1.72579956e-02 1.70886409e-02 1.69215864e-02 1.67568478e-02 1.65944402e-02 + 1.64343791e-02 1.62766795e-02 1.61213562e-02 1.59684240e-02 1.58178973e-02 + 1.56697904e-02 1.55241176e-02 1.53808927e-02 1.52401295e-02 1.51018416e-02 + 1.49660422e-02 1.48327446e-02 1.47019616e-02 1.45737059e-02 1.44479901e-02 + 1.43248264e-02 1.42042269e-02 1.40862035e-02 1.39707676e-02 1.38579308e-02 + 1.37477041e-02 1.36400985e-02 1.35351246e-02 1.34327929e-02 1.33331135e-02 + 1.32360964e-02 1.31417514e-02 1.30500877e-02 1.29611147e-02 1.28748412e-02 + 1.27912760e-02 1.27104274e-02 1.26323037e-02 1.25569127e-02 1.24842620e-02 + 1.24143590e-02 1.23472109e-02 1.22828243e-02 1.22212060e-02 1.21623621e-02 + 1.21062986e-02 1.20530213e-02 1.20025356e-02 1.19548467e-02 1.19099595e-02 + 1.18678785e-02 1.18286081e-02 1.17921522e-02 1.17585148e-02 1.17276991e-02 + 1.16997084e-02 1.16745455e-02 1.16522130e-02 1.16327133e-02 1.16160484e-02 + 1.16022198e-02 1.15912292e-02 1.15830776e-02 1.15777658e-02 1.15752944e-02 + 1.15756637e-02 1.15788736e-02 1.15849238e-02 1.15938137e-02 1.16055423e-02 + 1.16201084e-02 1.16375106e-02 1.16577471e-02 1.16808156e-02 1.17067140e-02 + 1.17354395e-02 1.17669892e-02 1.18013598e-02 1.18385478e-02 1.18785493e-02 + 1.19213604e-02 1.19669765e-02 1.20153931e-02 1.20666051e-02 1.21206073e-02 + 1.21773942e-02 1.22369601e-02 1.22992988e-02 1.23644040e-02 1.24322691e-02 + 1.25028871e-02 1.25762510e-02 1.26523533e-02 1.27311863e-02 1.28127420e-02 + 1.28970121e-02 1.29839883e-02 1.30736618e-02 1.31660235e-02 1.32610642e-02 + 1.33587744e-02 1.34591444e-02 1.35621641e-02 1.36678232e-02 1.37761113e-02 + 1.38870177e-02 1.40005314e-02 1.41166411e-02 1.42353355e-02 1.43566028e-02 + 1.44804312e-02 1.46068085e-02 1.47357225e-02 1.48671606e-02 1.50011099e-02 + 1.51375576e-02 1.52764904e-02 1.54178949e-02 1.55617576e-02 1.57080646e-02 + 1.58568020e-02 1.60079555e-02 1.61615108e-02 1.63174534e-02 1.64757685e-02 + 1.66364411e-02 1.67994562e-02 1.69647985e-02 1.71324525e-02 1.73024027e-02 + 1.74746333e-02 1.76491283e-02 1.78258717e-02 1.80048472e-02 1.81860385e-02 + 1.83694290e-02 1.85550020e-02 1.87427408e-02 1.89326284e-02 1.91246477e-02 + 1.93187815e-02 1.95150125e-02 1.97133233e-02 1.99136963e-02 2.01161138e-02 + 2.03205580e-02 2.05270111e-02 2.07354551e-02 2.09458718e-02 2.11582431e-02 + 2.13725507e-02 2.15887763e-02 2.18069014e-02 2.20269075e-02 2.22487759e-02 + 2.24724880e-02 2.26980251e-02 2.29253683e-02 2.31544988e-02 2.33853976e-02 + 2.36180458e-02 2.38524242e-02 2.40885138e-02 2.43262955e-02 2.45657500e-02 + 2.48068582e-02 2.50496007e-02 2.52939584e-02 2.55399119e-02 2.57874418e-02 + 2.60365287e-02 2.62871534e-02 2.65392963e-02 2.67929381e-02 2.70480593e-02 + 2.73046406e-02 2.75626624e-02 2.78221053e-02 2.80829500e-02 2.83451769e-02 + 2.86087667e-02 2.88736999e-02 2.91399572e-02 2.94075191e-02 2.96763664e-02 + 2.99464796e-02 3.02178395e-02 3.04904267e-02 3.07642221e-02 3.10392064e-02 + 3.13153605e-02 3.15926651e-02 3.18711011e-02 3.21506496e-02 3.24312916e-02 + 3.27130079e-02 3.29957798e-02 3.32795883e-02 3.35644146e-02 3.38502401e-02 + 3.41370460e-02 3.44248137e-02 3.47135246e-02 3.50031602e-02 3.52937021e-02 + 3.55851319e-02 3.58774314e-02 3.61705823e-02 3.64645665e-02 3.67593660e-02 + 3.70549627e-02 3.73513388e-02 3.76484764e-02 3.79463579e-02 3.82449655e-02 + 3.85442817e-02 3.88442891e-02 3.91449703e-02 3.94463079e-02 3.97482849e-02 + 4.00508841e-02 4.03540886e-02 4.06578813e-02 4.09622456e-02 4.12671648e-02 + 4.15726221e-02 4.18786013e-02 4.21850858e-02 4.24920594e-02 4.27995060e-02 + 4.31074094e-02 4.34157537e-02 4.37245230e-02 4.40337017e-02 4.43432741e-02 + 4.46532246e-02 4.49635380e-02 4.52741988e-02 4.55851920e-02 4.58965024e-02 + 4.62081152e-02 4.65200155e-02 4.68321886e-02 4.71446199e-02 4.74572950e-02 + 4.77701996e-02 4.80833192e-02 4.83966400e-02 4.87101479e-02 4.90238289e-02 + 4.93376695e-02 4.96516559e-02 4.99657746e-02 5.02800123e-02 5.05943557e-02 + 5.09087917e-02 5.12233073e-02 5.15378895e-02 5.18525256e-02 5.21672030e-02 + 5.24819092e-02 5.27966317e-02 5.31113583e-02 5.34260768e-02 5.37407752e-02 + 5.40554416e-02 5.43700642e-02 5.46846314e-02 5.49991317e-02 5.53135536e-02 + 5.56278858e-02 5.59421172e-02 5.62562368e-02 5.65702336e-02 5.68840968e-02 + 5.71978158e-02 5.75113800e-02 5.78247790e-02 5.81380025e-02 5.84510402e-02 + 5.87638822e-02 5.90765185e-02 5.93889392e-02 5.97011346e-02 6.00130952e-02 + 6.03248115e-02 6.06362741e-02 6.09474738e-02 6.12584015e-02 6.15690482e-02 + 6.18794050e-02 6.21894631e-02 6.24992140e-02 6.28086489e-02 6.31177596e-02 + 6.34265377e-02 6.37349751e-02 6.40430636e-02 6.43507952e-02 6.46581622e-02 + 6.49651567e-02 6.52717712e-02 6.55779981e-02 6.58838299e-02 6.61892594e-02 + 6.64942794e-02 6.67988828e-02 6.71030625e-02 6.74068117e-02 6.77101237e-02 + 6.80129917e-02 6.83154092e-02 6.86173697e-02 6.89188669e-02 6.92198944e-02 + 6.95204462e-02 6.98205161e-02 7.01200982e-02 7.04191867e-02 7.07177757e-02 + 7.10158596e-02 7.13134329e-02 7.16104900e-02 7.19070256e-02 7.22030344e-02 + 7.24985112e-02 7.27934509e-02 7.30878484e-02 7.33816990e-02 7.36749977e-02 + 7.39677398e-02 7.42599207e-02 7.45515358e-02 7.48425807e-02 7.51330509e-02 + 7.54229421e-02 7.57122502e-02 7.60009711e-02 7.62891006e-02 7.65766348e-02 + 7.68635699e-02 7.71499020e-02 7.74356274e-02 7.77207425e-02 7.80052438e-02 + 7.82891277e-02 7.85723908e-02 7.88550299e-02 7.91370416e-02 7.94184229e-02 + 7.96991705e-02 7.99792815e-02 8.02587530e-02 8.05375820e-02 8.08157657e-02 + 8.10933015e-02 8.13701866e-02 8.16464184e-02 8.19219944e-02 8.21969122e-02 + 8.24711693e-02 8.27447635e-02 8.30176924e-02 8.32899539e-02 8.35615458e-02 + 8.38324661e-02 8.41027128e-02 8.43722839e-02 8.46411775e-02 8.49093918e-02 + 8.51769250e-02 8.54437756e-02 8.57099417e-02 8.59754218e-02 8.62402144e-02 + 8.65043180e-02 8.67677312e-02 8.70304527e-02 8.72924810e-02 8.75538151e-02 + 8.78144536e-02 8.80743954e-02 8.83336395e-02 8.85921847e-02 8.88500302e-02 + 8.91071748e-02 8.93636178e-02 8.96193583e-02 8.98743956e-02 9.01287287e-02 + 9.03823571e-02 9.06352801e-02 9.08874971e-02 9.11390074e-02 9.13898107e-02 + 9.16399063e-02 9.18892939e-02 9.21379731e-02 9.23859434e-02 9.26332047e-02 + 9.28797566e-02 9.31255989e-02 9.33707315e-02 9.36151540e-02 9.38588666e-02 + 9.41018690e-02 9.43441612e-02 9.45857433e-02 9.48266152e-02 9.50667771e-02 + 9.53062290e-02 9.55449711e-02 9.57830036e-02 9.60203266e-02 9.62569405e-02 + 9.64928454e-02 9.67280417e-02 9.69625298e-02 9.71963100e-02 9.74293827e-02 + 9.76617483e-02 9.78934074e-02 9.81243603e-02 9.83546076e-02 9.85841499e-02 + 9.88129878e-02 9.90411218e-02 9.92685525e-02 9.94952807e-02 9.97213070e-02 + 9.99466321e-02 1.00171257e-01 1.00395182e-01 1.00618408e-01 1.00840936e-01 + 1.01062766e-01 1.01283901e-01 1.01504340e-01 1.01724084e-01 1.01943134e-01 + 1.02161492e-01 1.02379158e-01 1.02596133e-01 1.02812418e-01 1.03028014e-01 + 1.03242923e-01 1.03457145e-01 1.03670682e-01 1.03883534e-01 1.04095702e-01 + 1.04307189e-01 1.04517994e-01 1.04728119e-01 1.04937566e-01 1.05146335e-01 + 1.05354428e-01 1.05561846e-01 1.05768590e-01 1.05974662e-01 1.06180062e-01 + 1.06384793e-01 1.06588855e-01 1.06792249e-01 1.06994978e-01 1.07197042e-01 + 1.07398443e-01 1.07599182e-01 1.07799261e-01 1.07998680e-01 1.08197442e-01 + 1.08395548e-01 1.08592999e-01 1.08789797e-01 1.08985943e-01 1.09181439e-01 + 1.09376286e-01 1.09570485e-01 1.09764039e-01 1.09956948e-01 1.10149214e-01 + 1.10340840e-01 1.10531825e-01 1.10722172e-01 1.10911883e-01 1.11100959e-01 + 1.11289401e-01 1.11477211e-01 1.11664391e-01 1.11850942e-01 1.12036866e-01 + 1.12222165e-01 1.12406840e-01 1.12590892e-01 1.12774325e-01 1.12957138e-01 + 1.13139333e-01 1.13320913e-01 1.13501880e-01 1.13682233e-01 1.13861976e-01 + 1.14041111e-01 1.14219637e-01 1.14397559e-01 1.14574876e-01 1.14751591e-01 + 1.14927705e-01 1.15103221e-01 1.15278139e-01 1.15452462e-01 1.15626191e-01 + 1.15799328e-01 1.15971875e-01 1.16143834e-01 1.16315205e-01 1.16485991e-01 + 1.16656194e-01 1.16825815e-01 1.16994856e-01 1.17163320e-01 1.17331206e-01 + 1.17498518e-01 1.17665257e-01 1.17831424e-01 1.17997022e-01 1.18162053e-01 + 1.18326517e-01 1.18490417e-01 1.18653754e-01 1.18816531e-01 1.18978749e-01 + 1.19140409e-01 1.19301514e-01 1.19462065e-01 1.19622064e-01 1.19781513e-01 + 1.19940414e-01 1.20098767e-01 1.20256576e-01 1.20413841e-01 1.20570565e-01 + 1.20726749e-01 1.20882395e-01 1.21037505e-01 1.21192080e-01 1.21346123e-01 + 1.21499635e-01 1.21652617e-01 1.21805072e-01 1.21957001e-01 1.22108406e-01 + 1.22259289e-01 1.22409651e-01 1.22559495e-01 1.22708821e-01 1.22857632e-01 + 1.23005930e-01 1.23153715e-01 1.23300991e-01 1.23447758e-01 1.23594019e-01 + 1.23739774e-01 1.23885027e-01 1.24029777e-01 1.24174028e-01 1.24317781e-01 + 1.24461038e-01 1.24603800e-01 1.24746069e-01 1.24887847e-01 1.25029136e-01 + 1.25169936e-01 1.25310251e-01 1.25450081e-01 1.25589428e-01 1.25728294e-01 + 1.25866681e-01 1.26004590e-01 1.26142024e-01 1.26278983e-01 1.26415469e-01 + 1.26551484e-01 1.26687030e-01 1.26822109e-01 1.26956721e-01 1.27090870e-01 + 1.27224555e-01 1.27357780e-01 1.27490545e-01 1.27622852e-01 1.27754704e-01 + 1.27886101e-01 1.28017045e-01 1.28147538e-01 1.28277582e-01 1.28407177e-01 + 1.28536327e-01 1.28665031e-01 1.28793293e-01 1.28921113e-01 1.29048493e-01 + 1.29175435e-01 1.29301941e-01 1.29428011e-01 1.29553648e-01 1.29678853e-01 + 1.29803627e-01 1.29927973e-01 1.30051892e-01 1.30175385e-01 1.30298454e-01 + 1.30421101e-01 1.30543327e-01 1.30665133e-01 1.30786522e-01 1.30907494e-01 + 1.31028051e-01 1.31148196e-01 1.31267929e-01 1.31387251e-01 1.31506165e-01 + 1.31624672e-01 1.31742773e-01 1.31860470e-01 1.31977765e-01 1.32094658e-01 + 1.32211152e-01 1.32327248e-01 1.32442947e-01 1.32558252e-01 1.32673162e-01 + 1.32787680e-01 1.32901808e-01 1.33015546e-01 1.33128897e-01 1.33241861e-01 + 1.33354441e-01 1.33466637e-01 1.33578451e-01 1.33689884e-01 1.33800939e-01 + 1.33911615e-01 1.34021916e-01 1.34131841e-01 1.34241394e-01 1.34350574e-01 + 1.34459383e-01 1.34567824e-01 1.34675896e-01 1.34783602e-01 1.34890944e-01 + 1.34997921e-01 1.35104536e-01 1.35210791e-01 1.35316685e-01 1.35422222e-01 + 1.35527402e-01 1.35632226e-01 1.35736697e-01 1.35840814e-01 1.35944580e-01 + 1.36047997e-01 1.36151064e-01 1.36253784e-01 1.36356158e-01 1.36458187e-01 + 1.36559873e-01 1.36661216e-01 1.36762219e-01 1.36862882e-01 1.36963207e-01 + 1.37063195e-01 1.37162847e-01 1.37262165e-01 1.37361150e-01 1.37459803e-01 + 1.37558126e-01 1.37656119e-01 1.37753784e-01 1.37851123e-01 1.37948136e-01 + 1.38044824e-01 1.38141190e-01 1.38237233e-01 1.38332957e-01 1.38428361e-01 + 1.38523446e-01 1.38618215e-01 1.38712668e-01 1.38806807e-01 1.38900633e-01 + 1.38994146e-01 1.39087349e-01 1.39180241e-01 1.39272826e-01 1.39365103e-01 + 1.39457074e-01 1.39548740e-01 1.39640102e-01 1.39731162e-01 1.39821920e-01 + 1.39912378e-01 1.40002537e-01 1.40092398e-01 1.40181961e-01 1.40271230e-01 + 1.40360203e-01 1.40448884e-01 1.40537272e-01 1.40625368e-01 1.40713175e-01 + 1.40800693e-01 1.40887923e-01 1.40974866e-01 1.41061523e-01 1.41147896e-01 + 1.41233986e-01 1.41319793e-01 1.41405319e-01 1.41490565e-01 1.41575532e-01 + 1.41660220e-01 1.41744632e-01 1.41828768e-01 1.41912628e-01 1.41996216e-01 + 1.42079530e-01 1.42162572e-01 1.42245344e-01 1.42327847e-01 1.42410081e-01 + 1.42492047e-01 1.42573747e-01 1.42655181e-01 1.42736351e-01 1.42817257e-01 + 1.42897901e-01 1.42978283e-01 1.43058405e-01 1.43138268e-01 1.43217872e-01 + 1.43297218e-01 1.43376309e-01 1.43455143e-01 1.43533723e-01 1.43612050e-01 + 1.43690124e-01 1.43767947e-01 1.43845519e-01 1.43922841e-01 1.43999914e-01 + 1.44076740e-01 1.44153319e-01 1.44229652e-01 1.44305740e-01 1.44381584e-01 + 1.44457185e-01 1.44532544e-01 1.44607662e-01 1.44682539e-01 1.44757177e-01 + 1.44831577e-01 1.44905739e-01 1.44979665e-01 1.45053355e-01 1.45126809e-01 + 1.45200031e-01 1.45273019e-01 1.45345774e-01 1.45418299e-01 1.45490593e-01 + 1.45562658e-01 1.45634494e-01 1.45706102e-01 1.45777484e-01 1.45848639e-01 + 1.45919569e-01 1.45990275e-01 1.46060758e-01 1.46131018e-01 1.46201056e-01 + 1.46270873e-01 1.46340470e-01 1.46409848e-01 1.46479008e-01 1.46547950e-01 + 1.46616675e-01 1.46685184e-01 1.46753479e-01 1.46821558e-01 1.46889425e-01 + 1.46957079e-01 1.47024520e-01 1.47091751e-01 1.47158772e-01 1.47225583e-01 + 1.47292185e-01 1.47358580e-01 1.47424768e-01 1.47490749e-01 1.47556524e-01 + 1.47622095e-01 1.47687462e-01 1.47752626e-01 1.47817587e-01 1.47882347e-01 + 1.38518338e-01 1.38476565e-01 1.38434740e-01 1.38392864e-01 1.38350938e-01 + 1.38308960e-01 1.38266931e-01 1.38224851e-01 1.38182720e-01 1.38140538e-01 + 1.38098305e-01 1.38056020e-01 1.38013684e-01 1.37971296e-01 1.37928857e-01 + 1.37886366e-01 1.37843824e-01 1.37801230e-01 1.37758585e-01 1.37715888e-01 + 1.37673139e-01 1.37630338e-01 1.37587486e-01 1.37544581e-01 1.37501625e-01 + 1.37458617e-01 1.37415556e-01 1.37372444e-01 1.37329279e-01 1.37286062e-01 + 1.37242794e-01 1.37199472e-01 1.37156099e-01 1.37112673e-01 1.37069195e-01 + 1.37025664e-01 1.36982081e-01 1.36938445e-01 1.36894757e-01 1.36851016e-01 + 1.36807222e-01 1.36763376e-01 1.36719477e-01 1.36675525e-01 1.36631520e-01 + 1.36587463e-01 1.36543352e-01 1.36499189e-01 1.36454972e-01 1.36410702e-01 + 1.36366380e-01 1.36322004e-01 1.36277574e-01 1.36233092e-01 1.36188556e-01 + 1.36143967e-01 1.36099325e-01 1.36054629e-01 1.36009880e-01 1.35965077e-01 + 1.35920221e-01 1.35875311e-01 1.35830347e-01 1.35785330e-01 1.35740259e-01 + 1.35695134e-01 1.35649956e-01 1.35604723e-01 1.35559437e-01 1.35514096e-01 + 1.35468702e-01 1.35423254e-01 1.35377752e-01 1.35332195e-01 1.35286585e-01 + 1.35240920e-01 1.35195201e-01 1.35149428e-01 1.35103600e-01 1.35057718e-01 + 1.35011782e-01 1.34965791e-01 1.34919746e-01 1.34873646e-01 1.34827492e-01 + 1.34781283e-01 1.34735020e-01 1.34688702e-01 1.34642329e-01 1.34595901e-01 + 1.34549419e-01 1.34502882e-01 1.34456290e-01 1.34409643e-01 1.34362941e-01 + 1.34316184e-01 1.34269372e-01 1.34222505e-01 1.34175583e-01 1.34128606e-01 + 1.34081573e-01 1.34034486e-01 1.33987343e-01 1.33940145e-01 1.33892892e-01 + 1.33845583e-01 1.33798219e-01 1.33750799e-01 1.33703324e-01 1.33655794e-01 + 1.33608207e-01 1.33560566e-01 1.33512869e-01 1.33465116e-01 1.33417307e-01 + 1.33369443e-01 1.33321523e-01 1.33273547e-01 1.33225515e-01 1.33177428e-01 + 1.33129285e-01 1.33081085e-01 1.33032830e-01 1.32984519e-01 1.32936152e-01 + 1.32887728e-01 1.32839249e-01 1.32790713e-01 1.32742122e-01 1.32693474e-01 + 1.32644770e-01 1.32596010e-01 1.32547193e-01 1.32498320e-01 1.32449391e-01 + 1.32400405e-01 1.32351363e-01 1.32302265e-01 1.32253110e-01 1.32203899e-01 + 1.32154631e-01 1.32105306e-01 1.32055925e-01 1.32006488e-01 1.31956993e-01 + 1.31907442e-01 1.31857835e-01 1.31808170e-01 1.31758449e-01 1.31708671e-01 + 1.31658836e-01 1.31608945e-01 1.31558996e-01 1.31508991e-01 1.31458929e-01 + 1.31408809e-01 1.31358633e-01 1.31308400e-01 1.31258110e-01 1.31207762e-01 + 1.31157358e-01 1.31106897e-01 1.31056378e-01 1.31005802e-01 1.30955169e-01 + 1.30904479e-01 1.30853732e-01 1.30802927e-01 1.30752065e-01 1.30701146e-01 + 1.30650170e-01 1.30599136e-01 1.30548045e-01 1.30496896e-01 1.30445690e-01 + 1.30394426e-01 1.30343106e-01 1.30291727e-01 1.30240291e-01 1.30188798e-01 + 1.30137247e-01 1.30085639e-01 1.30033973e-01 1.29982249e-01 1.29930468e-01 + 1.29878629e-01 1.29826732e-01 1.29774778e-01 1.29722766e-01 1.29670696e-01 + 1.29618569e-01 1.29566384e-01 1.29514141e-01 1.29461841e-01 1.29409482e-01 + 1.29357066e-01 1.29304592e-01 1.29252060e-01 1.29199470e-01 1.29146823e-01 + 1.29094117e-01 1.29041354e-01 1.28988533e-01 1.28935654e-01 1.28882717e-01 + 1.28829721e-01 1.28776668e-01 1.28723557e-01 1.28670388e-01 1.28617161e-01 + 1.28563876e-01 1.28510533e-01 1.28457132e-01 1.28403673e-01 1.28350156e-01 + 1.28296581e-01 1.28242948e-01 1.28189256e-01 1.28135507e-01 1.28081699e-01 + 1.28027834e-01 1.27973910e-01 1.27919928e-01 1.27865888e-01 1.27811790e-01 + 1.27757634e-01 1.27703420e-01 1.27649147e-01 1.27594816e-01 1.27540427e-01 + 1.27485980e-01 1.27431475e-01 1.27376912e-01 1.27322290e-01 1.27267611e-01 + 1.27212873e-01 1.27158077e-01 1.27103223e-01 1.27048310e-01 1.26993340e-01 + 1.26938311e-01 1.26883224e-01 1.26828079e-01 1.26772875e-01 1.26717614e-01 + 1.26662294e-01 1.26606916e-01 1.26551480e-01 1.26495986e-01 1.26440433e-01 + 1.26384823e-01 1.26329154e-01 1.26273427e-01 1.26217642e-01 1.26161799e-01 + 1.26105898e-01 1.26049938e-01 1.25993920e-01 1.25937845e-01 1.25881711e-01 + 1.25825519e-01 1.25769269e-01 1.25712961e-01 1.25656594e-01 1.25600170e-01 + 1.25543688e-01 1.25487147e-01 1.25430549e-01 1.25373892e-01 1.25317178e-01 + 1.25260405e-01 1.25203574e-01 1.25146686e-01 1.25089739e-01 1.25032735e-01 + 1.24975672e-01 1.24918552e-01 1.24861374e-01 1.24804137e-01 1.24746843e-01 + 1.24689491e-01 1.24632082e-01 1.24574614e-01 1.24517089e-01 1.24459505e-01 + 1.24401864e-01 1.24344166e-01 1.24286409e-01 1.24228595e-01 1.24170723e-01 + 1.24112794e-01 1.24054806e-01 1.23996762e-01 1.23938659e-01 1.23880499e-01 + 1.23822281e-01 1.23764006e-01 1.23705674e-01 1.23647284e-01 1.23588836e-01 + 1.23530331e-01 1.23471769e-01 1.23413149e-01 1.23354472e-01 1.23295737e-01 + 1.23236946e-01 1.23178097e-01 1.23119190e-01 1.23060227e-01 1.23001206e-01 + 1.22942129e-01 1.22882994e-01 1.22823802e-01 1.22764553e-01 1.22705247e-01 + 1.22645884e-01 1.22586464e-01 1.22526988e-01 1.22467454e-01 1.22407864e-01 + 1.22348217e-01 1.22288513e-01 1.22228752e-01 1.22168935e-01 1.22109061e-01 + 1.22049130e-01 1.21989143e-01 1.21929100e-01 1.21869000e-01 1.21808843e-01 + 1.21748630e-01 1.21688361e-01 1.21628036e-01 1.21567654e-01 1.21507216e-01 + 1.21446722e-01 1.21386172e-01 1.21325566e-01 1.21264904e-01 1.21204185e-01 + 1.21143411e-01 1.21082581e-01 1.21021696e-01 1.20960754e-01 1.20899757e-01 + 1.20838704e-01 1.20777596e-01 1.20716432e-01 1.20655212e-01 1.20593937e-01 + 1.20532607e-01 1.20471221e-01 1.20409780e-01 1.20348284e-01 1.20286733e-01 + 1.20225127e-01 1.20163465e-01 1.20101749e-01 1.20039978e-01 1.19978152e-01 + 1.19916271e-01 1.19854335e-01 1.19792345e-01 1.19730300e-01 1.19668200e-01 + 1.19606047e-01 1.19543838e-01 1.19481576e-01 1.19419259e-01 1.19356888e-01 + 1.19294463e-01 1.19231984e-01 1.19169450e-01 1.19106863e-01 1.19044222e-01 + 1.18981528e-01 1.18918779e-01 1.18855977e-01 1.18793122e-01 1.18730213e-01 + 1.18667250e-01 1.18604235e-01 1.18541166e-01 1.18478043e-01 1.18414868e-01 + 1.18351640e-01 1.18288359e-01 1.18225025e-01 1.18161638e-01 1.18098199e-01 + 1.18034707e-01 1.17971163e-01 1.17907566e-01 1.17843917e-01 1.17780216e-01 + 1.17716462e-01 1.17652656e-01 1.17588799e-01 1.17524889e-01 1.17460928e-01 + 1.17396915e-01 1.17332851e-01 1.17268735e-01 1.17204567e-01 1.17140349e-01 + 1.17076079e-01 1.17011757e-01 1.16947385e-01 1.16882962e-01 1.16818488e-01 + 1.16753964e-01 1.16689388e-01 1.16624762e-01 1.16560086e-01 1.16495360e-01 + 1.16430583e-01 1.16365756e-01 1.16300879e-01 1.16235952e-01 1.16170975e-01 + 1.16105949e-01 1.16040873e-01 1.15975748e-01 1.15910573e-01 1.15845349e-01 + 1.15780076e-01 1.15714754e-01 1.15649383e-01 1.15583963e-01 1.15518494e-01 + 1.15452977e-01 1.15387412e-01 1.15321798e-01 1.15256136e-01 1.15190426e-01 + 1.15124668e-01 1.15058862e-01 1.14993008e-01 1.14927107e-01 1.14861158e-01 + 1.14795162e-01 1.14729119e-01 1.14663029e-01 1.14596892e-01 1.14530707e-01 + 1.14464477e-01 1.14398199e-01 1.14331875e-01 1.14265505e-01 1.14199089e-01 + 1.14132627e-01 1.14066119e-01 1.13999565e-01 1.13932965e-01 1.13866320e-01 + 1.13799630e-01 1.13732894e-01 1.13666113e-01 1.13599288e-01 1.13532417e-01 + 1.13465503e-01 1.13398543e-01 1.13331539e-01 1.13264491e-01 1.13197399e-01 + 1.13130263e-01 1.13063084e-01 1.12995861e-01 1.12928594e-01 1.12861284e-01 + 1.12793931e-01 1.12726535e-01 1.12659096e-01 1.12591615e-01 1.12524091e-01 + 1.12456524e-01 1.12388916e-01 1.12321265e-01 1.12253573e-01 1.12185839e-01 + 1.12118063e-01 1.12050246e-01 1.11982388e-01 1.11914489e-01 1.11846549e-01 + 1.11778568e-01 1.11710547e-01 1.11642485e-01 1.11574383e-01 1.11506242e-01 + 1.11438060e-01 1.11369839e-01 1.11301578e-01 1.11233278e-01 1.11164939e-01 + 1.11096561e-01 1.11028144e-01 1.10959689e-01 1.10891195e-01 1.10822663e-01 + 1.10754093e-01 1.10685486e-01 1.10616840e-01 1.10548157e-01 1.10479437e-01 + 1.10410680e-01 1.10341886e-01 1.10273055e-01 1.10204188e-01 1.10135284e-01 + 1.10066345e-01 1.09997369e-01 1.09928358e-01 1.09859311e-01 1.09790229e-01 + 1.09721112e-01 1.09651960e-01 1.09582773e-01 1.09513552e-01 1.09444296e-01 + 1.09375007e-01 1.09305683e-01 1.09236326e-01 1.09166936e-01 1.09097512e-01 + 1.09028055e-01 1.08958566e-01 1.08889044e-01 1.08819489e-01 1.08749902e-01 + 1.08680284e-01 1.08610634e-01 1.08540952e-01 1.08471239e-01 1.08401495e-01 + 1.08331720e-01 1.08261914e-01 1.08192078e-01 1.08122212e-01 1.08052316e-01 + 1.07982391e-01 1.07912436e-01 1.07842452e-01 1.07772438e-01 1.07702397e-01 + 1.07632326e-01 1.07562227e-01 1.07492101e-01 1.07421946e-01 1.07351764e-01 + 1.07281555e-01 1.07211318e-01 1.07141055e-01 1.07070766e-01 1.07000449e-01 + 1.06930107e-01 1.06859739e-01 1.06789346e-01 1.06718927e-01 1.06648483e-01 + 1.06578015e-01 1.06507521e-01 1.06437004e-01 1.06366462e-01 1.06295897e-01 + 1.06225308e-01 1.06154696e-01 1.06084061e-01 1.06013403e-01 1.05942723e-01 + 1.05872021e-01 1.05801296e-01 1.05730551e-01 1.05659783e-01 1.05588995e-01 + 1.05518186e-01 1.05447356e-01 1.05376506e-01 1.05305636e-01 1.05234746e-01 + 1.05163837e-01 1.05092908e-01 1.05021961e-01 1.04950995e-01 1.04880011e-01 + 1.04809009e-01 1.04737989e-01 1.04666951e-01 1.04595897e-01 1.04524826e-01 + 1.04453738e-01 1.04382633e-01 1.04311513e-01 1.04240377e-01 1.04169226e-01 + 1.04098060e-01 1.04026878e-01 1.03955683e-01 1.03884473e-01 1.03813249e-01 + 1.03742012e-01 1.03670761e-01 1.03599498e-01 1.03528222e-01 1.03456933e-01 + 1.03385633e-01 1.03314321e-01 1.03242997e-01 1.03171662e-01 1.03100317e-01 + 1.03028961e-01 1.02957595e-01 1.02886219e-01 1.02814833e-01 1.02743439e-01 + 1.02672036e-01 1.02600624e-01 1.02529204e-01 1.02457776e-01 1.02386340e-01 + 1.02314898e-01 1.02243448e-01 1.02171992e-01 1.02100530e-01 1.02029062e-01 + 1.01957589e-01 1.01886110e-01 1.01814626e-01 1.01743138e-01 1.01671646e-01 + 1.01600150e-01 1.01528651e-01 1.01457148e-01 1.01385643e-01 1.01314135e-01 + 1.01242625e-01 1.01171114e-01 1.01099601e-01 1.01028087e-01 1.00956573e-01 + 1.00885058e-01 1.00813543e-01 1.00742029e-01 1.00670515e-01 1.00599003e-01 + 1.00527492e-01 1.00455983e-01 1.00384477e-01 1.00312973e-01 1.00241472e-01 + 1.00169974e-01 1.00098480e-01 1.00026990e-01 9.99555050e-02 9.98840245e-02 + 9.98125493e-02 9.97410797e-02 9.96696161e-02 9.95981588e-02 9.95267084e-02 + 9.94552650e-02 9.93838292e-02 9.93124014e-02 9.92409818e-02 9.91695709e-02 + 9.90981691e-02 9.90267768e-02 9.89553944e-02 9.88840222e-02 9.88126607e-02 + 9.87413103e-02 9.86699713e-02 9.85986441e-02 9.85273293e-02 9.84560271e-02 + 9.83847379e-02 9.83134622e-02 9.82422004e-02 9.81709529e-02 9.80997201e-02 + 9.80285023e-02 9.79573001e-02 9.78861138e-02 9.78149439e-02 9.77437907e-02 + 9.76726547e-02 9.76015362e-02 9.75304358e-02 9.74593538e-02 9.73882907e-02 + 9.73172468e-02 9.72462226e-02 9.71752186e-02 9.71042351e-02 9.70332725e-02 + 9.69623314e-02 9.68914121e-02 9.68205151e-02 9.67496408e-02 9.66787897e-02 + 9.66079621e-02 9.65371585e-02 9.64663793e-02 9.63956251e-02 9.63248961e-02 + 9.62541930e-02 9.61835160e-02 9.61128657e-02 9.60422425e-02 9.59716469e-02 + 9.59010792e-02 9.58305400e-02 9.57600297e-02 9.56895487e-02 9.56190976e-02 + 9.55486767e-02 9.54782865e-02 9.54079274e-02 9.53376000e-02 9.52673047e-02 + 9.51970419e-02 9.51268121e-02 9.50566158e-02 9.49864534e-02 9.49163254e-02 + 9.48462322e-02 9.47761744e-02 9.47061524e-02 9.46361667e-02 9.45662176e-02 + 9.44963058e-02 9.44264317e-02 9.43565957e-02 9.42867984e-02 9.42170402e-02 + 9.41473215e-02 9.40776429e-02 9.40080049e-02 9.39384078e-02 9.38688523e-02 + 9.37993388e-02 9.37298677e-02 9.36604397e-02 9.35910550e-02 9.35217143e-02 + 9.34524180e-02 9.33831666e-02 9.33139606e-02 9.32448006e-02 9.31756869e-02 + 9.31066201e-02 9.30376006e-02 9.29686291e-02 9.28997059e-02 9.28308316e-02 + 9.27620066e-02 9.26932315e-02 9.26245068e-02 9.25558330e-02 9.24872106e-02 + 9.24186400e-02 9.23501218e-02 9.22816566e-02 9.22132447e-02 9.21448867e-02 + 9.20765832e-02 9.20083346e-02 9.19401414e-02 9.18720042e-02 9.18039235e-02 + 9.17358998e-02 9.16679335e-02 9.16000253e-02 9.15321756e-02 9.14643850e-02 + 9.13966540e-02 9.13289830e-02 9.12613727e-02 9.11938235e-02 9.11263360e-02 + 9.10589106e-02 9.09915480e-02 9.09242486e-02 9.08570130e-02 9.07898417e-02 + 9.07227352e-02 9.06556940e-02 9.05887187e-02 9.05218099e-02 9.04549680e-02 + 9.03881935e-02 9.03214871e-02 9.02548492e-02 9.01882804e-02 9.01217813e-02 + 9.00553522e-02 8.99889939e-02 8.99227068e-02 8.98564915e-02 8.97903485e-02 + 8.97242783e-02 8.96582816e-02 8.95923588e-02 8.95265104e-02 8.94607371e-02 + 8.93950394e-02 8.93294177e-02 8.92638728e-02 8.91984050e-02 8.91330150e-02 + 8.90677033e-02 8.90024705e-02 8.89373170e-02 8.88722435e-02 8.88072505e-02 + 8.87423386e-02 8.86775083e-02 8.86127602e-02 8.85480947e-02 8.84835126e-02 + 8.84190142e-02 8.83546003e-02 8.82902712e-02 8.82260277e-02 8.81618702e-02 + 8.80977994e-02 8.80338157e-02 8.79699197e-02 8.79061120e-02 8.78423932e-02 + 8.77787637e-02 8.77152243e-02 8.76517753e-02 8.75884175e-02 8.75251513e-02 + 8.74619773e-02 8.73988961e-02 8.73359083e-02 8.72730143e-02 8.72102149e-02 + 8.71475104e-02 8.70849016e-02 8.70223890e-02 8.69599731e-02 8.68976544e-02 + 8.68354337e-02 8.67733114e-02 8.67112881e-02 8.66493644e-02 8.65875409e-02 + 8.65258180e-02 8.64641964e-02 8.64026767e-02 8.63412594e-02 8.62799451e-02 + 8.62187344e-02 8.61576278e-02 8.60966259e-02 8.60357293e-02 8.59749386e-02 + 8.59142542e-02 8.58536769e-02 8.57932071e-02 8.57328455e-02 8.56725925e-02 + 8.56124489e-02 8.55524151e-02 8.54924918e-02 8.54326794e-02 8.53729787e-02 + 8.53133900e-02 8.52539141e-02 8.51945515e-02 8.51353028e-02 8.50761685e-02 + 8.50171493e-02 8.49582456e-02 8.48994581e-02 8.48407874e-02 8.47822340e-02 + 8.47237984e-02 8.46654813e-02 8.46072833e-02 8.45492049e-02 8.44912466e-02 + 8.44334092e-02 8.43756930e-02 8.43180988e-02 8.42606271e-02 8.42032784e-02 + 8.41460533e-02 8.40889525e-02 8.40319764e-02 8.39751257e-02 8.39184009e-02 + 8.38618026e-02 8.38053314e-02 8.37489878e-02 8.36927724e-02 8.36366859e-02 + 8.35807286e-02 8.35249013e-02 8.34692046e-02 8.34136388e-02 8.33582048e-02 + 8.33029029e-02 8.32477338e-02 8.31926981e-02 8.31377963e-02 8.30830290e-02 + 8.30283967e-02 8.29739001e-02 8.29195397e-02 8.28653161e-02 8.28112297e-02 + 8.27572813e-02 8.27034714e-02 8.26498005e-02 8.25962691e-02 8.25428780e-02 + 8.24896276e-02 8.24365184e-02 8.23835511e-02 8.23307263e-02 8.22780444e-02 + 8.22255060e-02 8.21731118e-02 8.21208622e-02 8.20687579e-02 8.20167993e-02 + 8.19649871e-02 8.19133218e-02 8.18618039e-02 8.18104341e-02 8.17592128e-02 + 8.17081407e-02 8.16572182e-02 8.16064460e-02 8.15558245e-02 8.15053545e-02 + 8.14550363e-02 8.14048705e-02 8.13548578e-02 8.13049986e-02 8.12552935e-02 + 8.12057430e-02 8.11563478e-02 8.11071082e-02 8.10580250e-02 8.10090986e-02 + 8.09603295e-02 8.09117184e-02 8.08632657e-02 8.08149721e-02 8.07668379e-02 + 8.07188639e-02 8.06710504e-02 8.06233982e-02 8.05759075e-02 8.05285792e-02 + 8.04814136e-02 8.04344112e-02 8.03875727e-02 8.03408986e-02 8.02943893e-02 + 8.02480455e-02 8.02018675e-02 8.01558561e-02 8.01100116e-02 8.00643347e-02 + 8.00188258e-02 7.99734855e-02 7.99283142e-02 7.98833126e-02 7.98384810e-02 + 7.97938201e-02 7.97493304e-02 7.97050123e-02 7.96608664e-02 7.96168932e-02 + 7.95730933e-02 7.95294670e-02 7.94860149e-02 7.94427376e-02 7.93996355e-02 + 7.93567091e-02 7.93139590e-02 7.92713856e-02 7.92289895e-02 7.91867711e-02 + 7.91447310e-02 7.91028695e-02 7.90611873e-02 7.90196849e-02 7.89783626e-02 + 7.89372210e-02 7.88962607e-02 7.88554819e-02 7.88148854e-02 7.87744715e-02 + 7.87342407e-02 7.86941935e-02 7.86543304e-02 7.86146519e-02 7.85751584e-02 + 7.85358504e-02 7.84967284e-02 7.84577929e-02 7.84190442e-02 7.83804830e-02 + 7.83421096e-02 7.83039245e-02 7.82659282e-02 7.82281212e-02 7.81905038e-02 + 7.81530766e-02 7.81158400e-02 7.80787945e-02 7.80419405e-02 7.80052784e-02 + 7.79688088e-02 7.79325320e-02 7.78964485e-02 7.78605587e-02 7.78248631e-02 + 7.77893622e-02 7.77540563e-02 7.77189459e-02 7.76840314e-02 7.76493132e-02 + 7.76147919e-02 7.75804677e-02 7.75463412e-02 7.75124127e-02 7.74786828e-02 + 7.74451517e-02 7.74118199e-02 7.73786878e-02 7.73457559e-02 7.73130245e-02 + 7.72804941e-02 7.72481650e-02 7.72160377e-02 7.71841125e-02 7.71523900e-02 + 7.71208703e-02 7.70895541e-02 7.70584416e-02 7.70275332e-02 7.69968293e-02 + 7.69663304e-02 7.69360368e-02 7.69059488e-02 7.68760670e-02 7.68463915e-02 + 7.68169229e-02 7.67876614e-02 7.67586075e-02 7.67297616e-02 7.67011239e-02 + 7.66726949e-02 7.66444749e-02 7.66164642e-02 7.65886633e-02 7.65610725e-02 + 7.65336921e-02 7.65065225e-02 7.64795641e-02 7.64528171e-02 7.64262819e-02 + 7.63999589e-02 7.63738484e-02 7.63479508e-02 7.63222662e-02 7.62967952e-02 + 7.62715380e-02 7.62464950e-02 7.62216664e-02 7.61970526e-02 7.61726539e-02 + 7.61484706e-02 7.61245031e-02 7.61007516e-02 7.60772164e-02 7.60538979e-02 + 7.60307964e-02 7.60079121e-02 7.59852453e-02 7.59627964e-02 7.59405657e-02 + 7.59185533e-02 7.58967597e-02 7.58751851e-02 7.58538297e-02 7.58326939e-02 + 7.58117779e-02 7.57910820e-02 7.57706065e-02 7.57503516e-02 7.57303176e-02 + 7.57105048e-02 7.56909134e-02 7.56715437e-02 7.56523959e-02 7.56334703e-02 + 7.56147671e-02 7.55962866e-02 7.55780290e-02 7.55599946e-02 7.55421835e-02 + 7.55245961e-02 7.55072326e-02 7.54900931e-02 7.54731780e-02 7.54564874e-02 + 7.54400215e-02 7.54237806e-02 7.54077649e-02 7.53919746e-02 7.53764099e-02 + 7.53610711e-02 7.53459582e-02 7.53310716e-02 7.53164113e-02 7.53019777e-02 + 7.52877708e-02 7.52737910e-02 7.52600383e-02 7.52465130e-02 7.52332152e-02 + 7.52201451e-02 7.52073028e-02 7.51946887e-02 7.51823027e-02 7.51701451e-02 + 7.51582161e-02 7.51465158e-02 7.51350443e-02 7.51238019e-02 7.51127886e-02 + 7.51020046e-02 7.50914500e-02 7.50811251e-02 7.50710299e-02 7.50611645e-02 + 7.50515291e-02 7.50421239e-02 7.50329489e-02 7.50240043e-02 7.50152901e-02 + 7.50068066e-02 7.49985538e-02 7.49905318e-02 7.49827407e-02 7.49751807e-02 + 7.49678518e-02 7.49607542e-02 7.49538879e-02 7.49472530e-02 7.49408496e-02 + 7.49346779e-02 7.49287378e-02 7.49230295e-02 7.49175530e-02 7.49123084e-02 + 7.49072958e-02 7.49025153e-02 7.48979669e-02 7.48936506e-02 7.48895666e-02 + 7.48857148e-02 7.48820954e-02 7.48787084e-02 7.48755538e-02 7.48726317e-02 + 7.48699421e-02 7.48674851e-02 7.48652606e-02 7.48632687e-02 7.48615095e-02 + 7.48599830e-02 7.48586891e-02 7.48576279e-02 7.48567994e-02 7.48562037e-02 + 7.48558407e-02 7.48557104e-02 7.48558129e-02 7.48561481e-02 7.48567160e-02 + 7.48575167e-02 7.48585501e-02 7.48598162e-02 7.48613149e-02 7.48630464e-02 + 7.48650104e-02 7.48672071e-02 7.48696364e-02 7.48722982e-02 7.48751926e-02 + 7.48783194e-02 7.48816786e-02 7.48852703e-02 7.48890943e-02 7.48931506e-02 + 7.48974391e-02 7.49019598e-02 7.49067126e-02 7.49116975e-02 7.49169143e-02 + 7.49223631e-02 7.49280438e-02 7.49339562e-02 7.49401003e-02 7.49464760e-02 + 7.49530832e-02 7.49599219e-02 7.49669919e-02 7.49742931e-02 7.49818255e-02 + 7.49895890e-02 7.49975834e-02 7.50058087e-02 7.50142646e-02 7.50229512e-02 + 7.50318684e-02 7.50410158e-02 7.50503936e-02 7.50600015e-02 7.50698394e-02 + 7.50799072e-02 7.50902047e-02 7.51007318e-02 7.51114884e-02 7.51224743e-02 + 7.51336894e-02 7.51451335e-02 7.51568065e-02 7.51687082e-02 7.51808385e-02 + 7.51931972e-02 7.52057841e-02 7.52185991e-02 7.52316420e-02 7.52449126e-02 + 7.52584108e-02 7.52721363e-02 7.52860890e-02 7.53002688e-02 7.53146753e-02 + 7.53293085e-02 7.53441681e-02 7.53592540e-02 7.53745659e-02 7.53901036e-02 + 7.54058670e-02 7.54218558e-02 7.54380698e-02 7.54545087e-02 7.54711725e-02 + 7.54880609e-02 7.55051735e-02 7.55225103e-02 7.55400710e-02 7.55578553e-02 + 7.55758631e-02 7.55940940e-02 7.56125479e-02 7.56312245e-02 7.56501236e-02 + 7.56692448e-02 7.56885881e-02 7.57081530e-02 7.57279394e-02 7.57479470e-02 + 7.57681755e-02 7.57886247e-02 7.58092942e-02 7.58301840e-02 7.58512935e-02 + 7.58726227e-02 7.58941712e-02 7.59159386e-02 7.59379249e-02 7.59601296e-02 + 7.59825524e-02 7.60051932e-02 7.60280515e-02 7.60511271e-02 7.60744197e-02 + 7.60979290e-02 7.61216547e-02 7.61455964e-02 7.61697540e-02 7.61941269e-02 + 7.62187151e-02 7.62435180e-02 7.62685354e-02 7.62937671e-02 7.63192126e-02 + 7.63448716e-02 7.63707438e-02 7.63968289e-02 7.64231266e-02 7.64496364e-02 + 7.64763581e-02 7.65032913e-02 7.65304357e-02 7.65577909e-02 7.65853566e-02 + 7.66131325e-02 7.66411181e-02 7.66693131e-02 7.66977171e-02 7.67263299e-02 + 7.67551510e-02 7.67841801e-02 7.68134168e-02 7.68428607e-02 7.68725114e-02 + 7.69023687e-02 7.69324320e-02 7.69627011e-02 7.69931756e-02 7.70238549e-02 + 7.70547389e-02 7.70858271e-02 7.71171190e-02 7.71486144e-02 7.71803127e-02 + 7.72122137e-02 7.72443169e-02 7.72766219e-02 7.73091283e-02 7.73418357e-02 + 7.73747437e-02 7.74078518e-02 7.74411598e-02 7.74746671e-02 7.75083734e-02 + 7.75422781e-02 7.75763810e-02 7.76106816e-02 7.76451794e-02 7.76798741e-02 + 7.77147651e-02 7.77498522e-02 7.77851347e-02 7.78206124e-02 7.78562848e-02 + 7.78921513e-02 7.79282117e-02 7.79644654e-02 7.80009121e-02 7.80375512e-02 + 7.80743823e-02 7.81114050e-02 7.81486188e-02 7.81860233e-02 7.82236179e-02 + 7.82614023e-02 7.82993761e-02 7.83375386e-02 7.83758895e-02 7.84144284e-02 + 7.84531546e-02 7.84920679e-02 7.85311676e-02 7.85704534e-02 7.86099248e-02 + 7.86495813e-02 7.86894223e-02 7.87294475e-02 7.87696564e-02 7.88100485e-02 + 7.88506232e-02 7.88913802e-02 7.89323189e-02 7.89734389e-02 7.90147396e-02 + 7.90562205e-02 7.90978813e-02 7.91397213e-02 7.91817402e-02 7.92239373e-02 + 7.92663122e-02 7.93088645e-02 7.93515935e-02 7.93944988e-02 7.94375800e-02 + 7.94808364e-02 7.95242676e-02 7.95678731e-02 7.96116524e-02 7.96556049e-02 + 7.96997302e-02 7.97440277e-02 7.97884970e-02 7.98331374e-02 7.98779486e-02 + 7.99229300e-02 7.99680810e-02 8.00134012e-02 8.00588900e-02 8.01045468e-02 + 8.01503713e-02 8.01963628e-02 8.02425209e-02 8.02888450e-02 8.03353345e-02 + 8.03819890e-02 8.04288079e-02 8.04757907e-02 8.05229368e-02 8.05702458e-02 + 8.06177170e-02 8.06653500e-02 8.07131443e-02 8.07610992e-02 8.08092142e-02 + 8.08574888e-02 8.09059225e-02 8.09545148e-02 8.10032650e-02 8.10521726e-02 + 8.11012372e-02 8.11504581e-02 8.11998347e-02 8.12493667e-02 8.12990534e-02 + 8.13488942e-02 8.13988886e-02 8.14490361e-02 8.14993361e-02 8.15497881e-02 + 8.16003915e-02 8.16511457e-02 8.17020502e-02 8.17531045e-02 8.18043080e-02 + 8.18556601e-02 8.19071604e-02 8.19588081e-02 8.20106028e-02 8.20625439e-02 + 8.21146309e-02 8.21668631e-02 8.22192401e-02 8.22717613e-02 8.23244260e-02 + 8.23772339e-02 8.24301842e-02 8.24832764e-02 8.25365100e-02 8.25898843e-02 + 8.26433990e-02 8.26970532e-02 8.27508466e-02 8.28047785e-02 8.28588484e-02 + 8.29130557e-02 8.29673998e-02 8.30218801e-02 8.30764962e-02 8.31312474e-02 + 8.31861332e-02 8.32411529e-02 8.32963061e-02 8.33515922e-02 8.34070105e-02 + 8.34625605e-02 8.35182417e-02 8.35740534e-02 8.36299951e-02 8.36860663e-02 + 8.37422663e-02 8.37985946e-02 8.38550506e-02 8.39116338e-02 8.39683435e-02 + 8.40251792e-02 8.40821403e-02 8.41392263e-02 8.41964365e-02 8.42537705e-02 + 8.43112275e-02 8.43688072e-02 8.44265088e-02 8.44843318e-02 8.45422756e-02 + 8.46003397e-02 8.46585235e-02 8.47168264e-02 8.47752478e-02 8.48337872e-02 + 8.48924439e-02 8.49512175e-02 8.50101073e-02 8.50691128e-02 8.51282334e-02 + 8.51874685e-02 8.52468175e-02 8.53062799e-02 8.53658551e-02 8.54255425e-02 + 8.54853415e-02 8.55452516e-02 8.56052723e-02 8.56654028e-02 8.57256427e-02 + 8.57859914e-02 8.58464483e-02 8.59070128e-02 8.59676844e-02 8.60284625e-02 + 8.60893465e-02 8.61503358e-02 8.62114299e-02 8.62726282e-02 8.63339302e-02 + 8.63953352e-02 8.64568427e-02 8.65184522e-02 8.65801629e-02 8.66419745e-02 + 8.67038863e-02 8.67658977e-02 8.68280082e-02 8.68902172e-02 8.69525242e-02 + 8.70149285e-02 8.70774296e-02 8.71400270e-02 8.72027200e-02 8.72655081e-02 + 8.73283908e-02 8.73913675e-02 8.74544376e-02 8.75176005e-02 8.75808557e-02 + 8.76442026e-02 8.77076407e-02 8.77711694e-02 8.78347881e-02 8.78984963e-02 + 8.79622934e-02 8.80261789e-02 8.80901521e-02 8.81542126e-02 8.82183598e-02 + 8.82825930e-02 8.83469119e-02 8.84113157e-02 8.84758040e-02 8.85403762e-02 + 8.86050317e-02 8.86697700e-02 8.87345905e-02 8.87994927e-02 8.88644761e-02 + 8.89295400e-02 8.89946839e-02 8.90599073e-02 8.91252096e-02 8.91905903e-02 + 8.92560488e-02 8.93215845e-02 8.93871970e-02 8.94528857e-02 8.95186500e-02 + 8.95844894e-02 8.96504034e-02 8.97163914e-02 8.97824528e-02 8.98485871e-02 + 8.99147938e-02 8.99810724e-02 9.00474222e-02 9.01138428e-02 9.01803336e-02 + 9.02468942e-02 9.03135238e-02 9.03802221e-02 9.04469884e-02 9.05138223e-02 + 9.05807232e-02 9.06476906e-02 9.07147239e-02 9.07818226e-02 9.08489862e-02 + 9.09162142e-02 9.09835060e-02 9.10508611e-02 9.11182790e-02 9.11857591e-02 + 9.12533009e-02 9.13209040e-02 9.13885677e-02 9.14562916e-02 9.15240751e-02 + 9.15919178e-02 9.16598190e-02 9.17277784e-02 9.17957953e-02 9.18638692e-02 + 9.19319997e-02 9.20001862e-02 9.20684282e-02 9.21367252e-02 9.22050767e-02 + 9.22734821e-02 9.23419411e-02 9.24104530e-02 9.24790173e-02 9.25476336e-02 + 9.26163013e-02 9.26850199e-02 9.27537890e-02 9.28226080e-02 9.28914765e-02 + 9.29603938e-02 9.30293596e-02 9.30983734e-02 9.31674346e-02 9.32365427e-02 + 9.33056973e-02 9.33748978e-02 9.34441438e-02 9.35134347e-02 9.35827701e-02 + 9.36521496e-02 9.37215725e-02 9.37910385e-02 9.38605469e-02 9.39300975e-02 + 9.39996895e-02 9.40693227e-02 9.41389965e-02 9.42087104e-02 9.42784639e-02 + 9.43482566e-02 9.44180880e-02 9.44879576e-02 9.45578649e-02 9.46278095e-02 + 9.46977909e-02 9.47678086e-02 9.48378622e-02 9.49079511e-02 9.49780750e-02 + 9.50482333e-02 9.51184256e-02 9.51886514e-02 9.52589103e-02 9.53292017e-02 + 9.53995254e-02 9.54698806e-02 9.55402671e-02 9.56106844e-02 9.56811320e-02 + 9.57516094e-02 9.58221162e-02 9.58926520e-02 9.59632163e-02 9.60338086e-02 + 9.61044286e-02 9.61750756e-02 9.62457494e-02 9.63164495e-02 9.63871754e-02 + 9.64579266e-02 9.65287028e-02 9.65995035e-02 9.66703283e-02 9.67411766e-02 + 9.68120482e-02 9.68829425e-02 9.69538592e-02 9.70247977e-02 9.70957577e-02 + 9.71667387e-02 9.72377403e-02 9.73087621e-02 9.73798037e-02 9.74508645e-02 + 9.75219443e-02 9.75930426e-02 9.76641589e-02 9.77352928e-02 9.78064440e-02 + 9.78776119e-02 9.79487963e-02 9.80199966e-02 9.80912125e-02 9.81624436e-02 + 9.82336894e-02 9.83049495e-02 9.83762235e-02 9.84475111e-02 9.85188118e-02 + 9.85901251e-02 9.86614508e-02 9.87327884e-02 9.88041375e-02 9.88754977e-02 + 9.89468687e-02 9.90182499e-02 9.90896410e-02 9.91610417e-02 9.92324515e-02 + 9.93038701e-02 9.93752970e-02 9.94467318e-02 9.95181743e-02 9.95896239e-02 + 9.96610804e-02 9.97325432e-02 9.98040122e-02 9.98754867e-02 9.99469666e-02 + 1.00018451e-01 1.00089941e-01 1.00161434e-01 1.00232931e-01 1.00304432e-01 + 1.00375936e-01 1.00447442e-01 1.00518951e-01 1.00590461e-01 1.00661973e-01 + 1.00733487e-01 1.00805001e-01 1.00876516e-01 1.00948030e-01 1.01019545e-01 + 1.01091059e-01 1.01162572e-01 1.01234084e-01 1.01305594e-01 1.01377102e-01 + 1.01448607e-01 1.01520110e-01 1.01591610e-01 1.01663106e-01 1.01734599e-01 + 1.01806088e-01 1.01877572e-01 1.01949051e-01 1.02020525e-01 1.02091994e-01 + 1.02163457e-01 1.02234914e-01 1.02306364e-01 1.02377807e-01 1.02449244e-01 + 1.02520672e-01 1.02592093e-01 1.02663506e-01 1.02734911e-01 1.02806306e-01 + 1.02877693e-01 1.02949070e-01 1.03020437e-01 1.03091794e-01 1.03163141e-01 + 1.03234477e-01 1.03305802e-01 1.03377115e-01 1.03448417e-01 1.03519707e-01 + 1.03590985e-01 1.03662250e-01 1.03733502e-01 1.03804741e-01 1.03875966e-01 + 1.03947178e-01 1.04018375e-01 1.04089558e-01 1.04160726e-01 1.04231879e-01 + 1.04303017e-01 1.04374139e-01 1.04445245e-01 1.04516335e-01 1.04587409e-01 + 1.04658465e-01 1.04729504e-01 1.04800527e-01 1.04871531e-01 1.04942517e-01 + 1.05013485e-01 1.05084435e-01 1.05155365e-01 1.05226277e-01 1.05297169e-01 + 1.05368041e-01 1.05438894e-01 1.05509726e-01 1.05580538e-01 1.05651329e-01 + 1.05722099e-01 1.05792847e-01 1.05863574e-01 1.05934279e-01 1.06004962e-01 + 1.06075622e-01 1.06146260e-01 1.06216875e-01 1.06287467e-01 1.06358035e-01 + 1.06428579e-01 1.06499100e-01 1.06569596e-01 1.06640067e-01 1.06710514e-01 + 1.06780936e-01 1.06851332e-01 1.06921703e-01 1.06992049e-01 1.07062368e-01 + 1.07132661e-01 1.07202927e-01 1.07273167e-01 1.07343379e-01 1.07413565e-01 + 1.07483722e-01 1.07553852e-01 1.07623955e-01 1.07694028e-01 1.07764074e-01 + 1.07834090e-01 1.07904078e-01 1.07974036e-01 1.08043966e-01 1.08113865e-01 + 1.08183735e-01 1.08253574e-01 1.08323383e-01 1.08393162e-01 1.08462910e-01 + 1.08532626e-01 1.08602312e-01 1.08671966e-01 1.08741588e-01 1.08811179e-01 + 1.08880737e-01 1.08950263e-01 1.09019757e-01 1.09089217e-01 1.09158645e-01 + 1.09228040e-01 1.09297401e-01 1.09366728e-01 1.09436022e-01 1.09505281e-01 + 1.09574507e-01 1.09643698e-01 1.09712854e-01 1.09781975e-01 1.09851061e-01 + 1.09920112e-01 1.09989128e-01 1.10058108e-01 1.10127052e-01 1.10195959e-01 + 1.10264831e-01 1.10333666e-01 1.10402465e-01 1.10471226e-01 1.10539951e-01 + 1.10608638e-01 1.10677288e-01 1.10745900e-01 1.10814475e-01 1.10883011e-01 + 1.10951510e-01 1.11019970e-01 1.11088391e-01 1.11156774e-01 1.11225117e-01 + 1.11293422e-01 1.11361687e-01 1.11429913e-01 1.11498100e-01 1.11566246e-01 + 1.11634353e-01 1.11702419e-01 1.11770445e-01 1.11838431e-01 1.11906376e-01 + 1.11974280e-01 1.12042143e-01 1.12109965e-01 1.12177745e-01 1.12245484e-01 + 1.12313182e-01 1.12380837e-01 1.12448451e-01 1.12516022e-01 1.12583551e-01 + 1.12651038e-01 1.12718482e-01 1.12785883e-01 1.12853241e-01 1.12920556e-01 + 1.12987828e-01 1.13055056e-01 1.13122241e-01 1.13189382e-01 1.13256480e-01 + 1.13323533e-01 1.13390542e-01 1.13457507e-01 1.13524427e-01 1.13591303e-01 + 1.13658134e-01 1.13724920e-01 1.13791661e-01 1.13858356e-01 1.13925007e-01 + 1.13991612e-01 1.14058171e-01 1.14124685e-01 1.14191153e-01 1.14257575e-01 + 1.14323950e-01 1.14390280e-01 1.14456562e-01 1.14522799e-01 1.14588988e-01 + 1.14655131e-01 1.14721227e-01 1.14787276e-01 1.14853278e-01 1.14919232e-01 + 1.14985139e-01 1.15050998e-01 1.15116810e-01 1.15182574e-01 1.15248290e-01 + 1.15313957e-01 1.15379577e-01 1.15445148e-01 1.15510671e-01 1.15576146e-01 + 1.15641571e-01 1.15706948e-01 1.15772276e-01 1.15837555e-01 1.15902785e-01 + 1.15967965e-01 1.16033097e-01 1.16098179e-01 1.16163211e-01 1.16228193e-01 + 1.16293126e-01 1.16358009e-01 1.16422842e-01 1.16487625e-01 1.16552357e-01 + 1.16617040e-01 1.16681672e-01 1.16746253e-01 1.16810784e-01 1.16875264e-01 + 1.16939693e-01 1.17004071e-01 1.17068398e-01 1.17132674e-01 1.17196899e-01 + 1.17261073e-01 1.17325195e-01 1.17389266e-01 1.17453285e-01 1.17517252e-01 + 1.17581168e-01 1.17645032e-01 1.17708843e-01 1.17772603e-01 1.17836311e-01 + 1.17899966e-01 1.17963569e-01 1.18027120e-01 1.18090618e-01 1.18154064e-01 + 1.18217457e-01 1.18280797e-01 1.18344084e-01 1.18407319e-01 1.18470500e-01 + 1.18533629e-01 1.18596704e-01 1.18659726e-01 1.18722695e-01 1.18785610e-01 + 1.18848472e-01 1.18911281e-01 1.18974035e-01 1.19036736e-01 1.19099384e-01 + 1.03953624e+00 1.03772749e+00 1.03592023e+00 1.03411445e+00 1.03231016e+00 + 1.03050735e+00 1.02870603e+00 1.02690620e+00 1.02510785e+00 1.02331100e+00 + 1.02151562e+00 1.01972174e+00 1.01792935e+00 1.01613844e+00 1.01434902e+00 + 1.01256110e+00 1.01077466e+00 1.00898971e+00 1.00720626e+00 1.00542429e+00 + 1.00364382e+00 1.00186484e+00 1.00008735e+00 9.98311355e-01 9.96536852e-01 + 9.94763842e-01 9.92992326e-01 9.91222304e-01 9.89453777e-01 9.87686744e-01 + 9.85921207e-01 9.84157165e-01 9.82394619e-01 9.80633570e-01 9.78874017e-01 + 9.77115962e-01 9.75359404e-01 9.73604344e-01 9.71850782e-01 9.70098719e-01 + 9.68348155e-01 9.66599090e-01 9.64851525e-01 9.63105460e-01 9.61360895e-01 + 9.59617832e-01 9.57876269e-01 9.56136208e-01 9.54397649e-01 9.52660593e-01 + 9.50925039e-01 9.49190988e-01 9.47458441e-01 9.45727397e-01 9.43997858e-01 + 9.42269823e-01 9.40543293e-01 9.38818268e-01 9.37094749e-01 9.35372736e-01 + 9.33652230e-01 9.31933230e-01 9.30215737e-01 9.28499752e-01 9.26785274e-01 + 9.25072305e-01 9.23360844e-01 9.21650893e-01 9.19942450e-01 9.18235517e-01 + 9.16530094e-01 9.14826182e-01 9.13123780e-01 9.11422890e-01 9.09723511e-01 + 9.08025644e-01 9.06329289e-01 9.04634446e-01 9.02941117e-01 9.01249300e-01 + 8.99558998e-01 8.97870209e-01 8.96182935e-01 8.94497176e-01 8.92812931e-01 + 8.91130202e-01 8.89448989e-01 8.87769292e-01 8.86091112e-01 8.84414448e-01 + 8.82739302e-01 8.81065673e-01 8.79393562e-01 8.77722970e-01 8.76053896e-01 + 8.74386341e-01 8.72720306e-01 8.71055790e-01 8.69392795e-01 8.67731320e-01 + 8.66071366e-01 8.64412932e-01 8.62756021e-01 8.61100631e-01 8.59446764e-01 + 8.57794419e-01 8.56143597e-01 8.54494298e-01 8.52846523e-01 8.51200272e-01 + 8.49555545e-01 8.47912343e-01 8.46270666e-01 8.44630515e-01 8.42991889e-01 + 8.41354789e-01 8.39719216e-01 8.38085170e-01 8.36452650e-01 8.34821658e-01 + 8.33192195e-01 8.31564259e-01 8.29937852e-01 8.28312973e-01 8.26689624e-01 + 8.25067805e-01 8.23447515e-01 8.21828756e-01 8.20211528e-01 8.18595830e-01 + 8.16981664e-01 8.15369029e-01 8.13757927e-01 8.12148357e-01 8.10540319e-01 + 8.08933815e-01 8.07328844e-01 8.05725406e-01 8.04123503e-01 8.02523135e-01 + 8.00924301e-01 7.99327002e-01 7.97731239e-01 7.96137011e-01 7.94544320e-01 + 7.92953165e-01 7.91363547e-01 7.89775466e-01 7.88188923e-01 7.86603918e-01 + 7.85020450e-01 7.83438522e-01 7.81858132e-01 7.80279281e-01 7.78701970e-01 + 7.77126199e-01 7.75551968e-01 7.73979278e-01 7.72408129e-01 7.70838521e-01 + 7.69270454e-01 7.67703930e-01 7.66138947e-01 7.64575508e-01 7.63013611e-01 + 7.61453258e-01 7.59894448e-01 7.58337182e-01 7.56781460e-01 7.55227283e-01 + 7.53674651e-01 7.52123565e-01 7.50574024e-01 7.49026029e-01 7.47479580e-01 + 7.45934678e-01 7.44391322e-01 7.42849514e-01 7.41309254e-01 7.39770542e-01 + 7.38233378e-01 7.36697762e-01 7.35163696e-01 7.33631179e-01 7.32100211e-01 + 7.30570794e-01 7.29042926e-01 7.27516610e-01 7.25991844e-01 7.24468629e-01 + 7.22946966e-01 7.21426855e-01 7.19908297e-01 7.18391291e-01 7.16875837e-01 + 7.15361937e-01 7.13849591e-01 7.12338798e-01 7.10829560e-01 7.09321876e-01 + 7.07815747e-01 7.06311174e-01 7.04808155e-01 7.03306693e-01 7.01806787e-01 + 7.00308437e-01 6.98811644e-01 6.97316408e-01 6.95822730e-01 6.94330610e-01 + 6.92840047e-01 6.91351043e-01 6.89863598e-01 6.88377712e-01 6.86893385e-01 + 6.85410618e-01 6.83929411e-01 6.82449765e-01 6.80971679e-01 6.79495154e-01 + 6.78020190e-01 6.76546789e-01 6.75074949e-01 6.73604671e-01 6.72135956e-01 + 6.70668804e-01 6.69203215e-01 6.67739189e-01 6.66276728e-01 6.64815830e-01 + 6.63356498e-01 6.61898730e-01 6.60442527e-01 6.58987889e-01 6.57534818e-01 + 6.56083312e-01 6.54633373e-01 6.53185001e-01 6.51738195e-01 6.50292957e-01 + 6.48849287e-01 6.47407184e-01 6.45966650e-01 6.44527685e-01 6.43090288e-01 + 6.41654460e-01 6.40220202e-01 6.38787514e-01 6.37356396e-01 6.35926849e-01 + 6.34498872e-01 6.33072467e-01 6.31647633e-01 6.30224370e-01 6.28802680e-01 + 6.27382561e-01 6.25964016e-01 6.24547043e-01 6.23131644e-01 6.21717818e-01 + 6.20305566e-01 6.18894889e-01 6.17485785e-01 6.16078257e-01 6.14672303e-01 + 6.13267925e-01 6.11865123e-01 6.10463897e-01 6.09064247e-01 6.07666173e-01 + 6.06269677e-01 6.04874758e-01 6.03481416e-01 6.02089652e-01 6.00699467e-01 + 5.99310859e-01 5.97923831e-01 5.96538381e-01 5.95154511e-01 5.93772221e-01 + 5.92391510e-01 5.91012380e-01 5.89634830e-01 5.88258861e-01 5.86884473e-01 + 5.85511667e-01 5.84140442e-01 5.82770800e-01 5.81402740e-01 5.80036262e-01 + 5.78671367e-01 5.77308056e-01 5.75946328e-01 5.74586184e-01 5.73227624e-01 + 5.71870649e-01 5.70515258e-01 5.69161453e-01 5.67809232e-01 5.66458597e-01 + 5.65109548e-01 5.63762086e-01 5.62416210e-01 5.61071920e-01 5.59729218e-01 + 5.58388103e-01 5.57048576e-01 5.55710636e-01 5.54374285e-01 5.53039523e-01 + 5.51706349e-01 5.50374764e-01 5.49044769e-01 5.47716364e-01 5.46389548e-01 + 5.45064323e-01 5.43740689e-01 5.42418645e-01 5.41098192e-01 5.39779331e-01 + 5.38462062e-01 5.37146385e-01 5.35832299e-01 5.34519807e-01 5.33208907e-01 + 5.31899601e-01 5.30591888e-01 5.29285769e-01 5.27981244e-01 5.26678313e-01 + 5.25376977e-01 5.24077235e-01 5.22779089e-01 5.21482538e-01 5.20187583e-01 + 5.18894224e-01 5.17602461e-01 5.16312295e-01 5.15023726e-01 5.13736754e-01 + 5.12451379e-01 5.11167602e-01 5.09885423e-01 5.08604843e-01 5.07325861e-01 + 5.06048477e-01 5.04772693e-01 5.03498508e-01 5.02225923e-01 5.00954938e-01 + 4.99685553e-01 4.98417769e-01 4.97151585e-01 4.95887003e-01 4.94624021e-01 + 4.93362642e-01 4.92102864e-01 4.90844689e-01 4.89588116e-01 4.88333145e-01 + 4.87079778e-01 4.85828014e-01 4.84577853e-01 4.83329297e-01 4.82082344e-01 + 4.80836996e-01 4.79593252e-01 4.78351114e-01 4.77110580e-01 4.75871652e-01 + 4.74634330e-01 4.73398614e-01 4.72164504e-01 4.70932001e-01 4.69701104e-01 + 4.68471815e-01 4.67244132e-01 4.66018058e-01 4.64793591e-01 4.63570733e-01 + 4.62349483e-01 4.61129842e-01 4.59911810e-01 4.58695387e-01 4.57480573e-01 + 4.56267369e-01 4.55055776e-01 4.53845792e-01 4.52637419e-01 4.51430658e-01 + 4.50225507e-01 4.49021967e-01 4.47820039e-01 4.46619724e-01 4.45421020e-01 + 4.44223928e-01 4.43028450e-01 4.41834584e-01 4.40642332e-01 4.39451693e-01 + 4.38262668e-01 4.37075256e-01 4.35889459e-01 4.34705277e-01 4.33522709e-01 + 4.32341757e-01 4.31162420e-01 4.29984698e-01 4.28808592e-01 4.27634102e-01 + 4.26461229e-01 4.25289972e-01 4.24120332e-01 4.22952310e-01 4.21785904e-01 + 4.20621116e-01 4.19457946e-01 4.18296395e-01 4.17136461e-01 4.15978147e-01 + 4.14821451e-01 4.13666374e-01 4.12512917e-01 4.11361080e-01 4.10210862e-01 + 4.09062265e-01 4.07915288e-01 4.06769932e-01 4.05626197e-01 4.04484083e-01 + 4.03343590e-01 4.02204719e-01 4.01067470e-01 3.99931844e-01 3.98797839e-01 + 3.97665458e-01 3.96534699e-01 3.95405564e-01 3.94278052e-01 3.93152164e-01 + 3.92027900e-01 3.90905259e-01 3.89784244e-01 3.88664853e-01 3.87547087e-01 + 3.86430946e-01 3.85316431e-01 3.84203541e-01 3.83092278e-01 3.81982640e-01 + 3.80874629e-01 3.79768245e-01 3.78663487e-01 3.77560357e-01 3.76458854e-01 + 3.75358979e-01 3.74260731e-01 3.73164112e-01 3.72069121e-01 3.70975759e-01 + 3.69884025e-01 3.68793921e-01 3.67705446e-01 3.66618601e-01 3.65533385e-01 + 3.64449799e-01 3.63367844e-01 3.62287520e-01 3.61208826e-01 3.60131763e-01 + 3.59056331e-01 3.57982531e-01 3.56910363e-01 3.55839826e-01 3.54770922e-01 + 3.53703650e-01 3.52638011e-01 3.51574005e-01 3.50511632e-01 3.49450892e-01 + 3.48391786e-01 3.47334314e-01 3.46278476e-01 3.45224272e-01 3.44171703e-01 + 3.43120769e-01 3.42071469e-01 3.41023805e-01 3.39977776e-01 3.38933384e-01 + 3.37890627e-01 3.36849506e-01 3.35810021e-01 3.34772174e-01 3.33735963e-01 + 3.32701389e-01 3.31668453e-01 3.30637154e-01 3.29607493e-01 3.28579470e-01 + 3.27553085e-01 3.26528339e-01 3.25505231e-01 3.24483762e-01 3.23463933e-01 + 3.22445743e-01 3.21429192e-01 3.20414282e-01 3.19401011e-01 3.18389381e-01 + 3.17379391e-01 3.16371042e-01 3.15364334e-01 3.14359267e-01 3.13355841e-01 + 3.12354057e-01 3.11353915e-01 3.10355415e-01 3.09358557e-01 3.08363342e-01 + 3.07369770e-01 3.06377840e-01 3.05387554e-01 3.04398911e-01 3.03411912e-01 + 3.02426556e-01 3.01442845e-01 3.00460777e-01 2.99480355e-01 2.98501577e-01 + 2.97524444e-01 2.96548956e-01 2.95575113e-01 2.94602916e-01 2.93632365e-01 + 2.92663460e-01 2.91696201e-01 2.90730589e-01 2.89766623e-01 2.88804304e-01 + 2.87843632e-01 2.86884607e-01 2.85927230e-01 2.84971501e-01 2.84017420e-01 + 2.83064986e-01 2.82114201e-01 2.81165065e-01 2.80217578e-01 2.79271739e-01 + 2.78327550e-01 2.77385010e-01 2.76444119e-01 2.75504879e-01 2.74567288e-01 + 2.73631348e-01 2.72697059e-01 2.71764419e-01 2.70833431e-01 2.69904094e-01 + 2.68976408e-01 2.68050374e-01 2.67125991e-01 2.66203261e-01 2.65282182e-01 + 2.64362756e-01 2.63444982e-01 2.62528861e-01 2.61614393e-01 2.60701578e-01 + 2.59790416e-01 2.58880908e-01 2.57973054e-01 2.57066853e-01 2.56162307e-01 + 2.55259415e-01 2.54358178e-01 2.53458595e-01 2.52560668e-01 2.51664395e-01 + 2.50769778e-01 2.49876816e-01 2.48985511e-01 2.48095861e-01 2.47207867e-01 + 2.46321530e-01 2.45436849e-01 2.44553825e-01 2.43672457e-01 2.42792747e-01 + 2.41914695e-01 2.41038300e-01 2.40163562e-01 2.39290483e-01 2.38419061e-01 + 2.37549298e-01 2.36681193e-01 2.35814748e-01 2.34949961e-01 2.34086833e-01 + 2.33225364e-01 2.32365555e-01 2.31507405e-01 2.30650916e-01 2.29796086e-01 + 2.28942916e-01 2.28091407e-01 2.27241559e-01 2.26393372e-01 2.25546845e-01 + 2.24701980e-01 2.23858776e-01 2.23017233e-01 2.22177352e-01 2.21339134e-01 + 2.20502577e-01 2.19667682e-01 2.18834451e-01 2.18002881e-01 2.17172975e-01 + 2.16344732e-01 2.15518152e-01 2.14693235e-01 2.13869982e-01 2.13048393e-01 + 2.12228468e-01 2.11410207e-01 2.10593610e-01 2.09778678e-01 2.08965410e-01 + 2.08153807e-01 2.07343870e-01 2.06535598e-01 2.05728991e-01 2.04924049e-01 + 2.04120774e-01 2.03319164e-01 2.02519221e-01 2.01720944e-01 2.00924334e-01 + 2.00129390e-01 1.99336113e-01 1.98544503e-01 1.97754560e-01 1.96966285e-01 + 1.96179677e-01 1.95394737e-01 1.94611465e-01 1.93829861e-01 1.93049925e-01 + 1.92271658e-01 1.91495059e-01 1.90720129e-01 1.89946869e-01 1.89175277e-01 + 1.88405354e-01 1.87637101e-01 1.86870518e-01 1.86105605e-01 1.85342361e-01 + 1.84580788e-01 1.83820885e-01 1.83062653e-01 1.82306091e-01 1.81551200e-01 + 1.80797980e-01 1.80046431e-01 1.79296554e-01 1.78548348e-01 1.77801814e-01 + 1.77056952e-01 1.76313762e-01 1.75572244e-01 1.74832398e-01 1.74094225e-01 + 1.73357725e-01 1.72622897e-01 1.71889743e-01 1.71158261e-01 1.70428453e-01 + 1.69700319e-01 1.68973858e-01 1.68249071e-01 1.67525958e-01 1.66804519e-01 + 1.66084755e-01 1.65366665e-01 1.64650249e-01 1.63935509e-01 1.63222443e-01 + 1.62511053e-01 1.61801338e-01 1.61093298e-01 1.60386934e-01 1.59682246e-01 + 1.58979233e-01 1.58277897e-01 1.57578237e-01 1.56880253e-01 1.56183946e-01 + 1.55489316e-01 1.54796362e-01 1.54105086e-01 1.53415486e-01 1.52727564e-01 + 1.52041320e-01 1.51356753e-01 1.50673864e-01 1.49992653e-01 1.49313120e-01 + 1.48635265e-01 1.47959088e-01 1.47284591e-01 1.46611771e-01 1.45940631e-01 + 1.45271170e-01 1.44603388e-01 1.43937285e-01 1.43272862e-01 1.42610118e-01 + 1.41949054e-01 1.41289670e-01 1.40631966e-01 1.39975942e-01 1.39321598e-01 + 1.38668935e-01 1.38017953e-01 1.37368652e-01 1.36721031e-01 1.36075091e-01 + 1.35430833e-01 1.34788256e-01 1.34147361e-01 1.33508147e-01 1.32870615e-01 + 1.32234765e-01 1.31600597e-01 1.30968111e-01 1.30337308e-01 1.29708187e-01 + 1.29080749e-01 1.28454994e-01 1.27830921e-01 1.27208532e-01 1.26587826e-01 + 1.25968803e-01 1.25351464e-01 1.24735808e-01 1.24121836e-01 1.23509548e-01 + 1.22898944e-01 1.22290024e-01 1.21682789e-01 1.21077238e-01 1.20473372e-01 + 1.19871190e-01 1.19270693e-01 1.18671881e-01 1.18074755e-01 1.17479313e-01 + 1.16885558e-01 1.16293487e-01 1.15703102e-01 1.15114403e-01 1.14527390e-01 + 1.13942064e-01 1.13358423e-01 1.12776468e-01 1.12196200e-01 1.11617619e-01 + 1.11040725e-01 1.10465517e-01 1.09891996e-01 1.09320162e-01 1.08750016e-01 + 1.08181557e-01 1.07614785e-01 1.07049701e-01 1.06486305e-01 1.05924597e-01 + 1.05364577e-01 1.04806244e-01 1.04249601e-01 1.03694645e-01 1.03141378e-01 + 1.02589800e-01 1.02039910e-01 1.01491709e-01 1.00945198e-01 1.00400375e-01 + 9.98572416e-02 9.93157976e-02 9.87760431e-02 9.82379782e-02 9.77016030e-02 + 9.71669178e-02 9.66339224e-02 9.61026172e-02 9.55730022e-02 9.50450776e-02 + 9.45188434e-02 9.39942997e-02 9.34714468e-02 9.29502847e-02 9.24308135e-02 + 9.19130333e-02 9.13969443e-02 9.08825466e-02 9.03698403e-02 8.98588255e-02 + 8.93495023e-02 8.88418708e-02 8.83359312e-02 8.78316836e-02 8.73291281e-02 + 8.68282647e-02 8.63290937e-02 8.58316150e-02 8.53358290e-02 8.48417355e-02 + 8.43493348e-02 8.38586270e-02 8.33696121e-02 8.28822904e-02 8.23966618e-02 + 8.19127265e-02 8.14304847e-02 8.09499364e-02 8.04710817e-02 7.99939207e-02 + 7.95184537e-02 7.90446805e-02 7.85726014e-02 7.81022165e-02 7.76335259e-02 + 7.71665296e-02 7.67012279e-02 7.62376207e-02 7.57757082e-02 7.53154905e-02 + 7.48569677e-02 7.44001400e-02 7.39450073e-02 7.34915699e-02 7.30398277e-02 + 7.25897810e-02 7.21414298e-02 7.16947743e-02 7.12498144e-02 7.08065504e-02 + 7.03649822e-02 6.99251102e-02 6.94869342e-02 6.90504544e-02 6.86156710e-02 + 6.81825840e-02 6.77511935e-02 6.73214996e-02 6.68935024e-02 6.64672020e-02 + 6.60425985e-02 6.56196920e-02 6.51984826e-02 6.47789704e-02 6.43611555e-02 + 6.39450379e-02 6.35306178e-02 6.31178953e-02 6.27068704e-02 6.22975433e-02 + 6.18899141e-02 6.14839827e-02 6.10797494e-02 6.06772142e-02 6.02763772e-02 + 5.98772385e-02 5.94797982e-02 5.90840564e-02 5.86900131e-02 5.82976685e-02 + 5.79070227e-02 5.75180757e-02 5.71308276e-02 5.67452785e-02 5.63614285e-02 + 5.59792777e-02 5.55988261e-02 5.52200739e-02 5.48430212e-02 5.44676679e-02 + 5.40940143e-02 5.37220604e-02 5.33518062e-02 5.29832520e-02 5.26163976e-02 + 5.22512433e-02 5.18877891e-02 5.15260351e-02 5.11659814e-02 5.08076280e-02 + 5.04509751e-02 5.00960227e-02 4.97427708e-02 4.93912197e-02 4.90413693e-02 + 4.86932198e-02 4.83467711e-02 4.80020235e-02 4.76589769e-02 4.73176315e-02 + 4.69779873e-02 4.66400444e-02 4.63038029e-02 4.59692628e-02 4.56364243e-02 + 4.53052874e-02 4.49758521e-02 4.46481186e-02 4.43220870e-02 4.39977572e-02 + 4.36751294e-02 4.33542037e-02 4.30349801e-02 4.27174587e-02 4.24016395e-02 + 4.20875227e-02 4.17751083e-02 4.14643964e-02 4.11553870e-02 4.08480802e-02 + 4.05424762e-02 4.02385749e-02 3.99363764e-02 3.96358808e-02 3.93370881e-02 + 3.90399985e-02 3.87446120e-02 3.84509287e-02 3.81589486e-02 3.78686718e-02 + 3.75800983e-02 3.72932283e-02 3.70080618e-02 3.67245988e-02 3.64428394e-02 + 3.61627838e-02 3.58844318e-02 3.56077837e-02 3.53328395e-02 3.50595992e-02 + 3.47880629e-02 3.45182306e-02 3.42501025e-02 3.39836786e-02 3.37189589e-02 + 3.34559435e-02 3.31946324e-02 3.29350258e-02 3.26771236e-02 3.24209260e-02 + 3.21664330e-02 3.19136446e-02 3.16625610e-02 3.14131821e-02 3.11655080e-02 + 3.09195388e-02 3.06752746e-02 3.04327153e-02 3.01918611e-02 2.99527120e-02 + 2.97152680e-02 2.94795292e-02 2.92454957e-02 2.90131675e-02 2.87825447e-02 + 2.85536273e-02 2.83264153e-02 2.81009089e-02 2.78771081e-02 2.76550128e-02 + 2.74346233e-02 2.72159395e-02 2.69989614e-02 2.67836892e-02 2.65701228e-02 + 2.63582623e-02 2.61481079e-02 2.59396594e-02 2.57329170e-02 2.55278807e-02 + 2.53245505e-02 2.51229266e-02 2.49230089e-02 2.47247975e-02 2.45282924e-02 + 2.43334937e-02 2.41404014e-02 2.39490156e-02 2.37593363e-02 2.35713636e-02 + 2.33850975e-02 2.32005380e-02 2.30176851e-02 2.28365390e-02 2.26570997e-02 + 2.24793672e-02 2.23033415e-02 2.21290227e-02 2.19564108e-02 2.17855059e-02 + 2.16163080e-02 2.14488171e-02 2.12830333e-02 2.11189566e-02 2.09565871e-02 + 2.07959248e-02 2.06369696e-02 2.04797218e-02 2.03241812e-02 2.01703480e-02 + 2.00182221e-02 1.98678037e-02 1.97190927e-02 1.95720891e-02 1.94267931e-02 + 1.92832045e-02 1.91413236e-02 1.90011502e-02 1.88626845e-02 1.87259265e-02 + 1.85908761e-02 1.84575335e-02 1.83258986e-02 1.81959715e-02 1.80677522e-02 + 1.79412408e-02 1.78164372e-02 1.76933415e-02 1.75719538e-02 1.74522740e-02 + 1.73343022e-02 1.72180384e-02 1.71034827e-02 1.69906350e-02 1.68794954e-02 + 1.67700639e-02 1.66623405e-02 1.65563253e-02 1.64520183e-02 1.63494195e-02 + 1.62485289e-02 1.61493466e-02 1.60518726e-02 1.59561068e-02 1.58620494e-02 + 1.57697003e-02 1.56790596e-02 1.55901273e-02 1.55029034e-02 1.54173879e-02 + 1.53335808e-02 1.52514822e-02 1.51710921e-02 1.50924105e-02 1.50154374e-02 + 1.49401728e-02 1.48666168e-02 1.47947694e-02 1.47246305e-02 1.46562002e-02 + 1.45894786e-02 1.45244656e-02 1.44611612e-02 1.43995655e-02 1.43396785e-02 + 1.42815001e-02 1.42250305e-02 1.41702695e-02 1.41172173e-02 1.40658738e-02 + 1.40162391e-02 1.39683132e-02 1.39220960e-02 1.38775876e-02 1.38347880e-02 + 1.37936971e-02 1.37543151e-02 1.37166420e-02 1.36806776e-02 1.36464221e-02 + 1.36138754e-02 1.35830376e-02 1.35539086e-02 1.35264885e-02 1.35007773e-02 + 1.34767750e-02 1.34544815e-02 1.34338969e-02 1.34150212e-02 1.33978544e-02 + 1.33823966e-02 1.33686476e-02 1.33566075e-02 1.33462763e-02 1.33376541e-02 + 1.33307407e-02 1.33255363e-02 1.33220408e-02 1.33202542e-02 1.33201765e-02 + 1.33218078e-02 1.33251480e-02 1.33301970e-02 1.33369550e-02 1.33454220e-02 + 1.33555978e-02 1.33674825e-02 1.33810762e-02 1.33963787e-02 1.34133902e-02 + 1.34321105e-02 1.34525397e-02 1.34746779e-02 1.34985249e-02 1.35240808e-02 + 1.35513455e-02 1.35803192e-02 1.36110016e-02 1.36433930e-02 1.36774932e-02 + 1.37133022e-02 1.37508200e-02 1.37900467e-02 1.38309822e-02 1.38736265e-02 + 1.39179796e-02 1.39640414e-02 1.40118121e-02 1.40612914e-02 1.41124796e-02 + 1.41653765e-02 1.42199821e-02 1.42762964e-02 1.43343194e-02 1.43940512e-02 + 1.44554916e-02 1.45186406e-02 1.45834983e-02 1.46500646e-02 1.47183396e-02 + 1.47883231e-02 1.48600153e-02 1.49334160e-02 1.50085252e-02 1.50853430e-02 + 1.51638693e-02 1.52441041e-02 1.53260474e-02 1.54096992e-02 1.54950594e-02 + 1.55821280e-02 1.56709051e-02 1.57613905e-02 1.58535843e-02 1.59474864e-02 + 1.60430969e-02 1.61404156e-02 1.62394427e-02 1.63401780e-02 1.64426215e-02 + 1.65467732e-02 1.66526331e-02 1.67602012e-02 1.68694775e-02 1.69804618e-02 + 1.70931542e-02 1.72075547e-02 1.73236633e-02 1.74414798e-02 1.75610043e-02 + 1.76822368e-02 1.78051772e-02 1.79298256e-02 1.80561818e-02 1.81842458e-02 + 1.83140177e-02 1.84454973e-02 1.85786847e-02 1.87135798e-02 1.88501827e-02 + 1.89884931e-02 1.91285113e-02 1.92702370e-02 1.94136703e-02 1.95588111e-02 + 1.97056595e-02 1.98542153e-02 2.00044786e-02 2.01564492e-02 2.03101272e-02 + 2.04655126e-02 2.06226053e-02 2.07814052e-02 2.09419123e-02 2.11041267e-02 + 2.12680482e-02 2.14336768e-02 2.16010125e-02 2.17700553e-02 2.19408050e-02 + 2.21132617e-02 2.22874254e-02 2.24632959e-02 2.26408733e-02 2.28201575e-02 + 2.30011484e-02 2.31838461e-02 2.33682505e-02 2.35543615e-02 2.37421791e-02 + 2.39317033e-02 2.41229339e-02 2.43158711e-02 2.45105147e-02 2.47068647e-02 + 2.49049210e-02 2.51046836e-02 2.53061524e-02 2.55093275e-02 2.57142087e-02 + 2.59207960e-02 2.61290894e-02 2.63390888e-02 2.65507942e-02 2.67642055e-02 + 2.69793227e-02 2.71961457e-02 2.74146744e-02 2.76349090e-02 2.78568491e-02 + 2.80804949e-02 2.83058463e-02 2.85329032e-02 2.87616656e-02 2.89921334e-02 + 2.92243066e-02 2.94581851e-02 2.96937689e-02 2.99310578e-02 3.01700520e-02 + 3.04107512e-02 3.06531555e-02 3.08972648e-02 3.11430790e-02 3.13905981e-02 + 3.16398220e-02 3.18907507e-02 3.21433841e-02 3.23977222e-02 3.26537648e-02 + 3.29115120e-02 3.31709637e-02 3.34321199e-02 3.36949803e-02 3.39595451e-02 + 3.42258142e-02 3.44937874e-02 3.47634647e-02 3.50348461e-02 3.53079315e-02 + 3.55827209e-02 3.58592141e-02 3.61374112e-02 3.64173120e-02 3.66989165e-02 + 3.69822246e-02 3.72672363e-02 3.75539515e-02 3.78423701e-02 3.81324920e-02 + 3.84243173e-02 3.87178458e-02 3.90130775e-02 3.93100123e-02 3.96086502e-02 + 3.99089910e-02 4.02110347e-02 4.05147812e-02 4.08202305e-02 4.11273825e-02 + 4.14362371e-02 4.17467942e-02 4.20590539e-02 4.23730160e-02 4.26886804e-02 + 4.30060471e-02 4.33251159e-02 4.36458870e-02 4.39683600e-02 4.42925351e-02 + 4.46184120e-02 4.49459908e-02 4.52752714e-02 4.56062536e-02 4.59389375e-02 + 4.62733229e-02 4.66094097e-02 4.69471980e-02 4.72866875e-02 4.76278783e-02 + 4.79707703e-02 4.83153633e-02 4.86616573e-02 4.90096522e-02 4.93593480e-02 + 4.97107446e-02 5.00638418e-02 5.04186396e-02 5.07751380e-02 5.11333368e-02 + 5.14932360e-02 5.18548354e-02 5.22181351e-02 5.25831349e-02 5.29498347e-02 + 5.33182344e-02 5.36883341e-02 5.40601335e-02 5.44336326e-02 5.48088313e-02 + 5.51857296e-02 5.55643273e-02 5.59446244e-02 5.63266207e-02 5.67103163e-02 + 5.70957109e-02 5.74828046e-02 5.78715972e-02 5.82620886e-02 5.86542788e-02 + 5.90481677e-02 5.94437551e-02 5.98410410e-02 6.02400253e-02 6.06407080e-02 + 6.10430888e-02 6.14471678e-02 6.18529447e-02 6.22604197e-02 6.26695925e-02 + 6.30804630e-02 6.34930312e-02 6.39072970e-02 6.43232602e-02 6.47409209e-02 + 6.51602788e-02 6.55813340e-02 6.60040862e-02 6.64285354e-02 6.68546816e-02 + 6.72825245e-02 6.77120642e-02 6.81433005e-02 6.85762333e-02 6.90108625e-02 + 6.94471881e-02 6.98852099e-02 7.03249278e-02 7.07663417e-02 7.12094516e-02 + 7.16542573e-02 7.21007588e-02 7.25489558e-02 7.29988484e-02 7.34504365e-02 + 7.39037198e-02 7.43586984e-02 7.48153721e-02 7.52737408e-02 7.57338044e-02 + 7.61955628e-02 7.66590160e-02 7.71241637e-02 7.75910059e-02 7.80595425e-02 + 7.85297734e-02 7.90016985e-02 7.94753177e-02 7.99506308e-02 8.04276378e-02 + 8.09063385e-02 8.13867329e-02 8.18688208e-02 8.23526021e-02 8.28380768e-02 + 8.33252446e-02 8.38141056e-02 8.43046595e-02 8.47969063e-02 8.52908459e-02 + 8.57864782e-02 8.62838029e-02 8.67828201e-02 8.72835297e-02 8.77859314e-02 + 8.82900252e-02 8.87958110e-02 8.93032887e-02 8.98124581e-02 9.03233191e-02 + 9.08358717e-02 9.13501157e-02 9.18660509e-02 9.23836774e-02 9.29029949e-02 + 9.34240033e-02 9.39467025e-02 9.44710925e-02 9.49971730e-02 9.55249440e-02 + 9.60544054e-02 9.65855570e-02 9.71183987e-02 9.76529303e-02 9.81891519e-02 + 9.87270632e-02 9.92666641e-02 9.98079545e-02 1.00350934e-01 1.00895603e-01 + 1.01441962e-01 1.01990009e-01 1.02539745e-01 1.03091170e-01 1.03644283e-01 + 1.04199085e-01 1.04755576e-01 1.05313754e-01 1.05873621e-01 1.06435176e-01 + 1.06998419e-01 1.07563349e-01 1.08129968e-01 1.08698273e-01 1.09268266e-01 + 1.09839947e-01 1.10413314e-01 1.10988368e-01 1.11565110e-01 1.12143538e-01 + 1.12723652e-01 1.13305453e-01 1.13888941e-01 1.14474115e-01 1.15060974e-01 + 1.15649520e-01 1.16239751e-01 1.16831669e-01 1.17425271e-01 1.18020560e-01 + 1.18617533e-01 1.19216192e-01 1.19816535e-01 1.20418564e-01 1.21022277e-01 + 1.21627675e-01 1.22234757e-01 1.22843524e-01 1.23453975e-01 1.24066109e-01 + 1.24679928e-01 1.25295431e-01 1.25912617e-01 1.26531487e-01 1.27152040e-01 + 1.27774276e-01 1.28398196e-01 1.29023798e-01 1.29651083e-01 1.30280051e-01 + 1.30910702e-01 1.31543034e-01 1.32177050e-01 1.32812747e-01 1.33450126e-01 + 1.34089187e-01 1.34729929e-01 1.35372353e-01 1.36016459e-01 1.36662246e-01 + 1.37309713e-01 1.37958862e-01 1.38609692e-01 1.39262202e-01 1.39916393e-01 + 1.40572264e-01 1.41229815e-01 1.41889046e-01 1.42549958e-01 1.43212549e-01 + 1.43876819e-01 1.44542770e-01 1.45210399e-01 1.45879708e-01 1.46550695e-01 + 1.47223362e-01 1.47897707e-01 1.48573731e-01 1.49251433e-01 1.49930814e-01 + 1.50611872e-01 1.51294609e-01 1.51979023e-01 1.52665115e-01 1.53352885e-01 + 1.54042332e-01 1.54733456e-01 1.55426257e-01 1.56120735e-01 1.56816890e-01 + 1.57514721e-01 1.58214229e-01 1.58915413e-01 1.59618273e-01 1.60322809e-01 + 1.61029020e-01 1.61736908e-01 1.62446471e-01 1.63157709e-01 1.63870622e-01 + 1.64585210e-01 1.65301473e-01 1.66019411e-01 1.66739023e-01 1.67460310e-01 + 1.68183271e-01 1.68907906e-01 1.69634214e-01 1.70362197e-01 1.71091853e-01 + 1.71823182e-01 1.72556184e-01 1.73290860e-01 1.74027208e-01 1.74765229e-01 + 1.75504923e-01 1.76246289e-01 1.76989327e-01 1.77734037e-01 1.78480419e-01 + 1.79228473e-01 1.79978199e-01 1.80729595e-01 1.81482663e-01 1.82237402e-01 + 1.82993812e-01 1.83751893e-01 1.84511644e-01 1.85273065e-01 1.86036157e-01 + 1.86800919e-01 1.87567350e-01 1.88335451e-01 1.89105222e-01 1.89876662e-01 + 1.90649771e-01 1.91424549e-01 1.92200996e-01 1.92979112e-01 1.93758896e-01 + 1.94540348e-01 1.95323469e-01 1.96108257e-01 1.96894713e-01 1.97682837e-01 + 1.98472628e-01 1.99264087e-01 2.00057212e-01 2.00852004e-01 2.01648463e-01 + 2.02446589e-01 2.03246381e-01 2.04047839e-01 2.04850963e-01 2.05655753e-01 + 2.06462208e-01 2.07270329e-01 2.08080115e-01 2.08891567e-01 2.09704683e-01 + 2.10519464e-01 2.11335909e-01 2.12154019e-01 2.12973793e-01 2.13795231e-01 + 2.14618333e-01 2.15443098e-01 2.16269527e-01 2.17097619e-01 2.17927374e-01 + 2.18758792e-01 2.19591873e-01 2.20426616e-01 2.21263022e-01 2.22101090e-01 + 2.22940819e-01 2.23782211e-01 2.24625264e-01 2.25469978e-01 2.26316354e-01 + 2.27164390e-01 2.28014088e-01 2.28865446e-01 2.29718464e-01 2.30573143e-01 + 2.31429482e-01 2.32287480e-01 2.33147139e-01 2.34008457e-01 2.34871434e-01 + 2.35736070e-01 2.36602365e-01 2.37470319e-01 2.38339931e-01 2.39211202e-01 + 2.40084131e-01 2.40958717e-01 2.41834962e-01 2.42712864e-01 2.43592423e-01 + 2.44473640e-01 2.45356513e-01 2.46241044e-01 2.47127230e-01 2.48015074e-01 + 2.48904573e-01 2.49795728e-01 2.50688539e-01 2.51583006e-01 2.52479128e-01 + 2.53376905e-01 2.54276337e-01 2.55177424e-01 2.56080166e-01 2.56984562e-01 + 2.57890612e-01 2.58798316e-01 2.59707674e-01 2.60618685e-01 2.61531350e-01 + 2.62445667e-01 2.63361638e-01 2.64279262e-01 2.65198538e-01 2.66119466e-01 + 2.67042047e-01 2.67966279e-01 2.68892164e-01 2.69819699e-01 2.70748886e-01 + 2.71679724e-01 2.72612213e-01 2.73546353e-01 2.74482143e-01 2.75419584e-01 + 2.76358674e-01 2.77299415e-01 2.78241805e-01 2.79185844e-01 2.80131533e-01 + 2.81078870e-01 2.82027857e-01 2.82978492e-01 2.83930775e-01 2.84884707e-01 + 2.85840287e-01 2.86797514e-01 2.87756389e-01 2.88716911e-01 2.89679080e-01 + 2.90642896e-01 2.91608359e-01 2.92575468e-01 2.93544224e-01 2.94514625e-01 + 2.95486673e-01 2.96460366e-01 2.97435704e-01 2.98412687e-01 2.99391316e-01 + 3.00371589e-01 3.01353507e-01 3.02337069e-01 3.03322275e-01 3.04309125e-01 + 3.05297618e-01 3.06287755e-01 3.07279535e-01 3.08272958e-01 3.09268024e-01 + 3.10264733e-01 3.11263084e-01 3.12263076e-01 3.13264711e-01 3.14267987e-01 + 3.15272905e-01 3.16279464e-01 3.17287664e-01 3.18297505e-01 3.19308986e-01 + 3.20322108e-01 3.21336869e-01 3.22353271e-01 3.23371312e-01 3.24390992e-01 + 3.25412312e-01 3.26435271e-01 3.27459868e-01 3.28486104e-01 3.29513978e-01 + 3.30543490e-01 3.31574640e-01 3.32607428e-01 3.33641852e-01 3.34677914e-01 + 3.35715613e-01 3.36754949e-01 3.37795921e-01 3.38838529e-01 3.39882774e-01 + 3.40928653e-01 3.41976169e-01 3.43025320e-01 3.44076105e-01 3.45128526e-01 + 3.46182581e-01 3.47238271e-01 3.48295594e-01 3.49354552e-01 3.50415143e-01 + 3.51477368e-01 3.52541225e-01 3.53606716e-01 3.54673839e-01 3.55742595e-01 + 3.56812983e-01 3.57885003e-01 3.58958655e-01 3.60033939e-01 3.61110853e-01 + 3.62189399e-01 3.63269575e-01 3.64351382e-01 3.65434820e-01 3.66519887e-01 + 3.67606584e-01 3.68694911e-01 3.69784868e-01 3.70876453e-01 3.71969667e-01 + 3.73064510e-01 3.74160981e-01 3.75259081e-01 3.76358808e-01 3.77460163e-01 + 3.78563145e-01 3.79667755e-01 3.80773992e-01 3.81881855e-01 3.82991344e-01 + 3.84102460e-01 3.85215202e-01 3.86329570e-01 3.87445563e-01 3.88563181e-01 + 3.89682424e-01 3.90803292e-01 3.91925784e-01 3.93049901e-01 3.94175642e-01 + 3.95303006e-01 3.96431994e-01 3.97562605e-01 3.98694839e-01 3.99828696e-01 + 4.00964175e-01 4.02101276e-01 4.03240000e-01 4.04380345e-01 4.05522312e-01 + 4.06665899e-01 4.07811108e-01 4.08957938e-01 4.10106388e-01 4.11256458e-01 + 4.12408148e-01 4.13561458e-01 4.14716388e-01 4.15872936e-01 4.17031104e-01 + 4.18190890e-01 4.19352295e-01 4.20515317e-01 4.21679958e-01 4.22846216e-01 + 4.24014092e-01 4.25183585e-01 4.26354695e-01 4.27527421e-01 4.28701764e-01 + 4.29877723e-01 4.31055298e-01 4.32234488e-01 4.33415294e-01 4.34597715e-01 + 4.35781751e-01 4.36967401e-01 4.38154665e-01 4.39343544e-01 4.40534036e-01 + 4.41726142e-01 4.42919861e-01 4.44115193e-01 4.45312138e-01 4.46510695e-01 + 4.47710864e-01 4.48912645e-01 4.50116038e-01 4.51321043e-01 4.52527658e-01 + 4.53735885e-01 4.54945722e-01 4.56157169e-01 4.57370226e-01 4.58584894e-01 + 4.59801170e-01 4.61019056e-01 4.62238551e-01 4.63459655e-01 4.64682367e-01 + 4.65906688e-01 4.67132616e-01 4.68360152e-01 4.69589295e-01 4.70820046e-01 + 4.72052403e-01 4.73286367e-01 4.74521937e-01 4.75759113e-01 4.76997895e-01 + 4.78238283e-01 4.79480276e-01 4.80723873e-01 4.81969076e-01 4.83215882e-01 + 4.84464293e-01 4.85714308e-01 4.86965926e-01 4.88219148e-01 4.89473972e-01 + 4.90730400e-01 4.91988430e-01 4.93248062e-01 4.94509296e-01 4.95772131e-01 + 4.97036568e-01 4.98302606e-01 4.99570245e-01 5.00839485e-01 5.02110324e-01 + 5.03382764e-01 5.04656804e-01 5.05932442e-01 5.07209680e-01 5.08488517e-01 + 5.09768953e-01 5.11050986e-01 5.12334618e-01 5.13619847e-01 5.14906674e-01 + 5.16195098e-01 5.17485119e-01 5.18776737e-01 5.20069951e-01 5.21364761e-01 + 5.22661167e-01 5.23959168e-01 5.25258764e-01 5.26559955e-01 5.27862741e-01 + 5.29167122e-01 5.30473096e-01 5.31780664e-01 5.33089826e-01 5.34400580e-01 + 5.35712928e-01 5.37026868e-01 5.38342401e-01 5.39659526e-01 5.40978242e-01 + 5.42298550e-01 5.43620449e-01 5.44943939e-01 5.46269020e-01 5.47595691e-01 + 5.48923952e-01 5.50253802e-01 5.51585242e-01 5.52918272e-01 5.54252890e-01 + 5.55589096e-01 5.56926891e-01 5.58266274e-01 5.59607245e-01 5.60949803e-01 + 5.62293948e-01 5.63639680e-01 5.64986999e-01 5.66335903e-01 5.67686394e-01 + 5.69038470e-01 5.70392132e-01 5.71747378e-01 5.73104210e-01 5.74462626e-01 + 5.75822626e-01 5.77184210e-01 5.78547377e-01 5.79912128e-01 5.81278461e-01 + 5.82646378e-01 5.84015876e-01 5.85386957e-01 5.86759620e-01 5.88133864e-01 + 5.89509689e-01 5.90887095e-01 5.92266082e-01 5.93646649e-01 5.95028796e-01 + 5.96412522e-01 5.97797828e-01 5.99184713e-01 6.00573177e-01 6.01963219e-01 + 6.03354840e-01 6.04748038e-01 6.06142814e-01 6.07539167e-01 6.08937097e-01 + 6.10336603e-01 6.11737686e-01 6.13140346e-01 6.14544580e-01 6.15950391e-01 + 6.17357776e-01 6.18766736e-01 6.20177271e-01 6.21589379e-01 6.23003062e-01 + 6.24418319e-01 6.25835148e-01 6.27253551e-01 6.28673526e-01 6.30095073e-01 + 6.31518193e-01 6.32942884e-01 6.34369147e-01 6.35796981e-01 6.37226386e-01 + 6.38657361e-01 6.40089906e-01 6.41524022e-01 6.42959706e-01 6.44396960e-01 + 6.45835783e-01 6.47276175e-01 6.48718135e-01 6.50161663e-01 6.51606758e-01 + 6.53053421e-01 6.54501651e-01 6.55951448e-01 6.57402811e-01 6.58855740e-01 + 6.60310236e-01 6.61766296e-01 6.63223922e-01 6.64683112e-01 6.66143868e-01 + 6.67606187e-01 6.69070070e-01 6.70535517e-01 6.72002527e-01 6.73471100e-01 + 6.74941236e-01 6.76412934e-01 6.77886194e-01 6.79361015e-01 6.80837398e-01 + 1.38518338e-01 1.38476565e-01 1.38434740e-01 1.38392864e-01 1.38350938e-01 + 1.38308960e-01 1.38266931e-01 1.38224851e-01 1.38182720e-01 1.38140538e-01 + 1.38098305e-01 1.38056020e-01 1.38013684e-01 1.37971296e-01 1.37928857e-01 + 1.37886366e-01 1.37843824e-01 1.37801230e-01 1.37758585e-01 1.37715888e-01 + 1.37673139e-01 1.37630338e-01 1.37587486e-01 1.37544581e-01 1.37501625e-01 + 1.37458617e-01 1.37415556e-01 1.37372444e-01 1.37329279e-01 1.37286062e-01 + 1.37242794e-01 1.37199472e-01 1.37156099e-01 1.37112673e-01 1.37069195e-01 + 1.37025664e-01 1.36982081e-01 1.36938445e-01 1.36894757e-01 1.36851016e-01 + 1.36807222e-01 1.36763376e-01 1.36719477e-01 1.36675525e-01 1.36631520e-01 + 1.36587463e-01 1.36543352e-01 1.36499189e-01 1.36454972e-01 1.36410702e-01 + 1.36366380e-01 1.36322004e-01 1.36277574e-01 1.36233092e-01 1.36188556e-01 + 1.36143967e-01 1.36099325e-01 1.36054629e-01 1.36009880e-01 1.35965077e-01 + 1.35920221e-01 1.35875311e-01 1.35830347e-01 1.35785330e-01 1.35740259e-01 + 1.35695134e-01 1.35649956e-01 1.35604723e-01 1.35559437e-01 1.35514096e-01 + 1.35468702e-01 1.35423254e-01 1.35377752e-01 1.35332195e-01 1.35286585e-01 + 1.35240920e-01 1.35195201e-01 1.35149428e-01 1.35103600e-01 1.35057718e-01 + 1.35011782e-01 1.34965791e-01 1.34919746e-01 1.34873646e-01 1.34827492e-01 + 1.34781283e-01 1.34735020e-01 1.34688702e-01 1.34642329e-01 1.34595901e-01 + 1.34549419e-01 1.34502882e-01 1.34456290e-01 1.34409643e-01 1.34362941e-01 + 1.34316184e-01 1.34269372e-01 1.34222505e-01 1.34175583e-01 1.34128606e-01 + 1.34081573e-01 1.34034486e-01 1.33987343e-01 1.33940145e-01 1.33892892e-01 + 1.33845583e-01 1.33798219e-01 1.33750799e-01 1.33703324e-01 1.33655794e-01 + 1.33608207e-01 1.33560566e-01 1.33512869e-01 1.33465116e-01 1.33417307e-01 + 1.33369443e-01 1.33321523e-01 1.33273547e-01 1.33225515e-01 1.33177428e-01 + 1.33129285e-01 1.33081085e-01 1.33032830e-01 1.32984519e-01 1.32936152e-01 + 1.32887728e-01 1.32839249e-01 1.32790713e-01 1.32742122e-01 1.32693474e-01 + 1.32644770e-01 1.32596010e-01 1.32547193e-01 1.32498320e-01 1.32449391e-01 + 1.32400405e-01 1.32351363e-01 1.32302265e-01 1.32253110e-01 1.32203899e-01 + 1.32154631e-01 1.32105306e-01 1.32055925e-01 1.32006488e-01 1.31956993e-01 + 1.31907442e-01 1.31857835e-01 1.31808170e-01 1.31758449e-01 1.31708671e-01 + 1.31658836e-01 1.31608945e-01 1.31558996e-01 1.31508991e-01 1.31458929e-01 + 1.31408809e-01 1.31358633e-01 1.31308400e-01 1.31258110e-01 1.31207762e-01 + 1.31157358e-01 1.31106897e-01 1.31056378e-01 1.31005802e-01 1.30955169e-01 + 1.30904479e-01 1.30853732e-01 1.30802927e-01 1.30752065e-01 1.30701146e-01 + 1.30650170e-01 1.30599136e-01 1.30548045e-01 1.30496896e-01 1.30445690e-01 + 1.30394426e-01 1.30343106e-01 1.30291727e-01 1.30240291e-01 1.30188798e-01 + 1.30137247e-01 1.30085639e-01 1.30033973e-01 1.29982249e-01 1.29930468e-01 + 1.29878629e-01 1.29826732e-01 1.29774778e-01 1.29722766e-01 1.29670696e-01 + 1.29618569e-01 1.29566384e-01 1.29514141e-01 1.29461841e-01 1.29409482e-01 + 1.29357066e-01 1.29304592e-01 1.29252060e-01 1.29199470e-01 1.29146823e-01 + 1.29094117e-01 1.29041354e-01 1.28988533e-01 1.28935654e-01 1.28882717e-01 + 1.28829721e-01 1.28776668e-01 1.28723557e-01 1.28670388e-01 1.28617161e-01 + 1.28563876e-01 1.28510533e-01 1.28457132e-01 1.28403673e-01 1.28350156e-01 + 1.28296581e-01 1.28242948e-01 1.28189256e-01 1.28135507e-01 1.28081699e-01 + 1.28027834e-01 1.27973910e-01 1.27919928e-01 1.27865888e-01 1.27811790e-01 + 1.27757634e-01 1.27703420e-01 1.27649147e-01 1.27594816e-01 1.27540427e-01 + 1.27485980e-01 1.27431475e-01 1.27376912e-01 1.27322290e-01 1.27267611e-01 + 1.27212873e-01 1.27158077e-01 1.27103223e-01 1.27048310e-01 1.26993340e-01 + 1.26938311e-01 1.26883224e-01 1.26828079e-01 1.26772875e-01 1.26717614e-01 + 1.26662294e-01 1.26606916e-01 1.26551480e-01 1.26495986e-01 1.26440433e-01 + 1.26384823e-01 1.26329154e-01 1.26273427e-01 1.26217642e-01 1.26161799e-01 + 1.26105898e-01 1.26049938e-01 1.25993920e-01 1.25937845e-01 1.25881711e-01 + 1.25825519e-01 1.25769269e-01 1.25712961e-01 1.25656594e-01 1.25600170e-01 + 1.25543688e-01 1.25487147e-01 1.25430549e-01 1.25373892e-01 1.25317178e-01 + 1.25260405e-01 1.25203574e-01 1.25146686e-01 1.25089739e-01 1.25032735e-01 + 1.24975672e-01 1.24918552e-01 1.24861374e-01 1.24804137e-01 1.24746843e-01 + 1.24689491e-01 1.24632082e-01 1.24574614e-01 1.24517089e-01 1.24459505e-01 + 1.24401864e-01 1.24344166e-01 1.24286409e-01 1.24228595e-01 1.24170723e-01 + 1.24112794e-01 1.24054806e-01 1.23996762e-01 1.23938659e-01 1.23880499e-01 + 1.23822281e-01 1.23764006e-01 1.23705674e-01 1.23647284e-01 1.23588836e-01 + 1.23530331e-01 1.23471769e-01 1.23413149e-01 1.23354472e-01 1.23295737e-01 + 1.23236946e-01 1.23178097e-01 1.23119190e-01 1.23060227e-01 1.23001206e-01 + 1.22942129e-01 1.22882994e-01 1.22823802e-01 1.22764553e-01 1.22705247e-01 + 1.22645884e-01 1.22586464e-01 1.22526988e-01 1.22467454e-01 1.22407864e-01 + 1.22348217e-01 1.22288513e-01 1.22228752e-01 1.22168935e-01 1.22109061e-01 + 1.22049130e-01 1.21989143e-01 1.21929100e-01 1.21869000e-01 1.21808843e-01 + 1.21748630e-01 1.21688361e-01 1.21628036e-01 1.21567654e-01 1.21507216e-01 + 1.21446722e-01 1.21386172e-01 1.21325566e-01 1.21264904e-01 1.21204185e-01 + 1.21143411e-01 1.21082581e-01 1.21021696e-01 1.20960754e-01 1.20899757e-01 + 1.20838704e-01 1.20777596e-01 1.20716432e-01 1.20655212e-01 1.20593937e-01 + 1.20532607e-01 1.20471221e-01 1.20409780e-01 1.20348284e-01 1.20286733e-01 + 1.20225127e-01 1.20163465e-01 1.20101749e-01 1.20039978e-01 1.19978152e-01 + 1.19916271e-01 1.19854335e-01 1.19792345e-01 1.19730300e-01 1.19668200e-01 + 1.19606047e-01 1.19543838e-01 1.19481576e-01 1.19419259e-01 1.19356888e-01 + 1.19294463e-01 1.19231984e-01 1.19169450e-01 1.19106863e-01 1.19044222e-01 + 1.18981528e-01 1.18918779e-01 1.18855977e-01 1.18793122e-01 1.18730213e-01 + 1.18667250e-01 1.18604235e-01 1.18541166e-01 1.18478043e-01 1.18414868e-01 + 1.18351640e-01 1.18288359e-01 1.18225025e-01 1.18161638e-01 1.18098199e-01 + 1.18034707e-01 1.17971163e-01 1.17907566e-01 1.17843917e-01 1.17780216e-01 + 1.17716462e-01 1.17652656e-01 1.17588799e-01 1.17524889e-01 1.17460928e-01 + 1.17396915e-01 1.17332851e-01 1.17268735e-01 1.17204567e-01 1.17140349e-01 + 1.17076079e-01 1.17011757e-01 1.16947385e-01 1.16882962e-01 1.16818488e-01 + 1.16753964e-01 1.16689388e-01 1.16624762e-01 1.16560086e-01 1.16495360e-01 + 1.16430583e-01 1.16365756e-01 1.16300879e-01 1.16235952e-01 1.16170975e-01 + 1.16105949e-01 1.16040873e-01 1.15975748e-01 1.15910573e-01 1.15845349e-01 + 1.15780076e-01 1.15714754e-01 1.15649383e-01 1.15583963e-01 1.15518494e-01 + 1.15452977e-01 1.15387412e-01 1.15321798e-01 1.15256136e-01 1.15190426e-01 + 1.15124668e-01 1.15058862e-01 1.14993008e-01 1.14927107e-01 1.14861158e-01 + 1.14795162e-01 1.14729119e-01 1.14663029e-01 1.14596892e-01 1.14530707e-01 + 1.14464477e-01 1.14398199e-01 1.14331875e-01 1.14265505e-01 1.14199089e-01 + 1.14132627e-01 1.14066119e-01 1.13999565e-01 1.13932965e-01 1.13866320e-01 + 1.13799630e-01 1.13732894e-01 1.13666113e-01 1.13599288e-01 1.13532417e-01 + 1.13465503e-01 1.13398543e-01 1.13331539e-01 1.13264491e-01 1.13197399e-01 + 1.13130263e-01 1.13063084e-01 1.12995861e-01 1.12928594e-01 1.12861284e-01 + 1.12793931e-01 1.12726535e-01 1.12659096e-01 1.12591615e-01 1.12524091e-01 + 1.12456524e-01 1.12388916e-01 1.12321265e-01 1.12253573e-01 1.12185839e-01 + 1.12118063e-01 1.12050246e-01 1.11982388e-01 1.11914489e-01 1.11846549e-01 + 1.11778568e-01 1.11710547e-01 1.11642485e-01 1.11574383e-01 1.11506242e-01 + 1.11438060e-01 1.11369839e-01 1.11301578e-01 1.11233278e-01 1.11164939e-01 + 1.11096561e-01 1.11028144e-01 1.10959689e-01 1.10891195e-01 1.10822663e-01 + 1.10754093e-01 1.10685486e-01 1.10616840e-01 1.10548157e-01 1.10479437e-01 + 1.10410680e-01 1.10341886e-01 1.10273055e-01 1.10204188e-01 1.10135284e-01 + 1.10066345e-01 1.09997369e-01 1.09928358e-01 1.09859311e-01 1.09790229e-01 + 1.09721112e-01 1.09651960e-01 1.09582773e-01 1.09513552e-01 1.09444296e-01 + 1.09375007e-01 1.09305683e-01 1.09236326e-01 1.09166936e-01 1.09097512e-01 + 1.09028055e-01 1.08958566e-01 1.08889044e-01 1.08819489e-01 1.08749902e-01 + 1.08680284e-01 1.08610634e-01 1.08540952e-01 1.08471239e-01 1.08401495e-01 + 1.08331720e-01 1.08261914e-01 1.08192078e-01 1.08122212e-01 1.08052316e-01 + 1.07982391e-01 1.07912436e-01 1.07842452e-01 1.07772438e-01 1.07702397e-01 + 1.07632326e-01 1.07562227e-01 1.07492101e-01 1.07421946e-01 1.07351764e-01 + 1.07281555e-01 1.07211318e-01 1.07141055e-01 1.07070766e-01 1.07000449e-01 + 1.06930107e-01 1.06859739e-01 1.06789346e-01 1.06718927e-01 1.06648483e-01 + 1.06578015e-01 1.06507521e-01 1.06437004e-01 1.06366462e-01 1.06295897e-01 + 1.06225308e-01 1.06154696e-01 1.06084061e-01 1.06013403e-01 1.05942723e-01 + 1.05872021e-01 1.05801296e-01 1.05730551e-01 1.05659783e-01 1.05588995e-01 + 1.05518186e-01 1.05447356e-01 1.05376506e-01 1.05305636e-01 1.05234746e-01 + 1.05163837e-01 1.05092908e-01 1.05021961e-01 1.04950995e-01 1.04880011e-01 + 1.04809009e-01 1.04737989e-01 1.04666951e-01 1.04595897e-01 1.04524826e-01 + 1.04453738e-01 1.04382633e-01 1.04311513e-01 1.04240377e-01 1.04169226e-01 + 1.04098060e-01 1.04026878e-01 1.03955683e-01 1.03884473e-01 1.03813249e-01 + 1.03742012e-01 1.03670761e-01 1.03599498e-01 1.03528222e-01 1.03456933e-01 + 1.03385633e-01 1.03314321e-01 1.03242997e-01 1.03171662e-01 1.03100317e-01 + 1.03028961e-01 1.02957595e-01 1.02886219e-01 1.02814833e-01 1.02743439e-01 + 1.02672036e-01 1.02600624e-01 1.02529204e-01 1.02457776e-01 1.02386340e-01 + 1.02314898e-01 1.02243448e-01 1.02171992e-01 1.02100530e-01 1.02029062e-01 + 1.01957589e-01 1.01886110e-01 1.01814626e-01 1.01743138e-01 1.01671646e-01 + 1.01600150e-01 1.01528651e-01 1.01457148e-01 1.01385643e-01 1.01314135e-01 + 1.01242625e-01 1.01171114e-01 1.01099601e-01 1.01028087e-01 1.00956573e-01 + 1.00885058e-01 1.00813543e-01 1.00742029e-01 1.00670515e-01 1.00599003e-01 + 1.00527492e-01 1.00455983e-01 1.00384477e-01 1.00312973e-01 1.00241472e-01 + 1.00169974e-01 1.00098480e-01 1.00026990e-01 9.99555050e-02 9.98840245e-02 + 9.98125493e-02 9.97410797e-02 9.96696161e-02 9.95981588e-02 9.95267084e-02 + 9.94552650e-02 9.93838292e-02 9.93124014e-02 9.92409818e-02 9.91695709e-02 + 9.90981691e-02 9.90267768e-02 9.89553944e-02 9.88840222e-02 9.88126607e-02 + 9.87413103e-02 9.86699713e-02 9.85986441e-02 9.85273293e-02 9.84560271e-02 + 9.83847379e-02 9.83134622e-02 9.82422004e-02 9.81709529e-02 9.80997201e-02 + 9.80285023e-02 9.79573001e-02 9.78861138e-02 9.78149439e-02 9.77437907e-02 + 9.76726547e-02 9.76015362e-02 9.75304358e-02 9.74593538e-02 9.73882907e-02 + 9.73172468e-02 9.72462226e-02 9.71752186e-02 9.71042351e-02 9.70332725e-02 + 9.69623314e-02 9.68914121e-02 9.68205151e-02 9.67496408e-02 9.66787897e-02 + 9.66079621e-02 9.65371585e-02 9.64663793e-02 9.63956251e-02 9.63248961e-02 + 9.62541930e-02 9.61835160e-02 9.61128657e-02 9.60422425e-02 9.59716469e-02 + 9.59010792e-02 9.58305400e-02 9.57600297e-02 9.56895487e-02 9.56190976e-02 + 9.55486767e-02 9.54782865e-02 9.54079274e-02 9.53376000e-02 9.52673047e-02 + 9.51970419e-02 9.51268121e-02 9.50566158e-02 9.49864534e-02 9.49163254e-02 + 9.48462322e-02 9.47761744e-02 9.47061524e-02 9.46361667e-02 9.45662176e-02 + 9.44963058e-02 9.44264317e-02 9.43565957e-02 9.42867984e-02 9.42170402e-02 + 9.41473215e-02 9.40776429e-02 9.40080049e-02 9.39384078e-02 9.38688523e-02 + 9.37993388e-02 9.37298677e-02 9.36604397e-02 9.35910550e-02 9.35217143e-02 + 9.34524180e-02 9.33831666e-02 9.33139606e-02 9.32448006e-02 9.31756869e-02 + 9.31066201e-02 9.30376006e-02 9.29686291e-02 9.28997059e-02 9.28308316e-02 + 9.27620066e-02 9.26932315e-02 9.26245068e-02 9.25558330e-02 9.24872106e-02 + 9.24186400e-02 9.23501218e-02 9.22816566e-02 9.22132447e-02 9.21448867e-02 + 9.20765832e-02 9.20083346e-02 9.19401414e-02 9.18720042e-02 9.18039235e-02 + 9.17358998e-02 9.16679335e-02 9.16000253e-02 9.15321756e-02 9.14643850e-02 + 9.13966540e-02 9.13289830e-02 9.12613727e-02 9.11938235e-02 9.11263360e-02 + 9.10589106e-02 9.09915480e-02 9.09242486e-02 9.08570130e-02 9.07898417e-02 + 9.07227352e-02 9.06556940e-02 9.05887187e-02 9.05218099e-02 9.04549680e-02 + 9.03881935e-02 9.03214871e-02 9.02548492e-02 9.01882804e-02 9.01217813e-02 + 9.00553522e-02 8.99889939e-02 8.99227068e-02 8.98564915e-02 8.97903485e-02 + 8.97242783e-02 8.96582816e-02 8.95923588e-02 8.95265104e-02 8.94607371e-02 + 8.93950394e-02 8.93294177e-02 8.92638728e-02 8.91984050e-02 8.91330150e-02 + 8.90677033e-02 8.90024705e-02 8.89373170e-02 8.88722435e-02 8.88072505e-02 + 8.87423386e-02 8.86775083e-02 8.86127602e-02 8.85480947e-02 8.84835126e-02 + 8.84190142e-02 8.83546003e-02 8.82902712e-02 8.82260277e-02 8.81618702e-02 + 8.80977994e-02 8.80338157e-02 8.79699197e-02 8.79061120e-02 8.78423932e-02 + 8.77787637e-02 8.77152243e-02 8.76517753e-02 8.75884175e-02 8.75251513e-02 + 8.74619773e-02 8.73988961e-02 8.73359083e-02 8.72730143e-02 8.72102149e-02 + 8.71475104e-02 8.70849016e-02 8.70223890e-02 8.69599731e-02 8.68976544e-02 + 8.68354337e-02 8.67733114e-02 8.67112881e-02 8.66493644e-02 8.65875409e-02 + 8.65258180e-02 8.64641964e-02 8.64026767e-02 8.63412594e-02 8.62799451e-02 + 8.62187344e-02 8.61576278e-02 8.60966259e-02 8.60357293e-02 8.59749386e-02 + 8.59142542e-02 8.58536769e-02 8.57932071e-02 8.57328455e-02 8.56725925e-02 + 8.56124489e-02 8.55524151e-02 8.54924918e-02 8.54326794e-02 8.53729787e-02 + 8.53133900e-02 8.52539141e-02 8.51945515e-02 8.51353028e-02 8.50761685e-02 + 8.50171493e-02 8.49582456e-02 8.48994581e-02 8.48407874e-02 8.47822340e-02 + 8.47237984e-02 8.46654813e-02 8.46072833e-02 8.45492049e-02 8.44912466e-02 + 8.44334092e-02 8.43756930e-02 8.43180988e-02 8.42606271e-02 8.42032784e-02 + 8.41460533e-02 8.40889525e-02 8.40319764e-02 8.39751257e-02 8.39184009e-02 + 8.38618026e-02 8.38053314e-02 8.37489878e-02 8.36927724e-02 8.36366859e-02 + 8.35807286e-02 8.35249013e-02 8.34692046e-02 8.34136388e-02 8.33582048e-02 + 8.33029029e-02 8.32477338e-02 8.31926981e-02 8.31377963e-02 8.30830290e-02 + 8.30283967e-02 8.29739001e-02 8.29195397e-02 8.28653161e-02 8.28112297e-02 + 8.27572813e-02 8.27034714e-02 8.26498005e-02 8.25962691e-02 8.25428780e-02 + 8.24896276e-02 8.24365184e-02 8.23835511e-02 8.23307263e-02 8.22780444e-02 + 8.22255060e-02 8.21731118e-02 8.21208622e-02 8.20687579e-02 8.20167993e-02 + 8.19649871e-02 8.19133218e-02 8.18618039e-02 8.18104341e-02 8.17592128e-02 + 8.17081407e-02 8.16572182e-02 8.16064460e-02 8.15558245e-02 8.15053545e-02 + 8.14550363e-02 8.14048705e-02 8.13548578e-02 8.13049986e-02 8.12552935e-02 + 8.12057430e-02 8.11563478e-02 8.11071082e-02 8.10580250e-02 8.10090986e-02 + 8.09603295e-02 8.09117184e-02 8.08632657e-02 8.08149721e-02 8.07668379e-02 + 8.07188639e-02 8.06710504e-02 8.06233982e-02 8.05759075e-02 8.05285792e-02 + 8.04814136e-02 8.04344112e-02 8.03875727e-02 8.03408986e-02 8.02943893e-02 + 8.02480455e-02 8.02018675e-02 8.01558561e-02 8.01100116e-02 8.00643347e-02 + 8.00188258e-02 7.99734855e-02 7.99283142e-02 7.98833126e-02 7.98384810e-02 + 7.97938201e-02 7.97493304e-02 7.97050123e-02 7.96608664e-02 7.96168932e-02 + 7.95730933e-02 7.95294670e-02 7.94860149e-02 7.94427376e-02 7.93996355e-02 + 7.93567091e-02 7.93139590e-02 7.92713856e-02 7.92289895e-02 7.91867711e-02 + 7.91447310e-02 7.91028695e-02 7.90611873e-02 7.90196849e-02 7.89783626e-02 + 7.89372210e-02 7.88962607e-02 7.88554819e-02 7.88148854e-02 7.87744715e-02 + 7.87342407e-02 7.86941935e-02 7.86543304e-02 7.86146519e-02 7.85751584e-02 + 7.85358504e-02 7.84967284e-02 7.84577929e-02 7.84190442e-02 7.83804830e-02 + 7.83421096e-02 7.83039245e-02 7.82659282e-02 7.82281212e-02 7.81905038e-02 + 7.81530766e-02 7.81158400e-02 7.80787945e-02 7.80419405e-02 7.80052784e-02 + 7.79688088e-02 7.79325320e-02 7.78964485e-02 7.78605587e-02 7.78248631e-02 + 7.77893622e-02 7.77540563e-02 7.77189459e-02 7.76840314e-02 7.76493132e-02 + 7.76147919e-02 7.75804677e-02 7.75463412e-02 7.75124127e-02 7.74786828e-02 + 7.74451517e-02 7.74118199e-02 7.73786878e-02 7.73457559e-02 7.73130245e-02 + 7.72804941e-02 7.72481650e-02 7.72160377e-02 7.71841125e-02 7.71523900e-02 + 7.71208703e-02 7.70895541e-02 7.70584416e-02 7.70275332e-02 7.69968293e-02 + 7.69663304e-02 7.69360368e-02 7.69059488e-02 7.68760670e-02 7.68463915e-02 + 7.68169229e-02 7.67876614e-02 7.67586075e-02 7.67297616e-02 7.67011239e-02 + 7.66726949e-02 7.66444749e-02 7.66164642e-02 7.65886633e-02 7.65610725e-02 + 7.65336921e-02 7.65065225e-02 7.64795641e-02 7.64528171e-02 7.64262819e-02 + 7.63999589e-02 7.63738484e-02 7.63479508e-02 7.63222662e-02 7.62967952e-02 + 7.62715380e-02 7.62464950e-02 7.62216664e-02 7.61970526e-02 7.61726539e-02 + 7.61484706e-02 7.61245031e-02 7.61007516e-02 7.60772164e-02 7.60538979e-02 + 7.60307964e-02 7.60079121e-02 7.59852453e-02 7.59627964e-02 7.59405657e-02 + 7.59185533e-02 7.58967597e-02 7.58751851e-02 7.58538297e-02 7.58326939e-02 + 7.58117779e-02 7.57910820e-02 7.57706065e-02 7.57503516e-02 7.57303176e-02 + 7.57105048e-02 7.56909134e-02 7.56715437e-02 7.56523959e-02 7.56334703e-02 + 7.56147671e-02 7.55962866e-02 7.55780290e-02 7.55599946e-02 7.55421835e-02 + 7.55245961e-02 7.55072326e-02 7.54900931e-02 7.54731780e-02 7.54564874e-02 + 7.54400215e-02 7.54237806e-02 7.54077649e-02 7.53919746e-02 7.53764099e-02 + 7.53610711e-02 7.53459582e-02 7.53310716e-02 7.53164113e-02 7.53019777e-02 + 7.52877708e-02 7.52737910e-02 7.52600383e-02 7.52465130e-02 7.52332152e-02 + 7.52201451e-02 7.52073028e-02 7.51946887e-02 7.51823027e-02 7.51701451e-02 + 7.51582161e-02 7.51465158e-02 7.51350443e-02 7.51238019e-02 7.51127886e-02 + 7.51020046e-02 7.50914500e-02 7.50811251e-02 7.50710299e-02 7.50611645e-02 + 7.50515291e-02 7.50421239e-02 7.50329489e-02 7.50240043e-02 7.50152901e-02 + 7.50068066e-02 7.49985538e-02 7.49905318e-02 7.49827407e-02 7.49751807e-02 + 7.49678518e-02 7.49607542e-02 7.49538879e-02 7.49472530e-02 7.49408496e-02 + 7.49346779e-02 7.49287378e-02 7.49230295e-02 7.49175530e-02 7.49123084e-02 + 7.49072958e-02 7.49025153e-02 7.48979669e-02 7.48936506e-02 7.48895666e-02 + 7.48857148e-02 7.48820954e-02 7.48787084e-02 7.48755538e-02 7.48726317e-02 + 7.48699421e-02 7.48674851e-02 7.48652606e-02 7.48632687e-02 7.48615095e-02 + 7.48599830e-02 7.48586891e-02 7.48576279e-02 7.48567994e-02 7.48562037e-02 + 7.48558407e-02 7.48557104e-02 7.48558129e-02 7.48561481e-02 7.48567160e-02 + 7.48575167e-02 7.48585501e-02 7.48598162e-02 7.48613149e-02 7.48630464e-02 + 7.48650104e-02 7.48672071e-02 7.48696364e-02 7.48722982e-02 7.48751926e-02 + 7.48783194e-02 7.48816786e-02 7.48852703e-02 7.48890943e-02 7.48931506e-02 + 7.48974391e-02 7.49019598e-02 7.49067126e-02 7.49116975e-02 7.49169143e-02 + 7.49223631e-02 7.49280438e-02 7.49339562e-02 7.49401003e-02 7.49464760e-02 + 7.49530832e-02 7.49599219e-02 7.49669919e-02 7.49742931e-02 7.49818255e-02 + 7.49895890e-02 7.49975834e-02 7.50058087e-02 7.50142646e-02 7.50229512e-02 + 7.50318684e-02 7.50410158e-02 7.50503936e-02 7.50600015e-02 7.50698394e-02 + 7.50799072e-02 7.50902047e-02 7.51007318e-02 7.51114884e-02 7.51224743e-02 + 7.51336894e-02 7.51451335e-02 7.51568065e-02 7.51687082e-02 7.51808385e-02 + 7.51931972e-02 7.52057841e-02 7.52185991e-02 7.52316420e-02 7.52449126e-02 + 7.52584108e-02 7.52721363e-02 7.52860890e-02 7.53002688e-02 7.53146753e-02 + 7.53293085e-02 7.53441681e-02 7.53592540e-02 7.53745659e-02 7.53901036e-02 + 7.54058670e-02 7.54218558e-02 7.54380698e-02 7.54545087e-02 7.54711725e-02 + 7.54880609e-02 7.55051735e-02 7.55225103e-02 7.55400710e-02 7.55578553e-02 + 7.55758631e-02 7.55940940e-02 7.56125479e-02 7.56312245e-02 7.56501236e-02 + 7.56692448e-02 7.56885881e-02 7.57081530e-02 7.57279394e-02 7.57479470e-02 + 7.57681755e-02 7.57886247e-02 7.58092942e-02 7.58301840e-02 7.58512935e-02 + 7.58726227e-02 7.58941712e-02 7.59159386e-02 7.59379249e-02 7.59601296e-02 + 7.59825524e-02 7.60051932e-02 7.60280515e-02 7.60511271e-02 7.60744197e-02 + 7.60979290e-02 7.61216547e-02 7.61455964e-02 7.61697540e-02 7.61941269e-02 + 7.62187151e-02 7.62435180e-02 7.62685354e-02 7.62937671e-02 7.63192126e-02 + 7.63448716e-02 7.63707438e-02 7.63968289e-02 7.64231266e-02 7.64496364e-02 + 7.64763581e-02 7.65032913e-02 7.65304357e-02 7.65577909e-02 7.65853566e-02 + 7.66131325e-02 7.66411181e-02 7.66693131e-02 7.66977171e-02 7.67263299e-02 + 7.67551510e-02 7.67841801e-02 7.68134168e-02 7.68428607e-02 7.68725114e-02 + 7.69023687e-02 7.69324320e-02 7.69627011e-02 7.69931756e-02 7.70238549e-02 + 7.70547389e-02 7.70858271e-02 7.71171190e-02 7.71486144e-02 7.71803127e-02 + 7.72122137e-02 7.72443169e-02 7.72766219e-02 7.73091283e-02 7.73418357e-02 + 7.73747437e-02 7.74078518e-02 7.74411598e-02 7.74746671e-02 7.75083734e-02 + 7.75422781e-02 7.75763810e-02 7.76106816e-02 7.76451794e-02 7.76798741e-02 + 7.77147651e-02 7.77498522e-02 7.77851347e-02 7.78206124e-02 7.78562848e-02 + 7.78921513e-02 7.79282117e-02 7.79644654e-02 7.80009121e-02 7.80375512e-02 + 7.80743823e-02 7.81114050e-02 7.81486188e-02 7.81860233e-02 7.82236179e-02 + 7.82614023e-02 7.82993761e-02 7.83375386e-02 7.83758895e-02 7.84144284e-02 + 7.84531546e-02 7.84920679e-02 7.85311676e-02 7.85704534e-02 7.86099248e-02 + 7.86495813e-02 7.86894223e-02 7.87294475e-02 7.87696564e-02 7.88100485e-02 + 7.88506232e-02 7.88913802e-02 7.89323189e-02 7.89734389e-02 7.90147396e-02 + 7.90562205e-02 7.90978813e-02 7.91397213e-02 7.91817402e-02 7.92239373e-02 + 7.92663122e-02 7.93088645e-02 7.93515935e-02 7.93944988e-02 7.94375800e-02 + 7.94808364e-02 7.95242676e-02 7.95678731e-02 7.96116524e-02 7.96556049e-02 + 7.96997302e-02 7.97440277e-02 7.97884970e-02 7.98331374e-02 7.98779486e-02 + 7.99229300e-02 7.99680810e-02 8.00134012e-02 8.00588900e-02 8.01045468e-02 + 8.01503713e-02 8.01963628e-02 8.02425209e-02 8.02888450e-02 8.03353345e-02 + 8.03819890e-02 8.04288079e-02 8.04757907e-02 8.05229368e-02 8.05702458e-02 + 8.06177170e-02 8.06653500e-02 8.07131443e-02 8.07610992e-02 8.08092142e-02 + 8.08574888e-02 8.09059225e-02 8.09545148e-02 8.10032650e-02 8.10521726e-02 + 8.11012372e-02 8.11504581e-02 8.11998347e-02 8.12493667e-02 8.12990534e-02 + 8.13488942e-02 8.13988886e-02 8.14490361e-02 8.14993361e-02 8.15497881e-02 + 8.16003915e-02 8.16511457e-02 8.17020502e-02 8.17531045e-02 8.18043080e-02 + 8.18556601e-02 8.19071604e-02 8.19588081e-02 8.20106028e-02 8.20625439e-02 + 8.21146309e-02 8.21668631e-02 8.22192401e-02 8.22717613e-02 8.23244260e-02 + 8.23772339e-02 8.24301842e-02 8.24832764e-02 8.25365100e-02 8.25898843e-02 + 8.26433990e-02 8.26970532e-02 8.27508466e-02 8.28047785e-02 8.28588484e-02 + 8.29130557e-02 8.29673998e-02 8.30218801e-02 8.30764962e-02 8.31312474e-02 + 8.31861332e-02 8.32411529e-02 8.32963061e-02 8.33515922e-02 8.34070105e-02 + 8.34625605e-02 8.35182417e-02 8.35740534e-02 8.36299951e-02 8.36860663e-02 + 8.37422663e-02 8.37985946e-02 8.38550506e-02 8.39116338e-02 8.39683435e-02 + 8.40251792e-02 8.40821403e-02 8.41392263e-02 8.41964365e-02 8.42537705e-02 + 8.43112275e-02 8.43688072e-02 8.44265088e-02 8.44843318e-02 8.45422756e-02 + 8.46003397e-02 8.46585235e-02 8.47168264e-02 8.47752478e-02 8.48337872e-02 + 8.48924439e-02 8.49512175e-02 8.50101073e-02 8.50691128e-02 8.51282334e-02 + 8.51874685e-02 8.52468175e-02 8.53062799e-02 8.53658551e-02 8.54255425e-02 + 8.54853415e-02 8.55452516e-02 8.56052723e-02 8.56654028e-02 8.57256427e-02 + 8.57859914e-02 8.58464483e-02 8.59070128e-02 8.59676844e-02 8.60284625e-02 + 8.60893465e-02 8.61503358e-02 8.62114299e-02 8.62726282e-02 8.63339302e-02 + 8.63953352e-02 8.64568427e-02 8.65184522e-02 8.65801629e-02 8.66419745e-02 + 8.67038863e-02 8.67658977e-02 8.68280082e-02 8.68902172e-02 8.69525242e-02 + 8.70149285e-02 8.70774296e-02 8.71400270e-02 8.72027200e-02 8.72655081e-02 + 8.73283908e-02 8.73913675e-02 8.74544376e-02 8.75176005e-02 8.75808557e-02 + 8.76442026e-02 8.77076407e-02 8.77711694e-02 8.78347881e-02 8.78984963e-02 + 8.79622934e-02 8.80261789e-02 8.80901521e-02 8.81542126e-02 8.82183598e-02 + 8.82825930e-02 8.83469119e-02 8.84113157e-02 8.84758040e-02 8.85403762e-02 + 8.86050317e-02 8.86697700e-02 8.87345905e-02 8.87994927e-02 8.88644761e-02 + 8.89295400e-02 8.89946839e-02 8.90599073e-02 8.91252096e-02 8.91905903e-02 + 8.92560488e-02 8.93215845e-02 8.93871970e-02 8.94528857e-02 8.95186500e-02 + 8.95844894e-02 8.96504034e-02 8.97163914e-02 8.97824528e-02 8.98485871e-02 + 8.99147938e-02 8.99810724e-02 9.00474222e-02 9.01138428e-02 9.01803336e-02 + 9.02468942e-02 9.03135238e-02 9.03802221e-02 9.04469884e-02 9.05138223e-02 + 9.05807232e-02 9.06476906e-02 9.07147239e-02 9.07818226e-02 9.08489862e-02 + 9.09162142e-02 9.09835060e-02 9.10508611e-02 9.11182790e-02 9.11857591e-02 + 9.12533009e-02 9.13209040e-02 9.13885677e-02 9.14562916e-02 9.15240751e-02 + 9.15919178e-02 9.16598190e-02 9.17277784e-02 9.17957953e-02 9.18638692e-02 + 9.19319997e-02 9.20001862e-02 9.20684282e-02 9.21367252e-02 9.22050767e-02 + 9.22734821e-02 9.23419411e-02 9.24104530e-02 9.24790173e-02 9.25476336e-02 + 9.26163013e-02 9.26850199e-02 9.27537890e-02 9.28226080e-02 9.28914765e-02 + 9.29603938e-02 9.30293596e-02 9.30983734e-02 9.31674346e-02 9.32365427e-02 + 9.33056973e-02 9.33748978e-02 9.34441438e-02 9.35134347e-02 9.35827701e-02 + 9.36521496e-02 9.37215725e-02 9.37910385e-02 9.38605469e-02 9.39300975e-02 + 9.39996895e-02 9.40693227e-02 9.41389965e-02 9.42087104e-02 9.42784639e-02 + 9.43482566e-02 9.44180880e-02 9.44879576e-02 9.45578649e-02 9.46278095e-02 + 9.46977909e-02 9.47678086e-02 9.48378622e-02 9.49079511e-02 9.49780750e-02 + 9.50482333e-02 9.51184256e-02 9.51886514e-02 9.52589103e-02 9.53292017e-02 + 9.53995254e-02 9.54698806e-02 9.55402671e-02 9.56106844e-02 9.56811320e-02 + 9.57516094e-02 9.58221162e-02 9.58926520e-02 9.59632163e-02 9.60338086e-02 + 9.61044286e-02 9.61750756e-02 9.62457494e-02 9.63164495e-02 9.63871754e-02 + 9.64579266e-02 9.65287028e-02 9.65995035e-02 9.66703283e-02 9.67411766e-02 + 9.68120482e-02 9.68829425e-02 9.69538592e-02 9.70247977e-02 9.70957577e-02 + 9.71667387e-02 9.72377403e-02 9.73087621e-02 9.73798037e-02 9.74508645e-02 + 9.75219443e-02 9.75930426e-02 9.76641589e-02 9.77352928e-02 9.78064440e-02 + 9.78776119e-02 9.79487963e-02 9.80199966e-02 9.80912125e-02 9.81624436e-02 + 9.82336894e-02 9.83049495e-02 9.83762235e-02 9.84475111e-02 9.85188118e-02 + 9.85901251e-02 9.86614508e-02 9.87327884e-02 9.88041375e-02 9.88754977e-02 + 9.89468687e-02 9.90182499e-02 9.90896410e-02 9.91610417e-02 9.92324515e-02 + 9.93038701e-02 9.93752970e-02 9.94467318e-02 9.95181743e-02 9.95896239e-02 + 9.96610804e-02 9.97325432e-02 9.98040122e-02 9.98754867e-02 9.99469666e-02 + 1.00018451e-01 1.00089941e-01 1.00161434e-01 1.00232931e-01 1.00304432e-01 + 1.00375936e-01 1.00447442e-01 1.00518951e-01 1.00590461e-01 1.00661973e-01 + 1.00733487e-01 1.00805001e-01 1.00876516e-01 1.00948030e-01 1.01019545e-01 + 1.01091059e-01 1.01162572e-01 1.01234084e-01 1.01305594e-01 1.01377102e-01 + 1.01448607e-01 1.01520110e-01 1.01591610e-01 1.01663106e-01 1.01734599e-01 + 1.01806088e-01 1.01877572e-01 1.01949051e-01 1.02020525e-01 1.02091994e-01 + 1.02163457e-01 1.02234914e-01 1.02306364e-01 1.02377807e-01 1.02449244e-01 + 1.02520672e-01 1.02592093e-01 1.02663506e-01 1.02734911e-01 1.02806306e-01 + 1.02877693e-01 1.02949070e-01 1.03020437e-01 1.03091794e-01 1.03163141e-01 + 1.03234477e-01 1.03305802e-01 1.03377115e-01 1.03448417e-01 1.03519707e-01 + 1.03590985e-01 1.03662250e-01 1.03733502e-01 1.03804741e-01 1.03875966e-01 + 1.03947178e-01 1.04018375e-01 1.04089558e-01 1.04160726e-01 1.04231879e-01 + 1.04303017e-01 1.04374139e-01 1.04445245e-01 1.04516335e-01 1.04587409e-01 + 1.04658465e-01 1.04729504e-01 1.04800527e-01 1.04871531e-01 1.04942517e-01 + 1.05013485e-01 1.05084435e-01 1.05155365e-01 1.05226277e-01 1.05297169e-01 + 1.05368041e-01 1.05438894e-01 1.05509726e-01 1.05580538e-01 1.05651329e-01 + 1.05722099e-01 1.05792847e-01 1.05863574e-01 1.05934279e-01 1.06004962e-01 + 1.06075622e-01 1.06146260e-01 1.06216875e-01 1.06287467e-01 1.06358035e-01 + 1.06428579e-01 1.06499100e-01 1.06569596e-01 1.06640067e-01 1.06710514e-01 + 1.06780936e-01 1.06851332e-01 1.06921703e-01 1.06992049e-01 1.07062368e-01 + 1.07132661e-01 1.07202927e-01 1.07273167e-01 1.07343379e-01 1.07413565e-01 + 1.07483722e-01 1.07553852e-01 1.07623955e-01 1.07694028e-01 1.07764074e-01 + 1.07834090e-01 1.07904078e-01 1.07974036e-01 1.08043966e-01 1.08113865e-01 + 1.08183735e-01 1.08253574e-01 1.08323383e-01 1.08393162e-01 1.08462910e-01 + 1.08532626e-01 1.08602312e-01 1.08671966e-01 1.08741588e-01 1.08811179e-01 + 1.08880737e-01 1.08950263e-01 1.09019757e-01 1.09089217e-01 1.09158645e-01 + 1.09228040e-01 1.09297401e-01 1.09366728e-01 1.09436022e-01 1.09505281e-01 + 1.09574507e-01 1.09643698e-01 1.09712854e-01 1.09781975e-01 1.09851061e-01 + 1.09920112e-01 1.09989128e-01 1.10058108e-01 1.10127052e-01 1.10195959e-01 + 1.10264831e-01 1.10333666e-01 1.10402465e-01 1.10471226e-01 1.10539951e-01 + 1.10608638e-01 1.10677288e-01 1.10745900e-01 1.10814475e-01 1.10883011e-01 + 1.10951510e-01 1.11019970e-01 1.11088391e-01 1.11156774e-01 1.11225117e-01 + 1.11293422e-01 1.11361687e-01 1.11429913e-01 1.11498100e-01 1.11566246e-01 + 1.11634353e-01 1.11702419e-01 1.11770445e-01 1.11838431e-01 1.11906376e-01 + 1.11974280e-01 1.12042143e-01 1.12109965e-01 1.12177745e-01 1.12245484e-01 + 1.12313182e-01 1.12380837e-01 1.12448451e-01 1.12516022e-01 1.12583551e-01 + 1.12651038e-01 1.12718482e-01 1.12785883e-01 1.12853241e-01 1.12920556e-01 + 1.12987828e-01 1.13055056e-01 1.13122241e-01 1.13189382e-01 1.13256480e-01 + 1.13323533e-01 1.13390542e-01 1.13457507e-01 1.13524427e-01 1.13591303e-01 + 1.13658134e-01 1.13724920e-01 1.13791661e-01 1.13858356e-01 1.13925007e-01 + 1.13991612e-01 1.14058171e-01 1.14124685e-01 1.14191153e-01 1.14257575e-01 + 1.14323950e-01 1.14390280e-01 1.14456562e-01 1.14522799e-01 1.14588988e-01 + 1.14655131e-01 1.14721227e-01 1.14787276e-01 1.14853278e-01 1.14919232e-01 + 1.14985139e-01 1.15050998e-01 1.15116810e-01 1.15182574e-01 1.15248290e-01 + 1.15313957e-01 1.15379577e-01 1.15445148e-01 1.15510671e-01 1.15576146e-01 + 1.15641571e-01 1.15706948e-01 1.15772276e-01 1.15837555e-01 1.15902785e-01 + 1.15967965e-01 1.16033097e-01 1.16098179e-01 1.16163211e-01 1.16228193e-01 + 1.16293126e-01 1.16358009e-01 1.16422842e-01 1.16487625e-01 1.16552357e-01 + 1.16617040e-01 1.16681672e-01 1.16746253e-01 1.16810784e-01 1.16875264e-01 + 1.16939693e-01 1.17004071e-01 1.17068398e-01 1.17132674e-01 1.17196899e-01 + 1.17261073e-01 1.17325195e-01 1.17389266e-01 1.17453285e-01 1.17517252e-01 + 1.17581168e-01 1.17645032e-01 1.17708843e-01 1.17772603e-01 1.17836311e-01 + 1.17899966e-01 1.17963569e-01 1.18027120e-01 1.18090618e-01 1.18154064e-01 + 1.18217457e-01 1.18280797e-01 1.18344084e-01 1.18407319e-01 1.18470500e-01 + 1.18533629e-01 1.18596704e-01 1.18659726e-01 1.18722695e-01 1.18785610e-01 + 1.18848472e-01 1.18911281e-01 1.18974035e-01 1.19036736e-01 1.19099384e-01 + 2.08130000e-04 2.08281191e-04 2.08734762e-04 2.09490714e-04 2.10549046e-04 + 2.11909757e-04 2.13572846e-04 2.15538310e-04 2.17806148e-04 2.20376358e-04 + 2.23248936e-04 2.26423882e-04 2.29901190e-04 2.33680858e-04 2.37762883e-04 + 2.42147260e-04 2.46833984e-04 2.51823051e-04 2.57114457e-04 2.62708196e-04 + 2.68604263e-04 2.74802652e-04 2.81303356e-04 2.88106370e-04 2.95211687e-04 + 3.02619299e-04 3.10329200e-04 3.18341382e-04 3.26655837e-04 3.35272557e-04 + 3.44191533e-04 3.53412758e-04 3.62936221e-04 3.72761913e-04 3.82889825e-04 + 3.93319947e-04 4.04052269e-04 4.15086779e-04 4.26423468e-04 4.38062324e-04 + 4.50003336e-04 4.62246492e-04 4.74791780e-04 4.87639188e-04 5.00788703e-04 + 5.14240312e-04 5.27994002e-04 5.42049760e-04 5.56407572e-04 5.71067423e-04 + 5.86029300e-04 6.01293187e-04 6.16859071e-04 6.32726934e-04 6.48896763e-04 + 6.65368541e-04 6.82142252e-04 6.99217880e-04 7.16595407e-04 7.34274817e-04 + 7.52256092e-04 7.70539216e-04 7.89124169e-04 8.08010934e-04 8.27199493e-04 + 8.46689825e-04 8.66481913e-04 8.86575737e-04 9.06971278e-04 9.27668514e-04 + 9.48667427e-04 9.69967995e-04 9.91570198e-04 1.01347401e-03 1.03567942e-03 + 1.05818640e-03 1.08099493e-03 1.10410498e-03 1.12751654e-03 1.15122957e-03 + 1.17524406e-03 1.19955999e-03 1.22417733e-03 1.24909605e-03 1.27431613e-03 + 1.29983755e-03 1.32566029e-03 1.35178430e-03 1.37820958e-03 1.40493610e-03 + 1.43196382e-03 1.45929272e-03 1.48692278e-03 1.51485397e-03 1.54308626e-03 + 1.57161963e-03 1.60045404e-03 1.62958946e-03 1.65902588e-03 1.68876325e-03 + 1.71880156e-03 1.74914077e-03 1.77978085e-03 1.81072177e-03 1.84196351e-03 + 1.87350602e-03 1.90534929e-03 1.93749327e-03 1.96993795e-03 2.00268328e-03 + 2.03572923e-03 2.06907577e-03 2.10272288e-03 2.13667051e-03 2.17091863e-03 + 2.20546721e-03 2.24031622e-03 2.27546562e-03 2.31091538e-03 2.34666546e-03 + 2.38271583e-03 2.41906645e-03 2.45571729e-03 2.49266831e-03 2.52991947e-03 + 2.56747075e-03 2.60532209e-03 2.64347347e-03 2.68192485e-03 2.72067619e-03 + 2.75972745e-03 2.79907859e-03 2.83872959e-03 2.87868038e-03 2.91893095e-03 + 2.95948125e-03 3.00033123e-03 3.04148087e-03 3.08293011e-03 3.12467892e-03 + 3.16672726e-03 3.20907509e-03 3.25172236e-03 3.29466904e-03 3.33791508e-03 + 3.38146044e-03 3.42530507e-03 3.46944894e-03 3.51389201e-03 3.55863422e-03 + 3.60367554e-03 3.64901591e-03 3.69465531e-03 3.74059367e-03 3.78683096e-03 + 3.83336714e-03 3.88020215e-03 3.92733595e-03 3.97476850e-03 4.02249975e-03 + 4.07052965e-03 4.11885815e-03 4.16748522e-03 4.21641079e-03 4.26563483e-03 + 4.31515728e-03 4.36497811e-03 4.41509725e-03 4.46551466e-03 4.51623029e-03 + 4.56724409e-03 4.61855601e-03 4.67016601e-03 4.72207403e-03 4.77428002e-03 + 4.82678393e-03 4.87958570e-03 4.93268530e-03 4.98608266e-03 5.03977774e-03 + 5.09377048e-03 5.14806083e-03 5.20264873e-03 5.25753414e-03 5.31271700e-03 + 5.36819725e-03 5.42397485e-03 5.48004973e-03 5.53642185e-03 5.59309115e-03 + 5.65005757e-03 5.70732106e-03 5.76488157e-03 5.82273903e-03 5.88089339e-03 + 5.93934459e-03 5.99809258e-03 6.05713731e-03 6.11647870e-03 6.17611671e-03 + 6.23605128e-03 6.29628235e-03 6.35680986e-03 6.41763375e-03 6.47875396e-03 + 6.54017044e-03 6.60188312e-03 6.66389194e-03 6.72619685e-03 6.78879778e-03 + 6.85169468e-03 6.91488748e-03 6.97837611e-03 7.04216053e-03 7.10624066e-03 + 7.17061645e-03 7.23528783e-03 7.30025474e-03 7.36551712e-03 7.43107490e-03 + 7.49692802e-03 7.56307641e-03 7.62952002e-03 7.69625878e-03 7.76329262e-03 + 7.83062147e-03 7.89824528e-03 7.96616398e-03 8.03437750e-03 8.10288577e-03 + 8.17168874e-03 8.24078632e-03 8.31017847e-03 8.37986510e-03 8.44984615e-03 + 8.52012155e-03 8.59069124e-03 8.66155515e-03 8.73271321e-03 8.80416535e-03 + 8.87591149e-03 8.94795158e-03 9.02028554e-03 9.09291331e-03 9.16583480e-03 + 9.23904995e-03 9.31255870e-03 9.38636096e-03 9.46045668e-03 9.53484577e-03 + 9.60952816e-03 9.68450379e-03 9.75977258e-03 9.83533445e-03 9.91118934e-03 + 9.98733717e-03 1.00637779e-02 1.01405114e-02 1.02175376e-02 1.02948564e-02 + 1.03724679e-02 1.04503718e-02 1.05285681e-02 1.06070568e-02 1.06858378e-02 + 1.07649109e-02 1.08442762e-02 1.09239335e-02 1.10038828e-02 1.10841240e-02 + 1.11646570e-02 1.12454817e-02 1.13265980e-02 1.14080060e-02 1.14897054e-02 + 1.15716963e-02 1.16539785e-02 1.17365519e-02 1.18194166e-02 1.19025723e-02 + 1.19860191e-02 1.20697568e-02 1.21537854e-02 1.22381047e-02 1.23227148e-02 + 1.24076155e-02 1.24928067e-02 1.25782883e-02 1.26640604e-02 1.27501227e-02 + 1.28364752e-02 1.29231179e-02 1.30100506e-02 1.30972732e-02 1.31847858e-02 + 1.32725881e-02 1.33606801e-02 1.34490618e-02 1.35377329e-02 1.36266936e-02 + 1.37159436e-02 1.38054829e-02 1.38953113e-02 1.39854289e-02 1.40758355e-02 + 1.41665311e-02 1.42575155e-02 1.43487886e-02 1.44403504e-02 1.45322008e-02 + 1.46243398e-02 1.47167671e-02 1.48094827e-02 1.49024866e-02 1.49957786e-02 + 1.50893587e-02 1.51832267e-02 1.52773826e-02 1.53718263e-02 1.54665577e-02 + 1.55615767e-02 1.56568832e-02 1.57524771e-02 1.58483584e-02 1.59445269e-02 + 1.60409825e-02 1.61377252e-02 1.62347549e-02 1.63320714e-02 1.64296747e-02 + 1.65275647e-02 1.66257413e-02 1.67242043e-02 1.68229538e-02 1.69219896e-02 + 1.70213116e-02 1.71209197e-02 1.72208138e-02 1.73209939e-02 1.74214598e-02 + 1.75222114e-02 1.76232487e-02 1.77245715e-02 1.78261798e-02 1.79280734e-02 + 1.80302523e-02 1.81327163e-02 1.82354654e-02 1.83384994e-02 1.84418184e-02 + 1.85454220e-02 1.86493104e-02 1.87534833e-02 1.88579407e-02 1.89626824e-02 + 1.90677084e-02 1.91730186e-02 1.92786129e-02 1.93844911e-02 1.94906532e-02 + 1.95970991e-02 1.97038286e-02 1.98108417e-02 1.99181382e-02 2.00257182e-02 + 2.01335813e-02 2.02417277e-02 2.03501571e-02 2.04588694e-02 2.05678646e-02 + 2.06771425e-02 2.07867031e-02 2.08965462e-02 2.10066717e-02 2.11170796e-02 + 2.12277697e-02 2.13387419e-02 2.14499962e-02 2.15615323e-02 2.16733503e-02 + 2.17854499e-02 2.18978311e-02 2.20104938e-02 2.21234379e-02 2.22366633e-02 + 2.23501698e-02 2.24639574e-02 2.25780260e-02 2.26923753e-02 2.28070055e-02 + 2.29219162e-02 2.30371074e-02 2.31525791e-02 2.32683311e-02 2.33843632e-02 + 2.35006755e-02 2.36172677e-02 2.37341397e-02 2.38512915e-02 2.39687230e-02 + 2.40864339e-02 2.42044243e-02 2.43226940e-02 2.44412429e-02 2.45600709e-02 + 2.46791779e-02 2.47985637e-02 2.49182282e-02 2.50381714e-02 2.51583931e-02 + 2.52788932e-02 2.53996717e-02 2.55207283e-02 2.56420629e-02 2.57636755e-02 + 2.58855660e-02 2.60077341e-02 2.61301799e-02 2.62529032e-02 2.63759039e-02 + 2.64991818e-02 2.66227368e-02 2.67465689e-02 2.68706779e-02 2.69950637e-02 + 2.71197262e-02 2.72446653e-02 2.73698808e-02 2.74953726e-02 2.76211406e-02 + 2.77471848e-02 2.78735049e-02 2.80001009e-02 2.81269726e-02 2.82541199e-02 + 2.83815427e-02 2.85092409e-02 2.86372144e-02 2.87654630e-02 2.88939867e-02 + 2.90227852e-02 2.91518585e-02 2.92812065e-02 2.94108290e-02 2.95407260e-02 + 2.96708972e-02 2.98013426e-02 2.99320621e-02 3.00630555e-02 3.01943227e-02 + 3.03258636e-02 3.04576781e-02 3.05897660e-02 3.07221272e-02 3.08547616e-02 + 3.09876691e-02 3.11208496e-02 3.12543028e-02 3.13880288e-02 3.15220273e-02 + 3.16562983e-02 3.17908416e-02 3.19256571e-02 3.20607447e-02 3.21961042e-02 + 3.23317356e-02 3.24676386e-02 3.26038132e-02 3.27402593e-02 3.28769766e-02 + 3.30139652e-02 3.31512248e-02 3.32887554e-02 3.34265567e-02 3.35646288e-02 + 3.37029714e-02 3.38415844e-02 3.39804677e-02 3.41196212e-02 3.42590447e-02 + 3.43987381e-02 3.45387013e-02 3.46789341e-02 3.48194365e-02 3.49602082e-02 + 3.51012492e-02 3.52425593e-02 3.53841384e-02 3.55259864e-02 3.56681031e-02 + 3.58104884e-02 3.59531422e-02 3.60960643e-02 3.62392547e-02 3.63827131e-02 + 3.65264394e-02 3.66704335e-02 3.68146954e-02 3.69592247e-02 3.71040215e-02 + 3.72490856e-02 3.73944167e-02 3.75400149e-02 3.76858800e-02 3.78320118e-02 + 3.79784102e-02 3.81250751e-02 3.82720063e-02 3.84192037e-02 3.85666672e-02 + 3.87143966e-02 3.88623918e-02 3.90106526e-02 3.91591790e-02 3.93079707e-02 + 3.94570277e-02 3.96063498e-02 3.97559369e-02 3.99057888e-02 4.00559054e-02 + 4.02062865e-02 4.03569321e-02 4.05078419e-02 4.06590159e-02 4.08104539e-02 + 4.09621558e-02 4.11141214e-02 4.12663506e-02 4.14188432e-02 4.15715991e-02 + 4.17246182e-02 4.18779004e-02 4.20314454e-02 4.21852532e-02 4.23393235e-02 + 4.24936564e-02 4.26482515e-02 4.28031089e-02 4.29582283e-02 4.31136096e-02 + 4.32692526e-02 4.34251573e-02 4.35813234e-02 4.37377508e-02 4.38944395e-02 + 4.40513892e-02 4.42085998e-02 4.43660711e-02 4.45238031e-02 4.46817956e-02 + 4.48400483e-02 4.49985613e-02 4.51573343e-02 4.53163671e-02 4.54756598e-02 + 4.56352120e-02 4.57950237e-02 4.59550947e-02 4.61154249e-02 4.62760141e-02 + 4.64368622e-02 4.65979690e-02 4.67593344e-02 4.69209582e-02 4.70828403e-02 + 4.72449806e-02 4.74073789e-02 4.75700350e-02 4.77329488e-02 4.78961202e-02 + 4.80595489e-02 4.82232350e-02 4.83871781e-02 4.85513782e-02 4.87158351e-02 + 4.88805487e-02 4.90455188e-02 4.92107453e-02 4.93762280e-02 4.95419667e-02 + 4.97079614e-02 4.98742118e-02 5.00407179e-02 5.02074794e-02 5.03744963e-02 + 5.05417683e-02 5.07092953e-02 5.08770772e-02 5.10451138e-02 5.12134049e-02 + 5.13819505e-02 5.15507503e-02 5.17198043e-02 5.18891121e-02 5.20586738e-02 + 5.22284892e-02 5.23985580e-02 5.25688802e-02 5.27394555e-02 5.29102839e-02 + 5.30813652e-02 5.32526992e-02 5.34242858e-02 5.35961248e-02 5.37682161e-02 + 5.39405595e-02 5.41131548e-02 5.42860020e-02 5.44591008e-02 5.46324511e-02 + 5.48060527e-02 5.49799055e-02 5.51540094e-02 5.53283641e-02 5.55029695e-02 + 5.56778255e-02 5.58529319e-02 5.60282885e-02 5.62038952e-02 5.63797519e-02 + 5.65558583e-02 5.67322144e-02 5.69088199e-02 5.70856747e-02 5.72627786e-02 + 5.74401316e-02 5.76177334e-02 5.77955838e-02 5.79736828e-02 5.81520301e-02 + 5.83306256e-02 5.85094691e-02 5.86885605e-02 5.88678997e-02 5.90474864e-02 + 5.92273205e-02 5.94074018e-02 5.95877302e-02 5.97683055e-02 5.99491276e-02 + 6.01301963e-02 6.03115114e-02 6.04930728e-02 6.06748803e-02 6.08569338e-02 + 6.10392330e-02 6.12217779e-02 6.14045683e-02 6.15876039e-02 6.17708848e-02 + 6.19544105e-02 6.21381812e-02 6.23221964e-02 6.25064562e-02 6.26909603e-02 + 6.28757085e-02 6.30607008e-02 6.32459369e-02 6.34314167e-02 6.36171400e-02 + 6.38031067e-02 6.39893165e-02 6.41757694e-02 6.43624651e-02 6.45494036e-02 + 6.47365845e-02 6.49240078e-02 6.51116734e-02 6.52995809e-02 6.54877303e-02 + 6.56761215e-02 6.58647541e-02 6.60536282e-02 6.62427434e-02 6.64320997e-02 + 6.66216969e-02 6.68115348e-02 6.70016132e-02 6.71919320e-02 6.73824910e-02 + 6.75732900e-02 6.77643289e-02 6.79556075e-02 6.81471257e-02 6.83388832e-02 + 6.85308799e-02 6.87231157e-02 6.89155904e-02 6.91083037e-02 6.93012556e-02 + 6.94944458e-02 6.96878742e-02 6.98815407e-02 7.00754450e-02 7.02695870e-02 + 7.04639665e-02 7.06585833e-02 7.08534374e-02 7.10485284e-02 7.12438563e-02 + 7.14394208e-02 7.16352219e-02 7.18312593e-02 7.20275328e-02 7.22240423e-02 + 7.24207876e-02 7.26177686e-02 7.28149851e-02 7.30124368e-02 7.32101237e-02 + 7.34080456e-02 7.36062022e-02 7.38045935e-02 7.40032192e-02 7.42020791e-02 + 7.44011732e-02 7.46005012e-02 7.48000630e-02 7.49998583e-02 7.51998870e-02 + 7.54001490e-02 7.56006441e-02 7.58013720e-02 7.60023326e-02 7.62035258e-02 + 7.64049514e-02 7.66066092e-02 7.68084989e-02 7.70106206e-02 7.72129739e-02 + 7.74155587e-02 7.76183748e-02 7.78214221e-02 7.80247003e-02 7.82282094e-02 + 7.84319490e-02 7.86359192e-02 7.88401196e-02 7.90445501e-02 7.92492105e-02 + 7.94541007e-02 7.96592204e-02 7.98645695e-02 8.00701479e-02 8.02759553e-02 + 8.04819916e-02 8.06882565e-02 8.08947500e-02 8.11014718e-02 8.13084218e-02 + 8.15155998e-02 8.17230055e-02 8.19306389e-02 8.21384998e-02 8.23465879e-02 + 8.25549031e-02 8.27634452e-02 8.29722141e-02 8.31812095e-02 8.33904313e-02 + 8.35998794e-02 8.38095534e-02 8.40194533e-02 8.42295789e-02 8.44399299e-02 + 8.46505063e-02 8.48613078e-02 8.50723343e-02 8.52835855e-02 8.54950613e-02 + 8.57067616e-02 8.59186860e-02 8.61308346e-02 8.63432070e-02 8.65558031e-02 + 8.67686227e-02 8.69816656e-02 8.71949318e-02 8.74084208e-02 8.76221327e-02 + 8.78360672e-02 8.80502241e-02 8.82646033e-02 8.84792045e-02 8.86940276e-02 + 8.89090725e-02 8.91243388e-02 8.93398265e-02 8.95555354e-02 8.97714652e-02 + 8.99876159e-02 9.02039871e-02 9.04205788e-02 9.06373908e-02 9.08544228e-02 + 9.10716747e-02 9.12891463e-02 9.15068374e-02 9.17247478e-02 9.19428774e-02 + 9.21612260e-02 9.23797934e-02 9.25985793e-02 9.28175837e-02 9.30368064e-02 + 9.32562470e-02 9.34759056e-02 9.36957818e-02 9.39158756e-02 9.41361866e-02 + 9.43567148e-02 9.45774599e-02 9.47984219e-02 9.50196003e-02 9.52409952e-02 + 9.54626063e-02 9.56844334e-02 9.59064764e-02 9.61287350e-02 9.63512090e-02 + 9.65738984e-02 9.67968029e-02 9.70199222e-02 9.72432563e-02 9.74668050e-02 + 9.76905680e-02 9.79145452e-02 9.81387363e-02 9.83631413e-02 9.85877598e-02 + 9.88125918e-02 9.90376370e-02 9.92628953e-02 9.94883665e-02 9.97140503e-02 + 9.99399466e-02 1.00166055e-01 1.00392376e-01 1.00618909e-01 1.00845653e-01 + 1.01072609e-01 1.01299776e-01 1.01527155e-01 1.01754744e-01 1.01982545e-01 + 1.02210556e-01 1.02438777e-01 1.02667209e-01 1.02895850e-01 1.03124702e-01 + 1.03353763e-01 1.03583034e-01 1.03812514e-01 1.04042203e-01 1.04272101e-01 + 1.04502207e-01 1.04732523e-01 1.04963046e-01 1.05193778e-01 1.05424718e-01 + 1.05655865e-01 1.05887221e-01 1.06118783e-01 1.06350553e-01 1.06582530e-01 + 1.06814713e-01 1.07047104e-01 1.07279701e-01 1.07512504e-01 1.07745513e-01 + 1.07978728e-01 1.08212148e-01 1.08445775e-01 1.08679606e-01 1.08913643e-01 + 1.09147884e-01 1.09382331e-01 1.09616982e-01 1.09851837e-01 1.10086896e-01 + 1.10322160e-01 1.10557627e-01 1.10793298e-01 1.11029172e-01 1.11265249e-01 + 1.11501530e-01 1.11738013e-01 1.11974699e-01 1.12211587e-01 1.12448678e-01 + 1.12685971e-01 1.12923465e-01 1.13161162e-01 1.13399059e-01 1.13637158e-01 + 1.13875458e-01 1.14113960e-01 1.14352661e-01 1.14591564e-01 1.14830666e-01 + 1.15069969e-01 1.15309472e-01 1.15549174e-01 1.15789076e-01 1.16029178e-01 + 1.16269478e-01 1.16509978e-01 1.16750676e-01 1.16991573e-01 1.17232669e-01 + 1.17473962e-01 1.17715454e-01 1.17957143e-01 1.18199030e-01 1.18441115e-01 + 1.18683397e-01 1.18925875e-01 1.19168551e-01 1.19411423e-01 1.19654492e-01 + 1.19897757e-01 1.20141218e-01 1.20384875e-01 1.20628728e-01 1.20872776e-01 + 1.21117020e-01 1.21361458e-01 1.21606092e-01 1.21850920e-01 1.22095943e-01 + 1.22341160e-01 1.22586571e-01 1.22832176e-01 1.23077975e-01 1.23323967e-01 + 1.23570153e-01 1.23816532e-01 1.24063104e-01 1.24309869e-01 1.24556826e-01 + 1.24803975e-01 1.25051317e-01 1.25298851e-01 1.25546576e-01 1.25794494e-01 + 1.26042602e-01 1.26290902e-01 1.26539393e-01 1.26788074e-01 1.27036946e-01 + 1.27286009e-01 1.27535261e-01 1.27784704e-01 1.28034337e-01 1.28284159e-01 + 1.28534171e-01 1.28784372e-01 1.29034762e-01 1.29285340e-01 1.29536108e-01 + 1.29787064e-01 1.30038208e-01 1.30289540e-01 1.30541060e-01 1.30792768e-01 + 1.31044663e-01 1.31296746e-01 1.31549015e-01 1.31801471e-01 1.32054115e-01 + 1.32306944e-01 1.32559960e-01 1.32813162e-01 1.33066550e-01 1.33320123e-01 + 1.33573882e-01 1.33827826e-01 1.34081956e-01 1.34336270e-01 1.34590769e-01 + 1.34845452e-01 1.35100320e-01 1.35355372e-01 1.35610608e-01 1.35866027e-01 + 1.36121630e-01 1.36377417e-01 1.36633386e-01 1.36889538e-01 1.37145873e-01 + 1.37402391e-01 1.37659091e-01 1.37915973e-01 1.38173037e-01 1.38430283e-01 + 1.38687710e-01 1.38945318e-01 1.39203108e-01 1.39461079e-01 1.39719230e-01 + 1.39977562e-01 1.40236074e-01 1.40494766e-01 1.40753639e-01 1.41012691e-01 + 1.41271922e-01 1.41531333e-01 1.41790923e-01 1.42050692e-01 1.42310640e-01 + 1.42570766e-01 1.42831071e-01 1.43091554e-01 1.43352214e-01 1.43613053e-01 + 1.43874069e-01 1.44135262e-01 1.44396633e-01 1.44658180e-01 1.44919904e-01 + 1.45181805e-01 1.45443882e-01 1.45706135e-01 1.45968565e-01 1.46231170e-01 + 1.46493950e-01 1.46756906e-01 1.47020037e-01 1.47283343e-01 1.47546824e-01 + 1.47810479e-01 1.48074308e-01 1.48338312e-01 1.48602490e-01 1.48866841e-01 + 1.49131366e-01 1.49396065e-01 1.49660936e-01 1.49925981e-01 1.50191198e-01 + 1.50456588e-01 1.50722150e-01 1.50987884e-01 1.51253790e-01 1.51519868e-01 + 1.51786118e-01 1.52052539e-01 1.52319131e-01 1.52585894e-01 1.52852827e-01 + 1.53119932e-01 1.53387206e-01 1.53654651e-01 1.53922266e-01 1.54190050e-01 + 1.54458004e-01 1.54726127e-01 1.54994420e-01 1.55262881e-01 1.55531511e-01 + 1.55800310e-01 1.56069277e-01 1.56338412e-01 1.56607715e-01 1.56877186e-01 + 1.57146824e-01 1.57416630e-01 1.57686603e-01 1.57956743e-01 1.58227049e-01 + 1.58497522e-01 1.58768161e-01 1.59038967e-01 1.59309938e-01 1.59581075e-01 + 1.59852378e-01 1.60123846e-01 1.60395479e-01 1.60667277e-01 1.60939240e-01 + 1.61211367e-01 1.61483659e-01 1.61756114e-01 1.62028734e-01 1.62301517e-01 + 1.62574464e-01 1.62847574e-01 1.63120847e-01 1.63394283e-01 1.63667882e-01 + 1.63941644e-01 1.64215567e-01 1.64489653e-01 1.64763901e-01 1.65038310e-01 + 1.65312881e-01 1.65587613e-01 1.65862506e-01 1.66137560e-01 1.66412775e-01 + 1.66688150e-01 1.66963686e-01 1.67239381e-01 1.67515237e-01 1.67791252e-01 + 1.68067427e-01 1.68343761e-01 1.68620254e-01 1.68896906e-01 1.69173717e-01 + 1.69450686e-01 1.69727813e-01 1.70005098e-01 1.70282542e-01 1.70560143e-01 + 1.70837901e-01 1.71115817e-01 1.71393889e-01 1.71672119e-01 1.71950505e-01 + 1.72229048e-01 1.72507747e-01 1.72786602e-01 1.73065613e-01 1.73344779e-01 + 1.73624101e-01 1.73903579e-01 1.74183211e-01 1.74462998e-01 1.74742940e-01 + 1.75023036e-01 1.75303286e-01 1.75583691e-01 1.75864249e-01 1.76144961e-01 + 1.76425826e-01 1.76706845e-01 1.76988017e-01 1.77269341e-01 1.77550818e-01 + 1.77832448e-01 1.78114229e-01 1.78396163e-01 1.78678248e-01 1.78960486e-01 + 1.79242874e-01 1.79525414e-01 1.79808105e-01 1.80090946e-01 1.80373938e-01 + 1.80657081e-01 1.80940374e-01 1.81223816e-01 1.81507409e-01 1.81791151e-01 + 1.82075043e-01 1.82359084e-01 1.82643273e-01 1.82927612e-01 1.83212099e-01 + 1.83496734e-01 1.83781518e-01 1.84066450e-01 1.84351529e-01 1.84636756e-01 + 1.84922131e-01 1.85207652e-01 1.85493321e-01 1.85779136e-01 1.86065098e-01 + 1.86351206e-01 1.86637461e-01 1.86923861e-01 1.87210407e-01 1.87497099e-01 + 1.87783936e-01 1.88070919e-01 1.88358046e-01 1.88645318e-01 1.88932734e-01 + 1.89220295e-01 1.89508000e-01 1.89795849e-01 1.90083842e-01 1.90371978e-01 + 1.90660258e-01 1.90948681e-01 1.91237246e-01 1.91525955e-01 1.91814806e-01 + 1.92103799e-01 1.92392935e-01 1.92682212e-01 1.92971631e-01 1.93261192e-01 + 1.93550894e-01 1.93840737e-01 1.94130721e-01 1.94420846e-01 1.94711111e-01 + 1.95001517e-01 1.95292063e-01 1.95582748e-01 1.95873574e-01 1.96164539e-01 + 1.96455643e-01 1.96746886e-01 1.97038269e-01 1.97329790e-01 1.97621449e-01 + 1.97913247e-01 1.98205183e-01 1.98497257e-01 1.98789469e-01 1.99081818e-01 + 1.99374304e-01 1.99666928e-01 1.99959688e-01 2.00252585e-01 2.00545619e-01 + 2.00838789e-01 2.01132095e-01 2.01425537e-01 2.01719114e-01 2.02012828e-01 + 2.02306676e-01 2.02600660e-01 2.02894778e-01 2.03189031e-01 2.03483419e-01 + 2.03777941e-01 2.04072597e-01 2.04367387e-01 2.04662311e-01 2.04957368e-01 + 2.05252558e-01 2.05547882e-01 2.05843338e-01 2.06138928e-01 2.06434649e-01 + 2.06730503e-01 2.07026489e-01 2.07322607e-01 2.07618857e-01 2.07915238e-01 + 2.08211750e-01 2.08508394e-01 2.08805168e-01 2.09102073e-01 2.09399109e-01 + 2.09696275e-01 2.09993571e-01 2.10290997e-01 2.10588552e-01 2.10886237e-01 + 2.11184052e-01 2.11481995e-01 2.11780068e-01 2.12078269e-01 2.12376598e-01 + 2.12675056e-01 2.12973642e-01 2.13272356e-01 2.13571197e-01 2.13870166e-01 + 2.14169263e-01 2.14468486e-01 2.14767837e-01 2.15067314e-01 2.15366917e-01 + 2.15666647e-01 2.15966503e-01 2.16266485e-01 2.16566592e-01 2.16866825e-01 + 2.17167184e-01 2.17467667e-01 2.17768276e-01 2.18069009e-01 2.18369866e-01 + 2.18670848e-01 2.18971954e-01 2.19273184e-01 2.19574538e-01 2.19876015e-01 + 2.20177615e-01 2.20479339e-01 2.20781185e-01 2.21083155e-01 2.21385246e-01 + 2.21687460e-01 2.21989797e-01 2.22292255e-01 2.22594835e-01 2.22897536e-01 + 2.23200359e-01 2.23503303e-01 2.23806367e-01 2.24109553e-01 2.24412859e-01 + 2.24716285e-01 2.25019832e-01 2.25323498e-01 2.25627285e-01 2.25931191e-01 + 2.26235216e-01 2.26539360e-01 2.26843623e-01 2.27148005e-01 2.27452506e-01 + 2.27757125e-01 2.28061862e-01 2.28366717e-01 2.28671690e-01 2.28976780e-01 + 2.29281988e-01 2.29587313e-01 2.29892755e-01 2.30198313e-01 2.30503989e-01 + 2.30809780e-01 2.31115688e-01 2.31421712e-01 2.31727852e-01 2.32034107e-01 + 2.32340478e-01 2.32646964e-01 2.32953565e-01 2.33260280e-01 2.33567111e-01 + 2.33874055e-01 2.34181114e-01 2.34488287e-01 2.34795574e-01 2.35102975e-01 + 2.35410489e-01 2.35718116e-01 2.36025856e-01 2.36333709e-01 2.36641675e-01 + 2.36949753e-01 2.37257943e-01 2.37566246e-01 2.37874660e-01 2.38183186e-01 + 2.38491824e-01 2.38800572e-01 2.39109432e-01 2.39418403e-01 2.39727484e-01 + 2.40036676e-01 2.40345978e-01 2.40655391e-01 2.40964913e-01 2.41274545e-01 + 2.41584286e-01 2.41894137e-01 2.42204097e-01 2.42514166e-01 2.42824344e-01 + 2.43134630e-01 2.43445024e-01 2.43755527e-01 2.44066138e-01 2.44376856e-01 + 2.44687682e-01 2.44998615e-01 2.45309656e-01 2.45620803e-01 2.45932058e-01 + 2.46243419e-01 2.46554886e-01 2.46866459e-01 2.47178139e-01 2.47489924e-01 + 2.47801815e-01 2.48113812e-01 2.48425913e-01 2.48738120e-01 2.49050431e-01 + 2.49362848e-01 2.49675368e-01 2.49987993e-01 2.50300722e-01 2.50613555e-01 + 2.50926492e-01 2.51239532e-01 2.51552675e-01 2.51865922e-01 2.52179271e-01 + 2.52492723e-01 2.52806278e-01 2.53119935e-01 2.53433694e-01 2.53747555e-01 + 2.54061518e-01 2.54375582e-01 2.54689748e-01 2.55004015e-01 2.55318383e-01 + 2.55632851e-01 2.55947421e-01 2.56262090e-01 2.56576860e-01 2.56891730e-01 + 2.57206700e-01 2.57521770e-01 2.57836938e-01 2.58152207e-01 2.58467574e-01 + 2.58783040e-01 2.59098605e-01 2.59414268e-01 2.59730029e-01 2.60045889e-01 + 2.60361847e-01 2.60677902e-01 2.60994055e-01 2.61310305e-01 2.61626652e-01 + 2.61943096e-01 2.62259637e-01 2.62576275e-01 2.62893009e-01 2.63209839e-01 + 2.63526765e-01 2.63843787e-01 2.64160905e-01 2.64478118e-01 2.64795426e-01 + 2.65112830e-01 2.65430328e-01 2.65747921e-01 2.66065608e-01 2.66383390e-01 + 2.66701265e-01 2.67019235e-01 2.67337298e-01 2.67655455e-01 2.67973706e-01 + 2.68292049e-01 2.68610485e-01 2.68929014e-01 2.69247636e-01 2.69566350e-01 + 2.69885156e-01 2.70204055e-01 2.70523045e-01 2.70842127e-01 2.71161300e-01 + 2.71480564e-01 2.71799920e-01 2.72119366e-01 2.72438903e-01 2.72758531e-01 + 2.73078249e-01 2.73398057e-01 2.73717955e-01 2.74037942e-01 2.74358019e-01 + 2.74678186e-01 2.74998442e-01 2.75318787e-01 2.75639220e-01 2.75959743e-01 + 2.76280353e-01 2.76601052e-01 2.76921839e-01 2.77242714e-01 2.77563676e-01 + 2.77884726e-01 2.78205864e-01 2.78527088e-01 2.78848399e-01 2.79169798e-01 + 2.79491282e-01 2.79812853e-01 2.80134510e-01 2.80456254e-01 2.80778083e-01 + 2.81099997e-01 2.81421997e-01 2.81744083e-01 2.82066253e-01 2.82388508e-01 + 2.82710848e-01 2.83033273e-01 2.83355782e-01 2.83678374e-01 2.84001051e-01 + 2.84323812e-01 2.84646656e-01 2.84969584e-01 2.85292594e-01 2.85615688e-01 + 2.85938865e-01 2.86262124e-01 2.86585466e-01 2.86908890e-01 2.87232396e-01 + 2.87555984e-01 2.87879654e-01 2.88203405e-01 2.88527238e-01 2.88851152e-01 + 2.89175147e-01 2.89499222e-01 2.89823378e-01 2.90147615e-01 2.90471932e-01 + 2.90796329e-01 2.91120806e-01 2.91445362e-01 2.91769999e-01 2.92094714e-01 + 2.92419508e-01 2.92744382e-01 2.93069334e-01 2.93394365e-01 2.93719474e-01 + 2.94044662e-01 2.94369927e-01 2.94695271e-01 2.95020692e-01 2.95346191e-01 + 2.95671767e-01 2.95997420e-01 2.96323150e-01 2.96648956e-01 2.96974840e-01 + 2.97300799e-01 2.97626835e-01 2.97952947e-01 2.98279135e-01 2.98605399e-01 + 2.98931738e-01 2.99258152e-01 2.99584642e-01 2.99911206e-01 3.00237845e-01 + 3.00564559e-01 3.00891347e-01 3.01218209e-01 3.01545146e-01 3.01872156e-01 + 3.02199240e-01 3.02526398e-01 3.02853628e-01 3.03180932e-01 3.03508309e-01 + 3.03835759e-01 3.04163281e-01 3.04490876e-01 3.04818543e-01 3.05146281e-01 + 3.05474092e-01 3.05801975e-01 3.06129929e-01 3.06457954e-01 3.06786051e-01 + 3.07114218e-01 3.07442456e-01 3.07770765e-01 3.08099145e-01 3.08427594e-01 + 3.08756114e-01 3.09084703e-01 3.09413363e-01 3.09742091e-01 3.10070890e-01 + 3.10399757e-01 3.10728693e-01 3.11057699e-01 3.11386772e-01 3.11715915e-01 + 3.12045125e-01 3.12374404e-01 3.12703751e-01 3.13033165e-01 3.13362647e-01 + 3.13692197e-01 3.14021813e-01 3.14351497e-01 3.14681248e-01 3.15011065e-01 + 3.15340949e-01 3.15670899e-01 3.16000915e-01 3.16330997e-01 3.16661145e-01 + 3.16991359e-01 3.17321638e-01 3.17651983e-01 3.17982392e-01 3.18312867e-01 + 3.18643406e-01 3.18974010e-01 3.19304678e-01 3.19635411e-01 3.19966207e-01 + 3.20297067e-01 3.20627992e-01 3.20958979e-01 3.21290030e-01 3.21621144e-01 + 3.21952321e-01 3.22283561e-01 3.22614864e-01 3.22946229e-01 3.23277656e-01 + 3.23609146e-01 3.23940697e-01 3.24272310e-01 3.24603985e-01 3.24935721e-01 + 3.25267519e-01 3.25599377e-01 3.25931297e-01 3.26263277e-01 3.26595317e-01 + 3.26927419e-01 3.27259580e-01 3.27591801e-01 3.27924082e-01 3.28256423e-01 + 3.28588824e-01 3.28921283e-01 3.29253802e-01 3.29586380e-01 3.29919017e-01 + 3.30251712e-01 3.30584466e-01 3.30917278e-01 3.31250149e-01 3.31583077e-01 + 3.31916063e-01 3.32249107e-01 3.32582208e-01 3.32915366e-01 3.33248582e-01 + 3.33581854e-01 3.33915183e-01 3.34248569e-01 3.34582011e-01 3.34915510e-01 + 3.35249064e-01 3.35582675e-01 3.35916341e-01 3.36250062e-01 3.36583839e-01 + 3.36917672e-01 3.37251559e-01 3.37585501e-01 3.37919498e-01 3.38253550e-01 + 3.38587656e-01 3.38921816e-01 3.39256030e-01 3.39590298e-01 3.39924620e-01 + 3.40258995e-01 3.40593423e-01 3.40927905e-01 3.41262440e-01 3.41597027e-01 + 3.41931667e-01 3.42266360e-01 3.42601105e-01 3.42935903e-01 3.43270752e-01 + 3.43605653e-01 3.43940606e-01 3.44275610e-01 3.44610666e-01 3.44945772e-01 + 3.45280930e-01 3.45616139e-01 3.45951398e-01 3.46286708e-01 3.46622068e-01 + 3.46957478e-01 3.47292938e-01 3.47628448e-01 3.47964008e-01 3.48299617e-01 + 3.48635275e-01 3.48970983e-01 3.49306740e-01 3.49642545e-01 3.49978399e-01 + 3.50314302e-01 3.50650253e-01 3.50986252e-01 3.51322299e-01 3.51658394e-01 + 3.51994536e-01 3.52330726e-01 3.52666964e-01 3.53003248e-01 3.53339580e-01 + 3.53675958e-01 3.54012383e-01 3.54348855e-01 3.54685373e-01 3.55021937e-01 + 3.55358547e-01 3.55695203e-01 3.56031904e-01 3.56368651e-01 3.56705444e-01 + 3.57042281e-01 3.57379164e-01 3.57716092e-01 3.58053064e-01 3.58390081e-01 + 3.58727142e-01 3.59064247e-01 3.59401397e-01 3.59738590e-01 3.60075827e-01 + 3.60413107e-01 3.60750431e-01 3.61087799e-01 3.61425209e-01 3.61762662e-01 + 3.62100158e-01 3.62437696e-01 3.62775277e-01 3.63112900e-01 3.63450566e-01 + 3.63788273e-01 3.64126022e-01 3.64463812e-01 3.64801645e-01 3.65139518e-01 + 3.65477432e-01 3.65815388e-01 3.66153384e-01 3.66491421e-01 3.66829498e-01 + 3.67167616e-01 3.67505774e-01 3.67843971e-01 3.68182209e-01 3.68520487e-01 + 3.68858803e-01 3.69197160e-01 3.69535555e-01 3.69873990e-01 3.70212463e-01 + 3.70550975e-01 3.70889526e-01 3.71228115e-01 3.71566742e-01 3.71905408e-01 + 3.72244111e-01 3.72582852e-01 3.72921631e-01 3.73260447e-01 3.73599300e-01 + 3.73938191e-01 3.74277119e-01 3.74616083e-01 3.74955084e-01 3.75294122e-01 + 3.75633196e-01 3.75972306e-01 3.76311452e-01 3.76650634e-01 3.76989852e-01 + 3.77329105e-01 3.77668394e-01 3.78007718e-01 3.78347077e-01 3.78686471e-01 + 3.79025899e-01 3.79365363e-01 3.79704861e-01 3.80044393e-01 3.80383959e-01 + 3.80723559e-01 3.81063194e-01 3.81402861e-01 3.81742563e-01 3.82082298e-01 + 3.82422065e-01 3.82761866e-01 3.83101700e-01 3.83441567e-01 3.83781466e-01 + 3.84121398e-01 3.84461362e-01 3.84801358e-01 3.85141386e-01 3.85481446e-01 + 3.85821538e-01 3.86161661e-01 3.86501816e-01 3.86842001e-01 3.87182218e-01 + 3.87522466e-01 3.87862744e-01 3.88203053e-01 3.88543393e-01 3.88883763e-01 + 3.89224162e-01 3.89564592e-01 3.89905052e-01 3.90245541e-01 3.90586060e-01 + 3.90926609e-01 3.91267186e-01 3.91607793e-01 3.91948428e-01 3.92289093e-01 + 3.92629785e-01 3.92970507e-01 3.93311256e-01 3.93652034e-01 3.93992840e-01 + 3.94333674e-01 3.94674535e-01 3.95015424e-01 3.95356341e-01 3.95697284e-01 + 3.96038255e-01 3.96379253e-01 3.96720277e-01 3.97061328e-01 3.97402406e-01 + 3.97743510e-01 3.98084640e-01 3.98425796e-01 3.98766978e-01 3.99108186e-01 + 3.99449420e-01 3.99790679e-01 4.00131963e-01 4.00473272e-01 4.00814607e-01 + 4.01155966e-01 4.01497350e-01 4.01838759e-01 4.02180192e-01 4.02521649e-01 + 4.02863130e-01 4.03204636e-01 4.03546165e-01 4.03887718e-01 4.04229294e-01 + 4.04570894e-01 4.04912517e-01 4.05254163e-01 4.05595832e-01 4.05937524e-01 + 4.06279238e-01 4.06620975e-01 4.06962734e-01 4.07304516e-01 4.07646319e-01 + 4.07988145e-01 4.08329992e-01 4.08671861e-01 4.09013751e-01 4.09355663e-01 + 4.09697596e-01 4.10039549e-01 4.10381524e-01 4.10723520e-01 4.11065536e-01 + 4.11407572e-01 4.11749629e-01 4.12091706e-01 4.12433803e-01 4.12775920e-01 + 4.13118057e-01 4.13460213e-01 4.13802389e-01 4.14144583e-01 4.14486798e-01 + 4.14829031e-01 4.15171283e-01 4.15513553e-01 4.15855843e-01 4.16198150e-01 + 4.16540476e-01 4.16882821e-01 4.17225183e-01 4.17567563e-01 4.17909961e-01 + 4.18252376e-01 4.18594809e-01 4.18937259e-01 4.19279726e-01 4.19622210e-01 + 4.19964711e-01 4.20307229e-01 4.20649763e-01 4.20992314e-01 4.21334881e-01 + 4.21677465e-01 4.22020064e-01 4.22362679e-01 4.22705310e-01 4.23047957e-01 + 4.23390619e-01 4.23733296e-01 4.24075988e-01 4.24418696e-01 4.24761418e-01 + 4.25104155e-01 4.25446907e-01 4.25789673e-01 4.26132454e-01 4.26475249e-01 + 4.26818057e-01 4.27160880e-01 4.27503717e-01 4.27846567e-01 4.28189430e-01 + 4.28532307e-01 4.28875197e-01 4.29218101e-01 4.29561017e-01 4.29903946e-01 + 4.30246888e-01 4.30589842e-01 4.30932808e-01 4.31275787e-01 4.31618778e-01 + 4.31961781e-01 4.32304796e-01 4.32647822e-01 4.32990860e-01 4.33333909e-01 + 4.33676970e-01 4.34020042e-01 4.34363125e-01 4.34706219e-01 4.35049323e-01 + 4.35392438e-01 4.35735564e-01 4.36078700e-01 4.36421846e-01 4.36765002e-01 + 4.37108168e-01 4.37451344e-01 4.37794529e-01 4.38137724e-01 4.38480929e-01 + 4.38824142e-01 4.39167365e-01 4.39510597e-01 4.39853837e-01 4.40197087e-01 + 4.40540345e-01 4.40883611e-01 4.41226885e-01 4.41570168e-01 4.41913459e-01 + 4.42256758e-01 4.42600064e-01 4.42943378e-01 4.43286700e-01 4.43630029e-01 + 4.43973365e-01 4.44316708e-01 4.44660058e-01 4.45003416e-01 4.45346779e-01 + 4.45690150e-01 4.46033526e-01 4.46376910e-01 4.46720299e-01 4.47063694e-01 + 4.47407095e-01 4.47750502e-01 4.48093915e-01 4.48437333e-01 4.48780757e-01 + 4.49124185e-01 4.49467619e-01 4.49811058e-01 4.50154502e-01 4.50497950e-01 + 4.50841403e-01 4.51184861e-01 4.51528322e-01 4.51871788e-01 4.52215259e-01 + 4.52558733e-01 4.52902210e-01 4.53245692e-01 4.53589177e-01 4.53932665e-01 + 4.54276157e-01 4.54619652e-01 4.54963150e-01 4.55306651e-01 4.55650154e-01 + 2.08130000e-04 2.08281191e-04 2.08734762e-04 2.09490714e-04 2.10549046e-04 + 2.11909757e-04 2.13572846e-04 2.15538310e-04 2.17806148e-04 2.20376358e-04 + 2.23248936e-04 2.26423882e-04 2.29901190e-04 2.33680858e-04 2.37762883e-04 + 2.42147260e-04 2.46833984e-04 2.51823051e-04 2.57114457e-04 2.62708196e-04 + 2.68604263e-04 2.74802652e-04 2.81303356e-04 2.88106370e-04 2.95211687e-04 + 3.02619299e-04 3.10329200e-04 3.18341382e-04 3.26655837e-04 3.35272557e-04 + 3.44191533e-04 3.53412758e-04 3.62936221e-04 3.72761913e-04 3.82889825e-04 + 3.93319947e-04 4.04052269e-04 4.15086779e-04 4.26423468e-04 4.38062324e-04 + 4.50003336e-04 4.62246492e-04 4.74791780e-04 4.87639188e-04 5.00788703e-04 + 5.14240312e-04 5.27994002e-04 5.42049760e-04 5.56407572e-04 5.71067423e-04 + 5.86029300e-04 6.01293187e-04 6.16859071e-04 6.32726934e-04 6.48896763e-04 + 6.65368541e-04 6.82142252e-04 6.99217880e-04 7.16595407e-04 7.34274817e-04 + 7.52256092e-04 7.70539216e-04 7.89124169e-04 8.08010934e-04 8.27199493e-04 + 8.46689825e-04 8.66481913e-04 8.86575737e-04 9.06971278e-04 9.27668514e-04 + 9.48667427e-04 9.69967995e-04 9.91570198e-04 1.01347401e-03 1.03567942e-03 + 1.05818640e-03 1.08099493e-03 1.10410498e-03 1.12751654e-03 1.15122957e-03 + 1.17524406e-03 1.19955999e-03 1.22417733e-03 1.24909605e-03 1.27431613e-03 + 1.29983755e-03 1.32566029e-03 1.35178430e-03 1.37820958e-03 1.40493610e-03 + 1.43196382e-03 1.45929272e-03 1.48692278e-03 1.51485397e-03 1.54308626e-03 + 1.57161963e-03 1.60045404e-03 1.62958946e-03 1.65902588e-03 1.68876325e-03 + 1.71880156e-03 1.74914077e-03 1.77978085e-03 1.81072177e-03 1.84196351e-03 + 1.87350602e-03 1.90534929e-03 1.93749327e-03 1.96993795e-03 2.00268328e-03 + 2.03572923e-03 2.06907577e-03 2.10272288e-03 2.13667051e-03 2.17091863e-03 + 2.20546721e-03 2.24031622e-03 2.27546562e-03 2.31091538e-03 2.34666546e-03 + 2.38271583e-03 2.41906645e-03 2.45571729e-03 2.49266831e-03 2.52991947e-03 + 2.56747075e-03 2.60532209e-03 2.64347347e-03 2.68192485e-03 2.72067619e-03 + 2.75972745e-03 2.79907859e-03 2.83872959e-03 2.87868038e-03 2.91893095e-03 + 2.95948125e-03 3.00033123e-03 3.04148087e-03 3.08293011e-03 3.12467892e-03 + 3.16672726e-03 3.20907509e-03 3.25172236e-03 3.29466904e-03 3.33791508e-03 + 3.38146044e-03 3.42530507e-03 3.46944894e-03 3.51389201e-03 3.55863422e-03 + 3.60367554e-03 3.64901591e-03 3.69465531e-03 3.74059367e-03 3.78683096e-03 + 3.83336714e-03 3.88020215e-03 3.92733595e-03 3.97476850e-03 4.02249975e-03 + 4.07052965e-03 4.11885815e-03 4.16748522e-03 4.21641079e-03 4.26563483e-03 + 4.31515728e-03 4.36497811e-03 4.41509725e-03 4.46551466e-03 4.51623029e-03 + 4.56724409e-03 4.61855601e-03 4.67016601e-03 4.72207403e-03 4.77428002e-03 + 4.82678393e-03 4.87958570e-03 4.93268530e-03 4.98608266e-03 5.03977774e-03 + 5.09377048e-03 5.14806083e-03 5.20264873e-03 5.25753414e-03 5.31271700e-03 + 5.36819725e-03 5.42397485e-03 5.48004973e-03 5.53642185e-03 5.59309115e-03 + 5.65005757e-03 5.70732106e-03 5.76488157e-03 5.82273903e-03 5.88089339e-03 + 5.93934459e-03 5.99809258e-03 6.05713731e-03 6.11647870e-03 6.17611671e-03 + 6.23605128e-03 6.29628235e-03 6.35680986e-03 6.41763375e-03 6.47875396e-03 + 6.54017044e-03 6.60188312e-03 6.66389194e-03 6.72619685e-03 6.78879778e-03 + 6.85169468e-03 6.91488748e-03 6.97837611e-03 7.04216053e-03 7.10624066e-03 + 7.17061645e-03 7.23528783e-03 7.30025474e-03 7.36551712e-03 7.43107490e-03 + 7.49692802e-03 7.56307641e-03 7.62952002e-03 7.69625878e-03 7.76329262e-03 + 7.83062147e-03 7.89824528e-03 7.96616398e-03 8.03437750e-03 8.10288577e-03 + 8.17168874e-03 8.24078632e-03 8.31017847e-03 8.37986510e-03 8.44984615e-03 + 8.52012155e-03 8.59069124e-03 8.66155515e-03 8.73271321e-03 8.80416535e-03 + 8.87591149e-03 8.94795158e-03 9.02028554e-03 9.09291331e-03 9.16583480e-03 + 9.23904995e-03 9.31255870e-03 9.38636096e-03 9.46045668e-03 9.53484577e-03 + 9.60952816e-03 9.68450379e-03 9.75977258e-03 9.83533445e-03 9.91118934e-03 + 9.98733717e-03 1.00637779e-02 1.01405114e-02 1.02175376e-02 1.02948564e-02 + 1.03724679e-02 1.04503718e-02 1.05285681e-02 1.06070568e-02 1.06858378e-02 + 1.07649109e-02 1.08442762e-02 1.09239335e-02 1.10038828e-02 1.10841240e-02 + 1.11646570e-02 1.12454817e-02 1.13265980e-02 1.14080060e-02 1.14897054e-02 + 1.15716963e-02 1.16539785e-02 1.17365519e-02 1.18194166e-02 1.19025723e-02 + 1.19860191e-02 1.20697568e-02 1.21537854e-02 1.22381047e-02 1.23227148e-02 + 1.24076155e-02 1.24928067e-02 1.25782883e-02 1.26640604e-02 1.27501227e-02 + 1.28364752e-02 1.29231179e-02 1.30100506e-02 1.30972732e-02 1.31847858e-02 + 1.32725881e-02 1.33606801e-02 1.34490618e-02 1.35377329e-02 1.36266936e-02 + 1.37159436e-02 1.38054829e-02 1.38953113e-02 1.39854289e-02 1.40758355e-02 + 1.41665311e-02 1.42575155e-02 1.43487886e-02 1.44403504e-02 1.45322008e-02 + 1.46243398e-02 1.47167671e-02 1.48094827e-02 1.49024866e-02 1.49957786e-02 + 1.50893587e-02 1.51832267e-02 1.52773826e-02 1.53718263e-02 1.54665577e-02 + 1.55615767e-02 1.56568832e-02 1.57524771e-02 1.58483584e-02 1.59445269e-02 + 1.60409825e-02 1.61377252e-02 1.62347549e-02 1.63320714e-02 1.64296747e-02 + 1.65275647e-02 1.66257413e-02 1.67242043e-02 1.68229538e-02 1.69219896e-02 + 1.70213116e-02 1.71209197e-02 1.72208138e-02 1.73209939e-02 1.74214598e-02 + 1.75222114e-02 1.76232487e-02 1.77245715e-02 1.78261798e-02 1.79280734e-02 + 1.80302523e-02 1.81327163e-02 1.82354654e-02 1.83384994e-02 1.84418184e-02 + 1.85454220e-02 1.86493104e-02 1.87534833e-02 1.88579407e-02 1.89626824e-02 + 1.90677084e-02 1.91730186e-02 1.92786129e-02 1.93844911e-02 1.94906532e-02 + 1.95970991e-02 1.97038286e-02 1.98108417e-02 1.99181382e-02 2.00257182e-02 + 2.01335813e-02 2.02417277e-02 2.03501571e-02 2.04588694e-02 2.05678646e-02 + 2.06771425e-02 2.07867031e-02 2.08965462e-02 2.10066717e-02 2.11170796e-02 + 2.12277697e-02 2.13387419e-02 2.14499962e-02 2.15615323e-02 2.16733503e-02 + 2.17854499e-02 2.18978311e-02 2.20104938e-02 2.21234379e-02 2.22366633e-02 + 2.23501698e-02 2.24639574e-02 2.25780260e-02 2.26923753e-02 2.28070055e-02 + 2.29219162e-02 2.30371074e-02 2.31525791e-02 2.32683311e-02 2.33843632e-02 + 2.35006755e-02 2.36172677e-02 2.37341397e-02 2.38512915e-02 2.39687230e-02 + 2.40864339e-02 2.42044243e-02 2.43226940e-02 2.44412429e-02 2.45600709e-02 + 2.46791779e-02 2.47985637e-02 2.49182282e-02 2.50381714e-02 2.51583931e-02 + 2.52788932e-02 2.53996717e-02 2.55207283e-02 2.56420629e-02 2.57636755e-02 + 2.58855660e-02 2.60077341e-02 2.61301799e-02 2.62529032e-02 2.63759039e-02 + 2.64991818e-02 2.66227368e-02 2.67465689e-02 2.68706779e-02 2.69950637e-02 + 2.71197262e-02 2.72446653e-02 2.73698808e-02 2.74953726e-02 2.76211406e-02 + 2.77471848e-02 2.78735049e-02 2.80001009e-02 2.81269726e-02 2.82541199e-02 + 2.83815427e-02 2.85092409e-02 2.86372144e-02 2.87654630e-02 2.88939867e-02 + 2.90227852e-02 2.91518585e-02 2.92812065e-02 2.94108290e-02 2.95407260e-02 + 2.96708972e-02 2.98013426e-02 2.99320621e-02 3.00630555e-02 3.01943227e-02 + 3.03258636e-02 3.04576781e-02 3.05897660e-02 3.07221272e-02 3.08547616e-02 + 3.09876691e-02 3.11208496e-02 3.12543028e-02 3.13880288e-02 3.15220273e-02 + 3.16562983e-02 3.17908416e-02 3.19256571e-02 3.20607447e-02 3.21961042e-02 + 3.23317356e-02 3.24676386e-02 3.26038132e-02 3.27402593e-02 3.28769766e-02 + 3.30139652e-02 3.31512248e-02 3.32887554e-02 3.34265567e-02 3.35646288e-02 + 3.37029714e-02 3.38415844e-02 3.39804677e-02 3.41196212e-02 3.42590447e-02 + 3.43987381e-02 3.45387013e-02 3.46789341e-02 3.48194365e-02 3.49602082e-02 + 3.51012492e-02 3.52425593e-02 3.53841384e-02 3.55259864e-02 3.56681031e-02 + 3.58104884e-02 3.59531422e-02 3.60960643e-02 3.62392547e-02 3.63827131e-02 + 3.65264394e-02 3.66704335e-02 3.68146954e-02 3.69592247e-02 3.71040215e-02 + 3.72490856e-02 3.73944167e-02 3.75400149e-02 3.76858800e-02 3.78320118e-02 + 3.79784102e-02 3.81250751e-02 3.82720063e-02 3.84192037e-02 3.85666672e-02 + 3.87143966e-02 3.88623918e-02 3.90106526e-02 3.91591790e-02 3.93079707e-02 + 3.94570277e-02 3.96063498e-02 3.97559369e-02 3.99057888e-02 4.00559054e-02 + 4.02062865e-02 4.03569321e-02 4.05078419e-02 4.06590159e-02 4.08104539e-02 + 4.09621558e-02 4.11141214e-02 4.12663506e-02 4.14188432e-02 4.15715991e-02 + 4.17246182e-02 4.18779004e-02 4.20314454e-02 4.21852532e-02 4.23393235e-02 + 4.24936564e-02 4.26482515e-02 4.28031089e-02 4.29582283e-02 4.31136096e-02 + 4.32692526e-02 4.34251573e-02 4.35813234e-02 4.37377508e-02 4.38944395e-02 + 4.40513892e-02 4.42085998e-02 4.43660711e-02 4.45238031e-02 4.46817956e-02 + 4.48400483e-02 4.49985613e-02 4.51573343e-02 4.53163671e-02 4.54756598e-02 + 4.56352120e-02 4.57950237e-02 4.59550947e-02 4.61154249e-02 4.62760141e-02 + 4.64368622e-02 4.65979690e-02 4.67593344e-02 4.69209582e-02 4.70828403e-02 + 4.72449806e-02 4.74073789e-02 4.75700350e-02 4.77329488e-02 4.78961202e-02 + 4.80595489e-02 4.82232350e-02 4.83871781e-02 4.85513782e-02 4.87158351e-02 + 4.88805487e-02 4.90455188e-02 4.92107453e-02 4.93762280e-02 4.95419667e-02 + 4.97079614e-02 4.98742118e-02 5.00407179e-02 5.02074794e-02 5.03744963e-02 + 5.05417683e-02 5.07092953e-02 5.08770772e-02 5.10451138e-02 5.12134049e-02 + 5.13819505e-02 5.15507503e-02 5.17198043e-02 5.18891121e-02 5.20586738e-02 + 5.22284892e-02 5.23985580e-02 5.25688802e-02 5.27394555e-02 5.29102839e-02 + 5.30813652e-02 5.32526992e-02 5.34242858e-02 5.35961248e-02 5.37682161e-02 + 5.39405595e-02 5.41131548e-02 5.42860020e-02 5.44591008e-02 5.46324511e-02 + 5.48060527e-02 5.49799055e-02 5.51540094e-02 5.53283641e-02 5.55029695e-02 + 5.56778255e-02 5.58529319e-02 5.60282885e-02 5.62038952e-02 5.63797519e-02 + 5.65558583e-02 5.67322144e-02 5.69088199e-02 5.70856747e-02 5.72627786e-02 + 5.74401316e-02 5.76177334e-02 5.77955838e-02 5.79736828e-02 5.81520301e-02 + 5.83306256e-02 5.85094691e-02 5.86885605e-02 5.88678997e-02 5.90474864e-02 + 5.92273205e-02 5.94074018e-02 5.95877302e-02 5.97683055e-02 5.99491276e-02 + 6.01301963e-02 6.03115114e-02 6.04930728e-02 6.06748803e-02 6.08569338e-02 + 6.10392330e-02 6.12217779e-02 6.14045683e-02 6.15876039e-02 6.17708848e-02 + 6.19544105e-02 6.21381812e-02 6.23221964e-02 6.25064562e-02 6.26909603e-02 + 6.28757085e-02 6.30607008e-02 6.32459369e-02 6.34314167e-02 6.36171400e-02 + 6.38031067e-02 6.39893165e-02 6.41757694e-02 6.43624651e-02 6.45494036e-02 + 6.47365845e-02 6.49240078e-02 6.51116734e-02 6.52995809e-02 6.54877303e-02 + 6.56761215e-02 6.58647541e-02 6.60536282e-02 6.62427434e-02 6.64320997e-02 + 6.66216969e-02 6.68115348e-02 6.70016132e-02 6.71919320e-02 6.73824910e-02 + 6.75732900e-02 6.77643289e-02 6.79556075e-02 6.81471257e-02 6.83388832e-02 + 6.85308799e-02 6.87231157e-02 6.89155904e-02 6.91083037e-02 6.93012556e-02 + 6.94944458e-02 6.96878742e-02 6.98815407e-02 7.00754450e-02 7.02695870e-02 + 7.04639665e-02 7.06585833e-02 7.08534374e-02 7.10485284e-02 7.12438563e-02 + 7.14394208e-02 7.16352219e-02 7.18312593e-02 7.20275328e-02 7.22240423e-02 + 7.24207876e-02 7.26177686e-02 7.28149851e-02 7.30124368e-02 7.32101237e-02 + 7.34080456e-02 7.36062022e-02 7.38045935e-02 7.40032192e-02 7.42020791e-02 + 7.44011732e-02 7.46005012e-02 7.48000630e-02 7.49998583e-02 7.51998870e-02 + 7.54001490e-02 7.56006441e-02 7.58013720e-02 7.60023326e-02 7.62035258e-02 + 7.64049514e-02 7.66066092e-02 7.68084989e-02 7.70106206e-02 7.72129739e-02 + 7.74155587e-02 7.76183748e-02 7.78214221e-02 7.80247003e-02 7.82282094e-02 + 7.84319490e-02 7.86359192e-02 7.88401196e-02 7.90445501e-02 7.92492105e-02 + 7.94541007e-02 7.96592204e-02 7.98645695e-02 8.00701479e-02 8.02759553e-02 + 8.04819916e-02 8.06882565e-02 8.08947500e-02 8.11014718e-02 8.13084218e-02 + 8.15155998e-02 8.17230055e-02 8.19306389e-02 8.21384998e-02 8.23465879e-02 + 8.25549031e-02 8.27634452e-02 8.29722141e-02 8.31812095e-02 8.33904313e-02 + 8.35998794e-02 8.38095534e-02 8.40194533e-02 8.42295789e-02 8.44399299e-02 + 8.46505063e-02 8.48613078e-02 8.50723343e-02 8.52835855e-02 8.54950613e-02 + 8.57067616e-02 8.59186860e-02 8.61308346e-02 8.63432070e-02 8.65558031e-02 + 8.67686227e-02 8.69816656e-02 8.71949318e-02 8.74084208e-02 8.76221327e-02 + 8.78360672e-02 8.80502241e-02 8.82646033e-02 8.84792045e-02 8.86940276e-02 + 8.89090725e-02 8.91243388e-02 8.93398265e-02 8.95555354e-02 8.97714652e-02 + 8.99876159e-02 9.02039871e-02 9.04205788e-02 9.06373908e-02 9.08544228e-02 + 9.10716747e-02 9.12891463e-02 9.15068374e-02 9.17247478e-02 9.19428774e-02 + 9.21612260e-02 9.23797934e-02 9.25985793e-02 9.28175837e-02 9.30368064e-02 + 9.32562470e-02 9.34759056e-02 9.36957818e-02 9.39158756e-02 9.41361866e-02 + 9.43567148e-02 9.45774599e-02 9.47984219e-02 9.50196003e-02 9.52409952e-02 + 9.54626063e-02 9.56844334e-02 9.59064764e-02 9.61287350e-02 9.63512090e-02 + 9.65738984e-02 9.67968029e-02 9.70199222e-02 9.72432563e-02 9.74668050e-02 + 9.76905680e-02 9.79145452e-02 9.81387363e-02 9.83631413e-02 9.85877598e-02 + 9.88125918e-02 9.90376370e-02 9.92628953e-02 9.94883665e-02 9.97140503e-02 + 9.99399466e-02 1.00166055e-01 1.00392376e-01 1.00618909e-01 1.00845653e-01 + 1.01072609e-01 1.01299776e-01 1.01527155e-01 1.01754744e-01 1.01982545e-01 + 1.02210556e-01 1.02438777e-01 1.02667209e-01 1.02895850e-01 1.03124702e-01 + 1.03353763e-01 1.03583034e-01 1.03812514e-01 1.04042203e-01 1.04272101e-01 + 1.04502207e-01 1.04732523e-01 1.04963046e-01 1.05193778e-01 1.05424718e-01 + 1.05655865e-01 1.05887221e-01 1.06118783e-01 1.06350553e-01 1.06582530e-01 + 1.06814713e-01 1.07047104e-01 1.07279701e-01 1.07512504e-01 1.07745513e-01 + 1.07978728e-01 1.08212148e-01 1.08445775e-01 1.08679606e-01 1.08913643e-01 + 1.09147884e-01 1.09382331e-01 1.09616982e-01 1.09851837e-01 1.10086896e-01 + 1.10322160e-01 1.10557627e-01 1.10793298e-01 1.11029172e-01 1.11265249e-01 + 1.11501530e-01 1.11738013e-01 1.11974699e-01 1.12211587e-01 1.12448678e-01 + 1.12685971e-01 1.12923465e-01 1.13161162e-01 1.13399059e-01 1.13637158e-01 + 1.13875458e-01 1.14113960e-01 1.14352661e-01 1.14591564e-01 1.14830666e-01 + 1.15069969e-01 1.15309472e-01 1.15549174e-01 1.15789076e-01 1.16029178e-01 + 1.16269478e-01 1.16509978e-01 1.16750676e-01 1.16991573e-01 1.17232669e-01 + 1.17473962e-01 1.17715454e-01 1.17957143e-01 1.18199030e-01 1.18441115e-01 + 1.18683397e-01 1.18925875e-01 1.19168551e-01 1.19411423e-01 1.19654492e-01 + 1.19897757e-01 1.20141218e-01 1.20384875e-01 1.20628728e-01 1.20872776e-01 + 1.21117020e-01 1.21361458e-01 1.21606092e-01 1.21850920e-01 1.22095943e-01 + 1.22341160e-01 1.22586571e-01 1.22832176e-01 1.23077975e-01 1.23323967e-01 + 1.23570153e-01 1.23816532e-01 1.24063104e-01 1.24309869e-01 1.24556826e-01 + 1.24803975e-01 1.25051317e-01 1.25298851e-01 1.25546576e-01 1.25794494e-01 + 1.26042602e-01 1.26290902e-01 1.26539393e-01 1.26788074e-01 1.27036946e-01 + 1.27286009e-01 1.27535261e-01 1.27784704e-01 1.28034337e-01 1.28284159e-01 + 1.28534171e-01 1.28784372e-01 1.29034762e-01 1.29285340e-01 1.29536108e-01 + 1.29787064e-01 1.30038208e-01 1.30289540e-01 1.30541060e-01 1.30792768e-01 + 1.31044663e-01 1.31296746e-01 1.31549015e-01 1.31801471e-01 1.32054115e-01 + 1.32306944e-01 1.32559960e-01 1.32813162e-01 1.33066550e-01 1.33320123e-01 + 1.33573882e-01 1.33827826e-01 1.34081956e-01 1.34336270e-01 1.34590769e-01 + 1.34845452e-01 1.35100320e-01 1.35355372e-01 1.35610608e-01 1.35866027e-01 + 1.36121630e-01 1.36377417e-01 1.36633386e-01 1.36889538e-01 1.37145873e-01 + 1.37402391e-01 1.37659091e-01 1.37915973e-01 1.38173037e-01 1.38430283e-01 + 1.38687710e-01 1.38945318e-01 1.39203108e-01 1.39461079e-01 1.39719230e-01 + 1.39977562e-01 1.40236074e-01 1.40494766e-01 1.40753639e-01 1.41012691e-01 + 1.41271922e-01 1.41531333e-01 1.41790923e-01 1.42050692e-01 1.42310640e-01 + 1.42570766e-01 1.42831071e-01 1.43091554e-01 1.43352214e-01 1.43613053e-01 + 1.43874069e-01 1.44135262e-01 1.44396633e-01 1.44658180e-01 1.44919904e-01 + 1.45181805e-01 1.45443882e-01 1.45706135e-01 1.45968565e-01 1.46231170e-01 + 1.46493950e-01 1.46756906e-01 1.47020037e-01 1.47283343e-01 1.47546824e-01 + 1.47810479e-01 1.48074308e-01 1.48338312e-01 1.48602490e-01 1.48866841e-01 + 1.49131366e-01 1.49396065e-01 1.49660936e-01 1.49925981e-01 1.50191198e-01 + 1.50456588e-01 1.50722150e-01 1.50987884e-01 1.51253790e-01 1.51519868e-01 + 1.51786118e-01 1.52052539e-01 1.52319131e-01 1.52585894e-01 1.52852827e-01 + 1.53119932e-01 1.53387206e-01 1.53654651e-01 1.53922266e-01 1.54190050e-01 + 1.54458004e-01 1.54726127e-01 1.54994420e-01 1.55262881e-01 1.55531511e-01 + 1.55800310e-01 1.56069277e-01 1.56338412e-01 1.56607715e-01 1.56877186e-01 + 1.57146824e-01 1.57416630e-01 1.57686603e-01 1.57956743e-01 1.58227049e-01 + 1.58497522e-01 1.58768161e-01 1.59038967e-01 1.59309938e-01 1.59581075e-01 + 1.59852378e-01 1.60123846e-01 1.60395479e-01 1.60667277e-01 1.60939240e-01 + 1.61211367e-01 1.61483659e-01 1.61756114e-01 1.62028734e-01 1.62301517e-01 + 1.62574464e-01 1.62847574e-01 1.63120847e-01 1.63394283e-01 1.63667882e-01 + 1.63941644e-01 1.64215567e-01 1.64489653e-01 1.64763901e-01 1.65038310e-01 + 1.65312881e-01 1.65587613e-01 1.65862506e-01 1.66137560e-01 1.66412775e-01 + 1.66688150e-01 1.66963686e-01 1.67239381e-01 1.67515237e-01 1.67791252e-01 + 1.68067427e-01 1.68343761e-01 1.68620254e-01 1.68896906e-01 1.69173717e-01 + 1.69450686e-01 1.69727813e-01 1.70005098e-01 1.70282542e-01 1.70560143e-01 + 1.70837901e-01 1.71115817e-01 1.71393889e-01 1.71672119e-01 1.71950505e-01 + 1.72229048e-01 1.72507747e-01 1.72786602e-01 1.73065613e-01 1.73344779e-01 + 1.73624101e-01 1.73903579e-01 1.74183211e-01 1.74462998e-01 1.74742940e-01 + 1.75023036e-01 1.75303286e-01 1.75583691e-01 1.75864249e-01 1.76144961e-01 + 1.76425826e-01 1.76706845e-01 1.76988017e-01 1.77269341e-01 1.77550818e-01 + 1.77832448e-01 1.78114229e-01 1.78396163e-01 1.78678248e-01 1.78960486e-01 + 1.79242874e-01 1.79525414e-01 1.79808105e-01 1.80090946e-01 1.80373938e-01 + 1.80657081e-01 1.80940374e-01 1.81223816e-01 1.81507409e-01 1.81791151e-01 + 1.82075043e-01 1.82359084e-01 1.82643273e-01 1.82927612e-01 1.83212099e-01 + 1.83496734e-01 1.83781518e-01 1.84066450e-01 1.84351529e-01 1.84636756e-01 + 1.84922131e-01 1.85207652e-01 1.85493321e-01 1.85779136e-01 1.86065098e-01 + 1.86351206e-01 1.86637461e-01 1.86923861e-01 1.87210407e-01 1.87497099e-01 + 1.87783936e-01 1.88070919e-01 1.88358046e-01 1.88645318e-01 1.88932734e-01 + 1.89220295e-01 1.89508000e-01 1.89795849e-01 1.90083842e-01 1.90371978e-01 + 1.90660258e-01 1.90948681e-01 1.91237246e-01 1.91525955e-01 1.91814806e-01 + 1.92103799e-01 1.92392935e-01 1.92682212e-01 1.92971631e-01 1.93261192e-01 + 1.93550894e-01 1.93840737e-01 1.94130721e-01 1.94420846e-01 1.94711111e-01 + 1.95001517e-01 1.95292063e-01 1.95582748e-01 1.95873574e-01 1.96164539e-01 + 1.96455643e-01 1.96746886e-01 1.97038269e-01 1.97329790e-01 1.97621449e-01 + 1.97913247e-01 1.98205183e-01 1.98497257e-01 1.98789469e-01 1.99081818e-01 + 1.99374304e-01 1.99666928e-01 1.99959688e-01 2.00252585e-01 2.00545619e-01 + 2.00838789e-01 2.01132095e-01 2.01425537e-01 2.01719114e-01 2.02012828e-01 + 2.02306676e-01 2.02600660e-01 2.02894778e-01 2.03189031e-01 2.03483419e-01 + 2.03777941e-01 2.04072597e-01 2.04367387e-01 2.04662311e-01 2.04957368e-01 + 2.05252558e-01 2.05547882e-01 2.05843338e-01 2.06138928e-01 2.06434649e-01 + 2.06730503e-01 2.07026489e-01 2.07322607e-01 2.07618857e-01 2.07915238e-01 + 2.08211750e-01 2.08508394e-01 2.08805168e-01 2.09102073e-01 2.09399109e-01 + 2.09696275e-01 2.09993571e-01 2.10290997e-01 2.10588552e-01 2.10886237e-01 + 2.11184052e-01 2.11481995e-01 2.11780068e-01 2.12078269e-01 2.12376598e-01 + 2.12675056e-01 2.12973642e-01 2.13272356e-01 2.13571197e-01 2.13870166e-01 + 2.14169263e-01 2.14468486e-01 2.14767837e-01 2.15067314e-01 2.15366917e-01 + 2.15666647e-01 2.15966503e-01 2.16266485e-01 2.16566592e-01 2.16866825e-01 + 2.17167184e-01 2.17467667e-01 2.17768276e-01 2.18069009e-01 2.18369866e-01 + 2.18670848e-01 2.18971954e-01 2.19273184e-01 2.19574538e-01 2.19876015e-01 + 2.20177615e-01 2.20479339e-01 2.20781185e-01 2.21083155e-01 2.21385246e-01 + 2.21687460e-01 2.21989797e-01 2.22292255e-01 2.22594835e-01 2.22897536e-01 + 2.23200359e-01 2.23503303e-01 2.23806367e-01 2.24109553e-01 2.24412859e-01 + 2.24716285e-01 2.25019832e-01 2.25323498e-01 2.25627285e-01 2.25931191e-01 + 2.26235216e-01 2.26539360e-01 2.26843623e-01 2.27148005e-01 2.27452506e-01 + 2.27757125e-01 2.28061862e-01 2.28366717e-01 2.28671690e-01 2.28976780e-01 + 2.29281988e-01 2.29587313e-01 2.29892755e-01 2.30198313e-01 2.30503989e-01 + 2.30809780e-01 2.31115688e-01 2.31421712e-01 2.31727852e-01 2.32034107e-01 + 2.32340478e-01 2.32646964e-01 2.32953565e-01 2.33260280e-01 2.33567111e-01 + 2.33874055e-01 2.34181114e-01 2.34488287e-01 2.34795574e-01 2.35102975e-01 + 2.35410489e-01 2.35718116e-01 2.36025856e-01 2.36333709e-01 2.36641675e-01 + 2.36949753e-01 2.37257943e-01 2.37566246e-01 2.37874660e-01 2.38183186e-01 + 2.38491824e-01 2.38800572e-01 2.39109432e-01 2.39418403e-01 2.39727484e-01 + 2.40036676e-01 2.40345978e-01 2.40655391e-01 2.40964913e-01 2.41274545e-01 + 2.41584286e-01 2.41894137e-01 2.42204097e-01 2.42514166e-01 2.42824344e-01 + 2.43134630e-01 2.43445024e-01 2.43755527e-01 2.44066138e-01 2.44376856e-01 + 2.44687682e-01 2.44998615e-01 2.45309656e-01 2.45620803e-01 2.45932058e-01 + 2.46243419e-01 2.46554886e-01 2.46866459e-01 2.47178139e-01 2.47489924e-01 + 2.47801815e-01 2.48113812e-01 2.48425913e-01 2.48738120e-01 2.49050431e-01 + 2.49362848e-01 2.49675368e-01 2.49987993e-01 2.50300722e-01 2.50613555e-01 + 2.50926492e-01 2.51239532e-01 2.51552675e-01 2.51865922e-01 2.52179271e-01 + 2.52492723e-01 2.52806278e-01 2.53119935e-01 2.53433694e-01 2.53747555e-01 + 2.54061518e-01 2.54375582e-01 2.54689748e-01 2.55004015e-01 2.55318383e-01 + 2.55632851e-01 2.55947421e-01 2.56262090e-01 2.56576860e-01 2.56891730e-01 + 2.57206700e-01 2.57521770e-01 2.57836938e-01 2.58152207e-01 2.58467574e-01 + 2.58783040e-01 2.59098605e-01 2.59414268e-01 2.59730029e-01 2.60045889e-01 + 2.60361847e-01 2.60677902e-01 2.60994055e-01 2.61310305e-01 2.61626652e-01 + 2.61943096e-01 2.62259637e-01 2.62576275e-01 2.62893009e-01 2.63209839e-01 + 2.63526765e-01 2.63843787e-01 2.64160905e-01 2.64478118e-01 2.64795426e-01 + 2.65112830e-01 2.65430328e-01 2.65747921e-01 2.66065608e-01 2.66383390e-01 + 2.66701265e-01 2.67019235e-01 2.67337298e-01 2.67655455e-01 2.67973706e-01 + 2.68292049e-01 2.68610485e-01 2.68929014e-01 2.69247636e-01 2.69566350e-01 + 2.69885156e-01 2.70204055e-01 2.70523045e-01 2.70842127e-01 2.71161300e-01 + 2.71480564e-01 2.71799920e-01 2.72119366e-01 2.72438903e-01 2.72758531e-01 + 2.73078249e-01 2.73398057e-01 2.73717955e-01 2.74037942e-01 2.74358019e-01 + 2.74678186e-01 2.74998442e-01 2.75318787e-01 2.75639220e-01 2.75959743e-01 + 2.76280353e-01 2.76601052e-01 2.76921839e-01 2.77242714e-01 2.77563676e-01 + 2.77884726e-01 2.78205864e-01 2.78527088e-01 2.78848399e-01 2.79169798e-01 + 2.79491282e-01 2.79812853e-01 2.80134510e-01 2.80456254e-01 2.80778083e-01 + 2.81099997e-01 2.81421997e-01 2.81744083e-01 2.82066253e-01 2.82388508e-01 + 2.82710848e-01 2.83033273e-01 2.83355782e-01 2.83678374e-01 2.84001051e-01 + 2.84323812e-01 2.84646656e-01 2.84969584e-01 2.85292594e-01 2.85615688e-01 + 2.85938865e-01 2.86262124e-01 2.86585466e-01 2.86908890e-01 2.87232396e-01 + 2.87555984e-01 2.87879654e-01 2.88203405e-01 2.88527238e-01 2.88851152e-01 + 2.89175147e-01 2.89499222e-01 2.89823378e-01 2.90147615e-01 2.90471932e-01 + 2.90796329e-01 2.91120806e-01 2.91445362e-01 2.91769999e-01 2.92094714e-01 + 2.92419508e-01 2.92744382e-01 2.93069334e-01 2.93394365e-01 2.93719474e-01 + 2.94044662e-01 2.94369927e-01 2.94695271e-01 2.95020692e-01 2.95346191e-01 + 2.95671767e-01 2.95997420e-01 2.96323150e-01 2.96648956e-01 2.96974840e-01 + 2.97300799e-01 2.97626835e-01 2.97952947e-01 2.98279135e-01 2.98605399e-01 + 2.98931738e-01 2.99258152e-01 2.99584642e-01 2.99911206e-01 3.00237845e-01 + 3.00564559e-01 3.00891347e-01 3.01218209e-01 3.01545146e-01 3.01872156e-01 + 3.02199240e-01 3.02526398e-01 3.02853628e-01 3.03180932e-01 3.03508309e-01 + 3.03835759e-01 3.04163281e-01 3.04490876e-01 3.04818543e-01 3.05146281e-01 + 3.05474092e-01 3.05801975e-01 3.06129929e-01 3.06457954e-01 3.06786051e-01 + 3.07114218e-01 3.07442456e-01 3.07770765e-01 3.08099145e-01 3.08427594e-01 + 3.08756114e-01 3.09084703e-01 3.09413363e-01 3.09742091e-01 3.10070890e-01 + 3.10399757e-01 3.10728693e-01 3.11057699e-01 3.11386772e-01 3.11715915e-01 + 3.12045125e-01 3.12374404e-01 3.12703751e-01 3.13033165e-01 3.13362647e-01 + 3.13692197e-01 3.14021813e-01 3.14351497e-01 3.14681248e-01 3.15011065e-01 + 3.15340949e-01 3.15670899e-01 3.16000915e-01 3.16330997e-01 3.16661145e-01 + 3.16991359e-01 3.17321638e-01 3.17651983e-01 3.17982392e-01 3.18312867e-01 + 3.18643406e-01 3.18974010e-01 3.19304678e-01 3.19635411e-01 3.19966207e-01 + 3.20297067e-01 3.20627992e-01 3.20958979e-01 3.21290030e-01 3.21621144e-01 + 3.21952321e-01 3.22283561e-01 3.22614864e-01 3.22946229e-01 3.23277656e-01 + 3.23609146e-01 3.23940697e-01 3.24272310e-01 3.24603985e-01 3.24935721e-01 + 3.25267519e-01 3.25599377e-01 3.25931297e-01 3.26263277e-01 3.26595317e-01 + 3.26927419e-01 3.27259580e-01 3.27591801e-01 3.27924082e-01 3.28256423e-01 + 3.28588824e-01 3.28921283e-01 3.29253802e-01 3.29586380e-01 3.29919017e-01 + 3.30251712e-01 3.30584466e-01 3.30917278e-01 3.31250149e-01 3.31583077e-01 + 3.31916063e-01 3.32249107e-01 3.32582208e-01 3.32915366e-01 3.33248582e-01 + 3.33581854e-01 3.33915183e-01 3.34248569e-01 3.34582011e-01 3.34915510e-01 + 3.35249064e-01 3.35582675e-01 3.35916341e-01 3.36250062e-01 3.36583839e-01 + 3.36917672e-01 3.37251559e-01 3.37585501e-01 3.37919498e-01 3.38253550e-01 + 3.38587656e-01 3.38921816e-01 3.39256030e-01 3.39590298e-01 3.39924620e-01 + 3.40258995e-01 3.40593423e-01 3.40927905e-01 3.41262440e-01 3.41597027e-01 + 3.41931667e-01 3.42266360e-01 3.42601105e-01 3.42935903e-01 3.43270752e-01 + 3.43605653e-01 3.43940606e-01 3.44275610e-01 3.44610666e-01 3.44945772e-01 + 3.45280930e-01 3.45616139e-01 3.45951398e-01 3.46286708e-01 3.46622068e-01 + 3.46957478e-01 3.47292938e-01 3.47628448e-01 3.47964008e-01 3.48299617e-01 + 3.48635275e-01 3.48970983e-01 3.49306740e-01 3.49642545e-01 3.49978399e-01 + 3.50314302e-01 3.50650253e-01 3.50986252e-01 3.51322299e-01 3.51658394e-01 + 3.51994536e-01 3.52330726e-01 3.52666964e-01 3.53003248e-01 3.53339580e-01 + 3.53675958e-01 3.54012383e-01 3.54348855e-01 3.54685373e-01 3.55021937e-01 + 3.55358547e-01 3.55695203e-01 3.56031904e-01 3.56368651e-01 3.56705444e-01 + 3.57042281e-01 3.57379164e-01 3.57716092e-01 3.58053064e-01 3.58390081e-01 + 3.58727142e-01 3.59064247e-01 3.59401397e-01 3.59738590e-01 3.60075827e-01 + 3.60413107e-01 3.60750431e-01 3.61087799e-01 3.61425209e-01 3.61762662e-01 + 3.62100158e-01 3.62437696e-01 3.62775277e-01 3.63112900e-01 3.63450566e-01 + 3.63788273e-01 3.64126022e-01 3.64463812e-01 3.64801645e-01 3.65139518e-01 + 3.65477432e-01 3.65815388e-01 3.66153384e-01 3.66491421e-01 3.66829498e-01 + 3.67167616e-01 3.67505774e-01 3.67843971e-01 3.68182209e-01 3.68520487e-01 + 3.68858803e-01 3.69197160e-01 3.69535555e-01 3.69873990e-01 3.70212463e-01 + 3.70550975e-01 3.70889526e-01 3.71228115e-01 3.71566742e-01 3.71905408e-01 + 3.72244111e-01 3.72582852e-01 3.72921631e-01 3.73260447e-01 3.73599300e-01 + 3.73938191e-01 3.74277119e-01 3.74616083e-01 3.74955084e-01 3.75294122e-01 + 3.75633196e-01 3.75972306e-01 3.76311452e-01 3.76650634e-01 3.76989852e-01 + 3.77329105e-01 3.77668394e-01 3.78007718e-01 3.78347077e-01 3.78686471e-01 + 3.79025899e-01 3.79365363e-01 3.79704861e-01 3.80044393e-01 3.80383959e-01 + 3.80723559e-01 3.81063194e-01 3.81402861e-01 3.81742563e-01 3.82082298e-01 + 3.82422065e-01 3.82761866e-01 3.83101700e-01 3.83441567e-01 3.83781466e-01 + 3.84121398e-01 3.84461362e-01 3.84801358e-01 3.85141386e-01 3.85481446e-01 + 3.85821538e-01 3.86161661e-01 3.86501816e-01 3.86842001e-01 3.87182218e-01 + 3.87522466e-01 3.87862744e-01 3.88203053e-01 3.88543393e-01 3.88883763e-01 + 3.89224162e-01 3.89564592e-01 3.89905052e-01 3.90245541e-01 3.90586060e-01 + 3.90926609e-01 3.91267186e-01 3.91607793e-01 3.91948428e-01 3.92289093e-01 + 3.92629785e-01 3.92970507e-01 3.93311256e-01 3.93652034e-01 3.93992840e-01 + 3.94333674e-01 3.94674535e-01 3.95015424e-01 3.95356341e-01 3.95697284e-01 + 3.96038255e-01 3.96379253e-01 3.96720277e-01 3.97061328e-01 3.97402406e-01 + 3.97743510e-01 3.98084640e-01 3.98425796e-01 3.98766978e-01 3.99108186e-01 + 3.99449420e-01 3.99790679e-01 4.00131963e-01 4.00473272e-01 4.00814607e-01 + 4.01155966e-01 4.01497350e-01 4.01838759e-01 4.02180192e-01 4.02521649e-01 + 4.02863130e-01 4.03204636e-01 4.03546165e-01 4.03887718e-01 4.04229294e-01 + 4.04570894e-01 4.04912517e-01 4.05254163e-01 4.05595832e-01 4.05937524e-01 + 4.06279238e-01 4.06620975e-01 4.06962734e-01 4.07304516e-01 4.07646319e-01 + 4.07988145e-01 4.08329992e-01 4.08671861e-01 4.09013751e-01 4.09355663e-01 + 4.09697596e-01 4.10039549e-01 4.10381524e-01 4.10723520e-01 4.11065536e-01 + 4.11407572e-01 4.11749629e-01 4.12091706e-01 4.12433803e-01 4.12775920e-01 + 4.13118057e-01 4.13460213e-01 4.13802389e-01 4.14144583e-01 4.14486798e-01 + 4.14829031e-01 4.15171283e-01 4.15513553e-01 4.15855843e-01 4.16198150e-01 + 4.16540476e-01 4.16882821e-01 4.17225183e-01 4.17567563e-01 4.17909961e-01 + 4.18252376e-01 4.18594809e-01 4.18937259e-01 4.19279726e-01 4.19622210e-01 + 4.19964711e-01 4.20307229e-01 4.20649763e-01 4.20992314e-01 4.21334881e-01 + 4.21677465e-01 4.22020064e-01 4.22362679e-01 4.22705310e-01 4.23047957e-01 + 4.23390619e-01 4.23733296e-01 4.24075988e-01 4.24418696e-01 4.24761418e-01 + 4.25104155e-01 4.25446907e-01 4.25789673e-01 4.26132454e-01 4.26475249e-01 + 4.26818057e-01 4.27160880e-01 4.27503717e-01 4.27846567e-01 4.28189430e-01 + 4.28532307e-01 4.28875197e-01 4.29218101e-01 4.29561017e-01 4.29903946e-01 + 4.30246888e-01 4.30589842e-01 4.30932808e-01 4.31275787e-01 4.31618778e-01 + 4.31961781e-01 4.32304796e-01 4.32647822e-01 4.32990860e-01 4.33333909e-01 + 4.33676970e-01 4.34020042e-01 4.34363125e-01 4.34706219e-01 4.35049323e-01 + 4.35392438e-01 4.35735564e-01 4.36078700e-01 4.36421846e-01 4.36765002e-01 + 4.37108168e-01 4.37451344e-01 4.37794529e-01 4.38137724e-01 4.38480929e-01 + 4.38824142e-01 4.39167365e-01 4.39510597e-01 4.39853837e-01 4.40197087e-01 + 4.40540345e-01 4.40883611e-01 4.41226885e-01 4.41570168e-01 4.41913459e-01 + 4.42256758e-01 4.42600064e-01 4.42943378e-01 4.43286700e-01 4.43630029e-01 + 4.43973365e-01 4.44316708e-01 4.44660058e-01 4.45003416e-01 4.45346779e-01 + 4.45690150e-01 4.46033526e-01 4.46376910e-01 4.46720299e-01 4.47063694e-01 + 4.47407095e-01 4.47750502e-01 4.48093915e-01 4.48437333e-01 4.48780757e-01 + 4.49124185e-01 4.49467619e-01 4.49811058e-01 4.50154502e-01 4.50497950e-01 + 4.50841403e-01 4.51184861e-01 4.51528322e-01 4.51871788e-01 4.52215259e-01 + 4.52558733e-01 4.52902210e-01 4.53245692e-01 4.53589177e-01 4.53932665e-01 + 4.54276157e-01 4.54619652e-01 4.54963150e-01 4.55306651e-01 4.55650154e-01 + 1.03953624e+00 1.03772749e+00 1.03592023e+00 1.03411445e+00 1.03231016e+00 + 1.03050735e+00 1.02870603e+00 1.02690620e+00 1.02510785e+00 1.02331100e+00 + 1.02151562e+00 1.01972174e+00 1.01792935e+00 1.01613844e+00 1.01434902e+00 + 1.01256110e+00 1.01077466e+00 1.00898971e+00 1.00720626e+00 1.00542429e+00 + 1.00364382e+00 1.00186484e+00 1.00008735e+00 9.98311355e-01 9.96536852e-01 + 9.94763842e-01 9.92992326e-01 9.91222304e-01 9.89453777e-01 9.87686744e-01 + 9.85921207e-01 9.84157165e-01 9.82394619e-01 9.80633570e-01 9.78874017e-01 + 9.77115962e-01 9.75359404e-01 9.73604344e-01 9.71850782e-01 9.70098719e-01 + 9.68348155e-01 9.66599090e-01 9.64851525e-01 9.63105460e-01 9.61360895e-01 + 9.59617832e-01 9.57876269e-01 9.56136208e-01 9.54397649e-01 9.52660593e-01 + 9.50925039e-01 9.49190988e-01 9.47458441e-01 9.45727397e-01 9.43997858e-01 + 9.42269823e-01 9.40543293e-01 9.38818268e-01 9.37094749e-01 9.35372736e-01 + 9.33652230e-01 9.31933230e-01 9.30215737e-01 9.28499752e-01 9.26785274e-01 + 9.25072305e-01 9.23360844e-01 9.21650893e-01 9.19942450e-01 9.18235517e-01 + 9.16530094e-01 9.14826182e-01 9.13123780e-01 9.11422890e-01 9.09723511e-01 + 9.08025644e-01 9.06329289e-01 9.04634446e-01 9.02941117e-01 9.01249300e-01 + 8.99558998e-01 8.97870209e-01 8.96182935e-01 8.94497176e-01 8.92812931e-01 + 8.91130202e-01 8.89448989e-01 8.87769292e-01 8.86091112e-01 8.84414448e-01 + 8.82739302e-01 8.81065673e-01 8.79393562e-01 8.77722970e-01 8.76053896e-01 + 8.74386341e-01 8.72720306e-01 8.71055790e-01 8.69392795e-01 8.67731320e-01 + 8.66071366e-01 8.64412932e-01 8.62756021e-01 8.61100631e-01 8.59446764e-01 + 8.57794419e-01 8.56143597e-01 8.54494298e-01 8.52846523e-01 8.51200272e-01 + 8.49555545e-01 8.47912343e-01 8.46270666e-01 8.44630515e-01 8.42991889e-01 + 8.41354789e-01 8.39719216e-01 8.38085170e-01 8.36452650e-01 8.34821658e-01 + 8.33192195e-01 8.31564259e-01 8.29937852e-01 8.28312973e-01 8.26689624e-01 + 8.25067805e-01 8.23447515e-01 8.21828756e-01 8.20211528e-01 8.18595830e-01 + 8.16981664e-01 8.15369029e-01 8.13757927e-01 8.12148357e-01 8.10540319e-01 + 8.08933815e-01 8.07328844e-01 8.05725406e-01 8.04123503e-01 8.02523135e-01 + 8.00924301e-01 7.99327002e-01 7.97731239e-01 7.96137011e-01 7.94544320e-01 + 7.92953165e-01 7.91363547e-01 7.89775466e-01 7.88188923e-01 7.86603918e-01 + 7.85020450e-01 7.83438522e-01 7.81858132e-01 7.80279281e-01 7.78701970e-01 + 7.77126199e-01 7.75551968e-01 7.73979278e-01 7.72408129e-01 7.70838521e-01 + 7.69270454e-01 7.67703930e-01 7.66138947e-01 7.64575508e-01 7.63013611e-01 + 7.61453258e-01 7.59894448e-01 7.58337182e-01 7.56781460e-01 7.55227283e-01 + 7.53674651e-01 7.52123565e-01 7.50574024e-01 7.49026029e-01 7.47479580e-01 + 7.45934678e-01 7.44391322e-01 7.42849514e-01 7.41309254e-01 7.39770542e-01 + 7.38233378e-01 7.36697762e-01 7.35163696e-01 7.33631179e-01 7.32100211e-01 + 7.30570794e-01 7.29042926e-01 7.27516610e-01 7.25991844e-01 7.24468629e-01 + 7.22946966e-01 7.21426855e-01 7.19908297e-01 7.18391291e-01 7.16875837e-01 + 7.15361937e-01 7.13849591e-01 7.12338798e-01 7.10829560e-01 7.09321876e-01 + 7.07815747e-01 7.06311174e-01 7.04808155e-01 7.03306693e-01 7.01806787e-01 + 7.00308437e-01 6.98811644e-01 6.97316408e-01 6.95822730e-01 6.94330610e-01 + 6.92840047e-01 6.91351043e-01 6.89863598e-01 6.88377712e-01 6.86893385e-01 + 6.85410618e-01 6.83929411e-01 6.82449765e-01 6.80971679e-01 6.79495154e-01 + 6.78020190e-01 6.76546789e-01 6.75074949e-01 6.73604671e-01 6.72135956e-01 + 6.70668804e-01 6.69203215e-01 6.67739189e-01 6.66276728e-01 6.64815830e-01 + 6.63356498e-01 6.61898730e-01 6.60442527e-01 6.58987889e-01 6.57534818e-01 + 6.56083312e-01 6.54633373e-01 6.53185001e-01 6.51738195e-01 6.50292957e-01 + 6.48849287e-01 6.47407184e-01 6.45966650e-01 6.44527685e-01 6.43090288e-01 + 6.41654460e-01 6.40220202e-01 6.38787514e-01 6.37356396e-01 6.35926849e-01 + 6.34498872e-01 6.33072467e-01 6.31647633e-01 6.30224370e-01 6.28802680e-01 + 6.27382561e-01 6.25964016e-01 6.24547043e-01 6.23131644e-01 6.21717818e-01 + 6.20305566e-01 6.18894889e-01 6.17485785e-01 6.16078257e-01 6.14672303e-01 + 6.13267925e-01 6.11865123e-01 6.10463897e-01 6.09064247e-01 6.07666173e-01 + 6.06269677e-01 6.04874758e-01 6.03481416e-01 6.02089652e-01 6.00699467e-01 + 5.99310859e-01 5.97923831e-01 5.96538381e-01 5.95154511e-01 5.93772221e-01 + 5.92391510e-01 5.91012380e-01 5.89634830e-01 5.88258861e-01 5.86884473e-01 + 5.85511667e-01 5.84140442e-01 5.82770800e-01 5.81402740e-01 5.80036262e-01 + 5.78671367e-01 5.77308056e-01 5.75946328e-01 5.74586184e-01 5.73227624e-01 + 5.71870649e-01 5.70515258e-01 5.69161453e-01 5.67809232e-01 5.66458597e-01 + 5.65109548e-01 5.63762086e-01 5.62416210e-01 5.61071920e-01 5.59729218e-01 + 5.58388103e-01 5.57048576e-01 5.55710636e-01 5.54374285e-01 5.53039523e-01 + 5.51706349e-01 5.50374764e-01 5.49044769e-01 5.47716364e-01 5.46389548e-01 + 5.45064323e-01 5.43740689e-01 5.42418645e-01 5.41098192e-01 5.39779331e-01 + 5.38462062e-01 5.37146385e-01 5.35832299e-01 5.34519807e-01 5.33208907e-01 + 5.31899601e-01 5.30591888e-01 5.29285769e-01 5.27981244e-01 5.26678313e-01 + 5.25376977e-01 5.24077235e-01 5.22779089e-01 5.21482538e-01 5.20187583e-01 + 5.18894224e-01 5.17602461e-01 5.16312295e-01 5.15023726e-01 5.13736754e-01 + 5.12451379e-01 5.11167602e-01 5.09885423e-01 5.08604843e-01 5.07325861e-01 + 5.06048477e-01 5.04772693e-01 5.03498508e-01 5.02225923e-01 5.00954938e-01 + 4.99685553e-01 4.98417769e-01 4.97151585e-01 4.95887003e-01 4.94624021e-01 + 4.93362642e-01 4.92102864e-01 4.90844689e-01 4.89588116e-01 4.88333145e-01 + 4.87079778e-01 4.85828014e-01 4.84577853e-01 4.83329297e-01 4.82082344e-01 + 4.80836996e-01 4.79593252e-01 4.78351114e-01 4.77110580e-01 4.75871652e-01 + 4.74634330e-01 4.73398614e-01 4.72164504e-01 4.70932001e-01 4.69701104e-01 + 4.68471815e-01 4.67244132e-01 4.66018058e-01 4.64793591e-01 4.63570733e-01 + 4.62349483e-01 4.61129842e-01 4.59911810e-01 4.58695387e-01 4.57480573e-01 + 4.56267369e-01 4.55055776e-01 4.53845792e-01 4.52637419e-01 4.51430658e-01 + 4.50225507e-01 4.49021967e-01 4.47820039e-01 4.46619724e-01 4.45421020e-01 + 4.44223928e-01 4.43028450e-01 4.41834584e-01 4.40642332e-01 4.39451693e-01 + 4.38262668e-01 4.37075256e-01 4.35889459e-01 4.34705277e-01 4.33522709e-01 + 4.32341757e-01 4.31162420e-01 4.29984698e-01 4.28808592e-01 4.27634102e-01 + 4.26461229e-01 4.25289972e-01 4.24120332e-01 4.22952310e-01 4.21785904e-01 + 4.20621116e-01 4.19457946e-01 4.18296395e-01 4.17136461e-01 4.15978147e-01 + 4.14821451e-01 4.13666374e-01 4.12512917e-01 4.11361080e-01 4.10210862e-01 + 4.09062265e-01 4.07915288e-01 4.06769932e-01 4.05626197e-01 4.04484083e-01 + 4.03343590e-01 4.02204719e-01 4.01067470e-01 3.99931844e-01 3.98797839e-01 + 3.97665458e-01 3.96534699e-01 3.95405564e-01 3.94278052e-01 3.93152164e-01 + 3.92027900e-01 3.90905259e-01 3.89784244e-01 3.88664853e-01 3.87547087e-01 + 3.86430946e-01 3.85316431e-01 3.84203541e-01 3.83092278e-01 3.81982640e-01 + 3.80874629e-01 3.79768245e-01 3.78663487e-01 3.77560357e-01 3.76458854e-01 + 3.75358979e-01 3.74260731e-01 3.73164112e-01 3.72069121e-01 3.70975759e-01 + 3.69884025e-01 3.68793921e-01 3.67705446e-01 3.66618601e-01 3.65533385e-01 + 3.64449799e-01 3.63367844e-01 3.62287520e-01 3.61208826e-01 3.60131763e-01 + 3.59056331e-01 3.57982531e-01 3.56910363e-01 3.55839826e-01 3.54770922e-01 + 3.53703650e-01 3.52638011e-01 3.51574005e-01 3.50511632e-01 3.49450892e-01 + 3.48391786e-01 3.47334314e-01 3.46278476e-01 3.45224272e-01 3.44171703e-01 + 3.43120769e-01 3.42071469e-01 3.41023805e-01 3.39977776e-01 3.38933384e-01 + 3.37890627e-01 3.36849506e-01 3.35810021e-01 3.34772174e-01 3.33735963e-01 + 3.32701389e-01 3.31668453e-01 3.30637154e-01 3.29607493e-01 3.28579470e-01 + 3.27553085e-01 3.26528339e-01 3.25505231e-01 3.24483762e-01 3.23463933e-01 + 3.22445743e-01 3.21429192e-01 3.20414282e-01 3.19401011e-01 3.18389381e-01 + 3.17379391e-01 3.16371042e-01 3.15364334e-01 3.14359267e-01 3.13355841e-01 + 3.12354057e-01 3.11353915e-01 3.10355415e-01 3.09358557e-01 3.08363342e-01 + 3.07369770e-01 3.06377840e-01 3.05387554e-01 3.04398911e-01 3.03411912e-01 + 3.02426556e-01 3.01442845e-01 3.00460777e-01 2.99480355e-01 2.98501577e-01 + 2.97524444e-01 2.96548956e-01 2.95575113e-01 2.94602916e-01 2.93632365e-01 + 2.92663460e-01 2.91696201e-01 2.90730589e-01 2.89766623e-01 2.88804304e-01 + 2.87843632e-01 2.86884607e-01 2.85927230e-01 2.84971501e-01 2.84017420e-01 + 2.83064986e-01 2.82114201e-01 2.81165065e-01 2.80217578e-01 2.79271739e-01 + 2.78327550e-01 2.77385010e-01 2.76444119e-01 2.75504879e-01 2.74567288e-01 + 2.73631348e-01 2.72697059e-01 2.71764419e-01 2.70833431e-01 2.69904094e-01 + 2.68976408e-01 2.68050374e-01 2.67125991e-01 2.66203261e-01 2.65282182e-01 + 2.64362756e-01 2.63444982e-01 2.62528861e-01 2.61614393e-01 2.60701578e-01 + 2.59790416e-01 2.58880908e-01 2.57973054e-01 2.57066853e-01 2.56162307e-01 + 2.55259415e-01 2.54358178e-01 2.53458595e-01 2.52560668e-01 2.51664395e-01 + 2.50769778e-01 2.49876816e-01 2.48985511e-01 2.48095861e-01 2.47207867e-01 + 2.46321530e-01 2.45436849e-01 2.44553825e-01 2.43672457e-01 2.42792747e-01 + 2.41914695e-01 2.41038300e-01 2.40163562e-01 2.39290483e-01 2.38419061e-01 + 2.37549298e-01 2.36681193e-01 2.35814748e-01 2.34949961e-01 2.34086833e-01 + 2.33225364e-01 2.32365555e-01 2.31507405e-01 2.30650916e-01 2.29796086e-01 + 2.28942916e-01 2.28091407e-01 2.27241559e-01 2.26393372e-01 2.25546845e-01 + 2.24701980e-01 2.23858776e-01 2.23017233e-01 2.22177352e-01 2.21339134e-01 + 2.20502577e-01 2.19667682e-01 2.18834451e-01 2.18002881e-01 2.17172975e-01 + 2.16344732e-01 2.15518152e-01 2.14693235e-01 2.13869982e-01 2.13048393e-01 + 2.12228468e-01 2.11410207e-01 2.10593610e-01 2.09778678e-01 2.08965410e-01 + 2.08153807e-01 2.07343870e-01 2.06535598e-01 2.05728991e-01 2.04924049e-01 + 2.04120774e-01 2.03319164e-01 2.02519221e-01 2.01720944e-01 2.00924334e-01 + 2.00129390e-01 1.99336113e-01 1.98544503e-01 1.97754560e-01 1.96966285e-01 + 1.96179677e-01 1.95394737e-01 1.94611465e-01 1.93829861e-01 1.93049925e-01 + 1.92271658e-01 1.91495059e-01 1.90720129e-01 1.89946869e-01 1.89175277e-01 + 1.88405354e-01 1.87637101e-01 1.86870518e-01 1.86105605e-01 1.85342361e-01 + 1.84580788e-01 1.83820885e-01 1.83062653e-01 1.82306091e-01 1.81551200e-01 + 1.80797980e-01 1.80046431e-01 1.79296554e-01 1.78548348e-01 1.77801814e-01 + 1.77056952e-01 1.76313762e-01 1.75572244e-01 1.74832398e-01 1.74094225e-01 + 1.73357725e-01 1.72622897e-01 1.71889743e-01 1.71158261e-01 1.70428453e-01 + 1.69700319e-01 1.68973858e-01 1.68249071e-01 1.67525958e-01 1.66804519e-01 + 1.66084755e-01 1.65366665e-01 1.64650249e-01 1.63935509e-01 1.63222443e-01 + 1.62511053e-01 1.61801338e-01 1.61093298e-01 1.60386934e-01 1.59682246e-01 + 1.58979233e-01 1.58277897e-01 1.57578237e-01 1.56880253e-01 1.56183946e-01 + 1.55489316e-01 1.54796362e-01 1.54105086e-01 1.53415486e-01 1.52727564e-01 + 1.52041320e-01 1.51356753e-01 1.50673864e-01 1.49992653e-01 1.49313120e-01 + 1.48635265e-01 1.47959088e-01 1.47284591e-01 1.46611771e-01 1.45940631e-01 + 1.45271170e-01 1.44603388e-01 1.43937285e-01 1.43272862e-01 1.42610118e-01 + 1.41949054e-01 1.41289670e-01 1.40631966e-01 1.39975942e-01 1.39321598e-01 + 1.38668935e-01 1.38017953e-01 1.37368652e-01 1.36721031e-01 1.36075091e-01 + 1.35430833e-01 1.34788256e-01 1.34147361e-01 1.33508147e-01 1.32870615e-01 + 1.32234765e-01 1.31600597e-01 1.30968111e-01 1.30337308e-01 1.29708187e-01 + 1.29080749e-01 1.28454994e-01 1.27830921e-01 1.27208532e-01 1.26587826e-01 + 1.25968803e-01 1.25351464e-01 1.24735808e-01 1.24121836e-01 1.23509548e-01 + 1.22898944e-01 1.22290024e-01 1.21682789e-01 1.21077238e-01 1.20473372e-01 + 1.19871190e-01 1.19270693e-01 1.18671881e-01 1.18074755e-01 1.17479313e-01 + 1.16885558e-01 1.16293487e-01 1.15703102e-01 1.15114403e-01 1.14527390e-01 + 1.13942064e-01 1.13358423e-01 1.12776468e-01 1.12196200e-01 1.11617619e-01 + 1.11040725e-01 1.10465517e-01 1.09891996e-01 1.09320162e-01 1.08750016e-01 + 1.08181557e-01 1.07614785e-01 1.07049701e-01 1.06486305e-01 1.05924597e-01 + 1.05364577e-01 1.04806244e-01 1.04249601e-01 1.03694645e-01 1.03141378e-01 + 1.02589800e-01 1.02039910e-01 1.01491709e-01 1.00945198e-01 1.00400375e-01 + 9.98572416e-02 9.93157976e-02 9.87760431e-02 9.82379782e-02 9.77016030e-02 + 9.71669178e-02 9.66339224e-02 9.61026172e-02 9.55730022e-02 9.50450776e-02 + 9.45188434e-02 9.39942997e-02 9.34714468e-02 9.29502847e-02 9.24308135e-02 + 9.19130333e-02 9.13969443e-02 9.08825466e-02 9.03698403e-02 8.98588255e-02 + 8.93495023e-02 8.88418708e-02 8.83359312e-02 8.78316836e-02 8.73291281e-02 + 8.68282647e-02 8.63290937e-02 8.58316150e-02 8.53358290e-02 8.48417355e-02 + 8.43493348e-02 8.38586270e-02 8.33696121e-02 8.28822904e-02 8.23966618e-02 + 8.19127265e-02 8.14304847e-02 8.09499364e-02 8.04710817e-02 7.99939207e-02 + 7.95184537e-02 7.90446805e-02 7.85726014e-02 7.81022165e-02 7.76335259e-02 + 7.71665296e-02 7.67012279e-02 7.62376207e-02 7.57757082e-02 7.53154905e-02 + 7.48569677e-02 7.44001400e-02 7.39450073e-02 7.34915699e-02 7.30398277e-02 + 7.25897810e-02 7.21414298e-02 7.16947743e-02 7.12498144e-02 7.08065504e-02 + 7.03649822e-02 6.99251102e-02 6.94869342e-02 6.90504544e-02 6.86156710e-02 + 6.81825840e-02 6.77511935e-02 6.73214996e-02 6.68935024e-02 6.64672020e-02 + 6.60425985e-02 6.56196920e-02 6.51984826e-02 6.47789704e-02 6.43611555e-02 + 6.39450379e-02 6.35306178e-02 6.31178953e-02 6.27068704e-02 6.22975433e-02 + 6.18899141e-02 6.14839827e-02 6.10797494e-02 6.06772142e-02 6.02763772e-02 + 5.98772385e-02 5.94797982e-02 5.90840564e-02 5.86900131e-02 5.82976685e-02 + 5.79070227e-02 5.75180757e-02 5.71308276e-02 5.67452785e-02 5.63614285e-02 + 5.59792777e-02 5.55988261e-02 5.52200739e-02 5.48430212e-02 5.44676679e-02 + 5.40940143e-02 5.37220604e-02 5.33518062e-02 5.29832520e-02 5.26163976e-02 + 5.22512433e-02 5.18877891e-02 5.15260351e-02 5.11659814e-02 5.08076280e-02 + 5.04509751e-02 5.00960227e-02 4.97427708e-02 4.93912197e-02 4.90413693e-02 + 4.86932198e-02 4.83467711e-02 4.80020235e-02 4.76589769e-02 4.73176315e-02 + 4.69779873e-02 4.66400444e-02 4.63038029e-02 4.59692628e-02 4.56364243e-02 + 4.53052874e-02 4.49758521e-02 4.46481186e-02 4.43220870e-02 4.39977572e-02 + 4.36751294e-02 4.33542037e-02 4.30349801e-02 4.27174587e-02 4.24016395e-02 + 4.20875227e-02 4.17751083e-02 4.14643964e-02 4.11553870e-02 4.08480802e-02 + 4.05424762e-02 4.02385749e-02 3.99363764e-02 3.96358808e-02 3.93370881e-02 + 3.90399985e-02 3.87446120e-02 3.84509287e-02 3.81589486e-02 3.78686718e-02 + 3.75800983e-02 3.72932283e-02 3.70080618e-02 3.67245988e-02 3.64428394e-02 + 3.61627838e-02 3.58844318e-02 3.56077837e-02 3.53328395e-02 3.50595992e-02 + 3.47880629e-02 3.45182306e-02 3.42501025e-02 3.39836786e-02 3.37189589e-02 + 3.34559435e-02 3.31946324e-02 3.29350258e-02 3.26771236e-02 3.24209260e-02 + 3.21664330e-02 3.19136446e-02 3.16625610e-02 3.14131821e-02 3.11655080e-02 + 3.09195388e-02 3.06752746e-02 3.04327153e-02 3.01918611e-02 2.99527120e-02 + 2.97152680e-02 2.94795292e-02 2.92454957e-02 2.90131675e-02 2.87825447e-02 + 2.85536273e-02 2.83264153e-02 2.81009089e-02 2.78771081e-02 2.76550128e-02 + 2.74346233e-02 2.72159395e-02 2.69989614e-02 2.67836892e-02 2.65701228e-02 + 2.63582623e-02 2.61481079e-02 2.59396594e-02 2.57329170e-02 2.55278807e-02 + 2.53245505e-02 2.51229266e-02 2.49230089e-02 2.47247975e-02 2.45282924e-02 + 2.43334937e-02 2.41404014e-02 2.39490156e-02 2.37593363e-02 2.35713636e-02 + 2.33850975e-02 2.32005380e-02 2.30176851e-02 2.28365390e-02 2.26570997e-02 + 2.24793672e-02 2.23033415e-02 2.21290227e-02 2.19564108e-02 2.17855059e-02 + 2.16163080e-02 2.14488171e-02 2.12830333e-02 2.11189566e-02 2.09565871e-02 + 2.07959248e-02 2.06369696e-02 2.04797218e-02 2.03241812e-02 2.01703480e-02 + 2.00182221e-02 1.98678037e-02 1.97190927e-02 1.95720891e-02 1.94267931e-02 + 1.92832045e-02 1.91413236e-02 1.90011502e-02 1.88626845e-02 1.87259265e-02 + 1.85908761e-02 1.84575335e-02 1.83258986e-02 1.81959715e-02 1.80677522e-02 + 1.79412408e-02 1.78164372e-02 1.76933415e-02 1.75719538e-02 1.74522740e-02 + 1.73343022e-02 1.72180384e-02 1.71034827e-02 1.69906350e-02 1.68794954e-02 + 1.67700639e-02 1.66623405e-02 1.65563253e-02 1.64520183e-02 1.63494195e-02 + 1.62485289e-02 1.61493466e-02 1.60518726e-02 1.59561068e-02 1.58620494e-02 + 1.57697003e-02 1.56790596e-02 1.55901273e-02 1.55029034e-02 1.54173879e-02 + 1.53335808e-02 1.52514822e-02 1.51710921e-02 1.50924105e-02 1.50154374e-02 + 1.49401728e-02 1.48666168e-02 1.47947694e-02 1.47246305e-02 1.46562002e-02 + 1.45894786e-02 1.45244656e-02 1.44611612e-02 1.43995655e-02 1.43396785e-02 + 1.42815001e-02 1.42250305e-02 1.41702695e-02 1.41172173e-02 1.40658738e-02 + 1.40162391e-02 1.39683132e-02 1.39220960e-02 1.38775876e-02 1.38347880e-02 + 1.37936971e-02 1.37543151e-02 1.37166420e-02 1.36806776e-02 1.36464221e-02 + 1.36138754e-02 1.35830376e-02 1.35539086e-02 1.35264885e-02 1.35007773e-02 + 1.34767750e-02 1.34544815e-02 1.34338969e-02 1.34150212e-02 1.33978544e-02 + 1.33823966e-02 1.33686476e-02 1.33566075e-02 1.33462763e-02 1.33376541e-02 + 1.33307407e-02 1.33255363e-02 1.33220408e-02 1.33202542e-02 1.33201765e-02 + 1.33218078e-02 1.33251480e-02 1.33301970e-02 1.33369550e-02 1.33454220e-02 + 1.33555978e-02 1.33674825e-02 1.33810762e-02 1.33963787e-02 1.34133902e-02 + 1.34321105e-02 1.34525397e-02 1.34746779e-02 1.34985249e-02 1.35240808e-02 + 1.35513455e-02 1.35803192e-02 1.36110016e-02 1.36433930e-02 1.36774932e-02 + 1.37133022e-02 1.37508200e-02 1.37900467e-02 1.38309822e-02 1.38736265e-02 + 1.39179796e-02 1.39640414e-02 1.40118121e-02 1.40612914e-02 1.41124796e-02 + 1.41653765e-02 1.42199821e-02 1.42762964e-02 1.43343194e-02 1.43940512e-02 + 1.44554916e-02 1.45186406e-02 1.45834983e-02 1.46500646e-02 1.47183396e-02 + 1.47883231e-02 1.48600153e-02 1.49334160e-02 1.50085252e-02 1.50853430e-02 + 1.51638693e-02 1.52441041e-02 1.53260474e-02 1.54096992e-02 1.54950594e-02 + 1.55821280e-02 1.56709051e-02 1.57613905e-02 1.58535843e-02 1.59474864e-02 + 1.60430969e-02 1.61404156e-02 1.62394427e-02 1.63401780e-02 1.64426215e-02 + 1.65467732e-02 1.66526331e-02 1.67602012e-02 1.68694775e-02 1.69804618e-02 + 1.70931542e-02 1.72075547e-02 1.73236633e-02 1.74414798e-02 1.75610043e-02 + 1.76822368e-02 1.78051772e-02 1.79298256e-02 1.80561818e-02 1.81842458e-02 + 1.83140177e-02 1.84454973e-02 1.85786847e-02 1.87135798e-02 1.88501827e-02 + 1.89884931e-02 1.91285113e-02 1.92702370e-02 1.94136703e-02 1.95588111e-02 + 1.97056595e-02 1.98542153e-02 2.00044786e-02 2.01564492e-02 2.03101272e-02 + 2.04655126e-02 2.06226053e-02 2.07814052e-02 2.09419123e-02 2.11041267e-02 + 2.12680482e-02 2.14336768e-02 2.16010125e-02 2.17700553e-02 2.19408050e-02 + 2.21132617e-02 2.22874254e-02 2.24632959e-02 2.26408733e-02 2.28201575e-02 + 2.30011484e-02 2.31838461e-02 2.33682505e-02 2.35543615e-02 2.37421791e-02 + 2.39317033e-02 2.41229339e-02 2.43158711e-02 2.45105147e-02 2.47068647e-02 + 2.49049210e-02 2.51046836e-02 2.53061524e-02 2.55093275e-02 2.57142087e-02 + 2.59207960e-02 2.61290894e-02 2.63390888e-02 2.65507942e-02 2.67642055e-02 + 2.69793227e-02 2.71961457e-02 2.74146744e-02 2.76349090e-02 2.78568491e-02 + 2.80804949e-02 2.83058463e-02 2.85329032e-02 2.87616656e-02 2.89921334e-02 + 2.92243066e-02 2.94581851e-02 2.96937689e-02 2.99310578e-02 3.01700520e-02 + 3.04107512e-02 3.06531555e-02 3.08972648e-02 3.11430790e-02 3.13905981e-02 + 3.16398220e-02 3.18907507e-02 3.21433841e-02 3.23977222e-02 3.26537648e-02 + 3.29115120e-02 3.31709637e-02 3.34321199e-02 3.36949803e-02 3.39595451e-02 + 3.42258142e-02 3.44937874e-02 3.47634647e-02 3.50348461e-02 3.53079315e-02 + 3.55827209e-02 3.58592141e-02 3.61374112e-02 3.64173120e-02 3.66989165e-02 + 3.69822246e-02 3.72672363e-02 3.75539515e-02 3.78423701e-02 3.81324920e-02 + 3.84243173e-02 3.87178458e-02 3.90130775e-02 3.93100123e-02 3.96086502e-02 + 3.99089910e-02 4.02110347e-02 4.05147812e-02 4.08202305e-02 4.11273825e-02 + 4.14362371e-02 4.17467942e-02 4.20590539e-02 4.23730160e-02 4.26886804e-02 + 4.30060471e-02 4.33251159e-02 4.36458870e-02 4.39683600e-02 4.42925351e-02 + 4.46184120e-02 4.49459908e-02 4.52752714e-02 4.56062536e-02 4.59389375e-02 + 4.62733229e-02 4.66094097e-02 4.69471980e-02 4.72866875e-02 4.76278783e-02 + 4.79707703e-02 4.83153633e-02 4.86616573e-02 4.90096522e-02 4.93593480e-02 + 4.97107446e-02 5.00638418e-02 5.04186396e-02 5.07751380e-02 5.11333368e-02 + 5.14932360e-02 5.18548354e-02 5.22181351e-02 5.25831349e-02 5.29498347e-02 + 5.33182344e-02 5.36883341e-02 5.40601335e-02 5.44336326e-02 5.48088313e-02 + 5.51857296e-02 5.55643273e-02 5.59446244e-02 5.63266207e-02 5.67103163e-02 + 5.70957109e-02 5.74828046e-02 5.78715972e-02 5.82620886e-02 5.86542788e-02 + 5.90481677e-02 5.94437551e-02 5.98410410e-02 6.02400253e-02 6.06407080e-02 + 6.10430888e-02 6.14471678e-02 6.18529447e-02 6.22604197e-02 6.26695925e-02 + 6.30804630e-02 6.34930312e-02 6.39072970e-02 6.43232602e-02 6.47409209e-02 + 6.51602788e-02 6.55813340e-02 6.60040862e-02 6.64285354e-02 6.68546816e-02 + 6.72825245e-02 6.77120642e-02 6.81433005e-02 6.85762333e-02 6.90108625e-02 + 6.94471881e-02 6.98852099e-02 7.03249278e-02 7.07663417e-02 7.12094516e-02 + 7.16542573e-02 7.21007588e-02 7.25489558e-02 7.29988484e-02 7.34504365e-02 + 7.39037198e-02 7.43586984e-02 7.48153721e-02 7.52737408e-02 7.57338044e-02 + 7.61955628e-02 7.66590160e-02 7.71241637e-02 7.75910059e-02 7.80595425e-02 + 7.85297734e-02 7.90016985e-02 7.94753177e-02 7.99506308e-02 8.04276378e-02 + 8.09063385e-02 8.13867329e-02 8.18688208e-02 8.23526021e-02 8.28380768e-02 + 8.33252446e-02 8.38141056e-02 8.43046595e-02 8.47969063e-02 8.52908459e-02 + 8.57864782e-02 8.62838029e-02 8.67828201e-02 8.72835297e-02 8.77859314e-02 + 8.82900252e-02 8.87958110e-02 8.93032887e-02 8.98124581e-02 9.03233191e-02 + 9.08358717e-02 9.13501157e-02 9.18660509e-02 9.23836774e-02 9.29029949e-02 + 9.34240033e-02 9.39467025e-02 9.44710925e-02 9.49971730e-02 9.55249440e-02 + 9.60544054e-02 9.65855570e-02 9.71183987e-02 9.76529303e-02 9.81891519e-02 + 9.87270632e-02 9.92666641e-02 9.98079545e-02 1.00350934e-01 1.00895603e-01 + 1.01441962e-01 1.01990009e-01 1.02539745e-01 1.03091170e-01 1.03644283e-01 + 1.04199085e-01 1.04755576e-01 1.05313754e-01 1.05873621e-01 1.06435176e-01 + 1.06998419e-01 1.07563349e-01 1.08129968e-01 1.08698273e-01 1.09268266e-01 + 1.09839947e-01 1.10413314e-01 1.10988368e-01 1.11565110e-01 1.12143538e-01 + 1.12723652e-01 1.13305453e-01 1.13888941e-01 1.14474115e-01 1.15060974e-01 + 1.15649520e-01 1.16239751e-01 1.16831669e-01 1.17425271e-01 1.18020560e-01 + 1.18617533e-01 1.19216192e-01 1.19816535e-01 1.20418564e-01 1.21022277e-01 + 1.21627675e-01 1.22234757e-01 1.22843524e-01 1.23453975e-01 1.24066109e-01 + 1.24679928e-01 1.25295431e-01 1.25912617e-01 1.26531487e-01 1.27152040e-01 + 1.27774276e-01 1.28398196e-01 1.29023798e-01 1.29651083e-01 1.30280051e-01 + 1.30910702e-01 1.31543034e-01 1.32177050e-01 1.32812747e-01 1.33450126e-01 + 1.34089187e-01 1.34729929e-01 1.35372353e-01 1.36016459e-01 1.36662246e-01 + 1.37309713e-01 1.37958862e-01 1.38609692e-01 1.39262202e-01 1.39916393e-01 + 1.40572264e-01 1.41229815e-01 1.41889046e-01 1.42549958e-01 1.43212549e-01 + 1.43876819e-01 1.44542770e-01 1.45210399e-01 1.45879708e-01 1.46550695e-01 + 1.47223362e-01 1.47897707e-01 1.48573731e-01 1.49251433e-01 1.49930814e-01 + 1.50611872e-01 1.51294609e-01 1.51979023e-01 1.52665115e-01 1.53352885e-01 + 1.54042332e-01 1.54733456e-01 1.55426257e-01 1.56120735e-01 1.56816890e-01 + 1.57514721e-01 1.58214229e-01 1.58915413e-01 1.59618273e-01 1.60322809e-01 + 1.61029020e-01 1.61736908e-01 1.62446471e-01 1.63157709e-01 1.63870622e-01 + 1.64585210e-01 1.65301473e-01 1.66019411e-01 1.66739023e-01 1.67460310e-01 + 1.68183271e-01 1.68907906e-01 1.69634214e-01 1.70362197e-01 1.71091853e-01 + 1.71823182e-01 1.72556184e-01 1.73290860e-01 1.74027208e-01 1.74765229e-01 + 1.75504923e-01 1.76246289e-01 1.76989327e-01 1.77734037e-01 1.78480419e-01 + 1.79228473e-01 1.79978199e-01 1.80729595e-01 1.81482663e-01 1.82237402e-01 + 1.82993812e-01 1.83751893e-01 1.84511644e-01 1.85273065e-01 1.86036157e-01 + 1.86800919e-01 1.87567350e-01 1.88335451e-01 1.89105222e-01 1.89876662e-01 + 1.90649771e-01 1.91424549e-01 1.92200996e-01 1.92979112e-01 1.93758896e-01 + 1.94540348e-01 1.95323469e-01 1.96108257e-01 1.96894713e-01 1.97682837e-01 + 1.98472628e-01 1.99264087e-01 2.00057212e-01 2.00852004e-01 2.01648463e-01 + 2.02446589e-01 2.03246381e-01 2.04047839e-01 2.04850963e-01 2.05655753e-01 + 2.06462208e-01 2.07270329e-01 2.08080115e-01 2.08891567e-01 2.09704683e-01 + 2.10519464e-01 2.11335909e-01 2.12154019e-01 2.12973793e-01 2.13795231e-01 + 2.14618333e-01 2.15443098e-01 2.16269527e-01 2.17097619e-01 2.17927374e-01 + 2.18758792e-01 2.19591873e-01 2.20426616e-01 2.21263022e-01 2.22101090e-01 + 2.22940819e-01 2.23782211e-01 2.24625264e-01 2.25469978e-01 2.26316354e-01 + 2.27164390e-01 2.28014088e-01 2.28865446e-01 2.29718464e-01 2.30573143e-01 + 2.31429482e-01 2.32287480e-01 2.33147139e-01 2.34008457e-01 2.34871434e-01 + 2.35736070e-01 2.36602365e-01 2.37470319e-01 2.38339931e-01 2.39211202e-01 + 2.40084131e-01 2.40958717e-01 2.41834962e-01 2.42712864e-01 2.43592423e-01 + 2.44473640e-01 2.45356513e-01 2.46241044e-01 2.47127230e-01 2.48015074e-01 + 2.48904573e-01 2.49795728e-01 2.50688539e-01 2.51583006e-01 2.52479128e-01 + 2.53376905e-01 2.54276337e-01 2.55177424e-01 2.56080166e-01 2.56984562e-01 + 2.57890612e-01 2.58798316e-01 2.59707674e-01 2.60618685e-01 2.61531350e-01 + 2.62445667e-01 2.63361638e-01 2.64279262e-01 2.65198538e-01 2.66119466e-01 + 2.67042047e-01 2.67966279e-01 2.68892164e-01 2.69819699e-01 2.70748886e-01 + 2.71679724e-01 2.72612213e-01 2.73546353e-01 2.74482143e-01 2.75419584e-01 + 2.76358674e-01 2.77299415e-01 2.78241805e-01 2.79185844e-01 2.80131533e-01 + 2.81078870e-01 2.82027857e-01 2.82978492e-01 2.83930775e-01 2.84884707e-01 + 2.85840287e-01 2.86797514e-01 2.87756389e-01 2.88716911e-01 2.89679080e-01 + 2.90642896e-01 2.91608359e-01 2.92575468e-01 2.93544224e-01 2.94514625e-01 + 2.95486673e-01 2.96460366e-01 2.97435704e-01 2.98412687e-01 2.99391316e-01 + 3.00371589e-01 3.01353507e-01 3.02337069e-01 3.03322275e-01 3.04309125e-01 + 3.05297618e-01 3.06287755e-01 3.07279535e-01 3.08272958e-01 3.09268024e-01 + 3.10264733e-01 3.11263084e-01 3.12263076e-01 3.13264711e-01 3.14267987e-01 + 3.15272905e-01 3.16279464e-01 3.17287664e-01 3.18297505e-01 3.19308986e-01 + 3.20322108e-01 3.21336869e-01 3.22353271e-01 3.23371312e-01 3.24390992e-01 + 3.25412312e-01 3.26435271e-01 3.27459868e-01 3.28486104e-01 3.29513978e-01 + 3.30543490e-01 3.31574640e-01 3.32607428e-01 3.33641852e-01 3.34677914e-01 + 3.35715613e-01 3.36754949e-01 3.37795921e-01 3.38838529e-01 3.39882774e-01 + 3.40928653e-01 3.41976169e-01 3.43025320e-01 3.44076105e-01 3.45128526e-01 + 3.46182581e-01 3.47238271e-01 3.48295594e-01 3.49354552e-01 3.50415143e-01 + 3.51477368e-01 3.52541225e-01 3.53606716e-01 3.54673839e-01 3.55742595e-01 + 3.56812983e-01 3.57885003e-01 3.58958655e-01 3.60033939e-01 3.61110853e-01 + 3.62189399e-01 3.63269575e-01 3.64351382e-01 3.65434820e-01 3.66519887e-01 + 3.67606584e-01 3.68694911e-01 3.69784868e-01 3.70876453e-01 3.71969667e-01 + 3.73064510e-01 3.74160981e-01 3.75259081e-01 3.76358808e-01 3.77460163e-01 + 3.78563145e-01 3.79667755e-01 3.80773992e-01 3.81881855e-01 3.82991344e-01 + 3.84102460e-01 3.85215202e-01 3.86329570e-01 3.87445563e-01 3.88563181e-01 + 3.89682424e-01 3.90803292e-01 3.91925784e-01 3.93049901e-01 3.94175642e-01 + 3.95303006e-01 3.96431994e-01 3.97562605e-01 3.98694839e-01 3.99828696e-01 + 4.00964175e-01 4.02101276e-01 4.03240000e-01 4.04380345e-01 4.05522312e-01 + 4.06665899e-01 4.07811108e-01 4.08957938e-01 4.10106388e-01 4.11256458e-01 + 4.12408148e-01 4.13561458e-01 4.14716388e-01 4.15872936e-01 4.17031104e-01 + 4.18190890e-01 4.19352295e-01 4.20515317e-01 4.21679958e-01 4.22846216e-01 + 4.24014092e-01 4.25183585e-01 4.26354695e-01 4.27527421e-01 4.28701764e-01 + 4.29877723e-01 4.31055298e-01 4.32234488e-01 4.33415294e-01 4.34597715e-01 + 4.35781751e-01 4.36967401e-01 4.38154665e-01 4.39343544e-01 4.40534036e-01 + 4.41726142e-01 4.42919861e-01 4.44115193e-01 4.45312138e-01 4.46510695e-01 + 4.47710864e-01 4.48912645e-01 4.50116038e-01 4.51321043e-01 4.52527658e-01 + 4.53735885e-01 4.54945722e-01 4.56157169e-01 4.57370226e-01 4.58584894e-01 + 4.59801170e-01 4.61019056e-01 4.62238551e-01 4.63459655e-01 4.64682367e-01 + 4.65906688e-01 4.67132616e-01 4.68360152e-01 4.69589295e-01 4.70820046e-01 + 4.72052403e-01 4.73286367e-01 4.74521937e-01 4.75759113e-01 4.76997895e-01 + 4.78238283e-01 4.79480276e-01 4.80723873e-01 4.81969076e-01 4.83215882e-01 + 4.84464293e-01 4.85714308e-01 4.86965926e-01 4.88219148e-01 4.89473972e-01 + 4.90730400e-01 4.91988430e-01 4.93248062e-01 4.94509296e-01 4.95772131e-01 + 4.97036568e-01 4.98302606e-01 4.99570245e-01 5.00839485e-01 5.02110324e-01 + 5.03382764e-01 5.04656804e-01 5.05932442e-01 5.07209680e-01 5.08488517e-01 + 5.09768953e-01 5.11050986e-01 5.12334618e-01 5.13619847e-01 5.14906674e-01 + 5.16195098e-01 5.17485119e-01 5.18776737e-01 5.20069951e-01 5.21364761e-01 + 5.22661167e-01 5.23959168e-01 5.25258764e-01 5.26559955e-01 5.27862741e-01 + 5.29167122e-01 5.30473096e-01 5.31780664e-01 5.33089826e-01 5.34400580e-01 + 5.35712928e-01 5.37026868e-01 5.38342401e-01 5.39659526e-01 5.40978242e-01 + 5.42298550e-01 5.43620449e-01 5.44943939e-01 5.46269020e-01 5.47595691e-01 + 5.48923952e-01 5.50253802e-01 5.51585242e-01 5.52918272e-01 5.54252890e-01 + 5.55589096e-01 5.56926891e-01 5.58266274e-01 5.59607245e-01 5.60949803e-01 + 5.62293948e-01 5.63639680e-01 5.64986999e-01 5.66335903e-01 5.67686394e-01 + 5.69038470e-01 5.70392132e-01 5.71747378e-01 5.73104210e-01 5.74462626e-01 + 5.75822626e-01 5.77184210e-01 5.78547377e-01 5.79912128e-01 5.81278461e-01 + 5.82646378e-01 5.84015876e-01 5.85386957e-01 5.86759620e-01 5.88133864e-01 + 5.89509689e-01 5.90887095e-01 5.92266082e-01 5.93646649e-01 5.95028796e-01 + 5.96412522e-01 5.97797828e-01 5.99184713e-01 6.00573177e-01 6.01963219e-01 + 6.03354840e-01 6.04748038e-01 6.06142814e-01 6.07539167e-01 6.08937097e-01 + 6.10336603e-01 6.11737686e-01 6.13140346e-01 6.14544580e-01 6.15950391e-01 + 6.17357776e-01 6.18766736e-01 6.20177271e-01 6.21589379e-01 6.23003062e-01 + 6.24418319e-01 6.25835148e-01 6.27253551e-01 6.28673526e-01 6.30095073e-01 + 6.31518193e-01 6.32942884e-01 6.34369147e-01 6.35796981e-01 6.37226386e-01 + 6.38657361e-01 6.40089906e-01 6.41524022e-01 6.42959706e-01 6.44396960e-01 + 6.45835783e-01 6.47276175e-01 6.48718135e-01 6.50161663e-01 6.51606758e-01 + 6.53053421e-01 6.54501651e-01 6.55951448e-01 6.57402811e-01 6.58855740e-01 + 6.60310236e-01 6.61766296e-01 6.63223922e-01 6.64683112e-01 6.66143868e-01 + 6.67606187e-01 6.69070070e-01 6.70535517e-01 6.72002527e-01 6.73471100e-01 + 6.74941236e-01 6.76412934e-01 6.77886194e-01 6.79361015e-01 6.80837398e-01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 1.23300000e+01 + 1.00000000e+00 9.75894263e-01 9.53451752e-01 9.32489601e-01 9.12851907e-01 + 8.94404826e-01 8.77032714e-01 8.60635068e-01 8.45124065e-01 8.30422576e-01 + 8.16462554e-01 8.03183696e-01 7.90532350e-01 7.78460602e-01 7.66925506e-01 + 7.55888443e-01 7.45314577e-01 7.35172390e-01 7.25433287e-01 7.16071258e-01 + 7.07062580e-01 6.98385572e-01 6.90020370e-01 6.81948734e-01 6.74153887e-01 + 6.66620364e-01 6.59333880e-01 6.52281224e-01 6.45450150e-01 6.38829295e-01 + 6.32408091e-01 6.26176704e-01 6.20125961e-01 6.14247300e-01 6.08532716e-01 + 6.02974715e-01 5.97566276e-01 5.92300808e-01 5.87172122e-01 5.82174396e-01 + 5.77302151e-01 5.72550221e-01 5.67913735e-01 5.63388093e-01 5.58968948e-01 + 5.54652188e-01 5.50433918e-01 5.46310451e-01 5.42278287e-01 5.38334105e-01 + 5.34474753e-01 5.30697232e-01 5.26998691e-01 5.23376415e-01 5.19827818e-01 + 5.16350438e-01 5.12941922e-01 5.09600027e-01 5.06322612e-01 5.03107629e-01 + 4.99953120e-01 4.96857213e-01 4.93818117e-01 4.90834114e-01 4.87903560e-01 + 4.85024878e-01 4.82196556e-01 4.79417141e-01 4.76685242e-01 4.73999519e-01 + 4.71358685e-01 4.68761505e-01 4.66206788e-01 4.63693390e-01 4.61220209e-01 + 4.58786184e-01 4.56390292e-01 4.54031548e-01 4.51709002e-01 4.49421737e-01 + 4.47168870e-01 4.44949545e-01 4.42762941e-01 4.40608259e-01 4.38484731e-01 + 4.36391613e-01 4.34328187e-01 4.32293756e-01 4.30287649e-01 4.28309213e-01 + 4.26357819e-01 4.24432857e-01 4.22533734e-01 4.20659877e-01 4.18810733e-01 + 4.16985761e-01 4.15184441e-01 4.13406264e-01 4.11650741e-01 4.09917394e-01 + 4.08205761e-01 4.06515390e-01 4.04845847e-01 4.03196706e-01 4.01567556e-01 + 3.99957996e-01 3.98367636e-01 3.96796098e-01 3.95243014e-01 3.93708024e-01 + 3.92190780e-01 3.90690944e-01 3.89208184e-01 3.87742180e-01 3.86292617e-01 + 3.84859191e-01 3.83441605e-01 3.82039569e-01 3.80652800e-01 3.79281024e-01 + 3.77923973e-01 3.76581385e-01 3.75253005e-01 3.73938583e-01 3.72637878e-01 + 3.71350652e-01 3.70076675e-01 3.68815719e-01 3.67567566e-01 3.66332000e-01 + 3.65108810e-01 3.63897792e-01 3.62698745e-01 3.61511473e-01 3.60335785e-01 + 3.59171493e-01 3.58018415e-01 3.56876371e-01 3.55745187e-01 3.54624691e-01 + 3.53514717e-01 3.52415101e-01 3.51325683e-01 3.50246306e-01 3.49176816e-01 + 3.48117064e-01 3.47066903e-01 3.46026189e-01 3.44994782e-01 3.43972542e-01 + 3.42959337e-01 3.41955032e-01 3.40959498e-01 3.39972609e-01 3.38994241e-01 + 3.38024270e-01 3.37062579e-01 3.36109049e-01 3.35163566e-01 3.34226018e-01 + 3.33296293e-01 3.32374284e-01 3.31459885e-01 3.30552992e-01 3.29653502e-01 + 3.28761315e-01 3.27876333e-01 3.26998460e-01 3.26127600e-01 3.25263662e-01 + 3.24406553e-01 3.23556184e-01 3.22712468e-01 3.21875318e-01 3.21044649e-01 + 3.20220378e-01 3.19402424e-01 3.18590706e-01 3.17785145e-01 3.16985665e-01 + 3.16192188e-01 3.15404639e-01 3.14622947e-01 3.13847038e-01 3.13076841e-01 + 3.12312287e-01 3.11553306e-01 3.10799833e-01 3.10051800e-01 3.09309142e-01 + 3.08571795e-01 3.07839697e-01 3.07112784e-01 3.06390997e-01 3.05674275e-01 + 3.04962560e-01 3.04255793e-01 3.03553917e-01 3.02856876e-01 3.02164615e-01 + 3.01477079e-01 3.00794216e-01 3.00115971e-01 2.99442294e-01 2.98773134e-01 + 2.98108439e-01 2.97448161e-01 2.96792252e-01 2.96140662e-01 2.95493345e-01 + 2.94850254e-01 2.94211344e-01 2.93576570e-01 2.92945886e-01 2.92319250e-01 + 2.91696618e-01 2.91077947e-01 2.90463197e-01 2.89852325e-01 2.89245291e-01 + 2.88642055e-01 2.88042577e-01 2.87446820e-01 2.86854743e-01 2.86266311e-01 + 2.85681484e-01 2.85100228e-01 2.84522505e-01 2.83948280e-01 2.83377517e-01 + 2.82810183e-01 2.82246243e-01 2.81685662e-01 2.81128409e-01 2.80574450e-01 + 2.80023753e-01 2.79476286e-01 2.78932017e-01 2.78390916e-01 2.77852951e-01 + 2.77318094e-01 2.76786313e-01 2.76257580e-01 2.75731865e-01 2.75209140e-01 + 2.74689377e-01 2.74172548e-01 2.73658625e-01 2.73147581e-01 2.72639389e-01 + 2.72134024e-01 2.71631458e-01 2.71131667e-01 2.70634624e-01 2.70140305e-01 + 2.69648684e-01 2.69159738e-01 2.68673442e-01 2.68189772e-01 2.67708706e-01 + 2.67230218e-01 2.66754287e-01 2.66280890e-01 2.65810005e-01 2.65341608e-01 + 2.64875680e-01 2.64412197e-01 2.63951138e-01 2.63492483e-01 2.63036211e-01 + 2.62582301e-01 2.62130732e-01 2.61681486e-01 2.61234541e-01 2.60789879e-01 + 2.60347479e-01 2.59907323e-01 2.59469393e-01 2.59033668e-01 2.58600131e-01 + 2.58168764e-01 2.57739549e-01 2.57312467e-01 2.56887501e-01 2.56464633e-01 + 2.56043847e-01 2.55625126e-01 2.55208452e-01 2.54793809e-01 2.54381180e-01 + 2.53970550e-01 2.53561902e-01 2.53155220e-01 2.52750489e-01 2.52347693e-01 + 2.51946816e-01 2.51547844e-01 2.51150761e-01 2.50755553e-01 2.50362204e-01 + 2.49970701e-01 2.49581029e-01 2.49193173e-01 2.48807120e-01 2.48422856e-01 + 2.48040367e-01 2.47659639e-01 2.47280658e-01 2.46903413e-01 2.46527888e-01 + 2.46154072e-01 2.45781951e-01 2.45411513e-01 2.45042745e-01 2.44675634e-01 + 2.44310168e-01 2.43946335e-01 2.43584122e-01 2.43223518e-01 2.42864511e-01 + 2.42507089e-01 2.42151241e-01 2.41796954e-01 2.41444218e-01 2.41093021e-01 + 2.40743352e-01 2.40395201e-01 2.40048555e-01 2.39703404e-01 2.39359739e-01 + 2.39017547e-01 2.38676818e-01 2.38337542e-01 2.37999710e-01 2.37663309e-01 + 2.37328332e-01 2.36994766e-01 2.36662603e-01 2.36331833e-01 2.36002446e-01 + 2.35674432e-01 2.35347783e-01 2.35022487e-01 2.34698537e-01 2.34375923e-01 + 2.34054635e-01 2.33734666e-01 2.33416004e-01 2.33098643e-01 2.32782573e-01 + 2.32467784e-01 2.32154270e-01 2.31842020e-01 2.31531028e-01 2.31221283e-01 + 2.30912778e-01 2.30605504e-01 2.30299454e-01 2.29994620e-01 2.29690992e-01 + 2.29388564e-01 2.29087328e-01 2.28787275e-01 2.28488398e-01 2.28190689e-01 + 2.27894141e-01 2.27598746e-01 2.27304497e-01 2.27011386e-01 2.26719406e-01 + 2.26428550e-01 2.26138810e-01 2.25850180e-01 2.25562652e-01 2.25276219e-01 + 2.24990875e-01 2.24706613e-01 2.24423425e-01 2.24141305e-01 2.23860246e-01 + 2.23580243e-01 2.23301287e-01 2.23023372e-01 2.22746493e-01 2.22470643e-01 + 2.22195814e-01 2.21922002e-01 2.21649200e-01 2.21377401e-01 2.21106599e-01 + 2.20836789e-01 2.20567964e-01 2.20300119e-01 2.20033247e-01 2.19767342e-01 + 2.19502400e-01 2.19238413e-01 2.18975376e-01 2.18713284e-01 2.18452130e-01 + 2.18191910e-01 2.17932618e-01 2.17674247e-01 2.17416794e-01 2.17160252e-01 + 2.16904616e-01 2.16649880e-01 2.16396040e-01 2.16143090e-01 2.15891025e-01 + 2.15639840e-01 2.15389530e-01 2.15140089e-01 2.14891513e-01 2.14643796e-01 + 2.14396935e-01 2.14150923e-01 2.13905756e-01 2.13661429e-01 2.13417937e-01 + 2.13175276e-01 2.12933441e-01 2.12692427e-01 2.12452229e-01 2.12212843e-01 + 2.11974265e-01 2.11736490e-01 2.11499513e-01 2.11263330e-01 2.11027936e-01 + 2.10793328e-01 2.10559500e-01 2.10326449e-01 2.10094169e-01 2.09862658e-01 + 2.09631910e-01 2.09401922e-01 2.09172689e-01 2.08944208e-01 2.08716473e-01 + 2.08489481e-01 2.08263229e-01 2.08037711e-01 2.07812924e-01 2.07588865e-01 + 2.07365528e-01 2.07142911e-01 2.06921010e-01 2.06699820e-01 2.06479337e-01 + 2.06259559e-01 2.06040481e-01 2.05822100e-01 2.05604412e-01 2.05387413e-01 + 2.05171099e-01 2.04955468e-01 2.04740515e-01 2.04526237e-01 2.04312630e-01 + 2.04099691e-01 2.03887417e-01 2.03675803e-01 2.03464847e-01 2.03254545e-01 + 2.03044894e-01 2.02835891e-01 2.02627531e-01 2.02419812e-01 2.02212731e-01 + 2.02006284e-01 2.01800468e-01 2.01595280e-01 2.01390716e-01 2.01186774e-01 + 2.00983451e-01 2.00780742e-01 2.00578646e-01 2.00377158e-01 2.00176277e-01 + 1.99975998e-01 1.99776320e-01 1.99577238e-01 1.99378751e-01 1.99180854e-01 + 1.98983546e-01 1.98786822e-01 1.98590681e-01 1.98395120e-01 1.98200135e-01 + 1.98005724e-01 1.97811884e-01 1.97618612e-01 1.97425905e-01 1.97233761e-01 + 1.97042177e-01 1.96851151e-01 1.96660678e-01 1.96470758e-01 1.96281387e-01 + 1.96092562e-01 1.95904281e-01 1.95716541e-01 1.95529341e-01 1.95342676e-01 + 1.95156545e-01 1.94970945e-01 1.94785873e-01 1.94601328e-01 1.94417306e-01 + 1.94233805e-01 1.94050823e-01 1.93868357e-01 1.93686404e-01 1.93504963e-01 + 1.93324031e-01 1.93143606e-01 1.92963685e-01 1.92784265e-01 1.92605345e-01 + 1.92426923e-01 1.92248995e-01 1.92071560e-01 1.91894616e-01 1.91718159e-01 + 1.91542189e-01 1.91366702e-01 1.91191696e-01 1.91017170e-01 1.90843121e-01 + 1.90669546e-01 1.90496445e-01 1.90323814e-01 1.90151652e-01 1.89979956e-01 + 1.89808724e-01 1.89637954e-01 1.89467644e-01 1.89297793e-01 1.89128397e-01 + 1.88959456e-01 1.88790966e-01 1.88622926e-01 1.88455335e-01 1.88288189e-01 + 1.88121487e-01 1.87955227e-01 1.87789407e-01 1.87624025e-01 1.87459079e-01 + 1.87294568e-01 1.87130489e-01 1.86966840e-01 1.86803620e-01 1.86640827e-01 + 1.86478458e-01 1.86316513e-01 1.86154989e-01 1.85993884e-01 1.85833197e-01 + 1.85672925e-01 1.85513068e-01 1.85353622e-01 1.85194587e-01 1.85035961e-01 + 1.84877742e-01 1.84719927e-01 1.84562517e-01 1.84405508e-01 1.84248899e-01 + 1.84092688e-01 1.83936874e-01 1.83781455e-01 1.83626429e-01 1.83471795e-01 + 1.83317551e-01 1.83163695e-01 1.83010226e-01 1.82857142e-01 1.82704442e-01 + 1.82552123e-01 1.82400185e-01 1.82248626e-01 1.82097444e-01 1.81946637e-01 + 1.81796204e-01 1.81646144e-01 1.81496455e-01 1.81347136e-01 1.81198184e-01 + 1.81049599e-01 1.80901378e-01 1.80753522e-01 1.80606027e-01 1.80458892e-01 + 1.80312117e-01 1.80165699e-01 1.80019637e-01 1.79873930e-01 1.79728576e-01 + 1.79583574e-01 1.79438922e-01 1.79294620e-01 1.79150665e-01 1.79007056e-01 + 1.78863792e-01 1.78720871e-01 1.78578292e-01 1.78436054e-01 1.78294156e-01 + 1.78152595e-01 1.78011371e-01 1.77870482e-01 1.77729928e-01 1.77589706e-01 + 1.77449815e-01 1.77310255e-01 1.77171023e-01 1.77032119e-01 1.76893540e-01 + 1.76755287e-01 1.76617358e-01 1.76479751e-01 1.76342465e-01 1.76205499e-01 + 1.76068851e-01 1.75932521e-01 1.75796507e-01 1.75660808e-01 1.75525423e-01 + 1.75390351e-01 1.75255589e-01 1.75121138e-01 1.74986996e-01 1.74853162e-01 + 1.74719634e-01 1.74586412e-01 1.74453494e-01 1.74320879e-01 1.74188566e-01 + 1.74056554e-01 1.73924842e-01 1.73793428e-01 1.73662312e-01 1.73531492e-01 + 1.73400967e-01 1.73270736e-01 1.73140798e-01 1.73011152e-01 1.72881797e-01 + 1.72752732e-01 1.72623955e-01 1.72495466e-01 1.72367263e-01 1.72239346e-01 + 1.72111713e-01 1.71984363e-01 1.71857296e-01 1.71730510e-01 1.71604004e-01 + 1.71477777e-01 1.71351828e-01 1.71226157e-01 1.71100761e-01 1.70975641e-01 + 1.70850795e-01 1.70726222e-01 1.70601921e-01 1.70477891e-01 1.70354131e-01 + 1.70230640e-01 1.70107418e-01 1.69984462e-01 1.69861773e-01 1.69739349e-01 + 1.69617190e-01 1.69495294e-01 1.69373660e-01 1.69252288e-01 1.69131176e-01 + 1.69010324e-01 1.68889731e-01 1.68769395e-01 1.68649317e-01 1.68529494e-01 + 1.68409926e-01 1.68290613e-01 1.68171552e-01 1.68052744e-01 1.67934188e-01 + 1.67815882e-01 1.67697825e-01 1.67580018e-01 1.67462458e-01 1.67345146e-01 + 1.67228079e-01 1.67111258e-01 1.66994682e-01 1.66878349e-01 1.66762259e-01 + 1.66646411e-01 1.66530804e-01 1.66415437e-01 1.66300309e-01 1.66185421e-01 + 1.66070770e-01 1.65956356e-01 1.65842178e-01 1.65728235e-01 1.65614527e-01 + 1.65501053e-01 1.65387812e-01 1.65274803e-01 1.65162025e-01 1.65049477e-01 + 1.64937160e-01 1.64825071e-01 1.64713211e-01 1.64601578e-01 1.64490172e-01 + 1.64378991e-01 1.64268036e-01 1.64157305e-01 1.64046798e-01 1.63936514e-01 + 1.63826452e-01 1.63716611e-01 1.63606991e-01 1.63497591e-01 1.63388409e-01 + 1.63279447e-01 1.63170702e-01 1.63062174e-01 1.62953862e-01 1.62845766e-01 + 1.62737885e-01 1.62630217e-01 1.62522764e-01 1.62415523e-01 1.62308493e-01 + 1.62201676e-01 1.62095069e-01 1.61988671e-01 1.61882483e-01 1.61776504e-01 + 1.61670732e-01 1.61565168e-01 1.61459810e-01 1.61354658e-01 1.61249711e-01 + 1.61144969e-01 1.61040431e-01 1.60936095e-01 1.60831963e-01 1.60728032e-01 + 1.60624302e-01 1.60520773e-01 1.60417444e-01 1.60314314e-01 1.60211383e-01 + 1.60108650e-01 1.60006114e-01 1.59903775e-01 1.59801632e-01 1.59699684e-01 + 1.59597932e-01 1.59496373e-01 1.59395009e-01 1.59293837e-01 1.59192858e-01 + 1.59092070e-01 1.58991474e-01 1.58891068e-01 1.58790852e-01 1.58690826e-01 + 1.58590988e-01 1.58491339e-01 1.58391877e-01 1.58292602e-01 1.58193514e-01 + 1.58094612e-01 1.57995894e-01 1.57897362e-01 1.57799013e-01 1.57700849e-01 + 1.57602867e-01 1.57505067e-01 1.57407450e-01 1.57310013e-01 1.57212758e-01 + 1.57115682e-01 1.57018786e-01 1.56922069e-01 1.56825531e-01 1.56729171e-01 + 1.56632988e-01 1.56536982e-01 1.56441152e-01 1.56345498e-01 1.56250019e-01 + 1.56154715e-01 1.56059585e-01 1.55964629e-01 1.55869846e-01 1.55775235e-01 + 1.55680797e-01 1.55586530e-01 1.55492434e-01 1.55398509e-01 1.55304754e-01 + 1.55211168e-01 1.55117751e-01 1.55024502e-01 1.54931422e-01 1.54838509e-01 + 1.54745763e-01 1.54653183e-01 1.54560770e-01 1.54468522e-01 1.54376439e-01 + 1.54284520e-01 1.54192765e-01 1.54101174e-01 1.54009746e-01 1.53918481e-01 + 1.53827377e-01 1.53736435e-01 1.53645654e-01 1.53555034e-01 1.53464574e-01 + 1.53374274e-01 1.53284132e-01 1.53194150e-01 1.53104326e-01 1.53014660e-01 + 1.52925151e-01 1.52835798e-01 1.52746603e-01 1.52657563e-01 1.52568679e-01 + 1.52479950e-01 1.52391376e-01 1.52302955e-01 1.52214689e-01 1.52126576e-01 + 1.52038615e-01 1.51950807e-01 1.51863151e-01 1.51775647e-01 1.51688293e-01 + 1.51601091e-01 1.51514038e-01 1.51427135e-01 1.51340382e-01 1.51253778e-01 + 1.51167322e-01 1.51081014e-01 1.50994854e-01 1.50908841e-01 1.50822975e-01 + 1.50737255e-01 1.50651681e-01 1.50566253e-01 1.50480970e-01 1.50395832e-01 + 1.50310838e-01 1.50225988e-01 1.50141281e-01 1.50056718e-01 1.49972298e-01 + 1.49888019e-01 1.49803883e-01 1.49719888e-01 1.49636035e-01 1.49552322e-01 + 1.49468749e-01 1.49385316e-01 1.49302023e-01 1.49218869e-01 1.49135854e-01 + 1.49052977e-01 1.48970239e-01 1.48887638e-01 1.48805174e-01 1.48722847e-01 + 1.48640656e-01 1.48558602e-01 1.48476683e-01 1.48394900e-01 1.48313252e-01 + 1.48231738e-01 1.48150359e-01 1.48069113e-01 1.47988001e-01 1.47907022e-01 + 1.47826176e-01 1.47745463e-01 1.47664881e-01 1.47584431e-01 1.47504113e-01 + 1.47423925e-01 1.47343868e-01 1.47263942e-01 1.47184145e-01 1.47104478e-01 + 1.47024940e-01 1.46945531e-01 1.46866251e-01 1.46787099e-01 1.46708074e-01 + 1.46629177e-01 1.46550407e-01 1.46471764e-01 1.46393248e-01 1.46314857e-01 + 1.46236593e-01 1.46158454e-01 1.46080440e-01 1.46002551e-01 1.45924786e-01 + 1.45847145e-01 1.45769628e-01 1.45692235e-01 1.45614965e-01 1.45537817e-01 + 1.45460792e-01 1.45383890e-01 1.45307109e-01 1.45230449e-01 1.45153911e-01 + 1.45077494e-01 1.45001197e-01 1.44925021e-01 1.44848964e-01 1.44773027e-01 + 1.44697209e-01 1.44621511e-01 1.44545931e-01 1.44470469e-01 1.44395126e-01 + 1.44319900e-01 1.44244791e-01 1.44169800e-01 1.44094926e-01 1.44020168e-01 + 1.43945527e-01 1.43871001e-01 1.43796591e-01 1.43722296e-01 1.43648117e-01 + 1.43574052e-01 1.43500101e-01 1.43426265e-01 1.43352542e-01 1.43278934e-01 + 1.43205438e-01 1.43132055e-01 1.43058785e-01 1.42985628e-01 1.42912583e-01 + 1.42839649e-01 1.42766827e-01 1.42694116e-01 1.42621516e-01 1.42549027e-01 + 1.42476649e-01 1.42404380e-01 1.42332222e-01 1.42260172e-01 1.42188233e-01 + 1.42116402e-01 1.42044680e-01 1.41973066e-01 1.41901561e-01 1.41830164e-01 + 1.41758874e-01 1.41687692e-01 1.41616617e-01 1.41545648e-01 1.41474786e-01 + 1.41404031e-01 1.41333382e-01 1.41262838e-01 1.41192400e-01 1.41122067e-01 + 1.41051839e-01 1.40981716e-01 1.40911698e-01 1.40841783e-01 1.40771973e-01 + 1.40702266e-01 1.40632663e-01 1.40563163e-01 1.40493766e-01 1.40424471e-01 + 1.40355279e-01 1.40286189e-01 1.40217202e-01 1.40148315e-01 1.40079531e-01 + 1.40010847e-01 1.39942264e-01 1.39873782e-01 1.39805401e-01 1.39737119e-01 + 1.39668938e-01 1.39600856e-01 1.39532874e-01 1.39464991e-01 1.39397207e-01 + 1.39329522e-01 1.39261935e-01 1.39194446e-01 1.39127056e-01 1.39059763e-01 + 1.38992568e-01 1.38925470e-01 1.38858469e-01 1.38791565e-01 1.38724758e-01 + 1.38658047e-01 1.38591432e-01 1.38524913e-01 1.38458490e-01 1.38392162e-01 + 1.38325930e-01 1.38259792e-01 1.38193750e-01 1.38127801e-01 1.38061947e-01 + 1.37996188e-01 1.37930522e-01 1.37864950e-01 1.37799471e-01 1.37734085e-01 + 1.37668793e-01 1.37603593e-01 1.37538485e-01 1.37473471e-01 1.37408548e-01 + 1.37343717e-01 1.37278977e-01 1.37214330e-01 1.37149773e-01 1.37085308e-01 + 1.37020933e-01 1.36956649e-01 1.36892455e-01 1.36828351e-01 1.36764338e-01 + 1.36700414e-01 1.36636580e-01 1.36572835e-01 1.36509179e-01 1.36445612e-01 + 1.36382134e-01 1.36318745e-01 1.36255443e-01 1.36192230e-01 1.36129105e-01 + 1.36066067e-01 1.36003117e-01 1.35940254e-01 1.35877478e-01 1.35814789e-01 + 1.35752187e-01 1.35689672e-01 1.35627242e-01 1.35564899e-01 1.35502641e-01 + 1.35440470e-01 1.35378384e-01 1.35316383e-01 1.35254467e-01 1.35192636e-01 + 1.35130890e-01 1.35069228e-01 1.35007651e-01 1.34946158e-01 1.34884748e-01 + 1.34823423e-01 1.34762181e-01 1.34701022e-01 1.34639947e-01 1.34578955e-01 + 1.34518045e-01 1.34457218e-01 1.34396474e-01 1.34335812e-01 1.34275232e-01 + 1.34214733e-01 1.34154317e-01 1.34093982e-01 1.34033728e-01 1.33973556e-01 + 1.33913464e-01 1.33853453e-01 1.33793523e-01 1.33733673e-01 1.33673904e-01 + 1.33614214e-01 1.33554605e-01 1.33495075e-01 1.33435625e-01 1.33376254e-01 + 1.33316962e-01 1.33257749e-01 1.33198615e-01 1.33139560e-01 1.33080583e-01 + 1.33021685e-01 1.32962864e-01 1.32904122e-01 1.32845457e-01 1.32786870e-01 + 1.32728361e-01 1.32669928e-01 1.32611573e-01 1.32553295e-01 1.32495093e-01 + 1.32436968e-01 1.32378920e-01 1.32320948e-01 1.32263052e-01 1.32205232e-01 + 1.32147487e-01 1.32089818e-01 1.32032225e-01 1.31974707e-01 1.31917264e-01 + 1.31859896e-01 1.31802603e-01 1.31745384e-01 1.31688240e-01 1.31631170e-01 + 1.31574174e-01 1.31517252e-01 1.31460404e-01 1.31403630e-01 1.31346929e-01 + 1.31290301e-01 1.31233747e-01 1.31177266e-01 1.31120857e-01 1.31064522e-01 + 1.31008258e-01 1.30952068e-01 1.30895949e-01 1.30839903e-01 1.30783928e-01 + 1.30728025e-01 1.30672194e-01 1.30616435e-01 1.30560746e-01 1.30505129e-01 + 1.30449583e-01 1.30394108e-01 1.30338703e-01 1.30283369e-01 1.30228105e-01 + 1.30172912e-01 1.30117789e-01 1.30062736e-01 1.30007752e-01 1.29952839e-01 + 1.29897994e-01 1.29843219e-01 1.29788514e-01 1.29733877e-01 1.29679310e-01 + 1.29624811e-01 1.29570381e-01 1.29516019e-01 1.29461726e-01 1.29407501e-01 + 1.29353344e-01 1.29299255e-01 1.29245234e-01 1.29191280e-01 1.29137394e-01 + 1.29083575e-01 1.29029824e-01 1.28976140e-01 1.28922522e-01 1.28868972e-01 + 1.28815488e-01 1.28762070e-01 1.28708719e-01 1.28655435e-01 1.28602216e-01 + 1.28549063e-01 1.28495977e-01 1.28442955e-01 1.28390000e-01 1.28337110e-01 + 1.28284285e-01 1.28231526e-01 1.28178831e-01 1.28126202e-01 1.28073637e-01 + 1.28021137e-01 1.27968701e-01 1.27916330e-01 1.27864023e-01 1.27811780e-01 + 1.27759601e-01 1.27707486e-01 1.27655434e-01 1.27603447e-01 1.27551522e-01 + 1.27499661e-01 1.27447864e-01 1.27396129e-01 1.27344457e-01 1.27292848e-01 + 1.27241302e-01 1.27189818e-01 1.27138397e-01 1.27087038e-01 1.27035742e-01 + 1.26984507e-01 1.26933334e-01 1.26882223e-01 1.26831174e-01 1.26780187e-01 + 1.26729260e-01 1.26678396e-01 1.26627592e-01 1.26576849e-01 1.26526168e-01 + 1.26475547e-01 1.26424987e-01 1.26374487e-01 1.26324048e-01 1.26273670e-01 + 1.26223351e-01 1.26173093e-01 1.26122894e-01 1.26072756e-01 1.26022677e-01 + 1.25972658e-01 1.25922698e-01 1.25872798e-01 1.25822957e-01 1.25773176e-01 + 1.25723453e-01 1.25673789e-01 1.25624184e-01 1.25574638e-01 1.25525150e-01 + 1.25475721e-01 1.25426350e-01 1.25377037e-01 1.25327782e-01 1.25278586e-01 + 1.25229447e-01 1.25180366e-01 1.25131343e-01 1.25082377e-01 1.25033469e-01 + 1.24984618e-01 1.24935824e-01 1.24887088e-01 1.24838408e-01 1.24789785e-01 + 1.24741219e-01 1.24692710e-01 1.24644257e-01 1.24595861e-01 1.24547521e-01 + 1.24499237e-01 1.24451010e-01 1.24402838e-01 1.24354722e-01 1.24306662e-01 + 1.24258658e-01 1.24210709e-01 1.24162816e-01 1.24114978e-01 1.24067195e-01 + 1.24019468e-01 1.23971795e-01 1.23924178e-01 1.23876615e-01 1.23829107e-01 + 1.23781654e-01 1.23734255e-01 1.23686910e-01 1.23639620e-01 1.23592384e-01 + 1.23545202e-01 1.23498075e-01 1.23451001e-01 1.23403980e-01 1.23357014e-01 + 1.23310101e-01 1.23263242e-01 1.23216436e-01 1.23169683e-01 1.23122983e-01 + 1.23076337e-01 1.23029743e-01 1.22983202e-01 1.22936715e-01 1.22890279e-01 + 1.22843897e-01 1.22797567e-01 1.22751289e-01 1.22705063e-01 1.22658890e-01 + 1.22612769e-01 1.22566700e-01 1.22520682e-01 1.22474717e-01 1.22428803e-01 + 1.22382941e-01 1.22337130e-01 1.22291371e-01 1.22245663e-01 1.22200006e-01 + 1.22154400e-01 1.22108845e-01 1.22063342e-01 1.22017889e-01 1.21972487e-01 + 1.21927135e-01 1.21881834e-01 1.21836584e-01 1.21791383e-01 1.21746234e-01 + 1.21701134e-01 1.21656084e-01 1.21611085e-01 1.21566135e-01 1.21521235e-01 + 1.21476385e-01 1.21431584e-01 1.21386833e-01 1.21342131e-01 1.21297479e-01 + 1.21252876e-01 1.21208322e-01 1.21163817e-01 1.21119362e-01 1.21074955e-01 + 1.21030597e-01 1.20986287e-01 1.20942026e-01 1.20897814e-01 1.20853651e-01 + 1.20809535e-01 1.20765468e-01 1.20721449e-01 1.20677478e-01 1.20633555e-01 + 1.20589681e-01 1.20545854e-01 1.20502074e-01 1.20458343e-01 1.20414659e-01 + 1.20371022e-01 1.20327433e-01 1.20283891e-01 1.20240396e-01 1.20196949e-01 + 1.20153549e-01 1.20110195e-01 1.20066889e-01 1.20023629e-01 1.19980416e-01 + 1.19937250e-01 1.19894130e-01 1.19851056e-01 1.19808030e-01 1.19765049e-01 + 1.19722115e-01 1.19679226e-01 1.19636384e-01 1.19593588e-01 1.19550838e-01 + 1.19508133e-01 1.19465474e-01 1.19422861e-01 1.19380294e-01 1.19337772e-01 + 1.19295295e-01 1.19252863e-01 1.19210477e-01 1.19168136e-01 1.19125841e-01 + 1.19083590e-01 1.19041384e-01 1.18999223e-01 1.18957106e-01 1.18915035e-01 + 1.18873008e-01 1.18831025e-01 1.18789087e-01 1.18747194e-01 1.18705344e-01 + 1.18663539e-01 1.18621778e-01 1.18580061e-01 1.18538388e-01 1.18496759e-01 + 1.18455174e-01 1.18413632e-01 1.18372134e-01 1.18330680e-01 1.18289269e-01 + 1.18247902e-01 1.18206578e-01 1.18165298e-01 1.18124060e-01 1.18082866e-01 + 1.18041715e-01 1.18000607e-01 1.17959541e-01 1.17918519e-01 1.17877539e-01 + 1.17836602e-01 1.17795708e-01 1.17754856e-01 1.17714047e-01 1.17673280e-01 + 1.17632556e-01 1.17591873e-01 1.17551233e-01 1.17510635e-01 1.17470079e-01 + 1.17429565e-01 1.17389093e-01 1.17348662e-01 1.17308274e-01 1.17267927e-01 + 1.17227622e-01 1.17187358e-01 1.17147135e-01 1.17106955e-01 1.17066815e-01 + 1.17026717e-01 1.16986659e-01 1.16946643e-01 1.16906668e-01 1.16866734e-01 + 1.16826841e-01 1.16786988e-01 1.16747177e-01 1.16707406e-01 1.16667676e-01 + 1.16627986e-01 1.16588337e-01 1.16548728e-01 1.16509159e-01 1.16469631e-01 + 1.16430143e-01 1.16390695e-01 1.16351287e-01 1.16311919e-01 1.16272591e-01 + 1.16233303e-01 1.16194055e-01 1.16154846e-01 1.16115678e-01 1.16076548e-01 + 1.16037459e-01 1.15998408e-01 1.15959397e-01 1.15920426e-01 1.15881494e-01 + 1.15842601e-01 1.15803747e-01 1.15764932e-01 1.15726156e-01 1.15687419e-01 + 1.15648721e-01 1.15610062e-01 1.15571441e-01 1.15532859e-01 1.15494316e-01 + 1.15455812e-01 1.15417345e-01 1.15378918e-01 1.15340528e-01 1.15302177e-01 + 1.15263864e-01 1.15225590e-01 1.15187353e-01 1.15149155e-01 1.15110994e-01 + 1.15072871e-01 1.15034786e-01 1.14996739e-01 1.14958730e-01 1.14920759e-01 + 1.14882824e-01 1.14844928e-01 1.14807069e-01 1.14769247e-01 1.14731463e-01 + 1.14693716e-01 1.14656006e-01 1.14618334e-01 1.14580699e-01 1.14543100e-01 + 1.14505539e-01 1.14468014e-01 1.14430527e-01 1.14393076e-01 1.14355662e-01 + 1.14318284e-01 1.14280944e-01 1.14243640e-01 1.14206372e-01 1.14169141e-01 + 1.14131946e-01 1.14094787e-01 1.14057665e-01 1.14020579e-01 1.13983529e-01 + 1.13946515e-01 1.13909538e-01 1.13872596e-01 1.13835690e-01 1.13798820e-01 + 1.13761986e-01 1.13725188e-01 1.13688425e-01 1.13651698e-01 1.13615006e-01 + 1.13578350e-01 1.13541730e-01 1.13505144e-01 1.13468595e-01 1.13432080e-01 + 1.13395601e-01 1.13359156e-01 1.13322747e-01 1.13286373e-01 1.13250035e-01 + 1.13213730e-01 1.13177461e-01 1.13141227e-01 1.13105028e-01 1.13068863e-01 + 1.13032733e-01 1.12996637e-01 1.12960576e-01 1.12924550e-01 1.12888558e-01 + 1.12852600e-01 1.12816677e-01 1.12780788e-01 1.12744933e-01 1.12709112e-01 + 1.12673326e-01 1.12637574e-01 1.12601855e-01 1.12566171e-01 1.12530520e-01 + 1.12494904e-01 1.12459321e-01 1.12423772e-01 1.12388256e-01 1.12352774e-01 + 1.12317326e-01 1.12281911e-01 1.12246530e-01 1.12211182e-01 1.12175868e-01 + 1.12140587e-01 1.12105339e-01 1.12070125e-01 1.12034943e-01 1.11999795e-01 + 1.11964679e-01 1.11929597e-01 1.11894548e-01 1.11859532e-01 1.11824548e-01 + 1.11789597e-01 1.11754679e-01 1.11719794e-01 1.11684941e-01 1.11650121e-01 + 1.11615334e-01 1.11580579e-01 1.11545856e-01 1.11511166e-01 1.11476508e-01 + 1.11441883e-01 1.11407289e-01 1.11372728e-01 1.11338199e-01 1.11303703e-01 + 1.11269238e-01 1.11234805e-01 1.11200404e-01 1.11166035e-01 1.11131698e-01 + 1.11097393e-01 1.11063119e-01 1.11028877e-01 1.10994667e-01 1.10960489e-01 + 1.10926342e-01 1.10892226e-01 1.10858142e-01 1.10824089e-01 1.10790068e-01 + 1.10756078e-01 1.10722119e-01 1.10688192e-01 1.10654295e-01 1.10620430e-01 + 1.10586596e-01 1.10552793e-01 1.10519021e-01 1.10485279e-01 1.10451569e-01 + 1.10417890e-01 1.10384241e-01 1.10350623e-01 1.10317036e-01 1.10283479e-01 + 1.10249953e-01 1.10216458e-01 1.10182993e-01 1.10149558e-01 1.10116154e-01 + 1.10082780e-01 1.10049437e-01 1.10016124e-01 1.09982841e-01 1.09949588e-01 + 1.09916366e-01 1.09883174e-01 1.09850011e-01 1.09816879e-01 1.09783776e-01 + 1.09750704e-01 1.09717661e-01 1.09684648e-01 1.09651665e-01 1.09618712e-01 + 1.09585789e-01 1.09552895e-01 1.09520030e-01 1.09487196e-01 1.09454390e-01 + 1.09421615e-01 1.09388868e-01 1.09356151e-01 1.09323464e-01 1.09290805e-01 + 1.09258176e-01 1.09225576e-01 1.09193006e-01 1.09160464e-01 1.09127951e-01 + 1.09095468e-01 1.09063013e-01 1.09030588e-01 1.08998191e-01 1.08965824e-01 + 1.08933485e-01 1.08901174e-01 1.08868893e-01 1.08836640e-01 1.08804416e-01 + 1.08772220e-01 1.08740054e-01 1.08707915e-01 1.08675805e-01 1.08643724e-01 + 1.08611671e-01 1.08579646e-01 1.08547649e-01 1.08515681e-01 1.08483741e-01 + 1.08451829e-01 1.08419946e-01 1.08388090e-01 1.08356263e-01 1.08324463e-01 + 1.08292692e-01 1.08260948e-01 1.08229233e-01 1.08197545e-01 1.08165885e-01 + 1.08134253e-01 1.08102648e-01 1.08071072e-01 1.08039523e-01 1.08008001e-01 + 1.07976507e-01 1.07945041e-01 1.07913602e-01 1.07882191e-01 1.07850807e-01 + 1.07819450e-01 1.07788121e-01 1.07756819e-01 1.07725544e-01 1.07694296e-01 + 1.07663076e-01 1.07631883e-01 1.07600717e-01 1.07569578e-01 1.07538466e-01 + 1.07507381e-01 1.07476322e-01 1.07445291e-01 1.07414287e-01 1.07383309e-01 + 1.07352359e-01 1.07321435e-01 1.07290537e-01 1.07259667e-01 1.07228823e-01 + 1.07198005e-01 1.07167214e-01 1.07136450e-01 1.07105712e-01 1.07075001e-01 + 1.07044316e-01 1.07013657e-01 1.06983025e-01 1.06952419e-01 1.06921839e-01 + 1.06891286e-01 1.06860758e-01 1.06830257e-01 1.06799782e-01 1.06769333e-01 + 1.06738910e-01 1.06708513e-01 1.06678142e-01 1.06647796e-01 1.06617477e-01 + 1.06587184e-01 1.06556916e-01 1.06526674e-01 1.06496458e-01 1.06466268e-01 + 1.06436103e-01 1.06405964e-01 1.06375850e-01 1.06345762e-01 1.06315700e-01 + 1.06285663e-01 1.06255651e-01 1.06225665e-01 1.06195704e-01 1.06165769e-01 + 1.06135859e-01 1.06105974e-01 1.06076114e-01 1.06046280e-01 1.06016470e-01 + 1.05986686e-01 1.05956927e-01 1.05927193e-01 1.05897484e-01 1.05867800e-01 + 1.05838141e-01 1.05808507e-01 1.05778897e-01 1.05749313e-01 1.05719753e-01 + 1.05690218e-01 1.05660708e-01 1.05631223e-01 1.05601762e-01 1.05572326e-01 + 1.05542914e-01 1.05513528e-01 1.05484165e-01 1.05454827e-01 1.05425514e-01 + 1.05396225e-01 1.05366960e-01 1.05337720e-01 1.05308504e-01 1.05279312e-01 + 1.05250145e-01 1.05221002e-01 1.05191883e-01 1.05162788e-01 1.05133717e-01 + 1.05104671e-01 1.05075648e-01 1.05046650e-01 1.05017675e-01 1.04988725e-01 + 1.04959798e-01 1.04930896e-01 1.04902017e-01 1.04873162e-01 1.04844331e-01 + 1.04815523e-01 1.04786740e-01 1.04757980e-01 1.04729243e-01 1.04700531e-01 + 1.04671841e-01 1.04643176e-01 1.04614534e-01 1.04585916e-01 1.04557321e-01 + 1.04528749e-01 1.04500201e-01 1.04471676e-01 1.04443175e-01 1.04414697e-01 + 1.04386242e-01 1.04357810e-01 1.04329402e-01 1.04301017e-01 1.04272655e-01 + 1.04244316e-01 1.04216000e-01 1.04187707e-01 1.04159437e-01 1.04131191e-01 + 1.04102967e-01 1.04074766e-01 1.04046588e-01 1.04018433e-01 1.03990301e-01 + 1.03962192e-01 1.03934105e-01 1.03906041e-01 1.03878000e-01 1.03849982e-01 + 1.03821986e-01 1.03794013e-01 1.03766062e-01 1.03738134e-01 1.03710229e-01 + 1.03682346e-01 1.03654486e-01 1.03626648e-01 1.03598832e-01 1.03571039e-01 + 1.03543268e-01 1.03515520e-01 1.03487793e-01 1.03460089e-01 1.03432408e-01 + 1.03404748e-01 1.03377111e-01 1.03349496e-01 1.03321903e-01 1.03294332e-01 + 1.03266783e-01 1.03239256e-01 1.03211751e-01 1.03184268e-01 1.03156807e-01 + 1.03129368e-01 1.03101951e-01 1.03074556e-01 1.03047182e-01 1.03019831e-01 + 1.02992501e-01 1.02965192e-01 1.02937906e-01 1.02910641e-01 1.02883398e-01 + 1.02856177e-01 1.02828977e-01 1.02801798e-01 1.02774642e-01 1.02747506e-01 + 1.02720392e-01 1.02693300e-01 1.02666229e-01 1.02639180e-01 1.02612151e-01 + 1.02585145e-01 1.02558159e-01 1.02531195e-01 1.02504252e-01 1.02477330e-01 + 1.02450430e-01 1.02423550e-01 1.02396692e-01 1.02369855e-01 1.02343039e-01 + 1.02316244e-01 1.02289470e-01 1.02262717e-01 1.02235985e-01 1.02209274e-01 + 1.02182584e-01 1.02155915e-01 1.02129267e-01 1.02102639e-01 1.02076033e-01 + 1.02049447e-01 1.02022882e-01 1.01996338e-01 1.01969814e-01 1.01943311e-01 + 1.01916829e-01 1.01890367e-01 1.01863926e-01 1.01837505e-01 1.01811106e-01 + 1.01784726e-01 1.01758367e-01 1.01732029e-01 1.01705711e-01 1.01679413e-01 + 1.01653136e-01 1.01626879e-01 1.01600643e-01 1.01574426e-01 1.01548230e-01 + 1.01522055e-01 1.01495899e-01 1.01469764e-01 1.01443649e-01 1.01417554e-01 + 1.01391479e-01 1.01365425e-01 1.01339390e-01 1.01313376e-01 1.01287381e-01 + 1.01261406e-01 1.01235452e-01 1.01209517e-01 1.01183603e-01 1.01157708e-01 + 1.01131833e-01 1.01105978e-01 1.01080143e-01 1.01054327e-01 1.01028532e-01 + 1.01002756e-01 1.00976999e-01 1.00951263e-01 1.00925546e-01 1.00899849e-01 + 1.00874171e-01 1.00848513e-01 1.00822875e-01 1.00797256e-01 1.00771656e-01 + 1.00746077e-01 1.00720516e-01 1.00694975e-01 1.00669454e-01 1.00643952e-01 + 1.00618469e-01 1.00593005e-01 1.00567561e-01 1.00542136e-01 1.00516731e-01 + 1.00491345e-01 1.00465978e-01 1.00440630e-01 1.00415301e-01 1.00389992e-01 + 1.00364701e-01 1.00339430e-01 1.00314178e-01 1.00288944e-01 1.00263730e-01 + 1.00238535e-01 1.00213359e-01 1.00188202e-01 1.00163064e-01 1.00137944e-01 + 1.00112844e-01 1.00087762e-01 1.00062700e-01 1.00037656e-01 1.00012631e-01 + 9.99876242e-02 9.99626366e-02 9.99376677e-02 9.99127176e-02 9.98877861e-02 + 9.98628732e-02 9.98379790e-02 9.98131034e-02 9.97882464e-02 9.97634079e-02 + 9.97385880e-02 9.97137866e-02 9.96890037e-02 9.96642393e-02 9.96394933e-02 + 9.96147657e-02 9.95900565e-02 9.95653657e-02 9.95406933e-02 9.95160392e-02 + 9.94914034e-02 9.94667859e-02 9.94421867e-02 9.94176057e-02 9.93930429e-02 + 9.93684983e-02 9.93439719e-02 9.93194636e-02 9.92949735e-02 9.92705015e-02 + 9.92460476e-02 9.92216117e-02 9.91971939e-02 9.91727940e-02 9.91484122e-02 + 9.91240484e-02 9.90997025e-02 9.90753745e-02 9.90510645e-02 9.90267723e-02 + 9.90024980e-02 9.89782415e-02 9.89540029e-02 9.89297821e-02 9.89055790e-02 + 9.88813937e-02 9.88572261e-02 9.88330763e-02 9.88089441e-02 9.87848296e-02 + 9.87607327e-02 9.87366535e-02 9.87125919e-02 9.86885478e-02 9.86645213e-02 + 9.86405124e-02 9.86165209e-02 9.85925470e-02 9.85685906e-02 9.85446516e-02 + 9.85207300e-02 9.84968258e-02 9.84729391e-02 9.84490697e-02 9.84252176e-02 + 9.84013829e-02 9.83775655e-02 9.83537654e-02 9.83299825e-02 9.83062169e-02 + 9.82824685e-02 9.82587374e-02 9.82350233e-02 9.82113265e-02 9.81876468e-02 + 9.81639842e-02 9.81403387e-02 9.81167103e-02 9.80930990e-02 9.80695047e-02 + 9.80459274e-02 9.80223671e-02 9.79988238e-02 9.79752974e-02 9.79517880e-02 + 9.79282955e-02 9.79048199e-02 9.78813611e-02 9.78579192e-02 9.78344942e-02 + 9.78110859e-02 9.77876945e-02 9.77643198e-02 9.77409619e-02 9.77176207e-02 + 9.76942963e-02 9.76709885e-02 9.76476974e-02 9.76244230e-02 9.76011651e-02 + 9.75779239e-02 9.75546993e-02 9.75314913e-02 9.75082999e-02 9.74851249e-02 + 9.74619665e-02 9.74388246e-02 9.74156991e-02 9.73925901e-02 9.73694976e-02 + 9.73464215e-02 9.73233617e-02 9.73003184e-02 9.72772914e-02 9.72542807e-02 + 9.72312864e-02 9.72083084e-02 9.71853467e-02 9.71624012e-02 9.71394719e-02 + 9.71165589e-02 9.70936621e-02 9.70707815e-02 9.70479171e-02 9.70250688e-02 + 9.70022366e-02 9.69794205e-02 9.69566206e-02 9.69338367e-02 9.69110688e-02 + 9.68883170e-02 9.68655813e-02 9.68428615e-02 9.68201577e-02 9.67974698e-02 + 9.67747979e-02 9.67521419e-02 9.67295019e-02 9.67068777e-02 9.66842693e-02 + 9.66616769e-02 9.66391002e-02 9.66165394e-02 9.65939943e-02 9.65714651e-02 + 9.65489516e-02 9.65264538e-02 9.65039718e-02 9.64815054e-02 9.64590547e-02 + 9.64366197e-02 9.64142004e-02 9.63917967e-02 9.63694086e-02 9.63470360e-02 + 9.63246791e-02 9.63023377e-02 9.62800118e-02 9.62577015e-02 9.62354067e-02 + 9.62131273e-02 9.61908635e-02 9.61686150e-02 9.61463820e-02 9.61241644e-02 + 9.61019623e-02 9.60797754e-02 9.60576040e-02 9.60354479e-02 9.60133071e-02 + 9.59911816e-02 9.59690714e-02 9.59469765e-02 9.59248968e-02 9.59028324e-02 + 9.58807832e-02 9.58587492e-02 9.58367303e-02 9.58147267e-02 9.57927382e-02 + 9.57707648e-02 9.57488065e-02 9.57268633e-02 9.57049352e-02 9.56830222e-02 + 9.56611242e-02 9.56392413e-02 9.56173733e-02 9.55955204e-02 9.55736824e-02 + 9.55518594e-02 9.55300513e-02 9.55082582e-02 9.54864799e-02 9.54647166e-02 + 9.54429681e-02 9.54212345e-02 9.53995157e-02 9.53778117e-02 9.53561226e-02 + 9.53344482e-02 9.53127886e-02 9.52911438e-02 9.52695137e-02 9.52478984e-02 + 9.52262977e-02 9.52047117e-02 9.51831404e-02 9.51615838e-02 9.51400418e-02 + 9.51185144e-02 9.50970016e-02 9.50755034e-02 9.50540198e-02 9.50325508e-02 + 9.50110963e-02 9.49896563e-02 9.49682308e-02 9.49468198e-02 9.49254233e-02 + 9.49040412e-02 9.48826736e-02 9.48613204e-02 9.48399817e-02 9.48186573e-02 + 9.47973473e-02 9.47760516e-02 9.47547703e-02 9.47335034e-02 9.47122507e-02 + 9.46910123e-02 9.46697883e-02 9.46485784e-02 9.46273829e-02 9.46062015e-02 + 9.45850344e-02 9.45638815e-02 9.45427428e-02 9.45216182e-02 9.45005078e-02 + 9.44794116e-02 9.44583294e-02 9.44372614e-02 9.44162074e-02 9.43951676e-02 + 9.43741418e-02 9.43531300e-02 9.43321323e-02 9.43111485e-02 9.42901788e-02 + 9.42692231e-02 9.42482813e-02 9.42273534e-02 9.42064395e-02 9.41855396e-02 + 9.41646535e-02 9.41437813e-02 9.41229230e-02 9.41020785e-02 9.40812479e-02 + 9.40604311e-02 9.40396282e-02 9.40188390e-02 9.39980636e-02 9.39773020e-02 + 9.39565541e-02 9.39358200e-02 9.39150995e-02 9.38943928e-02 9.38736998e-02 + 9.38530204e-02 9.38323548e-02 9.38117027e-02 9.37910643e-02 9.37704395e-02 + 9.37498283e-02 9.37292307e-02 9.37086466e-02 9.36880762e-02 9.36675192e-02 + 9.36469758e-02 9.36264459e-02 9.36059295e-02 9.35854265e-02 9.35649371e-02 + 9.35444611e-02 9.35239985e-02 9.35035493e-02 9.34831136e-02 9.34626912e-02 + 9.34422823e-02 9.34218866e-02 9.34015044e-02 9.33811355e-02 9.33607798e-02 + 9.33404375e-02 9.33201085e-02 9.32997928e-02 9.32794903e-02 9.32592011e-02 + 9.32389251e-02 9.32186624e-02 9.31984128e-02 9.31781764e-02 9.31579532e-02 + 9.31377432e-02 9.31175463e-02 9.30973626e-02 9.30771919e-02 9.30570344e-02 + 9.30368899e-02 9.30167586e-02 9.29966403e-02 9.29765350e-02 9.29564428e-02 + 9.29363636e-02 9.29162974e-02 9.28962442e-02 9.28762040e-02 9.28561768e-02 + 9.28361624e-02 9.28161611e-02 9.27961726e-02 9.27761971e-02 9.27562344e-02 + 9.27362847e-02 9.27163478e-02 9.26964237e-02 9.26765125e-02 9.26566141e-02 + 9.26367286e-02 9.26168558e-02 9.25969958e-02 9.25771486e-02 9.25573141e-02 + 9.25374924e-02 9.25176834e-02 9.24978871e-02 9.24781036e-02 9.24583327e-02 + 9.24385745e-02 9.24188289e-02 9.23990960e-02 9.23793758e-02 9.23596681e-02 + 9.23399731e-02 9.23202907e-02 9.23006208e-02 9.22809635e-02 9.22613188e-02 + 9.22416866e-02 9.22220669e-02 9.22024597e-02 9.21828651e-02 9.21632829e-02 + 9.21437132e-02 9.21241560e-02 9.21046112e-02 9.20850788e-02 9.20655589e-02 + 9.20460514e-02 9.20265563e-02 9.20070735e-02 9.19876031e-02 9.19681451e-02 + 9.19486994e-02 9.19292661e-02 9.19098451e-02 9.18904363e-02 9.18710399e-02 + 9.18516557e-02 9.18322838e-02 9.18129242e-02 9.17935768e-02 9.17742416e-02 + 9.17549186e-02 9.17356079e-02 9.17163093e-02 9.16970229e-02 9.16777486e-02 + 9.16584865e-02 9.16392366e-02 9.16199987e-02 9.16007730e-02 9.15815594e-02 + 9.15623578e-02 9.15431684e-02 9.15239910e-02 9.15048256e-02 9.14856723e-02 + 9.14665310e-02 9.14474017e-02 9.14282844e-02 9.14091791e-02 9.13900857e-02 + 9.13710043e-02 9.13519349e-02 9.13328774e-02 9.13138318e-02 9.12947982e-02 + 9.12757764e-02 9.12567665e-02 9.12377685e-02 9.12187823e-02 9.11998080e-02 + 9.11808456e-02 9.11618949e-02 9.11429561e-02 9.11240290e-02 9.11051138e-02 + 9.10862103e-02 9.10673186e-02 9.10484386e-02 9.10295704e-02 9.10107139e-02 + 9.09918691e-02 9.09730360e-02 9.09542146e-02 9.09354049e-02 9.09166069e-02 + 9.08978205e-02 9.08790457e-02 9.08602826e-02 9.08415311e-02 9.08227911e-02 + 9.08040628e-02 9.07853461e-02 9.07666409e-02 9.07479473e-02 9.07292652e-02 + 9.07105947e-02 9.06919357e-02 9.06732882e-02 9.06546522e-02 9.06360277e-02 + 9.06174146e-02 9.05988131e-02 9.05802229e-02 9.05616442e-02 9.05430770e-02 + 9.05245211e-02 9.05059767e-02 9.04874436e-02 9.04689219e-02 9.04504116e-02 + 9.04319127e-02 9.04134251e-02 9.03949488e-02 9.03764839e-02 9.03580303e-02 + 9.03395879e-02 9.03211569e-02 9.03027371e-02 9.02843286e-02 9.02659313e-02 + 9.02475453e-02 9.02291706e-02 9.02108070e-02 9.01924546e-02 9.01741135e-02 + 9.01557835e-02 9.01374647e-02 9.01191571e-02 9.01008606e-02 9.00825752e-02 + 9.00643010e-02 9.00460379e-02 9.00277859e-02 9.00095450e-02 8.99913152e-02 + 8.99730965e-02 8.99548888e-02 8.99366921e-02 8.99185065e-02 8.99003320e-02 + 8.98821684e-02 8.98640159e-02 8.98458743e-02 8.98277437e-02 8.98096241e-02 + 8.97915155e-02 8.97734178e-02 8.97553311e-02 8.97372552e-02 8.97191903e-02 + 8.97011363e-02 8.96830932e-02 8.96650610e-02 8.96470396e-02 8.96290291e-02 + 8.96110295e-02 8.95930407e-02 8.95750627e-02 8.95570956e-02 8.95391392e-02 + 8.95211937e-02 8.95032589e-02 8.94853349e-02 8.94674217e-02 8.94495192e-02 + 8.94316275e-02 8.94137465e-02 8.93958762e-02 8.93780167e-02 8.93601678e-02 + 8.93423296e-02 8.93245021e-02 8.93066853e-02 8.92888791e-02 8.92710836e-02 + 8.92532987e-02 8.92355244e-02 8.92177608e-02 8.92000077e-02 8.91822653e-02 + 8.91645334e-02 8.91468121e-02 8.91291014e-02 8.91114012e-02 8.90937115e-02 + 8.90760324e-02 8.90583638e-02 8.90407057e-02 8.90230582e-02 8.90054211e-02 + 8.89877945e-02 8.89701783e-02 8.89525726e-02 8.89349774e-02 8.89173926e-02 + 8.88998182e-02 8.88822542e-02 8.88647007e-02 8.88471575e-02 8.88296247e-02 + 8.88121023e-02 8.87945903e-02 8.87770886e-02 8.87595973e-02 8.87421163e-02 + 8.87246456e-02 8.87071853e-02 8.86897352e-02 8.86722954e-02 8.86548660e-02 + 8.86374468e-02 8.86200378e-02 8.86026391e-02 8.85852507e-02 8.85678725e-02 + 8.85505045e-02 8.85331467e-02 8.85157991e-02 8.84984618e-02 8.84811346e-02 + 8.84638176e-02 8.84465107e-02 8.84292140e-02 8.84119274e-02 8.83946510e-02 + 8.83773847e-02 8.83601285e-02 8.83428825e-02 8.83256465e-02 8.83084206e-02 + 8.82912047e-02 8.82739990e-02 8.82568033e-02 8.82396176e-02 8.82224420e-02 + 8.82052764e-02 8.81881208e-02 8.81709752e-02 8.81538396e-02 8.81367140e-02 + 8.81195984e-02 8.81024927e-02 8.80853970e-02 8.80683113e-02 8.80512355e-02 + 8.80341696e-02 8.80171137e-02 8.80000676e-02 8.79830314e-02 8.79660052e-02 + 8.79489888e-02 8.79319823e-02 8.79149857e-02 8.78979989e-02 8.78810219e-02 + 8.78640548e-02 8.78470975e-02 8.78301500e-02 8.78132123e-02 8.77962845e-02 + 8.77793664e-02 8.77624580e-02 8.77455595e-02 8.77286707e-02 8.77117916e-02 + 8.76949223e-02 8.76780628e-02 8.76612129e-02 8.76443728e-02 8.76275423e-02 + 8.76107216e-02 8.75939105e-02 8.75771091e-02 8.75603174e-02 8.75435353e-02 + 8.75267629e-02 8.75100001e-02 8.74932469e-02 8.74765033e-02 8.74597694e-02 + 8.74430451e-02 8.74263303e-02 8.74096251e-02 8.73929296e-02 8.73762435e-02 + 8.73595670e-02 8.73429001e-02 8.73262427e-02 8.73095948e-02 8.72929565e-02 + 8.72763276e-02 8.72597083e-02 8.72430984e-02 8.72264981e-02 8.72099072e-02 + 8.71933257e-02 8.71767537e-02 8.71601912e-02 8.71436381e-02 8.71270944e-02 + 8.71105602e-02 8.70940353e-02 8.70775199e-02 8.70610138e-02 8.70445172e-02 + 8.70280299e-02 8.70115519e-02 8.69950834e-02 8.69786241e-02 8.69621742e-02 + 8.69457337e-02 8.69293024e-02 8.69128805e-02 8.68964679e-02 8.68800646e-02 + 8.68636705e-02 8.68472857e-02 8.68309103e-02 8.68145440e-02 8.67981870e-02 + 8.67818393e-02 8.67655008e-02 8.67491715e-02 8.67328514e-02 8.67165406e-02 + 8.67002389e-02 8.66839464e-02 8.66676631e-02 8.66513890e-02 8.66351240e-02 + 8.66188682e-02 8.66026216e-02 8.65863841e-02 8.65701557e-02 8.65539364e-02 + 8.65377263e-02 8.65215252e-02 8.65053333e-02 8.64891504e-02 8.64729766e-02 + 8.64568119e-02 8.64406563e-02 8.64245097e-02 8.64083721e-02 8.63922436e-02 + 8.63761241e-02 8.63600136e-02 8.63439122e-02 8.63278197e-02 8.63117363e-02 + 8.62956618e-02 8.62795963e-02 8.62635398e-02 8.62474922e-02 8.62314536e-02 + 8.62154239e-02 8.61994032e-02 8.61833914e-02 8.61673885e-02 8.61513945e-02 + 8.61354094e-02 8.61194332e-02 8.61034659e-02 8.60875075e-02 8.60715580e-02 + 8.60556173e-02 8.60396855e-02 8.60237625e-02 8.60078483e-02 8.59919430e-02 + 8.59760465e-02 8.59601588e-02 8.59442800e-02 8.59284099e-02 8.59125486e-02 + 8.58966961e-02 8.58808523e-02 8.58650173e-02 8.58491911e-02 8.58333736e-02 + 8.58175649e-02 8.58017649e-02 8.57859736e-02 8.57701911e-02 8.57544172e-02 + 8.57386520e-02 8.57228956e-02 8.57071478e-02 8.56914087e-02 8.56756782e-02 + 8.56599565e-02 8.56442433e-02 8.56285389e-02 8.56128430e-02 8.55971558e-02 + 8.55814772e-02 8.55658072e-02 8.55501458e-02 8.55344930e-02 8.55188488e-02 + 8.55032132e-02 8.54875862e-02 8.54719677e-02 8.54563578e-02 8.54407564e-02 + 8.54251636e-02 8.54095793e-02 8.53940035e-02 8.53784363e-02 8.53628775e-02 + 8.53473273e-02 8.53317855e-02 8.53162523e-02 8.53007275e-02 8.52852112e-02 + 8.52697034e-02 8.52542040e-02 8.52387130e-02 8.52232305e-02 8.52077565e-02 + 8.51922909e-02 8.51768336e-02 8.51613848e-02 8.51459444e-02 8.51305124e-02 + 8.51150888e-02 8.50996736e-02 8.50842667e-02 8.50688682e-02 8.50534780e-02 + 8.50380963e-02 8.50227228e-02 8.50073577e-02 8.49920009e-02 8.49766524e-02 + 8.49613123e-02 8.49459804e-02 8.49306569e-02 8.49153416e-02 8.49000346e-02 + 8.48847359e-02 8.48694455e-02 8.48541633e-02 8.48388893e-02 8.48236237e-02 + 8.48083662e-02 8.47931170e-02 8.47778760e-02 8.47626432e-02 8.47474187e-02 + 8.47322023e-02 8.47169941e-02 8.47017941e-02 8.46866023e-02 8.46714187e-02 + 8.46562432e-02 8.46410759e-02 8.46259167e-02 8.46107657e-02 8.45956228e-02 + 8.45804880e-02 8.45653614e-02 8.45502428e-02 8.45351324e-02 8.45200301e-02 + 8.45049358e-02 8.44898497e-02 8.44747716e-02 8.44597016e-02 8.44446397e-02 + 8.44295858e-02 8.44145399e-02 8.43995021e-02 8.43844724e-02 8.43694506e-02 + 8.43544369e-02 8.43394312e-02 8.43244335e-02 8.43094438e-02 8.42944621e-02 + 8.42794883e-02 8.42645226e-02 8.42495648e-02 8.42346150e-02 8.42196731e-02 + 8.42047392e-02 8.41898132e-02 8.41748952e-02 8.41599851e-02 8.41450829e-02 + 8.41301886e-02 8.41153022e-02 8.41004238e-02 8.40855532e-02 8.40706905e-02 + 8.40558357e-02 8.40409887e-02 8.40261496e-02 8.40113184e-02 8.39964950e-02 + 8.39816795e-02 8.39668718e-02 8.39520719e-02 8.39372799e-02 8.39224957e-02 + 8.39077193e-02 8.38929507e-02 8.38781898e-02 8.38634368e-02 8.38486916e-02 + 8.38339541e-02 8.38192244e-02 8.38045025e-02 8.37897883e-02 8.37750818e-02 + 8.37603831e-02 8.37456922e-02 8.37310089e-02 8.37163334e-02 8.37016656e-02 + 8.36870055e-02 8.36723531e-02 8.36577084e-02 8.36430714e-02 8.36284421e-02 + 8.36138204e-02 8.35992064e-02 8.35846001e-02 8.35700014e-02 8.35554104e-02 + 8.35408270e-02 8.35262512e-02 8.35116831e-02 8.34971226e-02 8.34825697e-02 + 8.34680244e-02 8.34534867e-02 8.34389566e-02 8.34244341e-02 8.34099191e-02 + 8.33954118e-02 8.33809120e-02 8.33664197e-02 8.33519351e-02 8.33374579e-02 + 8.33229883e-02 8.33085263e-02 8.32940718e-02 8.32796248e-02 8.32651853e-02 + 8.32507533e-02 8.32363288e-02 8.32219118e-02 8.32075023e-02 8.31931003e-02 + 8.31787058e-02 8.31643187e-02 8.31499391e-02 8.31355669e-02 8.31212022e-02 + 8.31068450e-02 8.30924951e-02 8.30781528e-02 8.30638178e-02 8.30494902e-02 + 8.30351701e-02 8.30208574e-02 8.30065520e-02 8.29922541e-02 8.29779635e-02 + 8.29636804e-02 8.29494046e-02 8.29351361e-02 8.29208751e-02 8.29066213e-02 + 8.28923750e-02 8.28781359e-02 8.28639042e-02 8.28496799e-02 8.28354628e-02 + 8.28212531e-02 8.28070507e-02 8.27928556e-02 8.27786678e-02 8.27644872e-02 + 8.27503140e-02 8.27361480e-02 8.27219893e-02 8.27078379e-02 8.26936938e-02 + 8.26795569e-02 8.26654272e-02 8.26513048e-02 8.26371896e-02 8.26230816e-02 + 8.26089809e-02 8.25948874e-02 8.25808011e-02 8.25667220e-02 8.25526501e-02 + 8.25385854e-02 8.25245279e-02 8.25104775e-02 8.24964344e-02 8.24823984e-02 + 8.24683695e-02 8.24543479e-02 8.24403333e-02 8.24263259e-02 8.24123257e-02 + 8.23983326e-02 8.23843466e-02 8.23703677e-02 8.23563960e-02 8.23424313e-02 + 8.23284737e-02 8.23145233e-02 8.23005799e-02 8.22866436e-02 8.22727144e-02 + 8.22587923e-02 8.22448772e-02 8.22309692e-02 8.22170683e-02 8.22031744e-02 + 8.21892875e-02 8.21754077e-02 8.21615349e-02 8.21476691e-02 8.21338103e-02 + 8.21199586e-02 8.21061138e-02 8.20922761e-02 8.20784453e-02 8.20646216e-02 + 8.20508048e-02 8.20369950e-02 8.20231922e-02 8.20093963e-02 8.19956074e-02 + 8.19818254e-02 8.19680504e-02 8.19542823e-02 8.19405212e-02 8.19267670e-02 + 8.19130197e-02 8.18992794e-02 8.18855459e-02 8.18718194e-02 8.18580997e-02 + 8.18443870e-02 8.18306811e-02 8.18169822e-02 8.18032901e-02 8.17896048e-02 + 8.17759265e-02 8.17622550e-02 8.17485903e-02 8.17349326e-02 8.17212816e-02 + 8.17076375e-02 8.16940002e-02 8.16803697e-02 8.16667461e-02 8.16531293e-02 + 8.16395193e-02 8.16259161e-02 8.16123197e-02 8.15987300e-02 8.15851472e-02 + 8.15715712e-02 8.15580019e-02 8.15444394e-02 8.15308836e-02 8.15173346e-02 + 8.15037924e-02 8.14902569e-02 8.14767282e-02 8.14632062e-02 8.14496909e-02 + 8.14361823e-02 8.14226805e-02 8.14091854e-02 8.13956970e-02 8.13822153e-02 + 8.13687402e-02 8.13552719e-02 8.13418103e-02 8.13283553e-02 8.13149070e-02 + 8.13014654e-02 8.12880305e-02 8.12746022e-02 8.12611805e-02 8.12477656e-02 + 8.12343572e-02 8.12209555e-02 8.12075604e-02 8.11941719e-02 8.11807901e-02 + 8.11674149e-02 8.11540463e-02 8.11406843e-02 8.11273288e-02 8.11139800e-02 + 8.11006378e-02 8.10873021e-02 8.10739731e-02 8.10606506e-02 8.10473346e-02 + 8.10340252e-02 8.10207224e-02 8.10074261e-02 8.09941364e-02 8.09808532e-02 + 8.09675765e-02 8.09543064e-02 8.09410428e-02 8.09277857e-02 8.09145351e-02 + 8.09012911e-02 8.08880535e-02 8.08748224e-02 8.08615978e-02 8.08483797e-02 + 8.08351681e-02 8.08219630e-02 8.08087643e-02 8.07955721e-02 8.07823863e-02 + 8.07692070e-02 8.07560342e-02 8.07428678e-02 8.07297078e-02 8.07165542e-02 + 8.07034071e-02 8.06902664e-02 8.06771322e-02 8.06640043e-02 8.06508829e-02 + 8.06377678e-02 8.06246592e-02 8.06115569e-02 8.05984610e-02 8.05853715e-02 + 8.05722884e-02 8.05592116e-02 8.05461412e-02 8.05330772e-02 8.05200195e-02 + 8.05069682e-02 8.04939232e-02 8.04808846e-02 8.04678523e-02 8.04548263e-02 + 8.04418066e-02 8.04287933e-02 8.04157863e-02 8.04027856e-02 8.03897912e-02 + 8.03768031e-02 8.03638212e-02 8.03508457e-02 8.03378765e-02 8.03249135e-02 + 8.03119568e-02 8.02990064e-02 8.02860622e-02 8.02731243e-02 8.02601926e-02 + 8.02472672e-02 8.02343481e-02 8.02214351e-02 8.02085284e-02 8.01956280e-02 + 8.01827337e-02 8.01698457e-02 8.01569639e-02 8.01440883e-02 8.01312189e-02 + 8.01183557e-02 8.01054986e-02 8.00926478e-02 8.00798032e-02 8.00669647e-02 + 8.00541324e-02 8.00413063e-02 8.00284863e-02 8.00156725e-02 8.00028649e-02 + 7.99900634e-02 7.99772680e-02 7.99644788e-02 7.99516957e-02 7.99389187e-02 + 7.99261479e-02 7.99133832e-02 7.99006246e-02 7.98878721e-02 7.98751257e-02 + 7.98623854e-02 7.98496512e-02 7.98369231e-02 7.98242011e-02 7.98114851e-02 + 7.97987753e-02 7.97860715e-02 7.97733737e-02 7.97606821e-02 7.97479965e-02 + 7.97353169e-02 7.97226434e-02 7.97099759e-02 7.96973145e-02 7.96846590e-02 + 7.96720097e-02 7.96593663e-02 7.96467290e-02 7.96340976e-02 7.96214723e-02 + 7.96088530e-02 7.95962397e-02 7.95836323e-02 7.95710310e-02 7.95584356e-02 + 7.95458463e-02 7.95332629e-02 7.95206854e-02 7.95081140e-02 7.94955485e-02 + 7.94829889e-02 7.94704353e-02 7.94578877e-02 7.94453459e-02 7.94328102e-02 + 7.94202803e-02 7.94077564e-02 7.93952384e-02 7.93827263e-02 7.93702202e-02 + 7.93577199e-02 7.93452256e-02 7.93327371e-02 7.93202546e-02 7.93077779e-02 + 7.92953071e-02 7.92828423e-02 7.92703832e-02 7.92579301e-02 7.92454828e-02 + 7.92330414e-02 7.92206058e-02 7.92081761e-02 7.91957523e-02 7.91833343e-02 + 7.91709221e-02 7.91585157e-02 7.91461152e-02 7.91337206e-02 7.91213317e-02 + 7.91089486e-02 7.90965714e-02 7.90842000e-02 7.90718344e-02 7.90594746e-02 + 7.90471205e-02 7.90347723e-02 7.90224298e-02 7.90100932e-02 7.89977623e-02 + 7.89854371e-02 7.89731178e-02 7.89608042e-02 7.89484964e-02 7.89361943e-02 + 7.89238979e-02 7.89116073e-02 7.88993225e-02 7.88870434e-02 7.88747700e-02 + 7.88625023e-02 7.88502404e-02 7.88379842e-02 7.88257337e-02 7.88134889e-02 + 7.88012498e-02 7.87890164e-02 7.87767887e-02 7.87645667e-02 7.87523504e-02 + 7.87401398e-02 7.87279348e-02 7.87157355e-02 7.87035419e-02 7.86913540e-02 + 7.86791717e-02 7.86669951e-02 7.86548241e-02 7.86426588e-02 7.86304991e-02 + 7.86183450e-02 7.86061966e-02 7.85940538e-02 7.85819167e-02 7.85697851e-02 + 7.85576592e-02 7.85455389e-02 7.85334242e-02 7.85213151e-02 7.85092116e-02 + 7.84971137e-02 7.84850214e-02 7.84729347e-02 7.84608535e-02 7.84487780e-02 + 7.84367080e-02 7.84246436e-02 7.84125847e-02 7.84005314e-02 7.83884837e-02 + 7.83764415e-02 7.83644048e-02 7.83523737e-02 7.83403482e-02 7.83283282e-02 + 7.83163137e-02 7.83043047e-02 7.82923013e-02 7.82803034e-02 7.82683110e-02 + 7.82563241e-02 7.82443427e-02 7.82323668e-02 7.82203964e-02 7.82084315e-02 + 7.81964721e-02 7.81845182e-02 7.81725697e-02 7.81606268e-02 7.81486893e-02 + 7.81367572e-02 7.81248307e-02 7.81129096e-02 7.81009939e-02 7.80890837e-02 + 7.80771790e-02 7.80652797e-02 7.80533858e-02 7.80414974e-02 7.80296144e-02 + 7.80177368e-02 7.80058646e-02 7.79939979e-02 7.79821366e-02 7.79702807e-02 + 7.79584302e-02 7.79465851e-02 7.79347454e-02 7.79229111e-02 7.79110821e-02 + 7.78992586e-02 7.78874404e-02 7.78756277e-02 7.78638202e-02 7.78520182e-02 + 7.78402215e-02 7.78284302e-02 7.78166443e-02 7.78048637e-02 7.77930884e-02 + 7.77813185e-02 7.77695539e-02 7.77577947e-02 7.77460408e-02 7.77342922e-02 + 7.77225490e-02 7.77108111e-02 7.76990785e-02 7.76873512e-02 7.76756292e-02 + 7.76639125e-02 7.76522011e-02 7.76404950e-02 7.76287942e-02 7.76170987e-02 + 7.76054085e-02 7.75937236e-02 7.75820439e-02 7.75703695e-02 7.75587004e-02 + 7.75470365e-02 7.75353780e-02 7.75237246e-02 7.75120765e-02 7.75004337e-02 + 7.74887961e-02 7.74771637e-02 7.74655366e-02 7.74539147e-02 7.74422981e-02 + 7.74306867e-02 7.74190805e-02 7.74074795e-02 7.73958837e-02 7.73842931e-02 + 7.73727078e-02 7.73611276e-02 7.73495527e-02 7.73379829e-02 7.73264183e-02 + 7.73148589e-02 7.73033047e-02 7.72917557e-02 7.72802118e-02 7.72686732e-02 + 7.72571396e-02 7.72456113e-02 7.72340881e-02 7.72225701e-02 7.72110572e-02 + 7.71995494e-02 7.71880468e-02 7.71765494e-02 7.71650571e-02 7.71535699e-02 + 7.71420878e-02 7.71306109e-02 7.71191391e-02 7.71076724e-02 7.70962108e-02 + 7.70847543e-02 7.70733030e-02 7.70618567e-02 7.70504155e-02 7.70389795e-02 + 7.70275485e-02 7.70161226e-02 7.70047018e-02 7.69932860e-02 7.69818754e-02 + 7.69704698e-02 7.69590693e-02 7.69476738e-02 7.69362834e-02 7.69248981e-02 + 7.69135178e-02 7.69021426e-02 7.68907724e-02 7.68794073e-02 7.68680472e-02 + 7.68566921e-02 7.68453420e-02 7.68339970e-02 7.68226570e-02 7.68113221e-02 + 7.67999921e-02 7.67886672e-02 7.67773472e-02 7.67660323e-02 7.67547224e-02 + 7.67434174e-02 7.67321175e-02 7.67208226e-02 7.67095326e-02 7.66982476e-02 + 7.66869676e-02 7.66756926e-02 7.66644225e-02 7.66531574e-02 7.66418973e-02 + 7.66306422e-02 7.66193920e-02 7.66081467e-02 7.65969064e-02 7.65856711e-02 + 7.65744407e-02 7.65632152e-02 7.65519946e-02 7.65407790e-02 7.65295684e-02 + 7.65183626e-02 7.65071618e-02 7.64959659e-02 7.64847749e-02 7.64735888e-02 + 7.64624076e-02 7.64512313e-02 7.64400599e-02 7.64288935e-02 7.64177319e-02 + 7.64065752e-02 7.63954233e-02 7.63842764e-02 7.63731343e-02 7.63619972e-02 + 7.63508648e-02 7.63397374e-02 7.63286148e-02 7.63174971e-02 7.63063842e-02 + 7.62952762e-02 7.62841730e-02 7.62730747e-02 7.62619813e-02 7.62508926e-02 + 7.62398088e-02 7.62287298e-02 7.62176557e-02 7.62065864e-02 7.61955219e-02 + 7.61844622e-02 7.61734074e-02 7.61623573e-02 7.61513121e-02 7.61402716e-02 + 7.61292360e-02 7.61182052e-02 7.61071791e-02 7.60961579e-02 7.60851414e-02 + 7.60741297e-02 7.60631228e-02 7.60521207e-02 7.60411233e-02 7.60301307e-02 + 7.60191429e-02 7.60081598e-02 7.59971815e-02 7.59862080e-02 7.59752392e-02 + 7.59642751e-02 7.59533158e-02 7.59423613e-02 7.59314115e-02 7.59204664e-02 + 7.59095260e-02 7.58985904e-02 7.58876595e-02 7.58767333e-02 7.58658119e-02 + 7.58548951e-02 7.58439831e-02 7.58330758e-02 7.58221731e-02 7.58112752e-02 + 7.58003820e-02 7.57894935e-02 7.57786096e-02 7.57677305e-02 7.57568560e-02 + 7.57459862e-02 7.57351211e-02 7.57242607e-02 7.57134049e-02 7.57025538e-02 + 7.56917074e-02 7.56808656e-02 7.56700285e-02 7.56591961e-02 7.56483683e-02 + 7.56375451e-02 7.56267266e-02 7.56159127e-02 7.56051035e-02 7.55942989e-02 + 7.55834989e-02 7.55727035e-02 7.55619128e-02 7.55511267e-02 7.55403452e-02 + 7.55295684e-02 7.55187961e-02 7.55080285e-02 7.54972654e-02 7.54865070e-02 + 7.54757531e-02 7.54650039e-02 7.54542592e-02 7.54435192e-02 7.54327837e-02 + 7.54220528e-02 7.54113264e-02 7.54006047e-02 7.53898875e-02 7.53791749e-02 + 7.53684669e-02 7.53577634e-02 7.53470644e-02 7.53363701e-02 7.53256803e-02 + 7.53149950e-02 7.53043143e-02 7.52936381e-02 7.52829665e-02 7.52722994e-02 + 7.52616368e-02 7.52509787e-02 7.52403252e-02 7.52296762e-02 7.52190318e-02 + 7.52083918e-02 7.51977564e-02 7.51871255e-02 7.51764990e-02 7.51658771e-02 + 7.51552597e-02 7.51446468e-02 7.51340384e-02 7.51234344e-02 7.51128350e-02 + 7.51022400e-02 7.50916496e-02 7.50810636e-02 7.50704821e-02 7.50599050e-02 + 7.50493324e-02 7.50387643e-02 7.50282007e-02 7.50176415e-02 7.50070868e-02 + 7.49965365e-02 7.49859907e-02 7.49754493e-02 7.49649123e-02 7.49543799e-02 + 7.49438518e-02 7.49333282e-02 7.49228090e-02 7.49122942e-02 7.49017839e-02 + 7.48912780e-02 7.48807765e-02 7.48702794e-02 7.48597868e-02 7.48492985e-02 + 7.48388147e-02 7.48283352e-02 7.48178602e-02 7.48073895e-02 7.47969233e-02 + 7.47864614e-02 7.47760040e-02 7.47655509e-02 7.47551022e-02 7.47446579e-02 + 7.47342179e-02 7.47237824e-02 7.47133512e-02 7.47029243e-02 7.46925019e-02 + 7.46820838e-02 7.46716700e-02 7.46612606e-02 7.46508556e-02 7.46404549e-02 + 7.46300586e-02 7.46196666e-02 7.46092789e-02 7.45988956e-02 7.45885166e-02 + 7.45781419e-02 7.45677716e-02 7.45574056e-02 7.45470439e-02 7.45366865e-02 + 7.45263335e-02 7.45159847e-02 7.45056403e-02 7.44953002e-02 7.44849644e-02 + 7.44746329e-02 7.44643056e-02 7.44539827e-02 7.44436641e-02 7.44333497e-02 + 7.44230397e-02 7.44127339e-02 7.44024324e-02 7.43921352e-02 7.43818423e-02 + 7.43715536e-02 7.43612692e-02 7.43509890e-02 7.43407132e-02 7.43304416e-02 + 7.43201742e-02 7.43099111e-02 7.42996522e-02 7.42893976e-02 7.42791473e-02 + 7.42689011e-02 7.42586593e-02 7.42484216e-02 7.42381882e-02 7.42279590e-02 + 7.42177341e-02 7.42075133e-02 7.41972968e-02 7.41870845e-02 7.41768765e-02 + 7.41666726e-02 7.41564729e-02 7.41462775e-02 7.41360863e-02 7.41258992e-02 + 7.41157164e-02 7.41055377e-02 7.40953633e-02 7.40851930e-02 7.40750269e-02 + 7.40648650e-02 7.40547073e-02 7.40445538e-02 7.40344044e-02 7.40242592e-02 + 7.40141182e-02 7.40039814e-02 7.39938487e-02 7.39837202e-02 7.39735958e-02 + 7.39634756e-02 7.39533595e-02 7.39432476e-02 7.39331398e-02 7.39230362e-02 + 7.39129367e-02 7.39028414e-02 7.38927502e-02 7.38826631e-02 7.38725802e-02 + 7.38625014e-02 7.38524267e-02 7.38423561e-02 7.38322896e-02 7.38222273e-02 + 7.38121691e-02 7.38021150e-02 7.37920650e-02 7.37820191e-02 7.37719773e-02 + 7.37619396e-02 7.37519060e-02 7.37418765e-02 7.37318510e-02 7.37218297e-02 + 7.37118125e-02 7.37017993e-02 7.36917902e-02 7.36817852e-02 7.36717843e-02 + 7.36617874e-02 7.36517946e-02 7.36418059e-02 7.36318212e-02 7.36218406e-02 + 7.36118641e-02 7.36018916e-02 7.35919231e-02 7.35819587e-02 7.35719984e-02 + 7.35620421e-02 7.35520898e-02 7.35421416e-02 7.35321974e-02 7.35222572e-02 + 7.35123211e-02 7.35023890e-02 7.34924610e-02 7.34825369e-02 7.34726169e-02 + 7.34627009e-02 7.34527889e-02 7.34428809e-02 7.34329769e-02 7.34230769e-02 + 7.34131809e-02 7.34032890e-02 7.33934010e-02 7.33835170e-02 7.33736370e-02 + 7.33637610e-02 7.33538890e-02 7.33440210e-02 7.33341569e-02 7.33242969e-02 + 7.33144408e-02 7.33045886e-02 7.32947405e-02 7.32848963e-02 7.32750561e-02 + 7.32652199e-02 7.32553876e-02 7.32455592e-02 7.32357348e-02 7.32259144e-02 + 7.32160979e-02 7.32062854e-02 7.31964768e-02 7.31866722e-02 7.31768715e-02 + 7.31670747e-02 7.31572819e-02 7.31474930e-02 7.31377080e-02 7.31279269e-02 + 7.31181498e-02 7.31083766e-02 7.30986073e-02 7.30888419e-02 7.30790805e-02 + 7.30693229e-02 7.30595693e-02 7.30498195e-02 7.30400737e-02 7.30303318e-02 + 7.30205937e-02 7.30108596e-02 7.30011293e-02 7.29914030e-02 7.29816805e-02 + 7.29719619e-02 7.29622472e-02 7.29525364e-02 7.29428294e-02 7.29331263e-02 + 7.29234271e-02 7.29137318e-02 7.29040403e-02 7.28943527e-02 7.28846689e-02 + 7.28749890e-02 7.28653130e-02 7.28556408e-02 7.28459725e-02 7.28363080e-02 + 7.28266473e-02 7.28169905e-02 7.28073376e-02 7.27976885e-02 7.27880432e-02 + 7.27784017e-02 7.27687641e-02 7.27591303e-02 7.27495003e-02 7.27398742e-02 + 7.27302519e-02 7.27206334e-02 7.27110187e-02 7.27014078e-02 7.26918007e-02 + 7.26821975e-02 7.26725980e-02 7.26630023e-02 7.26534105e-02 7.26438224e-02 + 7.26342382e-02 7.26246577e-02 7.26150810e-02 7.26055081e-02 7.25959390e-02 + 7.25863737e-02 7.25768121e-02 7.25672544e-02 7.25577004e-02 7.25481502e-02 + 7.25386037e-02 7.25290610e-02 7.25195221e-02 7.25099870e-02 7.25004556e-02 + 7.24909279e-02 7.24814040e-02 7.24718839e-02 7.24623675e-02 7.24528549e-02 + 7.24433460e-02 7.24338409e-02 7.24243395e-02 7.24148418e-02 7.24053479e-02 + 7.23958577e-02 7.23863712e-02 7.23768885e-02 7.23674095e-02 7.23579342e-02 + 7.23484626e-02 7.23389948e-02 7.23295307e-02 7.23200702e-02 7.23106135e-02 + 7.23011605e-02 7.22917112e-02 7.22822656e-02 7.22728238e-02 7.22633856e-02 + 7.22539511e-02 7.22445203e-02 7.22350932e-02 7.22256698e-02 7.22162500e-02 + 7.22068340e-02 7.21974216e-02 7.21880130e-02 7.21786080e-02 7.21692066e-02 + 7.21598090e-02 7.21504150e-02 7.21410247e-02 7.21316380e-02 7.21222550e-02 + 7.21128757e-02 7.21035000e-02 7.20941280e-02 7.20847596e-02 7.20753949e-02 + 7.20660339e-02 7.20566765e-02 7.20473227e-02 7.20379726e-02 7.20286261e-02 + 7.20192832e-02 7.20099440e-02 7.20006084e-02 7.19912765e-02 7.19819481e-02 + 7.19726234e-02 7.19633024e-02 7.19539849e-02 7.19446711e-02 7.19353608e-02 + 7.19260542e-02 7.19167512e-02 7.19074518e-02 7.18981560e-02 7.18888639e-02 + 7.18795753e-02 7.18702903e-02 7.18610089e-02 7.18517311e-02 7.18424569e-02 + 7.18331863e-02 7.18239193e-02 7.18146559e-02 7.18053960e-02 7.17961398e-02 + 7.17868871e-02 7.17776380e-02 7.17683924e-02 7.17591505e-02 7.17499121e-02 + 7.17406772e-02 7.17314460e-02 7.17222183e-02 7.17129941e-02 7.17037735e-02 + 7.16945565e-02 7.16853430e-02 7.16761331e-02 7.16669267e-02 7.16577239e-02 + 7.16485246e-02 7.16393289e-02 7.16301367e-02 7.16209480e-02 7.16117629e-02 + 7.16025813e-02 7.15934032e-02 7.15842287e-02 7.15750577e-02 7.15658902e-02 + 7.15567262e-02 7.15475658e-02 7.15384089e-02 7.15292555e-02 7.15201056e-02 + 7.15109592e-02 7.15018163e-02 7.14926769e-02 7.14835410e-02 7.14744087e-02 + 7.14652798e-02 7.14561544e-02 7.14470325e-02 7.14379142e-02 7.14287993e-02 + 7.14196878e-02 7.14105799e-02 7.14014755e-02 7.13923745e-02 7.13832770e-02 + 7.13741830e-02 7.13650925e-02 7.13560055e-02 7.13469219e-02 7.13378418e-02 + 7.13287651e-02 7.13196919e-02 7.13106222e-02 7.13015559e-02 7.12924931e-02 + 7.12834338e-02 7.12743779e-02 7.12653254e-02 7.12562764e-02 7.12472309e-02 + 7.12381888e-02 7.12291501e-02 7.12201149e-02 7.12110831e-02 7.12020547e-02 + 7.11930298e-02 7.11840083e-02 7.11749902e-02 7.11659756e-02 7.11569644e-02 + 7.11479566e-02 7.11389522e-02 7.11299512e-02 7.11209537e-02 7.11119596e-02 + 7.11029689e-02 7.10939816e-02 7.10849977e-02 7.10760172e-02 7.10670401e-02 + 7.10580664e-02 7.10490961e-02 7.10401292e-02 7.10311657e-02 7.10222056e-02 + 7.10132489e-02 7.10042956e-02 7.09953456e-02 7.09863990e-02 7.09774559e-02 + 7.09685161e-02 7.09595796e-02 7.09506466e-02 7.09417169e-02 7.09327906e-02 + 7.09238677e-02 7.09149481e-02 7.09060319e-02 7.08971191e-02 7.08882096e-02 + 7.08793035e-02 7.08704007e-02 7.08615013e-02 7.08526052e-02 7.08437125e-02 + 7.08348231e-02 7.08259371e-02 7.08170544e-02 7.08081751e-02 7.07992991e-02 + 7.07904264e-02 7.07815571e-02 7.07726911e-02 7.07638285e-02 7.07549691e-02 + 7.07461131e-02 7.07372604e-02 7.07284111e-02 7.07195650e-02 7.07107223e-02 + 7.07018829e-02 7.06930468e-02 7.06842141e-02 7.06753846e-02 7.06665584e-02 + 7.06577356e-02 7.06489160e-02 7.06400998e-02 7.06312868e-02 7.06224772e-02 + 7.06136708e-02 7.06048678e-02 7.05960680e-02 7.05872715e-02 7.05784783e-02 + 7.05696884e-02 7.05609018e-02 7.05521184e-02 7.05433384e-02 7.05345616e-02 + 1.00000000e+00 9.75894263e-01 9.53451752e-01 9.32489601e-01 9.12851907e-01 + 8.94404826e-01 8.77032714e-01 8.60635068e-01 8.45124065e-01 8.30422576e-01 + 8.16462554e-01 8.03183696e-01 7.90532350e-01 7.78460602e-01 7.66925506e-01 + 7.55888443e-01 7.45314577e-01 7.35172390e-01 7.25433287e-01 7.16071258e-01 + 7.07062580e-01 6.98385572e-01 6.90020370e-01 6.81948734e-01 6.74153887e-01 + 6.66620364e-01 6.59333880e-01 6.52281224e-01 6.45450150e-01 6.38829295e-01 + 6.32408091e-01 6.26176704e-01 6.20125961e-01 6.14247300e-01 6.08532716e-01 + 6.02974715e-01 5.97566276e-01 5.92300808e-01 5.87172122e-01 5.82174396e-01 + 5.77302151e-01 5.72550221e-01 5.67913735e-01 5.63388093e-01 5.58968948e-01 + 5.54652188e-01 5.50433918e-01 5.46310451e-01 5.42278287e-01 5.38334105e-01 + 5.34474753e-01 5.30697232e-01 5.26998691e-01 5.23376415e-01 5.19827818e-01 + 5.16350438e-01 5.12941922e-01 5.09600027e-01 5.06322612e-01 5.03107629e-01 + 4.99953120e-01 4.96857213e-01 4.93818117e-01 4.90834114e-01 4.87903560e-01 + 4.85024878e-01 4.82196556e-01 4.79417141e-01 4.76685242e-01 4.73999519e-01 + 4.71358685e-01 4.68761505e-01 4.66206788e-01 4.63693390e-01 4.61220209e-01 + 4.58786184e-01 4.56390292e-01 4.54031548e-01 4.51709002e-01 4.49421737e-01 + 4.47168870e-01 4.44949545e-01 4.42762941e-01 4.40608259e-01 4.38484731e-01 + 4.36391613e-01 4.34328187e-01 4.32293756e-01 4.30287649e-01 4.28309213e-01 + 4.26357819e-01 4.24432857e-01 4.22533734e-01 4.20659877e-01 4.18810733e-01 + 4.16985761e-01 4.15184441e-01 4.13406264e-01 4.11650741e-01 4.09917394e-01 + 4.08205761e-01 4.06515390e-01 4.04845847e-01 4.03196706e-01 4.01567556e-01 + 3.99957996e-01 3.98367636e-01 3.96796098e-01 3.95243014e-01 3.93708024e-01 + 3.92190780e-01 3.90690944e-01 3.89208184e-01 3.87742180e-01 3.86292617e-01 + 3.84859191e-01 3.83441605e-01 3.82039569e-01 3.80652800e-01 3.79281024e-01 + 3.77923973e-01 3.76581385e-01 3.75253005e-01 3.73938583e-01 3.72637878e-01 + 3.71350652e-01 3.70076675e-01 3.68815719e-01 3.67567566e-01 3.66332000e-01 + 3.65108810e-01 3.63897792e-01 3.62698745e-01 3.61511473e-01 3.60335785e-01 + 3.59171493e-01 3.58018415e-01 3.56876371e-01 3.55745187e-01 3.54624691e-01 + 3.53514717e-01 3.52415101e-01 3.51325683e-01 3.50246306e-01 3.49176816e-01 + 3.48117064e-01 3.47066903e-01 3.46026189e-01 3.44994782e-01 3.43972542e-01 + 3.42959337e-01 3.41955032e-01 3.40959498e-01 3.39972609e-01 3.38994241e-01 + 3.38024270e-01 3.37062579e-01 3.36109049e-01 3.35163566e-01 3.34226018e-01 + 3.33296293e-01 3.32374284e-01 3.31459885e-01 3.30552992e-01 3.29653502e-01 + 3.28761315e-01 3.27876333e-01 3.26998460e-01 3.26127600e-01 3.25263662e-01 + 3.24406553e-01 3.23556184e-01 3.22712468e-01 3.21875318e-01 3.21044649e-01 + 3.20220378e-01 3.19402424e-01 3.18590706e-01 3.17785145e-01 3.16985665e-01 + 3.16192188e-01 3.15404639e-01 3.14622947e-01 3.13847038e-01 3.13076841e-01 + 3.12312287e-01 3.11553306e-01 3.10799833e-01 3.10051800e-01 3.09309142e-01 + 3.08571795e-01 3.07839697e-01 3.07112784e-01 3.06390997e-01 3.05674275e-01 + 3.04962560e-01 3.04255793e-01 3.03553917e-01 3.02856876e-01 3.02164615e-01 + 3.01477079e-01 3.00794216e-01 3.00115971e-01 2.99442294e-01 2.98773134e-01 + 2.98108439e-01 2.97448161e-01 2.96792252e-01 2.96140662e-01 2.95493345e-01 + 2.94850254e-01 2.94211344e-01 2.93576570e-01 2.92945886e-01 2.92319250e-01 + 2.91696618e-01 2.91077947e-01 2.90463197e-01 2.89852325e-01 2.89245291e-01 + 2.88642055e-01 2.88042577e-01 2.87446820e-01 2.86854743e-01 2.86266311e-01 + 2.85681484e-01 2.85100228e-01 2.84522505e-01 2.83948280e-01 2.83377517e-01 + 2.82810183e-01 2.82246243e-01 2.81685662e-01 2.81128409e-01 2.80574450e-01 + 2.80023753e-01 2.79476286e-01 2.78932017e-01 2.78390916e-01 2.77852951e-01 + 2.77318094e-01 2.76786313e-01 2.76257580e-01 2.75731865e-01 2.75209140e-01 + 2.74689377e-01 2.74172548e-01 2.73658625e-01 2.73147581e-01 2.72639389e-01 + 2.72134024e-01 2.71631458e-01 2.71131667e-01 2.70634624e-01 2.70140305e-01 + 2.69648684e-01 2.69159738e-01 2.68673442e-01 2.68189772e-01 2.67708706e-01 + 2.67230218e-01 2.66754287e-01 2.66280890e-01 2.65810005e-01 2.65341608e-01 + 2.64875680e-01 2.64412197e-01 2.63951138e-01 2.63492483e-01 2.63036211e-01 + 2.62582301e-01 2.62130732e-01 2.61681486e-01 2.61234541e-01 2.60789879e-01 + 2.60347479e-01 2.59907323e-01 2.59469393e-01 2.59033668e-01 2.58600131e-01 + 2.58168764e-01 2.57739549e-01 2.57312467e-01 2.56887501e-01 2.56464633e-01 + 2.56043847e-01 2.55625126e-01 2.55208452e-01 2.54793809e-01 2.54381180e-01 + 2.53970550e-01 2.53561902e-01 2.53155220e-01 2.52750489e-01 2.52347693e-01 + 2.51946816e-01 2.51547844e-01 2.51150761e-01 2.50755553e-01 2.50362204e-01 + 2.49970701e-01 2.49581029e-01 2.49193173e-01 2.48807120e-01 2.48422856e-01 + 2.48040367e-01 2.47659639e-01 2.47280658e-01 2.46903413e-01 2.46527888e-01 + 2.46154072e-01 2.45781951e-01 2.45411513e-01 2.45042745e-01 2.44675634e-01 + 2.44310168e-01 2.43946335e-01 2.43584122e-01 2.43223518e-01 2.42864511e-01 + 2.42507089e-01 2.42151241e-01 2.41796954e-01 2.41444218e-01 2.41093021e-01 + 2.40743352e-01 2.40395201e-01 2.40048555e-01 2.39703404e-01 2.39359739e-01 + 2.39017547e-01 2.38676818e-01 2.38337542e-01 2.37999710e-01 2.37663309e-01 + 2.37328332e-01 2.36994766e-01 2.36662603e-01 2.36331833e-01 2.36002446e-01 + 2.35674432e-01 2.35347783e-01 2.35022487e-01 2.34698537e-01 2.34375923e-01 + 2.34054635e-01 2.33734666e-01 2.33416004e-01 2.33098643e-01 2.32782573e-01 + 2.32467784e-01 2.32154270e-01 2.31842020e-01 2.31531028e-01 2.31221283e-01 + 2.30912778e-01 2.30605504e-01 2.30299454e-01 2.29994620e-01 2.29690992e-01 + 2.29388564e-01 2.29087328e-01 2.28787275e-01 2.28488398e-01 2.28190689e-01 + 2.27894141e-01 2.27598746e-01 2.27304497e-01 2.27011386e-01 2.26719406e-01 + 2.26428550e-01 2.26138810e-01 2.25850180e-01 2.25562652e-01 2.25276219e-01 + 2.24990875e-01 2.24706613e-01 2.24423425e-01 2.24141305e-01 2.23860246e-01 + 2.23580243e-01 2.23301287e-01 2.23023372e-01 2.22746493e-01 2.22470643e-01 + 2.22195814e-01 2.21922002e-01 2.21649200e-01 2.21377401e-01 2.21106599e-01 + 2.20836789e-01 2.20567964e-01 2.20300119e-01 2.20033247e-01 2.19767342e-01 + 2.19502400e-01 2.19238413e-01 2.18975376e-01 2.18713284e-01 2.18452130e-01 + 2.18191910e-01 2.17932618e-01 2.17674247e-01 2.17416794e-01 2.17160252e-01 + 2.16904616e-01 2.16649880e-01 2.16396040e-01 2.16143090e-01 2.15891025e-01 + 2.15639840e-01 2.15389530e-01 2.15140089e-01 2.14891513e-01 2.14643796e-01 + 2.14396935e-01 2.14150923e-01 2.13905756e-01 2.13661429e-01 2.13417937e-01 + 2.13175276e-01 2.12933441e-01 2.12692427e-01 2.12452229e-01 2.12212843e-01 + 2.11974265e-01 2.11736490e-01 2.11499513e-01 2.11263330e-01 2.11027936e-01 + 2.10793328e-01 2.10559500e-01 2.10326449e-01 2.10094169e-01 2.09862658e-01 + 2.09631910e-01 2.09401922e-01 2.09172689e-01 2.08944208e-01 2.08716473e-01 + 2.08489481e-01 2.08263229e-01 2.08037711e-01 2.07812924e-01 2.07588865e-01 + 2.07365528e-01 2.07142911e-01 2.06921010e-01 2.06699820e-01 2.06479337e-01 + 2.06259559e-01 2.06040481e-01 2.05822100e-01 2.05604412e-01 2.05387413e-01 + 2.05171099e-01 2.04955468e-01 2.04740515e-01 2.04526237e-01 2.04312630e-01 + 2.04099691e-01 2.03887417e-01 2.03675803e-01 2.03464847e-01 2.03254545e-01 + 2.03044894e-01 2.02835891e-01 2.02627531e-01 2.02419812e-01 2.02212731e-01 + 2.02006284e-01 2.01800468e-01 2.01595280e-01 2.01390716e-01 2.01186774e-01 + 2.00983451e-01 2.00780742e-01 2.00578646e-01 2.00377158e-01 2.00176277e-01 + 1.99975998e-01 1.99776320e-01 1.99577238e-01 1.99378751e-01 1.99180854e-01 + 1.98983546e-01 1.98786822e-01 1.98590681e-01 1.98395120e-01 1.98200135e-01 + 1.98005724e-01 1.97811884e-01 1.97618612e-01 1.97425905e-01 1.97233761e-01 + 1.97042177e-01 1.96851151e-01 1.96660678e-01 1.96470758e-01 1.96281387e-01 + 1.96092562e-01 1.95904281e-01 1.95716541e-01 1.95529341e-01 1.95342676e-01 + 1.95156545e-01 1.94970945e-01 1.94785873e-01 1.94601328e-01 1.94417306e-01 + 1.94233805e-01 1.94050823e-01 1.93868357e-01 1.93686404e-01 1.93504963e-01 + 1.93324031e-01 1.93143606e-01 1.92963685e-01 1.92784265e-01 1.92605345e-01 + 1.92426923e-01 1.92248995e-01 1.92071560e-01 1.91894616e-01 1.91718159e-01 + 1.91542189e-01 1.91366702e-01 1.91191696e-01 1.91017170e-01 1.90843121e-01 + 1.90669546e-01 1.90496445e-01 1.90323814e-01 1.90151652e-01 1.89979956e-01 + 1.89808724e-01 1.89637954e-01 1.89467644e-01 1.89297793e-01 1.89128397e-01 + 1.88959456e-01 1.88790966e-01 1.88622926e-01 1.88455335e-01 1.88288189e-01 + 1.88121487e-01 1.87955227e-01 1.87789407e-01 1.87624025e-01 1.87459079e-01 + 1.87294568e-01 1.87130489e-01 1.86966840e-01 1.86803620e-01 1.86640827e-01 + 1.86478458e-01 1.86316513e-01 1.86154989e-01 1.85993884e-01 1.85833197e-01 + 1.85672925e-01 1.85513068e-01 1.85353622e-01 1.85194587e-01 1.85035961e-01 + 1.84877742e-01 1.84719927e-01 1.84562517e-01 1.84405508e-01 1.84248899e-01 + 1.84092688e-01 1.83936874e-01 1.83781455e-01 1.83626429e-01 1.83471795e-01 + 1.83317551e-01 1.83163695e-01 1.83010226e-01 1.82857142e-01 1.82704442e-01 + 1.82552123e-01 1.82400185e-01 1.82248626e-01 1.82097444e-01 1.81946637e-01 + 1.81796204e-01 1.81646144e-01 1.81496455e-01 1.81347136e-01 1.81198184e-01 + 1.81049599e-01 1.80901378e-01 1.80753522e-01 1.80606027e-01 1.80458892e-01 + 1.80312117e-01 1.80165699e-01 1.80019637e-01 1.79873930e-01 1.79728576e-01 + 1.79583574e-01 1.79438922e-01 1.79294620e-01 1.79150665e-01 1.79007056e-01 + 1.78863792e-01 1.78720871e-01 1.78578292e-01 1.78436054e-01 1.78294156e-01 + 1.78152595e-01 1.78011371e-01 1.77870482e-01 1.77729928e-01 1.77589706e-01 + 1.77449815e-01 1.77310255e-01 1.77171023e-01 1.77032119e-01 1.76893540e-01 + 1.76755287e-01 1.76617358e-01 1.76479751e-01 1.76342465e-01 1.76205499e-01 + 1.76068851e-01 1.75932521e-01 1.75796507e-01 1.75660808e-01 1.75525423e-01 + 1.75390351e-01 1.75255589e-01 1.75121138e-01 1.74986996e-01 1.74853162e-01 + 1.74719634e-01 1.74586412e-01 1.74453494e-01 1.74320879e-01 1.74188566e-01 + 1.74056554e-01 1.73924842e-01 1.73793428e-01 1.73662312e-01 1.73531492e-01 + 1.73400967e-01 1.73270736e-01 1.73140798e-01 1.73011152e-01 1.72881797e-01 + 1.72752732e-01 1.72623955e-01 1.72495466e-01 1.72367263e-01 1.72239346e-01 + 1.72111713e-01 1.71984363e-01 1.71857296e-01 1.71730510e-01 1.71604004e-01 + 1.71477777e-01 1.71351828e-01 1.71226157e-01 1.71100761e-01 1.70975641e-01 + 1.70850795e-01 1.70726222e-01 1.70601921e-01 1.70477891e-01 1.70354131e-01 + 1.70230640e-01 1.70107418e-01 1.69984462e-01 1.69861773e-01 1.69739349e-01 + 1.69617190e-01 1.69495294e-01 1.69373660e-01 1.69252288e-01 1.69131176e-01 + 1.69010324e-01 1.68889731e-01 1.68769395e-01 1.68649317e-01 1.68529494e-01 + 1.68409926e-01 1.68290613e-01 1.68171552e-01 1.68052744e-01 1.67934188e-01 + 1.67815882e-01 1.67697825e-01 1.67580018e-01 1.67462458e-01 1.67345146e-01 + 1.67228079e-01 1.67111258e-01 1.66994682e-01 1.66878349e-01 1.66762259e-01 + 1.66646411e-01 1.66530804e-01 1.66415437e-01 1.66300309e-01 1.66185421e-01 + 1.66070770e-01 1.65956356e-01 1.65842178e-01 1.65728235e-01 1.65614527e-01 + 1.65501053e-01 1.65387812e-01 1.65274803e-01 1.65162025e-01 1.65049477e-01 + 1.64937160e-01 1.64825071e-01 1.64713211e-01 1.64601578e-01 1.64490172e-01 + 1.64378991e-01 1.64268036e-01 1.64157305e-01 1.64046798e-01 1.63936514e-01 + 1.63826452e-01 1.63716611e-01 1.63606991e-01 1.63497591e-01 1.63388409e-01 + 1.63279447e-01 1.63170702e-01 1.63062174e-01 1.62953862e-01 1.62845766e-01 + 1.62737885e-01 1.62630217e-01 1.62522764e-01 1.62415523e-01 1.62308493e-01 + 1.62201676e-01 1.62095069e-01 1.61988671e-01 1.61882483e-01 1.61776504e-01 + 1.61670732e-01 1.61565168e-01 1.61459810e-01 1.61354658e-01 1.61249711e-01 + 1.61144969e-01 1.61040431e-01 1.60936095e-01 1.60831963e-01 1.60728032e-01 + 1.60624302e-01 1.60520773e-01 1.60417444e-01 1.60314314e-01 1.60211383e-01 + 1.60108650e-01 1.60006114e-01 1.59903775e-01 1.59801632e-01 1.59699684e-01 + 1.59597932e-01 1.59496373e-01 1.59395009e-01 1.59293837e-01 1.59192858e-01 + 1.59092070e-01 1.58991474e-01 1.58891068e-01 1.58790852e-01 1.58690826e-01 + 1.58590988e-01 1.58491339e-01 1.58391877e-01 1.58292602e-01 1.58193514e-01 + 1.58094612e-01 1.57995894e-01 1.57897362e-01 1.57799013e-01 1.57700849e-01 + 1.57602867e-01 1.57505067e-01 1.57407450e-01 1.57310013e-01 1.57212758e-01 + 1.57115682e-01 1.57018786e-01 1.56922069e-01 1.56825531e-01 1.56729171e-01 + 1.56632988e-01 1.56536982e-01 1.56441152e-01 1.56345498e-01 1.56250019e-01 + 1.56154715e-01 1.56059585e-01 1.55964629e-01 1.55869846e-01 1.55775235e-01 + 1.55680797e-01 1.55586530e-01 1.55492434e-01 1.55398509e-01 1.55304754e-01 + 1.55211168e-01 1.55117751e-01 1.55024502e-01 1.54931422e-01 1.54838509e-01 + 1.54745763e-01 1.54653183e-01 1.54560770e-01 1.54468522e-01 1.54376439e-01 + 1.54284520e-01 1.54192765e-01 1.54101174e-01 1.54009746e-01 1.53918481e-01 + 1.53827377e-01 1.53736435e-01 1.53645654e-01 1.53555034e-01 1.53464574e-01 + 1.53374274e-01 1.53284132e-01 1.53194150e-01 1.53104326e-01 1.53014660e-01 + 1.52925151e-01 1.52835798e-01 1.52746603e-01 1.52657563e-01 1.52568679e-01 + 1.52479950e-01 1.52391376e-01 1.52302955e-01 1.52214689e-01 1.52126576e-01 + 1.52038615e-01 1.51950807e-01 1.51863151e-01 1.51775647e-01 1.51688293e-01 + 1.51601091e-01 1.51514038e-01 1.51427135e-01 1.51340382e-01 1.51253778e-01 + 1.51167322e-01 1.51081014e-01 1.50994854e-01 1.50908841e-01 1.50822975e-01 + 1.50737255e-01 1.50651681e-01 1.50566253e-01 1.50480970e-01 1.50395832e-01 + 1.50310838e-01 1.50225988e-01 1.50141281e-01 1.50056718e-01 1.49972298e-01 + 1.49888019e-01 1.49803883e-01 1.49719888e-01 1.49636035e-01 1.49552322e-01 + 1.49468749e-01 1.49385316e-01 1.49302023e-01 1.49218869e-01 1.49135854e-01 + 1.49052977e-01 1.48970239e-01 1.48887638e-01 1.48805174e-01 1.48722847e-01 + 1.48640656e-01 1.48558602e-01 1.48476683e-01 1.48394900e-01 1.48313252e-01 + 1.48231738e-01 1.48150359e-01 1.48069113e-01 1.47988001e-01 1.47907022e-01 + 1.47826176e-01 1.47745463e-01 1.47664881e-01 1.47584431e-01 1.47504113e-01 + 1.47423925e-01 1.47343868e-01 1.47263942e-01 1.47184145e-01 1.47104478e-01 + 1.47024940e-01 1.46945531e-01 1.46866251e-01 1.46787099e-01 1.46708074e-01 + 1.46629177e-01 1.46550407e-01 1.46471764e-01 1.46393248e-01 1.46314857e-01 + 1.46236593e-01 1.46158454e-01 1.46080440e-01 1.46002551e-01 1.45924786e-01 + 1.45847145e-01 1.45769628e-01 1.45692235e-01 1.45614965e-01 1.45537817e-01 + 1.45460792e-01 1.45383890e-01 1.45307109e-01 1.45230449e-01 1.45153911e-01 + 1.45077494e-01 1.45001197e-01 1.44925021e-01 1.44848964e-01 1.44773027e-01 + 1.44697209e-01 1.44621511e-01 1.44545931e-01 1.44470469e-01 1.44395126e-01 + 1.44319900e-01 1.44244791e-01 1.44169800e-01 1.44094926e-01 1.44020168e-01 + 1.43945527e-01 1.43871001e-01 1.43796591e-01 1.43722296e-01 1.43648117e-01 + 1.43574052e-01 1.43500101e-01 1.43426265e-01 1.43352542e-01 1.43278934e-01 + 1.43205438e-01 1.43132055e-01 1.43058785e-01 1.42985628e-01 1.42912583e-01 + 1.42839649e-01 1.42766827e-01 1.42694116e-01 1.42621516e-01 1.42549027e-01 + 1.42476649e-01 1.42404380e-01 1.42332222e-01 1.42260172e-01 1.42188233e-01 + 1.42116402e-01 1.42044680e-01 1.41973066e-01 1.41901561e-01 1.41830164e-01 + 1.41758874e-01 1.41687692e-01 1.41616617e-01 1.41545648e-01 1.41474786e-01 + 1.41404031e-01 1.41333382e-01 1.41262838e-01 1.41192400e-01 1.41122067e-01 + 1.41051839e-01 1.40981716e-01 1.40911698e-01 1.40841783e-01 1.40771973e-01 + 1.40702266e-01 1.40632663e-01 1.40563163e-01 1.40493766e-01 1.40424471e-01 + 1.40355279e-01 1.40286189e-01 1.40217202e-01 1.40148315e-01 1.40079531e-01 + 1.40010847e-01 1.39942264e-01 1.39873782e-01 1.39805401e-01 1.39737119e-01 + 1.39668938e-01 1.39600856e-01 1.39532874e-01 1.39464991e-01 1.39397207e-01 + 1.39329522e-01 1.39261935e-01 1.39194446e-01 1.39127056e-01 1.39059763e-01 + 1.38992568e-01 1.38925470e-01 1.38858469e-01 1.38791565e-01 1.38724758e-01 + 1.38658047e-01 1.38591432e-01 1.38524913e-01 1.38458490e-01 1.38392162e-01 + 1.38325930e-01 1.38259792e-01 1.38193750e-01 1.38127801e-01 1.38061947e-01 + 1.37996188e-01 1.37930522e-01 1.37864950e-01 1.37799471e-01 1.37734085e-01 + 1.37668793e-01 1.37603593e-01 1.37538485e-01 1.37473471e-01 1.37408548e-01 + 1.37343717e-01 1.37278977e-01 1.37214330e-01 1.37149773e-01 1.37085308e-01 + 1.37020933e-01 1.36956649e-01 1.36892455e-01 1.36828351e-01 1.36764338e-01 + 1.36700414e-01 1.36636580e-01 1.36572835e-01 1.36509179e-01 1.36445612e-01 + 1.36382134e-01 1.36318745e-01 1.36255443e-01 1.36192230e-01 1.36129105e-01 + 1.36066067e-01 1.36003117e-01 1.35940254e-01 1.35877478e-01 1.35814789e-01 + 1.35752187e-01 1.35689672e-01 1.35627242e-01 1.35564899e-01 1.35502641e-01 + 1.35440470e-01 1.35378384e-01 1.35316383e-01 1.35254467e-01 1.35192636e-01 + 1.35130890e-01 1.35069228e-01 1.35007651e-01 1.34946158e-01 1.34884748e-01 + 1.34823423e-01 1.34762181e-01 1.34701022e-01 1.34639947e-01 1.34578955e-01 + 1.34518045e-01 1.34457218e-01 1.34396474e-01 1.34335812e-01 1.34275232e-01 + 1.34214733e-01 1.34154317e-01 1.34093982e-01 1.34033728e-01 1.33973556e-01 + 1.33913464e-01 1.33853453e-01 1.33793523e-01 1.33733673e-01 1.33673904e-01 + 1.33614214e-01 1.33554605e-01 1.33495075e-01 1.33435625e-01 1.33376254e-01 + 1.33316962e-01 1.33257749e-01 1.33198615e-01 1.33139560e-01 1.33080583e-01 + 1.33021685e-01 1.32962864e-01 1.32904122e-01 1.32845457e-01 1.32786870e-01 + 1.32728361e-01 1.32669928e-01 1.32611573e-01 1.32553295e-01 1.32495093e-01 + 1.32436968e-01 1.32378920e-01 1.32320948e-01 1.32263052e-01 1.32205232e-01 + 1.32147487e-01 1.32089818e-01 1.32032225e-01 1.31974707e-01 1.31917264e-01 + 1.31859896e-01 1.31802603e-01 1.31745384e-01 1.31688240e-01 1.31631170e-01 + 1.31574174e-01 1.31517252e-01 1.31460404e-01 1.31403630e-01 1.31346929e-01 + 1.31290301e-01 1.31233747e-01 1.31177266e-01 1.31120857e-01 1.31064522e-01 + 1.31008258e-01 1.30952068e-01 1.30895949e-01 1.30839903e-01 1.30783928e-01 + 1.30728025e-01 1.30672194e-01 1.30616435e-01 1.30560746e-01 1.30505129e-01 + 1.30449583e-01 1.30394108e-01 1.30338703e-01 1.30283369e-01 1.30228105e-01 + 1.30172912e-01 1.30117789e-01 1.30062736e-01 1.30007752e-01 1.29952839e-01 + 1.29897994e-01 1.29843219e-01 1.29788514e-01 1.29733877e-01 1.29679310e-01 + 1.29624811e-01 1.29570381e-01 1.29516019e-01 1.29461726e-01 1.29407501e-01 + 1.29353344e-01 1.29299255e-01 1.29245234e-01 1.29191280e-01 1.29137394e-01 + 1.29083575e-01 1.29029824e-01 1.28976140e-01 1.28922522e-01 1.28868972e-01 + 1.28815488e-01 1.28762070e-01 1.28708719e-01 1.28655435e-01 1.28602216e-01 + 1.28549063e-01 1.28495977e-01 1.28442955e-01 1.28390000e-01 1.28337110e-01 + 1.28284285e-01 1.28231526e-01 1.28178831e-01 1.28126202e-01 1.28073637e-01 + 1.28021137e-01 1.27968701e-01 1.27916330e-01 1.27864023e-01 1.27811780e-01 + 1.27759601e-01 1.27707486e-01 1.27655434e-01 1.27603447e-01 1.27551522e-01 + 1.27499661e-01 1.27447864e-01 1.27396129e-01 1.27344457e-01 1.27292848e-01 + 1.27241302e-01 1.27189818e-01 1.27138397e-01 1.27087038e-01 1.27035742e-01 + 1.26984507e-01 1.26933334e-01 1.26882223e-01 1.26831174e-01 1.26780187e-01 + 1.26729260e-01 1.26678396e-01 1.26627592e-01 1.26576849e-01 1.26526168e-01 + 1.26475547e-01 1.26424987e-01 1.26374487e-01 1.26324048e-01 1.26273670e-01 + 1.26223351e-01 1.26173093e-01 1.26122894e-01 1.26072756e-01 1.26022677e-01 + 1.25972658e-01 1.25922698e-01 1.25872798e-01 1.25822957e-01 1.25773176e-01 + 1.25723453e-01 1.25673789e-01 1.25624184e-01 1.25574638e-01 1.25525150e-01 + 1.25475721e-01 1.25426350e-01 1.25377037e-01 1.25327782e-01 1.25278586e-01 + 1.25229447e-01 1.25180366e-01 1.25131343e-01 1.25082377e-01 1.25033469e-01 + 1.24984618e-01 1.24935824e-01 1.24887088e-01 1.24838408e-01 1.24789785e-01 + 1.24741219e-01 1.24692710e-01 1.24644257e-01 1.24595861e-01 1.24547521e-01 + 1.24499237e-01 1.24451010e-01 1.24402838e-01 1.24354722e-01 1.24306662e-01 + 1.24258658e-01 1.24210709e-01 1.24162816e-01 1.24114978e-01 1.24067195e-01 + 1.24019468e-01 1.23971795e-01 1.23924178e-01 1.23876615e-01 1.23829107e-01 + 1.23781654e-01 1.23734255e-01 1.23686910e-01 1.23639620e-01 1.23592384e-01 + 1.23545202e-01 1.23498075e-01 1.23451001e-01 1.23403980e-01 1.23357014e-01 + 1.23310101e-01 1.23263242e-01 1.23216436e-01 1.23169683e-01 1.23122983e-01 + 1.23076337e-01 1.23029743e-01 1.22983202e-01 1.22936715e-01 1.22890279e-01 + 1.22843897e-01 1.22797567e-01 1.22751289e-01 1.22705063e-01 1.22658890e-01 + 1.22612769e-01 1.22566700e-01 1.22520682e-01 1.22474717e-01 1.22428803e-01 + 1.22382941e-01 1.22337130e-01 1.22291371e-01 1.22245663e-01 1.22200006e-01 + 1.22154400e-01 1.22108845e-01 1.22063342e-01 1.22017889e-01 1.21972487e-01 + 1.21927135e-01 1.21881834e-01 1.21836584e-01 1.21791383e-01 1.21746234e-01 + 1.21701134e-01 1.21656084e-01 1.21611085e-01 1.21566135e-01 1.21521235e-01 + 1.21476385e-01 1.21431584e-01 1.21386833e-01 1.21342131e-01 1.21297479e-01 + 1.21252876e-01 1.21208322e-01 1.21163817e-01 1.21119362e-01 1.21074955e-01 + 1.21030597e-01 1.20986287e-01 1.20942026e-01 1.20897814e-01 1.20853651e-01 + 1.20809535e-01 1.20765468e-01 1.20721449e-01 1.20677478e-01 1.20633555e-01 + 1.20589681e-01 1.20545854e-01 1.20502074e-01 1.20458343e-01 1.20414659e-01 + 1.20371022e-01 1.20327433e-01 1.20283891e-01 1.20240396e-01 1.20196949e-01 + 1.20153549e-01 1.20110195e-01 1.20066889e-01 1.20023629e-01 1.19980416e-01 + 1.19937250e-01 1.19894130e-01 1.19851056e-01 1.19808030e-01 1.19765049e-01 + 1.19722115e-01 1.19679226e-01 1.19636384e-01 1.19593588e-01 1.19550838e-01 + 1.19508133e-01 1.19465474e-01 1.19422861e-01 1.19380294e-01 1.19337772e-01 + 1.19295295e-01 1.19252863e-01 1.19210477e-01 1.19168136e-01 1.19125841e-01 + 1.19083590e-01 1.19041384e-01 1.18999223e-01 1.18957106e-01 1.18915035e-01 + 1.18873008e-01 1.18831025e-01 1.18789087e-01 1.18747194e-01 1.18705344e-01 + 1.18663539e-01 1.18621778e-01 1.18580061e-01 1.18538388e-01 1.18496759e-01 + 1.18455174e-01 1.18413632e-01 1.18372134e-01 1.18330680e-01 1.18289269e-01 + 1.18247902e-01 1.18206578e-01 1.18165298e-01 1.18124060e-01 1.18082866e-01 + 1.18041715e-01 1.18000607e-01 1.17959541e-01 1.17918519e-01 1.17877539e-01 + 1.17836602e-01 1.17795708e-01 1.17754856e-01 1.17714047e-01 1.17673280e-01 + 1.17632556e-01 1.17591873e-01 1.17551233e-01 1.17510635e-01 1.17470079e-01 + 1.17429565e-01 1.17389093e-01 1.17348662e-01 1.17308274e-01 1.17267927e-01 + 1.17227622e-01 1.17187358e-01 1.17147135e-01 1.17106955e-01 1.17066815e-01 + 1.17026717e-01 1.16986659e-01 1.16946643e-01 1.16906668e-01 1.16866734e-01 + 1.16826841e-01 1.16786988e-01 1.16747177e-01 1.16707406e-01 1.16667676e-01 + 1.16627986e-01 1.16588337e-01 1.16548728e-01 1.16509159e-01 1.16469631e-01 + 1.16430143e-01 1.16390695e-01 1.16351287e-01 1.16311919e-01 1.16272591e-01 + 1.16233303e-01 1.16194055e-01 1.16154846e-01 1.16115678e-01 1.16076548e-01 + 1.16037459e-01 1.15998408e-01 1.15959397e-01 1.15920426e-01 1.15881494e-01 + 1.15842601e-01 1.15803747e-01 1.15764932e-01 1.15726156e-01 1.15687419e-01 + 1.15648721e-01 1.15610062e-01 1.15571441e-01 1.15532859e-01 1.15494316e-01 + 1.15455812e-01 1.15417345e-01 1.15378918e-01 1.15340528e-01 1.15302177e-01 + 1.15263864e-01 1.15225590e-01 1.15187353e-01 1.15149155e-01 1.15110994e-01 + 1.15072871e-01 1.15034786e-01 1.14996739e-01 1.14958730e-01 1.14920759e-01 + 1.14882824e-01 1.14844928e-01 1.14807069e-01 1.14769247e-01 1.14731463e-01 + 1.14693716e-01 1.14656006e-01 1.14618334e-01 1.14580699e-01 1.14543100e-01 + 1.14505539e-01 1.14468014e-01 1.14430527e-01 1.14393076e-01 1.14355662e-01 + 1.14318284e-01 1.14280944e-01 1.14243640e-01 1.14206372e-01 1.14169141e-01 + 1.14131946e-01 1.14094787e-01 1.14057665e-01 1.14020579e-01 1.13983529e-01 + 1.13946515e-01 1.13909538e-01 1.13872596e-01 1.13835690e-01 1.13798820e-01 + 1.13761986e-01 1.13725188e-01 1.13688425e-01 1.13651698e-01 1.13615006e-01 + 1.13578350e-01 1.13541730e-01 1.13505144e-01 1.13468595e-01 1.13432080e-01 + 1.13395601e-01 1.13359156e-01 1.13322747e-01 1.13286373e-01 1.13250035e-01 + 1.13213730e-01 1.13177461e-01 1.13141227e-01 1.13105028e-01 1.13068863e-01 + 1.13032733e-01 1.12996637e-01 1.12960576e-01 1.12924550e-01 1.12888558e-01 + 1.12852600e-01 1.12816677e-01 1.12780788e-01 1.12744933e-01 1.12709112e-01 + 1.12673326e-01 1.12637574e-01 1.12601855e-01 1.12566171e-01 1.12530520e-01 + 1.12494904e-01 1.12459321e-01 1.12423772e-01 1.12388256e-01 1.12352774e-01 + 1.12317326e-01 1.12281911e-01 1.12246530e-01 1.12211182e-01 1.12175868e-01 + 1.12140587e-01 1.12105339e-01 1.12070125e-01 1.12034943e-01 1.11999795e-01 + 1.11964679e-01 1.11929597e-01 1.11894548e-01 1.11859532e-01 1.11824548e-01 + 1.11789597e-01 1.11754679e-01 1.11719794e-01 1.11684941e-01 1.11650121e-01 + 1.11615334e-01 1.11580579e-01 1.11545856e-01 1.11511166e-01 1.11476508e-01 + 1.11441883e-01 1.11407289e-01 1.11372728e-01 1.11338199e-01 1.11303703e-01 + 1.11269238e-01 1.11234805e-01 1.11200404e-01 1.11166035e-01 1.11131698e-01 + 1.11097393e-01 1.11063119e-01 1.11028877e-01 1.10994667e-01 1.10960489e-01 + 1.10926342e-01 1.10892226e-01 1.10858142e-01 1.10824089e-01 1.10790068e-01 + 1.10756078e-01 1.10722119e-01 1.10688192e-01 1.10654295e-01 1.10620430e-01 + 1.10586596e-01 1.10552793e-01 1.10519021e-01 1.10485279e-01 1.10451569e-01 + 1.10417890e-01 1.10384241e-01 1.10350623e-01 1.10317036e-01 1.10283479e-01 + 1.10249953e-01 1.10216458e-01 1.10182993e-01 1.10149558e-01 1.10116154e-01 + 1.10082780e-01 1.10049437e-01 1.10016124e-01 1.09982841e-01 1.09949588e-01 + 1.09916366e-01 1.09883174e-01 1.09850011e-01 1.09816879e-01 1.09783776e-01 + 1.09750704e-01 1.09717661e-01 1.09684648e-01 1.09651665e-01 1.09618712e-01 + 1.09585789e-01 1.09552895e-01 1.09520030e-01 1.09487196e-01 1.09454390e-01 + 1.09421615e-01 1.09388868e-01 1.09356151e-01 1.09323464e-01 1.09290805e-01 + 1.09258176e-01 1.09225576e-01 1.09193006e-01 1.09160464e-01 1.09127951e-01 + 1.09095468e-01 1.09063013e-01 1.09030588e-01 1.08998191e-01 1.08965824e-01 + 1.08933485e-01 1.08901174e-01 1.08868893e-01 1.08836640e-01 1.08804416e-01 + 1.08772220e-01 1.08740054e-01 1.08707915e-01 1.08675805e-01 1.08643724e-01 + 1.08611671e-01 1.08579646e-01 1.08547649e-01 1.08515681e-01 1.08483741e-01 + 1.08451829e-01 1.08419946e-01 1.08388090e-01 1.08356263e-01 1.08324463e-01 + 1.08292692e-01 1.08260948e-01 1.08229233e-01 1.08197545e-01 1.08165885e-01 + 1.08134253e-01 1.08102648e-01 1.08071072e-01 1.08039523e-01 1.08008001e-01 + 1.07976507e-01 1.07945041e-01 1.07913602e-01 1.07882191e-01 1.07850807e-01 + 1.07819450e-01 1.07788121e-01 1.07756819e-01 1.07725544e-01 1.07694296e-01 + 1.07663076e-01 1.07631883e-01 1.07600717e-01 1.07569578e-01 1.07538466e-01 + 1.07507381e-01 1.07476322e-01 1.07445291e-01 1.07414287e-01 1.07383309e-01 + 1.07352359e-01 1.07321435e-01 1.07290537e-01 1.07259667e-01 1.07228823e-01 + 1.07198005e-01 1.07167214e-01 1.07136450e-01 1.07105712e-01 1.07075001e-01 + 1.07044316e-01 1.07013657e-01 1.06983025e-01 1.06952419e-01 1.06921839e-01 + 1.06891286e-01 1.06860758e-01 1.06830257e-01 1.06799782e-01 1.06769333e-01 + 1.06738910e-01 1.06708513e-01 1.06678142e-01 1.06647796e-01 1.06617477e-01 + 1.06587184e-01 1.06556916e-01 1.06526674e-01 1.06496458e-01 1.06466268e-01 + 1.06436103e-01 1.06405964e-01 1.06375850e-01 1.06345762e-01 1.06315700e-01 + 1.06285663e-01 1.06255651e-01 1.06225665e-01 1.06195704e-01 1.06165769e-01 + 1.06135859e-01 1.06105974e-01 1.06076114e-01 1.06046280e-01 1.06016470e-01 + 1.05986686e-01 1.05956927e-01 1.05927193e-01 1.05897484e-01 1.05867800e-01 + 1.05838141e-01 1.05808507e-01 1.05778897e-01 1.05749313e-01 1.05719753e-01 + 1.05690218e-01 1.05660708e-01 1.05631223e-01 1.05601762e-01 1.05572326e-01 + 1.05542914e-01 1.05513528e-01 1.05484165e-01 1.05454827e-01 1.05425514e-01 + 1.05396225e-01 1.05366960e-01 1.05337720e-01 1.05308504e-01 1.05279312e-01 + 1.05250145e-01 1.05221002e-01 1.05191883e-01 1.05162788e-01 1.05133717e-01 + 1.05104671e-01 1.05075648e-01 1.05046650e-01 1.05017675e-01 1.04988725e-01 + 1.04959798e-01 1.04930896e-01 1.04902017e-01 1.04873162e-01 1.04844331e-01 + 1.04815523e-01 1.04786740e-01 1.04757980e-01 1.04729243e-01 1.04700531e-01 + 1.04671841e-01 1.04643176e-01 1.04614534e-01 1.04585916e-01 1.04557321e-01 + 1.04528749e-01 1.04500201e-01 1.04471676e-01 1.04443175e-01 1.04414697e-01 + 1.04386242e-01 1.04357810e-01 1.04329402e-01 1.04301017e-01 1.04272655e-01 + 1.04244316e-01 1.04216000e-01 1.04187707e-01 1.04159437e-01 1.04131191e-01 + 1.04102967e-01 1.04074766e-01 1.04046588e-01 1.04018433e-01 1.03990301e-01 + 1.03962192e-01 1.03934105e-01 1.03906041e-01 1.03878000e-01 1.03849982e-01 + 1.03821986e-01 1.03794013e-01 1.03766062e-01 1.03738134e-01 1.03710229e-01 + 1.03682346e-01 1.03654486e-01 1.03626648e-01 1.03598832e-01 1.03571039e-01 + 1.03543268e-01 1.03515520e-01 1.03487793e-01 1.03460089e-01 1.03432408e-01 + 1.03404748e-01 1.03377111e-01 1.03349496e-01 1.03321903e-01 1.03294332e-01 + 1.03266783e-01 1.03239256e-01 1.03211751e-01 1.03184268e-01 1.03156807e-01 + 1.03129368e-01 1.03101951e-01 1.03074556e-01 1.03047182e-01 1.03019831e-01 + 1.02992501e-01 1.02965192e-01 1.02937906e-01 1.02910641e-01 1.02883398e-01 + 1.02856177e-01 1.02828977e-01 1.02801798e-01 1.02774642e-01 1.02747506e-01 + 1.02720392e-01 1.02693300e-01 1.02666229e-01 1.02639180e-01 1.02612151e-01 + 1.02585145e-01 1.02558159e-01 1.02531195e-01 1.02504252e-01 1.02477330e-01 + 1.02450430e-01 1.02423550e-01 1.02396692e-01 1.02369855e-01 1.02343039e-01 + 1.02316244e-01 1.02289470e-01 1.02262717e-01 1.02235985e-01 1.02209274e-01 + 1.02182584e-01 1.02155915e-01 1.02129267e-01 1.02102639e-01 1.02076033e-01 + 1.02049447e-01 1.02022882e-01 1.01996338e-01 1.01969814e-01 1.01943311e-01 + 1.01916829e-01 1.01890367e-01 1.01863926e-01 1.01837505e-01 1.01811106e-01 + 1.01784726e-01 1.01758367e-01 1.01732029e-01 1.01705711e-01 1.01679413e-01 + 1.01653136e-01 1.01626879e-01 1.01600643e-01 1.01574426e-01 1.01548230e-01 + 1.01522055e-01 1.01495899e-01 1.01469764e-01 1.01443649e-01 1.01417554e-01 + 1.01391479e-01 1.01365425e-01 1.01339390e-01 1.01313376e-01 1.01287381e-01 + 1.01261406e-01 1.01235452e-01 1.01209517e-01 1.01183603e-01 1.01157708e-01 + 1.01131833e-01 1.01105978e-01 1.01080143e-01 1.01054327e-01 1.01028532e-01 + 1.01002756e-01 1.00976999e-01 1.00951263e-01 1.00925546e-01 1.00899849e-01 + 1.00874171e-01 1.00848513e-01 1.00822875e-01 1.00797256e-01 1.00771656e-01 + 1.00746077e-01 1.00720516e-01 1.00694975e-01 1.00669454e-01 1.00643952e-01 + 1.00618469e-01 1.00593005e-01 1.00567561e-01 1.00542136e-01 1.00516731e-01 + 1.00491345e-01 1.00465978e-01 1.00440630e-01 1.00415301e-01 1.00389992e-01 + 1.00364701e-01 1.00339430e-01 1.00314178e-01 1.00288944e-01 1.00263730e-01 + 1.00238535e-01 1.00213359e-01 1.00188202e-01 1.00163064e-01 1.00137944e-01 + 1.00112844e-01 1.00087762e-01 1.00062700e-01 1.00037656e-01 1.00012631e-01 + 9.99876242e-02 9.99626366e-02 9.99376677e-02 9.99127176e-02 9.98877861e-02 + 9.98628732e-02 9.98379790e-02 9.98131034e-02 9.97882464e-02 9.97634079e-02 + 9.97385880e-02 9.97137866e-02 9.96890037e-02 9.96642393e-02 9.96394933e-02 + 9.96147657e-02 9.95900565e-02 9.95653657e-02 9.95406933e-02 9.95160392e-02 + 9.94914034e-02 9.94667859e-02 9.94421867e-02 9.94176057e-02 9.93930429e-02 + 9.93684983e-02 9.93439719e-02 9.93194636e-02 9.92949735e-02 9.92705015e-02 + 9.92460476e-02 9.92216117e-02 9.91971939e-02 9.91727940e-02 9.91484122e-02 + 9.91240484e-02 9.90997025e-02 9.90753745e-02 9.90510645e-02 9.90267723e-02 + 9.90024980e-02 9.89782415e-02 9.89540029e-02 9.89297821e-02 9.89055790e-02 + 9.88813937e-02 9.88572261e-02 9.88330763e-02 9.88089441e-02 9.87848296e-02 + 9.87607327e-02 9.87366535e-02 9.87125919e-02 9.86885478e-02 9.86645213e-02 + 9.86405124e-02 9.86165209e-02 9.85925470e-02 9.85685906e-02 9.85446516e-02 + 9.85207300e-02 9.84968258e-02 9.84729391e-02 9.84490697e-02 9.84252176e-02 + 9.84013829e-02 9.83775655e-02 9.83537654e-02 9.83299825e-02 9.83062169e-02 + 9.82824685e-02 9.82587374e-02 9.82350233e-02 9.82113265e-02 9.81876468e-02 + 9.81639842e-02 9.81403387e-02 9.81167103e-02 9.80930990e-02 9.80695047e-02 + 9.80459274e-02 9.80223671e-02 9.79988238e-02 9.79752974e-02 9.79517880e-02 + 9.79282955e-02 9.79048199e-02 9.78813611e-02 9.78579192e-02 9.78344942e-02 + 9.78110859e-02 9.77876945e-02 9.77643198e-02 9.77409619e-02 9.77176207e-02 + 9.76942963e-02 9.76709885e-02 9.76476974e-02 9.76244230e-02 9.76011651e-02 + 9.75779239e-02 9.75546993e-02 9.75314913e-02 9.75082999e-02 9.74851249e-02 + 9.74619665e-02 9.74388246e-02 9.74156991e-02 9.73925901e-02 9.73694976e-02 + 9.73464215e-02 9.73233617e-02 9.73003184e-02 9.72772914e-02 9.72542807e-02 + 9.72312864e-02 9.72083084e-02 9.71853467e-02 9.71624012e-02 9.71394719e-02 + 9.71165589e-02 9.70936621e-02 9.70707815e-02 9.70479171e-02 9.70250688e-02 + 9.70022366e-02 9.69794205e-02 9.69566206e-02 9.69338367e-02 9.69110688e-02 + 9.68883170e-02 9.68655813e-02 9.68428615e-02 9.68201577e-02 9.67974698e-02 + 9.67747979e-02 9.67521419e-02 9.67295019e-02 9.67068777e-02 9.66842693e-02 + 9.66616769e-02 9.66391002e-02 9.66165394e-02 9.65939943e-02 9.65714651e-02 + 9.65489516e-02 9.65264538e-02 9.65039718e-02 9.64815054e-02 9.64590547e-02 + 9.64366197e-02 9.64142004e-02 9.63917967e-02 9.63694086e-02 9.63470360e-02 + 9.63246791e-02 9.63023377e-02 9.62800118e-02 9.62577015e-02 9.62354067e-02 + 9.62131273e-02 9.61908635e-02 9.61686150e-02 9.61463820e-02 9.61241644e-02 + 9.61019623e-02 9.60797754e-02 9.60576040e-02 9.60354479e-02 9.60133071e-02 + 9.59911816e-02 9.59690714e-02 9.59469765e-02 9.59248968e-02 9.59028324e-02 + 9.58807832e-02 9.58587492e-02 9.58367303e-02 9.58147267e-02 9.57927382e-02 + 9.57707648e-02 9.57488065e-02 9.57268633e-02 9.57049352e-02 9.56830222e-02 + 9.56611242e-02 9.56392413e-02 9.56173733e-02 9.55955204e-02 9.55736824e-02 + 9.55518594e-02 9.55300513e-02 9.55082582e-02 9.54864799e-02 9.54647166e-02 + 9.54429681e-02 9.54212345e-02 9.53995157e-02 9.53778117e-02 9.53561226e-02 + 9.53344482e-02 9.53127886e-02 9.52911438e-02 9.52695137e-02 9.52478984e-02 + 9.52262977e-02 9.52047117e-02 9.51831404e-02 9.51615838e-02 9.51400418e-02 + 9.51185144e-02 9.50970016e-02 9.50755034e-02 9.50540198e-02 9.50325508e-02 + 9.50110963e-02 9.49896563e-02 9.49682308e-02 9.49468198e-02 9.49254233e-02 + 9.49040412e-02 9.48826736e-02 9.48613204e-02 9.48399817e-02 9.48186573e-02 + 9.47973473e-02 9.47760516e-02 9.47547703e-02 9.47335034e-02 9.47122507e-02 + 9.46910123e-02 9.46697883e-02 9.46485784e-02 9.46273829e-02 9.46062015e-02 + 9.45850344e-02 9.45638815e-02 9.45427428e-02 9.45216182e-02 9.45005078e-02 + 9.44794116e-02 9.44583294e-02 9.44372614e-02 9.44162074e-02 9.43951676e-02 + 9.43741418e-02 9.43531300e-02 9.43321323e-02 9.43111485e-02 9.42901788e-02 + 9.42692231e-02 9.42482813e-02 9.42273534e-02 9.42064395e-02 9.41855396e-02 + 9.41646535e-02 9.41437813e-02 9.41229230e-02 9.41020785e-02 9.40812479e-02 + 9.40604311e-02 9.40396282e-02 9.40188390e-02 9.39980636e-02 9.39773020e-02 + 9.39565541e-02 9.39358200e-02 9.39150995e-02 9.38943928e-02 9.38736998e-02 + 9.38530204e-02 9.38323548e-02 9.38117027e-02 9.37910643e-02 9.37704395e-02 + 9.37498283e-02 9.37292307e-02 9.37086466e-02 9.36880762e-02 9.36675192e-02 + 9.36469758e-02 9.36264459e-02 9.36059295e-02 9.35854265e-02 9.35649371e-02 + 9.35444611e-02 9.35239985e-02 9.35035493e-02 9.34831136e-02 9.34626912e-02 + 9.34422823e-02 9.34218866e-02 9.34015044e-02 9.33811355e-02 9.33607798e-02 + 9.33404375e-02 9.33201085e-02 9.32997928e-02 9.32794903e-02 9.32592011e-02 + 9.32389251e-02 9.32186624e-02 9.31984128e-02 9.31781764e-02 9.31579532e-02 + 9.31377432e-02 9.31175463e-02 9.30973626e-02 9.30771919e-02 9.30570344e-02 + 9.30368899e-02 9.30167586e-02 9.29966403e-02 9.29765350e-02 9.29564428e-02 + 9.29363636e-02 9.29162974e-02 9.28962442e-02 9.28762040e-02 9.28561768e-02 + 9.28361624e-02 9.28161611e-02 9.27961726e-02 9.27761971e-02 9.27562344e-02 + 9.27362847e-02 9.27163478e-02 9.26964237e-02 9.26765125e-02 9.26566141e-02 + 9.26367286e-02 9.26168558e-02 9.25969958e-02 9.25771486e-02 9.25573141e-02 + 9.25374924e-02 9.25176834e-02 9.24978871e-02 9.24781036e-02 9.24583327e-02 + 9.24385745e-02 9.24188289e-02 9.23990960e-02 9.23793758e-02 9.23596681e-02 + 9.23399731e-02 9.23202907e-02 9.23006208e-02 9.22809635e-02 9.22613188e-02 + 9.22416866e-02 9.22220669e-02 9.22024597e-02 9.21828651e-02 9.21632829e-02 + 9.21437132e-02 9.21241560e-02 9.21046112e-02 9.20850788e-02 9.20655589e-02 + 9.20460514e-02 9.20265563e-02 9.20070735e-02 9.19876031e-02 9.19681451e-02 + 9.19486994e-02 9.19292661e-02 9.19098451e-02 9.18904363e-02 9.18710399e-02 + 9.18516557e-02 9.18322838e-02 9.18129242e-02 9.17935768e-02 9.17742416e-02 + 9.17549186e-02 9.17356079e-02 9.17163093e-02 9.16970229e-02 9.16777486e-02 + 9.16584865e-02 9.16392366e-02 9.16199987e-02 9.16007730e-02 9.15815594e-02 + 9.15623578e-02 9.15431684e-02 9.15239910e-02 9.15048256e-02 9.14856723e-02 + 9.14665310e-02 9.14474017e-02 9.14282844e-02 9.14091791e-02 9.13900857e-02 + 9.13710043e-02 9.13519349e-02 9.13328774e-02 9.13138318e-02 9.12947982e-02 + 9.12757764e-02 9.12567665e-02 9.12377685e-02 9.12187823e-02 9.11998080e-02 + 9.11808456e-02 9.11618949e-02 9.11429561e-02 9.11240290e-02 9.11051138e-02 + 9.10862103e-02 9.10673186e-02 9.10484386e-02 9.10295704e-02 9.10107139e-02 + 9.09918691e-02 9.09730360e-02 9.09542146e-02 9.09354049e-02 9.09166069e-02 + 9.08978205e-02 9.08790457e-02 9.08602826e-02 9.08415311e-02 9.08227911e-02 + 9.08040628e-02 9.07853461e-02 9.07666409e-02 9.07479473e-02 9.07292652e-02 + 9.07105947e-02 9.06919357e-02 9.06732882e-02 9.06546522e-02 9.06360277e-02 + 9.06174146e-02 9.05988131e-02 9.05802229e-02 9.05616442e-02 9.05430770e-02 + 9.05245211e-02 9.05059767e-02 9.04874436e-02 9.04689219e-02 9.04504116e-02 + 9.04319127e-02 9.04134251e-02 9.03949488e-02 9.03764839e-02 9.03580303e-02 + 9.03395879e-02 9.03211569e-02 9.03027371e-02 9.02843286e-02 9.02659313e-02 + 9.02475453e-02 9.02291706e-02 9.02108070e-02 9.01924546e-02 9.01741135e-02 + 9.01557835e-02 9.01374647e-02 9.01191571e-02 9.01008606e-02 9.00825752e-02 + 9.00643010e-02 9.00460379e-02 9.00277859e-02 9.00095450e-02 8.99913152e-02 + 8.99730965e-02 8.99548888e-02 8.99366921e-02 8.99185065e-02 8.99003320e-02 + 8.98821684e-02 8.98640159e-02 8.98458743e-02 8.98277437e-02 8.98096241e-02 + 8.97915155e-02 8.97734178e-02 8.97553311e-02 8.97372552e-02 8.97191903e-02 + 8.97011363e-02 8.96830932e-02 8.96650610e-02 8.96470396e-02 8.96290291e-02 + 8.96110295e-02 8.95930407e-02 8.95750627e-02 8.95570956e-02 8.95391392e-02 + 8.95211937e-02 8.95032589e-02 8.94853349e-02 8.94674217e-02 8.94495192e-02 + 8.94316275e-02 8.94137465e-02 8.93958762e-02 8.93780167e-02 8.93601678e-02 + 8.93423296e-02 8.93245021e-02 8.93066853e-02 8.92888791e-02 8.92710836e-02 + 8.92532987e-02 8.92355244e-02 8.92177608e-02 8.92000077e-02 8.91822653e-02 + 8.91645334e-02 8.91468121e-02 8.91291014e-02 8.91114012e-02 8.90937115e-02 + 8.90760324e-02 8.90583638e-02 8.90407057e-02 8.90230582e-02 8.90054211e-02 + 8.89877945e-02 8.89701783e-02 8.89525726e-02 8.89349774e-02 8.89173926e-02 + 8.88998182e-02 8.88822542e-02 8.88647007e-02 8.88471575e-02 8.88296247e-02 + 8.88121023e-02 8.87945903e-02 8.87770886e-02 8.87595973e-02 8.87421163e-02 + 8.87246456e-02 8.87071853e-02 8.86897352e-02 8.86722954e-02 8.86548660e-02 + 8.86374468e-02 8.86200378e-02 8.86026391e-02 8.85852507e-02 8.85678725e-02 + 8.85505045e-02 8.85331467e-02 8.85157991e-02 8.84984618e-02 8.84811346e-02 + 8.84638176e-02 8.84465107e-02 8.84292140e-02 8.84119274e-02 8.83946510e-02 + 8.83773847e-02 8.83601285e-02 8.83428825e-02 8.83256465e-02 8.83084206e-02 + 8.82912047e-02 8.82739990e-02 8.82568033e-02 8.82396176e-02 8.82224420e-02 + 8.82052764e-02 8.81881208e-02 8.81709752e-02 8.81538396e-02 8.81367140e-02 + 8.81195984e-02 8.81024927e-02 8.80853970e-02 8.80683113e-02 8.80512355e-02 + 8.80341696e-02 8.80171137e-02 8.80000676e-02 8.79830314e-02 8.79660052e-02 + 8.79489888e-02 8.79319823e-02 8.79149857e-02 8.78979989e-02 8.78810219e-02 + 8.78640548e-02 8.78470975e-02 8.78301500e-02 8.78132123e-02 8.77962845e-02 + 8.77793664e-02 8.77624580e-02 8.77455595e-02 8.77286707e-02 8.77117916e-02 + 8.76949223e-02 8.76780628e-02 8.76612129e-02 8.76443728e-02 8.76275423e-02 + 8.76107216e-02 8.75939105e-02 8.75771091e-02 8.75603174e-02 8.75435353e-02 + 8.75267629e-02 8.75100001e-02 8.74932469e-02 8.74765033e-02 8.74597694e-02 + 8.74430451e-02 8.74263303e-02 8.74096251e-02 8.73929296e-02 8.73762435e-02 + 8.73595670e-02 8.73429001e-02 8.73262427e-02 8.73095948e-02 8.72929565e-02 + 8.72763276e-02 8.72597083e-02 8.72430984e-02 8.72264981e-02 8.72099072e-02 + 8.71933257e-02 8.71767537e-02 8.71601912e-02 8.71436381e-02 8.71270944e-02 + 8.71105602e-02 8.70940353e-02 8.70775199e-02 8.70610138e-02 8.70445172e-02 + 8.70280299e-02 8.70115519e-02 8.69950834e-02 8.69786241e-02 8.69621742e-02 + 8.69457337e-02 8.69293024e-02 8.69128805e-02 8.68964679e-02 8.68800646e-02 + 8.68636705e-02 8.68472857e-02 8.68309103e-02 8.68145440e-02 8.67981870e-02 + 8.67818393e-02 8.67655008e-02 8.67491715e-02 8.67328514e-02 8.67165406e-02 + 8.67002389e-02 8.66839464e-02 8.66676631e-02 8.66513890e-02 8.66351240e-02 + 8.66188682e-02 8.66026216e-02 8.65863841e-02 8.65701557e-02 8.65539364e-02 + 8.65377263e-02 8.65215252e-02 8.65053333e-02 8.64891504e-02 8.64729766e-02 + 8.64568119e-02 8.64406563e-02 8.64245097e-02 8.64083721e-02 8.63922436e-02 + 8.63761241e-02 8.63600136e-02 8.63439122e-02 8.63278197e-02 8.63117363e-02 + 8.62956618e-02 8.62795963e-02 8.62635398e-02 8.62474922e-02 8.62314536e-02 + 8.62154239e-02 8.61994032e-02 8.61833914e-02 8.61673885e-02 8.61513945e-02 + 8.61354094e-02 8.61194332e-02 8.61034659e-02 8.60875075e-02 8.60715580e-02 + 8.60556173e-02 8.60396855e-02 8.60237625e-02 8.60078483e-02 8.59919430e-02 + 8.59760465e-02 8.59601588e-02 8.59442800e-02 8.59284099e-02 8.59125486e-02 + 8.58966961e-02 8.58808523e-02 8.58650173e-02 8.58491911e-02 8.58333736e-02 + 8.58175649e-02 8.58017649e-02 8.57859736e-02 8.57701911e-02 8.57544172e-02 + 8.57386520e-02 8.57228956e-02 8.57071478e-02 8.56914087e-02 8.56756782e-02 + 8.56599565e-02 8.56442433e-02 8.56285389e-02 8.56128430e-02 8.55971558e-02 + 8.55814772e-02 8.55658072e-02 8.55501458e-02 8.55344930e-02 8.55188488e-02 + 8.55032132e-02 8.54875862e-02 8.54719677e-02 8.54563578e-02 8.54407564e-02 + 8.54251636e-02 8.54095793e-02 8.53940035e-02 8.53784363e-02 8.53628775e-02 + 8.53473273e-02 8.53317855e-02 8.53162523e-02 8.53007275e-02 8.52852112e-02 + 8.52697034e-02 8.52542040e-02 8.52387130e-02 8.52232305e-02 8.52077565e-02 + 8.51922909e-02 8.51768336e-02 8.51613848e-02 8.51459444e-02 8.51305124e-02 + 8.51150888e-02 8.50996736e-02 8.50842667e-02 8.50688682e-02 8.50534780e-02 + 8.50380963e-02 8.50227228e-02 8.50073577e-02 8.49920009e-02 8.49766524e-02 + 8.49613123e-02 8.49459804e-02 8.49306569e-02 8.49153416e-02 8.49000346e-02 + 8.48847359e-02 8.48694455e-02 8.48541633e-02 8.48388893e-02 8.48236237e-02 + 8.48083662e-02 8.47931170e-02 8.47778760e-02 8.47626432e-02 8.47474187e-02 + 8.47322023e-02 8.47169941e-02 8.47017941e-02 8.46866023e-02 8.46714187e-02 + 8.46562432e-02 8.46410759e-02 8.46259167e-02 8.46107657e-02 8.45956228e-02 + 8.45804880e-02 8.45653614e-02 8.45502428e-02 8.45351324e-02 8.45200301e-02 + 8.45049358e-02 8.44898497e-02 8.44747716e-02 8.44597016e-02 8.44446397e-02 + 8.44295858e-02 8.44145399e-02 8.43995021e-02 8.43844724e-02 8.43694506e-02 + 8.43544369e-02 8.43394312e-02 8.43244335e-02 8.43094438e-02 8.42944621e-02 + 8.42794883e-02 8.42645226e-02 8.42495648e-02 8.42346150e-02 8.42196731e-02 + 8.42047392e-02 8.41898132e-02 8.41748952e-02 8.41599851e-02 8.41450829e-02 + 8.41301886e-02 8.41153022e-02 8.41004238e-02 8.40855532e-02 8.40706905e-02 + 8.40558357e-02 8.40409887e-02 8.40261496e-02 8.40113184e-02 8.39964950e-02 + 8.39816795e-02 8.39668718e-02 8.39520719e-02 8.39372799e-02 8.39224957e-02 + 8.39077193e-02 8.38929507e-02 8.38781898e-02 8.38634368e-02 8.38486916e-02 + 8.38339541e-02 8.38192244e-02 8.38045025e-02 8.37897883e-02 8.37750818e-02 + 8.37603831e-02 8.37456922e-02 8.37310089e-02 8.37163334e-02 8.37016656e-02 + 8.36870055e-02 8.36723531e-02 8.36577084e-02 8.36430714e-02 8.36284421e-02 + 8.36138204e-02 8.35992064e-02 8.35846001e-02 8.35700014e-02 8.35554104e-02 + 8.35408270e-02 8.35262512e-02 8.35116831e-02 8.34971226e-02 8.34825697e-02 + 8.34680244e-02 8.34534867e-02 8.34389566e-02 8.34244341e-02 8.34099191e-02 + 8.33954118e-02 8.33809120e-02 8.33664197e-02 8.33519351e-02 8.33374579e-02 + 8.33229883e-02 8.33085263e-02 8.32940718e-02 8.32796248e-02 8.32651853e-02 + 8.32507533e-02 8.32363288e-02 8.32219118e-02 8.32075023e-02 8.31931003e-02 + 8.31787058e-02 8.31643187e-02 8.31499391e-02 8.31355669e-02 8.31212022e-02 + 8.31068450e-02 8.30924951e-02 8.30781528e-02 8.30638178e-02 8.30494902e-02 + 8.30351701e-02 8.30208574e-02 8.30065520e-02 8.29922541e-02 8.29779635e-02 + 8.29636804e-02 8.29494046e-02 8.29351361e-02 8.29208751e-02 8.29066213e-02 + 8.28923750e-02 8.28781359e-02 8.28639042e-02 8.28496799e-02 8.28354628e-02 + 8.28212531e-02 8.28070507e-02 8.27928556e-02 8.27786678e-02 8.27644872e-02 + 8.27503140e-02 8.27361480e-02 8.27219893e-02 8.27078379e-02 8.26936938e-02 + 8.26795569e-02 8.26654272e-02 8.26513048e-02 8.26371896e-02 8.26230816e-02 + 8.26089809e-02 8.25948874e-02 8.25808011e-02 8.25667220e-02 8.25526501e-02 + 8.25385854e-02 8.25245279e-02 8.25104775e-02 8.24964344e-02 8.24823984e-02 + 8.24683695e-02 8.24543479e-02 8.24403333e-02 8.24263259e-02 8.24123257e-02 + 8.23983326e-02 8.23843466e-02 8.23703677e-02 8.23563960e-02 8.23424313e-02 + 8.23284737e-02 8.23145233e-02 8.23005799e-02 8.22866436e-02 8.22727144e-02 + 8.22587923e-02 8.22448772e-02 8.22309692e-02 8.22170683e-02 8.22031744e-02 + 8.21892875e-02 8.21754077e-02 8.21615349e-02 8.21476691e-02 8.21338103e-02 + 8.21199586e-02 8.21061138e-02 8.20922761e-02 8.20784453e-02 8.20646216e-02 + 8.20508048e-02 8.20369950e-02 8.20231922e-02 8.20093963e-02 8.19956074e-02 + 8.19818254e-02 8.19680504e-02 8.19542823e-02 8.19405212e-02 8.19267670e-02 + 8.19130197e-02 8.18992794e-02 8.18855459e-02 8.18718194e-02 8.18580997e-02 + 8.18443870e-02 8.18306811e-02 8.18169822e-02 8.18032901e-02 8.17896048e-02 + 8.17759265e-02 8.17622550e-02 8.17485903e-02 8.17349326e-02 8.17212816e-02 + 8.17076375e-02 8.16940002e-02 8.16803697e-02 8.16667461e-02 8.16531293e-02 + 8.16395193e-02 8.16259161e-02 8.16123197e-02 8.15987300e-02 8.15851472e-02 + 8.15715712e-02 8.15580019e-02 8.15444394e-02 8.15308836e-02 8.15173346e-02 + 8.15037924e-02 8.14902569e-02 8.14767282e-02 8.14632062e-02 8.14496909e-02 + 8.14361823e-02 8.14226805e-02 8.14091854e-02 8.13956970e-02 8.13822153e-02 + 8.13687402e-02 8.13552719e-02 8.13418103e-02 8.13283553e-02 8.13149070e-02 + 8.13014654e-02 8.12880305e-02 8.12746022e-02 8.12611805e-02 8.12477656e-02 + 8.12343572e-02 8.12209555e-02 8.12075604e-02 8.11941719e-02 8.11807901e-02 + 8.11674149e-02 8.11540463e-02 8.11406843e-02 8.11273288e-02 8.11139800e-02 + 8.11006378e-02 8.10873021e-02 8.10739731e-02 8.10606506e-02 8.10473346e-02 + 8.10340252e-02 8.10207224e-02 8.10074261e-02 8.09941364e-02 8.09808532e-02 + 8.09675765e-02 8.09543064e-02 8.09410428e-02 8.09277857e-02 8.09145351e-02 + 8.09012911e-02 8.08880535e-02 8.08748224e-02 8.08615978e-02 8.08483797e-02 + 8.08351681e-02 8.08219630e-02 8.08087643e-02 8.07955721e-02 8.07823863e-02 + 8.07692070e-02 8.07560342e-02 8.07428678e-02 8.07297078e-02 8.07165542e-02 + 8.07034071e-02 8.06902664e-02 8.06771322e-02 8.06640043e-02 8.06508829e-02 + 8.06377678e-02 8.06246592e-02 8.06115569e-02 8.05984610e-02 8.05853715e-02 + 8.05722884e-02 8.05592116e-02 8.05461412e-02 8.05330772e-02 8.05200195e-02 + 8.05069682e-02 8.04939232e-02 8.04808846e-02 8.04678523e-02 8.04548263e-02 + 8.04418066e-02 8.04287933e-02 8.04157863e-02 8.04027856e-02 8.03897912e-02 + 8.03768031e-02 8.03638212e-02 8.03508457e-02 8.03378765e-02 8.03249135e-02 + 8.03119568e-02 8.02990064e-02 8.02860622e-02 8.02731243e-02 8.02601926e-02 + 8.02472672e-02 8.02343481e-02 8.02214351e-02 8.02085284e-02 8.01956280e-02 + 8.01827337e-02 8.01698457e-02 8.01569639e-02 8.01440883e-02 8.01312189e-02 + 8.01183557e-02 8.01054986e-02 8.00926478e-02 8.00798032e-02 8.00669647e-02 + 8.00541324e-02 8.00413063e-02 8.00284863e-02 8.00156725e-02 8.00028649e-02 + 7.99900634e-02 7.99772680e-02 7.99644788e-02 7.99516957e-02 7.99389187e-02 + 7.99261479e-02 7.99133832e-02 7.99006246e-02 7.98878721e-02 7.98751257e-02 + 7.98623854e-02 7.98496512e-02 7.98369231e-02 7.98242011e-02 7.98114851e-02 + 7.97987753e-02 7.97860715e-02 7.97733737e-02 7.97606821e-02 7.97479965e-02 + 7.97353169e-02 7.97226434e-02 7.97099759e-02 7.96973145e-02 7.96846590e-02 + 7.96720097e-02 7.96593663e-02 7.96467290e-02 7.96340976e-02 7.96214723e-02 + 7.96088530e-02 7.95962397e-02 7.95836323e-02 7.95710310e-02 7.95584356e-02 + 7.95458463e-02 7.95332629e-02 7.95206854e-02 7.95081140e-02 7.94955485e-02 + 7.94829889e-02 7.94704353e-02 7.94578877e-02 7.94453459e-02 7.94328102e-02 + 7.94202803e-02 7.94077564e-02 7.93952384e-02 7.93827263e-02 7.93702202e-02 + 7.93577199e-02 7.93452256e-02 7.93327371e-02 7.93202546e-02 7.93077779e-02 + 7.92953071e-02 7.92828423e-02 7.92703832e-02 7.92579301e-02 7.92454828e-02 + 7.92330414e-02 7.92206058e-02 7.92081761e-02 7.91957523e-02 7.91833343e-02 + 7.91709221e-02 7.91585157e-02 7.91461152e-02 7.91337206e-02 7.91213317e-02 + 7.91089486e-02 7.90965714e-02 7.90842000e-02 7.90718344e-02 7.90594746e-02 + 7.90471205e-02 7.90347723e-02 7.90224298e-02 7.90100932e-02 7.89977623e-02 + 7.89854371e-02 7.89731178e-02 7.89608042e-02 7.89484964e-02 7.89361943e-02 + 7.89238979e-02 7.89116073e-02 7.88993225e-02 7.88870434e-02 7.88747700e-02 + 7.88625023e-02 7.88502404e-02 7.88379842e-02 7.88257337e-02 7.88134889e-02 + 7.88012498e-02 7.87890164e-02 7.87767887e-02 7.87645667e-02 7.87523504e-02 + 7.87401398e-02 7.87279348e-02 7.87157355e-02 7.87035419e-02 7.86913540e-02 + 7.86791717e-02 7.86669951e-02 7.86548241e-02 7.86426588e-02 7.86304991e-02 + 7.86183450e-02 7.86061966e-02 7.85940538e-02 7.85819167e-02 7.85697851e-02 + 7.85576592e-02 7.85455389e-02 7.85334242e-02 7.85213151e-02 7.85092116e-02 + 7.84971137e-02 7.84850214e-02 7.84729347e-02 7.84608535e-02 7.84487780e-02 + 7.84367080e-02 7.84246436e-02 7.84125847e-02 7.84005314e-02 7.83884837e-02 + 7.83764415e-02 7.83644048e-02 7.83523737e-02 7.83403482e-02 7.83283282e-02 + 7.83163137e-02 7.83043047e-02 7.82923013e-02 7.82803034e-02 7.82683110e-02 + 7.82563241e-02 7.82443427e-02 7.82323668e-02 7.82203964e-02 7.82084315e-02 + 7.81964721e-02 7.81845182e-02 7.81725697e-02 7.81606268e-02 7.81486893e-02 + 7.81367572e-02 7.81248307e-02 7.81129096e-02 7.81009939e-02 7.80890837e-02 + 7.80771790e-02 7.80652797e-02 7.80533858e-02 7.80414974e-02 7.80296144e-02 + 7.80177368e-02 7.80058646e-02 7.79939979e-02 7.79821366e-02 7.79702807e-02 + 7.79584302e-02 7.79465851e-02 7.79347454e-02 7.79229111e-02 7.79110821e-02 + 7.78992586e-02 7.78874404e-02 7.78756277e-02 7.78638202e-02 7.78520182e-02 + 7.78402215e-02 7.78284302e-02 7.78166443e-02 7.78048637e-02 7.77930884e-02 + 7.77813185e-02 7.77695539e-02 7.77577947e-02 7.77460408e-02 7.77342922e-02 + 7.77225490e-02 7.77108111e-02 7.76990785e-02 7.76873512e-02 7.76756292e-02 + 7.76639125e-02 7.76522011e-02 7.76404950e-02 7.76287942e-02 7.76170987e-02 + 7.76054085e-02 7.75937236e-02 7.75820439e-02 7.75703695e-02 7.75587004e-02 + 7.75470365e-02 7.75353780e-02 7.75237246e-02 7.75120765e-02 7.75004337e-02 + 7.74887961e-02 7.74771637e-02 7.74655366e-02 7.74539147e-02 7.74422981e-02 + 7.74306867e-02 7.74190805e-02 7.74074795e-02 7.73958837e-02 7.73842931e-02 + 7.73727078e-02 7.73611276e-02 7.73495527e-02 7.73379829e-02 7.73264183e-02 + 7.73148589e-02 7.73033047e-02 7.72917557e-02 7.72802118e-02 7.72686732e-02 + 7.72571396e-02 7.72456113e-02 7.72340881e-02 7.72225701e-02 7.72110572e-02 + 7.71995494e-02 7.71880468e-02 7.71765494e-02 7.71650571e-02 7.71535699e-02 + 7.71420878e-02 7.71306109e-02 7.71191391e-02 7.71076724e-02 7.70962108e-02 + 7.70847543e-02 7.70733030e-02 7.70618567e-02 7.70504155e-02 7.70389795e-02 + 7.70275485e-02 7.70161226e-02 7.70047018e-02 7.69932860e-02 7.69818754e-02 + 7.69704698e-02 7.69590693e-02 7.69476738e-02 7.69362834e-02 7.69248981e-02 + 7.69135178e-02 7.69021426e-02 7.68907724e-02 7.68794073e-02 7.68680472e-02 + 7.68566921e-02 7.68453420e-02 7.68339970e-02 7.68226570e-02 7.68113221e-02 + 7.67999921e-02 7.67886672e-02 7.67773472e-02 7.67660323e-02 7.67547224e-02 + 7.67434174e-02 7.67321175e-02 7.67208226e-02 7.67095326e-02 7.66982476e-02 + 7.66869676e-02 7.66756926e-02 7.66644225e-02 7.66531574e-02 7.66418973e-02 + 7.66306422e-02 7.66193920e-02 7.66081467e-02 7.65969064e-02 7.65856711e-02 + 7.65744407e-02 7.65632152e-02 7.65519946e-02 7.65407790e-02 7.65295684e-02 + 7.65183626e-02 7.65071618e-02 7.64959659e-02 7.64847749e-02 7.64735888e-02 + 7.64624076e-02 7.64512313e-02 7.64400599e-02 7.64288935e-02 7.64177319e-02 + 7.64065752e-02 7.63954233e-02 7.63842764e-02 7.63731343e-02 7.63619972e-02 + 7.63508648e-02 7.63397374e-02 7.63286148e-02 7.63174971e-02 7.63063842e-02 + 7.62952762e-02 7.62841730e-02 7.62730747e-02 7.62619813e-02 7.62508926e-02 + 7.62398088e-02 7.62287298e-02 7.62176557e-02 7.62065864e-02 7.61955219e-02 + 7.61844622e-02 7.61734074e-02 7.61623573e-02 7.61513121e-02 7.61402716e-02 + 7.61292360e-02 7.61182052e-02 7.61071791e-02 7.60961579e-02 7.60851414e-02 + 7.60741297e-02 7.60631228e-02 7.60521207e-02 7.60411233e-02 7.60301307e-02 + 7.60191429e-02 7.60081598e-02 7.59971815e-02 7.59862080e-02 7.59752392e-02 + 7.59642751e-02 7.59533158e-02 7.59423613e-02 7.59314115e-02 7.59204664e-02 + 7.59095260e-02 7.58985904e-02 7.58876595e-02 7.58767333e-02 7.58658119e-02 + 7.58548951e-02 7.58439831e-02 7.58330758e-02 7.58221731e-02 7.58112752e-02 + 7.58003820e-02 7.57894935e-02 7.57786096e-02 7.57677305e-02 7.57568560e-02 + 7.57459862e-02 7.57351211e-02 7.57242607e-02 7.57134049e-02 7.57025538e-02 + 7.56917074e-02 7.56808656e-02 7.56700285e-02 7.56591961e-02 7.56483683e-02 + 7.56375451e-02 7.56267266e-02 7.56159127e-02 7.56051035e-02 7.55942989e-02 + 7.55834989e-02 7.55727035e-02 7.55619128e-02 7.55511267e-02 7.55403452e-02 + 7.55295684e-02 7.55187961e-02 7.55080285e-02 7.54972654e-02 7.54865070e-02 + 7.54757531e-02 7.54650039e-02 7.54542592e-02 7.54435192e-02 7.54327837e-02 + 7.54220528e-02 7.54113264e-02 7.54006047e-02 7.53898875e-02 7.53791749e-02 + 7.53684669e-02 7.53577634e-02 7.53470644e-02 7.53363701e-02 7.53256803e-02 + 7.53149950e-02 7.53043143e-02 7.52936381e-02 7.52829665e-02 7.52722994e-02 + 7.52616368e-02 7.52509787e-02 7.52403252e-02 7.52296762e-02 7.52190318e-02 + 7.52083918e-02 7.51977564e-02 7.51871255e-02 7.51764990e-02 7.51658771e-02 + 7.51552597e-02 7.51446468e-02 7.51340384e-02 7.51234344e-02 7.51128350e-02 + 7.51022400e-02 7.50916496e-02 7.50810636e-02 7.50704821e-02 7.50599050e-02 + 7.50493324e-02 7.50387643e-02 7.50282007e-02 7.50176415e-02 7.50070868e-02 + 7.49965365e-02 7.49859907e-02 7.49754493e-02 7.49649123e-02 7.49543799e-02 + 7.49438518e-02 7.49333282e-02 7.49228090e-02 7.49122942e-02 7.49017839e-02 + 7.48912780e-02 7.48807765e-02 7.48702794e-02 7.48597868e-02 7.48492985e-02 + 7.48388147e-02 7.48283352e-02 7.48178602e-02 7.48073895e-02 7.47969233e-02 + 7.47864614e-02 7.47760040e-02 7.47655509e-02 7.47551022e-02 7.47446579e-02 + 7.47342179e-02 7.47237824e-02 7.47133512e-02 7.47029243e-02 7.46925019e-02 + 7.46820838e-02 7.46716700e-02 7.46612606e-02 7.46508556e-02 7.46404549e-02 + 7.46300586e-02 7.46196666e-02 7.46092789e-02 7.45988956e-02 7.45885166e-02 + 7.45781419e-02 7.45677716e-02 7.45574056e-02 7.45470439e-02 7.45366865e-02 + 7.45263335e-02 7.45159847e-02 7.45056403e-02 7.44953002e-02 7.44849644e-02 + 7.44746329e-02 7.44643056e-02 7.44539827e-02 7.44436641e-02 7.44333497e-02 + 7.44230397e-02 7.44127339e-02 7.44024324e-02 7.43921352e-02 7.43818423e-02 + 7.43715536e-02 7.43612692e-02 7.43509890e-02 7.43407132e-02 7.43304416e-02 + 7.43201742e-02 7.43099111e-02 7.42996522e-02 7.42893976e-02 7.42791473e-02 + 7.42689011e-02 7.42586593e-02 7.42484216e-02 7.42381882e-02 7.42279590e-02 + 7.42177341e-02 7.42075133e-02 7.41972968e-02 7.41870845e-02 7.41768765e-02 + 7.41666726e-02 7.41564729e-02 7.41462775e-02 7.41360863e-02 7.41258992e-02 + 7.41157164e-02 7.41055377e-02 7.40953633e-02 7.40851930e-02 7.40750269e-02 + 7.40648650e-02 7.40547073e-02 7.40445538e-02 7.40344044e-02 7.40242592e-02 + 7.40141182e-02 7.40039814e-02 7.39938487e-02 7.39837202e-02 7.39735958e-02 + 7.39634756e-02 7.39533595e-02 7.39432476e-02 7.39331398e-02 7.39230362e-02 + 7.39129367e-02 7.39028414e-02 7.38927502e-02 7.38826631e-02 7.38725802e-02 + 7.38625014e-02 7.38524267e-02 7.38423561e-02 7.38322896e-02 7.38222273e-02 + 7.38121691e-02 7.38021150e-02 7.37920650e-02 7.37820191e-02 7.37719773e-02 + 7.37619396e-02 7.37519060e-02 7.37418765e-02 7.37318510e-02 7.37218297e-02 + 7.37118125e-02 7.37017993e-02 7.36917902e-02 7.36817852e-02 7.36717843e-02 + 7.36617874e-02 7.36517946e-02 7.36418059e-02 7.36318212e-02 7.36218406e-02 + 7.36118641e-02 7.36018916e-02 7.35919231e-02 7.35819587e-02 7.35719984e-02 + 7.35620421e-02 7.35520898e-02 7.35421416e-02 7.35321974e-02 7.35222572e-02 + 7.35123211e-02 7.35023890e-02 7.34924610e-02 7.34825369e-02 7.34726169e-02 + 7.34627009e-02 7.34527889e-02 7.34428809e-02 7.34329769e-02 7.34230769e-02 + 7.34131809e-02 7.34032890e-02 7.33934010e-02 7.33835170e-02 7.33736370e-02 + 7.33637610e-02 7.33538890e-02 7.33440210e-02 7.33341569e-02 7.33242969e-02 + 7.33144408e-02 7.33045886e-02 7.32947405e-02 7.32848963e-02 7.32750561e-02 + 7.32652199e-02 7.32553876e-02 7.32455592e-02 7.32357348e-02 7.32259144e-02 + 7.32160979e-02 7.32062854e-02 7.31964768e-02 7.31866722e-02 7.31768715e-02 + 7.31670747e-02 7.31572819e-02 7.31474930e-02 7.31377080e-02 7.31279269e-02 + 7.31181498e-02 7.31083766e-02 7.30986073e-02 7.30888419e-02 7.30790805e-02 + 7.30693229e-02 7.30595693e-02 7.30498195e-02 7.30400737e-02 7.30303318e-02 + 7.30205937e-02 7.30108596e-02 7.30011293e-02 7.29914030e-02 7.29816805e-02 + 7.29719619e-02 7.29622472e-02 7.29525364e-02 7.29428294e-02 7.29331263e-02 + 7.29234271e-02 7.29137318e-02 7.29040403e-02 7.28943527e-02 7.28846689e-02 + 7.28749890e-02 7.28653130e-02 7.28556408e-02 7.28459725e-02 7.28363080e-02 + 7.28266473e-02 7.28169905e-02 7.28073376e-02 7.27976885e-02 7.27880432e-02 + 7.27784017e-02 7.27687641e-02 7.27591303e-02 7.27495003e-02 7.27398742e-02 + 7.27302519e-02 7.27206334e-02 7.27110187e-02 7.27014078e-02 7.26918007e-02 + 7.26821975e-02 7.26725980e-02 7.26630023e-02 7.26534105e-02 7.26438224e-02 + 7.26342382e-02 7.26246577e-02 7.26150810e-02 7.26055081e-02 7.25959390e-02 + 7.25863737e-02 7.25768121e-02 7.25672544e-02 7.25577004e-02 7.25481502e-02 + 7.25386037e-02 7.25290610e-02 7.25195221e-02 7.25099870e-02 7.25004556e-02 + 7.24909279e-02 7.24814040e-02 7.24718839e-02 7.24623675e-02 7.24528549e-02 + 7.24433460e-02 7.24338409e-02 7.24243395e-02 7.24148418e-02 7.24053479e-02 + 7.23958577e-02 7.23863712e-02 7.23768885e-02 7.23674095e-02 7.23579342e-02 + 7.23484626e-02 7.23389948e-02 7.23295307e-02 7.23200702e-02 7.23106135e-02 + 7.23011605e-02 7.22917112e-02 7.22822656e-02 7.22728238e-02 7.22633856e-02 + 7.22539511e-02 7.22445203e-02 7.22350932e-02 7.22256698e-02 7.22162500e-02 + 7.22068340e-02 7.21974216e-02 7.21880130e-02 7.21786080e-02 7.21692066e-02 + 7.21598090e-02 7.21504150e-02 7.21410247e-02 7.21316380e-02 7.21222550e-02 + 7.21128757e-02 7.21035000e-02 7.20941280e-02 7.20847596e-02 7.20753949e-02 + 7.20660339e-02 7.20566765e-02 7.20473227e-02 7.20379726e-02 7.20286261e-02 + 7.20192832e-02 7.20099440e-02 7.20006084e-02 7.19912765e-02 7.19819481e-02 + 7.19726234e-02 7.19633024e-02 7.19539849e-02 7.19446711e-02 7.19353608e-02 + 7.19260542e-02 7.19167512e-02 7.19074518e-02 7.18981560e-02 7.18888639e-02 + 7.18795753e-02 7.18702903e-02 7.18610089e-02 7.18517311e-02 7.18424569e-02 + 7.18331863e-02 7.18239193e-02 7.18146559e-02 7.18053960e-02 7.17961398e-02 + 7.17868871e-02 7.17776380e-02 7.17683924e-02 7.17591505e-02 7.17499121e-02 + 7.17406772e-02 7.17314460e-02 7.17222183e-02 7.17129941e-02 7.17037735e-02 + 7.16945565e-02 7.16853430e-02 7.16761331e-02 7.16669267e-02 7.16577239e-02 + 7.16485246e-02 7.16393289e-02 7.16301367e-02 7.16209480e-02 7.16117629e-02 + 7.16025813e-02 7.15934032e-02 7.15842287e-02 7.15750577e-02 7.15658902e-02 + 7.15567262e-02 7.15475658e-02 7.15384089e-02 7.15292555e-02 7.15201056e-02 + 7.15109592e-02 7.15018163e-02 7.14926769e-02 7.14835410e-02 7.14744087e-02 + 7.14652798e-02 7.14561544e-02 7.14470325e-02 7.14379142e-02 7.14287993e-02 + 7.14196878e-02 7.14105799e-02 7.14014755e-02 7.13923745e-02 7.13832770e-02 + 7.13741830e-02 7.13650925e-02 7.13560055e-02 7.13469219e-02 7.13378418e-02 + 7.13287651e-02 7.13196919e-02 7.13106222e-02 7.13015559e-02 7.12924931e-02 + 7.12834338e-02 7.12743779e-02 7.12653254e-02 7.12562764e-02 7.12472309e-02 + 7.12381888e-02 7.12291501e-02 7.12201149e-02 7.12110831e-02 7.12020547e-02 + 7.11930298e-02 7.11840083e-02 7.11749902e-02 7.11659756e-02 7.11569644e-02 + 7.11479566e-02 7.11389522e-02 7.11299512e-02 7.11209537e-02 7.11119596e-02 + 7.11029689e-02 7.10939816e-02 7.10849977e-02 7.10760172e-02 7.10670401e-02 + 7.10580664e-02 7.10490961e-02 7.10401292e-02 7.10311657e-02 7.10222056e-02 + 7.10132489e-02 7.10042956e-02 7.09953456e-02 7.09863990e-02 7.09774559e-02 + 7.09685161e-02 7.09595796e-02 7.09506466e-02 7.09417169e-02 7.09327906e-02 + 7.09238677e-02 7.09149481e-02 7.09060319e-02 7.08971191e-02 7.08882096e-02 + 7.08793035e-02 7.08704007e-02 7.08615013e-02 7.08526052e-02 7.08437125e-02 + 7.08348231e-02 7.08259371e-02 7.08170544e-02 7.08081751e-02 7.07992991e-02 + 7.07904264e-02 7.07815571e-02 7.07726911e-02 7.07638285e-02 7.07549691e-02 + 7.07461131e-02 7.07372604e-02 7.07284111e-02 7.07195650e-02 7.07107223e-02 + 7.07018829e-02 7.06930468e-02 7.06842141e-02 7.06753846e-02 7.06665584e-02 + 7.06577356e-02 7.06489160e-02 7.06400998e-02 7.06312868e-02 7.06224772e-02 + 7.06136708e-02 7.06048678e-02 7.05960680e-02 7.05872715e-02 7.05784783e-02 + 7.05696884e-02 7.05609018e-02 7.05521184e-02 7.05433384e-02 7.05345616e-02 + 1.00000000e+00 9.75894263e-01 9.53451752e-01 9.32489601e-01 9.12851907e-01 + 8.94404826e-01 8.77032714e-01 8.60635068e-01 8.45124065e-01 8.30422576e-01 + 8.16462554e-01 8.03183696e-01 7.90532350e-01 7.78460602e-01 7.66925506e-01 + 7.55888443e-01 7.45314577e-01 7.35172390e-01 7.25433287e-01 7.16071258e-01 + 7.07062580e-01 6.98385572e-01 6.90020370e-01 6.81948734e-01 6.74153887e-01 + 6.66620364e-01 6.59333880e-01 6.52281224e-01 6.45450150e-01 6.38829295e-01 + 6.32408091e-01 6.26176704e-01 6.20125961e-01 6.14247300e-01 6.08532716e-01 + 6.02974715e-01 5.97566276e-01 5.92300808e-01 5.87172122e-01 5.82174396e-01 + 5.77302151e-01 5.72550221e-01 5.67913735e-01 5.63388093e-01 5.58968948e-01 + 5.54652188e-01 5.50433918e-01 5.46310451e-01 5.42278287e-01 5.38334105e-01 + 5.34474753e-01 5.30697232e-01 5.26998691e-01 5.23376415e-01 5.19827818e-01 + 5.16350438e-01 5.12941922e-01 5.09600027e-01 5.06322612e-01 5.03107629e-01 + 4.99953120e-01 4.96857213e-01 4.93818117e-01 4.90834114e-01 4.87903560e-01 + 4.85024878e-01 4.82196556e-01 4.79417141e-01 4.76685242e-01 4.73999519e-01 + 4.71358685e-01 4.68761505e-01 4.66206788e-01 4.63693390e-01 4.61220209e-01 + 4.58786184e-01 4.56390292e-01 4.54031548e-01 4.51709002e-01 4.49421737e-01 + 4.47168870e-01 4.44949545e-01 4.42762941e-01 4.40608259e-01 4.38484731e-01 + 4.36391613e-01 4.34328187e-01 4.32293756e-01 4.30287649e-01 4.28309213e-01 + 4.26357819e-01 4.24432857e-01 4.22533734e-01 4.20659877e-01 4.18810733e-01 + 4.16985761e-01 4.15184441e-01 4.13406264e-01 4.11650741e-01 4.09917394e-01 + 4.08205761e-01 4.06515390e-01 4.04845847e-01 4.03196706e-01 4.01567556e-01 + 3.99957996e-01 3.98367636e-01 3.96796098e-01 3.95243014e-01 3.93708024e-01 + 3.92190780e-01 3.90690944e-01 3.89208184e-01 3.87742180e-01 3.86292617e-01 + 3.84859191e-01 3.83441605e-01 3.82039569e-01 3.80652800e-01 3.79281024e-01 + 3.77923973e-01 3.76581385e-01 3.75253005e-01 3.73938583e-01 3.72637878e-01 + 3.71350652e-01 3.70076675e-01 3.68815719e-01 3.67567566e-01 3.66332000e-01 + 3.65108810e-01 3.63897792e-01 3.62698745e-01 3.61511473e-01 3.60335785e-01 + 3.59171493e-01 3.58018415e-01 3.56876371e-01 3.55745187e-01 3.54624691e-01 + 3.53514717e-01 3.52415101e-01 3.51325683e-01 3.50246306e-01 3.49176816e-01 + 3.48117064e-01 3.47066903e-01 3.46026189e-01 3.44994782e-01 3.43972542e-01 + 3.42959337e-01 3.41955032e-01 3.40959498e-01 3.39972609e-01 3.38994241e-01 + 3.38024270e-01 3.37062579e-01 3.36109049e-01 3.35163566e-01 3.34226018e-01 + 3.33296293e-01 3.32374284e-01 3.31459885e-01 3.30552992e-01 3.29653502e-01 + 3.28761315e-01 3.27876333e-01 3.26998460e-01 3.26127600e-01 3.25263662e-01 + 3.24406553e-01 3.23556184e-01 3.22712468e-01 3.21875318e-01 3.21044649e-01 + 3.20220378e-01 3.19402424e-01 3.18590706e-01 3.17785145e-01 3.16985665e-01 + 3.16192188e-01 3.15404639e-01 3.14622947e-01 3.13847038e-01 3.13076841e-01 + 3.12312287e-01 3.11553306e-01 3.10799833e-01 3.10051800e-01 3.09309142e-01 + 3.08571795e-01 3.07839697e-01 3.07112784e-01 3.06390997e-01 3.05674275e-01 + 3.04962560e-01 3.04255793e-01 3.03553917e-01 3.02856876e-01 3.02164615e-01 + 3.01477079e-01 3.00794216e-01 3.00115971e-01 2.99442294e-01 2.98773134e-01 + 2.98108439e-01 2.97448161e-01 2.96792252e-01 2.96140662e-01 2.95493345e-01 + 2.94850254e-01 2.94211344e-01 2.93576570e-01 2.92945886e-01 2.92319250e-01 + 2.91696618e-01 2.91077947e-01 2.90463197e-01 2.89852325e-01 2.89245291e-01 + 2.88642055e-01 2.88042577e-01 2.87446820e-01 2.86854743e-01 2.86266311e-01 + 2.85681484e-01 2.85100228e-01 2.84522505e-01 2.83948280e-01 2.83377517e-01 + 2.82810183e-01 2.82246243e-01 2.81685662e-01 2.81128409e-01 2.80574450e-01 + 2.80023753e-01 2.79476286e-01 2.78932017e-01 2.78390916e-01 2.77852951e-01 + 2.77318094e-01 2.76786313e-01 2.76257580e-01 2.75731865e-01 2.75209140e-01 + 2.74689377e-01 2.74172548e-01 2.73658625e-01 2.73147581e-01 2.72639389e-01 + 2.72134024e-01 2.71631458e-01 2.71131667e-01 2.70634624e-01 2.70140305e-01 + 2.69648684e-01 2.69159738e-01 2.68673442e-01 2.68189772e-01 2.67708706e-01 + 2.67230218e-01 2.66754287e-01 2.66280890e-01 2.65810005e-01 2.65341608e-01 + 2.64875680e-01 2.64412197e-01 2.63951138e-01 2.63492483e-01 2.63036211e-01 + 2.62582301e-01 2.62130732e-01 2.61681486e-01 2.61234541e-01 2.60789879e-01 + 2.60347479e-01 2.59907323e-01 2.59469393e-01 2.59033668e-01 2.58600131e-01 + 2.58168764e-01 2.57739549e-01 2.57312467e-01 2.56887501e-01 2.56464633e-01 + 2.56043847e-01 2.55625126e-01 2.55208452e-01 2.54793809e-01 2.54381180e-01 + 2.53970550e-01 2.53561902e-01 2.53155220e-01 2.52750489e-01 2.52347693e-01 + 2.51946816e-01 2.51547844e-01 2.51150761e-01 2.50755553e-01 2.50362204e-01 + 2.49970701e-01 2.49581029e-01 2.49193173e-01 2.48807120e-01 2.48422856e-01 + 2.48040367e-01 2.47659639e-01 2.47280658e-01 2.46903413e-01 2.46527888e-01 + 2.46154072e-01 2.45781951e-01 2.45411513e-01 2.45042745e-01 2.44675634e-01 + 2.44310168e-01 2.43946335e-01 2.43584122e-01 2.43223518e-01 2.42864511e-01 + 2.42507089e-01 2.42151241e-01 2.41796954e-01 2.41444218e-01 2.41093021e-01 + 2.40743352e-01 2.40395201e-01 2.40048555e-01 2.39703404e-01 2.39359739e-01 + 2.39017547e-01 2.38676818e-01 2.38337542e-01 2.37999710e-01 2.37663309e-01 + 2.37328332e-01 2.36994766e-01 2.36662603e-01 2.36331833e-01 2.36002446e-01 + 2.35674432e-01 2.35347783e-01 2.35022487e-01 2.34698537e-01 2.34375923e-01 + 2.34054635e-01 2.33734666e-01 2.33416004e-01 2.33098643e-01 2.32782573e-01 + 2.32467784e-01 2.32154270e-01 2.31842020e-01 2.31531028e-01 2.31221283e-01 + 2.30912778e-01 2.30605504e-01 2.30299454e-01 2.29994620e-01 2.29690992e-01 + 2.29388564e-01 2.29087328e-01 2.28787275e-01 2.28488398e-01 2.28190689e-01 + 2.27894141e-01 2.27598746e-01 2.27304497e-01 2.27011386e-01 2.26719406e-01 + 2.26428550e-01 2.26138810e-01 2.25850180e-01 2.25562652e-01 2.25276219e-01 + 2.24990875e-01 2.24706613e-01 2.24423425e-01 2.24141305e-01 2.23860246e-01 + 2.23580243e-01 2.23301287e-01 2.23023372e-01 2.22746493e-01 2.22470643e-01 + 2.22195814e-01 2.21922002e-01 2.21649200e-01 2.21377401e-01 2.21106599e-01 + 2.20836789e-01 2.20567964e-01 2.20300119e-01 2.20033247e-01 2.19767342e-01 + 2.19502400e-01 2.19238413e-01 2.18975376e-01 2.18713284e-01 2.18452130e-01 + 2.18191910e-01 2.17932618e-01 2.17674247e-01 2.17416794e-01 2.17160252e-01 + 2.16904616e-01 2.16649880e-01 2.16396040e-01 2.16143090e-01 2.15891025e-01 + 2.15639840e-01 2.15389530e-01 2.15140089e-01 2.14891513e-01 2.14643796e-01 + 2.14396935e-01 2.14150923e-01 2.13905756e-01 2.13661429e-01 2.13417937e-01 + 2.13175276e-01 2.12933441e-01 2.12692427e-01 2.12452229e-01 2.12212843e-01 + 2.11974265e-01 2.11736490e-01 2.11499513e-01 2.11263330e-01 2.11027936e-01 + 2.10793328e-01 2.10559500e-01 2.10326449e-01 2.10094169e-01 2.09862658e-01 + 2.09631910e-01 2.09401922e-01 2.09172689e-01 2.08944208e-01 2.08716473e-01 + 2.08489481e-01 2.08263229e-01 2.08037711e-01 2.07812924e-01 2.07588865e-01 + 2.07365528e-01 2.07142911e-01 2.06921010e-01 2.06699820e-01 2.06479337e-01 + 2.06259559e-01 2.06040481e-01 2.05822100e-01 2.05604412e-01 2.05387413e-01 + 2.05171099e-01 2.04955468e-01 2.04740515e-01 2.04526237e-01 2.04312630e-01 + 2.04099691e-01 2.03887417e-01 2.03675803e-01 2.03464847e-01 2.03254545e-01 + 2.03044894e-01 2.02835891e-01 2.02627531e-01 2.02419812e-01 2.02212731e-01 + 2.02006284e-01 2.01800468e-01 2.01595280e-01 2.01390716e-01 2.01186774e-01 + 2.00983451e-01 2.00780742e-01 2.00578646e-01 2.00377158e-01 2.00176277e-01 + 1.99975998e-01 1.99776320e-01 1.99577238e-01 1.99378751e-01 1.99180854e-01 + 1.98983546e-01 1.98786822e-01 1.98590681e-01 1.98395120e-01 1.98200135e-01 + 1.98005724e-01 1.97811884e-01 1.97618612e-01 1.97425905e-01 1.97233761e-01 + 1.97042177e-01 1.96851151e-01 1.96660678e-01 1.96470758e-01 1.96281387e-01 + 1.96092562e-01 1.95904281e-01 1.95716541e-01 1.95529341e-01 1.95342676e-01 + 1.95156545e-01 1.94970945e-01 1.94785873e-01 1.94601328e-01 1.94417306e-01 + 1.94233805e-01 1.94050823e-01 1.93868357e-01 1.93686404e-01 1.93504963e-01 + 1.93324031e-01 1.93143606e-01 1.92963685e-01 1.92784265e-01 1.92605345e-01 + 1.92426923e-01 1.92248995e-01 1.92071560e-01 1.91894616e-01 1.91718159e-01 + 1.91542189e-01 1.91366702e-01 1.91191696e-01 1.91017170e-01 1.90843121e-01 + 1.90669546e-01 1.90496445e-01 1.90323814e-01 1.90151652e-01 1.89979956e-01 + 1.89808724e-01 1.89637954e-01 1.89467644e-01 1.89297793e-01 1.89128397e-01 + 1.88959456e-01 1.88790966e-01 1.88622926e-01 1.88455335e-01 1.88288189e-01 + 1.88121487e-01 1.87955227e-01 1.87789407e-01 1.87624025e-01 1.87459079e-01 + 1.87294568e-01 1.87130489e-01 1.86966840e-01 1.86803620e-01 1.86640827e-01 + 1.86478458e-01 1.86316513e-01 1.86154989e-01 1.85993884e-01 1.85833197e-01 + 1.85672925e-01 1.85513068e-01 1.85353622e-01 1.85194587e-01 1.85035961e-01 + 1.84877742e-01 1.84719927e-01 1.84562517e-01 1.84405508e-01 1.84248899e-01 + 1.84092688e-01 1.83936874e-01 1.83781455e-01 1.83626429e-01 1.83471795e-01 + 1.83317551e-01 1.83163695e-01 1.83010226e-01 1.82857142e-01 1.82704442e-01 + 1.82552123e-01 1.82400185e-01 1.82248626e-01 1.82097444e-01 1.81946637e-01 + 1.81796204e-01 1.81646144e-01 1.81496455e-01 1.81347136e-01 1.81198184e-01 + 1.81049599e-01 1.80901378e-01 1.80753522e-01 1.80606027e-01 1.80458892e-01 + 1.80312117e-01 1.80165699e-01 1.80019637e-01 1.79873930e-01 1.79728576e-01 + 1.79583574e-01 1.79438922e-01 1.79294620e-01 1.79150665e-01 1.79007056e-01 + 1.78863792e-01 1.78720871e-01 1.78578292e-01 1.78436054e-01 1.78294156e-01 + 1.78152595e-01 1.78011371e-01 1.77870482e-01 1.77729928e-01 1.77589706e-01 + 1.77449815e-01 1.77310255e-01 1.77171023e-01 1.77032119e-01 1.76893540e-01 + 1.76755287e-01 1.76617358e-01 1.76479751e-01 1.76342465e-01 1.76205499e-01 + 1.76068851e-01 1.75932521e-01 1.75796507e-01 1.75660808e-01 1.75525423e-01 + 1.75390351e-01 1.75255589e-01 1.75121138e-01 1.74986996e-01 1.74853162e-01 + 1.74719634e-01 1.74586412e-01 1.74453494e-01 1.74320879e-01 1.74188566e-01 + 1.74056554e-01 1.73924842e-01 1.73793428e-01 1.73662312e-01 1.73531492e-01 + 1.73400967e-01 1.73270736e-01 1.73140798e-01 1.73011152e-01 1.72881797e-01 + 1.72752732e-01 1.72623955e-01 1.72495466e-01 1.72367263e-01 1.72239346e-01 + 1.72111713e-01 1.71984363e-01 1.71857296e-01 1.71730510e-01 1.71604004e-01 + 1.71477777e-01 1.71351828e-01 1.71226157e-01 1.71100761e-01 1.70975641e-01 + 1.70850795e-01 1.70726222e-01 1.70601921e-01 1.70477891e-01 1.70354131e-01 + 1.70230640e-01 1.70107418e-01 1.69984462e-01 1.69861773e-01 1.69739349e-01 + 1.69617190e-01 1.69495294e-01 1.69373660e-01 1.69252288e-01 1.69131176e-01 + 1.69010324e-01 1.68889731e-01 1.68769395e-01 1.68649317e-01 1.68529494e-01 + 1.68409926e-01 1.68290613e-01 1.68171552e-01 1.68052744e-01 1.67934188e-01 + 1.67815882e-01 1.67697825e-01 1.67580018e-01 1.67462458e-01 1.67345146e-01 + 1.67228079e-01 1.67111258e-01 1.66994682e-01 1.66878349e-01 1.66762259e-01 + 1.66646411e-01 1.66530804e-01 1.66415437e-01 1.66300309e-01 1.66185421e-01 + 1.66070770e-01 1.65956356e-01 1.65842178e-01 1.65728235e-01 1.65614527e-01 + 1.65501053e-01 1.65387812e-01 1.65274803e-01 1.65162025e-01 1.65049477e-01 + 1.64937160e-01 1.64825071e-01 1.64713211e-01 1.64601578e-01 1.64490172e-01 + 1.64378991e-01 1.64268036e-01 1.64157305e-01 1.64046798e-01 1.63936514e-01 + 1.63826452e-01 1.63716611e-01 1.63606991e-01 1.63497591e-01 1.63388409e-01 + 1.63279447e-01 1.63170702e-01 1.63062174e-01 1.62953862e-01 1.62845766e-01 + 1.62737885e-01 1.62630217e-01 1.62522764e-01 1.62415523e-01 1.62308493e-01 + 1.62201676e-01 1.62095069e-01 1.61988671e-01 1.61882483e-01 1.61776504e-01 + 1.61670732e-01 1.61565168e-01 1.61459810e-01 1.61354658e-01 1.61249711e-01 + 1.61144969e-01 1.61040431e-01 1.60936095e-01 1.60831963e-01 1.60728032e-01 + 1.60624302e-01 1.60520773e-01 1.60417444e-01 1.60314314e-01 1.60211383e-01 + 1.60108650e-01 1.60006114e-01 1.59903775e-01 1.59801632e-01 1.59699684e-01 + 1.59597932e-01 1.59496373e-01 1.59395009e-01 1.59293837e-01 1.59192858e-01 + 1.59092070e-01 1.58991474e-01 1.58891068e-01 1.58790852e-01 1.58690826e-01 + 1.58590988e-01 1.58491339e-01 1.58391877e-01 1.58292602e-01 1.58193514e-01 + 1.58094612e-01 1.57995894e-01 1.57897362e-01 1.57799013e-01 1.57700849e-01 + 1.57602867e-01 1.57505067e-01 1.57407450e-01 1.57310013e-01 1.57212758e-01 + 1.57115682e-01 1.57018786e-01 1.56922069e-01 1.56825531e-01 1.56729171e-01 + 1.56632988e-01 1.56536982e-01 1.56441152e-01 1.56345498e-01 1.56250019e-01 + 1.56154715e-01 1.56059585e-01 1.55964629e-01 1.55869846e-01 1.55775235e-01 + 1.55680797e-01 1.55586530e-01 1.55492434e-01 1.55398509e-01 1.55304754e-01 + 1.55211168e-01 1.55117751e-01 1.55024502e-01 1.54931422e-01 1.54838509e-01 + 1.54745763e-01 1.54653183e-01 1.54560770e-01 1.54468522e-01 1.54376439e-01 + 1.54284520e-01 1.54192765e-01 1.54101174e-01 1.54009746e-01 1.53918481e-01 + 1.53827377e-01 1.53736435e-01 1.53645654e-01 1.53555034e-01 1.53464574e-01 + 1.53374274e-01 1.53284132e-01 1.53194150e-01 1.53104326e-01 1.53014660e-01 + 1.52925151e-01 1.52835798e-01 1.52746603e-01 1.52657563e-01 1.52568679e-01 + 1.52479950e-01 1.52391376e-01 1.52302955e-01 1.52214689e-01 1.52126576e-01 + 1.52038615e-01 1.51950807e-01 1.51863151e-01 1.51775647e-01 1.51688293e-01 + 1.51601091e-01 1.51514038e-01 1.51427135e-01 1.51340382e-01 1.51253778e-01 + 1.51167322e-01 1.51081014e-01 1.50994854e-01 1.50908841e-01 1.50822975e-01 + 1.50737255e-01 1.50651681e-01 1.50566253e-01 1.50480970e-01 1.50395832e-01 + 1.50310838e-01 1.50225988e-01 1.50141281e-01 1.50056718e-01 1.49972298e-01 + 1.49888019e-01 1.49803883e-01 1.49719888e-01 1.49636035e-01 1.49552322e-01 + 1.49468749e-01 1.49385316e-01 1.49302023e-01 1.49218869e-01 1.49135854e-01 + 1.49052977e-01 1.48970239e-01 1.48887638e-01 1.48805174e-01 1.48722847e-01 + 1.48640656e-01 1.48558602e-01 1.48476683e-01 1.48394900e-01 1.48313252e-01 + 1.48231738e-01 1.48150359e-01 1.48069113e-01 1.47988001e-01 1.47907022e-01 + 1.47826176e-01 1.47745463e-01 1.47664881e-01 1.47584431e-01 1.47504113e-01 + 1.47423925e-01 1.47343868e-01 1.47263942e-01 1.47184145e-01 1.47104478e-01 + 1.47024940e-01 1.46945531e-01 1.46866251e-01 1.46787099e-01 1.46708074e-01 + 1.46629177e-01 1.46550407e-01 1.46471764e-01 1.46393248e-01 1.46314857e-01 + 1.46236593e-01 1.46158454e-01 1.46080440e-01 1.46002551e-01 1.45924786e-01 + 1.45847145e-01 1.45769628e-01 1.45692235e-01 1.45614965e-01 1.45537817e-01 + 1.45460792e-01 1.45383890e-01 1.45307109e-01 1.45230449e-01 1.45153911e-01 + 1.45077494e-01 1.45001197e-01 1.44925021e-01 1.44848964e-01 1.44773027e-01 + 1.44697209e-01 1.44621511e-01 1.44545931e-01 1.44470469e-01 1.44395126e-01 + 1.44319900e-01 1.44244791e-01 1.44169800e-01 1.44094926e-01 1.44020168e-01 + 1.43945527e-01 1.43871001e-01 1.43796591e-01 1.43722296e-01 1.43648117e-01 + 1.43574052e-01 1.43500101e-01 1.43426265e-01 1.43352542e-01 1.43278934e-01 + 1.43205438e-01 1.43132055e-01 1.43058785e-01 1.42985628e-01 1.42912583e-01 + 1.42839649e-01 1.42766827e-01 1.42694116e-01 1.42621516e-01 1.42549027e-01 + 1.42476649e-01 1.42404380e-01 1.42332222e-01 1.42260172e-01 1.42188233e-01 + 1.42116402e-01 1.42044680e-01 1.41973066e-01 1.41901561e-01 1.41830164e-01 + 1.41758874e-01 1.41687692e-01 1.41616617e-01 1.41545648e-01 1.41474786e-01 + 1.41404031e-01 1.41333382e-01 1.41262838e-01 1.41192400e-01 1.41122067e-01 + 1.41051839e-01 1.40981716e-01 1.40911698e-01 1.40841783e-01 1.40771973e-01 + 1.40702266e-01 1.40632663e-01 1.40563163e-01 1.40493766e-01 1.40424471e-01 + 1.40355279e-01 1.40286189e-01 1.40217202e-01 1.40148315e-01 1.40079531e-01 + 1.40010847e-01 1.39942264e-01 1.39873782e-01 1.39805401e-01 1.39737119e-01 + 1.39668938e-01 1.39600856e-01 1.39532874e-01 1.39464991e-01 1.39397207e-01 + 1.39329522e-01 1.39261935e-01 1.39194446e-01 1.39127056e-01 1.39059763e-01 + 1.38992568e-01 1.38925470e-01 1.38858469e-01 1.38791565e-01 1.38724758e-01 + 1.38658047e-01 1.38591432e-01 1.38524913e-01 1.38458490e-01 1.38392162e-01 + 1.38325930e-01 1.38259792e-01 1.38193750e-01 1.38127801e-01 1.38061947e-01 + 1.37996188e-01 1.37930522e-01 1.37864950e-01 1.37799471e-01 1.37734085e-01 + 1.37668793e-01 1.37603593e-01 1.37538485e-01 1.37473471e-01 1.37408548e-01 + 1.37343717e-01 1.37278977e-01 1.37214330e-01 1.37149773e-01 1.37085308e-01 + 1.37020933e-01 1.36956649e-01 1.36892455e-01 1.36828351e-01 1.36764338e-01 + 1.36700414e-01 1.36636580e-01 1.36572835e-01 1.36509179e-01 1.36445612e-01 + 1.36382134e-01 1.36318745e-01 1.36255443e-01 1.36192230e-01 1.36129105e-01 + 1.36066067e-01 1.36003117e-01 1.35940254e-01 1.35877478e-01 1.35814789e-01 + 1.35752187e-01 1.35689672e-01 1.35627242e-01 1.35564899e-01 1.35502641e-01 + 1.35440470e-01 1.35378384e-01 1.35316383e-01 1.35254467e-01 1.35192636e-01 + 1.35130890e-01 1.35069228e-01 1.35007651e-01 1.34946158e-01 1.34884748e-01 + 1.34823423e-01 1.34762181e-01 1.34701022e-01 1.34639947e-01 1.34578955e-01 + 1.34518045e-01 1.34457218e-01 1.34396474e-01 1.34335812e-01 1.34275232e-01 + 1.34214733e-01 1.34154317e-01 1.34093982e-01 1.34033728e-01 1.33973556e-01 + 1.33913464e-01 1.33853453e-01 1.33793523e-01 1.33733673e-01 1.33673904e-01 + 1.33614214e-01 1.33554605e-01 1.33495075e-01 1.33435625e-01 1.33376254e-01 + 1.33316962e-01 1.33257749e-01 1.33198615e-01 1.33139560e-01 1.33080583e-01 + 1.33021685e-01 1.32962864e-01 1.32904122e-01 1.32845457e-01 1.32786870e-01 + 1.32728361e-01 1.32669928e-01 1.32611573e-01 1.32553295e-01 1.32495093e-01 + 1.32436968e-01 1.32378920e-01 1.32320948e-01 1.32263052e-01 1.32205232e-01 + 1.32147487e-01 1.32089818e-01 1.32032225e-01 1.31974707e-01 1.31917264e-01 + 1.31859896e-01 1.31802603e-01 1.31745384e-01 1.31688240e-01 1.31631170e-01 + 1.31574174e-01 1.31517252e-01 1.31460404e-01 1.31403630e-01 1.31346929e-01 + 1.31290301e-01 1.31233747e-01 1.31177266e-01 1.31120857e-01 1.31064522e-01 + 1.31008258e-01 1.30952068e-01 1.30895949e-01 1.30839903e-01 1.30783928e-01 + 1.30728025e-01 1.30672194e-01 1.30616435e-01 1.30560746e-01 1.30505129e-01 + 1.30449583e-01 1.30394108e-01 1.30338703e-01 1.30283369e-01 1.30228105e-01 + 1.30172912e-01 1.30117789e-01 1.30062736e-01 1.30007752e-01 1.29952839e-01 + 1.29897994e-01 1.29843219e-01 1.29788514e-01 1.29733877e-01 1.29679310e-01 + 1.29624811e-01 1.29570381e-01 1.29516019e-01 1.29461726e-01 1.29407501e-01 + 1.29353344e-01 1.29299255e-01 1.29245234e-01 1.29191280e-01 1.29137394e-01 + 1.29083575e-01 1.29029824e-01 1.28976140e-01 1.28922522e-01 1.28868972e-01 + 1.28815488e-01 1.28762070e-01 1.28708719e-01 1.28655435e-01 1.28602216e-01 + 1.28549063e-01 1.28495977e-01 1.28442955e-01 1.28390000e-01 1.28337110e-01 + 1.28284285e-01 1.28231526e-01 1.28178831e-01 1.28126202e-01 1.28073637e-01 + 1.28021137e-01 1.27968701e-01 1.27916330e-01 1.27864023e-01 1.27811780e-01 + 1.27759601e-01 1.27707486e-01 1.27655434e-01 1.27603447e-01 1.27551522e-01 + 1.27499661e-01 1.27447864e-01 1.27396129e-01 1.27344457e-01 1.27292848e-01 + 1.27241302e-01 1.27189818e-01 1.27138397e-01 1.27087038e-01 1.27035742e-01 + 1.26984507e-01 1.26933334e-01 1.26882223e-01 1.26831174e-01 1.26780187e-01 + 1.26729260e-01 1.26678396e-01 1.26627592e-01 1.26576849e-01 1.26526168e-01 + 1.26475547e-01 1.26424987e-01 1.26374487e-01 1.26324048e-01 1.26273670e-01 + 1.26223351e-01 1.26173093e-01 1.26122894e-01 1.26072756e-01 1.26022677e-01 + 1.25972658e-01 1.25922698e-01 1.25872798e-01 1.25822957e-01 1.25773176e-01 + 1.25723453e-01 1.25673789e-01 1.25624184e-01 1.25574638e-01 1.25525150e-01 + 1.25475721e-01 1.25426350e-01 1.25377037e-01 1.25327782e-01 1.25278586e-01 + 1.25229447e-01 1.25180366e-01 1.25131343e-01 1.25082377e-01 1.25033469e-01 + 1.24984618e-01 1.24935824e-01 1.24887088e-01 1.24838408e-01 1.24789785e-01 + 1.24741219e-01 1.24692710e-01 1.24644257e-01 1.24595861e-01 1.24547521e-01 + 1.24499237e-01 1.24451010e-01 1.24402838e-01 1.24354722e-01 1.24306662e-01 + 1.24258658e-01 1.24210709e-01 1.24162816e-01 1.24114978e-01 1.24067195e-01 + 1.24019468e-01 1.23971795e-01 1.23924178e-01 1.23876615e-01 1.23829107e-01 + 1.23781654e-01 1.23734255e-01 1.23686910e-01 1.23639620e-01 1.23592384e-01 + 1.23545202e-01 1.23498075e-01 1.23451001e-01 1.23403980e-01 1.23357014e-01 + 1.23310101e-01 1.23263242e-01 1.23216436e-01 1.23169683e-01 1.23122983e-01 + 1.23076337e-01 1.23029743e-01 1.22983202e-01 1.22936715e-01 1.22890279e-01 + 1.22843897e-01 1.22797567e-01 1.22751289e-01 1.22705063e-01 1.22658890e-01 + 1.22612769e-01 1.22566700e-01 1.22520682e-01 1.22474717e-01 1.22428803e-01 + 1.22382941e-01 1.22337130e-01 1.22291371e-01 1.22245663e-01 1.22200006e-01 + 1.22154400e-01 1.22108845e-01 1.22063342e-01 1.22017889e-01 1.21972487e-01 + 1.21927135e-01 1.21881834e-01 1.21836584e-01 1.21791383e-01 1.21746234e-01 + 1.21701134e-01 1.21656084e-01 1.21611085e-01 1.21566135e-01 1.21521235e-01 + 1.21476385e-01 1.21431584e-01 1.21386833e-01 1.21342131e-01 1.21297479e-01 + 1.21252876e-01 1.21208322e-01 1.21163817e-01 1.21119362e-01 1.21074955e-01 + 1.21030597e-01 1.20986287e-01 1.20942026e-01 1.20897814e-01 1.20853651e-01 + 1.20809535e-01 1.20765468e-01 1.20721449e-01 1.20677478e-01 1.20633555e-01 + 1.20589681e-01 1.20545854e-01 1.20502074e-01 1.20458343e-01 1.20414659e-01 + 1.20371022e-01 1.20327433e-01 1.20283891e-01 1.20240396e-01 1.20196949e-01 + 1.20153549e-01 1.20110195e-01 1.20066889e-01 1.20023629e-01 1.19980416e-01 + 1.19937250e-01 1.19894130e-01 1.19851056e-01 1.19808030e-01 1.19765049e-01 + 1.19722115e-01 1.19679226e-01 1.19636384e-01 1.19593588e-01 1.19550838e-01 + 1.19508133e-01 1.19465474e-01 1.19422861e-01 1.19380294e-01 1.19337772e-01 + 1.19295295e-01 1.19252863e-01 1.19210477e-01 1.19168136e-01 1.19125841e-01 + 1.19083590e-01 1.19041384e-01 1.18999223e-01 1.18957106e-01 1.18915035e-01 + 1.18873008e-01 1.18831025e-01 1.18789087e-01 1.18747194e-01 1.18705344e-01 + 1.18663539e-01 1.18621778e-01 1.18580061e-01 1.18538388e-01 1.18496759e-01 + 1.18455174e-01 1.18413632e-01 1.18372134e-01 1.18330680e-01 1.18289269e-01 + 1.18247902e-01 1.18206578e-01 1.18165298e-01 1.18124060e-01 1.18082866e-01 + 1.18041715e-01 1.18000607e-01 1.17959541e-01 1.17918519e-01 1.17877539e-01 + 1.17836602e-01 1.17795708e-01 1.17754856e-01 1.17714047e-01 1.17673280e-01 + 1.17632556e-01 1.17591873e-01 1.17551233e-01 1.17510635e-01 1.17470079e-01 + 1.17429565e-01 1.17389093e-01 1.17348662e-01 1.17308274e-01 1.17267927e-01 + 1.17227622e-01 1.17187358e-01 1.17147135e-01 1.17106955e-01 1.17066815e-01 + 1.17026717e-01 1.16986659e-01 1.16946643e-01 1.16906668e-01 1.16866734e-01 + 1.16826841e-01 1.16786988e-01 1.16747177e-01 1.16707406e-01 1.16667676e-01 + 1.16627986e-01 1.16588337e-01 1.16548728e-01 1.16509159e-01 1.16469631e-01 + 1.16430143e-01 1.16390695e-01 1.16351287e-01 1.16311919e-01 1.16272591e-01 + 1.16233303e-01 1.16194055e-01 1.16154846e-01 1.16115678e-01 1.16076548e-01 + 1.16037459e-01 1.15998408e-01 1.15959397e-01 1.15920426e-01 1.15881494e-01 + 1.15842601e-01 1.15803747e-01 1.15764932e-01 1.15726156e-01 1.15687419e-01 + 1.15648721e-01 1.15610062e-01 1.15571441e-01 1.15532859e-01 1.15494316e-01 + 1.15455812e-01 1.15417345e-01 1.15378918e-01 1.15340528e-01 1.15302177e-01 + 1.15263864e-01 1.15225590e-01 1.15187353e-01 1.15149155e-01 1.15110994e-01 + 1.15072871e-01 1.15034786e-01 1.14996739e-01 1.14958730e-01 1.14920759e-01 + 1.14882824e-01 1.14844928e-01 1.14807069e-01 1.14769247e-01 1.14731463e-01 + 1.14693716e-01 1.14656006e-01 1.14618334e-01 1.14580699e-01 1.14543100e-01 + 1.14505539e-01 1.14468014e-01 1.14430527e-01 1.14393076e-01 1.14355662e-01 + 1.14318284e-01 1.14280944e-01 1.14243640e-01 1.14206372e-01 1.14169141e-01 + 1.14131946e-01 1.14094787e-01 1.14057665e-01 1.14020579e-01 1.13983529e-01 + 1.13946515e-01 1.13909538e-01 1.13872596e-01 1.13835690e-01 1.13798820e-01 + 1.13761986e-01 1.13725188e-01 1.13688425e-01 1.13651698e-01 1.13615006e-01 + 1.13578350e-01 1.13541730e-01 1.13505144e-01 1.13468595e-01 1.13432080e-01 + 1.13395601e-01 1.13359156e-01 1.13322747e-01 1.13286373e-01 1.13250035e-01 + 1.13213730e-01 1.13177461e-01 1.13141227e-01 1.13105028e-01 1.13068863e-01 + 1.13032733e-01 1.12996637e-01 1.12960576e-01 1.12924550e-01 1.12888558e-01 + 1.12852600e-01 1.12816677e-01 1.12780788e-01 1.12744933e-01 1.12709112e-01 + 1.12673326e-01 1.12637574e-01 1.12601855e-01 1.12566171e-01 1.12530520e-01 + 1.12494904e-01 1.12459321e-01 1.12423772e-01 1.12388256e-01 1.12352774e-01 + 1.12317326e-01 1.12281911e-01 1.12246530e-01 1.12211182e-01 1.12175868e-01 + 1.12140587e-01 1.12105339e-01 1.12070125e-01 1.12034943e-01 1.11999795e-01 + 1.11964679e-01 1.11929597e-01 1.11894548e-01 1.11859532e-01 1.11824548e-01 + 1.11789597e-01 1.11754679e-01 1.11719794e-01 1.11684941e-01 1.11650121e-01 + 1.11615334e-01 1.11580579e-01 1.11545856e-01 1.11511166e-01 1.11476508e-01 + 1.11441883e-01 1.11407289e-01 1.11372728e-01 1.11338199e-01 1.11303703e-01 + 1.11269238e-01 1.11234805e-01 1.11200404e-01 1.11166035e-01 1.11131698e-01 + 1.11097393e-01 1.11063119e-01 1.11028877e-01 1.10994667e-01 1.10960489e-01 + 1.10926342e-01 1.10892226e-01 1.10858142e-01 1.10824089e-01 1.10790068e-01 + 1.10756078e-01 1.10722119e-01 1.10688192e-01 1.10654295e-01 1.10620430e-01 + 1.10586596e-01 1.10552793e-01 1.10519021e-01 1.10485279e-01 1.10451569e-01 + 1.10417890e-01 1.10384241e-01 1.10350623e-01 1.10317036e-01 1.10283479e-01 + 1.10249953e-01 1.10216458e-01 1.10182993e-01 1.10149558e-01 1.10116154e-01 + 1.10082780e-01 1.10049437e-01 1.10016124e-01 1.09982841e-01 1.09949588e-01 + 1.09916366e-01 1.09883174e-01 1.09850011e-01 1.09816879e-01 1.09783776e-01 + 1.09750704e-01 1.09717661e-01 1.09684648e-01 1.09651665e-01 1.09618712e-01 + 1.09585789e-01 1.09552895e-01 1.09520030e-01 1.09487196e-01 1.09454390e-01 + 1.09421615e-01 1.09388868e-01 1.09356151e-01 1.09323464e-01 1.09290805e-01 + 1.09258176e-01 1.09225576e-01 1.09193006e-01 1.09160464e-01 1.09127951e-01 + 1.09095468e-01 1.09063013e-01 1.09030588e-01 1.08998191e-01 1.08965824e-01 + 1.08933485e-01 1.08901174e-01 1.08868893e-01 1.08836640e-01 1.08804416e-01 + 1.08772220e-01 1.08740054e-01 1.08707915e-01 1.08675805e-01 1.08643724e-01 + 1.08611671e-01 1.08579646e-01 1.08547649e-01 1.08515681e-01 1.08483741e-01 + 1.08451829e-01 1.08419946e-01 1.08388090e-01 1.08356263e-01 1.08324463e-01 + 1.08292692e-01 1.08260948e-01 1.08229233e-01 1.08197545e-01 1.08165885e-01 + 1.08134253e-01 1.08102648e-01 1.08071072e-01 1.08039523e-01 1.08008001e-01 + 1.07976507e-01 1.07945041e-01 1.07913602e-01 1.07882191e-01 1.07850807e-01 + 1.07819450e-01 1.07788121e-01 1.07756819e-01 1.07725544e-01 1.07694296e-01 + 1.07663076e-01 1.07631883e-01 1.07600717e-01 1.07569578e-01 1.07538466e-01 + 1.07507381e-01 1.07476322e-01 1.07445291e-01 1.07414287e-01 1.07383309e-01 + 1.07352359e-01 1.07321435e-01 1.07290537e-01 1.07259667e-01 1.07228823e-01 + 1.07198005e-01 1.07167214e-01 1.07136450e-01 1.07105712e-01 1.07075001e-01 + 1.07044316e-01 1.07013657e-01 1.06983025e-01 1.06952419e-01 1.06921839e-01 + 1.06891286e-01 1.06860758e-01 1.06830257e-01 1.06799782e-01 1.06769333e-01 + 1.06738910e-01 1.06708513e-01 1.06678142e-01 1.06647796e-01 1.06617477e-01 + 1.06587184e-01 1.06556916e-01 1.06526674e-01 1.06496458e-01 1.06466268e-01 + 1.06436103e-01 1.06405964e-01 1.06375850e-01 1.06345762e-01 1.06315700e-01 + 1.06285663e-01 1.06255651e-01 1.06225665e-01 1.06195704e-01 1.06165769e-01 + 1.06135859e-01 1.06105974e-01 1.06076114e-01 1.06046280e-01 1.06016470e-01 + 1.05986686e-01 1.05956927e-01 1.05927193e-01 1.05897484e-01 1.05867800e-01 + 1.05838141e-01 1.05808507e-01 1.05778897e-01 1.05749313e-01 1.05719753e-01 + 1.05690218e-01 1.05660708e-01 1.05631223e-01 1.05601762e-01 1.05572326e-01 + 1.05542914e-01 1.05513528e-01 1.05484165e-01 1.05454827e-01 1.05425514e-01 + 1.05396225e-01 1.05366960e-01 1.05337720e-01 1.05308504e-01 1.05279312e-01 + 1.05250145e-01 1.05221002e-01 1.05191883e-01 1.05162788e-01 1.05133717e-01 + 1.05104671e-01 1.05075648e-01 1.05046650e-01 1.05017675e-01 1.04988725e-01 + 1.04959798e-01 1.04930896e-01 1.04902017e-01 1.04873162e-01 1.04844331e-01 + 1.04815523e-01 1.04786740e-01 1.04757980e-01 1.04729243e-01 1.04700531e-01 + 1.04671841e-01 1.04643176e-01 1.04614534e-01 1.04585916e-01 1.04557321e-01 + 1.04528749e-01 1.04500201e-01 1.04471676e-01 1.04443175e-01 1.04414697e-01 + 1.04386242e-01 1.04357810e-01 1.04329402e-01 1.04301017e-01 1.04272655e-01 + 1.04244316e-01 1.04216000e-01 1.04187707e-01 1.04159437e-01 1.04131191e-01 + 1.04102967e-01 1.04074766e-01 1.04046588e-01 1.04018433e-01 1.03990301e-01 + 1.03962192e-01 1.03934105e-01 1.03906041e-01 1.03878000e-01 1.03849982e-01 + 1.03821986e-01 1.03794013e-01 1.03766062e-01 1.03738134e-01 1.03710229e-01 + 1.03682346e-01 1.03654486e-01 1.03626648e-01 1.03598832e-01 1.03571039e-01 + 1.03543268e-01 1.03515520e-01 1.03487793e-01 1.03460089e-01 1.03432408e-01 + 1.03404748e-01 1.03377111e-01 1.03349496e-01 1.03321903e-01 1.03294332e-01 + 1.03266783e-01 1.03239256e-01 1.03211751e-01 1.03184268e-01 1.03156807e-01 + 1.03129368e-01 1.03101951e-01 1.03074556e-01 1.03047182e-01 1.03019831e-01 + 1.02992501e-01 1.02965192e-01 1.02937906e-01 1.02910641e-01 1.02883398e-01 + 1.02856177e-01 1.02828977e-01 1.02801798e-01 1.02774642e-01 1.02747506e-01 + 1.02720392e-01 1.02693300e-01 1.02666229e-01 1.02639180e-01 1.02612151e-01 + 1.02585145e-01 1.02558159e-01 1.02531195e-01 1.02504252e-01 1.02477330e-01 + 1.02450430e-01 1.02423550e-01 1.02396692e-01 1.02369855e-01 1.02343039e-01 + 1.02316244e-01 1.02289470e-01 1.02262717e-01 1.02235985e-01 1.02209274e-01 + 1.02182584e-01 1.02155915e-01 1.02129267e-01 1.02102639e-01 1.02076033e-01 + 1.02049447e-01 1.02022882e-01 1.01996338e-01 1.01969814e-01 1.01943311e-01 + 1.01916829e-01 1.01890367e-01 1.01863926e-01 1.01837505e-01 1.01811106e-01 + 1.01784726e-01 1.01758367e-01 1.01732029e-01 1.01705711e-01 1.01679413e-01 + 1.01653136e-01 1.01626879e-01 1.01600643e-01 1.01574426e-01 1.01548230e-01 + 1.01522055e-01 1.01495899e-01 1.01469764e-01 1.01443649e-01 1.01417554e-01 + 1.01391479e-01 1.01365425e-01 1.01339390e-01 1.01313376e-01 1.01287381e-01 + 1.01261406e-01 1.01235452e-01 1.01209517e-01 1.01183603e-01 1.01157708e-01 + 1.01131833e-01 1.01105978e-01 1.01080143e-01 1.01054327e-01 1.01028532e-01 + 1.01002756e-01 1.00976999e-01 1.00951263e-01 1.00925546e-01 1.00899849e-01 + 1.00874171e-01 1.00848513e-01 1.00822875e-01 1.00797256e-01 1.00771656e-01 + 1.00746077e-01 1.00720516e-01 1.00694975e-01 1.00669454e-01 1.00643952e-01 + 1.00618469e-01 1.00593005e-01 1.00567561e-01 1.00542136e-01 1.00516731e-01 + 1.00491345e-01 1.00465978e-01 1.00440630e-01 1.00415301e-01 1.00389992e-01 + 1.00364701e-01 1.00339430e-01 1.00314178e-01 1.00288944e-01 1.00263730e-01 + 1.00238535e-01 1.00213359e-01 1.00188202e-01 1.00163064e-01 1.00137944e-01 + 1.00112844e-01 1.00087762e-01 1.00062700e-01 1.00037656e-01 1.00012631e-01 + 9.99876242e-02 9.99626366e-02 9.99376677e-02 9.99127176e-02 9.98877861e-02 + 9.98628732e-02 9.98379790e-02 9.98131034e-02 9.97882464e-02 9.97634079e-02 + 9.97385880e-02 9.97137866e-02 9.96890037e-02 9.96642393e-02 9.96394933e-02 + 9.96147657e-02 9.95900565e-02 9.95653657e-02 9.95406933e-02 9.95160392e-02 + 9.94914034e-02 9.94667859e-02 9.94421867e-02 9.94176057e-02 9.93930429e-02 + 9.93684983e-02 9.93439719e-02 9.93194636e-02 9.92949735e-02 9.92705015e-02 + 9.92460476e-02 9.92216117e-02 9.91971939e-02 9.91727940e-02 9.91484122e-02 + 9.91240484e-02 9.90997025e-02 9.90753745e-02 9.90510645e-02 9.90267723e-02 + 9.90024980e-02 9.89782415e-02 9.89540029e-02 9.89297821e-02 9.89055790e-02 + 9.88813937e-02 9.88572261e-02 9.88330763e-02 9.88089441e-02 9.87848296e-02 + 9.87607327e-02 9.87366535e-02 9.87125919e-02 9.86885478e-02 9.86645213e-02 + 9.86405124e-02 9.86165209e-02 9.85925470e-02 9.85685906e-02 9.85446516e-02 + 9.85207300e-02 9.84968258e-02 9.84729391e-02 9.84490697e-02 9.84252176e-02 + 9.84013829e-02 9.83775655e-02 9.83537654e-02 9.83299825e-02 9.83062169e-02 + 9.82824685e-02 9.82587374e-02 9.82350233e-02 9.82113265e-02 9.81876468e-02 + 9.81639842e-02 9.81403387e-02 9.81167103e-02 9.80930990e-02 9.80695047e-02 + 9.80459274e-02 9.80223671e-02 9.79988238e-02 9.79752974e-02 9.79517880e-02 + 9.79282955e-02 9.79048199e-02 9.78813611e-02 9.78579192e-02 9.78344942e-02 + 9.78110859e-02 9.77876945e-02 9.77643198e-02 9.77409619e-02 9.77176207e-02 + 9.76942963e-02 9.76709885e-02 9.76476974e-02 9.76244230e-02 9.76011651e-02 + 9.75779239e-02 9.75546993e-02 9.75314913e-02 9.75082999e-02 9.74851249e-02 + 9.74619665e-02 9.74388246e-02 9.74156991e-02 9.73925901e-02 9.73694976e-02 + 9.73464215e-02 9.73233617e-02 9.73003184e-02 9.72772914e-02 9.72542807e-02 + 9.72312864e-02 9.72083084e-02 9.71853467e-02 9.71624012e-02 9.71394719e-02 + 9.71165589e-02 9.70936621e-02 9.70707815e-02 9.70479171e-02 9.70250688e-02 + 9.70022366e-02 9.69794205e-02 9.69566206e-02 9.69338367e-02 9.69110688e-02 + 9.68883170e-02 9.68655813e-02 9.68428615e-02 9.68201577e-02 9.67974698e-02 + 9.67747979e-02 9.67521419e-02 9.67295019e-02 9.67068777e-02 9.66842693e-02 + 9.66616769e-02 9.66391002e-02 9.66165394e-02 9.65939943e-02 9.65714651e-02 + 9.65489516e-02 9.65264538e-02 9.65039718e-02 9.64815054e-02 9.64590547e-02 + 9.64366197e-02 9.64142004e-02 9.63917967e-02 9.63694086e-02 9.63470360e-02 + 9.63246791e-02 9.63023377e-02 9.62800118e-02 9.62577015e-02 9.62354067e-02 + 9.62131273e-02 9.61908635e-02 9.61686150e-02 9.61463820e-02 9.61241644e-02 + 9.61019623e-02 9.60797754e-02 9.60576040e-02 9.60354479e-02 9.60133071e-02 + 9.59911816e-02 9.59690714e-02 9.59469765e-02 9.59248968e-02 9.59028324e-02 + 9.58807832e-02 9.58587492e-02 9.58367303e-02 9.58147267e-02 9.57927382e-02 + 9.57707648e-02 9.57488065e-02 9.57268633e-02 9.57049352e-02 9.56830222e-02 + 9.56611242e-02 9.56392413e-02 9.56173733e-02 9.55955204e-02 9.55736824e-02 + 9.55518594e-02 9.55300513e-02 9.55082582e-02 9.54864799e-02 9.54647166e-02 + 9.54429681e-02 9.54212345e-02 9.53995157e-02 9.53778117e-02 9.53561226e-02 + 9.53344482e-02 9.53127886e-02 9.52911438e-02 9.52695137e-02 9.52478984e-02 + 9.52262977e-02 9.52047117e-02 9.51831404e-02 9.51615838e-02 9.51400418e-02 + 9.51185144e-02 9.50970016e-02 9.50755034e-02 9.50540198e-02 9.50325508e-02 + 9.50110963e-02 9.49896563e-02 9.49682308e-02 9.49468198e-02 9.49254233e-02 + 9.49040412e-02 9.48826736e-02 9.48613204e-02 9.48399817e-02 9.48186573e-02 + 9.47973473e-02 9.47760516e-02 9.47547703e-02 9.47335034e-02 9.47122507e-02 + 9.46910123e-02 9.46697883e-02 9.46485784e-02 9.46273829e-02 9.46062015e-02 + 9.45850344e-02 9.45638815e-02 9.45427428e-02 9.45216182e-02 9.45005078e-02 + 9.44794116e-02 9.44583294e-02 9.44372614e-02 9.44162074e-02 9.43951676e-02 + 9.43741418e-02 9.43531300e-02 9.43321323e-02 9.43111485e-02 9.42901788e-02 + 9.42692231e-02 9.42482813e-02 9.42273534e-02 9.42064395e-02 9.41855396e-02 + 9.41646535e-02 9.41437813e-02 9.41229230e-02 9.41020785e-02 9.40812479e-02 + 9.40604311e-02 9.40396282e-02 9.40188390e-02 9.39980636e-02 9.39773020e-02 + 9.39565541e-02 9.39358200e-02 9.39150995e-02 9.38943928e-02 9.38736998e-02 + 9.38530204e-02 9.38323548e-02 9.38117027e-02 9.37910643e-02 9.37704395e-02 + 9.37498283e-02 9.37292307e-02 9.37086466e-02 9.36880762e-02 9.36675192e-02 + 9.36469758e-02 9.36264459e-02 9.36059295e-02 9.35854265e-02 9.35649371e-02 + 9.35444611e-02 9.35239985e-02 9.35035493e-02 9.34831136e-02 9.34626912e-02 + 9.34422823e-02 9.34218866e-02 9.34015044e-02 9.33811355e-02 9.33607798e-02 + 9.33404375e-02 9.33201085e-02 9.32997928e-02 9.32794903e-02 9.32592011e-02 + 9.32389251e-02 9.32186624e-02 9.31984128e-02 9.31781764e-02 9.31579532e-02 + 9.31377432e-02 9.31175463e-02 9.30973626e-02 9.30771919e-02 9.30570344e-02 + 9.30368899e-02 9.30167586e-02 9.29966403e-02 9.29765350e-02 9.29564428e-02 + 9.29363636e-02 9.29162974e-02 9.28962442e-02 9.28762040e-02 9.28561768e-02 + 9.28361624e-02 9.28161611e-02 9.27961726e-02 9.27761971e-02 9.27562344e-02 + 9.27362847e-02 9.27163478e-02 9.26964237e-02 9.26765125e-02 9.26566141e-02 + 9.26367286e-02 9.26168558e-02 9.25969958e-02 9.25771486e-02 9.25573141e-02 + 9.25374924e-02 9.25176834e-02 9.24978871e-02 9.24781036e-02 9.24583327e-02 + 9.24385745e-02 9.24188289e-02 9.23990960e-02 9.23793758e-02 9.23596681e-02 + 9.23399731e-02 9.23202907e-02 9.23006208e-02 9.22809635e-02 9.22613188e-02 + 9.22416866e-02 9.22220669e-02 9.22024597e-02 9.21828651e-02 9.21632829e-02 + 9.21437132e-02 9.21241560e-02 9.21046112e-02 9.20850788e-02 9.20655589e-02 + 9.20460514e-02 9.20265563e-02 9.20070735e-02 9.19876031e-02 9.19681451e-02 + 9.19486994e-02 9.19292661e-02 9.19098451e-02 9.18904363e-02 9.18710399e-02 + 9.18516557e-02 9.18322838e-02 9.18129242e-02 9.17935768e-02 9.17742416e-02 + 9.17549186e-02 9.17356079e-02 9.17163093e-02 9.16970229e-02 9.16777486e-02 + 9.16584865e-02 9.16392366e-02 9.16199987e-02 9.16007730e-02 9.15815594e-02 + 9.15623578e-02 9.15431684e-02 9.15239910e-02 9.15048256e-02 9.14856723e-02 + 9.14665310e-02 9.14474017e-02 9.14282844e-02 9.14091791e-02 9.13900857e-02 + 9.13710043e-02 9.13519349e-02 9.13328774e-02 9.13138318e-02 9.12947982e-02 + 9.12757764e-02 9.12567665e-02 9.12377685e-02 9.12187823e-02 9.11998080e-02 + 9.11808456e-02 9.11618949e-02 9.11429561e-02 9.11240290e-02 9.11051138e-02 + 9.10862103e-02 9.10673186e-02 9.10484386e-02 9.10295704e-02 9.10107139e-02 + 9.09918691e-02 9.09730360e-02 9.09542146e-02 9.09354049e-02 9.09166069e-02 + 9.08978205e-02 9.08790457e-02 9.08602826e-02 9.08415311e-02 9.08227911e-02 + 9.08040628e-02 9.07853461e-02 9.07666409e-02 9.07479473e-02 9.07292652e-02 + 9.07105947e-02 9.06919357e-02 9.06732882e-02 9.06546522e-02 9.06360277e-02 + 9.06174146e-02 9.05988131e-02 9.05802229e-02 9.05616442e-02 9.05430770e-02 + 9.05245211e-02 9.05059767e-02 9.04874436e-02 9.04689219e-02 9.04504116e-02 + 9.04319127e-02 9.04134251e-02 9.03949488e-02 9.03764839e-02 9.03580303e-02 + 9.03395879e-02 9.03211569e-02 9.03027371e-02 9.02843286e-02 9.02659313e-02 + 9.02475453e-02 9.02291706e-02 9.02108070e-02 9.01924546e-02 9.01741135e-02 + 9.01557835e-02 9.01374647e-02 9.01191571e-02 9.01008606e-02 9.00825752e-02 + 9.00643010e-02 9.00460379e-02 9.00277859e-02 9.00095450e-02 8.99913152e-02 + 8.99730965e-02 8.99548888e-02 8.99366921e-02 8.99185065e-02 8.99003320e-02 + 8.98821684e-02 8.98640159e-02 8.98458743e-02 8.98277437e-02 8.98096241e-02 + 8.97915155e-02 8.97734178e-02 8.97553311e-02 8.97372552e-02 8.97191903e-02 + 8.97011363e-02 8.96830932e-02 8.96650610e-02 8.96470396e-02 8.96290291e-02 + 8.96110295e-02 8.95930407e-02 8.95750627e-02 8.95570956e-02 8.95391392e-02 + 8.95211937e-02 8.95032589e-02 8.94853349e-02 8.94674217e-02 8.94495192e-02 + 8.94316275e-02 8.94137465e-02 8.93958762e-02 8.93780167e-02 8.93601678e-02 + 8.93423296e-02 8.93245021e-02 8.93066853e-02 8.92888791e-02 8.92710836e-02 + 8.92532987e-02 8.92355244e-02 8.92177608e-02 8.92000077e-02 8.91822653e-02 + 8.91645334e-02 8.91468121e-02 8.91291014e-02 8.91114012e-02 8.90937115e-02 + 8.90760324e-02 8.90583638e-02 8.90407057e-02 8.90230582e-02 8.90054211e-02 + 8.89877945e-02 8.89701783e-02 8.89525726e-02 8.89349774e-02 8.89173926e-02 + 8.88998182e-02 8.88822542e-02 8.88647007e-02 8.88471575e-02 8.88296247e-02 + 8.88121023e-02 8.87945903e-02 8.87770886e-02 8.87595973e-02 8.87421163e-02 + 8.87246456e-02 8.87071853e-02 8.86897352e-02 8.86722954e-02 8.86548660e-02 + 8.86374468e-02 8.86200378e-02 8.86026391e-02 8.85852507e-02 8.85678725e-02 + 8.85505045e-02 8.85331467e-02 8.85157991e-02 8.84984618e-02 8.84811346e-02 + 8.84638176e-02 8.84465107e-02 8.84292140e-02 8.84119274e-02 8.83946510e-02 + 8.83773847e-02 8.83601285e-02 8.83428825e-02 8.83256465e-02 8.83084206e-02 + 8.82912047e-02 8.82739990e-02 8.82568033e-02 8.82396176e-02 8.82224420e-02 + 8.82052764e-02 8.81881208e-02 8.81709752e-02 8.81538396e-02 8.81367140e-02 + 8.81195984e-02 8.81024927e-02 8.80853970e-02 8.80683113e-02 8.80512355e-02 + 8.80341696e-02 8.80171137e-02 8.80000676e-02 8.79830314e-02 8.79660052e-02 + 8.79489888e-02 8.79319823e-02 8.79149857e-02 8.78979989e-02 8.78810219e-02 + 8.78640548e-02 8.78470975e-02 8.78301500e-02 8.78132123e-02 8.77962845e-02 + 8.77793664e-02 8.77624580e-02 8.77455595e-02 8.77286707e-02 8.77117916e-02 + 8.76949223e-02 8.76780628e-02 8.76612129e-02 8.76443728e-02 8.76275423e-02 + 8.76107216e-02 8.75939105e-02 8.75771091e-02 8.75603174e-02 8.75435353e-02 + 8.75267629e-02 8.75100001e-02 8.74932469e-02 8.74765033e-02 8.74597694e-02 + 8.74430451e-02 8.74263303e-02 8.74096251e-02 8.73929296e-02 8.73762435e-02 + 8.73595670e-02 8.73429001e-02 8.73262427e-02 8.73095948e-02 8.72929565e-02 + 8.72763276e-02 8.72597083e-02 8.72430984e-02 8.72264981e-02 8.72099072e-02 + 8.71933257e-02 8.71767537e-02 8.71601912e-02 8.71436381e-02 8.71270944e-02 + 8.71105602e-02 8.70940353e-02 8.70775199e-02 8.70610138e-02 8.70445172e-02 + 8.70280299e-02 8.70115519e-02 8.69950834e-02 8.69786241e-02 8.69621742e-02 + 8.69457337e-02 8.69293024e-02 8.69128805e-02 8.68964679e-02 8.68800646e-02 + 8.68636705e-02 8.68472857e-02 8.68309103e-02 8.68145440e-02 8.67981870e-02 + 8.67818393e-02 8.67655008e-02 8.67491715e-02 8.67328514e-02 8.67165406e-02 + 8.67002389e-02 8.66839464e-02 8.66676631e-02 8.66513890e-02 8.66351240e-02 + 8.66188682e-02 8.66026216e-02 8.65863841e-02 8.65701557e-02 8.65539364e-02 + 8.65377263e-02 8.65215252e-02 8.65053333e-02 8.64891504e-02 8.64729766e-02 + 8.64568119e-02 8.64406563e-02 8.64245097e-02 8.64083721e-02 8.63922436e-02 + 8.63761241e-02 8.63600136e-02 8.63439122e-02 8.63278197e-02 8.63117363e-02 + 8.62956618e-02 8.62795963e-02 8.62635398e-02 8.62474922e-02 8.62314536e-02 + 8.62154239e-02 8.61994032e-02 8.61833914e-02 8.61673885e-02 8.61513945e-02 + 8.61354094e-02 8.61194332e-02 8.61034659e-02 8.60875075e-02 8.60715580e-02 + 8.60556173e-02 8.60396855e-02 8.60237625e-02 8.60078483e-02 8.59919430e-02 + 8.59760465e-02 8.59601588e-02 8.59442800e-02 8.59284099e-02 8.59125486e-02 + 8.58966961e-02 8.58808523e-02 8.58650173e-02 8.58491911e-02 8.58333736e-02 + 8.58175649e-02 8.58017649e-02 8.57859736e-02 8.57701911e-02 8.57544172e-02 + 8.57386520e-02 8.57228956e-02 8.57071478e-02 8.56914087e-02 8.56756782e-02 + 8.56599565e-02 8.56442433e-02 8.56285389e-02 8.56128430e-02 8.55971558e-02 + 8.55814772e-02 8.55658072e-02 8.55501458e-02 8.55344930e-02 8.55188488e-02 + 8.55032132e-02 8.54875862e-02 8.54719677e-02 8.54563578e-02 8.54407564e-02 + 8.54251636e-02 8.54095793e-02 8.53940035e-02 8.53784363e-02 8.53628775e-02 + 8.53473273e-02 8.53317855e-02 8.53162523e-02 8.53007275e-02 8.52852112e-02 + 8.52697034e-02 8.52542040e-02 8.52387130e-02 8.52232305e-02 8.52077565e-02 + 8.51922909e-02 8.51768336e-02 8.51613848e-02 8.51459444e-02 8.51305124e-02 + 8.51150888e-02 8.50996736e-02 8.50842667e-02 8.50688682e-02 8.50534780e-02 + 8.50380963e-02 8.50227228e-02 8.50073577e-02 8.49920009e-02 8.49766524e-02 + 8.49613123e-02 8.49459804e-02 8.49306569e-02 8.49153416e-02 8.49000346e-02 + 8.48847359e-02 8.48694455e-02 8.48541633e-02 8.48388893e-02 8.48236237e-02 + 8.48083662e-02 8.47931170e-02 8.47778760e-02 8.47626432e-02 8.47474187e-02 + 8.47322023e-02 8.47169941e-02 8.47017941e-02 8.46866023e-02 8.46714187e-02 + 8.46562432e-02 8.46410759e-02 8.46259167e-02 8.46107657e-02 8.45956228e-02 + 8.45804880e-02 8.45653614e-02 8.45502428e-02 8.45351324e-02 8.45200301e-02 + 8.45049358e-02 8.44898497e-02 8.44747716e-02 8.44597016e-02 8.44446397e-02 + 8.44295858e-02 8.44145399e-02 8.43995021e-02 8.43844724e-02 8.43694506e-02 + 8.43544369e-02 8.43394312e-02 8.43244335e-02 8.43094438e-02 8.42944621e-02 + 8.42794883e-02 8.42645226e-02 8.42495648e-02 8.42346150e-02 8.42196731e-02 + 8.42047392e-02 8.41898132e-02 8.41748952e-02 8.41599851e-02 8.41450829e-02 + 8.41301886e-02 8.41153022e-02 8.41004238e-02 8.40855532e-02 8.40706905e-02 + 8.40558357e-02 8.40409887e-02 8.40261496e-02 8.40113184e-02 8.39964950e-02 + 8.39816795e-02 8.39668718e-02 8.39520719e-02 8.39372799e-02 8.39224957e-02 + 8.39077193e-02 8.38929507e-02 8.38781898e-02 8.38634368e-02 8.38486916e-02 + 8.38339541e-02 8.38192244e-02 8.38045025e-02 8.37897883e-02 8.37750818e-02 + 8.37603831e-02 8.37456922e-02 8.37310089e-02 8.37163334e-02 8.37016656e-02 + 8.36870055e-02 8.36723531e-02 8.36577084e-02 8.36430714e-02 8.36284421e-02 + 8.36138204e-02 8.35992064e-02 8.35846001e-02 8.35700014e-02 8.35554104e-02 + 8.35408270e-02 8.35262512e-02 8.35116831e-02 8.34971226e-02 8.34825697e-02 + 8.34680244e-02 8.34534867e-02 8.34389566e-02 8.34244341e-02 8.34099191e-02 + 8.33954118e-02 8.33809120e-02 8.33664197e-02 8.33519351e-02 8.33374579e-02 + 8.33229883e-02 8.33085263e-02 8.32940718e-02 8.32796248e-02 8.32651853e-02 + 8.32507533e-02 8.32363288e-02 8.32219118e-02 8.32075023e-02 8.31931003e-02 + 8.31787058e-02 8.31643187e-02 8.31499391e-02 8.31355669e-02 8.31212022e-02 + 8.31068450e-02 8.30924951e-02 8.30781528e-02 8.30638178e-02 8.30494902e-02 + 8.30351701e-02 8.30208574e-02 8.30065520e-02 8.29922541e-02 8.29779635e-02 + 8.29636804e-02 8.29494046e-02 8.29351361e-02 8.29208751e-02 8.29066213e-02 + 8.28923750e-02 8.28781359e-02 8.28639042e-02 8.28496799e-02 8.28354628e-02 + 8.28212531e-02 8.28070507e-02 8.27928556e-02 8.27786678e-02 8.27644872e-02 + 8.27503140e-02 8.27361480e-02 8.27219893e-02 8.27078379e-02 8.26936938e-02 + 8.26795569e-02 8.26654272e-02 8.26513048e-02 8.26371896e-02 8.26230816e-02 + 8.26089809e-02 8.25948874e-02 8.25808011e-02 8.25667220e-02 8.25526501e-02 + 8.25385854e-02 8.25245279e-02 8.25104775e-02 8.24964344e-02 8.24823984e-02 + 8.24683695e-02 8.24543479e-02 8.24403333e-02 8.24263259e-02 8.24123257e-02 + 8.23983326e-02 8.23843466e-02 8.23703677e-02 8.23563960e-02 8.23424313e-02 + 8.23284737e-02 8.23145233e-02 8.23005799e-02 8.22866436e-02 8.22727144e-02 + 8.22587923e-02 8.22448772e-02 8.22309692e-02 8.22170683e-02 8.22031744e-02 + 8.21892875e-02 8.21754077e-02 8.21615349e-02 8.21476691e-02 8.21338103e-02 + 8.21199586e-02 8.21061138e-02 8.20922761e-02 8.20784453e-02 8.20646216e-02 + 8.20508048e-02 8.20369950e-02 8.20231922e-02 8.20093963e-02 8.19956074e-02 + 8.19818254e-02 8.19680504e-02 8.19542823e-02 8.19405212e-02 8.19267670e-02 + 8.19130197e-02 8.18992794e-02 8.18855459e-02 8.18718194e-02 8.18580997e-02 + 8.18443870e-02 8.18306811e-02 8.18169822e-02 8.18032901e-02 8.17896048e-02 + 8.17759265e-02 8.17622550e-02 8.17485903e-02 8.17349326e-02 8.17212816e-02 + 8.17076375e-02 8.16940002e-02 8.16803697e-02 8.16667461e-02 8.16531293e-02 + 8.16395193e-02 8.16259161e-02 8.16123197e-02 8.15987300e-02 8.15851472e-02 + 8.15715712e-02 8.15580019e-02 8.15444394e-02 8.15308836e-02 8.15173346e-02 + 8.15037924e-02 8.14902569e-02 8.14767282e-02 8.14632062e-02 8.14496909e-02 + 8.14361823e-02 8.14226805e-02 8.14091854e-02 8.13956970e-02 8.13822153e-02 + 8.13687402e-02 8.13552719e-02 8.13418103e-02 8.13283553e-02 8.13149070e-02 + 8.13014654e-02 8.12880305e-02 8.12746022e-02 8.12611805e-02 8.12477656e-02 + 8.12343572e-02 8.12209555e-02 8.12075604e-02 8.11941719e-02 8.11807901e-02 + 8.11674149e-02 8.11540463e-02 8.11406843e-02 8.11273288e-02 8.11139800e-02 + 8.11006378e-02 8.10873021e-02 8.10739731e-02 8.10606506e-02 8.10473346e-02 + 8.10340252e-02 8.10207224e-02 8.10074261e-02 8.09941364e-02 8.09808532e-02 + 8.09675765e-02 8.09543064e-02 8.09410428e-02 8.09277857e-02 8.09145351e-02 + 8.09012911e-02 8.08880535e-02 8.08748224e-02 8.08615978e-02 8.08483797e-02 + 8.08351681e-02 8.08219630e-02 8.08087643e-02 8.07955721e-02 8.07823863e-02 + 8.07692070e-02 8.07560342e-02 8.07428678e-02 8.07297078e-02 8.07165542e-02 + 8.07034071e-02 8.06902664e-02 8.06771322e-02 8.06640043e-02 8.06508829e-02 + 8.06377678e-02 8.06246592e-02 8.06115569e-02 8.05984610e-02 8.05853715e-02 + 8.05722884e-02 8.05592116e-02 8.05461412e-02 8.05330772e-02 8.05200195e-02 + 8.05069682e-02 8.04939232e-02 8.04808846e-02 8.04678523e-02 8.04548263e-02 + 8.04418066e-02 8.04287933e-02 8.04157863e-02 8.04027856e-02 8.03897912e-02 + 8.03768031e-02 8.03638212e-02 8.03508457e-02 8.03378765e-02 8.03249135e-02 + 8.03119568e-02 8.02990064e-02 8.02860622e-02 8.02731243e-02 8.02601926e-02 + 8.02472672e-02 8.02343481e-02 8.02214351e-02 8.02085284e-02 8.01956280e-02 + 8.01827337e-02 8.01698457e-02 8.01569639e-02 8.01440883e-02 8.01312189e-02 + 8.01183557e-02 8.01054986e-02 8.00926478e-02 8.00798032e-02 8.00669647e-02 + 8.00541324e-02 8.00413063e-02 8.00284863e-02 8.00156725e-02 8.00028649e-02 + 7.99900634e-02 7.99772680e-02 7.99644788e-02 7.99516957e-02 7.99389187e-02 + 7.99261479e-02 7.99133832e-02 7.99006246e-02 7.98878721e-02 7.98751257e-02 + 7.98623854e-02 7.98496512e-02 7.98369231e-02 7.98242011e-02 7.98114851e-02 + 7.97987753e-02 7.97860715e-02 7.97733737e-02 7.97606821e-02 7.97479965e-02 + 7.97353169e-02 7.97226434e-02 7.97099759e-02 7.96973145e-02 7.96846590e-02 + 7.96720097e-02 7.96593663e-02 7.96467290e-02 7.96340976e-02 7.96214723e-02 + 7.96088530e-02 7.95962397e-02 7.95836323e-02 7.95710310e-02 7.95584356e-02 + 7.95458463e-02 7.95332629e-02 7.95206854e-02 7.95081140e-02 7.94955485e-02 + 7.94829889e-02 7.94704353e-02 7.94578877e-02 7.94453459e-02 7.94328102e-02 + 7.94202803e-02 7.94077564e-02 7.93952384e-02 7.93827263e-02 7.93702202e-02 + 7.93577199e-02 7.93452256e-02 7.93327371e-02 7.93202546e-02 7.93077779e-02 + 7.92953071e-02 7.92828423e-02 7.92703832e-02 7.92579301e-02 7.92454828e-02 + 7.92330414e-02 7.92206058e-02 7.92081761e-02 7.91957523e-02 7.91833343e-02 + 7.91709221e-02 7.91585157e-02 7.91461152e-02 7.91337206e-02 7.91213317e-02 + 7.91089486e-02 7.90965714e-02 7.90842000e-02 7.90718344e-02 7.90594746e-02 + 7.90471205e-02 7.90347723e-02 7.90224298e-02 7.90100932e-02 7.89977623e-02 + 7.89854371e-02 7.89731178e-02 7.89608042e-02 7.89484964e-02 7.89361943e-02 + 7.89238979e-02 7.89116073e-02 7.88993225e-02 7.88870434e-02 7.88747700e-02 + 7.88625023e-02 7.88502404e-02 7.88379842e-02 7.88257337e-02 7.88134889e-02 + 7.88012498e-02 7.87890164e-02 7.87767887e-02 7.87645667e-02 7.87523504e-02 + 7.87401398e-02 7.87279348e-02 7.87157355e-02 7.87035419e-02 7.86913540e-02 + 7.86791717e-02 7.86669951e-02 7.86548241e-02 7.86426588e-02 7.86304991e-02 + 7.86183450e-02 7.86061966e-02 7.85940538e-02 7.85819167e-02 7.85697851e-02 + 7.85576592e-02 7.85455389e-02 7.85334242e-02 7.85213151e-02 7.85092116e-02 + 7.84971137e-02 7.84850214e-02 7.84729347e-02 7.84608535e-02 7.84487780e-02 + 7.84367080e-02 7.84246436e-02 7.84125847e-02 7.84005314e-02 7.83884837e-02 + 7.83764415e-02 7.83644048e-02 7.83523737e-02 7.83403482e-02 7.83283282e-02 + 7.83163137e-02 7.83043047e-02 7.82923013e-02 7.82803034e-02 7.82683110e-02 + 7.82563241e-02 7.82443427e-02 7.82323668e-02 7.82203964e-02 7.82084315e-02 + 7.81964721e-02 7.81845182e-02 7.81725697e-02 7.81606268e-02 7.81486893e-02 + 7.81367572e-02 7.81248307e-02 7.81129096e-02 7.81009939e-02 7.80890837e-02 + 7.80771790e-02 7.80652797e-02 7.80533858e-02 7.80414974e-02 7.80296144e-02 + 7.80177368e-02 7.80058646e-02 7.79939979e-02 7.79821366e-02 7.79702807e-02 + 7.79584302e-02 7.79465851e-02 7.79347454e-02 7.79229111e-02 7.79110821e-02 + 7.78992586e-02 7.78874404e-02 7.78756277e-02 7.78638202e-02 7.78520182e-02 + 7.78402215e-02 7.78284302e-02 7.78166443e-02 7.78048637e-02 7.77930884e-02 + 7.77813185e-02 7.77695539e-02 7.77577947e-02 7.77460408e-02 7.77342922e-02 + 7.77225490e-02 7.77108111e-02 7.76990785e-02 7.76873512e-02 7.76756292e-02 + 7.76639125e-02 7.76522011e-02 7.76404950e-02 7.76287942e-02 7.76170987e-02 + 7.76054085e-02 7.75937236e-02 7.75820439e-02 7.75703695e-02 7.75587004e-02 + 7.75470365e-02 7.75353780e-02 7.75237246e-02 7.75120765e-02 7.75004337e-02 + 7.74887961e-02 7.74771637e-02 7.74655366e-02 7.74539147e-02 7.74422981e-02 + 7.74306867e-02 7.74190805e-02 7.74074795e-02 7.73958837e-02 7.73842931e-02 + 7.73727078e-02 7.73611276e-02 7.73495527e-02 7.73379829e-02 7.73264183e-02 + 7.73148589e-02 7.73033047e-02 7.72917557e-02 7.72802118e-02 7.72686732e-02 + 7.72571396e-02 7.72456113e-02 7.72340881e-02 7.72225701e-02 7.72110572e-02 + 7.71995494e-02 7.71880468e-02 7.71765494e-02 7.71650571e-02 7.71535699e-02 + 7.71420878e-02 7.71306109e-02 7.71191391e-02 7.71076724e-02 7.70962108e-02 + 7.70847543e-02 7.70733030e-02 7.70618567e-02 7.70504155e-02 7.70389795e-02 + 7.70275485e-02 7.70161226e-02 7.70047018e-02 7.69932860e-02 7.69818754e-02 + 7.69704698e-02 7.69590693e-02 7.69476738e-02 7.69362834e-02 7.69248981e-02 + 7.69135178e-02 7.69021426e-02 7.68907724e-02 7.68794073e-02 7.68680472e-02 + 7.68566921e-02 7.68453420e-02 7.68339970e-02 7.68226570e-02 7.68113221e-02 + 7.67999921e-02 7.67886672e-02 7.67773472e-02 7.67660323e-02 7.67547224e-02 + 7.67434174e-02 7.67321175e-02 7.67208226e-02 7.67095326e-02 7.66982476e-02 + 7.66869676e-02 7.66756926e-02 7.66644225e-02 7.66531574e-02 7.66418973e-02 + 7.66306422e-02 7.66193920e-02 7.66081467e-02 7.65969064e-02 7.65856711e-02 + 7.65744407e-02 7.65632152e-02 7.65519946e-02 7.65407790e-02 7.65295684e-02 + 7.65183626e-02 7.65071618e-02 7.64959659e-02 7.64847749e-02 7.64735888e-02 + 7.64624076e-02 7.64512313e-02 7.64400599e-02 7.64288935e-02 7.64177319e-02 + 7.64065752e-02 7.63954233e-02 7.63842764e-02 7.63731343e-02 7.63619972e-02 + 7.63508648e-02 7.63397374e-02 7.63286148e-02 7.63174971e-02 7.63063842e-02 + 7.62952762e-02 7.62841730e-02 7.62730747e-02 7.62619813e-02 7.62508926e-02 + 7.62398088e-02 7.62287298e-02 7.62176557e-02 7.62065864e-02 7.61955219e-02 + 7.61844622e-02 7.61734074e-02 7.61623573e-02 7.61513121e-02 7.61402716e-02 + 7.61292360e-02 7.61182052e-02 7.61071791e-02 7.60961579e-02 7.60851414e-02 + 7.60741297e-02 7.60631228e-02 7.60521207e-02 7.60411233e-02 7.60301307e-02 + 7.60191429e-02 7.60081598e-02 7.59971815e-02 7.59862080e-02 7.59752392e-02 + 7.59642751e-02 7.59533158e-02 7.59423613e-02 7.59314115e-02 7.59204664e-02 + 7.59095260e-02 7.58985904e-02 7.58876595e-02 7.58767333e-02 7.58658119e-02 + 7.58548951e-02 7.58439831e-02 7.58330758e-02 7.58221731e-02 7.58112752e-02 + 7.58003820e-02 7.57894935e-02 7.57786096e-02 7.57677305e-02 7.57568560e-02 + 7.57459862e-02 7.57351211e-02 7.57242607e-02 7.57134049e-02 7.57025538e-02 + 7.56917074e-02 7.56808656e-02 7.56700285e-02 7.56591961e-02 7.56483683e-02 + 7.56375451e-02 7.56267266e-02 7.56159127e-02 7.56051035e-02 7.55942989e-02 + 7.55834989e-02 7.55727035e-02 7.55619128e-02 7.55511267e-02 7.55403452e-02 + 7.55295684e-02 7.55187961e-02 7.55080285e-02 7.54972654e-02 7.54865070e-02 + 7.54757531e-02 7.54650039e-02 7.54542592e-02 7.54435192e-02 7.54327837e-02 + 7.54220528e-02 7.54113264e-02 7.54006047e-02 7.53898875e-02 7.53791749e-02 + 7.53684669e-02 7.53577634e-02 7.53470644e-02 7.53363701e-02 7.53256803e-02 + 7.53149950e-02 7.53043143e-02 7.52936381e-02 7.52829665e-02 7.52722994e-02 + 7.52616368e-02 7.52509787e-02 7.52403252e-02 7.52296762e-02 7.52190318e-02 + 7.52083918e-02 7.51977564e-02 7.51871255e-02 7.51764990e-02 7.51658771e-02 + 7.51552597e-02 7.51446468e-02 7.51340384e-02 7.51234344e-02 7.51128350e-02 + 7.51022400e-02 7.50916496e-02 7.50810636e-02 7.50704821e-02 7.50599050e-02 + 7.50493324e-02 7.50387643e-02 7.50282007e-02 7.50176415e-02 7.50070868e-02 + 7.49965365e-02 7.49859907e-02 7.49754493e-02 7.49649123e-02 7.49543799e-02 + 7.49438518e-02 7.49333282e-02 7.49228090e-02 7.49122942e-02 7.49017839e-02 + 7.48912780e-02 7.48807765e-02 7.48702794e-02 7.48597868e-02 7.48492985e-02 + 7.48388147e-02 7.48283352e-02 7.48178602e-02 7.48073895e-02 7.47969233e-02 + 7.47864614e-02 7.47760040e-02 7.47655509e-02 7.47551022e-02 7.47446579e-02 + 7.47342179e-02 7.47237824e-02 7.47133512e-02 7.47029243e-02 7.46925019e-02 + 7.46820838e-02 7.46716700e-02 7.46612606e-02 7.46508556e-02 7.46404549e-02 + 7.46300586e-02 7.46196666e-02 7.46092789e-02 7.45988956e-02 7.45885166e-02 + 7.45781419e-02 7.45677716e-02 7.45574056e-02 7.45470439e-02 7.45366865e-02 + 7.45263335e-02 7.45159847e-02 7.45056403e-02 7.44953002e-02 7.44849644e-02 + 7.44746329e-02 7.44643056e-02 7.44539827e-02 7.44436641e-02 7.44333497e-02 + 7.44230397e-02 7.44127339e-02 7.44024324e-02 7.43921352e-02 7.43818423e-02 + 7.43715536e-02 7.43612692e-02 7.43509890e-02 7.43407132e-02 7.43304416e-02 + 7.43201742e-02 7.43099111e-02 7.42996522e-02 7.42893976e-02 7.42791473e-02 + 7.42689011e-02 7.42586593e-02 7.42484216e-02 7.42381882e-02 7.42279590e-02 + 7.42177341e-02 7.42075133e-02 7.41972968e-02 7.41870845e-02 7.41768765e-02 + 7.41666726e-02 7.41564729e-02 7.41462775e-02 7.41360863e-02 7.41258992e-02 + 7.41157164e-02 7.41055377e-02 7.40953633e-02 7.40851930e-02 7.40750269e-02 + 7.40648650e-02 7.40547073e-02 7.40445538e-02 7.40344044e-02 7.40242592e-02 + 7.40141182e-02 7.40039814e-02 7.39938487e-02 7.39837202e-02 7.39735958e-02 + 7.39634756e-02 7.39533595e-02 7.39432476e-02 7.39331398e-02 7.39230362e-02 + 7.39129367e-02 7.39028414e-02 7.38927502e-02 7.38826631e-02 7.38725802e-02 + 7.38625014e-02 7.38524267e-02 7.38423561e-02 7.38322896e-02 7.38222273e-02 + 7.38121691e-02 7.38021150e-02 7.37920650e-02 7.37820191e-02 7.37719773e-02 + 7.37619396e-02 7.37519060e-02 7.37418765e-02 7.37318510e-02 7.37218297e-02 + 7.37118125e-02 7.37017993e-02 7.36917902e-02 7.36817852e-02 7.36717843e-02 + 7.36617874e-02 7.36517946e-02 7.36418059e-02 7.36318212e-02 7.36218406e-02 + 7.36118641e-02 7.36018916e-02 7.35919231e-02 7.35819587e-02 7.35719984e-02 + 7.35620421e-02 7.35520898e-02 7.35421416e-02 7.35321974e-02 7.35222572e-02 + 7.35123211e-02 7.35023890e-02 7.34924610e-02 7.34825369e-02 7.34726169e-02 + 7.34627009e-02 7.34527889e-02 7.34428809e-02 7.34329769e-02 7.34230769e-02 + 7.34131809e-02 7.34032890e-02 7.33934010e-02 7.33835170e-02 7.33736370e-02 + 7.33637610e-02 7.33538890e-02 7.33440210e-02 7.33341569e-02 7.33242969e-02 + 7.33144408e-02 7.33045886e-02 7.32947405e-02 7.32848963e-02 7.32750561e-02 + 7.32652199e-02 7.32553876e-02 7.32455592e-02 7.32357348e-02 7.32259144e-02 + 7.32160979e-02 7.32062854e-02 7.31964768e-02 7.31866722e-02 7.31768715e-02 + 7.31670747e-02 7.31572819e-02 7.31474930e-02 7.31377080e-02 7.31279269e-02 + 7.31181498e-02 7.31083766e-02 7.30986073e-02 7.30888419e-02 7.30790805e-02 + 7.30693229e-02 7.30595693e-02 7.30498195e-02 7.30400737e-02 7.30303318e-02 + 7.30205937e-02 7.30108596e-02 7.30011293e-02 7.29914030e-02 7.29816805e-02 + 7.29719619e-02 7.29622472e-02 7.29525364e-02 7.29428294e-02 7.29331263e-02 + 7.29234271e-02 7.29137318e-02 7.29040403e-02 7.28943527e-02 7.28846689e-02 + 7.28749890e-02 7.28653130e-02 7.28556408e-02 7.28459725e-02 7.28363080e-02 + 7.28266473e-02 7.28169905e-02 7.28073376e-02 7.27976885e-02 7.27880432e-02 + 7.27784017e-02 7.27687641e-02 7.27591303e-02 7.27495003e-02 7.27398742e-02 + 7.27302519e-02 7.27206334e-02 7.27110187e-02 7.27014078e-02 7.26918007e-02 + 7.26821975e-02 7.26725980e-02 7.26630023e-02 7.26534105e-02 7.26438224e-02 + 7.26342382e-02 7.26246577e-02 7.26150810e-02 7.26055081e-02 7.25959390e-02 + 7.25863737e-02 7.25768121e-02 7.25672544e-02 7.25577004e-02 7.25481502e-02 + 7.25386037e-02 7.25290610e-02 7.25195221e-02 7.25099870e-02 7.25004556e-02 + 7.24909279e-02 7.24814040e-02 7.24718839e-02 7.24623675e-02 7.24528549e-02 + 7.24433460e-02 7.24338409e-02 7.24243395e-02 7.24148418e-02 7.24053479e-02 + 7.23958577e-02 7.23863712e-02 7.23768885e-02 7.23674095e-02 7.23579342e-02 + 7.23484626e-02 7.23389948e-02 7.23295307e-02 7.23200702e-02 7.23106135e-02 + 7.23011605e-02 7.22917112e-02 7.22822656e-02 7.22728238e-02 7.22633856e-02 + 7.22539511e-02 7.22445203e-02 7.22350932e-02 7.22256698e-02 7.22162500e-02 + 7.22068340e-02 7.21974216e-02 7.21880130e-02 7.21786080e-02 7.21692066e-02 + 7.21598090e-02 7.21504150e-02 7.21410247e-02 7.21316380e-02 7.21222550e-02 + 7.21128757e-02 7.21035000e-02 7.20941280e-02 7.20847596e-02 7.20753949e-02 + 7.20660339e-02 7.20566765e-02 7.20473227e-02 7.20379726e-02 7.20286261e-02 + 7.20192832e-02 7.20099440e-02 7.20006084e-02 7.19912765e-02 7.19819481e-02 + 7.19726234e-02 7.19633024e-02 7.19539849e-02 7.19446711e-02 7.19353608e-02 + 7.19260542e-02 7.19167512e-02 7.19074518e-02 7.18981560e-02 7.18888639e-02 + 7.18795753e-02 7.18702903e-02 7.18610089e-02 7.18517311e-02 7.18424569e-02 + 7.18331863e-02 7.18239193e-02 7.18146559e-02 7.18053960e-02 7.17961398e-02 + 7.17868871e-02 7.17776380e-02 7.17683924e-02 7.17591505e-02 7.17499121e-02 + 7.17406772e-02 7.17314460e-02 7.17222183e-02 7.17129941e-02 7.17037735e-02 + 7.16945565e-02 7.16853430e-02 7.16761331e-02 7.16669267e-02 7.16577239e-02 + 7.16485246e-02 7.16393289e-02 7.16301367e-02 7.16209480e-02 7.16117629e-02 + 7.16025813e-02 7.15934032e-02 7.15842287e-02 7.15750577e-02 7.15658902e-02 + 7.15567262e-02 7.15475658e-02 7.15384089e-02 7.15292555e-02 7.15201056e-02 + 7.15109592e-02 7.15018163e-02 7.14926769e-02 7.14835410e-02 7.14744087e-02 + 7.14652798e-02 7.14561544e-02 7.14470325e-02 7.14379142e-02 7.14287993e-02 + 7.14196878e-02 7.14105799e-02 7.14014755e-02 7.13923745e-02 7.13832770e-02 + 7.13741830e-02 7.13650925e-02 7.13560055e-02 7.13469219e-02 7.13378418e-02 + 7.13287651e-02 7.13196919e-02 7.13106222e-02 7.13015559e-02 7.12924931e-02 + 7.12834338e-02 7.12743779e-02 7.12653254e-02 7.12562764e-02 7.12472309e-02 + 7.12381888e-02 7.12291501e-02 7.12201149e-02 7.12110831e-02 7.12020547e-02 + 7.11930298e-02 7.11840083e-02 7.11749902e-02 7.11659756e-02 7.11569644e-02 + 7.11479566e-02 7.11389522e-02 7.11299512e-02 7.11209537e-02 7.11119596e-02 + 7.11029689e-02 7.10939816e-02 7.10849977e-02 7.10760172e-02 7.10670401e-02 + 7.10580664e-02 7.10490961e-02 7.10401292e-02 7.10311657e-02 7.10222056e-02 + 7.10132489e-02 7.10042956e-02 7.09953456e-02 7.09863990e-02 7.09774559e-02 + 7.09685161e-02 7.09595796e-02 7.09506466e-02 7.09417169e-02 7.09327906e-02 + 7.09238677e-02 7.09149481e-02 7.09060319e-02 7.08971191e-02 7.08882096e-02 + 7.08793035e-02 7.08704007e-02 7.08615013e-02 7.08526052e-02 7.08437125e-02 + 7.08348231e-02 7.08259371e-02 7.08170544e-02 7.08081751e-02 7.07992991e-02 + 7.07904264e-02 7.07815571e-02 7.07726911e-02 7.07638285e-02 7.07549691e-02 + 7.07461131e-02 7.07372604e-02 7.07284111e-02 7.07195650e-02 7.07107223e-02 + 7.07018829e-02 7.06930468e-02 7.06842141e-02 7.06753846e-02 7.06665584e-02 + 7.06577356e-02 7.06489160e-02 7.06400998e-02 7.06312868e-02 7.06224772e-02 + 7.06136708e-02 7.06048678e-02 7.05960680e-02 7.05872715e-02 7.05784783e-02 + 7.05696884e-02 7.05609018e-02 7.05521184e-02 7.05433384e-02 7.05345616e-02 + 1.00000000e+00 9.75894263e-01 9.53451752e-01 9.32489601e-01 9.12851907e-01 + 8.94404826e-01 8.77032714e-01 8.60635068e-01 8.45124065e-01 8.30422576e-01 + 8.16462554e-01 8.03183696e-01 7.90532350e-01 7.78460602e-01 7.66925506e-01 + 7.55888443e-01 7.45314577e-01 7.35172390e-01 7.25433287e-01 7.16071258e-01 + 7.07062580e-01 6.98385572e-01 6.90020370e-01 6.81948734e-01 6.74153887e-01 + 6.66620364e-01 6.59333880e-01 6.52281224e-01 6.45450150e-01 6.38829295e-01 + 6.32408091e-01 6.26176704e-01 6.20125961e-01 6.14247300e-01 6.08532716e-01 + 6.02974715e-01 5.97566276e-01 5.92300808e-01 5.87172122e-01 5.82174396e-01 + 5.77302151e-01 5.72550221e-01 5.67913735e-01 5.63388093e-01 5.58968948e-01 + 5.54652188e-01 5.50433918e-01 5.46310451e-01 5.42278287e-01 5.38334105e-01 + 5.34474753e-01 5.30697232e-01 5.26998691e-01 5.23376415e-01 5.19827818e-01 + 5.16350438e-01 5.12941922e-01 5.09600027e-01 5.06322612e-01 5.03107629e-01 + 4.99953120e-01 4.96857213e-01 4.93818117e-01 4.90834114e-01 4.87903560e-01 + 4.85024878e-01 4.82196556e-01 4.79417141e-01 4.76685242e-01 4.73999519e-01 + 4.71358685e-01 4.68761505e-01 4.66206788e-01 4.63693390e-01 4.61220209e-01 + 4.58786184e-01 4.56390292e-01 4.54031548e-01 4.51709002e-01 4.49421737e-01 + 4.47168870e-01 4.44949545e-01 4.42762941e-01 4.40608259e-01 4.38484731e-01 + 4.36391613e-01 4.34328187e-01 4.32293756e-01 4.30287649e-01 4.28309213e-01 + 4.26357819e-01 4.24432857e-01 4.22533734e-01 4.20659877e-01 4.18810733e-01 + 4.16985761e-01 4.15184441e-01 4.13406264e-01 4.11650741e-01 4.09917394e-01 + 4.08205761e-01 4.06515390e-01 4.04845847e-01 4.03196706e-01 4.01567556e-01 + 3.99957996e-01 3.98367636e-01 3.96796098e-01 3.95243014e-01 3.93708024e-01 + 3.92190780e-01 3.90690944e-01 3.89208184e-01 3.87742180e-01 3.86292617e-01 + 3.84859191e-01 3.83441605e-01 3.82039569e-01 3.80652800e-01 3.79281024e-01 + 3.77923973e-01 3.76581385e-01 3.75253005e-01 3.73938583e-01 3.72637878e-01 + 3.71350652e-01 3.70076675e-01 3.68815719e-01 3.67567566e-01 3.66332000e-01 + 3.65108810e-01 3.63897792e-01 3.62698745e-01 3.61511473e-01 3.60335785e-01 + 3.59171493e-01 3.58018415e-01 3.56876371e-01 3.55745187e-01 3.54624691e-01 + 3.53514717e-01 3.52415101e-01 3.51325683e-01 3.50246306e-01 3.49176816e-01 + 3.48117064e-01 3.47066903e-01 3.46026189e-01 3.44994782e-01 3.43972542e-01 + 3.42959337e-01 3.41955032e-01 3.40959498e-01 3.39972609e-01 3.38994241e-01 + 3.38024270e-01 3.37062579e-01 3.36109049e-01 3.35163566e-01 3.34226018e-01 + 3.33296293e-01 3.32374284e-01 3.31459885e-01 3.30552992e-01 3.29653502e-01 + 3.28761315e-01 3.27876333e-01 3.26998460e-01 3.26127600e-01 3.25263662e-01 + 3.24406553e-01 3.23556184e-01 3.22712468e-01 3.21875318e-01 3.21044649e-01 + 3.20220378e-01 3.19402424e-01 3.18590706e-01 3.17785145e-01 3.16985665e-01 + 3.16192188e-01 3.15404639e-01 3.14622947e-01 3.13847038e-01 3.13076841e-01 + 3.12312287e-01 3.11553306e-01 3.10799833e-01 3.10051800e-01 3.09309142e-01 + 3.08571795e-01 3.07839697e-01 3.07112784e-01 3.06390997e-01 3.05674275e-01 + 3.04962560e-01 3.04255793e-01 3.03553917e-01 3.02856876e-01 3.02164615e-01 + 3.01477079e-01 3.00794216e-01 3.00115971e-01 2.99442294e-01 2.98773134e-01 + 2.98108439e-01 2.97448161e-01 2.96792252e-01 2.96140662e-01 2.95493345e-01 + 2.94850254e-01 2.94211344e-01 2.93576570e-01 2.92945886e-01 2.92319250e-01 + 2.91696618e-01 2.91077947e-01 2.90463197e-01 2.89852325e-01 2.89245291e-01 + 2.88642055e-01 2.88042577e-01 2.87446820e-01 2.86854743e-01 2.86266311e-01 + 2.85681484e-01 2.85100228e-01 2.84522505e-01 2.83948280e-01 2.83377517e-01 + 2.82810183e-01 2.82246243e-01 2.81685662e-01 2.81128409e-01 2.80574450e-01 + 2.80023753e-01 2.79476286e-01 2.78932017e-01 2.78390916e-01 2.77852951e-01 + 2.77318094e-01 2.76786313e-01 2.76257580e-01 2.75731865e-01 2.75209140e-01 + 2.74689377e-01 2.74172548e-01 2.73658625e-01 2.73147581e-01 2.72639389e-01 + 2.72134024e-01 2.71631458e-01 2.71131667e-01 2.70634624e-01 2.70140305e-01 + 2.69648684e-01 2.69159738e-01 2.68673442e-01 2.68189772e-01 2.67708706e-01 + 2.67230218e-01 2.66754287e-01 2.66280890e-01 2.65810005e-01 2.65341608e-01 + 2.64875680e-01 2.64412197e-01 2.63951138e-01 2.63492483e-01 2.63036211e-01 + 2.62582301e-01 2.62130732e-01 2.61681486e-01 2.61234541e-01 2.60789879e-01 + 2.60347479e-01 2.59907323e-01 2.59469393e-01 2.59033668e-01 2.58600131e-01 + 2.58168764e-01 2.57739549e-01 2.57312467e-01 2.56887501e-01 2.56464633e-01 + 2.56043847e-01 2.55625126e-01 2.55208452e-01 2.54793809e-01 2.54381180e-01 + 2.53970550e-01 2.53561902e-01 2.53155220e-01 2.52750489e-01 2.52347693e-01 + 2.51946816e-01 2.51547844e-01 2.51150761e-01 2.50755553e-01 2.50362204e-01 + 2.49970701e-01 2.49581029e-01 2.49193173e-01 2.48807120e-01 2.48422856e-01 + 2.48040367e-01 2.47659639e-01 2.47280658e-01 2.46903413e-01 2.46527888e-01 + 2.46154072e-01 2.45781951e-01 2.45411513e-01 2.45042745e-01 2.44675634e-01 + 2.44310168e-01 2.43946335e-01 2.43584122e-01 2.43223518e-01 2.42864511e-01 + 2.42507089e-01 2.42151241e-01 2.41796954e-01 2.41444218e-01 2.41093021e-01 + 2.40743352e-01 2.40395201e-01 2.40048555e-01 2.39703404e-01 2.39359739e-01 + 2.39017547e-01 2.38676818e-01 2.38337542e-01 2.37999710e-01 2.37663309e-01 + 2.37328332e-01 2.36994766e-01 2.36662603e-01 2.36331833e-01 2.36002446e-01 + 2.35674432e-01 2.35347783e-01 2.35022487e-01 2.34698537e-01 2.34375923e-01 + 2.34054635e-01 2.33734666e-01 2.33416004e-01 2.33098643e-01 2.32782573e-01 + 2.32467784e-01 2.32154270e-01 2.31842020e-01 2.31531028e-01 2.31221283e-01 + 2.30912778e-01 2.30605504e-01 2.30299454e-01 2.29994620e-01 2.29690992e-01 + 2.29388564e-01 2.29087328e-01 2.28787275e-01 2.28488398e-01 2.28190689e-01 + 2.27894141e-01 2.27598746e-01 2.27304497e-01 2.27011386e-01 2.26719406e-01 + 2.26428550e-01 2.26138810e-01 2.25850180e-01 2.25562652e-01 2.25276219e-01 + 2.24990875e-01 2.24706613e-01 2.24423425e-01 2.24141305e-01 2.23860246e-01 + 2.23580243e-01 2.23301287e-01 2.23023372e-01 2.22746493e-01 2.22470643e-01 + 2.22195814e-01 2.21922002e-01 2.21649200e-01 2.21377401e-01 2.21106599e-01 + 2.20836789e-01 2.20567964e-01 2.20300119e-01 2.20033247e-01 2.19767342e-01 + 2.19502400e-01 2.19238413e-01 2.18975376e-01 2.18713284e-01 2.18452130e-01 + 2.18191910e-01 2.17932618e-01 2.17674247e-01 2.17416794e-01 2.17160252e-01 + 2.16904616e-01 2.16649880e-01 2.16396040e-01 2.16143090e-01 2.15891025e-01 + 2.15639840e-01 2.15389530e-01 2.15140089e-01 2.14891513e-01 2.14643796e-01 + 2.14396935e-01 2.14150923e-01 2.13905756e-01 2.13661429e-01 2.13417937e-01 + 2.13175276e-01 2.12933441e-01 2.12692427e-01 2.12452229e-01 2.12212843e-01 + 2.11974265e-01 2.11736490e-01 2.11499513e-01 2.11263330e-01 2.11027936e-01 + 2.10793328e-01 2.10559500e-01 2.10326449e-01 2.10094169e-01 2.09862658e-01 + 2.09631910e-01 2.09401922e-01 2.09172689e-01 2.08944208e-01 2.08716473e-01 + 2.08489481e-01 2.08263229e-01 2.08037711e-01 2.07812924e-01 2.07588865e-01 + 2.07365528e-01 2.07142911e-01 2.06921010e-01 2.06699820e-01 2.06479337e-01 + 2.06259559e-01 2.06040481e-01 2.05822100e-01 2.05604412e-01 2.05387413e-01 + 2.05171099e-01 2.04955468e-01 2.04740515e-01 2.04526237e-01 2.04312630e-01 + 2.04099691e-01 2.03887417e-01 2.03675803e-01 2.03464847e-01 2.03254545e-01 + 2.03044894e-01 2.02835891e-01 2.02627531e-01 2.02419812e-01 2.02212731e-01 + 2.02006284e-01 2.01800468e-01 2.01595280e-01 2.01390716e-01 2.01186774e-01 + 2.00983451e-01 2.00780742e-01 2.00578646e-01 2.00377158e-01 2.00176277e-01 + 1.99975998e-01 1.99776320e-01 1.99577238e-01 1.99378751e-01 1.99180854e-01 + 1.98983546e-01 1.98786822e-01 1.98590681e-01 1.98395120e-01 1.98200135e-01 + 1.98005724e-01 1.97811884e-01 1.97618612e-01 1.97425905e-01 1.97233761e-01 + 1.97042177e-01 1.96851151e-01 1.96660678e-01 1.96470758e-01 1.96281387e-01 + 1.96092562e-01 1.95904281e-01 1.95716541e-01 1.95529341e-01 1.95342676e-01 + 1.95156545e-01 1.94970945e-01 1.94785873e-01 1.94601328e-01 1.94417306e-01 + 1.94233805e-01 1.94050823e-01 1.93868357e-01 1.93686404e-01 1.93504963e-01 + 1.93324031e-01 1.93143606e-01 1.92963685e-01 1.92784265e-01 1.92605345e-01 + 1.92426923e-01 1.92248995e-01 1.92071560e-01 1.91894616e-01 1.91718159e-01 + 1.91542189e-01 1.91366702e-01 1.91191696e-01 1.91017170e-01 1.90843121e-01 + 1.90669546e-01 1.90496445e-01 1.90323814e-01 1.90151652e-01 1.89979956e-01 + 1.89808724e-01 1.89637954e-01 1.89467644e-01 1.89297793e-01 1.89128397e-01 + 1.88959456e-01 1.88790966e-01 1.88622926e-01 1.88455335e-01 1.88288189e-01 + 1.88121487e-01 1.87955227e-01 1.87789407e-01 1.87624025e-01 1.87459079e-01 + 1.87294568e-01 1.87130489e-01 1.86966840e-01 1.86803620e-01 1.86640827e-01 + 1.86478458e-01 1.86316513e-01 1.86154989e-01 1.85993884e-01 1.85833197e-01 + 1.85672925e-01 1.85513068e-01 1.85353622e-01 1.85194587e-01 1.85035961e-01 + 1.84877742e-01 1.84719927e-01 1.84562517e-01 1.84405508e-01 1.84248899e-01 + 1.84092688e-01 1.83936874e-01 1.83781455e-01 1.83626429e-01 1.83471795e-01 + 1.83317551e-01 1.83163695e-01 1.83010226e-01 1.82857142e-01 1.82704442e-01 + 1.82552123e-01 1.82400185e-01 1.82248626e-01 1.82097444e-01 1.81946637e-01 + 1.81796204e-01 1.81646144e-01 1.81496455e-01 1.81347136e-01 1.81198184e-01 + 1.81049599e-01 1.80901378e-01 1.80753522e-01 1.80606027e-01 1.80458892e-01 + 1.80312117e-01 1.80165699e-01 1.80019637e-01 1.79873930e-01 1.79728576e-01 + 1.79583574e-01 1.79438922e-01 1.79294620e-01 1.79150665e-01 1.79007056e-01 + 1.78863792e-01 1.78720871e-01 1.78578292e-01 1.78436054e-01 1.78294156e-01 + 1.78152595e-01 1.78011371e-01 1.77870482e-01 1.77729928e-01 1.77589706e-01 + 1.77449815e-01 1.77310255e-01 1.77171023e-01 1.77032119e-01 1.76893540e-01 + 1.76755287e-01 1.76617358e-01 1.76479751e-01 1.76342465e-01 1.76205499e-01 + 1.76068851e-01 1.75932521e-01 1.75796507e-01 1.75660808e-01 1.75525423e-01 + 1.75390351e-01 1.75255589e-01 1.75121138e-01 1.74986996e-01 1.74853162e-01 + 1.74719634e-01 1.74586412e-01 1.74453494e-01 1.74320879e-01 1.74188566e-01 + 1.74056554e-01 1.73924842e-01 1.73793428e-01 1.73662312e-01 1.73531492e-01 + 1.73400967e-01 1.73270736e-01 1.73140798e-01 1.73011152e-01 1.72881797e-01 + 1.72752732e-01 1.72623955e-01 1.72495466e-01 1.72367263e-01 1.72239346e-01 + 1.72111713e-01 1.71984363e-01 1.71857296e-01 1.71730510e-01 1.71604004e-01 + 1.71477777e-01 1.71351828e-01 1.71226157e-01 1.71100761e-01 1.70975641e-01 + 1.70850795e-01 1.70726222e-01 1.70601921e-01 1.70477891e-01 1.70354131e-01 + 1.70230640e-01 1.70107418e-01 1.69984462e-01 1.69861773e-01 1.69739349e-01 + 1.69617190e-01 1.69495294e-01 1.69373660e-01 1.69252288e-01 1.69131176e-01 + 1.69010324e-01 1.68889731e-01 1.68769395e-01 1.68649317e-01 1.68529494e-01 + 1.68409926e-01 1.68290613e-01 1.68171552e-01 1.68052744e-01 1.67934188e-01 + 1.67815882e-01 1.67697825e-01 1.67580018e-01 1.67462458e-01 1.67345146e-01 + 1.67228079e-01 1.67111258e-01 1.66994682e-01 1.66878349e-01 1.66762259e-01 + 1.66646411e-01 1.66530804e-01 1.66415437e-01 1.66300309e-01 1.66185421e-01 + 1.66070770e-01 1.65956356e-01 1.65842178e-01 1.65728235e-01 1.65614527e-01 + 1.65501053e-01 1.65387812e-01 1.65274803e-01 1.65162025e-01 1.65049477e-01 + 1.64937160e-01 1.64825071e-01 1.64713211e-01 1.64601578e-01 1.64490172e-01 + 1.64378991e-01 1.64268036e-01 1.64157305e-01 1.64046798e-01 1.63936514e-01 + 1.63826452e-01 1.63716611e-01 1.63606991e-01 1.63497591e-01 1.63388409e-01 + 1.63279447e-01 1.63170702e-01 1.63062174e-01 1.62953862e-01 1.62845766e-01 + 1.62737885e-01 1.62630217e-01 1.62522764e-01 1.62415523e-01 1.62308493e-01 + 1.62201676e-01 1.62095069e-01 1.61988671e-01 1.61882483e-01 1.61776504e-01 + 1.61670732e-01 1.61565168e-01 1.61459810e-01 1.61354658e-01 1.61249711e-01 + 1.61144969e-01 1.61040431e-01 1.60936095e-01 1.60831963e-01 1.60728032e-01 + 1.60624302e-01 1.60520773e-01 1.60417444e-01 1.60314314e-01 1.60211383e-01 + 1.60108650e-01 1.60006114e-01 1.59903775e-01 1.59801632e-01 1.59699684e-01 + 1.59597932e-01 1.59496373e-01 1.59395009e-01 1.59293837e-01 1.59192858e-01 + 1.59092070e-01 1.58991474e-01 1.58891068e-01 1.58790852e-01 1.58690826e-01 + 1.58590988e-01 1.58491339e-01 1.58391877e-01 1.58292602e-01 1.58193514e-01 + 1.58094612e-01 1.57995894e-01 1.57897362e-01 1.57799013e-01 1.57700849e-01 + 1.57602867e-01 1.57505067e-01 1.57407450e-01 1.57310013e-01 1.57212758e-01 + 1.57115682e-01 1.57018786e-01 1.56922069e-01 1.56825531e-01 1.56729171e-01 + 1.56632988e-01 1.56536982e-01 1.56441152e-01 1.56345498e-01 1.56250019e-01 + 1.56154715e-01 1.56059585e-01 1.55964629e-01 1.55869846e-01 1.55775235e-01 + 1.55680797e-01 1.55586530e-01 1.55492434e-01 1.55398509e-01 1.55304754e-01 + 1.55211168e-01 1.55117751e-01 1.55024502e-01 1.54931422e-01 1.54838509e-01 + 1.54745763e-01 1.54653183e-01 1.54560770e-01 1.54468522e-01 1.54376439e-01 + 1.54284520e-01 1.54192765e-01 1.54101174e-01 1.54009746e-01 1.53918481e-01 + 1.53827377e-01 1.53736435e-01 1.53645654e-01 1.53555034e-01 1.53464574e-01 + 1.53374274e-01 1.53284132e-01 1.53194150e-01 1.53104326e-01 1.53014660e-01 + 1.52925151e-01 1.52835798e-01 1.52746603e-01 1.52657563e-01 1.52568679e-01 + 1.52479950e-01 1.52391376e-01 1.52302955e-01 1.52214689e-01 1.52126576e-01 + 1.52038615e-01 1.51950807e-01 1.51863151e-01 1.51775647e-01 1.51688293e-01 + 1.51601091e-01 1.51514038e-01 1.51427135e-01 1.51340382e-01 1.51253778e-01 + 1.51167322e-01 1.51081014e-01 1.50994854e-01 1.50908841e-01 1.50822975e-01 + 1.50737255e-01 1.50651681e-01 1.50566253e-01 1.50480970e-01 1.50395832e-01 + 1.50310838e-01 1.50225988e-01 1.50141281e-01 1.50056718e-01 1.49972298e-01 + 1.49888019e-01 1.49803883e-01 1.49719888e-01 1.49636035e-01 1.49552322e-01 + 1.49468749e-01 1.49385316e-01 1.49302023e-01 1.49218869e-01 1.49135854e-01 + 1.49052977e-01 1.48970239e-01 1.48887638e-01 1.48805174e-01 1.48722847e-01 + 1.48640656e-01 1.48558602e-01 1.48476683e-01 1.48394900e-01 1.48313252e-01 + 1.48231738e-01 1.48150359e-01 1.48069113e-01 1.47988001e-01 1.47907022e-01 + 1.47826176e-01 1.47745463e-01 1.47664881e-01 1.47584431e-01 1.47504113e-01 + 1.47423925e-01 1.47343868e-01 1.47263942e-01 1.47184145e-01 1.47104478e-01 + 1.47024940e-01 1.46945531e-01 1.46866251e-01 1.46787099e-01 1.46708074e-01 + 1.46629177e-01 1.46550407e-01 1.46471764e-01 1.46393248e-01 1.46314857e-01 + 1.46236593e-01 1.46158454e-01 1.46080440e-01 1.46002551e-01 1.45924786e-01 + 1.45847145e-01 1.45769628e-01 1.45692235e-01 1.45614965e-01 1.45537817e-01 + 1.45460792e-01 1.45383890e-01 1.45307109e-01 1.45230449e-01 1.45153911e-01 + 1.45077494e-01 1.45001197e-01 1.44925021e-01 1.44848964e-01 1.44773027e-01 + 1.44697209e-01 1.44621511e-01 1.44545931e-01 1.44470469e-01 1.44395126e-01 + 1.44319900e-01 1.44244791e-01 1.44169800e-01 1.44094926e-01 1.44020168e-01 + 1.43945527e-01 1.43871001e-01 1.43796591e-01 1.43722296e-01 1.43648117e-01 + 1.43574052e-01 1.43500101e-01 1.43426265e-01 1.43352542e-01 1.43278934e-01 + 1.43205438e-01 1.43132055e-01 1.43058785e-01 1.42985628e-01 1.42912583e-01 + 1.42839649e-01 1.42766827e-01 1.42694116e-01 1.42621516e-01 1.42549027e-01 + 1.42476649e-01 1.42404380e-01 1.42332222e-01 1.42260172e-01 1.42188233e-01 + 1.42116402e-01 1.42044680e-01 1.41973066e-01 1.41901561e-01 1.41830164e-01 + 1.41758874e-01 1.41687692e-01 1.41616617e-01 1.41545648e-01 1.41474786e-01 + 1.41404031e-01 1.41333382e-01 1.41262838e-01 1.41192400e-01 1.41122067e-01 + 1.41051839e-01 1.40981716e-01 1.40911698e-01 1.40841783e-01 1.40771973e-01 + 1.40702266e-01 1.40632663e-01 1.40563163e-01 1.40493766e-01 1.40424471e-01 + 1.40355279e-01 1.40286189e-01 1.40217202e-01 1.40148315e-01 1.40079531e-01 + 1.40010847e-01 1.39942264e-01 1.39873782e-01 1.39805401e-01 1.39737119e-01 + 1.39668938e-01 1.39600856e-01 1.39532874e-01 1.39464991e-01 1.39397207e-01 + 1.39329522e-01 1.39261935e-01 1.39194446e-01 1.39127056e-01 1.39059763e-01 + 1.38992568e-01 1.38925470e-01 1.38858469e-01 1.38791565e-01 1.38724758e-01 + 1.38658047e-01 1.38591432e-01 1.38524913e-01 1.38458490e-01 1.38392162e-01 + 1.38325930e-01 1.38259792e-01 1.38193750e-01 1.38127801e-01 1.38061947e-01 + 1.37996188e-01 1.37930522e-01 1.37864950e-01 1.37799471e-01 1.37734085e-01 + 1.37668793e-01 1.37603593e-01 1.37538485e-01 1.37473471e-01 1.37408548e-01 + 1.37343717e-01 1.37278977e-01 1.37214330e-01 1.37149773e-01 1.37085308e-01 + 1.37020933e-01 1.36956649e-01 1.36892455e-01 1.36828351e-01 1.36764338e-01 + 1.36700414e-01 1.36636580e-01 1.36572835e-01 1.36509179e-01 1.36445612e-01 + 1.36382134e-01 1.36318745e-01 1.36255443e-01 1.36192230e-01 1.36129105e-01 + 1.36066067e-01 1.36003117e-01 1.35940254e-01 1.35877478e-01 1.35814789e-01 + 1.35752187e-01 1.35689672e-01 1.35627242e-01 1.35564899e-01 1.35502641e-01 + 1.35440470e-01 1.35378384e-01 1.35316383e-01 1.35254467e-01 1.35192636e-01 + 1.35130890e-01 1.35069228e-01 1.35007651e-01 1.34946158e-01 1.34884748e-01 + 1.34823423e-01 1.34762181e-01 1.34701022e-01 1.34639947e-01 1.34578955e-01 + 1.34518045e-01 1.34457218e-01 1.34396474e-01 1.34335812e-01 1.34275232e-01 + 1.34214733e-01 1.34154317e-01 1.34093982e-01 1.34033728e-01 1.33973556e-01 + 1.33913464e-01 1.33853453e-01 1.33793523e-01 1.33733673e-01 1.33673904e-01 + 1.33614214e-01 1.33554605e-01 1.33495075e-01 1.33435625e-01 1.33376254e-01 + 1.33316962e-01 1.33257749e-01 1.33198615e-01 1.33139560e-01 1.33080583e-01 + 1.33021685e-01 1.32962864e-01 1.32904122e-01 1.32845457e-01 1.32786870e-01 + 1.32728361e-01 1.32669928e-01 1.32611573e-01 1.32553295e-01 1.32495093e-01 + 1.32436968e-01 1.32378920e-01 1.32320948e-01 1.32263052e-01 1.32205232e-01 + 1.32147487e-01 1.32089818e-01 1.32032225e-01 1.31974707e-01 1.31917264e-01 + 1.31859896e-01 1.31802603e-01 1.31745384e-01 1.31688240e-01 1.31631170e-01 + 1.31574174e-01 1.31517252e-01 1.31460404e-01 1.31403630e-01 1.31346929e-01 + 1.31290301e-01 1.31233747e-01 1.31177266e-01 1.31120857e-01 1.31064522e-01 + 1.31008258e-01 1.30952068e-01 1.30895949e-01 1.30839903e-01 1.30783928e-01 + 1.30728025e-01 1.30672194e-01 1.30616435e-01 1.30560746e-01 1.30505129e-01 + 1.30449583e-01 1.30394108e-01 1.30338703e-01 1.30283369e-01 1.30228105e-01 + 1.30172912e-01 1.30117789e-01 1.30062736e-01 1.30007752e-01 1.29952839e-01 + 1.29897994e-01 1.29843219e-01 1.29788514e-01 1.29733877e-01 1.29679310e-01 + 1.29624811e-01 1.29570381e-01 1.29516019e-01 1.29461726e-01 1.29407501e-01 + 1.29353344e-01 1.29299255e-01 1.29245234e-01 1.29191280e-01 1.29137394e-01 + 1.29083575e-01 1.29029824e-01 1.28976140e-01 1.28922522e-01 1.28868972e-01 + 1.28815488e-01 1.28762070e-01 1.28708719e-01 1.28655435e-01 1.28602216e-01 + 1.28549063e-01 1.28495977e-01 1.28442955e-01 1.28390000e-01 1.28337110e-01 + 1.28284285e-01 1.28231526e-01 1.28178831e-01 1.28126202e-01 1.28073637e-01 + 1.28021137e-01 1.27968701e-01 1.27916330e-01 1.27864023e-01 1.27811780e-01 + 1.27759601e-01 1.27707486e-01 1.27655434e-01 1.27603447e-01 1.27551522e-01 + 1.27499661e-01 1.27447864e-01 1.27396129e-01 1.27344457e-01 1.27292848e-01 + 1.27241302e-01 1.27189818e-01 1.27138397e-01 1.27087038e-01 1.27035742e-01 + 1.26984507e-01 1.26933334e-01 1.26882223e-01 1.26831174e-01 1.26780187e-01 + 1.26729260e-01 1.26678396e-01 1.26627592e-01 1.26576849e-01 1.26526168e-01 + 1.26475547e-01 1.26424987e-01 1.26374487e-01 1.26324048e-01 1.26273670e-01 + 1.26223351e-01 1.26173093e-01 1.26122894e-01 1.26072756e-01 1.26022677e-01 + 1.25972658e-01 1.25922698e-01 1.25872798e-01 1.25822957e-01 1.25773176e-01 + 1.25723453e-01 1.25673789e-01 1.25624184e-01 1.25574638e-01 1.25525150e-01 + 1.25475721e-01 1.25426350e-01 1.25377037e-01 1.25327782e-01 1.25278586e-01 + 1.25229447e-01 1.25180366e-01 1.25131343e-01 1.25082377e-01 1.25033469e-01 + 1.24984618e-01 1.24935824e-01 1.24887088e-01 1.24838408e-01 1.24789785e-01 + 1.24741219e-01 1.24692710e-01 1.24644257e-01 1.24595861e-01 1.24547521e-01 + 1.24499237e-01 1.24451010e-01 1.24402838e-01 1.24354722e-01 1.24306662e-01 + 1.24258658e-01 1.24210709e-01 1.24162816e-01 1.24114978e-01 1.24067195e-01 + 1.24019468e-01 1.23971795e-01 1.23924178e-01 1.23876615e-01 1.23829107e-01 + 1.23781654e-01 1.23734255e-01 1.23686910e-01 1.23639620e-01 1.23592384e-01 + 1.23545202e-01 1.23498075e-01 1.23451001e-01 1.23403980e-01 1.23357014e-01 + 1.23310101e-01 1.23263242e-01 1.23216436e-01 1.23169683e-01 1.23122983e-01 + 1.23076337e-01 1.23029743e-01 1.22983202e-01 1.22936715e-01 1.22890279e-01 + 1.22843897e-01 1.22797567e-01 1.22751289e-01 1.22705063e-01 1.22658890e-01 + 1.22612769e-01 1.22566700e-01 1.22520682e-01 1.22474717e-01 1.22428803e-01 + 1.22382941e-01 1.22337130e-01 1.22291371e-01 1.22245663e-01 1.22200006e-01 + 1.22154400e-01 1.22108845e-01 1.22063342e-01 1.22017889e-01 1.21972487e-01 + 1.21927135e-01 1.21881834e-01 1.21836584e-01 1.21791383e-01 1.21746234e-01 + 1.21701134e-01 1.21656084e-01 1.21611085e-01 1.21566135e-01 1.21521235e-01 + 1.21476385e-01 1.21431584e-01 1.21386833e-01 1.21342131e-01 1.21297479e-01 + 1.21252876e-01 1.21208322e-01 1.21163817e-01 1.21119362e-01 1.21074955e-01 + 1.21030597e-01 1.20986287e-01 1.20942026e-01 1.20897814e-01 1.20853651e-01 + 1.20809535e-01 1.20765468e-01 1.20721449e-01 1.20677478e-01 1.20633555e-01 + 1.20589681e-01 1.20545854e-01 1.20502074e-01 1.20458343e-01 1.20414659e-01 + 1.20371022e-01 1.20327433e-01 1.20283891e-01 1.20240396e-01 1.20196949e-01 + 1.20153549e-01 1.20110195e-01 1.20066889e-01 1.20023629e-01 1.19980416e-01 + 1.19937250e-01 1.19894130e-01 1.19851056e-01 1.19808030e-01 1.19765049e-01 + 1.19722115e-01 1.19679226e-01 1.19636384e-01 1.19593588e-01 1.19550838e-01 + 1.19508133e-01 1.19465474e-01 1.19422861e-01 1.19380294e-01 1.19337772e-01 + 1.19295295e-01 1.19252863e-01 1.19210477e-01 1.19168136e-01 1.19125841e-01 + 1.19083590e-01 1.19041384e-01 1.18999223e-01 1.18957106e-01 1.18915035e-01 + 1.18873008e-01 1.18831025e-01 1.18789087e-01 1.18747194e-01 1.18705344e-01 + 1.18663539e-01 1.18621778e-01 1.18580061e-01 1.18538388e-01 1.18496759e-01 + 1.18455174e-01 1.18413632e-01 1.18372134e-01 1.18330680e-01 1.18289269e-01 + 1.18247902e-01 1.18206578e-01 1.18165298e-01 1.18124060e-01 1.18082866e-01 + 1.18041715e-01 1.18000607e-01 1.17959541e-01 1.17918519e-01 1.17877539e-01 + 1.17836602e-01 1.17795708e-01 1.17754856e-01 1.17714047e-01 1.17673280e-01 + 1.17632556e-01 1.17591873e-01 1.17551233e-01 1.17510635e-01 1.17470079e-01 + 1.17429565e-01 1.17389093e-01 1.17348662e-01 1.17308274e-01 1.17267927e-01 + 1.17227622e-01 1.17187358e-01 1.17147135e-01 1.17106955e-01 1.17066815e-01 + 1.17026717e-01 1.16986659e-01 1.16946643e-01 1.16906668e-01 1.16866734e-01 + 1.16826841e-01 1.16786988e-01 1.16747177e-01 1.16707406e-01 1.16667676e-01 + 1.16627986e-01 1.16588337e-01 1.16548728e-01 1.16509159e-01 1.16469631e-01 + 1.16430143e-01 1.16390695e-01 1.16351287e-01 1.16311919e-01 1.16272591e-01 + 1.16233303e-01 1.16194055e-01 1.16154846e-01 1.16115678e-01 1.16076548e-01 + 1.16037459e-01 1.15998408e-01 1.15959397e-01 1.15920426e-01 1.15881494e-01 + 1.15842601e-01 1.15803747e-01 1.15764932e-01 1.15726156e-01 1.15687419e-01 + 1.15648721e-01 1.15610062e-01 1.15571441e-01 1.15532859e-01 1.15494316e-01 + 1.15455812e-01 1.15417345e-01 1.15378918e-01 1.15340528e-01 1.15302177e-01 + 1.15263864e-01 1.15225590e-01 1.15187353e-01 1.15149155e-01 1.15110994e-01 + 1.15072871e-01 1.15034786e-01 1.14996739e-01 1.14958730e-01 1.14920759e-01 + 1.14882824e-01 1.14844928e-01 1.14807069e-01 1.14769247e-01 1.14731463e-01 + 1.14693716e-01 1.14656006e-01 1.14618334e-01 1.14580699e-01 1.14543100e-01 + 1.14505539e-01 1.14468014e-01 1.14430527e-01 1.14393076e-01 1.14355662e-01 + 1.14318284e-01 1.14280944e-01 1.14243640e-01 1.14206372e-01 1.14169141e-01 + 1.14131946e-01 1.14094787e-01 1.14057665e-01 1.14020579e-01 1.13983529e-01 + 1.13946515e-01 1.13909538e-01 1.13872596e-01 1.13835690e-01 1.13798820e-01 + 1.13761986e-01 1.13725188e-01 1.13688425e-01 1.13651698e-01 1.13615006e-01 + 1.13578350e-01 1.13541730e-01 1.13505144e-01 1.13468595e-01 1.13432080e-01 + 1.13395601e-01 1.13359156e-01 1.13322747e-01 1.13286373e-01 1.13250035e-01 + 1.13213730e-01 1.13177461e-01 1.13141227e-01 1.13105028e-01 1.13068863e-01 + 1.13032733e-01 1.12996637e-01 1.12960576e-01 1.12924550e-01 1.12888558e-01 + 1.12852600e-01 1.12816677e-01 1.12780788e-01 1.12744933e-01 1.12709112e-01 + 1.12673326e-01 1.12637574e-01 1.12601855e-01 1.12566171e-01 1.12530520e-01 + 1.12494904e-01 1.12459321e-01 1.12423772e-01 1.12388256e-01 1.12352774e-01 + 1.12317326e-01 1.12281911e-01 1.12246530e-01 1.12211182e-01 1.12175868e-01 + 1.12140587e-01 1.12105339e-01 1.12070125e-01 1.12034943e-01 1.11999795e-01 + 1.11964679e-01 1.11929597e-01 1.11894548e-01 1.11859532e-01 1.11824548e-01 + 1.11789597e-01 1.11754679e-01 1.11719794e-01 1.11684941e-01 1.11650121e-01 + 1.11615334e-01 1.11580579e-01 1.11545856e-01 1.11511166e-01 1.11476508e-01 + 1.11441883e-01 1.11407289e-01 1.11372728e-01 1.11338199e-01 1.11303703e-01 + 1.11269238e-01 1.11234805e-01 1.11200404e-01 1.11166035e-01 1.11131698e-01 + 1.11097393e-01 1.11063119e-01 1.11028877e-01 1.10994667e-01 1.10960489e-01 + 1.10926342e-01 1.10892226e-01 1.10858142e-01 1.10824089e-01 1.10790068e-01 + 1.10756078e-01 1.10722119e-01 1.10688192e-01 1.10654295e-01 1.10620430e-01 + 1.10586596e-01 1.10552793e-01 1.10519021e-01 1.10485279e-01 1.10451569e-01 + 1.10417890e-01 1.10384241e-01 1.10350623e-01 1.10317036e-01 1.10283479e-01 + 1.10249953e-01 1.10216458e-01 1.10182993e-01 1.10149558e-01 1.10116154e-01 + 1.10082780e-01 1.10049437e-01 1.10016124e-01 1.09982841e-01 1.09949588e-01 + 1.09916366e-01 1.09883174e-01 1.09850011e-01 1.09816879e-01 1.09783776e-01 + 1.09750704e-01 1.09717661e-01 1.09684648e-01 1.09651665e-01 1.09618712e-01 + 1.09585789e-01 1.09552895e-01 1.09520030e-01 1.09487196e-01 1.09454390e-01 + 1.09421615e-01 1.09388868e-01 1.09356151e-01 1.09323464e-01 1.09290805e-01 + 1.09258176e-01 1.09225576e-01 1.09193006e-01 1.09160464e-01 1.09127951e-01 + 1.09095468e-01 1.09063013e-01 1.09030588e-01 1.08998191e-01 1.08965824e-01 + 1.08933485e-01 1.08901174e-01 1.08868893e-01 1.08836640e-01 1.08804416e-01 + 1.08772220e-01 1.08740054e-01 1.08707915e-01 1.08675805e-01 1.08643724e-01 + 1.08611671e-01 1.08579646e-01 1.08547649e-01 1.08515681e-01 1.08483741e-01 + 1.08451829e-01 1.08419946e-01 1.08388090e-01 1.08356263e-01 1.08324463e-01 + 1.08292692e-01 1.08260948e-01 1.08229233e-01 1.08197545e-01 1.08165885e-01 + 1.08134253e-01 1.08102648e-01 1.08071072e-01 1.08039523e-01 1.08008001e-01 + 1.07976507e-01 1.07945041e-01 1.07913602e-01 1.07882191e-01 1.07850807e-01 + 1.07819450e-01 1.07788121e-01 1.07756819e-01 1.07725544e-01 1.07694296e-01 + 1.07663076e-01 1.07631883e-01 1.07600717e-01 1.07569578e-01 1.07538466e-01 + 1.07507381e-01 1.07476322e-01 1.07445291e-01 1.07414287e-01 1.07383309e-01 + 1.07352359e-01 1.07321435e-01 1.07290537e-01 1.07259667e-01 1.07228823e-01 + 1.07198005e-01 1.07167214e-01 1.07136450e-01 1.07105712e-01 1.07075001e-01 + 1.07044316e-01 1.07013657e-01 1.06983025e-01 1.06952419e-01 1.06921839e-01 + 1.06891286e-01 1.06860758e-01 1.06830257e-01 1.06799782e-01 1.06769333e-01 + 1.06738910e-01 1.06708513e-01 1.06678142e-01 1.06647796e-01 1.06617477e-01 + 1.06587184e-01 1.06556916e-01 1.06526674e-01 1.06496458e-01 1.06466268e-01 + 1.06436103e-01 1.06405964e-01 1.06375850e-01 1.06345762e-01 1.06315700e-01 + 1.06285663e-01 1.06255651e-01 1.06225665e-01 1.06195704e-01 1.06165769e-01 + 1.06135859e-01 1.06105974e-01 1.06076114e-01 1.06046280e-01 1.06016470e-01 + 1.05986686e-01 1.05956927e-01 1.05927193e-01 1.05897484e-01 1.05867800e-01 + 1.05838141e-01 1.05808507e-01 1.05778897e-01 1.05749313e-01 1.05719753e-01 + 1.05690218e-01 1.05660708e-01 1.05631223e-01 1.05601762e-01 1.05572326e-01 + 1.05542914e-01 1.05513528e-01 1.05484165e-01 1.05454827e-01 1.05425514e-01 + 1.05396225e-01 1.05366960e-01 1.05337720e-01 1.05308504e-01 1.05279312e-01 + 1.05250145e-01 1.05221002e-01 1.05191883e-01 1.05162788e-01 1.05133717e-01 + 1.05104671e-01 1.05075648e-01 1.05046650e-01 1.05017675e-01 1.04988725e-01 + 1.04959798e-01 1.04930896e-01 1.04902017e-01 1.04873162e-01 1.04844331e-01 + 1.04815523e-01 1.04786740e-01 1.04757980e-01 1.04729243e-01 1.04700531e-01 + 1.04671841e-01 1.04643176e-01 1.04614534e-01 1.04585916e-01 1.04557321e-01 + 1.04528749e-01 1.04500201e-01 1.04471676e-01 1.04443175e-01 1.04414697e-01 + 1.04386242e-01 1.04357810e-01 1.04329402e-01 1.04301017e-01 1.04272655e-01 + 1.04244316e-01 1.04216000e-01 1.04187707e-01 1.04159437e-01 1.04131191e-01 + 1.04102967e-01 1.04074766e-01 1.04046588e-01 1.04018433e-01 1.03990301e-01 + 1.03962192e-01 1.03934105e-01 1.03906041e-01 1.03878000e-01 1.03849982e-01 + 1.03821986e-01 1.03794013e-01 1.03766062e-01 1.03738134e-01 1.03710229e-01 + 1.03682346e-01 1.03654486e-01 1.03626648e-01 1.03598832e-01 1.03571039e-01 + 1.03543268e-01 1.03515520e-01 1.03487793e-01 1.03460089e-01 1.03432408e-01 + 1.03404748e-01 1.03377111e-01 1.03349496e-01 1.03321903e-01 1.03294332e-01 + 1.03266783e-01 1.03239256e-01 1.03211751e-01 1.03184268e-01 1.03156807e-01 + 1.03129368e-01 1.03101951e-01 1.03074556e-01 1.03047182e-01 1.03019831e-01 + 1.02992501e-01 1.02965192e-01 1.02937906e-01 1.02910641e-01 1.02883398e-01 + 1.02856177e-01 1.02828977e-01 1.02801798e-01 1.02774642e-01 1.02747506e-01 + 1.02720392e-01 1.02693300e-01 1.02666229e-01 1.02639180e-01 1.02612151e-01 + 1.02585145e-01 1.02558159e-01 1.02531195e-01 1.02504252e-01 1.02477330e-01 + 1.02450430e-01 1.02423550e-01 1.02396692e-01 1.02369855e-01 1.02343039e-01 + 1.02316244e-01 1.02289470e-01 1.02262717e-01 1.02235985e-01 1.02209274e-01 + 1.02182584e-01 1.02155915e-01 1.02129267e-01 1.02102639e-01 1.02076033e-01 + 1.02049447e-01 1.02022882e-01 1.01996338e-01 1.01969814e-01 1.01943311e-01 + 1.01916829e-01 1.01890367e-01 1.01863926e-01 1.01837505e-01 1.01811106e-01 + 1.01784726e-01 1.01758367e-01 1.01732029e-01 1.01705711e-01 1.01679413e-01 + 1.01653136e-01 1.01626879e-01 1.01600643e-01 1.01574426e-01 1.01548230e-01 + 1.01522055e-01 1.01495899e-01 1.01469764e-01 1.01443649e-01 1.01417554e-01 + 1.01391479e-01 1.01365425e-01 1.01339390e-01 1.01313376e-01 1.01287381e-01 + 1.01261406e-01 1.01235452e-01 1.01209517e-01 1.01183603e-01 1.01157708e-01 + 1.01131833e-01 1.01105978e-01 1.01080143e-01 1.01054327e-01 1.01028532e-01 + 1.01002756e-01 1.00976999e-01 1.00951263e-01 1.00925546e-01 1.00899849e-01 + 1.00874171e-01 1.00848513e-01 1.00822875e-01 1.00797256e-01 1.00771656e-01 + 1.00746077e-01 1.00720516e-01 1.00694975e-01 1.00669454e-01 1.00643952e-01 + 1.00618469e-01 1.00593005e-01 1.00567561e-01 1.00542136e-01 1.00516731e-01 + 1.00491345e-01 1.00465978e-01 1.00440630e-01 1.00415301e-01 1.00389992e-01 + 1.00364701e-01 1.00339430e-01 1.00314178e-01 1.00288944e-01 1.00263730e-01 + 1.00238535e-01 1.00213359e-01 1.00188202e-01 1.00163064e-01 1.00137944e-01 + 1.00112844e-01 1.00087762e-01 1.00062700e-01 1.00037656e-01 1.00012631e-01 + 9.99876242e-02 9.99626366e-02 9.99376677e-02 9.99127176e-02 9.98877861e-02 + 9.98628732e-02 9.98379790e-02 9.98131034e-02 9.97882464e-02 9.97634079e-02 + 9.97385880e-02 9.97137866e-02 9.96890037e-02 9.96642393e-02 9.96394933e-02 + 9.96147657e-02 9.95900565e-02 9.95653657e-02 9.95406933e-02 9.95160392e-02 + 9.94914034e-02 9.94667859e-02 9.94421867e-02 9.94176057e-02 9.93930429e-02 + 9.93684983e-02 9.93439719e-02 9.93194636e-02 9.92949735e-02 9.92705015e-02 + 9.92460476e-02 9.92216117e-02 9.91971939e-02 9.91727940e-02 9.91484122e-02 + 9.91240484e-02 9.90997025e-02 9.90753745e-02 9.90510645e-02 9.90267723e-02 + 9.90024980e-02 9.89782415e-02 9.89540029e-02 9.89297821e-02 9.89055790e-02 + 9.88813937e-02 9.88572261e-02 9.88330763e-02 9.88089441e-02 9.87848296e-02 + 9.87607327e-02 9.87366535e-02 9.87125919e-02 9.86885478e-02 9.86645213e-02 + 9.86405124e-02 9.86165209e-02 9.85925470e-02 9.85685906e-02 9.85446516e-02 + 9.85207300e-02 9.84968258e-02 9.84729391e-02 9.84490697e-02 9.84252176e-02 + 9.84013829e-02 9.83775655e-02 9.83537654e-02 9.83299825e-02 9.83062169e-02 + 9.82824685e-02 9.82587374e-02 9.82350233e-02 9.82113265e-02 9.81876468e-02 + 9.81639842e-02 9.81403387e-02 9.81167103e-02 9.80930990e-02 9.80695047e-02 + 9.80459274e-02 9.80223671e-02 9.79988238e-02 9.79752974e-02 9.79517880e-02 + 9.79282955e-02 9.79048199e-02 9.78813611e-02 9.78579192e-02 9.78344942e-02 + 9.78110859e-02 9.77876945e-02 9.77643198e-02 9.77409619e-02 9.77176207e-02 + 9.76942963e-02 9.76709885e-02 9.76476974e-02 9.76244230e-02 9.76011651e-02 + 9.75779239e-02 9.75546993e-02 9.75314913e-02 9.75082999e-02 9.74851249e-02 + 9.74619665e-02 9.74388246e-02 9.74156991e-02 9.73925901e-02 9.73694976e-02 + 9.73464215e-02 9.73233617e-02 9.73003184e-02 9.72772914e-02 9.72542807e-02 + 9.72312864e-02 9.72083084e-02 9.71853467e-02 9.71624012e-02 9.71394719e-02 + 9.71165589e-02 9.70936621e-02 9.70707815e-02 9.70479171e-02 9.70250688e-02 + 9.70022366e-02 9.69794205e-02 9.69566206e-02 9.69338367e-02 9.69110688e-02 + 9.68883170e-02 9.68655813e-02 9.68428615e-02 9.68201577e-02 9.67974698e-02 + 9.67747979e-02 9.67521419e-02 9.67295019e-02 9.67068777e-02 9.66842693e-02 + 9.66616769e-02 9.66391002e-02 9.66165394e-02 9.65939943e-02 9.65714651e-02 + 9.65489516e-02 9.65264538e-02 9.65039718e-02 9.64815054e-02 9.64590547e-02 + 9.64366197e-02 9.64142004e-02 9.63917967e-02 9.63694086e-02 9.63470360e-02 + 9.63246791e-02 9.63023377e-02 9.62800118e-02 9.62577015e-02 9.62354067e-02 + 9.62131273e-02 9.61908635e-02 9.61686150e-02 9.61463820e-02 9.61241644e-02 + 9.61019623e-02 9.60797754e-02 9.60576040e-02 9.60354479e-02 9.60133071e-02 + 9.59911816e-02 9.59690714e-02 9.59469765e-02 9.59248968e-02 9.59028324e-02 + 9.58807832e-02 9.58587492e-02 9.58367303e-02 9.58147267e-02 9.57927382e-02 + 9.57707648e-02 9.57488065e-02 9.57268633e-02 9.57049352e-02 9.56830222e-02 + 9.56611242e-02 9.56392413e-02 9.56173733e-02 9.55955204e-02 9.55736824e-02 + 9.55518594e-02 9.55300513e-02 9.55082582e-02 9.54864799e-02 9.54647166e-02 + 9.54429681e-02 9.54212345e-02 9.53995157e-02 9.53778117e-02 9.53561226e-02 + 9.53344482e-02 9.53127886e-02 9.52911438e-02 9.52695137e-02 9.52478984e-02 + 9.52262977e-02 9.52047117e-02 9.51831404e-02 9.51615838e-02 9.51400418e-02 + 9.51185144e-02 9.50970016e-02 9.50755034e-02 9.50540198e-02 9.50325508e-02 + 9.50110963e-02 9.49896563e-02 9.49682308e-02 9.49468198e-02 9.49254233e-02 + 9.49040412e-02 9.48826736e-02 9.48613204e-02 9.48399817e-02 9.48186573e-02 + 9.47973473e-02 9.47760516e-02 9.47547703e-02 9.47335034e-02 9.47122507e-02 + 9.46910123e-02 9.46697883e-02 9.46485784e-02 9.46273829e-02 9.46062015e-02 + 9.45850344e-02 9.45638815e-02 9.45427428e-02 9.45216182e-02 9.45005078e-02 + 9.44794116e-02 9.44583294e-02 9.44372614e-02 9.44162074e-02 9.43951676e-02 + 9.43741418e-02 9.43531300e-02 9.43321323e-02 9.43111485e-02 9.42901788e-02 + 9.42692231e-02 9.42482813e-02 9.42273534e-02 9.42064395e-02 9.41855396e-02 + 9.41646535e-02 9.41437813e-02 9.41229230e-02 9.41020785e-02 9.40812479e-02 + 9.40604311e-02 9.40396282e-02 9.40188390e-02 9.39980636e-02 9.39773020e-02 + 9.39565541e-02 9.39358200e-02 9.39150995e-02 9.38943928e-02 9.38736998e-02 + 9.38530204e-02 9.38323548e-02 9.38117027e-02 9.37910643e-02 9.37704395e-02 + 9.37498283e-02 9.37292307e-02 9.37086466e-02 9.36880762e-02 9.36675192e-02 + 9.36469758e-02 9.36264459e-02 9.36059295e-02 9.35854265e-02 9.35649371e-02 + 9.35444611e-02 9.35239985e-02 9.35035493e-02 9.34831136e-02 9.34626912e-02 + 9.34422823e-02 9.34218866e-02 9.34015044e-02 9.33811355e-02 9.33607798e-02 + 9.33404375e-02 9.33201085e-02 9.32997928e-02 9.32794903e-02 9.32592011e-02 + 9.32389251e-02 9.32186624e-02 9.31984128e-02 9.31781764e-02 9.31579532e-02 + 9.31377432e-02 9.31175463e-02 9.30973626e-02 9.30771919e-02 9.30570344e-02 + 9.30368899e-02 9.30167586e-02 9.29966403e-02 9.29765350e-02 9.29564428e-02 + 9.29363636e-02 9.29162974e-02 9.28962442e-02 9.28762040e-02 9.28561768e-02 + 9.28361624e-02 9.28161611e-02 9.27961726e-02 9.27761971e-02 9.27562344e-02 + 9.27362847e-02 9.27163478e-02 9.26964237e-02 9.26765125e-02 9.26566141e-02 + 9.26367286e-02 9.26168558e-02 9.25969958e-02 9.25771486e-02 9.25573141e-02 + 9.25374924e-02 9.25176834e-02 9.24978871e-02 9.24781036e-02 9.24583327e-02 + 9.24385745e-02 9.24188289e-02 9.23990960e-02 9.23793758e-02 9.23596681e-02 + 9.23399731e-02 9.23202907e-02 9.23006208e-02 9.22809635e-02 9.22613188e-02 + 9.22416866e-02 9.22220669e-02 9.22024597e-02 9.21828651e-02 9.21632829e-02 + 9.21437132e-02 9.21241560e-02 9.21046112e-02 9.20850788e-02 9.20655589e-02 + 9.20460514e-02 9.20265563e-02 9.20070735e-02 9.19876031e-02 9.19681451e-02 + 9.19486994e-02 9.19292661e-02 9.19098451e-02 9.18904363e-02 9.18710399e-02 + 9.18516557e-02 9.18322838e-02 9.18129242e-02 9.17935768e-02 9.17742416e-02 + 9.17549186e-02 9.17356079e-02 9.17163093e-02 9.16970229e-02 9.16777486e-02 + 9.16584865e-02 9.16392366e-02 9.16199987e-02 9.16007730e-02 9.15815594e-02 + 9.15623578e-02 9.15431684e-02 9.15239910e-02 9.15048256e-02 9.14856723e-02 + 9.14665310e-02 9.14474017e-02 9.14282844e-02 9.14091791e-02 9.13900857e-02 + 9.13710043e-02 9.13519349e-02 9.13328774e-02 9.13138318e-02 9.12947982e-02 + 9.12757764e-02 9.12567665e-02 9.12377685e-02 9.12187823e-02 9.11998080e-02 + 9.11808456e-02 9.11618949e-02 9.11429561e-02 9.11240290e-02 9.11051138e-02 + 9.10862103e-02 9.10673186e-02 9.10484386e-02 9.10295704e-02 9.10107139e-02 + 9.09918691e-02 9.09730360e-02 9.09542146e-02 9.09354049e-02 9.09166069e-02 + 9.08978205e-02 9.08790457e-02 9.08602826e-02 9.08415311e-02 9.08227911e-02 + 9.08040628e-02 9.07853461e-02 9.07666409e-02 9.07479473e-02 9.07292652e-02 + 9.07105947e-02 9.06919357e-02 9.06732882e-02 9.06546522e-02 9.06360277e-02 + 9.06174146e-02 9.05988131e-02 9.05802229e-02 9.05616442e-02 9.05430770e-02 + 9.05245211e-02 9.05059767e-02 9.04874436e-02 9.04689219e-02 9.04504116e-02 + 9.04319127e-02 9.04134251e-02 9.03949488e-02 9.03764839e-02 9.03580303e-02 + 9.03395879e-02 9.03211569e-02 9.03027371e-02 9.02843286e-02 9.02659313e-02 + 9.02475453e-02 9.02291706e-02 9.02108070e-02 9.01924546e-02 9.01741135e-02 + 9.01557835e-02 9.01374647e-02 9.01191571e-02 9.01008606e-02 9.00825752e-02 + 9.00643010e-02 9.00460379e-02 9.00277859e-02 9.00095450e-02 8.99913152e-02 + 8.99730965e-02 8.99548888e-02 8.99366921e-02 8.99185065e-02 8.99003320e-02 + 8.98821684e-02 8.98640159e-02 8.98458743e-02 8.98277437e-02 8.98096241e-02 + 8.97915155e-02 8.97734178e-02 8.97553311e-02 8.97372552e-02 8.97191903e-02 + 8.97011363e-02 8.96830932e-02 8.96650610e-02 8.96470396e-02 8.96290291e-02 + 8.96110295e-02 8.95930407e-02 8.95750627e-02 8.95570956e-02 8.95391392e-02 + 8.95211937e-02 8.95032589e-02 8.94853349e-02 8.94674217e-02 8.94495192e-02 + 8.94316275e-02 8.94137465e-02 8.93958762e-02 8.93780167e-02 8.93601678e-02 + 8.93423296e-02 8.93245021e-02 8.93066853e-02 8.92888791e-02 8.92710836e-02 + 8.92532987e-02 8.92355244e-02 8.92177608e-02 8.92000077e-02 8.91822653e-02 + 8.91645334e-02 8.91468121e-02 8.91291014e-02 8.91114012e-02 8.90937115e-02 + 8.90760324e-02 8.90583638e-02 8.90407057e-02 8.90230582e-02 8.90054211e-02 + 8.89877945e-02 8.89701783e-02 8.89525726e-02 8.89349774e-02 8.89173926e-02 + 8.88998182e-02 8.88822542e-02 8.88647007e-02 8.88471575e-02 8.88296247e-02 + 8.88121023e-02 8.87945903e-02 8.87770886e-02 8.87595973e-02 8.87421163e-02 + 8.87246456e-02 8.87071853e-02 8.86897352e-02 8.86722954e-02 8.86548660e-02 + 8.86374468e-02 8.86200378e-02 8.86026391e-02 8.85852507e-02 8.85678725e-02 + 8.85505045e-02 8.85331467e-02 8.85157991e-02 8.84984618e-02 8.84811346e-02 + 8.84638176e-02 8.84465107e-02 8.84292140e-02 8.84119274e-02 8.83946510e-02 + 8.83773847e-02 8.83601285e-02 8.83428825e-02 8.83256465e-02 8.83084206e-02 + 8.82912047e-02 8.82739990e-02 8.82568033e-02 8.82396176e-02 8.82224420e-02 + 8.82052764e-02 8.81881208e-02 8.81709752e-02 8.81538396e-02 8.81367140e-02 + 8.81195984e-02 8.81024927e-02 8.80853970e-02 8.80683113e-02 8.80512355e-02 + 8.80341696e-02 8.80171137e-02 8.80000676e-02 8.79830314e-02 8.79660052e-02 + 8.79489888e-02 8.79319823e-02 8.79149857e-02 8.78979989e-02 8.78810219e-02 + 8.78640548e-02 8.78470975e-02 8.78301500e-02 8.78132123e-02 8.77962845e-02 + 8.77793664e-02 8.77624580e-02 8.77455595e-02 8.77286707e-02 8.77117916e-02 + 8.76949223e-02 8.76780628e-02 8.76612129e-02 8.76443728e-02 8.76275423e-02 + 8.76107216e-02 8.75939105e-02 8.75771091e-02 8.75603174e-02 8.75435353e-02 + 8.75267629e-02 8.75100001e-02 8.74932469e-02 8.74765033e-02 8.74597694e-02 + 8.74430451e-02 8.74263303e-02 8.74096251e-02 8.73929296e-02 8.73762435e-02 + 8.73595670e-02 8.73429001e-02 8.73262427e-02 8.73095948e-02 8.72929565e-02 + 8.72763276e-02 8.72597083e-02 8.72430984e-02 8.72264981e-02 8.72099072e-02 + 8.71933257e-02 8.71767537e-02 8.71601912e-02 8.71436381e-02 8.71270944e-02 + 8.71105602e-02 8.70940353e-02 8.70775199e-02 8.70610138e-02 8.70445172e-02 + 8.70280299e-02 8.70115519e-02 8.69950834e-02 8.69786241e-02 8.69621742e-02 + 8.69457337e-02 8.69293024e-02 8.69128805e-02 8.68964679e-02 8.68800646e-02 + 8.68636705e-02 8.68472857e-02 8.68309103e-02 8.68145440e-02 8.67981870e-02 + 8.67818393e-02 8.67655008e-02 8.67491715e-02 8.67328514e-02 8.67165406e-02 + 8.67002389e-02 8.66839464e-02 8.66676631e-02 8.66513890e-02 8.66351240e-02 + 8.66188682e-02 8.66026216e-02 8.65863841e-02 8.65701557e-02 8.65539364e-02 + 8.65377263e-02 8.65215252e-02 8.65053333e-02 8.64891504e-02 8.64729766e-02 + 8.64568119e-02 8.64406563e-02 8.64245097e-02 8.64083721e-02 8.63922436e-02 + 8.63761241e-02 8.63600136e-02 8.63439122e-02 8.63278197e-02 8.63117363e-02 + 8.62956618e-02 8.62795963e-02 8.62635398e-02 8.62474922e-02 8.62314536e-02 + 8.62154239e-02 8.61994032e-02 8.61833914e-02 8.61673885e-02 8.61513945e-02 + 8.61354094e-02 8.61194332e-02 8.61034659e-02 8.60875075e-02 8.60715580e-02 + 8.60556173e-02 8.60396855e-02 8.60237625e-02 8.60078483e-02 8.59919430e-02 + 8.59760465e-02 8.59601588e-02 8.59442800e-02 8.59284099e-02 8.59125486e-02 + 8.58966961e-02 8.58808523e-02 8.58650173e-02 8.58491911e-02 8.58333736e-02 + 8.58175649e-02 8.58017649e-02 8.57859736e-02 8.57701911e-02 8.57544172e-02 + 8.57386520e-02 8.57228956e-02 8.57071478e-02 8.56914087e-02 8.56756782e-02 + 8.56599565e-02 8.56442433e-02 8.56285389e-02 8.56128430e-02 8.55971558e-02 + 8.55814772e-02 8.55658072e-02 8.55501458e-02 8.55344930e-02 8.55188488e-02 + 8.55032132e-02 8.54875862e-02 8.54719677e-02 8.54563578e-02 8.54407564e-02 + 8.54251636e-02 8.54095793e-02 8.53940035e-02 8.53784363e-02 8.53628775e-02 + 8.53473273e-02 8.53317855e-02 8.53162523e-02 8.53007275e-02 8.52852112e-02 + 8.52697034e-02 8.52542040e-02 8.52387130e-02 8.52232305e-02 8.52077565e-02 + 8.51922909e-02 8.51768336e-02 8.51613848e-02 8.51459444e-02 8.51305124e-02 + 8.51150888e-02 8.50996736e-02 8.50842667e-02 8.50688682e-02 8.50534780e-02 + 8.50380963e-02 8.50227228e-02 8.50073577e-02 8.49920009e-02 8.49766524e-02 + 8.49613123e-02 8.49459804e-02 8.49306569e-02 8.49153416e-02 8.49000346e-02 + 8.48847359e-02 8.48694455e-02 8.48541633e-02 8.48388893e-02 8.48236237e-02 + 8.48083662e-02 8.47931170e-02 8.47778760e-02 8.47626432e-02 8.47474187e-02 + 8.47322023e-02 8.47169941e-02 8.47017941e-02 8.46866023e-02 8.46714187e-02 + 8.46562432e-02 8.46410759e-02 8.46259167e-02 8.46107657e-02 8.45956228e-02 + 8.45804880e-02 8.45653614e-02 8.45502428e-02 8.45351324e-02 8.45200301e-02 + 8.45049358e-02 8.44898497e-02 8.44747716e-02 8.44597016e-02 8.44446397e-02 + 8.44295858e-02 8.44145399e-02 8.43995021e-02 8.43844724e-02 8.43694506e-02 + 8.43544369e-02 8.43394312e-02 8.43244335e-02 8.43094438e-02 8.42944621e-02 + 8.42794883e-02 8.42645226e-02 8.42495648e-02 8.42346150e-02 8.42196731e-02 + 8.42047392e-02 8.41898132e-02 8.41748952e-02 8.41599851e-02 8.41450829e-02 + 8.41301886e-02 8.41153022e-02 8.41004238e-02 8.40855532e-02 8.40706905e-02 + 8.40558357e-02 8.40409887e-02 8.40261496e-02 8.40113184e-02 8.39964950e-02 + 8.39816795e-02 8.39668718e-02 8.39520719e-02 8.39372799e-02 8.39224957e-02 + 8.39077193e-02 8.38929507e-02 8.38781898e-02 8.38634368e-02 8.38486916e-02 + 8.38339541e-02 8.38192244e-02 8.38045025e-02 8.37897883e-02 8.37750818e-02 + 8.37603831e-02 8.37456922e-02 8.37310089e-02 8.37163334e-02 8.37016656e-02 + 8.36870055e-02 8.36723531e-02 8.36577084e-02 8.36430714e-02 8.36284421e-02 + 8.36138204e-02 8.35992064e-02 8.35846001e-02 8.35700014e-02 8.35554104e-02 + 8.35408270e-02 8.35262512e-02 8.35116831e-02 8.34971226e-02 8.34825697e-02 + 8.34680244e-02 8.34534867e-02 8.34389566e-02 8.34244341e-02 8.34099191e-02 + 8.33954118e-02 8.33809120e-02 8.33664197e-02 8.33519351e-02 8.33374579e-02 + 8.33229883e-02 8.33085263e-02 8.32940718e-02 8.32796248e-02 8.32651853e-02 + 8.32507533e-02 8.32363288e-02 8.32219118e-02 8.32075023e-02 8.31931003e-02 + 8.31787058e-02 8.31643187e-02 8.31499391e-02 8.31355669e-02 8.31212022e-02 + 8.31068450e-02 8.30924951e-02 8.30781528e-02 8.30638178e-02 8.30494902e-02 + 8.30351701e-02 8.30208574e-02 8.30065520e-02 8.29922541e-02 8.29779635e-02 + 8.29636804e-02 8.29494046e-02 8.29351361e-02 8.29208751e-02 8.29066213e-02 + 8.28923750e-02 8.28781359e-02 8.28639042e-02 8.28496799e-02 8.28354628e-02 + 8.28212531e-02 8.28070507e-02 8.27928556e-02 8.27786678e-02 8.27644872e-02 + 8.27503140e-02 8.27361480e-02 8.27219893e-02 8.27078379e-02 8.26936938e-02 + 8.26795569e-02 8.26654272e-02 8.26513048e-02 8.26371896e-02 8.26230816e-02 + 8.26089809e-02 8.25948874e-02 8.25808011e-02 8.25667220e-02 8.25526501e-02 + 8.25385854e-02 8.25245279e-02 8.25104775e-02 8.24964344e-02 8.24823984e-02 + 8.24683695e-02 8.24543479e-02 8.24403333e-02 8.24263259e-02 8.24123257e-02 + 8.23983326e-02 8.23843466e-02 8.23703677e-02 8.23563960e-02 8.23424313e-02 + 8.23284737e-02 8.23145233e-02 8.23005799e-02 8.22866436e-02 8.22727144e-02 + 8.22587923e-02 8.22448772e-02 8.22309692e-02 8.22170683e-02 8.22031744e-02 + 8.21892875e-02 8.21754077e-02 8.21615349e-02 8.21476691e-02 8.21338103e-02 + 8.21199586e-02 8.21061138e-02 8.20922761e-02 8.20784453e-02 8.20646216e-02 + 8.20508048e-02 8.20369950e-02 8.20231922e-02 8.20093963e-02 8.19956074e-02 + 8.19818254e-02 8.19680504e-02 8.19542823e-02 8.19405212e-02 8.19267670e-02 + 8.19130197e-02 8.18992794e-02 8.18855459e-02 8.18718194e-02 8.18580997e-02 + 8.18443870e-02 8.18306811e-02 8.18169822e-02 8.18032901e-02 8.17896048e-02 + 8.17759265e-02 8.17622550e-02 8.17485903e-02 8.17349326e-02 8.17212816e-02 + 8.17076375e-02 8.16940002e-02 8.16803697e-02 8.16667461e-02 8.16531293e-02 + 8.16395193e-02 8.16259161e-02 8.16123197e-02 8.15987300e-02 8.15851472e-02 + 8.15715712e-02 8.15580019e-02 8.15444394e-02 8.15308836e-02 8.15173346e-02 + 8.15037924e-02 8.14902569e-02 8.14767282e-02 8.14632062e-02 8.14496909e-02 + 8.14361823e-02 8.14226805e-02 8.14091854e-02 8.13956970e-02 8.13822153e-02 + 8.13687402e-02 8.13552719e-02 8.13418103e-02 8.13283553e-02 8.13149070e-02 + 8.13014654e-02 8.12880305e-02 8.12746022e-02 8.12611805e-02 8.12477656e-02 + 8.12343572e-02 8.12209555e-02 8.12075604e-02 8.11941719e-02 8.11807901e-02 + 8.11674149e-02 8.11540463e-02 8.11406843e-02 8.11273288e-02 8.11139800e-02 + 8.11006378e-02 8.10873021e-02 8.10739731e-02 8.10606506e-02 8.10473346e-02 + 8.10340252e-02 8.10207224e-02 8.10074261e-02 8.09941364e-02 8.09808532e-02 + 8.09675765e-02 8.09543064e-02 8.09410428e-02 8.09277857e-02 8.09145351e-02 + 8.09012911e-02 8.08880535e-02 8.08748224e-02 8.08615978e-02 8.08483797e-02 + 8.08351681e-02 8.08219630e-02 8.08087643e-02 8.07955721e-02 8.07823863e-02 + 8.07692070e-02 8.07560342e-02 8.07428678e-02 8.07297078e-02 8.07165542e-02 + 8.07034071e-02 8.06902664e-02 8.06771322e-02 8.06640043e-02 8.06508829e-02 + 8.06377678e-02 8.06246592e-02 8.06115569e-02 8.05984610e-02 8.05853715e-02 + 8.05722884e-02 8.05592116e-02 8.05461412e-02 8.05330772e-02 8.05200195e-02 + 8.05069682e-02 8.04939232e-02 8.04808846e-02 8.04678523e-02 8.04548263e-02 + 8.04418066e-02 8.04287933e-02 8.04157863e-02 8.04027856e-02 8.03897912e-02 + 8.03768031e-02 8.03638212e-02 8.03508457e-02 8.03378765e-02 8.03249135e-02 + 8.03119568e-02 8.02990064e-02 8.02860622e-02 8.02731243e-02 8.02601926e-02 + 8.02472672e-02 8.02343481e-02 8.02214351e-02 8.02085284e-02 8.01956280e-02 + 8.01827337e-02 8.01698457e-02 8.01569639e-02 8.01440883e-02 8.01312189e-02 + 8.01183557e-02 8.01054986e-02 8.00926478e-02 8.00798032e-02 8.00669647e-02 + 8.00541324e-02 8.00413063e-02 8.00284863e-02 8.00156725e-02 8.00028649e-02 + 7.99900634e-02 7.99772680e-02 7.99644788e-02 7.99516957e-02 7.99389187e-02 + 7.99261479e-02 7.99133832e-02 7.99006246e-02 7.98878721e-02 7.98751257e-02 + 7.98623854e-02 7.98496512e-02 7.98369231e-02 7.98242011e-02 7.98114851e-02 + 7.97987753e-02 7.97860715e-02 7.97733737e-02 7.97606821e-02 7.97479965e-02 + 7.97353169e-02 7.97226434e-02 7.97099759e-02 7.96973145e-02 7.96846590e-02 + 7.96720097e-02 7.96593663e-02 7.96467290e-02 7.96340976e-02 7.96214723e-02 + 7.96088530e-02 7.95962397e-02 7.95836323e-02 7.95710310e-02 7.95584356e-02 + 7.95458463e-02 7.95332629e-02 7.95206854e-02 7.95081140e-02 7.94955485e-02 + 7.94829889e-02 7.94704353e-02 7.94578877e-02 7.94453459e-02 7.94328102e-02 + 7.94202803e-02 7.94077564e-02 7.93952384e-02 7.93827263e-02 7.93702202e-02 + 7.93577199e-02 7.93452256e-02 7.93327371e-02 7.93202546e-02 7.93077779e-02 + 7.92953071e-02 7.92828423e-02 7.92703832e-02 7.92579301e-02 7.92454828e-02 + 7.92330414e-02 7.92206058e-02 7.92081761e-02 7.91957523e-02 7.91833343e-02 + 7.91709221e-02 7.91585157e-02 7.91461152e-02 7.91337206e-02 7.91213317e-02 + 7.91089486e-02 7.90965714e-02 7.90842000e-02 7.90718344e-02 7.90594746e-02 + 7.90471205e-02 7.90347723e-02 7.90224298e-02 7.90100932e-02 7.89977623e-02 + 7.89854371e-02 7.89731178e-02 7.89608042e-02 7.89484964e-02 7.89361943e-02 + 7.89238979e-02 7.89116073e-02 7.88993225e-02 7.88870434e-02 7.88747700e-02 + 7.88625023e-02 7.88502404e-02 7.88379842e-02 7.88257337e-02 7.88134889e-02 + 7.88012498e-02 7.87890164e-02 7.87767887e-02 7.87645667e-02 7.87523504e-02 + 7.87401398e-02 7.87279348e-02 7.87157355e-02 7.87035419e-02 7.86913540e-02 + 7.86791717e-02 7.86669951e-02 7.86548241e-02 7.86426588e-02 7.86304991e-02 + 7.86183450e-02 7.86061966e-02 7.85940538e-02 7.85819167e-02 7.85697851e-02 + 7.85576592e-02 7.85455389e-02 7.85334242e-02 7.85213151e-02 7.85092116e-02 + 7.84971137e-02 7.84850214e-02 7.84729347e-02 7.84608535e-02 7.84487780e-02 + 7.84367080e-02 7.84246436e-02 7.84125847e-02 7.84005314e-02 7.83884837e-02 + 7.83764415e-02 7.83644048e-02 7.83523737e-02 7.83403482e-02 7.83283282e-02 + 7.83163137e-02 7.83043047e-02 7.82923013e-02 7.82803034e-02 7.82683110e-02 + 7.82563241e-02 7.82443427e-02 7.82323668e-02 7.82203964e-02 7.82084315e-02 + 7.81964721e-02 7.81845182e-02 7.81725697e-02 7.81606268e-02 7.81486893e-02 + 7.81367572e-02 7.81248307e-02 7.81129096e-02 7.81009939e-02 7.80890837e-02 + 7.80771790e-02 7.80652797e-02 7.80533858e-02 7.80414974e-02 7.80296144e-02 + 7.80177368e-02 7.80058646e-02 7.79939979e-02 7.79821366e-02 7.79702807e-02 + 7.79584302e-02 7.79465851e-02 7.79347454e-02 7.79229111e-02 7.79110821e-02 + 7.78992586e-02 7.78874404e-02 7.78756277e-02 7.78638202e-02 7.78520182e-02 + 7.78402215e-02 7.78284302e-02 7.78166443e-02 7.78048637e-02 7.77930884e-02 + 7.77813185e-02 7.77695539e-02 7.77577947e-02 7.77460408e-02 7.77342922e-02 + 7.77225490e-02 7.77108111e-02 7.76990785e-02 7.76873512e-02 7.76756292e-02 + 7.76639125e-02 7.76522011e-02 7.76404950e-02 7.76287942e-02 7.76170987e-02 + 7.76054085e-02 7.75937236e-02 7.75820439e-02 7.75703695e-02 7.75587004e-02 + 7.75470365e-02 7.75353780e-02 7.75237246e-02 7.75120765e-02 7.75004337e-02 + 7.74887961e-02 7.74771637e-02 7.74655366e-02 7.74539147e-02 7.74422981e-02 + 7.74306867e-02 7.74190805e-02 7.74074795e-02 7.73958837e-02 7.73842931e-02 + 7.73727078e-02 7.73611276e-02 7.73495527e-02 7.73379829e-02 7.73264183e-02 + 7.73148589e-02 7.73033047e-02 7.72917557e-02 7.72802118e-02 7.72686732e-02 + 7.72571396e-02 7.72456113e-02 7.72340881e-02 7.72225701e-02 7.72110572e-02 + 7.71995494e-02 7.71880468e-02 7.71765494e-02 7.71650571e-02 7.71535699e-02 + 7.71420878e-02 7.71306109e-02 7.71191391e-02 7.71076724e-02 7.70962108e-02 + 7.70847543e-02 7.70733030e-02 7.70618567e-02 7.70504155e-02 7.70389795e-02 + 7.70275485e-02 7.70161226e-02 7.70047018e-02 7.69932860e-02 7.69818754e-02 + 7.69704698e-02 7.69590693e-02 7.69476738e-02 7.69362834e-02 7.69248981e-02 + 7.69135178e-02 7.69021426e-02 7.68907724e-02 7.68794073e-02 7.68680472e-02 + 7.68566921e-02 7.68453420e-02 7.68339970e-02 7.68226570e-02 7.68113221e-02 + 7.67999921e-02 7.67886672e-02 7.67773472e-02 7.67660323e-02 7.67547224e-02 + 7.67434174e-02 7.67321175e-02 7.67208226e-02 7.67095326e-02 7.66982476e-02 + 7.66869676e-02 7.66756926e-02 7.66644225e-02 7.66531574e-02 7.66418973e-02 + 7.66306422e-02 7.66193920e-02 7.66081467e-02 7.65969064e-02 7.65856711e-02 + 7.65744407e-02 7.65632152e-02 7.65519946e-02 7.65407790e-02 7.65295684e-02 + 7.65183626e-02 7.65071618e-02 7.64959659e-02 7.64847749e-02 7.64735888e-02 + 7.64624076e-02 7.64512313e-02 7.64400599e-02 7.64288935e-02 7.64177319e-02 + 7.64065752e-02 7.63954233e-02 7.63842764e-02 7.63731343e-02 7.63619972e-02 + 7.63508648e-02 7.63397374e-02 7.63286148e-02 7.63174971e-02 7.63063842e-02 + 7.62952762e-02 7.62841730e-02 7.62730747e-02 7.62619813e-02 7.62508926e-02 + 7.62398088e-02 7.62287298e-02 7.62176557e-02 7.62065864e-02 7.61955219e-02 + 7.61844622e-02 7.61734074e-02 7.61623573e-02 7.61513121e-02 7.61402716e-02 + 7.61292360e-02 7.61182052e-02 7.61071791e-02 7.60961579e-02 7.60851414e-02 + 7.60741297e-02 7.60631228e-02 7.60521207e-02 7.60411233e-02 7.60301307e-02 + 7.60191429e-02 7.60081598e-02 7.59971815e-02 7.59862080e-02 7.59752392e-02 + 7.59642751e-02 7.59533158e-02 7.59423613e-02 7.59314115e-02 7.59204664e-02 + 7.59095260e-02 7.58985904e-02 7.58876595e-02 7.58767333e-02 7.58658119e-02 + 7.58548951e-02 7.58439831e-02 7.58330758e-02 7.58221731e-02 7.58112752e-02 + 7.58003820e-02 7.57894935e-02 7.57786096e-02 7.57677305e-02 7.57568560e-02 + 7.57459862e-02 7.57351211e-02 7.57242607e-02 7.57134049e-02 7.57025538e-02 + 7.56917074e-02 7.56808656e-02 7.56700285e-02 7.56591961e-02 7.56483683e-02 + 7.56375451e-02 7.56267266e-02 7.56159127e-02 7.56051035e-02 7.55942989e-02 + 7.55834989e-02 7.55727035e-02 7.55619128e-02 7.55511267e-02 7.55403452e-02 + 7.55295684e-02 7.55187961e-02 7.55080285e-02 7.54972654e-02 7.54865070e-02 + 7.54757531e-02 7.54650039e-02 7.54542592e-02 7.54435192e-02 7.54327837e-02 + 7.54220528e-02 7.54113264e-02 7.54006047e-02 7.53898875e-02 7.53791749e-02 + 7.53684669e-02 7.53577634e-02 7.53470644e-02 7.53363701e-02 7.53256803e-02 + 7.53149950e-02 7.53043143e-02 7.52936381e-02 7.52829665e-02 7.52722994e-02 + 7.52616368e-02 7.52509787e-02 7.52403252e-02 7.52296762e-02 7.52190318e-02 + 7.52083918e-02 7.51977564e-02 7.51871255e-02 7.51764990e-02 7.51658771e-02 + 7.51552597e-02 7.51446468e-02 7.51340384e-02 7.51234344e-02 7.51128350e-02 + 7.51022400e-02 7.50916496e-02 7.50810636e-02 7.50704821e-02 7.50599050e-02 + 7.50493324e-02 7.50387643e-02 7.50282007e-02 7.50176415e-02 7.50070868e-02 + 7.49965365e-02 7.49859907e-02 7.49754493e-02 7.49649123e-02 7.49543799e-02 + 7.49438518e-02 7.49333282e-02 7.49228090e-02 7.49122942e-02 7.49017839e-02 + 7.48912780e-02 7.48807765e-02 7.48702794e-02 7.48597868e-02 7.48492985e-02 + 7.48388147e-02 7.48283352e-02 7.48178602e-02 7.48073895e-02 7.47969233e-02 + 7.47864614e-02 7.47760040e-02 7.47655509e-02 7.47551022e-02 7.47446579e-02 + 7.47342179e-02 7.47237824e-02 7.47133512e-02 7.47029243e-02 7.46925019e-02 + 7.46820838e-02 7.46716700e-02 7.46612606e-02 7.46508556e-02 7.46404549e-02 + 7.46300586e-02 7.46196666e-02 7.46092789e-02 7.45988956e-02 7.45885166e-02 + 7.45781419e-02 7.45677716e-02 7.45574056e-02 7.45470439e-02 7.45366865e-02 + 7.45263335e-02 7.45159847e-02 7.45056403e-02 7.44953002e-02 7.44849644e-02 + 7.44746329e-02 7.44643056e-02 7.44539827e-02 7.44436641e-02 7.44333497e-02 + 7.44230397e-02 7.44127339e-02 7.44024324e-02 7.43921352e-02 7.43818423e-02 + 7.43715536e-02 7.43612692e-02 7.43509890e-02 7.43407132e-02 7.43304416e-02 + 7.43201742e-02 7.43099111e-02 7.42996522e-02 7.42893976e-02 7.42791473e-02 + 7.42689011e-02 7.42586593e-02 7.42484216e-02 7.42381882e-02 7.42279590e-02 + 7.42177341e-02 7.42075133e-02 7.41972968e-02 7.41870845e-02 7.41768765e-02 + 7.41666726e-02 7.41564729e-02 7.41462775e-02 7.41360863e-02 7.41258992e-02 + 7.41157164e-02 7.41055377e-02 7.40953633e-02 7.40851930e-02 7.40750269e-02 + 7.40648650e-02 7.40547073e-02 7.40445538e-02 7.40344044e-02 7.40242592e-02 + 7.40141182e-02 7.40039814e-02 7.39938487e-02 7.39837202e-02 7.39735958e-02 + 7.39634756e-02 7.39533595e-02 7.39432476e-02 7.39331398e-02 7.39230362e-02 + 7.39129367e-02 7.39028414e-02 7.38927502e-02 7.38826631e-02 7.38725802e-02 + 7.38625014e-02 7.38524267e-02 7.38423561e-02 7.38322896e-02 7.38222273e-02 + 7.38121691e-02 7.38021150e-02 7.37920650e-02 7.37820191e-02 7.37719773e-02 + 7.37619396e-02 7.37519060e-02 7.37418765e-02 7.37318510e-02 7.37218297e-02 + 7.37118125e-02 7.37017993e-02 7.36917902e-02 7.36817852e-02 7.36717843e-02 + 7.36617874e-02 7.36517946e-02 7.36418059e-02 7.36318212e-02 7.36218406e-02 + 7.36118641e-02 7.36018916e-02 7.35919231e-02 7.35819587e-02 7.35719984e-02 + 7.35620421e-02 7.35520898e-02 7.35421416e-02 7.35321974e-02 7.35222572e-02 + 7.35123211e-02 7.35023890e-02 7.34924610e-02 7.34825369e-02 7.34726169e-02 + 7.34627009e-02 7.34527889e-02 7.34428809e-02 7.34329769e-02 7.34230769e-02 + 7.34131809e-02 7.34032890e-02 7.33934010e-02 7.33835170e-02 7.33736370e-02 + 7.33637610e-02 7.33538890e-02 7.33440210e-02 7.33341569e-02 7.33242969e-02 + 7.33144408e-02 7.33045886e-02 7.32947405e-02 7.32848963e-02 7.32750561e-02 + 7.32652199e-02 7.32553876e-02 7.32455592e-02 7.32357348e-02 7.32259144e-02 + 7.32160979e-02 7.32062854e-02 7.31964768e-02 7.31866722e-02 7.31768715e-02 + 7.31670747e-02 7.31572819e-02 7.31474930e-02 7.31377080e-02 7.31279269e-02 + 7.31181498e-02 7.31083766e-02 7.30986073e-02 7.30888419e-02 7.30790805e-02 + 7.30693229e-02 7.30595693e-02 7.30498195e-02 7.30400737e-02 7.30303318e-02 + 7.30205937e-02 7.30108596e-02 7.30011293e-02 7.29914030e-02 7.29816805e-02 + 7.29719619e-02 7.29622472e-02 7.29525364e-02 7.29428294e-02 7.29331263e-02 + 7.29234271e-02 7.29137318e-02 7.29040403e-02 7.28943527e-02 7.28846689e-02 + 7.28749890e-02 7.28653130e-02 7.28556408e-02 7.28459725e-02 7.28363080e-02 + 7.28266473e-02 7.28169905e-02 7.28073376e-02 7.27976885e-02 7.27880432e-02 + 7.27784017e-02 7.27687641e-02 7.27591303e-02 7.27495003e-02 7.27398742e-02 + 7.27302519e-02 7.27206334e-02 7.27110187e-02 7.27014078e-02 7.26918007e-02 + 7.26821975e-02 7.26725980e-02 7.26630023e-02 7.26534105e-02 7.26438224e-02 + 7.26342382e-02 7.26246577e-02 7.26150810e-02 7.26055081e-02 7.25959390e-02 + 7.25863737e-02 7.25768121e-02 7.25672544e-02 7.25577004e-02 7.25481502e-02 + 7.25386037e-02 7.25290610e-02 7.25195221e-02 7.25099870e-02 7.25004556e-02 + 7.24909279e-02 7.24814040e-02 7.24718839e-02 7.24623675e-02 7.24528549e-02 + 7.24433460e-02 7.24338409e-02 7.24243395e-02 7.24148418e-02 7.24053479e-02 + 7.23958577e-02 7.23863712e-02 7.23768885e-02 7.23674095e-02 7.23579342e-02 + 7.23484626e-02 7.23389948e-02 7.23295307e-02 7.23200702e-02 7.23106135e-02 + 7.23011605e-02 7.22917112e-02 7.22822656e-02 7.22728238e-02 7.22633856e-02 + 7.22539511e-02 7.22445203e-02 7.22350932e-02 7.22256698e-02 7.22162500e-02 + 7.22068340e-02 7.21974216e-02 7.21880130e-02 7.21786080e-02 7.21692066e-02 + 7.21598090e-02 7.21504150e-02 7.21410247e-02 7.21316380e-02 7.21222550e-02 + 7.21128757e-02 7.21035000e-02 7.20941280e-02 7.20847596e-02 7.20753949e-02 + 7.20660339e-02 7.20566765e-02 7.20473227e-02 7.20379726e-02 7.20286261e-02 + 7.20192832e-02 7.20099440e-02 7.20006084e-02 7.19912765e-02 7.19819481e-02 + 7.19726234e-02 7.19633024e-02 7.19539849e-02 7.19446711e-02 7.19353608e-02 + 7.19260542e-02 7.19167512e-02 7.19074518e-02 7.18981560e-02 7.18888639e-02 + 7.18795753e-02 7.18702903e-02 7.18610089e-02 7.18517311e-02 7.18424569e-02 + 7.18331863e-02 7.18239193e-02 7.18146559e-02 7.18053960e-02 7.17961398e-02 + 7.17868871e-02 7.17776380e-02 7.17683924e-02 7.17591505e-02 7.17499121e-02 + 7.17406772e-02 7.17314460e-02 7.17222183e-02 7.17129941e-02 7.17037735e-02 + 7.16945565e-02 7.16853430e-02 7.16761331e-02 7.16669267e-02 7.16577239e-02 + 7.16485246e-02 7.16393289e-02 7.16301367e-02 7.16209480e-02 7.16117629e-02 + 7.16025813e-02 7.15934032e-02 7.15842287e-02 7.15750577e-02 7.15658902e-02 + 7.15567262e-02 7.15475658e-02 7.15384089e-02 7.15292555e-02 7.15201056e-02 + 7.15109592e-02 7.15018163e-02 7.14926769e-02 7.14835410e-02 7.14744087e-02 + 7.14652798e-02 7.14561544e-02 7.14470325e-02 7.14379142e-02 7.14287993e-02 + 7.14196878e-02 7.14105799e-02 7.14014755e-02 7.13923745e-02 7.13832770e-02 + 7.13741830e-02 7.13650925e-02 7.13560055e-02 7.13469219e-02 7.13378418e-02 + 7.13287651e-02 7.13196919e-02 7.13106222e-02 7.13015559e-02 7.12924931e-02 + 7.12834338e-02 7.12743779e-02 7.12653254e-02 7.12562764e-02 7.12472309e-02 + 7.12381888e-02 7.12291501e-02 7.12201149e-02 7.12110831e-02 7.12020547e-02 + 7.11930298e-02 7.11840083e-02 7.11749902e-02 7.11659756e-02 7.11569644e-02 + 7.11479566e-02 7.11389522e-02 7.11299512e-02 7.11209537e-02 7.11119596e-02 + 7.11029689e-02 7.10939816e-02 7.10849977e-02 7.10760172e-02 7.10670401e-02 + 7.10580664e-02 7.10490961e-02 7.10401292e-02 7.10311657e-02 7.10222056e-02 + 7.10132489e-02 7.10042956e-02 7.09953456e-02 7.09863990e-02 7.09774559e-02 + 7.09685161e-02 7.09595796e-02 7.09506466e-02 7.09417169e-02 7.09327906e-02 + 7.09238677e-02 7.09149481e-02 7.09060319e-02 7.08971191e-02 7.08882096e-02 + 7.08793035e-02 7.08704007e-02 7.08615013e-02 7.08526052e-02 7.08437125e-02 + 7.08348231e-02 7.08259371e-02 7.08170544e-02 7.08081751e-02 7.07992991e-02 + 7.07904264e-02 7.07815571e-02 7.07726911e-02 7.07638285e-02 7.07549691e-02 + 7.07461131e-02 7.07372604e-02 7.07284111e-02 7.07195650e-02 7.07107223e-02 + 7.07018829e-02 7.06930468e-02 7.06842141e-02 7.06753846e-02 7.06665584e-02 + 7.06577356e-02 7.06489160e-02 7.06400998e-02 7.06312868e-02 7.06224772e-02 + 7.06136708e-02 7.06048678e-02 7.05960680e-02 7.05872715e-02 7.05784783e-02 + 7.05696884e-02 7.05609018e-02 7.05521184e-02 7.05433384e-02 7.05345616e-02 + 1.00000000e+00 9.75894263e-01 9.53451752e-01 9.32489601e-01 9.12851907e-01 + 8.94404826e-01 8.77032714e-01 8.60635068e-01 8.45124065e-01 8.30422576e-01 + 8.16462554e-01 8.03183696e-01 7.90532350e-01 7.78460602e-01 7.66925506e-01 + 7.55888443e-01 7.45314577e-01 7.35172390e-01 7.25433287e-01 7.16071258e-01 + 7.07062580e-01 6.98385572e-01 6.90020370e-01 6.81948734e-01 6.74153887e-01 + 6.66620364e-01 6.59333880e-01 6.52281224e-01 6.45450150e-01 6.38829295e-01 + 6.32408091e-01 6.26176704e-01 6.20125961e-01 6.14247300e-01 6.08532716e-01 + 6.02974715e-01 5.97566276e-01 5.92300808e-01 5.87172122e-01 5.82174396e-01 + 5.77302151e-01 5.72550221e-01 5.67913735e-01 5.63388093e-01 5.58968948e-01 + 5.54652188e-01 5.50433918e-01 5.46310451e-01 5.42278287e-01 5.38334105e-01 + 5.34474753e-01 5.30697232e-01 5.26998691e-01 5.23376415e-01 5.19827818e-01 + 5.16350438e-01 5.12941922e-01 5.09600027e-01 5.06322612e-01 5.03107629e-01 + 4.99953120e-01 4.96857213e-01 4.93818117e-01 4.90834114e-01 4.87903560e-01 + 4.85024878e-01 4.82196556e-01 4.79417141e-01 4.76685242e-01 4.73999519e-01 + 4.71358685e-01 4.68761505e-01 4.66206788e-01 4.63693390e-01 4.61220209e-01 + 4.58786184e-01 4.56390292e-01 4.54031548e-01 4.51709002e-01 4.49421737e-01 + 4.47168870e-01 4.44949545e-01 4.42762941e-01 4.40608259e-01 4.38484731e-01 + 4.36391613e-01 4.34328187e-01 4.32293756e-01 4.30287649e-01 4.28309213e-01 + 4.26357819e-01 4.24432857e-01 4.22533734e-01 4.20659877e-01 4.18810733e-01 + 4.16985761e-01 4.15184441e-01 4.13406264e-01 4.11650741e-01 4.09917394e-01 + 4.08205761e-01 4.06515390e-01 4.04845847e-01 4.03196706e-01 4.01567556e-01 + 3.99957996e-01 3.98367636e-01 3.96796098e-01 3.95243014e-01 3.93708024e-01 + 3.92190780e-01 3.90690944e-01 3.89208184e-01 3.87742180e-01 3.86292617e-01 + 3.84859191e-01 3.83441605e-01 3.82039569e-01 3.80652800e-01 3.79281024e-01 + 3.77923973e-01 3.76581385e-01 3.75253005e-01 3.73938583e-01 3.72637878e-01 + 3.71350652e-01 3.70076675e-01 3.68815719e-01 3.67567566e-01 3.66332000e-01 + 3.65108810e-01 3.63897792e-01 3.62698745e-01 3.61511473e-01 3.60335785e-01 + 3.59171493e-01 3.58018415e-01 3.56876371e-01 3.55745187e-01 3.54624691e-01 + 3.53514717e-01 3.52415101e-01 3.51325683e-01 3.50246306e-01 3.49176816e-01 + 3.48117064e-01 3.47066903e-01 3.46026189e-01 3.44994782e-01 3.43972542e-01 + 3.42959337e-01 3.41955032e-01 3.40959498e-01 3.39972609e-01 3.38994241e-01 + 3.38024270e-01 3.37062579e-01 3.36109049e-01 3.35163566e-01 3.34226018e-01 + 3.33296293e-01 3.32374284e-01 3.31459885e-01 3.30552992e-01 3.29653502e-01 + 3.28761315e-01 3.27876333e-01 3.26998460e-01 3.26127600e-01 3.25263662e-01 + 3.24406553e-01 3.23556184e-01 3.22712468e-01 3.21875318e-01 3.21044649e-01 + 3.20220378e-01 3.19402424e-01 3.18590706e-01 3.17785145e-01 3.16985665e-01 + 3.16192188e-01 3.15404639e-01 3.14622947e-01 3.13847038e-01 3.13076841e-01 + 3.12312287e-01 3.11553306e-01 3.10799833e-01 3.10051800e-01 3.09309142e-01 + 3.08571795e-01 3.07839697e-01 3.07112784e-01 3.06390997e-01 3.05674275e-01 + 3.04962560e-01 3.04255793e-01 3.03553917e-01 3.02856876e-01 3.02164615e-01 + 3.01477079e-01 3.00794216e-01 3.00115971e-01 2.99442294e-01 2.98773134e-01 + 2.98108439e-01 2.97448161e-01 2.96792252e-01 2.96140662e-01 2.95493345e-01 + 2.94850254e-01 2.94211344e-01 2.93576570e-01 2.92945886e-01 2.92319250e-01 + 2.91696618e-01 2.91077947e-01 2.90463197e-01 2.89852325e-01 2.89245291e-01 + 2.88642055e-01 2.88042577e-01 2.87446820e-01 2.86854743e-01 2.86266311e-01 + 2.85681484e-01 2.85100228e-01 2.84522505e-01 2.83948280e-01 2.83377517e-01 + 2.82810183e-01 2.82246243e-01 2.81685662e-01 2.81128409e-01 2.80574450e-01 + 2.80023753e-01 2.79476286e-01 2.78932017e-01 2.78390916e-01 2.77852951e-01 + 2.77318094e-01 2.76786313e-01 2.76257580e-01 2.75731865e-01 2.75209140e-01 + 2.74689377e-01 2.74172548e-01 2.73658625e-01 2.73147581e-01 2.72639389e-01 + 2.72134024e-01 2.71631458e-01 2.71131667e-01 2.70634624e-01 2.70140305e-01 + 2.69648684e-01 2.69159738e-01 2.68673442e-01 2.68189772e-01 2.67708706e-01 + 2.67230218e-01 2.66754287e-01 2.66280890e-01 2.65810005e-01 2.65341608e-01 + 2.64875680e-01 2.64412197e-01 2.63951138e-01 2.63492483e-01 2.63036211e-01 + 2.62582301e-01 2.62130732e-01 2.61681486e-01 2.61234541e-01 2.60789879e-01 + 2.60347479e-01 2.59907323e-01 2.59469393e-01 2.59033668e-01 2.58600131e-01 + 2.58168764e-01 2.57739549e-01 2.57312467e-01 2.56887501e-01 2.56464633e-01 + 2.56043847e-01 2.55625126e-01 2.55208452e-01 2.54793809e-01 2.54381180e-01 + 2.53970550e-01 2.53561902e-01 2.53155220e-01 2.52750489e-01 2.52347693e-01 + 2.51946816e-01 2.51547844e-01 2.51150761e-01 2.50755553e-01 2.50362204e-01 + 2.49970701e-01 2.49581029e-01 2.49193173e-01 2.48807120e-01 2.48422856e-01 + 2.48040367e-01 2.47659639e-01 2.47280658e-01 2.46903413e-01 2.46527888e-01 + 2.46154072e-01 2.45781951e-01 2.45411513e-01 2.45042745e-01 2.44675634e-01 + 2.44310168e-01 2.43946335e-01 2.43584122e-01 2.43223518e-01 2.42864511e-01 + 2.42507089e-01 2.42151241e-01 2.41796954e-01 2.41444218e-01 2.41093021e-01 + 2.40743352e-01 2.40395201e-01 2.40048555e-01 2.39703404e-01 2.39359739e-01 + 2.39017547e-01 2.38676818e-01 2.38337542e-01 2.37999710e-01 2.37663309e-01 + 2.37328332e-01 2.36994766e-01 2.36662603e-01 2.36331833e-01 2.36002446e-01 + 2.35674432e-01 2.35347783e-01 2.35022487e-01 2.34698537e-01 2.34375923e-01 + 2.34054635e-01 2.33734666e-01 2.33416004e-01 2.33098643e-01 2.32782573e-01 + 2.32467784e-01 2.32154270e-01 2.31842020e-01 2.31531028e-01 2.31221283e-01 + 2.30912778e-01 2.30605504e-01 2.30299454e-01 2.29994620e-01 2.29690992e-01 + 2.29388564e-01 2.29087328e-01 2.28787275e-01 2.28488398e-01 2.28190689e-01 + 2.27894141e-01 2.27598746e-01 2.27304497e-01 2.27011386e-01 2.26719406e-01 + 2.26428550e-01 2.26138810e-01 2.25850180e-01 2.25562652e-01 2.25276219e-01 + 2.24990875e-01 2.24706613e-01 2.24423425e-01 2.24141305e-01 2.23860246e-01 + 2.23580243e-01 2.23301287e-01 2.23023372e-01 2.22746493e-01 2.22470643e-01 + 2.22195814e-01 2.21922002e-01 2.21649200e-01 2.21377401e-01 2.21106599e-01 + 2.20836789e-01 2.20567964e-01 2.20300119e-01 2.20033247e-01 2.19767342e-01 + 2.19502400e-01 2.19238413e-01 2.18975376e-01 2.18713284e-01 2.18452130e-01 + 2.18191910e-01 2.17932618e-01 2.17674247e-01 2.17416794e-01 2.17160252e-01 + 2.16904616e-01 2.16649880e-01 2.16396040e-01 2.16143090e-01 2.15891025e-01 + 2.15639840e-01 2.15389530e-01 2.15140089e-01 2.14891513e-01 2.14643796e-01 + 2.14396935e-01 2.14150923e-01 2.13905756e-01 2.13661429e-01 2.13417937e-01 + 2.13175276e-01 2.12933441e-01 2.12692427e-01 2.12452229e-01 2.12212843e-01 + 2.11974265e-01 2.11736490e-01 2.11499513e-01 2.11263330e-01 2.11027936e-01 + 2.10793328e-01 2.10559500e-01 2.10326449e-01 2.10094169e-01 2.09862658e-01 + 2.09631910e-01 2.09401922e-01 2.09172689e-01 2.08944208e-01 2.08716473e-01 + 2.08489481e-01 2.08263229e-01 2.08037711e-01 2.07812924e-01 2.07588865e-01 + 2.07365528e-01 2.07142911e-01 2.06921010e-01 2.06699820e-01 2.06479337e-01 + 2.06259559e-01 2.06040481e-01 2.05822100e-01 2.05604412e-01 2.05387413e-01 + 2.05171099e-01 2.04955468e-01 2.04740515e-01 2.04526237e-01 2.04312630e-01 + 2.04099691e-01 2.03887417e-01 2.03675803e-01 2.03464847e-01 2.03254545e-01 + 2.03044894e-01 2.02835891e-01 2.02627531e-01 2.02419812e-01 2.02212731e-01 + 2.02006284e-01 2.01800468e-01 2.01595280e-01 2.01390716e-01 2.01186774e-01 + 2.00983451e-01 2.00780742e-01 2.00578646e-01 2.00377158e-01 2.00176277e-01 + 1.99975998e-01 1.99776320e-01 1.99577238e-01 1.99378751e-01 1.99180854e-01 + 1.98983546e-01 1.98786822e-01 1.98590681e-01 1.98395120e-01 1.98200135e-01 + 1.98005724e-01 1.97811884e-01 1.97618612e-01 1.97425905e-01 1.97233761e-01 + 1.97042177e-01 1.96851151e-01 1.96660678e-01 1.96470758e-01 1.96281387e-01 + 1.96092562e-01 1.95904281e-01 1.95716541e-01 1.95529341e-01 1.95342676e-01 + 1.95156545e-01 1.94970945e-01 1.94785873e-01 1.94601328e-01 1.94417306e-01 + 1.94233805e-01 1.94050823e-01 1.93868357e-01 1.93686404e-01 1.93504963e-01 + 1.93324031e-01 1.93143606e-01 1.92963685e-01 1.92784265e-01 1.92605345e-01 + 1.92426923e-01 1.92248995e-01 1.92071560e-01 1.91894616e-01 1.91718159e-01 + 1.91542189e-01 1.91366702e-01 1.91191696e-01 1.91017170e-01 1.90843121e-01 + 1.90669546e-01 1.90496445e-01 1.90323814e-01 1.90151652e-01 1.89979956e-01 + 1.89808724e-01 1.89637954e-01 1.89467644e-01 1.89297793e-01 1.89128397e-01 + 1.88959456e-01 1.88790966e-01 1.88622926e-01 1.88455335e-01 1.88288189e-01 + 1.88121487e-01 1.87955227e-01 1.87789407e-01 1.87624025e-01 1.87459079e-01 + 1.87294568e-01 1.87130489e-01 1.86966840e-01 1.86803620e-01 1.86640827e-01 + 1.86478458e-01 1.86316513e-01 1.86154989e-01 1.85993884e-01 1.85833197e-01 + 1.85672925e-01 1.85513068e-01 1.85353622e-01 1.85194587e-01 1.85035961e-01 + 1.84877742e-01 1.84719927e-01 1.84562517e-01 1.84405508e-01 1.84248899e-01 + 1.84092688e-01 1.83936874e-01 1.83781455e-01 1.83626429e-01 1.83471795e-01 + 1.83317551e-01 1.83163695e-01 1.83010226e-01 1.82857142e-01 1.82704442e-01 + 1.82552123e-01 1.82400185e-01 1.82248626e-01 1.82097444e-01 1.81946637e-01 + 1.81796204e-01 1.81646144e-01 1.81496455e-01 1.81347136e-01 1.81198184e-01 + 1.81049599e-01 1.80901378e-01 1.80753522e-01 1.80606027e-01 1.80458892e-01 + 1.80312117e-01 1.80165699e-01 1.80019637e-01 1.79873930e-01 1.79728576e-01 + 1.79583574e-01 1.79438922e-01 1.79294620e-01 1.79150665e-01 1.79007056e-01 + 1.78863792e-01 1.78720871e-01 1.78578292e-01 1.78436054e-01 1.78294156e-01 + 1.78152595e-01 1.78011371e-01 1.77870482e-01 1.77729928e-01 1.77589706e-01 + 1.77449815e-01 1.77310255e-01 1.77171023e-01 1.77032119e-01 1.76893540e-01 + 1.76755287e-01 1.76617358e-01 1.76479751e-01 1.76342465e-01 1.76205499e-01 + 1.76068851e-01 1.75932521e-01 1.75796507e-01 1.75660808e-01 1.75525423e-01 + 1.75390351e-01 1.75255589e-01 1.75121138e-01 1.74986996e-01 1.74853162e-01 + 1.74719634e-01 1.74586412e-01 1.74453494e-01 1.74320879e-01 1.74188566e-01 + 1.74056554e-01 1.73924842e-01 1.73793428e-01 1.73662312e-01 1.73531492e-01 + 1.73400967e-01 1.73270736e-01 1.73140798e-01 1.73011152e-01 1.72881797e-01 + 1.72752732e-01 1.72623955e-01 1.72495466e-01 1.72367263e-01 1.72239346e-01 + 1.72111713e-01 1.71984363e-01 1.71857296e-01 1.71730510e-01 1.71604004e-01 + 1.71477777e-01 1.71351828e-01 1.71226157e-01 1.71100761e-01 1.70975641e-01 + 1.70850795e-01 1.70726222e-01 1.70601921e-01 1.70477891e-01 1.70354131e-01 + 1.70230640e-01 1.70107418e-01 1.69984462e-01 1.69861773e-01 1.69739349e-01 + 1.69617190e-01 1.69495294e-01 1.69373660e-01 1.69252288e-01 1.69131176e-01 + 1.69010324e-01 1.68889731e-01 1.68769395e-01 1.68649317e-01 1.68529494e-01 + 1.68409926e-01 1.68290613e-01 1.68171552e-01 1.68052744e-01 1.67934188e-01 + 1.67815882e-01 1.67697825e-01 1.67580018e-01 1.67462458e-01 1.67345146e-01 + 1.67228079e-01 1.67111258e-01 1.66994682e-01 1.66878349e-01 1.66762259e-01 + 1.66646411e-01 1.66530804e-01 1.66415437e-01 1.66300309e-01 1.66185421e-01 + 1.66070770e-01 1.65956356e-01 1.65842178e-01 1.65728235e-01 1.65614527e-01 + 1.65501053e-01 1.65387812e-01 1.65274803e-01 1.65162025e-01 1.65049477e-01 + 1.64937160e-01 1.64825071e-01 1.64713211e-01 1.64601578e-01 1.64490172e-01 + 1.64378991e-01 1.64268036e-01 1.64157305e-01 1.64046798e-01 1.63936514e-01 + 1.63826452e-01 1.63716611e-01 1.63606991e-01 1.63497591e-01 1.63388409e-01 + 1.63279447e-01 1.63170702e-01 1.63062174e-01 1.62953862e-01 1.62845766e-01 + 1.62737885e-01 1.62630217e-01 1.62522764e-01 1.62415523e-01 1.62308493e-01 + 1.62201676e-01 1.62095069e-01 1.61988671e-01 1.61882483e-01 1.61776504e-01 + 1.61670732e-01 1.61565168e-01 1.61459810e-01 1.61354658e-01 1.61249711e-01 + 1.61144969e-01 1.61040431e-01 1.60936095e-01 1.60831963e-01 1.60728032e-01 + 1.60624302e-01 1.60520773e-01 1.60417444e-01 1.60314314e-01 1.60211383e-01 + 1.60108650e-01 1.60006114e-01 1.59903775e-01 1.59801632e-01 1.59699684e-01 + 1.59597932e-01 1.59496373e-01 1.59395009e-01 1.59293837e-01 1.59192858e-01 + 1.59092070e-01 1.58991474e-01 1.58891068e-01 1.58790852e-01 1.58690826e-01 + 1.58590988e-01 1.58491339e-01 1.58391877e-01 1.58292602e-01 1.58193514e-01 + 1.58094612e-01 1.57995894e-01 1.57897362e-01 1.57799013e-01 1.57700849e-01 + 1.57602867e-01 1.57505067e-01 1.57407450e-01 1.57310013e-01 1.57212758e-01 + 1.57115682e-01 1.57018786e-01 1.56922069e-01 1.56825531e-01 1.56729171e-01 + 1.56632988e-01 1.56536982e-01 1.56441152e-01 1.56345498e-01 1.56250019e-01 + 1.56154715e-01 1.56059585e-01 1.55964629e-01 1.55869846e-01 1.55775235e-01 + 1.55680797e-01 1.55586530e-01 1.55492434e-01 1.55398509e-01 1.55304754e-01 + 1.55211168e-01 1.55117751e-01 1.55024502e-01 1.54931422e-01 1.54838509e-01 + 1.54745763e-01 1.54653183e-01 1.54560770e-01 1.54468522e-01 1.54376439e-01 + 1.54284520e-01 1.54192765e-01 1.54101174e-01 1.54009746e-01 1.53918481e-01 + 1.53827377e-01 1.53736435e-01 1.53645654e-01 1.53555034e-01 1.53464574e-01 + 1.53374274e-01 1.53284132e-01 1.53194150e-01 1.53104326e-01 1.53014660e-01 + 1.52925151e-01 1.52835798e-01 1.52746603e-01 1.52657563e-01 1.52568679e-01 + 1.52479950e-01 1.52391376e-01 1.52302955e-01 1.52214689e-01 1.52126576e-01 + 1.52038615e-01 1.51950807e-01 1.51863151e-01 1.51775647e-01 1.51688293e-01 + 1.51601091e-01 1.51514038e-01 1.51427135e-01 1.51340382e-01 1.51253778e-01 + 1.51167322e-01 1.51081014e-01 1.50994854e-01 1.50908841e-01 1.50822975e-01 + 1.50737255e-01 1.50651681e-01 1.50566253e-01 1.50480970e-01 1.50395832e-01 + 1.50310838e-01 1.50225988e-01 1.50141281e-01 1.50056718e-01 1.49972298e-01 + 1.49888019e-01 1.49803883e-01 1.49719888e-01 1.49636035e-01 1.49552322e-01 + 1.49468749e-01 1.49385316e-01 1.49302023e-01 1.49218869e-01 1.49135854e-01 + 1.49052977e-01 1.48970239e-01 1.48887638e-01 1.48805174e-01 1.48722847e-01 + 1.48640656e-01 1.48558602e-01 1.48476683e-01 1.48394900e-01 1.48313252e-01 + 1.48231738e-01 1.48150359e-01 1.48069113e-01 1.47988001e-01 1.47907022e-01 + 1.47826176e-01 1.47745463e-01 1.47664881e-01 1.47584431e-01 1.47504113e-01 + 1.47423925e-01 1.47343868e-01 1.47263942e-01 1.47184145e-01 1.47104478e-01 + 1.47024940e-01 1.46945531e-01 1.46866251e-01 1.46787099e-01 1.46708074e-01 + 1.46629177e-01 1.46550407e-01 1.46471764e-01 1.46393248e-01 1.46314857e-01 + 1.46236593e-01 1.46158454e-01 1.46080440e-01 1.46002551e-01 1.45924786e-01 + 1.45847145e-01 1.45769628e-01 1.45692235e-01 1.45614965e-01 1.45537817e-01 + 1.45460792e-01 1.45383890e-01 1.45307109e-01 1.45230449e-01 1.45153911e-01 + 1.45077494e-01 1.45001197e-01 1.44925021e-01 1.44848964e-01 1.44773027e-01 + 1.44697209e-01 1.44621511e-01 1.44545931e-01 1.44470469e-01 1.44395126e-01 + 1.44319900e-01 1.44244791e-01 1.44169800e-01 1.44094926e-01 1.44020168e-01 + 1.43945527e-01 1.43871001e-01 1.43796591e-01 1.43722296e-01 1.43648117e-01 + 1.43574052e-01 1.43500101e-01 1.43426265e-01 1.43352542e-01 1.43278934e-01 + 1.43205438e-01 1.43132055e-01 1.43058785e-01 1.42985628e-01 1.42912583e-01 + 1.42839649e-01 1.42766827e-01 1.42694116e-01 1.42621516e-01 1.42549027e-01 + 1.42476649e-01 1.42404380e-01 1.42332222e-01 1.42260172e-01 1.42188233e-01 + 1.42116402e-01 1.42044680e-01 1.41973066e-01 1.41901561e-01 1.41830164e-01 + 1.41758874e-01 1.41687692e-01 1.41616617e-01 1.41545648e-01 1.41474786e-01 + 1.41404031e-01 1.41333382e-01 1.41262838e-01 1.41192400e-01 1.41122067e-01 + 1.41051839e-01 1.40981716e-01 1.40911698e-01 1.40841783e-01 1.40771973e-01 + 1.40702266e-01 1.40632663e-01 1.40563163e-01 1.40493766e-01 1.40424471e-01 + 1.40355279e-01 1.40286189e-01 1.40217202e-01 1.40148315e-01 1.40079531e-01 + 1.40010847e-01 1.39942264e-01 1.39873782e-01 1.39805401e-01 1.39737119e-01 + 1.39668938e-01 1.39600856e-01 1.39532874e-01 1.39464991e-01 1.39397207e-01 + 1.39329522e-01 1.39261935e-01 1.39194446e-01 1.39127056e-01 1.39059763e-01 + 1.38992568e-01 1.38925470e-01 1.38858469e-01 1.38791565e-01 1.38724758e-01 + 1.38658047e-01 1.38591432e-01 1.38524913e-01 1.38458490e-01 1.38392162e-01 + 1.38325930e-01 1.38259792e-01 1.38193750e-01 1.38127801e-01 1.38061947e-01 + 1.37996188e-01 1.37930522e-01 1.37864950e-01 1.37799471e-01 1.37734085e-01 + 1.37668793e-01 1.37603593e-01 1.37538485e-01 1.37473471e-01 1.37408548e-01 + 1.37343717e-01 1.37278977e-01 1.37214330e-01 1.37149773e-01 1.37085308e-01 + 1.37020933e-01 1.36956649e-01 1.36892455e-01 1.36828351e-01 1.36764338e-01 + 1.36700414e-01 1.36636580e-01 1.36572835e-01 1.36509179e-01 1.36445612e-01 + 1.36382134e-01 1.36318745e-01 1.36255443e-01 1.36192230e-01 1.36129105e-01 + 1.36066067e-01 1.36003117e-01 1.35940254e-01 1.35877478e-01 1.35814789e-01 + 1.35752187e-01 1.35689672e-01 1.35627242e-01 1.35564899e-01 1.35502641e-01 + 1.35440470e-01 1.35378384e-01 1.35316383e-01 1.35254467e-01 1.35192636e-01 + 1.35130890e-01 1.35069228e-01 1.35007651e-01 1.34946158e-01 1.34884748e-01 + 1.34823423e-01 1.34762181e-01 1.34701022e-01 1.34639947e-01 1.34578955e-01 + 1.34518045e-01 1.34457218e-01 1.34396474e-01 1.34335812e-01 1.34275232e-01 + 1.34214733e-01 1.34154317e-01 1.34093982e-01 1.34033728e-01 1.33973556e-01 + 1.33913464e-01 1.33853453e-01 1.33793523e-01 1.33733673e-01 1.33673904e-01 + 1.33614214e-01 1.33554605e-01 1.33495075e-01 1.33435625e-01 1.33376254e-01 + 1.33316962e-01 1.33257749e-01 1.33198615e-01 1.33139560e-01 1.33080583e-01 + 1.33021685e-01 1.32962864e-01 1.32904122e-01 1.32845457e-01 1.32786870e-01 + 1.32728361e-01 1.32669928e-01 1.32611573e-01 1.32553295e-01 1.32495093e-01 + 1.32436968e-01 1.32378920e-01 1.32320948e-01 1.32263052e-01 1.32205232e-01 + 1.32147487e-01 1.32089818e-01 1.32032225e-01 1.31974707e-01 1.31917264e-01 + 1.31859896e-01 1.31802603e-01 1.31745384e-01 1.31688240e-01 1.31631170e-01 + 1.31574174e-01 1.31517252e-01 1.31460404e-01 1.31403630e-01 1.31346929e-01 + 1.31290301e-01 1.31233747e-01 1.31177266e-01 1.31120857e-01 1.31064522e-01 + 1.31008258e-01 1.30952068e-01 1.30895949e-01 1.30839903e-01 1.30783928e-01 + 1.30728025e-01 1.30672194e-01 1.30616435e-01 1.30560746e-01 1.30505129e-01 + 1.30449583e-01 1.30394108e-01 1.30338703e-01 1.30283369e-01 1.30228105e-01 + 1.30172912e-01 1.30117789e-01 1.30062736e-01 1.30007752e-01 1.29952839e-01 + 1.29897994e-01 1.29843219e-01 1.29788514e-01 1.29733877e-01 1.29679310e-01 + 1.29624811e-01 1.29570381e-01 1.29516019e-01 1.29461726e-01 1.29407501e-01 + 1.29353344e-01 1.29299255e-01 1.29245234e-01 1.29191280e-01 1.29137394e-01 + 1.29083575e-01 1.29029824e-01 1.28976140e-01 1.28922522e-01 1.28868972e-01 + 1.28815488e-01 1.28762070e-01 1.28708719e-01 1.28655435e-01 1.28602216e-01 + 1.28549063e-01 1.28495977e-01 1.28442955e-01 1.28390000e-01 1.28337110e-01 + 1.28284285e-01 1.28231526e-01 1.28178831e-01 1.28126202e-01 1.28073637e-01 + 1.28021137e-01 1.27968701e-01 1.27916330e-01 1.27864023e-01 1.27811780e-01 + 1.27759601e-01 1.27707486e-01 1.27655434e-01 1.27603447e-01 1.27551522e-01 + 1.27499661e-01 1.27447864e-01 1.27396129e-01 1.27344457e-01 1.27292848e-01 + 1.27241302e-01 1.27189818e-01 1.27138397e-01 1.27087038e-01 1.27035742e-01 + 1.26984507e-01 1.26933334e-01 1.26882223e-01 1.26831174e-01 1.26780187e-01 + 1.26729260e-01 1.26678396e-01 1.26627592e-01 1.26576849e-01 1.26526168e-01 + 1.26475547e-01 1.26424987e-01 1.26374487e-01 1.26324048e-01 1.26273670e-01 + 1.26223351e-01 1.26173093e-01 1.26122894e-01 1.26072756e-01 1.26022677e-01 + 1.25972658e-01 1.25922698e-01 1.25872798e-01 1.25822957e-01 1.25773176e-01 + 1.25723453e-01 1.25673789e-01 1.25624184e-01 1.25574638e-01 1.25525150e-01 + 1.25475721e-01 1.25426350e-01 1.25377037e-01 1.25327782e-01 1.25278586e-01 + 1.25229447e-01 1.25180366e-01 1.25131343e-01 1.25082377e-01 1.25033469e-01 + 1.24984618e-01 1.24935824e-01 1.24887088e-01 1.24838408e-01 1.24789785e-01 + 1.24741219e-01 1.24692710e-01 1.24644257e-01 1.24595861e-01 1.24547521e-01 + 1.24499237e-01 1.24451010e-01 1.24402838e-01 1.24354722e-01 1.24306662e-01 + 1.24258658e-01 1.24210709e-01 1.24162816e-01 1.24114978e-01 1.24067195e-01 + 1.24019468e-01 1.23971795e-01 1.23924178e-01 1.23876615e-01 1.23829107e-01 + 1.23781654e-01 1.23734255e-01 1.23686910e-01 1.23639620e-01 1.23592384e-01 + 1.23545202e-01 1.23498075e-01 1.23451001e-01 1.23403980e-01 1.23357014e-01 + 1.23310101e-01 1.23263242e-01 1.23216436e-01 1.23169683e-01 1.23122983e-01 + 1.23076337e-01 1.23029743e-01 1.22983202e-01 1.22936715e-01 1.22890279e-01 + 1.22843897e-01 1.22797567e-01 1.22751289e-01 1.22705063e-01 1.22658890e-01 + 1.22612769e-01 1.22566700e-01 1.22520682e-01 1.22474717e-01 1.22428803e-01 + 1.22382941e-01 1.22337130e-01 1.22291371e-01 1.22245663e-01 1.22200006e-01 + 1.22154400e-01 1.22108845e-01 1.22063342e-01 1.22017889e-01 1.21972487e-01 + 1.21927135e-01 1.21881834e-01 1.21836584e-01 1.21791383e-01 1.21746234e-01 + 1.21701134e-01 1.21656084e-01 1.21611085e-01 1.21566135e-01 1.21521235e-01 + 1.21476385e-01 1.21431584e-01 1.21386833e-01 1.21342131e-01 1.21297479e-01 + 1.21252876e-01 1.21208322e-01 1.21163817e-01 1.21119362e-01 1.21074955e-01 + 1.21030597e-01 1.20986287e-01 1.20942026e-01 1.20897814e-01 1.20853651e-01 + 1.20809535e-01 1.20765468e-01 1.20721449e-01 1.20677478e-01 1.20633555e-01 + 1.20589681e-01 1.20545854e-01 1.20502074e-01 1.20458343e-01 1.20414659e-01 + 1.20371022e-01 1.20327433e-01 1.20283891e-01 1.20240396e-01 1.20196949e-01 + 1.20153549e-01 1.20110195e-01 1.20066889e-01 1.20023629e-01 1.19980416e-01 + 1.19937250e-01 1.19894130e-01 1.19851056e-01 1.19808030e-01 1.19765049e-01 + 1.19722115e-01 1.19679226e-01 1.19636384e-01 1.19593588e-01 1.19550838e-01 + 1.19508133e-01 1.19465474e-01 1.19422861e-01 1.19380294e-01 1.19337772e-01 + 1.19295295e-01 1.19252863e-01 1.19210477e-01 1.19168136e-01 1.19125841e-01 + 1.19083590e-01 1.19041384e-01 1.18999223e-01 1.18957106e-01 1.18915035e-01 + 1.18873008e-01 1.18831025e-01 1.18789087e-01 1.18747194e-01 1.18705344e-01 + 1.18663539e-01 1.18621778e-01 1.18580061e-01 1.18538388e-01 1.18496759e-01 + 1.18455174e-01 1.18413632e-01 1.18372134e-01 1.18330680e-01 1.18289269e-01 + 1.18247902e-01 1.18206578e-01 1.18165298e-01 1.18124060e-01 1.18082866e-01 + 1.18041715e-01 1.18000607e-01 1.17959541e-01 1.17918519e-01 1.17877539e-01 + 1.17836602e-01 1.17795708e-01 1.17754856e-01 1.17714047e-01 1.17673280e-01 + 1.17632556e-01 1.17591873e-01 1.17551233e-01 1.17510635e-01 1.17470079e-01 + 1.17429565e-01 1.17389093e-01 1.17348662e-01 1.17308274e-01 1.17267927e-01 + 1.17227622e-01 1.17187358e-01 1.17147135e-01 1.17106955e-01 1.17066815e-01 + 1.17026717e-01 1.16986659e-01 1.16946643e-01 1.16906668e-01 1.16866734e-01 + 1.16826841e-01 1.16786988e-01 1.16747177e-01 1.16707406e-01 1.16667676e-01 + 1.16627986e-01 1.16588337e-01 1.16548728e-01 1.16509159e-01 1.16469631e-01 + 1.16430143e-01 1.16390695e-01 1.16351287e-01 1.16311919e-01 1.16272591e-01 + 1.16233303e-01 1.16194055e-01 1.16154846e-01 1.16115678e-01 1.16076548e-01 + 1.16037459e-01 1.15998408e-01 1.15959397e-01 1.15920426e-01 1.15881494e-01 + 1.15842601e-01 1.15803747e-01 1.15764932e-01 1.15726156e-01 1.15687419e-01 + 1.15648721e-01 1.15610062e-01 1.15571441e-01 1.15532859e-01 1.15494316e-01 + 1.15455812e-01 1.15417345e-01 1.15378918e-01 1.15340528e-01 1.15302177e-01 + 1.15263864e-01 1.15225590e-01 1.15187353e-01 1.15149155e-01 1.15110994e-01 + 1.15072871e-01 1.15034786e-01 1.14996739e-01 1.14958730e-01 1.14920759e-01 + 1.14882824e-01 1.14844928e-01 1.14807069e-01 1.14769247e-01 1.14731463e-01 + 1.14693716e-01 1.14656006e-01 1.14618334e-01 1.14580699e-01 1.14543100e-01 + 1.14505539e-01 1.14468014e-01 1.14430527e-01 1.14393076e-01 1.14355662e-01 + 1.14318284e-01 1.14280944e-01 1.14243640e-01 1.14206372e-01 1.14169141e-01 + 1.14131946e-01 1.14094787e-01 1.14057665e-01 1.14020579e-01 1.13983529e-01 + 1.13946515e-01 1.13909538e-01 1.13872596e-01 1.13835690e-01 1.13798820e-01 + 1.13761986e-01 1.13725188e-01 1.13688425e-01 1.13651698e-01 1.13615006e-01 + 1.13578350e-01 1.13541730e-01 1.13505144e-01 1.13468595e-01 1.13432080e-01 + 1.13395601e-01 1.13359156e-01 1.13322747e-01 1.13286373e-01 1.13250035e-01 + 1.13213730e-01 1.13177461e-01 1.13141227e-01 1.13105028e-01 1.13068863e-01 + 1.13032733e-01 1.12996637e-01 1.12960576e-01 1.12924550e-01 1.12888558e-01 + 1.12852600e-01 1.12816677e-01 1.12780788e-01 1.12744933e-01 1.12709112e-01 + 1.12673326e-01 1.12637574e-01 1.12601855e-01 1.12566171e-01 1.12530520e-01 + 1.12494904e-01 1.12459321e-01 1.12423772e-01 1.12388256e-01 1.12352774e-01 + 1.12317326e-01 1.12281911e-01 1.12246530e-01 1.12211182e-01 1.12175868e-01 + 1.12140587e-01 1.12105339e-01 1.12070125e-01 1.12034943e-01 1.11999795e-01 + 1.11964679e-01 1.11929597e-01 1.11894548e-01 1.11859532e-01 1.11824548e-01 + 1.11789597e-01 1.11754679e-01 1.11719794e-01 1.11684941e-01 1.11650121e-01 + 1.11615334e-01 1.11580579e-01 1.11545856e-01 1.11511166e-01 1.11476508e-01 + 1.11441883e-01 1.11407289e-01 1.11372728e-01 1.11338199e-01 1.11303703e-01 + 1.11269238e-01 1.11234805e-01 1.11200404e-01 1.11166035e-01 1.11131698e-01 + 1.11097393e-01 1.11063119e-01 1.11028877e-01 1.10994667e-01 1.10960489e-01 + 1.10926342e-01 1.10892226e-01 1.10858142e-01 1.10824089e-01 1.10790068e-01 + 1.10756078e-01 1.10722119e-01 1.10688192e-01 1.10654295e-01 1.10620430e-01 + 1.10586596e-01 1.10552793e-01 1.10519021e-01 1.10485279e-01 1.10451569e-01 + 1.10417890e-01 1.10384241e-01 1.10350623e-01 1.10317036e-01 1.10283479e-01 + 1.10249953e-01 1.10216458e-01 1.10182993e-01 1.10149558e-01 1.10116154e-01 + 1.10082780e-01 1.10049437e-01 1.10016124e-01 1.09982841e-01 1.09949588e-01 + 1.09916366e-01 1.09883174e-01 1.09850011e-01 1.09816879e-01 1.09783776e-01 + 1.09750704e-01 1.09717661e-01 1.09684648e-01 1.09651665e-01 1.09618712e-01 + 1.09585789e-01 1.09552895e-01 1.09520030e-01 1.09487196e-01 1.09454390e-01 + 1.09421615e-01 1.09388868e-01 1.09356151e-01 1.09323464e-01 1.09290805e-01 + 1.09258176e-01 1.09225576e-01 1.09193006e-01 1.09160464e-01 1.09127951e-01 + 1.09095468e-01 1.09063013e-01 1.09030588e-01 1.08998191e-01 1.08965824e-01 + 1.08933485e-01 1.08901174e-01 1.08868893e-01 1.08836640e-01 1.08804416e-01 + 1.08772220e-01 1.08740054e-01 1.08707915e-01 1.08675805e-01 1.08643724e-01 + 1.08611671e-01 1.08579646e-01 1.08547649e-01 1.08515681e-01 1.08483741e-01 + 1.08451829e-01 1.08419946e-01 1.08388090e-01 1.08356263e-01 1.08324463e-01 + 1.08292692e-01 1.08260948e-01 1.08229233e-01 1.08197545e-01 1.08165885e-01 + 1.08134253e-01 1.08102648e-01 1.08071072e-01 1.08039523e-01 1.08008001e-01 + 1.07976507e-01 1.07945041e-01 1.07913602e-01 1.07882191e-01 1.07850807e-01 + 1.07819450e-01 1.07788121e-01 1.07756819e-01 1.07725544e-01 1.07694296e-01 + 1.07663076e-01 1.07631883e-01 1.07600717e-01 1.07569578e-01 1.07538466e-01 + 1.07507381e-01 1.07476322e-01 1.07445291e-01 1.07414287e-01 1.07383309e-01 + 1.07352359e-01 1.07321435e-01 1.07290537e-01 1.07259667e-01 1.07228823e-01 + 1.07198005e-01 1.07167214e-01 1.07136450e-01 1.07105712e-01 1.07075001e-01 + 1.07044316e-01 1.07013657e-01 1.06983025e-01 1.06952419e-01 1.06921839e-01 + 1.06891286e-01 1.06860758e-01 1.06830257e-01 1.06799782e-01 1.06769333e-01 + 1.06738910e-01 1.06708513e-01 1.06678142e-01 1.06647796e-01 1.06617477e-01 + 1.06587184e-01 1.06556916e-01 1.06526674e-01 1.06496458e-01 1.06466268e-01 + 1.06436103e-01 1.06405964e-01 1.06375850e-01 1.06345762e-01 1.06315700e-01 + 1.06285663e-01 1.06255651e-01 1.06225665e-01 1.06195704e-01 1.06165769e-01 + 1.06135859e-01 1.06105974e-01 1.06076114e-01 1.06046280e-01 1.06016470e-01 + 1.05986686e-01 1.05956927e-01 1.05927193e-01 1.05897484e-01 1.05867800e-01 + 1.05838141e-01 1.05808507e-01 1.05778897e-01 1.05749313e-01 1.05719753e-01 + 1.05690218e-01 1.05660708e-01 1.05631223e-01 1.05601762e-01 1.05572326e-01 + 1.05542914e-01 1.05513528e-01 1.05484165e-01 1.05454827e-01 1.05425514e-01 + 1.05396225e-01 1.05366960e-01 1.05337720e-01 1.05308504e-01 1.05279312e-01 + 1.05250145e-01 1.05221002e-01 1.05191883e-01 1.05162788e-01 1.05133717e-01 + 1.05104671e-01 1.05075648e-01 1.05046650e-01 1.05017675e-01 1.04988725e-01 + 1.04959798e-01 1.04930896e-01 1.04902017e-01 1.04873162e-01 1.04844331e-01 + 1.04815523e-01 1.04786740e-01 1.04757980e-01 1.04729243e-01 1.04700531e-01 + 1.04671841e-01 1.04643176e-01 1.04614534e-01 1.04585916e-01 1.04557321e-01 + 1.04528749e-01 1.04500201e-01 1.04471676e-01 1.04443175e-01 1.04414697e-01 + 1.04386242e-01 1.04357810e-01 1.04329402e-01 1.04301017e-01 1.04272655e-01 + 1.04244316e-01 1.04216000e-01 1.04187707e-01 1.04159437e-01 1.04131191e-01 + 1.04102967e-01 1.04074766e-01 1.04046588e-01 1.04018433e-01 1.03990301e-01 + 1.03962192e-01 1.03934105e-01 1.03906041e-01 1.03878000e-01 1.03849982e-01 + 1.03821986e-01 1.03794013e-01 1.03766062e-01 1.03738134e-01 1.03710229e-01 + 1.03682346e-01 1.03654486e-01 1.03626648e-01 1.03598832e-01 1.03571039e-01 + 1.03543268e-01 1.03515520e-01 1.03487793e-01 1.03460089e-01 1.03432408e-01 + 1.03404748e-01 1.03377111e-01 1.03349496e-01 1.03321903e-01 1.03294332e-01 + 1.03266783e-01 1.03239256e-01 1.03211751e-01 1.03184268e-01 1.03156807e-01 + 1.03129368e-01 1.03101951e-01 1.03074556e-01 1.03047182e-01 1.03019831e-01 + 1.02992501e-01 1.02965192e-01 1.02937906e-01 1.02910641e-01 1.02883398e-01 + 1.02856177e-01 1.02828977e-01 1.02801798e-01 1.02774642e-01 1.02747506e-01 + 1.02720392e-01 1.02693300e-01 1.02666229e-01 1.02639180e-01 1.02612151e-01 + 1.02585145e-01 1.02558159e-01 1.02531195e-01 1.02504252e-01 1.02477330e-01 + 1.02450430e-01 1.02423550e-01 1.02396692e-01 1.02369855e-01 1.02343039e-01 + 1.02316244e-01 1.02289470e-01 1.02262717e-01 1.02235985e-01 1.02209274e-01 + 1.02182584e-01 1.02155915e-01 1.02129267e-01 1.02102639e-01 1.02076033e-01 + 1.02049447e-01 1.02022882e-01 1.01996338e-01 1.01969814e-01 1.01943311e-01 + 1.01916829e-01 1.01890367e-01 1.01863926e-01 1.01837505e-01 1.01811106e-01 + 1.01784726e-01 1.01758367e-01 1.01732029e-01 1.01705711e-01 1.01679413e-01 + 1.01653136e-01 1.01626879e-01 1.01600643e-01 1.01574426e-01 1.01548230e-01 + 1.01522055e-01 1.01495899e-01 1.01469764e-01 1.01443649e-01 1.01417554e-01 + 1.01391479e-01 1.01365425e-01 1.01339390e-01 1.01313376e-01 1.01287381e-01 + 1.01261406e-01 1.01235452e-01 1.01209517e-01 1.01183603e-01 1.01157708e-01 + 1.01131833e-01 1.01105978e-01 1.01080143e-01 1.01054327e-01 1.01028532e-01 + 1.01002756e-01 1.00976999e-01 1.00951263e-01 1.00925546e-01 1.00899849e-01 + 1.00874171e-01 1.00848513e-01 1.00822875e-01 1.00797256e-01 1.00771656e-01 + 1.00746077e-01 1.00720516e-01 1.00694975e-01 1.00669454e-01 1.00643952e-01 + 1.00618469e-01 1.00593005e-01 1.00567561e-01 1.00542136e-01 1.00516731e-01 + 1.00491345e-01 1.00465978e-01 1.00440630e-01 1.00415301e-01 1.00389992e-01 + 1.00364701e-01 1.00339430e-01 1.00314178e-01 1.00288944e-01 1.00263730e-01 + 1.00238535e-01 1.00213359e-01 1.00188202e-01 1.00163064e-01 1.00137944e-01 + 1.00112844e-01 1.00087762e-01 1.00062700e-01 1.00037656e-01 1.00012631e-01 + 9.99876242e-02 9.99626366e-02 9.99376677e-02 9.99127176e-02 9.98877861e-02 + 9.98628732e-02 9.98379790e-02 9.98131034e-02 9.97882464e-02 9.97634079e-02 + 9.97385880e-02 9.97137866e-02 9.96890037e-02 9.96642393e-02 9.96394933e-02 + 9.96147657e-02 9.95900565e-02 9.95653657e-02 9.95406933e-02 9.95160392e-02 + 9.94914034e-02 9.94667859e-02 9.94421867e-02 9.94176057e-02 9.93930429e-02 + 9.93684983e-02 9.93439719e-02 9.93194636e-02 9.92949735e-02 9.92705015e-02 + 9.92460476e-02 9.92216117e-02 9.91971939e-02 9.91727940e-02 9.91484122e-02 + 9.91240484e-02 9.90997025e-02 9.90753745e-02 9.90510645e-02 9.90267723e-02 + 9.90024980e-02 9.89782415e-02 9.89540029e-02 9.89297821e-02 9.89055790e-02 + 9.88813937e-02 9.88572261e-02 9.88330763e-02 9.88089441e-02 9.87848296e-02 + 9.87607327e-02 9.87366535e-02 9.87125919e-02 9.86885478e-02 9.86645213e-02 + 9.86405124e-02 9.86165209e-02 9.85925470e-02 9.85685906e-02 9.85446516e-02 + 9.85207300e-02 9.84968258e-02 9.84729391e-02 9.84490697e-02 9.84252176e-02 + 9.84013829e-02 9.83775655e-02 9.83537654e-02 9.83299825e-02 9.83062169e-02 + 9.82824685e-02 9.82587374e-02 9.82350233e-02 9.82113265e-02 9.81876468e-02 + 9.81639842e-02 9.81403387e-02 9.81167103e-02 9.80930990e-02 9.80695047e-02 + 9.80459274e-02 9.80223671e-02 9.79988238e-02 9.79752974e-02 9.79517880e-02 + 9.79282955e-02 9.79048199e-02 9.78813611e-02 9.78579192e-02 9.78344942e-02 + 9.78110859e-02 9.77876945e-02 9.77643198e-02 9.77409619e-02 9.77176207e-02 + 9.76942963e-02 9.76709885e-02 9.76476974e-02 9.76244230e-02 9.76011651e-02 + 9.75779239e-02 9.75546993e-02 9.75314913e-02 9.75082999e-02 9.74851249e-02 + 9.74619665e-02 9.74388246e-02 9.74156991e-02 9.73925901e-02 9.73694976e-02 + 9.73464215e-02 9.73233617e-02 9.73003184e-02 9.72772914e-02 9.72542807e-02 + 9.72312864e-02 9.72083084e-02 9.71853467e-02 9.71624012e-02 9.71394719e-02 + 9.71165589e-02 9.70936621e-02 9.70707815e-02 9.70479171e-02 9.70250688e-02 + 9.70022366e-02 9.69794205e-02 9.69566206e-02 9.69338367e-02 9.69110688e-02 + 9.68883170e-02 9.68655813e-02 9.68428615e-02 9.68201577e-02 9.67974698e-02 + 9.67747979e-02 9.67521419e-02 9.67295019e-02 9.67068777e-02 9.66842693e-02 + 9.66616769e-02 9.66391002e-02 9.66165394e-02 9.65939943e-02 9.65714651e-02 + 9.65489516e-02 9.65264538e-02 9.65039718e-02 9.64815054e-02 9.64590547e-02 + 9.64366197e-02 9.64142004e-02 9.63917967e-02 9.63694086e-02 9.63470360e-02 + 9.63246791e-02 9.63023377e-02 9.62800118e-02 9.62577015e-02 9.62354067e-02 + 9.62131273e-02 9.61908635e-02 9.61686150e-02 9.61463820e-02 9.61241644e-02 + 9.61019623e-02 9.60797754e-02 9.60576040e-02 9.60354479e-02 9.60133071e-02 + 9.59911816e-02 9.59690714e-02 9.59469765e-02 9.59248968e-02 9.59028324e-02 + 9.58807832e-02 9.58587492e-02 9.58367303e-02 9.58147267e-02 9.57927382e-02 + 9.57707648e-02 9.57488065e-02 9.57268633e-02 9.57049352e-02 9.56830222e-02 + 9.56611242e-02 9.56392413e-02 9.56173733e-02 9.55955204e-02 9.55736824e-02 + 9.55518594e-02 9.55300513e-02 9.55082582e-02 9.54864799e-02 9.54647166e-02 + 9.54429681e-02 9.54212345e-02 9.53995157e-02 9.53778117e-02 9.53561226e-02 + 9.53344482e-02 9.53127886e-02 9.52911438e-02 9.52695137e-02 9.52478984e-02 + 9.52262977e-02 9.52047117e-02 9.51831404e-02 9.51615838e-02 9.51400418e-02 + 9.51185144e-02 9.50970016e-02 9.50755034e-02 9.50540198e-02 9.50325508e-02 + 9.50110963e-02 9.49896563e-02 9.49682308e-02 9.49468198e-02 9.49254233e-02 + 9.49040412e-02 9.48826736e-02 9.48613204e-02 9.48399817e-02 9.48186573e-02 + 9.47973473e-02 9.47760516e-02 9.47547703e-02 9.47335034e-02 9.47122507e-02 + 9.46910123e-02 9.46697883e-02 9.46485784e-02 9.46273829e-02 9.46062015e-02 + 9.45850344e-02 9.45638815e-02 9.45427428e-02 9.45216182e-02 9.45005078e-02 + 9.44794116e-02 9.44583294e-02 9.44372614e-02 9.44162074e-02 9.43951676e-02 + 9.43741418e-02 9.43531300e-02 9.43321323e-02 9.43111485e-02 9.42901788e-02 + 9.42692231e-02 9.42482813e-02 9.42273534e-02 9.42064395e-02 9.41855396e-02 + 9.41646535e-02 9.41437813e-02 9.41229230e-02 9.41020785e-02 9.40812479e-02 + 9.40604311e-02 9.40396282e-02 9.40188390e-02 9.39980636e-02 9.39773020e-02 + 9.39565541e-02 9.39358200e-02 9.39150995e-02 9.38943928e-02 9.38736998e-02 + 9.38530204e-02 9.38323548e-02 9.38117027e-02 9.37910643e-02 9.37704395e-02 + 9.37498283e-02 9.37292307e-02 9.37086466e-02 9.36880762e-02 9.36675192e-02 + 9.36469758e-02 9.36264459e-02 9.36059295e-02 9.35854265e-02 9.35649371e-02 + 9.35444611e-02 9.35239985e-02 9.35035493e-02 9.34831136e-02 9.34626912e-02 + 9.34422823e-02 9.34218866e-02 9.34015044e-02 9.33811355e-02 9.33607798e-02 + 9.33404375e-02 9.33201085e-02 9.32997928e-02 9.32794903e-02 9.32592011e-02 + 9.32389251e-02 9.32186624e-02 9.31984128e-02 9.31781764e-02 9.31579532e-02 + 9.31377432e-02 9.31175463e-02 9.30973626e-02 9.30771919e-02 9.30570344e-02 + 9.30368899e-02 9.30167586e-02 9.29966403e-02 9.29765350e-02 9.29564428e-02 + 9.29363636e-02 9.29162974e-02 9.28962442e-02 9.28762040e-02 9.28561768e-02 + 9.28361624e-02 9.28161611e-02 9.27961726e-02 9.27761971e-02 9.27562344e-02 + 9.27362847e-02 9.27163478e-02 9.26964237e-02 9.26765125e-02 9.26566141e-02 + 9.26367286e-02 9.26168558e-02 9.25969958e-02 9.25771486e-02 9.25573141e-02 + 9.25374924e-02 9.25176834e-02 9.24978871e-02 9.24781036e-02 9.24583327e-02 + 9.24385745e-02 9.24188289e-02 9.23990960e-02 9.23793758e-02 9.23596681e-02 + 9.23399731e-02 9.23202907e-02 9.23006208e-02 9.22809635e-02 9.22613188e-02 + 9.22416866e-02 9.22220669e-02 9.22024597e-02 9.21828651e-02 9.21632829e-02 + 9.21437132e-02 9.21241560e-02 9.21046112e-02 9.20850788e-02 9.20655589e-02 + 9.20460514e-02 9.20265563e-02 9.20070735e-02 9.19876031e-02 9.19681451e-02 + 9.19486994e-02 9.19292661e-02 9.19098451e-02 9.18904363e-02 9.18710399e-02 + 9.18516557e-02 9.18322838e-02 9.18129242e-02 9.17935768e-02 9.17742416e-02 + 9.17549186e-02 9.17356079e-02 9.17163093e-02 9.16970229e-02 9.16777486e-02 + 9.16584865e-02 9.16392366e-02 9.16199987e-02 9.16007730e-02 9.15815594e-02 + 9.15623578e-02 9.15431684e-02 9.15239910e-02 9.15048256e-02 9.14856723e-02 + 9.14665310e-02 9.14474017e-02 9.14282844e-02 9.14091791e-02 9.13900857e-02 + 9.13710043e-02 9.13519349e-02 9.13328774e-02 9.13138318e-02 9.12947982e-02 + 9.12757764e-02 9.12567665e-02 9.12377685e-02 9.12187823e-02 9.11998080e-02 + 9.11808456e-02 9.11618949e-02 9.11429561e-02 9.11240290e-02 9.11051138e-02 + 9.10862103e-02 9.10673186e-02 9.10484386e-02 9.10295704e-02 9.10107139e-02 + 9.09918691e-02 9.09730360e-02 9.09542146e-02 9.09354049e-02 9.09166069e-02 + 9.08978205e-02 9.08790457e-02 9.08602826e-02 9.08415311e-02 9.08227911e-02 + 9.08040628e-02 9.07853461e-02 9.07666409e-02 9.07479473e-02 9.07292652e-02 + 9.07105947e-02 9.06919357e-02 9.06732882e-02 9.06546522e-02 9.06360277e-02 + 9.06174146e-02 9.05988131e-02 9.05802229e-02 9.05616442e-02 9.05430770e-02 + 9.05245211e-02 9.05059767e-02 9.04874436e-02 9.04689219e-02 9.04504116e-02 + 9.04319127e-02 9.04134251e-02 9.03949488e-02 9.03764839e-02 9.03580303e-02 + 9.03395879e-02 9.03211569e-02 9.03027371e-02 9.02843286e-02 9.02659313e-02 + 9.02475453e-02 9.02291706e-02 9.02108070e-02 9.01924546e-02 9.01741135e-02 + 9.01557835e-02 9.01374647e-02 9.01191571e-02 9.01008606e-02 9.00825752e-02 + 9.00643010e-02 9.00460379e-02 9.00277859e-02 9.00095450e-02 8.99913152e-02 + 8.99730965e-02 8.99548888e-02 8.99366921e-02 8.99185065e-02 8.99003320e-02 + 8.98821684e-02 8.98640159e-02 8.98458743e-02 8.98277437e-02 8.98096241e-02 + 8.97915155e-02 8.97734178e-02 8.97553311e-02 8.97372552e-02 8.97191903e-02 + 8.97011363e-02 8.96830932e-02 8.96650610e-02 8.96470396e-02 8.96290291e-02 + 8.96110295e-02 8.95930407e-02 8.95750627e-02 8.95570956e-02 8.95391392e-02 + 8.95211937e-02 8.95032589e-02 8.94853349e-02 8.94674217e-02 8.94495192e-02 + 8.94316275e-02 8.94137465e-02 8.93958762e-02 8.93780167e-02 8.93601678e-02 + 8.93423296e-02 8.93245021e-02 8.93066853e-02 8.92888791e-02 8.92710836e-02 + 8.92532987e-02 8.92355244e-02 8.92177608e-02 8.92000077e-02 8.91822653e-02 + 8.91645334e-02 8.91468121e-02 8.91291014e-02 8.91114012e-02 8.90937115e-02 + 8.90760324e-02 8.90583638e-02 8.90407057e-02 8.90230582e-02 8.90054211e-02 + 8.89877945e-02 8.89701783e-02 8.89525726e-02 8.89349774e-02 8.89173926e-02 + 8.88998182e-02 8.88822542e-02 8.88647007e-02 8.88471575e-02 8.88296247e-02 + 8.88121023e-02 8.87945903e-02 8.87770886e-02 8.87595973e-02 8.87421163e-02 + 8.87246456e-02 8.87071853e-02 8.86897352e-02 8.86722954e-02 8.86548660e-02 + 8.86374468e-02 8.86200378e-02 8.86026391e-02 8.85852507e-02 8.85678725e-02 + 8.85505045e-02 8.85331467e-02 8.85157991e-02 8.84984618e-02 8.84811346e-02 + 8.84638176e-02 8.84465107e-02 8.84292140e-02 8.84119274e-02 8.83946510e-02 + 8.83773847e-02 8.83601285e-02 8.83428825e-02 8.83256465e-02 8.83084206e-02 + 8.82912047e-02 8.82739990e-02 8.82568033e-02 8.82396176e-02 8.82224420e-02 + 8.82052764e-02 8.81881208e-02 8.81709752e-02 8.81538396e-02 8.81367140e-02 + 8.81195984e-02 8.81024927e-02 8.80853970e-02 8.80683113e-02 8.80512355e-02 + 8.80341696e-02 8.80171137e-02 8.80000676e-02 8.79830314e-02 8.79660052e-02 + 8.79489888e-02 8.79319823e-02 8.79149857e-02 8.78979989e-02 8.78810219e-02 + 8.78640548e-02 8.78470975e-02 8.78301500e-02 8.78132123e-02 8.77962845e-02 + 8.77793664e-02 8.77624580e-02 8.77455595e-02 8.77286707e-02 8.77117916e-02 + 8.76949223e-02 8.76780628e-02 8.76612129e-02 8.76443728e-02 8.76275423e-02 + 8.76107216e-02 8.75939105e-02 8.75771091e-02 8.75603174e-02 8.75435353e-02 + 8.75267629e-02 8.75100001e-02 8.74932469e-02 8.74765033e-02 8.74597694e-02 + 8.74430451e-02 8.74263303e-02 8.74096251e-02 8.73929296e-02 8.73762435e-02 + 8.73595670e-02 8.73429001e-02 8.73262427e-02 8.73095948e-02 8.72929565e-02 + 8.72763276e-02 8.72597083e-02 8.72430984e-02 8.72264981e-02 8.72099072e-02 + 8.71933257e-02 8.71767537e-02 8.71601912e-02 8.71436381e-02 8.71270944e-02 + 8.71105602e-02 8.70940353e-02 8.70775199e-02 8.70610138e-02 8.70445172e-02 + 8.70280299e-02 8.70115519e-02 8.69950834e-02 8.69786241e-02 8.69621742e-02 + 8.69457337e-02 8.69293024e-02 8.69128805e-02 8.68964679e-02 8.68800646e-02 + 8.68636705e-02 8.68472857e-02 8.68309103e-02 8.68145440e-02 8.67981870e-02 + 8.67818393e-02 8.67655008e-02 8.67491715e-02 8.67328514e-02 8.67165406e-02 + 8.67002389e-02 8.66839464e-02 8.66676631e-02 8.66513890e-02 8.66351240e-02 + 8.66188682e-02 8.66026216e-02 8.65863841e-02 8.65701557e-02 8.65539364e-02 + 8.65377263e-02 8.65215252e-02 8.65053333e-02 8.64891504e-02 8.64729766e-02 + 8.64568119e-02 8.64406563e-02 8.64245097e-02 8.64083721e-02 8.63922436e-02 + 8.63761241e-02 8.63600136e-02 8.63439122e-02 8.63278197e-02 8.63117363e-02 + 8.62956618e-02 8.62795963e-02 8.62635398e-02 8.62474922e-02 8.62314536e-02 + 8.62154239e-02 8.61994032e-02 8.61833914e-02 8.61673885e-02 8.61513945e-02 + 8.61354094e-02 8.61194332e-02 8.61034659e-02 8.60875075e-02 8.60715580e-02 + 8.60556173e-02 8.60396855e-02 8.60237625e-02 8.60078483e-02 8.59919430e-02 + 8.59760465e-02 8.59601588e-02 8.59442800e-02 8.59284099e-02 8.59125486e-02 + 8.58966961e-02 8.58808523e-02 8.58650173e-02 8.58491911e-02 8.58333736e-02 + 8.58175649e-02 8.58017649e-02 8.57859736e-02 8.57701911e-02 8.57544172e-02 + 8.57386520e-02 8.57228956e-02 8.57071478e-02 8.56914087e-02 8.56756782e-02 + 8.56599565e-02 8.56442433e-02 8.56285389e-02 8.56128430e-02 8.55971558e-02 + 8.55814772e-02 8.55658072e-02 8.55501458e-02 8.55344930e-02 8.55188488e-02 + 8.55032132e-02 8.54875862e-02 8.54719677e-02 8.54563578e-02 8.54407564e-02 + 8.54251636e-02 8.54095793e-02 8.53940035e-02 8.53784363e-02 8.53628775e-02 + 8.53473273e-02 8.53317855e-02 8.53162523e-02 8.53007275e-02 8.52852112e-02 + 8.52697034e-02 8.52542040e-02 8.52387130e-02 8.52232305e-02 8.52077565e-02 + 8.51922909e-02 8.51768336e-02 8.51613848e-02 8.51459444e-02 8.51305124e-02 + 8.51150888e-02 8.50996736e-02 8.50842667e-02 8.50688682e-02 8.50534780e-02 + 8.50380963e-02 8.50227228e-02 8.50073577e-02 8.49920009e-02 8.49766524e-02 + 8.49613123e-02 8.49459804e-02 8.49306569e-02 8.49153416e-02 8.49000346e-02 + 8.48847359e-02 8.48694455e-02 8.48541633e-02 8.48388893e-02 8.48236237e-02 + 8.48083662e-02 8.47931170e-02 8.47778760e-02 8.47626432e-02 8.47474187e-02 + 8.47322023e-02 8.47169941e-02 8.47017941e-02 8.46866023e-02 8.46714187e-02 + 8.46562432e-02 8.46410759e-02 8.46259167e-02 8.46107657e-02 8.45956228e-02 + 8.45804880e-02 8.45653614e-02 8.45502428e-02 8.45351324e-02 8.45200301e-02 + 8.45049358e-02 8.44898497e-02 8.44747716e-02 8.44597016e-02 8.44446397e-02 + 8.44295858e-02 8.44145399e-02 8.43995021e-02 8.43844724e-02 8.43694506e-02 + 8.43544369e-02 8.43394312e-02 8.43244335e-02 8.43094438e-02 8.42944621e-02 + 8.42794883e-02 8.42645226e-02 8.42495648e-02 8.42346150e-02 8.42196731e-02 + 8.42047392e-02 8.41898132e-02 8.41748952e-02 8.41599851e-02 8.41450829e-02 + 8.41301886e-02 8.41153022e-02 8.41004238e-02 8.40855532e-02 8.40706905e-02 + 8.40558357e-02 8.40409887e-02 8.40261496e-02 8.40113184e-02 8.39964950e-02 + 8.39816795e-02 8.39668718e-02 8.39520719e-02 8.39372799e-02 8.39224957e-02 + 8.39077193e-02 8.38929507e-02 8.38781898e-02 8.38634368e-02 8.38486916e-02 + 8.38339541e-02 8.38192244e-02 8.38045025e-02 8.37897883e-02 8.37750818e-02 + 8.37603831e-02 8.37456922e-02 8.37310089e-02 8.37163334e-02 8.37016656e-02 + 8.36870055e-02 8.36723531e-02 8.36577084e-02 8.36430714e-02 8.36284421e-02 + 8.36138204e-02 8.35992064e-02 8.35846001e-02 8.35700014e-02 8.35554104e-02 + 8.35408270e-02 8.35262512e-02 8.35116831e-02 8.34971226e-02 8.34825697e-02 + 8.34680244e-02 8.34534867e-02 8.34389566e-02 8.34244341e-02 8.34099191e-02 + 8.33954118e-02 8.33809120e-02 8.33664197e-02 8.33519351e-02 8.33374579e-02 + 8.33229883e-02 8.33085263e-02 8.32940718e-02 8.32796248e-02 8.32651853e-02 + 8.32507533e-02 8.32363288e-02 8.32219118e-02 8.32075023e-02 8.31931003e-02 + 8.31787058e-02 8.31643187e-02 8.31499391e-02 8.31355669e-02 8.31212022e-02 + 8.31068450e-02 8.30924951e-02 8.30781528e-02 8.30638178e-02 8.30494902e-02 + 8.30351701e-02 8.30208574e-02 8.30065520e-02 8.29922541e-02 8.29779635e-02 + 8.29636804e-02 8.29494046e-02 8.29351361e-02 8.29208751e-02 8.29066213e-02 + 8.28923750e-02 8.28781359e-02 8.28639042e-02 8.28496799e-02 8.28354628e-02 + 8.28212531e-02 8.28070507e-02 8.27928556e-02 8.27786678e-02 8.27644872e-02 + 8.27503140e-02 8.27361480e-02 8.27219893e-02 8.27078379e-02 8.26936938e-02 + 8.26795569e-02 8.26654272e-02 8.26513048e-02 8.26371896e-02 8.26230816e-02 + 8.26089809e-02 8.25948874e-02 8.25808011e-02 8.25667220e-02 8.25526501e-02 + 8.25385854e-02 8.25245279e-02 8.25104775e-02 8.24964344e-02 8.24823984e-02 + 8.24683695e-02 8.24543479e-02 8.24403333e-02 8.24263259e-02 8.24123257e-02 + 8.23983326e-02 8.23843466e-02 8.23703677e-02 8.23563960e-02 8.23424313e-02 + 8.23284737e-02 8.23145233e-02 8.23005799e-02 8.22866436e-02 8.22727144e-02 + 8.22587923e-02 8.22448772e-02 8.22309692e-02 8.22170683e-02 8.22031744e-02 + 8.21892875e-02 8.21754077e-02 8.21615349e-02 8.21476691e-02 8.21338103e-02 + 8.21199586e-02 8.21061138e-02 8.20922761e-02 8.20784453e-02 8.20646216e-02 + 8.20508048e-02 8.20369950e-02 8.20231922e-02 8.20093963e-02 8.19956074e-02 + 8.19818254e-02 8.19680504e-02 8.19542823e-02 8.19405212e-02 8.19267670e-02 + 8.19130197e-02 8.18992794e-02 8.18855459e-02 8.18718194e-02 8.18580997e-02 + 8.18443870e-02 8.18306811e-02 8.18169822e-02 8.18032901e-02 8.17896048e-02 + 8.17759265e-02 8.17622550e-02 8.17485903e-02 8.17349326e-02 8.17212816e-02 + 8.17076375e-02 8.16940002e-02 8.16803697e-02 8.16667461e-02 8.16531293e-02 + 8.16395193e-02 8.16259161e-02 8.16123197e-02 8.15987300e-02 8.15851472e-02 + 8.15715712e-02 8.15580019e-02 8.15444394e-02 8.15308836e-02 8.15173346e-02 + 8.15037924e-02 8.14902569e-02 8.14767282e-02 8.14632062e-02 8.14496909e-02 + 8.14361823e-02 8.14226805e-02 8.14091854e-02 8.13956970e-02 8.13822153e-02 + 8.13687402e-02 8.13552719e-02 8.13418103e-02 8.13283553e-02 8.13149070e-02 + 8.13014654e-02 8.12880305e-02 8.12746022e-02 8.12611805e-02 8.12477656e-02 + 8.12343572e-02 8.12209555e-02 8.12075604e-02 8.11941719e-02 8.11807901e-02 + 8.11674149e-02 8.11540463e-02 8.11406843e-02 8.11273288e-02 8.11139800e-02 + 8.11006378e-02 8.10873021e-02 8.10739731e-02 8.10606506e-02 8.10473346e-02 + 8.10340252e-02 8.10207224e-02 8.10074261e-02 8.09941364e-02 8.09808532e-02 + 8.09675765e-02 8.09543064e-02 8.09410428e-02 8.09277857e-02 8.09145351e-02 + 8.09012911e-02 8.08880535e-02 8.08748224e-02 8.08615978e-02 8.08483797e-02 + 8.08351681e-02 8.08219630e-02 8.08087643e-02 8.07955721e-02 8.07823863e-02 + 8.07692070e-02 8.07560342e-02 8.07428678e-02 8.07297078e-02 8.07165542e-02 + 8.07034071e-02 8.06902664e-02 8.06771322e-02 8.06640043e-02 8.06508829e-02 + 8.06377678e-02 8.06246592e-02 8.06115569e-02 8.05984610e-02 8.05853715e-02 + 8.05722884e-02 8.05592116e-02 8.05461412e-02 8.05330772e-02 8.05200195e-02 + 8.05069682e-02 8.04939232e-02 8.04808846e-02 8.04678523e-02 8.04548263e-02 + 8.04418066e-02 8.04287933e-02 8.04157863e-02 8.04027856e-02 8.03897912e-02 + 8.03768031e-02 8.03638212e-02 8.03508457e-02 8.03378765e-02 8.03249135e-02 + 8.03119568e-02 8.02990064e-02 8.02860622e-02 8.02731243e-02 8.02601926e-02 + 8.02472672e-02 8.02343481e-02 8.02214351e-02 8.02085284e-02 8.01956280e-02 + 8.01827337e-02 8.01698457e-02 8.01569639e-02 8.01440883e-02 8.01312189e-02 + 8.01183557e-02 8.01054986e-02 8.00926478e-02 8.00798032e-02 8.00669647e-02 + 8.00541324e-02 8.00413063e-02 8.00284863e-02 8.00156725e-02 8.00028649e-02 + 7.99900634e-02 7.99772680e-02 7.99644788e-02 7.99516957e-02 7.99389187e-02 + 7.99261479e-02 7.99133832e-02 7.99006246e-02 7.98878721e-02 7.98751257e-02 + 7.98623854e-02 7.98496512e-02 7.98369231e-02 7.98242011e-02 7.98114851e-02 + 7.97987753e-02 7.97860715e-02 7.97733737e-02 7.97606821e-02 7.97479965e-02 + 7.97353169e-02 7.97226434e-02 7.97099759e-02 7.96973145e-02 7.96846590e-02 + 7.96720097e-02 7.96593663e-02 7.96467290e-02 7.96340976e-02 7.96214723e-02 + 7.96088530e-02 7.95962397e-02 7.95836323e-02 7.95710310e-02 7.95584356e-02 + 7.95458463e-02 7.95332629e-02 7.95206854e-02 7.95081140e-02 7.94955485e-02 + 7.94829889e-02 7.94704353e-02 7.94578877e-02 7.94453459e-02 7.94328102e-02 + 7.94202803e-02 7.94077564e-02 7.93952384e-02 7.93827263e-02 7.93702202e-02 + 7.93577199e-02 7.93452256e-02 7.93327371e-02 7.93202546e-02 7.93077779e-02 + 7.92953071e-02 7.92828423e-02 7.92703832e-02 7.92579301e-02 7.92454828e-02 + 7.92330414e-02 7.92206058e-02 7.92081761e-02 7.91957523e-02 7.91833343e-02 + 7.91709221e-02 7.91585157e-02 7.91461152e-02 7.91337206e-02 7.91213317e-02 + 7.91089486e-02 7.90965714e-02 7.90842000e-02 7.90718344e-02 7.90594746e-02 + 7.90471205e-02 7.90347723e-02 7.90224298e-02 7.90100932e-02 7.89977623e-02 + 7.89854371e-02 7.89731178e-02 7.89608042e-02 7.89484964e-02 7.89361943e-02 + 7.89238979e-02 7.89116073e-02 7.88993225e-02 7.88870434e-02 7.88747700e-02 + 7.88625023e-02 7.88502404e-02 7.88379842e-02 7.88257337e-02 7.88134889e-02 + 7.88012498e-02 7.87890164e-02 7.87767887e-02 7.87645667e-02 7.87523504e-02 + 7.87401398e-02 7.87279348e-02 7.87157355e-02 7.87035419e-02 7.86913540e-02 + 7.86791717e-02 7.86669951e-02 7.86548241e-02 7.86426588e-02 7.86304991e-02 + 7.86183450e-02 7.86061966e-02 7.85940538e-02 7.85819167e-02 7.85697851e-02 + 7.85576592e-02 7.85455389e-02 7.85334242e-02 7.85213151e-02 7.85092116e-02 + 7.84971137e-02 7.84850214e-02 7.84729347e-02 7.84608535e-02 7.84487780e-02 + 7.84367080e-02 7.84246436e-02 7.84125847e-02 7.84005314e-02 7.83884837e-02 + 7.83764415e-02 7.83644048e-02 7.83523737e-02 7.83403482e-02 7.83283282e-02 + 7.83163137e-02 7.83043047e-02 7.82923013e-02 7.82803034e-02 7.82683110e-02 + 7.82563241e-02 7.82443427e-02 7.82323668e-02 7.82203964e-02 7.82084315e-02 + 7.81964721e-02 7.81845182e-02 7.81725697e-02 7.81606268e-02 7.81486893e-02 + 7.81367572e-02 7.81248307e-02 7.81129096e-02 7.81009939e-02 7.80890837e-02 + 7.80771790e-02 7.80652797e-02 7.80533858e-02 7.80414974e-02 7.80296144e-02 + 7.80177368e-02 7.80058646e-02 7.79939979e-02 7.79821366e-02 7.79702807e-02 + 7.79584302e-02 7.79465851e-02 7.79347454e-02 7.79229111e-02 7.79110821e-02 + 7.78992586e-02 7.78874404e-02 7.78756277e-02 7.78638202e-02 7.78520182e-02 + 7.78402215e-02 7.78284302e-02 7.78166443e-02 7.78048637e-02 7.77930884e-02 + 7.77813185e-02 7.77695539e-02 7.77577947e-02 7.77460408e-02 7.77342922e-02 + 7.77225490e-02 7.77108111e-02 7.76990785e-02 7.76873512e-02 7.76756292e-02 + 7.76639125e-02 7.76522011e-02 7.76404950e-02 7.76287942e-02 7.76170987e-02 + 7.76054085e-02 7.75937236e-02 7.75820439e-02 7.75703695e-02 7.75587004e-02 + 7.75470365e-02 7.75353780e-02 7.75237246e-02 7.75120765e-02 7.75004337e-02 + 7.74887961e-02 7.74771637e-02 7.74655366e-02 7.74539147e-02 7.74422981e-02 + 7.74306867e-02 7.74190805e-02 7.74074795e-02 7.73958837e-02 7.73842931e-02 + 7.73727078e-02 7.73611276e-02 7.73495527e-02 7.73379829e-02 7.73264183e-02 + 7.73148589e-02 7.73033047e-02 7.72917557e-02 7.72802118e-02 7.72686732e-02 + 7.72571396e-02 7.72456113e-02 7.72340881e-02 7.72225701e-02 7.72110572e-02 + 7.71995494e-02 7.71880468e-02 7.71765494e-02 7.71650571e-02 7.71535699e-02 + 7.71420878e-02 7.71306109e-02 7.71191391e-02 7.71076724e-02 7.70962108e-02 + 7.70847543e-02 7.70733030e-02 7.70618567e-02 7.70504155e-02 7.70389795e-02 + 7.70275485e-02 7.70161226e-02 7.70047018e-02 7.69932860e-02 7.69818754e-02 + 7.69704698e-02 7.69590693e-02 7.69476738e-02 7.69362834e-02 7.69248981e-02 + 7.69135178e-02 7.69021426e-02 7.68907724e-02 7.68794073e-02 7.68680472e-02 + 7.68566921e-02 7.68453420e-02 7.68339970e-02 7.68226570e-02 7.68113221e-02 + 7.67999921e-02 7.67886672e-02 7.67773472e-02 7.67660323e-02 7.67547224e-02 + 7.67434174e-02 7.67321175e-02 7.67208226e-02 7.67095326e-02 7.66982476e-02 + 7.66869676e-02 7.66756926e-02 7.66644225e-02 7.66531574e-02 7.66418973e-02 + 7.66306422e-02 7.66193920e-02 7.66081467e-02 7.65969064e-02 7.65856711e-02 + 7.65744407e-02 7.65632152e-02 7.65519946e-02 7.65407790e-02 7.65295684e-02 + 7.65183626e-02 7.65071618e-02 7.64959659e-02 7.64847749e-02 7.64735888e-02 + 7.64624076e-02 7.64512313e-02 7.64400599e-02 7.64288935e-02 7.64177319e-02 + 7.64065752e-02 7.63954233e-02 7.63842764e-02 7.63731343e-02 7.63619972e-02 + 7.63508648e-02 7.63397374e-02 7.63286148e-02 7.63174971e-02 7.63063842e-02 + 7.62952762e-02 7.62841730e-02 7.62730747e-02 7.62619813e-02 7.62508926e-02 + 7.62398088e-02 7.62287298e-02 7.62176557e-02 7.62065864e-02 7.61955219e-02 + 7.61844622e-02 7.61734074e-02 7.61623573e-02 7.61513121e-02 7.61402716e-02 + 7.61292360e-02 7.61182052e-02 7.61071791e-02 7.60961579e-02 7.60851414e-02 + 7.60741297e-02 7.60631228e-02 7.60521207e-02 7.60411233e-02 7.60301307e-02 + 7.60191429e-02 7.60081598e-02 7.59971815e-02 7.59862080e-02 7.59752392e-02 + 7.59642751e-02 7.59533158e-02 7.59423613e-02 7.59314115e-02 7.59204664e-02 + 7.59095260e-02 7.58985904e-02 7.58876595e-02 7.58767333e-02 7.58658119e-02 + 7.58548951e-02 7.58439831e-02 7.58330758e-02 7.58221731e-02 7.58112752e-02 + 7.58003820e-02 7.57894935e-02 7.57786096e-02 7.57677305e-02 7.57568560e-02 + 7.57459862e-02 7.57351211e-02 7.57242607e-02 7.57134049e-02 7.57025538e-02 + 7.56917074e-02 7.56808656e-02 7.56700285e-02 7.56591961e-02 7.56483683e-02 + 7.56375451e-02 7.56267266e-02 7.56159127e-02 7.56051035e-02 7.55942989e-02 + 7.55834989e-02 7.55727035e-02 7.55619128e-02 7.55511267e-02 7.55403452e-02 + 7.55295684e-02 7.55187961e-02 7.55080285e-02 7.54972654e-02 7.54865070e-02 + 7.54757531e-02 7.54650039e-02 7.54542592e-02 7.54435192e-02 7.54327837e-02 + 7.54220528e-02 7.54113264e-02 7.54006047e-02 7.53898875e-02 7.53791749e-02 + 7.53684669e-02 7.53577634e-02 7.53470644e-02 7.53363701e-02 7.53256803e-02 + 7.53149950e-02 7.53043143e-02 7.52936381e-02 7.52829665e-02 7.52722994e-02 + 7.52616368e-02 7.52509787e-02 7.52403252e-02 7.52296762e-02 7.52190318e-02 + 7.52083918e-02 7.51977564e-02 7.51871255e-02 7.51764990e-02 7.51658771e-02 + 7.51552597e-02 7.51446468e-02 7.51340384e-02 7.51234344e-02 7.51128350e-02 + 7.51022400e-02 7.50916496e-02 7.50810636e-02 7.50704821e-02 7.50599050e-02 + 7.50493324e-02 7.50387643e-02 7.50282007e-02 7.50176415e-02 7.50070868e-02 + 7.49965365e-02 7.49859907e-02 7.49754493e-02 7.49649123e-02 7.49543799e-02 + 7.49438518e-02 7.49333282e-02 7.49228090e-02 7.49122942e-02 7.49017839e-02 + 7.48912780e-02 7.48807765e-02 7.48702794e-02 7.48597868e-02 7.48492985e-02 + 7.48388147e-02 7.48283352e-02 7.48178602e-02 7.48073895e-02 7.47969233e-02 + 7.47864614e-02 7.47760040e-02 7.47655509e-02 7.47551022e-02 7.47446579e-02 + 7.47342179e-02 7.47237824e-02 7.47133512e-02 7.47029243e-02 7.46925019e-02 + 7.46820838e-02 7.46716700e-02 7.46612606e-02 7.46508556e-02 7.46404549e-02 + 7.46300586e-02 7.46196666e-02 7.46092789e-02 7.45988956e-02 7.45885166e-02 + 7.45781419e-02 7.45677716e-02 7.45574056e-02 7.45470439e-02 7.45366865e-02 + 7.45263335e-02 7.45159847e-02 7.45056403e-02 7.44953002e-02 7.44849644e-02 + 7.44746329e-02 7.44643056e-02 7.44539827e-02 7.44436641e-02 7.44333497e-02 + 7.44230397e-02 7.44127339e-02 7.44024324e-02 7.43921352e-02 7.43818423e-02 + 7.43715536e-02 7.43612692e-02 7.43509890e-02 7.43407132e-02 7.43304416e-02 + 7.43201742e-02 7.43099111e-02 7.42996522e-02 7.42893976e-02 7.42791473e-02 + 7.42689011e-02 7.42586593e-02 7.42484216e-02 7.42381882e-02 7.42279590e-02 + 7.42177341e-02 7.42075133e-02 7.41972968e-02 7.41870845e-02 7.41768765e-02 + 7.41666726e-02 7.41564729e-02 7.41462775e-02 7.41360863e-02 7.41258992e-02 + 7.41157164e-02 7.41055377e-02 7.40953633e-02 7.40851930e-02 7.40750269e-02 + 7.40648650e-02 7.40547073e-02 7.40445538e-02 7.40344044e-02 7.40242592e-02 + 7.40141182e-02 7.40039814e-02 7.39938487e-02 7.39837202e-02 7.39735958e-02 + 7.39634756e-02 7.39533595e-02 7.39432476e-02 7.39331398e-02 7.39230362e-02 + 7.39129367e-02 7.39028414e-02 7.38927502e-02 7.38826631e-02 7.38725802e-02 + 7.38625014e-02 7.38524267e-02 7.38423561e-02 7.38322896e-02 7.38222273e-02 + 7.38121691e-02 7.38021150e-02 7.37920650e-02 7.37820191e-02 7.37719773e-02 + 7.37619396e-02 7.37519060e-02 7.37418765e-02 7.37318510e-02 7.37218297e-02 + 7.37118125e-02 7.37017993e-02 7.36917902e-02 7.36817852e-02 7.36717843e-02 + 7.36617874e-02 7.36517946e-02 7.36418059e-02 7.36318212e-02 7.36218406e-02 + 7.36118641e-02 7.36018916e-02 7.35919231e-02 7.35819587e-02 7.35719984e-02 + 7.35620421e-02 7.35520898e-02 7.35421416e-02 7.35321974e-02 7.35222572e-02 + 7.35123211e-02 7.35023890e-02 7.34924610e-02 7.34825369e-02 7.34726169e-02 + 7.34627009e-02 7.34527889e-02 7.34428809e-02 7.34329769e-02 7.34230769e-02 + 7.34131809e-02 7.34032890e-02 7.33934010e-02 7.33835170e-02 7.33736370e-02 + 7.33637610e-02 7.33538890e-02 7.33440210e-02 7.33341569e-02 7.33242969e-02 + 7.33144408e-02 7.33045886e-02 7.32947405e-02 7.32848963e-02 7.32750561e-02 + 7.32652199e-02 7.32553876e-02 7.32455592e-02 7.32357348e-02 7.32259144e-02 + 7.32160979e-02 7.32062854e-02 7.31964768e-02 7.31866722e-02 7.31768715e-02 + 7.31670747e-02 7.31572819e-02 7.31474930e-02 7.31377080e-02 7.31279269e-02 + 7.31181498e-02 7.31083766e-02 7.30986073e-02 7.30888419e-02 7.30790805e-02 + 7.30693229e-02 7.30595693e-02 7.30498195e-02 7.30400737e-02 7.30303318e-02 + 7.30205937e-02 7.30108596e-02 7.30011293e-02 7.29914030e-02 7.29816805e-02 + 7.29719619e-02 7.29622472e-02 7.29525364e-02 7.29428294e-02 7.29331263e-02 + 7.29234271e-02 7.29137318e-02 7.29040403e-02 7.28943527e-02 7.28846689e-02 + 7.28749890e-02 7.28653130e-02 7.28556408e-02 7.28459725e-02 7.28363080e-02 + 7.28266473e-02 7.28169905e-02 7.28073376e-02 7.27976885e-02 7.27880432e-02 + 7.27784017e-02 7.27687641e-02 7.27591303e-02 7.27495003e-02 7.27398742e-02 + 7.27302519e-02 7.27206334e-02 7.27110187e-02 7.27014078e-02 7.26918007e-02 + 7.26821975e-02 7.26725980e-02 7.26630023e-02 7.26534105e-02 7.26438224e-02 + 7.26342382e-02 7.26246577e-02 7.26150810e-02 7.26055081e-02 7.25959390e-02 + 7.25863737e-02 7.25768121e-02 7.25672544e-02 7.25577004e-02 7.25481502e-02 + 7.25386037e-02 7.25290610e-02 7.25195221e-02 7.25099870e-02 7.25004556e-02 + 7.24909279e-02 7.24814040e-02 7.24718839e-02 7.24623675e-02 7.24528549e-02 + 7.24433460e-02 7.24338409e-02 7.24243395e-02 7.24148418e-02 7.24053479e-02 + 7.23958577e-02 7.23863712e-02 7.23768885e-02 7.23674095e-02 7.23579342e-02 + 7.23484626e-02 7.23389948e-02 7.23295307e-02 7.23200702e-02 7.23106135e-02 + 7.23011605e-02 7.22917112e-02 7.22822656e-02 7.22728238e-02 7.22633856e-02 + 7.22539511e-02 7.22445203e-02 7.22350932e-02 7.22256698e-02 7.22162500e-02 + 7.22068340e-02 7.21974216e-02 7.21880130e-02 7.21786080e-02 7.21692066e-02 + 7.21598090e-02 7.21504150e-02 7.21410247e-02 7.21316380e-02 7.21222550e-02 + 7.21128757e-02 7.21035000e-02 7.20941280e-02 7.20847596e-02 7.20753949e-02 + 7.20660339e-02 7.20566765e-02 7.20473227e-02 7.20379726e-02 7.20286261e-02 + 7.20192832e-02 7.20099440e-02 7.20006084e-02 7.19912765e-02 7.19819481e-02 + 7.19726234e-02 7.19633024e-02 7.19539849e-02 7.19446711e-02 7.19353608e-02 + 7.19260542e-02 7.19167512e-02 7.19074518e-02 7.18981560e-02 7.18888639e-02 + 7.18795753e-02 7.18702903e-02 7.18610089e-02 7.18517311e-02 7.18424569e-02 + 7.18331863e-02 7.18239193e-02 7.18146559e-02 7.18053960e-02 7.17961398e-02 + 7.17868871e-02 7.17776380e-02 7.17683924e-02 7.17591505e-02 7.17499121e-02 + 7.17406772e-02 7.17314460e-02 7.17222183e-02 7.17129941e-02 7.17037735e-02 + 7.16945565e-02 7.16853430e-02 7.16761331e-02 7.16669267e-02 7.16577239e-02 + 7.16485246e-02 7.16393289e-02 7.16301367e-02 7.16209480e-02 7.16117629e-02 + 7.16025813e-02 7.15934032e-02 7.15842287e-02 7.15750577e-02 7.15658902e-02 + 7.15567262e-02 7.15475658e-02 7.15384089e-02 7.15292555e-02 7.15201056e-02 + 7.15109592e-02 7.15018163e-02 7.14926769e-02 7.14835410e-02 7.14744087e-02 + 7.14652798e-02 7.14561544e-02 7.14470325e-02 7.14379142e-02 7.14287993e-02 + 7.14196878e-02 7.14105799e-02 7.14014755e-02 7.13923745e-02 7.13832770e-02 + 7.13741830e-02 7.13650925e-02 7.13560055e-02 7.13469219e-02 7.13378418e-02 + 7.13287651e-02 7.13196919e-02 7.13106222e-02 7.13015559e-02 7.12924931e-02 + 7.12834338e-02 7.12743779e-02 7.12653254e-02 7.12562764e-02 7.12472309e-02 + 7.12381888e-02 7.12291501e-02 7.12201149e-02 7.12110831e-02 7.12020547e-02 + 7.11930298e-02 7.11840083e-02 7.11749902e-02 7.11659756e-02 7.11569644e-02 + 7.11479566e-02 7.11389522e-02 7.11299512e-02 7.11209537e-02 7.11119596e-02 + 7.11029689e-02 7.10939816e-02 7.10849977e-02 7.10760172e-02 7.10670401e-02 + 7.10580664e-02 7.10490961e-02 7.10401292e-02 7.10311657e-02 7.10222056e-02 + 7.10132489e-02 7.10042956e-02 7.09953456e-02 7.09863990e-02 7.09774559e-02 + 7.09685161e-02 7.09595796e-02 7.09506466e-02 7.09417169e-02 7.09327906e-02 + 7.09238677e-02 7.09149481e-02 7.09060319e-02 7.08971191e-02 7.08882096e-02 + 7.08793035e-02 7.08704007e-02 7.08615013e-02 7.08526052e-02 7.08437125e-02 + 7.08348231e-02 7.08259371e-02 7.08170544e-02 7.08081751e-02 7.07992991e-02 + 7.07904264e-02 7.07815571e-02 7.07726911e-02 7.07638285e-02 7.07549691e-02 + 7.07461131e-02 7.07372604e-02 7.07284111e-02 7.07195650e-02 7.07107223e-02 + 7.07018829e-02 7.06930468e-02 7.06842141e-02 7.06753846e-02 7.06665584e-02 + 7.06577356e-02 7.06489160e-02 7.06400998e-02 7.06312868e-02 7.06224772e-02 + 7.06136708e-02 7.06048678e-02 7.05960680e-02 7.05872715e-02 7.05784783e-02 + 7.05696884e-02 7.05609018e-02 7.05521184e-02 7.05433384e-02 7.05345616e-02 + 1.00000000e+00 9.75894263e-01 9.53451752e-01 9.32489601e-01 9.12851907e-01 + 8.94404826e-01 8.77032714e-01 8.60635068e-01 8.45124065e-01 8.30422576e-01 + 8.16462554e-01 8.03183696e-01 7.90532350e-01 7.78460602e-01 7.66925506e-01 + 7.55888443e-01 7.45314577e-01 7.35172390e-01 7.25433287e-01 7.16071258e-01 + 7.07062580e-01 6.98385572e-01 6.90020370e-01 6.81948734e-01 6.74153887e-01 + 6.66620364e-01 6.59333880e-01 6.52281224e-01 6.45450150e-01 6.38829295e-01 + 6.32408091e-01 6.26176704e-01 6.20125961e-01 6.14247300e-01 6.08532716e-01 + 6.02974715e-01 5.97566276e-01 5.92300808e-01 5.87172122e-01 5.82174396e-01 + 5.77302151e-01 5.72550221e-01 5.67913735e-01 5.63388093e-01 5.58968948e-01 + 5.54652188e-01 5.50433918e-01 5.46310451e-01 5.42278287e-01 5.38334105e-01 + 5.34474753e-01 5.30697232e-01 5.26998691e-01 5.23376415e-01 5.19827818e-01 + 5.16350438e-01 5.12941922e-01 5.09600027e-01 5.06322612e-01 5.03107629e-01 + 4.99953120e-01 4.96857213e-01 4.93818117e-01 4.90834114e-01 4.87903560e-01 + 4.85024878e-01 4.82196556e-01 4.79417141e-01 4.76685242e-01 4.73999519e-01 + 4.71358685e-01 4.68761505e-01 4.66206788e-01 4.63693390e-01 4.61220209e-01 + 4.58786184e-01 4.56390292e-01 4.54031548e-01 4.51709002e-01 4.49421737e-01 + 4.47168870e-01 4.44949545e-01 4.42762941e-01 4.40608259e-01 4.38484731e-01 + 4.36391613e-01 4.34328187e-01 4.32293756e-01 4.30287649e-01 4.28309213e-01 + 4.26357819e-01 4.24432857e-01 4.22533734e-01 4.20659877e-01 4.18810733e-01 + 4.16985761e-01 4.15184441e-01 4.13406264e-01 4.11650741e-01 4.09917394e-01 + 4.08205761e-01 4.06515390e-01 4.04845847e-01 4.03196706e-01 4.01567556e-01 + 3.99957996e-01 3.98367636e-01 3.96796098e-01 3.95243014e-01 3.93708024e-01 + 3.92190780e-01 3.90690944e-01 3.89208184e-01 3.87742180e-01 3.86292617e-01 + 3.84859191e-01 3.83441605e-01 3.82039569e-01 3.80652800e-01 3.79281024e-01 + 3.77923973e-01 3.76581385e-01 3.75253005e-01 3.73938583e-01 3.72637878e-01 + 3.71350652e-01 3.70076675e-01 3.68815719e-01 3.67567566e-01 3.66332000e-01 + 3.65108810e-01 3.63897792e-01 3.62698745e-01 3.61511473e-01 3.60335785e-01 + 3.59171493e-01 3.58018415e-01 3.56876371e-01 3.55745187e-01 3.54624691e-01 + 3.53514717e-01 3.52415101e-01 3.51325683e-01 3.50246306e-01 3.49176816e-01 + 3.48117064e-01 3.47066903e-01 3.46026189e-01 3.44994782e-01 3.43972542e-01 + 3.42959337e-01 3.41955032e-01 3.40959498e-01 3.39972609e-01 3.38994241e-01 + 3.38024270e-01 3.37062579e-01 3.36109049e-01 3.35163566e-01 3.34226018e-01 + 3.33296293e-01 3.32374284e-01 3.31459885e-01 3.30552992e-01 3.29653502e-01 + 3.28761315e-01 3.27876333e-01 3.26998460e-01 3.26127600e-01 3.25263662e-01 + 3.24406553e-01 3.23556184e-01 3.22712468e-01 3.21875318e-01 3.21044649e-01 + 3.20220378e-01 3.19402424e-01 3.18590706e-01 3.17785145e-01 3.16985665e-01 + 3.16192188e-01 3.15404639e-01 3.14622947e-01 3.13847038e-01 3.13076841e-01 + 3.12312287e-01 3.11553306e-01 3.10799833e-01 3.10051800e-01 3.09309142e-01 + 3.08571795e-01 3.07839697e-01 3.07112784e-01 3.06390997e-01 3.05674275e-01 + 3.04962560e-01 3.04255793e-01 3.03553917e-01 3.02856876e-01 3.02164615e-01 + 3.01477079e-01 3.00794216e-01 3.00115971e-01 2.99442294e-01 2.98773134e-01 + 2.98108439e-01 2.97448161e-01 2.96792252e-01 2.96140662e-01 2.95493345e-01 + 2.94850254e-01 2.94211344e-01 2.93576570e-01 2.92945886e-01 2.92319250e-01 + 2.91696618e-01 2.91077947e-01 2.90463197e-01 2.89852325e-01 2.89245291e-01 + 2.88642055e-01 2.88042577e-01 2.87446820e-01 2.86854743e-01 2.86266311e-01 + 2.85681484e-01 2.85100228e-01 2.84522505e-01 2.83948280e-01 2.83377517e-01 + 2.82810183e-01 2.82246243e-01 2.81685662e-01 2.81128409e-01 2.80574450e-01 + 2.80023753e-01 2.79476286e-01 2.78932017e-01 2.78390916e-01 2.77852951e-01 + 2.77318094e-01 2.76786313e-01 2.76257580e-01 2.75731865e-01 2.75209140e-01 + 2.74689377e-01 2.74172548e-01 2.73658625e-01 2.73147581e-01 2.72639389e-01 + 2.72134024e-01 2.71631458e-01 2.71131667e-01 2.70634624e-01 2.70140305e-01 + 2.69648684e-01 2.69159738e-01 2.68673442e-01 2.68189772e-01 2.67708706e-01 + 2.67230218e-01 2.66754287e-01 2.66280890e-01 2.65810005e-01 2.65341608e-01 + 2.64875680e-01 2.64412197e-01 2.63951138e-01 2.63492483e-01 2.63036211e-01 + 2.62582301e-01 2.62130732e-01 2.61681486e-01 2.61234541e-01 2.60789879e-01 + 2.60347479e-01 2.59907323e-01 2.59469393e-01 2.59033668e-01 2.58600131e-01 + 2.58168764e-01 2.57739549e-01 2.57312467e-01 2.56887501e-01 2.56464633e-01 + 2.56043847e-01 2.55625126e-01 2.55208452e-01 2.54793809e-01 2.54381180e-01 + 2.53970550e-01 2.53561902e-01 2.53155220e-01 2.52750489e-01 2.52347693e-01 + 2.51946816e-01 2.51547844e-01 2.51150761e-01 2.50755553e-01 2.50362204e-01 + 2.49970701e-01 2.49581029e-01 2.49193173e-01 2.48807120e-01 2.48422856e-01 + 2.48040367e-01 2.47659639e-01 2.47280658e-01 2.46903413e-01 2.46527888e-01 + 2.46154072e-01 2.45781951e-01 2.45411513e-01 2.45042745e-01 2.44675634e-01 + 2.44310168e-01 2.43946335e-01 2.43584122e-01 2.43223518e-01 2.42864511e-01 + 2.42507089e-01 2.42151241e-01 2.41796954e-01 2.41444218e-01 2.41093021e-01 + 2.40743352e-01 2.40395201e-01 2.40048555e-01 2.39703404e-01 2.39359739e-01 + 2.39017547e-01 2.38676818e-01 2.38337542e-01 2.37999710e-01 2.37663309e-01 + 2.37328332e-01 2.36994766e-01 2.36662603e-01 2.36331833e-01 2.36002446e-01 + 2.35674432e-01 2.35347783e-01 2.35022487e-01 2.34698537e-01 2.34375923e-01 + 2.34054635e-01 2.33734666e-01 2.33416004e-01 2.33098643e-01 2.32782573e-01 + 2.32467784e-01 2.32154270e-01 2.31842020e-01 2.31531028e-01 2.31221283e-01 + 2.30912778e-01 2.30605504e-01 2.30299454e-01 2.29994620e-01 2.29690992e-01 + 2.29388564e-01 2.29087328e-01 2.28787275e-01 2.28488398e-01 2.28190689e-01 + 2.27894141e-01 2.27598746e-01 2.27304497e-01 2.27011386e-01 2.26719406e-01 + 2.26428550e-01 2.26138810e-01 2.25850180e-01 2.25562652e-01 2.25276219e-01 + 2.24990875e-01 2.24706613e-01 2.24423425e-01 2.24141305e-01 2.23860246e-01 + 2.23580243e-01 2.23301287e-01 2.23023372e-01 2.22746493e-01 2.22470643e-01 + 2.22195814e-01 2.21922002e-01 2.21649200e-01 2.21377401e-01 2.21106599e-01 + 2.20836789e-01 2.20567964e-01 2.20300119e-01 2.20033247e-01 2.19767342e-01 + 2.19502400e-01 2.19238413e-01 2.18975376e-01 2.18713284e-01 2.18452130e-01 + 2.18191910e-01 2.17932618e-01 2.17674247e-01 2.17416794e-01 2.17160252e-01 + 2.16904616e-01 2.16649880e-01 2.16396040e-01 2.16143090e-01 2.15891025e-01 + 2.15639840e-01 2.15389530e-01 2.15140089e-01 2.14891513e-01 2.14643796e-01 + 2.14396935e-01 2.14150923e-01 2.13905756e-01 2.13661429e-01 2.13417937e-01 + 2.13175276e-01 2.12933441e-01 2.12692427e-01 2.12452229e-01 2.12212843e-01 + 2.11974265e-01 2.11736490e-01 2.11499513e-01 2.11263330e-01 2.11027936e-01 + 2.10793328e-01 2.10559500e-01 2.10326449e-01 2.10094169e-01 2.09862658e-01 + 2.09631910e-01 2.09401922e-01 2.09172689e-01 2.08944208e-01 2.08716473e-01 + 2.08489481e-01 2.08263229e-01 2.08037711e-01 2.07812924e-01 2.07588865e-01 + 2.07365528e-01 2.07142911e-01 2.06921010e-01 2.06699820e-01 2.06479337e-01 + 2.06259559e-01 2.06040481e-01 2.05822100e-01 2.05604412e-01 2.05387413e-01 + 2.05171099e-01 2.04955468e-01 2.04740515e-01 2.04526237e-01 2.04312630e-01 + 2.04099691e-01 2.03887417e-01 2.03675803e-01 2.03464847e-01 2.03254545e-01 + 2.03044894e-01 2.02835891e-01 2.02627531e-01 2.02419812e-01 2.02212731e-01 + 2.02006284e-01 2.01800468e-01 2.01595280e-01 2.01390716e-01 2.01186774e-01 + 2.00983451e-01 2.00780742e-01 2.00578646e-01 2.00377158e-01 2.00176277e-01 + 1.99975998e-01 1.99776320e-01 1.99577238e-01 1.99378751e-01 1.99180854e-01 + 1.98983546e-01 1.98786822e-01 1.98590681e-01 1.98395120e-01 1.98200135e-01 + 1.98005724e-01 1.97811884e-01 1.97618612e-01 1.97425905e-01 1.97233761e-01 + 1.97042177e-01 1.96851151e-01 1.96660678e-01 1.96470758e-01 1.96281387e-01 + 1.96092562e-01 1.95904281e-01 1.95716541e-01 1.95529341e-01 1.95342676e-01 + 1.95156545e-01 1.94970945e-01 1.94785873e-01 1.94601328e-01 1.94417306e-01 + 1.94233805e-01 1.94050823e-01 1.93868357e-01 1.93686404e-01 1.93504963e-01 + 1.93324031e-01 1.93143606e-01 1.92963685e-01 1.92784265e-01 1.92605345e-01 + 1.92426923e-01 1.92248995e-01 1.92071560e-01 1.91894616e-01 1.91718159e-01 + 1.91542189e-01 1.91366702e-01 1.91191696e-01 1.91017170e-01 1.90843121e-01 + 1.90669546e-01 1.90496445e-01 1.90323814e-01 1.90151652e-01 1.89979956e-01 + 1.89808724e-01 1.89637954e-01 1.89467644e-01 1.89297793e-01 1.89128397e-01 + 1.88959456e-01 1.88790966e-01 1.88622926e-01 1.88455335e-01 1.88288189e-01 + 1.88121487e-01 1.87955227e-01 1.87789407e-01 1.87624025e-01 1.87459079e-01 + 1.87294568e-01 1.87130489e-01 1.86966840e-01 1.86803620e-01 1.86640827e-01 + 1.86478458e-01 1.86316513e-01 1.86154989e-01 1.85993884e-01 1.85833197e-01 + 1.85672925e-01 1.85513068e-01 1.85353622e-01 1.85194587e-01 1.85035961e-01 + 1.84877742e-01 1.84719927e-01 1.84562517e-01 1.84405508e-01 1.84248899e-01 + 1.84092688e-01 1.83936874e-01 1.83781455e-01 1.83626429e-01 1.83471795e-01 + 1.83317551e-01 1.83163695e-01 1.83010226e-01 1.82857142e-01 1.82704442e-01 + 1.82552123e-01 1.82400185e-01 1.82248626e-01 1.82097444e-01 1.81946637e-01 + 1.81796204e-01 1.81646144e-01 1.81496455e-01 1.81347136e-01 1.81198184e-01 + 1.81049599e-01 1.80901378e-01 1.80753522e-01 1.80606027e-01 1.80458892e-01 + 1.80312117e-01 1.80165699e-01 1.80019637e-01 1.79873930e-01 1.79728576e-01 + 1.79583574e-01 1.79438922e-01 1.79294620e-01 1.79150665e-01 1.79007056e-01 + 1.78863792e-01 1.78720871e-01 1.78578292e-01 1.78436054e-01 1.78294156e-01 + 1.78152595e-01 1.78011371e-01 1.77870482e-01 1.77729928e-01 1.77589706e-01 + 1.77449815e-01 1.77310255e-01 1.77171023e-01 1.77032119e-01 1.76893540e-01 + 1.76755287e-01 1.76617358e-01 1.76479751e-01 1.76342465e-01 1.76205499e-01 + 1.76068851e-01 1.75932521e-01 1.75796507e-01 1.75660808e-01 1.75525423e-01 + 1.75390351e-01 1.75255589e-01 1.75121138e-01 1.74986996e-01 1.74853162e-01 + 1.74719634e-01 1.74586412e-01 1.74453494e-01 1.74320879e-01 1.74188566e-01 + 1.74056554e-01 1.73924842e-01 1.73793428e-01 1.73662312e-01 1.73531492e-01 + 1.73400967e-01 1.73270736e-01 1.73140798e-01 1.73011152e-01 1.72881797e-01 + 1.72752732e-01 1.72623955e-01 1.72495466e-01 1.72367263e-01 1.72239346e-01 + 1.72111713e-01 1.71984363e-01 1.71857296e-01 1.71730510e-01 1.71604004e-01 + 1.71477777e-01 1.71351828e-01 1.71226157e-01 1.71100761e-01 1.70975641e-01 + 1.70850795e-01 1.70726222e-01 1.70601921e-01 1.70477891e-01 1.70354131e-01 + 1.70230640e-01 1.70107418e-01 1.69984462e-01 1.69861773e-01 1.69739349e-01 + 1.69617190e-01 1.69495294e-01 1.69373660e-01 1.69252288e-01 1.69131176e-01 + 1.69010324e-01 1.68889731e-01 1.68769395e-01 1.68649317e-01 1.68529494e-01 + 1.68409926e-01 1.68290613e-01 1.68171552e-01 1.68052744e-01 1.67934188e-01 + 1.67815882e-01 1.67697825e-01 1.67580018e-01 1.67462458e-01 1.67345146e-01 + 1.67228079e-01 1.67111258e-01 1.66994682e-01 1.66878349e-01 1.66762259e-01 + 1.66646411e-01 1.66530804e-01 1.66415437e-01 1.66300309e-01 1.66185421e-01 + 1.66070770e-01 1.65956356e-01 1.65842178e-01 1.65728235e-01 1.65614527e-01 + 1.65501053e-01 1.65387812e-01 1.65274803e-01 1.65162025e-01 1.65049477e-01 + 1.64937160e-01 1.64825071e-01 1.64713211e-01 1.64601578e-01 1.64490172e-01 + 1.64378991e-01 1.64268036e-01 1.64157305e-01 1.64046798e-01 1.63936514e-01 + 1.63826452e-01 1.63716611e-01 1.63606991e-01 1.63497591e-01 1.63388409e-01 + 1.63279447e-01 1.63170702e-01 1.63062174e-01 1.62953862e-01 1.62845766e-01 + 1.62737885e-01 1.62630217e-01 1.62522764e-01 1.62415523e-01 1.62308493e-01 + 1.62201676e-01 1.62095069e-01 1.61988671e-01 1.61882483e-01 1.61776504e-01 + 1.61670732e-01 1.61565168e-01 1.61459810e-01 1.61354658e-01 1.61249711e-01 + 1.61144969e-01 1.61040431e-01 1.60936095e-01 1.60831963e-01 1.60728032e-01 + 1.60624302e-01 1.60520773e-01 1.60417444e-01 1.60314314e-01 1.60211383e-01 + 1.60108650e-01 1.60006114e-01 1.59903775e-01 1.59801632e-01 1.59699684e-01 + 1.59597932e-01 1.59496373e-01 1.59395009e-01 1.59293837e-01 1.59192858e-01 + 1.59092070e-01 1.58991474e-01 1.58891068e-01 1.58790852e-01 1.58690826e-01 + 1.58590988e-01 1.58491339e-01 1.58391877e-01 1.58292602e-01 1.58193514e-01 + 1.58094612e-01 1.57995894e-01 1.57897362e-01 1.57799013e-01 1.57700849e-01 + 1.57602867e-01 1.57505067e-01 1.57407450e-01 1.57310013e-01 1.57212758e-01 + 1.57115682e-01 1.57018786e-01 1.56922069e-01 1.56825531e-01 1.56729171e-01 + 1.56632988e-01 1.56536982e-01 1.56441152e-01 1.56345498e-01 1.56250019e-01 + 1.56154715e-01 1.56059585e-01 1.55964629e-01 1.55869846e-01 1.55775235e-01 + 1.55680797e-01 1.55586530e-01 1.55492434e-01 1.55398509e-01 1.55304754e-01 + 1.55211168e-01 1.55117751e-01 1.55024502e-01 1.54931422e-01 1.54838509e-01 + 1.54745763e-01 1.54653183e-01 1.54560770e-01 1.54468522e-01 1.54376439e-01 + 1.54284520e-01 1.54192765e-01 1.54101174e-01 1.54009746e-01 1.53918481e-01 + 1.53827377e-01 1.53736435e-01 1.53645654e-01 1.53555034e-01 1.53464574e-01 + 1.53374274e-01 1.53284132e-01 1.53194150e-01 1.53104326e-01 1.53014660e-01 + 1.52925151e-01 1.52835798e-01 1.52746603e-01 1.52657563e-01 1.52568679e-01 + 1.52479950e-01 1.52391376e-01 1.52302955e-01 1.52214689e-01 1.52126576e-01 + 1.52038615e-01 1.51950807e-01 1.51863151e-01 1.51775647e-01 1.51688293e-01 + 1.51601091e-01 1.51514038e-01 1.51427135e-01 1.51340382e-01 1.51253778e-01 + 1.51167322e-01 1.51081014e-01 1.50994854e-01 1.50908841e-01 1.50822975e-01 + 1.50737255e-01 1.50651681e-01 1.50566253e-01 1.50480970e-01 1.50395832e-01 + 1.50310838e-01 1.50225988e-01 1.50141281e-01 1.50056718e-01 1.49972298e-01 + 1.49888019e-01 1.49803883e-01 1.49719888e-01 1.49636035e-01 1.49552322e-01 + 1.49468749e-01 1.49385316e-01 1.49302023e-01 1.49218869e-01 1.49135854e-01 + 1.49052977e-01 1.48970239e-01 1.48887638e-01 1.48805174e-01 1.48722847e-01 + 1.48640656e-01 1.48558602e-01 1.48476683e-01 1.48394900e-01 1.48313252e-01 + 1.48231738e-01 1.48150359e-01 1.48069113e-01 1.47988001e-01 1.47907022e-01 + 1.47826176e-01 1.47745463e-01 1.47664881e-01 1.47584431e-01 1.47504113e-01 + 1.47423925e-01 1.47343868e-01 1.47263942e-01 1.47184145e-01 1.47104478e-01 + 1.47024940e-01 1.46945531e-01 1.46866251e-01 1.46787099e-01 1.46708074e-01 + 1.46629177e-01 1.46550407e-01 1.46471764e-01 1.46393248e-01 1.46314857e-01 + 1.46236593e-01 1.46158454e-01 1.46080440e-01 1.46002551e-01 1.45924786e-01 + 1.45847145e-01 1.45769628e-01 1.45692235e-01 1.45614965e-01 1.45537817e-01 + 1.45460792e-01 1.45383890e-01 1.45307109e-01 1.45230449e-01 1.45153911e-01 + 1.45077494e-01 1.45001197e-01 1.44925021e-01 1.44848964e-01 1.44773027e-01 + 1.44697209e-01 1.44621511e-01 1.44545931e-01 1.44470469e-01 1.44395126e-01 + 1.44319900e-01 1.44244791e-01 1.44169800e-01 1.44094926e-01 1.44020168e-01 + 1.43945527e-01 1.43871001e-01 1.43796591e-01 1.43722296e-01 1.43648117e-01 + 1.43574052e-01 1.43500101e-01 1.43426265e-01 1.43352542e-01 1.43278934e-01 + 1.43205438e-01 1.43132055e-01 1.43058785e-01 1.42985628e-01 1.42912583e-01 + 1.42839649e-01 1.42766827e-01 1.42694116e-01 1.42621516e-01 1.42549027e-01 + 1.42476649e-01 1.42404380e-01 1.42332222e-01 1.42260172e-01 1.42188233e-01 + 1.42116402e-01 1.42044680e-01 1.41973066e-01 1.41901561e-01 1.41830164e-01 + 1.41758874e-01 1.41687692e-01 1.41616617e-01 1.41545648e-01 1.41474786e-01 + 1.41404031e-01 1.41333382e-01 1.41262838e-01 1.41192400e-01 1.41122067e-01 + 1.41051839e-01 1.40981716e-01 1.40911698e-01 1.40841783e-01 1.40771973e-01 + 1.40702266e-01 1.40632663e-01 1.40563163e-01 1.40493766e-01 1.40424471e-01 + 1.40355279e-01 1.40286189e-01 1.40217202e-01 1.40148315e-01 1.40079531e-01 + 1.40010847e-01 1.39942264e-01 1.39873782e-01 1.39805401e-01 1.39737119e-01 + 1.39668938e-01 1.39600856e-01 1.39532874e-01 1.39464991e-01 1.39397207e-01 + 1.39329522e-01 1.39261935e-01 1.39194446e-01 1.39127056e-01 1.39059763e-01 + 1.38992568e-01 1.38925470e-01 1.38858469e-01 1.38791565e-01 1.38724758e-01 + 1.38658047e-01 1.38591432e-01 1.38524913e-01 1.38458490e-01 1.38392162e-01 + 1.38325930e-01 1.38259792e-01 1.38193750e-01 1.38127801e-01 1.38061947e-01 + 1.37996188e-01 1.37930522e-01 1.37864950e-01 1.37799471e-01 1.37734085e-01 + 1.37668793e-01 1.37603593e-01 1.37538485e-01 1.37473471e-01 1.37408548e-01 + 1.37343717e-01 1.37278977e-01 1.37214330e-01 1.37149773e-01 1.37085308e-01 + 1.37020933e-01 1.36956649e-01 1.36892455e-01 1.36828351e-01 1.36764338e-01 + 1.36700414e-01 1.36636580e-01 1.36572835e-01 1.36509179e-01 1.36445612e-01 + 1.36382134e-01 1.36318745e-01 1.36255443e-01 1.36192230e-01 1.36129105e-01 + 1.36066067e-01 1.36003117e-01 1.35940254e-01 1.35877478e-01 1.35814789e-01 + 1.35752187e-01 1.35689672e-01 1.35627242e-01 1.35564899e-01 1.35502641e-01 + 1.35440470e-01 1.35378384e-01 1.35316383e-01 1.35254467e-01 1.35192636e-01 + 1.35130890e-01 1.35069228e-01 1.35007651e-01 1.34946158e-01 1.34884748e-01 + 1.34823423e-01 1.34762181e-01 1.34701022e-01 1.34639947e-01 1.34578955e-01 + 1.34518045e-01 1.34457218e-01 1.34396474e-01 1.34335812e-01 1.34275232e-01 + 1.34214733e-01 1.34154317e-01 1.34093982e-01 1.34033728e-01 1.33973556e-01 + 1.33913464e-01 1.33853453e-01 1.33793523e-01 1.33733673e-01 1.33673904e-01 + 1.33614214e-01 1.33554605e-01 1.33495075e-01 1.33435625e-01 1.33376254e-01 + 1.33316962e-01 1.33257749e-01 1.33198615e-01 1.33139560e-01 1.33080583e-01 + 1.33021685e-01 1.32962864e-01 1.32904122e-01 1.32845457e-01 1.32786870e-01 + 1.32728361e-01 1.32669928e-01 1.32611573e-01 1.32553295e-01 1.32495093e-01 + 1.32436968e-01 1.32378920e-01 1.32320948e-01 1.32263052e-01 1.32205232e-01 + 1.32147487e-01 1.32089818e-01 1.32032225e-01 1.31974707e-01 1.31917264e-01 + 1.31859896e-01 1.31802603e-01 1.31745384e-01 1.31688240e-01 1.31631170e-01 + 1.31574174e-01 1.31517252e-01 1.31460404e-01 1.31403630e-01 1.31346929e-01 + 1.31290301e-01 1.31233747e-01 1.31177266e-01 1.31120857e-01 1.31064522e-01 + 1.31008258e-01 1.30952068e-01 1.30895949e-01 1.30839903e-01 1.30783928e-01 + 1.30728025e-01 1.30672194e-01 1.30616435e-01 1.30560746e-01 1.30505129e-01 + 1.30449583e-01 1.30394108e-01 1.30338703e-01 1.30283369e-01 1.30228105e-01 + 1.30172912e-01 1.30117789e-01 1.30062736e-01 1.30007752e-01 1.29952839e-01 + 1.29897994e-01 1.29843219e-01 1.29788514e-01 1.29733877e-01 1.29679310e-01 + 1.29624811e-01 1.29570381e-01 1.29516019e-01 1.29461726e-01 1.29407501e-01 + 1.29353344e-01 1.29299255e-01 1.29245234e-01 1.29191280e-01 1.29137394e-01 + 1.29083575e-01 1.29029824e-01 1.28976140e-01 1.28922522e-01 1.28868972e-01 + 1.28815488e-01 1.28762070e-01 1.28708719e-01 1.28655435e-01 1.28602216e-01 + 1.28549063e-01 1.28495977e-01 1.28442955e-01 1.28390000e-01 1.28337110e-01 + 1.28284285e-01 1.28231526e-01 1.28178831e-01 1.28126202e-01 1.28073637e-01 + 1.28021137e-01 1.27968701e-01 1.27916330e-01 1.27864023e-01 1.27811780e-01 + 1.27759601e-01 1.27707486e-01 1.27655434e-01 1.27603447e-01 1.27551522e-01 + 1.27499661e-01 1.27447864e-01 1.27396129e-01 1.27344457e-01 1.27292848e-01 + 1.27241302e-01 1.27189818e-01 1.27138397e-01 1.27087038e-01 1.27035742e-01 + 1.26984507e-01 1.26933334e-01 1.26882223e-01 1.26831174e-01 1.26780187e-01 + 1.26729260e-01 1.26678396e-01 1.26627592e-01 1.26576849e-01 1.26526168e-01 + 1.26475547e-01 1.26424987e-01 1.26374487e-01 1.26324048e-01 1.26273670e-01 + 1.26223351e-01 1.26173093e-01 1.26122894e-01 1.26072756e-01 1.26022677e-01 + 1.25972658e-01 1.25922698e-01 1.25872798e-01 1.25822957e-01 1.25773176e-01 + 1.25723453e-01 1.25673789e-01 1.25624184e-01 1.25574638e-01 1.25525150e-01 + 1.25475721e-01 1.25426350e-01 1.25377037e-01 1.25327782e-01 1.25278586e-01 + 1.25229447e-01 1.25180366e-01 1.25131343e-01 1.25082377e-01 1.25033469e-01 + 1.24984618e-01 1.24935824e-01 1.24887088e-01 1.24838408e-01 1.24789785e-01 + 1.24741219e-01 1.24692710e-01 1.24644257e-01 1.24595861e-01 1.24547521e-01 + 1.24499237e-01 1.24451010e-01 1.24402838e-01 1.24354722e-01 1.24306662e-01 + 1.24258658e-01 1.24210709e-01 1.24162816e-01 1.24114978e-01 1.24067195e-01 + 1.24019468e-01 1.23971795e-01 1.23924178e-01 1.23876615e-01 1.23829107e-01 + 1.23781654e-01 1.23734255e-01 1.23686910e-01 1.23639620e-01 1.23592384e-01 + 1.23545202e-01 1.23498075e-01 1.23451001e-01 1.23403980e-01 1.23357014e-01 + 1.23310101e-01 1.23263242e-01 1.23216436e-01 1.23169683e-01 1.23122983e-01 + 1.23076337e-01 1.23029743e-01 1.22983202e-01 1.22936715e-01 1.22890279e-01 + 1.22843897e-01 1.22797567e-01 1.22751289e-01 1.22705063e-01 1.22658890e-01 + 1.22612769e-01 1.22566700e-01 1.22520682e-01 1.22474717e-01 1.22428803e-01 + 1.22382941e-01 1.22337130e-01 1.22291371e-01 1.22245663e-01 1.22200006e-01 + 1.22154400e-01 1.22108845e-01 1.22063342e-01 1.22017889e-01 1.21972487e-01 + 1.21927135e-01 1.21881834e-01 1.21836584e-01 1.21791383e-01 1.21746234e-01 + 1.21701134e-01 1.21656084e-01 1.21611085e-01 1.21566135e-01 1.21521235e-01 + 1.21476385e-01 1.21431584e-01 1.21386833e-01 1.21342131e-01 1.21297479e-01 + 1.21252876e-01 1.21208322e-01 1.21163817e-01 1.21119362e-01 1.21074955e-01 + 1.21030597e-01 1.20986287e-01 1.20942026e-01 1.20897814e-01 1.20853651e-01 + 1.20809535e-01 1.20765468e-01 1.20721449e-01 1.20677478e-01 1.20633555e-01 + 1.20589681e-01 1.20545854e-01 1.20502074e-01 1.20458343e-01 1.20414659e-01 + 1.20371022e-01 1.20327433e-01 1.20283891e-01 1.20240396e-01 1.20196949e-01 + 1.20153549e-01 1.20110195e-01 1.20066889e-01 1.20023629e-01 1.19980416e-01 + 1.19937250e-01 1.19894130e-01 1.19851056e-01 1.19808030e-01 1.19765049e-01 + 1.19722115e-01 1.19679226e-01 1.19636384e-01 1.19593588e-01 1.19550838e-01 + 1.19508133e-01 1.19465474e-01 1.19422861e-01 1.19380294e-01 1.19337772e-01 + 1.19295295e-01 1.19252863e-01 1.19210477e-01 1.19168136e-01 1.19125841e-01 + 1.19083590e-01 1.19041384e-01 1.18999223e-01 1.18957106e-01 1.18915035e-01 + 1.18873008e-01 1.18831025e-01 1.18789087e-01 1.18747194e-01 1.18705344e-01 + 1.18663539e-01 1.18621778e-01 1.18580061e-01 1.18538388e-01 1.18496759e-01 + 1.18455174e-01 1.18413632e-01 1.18372134e-01 1.18330680e-01 1.18289269e-01 + 1.18247902e-01 1.18206578e-01 1.18165298e-01 1.18124060e-01 1.18082866e-01 + 1.18041715e-01 1.18000607e-01 1.17959541e-01 1.17918519e-01 1.17877539e-01 + 1.17836602e-01 1.17795708e-01 1.17754856e-01 1.17714047e-01 1.17673280e-01 + 1.17632556e-01 1.17591873e-01 1.17551233e-01 1.17510635e-01 1.17470079e-01 + 1.17429565e-01 1.17389093e-01 1.17348662e-01 1.17308274e-01 1.17267927e-01 + 1.17227622e-01 1.17187358e-01 1.17147135e-01 1.17106955e-01 1.17066815e-01 + 1.17026717e-01 1.16986659e-01 1.16946643e-01 1.16906668e-01 1.16866734e-01 + 1.16826841e-01 1.16786988e-01 1.16747177e-01 1.16707406e-01 1.16667676e-01 + 1.16627986e-01 1.16588337e-01 1.16548728e-01 1.16509159e-01 1.16469631e-01 + 1.16430143e-01 1.16390695e-01 1.16351287e-01 1.16311919e-01 1.16272591e-01 + 1.16233303e-01 1.16194055e-01 1.16154846e-01 1.16115678e-01 1.16076548e-01 + 1.16037459e-01 1.15998408e-01 1.15959397e-01 1.15920426e-01 1.15881494e-01 + 1.15842601e-01 1.15803747e-01 1.15764932e-01 1.15726156e-01 1.15687419e-01 + 1.15648721e-01 1.15610062e-01 1.15571441e-01 1.15532859e-01 1.15494316e-01 + 1.15455812e-01 1.15417345e-01 1.15378918e-01 1.15340528e-01 1.15302177e-01 + 1.15263864e-01 1.15225590e-01 1.15187353e-01 1.15149155e-01 1.15110994e-01 + 1.15072871e-01 1.15034786e-01 1.14996739e-01 1.14958730e-01 1.14920759e-01 + 1.14882824e-01 1.14844928e-01 1.14807069e-01 1.14769247e-01 1.14731463e-01 + 1.14693716e-01 1.14656006e-01 1.14618334e-01 1.14580699e-01 1.14543100e-01 + 1.14505539e-01 1.14468014e-01 1.14430527e-01 1.14393076e-01 1.14355662e-01 + 1.14318284e-01 1.14280944e-01 1.14243640e-01 1.14206372e-01 1.14169141e-01 + 1.14131946e-01 1.14094787e-01 1.14057665e-01 1.14020579e-01 1.13983529e-01 + 1.13946515e-01 1.13909538e-01 1.13872596e-01 1.13835690e-01 1.13798820e-01 + 1.13761986e-01 1.13725188e-01 1.13688425e-01 1.13651698e-01 1.13615006e-01 + 1.13578350e-01 1.13541730e-01 1.13505144e-01 1.13468595e-01 1.13432080e-01 + 1.13395601e-01 1.13359156e-01 1.13322747e-01 1.13286373e-01 1.13250035e-01 + 1.13213730e-01 1.13177461e-01 1.13141227e-01 1.13105028e-01 1.13068863e-01 + 1.13032733e-01 1.12996637e-01 1.12960576e-01 1.12924550e-01 1.12888558e-01 + 1.12852600e-01 1.12816677e-01 1.12780788e-01 1.12744933e-01 1.12709112e-01 + 1.12673326e-01 1.12637574e-01 1.12601855e-01 1.12566171e-01 1.12530520e-01 + 1.12494904e-01 1.12459321e-01 1.12423772e-01 1.12388256e-01 1.12352774e-01 + 1.12317326e-01 1.12281911e-01 1.12246530e-01 1.12211182e-01 1.12175868e-01 + 1.12140587e-01 1.12105339e-01 1.12070125e-01 1.12034943e-01 1.11999795e-01 + 1.11964679e-01 1.11929597e-01 1.11894548e-01 1.11859532e-01 1.11824548e-01 + 1.11789597e-01 1.11754679e-01 1.11719794e-01 1.11684941e-01 1.11650121e-01 + 1.11615334e-01 1.11580579e-01 1.11545856e-01 1.11511166e-01 1.11476508e-01 + 1.11441883e-01 1.11407289e-01 1.11372728e-01 1.11338199e-01 1.11303703e-01 + 1.11269238e-01 1.11234805e-01 1.11200404e-01 1.11166035e-01 1.11131698e-01 + 1.11097393e-01 1.11063119e-01 1.11028877e-01 1.10994667e-01 1.10960489e-01 + 1.10926342e-01 1.10892226e-01 1.10858142e-01 1.10824089e-01 1.10790068e-01 + 1.10756078e-01 1.10722119e-01 1.10688192e-01 1.10654295e-01 1.10620430e-01 + 1.10586596e-01 1.10552793e-01 1.10519021e-01 1.10485279e-01 1.10451569e-01 + 1.10417890e-01 1.10384241e-01 1.10350623e-01 1.10317036e-01 1.10283479e-01 + 1.10249953e-01 1.10216458e-01 1.10182993e-01 1.10149558e-01 1.10116154e-01 + 1.10082780e-01 1.10049437e-01 1.10016124e-01 1.09982841e-01 1.09949588e-01 + 1.09916366e-01 1.09883174e-01 1.09850011e-01 1.09816879e-01 1.09783776e-01 + 1.09750704e-01 1.09717661e-01 1.09684648e-01 1.09651665e-01 1.09618712e-01 + 1.09585789e-01 1.09552895e-01 1.09520030e-01 1.09487196e-01 1.09454390e-01 + 1.09421615e-01 1.09388868e-01 1.09356151e-01 1.09323464e-01 1.09290805e-01 + 1.09258176e-01 1.09225576e-01 1.09193006e-01 1.09160464e-01 1.09127951e-01 + 1.09095468e-01 1.09063013e-01 1.09030588e-01 1.08998191e-01 1.08965824e-01 + 1.08933485e-01 1.08901174e-01 1.08868893e-01 1.08836640e-01 1.08804416e-01 + 1.08772220e-01 1.08740054e-01 1.08707915e-01 1.08675805e-01 1.08643724e-01 + 1.08611671e-01 1.08579646e-01 1.08547649e-01 1.08515681e-01 1.08483741e-01 + 1.08451829e-01 1.08419946e-01 1.08388090e-01 1.08356263e-01 1.08324463e-01 + 1.08292692e-01 1.08260948e-01 1.08229233e-01 1.08197545e-01 1.08165885e-01 + 1.08134253e-01 1.08102648e-01 1.08071072e-01 1.08039523e-01 1.08008001e-01 + 1.07976507e-01 1.07945041e-01 1.07913602e-01 1.07882191e-01 1.07850807e-01 + 1.07819450e-01 1.07788121e-01 1.07756819e-01 1.07725544e-01 1.07694296e-01 + 1.07663076e-01 1.07631883e-01 1.07600717e-01 1.07569578e-01 1.07538466e-01 + 1.07507381e-01 1.07476322e-01 1.07445291e-01 1.07414287e-01 1.07383309e-01 + 1.07352359e-01 1.07321435e-01 1.07290537e-01 1.07259667e-01 1.07228823e-01 + 1.07198005e-01 1.07167214e-01 1.07136450e-01 1.07105712e-01 1.07075001e-01 + 1.07044316e-01 1.07013657e-01 1.06983025e-01 1.06952419e-01 1.06921839e-01 + 1.06891286e-01 1.06860758e-01 1.06830257e-01 1.06799782e-01 1.06769333e-01 + 1.06738910e-01 1.06708513e-01 1.06678142e-01 1.06647796e-01 1.06617477e-01 + 1.06587184e-01 1.06556916e-01 1.06526674e-01 1.06496458e-01 1.06466268e-01 + 1.06436103e-01 1.06405964e-01 1.06375850e-01 1.06345762e-01 1.06315700e-01 + 1.06285663e-01 1.06255651e-01 1.06225665e-01 1.06195704e-01 1.06165769e-01 + 1.06135859e-01 1.06105974e-01 1.06076114e-01 1.06046280e-01 1.06016470e-01 + 1.05986686e-01 1.05956927e-01 1.05927193e-01 1.05897484e-01 1.05867800e-01 + 1.05838141e-01 1.05808507e-01 1.05778897e-01 1.05749313e-01 1.05719753e-01 + 1.05690218e-01 1.05660708e-01 1.05631223e-01 1.05601762e-01 1.05572326e-01 + 1.05542914e-01 1.05513528e-01 1.05484165e-01 1.05454827e-01 1.05425514e-01 + 1.05396225e-01 1.05366960e-01 1.05337720e-01 1.05308504e-01 1.05279312e-01 + 1.05250145e-01 1.05221002e-01 1.05191883e-01 1.05162788e-01 1.05133717e-01 + 1.05104671e-01 1.05075648e-01 1.05046650e-01 1.05017675e-01 1.04988725e-01 + 1.04959798e-01 1.04930896e-01 1.04902017e-01 1.04873162e-01 1.04844331e-01 + 1.04815523e-01 1.04786740e-01 1.04757980e-01 1.04729243e-01 1.04700531e-01 + 1.04671841e-01 1.04643176e-01 1.04614534e-01 1.04585916e-01 1.04557321e-01 + 1.04528749e-01 1.04500201e-01 1.04471676e-01 1.04443175e-01 1.04414697e-01 + 1.04386242e-01 1.04357810e-01 1.04329402e-01 1.04301017e-01 1.04272655e-01 + 1.04244316e-01 1.04216000e-01 1.04187707e-01 1.04159437e-01 1.04131191e-01 + 1.04102967e-01 1.04074766e-01 1.04046588e-01 1.04018433e-01 1.03990301e-01 + 1.03962192e-01 1.03934105e-01 1.03906041e-01 1.03878000e-01 1.03849982e-01 + 1.03821986e-01 1.03794013e-01 1.03766062e-01 1.03738134e-01 1.03710229e-01 + 1.03682346e-01 1.03654486e-01 1.03626648e-01 1.03598832e-01 1.03571039e-01 + 1.03543268e-01 1.03515520e-01 1.03487793e-01 1.03460089e-01 1.03432408e-01 + 1.03404748e-01 1.03377111e-01 1.03349496e-01 1.03321903e-01 1.03294332e-01 + 1.03266783e-01 1.03239256e-01 1.03211751e-01 1.03184268e-01 1.03156807e-01 + 1.03129368e-01 1.03101951e-01 1.03074556e-01 1.03047182e-01 1.03019831e-01 + 1.02992501e-01 1.02965192e-01 1.02937906e-01 1.02910641e-01 1.02883398e-01 + 1.02856177e-01 1.02828977e-01 1.02801798e-01 1.02774642e-01 1.02747506e-01 + 1.02720392e-01 1.02693300e-01 1.02666229e-01 1.02639180e-01 1.02612151e-01 + 1.02585145e-01 1.02558159e-01 1.02531195e-01 1.02504252e-01 1.02477330e-01 + 1.02450430e-01 1.02423550e-01 1.02396692e-01 1.02369855e-01 1.02343039e-01 + 1.02316244e-01 1.02289470e-01 1.02262717e-01 1.02235985e-01 1.02209274e-01 + 1.02182584e-01 1.02155915e-01 1.02129267e-01 1.02102639e-01 1.02076033e-01 + 1.02049447e-01 1.02022882e-01 1.01996338e-01 1.01969814e-01 1.01943311e-01 + 1.01916829e-01 1.01890367e-01 1.01863926e-01 1.01837505e-01 1.01811106e-01 + 1.01784726e-01 1.01758367e-01 1.01732029e-01 1.01705711e-01 1.01679413e-01 + 1.01653136e-01 1.01626879e-01 1.01600643e-01 1.01574426e-01 1.01548230e-01 + 1.01522055e-01 1.01495899e-01 1.01469764e-01 1.01443649e-01 1.01417554e-01 + 1.01391479e-01 1.01365425e-01 1.01339390e-01 1.01313376e-01 1.01287381e-01 + 1.01261406e-01 1.01235452e-01 1.01209517e-01 1.01183603e-01 1.01157708e-01 + 1.01131833e-01 1.01105978e-01 1.01080143e-01 1.01054327e-01 1.01028532e-01 + 1.01002756e-01 1.00976999e-01 1.00951263e-01 1.00925546e-01 1.00899849e-01 + 1.00874171e-01 1.00848513e-01 1.00822875e-01 1.00797256e-01 1.00771656e-01 + 1.00746077e-01 1.00720516e-01 1.00694975e-01 1.00669454e-01 1.00643952e-01 + 1.00618469e-01 1.00593005e-01 1.00567561e-01 1.00542136e-01 1.00516731e-01 + 1.00491345e-01 1.00465978e-01 1.00440630e-01 1.00415301e-01 1.00389992e-01 + 1.00364701e-01 1.00339430e-01 1.00314178e-01 1.00288944e-01 1.00263730e-01 + 1.00238535e-01 1.00213359e-01 1.00188202e-01 1.00163064e-01 1.00137944e-01 + 1.00112844e-01 1.00087762e-01 1.00062700e-01 1.00037656e-01 1.00012631e-01 + 9.99876242e-02 9.99626366e-02 9.99376677e-02 9.99127176e-02 9.98877861e-02 + 9.98628732e-02 9.98379790e-02 9.98131034e-02 9.97882464e-02 9.97634079e-02 + 9.97385880e-02 9.97137866e-02 9.96890037e-02 9.96642393e-02 9.96394933e-02 + 9.96147657e-02 9.95900565e-02 9.95653657e-02 9.95406933e-02 9.95160392e-02 + 9.94914034e-02 9.94667859e-02 9.94421867e-02 9.94176057e-02 9.93930429e-02 + 9.93684983e-02 9.93439719e-02 9.93194636e-02 9.92949735e-02 9.92705015e-02 + 9.92460476e-02 9.92216117e-02 9.91971939e-02 9.91727940e-02 9.91484122e-02 + 9.91240484e-02 9.90997025e-02 9.90753745e-02 9.90510645e-02 9.90267723e-02 + 9.90024980e-02 9.89782415e-02 9.89540029e-02 9.89297821e-02 9.89055790e-02 + 9.88813937e-02 9.88572261e-02 9.88330763e-02 9.88089441e-02 9.87848296e-02 + 9.87607327e-02 9.87366535e-02 9.87125919e-02 9.86885478e-02 9.86645213e-02 + 9.86405124e-02 9.86165209e-02 9.85925470e-02 9.85685906e-02 9.85446516e-02 + 9.85207300e-02 9.84968258e-02 9.84729391e-02 9.84490697e-02 9.84252176e-02 + 9.84013829e-02 9.83775655e-02 9.83537654e-02 9.83299825e-02 9.83062169e-02 + 9.82824685e-02 9.82587374e-02 9.82350233e-02 9.82113265e-02 9.81876468e-02 + 9.81639842e-02 9.81403387e-02 9.81167103e-02 9.80930990e-02 9.80695047e-02 + 9.80459274e-02 9.80223671e-02 9.79988238e-02 9.79752974e-02 9.79517880e-02 + 9.79282955e-02 9.79048199e-02 9.78813611e-02 9.78579192e-02 9.78344942e-02 + 9.78110859e-02 9.77876945e-02 9.77643198e-02 9.77409619e-02 9.77176207e-02 + 9.76942963e-02 9.76709885e-02 9.76476974e-02 9.76244230e-02 9.76011651e-02 + 9.75779239e-02 9.75546993e-02 9.75314913e-02 9.75082999e-02 9.74851249e-02 + 9.74619665e-02 9.74388246e-02 9.74156991e-02 9.73925901e-02 9.73694976e-02 + 9.73464215e-02 9.73233617e-02 9.73003184e-02 9.72772914e-02 9.72542807e-02 + 9.72312864e-02 9.72083084e-02 9.71853467e-02 9.71624012e-02 9.71394719e-02 + 9.71165589e-02 9.70936621e-02 9.70707815e-02 9.70479171e-02 9.70250688e-02 + 9.70022366e-02 9.69794205e-02 9.69566206e-02 9.69338367e-02 9.69110688e-02 + 9.68883170e-02 9.68655813e-02 9.68428615e-02 9.68201577e-02 9.67974698e-02 + 9.67747979e-02 9.67521419e-02 9.67295019e-02 9.67068777e-02 9.66842693e-02 + 9.66616769e-02 9.66391002e-02 9.66165394e-02 9.65939943e-02 9.65714651e-02 + 9.65489516e-02 9.65264538e-02 9.65039718e-02 9.64815054e-02 9.64590547e-02 + 9.64366197e-02 9.64142004e-02 9.63917967e-02 9.63694086e-02 9.63470360e-02 + 9.63246791e-02 9.63023377e-02 9.62800118e-02 9.62577015e-02 9.62354067e-02 + 9.62131273e-02 9.61908635e-02 9.61686150e-02 9.61463820e-02 9.61241644e-02 + 9.61019623e-02 9.60797754e-02 9.60576040e-02 9.60354479e-02 9.60133071e-02 + 9.59911816e-02 9.59690714e-02 9.59469765e-02 9.59248968e-02 9.59028324e-02 + 9.58807832e-02 9.58587492e-02 9.58367303e-02 9.58147267e-02 9.57927382e-02 + 9.57707648e-02 9.57488065e-02 9.57268633e-02 9.57049352e-02 9.56830222e-02 + 9.56611242e-02 9.56392413e-02 9.56173733e-02 9.55955204e-02 9.55736824e-02 + 9.55518594e-02 9.55300513e-02 9.55082582e-02 9.54864799e-02 9.54647166e-02 + 9.54429681e-02 9.54212345e-02 9.53995157e-02 9.53778117e-02 9.53561226e-02 + 9.53344482e-02 9.53127886e-02 9.52911438e-02 9.52695137e-02 9.52478984e-02 + 9.52262977e-02 9.52047117e-02 9.51831404e-02 9.51615838e-02 9.51400418e-02 + 9.51185144e-02 9.50970016e-02 9.50755034e-02 9.50540198e-02 9.50325508e-02 + 9.50110963e-02 9.49896563e-02 9.49682308e-02 9.49468198e-02 9.49254233e-02 + 9.49040412e-02 9.48826736e-02 9.48613204e-02 9.48399817e-02 9.48186573e-02 + 9.47973473e-02 9.47760516e-02 9.47547703e-02 9.47335034e-02 9.47122507e-02 + 9.46910123e-02 9.46697883e-02 9.46485784e-02 9.46273829e-02 9.46062015e-02 + 9.45850344e-02 9.45638815e-02 9.45427428e-02 9.45216182e-02 9.45005078e-02 + 9.44794116e-02 9.44583294e-02 9.44372614e-02 9.44162074e-02 9.43951676e-02 + 9.43741418e-02 9.43531300e-02 9.43321323e-02 9.43111485e-02 9.42901788e-02 + 9.42692231e-02 9.42482813e-02 9.42273534e-02 9.42064395e-02 9.41855396e-02 + 9.41646535e-02 9.41437813e-02 9.41229230e-02 9.41020785e-02 9.40812479e-02 + 9.40604311e-02 9.40396282e-02 9.40188390e-02 9.39980636e-02 9.39773020e-02 + 9.39565541e-02 9.39358200e-02 9.39150995e-02 9.38943928e-02 9.38736998e-02 + 9.38530204e-02 9.38323548e-02 9.38117027e-02 9.37910643e-02 9.37704395e-02 + 9.37498283e-02 9.37292307e-02 9.37086466e-02 9.36880762e-02 9.36675192e-02 + 9.36469758e-02 9.36264459e-02 9.36059295e-02 9.35854265e-02 9.35649371e-02 + 9.35444611e-02 9.35239985e-02 9.35035493e-02 9.34831136e-02 9.34626912e-02 + 9.34422823e-02 9.34218866e-02 9.34015044e-02 9.33811355e-02 9.33607798e-02 + 9.33404375e-02 9.33201085e-02 9.32997928e-02 9.32794903e-02 9.32592011e-02 + 9.32389251e-02 9.32186624e-02 9.31984128e-02 9.31781764e-02 9.31579532e-02 + 9.31377432e-02 9.31175463e-02 9.30973626e-02 9.30771919e-02 9.30570344e-02 + 9.30368899e-02 9.30167586e-02 9.29966403e-02 9.29765350e-02 9.29564428e-02 + 9.29363636e-02 9.29162974e-02 9.28962442e-02 9.28762040e-02 9.28561768e-02 + 9.28361624e-02 9.28161611e-02 9.27961726e-02 9.27761971e-02 9.27562344e-02 + 9.27362847e-02 9.27163478e-02 9.26964237e-02 9.26765125e-02 9.26566141e-02 + 9.26367286e-02 9.26168558e-02 9.25969958e-02 9.25771486e-02 9.25573141e-02 + 9.25374924e-02 9.25176834e-02 9.24978871e-02 9.24781036e-02 9.24583327e-02 + 9.24385745e-02 9.24188289e-02 9.23990960e-02 9.23793758e-02 9.23596681e-02 + 9.23399731e-02 9.23202907e-02 9.23006208e-02 9.22809635e-02 9.22613188e-02 + 9.22416866e-02 9.22220669e-02 9.22024597e-02 9.21828651e-02 9.21632829e-02 + 9.21437132e-02 9.21241560e-02 9.21046112e-02 9.20850788e-02 9.20655589e-02 + 9.20460514e-02 9.20265563e-02 9.20070735e-02 9.19876031e-02 9.19681451e-02 + 9.19486994e-02 9.19292661e-02 9.19098451e-02 9.18904363e-02 9.18710399e-02 + 9.18516557e-02 9.18322838e-02 9.18129242e-02 9.17935768e-02 9.17742416e-02 + 9.17549186e-02 9.17356079e-02 9.17163093e-02 9.16970229e-02 9.16777486e-02 + 9.16584865e-02 9.16392366e-02 9.16199987e-02 9.16007730e-02 9.15815594e-02 + 9.15623578e-02 9.15431684e-02 9.15239910e-02 9.15048256e-02 9.14856723e-02 + 9.14665310e-02 9.14474017e-02 9.14282844e-02 9.14091791e-02 9.13900857e-02 + 9.13710043e-02 9.13519349e-02 9.13328774e-02 9.13138318e-02 9.12947982e-02 + 9.12757764e-02 9.12567665e-02 9.12377685e-02 9.12187823e-02 9.11998080e-02 + 9.11808456e-02 9.11618949e-02 9.11429561e-02 9.11240290e-02 9.11051138e-02 + 9.10862103e-02 9.10673186e-02 9.10484386e-02 9.10295704e-02 9.10107139e-02 + 9.09918691e-02 9.09730360e-02 9.09542146e-02 9.09354049e-02 9.09166069e-02 + 9.08978205e-02 9.08790457e-02 9.08602826e-02 9.08415311e-02 9.08227911e-02 + 9.08040628e-02 9.07853461e-02 9.07666409e-02 9.07479473e-02 9.07292652e-02 + 9.07105947e-02 9.06919357e-02 9.06732882e-02 9.06546522e-02 9.06360277e-02 + 9.06174146e-02 9.05988131e-02 9.05802229e-02 9.05616442e-02 9.05430770e-02 + 9.05245211e-02 9.05059767e-02 9.04874436e-02 9.04689219e-02 9.04504116e-02 + 9.04319127e-02 9.04134251e-02 9.03949488e-02 9.03764839e-02 9.03580303e-02 + 9.03395879e-02 9.03211569e-02 9.03027371e-02 9.02843286e-02 9.02659313e-02 + 9.02475453e-02 9.02291706e-02 9.02108070e-02 9.01924546e-02 9.01741135e-02 + 9.01557835e-02 9.01374647e-02 9.01191571e-02 9.01008606e-02 9.00825752e-02 + 9.00643010e-02 9.00460379e-02 9.00277859e-02 9.00095450e-02 8.99913152e-02 + 8.99730965e-02 8.99548888e-02 8.99366921e-02 8.99185065e-02 8.99003320e-02 + 8.98821684e-02 8.98640159e-02 8.98458743e-02 8.98277437e-02 8.98096241e-02 + 8.97915155e-02 8.97734178e-02 8.97553311e-02 8.97372552e-02 8.97191903e-02 + 8.97011363e-02 8.96830932e-02 8.96650610e-02 8.96470396e-02 8.96290291e-02 + 8.96110295e-02 8.95930407e-02 8.95750627e-02 8.95570956e-02 8.95391392e-02 + 8.95211937e-02 8.95032589e-02 8.94853349e-02 8.94674217e-02 8.94495192e-02 + 8.94316275e-02 8.94137465e-02 8.93958762e-02 8.93780167e-02 8.93601678e-02 + 8.93423296e-02 8.93245021e-02 8.93066853e-02 8.92888791e-02 8.92710836e-02 + 8.92532987e-02 8.92355244e-02 8.92177608e-02 8.92000077e-02 8.91822653e-02 + 8.91645334e-02 8.91468121e-02 8.91291014e-02 8.91114012e-02 8.90937115e-02 + 8.90760324e-02 8.90583638e-02 8.90407057e-02 8.90230582e-02 8.90054211e-02 + 8.89877945e-02 8.89701783e-02 8.89525726e-02 8.89349774e-02 8.89173926e-02 + 8.88998182e-02 8.88822542e-02 8.88647007e-02 8.88471575e-02 8.88296247e-02 + 8.88121023e-02 8.87945903e-02 8.87770886e-02 8.87595973e-02 8.87421163e-02 + 8.87246456e-02 8.87071853e-02 8.86897352e-02 8.86722954e-02 8.86548660e-02 + 8.86374468e-02 8.86200378e-02 8.86026391e-02 8.85852507e-02 8.85678725e-02 + 8.85505045e-02 8.85331467e-02 8.85157991e-02 8.84984618e-02 8.84811346e-02 + 8.84638176e-02 8.84465107e-02 8.84292140e-02 8.84119274e-02 8.83946510e-02 + 8.83773847e-02 8.83601285e-02 8.83428825e-02 8.83256465e-02 8.83084206e-02 + 8.82912047e-02 8.82739990e-02 8.82568033e-02 8.82396176e-02 8.82224420e-02 + 8.82052764e-02 8.81881208e-02 8.81709752e-02 8.81538396e-02 8.81367140e-02 + 8.81195984e-02 8.81024927e-02 8.80853970e-02 8.80683113e-02 8.80512355e-02 + 8.80341696e-02 8.80171137e-02 8.80000676e-02 8.79830314e-02 8.79660052e-02 + 8.79489888e-02 8.79319823e-02 8.79149857e-02 8.78979989e-02 8.78810219e-02 + 8.78640548e-02 8.78470975e-02 8.78301500e-02 8.78132123e-02 8.77962845e-02 + 8.77793664e-02 8.77624580e-02 8.77455595e-02 8.77286707e-02 8.77117916e-02 + 8.76949223e-02 8.76780628e-02 8.76612129e-02 8.76443728e-02 8.76275423e-02 + 8.76107216e-02 8.75939105e-02 8.75771091e-02 8.75603174e-02 8.75435353e-02 + 8.75267629e-02 8.75100001e-02 8.74932469e-02 8.74765033e-02 8.74597694e-02 + 8.74430451e-02 8.74263303e-02 8.74096251e-02 8.73929296e-02 8.73762435e-02 + 8.73595670e-02 8.73429001e-02 8.73262427e-02 8.73095948e-02 8.72929565e-02 + 8.72763276e-02 8.72597083e-02 8.72430984e-02 8.72264981e-02 8.72099072e-02 + 8.71933257e-02 8.71767537e-02 8.71601912e-02 8.71436381e-02 8.71270944e-02 + 8.71105602e-02 8.70940353e-02 8.70775199e-02 8.70610138e-02 8.70445172e-02 + 8.70280299e-02 8.70115519e-02 8.69950834e-02 8.69786241e-02 8.69621742e-02 + 8.69457337e-02 8.69293024e-02 8.69128805e-02 8.68964679e-02 8.68800646e-02 + 8.68636705e-02 8.68472857e-02 8.68309103e-02 8.68145440e-02 8.67981870e-02 + 8.67818393e-02 8.67655008e-02 8.67491715e-02 8.67328514e-02 8.67165406e-02 + 8.67002389e-02 8.66839464e-02 8.66676631e-02 8.66513890e-02 8.66351240e-02 + 8.66188682e-02 8.66026216e-02 8.65863841e-02 8.65701557e-02 8.65539364e-02 + 8.65377263e-02 8.65215252e-02 8.65053333e-02 8.64891504e-02 8.64729766e-02 + 8.64568119e-02 8.64406563e-02 8.64245097e-02 8.64083721e-02 8.63922436e-02 + 8.63761241e-02 8.63600136e-02 8.63439122e-02 8.63278197e-02 8.63117363e-02 + 8.62956618e-02 8.62795963e-02 8.62635398e-02 8.62474922e-02 8.62314536e-02 + 8.62154239e-02 8.61994032e-02 8.61833914e-02 8.61673885e-02 8.61513945e-02 + 8.61354094e-02 8.61194332e-02 8.61034659e-02 8.60875075e-02 8.60715580e-02 + 8.60556173e-02 8.60396855e-02 8.60237625e-02 8.60078483e-02 8.59919430e-02 + 8.59760465e-02 8.59601588e-02 8.59442800e-02 8.59284099e-02 8.59125486e-02 + 8.58966961e-02 8.58808523e-02 8.58650173e-02 8.58491911e-02 8.58333736e-02 + 8.58175649e-02 8.58017649e-02 8.57859736e-02 8.57701911e-02 8.57544172e-02 + 8.57386520e-02 8.57228956e-02 8.57071478e-02 8.56914087e-02 8.56756782e-02 + 8.56599565e-02 8.56442433e-02 8.56285389e-02 8.56128430e-02 8.55971558e-02 + 8.55814772e-02 8.55658072e-02 8.55501458e-02 8.55344930e-02 8.55188488e-02 + 8.55032132e-02 8.54875862e-02 8.54719677e-02 8.54563578e-02 8.54407564e-02 + 8.54251636e-02 8.54095793e-02 8.53940035e-02 8.53784363e-02 8.53628775e-02 + 8.53473273e-02 8.53317855e-02 8.53162523e-02 8.53007275e-02 8.52852112e-02 + 8.52697034e-02 8.52542040e-02 8.52387130e-02 8.52232305e-02 8.52077565e-02 + 8.51922909e-02 8.51768336e-02 8.51613848e-02 8.51459444e-02 8.51305124e-02 + 8.51150888e-02 8.50996736e-02 8.50842667e-02 8.50688682e-02 8.50534780e-02 + 8.50380963e-02 8.50227228e-02 8.50073577e-02 8.49920009e-02 8.49766524e-02 + 8.49613123e-02 8.49459804e-02 8.49306569e-02 8.49153416e-02 8.49000346e-02 + 8.48847359e-02 8.48694455e-02 8.48541633e-02 8.48388893e-02 8.48236237e-02 + 8.48083662e-02 8.47931170e-02 8.47778760e-02 8.47626432e-02 8.47474187e-02 + 8.47322023e-02 8.47169941e-02 8.47017941e-02 8.46866023e-02 8.46714187e-02 + 8.46562432e-02 8.46410759e-02 8.46259167e-02 8.46107657e-02 8.45956228e-02 + 8.45804880e-02 8.45653614e-02 8.45502428e-02 8.45351324e-02 8.45200301e-02 + 8.45049358e-02 8.44898497e-02 8.44747716e-02 8.44597016e-02 8.44446397e-02 + 8.44295858e-02 8.44145399e-02 8.43995021e-02 8.43844724e-02 8.43694506e-02 + 8.43544369e-02 8.43394312e-02 8.43244335e-02 8.43094438e-02 8.42944621e-02 + 8.42794883e-02 8.42645226e-02 8.42495648e-02 8.42346150e-02 8.42196731e-02 + 8.42047392e-02 8.41898132e-02 8.41748952e-02 8.41599851e-02 8.41450829e-02 + 8.41301886e-02 8.41153022e-02 8.41004238e-02 8.40855532e-02 8.40706905e-02 + 8.40558357e-02 8.40409887e-02 8.40261496e-02 8.40113184e-02 8.39964950e-02 + 8.39816795e-02 8.39668718e-02 8.39520719e-02 8.39372799e-02 8.39224957e-02 + 8.39077193e-02 8.38929507e-02 8.38781898e-02 8.38634368e-02 8.38486916e-02 + 8.38339541e-02 8.38192244e-02 8.38045025e-02 8.37897883e-02 8.37750818e-02 + 8.37603831e-02 8.37456922e-02 8.37310089e-02 8.37163334e-02 8.37016656e-02 + 8.36870055e-02 8.36723531e-02 8.36577084e-02 8.36430714e-02 8.36284421e-02 + 8.36138204e-02 8.35992064e-02 8.35846001e-02 8.35700014e-02 8.35554104e-02 + 8.35408270e-02 8.35262512e-02 8.35116831e-02 8.34971226e-02 8.34825697e-02 + 8.34680244e-02 8.34534867e-02 8.34389566e-02 8.34244341e-02 8.34099191e-02 + 8.33954118e-02 8.33809120e-02 8.33664197e-02 8.33519351e-02 8.33374579e-02 + 8.33229883e-02 8.33085263e-02 8.32940718e-02 8.32796248e-02 8.32651853e-02 + 8.32507533e-02 8.32363288e-02 8.32219118e-02 8.32075023e-02 8.31931003e-02 + 8.31787058e-02 8.31643187e-02 8.31499391e-02 8.31355669e-02 8.31212022e-02 + 8.31068450e-02 8.30924951e-02 8.30781528e-02 8.30638178e-02 8.30494902e-02 + 8.30351701e-02 8.30208574e-02 8.30065520e-02 8.29922541e-02 8.29779635e-02 + 8.29636804e-02 8.29494046e-02 8.29351361e-02 8.29208751e-02 8.29066213e-02 + 8.28923750e-02 8.28781359e-02 8.28639042e-02 8.28496799e-02 8.28354628e-02 + 8.28212531e-02 8.28070507e-02 8.27928556e-02 8.27786678e-02 8.27644872e-02 + 8.27503140e-02 8.27361480e-02 8.27219893e-02 8.27078379e-02 8.26936938e-02 + 8.26795569e-02 8.26654272e-02 8.26513048e-02 8.26371896e-02 8.26230816e-02 + 8.26089809e-02 8.25948874e-02 8.25808011e-02 8.25667220e-02 8.25526501e-02 + 8.25385854e-02 8.25245279e-02 8.25104775e-02 8.24964344e-02 8.24823984e-02 + 8.24683695e-02 8.24543479e-02 8.24403333e-02 8.24263259e-02 8.24123257e-02 + 8.23983326e-02 8.23843466e-02 8.23703677e-02 8.23563960e-02 8.23424313e-02 + 8.23284737e-02 8.23145233e-02 8.23005799e-02 8.22866436e-02 8.22727144e-02 + 8.22587923e-02 8.22448772e-02 8.22309692e-02 8.22170683e-02 8.22031744e-02 + 8.21892875e-02 8.21754077e-02 8.21615349e-02 8.21476691e-02 8.21338103e-02 + 8.21199586e-02 8.21061138e-02 8.20922761e-02 8.20784453e-02 8.20646216e-02 + 8.20508048e-02 8.20369950e-02 8.20231922e-02 8.20093963e-02 8.19956074e-02 + 8.19818254e-02 8.19680504e-02 8.19542823e-02 8.19405212e-02 8.19267670e-02 + 8.19130197e-02 8.18992794e-02 8.18855459e-02 8.18718194e-02 8.18580997e-02 + 8.18443870e-02 8.18306811e-02 8.18169822e-02 8.18032901e-02 8.17896048e-02 + 8.17759265e-02 8.17622550e-02 8.17485903e-02 8.17349326e-02 8.17212816e-02 + 8.17076375e-02 8.16940002e-02 8.16803697e-02 8.16667461e-02 8.16531293e-02 + 8.16395193e-02 8.16259161e-02 8.16123197e-02 8.15987300e-02 8.15851472e-02 + 8.15715712e-02 8.15580019e-02 8.15444394e-02 8.15308836e-02 8.15173346e-02 + 8.15037924e-02 8.14902569e-02 8.14767282e-02 8.14632062e-02 8.14496909e-02 + 8.14361823e-02 8.14226805e-02 8.14091854e-02 8.13956970e-02 8.13822153e-02 + 8.13687402e-02 8.13552719e-02 8.13418103e-02 8.13283553e-02 8.13149070e-02 + 8.13014654e-02 8.12880305e-02 8.12746022e-02 8.12611805e-02 8.12477656e-02 + 8.12343572e-02 8.12209555e-02 8.12075604e-02 8.11941719e-02 8.11807901e-02 + 8.11674149e-02 8.11540463e-02 8.11406843e-02 8.11273288e-02 8.11139800e-02 + 8.11006378e-02 8.10873021e-02 8.10739731e-02 8.10606506e-02 8.10473346e-02 + 8.10340252e-02 8.10207224e-02 8.10074261e-02 8.09941364e-02 8.09808532e-02 + 8.09675765e-02 8.09543064e-02 8.09410428e-02 8.09277857e-02 8.09145351e-02 + 8.09012911e-02 8.08880535e-02 8.08748224e-02 8.08615978e-02 8.08483797e-02 + 8.08351681e-02 8.08219630e-02 8.08087643e-02 8.07955721e-02 8.07823863e-02 + 8.07692070e-02 8.07560342e-02 8.07428678e-02 8.07297078e-02 8.07165542e-02 + 8.07034071e-02 8.06902664e-02 8.06771322e-02 8.06640043e-02 8.06508829e-02 + 8.06377678e-02 8.06246592e-02 8.06115569e-02 8.05984610e-02 8.05853715e-02 + 8.05722884e-02 8.05592116e-02 8.05461412e-02 8.05330772e-02 8.05200195e-02 + 8.05069682e-02 8.04939232e-02 8.04808846e-02 8.04678523e-02 8.04548263e-02 + 8.04418066e-02 8.04287933e-02 8.04157863e-02 8.04027856e-02 8.03897912e-02 + 8.03768031e-02 8.03638212e-02 8.03508457e-02 8.03378765e-02 8.03249135e-02 + 8.03119568e-02 8.02990064e-02 8.02860622e-02 8.02731243e-02 8.02601926e-02 + 8.02472672e-02 8.02343481e-02 8.02214351e-02 8.02085284e-02 8.01956280e-02 + 8.01827337e-02 8.01698457e-02 8.01569639e-02 8.01440883e-02 8.01312189e-02 + 8.01183557e-02 8.01054986e-02 8.00926478e-02 8.00798032e-02 8.00669647e-02 + 8.00541324e-02 8.00413063e-02 8.00284863e-02 8.00156725e-02 8.00028649e-02 + 7.99900634e-02 7.99772680e-02 7.99644788e-02 7.99516957e-02 7.99389187e-02 + 7.99261479e-02 7.99133832e-02 7.99006246e-02 7.98878721e-02 7.98751257e-02 + 7.98623854e-02 7.98496512e-02 7.98369231e-02 7.98242011e-02 7.98114851e-02 + 7.97987753e-02 7.97860715e-02 7.97733737e-02 7.97606821e-02 7.97479965e-02 + 7.97353169e-02 7.97226434e-02 7.97099759e-02 7.96973145e-02 7.96846590e-02 + 7.96720097e-02 7.96593663e-02 7.96467290e-02 7.96340976e-02 7.96214723e-02 + 7.96088530e-02 7.95962397e-02 7.95836323e-02 7.95710310e-02 7.95584356e-02 + 7.95458463e-02 7.95332629e-02 7.95206854e-02 7.95081140e-02 7.94955485e-02 + 7.94829889e-02 7.94704353e-02 7.94578877e-02 7.94453459e-02 7.94328102e-02 + 7.94202803e-02 7.94077564e-02 7.93952384e-02 7.93827263e-02 7.93702202e-02 + 7.93577199e-02 7.93452256e-02 7.93327371e-02 7.93202546e-02 7.93077779e-02 + 7.92953071e-02 7.92828423e-02 7.92703832e-02 7.92579301e-02 7.92454828e-02 + 7.92330414e-02 7.92206058e-02 7.92081761e-02 7.91957523e-02 7.91833343e-02 + 7.91709221e-02 7.91585157e-02 7.91461152e-02 7.91337206e-02 7.91213317e-02 + 7.91089486e-02 7.90965714e-02 7.90842000e-02 7.90718344e-02 7.90594746e-02 + 7.90471205e-02 7.90347723e-02 7.90224298e-02 7.90100932e-02 7.89977623e-02 + 7.89854371e-02 7.89731178e-02 7.89608042e-02 7.89484964e-02 7.89361943e-02 + 7.89238979e-02 7.89116073e-02 7.88993225e-02 7.88870434e-02 7.88747700e-02 + 7.88625023e-02 7.88502404e-02 7.88379842e-02 7.88257337e-02 7.88134889e-02 + 7.88012498e-02 7.87890164e-02 7.87767887e-02 7.87645667e-02 7.87523504e-02 + 7.87401398e-02 7.87279348e-02 7.87157355e-02 7.87035419e-02 7.86913540e-02 + 7.86791717e-02 7.86669951e-02 7.86548241e-02 7.86426588e-02 7.86304991e-02 + 7.86183450e-02 7.86061966e-02 7.85940538e-02 7.85819167e-02 7.85697851e-02 + 7.85576592e-02 7.85455389e-02 7.85334242e-02 7.85213151e-02 7.85092116e-02 + 7.84971137e-02 7.84850214e-02 7.84729347e-02 7.84608535e-02 7.84487780e-02 + 7.84367080e-02 7.84246436e-02 7.84125847e-02 7.84005314e-02 7.83884837e-02 + 7.83764415e-02 7.83644048e-02 7.83523737e-02 7.83403482e-02 7.83283282e-02 + 7.83163137e-02 7.83043047e-02 7.82923013e-02 7.82803034e-02 7.82683110e-02 + 7.82563241e-02 7.82443427e-02 7.82323668e-02 7.82203964e-02 7.82084315e-02 + 7.81964721e-02 7.81845182e-02 7.81725697e-02 7.81606268e-02 7.81486893e-02 + 7.81367572e-02 7.81248307e-02 7.81129096e-02 7.81009939e-02 7.80890837e-02 + 7.80771790e-02 7.80652797e-02 7.80533858e-02 7.80414974e-02 7.80296144e-02 + 7.80177368e-02 7.80058646e-02 7.79939979e-02 7.79821366e-02 7.79702807e-02 + 7.79584302e-02 7.79465851e-02 7.79347454e-02 7.79229111e-02 7.79110821e-02 + 7.78992586e-02 7.78874404e-02 7.78756277e-02 7.78638202e-02 7.78520182e-02 + 7.78402215e-02 7.78284302e-02 7.78166443e-02 7.78048637e-02 7.77930884e-02 + 7.77813185e-02 7.77695539e-02 7.77577947e-02 7.77460408e-02 7.77342922e-02 + 7.77225490e-02 7.77108111e-02 7.76990785e-02 7.76873512e-02 7.76756292e-02 + 7.76639125e-02 7.76522011e-02 7.76404950e-02 7.76287942e-02 7.76170987e-02 + 7.76054085e-02 7.75937236e-02 7.75820439e-02 7.75703695e-02 7.75587004e-02 + 7.75470365e-02 7.75353780e-02 7.75237246e-02 7.75120765e-02 7.75004337e-02 + 7.74887961e-02 7.74771637e-02 7.74655366e-02 7.74539147e-02 7.74422981e-02 + 7.74306867e-02 7.74190805e-02 7.74074795e-02 7.73958837e-02 7.73842931e-02 + 7.73727078e-02 7.73611276e-02 7.73495527e-02 7.73379829e-02 7.73264183e-02 + 7.73148589e-02 7.73033047e-02 7.72917557e-02 7.72802118e-02 7.72686732e-02 + 7.72571396e-02 7.72456113e-02 7.72340881e-02 7.72225701e-02 7.72110572e-02 + 7.71995494e-02 7.71880468e-02 7.71765494e-02 7.71650571e-02 7.71535699e-02 + 7.71420878e-02 7.71306109e-02 7.71191391e-02 7.71076724e-02 7.70962108e-02 + 7.70847543e-02 7.70733030e-02 7.70618567e-02 7.70504155e-02 7.70389795e-02 + 7.70275485e-02 7.70161226e-02 7.70047018e-02 7.69932860e-02 7.69818754e-02 + 7.69704698e-02 7.69590693e-02 7.69476738e-02 7.69362834e-02 7.69248981e-02 + 7.69135178e-02 7.69021426e-02 7.68907724e-02 7.68794073e-02 7.68680472e-02 + 7.68566921e-02 7.68453420e-02 7.68339970e-02 7.68226570e-02 7.68113221e-02 + 7.67999921e-02 7.67886672e-02 7.67773472e-02 7.67660323e-02 7.67547224e-02 + 7.67434174e-02 7.67321175e-02 7.67208226e-02 7.67095326e-02 7.66982476e-02 + 7.66869676e-02 7.66756926e-02 7.66644225e-02 7.66531574e-02 7.66418973e-02 + 7.66306422e-02 7.66193920e-02 7.66081467e-02 7.65969064e-02 7.65856711e-02 + 7.65744407e-02 7.65632152e-02 7.65519946e-02 7.65407790e-02 7.65295684e-02 + 7.65183626e-02 7.65071618e-02 7.64959659e-02 7.64847749e-02 7.64735888e-02 + 7.64624076e-02 7.64512313e-02 7.64400599e-02 7.64288935e-02 7.64177319e-02 + 7.64065752e-02 7.63954233e-02 7.63842764e-02 7.63731343e-02 7.63619972e-02 + 7.63508648e-02 7.63397374e-02 7.63286148e-02 7.63174971e-02 7.63063842e-02 + 7.62952762e-02 7.62841730e-02 7.62730747e-02 7.62619813e-02 7.62508926e-02 + 7.62398088e-02 7.62287298e-02 7.62176557e-02 7.62065864e-02 7.61955219e-02 + 7.61844622e-02 7.61734074e-02 7.61623573e-02 7.61513121e-02 7.61402716e-02 + 7.61292360e-02 7.61182052e-02 7.61071791e-02 7.60961579e-02 7.60851414e-02 + 7.60741297e-02 7.60631228e-02 7.60521207e-02 7.60411233e-02 7.60301307e-02 + 7.60191429e-02 7.60081598e-02 7.59971815e-02 7.59862080e-02 7.59752392e-02 + 7.59642751e-02 7.59533158e-02 7.59423613e-02 7.59314115e-02 7.59204664e-02 + 7.59095260e-02 7.58985904e-02 7.58876595e-02 7.58767333e-02 7.58658119e-02 + 7.58548951e-02 7.58439831e-02 7.58330758e-02 7.58221731e-02 7.58112752e-02 + 7.58003820e-02 7.57894935e-02 7.57786096e-02 7.57677305e-02 7.57568560e-02 + 7.57459862e-02 7.57351211e-02 7.57242607e-02 7.57134049e-02 7.57025538e-02 + 7.56917074e-02 7.56808656e-02 7.56700285e-02 7.56591961e-02 7.56483683e-02 + 7.56375451e-02 7.56267266e-02 7.56159127e-02 7.56051035e-02 7.55942989e-02 + 7.55834989e-02 7.55727035e-02 7.55619128e-02 7.55511267e-02 7.55403452e-02 + 7.55295684e-02 7.55187961e-02 7.55080285e-02 7.54972654e-02 7.54865070e-02 + 7.54757531e-02 7.54650039e-02 7.54542592e-02 7.54435192e-02 7.54327837e-02 + 7.54220528e-02 7.54113264e-02 7.54006047e-02 7.53898875e-02 7.53791749e-02 + 7.53684669e-02 7.53577634e-02 7.53470644e-02 7.53363701e-02 7.53256803e-02 + 7.53149950e-02 7.53043143e-02 7.52936381e-02 7.52829665e-02 7.52722994e-02 + 7.52616368e-02 7.52509787e-02 7.52403252e-02 7.52296762e-02 7.52190318e-02 + 7.52083918e-02 7.51977564e-02 7.51871255e-02 7.51764990e-02 7.51658771e-02 + 7.51552597e-02 7.51446468e-02 7.51340384e-02 7.51234344e-02 7.51128350e-02 + 7.51022400e-02 7.50916496e-02 7.50810636e-02 7.50704821e-02 7.50599050e-02 + 7.50493324e-02 7.50387643e-02 7.50282007e-02 7.50176415e-02 7.50070868e-02 + 7.49965365e-02 7.49859907e-02 7.49754493e-02 7.49649123e-02 7.49543799e-02 + 7.49438518e-02 7.49333282e-02 7.49228090e-02 7.49122942e-02 7.49017839e-02 + 7.48912780e-02 7.48807765e-02 7.48702794e-02 7.48597868e-02 7.48492985e-02 + 7.48388147e-02 7.48283352e-02 7.48178602e-02 7.48073895e-02 7.47969233e-02 + 7.47864614e-02 7.47760040e-02 7.47655509e-02 7.47551022e-02 7.47446579e-02 + 7.47342179e-02 7.47237824e-02 7.47133512e-02 7.47029243e-02 7.46925019e-02 + 7.46820838e-02 7.46716700e-02 7.46612606e-02 7.46508556e-02 7.46404549e-02 + 7.46300586e-02 7.46196666e-02 7.46092789e-02 7.45988956e-02 7.45885166e-02 + 7.45781419e-02 7.45677716e-02 7.45574056e-02 7.45470439e-02 7.45366865e-02 + 7.45263335e-02 7.45159847e-02 7.45056403e-02 7.44953002e-02 7.44849644e-02 + 7.44746329e-02 7.44643056e-02 7.44539827e-02 7.44436641e-02 7.44333497e-02 + 7.44230397e-02 7.44127339e-02 7.44024324e-02 7.43921352e-02 7.43818423e-02 + 7.43715536e-02 7.43612692e-02 7.43509890e-02 7.43407132e-02 7.43304416e-02 + 7.43201742e-02 7.43099111e-02 7.42996522e-02 7.42893976e-02 7.42791473e-02 + 7.42689011e-02 7.42586593e-02 7.42484216e-02 7.42381882e-02 7.42279590e-02 + 7.42177341e-02 7.42075133e-02 7.41972968e-02 7.41870845e-02 7.41768765e-02 + 7.41666726e-02 7.41564729e-02 7.41462775e-02 7.41360863e-02 7.41258992e-02 + 7.41157164e-02 7.41055377e-02 7.40953633e-02 7.40851930e-02 7.40750269e-02 + 7.40648650e-02 7.40547073e-02 7.40445538e-02 7.40344044e-02 7.40242592e-02 + 7.40141182e-02 7.40039814e-02 7.39938487e-02 7.39837202e-02 7.39735958e-02 + 7.39634756e-02 7.39533595e-02 7.39432476e-02 7.39331398e-02 7.39230362e-02 + 7.39129367e-02 7.39028414e-02 7.38927502e-02 7.38826631e-02 7.38725802e-02 + 7.38625014e-02 7.38524267e-02 7.38423561e-02 7.38322896e-02 7.38222273e-02 + 7.38121691e-02 7.38021150e-02 7.37920650e-02 7.37820191e-02 7.37719773e-02 + 7.37619396e-02 7.37519060e-02 7.37418765e-02 7.37318510e-02 7.37218297e-02 + 7.37118125e-02 7.37017993e-02 7.36917902e-02 7.36817852e-02 7.36717843e-02 + 7.36617874e-02 7.36517946e-02 7.36418059e-02 7.36318212e-02 7.36218406e-02 + 7.36118641e-02 7.36018916e-02 7.35919231e-02 7.35819587e-02 7.35719984e-02 + 7.35620421e-02 7.35520898e-02 7.35421416e-02 7.35321974e-02 7.35222572e-02 + 7.35123211e-02 7.35023890e-02 7.34924610e-02 7.34825369e-02 7.34726169e-02 + 7.34627009e-02 7.34527889e-02 7.34428809e-02 7.34329769e-02 7.34230769e-02 + 7.34131809e-02 7.34032890e-02 7.33934010e-02 7.33835170e-02 7.33736370e-02 + 7.33637610e-02 7.33538890e-02 7.33440210e-02 7.33341569e-02 7.33242969e-02 + 7.33144408e-02 7.33045886e-02 7.32947405e-02 7.32848963e-02 7.32750561e-02 + 7.32652199e-02 7.32553876e-02 7.32455592e-02 7.32357348e-02 7.32259144e-02 + 7.32160979e-02 7.32062854e-02 7.31964768e-02 7.31866722e-02 7.31768715e-02 + 7.31670747e-02 7.31572819e-02 7.31474930e-02 7.31377080e-02 7.31279269e-02 + 7.31181498e-02 7.31083766e-02 7.30986073e-02 7.30888419e-02 7.30790805e-02 + 7.30693229e-02 7.30595693e-02 7.30498195e-02 7.30400737e-02 7.30303318e-02 + 7.30205937e-02 7.30108596e-02 7.30011293e-02 7.29914030e-02 7.29816805e-02 + 7.29719619e-02 7.29622472e-02 7.29525364e-02 7.29428294e-02 7.29331263e-02 + 7.29234271e-02 7.29137318e-02 7.29040403e-02 7.28943527e-02 7.28846689e-02 + 7.28749890e-02 7.28653130e-02 7.28556408e-02 7.28459725e-02 7.28363080e-02 + 7.28266473e-02 7.28169905e-02 7.28073376e-02 7.27976885e-02 7.27880432e-02 + 7.27784017e-02 7.27687641e-02 7.27591303e-02 7.27495003e-02 7.27398742e-02 + 7.27302519e-02 7.27206334e-02 7.27110187e-02 7.27014078e-02 7.26918007e-02 + 7.26821975e-02 7.26725980e-02 7.26630023e-02 7.26534105e-02 7.26438224e-02 + 7.26342382e-02 7.26246577e-02 7.26150810e-02 7.26055081e-02 7.25959390e-02 + 7.25863737e-02 7.25768121e-02 7.25672544e-02 7.25577004e-02 7.25481502e-02 + 7.25386037e-02 7.25290610e-02 7.25195221e-02 7.25099870e-02 7.25004556e-02 + 7.24909279e-02 7.24814040e-02 7.24718839e-02 7.24623675e-02 7.24528549e-02 + 7.24433460e-02 7.24338409e-02 7.24243395e-02 7.24148418e-02 7.24053479e-02 + 7.23958577e-02 7.23863712e-02 7.23768885e-02 7.23674095e-02 7.23579342e-02 + 7.23484626e-02 7.23389948e-02 7.23295307e-02 7.23200702e-02 7.23106135e-02 + 7.23011605e-02 7.22917112e-02 7.22822656e-02 7.22728238e-02 7.22633856e-02 + 7.22539511e-02 7.22445203e-02 7.22350932e-02 7.22256698e-02 7.22162500e-02 + 7.22068340e-02 7.21974216e-02 7.21880130e-02 7.21786080e-02 7.21692066e-02 + 7.21598090e-02 7.21504150e-02 7.21410247e-02 7.21316380e-02 7.21222550e-02 + 7.21128757e-02 7.21035000e-02 7.20941280e-02 7.20847596e-02 7.20753949e-02 + 7.20660339e-02 7.20566765e-02 7.20473227e-02 7.20379726e-02 7.20286261e-02 + 7.20192832e-02 7.20099440e-02 7.20006084e-02 7.19912765e-02 7.19819481e-02 + 7.19726234e-02 7.19633024e-02 7.19539849e-02 7.19446711e-02 7.19353608e-02 + 7.19260542e-02 7.19167512e-02 7.19074518e-02 7.18981560e-02 7.18888639e-02 + 7.18795753e-02 7.18702903e-02 7.18610089e-02 7.18517311e-02 7.18424569e-02 + 7.18331863e-02 7.18239193e-02 7.18146559e-02 7.18053960e-02 7.17961398e-02 + 7.17868871e-02 7.17776380e-02 7.17683924e-02 7.17591505e-02 7.17499121e-02 + 7.17406772e-02 7.17314460e-02 7.17222183e-02 7.17129941e-02 7.17037735e-02 + 7.16945565e-02 7.16853430e-02 7.16761331e-02 7.16669267e-02 7.16577239e-02 + 7.16485246e-02 7.16393289e-02 7.16301367e-02 7.16209480e-02 7.16117629e-02 + 7.16025813e-02 7.15934032e-02 7.15842287e-02 7.15750577e-02 7.15658902e-02 + 7.15567262e-02 7.15475658e-02 7.15384089e-02 7.15292555e-02 7.15201056e-02 + 7.15109592e-02 7.15018163e-02 7.14926769e-02 7.14835410e-02 7.14744087e-02 + 7.14652798e-02 7.14561544e-02 7.14470325e-02 7.14379142e-02 7.14287993e-02 + 7.14196878e-02 7.14105799e-02 7.14014755e-02 7.13923745e-02 7.13832770e-02 + 7.13741830e-02 7.13650925e-02 7.13560055e-02 7.13469219e-02 7.13378418e-02 + 7.13287651e-02 7.13196919e-02 7.13106222e-02 7.13015559e-02 7.12924931e-02 + 7.12834338e-02 7.12743779e-02 7.12653254e-02 7.12562764e-02 7.12472309e-02 + 7.12381888e-02 7.12291501e-02 7.12201149e-02 7.12110831e-02 7.12020547e-02 + 7.11930298e-02 7.11840083e-02 7.11749902e-02 7.11659756e-02 7.11569644e-02 + 7.11479566e-02 7.11389522e-02 7.11299512e-02 7.11209537e-02 7.11119596e-02 + 7.11029689e-02 7.10939816e-02 7.10849977e-02 7.10760172e-02 7.10670401e-02 + 7.10580664e-02 7.10490961e-02 7.10401292e-02 7.10311657e-02 7.10222056e-02 + 7.10132489e-02 7.10042956e-02 7.09953456e-02 7.09863990e-02 7.09774559e-02 + 7.09685161e-02 7.09595796e-02 7.09506466e-02 7.09417169e-02 7.09327906e-02 + 7.09238677e-02 7.09149481e-02 7.09060319e-02 7.08971191e-02 7.08882096e-02 + 7.08793035e-02 7.08704007e-02 7.08615013e-02 7.08526052e-02 7.08437125e-02 + 7.08348231e-02 7.08259371e-02 7.08170544e-02 7.08081751e-02 7.07992991e-02 + 7.07904264e-02 7.07815571e-02 7.07726911e-02 7.07638285e-02 7.07549691e-02 + 7.07461131e-02 7.07372604e-02 7.07284111e-02 7.07195650e-02 7.07107223e-02 + 7.07018829e-02 7.06930468e-02 7.06842141e-02 7.06753846e-02 7.06665584e-02 + 7.06577356e-02 7.06489160e-02 7.06400998e-02 7.06312868e-02 7.06224772e-02 + 7.06136708e-02 7.06048678e-02 7.05960680e-02 7.05872715e-02 7.05784783e-02 + 7.05696884e-02 7.05609018e-02 7.05521184e-02 7.05433384e-02 7.05345616e-02 diff --git a/potentials/TlBr_msw.poly b/potentials/TlBr_msw.poly new file mode 100644 index 0000000000..451d72ef3d --- /dev/null +++ b/potentials/TlBr_msw.poly @@ -0,0 +1,8014 @@ +### DATA: 2015-04-30 CONTRIBUTOR: X. W. Zhou, xzhou@sandia.gov, CITATION: Zhou, Foster, Jones, Yang, Fan, and Doty, J. Mater. Sci. Res., 4, 15 (2015) + 2 0 + 81 2.04380000e+02 Tl + 35 7.99000000e+01 Br + 2000 2000 10 1.00000000e+04 + 4.26900000e+00 0.00000000e+00 + 4.05800000e+00 0.00000000e+00 + 4.73600000e+00 0.00000000e+00 + 1.59066741e+02 1.59066741e+02 1.59066741e+02 1.59066741e+02 1.59066741e+02 + 1.59066741e+02 1.59066741e+02 1.59066741e+02 1.59066741e+02 1.59066741e+02 + 1.59066741e+02 1.59066741e+02 1.59066741e+02 1.59066741e+02 1.59066741e+02 + 1.59066741e+02 1.59066741e+02 1.59066741e+02 1.59066741e+02 1.59066741e+02 + 1.59066741e+02 1.59066741e+02 1.59066741e+02 1.59066741e+02 1.59066741e+02 + 1.59066741e+02 1.59066741e+02 1.59066741e+02 1.59066741e+02 1.59066741e+02 + 1.59066741e+02 1.59066741e+02 1.59066741e+02 1.59066741e+02 1.59066741e+02 + 1.59066741e+02 1.59066741e+02 1.59066741e+02 1.59066741e+02 1.59066741e+02 + 1.59066741e+02 1.59066741e+02 1.59066741e+02 1.59066741e+02 1.59066741e+02 + 1.59066741e+02 1.59066741e+02 1.58946820e+02 1.58259480e+02 1.57574997e+02 + 1.56893359e+02 1.56214555e+02 1.55538572e+02 1.54865399e+02 1.54195026e+02 + 1.53527439e+02 1.52862629e+02 1.52200584e+02 1.51541292e+02 1.50884743e+02 + 1.50230924e+02 1.49579826e+02 1.48931437e+02 1.48285746e+02 1.47642742e+02 + 1.47002414e+02 1.46364752e+02 1.45729743e+02 1.45097378e+02 1.44467646e+02 + 1.43840536e+02 1.43216038e+02 1.42594140e+02 1.41974832e+02 1.41358104e+02 + 1.40743945e+02 1.40132345e+02 1.39523293e+02 1.38916779e+02 1.38312792e+02 + 1.37711322e+02 1.37112360e+02 1.36515894e+02 1.35921914e+02 1.35330412e+02 + 1.34741375e+02 1.34154795e+02 1.33570661e+02 1.32988963e+02 1.32409692e+02 + 1.31832838e+02 1.31258390e+02 1.30686338e+02 1.30116674e+02 1.29549387e+02 + 1.28984468e+02 1.28421907e+02 1.27861694e+02 1.27303821e+02 1.26748276e+02 + 1.26195051e+02 1.25644136e+02 1.25095523e+02 1.24549201e+02 1.24005161e+02 + 1.23463393e+02 1.22923890e+02 1.22386641e+02 1.21851636e+02 1.21318868e+02 + 1.20788327e+02 1.20260004e+02 1.19733889e+02 1.19209974e+02 1.18688250e+02 + 1.18168707e+02 1.17651338e+02 1.17136132e+02 1.16623082e+02 1.16112178e+02 + 1.15603411e+02 1.15096774e+02 1.14592257e+02 1.14089851e+02 1.13589548e+02 + 1.13091340e+02 1.12595217e+02 1.12101172e+02 1.11609196e+02 1.11119280e+02 + 1.10631415e+02 1.10145595e+02 1.09661809e+02 1.09180050e+02 1.08700310e+02 + 1.08222581e+02 1.07746853e+02 1.07273120e+02 1.06801372e+02 1.06331602e+02 + 1.05863801e+02 1.05397962e+02 1.04934077e+02 1.04472137e+02 1.04012135e+02 + 1.03554063e+02 1.03097912e+02 1.02643675e+02 1.02191344e+02 1.01740912e+02 + 1.01292370e+02 1.00845711e+02 1.00400927e+02 9.99580109e+01 9.95169543e+01 + 9.90777499e+01 9.86403901e+01 9.82048674e+01 9.77711743e+01 9.73393032e+01 + 9.69092468e+01 9.64809975e+01 9.60545481e+01 9.56298911e+01 9.52070191e+01 + 9.47859250e+01 9.43666014e+01 9.39490411e+01 9.35332368e+01 9.31191813e+01 + 9.27068676e+01 9.22962884e+01 9.18874367e+01 9.14803054e+01 9.10748874e+01 + 9.06711758e+01 9.02691635e+01 8.98688436e+01 8.94702091e+01 8.90732531e+01 + 8.86779689e+01 8.82843494e+01 8.78923879e+01 8.75020776e+01 8.71134118e+01 + 8.67263836e+01 8.63409865e+01 8.59572136e+01 8.55750584e+01 8.51945141e+01 + 8.48155743e+01 8.44382323e+01 8.40624816e+01 8.36883156e+01 8.33157279e+01 + 8.29447120e+01 8.25752613e+01 8.22073696e+01 8.18410305e+01 8.14762374e+01 + 8.11129842e+01 8.07512645e+01 8.03910720e+01 8.00324004e+01 7.96752435e+01 + 7.93195951e+01 7.89654489e+01 7.86127989e+01 7.82616389e+01 7.79119627e+01 + 7.75637643e+01 7.72170377e+01 7.68717766e+01 7.65279753e+01 7.61856276e+01 + 7.58447276e+01 7.55052693e+01 7.51672468e+01 7.48306543e+01 7.44954858e+01 + 7.41617355e+01 7.38293977e+01 7.34984663e+01 7.31689358e+01 7.28408003e+01 + 7.25140541e+01 7.21886916e+01 7.18647069e+01 7.15420945e+01 7.12208487e+01 + 7.09009639e+01 7.05824344e+01 7.02652549e+01 6.99494196e+01 6.96349230e+01 + 6.93217597e+01 6.90099241e+01 6.86994109e+01 6.83902145e+01 6.80823296e+01 + 6.77757507e+01 6.74704725e+01 6.71664897e+01 6.68637968e+01 6.65623886e+01 + 6.62622599e+01 6.59634053e+01 6.56658196e+01 6.53694976e+01 6.50744340e+01 + 6.47806238e+01 6.44880616e+01 6.41967425e+01 6.39066613e+01 6.36178129e+01 + 6.33301922e+01 6.30437941e+01 6.27586136e+01 6.24746458e+01 6.21918856e+01 + 6.19103280e+01 6.16299681e+01 6.13508009e+01 6.10728216e+01 6.07960252e+01 + 6.05204069e+01 6.02459618e+01 5.99726850e+01 5.97005719e+01 5.94296175e+01 + 5.91598171e+01 5.88911659e+01 5.86236592e+01 5.83572923e+01 5.80920605e+01 + 5.78279590e+01 5.75649833e+01 5.73031287e+01 5.70423906e+01 5.67827643e+01 + 5.65242453e+01 5.62668290e+01 5.60105109e+01 5.57552864e+01 5.55011510e+01 + 5.52481002e+01 5.49961296e+01 5.47452346e+01 5.44954109e+01 5.42466541e+01 + 5.39989596e+01 5.37523232e+01 5.35067404e+01 5.32622070e+01 5.30187186e+01 + 5.27762708e+01 5.25348594e+01 5.22944800e+01 5.20551285e+01 5.18168006e+01 + 5.15794920e+01 5.13431986e+01 5.11079161e+01 5.08736403e+01 5.06403672e+01 + 5.04080925e+01 5.01768122e+01 4.99465221e+01 4.97172181e+01 4.94888962e+01 + 4.92615523e+01 4.90351823e+01 4.88097822e+01 4.85853481e+01 4.83618758e+01 + 4.81393615e+01 4.79178012e+01 4.76971909e+01 4.74775267e+01 4.72588047e+01 + 4.70410210e+01 4.68241716e+01 4.66082528e+01 4.63932607e+01 4.61791914e+01 + 4.59660412e+01 4.57538062e+01 4.55424826e+01 4.53320666e+01 4.51225546e+01 + 4.49139427e+01 4.47062273e+01 4.44994045e+01 4.42934708e+01 4.40884224e+01 + 4.38842557e+01 4.36809670e+01 4.34785527e+01 4.32770091e+01 4.30763326e+01 + 4.28765198e+01 4.26775668e+01 4.24794703e+01 4.22822267e+01 4.20858323e+01 + 4.18902838e+01 4.16955775e+01 4.15017100e+01 4.13086779e+01 4.11164776e+01 + 4.09251057e+01 4.07345588e+01 4.05448334e+01 4.03559261e+01 4.01678336e+01 + 3.99805524e+01 3.97940792e+01 3.96084107e+01 3.94235435e+01 3.92394742e+01 + 3.90561996e+01 3.88737163e+01 3.86920211e+01 3.85111107e+01 3.83309818e+01 + 3.81516312e+01 3.79730557e+01 3.77952520e+01 3.76182170e+01 3.74419474e+01 + 3.72664400e+01 3.70916918e+01 3.69176994e+01 3.67444599e+01 3.65719700e+01 + 3.64002267e+01 3.62292268e+01 3.60589673e+01 3.58894450e+01 3.57206569e+01 + 3.55526000e+01 3.53852712e+01 3.52186675e+01 3.50527858e+01 3.48876232e+01 + 3.47231767e+01 3.45594433e+01 3.43964200e+01 3.42341038e+01 3.40724919e+01 + 3.39115813e+01 3.37513690e+01 3.35918522e+01 3.34330279e+01 3.32748934e+01 + 3.31174456e+01 3.29606818e+01 3.28045991e+01 3.26491947e+01 3.24944657e+01 + 3.23404093e+01 3.21870227e+01 3.20343032e+01 3.18822479e+01 3.17308541e+01 + 3.15801190e+01 3.14300399e+01 3.12806140e+01 3.11318386e+01 3.09837111e+01 + 3.08362286e+01 3.06893886e+01 3.05431882e+01 3.03976250e+01 3.02526961e+01 + 3.01083990e+01 2.99647310e+01 2.98216895e+01 2.96792719e+01 2.95374755e+01 + 2.93962979e+01 2.92557363e+01 2.91157882e+01 2.89764511e+01 2.88377225e+01 + 2.86995996e+01 2.85620802e+01 2.84251615e+01 2.82888412e+01 2.81531166e+01 + 2.80179854e+01 2.78834450e+01 2.77494930e+01 2.76161269e+01 2.74833442e+01 + 2.73511426e+01 2.72195195e+01 2.70884726e+01 2.69579995e+01 2.68280978e+01 + 2.66987650e+01 2.65699988e+01 2.64417968e+01 2.63141567e+01 2.61870760e+01 + 2.60605526e+01 2.59345840e+01 2.58091679e+01 2.56843019e+01 2.55599839e+01 + 2.54362115e+01 2.53129824e+01 2.51902943e+01 2.50681450e+01 2.49465323e+01 + 2.48254537e+01 2.47049073e+01 2.45848906e+01 2.44654015e+01 2.43464377e+01 + 2.42279972e+01 2.41100775e+01 2.39926767e+01 2.38757925e+01 2.37594228e+01 + 2.36435653e+01 2.35282180e+01 2.34133786e+01 2.32990452e+01 2.31852155e+01 + 2.30718874e+01 2.29590588e+01 2.28467277e+01 2.27348919e+01 2.26235494e+01 + 2.25126981e+01 2.24023359e+01 2.22924607e+01 2.21830706e+01 2.20741635e+01 + 2.19657374e+01 2.18577902e+01 2.17503199e+01 2.16433245e+01 2.15368021e+01 + 2.14307507e+01 2.13251681e+01 2.12200526e+01 2.11154021e+01 2.10112147e+01 + 2.09074884e+01 2.08042213e+01 2.07014114e+01 2.05990569e+01 2.04971557e+01 + 2.03957061e+01 2.02947061e+01 2.01941538e+01 2.00940473e+01 1.99943848e+01 + 1.98951644e+01 1.97963842e+01 1.96980423e+01 1.96001370e+01 1.95026663e+01 + 1.94056286e+01 1.93090218e+01 1.92128442e+01 1.91170941e+01 1.90217695e+01 + 1.89268688e+01 1.88323901e+01 1.87383316e+01 1.86446916e+01 1.85514683e+01 + 1.84586599e+01 1.83662647e+01 1.82742810e+01 1.81827070e+01 1.80915410e+01 + 1.80007813e+01 1.79104261e+01 1.78204738e+01 1.77309226e+01 1.76417708e+01 + 1.75530168e+01 1.74646589e+01 1.73766954e+01 1.72891247e+01 1.72019450e+01 + 1.71151548e+01 1.70287524e+01 1.69427361e+01 1.68571043e+01 1.67718555e+01 + 1.66869879e+01 1.66024999e+01 1.65183900e+01 1.64346566e+01 1.63512980e+01 + 1.62683127e+01 1.61856991e+01 1.61034557e+01 1.60215808e+01 1.59400729e+01 + 1.58589304e+01 1.57781518e+01 1.56977356e+01 1.56176803e+01 1.55379842e+01 + 1.54586459e+01 1.53796638e+01 1.53010365e+01 1.52227625e+01 1.51448402e+01 + 1.50672681e+01 1.49900448e+01 1.49131689e+01 1.48366387e+01 1.47604529e+01 + 1.46846100e+01 1.46091085e+01 1.45339471e+01 1.44591241e+01 1.43846383e+01 + 1.43104882e+01 1.42366724e+01 1.41631893e+01 1.40900377e+01 1.40172162e+01 + 1.39447232e+01 1.38725575e+01 1.38007176e+01 1.37292021e+01 1.36580097e+01 + 1.35871390e+01 1.35165887e+01 1.34463573e+01 1.33764435e+01 1.33068460e+01 + 1.32375634e+01 1.31685944e+01 1.30999376e+01 1.30315918e+01 1.29635555e+01 + 1.28958275e+01 1.28284065e+01 1.27612911e+01 1.26944801e+01 1.26279721e+01 + 1.25617660e+01 1.24958603e+01 1.24302538e+01 1.23649452e+01 1.22999333e+01 + 1.22352168e+01 1.21707945e+01 1.21066650e+01 1.20428272e+01 1.19792797e+01 + 1.19160215e+01 1.18530511e+01 1.17903674e+01 1.17279692e+01 1.16658553e+01 + 1.16040244e+01 1.15424753e+01 1.14812069e+01 1.14202179e+01 1.13595071e+01 + 1.12990734e+01 1.12389156e+01 1.11790324e+01 1.11194228e+01 1.10600855e+01 + 1.10010194e+01 1.09422233e+01 1.08836961e+01 1.08254366e+01 1.07674437e+01 + 1.07097162e+01 1.06522531e+01 1.05950531e+01 1.05381151e+01 1.04814381e+01 + 1.04250209e+01 1.03688624e+01 1.03129614e+01 1.02573170e+01 1.02019279e+01 + 1.01467932e+01 1.00919116e+01 1.00372822e+01 9.98290383e+00 9.92877541e+00 + 9.87489588e+00 9.82126418e+00 9.76787925e+00 9.71474003e+00 9.66184546e+00 + 9.60919449e+00 9.55678608e+00 9.50461920e+00 9.45269279e+00 9.40100584e+00 + 9.34955731e+00 9.29834619e+00 9.24737144e+00 9.19663206e+00 9.14612703e+00 + 9.09585535e+00 9.04581602e+00 8.99600803e+00 8.94643040e+00 8.89708213e+00 + 8.84796224e+00 8.79906975e+00 8.75040368e+00 8.70196304e+00 8.65374689e+00 + 8.60575424e+00 8.55798414e+00 8.51043563e+00 8.46310776e+00 8.41599957e+00 + 8.36911012e+00 8.32243847e+00 8.27598368e+00 8.22974482e+00 8.18372096e+00 + 8.13791116e+00 8.09231451e+00 8.04693009e+00 8.00175699e+00 7.95679428e+00 + 7.91204108e+00 7.86749646e+00 7.82315954e+00 7.77902941e+00 7.73510518e+00 + 7.69138598e+00 7.64787090e+00 7.60455907e+00 7.56144961e+00 7.51854165e+00 + 7.47583431e+00 7.43332674e+00 7.39101806e+00 7.34890742e+00 7.30699397e+00 + 7.26527684e+00 7.22375519e+00 7.18242817e+00 7.14129495e+00 7.10035469e+00 + 7.05960654e+00 7.01904969e+00 6.97868329e+00 6.93850653e+00 6.89851859e+00 + 6.85871864e+00 6.81910588e+00 6.77967948e+00 6.74043866e+00 6.70138259e+00 + 6.66251049e+00 6.62382154e+00 6.58531497e+00 6.54698997e+00 6.50884577e+00 + 6.47088157e+00 6.43309659e+00 6.39549006e+00 6.35806121e+00 6.32080926e+00 + 6.28373344e+00 6.24683299e+00 6.21010714e+00 6.17355514e+00 6.13717624e+00 + 6.10096968e+00 6.06493471e+00 6.02907059e+00 5.99337657e+00 5.95785191e+00 + 5.92249588e+00 5.88730774e+00 5.85228676e+00 5.81743222e+00 5.78274340e+00 + 5.74821956e+00 5.71385999e+00 5.67966397e+00 5.64563080e+00 5.61175977e+00 + 5.57805016e+00 5.54450127e+00 5.51111241e+00 5.47788287e+00 5.44481196e+00 + 5.41189900e+00 5.37914328e+00 5.34654412e+00 5.31410085e+00 5.28181277e+00 + 5.24967922e+00 5.21769951e+00 5.18587298e+00 5.15419896e+00 5.12267678e+00 + 5.09130577e+00 5.06008528e+00 5.02901465e+00 4.99809322e+00 4.96732034e+00 + 4.93669537e+00 4.90621764e+00 4.87588653e+00 4.84570138e+00 4.81566156e+00 + 4.78576643e+00 4.75601536e+00 4.72640772e+00 4.69694288e+00 4.66762021e+00 + 4.63843909e+00 4.60939891e+00 4.58049903e+00 4.55173885e+00 4.52311776e+00 + 4.49463514e+00 4.46629038e+00 4.43808289e+00 4.41001205e+00 4.38207728e+00 + 4.35427796e+00 4.32661351e+00 4.29908334e+00 4.27168685e+00 4.24442345e+00 + 4.21729257e+00 4.19029361e+00 4.16342600e+00 4.13668917e+00 4.11008252e+00 + 4.08360550e+00 4.05725754e+00 4.03103805e+00 4.00494648e+00 3.97898227e+00 + 3.95314485e+00 3.92743367e+00 3.90184816e+00 3.87638778e+00 3.85105197e+00 + 3.82584019e+00 3.80075188e+00 3.77578651e+00 3.75094352e+00 3.72622238e+00 + 3.70162255e+00 3.67714350e+00 3.65278469e+00 3.62854560e+00 3.60442568e+00 + 3.58042442e+00 3.55654129e+00 3.53277577e+00 3.50912734e+00 3.48559548e+00 + 3.46217968e+00 3.43887941e+00 3.41569418e+00 3.39262347e+00 3.36966677e+00 + 3.34682358e+00 3.32409340e+00 3.30147572e+00 3.27897005e+00 3.25657589e+00 + 3.23429274e+00 3.21212012e+00 3.19005753e+00 3.16810449e+00 3.14626050e+00 + 3.12452509e+00 3.10289777e+00 3.08137807e+00 3.05996550e+00 3.03865959e+00 + 3.01745986e+00 2.99636585e+00 2.97537708e+00 2.95449308e+00 2.93371339e+00 + 2.91303755e+00 2.89246509e+00 2.87199555e+00 2.85162848e+00 2.83136341e+00 + 2.81119989e+00 2.79113748e+00 2.77117572e+00 2.75131416e+00 2.73155235e+00 + 2.71188986e+00 2.69232623e+00 2.67286103e+00 2.65349381e+00 2.63422415e+00 + 2.61505160e+00 2.59597572e+00 2.57699610e+00 2.55811229e+00 2.53932388e+00 + 2.52063043e+00 2.50203151e+00 2.48352671e+00 2.46511561e+00 2.44679779e+00 + 2.42857282e+00 2.41044029e+00 2.39239979e+00 2.37445091e+00 2.35659324e+00 + 2.33882636e+00 2.32114987e+00 2.30356337e+00 2.28606645e+00 2.26865871e+00 + 2.25133974e+00 2.23410916e+00 2.21696656e+00 2.19991156e+00 2.18294374e+00 + 2.16606273e+00 2.14926814e+00 2.13255957e+00 2.11593664e+00 2.09939896e+00 + 2.08294615e+00 2.06657783e+00 2.05029362e+00 2.03409313e+00 2.01797600e+00 + 2.00194185e+00 1.98599029e+00 1.97012097e+00 1.95433351e+00 1.93862754e+00 + 1.92300269e+00 1.90745860e+00 1.89199490e+00 1.87661123e+00 1.86130723e+00 + 1.84608254e+00 1.83093680e+00 1.81586965e+00 1.80088074e+00 1.78596972e+00 + 1.77113623e+00 1.75637992e+00 1.74170044e+00 1.72709745e+00 1.71257059e+00 + 1.69811953e+00 1.68374392e+00 1.66944342e+00 1.65521768e+00 1.64106637e+00 + 1.62698916e+00 1.61298570e+00 1.59905566e+00 1.58519871e+00 1.57141452e+00 + 1.55770275e+00 1.54406307e+00 1.53049517e+00 1.51699871e+00 1.50357336e+00 + 1.49021881e+00 1.47693473e+00 1.46372080e+00 1.45057671e+00 1.43750213e+00 + 1.42449675e+00 1.41156025e+00 1.39869231e+00 1.38589264e+00 1.37316091e+00 + 1.36049681e+00 1.34790004e+00 1.33537029e+00 1.32290725e+00 1.31051063e+00 + 1.29818010e+00 1.28591538e+00 1.27371616e+00 1.26158215e+00 1.24951304e+00 + 1.23750854e+00 1.22556835e+00 1.21369217e+00 1.20187973e+00 1.19013071e+00 + 1.17844484e+00 1.16682182e+00 1.15526137e+00 1.14376319e+00 1.13232701e+00 + 1.12095253e+00 1.10963948e+00 1.09838757e+00 1.08719652e+00 1.07606606e+00 + 1.06499590e+00 1.05398576e+00 1.04303538e+00 1.03214447e+00 1.02131277e+00 + 1.01053999e+00 9.99825872e-01 9.89170142e-01 9.78572531e-01 9.68032772e-01 + 9.57550597e-01 9.47125741e-01 9.36757940e-01 9.26446931e-01 9.16192450e-01 + 9.05994238e-01 8.95852034e-01 8.85765579e-01 8.75734617e-01 8.65758890e-01 + 8.55838142e-01 8.45972120e-01 8.36160571e-01 8.26403241e-01 8.16699880e-01 + 8.07050238e-01 7.97454067e-01 7.87911117e-01 7.78421143e-01 7.68983898e-01 + 7.59599138e-01 7.50266619e-01 7.40986099e-01 7.31757336e-01 7.22580090e-01 + 7.13454121e-01 7.04379191e-01 6.95355062e-01 6.86381499e-01 6.77458264e-01 + 6.68585126e-01 6.59761849e-01 6.50988201e-01 6.42263952e-01 6.33588871e-01 + 6.24962729e-01 6.16385297e-01 6.07856348e-01 5.99375655e-01 5.90942994e-01 + 5.82558139e-01 5.74220867e-01 5.65930957e-01 5.57688185e-01 5.49492333e-01 + 5.41343179e-01 5.33240506e-01 5.25184095e-01 5.17173731e-01 5.09209196e-01 + 5.01290276e-01 4.93416758e-01 4.85588427e-01 4.77805073e-01 4.70066483e-01 + 4.62372448e-01 4.54722758e-01 4.47117204e-01 4.39555579e-01 4.32037677e-01 + 4.24563291e-01 4.17132216e-01 4.09744249e-01 4.02399187e-01 3.95096827e-01 + 3.87836967e-01 3.80619408e-01 3.73443950e-01 3.66310393e-01 3.59218541e-01 + 3.52168196e-01 3.45159161e-01 3.38191243e-01 3.31264245e-01 3.24377974e-01 + 3.17532238e-01 3.10726845e-01 3.03961604e-01 2.97236323e-01 2.90550815e-01 + 2.83904889e-01 2.77298359e-01 2.70731037e-01 2.64202737e-01 2.57713274e-01 + 2.51262463e-01 2.44850121e-01 2.38476064e-01 2.32140110e-01 2.25842078e-01 + 2.19581787e-01 2.13359058e-01 2.07173711e-01 2.01025569e-01 1.94914453e-01 + 1.88840187e-01 1.82802595e-01 1.76801503e-01 1.70836735e-01 1.64908118e-01 + 1.59015479e-01 1.53158646e-01 1.47337448e-01 1.41551713e-01 1.35801273e-01 + 1.30085958e-01 1.24405600e-01 1.18760030e-01 1.13149083e-01 1.07572591e-01 + 1.02030390e-01 9.65223148e-02 9.10482010e-02 8.56078855e-02 8.02012058e-02 + 7.48280000e-02 6.94881069e-02 6.41813661e-02 5.89076178e-02 5.36667029e-02 + 4.84584631e-02 4.32827407e-02 3.81393787e-02 3.30282209e-02 2.79491117e-02 + 2.29018961e-02 1.78864198e-02 1.29025294e-02 7.95007189e-03 3.02889510e-03 + -1.86115254e-03 -6.72022191e-03 -1.15484632e-02 -1.63460261e-02 -2.11130593e-02 + -2.58497113e-02 -3.05561295e-02 -3.52324610e-02 -3.98788520e-02 -4.44954482e-02 + -4.90823946e-02 -5.36398356e-02 -5.81679150e-02 -6.26667758e-02 -6.71365606e-02 + -7.15774112e-02 -7.59894689e-02 -8.03728742e-02 -8.47277672e-02 -8.90542872e-02 + -9.33525729e-02 -9.76227626e-02 -1.01864994e-01 -1.06079403e-01 -1.10266128e-01 + -1.14425303e-01 -1.18557063e-01 -1.22661543e-01 -1.26738878e-01 -1.30789200e-01 + -1.34812642e-01 -1.38809337e-01 -1.42779415e-01 -1.46723008e-01 -1.50640247e-01 + -1.54531261e-01 -1.58396179e-01 -1.62235131e-01 -1.66048243e-01 -1.69835645e-01 + -1.73597463e-01 -1.77333822e-01 -1.81044851e-01 -1.84730672e-01 -1.88391412e-01 + -1.92027194e-01 -1.95638143e-01 -1.99224381e-01 -2.02786030e-01 -2.06323214e-01 + -2.09836053e-01 -2.13324668e-01 -2.16789180e-01 -2.20229708e-01 -2.23646372e-01 + -2.27039291e-01 -2.30408583e-01 -2.33754366e-01 -2.37076757e-01 -2.40375872e-01 + -2.43651829e-01 -2.46904742e-01 -2.50134726e-01 -2.53341897e-01 -2.56526369e-01 + -2.59688255e-01 -2.62827668e-01 -2.65944721e-01 -2.69039526e-01 -2.72112194e-01 + -2.75162837e-01 -2.78191566e-01 -2.81198490e-01 -2.84183720e-01 -2.87147363e-01 + -2.90089530e-01 -2.93010328e-01 -2.95909864e-01 -2.98788247e-01 -3.01645582e-01 + -3.04481977e-01 -3.07297536e-01 -3.10092366e-01 -3.12866570e-01 -3.15620254e-01 + -3.18353521e-01 -3.21066475e-01 -3.23759218e-01 -3.26431854e-01 -3.29084484e-01 + -3.31717210e-01 -3.34330133e-01 -3.36923354e-01 -3.39496972e-01 -3.42051089e-01 + -3.44585802e-01 -3.47101211e-01 -3.49597415e-01 -3.52074511e-01 -3.54532597e-01 + -3.56971771e-01 -3.59392128e-01 -3.61793765e-01 -3.64176779e-01 -3.66541263e-01 + -3.68887314e-01 -3.71215026e-01 -3.73524493e-01 -3.75815808e-01 -3.78089065e-01 + -3.80344357e-01 -3.82581777e-01 -3.84801415e-01 -3.87003365e-01 -3.89187716e-01 + -3.91354561e-01 -3.93503988e-01 -3.95636089e-01 -3.97750952e-01 -3.99848667e-01 + -4.01929323e-01 -4.03993008e-01 -4.06039810e-01 -4.08069816e-01 -4.10083114e-01 + -4.12079790e-01 -4.14059931e-01 -4.16023623e-01 -4.17970951e-01 -4.19902001e-01 + -4.21816857e-01 -4.23715604e-01 -4.25598325e-01 -4.27465106e-01 -4.29316028e-01 + -4.31151174e-01 -4.32970628e-01 -4.34774472e-01 -4.36562786e-01 -4.38335654e-01 + -4.40093155e-01 -4.41835370e-01 -4.43562380e-01 -4.45274265e-01 -4.46971104e-01 + -4.48652977e-01 -4.50319962e-01 -4.51972137e-01 -4.53609582e-01 -4.55232374e-01 + -4.56840589e-01 -4.58434307e-01 -4.60013602e-01 -4.61578551e-01 -4.63129231e-01 + -4.64665718e-01 -4.66188086e-01 -4.67696410e-01 -4.69190766e-01 -4.70671227e-01 + -4.72137867e-01 -4.73590761e-01 -4.75029981e-01 -4.76455601e-01 -4.77867693e-01 + -4.79266329e-01 -4.80651581e-01 -4.82023522e-01 -4.83382222e-01 -4.84727752e-01 + -4.86060183e-01 -4.87379586e-01 -4.88686030e-01 -4.89979585e-01 -4.91260320e-01 + -4.92528305e-01 -4.93783608e-01 -4.95026298e-01 -4.96256443e-01 -4.97474110e-01 + -4.98679367e-01 -4.99872282e-01 -5.01052921e-01 -5.02221351e-01 -5.03377637e-01 + -5.04521847e-01 -5.05654045e-01 -5.06774297e-01 -5.07882668e-01 -5.08979223e-01 + -5.10064026e-01 -5.11137142e-01 -5.12198633e-01 -5.13248565e-01 -5.14286999e-01 + -5.15314000e-01 -5.16329629e-01 -5.17333949e-01 -5.18327023e-01 -5.19308912e-01 + -5.20279677e-01 -5.21239380e-01 -5.22188082e-01 -5.23125844e-01 -5.24052725e-01 + -5.24968787e-01 -5.25874088e-01 -5.26768689e-01 -5.27652649e-01 -5.28526026e-01 + -5.29388880e-01 -5.30241269e-01 -5.31083251e-01 -5.31914885e-01 -5.32736227e-01 + -5.33547335e-01 -5.34348267e-01 -5.35139079e-01 -5.35919828e-01 -5.36690570e-01 + -5.37451361e-01 -5.38202257e-01 -5.38943313e-01 -5.39674586e-01 -5.40396130e-01 + -5.41107999e-01 -5.41810248e-01 -5.42502932e-01 -5.43186105e-01 -5.43859819e-01 + -5.44524130e-01 -5.45179090e-01 -5.45824751e-01 -5.46461168e-01 -5.47088392e-01 + -5.47706475e-01 -5.48315470e-01 -5.48915429e-01 -5.49506403e-01 -5.50088443e-01 + -5.50661600e-01 -5.51225926e-01 -5.51781470e-01 -5.52328283e-01 -5.52866416e-01 + -5.53395918e-01 -5.53916838e-01 -5.54429227e-01 -5.54933133e-01 -5.55428606e-01 + -5.55915693e-01 -5.56394444e-01 -5.56864906e-01 -5.57327129e-01 -5.57781159e-01 + -5.58227044e-01 -5.58664831e-01 -5.59094569e-01 -5.59516303e-01 -5.59930080e-01 + -5.60335947e-01 -5.60733949e-01 -5.61124134e-01 -5.61506547e-01 -5.61881233e-01 + -5.62248237e-01 -5.62607606e-01 -5.62959384e-01 -5.63303615e-01 -5.63640344e-01 + -5.63969616e-01 -5.64291475e-01 -5.64605964e-01 -5.64913127e-01 -5.65213008e-01 + -5.65505649e-01 -5.65791095e-01 -5.66069387e-01 -5.66340569e-01 -5.66604683e-01 + -5.66861772e-01 -5.67111876e-01 -5.67355039e-01 -5.67591301e-01 -5.67820705e-01 + -5.68043291e-01 -5.68259100e-01 -5.68468175e-01 -5.68670554e-01 -5.68866278e-01 + -5.69055389e-01 -5.69237926e-01 -5.69413928e-01 -5.69583436e-01 -5.69746489e-01 + -5.69903126e-01 -5.70053387e-01 -5.70197311e-01 -5.70334935e-01 -5.70466300e-01 + -5.70591443e-01 -5.70710402e-01 -5.70823215e-01 -5.70929921e-01 -5.71030557e-01 + -5.71125160e-01 -5.71213768e-01 -5.71296418e-01 -5.71373147e-01 -5.71443991e-01 + -5.71508988e-01 -5.71568173e-01 -5.71621583e-01 -5.71669253e-01 -5.71711221e-01 + -5.71747521e-01 -5.71778189e-01 -5.71803260e-01 -5.71822770e-01 -5.71836753e-01 + -5.71845245e-01 -5.71848280e-01 -5.71845893e-01 -5.71838118e-01 -5.71824988e-01 + -5.71806540e-01 -5.71782805e-01 -5.71753818e-01 -5.71719612e-01 -5.71680221e-01 + -5.71635678e-01 -5.71586016e-01 -5.71531267e-01 -5.71471465e-01 -5.71406642e-01 + -5.71336831e-01 -5.71262063e-01 -5.71182371e-01 -5.71097787e-01 -5.71008343e-01 + -5.70914069e-01 -5.70814998e-01 -5.70711161e-01 -5.70602589e-01 -5.70489313e-01 + -5.70371364e-01 -5.70248773e-01 -5.70121569e-01 -5.69989785e-01 -5.69853449e-01 + -5.69712592e-01 -5.69567244e-01 -5.69417434e-01 -5.69263193e-01 -5.69104550e-01 + -5.68941534e-01 -5.68774174e-01 -5.68602500e-01 -5.68426541e-01 -5.68246325e-01 + -5.68061880e-01 -5.67873236e-01 -5.67680421e-01 -5.67483463e-01 -5.67282390e-01 + -5.67077231e-01 -5.66868012e-01 -5.66654761e-01 -5.66437507e-01 -5.66216276e-01 + -5.65991097e-01 -5.65761995e-01 -5.65528997e-01 -5.65292132e-01 -5.65051425e-01 + -5.64806903e-01 -5.64558593e-01 -5.64306521e-01 -5.64050713e-01 -5.63791195e-01 + -5.63527993e-01 -5.63261133e-01 -5.62990640e-01 -5.62716541e-01 -5.62438860e-01 + -5.62157624e-01 -5.61872856e-01 -5.61584582e-01 -5.61292827e-01 -5.60997617e-01 + -5.60698974e-01 -5.60396925e-01 -5.60091493e-01 -5.59782703e-01 -5.59470579e-01 + -5.59155144e-01 -5.58836424e-01 -5.58514441e-01 -5.58189220e-01 -5.57860784e-01 + -5.57529156e-01 -5.57194360e-01 -5.56856420e-01 -5.56515357e-01 -5.56171195e-01 + -5.55823958e-01 -5.55473667e-01 -5.55120345e-01 -5.54764016e-01 -5.54404701e-01 + -5.54042422e-01 -5.53677202e-01 -5.53309063e-01 -5.52938027e-01 -5.52564116e-01 + -5.52187351e-01 -5.51807754e-01 -5.51425346e-01 -5.51040150e-01 -5.50652186e-01 + -5.50261475e-01 -5.49868039e-01 -5.49471898e-01 -5.49073073e-01 -5.48671586e-01 + -5.48267456e-01 -5.47860705e-01 -5.47451353e-01 -5.47039419e-01 -5.46624925e-01 + -5.46207890e-01 -5.45788335e-01 -5.45366279e-01 -5.44941743e-01 -5.44514745e-01 + -5.44085306e-01 -5.43653444e-01 -5.43219181e-01 -5.42782534e-01 -5.42343522e-01 + -5.41902166e-01 -5.41458484e-01 -5.41012495e-01 -5.40564218e-01 -5.40113671e-01 + -5.39660874e-01 -5.39205844e-01 -5.38748600e-01 -5.38289161e-01 -5.37827544e-01 + -5.37363768e-01 -5.36897851e-01 -5.36429810e-01 -5.35959665e-01 -5.35487431e-01 + -5.35013128e-01 -5.34536772e-01 -5.34058382e-01 -5.33577974e-01 -5.33095565e-01 + -5.32611174e-01 -5.32124817e-01 -5.31636511e-01 -5.31146273e-01 -5.30654120e-01 + -5.30160069e-01 -5.29664136e-01 -5.29166338e-01 -5.28666691e-01 -5.28165213e-01 + -5.27661918e-01 -5.27156824e-01 -5.26649946e-01 -5.26141301e-01 -5.25630905e-01 + -5.25118773e-01 -5.24604921e-01 -5.24089365e-01 -5.23572121e-01 -5.23053204e-01 + -5.22532629e-01 -5.22010413e-01 -5.21486570e-01 -5.20961115e-01 -5.20434064e-01 + -5.19905431e-01 -5.19375232e-01 -5.18843482e-01 -5.18310194e-01 -5.17775385e-01 + -5.17239069e-01 -5.16701260e-01 -5.16161972e-01 -5.15621221e-01 -5.15079020e-01 + -5.14535383e-01 -5.13990325e-01 -5.13443861e-01 -5.12896003e-01 -5.12346766e-01 + -5.11796163e-01 -5.11244210e-01 -5.10690918e-01 -5.10136302e-01 -5.09580375e-01 + -5.09023150e-01 -5.08464642e-01 -5.07904864e-01 -5.07343828e-01 -5.06781547e-01 + -5.06218036e-01 -5.05653306e-01 -5.05087372e-01 -5.04520244e-01 -5.03951937e-01 + -5.03382464e-01 -5.02811836e-01 -5.02240066e-01 -5.01667167e-01 -5.01093151e-01 + -5.00518030e-01 -4.99941817e-01 -4.99364524e-01 -4.98786163e-01 -4.98206745e-01 + -4.97626284e-01 -4.97044791e-01 -4.96462276e-01 -4.95878754e-01 -4.95294234e-01 + -4.94708728e-01 -4.94122249e-01 -4.93534807e-01 -4.92946414e-01 -4.92357080e-01 + -4.91766818e-01 -4.91175639e-01 -4.90583552e-01 -4.89990570e-01 -4.89396703e-01 + -4.88801963e-01 -4.88206359e-01 -4.87609902e-01 -4.87012603e-01 -4.86414473e-01 + -4.85815522e-01 -4.85215760e-01 -4.84615198e-01 -4.84013846e-01 -4.83411713e-01 + -4.82808810e-01 -4.82205147e-01 -4.81600734e-01 -4.80995580e-01 -4.80389695e-01 + -4.79783089e-01 -4.79175772e-01 -4.78567752e-01 -4.77959039e-01 -4.77349643e-01 + -4.76739573e-01 -4.76128837e-01 -4.75517444e-01 -4.74905405e-01 -4.74292727e-01 + -4.73679419e-01 -4.73065490e-01 -4.72450948e-01 -4.71835802e-01 -4.71220061e-01 + -4.70603732e-01 -4.69986823e-01 -4.69369343e-01 -4.68751300e-01 -4.68132701e-01 + -4.67513554e-01 -4.66893867e-01 -4.66273647e-01 -4.65652902e-01 -4.65031639e-01 + -4.64409865e-01 -4.63787588e-01 -4.63164813e-01 -4.62541548e-01 -4.61917800e-01 + -4.61293575e-01 -4.60668879e-01 -4.60043719e-01 -4.59418101e-01 -4.58792030e-01 + -4.58165514e-01 -4.57538556e-01 -4.56911164e-01 -4.56283341e-01 -4.55655094e-01 + -4.55026428e-01 -4.54397347e-01 -4.53767856e-01 -4.53137959e-01 -4.52507661e-01 + -4.51876967e-01 -4.51245879e-01 -4.50614402e-01 -4.49982539e-01 -4.49350293e-01 + -4.48717668e-01 -4.48084667e-01 -4.47451292e-01 -4.46817545e-01 -4.46183429e-01 + -4.45548945e-01 -4.44914096e-01 -4.44278882e-01 -4.43643305e-01 -4.43007366e-01 + -4.42371064e-01 -4.41734400e-01 -4.41097375e-01 -4.40459987e-01 -4.39822236e-01 + -4.39184120e-01 -4.38545639e-01 -4.37906790e-01 -4.37267571e-01 -4.36627979e-01 + -4.35988012e-01 -4.35347666e-01 -4.34706936e-01 -4.34065819e-01 -4.33424310e-01 + -4.32782403e-01 -4.32140093e-01 -4.31497373e-01 -4.30854237e-01 -4.30210676e-01 + -4.29566683e-01 -4.28922249e-01 -4.28277366e-01 -4.27632022e-01 -4.26986208e-01 + -4.26339913e-01 -4.25693124e-01 -4.25045828e-01 -4.24398014e-01 -4.23749665e-01 + -4.23100768e-01 -4.22451306e-01 -4.21801263e-01 -4.21150620e-01 -4.20499361e-01 + -4.19847464e-01 -4.19194909e-01 -4.18541676e-01 -4.17887740e-01 -4.17233079e-01 + -4.16577668e-01 -4.15921480e-01 -4.15264487e-01 -4.14606663e-01 -4.13947976e-01 + -4.13288394e-01 -4.12627887e-01 -4.11966418e-01 -4.11303953e-01 -4.10640454e-01 + -4.09975882e-01 -4.09310196e-01 -4.08643354e-01 -4.07975312e-01 -4.07306023e-01 + -4.06635440e-01 -4.05963512e-01 -4.05290187e-01 -4.04615410e-01 -4.03939126e-01 + -4.03261274e-01 -4.02581795e-01 -4.01900623e-01 -4.01217692e-01 -4.00532934e-01 + -3.99846276e-01 -3.99157643e-01 -3.98466959e-01 -3.97774141e-01 -3.97079107e-01 + -3.96381768e-01 -3.95682035e-01 -3.94979813e-01 -3.94275004e-01 -3.93567506e-01 + -3.92857215e-01 -3.92144021e-01 -3.91427810e-01 -3.90708464e-01 -3.89985860e-01 + -3.89259873e-01 -3.88530369e-01 -3.87797212e-01 -3.87060261e-01 -3.86319368e-01 + -3.85574381e-01 -3.84825141e-01 -3.84071485e-01 -3.83313243e-01 -3.82550239e-01 + -3.81782290e-01 -3.81009207e-01 -3.80230795e-01 -3.79446850e-01 -3.78657162e-01 + -3.77861514e-01 -3.77059680e-01 -3.76251427e-01 -3.75436513e-01 -3.74614689e-01 + -3.73785696e-01 -3.72949266e-01 -3.72105122e-01 -3.71252978e-01 -3.70392537e-01 + -3.69523494e-01 -3.68645532e-01 -3.67758323e-01 -3.66861529e-01 -3.65954801e-01 + -3.65037777e-01 -3.64110084e-01 -3.63171337e-01 -3.62221139e-01 -3.61259079e-01 + -3.60284733e-01 -3.59297664e-01 -3.58297420e-01 -3.57283538e-01 -3.56255536e-01 + -3.55212921e-01 -3.54155184e-01 -3.53081799e-01 -3.51992226e-01 -3.50885908e-01 + -3.49762272e-01 -3.48620730e-01 -3.47460674e-01 -3.46281482e-01 -3.45082512e-01 + -3.43863106e-01 -3.42622589e-01 -3.41360265e-01 -3.40075422e-01 -3.38767331e-01 + -3.37435241e-01 -3.36078386e-01 -3.34695979e-01 -3.33287216e-01 -3.31851274e-01 + -3.30387312e-01 -3.28894470e-01 -3.27371871e-01 -3.25818619e-01 -3.24233802e-01 + -3.22616489e-01 -3.20965736e-01 -3.19280578e-01 -3.17560039e-01 -3.15803127e-01 + -3.14008835e-01 -3.12176145e-01 -3.10304027e-01 -3.08391440e-01 -3.06437334e-01 + -3.04440652e-01 -3.02400330e-01 -3.00315300e-01 -2.98184493e-01 -2.96006839e-01 + -2.93781270e-01 -2.91506723e-01 -2.89182144e-01 -2.86806488e-01 -2.84378723e-01 + -2.81897836e-01 -2.79362834e-01 -2.76772748e-01 -2.74126639e-01 -2.71423602e-01 + -2.68662768e-01 -2.65843311e-01 -2.62964456e-01 -2.60025480e-01 -2.57025720e-01 + -2.53964578e-01 -2.50841531e-01 -2.47656133e-01 -2.44408025e-01 -2.41096940e-01 + -2.37722713e-01 -2.34285290e-01 -2.30784728e-01 -2.27221216e-01 -2.23595069e-01 + -2.19906751e-01 -2.16156870e-01 -2.12346197e-01 -2.08475670e-01 -2.04546403e-01 + -2.00559695e-01 -1.96517039e-01 -1.92420129e-01 -1.88270867e-01 -1.84071375e-01 + -1.79823996e-01 -1.75531303e-01 -1.71196106e-01 -1.66821454e-01 -1.62410640e-01 + -1.57967206e-01 -1.53494938e-01 -1.48997875e-01 -1.44480302e-01 -1.39946746e-01 + -1.35401977e-01 -1.30850997e-01 -1.26299032e-01 -1.21751524e-01 -1.17214115e-01 + -1.12692635e-01 -1.08193080e-01 -1.03721599e-01 -9.92844631e-02 -9.48880474e-02 + -9.05387997e-02 -8.62432123e-02 -8.20077888e-02 -7.78390103e-02 -7.37432981e-02 + -6.97269763e-02 -6.57962311e-02 -6.19570698e-02 -5.82152789e-02 -5.45763816e-02 + -5.10455950e-02 -4.76277880e-02 -4.43274408e-02 -4.11486044e-02 -3.80948645e-02 + -3.51693060e-02 -3.23744824e-02 -2.97123890e-02 -2.71844398e-02 -2.47914507e-02 + -2.25336279e-02 -2.04105624e-02 -1.84212308e-02 -1.65640035e-02 -1.48366591e-02 + -1.32364061e-02 -1.17599112e-02 -1.04033349e-02 -9.16237201e-03 -8.03229914e-03 + -7.00802647e-03 -6.08415391e-03 -5.25503063e-03 -4.51481676e-03 -3.85754635e-03 + -3.27719036e-03 -2.76771858e-03 -2.32315928e-03 -1.93765556e-03 -1.60551741e-03 + -1.32126846e-03 -1.07968684e-03 -8.75839483e-04 -7.05109467e-04 -5.63216214e-04 + -4.46228565e-04 -3.50570902e-04 -2.73022712e-04 -2.10712128e-04 -1.61104137e-04 + -1.21984250e-04 -9.14384753e-05 -6.78305122e-05 -4.97770498e-05 -3.61220304e-05 + -2.59106753e-05 -1.83639752e-05 -1.28542408e-05 -8.88218889e-06 -6.05591675e-06 + -4.07199229e-06 -2.69877730e-06 -1.76199872e-06 -1.13249903e-06 -7.16031265e-07 + -4.44916328e-07 -2.71351442e-07 -1.62145156e-07 -9.46547803e-08 -5.37131977e-08 + -2.93506097e-08 -1.51400925e-08 -7.02125004e-09 -2.48169531e-09 0.00000000e+00 + 4.65278880e+02 4.65278880e+02 4.65278880e+02 4.65278880e+02 4.65278880e+02 + 4.65278880e+02 4.65278880e+02 4.65278880e+02 4.65278880e+02 4.65278880e+02 + 4.65278880e+02 4.65278880e+02 4.65278880e+02 4.65278880e+02 4.65278880e+02 + 4.65278880e+02 4.65278880e+02 4.65278880e+02 4.65278880e+02 4.65278880e+02 + 4.65278880e+02 4.65278880e+02 4.65278880e+02 4.65278880e+02 4.65278880e+02 + 4.65278880e+02 4.65278880e+02 4.65278880e+02 4.65278880e+02 4.65278880e+02 + 4.65278880e+02 4.65278880e+02 4.65278880e+02 4.65278880e+02 4.65278880e+02 + 4.65278880e+02 4.65278880e+02 4.65278880e+02 4.65278880e+02 4.65278880e+02 + 4.65278880e+02 4.65278880e+02 4.65278880e+02 4.65278880e+02 4.65278880e+02 + 4.65278880e+02 4.65278880e+02 4.65278880e+02 4.65278880e+02 4.65278880e+02 + 4.63463739e+02 4.61019483e+02 4.58587846e+02 4.56168764e+02 4.53762172e+02 + 4.51368008e+02 4.48986207e+02 4.46616707e+02 4.44259445e+02 4.41914358e+02 + 4.39581384e+02 4.37260463e+02 4.34951531e+02 4.32654528e+02 4.30369393e+02 + 4.28096066e+02 4.25834486e+02 4.23584594e+02 4.21346329e+02 4.19119633e+02 + 4.16904447e+02 4.14700710e+02 4.12508367e+02 4.10327357e+02 4.08157624e+02 + 4.05999109e+02 4.03851756e+02 4.01715507e+02 3.99590306e+02 3.97476097e+02 + 3.95372823e+02 3.93280429e+02 3.91198858e+02 3.89128057e+02 3.87067969e+02 + 3.85018540e+02 3.82979716e+02 3.80951442e+02 3.78933665e+02 3.76926331e+02 + 3.74929387e+02 3.72942779e+02 3.70966455e+02 3.69000363e+02 3.67044450e+02 + 3.65098663e+02 3.63162953e+02 3.61237266e+02 3.59321552e+02 3.57415759e+02 + 3.55519838e+02 3.53633737e+02 3.51757407e+02 3.49890797e+02 3.48033859e+02 + 3.46186541e+02 3.44348796e+02 3.42520575e+02 3.40701828e+02 3.38892508e+02 + 3.37092565e+02 3.35301953e+02 3.33520624e+02 3.31748529e+02 3.29985623e+02 + 3.28231857e+02 3.26487185e+02 3.24751562e+02 3.23024939e+02 3.21307272e+02 + 3.19598515e+02 3.17898622e+02 3.16207547e+02 3.14525246e+02 3.12851674e+02 + 3.11186786e+02 3.09530538e+02 3.07882885e+02 3.06243784e+02 3.04613191e+02 + 3.02991062e+02 3.01377354e+02 2.99772024e+02 2.98175029e+02 2.96586327e+02 + 2.95005875e+02 2.93433630e+02 2.91869551e+02 2.90313596e+02 2.88765724e+02 + 2.87225893e+02 2.85694062e+02 2.84170189e+02 2.82654235e+02 2.81146159e+02 + 2.79645920e+02 2.78153479e+02 2.76668794e+02 2.75191828e+02 2.73722539e+02 + 2.72260890e+02 2.70806840e+02 2.69360351e+02 2.67921384e+02 2.66489901e+02 + 2.65065863e+02 2.63649232e+02 2.62239970e+02 2.60838040e+02 2.59443403e+02 + 2.58056023e+02 2.56675863e+02 2.55302885e+02 2.53937052e+02 2.52578329e+02 + 2.51226678e+02 2.49882063e+02 2.48544449e+02 2.47213799e+02 2.45890078e+02 + 2.44573250e+02 2.43263280e+02 2.41960132e+02 2.40663773e+02 2.39374166e+02 + 2.38091278e+02 2.36815073e+02 2.35545518e+02 2.34282579e+02 2.33026222e+02 + 2.31776412e+02 2.30533117e+02 2.29296302e+02 2.28065935e+02 2.26841983e+02 + 2.25624413e+02 2.24413191e+02 2.23208287e+02 2.22009666e+02 2.20817296e+02 + 2.19631147e+02 2.18451185e+02 2.17277380e+02 2.16109699e+02 2.14948111e+02 + 2.13792585e+02 2.12643089e+02 2.11499594e+02 2.10362067e+02 2.09230479e+02 + 2.08104798e+02 2.06984995e+02 2.05871039e+02 2.04762901e+02 2.03660550e+02 + 2.02563957e+02 2.01473092e+02 2.00387926e+02 1.99308430e+02 1.98234574e+02 + 1.97166329e+02 1.96103667e+02 1.95046559e+02 1.93994977e+02 1.92948891e+02 + 1.91908275e+02 1.90873099e+02 1.89843336e+02 1.88818958e+02 1.87799937e+02 + 1.86786246e+02 1.85777858e+02 1.84774744e+02 1.83776879e+02 1.82784235e+02 + 1.81796785e+02 1.80814503e+02 1.79837361e+02 1.78865335e+02 1.77898396e+02 + 1.76936520e+02 1.75979680e+02 1.75027850e+02 1.74081004e+02 1.73139117e+02 + 1.72202164e+02 1.71270119e+02 1.70342956e+02 1.69420651e+02 1.68503179e+02 + 1.67590514e+02 1.66682633e+02 1.65779509e+02 1.64881120e+02 1.63987441e+02 + 1.63098447e+02 1.62214114e+02 1.61334418e+02 1.60459336e+02 1.59588843e+02 + 1.58722917e+02 1.57861533e+02 1.57004668e+02 1.56152300e+02 1.55304404e+02 + 1.54460957e+02 1.53621938e+02 1.52787323e+02 1.51957089e+02 1.51131214e+02 + 1.50309675e+02 1.49492450e+02 1.48679518e+02 1.47870854e+02 1.47066439e+02 + 1.46266249e+02 1.45470264e+02 1.44678461e+02 1.43890819e+02 1.43107316e+02 + 1.42327932e+02 1.41552644e+02 1.40781432e+02 1.40014275e+02 1.39251152e+02 + 1.38492042e+02 1.37736924e+02 1.36985778e+02 1.36238583e+02 1.35495320e+02 + 1.34755967e+02 1.34020505e+02 1.33288913e+02 1.32561172e+02 1.31837261e+02 + 1.31117162e+02 1.30400853e+02 1.29688317e+02 1.28979533e+02 1.28274481e+02 + 1.27573143e+02 1.26875500e+02 1.26181532e+02 1.25491221e+02 1.24804547e+02 + 1.24121492e+02 1.23442037e+02 1.22766164e+02 1.22093854e+02 1.21425089e+02 + 1.20759850e+02 1.20098119e+02 1.19439878e+02 1.18785110e+02 1.18133795e+02 + 1.17485917e+02 1.16841457e+02 1.16200398e+02 1.15562723e+02 1.14928414e+02 + 1.14297452e+02 1.13669823e+02 1.13045507e+02 1.12424488e+02 1.11806748e+02 + 1.11192272e+02 1.10581042e+02 1.09973041e+02 1.09368252e+02 1.08766660e+02 + 1.08168246e+02 1.07572996e+02 1.06980893e+02 1.06391920e+02 1.05806061e+02 + 1.05223300e+02 1.04643621e+02 1.04067008e+02 1.03493446e+02 1.02922918e+02 + 1.02355409e+02 1.01790903e+02 1.01229385e+02 1.00670839e+02 1.00115250e+02 + 9.95626022e+01 9.90128809e+01 9.84660707e+01 9.79221566e+01 9.73811236e+01 + 9.68429569e+01 9.63076415e+01 9.57751627e+01 9.52455058e+01 9.47186562e+01 + 9.41945994e+01 9.36733209e+01 9.31548063e+01 9.26390414e+01 9.21260118e+01 + 9.16157035e+01 9.11081022e+01 9.06031940e+01 9.01009650e+01 8.96014012e+01 + 8.91044889e+01 8.86102143e+01 8.81185637e+01 8.76295236e+01 8.71430804e+01 + 8.66592206e+01 8.61779309e+01 8.56991979e+01 8.52230085e+01 8.47493493e+01 + 8.42782073e+01 8.38095694e+01 8.33434227e+01 8.28797542e+01 8.24185510e+01 + 8.19598004e+01 8.15034897e+01 8.10496062e+01 8.05981373e+01 8.01490705e+01 + 7.97023933e+01 7.92580933e+01 7.88161582e+01 7.83765757e+01 7.79393336e+01 + 7.75044198e+01 7.70718221e+01 7.66415285e+01 7.62135271e+01 7.57878060e+01 + 7.53643534e+01 7.49431573e+01 7.45242062e+01 7.41074884e+01 7.36929922e+01 + 7.32807062e+01 7.28706188e+01 7.24627187e+01 7.20569944e+01 7.16534347e+01 + 7.12520282e+01 7.08527639e+01 7.04556305e+01 7.00606171e+01 6.96677126e+01 + 6.92769059e+01 6.88881863e+01 6.85015428e+01 6.81169647e+01 6.77344412e+01 + 6.73539617e+01 6.69755155e+01 6.65990920e+01 6.62246807e+01 6.58522711e+01 + 6.54818529e+01 6.51134156e+01 6.47469490e+01 6.43824427e+01 6.40198867e+01 + 6.36592707e+01 6.33005847e+01 6.29438185e+01 6.25889623e+01 6.22360060e+01 + 6.18849398e+01 6.15357538e+01 6.11884382e+01 6.08429833e+01 6.04993794e+01 + 6.01576169e+01 5.98176861e+01 5.94795775e+01 5.91432817e+01 5.88087891e+01 + 5.84760904e+01 5.81451762e+01 5.78160373e+01 5.74886643e+01 5.71630481e+01 + 5.68391795e+01 5.65170493e+01 5.61966487e+01 5.58779684e+01 5.55609995e+01 + 5.52457331e+01 5.49321604e+01 5.46202725e+01 5.43100605e+01 5.40015159e+01 + 5.36946297e+01 5.33893935e+01 5.30857986e+01 5.27838363e+01 5.24834983e+01 + 5.21847760e+01 5.18876610e+01 5.15921448e+01 5.12982192e+01 5.10058759e+01 + 5.07151065e+01 5.04259028e+01 5.01382567e+01 4.98521601e+01 4.95676048e+01 + 4.92845828e+01 4.90030860e+01 4.87231065e+01 4.84446364e+01 4.81676678e+01 + 4.78921928e+01 4.76182037e+01 4.73456926e+01 4.70746518e+01 4.68050736e+01 + 4.65369504e+01 4.62702746e+01 4.60050386e+01 4.57412349e+01 4.54788559e+01 + 4.52178943e+01 4.49583426e+01 4.47001933e+01 4.44434393e+01 4.41880732e+01 + 4.39340877e+01 4.36814755e+01 4.34302296e+01 4.31803427e+01 4.29318077e+01 + 4.26846176e+01 4.24387652e+01 4.21942437e+01 4.19510460e+01 4.17091651e+01 + 4.14685943e+01 4.12293265e+01 4.09913551e+01 4.07546731e+01 4.05192739e+01 + 4.02851507e+01 4.00522968e+01 3.98207056e+01 3.95903704e+01 3.93612847e+01 + 3.91334419e+01 3.89068354e+01 3.86814589e+01 3.84573058e+01 3.82343697e+01 + 3.80126443e+01 3.77921231e+01 3.75727999e+01 3.73546684e+01 3.71377223e+01 + 3.69219554e+01 3.67073615e+01 3.64939344e+01 3.62816680e+01 3.60705563e+01 + 3.58605931e+01 3.56517724e+01 3.54440883e+01 3.52375346e+01 3.50321056e+01 + 3.48277953e+01 3.46245978e+01 3.44225072e+01 3.42215178e+01 3.40216237e+01 + 3.38228193e+01 3.36250987e+01 3.34284562e+01 3.32328862e+01 3.30383831e+01 + 3.28449412e+01 3.26525550e+01 3.24612189e+01 3.22709273e+01 3.20816748e+01 + 3.18934559e+01 3.17062652e+01 3.15200972e+01 3.13349465e+01 3.11508079e+01 + 3.09676759e+01 3.07855453e+01 3.06044108e+01 3.04242672e+01 3.02451092e+01 + 3.00669316e+01 2.98897292e+01 2.97134970e+01 2.95382298e+01 2.93639225e+01 + 2.91905701e+01 2.90181675e+01 2.88467097e+01 2.86761917e+01 2.85066087e+01 + 2.83379555e+01 2.81702274e+01 2.80034195e+01 2.78375268e+01 2.76725447e+01 + 2.75084681e+01 2.73452925e+01 2.71830130e+01 2.70216249e+01 2.68611234e+01 + 2.67015040e+01 2.65427619e+01 2.63848925e+01 2.62278912e+01 2.60717534e+01 + 2.59164746e+01 2.57620501e+01 2.56084756e+01 2.54557464e+01 2.53038582e+01 + 2.51528065e+01 2.50025868e+01 2.48531947e+01 2.47046260e+01 2.45568762e+01 + 2.44099409e+01 2.42638160e+01 2.41184970e+01 2.39739797e+01 2.38302600e+01 + 2.36873335e+01 2.35451960e+01 2.34038435e+01 2.32632716e+01 2.31234764e+01 + 2.29844536e+01 2.28461992e+01 2.27087091e+01 2.25719793e+01 2.24360057e+01 + 2.23007843e+01 2.21663111e+01 2.20325823e+01 2.18995937e+01 2.17673416e+01 + 2.16358219e+01 2.15050308e+01 2.13749645e+01 2.12456191e+01 2.11169907e+01 + 2.09890756e+01 2.08618700e+01 2.07353701e+01 2.06095721e+01 2.04844724e+01 + 2.03600673e+01 2.02363529e+01 2.01133257e+01 1.99909821e+01 1.98693183e+01 + 1.97483308e+01 1.96280160e+01 1.95083703e+01 1.93893901e+01 1.92710720e+01 + 1.91534123e+01 1.90364076e+01 1.89200544e+01 1.88043493e+01 1.86892888e+01 + 1.85748694e+01 1.84610877e+01 1.83479404e+01 1.82354241e+01 1.81235354e+01 + 1.80122710e+01 1.79016276e+01 1.77916017e+01 1.76821903e+01 1.75733899e+01 + 1.74651973e+01 1.73576093e+01 1.72506227e+01 1.71442343e+01 1.70384408e+01 + 1.69332391e+01 1.68286261e+01 1.67245986e+01 1.66211534e+01 1.65182875e+01 + 1.64159978e+01 1.63142812e+01 1.62131347e+01 1.61125551e+01 1.60125396e+01 + 1.59130850e+01 1.58141884e+01 1.57158468e+01 1.56180572e+01 1.55208167e+01 + 1.54241223e+01 1.53279712e+01 1.52323603e+01 1.51372870e+01 1.50427481e+01 + 1.49487410e+01 1.48552628e+01 1.47623106e+01 1.46698816e+01 1.45779730e+01 + 1.44865821e+01 1.43957060e+01 1.43053420e+01 1.42154874e+01 1.41261395e+01 + 1.40372954e+01 1.39489526e+01 1.38611084e+01 1.37737600e+01 1.36869048e+01 + 1.36005403e+01 1.35146636e+01 1.34292723e+01 1.33443637e+01 1.32599353e+01 + 1.31759844e+01 1.30925085e+01 1.30095051e+01 1.29269716e+01 1.28449055e+01 + 1.27633043e+01 1.26821655e+01 1.26014866e+01 1.25212652e+01 1.24414987e+01 + 1.23621848e+01 1.22833210e+01 1.22049049e+01 1.21269341e+01 1.20494062e+01 + 1.19723188e+01 1.18956695e+01 1.18194561e+01 1.17436760e+01 1.16683271e+01 + 1.15934070e+01 1.15189134e+01 1.14448440e+01 1.13711965e+01 1.12979687e+01 + 1.12251582e+01 1.11527629e+01 1.10807804e+01 1.10092087e+01 1.09380454e+01 + 1.08672883e+01 1.07969354e+01 1.07269843e+01 1.06574330e+01 1.05882792e+01 + 1.05195209e+01 1.04511559e+01 1.03831820e+01 1.03155972e+01 1.02483994e+01 + 1.01815865e+01 1.01151564e+01 1.00491069e+01 9.98343622e+00 9.91814213e+00 + 9.85322264e+00 9.78867573e+00 9.72449937e+00 9.66069158e+00 9.59725035e+00 + 9.53417371e+00 9.47145969e+00 9.40910632e+00 9.34711165e+00 9.28547375e+00 + 9.22419068e+00 9.16326052e+00 9.10268136e+00 9.04245131e+00 8.98256847e+00 + 8.92303096e+00 8.86383691e+00 8.80498446e+00 8.74647176e+00 8.68829697e+00 + 8.63045826e+00 8.57295380e+00 8.51578178e+00 8.45894041e+00 8.40242788e+00 + 8.34624242e+00 8.29038224e+00 8.23484558e+00 8.17963070e+00 8.12473583e+00 + 8.07015924e+00 8.01589921e+00 7.96195401e+00 7.90832194e+00 7.85500128e+00 + 7.80199036e+00 7.74928748e+00 7.69689098e+00 7.64479918e+00 7.59301042e+00 + 7.54152307e+00 7.49033547e+00 7.43944601e+00 7.38885304e+00 7.33855497e+00 + 7.28855019e+00 7.23883709e+00 7.18941409e+00 7.14027961e+00 7.09143208e+00 + 7.04286993e+00 6.99459161e+00 6.94659556e+00 6.89888026e+00 6.85144416e+00 + 6.80428575e+00 6.75740351e+00 6.71079593e+00 6.66446152e+00 6.61839878e+00 + 6.57260622e+00 6.52708238e+00 6.48182579e+00 6.43683498e+00 6.39210850e+00 + 6.34764490e+00 6.30344276e+00 6.25950063e+00 6.21581711e+00 6.17239077e+00 + 6.12922020e+00 6.08630401e+00 6.04364080e+00 6.00122919e+00 5.95906780e+00 + 5.91715525e+00 5.87549020e+00 5.83407128e+00 5.79289713e+00 5.75196643e+00 + 5.71127783e+00 5.67083001e+00 5.63062164e+00 5.59065142e+00 5.55091803e+00 + 5.51142018e+00 5.47215657e+00 5.43312591e+00 5.39432693e+00 5.35575836e+00 + 5.31741892e+00 5.27930736e+00 5.24142243e+00 5.20376288e+00 5.16632747e+00 + 5.12911496e+00 5.09212414e+00 5.05535378e+00 5.01880266e+00 4.98246959e+00 + 4.94635335e+00 4.91045277e+00 4.87476664e+00 4.83929378e+00 4.80403303e+00 + 4.76898320e+00 4.73414315e+00 4.69951171e+00 4.66508772e+00 4.63087006e+00 + 4.59685757e+00 4.56304912e+00 4.52944360e+00 4.49603987e+00 4.46283682e+00 + 4.42983335e+00 4.39702835e+00 4.36442072e+00 4.33200937e+00 4.29979323e+00 + 4.26777120e+00 4.23594221e+00 4.20430520e+00 4.17285910e+00 4.14160285e+00 + 4.11053541e+00 4.07965573e+00 4.04896277e+00 4.01845549e+00 3.98813286e+00 + 3.95799386e+00 3.92803748e+00 3.89826269e+00 3.86866850e+00 3.83925389e+00 + 3.81001788e+00 3.78095946e+00 3.75207766e+00 3.72337150e+00 3.69483999e+00 + 3.66648216e+00 3.63829706e+00 3.61028372e+00 3.58244118e+00 3.55476850e+00 + 3.52726473e+00 3.49992892e+00 3.47276015e+00 3.44575749e+00 3.41892000e+00 + 3.39224677e+00 3.36573689e+00 3.33938943e+00 3.31320351e+00 3.28717821e+00 + 3.26131264e+00 3.23560591e+00 3.21005713e+00 3.18466542e+00 3.15942990e+00 + 3.13434970e+00 3.10942396e+00 3.08465180e+00 3.06003238e+00 3.03556483e+00 + 3.01124831e+00 2.98708198e+00 2.96306498e+00 2.93919649e+00 2.91547568e+00 + 2.89190171e+00 2.86847377e+00 2.84519103e+00 2.82205269e+00 2.79905793e+00 + 2.77620595e+00 2.75349594e+00 2.73092712e+00 2.70849868e+00 2.68620984e+00 + 2.66405982e+00 2.64204784e+00 2.62017311e+00 2.59843488e+00 2.57683236e+00 + 2.55536481e+00 2.53403145e+00 2.51283154e+00 2.49176432e+00 2.47082905e+00 + 2.45002498e+00 2.42935138e+00 2.40880750e+00 2.38839262e+00 2.36810602e+00 + 2.34794696e+00 2.32791472e+00 2.30800860e+00 2.28822788e+00 2.26857186e+00 + 2.24903982e+00 2.22963107e+00 2.21034491e+00 2.19118065e+00 2.17213760e+00 + 2.15321507e+00 2.13441238e+00 2.11572886e+00 2.09716382e+00 2.07871661e+00 + 2.06038654e+00 2.04217296e+00 2.02407521e+00 2.00609263e+00 1.98822456e+00 + 1.97047037e+00 1.95282939e+00 1.93530099e+00 1.91788454e+00 1.90057938e+00 + 1.88338490e+00 1.86630046e+00 1.84932544e+00 1.83245921e+00 1.81570116e+00 + 1.79905067e+00 1.78250713e+00 1.76606992e+00 1.74973846e+00 1.73351212e+00 + 1.71739031e+00 1.70137244e+00 1.68545791e+00 1.66964614e+00 1.65393654e+00 + 1.63832852e+00 1.62282150e+00 1.60741492e+00 1.59210818e+00 1.57690073e+00 + 1.56179200e+00 1.54678141e+00 1.53186842e+00 1.51705246e+00 1.50233297e+00 + 1.48770940e+00 1.47318121e+00 1.45874785e+00 1.44440877e+00 1.43016343e+00 + 1.41601130e+00 1.40195184e+00 1.38798451e+00 1.37410880e+00 1.36032417e+00 + 1.34663009e+00 1.33302606e+00 1.31951155e+00 1.30608605e+00 1.29274904e+00 + 1.27950001e+00 1.26633846e+00 1.25326389e+00 1.24027580e+00 1.22737367e+00 + 1.21455703e+00 1.20182537e+00 1.18917821e+00 1.17661506e+00 1.16413543e+00 + 1.15173884e+00 1.13942481e+00 1.12719287e+00 1.11504254e+00 1.10297334e+00 + 1.09098481e+00 1.07907648e+00 1.06724789e+00 1.05549857e+00 1.04382807e+00 + 1.03223593e+00 1.02072169e+00 1.00928490e+00 9.97925112e-01 9.86641881e-01 + 9.75434761e-01 9.64303309e-01 9.53247087e-01 9.42265655e-01 9.31358580e-01 + 9.20525428e-01 9.09765770e-01 8.99079177e-01 8.88465224e-01 8.77923487e-01 + 8.67453546e-01 8.57054981e-01 8.46727377e-01 8.36470319e-01 8.26283395e-01 + 8.16166196e-01 8.06118314e-01 7.96139344e-01 7.86228882e-01 7.76386529e-01 + 7.66611885e-01 7.56904555e-01 7.47264143e-01 7.37690257e-01 7.28182509e-01 + 7.18740509e-01 7.09363872e-01 7.00052215e-01 6.90805156e-01 6.81622315e-01 + 6.72503315e-01 6.63447781e-01 6.54455339e-01 6.45525619e-01 6.36658251e-01 + 6.27852868e-01 6.19109104e-01 6.10426597e-01 6.01804986e-01 5.93243911e-01 + 5.84743015e-01 5.76301942e-01 5.67920340e-01 5.59597857e-01 5.51334144e-01 + 5.43128853e-01 5.34981638e-01 5.26892155e-01 5.18860064e-01 5.10885023e-01 + 5.02966695e-01 4.95104744e-01 4.87298834e-01 4.79548634e-01 4.71853813e-01 + 4.64214041e-01 4.56628992e-01 4.49098341e-01 4.41621763e-01 4.34198937e-01 + 4.26829543e-01 4.19513263e-01 4.12249780e-01 4.05038780e-01 3.97879949e-01 + 3.90772977e-01 3.83717553e-01 3.76713370e-01 3.69760122e-01 3.62857504e-01 + 3.56005214e-01 3.49202950e-01 3.42450412e-01 3.35747304e-01 3.29093328e-01 + 3.22488191e-01 3.15931599e-01 3.09423261e-01 3.02962888e-01 2.96550191e-01 + 2.90184883e-01 2.83866681e-01 2.77595300e-01 2.71370459e-01 2.65191877e-01 + 2.59059276e-01 2.52972379e-01 2.46930910e-01 2.40934595e-01 2.34983162e-01 + 2.29076339e-01 2.23213858e-01 2.17395449e-01 2.11620846e-01 2.05889785e-01 + 2.00202002e-01 1.94557234e-01 1.88955220e-01 1.83395703e-01 1.77878423e-01 + 1.72403125e-01 1.66969553e-01 1.61577453e-01 1.56226575e-01 1.50916667e-01 + 1.45647479e-01 1.40418764e-01 1.35230275e-01 1.30081768e-01 1.24972997e-01 + 1.19903721e-01 1.14873698e-01 1.09882689e-01 1.04930456e-01 1.00016760e-01 + 9.51413669e-02 9.03040415e-02 8.55045508e-02 8.07426628e-02 7.60181470e-02 + 7.13307740e-02 6.66803158e-02 6.20665457e-02 5.74892382e-02 5.29481691e-02 + 4.84431153e-02 4.39738552e-02 3.95401682e-02 3.51418352e-02 3.07786380e-02 + 2.64503598e-02 2.21567851e-02 1.78976994e-02 1.36728896e-02 9.48214365e-03 + 5.32525073e-03 1.20200121e-03 -2.88781336e-03 -6.94440028e-03 -1.09679657e-02 + -1.49587145e-02 -1.89168506e-02 -2.28425767e-02 -2.67360942e-02 -3.05976037e-02 + -3.44273043e-02 -3.82253943e-02 -4.19920708e-02 -4.57275295e-02 -4.94319655e-02 + -5.31055725e-02 -5.67485430e-02 -6.03610687e-02 -6.39433401e-02 -6.74955466e-02 + -7.10178766e-02 -7.45105174e-02 -7.79736551e-02 -8.14074751e-02 -8.48121614e-02 + -8.81878972e-02 -9.15348645e-02 -9.48532444e-02 -9.81432169e-02 -1.01404961e-01 + -1.04638655e-01 -1.07844475e-01 -1.11022598e-01 -1.14173199e-01 -1.17296451e-01 + -1.20392528e-01 -1.23461602e-01 -1.26503843e-01 -1.29519423e-01 -1.32508509e-01 + -1.35471271e-01 -1.38407875e-01 -1.41318488e-01 -1.44203275e-01 -1.47062401e-01 + -1.49896028e-01 -1.52704320e-01 -1.55487438e-01 -1.58245544e-01 -1.60978795e-01 + -1.63687353e-01 -1.66371373e-01 -1.69031015e-01 -1.71666433e-01 -1.74277784e-01 + -1.76865220e-01 -1.79428897e-01 -1.81968967e-01 -1.84485581e-01 -1.86978891e-01 + -1.89449046e-01 -1.91896196e-01 -1.94320490e-01 -1.96722074e-01 -1.99101095e-01 + -2.01457699e-01 -2.03792032e-01 -2.06104237e-01 -2.08394457e-01 -2.10662836e-01 + -2.12909515e-01 -2.15134635e-01 -2.17338336e-01 -2.19520757e-01 -2.21682038e-01 + -2.23822314e-01 -2.25941724e-01 -2.28040404e-01 -2.30118489e-01 -2.32176113e-01 + -2.34213411e-01 -2.36230515e-01 -2.38227558e-01 -2.40204671e-01 -2.42161985e-01 + -2.44099630e-01 -2.46017735e-01 -2.47916430e-01 -2.49795841e-01 -2.51656095e-01 + -2.53497320e-01 -2.55319640e-01 -2.57123180e-01 -2.58908065e-01 -2.60674419e-01 + -2.62422363e-01 -2.64152019e-01 -2.65863510e-01 -2.67556956e-01 -2.69232476e-01 + -2.70890190e-01 -2.72530216e-01 -2.74152673e-01 -2.75757677e-01 -2.77345345e-01 + -2.78915792e-01 -2.80469135e-01 -2.82005487e-01 -2.83524962e-01 -2.85027673e-01 + -2.86513733e-01 -2.87983254e-01 -2.89436347e-01 -2.90873122e-01 -2.92293689e-01 + -2.93698158e-01 -2.95086637e-01 -2.96459235e-01 -2.97816058e-01 -2.99157214e-01 + -3.00482808e-01 -3.01792946e-01 -3.03087733e-01 -3.04367274e-01 -3.05631671e-01 + -3.06881028e-01 -3.08115448e-01 -3.09335032e-01 -3.10539882e-01 -3.11730098e-01 + -3.12905781e-01 -3.14067030e-01 -3.15213944e-01 -3.16346621e-01 -3.17465159e-01 + -3.18569655e-01 -3.19660206e-01 -3.20736909e-01 -3.21799858e-01 -3.22849148e-01 + -3.23884874e-01 -3.24907130e-01 -3.25916009e-01 -3.26911604e-01 -3.27894007e-01 + -3.28863310e-01 -3.29819603e-01 -3.30762978e-01 -3.31693524e-01 -3.32611331e-01 + -3.33516488e-01 -3.34409084e-01 -3.35289206e-01 -3.36156941e-01 -3.37012378e-01 + -3.37855601e-01 -3.38686698e-01 -3.39505753e-01 -3.40312851e-01 -3.41108077e-01 + -3.41891514e-01 -3.42663247e-01 -3.43423357e-01 -3.44171927e-01 -3.44909040e-01 + -3.45634776e-01 -3.46349217e-01 -3.47052442e-01 -3.47744533e-01 -3.48425568e-01 + -3.49095627e-01 -3.49754788e-01 -3.50403129e-01 -3.51040727e-01 -3.51667661e-01 + -3.52284007e-01 -3.52889840e-01 -3.53485238e-01 -3.54070274e-01 -3.54645025e-01 + -3.55209564e-01 -3.55763965e-01 -3.56308303e-01 -3.56842650e-01 -3.57367079e-01 + -3.57881662e-01 -3.58386471e-01 -3.58881577e-01 -3.59367052e-01 -3.59842965e-01 + -3.60309388e-01 -3.60766390e-01 -3.61214039e-01 -3.61652405e-01 -3.62081557e-01 + -3.62501562e-01 -3.62912488e-01 -3.63314403e-01 -3.63707372e-01 -3.64091463e-01 + -3.64466741e-01 -3.64833273e-01 -3.65191122e-01 -3.65540355e-01 -3.65881036e-01 + -3.66213228e-01 -3.66536996e-01 -3.66852402e-01 -3.67159509e-01 -3.67458381e-01 + -3.67749078e-01 -3.68031664e-01 -3.68306198e-01 -3.68572743e-01 -3.68831359e-01 + -3.69082107e-01 -3.69325045e-01 -3.69560234e-01 -3.69787732e-01 -3.70007599e-01 + -3.70219894e-01 -3.70424673e-01 -3.70621996e-01 -3.70811918e-01 -3.70994499e-01 + -3.71169793e-01 -3.71337857e-01 -3.71498749e-01 -3.71652522e-01 -3.71799232e-01 + -3.71938935e-01 -3.72071685e-01 -3.72197537e-01 -3.72316543e-01 -3.72428759e-01 + -3.72534237e-01 -3.72633030e-01 -3.72725191e-01 -3.72810773e-01 -3.72889827e-01 + -3.72962404e-01 -3.73028557e-01 -3.73088337e-01 -3.73141794e-01 -3.73188978e-01 + -3.73229940e-01 -3.73264730e-01 -3.73293396e-01 -3.73315989e-01 -3.73332557e-01 + -3.73343148e-01 -3.73347812e-01 -3.73346595e-01 -3.73339546e-01 -3.73326712e-01 + -3.73308140e-01 -3.73283877e-01 -3.73253970e-01 -3.73218464e-01 -3.73177405e-01 + -3.73130840e-01 -3.73078813e-01 -3.73021370e-01 -3.72958555e-01 -3.72890413e-01 + -3.72816988e-01 -3.72738325e-01 -3.72654466e-01 -3.72565455e-01 -3.72471335e-01 + -3.72372149e-01 -3.72267940e-01 -3.72158750e-01 -3.72044622e-01 -3.71925595e-01 + -3.71801714e-01 -3.71673017e-01 -3.71539548e-01 -3.71401345e-01 -3.71258451e-01 + -3.71110904e-01 -3.70958745e-01 -3.70802014e-01 -3.70640750e-01 -3.70474993e-01 + -3.70304780e-01 -3.70130151e-01 -3.69951145e-01 -3.69767799e-01 -3.69580152e-01 + -3.69388241e-01 -3.69192104e-01 -3.68991778e-01 -3.68787299e-01 -3.68578706e-01 + -3.68366033e-01 -3.68149318e-01 -3.67928596e-01 -3.67703904e-01 -3.67475277e-01 + -3.67242750e-01 -3.67006358e-01 -3.66766136e-01 -3.66522120e-01 -3.66274343e-01 + -3.66022839e-01 -3.65767643e-01 -3.65508788e-01 -3.65246307e-01 -3.64980235e-01 + -3.64710605e-01 -3.64437448e-01 -3.64160798e-01 -3.63880687e-01 -3.63597148e-01 + -3.63310212e-01 -3.63019912e-01 -3.62726278e-01 -3.62429343e-01 -3.62129137e-01 + -3.61825691e-01 -3.61519036e-01 -3.61209204e-01 -3.60896223e-01 -3.60580124e-01 + -3.60260938e-01 -3.59938693e-01 -3.59613420e-01 -3.59285147e-01 -3.58953904e-01 + -3.58619720e-01 -3.58282624e-01 -3.57942644e-01 -3.57599807e-01 -3.57254144e-01 + -3.56905681e-01 -3.56554446e-01 -3.56200467e-01 -3.55843771e-01 -3.55484386e-01 + -3.55122338e-01 -3.54757654e-01 -3.54390361e-01 -3.54020485e-01 -3.53648052e-01 + -3.53273090e-01 -3.52895622e-01 -3.52515676e-01 -3.52133276e-01 -3.51748448e-01 + -3.51361217e-01 -3.50971609e-01 -3.50579647e-01 -3.50185356e-01 -3.49788762e-01 + -3.49389887e-01 -3.48988757e-01 -3.48585395e-01 -3.48179824e-01 -3.47772069e-01 + -3.47362152e-01 -3.46950097e-01 -3.46535928e-01 -3.46119665e-01 -3.45701334e-01 + -3.45280955e-01 -3.44858551e-01 -3.44434144e-01 -3.44007757e-01 -3.43579412e-01 + -3.43149128e-01 -3.42716930e-01 -3.42282836e-01 -3.41846870e-01 -3.41409051e-01 + -3.40969401e-01 -3.40527939e-01 -3.40084688e-01 -3.39639666e-01 -3.39192894e-01 + -3.38744393e-01 -3.38294181e-01 -3.37842278e-01 -3.37388705e-01 -3.36933480e-01 + -3.36476622e-01 -3.36018151e-01 -3.35558085e-01 -3.35096442e-01 -3.34633242e-01 + -3.34168503e-01 -3.33702243e-01 -3.33234480e-01 -3.32765231e-01 -3.32294515e-01 + -3.31822348e-01 -3.31348749e-01 -3.30873735e-01 -3.30397322e-01 -3.29919527e-01 + -3.29440368e-01 -3.28959860e-01 -3.28478021e-01 -3.27994865e-01 -3.27510410e-01 + -3.27024672e-01 -3.26537665e-01 -3.26049406e-01 -3.25559910e-01 -3.25069192e-01 + -3.24577267e-01 -3.24084151e-01 -3.23589857e-01 -3.23094401e-01 -3.22597798e-01 + -3.22100060e-01 -3.21601203e-01 -3.21101240e-01 -3.20600185e-01 -3.20098052e-01 + -3.19594854e-01 -3.19090604e-01 -3.18585316e-01 -3.18079002e-01 -3.17571675e-01 + -3.17063348e-01 -3.16554033e-01 -3.16043742e-01 -3.15532488e-01 -3.15020282e-01 + -3.14507136e-01 -3.13993062e-01 -3.13478070e-01 -3.12962173e-01 -3.12445381e-01 + -3.11927705e-01 -3.11409156e-01 -3.10889743e-01 -3.10369478e-01 -3.09848371e-01 + -3.09326431e-01 -3.08803668e-01 -3.08280091e-01 -3.07755711e-01 -3.07230536e-01 + -3.06704576e-01 -3.06177838e-01 -3.05650332e-01 -3.05122065e-01 -3.04593047e-01 + -3.04063285e-01 -3.03532787e-01 -3.03001561e-01 -3.02469613e-01 -3.01936952e-01 + -3.01403583e-01 -3.00869515e-01 -3.00334753e-01 -2.99799303e-01 -2.99263173e-01 + -2.98726367e-01 -2.98188891e-01 -2.97650751e-01 -2.97111953e-01 -2.96572500e-01 + -2.96032398e-01 -2.95491652e-01 -2.94950265e-01 -2.94408242e-01 -2.93865586e-01 + -2.93322302e-01 -2.92778392e-01 -2.92233859e-01 -2.91688707e-01 -2.91142937e-01 + -2.90596553e-01 -2.90049556e-01 -2.89501948e-01 -2.88953730e-01 -2.88404904e-01 + -2.87855471e-01 -2.87305431e-01 -2.86754785e-01 -2.86203532e-01 -2.85651673e-01 + -2.85099207e-01 -2.84546134e-01 -2.83992451e-01 -2.83438159e-01 -2.82883254e-01 + -2.82327736e-01 -2.81771601e-01 -2.81214847e-01 -2.80657471e-01 -2.80099470e-01 + -2.79540840e-01 -2.78981576e-01 -2.78421675e-01 -2.77861132e-01 -2.77299942e-01 + -2.76738098e-01 -2.76175596e-01 -2.75612428e-01 -2.75048590e-01 -2.74484072e-01 + -2.73918869e-01 -2.73352971e-01 -2.72786372e-01 -2.72219062e-01 -2.71651032e-01 + -2.71082273e-01 -2.70512775e-01 -2.69942527e-01 -2.69371519e-01 -2.68799739e-01 + -2.68227176e-01 -2.67653817e-01 -2.67079650e-01 -2.66504662e-01 -2.65928838e-01 + -2.65352166e-01 -2.64774629e-01 -2.64196213e-01 -2.63616903e-01 -2.63036681e-01 + -2.62455531e-01 -2.61873437e-01 -2.61290379e-01 -2.60706339e-01 -2.60121299e-01 + -2.59535239e-01 -2.58948138e-01 -2.58359975e-01 -2.57770730e-01 -2.57180380e-01 + -2.56588902e-01 -2.55996273e-01 -2.55402470e-01 -2.54807466e-01 -2.54211238e-01 + -2.53613758e-01 -2.53015001e-01 -2.52414938e-01 -2.51813542e-01 -2.51210784e-01 + -2.50606633e-01 -2.50001061e-01 -2.49394035e-01 -2.48785523e-01 -2.48175494e-01 + -2.47563913e-01 -2.46950746e-01 -2.46335958e-01 -2.45719514e-01 -2.45101375e-01 + -2.44481506e-01 -2.43859866e-01 -2.43236418e-01 -2.42611120e-01 -2.41983931e-01 + -2.41354809e-01 -2.40723712e-01 -2.40090595e-01 -2.39455414e-01 -2.38818122e-01 + -2.38178672e-01 -2.37537018e-01 -2.36893110e-01 -2.36246897e-01 -2.35598331e-01 + -2.34947357e-01 -2.34293925e-01 -2.33637979e-01 -2.32979464e-01 -2.32318325e-01 + -2.31654504e-01 -2.30987943e-01 -2.30318583e-01 -2.29646362e-01 -2.28971220e-01 + -2.28293093e-01 -2.27611917e-01 -2.26927628e-01 -2.26240159e-01 -2.25549442e-01 + -2.24855410e-01 -2.24157991e-01 -2.23457115e-01 -2.22752711e-01 -2.22044703e-01 + -2.21333018e-01 -2.20617580e-01 -2.19898312e-01 -2.19175135e-01 -2.18447970e-01 + -2.17716735e-01 -2.16981350e-01 -2.16241730e-01 -2.15497792e-01 -2.14749449e-01 + -2.13996614e-01 -2.13239200e-01 -2.12477117e-01 -2.11710274e-01 -2.10938580e-01 + -2.10161942e-01 -2.09380265e-01 -2.08593455e-01 -2.07801414e-01 -2.07004046e-01 + -2.06201251e-01 -2.05392930e-01 -2.04578982e-01 -2.03759305e-01 -2.02933795e-01 + -2.02102350e-01 -2.01264865e-01 -2.00421232e-01 -1.99571346e-01 -1.98715099e-01 + -1.97852383e-01 -1.96983088e-01 -1.96107105e-01 -1.95224322e-01 -1.94334629e-01 + -1.93437914e-01 -1.92534064e-01 -1.91622967e-01 -1.90704510e-01 -1.89778578e-01 + -1.88845059e-01 -1.87903839e-01 -1.86954803e-01 -1.85997837e-01 -1.85032828e-01 + -1.84059661e-01 -1.83078225e-01 -1.82088405e-01 -1.81090089e-01 -1.80083164e-01 + -1.79067521e-01 -1.78043049e-01 -1.77009638e-01 -1.75967181e-01 -1.74915569e-01 + -1.73854699e-01 -1.72784466e-01 -1.71704767e-01 -1.70615503e-01 -1.69516576e-01 + -1.68407889e-01 -1.67289349e-01 -1.66160865e-01 -1.65022349e-01 -1.63873717e-01 + -1.62714886e-01 -1.61545778e-01 -1.60366318e-01 -1.59176437e-01 -1.57976067e-01 + -1.56765147e-01 -1.55543618e-01 -1.54311430e-01 -1.53068533e-01 -1.51814888e-01 + -1.50550457e-01 -1.49275211e-01 -1.47989126e-01 -1.46692185e-01 -1.45384379e-01 + -1.44065704e-01 -1.42736166e-01 -1.41395777e-01 -1.40044559e-01 -1.38682540e-01 + -1.37309761e-01 -1.35926268e-01 -1.34532119e-01 -1.33127381e-01 -1.31712132e-01 + -1.30286461e-01 -1.28850467e-01 -1.27404261e-01 -1.25947965e-01 -1.24481714e-01 + -1.23005655e-01 -1.21519948e-01 -1.20024766e-01 -1.18520294e-01 -1.17006735e-01 + -1.15484301e-01 -1.13953221e-01 -1.12413739e-01 -1.10866114e-01 -1.09310620e-01 + -1.07747545e-01 -1.06177195e-01 -1.04599892e-01 -1.03015972e-01 -1.01425791e-01 + -9.98297178e-02 -9.82281413e-02 -9.66214653e-02 -9.50101113e-02 -9.33945177e-02 + -9.17751402e-02 -9.01524512e-02 -8.85269406e-02 -8.68991149e-02 -8.52694975e-02 + -8.36386287e-02 -8.20070652e-02 -8.03753796e-02 -7.87441609e-02 -7.71140134e-02 + -7.54855567e-02 -7.38594249e-02 -7.22362666e-02 -7.06167438e-02 -6.90015316e-02 + -6.73913175e-02 -6.57868005e-02 -6.41886904e-02 -6.25977069e-02 -6.10145787e-02 + -5.94400425e-02 -5.78748417e-02 -5.63197260e-02 -5.47754491e-02 -5.32427687e-02 + -5.17224440e-02 -5.02152354e-02 -4.87219023e-02 -4.72432019e-02 -4.57798880e-02 + -4.43327089e-02 -4.29024059e-02 -4.14897120e-02 -4.00953498e-02 -3.87200300e-02 + -3.73644495e-02 -3.60292898e-02 -3.47152149e-02 -3.34228699e-02 -3.21528790e-02 + -3.09058435e-02 -2.96823405e-02 -2.84829208e-02 -2.73081072e-02 -2.61583928e-02 + -2.50342396e-02 -2.39360766e-02 -2.28642984e-02 -2.18192640e-02 -2.08012951e-02 + -1.98106749e-02 -1.88476472e-02 -1.79124150e-02 -1.70051400e-02 -1.61259413e-02 + -1.52748953e-02 -1.44520347e-02 -1.36573486e-02 -1.28907819e-02 -1.21522356e-02 + -1.14415667e-02 -1.07585887e-02 -1.01030720e-02 -9.47474459e-03 -8.87329287e-03 + -8.29836274e-03 -7.74956073e-03 -7.22645543e-03 -6.72857898e-03 -6.25542881e-03 + -5.80646946e-03 -5.38113458e-03 -4.97882911e-03 -4.59893146e-03 -4.24079595e-03 + -3.90375522e-03 -3.58712281e-03 -3.29019579e-03 -3.01225738e-03 -2.75257971e-03 + -2.51042650e-03 -2.28505583e-03 -2.07572280e-03 -1.88168219e-03 -1.70219116e-03 + -1.53651170e-03 -1.38391314e-03 -1.24367451e-03 -1.11508676e-03 -9.97454879e-04 + -8.90099873e-04 -7.92360551e-04 -7.03595185e-04 -6.23182986e-04 -5.50525391e-04 + -4.85047182e-04 -4.26197410e-04 -3.73450139e-04 -3.26304997e-04 -2.84287557e-04 + -2.46949530e-04 -2.13868796e-04 -1.84649264e-04 -1.58920587e-04 -1.36337730e-04 + -1.16580404e-04 -9.93523900e-05 -8.43807493e-05 -7.14149460e-05 -6.02258921e-05 + -5.06049271e-05 -4.23627497e-05 -3.53283117e-05 -2.93476901e-05 -2.42829478e-05 + -2.00109953e-05 -1.64224645e-05 -1.34206037e-05 -1.09202024e-05 -8.84655474e-06 + -7.13446549e-06 -5.72730630e-06 -4.57612466e-06 -3.63880915e-06 -2.87931270e-06 + -2.26693489e-06 -1.77566315e-06 -1.38357233e-06 -1.07228097e-06 -8.26462211e-07 + -6.33407021e-07 -4.82636499e-07 -3.65560252e-07 -2.75177336e-07 -2.05816266e-07 + -1.52910556e-07 -1.12806264e-07 -8.25981543e-08 -5.99912045e-08 -4.31843728e-08 + -3.07737665e-08 -2.16725592e-08 -1.50452580e-08 -1.02541552e-08 -6.81604222e-09 + -4.36749115e-09 -2.63722754e-09 -1.42432372e-09 -5.81126127e-10 0.00000000e+00 + 1.49783707e+02 1.49783707e+02 1.49783707e+02 1.49783707e+02 1.49783707e+02 + 1.49783707e+02 1.49783707e+02 1.49783707e+02 1.49783707e+02 1.49783707e+02 + 1.49783707e+02 1.49783707e+02 1.49783707e+02 1.49783707e+02 1.49783707e+02 + 1.49783707e+02 1.49783707e+02 1.49783707e+02 1.49783707e+02 1.49783707e+02 + 1.49783707e+02 1.49783707e+02 1.49783707e+02 1.49783707e+02 1.49783707e+02 + 1.49783707e+02 1.49783707e+02 1.49783707e+02 1.49783707e+02 1.49783707e+02 + 1.49783707e+02 1.49783707e+02 1.49783707e+02 1.49783707e+02 1.49783707e+02 + 1.49783707e+02 1.49783707e+02 1.49783707e+02 1.49783707e+02 1.49783707e+02 + 1.49783707e+02 1.49783707e+02 1.49783707e+02 1.49179292e+02 1.48418948e+02 + 1.47662380e+02 1.46909571e+02 1.46160501e+02 1.45415152e+02 1.44673507e+02 + 1.43935545e+02 1.43201251e+02 1.42470604e+02 1.41743588e+02 1.41020184e+02 + 1.40300375e+02 1.39584143e+02 1.38871471e+02 1.38162340e+02 1.37456733e+02 + 1.36754634e+02 1.36056024e+02 1.35360887e+02 1.34669205e+02 1.33980961e+02 + 1.33296139e+02 1.32614721e+02 1.31936692e+02 1.31262033e+02 1.30590728e+02 + 1.29922762e+02 1.29258117e+02 1.28596777e+02 1.27938726e+02 1.27283948e+02 + 1.26632426e+02 1.25984144e+02 1.25339087e+02 1.24697239e+02 1.24058583e+02 + 1.23423104e+02 1.22790787e+02 1.22161615e+02 1.21535573e+02 1.20912647e+02 + 1.20292820e+02 1.19676076e+02 1.19062402e+02 1.18451782e+02 1.17844201e+02 + 1.17239643e+02 1.16638094e+02 1.16039540e+02 1.15443964e+02 1.14851353e+02 + 1.14261692e+02 1.13674967e+02 1.13091163e+02 1.12510265e+02 1.11932259e+02 + 1.11357132e+02 1.10784868e+02 1.10215454e+02 1.09648875e+02 1.09085118e+02 + 1.08524169e+02 1.07966014e+02 1.07410638e+02 1.06858029e+02 1.06308173e+02 + 1.05761056e+02 1.05216665e+02 1.04674986e+02 1.04136006e+02 1.03599711e+02 + 1.03066088e+02 1.02535125e+02 1.02006807e+02 1.01481123e+02 1.00958058e+02 + 1.00437601e+02 9.99197376e+01 9.94044556e+01 9.88917423e+01 9.83815849e+01 + 9.78739708e+01 9.73688876e+01 9.68663227e+01 9.63662637e+01 9.58686982e+01 + 9.53736140e+01 9.48809987e+01 9.43908403e+01 9.39031266e+01 9.34178455e+01 + 9.29349850e+01 9.24545333e+01 9.19764783e+01 9.15008083e+01 9.10275115e+01 + 9.05565762e+01 9.00879908e+01 8.96217436e+01 8.91578231e+01 8.86962179e+01 + 8.82369165e+01 8.77799075e+01 8.73251797e+01 8.68727217e+01 8.64225224e+01 + 8.59745706e+01 8.55288552e+01 8.50853653e+01 8.46440897e+01 8.42050177e+01 + 8.37681382e+01 8.33334405e+01 8.29009139e+01 8.24705475e+01 8.20423308e+01 + 8.16162531e+01 8.11923039e+01 8.07704726e+01 8.03507489e+01 7.99331223e+01 + 7.95175824e+01 7.91041189e+01 7.86927217e+01 7.82833805e+01 7.78760851e+01 + 7.74708255e+01 7.70675915e+01 7.66663733e+01 7.62671608e+01 7.58699442e+01 + 7.54747135e+01 7.50814591e+01 7.46901710e+01 7.43008397e+01 7.39134555e+01 + 7.35280086e+01 7.31444897e+01 7.27628891e+01 7.23831974e+01 7.20054051e+01 + 7.16295030e+01 7.12554815e+01 7.08833316e+01 7.05130438e+01 7.01446090e+01 + 6.97780181e+01 6.94132620e+01 6.90503316e+01 6.86892178e+01 6.83299117e+01 + 6.79724044e+01 6.76166870e+01 6.72627507e+01 6.69105866e+01 6.65601860e+01 + 6.62115401e+01 6.58646404e+01 6.55194782e+01 6.51760449e+01 6.48343319e+01 + 6.44943309e+01 6.41560332e+01 6.38194305e+01 6.34845144e+01 6.31512767e+01 + 6.28197089e+01 6.24898028e+01 6.21615503e+01 6.18349431e+01 6.15099732e+01 + 6.11866324e+01 6.08649127e+01 6.05448061e+01 6.02263045e+01 5.99094002e+01 + 5.95940851e+01 5.92803515e+01 5.89681914e+01 5.86575972e+01 5.83485611e+01 + 5.80410754e+01 5.77351324e+01 5.74307245e+01 5.71278441e+01 5.68264837e+01 + 5.65266357e+01 5.62282927e+01 5.59314473e+01 5.56360919e+01 5.53422194e+01 + 5.50498223e+01 5.47588933e+01 5.44694252e+01 5.41814107e+01 5.38948427e+01 + 5.36097141e+01 5.33260176e+01 5.30437463e+01 5.27628930e+01 5.24834508e+01 + 5.22054127e+01 5.19287717e+01 5.16535209e+01 5.13796535e+01 5.11071627e+01 + 5.08360415e+01 5.05662832e+01 5.02978812e+01 5.00308286e+01 4.97651188e+01 + 4.95007453e+01 4.92377012e+01 4.89759802e+01 4.87155755e+01 4.84564808e+01 + 4.81986896e+01 4.79421953e+01 4.76869917e+01 4.74330722e+01 4.71804306e+01 + 4.69290604e+01 4.66789555e+01 4.64301096e+01 4.61825164e+01 4.59361698e+01 + 4.56910635e+01 4.54471915e+01 4.52045476e+01 4.49631257e+01 4.47229199e+01 + 4.44839240e+01 4.42461321e+01 4.40095382e+01 4.37741365e+01 4.35399210e+01 + 4.33068858e+01 4.30750251e+01 4.28443330e+01 4.26148039e+01 4.23864319e+01 + 4.21592113e+01 4.19331365e+01 4.17082016e+01 4.14844012e+01 4.12617295e+01 + 4.10401810e+01 4.08197502e+01 4.06004314e+01 4.03822193e+01 4.01651082e+01 + 3.99490928e+01 3.97341677e+01 3.95203273e+01 3.93075664e+01 3.90958797e+01 + 3.88852617e+01 3.86757072e+01 3.84672110e+01 3.82597677e+01 3.80533723e+01 + 3.78480194e+01 3.76437039e+01 3.74404208e+01 3.72381648e+01 3.70369308e+01 + 3.68367139e+01 3.66375090e+01 3.64393110e+01 3.62421151e+01 3.60459161e+01 + 3.58507092e+01 3.56564895e+01 3.54632520e+01 3.52709919e+01 3.50797044e+01 + 3.48893846e+01 3.47000278e+01 3.45116291e+01 3.43241838e+01 3.41376873e+01 + 3.39521347e+01 3.37675214e+01 3.35838428e+01 3.34010942e+01 3.32192711e+01 + 3.30383687e+01 3.28583827e+01 3.26793083e+01 3.25011411e+01 3.23238767e+01 + 3.21475104e+01 3.19720380e+01 3.17974549e+01 3.16237567e+01 3.14509390e+01 + 3.12789976e+01 3.11079279e+01 3.09377258e+01 3.07683869e+01 3.05999069e+01 + 3.04322815e+01 3.02655066e+01 3.00995779e+01 2.99344912e+01 2.97702424e+01 + 2.96068272e+01 2.94442415e+01 2.92824813e+01 2.91215424e+01 2.89614208e+01 + 2.88021124e+01 2.86436131e+01 2.84859190e+01 2.83290261e+01 2.81729303e+01 + 2.80176277e+01 2.78631145e+01 2.77093866e+01 2.75564402e+01 2.74042714e+01 + 2.72528763e+01 2.71022511e+01 2.69523920e+01 2.68032952e+01 2.66549568e+01 + 2.65073732e+01 2.63605406e+01 2.62144552e+01 2.60691133e+01 2.59245113e+01 + 2.57806454e+01 2.56375121e+01 2.54951076e+01 2.53534285e+01 2.52124709e+01 + 2.50722315e+01 2.49327065e+01 2.47938925e+01 2.46557860e+01 2.45183833e+01 + 2.43816811e+01 2.42456758e+01 2.41103640e+01 2.39757422e+01 2.38418071e+01 + 2.37085551e+01 2.35759829e+01 2.34440871e+01 2.33128644e+01 2.31823115e+01 + 2.30524249e+01 2.29232013e+01 2.27946376e+01 2.26667304e+01 2.25394764e+01 + 2.24128724e+01 2.22869151e+01 2.21616014e+01 2.20369281e+01 2.19128919e+01 + 2.17894897e+01 2.16667184e+01 2.15445748e+01 2.14230557e+01 2.13021582e+01 + 2.11818790e+01 2.10622152e+01 2.09431636e+01 2.08247212e+01 2.07068850e+01 + 2.05896520e+01 2.04730192e+01 2.03569835e+01 2.02415420e+01 2.01266918e+01 + 2.00124300e+01 1.98987535e+01 1.97856594e+01 1.96731450e+01 1.95612073e+01 + 1.94498434e+01 1.93390504e+01 1.92288256e+01 1.91191661e+01 1.90100691e+01 + 1.89015317e+01 1.87935513e+01 1.86861250e+01 1.85792501e+01 1.84729238e+01 + 1.83671434e+01 1.82619062e+01 1.81572095e+01 1.80530505e+01 1.79494267e+01 + 1.78463353e+01 1.77437737e+01 1.76417392e+01 1.75402293e+01 1.74392413e+01 + 1.73387726e+01 1.72388207e+01 1.71393829e+01 1.70404567e+01 1.69420395e+01 + 1.68441289e+01 1.67467222e+01 1.66498171e+01 1.65534109e+01 1.64575012e+01 + 1.63620855e+01 1.62671614e+01 1.61727263e+01 1.60787780e+01 1.59853139e+01 + 1.58923316e+01 1.57998288e+01 1.57078030e+01 1.56162518e+01 1.55251730e+01 + 1.54345641e+01 1.53444228e+01 1.52547467e+01 1.51655336e+01 1.50767812e+01 + 1.49884871e+01 1.49006490e+01 1.48132647e+01 1.47263319e+01 1.46398484e+01 + 1.45538120e+01 1.44682203e+01 1.43830712e+01 1.42983624e+01 1.42140919e+01 + 1.41302573e+01 1.40468565e+01 1.39638874e+01 1.38813477e+01 1.37992354e+01 + 1.37175484e+01 1.36362844e+01 1.35554414e+01 1.34750172e+01 1.33950099e+01 + 1.33154172e+01 1.32362372e+01 1.31574678e+01 1.30791069e+01 1.30011525e+01 + 1.29236025e+01 1.28464550e+01 1.27697079e+01 1.26933592e+01 1.26174070e+01 + 1.25418492e+01 1.24666839e+01 1.23919091e+01 1.23175229e+01 1.22435233e+01 + 1.21699084e+01 1.20966763e+01 1.20238251e+01 1.19513528e+01 1.18792576e+01 + 1.18075376e+01 1.17361909e+01 1.16652156e+01 1.15946099e+01 1.15243720e+01 + 1.14544999e+01 1.13849919e+01 1.13158462e+01 1.12470609e+01 1.11786342e+01 + 1.11105644e+01 1.10428496e+01 1.09754881e+01 1.09084781e+01 1.08418179e+01 + 1.07755057e+01 1.07095397e+01 1.06439183e+01 1.05786397e+01 1.05137021e+01 + 1.04491040e+01 1.03848435e+01 1.03209190e+01 1.02573288e+01 1.01940713e+01 + 1.01311448e+01 1.00685475e+01 1.00062780e+01 9.94433443e+00 9.88271528e+00 + 9.82141891e+00 9.76044369e+00 9.69978801e+00 9.63945028e+00 9.57942890e+00 + 9.51972228e+00 9.46032886e+00 9.40124705e+00 9.34247531e+00 9.28401207e+00 + 9.22585579e+00 9.16800493e+00 9.11045796e+00 9.05321336e+00 8.99626961e+00 + 8.93962520e+00 8.88327864e+00 8.82722842e+00 8.77147307e+00 8.71601110e+00 + 8.66084104e+00 8.60596143e+00 8.55137081e+00 8.49706774e+00 8.44305077e+00 + 8.38931846e+00 8.33586938e+00 8.28270212e+00 8.22981527e+00 8.17720740e+00 + 8.12487713e+00 8.07282306e+00 8.02104381e+00 7.96953799e+00 7.91830423e+00 + 7.86734116e+00 7.81664743e+00 7.76622169e+00 7.71606259e+00 7.66616878e+00 + 7.61653894e+00 7.56717174e+00 7.51806586e+00 7.46921999e+00 7.42063283e+00 + 7.37230306e+00 7.32422941e+00 7.27641057e+00 7.22884528e+00 7.18153226e+00 + 7.13447023e+00 7.08765794e+00 7.04109413e+00 6.99477755e+00 6.94870697e+00 + 6.90288113e+00 6.85729882e+00 6.81195880e+00 6.76685986e+00 6.72200078e+00 + 6.67738036e+00 6.63299740e+00 6.58885070e+00 6.54493908e+00 6.50126134e+00 + 6.45781632e+00 6.41460284e+00 6.37161974e+00 6.32886585e+00 6.28634003e+00 + 6.24404112e+00 6.20196799e+00 6.16011949e+00 6.11849449e+00 6.07709187e+00 + 6.03591051e+00 5.99494929e+00 5.95420710e+00 5.91368284e+00 5.87337542e+00 + 5.83328374e+00 5.79340670e+00 5.75374324e+00 5.71429227e+00 5.67505272e+00 + 5.63602353e+00 5.59720364e+00 5.55859198e+00 5.52018752e+00 5.48198920e+00 + 5.44399598e+00 5.40620683e+00 5.36862073e+00 5.33123664e+00 5.29405355e+00 + 5.25707044e+00 5.22028630e+00 5.18370014e+00 5.14731094e+00 5.11111772e+00 + 5.07511948e+00 5.03931525e+00 5.00370403e+00 4.96828487e+00 4.93305677e+00 + 4.89801879e+00 4.86316997e+00 4.82850933e+00 4.79403594e+00 4.75974885e+00 + 4.72564712e+00 4.69172980e+00 4.65799598e+00 4.62444471e+00 4.59107508e+00 + 4.55788617e+00 4.52487706e+00 4.49204685e+00 4.45939462e+00 4.42691949e+00 + 4.39462055e+00 4.36249691e+00 4.33054769e+00 4.29877201e+00 4.26716897e+00 + 4.23573772e+00 4.20447738e+00 4.17338708e+00 4.14246597e+00 4.11171318e+00 + 4.08112787e+00 4.05070919e+00 4.02045629e+00 3.99036834e+00 3.96044449e+00 + 3.93068392e+00 3.90108579e+00 3.87164929e+00 3.84237360e+00 3.81325790e+00 + 3.78430138e+00 3.75550323e+00 3.72686265e+00 3.69837884e+00 3.67005100e+00 + 3.64187835e+00 3.61386009e+00 3.58599545e+00 3.55828364e+00 3.53072389e+00 + 3.50331543e+00 3.47605748e+00 3.44894929e+00 3.42199009e+00 3.39517912e+00 + 3.36851565e+00 3.34199890e+00 3.31562815e+00 3.28940264e+00 3.26332165e+00 + 3.23738442e+00 3.21159025e+00 3.18593839e+00 3.16042813e+00 3.13505874e+00 + 3.10982950e+00 3.08473972e+00 3.05978867e+00 3.03497565e+00 3.01029995e+00 + 2.98576089e+00 2.96135776e+00 2.93708988e+00 2.91295654e+00 2.88895708e+00 + 2.86509080e+00 2.84135704e+00 2.81775511e+00 2.79428434e+00 2.77094406e+00 + 2.74773362e+00 2.72465235e+00 2.70169958e+00 2.67887468e+00 2.65617697e+00 + 2.63360582e+00 2.61116059e+00 2.58884062e+00 2.56664528e+00 2.54457393e+00 + 2.52262595e+00 2.50080069e+00 2.47909755e+00 2.45751588e+00 2.43605508e+00 + 2.41471452e+00 2.39349360e+00 2.37239170e+00 2.35140821e+00 2.33054253e+00 + 2.30979405e+00 2.28916219e+00 2.26864633e+00 2.24824590e+00 2.22796030e+00 + 2.20778893e+00 2.18773123e+00 2.16778660e+00 2.14795448e+00 2.12823427e+00 + 2.10862542e+00 2.08912735e+00 2.06973950e+00 2.05046129e+00 2.03129218e+00 + 2.01223160e+00 1.99327899e+00 1.97443380e+00 1.95569549e+00 1.93706350e+00 + 1.91853730e+00 1.90011633e+00 1.88180006e+00 1.86358796e+00 1.84547948e+00 + 1.82747410e+00 1.80957130e+00 1.79177053e+00 1.77407128e+00 1.75647304e+00 + 1.73897527e+00 1.72157747e+00 1.70427912e+00 1.68707972e+00 1.66997874e+00 + 1.65297570e+00 1.63607008e+00 1.61926139e+00 1.60254913e+00 1.58593279e+00 + 1.56941190e+00 1.55298595e+00 1.53665447e+00 1.52041696e+00 1.50427294e+00 + 1.48822194e+00 1.47226347e+00 1.45639705e+00 1.44062222e+00 1.42493849e+00 + 1.40934542e+00 1.39384251e+00 1.37842932e+00 1.36310538e+00 1.34787023e+00 + 1.33272342e+00 1.31766448e+00 1.30269297e+00 1.28780843e+00 1.27301042e+00 + 1.25829849e+00 1.24367219e+00 1.22913109e+00 1.21467475e+00 1.20030272e+00 + 1.18601458e+00 1.17180988e+00 1.15768821e+00 1.14364913e+00 1.12969221e+00 + 1.11581703e+00 1.10202317e+00 1.08831021e+00 1.07467773e+00 1.06112531e+00 + 1.04765254e+00 1.03425901e+00 1.02094431e+00 1.00770803e+00 9.94549760e-01 + 9.81469105e-01 9.68465661e-01 9.55539027e-01 9.42688806e-01 9.29914602e-01 + 9.17216021e-01 9.04592672e-01 8.92044165e-01 8.79570112e-01 8.67170128e-01 + 8.54843828e-01 8.42590831e-01 8.30410756e-01 8.18303225e-01 8.06267861e-01 + 7.94304292e-01 7.82412143e-01 7.70591044e-01 7.58840626e-01 7.47160522e-01 + 7.35550368e-01 7.24009799e-01 7.12538455e-01 7.01135975e-01 6.89802001e-01 + 6.78536178e-01 6.67338150e-01 6.56207566e-01 6.45144075e-01 6.34147327e-01 + 6.23216975e-01 6.12352673e-01 6.01554078e-01 5.90820848e-01 5.80152642e-01 + 5.69549121e-01 5.59009948e-01 5.48534788e-01 5.38123307e-01 5.27775174e-01 + 5.17490057e-01 5.07267629e-01 4.97107561e-01 4.87009530e-01 4.76973210e-01 + 4.66998279e-01 4.57084418e-01 4.47231307e-01 4.37438629e-01 4.27706068e-01 + 4.18033309e-01 4.08420041e-01 3.98865952e-01 3.89370732e-01 3.79934074e-01 + 3.70555672e-01 3.61235220e-01 3.51972415e-01 3.42766955e-01 3.33618540e-01 + 3.24526871e-01 3.15491651e-01 3.06512584e-01 2.97589375e-01 2.88721732e-01 + 2.79909364e-01 2.71151979e-01 2.62449291e-01 2.53801012e-01 2.45206855e-01 + 2.36666538e-01 2.28179777e-01 2.19746291e-01 2.11365800e-01 2.03038026e-01 + 1.94762691e-01 1.86539519e-01 1.78368237e-01 1.70248571e-01 1.62180250e-01 + 1.54163003e-01 1.46196562e-01 1.38280659e-01 1.30415028e-01 1.22599404e-01 + 1.14833523e-01 1.07117123e-01 9.94499436e-02 9.18317249e-02 8.42622086e-02 + 7.67411378e-02 6.92682567e-02 6.18433109e-02 5.44660472e-02 4.71362139e-02 + 3.98535603e-02 3.26178371e-02 2.54287961e-02 1.82861905e-02 1.11897747e-02 + 4.13930434e-03 -2.86546373e-03 -9.82477145e-03 -1.67388595e-02 -2.36079675e-02 + -3.04323335e-02 -3.72121949e-02 -4.39477874e-02 -5.06393458e-02 -5.72871036e-02 + -6.38912932e-02 -7.04521458e-02 -7.69698915e-02 -8.34447591e-02 -8.98769763e-02 + -9.62667698e-02 -1.02614365e-01 -1.08919986e-01 -1.15183857e-01 -1.21406198e-01 + -1.27587232e-01 -1.33727178e-01 -1.39826254e-01 -1.45884679e-01 -1.51902669e-01 + -1.57880439e-01 -1.63818204e-01 -1.69716177e-01 -1.75574570e-01 -1.81393594e-01 + -1.87173460e-01 -1.92914376e-01 -1.98616551e-01 -2.04280191e-01 -2.09905502e-01 + -2.15492689e-01 -2.21041955e-01 -2.26553505e-01 -2.32027538e-01 -2.37464257e-01 + -2.42863861e-01 -2.48226548e-01 -2.53552516e-01 -2.58841962e-01 -2.64095082e-01 + -2.69312070e-01 -2.74493121e-01 -2.79638426e-01 -2.84748179e-01 -2.89822568e-01 + -2.94861786e-01 -2.99866020e-01 -3.04835458e-01 -3.09770287e-01 -3.14670694e-01 + -3.19536864e-01 -3.24368981e-01 -3.29167227e-01 -3.33931786e-01 -3.38662839e-01 + -3.43360567e-01 -3.48025148e-01 -3.52656762e-01 -3.57255587e-01 -3.61821799e-01 + -3.66355574e-01 -3.70857088e-01 -3.75326514e-01 -3.79764027e-01 -3.84169798e-01 + -3.88543999e-01 -3.92886801e-01 -3.97198374e-01 -4.01478887e-01 -4.05728507e-01 + -4.09947403e-01 -4.14135740e-01 -4.18293685e-01 -4.22421401e-01 -4.26519054e-01 + -4.30586805e-01 -4.34624818e-01 -4.38633254e-01 -4.42612274e-01 -4.46562036e-01 + -4.50482701e-01 -4.54374427e-01 -4.58237371e-01 -4.62071689e-01 -4.65877538e-01 + -4.69655072e-01 -4.73404446e-01 -4.77125814e-01 -4.80819327e-01 -4.84485138e-01 + -4.88123398e-01 -4.91734258e-01 -4.95317866e-01 -4.98874373e-01 -5.02403925e-01 + -5.05906671e-01 -5.09382757e-01 -5.12832329e-01 -5.16255532e-01 -5.19652510e-01 + -5.23023407e-01 -5.26368366e-01 -5.29687529e-01 -5.32981038e-01 -5.36249034e-01 + -5.39491656e-01 -5.42709043e-01 -5.45901336e-01 -5.49068670e-01 -5.52211184e-01 + -5.55329015e-01 -5.58422297e-01 -5.61491167e-01 -5.64535758e-01 -5.67556204e-01 + -5.70552639e-01 -5.73525195e-01 -5.76474004e-01 -5.79399196e-01 -5.82300903e-01 + -5.85179253e-01 -5.88034376e-01 -5.90866401e-01 -5.93675455e-01 -5.96461665e-01 + -5.99225158e-01 -6.01966060e-01 -6.04684495e-01 -6.07380589e-01 -6.10054465e-01 + -6.12706247e-01 -6.15336057e-01 -6.17944018e-01 -6.20530250e-01 -6.23094875e-01 + -6.25638012e-01 -6.28159782e-01 -6.30660303e-01 -6.33139693e-01 -6.35598071e-01 + -6.38035554e-01 -6.40452257e-01 -6.42848298e-01 -6.45223791e-01 -6.47578851e-01 + -6.49913592e-01 -6.52228129e-01 -6.54522573e-01 -6.56797038e-01 -6.59051635e-01 + -6.61286476e-01 -6.63501672e-01 -6.65697332e-01 -6.67873566e-01 -6.70030483e-01 + -6.72168192e-01 -6.74286801e-01 -6.76386416e-01 -6.78467146e-01 -6.80529096e-01 + -6.82572371e-01 -6.84597078e-01 -6.86603321e-01 -6.88591203e-01 -6.90560829e-01 + -6.92512302e-01 -6.94445723e-01 -6.96361196e-01 -6.98258822e-01 -7.00138701e-01 + -7.02000934e-01 -7.03845621e-01 -7.05672862e-01 -7.07482755e-01 -7.09275398e-01 + -7.11050891e-01 -7.12809329e-01 -7.14550810e-01 -7.16275431e-01 -7.17983287e-01 + -7.19674474e-01 -7.21349087e-01 -7.23007219e-01 -7.24648966e-01 -7.26274420e-01 + -7.27883675e-01 -7.29476822e-01 -7.31053955e-01 -7.32615164e-01 -7.34160541e-01 + -7.35690177e-01 -7.37204161e-01 -7.38702583e-01 -7.40185533e-01 -7.41653099e-01 + -7.43105369e-01 -7.44542432e-01 -7.45964375e-01 -7.47371285e-01 -7.48763248e-01 + -7.50140350e-01 -7.51502678e-01 -7.52850315e-01 -7.54183348e-01 -7.55501859e-01 + -7.56805934e-01 -7.58095656e-01 -7.59371107e-01 -7.60632370e-01 -7.61879527e-01 + -7.63112661e-01 -7.64331852e-01 -7.65537181e-01 -7.66728729e-01 -7.67906575e-01 + -7.69070800e-01 -7.70221483e-01 -7.71358701e-01 -7.72482535e-01 -7.73593062e-01 + -7.74690359e-01 -7.75774504e-01 -7.76845573e-01 -7.77903643e-01 -7.78948790e-01 + -7.79981089e-01 -7.81000616e-01 -7.82007445e-01 -7.83001652e-01 -7.83983309e-01 + -7.84952491e-01 -7.85909271e-01 -7.86853722e-01 -7.87785916e-01 -7.88705925e-01 + -7.89613822e-01 -7.90509678e-01 -7.91393563e-01 -7.92265549e-01 -7.93125705e-01 + -7.93974102e-01 -7.94810809e-01 -7.95635895e-01 -7.96449429e-01 -7.97251480e-01 + -7.98042116e-01 -7.98821405e-01 -7.99589413e-01 -8.00346208e-01 -8.01091857e-01 + -8.01826426e-01 -8.02549981e-01 -8.03262588e-01 -8.03964312e-01 -8.04655218e-01 + -8.05335370e-01 -8.06004834e-01 -8.06663672e-01 -8.07311949e-01 -8.07949728e-01 + -8.08577072e-01 -8.09194043e-01 -8.09800704e-01 -8.10397117e-01 -8.10983343e-01 + -8.11559444e-01 -8.12125480e-01 -8.12681513e-01 -8.13227603e-01 -8.13763809e-01 + -8.14290192e-01 -8.14806811e-01 -8.15313725e-01 -8.15810993e-01 -8.16298673e-01 + -8.16776824e-01 -8.17245503e-01 -8.17704767e-01 -8.18154675e-01 -8.18595283e-01 + -8.19026648e-01 -8.19448826e-01 -8.19861873e-01 -8.20265845e-01 -8.20660797e-01 + -8.21046784e-01 -8.21423862e-01 -8.21792085e-01 -8.22151507e-01 -8.22502182e-01 + -8.22844164e-01 -8.23177506e-01 -8.23502262e-01 -8.23818484e-01 -8.24126225e-01 + -8.24425537e-01 -8.24716472e-01 -8.24999082e-01 -8.25273418e-01 -8.25539531e-01 + -8.25797473e-01 -8.26047294e-01 -8.26289045e-01 -8.26522774e-01 -8.26748533e-01 + -8.26966371e-01 -8.27176336e-01 -8.27378479e-01 -8.27572848e-01 -8.27759490e-01 + -8.27938455e-01 -8.28109791e-01 -8.28273545e-01 -8.28429764e-01 -8.28578496e-01 + -8.28719788e-01 -8.28853686e-01 -8.28980236e-01 -8.29099486e-01 -8.29211480e-01 + -8.29316265e-01 -8.29413885e-01 -8.29504387e-01 -8.29587814e-01 -8.29664212e-01 + -8.29733626e-01 -8.29796098e-01 -8.29851673e-01 -8.29900395e-01 -8.29942307e-01 + -8.29977453e-01 -8.30005874e-01 -8.30027615e-01 -8.30042718e-01 -8.30051224e-01 + -8.30053177e-01 -8.30048616e-01 -8.30037585e-01 -8.30020125e-01 -8.29996276e-01 + -8.29966079e-01 -8.29929575e-01 -8.29886805e-01 -8.29837808e-01 -8.29782625e-01 + -8.29721295e-01 -8.29653858e-01 -8.29580352e-01 -8.29500818e-01 -8.29415294e-01 + -8.29323818e-01 -8.29226428e-01 -8.29123164e-01 -8.29014062e-01 -8.28899162e-01 + -8.28778499e-01 -8.28652111e-01 -8.28520036e-01 -8.28382311e-01 -8.28238971e-01 + -8.28090053e-01 -8.27935594e-01 -8.27775630e-01 -8.27610196e-01 -8.27439328e-01 + -8.27263061e-01 -8.27081431e-01 -8.26894472e-01 -8.26702219e-01 -8.26504707e-01 + -8.26301970e-01 -8.26094042e-01 -8.25880957e-01 -8.25662749e-01 -8.25439451e-01 + -8.25211097e-01 -8.24977719e-01 -8.24739351e-01 -8.24496025e-01 -8.24247774e-01 + -8.23994630e-01 -8.23736626e-01 -8.23473792e-01 -8.23206162e-01 -8.22933765e-01 + -8.22656635e-01 -8.22374801e-01 -8.22088295e-01 -8.21797147e-01 -8.21501388e-01 + -8.21201048e-01 -8.20896158e-01 -8.20586748e-01 -8.20272846e-01 -8.19954483e-01 + -8.19631689e-01 -8.19304491e-01 -8.18972920e-01 -8.18637004e-01 -8.18296771e-01 + -8.17952251e-01 -8.17603471e-01 -8.17250460e-01 -8.16893244e-01 -8.16531853e-01 + -8.16166313e-01 -8.15796652e-01 -8.15422896e-01 -8.15045073e-01 -8.14663210e-01 + -8.14277333e-01 -8.13887468e-01 -8.13493641e-01 -8.13095879e-01 -8.12694208e-01 + -8.12288652e-01 -8.11879238e-01 -8.11465990e-01 -8.11048934e-01 -8.10628095e-01 + -8.10203497e-01 -8.09775165e-01 -8.09343123e-01 -8.08907395e-01 -8.08468006e-01 + -8.08024978e-01 -8.07578336e-01 -8.07128104e-01 -8.06674303e-01 -8.06216958e-01 + -8.05756092e-01 -8.05291726e-01 -8.04823883e-01 -8.04352587e-01 -8.03877858e-01 + -8.03399719e-01 -8.02918192e-01 -8.02433298e-01 -8.01945059e-01 -8.01453496e-01 + -8.00958629e-01 -8.00460481e-01 -7.99959071e-01 -7.99454420e-01 -7.98946548e-01 + -7.98435475e-01 -7.97921223e-01 -7.97403809e-01 -7.96883254e-01 -7.96359577e-01 + -7.95832798e-01 -7.95302935e-01 -7.94770007e-01 -7.94234034e-01 -7.93695032e-01 + -7.93153022e-01 -7.92608020e-01 -7.92060045e-01 -7.91509115e-01 -7.90955247e-01 + -7.90398458e-01 -7.89838766e-01 -7.89276187e-01 -7.88710739e-01 -7.88142437e-01 + -7.87571300e-01 -7.86997342e-01 -7.86420579e-01 -7.85841029e-01 -7.85258705e-01 + -7.84673625e-01 -7.84085802e-01 -7.83495253e-01 -7.82901991e-01 -7.82306032e-01 + -7.81707391e-01 -7.81106081e-01 -7.80502117e-01 -7.79895513e-01 -7.79286281e-01 + -7.78674437e-01 -7.78059993e-01 -7.77442962e-01 -7.76823358e-01 -7.76201193e-01 + -7.75576479e-01 -7.74949229e-01 -7.74319455e-01 -7.73687169e-01 -7.73052383e-01 + -7.72415108e-01 -7.71775355e-01 -7.71133137e-01 -7.70488462e-01 -7.69841343e-01 + -7.69191789e-01 -7.68539812e-01 -7.67885420e-01 -7.67228624e-01 -7.66569433e-01 + -7.65907857e-01 -7.65243906e-01 -7.64577587e-01 -7.63908910e-01 -7.63237883e-01 + -7.62564514e-01 -7.61888813e-01 -7.61210785e-01 -7.60530440e-01 -7.59847785e-01 + -7.59162825e-01 -7.58475570e-01 -7.57786025e-01 -7.57094197e-01 -7.56400091e-01 + -7.55703715e-01 -7.55005074e-01 -7.54304173e-01 -7.53601018e-01 -7.52895613e-01 + -7.52187964e-01 -7.51478075e-01 -7.50765950e-01 -7.50051594e-01 -7.49335009e-01 + -7.48616201e-01 -7.47895172e-01 -7.47171925e-01 -7.46446463e-01 -7.45718788e-01 + -7.44988903e-01 -7.44256810e-01 -7.43522510e-01 -7.42786005e-01 -7.42047296e-01 + -7.41306385e-01 -7.40563271e-01 -7.39817955e-01 -7.39070437e-01 -7.38320717e-01 + -7.37568795e-01 -7.36814670e-01 -7.36058340e-01 -7.35299805e-01 -7.34539063e-01 + -7.33776111e-01 -7.33010948e-01 -7.32243571e-01 -7.31473978e-01 -7.30702165e-01 + -7.29928129e-01 -7.29151865e-01 -7.28373371e-01 -7.27592642e-01 -7.26809672e-01 + -7.26024458e-01 -7.25236993e-01 -7.24447272e-01 -7.23655289e-01 -7.22861038e-01 + -7.22064513e-01 -7.21265705e-01 -7.20464608e-01 -7.19661214e-01 -7.18855516e-01 + -7.18047504e-01 -7.17237171e-01 -7.16424507e-01 -7.15609502e-01 -7.14792147e-01 + -7.13972432e-01 -7.13150346e-01 -7.12325879e-01 -7.11499018e-01 -7.10669753e-01 + -7.09838072e-01 -7.09003962e-01 -7.08167410e-01 -7.07328403e-01 -7.06486927e-01 + -7.05642970e-01 -7.04796515e-01 -7.03947549e-01 -7.03096056e-01 -7.02242021e-01 + -7.01385428e-01 -7.00526259e-01 -6.99664500e-01 -6.98800131e-01 -6.97933136e-01 + -6.97063496e-01 -6.96191192e-01 -6.95316207e-01 -6.94438519e-01 -6.93558110e-01 + -6.92674959e-01 -6.91789044e-01 -6.90900346e-01 -6.90008841e-01 -6.89114509e-01 + -6.88217325e-01 -6.87317267e-01 -6.86414312e-01 -6.85508434e-01 -6.84599610e-01 + -6.83687814e-01 -6.82773021e-01 -6.81855205e-01 -6.80934338e-01 -6.80010394e-01 + -6.79083345e-01 -6.78153163e-01 -6.77219819e-01 -6.76283284e-01 -6.75343528e-01 + -6.74400521e-01 -6.73454232e-01 -6.72504629e-01 -6.71551681e-01 -6.70595355e-01 + -6.69635618e-01 -6.68672437e-01 -6.67705776e-01 -6.66735602e-01 -6.65761880e-01 + -6.64784572e-01 -6.63803643e-01 -6.62819056e-01 -6.61830772e-01 -6.60838754e-01 + -6.59842963e-01 -6.58843360e-01 -6.57839903e-01 -6.56832553e-01 -6.55821268e-01 + -6.54806006e-01 -6.53786725e-01 -6.52763382e-01 -6.51735932e-01 -6.50704331e-01 + -6.49668534e-01 -6.48628496e-01 -6.47584169e-01 -6.46535507e-01 -6.45482463e-01 + -6.44424987e-01 -6.43363031e-01 -6.42296546e-01 -6.41225480e-01 -6.40149782e-01 + -6.39069402e-01 -6.37984286e-01 -6.36894382e-01 -6.35799636e-01 -6.34699994e-01 + -6.33595399e-01 -6.32485797e-01 -6.31371131e-01 -6.30251345e-01 -6.29126378e-01 + -6.27996175e-01 -6.26860674e-01 -6.25719817e-01 -6.24573542e-01 -6.23421788e-01 + -6.22264492e-01 -6.21101593e-01 -6.19933027e-01 -6.18758729e-01 -6.17578634e-01 + -6.16392677e-01 -6.15200791e-01 -6.14002910e-01 -6.12798966e-01 -6.11588889e-01 + -6.10372612e-01 -6.09150063e-01 -6.07921173e-01 -6.06685870e-01 -6.05444083e-01 + -6.04195738e-01 -6.02940762e-01 -6.01679081e-01 -6.00410620e-01 -5.99135305e-01 + -5.97853058e-01 -5.96563803e-01 -5.95267462e-01 -5.93963958e-01 -5.92653212e-01 + -5.91335143e-01 -5.90009673e-01 -5.88676720e-01 -5.87336202e-01 -5.85988039e-01 + -5.84632147e-01 -5.83268443e-01 -5.81896843e-01 -5.80517264e-01 -5.79129619e-01 + -5.77733823e-01 -5.76329791e-01 -5.74917434e-01 -5.73496668e-01 -5.72067402e-01 + -5.70629551e-01 -5.69183023e-01 -5.67727731e-01 -5.66263585e-01 -5.64790494e-01 + -5.63308368e-01 -5.61817116e-01 -5.60316647e-01 -5.58806868e-01 -5.57287689e-01 + -5.55759015e-01 -5.54220755e-01 -5.52672816e-01 -5.51115104e-01 -5.49547525e-01 + -5.47969986e-01 -5.46382393e-01 -5.44784651e-01 -5.43176667e-01 -5.41558346e-01 + -5.39929592e-01 -5.38290313e-01 -5.36640412e-01 -5.34979796e-01 -5.33308370e-01 + -5.31626039e-01 -5.29932710e-01 -5.28228287e-01 -5.26512676e-01 -5.24785785e-01 + -5.23047519e-01 -5.21297785e-01 -5.19536490e-01 -5.17763541e-01 -5.15978846e-01 + -5.14182315e-01 -5.12373854e-01 -5.10553375e-01 -5.08720787e-01 -5.06876000e-01 + -5.05018926e-01 -5.03149478e-01 -5.01267568e-01 -4.99373110e-01 -4.97466019e-01 + -4.95546212e-01 -4.93613604e-01 -4.91668114e-01 -4.89709661e-01 -4.87738166e-01 + -4.85753551e-01 -4.83755738e-01 -4.81744652e-01 -4.79720220e-01 -4.77682369e-01 + -4.75631029e-01 -4.73566131e-01 -4.71487607e-01 -4.69395393e-01 -4.67289426e-01 + -4.65169644e-01 -4.63035989e-01 -4.60888403e-01 -4.58726833e-01 -4.56551227e-01 + -4.54361534e-01 -4.52157709e-01 -4.49939707e-01 -4.47707486e-01 -4.45461007e-01 + -4.43200236e-01 -4.40925140e-01 -4.38635688e-01 -4.36331855e-01 -4.34013618e-01 + -4.31680958e-01 -4.29333858e-01 -4.26972307e-01 -4.24596297e-01 -4.22205821e-01 + -4.19800882e-01 -4.17381480e-01 -4.14947626e-01 -4.12499330e-01 -4.10036609e-01 + -4.07559485e-01 -4.05067983e-01 -4.02562134e-01 -4.00041973e-01 -3.97507541e-01 + -3.94958883e-01 -3.92396051e-01 -3.89819100e-01 -3.87228093e-01 -3.84623096e-01 + -3.82004184e-01 -3.79371434e-01 -3.76724932e-01 -3.74064769e-01 -3.71391042e-01 + -3.68703855e-01 -3.66003318e-01 -3.63289546e-01 -3.60562665e-01 -3.57822803e-01 + -3.55070098e-01 -3.52304693e-01 -3.49526740e-01 -3.46736396e-01 -3.43933829e-01 + -3.41119210e-01 -3.38292721e-01 -3.35454550e-01 -3.32604893e-01 -3.29743954e-01 + -3.26871944e-01 -3.23989085e-01 -3.21095603e-01 -3.18191736e-01 -3.15277727e-01 + -3.12353830e-01 -3.09420306e-01 -3.06477424e-01 -3.03525464e-01 -3.00564711e-01 + -2.97595463e-01 -2.94618022e-01 -2.91632703e-01 -2.88639827e-01 -2.85639725e-01 + -2.82632736e-01 -2.79619209e-01 -2.76599501e-01 -2.73573978e-01 -2.70543015e-01 + -2.67506995e-01 -2.64466312e-01 -2.61421367e-01 -2.58372570e-01 -2.55320339e-01 + -2.52265102e-01 -2.49207296e-01 -2.46147364e-01 -2.43085759e-01 -2.40022943e-01 + -2.36959385e-01 -2.33895563e-01 -2.30831961e-01 -2.27769074e-01 -2.24707401e-01 + -2.21647452e-01 -2.18589741e-01 -2.15534793e-01 -2.12483136e-01 -2.09435307e-01 + -2.06391849e-01 -2.03353312e-01 -2.00320250e-01 -1.97293224e-01 -1.94272801e-01 + -1.91259553e-01 -1.88254056e-01 -1.85256891e-01 -1.82268644e-01 -1.79289904e-01 + -1.76321263e-01 -1.73363318e-01 -1.70416668e-01 -1.67481913e-01 -1.64559658e-01 + -1.61650506e-01 -1.58755065e-01 -1.55873940e-01 -1.53007739e-01 -1.50157068e-01 + -1.47322535e-01 -1.44504743e-01 -1.41704297e-01 -1.38921798e-01 -1.36157844e-01 + -1.33413031e-01 -1.30687950e-01 -1.27983190e-01 -1.25299332e-01 -1.22636955e-01 + -1.19996629e-01 -1.17378920e-01 -1.14784386e-01 -1.12213577e-01 -1.09667035e-01 + -1.07145293e-01 -1.04648876e-01 -1.02178298e-01 -9.97340616e-02 -9.73166605e-02 + -9.49265751e-02 -9.25642743e-02 -9.02302138e-02 -8.79248363e-02 -8.56485705e-02 + -8.34018305e-02 -8.11850158e-02 -7.89985101e-02 -7.68426811e-02 -7.47178803e-02 + -7.26244420e-02 -7.05626829e-02 -6.85329022e-02 -6.65353805e-02 -6.45703797e-02 + -6.26381426e-02 -6.07388924e-02 -5.88728324e-02 -5.70401460e-02 -5.52409958e-02 + -5.34755237e-02 -5.17438507e-02 -5.00460763e-02 -4.83822789e-02 -4.67525150e-02 + -4.51568196e-02 -4.35952056e-02 -4.20676644e-02 -4.05741649e-02 -3.91146547e-02 + -3.76890589e-02 -3.62972811e-02 -3.49392031e-02 -3.36146850e-02 -3.23235655e-02 + -3.10656621e-02 -2.98407714e-02 -2.86486689e-02 -2.74891102e-02 -2.63618306e-02 + -2.52665456e-02 -2.42029516e-02 -2.31707262e-02 -2.21695287e-02 -2.11990004e-02 + -2.02587655e-02 -1.93484316e-02 -1.84675899e-02 -1.76158165e-02 -1.67926724e-02 + -1.59977047e-02 -1.52304470e-02 -1.44904203e-02 -1.37771336e-02 -1.30900849e-02 + -1.24287617e-02 -1.17926418e-02 -1.11811947e-02 -1.05938815e-02 -1.00301566e-02 + -9.48946778e-03 -8.97125774e-03 -8.47496447e-03 -8.00002229e-03 -7.54586267e-03 + -7.11191505e-03 -6.69760771e-03 -6.30236856e-03 -5.92562598e-03 -5.56680964e-03 + -5.22535124e-03 -4.90068533e-03 -4.59225004e-03 -4.29948781e-03 -4.02184611e-03 + -3.75877813e-03 -3.50974341e-03 -3.27420852e-03 -3.05164762e-03 -2.84154304e-03 + -2.64338584e-03 -2.45667632e-03 -2.28092446e-03 -2.11565039e-03 -1.96038480e-03 + -1.81466930e-03 -1.67805673e-03 -1.55011152e-03 -1.43040988e-03 -1.31854010e-03 + -1.21410266e-03 -1.11671047e-03 -1.02598891e-03 -9.41575982e-04 -8.63122311e-04 + -7.90291195e-04 -7.22758579e-04 -6.60213014e-04 -6.02355579e-04 -5.48899783e-04 + -4.99571436e-04 -4.54108489e-04 -4.12260857e-04 -3.73790220e-04 -3.38469796e-04 + -3.06084100e-04 -2.76428684e-04 -2.49309860e-04 -2.24544412e-04 -2.01959290e-04 + -1.81391298e-04 -1.62686771e-04 -1.45701242e-04 -1.30299105e-04 -1.16353279e-04 + -1.03744855e-04 -9.23627580e-05 -8.21033971e-05 -7.28703214e-05 -6.45738783e-05 + -5.71308746e-05 -5.04642428e-05 -4.45027130e-05 -3.91804914e-05 -3.44369461e-05 + -3.02163020e-05 -2.64673434e-05 -2.31431269e-05 -2.02007038e-05 -1.76008533e-05 + -1.53078260e-05 -1.32890983e-05 -1.15151383e-05 -9.95918234e-06 -8.59702333e-06 + -7.40680967e-06 -6.36885574e-06 -5.46546311e-06 -4.68075258e-06 -4.00050669e-06 + -3.41202254e-06 -2.90397453e-06 -2.46628666e-06 -2.09001414e-06 -1.76723382e-06 + -1.49094306e-06 -1.25496673e-06 -1.05387178e-06 -8.82889028e-07 -7.37841824e-07 + -6.15081008e-07 -5.11425893e-07 -4.24110800e-07 -3.50736768e-07 -2.89228062e-07 + -2.37793102e-07 -1.94889468e-07 -1.59192641e-07 -1.29568160e-07 -1.05046889e-07 + -8.48031182e-08 -6.81352185e-08 -5.44486135e-08 -4.32408265e-08 -3.40883923e-08 + -2.66354353e-08 -2.05837314e-08 -1.56840870e-08 -1.17288835e-08 -8.54565102e-09 + -5.99154433e-09 -3.94861124e-09 -2.31975185e-09 -1.02527898e-09 0.00000000e+00 + 7.26720922e+00 7.26720922e+00 7.26720922e+00 7.26720922e+00 7.26720922e+00 + 7.26720922e+00 7.26720922e+00 7.26720922e+00 7.26720922e+00 7.26720922e+00 + 7.26720922e+00 7.26720922e+00 7.26720922e+00 7.26720922e+00 7.26720922e+00 + 7.26720922e+00 7.26720922e+00 7.26720922e+00 7.26720922e+00 7.26720922e+00 + 7.26720922e+00 7.26720922e+00 7.26720922e+00 7.26720922e+00 7.26720922e+00 + 7.26720922e+00 7.26720922e+00 7.26720922e+00 7.26720922e+00 7.26720922e+00 + 7.26720922e+00 7.26720922e+00 7.26720922e+00 7.26720922e+00 7.26720922e+00 + 7.26720922e+00 7.26720922e+00 7.26720922e+00 7.26720922e+00 7.26720922e+00 + 7.26720922e+00 7.26720922e+00 7.26720922e+00 7.26720922e+00 7.26720922e+00 + 7.26720922e+00 7.26720922e+00 7.26547462e+00 7.25551627e+00 7.24557157e+00 + 7.23564051e+00 7.22572305e+00 7.21581919e+00 7.20592890e+00 7.19605217e+00 + 7.18618898e+00 7.17633930e+00 7.16650313e+00 7.15668044e+00 7.14687121e+00 + 7.13707542e+00 7.12729307e+00 7.11752412e+00 7.10776856e+00 7.09802637e+00 + 7.08829753e+00 7.07858203e+00 7.06887985e+00 7.05919096e+00 7.04951536e+00 + 7.03985301e+00 7.03020391e+00 7.02056804e+00 7.01094537e+00 7.00133589e+00 + 6.99173958e+00 6.98215643e+00 6.97258641e+00 6.96302950e+00 6.95348570e+00 + 6.94395498e+00 6.93443732e+00 6.92493271e+00 6.91544112e+00 6.90596254e+00 + 6.89649696e+00 6.88704435e+00 6.87760469e+00 6.86817797e+00 6.85876418e+00 + 6.84936328e+00 6.83997528e+00 6.83060014e+00 6.82123785e+00 6.81188839e+00 + 6.80255174e+00 6.79322790e+00 6.78391683e+00 6.77461853e+00 6.76533297e+00 + 6.75606013e+00 6.74680001e+00 6.73755258e+00 6.72831782e+00 6.71909573e+00 + 6.70988627e+00 6.70068943e+00 6.69150520e+00 6.68233356e+00 6.67317449e+00 + 6.66402797e+00 6.65489399e+00 6.64577253e+00 6.63666357e+00 6.62756710e+00 + 6.61848310e+00 6.60941154e+00 6.60035242e+00 6.59130572e+00 6.58227141e+00 + 6.57324949e+00 6.56423994e+00 6.55524273e+00 6.54625785e+00 6.53728530e+00 + 6.52832503e+00 6.51937705e+00 6.51044134e+00 6.50151787e+00 6.49260663e+00 + 6.48370761e+00 6.47482078e+00 6.46594614e+00 6.45708366e+00 6.44823332e+00 + 6.43939512e+00 6.43056903e+00 6.42175504e+00 6.41295313e+00 6.40416328e+00 + 6.39538548e+00 6.38661971e+00 6.37786596e+00 6.36912420e+00 6.36039443e+00 + 6.35167662e+00 6.34297076e+00 6.33427684e+00 6.32559483e+00 6.31692472e+00 + 6.30826649e+00 6.29962013e+00 6.29098562e+00 6.28236295e+00 6.27375209e+00 + 6.26515304e+00 6.25656577e+00 6.24799028e+00 6.23942654e+00 6.23087453e+00 + 6.22233425e+00 6.21380567e+00 6.20528878e+00 6.19678357e+00 6.18829001e+00 + 6.17980810e+00 6.17133781e+00 6.16287913e+00 6.15443204e+00 6.14599654e+00 + 6.13757259e+00 6.12916019e+00 6.12075932e+00 6.11236997e+00 6.10399211e+00 + 6.09562574e+00 6.08727083e+00 6.07892738e+00 6.07059536e+00 6.06227476e+00 + 6.05396557e+00 6.04566776e+00 6.03738133e+00 6.02910626e+00 6.02084253e+00 + 6.01259012e+00 6.00434903e+00 5.99611923e+00 5.98790071e+00 5.97969346e+00 + 5.97149746e+00 5.96331269e+00 5.95513913e+00 5.94697679e+00 5.93882562e+00 + 5.93068563e+00 5.92255680e+00 5.91443911e+00 5.90633255e+00 5.89823710e+00 + 5.89015274e+00 5.88207946e+00 5.87401725e+00 5.86596609e+00 5.85792597e+00 + 5.84989686e+00 5.84187876e+00 5.83387165e+00 5.82587552e+00 5.81789034e+00 + 5.80991611e+00 5.80195281e+00 5.79400043e+00 5.78605894e+00 5.77812834e+00 + 5.77020861e+00 5.76229973e+00 5.75440170e+00 5.74651449e+00 5.73863809e+00 + 5.73077248e+00 5.72291766e+00 5.71507360e+00 5.70724030e+00 5.69941773e+00 + 5.69160588e+00 5.68380474e+00 5.67601429e+00 5.66823452e+00 5.66046542e+00 + 5.65270696e+00 5.64495913e+00 5.63722193e+00 5.62949533e+00 5.62177932e+00 + 5.61407389e+00 5.60637902e+00 5.59869469e+00 5.59102090e+00 5.58335763e+00 + 5.57570486e+00 5.56806258e+00 5.56043077e+00 5.55280942e+00 5.54519852e+00 + 5.53759805e+00 5.53000800e+00 5.52242836e+00 5.51485910e+00 5.50730021e+00 + 5.49975169e+00 5.49221351e+00 5.48468567e+00 5.47716814e+00 5.46966092e+00 + 5.46216398e+00 5.45467733e+00 5.44720093e+00 5.43973478e+00 5.43227887e+00 + 5.42483317e+00 5.41739768e+00 5.40997238e+00 5.40255726e+00 5.39515230e+00 + 5.38775749e+00 5.38037282e+00 5.37299827e+00 5.36563382e+00 5.35827947e+00 + 5.35093520e+00 5.34360100e+00 5.33627685e+00 5.32896274e+00 5.32165865e+00 + 5.31436457e+00 5.30708050e+00 5.29980640e+00 5.29254228e+00 5.28528811e+00 + 5.27804389e+00 5.27080959e+00 5.26358521e+00 5.25637073e+00 5.24916614e+00 + 5.24197143e+00 5.23478657e+00 5.22761157e+00 5.22044640e+00 5.21329105e+00 + 5.20614551e+00 5.19900976e+00 5.19188379e+00 5.18476759e+00 5.17766114e+00 + 5.17056443e+00 5.16347745e+00 5.15640019e+00 5.14933262e+00 5.14227474e+00 + 5.13522654e+00 5.12818799e+00 5.12115910e+00 5.11413983e+00 5.10713019e+00 + 5.10013016e+00 5.09313972e+00 5.08615886e+00 5.07918757e+00 5.07222583e+00 + 5.06527364e+00 5.05833097e+00 5.05139783e+00 5.04447418e+00 5.03756002e+00 + 5.03065535e+00 5.02376013e+00 5.01687437e+00 5.00999804e+00 5.00313114e+00 + 4.99627365e+00 4.98942556e+00 4.98258686e+00 4.97575753e+00 4.96893756e+00 + 4.96212693e+00 4.95532565e+00 4.94853368e+00 4.94175103e+00 4.93497767e+00 + 4.92821359e+00 4.92145879e+00 4.91471324e+00 4.90797694e+00 4.90124987e+00 + 4.89453203e+00 4.88782339e+00 4.88112394e+00 4.87443368e+00 4.86775259e+00 + 4.86108066e+00 4.85441787e+00 4.84776421e+00 4.84111967e+00 4.83448424e+00 + 4.82785791e+00 4.82124066e+00 4.81463247e+00 4.80803335e+00 4.80144327e+00 + 4.79486222e+00 4.78829019e+00 4.78172717e+00 4.77517315e+00 4.76862811e+00 + 4.76209204e+00 4.75556492e+00 4.74904676e+00 4.74253753e+00 4.73603722e+00 + 4.72954582e+00 4.72306332e+00 4.71658970e+00 4.71012495e+00 4.70366907e+00 + 4.69722204e+00 4.69078384e+00 4.68435446e+00 4.67793390e+00 4.67152214e+00 + 4.66511917e+00 4.65872497e+00 4.65233954e+00 4.64596286e+00 4.63959492e+00 + 4.63323571e+00 4.62688521e+00 4.62054342e+00 4.61421032e+00 4.60788590e+00 + 4.60157015e+00 4.59526306e+00 4.58896461e+00 4.58267479e+00 4.57639360e+00 + 4.57012101e+00 4.56385702e+00 4.55760162e+00 4.55135479e+00 4.54511652e+00 + 4.53888681e+00 4.53266563e+00 4.52645298e+00 4.52024884e+00 4.51405321e+00 + 4.50786607e+00 4.50168741e+00 4.49551722e+00 4.48935549e+00 4.48320220e+00 + 4.47705735e+00 4.47092091e+00 4.46479289e+00 4.45867327e+00 4.45256204e+00 + 4.44645918e+00 4.44036469e+00 4.43427855e+00 4.42820075e+00 4.42213128e+00 + 4.41607014e+00 4.41001730e+00 4.40397275e+00 4.39793649e+00 4.39190851e+00 + 4.38588878e+00 4.37987731e+00 4.37387408e+00 4.36787907e+00 4.36189229e+00 + 4.35591370e+00 4.34994332e+00 4.34398111e+00 4.33802708e+00 4.33208121e+00 + 4.32614349e+00 4.32021390e+00 4.31429245e+00 4.30837911e+00 4.30247387e+00 + 4.29657673e+00 4.29068768e+00 4.28480669e+00 4.27893376e+00 4.27306889e+00 + 4.26721205e+00 4.26136324e+00 4.25552245e+00 4.24968966e+00 4.24386487e+00 + 4.23804806e+00 4.23223922e+00 4.22643835e+00 4.22064543e+00 4.21486044e+00 + 4.20908339e+00 4.20331425e+00 4.19755302e+00 4.19179969e+00 4.18605425e+00 + 4.18031667e+00 4.17458697e+00 4.16886511e+00 4.16315110e+00 4.15744492e+00 + 4.15174656e+00 4.14605602e+00 4.14037327e+00 4.13469831e+00 4.12903113e+00 + 4.12337171e+00 4.11772006e+00 4.11207615e+00 4.10643997e+00 4.10081153e+00 + 4.09519079e+00 4.08957776e+00 4.08397242e+00 4.07837477e+00 4.07278479e+00 + 4.06720247e+00 4.06162780e+00 4.05606077e+00 4.05050137e+00 4.04494960e+00 + 4.03940543e+00 4.03386886e+00 4.02833988e+00 4.02281848e+00 4.01730465e+00 + 4.01179837e+00 4.00629964e+00 4.00080845e+00 3.99532478e+00 3.98984863e+00 + 3.98437999e+00 3.97891884e+00 3.97346517e+00 3.96801899e+00 3.96258026e+00 + 3.95714899e+00 3.95172517e+00 3.94630878e+00 3.94089981e+00 3.93549826e+00 + 3.93010411e+00 3.92471735e+00 3.91933798e+00 3.91396598e+00 3.90860134e+00 + 3.90324406e+00 3.89789412e+00 3.89255151e+00 3.88721623e+00 3.88188825e+00 + 3.87656759e+00 3.87125421e+00 3.86594811e+00 3.86064929e+00 3.85535773e+00 + 3.85007343e+00 3.84479637e+00 3.83952654e+00 3.83426393e+00 3.82900854e+00 + 3.82376035e+00 3.81851935e+00 3.81328554e+00 3.80805890e+00 3.80283942e+00 + 3.79762710e+00 3.79242192e+00 3.78722388e+00 3.78203296e+00 3.77684915e+00 + 3.77167245e+00 3.76650285e+00 3.76134033e+00 3.75618489e+00 3.75103652e+00 + 3.74589520e+00 3.74076093e+00 3.73563369e+00 3.73051348e+00 3.72540029e+00 + 3.72029411e+00 3.71519493e+00 3.71010274e+00 3.70501753e+00 3.69993928e+00 + 3.69486800e+00 3.68980367e+00 3.68474628e+00 3.67969582e+00 3.67465228e+00 + 3.66961566e+00 3.66458594e+00 3.65956311e+00 3.65454717e+00 3.64953810e+00 + 3.64453590e+00 3.63954056e+00 3.63455206e+00 3.62957040e+00 3.62459556e+00 + 3.61962755e+00 3.61466635e+00 3.60971194e+00 3.60476433e+00 3.59982349e+00 + 3.59488943e+00 3.58996214e+00 3.58504159e+00 3.58012779e+00 3.57522073e+00 + 3.57032039e+00 3.56542677e+00 3.56053985e+00 3.55565964e+00 3.55078611e+00 + 3.54591926e+00 3.54105908e+00 3.53620557e+00 3.53135871e+00 3.52651849e+00 + 3.52168490e+00 3.51685794e+00 3.51203759e+00 3.50722386e+00 3.50241672e+00 + 3.49761617e+00 3.49282220e+00 3.48803480e+00 3.48325396e+00 3.47847967e+00 + 3.47371193e+00 3.46895072e+00 3.46419604e+00 3.45944788e+00 3.45470622e+00 + 3.44997107e+00 3.44524240e+00 3.44052021e+00 3.43580450e+00 3.43109525e+00 + 3.42639246e+00 3.42169611e+00 3.41700620e+00 3.41232271e+00 3.40764565e+00 + 3.40297499e+00 3.39831074e+00 3.39365288e+00 3.38900141e+00 3.38435631e+00 + 3.37971758e+00 3.37508520e+00 3.37045918e+00 3.36583949e+00 3.36122614e+00 + 3.35661911e+00 3.35201840e+00 3.34742399e+00 3.34283587e+00 3.33825405e+00 + 3.33367851e+00 3.32910924e+00 3.32454623e+00 3.31998947e+00 3.31543897e+00 + 3.31089469e+00 3.30635665e+00 3.30182483e+00 3.29729922e+00 3.29277981e+00 + 3.28826659e+00 3.28375956e+00 3.27925871e+00 3.27476403e+00 3.27027551e+00 + 3.26579314e+00 3.26131692e+00 3.25684683e+00 3.25238286e+00 3.24792502e+00 + 3.24347329e+00 3.23902765e+00 3.23458811e+00 3.23015466e+00 3.22572728e+00 + 3.22130597e+00 3.21689072e+00 3.21248153e+00 3.20807837e+00 3.20368125e+00 + 3.19929016e+00 3.19490509e+00 3.19052602e+00 3.18615296e+00 3.18178590e+00 + 3.17742481e+00 3.17306971e+00 3.16872058e+00 3.16437740e+00 3.16004018e+00 + 3.15570891e+00 3.15138357e+00 3.14706416e+00 3.14275066e+00 3.13844309e+00 + 3.13414141e+00 3.12984563e+00 3.12555574e+00 3.12127173e+00 3.11699360e+00 + 3.11272132e+00 3.10845490e+00 3.10419433e+00 3.09993960e+00 3.09569070e+00 + 3.09144762e+00 3.08721036e+00 3.08297891e+00 3.07875326e+00 3.07453340e+00 + 3.07031932e+00 3.06611102e+00 3.06190849e+00 3.05771171e+00 3.05352069e+00 + 3.04933542e+00 3.04515588e+00 3.04098207e+00 3.03681398e+00 3.03265160e+00 + 3.02849493e+00 3.02434395e+00 3.02019867e+00 3.01605906e+00 3.01192513e+00 + 3.00779687e+00 3.00367426e+00 2.99955731e+00 2.99544600e+00 2.99134032e+00 + 2.98724027e+00 2.98314584e+00 2.97905702e+00 2.97497381e+00 2.97089619e+00 + 2.96682417e+00 2.96275772e+00 2.95869685e+00 2.95464154e+00 2.95059179e+00 + 2.94654759e+00 2.94250894e+00 2.93847582e+00 2.93444823e+00 2.93042616e+00 + 2.92640960e+00 2.92239855e+00 2.91839299e+00 2.91439293e+00 2.91039835e+00 + 2.90640924e+00 2.90242560e+00 2.89844742e+00 2.89447469e+00 2.89050741e+00 + 2.88654557e+00 2.88258916e+00 2.87863817e+00 2.87469259e+00 2.87075242e+00 + 2.86681766e+00 2.86288828e+00 2.85896429e+00 2.85504569e+00 2.85113245e+00 + 2.84722457e+00 2.84332205e+00 2.83942488e+00 2.83553306e+00 2.83164656e+00 + 2.82776540e+00 2.82388955e+00 2.82001901e+00 2.81615378e+00 2.81229385e+00 + 2.80843921e+00 2.80458985e+00 2.80074577e+00 2.79690696e+00 2.79307341e+00 + 2.78924511e+00 2.78542206e+00 2.78160425e+00 2.77779168e+00 2.77398432e+00 + 2.77018219e+00 2.76638527e+00 2.76259355e+00 2.75880703e+00 2.75502570e+00 + 2.75124956e+00 2.74747859e+00 2.74371278e+00 2.73995214e+00 2.73619666e+00 + 2.73244632e+00 2.72870112e+00 2.72496105e+00 2.72122611e+00 2.71749629e+00 + 2.71377158e+00 2.71005198e+00 2.70633748e+00 2.70262806e+00 2.69892374e+00 + 2.69522448e+00 2.69153030e+00 2.68784118e+00 2.68415712e+00 2.68047811e+00 + 2.67680414e+00 2.67313521e+00 2.66947130e+00 2.66581242e+00 2.66215855e+00 + 2.65850969e+00 2.65486584e+00 2.65122697e+00 2.64759309e+00 2.64396420e+00 + 2.64034028e+00 2.63672132e+00 2.63310733e+00 2.62949829e+00 2.62589419e+00 + 2.62229504e+00 2.61870082e+00 2.61511152e+00 2.61152715e+00 2.60794768e+00 + 2.60437313e+00 2.60080347e+00 2.59723871e+00 2.59367883e+00 2.59012383e+00 + 2.58657371e+00 2.58302845e+00 2.57948804e+00 2.57595250e+00 2.57242179e+00 + 2.56889593e+00 2.56537490e+00 2.56185870e+00 2.55834731e+00 2.55484074e+00 + 2.55133897e+00 2.54784201e+00 2.54434983e+00 2.54086245e+00 2.53737984e+00 + 2.53390201e+00 2.53042894e+00 2.52696064e+00 2.52349708e+00 2.52003828e+00 + 2.51658422e+00 2.51313489e+00 2.50969028e+00 2.50625040e+00 2.50281524e+00 + 2.49938478e+00 2.49595902e+00 2.49253796e+00 2.48912159e+00 2.48570990e+00 + 2.48230289e+00 2.47890055e+00 2.47550287e+00 2.47210985e+00 2.46872148e+00 + 2.46533775e+00 2.46195866e+00 2.45858420e+00 2.45521437e+00 2.45184916e+00 + 2.44848856e+00 2.44513256e+00 2.44178116e+00 2.43843436e+00 2.43509215e+00 + 2.43175451e+00 2.42842146e+00 2.42509297e+00 2.42176904e+00 2.41844967e+00 + 2.41513484e+00 2.41182456e+00 2.40851882e+00 2.40521761e+00 2.40192092e+00 + 2.39862876e+00 2.39534110e+00 2.39205795e+00 2.38877930e+00 2.38550515e+00 + 2.38223548e+00 2.37897029e+00 2.37570958e+00 2.37245334e+00 2.36920156e+00 + 2.36595424e+00 2.36271137e+00 2.35947295e+00 2.35623896e+00 2.35300940e+00 + 2.34978428e+00 2.34656357e+00 2.34334728e+00 2.34013539e+00 2.33692791e+00 + 2.33372482e+00 2.33052613e+00 2.32733182e+00 2.32414188e+00 2.32095632e+00 + 2.31777513e+00 2.31459830e+00 2.31142582e+00 2.30825768e+00 2.30509389e+00 + 2.30193444e+00 2.29877932e+00 2.29562852e+00 2.29248204e+00 2.28933988e+00 + 2.28620202e+00 2.28306846e+00 2.27993919e+00 2.27681422e+00 2.27369353e+00 + 2.27057711e+00 2.26746497e+00 2.26435709e+00 2.26125348e+00 2.25815411e+00 + 2.25505900e+00 2.25196812e+00 2.24888149e+00 2.24579908e+00 2.24272090e+00 + 2.23964694e+00 2.23657719e+00 2.23351165e+00 2.23045031e+00 2.22739317e+00 + 2.22434021e+00 2.22129145e+00 2.21824686e+00 2.21520644e+00 2.21217019e+00 + 2.20913810e+00 2.20611017e+00 2.20308639e+00 2.20006675e+00 2.19705125e+00 + 2.19403989e+00 2.19103265e+00 2.18802953e+00 2.18503053e+00 2.18203564e+00 + 2.17904486e+00 2.17605817e+00 2.17307558e+00 2.17009708e+00 2.16712266e+00 + 2.16415232e+00 2.16118604e+00 2.15822384e+00 2.15526569e+00 2.15231160e+00 + 2.14936155e+00 2.14641555e+00 2.14347359e+00 2.14053566e+00 2.13760176e+00 + 2.13467188e+00 2.13174601e+00 2.12882416e+00 2.12590631e+00 2.12299245e+00 + 2.12008260e+00 2.11717673e+00 2.11427484e+00 2.11137693e+00 2.10848300e+00 + 2.10559303e+00 2.10270702e+00 2.09982496e+00 2.09694686e+00 2.09407270e+00 + 2.09120248e+00 2.08833620e+00 2.08547384e+00 2.08261541e+00 2.07976090e+00 + 2.07691029e+00 2.07406360e+00 2.07122080e+00 2.06838191e+00 2.06554690e+00 + 2.06271578e+00 2.05988854e+00 2.05706518e+00 2.05424568e+00 2.05143005e+00 + 2.04861828e+00 2.04581036e+00 2.04300629e+00 2.04020607e+00 2.03740968e+00 + 2.03461713e+00 2.03182840e+00 2.02904350e+00 2.02626241e+00 2.02348513e+00 + 2.02071167e+00 2.01794200e+00 2.01517613e+00 2.01241405e+00 2.00965575e+00 + 2.00690124e+00 2.00415050e+00 2.00140353e+00 1.99866033e+00 1.99592089e+00 + 1.99318520e+00 1.99045326e+00 1.98772507e+00 1.98500061e+00 1.98227989e+00 + 1.97956290e+00 1.97684963e+00 1.97414009e+00 1.97143425e+00 1.96873213e+00 + 1.96603370e+00 1.96333898e+00 1.96064795e+00 1.95796061e+00 1.95527695e+00 + 1.95259697e+00 1.94992066e+00 1.94724803e+00 1.94457905e+00 1.94191373e+00 + 1.93925207e+00 1.93659405e+00 1.93393968e+00 1.93128895e+00 1.92864185e+00 + 1.92599837e+00 1.92335853e+00 1.92072229e+00 1.91808968e+00 1.91546067e+00 + 1.91283526e+00 1.91021345e+00 1.90759524e+00 1.90498061e+00 1.90236957e+00 + 1.89976211e+00 1.89715822e+00 1.89455790e+00 1.89196114e+00 1.88936795e+00 + 1.88677830e+00 1.88419221e+00 1.88160966e+00 1.87903066e+00 1.87645518e+00 + 1.87388324e+00 1.87131482e+00 1.86874992e+00 1.86618854e+00 1.86363067e+00 + 1.86107630e+00 1.85852544e+00 1.85597807e+00 1.85343419e+00 1.85089380e+00 + 1.84835689e+00 1.84582346e+00 1.84329350e+00 1.84076701e+00 1.83824398e+00 + 1.83572441e+00 1.83320830e+00 1.83069563e+00 1.82818641e+00 1.82568062e+00 + 1.82317827e+00 1.82067935e+00 1.81818386e+00 1.81569178e+00 1.81320312e+00 + 1.81071788e+00 1.80823603e+00 1.80575759e+00 1.80328255e+00 1.80081090e+00 + 1.79834264e+00 1.79587776e+00 1.79341626e+00 1.79095813e+00 1.78850337e+00 + 1.78605198e+00 1.78360395e+00 1.78115927e+00 1.77871794e+00 1.77627996e+00 + 1.77384532e+00 1.77141402e+00 1.76898605e+00 1.76656141e+00 1.76414009e+00 + 1.76172209e+00 1.75930740e+00 1.75689602e+00 1.75448795e+00 1.75208318e+00 + 1.74968171e+00 1.74728353e+00 1.74488863e+00 1.74249702e+00 1.74010868e+00 + 1.73772362e+00 1.73534183e+00 1.73296330e+00 1.73058803e+00 1.72821602e+00 + 1.72584726e+00 1.72348174e+00 1.72111947e+00 1.71876044e+00 1.71640463e+00 + 1.71405206e+00 1.71170272e+00 1.70935659e+00 1.70701368e+00 1.70467398e+00 + 1.70233748e+00 1.70000419e+00 1.69767410e+00 1.69534720e+00 1.69302349e+00 + 1.69070296e+00 1.68838562e+00 1.68607145e+00 1.68376046e+00 1.68145263e+00 + 1.67914796e+00 1.67684646e+00 1.67454810e+00 1.67225290e+00 1.66996085e+00 + 1.66767193e+00 1.66538615e+00 1.66310351e+00 1.66082399e+00 1.65854760e+00 + 1.65627433e+00 1.65400418e+00 1.65173713e+00 1.64947320e+00 1.64721236e+00 + 1.64495463e+00 1.64269999e+00 1.64044844e+00 1.63819998e+00 1.63595460e+00 + 1.63371229e+00 1.63147306e+00 1.62923690e+00 1.62700380e+00 1.62477377e+00 + 1.62254679e+00 1.62032286e+00 1.61810198e+00 1.61588415e+00 1.61366935e+00 + 1.61145759e+00 1.60924887e+00 1.60704317e+00 1.60484049e+00 1.60264083e+00 + 1.60044419e+00 1.59825056e+00 1.59605993e+00 1.59387231e+00 1.59168769e+00 + 1.58950606e+00 1.58732742e+00 1.58515176e+00 1.58297909e+00 1.58080940e+00 + 1.57864268e+00 1.57647893e+00 1.57431814e+00 1.57216032e+00 1.57000545e+00 + 1.56785354e+00 1.56570458e+00 1.56355856e+00 1.56141549e+00 1.55927535e+00 + 1.55713815e+00 1.55500387e+00 1.55287252e+00 1.55074409e+00 1.54861858e+00 + 1.54649598e+00 1.54437630e+00 1.54225951e+00 1.54014563e+00 1.53803465e+00 + 1.53592656e+00 1.53382135e+00 1.53171904e+00 1.52961960e+00 1.52752305e+00 + 1.52542936e+00 1.52333855e+00 1.52125060e+00 1.51916551e+00 1.51708329e+00 + 1.51500391e+00 1.51292739e+00 1.51085371e+00 1.50878287e+00 1.50671488e+00 + 1.50464971e+00 1.50258738e+00 1.50052788e+00 1.49847119e+00 1.49641733e+00 + 1.49436628e+00 1.49231804e+00 1.49027261e+00 1.48822999e+00 1.48619016e+00 + 1.48415313e+00 1.48211889e+00 1.48008744e+00 1.47805877e+00 1.47603289e+00 + 1.47400978e+00 1.47198944e+00 1.46997187e+00 1.46795707e+00 1.46594503e+00 + 1.46393575e+00 1.46192922e+00 1.45992544e+00 1.45792441e+00 1.45592612e+00 + 1.45393057e+00 1.45193776e+00 1.44994768e+00 1.44796032e+00 1.44597569e+00 + 1.44399378e+00 1.44201458e+00 1.44003810e+00 1.43806433e+00 1.43609326e+00 + 1.43412489e+00 1.43215923e+00 1.43019625e+00 1.42823597e+00 1.42627837e+00 + 1.42432346e+00 1.42237122e+00 1.42042167e+00 1.41847478e+00 1.41653056e+00 + 1.41458901e+00 1.41265012e+00 1.41071388e+00 1.40878030e+00 1.40684937e+00 + 1.40492109e+00 1.40299545e+00 1.40107245e+00 1.39915208e+00 1.39723435e+00 + 1.39531925e+00 1.39340677e+00 1.39149691e+00 1.38958967e+00 1.38768504e+00 + 1.38578302e+00 1.38388362e+00 1.38198681e+00 1.38009260e+00 1.37820099e+00 + 1.37631198e+00 1.37442555e+00 1.37254171e+00 1.37066045e+00 1.36878177e+00 + 1.36690566e+00 1.36503213e+00 1.36316116e+00 1.36129276e+00 1.35942691e+00 + 1.35756363e+00 1.35570290e+00 1.35384472e+00 1.35198909e+00 1.35013600e+00 + 1.34828545e+00 1.34643743e+00 1.34459195e+00 1.34274900e+00 1.34090858e+00 + 1.33907068e+00 1.33723529e+00 1.33540242e+00 1.33357207e+00 1.33174422e+00 + 1.32991888e+00 1.32809604e+00 1.32627570e+00 1.32445786e+00 1.32264250e+00 + 1.32082964e+00 1.31901925e+00 1.31721135e+00 1.31540593e+00 1.31360298e+00 + 1.31180251e+00 1.31000450e+00 1.30820896e+00 1.30641587e+00 1.30462525e+00 + 1.30283708e+00 1.30105136e+00 1.29926808e+00 1.29748726e+00 1.29570887e+00 + 1.29393292e+00 1.29215940e+00 1.29038832e+00 1.28861966e+00 1.28685343e+00 + 1.28508962e+00 1.28332822e+00 1.28156924e+00 1.27981267e+00 1.27805851e+00 + 1.27630675e+00 1.27455740e+00 1.27281044e+00 1.27106587e+00 1.26932370e+00 + 1.26758392e+00 1.26584651e+00 1.26411150e+00 1.26237885e+00 1.26064859e+00 + 1.25892069e+00 1.25719517e+00 1.25547201e+00 1.25375121e+00 1.25203276e+00 + 1.25031668e+00 1.24860295e+00 1.24689156e+00 1.24518252e+00 1.24347583e+00 + 1.24177147e+00 1.24006945e+00 1.23836976e+00 1.23667240e+00 1.23497737e+00 + 1.23328466e+00 1.23159427e+00 1.22990620e+00 1.22822044e+00 1.22653699e+00 + 1.22485585e+00 1.22317702e+00 1.22150048e+00 1.21982625e+00 1.21815430e+00 + 1.21648465e+00 1.21481729e+00 1.21315222e+00 1.21148942e+00 1.20982891e+00 + 1.20817067e+00 1.20651470e+00 1.20486100e+00 1.20320957e+00 1.20156041e+00 + 1.19991350e+00 1.19826885e+00 1.19662646e+00 1.19498631e+00 1.19334842e+00 + 1.19171277e+00 1.19007936e+00 1.18844819e+00 1.18681926e+00 1.18519255e+00 + 1.18356808e+00 1.18194584e+00 1.18032582e+00 1.17870801e+00 1.17709243e+00 + 1.17547906e+00 1.17386790e+00 1.17225895e+00 1.17065221e+00 1.16904767e+00 + 1.16744532e+00 1.16584518e+00 1.16424722e+00 1.16265146e+00 1.16105788e+00 + 1.15946649e+00 1.15787728e+00 1.15629025e+00 1.15470539e+00 1.15312271e+00 + 1.15154219e+00 1.14996384e+00 1.14838766e+00 1.14681363e+00 1.14524176e+00 + 1.14367205e+00 1.14210449e+00 1.14053907e+00 1.13897581e+00 1.13741468e+00 + 1.13585569e+00 1.13429885e+00 1.13274413e+00 1.13119155e+00 1.12964109e+00 + 1.12809276e+00 1.12654655e+00 1.12500246e+00 1.12346049e+00 1.12192063e+00 + 1.12038288e+00 1.11884724e+00 1.11731370e+00 1.11578227e+00 1.11425294e+00 + 1.11272570e+00 1.11120055e+00 1.10967749e+00 1.10815653e+00 1.10663764e+00 + 1.10512084e+00 1.10360612e+00 1.10209347e+00 1.10058290e+00 1.09907440e+00 + 1.09756796e+00 1.09606359e+00 1.09456129e+00 1.09306104e+00 1.09156284e+00 + 1.09006670e+00 1.08857262e+00 1.08708058e+00 1.08559058e+00 1.08410263e+00 + 1.08261671e+00 1.08113284e+00 1.07965099e+00 1.07817118e+00 1.07669340e+00 + 1.07521764e+00 1.07374390e+00 1.07227218e+00 1.07080249e+00 1.06933480e+00 + 1.06786913e+00 1.06640547e+00 1.06494381e+00 1.06348415e+00 1.06202650e+00 + 1.06057084e+00 1.05911718e+00 1.05766552e+00 1.05621584e+00 1.05476815e+00 + 1.05332244e+00 1.05187871e+00 1.05043697e+00 1.04899720e+00 1.04755940e+00 + 1.04612357e+00 1.04468971e+00 1.04325782e+00 1.04182789e+00 1.04039992e+00 + 1.03897391e+00 1.03754985e+00 1.03612774e+00 1.03470758e+00 1.03328937e+00 + 1.03187310e+00 1.03045878e+00 1.02904639e+00 1.02763594e+00 1.02622742e+00 + 1.02482083e+00 1.02341617e+00 1.02201344e+00 1.02061262e+00 1.01921373e+00 + 1.01781676e+00 1.01642170e+00 1.01502855e+00 1.01363731e+00 1.01224798e+00 + 1.01086055e+00 1.00947502e+00 1.00809140e+00 1.00670967e+00 1.00532983e+00 + 1.00395188e+00 1.00257583e+00 1.00120166e+00 9.99829370e-01 9.98458963e-01 + 9.97090435e-01 9.95723783e-01 9.94359004e-01 9.92996095e-01 9.91635054e-01 + 9.90275879e-01 9.88918567e-01 9.87563115e-01 9.86209521e-01 9.84857782e-01 + 9.83507896e-01 9.82159860e-01 9.80813671e-01 9.79469328e-01 9.78126827e-01 + 9.76786166e-01 9.75447343e-01 9.74110354e-01 9.72775198e-01 9.71441872e-01 + 9.70110374e-01 9.68780700e-01 9.67452849e-01 9.66126818e-01 9.64802604e-01 + 9.63480205e-01 9.62159618e-01 9.60840841e-01 9.59523872e-01 9.58208708e-01 + 9.56895346e-01 9.55583784e-01 9.54274020e-01 9.52966051e-01 9.51659874e-01 + 9.50355488e-01 9.49052889e-01 9.47752076e-01 9.46453045e-01 9.45155794e-01 + 9.43860322e-01 9.42566624e-01 9.41274700e-01 9.39984546e-01 9.38696161e-01 + 9.37409540e-01 9.36124684e-01 9.34841588e-01 9.33560250e-01 9.32280668e-01 + 9.31002840e-01 9.29726763e-01 9.28452435e-01 9.27179852e-01 9.25909014e-01 + 9.24639917e-01 9.23372560e-01 9.22106939e-01 9.20843052e-01 9.19580897e-01 + 9.18320471e-01 9.17061773e-01 9.15804799e-01 9.14549547e-01 9.13296016e-01 + 9.12044202e-01 9.10794103e-01 9.09545716e-01 9.08299041e-01 9.07054073e-01 + 9.05810811e-01 9.04569252e-01 9.03329394e-01 9.02091234e-01 9.00854771e-01 + 8.99620001e-01 8.98386923e-01 8.97155534e-01 8.95925831e-01 8.94697813e-01 + 8.93471477e-01 8.92246821e-01 8.91023842e-01 8.89802537e-01 8.88582905e-01 + 8.87364944e-01 8.86148650e-01 8.84934022e-01 8.83721057e-01 8.82509753e-01 + 8.81300107e-01 8.80092117e-01 8.78885781e-01 8.77681097e-01 8.76478061e-01 + 8.75276672e-01 8.74076928e-01 8.72878825e-01 8.71682362e-01 8.70487536e-01 + 8.69294345e-01 8.68102787e-01 8.66912859e-01 8.65724558e-01 8.64537884e-01 + 8.63352832e-01 8.62169400e-01 8.60987588e-01 8.59807391e-01 8.58628807e-01 + 8.57451835e-01 8.56276472e-01 8.55102714e-01 8.53930561e-01 8.52760010e-01 + 8.51591058e-01 8.50423702e-01 8.49257941e-01 8.48093771e-01 8.46931191e-01 + 8.45770199e-01 8.44610790e-01 8.43452964e-01 8.42296717e-01 8.41142048e-01 + 8.39988953e-01 8.38837431e-01 8.37687478e-01 8.36539092e-01 8.35392271e-01 + 8.34247012e-01 8.33103313e-01 8.31961170e-01 8.30820582e-01 8.29681546e-01 + 8.28544059e-01 8.27408118e-01 8.26273721e-01 8.25140866e-01 8.24009549e-01 + 8.22879768e-01 8.21751519e-01 8.20624802e-01 8.19499611e-01 8.18375946e-01 + 8.17253803e-01 8.16133178e-01 8.15014070e-01 8.13896475e-01 8.12780391e-01 + 8.11665814e-01 8.10552741e-01 8.09441170e-01 8.08331097e-01 8.07222519e-01 + 8.06115433e-01 8.05009836e-01 8.03905725e-01 8.02803096e-01 8.01701946e-01 + 8.00602272e-01 7.99504070e-01 7.98407337e-01 7.97312069e-01 7.96218263e-01 + 7.95125915e-01 7.94035021e-01 7.92945578e-01 7.91857581e-01 7.90771028e-01 + 7.89685913e-01 7.88602232e-01 7.87519983e-01 7.86439160e-01 7.85359759e-01 + 7.84281776e-01 7.83205206e-01 7.82130045e-01 7.81056287e-01 7.79983929e-01 + 7.78912966e-01 7.77843391e-01 7.76775201e-01 7.75708390e-01 7.74642952e-01 + 7.73578882e-01 7.72516175e-01 7.71454824e-01 7.70394824e-01 7.69336169e-01 + 7.68278852e-01 7.67222866e-01 7.66168206e-01 7.65114865e-01 7.64062835e-01 + 7.63012109e-01 7.61962680e-01 7.60914541e-01 7.59867683e-01 7.58822098e-01 + 7.57777779e-01 7.56734717e-01 7.55692902e-01 7.54652326e-01 7.53612980e-01 + 7.52574853e-01 7.51537937e-01 7.50502220e-01 7.49467692e-01 7.48434342e-01 + 7.47402159e-01 7.46371131e-01 7.45341247e-01 7.44312493e-01 7.43284857e-01 + 7.42258326e-01 7.41232886e-01 7.40208523e-01 7.39185222e-01 7.38162968e-01 + 7.37141745e-01 7.36121538e-01 7.35102329e-01 7.34084101e-01 7.33066837e-01 + 7.32050516e-01 7.31035122e-01 7.30020632e-01 7.29007028e-01 7.27994287e-01 + 7.26982387e-01 7.25971306e-01 7.24961020e-01 7.23951505e-01 7.22942734e-01 + 7.21934682e-01 7.20927321e-01 7.19920623e-01 7.18914559e-01 7.17909098e-01 + 7.16904209e-01 7.15899860e-01 7.14896016e-01 7.13892643e-01 7.12889703e-01 + 7.11887161e-01 7.10884976e-01 7.09883108e-01 7.08881516e-01 7.07880155e-01 + 7.06878980e-01 7.05877946e-01 7.04877003e-01 7.03876101e-01 7.02875188e-01 + 7.01874211e-01 7.00873112e-01 6.99871834e-01 6.98870317e-01 6.97868499e-01 + 6.96866313e-01 6.95863694e-01 6.94860571e-01 6.93856872e-01 6.92852523e-01 + 6.91847445e-01 6.90841558e-01 6.89834779e-01 6.88827020e-01 6.87818192e-01 + 6.86808201e-01 6.85796952e-01 6.84784343e-01 6.83770270e-01 6.82754627e-01 + 6.81737300e-01 6.80718175e-01 6.79697130e-01 6.78674042e-01 6.77648780e-01 + 6.76621212e-01 6.75591198e-01 6.74558594e-01 6.73523250e-01 6.72485013e-01 + 6.71443720e-01 6.70399207e-01 6.69351300e-01 6.68299821e-01 6.67244585e-01 + 6.66185399e-01 6.65122064e-01 6.64054373e-01 6.62982114e-01 6.61905065e-01 + 6.60822995e-01 6.59735668e-01 6.58642836e-01 6.57544244e-01 6.56439627e-01 + 6.55328713e-01 6.54211215e-01 6.53086841e-01 6.51955286e-01 6.50816235e-01 + 6.49669360e-01 6.48514324e-01 6.47350776e-01 6.46178354e-01 6.44996683e-01 + 6.43805374e-01 6.42604025e-01 6.41392220e-01 6.40169528e-01 6.38935504e-01 + 6.37689687e-01 6.36431601e-01 6.35160751e-01 6.33876629e-01 6.32578706e-01 + 6.31266438e-01 6.29939261e-01 6.28596592e-01 6.27237829e-01 6.25862351e-01 + 6.24469514e-01 6.23058654e-01 6.21629085e-01 6.20180101e-01 6.18710969e-01 + 6.17220935e-01 6.15709221e-01 6.14175024e-01 6.12617513e-01 6.11035836e-01 + 6.09429111e-01 6.07796429e-01 6.06136855e-01 6.04449424e-01 6.02733144e-01 + 6.00986991e-01 5.99209913e-01 5.97400828e-01 5.95558621e-01 5.93682146e-01 + 5.91770226e-01 5.89821652e-01 5.87835180e-01 5.85809535e-01 5.83743407e-01 + 5.81635454e-01 5.79484299e-01 5.77288531e-01 5.75046705e-01 5.72757343e-01 + 5.70418930e-01 5.68029921e-01 5.65588735e-01 5.63093758e-01 5.60543345e-01 + 5.57935816e-01 5.55269463e-01 5.52542545e-01 5.49753293e-01 5.46899910e-01 + 5.43980570e-01 5.40993427e-01 5.37936605e-01 5.34808213e-01 5.31606337e-01 + 5.28329048e-01 5.24974404e-01 5.21540450e-01 5.18025227e-01 5.14426771e-01 + 5.10743118e-01 5.06972310e-01 5.03112399e-01 4.99161450e-01 4.95117550e-01 + 4.90978812e-01 4.86743382e-01 4.82409446e-01 4.77975236e-01 4.73439039e-01 + 4.68799206e-01 4.64054160e-01 4.59202405e-01 4.54242535e-01 4.49173247e-01 + 4.43993352e-01 4.38701781e-01 4.33297606e-01 4.27780043e-01 4.22148472e-01 + 4.16402449e-01 4.10541717e-01 4.04566224e-01 3.98476134e-01 3.92271848e-01 + 3.85954012e-01 3.79523540e-01 3.72981624e-01 3.66329751e-01 3.59569723e-01 + 3.52703668e-01 3.45734056e-01 3.38663718e-01 3.31495853e-01 3.24234051e-01 + 3.16882299e-01 3.09444996e-01 3.01926963e-01 2.94333453e-01 2.86670156e-01 + 2.78943210e-01 2.71159201e-01 2.63325162e-01 2.55448579e-01 2.47537380e-01 + 2.39599931e-01 2.31645027e-01 2.23681875e-01 2.15720077e-01 2.07769608e-01 + 1.99840793e-01 1.91944274e-01 1.84090973e-01 1.76292060e-01 1.68558901e-01 + 1.60903017e-01 1.53336024e-01 1.45869584e-01 1.38515337e-01 1.31284838e-01 + 1.24189492e-01 1.17240477e-01 1.10448676e-01 1.03824595e-01 9.73782939e-02 + 9.11193025e-02 8.50565488e-02 7.91982826e-02 7.35520037e-02 6.81243941e-02 + 6.29212538e-02 5.79474436e-02 5.32068346e-02 4.87022656e-02 4.44355099e-02 + 4.04072521e-02 3.66170759e-02 3.30634633e-02 2.97438060e-02 2.66544291e-02 + 2.37906280e-02 2.11467162e-02 1.87160870e-02 1.64912847e-02 1.44640875e-02 + 1.26255995e-02 1.09663495e-02 9.47639731e-03 8.14544397e-03 6.96294412e-03 + 5.91821927e-03 5.00056914e-03 4.19937944e-03 3.50422377e-03 2.90495820e-03 + 2.39180651e-03 1.95543501e-03 1.58701559e-03 1.27827650e-03 1.02154025e-03 + 8.09748707e-04 6.36475675e-04 4.95927573e-04 3.82933206e-04 2.92923820e-04 + 2.21904822e-04 1.66420727e-04 1.23514936e-04 9.06859386e-05 6.58415198e-05 + 4.72523917e-05 3.35065418e-05 2.34653835e-05 1.62225835e-05 1.10662166e-05 + 7.44467847e-06 4.93658073e-06 3.22467124e-06 2.07366607e-06 1.31176054e-06 + 8.15498138e-07 4.97621665e-07 2.97504885e-07 1.73762522e-07 9.86548547e-08 + 5.39360246e-08 2.78365328e-08 1.29159488e-08 4.56757882e-09 0.00000000e+00 + 2.00759391e+01 2.00759391e+01 2.00759391e+01 2.00759391e+01 2.00759391e+01 + 2.00759391e+01 2.00759391e+01 2.00759391e+01 2.00759391e+01 2.00759391e+01 + 2.00759391e+01 2.00759391e+01 2.00759391e+01 2.00759391e+01 2.00759391e+01 + 2.00759391e+01 2.00759391e+01 2.00759391e+01 2.00759391e+01 2.00759391e+01 + 2.00759391e+01 2.00759391e+01 2.00759391e+01 2.00759391e+01 2.00759391e+01 + 2.00759391e+01 2.00759391e+01 2.00759391e+01 2.00759391e+01 2.00759391e+01 + 2.00759391e+01 2.00759391e+01 2.00759391e+01 2.00759391e+01 2.00759391e+01 + 2.00759391e+01 2.00759391e+01 2.00759391e+01 2.00759391e+01 2.00759391e+01 + 2.00759391e+01 2.00759391e+01 2.00759391e+01 2.00759391e+01 2.00759391e+01 + 2.00759391e+01 2.00759391e+01 2.00759391e+01 2.00759391e+01 2.00759391e+01 + 2.00440764e+01 2.00010572e+01 1.99581303e+01 1.99152956e+01 1.98725528e+01 + 1.98299017e+01 1.97873421e+01 1.97448739e+01 1.97024969e+01 1.96602108e+01 + 1.96180154e+01 1.95759107e+01 1.95338962e+01 1.94919720e+01 1.94501377e+01 + 1.94083933e+01 1.93667384e+01 1.93251729e+01 1.92836966e+01 1.92423094e+01 + 1.92010109e+01 1.91598011e+01 1.91186798e+01 1.90776467e+01 1.90367017e+01 + 1.89958445e+01 1.89550750e+01 1.89143931e+01 1.88737984e+01 1.88332909e+01 + 1.87928703e+01 1.87525365e+01 1.87122892e+01 1.86721283e+01 1.86320537e+01 + 1.85920650e+01 1.85521621e+01 1.85123449e+01 1.84726131e+01 1.84329667e+01 + 1.83934053e+01 1.83539288e+01 1.83145370e+01 1.82752298e+01 1.82360069e+01 + 1.81968683e+01 1.81578136e+01 1.81188427e+01 1.80799555e+01 1.80411518e+01 + 1.80024313e+01 1.79637939e+01 1.79252395e+01 1.78867678e+01 1.78483787e+01 + 1.78100719e+01 1.77718474e+01 1.77337049e+01 1.76956443e+01 1.76576654e+01 + 1.76197680e+01 1.75819519e+01 1.75442170e+01 1.75065630e+01 1.74689899e+01 + 1.74314974e+01 1.73940854e+01 1.73567537e+01 1.73195021e+01 1.72823305e+01 + 1.72452386e+01 1.72082263e+01 1.71712935e+01 1.71344400e+01 1.70976655e+01 + 1.70609700e+01 1.70243532e+01 1.69878150e+01 1.69513552e+01 1.69149737e+01 + 1.68786703e+01 1.68424448e+01 1.68062970e+01 1.67702268e+01 1.67342341e+01 + 1.66983185e+01 1.66624801e+01 1.66267186e+01 1.65910338e+01 1.65554256e+01 + 1.65198939e+01 1.64844384e+01 1.64490590e+01 1.64137555e+01 1.63785278e+01 + 1.63433757e+01 1.63082990e+01 1.62732977e+01 1.62383714e+01 1.62035201e+01 + 1.61687436e+01 1.61340418e+01 1.60994144e+01 1.60648614e+01 1.60303825e+01 + 1.59959776e+01 1.59616465e+01 1.59273891e+01 1.58932053e+01 1.58590948e+01 + 1.58250575e+01 1.57910933e+01 1.57572020e+01 1.57233834e+01 1.56896374e+01 + 1.56559638e+01 1.56223625e+01 1.55888333e+01 1.55553761e+01 1.55219907e+01 + 1.54886769e+01 1.54554346e+01 1.54222637e+01 1.53891640e+01 1.53561353e+01 + 1.53231775e+01 1.52902904e+01 1.52574739e+01 1.52247279e+01 1.51920521e+01 + 1.51594464e+01 1.51269108e+01 1.50944449e+01 1.50620488e+01 1.50297221e+01 + 1.49974649e+01 1.49652769e+01 1.49331579e+01 1.49011079e+01 1.48691267e+01 + 1.48372142e+01 1.48053701e+01 1.47735943e+01 1.47418868e+01 1.47102473e+01 + 1.46786757e+01 1.46471719e+01 1.46157357e+01 1.45843670e+01 1.45530656e+01 + 1.45218313e+01 1.44906641e+01 1.44595638e+01 1.44285303e+01 1.43975633e+01 + 1.43666628e+01 1.43358286e+01 1.43050607e+01 1.42743587e+01 1.42437226e+01 + 1.42131523e+01 1.41826476e+01 1.41522084e+01 1.41218345e+01 1.40915258e+01 + 1.40612821e+01 1.40311034e+01 1.40009894e+01 1.39709400e+01 1.39409552e+01 + 1.39110347e+01 1.38811784e+01 1.38513862e+01 1.38216579e+01 1.37919934e+01 + 1.37623926e+01 1.37328554e+01 1.37033815e+01 1.36739709e+01 1.36446234e+01 + 1.36153389e+01 1.35861172e+01 1.35569583e+01 1.35278619e+01 1.34988280e+01 + 1.34698564e+01 1.34409470e+01 1.34120996e+01 1.33833142e+01 1.33545905e+01 + 1.33259285e+01 1.32973280e+01 1.32687888e+01 1.32403110e+01 1.32118942e+01 + 1.31835384e+01 1.31552435e+01 1.31270093e+01 1.30988357e+01 1.30707226e+01 + 1.30426698e+01 1.30146773e+01 1.29867448e+01 1.29588722e+01 1.29310595e+01 + 1.29033065e+01 1.28756130e+01 1.28479790e+01 1.28204042e+01 1.27928887e+01 + 1.27654322e+01 1.27380346e+01 1.27106959e+01 1.26834158e+01 1.26561943e+01 + 1.26290312e+01 1.26019263e+01 1.25748797e+01 1.25478911e+01 1.25209604e+01 + 1.24940876e+01 1.24672724e+01 1.24405147e+01 1.24138145e+01 1.23871716e+01 + 1.23605859e+01 1.23340572e+01 1.23075855e+01 1.22811706e+01 1.22548124e+01 + 1.22285107e+01 1.22022655e+01 1.21760766e+01 1.21499440e+01 1.21238674e+01 + 1.20978468e+01 1.20718820e+01 1.20459730e+01 1.20201195e+01 1.19943216e+01 + 1.19685790e+01 1.19428917e+01 1.19172595e+01 1.18916823e+01 1.18661600e+01 + 1.18406925e+01 1.18152796e+01 1.17899213e+01 1.17646174e+01 1.17393678e+01 + 1.17141725e+01 1.16890311e+01 1.16639438e+01 1.16389103e+01 1.16139305e+01 + 1.15890043e+01 1.15641316e+01 1.15393124e+01 1.15145463e+01 1.14898335e+01 + 1.14651736e+01 1.14405667e+01 1.14160126e+01 1.13915112e+01 1.13670624e+01 + 1.13426661e+01 1.13183221e+01 1.12940304e+01 1.12697908e+01 1.12456032e+01 + 1.12214676e+01 1.11973837e+01 1.11733515e+01 1.11493710e+01 1.11254418e+01 + 1.11015641e+01 1.10777376e+01 1.10539622e+01 1.10302378e+01 1.10065644e+01 + 1.09829418e+01 1.09593698e+01 1.09358485e+01 1.09123777e+01 1.08889572e+01 + 1.08655870e+01 1.08422669e+01 1.08189969e+01 1.07957769e+01 1.07726066e+01 + 1.07494861e+01 1.07264153e+01 1.07033939e+01 1.06804219e+01 1.06574993e+01 + 1.06346258e+01 1.06118015e+01 1.05890261e+01 1.05662996e+01 1.05436219e+01 + 1.05209929e+01 1.04984124e+01 1.04758804e+01 1.04533967e+01 1.04309613e+01 + 1.04085741e+01 1.03862349e+01 1.03639436e+01 1.03417002e+01 1.03195045e+01 + 1.02973565e+01 1.02752560e+01 1.02532029e+01 1.02311972e+01 1.02092387e+01 + 1.01873273e+01 1.01654630e+01 1.01436455e+01 1.01218749e+01 1.01001511e+01 + 1.00784738e+01 1.00568431e+01 1.00352588e+01 1.00137208e+01 9.99222904e+00 + 9.97078341e+00 9.94938381e+00 9.92803014e+00 9.90672230e+00 9.88546019e+00 + 9.86424372e+00 9.84307278e+00 9.82194727e+00 9.80086711e+00 9.77983219e+00 + 9.75884242e+00 9.73789769e+00 9.71699792e+00 9.69614300e+00 9.67533284e+00 + 9.65456735e+00 9.63384642e+00 9.61316997e+00 9.59253789e+00 9.57195009e+00 + 9.55140648e+00 9.53090696e+00 9.51045144e+00 9.49003981e+00 9.46967200e+00 + 9.44934790e+00 9.42906742e+00 9.40883047e+00 9.38863695e+00 9.36848677e+00 + 9.34837984e+00 9.32831606e+00 9.30829535e+00 9.28831760e+00 9.26838273e+00 + 9.24849064e+00 9.22864125e+00 9.20883446e+00 9.18907018e+00 9.16934832e+00 + 9.14966878e+00 9.13003148e+00 9.11043633e+00 9.09088323e+00 9.07137210e+00 + 9.05190285e+00 9.03247538e+00 9.01308960e+00 8.99374544e+00 8.97444278e+00 + 8.95518156e+00 8.93596168e+00 8.91678304e+00 8.89764557e+00 8.87854917e+00 + 8.85949376e+00 8.84047925e+00 8.82150554e+00 8.80257256e+00 8.78368021e+00 + 8.76482840e+00 8.74601706e+00 8.72724609e+00 8.70851541e+00 8.68982493e+00 + 8.67117456e+00 8.65256422e+00 8.63399383e+00 8.61546328e+00 8.59697251e+00 + 8.57852143e+00 8.56010995e+00 8.54173798e+00 8.52340544e+00 8.50511224e+00 + 8.48685831e+00 8.46864356e+00 8.45046790e+00 8.43233125e+00 8.41423352e+00 + 8.39617463e+00 8.37815451e+00 8.36017306e+00 8.34223020e+00 8.32432585e+00 + 8.30645993e+00 8.28863235e+00 8.27084304e+00 8.25309190e+00 8.23537886e+00 + 8.21770384e+00 8.20006675e+00 8.18246752e+00 8.16490606e+00 8.14738229e+00 + 8.12989613e+00 8.11244750e+00 8.09503632e+00 8.07766250e+00 8.06032598e+00 + 8.04302666e+00 8.02576447e+00 8.00853933e+00 7.99135116e+00 7.97419988e+00 + 7.95708540e+00 7.94000767e+00 7.92296658e+00 7.90596207e+00 7.88899405e+00 + 7.87206245e+00 7.85516719e+00 7.83830819e+00 7.82148537e+00 7.80469866e+00 + 7.78794798e+00 7.77123325e+00 7.75455439e+00 7.73791133e+00 7.72130399e+00 + 7.70473229e+00 7.68819616e+00 7.67169552e+00 7.65523029e+00 7.63880040e+00 + 7.62240578e+00 7.60604634e+00 7.58972201e+00 7.57343271e+00 7.55717838e+00 + 7.54095894e+00 7.52477430e+00 7.50862440e+00 7.49250916e+00 7.47642851e+00 + 7.46038237e+00 7.44437067e+00 7.42839333e+00 7.41245029e+00 7.39654146e+00 + 7.38066678e+00 7.36482617e+00 7.34901955e+00 7.33324686e+00 7.31750803e+00 + 7.30180297e+00 7.28613161e+00 7.27049390e+00 7.25488974e+00 7.23931907e+00 + 7.22378183e+00 7.20827793e+00 7.19280730e+00 7.17736988e+00 7.16196559e+00 + 7.14659436e+00 7.13125612e+00 7.11595080e+00 7.10067833e+00 7.08543864e+00 + 7.07023165e+00 7.05505731e+00 7.03991553e+00 7.02480625e+00 7.00972939e+00 + 6.99468490e+00 6.97967269e+00 6.96469270e+00 6.94974487e+00 6.93482911e+00 + 6.91994537e+00 6.90509357e+00 6.89027365e+00 6.87548554e+00 6.86072916e+00 + 6.84600445e+00 6.83131135e+00 6.81664978e+00 6.80201968e+00 6.78742098e+00 + 6.77285361e+00 6.75831750e+00 6.74381260e+00 6.72933882e+00 6.71489611e+00 + 6.70048439e+00 6.68610361e+00 6.67175369e+00 6.65743457e+00 6.64314618e+00 + 6.62888845e+00 6.61466133e+00 6.60046474e+00 6.58629863e+00 6.57216291e+00 + 6.55805753e+00 6.54398243e+00 6.52993754e+00 6.51592279e+00 6.50193811e+00 + 6.48798346e+00 6.47405875e+00 6.46016392e+00 6.44629892e+00 6.43246368e+00 + 6.41865813e+00 6.40488221e+00 6.39113586e+00 6.37741901e+00 6.36373160e+00 + 6.35007356e+00 6.33644484e+00 6.32284537e+00 6.30927508e+00 6.29573393e+00 + 6.28222183e+00 6.26873873e+00 6.25528457e+00 6.24185929e+00 6.22846282e+00 + 6.21509511e+00 6.20175608e+00 6.18844568e+00 6.17516385e+00 6.16191053e+00 + 6.14868565e+00 6.13548915e+00 6.12232097e+00 6.10918106e+00 6.09606935e+00 + 6.08298578e+00 6.06993029e+00 6.05690282e+00 6.04390331e+00 6.03093170e+00 + 6.01798793e+00 6.00507194e+00 5.99218368e+00 5.97932307e+00 5.96649006e+00 + 5.95368460e+00 5.94090662e+00 5.92815607e+00 5.91543288e+00 5.90273699e+00 + 5.89006836e+00 5.87742692e+00 5.86481260e+00 5.85222536e+00 5.83966514e+00 + 5.82713187e+00 5.81462550e+00 5.80214598e+00 5.78969323e+00 5.77726722e+00 + 5.76486787e+00 5.75249513e+00 5.74014895e+00 5.72782927e+00 5.71553603e+00 + 5.70326917e+00 5.69102864e+00 5.67881438e+00 5.66662634e+00 5.65446445e+00 + 5.64232867e+00 5.63021893e+00 5.61813518e+00 5.60607737e+00 5.59404543e+00 + 5.58203932e+00 5.57005898e+00 5.55810435e+00 5.54617538e+00 5.53427201e+00 + 5.52239418e+00 5.51054185e+00 5.49871496e+00 5.48691345e+00 5.47513727e+00 + 5.46338636e+00 5.45166067e+00 5.43996015e+00 5.42828475e+00 5.41663440e+00 + 5.40500905e+00 5.39340865e+00 5.38183316e+00 5.37028250e+00 5.35875664e+00 + 5.34725551e+00 5.33577907e+00 5.32432726e+00 5.31290002e+00 5.30149731e+00 + 5.29011908e+00 5.27876526e+00 5.26743582e+00 5.25613069e+00 5.24484982e+00 + 5.23359316e+00 5.22236066e+00 5.21115227e+00 5.19996794e+00 5.18880761e+00 + 5.17767123e+00 5.16655876e+00 5.15547013e+00 5.14440530e+00 5.13336422e+00 + 5.12234684e+00 5.11135310e+00 5.10038296e+00 5.08943636e+00 5.07851326e+00 + 5.06761360e+00 5.05673733e+00 5.04588441e+00 5.03505478e+00 5.02424839e+00 + 5.01346520e+00 5.00270514e+00 4.99196819e+00 4.98125427e+00 4.97056335e+00 + 4.95989538e+00 4.94925030e+00 4.93862807e+00 4.92802863e+00 4.91745195e+00 + 4.90689796e+00 4.89636663e+00 4.88585790e+00 4.87537172e+00 4.86490805e+00 + 4.85446683e+00 4.84404803e+00 4.83365158e+00 4.82327745e+00 4.81292559e+00 + 4.80259594e+00 4.79228846e+00 4.78200311e+00 4.77173983e+00 4.76149857e+00 + 4.75127930e+00 4.74108196e+00 4.73090650e+00 4.72075289e+00 4.71062106e+00 + 4.70051099e+00 4.69042261e+00 4.68035588e+00 4.67031076e+00 4.66028719e+00 + 4.65028514e+00 4.64030456e+00 4.63034539e+00 4.62040761e+00 4.61049115e+00 + 4.60059597e+00 4.59072203e+00 4.58086928e+00 4.57103768e+00 4.56122718e+00 + 4.55143774e+00 4.54166930e+00 4.53192183e+00 4.52219528e+00 4.51248961e+00 + 4.50280477e+00 4.49314071e+00 4.48349739e+00 4.47387478e+00 4.46427281e+00 + 4.45469145e+00 4.44513066e+00 4.43559038e+00 4.42607058e+00 4.41657121e+00 + 4.40709223e+00 4.39763360e+00 4.38819526e+00 4.37877718e+00 4.36937932e+00 + 4.36000162e+00 4.35064406e+00 4.34130657e+00 4.33198913e+00 4.32269168e+00 + 4.31341419e+00 4.30415660e+00 4.29491889e+00 4.28570101e+00 4.27650290e+00 + 4.26732454e+00 4.25816588e+00 4.24902688e+00 4.23990748e+00 4.23080767e+00 + 4.22172738e+00 4.21266658e+00 4.20362522e+00 4.19460328e+00 4.18560069e+00 + 4.17661743e+00 4.16765344e+00 4.15870870e+00 4.14978315e+00 4.14087676e+00 + 4.13198948e+00 4.12312128e+00 4.11427211e+00 4.10544194e+00 4.09663071e+00 + 4.08783840e+00 4.07906495e+00 4.07031034e+00 4.06157452e+00 4.05285744e+00 + 4.04415907e+00 4.03547938e+00 4.02681831e+00 4.01817583e+00 4.00955190e+00 + 4.00094647e+00 3.99235952e+00 3.98379100e+00 3.97524086e+00 3.96670908e+00 + 3.95819561e+00 3.94970041e+00 3.94122344e+00 3.93276467e+00 3.92432405e+00 + 3.91590154e+00 3.90749711e+00 3.89911073e+00 3.89074234e+00 3.88239191e+00 + 3.87405940e+00 3.86574477e+00 3.85744799e+00 3.84916902e+00 3.84090782e+00 + 3.83266434e+00 3.82443856e+00 3.81623044e+00 3.80803993e+00 3.79986699e+00 + 3.79171160e+00 3.78357372e+00 3.77545330e+00 3.76735030e+00 3.75926470e+00 + 3.75119645e+00 3.74314552e+00 3.73511187e+00 3.72709545e+00 3.71909625e+00 + 3.71111421e+00 3.70314930e+00 3.69520149e+00 3.68727074e+00 3.67935701e+00 + 3.67146026e+00 3.66358046e+00 3.65571757e+00 3.64787156e+00 3.64004238e+00 + 3.63223001e+00 3.62443441e+00 3.61665554e+00 3.60889336e+00 3.60114785e+00 + 3.59341895e+00 3.58570665e+00 3.57801089e+00 3.57033166e+00 3.56266890e+00 + 3.55502259e+00 3.54739270e+00 3.53977917e+00 3.53218199e+00 3.52460112e+00 + 3.51703651e+00 3.50948814e+00 3.50195597e+00 3.49443996e+00 3.48694009e+00 + 3.47945631e+00 3.47198860e+00 3.46453691e+00 3.45710121e+00 3.44968148e+00 + 3.44227767e+00 3.43488974e+00 3.42751768e+00 3.42016144e+00 3.41282098e+00 + 3.40549628e+00 3.39818730e+00 3.39089401e+00 3.38361637e+00 3.37635435e+00 + 3.36910791e+00 3.36187703e+00 3.35466167e+00 3.34746179e+00 3.34027737e+00 + 3.33310836e+00 3.32595474e+00 3.31881648e+00 3.31169353e+00 3.30458587e+00 + 3.29749347e+00 3.29041629e+00 3.28335430e+00 3.27630746e+00 3.26927575e+00 + 3.26225913e+00 3.25525757e+00 3.24827104e+00 3.24129950e+00 3.23434292e+00 + 3.22740128e+00 3.22047453e+00 3.21356265e+00 3.20666561e+00 3.19978336e+00 + 3.19291589e+00 3.18606316e+00 3.17922513e+00 3.17240178e+00 3.16559307e+00 + 3.15879898e+00 3.15201947e+00 3.14525451e+00 3.13850407e+00 3.13176812e+00 + 3.12504662e+00 3.11833955e+00 3.11164687e+00 3.10496856e+00 3.09830458e+00 + 3.09165491e+00 3.08501950e+00 3.07839834e+00 3.07179139e+00 3.06519862e+00 + 3.05861999e+00 3.05205549e+00 3.04550508e+00 3.03896872e+00 3.03244639e+00 + 3.02593806e+00 3.01944370e+00 3.01296328e+00 3.00649677e+00 3.00004413e+00 + 2.99360535e+00 2.98718038e+00 2.98076920e+00 2.97437178e+00 2.96798810e+00 + 2.96161811e+00 2.95526179e+00 2.94891912e+00 2.94259006e+00 2.93627458e+00 + 2.92997266e+00 2.92368427e+00 2.91740937e+00 2.91114793e+00 2.90489994e+00 + 2.89866535e+00 2.89244415e+00 2.88623630e+00 2.88004177e+00 2.87386054e+00 + 2.86769257e+00 2.86153784e+00 2.85539632e+00 2.84926798e+00 2.84315279e+00 + 2.83705073e+00 2.83096177e+00 2.82488587e+00 2.81882302e+00 2.81277317e+00 + 2.80673631e+00 2.80071241e+00 2.79470143e+00 2.78870336e+00 2.78271816e+00 + 2.77674581e+00 2.77078627e+00 2.76483952e+00 2.75890554e+00 2.75298429e+00 + 2.74707575e+00 2.74117990e+00 2.73529669e+00 2.72942612e+00 2.72356814e+00 + 2.71772273e+00 2.71188987e+00 2.70606953e+00 2.70026168e+00 2.69446630e+00 + 2.68868335e+00 2.68291282e+00 2.67715467e+00 2.67140888e+00 2.66567542e+00 + 2.65995427e+00 2.65424539e+00 2.64854877e+00 2.64286437e+00 2.63719218e+00 + 2.63153215e+00 2.62588428e+00 2.62024853e+00 2.61462487e+00 2.60901328e+00 + 2.60341374e+00 2.59782621e+00 2.59225068e+00 2.58668711e+00 2.58113548e+00 + 2.57559577e+00 2.57006795e+00 2.56455199e+00 2.55904787e+00 2.55355557e+00 + 2.54807505e+00 2.54260629e+00 2.53714927e+00 2.53170396e+00 2.52627034e+00 + 2.52084839e+00 2.51543806e+00 2.51003935e+00 2.50465223e+00 2.49927667e+00 + 2.49391265e+00 2.48856013e+00 2.48321911e+00 2.47788955e+00 2.47257143e+00 + 2.46726472e+00 2.46196940e+00 2.45668545e+00 2.45141283e+00 2.44615154e+00 + 2.44090153e+00 2.43566279e+00 2.43043530e+00 2.42521903e+00 2.42001395e+00 + 2.41482004e+00 2.40963728e+00 2.40446564e+00 2.39930510e+00 2.39415564e+00 + 2.38901723e+00 2.38388985e+00 2.37877347e+00 2.37366808e+00 2.36857364e+00 + 2.36349013e+00 2.35841754e+00 2.35335583e+00 2.34830499e+00 2.34326498e+00 + 2.33823580e+00 2.33321740e+00 2.32820978e+00 2.32321291e+00 2.31822676e+00 + 2.31325131e+00 2.30828654e+00 2.30333242e+00 2.29838894e+00 2.29345607e+00 + 2.28853378e+00 2.28362206e+00 2.27872088e+00 2.27383022e+00 2.26895006e+00 + 2.26408037e+00 2.25922113e+00 2.25437232e+00 2.24953392e+00 2.24470590e+00 + 2.23988824e+00 2.23508093e+00 2.23028393e+00 2.22549722e+00 2.22072079e+00 + 2.21595462e+00 2.21119867e+00 2.20645292e+00 2.20171737e+00 2.19699197e+00 + 2.19227672e+00 2.18757159e+00 2.18287656e+00 2.17819160e+00 2.17351670e+00 + 2.16885183e+00 2.16419698e+00 2.15955211e+00 2.15491722e+00 2.15029227e+00 + 2.14567724e+00 2.14107213e+00 2.13647689e+00 2.13189152e+00 2.12731599e+00 + 2.12275028e+00 2.11819437e+00 2.11364823e+00 2.10911186e+00 2.10458522e+00 + 2.10006829e+00 2.09556106e+00 2.09106350e+00 2.08657560e+00 2.08209733e+00 + 2.07762867e+00 2.07316960e+00 2.06872010e+00 2.06428015e+00 2.05984973e+00 + 2.05542881e+00 2.05101739e+00 2.04661543e+00 2.04222293e+00 2.03783984e+00 + 2.03346617e+00 2.02910188e+00 2.02474696e+00 2.02040139e+00 2.01606514e+00 + 2.01173820e+00 2.00742055e+00 2.00311216e+00 1.99881302e+00 1.99452311e+00 + 1.99024240e+00 1.98597088e+00 1.98170853e+00 1.97745533e+00 1.97321125e+00 + 1.96897629e+00 1.96475041e+00 1.96053360e+00 1.95632584e+00 1.95212712e+00 + 1.94793740e+00 1.94375668e+00 1.93958493e+00 1.93542213e+00 1.93126827e+00 + 1.92712332e+00 1.92298727e+00 1.91886010e+00 1.91474178e+00 1.91063231e+00 + 1.90653165e+00 1.90243979e+00 1.89835672e+00 1.89428241e+00 1.89021684e+00 + 1.88616000e+00 1.88211187e+00 1.87807242e+00 1.87404164e+00 1.87001952e+00 + 1.86600602e+00 1.86200115e+00 1.85800486e+00 1.85401715e+00 1.85003801e+00 + 1.84606740e+00 1.84210531e+00 1.83815173e+00 1.83420663e+00 1.83027000e+00 + 1.82634182e+00 1.82242207e+00 1.81851073e+00 1.81460779e+00 1.81071322e+00 + 1.80682701e+00 1.80294915e+00 1.79907960e+00 1.79521836e+00 1.79136541e+00 + 1.78752073e+00 1.78368429e+00 1.77985610e+00 1.77603612e+00 1.77222433e+00 + 1.76842073e+00 1.76462529e+00 1.76083800e+00 1.75705883e+00 1.75328778e+00 + 1.74952482e+00 1.74576994e+00 1.74202311e+00 1.73828433e+00 1.73455357e+00 + 1.73083082e+00 1.72711606e+00 1.72340927e+00 1.71971043e+00 1.71601954e+00 + 1.71233656e+00 1.70866149e+00 1.70499431e+00 1.70133500e+00 1.69768354e+00 + 1.69403992e+00 1.69040412e+00 1.68677613e+00 1.68315592e+00 1.67954347e+00 + 1.67593879e+00 1.67234184e+00 1.66875260e+00 1.66517108e+00 1.66159723e+00 + 1.65803106e+00 1.65447255e+00 1.65092167e+00 1.64737841e+00 1.64384275e+00 + 1.64031469e+00 1.63679419e+00 1.63328125e+00 1.62977586e+00 1.62627798e+00 + 1.62278761e+00 1.61930474e+00 1.61582933e+00 1.61236139e+00 1.60890089e+00 + 1.60544782e+00 1.60200216e+00 1.59856389e+00 1.59513300e+00 1.59170948e+00 + 1.58829330e+00 1.58488446e+00 1.58148293e+00 1.57808870e+00 1.57470176e+00 + 1.57132209e+00 1.56794967e+00 1.56458448e+00 1.56122652e+00 1.55787577e+00 + 1.55453221e+00 1.55119582e+00 1.54786660e+00 1.54454452e+00 1.54122957e+00 + 1.53792173e+00 1.53462100e+00 1.53132735e+00 1.52804076e+00 1.52476123e+00 + 1.52148874e+00 1.51822328e+00 1.51496482e+00 1.51171335e+00 1.50846886e+00 + 1.50523134e+00 1.50200077e+00 1.49877712e+00 1.49556040e+00 1.49235058e+00 + 1.48914765e+00 1.48595159e+00 1.48276240e+00 1.47958005e+00 1.47640452e+00 + 1.47323582e+00 1.47007391e+00 1.46691879e+00 1.46377044e+00 1.46062885e+00 + 1.45749400e+00 1.45436588e+00 1.45124447e+00 1.44812976e+00 1.44502174e+00 + 1.44192039e+00 1.43882569e+00 1.43573763e+00 1.43265621e+00 1.42958139e+00 + 1.42651318e+00 1.42345155e+00 1.42039649e+00 1.41734799e+00 1.41430603e+00 + 1.41127059e+00 1.40824168e+00 1.40521926e+00 1.40220333e+00 1.39919388e+00 + 1.39619088e+00 1.39319433e+00 1.39020420e+00 1.38722050e+00 1.38424320e+00 + 1.38127229e+00 1.37830775e+00 1.37534958e+00 1.37239776e+00 1.36945227e+00 + 1.36651310e+00 1.36358024e+00 1.36065367e+00 1.35773339e+00 1.35481937e+00 + 1.35191161e+00 1.34901009e+00 1.34611479e+00 1.34322571e+00 1.34034283e+00 + 1.33746613e+00 1.33459561e+00 1.33173125e+00 1.32887304e+00 1.32602096e+00 + 1.32317500e+00 1.32033515e+00 1.31750140e+00 1.31467372e+00 1.31185212e+00 + 1.30903657e+00 1.30622706e+00 1.30342358e+00 1.30062612e+00 1.29783466e+00 + 1.29504919e+00 1.29226970e+00 1.28949618e+00 1.28672861e+00 1.28396697e+00 + 1.28121127e+00 1.27846147e+00 1.27571758e+00 1.27297958e+00 1.27024745e+00 + 1.26752119e+00 1.26480077e+00 1.26208620e+00 1.25937745e+00 1.25667451e+00 + 1.25397737e+00 1.25128603e+00 1.24860045e+00 1.24592064e+00 1.24324658e+00 + 1.24057826e+00 1.23791567e+00 1.23525878e+00 1.23260760e+00 1.22996211e+00 + 1.22732230e+00 1.22468815e+00 1.22205965e+00 1.21943680e+00 1.21681957e+00 + 1.21420796e+00 1.21160195e+00 1.20900153e+00 1.20640670e+00 1.20381743e+00 + 1.20123372e+00 1.19865555e+00 1.19608291e+00 1.19351580e+00 1.19095419e+00 + 1.18839808e+00 1.18584745e+00 1.18330230e+00 1.18076261e+00 1.17822836e+00 + 1.17569956e+00 1.17317618e+00 1.17065821e+00 1.16814565e+00 1.16563847e+00 + 1.16313668e+00 1.16064025e+00 1.15814918e+00 1.15566346e+00 1.15318306e+00 + 1.15070799e+00 1.14823823e+00 1.14577377e+00 1.14331459e+00 1.14086069e+00 + 1.13841205e+00 1.13596867e+00 1.13353053e+00 1.13109762e+00 1.12866992e+00 + 1.12624744e+00 1.12383015e+00 1.12141805e+00 1.11901112e+00 1.11660935e+00 + 1.11421273e+00 1.11182126e+00 1.10943491e+00 1.10705368e+00 1.10467756e+00 + 1.10230654e+00 1.09994060e+00 1.09757973e+00 1.09522393e+00 1.09287318e+00 + 1.09052747e+00 1.08818679e+00 1.08585113e+00 1.08352048e+00 1.08119483e+00 + 1.07887416e+00 1.07655847e+00 1.07424774e+00 1.07194197e+00 1.06964114e+00 + 1.06734525e+00 1.06505427e+00 1.06276821e+00 1.06048705e+00 1.05821077e+00 + 1.05593938e+00 1.05367285e+00 1.05141119e+00 1.04915437e+00 1.04690238e+00 + 1.04465523e+00 1.04241289e+00 1.04017535e+00 1.03794261e+00 1.03571465e+00 + 1.03349147e+00 1.03127304e+00 1.02905938e+00 1.02685045e+00 1.02464626e+00 + 1.02244678e+00 1.02025202e+00 1.01806196e+00 1.01587659e+00 1.01369590e+00 + 1.01151988e+00 1.00934851e+00 1.00718180e+00 1.00501973e+00 1.00286228e+00 + 1.00070946e+00 9.98561236e-01 9.96417615e-01 9.94278581e-01 9.92144125e-01 + 9.90014236e-01 9.87888904e-01 9.85768119e-01 9.83651871e-01 9.81540149e-01 + 9.79432944e-01 9.77330246e-01 9.75232044e-01 9.73138328e-01 9.71049088e-01 + 9.68964314e-01 9.66883996e-01 9.64808125e-01 9.62736689e-01 9.60669679e-01 + 9.58607085e-01 9.56548897e-01 9.54495105e-01 9.52445699e-01 9.50400669e-01 + 9.48360004e-01 9.46323696e-01 9.44291733e-01 9.42264107e-01 9.40240807e-01 + 9.38221822e-01 9.36207144e-01 9.34196763e-01 9.32190667e-01 9.30188848e-01 + 9.28191295e-01 9.26197999e-01 9.24208949e-01 9.22224136e-01 9.20243549e-01 + 9.18267179e-01 9.16295016e-01 9.14327050e-01 9.12363271e-01 9.10403669e-01 + 9.08448234e-01 9.06496956e-01 9.04549825e-01 9.02606832e-01 9.00667966e-01 + 8.98733217e-01 8.96802576e-01 8.94876032e-01 8.92953575e-01 8.91035196e-01 + 8.89120885e-01 8.87210631e-01 8.85304424e-01 8.83402255e-01 8.81504113e-01 + 8.79609989e-01 8.77719872e-01 8.75833752e-01 8.73951619e-01 8.72073464e-01 + 8.70199275e-01 8.68329043e-01 8.66462758e-01 8.64600409e-01 8.62741986e-01 + 8.60887479e-01 8.59036879e-01 8.57190173e-01 8.55347353e-01 8.53508408e-01 + 8.51673328e-01 8.49842102e-01 8.48014719e-01 8.46191170e-01 8.44371444e-01 + 8.42555531e-01 8.40743420e-01 8.38935100e-01 8.37130561e-01 8.35329792e-01 + 8.33532782e-01 8.31739522e-01 8.29950000e-01 8.28164205e-01 8.26382127e-01 + 8.24603754e-01 8.22829076e-01 8.21058082e-01 8.19290760e-01 8.17527101e-01 + 8.15767091e-01 8.14010722e-01 8.12257980e-01 8.10508856e-01 8.08763337e-01 + 8.07021412e-01 8.05283069e-01 8.03548298e-01 8.01817087e-01 8.00089423e-01 + 7.98365295e-01 7.96644692e-01 7.94927601e-01 7.93214010e-01 7.91503908e-01 + 7.89797282e-01 7.88094120e-01 7.86394410e-01 7.84698139e-01 7.83005295e-01 + 7.81315865e-01 7.79629836e-01 7.77947197e-01 7.76267933e-01 7.74592033e-01 + 7.72919482e-01 7.71250267e-01 7.69584376e-01 7.67921795e-01 7.66262510e-01 + 7.64606508e-01 7.62953775e-01 7.61304297e-01 7.59658059e-01 7.58015048e-01 + 7.56375250e-01 7.54738649e-01 7.53105231e-01 7.51474982e-01 7.49847887e-01 + 7.48223929e-01 7.46603095e-01 7.44985369e-01 7.43370735e-01 7.41759177e-01 + 7.40150680e-01 7.38545227e-01 7.36942802e-01 7.35343389e-01 7.33746970e-01 + 7.32153529e-01 7.30563049e-01 7.28975513e-01 7.27390903e-01 7.25809201e-01 + 7.24230389e-01 7.22654449e-01 7.21081363e-01 7.19511112e-01 7.17943676e-01 + 7.16379038e-01 7.14817176e-01 7.13258073e-01 7.11701707e-01 7.10148058e-01 + 7.08597106e-01 7.07048830e-01 7.05503209e-01 7.03960221e-01 7.02419845e-01 + 7.00882058e-01 6.99346838e-01 6.97814163e-01 6.96284009e-01 6.94756352e-01 + 6.93231170e-01 6.91708437e-01 6.90188130e-01 6.88670223e-01 6.87154691e-01 + 6.85641509e-01 6.84130649e-01 6.82622086e-01 6.81115793e-01 6.79611743e-01 + 6.78109907e-01 6.76610256e-01 6.75112764e-01 6.73617399e-01 6.72124133e-01 + 6.70632935e-01 6.69143774e-01 6.67656619e-01 6.66171439e-01 6.64688201e-01 + 6.63206872e-01 6.61727419e-01 6.60249807e-01 6.58774002e-01 6.57299969e-01 + 6.55827672e-01 6.54357074e-01 6.52888139e-01 6.51420829e-01 6.49955104e-01 + 6.48490927e-01 6.47028257e-01 6.45567053e-01 6.44107275e-01 6.42648880e-01 + 6.41191826e-01 6.39736069e-01 6.38281565e-01 6.36828269e-01 6.35376134e-01 + 6.33925114e-01 6.32475162e-01 6.31026228e-01 6.29578264e-01 6.28131219e-01 + 6.26685041e-01 6.25239679e-01 6.23795080e-01 6.22351189e-01 6.20907951e-01 + 6.19465310e-01 6.18023208e-01 6.16581589e-01 6.15140391e-01 6.13699555e-01 + 6.12259019e-01 6.10818721e-01 6.09378596e-01 6.07938579e-01 6.06498604e-01 + 6.05058604e-01 6.03618509e-01 6.02178250e-01 6.00737754e-01 5.99296950e-01 + 5.97855763e-01 5.96414118e-01 5.94971938e-01 5.93529144e-01 5.92085657e-01 + 5.90641395e-01 5.89196275e-01 5.87750214e-01 5.86303125e-01 5.84854920e-01 + 5.83405511e-01 5.81954807e-01 5.80502715e-01 5.79049141e-01 5.77593989e-01 + 5.76137162e-01 5.74678560e-01 5.73218082e-01 5.71755624e-01 5.70291081e-01 + 5.68824347e-01 5.67355312e-01 5.65883866e-01 5.64409896e-01 5.62933287e-01 + 5.61453921e-01 5.59971680e-01 5.58486443e-01 5.56998085e-01 5.55506482e-01 + 5.54011505e-01 5.52513025e-01 5.51010909e-01 5.49505022e-01 5.47995227e-01 + 5.46481386e-01 5.44963355e-01 5.43440991e-01 5.41914147e-01 5.40382673e-01 + 5.38846419e-01 5.37305229e-01 5.35758946e-01 5.34207411e-01 5.32650462e-01 + 5.31087934e-01 5.29519659e-01 5.27945467e-01 5.26365185e-01 5.24778637e-01 + 5.23185644e-01 5.21586025e-01 5.19979596e-01 5.18366169e-01 5.16745554e-01 + 5.15117559e-01 5.13481987e-01 5.11838640e-01 5.10187316e-01 5.08527810e-01 + 5.06859916e-01 5.05183421e-01 5.03498113e-01 5.01803775e-01 5.00100187e-01 + 4.98387128e-01 4.96664371e-01 4.94931688e-01 4.93188848e-01 4.91435617e-01 + 4.89671756e-01 4.87897027e-01 4.86111186e-01 4.84313987e-01 4.82505182e-01 + 4.80684518e-01 4.78851743e-01 4.77006599e-01 4.75148825e-01 4.73278161e-01 + 4.71394342e-01 4.69497099e-01 4.67586165e-01 4.65661265e-01 4.63722128e-01 + 4.61768475e-01 4.59800029e-01 4.57816510e-01 4.55817634e-01 4.53803118e-01 + 4.51772676e-01 4.49726022e-01 4.47662866e-01 4.45582919e-01 4.43485891e-01 + 4.41371488e-01 4.39239420e-01 4.37089394e-01 4.34921115e-01 4.32734292e-01 + 4.30528630e-01 4.28303837e-01 4.26059620e-01 4.23795689e-01 4.21511752e-01 + 4.19207520e-01 4.16882707e-01 4.14537026e-01 4.12170195e-01 4.09781933e-01 + 4.07371963e-01 4.04940009e-01 4.02485802e-01 4.00009075e-01 3.97509566e-01 + 3.94987017e-01 3.92441177e-01 3.89871799e-01 3.87278645e-01 3.84661480e-01 + 3.82020079e-01 3.79354224e-01 3.76663705e-01 3.73948321e-01 3.71207881e-01 + 3.68442203e-01 3.65651117e-01 3.62834463e-01 3.59992093e-01 3.57123872e-01 + 3.54229679e-01 3.51309405e-01 3.48362957e-01 3.45390258e-01 3.42391245e-01 + 3.39365874e-01 3.36314117e-01 3.33235967e-01 3.30131432e-01 3.27000544e-01 + 3.23843354e-01 3.20659935e-01 3.17450383e-01 3.14214817e-01 3.10953381e-01 + 3.07666242e-01 3.04353596e-01 3.01015664e-01 2.97652696e-01 2.94264969e-01 + 2.90852790e-01 2.87416499e-01 2.83956463e-01 2.80473085e-01 2.76966798e-01 + 2.73438070e-01 2.69887404e-01 2.66315338e-01 2.62722445e-01 2.59109338e-01 + 2.55476663e-01 2.51825108e-01 2.48155397e-01 2.44468296e-01 2.40764610e-01 + 2.37045183e-01 2.33310901e-01 2.29562691e-01 2.25801522e-01 2.22028404e-01 + 2.18244389e-01 2.14450570e-01 2.10648085e-01 2.06838110e-01 2.03021865e-01 + 1.99200609e-01 1.95375646e-01 1.91548315e-01 1.87719999e-01 1.83892119e-01 + 1.80066132e-01 1.76243534e-01 1.72425858e-01 1.68614668e-01 1.64811566e-01 + 1.61018182e-01 1.57236178e-01 1.53467243e-01 1.49713092e-01 1.45975466e-01 + 1.42256126e-01 1.38556852e-01 1.34879442e-01 1.31225705e-01 1.27597466e-01 + 1.23996551e-01 1.20424797e-01 1.16884039e-01 1.13376108e-01 1.09902834e-01 + 1.06466032e-01 1.03067507e-01 9.97090454e-02 9.63924113e-02 9.31193435e-02 + 8.98915508e-02 8.67107074e-02 8.35784489e-02 8.04963677e-02 7.74660087e-02 + 7.44888648e-02 7.15663729e-02 6.86999091e-02 6.58907847e-02 6.31402418e-02 + 6.04494498e-02 5.78195005e-02 5.52514054e-02 5.27460911e-02 5.03043967e-02 + 4.79270698e-02 4.56147642e-02 4.33680371e-02 4.11873461e-02 3.90730481e-02 + 3.70253965e-02 3.50445405e-02 3.31305238e-02 3.12832841e-02 2.95026522e-02 + 2.77883531e-02 2.61400057e-02 2.45571244e-02 2.30391200e-02 2.15853019e-02 + 2.01948803e-02 1.88669688e-02 1.76005877e-02 1.63946672e-02 1.52480519e-02 + 1.41595045e-02 1.31277111e-02 1.21512857e-02 1.12287758e-02 1.03586680e-02 + 9.53939392e-03 8.76933619e-03 8.04683477e-03 7.37019339e-03 6.73768606e-03 + 6.14756365e-03 5.59806047e-03 5.08740088e-03 4.61380575e-03 4.17549890e-03 + 3.77071328e-03 3.39769704e-03 3.05471932e-03 2.74007581e-03 2.45209391e-03 + 2.18913767e-03 1.94961227e-03 1.73196817e-03 1.53470479e-03 1.35637382e-03 + 1.19558204e-03 1.05099372e-03 9.21332559e-04 8.05383193e-04 7.01992213e-04 + 6.10068796e-04 5.28584903e-04 4.56575066e-04 3.93135809e-04 3.37424713e-04 + 2.88659146e-04 2.46114711e-04 2.09123417e-04 1.77071629e-04 1.49397813e-04 + 1.25590119e-04 1.05183840e-04 8.77587673e-05 7.29364877e-05 6.03776430e-05 + 4.97791872e-05 4.08716659e-05 3.34165405e-05 2.72035814e-05 2.20483479e-05 + 1.77897704e-05 1.42878490e-05 1.14214793e-05 9.08641104e-06 7.19334759e-06 + 5.66618684e-06 4.44040494e-06 3.46158128e-06 2.68406139e-06 2.06975312e-06 + 1.58705007e-06 1.20987538e-06 9.16838150e-07 6.90494318e-07 5.16703483e-07 + 3.84073119e-07 2.83481627e-07 2.07671932e-07 1.50907666e-07 1.08684371e-07 + 7.74887026e-08 5.45991257e-08 3.79221873e-08 2.58590381e-08 1.71974474e-08 + 1.10251239e-08 6.66069066e-09 3.59915934e-09 1.46921029e-09 0.00000000e+00 + 9.31535205e+00 9.31535205e+00 9.31535205e+00 9.31535205e+00 9.31535205e+00 + 9.31535205e+00 9.31535205e+00 9.31535205e+00 9.31535205e+00 9.31535205e+00 + 9.31535205e+00 9.31535205e+00 9.31535205e+00 9.31535205e+00 9.31535205e+00 + 9.31535205e+00 9.31535205e+00 9.31535205e+00 9.31535205e+00 9.31535205e+00 + 9.31535205e+00 9.31535205e+00 9.31535205e+00 9.31535205e+00 9.31535205e+00 + 9.31535205e+00 9.31535205e+00 9.31535205e+00 9.31535205e+00 9.31535205e+00 + 9.31535205e+00 9.31535205e+00 9.31535205e+00 9.31535205e+00 9.31535205e+00 + 9.31535205e+00 9.31535205e+00 9.31535205e+00 9.31535205e+00 9.31535205e+00 + 9.31535205e+00 9.31535205e+00 9.31535205e+00 9.30248929e+00 9.28626121e+00 + 9.27006144e+00 9.25388993e+00 9.23774663e+00 9.22163150e+00 9.20554447e+00 + 9.18948551e+00 9.17345456e+00 9.15745158e+00 9.14147652e+00 9.12552932e+00 + 9.10960995e+00 9.09371834e+00 9.07785446e+00 9.06201825e+00 9.04620967e+00 + 9.03042867e+00 9.01467520e+00 8.99894920e+00 8.98325065e+00 8.96757947e+00 + 8.95193564e+00 8.93631910e+00 8.92072979e+00 8.90516769e+00 8.88963273e+00 + 8.87412487e+00 8.85864407e+00 8.84319027e+00 8.82776344e+00 8.81236351e+00 + 8.79699045e+00 8.78164420e+00 8.76632473e+00 8.75103198e+00 8.73576591e+00 + 8.72052648e+00 8.70531362e+00 8.69012731e+00 8.67496749e+00 8.65983411e+00 + 8.64472713e+00 8.62964651e+00 8.61459220e+00 8.59956415e+00 8.58456231e+00 + 8.56958664e+00 8.55463710e+00 8.53971364e+00 8.52481622e+00 8.50994478e+00 + 8.49509928e+00 8.48027968e+00 8.46548594e+00 8.45071800e+00 8.43597582e+00 + 8.42125937e+00 8.40656858e+00 8.39190342e+00 8.37726385e+00 8.36264981e+00 + 8.34806127e+00 8.33349818e+00 8.31896049e+00 8.30444817e+00 8.28996116e+00 + 8.27549942e+00 8.26106291e+00 8.24665159e+00 8.23226540e+00 8.21790432e+00 + 8.20356828e+00 8.18925725e+00 8.17497119e+00 8.16071006e+00 8.14647380e+00 + 8.13226237e+00 8.11807574e+00 8.10391385e+00 8.08977667e+00 8.07566415e+00 + 8.06157626e+00 8.04751293e+00 8.03347414e+00 8.01945985e+00 8.00546999e+00 + 7.99150455e+00 7.97756347e+00 7.96364670e+00 7.94975422e+00 7.93588597e+00 + 7.92204191e+00 7.90822200e+00 7.89442621e+00 7.88065447e+00 7.86690677e+00 + 7.85318304e+00 7.83948326e+00 7.82580738e+00 7.81215535e+00 7.79852714e+00 + 7.78492270e+00 7.77134200e+00 7.75778499e+00 7.74425163e+00 7.73074187e+00 + 7.71725569e+00 7.70379303e+00 7.69035385e+00 7.67693812e+00 7.66354580e+00 + 7.65017684e+00 7.63683119e+00 7.62350883e+00 7.61020972e+00 7.59693380e+00 + 7.58368104e+00 7.57045140e+00 7.55724484e+00 7.54406131e+00 7.53090079e+00 + 7.51776322e+00 7.50464858e+00 7.49155681e+00 7.47848788e+00 7.46544175e+00 + 7.45241837e+00 7.43941772e+00 7.42643975e+00 7.41348441e+00 7.40055168e+00 + 7.38764150e+00 7.37475385e+00 7.36188868e+00 7.34904596e+00 7.33622564e+00 + 7.32342768e+00 7.31065205e+00 7.29789870e+00 7.28516761e+00 7.27245872e+00 + 7.25977200e+00 7.24710742e+00 7.23446493e+00 7.22184449e+00 7.20924607e+00 + 7.19666963e+00 7.18411512e+00 7.17158252e+00 7.15907178e+00 7.14658287e+00 + 7.13411574e+00 7.12167036e+00 7.10924669e+00 7.09684470e+00 7.08446434e+00 + 7.07210558e+00 7.05976837e+00 7.04745269e+00 7.03515850e+00 7.02288575e+00 + 7.01063441e+00 6.99840444e+00 6.98619581e+00 6.97400848e+00 6.96184240e+00 + 6.94969755e+00 6.93757389e+00 6.92547138e+00 6.91338997e+00 6.90132965e+00 + 6.88929036e+00 6.87727208e+00 6.86527476e+00 6.85329837e+00 6.84134288e+00 + 6.82940824e+00 6.81749442e+00 6.80560138e+00 6.79372909e+00 6.78187751e+00 + 6.77004661e+00 6.75823634e+00 6.74644668e+00 6.73467759e+00 6.72292902e+00 + 6.71120095e+00 6.69949335e+00 6.68780616e+00 6.67613936e+00 6.66449292e+00 + 6.65286679e+00 6.64126095e+00 6.62967535e+00 6.61810996e+00 6.60656474e+00 + 6.59503967e+00 6.58353471e+00 6.57204981e+00 6.56058495e+00 6.54914009e+00 + 6.53771519e+00 6.52631022e+00 6.51492516e+00 6.50355995e+00 6.49221457e+00 + 6.48088898e+00 6.46958314e+00 6.45829703e+00 6.44703061e+00 6.43578385e+00 + 6.42455670e+00 6.41334914e+00 6.40216113e+00 6.39099263e+00 6.37984362e+00 + 6.36871406e+00 6.35760392e+00 6.34651316e+00 6.33544174e+00 6.32438964e+00 + 6.31335682e+00 6.30234324e+00 6.29134888e+00 6.28037370e+00 6.26941766e+00 + 6.25848074e+00 6.24756290e+00 6.23666410e+00 6.22578431e+00 6.21492351e+00 + 6.20408165e+00 6.19325870e+00 6.18245464e+00 6.17166942e+00 6.16090302e+00 + 6.15015540e+00 6.13942652e+00 6.12871637e+00 6.11802490e+00 6.10735208e+00 + 6.09669787e+00 6.08606226e+00 6.07544520e+00 6.06484666e+00 6.05426660e+00 + 6.04370501e+00 6.03316184e+00 6.02263706e+00 6.01213064e+00 6.00164255e+00 + 5.99117276e+00 5.98072123e+00 5.97028794e+00 5.95987284e+00 5.94947592e+00 + 5.93909713e+00 5.92873644e+00 5.91839383e+00 5.90806927e+00 5.89776271e+00 + 5.88747414e+00 5.87720351e+00 5.86695080e+00 5.85671597e+00 5.84649900e+00 + 5.83629986e+00 5.82611850e+00 5.81595491e+00 5.80580905e+00 5.79568088e+00 + 5.78557039e+00 5.77547753e+00 5.76540228e+00 5.75534460e+00 5.74530447e+00 + 5.73528186e+00 5.72527673e+00 5.71528905e+00 5.70531880e+00 5.69536594e+00 + 5.68543044e+00 5.67551228e+00 5.66561142e+00 5.65572783e+00 5.64586148e+00 + 5.63601234e+00 5.62618038e+00 5.61636558e+00 5.60656790e+00 5.59678731e+00 + 5.58702378e+00 5.57727729e+00 5.56754779e+00 5.55783527e+00 5.54813970e+00 + 5.53846103e+00 5.52879926e+00 5.51915433e+00 5.50952623e+00 5.49991493e+00 + 5.49032040e+00 5.48074260e+00 5.47118151e+00 5.46163710e+00 5.45210934e+00 + 5.44259820e+00 5.43310365e+00 5.42362567e+00 5.41416422e+00 5.40471928e+00 + 5.39529081e+00 5.38587879e+00 5.37648319e+00 5.36710398e+00 5.35774113e+00 + 5.34839462e+00 5.33906441e+00 5.32975047e+00 5.32045279e+00 5.31117132e+00 + 5.30190605e+00 5.29265694e+00 5.28342396e+00 5.27420709e+00 5.26500630e+00 + 5.25582156e+00 5.24665284e+00 5.23750012e+00 5.22836337e+00 5.21924255e+00 + 5.21013764e+00 5.20104862e+00 5.19197545e+00 5.18291812e+00 5.17387658e+00 + 5.16485081e+00 5.15584079e+00 5.14684649e+00 5.13786788e+00 5.12890493e+00 + 5.11995762e+00 5.11102591e+00 5.10210979e+00 5.09320922e+00 5.08432418e+00 + 5.07545464e+00 5.06660057e+00 5.05776195e+00 5.04893874e+00 5.04013093e+00 + 5.03133848e+00 5.02256137e+00 5.01379957e+00 5.00505306e+00 4.99632181e+00 + 4.98760578e+00 4.97890496e+00 4.97021933e+00 4.96154884e+00 4.95289348e+00 + 4.94425321e+00 4.93562802e+00 4.92701788e+00 4.91842276e+00 4.90984263e+00 + 4.90127747e+00 4.89272725e+00 4.88419194e+00 4.87567153e+00 4.86716598e+00 + 4.85867527e+00 4.85019937e+00 4.84173825e+00 4.83329190e+00 4.82486028e+00 + 4.81644337e+00 4.80804114e+00 4.79965357e+00 4.79128063e+00 4.78292230e+00 + 4.77457855e+00 4.76624936e+00 4.75793469e+00 4.74963453e+00 4.74134885e+00 + 4.73307763e+00 4.72482083e+00 4.71657844e+00 4.70835042e+00 4.70013676e+00 + 4.69193743e+00 4.68375240e+00 4.67558165e+00 4.66742516e+00 4.65928289e+00 + 4.65115483e+00 4.64304095e+00 4.63494122e+00 4.62685562e+00 4.61878412e+00 + 4.61072671e+00 4.60268335e+00 4.59465403e+00 4.58663871e+00 4.57863737e+00 + 4.57065000e+00 4.56267655e+00 4.55471702e+00 4.54677137e+00 4.53883958e+00 + 4.53092163e+00 4.52301749e+00 4.51512714e+00 4.50725056e+00 4.49938771e+00 + 4.49153859e+00 4.48370315e+00 4.47588139e+00 4.46807327e+00 4.46027877e+00 + 4.45249786e+00 4.44473053e+00 4.43697676e+00 4.42923650e+00 4.42150975e+00 + 4.41379648e+00 4.40609667e+00 4.39841029e+00 4.39073731e+00 4.38307772e+00 + 4.37543150e+00 4.36779861e+00 4.36017904e+00 4.35257276e+00 4.34497975e+00 + 4.33739998e+00 4.32983344e+00 4.32228010e+00 4.31473993e+00 4.30721292e+00 + 4.29969904e+00 4.29219827e+00 4.28471058e+00 4.27723595e+00 4.26977437e+00 + 4.26232580e+00 4.25489022e+00 4.24746762e+00 4.24005796e+00 4.23266123e+00 + 4.22527741e+00 4.21790646e+00 4.21054837e+00 4.20320312e+00 4.19587069e+00 + 4.18855104e+00 4.18124416e+00 4.17395003e+00 4.16666863e+00 4.15939992e+00 + 4.15214390e+00 4.14490054e+00 4.13766981e+00 4.13045169e+00 4.12324617e+00 + 4.11605322e+00 4.10887281e+00 4.10170493e+00 4.09454956e+00 4.08740667e+00 + 4.08027623e+00 4.07315824e+00 4.06605267e+00 4.05895949e+00 4.05187868e+00 + 4.04481023e+00 4.03775410e+00 4.03071029e+00 4.02367877e+00 4.01665951e+00 + 4.00965249e+00 4.00265770e+00 3.99567511e+00 3.98870471e+00 3.98174646e+00 + 3.97480035e+00 3.96786636e+00 3.96094447e+00 3.95403465e+00 3.94713688e+00 + 3.94025115e+00 3.93337743e+00 3.92651570e+00 3.91966594e+00 3.91282813e+00 + 3.90600225e+00 3.89918827e+00 3.89238619e+00 3.88559597e+00 3.87881759e+00 + 3.87205104e+00 3.86529629e+00 3.85855333e+00 3.85182213e+00 3.84510267e+00 + 3.83839494e+00 3.83169891e+00 3.82501455e+00 3.81834186e+00 3.81168081e+00 + 3.80503138e+00 3.79839355e+00 3.79176730e+00 3.78515260e+00 3.77854945e+00 + 3.77195782e+00 3.76537768e+00 3.75880903e+00 3.75225183e+00 3.74570607e+00 + 3.73917173e+00 3.73264879e+00 3.72613723e+00 3.71963703e+00 3.71314817e+00 + 3.70667063e+00 3.70020438e+00 3.69374942e+00 3.68730572e+00 3.68087326e+00 + 3.67445202e+00 3.66804198e+00 3.66164313e+00 3.65525544e+00 3.64887889e+00 + 3.64251346e+00 3.63615914e+00 3.62981591e+00 3.62348374e+00 3.61716261e+00 + 3.61085252e+00 3.60455343e+00 3.59826533e+00 3.59198820e+00 3.58572202e+00 + 3.57946677e+00 3.57322243e+00 3.56698899e+00 3.56076642e+00 3.55455471e+00 + 3.54835383e+00 3.54216377e+00 3.53598451e+00 3.52981602e+00 3.52365830e+00 + 3.51751132e+00 3.51137507e+00 3.50524952e+00 3.49913465e+00 3.49303045e+00 + 3.48693690e+00 3.48085398e+00 3.47478168e+00 3.46871996e+00 3.46266882e+00 + 3.45662824e+00 3.45059819e+00 3.44457866e+00 3.43856964e+00 3.43257109e+00 + 3.42658302e+00 3.42060538e+00 3.41463818e+00 3.40868138e+00 3.40273498e+00 + 3.39679895e+00 3.39087327e+00 3.38495794e+00 3.37905292e+00 3.37315820e+00 + 3.36727377e+00 3.36139960e+00 3.35553568e+00 3.34968199e+00 3.34383851e+00 + 3.33800522e+00 3.33218211e+00 3.32636916e+00 3.32056635e+00 3.31477366e+00 + 3.30899108e+00 3.30321858e+00 3.29745616e+00 3.29170379e+00 3.28596145e+00 + 3.28022913e+00 3.27450681e+00 3.26879447e+00 3.26309210e+00 3.25739967e+00 + 3.25171718e+00 3.24604460e+00 3.24038191e+00 3.23472911e+00 3.22908616e+00 + 3.22345306e+00 3.21782978e+00 3.21221632e+00 3.20661265e+00 3.20101875e+00 + 3.19543461e+00 3.18986021e+00 3.18429554e+00 3.17874058e+00 3.17319530e+00 + 3.16765970e+00 3.16213376e+00 3.15661745e+00 3.15111077e+00 3.14561370e+00 + 3.14012621e+00 3.13464830e+00 3.12917994e+00 3.12372113e+00 3.11827183e+00 + 3.11283204e+00 3.10740175e+00 3.10198092e+00 3.09656955e+00 3.09116763e+00 + 3.08577512e+00 3.08039202e+00 3.07501832e+00 3.06965398e+00 3.06429901e+00 + 3.05895338e+00 3.05361707e+00 3.04829007e+00 3.04297237e+00 3.03766394e+00 + 3.03236477e+00 3.02707485e+00 3.02179415e+00 3.01652267e+00 3.01126038e+00 + 3.00600727e+00 3.00076333e+00 2.99552853e+00 2.99030287e+00 2.98508632e+00 + 2.97987888e+00 2.97468051e+00 2.96949122e+00 2.96431098e+00 2.95913977e+00 + 2.95397759e+00 2.94882441e+00 2.94368022e+00 2.93854501e+00 2.93341875e+00 + 2.92830144e+00 2.92319305e+00 2.91809358e+00 2.91300300e+00 2.90792130e+00 + 2.90284847e+00 2.89778448e+00 2.89272933e+00 2.88768300e+00 2.88264547e+00 + 2.87761673e+00 2.87259676e+00 2.86758555e+00 2.86258309e+00 2.85758934e+00 + 2.85260431e+00 2.84762798e+00 2.84266033e+00 2.83770134e+00 2.83275101e+00 + 2.82780931e+00 2.82287623e+00 2.81795175e+00 2.81303587e+00 2.80812856e+00 + 2.80322982e+00 2.79833962e+00 2.79345795e+00 2.78858479e+00 2.78372014e+00 + 2.77886397e+00 2.77401628e+00 2.76917704e+00 2.76434625e+00 2.75952388e+00 + 2.75470992e+00 2.74990436e+00 2.74510719e+00 2.74031838e+00 2.73553793e+00 + 2.73076582e+00 2.72600203e+00 2.72124655e+00 2.71649937e+00 2.71176047e+00 + 2.70702984e+00 2.70230745e+00 2.69759331e+00 2.69288739e+00 2.68818968e+00 + 2.68350017e+00 2.67881883e+00 2.67414567e+00 2.66948065e+00 2.66482378e+00 + 2.66017502e+00 2.65553438e+00 2.65090183e+00 2.64627737e+00 2.64166097e+00 + 2.63705262e+00 2.63245232e+00 2.62786003e+00 2.62327576e+00 2.61869949e+00 + 2.61413120e+00 2.60957088e+00 2.60501852e+00 2.60047409e+00 2.59593760e+00 + 2.59140902e+00 2.58688833e+00 2.58237554e+00 2.57787061e+00 2.57337355e+00 + 2.56888433e+00 2.56440294e+00 2.55992937e+00 2.55546361e+00 2.55100563e+00 + 2.54655543e+00 2.54211300e+00 2.53767831e+00 2.53325136e+00 2.52883214e+00 + 2.52442062e+00 2.52001680e+00 2.51562066e+00 2.51123219e+00 2.50685138e+00 + 2.50247820e+00 2.49811266e+00 2.49375473e+00 2.48940441e+00 2.48506167e+00 + 2.48072651e+00 2.47639892e+00 2.47207887e+00 2.46776636e+00 2.46346137e+00 + 2.45916389e+00 2.45487391e+00 2.45059141e+00 2.44631638e+00 2.44204881e+00 + 2.43778869e+00 2.43353599e+00 2.42929072e+00 2.42505285e+00 2.42082238e+00 + 2.41659928e+00 2.41238355e+00 2.40817518e+00 2.40397415e+00 2.39978044e+00 + 2.39559405e+00 2.39141497e+00 2.38724317e+00 2.38307866e+00 2.37892141e+00 + 2.37477141e+00 2.37062865e+00 2.36649311e+00 2.36236479e+00 2.35824368e+00 + 2.35412975e+00 2.35002300e+00 2.34592341e+00 2.34183098e+00 2.33774568e+00 + 2.33366751e+00 2.32959646e+00 2.32553250e+00 2.32147564e+00 2.31742585e+00 + 2.31338313e+00 2.30934746e+00 2.30531883e+00 2.30129723e+00 2.29728265e+00 + 2.29327507e+00 2.28927447e+00 2.28528086e+00 2.28129422e+00 2.27731453e+00 + 2.27334178e+00 2.26937596e+00 2.26541706e+00 2.26146507e+00 2.25751997e+00 + 2.25358176e+00 2.24965041e+00 2.24572592e+00 2.24180828e+00 2.23789747e+00 + 2.23399349e+00 2.23009631e+00 2.22620593e+00 2.22232235e+00 2.21844553e+00 + 2.21457548e+00 2.21071218e+00 2.20685562e+00 2.20300578e+00 2.19916267e+00 + 2.19532625e+00 2.19149653e+00 2.18767349e+00 2.18385712e+00 2.18004741e+00 + 2.17624434e+00 2.17244791e+00 2.16865810e+00 2.16487490e+00 2.16109831e+00 + 2.15732830e+00 2.15356486e+00 2.14980799e+00 2.14605768e+00 2.14231391e+00 + 2.13857667e+00 2.13484594e+00 2.13112173e+00 2.12740401e+00 2.12369278e+00 + 2.11998803e+00 2.11628973e+00 2.11259789e+00 2.10891249e+00 2.10523352e+00 + 2.10156096e+00 2.09789481e+00 2.09423506e+00 2.09058169e+00 2.08693470e+00 + 2.08329406e+00 2.07965978e+00 2.07603184e+00 2.07241023e+00 2.06879493e+00 + 2.06518594e+00 2.06158325e+00 2.05798684e+00 2.05439671e+00 2.05081284e+00 + 2.04723522e+00 2.04366384e+00 2.04009869e+00 2.03653976e+00 2.03298704e+00 + 2.02944052e+00 2.02590019e+00 2.02236603e+00 2.01883803e+00 2.01531619e+00 + 2.01180050e+00 2.00829094e+00 2.00478749e+00 2.00129017e+00 1.99779894e+00 + 1.99431380e+00 1.99083474e+00 1.98736176e+00 1.98389483e+00 1.98043394e+00 + 1.97697910e+00 1.97353028e+00 1.97008748e+00 1.96665069e+00 1.96321989e+00 + 1.95979507e+00 1.95637623e+00 1.95296335e+00 1.94955643e+00 1.94615545e+00 + 1.94276041e+00 1.93937128e+00 1.93598807e+00 1.93261076e+00 1.92923934e+00 + 1.92587381e+00 1.92251414e+00 1.91916034e+00 1.91581238e+00 1.91247027e+00 + 1.90913398e+00 1.90580352e+00 1.90247887e+00 1.89916001e+00 1.89584695e+00 + 1.89253966e+00 1.88923815e+00 1.88594239e+00 1.88265239e+00 1.87936812e+00 + 1.87608958e+00 1.87281676e+00 1.86954965e+00 1.86628824e+00 1.86303252e+00 + 1.85978248e+00 1.85653811e+00 1.85329940e+00 1.85006634e+00 1.84683892e+00 + 1.84361712e+00 1.84040095e+00 1.83719039e+00 1.83398543e+00 1.83078606e+00 + 1.82759227e+00 1.82440406e+00 1.82122140e+00 1.81804430e+00 1.81487274e+00 + 1.81170671e+00 1.80854620e+00 1.80539121e+00 1.80224172e+00 1.79909773e+00 + 1.79595922e+00 1.79282619e+00 1.78969862e+00 1.78657650e+00 1.78345984e+00 + 1.78034861e+00 1.77724280e+00 1.77414242e+00 1.77104744e+00 1.76795786e+00 + 1.76487368e+00 1.76179487e+00 1.75872143e+00 1.75565336e+00 1.75259063e+00 + 1.74953325e+00 1.74648120e+00 1.74343448e+00 1.74039307e+00 1.73735697e+00 + 1.73432616e+00 1.73130064e+00 1.72828040e+00 1.72526543e+00 1.72225571e+00 + 1.71925125e+00 1.71625203e+00 1.71325804e+00 1.71026927e+00 1.70728571e+00 + 1.70430736e+00 1.70133421e+00 1.69836624e+00 1.69540345e+00 1.69244583e+00 + 1.68949336e+00 1.68654605e+00 1.68360388e+00 1.68066684e+00 1.67773492e+00 + 1.67480812e+00 1.67188642e+00 1.66896982e+00 1.66605831e+00 1.66315188e+00 + 1.66025051e+00 1.65735421e+00 1.65446296e+00 1.65157675e+00 1.64869558e+00 + 1.64581943e+00 1.64294830e+00 1.64008218e+00 1.63722106e+00 1.63436493e+00 + 1.63151378e+00 1.62866760e+00 1.62582639e+00 1.62299013e+00 1.62015883e+00 + 1.61733246e+00 1.61451102e+00 1.61169450e+00 1.60888289e+00 1.60607619e+00 + 1.60327439e+00 1.60047747e+00 1.59768543e+00 1.59489826e+00 1.59211595e+00 + 1.58933850e+00 1.58656589e+00 1.58379812e+00 1.58103517e+00 1.57827704e+00 + 1.57552373e+00 1.57277521e+00 1.57003149e+00 1.56729256e+00 1.56455840e+00 + 1.56182902e+00 1.55910439e+00 1.55638451e+00 1.55366938e+00 1.55095899e+00 + 1.54825332e+00 1.54555237e+00 1.54285614e+00 1.54016460e+00 1.53747776e+00 + 1.53479561e+00 1.53211813e+00 1.52944532e+00 1.52677718e+00 1.52411369e+00 + 1.52145484e+00 1.51880063e+00 1.51615105e+00 1.51350609e+00 1.51086575e+00 + 1.50823001e+00 1.50559886e+00 1.50297231e+00 1.50035033e+00 1.49773293e+00 + 1.49512009e+00 1.49251181e+00 1.48990808e+00 1.48730889e+00 1.48471423e+00 + 1.48212410e+00 1.47953849e+00 1.47695738e+00 1.47438077e+00 1.47180866e+00 + 1.46924103e+00 1.46667789e+00 1.46411921e+00 1.46156499e+00 1.45901522e+00 + 1.45646991e+00 1.45392903e+00 1.45139258e+00 1.44886055e+00 1.44633294e+00 + 1.44380974e+00 1.44129094e+00 1.43877653e+00 1.43626650e+00 1.43376085e+00 + 1.43125957e+00 1.42876265e+00 1.42627008e+00 1.42378186e+00 1.42129798e+00 + 1.41881843e+00 1.41634320e+00 1.41387229e+00 1.41140568e+00 1.40894338e+00 + 1.40648536e+00 1.40403164e+00 1.40158219e+00 1.39913701e+00 1.39669609e+00 + 1.39425943e+00 1.39182702e+00 1.38939885e+00 1.38697491e+00 1.38455519e+00 + 1.38213970e+00 1.37972841e+00 1.37732133e+00 1.37491844e+00 1.37251974e+00 + 1.37012522e+00 1.36773488e+00 1.36534870e+00 1.36296668e+00 1.36058881e+00 + 1.35821509e+00 1.35584550e+00 1.35348004e+00 1.35111870e+00 1.34876148e+00 + 1.34640837e+00 1.34405936e+00 1.34171444e+00 1.33937361e+00 1.33703685e+00 + 1.33470417e+00 1.33237555e+00 1.33005099e+00 1.32773048e+00 1.32541401e+00 + 1.32310158e+00 1.32079318e+00 1.31848880e+00 1.31618843e+00 1.31389207e+00 + 1.31159971e+00 1.30931134e+00 1.30702696e+00 1.30474655e+00 1.30247012e+00 + 1.30019766e+00 1.29792915e+00 1.29566459e+00 1.29340397e+00 1.29114730e+00 + 1.28889455e+00 1.28664572e+00 1.28440081e+00 1.28215981e+00 1.27992271e+00 + 1.27768951e+00 1.27546019e+00 1.27323475e+00 1.27101319e+00 1.26879549e+00 + 1.26658166e+00 1.26437168e+00 1.26216554e+00 1.25996324e+00 1.25776478e+00 + 1.25557014e+00 1.25337932e+00 1.25119231e+00 1.24900911e+00 1.24682971e+00 + 1.24465410e+00 1.24248227e+00 1.24031422e+00 1.23814994e+00 1.23598942e+00 + 1.23383267e+00 1.23167966e+00 1.22953040e+00 1.22738487e+00 1.22524308e+00 + 1.22310501e+00 1.22097065e+00 1.21884001e+00 1.21671307e+00 1.21458982e+00 + 1.21247027e+00 1.21035440e+00 1.20824220e+00 1.20613368e+00 1.20402882e+00 + 1.20192762e+00 1.19983006e+00 1.19773615e+00 1.19564588e+00 1.19355924e+00 + 1.19147622e+00 1.18939681e+00 1.18732102e+00 1.18524883e+00 1.18318024e+00 + 1.18111524e+00 1.17905382e+00 1.17699598e+00 1.17494171e+00 1.17289100e+00 + 1.17084385e+00 1.16880025e+00 1.16676020e+00 1.16472368e+00 1.16269069e+00 + 1.16066123e+00 1.15863529e+00 1.15661286e+00 1.15459393e+00 1.15257850e+00 + 1.15056656e+00 1.14855811e+00 1.14655314e+00 1.14455164e+00 1.14255360e+00 + 1.14055902e+00 1.13856790e+00 1.13658022e+00 1.13459599e+00 1.13261518e+00 + 1.13063780e+00 1.12866385e+00 1.12669330e+00 1.12472616e+00 1.12276243e+00 + 1.12080209e+00 1.11884513e+00 1.11689156e+00 1.11494136e+00 1.11299453e+00 + 1.11105106e+00 1.10911094e+00 1.10717418e+00 1.10524076e+00 1.10331067e+00 + 1.10138391e+00 1.09946048e+00 1.09754036e+00 1.09562355e+00 1.09371004e+00 + 1.09179983e+00 1.08989291e+00 1.08798928e+00 1.08608892e+00 1.08419183e+00 + 1.08229801e+00 1.08040745e+00 1.07852014e+00 1.07663607e+00 1.07475524e+00 + 1.07287764e+00 1.07100327e+00 1.06913211e+00 1.06726417e+00 1.06539944e+00 + 1.06353790e+00 1.06167956e+00 1.05982440e+00 1.05797242e+00 1.05612362e+00 + 1.05427798e+00 1.05243550e+00 1.05059618e+00 1.04876000e+00 1.04692697e+00 + 1.04509706e+00 1.04327029e+00 1.04144663e+00 1.03962609e+00 1.03780866e+00 + 1.03599433e+00 1.03418309e+00 1.03237494e+00 1.03056987e+00 1.02876787e+00 + 1.02696894e+00 1.02517308e+00 1.02338026e+00 1.02159050e+00 1.01980377e+00 + 1.01802009e+00 1.01623942e+00 1.01446178e+00 1.01268715e+00 1.01091553e+00 + 1.00914691e+00 1.00738129e+00 1.00561865e+00 1.00385899e+00 1.00210230e+00 + 1.00034859e+00 9.98597826e-01 9.96850019e-01 9.95105158e-01 9.93363237e-01 + 9.91624247e-01 9.89888182e-01 9.88155036e-01 9.86424801e-01 9.84697470e-01 + 9.82973037e-01 9.81251494e-01 9.79532833e-01 9.77817050e-01 9.76104135e-01 + 9.74394082e-01 9.72686884e-01 9.70982534e-01 9.69281024e-01 9.67582348e-01 + 9.65886497e-01 9.64193466e-01 9.62503247e-01 9.60815831e-01 9.59131213e-01 + 9.57449385e-01 9.55770339e-01 9.54094068e-01 9.52420565e-01 9.50749822e-01 + 9.49081831e-01 9.47416586e-01 9.45754078e-01 9.44094301e-01 9.42437246e-01 + 9.40782906e-01 9.39131273e-01 9.37482340e-01 9.35836098e-01 9.34192541e-01 + 9.32551660e-01 9.30913448e-01 9.29277896e-01 9.27644997e-01 9.26014743e-01 + 9.24387126e-01 9.22762138e-01 9.21139771e-01 9.19520016e-01 9.17902866e-01 + 9.16288312e-01 9.14676347e-01 9.13066962e-01 9.11460149e-01 9.09855898e-01 + 9.08254203e-01 9.06655055e-01 9.05058445e-01 9.03464364e-01 9.01872805e-01 + 9.00283757e-01 8.98697214e-01 8.97113166e-01 8.95531604e-01 8.93952519e-01 + 8.92375903e-01 8.90801747e-01 8.89230041e-01 8.87660777e-01 8.86093946e-01 + 8.84529538e-01 8.82967544e-01 8.81407955e-01 8.79850762e-01 8.78295955e-01 + 8.76743525e-01 8.75193462e-01 8.73645756e-01 8.72100399e-01 8.70557380e-01 + 8.69016689e-01 8.67478317e-01 8.65942254e-01 8.64408489e-01 8.62877013e-01 + 8.61347816e-01 8.59820887e-01 8.58296216e-01 8.56773792e-01 8.55253606e-01 + 8.53735646e-01 8.52219903e-01 8.50706365e-01 8.49195021e-01 8.47685862e-01 + 8.46178875e-01 8.44674050e-01 8.43171375e-01 8.41670840e-01 8.40172434e-01 + 8.38676144e-01 8.37181959e-01 8.35689868e-01 8.34199860e-01 8.32711921e-01 + 8.31226041e-01 8.29742208e-01 8.28260409e-01 8.26780632e-01 8.25302865e-01 + 8.23827096e-01 8.22353311e-01 8.20881500e-01 8.19411648e-01 8.17943742e-01 + 8.16477771e-01 8.15013721e-01 8.13551579e-01 8.12091331e-01 8.10632964e-01 + 8.09176465e-01 8.07721819e-01 8.06269013e-01 8.04818034e-01 8.03368867e-01 + 8.01921497e-01 8.00475911e-01 7.99032095e-01 7.97590032e-01 7.96149710e-01 + 7.94711113e-01 7.93274225e-01 7.91839032e-01 7.90405519e-01 7.88973670e-01 + 7.87543469e-01 7.86114901e-01 7.84687949e-01 7.83262598e-01 7.81838832e-01 + 7.80416634e-01 7.78995987e-01 7.77576875e-01 7.76159281e-01 7.74743187e-01 + 7.73328577e-01 7.71915434e-01 7.70503739e-01 7.69093474e-01 7.67684623e-01 + 7.66277166e-01 7.64871086e-01 7.63466364e-01 7.62062981e-01 7.60660918e-01 + 7.59260157e-01 7.57860677e-01 7.56462460e-01 7.55065486e-01 7.53669734e-01 + 7.52275185e-01 7.50881819e-01 7.49489615e-01 7.48098551e-01 7.46708608e-01 + 7.45319764e-01 7.43931997e-01 7.42545287e-01 7.41159610e-01 7.39774945e-01 + 7.38391270e-01 7.37008562e-01 7.35626797e-01 7.34245954e-01 7.32866009e-01 + 7.31486938e-01 7.30108717e-01 7.28731322e-01 7.27354729e-01 7.25978913e-01 + 7.24603850e-01 7.23229514e-01 7.21855879e-01 7.20482921e-01 7.19110613e-01 + 7.17738929e-01 7.16367842e-01 7.14997325e-01 7.13627352e-01 7.12257895e-01 + 7.10888926e-01 7.09520417e-01 7.08152340e-01 7.06784667e-01 7.05417367e-01 + 7.04050413e-01 7.02683774e-01 7.01317421e-01 6.99951322e-01 6.98585449e-01 + 6.97219770e-01 6.95854253e-01 6.94488867e-01 6.93123580e-01 6.91758361e-01 + 6.90393175e-01 6.89027991e-01 6.87662775e-01 6.86297494e-01 6.84932112e-01 + 6.83566597e-01 6.82200913e-01 6.80835024e-01 6.79468897e-01 6.78102493e-01 + 6.76735778e-01 6.75368715e-01 6.74001266e-01 6.72633394e-01 6.71265061e-01 + 6.69896229e-01 6.68526859e-01 6.67156913e-01 6.65786349e-01 6.64415130e-01 + 6.63043213e-01 6.61670559e-01 6.60297127e-01 6.58922874e-01 6.57547758e-01 + 6.56171737e-01 6.54794769e-01 6.53416809e-01 6.52037814e-01 6.50657740e-01 + 6.49276541e-01 6.47894172e-01 6.46510589e-01 6.45125744e-01 6.43739591e-01 + 6.42352084e-01 6.40963173e-01 6.39572812e-01 6.38180952e-01 6.36787543e-01 + 6.35392537e-01 6.33995883e-01 6.32597530e-01 6.31197429e-01 6.29795527e-01 + 6.28391772e-01 6.26986112e-01 6.25578493e-01 6.24168864e-01 6.22757168e-01 + 6.21343352e-01 6.19927361e-01 6.18509139e-01 6.17088630e-01 6.15665778e-01 + 6.14240525e-01 6.12812814e-01 6.11382586e-01 6.09949783e-01 6.08514346e-01 + 6.07076214e-01 6.05635329e-01 6.04191627e-01 6.02745049e-01 6.01295533e-01 + 5.99843016e-01 5.98387434e-01 5.96928726e-01 5.95466826e-01 5.94001669e-01 + 5.92533192e-01 5.91061329e-01 5.89586012e-01 5.88107176e-01 5.86624753e-01 + 5.85138676e-01 5.83648877e-01 5.82155286e-01 5.80657834e-01 5.79156452e-01 + 5.77651069e-01 5.76141614e-01 5.74628017e-01 5.73110204e-01 5.71588105e-01 + 5.70061645e-01 5.68530753e-01 5.66995353e-01 5.65455372e-01 5.63910735e-01 + 5.62361367e-01 5.60807191e-01 5.59248133e-01 5.57684115e-01 5.56115060e-01 + 5.54540891e-01 5.52961531e-01 5.51376899e-01 5.49786919e-01 5.48191511e-01 + 5.46590595e-01 5.44984092e-01 5.43371922e-01 5.41754003e-01 5.40130255e-01 + 5.38500598e-01 5.36864948e-01 5.35223225e-01 5.33575346e-01 5.31921229e-01 + 5.30260792e-01 5.28593951e-01 5.26920623e-01 5.25240726e-01 5.23554175e-01 + 5.21860887e-01 5.20160779e-01 5.18453766e-01 5.16739764e-01 5.15018690e-01 + 5.13290458e-01 5.11554986e-01 5.09812188e-01 5.08061981e-01 5.06304281e-01 + 5.04539002e-01 5.02766062e-01 5.00985377e-01 4.99196862e-01 4.97400434e-01 + 4.95596010e-01 4.93783507e-01 4.91962842e-01 4.90133933e-01 4.88296696e-01 + 4.86451051e-01 4.84596916e-01 4.82734210e-01 4.80862853e-01 4.78982764e-01 + 4.77093865e-01 4.75196076e-01 4.73289320e-01 4.71373519e-01 4.69448596e-01 + 4.67514476e-01 4.65571083e-01 4.63618344e-01 4.61656185e-01 4.59684533e-01 + 4.57703319e-01 4.55712470e-01 4.53711920e-01 4.51701599e-01 4.49681441e-01 + 4.47651381e-01 4.45611356e-01 4.43561302e-01 4.41501158e-01 4.39430866e-01 + 4.37350368e-01 4.35259607e-01 4.33158529e-01 4.31047082e-01 4.28925214e-01 + 4.26792878e-01 4.24650026e-01 4.22496614e-01 4.20332600e-01 4.18157943e-01 + 4.15972606e-01 4.13776552e-01 4.11569750e-01 4.09352169e-01 4.07123781e-01 + 4.04884561e-01 4.02634487e-01 4.00373539e-01 3.98101701e-01 3.95818960e-01 + 3.93525306e-01 3.91220732e-01 3.88905233e-01 3.86578811e-01 3.84241469e-01 + 3.81893212e-01 3.79534053e-01 3.77164006e-01 3.74783088e-01 3.72391322e-01 + 3.69988735e-01 3.67575357e-01 3.65151223e-01 3.62716372e-01 3.60270847e-01 + 3.57814698e-01 3.55347977e-01 3.52870741e-01 3.50383054e-01 3.47884982e-01 + 3.45376598e-01 3.42857980e-01 3.40329210e-01 3.37790377e-01 3.35241576e-01 + 3.32682904e-01 3.30114466e-01 3.27536375e-01 3.24948745e-01 3.22351700e-01 + 3.19745367e-01 3.17129881e-01 3.14505384e-01 3.11872021e-01 3.09229947e-01 + 3.06579321e-01 3.03920309e-01 3.01253084e-01 2.98577826e-01 2.95894721e-01 + 2.93203963e-01 2.90505751e-01 2.87800293e-01 2.85087802e-01 2.82368500e-01 + 2.79642616e-01 2.76910384e-01 2.74172047e-01 2.71427856e-01 2.68678067e-01 + 2.65922946e-01 2.63162764e-01 2.60397802e-01 2.57628345e-01 2.54854688e-01 + 2.52077134e-01 2.49295990e-01 2.46511575e-01 2.43724211e-01 2.40934231e-01 + 2.38141974e-01 2.35347785e-01 2.32552018e-01 2.29755035e-01 2.26957202e-01 + 2.24158896e-01 2.21360498e-01 2.18562398e-01 2.15764992e-01 2.12968683e-01 + 2.10173881e-01 2.07381001e-01 2.04590467e-01 2.01802708e-01 1.99018159e-01 + 1.96237262e-01 1.93460463e-01 1.90688215e-01 1.87920978e-01 1.85159214e-01 + 1.82403393e-01 1.79653988e-01 1.76911478e-01 1.74176346e-01 1.71449078e-01 + 1.68730166e-01 1.66020105e-01 1.63319392e-01 1.60628529e-01 1.57948020e-01 + 1.55278370e-01 1.52620090e-01 1.49973688e-01 1.47339678e-01 1.44718571e-01 + 1.42110882e-01 1.39517125e-01 1.36937815e-01 1.34373464e-01 1.31824585e-01 + 1.29291692e-01 1.26775293e-01 1.24275896e-01 1.21794008e-01 1.19330131e-01 + 1.16884763e-01 1.14458401e-01 1.12051535e-01 1.09664652e-01 1.07298233e-01 + 1.04952752e-01 1.02628679e-01 1.00326477e-01 9.80465996e-02 9.57894954e-02 + 9.35556034e-02 9.13453541e-02 8.91591692e-02 8.69974604e-02 8.48606296e-02 + 8.27490678e-02 8.06631552e-02 7.86032603e-02 7.65697396e-02 7.45629372e-02 + 7.25831842e-02 7.06307984e-02 6.87060837e-02 6.68093301e-02 6.49408125e-02 + 6.31007911e-02 6.12895107e-02 5.95072002e-02 5.77540725e-02 5.60303240e-02 + 5.43361344e-02 5.26716661e-02 5.10370645e-02 4.94324572e-02 4.78579541e-02 + 4.63136469e-02 4.47996091e-02 4.33158961e-02 4.18625443e-02 4.04395719e-02 + 3.90469781e-02 3.76847434e-02 3.63528295e-02 3.50511794e-02 3.37797170e-02 + 3.25383477e-02 3.13269583e-02 3.01454169e-02 2.89935733e-02 2.78712591e-02 + 2.67782878e-02 2.57144551e-02 2.46795395e-02 2.36733018e-02 2.26954864e-02 + 2.17458207e-02 2.08240164e-02 1.99297691e-02 1.90627592e-02 1.82226524e-02 + 1.74090997e-02 1.66217387e-02 1.58601934e-02 1.51240750e-02 1.44129830e-02 + 1.37265047e-02 1.30642170e-02 1.24256863e-02 1.18104693e-02 1.12181139e-02 + 1.06481597e-02 1.01001386e-02 9.57357566e-03 9.06798994e-03 8.58289491e-03 + 8.11779939e-03 7.67220821e-03 7.24562293e-03 6.83754260e-03 6.44746449e-03 + 6.07488475e-03 5.71929920e-03 5.38020397e-03 5.05709623e-03 4.74947488e-03 + 4.45684120e-03 4.17869948e-03 3.91455770e-03 3.66392815e-03 3.42632795e-03 + 3.20127973e-03 2.98831211e-03 2.78696025e-03 2.59676634e-03 2.41728009e-03 + 2.24805918e-03 2.08866967e-03 1.93868637e-03 1.79769324e-03 1.66528371e-03 + 1.54106094e-03 1.42463814e-03 1.31563879e-03 1.21369684e-03 1.11845687e-03 + 1.02957427e-03 9.46715341e-04 8.69557372e-04 7.97788699e-04 7.31108735e-04 + 6.69227965e-04 6.11867923e-04 5.58761133e-04 5.09651031e-04 4.64291866e-04 + 4.22448569e-04 3.83896609e-04 3.48421824e-04 3.15820237e-04 2.85897853e-04 + 2.58470437e-04 2.33363282e-04 2.10410963e-04 1.89457075e-04 1.70353970e-04 + 1.52962472e-04 1.37151601e-04 1.22798276e-04 1.09787020e-04 9.80096661e-05 + 8.73650533e-05 7.77587264e-05 6.91026357e-05 6.13148375e-05 5.43191980e-05 + 4.80451002e-05 4.24271553e-05 3.74049201e-05 3.29226193e-05 2.89288760e-05 + 2.53764482e-05 2.22219741e-05 1.94257256e-05 1.69513701e-05 1.47657424e-05 + 1.28386246e-05 1.11425370e-05 9.65253704e-06 8.34602949e-06 7.20258529e-06 + 6.20377051e-06 5.33298481e-06 4.57530930e-06 3.91736368e-06 3.34717241e-06 + 2.85403968e-06 2.42843291e-06 2.06187442e-06 1.74684104e-06 1.47667131e-06 + 1.24547984e-06 1.04807854e-06 8.79904460e-07 7.36953603e-07 6.15720668e-07 + 5.13144134e-07 4.26556442e-07 3.53638890e-07 2.92380919e-07 2.41043461e-07 + 1.98126025e-07 1.62337233e-07 1.32568519e-07 1.07870701e-07 8.74331951e-08 + 7.05656042e-08 5.66814737e-08 4.52839905e-08 3.59534344e-08 2.83361988e-08 + 2.21352123e-08 1.71016087e-08 1.30275039e-08 9.73975193e-09 7.09456503e-09 + 4.97289096e-09 3.27645509e-09 1.92438159e-09 8.50318607e-10 0.00000000e+00 + 7.26720922e+00 7.26720922e+00 7.26720922e+00 7.26720922e+00 7.26720922e+00 + 7.26720922e+00 7.26720922e+00 7.26720922e+00 7.26720922e+00 7.26720922e+00 + 7.26720922e+00 7.26720922e+00 7.26720922e+00 7.26720922e+00 7.26720922e+00 + 7.26720922e+00 7.26720922e+00 7.26720922e+00 7.26720922e+00 7.26720922e+00 + 7.26720922e+00 7.26720922e+00 7.26720922e+00 7.26720922e+00 7.26720922e+00 + 7.26720922e+00 7.26720922e+00 7.26720922e+00 7.26720922e+00 7.26720922e+00 + 7.26720922e+00 7.26720922e+00 7.26720922e+00 7.26720922e+00 7.26720922e+00 + 7.26720922e+00 7.26720922e+00 7.26720922e+00 7.26720922e+00 7.26720922e+00 + 7.26720922e+00 7.26720922e+00 7.26720922e+00 7.26720922e+00 7.26720922e+00 + 7.26720922e+00 7.26720922e+00 7.26547462e+00 7.25551627e+00 7.24557157e+00 + 7.23564051e+00 7.22572305e+00 7.21581919e+00 7.20592890e+00 7.19605217e+00 + 7.18618898e+00 7.17633930e+00 7.16650313e+00 7.15668044e+00 7.14687121e+00 + 7.13707542e+00 7.12729307e+00 7.11752412e+00 7.10776856e+00 7.09802637e+00 + 7.08829753e+00 7.07858203e+00 7.06887985e+00 7.05919096e+00 7.04951536e+00 + 7.03985301e+00 7.03020391e+00 7.02056804e+00 7.01094537e+00 7.00133589e+00 + 6.99173958e+00 6.98215643e+00 6.97258641e+00 6.96302950e+00 6.95348570e+00 + 6.94395498e+00 6.93443732e+00 6.92493271e+00 6.91544112e+00 6.90596254e+00 + 6.89649696e+00 6.88704435e+00 6.87760469e+00 6.86817797e+00 6.85876418e+00 + 6.84936328e+00 6.83997528e+00 6.83060014e+00 6.82123785e+00 6.81188839e+00 + 6.80255174e+00 6.79322790e+00 6.78391683e+00 6.77461853e+00 6.76533297e+00 + 6.75606013e+00 6.74680001e+00 6.73755258e+00 6.72831782e+00 6.71909573e+00 + 6.70988627e+00 6.70068943e+00 6.69150520e+00 6.68233356e+00 6.67317449e+00 + 6.66402797e+00 6.65489399e+00 6.64577253e+00 6.63666357e+00 6.62756710e+00 + 6.61848310e+00 6.60941154e+00 6.60035242e+00 6.59130572e+00 6.58227141e+00 + 6.57324949e+00 6.56423994e+00 6.55524273e+00 6.54625785e+00 6.53728530e+00 + 6.52832503e+00 6.51937705e+00 6.51044134e+00 6.50151787e+00 6.49260663e+00 + 6.48370761e+00 6.47482078e+00 6.46594614e+00 6.45708366e+00 6.44823332e+00 + 6.43939512e+00 6.43056903e+00 6.42175504e+00 6.41295313e+00 6.40416328e+00 + 6.39538548e+00 6.38661971e+00 6.37786596e+00 6.36912420e+00 6.36039443e+00 + 6.35167662e+00 6.34297076e+00 6.33427684e+00 6.32559483e+00 6.31692472e+00 + 6.30826649e+00 6.29962013e+00 6.29098562e+00 6.28236295e+00 6.27375209e+00 + 6.26515304e+00 6.25656577e+00 6.24799028e+00 6.23942654e+00 6.23087453e+00 + 6.22233425e+00 6.21380567e+00 6.20528878e+00 6.19678357e+00 6.18829001e+00 + 6.17980810e+00 6.17133781e+00 6.16287913e+00 6.15443204e+00 6.14599654e+00 + 6.13757259e+00 6.12916019e+00 6.12075932e+00 6.11236997e+00 6.10399211e+00 + 6.09562574e+00 6.08727083e+00 6.07892738e+00 6.07059536e+00 6.06227476e+00 + 6.05396557e+00 6.04566776e+00 6.03738133e+00 6.02910626e+00 6.02084253e+00 + 6.01259012e+00 6.00434903e+00 5.99611923e+00 5.98790071e+00 5.97969346e+00 + 5.97149746e+00 5.96331269e+00 5.95513913e+00 5.94697679e+00 5.93882562e+00 + 5.93068563e+00 5.92255680e+00 5.91443911e+00 5.90633255e+00 5.89823710e+00 + 5.89015274e+00 5.88207946e+00 5.87401725e+00 5.86596609e+00 5.85792597e+00 + 5.84989686e+00 5.84187876e+00 5.83387165e+00 5.82587552e+00 5.81789034e+00 + 5.80991611e+00 5.80195281e+00 5.79400043e+00 5.78605894e+00 5.77812834e+00 + 5.77020861e+00 5.76229973e+00 5.75440170e+00 5.74651449e+00 5.73863809e+00 + 5.73077248e+00 5.72291766e+00 5.71507360e+00 5.70724030e+00 5.69941773e+00 + 5.69160588e+00 5.68380474e+00 5.67601429e+00 5.66823452e+00 5.66046542e+00 + 5.65270696e+00 5.64495913e+00 5.63722193e+00 5.62949533e+00 5.62177932e+00 + 5.61407389e+00 5.60637902e+00 5.59869469e+00 5.59102090e+00 5.58335763e+00 + 5.57570486e+00 5.56806258e+00 5.56043077e+00 5.55280942e+00 5.54519852e+00 + 5.53759805e+00 5.53000800e+00 5.52242836e+00 5.51485910e+00 5.50730021e+00 + 5.49975169e+00 5.49221351e+00 5.48468567e+00 5.47716814e+00 5.46966092e+00 + 5.46216398e+00 5.45467733e+00 5.44720093e+00 5.43973478e+00 5.43227887e+00 + 5.42483317e+00 5.41739768e+00 5.40997238e+00 5.40255726e+00 5.39515230e+00 + 5.38775749e+00 5.38037282e+00 5.37299827e+00 5.36563382e+00 5.35827947e+00 + 5.35093520e+00 5.34360100e+00 5.33627685e+00 5.32896274e+00 5.32165865e+00 + 5.31436457e+00 5.30708050e+00 5.29980640e+00 5.29254228e+00 5.28528811e+00 + 5.27804389e+00 5.27080959e+00 5.26358521e+00 5.25637073e+00 5.24916614e+00 + 5.24197143e+00 5.23478657e+00 5.22761157e+00 5.22044640e+00 5.21329105e+00 + 5.20614551e+00 5.19900976e+00 5.19188379e+00 5.18476759e+00 5.17766114e+00 + 5.17056443e+00 5.16347745e+00 5.15640019e+00 5.14933262e+00 5.14227474e+00 + 5.13522654e+00 5.12818799e+00 5.12115910e+00 5.11413983e+00 5.10713019e+00 + 5.10013016e+00 5.09313972e+00 5.08615886e+00 5.07918757e+00 5.07222583e+00 + 5.06527364e+00 5.05833097e+00 5.05139783e+00 5.04447418e+00 5.03756002e+00 + 5.03065535e+00 5.02376013e+00 5.01687437e+00 5.00999804e+00 5.00313114e+00 + 4.99627365e+00 4.98942556e+00 4.98258686e+00 4.97575753e+00 4.96893756e+00 + 4.96212693e+00 4.95532565e+00 4.94853368e+00 4.94175103e+00 4.93497767e+00 + 4.92821359e+00 4.92145879e+00 4.91471324e+00 4.90797694e+00 4.90124987e+00 + 4.89453203e+00 4.88782339e+00 4.88112394e+00 4.87443368e+00 4.86775259e+00 + 4.86108066e+00 4.85441787e+00 4.84776421e+00 4.84111967e+00 4.83448424e+00 + 4.82785791e+00 4.82124066e+00 4.81463247e+00 4.80803335e+00 4.80144327e+00 + 4.79486222e+00 4.78829019e+00 4.78172717e+00 4.77517315e+00 4.76862811e+00 + 4.76209204e+00 4.75556492e+00 4.74904676e+00 4.74253753e+00 4.73603722e+00 + 4.72954582e+00 4.72306332e+00 4.71658970e+00 4.71012495e+00 4.70366907e+00 + 4.69722204e+00 4.69078384e+00 4.68435446e+00 4.67793390e+00 4.67152214e+00 + 4.66511917e+00 4.65872497e+00 4.65233954e+00 4.64596286e+00 4.63959492e+00 + 4.63323571e+00 4.62688521e+00 4.62054342e+00 4.61421032e+00 4.60788590e+00 + 4.60157015e+00 4.59526306e+00 4.58896461e+00 4.58267479e+00 4.57639360e+00 + 4.57012101e+00 4.56385702e+00 4.55760162e+00 4.55135479e+00 4.54511652e+00 + 4.53888681e+00 4.53266563e+00 4.52645298e+00 4.52024884e+00 4.51405321e+00 + 4.50786607e+00 4.50168741e+00 4.49551722e+00 4.48935549e+00 4.48320220e+00 + 4.47705735e+00 4.47092091e+00 4.46479289e+00 4.45867327e+00 4.45256204e+00 + 4.44645918e+00 4.44036469e+00 4.43427855e+00 4.42820075e+00 4.42213128e+00 + 4.41607014e+00 4.41001730e+00 4.40397275e+00 4.39793649e+00 4.39190851e+00 + 4.38588878e+00 4.37987731e+00 4.37387408e+00 4.36787907e+00 4.36189229e+00 + 4.35591370e+00 4.34994332e+00 4.34398111e+00 4.33802708e+00 4.33208121e+00 + 4.32614349e+00 4.32021390e+00 4.31429245e+00 4.30837911e+00 4.30247387e+00 + 4.29657673e+00 4.29068768e+00 4.28480669e+00 4.27893376e+00 4.27306889e+00 + 4.26721205e+00 4.26136324e+00 4.25552245e+00 4.24968966e+00 4.24386487e+00 + 4.23804806e+00 4.23223922e+00 4.22643835e+00 4.22064543e+00 4.21486044e+00 + 4.20908339e+00 4.20331425e+00 4.19755302e+00 4.19179969e+00 4.18605425e+00 + 4.18031667e+00 4.17458697e+00 4.16886511e+00 4.16315110e+00 4.15744492e+00 + 4.15174656e+00 4.14605602e+00 4.14037327e+00 4.13469831e+00 4.12903113e+00 + 4.12337171e+00 4.11772006e+00 4.11207615e+00 4.10643997e+00 4.10081153e+00 + 4.09519079e+00 4.08957776e+00 4.08397242e+00 4.07837477e+00 4.07278479e+00 + 4.06720247e+00 4.06162780e+00 4.05606077e+00 4.05050137e+00 4.04494960e+00 + 4.03940543e+00 4.03386886e+00 4.02833988e+00 4.02281848e+00 4.01730465e+00 + 4.01179837e+00 4.00629964e+00 4.00080845e+00 3.99532478e+00 3.98984863e+00 + 3.98437999e+00 3.97891884e+00 3.97346517e+00 3.96801899e+00 3.96258026e+00 + 3.95714899e+00 3.95172517e+00 3.94630878e+00 3.94089981e+00 3.93549826e+00 + 3.93010411e+00 3.92471735e+00 3.91933798e+00 3.91396598e+00 3.90860134e+00 + 3.90324406e+00 3.89789412e+00 3.89255151e+00 3.88721623e+00 3.88188825e+00 + 3.87656759e+00 3.87125421e+00 3.86594811e+00 3.86064929e+00 3.85535773e+00 + 3.85007343e+00 3.84479637e+00 3.83952654e+00 3.83426393e+00 3.82900854e+00 + 3.82376035e+00 3.81851935e+00 3.81328554e+00 3.80805890e+00 3.80283942e+00 + 3.79762710e+00 3.79242192e+00 3.78722388e+00 3.78203296e+00 3.77684915e+00 + 3.77167245e+00 3.76650285e+00 3.76134033e+00 3.75618489e+00 3.75103652e+00 + 3.74589520e+00 3.74076093e+00 3.73563369e+00 3.73051348e+00 3.72540029e+00 + 3.72029411e+00 3.71519493e+00 3.71010274e+00 3.70501753e+00 3.69993928e+00 + 3.69486800e+00 3.68980367e+00 3.68474628e+00 3.67969582e+00 3.67465228e+00 + 3.66961566e+00 3.66458594e+00 3.65956311e+00 3.65454717e+00 3.64953810e+00 + 3.64453590e+00 3.63954056e+00 3.63455206e+00 3.62957040e+00 3.62459556e+00 + 3.61962755e+00 3.61466635e+00 3.60971194e+00 3.60476433e+00 3.59982349e+00 + 3.59488943e+00 3.58996214e+00 3.58504159e+00 3.58012779e+00 3.57522073e+00 + 3.57032039e+00 3.56542677e+00 3.56053985e+00 3.55565964e+00 3.55078611e+00 + 3.54591926e+00 3.54105908e+00 3.53620557e+00 3.53135871e+00 3.52651849e+00 + 3.52168490e+00 3.51685794e+00 3.51203759e+00 3.50722386e+00 3.50241672e+00 + 3.49761617e+00 3.49282220e+00 3.48803480e+00 3.48325396e+00 3.47847967e+00 + 3.47371193e+00 3.46895072e+00 3.46419604e+00 3.45944788e+00 3.45470622e+00 + 3.44997107e+00 3.44524240e+00 3.44052021e+00 3.43580450e+00 3.43109525e+00 + 3.42639246e+00 3.42169611e+00 3.41700620e+00 3.41232271e+00 3.40764565e+00 + 3.40297499e+00 3.39831074e+00 3.39365288e+00 3.38900141e+00 3.38435631e+00 + 3.37971758e+00 3.37508520e+00 3.37045918e+00 3.36583949e+00 3.36122614e+00 + 3.35661911e+00 3.35201840e+00 3.34742399e+00 3.34283587e+00 3.33825405e+00 + 3.33367851e+00 3.32910924e+00 3.32454623e+00 3.31998947e+00 3.31543897e+00 + 3.31089469e+00 3.30635665e+00 3.30182483e+00 3.29729922e+00 3.29277981e+00 + 3.28826659e+00 3.28375956e+00 3.27925871e+00 3.27476403e+00 3.27027551e+00 + 3.26579314e+00 3.26131692e+00 3.25684683e+00 3.25238286e+00 3.24792502e+00 + 3.24347329e+00 3.23902765e+00 3.23458811e+00 3.23015466e+00 3.22572728e+00 + 3.22130597e+00 3.21689072e+00 3.21248153e+00 3.20807837e+00 3.20368125e+00 + 3.19929016e+00 3.19490509e+00 3.19052602e+00 3.18615296e+00 3.18178590e+00 + 3.17742481e+00 3.17306971e+00 3.16872058e+00 3.16437740e+00 3.16004018e+00 + 3.15570891e+00 3.15138357e+00 3.14706416e+00 3.14275066e+00 3.13844309e+00 + 3.13414141e+00 3.12984563e+00 3.12555574e+00 3.12127173e+00 3.11699360e+00 + 3.11272132e+00 3.10845490e+00 3.10419433e+00 3.09993960e+00 3.09569070e+00 + 3.09144762e+00 3.08721036e+00 3.08297891e+00 3.07875326e+00 3.07453340e+00 + 3.07031932e+00 3.06611102e+00 3.06190849e+00 3.05771171e+00 3.05352069e+00 + 3.04933542e+00 3.04515588e+00 3.04098207e+00 3.03681398e+00 3.03265160e+00 + 3.02849493e+00 3.02434395e+00 3.02019867e+00 3.01605906e+00 3.01192513e+00 + 3.00779687e+00 3.00367426e+00 2.99955731e+00 2.99544600e+00 2.99134032e+00 + 2.98724027e+00 2.98314584e+00 2.97905702e+00 2.97497381e+00 2.97089619e+00 + 2.96682417e+00 2.96275772e+00 2.95869685e+00 2.95464154e+00 2.95059179e+00 + 2.94654759e+00 2.94250894e+00 2.93847582e+00 2.93444823e+00 2.93042616e+00 + 2.92640960e+00 2.92239855e+00 2.91839299e+00 2.91439293e+00 2.91039835e+00 + 2.90640924e+00 2.90242560e+00 2.89844742e+00 2.89447469e+00 2.89050741e+00 + 2.88654557e+00 2.88258916e+00 2.87863817e+00 2.87469259e+00 2.87075242e+00 + 2.86681766e+00 2.86288828e+00 2.85896429e+00 2.85504569e+00 2.85113245e+00 + 2.84722457e+00 2.84332205e+00 2.83942488e+00 2.83553306e+00 2.83164656e+00 + 2.82776540e+00 2.82388955e+00 2.82001901e+00 2.81615378e+00 2.81229385e+00 + 2.80843921e+00 2.80458985e+00 2.80074577e+00 2.79690696e+00 2.79307341e+00 + 2.78924511e+00 2.78542206e+00 2.78160425e+00 2.77779168e+00 2.77398432e+00 + 2.77018219e+00 2.76638527e+00 2.76259355e+00 2.75880703e+00 2.75502570e+00 + 2.75124956e+00 2.74747859e+00 2.74371278e+00 2.73995214e+00 2.73619666e+00 + 2.73244632e+00 2.72870112e+00 2.72496105e+00 2.72122611e+00 2.71749629e+00 + 2.71377158e+00 2.71005198e+00 2.70633748e+00 2.70262806e+00 2.69892374e+00 + 2.69522448e+00 2.69153030e+00 2.68784118e+00 2.68415712e+00 2.68047811e+00 + 2.67680414e+00 2.67313521e+00 2.66947130e+00 2.66581242e+00 2.66215855e+00 + 2.65850969e+00 2.65486584e+00 2.65122697e+00 2.64759309e+00 2.64396420e+00 + 2.64034028e+00 2.63672132e+00 2.63310733e+00 2.62949829e+00 2.62589419e+00 + 2.62229504e+00 2.61870082e+00 2.61511152e+00 2.61152715e+00 2.60794768e+00 + 2.60437313e+00 2.60080347e+00 2.59723871e+00 2.59367883e+00 2.59012383e+00 + 2.58657371e+00 2.58302845e+00 2.57948804e+00 2.57595250e+00 2.57242179e+00 + 2.56889593e+00 2.56537490e+00 2.56185870e+00 2.55834731e+00 2.55484074e+00 + 2.55133897e+00 2.54784201e+00 2.54434983e+00 2.54086245e+00 2.53737984e+00 + 2.53390201e+00 2.53042894e+00 2.52696064e+00 2.52349708e+00 2.52003828e+00 + 2.51658422e+00 2.51313489e+00 2.50969028e+00 2.50625040e+00 2.50281524e+00 + 2.49938478e+00 2.49595902e+00 2.49253796e+00 2.48912159e+00 2.48570990e+00 + 2.48230289e+00 2.47890055e+00 2.47550287e+00 2.47210985e+00 2.46872148e+00 + 2.46533775e+00 2.46195866e+00 2.45858420e+00 2.45521437e+00 2.45184916e+00 + 2.44848856e+00 2.44513256e+00 2.44178116e+00 2.43843436e+00 2.43509215e+00 + 2.43175451e+00 2.42842146e+00 2.42509297e+00 2.42176904e+00 2.41844967e+00 + 2.41513484e+00 2.41182456e+00 2.40851882e+00 2.40521761e+00 2.40192092e+00 + 2.39862876e+00 2.39534110e+00 2.39205795e+00 2.38877930e+00 2.38550515e+00 + 2.38223548e+00 2.37897029e+00 2.37570958e+00 2.37245334e+00 2.36920156e+00 + 2.36595424e+00 2.36271137e+00 2.35947295e+00 2.35623896e+00 2.35300940e+00 + 2.34978428e+00 2.34656357e+00 2.34334728e+00 2.34013539e+00 2.33692791e+00 + 2.33372482e+00 2.33052613e+00 2.32733182e+00 2.32414188e+00 2.32095632e+00 + 2.31777513e+00 2.31459830e+00 2.31142582e+00 2.30825768e+00 2.30509389e+00 + 2.30193444e+00 2.29877932e+00 2.29562852e+00 2.29248204e+00 2.28933988e+00 + 2.28620202e+00 2.28306846e+00 2.27993919e+00 2.27681422e+00 2.27369353e+00 + 2.27057711e+00 2.26746497e+00 2.26435709e+00 2.26125348e+00 2.25815411e+00 + 2.25505900e+00 2.25196812e+00 2.24888149e+00 2.24579908e+00 2.24272090e+00 + 2.23964694e+00 2.23657719e+00 2.23351165e+00 2.23045031e+00 2.22739317e+00 + 2.22434021e+00 2.22129145e+00 2.21824686e+00 2.21520644e+00 2.21217019e+00 + 2.20913810e+00 2.20611017e+00 2.20308639e+00 2.20006675e+00 2.19705125e+00 + 2.19403989e+00 2.19103265e+00 2.18802953e+00 2.18503053e+00 2.18203564e+00 + 2.17904486e+00 2.17605817e+00 2.17307558e+00 2.17009708e+00 2.16712266e+00 + 2.16415232e+00 2.16118604e+00 2.15822384e+00 2.15526569e+00 2.15231160e+00 + 2.14936155e+00 2.14641555e+00 2.14347359e+00 2.14053566e+00 2.13760176e+00 + 2.13467188e+00 2.13174601e+00 2.12882416e+00 2.12590631e+00 2.12299245e+00 + 2.12008260e+00 2.11717673e+00 2.11427484e+00 2.11137693e+00 2.10848300e+00 + 2.10559303e+00 2.10270702e+00 2.09982496e+00 2.09694686e+00 2.09407270e+00 + 2.09120248e+00 2.08833620e+00 2.08547384e+00 2.08261541e+00 2.07976090e+00 + 2.07691029e+00 2.07406360e+00 2.07122080e+00 2.06838191e+00 2.06554690e+00 + 2.06271578e+00 2.05988854e+00 2.05706518e+00 2.05424568e+00 2.05143005e+00 + 2.04861828e+00 2.04581036e+00 2.04300629e+00 2.04020607e+00 2.03740968e+00 + 2.03461713e+00 2.03182840e+00 2.02904350e+00 2.02626241e+00 2.02348513e+00 + 2.02071167e+00 2.01794200e+00 2.01517613e+00 2.01241405e+00 2.00965575e+00 + 2.00690124e+00 2.00415050e+00 2.00140353e+00 1.99866033e+00 1.99592089e+00 + 1.99318520e+00 1.99045326e+00 1.98772507e+00 1.98500061e+00 1.98227989e+00 + 1.97956290e+00 1.97684963e+00 1.97414009e+00 1.97143425e+00 1.96873213e+00 + 1.96603370e+00 1.96333898e+00 1.96064795e+00 1.95796061e+00 1.95527695e+00 + 1.95259697e+00 1.94992066e+00 1.94724803e+00 1.94457905e+00 1.94191373e+00 + 1.93925207e+00 1.93659405e+00 1.93393968e+00 1.93128895e+00 1.92864185e+00 + 1.92599837e+00 1.92335853e+00 1.92072229e+00 1.91808968e+00 1.91546067e+00 + 1.91283526e+00 1.91021345e+00 1.90759524e+00 1.90498061e+00 1.90236957e+00 + 1.89976211e+00 1.89715822e+00 1.89455790e+00 1.89196114e+00 1.88936795e+00 + 1.88677830e+00 1.88419221e+00 1.88160966e+00 1.87903066e+00 1.87645518e+00 + 1.87388324e+00 1.87131482e+00 1.86874992e+00 1.86618854e+00 1.86363067e+00 + 1.86107630e+00 1.85852544e+00 1.85597807e+00 1.85343419e+00 1.85089380e+00 + 1.84835689e+00 1.84582346e+00 1.84329350e+00 1.84076701e+00 1.83824398e+00 + 1.83572441e+00 1.83320830e+00 1.83069563e+00 1.82818641e+00 1.82568062e+00 + 1.82317827e+00 1.82067935e+00 1.81818386e+00 1.81569178e+00 1.81320312e+00 + 1.81071788e+00 1.80823603e+00 1.80575759e+00 1.80328255e+00 1.80081090e+00 + 1.79834264e+00 1.79587776e+00 1.79341626e+00 1.79095813e+00 1.78850337e+00 + 1.78605198e+00 1.78360395e+00 1.78115927e+00 1.77871794e+00 1.77627996e+00 + 1.77384532e+00 1.77141402e+00 1.76898605e+00 1.76656141e+00 1.76414009e+00 + 1.76172209e+00 1.75930740e+00 1.75689602e+00 1.75448795e+00 1.75208318e+00 + 1.74968171e+00 1.74728353e+00 1.74488863e+00 1.74249702e+00 1.74010868e+00 + 1.73772362e+00 1.73534183e+00 1.73296330e+00 1.73058803e+00 1.72821602e+00 + 1.72584726e+00 1.72348174e+00 1.72111947e+00 1.71876044e+00 1.71640463e+00 + 1.71405206e+00 1.71170272e+00 1.70935659e+00 1.70701368e+00 1.70467398e+00 + 1.70233748e+00 1.70000419e+00 1.69767410e+00 1.69534720e+00 1.69302349e+00 + 1.69070296e+00 1.68838562e+00 1.68607145e+00 1.68376046e+00 1.68145263e+00 + 1.67914796e+00 1.67684646e+00 1.67454810e+00 1.67225290e+00 1.66996085e+00 + 1.66767193e+00 1.66538615e+00 1.66310351e+00 1.66082399e+00 1.65854760e+00 + 1.65627433e+00 1.65400418e+00 1.65173713e+00 1.64947320e+00 1.64721236e+00 + 1.64495463e+00 1.64269999e+00 1.64044844e+00 1.63819998e+00 1.63595460e+00 + 1.63371229e+00 1.63147306e+00 1.62923690e+00 1.62700380e+00 1.62477377e+00 + 1.62254679e+00 1.62032286e+00 1.61810198e+00 1.61588415e+00 1.61366935e+00 + 1.61145759e+00 1.60924887e+00 1.60704317e+00 1.60484049e+00 1.60264083e+00 + 1.60044419e+00 1.59825056e+00 1.59605993e+00 1.59387231e+00 1.59168769e+00 + 1.58950606e+00 1.58732742e+00 1.58515176e+00 1.58297909e+00 1.58080940e+00 + 1.57864268e+00 1.57647893e+00 1.57431814e+00 1.57216032e+00 1.57000545e+00 + 1.56785354e+00 1.56570458e+00 1.56355856e+00 1.56141549e+00 1.55927535e+00 + 1.55713815e+00 1.55500387e+00 1.55287252e+00 1.55074409e+00 1.54861858e+00 + 1.54649598e+00 1.54437630e+00 1.54225951e+00 1.54014563e+00 1.53803465e+00 + 1.53592656e+00 1.53382135e+00 1.53171904e+00 1.52961960e+00 1.52752305e+00 + 1.52542936e+00 1.52333855e+00 1.52125060e+00 1.51916551e+00 1.51708329e+00 + 1.51500391e+00 1.51292739e+00 1.51085371e+00 1.50878287e+00 1.50671488e+00 + 1.50464971e+00 1.50258738e+00 1.50052788e+00 1.49847119e+00 1.49641733e+00 + 1.49436628e+00 1.49231804e+00 1.49027261e+00 1.48822999e+00 1.48619016e+00 + 1.48415313e+00 1.48211889e+00 1.48008744e+00 1.47805877e+00 1.47603289e+00 + 1.47400978e+00 1.47198944e+00 1.46997187e+00 1.46795707e+00 1.46594503e+00 + 1.46393575e+00 1.46192922e+00 1.45992544e+00 1.45792441e+00 1.45592612e+00 + 1.45393057e+00 1.45193776e+00 1.44994768e+00 1.44796032e+00 1.44597569e+00 + 1.44399378e+00 1.44201458e+00 1.44003810e+00 1.43806433e+00 1.43609326e+00 + 1.43412489e+00 1.43215923e+00 1.43019625e+00 1.42823597e+00 1.42627837e+00 + 1.42432346e+00 1.42237122e+00 1.42042167e+00 1.41847478e+00 1.41653056e+00 + 1.41458901e+00 1.41265012e+00 1.41071388e+00 1.40878030e+00 1.40684937e+00 + 1.40492109e+00 1.40299545e+00 1.40107245e+00 1.39915208e+00 1.39723435e+00 + 1.39531925e+00 1.39340677e+00 1.39149691e+00 1.38958967e+00 1.38768504e+00 + 1.38578302e+00 1.38388362e+00 1.38198681e+00 1.38009260e+00 1.37820099e+00 + 1.37631198e+00 1.37442555e+00 1.37254171e+00 1.37066045e+00 1.36878177e+00 + 1.36690566e+00 1.36503213e+00 1.36316116e+00 1.36129276e+00 1.35942691e+00 + 1.35756363e+00 1.35570290e+00 1.35384472e+00 1.35198909e+00 1.35013600e+00 + 1.34828545e+00 1.34643743e+00 1.34459195e+00 1.34274900e+00 1.34090858e+00 + 1.33907068e+00 1.33723529e+00 1.33540242e+00 1.33357207e+00 1.33174422e+00 + 1.32991888e+00 1.32809604e+00 1.32627570e+00 1.32445786e+00 1.32264250e+00 + 1.32082964e+00 1.31901925e+00 1.31721135e+00 1.31540593e+00 1.31360298e+00 + 1.31180251e+00 1.31000450e+00 1.30820896e+00 1.30641587e+00 1.30462525e+00 + 1.30283708e+00 1.30105136e+00 1.29926808e+00 1.29748726e+00 1.29570887e+00 + 1.29393292e+00 1.29215940e+00 1.29038832e+00 1.28861966e+00 1.28685343e+00 + 1.28508962e+00 1.28332822e+00 1.28156924e+00 1.27981267e+00 1.27805851e+00 + 1.27630675e+00 1.27455740e+00 1.27281044e+00 1.27106587e+00 1.26932370e+00 + 1.26758392e+00 1.26584651e+00 1.26411150e+00 1.26237885e+00 1.26064859e+00 + 1.25892069e+00 1.25719517e+00 1.25547201e+00 1.25375121e+00 1.25203276e+00 + 1.25031668e+00 1.24860295e+00 1.24689156e+00 1.24518252e+00 1.24347583e+00 + 1.24177147e+00 1.24006945e+00 1.23836976e+00 1.23667240e+00 1.23497737e+00 + 1.23328466e+00 1.23159427e+00 1.22990620e+00 1.22822044e+00 1.22653699e+00 + 1.22485585e+00 1.22317702e+00 1.22150048e+00 1.21982625e+00 1.21815430e+00 + 1.21648465e+00 1.21481729e+00 1.21315222e+00 1.21148942e+00 1.20982891e+00 + 1.20817067e+00 1.20651470e+00 1.20486100e+00 1.20320957e+00 1.20156041e+00 + 1.19991350e+00 1.19826885e+00 1.19662646e+00 1.19498631e+00 1.19334842e+00 + 1.19171277e+00 1.19007936e+00 1.18844819e+00 1.18681926e+00 1.18519255e+00 + 1.18356808e+00 1.18194584e+00 1.18032582e+00 1.17870801e+00 1.17709243e+00 + 1.17547906e+00 1.17386790e+00 1.17225895e+00 1.17065221e+00 1.16904767e+00 + 1.16744532e+00 1.16584518e+00 1.16424722e+00 1.16265146e+00 1.16105788e+00 + 1.15946649e+00 1.15787728e+00 1.15629025e+00 1.15470539e+00 1.15312271e+00 + 1.15154219e+00 1.14996384e+00 1.14838766e+00 1.14681363e+00 1.14524176e+00 + 1.14367205e+00 1.14210449e+00 1.14053907e+00 1.13897581e+00 1.13741468e+00 + 1.13585569e+00 1.13429885e+00 1.13274413e+00 1.13119155e+00 1.12964109e+00 + 1.12809276e+00 1.12654655e+00 1.12500246e+00 1.12346049e+00 1.12192063e+00 + 1.12038288e+00 1.11884724e+00 1.11731370e+00 1.11578227e+00 1.11425294e+00 + 1.11272570e+00 1.11120055e+00 1.10967749e+00 1.10815653e+00 1.10663764e+00 + 1.10512084e+00 1.10360612e+00 1.10209347e+00 1.10058290e+00 1.09907440e+00 + 1.09756796e+00 1.09606359e+00 1.09456129e+00 1.09306104e+00 1.09156284e+00 + 1.09006670e+00 1.08857262e+00 1.08708058e+00 1.08559058e+00 1.08410263e+00 + 1.08261671e+00 1.08113284e+00 1.07965099e+00 1.07817118e+00 1.07669340e+00 + 1.07521764e+00 1.07374390e+00 1.07227218e+00 1.07080249e+00 1.06933480e+00 + 1.06786913e+00 1.06640547e+00 1.06494381e+00 1.06348415e+00 1.06202650e+00 + 1.06057084e+00 1.05911718e+00 1.05766552e+00 1.05621584e+00 1.05476815e+00 + 1.05332244e+00 1.05187871e+00 1.05043697e+00 1.04899720e+00 1.04755940e+00 + 1.04612357e+00 1.04468971e+00 1.04325782e+00 1.04182789e+00 1.04039992e+00 + 1.03897391e+00 1.03754985e+00 1.03612774e+00 1.03470758e+00 1.03328937e+00 + 1.03187310e+00 1.03045878e+00 1.02904639e+00 1.02763594e+00 1.02622742e+00 + 1.02482083e+00 1.02341617e+00 1.02201344e+00 1.02061262e+00 1.01921373e+00 + 1.01781676e+00 1.01642170e+00 1.01502855e+00 1.01363731e+00 1.01224798e+00 + 1.01086055e+00 1.00947502e+00 1.00809140e+00 1.00670967e+00 1.00532983e+00 + 1.00395188e+00 1.00257583e+00 1.00120166e+00 9.99829370e-01 9.98458963e-01 + 9.97090435e-01 9.95723783e-01 9.94359004e-01 9.92996095e-01 9.91635054e-01 + 9.90275879e-01 9.88918567e-01 9.87563115e-01 9.86209521e-01 9.84857782e-01 + 9.83507896e-01 9.82159860e-01 9.80813671e-01 9.79469328e-01 9.78126827e-01 + 9.76786166e-01 9.75447343e-01 9.74110354e-01 9.72775198e-01 9.71441872e-01 + 9.70110374e-01 9.68780700e-01 9.67452849e-01 9.66126818e-01 9.64802604e-01 + 9.63480205e-01 9.62159618e-01 9.60840841e-01 9.59523872e-01 9.58208708e-01 + 9.56895346e-01 9.55583784e-01 9.54274020e-01 9.52966051e-01 9.51659874e-01 + 9.50355488e-01 9.49052889e-01 9.47752076e-01 9.46453045e-01 9.45155794e-01 + 9.43860322e-01 9.42566624e-01 9.41274700e-01 9.39984546e-01 9.38696161e-01 + 9.37409540e-01 9.36124684e-01 9.34841588e-01 9.33560250e-01 9.32280668e-01 + 9.31002840e-01 9.29726763e-01 9.28452435e-01 9.27179852e-01 9.25909014e-01 + 9.24639917e-01 9.23372560e-01 9.22106939e-01 9.20843052e-01 9.19580897e-01 + 9.18320471e-01 9.17061773e-01 9.15804799e-01 9.14549547e-01 9.13296016e-01 + 9.12044202e-01 9.10794103e-01 9.09545716e-01 9.08299041e-01 9.07054073e-01 + 9.05810811e-01 9.04569252e-01 9.03329394e-01 9.02091234e-01 9.00854771e-01 + 8.99620001e-01 8.98386923e-01 8.97155534e-01 8.95925831e-01 8.94697813e-01 + 8.93471477e-01 8.92246821e-01 8.91023842e-01 8.89802537e-01 8.88582905e-01 + 8.87364944e-01 8.86148650e-01 8.84934022e-01 8.83721057e-01 8.82509753e-01 + 8.81300107e-01 8.80092117e-01 8.78885781e-01 8.77681097e-01 8.76478061e-01 + 8.75276672e-01 8.74076928e-01 8.72878825e-01 8.71682362e-01 8.70487536e-01 + 8.69294345e-01 8.68102787e-01 8.66912859e-01 8.65724558e-01 8.64537884e-01 + 8.63352832e-01 8.62169400e-01 8.60987588e-01 8.59807391e-01 8.58628807e-01 + 8.57451835e-01 8.56276472e-01 8.55102714e-01 8.53930561e-01 8.52760010e-01 + 8.51591058e-01 8.50423702e-01 8.49257941e-01 8.48093771e-01 8.46931191e-01 + 8.45770199e-01 8.44610790e-01 8.43452964e-01 8.42296717e-01 8.41142048e-01 + 8.39988953e-01 8.38837431e-01 8.37687478e-01 8.36539092e-01 8.35392271e-01 + 8.34247012e-01 8.33103313e-01 8.31961170e-01 8.30820582e-01 8.29681546e-01 + 8.28544059e-01 8.27408118e-01 8.26273721e-01 8.25140866e-01 8.24009549e-01 + 8.22879768e-01 8.21751519e-01 8.20624802e-01 8.19499611e-01 8.18375946e-01 + 8.17253803e-01 8.16133178e-01 8.15014070e-01 8.13896475e-01 8.12780391e-01 + 8.11665814e-01 8.10552741e-01 8.09441170e-01 8.08331097e-01 8.07222519e-01 + 8.06115433e-01 8.05009836e-01 8.03905725e-01 8.02803096e-01 8.01701946e-01 + 8.00602272e-01 7.99504070e-01 7.98407337e-01 7.97312069e-01 7.96218263e-01 + 7.95125915e-01 7.94035021e-01 7.92945578e-01 7.91857581e-01 7.90771028e-01 + 7.89685913e-01 7.88602232e-01 7.87519983e-01 7.86439160e-01 7.85359759e-01 + 7.84281776e-01 7.83205206e-01 7.82130045e-01 7.81056287e-01 7.79983929e-01 + 7.78912966e-01 7.77843391e-01 7.76775201e-01 7.75708390e-01 7.74642952e-01 + 7.73578882e-01 7.72516175e-01 7.71454824e-01 7.70394824e-01 7.69336169e-01 + 7.68278852e-01 7.67222866e-01 7.66168206e-01 7.65114865e-01 7.64062835e-01 + 7.63012109e-01 7.61962680e-01 7.60914541e-01 7.59867683e-01 7.58822098e-01 + 7.57777779e-01 7.56734717e-01 7.55692902e-01 7.54652326e-01 7.53612980e-01 + 7.52574853e-01 7.51537937e-01 7.50502220e-01 7.49467692e-01 7.48434342e-01 + 7.47402159e-01 7.46371131e-01 7.45341247e-01 7.44312493e-01 7.43284857e-01 + 7.42258326e-01 7.41232886e-01 7.40208523e-01 7.39185222e-01 7.38162968e-01 + 7.37141745e-01 7.36121538e-01 7.35102329e-01 7.34084101e-01 7.33066837e-01 + 7.32050516e-01 7.31035122e-01 7.30020632e-01 7.29007028e-01 7.27994287e-01 + 7.26982387e-01 7.25971306e-01 7.24961020e-01 7.23951505e-01 7.22942734e-01 + 7.21934682e-01 7.20927321e-01 7.19920623e-01 7.18914559e-01 7.17909098e-01 + 7.16904209e-01 7.15899860e-01 7.14896016e-01 7.13892643e-01 7.12889703e-01 + 7.11887161e-01 7.10884976e-01 7.09883108e-01 7.08881516e-01 7.07880155e-01 + 7.06878980e-01 7.05877946e-01 7.04877003e-01 7.03876101e-01 7.02875188e-01 + 7.01874211e-01 7.00873112e-01 6.99871834e-01 6.98870317e-01 6.97868499e-01 + 6.96866313e-01 6.95863694e-01 6.94860571e-01 6.93856872e-01 6.92852523e-01 + 6.91847445e-01 6.90841558e-01 6.89834779e-01 6.88827020e-01 6.87818192e-01 + 6.86808201e-01 6.85796952e-01 6.84784343e-01 6.83770270e-01 6.82754627e-01 + 6.81737300e-01 6.80718175e-01 6.79697130e-01 6.78674042e-01 6.77648780e-01 + 6.76621212e-01 6.75591198e-01 6.74558594e-01 6.73523250e-01 6.72485013e-01 + 6.71443720e-01 6.70399207e-01 6.69351300e-01 6.68299821e-01 6.67244585e-01 + 6.66185399e-01 6.65122064e-01 6.64054373e-01 6.62982114e-01 6.61905065e-01 + 6.60822995e-01 6.59735668e-01 6.58642836e-01 6.57544244e-01 6.56439627e-01 + 6.55328713e-01 6.54211215e-01 6.53086841e-01 6.51955286e-01 6.50816235e-01 + 6.49669360e-01 6.48514324e-01 6.47350776e-01 6.46178354e-01 6.44996683e-01 + 6.43805374e-01 6.42604025e-01 6.41392220e-01 6.40169528e-01 6.38935504e-01 + 6.37689687e-01 6.36431601e-01 6.35160751e-01 6.33876629e-01 6.32578706e-01 + 6.31266438e-01 6.29939261e-01 6.28596592e-01 6.27237829e-01 6.25862351e-01 + 6.24469514e-01 6.23058654e-01 6.21629085e-01 6.20180101e-01 6.18710969e-01 + 6.17220935e-01 6.15709221e-01 6.14175024e-01 6.12617513e-01 6.11035836e-01 + 6.09429111e-01 6.07796429e-01 6.06136855e-01 6.04449424e-01 6.02733144e-01 + 6.00986991e-01 5.99209913e-01 5.97400828e-01 5.95558621e-01 5.93682146e-01 + 5.91770226e-01 5.89821652e-01 5.87835180e-01 5.85809535e-01 5.83743407e-01 + 5.81635454e-01 5.79484299e-01 5.77288531e-01 5.75046705e-01 5.72757343e-01 + 5.70418930e-01 5.68029921e-01 5.65588735e-01 5.63093758e-01 5.60543345e-01 + 5.57935816e-01 5.55269463e-01 5.52542545e-01 5.49753293e-01 5.46899910e-01 + 5.43980570e-01 5.40993427e-01 5.37936605e-01 5.34808213e-01 5.31606337e-01 + 5.28329048e-01 5.24974404e-01 5.21540450e-01 5.18025227e-01 5.14426771e-01 + 5.10743118e-01 5.06972310e-01 5.03112399e-01 4.99161450e-01 4.95117550e-01 + 4.90978812e-01 4.86743382e-01 4.82409446e-01 4.77975236e-01 4.73439039e-01 + 4.68799206e-01 4.64054160e-01 4.59202405e-01 4.54242535e-01 4.49173247e-01 + 4.43993352e-01 4.38701781e-01 4.33297606e-01 4.27780043e-01 4.22148472e-01 + 4.16402449e-01 4.10541717e-01 4.04566224e-01 3.98476134e-01 3.92271848e-01 + 3.85954012e-01 3.79523540e-01 3.72981624e-01 3.66329751e-01 3.59569723e-01 + 3.52703668e-01 3.45734056e-01 3.38663718e-01 3.31495853e-01 3.24234051e-01 + 3.16882299e-01 3.09444996e-01 3.01926963e-01 2.94333453e-01 2.86670156e-01 + 2.78943210e-01 2.71159201e-01 2.63325162e-01 2.55448579e-01 2.47537380e-01 + 2.39599931e-01 2.31645027e-01 2.23681875e-01 2.15720077e-01 2.07769608e-01 + 1.99840793e-01 1.91944274e-01 1.84090973e-01 1.76292060e-01 1.68558901e-01 + 1.60903017e-01 1.53336024e-01 1.45869584e-01 1.38515337e-01 1.31284838e-01 + 1.24189492e-01 1.17240477e-01 1.10448676e-01 1.03824595e-01 9.73782939e-02 + 9.11193025e-02 8.50565488e-02 7.91982826e-02 7.35520037e-02 6.81243941e-02 + 6.29212538e-02 5.79474436e-02 5.32068346e-02 4.87022656e-02 4.44355099e-02 + 4.04072521e-02 3.66170759e-02 3.30634633e-02 2.97438060e-02 2.66544291e-02 + 2.37906280e-02 2.11467162e-02 1.87160870e-02 1.64912847e-02 1.44640875e-02 + 1.26255995e-02 1.09663495e-02 9.47639731e-03 8.14544397e-03 6.96294412e-03 + 5.91821927e-03 5.00056914e-03 4.19937944e-03 3.50422377e-03 2.90495820e-03 + 2.39180651e-03 1.95543501e-03 1.58701559e-03 1.27827650e-03 1.02154025e-03 + 8.09748707e-04 6.36475675e-04 4.95927573e-04 3.82933206e-04 2.92923820e-04 + 2.21904822e-04 1.66420727e-04 1.23514936e-04 9.06859386e-05 6.58415198e-05 + 4.72523917e-05 3.35065418e-05 2.34653835e-05 1.62225835e-05 1.10662166e-05 + 7.44467847e-06 4.93658073e-06 3.22467124e-06 2.07366607e-06 1.31176054e-06 + 8.15498138e-07 4.97621665e-07 2.97504885e-07 1.73762522e-07 9.86548547e-08 + 5.39360246e-08 2.78365328e-08 1.29159488e-08 4.56757882e-09 0.00000000e+00 + 2.00759391e+01 2.00759391e+01 2.00759391e+01 2.00759391e+01 2.00759391e+01 + 2.00759391e+01 2.00759391e+01 2.00759391e+01 2.00759391e+01 2.00759391e+01 + 2.00759391e+01 2.00759391e+01 2.00759391e+01 2.00759391e+01 2.00759391e+01 + 2.00759391e+01 2.00759391e+01 2.00759391e+01 2.00759391e+01 2.00759391e+01 + 2.00759391e+01 2.00759391e+01 2.00759391e+01 2.00759391e+01 2.00759391e+01 + 2.00759391e+01 2.00759391e+01 2.00759391e+01 2.00759391e+01 2.00759391e+01 + 2.00759391e+01 2.00759391e+01 2.00759391e+01 2.00759391e+01 2.00759391e+01 + 2.00759391e+01 2.00759391e+01 2.00759391e+01 2.00759391e+01 2.00759391e+01 + 2.00759391e+01 2.00759391e+01 2.00759391e+01 2.00759391e+01 2.00759391e+01 + 2.00759391e+01 2.00759391e+01 2.00759391e+01 2.00759391e+01 2.00759391e+01 + 2.00440764e+01 2.00010572e+01 1.99581303e+01 1.99152956e+01 1.98725528e+01 + 1.98299017e+01 1.97873421e+01 1.97448739e+01 1.97024969e+01 1.96602108e+01 + 1.96180154e+01 1.95759107e+01 1.95338962e+01 1.94919720e+01 1.94501377e+01 + 1.94083933e+01 1.93667384e+01 1.93251729e+01 1.92836966e+01 1.92423094e+01 + 1.92010109e+01 1.91598011e+01 1.91186798e+01 1.90776467e+01 1.90367017e+01 + 1.89958445e+01 1.89550750e+01 1.89143931e+01 1.88737984e+01 1.88332909e+01 + 1.87928703e+01 1.87525365e+01 1.87122892e+01 1.86721283e+01 1.86320537e+01 + 1.85920650e+01 1.85521621e+01 1.85123449e+01 1.84726131e+01 1.84329667e+01 + 1.83934053e+01 1.83539288e+01 1.83145370e+01 1.82752298e+01 1.82360069e+01 + 1.81968683e+01 1.81578136e+01 1.81188427e+01 1.80799555e+01 1.80411518e+01 + 1.80024313e+01 1.79637939e+01 1.79252395e+01 1.78867678e+01 1.78483787e+01 + 1.78100719e+01 1.77718474e+01 1.77337049e+01 1.76956443e+01 1.76576654e+01 + 1.76197680e+01 1.75819519e+01 1.75442170e+01 1.75065630e+01 1.74689899e+01 + 1.74314974e+01 1.73940854e+01 1.73567537e+01 1.73195021e+01 1.72823305e+01 + 1.72452386e+01 1.72082263e+01 1.71712935e+01 1.71344400e+01 1.70976655e+01 + 1.70609700e+01 1.70243532e+01 1.69878150e+01 1.69513552e+01 1.69149737e+01 + 1.68786703e+01 1.68424448e+01 1.68062970e+01 1.67702268e+01 1.67342341e+01 + 1.66983185e+01 1.66624801e+01 1.66267186e+01 1.65910338e+01 1.65554256e+01 + 1.65198939e+01 1.64844384e+01 1.64490590e+01 1.64137555e+01 1.63785278e+01 + 1.63433757e+01 1.63082990e+01 1.62732977e+01 1.62383714e+01 1.62035201e+01 + 1.61687436e+01 1.61340418e+01 1.60994144e+01 1.60648614e+01 1.60303825e+01 + 1.59959776e+01 1.59616465e+01 1.59273891e+01 1.58932053e+01 1.58590948e+01 + 1.58250575e+01 1.57910933e+01 1.57572020e+01 1.57233834e+01 1.56896374e+01 + 1.56559638e+01 1.56223625e+01 1.55888333e+01 1.55553761e+01 1.55219907e+01 + 1.54886769e+01 1.54554346e+01 1.54222637e+01 1.53891640e+01 1.53561353e+01 + 1.53231775e+01 1.52902904e+01 1.52574739e+01 1.52247279e+01 1.51920521e+01 + 1.51594464e+01 1.51269108e+01 1.50944449e+01 1.50620488e+01 1.50297221e+01 + 1.49974649e+01 1.49652769e+01 1.49331579e+01 1.49011079e+01 1.48691267e+01 + 1.48372142e+01 1.48053701e+01 1.47735943e+01 1.47418868e+01 1.47102473e+01 + 1.46786757e+01 1.46471719e+01 1.46157357e+01 1.45843670e+01 1.45530656e+01 + 1.45218313e+01 1.44906641e+01 1.44595638e+01 1.44285303e+01 1.43975633e+01 + 1.43666628e+01 1.43358286e+01 1.43050607e+01 1.42743587e+01 1.42437226e+01 + 1.42131523e+01 1.41826476e+01 1.41522084e+01 1.41218345e+01 1.40915258e+01 + 1.40612821e+01 1.40311034e+01 1.40009894e+01 1.39709400e+01 1.39409552e+01 + 1.39110347e+01 1.38811784e+01 1.38513862e+01 1.38216579e+01 1.37919934e+01 + 1.37623926e+01 1.37328554e+01 1.37033815e+01 1.36739709e+01 1.36446234e+01 + 1.36153389e+01 1.35861172e+01 1.35569583e+01 1.35278619e+01 1.34988280e+01 + 1.34698564e+01 1.34409470e+01 1.34120996e+01 1.33833142e+01 1.33545905e+01 + 1.33259285e+01 1.32973280e+01 1.32687888e+01 1.32403110e+01 1.32118942e+01 + 1.31835384e+01 1.31552435e+01 1.31270093e+01 1.30988357e+01 1.30707226e+01 + 1.30426698e+01 1.30146773e+01 1.29867448e+01 1.29588722e+01 1.29310595e+01 + 1.29033065e+01 1.28756130e+01 1.28479790e+01 1.28204042e+01 1.27928887e+01 + 1.27654322e+01 1.27380346e+01 1.27106959e+01 1.26834158e+01 1.26561943e+01 + 1.26290312e+01 1.26019263e+01 1.25748797e+01 1.25478911e+01 1.25209604e+01 + 1.24940876e+01 1.24672724e+01 1.24405147e+01 1.24138145e+01 1.23871716e+01 + 1.23605859e+01 1.23340572e+01 1.23075855e+01 1.22811706e+01 1.22548124e+01 + 1.22285107e+01 1.22022655e+01 1.21760766e+01 1.21499440e+01 1.21238674e+01 + 1.20978468e+01 1.20718820e+01 1.20459730e+01 1.20201195e+01 1.19943216e+01 + 1.19685790e+01 1.19428917e+01 1.19172595e+01 1.18916823e+01 1.18661600e+01 + 1.18406925e+01 1.18152796e+01 1.17899213e+01 1.17646174e+01 1.17393678e+01 + 1.17141725e+01 1.16890311e+01 1.16639438e+01 1.16389103e+01 1.16139305e+01 + 1.15890043e+01 1.15641316e+01 1.15393124e+01 1.15145463e+01 1.14898335e+01 + 1.14651736e+01 1.14405667e+01 1.14160126e+01 1.13915112e+01 1.13670624e+01 + 1.13426661e+01 1.13183221e+01 1.12940304e+01 1.12697908e+01 1.12456032e+01 + 1.12214676e+01 1.11973837e+01 1.11733515e+01 1.11493710e+01 1.11254418e+01 + 1.11015641e+01 1.10777376e+01 1.10539622e+01 1.10302378e+01 1.10065644e+01 + 1.09829418e+01 1.09593698e+01 1.09358485e+01 1.09123777e+01 1.08889572e+01 + 1.08655870e+01 1.08422669e+01 1.08189969e+01 1.07957769e+01 1.07726066e+01 + 1.07494861e+01 1.07264153e+01 1.07033939e+01 1.06804219e+01 1.06574993e+01 + 1.06346258e+01 1.06118015e+01 1.05890261e+01 1.05662996e+01 1.05436219e+01 + 1.05209929e+01 1.04984124e+01 1.04758804e+01 1.04533967e+01 1.04309613e+01 + 1.04085741e+01 1.03862349e+01 1.03639436e+01 1.03417002e+01 1.03195045e+01 + 1.02973565e+01 1.02752560e+01 1.02532029e+01 1.02311972e+01 1.02092387e+01 + 1.01873273e+01 1.01654630e+01 1.01436455e+01 1.01218749e+01 1.01001511e+01 + 1.00784738e+01 1.00568431e+01 1.00352588e+01 1.00137208e+01 9.99222904e+00 + 9.97078341e+00 9.94938381e+00 9.92803014e+00 9.90672230e+00 9.88546019e+00 + 9.86424372e+00 9.84307278e+00 9.82194727e+00 9.80086711e+00 9.77983219e+00 + 9.75884242e+00 9.73789769e+00 9.71699792e+00 9.69614300e+00 9.67533284e+00 + 9.65456735e+00 9.63384642e+00 9.61316997e+00 9.59253789e+00 9.57195009e+00 + 9.55140648e+00 9.53090696e+00 9.51045144e+00 9.49003981e+00 9.46967200e+00 + 9.44934790e+00 9.42906742e+00 9.40883047e+00 9.38863695e+00 9.36848677e+00 + 9.34837984e+00 9.32831606e+00 9.30829535e+00 9.28831760e+00 9.26838273e+00 + 9.24849064e+00 9.22864125e+00 9.20883446e+00 9.18907018e+00 9.16934832e+00 + 9.14966878e+00 9.13003148e+00 9.11043633e+00 9.09088323e+00 9.07137210e+00 + 9.05190285e+00 9.03247538e+00 9.01308960e+00 8.99374544e+00 8.97444278e+00 + 8.95518156e+00 8.93596168e+00 8.91678304e+00 8.89764557e+00 8.87854917e+00 + 8.85949376e+00 8.84047925e+00 8.82150554e+00 8.80257256e+00 8.78368021e+00 + 8.76482840e+00 8.74601706e+00 8.72724609e+00 8.70851541e+00 8.68982493e+00 + 8.67117456e+00 8.65256422e+00 8.63399383e+00 8.61546328e+00 8.59697251e+00 + 8.57852143e+00 8.56010995e+00 8.54173798e+00 8.52340544e+00 8.50511224e+00 + 8.48685831e+00 8.46864356e+00 8.45046790e+00 8.43233125e+00 8.41423352e+00 + 8.39617463e+00 8.37815451e+00 8.36017306e+00 8.34223020e+00 8.32432585e+00 + 8.30645993e+00 8.28863235e+00 8.27084304e+00 8.25309190e+00 8.23537886e+00 + 8.21770384e+00 8.20006675e+00 8.18246752e+00 8.16490606e+00 8.14738229e+00 + 8.12989613e+00 8.11244750e+00 8.09503632e+00 8.07766250e+00 8.06032598e+00 + 8.04302666e+00 8.02576447e+00 8.00853933e+00 7.99135116e+00 7.97419988e+00 + 7.95708540e+00 7.94000767e+00 7.92296658e+00 7.90596207e+00 7.88899405e+00 + 7.87206245e+00 7.85516719e+00 7.83830819e+00 7.82148537e+00 7.80469866e+00 + 7.78794798e+00 7.77123325e+00 7.75455439e+00 7.73791133e+00 7.72130399e+00 + 7.70473229e+00 7.68819616e+00 7.67169552e+00 7.65523029e+00 7.63880040e+00 + 7.62240578e+00 7.60604634e+00 7.58972201e+00 7.57343271e+00 7.55717838e+00 + 7.54095894e+00 7.52477430e+00 7.50862440e+00 7.49250916e+00 7.47642851e+00 + 7.46038237e+00 7.44437067e+00 7.42839333e+00 7.41245029e+00 7.39654146e+00 + 7.38066678e+00 7.36482617e+00 7.34901955e+00 7.33324686e+00 7.31750803e+00 + 7.30180297e+00 7.28613161e+00 7.27049390e+00 7.25488974e+00 7.23931907e+00 + 7.22378183e+00 7.20827793e+00 7.19280730e+00 7.17736988e+00 7.16196559e+00 + 7.14659436e+00 7.13125612e+00 7.11595080e+00 7.10067833e+00 7.08543864e+00 + 7.07023165e+00 7.05505731e+00 7.03991553e+00 7.02480625e+00 7.00972939e+00 + 6.99468490e+00 6.97967269e+00 6.96469270e+00 6.94974487e+00 6.93482911e+00 + 6.91994537e+00 6.90509357e+00 6.89027365e+00 6.87548554e+00 6.86072916e+00 + 6.84600445e+00 6.83131135e+00 6.81664978e+00 6.80201968e+00 6.78742098e+00 + 6.77285361e+00 6.75831750e+00 6.74381260e+00 6.72933882e+00 6.71489611e+00 + 6.70048439e+00 6.68610361e+00 6.67175369e+00 6.65743457e+00 6.64314618e+00 + 6.62888845e+00 6.61466133e+00 6.60046474e+00 6.58629863e+00 6.57216291e+00 + 6.55805753e+00 6.54398243e+00 6.52993754e+00 6.51592279e+00 6.50193811e+00 + 6.48798346e+00 6.47405875e+00 6.46016392e+00 6.44629892e+00 6.43246368e+00 + 6.41865813e+00 6.40488221e+00 6.39113586e+00 6.37741901e+00 6.36373160e+00 + 6.35007356e+00 6.33644484e+00 6.32284537e+00 6.30927508e+00 6.29573393e+00 + 6.28222183e+00 6.26873873e+00 6.25528457e+00 6.24185929e+00 6.22846282e+00 + 6.21509511e+00 6.20175608e+00 6.18844568e+00 6.17516385e+00 6.16191053e+00 + 6.14868565e+00 6.13548915e+00 6.12232097e+00 6.10918106e+00 6.09606935e+00 + 6.08298578e+00 6.06993029e+00 6.05690282e+00 6.04390331e+00 6.03093170e+00 + 6.01798793e+00 6.00507194e+00 5.99218368e+00 5.97932307e+00 5.96649006e+00 + 5.95368460e+00 5.94090662e+00 5.92815607e+00 5.91543288e+00 5.90273699e+00 + 5.89006836e+00 5.87742692e+00 5.86481260e+00 5.85222536e+00 5.83966514e+00 + 5.82713187e+00 5.81462550e+00 5.80214598e+00 5.78969323e+00 5.77726722e+00 + 5.76486787e+00 5.75249513e+00 5.74014895e+00 5.72782927e+00 5.71553603e+00 + 5.70326917e+00 5.69102864e+00 5.67881438e+00 5.66662634e+00 5.65446445e+00 + 5.64232867e+00 5.63021893e+00 5.61813518e+00 5.60607737e+00 5.59404543e+00 + 5.58203932e+00 5.57005898e+00 5.55810435e+00 5.54617538e+00 5.53427201e+00 + 5.52239418e+00 5.51054185e+00 5.49871496e+00 5.48691345e+00 5.47513727e+00 + 5.46338636e+00 5.45166067e+00 5.43996015e+00 5.42828475e+00 5.41663440e+00 + 5.40500905e+00 5.39340865e+00 5.38183316e+00 5.37028250e+00 5.35875664e+00 + 5.34725551e+00 5.33577907e+00 5.32432726e+00 5.31290002e+00 5.30149731e+00 + 5.29011908e+00 5.27876526e+00 5.26743582e+00 5.25613069e+00 5.24484982e+00 + 5.23359316e+00 5.22236066e+00 5.21115227e+00 5.19996794e+00 5.18880761e+00 + 5.17767123e+00 5.16655876e+00 5.15547013e+00 5.14440530e+00 5.13336422e+00 + 5.12234684e+00 5.11135310e+00 5.10038296e+00 5.08943636e+00 5.07851326e+00 + 5.06761360e+00 5.05673733e+00 5.04588441e+00 5.03505478e+00 5.02424839e+00 + 5.01346520e+00 5.00270514e+00 4.99196819e+00 4.98125427e+00 4.97056335e+00 + 4.95989538e+00 4.94925030e+00 4.93862807e+00 4.92802863e+00 4.91745195e+00 + 4.90689796e+00 4.89636663e+00 4.88585790e+00 4.87537172e+00 4.86490805e+00 + 4.85446683e+00 4.84404803e+00 4.83365158e+00 4.82327745e+00 4.81292559e+00 + 4.80259594e+00 4.79228846e+00 4.78200311e+00 4.77173983e+00 4.76149857e+00 + 4.75127930e+00 4.74108196e+00 4.73090650e+00 4.72075289e+00 4.71062106e+00 + 4.70051099e+00 4.69042261e+00 4.68035588e+00 4.67031076e+00 4.66028719e+00 + 4.65028514e+00 4.64030456e+00 4.63034539e+00 4.62040761e+00 4.61049115e+00 + 4.60059597e+00 4.59072203e+00 4.58086928e+00 4.57103768e+00 4.56122718e+00 + 4.55143774e+00 4.54166930e+00 4.53192183e+00 4.52219528e+00 4.51248961e+00 + 4.50280477e+00 4.49314071e+00 4.48349739e+00 4.47387478e+00 4.46427281e+00 + 4.45469145e+00 4.44513066e+00 4.43559038e+00 4.42607058e+00 4.41657121e+00 + 4.40709223e+00 4.39763360e+00 4.38819526e+00 4.37877718e+00 4.36937932e+00 + 4.36000162e+00 4.35064406e+00 4.34130657e+00 4.33198913e+00 4.32269168e+00 + 4.31341419e+00 4.30415660e+00 4.29491889e+00 4.28570101e+00 4.27650290e+00 + 4.26732454e+00 4.25816588e+00 4.24902688e+00 4.23990748e+00 4.23080767e+00 + 4.22172738e+00 4.21266658e+00 4.20362522e+00 4.19460328e+00 4.18560069e+00 + 4.17661743e+00 4.16765344e+00 4.15870870e+00 4.14978315e+00 4.14087676e+00 + 4.13198948e+00 4.12312128e+00 4.11427211e+00 4.10544194e+00 4.09663071e+00 + 4.08783840e+00 4.07906495e+00 4.07031034e+00 4.06157452e+00 4.05285744e+00 + 4.04415907e+00 4.03547938e+00 4.02681831e+00 4.01817583e+00 4.00955190e+00 + 4.00094647e+00 3.99235952e+00 3.98379100e+00 3.97524086e+00 3.96670908e+00 + 3.95819561e+00 3.94970041e+00 3.94122344e+00 3.93276467e+00 3.92432405e+00 + 3.91590154e+00 3.90749711e+00 3.89911073e+00 3.89074234e+00 3.88239191e+00 + 3.87405940e+00 3.86574477e+00 3.85744799e+00 3.84916902e+00 3.84090782e+00 + 3.83266434e+00 3.82443856e+00 3.81623044e+00 3.80803993e+00 3.79986699e+00 + 3.79171160e+00 3.78357372e+00 3.77545330e+00 3.76735030e+00 3.75926470e+00 + 3.75119645e+00 3.74314552e+00 3.73511187e+00 3.72709545e+00 3.71909625e+00 + 3.71111421e+00 3.70314930e+00 3.69520149e+00 3.68727074e+00 3.67935701e+00 + 3.67146026e+00 3.66358046e+00 3.65571757e+00 3.64787156e+00 3.64004238e+00 + 3.63223001e+00 3.62443441e+00 3.61665554e+00 3.60889336e+00 3.60114785e+00 + 3.59341895e+00 3.58570665e+00 3.57801089e+00 3.57033166e+00 3.56266890e+00 + 3.55502259e+00 3.54739270e+00 3.53977917e+00 3.53218199e+00 3.52460112e+00 + 3.51703651e+00 3.50948814e+00 3.50195597e+00 3.49443996e+00 3.48694009e+00 + 3.47945631e+00 3.47198860e+00 3.46453691e+00 3.45710121e+00 3.44968148e+00 + 3.44227767e+00 3.43488974e+00 3.42751768e+00 3.42016144e+00 3.41282098e+00 + 3.40549628e+00 3.39818730e+00 3.39089401e+00 3.38361637e+00 3.37635435e+00 + 3.36910791e+00 3.36187703e+00 3.35466167e+00 3.34746179e+00 3.34027737e+00 + 3.33310836e+00 3.32595474e+00 3.31881648e+00 3.31169353e+00 3.30458587e+00 + 3.29749347e+00 3.29041629e+00 3.28335430e+00 3.27630746e+00 3.26927575e+00 + 3.26225913e+00 3.25525757e+00 3.24827104e+00 3.24129950e+00 3.23434292e+00 + 3.22740128e+00 3.22047453e+00 3.21356265e+00 3.20666561e+00 3.19978336e+00 + 3.19291589e+00 3.18606316e+00 3.17922513e+00 3.17240178e+00 3.16559307e+00 + 3.15879898e+00 3.15201947e+00 3.14525451e+00 3.13850407e+00 3.13176812e+00 + 3.12504662e+00 3.11833955e+00 3.11164687e+00 3.10496856e+00 3.09830458e+00 + 3.09165491e+00 3.08501950e+00 3.07839834e+00 3.07179139e+00 3.06519862e+00 + 3.05861999e+00 3.05205549e+00 3.04550508e+00 3.03896872e+00 3.03244639e+00 + 3.02593806e+00 3.01944370e+00 3.01296328e+00 3.00649677e+00 3.00004413e+00 + 2.99360535e+00 2.98718038e+00 2.98076920e+00 2.97437178e+00 2.96798810e+00 + 2.96161811e+00 2.95526179e+00 2.94891912e+00 2.94259006e+00 2.93627458e+00 + 2.92997266e+00 2.92368427e+00 2.91740937e+00 2.91114793e+00 2.90489994e+00 + 2.89866535e+00 2.89244415e+00 2.88623630e+00 2.88004177e+00 2.87386054e+00 + 2.86769257e+00 2.86153784e+00 2.85539632e+00 2.84926798e+00 2.84315279e+00 + 2.83705073e+00 2.83096177e+00 2.82488587e+00 2.81882302e+00 2.81277317e+00 + 2.80673631e+00 2.80071241e+00 2.79470143e+00 2.78870336e+00 2.78271816e+00 + 2.77674581e+00 2.77078627e+00 2.76483952e+00 2.75890554e+00 2.75298429e+00 + 2.74707575e+00 2.74117990e+00 2.73529669e+00 2.72942612e+00 2.72356814e+00 + 2.71772273e+00 2.71188987e+00 2.70606953e+00 2.70026168e+00 2.69446630e+00 + 2.68868335e+00 2.68291282e+00 2.67715467e+00 2.67140888e+00 2.66567542e+00 + 2.65995427e+00 2.65424539e+00 2.64854877e+00 2.64286437e+00 2.63719218e+00 + 2.63153215e+00 2.62588428e+00 2.62024853e+00 2.61462487e+00 2.60901328e+00 + 2.60341374e+00 2.59782621e+00 2.59225068e+00 2.58668711e+00 2.58113548e+00 + 2.57559577e+00 2.57006795e+00 2.56455199e+00 2.55904787e+00 2.55355557e+00 + 2.54807505e+00 2.54260629e+00 2.53714927e+00 2.53170396e+00 2.52627034e+00 + 2.52084839e+00 2.51543806e+00 2.51003935e+00 2.50465223e+00 2.49927667e+00 + 2.49391265e+00 2.48856013e+00 2.48321911e+00 2.47788955e+00 2.47257143e+00 + 2.46726472e+00 2.46196940e+00 2.45668545e+00 2.45141283e+00 2.44615154e+00 + 2.44090153e+00 2.43566279e+00 2.43043530e+00 2.42521903e+00 2.42001395e+00 + 2.41482004e+00 2.40963728e+00 2.40446564e+00 2.39930510e+00 2.39415564e+00 + 2.38901723e+00 2.38388985e+00 2.37877347e+00 2.37366808e+00 2.36857364e+00 + 2.36349013e+00 2.35841754e+00 2.35335583e+00 2.34830499e+00 2.34326498e+00 + 2.33823580e+00 2.33321740e+00 2.32820978e+00 2.32321291e+00 2.31822676e+00 + 2.31325131e+00 2.30828654e+00 2.30333242e+00 2.29838894e+00 2.29345607e+00 + 2.28853378e+00 2.28362206e+00 2.27872088e+00 2.27383022e+00 2.26895006e+00 + 2.26408037e+00 2.25922113e+00 2.25437232e+00 2.24953392e+00 2.24470590e+00 + 2.23988824e+00 2.23508093e+00 2.23028393e+00 2.22549722e+00 2.22072079e+00 + 2.21595462e+00 2.21119867e+00 2.20645292e+00 2.20171737e+00 2.19699197e+00 + 2.19227672e+00 2.18757159e+00 2.18287656e+00 2.17819160e+00 2.17351670e+00 + 2.16885183e+00 2.16419698e+00 2.15955211e+00 2.15491722e+00 2.15029227e+00 + 2.14567724e+00 2.14107213e+00 2.13647689e+00 2.13189152e+00 2.12731599e+00 + 2.12275028e+00 2.11819437e+00 2.11364823e+00 2.10911186e+00 2.10458522e+00 + 2.10006829e+00 2.09556106e+00 2.09106350e+00 2.08657560e+00 2.08209733e+00 + 2.07762867e+00 2.07316960e+00 2.06872010e+00 2.06428015e+00 2.05984973e+00 + 2.05542881e+00 2.05101739e+00 2.04661543e+00 2.04222293e+00 2.03783984e+00 + 2.03346617e+00 2.02910188e+00 2.02474696e+00 2.02040139e+00 2.01606514e+00 + 2.01173820e+00 2.00742055e+00 2.00311216e+00 1.99881302e+00 1.99452311e+00 + 1.99024240e+00 1.98597088e+00 1.98170853e+00 1.97745533e+00 1.97321125e+00 + 1.96897629e+00 1.96475041e+00 1.96053360e+00 1.95632584e+00 1.95212712e+00 + 1.94793740e+00 1.94375668e+00 1.93958493e+00 1.93542213e+00 1.93126827e+00 + 1.92712332e+00 1.92298727e+00 1.91886010e+00 1.91474178e+00 1.91063231e+00 + 1.90653165e+00 1.90243979e+00 1.89835672e+00 1.89428241e+00 1.89021684e+00 + 1.88616000e+00 1.88211187e+00 1.87807242e+00 1.87404164e+00 1.87001952e+00 + 1.86600602e+00 1.86200115e+00 1.85800486e+00 1.85401715e+00 1.85003801e+00 + 1.84606740e+00 1.84210531e+00 1.83815173e+00 1.83420663e+00 1.83027000e+00 + 1.82634182e+00 1.82242207e+00 1.81851073e+00 1.81460779e+00 1.81071322e+00 + 1.80682701e+00 1.80294915e+00 1.79907960e+00 1.79521836e+00 1.79136541e+00 + 1.78752073e+00 1.78368429e+00 1.77985610e+00 1.77603612e+00 1.77222433e+00 + 1.76842073e+00 1.76462529e+00 1.76083800e+00 1.75705883e+00 1.75328778e+00 + 1.74952482e+00 1.74576994e+00 1.74202311e+00 1.73828433e+00 1.73455357e+00 + 1.73083082e+00 1.72711606e+00 1.72340927e+00 1.71971043e+00 1.71601954e+00 + 1.71233656e+00 1.70866149e+00 1.70499431e+00 1.70133500e+00 1.69768354e+00 + 1.69403992e+00 1.69040412e+00 1.68677613e+00 1.68315592e+00 1.67954347e+00 + 1.67593879e+00 1.67234184e+00 1.66875260e+00 1.66517108e+00 1.66159723e+00 + 1.65803106e+00 1.65447255e+00 1.65092167e+00 1.64737841e+00 1.64384275e+00 + 1.64031469e+00 1.63679419e+00 1.63328125e+00 1.62977586e+00 1.62627798e+00 + 1.62278761e+00 1.61930474e+00 1.61582933e+00 1.61236139e+00 1.60890089e+00 + 1.60544782e+00 1.60200216e+00 1.59856389e+00 1.59513300e+00 1.59170948e+00 + 1.58829330e+00 1.58488446e+00 1.58148293e+00 1.57808870e+00 1.57470176e+00 + 1.57132209e+00 1.56794967e+00 1.56458448e+00 1.56122652e+00 1.55787577e+00 + 1.55453221e+00 1.55119582e+00 1.54786660e+00 1.54454452e+00 1.54122957e+00 + 1.53792173e+00 1.53462100e+00 1.53132735e+00 1.52804076e+00 1.52476123e+00 + 1.52148874e+00 1.51822328e+00 1.51496482e+00 1.51171335e+00 1.50846886e+00 + 1.50523134e+00 1.50200077e+00 1.49877712e+00 1.49556040e+00 1.49235058e+00 + 1.48914765e+00 1.48595159e+00 1.48276240e+00 1.47958005e+00 1.47640452e+00 + 1.47323582e+00 1.47007391e+00 1.46691879e+00 1.46377044e+00 1.46062885e+00 + 1.45749400e+00 1.45436588e+00 1.45124447e+00 1.44812976e+00 1.44502174e+00 + 1.44192039e+00 1.43882569e+00 1.43573763e+00 1.43265621e+00 1.42958139e+00 + 1.42651318e+00 1.42345155e+00 1.42039649e+00 1.41734799e+00 1.41430603e+00 + 1.41127059e+00 1.40824168e+00 1.40521926e+00 1.40220333e+00 1.39919388e+00 + 1.39619088e+00 1.39319433e+00 1.39020420e+00 1.38722050e+00 1.38424320e+00 + 1.38127229e+00 1.37830775e+00 1.37534958e+00 1.37239776e+00 1.36945227e+00 + 1.36651310e+00 1.36358024e+00 1.36065367e+00 1.35773339e+00 1.35481937e+00 + 1.35191161e+00 1.34901009e+00 1.34611479e+00 1.34322571e+00 1.34034283e+00 + 1.33746613e+00 1.33459561e+00 1.33173125e+00 1.32887304e+00 1.32602096e+00 + 1.32317500e+00 1.32033515e+00 1.31750140e+00 1.31467372e+00 1.31185212e+00 + 1.30903657e+00 1.30622706e+00 1.30342358e+00 1.30062612e+00 1.29783466e+00 + 1.29504919e+00 1.29226970e+00 1.28949618e+00 1.28672861e+00 1.28396697e+00 + 1.28121127e+00 1.27846147e+00 1.27571758e+00 1.27297958e+00 1.27024745e+00 + 1.26752119e+00 1.26480077e+00 1.26208620e+00 1.25937745e+00 1.25667451e+00 + 1.25397737e+00 1.25128603e+00 1.24860045e+00 1.24592064e+00 1.24324658e+00 + 1.24057826e+00 1.23791567e+00 1.23525878e+00 1.23260760e+00 1.22996211e+00 + 1.22732230e+00 1.22468815e+00 1.22205965e+00 1.21943680e+00 1.21681957e+00 + 1.21420796e+00 1.21160195e+00 1.20900153e+00 1.20640670e+00 1.20381743e+00 + 1.20123372e+00 1.19865555e+00 1.19608291e+00 1.19351580e+00 1.19095419e+00 + 1.18839808e+00 1.18584745e+00 1.18330230e+00 1.18076261e+00 1.17822836e+00 + 1.17569956e+00 1.17317618e+00 1.17065821e+00 1.16814565e+00 1.16563847e+00 + 1.16313668e+00 1.16064025e+00 1.15814918e+00 1.15566346e+00 1.15318306e+00 + 1.15070799e+00 1.14823823e+00 1.14577377e+00 1.14331459e+00 1.14086069e+00 + 1.13841205e+00 1.13596867e+00 1.13353053e+00 1.13109762e+00 1.12866992e+00 + 1.12624744e+00 1.12383015e+00 1.12141805e+00 1.11901112e+00 1.11660935e+00 + 1.11421273e+00 1.11182126e+00 1.10943491e+00 1.10705368e+00 1.10467756e+00 + 1.10230654e+00 1.09994060e+00 1.09757973e+00 1.09522393e+00 1.09287318e+00 + 1.09052747e+00 1.08818679e+00 1.08585113e+00 1.08352048e+00 1.08119483e+00 + 1.07887416e+00 1.07655847e+00 1.07424774e+00 1.07194197e+00 1.06964114e+00 + 1.06734525e+00 1.06505427e+00 1.06276821e+00 1.06048705e+00 1.05821077e+00 + 1.05593938e+00 1.05367285e+00 1.05141119e+00 1.04915437e+00 1.04690238e+00 + 1.04465523e+00 1.04241289e+00 1.04017535e+00 1.03794261e+00 1.03571465e+00 + 1.03349147e+00 1.03127304e+00 1.02905938e+00 1.02685045e+00 1.02464626e+00 + 1.02244678e+00 1.02025202e+00 1.01806196e+00 1.01587659e+00 1.01369590e+00 + 1.01151988e+00 1.00934851e+00 1.00718180e+00 1.00501973e+00 1.00286228e+00 + 1.00070946e+00 9.98561236e-01 9.96417615e-01 9.94278581e-01 9.92144125e-01 + 9.90014236e-01 9.87888904e-01 9.85768119e-01 9.83651871e-01 9.81540149e-01 + 9.79432944e-01 9.77330246e-01 9.75232044e-01 9.73138328e-01 9.71049088e-01 + 9.68964314e-01 9.66883996e-01 9.64808125e-01 9.62736689e-01 9.60669679e-01 + 9.58607085e-01 9.56548897e-01 9.54495105e-01 9.52445699e-01 9.50400669e-01 + 9.48360004e-01 9.46323696e-01 9.44291733e-01 9.42264107e-01 9.40240807e-01 + 9.38221822e-01 9.36207144e-01 9.34196763e-01 9.32190667e-01 9.30188848e-01 + 9.28191295e-01 9.26197999e-01 9.24208949e-01 9.22224136e-01 9.20243549e-01 + 9.18267179e-01 9.16295016e-01 9.14327050e-01 9.12363271e-01 9.10403669e-01 + 9.08448234e-01 9.06496956e-01 9.04549825e-01 9.02606832e-01 9.00667966e-01 + 8.98733217e-01 8.96802576e-01 8.94876032e-01 8.92953575e-01 8.91035196e-01 + 8.89120885e-01 8.87210631e-01 8.85304424e-01 8.83402255e-01 8.81504113e-01 + 8.79609989e-01 8.77719872e-01 8.75833752e-01 8.73951619e-01 8.72073464e-01 + 8.70199275e-01 8.68329043e-01 8.66462758e-01 8.64600409e-01 8.62741986e-01 + 8.60887479e-01 8.59036879e-01 8.57190173e-01 8.55347353e-01 8.53508408e-01 + 8.51673328e-01 8.49842102e-01 8.48014719e-01 8.46191170e-01 8.44371444e-01 + 8.42555531e-01 8.40743420e-01 8.38935100e-01 8.37130561e-01 8.35329792e-01 + 8.33532782e-01 8.31739522e-01 8.29950000e-01 8.28164205e-01 8.26382127e-01 + 8.24603754e-01 8.22829076e-01 8.21058082e-01 8.19290760e-01 8.17527101e-01 + 8.15767091e-01 8.14010722e-01 8.12257980e-01 8.10508856e-01 8.08763337e-01 + 8.07021412e-01 8.05283069e-01 8.03548298e-01 8.01817087e-01 8.00089423e-01 + 7.98365295e-01 7.96644692e-01 7.94927601e-01 7.93214010e-01 7.91503908e-01 + 7.89797282e-01 7.88094120e-01 7.86394410e-01 7.84698139e-01 7.83005295e-01 + 7.81315865e-01 7.79629836e-01 7.77947197e-01 7.76267933e-01 7.74592033e-01 + 7.72919482e-01 7.71250267e-01 7.69584376e-01 7.67921795e-01 7.66262510e-01 + 7.64606508e-01 7.62953775e-01 7.61304297e-01 7.59658059e-01 7.58015048e-01 + 7.56375250e-01 7.54738649e-01 7.53105231e-01 7.51474982e-01 7.49847887e-01 + 7.48223929e-01 7.46603095e-01 7.44985369e-01 7.43370735e-01 7.41759177e-01 + 7.40150680e-01 7.38545227e-01 7.36942802e-01 7.35343389e-01 7.33746970e-01 + 7.32153529e-01 7.30563049e-01 7.28975513e-01 7.27390903e-01 7.25809201e-01 + 7.24230389e-01 7.22654449e-01 7.21081363e-01 7.19511112e-01 7.17943676e-01 + 7.16379038e-01 7.14817176e-01 7.13258073e-01 7.11701707e-01 7.10148058e-01 + 7.08597106e-01 7.07048830e-01 7.05503209e-01 7.03960221e-01 7.02419845e-01 + 7.00882058e-01 6.99346838e-01 6.97814163e-01 6.96284009e-01 6.94756352e-01 + 6.93231170e-01 6.91708437e-01 6.90188130e-01 6.88670223e-01 6.87154691e-01 + 6.85641509e-01 6.84130649e-01 6.82622086e-01 6.81115793e-01 6.79611743e-01 + 6.78109907e-01 6.76610256e-01 6.75112764e-01 6.73617399e-01 6.72124133e-01 + 6.70632935e-01 6.69143774e-01 6.67656619e-01 6.66171439e-01 6.64688201e-01 + 6.63206872e-01 6.61727419e-01 6.60249807e-01 6.58774002e-01 6.57299969e-01 + 6.55827672e-01 6.54357074e-01 6.52888139e-01 6.51420829e-01 6.49955104e-01 + 6.48490927e-01 6.47028257e-01 6.45567053e-01 6.44107275e-01 6.42648880e-01 + 6.41191826e-01 6.39736069e-01 6.38281565e-01 6.36828269e-01 6.35376134e-01 + 6.33925114e-01 6.32475162e-01 6.31026228e-01 6.29578264e-01 6.28131219e-01 + 6.26685041e-01 6.25239679e-01 6.23795080e-01 6.22351189e-01 6.20907951e-01 + 6.19465310e-01 6.18023208e-01 6.16581589e-01 6.15140391e-01 6.13699555e-01 + 6.12259019e-01 6.10818721e-01 6.09378596e-01 6.07938579e-01 6.06498604e-01 + 6.05058604e-01 6.03618509e-01 6.02178250e-01 6.00737754e-01 5.99296950e-01 + 5.97855763e-01 5.96414118e-01 5.94971938e-01 5.93529144e-01 5.92085657e-01 + 5.90641395e-01 5.89196275e-01 5.87750214e-01 5.86303125e-01 5.84854920e-01 + 5.83405511e-01 5.81954807e-01 5.80502715e-01 5.79049141e-01 5.77593989e-01 + 5.76137162e-01 5.74678560e-01 5.73218082e-01 5.71755624e-01 5.70291081e-01 + 5.68824347e-01 5.67355312e-01 5.65883866e-01 5.64409896e-01 5.62933287e-01 + 5.61453921e-01 5.59971680e-01 5.58486443e-01 5.56998085e-01 5.55506482e-01 + 5.54011505e-01 5.52513025e-01 5.51010909e-01 5.49505022e-01 5.47995227e-01 + 5.46481386e-01 5.44963355e-01 5.43440991e-01 5.41914147e-01 5.40382673e-01 + 5.38846419e-01 5.37305229e-01 5.35758946e-01 5.34207411e-01 5.32650462e-01 + 5.31087934e-01 5.29519659e-01 5.27945467e-01 5.26365185e-01 5.24778637e-01 + 5.23185644e-01 5.21586025e-01 5.19979596e-01 5.18366169e-01 5.16745554e-01 + 5.15117559e-01 5.13481987e-01 5.11838640e-01 5.10187316e-01 5.08527810e-01 + 5.06859916e-01 5.05183421e-01 5.03498113e-01 5.01803775e-01 5.00100187e-01 + 4.98387128e-01 4.96664371e-01 4.94931688e-01 4.93188848e-01 4.91435617e-01 + 4.89671756e-01 4.87897027e-01 4.86111186e-01 4.84313987e-01 4.82505182e-01 + 4.80684518e-01 4.78851743e-01 4.77006599e-01 4.75148825e-01 4.73278161e-01 + 4.71394342e-01 4.69497099e-01 4.67586165e-01 4.65661265e-01 4.63722128e-01 + 4.61768475e-01 4.59800029e-01 4.57816510e-01 4.55817634e-01 4.53803118e-01 + 4.51772676e-01 4.49726022e-01 4.47662866e-01 4.45582919e-01 4.43485891e-01 + 4.41371488e-01 4.39239420e-01 4.37089394e-01 4.34921115e-01 4.32734292e-01 + 4.30528630e-01 4.28303837e-01 4.26059620e-01 4.23795689e-01 4.21511752e-01 + 4.19207520e-01 4.16882707e-01 4.14537026e-01 4.12170195e-01 4.09781933e-01 + 4.07371963e-01 4.04940009e-01 4.02485802e-01 4.00009075e-01 3.97509566e-01 + 3.94987017e-01 3.92441177e-01 3.89871799e-01 3.87278645e-01 3.84661480e-01 + 3.82020079e-01 3.79354224e-01 3.76663705e-01 3.73948321e-01 3.71207881e-01 + 3.68442203e-01 3.65651117e-01 3.62834463e-01 3.59992093e-01 3.57123872e-01 + 3.54229679e-01 3.51309405e-01 3.48362957e-01 3.45390258e-01 3.42391245e-01 + 3.39365874e-01 3.36314117e-01 3.33235967e-01 3.30131432e-01 3.27000544e-01 + 3.23843354e-01 3.20659935e-01 3.17450383e-01 3.14214817e-01 3.10953381e-01 + 3.07666242e-01 3.04353596e-01 3.01015664e-01 2.97652696e-01 2.94264969e-01 + 2.90852790e-01 2.87416499e-01 2.83956463e-01 2.80473085e-01 2.76966798e-01 + 2.73438070e-01 2.69887404e-01 2.66315338e-01 2.62722445e-01 2.59109338e-01 + 2.55476663e-01 2.51825108e-01 2.48155397e-01 2.44468296e-01 2.40764610e-01 + 2.37045183e-01 2.33310901e-01 2.29562691e-01 2.25801522e-01 2.22028404e-01 + 2.18244389e-01 2.14450570e-01 2.10648085e-01 2.06838110e-01 2.03021865e-01 + 1.99200609e-01 1.95375646e-01 1.91548315e-01 1.87719999e-01 1.83892119e-01 + 1.80066132e-01 1.76243534e-01 1.72425858e-01 1.68614668e-01 1.64811566e-01 + 1.61018182e-01 1.57236178e-01 1.53467243e-01 1.49713092e-01 1.45975466e-01 + 1.42256126e-01 1.38556852e-01 1.34879442e-01 1.31225705e-01 1.27597466e-01 + 1.23996551e-01 1.20424797e-01 1.16884039e-01 1.13376108e-01 1.09902834e-01 + 1.06466032e-01 1.03067507e-01 9.97090454e-02 9.63924113e-02 9.31193435e-02 + 8.98915508e-02 8.67107074e-02 8.35784489e-02 8.04963677e-02 7.74660087e-02 + 7.44888648e-02 7.15663729e-02 6.86999091e-02 6.58907847e-02 6.31402418e-02 + 6.04494498e-02 5.78195005e-02 5.52514054e-02 5.27460911e-02 5.03043967e-02 + 4.79270698e-02 4.56147642e-02 4.33680371e-02 4.11873461e-02 3.90730481e-02 + 3.70253965e-02 3.50445405e-02 3.31305238e-02 3.12832841e-02 2.95026522e-02 + 2.77883531e-02 2.61400057e-02 2.45571244e-02 2.30391200e-02 2.15853019e-02 + 2.01948803e-02 1.88669688e-02 1.76005877e-02 1.63946672e-02 1.52480519e-02 + 1.41595045e-02 1.31277111e-02 1.21512857e-02 1.12287758e-02 1.03586680e-02 + 9.53939392e-03 8.76933619e-03 8.04683477e-03 7.37019339e-03 6.73768606e-03 + 6.14756365e-03 5.59806047e-03 5.08740088e-03 4.61380575e-03 4.17549890e-03 + 3.77071328e-03 3.39769704e-03 3.05471932e-03 2.74007581e-03 2.45209391e-03 + 2.18913767e-03 1.94961227e-03 1.73196817e-03 1.53470479e-03 1.35637382e-03 + 1.19558204e-03 1.05099372e-03 9.21332559e-04 8.05383193e-04 7.01992213e-04 + 6.10068796e-04 5.28584903e-04 4.56575066e-04 3.93135809e-04 3.37424713e-04 + 2.88659146e-04 2.46114711e-04 2.09123417e-04 1.77071629e-04 1.49397813e-04 + 1.25590119e-04 1.05183840e-04 8.77587673e-05 7.29364877e-05 6.03776430e-05 + 4.97791872e-05 4.08716659e-05 3.34165405e-05 2.72035814e-05 2.20483479e-05 + 1.77897704e-05 1.42878490e-05 1.14214793e-05 9.08641104e-06 7.19334759e-06 + 5.66618684e-06 4.44040494e-06 3.46158128e-06 2.68406139e-06 2.06975312e-06 + 1.58705007e-06 1.20987538e-06 9.16838150e-07 6.90494318e-07 5.16703483e-07 + 3.84073119e-07 2.83481627e-07 2.07671932e-07 1.50907666e-07 1.08684371e-07 + 7.74887026e-08 5.45991257e-08 3.79221873e-08 2.58590381e-08 1.71974474e-08 + 1.10251239e-08 6.66069066e-09 3.59915934e-09 1.46921029e-09 0.00000000e+00 + 9.31535205e+00 9.31535205e+00 9.31535205e+00 9.31535205e+00 9.31535205e+00 + 9.31535205e+00 9.31535205e+00 9.31535205e+00 9.31535205e+00 9.31535205e+00 + 9.31535205e+00 9.31535205e+00 9.31535205e+00 9.31535205e+00 9.31535205e+00 + 9.31535205e+00 9.31535205e+00 9.31535205e+00 9.31535205e+00 9.31535205e+00 + 9.31535205e+00 9.31535205e+00 9.31535205e+00 9.31535205e+00 9.31535205e+00 + 9.31535205e+00 9.31535205e+00 9.31535205e+00 9.31535205e+00 9.31535205e+00 + 9.31535205e+00 9.31535205e+00 9.31535205e+00 9.31535205e+00 9.31535205e+00 + 9.31535205e+00 9.31535205e+00 9.31535205e+00 9.31535205e+00 9.31535205e+00 + 9.31535205e+00 9.31535205e+00 9.31535205e+00 9.30248929e+00 9.28626121e+00 + 9.27006144e+00 9.25388993e+00 9.23774663e+00 9.22163150e+00 9.20554447e+00 + 9.18948551e+00 9.17345456e+00 9.15745158e+00 9.14147652e+00 9.12552932e+00 + 9.10960995e+00 9.09371834e+00 9.07785446e+00 9.06201825e+00 9.04620967e+00 + 9.03042867e+00 9.01467520e+00 8.99894920e+00 8.98325065e+00 8.96757947e+00 + 8.95193564e+00 8.93631910e+00 8.92072979e+00 8.90516769e+00 8.88963273e+00 + 8.87412487e+00 8.85864407e+00 8.84319027e+00 8.82776344e+00 8.81236351e+00 + 8.79699045e+00 8.78164420e+00 8.76632473e+00 8.75103198e+00 8.73576591e+00 + 8.72052648e+00 8.70531362e+00 8.69012731e+00 8.67496749e+00 8.65983411e+00 + 8.64472713e+00 8.62964651e+00 8.61459220e+00 8.59956415e+00 8.58456231e+00 + 8.56958664e+00 8.55463710e+00 8.53971364e+00 8.52481622e+00 8.50994478e+00 + 8.49509928e+00 8.48027968e+00 8.46548594e+00 8.45071800e+00 8.43597582e+00 + 8.42125937e+00 8.40656858e+00 8.39190342e+00 8.37726385e+00 8.36264981e+00 + 8.34806127e+00 8.33349818e+00 8.31896049e+00 8.30444817e+00 8.28996116e+00 + 8.27549942e+00 8.26106291e+00 8.24665159e+00 8.23226540e+00 8.21790432e+00 + 8.20356828e+00 8.18925725e+00 8.17497119e+00 8.16071006e+00 8.14647380e+00 + 8.13226237e+00 8.11807574e+00 8.10391385e+00 8.08977667e+00 8.07566415e+00 + 8.06157626e+00 8.04751293e+00 8.03347414e+00 8.01945985e+00 8.00546999e+00 + 7.99150455e+00 7.97756347e+00 7.96364670e+00 7.94975422e+00 7.93588597e+00 + 7.92204191e+00 7.90822200e+00 7.89442621e+00 7.88065447e+00 7.86690677e+00 + 7.85318304e+00 7.83948326e+00 7.82580738e+00 7.81215535e+00 7.79852714e+00 + 7.78492270e+00 7.77134200e+00 7.75778499e+00 7.74425163e+00 7.73074187e+00 + 7.71725569e+00 7.70379303e+00 7.69035385e+00 7.67693812e+00 7.66354580e+00 + 7.65017684e+00 7.63683119e+00 7.62350883e+00 7.61020972e+00 7.59693380e+00 + 7.58368104e+00 7.57045140e+00 7.55724484e+00 7.54406131e+00 7.53090079e+00 + 7.51776322e+00 7.50464858e+00 7.49155681e+00 7.47848788e+00 7.46544175e+00 + 7.45241837e+00 7.43941772e+00 7.42643975e+00 7.41348441e+00 7.40055168e+00 + 7.38764150e+00 7.37475385e+00 7.36188868e+00 7.34904596e+00 7.33622564e+00 + 7.32342768e+00 7.31065205e+00 7.29789870e+00 7.28516761e+00 7.27245872e+00 + 7.25977200e+00 7.24710742e+00 7.23446493e+00 7.22184449e+00 7.20924607e+00 + 7.19666963e+00 7.18411512e+00 7.17158252e+00 7.15907178e+00 7.14658287e+00 + 7.13411574e+00 7.12167036e+00 7.10924669e+00 7.09684470e+00 7.08446434e+00 + 7.07210558e+00 7.05976837e+00 7.04745269e+00 7.03515850e+00 7.02288575e+00 + 7.01063441e+00 6.99840444e+00 6.98619581e+00 6.97400848e+00 6.96184240e+00 + 6.94969755e+00 6.93757389e+00 6.92547138e+00 6.91338997e+00 6.90132965e+00 + 6.88929036e+00 6.87727208e+00 6.86527476e+00 6.85329837e+00 6.84134288e+00 + 6.82940824e+00 6.81749442e+00 6.80560138e+00 6.79372909e+00 6.78187751e+00 + 6.77004661e+00 6.75823634e+00 6.74644668e+00 6.73467759e+00 6.72292902e+00 + 6.71120095e+00 6.69949335e+00 6.68780616e+00 6.67613936e+00 6.66449292e+00 + 6.65286679e+00 6.64126095e+00 6.62967535e+00 6.61810996e+00 6.60656474e+00 + 6.59503967e+00 6.58353471e+00 6.57204981e+00 6.56058495e+00 6.54914009e+00 + 6.53771519e+00 6.52631022e+00 6.51492516e+00 6.50355995e+00 6.49221457e+00 + 6.48088898e+00 6.46958314e+00 6.45829703e+00 6.44703061e+00 6.43578385e+00 + 6.42455670e+00 6.41334914e+00 6.40216113e+00 6.39099263e+00 6.37984362e+00 + 6.36871406e+00 6.35760392e+00 6.34651316e+00 6.33544174e+00 6.32438964e+00 + 6.31335682e+00 6.30234324e+00 6.29134888e+00 6.28037370e+00 6.26941766e+00 + 6.25848074e+00 6.24756290e+00 6.23666410e+00 6.22578431e+00 6.21492351e+00 + 6.20408165e+00 6.19325870e+00 6.18245464e+00 6.17166942e+00 6.16090302e+00 + 6.15015540e+00 6.13942652e+00 6.12871637e+00 6.11802490e+00 6.10735208e+00 + 6.09669787e+00 6.08606226e+00 6.07544520e+00 6.06484666e+00 6.05426660e+00 + 6.04370501e+00 6.03316184e+00 6.02263706e+00 6.01213064e+00 6.00164255e+00 + 5.99117276e+00 5.98072123e+00 5.97028794e+00 5.95987284e+00 5.94947592e+00 + 5.93909713e+00 5.92873644e+00 5.91839383e+00 5.90806927e+00 5.89776271e+00 + 5.88747414e+00 5.87720351e+00 5.86695080e+00 5.85671597e+00 5.84649900e+00 + 5.83629986e+00 5.82611850e+00 5.81595491e+00 5.80580905e+00 5.79568088e+00 + 5.78557039e+00 5.77547753e+00 5.76540228e+00 5.75534460e+00 5.74530447e+00 + 5.73528186e+00 5.72527673e+00 5.71528905e+00 5.70531880e+00 5.69536594e+00 + 5.68543044e+00 5.67551228e+00 5.66561142e+00 5.65572783e+00 5.64586148e+00 + 5.63601234e+00 5.62618038e+00 5.61636558e+00 5.60656790e+00 5.59678731e+00 + 5.58702378e+00 5.57727729e+00 5.56754779e+00 5.55783527e+00 5.54813970e+00 + 5.53846103e+00 5.52879926e+00 5.51915433e+00 5.50952623e+00 5.49991493e+00 + 5.49032040e+00 5.48074260e+00 5.47118151e+00 5.46163710e+00 5.45210934e+00 + 5.44259820e+00 5.43310365e+00 5.42362567e+00 5.41416422e+00 5.40471928e+00 + 5.39529081e+00 5.38587879e+00 5.37648319e+00 5.36710398e+00 5.35774113e+00 + 5.34839462e+00 5.33906441e+00 5.32975047e+00 5.32045279e+00 5.31117132e+00 + 5.30190605e+00 5.29265694e+00 5.28342396e+00 5.27420709e+00 5.26500630e+00 + 5.25582156e+00 5.24665284e+00 5.23750012e+00 5.22836337e+00 5.21924255e+00 + 5.21013764e+00 5.20104862e+00 5.19197545e+00 5.18291812e+00 5.17387658e+00 + 5.16485081e+00 5.15584079e+00 5.14684649e+00 5.13786788e+00 5.12890493e+00 + 5.11995762e+00 5.11102591e+00 5.10210979e+00 5.09320922e+00 5.08432418e+00 + 5.07545464e+00 5.06660057e+00 5.05776195e+00 5.04893874e+00 5.04013093e+00 + 5.03133848e+00 5.02256137e+00 5.01379957e+00 5.00505306e+00 4.99632181e+00 + 4.98760578e+00 4.97890496e+00 4.97021933e+00 4.96154884e+00 4.95289348e+00 + 4.94425321e+00 4.93562802e+00 4.92701788e+00 4.91842276e+00 4.90984263e+00 + 4.90127747e+00 4.89272725e+00 4.88419194e+00 4.87567153e+00 4.86716598e+00 + 4.85867527e+00 4.85019937e+00 4.84173825e+00 4.83329190e+00 4.82486028e+00 + 4.81644337e+00 4.80804114e+00 4.79965357e+00 4.79128063e+00 4.78292230e+00 + 4.77457855e+00 4.76624936e+00 4.75793469e+00 4.74963453e+00 4.74134885e+00 + 4.73307763e+00 4.72482083e+00 4.71657844e+00 4.70835042e+00 4.70013676e+00 + 4.69193743e+00 4.68375240e+00 4.67558165e+00 4.66742516e+00 4.65928289e+00 + 4.65115483e+00 4.64304095e+00 4.63494122e+00 4.62685562e+00 4.61878412e+00 + 4.61072671e+00 4.60268335e+00 4.59465403e+00 4.58663871e+00 4.57863737e+00 + 4.57065000e+00 4.56267655e+00 4.55471702e+00 4.54677137e+00 4.53883958e+00 + 4.53092163e+00 4.52301749e+00 4.51512714e+00 4.50725056e+00 4.49938771e+00 + 4.49153859e+00 4.48370315e+00 4.47588139e+00 4.46807327e+00 4.46027877e+00 + 4.45249786e+00 4.44473053e+00 4.43697676e+00 4.42923650e+00 4.42150975e+00 + 4.41379648e+00 4.40609667e+00 4.39841029e+00 4.39073731e+00 4.38307772e+00 + 4.37543150e+00 4.36779861e+00 4.36017904e+00 4.35257276e+00 4.34497975e+00 + 4.33739998e+00 4.32983344e+00 4.32228010e+00 4.31473993e+00 4.30721292e+00 + 4.29969904e+00 4.29219827e+00 4.28471058e+00 4.27723595e+00 4.26977437e+00 + 4.26232580e+00 4.25489022e+00 4.24746762e+00 4.24005796e+00 4.23266123e+00 + 4.22527741e+00 4.21790646e+00 4.21054837e+00 4.20320312e+00 4.19587069e+00 + 4.18855104e+00 4.18124416e+00 4.17395003e+00 4.16666863e+00 4.15939992e+00 + 4.15214390e+00 4.14490054e+00 4.13766981e+00 4.13045169e+00 4.12324617e+00 + 4.11605322e+00 4.10887281e+00 4.10170493e+00 4.09454956e+00 4.08740667e+00 + 4.08027623e+00 4.07315824e+00 4.06605267e+00 4.05895949e+00 4.05187868e+00 + 4.04481023e+00 4.03775410e+00 4.03071029e+00 4.02367877e+00 4.01665951e+00 + 4.00965249e+00 4.00265770e+00 3.99567511e+00 3.98870471e+00 3.98174646e+00 + 3.97480035e+00 3.96786636e+00 3.96094447e+00 3.95403465e+00 3.94713688e+00 + 3.94025115e+00 3.93337743e+00 3.92651570e+00 3.91966594e+00 3.91282813e+00 + 3.90600225e+00 3.89918827e+00 3.89238619e+00 3.88559597e+00 3.87881759e+00 + 3.87205104e+00 3.86529629e+00 3.85855333e+00 3.85182213e+00 3.84510267e+00 + 3.83839494e+00 3.83169891e+00 3.82501455e+00 3.81834186e+00 3.81168081e+00 + 3.80503138e+00 3.79839355e+00 3.79176730e+00 3.78515260e+00 3.77854945e+00 + 3.77195782e+00 3.76537768e+00 3.75880903e+00 3.75225183e+00 3.74570607e+00 + 3.73917173e+00 3.73264879e+00 3.72613723e+00 3.71963703e+00 3.71314817e+00 + 3.70667063e+00 3.70020438e+00 3.69374942e+00 3.68730572e+00 3.68087326e+00 + 3.67445202e+00 3.66804198e+00 3.66164313e+00 3.65525544e+00 3.64887889e+00 + 3.64251346e+00 3.63615914e+00 3.62981591e+00 3.62348374e+00 3.61716261e+00 + 3.61085252e+00 3.60455343e+00 3.59826533e+00 3.59198820e+00 3.58572202e+00 + 3.57946677e+00 3.57322243e+00 3.56698899e+00 3.56076642e+00 3.55455471e+00 + 3.54835383e+00 3.54216377e+00 3.53598451e+00 3.52981602e+00 3.52365830e+00 + 3.51751132e+00 3.51137507e+00 3.50524952e+00 3.49913465e+00 3.49303045e+00 + 3.48693690e+00 3.48085398e+00 3.47478168e+00 3.46871996e+00 3.46266882e+00 + 3.45662824e+00 3.45059819e+00 3.44457866e+00 3.43856964e+00 3.43257109e+00 + 3.42658302e+00 3.42060538e+00 3.41463818e+00 3.40868138e+00 3.40273498e+00 + 3.39679895e+00 3.39087327e+00 3.38495794e+00 3.37905292e+00 3.37315820e+00 + 3.36727377e+00 3.36139960e+00 3.35553568e+00 3.34968199e+00 3.34383851e+00 + 3.33800522e+00 3.33218211e+00 3.32636916e+00 3.32056635e+00 3.31477366e+00 + 3.30899108e+00 3.30321858e+00 3.29745616e+00 3.29170379e+00 3.28596145e+00 + 3.28022913e+00 3.27450681e+00 3.26879447e+00 3.26309210e+00 3.25739967e+00 + 3.25171718e+00 3.24604460e+00 3.24038191e+00 3.23472911e+00 3.22908616e+00 + 3.22345306e+00 3.21782978e+00 3.21221632e+00 3.20661265e+00 3.20101875e+00 + 3.19543461e+00 3.18986021e+00 3.18429554e+00 3.17874058e+00 3.17319530e+00 + 3.16765970e+00 3.16213376e+00 3.15661745e+00 3.15111077e+00 3.14561370e+00 + 3.14012621e+00 3.13464830e+00 3.12917994e+00 3.12372113e+00 3.11827183e+00 + 3.11283204e+00 3.10740175e+00 3.10198092e+00 3.09656955e+00 3.09116763e+00 + 3.08577512e+00 3.08039202e+00 3.07501832e+00 3.06965398e+00 3.06429901e+00 + 3.05895338e+00 3.05361707e+00 3.04829007e+00 3.04297237e+00 3.03766394e+00 + 3.03236477e+00 3.02707485e+00 3.02179415e+00 3.01652267e+00 3.01126038e+00 + 3.00600727e+00 3.00076333e+00 2.99552853e+00 2.99030287e+00 2.98508632e+00 + 2.97987888e+00 2.97468051e+00 2.96949122e+00 2.96431098e+00 2.95913977e+00 + 2.95397759e+00 2.94882441e+00 2.94368022e+00 2.93854501e+00 2.93341875e+00 + 2.92830144e+00 2.92319305e+00 2.91809358e+00 2.91300300e+00 2.90792130e+00 + 2.90284847e+00 2.89778448e+00 2.89272933e+00 2.88768300e+00 2.88264547e+00 + 2.87761673e+00 2.87259676e+00 2.86758555e+00 2.86258309e+00 2.85758934e+00 + 2.85260431e+00 2.84762798e+00 2.84266033e+00 2.83770134e+00 2.83275101e+00 + 2.82780931e+00 2.82287623e+00 2.81795175e+00 2.81303587e+00 2.80812856e+00 + 2.80322982e+00 2.79833962e+00 2.79345795e+00 2.78858479e+00 2.78372014e+00 + 2.77886397e+00 2.77401628e+00 2.76917704e+00 2.76434625e+00 2.75952388e+00 + 2.75470992e+00 2.74990436e+00 2.74510719e+00 2.74031838e+00 2.73553793e+00 + 2.73076582e+00 2.72600203e+00 2.72124655e+00 2.71649937e+00 2.71176047e+00 + 2.70702984e+00 2.70230745e+00 2.69759331e+00 2.69288739e+00 2.68818968e+00 + 2.68350017e+00 2.67881883e+00 2.67414567e+00 2.66948065e+00 2.66482378e+00 + 2.66017502e+00 2.65553438e+00 2.65090183e+00 2.64627737e+00 2.64166097e+00 + 2.63705262e+00 2.63245232e+00 2.62786003e+00 2.62327576e+00 2.61869949e+00 + 2.61413120e+00 2.60957088e+00 2.60501852e+00 2.60047409e+00 2.59593760e+00 + 2.59140902e+00 2.58688833e+00 2.58237554e+00 2.57787061e+00 2.57337355e+00 + 2.56888433e+00 2.56440294e+00 2.55992937e+00 2.55546361e+00 2.55100563e+00 + 2.54655543e+00 2.54211300e+00 2.53767831e+00 2.53325136e+00 2.52883214e+00 + 2.52442062e+00 2.52001680e+00 2.51562066e+00 2.51123219e+00 2.50685138e+00 + 2.50247820e+00 2.49811266e+00 2.49375473e+00 2.48940441e+00 2.48506167e+00 + 2.48072651e+00 2.47639892e+00 2.47207887e+00 2.46776636e+00 2.46346137e+00 + 2.45916389e+00 2.45487391e+00 2.45059141e+00 2.44631638e+00 2.44204881e+00 + 2.43778869e+00 2.43353599e+00 2.42929072e+00 2.42505285e+00 2.42082238e+00 + 2.41659928e+00 2.41238355e+00 2.40817518e+00 2.40397415e+00 2.39978044e+00 + 2.39559405e+00 2.39141497e+00 2.38724317e+00 2.38307866e+00 2.37892141e+00 + 2.37477141e+00 2.37062865e+00 2.36649311e+00 2.36236479e+00 2.35824368e+00 + 2.35412975e+00 2.35002300e+00 2.34592341e+00 2.34183098e+00 2.33774568e+00 + 2.33366751e+00 2.32959646e+00 2.32553250e+00 2.32147564e+00 2.31742585e+00 + 2.31338313e+00 2.30934746e+00 2.30531883e+00 2.30129723e+00 2.29728265e+00 + 2.29327507e+00 2.28927447e+00 2.28528086e+00 2.28129422e+00 2.27731453e+00 + 2.27334178e+00 2.26937596e+00 2.26541706e+00 2.26146507e+00 2.25751997e+00 + 2.25358176e+00 2.24965041e+00 2.24572592e+00 2.24180828e+00 2.23789747e+00 + 2.23399349e+00 2.23009631e+00 2.22620593e+00 2.22232235e+00 2.21844553e+00 + 2.21457548e+00 2.21071218e+00 2.20685562e+00 2.20300578e+00 2.19916267e+00 + 2.19532625e+00 2.19149653e+00 2.18767349e+00 2.18385712e+00 2.18004741e+00 + 2.17624434e+00 2.17244791e+00 2.16865810e+00 2.16487490e+00 2.16109831e+00 + 2.15732830e+00 2.15356486e+00 2.14980799e+00 2.14605768e+00 2.14231391e+00 + 2.13857667e+00 2.13484594e+00 2.13112173e+00 2.12740401e+00 2.12369278e+00 + 2.11998803e+00 2.11628973e+00 2.11259789e+00 2.10891249e+00 2.10523352e+00 + 2.10156096e+00 2.09789481e+00 2.09423506e+00 2.09058169e+00 2.08693470e+00 + 2.08329406e+00 2.07965978e+00 2.07603184e+00 2.07241023e+00 2.06879493e+00 + 2.06518594e+00 2.06158325e+00 2.05798684e+00 2.05439671e+00 2.05081284e+00 + 2.04723522e+00 2.04366384e+00 2.04009869e+00 2.03653976e+00 2.03298704e+00 + 2.02944052e+00 2.02590019e+00 2.02236603e+00 2.01883803e+00 2.01531619e+00 + 2.01180050e+00 2.00829094e+00 2.00478749e+00 2.00129017e+00 1.99779894e+00 + 1.99431380e+00 1.99083474e+00 1.98736176e+00 1.98389483e+00 1.98043394e+00 + 1.97697910e+00 1.97353028e+00 1.97008748e+00 1.96665069e+00 1.96321989e+00 + 1.95979507e+00 1.95637623e+00 1.95296335e+00 1.94955643e+00 1.94615545e+00 + 1.94276041e+00 1.93937128e+00 1.93598807e+00 1.93261076e+00 1.92923934e+00 + 1.92587381e+00 1.92251414e+00 1.91916034e+00 1.91581238e+00 1.91247027e+00 + 1.90913398e+00 1.90580352e+00 1.90247887e+00 1.89916001e+00 1.89584695e+00 + 1.89253966e+00 1.88923815e+00 1.88594239e+00 1.88265239e+00 1.87936812e+00 + 1.87608958e+00 1.87281676e+00 1.86954965e+00 1.86628824e+00 1.86303252e+00 + 1.85978248e+00 1.85653811e+00 1.85329940e+00 1.85006634e+00 1.84683892e+00 + 1.84361712e+00 1.84040095e+00 1.83719039e+00 1.83398543e+00 1.83078606e+00 + 1.82759227e+00 1.82440406e+00 1.82122140e+00 1.81804430e+00 1.81487274e+00 + 1.81170671e+00 1.80854620e+00 1.80539121e+00 1.80224172e+00 1.79909773e+00 + 1.79595922e+00 1.79282619e+00 1.78969862e+00 1.78657650e+00 1.78345984e+00 + 1.78034861e+00 1.77724280e+00 1.77414242e+00 1.77104744e+00 1.76795786e+00 + 1.76487368e+00 1.76179487e+00 1.75872143e+00 1.75565336e+00 1.75259063e+00 + 1.74953325e+00 1.74648120e+00 1.74343448e+00 1.74039307e+00 1.73735697e+00 + 1.73432616e+00 1.73130064e+00 1.72828040e+00 1.72526543e+00 1.72225571e+00 + 1.71925125e+00 1.71625203e+00 1.71325804e+00 1.71026927e+00 1.70728571e+00 + 1.70430736e+00 1.70133421e+00 1.69836624e+00 1.69540345e+00 1.69244583e+00 + 1.68949336e+00 1.68654605e+00 1.68360388e+00 1.68066684e+00 1.67773492e+00 + 1.67480812e+00 1.67188642e+00 1.66896982e+00 1.66605831e+00 1.66315188e+00 + 1.66025051e+00 1.65735421e+00 1.65446296e+00 1.65157675e+00 1.64869558e+00 + 1.64581943e+00 1.64294830e+00 1.64008218e+00 1.63722106e+00 1.63436493e+00 + 1.63151378e+00 1.62866760e+00 1.62582639e+00 1.62299013e+00 1.62015883e+00 + 1.61733246e+00 1.61451102e+00 1.61169450e+00 1.60888289e+00 1.60607619e+00 + 1.60327439e+00 1.60047747e+00 1.59768543e+00 1.59489826e+00 1.59211595e+00 + 1.58933850e+00 1.58656589e+00 1.58379812e+00 1.58103517e+00 1.57827704e+00 + 1.57552373e+00 1.57277521e+00 1.57003149e+00 1.56729256e+00 1.56455840e+00 + 1.56182902e+00 1.55910439e+00 1.55638451e+00 1.55366938e+00 1.55095899e+00 + 1.54825332e+00 1.54555237e+00 1.54285614e+00 1.54016460e+00 1.53747776e+00 + 1.53479561e+00 1.53211813e+00 1.52944532e+00 1.52677718e+00 1.52411369e+00 + 1.52145484e+00 1.51880063e+00 1.51615105e+00 1.51350609e+00 1.51086575e+00 + 1.50823001e+00 1.50559886e+00 1.50297231e+00 1.50035033e+00 1.49773293e+00 + 1.49512009e+00 1.49251181e+00 1.48990808e+00 1.48730889e+00 1.48471423e+00 + 1.48212410e+00 1.47953849e+00 1.47695738e+00 1.47438077e+00 1.47180866e+00 + 1.46924103e+00 1.46667789e+00 1.46411921e+00 1.46156499e+00 1.45901522e+00 + 1.45646991e+00 1.45392903e+00 1.45139258e+00 1.44886055e+00 1.44633294e+00 + 1.44380974e+00 1.44129094e+00 1.43877653e+00 1.43626650e+00 1.43376085e+00 + 1.43125957e+00 1.42876265e+00 1.42627008e+00 1.42378186e+00 1.42129798e+00 + 1.41881843e+00 1.41634320e+00 1.41387229e+00 1.41140568e+00 1.40894338e+00 + 1.40648536e+00 1.40403164e+00 1.40158219e+00 1.39913701e+00 1.39669609e+00 + 1.39425943e+00 1.39182702e+00 1.38939885e+00 1.38697491e+00 1.38455519e+00 + 1.38213970e+00 1.37972841e+00 1.37732133e+00 1.37491844e+00 1.37251974e+00 + 1.37012522e+00 1.36773488e+00 1.36534870e+00 1.36296668e+00 1.36058881e+00 + 1.35821509e+00 1.35584550e+00 1.35348004e+00 1.35111870e+00 1.34876148e+00 + 1.34640837e+00 1.34405936e+00 1.34171444e+00 1.33937361e+00 1.33703685e+00 + 1.33470417e+00 1.33237555e+00 1.33005099e+00 1.32773048e+00 1.32541401e+00 + 1.32310158e+00 1.32079318e+00 1.31848880e+00 1.31618843e+00 1.31389207e+00 + 1.31159971e+00 1.30931134e+00 1.30702696e+00 1.30474655e+00 1.30247012e+00 + 1.30019766e+00 1.29792915e+00 1.29566459e+00 1.29340397e+00 1.29114730e+00 + 1.28889455e+00 1.28664572e+00 1.28440081e+00 1.28215981e+00 1.27992271e+00 + 1.27768951e+00 1.27546019e+00 1.27323475e+00 1.27101319e+00 1.26879549e+00 + 1.26658166e+00 1.26437168e+00 1.26216554e+00 1.25996324e+00 1.25776478e+00 + 1.25557014e+00 1.25337932e+00 1.25119231e+00 1.24900911e+00 1.24682971e+00 + 1.24465410e+00 1.24248227e+00 1.24031422e+00 1.23814994e+00 1.23598942e+00 + 1.23383267e+00 1.23167966e+00 1.22953040e+00 1.22738487e+00 1.22524308e+00 + 1.22310501e+00 1.22097065e+00 1.21884001e+00 1.21671307e+00 1.21458982e+00 + 1.21247027e+00 1.21035440e+00 1.20824220e+00 1.20613368e+00 1.20402882e+00 + 1.20192762e+00 1.19983006e+00 1.19773615e+00 1.19564588e+00 1.19355924e+00 + 1.19147622e+00 1.18939681e+00 1.18732102e+00 1.18524883e+00 1.18318024e+00 + 1.18111524e+00 1.17905382e+00 1.17699598e+00 1.17494171e+00 1.17289100e+00 + 1.17084385e+00 1.16880025e+00 1.16676020e+00 1.16472368e+00 1.16269069e+00 + 1.16066123e+00 1.15863529e+00 1.15661286e+00 1.15459393e+00 1.15257850e+00 + 1.15056656e+00 1.14855811e+00 1.14655314e+00 1.14455164e+00 1.14255360e+00 + 1.14055902e+00 1.13856790e+00 1.13658022e+00 1.13459599e+00 1.13261518e+00 + 1.13063780e+00 1.12866385e+00 1.12669330e+00 1.12472616e+00 1.12276243e+00 + 1.12080209e+00 1.11884513e+00 1.11689156e+00 1.11494136e+00 1.11299453e+00 + 1.11105106e+00 1.10911094e+00 1.10717418e+00 1.10524076e+00 1.10331067e+00 + 1.10138391e+00 1.09946048e+00 1.09754036e+00 1.09562355e+00 1.09371004e+00 + 1.09179983e+00 1.08989291e+00 1.08798928e+00 1.08608892e+00 1.08419183e+00 + 1.08229801e+00 1.08040745e+00 1.07852014e+00 1.07663607e+00 1.07475524e+00 + 1.07287764e+00 1.07100327e+00 1.06913211e+00 1.06726417e+00 1.06539944e+00 + 1.06353790e+00 1.06167956e+00 1.05982440e+00 1.05797242e+00 1.05612362e+00 + 1.05427798e+00 1.05243550e+00 1.05059618e+00 1.04876000e+00 1.04692697e+00 + 1.04509706e+00 1.04327029e+00 1.04144663e+00 1.03962609e+00 1.03780866e+00 + 1.03599433e+00 1.03418309e+00 1.03237494e+00 1.03056987e+00 1.02876787e+00 + 1.02696894e+00 1.02517308e+00 1.02338026e+00 1.02159050e+00 1.01980377e+00 + 1.01802009e+00 1.01623942e+00 1.01446178e+00 1.01268715e+00 1.01091553e+00 + 1.00914691e+00 1.00738129e+00 1.00561865e+00 1.00385899e+00 1.00210230e+00 + 1.00034859e+00 9.98597826e-01 9.96850019e-01 9.95105158e-01 9.93363237e-01 + 9.91624247e-01 9.89888182e-01 9.88155036e-01 9.86424801e-01 9.84697470e-01 + 9.82973037e-01 9.81251494e-01 9.79532833e-01 9.77817050e-01 9.76104135e-01 + 9.74394082e-01 9.72686884e-01 9.70982534e-01 9.69281024e-01 9.67582348e-01 + 9.65886497e-01 9.64193466e-01 9.62503247e-01 9.60815831e-01 9.59131213e-01 + 9.57449385e-01 9.55770339e-01 9.54094068e-01 9.52420565e-01 9.50749822e-01 + 9.49081831e-01 9.47416586e-01 9.45754078e-01 9.44094301e-01 9.42437246e-01 + 9.40782906e-01 9.39131273e-01 9.37482340e-01 9.35836098e-01 9.34192541e-01 + 9.32551660e-01 9.30913448e-01 9.29277896e-01 9.27644997e-01 9.26014743e-01 + 9.24387126e-01 9.22762138e-01 9.21139771e-01 9.19520016e-01 9.17902866e-01 + 9.16288312e-01 9.14676347e-01 9.13066962e-01 9.11460149e-01 9.09855898e-01 + 9.08254203e-01 9.06655055e-01 9.05058445e-01 9.03464364e-01 9.01872805e-01 + 9.00283757e-01 8.98697214e-01 8.97113166e-01 8.95531604e-01 8.93952519e-01 + 8.92375903e-01 8.90801747e-01 8.89230041e-01 8.87660777e-01 8.86093946e-01 + 8.84529538e-01 8.82967544e-01 8.81407955e-01 8.79850762e-01 8.78295955e-01 + 8.76743525e-01 8.75193462e-01 8.73645756e-01 8.72100399e-01 8.70557380e-01 + 8.69016689e-01 8.67478317e-01 8.65942254e-01 8.64408489e-01 8.62877013e-01 + 8.61347816e-01 8.59820887e-01 8.58296216e-01 8.56773792e-01 8.55253606e-01 + 8.53735646e-01 8.52219903e-01 8.50706365e-01 8.49195021e-01 8.47685862e-01 + 8.46178875e-01 8.44674050e-01 8.43171375e-01 8.41670840e-01 8.40172434e-01 + 8.38676144e-01 8.37181959e-01 8.35689868e-01 8.34199860e-01 8.32711921e-01 + 8.31226041e-01 8.29742208e-01 8.28260409e-01 8.26780632e-01 8.25302865e-01 + 8.23827096e-01 8.22353311e-01 8.20881500e-01 8.19411648e-01 8.17943742e-01 + 8.16477771e-01 8.15013721e-01 8.13551579e-01 8.12091331e-01 8.10632964e-01 + 8.09176465e-01 8.07721819e-01 8.06269013e-01 8.04818034e-01 8.03368867e-01 + 8.01921497e-01 8.00475911e-01 7.99032095e-01 7.97590032e-01 7.96149710e-01 + 7.94711113e-01 7.93274225e-01 7.91839032e-01 7.90405519e-01 7.88973670e-01 + 7.87543469e-01 7.86114901e-01 7.84687949e-01 7.83262598e-01 7.81838832e-01 + 7.80416634e-01 7.78995987e-01 7.77576875e-01 7.76159281e-01 7.74743187e-01 + 7.73328577e-01 7.71915434e-01 7.70503739e-01 7.69093474e-01 7.67684623e-01 + 7.66277166e-01 7.64871086e-01 7.63466364e-01 7.62062981e-01 7.60660918e-01 + 7.59260157e-01 7.57860677e-01 7.56462460e-01 7.55065486e-01 7.53669734e-01 + 7.52275185e-01 7.50881819e-01 7.49489615e-01 7.48098551e-01 7.46708608e-01 + 7.45319764e-01 7.43931997e-01 7.42545287e-01 7.41159610e-01 7.39774945e-01 + 7.38391270e-01 7.37008562e-01 7.35626797e-01 7.34245954e-01 7.32866009e-01 + 7.31486938e-01 7.30108717e-01 7.28731322e-01 7.27354729e-01 7.25978913e-01 + 7.24603850e-01 7.23229514e-01 7.21855879e-01 7.20482921e-01 7.19110613e-01 + 7.17738929e-01 7.16367842e-01 7.14997325e-01 7.13627352e-01 7.12257895e-01 + 7.10888926e-01 7.09520417e-01 7.08152340e-01 7.06784667e-01 7.05417367e-01 + 7.04050413e-01 7.02683774e-01 7.01317421e-01 6.99951322e-01 6.98585449e-01 + 6.97219770e-01 6.95854253e-01 6.94488867e-01 6.93123580e-01 6.91758361e-01 + 6.90393175e-01 6.89027991e-01 6.87662775e-01 6.86297494e-01 6.84932112e-01 + 6.83566597e-01 6.82200913e-01 6.80835024e-01 6.79468897e-01 6.78102493e-01 + 6.76735778e-01 6.75368715e-01 6.74001266e-01 6.72633394e-01 6.71265061e-01 + 6.69896229e-01 6.68526859e-01 6.67156913e-01 6.65786349e-01 6.64415130e-01 + 6.63043213e-01 6.61670559e-01 6.60297127e-01 6.58922874e-01 6.57547758e-01 + 6.56171737e-01 6.54794769e-01 6.53416809e-01 6.52037814e-01 6.50657740e-01 + 6.49276541e-01 6.47894172e-01 6.46510589e-01 6.45125744e-01 6.43739591e-01 + 6.42352084e-01 6.40963173e-01 6.39572812e-01 6.38180952e-01 6.36787543e-01 + 6.35392537e-01 6.33995883e-01 6.32597530e-01 6.31197429e-01 6.29795527e-01 + 6.28391772e-01 6.26986112e-01 6.25578493e-01 6.24168864e-01 6.22757168e-01 + 6.21343352e-01 6.19927361e-01 6.18509139e-01 6.17088630e-01 6.15665778e-01 + 6.14240525e-01 6.12812814e-01 6.11382586e-01 6.09949783e-01 6.08514346e-01 + 6.07076214e-01 6.05635329e-01 6.04191627e-01 6.02745049e-01 6.01295533e-01 + 5.99843016e-01 5.98387434e-01 5.96928726e-01 5.95466826e-01 5.94001669e-01 + 5.92533192e-01 5.91061329e-01 5.89586012e-01 5.88107176e-01 5.86624753e-01 + 5.85138676e-01 5.83648877e-01 5.82155286e-01 5.80657834e-01 5.79156452e-01 + 5.77651069e-01 5.76141614e-01 5.74628017e-01 5.73110204e-01 5.71588105e-01 + 5.70061645e-01 5.68530753e-01 5.66995353e-01 5.65455372e-01 5.63910735e-01 + 5.62361367e-01 5.60807191e-01 5.59248133e-01 5.57684115e-01 5.56115060e-01 + 5.54540891e-01 5.52961531e-01 5.51376899e-01 5.49786919e-01 5.48191511e-01 + 5.46590595e-01 5.44984092e-01 5.43371922e-01 5.41754003e-01 5.40130255e-01 + 5.38500598e-01 5.36864948e-01 5.35223225e-01 5.33575346e-01 5.31921229e-01 + 5.30260792e-01 5.28593951e-01 5.26920623e-01 5.25240726e-01 5.23554175e-01 + 5.21860887e-01 5.20160779e-01 5.18453766e-01 5.16739764e-01 5.15018690e-01 + 5.13290458e-01 5.11554986e-01 5.09812188e-01 5.08061981e-01 5.06304281e-01 + 5.04539002e-01 5.02766062e-01 5.00985377e-01 4.99196862e-01 4.97400434e-01 + 4.95596010e-01 4.93783507e-01 4.91962842e-01 4.90133933e-01 4.88296696e-01 + 4.86451051e-01 4.84596916e-01 4.82734210e-01 4.80862853e-01 4.78982764e-01 + 4.77093865e-01 4.75196076e-01 4.73289320e-01 4.71373519e-01 4.69448596e-01 + 4.67514476e-01 4.65571083e-01 4.63618344e-01 4.61656185e-01 4.59684533e-01 + 4.57703319e-01 4.55712470e-01 4.53711920e-01 4.51701599e-01 4.49681441e-01 + 4.47651381e-01 4.45611356e-01 4.43561302e-01 4.41501158e-01 4.39430866e-01 + 4.37350368e-01 4.35259607e-01 4.33158529e-01 4.31047082e-01 4.28925214e-01 + 4.26792878e-01 4.24650026e-01 4.22496614e-01 4.20332600e-01 4.18157943e-01 + 4.15972606e-01 4.13776552e-01 4.11569750e-01 4.09352169e-01 4.07123781e-01 + 4.04884561e-01 4.02634487e-01 4.00373539e-01 3.98101701e-01 3.95818960e-01 + 3.93525306e-01 3.91220732e-01 3.88905233e-01 3.86578811e-01 3.84241469e-01 + 3.81893212e-01 3.79534053e-01 3.77164006e-01 3.74783088e-01 3.72391322e-01 + 3.69988735e-01 3.67575357e-01 3.65151223e-01 3.62716372e-01 3.60270847e-01 + 3.57814698e-01 3.55347977e-01 3.52870741e-01 3.50383054e-01 3.47884982e-01 + 3.45376598e-01 3.42857980e-01 3.40329210e-01 3.37790377e-01 3.35241576e-01 + 3.32682904e-01 3.30114466e-01 3.27536375e-01 3.24948745e-01 3.22351700e-01 + 3.19745367e-01 3.17129881e-01 3.14505384e-01 3.11872021e-01 3.09229947e-01 + 3.06579321e-01 3.03920309e-01 3.01253084e-01 2.98577826e-01 2.95894721e-01 + 2.93203963e-01 2.90505751e-01 2.87800293e-01 2.85087802e-01 2.82368500e-01 + 2.79642616e-01 2.76910384e-01 2.74172047e-01 2.71427856e-01 2.68678067e-01 + 2.65922946e-01 2.63162764e-01 2.60397802e-01 2.57628345e-01 2.54854688e-01 + 2.52077134e-01 2.49295990e-01 2.46511575e-01 2.43724211e-01 2.40934231e-01 + 2.38141974e-01 2.35347785e-01 2.32552018e-01 2.29755035e-01 2.26957202e-01 + 2.24158896e-01 2.21360498e-01 2.18562398e-01 2.15764992e-01 2.12968683e-01 + 2.10173881e-01 2.07381001e-01 2.04590467e-01 2.01802708e-01 1.99018159e-01 + 1.96237262e-01 1.93460463e-01 1.90688215e-01 1.87920978e-01 1.85159214e-01 + 1.82403393e-01 1.79653988e-01 1.76911478e-01 1.74176346e-01 1.71449078e-01 + 1.68730166e-01 1.66020105e-01 1.63319392e-01 1.60628529e-01 1.57948020e-01 + 1.55278370e-01 1.52620090e-01 1.49973688e-01 1.47339678e-01 1.44718571e-01 + 1.42110882e-01 1.39517125e-01 1.36937815e-01 1.34373464e-01 1.31824585e-01 + 1.29291692e-01 1.26775293e-01 1.24275896e-01 1.21794008e-01 1.19330131e-01 + 1.16884763e-01 1.14458401e-01 1.12051535e-01 1.09664652e-01 1.07298233e-01 + 1.04952752e-01 1.02628679e-01 1.00326477e-01 9.80465996e-02 9.57894954e-02 + 9.35556034e-02 9.13453541e-02 8.91591692e-02 8.69974604e-02 8.48606296e-02 + 8.27490678e-02 8.06631552e-02 7.86032603e-02 7.65697396e-02 7.45629372e-02 + 7.25831842e-02 7.06307984e-02 6.87060837e-02 6.68093301e-02 6.49408125e-02 + 6.31007911e-02 6.12895107e-02 5.95072002e-02 5.77540725e-02 5.60303240e-02 + 5.43361344e-02 5.26716661e-02 5.10370645e-02 4.94324572e-02 4.78579541e-02 + 4.63136469e-02 4.47996091e-02 4.33158961e-02 4.18625443e-02 4.04395719e-02 + 3.90469781e-02 3.76847434e-02 3.63528295e-02 3.50511794e-02 3.37797170e-02 + 3.25383477e-02 3.13269583e-02 3.01454169e-02 2.89935733e-02 2.78712591e-02 + 2.67782878e-02 2.57144551e-02 2.46795395e-02 2.36733018e-02 2.26954864e-02 + 2.17458207e-02 2.08240164e-02 1.99297691e-02 1.90627592e-02 1.82226524e-02 + 1.74090997e-02 1.66217387e-02 1.58601934e-02 1.51240750e-02 1.44129830e-02 + 1.37265047e-02 1.30642170e-02 1.24256863e-02 1.18104693e-02 1.12181139e-02 + 1.06481597e-02 1.01001386e-02 9.57357566e-03 9.06798994e-03 8.58289491e-03 + 8.11779939e-03 7.67220821e-03 7.24562293e-03 6.83754260e-03 6.44746449e-03 + 6.07488475e-03 5.71929920e-03 5.38020397e-03 5.05709623e-03 4.74947488e-03 + 4.45684120e-03 4.17869948e-03 3.91455770e-03 3.66392815e-03 3.42632795e-03 + 3.20127973e-03 2.98831211e-03 2.78696025e-03 2.59676634e-03 2.41728009e-03 + 2.24805918e-03 2.08866967e-03 1.93868637e-03 1.79769324e-03 1.66528371e-03 + 1.54106094e-03 1.42463814e-03 1.31563879e-03 1.21369684e-03 1.11845687e-03 + 1.02957427e-03 9.46715341e-04 8.69557372e-04 7.97788699e-04 7.31108735e-04 + 6.69227965e-04 6.11867923e-04 5.58761133e-04 5.09651031e-04 4.64291866e-04 + 4.22448569e-04 3.83896609e-04 3.48421824e-04 3.15820237e-04 2.85897853e-04 + 2.58470437e-04 2.33363282e-04 2.10410963e-04 1.89457075e-04 1.70353970e-04 + 1.52962472e-04 1.37151601e-04 1.22798276e-04 1.09787020e-04 9.80096661e-05 + 8.73650533e-05 7.77587264e-05 6.91026357e-05 6.13148375e-05 5.43191980e-05 + 4.80451002e-05 4.24271553e-05 3.74049201e-05 3.29226193e-05 2.89288760e-05 + 2.53764482e-05 2.22219741e-05 1.94257256e-05 1.69513701e-05 1.47657424e-05 + 1.28386246e-05 1.11425370e-05 9.65253704e-06 8.34602949e-06 7.20258529e-06 + 6.20377051e-06 5.33298481e-06 4.57530930e-06 3.91736368e-06 3.34717241e-06 + 2.85403968e-06 2.42843291e-06 2.06187442e-06 1.74684104e-06 1.47667131e-06 + 1.24547984e-06 1.04807854e-06 8.79904460e-07 7.36953603e-07 6.15720668e-07 + 5.13144134e-07 4.26556442e-07 3.53638890e-07 2.92380919e-07 2.41043461e-07 + 1.98126025e-07 1.62337233e-07 1.32568519e-07 1.07870701e-07 8.74331951e-08 + 7.05656042e-08 5.66814737e-08 4.52839905e-08 3.59534344e-08 2.83361988e-08 + 2.21352123e-08 1.71016087e-08 1.30275039e-08 9.73975193e-09 7.09456503e-09 + 4.97289096e-09 3.27645509e-09 1.92438159e-09 8.50318607e-10 0.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 4.53389467e-02 4.53327431e-02 4.53265031e-02 4.53202265e-02 4.53139129e-02 + 4.53075623e-02 4.53011743e-02 4.52947488e-02 4.52882855e-02 4.52817842e-02 + 4.52752446e-02 4.52686667e-02 4.52620500e-02 4.52553944e-02 4.52486996e-02 + 4.52419655e-02 4.52351917e-02 4.52283781e-02 4.52215244e-02 4.52146304e-02 + 4.52076958e-02 4.52007205e-02 4.51937041e-02 4.51866464e-02 4.51795473e-02 + 4.51724064e-02 4.51652235e-02 4.51579983e-02 4.51507307e-02 4.51434204e-02 + 4.51360671e-02 4.51286707e-02 4.51212307e-02 4.51137471e-02 4.51062196e-02 + 4.50986478e-02 4.50910316e-02 4.50833707e-02 4.50756649e-02 4.50679139e-02 + 4.50601174e-02 4.50522752e-02 4.50443871e-02 4.50364528e-02 4.50284720e-02 + 4.50204445e-02 4.50123701e-02 4.50042484e-02 4.49960792e-02 4.49878623e-02 + 4.49795973e-02 4.49712841e-02 4.49629224e-02 4.49545118e-02 4.49460523e-02 + 4.49375433e-02 4.49289849e-02 4.49203765e-02 4.49117180e-02 4.49030092e-02 + 4.48942497e-02 4.48854393e-02 4.48765777e-02 4.48676646e-02 4.48586999e-02 + 4.48496831e-02 4.48406140e-02 4.48314924e-02 4.48223180e-02 4.48130905e-02 + 4.48038096e-02 4.47944750e-02 4.47850866e-02 4.47756439e-02 4.47661468e-02 + 4.47565949e-02 4.47469880e-02 4.47373257e-02 4.47276079e-02 4.47178342e-02 + 4.47080043e-02 4.46981180e-02 4.46881749e-02 4.46781749e-02 4.46681175e-02 + 4.46580026e-02 4.46478297e-02 4.46375987e-02 4.46273093e-02 4.46169612e-02 + 4.46065540e-02 4.45960875e-02 4.45855613e-02 4.45749753e-02 4.45643291e-02 + 4.45536224e-02 4.45428550e-02 4.45320264e-02 4.45211365e-02 4.45101850e-02 + 4.44991714e-02 4.44880957e-02 4.44769573e-02 4.44657562e-02 4.44544918e-02 + 4.44431640e-02 4.44317725e-02 4.44203169e-02 4.44087970e-02 4.43972124e-02 + 4.43855629e-02 4.43738481e-02 4.43620678e-02 4.43502215e-02 4.43383091e-02 + 4.43263303e-02 4.43142846e-02 4.43021719e-02 4.42899917e-02 4.42777439e-02 + 4.42654280e-02 4.42530439e-02 4.42405911e-02 4.42280693e-02 4.42154783e-02 + 4.42028178e-02 4.41900873e-02 4.41772867e-02 4.41644156e-02 4.41514736e-02 + 4.41384606e-02 4.41253761e-02 4.41122198e-02 4.40989915e-02 4.40856908e-02 + 4.40723174e-02 4.40588709e-02 4.40453512e-02 4.40317577e-02 4.40180903e-02 + 4.40043486e-02 4.39905323e-02 4.39766411e-02 4.39626746e-02 4.39486326e-02 + 4.39345146e-02 4.39203205e-02 4.39060498e-02 4.38917023e-02 4.38772775e-02 + 4.38627753e-02 4.38481953e-02 4.38335371e-02 4.38188004e-02 4.38039850e-02 + 4.37890904e-02 4.37741163e-02 4.37590625e-02 4.37439286e-02 4.37287143e-02 + 4.37134192e-02 4.36980431e-02 4.36825855e-02 4.36670463e-02 4.36514249e-02 + 4.36357212e-02 4.36199347e-02 4.36040652e-02 4.35881124e-02 4.35720758e-02 + 4.35559552e-02 4.35397502e-02 4.35234605e-02 4.35070859e-02 4.34906258e-02 + 4.34740801e-02 4.34574484e-02 4.34407303e-02 4.34239256e-02 4.34070338e-02 + 4.33900547e-02 4.33729879e-02 4.33558331e-02 4.33385900e-02 4.33212582e-02 + 4.33038375e-02 4.32863273e-02 4.32687276e-02 4.32510378e-02 4.32332577e-02 + 4.32153869e-02 4.31974251e-02 4.31793720e-02 4.31612273e-02 4.31429905e-02 + 4.31246614e-02 4.31062396e-02 4.30877249e-02 4.30691168e-02 4.30504150e-02 + 4.30316193e-02 4.30127292e-02 4.29937444e-02 4.29746647e-02 4.29554896e-02 + 4.29362189e-02 4.29168521e-02 4.28973890e-02 4.28778293e-02 4.28581725e-02 + 4.28384184e-02 4.28185667e-02 4.27986170e-02 4.27785689e-02 4.27584221e-02 + 4.27381764e-02 4.27178313e-02 4.26973866e-02 4.26768419e-02 4.26561968e-02 + 4.26354511e-02 4.26146044e-02 4.25936564e-02 4.25726067e-02 4.25514551e-02 + 4.25302011e-02 4.25088445e-02 4.24873849e-02 4.24658221e-02 4.24441555e-02 + 4.24223851e-02 4.24005103e-02 4.23785309e-02 4.23564466e-02 4.23342569e-02 + 4.23119617e-02 4.22895605e-02 4.22670531e-02 4.22444391e-02 4.22217182e-02 + 4.21988901e-02 4.21759543e-02 4.21529107e-02 4.21297589e-02 4.21064986e-02 + 4.20831293e-02 4.20596509e-02 4.20360630e-02 4.20123653e-02 4.19885574e-02 + 4.19646390e-02 4.19406099e-02 4.19164696e-02 4.18922179e-02 4.18678544e-02 + 4.18433789e-02 4.18187910e-02 4.17940904e-02 4.17692767e-02 4.17443498e-02 + 4.17193091e-02 4.16941545e-02 4.16688856e-02 4.16435022e-02 4.16180038e-02 + 4.15923902e-02 4.15666610e-02 4.15408160e-02 4.15148549e-02 4.14887773e-02 + 4.14625829e-02 4.14362715e-02 4.14098427e-02 4.13832961e-02 4.13566316e-02 + 4.13298488e-02 4.13029474e-02 4.12759271e-02 4.12487876e-02 4.12215285e-02 + 4.11941497e-02 4.11666507e-02 4.11390314e-02 4.11112913e-02 4.10834303e-02 + 4.10554479e-02 4.10273440e-02 4.09991182e-02 4.09707702e-02 4.09422997e-02 + 4.09137065e-02 4.08849902e-02 4.08561507e-02 4.08271875e-02 4.07981003e-02 + 4.07688890e-02 4.07395533e-02 4.07100927e-02 4.06805072e-02 4.06507963e-02 + 4.06209598e-02 4.05909974e-02 4.05609089e-02 4.05306940e-02 4.05003523e-02 + 4.04698837e-02 4.04392878e-02 4.04085645e-02 4.03777133e-02 4.03467341e-02 + 4.03156265e-02 4.02843904e-02 4.02530254e-02 4.02215313e-02 4.01899078e-02 + 4.01581547e-02 4.01262717e-02 4.00942586e-02 4.00621150e-02 4.00298408e-02 + 3.99974357e-02 3.99648994e-02 3.99322317e-02 3.98994324e-02 3.98665011e-02 + 3.98334377e-02 3.98002419e-02 3.97669134e-02 3.97334521e-02 3.96998576e-02 + 3.96661298e-02 3.96322684e-02 3.95982732e-02 3.95641439e-02 3.95298803e-02 + 3.94954822e-02 3.94609494e-02 3.94262816e-02 3.93914786e-02 3.93565402e-02 + 3.93214662e-02 3.92862563e-02 3.92509103e-02 3.92154280e-02 3.91798093e-02 + 3.91440538e-02 3.91081615e-02 3.90721319e-02 3.90359651e-02 3.89996607e-02 + 3.89632186e-02 3.89266386e-02 3.88899204e-02 3.88530638e-02 3.88160688e-02 + 3.87789350e-02 3.87416623e-02 3.87042506e-02 3.86666995e-02 3.86290090e-02 + 3.85911788e-02 3.85532089e-02 3.85150989e-02 3.84768487e-02 3.84384581e-02 + 3.83999271e-02 3.83612553e-02 3.83224427e-02 3.82834891e-02 3.82443943e-02 + 3.82051581e-02 3.81657804e-02 3.81262611e-02 3.80865999e-02 3.80467968e-02 + 3.80068516e-02 3.79667641e-02 3.79265342e-02 3.78861617e-02 3.78456466e-02 + 3.78049886e-02 3.77641877e-02 3.77232437e-02 3.76821564e-02 3.76409259e-02 + 3.75995518e-02 3.75580342e-02 3.75163728e-02 3.74745676e-02 3.74326184e-02 + 3.73905252e-02 3.73482878e-02 3.73059062e-02 3.72633801e-02 3.72207096e-02 + 3.71778945e-02 3.71349347e-02 3.70918301e-02 3.70485807e-02 3.70051863e-02 + 3.69616469e-02 3.69179623e-02 3.68741326e-02 3.68301575e-02 3.67860371e-02 + 3.67417713e-02 3.66973599e-02 3.66528030e-02 3.66081005e-02 3.65632522e-02 + 3.65182582e-02 3.64731184e-02 3.64278328e-02 3.63824012e-02 3.63368237e-02 + 3.62911002e-02 3.62452306e-02 3.61992149e-02 3.61530532e-02 3.61067453e-02 + 3.60602912e-02 3.60136909e-02 3.59669443e-02 3.59200516e-02 3.58730125e-02 + 3.58258272e-02 3.57784956e-02 3.57310177e-02 3.56833935e-02 3.56356230e-02 + 3.55877062e-02 3.55396431e-02 3.54914338e-02 3.54430781e-02 3.53945762e-02 + 3.53459280e-02 3.52971336e-02 3.52481930e-02 3.51991062e-02 3.51498733e-02 + 3.51004943e-02 3.50509692e-02 3.50012980e-02 3.49514809e-02 3.49015179e-02 + 3.48514089e-02 3.48011541e-02 3.47507535e-02 3.47002072e-02 3.46495153e-02 + 3.45986777e-02 3.45476946e-02 3.44965661e-02 3.44452923e-02 3.43938731e-02 + 3.43423087e-02 3.42905992e-02 3.42387447e-02 3.41867453e-02 3.41346010e-02 + 3.40823120e-02 3.40298784e-02 3.39773003e-02 3.39245778e-02 3.38717110e-02 + 3.38187000e-02 3.37655450e-02 3.37122461e-02 3.36588033e-02 3.36052170e-02 + 3.35514871e-02 3.34976139e-02 3.34435974e-02 3.33894379e-02 3.33351355e-02 + 3.32806903e-02 3.32261025e-02 3.31713722e-02 3.31164997e-02 3.30614851e-02 + 3.30063285e-02 3.29510303e-02 3.28955904e-02 3.28400092e-02 3.27842868e-02 + 3.27284234e-02 3.26724192e-02 3.26162745e-02 3.25599893e-02 3.25035640e-02 + 3.24469987e-02 3.23902937e-02 3.23334492e-02 3.22764654e-02 3.22193425e-02 + 3.21620807e-02 3.21046804e-02 3.20471418e-02 3.19894650e-02 3.19316504e-02 + 3.18736982e-02 3.18156086e-02 3.17573819e-02 3.16990185e-02 3.16405184e-02 + 3.15818821e-02 3.15231098e-02 3.14642018e-02 3.14051584e-02 3.13459798e-02 + 3.12866664e-02 3.12272184e-02 3.11676362e-02 3.11079200e-02 3.10480702e-02 + 3.09880871e-02 3.09279709e-02 3.08677221e-02 3.08073410e-02 3.07468278e-02 + 3.06861830e-02 3.06254068e-02 3.05644996e-02 3.05034617e-02 3.04422935e-02 + 3.03809954e-02 3.03195677e-02 3.02580108e-02 3.01963250e-02 3.01345108e-02 + 3.00725684e-02 3.00104983e-02 2.99483009e-02 2.98859765e-02 2.98235255e-02 + 2.97609484e-02 2.96982456e-02 2.96354174e-02 2.95724642e-02 2.95093865e-02 + 2.94461848e-02 2.93828593e-02 2.93194106e-02 2.92558390e-02 2.91921451e-02 + 2.91283292e-02 2.90643919e-02 2.90003335e-02 2.89361544e-02 2.88718553e-02 + 2.88074364e-02 2.87428984e-02 2.86782416e-02 2.86134665e-02 2.85485737e-02 + 2.84835636e-02 2.84184366e-02 2.83531933e-02 2.82878342e-02 2.82223598e-02 + 2.81567706e-02 2.80910670e-02 2.80252497e-02 2.79593190e-02 2.78932756e-02 + 2.78271200e-02 2.77608527e-02 2.76944743e-02 2.76279852e-02 2.75613861e-02 + 2.74946774e-02 2.74278597e-02 2.73609337e-02 2.72938997e-02 2.72267585e-02 + 2.71595106e-02 2.70921565e-02 2.70246969e-02 2.69571323e-02 2.68894633e-02 + 2.68216905e-02 2.67538145e-02 2.66858359e-02 2.66177553e-02 2.65495734e-02 + 2.64812906e-02 2.64129077e-02 2.63444253e-02 2.62758439e-02 2.62071643e-02 + 2.61383871e-02 2.60695128e-02 2.60005422e-02 2.59314759e-02 2.58623146e-02 + 2.57930588e-02 2.57237094e-02 2.56542668e-02 2.55847319e-02 2.55151052e-02 + 2.54453875e-02 2.53755794e-02 2.53056817e-02 2.52356950e-02 2.51656200e-02 + 2.50954574e-02 2.50252079e-02 2.49548723e-02 2.48844512e-02 2.48139453e-02 + 2.47433555e-02 2.46726823e-02 2.46019266e-02 2.45310890e-02 2.44601704e-02 + 2.43891714e-02 2.43180928e-02 2.42469353e-02 2.41756998e-02 2.41043869e-02 + 2.40329974e-02 2.39615321e-02 2.38899918e-02 2.38183773e-02 2.37466892e-02 + 2.36749285e-02 2.36030958e-02 2.35311920e-02 2.34592179e-02 2.33871743e-02 + 2.33150620e-02 2.32428818e-02 2.31706345e-02 2.30983209e-02 2.30259418e-02 + 2.29534982e-02 2.28809907e-02 2.28084202e-02 2.27357877e-02 2.26630938e-02 + 2.25903395e-02 2.25175256e-02 2.24446529e-02 2.23717224e-02 2.22987349e-02 + 2.22256912e-02 2.21525922e-02 2.20794387e-02 2.20062318e-02 2.19329721e-02 + 2.18596607e-02 2.17862985e-02 2.17128862e-02 2.16394248e-02 2.15659152e-02 + 2.14923583e-02 2.14187550e-02 2.13451062e-02 2.12714129e-02 2.11976759e-02 + 2.11238962e-02 2.10500747e-02 2.09762124e-02 2.09023101e-02 2.08283688e-02 + 2.07543894e-02 2.06803729e-02 2.06063203e-02 2.05322324e-02 2.04581103e-02 + 2.03839549e-02 2.03097671e-02 2.02355480e-02 2.01612984e-02 2.00870195e-02 + 2.00127120e-02 1.99383771e-02 1.98640157e-02 1.97896288e-02 1.97152174e-02 + 1.96407825e-02 1.95663250e-02 1.94918460e-02 1.94173465e-02 1.93428275e-02 + 1.92682899e-02 1.91937349e-02 1.91191634e-02 1.90445765e-02 1.89699751e-02 + 1.88953603e-02 1.88207331e-02 1.87460946e-02 1.86714458e-02 1.85967877e-02 + 1.85221214e-02 1.84474479e-02 1.83727683e-02 1.82980836e-02 1.82233949e-02 + 1.81487032e-02 1.80740096e-02 1.79993152e-02 1.79246210e-02 1.78499281e-02 + 1.77752375e-02 1.77005504e-02 1.76258678e-02 1.75511908e-02 1.74765205e-02 + 1.74018580e-02 1.73272043e-02 1.72525605e-02 1.71779279e-02 1.71033073e-02 + 1.70287000e-02 1.69541070e-02 1.68795295e-02 1.68049686e-02 1.67304253e-02 + 1.66559008e-02 1.65813962e-02 1.65069126e-02 1.64324512e-02 1.63580130e-02 + 1.62835992e-02 1.62092109e-02 1.61348493e-02 1.60605154e-02 1.59862105e-02 + 1.59119355e-02 1.58376918e-02 1.57634804e-02 1.56893025e-02 1.56151592e-02 + 1.55410517e-02 1.54669811e-02 1.53929486e-02 1.53189553e-02 1.52450023e-02 + 1.51710909e-02 1.50972223e-02 1.50233975e-02 1.49496177e-02 1.48758841e-02 + 1.48021979e-02 1.47285602e-02 1.46549722e-02 1.45814351e-02 1.45079501e-02 + 1.44345183e-02 1.43611409e-02 1.42878191e-02 1.42145541e-02 1.41413471e-02 + 1.40681992e-02 1.39951117e-02 1.39220856e-02 1.38491223e-02 1.37762230e-02 + 1.37033887e-02 1.36306207e-02 1.35579202e-02 1.34852884e-02 1.34127265e-02 + 1.33402357e-02 1.32678172e-02 1.31954721e-02 1.31232018e-02 1.30510074e-02 + 1.29788901e-02 1.29068512e-02 1.28348917e-02 1.27630130e-02 1.26912163e-02 + 1.26195027e-02 1.25478735e-02 1.24763299e-02 1.24048731e-02 1.23335043e-02 + 1.22622247e-02 1.21910356e-02 1.21199382e-02 1.20489337e-02 1.19780233e-02 + 1.19072082e-02 1.18364896e-02 1.17658689e-02 1.16953471e-02 1.16249256e-02 + 1.15546055e-02 1.14843880e-02 1.14142745e-02 1.13442661e-02 1.12743640e-02 + 1.12045694e-02 1.11348837e-02 1.10653080e-02 1.09958435e-02 1.09264915e-02 + 1.08572532e-02 1.07881298e-02 1.07191225e-02 1.06502326e-02 1.05814614e-02 + 1.05128099e-02 1.04442795e-02 1.03758714e-02 1.03075868e-02 1.02394270e-02 + 1.01713931e-02 1.01034863e-02 1.00357080e-02 9.96805938e-03 9.90054159e-03 + 9.83315588e-03 9.76590349e-03 9.69878565e-03 9.63180356e-03 9.56495846e-03 + 9.49825158e-03 9.43168412e-03 9.36525732e-03 9.29897239e-03 9.23283056e-03 + 9.16683304e-03 9.10098106e-03 9.03527584e-03 8.96971858e-03 8.90431051e-03 + 8.83905284e-03 8.77394680e-03 8.70899358e-03 8.64419441e-03 8.57955050e-03 + 8.51506306e-03 8.45073329e-03 8.38656242e-03 8.32255164e-03 8.25870216e-03 + 8.19501519e-03 8.13149193e-03 8.06813358e-03 8.00494135e-03 7.94191644e-03 + 7.87906004e-03 7.81637336e-03 7.75385758e-03 7.69151390e-03 7.62934352e-03 + 7.56734762e-03 7.50552740e-03 7.44388405e-03 7.38241874e-03 7.32113267e-03 + 7.26002701e-03 7.19910295e-03 7.13836168e-03 7.07780435e-03 7.01743216e-03 + 6.95724627e-03 6.89724785e-03 6.83743808e-03 6.77781812e-03 6.71838914e-03 + 6.65915230e-03 6.60010876e-03 6.54125968e-03 6.48260622e-03 6.42414954e-03 + 6.36589077e-03 6.30783108e-03 6.24997161e-03 6.19231351e-03 6.13485792e-03 + 6.07760598e-03 6.02055882e-03 5.96371759e-03 5.90708341e-03 5.85065741e-03 + 5.79444073e-03 5.73843448e-03 5.68263980e-03 5.62705779e-03 5.57168957e-03 + 5.51653626e-03 5.46159897e-03 5.40687880e-03 5.35237687e-03 5.29809427e-03 + 5.24403210e-03 5.19019145e-03 5.13657343e-03 5.08317911e-03 5.03000960e-03 + 4.97706596e-03 4.92434928e-03 4.87186064e-03 4.81960110e-03 4.76757175e-03 + 4.71577365e-03 4.66420785e-03 4.61287543e-03 4.56177744e-03 4.51091492e-03 + 4.46028894e-03 4.40990054e-03 4.35975075e-03 4.30984062e-03 4.26017119e-03 + 4.21074348e-03 4.16155853e-03 4.11261735e-03 4.06392097e-03 4.01547041e-03 + 3.96726667e-03 3.91931077e-03 3.87160371e-03 3.82414649e-03 3.77694011e-03 + 3.72998556e-03 3.68328384e-03 3.63683592e-03 3.59064278e-03 3.54470541e-03 + 3.49902478e-03 3.45360184e-03 3.40843758e-03 3.36353294e-03 3.31888889e-03 + 3.27450637e-03 3.23038633e-03 3.18652971e-03 3.14293745e-03 3.09961049e-03 + 3.05654975e-03 3.01375616e-03 2.97123063e-03 2.92897409e-03 2.88698744e-03 + 2.84527159e-03 2.80382744e-03 2.76265588e-03 2.72175782e-03 2.68113413e-03 + 2.64078570e-03 2.60071340e-03 2.56091812e-03 2.52140071e-03 2.48216204e-03 + 2.44320296e-03 2.40452434e-03 2.36612702e-03 2.32801183e-03 2.29017962e-03 + 2.25263123e-03 2.21536748e-03 2.17838918e-03 2.14169717e-03 2.10529225e-03 + 2.06917522e-03 2.03334690e-03 1.99780807e-03 1.96255953e-03 1.92760207e-03 + 1.89293646e-03 1.85856348e-03 1.82448389e-03 1.79069847e-03 1.75720797e-03 + 1.72401315e-03 1.69111475e-03 1.65851352e-03 1.62621019e-03 1.59420549e-03 + 1.56250015e-03 1.53109488e-03 1.49999041e-03 1.46918745e-03 1.43868668e-03 + 1.40848882e-03 1.37859455e-03 1.34900456e-03 1.31971952e-03 1.29074012e-03 + 1.26206701e-03 1.23370087e-03 1.20564235e-03 1.17789209e-03 1.15045075e-03 + 1.12331895e-03 1.09649735e-03 1.06998655e-03 1.04378718e-03 1.01789986e-03 + 9.92325188e-04 9.67063773e-04 9.42116210e-04 9.17483089e-04 8.93164993e-04 + 8.69162499e-04 8.45476180e-04 8.22106600e-04 7.99054319e-04 7.76319888e-04 + 7.53903856e-04 7.31806761e-04 7.10029137e-04 6.88571513e-04 6.67434408e-04 + 6.46618339e-04 6.26123813e-04 6.05951333e-04 5.86101393e-04 5.66574484e-04 + 5.47371087e-04 5.28491680e-04 5.09936731e-04 4.91706704e-04 4.73802056e-04 + 4.56223237e-04 4.38970690e-04 4.22044853e-04 4.05446155e-04 3.89175022e-04 + 3.73231869e-04 3.57617108e-04 3.42331143e-04 3.27374371e-04 3.12747182e-04 + 2.98449961e-04 2.84483085e-04 2.70846924e-04 2.57541843e-04 2.44568198e-04 + 2.31926339e-04 2.19616611e-04 2.07639350e-04 1.95994886e-04 1.84683542e-04 + 1.73705635e-04 1.63061474e-04 1.52751363e-04 1.42775596e-04 1.33134463e-04 + 1.23828246e-04 1.14857221e-04 1.06221656e-04 9.79218126e-05 8.99579451e-05 + 8.23303015e-05 7.50391226e-05 6.80846422e-05 6.14670874e-05 5.51866780e-05 + 4.92436271e-05 4.36381409e-05 3.83704183e-05 3.34406516e-05 2.88490259e-05 + 2.45957193e-05 2.06809031e-05 1.71047413e-05 1.38673912e-05 1.09690028e-05 + 8.40971934e-06 6.18967683e-06 4.30900435e-06 2.76782395e-06 1.56625059e-06 + 7.04392234e-07 1.82349766e-07 2.17034037e-10 1.58080827e-07 6.56020874e-07 + 1.49410985e-06 2.67241335e-06 4.19098991e-06 6.04989101e-06 8.24916105e-06 + 1.07888373e-05 1.36689501e-05 1.68895226e-05 2.04505708e-05 2.43521039e-05 + 2.85941236e-05 3.31766250e-05 3.80995957e-05 4.33630165e-05 4.89668610e-05 + 5.49110958e-05 6.11956802e-05 6.78205668e-05 7.47857008e-05 8.20910205e-05 + 8.97364570e-05 9.77219344e-05 1.06047370e-04 1.14712673e-04 1.23717748e-04 + 1.33062489e-04 1.42746785e-04 1.52770519e-04 1.63133565e-04 1.73835790e-04 + 1.84877056e-04 1.96257216e-04 2.07976116e-04 2.20033596e-04 2.32429488e-04 + 2.45163619e-04 2.58235806e-04 2.71645861e-04 2.85393588e-04 2.99478785e-04 + 3.13901243e-04 3.28660745e-04 3.43757067e-04 3.59189980e-04 3.74959246e-04 + 3.91064620e-04 4.07505852e-04 4.24282683e-04 4.41394848e-04 4.58842075e-04 + 4.76624086e-04 4.94740595e-04 5.13191308e-04 5.31975927e-04 5.51094145e-04 + 5.70545649e-04 5.90330119e-04 6.10447228e-04 6.30896641e-04 6.51678020e-04 + 6.72791016e-04 6.94235275e-04 7.16010436e-04 7.38116133e-04 7.60551989e-04 + 7.83317625e-04 8.06412652e-04 8.29836676e-04 8.53589295e-04 8.77670102e-04 + 9.02078682e-04 9.26814614e-04 9.51877469e-04 9.77266814e-04 1.00298221e-03 + 1.02902320e-03 1.05538934e-03 1.08208017e-03 1.10909521e-03 1.13643400e-03 + 1.16409605e-03 1.19208087e-03 1.22038798e-03 1.24901688e-03 1.27796705e-03 + 1.30723798e-03 1.33682916e-03 1.36674006e-03 1.39697014e-03 1.42751887e-03 + 1.45838571e-03 1.48957010e-03 1.52107149e-03 1.55288931e-03 1.58502299e-03 + 1.61747195e-03 1.65023562e-03 1.68331340e-03 1.71670471e-03 1.75040893e-03 + 1.78442547e-03 1.81875370e-03 1.85339302e-03 1.88834278e-03 1.92360237e-03 + 1.95917115e-03 1.99504847e-03 2.03123368e-03 2.06772612e-03 2.10452514e-03 + 2.14163007e-03 2.17904023e-03 2.21675494e-03 2.25477353e-03 2.29309529e-03 + 2.33171954e-03 2.37064556e-03 2.40987266e-03 2.44940011e-03 2.48922720e-03 + 2.52935320e-03 2.56977738e-03 2.61049901e-03 2.65151733e-03 2.69283161e-03 + 2.73444108e-03 2.77634500e-03 2.81854259e-03 2.86103308e-03 2.90381571e-03 + 2.94688968e-03 2.99025421e-03 3.03390851e-03 3.07785179e-03 3.12208323e-03 + 3.16660203e-03 3.21140738e-03 3.25649846e-03 3.30187444e-03 3.34753450e-03 + 3.39347780e-03 3.43970351e-03 3.48621077e-03 3.53299874e-03 3.58006656e-03 + 3.62741337e-03 3.67503832e-03 3.72294052e-03 3.77111911e-03 3.81957320e-03 + 3.86830191e-03 3.91730435e-03 3.96657963e-03 4.01612685e-03 4.06594510e-03 + 4.11603347e-03 4.16639106e-03 4.21701694e-03 4.26791019e-03 4.31906988e-03 + 4.37049509e-03 4.42218487e-03 4.47413829e-03 4.52635439e-03 4.57883223e-03 + 4.63157086e-03 4.68456931e-03 4.73782663e-03 4.79134184e-03 4.84511397e-03 + 4.89914205e-03 4.95342510e-03 5.00796213e-03 5.06275215e-03 5.11779417e-03 + 5.17308719e-03 5.22863021e-03 5.28442223e-03 5.34046224e-03 5.39674921e-03 + 5.45328215e-03 5.51006002e-03 5.56708180e-03 5.62434646e-03 5.68185296e-03 + 5.73960028e-03 5.79758737e-03 5.85581318e-03 5.91427668e-03 5.97297680e-03 + 6.03191249e-03 6.09108270e-03 6.15048635e-03 6.21012239e-03 6.26998975e-03 + 6.33008735e-03 6.39041412e-03 6.45096897e-03 6.51175083e-03 6.57275861e-03 + 6.63399121e-03 6.69544755e-03 6.75712653e-03 6.81902705e-03 6.88114800e-03 + 6.94348829e-03 7.00604680e-03 7.06882243e-03 7.13181405e-03 7.19502055e-03 + 7.25844081e-03 7.32207370e-03 7.38591811e-03 7.44997289e-03 7.51423692e-03 + 7.57870906e-03 7.64338818e-03 7.70827314e-03 7.77336279e-03 7.83865598e-03 + 7.90415157e-03 7.96984842e-03 8.03574535e-03 8.10184123e-03 8.16813489e-03 + 8.23462517e-03 8.30131091e-03 8.36819094e-03 8.43526409e-03 8.50252920e-03 + 8.56998510e-03 8.63763060e-03 8.70546454e-03 8.77348574e-03 8.84169300e-03 + 8.91008516e-03 8.97866103e-03 9.04741942e-03 9.11635914e-03 9.18547900e-03 + 9.25477781e-03 9.32425437e-03 9.39390750e-03 9.46373598e-03 9.53373863e-03 + 9.60391424e-03 9.67426160e-03 9.74477953e-03 9.81546680e-03 9.88632220e-03 + 9.95734455e-03 1.00285326e-02 1.00998852e-02 1.01714010e-02 1.02430790e-02 + 1.03149178e-02 1.03869163e-02 1.04590732e-02 1.05313873e-02 1.06038573e-02 + 1.06764822e-02 1.07492606e-02 1.08221913e-02 1.08952731e-02 1.09685048e-02 + 1.10418851e-02 1.11154129e-02 1.11890868e-02 1.12629056e-02 1.13368682e-02 + 1.14109733e-02 1.14852196e-02 1.15596060e-02 1.16341311e-02 1.17087939e-02 + 1.17835929e-02 1.18585270e-02 1.19335950e-02 1.20087956e-02 1.20841275e-02 + 1.21595896e-02 1.22351806e-02 1.23108993e-02 1.23867443e-02 1.24627146e-02 + 1.25388088e-02 1.26150258e-02 1.26913641e-02 1.27678228e-02 1.28444004e-02 + 1.29210957e-02 1.29979076e-02 1.30748347e-02 1.31518759e-02 1.32290298e-02 + 1.33062953e-02 1.33836711e-02 1.34611560e-02 1.35387487e-02 1.36164479e-02 + 1.36942526e-02 1.37721613e-02 1.38501730e-02 1.39282862e-02 1.40064999e-02 + 1.40848127e-02 1.41632235e-02 1.42417309e-02 1.43203338e-02 1.43990309e-02 + 1.44778210e-02 1.45567029e-02 1.46356752e-02 1.47147369e-02 1.47938866e-02 + 1.48731231e-02 1.49524452e-02 1.50318517e-02 1.51113413e-02 1.51909129e-02 + 1.52705651e-02 1.53502967e-02 1.54301066e-02 1.55099935e-02 1.55899562e-02 + 1.56699935e-02 1.57501041e-02 1.58302868e-02 1.59105404e-02 1.59908637e-02 + 1.60712555e-02 1.61517145e-02 1.62322396e-02 1.63128295e-02 1.63934830e-02 + 1.64741990e-02 1.65549761e-02 1.66358133e-02 1.67167092e-02 1.67976627e-02 + 1.68786727e-02 1.69597378e-02 1.70408569e-02 1.71220288e-02 1.72032523e-02 + 1.72845263e-02 1.73658494e-02 1.74472205e-02 1.75286385e-02 1.76101022e-02 + 1.76916103e-02 1.77731617e-02 1.78547552e-02 1.79363896e-02 1.80180638e-02 + 1.80997765e-02 1.81815267e-02 1.82633131e-02 1.83451345e-02 1.84269898e-02 + 1.85088779e-02 1.85907975e-02 1.86727476e-02 1.87547269e-02 1.88367342e-02 + 1.89187685e-02 1.90008287e-02 1.90829134e-02 1.91650216e-02 1.92471522e-02 + 1.93293040e-02 1.94114759e-02 1.94936667e-02 1.95758753e-02 1.96581005e-02 + 1.97403413e-02 1.98225965e-02 1.99048650e-02 1.99871456e-02 2.00694373e-02 + 2.01517389e-02 2.02340493e-02 2.03163675e-02 2.03986922e-02 2.04810224e-02 + 2.05633570e-02 2.06456948e-02 2.07280349e-02 2.08103760e-02 2.08927172e-02 + 2.09750572e-02 2.10573951e-02 2.11397297e-02 2.12220600e-02 2.13043849e-02 + 2.13867032e-02 2.14690140e-02 2.15513162e-02 2.16336087e-02 2.17158904e-02 + 2.17981604e-02 2.18804174e-02 2.19626605e-02 2.20448887e-02 2.21271008e-02 + 2.22092959e-02 2.22914729e-02 2.23736307e-02 2.24557683e-02 2.25378848e-02 + 2.26199790e-02 2.27020500e-02 2.27840967e-02 2.28661181e-02 2.29481132e-02 + 2.30300810e-02 2.31120205e-02 2.31939306e-02 2.32758105e-02 2.33576590e-02 + 2.34394752e-02 2.35212581e-02 2.36030067e-02 2.36847200e-02 2.37663971e-02 + 2.38480370e-02 2.39296387e-02 2.40112012e-02 2.40927236e-02 2.41742049e-02 + 2.42556442e-02 2.43370404e-02 2.44183927e-02 2.44997002e-02 2.45809618e-02 + 2.46621766e-02 2.47433437e-02 2.48244622e-02 2.49055311e-02 2.49865495e-02 + 2.50675165e-02 2.51484312e-02 2.52292926e-02 2.53100999e-02 2.53908522e-02 + 2.54715485e-02 2.55521880e-02 2.56327697e-02 2.57132928e-02 2.57937564e-02 + 2.58741596e-02 2.59545015e-02 2.60347813e-02 2.61149981e-02 2.61951510e-02 + 2.62752391e-02 2.63552617e-02 2.64352178e-02 2.65151067e-02 2.65949274e-02 + 2.66746791e-02 2.67543610e-02 2.68339722e-02 2.69135120e-02 2.69929795e-02 + 2.70723738e-02 2.71516942e-02 2.72309399e-02 2.73101100e-02 2.73892038e-02 + 2.74682203e-02 2.75471590e-02 2.76260189e-02 2.77047992e-02 2.77834992e-02 + 2.78621182e-02 2.79406553e-02 2.80191097e-02 2.80974807e-02 2.81757676e-02 + 2.82539695e-02 2.83320858e-02 2.84101156e-02 2.84880583e-02 2.85659130e-02 + 2.86436791e-02 2.87213558e-02 2.87989425e-02 2.88764383e-02 2.89538425e-02 + 2.90311545e-02 2.91083735e-02 2.91854988e-02 2.92625297e-02 2.93394656e-02 + 2.94163057e-02 2.94930493e-02 2.95696958e-02 2.96462444e-02 2.97226946e-02 + 2.97990456e-02 2.98752967e-02 2.99514473e-02 3.00274968e-02 3.01034445e-02 + 3.01792897e-02 3.02550318e-02 3.03306701e-02 3.04062041e-02 3.04816331e-02 + 3.05569564e-02 3.06321734e-02 3.07072835e-02 3.07822862e-02 3.08571807e-02 + 3.09319665e-02 3.10066430e-02 3.10812096e-02 3.11556657e-02 3.12300107e-02 + 3.13042440e-02 3.13783650e-02 3.14523732e-02 3.15262680e-02 3.16000488e-02 + 3.16737152e-02 3.17472664e-02 3.18207019e-02 3.18940213e-02 3.19672240e-02 + 3.20403094e-02 3.21132769e-02 3.21861262e-02 3.22588565e-02 3.23314675e-02 + 3.24039586e-02 3.24763292e-02 3.25485790e-02 3.26207072e-02 3.26927136e-02 + 3.27645975e-02 3.28363586e-02 3.29079962e-02 3.29795099e-02 3.30508993e-02 + 3.31221638e-02 3.31933030e-02 3.32643164e-02 3.33352036e-02 3.34059641e-02 + 3.34765975e-02 3.35471032e-02 3.36174810e-02 3.36877302e-02 3.37578506e-02 + 3.38278416e-02 3.38977028e-02 3.39674339e-02 3.40370344e-02 3.41065038e-02 + 3.41758418e-02 3.42450480e-02 3.43141220e-02 3.43830633e-02 3.44518716e-02 + 3.45205465e-02 3.45890876e-02 3.46574946e-02 3.47257670e-02 3.47939045e-02 + 3.48619068e-02 3.49297734e-02 3.49975040e-02 3.50650982e-02 3.51325558e-02 + 3.51998763e-02 3.52670594e-02 3.53341048e-02 3.54010122e-02 3.54677812e-02 + 3.55344115e-02 3.56009027e-02 3.56672546e-02 3.57334669e-02 3.57995392e-02 + 3.58654713e-02 3.59312628e-02 3.59969135e-02 3.60624230e-02 3.61277911e-02 + 3.61930174e-02 3.62581018e-02 3.63230440e-02 3.63878435e-02 3.64525003e-02 + 3.65170141e-02 3.65813845e-02 3.66456113e-02 3.67096943e-02 3.67736333e-02 + 3.68374279e-02 3.69010780e-02 3.69645833e-02 3.70279436e-02 3.70911587e-02 + 3.71542283e-02 3.72171522e-02 3.72799303e-02 3.73425622e-02 3.74050478e-02 + 3.74673870e-02 3.75295794e-02 3.75916249e-02 3.76535233e-02 3.77152744e-02 + 3.77768781e-02 3.78383342e-02 3.78996424e-02 3.79608026e-02 3.80218147e-02 + 3.80826785e-02 3.81433938e-02 3.82039604e-02 3.82643783e-02 3.83246472e-02 + 3.83847671e-02 3.84447377e-02 3.85045590e-02 3.85642308e-02 3.86237529e-02 + 3.86831254e-02 3.87423479e-02 3.88014204e-02 3.88603429e-02 3.89191151e-02 + 3.89777370e-02 3.90362085e-02 3.90945294e-02 3.91526997e-02 3.92107193e-02 + 3.92685881e-02 3.93263060e-02 3.93838729e-02 3.94412887e-02 3.94985534e-02 + 3.95556669e-02 3.96126291e-02 3.96694400e-02 3.97260994e-02 3.97826074e-02 + 3.98389638e-02 3.98951687e-02 3.99512220e-02 4.00071236e-02 4.00628735e-02 + 4.01184716e-02 4.01739179e-02 4.02292125e-02 4.02843552e-02 4.03393460e-02 + 4.03941849e-02 4.04488719e-02 4.05034070e-02 4.05577901e-02 4.06120213e-02 + 4.06661006e-02 4.07200279e-02 4.07738032e-02 4.08274266e-02 4.08808980e-02 + 4.09342175e-02 4.09873851e-02 4.10404007e-02 4.10932645e-02 4.11459764e-02 + 4.11985365e-02 4.12509447e-02 4.13032012e-02 4.13553060e-02 4.14072590e-02 + 4.14590603e-02 4.15107101e-02 4.15622082e-02 4.16135549e-02 4.16647500e-02 + 4.17157938e-02 4.17666861e-02 4.18174272e-02 4.18680170e-02 4.19184557e-02 + 4.19687432e-02 4.20188797e-02 4.20688653e-02 4.21187000e-02 4.21683839e-02 + 4.22179171e-02 4.22672996e-02 4.23165316e-02 4.23656132e-02 4.24145444e-02 + 4.24633254e-02 4.25119562e-02 4.25604369e-02 4.26087677e-02 4.26569487e-02 + 4.27049799e-02 4.27528616e-02 4.28005937e-02 4.28481764e-02 4.28956098e-02 + 4.29428942e-02 4.29900295e-02 4.30370159e-02 4.30838535e-02 4.31305425e-02 + 4.31770831e-02 4.32234752e-02 4.32697192e-02 4.33158151e-02 4.33617631e-02 + 4.34075633e-02 4.34532158e-02 4.34987209e-02 4.35440787e-02 4.35892893e-02 + 4.36343529e-02 4.36792696e-02 4.37240396e-02 4.37686632e-02 4.38131404e-02 + 4.38574714e-02 4.39016564e-02 4.39456955e-02 4.39895890e-02 4.40333371e-02 + 4.40769398e-02 4.41203974e-02 4.41637101e-02 4.42068780e-02 4.42499014e-02 + 4.42927804e-02 4.43355152e-02 4.43781061e-02 4.44205532e-02 4.44628567e-02 + 4.45050168e-02 4.45470338e-02 4.45889078e-02 4.46306390e-02 4.46722277e-02 + 4.47136740e-02 4.47549782e-02 4.47961405e-02 4.48371610e-02 4.48780401e-02 + 4.49187780e-02 4.49593747e-02 4.49998307e-02 4.50401461e-02 4.50803211e-02 + 4.51203560e-02 4.51602509e-02 4.52000062e-02 4.52396221e-02 4.52790987e-02 + 4.53184364e-02 4.53576354e-02 4.53966958e-02 4.54356180e-02 4.54744022e-02 + 4.55130487e-02 4.55515576e-02 4.55899293e-02 4.56281640e-02 4.56662619e-02 + 4.57042233e-02 4.57420484e-02 4.57797375e-02 4.58172909e-02 4.58547089e-02 + 4.58919915e-02 4.59291393e-02 4.59661523e-02 4.60030309e-02 4.60397753e-02 + 4.60763859e-02 4.61128627e-02 4.61492063e-02 4.61854167e-02 4.62214943e-02 + 4.62574394e-02 4.62932522e-02 4.63289330e-02 4.63644821e-02 4.63998997e-02 + 4.64351862e-02 4.64703418e-02 4.65053668e-02 4.65402615e-02 4.65750261e-02 + 4.66096610e-02 4.66441665e-02 4.66785428e-02 4.67127902e-02 4.67469090e-02 + 4.67808995e-02 4.68147620e-02 4.68484968e-02 4.68821042e-02 4.69155844e-02 + 4.69489379e-02 4.69821647e-02 4.70152654e-02 4.70482401e-02 4.70810892e-02 + 4.71138129e-02 4.71464116e-02 4.71788856e-02 4.72112352e-02 4.72434606e-02 + 4.72755622e-02 4.73075403e-02 4.73393952e-02 4.73711272e-02 4.74027366e-02 + 4.74342238e-02 4.74655889e-02 4.74968325e-02 4.75279546e-02 4.75589558e-02 + 4.75898362e-02 4.76205962e-02 4.76512361e-02 4.76817562e-02 4.77121569e-02 + 4.77424384e-02 4.77726011e-02 4.78026453e-02 4.78325713e-02 4.78623795e-02 + 4.78920701e-02 4.79216434e-02 4.79510998e-02 4.79804397e-02 4.80096633e-02 + 4.80387709e-02 4.80677629e-02 4.80966396e-02 4.81254014e-02 4.81540485e-02 + 4.81825812e-02 4.82110000e-02 4.82393051e-02 4.82674968e-02 4.82955755e-02 + 4.83235416e-02 4.83513952e-02 4.83791368e-02 4.84067667e-02 4.84342853e-02 + 4.84616927e-02 4.84889895e-02 4.85161759e-02 4.85432521e-02 4.85702187e-02 + 4.85970759e-02 4.86238239e-02 4.86504633e-02 4.86769942e-02 4.87034171e-02 + 4.87297322e-02 4.87559399e-02 4.87820405e-02 4.88080344e-02 4.88339218e-02 + 4.88597032e-02 4.88853789e-02 4.89109491e-02 4.89364142e-02 4.89617746e-02 + 4.89870305e-02 4.90121824e-02 4.90372306e-02 4.90621753e-02 4.90870170e-02 + 4.91117559e-02 4.91363924e-02 4.91609268e-02 4.91853595e-02 4.92096908e-02 + 4.92339210e-02 4.92580505e-02 4.92820795e-02 4.93060086e-02 4.93298378e-02 + 4.93535677e-02 4.93771986e-02 4.94007307e-02 4.94241644e-02 4.94475000e-02 + 4.94707380e-02 4.94938785e-02 4.95169220e-02 4.95398688e-02 4.95627192e-02 + 4.95854735e-02 4.96081321e-02 4.96306954e-02 4.96531636e-02 4.96755370e-02 + 4.96978161e-02 4.97200012e-02 4.97420925e-02 4.97640905e-02 4.97859954e-02 + 4.98078076e-02 4.98295274e-02 4.98511552e-02 4.98726912e-02 4.98941359e-02 + 4.99154895e-02 4.99367524e-02 4.99579249e-02 4.99790073e-02 5.00000000e-02 + 0.00000000e+00 2.43488551e-08 9.70348995e-08 2.17517882e-07 3.85258271e-07 + 5.99717271e-07 8.60356837e-07 1.16663970e-06 1.51802935e-06 1.91399012e-06 + 2.35398713e-06 2.83748633e-06 3.36395454e-06 3.93285942e-06 4.54366955e-06 + 5.19585437e-06 5.88888425e-06 6.62223049e-06 7.39536534e-06 8.20776200e-06 + 9.05889466e-06 9.94823850e-06 1.08752697e-05 1.18394655e-05 1.28403042e-05 + 1.38772651e-05 1.49498285e-05 1.60574760e-05 1.71996902e-05 1.83759547e-05 + 1.95857545e-05 2.08285756e-05 2.21039051e-05 2.34112314e-05 2.47500441e-05 + 2.61198339e-05 2.75200930e-05 2.89503146e-05 3.04099932e-05 3.18986247e-05 + 3.34157062e-05 3.49607362e-05 3.65332143e-05 3.81326418e-05 3.97585210e-05 + 4.14103560e-05 4.30876518e-05 4.47899152e-05 4.65166542e-05 4.82673784e-05 + 5.00415988e-05 5.18388277e-05 5.36585791e-05 5.55003684e-05 5.73637126e-05 + 5.92481302e-05 6.11531411e-05 6.30782670e-05 6.50230311e-05 6.69869581e-05 + 6.89695743e-05 7.09704078e-05 7.29889882e-05 7.50248468e-05 7.70775165e-05 + 7.91465320e-05 8.12314297e-05 8.33317475e-05 8.54470252e-05 8.75768045e-05 + 8.97206285e-05 9.18780424e-05 9.40485929e-05 9.62318288e-05 9.84273005e-05 + 1.00634560e-04 1.02853162e-04 1.05082663e-04 1.07322619e-04 1.09572592e-04 + 1.11832142e-04 1.14100833e-04 1.16378232e-04 1.18663904e-04 1.20957421e-04 + 1.23258352e-04 1.25566272e-04 1.27880756e-04 1.30201382e-04 1.32527729e-04 + 1.34859378e-04 1.37195914e-04 1.39536921e-04 1.41881988e-04 1.44230704e-04 + 1.46582662e-04 1.48937455e-04 1.51294680e-04 1.53653936e-04 1.56014822e-04 + 1.58376942e-04 1.60739900e-04 1.63103305e-04 1.65466764e-04 1.67829891e-04 + 1.70192298e-04 1.72553602e-04 1.74913422e-04 1.77271378e-04 1.79627094e-04 + 1.81980193e-04 1.84330306e-04 1.86677060e-04 1.89020090e-04 1.91359029e-04 + 1.93693515e-04 1.96023187e-04 1.98347688e-04 2.00666661e-04 2.02979754e-04 + 2.05286615e-04 2.07586897e-04 2.09880254e-04 2.12166341e-04 2.14444820e-04 + 2.16715350e-04 2.18977597e-04 2.21231227e-04 2.23475910e-04 2.25711316e-04 + 2.27937121e-04 2.30153002e-04 2.32358637e-04 2.34553710e-04 2.36737905e-04 + 2.38910909e-04 2.41072412e-04 2.43222107e-04 2.45359690e-04 2.47484858e-04 + 2.49597311e-04 2.51696755e-04 2.53782893e-04 2.55855436e-04 2.57914094e-04 + 2.59958582e-04 2.61988617e-04 2.64003919e-04 2.66004209e-04 2.67989214e-04 + 2.69958661e-04 2.71912281e-04 2.73849808e-04 2.75770978e-04 2.77675531e-04 + 2.79563208e-04 2.81433755e-04 2.83286920e-04 2.85122453e-04 2.86940107e-04 + 2.88739640e-04 2.90520810e-04 2.92283380e-04 2.94027115e-04 2.95751782e-04 + 2.97457154e-04 2.99143004e-04 3.00809109e-04 3.02455248e-04 3.04081205e-04 + 3.05686765e-04 3.07271718e-04 3.08835854e-04 3.10378969e-04 3.11900861e-04 + 3.13401329e-04 3.14880179e-04 3.16337217e-04 3.17772253e-04 3.19185100e-04 + 3.20575574e-04 3.21943493e-04 3.23288681e-04 3.24610962e-04 3.25910165e-04 + 3.27186120e-04 3.28438664e-04 3.29667633e-04 3.30872868e-04 3.32054212e-04 + 3.33211514e-04 3.34344623e-04 3.35453392e-04 3.36537678e-04 3.37597341e-04 + 3.38632243e-04 3.39642250e-04 3.40627231e-04 3.41587060e-04 3.42521610e-04 + 3.43430761e-04 3.44314395e-04 3.45172397e-04 3.46004655e-04 3.46811061e-04 + 3.47591509e-04 3.48345899e-04 3.49074130e-04 3.49776107e-04 3.50451738e-04 + 3.51100935e-04 3.51723611e-04 3.52319684e-04 3.52889075e-04 3.53431707e-04 + 3.53947509e-04 3.54436410e-04 3.54898345e-04 3.55333251e-04 3.55741068e-04 + 3.56121740e-04 3.56475215e-04 3.56801442e-04 3.57100376e-04 3.57371973e-04 + 3.57616194e-04 3.57833003e-04 3.58022366e-04 3.58184254e-04 3.58318641e-04 + 3.58425503e-04 3.58504822e-04 3.58556580e-04 3.58580765e-04 3.58577366e-04 + 3.58546379e-04 3.58487800e-04 3.58401629e-04 3.58287871e-04 3.58146532e-04 + 3.57977623e-04 3.57781159e-04 3.57557155e-04 3.57305633e-04 3.57026618e-04 + 3.56720135e-04 3.56386217e-04 3.56024897e-04 3.55636213e-04 3.55220206e-04 + 3.54776920e-04 3.54306402e-04 3.53808705e-04 3.53283882e-04 3.52731991e-04 + 3.52153093e-04 3.51547253e-04 3.50914539e-04 3.50255023e-04 3.49568779e-04 + 3.48855885e-04 3.48116423e-04 3.47350478e-04 3.46558138e-04 3.45739494e-04 + 3.44894643e-04 3.44023683e-04 3.43126715e-04 3.42203844e-04 3.41255180e-04 + 3.40280834e-04 3.39280922e-04 3.38255563e-04 3.37204879e-04 3.36128995e-04 + 3.35028040e-04 3.33902147e-04 3.32751452e-04 3.31576093e-04 3.30376213e-04 + 3.29151958e-04 3.27903477e-04 3.26630923e-04 3.25334452e-04 3.24014222e-04 + 3.22670397e-04 3.21303142e-04 3.19912628e-04 3.18499026e-04 3.17062513e-04 + 3.15603268e-04 3.14121475e-04 3.12617318e-04 3.11090989e-04 3.09542678e-04 + 3.07972584e-04 3.06380904e-04 3.04767842e-04 3.03133605e-04 3.01478400e-04 + 2.99802442e-04 2.98105947e-04 2.96389132e-04 2.94652222e-04 2.92895443e-04 + 2.91119023e-04 2.89323194e-04 2.87508194e-04 2.85674261e-04 2.83821637e-04 + 2.81950568e-04 2.80061304e-04 2.78154095e-04 2.76229198e-04 2.74286872e-04 + 2.72327377e-04 2.70350981e-04 2.68357950e-04 2.66348556e-04 2.64323075e-04 + 2.62281784e-04 2.60224965e-04 2.58152902e-04 2.56065883e-04 2.53964199e-04 + 2.51848144e-04 2.49718015e-04 2.47574112e-04 2.45416740e-04 2.43246204e-04 + 2.41062815e-04 2.38866886e-04 2.36658733e-04 2.34438675e-04 2.32207035e-04 + 2.29964138e-04 2.27710313e-04 2.25445892e-04 2.23171209e-04 2.20886603e-04 + 2.18592414e-04 2.16288987e-04 2.13976669e-04 2.11655809e-04 2.09326762e-04 + 2.06989883e-04 2.04645532e-04 2.02294071e-04 1.99935866e-04 1.97571284e-04 + 1.95200698e-04 1.92824481e-04 1.90443011e-04 1.88056668e-04 1.85665835e-04 + 1.83270899e-04 1.80872249e-04 1.78470276e-04 1.76065376e-04 1.73657947e-04 + 1.71248388e-04 1.68837105e-04 1.66424504e-04 1.64010993e-04 1.61596986e-04 + 1.59182897e-04 1.56769145e-04 1.54356150e-04 1.51944336e-04 1.49534129e-04 + 1.47125959e-04 1.44720257e-04 1.42317459e-04 1.39918002e-04 1.37522326e-04 + 1.35130875e-04 1.32744094e-04 1.30362432e-04 1.27986339e-04 1.25616271e-04 + 1.23252683e-04 1.20896036e-04 1.18546790e-04 1.16205411e-04 1.13872366e-04 + 1.11548124e-04 1.09233158e-04 1.06927944e-04 1.04632960e-04 1.02348684e-04 + 1.00075601e-04 9.78141952e-05 9.55649553e-05 9.33283715e-05 9.11049369e-05 + 8.88951470e-05 8.66994998e-05 8.45184959e-05 8.23526381e-05 8.02024320e-05 + 7.80683853e-05 7.59510083e-05 7.38508139e-05 7.17683170e-05 6.97040351e-05 + 6.76584882e-05 6.56321985e-05 6.36256905e-05 6.16394911e-05 5.96741296e-05 + 5.77301375e-05 5.58080486e-05 5.39083991e-05 5.20317273e-05 5.01785738e-05 + 4.83494815e-05 4.65449954e-05 4.47656629e-05 4.30120334e-05 4.12846585e-05 + 3.95840921e-05 3.79108901e-05 3.62656107e-05 3.46488140e-05 3.30610623e-05 + 3.15029201e-05 2.99749539e-05 2.84777321e-05 2.70118254e-05 2.55778064e-05 + 2.41762497e-05 2.28077320e-05 2.14728317e-05 2.01721296e-05 1.89062081e-05 + 1.76756517e-05 1.64810468e-05 1.53229816e-05 1.42020464e-05 1.31188332e-05 + 1.20739359e-05 1.10679502e-05 1.01014737e-05 9.17510585e-06 8.28944774e-06 + 7.44510235e-06 6.64267440e-06 5.88277033e-06 5.16599834e-06 4.49296832e-06 + 3.86429185e-06 3.28058222e-06 2.74245435e-06 2.25052482e-06 1.80541184e-06 + 1.40773522e-06 1.05811638e-06 7.57178299e-07 5.05545545e-07 3.03844209e-07 + 1.52701918e-07 5.27478064e-08 4.61250386e-09 8.92811584e-09 6.63282070e-08 + 1.77447784e-07 3.42923278e-07 5.63392527e-07 8.39494760e-07 1.17187058e-06 + 1.56116194e-06 2.00801213e-06 2.51306577e-06 3.07696878e-06 3.70036834e-06 + 4.38391295e-06 5.12825230e-06 5.93403735e-06 6.80192027e-06 7.73255440e-06 + 8.72659429e-06 9.78469564e-06 1.09075153e-05 1.20957112e-05 1.33499424e-05 + 1.46708691e-05 1.60591526e-05 1.75154550e-05 1.90404398e-05 2.06347711e-05 + 2.22991145e-05 2.40341361e-05 2.58405033e-05 2.77188842e-05 2.96699480e-05 + 3.16943647e-05 3.37928053e-05 3.59659416e-05 3.82144461e-05 4.05389924e-05 + 4.29402547e-05 4.54189082e-05 4.79756288e-05 5.06110929e-05 5.33259781e-05 + 5.61209623e-05 5.89967243e-05 6.19539437e-05 6.49933005e-05 6.81154755e-05 + 7.13211502e-05 7.46110064e-05 7.79857269e-05 8.14459948e-05 8.49924937e-05 + 8.86259080e-05 9.23469224e-05 9.61562222e-05 1.00054493e-04 1.04042421e-04 + 1.08120693e-04 1.12289996e-04 1.16551018e-04 1.20904446e-04 1.25350968e-04 + 1.29891273e-04 1.34526050e-04 1.39255988e-04 1.44081776e-04 1.49004104e-04 + 1.54023663e-04 1.59141141e-04 1.64357231e-04 1.69672621e-04 1.75088004e-04 + 1.80604069e-04 1.86221509e-04 1.91941014e-04 1.97763274e-04 2.03688983e-04 + 2.09718831e-04 2.15853509e-04 2.22093709e-04 2.28440122e-04 2.34893440e-04 + 2.41454354e-04 2.48123555e-04 2.54901735e-04 2.61789585e-04 2.68787796e-04 + 2.75897058e-04 2.83118063e-04 2.90451500e-04 2.97898061e-04 3.05458435e-04 + 3.13133313e-04 3.20923384e-04 3.28829337e-04 3.36851861e-04 3.44991646e-04 + 3.53249380e-04 3.61625750e-04 3.70121445e-04 3.78737152e-04 3.87473558e-04 + 3.96331350e-04 4.05311213e-04 4.14413833e-04 4.23639896e-04 4.32990086e-04 + 4.42465087e-04 4.52065583e-04 4.61792257e-04 4.71645791e-04 4.81626868e-04 + 4.91736167e-04 5.01974371e-04 5.12342159e-04 5.22840211e-04 5.33469204e-04 + 5.44229818e-04 5.55122728e-04 5.66148612e-04 5.77308146e-04 5.88602003e-04 + 6.00030859e-04 6.11595386e-04 6.23296257e-04 6.35134144e-04 6.47109717e-04 + 6.59223646e-04 6.71476600e-04 6.83869248e-04 6.96402254e-04 7.09076287e-04 + 7.21892011e-04 7.34850090e-04 7.47951188e-04 7.61195965e-04 7.74585083e-04 + 7.88119202e-04 8.01798981e-04 8.15625077e-04 8.29598146e-04 8.43718845e-04 + 8.57987827e-04 8.72405745e-04 8.86973251e-04 9.01690996e-04 9.16559628e-04 + 9.31579797e-04 9.46752148e-04 9.62077327e-04 9.77555978e-04 9.93188745e-04 + 1.00897627e-03 1.02491919e-03 1.04101814e-03 1.05727377e-03 1.07368671e-03 + 1.09025759e-03 1.10698704e-03 1.12387570e-03 1.14092420e-03 1.15813317e-03 + 1.17550323e-03 1.19303501e-03 1.21072913e-03 1.22858621e-03 1.24660688e-03 + 1.26479176e-03 1.28314145e-03 1.30165659e-03 1.32033777e-03 1.33918562e-03 + 1.35820075e-03 1.37738376e-03 1.39673526e-03 1.41625586e-03 1.43594616e-03 + 1.45580676e-03 1.47583827e-03 1.49604128e-03 1.51641638e-03 1.53696418e-03 + 1.55768526e-03 1.57858022e-03 1.59964965e-03 1.62089413e-03 1.64231425e-03 + 1.66391059e-03 1.68568373e-03 1.70763425e-03 1.72976274e-03 1.75206976e-03 + 1.77455589e-03 1.79722169e-03 1.82006775e-03 1.84309462e-03 1.86630287e-03 + 1.88969307e-03 1.91326577e-03 1.93702154e-03 1.96096092e-03 1.98508448e-03 + 2.00939277e-03 2.03388633e-03 2.05856572e-03 2.08343148e-03 2.10848415e-03 + 2.13372427e-03 2.15915239e-03 2.18476904e-03 2.21057475e-03 2.23657006e-03 + 2.26275549e-03 2.28913158e-03 2.31569884e-03 2.34245780e-03 2.36940899e-03 + 2.39655291e-03 2.42389008e-03 2.45142102e-03 2.47914624e-03 2.50706624e-03 + 2.53518153e-03 2.56349261e-03 2.59199999e-03 2.62070415e-03 2.64960561e-03 + 2.67870484e-03 2.70800234e-03 2.73749860e-03 2.76719410e-03 2.79708933e-03 + 2.82718476e-03 2.85748088e-03 2.88797815e-03 2.91867705e-03 2.94957805e-03 + 2.98068162e-03 3.01198821e-03 3.04349830e-03 3.07521234e-03 3.10713078e-03 + 3.13925408e-03 3.17158269e-03 3.20411705e-03 3.23685762e-03 3.26980484e-03 + 3.30295913e-03 3.33632095e-03 3.36989071e-03 3.40366887e-03 3.43765583e-03 + 3.47185204e-03 3.50625790e-03 3.54087384e-03 3.57570028e-03 3.61073762e-03 + 3.64598629e-03 3.68144668e-03 3.71711921e-03 3.75300427e-03 3.78910226e-03 + 3.82541359e-03 3.86193864e-03 3.89867779e-03 3.93563145e-03 3.97279999e-03 + 4.01018380e-03 4.04778325e-03 4.08559871e-03 4.12363057e-03 4.16187918e-03 + 4.20034492e-03 4.23902814e-03 4.27792921e-03 4.31704848e-03 4.35638630e-03 + 4.39594303e-03 4.43571902e-03 4.47571460e-03 4.51593011e-03 4.55636591e-03 + 4.59702231e-03 4.63789965e-03 4.67899827e-03 4.72031847e-03 4.76186059e-03 + 4.80362495e-03 4.84561186e-03 4.88782162e-03 4.93025456e-03 4.97291097e-03 + 5.01579116e-03 5.05889543e-03 5.10222407e-03 5.14577738e-03 5.18955564e-03 + 5.23355914e-03 5.27778816e-03 5.32224299e-03 5.36692389e-03 5.41183115e-03 + 5.45696503e-03 5.50232579e-03 5.54791370e-03 5.59372902e-03 5.63977201e-03 + 5.68604291e-03 5.73254198e-03 5.77926946e-03 5.82622559e-03 5.87341062e-03 + 5.92082478e-03 5.96846830e-03 6.01634140e-03 6.06444433e-03 6.11277729e-03 + 6.16134051e-03 6.21013420e-03 6.25915857e-03 6.30841384e-03 6.35790020e-03 + 6.40761786e-03 6.45756701e-03 6.50774785e-03 6.55816058e-03 6.60880537e-03 + 6.65968241e-03 6.71079189e-03 6.76213398e-03 6.81370884e-03 6.86551667e-03 + 6.91755761e-03 6.96983183e-03 7.02233950e-03 7.07508076e-03 7.12805578e-03 + 7.18126469e-03 7.23470765e-03 7.28838479e-03 7.34229626e-03 7.39644219e-03 + 7.45082271e-03 7.50543795e-03 7.56028803e-03 7.61537307e-03 7.67069319e-03 + 7.72624851e-03 7.78203912e-03 7.83806515e-03 7.89432669e-03 7.95082384e-03 + 8.00755670e-03 8.06452535e-03 8.12172989e-03 8.17917041e-03 8.23684697e-03 + 8.29475967e-03 8.35290857e-03 8.41129374e-03 8.46991526e-03 8.52877318e-03 + 8.58786757e-03 8.64719848e-03 8.70676596e-03 8.76657006e-03 8.82661083e-03 + 8.88688830e-03 8.94740253e-03 9.00815353e-03 9.06914135e-03 9.13036600e-03 + 9.19182752e-03 9.25352592e-03 9.31546122e-03 9.37763343e-03 9.44004256e-03 + 9.50268862e-03 9.56557160e-03 9.62869151e-03 9.69204834e-03 9.75564209e-03 + 9.81947273e-03 9.88354026e-03 9.94784464e-03 1.00123859e-02 1.00771639e-02 + 1.01421787e-02 1.02074303e-02 1.02729186e-02 1.03386435e-02 1.04046051e-02 + 1.04708033e-02 1.05372379e-02 1.06039091e-02 1.06708166e-02 1.07379605e-02 + 1.08053407e-02 1.08729570e-02 1.09408095e-02 1.10088981e-02 1.10772226e-02 + 1.11457830e-02 1.12145793e-02 1.12836112e-02 1.13528787e-02 1.14223818e-02 + 1.14921203e-02 1.15620941e-02 1.16323030e-02 1.17027471e-02 1.17734261e-02 + 1.18443400e-02 1.19154886e-02 1.19868718e-02 1.20584894e-02 1.21303414e-02 + 1.22024276e-02 1.22747478e-02 1.23473019e-02 1.24200897e-02 1.24931112e-02 + 1.25663661e-02 1.26398543e-02 1.27135756e-02 1.27875299e-02 1.28617170e-02 + 1.29361367e-02 1.30107888e-02 1.30856731e-02 1.31607896e-02 1.32361379e-02 + 1.33117179e-02 1.33875294e-02 1.34635722e-02 1.35398461e-02 1.36163509e-02 + 1.36930863e-02 1.37700523e-02 1.38472485e-02 1.39246747e-02 1.40023308e-02 + 1.40802164e-02 1.41583314e-02 1.42366755e-02 1.43152485e-02 1.43940502e-02 + 1.44730803e-02 1.45523385e-02 1.46318247e-02 1.47115385e-02 1.47914797e-02 + 1.48716480e-02 1.49520432e-02 1.50326651e-02 1.51135133e-02 1.51945875e-02 + 1.52758876e-02 1.53574131e-02 1.54391639e-02 1.55211396e-02 1.56033400e-02 + 1.56857648e-02 1.57684136e-02 1.58512861e-02 1.59343821e-02 1.60177013e-02 + 1.61012433e-02 1.61850079e-02 1.62689946e-02 1.63532033e-02 1.64376335e-02 + 1.65222849e-02 1.66071573e-02 1.66922502e-02 1.67775634e-02 1.68630965e-02 + 1.69488492e-02 1.70348211e-02 1.71210118e-02 1.72074211e-02 1.72940485e-02 + 1.73808937e-02 1.74679564e-02 1.75552362e-02 1.76427326e-02 1.77304454e-02 + 1.78183742e-02 1.79065185e-02 1.79948781e-02 1.80834525e-02 1.81722413e-02 + 1.82612442e-02 1.83504607e-02 1.84398905e-02 1.85295331e-02 1.86193882e-02 + 1.87094554e-02 1.87997342e-02 1.88902243e-02 1.89809251e-02 1.90718364e-02 + 1.91629577e-02 1.92542885e-02 1.93458285e-02 1.94375771e-02 1.95295341e-02 + 1.96216989e-02 1.97140711e-02 1.98066502e-02 1.98994359e-02 1.99924277e-02 + 2.00856251e-02 2.01790276e-02 2.02726349e-02 2.03664465e-02 2.04604618e-02 + 2.05546805e-02 2.06491020e-02 2.07437260e-02 2.08385519e-02 2.09335792e-02 + 2.10288076e-02 2.11242364e-02 2.12198652e-02 2.13156936e-02 2.14117210e-02 + 2.15079470e-02 2.16043710e-02 2.17009926e-02 2.17978112e-02 2.18948264e-02 + 2.19920377e-02 2.20894445e-02 2.21870464e-02 2.22848427e-02 2.23828331e-02 + 2.24810170e-02 2.25793938e-02 2.26779631e-02 2.27767243e-02 2.28756769e-02 + 2.29748204e-02 2.30741542e-02 2.31736778e-02 2.32733907e-02 2.33732923e-02 + 2.34733820e-02 2.35736594e-02 2.36741238e-02 2.37747748e-02 2.38756118e-02 + 2.39766342e-02 2.40778414e-02 2.41792330e-02 2.42808082e-02 2.43825667e-02 + 2.44845078e-02 2.45866309e-02 2.46889354e-02 2.47914209e-02 2.48940867e-02 + 2.49969322e-02 2.50999568e-02 2.52031600e-02 2.53065412e-02 2.54100998e-02 + 2.55138352e-02 2.56177468e-02 2.57218340e-02 2.58260963e-02 2.59305329e-02 + 2.60351434e-02 2.61399271e-02 2.62448834e-02 2.63500117e-02 2.64553114e-02 + 2.65607818e-02 2.66664224e-02 2.67722326e-02 2.68782117e-02 2.69843591e-02 + 2.70906742e-02 2.71971563e-02 2.73038049e-02 2.74106192e-02 2.75175988e-02 + 2.76247429e-02 2.77320509e-02 2.78395221e-02 2.79471560e-02 2.80549519e-02 + 2.81629091e-02 2.82710270e-02 2.83793050e-02 2.84877423e-02 2.85963385e-02 + 2.87050927e-02 2.88140044e-02 2.89230729e-02 2.90322975e-02 2.91416776e-02 + 2.92512125e-02 2.93609016e-02 2.94707442e-02 2.95807396e-02 2.96908871e-02 + 2.98011861e-02 2.99116360e-02 3.00222360e-02 3.01329854e-02 3.02438837e-02 + 3.03549300e-02 3.04661238e-02 3.05774644e-02 3.06889510e-02 3.08005830e-02 + 3.09123597e-02 3.10242804e-02 3.11363445e-02 3.12485511e-02 3.13608997e-02 + 3.14733896e-02 3.15860200e-02 3.16987903e-02 3.18116997e-02 3.19247476e-02 + 3.20379332e-02 3.21512559e-02 3.22647149e-02 3.23783096e-02 3.24920392e-02 + 3.26059030e-02 3.27199004e-02 3.28340306e-02 3.29482928e-02 3.30626865e-02 + 3.31772108e-02 3.32918651e-02 3.34066486e-02 3.35215607e-02 3.36366005e-02 + 3.37517674e-02 3.38670607e-02 3.39824796e-02 3.40980234e-02 3.42136915e-02 + 3.43294829e-02 3.44453971e-02 3.45614333e-02 3.46775908e-02 3.47938688e-02 + 3.49102666e-02 3.50267835e-02 3.51434187e-02 3.52601716e-02 3.53770413e-02 + 3.54940271e-02 3.56111283e-02 3.57283442e-02 3.58456740e-02 3.59631170e-02 + 3.60806724e-02 3.61983395e-02 3.63161175e-02 3.64340058e-02 3.65520035e-02 + 3.66701099e-02 3.67883242e-02 3.69066458e-02 3.70250738e-02 3.71436076e-02 + 3.72622463e-02 3.73809892e-02 3.74998356e-02 3.76187846e-02 3.77378357e-02 + 3.78569879e-02 3.79762406e-02 3.80955929e-02 3.82150442e-02 3.83345937e-02 + 3.84542406e-02 3.85739841e-02 3.86938235e-02 3.88137581e-02 3.89337870e-02 + 3.90539096e-02 3.91741250e-02 3.92944326e-02 3.94148314e-02 3.95353208e-02 + 3.96559000e-02 3.97765683e-02 3.98973248e-02 4.00181689e-02 4.01390997e-02 + 4.02601165e-02 4.03812185e-02 4.05024049e-02 4.06236750e-02 4.07450281e-02 + 4.08664633e-02 4.09879798e-02 4.11095770e-02 4.12312540e-02 4.13530101e-02 + 4.14748445e-02 4.15967564e-02 4.17187451e-02 4.18408097e-02 4.19629496e-02 + 4.20851640e-02 4.22074520e-02 4.23298129e-02 4.24522460e-02 4.25747504e-02 + 4.26973254e-02 4.28199703e-02 4.29426842e-02 4.30654664e-02 4.31883161e-02 + 4.33112325e-02 4.34342149e-02 4.35572624e-02 4.36803744e-02 4.38035500e-02 + 4.39267885e-02 4.40500891e-02 4.41734511e-02 4.42968735e-02 4.44203558e-02 + 4.45438971e-02 4.46674966e-02 4.47911535e-02 4.49148672e-02 4.50386368e-02 + 4.51624615e-02 4.52863406e-02 4.54102733e-02 4.55342588e-02 4.56582964e-02 + 4.57823853e-02 4.59065247e-02 4.60307139e-02 4.61549520e-02 4.62792383e-02 + 4.64035721e-02 4.65279525e-02 4.66523788e-02 4.67768502e-02 4.69013660e-02 + 4.70259254e-02 4.71505276e-02 4.72751719e-02 4.73998574e-02 4.75245834e-02 + 4.76493492e-02 4.77741540e-02 4.78989970e-02 4.80238774e-02 4.81487945e-02 + 4.82737475e-02 4.83987357e-02 4.85237582e-02 4.86488144e-02 4.87739034e-02 + 4.88990245e-02 4.90241770e-02 4.91493600e-02 4.92745728e-02 4.93998147e-02 + 4.95250848e-02 4.96503825e-02 4.97757070e-02 4.99010574e-02 5.00264331e-02 + 5.01518333e-02 5.02772572e-02 5.04027041e-02 5.05281733e-02 5.06536638e-02 + 5.07791751e-02 5.09047064e-02 5.10302569e-02 5.11558258e-02 5.12814124e-02 + 5.14070160e-02 5.15326357e-02 5.16582709e-02 5.17839208e-02 5.19095847e-02 + 5.20352618e-02 5.21609513e-02 5.22866525e-02 5.24123647e-02 5.25380871e-02 + 5.26638190e-02 5.27895597e-02 5.29153083e-02 5.30410642e-02 5.31668266e-02 + 5.32925947e-02 5.34183680e-02 5.35441455e-02 5.36699265e-02 5.37957104e-02 + 5.39214964e-02 5.40472838e-02 5.41730717e-02 5.42988596e-02 5.44246466e-02 + 5.45504321e-02 5.46762153e-02 5.48019954e-02 5.49277718e-02 5.50535437e-02 + 5.51793104e-02 5.53050712e-02 5.54308254e-02 5.55565722e-02 5.56823109e-02 + 5.58080407e-02 5.59337611e-02 5.60594712e-02 5.61851704e-02 5.63108578e-02 + 5.64365329e-02 5.65621949e-02 5.66878431e-02 5.68134767e-02 5.69390952e-02 + 5.70646976e-02 5.71902835e-02 5.73158519e-02 5.74414024e-02 5.75669340e-02 + 5.76924462e-02 5.78179382e-02 5.79434094e-02 5.80688590e-02 5.81942863e-02 + 5.83196907e-02 5.84450715e-02 5.85704278e-02 5.86957592e-02 5.88210648e-02 + 5.89463440e-02 5.90715962e-02 5.91968205e-02 5.93220163e-02 5.94471830e-02 + 5.95723199e-02 5.96974262e-02 5.98225013e-02 5.99475445e-02 6.00725552e-02 + 6.01975327e-02 6.03224762e-02 6.04473851e-02 6.05722588e-02 6.06970966e-02 + 6.08218978e-02 6.09466617e-02 6.10713877e-02 6.11960751e-02 6.13207233e-02 + 6.14453315e-02 6.15698992e-02 6.16944256e-02 6.18189101e-02 6.19433521e-02 + 6.20677509e-02 6.21921059e-02 6.23164163e-02 6.24406816e-02 6.25649011e-02 + 6.26890741e-02 6.28132001e-02 6.29372783e-02 6.30613081e-02 6.31852889e-02 + 6.33092201e-02 6.34331010e-02 6.35569309e-02 6.36807093e-02 6.38044355e-02 + 6.39281089e-02 6.40517288e-02 6.41752947e-02 6.42988058e-02 6.44222616e-02 + 6.45456615e-02 6.46690048e-02 6.47922909e-02 6.49155192e-02 6.50386891e-02 + 6.51617999e-02 6.52848511e-02 6.54078420e-02 6.55307721e-02 6.56536406e-02 + 6.57764471e-02 6.58991910e-02 6.60218715e-02 6.61444881e-02 6.62670403e-02 + 6.63895274e-02 6.65119488e-02 6.66343039e-02 6.67565921e-02 6.68788129e-02 + 6.70009657e-02 6.71230499e-02 6.72450648e-02 6.73670099e-02 6.74888847e-02 + 6.76106885e-02 6.77324208e-02 6.78540809e-02 6.79756684e-02 6.80971826e-02 + 6.82186230e-02 6.83399891e-02 6.84612801e-02 6.85824957e-02 6.87036351e-02 + 6.88246979e-02 6.89456835e-02 6.90665913e-02 6.91874209e-02 6.93081715e-02 + 6.94288427e-02 6.95494340e-02 6.96699447e-02 6.97903744e-02 6.99107224e-02 + 7.00309883e-02 7.01511715e-02 7.02712715e-02 7.03912876e-02 7.05112195e-02 + 7.06310666e-02 7.07508283e-02 7.08705040e-02 7.09900934e-02 7.11095958e-02 + 7.12290107e-02 7.13483377e-02 7.14675761e-02 7.15867255e-02 7.17057853e-02 + 7.18247551e-02 7.19436343e-02 7.20624225e-02 7.21811190e-02 7.22997234e-02 + 7.24182353e-02 7.25366540e-02 7.26549791e-02 7.27732102e-02 7.28913466e-02 + 7.30093879e-02 7.31273337e-02 7.32451834e-02 7.33629365e-02 7.34805926e-02 + 7.35981511e-02 7.37156116e-02 7.38329737e-02 7.39502367e-02 7.40674004e-02 + 7.41844640e-02 7.43014273e-02 7.44182898e-02 7.45350509e-02 7.46517101e-02 + 7.47682672e-02 7.48847215e-02 7.50010726e-02 7.51173201e-02 7.52334634e-02 + 7.53495022e-02 7.54654360e-02 7.55812644e-02 7.56969868e-02 7.58126029e-02 + 7.59281122e-02 7.60435142e-02 7.61588086e-02 7.62739948e-02 7.63890725e-02 + 7.65040412e-02 7.66189005e-02 7.67336500e-02 7.68482891e-02 7.69628176e-02 + 7.70772349e-02 7.71915407e-02 7.73057346e-02 7.74198160e-02 7.75337846e-02 + 7.76476400e-02 7.77613818e-02 7.78750096e-02 7.79885229e-02 7.81019214e-02 + 7.82152046e-02 7.83283722e-02 7.84414237e-02 7.85543587e-02 7.86671770e-02 + 7.87798779e-02 7.88924613e-02 7.90049266e-02 7.91172736e-02 7.92295017e-02 + 7.93416107e-02 7.94536001e-02 7.95654696e-02 7.96772188e-02 7.97888473e-02 + 7.99003547e-02 8.00117407e-02 8.01230050e-02 8.02341470e-02 8.03451666e-02 + 8.04560632e-02 8.05668367e-02 8.06774865e-02 8.07880123e-02 8.08984138e-02 + 8.10086907e-02 8.11188426e-02 8.12288690e-02 8.13387698e-02 8.14485445e-02 + 8.15581929e-02 8.16677145e-02 8.17771090e-02 8.18863761e-02 8.19955155e-02 + 8.21045268e-02 8.22134097e-02 8.23221639e-02 8.24307890e-02 8.25392847e-02 + 8.26476508e-02 8.27558868e-02 8.28639925e-02 8.29719676e-02 8.30798116e-02 + 8.31875245e-02 8.32951057e-02 8.34025550e-02 8.35098722e-02 8.36170568e-02 + 8.37241087e-02 8.38310274e-02 8.39378128e-02 8.40444645e-02 8.41509822e-02 + 8.42573656e-02 8.43636145e-02 8.44697286e-02 8.45757075e-02 8.46815510e-02 + 8.47872588e-02 8.48928306e-02 8.49982662e-02 8.51035653e-02 8.52087276e-02 + 8.53137528e-02 8.54186407e-02 8.55233910e-02 8.56280034e-02 8.57324777e-02 + 8.58368136e-02 8.59410109e-02 8.60450693e-02 8.61489885e-02 8.62527683e-02 + 8.63564085e-02 8.64599088e-02 8.65632689e-02 8.66664887e-02 8.67695678e-02 + 8.68725060e-02 8.69753031e-02 8.70779589e-02 8.71804730e-02 8.72828454e-02 + 8.73850757e-02 8.74871638e-02 8.75891093e-02 8.76909121e-02 8.77925720e-02 + 8.78940887e-02 8.79954620e-02 8.80966917e-02 8.81977776e-02 8.82987195e-02 + 8.83995171e-02 8.85001703e-02 8.86006788e-02 8.87010425e-02 8.88012610e-02 + 8.89013344e-02 8.90012622e-02 8.91010444e-02 8.92006808e-02 8.93001711e-02 + 8.93995152e-02 8.94987128e-02 8.95977638e-02 8.96966680e-02 8.97954252e-02 + 8.98940353e-02 8.99924980e-02 9.00908132e-02 9.01889806e-02 9.02870002e-02 + 9.03848718e-02 9.04825951e-02 9.05801701e-02 9.06775965e-02 9.07748742e-02 + 9.08720029e-02 9.09689827e-02 9.10658132e-02 9.11624944e-02 9.12590261e-02 + 9.13554081e-02 9.14516403e-02 9.15477225e-02 9.16436547e-02 9.17394365e-02 + 9.18350679e-02 9.19305488e-02 9.20258790e-02 9.21210584e-02 9.22160868e-02 + 9.23109641e-02 9.24056902e-02 9.25002649e-02 9.25946881e-02 9.26889596e-02 + 9.27830795e-02 9.28770474e-02 9.29708634e-02 9.30645273e-02 9.31580389e-02 + 9.32513981e-02 9.33446049e-02 9.34376591e-02 9.35305607e-02 9.36233094e-02 + 9.37159052e-02 9.38083480e-02 9.39006377e-02 9.39927741e-02 9.40847572e-02 + 9.41765869e-02 9.42682631e-02 9.43597856e-02 9.44511545e-02 9.45423695e-02 + 9.46334306e-02 9.47243378e-02 9.48150908e-02 9.49056898e-02 9.49961344e-02 + 9.50864248e-02 9.51765607e-02 9.52665422e-02 9.53563691e-02 9.54460414e-02 + 9.55355589e-02 9.56249217e-02 9.57141296e-02 9.58031826e-02 9.58920806e-02 + 9.59808236e-02 9.60694114e-02 9.61578440e-02 9.62461215e-02 9.63342436e-02 + 9.64222103e-02 9.65100217e-02 9.65976776e-02 9.66851779e-02 9.67725227e-02 + 9.68597119e-02 9.69467454e-02 9.70336232e-02 9.71203453e-02 9.72069115e-02 + 9.72933219e-02 9.73795765e-02 9.74656751e-02 9.75516178e-02 9.76374044e-02 + 9.77230351e-02 9.78085097e-02 9.78938282e-02 9.79789907e-02 9.80639969e-02 + 9.81488471e-02 9.82335410e-02 9.83180787e-02 9.84024602e-02 9.84866854e-02 + 9.85707544e-02 9.86546671e-02 9.87384235e-02 9.88220236e-02 9.89054674e-02 + 9.89887548e-02 9.90718859e-02 9.91548606e-02 9.92376790e-02 9.93203411e-02 + 9.94028467e-02 9.94851960e-02 9.95673890e-02 9.96494256e-02 9.97313058e-02 + 9.98130297e-02 9.98945972e-02 9.99760084e-02 1.00057263e-01 1.00138362e-01 + 1.00219304e-01 1.00300090e-01 1.00380720e-01 1.00461193e-01 1.00541510e-01 + 1.00621671e-01 1.00701676e-01 1.00781524e-01 1.00861217e-01 1.00940753e-01 + 1.01020133e-01 1.01099357e-01 1.01178425e-01 1.01257337e-01 1.01336093e-01 + 1.01414693e-01 1.01493137e-01 1.01571425e-01 1.01649557e-01 1.01727534e-01 + 1.01805354e-01 1.01883019e-01 1.01960528e-01 1.02037882e-01 1.02115080e-01 + 1.02192122e-01 1.02269009e-01 1.02345741e-01 1.02422317e-01 1.02498737e-01 + 1.02575002e-01 1.02651112e-01 1.02727067e-01 1.02802867e-01 1.02878511e-01 + 1.02954001e-01 1.03029335e-01 1.03104515e-01 1.03179540e-01 1.03254410e-01 + 1.03329125e-01 1.03403685e-01 1.03478091e-01 1.03552343e-01 1.03626440e-01 + 1.03700382e-01 1.03774170e-01 1.03847804e-01 1.03921284e-01 1.03994610e-01 + 1.04067782e-01 1.04140799e-01 1.04213663e-01 1.04286373e-01 1.04358930e-01 + 1.04431332e-01 1.04503582e-01 1.04575677e-01 1.04647620e-01 1.04719409e-01 + 1.04791045e-01 1.04862528e-01 1.04933857e-01 1.05005034e-01 1.05076058e-01 + 1.05146930e-01 1.05217648e-01 1.05288214e-01 1.05358628e-01 1.05428889e-01 + 1.05498998e-01 1.05568955e-01 1.05638760e-01 1.05708413e-01 1.05777914e-01 + 1.05847263e-01 1.05916461e-01 1.05985507e-01 1.06054401e-01 1.06123145e-01 + 1.06191737e-01 1.06260178e-01 1.06328468e-01 1.06396607e-01 1.06464595e-01 + 1.06532433e-01 1.06600120e-01 1.06667657e-01 1.06735043e-01 1.06802280e-01 + 1.06869366e-01 1.06936302e-01 1.07003089e-01 1.07069725e-01 1.07136212e-01 + 1.07202550e-01 1.07268738e-01 1.07334777e-01 1.07400667e-01 1.07466408e-01 + 1.07532001e-01 1.07597444e-01 1.07662739e-01 1.07727885e-01 1.07792884e-01 + 1.07857734e-01 1.07922436e-01 1.07986990e-01 1.08051396e-01 1.08115655e-01 + 1.08179766e-01 1.08243729e-01 1.08307546e-01 1.08371215e-01 1.08434738e-01 + 1.08498114e-01 1.08561343e-01 1.08624425e-01 1.08687361e-01 1.08750151e-01 + 1.08812795e-01 1.08875293e-01 1.08937645e-01 1.08999851e-01 1.09061912e-01 + 1.09123828e-01 1.09185598e-01 1.09247224e-01 1.09308704e-01 1.09370040e-01 + 1.09431231e-01 1.09492278e-01 1.09553180e-01 1.09613938e-01 1.09674553e-01 + 1.09735023e-01 1.09795350e-01 1.09855533e-01 1.09915573e-01 1.09975470e-01 + 1.10035224e-01 1.10094835e-01 1.10154303e-01 1.10213628e-01 1.10272812e-01 + 1.10331853e-01 1.10390752e-01 1.10449509e-01 1.10508124e-01 1.10566598e-01 + 1.10624931e-01 1.10683122e-01 1.10741172e-01 1.10799082e-01 1.10856850e-01 + 1.10914478e-01 1.10971966e-01 1.11029314e-01 1.11086521e-01 1.11143589e-01 + 1.11200517e-01 1.11257305e-01 1.11313955e-01 1.11370465e-01 1.11426836e-01 + 1.11483068e-01 1.11539162e-01 1.11595117e-01 1.11650934e-01 1.11706612e-01 + 1.11762153e-01 1.11817557e-01 1.11872822e-01 1.11927951e-01 1.11982942e-01 + 1.12037796e-01 1.12092513e-01 1.12147094e-01 1.12201538e-01 1.12255846e-01 + 1.12310017e-01 1.12364053e-01 1.12417954e-01 1.12471718e-01 1.12525348e-01 + 1.12578842e-01 1.12632201e-01 1.12685425e-01 1.12738515e-01 1.12791471e-01 + 1.12844292e-01 1.12896979e-01 1.12949532e-01 1.13001952e-01 1.13054238e-01 + 1.13106391e-01 1.13158411e-01 1.13210299e-01 1.13262053e-01 1.13313675e-01 + 1.13365165e-01 1.13416522e-01 1.13467748e-01 1.13518842e-01 1.13569804e-01 + 1.13620635e-01 1.13671335e-01 1.13721904e-01 1.13772343e-01 1.13822651e-01 + 1.13872828e-01 1.13922876e-01 1.13972793e-01 1.14022581e-01 1.14072239e-01 + 1.14121768e-01 1.14171168e-01 1.14220439e-01 1.14269581e-01 1.14318594e-01 + 1.14367480e-01 1.14416237e-01 1.14464866e-01 1.14513368e-01 1.14561742e-01 + 1.14609988e-01 1.14658108e-01 1.14706101e-01 1.14753967e-01 1.14801706e-01 + 1.14849320e-01 1.14896807e-01 1.14944168e-01 1.14991404e-01 1.15038514e-01 + 1.15085499e-01 1.15132359e-01 1.15179094e-01 1.15225704e-01 1.15272190e-01 + 1.15318552e-01 1.15364790e-01 1.15410904e-01 1.15456894e-01 1.15502761e-01 + 1.15548505e-01 1.15594126e-01 1.15639624e-01 1.15685000e-01 1.15730253e-01 + 1.15775384e-01 1.15820394e-01 1.15865281e-01 1.15910047e-01 1.15954692e-01 + 1.15999216e-01 1.16043619e-01 1.16087901e-01 1.16132063e-01 1.16176105e-01 + 1.16220027e-01 1.16263828e-01 1.16307511e-01 1.16351074e-01 1.16394518e-01 + 1.16437842e-01 1.16481049e-01 1.16524136e-01 1.16567106e-01 1.16609957e-01 + 1.16652690e-01 1.16695306e-01 1.16737805e-01 1.16780186e-01 1.16822450e-01 + 1.16864597e-01 1.16906628e-01 1.16948543e-01 1.16990341e-01 1.17032023e-01 + 1.17073590e-01 1.17115041e-01 1.17156377e-01 1.17197598e-01 1.17238704e-01 + 1.17279696e-01 1.17320573e-01 1.17361336e-01 1.17401984e-01 1.17442520e-01 + 1.17482941e-01 1.17523249e-01 1.17563445e-01 1.17603527e-01 1.17643497e-01 + 1.17683354e-01 1.17723099e-01 1.17762732e-01 1.17802253e-01 1.17841662e-01 + 1.17880961e-01 1.17920148e-01 1.17959224e-01 1.17998189e-01 1.18037044e-01 + 0.00000000e+00 7.21069637e-07 2.87393769e-06 6.44313909e-06 1.14132704e-05 + 1.77689899e-05 2.54950175e-05 3.45761350e-05 4.49971859e-05 5.67430756e-05 + 6.97987714e-05 8.41493023e-05 9.97797595e-05 1.16675296e-04 1.34821127e-04 + 1.54202530e-04 1.74804843e-04 1.96613468e-04 2.19613868e-04 2.43791569e-04 + 2.69132158e-04 2.95621286e-04 3.23244664e-04 3.51988067e-04 3.81837331e-04 + 4.12778355e-04 4.44797101e-04 4.77879591e-04 5.12011912e-04 5.47180212e-04 + 5.83370701e-04 6.20569653e-04 6.58763402e-04 6.97938346e-04 7.38080946e-04 + 7.79177724e-04 8.21215265e-04 8.64180217e-04 9.08059290e-04 9.52839256e-04 + 9.98506949e-04 1.04504927e-03 1.09245317e-03 1.14070568e-03 1.18979389e-03 + 1.23970493e-03 1.29042603e-03 1.34194444e-03 1.39424752e-03 1.44732264e-03 + 1.50115728e-03 1.55573896e-03 1.61105526e-03 1.66709382e-03 1.72384237e-03 + 1.78128866e-03 1.83942054e-03 1.89822590e-03 1.95769270e-03 2.01780896e-03 + 2.07856277e-03 2.13994227e-03 2.20193567e-03 2.26453125e-03 2.32771733e-03 + 2.39148232e-03 2.45581467e-03 2.52070290e-03 2.58613560e-03 2.65210140e-03 + 2.71858902e-03 2.78558723e-03 2.85308485e-03 2.92107079e-03 2.98953399e-03 + 3.05846348e-03 3.12784833e-03 3.19767769e-03 3.26794076e-03 3.33862681e-03 + 3.40972516e-03 3.48122520e-03 3.55311639e-03 3.62538824e-03 3.69803032e-03 + 3.77103228e-03 3.84438380e-03 3.91807465e-03 3.99209466e-03 4.06643370e-03 + 4.14108172e-03 4.21602872e-03 4.29126479e-03 4.36678003e-03 4.44256466e-03 + 4.51860891e-03 4.59490310e-03 4.67143761e-03 4.74820286e-03 4.82518937e-03 + 4.90238769e-03 4.97978843e-03 5.05738227e-03 5.13515997e-03 5.21311231e-03 + 5.29123016e-03 5.36950445e-03 5.44792616e-03 5.52648633e-03 5.60517607e-03 + 5.68398655e-03 5.76290899e-03 5.84193467e-03 5.92105496e-03 6.00026124e-03 + 6.07954500e-03 6.15889775e-03 6.23831109e-03 6.31777667e-03 6.39728618e-03 + 6.47683141e-03 6.55640417e-03 6.63599636e-03 6.71559991e-03 6.79520684e-03 + 6.87480922e-03 6.95439916e-03 7.03396886e-03 7.11351055e-03 7.19301654e-03 + 7.27247919e-03 7.35189093e-03 7.43124423e-03 7.51053163e-03 7.58974574e-03 + 7.66887920e-03 7.74792473e-03 7.82687511e-03 7.90572317e-03 7.98446180e-03 + 8.06308394e-03 8.14158262e-03 8.21995088e-03 8.29818186e-03 8.37626873e-03 + 8.45420474e-03 8.53198318e-03 8.60959741e-03 8.68704084e-03 8.76430693e-03 + 8.84138922e-03 8.91828129e-03 8.99497678e-03 9.07146939e-03 9.14775287e-03 + 9.22382104e-03 9.29966777e-03 9.37528698e-03 9.45067266e-03 9.52581884e-03 + 9.60071962e-03 9.67536915e-03 9.74976163e-03 9.82389135e-03 9.89775260e-03 + 9.97133977e-03 1.00446473e-02 1.01176696e-02 1.01904014e-02 1.02628371e-02 + 1.03349714e-02 1.04067991e-02 1.04783149e-02 1.05495136e-02 1.06203901e-02 + 1.06909393e-02 1.07611563e-02 1.08310359e-02 1.09005734e-02 1.09697639e-02 + 1.10386026e-02 1.11070846e-02 1.11752055e-02 1.12429604e-02 1.13103449e-02 + 1.13773543e-02 1.14439842e-02 1.15102303e-02 1.15760880e-02 1.16415531e-02 + 1.17066214e-02 1.17712886e-02 1.18355505e-02 1.18994031e-02 1.19628422e-02 + 1.20258640e-02 1.20884644e-02 1.21506395e-02 1.22123856e-02 1.22736987e-02 + 1.23345752e-02 1.23950113e-02 1.24550035e-02 1.25145481e-02 1.25736416e-02 + 1.26322805e-02 1.26904613e-02 1.27481808e-02 1.28054355e-02 1.28622221e-02 + 1.29185375e-02 1.29743784e-02 1.30297417e-02 1.30846244e-02 1.31390233e-02 + 1.31929355e-02 1.32463581e-02 1.32992881e-02 1.33517228e-02 1.34036593e-02 + 1.34550949e-02 1.35060269e-02 1.35564527e-02 1.36063696e-02 1.36557752e-02 + 1.37046669e-02 1.37530423e-02 1.38008989e-02 1.38482344e-02 1.38950466e-02 + 1.39413330e-02 1.39870916e-02 1.40323202e-02 1.40770166e-02 1.41211787e-02 + 1.41648046e-02 1.42078922e-02 1.42504396e-02 1.42924450e-02 1.43339064e-02 + 1.43748221e-02 1.44151903e-02 1.44550094e-02 1.44942776e-02 1.45329934e-02 + 1.45711551e-02 1.46087613e-02 1.46458104e-02 1.46823011e-02 1.47182318e-02 + 1.47536014e-02 1.47884084e-02 1.48226516e-02 1.48563299e-02 1.48894419e-02 + 1.49219866e-02 1.49539629e-02 1.49853697e-02 1.50162061e-02 1.50464710e-02 + 1.50761636e-02 1.51052830e-02 1.51338283e-02 1.51617988e-02 1.51891936e-02 + 1.52160122e-02 1.52422538e-02 1.52679177e-02 1.52930035e-02 1.53175105e-02 + 1.53414383e-02 1.53647864e-02 1.53875543e-02 1.54097417e-02 1.54313483e-02 + 1.54523737e-02 1.54728176e-02 1.54926799e-02 1.55119603e-02 1.55306587e-02 + 1.55487751e-02 1.55663092e-02 1.55832611e-02 1.55996309e-02 1.56154184e-02 + 1.56306239e-02 1.56452475e-02 1.56592892e-02 1.56727493e-02 1.56856281e-02 + 1.56979258e-02 1.57096426e-02 1.57207790e-02 1.57313354e-02 1.57413121e-02 + 1.57507095e-02 1.57595283e-02 1.57677688e-02 1.57754317e-02 1.57825176e-02 + 1.57890270e-02 1.57949607e-02 1.58003193e-02 1.58051036e-02 1.58093144e-02 + 1.58129524e-02 1.58160185e-02 1.58185135e-02 1.58204384e-02 1.58217941e-02 + 1.58225815e-02 1.58228017e-02 1.58224557e-02 1.58215446e-02 1.58200695e-02 + 1.58180314e-02 1.58154316e-02 1.58122713e-02 1.58085517e-02 1.58042740e-02 + 1.57994396e-02 1.57940497e-02 1.57881058e-02 1.57816092e-02 1.57745612e-02 + 1.57669635e-02 1.57588174e-02 1.57501244e-02 1.57408862e-02 1.57311041e-02 + 1.57207799e-02 1.57099152e-02 1.56985116e-02 1.56865708e-02 1.56740944e-02 + 1.56610844e-02 1.56475423e-02 1.56334700e-02 1.56188694e-02 1.56037422e-02 + 1.55880904e-02 1.55719159e-02 1.55552205e-02 1.55380063e-02 1.55202751e-02 + 1.55020292e-02 1.54832704e-02 1.54640008e-02 1.54442226e-02 1.54239378e-02 + 1.54031486e-02 1.53818571e-02 1.53600655e-02 1.53377761e-02 1.53149911e-02 + 1.52917128e-02 1.52679433e-02 1.52436851e-02 1.52189406e-02 1.51937119e-02 + 1.51680016e-02 1.51418120e-02 1.51151455e-02 1.50880047e-02 1.50603920e-02 + 1.50323098e-02 1.50037607e-02 1.49747473e-02 1.49452721e-02 1.49153377e-02 + 1.48849466e-02 1.48541016e-02 1.48228052e-02 1.47910602e-02 1.47588692e-02 + 1.47262349e-02 1.46931601e-02 1.46596475e-02 1.46256998e-02 1.45913200e-02 + 1.45565107e-02 1.45212748e-02 1.44856151e-02 1.44495346e-02 1.44130360e-02 + 1.43761224e-02 1.43387965e-02 1.43010615e-02 1.42629201e-02 1.42243754e-02 + 1.41854304e-02 1.41460881e-02 1.41063514e-02 1.40662236e-02 1.40257075e-02 + 1.39848063e-02 1.39435230e-02 1.39018609e-02 1.38598229e-02 1.38174123e-02 + 1.37746322e-02 1.37314857e-02 1.36879760e-02 1.36441064e-02 1.35998801e-02 + 1.35553002e-02 1.35103700e-02 1.34650928e-02 1.34194718e-02 1.33735104e-02 + 1.33272118e-02 1.32805793e-02 1.32336162e-02 1.31863260e-02 1.31387118e-02 + 1.30907772e-02 1.30425254e-02 1.29939598e-02 1.29450839e-02 1.28959010e-02 + 1.28464146e-02 1.27966281e-02 1.27465449e-02 1.26961685e-02 1.26455023e-02 + 1.25945499e-02 1.25433146e-02 1.24918000e-02 1.24400097e-02 1.23879470e-02 + 1.23356156e-02 1.22830189e-02 1.22301605e-02 1.21770439e-02 1.21236728e-02 + 1.20700506e-02 1.20161810e-02 1.19620674e-02 1.19077136e-02 1.18531231e-02 + 1.17982995e-02 1.17432464e-02 1.16879675e-02 1.16324664e-02 1.15767466e-02 + 1.15208119e-02 1.14646658e-02 1.14083121e-02 1.13517544e-02 1.12949964e-02 + 1.12380417e-02 1.11808940e-02 1.11235569e-02 1.10660343e-02 1.10083296e-02 + 1.09504468e-02 1.08923894e-02 1.08341611e-02 1.07757657e-02 1.07172069e-02 + 1.06584883e-02 1.05996138e-02 1.05405870e-02 1.04814116e-02 1.04220914e-02 + 1.03626301e-02 1.03030315e-02 1.02432992e-02 1.01834370e-02 1.01234487e-02 + 1.00633380e-02 1.00031086e-02 9.94276435e-03 9.88230889e-03 9.82174601e-03 + 9.76107946e-03 9.70031298e-03 9.63945032e-03 9.57849524e-03 9.51745148e-03 + 9.45632281e-03 9.39511296e-03 9.33382569e-03 9.27246474e-03 9.21103388e-03 + 9.14953684e-03 9.08797738e-03 9.02635924e-03 8.96468616e-03 8.90296189e-03 + 8.84119018e-03 8.77937476e-03 8.71751937e-03 8.65562775e-03 8.59370363e-03 + 8.53175075e-03 8.46977283e-03 8.40777359e-03 8.34575677e-03 8.28372608e-03 + 8.22168524e-03 8.15963796e-03 8.09758795e-03 8.03553892e-03 7.97349457e-03 + 7.91145859e-03 7.84943468e-03 7.78742653e-03 7.72543782e-03 7.66347224e-03 + 7.60153345e-03 7.53962513e-03 7.47775093e-03 7.41591453e-03 7.35411956e-03 + 7.29236969e-03 7.23066854e-03 7.16901976e-03 7.10742698e-03 7.04589381e-03 + 6.98442388e-03 6.92302079e-03 6.86168815e-03 6.80042955e-03 6.73924858e-03 + 6.67814882e-03 6.61713385e-03 6.55620723e-03 6.49537252e-03 6.43463328e-03 + 6.37399304e-03 6.31345533e-03 6.25302370e-03 6.19270165e-03 6.13249269e-03 + 6.07240032e-03 6.01242804e-03 5.95257933e-03 5.89285766e-03 5.83326649e-03 + 5.77380928e-03 5.71448947e-03 5.65531051e-03 5.59627581e-03 5.53738879e-03 + 5.47865285e-03 5.42007139e-03 5.36164780e-03 5.30338545e-03 5.24528770e-03 + 5.18735790e-03 5.12959940e-03 5.07201552e-03 5.01460958e-03 4.95738490e-03 + 4.90034477e-03 4.84349247e-03 4.78683128e-03 4.73036445e-03 4.67409524e-03 + 4.61802688e-03 4.56216259e-03 4.50650560e-03 4.45105909e-03 4.39582627e-03 + 4.34081029e-03 4.28601432e-03 4.23144152e-03 4.17709501e-03 4.12297792e-03 + 4.06909335e-03 4.01544441e-03 3.96203417e-03 3.90886570e-03 3.85594206e-03 + 3.80326629e-03 3.75084141e-03 3.69867044e-03 3.64675637e-03 3.59510219e-03 + 3.54371086e-03 3.49258535e-03 3.44172859e-03 3.39114350e-03 3.34083300e-03 + 3.29079998e-03 3.24104732e-03 3.19157789e-03 3.14239453e-03 3.09350009e-03 + 3.04489737e-03 2.99658919e-03 2.94857832e-03 2.90086754e-03 2.85345962e-03 + 2.80635727e-03 2.75956324e-03 2.71308022e-03 2.66691091e-03 2.62105798e-03 + 2.57552409e-03 2.53031188e-03 2.48542398e-03 2.44086299e-03 2.39663151e-03 + 2.35273210e-03 2.30916734e-03 2.26593975e-03 2.22305186e-03 2.18050618e-03 + 2.13830519e-03 2.09645137e-03 2.05494716e-03 2.01379501e-03 1.97299733e-03 + 1.93255653e-03 1.89247498e-03 1.85275505e-03 1.81339909e-03 1.77440942e-03 + 1.73578836e-03 1.69753820e-03 1.65966122e-03 1.62215965e-03 1.58503576e-03 + 1.54829175e-03 1.51192982e-03 1.47595216e-03 1.44036093e-03 1.40515827e-03 + 1.37034631e-03 1.33592716e-03 1.30190290e-03 1.26827560e-03 1.23504731e-03 + 1.20222006e-03 1.16979586e-03 1.13777671e-03 1.10616457e-03 1.07496140e-03 + 1.04416914e-03 1.01378970e-03 9.83824969e-04 9.54276828e-04 9.25147131e-04 + 8.96437715e-04 8.68150396e-04 8.40286972e-04 8.12849218e-04 7.85838891e-04 + 7.59257730e-04 7.33107451e-04 7.07389751e-04 6.82106308e-04 6.57258779e-04 + 6.32848801e-04 6.08877990e-04 5.85347945e-04 5.62260240e-04 5.39616433e-04 + 5.17418060e-04 4.95666636e-04 4.74363657e-04 4.53510597e-04 4.33108912e-04 + 4.13160036e-04 3.93665382e-04 3.74626344e-04 3.56044295e-04 3.37920586e-04 + 3.20256549e-04 3.03053496e-04 2.86312717e-04 2.70035481e-04 2.54223038e-04 + 2.38876617e-04 2.23997425e-04 2.09586650e-04 1.95645457e-04 1.82174994e-04 + 1.69176383e-04 1.56650731e-04 1.44599120e-04 1.33022613e-04 1.21922252e-04 + 1.11299058e-04 1.01154031e-04 9.14881514e-05 8.23023770e-05 7.35976459e-05 + 6.53748752e-05 5.76349612e-05 5.03787793e-05 4.36071839e-05 3.73210090e-05 + 3.15210675e-05 2.62081515e-05 2.13830322e-05 1.70464604e-05 1.31991656e-05 + 9.84185676e-06 6.97522210e-06 4.59992895e-06 2.71662394e-06 1.32593293e-06 + 4.28461042e-07 2.47926797e-08 1.15491538e-07 7.01100617e-07 1.78214224e-06 + 3.35911808e-06 5.43250917e-06 8.00277591e-06 1.10703581e-05 1.46356750e-05 + 1.86991254e-05 2.32610873e-05 2.83219184e-05 3.38819559e-05 3.99415166e-05 + 4.65008967e-05 5.35603723e-05 6.11201988e-05 6.91806116e-05 7.77418256e-05 + 8.68040355e-05 9.63674158e-05 1.06432121e-04 1.16998284e-04 1.28066021e-04 + 1.39635424e-04 1.51706568e-04 1.64279507e-04 1.77354274e-04 1.90930884e-04 + 2.05009331e-04 2.19589589e-04 2.34671614e-04 2.50255339e-04 2.66340680e-04 + 2.82927533e-04 3.00015773e-04 3.17605258e-04 3.35695825e-04 3.54287290e-04 + 3.73379453e-04 3.92972092e-04 4.13064968e-04 4.33657820e-04 4.54750370e-04 + 4.76342321e-04 4.98433355e-04 5.21023138e-04 5.44111315e-04 5.67697513e-04 + 5.91781339e-04 6.16362383e-04 6.41440216e-04 6.67014390e-04 6.93084439e-04 + 7.19649877e-04 7.46710203e-04 7.74264894e-04 8.02313411e-04 8.30855196e-04 + 8.59889675e-04 8.89416252e-04 9.19434318e-04 9.49943242e-04 9.80942378e-04 + 1.01243106e-03 1.04440861e-03 1.07687432e-03 1.10982748e-03 1.14326736e-03 + 1.17719320e-03 1.21160423e-03 1.24649967e-03 1.28187871e-03 1.31774054e-03 + 1.35408432e-03 1.39090920e-03 1.42821430e-03 1.46599875e-03 1.50426163e-03 + 1.54300203e-03 1.58221902e-03 1.62191164e-03 1.66207893e-03 1.70271991e-03 + 1.74383357e-03 1.78541889e-03 1.82747486e-03 1.87000043e-03 1.91299453e-03 + 1.95645609e-03 2.00038401e-03 2.04477720e-03 2.08963453e-03 2.13495485e-03 + 2.18073704e-03 2.22697990e-03 2.27368228e-03 2.32084296e-03 2.36846075e-03 + 2.41653443e-03 2.46506274e-03 2.51404445e-03 2.56347828e-03 2.61336297e-03 + 2.66369722e-03 2.71447972e-03 2.76570915e-03 2.81738418e-03 2.86950348e-03 + 2.92206567e-03 2.97506939e-03 3.02851326e-03 3.08239588e-03 3.13671584e-03 + 3.19147173e-03 3.24666210e-03 3.30228551e-03 3.35834052e-03 3.41482564e-03 + 3.47173940e-03 3.52908031e-03 3.58684686e-03 3.64503754e-03 3.70365083e-03 + 3.76268518e-03 3.82213906e-03 3.88201090e-03 3.94229914e-03 4.00300220e-03 + 4.06411848e-03 4.12564639e-03 4.18758433e-03 4.24993067e-03 4.31268378e-03 + 4.37584203e-03 4.43940377e-03 4.50336734e-03 4.56773109e-03 4.63249332e-03 + 4.69765237e-03 4.76320654e-03 4.82915413e-03 4.89549343e-03 4.96222273e-03 + 5.02934030e-03 5.09684441e-03 5.16473332e-03 5.23300528e-03 5.30165854e-03 + 5.37069134e-03 5.44010191e-03 5.50988847e-03 5.58004924e-03 5.65058244e-03 + 5.72148626e-03 5.79275891e-03 5.86439858e-03 5.93640345e-03 6.00877172e-03 + 6.08150155e-03 6.15459112e-03 6.22803858e-03 6.30184211e-03 6.37599985e-03 + 6.45050997e-03 6.52537060e-03 6.60057988e-03 6.67613596e-03 6.75203698e-03 + 6.82828105e-03 6.90486631e-03 6.98179088e-03 7.05905289e-03 7.13665044e-03 + 7.21458166e-03 7.29284466e-03 7.37143754e-03 7.45035841e-03 7.52960538e-03 + 7.60917656e-03 7.68907003e-03 7.76928391e-03 7.84981629e-03 7.93066527e-03 + 8.01182895e-03 8.09330541e-03 8.17509277e-03 8.25718910e-03 8.33959250e-03 + 8.42230108e-03 8.50531292e-03 8.58862611e-03 8.67223876e-03 8.75614896e-03 + 8.84035481e-03 8.92485441e-03 9.00964584e-03 9.09472723e-03 9.18009666e-03 + 9.26575225e-03 9.35169210e-03 9.43791432e-03 9.52441702e-03 9.61119832e-03 + 9.69825633e-03 9.78558918e-03 9.87319498e-03 9.96107188e-03 1.00492180e-02 + 1.01376315e-02 1.02263104e-02 1.03152530e-02 1.04044574e-02 1.04939217e-02 + 1.05836441e-02 1.06736228e-02 1.07638559e-02 1.08543416e-02 1.09450781e-02 + 1.10360636e-02 1.11272962e-02 1.12187742e-02 1.13104958e-02 1.14024591e-02 + 1.14946625e-02 1.15871040e-02 1.16797821e-02 1.17726948e-02 1.18658405e-02 + 1.19592175e-02 1.20528239e-02 1.21466580e-02 1.22407183e-02 1.23350028e-02 + 1.24295100e-02 1.25242382e-02 1.26191856e-02 1.27143506e-02 1.28097316e-02 + 1.29053269e-02 1.30011349e-02 1.30971539e-02 1.31933823e-02 1.32898186e-02 + 1.33864611e-02 1.34833083e-02 1.35803585e-02 1.36776103e-02 1.37750621e-02 + 1.38727123e-02 1.39705595e-02 1.40686021e-02 1.41668387e-02 1.42652677e-02 + 1.43638877e-02 1.44626973e-02 1.45616950e-02 1.46608794e-02 1.47602491e-02 + 1.48598027e-02 1.49595389e-02 1.50594562e-02 1.51595533e-02 1.52598289e-02 + 1.53602817e-02 1.54609104e-02 1.55617136e-02 1.56626903e-02 1.57638390e-02 + 1.58651585e-02 1.59666478e-02 1.60683054e-02 1.61701304e-02 1.62721215e-02 + 1.63742776e-02 1.64765975e-02 1.65790802e-02 1.66817246e-02 1.67845297e-02 + 1.68874943e-02 1.69906174e-02 1.70938981e-02 1.71973354e-02 1.73009283e-02 + 1.74046758e-02 1.75085771e-02 1.76126313e-02 1.77168374e-02 1.78211946e-02 + 1.79257022e-02 1.80303592e-02 1.81351648e-02 1.82401184e-02 1.83452192e-02 + 1.84504664e-02 1.85558594e-02 1.86613974e-02 1.87670799e-02 1.88729063e-02 + 1.89788758e-02 1.90849880e-02 1.91912422e-02 1.92976381e-02 1.94041749e-02 + 1.95108524e-02 1.96176701e-02 1.97246274e-02 1.98317241e-02 1.99389597e-02 + 2.00463340e-02 2.01538465e-02 2.02614971e-02 2.03692854e-02 2.04772113e-02 + 2.05852745e-02 2.06934748e-02 2.08018121e-02 2.09102863e-02 2.10188973e-02 + 2.11276450e-02 2.12365294e-02 2.13455506e-02 2.14547084e-02 2.15640031e-02 + 2.16734346e-02 2.17830032e-02 2.18927089e-02 2.20025519e-02 2.21125325e-02 + 2.22226510e-02 2.23329075e-02 2.24433024e-02 2.25538360e-02 2.26645088e-02 + 2.27753211e-02 2.28862734e-02 2.29973661e-02 2.31085997e-02 2.32199749e-02 + 2.33314922e-02 2.34431522e-02 2.35549555e-02 2.36669028e-02 2.37789949e-02 + 2.38912325e-02 2.40036163e-02 2.41161473e-02 2.42288263e-02 2.43416541e-02 + 2.44546317e-02 2.45677602e-02 2.46810404e-02 2.47944734e-02 2.49080604e-02 + 2.50218024e-02 2.51357006e-02 2.52497562e-02 2.53639704e-02 2.54783445e-02 + 2.55928799e-02 2.57075779e-02 2.58224398e-02 2.59374671e-02 2.60526613e-02 + 2.61680239e-02 2.62835565e-02 2.63992605e-02 2.65151378e-02 2.66311899e-02 + 2.67474187e-02 2.68638257e-02 2.69804129e-02 2.70971821e-02 2.72141351e-02 + 2.73312740e-02 2.74486006e-02 2.75661170e-02 2.76838253e-02 2.78017276e-02 + 2.79198259e-02 2.80381226e-02 2.81566198e-02 2.82753198e-02 2.83942249e-02 + 2.85133376e-02 2.86326602e-02 2.87521952e-02 2.88719451e-02 2.89919124e-02 + 2.91120998e-02 2.92325099e-02 2.93531454e-02 2.94740090e-02 2.95951036e-02 + 2.97164319e-02 2.98379969e-02 2.99598014e-02 3.00818485e-02 3.02041411e-02 + 3.03266825e-02 3.04494756e-02 3.05725236e-02 3.06958298e-02 3.08193975e-02 + 3.09432300e-02 3.10673306e-02 3.11917028e-02 3.13163500e-02 3.14412758e-02 + 3.15664837e-02 3.16919774e-02 3.18177606e-02 3.19438369e-02 3.20702102e-02 + 3.21968843e-02 3.23238631e-02 3.24511504e-02 3.25787504e-02 3.27066671e-02 + 3.28349045e-02 3.29634668e-02 3.30923581e-02 3.32215829e-02 3.33511453e-02 + 3.34810498e-02 3.36113007e-02 3.37419026e-02 3.38728600e-02 3.40041774e-02 + 3.41358595e-02 3.42679109e-02 3.44003366e-02 3.45331412e-02 3.46663296e-02 + 3.47999067e-02 3.49338776e-02 3.50682472e-02 3.52030207e-02 3.53382032e-02 + 3.54737998e-02 3.56098160e-02 3.57462569e-02 3.58831280e-02 3.60204348e-02 + 3.61581826e-02 3.62963771e-02 3.64350239e-02 3.65741287e-02 3.67136971e-02 + 3.68537351e-02 3.69942484e-02 3.71352429e-02 3.72767247e-02 3.74186997e-02 + 3.75611742e-02 3.77041541e-02 3.78476458e-02 3.79916555e-02 3.81361895e-02 + 3.82812543e-02 3.84268564e-02 3.85730022e-02 3.87196983e-02 3.88669514e-02 + 3.90147683e-02 3.91631556e-02 3.93121202e-02 3.94616691e-02 3.96118091e-02 + 3.97625473e-02 3.99138909e-02 4.00658470e-02 4.02184227e-02 4.03716254e-02 + 4.05254624e-02 4.06799412e-02 4.08350692e-02 4.09908540e-02 4.11473032e-02 + 4.13044244e-02 4.14622254e-02 4.16207140e-02 4.17798981e-02 4.19397857e-02 + 4.21003846e-02 4.22617031e-02 4.24237492e-02 4.25865311e-02 4.27500572e-02 + 4.29143358e-02 4.30793752e-02 4.32451840e-02 4.34117706e-02 4.35791438e-02 + 4.37473122e-02 4.39162845e-02 4.40860696e-02 4.42566763e-02 4.44281136e-02 + 4.46003905e-02 4.47735162e-02 4.49474997e-02 4.51223503e-02 4.52980774e-02 + 4.54746902e-02 4.56521983e-02 4.58306111e-02 4.60099382e-02 4.61901893e-02 + 4.63713741e-02 4.65535024e-02 4.67365841e-02 4.69206290e-02 4.71056473e-02 + 4.72916489e-02 4.74786441e-02 4.76666430e-02 4.78556559e-02 4.80456933e-02 + 4.82367655e-02 4.84288831e-02 4.86220567e-02 4.88162968e-02 4.90116143e-02 + 4.92080199e-02 4.94055246e-02 4.96041392e-02 4.98038747e-02 5.00047424e-02 + 5.02067532e-02 5.04099186e-02 5.06142498e-02 5.08197581e-02 5.10264551e-02 + 5.12343523e-02 5.14434613e-02 5.16537938e-02 5.18653616e-02 5.20781765e-02 + 5.22922503e-02 5.25075952e-02 5.27242231e-02 5.29421462e-02 5.31613767e-02 + 5.33819268e-02 5.36038091e-02 5.38270358e-02 5.40516196e-02 5.42775730e-02 + 5.45049086e-02 5.47336392e-02 5.49637777e-02 5.51953370e-02 5.54283299e-02 + 5.56627696e-02 5.58986692e-02 5.61360419e-02 5.63749010e-02 5.66152598e-02 + 5.68571317e-02 5.71005304e-02 5.73454693e-02 5.75919622e-02 5.78400227e-02 + 5.80896648e-02 5.83409023e-02 5.85937492e-02 5.88482195e-02 5.91043274e-02 + 5.93620871e-02 5.96215130e-02 5.98826193e-02 6.01454205e-02 6.04099311e-02 + 6.06761659e-02 6.09441393e-02 6.12138663e-02 6.14853616e-02 6.17586402e-02 + 6.20337170e-02 6.23106073e-02 6.25893260e-02 6.28698885e-02 6.31523100e-02 + 6.34366061e-02 6.37227921e-02 6.40108836e-02 6.43008963e-02 6.45928458e-02 + 6.48867480e-02 6.51826187e-02 6.54804740e-02 6.57803298e-02 6.60822022e-02 + 6.63861076e-02 6.66920620e-02 6.70000820e-02 6.73101839e-02 6.76223842e-02 + 6.79366996e-02 6.82531468e-02 6.85717424e-02 6.88925034e-02 6.92154467e-02 + 6.95405892e-02 6.98679481e-02 7.01975405e-02 7.05293837e-02 7.08634950e-02 + 7.11998918e-02 7.15385916e-02 7.18796120e-02 7.22229706e-02 7.25686852e-02 + 7.29167735e-02 7.32672535e-02 7.36201432e-02 7.39754605e-02 7.43332238e-02 + 7.46934510e-02 7.50561607e-02 7.54213711e-02 7.57891008e-02 7.61593682e-02 + 7.65321920e-02 7.69075909e-02 7.72855838e-02 7.76661894e-02 7.80494268e-02 + 7.84353149e-02 7.88238730e-02 7.92151201e-02 7.96090757e-02 8.00057589e-02 + 8.04051894e-02 8.08073866e-02 8.12123701e-02 8.16201597e-02 8.20307750e-02 + 8.24442360e-02 8.28605626e-02 8.32797748e-02 8.37018927e-02 8.41269365e-02 + 8.45549265e-02 8.49858830e-02 8.54198264e-02 8.58567773e-02 8.62967562e-02 + 8.67397838e-02 8.71858809e-02 8.76350683e-02 8.80873669e-02 8.85427977e-02 + 8.90013819e-02 8.94631405e-02 8.99280948e-02 9.03962662e-02 9.08676760e-02 + 9.13423458e-02 9.18202971e-02 9.23015516e-02 9.27861310e-02 9.32740571e-02 + 9.37653518e-02 9.42600372e-02 9.47581352e-02 9.52596680e-02 9.57646578e-02 + 9.62731270e-02 9.67850979e-02 9.73005931e-02 9.78196349e-02 9.83422462e-02 + 9.88684495e-02 9.93982677e-02 9.99317237e-02 1.00468840e-01 1.01009641e-01 + 1.01554148e-01 1.02102385e-01 1.02654376e-01 1.03210143e-01 1.03769711e-01 + 1.04333102e-01 1.04900341e-01 1.05471450e-01 1.06046454e-01 1.06625377e-01 + 1.07208242e-01 1.07795073e-01 1.08385896e-01 1.08980733e-01 1.09579608e-01 + 1.10182548e-01 1.10789574e-01 1.11400713e-01 1.12015989e-01 1.12635426e-01 + 1.13259049e-01 1.13886884e-01 1.14518954e-01 1.15155284e-01 1.15795901e-01 + 1.16440828e-01 1.17090092e-01 1.17743717e-01 1.18401728e-01 1.19064152e-01 + 1.19731014e-01 1.20402338e-01 1.21078152e-01 1.21758481e-01 1.22443350e-01 + 1.23132785e-01 1.23826813e-01 1.24525459e-01 1.25228750e-01 1.25936712e-01 + 1.26649371e-01 1.27366754e-01 1.28088886e-01 1.28815795e-01 1.29547507e-01 + 1.30284049e-01 1.31025448e-01 1.31771730e-01 1.32522922e-01 1.33279051e-01 + 1.34040145e-01 1.34806231e-01 1.35577335e-01 1.36353485e-01 1.37134708e-01 + 1.37921033e-01 1.38712486e-01 1.39509094e-01 1.40310887e-01 1.41117891e-01 + 1.41930134e-01 1.42747644e-01 1.43570449e-01 1.44398578e-01 1.45232058e-01 + 1.46070917e-01 1.46915184e-01 1.47764888e-01 1.48620056e-01 1.49480717e-01 + 1.50346899e-01 1.51218632e-01 1.52095944e-01 1.52978863e-01 1.53867420e-01 + 1.54761642e-01 1.55661558e-01 1.56567199e-01 1.57478592e-01 1.58395767e-01 + 1.59318754e-01 1.60247581e-01 1.61182279e-01 1.62122877e-01 1.63069403e-01 + 1.64021889e-01 1.64980364e-01 1.65944857e-01 1.66915399e-01 1.67892019e-01 + 1.68874747e-01 1.69863614e-01 1.70858650e-01 1.71859884e-01 1.72867348e-01 + 1.73881072e-01 1.74901085e-01 1.75927419e-01 1.76960104e-01 1.77999170e-01 + 1.79044650e-01 1.80096572e-01 1.81154968e-01 1.82219870e-01 1.83291308e-01 + 1.84369312e-01 1.85453915e-01 1.86545148e-01 1.87643041e-01 1.88747626e-01 + 1.89858934e-01 1.90976997e-01 1.92101847e-01 1.93233514e-01 1.94372032e-01 + 1.95517430e-01 1.96669742e-01 1.97828999e-01 1.98995233e-01 2.00168475e-01 + 2.01348759e-01 2.02536116e-01 2.03730578e-01 2.04932178e-01 2.06140947e-01 + 2.07356919e-01 2.08580125e-01 2.09810599e-01 2.11048372e-01 2.12293478e-01 + 2.13545949e-01 2.14805817e-01 2.16073116e-01 2.17347879e-01 2.18630138e-01 + 2.19919927e-01 2.21217278e-01 2.22522225e-01 2.23834800e-01 2.25155038e-01 + 2.26482971e-01 2.27818633e-01 2.29162056e-01 2.30513276e-01 2.31872325e-01 + 2.33239236e-01 2.34614044e-01 2.35996782e-01 2.37387484e-01 2.38786184e-01 + 2.40192915e-01 2.41607712e-01 2.43030609e-01 2.44461640e-01 2.45900838e-01 + 2.47348238e-01 2.48803875e-01 2.50267782e-01 2.51739994e-01 2.53220545e-01 + 2.54709470e-01 2.56206803e-01 2.57712579e-01 2.59226833e-01 2.60749598e-01 + 2.62280911e-01 2.63820805e-01 2.65369316e-01 2.66926478e-01 2.68492326e-01 + 2.70066896e-01 2.71650222e-01 2.73242339e-01 2.74843284e-01 2.76453090e-01 + 2.78071793e-01 2.79699428e-01 2.81336031e-01 2.82981638e-01 2.84636282e-01 + 2.86300002e-01 2.87972830e-01 2.89654804e-01 2.91345959e-01 2.93046331e-01 + 2.94755955e-01 2.96474867e-01 2.98203103e-01 2.99940699e-01 3.01687691e-01 + 3.03444115e-01 3.05210007e-01 3.06985403e-01 3.08770338e-01 3.10564851e-01 + 3.12368975e-01 3.14182749e-01 3.16006207e-01 3.17839387e-01 3.19682324e-01 + 3.21535056e-01 3.23397619e-01 3.25270049e-01 3.27152383e-01 3.29044657e-01 + 3.30946908e-01 3.32859173e-01 3.34781489e-01 3.36713892e-01 3.38656419e-01 + 3.40609107e-01 3.42571993e-01 3.44545114e-01 3.46528507e-01 3.48522209e-01 + 3.50526256e-01 3.52540686e-01 3.54565537e-01 3.56600845e-01 3.58646647e-01 + 3.60702982e-01 3.62769885e-01 3.64847394e-01 3.66935548e-01 3.69034382e-01 + 3.71143935e-01 3.73264245e-01 3.75395347e-01 3.77537281e-01 3.79690084e-01 + 3.81853792e-01 3.84028445e-01 3.86214079e-01 3.88410732e-01 3.90618443e-01 + 3.92837248e-01 3.95067186e-01 3.97308294e-01 3.99560611e-01 4.01824174e-01 + 4.04099021e-01 4.06385190e-01 4.08682719e-01 4.10991646e-01 4.13312009e-01 + 4.15643846e-01 4.17987196e-01 4.20342096e-01 4.22708585e-01 4.25086701e-01 + 4.27476482e-01 4.29877965e-01 4.32291191e-01 4.34716196e-01 4.37153020e-01 + 4.39601699e-01 4.42062274e-01 4.44534782e-01 4.47019262e-01 4.49515752e-01 + 4.52024290e-01 4.54544915e-01 4.57077666e-01 4.59622582e-01 4.62179699e-01 + 4.64749058e-01 4.67330697e-01 4.69924655e-01 4.72530970e-01 4.75149680e-01 + 4.77780825e-01 4.80424443e-01 4.83080573e-01 4.85749254e-01 4.88430524e-01 + 4.91124422e-01 4.93830987e-01 4.96550258e-01 4.99282274e-01 5.02027073e-01 + 5.04784694e-01 5.07555177e-01 5.10338560e-01 5.13134881e-01 5.15944181e-01 + 5.18766498e-01 5.21601870e-01 5.24450337e-01 5.27311938e-01 5.30186712e-01 + 5.33074698e-01 5.35975934e-01 5.38890460e-01 5.41818315e-01 5.44759538e-01 + 5.47714168e-01 5.50682244e-01 5.53663805e-01 5.56658890e-01 5.59667539e-01 + 5.62689790e-01 5.65725682e-01 5.68775255e-01 5.71838548e-01 5.74915600e-01 + 5.78006450e-01 5.81111137e-01 5.84229700e-01 5.87362179e-01 5.90508613e-01 + 5.93669040e-01 5.96843501e-01 6.00032034e-01 6.03234678e-01 6.06451473e-01 + 6.09682457e-01 6.12927671e-01 6.16187152e-01 6.19460941e-01 6.22749077e-01 + 6.26051598e-01 6.29368545e-01 6.32699955e-01 6.36045869e-01 6.39406325e-01 + 6.42781363e-01 6.46171022e-01 6.49575341e-01 6.52994360e-01 6.56428116e-01 + 6.59876651e-01 6.63340002e-01 6.66818210e-01 6.70311312e-01 6.73819349e-01 + 6.77342360e-01 6.80880383e-01 6.84433457e-01 6.88001623e-01 6.91584919e-01 + 6.95183384e-01 6.98797058e-01 7.02425979e-01 7.06070186e-01 7.09729719e-01 + 7.13404617e-01 7.17094919e-01 7.20800663e-01 7.24521889e-01 7.28258637e-01 + 7.32010944e-01 7.35778850e-01 7.39562395e-01 7.43361616e-01 7.47176553e-01 + 7.51007246e-01 7.54853732e-01 7.58716051e-01 7.62594242e-01 7.66488343e-01 + 7.70398394e-01 7.74324434e-01 7.78266501e-01 7.82224634e-01 7.86198872e-01 + 7.90189253e-01 7.94195818e-01 7.98218604e-01 8.02257650e-01 8.06312994e-01 + 8.10384677e-01 8.14472736e-01 8.18577209e-01 8.22698137e-01 8.26835556e-01 + 8.30989506e-01 8.35160026e-01 8.39347154e-01 8.43550929e-01 8.47771388e-01 + 8.52008571e-01 8.56262517e-01 8.60533262e-01 8.64820847e-01 8.69125309e-01 + 8.73446687e-01 8.77785019e-01 8.82140343e-01 8.86512698e-01 8.90902122e-01 + 8.95308653e-01 8.99732330e-01 9.04173190e-01 9.08631272e-01 9.13106614e-01 + 9.17599253e-01 9.22109229e-01 9.26636579e-01 9.31181341e-01 9.35743553e-01 + 9.40323253e-01 9.44920479e-01 9.49535268e-01 9.54167659e-01 9.58817690e-01 + 9.63485397e-01 9.68170820e-01 9.72873995e-01 9.77594961e-01 9.82333754e-01 + 9.87090413e-01 9.91864975e-01 9.96657478e-01 1.00146796e+00 1.00629646e+00 + 1.01114300e+00 1.01600764e+00 1.02089041e+00 1.02579134e+00 1.03071048e+00 + 1.03564785e+00 1.04060350e+00 1.04557747e+00 1.05056978e+00 1.05558048e+00 + 1.06060961e+00 1.06565720e+00 1.07072329e+00 1.07580791e+00 1.08091111e+00 + 1.08603291e+00 1.09117337e+00 1.09633250e+00 1.10151035e+00 1.10670696e+00 + 1.11192236e+00 1.11715659e+00 1.12240969e+00 1.12768169e+00 1.13297263e+00 + 1.13828254e+00 1.14361146e+00 1.14895943e+00 1.15432648e+00 1.15971265e+00 + 1.16511798e+00 1.17054250e+00 1.17598625e+00 1.18144926e+00 1.18693156e+00 + 1.19243321e+00 1.19795422e+00 1.20349464e+00 1.20905451e+00 1.21463385e+00 + 1.22023271e+00 1.22585111e+00 1.23148910e+00 1.23714670e+00 1.24282397e+00 + 1.24852092e+00 1.25423760e+00 1.25997404e+00 1.26573027e+00 1.27150634e+00 + 1.27730227e+00 1.28311810e+00 1.28895387e+00 1.29480961e+00 1.30068535e+00 + 1.30658114e+00 1.31249699e+00 1.31843296e+00 1.32438907e+00 1.33036536e+00 + 1.33636186e+00 1.34237861e+00 1.34841563e+00 1.35447298e+00 1.36055067e+00 + 1.36664875e+00 1.37276724e+00 1.37890618e+00 1.38506561e+00 1.39124556e+00 + 1.39744606e+00 1.40366714e+00 1.40990885e+00 1.41617121e+00 1.42245426e+00 + 1.42875802e+00 1.43508254e+00 1.44142785e+00 1.44779398e+00 1.45418096e+00 + 1.46058882e+00 1.46701761e+00 1.47346735e+00 1.47993807e+00 1.48642981e+00 + 1.49294260e+00 1.49947647e+00 1.50603146e+00 1.51260760e+00 1.51920492e+00 + 1.52582344e+00 1.53246322e+00 1.53912427e+00 1.54580663e+00 1.55251033e+00 + 1.55923541e+00 1.56598189e+00 1.57274981e+00 1.57953919e+00 1.58635008e+00 + 1.59318250e+00 1.60003648e+00 1.60691205e+00 1.61380925e+00 1.62072811e+00 + 1.62766866e+00 1.63463093e+00 1.64161494e+00 1.64862074e+00 1.65564835e+00 + 1.66269781e+00 1.66976913e+00 1.67686237e+00 1.68397753e+00 1.69111467e+00 + 1.69827379e+00 1.70545495e+00 1.71265816e+00 1.71988345e+00 1.72713087e+00 + 1.73440042e+00 1.74169216e+00 1.74900610e+00 1.75634228e+00 1.76370072e+00 + 1.77108145e+00 1.77848451e+00 1.78590992e+00 1.79335772e+00 1.80082793e+00 + 1.80832057e+00 1.81583569e+00 1.82337331e+00 1.83093345e+00 1.83851615e+00 + 1.84612143e+00 1.85374933e+00 1.86139987e+00 1.86907308e+00 1.87676899e+00 + 1.88448762e+00 1.89222901e+00 1.89999318e+00 1.90778016e+00 1.91558998e+00 + 1.92342267e+00 1.93127825e+00 1.93915675e+00 1.94705820e+00 1.95498262e+00 + 1.96293005e+00 1.97090050e+00 1.97889402e+00 1.98691062e+00 1.99495033e+00 + 2.00301317e+00 2.01109918e+00 2.01920839e+00 2.02734080e+00 2.03549647e+00 + 2.04367540e+00 2.05187763e+00 2.06010318e+00 2.06835208e+00 2.07662435e+00 + 2.08492002e+00 2.09323912e+00 2.10158167e+00 2.10994769e+00 2.11833722e+00 + 2.12675027e+00 2.13518688e+00 2.14364706e+00 2.15213085e+00 2.16063826e+00 + 2.16916932e+00 2.17772406e+00 2.18630250e+00 2.19490466e+00 2.20353058e+00 + 2.21218027e+00 2.22085375e+00 2.22955106e+00 2.23827221e+00 2.24701724e+00 + 2.25578615e+00 2.26457899e+00 2.27339576e+00 2.28223650e+00 2.29110122e+00 + 2.29998996e+00 2.30890273e+00 2.31783955e+00 2.32680045e+00 2.33578546e+00 + 2.34479459e+00 2.35382786e+00 2.36288530e+00 2.37196694e+00 2.38107279e+00 + 7.75783058e-03 7.73296622e-03 7.70815966e-03 7.68341051e-03 7.65871836e-03 + 7.63408283e-03 7.60950351e-03 7.58498000e-03 7.56051190e-03 7.53609882e-03 + 7.51174036e-03 7.48743611e-03 7.46318569e-03 7.43898868e-03 7.41484469e-03 + 7.39075333e-03 7.36671420e-03 7.34272689e-03 7.31879101e-03 7.29490616e-03 + 7.27107195e-03 7.24728797e-03 7.22355383e-03 7.19986914e-03 7.17623349e-03 + 7.15264650e-03 7.12910776e-03 7.10561688e-03 7.08217347e-03 7.05877713e-03 + 7.03542747e-03 7.01212410e-03 6.98886663e-03 6.96565466e-03 6.94248780e-03 + 6.91936567e-03 6.89628787e-03 6.87325401e-03 6.85026372e-03 6.82731659e-03 + 6.80441225e-03 6.78155031e-03 6.75873038e-03 6.73595209e-03 6.71321505e-03 + 6.69051888e-03 6.66786319e-03 6.64524762e-03 6.62267177e-03 6.60013528e-03 + 6.57763777e-03 6.55517887e-03 6.53275819e-03 6.51037537e-03 6.48803005e-03 + 6.46572184e-03 6.44345038e-03 6.42121530e-03 6.39901625e-03 6.37685284e-03 + 6.35472473e-03 6.33263156e-03 6.31057295e-03 6.28854856e-03 6.26655802e-03 + 6.24460099e-03 6.22267711e-03 6.20078603e-03 6.17892740e-03 6.15710087e-03 + 6.13530609e-03 6.11354273e-03 6.09181044e-03 6.07010887e-03 6.04843770e-03 + 6.02679658e-03 6.00518518e-03 5.98360316e-03 5.96205020e-03 5.94052597e-03 + 5.91903013e-03 5.89756237e-03 5.87612237e-03 5.85470980e-03 5.83332434e-03 + 5.81196568e-03 5.79063351e-03 5.76932751e-03 5.74804738e-03 5.72679281e-03 + 5.70556349e-03 5.68435913e-03 5.66317942e-03 5.64202406e-03 5.62089277e-03 + 5.59978526e-03 5.57870122e-03 5.55764038e-03 5.53660245e-03 5.51558714e-03 + 5.49459419e-03 5.47362332e-03 5.45267424e-03 5.43174670e-03 5.41084042e-03 + 5.38995513e-03 5.36909059e-03 5.34824651e-03 5.32742266e-03 5.30661878e-03 + 5.28583461e-03 5.26506991e-03 5.24432443e-03 5.22359793e-03 5.20289018e-03 + 5.18220094e-03 5.16152997e-03 5.14087705e-03 5.12024195e-03 5.09962444e-03 + 5.07902432e-03 5.05844136e-03 5.03787534e-03 5.01732607e-03 4.99679333e-03 + 4.97627691e-03 4.95577663e-03 4.93529228e-03 4.91482367e-03 4.89437061e-03 + 4.87393292e-03 4.85351041e-03 4.83310291e-03 4.81271023e-03 4.79233221e-03 + 4.77196867e-03 4.75161946e-03 4.73128441e-03 4.71096337e-03 4.69065618e-03 + 4.67036269e-03 4.65008275e-03 4.62981623e-03 4.60956299e-03 4.58932288e-03 + 4.56909578e-03 4.54888156e-03 4.52868010e-03 4.50849128e-03 4.48831498e-03 + 4.46815110e-03 4.44799952e-03 4.42786013e-03 4.40773285e-03 4.38761758e-03 + 4.36751422e-03 4.34742268e-03 4.32734289e-03 4.30727476e-03 4.28721822e-03 + 4.26717320e-03 4.24713963e-03 4.22711745e-03 4.20710659e-03 4.18710701e-03 + 4.16711866e-03 4.14714149e-03 4.12717545e-03 4.10722051e-03 4.08727665e-03 + 4.06734382e-03 4.04742201e-03 4.02751119e-03 4.00761135e-03 3.98772248e-03 + 3.96784457e-03 3.94797762e-03 3.92812164e-03 3.90827662e-03 3.88844258e-03 + 3.86861953e-03 3.84880750e-03 3.82900651e-03 3.80921659e-03 3.78943777e-03 + 3.76967009e-03 3.74991360e-03 3.73016833e-03 3.71043435e-03 3.69071171e-03 + 3.67100046e-03 3.65130068e-03 3.63161244e-03 3.61193581e-03 3.59227087e-03 + 3.57261770e-03 3.55297640e-03 3.53334706e-03 3.51372978e-03 3.49412465e-03 + 3.47453180e-03 3.45495132e-03 3.43538334e-03 3.41582798e-03 3.39628537e-03 + 3.37675564e-03 3.35723892e-03 3.33773536e-03 3.31824510e-03 3.29876830e-03 + 3.27930510e-03 3.25985568e-03 3.24042019e-03 3.22099880e-03 3.20159169e-03 + 3.18219905e-03 3.16282105e-03 3.14345788e-03 3.12410974e-03 3.10477683e-03 + 3.08545935e-03 3.06615751e-03 3.04687152e-03 3.02760161e-03 3.00834799e-03 + 2.98911090e-03 2.96989056e-03 2.95068723e-03 2.93150113e-03 2.91233251e-03 + 2.89318164e-03 2.87404877e-03 2.85493415e-03 2.83583807e-03 2.81676078e-03 + 2.79770257e-03 2.77866372e-03 2.75964451e-03 2.74064524e-03 2.72166621e-03 + 2.70270771e-03 2.68377006e-03 2.66485356e-03 2.64595853e-03 2.62708529e-03 + 2.60823417e-03 2.58940549e-03 2.57059960e-03 2.55181683e-03 2.53305753e-03 + 2.51432206e-03 2.49561075e-03 2.47692398e-03 2.45826211e-03 2.43962550e-03 + 2.42101454e-03 2.40242960e-03 2.38387106e-03 2.36533932e-03 2.34683476e-03 + 2.32835779e-03 2.30990881e-03 2.29148822e-03 2.27309644e-03 2.25473389e-03 + 2.23640098e-03 2.21809814e-03 2.19982581e-03 2.18158442e-03 2.16337441e-03 + 2.14519622e-03 2.12705031e-03 2.10893713e-03 2.09085714e-03 2.07281081e-03 + 2.05479859e-03 2.03682097e-03 2.01887841e-03 2.00097142e-03 1.98310046e-03 + 1.96526603e-03 1.94746863e-03 1.92970876e-03 1.91198692e-03 1.89430361e-03 + 1.87665937e-03 1.85905469e-03 1.84149011e-03 1.82396614e-03 1.80648333e-03 + 1.78904221e-03 1.77164332e-03 1.75428719e-03 1.73697438e-03 1.71970545e-03 + 1.70248094e-03 1.68530143e-03 1.66816747e-03 1.65107964e-03 1.63403850e-03 + 1.61704464e-03 1.60009864e-03 1.58320109e-03 1.56635257e-03 1.54955368e-03 + 1.53280502e-03 1.51610719e-03 1.49946080e-03 1.48286646e-03 1.46632477e-03 + 1.44983637e-03 1.43340187e-03 1.41702190e-03 1.40069709e-03 1.38442807e-03 + 1.36821548e-03 1.35205996e-03 1.33596216e-03 1.31992272e-03 1.30394230e-03 + 1.28802156e-03 1.27216115e-03 1.25636174e-03 1.24062400e-03 1.22494858e-03 + 1.20933618e-03 1.19378747e-03 1.17830313e-03 1.16288384e-03 1.14753029e-03 + 1.13224317e-03 1.11702318e-03 1.10187102e-03 1.08678738e-03 1.07177298e-03 + 1.05682851e-03 1.04195470e-03 1.02715225e-03 1.01242188e-03 9.97764323e-04 + 9.83180288e-04 9.68670506e-04 9.54235708e-04 9.39876625e-04 9.25593994e-04 + 9.11388553e-04 8.97261043e-04 8.83212208e-04 8.69242796e-04 8.55353556e-04 + 8.41545241e-04 8.27818606e-04 8.14174409e-04 8.00613410e-04 7.87136373e-04 + 7.73744063e-04 7.60437247e-04 7.47216698e-04 7.34083188e-04 7.21037492e-04 + 7.08080389e-04 6.95212658e-04 6.82435082e-04 6.69748446e-04 6.57153537e-04 + 6.44651143e-04 6.32242057e-04 6.19927071e-04 6.07706982e-04 5.95582586e-04 + 5.83554683e-04 5.71624074e-04 5.59791564e-04 5.48057956e-04 5.36424058e-04 + 5.24890679e-04 5.13458629e-04 5.02128720e-04 4.90901767e-04 4.79778585e-04 + 4.68759991e-04 4.57846804e-04 4.47039843e-04 4.36339931e-04 4.25747890e-04 + 4.15264545e-04 4.04890722e-04 3.94627247e-04 3.84474948e-04 3.74434656e-04 + 3.64507200e-04 3.54693412e-04 3.44994126e-04 3.35410174e-04 3.25942392e-04 + 3.16591616e-04 3.07358681e-04 2.98244426e-04 2.89249688e-04 2.80375307e-04 + 2.71622122e-04 2.62990974e-04 2.54482704e-04 2.46098153e-04 2.37838164e-04 + 2.29703578e-04 2.21695241e-04 2.13813993e-04 2.06060681e-04 1.98436147e-04 + 1.90941236e-04 1.83576793e-04 1.76343663e-04 1.69242690e-04 1.62274720e-04 + 1.55440598e-04 1.48741168e-04 1.42177276e-04 1.35749766e-04 1.29459484e-04 + 1.23307274e-04 1.17293980e-04 1.11420445e-04 1.05687515e-04 1.00096032e-04 + 9.46468388e-05 8.93407780e-05 8.41786913e-05 7.91614202e-05 7.42898052e-05 + 6.95646864e-05 6.49869031e-05 6.05572937e-05 5.62766961e-05 5.21459470e-05 + 4.81658825e-05 4.43373376e-05 4.06611462e-05 3.71381414e-05 3.37691551e-05 + 3.05550180e-05 2.74965596e-05 2.45946084e-05 2.18499913e-05 1.92635340e-05 + 1.68360610e-05 1.45683951e-05 1.24613578e-05 1.05157689e-05 8.73244699e-06 + 7.11220867e-06 5.65586906e-06 4.36424154e-06 3.23813774e-06 2.27836748e-06 + 1.48573873e-06 8.61057567e-07 4.05128118e-07 1.18752518e-07 2.73086226e-09 + 5.78611603e-08 2.84939286e-07 6.84758934e-07 1.25811157e-06 2.00578638e-06 + 2.92857023e-06 4.02724762e-06 5.30260064e-06 6.75540890e-06 8.38644951e-06 + 1.01964970e-05 1.21863234e-05 1.43566979e-05 1.67083872e-05 1.92421552e-05 + 2.19587628e-05 2.48589684e-05 2.79435273e-05 3.12131920e-05 3.46687118e-05 + 3.83108334e-05 4.21402999e-05 4.61578518e-05 5.03642261e-05 5.47601568e-05 + 5.93463745e-05 6.41236066e-05 6.90925772e-05 7.42540069e-05 7.96086130e-05 + 8.51571092e-05 9.09002059e-05 9.68386096e-05 1.02973024e-04 1.09304147e-04 + 1.15832676e-04 1.22559303e-04 1.29484715e-04 1.36609598e-04 1.43934631e-04 + 1.51460492e-04 1.59187852e-04 1.67117382e-04 1.75249745e-04 1.83585602e-04 + 1.92125609e-04 2.00870420e-04 2.09820682e-04 2.18977038e-04 2.28340129e-04 + 2.37910590e-04 2.47689051e-04 2.57676139e-04 2.67872477e-04 2.78278681e-04 + 2.88895364e-04 2.99723136e-04 3.10762599e-04 3.22014353e-04 3.33478993e-04 + 3.45157108e-04 3.57049283e-04 3.69156098e-04 3.81478128e-04 3.94015944e-04 + 4.06770112e-04 4.19741192e-04 4.32929738e-04 4.46336303e-04 4.59961431e-04 + 4.73805662e-04 4.87869532e-04 5.02153570e-04 5.16658302e-04 5.31384246e-04 + 5.46331917e-04 5.61501823e-04 5.76894469e-04 5.92510351e-04 6.08349963e-04 + 6.24413792e-04 6.40702320e-04 6.57216021e-04 6.73955368e-04 6.90920825e-04 + 7.08112850e-04 7.25531898e-04 7.43178417e-04 7.61052849e-04 7.79155629e-04 + 7.97487189e-04 8.16047953e-04 8.34838340e-04 8.53858764e-04 8.73109630e-04 + 8.92591340e-04 9.12304290e-04 9.32248867e-04 9.52425456e-04 9.72834432e-04 + 9.93476168e-04 1.01435103e-03 1.03545937e-03 1.05680154e-03 1.07837790e-03 + 1.10018877e-03 1.12223450e-03 1.14451541e-03 1.16703183e-03 1.18978405e-03 + 1.21277241e-03 1.23599719e-03 1.25945869e-03 1.28315720e-03 1.30709300e-03 + 1.33126638e-03 1.35567759e-03 1.38032690e-03 1.40521457e-03 1.43034085e-03 + 1.45570597e-03 1.48131019e-03 1.50715372e-03 1.53323678e-03 1.55955961e-03 + 1.58612239e-03 1.61292535e-03 1.63996867e-03 1.66725254e-03 1.69477714e-03 + 1.72254266e-03 1.75054926e-03 1.77879709e-03 1.80728633e-03 1.83601711e-03 + 1.86498957e-03 1.89420386e-03 1.92366009e-03 1.95335839e-03 1.98329887e-03 + 2.01348164e-03 2.04390679e-03 2.07457442e-03 2.10548462e-03 2.13663746e-03 + 2.16803301e-03 2.19967134e-03 2.23155250e-03 2.26367655e-03 2.29604352e-03 + 2.32865346e-03 2.36150638e-03 2.39460232e-03 2.42794128e-03 2.46152328e-03 + 2.49534830e-03 2.52941636e-03 2.56372742e-03 2.59828147e-03 2.63307847e-03 + 2.66811840e-03 2.70340121e-03 2.73892685e-03 2.77469525e-03 2.81070636e-03 + 2.84696010e-03 2.88345639e-03 2.92019515e-03 2.95717627e-03 2.99439966e-03 + 3.03186521e-03 3.06957280e-03 3.10752231e-03 3.14571361e-03 3.18414655e-03 + 3.22282100e-03 3.26173679e-03 3.30089378e-03 3.34029178e-03 3.37993063e-03 + 3.41981015e-03 3.45993014e-03 3.50029041e-03 3.54089075e-03 3.58173095e-03 + 3.62281080e-03 3.66413006e-03 3.70568851e-03 3.74748589e-03 3.78952197e-03 + 3.83179649e-03 3.87430918e-03 3.91705978e-03 3.96004801e-03 4.00327358e-03 + 4.04673620e-03 4.09043558e-03 4.13437140e-03 4.17854335e-03 4.22295111e-03 + 4.26759435e-03 4.31247275e-03 4.35758594e-03 4.40293359e-03 4.44851534e-03 + 4.49433082e-03 4.54037966e-03 4.58666148e-03 4.63317590e-03 4.67992252e-03 + 4.72690094e-03 4.77411076e-03 4.82155156e-03 4.86922292e-03 4.91712441e-03 + 4.96525559e-03 5.01361603e-03 5.06220526e-03 5.11102284e-03 5.16006829e-03 + 5.20934116e-03 5.25884095e-03 5.30856719e-03 5.35851938e-03 5.40869703e-03 + 5.45909962e-03 5.50972664e-03 5.56057758e-03 5.61165191e-03 5.66294908e-03 + 5.71446857e-03 5.76620983e-03 5.81817229e-03 5.87035540e-03 5.92275860e-03 + 5.97538130e-03 6.02822292e-03 6.08128288e-03 6.13456058e-03 6.18805542e-03 + 6.24176680e-03 6.29569408e-03 6.34983667e-03 6.40419392e-03 6.45876520e-03 + 6.51354987e-03 6.56854729e-03 6.62375679e-03 6.67917772e-03 6.73480941e-03 + 6.79065119e-03 6.84670238e-03 6.90296228e-03 6.95943021e-03 7.01610547e-03 + 7.07298735e-03 7.13007514e-03 7.18736812e-03 7.24486557e-03 7.30256676e-03 + 7.36047095e-03 7.41857739e-03 7.47688535e-03 7.53539406e-03 7.59410276e-03 + 7.65301069e-03 7.71211707e-03 7.77142113e-03 7.83092207e-03 7.89061912e-03 + 7.95051146e-03 8.01059830e-03 8.07087884e-03 8.13135225e-03 8.19201772e-03 + 8.25287442e-03 8.31392151e-03 8.37515818e-03 8.43658356e-03 8.49819681e-03 + 8.55999708e-03 8.62198351e-03 8.68415524e-03 8.74651139e-03 8.80905109e-03 + 8.87177346e-03 8.93467761e-03 8.99776265e-03 9.06102768e-03 9.12447181e-03 + 9.18809412e-03 9.25189370e-03 9.31586964e-03 9.38002101e-03 9.44434688e-03 + 9.50884633e-03 9.57351841e-03 9.63836218e-03 9.70337670e-03 9.76856101e-03 + 9.83391415e-03 9.89943517e-03 9.96512309e-03 1.00309769e-02 1.00969958e-02 + 1.01631786e-02 1.02295244e-02 1.02960321e-02 1.03627010e-02 1.04295298e-02 + 1.04965176e-02 1.05636634e-02 1.06309662e-02 1.06984250e-02 1.07660387e-02 + 1.08338064e-02 1.09017270e-02 1.09697994e-02 1.10380226e-02 1.11063957e-02 + 1.11749175e-02 1.12435870e-02 1.13124031e-02 1.13813648e-02 1.14504710e-02 + 1.15197207e-02 1.15891128e-02 1.16586462e-02 1.17283198e-02 1.17981326e-02 + 1.18680835e-02 1.19381714e-02 1.20083952e-02 1.20787538e-02 1.21492461e-02 + 1.22198711e-02 1.22906275e-02 1.23615144e-02 1.24325305e-02 1.25036749e-02 + 1.25749463e-02 1.26463436e-02 1.27178658e-02 1.27895117e-02 1.28612802e-02 + 1.29331701e-02 1.30051803e-02 1.30773097e-02 1.31495572e-02 1.32219215e-02 + 1.32944016e-02 1.33669962e-02 1.34397044e-02 1.35125248e-02 1.35854564e-02 + 1.36584979e-02 1.37316483e-02 1.38049064e-02 1.38782709e-02 1.39517408e-02 + 1.40253149e-02 1.40989919e-02 1.41727708e-02 1.42466503e-02 1.43206293e-02 + 1.43947066e-02 1.44688810e-02 1.45431514e-02 1.46175164e-02 1.46919751e-02 + 1.47665261e-02 1.48411683e-02 1.49159005e-02 1.49907214e-02 1.50656300e-02 + 1.51406250e-02 1.52157052e-02 1.52908694e-02 1.53661164e-02 1.54414451e-02 + 1.55168541e-02 1.55923424e-02 1.56679086e-02 1.57435517e-02 1.58192703e-02 + 1.58950633e-02 1.59709295e-02 1.60468676e-02 1.61228765e-02 1.61989549e-02 + 1.62751017e-02 1.63513156e-02 1.64275953e-02 1.65039398e-02 1.65803477e-02 + 1.66568179e-02 1.67333491e-02 1.68099401e-02 1.68865898e-02 1.69632968e-02 + 1.70400600e-02 1.71168782e-02 1.71937501e-02 1.72706745e-02 1.73476503e-02 + 1.74246761e-02 1.75017508e-02 1.75788731e-02 1.76560418e-02 1.77332558e-02 + 1.78105138e-02 1.78878145e-02 1.79651568e-02 1.80425395e-02 1.81199613e-02 + 1.81974209e-02 1.82749173e-02 1.83524492e-02 1.84300153e-02 1.85076145e-02 + 1.85852456e-02 1.86629072e-02 1.87405983e-02 1.88183176e-02 1.88960639e-02 + 1.89738359e-02 1.90516326e-02 1.91294526e-02 1.92072948e-02 1.92851579e-02 + 1.93630408e-02 1.94409423e-02 1.95188611e-02 1.95967960e-02 1.96747459e-02 + 1.97527096e-02 1.98306858e-02 1.99086734e-02 1.99866711e-02 2.00646778e-02 + 2.01426923e-02 2.02207134e-02 2.02987399e-02 2.03767707e-02 2.04548044e-02 + 2.05328400e-02 2.06108763e-02 2.06889121e-02 2.07669463e-02 2.08449775e-02 + 2.09230048e-02 2.10010268e-02 2.10790425e-02 2.11570506e-02 2.12350500e-02 + 2.13130396e-02 2.13910182e-02 2.14689845e-02 2.15469376e-02 2.16248761e-02 + 2.17027990e-02 2.17807052e-02 2.18585934e-02 2.19364625e-02 2.20143114e-02 + 2.20921389e-02 2.21699439e-02 2.22477253e-02 2.23254820e-02 2.24032128e-02 + 2.24809165e-02 2.25585922e-02 2.26362385e-02 2.27138546e-02 2.27914391e-02 + 2.28689910e-02 2.29465093e-02 2.30239927e-02 2.31014402e-02 2.31788507e-02 + 2.32562232e-02 2.33335564e-02 2.34108493e-02 2.34881009e-02 2.35653100e-02 + 2.36424756e-02 2.37195966e-02 2.37966720e-02 2.38737005e-02 2.39506813e-02 + 2.40276132e-02 2.41044951e-02 2.41813261e-02 2.42581051e-02 2.43348309e-02 + 2.44115026e-02 2.44881192e-02 2.45646795e-02 2.46411826e-02 2.47176275e-02 + 2.47940130e-02 2.48703382e-02 2.49466021e-02 2.50228037e-02 2.50989418e-02 + 2.51750157e-02 2.52510241e-02 2.53269662e-02 2.54028410e-02 2.54786474e-02 + 2.55543844e-02 2.56300512e-02 2.57056467e-02 2.57811699e-02 2.58566198e-02 + 2.59319956e-02 2.60072962e-02 2.60825207e-02 2.61576682e-02 2.62327376e-02 + 2.63077281e-02 2.63826386e-02 2.64574684e-02 2.65322164e-02 2.66068817e-02 + 2.66814634e-02 2.67559606e-02 2.68303724e-02 2.69046978e-02 2.69789360e-02 + 2.70530861e-02 2.71271471e-02 2.72011182e-02 2.72749985e-02 2.73487872e-02 + 2.74224833e-02 2.74960859e-02 2.75695943e-02 2.76430075e-02 2.77163247e-02 + 2.77895451e-02 2.78626678e-02 2.79356919e-02 2.80086167e-02 2.80814412e-02 + 2.81541648e-02 2.82267864e-02 2.82993055e-02 2.83717210e-02 2.84440323e-02 + 2.85162385e-02 2.85883388e-02 2.86603324e-02 2.87322186e-02 2.88039966e-02 + 2.88756656e-02 2.89472248e-02 2.90186734e-02 2.90900108e-02 2.91612361e-02 + 2.92323486e-02 2.93033476e-02 2.93742322e-02 2.94450019e-02 2.95156558e-02 + 2.95861933e-02 2.96566136e-02 2.97269159e-02 2.97970997e-02 2.98671642e-02 + 2.99371087e-02 3.00069325e-02 3.00766349e-02 3.01462153e-02 3.02156729e-02 + 3.02850071e-02 3.03542173e-02 3.04233028e-02 3.04922629e-02 3.05610970e-02 + 3.06298044e-02 3.06983846e-02 3.07668368e-02 3.08351604e-02 3.09033549e-02 + 3.09714197e-02 3.10393540e-02 3.11071573e-02 3.11748290e-02 3.12423686e-02 + 3.13097754e-02 3.13770488e-02 3.14441883e-02 3.15111934e-02 3.15780633e-02 + 3.16447977e-02 3.17113958e-02 3.17778573e-02 3.18441815e-02 3.19103679e-02 + 3.19764160e-02 3.20423252e-02 3.21080951e-02 3.21737250e-02 3.22392146e-02 + 3.23045633e-02 3.23697706e-02 3.24348361e-02 3.24997591e-02 3.25645394e-02 + 3.26291763e-02 3.26936694e-02 3.27580183e-02 3.28222224e-02 3.28862814e-02 + 3.29501948e-02 3.30139622e-02 3.30775831e-02 3.31410570e-02 3.32043837e-02 + 3.32675626e-02 3.33305933e-02 3.33934755e-02 3.34562087e-02 3.35187925e-02 + 3.35812266e-02 3.36435106e-02 3.37056440e-02 3.37676266e-02 3.38294579e-02 + 3.38911376e-02 3.39526653e-02 3.40140407e-02 3.40752635e-02 3.41363332e-02 + 3.41972496e-02 3.42580124e-02 3.43186212e-02 3.43790756e-02 3.44393755e-02 + 3.44995205e-02 3.45595102e-02 3.46193444e-02 3.46790229e-02 3.47385452e-02 + 3.47979112e-02 3.48571206e-02 3.49161731e-02 3.49750684e-02 3.50338063e-02 + 3.50923866e-02 3.51508090e-02 3.52090732e-02 3.52671790e-02 3.53251263e-02 + 3.53829147e-02 3.54405441e-02 3.54980142e-02 3.55553249e-02 3.56124759e-02 + 3.56694670e-02 3.57262982e-02 3.57829691e-02 3.58394796e-02 3.58958295e-02 + 3.59520187e-02 3.60080469e-02 3.60639141e-02 3.61196201e-02 3.61751647e-02 + 3.62305479e-02 3.62857693e-02 3.63408291e-02 3.63957269e-02 3.64504627e-02 + 3.65050364e-02 3.65594478e-02 3.66136969e-02 3.66677836e-02 3.67217077e-02 + 3.67754692e-02 3.68290680e-02 3.68825040e-02 3.69357771e-02 3.69888874e-02 + 3.70418346e-02 3.70946188e-02 3.71472399e-02 3.71996978e-02 3.72519925e-02 + 3.73041241e-02 3.73560923e-02 3.74078973e-02 3.74595390e-02 3.75110173e-02 + 3.75623323e-02 3.76134840e-02 3.76644723e-02 3.77152973e-02 3.77659589e-02 + 3.78164572e-02 3.78667922e-02 3.79169639e-02 3.79669723e-02 3.80168175e-02 + 3.80664996e-02 3.81160184e-02 3.81653742e-02 3.82145669e-02 3.82635966e-02 + 3.83124633e-02 3.83611672e-02 3.84097083e-02 3.84580867e-02 3.85063023e-02 + 3.85543555e-02 3.86022461e-02 3.86499744e-02 3.86975403e-02 3.87449441e-02 + 3.87921858e-02 3.88392655e-02 3.88861833e-02 3.89329394e-02 3.89795339e-02 + 3.90259669e-02 3.90722385e-02 3.91183489e-02 3.91642983e-02 3.92100867e-02 + 3.92557143e-02 3.93011813e-02 3.93464879e-02 3.93916341e-02 3.94366202e-02 + 3.94814463e-02 3.95261127e-02 3.95706194e-02 3.96149667e-02 3.96591547e-02 + 3.97031837e-02 3.97470539e-02 3.97907654e-02 3.98343184e-02 3.98777132e-02 + 3.99209500e-02 3.99640290e-02 4.00069503e-02 4.00497143e-02 4.00923212e-02 + 4.01347712e-02 4.01770645e-02 4.02192013e-02 4.02611820e-02 4.03030067e-02 + 4.03446757e-02 4.03861893e-02 4.04275477e-02 4.04687512e-02 4.05098001e-02 + 4.05506945e-02 4.05914349e-02 4.06320214e-02 4.06724544e-02 4.07127341e-02 + 4.07528608e-02 4.07928348e-02 4.08326564e-02 4.08723259e-02 4.09118437e-02 + 4.09512099e-02 4.09904249e-02 4.10294891e-02 4.10684027e-02 4.11071660e-02 + 4.11457795e-02 4.11842433e-02 4.12225579e-02 4.12607235e-02 4.12987405e-02 + 4.13366093e-02 4.13743301e-02 4.14119033e-02 4.14493293e-02 4.14866084e-02 + 4.15237410e-02 4.15607274e-02 4.15975680e-02 4.16342631e-02 4.16708131e-02 + 4.17072184e-02 4.17434793e-02 4.17795963e-02 4.18155696e-02 4.18513997e-02 + 4.18870870e-02 4.19226318e-02 4.19580345e-02 4.19932955e-02 4.20284153e-02 + 4.20633941e-02 4.20982324e-02 4.21329307e-02 4.21674892e-02 4.22019085e-02 + 4.22361889e-02 4.22703308e-02 4.23043346e-02 4.23382008e-02 4.23719298e-02 + 4.24055220e-02 4.24389778e-02 4.24722977e-02 4.25054820e-02 4.25385312e-02 + 4.25714458e-02 4.26042261e-02 4.26368727e-02 4.26693859e-02 4.27017662e-02 + 4.27340140e-02 4.27661298e-02 4.27981141e-02 4.28299672e-02 4.28616896e-02 + 4.28932819e-02 4.29247444e-02 4.29560775e-02 4.29872819e-02 4.30183578e-02 + 4.30493059e-02 4.30801265e-02 4.31108201e-02 4.31413873e-02 4.31718284e-02 + 4.32021439e-02 4.32323343e-02 4.32624002e-02 4.32923419e-02 4.33221599e-02 + 4.33518548e-02 4.33814270e-02 4.34108770e-02 4.34402053e-02 4.34694124e-02 + 4.34984988e-02 4.35274649e-02 4.35563113e-02 4.35850384e-02 4.36136467e-02 + 4.36421369e-02 4.36705092e-02 4.36987643e-02 4.37269027e-02 4.37549248e-02 + 4.37828312e-02 4.38106223e-02 4.38382987e-02 4.38658609e-02 4.38933094e-02 + 4.39206447e-02 4.39478673e-02 4.39749777e-02 4.40019765e-02 4.40288641e-02 + 4.40556412e-02 4.40823081e-02 4.41088654e-02 4.41353137e-02 4.41616534e-02 + 4.41878851e-02 4.42140094e-02 4.42400266e-02 4.42659374e-02 4.42917423e-02 + 4.43174418e-02 4.43430364e-02 4.43685267e-02 4.43939132e-02 4.44191965e-02 + 4.44443770e-02 4.44694552e-02 4.44944318e-02 4.45193073e-02 4.45440821e-02 + 4.45687569e-02 4.45933322e-02 4.46178084e-02 4.46421862e-02 4.46664660e-02 + 4.46906485e-02 4.47147341e-02 4.47387234e-02 4.47626169e-02 4.47864152e-02 + 4.48101188e-02 4.48337283e-02 4.48572441e-02 4.48806669e-02 4.49039972e-02 + 4.49272354e-02 4.49503823e-02 4.49734382e-02 4.49964038e-02 4.50192796e-02 + 4.50420661e-02 4.50647640e-02 4.50873736e-02 4.51098956e-02 4.51323305e-02 + 4.51546789e-02 4.51769413e-02 4.51991182e-02 4.52212103e-02 4.52432180e-02 + 4.52651419e-02 4.52869825e-02 4.53087404e-02 4.53304161e-02 4.53520102e-02 + 4.53735232e-02 4.53949557e-02 4.54163082e-02 4.54375812e-02 4.54587753e-02 + 4.54798911e-02 4.55009291e-02 4.55218898e-02 4.55427738e-02 4.55635817e-02 + 4.55843139e-02 4.56049710e-02 4.56255536e-02 4.56460622e-02 4.56664973e-02 + 4.56868595e-02 4.57071494e-02 4.57273674e-02 4.57475141e-02 4.57675901e-02 + 4.57875959e-02 4.58075321e-02 4.58273991e-02 4.58471976e-02 4.58669280e-02 + 4.58865909e-02 4.59061869e-02 4.59257165e-02 4.59451801e-02 4.59645785e-02 + 4.59839120e-02 4.60031812e-02 4.60223867e-02 4.60415291e-02 4.60606087e-02 + 4.60796262e-02 4.60985821e-02 4.61174770e-02 4.61363113e-02 4.61550856e-02 + 4.61738005e-02 4.61924564e-02 4.62110539e-02 4.62295935e-02 4.62480757e-02 + 4.62665012e-02 4.62848703e-02 4.63031836e-02 4.63214417e-02 4.63396451e-02 + 4.63577942e-02 4.63758897e-02 4.63939320e-02 4.64119217e-02 4.64298592e-02 + 4.64477452e-02 4.64655800e-02 4.64833643e-02 4.65010985e-02 4.65187832e-02 + 4.65364189e-02 4.65540060e-02 4.65715452e-02 4.65890368e-02 4.66064815e-02 + 4.66238797e-02 4.66412319e-02 4.66585387e-02 4.66758005e-02 4.66930179e-02 + 4.67101913e-02 4.67273213e-02 4.67444084e-02 4.67614530e-02 4.67784556e-02 + 4.67954169e-02 4.68123371e-02 4.68292170e-02 4.68460568e-02 4.68628572e-02 + 4.68796187e-02 4.68963416e-02 4.69130266e-02 4.69296740e-02 4.69462844e-02 + 4.69628583e-02 4.69793962e-02 4.69958985e-02 4.70123657e-02 4.70287983e-02 + 4.70451968e-02 4.70615616e-02 4.70778933e-02 4.70941923e-02 4.71104590e-02 + 4.71266940e-02 4.71428977e-02 4.71590707e-02 4.71752133e-02 4.71913260e-02 + 4.72074093e-02 4.72234637e-02 4.72394895e-02 4.72554874e-02 4.72714577e-02 + 4.72874010e-02 4.73033175e-02 4.73192079e-02 4.73350726e-02 4.73509120e-02 + 4.73667265e-02 4.73825167e-02 4.73982829e-02 4.74140257e-02 4.74297454e-02 + 4.74454425e-02 4.74611175e-02 4.74767708e-02 4.74924027e-02 4.75080139e-02 + 4.75236046e-02 4.75391754e-02 4.75547266e-02 4.75702588e-02 4.75857722e-02 + 4.76012674e-02 4.76167448e-02 4.76322048e-02 4.76476478e-02 4.76630743e-02 + 4.76784846e-02 4.76938792e-02 4.77092586e-02 4.77246230e-02 4.77399730e-02 + 4.77553089e-02 4.77706311e-02 4.77859401e-02 4.78012363e-02 4.78165201e-02 + 4.78317918e-02 4.78470519e-02 4.78623007e-02 4.78775388e-02 4.78927664e-02 + 4.79079840e-02 4.79231919e-02 4.79383906e-02 4.79535804e-02 4.79687617e-02 + 4.79839349e-02 4.79991005e-02 4.80142587e-02 4.80294099e-02 4.80445546e-02 + 4.80596931e-02 4.80748258e-02 4.80899530e-02 4.81050752e-02 4.81201927e-02 + 4.81353058e-02 4.81504150e-02 4.81655206e-02 4.81806229e-02 4.81957224e-02 + 4.82108194e-02 4.82259141e-02 4.82410071e-02 4.82560987e-02 4.82711891e-02 + 4.82862788e-02 4.83013681e-02 4.83164573e-02 4.83315468e-02 4.83466369e-02 + 4.83617281e-02 4.83768205e-02 4.83919146e-02 4.84070107e-02 4.84221091e-02 + 4.84372101e-02 4.84523141e-02 4.84674214e-02 4.84825324e-02 4.84976473e-02 + 4.85127665e-02 4.85278903e-02 4.85430190e-02 4.85581530e-02 4.85732925e-02 + 4.85884379e-02 4.86035894e-02 4.86187475e-02 4.86339123e-02 4.86490843e-02 + 4.86642636e-02 4.86794506e-02 4.86946457e-02 4.87098490e-02 4.87250610e-02 + 4.87402818e-02 4.87555118e-02 4.87707513e-02 4.87860006e-02 4.88012599e-02 + 4.88165295e-02 4.88318098e-02 4.88471010e-02 4.88624033e-02 4.88777171e-02 + 4.88930427e-02 4.89083802e-02 4.89237301e-02 4.89390924e-02 4.89544676e-02 + 4.89698559e-02 4.89852575e-02 4.90006728e-02 4.90161019e-02 4.90315451e-02 + 4.90470027e-02 4.90624750e-02 4.90779621e-02 4.90934644e-02 4.91089821e-02 + 4.91245154e-02 4.91400646e-02 4.91556299e-02 4.91712116e-02 4.91868099e-02 + 4.92024251e-02 4.92180573e-02 4.92337069e-02 4.92493740e-02 4.92650589e-02 + 4.92807617e-02 4.92964829e-02 4.93122225e-02 4.93279807e-02 4.93437579e-02 + 4.93595542e-02 4.93753698e-02 4.93912050e-02 4.94070600e-02 4.94229349e-02 + 4.94388300e-02 4.94547455e-02 4.94706817e-02 4.94866386e-02 4.95026165e-02 + 4.95186157e-02 4.95346362e-02 4.95506784e-02 4.95667423e-02 4.95828283e-02 + 4.95989364e-02 4.96150669e-02 4.96312200e-02 4.96473958e-02 4.96635945e-02 + 4.96798164e-02 4.96960615e-02 4.97123302e-02 4.97286224e-02 4.97449385e-02 + 4.97612786e-02 4.97776428e-02 4.97940314e-02 4.98104445e-02 4.98268822e-02 + 4.98433448e-02 4.98598324e-02 4.98763451e-02 4.98928831e-02 4.99094466e-02 + 4.99260357e-02 4.99426506e-02 4.99592915e-02 4.99759584e-02 4.99926515e-02 + 5.00093710e-02 5.00261170e-02 5.00428897e-02 5.00596891e-02 5.00765155e-02 + 5.00933690e-02 5.01102496e-02 5.01271576e-02 5.01440931e-02 5.01610562e-02 + 5.01780470e-02 5.01950657e-02 5.02121123e-02 5.02291871e-02 5.02462901e-02 + 5.02634214e-02 5.02805812e-02 5.02977695e-02 5.03149866e-02 5.03322324e-02 + 5.03495072e-02 5.03668110e-02 5.03841439e-02 5.04015061e-02 5.04188976e-02 + 5.04363186e-02 5.04537691e-02 5.04712492e-02 5.04887591e-02 5.05062988e-02 + 5.05238684e-02 5.05414681e-02 5.05590979e-02 5.05767579e-02 5.05944482e-02 + 5.06121688e-02 5.06299199e-02 5.06477016e-02 5.06655138e-02 5.06833568e-02 + 5.07012306e-02 5.07191352e-02 5.07370707e-02 5.07550372e-02 5.07730348e-02 + 5.07910636e-02 5.08091236e-02 5.08272148e-02 5.08453374e-02 5.08634913e-02 + 5.08816768e-02 5.08998937e-02 5.09181423e-02 5.09364225e-02 5.09547343e-02 + 5.09730780e-02 5.09914534e-02 5.10098606e-02 5.10282998e-02 5.10467709e-02 + 5.10652740e-02 5.10838092e-02 5.11023764e-02 5.11209757e-02 5.11396072e-02 + 5.11582709e-02 5.11769668e-02 5.11956950e-02 5.12144555e-02 5.12332483e-02 + 5.12520735e-02 5.12709311e-02 5.12898211e-02 5.13087435e-02 5.13276985e-02 + 5.13466859e-02 5.13657058e-02 5.13847583e-02 5.14038433e-02 5.14229609e-02 + 5.14421111e-02 5.14612939e-02 5.14805093e-02 5.14997573e-02 5.15190380e-02 + 5.15383513e-02 5.15576973e-02 5.15770759e-02 5.15964872e-02 5.16159312e-02 + 5.16354078e-02 5.16549172e-02 5.16744591e-02 5.16940338e-02 5.17136411e-02 + 5.17332811e-02 5.17529537e-02 5.17726590e-02 5.17923969e-02 5.18121674e-02 + 5.18319706e-02 5.18518063e-02 5.18716747e-02 5.18915756e-02 5.19115090e-02 + 5.19314750e-02 5.19514735e-02 5.19715045e-02 5.19915680e-02 5.20116639e-02 + 5.20317923e-02 5.20519530e-02 5.20721462e-02 5.20923716e-02 5.21126294e-02 + 5.21329194e-02 5.21532417e-02 5.21735963e-02 5.21939830e-02 5.22144018e-02 + 5.22348528e-02 5.22553358e-02 5.22758508e-02 5.22963979e-02 5.23169769e-02 + 5.23375877e-02 5.23582305e-02 5.23789050e-02 5.23996114e-02 5.24203494e-02 + 5.24411191e-02 5.24619205e-02 5.24827534e-02 5.25036178e-02 5.25245136e-02 + 5.25454409e-02 5.25663995e-02 5.25873895e-02 5.26084106e-02 5.26294630e-02 + 5.26505464e-02 5.26716609e-02 5.26928064e-02 5.27139828e-02 5.27351901e-02 + 5.27564281e-02 5.27776969e-02 5.27989964e-02 5.28203265e-02 5.28416870e-02 + 5.28630781e-02 5.28844995e-02 5.29059512e-02 5.29274331e-02 5.29489452e-02 + 5.29704874e-02 5.29920595e-02 5.30136616e-02 5.30352936e-02 5.30569552e-02 + 5.30786466e-02 5.31003676e-02 5.31221181e-02 5.31438980e-02 5.31657073e-02 + 5.31875458e-02 5.32094135e-02 5.32313103e-02 5.32532361e-02 5.32751908e-02 + 5.32971743e-02 5.33191865e-02 5.33412273e-02 5.33632967e-02 5.33853945e-02 + 5.34075207e-02 5.34296751e-02 5.34518577e-02 5.34740683e-02 5.34963069e-02 + 5.35185733e-02 5.35408675e-02 5.35631893e-02 5.35855387e-02 5.36079155e-02 + 5.36303197e-02 5.36527511e-02 5.36752097e-02 5.36976952e-02 5.37202077e-02 + 5.37427470e-02 5.37653129e-02 5.37879055e-02 5.38105245e-02 5.38331699e-02 + 5.38558416e-02 5.38785394e-02 5.39012632e-02 5.39240130e-02 5.39467885e-02 + 5.39695897e-02 5.39924165e-02 5.40152687e-02 5.40381462e-02 5.40610490e-02 + 5.40839768e-02 5.41069296e-02 5.41299073e-02 5.41529097e-02 5.41759366e-02 + 5.41989881e-02 5.42220639e-02 5.42451639e-02 5.42682880e-02 5.42914361e-02 + 5.43146081e-02 5.43378038e-02 5.43610230e-02 5.43842658e-02 5.44075318e-02 + 5.44308211e-02 5.44541334e-02 5.44774687e-02 5.45008268e-02 5.45242076e-02 + 5.45476109e-02 5.45710366e-02 5.45944846e-02 5.46179548e-02 5.46414469e-02 + 5.46649609e-02 5.46884967e-02 5.47120540e-02 5.47356328e-02 5.47592329e-02 + 5.47828542e-02 5.48064965e-02 5.48301598e-02 5.48538438e-02 5.48775484e-02 + 5.49012734e-02 5.49250188e-02 5.49487844e-02 5.49725701e-02 5.49963756e-02 + 5.50202009e-02 5.50440459e-02 5.50679102e-02 5.50917939e-02 5.51156968e-02 + 5.51396187e-02 5.51635595e-02 5.51875190e-02 5.52114972e-02 5.52354937e-02 + 5.52595085e-02 5.52835415e-02 5.53075925e-02 5.53316613e-02 5.53557477e-02 + 5.53798517e-02 5.54039731e-02 5.54281118e-02 5.54522675e-02 5.54764401e-02 + 5.55006295e-02 5.55248356e-02 5.55490581e-02 5.55732969e-02 5.55975518e-02 + 5.56218228e-02 5.56461096e-02 5.56704121e-02 5.56947301e-02 5.57190635e-02 + 5.57434121e-02 5.57677758e-02 5.57921544e-02 5.58165477e-02 5.58409556e-02 + 5.58653780e-02 5.58898146e-02 5.59142653e-02 5.59387300e-02 5.59632085e-02 + 5.59877006e-02 5.60122062e-02 5.60367251e-02 5.60612571e-02 5.60858022e-02 + 5.61103600e-02 5.61349306e-02 5.61595136e-02 5.61841090e-02 5.62087165e-02 + 5.62333361e-02 5.62579675e-02 5.62826106e-02 5.63072653e-02 5.63319313e-02 + 5.63566085e-02 5.63812967e-02 5.64059958e-02 5.64307057e-02 5.64554260e-02 + 5.64801568e-02 5.65048977e-02 5.65296487e-02 5.65544096e-02 5.65791802e-02 + 5.66039604e-02 5.66287499e-02 5.66535486e-02 5.66783565e-02 5.67031732e-02 + 5.67279986e-02 5.67528326e-02 5.67776749e-02 5.68025255e-02 5.68273841e-02 + 5.68522507e-02 5.68771249e-02 5.69020067e-02 5.69268959e-02 5.69517923e-02 + 5.69766957e-02 5.70016060e-02 5.70265231e-02 5.70514466e-02 5.70763766e-02 + 5.71013128e-02 5.71262550e-02 5.71512031e-02 5.71761569e-02 5.72011162e-02 + 5.72260809e-02 5.72510508e-02 5.72760258e-02 5.73010056e-02 5.73259901e-02 + 0.00000000e+00 2.43488551e-08 9.70348995e-08 2.17517882e-07 3.85258271e-07 + 5.99717271e-07 8.60356837e-07 1.16663970e-06 1.51802935e-06 1.91399012e-06 + 2.35398713e-06 2.83748633e-06 3.36395454e-06 3.93285942e-06 4.54366955e-06 + 5.19585437e-06 5.88888425e-06 6.62223049e-06 7.39536534e-06 8.20776200e-06 + 9.05889466e-06 9.94823850e-06 1.08752697e-05 1.18394655e-05 1.28403042e-05 + 1.38772651e-05 1.49498285e-05 1.60574760e-05 1.71996902e-05 1.83759547e-05 + 1.95857545e-05 2.08285756e-05 2.21039051e-05 2.34112314e-05 2.47500441e-05 + 2.61198339e-05 2.75200930e-05 2.89503146e-05 3.04099932e-05 3.18986247e-05 + 3.34157062e-05 3.49607362e-05 3.65332143e-05 3.81326418e-05 3.97585210e-05 + 4.14103560e-05 4.30876518e-05 4.47899152e-05 4.65166542e-05 4.82673784e-05 + 5.00415988e-05 5.18388277e-05 5.36585791e-05 5.55003684e-05 5.73637126e-05 + 5.92481302e-05 6.11531411e-05 6.30782670e-05 6.50230311e-05 6.69869581e-05 + 6.89695743e-05 7.09704078e-05 7.29889882e-05 7.50248468e-05 7.70775165e-05 + 7.91465320e-05 8.12314297e-05 8.33317475e-05 8.54470252e-05 8.75768045e-05 + 8.97206285e-05 9.18780424e-05 9.40485929e-05 9.62318288e-05 9.84273005e-05 + 1.00634560e-04 1.02853162e-04 1.05082663e-04 1.07322619e-04 1.09572592e-04 + 1.11832142e-04 1.14100833e-04 1.16378232e-04 1.18663904e-04 1.20957421e-04 + 1.23258352e-04 1.25566272e-04 1.27880756e-04 1.30201382e-04 1.32527729e-04 + 1.34859378e-04 1.37195914e-04 1.39536921e-04 1.41881988e-04 1.44230704e-04 + 1.46582662e-04 1.48937455e-04 1.51294680e-04 1.53653936e-04 1.56014822e-04 + 1.58376942e-04 1.60739900e-04 1.63103305e-04 1.65466764e-04 1.67829891e-04 + 1.70192298e-04 1.72553602e-04 1.74913422e-04 1.77271378e-04 1.79627094e-04 + 1.81980193e-04 1.84330306e-04 1.86677060e-04 1.89020090e-04 1.91359029e-04 + 1.93693515e-04 1.96023187e-04 1.98347688e-04 2.00666661e-04 2.02979754e-04 + 2.05286615e-04 2.07586897e-04 2.09880254e-04 2.12166341e-04 2.14444820e-04 + 2.16715350e-04 2.18977597e-04 2.21231227e-04 2.23475910e-04 2.25711316e-04 + 2.27937121e-04 2.30153002e-04 2.32358637e-04 2.34553710e-04 2.36737905e-04 + 2.38910909e-04 2.41072412e-04 2.43222107e-04 2.45359690e-04 2.47484858e-04 + 2.49597311e-04 2.51696755e-04 2.53782893e-04 2.55855436e-04 2.57914094e-04 + 2.59958582e-04 2.61988617e-04 2.64003919e-04 2.66004209e-04 2.67989214e-04 + 2.69958661e-04 2.71912281e-04 2.73849808e-04 2.75770978e-04 2.77675531e-04 + 2.79563208e-04 2.81433755e-04 2.83286920e-04 2.85122453e-04 2.86940107e-04 + 2.88739640e-04 2.90520810e-04 2.92283380e-04 2.94027115e-04 2.95751782e-04 + 2.97457154e-04 2.99143004e-04 3.00809109e-04 3.02455248e-04 3.04081205e-04 + 3.05686765e-04 3.07271718e-04 3.08835854e-04 3.10378969e-04 3.11900861e-04 + 3.13401329e-04 3.14880179e-04 3.16337217e-04 3.17772253e-04 3.19185100e-04 + 3.20575574e-04 3.21943493e-04 3.23288681e-04 3.24610962e-04 3.25910165e-04 + 3.27186120e-04 3.28438664e-04 3.29667633e-04 3.30872868e-04 3.32054212e-04 + 3.33211514e-04 3.34344623e-04 3.35453392e-04 3.36537678e-04 3.37597341e-04 + 3.38632243e-04 3.39642250e-04 3.40627231e-04 3.41587060e-04 3.42521610e-04 + 3.43430761e-04 3.44314395e-04 3.45172397e-04 3.46004655e-04 3.46811061e-04 + 3.47591509e-04 3.48345899e-04 3.49074130e-04 3.49776107e-04 3.50451738e-04 + 3.51100935e-04 3.51723611e-04 3.52319684e-04 3.52889075e-04 3.53431707e-04 + 3.53947509e-04 3.54436410e-04 3.54898345e-04 3.55333251e-04 3.55741068e-04 + 3.56121740e-04 3.56475215e-04 3.56801442e-04 3.57100376e-04 3.57371973e-04 + 3.57616194e-04 3.57833003e-04 3.58022366e-04 3.58184254e-04 3.58318641e-04 + 3.58425503e-04 3.58504822e-04 3.58556580e-04 3.58580765e-04 3.58577366e-04 + 3.58546379e-04 3.58487800e-04 3.58401629e-04 3.58287871e-04 3.58146532e-04 + 3.57977623e-04 3.57781159e-04 3.57557155e-04 3.57305633e-04 3.57026618e-04 + 3.56720135e-04 3.56386217e-04 3.56024897e-04 3.55636213e-04 3.55220206e-04 + 3.54776920e-04 3.54306402e-04 3.53808705e-04 3.53283882e-04 3.52731991e-04 + 3.52153093e-04 3.51547253e-04 3.50914539e-04 3.50255023e-04 3.49568779e-04 + 3.48855885e-04 3.48116423e-04 3.47350478e-04 3.46558138e-04 3.45739494e-04 + 3.44894643e-04 3.44023683e-04 3.43126715e-04 3.42203844e-04 3.41255180e-04 + 3.40280834e-04 3.39280922e-04 3.38255563e-04 3.37204879e-04 3.36128995e-04 + 3.35028040e-04 3.33902147e-04 3.32751452e-04 3.31576093e-04 3.30376213e-04 + 3.29151958e-04 3.27903477e-04 3.26630923e-04 3.25334452e-04 3.24014222e-04 + 3.22670397e-04 3.21303142e-04 3.19912628e-04 3.18499026e-04 3.17062513e-04 + 3.15603268e-04 3.14121475e-04 3.12617318e-04 3.11090989e-04 3.09542678e-04 + 3.07972584e-04 3.06380904e-04 3.04767842e-04 3.03133605e-04 3.01478400e-04 + 2.99802442e-04 2.98105947e-04 2.96389132e-04 2.94652222e-04 2.92895443e-04 + 2.91119023e-04 2.89323194e-04 2.87508194e-04 2.85674261e-04 2.83821637e-04 + 2.81950568e-04 2.80061304e-04 2.78154095e-04 2.76229198e-04 2.74286872e-04 + 2.72327377e-04 2.70350981e-04 2.68357950e-04 2.66348556e-04 2.64323075e-04 + 2.62281784e-04 2.60224965e-04 2.58152902e-04 2.56065883e-04 2.53964199e-04 + 2.51848144e-04 2.49718015e-04 2.47574112e-04 2.45416740e-04 2.43246204e-04 + 2.41062815e-04 2.38866886e-04 2.36658733e-04 2.34438675e-04 2.32207035e-04 + 2.29964138e-04 2.27710313e-04 2.25445892e-04 2.23171209e-04 2.20886603e-04 + 2.18592414e-04 2.16288987e-04 2.13976669e-04 2.11655809e-04 2.09326762e-04 + 2.06989883e-04 2.04645532e-04 2.02294071e-04 1.99935866e-04 1.97571284e-04 + 1.95200698e-04 1.92824481e-04 1.90443011e-04 1.88056668e-04 1.85665835e-04 + 1.83270899e-04 1.80872249e-04 1.78470276e-04 1.76065376e-04 1.73657947e-04 + 1.71248388e-04 1.68837105e-04 1.66424504e-04 1.64010993e-04 1.61596986e-04 + 1.59182897e-04 1.56769145e-04 1.54356150e-04 1.51944336e-04 1.49534129e-04 + 1.47125959e-04 1.44720257e-04 1.42317459e-04 1.39918002e-04 1.37522326e-04 + 1.35130875e-04 1.32744094e-04 1.30362432e-04 1.27986339e-04 1.25616271e-04 + 1.23252683e-04 1.20896036e-04 1.18546790e-04 1.16205411e-04 1.13872366e-04 + 1.11548124e-04 1.09233158e-04 1.06927944e-04 1.04632960e-04 1.02348684e-04 + 1.00075601e-04 9.78141952e-05 9.55649553e-05 9.33283715e-05 9.11049369e-05 + 8.88951470e-05 8.66994998e-05 8.45184959e-05 8.23526381e-05 8.02024320e-05 + 7.80683853e-05 7.59510083e-05 7.38508139e-05 7.17683170e-05 6.97040351e-05 + 6.76584882e-05 6.56321985e-05 6.36256905e-05 6.16394911e-05 5.96741296e-05 + 5.77301375e-05 5.58080486e-05 5.39083991e-05 5.20317273e-05 5.01785738e-05 + 4.83494815e-05 4.65449954e-05 4.47656629e-05 4.30120334e-05 4.12846585e-05 + 3.95840921e-05 3.79108901e-05 3.62656107e-05 3.46488140e-05 3.30610623e-05 + 3.15029201e-05 2.99749539e-05 2.84777321e-05 2.70118254e-05 2.55778064e-05 + 2.41762497e-05 2.28077320e-05 2.14728317e-05 2.01721296e-05 1.89062081e-05 + 1.76756517e-05 1.64810468e-05 1.53229816e-05 1.42020464e-05 1.31188332e-05 + 1.20739359e-05 1.10679502e-05 1.01014737e-05 9.17510585e-06 8.28944774e-06 + 7.44510235e-06 6.64267440e-06 5.88277033e-06 5.16599834e-06 4.49296832e-06 + 3.86429185e-06 3.28058222e-06 2.74245435e-06 2.25052482e-06 1.80541184e-06 + 1.40773522e-06 1.05811638e-06 7.57178299e-07 5.05545545e-07 3.03844209e-07 + 1.52701918e-07 5.27478064e-08 4.61250386e-09 8.92811584e-09 6.63282070e-08 + 1.77447784e-07 3.42923278e-07 5.63392527e-07 8.39494760e-07 1.17187058e-06 + 1.56116194e-06 2.00801213e-06 2.51306577e-06 3.07696878e-06 3.70036834e-06 + 4.38391295e-06 5.12825230e-06 5.93403735e-06 6.80192027e-06 7.73255440e-06 + 8.72659429e-06 9.78469564e-06 1.09075153e-05 1.20957112e-05 1.33499424e-05 + 1.46708691e-05 1.60591526e-05 1.75154550e-05 1.90404398e-05 2.06347711e-05 + 2.22991145e-05 2.40341361e-05 2.58405033e-05 2.77188842e-05 2.96699480e-05 + 3.16943647e-05 3.37928053e-05 3.59659416e-05 3.82144461e-05 4.05389924e-05 + 4.29402547e-05 4.54189082e-05 4.79756288e-05 5.06110929e-05 5.33259781e-05 + 5.61209623e-05 5.89967243e-05 6.19539437e-05 6.49933005e-05 6.81154755e-05 + 7.13211502e-05 7.46110064e-05 7.79857269e-05 8.14459948e-05 8.49924937e-05 + 8.86259080e-05 9.23469224e-05 9.61562222e-05 1.00054493e-04 1.04042421e-04 + 1.08120693e-04 1.12289996e-04 1.16551018e-04 1.20904446e-04 1.25350968e-04 + 1.29891273e-04 1.34526050e-04 1.39255988e-04 1.44081776e-04 1.49004104e-04 + 1.54023663e-04 1.59141141e-04 1.64357231e-04 1.69672621e-04 1.75088004e-04 + 1.80604069e-04 1.86221509e-04 1.91941014e-04 1.97763274e-04 2.03688983e-04 + 2.09718831e-04 2.15853509e-04 2.22093709e-04 2.28440122e-04 2.34893440e-04 + 2.41454354e-04 2.48123555e-04 2.54901735e-04 2.61789585e-04 2.68787796e-04 + 2.75897058e-04 2.83118063e-04 2.90451500e-04 2.97898061e-04 3.05458435e-04 + 3.13133313e-04 3.20923384e-04 3.28829337e-04 3.36851861e-04 3.44991646e-04 + 3.53249380e-04 3.61625750e-04 3.70121445e-04 3.78737152e-04 3.87473558e-04 + 3.96331350e-04 4.05311213e-04 4.14413833e-04 4.23639896e-04 4.32990086e-04 + 4.42465087e-04 4.52065583e-04 4.61792257e-04 4.71645791e-04 4.81626868e-04 + 4.91736167e-04 5.01974371e-04 5.12342159e-04 5.22840211e-04 5.33469204e-04 + 5.44229818e-04 5.55122728e-04 5.66148612e-04 5.77308146e-04 5.88602003e-04 + 6.00030859e-04 6.11595386e-04 6.23296257e-04 6.35134144e-04 6.47109717e-04 + 6.59223646e-04 6.71476600e-04 6.83869248e-04 6.96402254e-04 7.09076287e-04 + 7.21892011e-04 7.34850090e-04 7.47951188e-04 7.61195965e-04 7.74585083e-04 + 7.88119202e-04 8.01798981e-04 8.15625077e-04 8.29598146e-04 8.43718845e-04 + 8.57987827e-04 8.72405745e-04 8.86973251e-04 9.01690996e-04 9.16559628e-04 + 9.31579797e-04 9.46752148e-04 9.62077327e-04 9.77555978e-04 9.93188745e-04 + 1.00897627e-03 1.02491919e-03 1.04101814e-03 1.05727377e-03 1.07368671e-03 + 1.09025759e-03 1.10698704e-03 1.12387570e-03 1.14092420e-03 1.15813317e-03 + 1.17550323e-03 1.19303501e-03 1.21072913e-03 1.22858621e-03 1.24660688e-03 + 1.26479176e-03 1.28314145e-03 1.30165659e-03 1.32033777e-03 1.33918562e-03 + 1.35820075e-03 1.37738376e-03 1.39673526e-03 1.41625586e-03 1.43594616e-03 + 1.45580676e-03 1.47583827e-03 1.49604128e-03 1.51641638e-03 1.53696418e-03 + 1.55768526e-03 1.57858022e-03 1.59964965e-03 1.62089413e-03 1.64231425e-03 + 1.66391059e-03 1.68568373e-03 1.70763425e-03 1.72976274e-03 1.75206976e-03 + 1.77455589e-03 1.79722169e-03 1.82006775e-03 1.84309462e-03 1.86630287e-03 + 1.88969307e-03 1.91326577e-03 1.93702154e-03 1.96096092e-03 1.98508448e-03 + 2.00939277e-03 2.03388633e-03 2.05856572e-03 2.08343148e-03 2.10848415e-03 + 2.13372427e-03 2.15915239e-03 2.18476904e-03 2.21057475e-03 2.23657006e-03 + 2.26275549e-03 2.28913158e-03 2.31569884e-03 2.34245780e-03 2.36940899e-03 + 2.39655291e-03 2.42389008e-03 2.45142102e-03 2.47914624e-03 2.50706624e-03 + 2.53518153e-03 2.56349261e-03 2.59199999e-03 2.62070415e-03 2.64960561e-03 + 2.67870484e-03 2.70800234e-03 2.73749860e-03 2.76719410e-03 2.79708933e-03 + 2.82718476e-03 2.85748088e-03 2.88797815e-03 2.91867705e-03 2.94957805e-03 + 2.98068162e-03 3.01198821e-03 3.04349830e-03 3.07521234e-03 3.10713078e-03 + 3.13925408e-03 3.17158269e-03 3.20411705e-03 3.23685762e-03 3.26980484e-03 + 3.30295913e-03 3.33632095e-03 3.36989071e-03 3.40366887e-03 3.43765583e-03 + 3.47185204e-03 3.50625790e-03 3.54087384e-03 3.57570028e-03 3.61073762e-03 + 3.64598629e-03 3.68144668e-03 3.71711921e-03 3.75300427e-03 3.78910226e-03 + 3.82541359e-03 3.86193864e-03 3.89867779e-03 3.93563145e-03 3.97279999e-03 + 4.01018380e-03 4.04778325e-03 4.08559871e-03 4.12363057e-03 4.16187918e-03 + 4.20034492e-03 4.23902814e-03 4.27792921e-03 4.31704848e-03 4.35638630e-03 + 4.39594303e-03 4.43571902e-03 4.47571460e-03 4.51593011e-03 4.55636591e-03 + 4.59702231e-03 4.63789965e-03 4.67899827e-03 4.72031847e-03 4.76186059e-03 + 4.80362495e-03 4.84561186e-03 4.88782162e-03 4.93025456e-03 4.97291097e-03 + 5.01579116e-03 5.05889543e-03 5.10222407e-03 5.14577738e-03 5.18955564e-03 + 5.23355914e-03 5.27778816e-03 5.32224299e-03 5.36692389e-03 5.41183115e-03 + 5.45696503e-03 5.50232579e-03 5.54791370e-03 5.59372902e-03 5.63977201e-03 + 5.68604291e-03 5.73254198e-03 5.77926946e-03 5.82622559e-03 5.87341062e-03 + 5.92082478e-03 5.96846830e-03 6.01634140e-03 6.06444433e-03 6.11277729e-03 + 6.16134051e-03 6.21013420e-03 6.25915857e-03 6.30841384e-03 6.35790020e-03 + 6.40761786e-03 6.45756701e-03 6.50774785e-03 6.55816058e-03 6.60880537e-03 + 6.65968241e-03 6.71079189e-03 6.76213398e-03 6.81370884e-03 6.86551667e-03 + 6.91755761e-03 6.96983183e-03 7.02233950e-03 7.07508076e-03 7.12805578e-03 + 7.18126469e-03 7.23470765e-03 7.28838479e-03 7.34229626e-03 7.39644219e-03 + 7.45082271e-03 7.50543795e-03 7.56028803e-03 7.61537307e-03 7.67069319e-03 + 7.72624851e-03 7.78203912e-03 7.83806515e-03 7.89432669e-03 7.95082384e-03 + 8.00755670e-03 8.06452535e-03 8.12172989e-03 8.17917041e-03 8.23684697e-03 + 8.29475967e-03 8.35290857e-03 8.41129374e-03 8.46991526e-03 8.52877318e-03 + 8.58786757e-03 8.64719848e-03 8.70676596e-03 8.76657006e-03 8.82661083e-03 + 8.88688830e-03 8.94740253e-03 9.00815353e-03 9.06914135e-03 9.13036600e-03 + 9.19182752e-03 9.25352592e-03 9.31546122e-03 9.37763343e-03 9.44004256e-03 + 9.50268862e-03 9.56557160e-03 9.62869151e-03 9.69204834e-03 9.75564209e-03 + 9.81947273e-03 9.88354026e-03 9.94784464e-03 1.00123859e-02 1.00771639e-02 + 1.01421787e-02 1.02074303e-02 1.02729186e-02 1.03386435e-02 1.04046051e-02 + 1.04708033e-02 1.05372379e-02 1.06039091e-02 1.06708166e-02 1.07379605e-02 + 1.08053407e-02 1.08729570e-02 1.09408095e-02 1.10088981e-02 1.10772226e-02 + 1.11457830e-02 1.12145793e-02 1.12836112e-02 1.13528787e-02 1.14223818e-02 + 1.14921203e-02 1.15620941e-02 1.16323030e-02 1.17027471e-02 1.17734261e-02 + 1.18443400e-02 1.19154886e-02 1.19868718e-02 1.20584894e-02 1.21303414e-02 + 1.22024276e-02 1.22747478e-02 1.23473019e-02 1.24200897e-02 1.24931112e-02 + 1.25663661e-02 1.26398543e-02 1.27135756e-02 1.27875299e-02 1.28617170e-02 + 1.29361367e-02 1.30107888e-02 1.30856731e-02 1.31607896e-02 1.32361379e-02 + 1.33117179e-02 1.33875294e-02 1.34635722e-02 1.35398461e-02 1.36163509e-02 + 1.36930863e-02 1.37700523e-02 1.38472485e-02 1.39246747e-02 1.40023308e-02 + 1.40802164e-02 1.41583314e-02 1.42366755e-02 1.43152485e-02 1.43940502e-02 + 1.44730803e-02 1.45523385e-02 1.46318247e-02 1.47115385e-02 1.47914797e-02 + 1.48716480e-02 1.49520432e-02 1.50326651e-02 1.51135133e-02 1.51945875e-02 + 1.52758876e-02 1.53574131e-02 1.54391639e-02 1.55211396e-02 1.56033400e-02 + 1.56857648e-02 1.57684136e-02 1.58512861e-02 1.59343821e-02 1.60177013e-02 + 1.61012433e-02 1.61850079e-02 1.62689946e-02 1.63532033e-02 1.64376335e-02 + 1.65222849e-02 1.66071573e-02 1.66922502e-02 1.67775634e-02 1.68630965e-02 + 1.69488492e-02 1.70348211e-02 1.71210118e-02 1.72074211e-02 1.72940485e-02 + 1.73808937e-02 1.74679564e-02 1.75552362e-02 1.76427326e-02 1.77304454e-02 + 1.78183742e-02 1.79065185e-02 1.79948781e-02 1.80834525e-02 1.81722413e-02 + 1.82612442e-02 1.83504607e-02 1.84398905e-02 1.85295331e-02 1.86193882e-02 + 1.87094554e-02 1.87997342e-02 1.88902243e-02 1.89809251e-02 1.90718364e-02 + 1.91629577e-02 1.92542885e-02 1.93458285e-02 1.94375771e-02 1.95295341e-02 + 1.96216989e-02 1.97140711e-02 1.98066502e-02 1.98994359e-02 1.99924277e-02 + 2.00856251e-02 2.01790276e-02 2.02726349e-02 2.03664465e-02 2.04604618e-02 + 2.05546805e-02 2.06491020e-02 2.07437260e-02 2.08385519e-02 2.09335792e-02 + 2.10288076e-02 2.11242364e-02 2.12198652e-02 2.13156936e-02 2.14117210e-02 + 2.15079470e-02 2.16043710e-02 2.17009926e-02 2.17978112e-02 2.18948264e-02 + 2.19920377e-02 2.20894445e-02 2.21870464e-02 2.22848427e-02 2.23828331e-02 + 2.24810170e-02 2.25793938e-02 2.26779631e-02 2.27767243e-02 2.28756769e-02 + 2.29748204e-02 2.30741542e-02 2.31736778e-02 2.32733907e-02 2.33732923e-02 + 2.34733820e-02 2.35736594e-02 2.36741238e-02 2.37747748e-02 2.38756118e-02 + 2.39766342e-02 2.40778414e-02 2.41792330e-02 2.42808082e-02 2.43825667e-02 + 2.44845078e-02 2.45866309e-02 2.46889354e-02 2.47914209e-02 2.48940867e-02 + 2.49969322e-02 2.50999568e-02 2.52031600e-02 2.53065412e-02 2.54100998e-02 + 2.55138352e-02 2.56177468e-02 2.57218340e-02 2.58260963e-02 2.59305329e-02 + 2.60351434e-02 2.61399271e-02 2.62448834e-02 2.63500117e-02 2.64553114e-02 + 2.65607818e-02 2.66664224e-02 2.67722326e-02 2.68782117e-02 2.69843591e-02 + 2.70906742e-02 2.71971563e-02 2.73038049e-02 2.74106192e-02 2.75175988e-02 + 2.76247429e-02 2.77320509e-02 2.78395221e-02 2.79471560e-02 2.80549519e-02 + 2.81629091e-02 2.82710270e-02 2.83793050e-02 2.84877423e-02 2.85963385e-02 + 2.87050927e-02 2.88140044e-02 2.89230729e-02 2.90322975e-02 2.91416776e-02 + 2.92512125e-02 2.93609016e-02 2.94707442e-02 2.95807396e-02 2.96908871e-02 + 2.98011861e-02 2.99116360e-02 3.00222360e-02 3.01329854e-02 3.02438837e-02 + 3.03549300e-02 3.04661238e-02 3.05774644e-02 3.06889510e-02 3.08005830e-02 + 3.09123597e-02 3.10242804e-02 3.11363445e-02 3.12485511e-02 3.13608997e-02 + 3.14733896e-02 3.15860200e-02 3.16987903e-02 3.18116997e-02 3.19247476e-02 + 3.20379332e-02 3.21512559e-02 3.22647149e-02 3.23783096e-02 3.24920392e-02 + 3.26059030e-02 3.27199004e-02 3.28340306e-02 3.29482928e-02 3.30626865e-02 + 3.31772108e-02 3.32918651e-02 3.34066486e-02 3.35215607e-02 3.36366005e-02 + 3.37517674e-02 3.38670607e-02 3.39824796e-02 3.40980234e-02 3.42136915e-02 + 3.43294829e-02 3.44453971e-02 3.45614333e-02 3.46775908e-02 3.47938688e-02 + 3.49102666e-02 3.50267835e-02 3.51434187e-02 3.52601716e-02 3.53770413e-02 + 3.54940271e-02 3.56111283e-02 3.57283442e-02 3.58456740e-02 3.59631170e-02 + 3.60806724e-02 3.61983395e-02 3.63161175e-02 3.64340058e-02 3.65520035e-02 + 3.66701099e-02 3.67883242e-02 3.69066458e-02 3.70250738e-02 3.71436076e-02 + 3.72622463e-02 3.73809892e-02 3.74998356e-02 3.76187846e-02 3.77378357e-02 + 3.78569879e-02 3.79762406e-02 3.80955929e-02 3.82150442e-02 3.83345937e-02 + 3.84542406e-02 3.85739841e-02 3.86938235e-02 3.88137581e-02 3.89337870e-02 + 3.90539096e-02 3.91741250e-02 3.92944326e-02 3.94148314e-02 3.95353208e-02 + 3.96559000e-02 3.97765683e-02 3.98973248e-02 4.00181689e-02 4.01390997e-02 + 4.02601165e-02 4.03812185e-02 4.05024049e-02 4.06236750e-02 4.07450281e-02 + 4.08664633e-02 4.09879798e-02 4.11095770e-02 4.12312540e-02 4.13530101e-02 + 4.14748445e-02 4.15967564e-02 4.17187451e-02 4.18408097e-02 4.19629496e-02 + 4.20851640e-02 4.22074520e-02 4.23298129e-02 4.24522460e-02 4.25747504e-02 + 4.26973254e-02 4.28199703e-02 4.29426842e-02 4.30654664e-02 4.31883161e-02 + 4.33112325e-02 4.34342149e-02 4.35572624e-02 4.36803744e-02 4.38035500e-02 + 4.39267885e-02 4.40500891e-02 4.41734511e-02 4.42968735e-02 4.44203558e-02 + 4.45438971e-02 4.46674966e-02 4.47911535e-02 4.49148672e-02 4.50386368e-02 + 4.51624615e-02 4.52863406e-02 4.54102733e-02 4.55342588e-02 4.56582964e-02 + 4.57823853e-02 4.59065247e-02 4.60307139e-02 4.61549520e-02 4.62792383e-02 + 4.64035721e-02 4.65279525e-02 4.66523788e-02 4.67768502e-02 4.69013660e-02 + 4.70259254e-02 4.71505276e-02 4.72751719e-02 4.73998574e-02 4.75245834e-02 + 4.76493492e-02 4.77741540e-02 4.78989970e-02 4.80238774e-02 4.81487945e-02 + 4.82737475e-02 4.83987357e-02 4.85237582e-02 4.86488144e-02 4.87739034e-02 + 4.88990245e-02 4.90241770e-02 4.91493600e-02 4.92745728e-02 4.93998147e-02 + 4.95250848e-02 4.96503825e-02 4.97757070e-02 4.99010574e-02 5.00264331e-02 + 5.01518333e-02 5.02772572e-02 5.04027041e-02 5.05281733e-02 5.06536638e-02 + 5.07791751e-02 5.09047064e-02 5.10302569e-02 5.11558258e-02 5.12814124e-02 + 5.14070160e-02 5.15326357e-02 5.16582709e-02 5.17839208e-02 5.19095847e-02 + 5.20352618e-02 5.21609513e-02 5.22866525e-02 5.24123647e-02 5.25380871e-02 + 5.26638190e-02 5.27895597e-02 5.29153083e-02 5.30410642e-02 5.31668266e-02 + 5.32925947e-02 5.34183680e-02 5.35441455e-02 5.36699265e-02 5.37957104e-02 + 5.39214964e-02 5.40472838e-02 5.41730717e-02 5.42988596e-02 5.44246466e-02 + 5.45504321e-02 5.46762153e-02 5.48019954e-02 5.49277718e-02 5.50535437e-02 + 5.51793104e-02 5.53050712e-02 5.54308254e-02 5.55565722e-02 5.56823109e-02 + 5.58080407e-02 5.59337611e-02 5.60594712e-02 5.61851704e-02 5.63108578e-02 + 5.64365329e-02 5.65621949e-02 5.66878431e-02 5.68134767e-02 5.69390952e-02 + 5.70646976e-02 5.71902835e-02 5.73158519e-02 5.74414024e-02 5.75669340e-02 + 5.76924462e-02 5.78179382e-02 5.79434094e-02 5.80688590e-02 5.81942863e-02 + 5.83196907e-02 5.84450715e-02 5.85704278e-02 5.86957592e-02 5.88210648e-02 + 5.89463440e-02 5.90715962e-02 5.91968205e-02 5.93220163e-02 5.94471830e-02 + 5.95723199e-02 5.96974262e-02 5.98225013e-02 5.99475445e-02 6.00725552e-02 + 6.01975327e-02 6.03224762e-02 6.04473851e-02 6.05722588e-02 6.06970966e-02 + 6.08218978e-02 6.09466617e-02 6.10713877e-02 6.11960751e-02 6.13207233e-02 + 6.14453315e-02 6.15698992e-02 6.16944256e-02 6.18189101e-02 6.19433521e-02 + 6.20677509e-02 6.21921059e-02 6.23164163e-02 6.24406816e-02 6.25649011e-02 + 6.26890741e-02 6.28132001e-02 6.29372783e-02 6.30613081e-02 6.31852889e-02 + 6.33092201e-02 6.34331010e-02 6.35569309e-02 6.36807093e-02 6.38044355e-02 + 6.39281089e-02 6.40517288e-02 6.41752947e-02 6.42988058e-02 6.44222616e-02 + 6.45456615e-02 6.46690048e-02 6.47922909e-02 6.49155192e-02 6.50386891e-02 + 6.51617999e-02 6.52848511e-02 6.54078420e-02 6.55307721e-02 6.56536406e-02 + 6.57764471e-02 6.58991910e-02 6.60218715e-02 6.61444881e-02 6.62670403e-02 + 6.63895274e-02 6.65119488e-02 6.66343039e-02 6.67565921e-02 6.68788129e-02 + 6.70009657e-02 6.71230499e-02 6.72450648e-02 6.73670099e-02 6.74888847e-02 + 6.76106885e-02 6.77324208e-02 6.78540809e-02 6.79756684e-02 6.80971826e-02 + 6.82186230e-02 6.83399891e-02 6.84612801e-02 6.85824957e-02 6.87036351e-02 + 6.88246979e-02 6.89456835e-02 6.90665913e-02 6.91874209e-02 6.93081715e-02 + 6.94288427e-02 6.95494340e-02 6.96699447e-02 6.97903744e-02 6.99107224e-02 + 7.00309883e-02 7.01511715e-02 7.02712715e-02 7.03912876e-02 7.05112195e-02 + 7.06310666e-02 7.07508283e-02 7.08705040e-02 7.09900934e-02 7.11095958e-02 + 7.12290107e-02 7.13483377e-02 7.14675761e-02 7.15867255e-02 7.17057853e-02 + 7.18247551e-02 7.19436343e-02 7.20624225e-02 7.21811190e-02 7.22997234e-02 + 7.24182353e-02 7.25366540e-02 7.26549791e-02 7.27732102e-02 7.28913466e-02 + 7.30093879e-02 7.31273337e-02 7.32451834e-02 7.33629365e-02 7.34805926e-02 + 7.35981511e-02 7.37156116e-02 7.38329737e-02 7.39502367e-02 7.40674004e-02 + 7.41844640e-02 7.43014273e-02 7.44182898e-02 7.45350509e-02 7.46517101e-02 + 7.47682672e-02 7.48847215e-02 7.50010726e-02 7.51173201e-02 7.52334634e-02 + 7.53495022e-02 7.54654360e-02 7.55812644e-02 7.56969868e-02 7.58126029e-02 + 7.59281122e-02 7.60435142e-02 7.61588086e-02 7.62739948e-02 7.63890725e-02 + 7.65040412e-02 7.66189005e-02 7.67336500e-02 7.68482891e-02 7.69628176e-02 + 7.70772349e-02 7.71915407e-02 7.73057346e-02 7.74198160e-02 7.75337846e-02 + 7.76476400e-02 7.77613818e-02 7.78750096e-02 7.79885229e-02 7.81019214e-02 + 7.82152046e-02 7.83283722e-02 7.84414237e-02 7.85543587e-02 7.86671770e-02 + 7.87798779e-02 7.88924613e-02 7.90049266e-02 7.91172736e-02 7.92295017e-02 + 7.93416107e-02 7.94536001e-02 7.95654696e-02 7.96772188e-02 7.97888473e-02 + 7.99003547e-02 8.00117407e-02 8.01230050e-02 8.02341470e-02 8.03451666e-02 + 8.04560632e-02 8.05668367e-02 8.06774865e-02 8.07880123e-02 8.08984138e-02 + 8.10086907e-02 8.11188426e-02 8.12288690e-02 8.13387698e-02 8.14485445e-02 + 8.15581929e-02 8.16677145e-02 8.17771090e-02 8.18863761e-02 8.19955155e-02 + 8.21045268e-02 8.22134097e-02 8.23221639e-02 8.24307890e-02 8.25392847e-02 + 8.26476508e-02 8.27558868e-02 8.28639925e-02 8.29719676e-02 8.30798116e-02 + 8.31875245e-02 8.32951057e-02 8.34025550e-02 8.35098722e-02 8.36170568e-02 + 8.37241087e-02 8.38310274e-02 8.39378128e-02 8.40444645e-02 8.41509822e-02 + 8.42573656e-02 8.43636145e-02 8.44697286e-02 8.45757075e-02 8.46815510e-02 + 8.47872588e-02 8.48928306e-02 8.49982662e-02 8.51035653e-02 8.52087276e-02 + 8.53137528e-02 8.54186407e-02 8.55233910e-02 8.56280034e-02 8.57324777e-02 + 8.58368136e-02 8.59410109e-02 8.60450693e-02 8.61489885e-02 8.62527683e-02 + 8.63564085e-02 8.64599088e-02 8.65632689e-02 8.66664887e-02 8.67695678e-02 + 8.68725060e-02 8.69753031e-02 8.70779589e-02 8.71804730e-02 8.72828454e-02 + 8.73850757e-02 8.74871638e-02 8.75891093e-02 8.76909121e-02 8.77925720e-02 + 8.78940887e-02 8.79954620e-02 8.80966917e-02 8.81977776e-02 8.82987195e-02 + 8.83995171e-02 8.85001703e-02 8.86006788e-02 8.87010425e-02 8.88012610e-02 + 8.89013344e-02 8.90012622e-02 8.91010444e-02 8.92006808e-02 8.93001711e-02 + 8.93995152e-02 8.94987128e-02 8.95977638e-02 8.96966680e-02 8.97954252e-02 + 8.98940353e-02 8.99924980e-02 9.00908132e-02 9.01889806e-02 9.02870002e-02 + 9.03848718e-02 9.04825951e-02 9.05801701e-02 9.06775965e-02 9.07748742e-02 + 9.08720029e-02 9.09689827e-02 9.10658132e-02 9.11624944e-02 9.12590261e-02 + 9.13554081e-02 9.14516403e-02 9.15477225e-02 9.16436547e-02 9.17394365e-02 + 9.18350679e-02 9.19305488e-02 9.20258790e-02 9.21210584e-02 9.22160868e-02 + 9.23109641e-02 9.24056902e-02 9.25002649e-02 9.25946881e-02 9.26889596e-02 + 9.27830795e-02 9.28770474e-02 9.29708634e-02 9.30645273e-02 9.31580389e-02 + 9.32513981e-02 9.33446049e-02 9.34376591e-02 9.35305607e-02 9.36233094e-02 + 9.37159052e-02 9.38083480e-02 9.39006377e-02 9.39927741e-02 9.40847572e-02 + 9.41765869e-02 9.42682631e-02 9.43597856e-02 9.44511545e-02 9.45423695e-02 + 9.46334306e-02 9.47243378e-02 9.48150908e-02 9.49056898e-02 9.49961344e-02 + 9.50864248e-02 9.51765607e-02 9.52665422e-02 9.53563691e-02 9.54460414e-02 + 9.55355589e-02 9.56249217e-02 9.57141296e-02 9.58031826e-02 9.58920806e-02 + 9.59808236e-02 9.60694114e-02 9.61578440e-02 9.62461215e-02 9.63342436e-02 + 9.64222103e-02 9.65100217e-02 9.65976776e-02 9.66851779e-02 9.67725227e-02 + 9.68597119e-02 9.69467454e-02 9.70336232e-02 9.71203453e-02 9.72069115e-02 + 9.72933219e-02 9.73795765e-02 9.74656751e-02 9.75516178e-02 9.76374044e-02 + 9.77230351e-02 9.78085097e-02 9.78938282e-02 9.79789907e-02 9.80639969e-02 + 9.81488471e-02 9.82335410e-02 9.83180787e-02 9.84024602e-02 9.84866854e-02 + 9.85707544e-02 9.86546671e-02 9.87384235e-02 9.88220236e-02 9.89054674e-02 + 9.89887548e-02 9.90718859e-02 9.91548606e-02 9.92376790e-02 9.93203411e-02 + 9.94028467e-02 9.94851960e-02 9.95673890e-02 9.96494256e-02 9.97313058e-02 + 9.98130297e-02 9.98945972e-02 9.99760084e-02 1.00057263e-01 1.00138362e-01 + 1.00219304e-01 1.00300090e-01 1.00380720e-01 1.00461193e-01 1.00541510e-01 + 1.00621671e-01 1.00701676e-01 1.00781524e-01 1.00861217e-01 1.00940753e-01 + 1.01020133e-01 1.01099357e-01 1.01178425e-01 1.01257337e-01 1.01336093e-01 + 1.01414693e-01 1.01493137e-01 1.01571425e-01 1.01649557e-01 1.01727534e-01 + 1.01805354e-01 1.01883019e-01 1.01960528e-01 1.02037882e-01 1.02115080e-01 + 1.02192122e-01 1.02269009e-01 1.02345741e-01 1.02422317e-01 1.02498737e-01 + 1.02575002e-01 1.02651112e-01 1.02727067e-01 1.02802867e-01 1.02878511e-01 + 1.02954001e-01 1.03029335e-01 1.03104515e-01 1.03179540e-01 1.03254410e-01 + 1.03329125e-01 1.03403685e-01 1.03478091e-01 1.03552343e-01 1.03626440e-01 + 1.03700382e-01 1.03774170e-01 1.03847804e-01 1.03921284e-01 1.03994610e-01 + 1.04067782e-01 1.04140799e-01 1.04213663e-01 1.04286373e-01 1.04358930e-01 + 1.04431332e-01 1.04503582e-01 1.04575677e-01 1.04647620e-01 1.04719409e-01 + 1.04791045e-01 1.04862528e-01 1.04933857e-01 1.05005034e-01 1.05076058e-01 + 1.05146930e-01 1.05217648e-01 1.05288214e-01 1.05358628e-01 1.05428889e-01 + 1.05498998e-01 1.05568955e-01 1.05638760e-01 1.05708413e-01 1.05777914e-01 + 1.05847263e-01 1.05916461e-01 1.05985507e-01 1.06054401e-01 1.06123145e-01 + 1.06191737e-01 1.06260178e-01 1.06328468e-01 1.06396607e-01 1.06464595e-01 + 1.06532433e-01 1.06600120e-01 1.06667657e-01 1.06735043e-01 1.06802280e-01 + 1.06869366e-01 1.06936302e-01 1.07003089e-01 1.07069725e-01 1.07136212e-01 + 1.07202550e-01 1.07268738e-01 1.07334777e-01 1.07400667e-01 1.07466408e-01 + 1.07532001e-01 1.07597444e-01 1.07662739e-01 1.07727885e-01 1.07792884e-01 + 1.07857734e-01 1.07922436e-01 1.07986990e-01 1.08051396e-01 1.08115655e-01 + 1.08179766e-01 1.08243729e-01 1.08307546e-01 1.08371215e-01 1.08434738e-01 + 1.08498114e-01 1.08561343e-01 1.08624425e-01 1.08687361e-01 1.08750151e-01 + 1.08812795e-01 1.08875293e-01 1.08937645e-01 1.08999851e-01 1.09061912e-01 + 1.09123828e-01 1.09185598e-01 1.09247224e-01 1.09308704e-01 1.09370040e-01 + 1.09431231e-01 1.09492278e-01 1.09553180e-01 1.09613938e-01 1.09674553e-01 + 1.09735023e-01 1.09795350e-01 1.09855533e-01 1.09915573e-01 1.09975470e-01 + 1.10035224e-01 1.10094835e-01 1.10154303e-01 1.10213628e-01 1.10272812e-01 + 1.10331853e-01 1.10390752e-01 1.10449509e-01 1.10508124e-01 1.10566598e-01 + 1.10624931e-01 1.10683122e-01 1.10741172e-01 1.10799082e-01 1.10856850e-01 + 1.10914478e-01 1.10971966e-01 1.11029314e-01 1.11086521e-01 1.11143589e-01 + 1.11200517e-01 1.11257305e-01 1.11313955e-01 1.11370465e-01 1.11426836e-01 + 1.11483068e-01 1.11539162e-01 1.11595117e-01 1.11650934e-01 1.11706612e-01 + 1.11762153e-01 1.11817557e-01 1.11872822e-01 1.11927951e-01 1.11982942e-01 + 1.12037796e-01 1.12092513e-01 1.12147094e-01 1.12201538e-01 1.12255846e-01 + 1.12310017e-01 1.12364053e-01 1.12417954e-01 1.12471718e-01 1.12525348e-01 + 1.12578842e-01 1.12632201e-01 1.12685425e-01 1.12738515e-01 1.12791471e-01 + 1.12844292e-01 1.12896979e-01 1.12949532e-01 1.13001952e-01 1.13054238e-01 + 1.13106391e-01 1.13158411e-01 1.13210299e-01 1.13262053e-01 1.13313675e-01 + 1.13365165e-01 1.13416522e-01 1.13467748e-01 1.13518842e-01 1.13569804e-01 + 1.13620635e-01 1.13671335e-01 1.13721904e-01 1.13772343e-01 1.13822651e-01 + 1.13872828e-01 1.13922876e-01 1.13972793e-01 1.14022581e-01 1.14072239e-01 + 1.14121768e-01 1.14171168e-01 1.14220439e-01 1.14269581e-01 1.14318594e-01 + 1.14367480e-01 1.14416237e-01 1.14464866e-01 1.14513368e-01 1.14561742e-01 + 1.14609988e-01 1.14658108e-01 1.14706101e-01 1.14753967e-01 1.14801706e-01 + 1.14849320e-01 1.14896807e-01 1.14944168e-01 1.14991404e-01 1.15038514e-01 + 1.15085499e-01 1.15132359e-01 1.15179094e-01 1.15225704e-01 1.15272190e-01 + 1.15318552e-01 1.15364790e-01 1.15410904e-01 1.15456894e-01 1.15502761e-01 + 1.15548505e-01 1.15594126e-01 1.15639624e-01 1.15685000e-01 1.15730253e-01 + 1.15775384e-01 1.15820394e-01 1.15865281e-01 1.15910047e-01 1.15954692e-01 + 1.15999216e-01 1.16043619e-01 1.16087901e-01 1.16132063e-01 1.16176105e-01 + 1.16220027e-01 1.16263828e-01 1.16307511e-01 1.16351074e-01 1.16394518e-01 + 1.16437842e-01 1.16481049e-01 1.16524136e-01 1.16567106e-01 1.16609957e-01 + 1.16652690e-01 1.16695306e-01 1.16737805e-01 1.16780186e-01 1.16822450e-01 + 1.16864597e-01 1.16906628e-01 1.16948543e-01 1.16990341e-01 1.17032023e-01 + 1.17073590e-01 1.17115041e-01 1.17156377e-01 1.17197598e-01 1.17238704e-01 + 1.17279696e-01 1.17320573e-01 1.17361336e-01 1.17401984e-01 1.17442520e-01 + 1.17482941e-01 1.17523249e-01 1.17563445e-01 1.17603527e-01 1.17643497e-01 + 1.17683354e-01 1.17723099e-01 1.17762732e-01 1.17802253e-01 1.17841662e-01 + 1.17880961e-01 1.17920148e-01 1.17959224e-01 1.17998189e-01 1.18037044e-01 + 0.00000000e+00 7.21069637e-07 2.87393769e-06 6.44313909e-06 1.14132704e-05 + 1.77689899e-05 2.54950175e-05 3.45761350e-05 4.49971859e-05 5.67430756e-05 + 6.97987714e-05 8.41493023e-05 9.97797595e-05 1.16675296e-04 1.34821127e-04 + 1.54202530e-04 1.74804843e-04 1.96613468e-04 2.19613868e-04 2.43791569e-04 + 2.69132158e-04 2.95621286e-04 3.23244664e-04 3.51988067e-04 3.81837331e-04 + 4.12778355e-04 4.44797101e-04 4.77879591e-04 5.12011912e-04 5.47180212e-04 + 5.83370701e-04 6.20569653e-04 6.58763402e-04 6.97938346e-04 7.38080946e-04 + 7.79177724e-04 8.21215265e-04 8.64180217e-04 9.08059290e-04 9.52839256e-04 + 9.98506949e-04 1.04504927e-03 1.09245317e-03 1.14070568e-03 1.18979389e-03 + 1.23970493e-03 1.29042603e-03 1.34194444e-03 1.39424752e-03 1.44732264e-03 + 1.50115728e-03 1.55573896e-03 1.61105526e-03 1.66709382e-03 1.72384237e-03 + 1.78128866e-03 1.83942054e-03 1.89822590e-03 1.95769270e-03 2.01780896e-03 + 2.07856277e-03 2.13994227e-03 2.20193567e-03 2.26453125e-03 2.32771733e-03 + 2.39148232e-03 2.45581467e-03 2.52070290e-03 2.58613560e-03 2.65210140e-03 + 2.71858902e-03 2.78558723e-03 2.85308485e-03 2.92107079e-03 2.98953399e-03 + 3.05846348e-03 3.12784833e-03 3.19767769e-03 3.26794076e-03 3.33862681e-03 + 3.40972516e-03 3.48122520e-03 3.55311639e-03 3.62538824e-03 3.69803032e-03 + 3.77103228e-03 3.84438380e-03 3.91807465e-03 3.99209466e-03 4.06643370e-03 + 4.14108172e-03 4.21602872e-03 4.29126479e-03 4.36678003e-03 4.44256466e-03 + 4.51860891e-03 4.59490310e-03 4.67143761e-03 4.74820286e-03 4.82518937e-03 + 4.90238769e-03 4.97978843e-03 5.05738227e-03 5.13515997e-03 5.21311231e-03 + 5.29123016e-03 5.36950445e-03 5.44792616e-03 5.52648633e-03 5.60517607e-03 + 5.68398655e-03 5.76290899e-03 5.84193467e-03 5.92105496e-03 6.00026124e-03 + 6.07954500e-03 6.15889775e-03 6.23831109e-03 6.31777667e-03 6.39728618e-03 + 6.47683141e-03 6.55640417e-03 6.63599636e-03 6.71559991e-03 6.79520684e-03 + 6.87480922e-03 6.95439916e-03 7.03396886e-03 7.11351055e-03 7.19301654e-03 + 7.27247919e-03 7.35189093e-03 7.43124423e-03 7.51053163e-03 7.58974574e-03 + 7.66887920e-03 7.74792473e-03 7.82687511e-03 7.90572317e-03 7.98446180e-03 + 8.06308394e-03 8.14158262e-03 8.21995088e-03 8.29818186e-03 8.37626873e-03 + 8.45420474e-03 8.53198318e-03 8.60959741e-03 8.68704084e-03 8.76430693e-03 + 8.84138922e-03 8.91828129e-03 8.99497678e-03 9.07146939e-03 9.14775287e-03 + 9.22382104e-03 9.29966777e-03 9.37528698e-03 9.45067266e-03 9.52581884e-03 + 9.60071962e-03 9.67536915e-03 9.74976163e-03 9.82389135e-03 9.89775260e-03 + 9.97133977e-03 1.00446473e-02 1.01176696e-02 1.01904014e-02 1.02628371e-02 + 1.03349714e-02 1.04067991e-02 1.04783149e-02 1.05495136e-02 1.06203901e-02 + 1.06909393e-02 1.07611563e-02 1.08310359e-02 1.09005734e-02 1.09697639e-02 + 1.10386026e-02 1.11070846e-02 1.11752055e-02 1.12429604e-02 1.13103449e-02 + 1.13773543e-02 1.14439842e-02 1.15102303e-02 1.15760880e-02 1.16415531e-02 + 1.17066214e-02 1.17712886e-02 1.18355505e-02 1.18994031e-02 1.19628422e-02 + 1.20258640e-02 1.20884644e-02 1.21506395e-02 1.22123856e-02 1.22736987e-02 + 1.23345752e-02 1.23950113e-02 1.24550035e-02 1.25145481e-02 1.25736416e-02 + 1.26322805e-02 1.26904613e-02 1.27481808e-02 1.28054355e-02 1.28622221e-02 + 1.29185375e-02 1.29743784e-02 1.30297417e-02 1.30846244e-02 1.31390233e-02 + 1.31929355e-02 1.32463581e-02 1.32992881e-02 1.33517228e-02 1.34036593e-02 + 1.34550949e-02 1.35060269e-02 1.35564527e-02 1.36063696e-02 1.36557752e-02 + 1.37046669e-02 1.37530423e-02 1.38008989e-02 1.38482344e-02 1.38950466e-02 + 1.39413330e-02 1.39870916e-02 1.40323202e-02 1.40770166e-02 1.41211787e-02 + 1.41648046e-02 1.42078922e-02 1.42504396e-02 1.42924450e-02 1.43339064e-02 + 1.43748221e-02 1.44151903e-02 1.44550094e-02 1.44942776e-02 1.45329934e-02 + 1.45711551e-02 1.46087613e-02 1.46458104e-02 1.46823011e-02 1.47182318e-02 + 1.47536014e-02 1.47884084e-02 1.48226516e-02 1.48563299e-02 1.48894419e-02 + 1.49219866e-02 1.49539629e-02 1.49853697e-02 1.50162061e-02 1.50464710e-02 + 1.50761636e-02 1.51052830e-02 1.51338283e-02 1.51617988e-02 1.51891936e-02 + 1.52160122e-02 1.52422538e-02 1.52679177e-02 1.52930035e-02 1.53175105e-02 + 1.53414383e-02 1.53647864e-02 1.53875543e-02 1.54097417e-02 1.54313483e-02 + 1.54523737e-02 1.54728176e-02 1.54926799e-02 1.55119603e-02 1.55306587e-02 + 1.55487751e-02 1.55663092e-02 1.55832611e-02 1.55996309e-02 1.56154184e-02 + 1.56306239e-02 1.56452475e-02 1.56592892e-02 1.56727493e-02 1.56856281e-02 + 1.56979258e-02 1.57096426e-02 1.57207790e-02 1.57313354e-02 1.57413121e-02 + 1.57507095e-02 1.57595283e-02 1.57677688e-02 1.57754317e-02 1.57825176e-02 + 1.57890270e-02 1.57949607e-02 1.58003193e-02 1.58051036e-02 1.58093144e-02 + 1.58129524e-02 1.58160185e-02 1.58185135e-02 1.58204384e-02 1.58217941e-02 + 1.58225815e-02 1.58228017e-02 1.58224557e-02 1.58215446e-02 1.58200695e-02 + 1.58180314e-02 1.58154316e-02 1.58122713e-02 1.58085517e-02 1.58042740e-02 + 1.57994396e-02 1.57940497e-02 1.57881058e-02 1.57816092e-02 1.57745612e-02 + 1.57669635e-02 1.57588174e-02 1.57501244e-02 1.57408862e-02 1.57311041e-02 + 1.57207799e-02 1.57099152e-02 1.56985116e-02 1.56865708e-02 1.56740944e-02 + 1.56610844e-02 1.56475423e-02 1.56334700e-02 1.56188694e-02 1.56037422e-02 + 1.55880904e-02 1.55719159e-02 1.55552205e-02 1.55380063e-02 1.55202751e-02 + 1.55020292e-02 1.54832704e-02 1.54640008e-02 1.54442226e-02 1.54239378e-02 + 1.54031486e-02 1.53818571e-02 1.53600655e-02 1.53377761e-02 1.53149911e-02 + 1.52917128e-02 1.52679433e-02 1.52436851e-02 1.52189406e-02 1.51937119e-02 + 1.51680016e-02 1.51418120e-02 1.51151455e-02 1.50880047e-02 1.50603920e-02 + 1.50323098e-02 1.50037607e-02 1.49747473e-02 1.49452721e-02 1.49153377e-02 + 1.48849466e-02 1.48541016e-02 1.48228052e-02 1.47910602e-02 1.47588692e-02 + 1.47262349e-02 1.46931601e-02 1.46596475e-02 1.46256998e-02 1.45913200e-02 + 1.45565107e-02 1.45212748e-02 1.44856151e-02 1.44495346e-02 1.44130360e-02 + 1.43761224e-02 1.43387965e-02 1.43010615e-02 1.42629201e-02 1.42243754e-02 + 1.41854304e-02 1.41460881e-02 1.41063514e-02 1.40662236e-02 1.40257075e-02 + 1.39848063e-02 1.39435230e-02 1.39018609e-02 1.38598229e-02 1.38174123e-02 + 1.37746322e-02 1.37314857e-02 1.36879760e-02 1.36441064e-02 1.35998801e-02 + 1.35553002e-02 1.35103700e-02 1.34650928e-02 1.34194718e-02 1.33735104e-02 + 1.33272118e-02 1.32805793e-02 1.32336162e-02 1.31863260e-02 1.31387118e-02 + 1.30907772e-02 1.30425254e-02 1.29939598e-02 1.29450839e-02 1.28959010e-02 + 1.28464146e-02 1.27966281e-02 1.27465449e-02 1.26961685e-02 1.26455023e-02 + 1.25945499e-02 1.25433146e-02 1.24918000e-02 1.24400097e-02 1.23879470e-02 + 1.23356156e-02 1.22830189e-02 1.22301605e-02 1.21770439e-02 1.21236728e-02 + 1.20700506e-02 1.20161810e-02 1.19620674e-02 1.19077136e-02 1.18531231e-02 + 1.17982995e-02 1.17432464e-02 1.16879675e-02 1.16324664e-02 1.15767466e-02 + 1.15208119e-02 1.14646658e-02 1.14083121e-02 1.13517544e-02 1.12949964e-02 + 1.12380417e-02 1.11808940e-02 1.11235569e-02 1.10660343e-02 1.10083296e-02 + 1.09504468e-02 1.08923894e-02 1.08341611e-02 1.07757657e-02 1.07172069e-02 + 1.06584883e-02 1.05996138e-02 1.05405870e-02 1.04814116e-02 1.04220914e-02 + 1.03626301e-02 1.03030315e-02 1.02432992e-02 1.01834370e-02 1.01234487e-02 + 1.00633380e-02 1.00031086e-02 9.94276435e-03 9.88230889e-03 9.82174601e-03 + 9.76107946e-03 9.70031298e-03 9.63945032e-03 9.57849524e-03 9.51745148e-03 + 9.45632281e-03 9.39511296e-03 9.33382569e-03 9.27246474e-03 9.21103388e-03 + 9.14953684e-03 9.08797738e-03 9.02635924e-03 8.96468616e-03 8.90296189e-03 + 8.84119018e-03 8.77937476e-03 8.71751937e-03 8.65562775e-03 8.59370363e-03 + 8.53175075e-03 8.46977283e-03 8.40777359e-03 8.34575677e-03 8.28372608e-03 + 8.22168524e-03 8.15963796e-03 8.09758795e-03 8.03553892e-03 7.97349457e-03 + 7.91145859e-03 7.84943468e-03 7.78742653e-03 7.72543782e-03 7.66347224e-03 + 7.60153345e-03 7.53962513e-03 7.47775093e-03 7.41591453e-03 7.35411956e-03 + 7.29236969e-03 7.23066854e-03 7.16901976e-03 7.10742698e-03 7.04589381e-03 + 6.98442388e-03 6.92302079e-03 6.86168815e-03 6.80042955e-03 6.73924858e-03 + 6.67814882e-03 6.61713385e-03 6.55620723e-03 6.49537252e-03 6.43463328e-03 + 6.37399304e-03 6.31345533e-03 6.25302370e-03 6.19270165e-03 6.13249269e-03 + 6.07240032e-03 6.01242804e-03 5.95257933e-03 5.89285766e-03 5.83326649e-03 + 5.77380928e-03 5.71448947e-03 5.65531051e-03 5.59627581e-03 5.53738879e-03 + 5.47865285e-03 5.42007139e-03 5.36164780e-03 5.30338545e-03 5.24528770e-03 + 5.18735790e-03 5.12959940e-03 5.07201552e-03 5.01460958e-03 4.95738490e-03 + 4.90034477e-03 4.84349247e-03 4.78683128e-03 4.73036445e-03 4.67409524e-03 + 4.61802688e-03 4.56216259e-03 4.50650560e-03 4.45105909e-03 4.39582627e-03 + 4.34081029e-03 4.28601432e-03 4.23144152e-03 4.17709501e-03 4.12297792e-03 + 4.06909335e-03 4.01544441e-03 3.96203417e-03 3.90886570e-03 3.85594206e-03 + 3.80326629e-03 3.75084141e-03 3.69867044e-03 3.64675637e-03 3.59510219e-03 + 3.54371086e-03 3.49258535e-03 3.44172859e-03 3.39114350e-03 3.34083300e-03 + 3.29079998e-03 3.24104732e-03 3.19157789e-03 3.14239453e-03 3.09350009e-03 + 3.04489737e-03 2.99658919e-03 2.94857832e-03 2.90086754e-03 2.85345962e-03 + 2.80635727e-03 2.75956324e-03 2.71308022e-03 2.66691091e-03 2.62105798e-03 + 2.57552409e-03 2.53031188e-03 2.48542398e-03 2.44086299e-03 2.39663151e-03 + 2.35273210e-03 2.30916734e-03 2.26593975e-03 2.22305186e-03 2.18050618e-03 + 2.13830519e-03 2.09645137e-03 2.05494716e-03 2.01379501e-03 1.97299733e-03 + 1.93255653e-03 1.89247498e-03 1.85275505e-03 1.81339909e-03 1.77440942e-03 + 1.73578836e-03 1.69753820e-03 1.65966122e-03 1.62215965e-03 1.58503576e-03 + 1.54829175e-03 1.51192982e-03 1.47595216e-03 1.44036093e-03 1.40515827e-03 + 1.37034631e-03 1.33592716e-03 1.30190290e-03 1.26827560e-03 1.23504731e-03 + 1.20222006e-03 1.16979586e-03 1.13777671e-03 1.10616457e-03 1.07496140e-03 + 1.04416914e-03 1.01378970e-03 9.83824969e-04 9.54276828e-04 9.25147131e-04 + 8.96437715e-04 8.68150396e-04 8.40286972e-04 8.12849218e-04 7.85838891e-04 + 7.59257730e-04 7.33107451e-04 7.07389751e-04 6.82106308e-04 6.57258779e-04 + 6.32848801e-04 6.08877990e-04 5.85347945e-04 5.62260240e-04 5.39616433e-04 + 5.17418060e-04 4.95666636e-04 4.74363657e-04 4.53510597e-04 4.33108912e-04 + 4.13160036e-04 3.93665382e-04 3.74626344e-04 3.56044295e-04 3.37920586e-04 + 3.20256549e-04 3.03053496e-04 2.86312717e-04 2.70035481e-04 2.54223038e-04 + 2.38876617e-04 2.23997425e-04 2.09586650e-04 1.95645457e-04 1.82174994e-04 + 1.69176383e-04 1.56650731e-04 1.44599120e-04 1.33022613e-04 1.21922252e-04 + 1.11299058e-04 1.01154031e-04 9.14881514e-05 8.23023770e-05 7.35976459e-05 + 6.53748752e-05 5.76349612e-05 5.03787793e-05 4.36071839e-05 3.73210090e-05 + 3.15210675e-05 2.62081515e-05 2.13830322e-05 1.70464604e-05 1.31991656e-05 + 9.84185676e-06 6.97522210e-06 4.59992895e-06 2.71662394e-06 1.32593293e-06 + 4.28461042e-07 2.47926797e-08 1.15491538e-07 7.01100617e-07 1.78214224e-06 + 3.35911808e-06 5.43250917e-06 8.00277591e-06 1.10703581e-05 1.46356750e-05 + 1.86991254e-05 2.32610873e-05 2.83219184e-05 3.38819559e-05 3.99415166e-05 + 4.65008967e-05 5.35603723e-05 6.11201988e-05 6.91806116e-05 7.77418256e-05 + 8.68040355e-05 9.63674158e-05 1.06432121e-04 1.16998284e-04 1.28066021e-04 + 1.39635424e-04 1.51706568e-04 1.64279507e-04 1.77354274e-04 1.90930884e-04 + 2.05009331e-04 2.19589589e-04 2.34671614e-04 2.50255339e-04 2.66340680e-04 + 2.82927533e-04 3.00015773e-04 3.17605258e-04 3.35695825e-04 3.54287290e-04 + 3.73379453e-04 3.92972092e-04 4.13064968e-04 4.33657820e-04 4.54750370e-04 + 4.76342321e-04 4.98433355e-04 5.21023138e-04 5.44111315e-04 5.67697513e-04 + 5.91781339e-04 6.16362383e-04 6.41440216e-04 6.67014390e-04 6.93084439e-04 + 7.19649877e-04 7.46710203e-04 7.74264894e-04 8.02313411e-04 8.30855196e-04 + 8.59889675e-04 8.89416252e-04 9.19434318e-04 9.49943242e-04 9.80942378e-04 + 1.01243106e-03 1.04440861e-03 1.07687432e-03 1.10982748e-03 1.14326736e-03 + 1.17719320e-03 1.21160423e-03 1.24649967e-03 1.28187871e-03 1.31774054e-03 + 1.35408432e-03 1.39090920e-03 1.42821430e-03 1.46599875e-03 1.50426163e-03 + 1.54300203e-03 1.58221902e-03 1.62191164e-03 1.66207893e-03 1.70271991e-03 + 1.74383357e-03 1.78541889e-03 1.82747486e-03 1.87000043e-03 1.91299453e-03 + 1.95645609e-03 2.00038401e-03 2.04477720e-03 2.08963453e-03 2.13495485e-03 + 2.18073704e-03 2.22697990e-03 2.27368228e-03 2.32084296e-03 2.36846075e-03 + 2.41653443e-03 2.46506274e-03 2.51404445e-03 2.56347828e-03 2.61336297e-03 + 2.66369722e-03 2.71447972e-03 2.76570915e-03 2.81738418e-03 2.86950348e-03 + 2.92206567e-03 2.97506939e-03 3.02851326e-03 3.08239588e-03 3.13671584e-03 + 3.19147173e-03 3.24666210e-03 3.30228551e-03 3.35834052e-03 3.41482564e-03 + 3.47173940e-03 3.52908031e-03 3.58684686e-03 3.64503754e-03 3.70365083e-03 + 3.76268518e-03 3.82213906e-03 3.88201090e-03 3.94229914e-03 4.00300220e-03 + 4.06411848e-03 4.12564639e-03 4.18758433e-03 4.24993067e-03 4.31268378e-03 + 4.37584203e-03 4.43940377e-03 4.50336734e-03 4.56773109e-03 4.63249332e-03 + 4.69765237e-03 4.76320654e-03 4.82915413e-03 4.89549343e-03 4.96222273e-03 + 5.02934030e-03 5.09684441e-03 5.16473332e-03 5.23300528e-03 5.30165854e-03 + 5.37069134e-03 5.44010191e-03 5.50988847e-03 5.58004924e-03 5.65058244e-03 + 5.72148626e-03 5.79275891e-03 5.86439858e-03 5.93640345e-03 6.00877172e-03 + 6.08150155e-03 6.15459112e-03 6.22803858e-03 6.30184211e-03 6.37599985e-03 + 6.45050997e-03 6.52537060e-03 6.60057988e-03 6.67613596e-03 6.75203698e-03 + 6.82828105e-03 6.90486631e-03 6.98179088e-03 7.05905289e-03 7.13665044e-03 + 7.21458166e-03 7.29284466e-03 7.37143754e-03 7.45035841e-03 7.52960538e-03 + 7.60917656e-03 7.68907003e-03 7.76928391e-03 7.84981629e-03 7.93066527e-03 + 8.01182895e-03 8.09330541e-03 8.17509277e-03 8.25718910e-03 8.33959250e-03 + 8.42230108e-03 8.50531292e-03 8.58862611e-03 8.67223876e-03 8.75614896e-03 + 8.84035481e-03 8.92485441e-03 9.00964584e-03 9.09472723e-03 9.18009666e-03 + 9.26575225e-03 9.35169210e-03 9.43791432e-03 9.52441702e-03 9.61119832e-03 + 9.69825633e-03 9.78558918e-03 9.87319498e-03 9.96107188e-03 1.00492180e-02 + 1.01376315e-02 1.02263104e-02 1.03152530e-02 1.04044574e-02 1.04939217e-02 + 1.05836441e-02 1.06736228e-02 1.07638559e-02 1.08543416e-02 1.09450781e-02 + 1.10360636e-02 1.11272962e-02 1.12187742e-02 1.13104958e-02 1.14024591e-02 + 1.14946625e-02 1.15871040e-02 1.16797821e-02 1.17726948e-02 1.18658405e-02 + 1.19592175e-02 1.20528239e-02 1.21466580e-02 1.22407183e-02 1.23350028e-02 + 1.24295100e-02 1.25242382e-02 1.26191856e-02 1.27143506e-02 1.28097316e-02 + 1.29053269e-02 1.30011349e-02 1.30971539e-02 1.31933823e-02 1.32898186e-02 + 1.33864611e-02 1.34833083e-02 1.35803585e-02 1.36776103e-02 1.37750621e-02 + 1.38727123e-02 1.39705595e-02 1.40686021e-02 1.41668387e-02 1.42652677e-02 + 1.43638877e-02 1.44626973e-02 1.45616950e-02 1.46608794e-02 1.47602491e-02 + 1.48598027e-02 1.49595389e-02 1.50594562e-02 1.51595533e-02 1.52598289e-02 + 1.53602817e-02 1.54609104e-02 1.55617136e-02 1.56626903e-02 1.57638390e-02 + 1.58651585e-02 1.59666478e-02 1.60683054e-02 1.61701304e-02 1.62721215e-02 + 1.63742776e-02 1.64765975e-02 1.65790802e-02 1.66817246e-02 1.67845297e-02 + 1.68874943e-02 1.69906174e-02 1.70938981e-02 1.71973354e-02 1.73009283e-02 + 1.74046758e-02 1.75085771e-02 1.76126313e-02 1.77168374e-02 1.78211946e-02 + 1.79257022e-02 1.80303592e-02 1.81351648e-02 1.82401184e-02 1.83452192e-02 + 1.84504664e-02 1.85558594e-02 1.86613974e-02 1.87670799e-02 1.88729063e-02 + 1.89788758e-02 1.90849880e-02 1.91912422e-02 1.92976381e-02 1.94041749e-02 + 1.95108524e-02 1.96176701e-02 1.97246274e-02 1.98317241e-02 1.99389597e-02 + 2.00463340e-02 2.01538465e-02 2.02614971e-02 2.03692854e-02 2.04772113e-02 + 2.05852745e-02 2.06934748e-02 2.08018121e-02 2.09102863e-02 2.10188973e-02 + 2.11276450e-02 2.12365294e-02 2.13455506e-02 2.14547084e-02 2.15640031e-02 + 2.16734346e-02 2.17830032e-02 2.18927089e-02 2.20025519e-02 2.21125325e-02 + 2.22226510e-02 2.23329075e-02 2.24433024e-02 2.25538360e-02 2.26645088e-02 + 2.27753211e-02 2.28862734e-02 2.29973661e-02 2.31085997e-02 2.32199749e-02 + 2.33314922e-02 2.34431522e-02 2.35549555e-02 2.36669028e-02 2.37789949e-02 + 2.38912325e-02 2.40036163e-02 2.41161473e-02 2.42288263e-02 2.43416541e-02 + 2.44546317e-02 2.45677602e-02 2.46810404e-02 2.47944734e-02 2.49080604e-02 + 2.50218024e-02 2.51357006e-02 2.52497562e-02 2.53639704e-02 2.54783445e-02 + 2.55928799e-02 2.57075779e-02 2.58224398e-02 2.59374671e-02 2.60526613e-02 + 2.61680239e-02 2.62835565e-02 2.63992605e-02 2.65151378e-02 2.66311899e-02 + 2.67474187e-02 2.68638257e-02 2.69804129e-02 2.70971821e-02 2.72141351e-02 + 2.73312740e-02 2.74486006e-02 2.75661170e-02 2.76838253e-02 2.78017276e-02 + 2.79198259e-02 2.80381226e-02 2.81566198e-02 2.82753198e-02 2.83942249e-02 + 2.85133376e-02 2.86326602e-02 2.87521952e-02 2.88719451e-02 2.89919124e-02 + 2.91120998e-02 2.92325099e-02 2.93531454e-02 2.94740090e-02 2.95951036e-02 + 2.97164319e-02 2.98379969e-02 2.99598014e-02 3.00818485e-02 3.02041411e-02 + 3.03266825e-02 3.04494756e-02 3.05725236e-02 3.06958298e-02 3.08193975e-02 + 3.09432300e-02 3.10673306e-02 3.11917028e-02 3.13163500e-02 3.14412758e-02 + 3.15664837e-02 3.16919774e-02 3.18177606e-02 3.19438369e-02 3.20702102e-02 + 3.21968843e-02 3.23238631e-02 3.24511504e-02 3.25787504e-02 3.27066671e-02 + 3.28349045e-02 3.29634668e-02 3.30923581e-02 3.32215829e-02 3.33511453e-02 + 3.34810498e-02 3.36113007e-02 3.37419026e-02 3.38728600e-02 3.40041774e-02 + 3.41358595e-02 3.42679109e-02 3.44003366e-02 3.45331412e-02 3.46663296e-02 + 3.47999067e-02 3.49338776e-02 3.50682472e-02 3.52030207e-02 3.53382032e-02 + 3.54737998e-02 3.56098160e-02 3.57462569e-02 3.58831280e-02 3.60204348e-02 + 3.61581826e-02 3.62963771e-02 3.64350239e-02 3.65741287e-02 3.67136971e-02 + 3.68537351e-02 3.69942484e-02 3.71352429e-02 3.72767247e-02 3.74186997e-02 + 3.75611742e-02 3.77041541e-02 3.78476458e-02 3.79916555e-02 3.81361895e-02 + 3.82812543e-02 3.84268564e-02 3.85730022e-02 3.87196983e-02 3.88669514e-02 + 3.90147683e-02 3.91631556e-02 3.93121202e-02 3.94616691e-02 3.96118091e-02 + 3.97625473e-02 3.99138909e-02 4.00658470e-02 4.02184227e-02 4.03716254e-02 + 4.05254624e-02 4.06799412e-02 4.08350692e-02 4.09908540e-02 4.11473032e-02 + 4.13044244e-02 4.14622254e-02 4.16207140e-02 4.17798981e-02 4.19397857e-02 + 4.21003846e-02 4.22617031e-02 4.24237492e-02 4.25865311e-02 4.27500572e-02 + 4.29143358e-02 4.30793752e-02 4.32451840e-02 4.34117706e-02 4.35791438e-02 + 4.37473122e-02 4.39162845e-02 4.40860696e-02 4.42566763e-02 4.44281136e-02 + 4.46003905e-02 4.47735162e-02 4.49474997e-02 4.51223503e-02 4.52980774e-02 + 4.54746902e-02 4.56521983e-02 4.58306111e-02 4.60099382e-02 4.61901893e-02 + 4.63713741e-02 4.65535024e-02 4.67365841e-02 4.69206290e-02 4.71056473e-02 + 4.72916489e-02 4.74786441e-02 4.76666430e-02 4.78556559e-02 4.80456933e-02 + 4.82367655e-02 4.84288831e-02 4.86220567e-02 4.88162968e-02 4.90116143e-02 + 4.92080199e-02 4.94055246e-02 4.96041392e-02 4.98038747e-02 5.00047424e-02 + 5.02067532e-02 5.04099186e-02 5.06142498e-02 5.08197581e-02 5.10264551e-02 + 5.12343523e-02 5.14434613e-02 5.16537938e-02 5.18653616e-02 5.20781765e-02 + 5.22922503e-02 5.25075952e-02 5.27242231e-02 5.29421462e-02 5.31613767e-02 + 5.33819268e-02 5.36038091e-02 5.38270358e-02 5.40516196e-02 5.42775730e-02 + 5.45049086e-02 5.47336392e-02 5.49637777e-02 5.51953370e-02 5.54283299e-02 + 5.56627696e-02 5.58986692e-02 5.61360419e-02 5.63749010e-02 5.66152598e-02 + 5.68571317e-02 5.71005304e-02 5.73454693e-02 5.75919622e-02 5.78400227e-02 + 5.80896648e-02 5.83409023e-02 5.85937492e-02 5.88482195e-02 5.91043274e-02 + 5.93620871e-02 5.96215130e-02 5.98826193e-02 6.01454205e-02 6.04099311e-02 + 6.06761659e-02 6.09441393e-02 6.12138663e-02 6.14853616e-02 6.17586402e-02 + 6.20337170e-02 6.23106073e-02 6.25893260e-02 6.28698885e-02 6.31523100e-02 + 6.34366061e-02 6.37227921e-02 6.40108836e-02 6.43008963e-02 6.45928458e-02 + 6.48867480e-02 6.51826187e-02 6.54804740e-02 6.57803298e-02 6.60822022e-02 + 6.63861076e-02 6.66920620e-02 6.70000820e-02 6.73101839e-02 6.76223842e-02 + 6.79366996e-02 6.82531468e-02 6.85717424e-02 6.88925034e-02 6.92154467e-02 + 6.95405892e-02 6.98679481e-02 7.01975405e-02 7.05293837e-02 7.08634950e-02 + 7.11998918e-02 7.15385916e-02 7.18796120e-02 7.22229706e-02 7.25686852e-02 + 7.29167735e-02 7.32672535e-02 7.36201432e-02 7.39754605e-02 7.43332238e-02 + 7.46934510e-02 7.50561607e-02 7.54213711e-02 7.57891008e-02 7.61593682e-02 + 7.65321920e-02 7.69075909e-02 7.72855838e-02 7.76661894e-02 7.80494268e-02 + 7.84353149e-02 7.88238730e-02 7.92151201e-02 7.96090757e-02 8.00057589e-02 + 8.04051894e-02 8.08073866e-02 8.12123701e-02 8.16201597e-02 8.20307750e-02 + 8.24442360e-02 8.28605626e-02 8.32797748e-02 8.37018927e-02 8.41269365e-02 + 8.45549265e-02 8.49858830e-02 8.54198264e-02 8.58567773e-02 8.62967562e-02 + 8.67397838e-02 8.71858809e-02 8.76350683e-02 8.80873669e-02 8.85427977e-02 + 8.90013819e-02 8.94631405e-02 8.99280948e-02 9.03962662e-02 9.08676760e-02 + 9.13423458e-02 9.18202971e-02 9.23015516e-02 9.27861310e-02 9.32740571e-02 + 9.37653518e-02 9.42600372e-02 9.47581352e-02 9.52596680e-02 9.57646578e-02 + 9.62731270e-02 9.67850979e-02 9.73005931e-02 9.78196349e-02 9.83422462e-02 + 9.88684495e-02 9.93982677e-02 9.99317237e-02 1.00468840e-01 1.01009641e-01 + 1.01554148e-01 1.02102385e-01 1.02654376e-01 1.03210143e-01 1.03769711e-01 + 1.04333102e-01 1.04900341e-01 1.05471450e-01 1.06046454e-01 1.06625377e-01 + 1.07208242e-01 1.07795073e-01 1.08385896e-01 1.08980733e-01 1.09579608e-01 + 1.10182548e-01 1.10789574e-01 1.11400713e-01 1.12015989e-01 1.12635426e-01 + 1.13259049e-01 1.13886884e-01 1.14518954e-01 1.15155284e-01 1.15795901e-01 + 1.16440828e-01 1.17090092e-01 1.17743717e-01 1.18401728e-01 1.19064152e-01 + 1.19731014e-01 1.20402338e-01 1.21078152e-01 1.21758481e-01 1.22443350e-01 + 1.23132785e-01 1.23826813e-01 1.24525459e-01 1.25228750e-01 1.25936712e-01 + 1.26649371e-01 1.27366754e-01 1.28088886e-01 1.28815795e-01 1.29547507e-01 + 1.30284049e-01 1.31025448e-01 1.31771730e-01 1.32522922e-01 1.33279051e-01 + 1.34040145e-01 1.34806231e-01 1.35577335e-01 1.36353485e-01 1.37134708e-01 + 1.37921033e-01 1.38712486e-01 1.39509094e-01 1.40310887e-01 1.41117891e-01 + 1.41930134e-01 1.42747644e-01 1.43570449e-01 1.44398578e-01 1.45232058e-01 + 1.46070917e-01 1.46915184e-01 1.47764888e-01 1.48620056e-01 1.49480717e-01 + 1.50346899e-01 1.51218632e-01 1.52095944e-01 1.52978863e-01 1.53867420e-01 + 1.54761642e-01 1.55661558e-01 1.56567199e-01 1.57478592e-01 1.58395767e-01 + 1.59318754e-01 1.60247581e-01 1.61182279e-01 1.62122877e-01 1.63069403e-01 + 1.64021889e-01 1.64980364e-01 1.65944857e-01 1.66915399e-01 1.67892019e-01 + 1.68874747e-01 1.69863614e-01 1.70858650e-01 1.71859884e-01 1.72867348e-01 + 1.73881072e-01 1.74901085e-01 1.75927419e-01 1.76960104e-01 1.77999170e-01 + 1.79044650e-01 1.80096572e-01 1.81154968e-01 1.82219870e-01 1.83291308e-01 + 1.84369312e-01 1.85453915e-01 1.86545148e-01 1.87643041e-01 1.88747626e-01 + 1.89858934e-01 1.90976997e-01 1.92101847e-01 1.93233514e-01 1.94372032e-01 + 1.95517430e-01 1.96669742e-01 1.97828999e-01 1.98995233e-01 2.00168475e-01 + 2.01348759e-01 2.02536116e-01 2.03730578e-01 2.04932178e-01 2.06140947e-01 + 2.07356919e-01 2.08580125e-01 2.09810599e-01 2.11048372e-01 2.12293478e-01 + 2.13545949e-01 2.14805817e-01 2.16073116e-01 2.17347879e-01 2.18630138e-01 + 2.19919927e-01 2.21217278e-01 2.22522225e-01 2.23834800e-01 2.25155038e-01 + 2.26482971e-01 2.27818633e-01 2.29162056e-01 2.30513276e-01 2.31872325e-01 + 2.33239236e-01 2.34614044e-01 2.35996782e-01 2.37387484e-01 2.38786184e-01 + 2.40192915e-01 2.41607712e-01 2.43030609e-01 2.44461640e-01 2.45900838e-01 + 2.47348238e-01 2.48803875e-01 2.50267782e-01 2.51739994e-01 2.53220545e-01 + 2.54709470e-01 2.56206803e-01 2.57712579e-01 2.59226833e-01 2.60749598e-01 + 2.62280911e-01 2.63820805e-01 2.65369316e-01 2.66926478e-01 2.68492326e-01 + 2.70066896e-01 2.71650222e-01 2.73242339e-01 2.74843284e-01 2.76453090e-01 + 2.78071793e-01 2.79699428e-01 2.81336031e-01 2.82981638e-01 2.84636282e-01 + 2.86300002e-01 2.87972830e-01 2.89654804e-01 2.91345959e-01 2.93046331e-01 + 2.94755955e-01 2.96474867e-01 2.98203103e-01 2.99940699e-01 3.01687691e-01 + 3.03444115e-01 3.05210007e-01 3.06985403e-01 3.08770338e-01 3.10564851e-01 + 3.12368975e-01 3.14182749e-01 3.16006207e-01 3.17839387e-01 3.19682324e-01 + 3.21535056e-01 3.23397619e-01 3.25270049e-01 3.27152383e-01 3.29044657e-01 + 3.30946908e-01 3.32859173e-01 3.34781489e-01 3.36713892e-01 3.38656419e-01 + 3.40609107e-01 3.42571993e-01 3.44545114e-01 3.46528507e-01 3.48522209e-01 + 3.50526256e-01 3.52540686e-01 3.54565537e-01 3.56600845e-01 3.58646647e-01 + 3.60702982e-01 3.62769885e-01 3.64847394e-01 3.66935548e-01 3.69034382e-01 + 3.71143935e-01 3.73264245e-01 3.75395347e-01 3.77537281e-01 3.79690084e-01 + 3.81853792e-01 3.84028445e-01 3.86214079e-01 3.88410732e-01 3.90618443e-01 + 3.92837248e-01 3.95067186e-01 3.97308294e-01 3.99560611e-01 4.01824174e-01 + 4.04099021e-01 4.06385190e-01 4.08682719e-01 4.10991646e-01 4.13312009e-01 + 4.15643846e-01 4.17987196e-01 4.20342096e-01 4.22708585e-01 4.25086701e-01 + 4.27476482e-01 4.29877965e-01 4.32291191e-01 4.34716196e-01 4.37153020e-01 + 4.39601699e-01 4.42062274e-01 4.44534782e-01 4.47019262e-01 4.49515752e-01 + 4.52024290e-01 4.54544915e-01 4.57077666e-01 4.59622582e-01 4.62179699e-01 + 4.64749058e-01 4.67330697e-01 4.69924655e-01 4.72530970e-01 4.75149680e-01 + 4.77780825e-01 4.80424443e-01 4.83080573e-01 4.85749254e-01 4.88430524e-01 + 4.91124422e-01 4.93830987e-01 4.96550258e-01 4.99282274e-01 5.02027073e-01 + 5.04784694e-01 5.07555177e-01 5.10338560e-01 5.13134881e-01 5.15944181e-01 + 5.18766498e-01 5.21601870e-01 5.24450337e-01 5.27311938e-01 5.30186712e-01 + 5.33074698e-01 5.35975934e-01 5.38890460e-01 5.41818315e-01 5.44759538e-01 + 5.47714168e-01 5.50682244e-01 5.53663805e-01 5.56658890e-01 5.59667539e-01 + 5.62689790e-01 5.65725682e-01 5.68775255e-01 5.71838548e-01 5.74915600e-01 + 5.78006450e-01 5.81111137e-01 5.84229700e-01 5.87362179e-01 5.90508613e-01 + 5.93669040e-01 5.96843501e-01 6.00032034e-01 6.03234678e-01 6.06451473e-01 + 6.09682457e-01 6.12927671e-01 6.16187152e-01 6.19460941e-01 6.22749077e-01 + 6.26051598e-01 6.29368545e-01 6.32699955e-01 6.36045869e-01 6.39406325e-01 + 6.42781363e-01 6.46171022e-01 6.49575341e-01 6.52994360e-01 6.56428116e-01 + 6.59876651e-01 6.63340002e-01 6.66818210e-01 6.70311312e-01 6.73819349e-01 + 6.77342360e-01 6.80880383e-01 6.84433457e-01 6.88001623e-01 6.91584919e-01 + 6.95183384e-01 6.98797058e-01 7.02425979e-01 7.06070186e-01 7.09729719e-01 + 7.13404617e-01 7.17094919e-01 7.20800663e-01 7.24521889e-01 7.28258637e-01 + 7.32010944e-01 7.35778850e-01 7.39562395e-01 7.43361616e-01 7.47176553e-01 + 7.51007246e-01 7.54853732e-01 7.58716051e-01 7.62594242e-01 7.66488343e-01 + 7.70398394e-01 7.74324434e-01 7.78266501e-01 7.82224634e-01 7.86198872e-01 + 7.90189253e-01 7.94195818e-01 7.98218604e-01 8.02257650e-01 8.06312994e-01 + 8.10384677e-01 8.14472736e-01 8.18577209e-01 8.22698137e-01 8.26835556e-01 + 8.30989506e-01 8.35160026e-01 8.39347154e-01 8.43550929e-01 8.47771388e-01 + 8.52008571e-01 8.56262517e-01 8.60533262e-01 8.64820847e-01 8.69125309e-01 + 8.73446687e-01 8.77785019e-01 8.82140343e-01 8.86512698e-01 8.90902122e-01 + 8.95308653e-01 8.99732330e-01 9.04173190e-01 9.08631272e-01 9.13106614e-01 + 9.17599253e-01 9.22109229e-01 9.26636579e-01 9.31181341e-01 9.35743553e-01 + 9.40323253e-01 9.44920479e-01 9.49535268e-01 9.54167659e-01 9.58817690e-01 + 9.63485397e-01 9.68170820e-01 9.72873995e-01 9.77594961e-01 9.82333754e-01 + 9.87090413e-01 9.91864975e-01 9.96657478e-01 1.00146796e+00 1.00629646e+00 + 1.01114300e+00 1.01600764e+00 1.02089041e+00 1.02579134e+00 1.03071048e+00 + 1.03564785e+00 1.04060350e+00 1.04557747e+00 1.05056978e+00 1.05558048e+00 + 1.06060961e+00 1.06565720e+00 1.07072329e+00 1.07580791e+00 1.08091111e+00 + 1.08603291e+00 1.09117337e+00 1.09633250e+00 1.10151035e+00 1.10670696e+00 + 1.11192236e+00 1.11715659e+00 1.12240969e+00 1.12768169e+00 1.13297263e+00 + 1.13828254e+00 1.14361146e+00 1.14895943e+00 1.15432648e+00 1.15971265e+00 + 1.16511798e+00 1.17054250e+00 1.17598625e+00 1.18144926e+00 1.18693156e+00 + 1.19243321e+00 1.19795422e+00 1.20349464e+00 1.20905451e+00 1.21463385e+00 + 1.22023271e+00 1.22585111e+00 1.23148910e+00 1.23714670e+00 1.24282397e+00 + 1.24852092e+00 1.25423760e+00 1.25997404e+00 1.26573027e+00 1.27150634e+00 + 1.27730227e+00 1.28311810e+00 1.28895387e+00 1.29480961e+00 1.30068535e+00 + 1.30658114e+00 1.31249699e+00 1.31843296e+00 1.32438907e+00 1.33036536e+00 + 1.33636186e+00 1.34237861e+00 1.34841563e+00 1.35447298e+00 1.36055067e+00 + 1.36664875e+00 1.37276724e+00 1.37890618e+00 1.38506561e+00 1.39124556e+00 + 1.39744606e+00 1.40366714e+00 1.40990885e+00 1.41617121e+00 1.42245426e+00 + 1.42875802e+00 1.43508254e+00 1.44142785e+00 1.44779398e+00 1.45418096e+00 + 1.46058882e+00 1.46701761e+00 1.47346735e+00 1.47993807e+00 1.48642981e+00 + 1.49294260e+00 1.49947647e+00 1.50603146e+00 1.51260760e+00 1.51920492e+00 + 1.52582344e+00 1.53246322e+00 1.53912427e+00 1.54580663e+00 1.55251033e+00 + 1.55923541e+00 1.56598189e+00 1.57274981e+00 1.57953919e+00 1.58635008e+00 + 1.59318250e+00 1.60003648e+00 1.60691205e+00 1.61380925e+00 1.62072811e+00 + 1.62766866e+00 1.63463093e+00 1.64161494e+00 1.64862074e+00 1.65564835e+00 + 1.66269781e+00 1.66976913e+00 1.67686237e+00 1.68397753e+00 1.69111467e+00 + 1.69827379e+00 1.70545495e+00 1.71265816e+00 1.71988345e+00 1.72713087e+00 + 1.73440042e+00 1.74169216e+00 1.74900610e+00 1.75634228e+00 1.76370072e+00 + 1.77108145e+00 1.77848451e+00 1.78590992e+00 1.79335772e+00 1.80082793e+00 + 1.80832057e+00 1.81583569e+00 1.82337331e+00 1.83093345e+00 1.83851615e+00 + 1.84612143e+00 1.85374933e+00 1.86139987e+00 1.86907308e+00 1.87676899e+00 + 1.88448762e+00 1.89222901e+00 1.89999318e+00 1.90778016e+00 1.91558998e+00 + 1.92342267e+00 1.93127825e+00 1.93915675e+00 1.94705820e+00 1.95498262e+00 + 1.96293005e+00 1.97090050e+00 1.97889402e+00 1.98691062e+00 1.99495033e+00 + 2.00301317e+00 2.01109918e+00 2.01920839e+00 2.02734080e+00 2.03549647e+00 + 2.04367540e+00 2.05187763e+00 2.06010318e+00 2.06835208e+00 2.07662435e+00 + 2.08492002e+00 2.09323912e+00 2.10158167e+00 2.10994769e+00 2.11833722e+00 + 2.12675027e+00 2.13518688e+00 2.14364706e+00 2.15213085e+00 2.16063826e+00 + 2.16916932e+00 2.17772406e+00 2.18630250e+00 2.19490466e+00 2.20353058e+00 + 2.21218027e+00 2.22085375e+00 2.22955106e+00 2.23827221e+00 2.24701724e+00 + 2.25578615e+00 2.26457899e+00 2.27339576e+00 2.28223650e+00 2.29110122e+00 + 2.29998996e+00 2.30890273e+00 2.31783955e+00 2.32680045e+00 2.33578546e+00 + 2.34479459e+00 2.35382786e+00 2.36288530e+00 2.37196694e+00 2.38107279e+00 + 7.75783058e-03 7.73296622e-03 7.70815966e-03 7.68341051e-03 7.65871836e-03 + 7.63408283e-03 7.60950351e-03 7.58498000e-03 7.56051190e-03 7.53609882e-03 + 7.51174036e-03 7.48743611e-03 7.46318569e-03 7.43898868e-03 7.41484469e-03 + 7.39075333e-03 7.36671420e-03 7.34272689e-03 7.31879101e-03 7.29490616e-03 + 7.27107195e-03 7.24728797e-03 7.22355383e-03 7.19986914e-03 7.17623349e-03 + 7.15264650e-03 7.12910776e-03 7.10561688e-03 7.08217347e-03 7.05877713e-03 + 7.03542747e-03 7.01212410e-03 6.98886663e-03 6.96565466e-03 6.94248780e-03 + 6.91936567e-03 6.89628787e-03 6.87325401e-03 6.85026372e-03 6.82731659e-03 + 6.80441225e-03 6.78155031e-03 6.75873038e-03 6.73595209e-03 6.71321505e-03 + 6.69051888e-03 6.66786319e-03 6.64524762e-03 6.62267177e-03 6.60013528e-03 + 6.57763777e-03 6.55517887e-03 6.53275819e-03 6.51037537e-03 6.48803005e-03 + 6.46572184e-03 6.44345038e-03 6.42121530e-03 6.39901625e-03 6.37685284e-03 + 6.35472473e-03 6.33263156e-03 6.31057295e-03 6.28854856e-03 6.26655802e-03 + 6.24460099e-03 6.22267711e-03 6.20078603e-03 6.17892740e-03 6.15710087e-03 + 6.13530609e-03 6.11354273e-03 6.09181044e-03 6.07010887e-03 6.04843770e-03 + 6.02679658e-03 6.00518518e-03 5.98360316e-03 5.96205020e-03 5.94052597e-03 + 5.91903013e-03 5.89756237e-03 5.87612237e-03 5.85470980e-03 5.83332434e-03 + 5.81196568e-03 5.79063351e-03 5.76932751e-03 5.74804738e-03 5.72679281e-03 + 5.70556349e-03 5.68435913e-03 5.66317942e-03 5.64202406e-03 5.62089277e-03 + 5.59978526e-03 5.57870122e-03 5.55764038e-03 5.53660245e-03 5.51558714e-03 + 5.49459419e-03 5.47362332e-03 5.45267424e-03 5.43174670e-03 5.41084042e-03 + 5.38995513e-03 5.36909059e-03 5.34824651e-03 5.32742266e-03 5.30661878e-03 + 5.28583461e-03 5.26506991e-03 5.24432443e-03 5.22359793e-03 5.20289018e-03 + 5.18220094e-03 5.16152997e-03 5.14087705e-03 5.12024195e-03 5.09962444e-03 + 5.07902432e-03 5.05844136e-03 5.03787534e-03 5.01732607e-03 4.99679333e-03 + 4.97627691e-03 4.95577663e-03 4.93529228e-03 4.91482367e-03 4.89437061e-03 + 4.87393292e-03 4.85351041e-03 4.83310291e-03 4.81271023e-03 4.79233221e-03 + 4.77196867e-03 4.75161946e-03 4.73128441e-03 4.71096337e-03 4.69065618e-03 + 4.67036269e-03 4.65008275e-03 4.62981623e-03 4.60956299e-03 4.58932288e-03 + 4.56909578e-03 4.54888156e-03 4.52868010e-03 4.50849128e-03 4.48831498e-03 + 4.46815110e-03 4.44799952e-03 4.42786013e-03 4.40773285e-03 4.38761758e-03 + 4.36751422e-03 4.34742268e-03 4.32734289e-03 4.30727476e-03 4.28721822e-03 + 4.26717320e-03 4.24713963e-03 4.22711745e-03 4.20710659e-03 4.18710701e-03 + 4.16711866e-03 4.14714149e-03 4.12717545e-03 4.10722051e-03 4.08727665e-03 + 4.06734382e-03 4.04742201e-03 4.02751119e-03 4.00761135e-03 3.98772248e-03 + 3.96784457e-03 3.94797762e-03 3.92812164e-03 3.90827662e-03 3.88844258e-03 + 3.86861953e-03 3.84880750e-03 3.82900651e-03 3.80921659e-03 3.78943777e-03 + 3.76967009e-03 3.74991360e-03 3.73016833e-03 3.71043435e-03 3.69071171e-03 + 3.67100046e-03 3.65130068e-03 3.63161244e-03 3.61193581e-03 3.59227087e-03 + 3.57261770e-03 3.55297640e-03 3.53334706e-03 3.51372978e-03 3.49412465e-03 + 3.47453180e-03 3.45495132e-03 3.43538334e-03 3.41582798e-03 3.39628537e-03 + 3.37675564e-03 3.35723892e-03 3.33773536e-03 3.31824510e-03 3.29876830e-03 + 3.27930510e-03 3.25985568e-03 3.24042019e-03 3.22099880e-03 3.20159169e-03 + 3.18219905e-03 3.16282105e-03 3.14345788e-03 3.12410974e-03 3.10477683e-03 + 3.08545935e-03 3.06615751e-03 3.04687152e-03 3.02760161e-03 3.00834799e-03 + 2.98911090e-03 2.96989056e-03 2.95068723e-03 2.93150113e-03 2.91233251e-03 + 2.89318164e-03 2.87404877e-03 2.85493415e-03 2.83583807e-03 2.81676078e-03 + 2.79770257e-03 2.77866372e-03 2.75964451e-03 2.74064524e-03 2.72166621e-03 + 2.70270771e-03 2.68377006e-03 2.66485356e-03 2.64595853e-03 2.62708529e-03 + 2.60823417e-03 2.58940549e-03 2.57059960e-03 2.55181683e-03 2.53305753e-03 + 2.51432206e-03 2.49561075e-03 2.47692398e-03 2.45826211e-03 2.43962550e-03 + 2.42101454e-03 2.40242960e-03 2.38387106e-03 2.36533932e-03 2.34683476e-03 + 2.32835779e-03 2.30990881e-03 2.29148822e-03 2.27309644e-03 2.25473389e-03 + 2.23640098e-03 2.21809814e-03 2.19982581e-03 2.18158442e-03 2.16337441e-03 + 2.14519622e-03 2.12705031e-03 2.10893713e-03 2.09085714e-03 2.07281081e-03 + 2.05479859e-03 2.03682097e-03 2.01887841e-03 2.00097142e-03 1.98310046e-03 + 1.96526603e-03 1.94746863e-03 1.92970876e-03 1.91198692e-03 1.89430361e-03 + 1.87665937e-03 1.85905469e-03 1.84149011e-03 1.82396614e-03 1.80648333e-03 + 1.78904221e-03 1.77164332e-03 1.75428719e-03 1.73697438e-03 1.71970545e-03 + 1.70248094e-03 1.68530143e-03 1.66816747e-03 1.65107964e-03 1.63403850e-03 + 1.61704464e-03 1.60009864e-03 1.58320109e-03 1.56635257e-03 1.54955368e-03 + 1.53280502e-03 1.51610719e-03 1.49946080e-03 1.48286646e-03 1.46632477e-03 + 1.44983637e-03 1.43340187e-03 1.41702190e-03 1.40069709e-03 1.38442807e-03 + 1.36821548e-03 1.35205996e-03 1.33596216e-03 1.31992272e-03 1.30394230e-03 + 1.28802156e-03 1.27216115e-03 1.25636174e-03 1.24062400e-03 1.22494858e-03 + 1.20933618e-03 1.19378747e-03 1.17830313e-03 1.16288384e-03 1.14753029e-03 + 1.13224317e-03 1.11702318e-03 1.10187102e-03 1.08678738e-03 1.07177298e-03 + 1.05682851e-03 1.04195470e-03 1.02715225e-03 1.01242188e-03 9.97764323e-04 + 9.83180288e-04 9.68670506e-04 9.54235708e-04 9.39876625e-04 9.25593994e-04 + 9.11388553e-04 8.97261043e-04 8.83212208e-04 8.69242796e-04 8.55353556e-04 + 8.41545241e-04 8.27818606e-04 8.14174409e-04 8.00613410e-04 7.87136373e-04 + 7.73744063e-04 7.60437247e-04 7.47216698e-04 7.34083188e-04 7.21037492e-04 + 7.08080389e-04 6.95212658e-04 6.82435082e-04 6.69748446e-04 6.57153537e-04 + 6.44651143e-04 6.32242057e-04 6.19927071e-04 6.07706982e-04 5.95582586e-04 + 5.83554683e-04 5.71624074e-04 5.59791564e-04 5.48057956e-04 5.36424058e-04 + 5.24890679e-04 5.13458629e-04 5.02128720e-04 4.90901767e-04 4.79778585e-04 + 4.68759991e-04 4.57846804e-04 4.47039843e-04 4.36339931e-04 4.25747890e-04 + 4.15264545e-04 4.04890722e-04 3.94627247e-04 3.84474948e-04 3.74434656e-04 + 3.64507200e-04 3.54693412e-04 3.44994126e-04 3.35410174e-04 3.25942392e-04 + 3.16591616e-04 3.07358681e-04 2.98244426e-04 2.89249688e-04 2.80375307e-04 + 2.71622122e-04 2.62990974e-04 2.54482704e-04 2.46098153e-04 2.37838164e-04 + 2.29703578e-04 2.21695241e-04 2.13813993e-04 2.06060681e-04 1.98436147e-04 + 1.90941236e-04 1.83576793e-04 1.76343663e-04 1.69242690e-04 1.62274720e-04 + 1.55440598e-04 1.48741168e-04 1.42177276e-04 1.35749766e-04 1.29459484e-04 + 1.23307274e-04 1.17293980e-04 1.11420445e-04 1.05687515e-04 1.00096032e-04 + 9.46468388e-05 8.93407780e-05 8.41786913e-05 7.91614202e-05 7.42898052e-05 + 6.95646864e-05 6.49869031e-05 6.05572937e-05 5.62766961e-05 5.21459470e-05 + 4.81658825e-05 4.43373376e-05 4.06611462e-05 3.71381414e-05 3.37691551e-05 + 3.05550180e-05 2.74965596e-05 2.45946084e-05 2.18499913e-05 1.92635340e-05 + 1.68360610e-05 1.45683951e-05 1.24613578e-05 1.05157689e-05 8.73244699e-06 + 7.11220867e-06 5.65586906e-06 4.36424154e-06 3.23813774e-06 2.27836748e-06 + 1.48573873e-06 8.61057567e-07 4.05128118e-07 1.18752518e-07 2.73086226e-09 + 5.78611603e-08 2.84939286e-07 6.84758934e-07 1.25811157e-06 2.00578638e-06 + 2.92857023e-06 4.02724762e-06 5.30260064e-06 6.75540890e-06 8.38644951e-06 + 1.01964970e-05 1.21863234e-05 1.43566979e-05 1.67083872e-05 1.92421552e-05 + 2.19587628e-05 2.48589684e-05 2.79435273e-05 3.12131920e-05 3.46687118e-05 + 3.83108334e-05 4.21402999e-05 4.61578518e-05 5.03642261e-05 5.47601568e-05 + 5.93463745e-05 6.41236066e-05 6.90925772e-05 7.42540069e-05 7.96086130e-05 + 8.51571092e-05 9.09002059e-05 9.68386096e-05 1.02973024e-04 1.09304147e-04 + 1.15832676e-04 1.22559303e-04 1.29484715e-04 1.36609598e-04 1.43934631e-04 + 1.51460492e-04 1.59187852e-04 1.67117382e-04 1.75249745e-04 1.83585602e-04 + 1.92125609e-04 2.00870420e-04 2.09820682e-04 2.18977038e-04 2.28340129e-04 + 2.37910590e-04 2.47689051e-04 2.57676139e-04 2.67872477e-04 2.78278681e-04 + 2.88895364e-04 2.99723136e-04 3.10762599e-04 3.22014353e-04 3.33478993e-04 + 3.45157108e-04 3.57049283e-04 3.69156098e-04 3.81478128e-04 3.94015944e-04 + 4.06770112e-04 4.19741192e-04 4.32929738e-04 4.46336303e-04 4.59961431e-04 + 4.73805662e-04 4.87869532e-04 5.02153570e-04 5.16658302e-04 5.31384246e-04 + 5.46331917e-04 5.61501823e-04 5.76894469e-04 5.92510351e-04 6.08349963e-04 + 6.24413792e-04 6.40702320e-04 6.57216021e-04 6.73955368e-04 6.90920825e-04 + 7.08112850e-04 7.25531898e-04 7.43178417e-04 7.61052849e-04 7.79155629e-04 + 7.97487189e-04 8.16047953e-04 8.34838340e-04 8.53858764e-04 8.73109630e-04 + 8.92591340e-04 9.12304290e-04 9.32248867e-04 9.52425456e-04 9.72834432e-04 + 9.93476168e-04 1.01435103e-03 1.03545937e-03 1.05680154e-03 1.07837790e-03 + 1.10018877e-03 1.12223450e-03 1.14451541e-03 1.16703183e-03 1.18978405e-03 + 1.21277241e-03 1.23599719e-03 1.25945869e-03 1.28315720e-03 1.30709300e-03 + 1.33126638e-03 1.35567759e-03 1.38032690e-03 1.40521457e-03 1.43034085e-03 + 1.45570597e-03 1.48131019e-03 1.50715372e-03 1.53323678e-03 1.55955961e-03 + 1.58612239e-03 1.61292535e-03 1.63996867e-03 1.66725254e-03 1.69477714e-03 + 1.72254266e-03 1.75054926e-03 1.77879709e-03 1.80728633e-03 1.83601711e-03 + 1.86498957e-03 1.89420386e-03 1.92366009e-03 1.95335839e-03 1.98329887e-03 + 2.01348164e-03 2.04390679e-03 2.07457442e-03 2.10548462e-03 2.13663746e-03 + 2.16803301e-03 2.19967134e-03 2.23155250e-03 2.26367655e-03 2.29604352e-03 + 2.32865346e-03 2.36150638e-03 2.39460232e-03 2.42794128e-03 2.46152328e-03 + 2.49534830e-03 2.52941636e-03 2.56372742e-03 2.59828147e-03 2.63307847e-03 + 2.66811840e-03 2.70340121e-03 2.73892685e-03 2.77469525e-03 2.81070636e-03 + 2.84696010e-03 2.88345639e-03 2.92019515e-03 2.95717627e-03 2.99439966e-03 + 3.03186521e-03 3.06957280e-03 3.10752231e-03 3.14571361e-03 3.18414655e-03 + 3.22282100e-03 3.26173679e-03 3.30089378e-03 3.34029178e-03 3.37993063e-03 + 3.41981015e-03 3.45993014e-03 3.50029041e-03 3.54089075e-03 3.58173095e-03 + 3.62281080e-03 3.66413006e-03 3.70568851e-03 3.74748589e-03 3.78952197e-03 + 3.83179649e-03 3.87430918e-03 3.91705978e-03 3.96004801e-03 4.00327358e-03 + 4.04673620e-03 4.09043558e-03 4.13437140e-03 4.17854335e-03 4.22295111e-03 + 4.26759435e-03 4.31247275e-03 4.35758594e-03 4.40293359e-03 4.44851534e-03 + 4.49433082e-03 4.54037966e-03 4.58666148e-03 4.63317590e-03 4.67992252e-03 + 4.72690094e-03 4.77411076e-03 4.82155156e-03 4.86922292e-03 4.91712441e-03 + 4.96525559e-03 5.01361603e-03 5.06220526e-03 5.11102284e-03 5.16006829e-03 + 5.20934116e-03 5.25884095e-03 5.30856719e-03 5.35851938e-03 5.40869703e-03 + 5.45909962e-03 5.50972664e-03 5.56057758e-03 5.61165191e-03 5.66294908e-03 + 5.71446857e-03 5.76620983e-03 5.81817229e-03 5.87035540e-03 5.92275860e-03 + 5.97538130e-03 6.02822292e-03 6.08128288e-03 6.13456058e-03 6.18805542e-03 + 6.24176680e-03 6.29569408e-03 6.34983667e-03 6.40419392e-03 6.45876520e-03 + 6.51354987e-03 6.56854729e-03 6.62375679e-03 6.67917772e-03 6.73480941e-03 + 6.79065119e-03 6.84670238e-03 6.90296228e-03 6.95943021e-03 7.01610547e-03 + 7.07298735e-03 7.13007514e-03 7.18736812e-03 7.24486557e-03 7.30256676e-03 + 7.36047095e-03 7.41857739e-03 7.47688535e-03 7.53539406e-03 7.59410276e-03 + 7.65301069e-03 7.71211707e-03 7.77142113e-03 7.83092207e-03 7.89061912e-03 + 7.95051146e-03 8.01059830e-03 8.07087884e-03 8.13135225e-03 8.19201772e-03 + 8.25287442e-03 8.31392151e-03 8.37515818e-03 8.43658356e-03 8.49819681e-03 + 8.55999708e-03 8.62198351e-03 8.68415524e-03 8.74651139e-03 8.80905109e-03 + 8.87177346e-03 8.93467761e-03 8.99776265e-03 9.06102768e-03 9.12447181e-03 + 9.18809412e-03 9.25189370e-03 9.31586964e-03 9.38002101e-03 9.44434688e-03 + 9.50884633e-03 9.57351841e-03 9.63836218e-03 9.70337670e-03 9.76856101e-03 + 9.83391415e-03 9.89943517e-03 9.96512309e-03 1.00309769e-02 1.00969958e-02 + 1.01631786e-02 1.02295244e-02 1.02960321e-02 1.03627010e-02 1.04295298e-02 + 1.04965176e-02 1.05636634e-02 1.06309662e-02 1.06984250e-02 1.07660387e-02 + 1.08338064e-02 1.09017270e-02 1.09697994e-02 1.10380226e-02 1.11063957e-02 + 1.11749175e-02 1.12435870e-02 1.13124031e-02 1.13813648e-02 1.14504710e-02 + 1.15197207e-02 1.15891128e-02 1.16586462e-02 1.17283198e-02 1.17981326e-02 + 1.18680835e-02 1.19381714e-02 1.20083952e-02 1.20787538e-02 1.21492461e-02 + 1.22198711e-02 1.22906275e-02 1.23615144e-02 1.24325305e-02 1.25036749e-02 + 1.25749463e-02 1.26463436e-02 1.27178658e-02 1.27895117e-02 1.28612802e-02 + 1.29331701e-02 1.30051803e-02 1.30773097e-02 1.31495572e-02 1.32219215e-02 + 1.32944016e-02 1.33669962e-02 1.34397044e-02 1.35125248e-02 1.35854564e-02 + 1.36584979e-02 1.37316483e-02 1.38049064e-02 1.38782709e-02 1.39517408e-02 + 1.40253149e-02 1.40989919e-02 1.41727708e-02 1.42466503e-02 1.43206293e-02 + 1.43947066e-02 1.44688810e-02 1.45431514e-02 1.46175164e-02 1.46919751e-02 + 1.47665261e-02 1.48411683e-02 1.49159005e-02 1.49907214e-02 1.50656300e-02 + 1.51406250e-02 1.52157052e-02 1.52908694e-02 1.53661164e-02 1.54414451e-02 + 1.55168541e-02 1.55923424e-02 1.56679086e-02 1.57435517e-02 1.58192703e-02 + 1.58950633e-02 1.59709295e-02 1.60468676e-02 1.61228765e-02 1.61989549e-02 + 1.62751017e-02 1.63513156e-02 1.64275953e-02 1.65039398e-02 1.65803477e-02 + 1.66568179e-02 1.67333491e-02 1.68099401e-02 1.68865898e-02 1.69632968e-02 + 1.70400600e-02 1.71168782e-02 1.71937501e-02 1.72706745e-02 1.73476503e-02 + 1.74246761e-02 1.75017508e-02 1.75788731e-02 1.76560418e-02 1.77332558e-02 + 1.78105138e-02 1.78878145e-02 1.79651568e-02 1.80425395e-02 1.81199613e-02 + 1.81974209e-02 1.82749173e-02 1.83524492e-02 1.84300153e-02 1.85076145e-02 + 1.85852456e-02 1.86629072e-02 1.87405983e-02 1.88183176e-02 1.88960639e-02 + 1.89738359e-02 1.90516326e-02 1.91294526e-02 1.92072948e-02 1.92851579e-02 + 1.93630408e-02 1.94409423e-02 1.95188611e-02 1.95967960e-02 1.96747459e-02 + 1.97527096e-02 1.98306858e-02 1.99086734e-02 1.99866711e-02 2.00646778e-02 + 2.01426923e-02 2.02207134e-02 2.02987399e-02 2.03767707e-02 2.04548044e-02 + 2.05328400e-02 2.06108763e-02 2.06889121e-02 2.07669463e-02 2.08449775e-02 + 2.09230048e-02 2.10010268e-02 2.10790425e-02 2.11570506e-02 2.12350500e-02 + 2.13130396e-02 2.13910182e-02 2.14689845e-02 2.15469376e-02 2.16248761e-02 + 2.17027990e-02 2.17807052e-02 2.18585934e-02 2.19364625e-02 2.20143114e-02 + 2.20921389e-02 2.21699439e-02 2.22477253e-02 2.23254820e-02 2.24032128e-02 + 2.24809165e-02 2.25585922e-02 2.26362385e-02 2.27138546e-02 2.27914391e-02 + 2.28689910e-02 2.29465093e-02 2.30239927e-02 2.31014402e-02 2.31788507e-02 + 2.32562232e-02 2.33335564e-02 2.34108493e-02 2.34881009e-02 2.35653100e-02 + 2.36424756e-02 2.37195966e-02 2.37966720e-02 2.38737005e-02 2.39506813e-02 + 2.40276132e-02 2.41044951e-02 2.41813261e-02 2.42581051e-02 2.43348309e-02 + 2.44115026e-02 2.44881192e-02 2.45646795e-02 2.46411826e-02 2.47176275e-02 + 2.47940130e-02 2.48703382e-02 2.49466021e-02 2.50228037e-02 2.50989418e-02 + 2.51750157e-02 2.52510241e-02 2.53269662e-02 2.54028410e-02 2.54786474e-02 + 2.55543844e-02 2.56300512e-02 2.57056467e-02 2.57811699e-02 2.58566198e-02 + 2.59319956e-02 2.60072962e-02 2.60825207e-02 2.61576682e-02 2.62327376e-02 + 2.63077281e-02 2.63826386e-02 2.64574684e-02 2.65322164e-02 2.66068817e-02 + 2.66814634e-02 2.67559606e-02 2.68303724e-02 2.69046978e-02 2.69789360e-02 + 2.70530861e-02 2.71271471e-02 2.72011182e-02 2.72749985e-02 2.73487872e-02 + 2.74224833e-02 2.74960859e-02 2.75695943e-02 2.76430075e-02 2.77163247e-02 + 2.77895451e-02 2.78626678e-02 2.79356919e-02 2.80086167e-02 2.80814412e-02 + 2.81541648e-02 2.82267864e-02 2.82993055e-02 2.83717210e-02 2.84440323e-02 + 2.85162385e-02 2.85883388e-02 2.86603324e-02 2.87322186e-02 2.88039966e-02 + 2.88756656e-02 2.89472248e-02 2.90186734e-02 2.90900108e-02 2.91612361e-02 + 2.92323486e-02 2.93033476e-02 2.93742322e-02 2.94450019e-02 2.95156558e-02 + 2.95861933e-02 2.96566136e-02 2.97269159e-02 2.97970997e-02 2.98671642e-02 + 2.99371087e-02 3.00069325e-02 3.00766349e-02 3.01462153e-02 3.02156729e-02 + 3.02850071e-02 3.03542173e-02 3.04233028e-02 3.04922629e-02 3.05610970e-02 + 3.06298044e-02 3.06983846e-02 3.07668368e-02 3.08351604e-02 3.09033549e-02 + 3.09714197e-02 3.10393540e-02 3.11071573e-02 3.11748290e-02 3.12423686e-02 + 3.13097754e-02 3.13770488e-02 3.14441883e-02 3.15111934e-02 3.15780633e-02 + 3.16447977e-02 3.17113958e-02 3.17778573e-02 3.18441815e-02 3.19103679e-02 + 3.19764160e-02 3.20423252e-02 3.21080951e-02 3.21737250e-02 3.22392146e-02 + 3.23045633e-02 3.23697706e-02 3.24348361e-02 3.24997591e-02 3.25645394e-02 + 3.26291763e-02 3.26936694e-02 3.27580183e-02 3.28222224e-02 3.28862814e-02 + 3.29501948e-02 3.30139622e-02 3.30775831e-02 3.31410570e-02 3.32043837e-02 + 3.32675626e-02 3.33305933e-02 3.33934755e-02 3.34562087e-02 3.35187925e-02 + 3.35812266e-02 3.36435106e-02 3.37056440e-02 3.37676266e-02 3.38294579e-02 + 3.38911376e-02 3.39526653e-02 3.40140407e-02 3.40752635e-02 3.41363332e-02 + 3.41972496e-02 3.42580124e-02 3.43186212e-02 3.43790756e-02 3.44393755e-02 + 3.44995205e-02 3.45595102e-02 3.46193444e-02 3.46790229e-02 3.47385452e-02 + 3.47979112e-02 3.48571206e-02 3.49161731e-02 3.49750684e-02 3.50338063e-02 + 3.50923866e-02 3.51508090e-02 3.52090732e-02 3.52671790e-02 3.53251263e-02 + 3.53829147e-02 3.54405441e-02 3.54980142e-02 3.55553249e-02 3.56124759e-02 + 3.56694670e-02 3.57262982e-02 3.57829691e-02 3.58394796e-02 3.58958295e-02 + 3.59520187e-02 3.60080469e-02 3.60639141e-02 3.61196201e-02 3.61751647e-02 + 3.62305479e-02 3.62857693e-02 3.63408291e-02 3.63957269e-02 3.64504627e-02 + 3.65050364e-02 3.65594478e-02 3.66136969e-02 3.66677836e-02 3.67217077e-02 + 3.67754692e-02 3.68290680e-02 3.68825040e-02 3.69357771e-02 3.69888874e-02 + 3.70418346e-02 3.70946188e-02 3.71472399e-02 3.71996978e-02 3.72519925e-02 + 3.73041241e-02 3.73560923e-02 3.74078973e-02 3.74595390e-02 3.75110173e-02 + 3.75623323e-02 3.76134840e-02 3.76644723e-02 3.77152973e-02 3.77659589e-02 + 3.78164572e-02 3.78667922e-02 3.79169639e-02 3.79669723e-02 3.80168175e-02 + 3.80664996e-02 3.81160184e-02 3.81653742e-02 3.82145669e-02 3.82635966e-02 + 3.83124633e-02 3.83611672e-02 3.84097083e-02 3.84580867e-02 3.85063023e-02 + 3.85543555e-02 3.86022461e-02 3.86499744e-02 3.86975403e-02 3.87449441e-02 + 3.87921858e-02 3.88392655e-02 3.88861833e-02 3.89329394e-02 3.89795339e-02 + 3.90259669e-02 3.90722385e-02 3.91183489e-02 3.91642983e-02 3.92100867e-02 + 3.92557143e-02 3.93011813e-02 3.93464879e-02 3.93916341e-02 3.94366202e-02 + 3.94814463e-02 3.95261127e-02 3.95706194e-02 3.96149667e-02 3.96591547e-02 + 3.97031837e-02 3.97470539e-02 3.97907654e-02 3.98343184e-02 3.98777132e-02 + 3.99209500e-02 3.99640290e-02 4.00069503e-02 4.00497143e-02 4.00923212e-02 + 4.01347712e-02 4.01770645e-02 4.02192013e-02 4.02611820e-02 4.03030067e-02 + 4.03446757e-02 4.03861893e-02 4.04275477e-02 4.04687512e-02 4.05098001e-02 + 4.05506945e-02 4.05914349e-02 4.06320214e-02 4.06724544e-02 4.07127341e-02 + 4.07528608e-02 4.07928348e-02 4.08326564e-02 4.08723259e-02 4.09118437e-02 + 4.09512099e-02 4.09904249e-02 4.10294891e-02 4.10684027e-02 4.11071660e-02 + 4.11457795e-02 4.11842433e-02 4.12225579e-02 4.12607235e-02 4.12987405e-02 + 4.13366093e-02 4.13743301e-02 4.14119033e-02 4.14493293e-02 4.14866084e-02 + 4.15237410e-02 4.15607274e-02 4.15975680e-02 4.16342631e-02 4.16708131e-02 + 4.17072184e-02 4.17434793e-02 4.17795963e-02 4.18155696e-02 4.18513997e-02 + 4.18870870e-02 4.19226318e-02 4.19580345e-02 4.19932955e-02 4.20284153e-02 + 4.20633941e-02 4.20982324e-02 4.21329307e-02 4.21674892e-02 4.22019085e-02 + 4.22361889e-02 4.22703308e-02 4.23043346e-02 4.23382008e-02 4.23719298e-02 + 4.24055220e-02 4.24389778e-02 4.24722977e-02 4.25054820e-02 4.25385312e-02 + 4.25714458e-02 4.26042261e-02 4.26368727e-02 4.26693859e-02 4.27017662e-02 + 4.27340140e-02 4.27661298e-02 4.27981141e-02 4.28299672e-02 4.28616896e-02 + 4.28932819e-02 4.29247444e-02 4.29560775e-02 4.29872819e-02 4.30183578e-02 + 4.30493059e-02 4.30801265e-02 4.31108201e-02 4.31413873e-02 4.31718284e-02 + 4.32021439e-02 4.32323343e-02 4.32624002e-02 4.32923419e-02 4.33221599e-02 + 4.33518548e-02 4.33814270e-02 4.34108770e-02 4.34402053e-02 4.34694124e-02 + 4.34984988e-02 4.35274649e-02 4.35563113e-02 4.35850384e-02 4.36136467e-02 + 4.36421369e-02 4.36705092e-02 4.36987643e-02 4.37269027e-02 4.37549248e-02 + 4.37828312e-02 4.38106223e-02 4.38382987e-02 4.38658609e-02 4.38933094e-02 + 4.39206447e-02 4.39478673e-02 4.39749777e-02 4.40019765e-02 4.40288641e-02 + 4.40556412e-02 4.40823081e-02 4.41088654e-02 4.41353137e-02 4.41616534e-02 + 4.41878851e-02 4.42140094e-02 4.42400266e-02 4.42659374e-02 4.42917423e-02 + 4.43174418e-02 4.43430364e-02 4.43685267e-02 4.43939132e-02 4.44191965e-02 + 4.44443770e-02 4.44694552e-02 4.44944318e-02 4.45193073e-02 4.45440821e-02 + 4.45687569e-02 4.45933322e-02 4.46178084e-02 4.46421862e-02 4.46664660e-02 + 4.46906485e-02 4.47147341e-02 4.47387234e-02 4.47626169e-02 4.47864152e-02 + 4.48101188e-02 4.48337283e-02 4.48572441e-02 4.48806669e-02 4.49039972e-02 + 4.49272354e-02 4.49503823e-02 4.49734382e-02 4.49964038e-02 4.50192796e-02 + 4.50420661e-02 4.50647640e-02 4.50873736e-02 4.51098956e-02 4.51323305e-02 + 4.51546789e-02 4.51769413e-02 4.51991182e-02 4.52212103e-02 4.52432180e-02 + 4.52651419e-02 4.52869825e-02 4.53087404e-02 4.53304161e-02 4.53520102e-02 + 4.53735232e-02 4.53949557e-02 4.54163082e-02 4.54375812e-02 4.54587753e-02 + 4.54798911e-02 4.55009291e-02 4.55218898e-02 4.55427738e-02 4.55635817e-02 + 4.55843139e-02 4.56049710e-02 4.56255536e-02 4.56460622e-02 4.56664973e-02 + 4.56868595e-02 4.57071494e-02 4.57273674e-02 4.57475141e-02 4.57675901e-02 + 4.57875959e-02 4.58075321e-02 4.58273991e-02 4.58471976e-02 4.58669280e-02 + 4.58865909e-02 4.59061869e-02 4.59257165e-02 4.59451801e-02 4.59645785e-02 + 4.59839120e-02 4.60031812e-02 4.60223867e-02 4.60415291e-02 4.60606087e-02 + 4.60796262e-02 4.60985821e-02 4.61174770e-02 4.61363113e-02 4.61550856e-02 + 4.61738005e-02 4.61924564e-02 4.62110539e-02 4.62295935e-02 4.62480757e-02 + 4.62665012e-02 4.62848703e-02 4.63031836e-02 4.63214417e-02 4.63396451e-02 + 4.63577942e-02 4.63758897e-02 4.63939320e-02 4.64119217e-02 4.64298592e-02 + 4.64477452e-02 4.64655800e-02 4.64833643e-02 4.65010985e-02 4.65187832e-02 + 4.65364189e-02 4.65540060e-02 4.65715452e-02 4.65890368e-02 4.66064815e-02 + 4.66238797e-02 4.66412319e-02 4.66585387e-02 4.66758005e-02 4.66930179e-02 + 4.67101913e-02 4.67273213e-02 4.67444084e-02 4.67614530e-02 4.67784556e-02 + 4.67954169e-02 4.68123371e-02 4.68292170e-02 4.68460568e-02 4.68628572e-02 + 4.68796187e-02 4.68963416e-02 4.69130266e-02 4.69296740e-02 4.69462844e-02 + 4.69628583e-02 4.69793962e-02 4.69958985e-02 4.70123657e-02 4.70287983e-02 + 4.70451968e-02 4.70615616e-02 4.70778933e-02 4.70941923e-02 4.71104590e-02 + 4.71266940e-02 4.71428977e-02 4.71590707e-02 4.71752133e-02 4.71913260e-02 + 4.72074093e-02 4.72234637e-02 4.72394895e-02 4.72554874e-02 4.72714577e-02 + 4.72874010e-02 4.73033175e-02 4.73192079e-02 4.73350726e-02 4.73509120e-02 + 4.73667265e-02 4.73825167e-02 4.73982829e-02 4.74140257e-02 4.74297454e-02 + 4.74454425e-02 4.74611175e-02 4.74767708e-02 4.74924027e-02 4.75080139e-02 + 4.75236046e-02 4.75391754e-02 4.75547266e-02 4.75702588e-02 4.75857722e-02 + 4.76012674e-02 4.76167448e-02 4.76322048e-02 4.76476478e-02 4.76630743e-02 + 4.76784846e-02 4.76938792e-02 4.77092586e-02 4.77246230e-02 4.77399730e-02 + 4.77553089e-02 4.77706311e-02 4.77859401e-02 4.78012363e-02 4.78165201e-02 + 4.78317918e-02 4.78470519e-02 4.78623007e-02 4.78775388e-02 4.78927664e-02 + 4.79079840e-02 4.79231919e-02 4.79383906e-02 4.79535804e-02 4.79687617e-02 + 4.79839349e-02 4.79991005e-02 4.80142587e-02 4.80294099e-02 4.80445546e-02 + 4.80596931e-02 4.80748258e-02 4.80899530e-02 4.81050752e-02 4.81201927e-02 + 4.81353058e-02 4.81504150e-02 4.81655206e-02 4.81806229e-02 4.81957224e-02 + 4.82108194e-02 4.82259141e-02 4.82410071e-02 4.82560987e-02 4.82711891e-02 + 4.82862788e-02 4.83013681e-02 4.83164573e-02 4.83315468e-02 4.83466369e-02 + 4.83617281e-02 4.83768205e-02 4.83919146e-02 4.84070107e-02 4.84221091e-02 + 4.84372101e-02 4.84523141e-02 4.84674214e-02 4.84825324e-02 4.84976473e-02 + 4.85127665e-02 4.85278903e-02 4.85430190e-02 4.85581530e-02 4.85732925e-02 + 4.85884379e-02 4.86035894e-02 4.86187475e-02 4.86339123e-02 4.86490843e-02 + 4.86642636e-02 4.86794506e-02 4.86946457e-02 4.87098490e-02 4.87250610e-02 + 4.87402818e-02 4.87555118e-02 4.87707513e-02 4.87860006e-02 4.88012599e-02 + 4.88165295e-02 4.88318098e-02 4.88471010e-02 4.88624033e-02 4.88777171e-02 + 4.88930427e-02 4.89083802e-02 4.89237301e-02 4.89390924e-02 4.89544676e-02 + 4.89698559e-02 4.89852575e-02 4.90006728e-02 4.90161019e-02 4.90315451e-02 + 4.90470027e-02 4.90624750e-02 4.90779621e-02 4.90934644e-02 4.91089821e-02 + 4.91245154e-02 4.91400646e-02 4.91556299e-02 4.91712116e-02 4.91868099e-02 + 4.92024251e-02 4.92180573e-02 4.92337069e-02 4.92493740e-02 4.92650589e-02 + 4.92807617e-02 4.92964829e-02 4.93122225e-02 4.93279807e-02 4.93437579e-02 + 4.93595542e-02 4.93753698e-02 4.93912050e-02 4.94070600e-02 4.94229349e-02 + 4.94388300e-02 4.94547455e-02 4.94706817e-02 4.94866386e-02 4.95026165e-02 + 4.95186157e-02 4.95346362e-02 4.95506784e-02 4.95667423e-02 4.95828283e-02 + 4.95989364e-02 4.96150669e-02 4.96312200e-02 4.96473958e-02 4.96635945e-02 + 4.96798164e-02 4.96960615e-02 4.97123302e-02 4.97286224e-02 4.97449385e-02 + 4.97612786e-02 4.97776428e-02 4.97940314e-02 4.98104445e-02 4.98268822e-02 + 4.98433448e-02 4.98598324e-02 4.98763451e-02 4.98928831e-02 4.99094466e-02 + 4.99260357e-02 4.99426506e-02 4.99592915e-02 4.99759584e-02 4.99926515e-02 + 5.00093710e-02 5.00261170e-02 5.00428897e-02 5.00596891e-02 5.00765155e-02 + 5.00933690e-02 5.01102496e-02 5.01271576e-02 5.01440931e-02 5.01610562e-02 + 5.01780470e-02 5.01950657e-02 5.02121123e-02 5.02291871e-02 5.02462901e-02 + 5.02634214e-02 5.02805812e-02 5.02977695e-02 5.03149866e-02 5.03322324e-02 + 5.03495072e-02 5.03668110e-02 5.03841439e-02 5.04015061e-02 5.04188976e-02 + 5.04363186e-02 5.04537691e-02 5.04712492e-02 5.04887591e-02 5.05062988e-02 + 5.05238684e-02 5.05414681e-02 5.05590979e-02 5.05767579e-02 5.05944482e-02 + 5.06121688e-02 5.06299199e-02 5.06477016e-02 5.06655138e-02 5.06833568e-02 + 5.07012306e-02 5.07191352e-02 5.07370707e-02 5.07550372e-02 5.07730348e-02 + 5.07910636e-02 5.08091236e-02 5.08272148e-02 5.08453374e-02 5.08634913e-02 + 5.08816768e-02 5.08998937e-02 5.09181423e-02 5.09364225e-02 5.09547343e-02 + 5.09730780e-02 5.09914534e-02 5.10098606e-02 5.10282998e-02 5.10467709e-02 + 5.10652740e-02 5.10838092e-02 5.11023764e-02 5.11209757e-02 5.11396072e-02 + 5.11582709e-02 5.11769668e-02 5.11956950e-02 5.12144555e-02 5.12332483e-02 + 5.12520735e-02 5.12709311e-02 5.12898211e-02 5.13087435e-02 5.13276985e-02 + 5.13466859e-02 5.13657058e-02 5.13847583e-02 5.14038433e-02 5.14229609e-02 + 5.14421111e-02 5.14612939e-02 5.14805093e-02 5.14997573e-02 5.15190380e-02 + 5.15383513e-02 5.15576973e-02 5.15770759e-02 5.15964872e-02 5.16159312e-02 + 5.16354078e-02 5.16549172e-02 5.16744591e-02 5.16940338e-02 5.17136411e-02 + 5.17332811e-02 5.17529537e-02 5.17726590e-02 5.17923969e-02 5.18121674e-02 + 5.18319706e-02 5.18518063e-02 5.18716747e-02 5.18915756e-02 5.19115090e-02 + 5.19314750e-02 5.19514735e-02 5.19715045e-02 5.19915680e-02 5.20116639e-02 + 5.20317923e-02 5.20519530e-02 5.20721462e-02 5.20923716e-02 5.21126294e-02 + 5.21329194e-02 5.21532417e-02 5.21735963e-02 5.21939830e-02 5.22144018e-02 + 5.22348528e-02 5.22553358e-02 5.22758508e-02 5.22963979e-02 5.23169769e-02 + 5.23375877e-02 5.23582305e-02 5.23789050e-02 5.23996114e-02 5.24203494e-02 + 5.24411191e-02 5.24619205e-02 5.24827534e-02 5.25036178e-02 5.25245136e-02 + 5.25454409e-02 5.25663995e-02 5.25873895e-02 5.26084106e-02 5.26294630e-02 + 5.26505464e-02 5.26716609e-02 5.26928064e-02 5.27139828e-02 5.27351901e-02 + 5.27564281e-02 5.27776969e-02 5.27989964e-02 5.28203265e-02 5.28416870e-02 + 5.28630781e-02 5.28844995e-02 5.29059512e-02 5.29274331e-02 5.29489452e-02 + 5.29704874e-02 5.29920595e-02 5.30136616e-02 5.30352936e-02 5.30569552e-02 + 5.30786466e-02 5.31003676e-02 5.31221181e-02 5.31438980e-02 5.31657073e-02 + 5.31875458e-02 5.32094135e-02 5.32313103e-02 5.32532361e-02 5.32751908e-02 + 5.32971743e-02 5.33191865e-02 5.33412273e-02 5.33632967e-02 5.33853945e-02 + 5.34075207e-02 5.34296751e-02 5.34518577e-02 5.34740683e-02 5.34963069e-02 + 5.35185733e-02 5.35408675e-02 5.35631893e-02 5.35855387e-02 5.36079155e-02 + 5.36303197e-02 5.36527511e-02 5.36752097e-02 5.36976952e-02 5.37202077e-02 + 5.37427470e-02 5.37653129e-02 5.37879055e-02 5.38105245e-02 5.38331699e-02 + 5.38558416e-02 5.38785394e-02 5.39012632e-02 5.39240130e-02 5.39467885e-02 + 5.39695897e-02 5.39924165e-02 5.40152687e-02 5.40381462e-02 5.40610490e-02 + 5.40839768e-02 5.41069296e-02 5.41299073e-02 5.41529097e-02 5.41759366e-02 + 5.41989881e-02 5.42220639e-02 5.42451639e-02 5.42682880e-02 5.42914361e-02 + 5.43146081e-02 5.43378038e-02 5.43610230e-02 5.43842658e-02 5.44075318e-02 + 5.44308211e-02 5.44541334e-02 5.44774687e-02 5.45008268e-02 5.45242076e-02 + 5.45476109e-02 5.45710366e-02 5.45944846e-02 5.46179548e-02 5.46414469e-02 + 5.46649609e-02 5.46884967e-02 5.47120540e-02 5.47356328e-02 5.47592329e-02 + 5.47828542e-02 5.48064965e-02 5.48301598e-02 5.48538438e-02 5.48775484e-02 + 5.49012734e-02 5.49250188e-02 5.49487844e-02 5.49725701e-02 5.49963756e-02 + 5.50202009e-02 5.50440459e-02 5.50679102e-02 5.50917939e-02 5.51156968e-02 + 5.51396187e-02 5.51635595e-02 5.51875190e-02 5.52114972e-02 5.52354937e-02 + 5.52595085e-02 5.52835415e-02 5.53075925e-02 5.53316613e-02 5.53557477e-02 + 5.53798517e-02 5.54039731e-02 5.54281118e-02 5.54522675e-02 5.54764401e-02 + 5.55006295e-02 5.55248356e-02 5.55490581e-02 5.55732969e-02 5.55975518e-02 + 5.56218228e-02 5.56461096e-02 5.56704121e-02 5.56947301e-02 5.57190635e-02 + 5.57434121e-02 5.57677758e-02 5.57921544e-02 5.58165477e-02 5.58409556e-02 + 5.58653780e-02 5.58898146e-02 5.59142653e-02 5.59387300e-02 5.59632085e-02 + 5.59877006e-02 5.60122062e-02 5.60367251e-02 5.60612571e-02 5.60858022e-02 + 5.61103600e-02 5.61349306e-02 5.61595136e-02 5.61841090e-02 5.62087165e-02 + 5.62333361e-02 5.62579675e-02 5.62826106e-02 5.63072653e-02 5.63319313e-02 + 5.63566085e-02 5.63812967e-02 5.64059958e-02 5.64307057e-02 5.64554260e-02 + 5.64801568e-02 5.65048977e-02 5.65296487e-02 5.65544096e-02 5.65791802e-02 + 5.66039604e-02 5.66287499e-02 5.66535486e-02 5.66783565e-02 5.67031732e-02 + 5.67279986e-02 5.67528326e-02 5.67776749e-02 5.68025255e-02 5.68273841e-02 + 5.68522507e-02 5.68771249e-02 5.69020067e-02 5.69268959e-02 5.69517923e-02 + 5.69766957e-02 5.70016060e-02 5.70265231e-02 5.70514466e-02 5.70763766e-02 + 5.71013128e-02 5.71262550e-02 5.71512031e-02 5.71761569e-02 5.72011162e-02 + 5.72260809e-02 5.72510508e-02 5.72760258e-02 5.73010056e-02 5.73259901e-02 + 1.00620653e-03 1.00255052e-03 9.99023948e-04 9.95625443e-04 9.92353626e-04 + 9.89207121e-04 9.86184556e-04 9.83284559e-04 9.80505761e-04 9.77846796e-04 + 9.75306299e-04 9.72882909e-04 9.70575266e-04 9.68382011e-04 9.66301792e-04 + 9.64333255e-04 9.62475050e-04 9.60725831e-04 9.59084254e-04 9.57548976e-04 + 9.56118659e-04 9.54791967e-04 9.53567567e-04 9.52444128e-04 9.51420323e-04 + 9.50494828e-04 9.49666323e-04 9.48933488e-04 9.48295009e-04 9.47749574e-04 + 9.47295876e-04 9.46932608e-04 9.46658469e-04 9.46472162e-04 9.46372390e-04 + 9.46357863e-04 9.46427293e-04 9.46579395e-04 9.46812890e-04 9.47126499e-04 + 9.47518951e-04 9.47988975e-04 9.48535306e-04 9.49156682e-04 9.49851846e-04 + 9.50619543e-04 9.51458524e-04 9.52367543e-04 9.53345359e-04 9.54390732e-04 + 9.55502431e-04 9.56679226e-04 9.57919892e-04 9.59223209e-04 9.60587959e-04 + 9.62012932e-04 9.63496920e-04 9.65038719e-04 9.66637132e-04 9.68290964e-04 + 9.69999026e-04 9.71760133e-04 9.73573106e-04 9.75436769e-04 9.77349952e-04 + 9.79311488e-04 9.81320218e-04 9.83374984e-04 9.85474636e-04 9.87618028e-04 + 9.89804019e-04 9.92031472e-04 9.94299257e-04 9.96606248e-04 9.98951323e-04 + 1.00133337e-03 1.00375127e-03 1.00620393e-03 1.00869024e-03 1.01120911e-03 + 1.01375946e-03 1.01634019e-03 1.01895022e-03 1.02158850e-03 1.02425394e-03 + 1.02694549e-03 1.02966209e-03 1.03240269e-03 1.03516625e-03 1.03795173e-03 + 1.04075808e-03 1.04358430e-03 1.04642934e-03 1.04929221e-03 1.05217188e-03 + 1.05506735e-03 1.05797763e-03 1.06090172e-03 1.06383864e-03 1.06678740e-03 + 1.06974703e-03 1.07271657e-03 1.07569504e-03 1.07868150e-03 1.08167499e-03 + 1.08467457e-03 1.08767930e-03 1.09068826e-03 1.09370050e-03 1.09671513e-03 + 1.09973122e-03 1.10274787e-03 1.10576417e-03 1.10877925e-03 1.11179220e-03 + 1.11480214e-03 1.11780821e-03 1.12080954e-03 1.12380526e-03 1.12679452e-03 + 1.12977647e-03 1.13275028e-03 1.13571510e-03 1.13867011e-03 1.14161449e-03 + 1.14454743e-03 1.14746810e-03 1.15037572e-03 1.15326950e-03 1.15614863e-03 + 1.15901234e-03 1.16185987e-03 1.16469043e-03 1.16750327e-03 1.17029764e-03 + 1.17307279e-03 1.17582798e-03 1.17856248e-03 1.18127556e-03 1.18396651e-03 + 1.18663461e-03 1.18927915e-03 1.19189945e-03 1.19449481e-03 1.19706454e-03 + 1.19960797e-03 1.20212444e-03 1.20461327e-03 1.20707382e-03 1.20950543e-03 + 1.21190746e-03 1.21427929e-03 1.21662028e-03 1.21892982e-03 1.22120730e-03 + 1.22345210e-03 1.22566363e-03 1.22784131e-03 1.22998454e-03 1.23209276e-03 + 1.23416539e-03 1.23620187e-03 1.23820166e-03 1.24016420e-03 1.24208895e-03 + 1.24397538e-03 1.24582297e-03 1.24763120e-03 1.24939956e-03 1.25112755e-03 + 1.25281468e-03 1.25446045e-03 1.25606438e-03 1.25762601e-03 1.25914486e-03 + 1.26062049e-03 1.26205243e-03 1.26344025e-03 1.26478351e-03 1.26608178e-03 + 1.26733464e-03 1.26854167e-03 1.26970248e-03 1.27081666e-03 1.27188382e-03 + 1.27290358e-03 1.27387557e-03 1.27479940e-03 1.27567473e-03 1.27650119e-03 + 1.27727845e-03 1.27800616e-03 1.27868399e-03 1.27931162e-03 1.27988873e-03 + 1.28041501e-03 1.28089017e-03 1.28131390e-03 1.28168592e-03 1.28200595e-03 + 1.28227372e-03 1.28248896e-03 1.28265143e-03 1.28276086e-03 1.28281702e-03 + 1.28281967e-03 1.28276859e-03 1.28266356e-03 1.28250436e-03 1.28229079e-03 + 1.28202265e-03 1.28169975e-03 1.28132192e-03 1.28088897e-03 1.28040073e-03 + 1.27985706e-03 1.27925778e-03 1.27860277e-03 1.27789188e-03 1.27712498e-03 + 1.27630194e-03 1.27542266e-03 1.27448701e-03 1.27349491e-03 1.27244625e-03 + 1.27134095e-03 1.27017894e-03 1.26896013e-03 1.26768446e-03 1.26635188e-03 + 1.26496233e-03 1.26351578e-03 1.26201218e-03 1.26045150e-03 1.25883373e-03 + 1.25715886e-03 1.25542686e-03 1.25363775e-03 1.25179153e-03 1.24988822e-03 + 1.24792783e-03 1.24591040e-03 1.24383596e-03 1.24170455e-03 1.23951622e-03 + 1.23727103e-03 1.23496905e-03 1.23261034e-03 1.23019498e-03 1.22772306e-03 + 1.22519466e-03 1.22260990e-03 1.21996886e-03 1.21727167e-03 1.21451845e-03 + 1.21170931e-03 1.20884440e-03 1.20592385e-03 1.20294782e-03 1.19991644e-03 + 1.19682989e-03 1.19368834e-03 1.19049194e-03 1.18724090e-03 1.18393538e-03 + 1.18057559e-03 1.17716173e-03 1.17369400e-03 1.17017262e-03 1.16659781e-03 + 1.16296979e-03 1.15928880e-03 1.15555508e-03 1.15176888e-03 1.14793044e-03 + 1.14404003e-03 1.14009791e-03 1.13610436e-03 1.13205965e-03 1.12796407e-03 + 1.12381791e-03 1.11962146e-03 1.11537504e-03 1.11107895e-03 1.10673350e-03 + 1.10233903e-03 1.09789585e-03 1.09340430e-03 1.08886473e-03 1.08427748e-03 + 1.07964290e-03 1.07496136e-03 1.07023321e-03 1.06545883e-03 1.06063860e-03 + 1.05577290e-03 1.05086212e-03 1.04590664e-03 1.04090688e-03 1.03586324e-03 + 1.03077613e-03 1.02564597e-03 1.02047319e-03 1.01525820e-03 1.01000145e-03 + 1.00470338e-03 9.99364439e-04 9.93985069e-04 9.88565732e-04 9.83106891e-04 + 9.77609014e-04 9.72072576e-04 9.66498055e-04 9.60885935e-04 9.55236707e-04 + 9.49550867e-04 9.43828914e-04 9.38071354e-04 9.32278699e-04 9.26451464e-04 + 9.20590172e-04 9.14695348e-04 9.08767525e-04 9.02807239e-04 8.96815032e-04 + 8.90791450e-04 8.84737045e-04 8.78652374e-04 8.72537999e-04 8.66394486e-04 + 8.60222405e-04 8.54022334e-04 8.47794853e-04 8.41540547e-04 8.35260007e-04 + 8.28953828e-04 8.22622608e-04 8.16266953e-04 8.09887470e-04 8.03484774e-04 + 7.97059481e-04 7.90612214e-04 7.84143599e-04 7.77654267e-04 7.71144854e-04 + 7.64615998e-04 7.58068344e-04 7.51502540e-04 7.44919239e-04 7.38319095e-04 + 7.31702770e-04 7.25070930e-04 7.18424241e-04 7.11763377e-04 7.05089015e-04 + 6.98401835e-04 6.91702521e-04 6.84991763e-04 6.78270252e-04 6.71538685e-04 + 6.64797760e-04 6.58048182e-04 6.51290658e-04 6.44525898e-04 6.37754617e-04 + 6.30977533e-04 6.24195368e-04 6.17408846e-04 6.10618696e-04 6.03825649e-04 + 5.97030442e-04 5.90233812e-04 5.83436502e-04 5.76639257e-04 5.69842825e-04 + 5.63047957e-04 5.56255409e-04 5.49465938e-04 5.42680306e-04 5.35899276e-04 + 5.29123615e-04 5.22354093e-04 5.15591483e-04 5.08836561e-04 5.02090105e-04 + 4.95352897e-04 4.88625721e-04 4.81909363e-04 4.75204614e-04 4.68512265e-04 + 4.61833112e-04 4.55167951e-04 4.48517583e-04 4.41882809e-04 4.35264436e-04 + 4.28663270e-04 4.22080121e-04 4.15515801e-04 4.08971125e-04 4.02446908e-04 + 3.95943970e-04 3.89463132e-04 3.83005216e-04 3.76571049e-04 3.70161457e-04 + 3.63777270e-04 3.57419319e-04 3.51088437e-04 3.44785461e-04 3.38511226e-04 + 3.32266571e-04 3.26052338e-04 3.19869369e-04 3.13718508e-04 3.07600601e-04 + 3.01516496e-04 2.95467041e-04 2.89453087e-04 2.83475487e-04 2.77535094e-04 + 2.71632764e-04 2.65769353e-04 2.59945718e-04 2.54162720e-04 2.48421219e-04 + 2.42722076e-04 2.37066155e-04 2.31454320e-04 2.25887436e-04 2.20366370e-04 + 2.14891990e-04 2.09465163e-04 2.04086760e-04 1.98757651e-04 1.93478708e-04 + 1.88250802e-04 1.83074808e-04 1.77951598e-04 1.72882048e-04 1.67867034e-04 + 1.62907431e-04 1.58004116e-04 1.53157967e-04 1.48369861e-04 1.43640677e-04 + 1.38971295e-04 1.34362593e-04 1.29815453e-04 1.25330753e-04 1.20909375e-04 + 1.16552200e-04 1.12260108e-04 1.08033983e-04 1.03874705e-04 9.97831561e-05 + 9.57602188e-05 9.18067751e-05 8.79237073e-05 8.41118977e-05 8.03722285e-05 + 7.67055819e-05 7.31128402e-05 6.95948854e-05 6.61525994e-05 6.27868638e-05 + 5.94985602e-05 5.62885699e-05 5.31577737e-05 5.01070524e-05 4.71372862e-05 + 4.42493550e-05 4.14441382e-05 3.87225148e-05 3.60853634e-05 3.35335619e-05 + 3.10679877e-05 2.86895177e-05 2.63990279e-05 2.41973939e-05 2.20854906e-05 + 2.00641919e-05 1.81343712e-05 1.62969011e-05 1.45526531e-05 1.29024982e-05 + 1.13473061e-05 9.88794601e-06 8.52528582e-06 7.26019257e-06 6.09353228e-06 + 5.02616987e-06 4.05896918e-06 3.19279295e-06 2.42850273e-06 1.76695890e-06 + 1.20902060e-06 7.55545761e-07 4.07390992e-07 1.65411606e-07 3.04615724e-08 + 3.39348389e-09 8.50585289e-08 2.76306460e-07 5.77985565e-07 9.90942636e-07 + 1.51602294e-06 2.15407018e-06 2.90592648e-06 3.77243237e-06 4.75442669e-06 + 5.85274664e-06 7.06822772e-06 8.40170368e-06 9.85400651e-06 1.14259664e-05 + 1.31184118e-05 1.49321693e-05 1.68680634e-05 1.89269170e-05 2.11095509e-05 + 2.34167840e-05 2.58494332e-05 2.84083134e-05 3.10942374e-05 3.39080161e-05 + 3.68504581e-05 3.99223700e-05 4.31245562e-05 4.64578189e-05 4.99229584e-05 + 5.35207723e-05 5.72520562e-05 6.11176036e-05 6.51182053e-05 6.92546501e-05 + 7.35277243e-05 7.79382119e-05 8.24868944e-05 8.71745510e-05 9.20019583e-05 + 9.69698906e-05 1.02079120e-04 1.07330414e-04 1.12724542e-04 1.18262266e-04 + 1.23944348e-04 1.29771547e-04 1.35744619e-04 1.41864318e-04 1.48131395e-04 + 1.54546598e-04 1.61110672e-04 1.67824360e-04 1.74688402e-04 1.81703535e-04 + 1.88870494e-04 1.96190010e-04 2.03662811e-04 2.11289624e-04 2.19071171e-04 + 2.27008173e-04 2.35101346e-04 2.43351404e-04 2.51759058e-04 2.60325017e-04 + 2.69049986e-04 2.77934666e-04 2.86979757e-04 2.96185954e-04 3.05553951e-04 + 3.15084436e-04 3.24778097e-04 3.34635617e-04 3.44657676e-04 3.54844951e-04 + 3.65198117e-04 3.75717843e-04 3.86404797e-04 3.97259643e-04 4.08283043e-04 + 4.19475653e-04 4.30838128e-04 4.42371119e-04 4.54075273e-04 4.65951236e-04 + 4.77999647e-04 4.90221144e-04 5.02616361e-04 5.15185930e-04 5.27930476e-04 + 5.40850625e-04 5.53946996e-04 5.67220207e-04 5.80670870e-04 5.94299595e-04 + 6.08106990e-04 6.22093656e-04 6.36260194e-04 6.50607198e-04 6.65135261e-04 + 6.79844972e-04 6.94736916e-04 7.09811673e-04 7.25069822e-04 7.40511938e-04 + 7.56138589e-04 7.71950344e-04 7.87947765e-04 8.04131412e-04 8.20501840e-04 + 8.37059603e-04 8.53805247e-04 8.70739319e-04 8.87862358e-04 9.05174902e-04 + 9.22677484e-04 9.40370635e-04 9.58254879e-04 9.76330739e-04 9.94598734e-04 + 1.01305938e-03 1.03171318e-03 1.05056065e-03 1.06960229e-03 1.08883860e-03 + 1.10827007e-03 1.12789720e-03 1.14772047e-03 1.16774037e-03 1.18795737e-03 + 1.20837196e-03 1.22898460e-03 1.24979577e-03 1.27080593e-03 1.29201553e-03 + 1.31342504e-03 1.33503491e-03 1.35684558e-03 1.37885750e-03 1.40107112e-03 + 1.42348686e-03 1.44610516e-03 1.46892646e-03 1.49195117e-03 1.51517972e-03 + 1.53861252e-03 1.56224999e-03 1.58609253e-03 1.61014056e-03 1.63439447e-03 + 1.65885465e-03 1.68352151e-03 1.70839543e-03 1.73347680e-03 1.75876600e-03 + 1.78426340e-03 1.80996937e-03 1.83588430e-03 1.86200854e-03 1.88834245e-03 + 1.91488639e-03 1.94164072e-03 1.96860578e-03 1.99578192e-03 2.02316948e-03 + 2.05076879e-03 2.07858019e-03 2.10660401e-03 2.13484057e-03 2.16329019e-03 + 2.19195320e-03 2.22082990e-03 2.24992060e-03 2.27922561e-03 2.30874522e-03 + 2.33847974e-03 2.36842945e-03 2.39859465e-03 2.42897563e-03 2.45957265e-03 + 2.49038600e-03 2.52141594e-03 2.55266276e-03 2.58412671e-03 2.61580805e-03 + 2.64770705e-03 2.67982394e-03 2.71215899e-03 2.74471243e-03 2.77748450e-03 + 2.81047545e-03 2.84368550e-03 2.87711489e-03 2.91076383e-03 2.94463255e-03 + 2.97872127e-03 3.01303019e-03 3.04755952e-03 3.08230948e-03 3.11728026e-03 + 3.15247205e-03 3.18788505e-03 3.22351945e-03 3.25937543e-03 3.29545318e-03 + 3.33175287e-03 3.36827467e-03 3.40501875e-03 3.44198528e-03 3.47917442e-03 + 3.51658632e-03 3.55422114e-03 3.59207903e-03 3.63016014e-03 3.66846460e-03 + 3.70699255e-03 3.74574412e-03 3.78471946e-03 3.82391867e-03 3.86334189e-03 + 3.90298923e-03 3.94286081e-03 3.98295674e-03 4.02327712e-03 4.06382206e-03 + 4.10459166e-03 4.14558600e-03 4.18680519e-03 4.22824932e-03 4.26991845e-03 + 4.31181268e-03 4.35393209e-03 4.39627673e-03 4.43884669e-03 4.48164203e-03 + 4.52466280e-03 4.56790908e-03 4.61138090e-03 4.65507832e-03 4.69900139e-03 + 4.74315015e-03 4.78752464e-03 4.83212489e-03 4.87695094e-03 4.92200281e-03 + 4.96728053e-03 5.01278412e-03 5.05851360e-03 5.10446898e-03 5.15065026e-03 + 5.19705746e-03 5.24369058e-03 5.29054962e-03 5.33763456e-03 5.38494542e-03 + 5.43248217e-03 5.48024479e-03 5.52823328e-03 5.57644760e-03 5.62488773e-03 + 5.67355365e-03 5.72244531e-03 5.77156269e-03 5.82090574e-03 5.87047443e-03 + 5.92026869e-03 5.97028849e-03 6.02053378e-03 6.07100448e-03 6.12170055e-03 + 6.17262192e-03 6.22376853e-03 6.27514030e-03 6.32673715e-03 6.37855902e-03 + 6.43060582e-03 6.48287747e-03 6.53537388e-03 6.58809496e-03 6.64104062e-03 + 6.69421076e-03 6.74760528e-03 6.80122408e-03 6.85506705e-03 6.90913408e-03 + 6.96342506e-03 7.01793987e-03 7.07267840e-03 7.12764051e-03 7.18282609e-03 + 7.23823501e-03 7.29386713e-03 7.34972232e-03 7.40580044e-03 7.46210136e-03 + 7.51862492e-03 7.57537097e-03 7.63233938e-03 7.68952998e-03 7.74694262e-03 + 7.80457714e-03 7.86243338e-03 7.92051116e-03 7.97881033e-03 8.03733072e-03 + 8.09607214e-03 8.15503442e-03 8.21421738e-03 8.27362084e-03 8.33324462e-03 + 8.39308851e-03 8.45315234e-03 8.51343590e-03 8.57393901e-03 8.63466145e-03 + 8.69560304e-03 8.75676355e-03 8.81814279e-03 8.87974054e-03 8.94155659e-03 + 9.00359072e-03 9.06584271e-03 9.12831235e-03 9.19099940e-03 9.25390364e-03 + 9.31702483e-03 9.38036276e-03 9.44391717e-03 9.50768784e-03 9.57167452e-03 + 9.63587697e-03 9.70029495e-03 9.76492820e-03 9.82977647e-03 9.89483952e-03 + 9.96011708e-03 1.00256089e-02 1.00913147e-02 1.01572343e-02 1.02233673e-02 + 1.02897135e-02 1.03562727e-02 1.04230445e-02 1.04900287e-02 1.05572250e-02 + 1.06246331e-02 1.06922528e-02 1.07600837e-02 1.08281256e-02 1.08963781e-02 + 1.09648411e-02 1.10335142e-02 1.11023970e-02 1.11714894e-02 1.12407909e-02 + 1.13103014e-02 1.13800204e-02 1.14499478e-02 1.15200831e-02 1.15904261e-02 + 1.16609764e-02 1.17317338e-02 1.18026978e-02 1.18738683e-02 1.19452449e-02 + 1.20168272e-02 1.20886149e-02 1.21606078e-02 1.22328054e-02 1.23052074e-02 + 1.23778136e-02 1.24506235e-02 1.25236368e-02 1.25968532e-02 1.26702724e-02 + 1.27438940e-02 1.28177176e-02 1.28917429e-02 1.29659696e-02 1.30403973e-02 + 1.31150256e-02 1.31898543e-02 1.32648829e-02 1.33401111e-02 1.34155385e-02 + 1.34911647e-02 1.35669895e-02 1.36430124e-02 1.37192330e-02 1.37956511e-02 + 1.38722662e-02 1.39490779e-02 1.40260859e-02 1.41032898e-02 1.41806892e-02 + 1.42582838e-02 1.43360731e-02 1.44140568e-02 1.44922346e-02 1.45706059e-02 + 1.46491705e-02 1.47279279e-02 1.48068777e-02 1.48860196e-02 1.49653532e-02 + 1.50448780e-02 1.51245937e-02 1.52044999e-02 1.52845962e-02 1.53648821e-02 + 1.54453573e-02 1.55260214e-02 1.56068740e-02 1.56879146e-02 1.57691428e-02 + 1.58505584e-02 1.59321607e-02 1.60139495e-02 1.60959243e-02 1.61780847e-02 + 1.62604303e-02 1.63429606e-02 1.64256753e-02 1.65085740e-02 1.65916561e-02 + 1.66749213e-02 1.67583692e-02 1.68419994e-02 1.69258114e-02 1.70098048e-02 + 1.70939791e-02 1.71783340e-02 1.72628690e-02 1.73475837e-02 1.74324776e-02 + 1.75175503e-02 1.76028015e-02 1.76882306e-02 1.77738372e-02 1.78596209e-02 + 1.79455812e-02 1.80317177e-02 1.81180300e-02 1.82045176e-02 1.82911801e-02 + 1.83780171e-02 1.84650280e-02 1.85522125e-02 1.86395701e-02 1.87271004e-02 + 1.88148029e-02 1.89026771e-02 1.89907227e-02 1.90789392e-02 1.91673260e-02 + 1.92558829e-02 1.93446092e-02 1.94335047e-02 1.95225687e-02 1.96118009e-02 + 1.97012008e-02 1.97907680e-02 1.98805019e-02 1.99704022e-02 2.00604684e-02 + 2.01507000e-02 2.02410965e-02 2.03316576e-02 2.04223827e-02 2.05132714e-02 + 2.06043232e-02 2.06955376e-02 2.07869143e-02 2.08784526e-02 2.09701523e-02 + 2.10620128e-02 2.11540335e-02 2.12462142e-02 2.13385543e-02 2.14310533e-02 + 2.15237108e-02 2.16165263e-02 2.17094993e-02 2.18026294e-02 2.18959161e-02 + 2.19893590e-02 2.20829575e-02 2.21767111e-02 2.22706196e-02 2.23646822e-02 + 2.24588986e-02 2.25532684e-02 2.26477909e-02 2.27424659e-02 2.28372927e-02 + 2.29322709e-02 2.30274000e-02 2.31226797e-02 2.32181093e-02 2.33136884e-02 + 2.34094166e-02 2.35052933e-02 2.36013181e-02 2.36974906e-02 2.37938101e-02 + 2.38902764e-02 2.39868888e-02 2.40836469e-02 2.41805503e-02 2.42775984e-02 + 2.43747907e-02 2.44721269e-02 2.45696064e-02 2.46672287e-02 2.47649934e-02 + 2.48629000e-02 2.49609479e-02 2.50591368e-02 2.51574662e-02 2.52559355e-02 + 2.53545443e-02 2.54532921e-02 2.55521784e-02 2.56512028e-02 2.57503647e-02 + 2.58496638e-02 2.59490994e-02 2.60486712e-02 2.61483786e-02 2.62482212e-02 + 2.63481985e-02 2.64483100e-02 2.65485552e-02 2.66489337e-02 2.67494450e-02 + 2.68500885e-02 2.69508639e-02 2.70517706e-02 2.71528081e-02 2.72539760e-02 + 2.73552738e-02 2.74567010e-02 2.75582572e-02 2.76599418e-02 2.77617544e-02 + 2.78636944e-02 2.79657615e-02 2.80679551e-02 2.81702748e-02 2.82727200e-02 + 2.83752904e-02 2.84779854e-02 2.85808045e-02 2.86837473e-02 2.87868132e-02 + 2.88900019e-02 2.89933128e-02 2.90967454e-02 2.92002993e-02 2.93039741e-02 + 2.94077691e-02 2.95116840e-02 2.96157182e-02 2.97198713e-02 2.98241429e-02 + 2.99285324e-02 3.00330393e-02 3.01376632e-02 3.02424037e-02 3.03472601e-02 + 3.04522321e-02 3.05573193e-02 3.06625210e-02 3.07678368e-02 3.08732664e-02 + 3.09788091e-02 3.10844645e-02 3.11902322e-02 3.12961116e-02 3.14021023e-02 + 3.15082039e-02 3.16144158e-02 3.17207376e-02 3.18271688e-02 3.19337090e-02 + 3.20403576e-02 3.21471143e-02 3.22539784e-02 3.23609496e-02 3.24680275e-02 + 3.25752114e-02 3.26825010e-02 3.27898958e-02 3.28973953e-02 3.30049991e-02 + 3.31127066e-02 3.32205175e-02 3.33284313e-02 3.34364474e-02 3.35445654e-02 + 3.36527849e-02 3.37611055e-02 3.38695265e-02 3.39780476e-02 3.40866684e-02 + 3.41953882e-02 3.43042068e-02 3.44131236e-02 3.45221381e-02 3.46312500e-02 + 3.47404586e-02 3.48497637e-02 3.49591647e-02 3.50686612e-02 3.51782526e-02 + 3.52879386e-02 3.53977187e-02 3.55075924e-02 3.56175594e-02 3.57276190e-02 + 3.58377709e-02 3.59480146e-02 3.60583497e-02 3.61687756e-02 3.62792920e-02 + 3.63898985e-02 3.65005944e-02 3.66113795e-02 3.67222532e-02 3.68332151e-02 + 3.69442647e-02 3.70554017e-02 3.71666254e-02 3.72779356e-02 3.73893317e-02 + 3.75008133e-02 3.76123800e-02 3.77240313e-02 3.78357668e-02 3.79475859e-02 + 3.80594883e-02 3.81714736e-02 3.82835413e-02 3.83956909e-02 3.85079219e-02 + 3.86202341e-02 3.87326269e-02 3.88450998e-02 3.89576525e-02 3.90702845e-02 + 3.91829953e-02 3.92957846e-02 3.94086518e-02 3.95215966e-02 3.96346185e-02 + 3.97477171e-02 3.98608919e-02 3.99741425e-02 4.00874685e-02 4.02008694e-02 + 4.03143448e-02 4.04278944e-02 4.05415175e-02 4.06552139e-02 4.07689830e-02 + 4.08828245e-02 4.09967379e-02 4.11107228e-02 4.12247788e-02 4.13389054e-02 + 4.14531022e-02 4.15673688e-02 4.16817048e-02 4.17961097e-02 4.19105831e-02 + 4.20251246e-02 4.21397338e-02 4.22544102e-02 4.23691534e-02 4.24839631e-02 + 4.25988387e-02 4.27137799e-02 4.28287862e-02 4.29438573e-02 4.30589926e-02 + 4.31741919e-02 4.32894546e-02 4.34047804e-02 4.35201689e-02 4.36356195e-02 + 4.37511320e-02 4.38667059e-02 4.39823408e-02 4.40980363e-02 4.42137919e-02 + 4.43296073e-02 4.44454821e-02 4.45614158e-02 4.46774080e-02 4.47934583e-02 + 4.49095664e-02 4.50257318e-02 4.51419541e-02 4.52582329e-02 4.53745678e-02 + 4.54909583e-02 4.56074042e-02 4.57239050e-02 4.58404602e-02 4.59570696e-02 + 4.60737326e-02 4.61904489e-02 4.63072181e-02 4.64240398e-02 4.65409135e-02 + 4.66578390e-02 4.67748158e-02 4.68918435e-02 4.70089216e-02 4.71260499e-02 + 4.72432280e-02 4.73604553e-02 4.74777316e-02 4.75950564e-02 4.77124294e-02 + 4.78298502e-02 4.79473183e-02 4.80648334e-02 4.81823951e-02 4.83000030e-02 + 4.84176567e-02 4.85353559e-02 4.86531001e-02 4.87708890e-02 4.88887222e-02 + 4.90065993e-02 4.91245199e-02 4.92424836e-02 4.93604901e-02 4.94785390e-02 + 4.95966298e-02 4.97147623e-02 4.98329360e-02 4.99511505e-02 5.00694056e-02 + 5.01877007e-02 5.03060356e-02 5.04244098e-02 5.05428230e-02 5.06612748e-02 + 5.07797649e-02 5.08982928e-02 5.10168582e-02 5.11354607e-02 5.12540999e-02 + 5.13727755e-02 5.14914872e-02 5.16102344e-02 5.17290170e-02 5.18478344e-02 + 5.19666864e-02 5.20855725e-02 5.22044925e-02 5.23234459e-02 5.24424324e-02 + 5.25614515e-02 5.26805031e-02 5.27995866e-02 5.29187018e-02 5.30378482e-02 + 5.31570255e-02 5.32762334e-02 5.33954715e-02 5.35147394e-02 5.36340368e-02 + 5.37533633e-02 5.38727185e-02 5.39921022e-02 5.41115139e-02 5.42309534e-02 + 5.43504201e-02 5.44699139e-02 5.45894343e-02 5.47089810e-02 5.48285537e-02 + 5.49481519e-02 5.50677754e-02 5.51874237e-02 5.53070967e-02 5.54267938e-02 + 5.55465147e-02 5.56662592e-02 5.57860268e-02 5.59058173e-02 5.60256302e-02 + 5.61454652e-02 5.62653221e-02 5.63852003e-02 5.65050997e-02 5.66250198e-02 + 5.67449604e-02 5.68649210e-02 5.69849014e-02 5.71049012e-02 5.72249200e-02 + 5.73449576e-02 5.74650136e-02 5.75850876e-02 5.77051793e-02 5.78252885e-02 + 5.79454147e-02 5.80655576e-02 5.81857169e-02 5.83058922e-02 5.84260833e-02 + 5.85462898e-02 5.86665113e-02 5.87867476e-02 5.89069982e-02 5.90272630e-02 + 5.91475415e-02 5.92678334e-02 5.93881384e-02 5.95084562e-02 5.96287864e-02 + 5.97491288e-02 5.98694830e-02 5.99898486e-02 6.01102254e-02 6.02306130e-02 + 6.03510111e-02 6.04714194e-02 6.05918376e-02 6.07122653e-02 6.08327023e-02 + 6.09531481e-02 6.10736026e-02 6.11940653e-02 6.13145360e-02 6.14350143e-02 + 6.15555000e-02 6.16759927e-02 6.17964921e-02 6.19169978e-02 6.20375096e-02 + 6.21580272e-02 6.22785503e-02 6.23990785e-02 6.25196115e-02 6.26401490e-02 + 6.27606907e-02 6.28812364e-02 6.30017856e-02 6.31223381e-02 6.32428936e-02 + 6.33634518e-02 6.34840123e-02 6.36045749e-02 6.37251392e-02 6.38457050e-02 + 6.39662719e-02 6.40868397e-02 6.42074080e-02 6.43279765e-02 6.44485450e-02 + 6.45691132e-02 6.46896806e-02 6.48102472e-02 6.49308124e-02 6.50513761e-02 + 6.51719379e-02 6.52924976e-02 6.54130548e-02 6.55336093e-02 6.56541608e-02 + 6.57747089e-02 6.58952534e-02 6.60157939e-02 6.61363302e-02 6.62568621e-02 + 6.63773891e-02 6.64979110e-02 6.66184276e-02 6.67389384e-02 6.68594433e-02 + 6.69799420e-02 6.71004341e-02 6.72209194e-02 6.73413975e-02 6.74618683e-02 + 6.75823313e-02 6.77027864e-02 6.78232332e-02 6.79436715e-02 6.80641009e-02 + 6.81845212e-02 6.83049321e-02 6.84253333e-02 6.85457246e-02 6.86661056e-02 + 6.87864761e-02 6.89068358e-02 6.90271844e-02 6.91475216e-02 6.92678471e-02 + 6.93881608e-02 6.95084622e-02 6.96287512e-02 6.97490274e-02 6.98692906e-02 + 6.99895404e-02 7.01097767e-02 7.02299991e-02 7.03502074e-02 7.04704012e-02 + 7.05905804e-02 7.07107447e-02 7.08308937e-02 7.09510272e-02 7.10711449e-02 + 7.11912466e-02 7.13113320e-02 7.14314009e-02 7.15514528e-02 7.16714877e-02 + 7.17915052e-02 7.19115050e-02 7.20314869e-02 7.21514506e-02 7.22713959e-02 + 7.23913224e-02 7.25112300e-02 7.26311183e-02 7.27509871e-02 7.28708362e-02 + 7.29906652e-02 7.31104739e-02 7.32302620e-02 7.33500294e-02 7.34697756e-02 + 7.35895005e-02 7.37092038e-02 7.38288853e-02 7.39485446e-02 7.40681816e-02 + 7.41877959e-02 7.43073873e-02 7.44269556e-02 7.45465004e-02 7.46660216e-02 + 7.47855189e-02 7.49049920e-02 7.50244407e-02 7.51438647e-02 7.52632638e-02 + 7.53826377e-02 7.55019862e-02 7.56213089e-02 7.57406057e-02 7.58598764e-02 + 7.59791205e-02 7.60983380e-02 7.62175286e-02 7.63366919e-02 7.64558278e-02 + 7.65749361e-02 7.66940164e-02 7.68130685e-02 7.69320921e-02 7.70510872e-02 + 7.71700532e-02 7.72889902e-02 7.74078977e-02 7.75267755e-02 7.76456235e-02 + 7.77644413e-02 7.78832287e-02 7.80019855e-02 7.81207115e-02 7.82394063e-02 + 7.83580698e-02 7.84767016e-02 7.85953017e-02 7.87138697e-02 7.88324054e-02 + 7.89509085e-02 7.90693788e-02 7.91878162e-02 7.93062202e-02 7.94245908e-02 + 7.95429276e-02 7.96612305e-02 7.97794992e-02 7.98977334e-02 8.00159329e-02 + 8.01340976e-02 8.02522271e-02 8.03703213e-02 8.04883798e-02 8.06064025e-02 + 8.07243891e-02 8.08423395e-02 8.09602533e-02 8.10781303e-02 8.11959704e-02 + 8.13137732e-02 8.14315386e-02 8.15492663e-02 8.16669562e-02 8.17846079e-02 + 8.19022212e-02 8.20197960e-02 8.21373319e-02 8.22548288e-02 8.23722865e-02 + 8.24897046e-02 8.26070831e-02 8.27244216e-02 8.28417200e-02 8.29589780e-02 + 8.30761954e-02 8.31933720e-02 8.33105075e-02 8.34276018e-02 8.35446546e-02 + 8.36616657e-02 8.37786349e-02 8.38955619e-02 8.40124465e-02 8.41292886e-02 + 8.42460879e-02 8.43628442e-02 8.44795572e-02 8.45962268e-02 8.47128528e-02 + 8.48294348e-02 8.49459728e-02 8.50624664e-02 8.51789156e-02 8.52953200e-02 + 8.54116794e-02 8.55279937e-02 8.56442626e-02 8.57604859e-02 8.58766634e-02 + 8.59927950e-02 8.61088803e-02 8.62249191e-02 8.63409114e-02 8.64568567e-02 + 8.65727551e-02 8.66886061e-02 8.68044097e-02 8.69201656e-02 8.70358736e-02 + 8.71515335e-02 8.72671452e-02 8.73827083e-02 8.74982227e-02 8.76136882e-02 + 8.77291045e-02 8.78444716e-02 8.79597891e-02 8.80750569e-02 8.81902747e-02 + 8.83054425e-02 8.84205598e-02 8.85356267e-02 8.86506428e-02 8.87656079e-02 + 8.88805219e-02 8.89953846e-02 8.91101958e-02 8.92249552e-02 8.93396626e-02 + 8.94543180e-02 8.95689210e-02 8.96834715e-02 8.97979692e-02 8.99124141e-02 + 9.00268058e-02 9.01411442e-02 9.02554291e-02 9.03696603e-02 9.04838376e-02 + 9.05979609e-02 9.07120298e-02 9.08260443e-02 9.09400041e-02 9.10539091e-02 + 9.11677590e-02 9.12815537e-02 9.13952929e-02 9.15089765e-02 9.16226044e-02 + 9.17361762e-02 9.18496918e-02 9.19631511e-02 9.20765538e-02 9.21898998e-02 + 9.23031888e-02 9.24164207e-02 9.25295953e-02 9.26427124e-02 9.27557719e-02 + 9.28687734e-02 9.29817170e-02 9.30946023e-02 9.32074292e-02 9.33201974e-02 + 9.34329069e-02 9.35455575e-02 9.36581489e-02 9.37706810e-02 9.38831536e-02 + 9.39955665e-02 9.41079195e-02 9.42202125e-02 9.43324453e-02 9.44446176e-02 + 9.45567294e-02 9.46687804e-02 9.47807705e-02 9.48926995e-02 9.50045672e-02 + 9.51163735e-02 9.52281181e-02 9.53398009e-02 9.54514217e-02 9.55629803e-02 + 9.56744766e-02 9.57859104e-02 9.58972815e-02 9.60085897e-02 9.61198350e-02 + 9.62310170e-02 9.63421357e-02 9.64531908e-02 9.65641822e-02 9.66751097e-02 + 9.67859732e-02 9.68967725e-02 9.70075073e-02 9.71181777e-02 9.72287832e-02 + 9.73393240e-02 9.74497996e-02 9.75602100e-02 9.76705551e-02 9.77808345e-02 + 9.78910483e-02 9.80011962e-02 9.81112780e-02 9.82212936e-02 9.83312429e-02 + 9.84411256e-02 9.85509416e-02 9.86606907e-02 9.87703728e-02 9.88799878e-02 + 9.89895353e-02 9.90990154e-02 9.92084278e-02 9.93177724e-02 9.94270490e-02 + 9.95362575e-02 9.96453976e-02 9.97544693e-02 9.98634724e-02 9.99724067e-02 + 1.00081272e-01 1.00190068e-01 1.00298795e-01 1.00407453e-01 1.00516041e-01 + 1.00624560e-01 1.00733008e-01 1.00841387e-01 1.00949695e-01 1.01057933e-01 + 1.01166101e-01 1.01274198e-01 1.01382224e-01 1.01490179e-01 1.01598063e-01 + 1.01705876e-01 1.01813618e-01 1.01921288e-01 1.02028886e-01 1.02136413e-01 + 1.02243867e-01 1.02351250e-01 1.02458560e-01 1.02565798e-01 1.02672963e-01 + 1.02780056e-01 1.02887076e-01 1.02994022e-01 1.03100896e-01 1.03207696e-01 + 1.03314423e-01 1.03421077e-01 1.03527656e-01 1.03634162e-01 1.03740594e-01 + 1.03846952e-01 1.03953235e-01 1.04059444e-01 1.04165579e-01 1.04271638e-01 + 1.04377623e-01 1.04483533e-01 1.04589368e-01 1.04695128e-01 1.04800812e-01 + 1.04906421e-01 1.05011954e-01 1.05117411e-01 1.05222793e-01 1.05328098e-01 + 1.05433327e-01 1.05538480e-01 1.05643557e-01 1.05748556e-01 1.05853479e-01 + 1.05958326e-01 1.06063095e-01 1.06167787e-01 1.06272402e-01 1.06376939e-01 + 1.06481399e-01 1.06585781e-01 1.06690086e-01 1.06794312e-01 1.06898461e-01 + 1.07002532e-01 1.07106524e-01 1.07210437e-01 1.07314273e-01 1.07418029e-01 + 1.07521707e-01 1.07625306e-01 1.07728825e-01 1.07832266e-01 1.07935627e-01 + 1.08038909e-01 1.08142112e-01 1.08245234e-01 1.08348277e-01 1.08451240e-01 + 1.08554123e-01 1.08656926e-01 1.08759649e-01 1.08862291e-01 1.08964853e-01 + 1.09067334e-01 1.09169734e-01 1.09272053e-01 1.09374292e-01 1.09476449e-01 + 1.09578525e-01 1.09680520e-01 1.09782434e-01 1.09884265e-01 1.09986016e-01 + 1.10087684e-01 1.10189270e-01 1.10290775e-01 1.10392197e-01 1.10493537e-01 + 1.10594795e-01 1.10695970e-01 1.10797062e-01 1.10898072e-01 1.10998999e-01 + 1.11099844e-01 1.11200605e-01 1.11301283e-01 1.11401878e-01 1.11502389e-01 + 1.11602817e-01 1.11703161e-01 1.11803422e-01 1.11903599e-01 1.12003692e-01 + 1.12103701e-01 1.12203626e-01 1.12303466e-01 1.12403223e-01 1.12502895e-01 + 1.12602482e-01 1.12701985e-01 1.12801403e-01 1.12900736e-01 1.12999985e-01 + 1.13099148e-01 1.13198226e-01 1.13297219e-01 1.13396126e-01 1.13494949e-01 + 1.13593685e-01 1.13692336e-01 1.13790901e-01 1.13889381e-01 1.13987774e-01 + 1.14086081e-01 1.14184303e-01 1.14282438e-01 1.14380486e-01 1.14478449e-01 + 1.14576325e-01 1.14674114e-01 1.14771816e-01 1.14869432e-01 1.14966961e-01 + 1.15064403e-01 1.15161757e-01 1.15259025e-01 1.15356205e-01 1.15453298e-01 + 1.15550304e-01 1.15647222e-01 1.15744052e-01 1.15840795e-01 1.15937450e-01 + 1.16034017e-01 1.16130496e-01 1.16226887e-01 1.16323190e-01 1.16419404e-01 + 1.16515531e-01 1.16611568e-01 1.16707518e-01 1.16803379e-01 1.16899151e-01 + 1.16994834e-01 1.17090429e-01 1.17185934e-01 1.17281351e-01 1.17376678e-01 + 1.17471917e-01 1.17567066e-01 1.17662125e-01 1.17757096e-01 1.17851977e-01 + 1.17946768e-01 1.18041470e-01 1.18136082e-01 1.18230604e-01 1.18325036e-01 + 1.18419378e-01 1.18513631e-01 1.18607793e-01 1.18701865e-01 1.18795846e-01 + 1.18889738e-01 1.18983538e-01 1.19077249e-01 1.19170869e-01 1.19264398e-01 + 1.19357836e-01 1.19451184e-01 1.19544441e-01 1.19637607e-01 1.19730681e-01 + 1.19823665e-01 1.19916558e-01 1.20009359e-01 1.20102069e-01 1.20194688e-01 + 1.20287215e-01 1.20379651e-01 1.20471995e-01 1.20564248e-01 1.20656409e-01 + 1.20748478e-01 1.20840455e-01 1.20932341e-01 1.21024134e-01 1.21115835e-01 + 1.21207445e-01 1.21298962e-01 1.21390386e-01 1.21481719e-01 1.21572959e-01 + 1.21664107e-01 1.21755162e-01 1.21846125e-01 1.21936995e-01 1.22027773e-01 + 1.22118458e-01 1.22209049e-01 1.22299549e-01 1.22389955e-01 1.22480268e-01 + 1.22570488e-01 1.22660615e-01 1.22750649e-01 1.22840590e-01 1.22930438e-01 + 1.23020192e-01 1.23109853e-01 1.23199420e-01 1.23288894e-01 1.23378274e-01 + 1.23467561e-01 1.23556754e-01 1.23645854e-01 1.23734859e-01 1.23823771e-01 + 1.23912589e-01 1.24001313e-01 1.24089943e-01 1.24178480e-01 1.24266922e-01 + 1.24355270e-01 1.24443523e-01 1.24531683e-01 1.24619748e-01 1.24707719e-01 + 1.24795596e-01 1.24883378e-01 1.24971066e-01 1.25058659e-01 1.25146158e-01 + 1.25233562e-01 1.25320871e-01 1.25408086e-01 1.25495206e-01 1.25582231e-01 + 1.25669162e-01 1.25755997e-01 1.25842738e-01 1.25929384e-01 1.26015934e-01 + 1.26102390e-01 1.26188751e-01 1.26275016e-01 1.26361186e-01 1.26447261e-01 + 1.26533241e-01 1.26619126e-01 1.26704915e-01 1.26790609e-01 1.26876207e-01 + 1.26961710e-01 1.27047118e-01 1.27132430e-01 1.27217646e-01 1.27302767e-01 + 1.27387793e-01 1.27472722e-01 1.27557556e-01 1.27642294e-01 1.27726937e-01 + 1.27811483e-01 1.27895934e-01 1.27980289e-01 1.28064548e-01 1.28148711e-01 + 1.28232778e-01 1.28316749e-01 1.28400624e-01 1.28484403e-01 1.28568086e-01 + 1.28651673e-01 1.28735164e-01 1.28818558e-01 1.28901857e-01 1.28985059e-01 + 1.29068164e-01 1.29151174e-01 1.29234087e-01 1.29316904e-01 1.29399624e-01 + 1.29482248e-01 1.29564776e-01 1.29647207e-01 1.29729542e-01 1.29811780e-01 + 1.29893922e-01 1.29975967e-01 1.30057915e-01 1.30139767e-01 1.30221522e-01 + 1.30303181e-01 1.30384743e-01 1.30466208e-01 1.30547577e-01 1.30628849e-01 + 1.30710024e-01 1.30791102e-01 1.30872084e-01 1.30952969e-01 1.31033756e-01 + 1.31114448e-01 1.31195042e-01 1.31275539e-01 1.31355939e-01 1.31436243e-01 + -1.00000000e-20 -1.11111111e+03 -2.22222222e+03 -3.33333333e+03 -4.44444444e+03 + -5.55555556e+03 -6.66666667e+03 -7.77777778e+03 -8.88888889e+03 -1.00000000e+04 + -1.00000000e-20 -1.11111111e+03 -2.22222222e+03 -3.33333333e+03 -4.44444444e+03 + -5.55555556e+03 -6.66666667e+03 -7.77777778e+03 -8.88888889e+03 -1.00000000e+04 + -1.00000000e-20 -1.11111111e+03 -2.22222222e+03 -3.33333333e+03 -4.44444444e+03 + -5.55555556e+03 -6.66666667e+03 -7.77777778e+03 -8.88888889e+03 -1.00000000e+04 diff --git a/src/MANYBODY/pair_polymorphic.cpp b/src/MANYBODY/pair_polymorphic.cpp index 8db4d63d4c..7d4eb06d3c 100644 --- a/src/MANYBODY/pair_polymorphic.cpp +++ b/src/MANYBODY/pair_polymorphic.cpp @@ -46,6 +46,7 @@ PairPolymorphic::PairPolymorphic(LAMMPS *lmp) : Pair(lmp) nelements = 0; elements = NULL; + match = NULL; pairParameters = NULL; tripletParameters = NULL; elem2param = NULL; @@ -168,7 +169,7 @@ void PairPolymorphic::compute(int eflag, int vflag) firstneighW1 = new int[neighsize]; } - if (eta) { + if (eta == 1) { iparam_ii = elem2param[itype][itype]; PairParameters & p = pairParameters[iparam_ii]; emb = (p.F)->get_vmax(); @@ -193,7 +194,7 @@ void PairPolymorphic::compute(int eflag, int vflag) PairParameters & p = pairParameters[iparam_ij]; // do not include the neighbor if get_vmax() <= epsilon because the function is near zero - if (eta) { + if (eta == 1) { if (emb > epsilon) { iparam_jj = elem2param[jtype][jtype]; PairParameters & q = pairParameters[iparam_jj]; @@ -255,7 +256,7 @@ void PairPolymorphic::compute(int eflag, int vflag) evdwl,0.0,fpair,delx,dely,delz); } - if (eta) { + if (eta == 1) { if (emb > epsilon) { @@ -356,7 +357,7 @@ void PairPolymorphic::compute(int eflag, int vflag) PairParameters & q = pairParameters[iparam_ik]; (q.W)->value(r2,wfac,1,fpair,0); - (q.P)->value(r1-(p.xi)*r2,pfac,1,fpair,0); + (trip.P)->value(r1-(p.xi)*r2,pfac,1,fpair,0); (trip.G)->value(costheta,gfac,1,fpair,0); zeta_ij += wfac*pfac*gfac; @@ -397,7 +398,7 @@ void PairPolymorphic::compute(int eflag, int vflag) iparam_ik = elem2param[itype][ktype]; PairParameters & q = pairParameters[iparam_ik]; - attractive(&q,&trip,prefactor,r1,r2,delr1,delr2,fi,fj,fk); + attractive(&p,&q,&trip,prefactor,r1,r2,delr1,delr2,fi,fj,fk); f[i][0] += fi[0]; f[i][1] += fi[1]; @@ -586,7 +587,7 @@ void PairPolymorphic::read_file(char *file) error->all(FLERR,"Incorrect number of elements in potential file"); match = new int[nelements]; ptr = strtok(NULL," \t\n\r\f"); // 1st line, 2nd token - eta = (atoi(ptr)>0) ? true:false; + eta = atoi(ptr); // map the elements in the potential file to LAMMPS atom types for (int i = 0; i < nelements; i++) { @@ -654,17 +655,9 @@ void PairPolymorphic::read_file(char *file) p.cut = atof(ptr); p.cutsq = p.cut*p.cut; ptr = strtok(NULL," \t\n\r\f"); // 2nd token - p.xi = (atoi(ptr)>0) ? true:false; + p.xi = atof(ptr); } - // set cutmax to max of all params - cutmax = 0.0; - for (int i = 0; i < npair; i++) { - PairParameters & p = pairParameters[i]; - if (p.cut > cutmax) cutmax = p.cut; - } - cutmaxsq = cutmax*cutmax; - // start reading tabular functions double * singletable = new double[nr]; for (int i = 0; i < npair; i++) { // U @@ -694,14 +687,53 @@ void PairPolymorphic::read_file(char *file) p.W = new tabularFunction(nr,0.0,p.cut); (p.W)->set_values(nr,0.0,p.cut,singletable,epsilon); } - for (int i = 0; i < npair; i++) { // P + + cutmax = 0.0; + for (int i = 0; i < npair; i++) { PairParameters & p = pairParameters[i]; - if (comm->me == 0) { - grab(fp,nr,singletable); + if (p.cut > cutmax) cutmax = p.cut; + } + cutmaxsq = cutmax*cutmax; + + if (eta != 3) { + for (int j = 0; j < nelements; j++) { // P + if (comm->me == 0) { + grab(fp,nr,singletable); + } + MPI_Bcast(singletable,nr,MPI_DOUBLE,0,world); + for (int i = 0; i < nelements; i++) { + TripletParameters & p = tripletParameters[i*nelements*nelements+j*nelements+j]; + p.P = new tabularFunction(nr,-cutmax,cutmax); + (p.P)->set_values(nr,-cutmax,cutmax,singletable,epsilon); + } + } + for (int j = 0; j < nelements-1; j++) { // P + for (int k = j+1; k < nelements; k++) { + if (comm->me == 0) { + grab(fp,nr,singletable); + } + MPI_Bcast(singletable,nr,MPI_DOUBLE,0,world); + for (int i = 0; i < nelements; i++) { + TripletParameters & p = tripletParameters[i*nelements*nelements+j*nelements+k]; + p.P = new tabularFunction(nr,-cutmax,cutmax); + (p.P)->set_values(nr,-cutmax,cutmax,singletable,epsilon); + TripletParameters & q = tripletParameters[i*nelements*nelements+k*nelements+j]; + q.P = new tabularFunction(nr,-cutmax,cutmax); + (q.P)->set_values(nr,-cutmax,cutmax,singletable,epsilon); + } + } + } + } + if (eta == 3) { + for (int i = 0; i < ntriple; i++) { // P + TripletParameters & p = tripletParameters[i]; + if (comm->me == 0) { + grab(fp,nr,singletable); + } + MPI_Bcast(singletable,nr,MPI_DOUBLE,0,world); + p.P = new tabularFunction(nr,-cutmax,cutmax); + (p.P)->set_values(nr,-cutmax,cutmax,singletable,epsilon); } - MPI_Bcast(singletable,nr,MPI_DOUBLE,0,world); - p.P = new tabularFunction(nr,-cutmax,cutmax); - (p.P)->set_values(nr,-cutmax,cutmax,singletable,epsilon); } delete[] singletable; singletable = new double[ng]; @@ -730,6 +762,22 @@ void PairPolymorphic::read_file(char *file) fclose(fp); } + // recalculate cutoffs of all params + for (int i = 0; i < npair; i++) { + PairParameters & p = pairParameters[i]; + p.cut = (p.U)->get_xmax(); + if (p.cut < (p.V)->get_xmax()) p.cut = (p.V)->get_xmax(); + if (p.cut < (p.W)->get_xmax()) p.cut = (p.W)->get_xmax(); + p.cutsq = p.cut*p.cut; + } + + // set cutmax to max of all params + cutmax = 0.0; + for (int i = 0; i < npair; i++) { + PairParameters & p = pairParameters[i]; + if (cutmax < p.cut) cutmax = p.cut; + } + cutmaxsq = cutmax*cutmax; } /* ---------------------------------------------------------------------- */ @@ -771,15 +819,16 @@ void PairPolymorphic::setup_params() // for debugging, call write_tables() to check the tabular functions // if (comm->me == 0) { // write_tables(51); -// errorX->all(FLERR,"Test potential tables"); // } +// error->all(FLERR,"Test potential tables"); } /* ---------------------------------------------------------------------- attractive term ------------------------------------------------------------------------- */ -void PairPolymorphic::attractive(PairParameters *p, TripletParameters *trip, +void PairPolymorphic::attractive(PairParameters *p, PairParameters *q, + TripletParameters *trip, double prefactor, double rij, double rik, double *delrij, double *delrik, double *fi, double *fj, double *fk) @@ -793,7 +842,7 @@ void PairPolymorphic::attractive(PairParameters *p, TripletParameters *trip, rikinv = 1.0/rik; vec3_scale(rikinv,delrik,rik_hat); - ters_zetaterm_d(prefactor,rij_hat,rij,rik_hat,rik,fi,fj,fk,p,trip); + ters_zetaterm_d(prefactor,rij_hat,rij,rik_hat,rik,fi,fj,fk,p,q,trip); } /* ---------------------------------------------------------------------- */ @@ -802,46 +851,39 @@ void PairPolymorphic::ters_zetaterm_d(double prefactor, double *rij_hat, double rij, double *rik_hat, double rik, double *dri, double *drj, double *drk, - PairParameters *p, TripletParameters *trip) + PairParameters *p, PairParameters *q, + TripletParameters *trip) { double gijk,gijk_d,ex_delr,ex_delr_d,fc,dfc,cos_theta; double dcosdri[3],dcosdrj[3],dcosdrk[3]; cos_theta = vec3_dot(rij_hat,rik_hat); - (p->W)->value(rik,fc,1,dfc,1); - (p->P)->value(rij-(p->xi)*rik,ex_delr,1,ex_delr_d,1); + (q->W)->value(rik,fc,1,dfc,1); + (trip->P)->value(rij-(p->xi)*rik,ex_delr,1,ex_delr_d,1); (trip->G)->value(cos_theta,gijk,1,gijk_d,1); costheta_d(rij_hat,rij,rik_hat,rik,dcosdri,dcosdrj,dcosdrk); // compute the derivative wrt Ri - // dri = -dfc*gijk*ex_delr*rik_hat; - // dri += fc*gijk_d*ex_delr*dcosdri; - // dri += fc*gijk*ex_delr_d*(rik_hat - rij_hat); vec3_scale(-dfc*gijk*ex_delr,rik_hat,dri); vec3_scaleadd(fc*gijk_d*ex_delr,dcosdri,dri,dri); - vec3_scaleadd(fc*gijk*ex_delr_d,rik_hat,dri,dri); + vec3_scaleadd(fc*gijk*ex_delr_d*(p->xi),rik_hat,dri,dri); vec3_scaleadd(-fc*gijk*ex_delr_d,rij_hat,dri,dri); vec3_scale(prefactor,dri,dri); // compute the derivative wrt Rj - // drj = fc*gijk_d*ex_delr*dcosdrj; - // drj += fc*gijk*ex_delr_d*rij_hat; vec3_scale(fc*gijk_d*ex_delr,dcosdrj,drj); vec3_scaleadd(fc*gijk*ex_delr_d,rij_hat,drj,drj); vec3_scale(prefactor,drj,drj); // compute the derivative wrt Rk - // drk = dfc*gijk*ex_delr*rik_hat; - // drk += fc*gijk_d*ex_delr*dcosdrk; - // drk += -fc*gijk*ex_delr_d*rik_hat; vec3_scale(dfc*gijk*ex_delr,rik_hat,drk); vec3_scaleadd(fc*gijk_d*ex_delr,dcosdrk,drk,drk); - vec3_scaleadd(-fc*gijk*ex_delr_d,rik_hat,drk,drk); + vec3_scaleadd(-fc*gijk*ex_delr_d*(p->xi),rik_hat,drk,drk); vec3_scale(prefactor,drk,drk); } @@ -919,26 +961,29 @@ void PairPolymorphic::write_tables(int npts) } for (int i = 0; i < nelements; i++) { for (int j = 0; j < nelements; j++) { + for (int k = 0; k < nelements; k++) { strcpy(line,elements[i]); strcat(line,elements[j]); + strcat(line,elements[k]); strcat(line,"_P"); strcat(line,tag); fp = fopen(line, "w"); - int iparam_ij = elem2param[i][j]; - PairParameters & pair = pairParameters[iparam_ij]; + int iparam_ij = elem3param[i][j][k]; + TripletParameters & pair = tripletParameters[iparam_ij]; xmin = (pair.P)->get_xmin(); xmax = (pair.P)->get_xmax(); double xl = xmax - xmin; xmin = xmin - 0.5*xl; xmax = xmax + 0.5*xl; - for (int k = 0; k < npts; k++) { - x = xmin + (xmax-xmin) * k / (npts-1); + for (int n = 0; n < npts; n++) { + x = xmin + (xmax-xmin) * n / (npts-1); (pair.P)->value(x, pf, 1, pfp, 1); fprintf(fp,"%12.4f %12.4f %12.4f \n",x,pf,pfp); } fclose(fp); } } + } for (int i = 0; i < nelements; i++) { for (int j = 0; j < nelements; j++) { for (int k = 0; k < nelements; k++) { diff --git a/src/MANYBODY/pair_polymorphic.h b/src/MANYBODY/pair_polymorphic.h index e7c3cd0d26..744e7b402c 100644 --- a/src/MANYBODY/pair_polymorphic.h +++ b/src/MANYBODY/pair_polymorphic.h @@ -104,32 +104,59 @@ class PairPolymorphic : public Pair { } void set_values(int n, double x1, double x2, double * values, double epsilon) { - int i0; - i0 = n-1; + int shrink = 1; + int ilo,ihi; + double vlo,vhi; + ilo = 0; + ihi = n-1; + for (int i = 0; i < n; i++) { + if (fabs(values[i]) <= epsilon) { + ilo = i; + } else { + break; + } + } + for (int i = n-1; i >= 0; i--) { + if (fabs(values[i]) <= epsilon) { + ihi = i; + } else { + break; + } + } + if (ihi < ilo) ihi = ilo; + vlo = values[ilo]; + vhi = values[ilo]; + for (int i = ilo; i <= ihi; i++) { + if (vlo > values[i]) vlo = values[i]; + if (vhi < values[i]) vhi = values[i]; + } + // shrink (remove near zero points) reduces cutoff radius, and therefore computational cost // do not shrink when x2 < 1.1 (angular function) or x2 > 20.0 (non-radial function) - if (x2 >= 1.1 && x2 <= 20.0) { - for (int i = n-1; i >= 0; i--) { - if (fabs(values[i]) > epsilon) { - i0 = i; - break; - } - } + if (x2 < 1.1 || x2 > 20.0) { + shrink = 0; } // do not shrink when when list is abnormally small - if (i0 < 10/n) { - i0 = n-1; - } else if (i0 < n-1) { - values[i0] = 0.0; - i0 = i0 + 1; - values[i0] = 0.0; + if (ihi - ilo < 50) { + shrink = 0; } - xmin = x1; - xmax = x1 + (x2-x1)/(n -1)*i0; +// shrink if it is a constant + if (vhi - vlo <= epsilon) { +// shrink = 1; + } + + if (shrink == 0) { + ilo = 0; + ihi = n-1; + } + xmin = x1 + (x2-x1)/(n -1)*ilo; + xmax = xmin + (x2-x1)/(n -1)*(ihi-ilo); xmaxsq = xmax*xmax; - n = i0+1; + n = ihi - ilo + 1; resize(n); - memcpy(ys,values,n*sizeof(double)); + for (int i = ilo; i <= ihi; i++) { + ys[i-ilo] = values[i]; + } initialize(); } void value(double x, double &y, int ny, double &y1, int ny1) @@ -228,32 +255,32 @@ class PairPolymorphic : public Pair { struct PairParameters { double cut; double cutsq; - bool xi; // "indicator" + double xi; class tabularFunction * U; class tabularFunction * V; class tabularFunction * W; - class tabularFunction * P; class tabularFunction * F; PairParameters() { cut = 0.0; cutsq = 0.0; - xi = true; + xi = 1.0; U = NULL; V = NULL; W = NULL; - P = NULL; F = NULL; }; }; struct TripletParameters { + class tabularFunction * P; class tabularFunction * G; TripletParameters() { + P = NULL; G = NULL; }; }; double epsilon; - bool eta; // global indicator + int eta; int nx,nr,ng; // table sizes double maxX; @@ -283,11 +310,13 @@ class PairPolymorphic : public Pair { void setup_params(); void write_tables(int); - void attractive(PairParameters *, TripletParameters *, double, double, - double, double *, double *, double *, double *, double *); + void attractive(PairParameters *, PairParameters *, TripletParameters *, + double, double, double, double *, double *, double *, + double *, double *); void ters_zetaterm_d(double, double *, double, double *, double, double *, - double *, double *, PairParameters *, TripletParameters *); + double *, double *, PairParameters *, PairParameters *, + TripletParameters *); void costheta_d(double *, double, double *, double, double *, double *, double *); -- GitLab From 45aa6bd3b831d2c090ed33735593531638fd397c Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Wed, 15 Apr 2020 14:22:29 -0400 Subject: [PATCH 318/717] add @giacomofiorin as code owner for USER-COLVARS.cmake --- .github/CODEOWNERS | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index a4fc5b7b4f..a2ab1d4407 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -119,6 +119,7 @@ tools/emacs/* @HaoZeke # cmake cmake/* @junghans @rbberger +cmake/Modules/Packages/USER-COLVARS.cmake @junghans @rbberger @giacomofiorin # python python/* @rbberger -- GitLab From adf9602ae3b6f81c4fbf87696a318e128772cd2f Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Wed, 15 Apr 2020 14:26:37 -0400 Subject: [PATCH 319/717] whitespace fix --- src/KOKKOS/min_kokkos.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/KOKKOS/min_kokkos.cpp b/src/KOKKOS/min_kokkos.cpp index 30b362dc51..e5f22411f6 100644 --- a/src/KOKKOS/min_kokkos.cpp +++ b/src/KOKKOS/min_kokkos.cpp @@ -636,7 +636,7 @@ double MinKokkos::fnorm_inf() double MinKokkos::fnorm_max() { - + double local_norm_max = 0.0; { // local variables for lambda capture -- GitLab From c5f6b5c6873795d742d637cf6cd6eabfe8b5fe05 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Wed, 15 Apr 2020 14:29:37 -0400 Subject: [PATCH 320/717] one more whitespace fix --- src/fix_restrain.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/fix_restrain.cpp b/src/fix_restrain.cpp index a6793a36be..f1032c1bc1 100644 --- a/src/fix_restrain.cpp +++ b/src/fix_restrain.cpp @@ -382,11 +382,11 @@ void FixRestrain::restrain_lbound(int m) rk = k * dr; // force & energy - + if (dr < 0) { if (r > 0.0) fbond = -2.0*rk/r; else fbond = 0.0; - + elbound += rk*dr; energy += rk*dr; } else { -- GitLab From ca64c461ff03801bce2c5184bae79ca17509db71 Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Thu, 16 Apr 2020 08:19:50 -0600 Subject: [PATCH 321/717] Remove unnecessary error check in USER-DPD fix rx --- src/USER-DPD/fix_rx.cpp | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/USER-DPD/fix_rx.cpp b/src/USER-DPD/fix_rx.cpp index 46fb17cbfd..6367b32e9d 100644 --- a/src/USER-DPD/fix_rx.cpp +++ b/src/USER-DPD/fix_rx.cpp @@ -256,10 +256,6 @@ void FixRX::post_constructor() int nUniqueSpecies = 0; bool match; - for (int i = 0; i < modify->nfix; i++) - if (utils::strmatch(modify->fix[i]->style,"^property/atom") == 0) - error->all(FLERR,"fix rx cannot be combined with fix property/atom"); - char **tmpspecies = new char*[maxspecies]; int tmpmaxstrlen = 0; for(int jj=0; jj < maxspecies; jj++) -- GitLab From ba8d043c7e7fc5babed707ae5271cca03fd2ff00 Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Thu, 16 Apr 2020 09:06:08 -0600 Subject: [PATCH 322/717] Update Kokkos library in LAMMPS to v3.1 --- lib/kokkos/BUILD.md | 39 +- lib/kokkos/CHANGELOG.md | 58 +- lib/kokkos/CMakeLists.txt | 61 +- lib/kokkos/Copyright.txt | 8 +- lib/kokkos/Makefile.kokkos | 193 +- lib/kokkos/Makefile.targets | 24 +- lib/kokkos/README.md | 80 +- lib/kokkos/algorithms/src/Kokkos_Random.hpp | 733 +--- lib/kokkos/algorithms/src/Kokkos_Sort.hpp | 18 +- .../algorithms/unit_tests/CMakeLists.txt | 30 +- lib/kokkos/algorithms/unit_tests/Makefile | 2 +- lib/kokkos/algorithms/unit_tests/TestCuda.cpp | 8 +- lib/kokkos/algorithms/unit_tests/TestHIP.cpp | 83 + .../algorithms/unit_tests/TestOpenMP.cpp | 24 +- .../unit_tests/TestOpenMP_Random.cpp | 77 + .../unit_tests/TestOpenMP_Sort1D.cpp | 65 + .../unit_tests/TestOpenMP_Sort3D.cpp | 65 + .../unit_tests/TestOpenMP_SortDynamicView.cpp | 65 + .../algorithms/unit_tests/TestRandom.hpp | 2 +- lib/kokkos/algorithms/unit_tests/TestSort.hpp | 39 +- lib/kokkos/appveyor.yml | 10 + lib/kokkos/benchmarks/gups/gups-kokkos.cc | 2 +- lib/kokkos/benchmarks/stream/stream-kokkos.cc | 2 +- lib/kokkos/cm_generate_makefile.bash | 339 -- lib/kokkos/cmake/Dependencies.cmake | 1 - lib/kokkos/cmake/KokkosConfigCommon.cmake.in | 3 + lib/kokkos/cmake/KokkosCore_config.h.in | 9 + .../cmake/KokkosTrilinosConfig.cmake.in | 17 + lib/kokkos/cmake/Modules/FindTPLCUDA.cmake | 6 +- lib/kokkos/cmake/Modules/FindTPLPTHREAD.cmake | 21 +- lib/kokkos/cmake/README.md | 11 +- lib/kokkos/cmake/compile_tests/clang_omp.cpp | 2 +- lib/kokkos/cmake/compile_tests/pthread.cpp | 4 + lib/kokkos/cmake/fake_tribits.cmake | 39 +- lib/kokkos/cmake/kokkos_arch.cmake | 224 +- lib/kokkos/cmake/kokkos_check_env.cmake | 12 + lib/kokkos/cmake/kokkos_compiler_id.cmake | 26 +- lib/kokkos/cmake/kokkos_corner_cases.cmake | 28 +- lib/kokkos/cmake/kokkos_enable_devices.cmake | 37 + lib/kokkos/cmake/kokkos_enable_options.cmake | 30 +- lib/kokkos/cmake/kokkos_functions.cmake | 247 +- lib/kokkos/cmake/kokkos_install.cmake | 9 +- lib/kokkos/cmake/kokkos_test_cxx_std.cmake | 15 +- lib/kokkos/cmake/kokkos_tpls.cmake | 4 + lib/kokkos/cmake/kokkos_tribits.cmake | 93 +- lib/kokkos/cmake/msvc.cmake | 11 + lib/kokkos/cmake/tpls/FindTPLCUSPARSE.cmake | 14 +- lib/kokkos/config/test_all_sandia | 55 +- .../performance_tests/CMakeLists.txt | 32 +- lib/kokkos/containers/src/Kokkos_Bitset.hpp | 10 +- lib/kokkos/containers/src/Kokkos_DualView.hpp | 140 +- .../containers/src/Kokkos_DynRankView.hpp | 29 +- .../containers/src/Kokkos_DynamicView.hpp | 24 +- .../containers/src/Kokkos_ErrorReporter.hpp | 2 +- .../containers/src/Kokkos_OffsetView.hpp | 45 +- .../containers/src/Kokkos_ScatterView.hpp | 122 +- .../containers/src/Kokkos_StaticCrsGraph.hpp | 16 +- .../containers/src/Kokkos_UnorderedMap.hpp | 36 +- lib/kokkos/containers/src/Kokkos_Vector.hpp | 4 +- .../src/impl/Kokkos_Bitset_impl.hpp | 3 +- .../impl/Kokkos_StaticCrsGraph_factory.hpp | 16 +- .../src/impl/Kokkos_UnorderedMap_impl.hpp | 31 +- .../containers/unit_tests/CMakeLists.txt | 44 +- lib/kokkos/containers/unit_tests/Makefile | 79 +- .../containers/unit_tests/TestBitset.hpp | 4 +- .../{cuda => }/TestCuda_Category.hpp | 0 .../containers/unit_tests/TestDualView.hpp | 214 +- .../containers/unit_tests/TestDynViewAPI.hpp | 42 +- .../unit_tests/TestDynViewAPI_generic.hpp | 3 + .../unit_tests/TestDynViewAPI_rank12345.hpp | 3 + .../containers/unit_tests/TestDynamicView.hpp | 12 - .../unit_tests/TestErrorReporter.hpp | 14 +- ...ROCm_Category.hpp => TestHIP_Category.hpp} | 8 +- .../unit_tests/{hpx => }/TestHPX_Category.hpp | 0 .../containers/unit_tests/TestOffsetView.hpp | 23 +- .../{openmp => }/TestOpenMP_Category.hpp | 0 .../containers/unit_tests/TestScatterView.hpp | 130 +- .../{serial => }/TestSerial_Category.hpp | 0 .../{threads => }/TestThreads_Category.hpp | 0 .../unit_tests/TestUnorderedMap.hpp | 22 + .../cuda/TestCuda_DynRankViewAPI_rank67.cpp | 47 - .../unit_tests/cuda/TestCuda_ScatterView.cpp | 47 - .../cuda/TestCuda_StaticCrsGraph.cpp | 47 - .../unit_tests/cuda/TestCuda_UnorderedMap.cpp | 47 - .../cuda/TestCuda_ViewCtorPropEmbeddedDim.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 - .../hpx/TestHPX_ViewCtorPropEmbeddedDim.cpp | 47 - .../TestOpenMP_DynRankViewAPI_generic.cpp | 47 - .../TestOpenMP_DynRankViewAPI_rank12345.cpp | 47 - .../TestOpenMP_DynRankViewAPI_rank67.cpp | 47 - .../openmp/TestOpenMP_DynamicView.cpp | 47 - .../openmp/TestOpenMP_ErrorReporter.cpp | 47 - .../openmp/TestOpenMP_OffsetView.cpp | 47 - .../openmp/TestOpenMP_ScatterView.cpp | 47 - .../openmp/TestOpenMP_StaticCrsGraph.cpp | 47 - .../openmp/TestOpenMP_UnorderedMap.cpp | 47 - .../unit_tests/openmp/TestOpenMP_Vector.cpp | 47 - .../TestOpenMP_ViewCtorPropEmbeddedDim.cpp | 47 - .../unit_tests/rocm/TestROCm_BitSet.cpp | 47 - .../unit_tests/rocm/TestROCm_DualView.cpp | 47 - .../rocm/TestROCm_DynRankViewAPI_generic.cpp | 47 - .../TestROCm_DynRankViewAPI_rank12345.cpp | 47 - .../rocm/TestROCm_DynRankViewAPI_rank67.cpp | 47 - .../unit_tests/rocm/TestROCm_DynamicView.cpp | 47 - .../rocm/TestROCm_ErrorReporter.cpp | 47 - .../unit_tests/rocm/TestROCm_ScatterView.cpp | 47 - .../rocm/TestROCm_StaticCrsGraph.cpp | 47 - .../unit_tests/rocm/TestROCm_UnorderedMap.cpp | 47 - .../unit_tests/rocm/TestROCm_Vector.cpp | 47 - .../rocm/TestROCm_ViewCtorPropEmbeddedDim.cpp | 47 - .../TestSerial_DynRankViewAPI_generic.cpp | 47 - .../TestSerial_DynRankViewAPI_rank12345.cpp | 47 - .../TestSerial_DynRankViewAPI_rank67.cpp | 47 - .../serial/TestSerial_DynamicView.cpp | 47 - .../serial/TestSerial_ErrorReporter.cpp | 47 - .../serial/TestSerial_OffsetView.cpp | 46 - .../serial/TestSerial_ScatterView.cpp | 47 - .../serial/TestSerial_StaticCrsGraph.cpp | 47 - .../serial/TestSerial_UnorderedMap.cpp | 47 - .../unit_tests/serial/TestSerial_Vector.cpp | 47 - .../TestSerial_ViewCtorPropEmbeddedDim.cpp | 47 - .../TestThreads_DynRankViewAPI_generic.cpp | 47 - .../TestThreads_DynRankViewAPI_rank12345.cpp | 47 - .../TestThreads_DynRankViewAPI_rank67.cpp | 47 - .../threads/TestThreads_DynamicView.cpp | 47 - .../threads/TestThreads_ErrorReporter.cpp | 47 - .../threads/TestThreads_OffsetView.cpp | 47 - .../threads/TestThreads_ScatterView.cpp | 47 - .../threads/TestThreads_StaticCrsGraph.cpp | 47 - .../threads/TestThreads_UnorderedMap.cpp | 47 - .../unit_tests/threads/TestThreads_Vector.cpp | 47 - .../TestThreads_ViewCtorPropEmbeddedDim.cpp | 47 - lib/kokkos/core/cmake/Dependencies.cmake | 2 +- lib/kokkos/core/cmake/KokkosCore_config.h.in | 5 + lib/kokkos/core/perf_test/CMakeLists.txt | 21 +- .../core/perf_test/PerfTestBlasKernels.hpp | 110 +- .../core/perf_test/PerfTestGramSchmidt.cpp | 5 +- lib/kokkos/core/perf_test/PerfTestMain.cpp | 6 +- .../core/perf_test/PerfTest_Category.hpp | 2 +- .../perf_test/PerfTest_CustomReduction.cpp | 8 +- lib/kokkos/core/src/CMakeLists.txt | 8 + lib/kokkos/core/src/Cuda/Kokkos_CudaSpace.cpp | 43 +- .../core/src/Cuda/Kokkos_Cuda_Error.hpp | 4 +- .../core/src/Cuda/Kokkos_Cuda_Instance.cpp | 33 +- .../core/src/Cuda/Kokkos_Cuda_Instance.hpp | 2 + .../src/Cuda/Kokkos_Cuda_KernelLaunch.hpp | 20 +- .../core/src/Cuda/Kokkos_Cuda_Parallel.hpp | 22 +- .../core/src/Cuda/Kokkos_Cuda_ReduceScan.hpp | 19 +- lib/kokkos/core/src/Cuda/Kokkos_Cuda_Task.hpp | 2 +- lib/kokkos/core/src/Cuda/Kokkos_Cuda_Team.hpp | 49 + .../core/src/Cuda/Kokkos_Cuda_UniqueToken.hpp | 32 +- .../src/Cuda/Kokkos_Cuda_Vectorization.hpp | 32 +- .../Kokkos_Cuda_Version_9_8_Compatibility.hpp | 30 +- lib/kokkos/core/src/Cuda/Kokkos_Cuda_View.hpp | 11 +- lib/kokkos/core/src/Cuda/Kokkos_Cuda_fwd.hpp | 67 + .../src/HIP/KokkosExp_HIP_IterateTile.hpp | 3296 +++++++++++++++++ lib/kokkos/core/src/HIP/Kokkos_HIP_Abort.hpp | 68 + lib/kokkos/core/src/HIP/Kokkos_HIP_Atomic.hpp | 576 +++ .../HIP/Kokkos_HIP_BlockSize_Deduction.hpp | 339 ++ .../HIP/Kokkos_HIP_Error.hpp} | 120 +- .../core/src/HIP/Kokkos_HIP_Instance.cpp | 373 ++ .../core/src/HIP/Kokkos_HIP_Instance.hpp | 141 + .../core/src/HIP/Kokkos_HIP_KernelLaunch.cpp | 72 + .../core/src/HIP/Kokkos_HIP_KernelLaunch.hpp | 212 ++ lib/kokkos/core/src/HIP/Kokkos_HIP_Locks.cpp | 118 + lib/kokkos/core/src/HIP/Kokkos_HIP_Locks.hpp | 174 + .../src/HIP/Kokkos_HIP_Parallel_MDRange.hpp | 411 ++ .../src/HIP/Kokkos_HIP_Parallel_Range.hpp | 655 ++++ .../core/src/HIP/Kokkos_HIP_Parallel_Team.hpp | 562 +++ .../core/src/HIP/Kokkos_HIP_ReduceScan.hpp | 420 +++ lib/kokkos/core/src/HIP/Kokkos_HIP_Space.cpp | 636 ++++ lib/kokkos/core/src/HIP/Kokkos_HIP_Team.hpp | 1106 ++++++ .../core/src/HIP/Kokkos_HIP_Vectorization.hpp | 160 + lib/kokkos/core/src/HPX/Kokkos_HPX.cpp | 4 + .../core/src/KokkosExp_MDRangePolicy.hpp | 63 +- lib/kokkos/core/src/Kokkos_Array.hpp | 52 +- lib/kokkos/core/src/Kokkos_Atomic.hpp | 31 +- lib/kokkos/core/src/Kokkos_Complex.hpp | 112 +- lib/kokkos/core/src/Kokkos_Concepts.hpp | 83 +- lib/kokkos/core/src/Kokkos_CopyViews.hpp | 558 ++- lib/kokkos/core/src/Kokkos_Core.hpp | 21 +- lib/kokkos/core/src/Kokkos_Core_fwd.hpp | 36 +- lib/kokkos/core/src/Kokkos_Crs.hpp | 16 +- lib/kokkos/core/src/Kokkos_Cuda.hpp | 14 +- lib/kokkos/core/src/Kokkos_CudaSpace.hpp | 126 +- lib/kokkos/core/src/Kokkos_ExecPolicy.hpp | 16 +- lib/kokkos/core/src/Kokkos_Extents.hpp | 39 +- lib/kokkos/core/src/Kokkos_Future.hpp | 17 +- lib/kokkos/core/src/Kokkos_HBWSpace.hpp | 13 +- lib/kokkos/core/src/Kokkos_HIP.hpp | 65 + lib/kokkos/core/src/Kokkos_HIP_Space.hpp | 758 ++++ lib/kokkos/core/src/Kokkos_HPX.hpp | 42 +- lib/kokkos/core/src/Kokkos_HostSpace.hpp | 16 +- lib/kokkos/core/src/Kokkos_Macros.hpp | 128 +- lib/kokkos/core/src/Kokkos_MemoryPool.hpp | 67 +- lib/kokkos/core/src/Kokkos_NumericTraits.hpp | 7 +- lib/kokkos/core/src/Kokkos_OpenMP.hpp | 12 +- lib/kokkos/core/src/Kokkos_OpenMPTarget.hpp | 86 +- .../core/src/Kokkos_OpenMPTargetSpace.hpp | 10 +- lib/kokkos/core/src/Kokkos_Pair.hpp | 18 +- lib/kokkos/core/src/Kokkos_Parallel.hpp | 79 +- .../core/src/Kokkos_Parallel_Reduce.hpp | 86 +- .../src/Kokkos_Profiling_ProfileSection.hpp | 80 +- lib/kokkos/core/src/Kokkos_Qthreads.hpp | 196 - lib/kokkos/core/src/Kokkos_ROCmSpace.hpp | 2 +- lib/kokkos/core/src/Kokkos_ScratchSpace.hpp | 20 +- lib/kokkos/core/src/Kokkos_Serial.hpp | 20 +- lib/kokkos/core/src/Kokkos_TaskScheduler.hpp | 14 +- lib/kokkos/core/src/Kokkos_Threads.hpp | 11 + lib/kokkos/core/src/Kokkos_Timer.hpp | 2 +- lib/kokkos/core/src/Kokkos_Vectorization.hpp | 2 + lib/kokkos/core/src/Kokkos_View.hpp | 208 +- .../core/src/Kokkos_WorkGraphPolicy.hpp | 2 + .../core/src/OpenMP/Kokkos_OpenMP_Exec.cpp | 8 +- .../core/src/OpenMP/Kokkos_OpenMP_Exec.hpp | 12 +- .../src/OpenMP/Kokkos_OpenMP_Parallel.hpp | 6 +- .../core/src/OpenMP/Kokkos_OpenMP_Task.hpp | 4 +- .../core/src/OpenMP/Kokkos_OpenMP_Team.hpp | 5 + .../OpenMPTarget/Kokkos_OpenMPTargetSpace.cpp | 34 +- .../OpenMPTarget/Kokkos_OpenMPTarget_Exec.cpp | 158 +- .../OpenMPTarget/Kokkos_OpenMPTarget_Exec.hpp | 55 +- .../Kokkos_OpenMPTarget_Instance.cpp | 50 + .../Kokkos_OpenMPTarget_Instance.hpp | 40 + .../Kokkos_OpenMPTarget_Parallel.hpp | 549 ++- .../Kokkos_OpenMPTarget_Parallel_MDRange.hpp | 549 +++ .../OpenMPTarget/Kokkos_OpenMPTarget_Task.hpp | 2 +- .../core/src/Qthreads/Kokkos_QthreadsExec.cpp | 535 --- .../core/src/Qthreads/Kokkos_QthreadsExec.hpp | 687 ---- .../src/Qthreads/Kokkos_Qthreads_Parallel.hpp | 753 ---- .../src/Qthreads/Kokkos_Qthreads_Task.cpp | 308 -- .../src/Qthreads/Kokkos_Qthreads_Task.hpp | 149 - .../Kokkos_Qthreads_TaskPolicy.cpp.old | 493 --- .../Kokkos_Qthreads_TaskPolicy.hpp.old | 666 ---- .../Qthreads/Kokkos_Qthreads_TaskQueue.hpp | 321 -- .../Kokkos_Qthreads_TaskQueue_impl.hpp | 398 -- lib/kokkos/core/src/Qthreads/README | 24 - .../core/src/ROCm/Kokkos_ROCm_Parallel.hpp | 13 +- .../core/src/ROCm/Kokkos_ROCm_Space.cpp | 4 +- lib/kokkos/core/src/ROCm/Kokkos_ROCm_Tile.hpp | 7 +- .../src/ROCm/Kokkos_ROCm_Vectorization.hpp | 22 +- .../core/src/Threads/Kokkos_ThreadsExec.cpp | 57 +- .../src/Threads/Kokkos_ThreadsExec_base.cpp | 4 +- .../core/src/Threads/Kokkos_ThreadsTeam.hpp | 38 +- .../src/Threads/Kokkos_Threads_Parallel.hpp | 6 +- .../Kokkos_Threads_WorkGraphPolicy.hpp | 3 +- lib/kokkos/core/src/impl/CMakeLists.txt | 2 +- .../core/src/impl/Kokkos_AnalyzePolicy.hpp | 17 +- .../core/src/impl/Kokkos_Atomic_Assembly.hpp | 3 + .../Kokkos_Atomic_Compare_Exchange_Strong.hpp | 46 +- .../Kokkos_Atomic_Compare_Exchange_Weak.hpp | 33 +- .../core/src/impl/Kokkos_Atomic_Decrement.hpp | 2 +- .../core/src/impl/Kokkos_Atomic_Exchange.hpp | 82 +- .../core/src/impl/Kokkos_Atomic_Fetch_Add.hpp | 63 +- .../core/src/impl/Kokkos_Atomic_Fetch_Sub.hpp | 41 +- .../core/src/impl/Kokkos_Atomic_Generic.hpp | 109 +- .../impl/Kokkos_Atomic_Generic_Secondary.hpp | 76 + .../core/src/impl/Kokkos_Atomic_Increment.hpp | 2 + .../core/src/impl/Kokkos_Atomic_Load.hpp | 15 +- .../core/src/impl/Kokkos_Atomic_MinMax.hpp | 223 ++ .../core/src/impl/Kokkos_Atomic_Store.hpp | 13 +- .../core/src/impl/Kokkos_Atomic_View.hpp | 2 +- .../core/src/impl/Kokkos_Atomic_Windows.hpp | 167 +- lib/kokkos/core/src/impl/Kokkos_ChaseLev.hpp | 27 +- lib/kokkos/core/src/impl/Kokkos_ClockTic.hpp | 5 +- lib/kokkos/core/src/impl/Kokkos_Core.cpp | 550 ++- lib/kokkos/core/src/impl/Kokkos_EBO.hpp | 20 +- lib/kokkos/core/src/impl/Kokkos_Error.cpp | 2 + lib/kokkos/core/src/impl/Kokkos_Error.hpp | 15 +- .../src/impl/Kokkos_FixedBufferMemoryPool.hpp | 27 +- .../core/src/impl/Kokkos_FunctorAdapter.hpp | 45 +- .../core/src/impl/Kokkos_FunctorAnalysis.hpp | 2 +- lib/kokkos/core/src/impl/Kokkos_HBWSpace.cpp | 11 +- .../core/src/impl/Kokkos_HostBarrier.cpp | 2 +- .../core/src/impl/Kokkos_HostBarrier.hpp | 1 + lib/kokkos/core/src/impl/Kokkos_HostSpace.cpp | 40 +- .../core/src/impl/Kokkos_HostThreadTeam.cpp | 9 +- .../core/src/impl/Kokkos_HostThreadTeam.hpp | 22 +- lib/kokkos/core/src/impl/Kokkos_LIFO.hpp | 7 +- .../core/src/impl/Kokkos_LinkedListNode.hpp | 3 +- .../src/impl/Kokkos_MemoryPoolAllocator.hpp | 12 +- .../core/src/impl/Kokkos_Memory_Fence.hpp | 2 + .../src/impl/Kokkos_MultipleTaskQueue.hpp | 50 +- lib/kokkos/core/src/impl/Kokkos_OldMacros.hpp | 10 - .../core/src/impl/Kokkos_OptionalRef.hpp | 17 +- .../src/impl/Kokkos_Profiling_DeviceInfo.hpp | 78 +- .../src/impl/Kokkos_Profiling_Interface.cpp | 80 +- .../src/impl/Kokkos_Profiling_Interface.hpp | 110 +- lib/kokkos/core/src/impl/Kokkos_Serial.cpp | 2 +- .../core/src/impl/Kokkos_Serial_Task.hpp | 2 +- .../core/src/impl/Kokkos_SharedAlloc.cpp | 13 +- .../core/src/impl/Kokkos_SharedAlloc.hpp | 7 +- .../src/impl/Kokkos_SimpleTaskScheduler.hpp | 16 +- .../core/src/impl/Kokkos_SingleTaskQueue.hpp | 2 +- .../core/src/impl/Kokkos_Stacktrace.cpp | 2 +- lib/kokkos/core/src/impl/Kokkos_TaskBase.hpp | 47 +- lib/kokkos/core/src/impl/Kokkos_TaskNode.hpp | 6 +- .../core/src/impl/Kokkos_TaskPolicyData.hpp | 22 +- lib/kokkos/core/src/impl/Kokkos_TaskQueue.hpp | 4 +- .../core/src/impl/Kokkos_TaskQueueCommon.hpp | 23 +- .../core/src/impl/Kokkos_TaskQueue_impl.hpp | 20 +- .../core/src/impl/Kokkos_TaskResult.hpp | 8 +- .../core/src/impl/Kokkos_TaskTeamMember.hpp | 12 +- lib/kokkos/core/src/impl/Kokkos_Traits.hpp | 203 +- .../core/src/impl/Kokkos_VLAEmulation.hpp | 2 +- lib/kokkos/core/src/impl/Kokkos_ViewArray.hpp | 5 +- lib/kokkos/core/src/impl/Kokkos_ViewCtor.hpp | 5 +- .../core/src/impl/Kokkos_ViewLayoutTiled.hpp | 37 +- .../core/src/impl/Kokkos_ViewMapping.hpp | 65 +- lib/kokkos/core/src/impl/Kokkos_ViewTile.hpp | 20 +- lib/kokkos/core/src/kokkos.pc.in | 71 - lib/kokkos/core/unit_test/CMakeLists.txt | 234 +- .../core/unit_test/IncrementalTest.cpp.in | 58 + lib/kokkos/core/unit_test/Makefile | 66 +- lib/kokkos/core/unit_test/TestAtomic.hpp | 28 +- lib/kokkos/core/unit_test/TestAtomicViews.hpp | 292 +- lib/kokkos/core/unit_test/TestCTestDevice.cpp | 138 + lib/kokkos/core/unit_test/TestCXX11.hpp | 1 + .../core/unit_test/TestCompilerMacros.hpp | 5 +- lib/kokkos/core/unit_test/TestComplex.hpp | 52 +- lib/kokkos/core/unit_test/TestConcepts.hpp | 81 + lib/kokkos/core/unit_test/TestCrs.hpp | 10 +- lib/kokkos/core/unit_test/TestDeepCopy.hpp | 145 + .../core/unit_test/TestLocalDeepCopy.hpp | 71 +- lib/kokkos/core/unit_test/TestMDRange.hpp | 50 +- lib/kokkos/core/unit_test/TestMemoryPool.hpp | 14 +- lib/kokkos/core/unit_test/TestRange.hpp | 58 +- .../core/unit_test/TestRangeRequire.hpp | 518 +++ lib/kokkos/core/unit_test/TestReduce.hpp | 67 +- .../unit_test/TestReduceCombinatorical.hpp | 4 +- lib/kokkos/core/unit_test/TestResize.hpp | 16 +- lib/kokkos/core/unit_test/TestScan.hpp | 12 +- lib/kokkos/core/unit_test/TestSharedAlloc.hpp | 4 +- .../core/unit_test/TestTaskScheduler.hpp | 3 + lib/kokkos/core/unit_test/TestTeam.hpp | 310 +- .../core/unit_test/TestTeamTeamSize.hpp | 6 +- lib/kokkos/core/unit_test/TestTeamVector.hpp | 5 +- .../core/unit_test/TestTeamVectorRange.hpp | 2 +- .../unit_test/TestTemplateMetaFunctions.hpp | 8 +- lib/kokkos/core/unit_test/TestViewAPI.hpp | 68 +- lib/kokkos/core/unit_test/TestViewAPI_e.hpp | 12 +- lib/kokkos/core/unit_test/TestViewCopy.hpp | 530 ++- .../core/unit_test/TestViewIsAssignable.hpp | 145 + .../TestViewLayoutStrideAssignment.hpp | 8 +- .../core/unit_test/TestViewLayoutTiled.hpp | 20 +- .../core/unit_test/TestViewMapping_a.hpp | 47 +- lib/kokkos/core/unit_test/TestView_64bit.hpp | 2 +- lib/kokkos/core/unit_test/UnitTestConfig.make | 2 +- .../unit_test/config/cmaketest/CMakeLists.txt | 12 +- .../AMDAVX_Qthreads_KokkosCore_config.h | 17 - ...RMv8-ThunderX_Qthreads_KokkosCore_config.h | 18 - .../ARMv80_Qthreads_KokkosCore_config.h | 17 - .../ARMv81_Qthreads_KokkosCore_config.h | 17 - .../results/BDW_Qthreads_KokkosCore_config.h | 23 - .../results/BGQ_Qthreads_KokkosCore_config.h | 16 - .../results/HSW_Qthreads_KokkosCore_config.h | 20 - .../results/KNC_Qthreads_KokkosCore_config.h | 20 - .../results/KNL_Qthreads_KokkosCore_config.h | 20 - .../Kepler30_Qthreads_KokkosCore_config.h | 16 - .../Kepler32_Qthreads_KokkosCore_config.h | 16 - .../Kepler35_Qthreads_KokkosCore_config.h | 16 - .../Kepler37_Qthreads_KokkosCore_config.h | 16 - .../Kepler_Qthreads_KokkosCore_config.h | 16 - .../Maxwell50_Qthreads_KokkosCore_config.h | 16 - .../Maxwell52_Qthreads_KokkosCore_config.h | 16 - .../Maxwell53_Qthreads_KokkosCore_config.h | 16 - .../Maxwell_Qthreads_KokkosCore_config.h | 16 - .../results/None_Qthreads_KokkosCore_config.h | 16 - .../Pascal60_Qthreads_KokkosCore_config.h | 16 - .../Pascal61_Qthreads_KokkosCore_config.h | 16 - .../Power7_Qthreads_KokkosCore_config.h | 20 - .../Power8_Qthreads_KokkosCore_config.h | 20 - .../Power9_Qthreads_KokkosCore_config.h | 20 - .../results/SKX_Qthreads_KokkosCore_config.h | 23 - .../results/SNB_Qthreads_KokkosCore_config.h | 20 - .../results/WSM_Qthreads_KokkosCore_config.h | 20 - .../unit_test/cuda/TestCuda_Concepts.cpp} | 3 +- .../cuda/TestCuda_DeepCopyAlignment.cpp | 2 - .../cuda/TestCuda_RangePolicyRequire.cpp} | 2 +- .../core/unit_test/cuda/TestCuda_Spaces.cpp | 67 - .../core/unit_test/cuda/TestCuda_Team.cpp | 114 +- .../unit_test/cuda/TestCuda_TeamScratch.cpp | 2 - .../unit_test/cuda/TestCuda_ViewAPI_e.cpp | 1 + .../default/TestDefaultDeviceType_d.cpp | 2 +- .../TestHIPHostPinned_Category.hpp} | 9 +- .../TestHIPHostPinned_SharedAlloc.cpp} | 9 +- .../TestHIPHostPinned_ViewAPI_a.cpp} | 2 +- .../TestHIPHostPinned_ViewAPI_b.cpp} | 2 +- .../TestHIPHostPinned_ViewAPI_c.cpp} | 2 +- .../TestHIPHostPinned_ViewAPI_d.cpp} | 2 +- .../TestHIPHostPinned_ViewAPI_e.cpp} | 2 +- .../hip/TestHIPHostPinned_ViewCopy.cpp} | 5 +- .../hip/TestHIPHostPinned_ViewMapping_a.cpp} | 5 +- .../hip/TestHIPHostPinned_ViewMapping_b.cpp} | 5 +- .../TestHIPHostPinned_ViewMapping_subview.cpp | 46 + ...estHIP_AtomicOperations_complexdouble.cpp} | 2 +- ...TestHIP_AtomicOperations_complexfloat.cpp} | 2 +- .../TestHIP_AtomicOperations_double.cpp} | 2 +- .../TestHIP_AtomicOperations_float.cpp} | 2 +- .../TestHIP_AtomicOperations_int.cpp} | 2 +- .../TestHIP_AtomicOperations_longint.cpp} | 2 +- .../TestHIP_AtomicOperations_longlongint.cpp} | 2 +- .../TestHIP_AtomicOperations_unsignedint.cpp} | 2 +- ...tHIP_AtomicOperations_unsignedlongint.cpp} | 2 +- .../unit_test/hip/TestHIP_AtomicViews.cpp} | 4 +- .../core/unit_test/hip/TestHIP_Atomics.cpp | 46 + .../core/unit_test/hip/TestHIP_Category.hpp | 53 + .../unit_test/hip/TestHIP_Complex.cpp} | 4 +- .../core/unit_test/hip/TestHIP_Concepts.cpp | 46 + lib/kokkos/core/unit_test/hip/TestHIP_Crs.cpp | 46 + .../TestHIP_DeepCopyAlignment.cpp} | 2 +- .../hip/TestHIP_FunctorAnalysis.cpp} | 4 +- .../core/unit_test/hip/TestHIP_Init.cpp | 49 + .../unit_test/hip/TestHIP_InterOp_Init.cpp | 85 + .../unit_test/hip/TestHIP_LocalDeepCopy.cpp | 46 + .../TestHIP_MDRange_a.cpp} | 2 +- .../TestHIP_MDRange_b.cpp} | 2 +- .../TestHIP_MDRange_c.cpp} | 2 +- .../TestHIP_MDRange_d.cpp} | 2 +- .../TestHIP_MDRange_e.cpp} | 2 +- .../unit_test/hip/TestHIP_RangePolicy.cpp} | 4 +- .../hip/TestHIP_RangePolicyRequire.cpp | 47 + .../core/unit_test/hip/TestHIP_Reducers_a.cpp | 46 + .../core/unit_test/hip/TestHIP_Reducers_b.cpp | 46 + .../core/unit_test/hip/TestHIP_Reducers_c.cpp | 46 + .../core/unit_test/hip/TestHIP_Reducers_d.cpp | 46 + .../core/unit_test/hip/TestHIP_Reductions.cpp | 47 + .../core/unit_test/hip/TestHIP_Scan.cpp | 47 + .../TestHIP_ScanUnit.cpp} | 106 +- .../TestHIP_SharedAlloc.cpp} | 10 +- .../core/unit_test/hip/TestHIP_Spaces.cpp | 233 ++ .../core/unit_test/hip/TestHIP_SubView_a.cpp | 102 + .../TestHIP_SubView_b.cpp} | 27 +- .../TestHIP_SubView_c01.cpp} | 9 +- .../unit_test/hip/TestHIP_SubView_c02.cpp | 55 + .../unit_test/hip/TestHIP_SubView_c03.cpp | 55 + .../TestHIP_SubView_c04.cpp} | 9 +- .../unit_test/hip/TestHIP_SubView_c05.cpp | 55 + .../unit_test/hip/TestHIP_SubView_c06.cpp | 55 + .../TestHIP_SubView_c07.cpp} | 9 +- .../unit_test/hip/TestHIP_SubView_c08.cpp | 55 + .../unit_test/hip/TestHIP_SubView_c09.cpp | 55 + .../unit_test/hip/TestHIP_SubView_c10.cpp | 54 + .../unit_test/hip/TestHIP_SubView_c11.cpp | 55 + .../unit_test/hip/TestHIP_SubView_c12.cpp | 55 + .../TestHIP_SubView_c13.cpp} | 9 +- .../core/unit_test/hip/TestHIP_ViewAPI_c.cpp | 46 + .../core/unit_test/hip/TestHIP_ViewAPI_d.cpp | 46 + .../unit_test/hip/TestHIP_ViewMapping_a.cpp | 46 + .../unit_test/hip/TestHIP_ViewMapping_b.cpp | 46 + .../hip/TestHIP_ViewMapping_subview.cpp | 46 + .../unit_test/hip/TestHIP_ViewOfClass.cpp | 46 + .../core/unit_test/hip/TestHIP_ViewResize.cpp | 46 + .../core/unit_test/hip/TestHIP_View_64bit.cpp | 46 + .../unit_test/hpx/TestHPX_Concepts.cpp} | 3 +- .../hpx/TestHPX_RangePolicyRequire.cpp} | 2 +- .../unit_test/hpx/TestHPX_TeamScratch.cpp | 2 - .../incremental/Test01_execspace.hpp | 111 + .../incremental/Test02_atomic_host.hpp | 97 + .../Test03a_MemorySpace_malloc.hpp | 80 + .../incremental/Test03b_MemorySpace_free.hpp | 83 + .../Test04_ParallelFor_RangePolicy.hpp | 169 + .../Test05_ParallelReduce_RangePolicy.hpp | 154 + .../Test06_ParallelFor_MDRangePolicy.hpp | 263 ++ .../incremental/Test08_deep_copy.hpp | 207 ++ .../incremental/Test10_HierarchicalBasics.hpp | 101 + .../Test11a_ParallelFor_TeamThreadRange.hpp | 99 + .../Test11b_ParallelFor_TeamVectorRange.hpp | 99 + .../Test11c_ParallelFor_ThreadVectorRange.hpp | 105 + .../incremental/Test12a_ThreadScratch.hpp | 125 + .../incremental/Test12b_TeamScratch.hpp | 113 + .../Test13a_ParallelRed_TeamThreadRange.hpp | 105 + .../Test13b_ParallelRed_TeamVectorRange.hpp} | 93 +- .../Test13c_ParallelRed_ThreadVectorRange.hpp | 112 + .../unit_test/openmp/TestOpenMP_Concepts.cpp} | 3 +- .../unit_test/openmp/TestOpenMP_Other.cpp | 2 +- .../openmp/TestOpenMP_RangePolicyRequire.cpp} | 2 +- .../core/unit_test/openmp/TestOpenMP_Team.cpp | 32 +- .../openmp/TestOpenMP_TeamScratch.cpp | 2 - .../TestOpenMPTarget_Concepts.cpp | 46 + .../openmptarget/TestOpenMPTarget_Crs.cpp | 0 .../TestOpenMPTarget_FunctorAnalysis.cpp | 0 .../TestOpenMPTarget_LocalDeepCopy.cpp | 0 .../TestOpenMPTarget_RangePolicyRequire.cpp | 0 ...TestOpenMPTarget_Reductions_DeviceView.cpp | 0 .../TestOpenMPTarget_SharedAlloc.cpp | 2 +- .../TestOpenMPTarget_SubView_a.cpp | 24 +- .../TestOpenMPTarget_SubView_b.cpp | 4 +- .../TestOpenMPTarget_SubView_c01.cpp | 2 +- .../TestOpenMPTarget_SubView_c02.cpp | 2 +- .../TestOpenMPTarget_SubView_c03.cpp | 2 +- .../TestOpenMPTarget_SubView_c04.cpp | 2 +- .../TestOpenMPTarget_SubView_c05.cpp | 2 +- .../TestOpenMPTarget_SubView_c06.cpp | 2 +- .../TestOpenMPTarget_SubView_c07.cpp | 2 +- .../TestOpenMPTarget_SubView_c08.cpp | 2 +- .../TestOpenMPTarget_SubView_c09.cpp | 2 +- .../TestOpenMPTarget_SubView_c10.cpp | 2 +- .../TestOpenMPTarget_SubView_c11.cpp | 2 +- .../TestOpenMPTarget_SubView_c12.cpp | 2 +- .../TestOpenMPTarget_SubView_c13.cpp | 0 .../openmptarget/TestOpenMPTarget_Team.cpp | 4 +- .../TestOpenMPTarget_TeamReductionScan.cpp | 6 +- .../TestOpenMPTarget_TeamScratch.cpp | 10 +- .../TestOpenMPTarget_TeamTeamSize.cpp | 0 .../TestOpenMPTarget_TeamVectorRange.cpp | 0 .../TestOpenMPTarget_UniqueToken.cpp | 0 ...penMPTarget_ViewLayoutStrideAssignment.cpp | 0 .../TestOpenMPTarget_ViewResize.cpp | 0 .../TestOpenMPTarget_View_64bit.cpp | 0 .../TestOpenMPTarget_WorkGraph.cpp | 0 .../qthreads/TestQthreads_Atomics.cpp | 209 -- .../qthreads/TestQthreads_Complex.cpp | 2 - .../unit_test/qthreads/TestQthreads_Other.cpp | 196 - .../qthreads/TestQthreads_Reductions.cpp | 157 - .../qthreads/TestQthreads_SubView_c05.cpp | 55 - .../qthreads/TestQthreads_SubView_c06.cpp | 55 - .../qthreads/TestQthreads_SubView_c08.cpp | 55 - .../qthreads/TestQthreads_SubView_c09.cpp | 55 - .../qthreads/TestQthreads_SubView_c11.cpp | 55 - .../qthreads/TestQthreads_SubView_c12.cpp | 55 - .../qthreads/TestQthreads_SubView_c13.cpp | 55 - .../qthreads/TestQthreads_SubView_c_all.cpp | 13 - .../unit_test/qthreads/TestQthreads_Team.cpp | 136 - .../qthreads/TestQthreads_ViewAPI_a.cpp | 56 - .../unit_test/serial/TestSerial_Concepts.cpp} | 3 +- .../serial/TestSerial_RangePolicyRequire.cpp} | 2 +- .../core/unit_test/serial/TestSerial_Team.cpp | 101 +- .../serial/TestSerial_TeamScratch.cpp | 2 - lib/kokkos/core/unit_test/standalone/Makefile | 3 +- .../unit_test/standalone/UnitTestMainInit.cpp | 5 +- .../threads/TestThreads_Concepts.cpp} | 3 +- .../TestThreads_RangePolicyRequire.cpp} | 2 +- .../unit_test/threads/TestThreads_Team.cpp | 32 +- .../threads/TestThreads_TeamScratch.cpp | 2 - lib/kokkos/example/CMakeLists.txt | 20 +- lib/kokkos/example/README | 7 - .../build_cmake_in_tree/cmake_example.cpp | 2 +- .../build_cmake_installed/cmake_example.cpp | 2 +- lib/kokkos/example/cmake/Dependencies.cmake | 3 - .../example/query_device/query_device.cpp | 2 + lib/kokkos/example/tutorial/CMakeLists.txt | 8 +- lib/kokkos/example/tutorial/README | 13 +- lib/kokkos/example/virtual_functions/Makefile | 2 +- lib/kokkos/generate_makefile.bash | 578 ++- lib/kokkos/gnu_generate_makefile.bash | 484 +++ lib/kokkos/master_history.txt | 1 + 554 files changed, 24516 insertions(+), 14759 deletions(-) create mode 100644 lib/kokkos/algorithms/unit_tests/TestHIP.cpp create mode 100644 lib/kokkos/algorithms/unit_tests/TestOpenMP_Random.cpp create mode 100644 lib/kokkos/algorithms/unit_tests/TestOpenMP_Sort1D.cpp create mode 100644 lib/kokkos/algorithms/unit_tests/TestOpenMP_Sort3D.cpp create mode 100644 lib/kokkos/algorithms/unit_tests/TestOpenMP_SortDynamicView.cpp create mode 100644 lib/kokkos/appveyor.yml delete mode 100755 lib/kokkos/cm_generate_makefile.bash create mode 100644 lib/kokkos/cmake/KokkosTrilinosConfig.cmake.in create mode 100644 lib/kokkos/cmake/kokkos_check_env.cmake create mode 100644 lib/kokkos/cmake/msvc.cmake rename lib/kokkos/containers/unit_tests/{cuda => }/TestCuda_Category.hpp (100%) rename lib/kokkos/containers/unit_tests/{rocm/TestROCm_Category.hpp => TestHIP_Category.hpp} (93%) rename lib/kokkos/containers/unit_tests/{hpx => }/TestHPX_Category.hpp (100%) rename lib/kokkos/containers/unit_tests/{openmp => }/TestOpenMP_Category.hpp (100%) rename lib/kokkos/containers/unit_tests/{serial => }/TestSerial_Category.hpp (100%) rename lib/kokkos/containers/unit_tests/{threads => }/TestThreads_Category.hpp (100%) delete mode 100644 lib/kokkos/containers/unit_tests/cuda/TestCuda_DynRankViewAPI_rank67.cpp delete mode 100644 lib/kokkos/containers/unit_tests/cuda/TestCuda_ScatterView.cpp delete mode 100644 lib/kokkos/containers/unit_tests/cuda/TestCuda_StaticCrsGraph.cpp delete mode 100644 lib/kokkos/containers/unit_tests/cuda/TestCuda_UnorderedMap.cpp delete mode 100644 lib/kokkos/containers/unit_tests/cuda/TestCuda_ViewCtorPropEmbeddedDim.cpp delete mode 100644 lib/kokkos/containers/unit_tests/hpx/TestHPX_DynRankViewAPI_generic.cpp delete mode 100644 lib/kokkos/containers/unit_tests/hpx/TestHPX_DynRankViewAPI_rank12345.cpp delete mode 100644 lib/kokkos/containers/unit_tests/hpx/TestHPX_DynRankViewAPI_rank67.cpp delete mode 100644 lib/kokkos/containers/unit_tests/hpx/TestHPX_DynamicView.cpp delete mode 100644 lib/kokkos/containers/unit_tests/hpx/TestHPX_ErrorReporter.cpp delete mode 100644 lib/kokkos/containers/unit_tests/hpx/TestHPX_OffsetView.cpp delete mode 100644 lib/kokkos/containers/unit_tests/hpx/TestHPX_ScatterView.cpp delete mode 100644 lib/kokkos/containers/unit_tests/hpx/TestHPX_StaticCrsGraph.cpp delete mode 100644 lib/kokkos/containers/unit_tests/hpx/TestHPX_UnorderedMap.cpp delete mode 100644 lib/kokkos/containers/unit_tests/hpx/TestHPX_ViewCtorPropEmbeddedDim.cpp delete mode 100644 lib/kokkos/containers/unit_tests/openmp/TestOpenMP_DynRankViewAPI_generic.cpp delete mode 100644 lib/kokkos/containers/unit_tests/openmp/TestOpenMP_DynRankViewAPI_rank12345.cpp delete mode 100644 lib/kokkos/containers/unit_tests/openmp/TestOpenMP_DynRankViewAPI_rank67.cpp delete mode 100644 lib/kokkos/containers/unit_tests/openmp/TestOpenMP_DynamicView.cpp delete mode 100644 lib/kokkos/containers/unit_tests/openmp/TestOpenMP_ErrorReporter.cpp delete mode 100644 lib/kokkos/containers/unit_tests/openmp/TestOpenMP_OffsetView.cpp delete mode 100644 lib/kokkos/containers/unit_tests/openmp/TestOpenMP_ScatterView.cpp delete mode 100644 lib/kokkos/containers/unit_tests/openmp/TestOpenMP_StaticCrsGraph.cpp delete mode 100644 lib/kokkos/containers/unit_tests/openmp/TestOpenMP_UnorderedMap.cpp delete mode 100644 lib/kokkos/containers/unit_tests/openmp/TestOpenMP_Vector.cpp delete mode 100644 lib/kokkos/containers/unit_tests/openmp/TestOpenMP_ViewCtorPropEmbeddedDim.cpp delete mode 100644 lib/kokkos/containers/unit_tests/rocm/TestROCm_BitSet.cpp delete mode 100644 lib/kokkos/containers/unit_tests/rocm/TestROCm_DualView.cpp delete mode 100644 lib/kokkos/containers/unit_tests/rocm/TestROCm_DynRankViewAPI_generic.cpp delete mode 100644 lib/kokkos/containers/unit_tests/rocm/TestROCm_DynRankViewAPI_rank12345.cpp delete mode 100644 lib/kokkos/containers/unit_tests/rocm/TestROCm_DynRankViewAPI_rank67.cpp delete mode 100644 lib/kokkos/containers/unit_tests/rocm/TestROCm_DynamicView.cpp delete mode 100644 lib/kokkos/containers/unit_tests/rocm/TestROCm_ErrorReporter.cpp delete mode 100644 lib/kokkos/containers/unit_tests/rocm/TestROCm_ScatterView.cpp delete mode 100644 lib/kokkos/containers/unit_tests/rocm/TestROCm_StaticCrsGraph.cpp delete mode 100644 lib/kokkos/containers/unit_tests/rocm/TestROCm_UnorderedMap.cpp delete mode 100644 lib/kokkos/containers/unit_tests/rocm/TestROCm_Vector.cpp delete mode 100644 lib/kokkos/containers/unit_tests/rocm/TestROCm_ViewCtorPropEmbeddedDim.cpp delete mode 100644 lib/kokkos/containers/unit_tests/serial/TestSerial_DynRankViewAPI_generic.cpp delete mode 100644 lib/kokkos/containers/unit_tests/serial/TestSerial_DynRankViewAPI_rank12345.cpp delete mode 100644 lib/kokkos/containers/unit_tests/serial/TestSerial_DynRankViewAPI_rank67.cpp delete mode 100644 lib/kokkos/containers/unit_tests/serial/TestSerial_DynamicView.cpp delete mode 100644 lib/kokkos/containers/unit_tests/serial/TestSerial_ErrorReporter.cpp delete mode 100644 lib/kokkos/containers/unit_tests/serial/TestSerial_OffsetView.cpp delete mode 100644 lib/kokkos/containers/unit_tests/serial/TestSerial_ScatterView.cpp delete mode 100644 lib/kokkos/containers/unit_tests/serial/TestSerial_StaticCrsGraph.cpp delete mode 100644 lib/kokkos/containers/unit_tests/serial/TestSerial_UnorderedMap.cpp delete mode 100644 lib/kokkos/containers/unit_tests/serial/TestSerial_Vector.cpp delete mode 100644 lib/kokkos/containers/unit_tests/serial/TestSerial_ViewCtorPropEmbeddedDim.cpp delete mode 100644 lib/kokkos/containers/unit_tests/threads/TestThreads_DynRankViewAPI_generic.cpp delete mode 100644 lib/kokkos/containers/unit_tests/threads/TestThreads_DynRankViewAPI_rank12345.cpp delete mode 100644 lib/kokkos/containers/unit_tests/threads/TestThreads_DynRankViewAPI_rank67.cpp delete mode 100644 lib/kokkos/containers/unit_tests/threads/TestThreads_DynamicView.cpp delete mode 100644 lib/kokkos/containers/unit_tests/threads/TestThreads_ErrorReporter.cpp delete mode 100644 lib/kokkos/containers/unit_tests/threads/TestThreads_OffsetView.cpp delete mode 100644 lib/kokkos/containers/unit_tests/threads/TestThreads_ScatterView.cpp delete mode 100644 lib/kokkos/containers/unit_tests/threads/TestThreads_StaticCrsGraph.cpp delete mode 100644 lib/kokkos/containers/unit_tests/threads/TestThreads_UnorderedMap.cpp delete mode 100644 lib/kokkos/containers/unit_tests/threads/TestThreads_Vector.cpp delete mode 100644 lib/kokkos/containers/unit_tests/threads/TestThreads_ViewCtorPropEmbeddedDim.cpp create mode 100644 lib/kokkos/core/src/Cuda/Kokkos_Cuda_fwd.hpp create mode 100644 lib/kokkos/core/src/HIP/KokkosExp_HIP_IterateTile.hpp create mode 100644 lib/kokkos/core/src/HIP/Kokkos_HIP_Abort.hpp create mode 100644 lib/kokkos/core/src/HIP/Kokkos_HIP_Atomic.hpp create mode 100644 lib/kokkos/core/src/HIP/Kokkos_HIP_BlockSize_Deduction.hpp rename lib/kokkos/core/{unit_test/qthreads/TestQthreads_ViewAPI_b.cpp => src/HIP/Kokkos_HIP_Error.hpp} (50%) create mode 100644 lib/kokkos/core/src/HIP/Kokkos_HIP_Instance.cpp create mode 100644 lib/kokkos/core/src/HIP/Kokkos_HIP_Instance.hpp create mode 100644 lib/kokkos/core/src/HIP/Kokkos_HIP_KernelLaunch.cpp create mode 100644 lib/kokkos/core/src/HIP/Kokkos_HIP_KernelLaunch.hpp create mode 100644 lib/kokkos/core/src/HIP/Kokkos_HIP_Locks.cpp create mode 100644 lib/kokkos/core/src/HIP/Kokkos_HIP_Locks.hpp create mode 100644 lib/kokkos/core/src/HIP/Kokkos_HIP_Parallel_MDRange.hpp create mode 100644 lib/kokkos/core/src/HIP/Kokkos_HIP_Parallel_Range.hpp create mode 100644 lib/kokkos/core/src/HIP/Kokkos_HIP_Parallel_Team.hpp create mode 100644 lib/kokkos/core/src/HIP/Kokkos_HIP_ReduceScan.hpp create mode 100644 lib/kokkos/core/src/HIP/Kokkos_HIP_Space.cpp create mode 100644 lib/kokkos/core/src/HIP/Kokkos_HIP_Team.hpp create mode 100644 lib/kokkos/core/src/HIP/Kokkos_HIP_Vectorization.hpp create mode 100644 lib/kokkos/core/src/Kokkos_HIP.hpp create mode 100644 lib/kokkos/core/src/Kokkos_HIP_Space.hpp delete mode 100644 lib/kokkos/core/src/Kokkos_Qthreads.hpp create mode 100644 lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTarget_Instance.cpp create mode 100644 lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTarget_Instance.hpp create mode 100644 lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTarget_Parallel_MDRange.hpp delete mode 100644 lib/kokkos/core/src/Qthreads/Kokkos_QthreadsExec.cpp delete mode 100644 lib/kokkos/core/src/Qthreads/Kokkos_QthreadsExec.hpp delete mode 100644 lib/kokkos/core/src/Qthreads/Kokkos_Qthreads_Parallel.hpp delete mode 100644 lib/kokkos/core/src/Qthreads/Kokkos_Qthreads_Task.cpp delete mode 100644 lib/kokkos/core/src/Qthreads/Kokkos_Qthreads_Task.hpp delete mode 100644 lib/kokkos/core/src/Qthreads/Kokkos_Qthreads_TaskPolicy.cpp.old delete mode 100644 lib/kokkos/core/src/Qthreads/Kokkos_Qthreads_TaskPolicy.hpp.old delete mode 100644 lib/kokkos/core/src/Qthreads/Kokkos_Qthreads_TaskQueue.hpp delete mode 100644 lib/kokkos/core/src/Qthreads/Kokkos_Qthreads_TaskQueue_impl.hpp delete mode 100644 lib/kokkos/core/src/Qthreads/README create mode 100644 lib/kokkos/core/src/impl/Kokkos_Atomic_Generic_Secondary.hpp create mode 100644 lib/kokkos/core/src/impl/Kokkos_Atomic_MinMax.hpp delete mode 100644 lib/kokkos/core/src/kokkos.pc.in create mode 100644 lib/kokkos/core/unit_test/IncrementalTest.cpp.in create mode 100644 lib/kokkos/core/unit_test/TestCTestDevice.cpp create mode 100644 lib/kokkos/core/unit_test/TestConcepts.hpp create mode 100644 lib/kokkos/core/unit_test/TestRangeRequire.hpp create mode 100644 lib/kokkos/core/unit_test/TestViewIsAssignable.hpp delete mode 100644 lib/kokkos/core/unit_test/config/results/AMDAVX_Qthreads_KokkosCore_config.h delete mode 100644 lib/kokkos/core/unit_test/config/results/ARMv8-ThunderX_Qthreads_KokkosCore_config.h delete mode 100644 lib/kokkos/core/unit_test/config/results/ARMv80_Qthreads_KokkosCore_config.h delete mode 100644 lib/kokkos/core/unit_test/config/results/ARMv81_Qthreads_KokkosCore_config.h delete mode 100644 lib/kokkos/core/unit_test/config/results/BDW_Qthreads_KokkosCore_config.h delete mode 100644 lib/kokkos/core/unit_test/config/results/BGQ_Qthreads_KokkosCore_config.h delete mode 100644 lib/kokkos/core/unit_test/config/results/HSW_Qthreads_KokkosCore_config.h delete mode 100644 lib/kokkos/core/unit_test/config/results/KNC_Qthreads_KokkosCore_config.h delete mode 100644 lib/kokkos/core/unit_test/config/results/KNL_Qthreads_KokkosCore_config.h delete mode 100644 lib/kokkos/core/unit_test/config/results/Kepler30_Qthreads_KokkosCore_config.h delete mode 100644 lib/kokkos/core/unit_test/config/results/Kepler32_Qthreads_KokkosCore_config.h delete mode 100644 lib/kokkos/core/unit_test/config/results/Kepler35_Qthreads_KokkosCore_config.h delete mode 100644 lib/kokkos/core/unit_test/config/results/Kepler37_Qthreads_KokkosCore_config.h delete mode 100644 lib/kokkos/core/unit_test/config/results/Kepler_Qthreads_KokkosCore_config.h delete mode 100644 lib/kokkos/core/unit_test/config/results/Maxwell50_Qthreads_KokkosCore_config.h delete mode 100644 lib/kokkos/core/unit_test/config/results/Maxwell52_Qthreads_KokkosCore_config.h delete mode 100644 lib/kokkos/core/unit_test/config/results/Maxwell53_Qthreads_KokkosCore_config.h delete mode 100644 lib/kokkos/core/unit_test/config/results/Maxwell_Qthreads_KokkosCore_config.h delete mode 100644 lib/kokkos/core/unit_test/config/results/None_Qthreads_KokkosCore_config.h delete mode 100644 lib/kokkos/core/unit_test/config/results/Pascal60_Qthreads_KokkosCore_config.h delete mode 100644 lib/kokkos/core/unit_test/config/results/Pascal61_Qthreads_KokkosCore_config.h delete mode 100644 lib/kokkos/core/unit_test/config/results/Power7_Qthreads_KokkosCore_config.h delete mode 100644 lib/kokkos/core/unit_test/config/results/Power8_Qthreads_KokkosCore_config.h delete mode 100644 lib/kokkos/core/unit_test/config/results/Power9_Qthreads_KokkosCore_config.h delete mode 100644 lib/kokkos/core/unit_test/config/results/SKX_Qthreads_KokkosCore_config.h delete mode 100644 lib/kokkos/core/unit_test/config/results/SNB_Qthreads_KokkosCore_config.h delete mode 100644 lib/kokkos/core/unit_test/config/results/WSM_Qthreads_KokkosCore_config.h rename lib/kokkos/{containers/unit_tests/cuda/TestCuda_BitSet.cpp => core/unit_test/cuda/TestCuda_Concepts.cpp} (98%) rename lib/kokkos/{containers/unit_tests/cuda/TestCuda_OffsetView.cpp => core/unit_test/cuda/TestCuda_RangePolicyRequire.cpp} (98%) rename lib/kokkos/core/unit_test/{qthreads/TestQthreads_Category.hpp => hip/TestHIPHostPinned_Category.hpp} (91%) rename lib/kokkos/core/unit_test/{qthreads/TestQthreads_SubView_c10.cpp => hip/TestHIPHostPinned_SharedAlloc.cpp} (91%) rename lib/kokkos/core/unit_test/{qthreads/TestQqthreads_ViewAPI_a.cpp => hip/TestHIPHostPinned_ViewAPI_a.cpp} (97%) rename lib/kokkos/core/unit_test/{qthreads/TestQqthreads_ViewAPI_b.cpp => hip/TestHIPHostPinned_ViewAPI_b.cpp} (97%) rename lib/kokkos/core/unit_test/{qthreads/TestQqthreads_ViewAPI_c.cpp => hip/TestHIPHostPinned_ViewAPI_c.cpp} (97%) rename lib/kokkos/core/unit_test/{qthreads/TestQqthreads_ViewAPI_d.cpp => hip/TestHIPHostPinned_ViewAPI_d.cpp} (97%) rename lib/kokkos/core/unit_test/{qthreads/TestQqthreads_ViewAPI_e.cpp => hip/TestHIPHostPinned_ViewAPI_e.cpp} (97%) rename lib/kokkos/{containers/unit_tests/cuda/TestCuda_DynamicView.cpp => core/unit_test/hip/TestHIPHostPinned_ViewCopy.cpp} (96%) rename lib/kokkos/{containers/unit_tests/cuda/TestCuda_DynRankViewAPI_rank12345.cpp => core/unit_test/hip/TestHIPHostPinned_ViewMapping_a.cpp} (96%) rename lib/kokkos/{containers/unit_tests/cuda/TestCuda_DynRankViewAPI_generic.cpp => core/unit_test/hip/TestHIPHostPinned_ViewMapping_b.cpp} (96%) create mode 100644 lib/kokkos/core/unit_test/hip/TestHIPHostPinned_ViewMapping_subview.cpp rename lib/kokkos/core/unit_test/{qthreads/TestQqthreads_AtomicOperations_complexdouble.cpp => hip/TestHIP_AtomicOperations_complexdouble.cpp} (97%) rename lib/kokkos/core/unit_test/{qthreads/TestQqthreads_AtomicOperations_complexfloat.cpp => hip/TestHIP_AtomicOperations_complexfloat.cpp} (97%) rename lib/kokkos/core/unit_test/{qthreads/TestQqthreads_AtomicOperations_double.cpp => hip/TestHIP_AtomicOperations_double.cpp} (97%) rename lib/kokkos/core/unit_test/{qthreads/TestQqthreads_AtomicOperations_float.cpp => hip/TestHIP_AtomicOperations_float.cpp} (97%) rename lib/kokkos/core/unit_test/{qthreads/TestQqthreads_AtomicOperations_int.cpp => hip/TestHIP_AtomicOperations_int.cpp} (97%) rename lib/kokkos/core/unit_test/{qthreads/TestQqthreads_AtomicOperations_longint.cpp => hip/TestHIP_AtomicOperations_longint.cpp} (97%) rename lib/kokkos/core/unit_test/{qthreads/TestQqthreads_AtomicOperations_longlongint.cpp => hip/TestHIP_AtomicOperations_longlongint.cpp} (97%) rename lib/kokkos/core/unit_test/{qthreads/TestQqthreads_AtomicOperations_unsignedint.cpp => hip/TestHIP_AtomicOperations_unsignedint.cpp} (97%) rename lib/kokkos/core/unit_test/{qthreads/TestQqthreads_AtomicOperations_unsignedlongint.cpp => hip/TestHIP_AtomicOperations_unsignedlongint.cpp} (97%) rename lib/kokkos/{containers/unit_tests/cuda/TestCuda_DualView.cpp => core/unit_test/hip/TestHIP_AtomicViews.cpp} (96%) create mode 100644 lib/kokkos/core/unit_test/hip/TestHIP_Atomics.cpp create mode 100644 lib/kokkos/core/unit_test/hip/TestHIP_Category.hpp rename lib/kokkos/{containers/unit_tests/cuda/TestCuda_Vector.cpp => core/unit_test/hip/TestHIP_Complex.cpp} (96%) create mode 100644 lib/kokkos/core/unit_test/hip/TestHIP_Concepts.cpp create mode 100644 lib/kokkos/core/unit_test/hip/TestHIP_Crs.cpp rename lib/kokkos/core/unit_test/{qthreads/TestQthreads_DeepCopyAlignment.cpp => hip/TestHIP_DeepCopyAlignment.cpp} (97%) rename lib/kokkos/{containers/unit_tests/cuda/TestCuda_ErrorReporter.cpp => core/unit_test/hip/TestHIP_FunctorAnalysis.cpp} (96%) create mode 100644 lib/kokkos/core/unit_test/hip/TestHIP_Init.cpp create mode 100644 lib/kokkos/core/unit_test/hip/TestHIP_InterOp_Init.cpp create mode 100644 lib/kokkos/core/unit_test/hip/TestHIP_LocalDeepCopy.cpp rename lib/kokkos/core/unit_test/{qthreads/TestQqthreads_MDRange_a.cpp => hip/TestHIP_MDRange_a.cpp} (97%) rename lib/kokkos/core/unit_test/{qthreads/TestQqthreads_MDRange_b.cpp => hip/TestHIP_MDRange_b.cpp} (97%) rename lib/kokkos/core/unit_test/{qthreads/TestQqthreads_MDRange_c.cpp => hip/TestHIP_MDRange_c.cpp} (97%) rename lib/kokkos/core/unit_test/{qthreads/TestQqthreads_MDRange_d.cpp => hip/TestHIP_MDRange_d.cpp} (97%) rename lib/kokkos/core/unit_test/{qthreads/TestQqthreads_MDRange_e.cpp => hip/TestHIP_MDRange_e.cpp} (97%) rename lib/kokkos/{containers/unit_tests/hpx/TestHPX_Vector.cpp => core/unit_test/hip/TestHIP_RangePolicy.cpp} (96%) create mode 100644 lib/kokkos/core/unit_test/hip/TestHIP_RangePolicyRequire.cpp create mode 100644 lib/kokkos/core/unit_test/hip/TestHIP_Reducers_a.cpp create mode 100644 lib/kokkos/core/unit_test/hip/TestHIP_Reducers_b.cpp create mode 100644 lib/kokkos/core/unit_test/hip/TestHIP_Reducers_c.cpp create mode 100644 lib/kokkos/core/unit_test/hip/TestHIP_Reducers_d.cpp create mode 100644 lib/kokkos/core/unit_test/hip/TestHIP_Reductions.cpp create mode 100644 lib/kokkos/core/unit_test/hip/TestHIP_Scan.cpp rename lib/kokkos/core/unit_test/{qthreads/TestQthreads_SubView_a.cpp => hip/TestHIP_ScanUnit.cpp} (56%) rename lib/kokkos/core/unit_test/{qthreads/TestQthreads_SubView_c03.cpp => hip/TestHIP_SharedAlloc.cpp} (90%) create mode 100644 lib/kokkos/core/unit_test/hip/TestHIP_Spaces.cpp create mode 100644 lib/kokkos/core/unit_test/hip/TestHIP_SubView_a.cpp rename lib/kokkos/core/unit_test/{qthreads/TestQthreads_SubView_b.cpp => hip/TestHIP_SubView_b.cpp} (71%) rename lib/kokkos/core/unit_test/{qthreads/TestQthreads_SubView_c07.cpp => hip/TestHIP_SubView_c01.cpp} (91%) create mode 100644 lib/kokkos/core/unit_test/hip/TestHIP_SubView_c02.cpp create mode 100644 lib/kokkos/core/unit_test/hip/TestHIP_SubView_c03.cpp rename lib/kokkos/core/unit_test/{qthreads/TestQthreads_SubView_c04.cpp => hip/TestHIP_SubView_c04.cpp} (91%) create mode 100644 lib/kokkos/core/unit_test/hip/TestHIP_SubView_c05.cpp create mode 100644 lib/kokkos/core/unit_test/hip/TestHIP_SubView_c06.cpp rename lib/kokkos/core/unit_test/{qthreads/TestQthreads_SubView_c01.cpp => hip/TestHIP_SubView_c07.cpp} (91%) create mode 100644 lib/kokkos/core/unit_test/hip/TestHIP_SubView_c08.cpp create mode 100644 lib/kokkos/core/unit_test/hip/TestHIP_SubView_c09.cpp create mode 100644 lib/kokkos/core/unit_test/hip/TestHIP_SubView_c10.cpp create mode 100644 lib/kokkos/core/unit_test/hip/TestHIP_SubView_c11.cpp create mode 100644 lib/kokkos/core/unit_test/hip/TestHIP_SubView_c12.cpp rename lib/kokkos/core/unit_test/{qthreads/TestQthreads_SubView_c02.cpp => hip/TestHIP_SubView_c13.cpp} (90%) create mode 100644 lib/kokkos/core/unit_test/hip/TestHIP_ViewAPI_c.cpp create mode 100644 lib/kokkos/core/unit_test/hip/TestHIP_ViewAPI_d.cpp create mode 100644 lib/kokkos/core/unit_test/hip/TestHIP_ViewMapping_a.cpp create mode 100644 lib/kokkos/core/unit_test/hip/TestHIP_ViewMapping_b.cpp create mode 100644 lib/kokkos/core/unit_test/hip/TestHIP_ViewMapping_subview.cpp create mode 100644 lib/kokkos/core/unit_test/hip/TestHIP_ViewOfClass.cpp create mode 100644 lib/kokkos/core/unit_test/hip/TestHIP_ViewResize.cpp create mode 100644 lib/kokkos/core/unit_test/hip/TestHIP_View_64bit.cpp rename lib/kokkos/{containers/unit_tests/hpx/TestHPX_BitSet.cpp => core/unit_test/hpx/TestHPX_Concepts.cpp} (98%) rename lib/kokkos/{containers/unit_tests/hpx/TestHPX_DualView.cpp => core/unit_test/hpx/TestHPX_RangePolicyRequire.cpp} (98%) create mode 100644 lib/kokkos/core/unit_test/incremental/Test01_execspace.hpp create mode 100644 lib/kokkos/core/unit_test/incremental/Test02_atomic_host.hpp create mode 100644 lib/kokkos/core/unit_test/incremental/Test03a_MemorySpace_malloc.hpp create mode 100644 lib/kokkos/core/unit_test/incremental/Test03b_MemorySpace_free.hpp create mode 100644 lib/kokkos/core/unit_test/incremental/Test04_ParallelFor_RangePolicy.hpp create mode 100644 lib/kokkos/core/unit_test/incremental/Test05_ParallelReduce_RangePolicy.hpp create mode 100644 lib/kokkos/core/unit_test/incremental/Test06_ParallelFor_MDRangePolicy.hpp create mode 100644 lib/kokkos/core/unit_test/incremental/Test08_deep_copy.hpp create mode 100644 lib/kokkos/core/unit_test/incremental/Test10_HierarchicalBasics.hpp create mode 100644 lib/kokkos/core/unit_test/incremental/Test11a_ParallelFor_TeamThreadRange.hpp create mode 100644 lib/kokkos/core/unit_test/incremental/Test11b_ParallelFor_TeamVectorRange.hpp create mode 100644 lib/kokkos/core/unit_test/incremental/Test11c_ParallelFor_ThreadVectorRange.hpp create mode 100644 lib/kokkos/core/unit_test/incremental/Test12a_ThreadScratch.hpp create mode 100644 lib/kokkos/core/unit_test/incremental/Test12b_TeamScratch.hpp create mode 100644 lib/kokkos/core/unit_test/incremental/Test13a_ParallelRed_TeamThreadRange.hpp rename lib/kokkos/core/unit_test/{qthreads/TestQthreads.hpp => incremental/Test13b_ParallelRed_TeamVectorRange.hpp} (57%) create mode 100644 lib/kokkos/core/unit_test/incremental/Test13c_ParallelRed_ThreadVectorRange.hpp rename lib/kokkos/{containers/unit_tests/openmp/TestOpenMP_BitSet.cpp => core/unit_test/openmp/TestOpenMP_Concepts.cpp} (98%) rename lib/kokkos/{containers/unit_tests/openmp/TestOpenMP_DualView.cpp => core/unit_test/openmp/TestOpenMP_RangePolicyRequire.cpp} (98%) create mode 100644 lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_Concepts.cpp create mode 100644 lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_Crs.cpp create mode 100644 lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_FunctorAnalysis.cpp create mode 100644 lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_LocalDeepCopy.cpp create mode 100644 lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_RangePolicyRequire.cpp create mode 100644 lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_Reductions_DeviceView.cpp create mode 100644 lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SubView_c13.cpp create mode 100644 lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_TeamTeamSize.cpp create mode 100644 lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_TeamVectorRange.cpp create mode 100644 lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_UniqueToken.cpp create mode 100644 lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_ViewLayoutStrideAssignment.cpp create mode 100644 lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_ViewResize.cpp create mode 100644 lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_View_64bit.cpp create mode 100644 lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_WorkGraph.cpp delete mode 100644 lib/kokkos/core/unit_test/qthreads/TestQthreads_Atomics.cpp delete mode 100644 lib/kokkos/core/unit_test/qthreads/TestQthreads_Complex.cpp delete mode 100644 lib/kokkos/core/unit_test/qthreads/TestQthreads_Other.cpp delete mode 100644 lib/kokkos/core/unit_test/qthreads/TestQthreads_Reductions.cpp delete mode 100644 lib/kokkos/core/unit_test/qthreads/TestQthreads_SubView_c05.cpp delete mode 100644 lib/kokkos/core/unit_test/qthreads/TestQthreads_SubView_c06.cpp delete mode 100644 lib/kokkos/core/unit_test/qthreads/TestQthreads_SubView_c08.cpp delete mode 100644 lib/kokkos/core/unit_test/qthreads/TestQthreads_SubView_c09.cpp delete mode 100644 lib/kokkos/core/unit_test/qthreads/TestQthreads_SubView_c11.cpp delete mode 100644 lib/kokkos/core/unit_test/qthreads/TestQthreads_SubView_c12.cpp delete mode 100644 lib/kokkos/core/unit_test/qthreads/TestQthreads_SubView_c13.cpp delete mode 100644 lib/kokkos/core/unit_test/qthreads/TestQthreads_SubView_c_all.cpp delete mode 100644 lib/kokkos/core/unit_test/qthreads/TestQthreads_Team.cpp delete mode 100644 lib/kokkos/core/unit_test/qthreads/TestQthreads_ViewAPI_a.cpp rename lib/kokkos/{containers/unit_tests/serial/TestSerial_BitSet.cpp => core/unit_test/serial/TestSerial_Concepts.cpp} (98%) rename lib/kokkos/{containers/unit_tests/serial/TestSerial_DualView.cpp => core/unit_test/serial/TestSerial_RangePolicyRequire.cpp} (98%) rename lib/kokkos/{containers/unit_tests/threads/TestThreads_BitSet.cpp => core/unit_test/threads/TestThreads_Concepts.cpp} (98%) rename lib/kokkos/{containers/unit_tests/threads/TestThreads_DualView.cpp => core/unit_test/threads/TestThreads_RangePolicyRequire.cpp} (98%) delete mode 100644 lib/kokkos/example/cmake/Dependencies.cmake create mode 100755 lib/kokkos/gnu_generate_makefile.bash diff --git a/lib/kokkos/BUILD.md b/lib/kokkos/BUILD.md index 84a1bc3b37..63dbf7fdb2 100644 --- a/lib/kokkos/BUILD.md +++ b/lib/kokkos/BUILD.md @@ -40,6 +40,13 @@ cmake ${srcdir} \ ```` which activates the OpenMP backend. All of the options controlling device backends, options, architectures, and third-party libraries (TPLs) are given below. +## Platform-specific Problems + +### Cray + +* The Cray compiler wrappers do static linking by default. This seems to break the Kokkos build. You will likely need to set the environment variable `CRAYPE_LINK_TYPE=dynamic` in order to link correctly. Kokkos warns during configure if this is missing. +* The Cray compiler identifies to CMake as Clang, but it sometimes has its own flags that differ from Clang. We try to include all exceptions, but flag errors may occur in which a Clang-specific flag is passed that the Cray compiler does not recognize. + ## Spack An alternative to manually building with the CMake is to use the Spack package manager. To do so, download the `kokkos-spack` git repo and add to the package list: @@ -63,6 +70,7 @@ For a complete list of Kokkos options, run: ```` spack info kokkos ```` +More details can be found in the kokkos-spack repository [README](https://github.com/kokkos/kokkos-spack/blob/master/README.md). #### Spack Development Spack currently installs packages to a location determined by a unique hash. This hash name is not really "human readable". @@ -73,32 +81,8 @@ spack find -p kokkos ... ```` where `...` is the unique spec identifying the particular Kokkos configuration and version. -A better way to use Spack for doing Kokkos development is the DIY feature of Spack. -If you wish to develop Kokkos itself, go to the Kokkos source folder: -```` -spack diy -u cmake kokkos@diy ... -```` -where `...` is a Spack spec identifying the exact Kokkos configuration. -This then creates a `spack-build` directory where you can run `make`. - -If doing development on a downstream project, you can do almost exactly the same thing. -```` -spack diy -u cmake ${myproject}@${myversion} ... ^kokkos... -```` -where the `...` are the specs for your project and the desired Kokkos configuration. -Again, a `spack-build` directory will be created where you can run `make`. - -Spack has a few idiosyncracies that make building outside of Spack annoying related to Spack forcing use of a compiler wrapper. This can be worked around by having a `-DSpack_WORKAROUND=On` given your CMake. Then add the block of code to your CMakeLists.txt: - -```` -if (Spack_WORKAROUND) - set(SPACK_CXX $ENV{SPACK_CXX}) - if(SPACK_CXX) - set(CMAKE_CXX_COMPILER ${SPACK_CXX} CACHE STRING "the C++ compiler" FORCE) - set(ENV{CXX} ${SPACK_CXX}) - endif() -endif() -```` +A better way to use Spack for doing Kokkos development is the dev-build feature of Spack. +For dev-build details, consult the kokkos-spack repository [README](https://github.com/kokkos/kokkos-spack/blob/master/README.md). # Kokkos Keyword Listing @@ -157,6 +141,9 @@ Options can be enabled by specifying `-DKokkos_ENABLE_X`. * Kokkos_ENABLE_DEPRECATED_CODE * Whether to enable deprecated code * BOOL Default: OFF +* Kokkos_ENABLE_EXAMPLES + * Whether to enable building examples + * BOOL Default: OFF * Kokkos_ENABLE_HPX_ASYNC_DISPATCH * Whether HPX supports asynchronous dispatch * BOOL Default: OFF diff --git a/lib/kokkos/CHANGELOG.md b/lib/kokkos/CHANGELOG.md index 1d54b4c21d..149e63ca91 100644 --- a/lib/kokkos/CHANGELOG.md +++ b/lib/kokkos/CHANGELOG.md @@ -1,5 +1,59 @@ # Change Log +## [3.1.00](https://github.com/kokkos/kokkos/tree/3.1.00) (2020-04-14) +[Full Changelog](https://github.com/kokkos/kokkos/compare/3.0.00...3.1.00) + +**Features:** + +- HIP Support for AMD +- OpenMPTarget Support with clang +- Windows VS19 (Serial) Support [\#1533](https://github.com/kokkos/kokkos/issues/1533) + +**Implemented enhancements:** + +- generate\_makefile.bash should allow tests to be disabled [\#2886](https://github.com/kokkos/kokkos/issues/2886) +- clang/7+cuda/9 build -Werror-unused parameter error in nightly test [\#2884](https://github.com/kokkos/kokkos/issues/2884) +- ScatterView memory space is not user settable [\#2826](https://github.com/kokkos/kokkos/issues/2826) +- clang/8+cuda/10.0 build error with c++17 [\#2809](https://github.com/kokkos/kokkos/issues/2809) +- warnings.... [\#2805](https://github.com/kokkos/kokkos/issues/2805) +- Kokkos version in cpp define [\#2787](https://github.com/kokkos/kokkos/issues/2787) +- Remove Defunct QThreads Backend [\#2751](https://github.com/kokkos/kokkos/issues/2751) +- Improve Kokkos::fence behavior with multiple execution spaces [\#2659](https://github.com/kokkos/kokkos/issues/2659) +- polylithic\(?\) initialization of Kokkos [\#2658](https://github.com/kokkos/kokkos/issues/2658) +- Unnecessary\(?\) check for host execution space initialization from Cuda initialization [\#2652](https://github.com/kokkos/kokkos/issues/2652) +- Kokkos error reporting failures with CUDA GPUs in exclusive mode [\#2471](https://github.com/kokkos/kokkos/issues/2471) +- atomicMax equivalent \(and other atomics\) [\#2401](https://github.com/kokkos/kokkos/issues/2401) +- Fix alignment for Kokkos::complex [\#2255](https://github.com/kokkos/kokkos/issues/2255) +- Warnings with Cuda 10.1 [\#2206](https://github.com/kokkos/kokkos/issues/2206) +- dual view with Kokkos::ViewAllocateWithoutInitializing [\#2188](https://github.com/kokkos/kokkos/issues/2188) +- Check error code from cudaOccupancyMaxActiveBlocksPerMultiprocessor [\#2172](https://github.com/kokkos/kokkos/issues/2172) +- Add non-member Kokkos::resize/realloc for DualView [\#2170](https://github.com/kokkos/kokkos/issues/2170) +- Construct DualView without initialization [\#2046](https://github.com/kokkos/kokkos/issues/2046) +- Expose is\_assignable to determine if one view can be assigned to another [\#1936](https://github.com/kokkos/kokkos/issues/1936) +- profiling label [\#1935](https://github.com/kokkos/kokkos/issues/1935) +- team\_broadcast of bool failed on CUDA backend [\#1908](https://github.com/kokkos/kokkos/issues/1908) +- View static\_extent [\#660](https://github.com/kokkos/kokkos/issues/660) +- Misleading Kokkos::Cuda::initialize ERROR message when compiled for wrong GPU architecture [\#1944](https://github.com/kokkos/kokkos/issues/1944) +- Cryptic Error When Malloc Fails [\#2164](https://github.com/kokkos/kokkos/issues/2164) +- Drop support for intermediate standards in CMake [\#2336](https://github.com/kokkos/kokkos/issues/2336) + +**Fixed bugs:** + +- DualView sync\_device with length zero creates cuda errors [\#2946](https://github.com/kokkos/kokkos/issues/2946) +- building with nvcc and clang \(or clang based XL\) as host compiler: "Kokkos::atomic\_fetch\_min\(volatile int \*, int\)" has already been defined [\#2903](https://github.com/kokkos/kokkos/issues/2903) +- Cuda 9.1,10.1 debug builds failing due to -Werror=unused-parameter [\#2880](https://github.com/kokkos/kokkos/issues/2880) +- clang -Werror: Kokkos\_FixedBufferMemoryPool.hpp:140:28: error: unused parameter 'alloc\_size' [\#2869](https://github.com/kokkos/kokkos/issues/2869) +- intel/16.0.1, intel/17.0.1 nightly build failures with debugging enabled [\#2867](https://github.com/kokkos/kokkos/issues/2867) +- intel/16.0.1 debug build errors [\#2863](https://github.com/kokkos/kokkos/issues/2863) +- xl/16.1.1 with cpp14, openmp build, nightly test failures [\#2856](https://github.com/kokkos/kokkos/issues/2856) +- Intel nightly test failures: team\_vector [\#2852](https://github.com/kokkos/kokkos/issues/2852) +- Kokkos Views with intmax/2\_ROOT variables") CMAKE_POLICY(SET CMP0074 NEW) ENDIF() -# Load either the real TriBITS or a TriBITS wrapper +# Load either the real TriBITS or a TriBITS wrapper # for certain utility functions that are universal (like GLOBAL_SET) INCLUDE(${KOKKOS_SRC_PATH}/cmake/fake_tribits.cmake) @@ -118,18 +129,14 @@ ENDIF() # These are the variables we will append to as we go # I really wish these were regular variables # but scoping issues can make it difficult -GLOBAL_RESET(KOKKOS_COMPILE_OPTIONS) -GLOBAL_RESET(KOKKOS_LINK_OPTIONS) -GLOBAL_RESET(KOKKOS_CUDA_OPTIONS) -GLOBAL_RESET(KOKKOS_CUDAFE_OPTIONS) -GLOBAL_RESET(KOKKOS_XCOMPILER_OPTIONS) +GLOBAL_SET(KOKKOS_COMPILE_OPTIONS) +GLOBAL_SET(KOKKOS_LINK_OPTIONS) +GLOBAL_SET(KOKKOS_CUDA_OPTIONS) +GLOBAL_SET(KOKKOS_CUDAFE_OPTIONS) +GLOBAL_SET(KOKKOS_XCOMPILER_OPTIONS) # We need to append text here for making sure TPLs # we import are available for an installed Kokkos -GLOBAL_RESET(KOKKOS_TPL_EXPORTS) -# We need these for controlling the exact -std flag -GLOBAL_RESET(KOKKOS_DONT_ALLOW_EXTENSIONS) -GLOBAL_RESET(KOKKOS_USE_CXX_EXTENSIONS) -GLOBAL_RESET(KOKKOS_CXX_STANDARD_FEATURE) +GLOBAL_SET(KOKKOS_TPL_EXPORTS) # Include a set of Kokkos-specific wrapper functions that # will either call raw CMake or TriBITS @@ -137,6 +144,9 @@ GLOBAL_RESET(KOKKOS_CXX_STANDARD_FEATURE) INCLUDE(${KOKKOS_SRC_PATH}/cmake/kokkos_tribits.cmake) +# Check the environment and set certain variables +# to allow platform-specific checks +INCLUDE(${KOKKOS_SRC_PATH}/cmake/kokkos_check_env.cmake) # The build environment setup goes in the following steps # 1) Check all the enable options. This includes checking Kokkos_DEVICES # 2) Check the compiler ID (type and version) @@ -187,14 +197,21 @@ IF (KOKKOS_HAS_TRILINOS) # Because Tribits doesn't use lists, it uses spaces for the list of CXX flags # we have to match the annoying behavior STRING(REPLACE ";" " " KOKKOSCORE_COMPILE_OPTIONS "${KOKKOS_COMPILE_OPTIONS}") - STRING(REPLACE ";" " " KOKKOSCORE_CUDA_OPTIONS "${KOKKOS_CUDA_OPTIONS}") - FOREACH(CUDAFE_FLAG ${KOKKOS_CUDAFE_OPTIONS}) - SET(KOKKOSCORE_CUDAFE_OPTIONS "${KOKKOSCORE_CUDAFE_OPTIONS} -Xcudafe ${CUDAFE_FLAG}") - ENDFOREACH() + LIST(APPEND KOKKOS_ALL_COMPILE_OPTIONS ${KOKKOS_COMPILE_OPTIONS}) + LIST(APPEND KOKKOS_ALL_COMPILE_OPTIONS ${KOKKOS_CUDA_OPTIONS}) FOREACH(XCOMP_FLAG ${KOKKOS_XCOMPILER_OPTIONS}) SET(KOKKOSCORE_XCOMPILER_OPTIONS "${KOKKOSCORE_XCOMPILER_OPTIONS} -Xcompiler ${XCOMP_FLAG}") + LIST(APPEND KOKKOS_ALL_COMPILE_OPTIONS -Xcompiler ${XCOMP_FLAG}) ENDFOREACH() - SET(KOKKOSCORE_CXX_FLAGS "${KOKKOSCORE_COMPILE_OPTIONS} ${CMAKE_CXX${KOKKOS_CXX_STANDARD}_STANDARD_COMPILE_OPTION} ${KOKKOSCORE_CUDA_OPTIONS} ${KOKKOSCORE_CUDAFE_OPTIONS} ${KOKKOSCORE_XCOMPILER_OPTIONS}") + SET(KOKKOSCORE_CXX_FLAGS "${KOKKOSCORE_COMPILE_OPTIONS} ${CMAKE_CXX${KOKKOS_CXX_STANDARD}_STANDARD_COMPILE_OPTION} ${KOKKOSCORE_XCOMPILER_OPTIONS}") + IF (KOKKOS_ENABLE_CUDA) + STRING(REPLACE ";" " " KOKKOSCORE_CUDA_OPTIONS "${KOKKOS_CUDA_OPTIONS}") + FOREACH(CUDAFE_FLAG ${KOKKOS_CUDAFE_OPTIONS}) + SET(KOKKOSCORE_CUDAFE_OPTIONS "${KOKKOSCORE_CUDAFE_OPTIONS} -Xcudafe ${CUDAFE_FLAG}") + LIST(APPEND KOKKOS_ALL_COMPILE_OPTIONS -Xcudafe ${CUDAFE_FLAG}) + ENDFOREACH() + SET(KOKKOSCORE_CXX_FLAGS "${KOKKOSCORE_CXX_FLAGS} ${KOKKOSCORE_CUDA_OPTIONS} ${KOKKOSCORE_CUDAFE_OPTIONS}") + ENDIF() # Both parent scope and this package # In ProjectCompilerPostConfig.cmake, we capture the "global" flags Trilinos wants in # TRILINOS_TOPLEVEL_CXX_FLAGS @@ -203,6 +220,8 @@ IF (KOKKOS_HAS_TRILINOS) #CMAKE_CXX_FLAGS will get added to Kokkos and Kokkos dependencies automatically here #These flags get set up in KOKKOS_PACKAGE_DECL, which means they #must be configured before KOKKOS_PACKAGE_DECL + SET(KOKKOS_ALL_COMPILE_OPTIONS + $<$:${KOKKOS_ALL_COMPILE_OPTIONS}>) ENDIF() KOKKOS_PACKAGE_DECL() @@ -250,7 +269,7 @@ INSTALL(FILES "${CMAKE_CURRENT_BINARY_DIR}/KokkosCore_config.h" DESTINATION ${CM IF (HAS_PARENT) FOREACH(DEV Kokkos_ENABLED_DEVICES) #I would much rather not make these cache variables or global properties, but I can't - #make any guarantees on whether PARENT_SCOPE is good enough to make + #make any guarantees on whether PARENT_SCOPE is good enough to make #these variables visible where I need them SET(Kokkos_ENABLE_${DEV} ON PARENT_SCOPE) SET_PROPERTY(GLOBAL PROPERTY Kokkos_ENABLE_${DEV} ON) diff --git a/lib/kokkos/Copyright.txt b/lib/kokkos/Copyright.txt index 06184796b2..5e2f8d8647 100644 --- a/lib/kokkos/Copyright.txt +++ b/lib/kokkos/Copyright.txt @@ -1,13 +1,13 @@ //@HEADER // ************************************************************************ -// +// // Kokkos v. 3.0 // Copyright (2020) National Technology & Engineering // Solutions of Sandia, LLC (NTESS). -// +// // Under the terms of Contract DE-NA0003525 with NTESS, // 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: @@ -36,6 +36,6 @@ // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // // Questions? Contact Christian R. Trott (crtrott@sandia.gov) -// +// // ************************************************************************ //@HEADER diff --git a/lib/kokkos/Makefile.kokkos b/lib/kokkos/Makefile.kokkos index e2b34fb453..e1fdd0620e 100644 --- a/lib/kokkos/Makefile.kokkos +++ b/lib/kokkos/Makefile.kokkos @@ -6,15 +6,20 @@ ifndef KOKKOS_PATH endif CXXFLAGS=$(CCFLAGS) -# Options: Cuda,ROCm,OpenMP,Pthreads,Qthreads,Serial +KOKKOS_VERSION_MAJOR = 3 +KOKKOS_VERSION_MINOR = 1 +KOKKOS_VERSION_PATCH = 0 +KOKKOS_VERSION = $(shell echo $(KOKKOS_VERSION_MAJOR)*10000+$(KOKKOS_VERSION_MINOR)*100+$(KOKKOS_VERSION_PATCH) | bc) + +# Options: Cuda,HIP,ROCm,OpenMP,Pthread,Serial KOKKOS_DEVICES ?= "OpenMP" -#KOKKOS_DEVICES ?= "Pthreads" +#KOKKOS_DEVICES ?= "Pthread" # Options: # Intel: KNC,KNL,SNB,HSW,BDW,SKX # NVIDIA: Kepler,Kepler30,Kepler32,Kepler35,Kepler37,Maxwell,Maxwell50,Maxwell52,Maxwell53,Pascal60,Pascal61,Volta70,Volta72,Turing75 # ARM: ARMv80,ARMv81,ARMv8-ThunderX,ARMv8-TX2 # IBM: BGQ,Power7,Power8,Power9 -# AMD-GPUS: Kaveri,Carrizo,Fiji,Vega +# AMD-GPUS: Vega900,Vega906 # AMD-CPUS: AMDAVX,Ryzen,EPYC KOKKOS_ARCH ?= "" # Options: yes,no @@ -35,6 +40,9 @@ KOKKOS_STANDALONE_CMAKE ?= "no" # Options: force_uvm,use_ldg,rdc,enable_lambda,enable_constexpr KOKKOS_CUDA_OPTIONS ?= "enable_lambda" +# Options: rdc +KOKKOS_HIP_OPTIONS ?= "" + # Default settings specific options. # Options: enable_async_dispatch KOKKOS_HPX_OPTIONS ?= "" @@ -82,29 +90,50 @@ KOKKOS_INTERNAL_CUDA_USE_CONSTEXPR := $(call kokkos_has_string,$(KOKKOS_CUDA_OPT 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) +KOKKOS_INTERNAL_HIP_USE_RELOC := $(call kokkos_has_string,$(KOKKOS_HIP_OPTIONS),rdc) # Check for Kokkos Host Execution Spaces one of which must be on. 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) - ifeq ($(KOKKOS_INTERNAL_USE_HPX), 0) - KOKKOS_INTERNAL_USE_SERIAL := 1 - endif + ifeq ($(KOKKOS_INTERNAL_USE_HPX), 0) + KOKKOS_INTERNAL_USE_SERIAL := 1 endif endif endif # Check for other Execution Spaces. KOKKOS_INTERNAL_USE_CUDA := $(call kokkos_has_string,$(KOKKOS_DEVICES),Cuda) -KOKKOS_INTERNAL_USE_ROCM := $(call kokkos_has_string,$(KOKKOS_DEVICES),ROCm) +KOKKOS_INTERNAL_USE_HIP := $(call kokkos_has_string,$(KOKKOS_DEVICES),HIP) KOKKOS_INTERNAL_USE_OPENMPTARGET := $(call kokkos_has_string,$(KOKKOS_DEVICES),OpenMPTarget) +KOKKOS_DEVICELIST = +ifeq ($(KOKKOS_INTERNAL_USE_SERIAL), 1) + KOKKOS_DEVICELIST += Serial +endif +ifeq ($(KOKKOS_INTERNAL_USE_OPENMP), 1) + KOKKOS_DEVICELIST += OpenMP +endif +ifeq ($(KOKKOS_INTERNAL_USE_PTHREADS), 1) + KOKKOS_DEVICELIST += Threads +endif +ifeq ($(KOKKOS_INTERNAL_USE_HPX), 1) + KOKKOS_DEVICELIST += HPX +endif +ifeq ($(KOKKOS_INTERNAL_USE_CUDA), 1) + KOKKOS_DEVICELIST += Cuda +endif +ifeq ($(KOKKOS_INTERNAL_USE_HIP), 1) + KOKKOS_DEVICELIST += HIP +endif +ifeq ($(KOKKOS_INTERNAL_USE_OPENMPTARGET), 1) + KOKKOS_DEVICELIST += OPENMPTARGET +endif + ifeq ($(KOKKOS_INTERNAL_USE_CUDA), 1) KOKKOS_INTERNAL_NVCC_PATH := $(shell which nvcc) ifeq ($(origin CUDA_PATH), undefined) @@ -132,6 +161,7 @@ KOKKOS_INTERNAL_COMPILER_NVCC := $(strip $(shell echo "$(shell export OMP 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 LLVM) KOKKOS_INTERNAL_COMPILER_HCC := $(call kokkos_has_string,$(KOKKOS_CXX_VERSION),HCC) +KOKKOS_INTERNAL_COMPILER_GCC := $(call kokkos_has_string,$(KOKKOS_CXX_VERSION),GCC) # Check Host Compiler if using NVCC through nvcc_wrapper ifeq ($(KOKKOS_INTERNAL_COMPILER_NVCC), 1) @@ -180,20 +210,20 @@ ifeq ($(KOKKOS_INTERNAL_ENABLE_COMPILER_WARNINGS), 1) KOKKOS_INTERNAL_COMPILER_WARNINGS = else ifeq ($(KOKKOS_INTERNAL_COMPILER_CLANG), 1) - KOKKOS_INTERNAL_COMPILER_WARNINGS = -Wall -Wshadow -pedantic -Wsign-compare -Wtype-limits -Wuninitialized + KOKKOS_INTERNAL_COMPILER_WARNINGS = -Wall -Wunused-parameter -Wshadow -pedantic -Wsign-compare -Wtype-limits -Wuninitialized else ifeq ($(KOKKOS_INTERNAL_COMPILER_APPLE_CLANG), 1) - KOKKOS_INTERNAL_COMPILER_WARNINGS = -Wall -Wshadow -pedantic -Wsign-compare -Wtype-limits -Wuninitialized + KOKKOS_INTERNAL_COMPILER_WARNINGS = -Wall -Wunused-parameter -Wshadow -pedantic -Wsign-compare -Wtype-limits -Wuninitialized else ifeq ($(KOKKOS_INTERNAL_COMPILER_XL), 1) - KOKKOS_INTERNAL_COMPILER_WARNINGS = -Wall -Wshadow -pedantic -Wsign-compare -Wtype-limits -Wuninitialized + KOKKOS_INTERNAL_COMPILER_WARNINGS = -Wall -Wunused-parameter -Wshadow -pedantic -Wsign-compare -Wtype-limits -Wuninitialized else ifeq ($(KOKKOS_INTERNAL_COMPILER_CRAY), 1) # TODO check if cray accepts GNU style warnings KOKKOS_INTERNAL_COMPILER_WARNINGS = else #gcc - KOKKOS_INTERNAL_COMPILER_WARNINGS = -Wall -Wshadow -pedantic -Wsign-compare -Wtype-limits -Wignored-qualifiers -Wempty-body -Wclobbered -Wuninitialized + KOKKOS_INTERNAL_COMPILER_WARNINGS = -Wall -Wunused-parameter -Wshadow -pedantic -Wsign-compare -Wtype-limits -Wignored-qualifiers -Wempty-body -Wclobbered -Wuninitialized endif endif endif @@ -230,7 +260,12 @@ ifeq ($(KOKKOS_INTERNAL_COMPILER_XL), 1) KOKKOS_INTERNAL_OPENMPTARGET_FLAG := -DKOKKOS_IBM_XL_OMP45_WORKAROUND -qsmp=omp -qoffload -qnoeh else ifeq ($(KOKKOS_INTERNAL_COMPILER_CLANG), 1) - KOKKOS_INTERNAL_OPENMPTARGET_FLAG := -DKOKKOS_BUG_WORKAROUND_IBM_CLANG_OMP45_VIEW_INIT -fopenmp-implicit-declare-target -fopenmp-targets=nvptx64-nvidia-cuda -fopenmp -fopenmp=libomp + #KOKKOS_INTERNAL_OPENMPTARGET_FLAG := -DKOKKOS_BUG_WORKAROUND_IBM_CLANG_OMP45_VIEW_INIT -fopenmp-implicit-declare-target -fopenmp-targets=nvptx64-nvidia-cuda -fopenmp -fopenmp=libomp + KOKKOS_INTERNAL_OPENMPTARGET_FLAG := -DKOKKOS_WORKAROUND_OPENMPTARGET_CLANG -fopenmp -fopenmp=libomp + KOKKOS_INTERNAL_OPENMPTARGET_LIB := -lomptarget + else + #Assume GCC + KOKKOS_INTERNAL_OPENMPTARGET_FLAG := -fopenmp -foffload=nvptx-none endif endif @@ -353,11 +388,8 @@ KOKKOS_INTERNAL_USE_ARCH_IBM := $(strip $(shell echo $(KOKKOS_INTERNAL_USE_ARCH_ KOKKOS_INTERNAL_USE_ARCH_AMDAVX := $(call kokkos_has_string,$(KOKKOS_ARCH),AMDAVX) KOKKOS_INTERNAL_USE_ARCH_RYZEN := $(call kokkos_has_string,$(KOKKOS_ARCH),Ryzen) KOKKOS_INTERNAL_USE_ARCH_EPYC := $(call kokkos_has_string,$(KOKKOS_ARCH),EPYC) -KOKKOS_INTERNAL_USE_ARCH_KAVERI := $(call kokkos_has_string,$(KOKKOS_ARCH),Kaveri) -KOKKOS_INTERNAL_USE_ARCH_CARRIZO := $(call kokkos_has_string,$(KOKKOS_ARCH),Carrizo) -KOKKOS_INTERNAL_USE_ARCH_FIJI := $(call kokkos_has_string,$(KOKKOS_ARCH),Fiji) -KOKKOS_INTERNAL_USE_ARCH_VEGA := $(call kokkos_has_string,$(KOKKOS_ARCH),Vega) -KOKKOS_INTERNAL_USE_ARCH_GFX901 := $(call kokkos_has_string,$(KOKKOS_ARCH),gfx901) +KOKKOS_INTERNAL_USE_ARCH_VEGA900 := $(call kokkos_has_string,$(KOKKOS_ARCH),Vega900) +KOKKOS_INTERNAL_USE_ARCH_VEGA906 := $(call kokkos_has_string,$(KOKKOS_ARCH),Vega906) # Any AVX? KOKKOS_INTERNAL_USE_ARCH_SSE42 := $(shell expr $(KOKKOS_INTERNAL_USE_ARCH_WSM)) @@ -430,6 +462,10 @@ tmp := $(call kokkos_append_header,'\#error "Do not include $(KOKKOS_CONFIG_HEAD tmp := $(call kokkos_append_header,'\#else') tmp := $(call kokkos_append_header,'\#define KOKKOS_CORE_CONFIG_H') tmp := $(call kokkos_append_header,'\#endif') + +tmp := $(call kokkos_append_header,"") +tmp := $(call kokkos_append_header,"\#define KOKKOS_VERSION $(KOKKOS_VERSION)") +tmp := $(call kokkos_append_header,"") tmp := $(call kokkos_append_header,"/* Execution Spaces */") @@ -442,9 +478,15 @@ ifeq ($(KOKKOS_INTERNAL_USE_ROCM), 1) tmp := $(call kokkos_append_header,'\#define KOKKOS_ENABLE_ROCM') tmp := $(call kokkos_append_header,'\#define KOKKOS_IMPL_ROCM_CLANG_WORKAROUND 1') endif +ifeq ($(KOKKOS_INTERNAL_USE_HIP), 1) + tmp := $(call kokkos_append_header,'\#define KOKKOS_ENABLE_HIP') +endif ifeq ($(KOKKOS_INTERNAL_USE_OPENMPTARGET), 1) tmp := $(call kokkos_append_header,'\#define KOKKOS_ENABLE_OPENMPTARGET') + ifeq ($(KOKKOS_INTERNAL_COMPILER_GCC), 1) + tmp := $(call kokkos_append_header,"\#define KOKKOS_WORKAROUND_OPENMPTARGET_GCC") + endif endif ifeq ($(KOKKOS_INTERNAL_USE_OPENMP), 1) @@ -455,10 +497,6 @@ ifeq ($(KOKKOS_INTERNAL_USE_PTHREADS), 1) tmp := $(call kokkos_append_header,"\#define KOKKOS_ENABLE_THREADS") endif -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 @@ -966,6 +1004,14 @@ endif # Figure out the architecture flag for Cuda. ifeq ($(KOKKOS_INTERNAL_USE_CUDA), 1) + KOKKOS_INTERNAL_USE_CUDA_ARCH=1 +endif +ifeq ($(KOKKOS_INTERNAL_USE_HIP), 1) + ifeq ($(KOKKOS_INTERNAL_COMPILER_NVCC), 1) + KOKKOS_INTERNAL_USE_CUDA_ARCH=1 + endif +endif +ifeq ($(KOKKOS_INTERNAL_USE_CUDA_ARCH), 1) ifeq ($(KOKKOS_INTERNAL_COMPILER_NVCC), 1) KOKKOS_INTERNAL_CUDA_ARCH_FLAG=-arch else ifeq ($(KOKKOS_INTERNAL_COMPILER_CLANG), 1) @@ -974,7 +1020,17 @@ ifeq ($(KOKKOS_INTERNAL_USE_CUDA), 1) else $(error Makefile.kokkos: CUDA is enabled but the compiler is neither NVCC nor Clang (got version string $(KOKKOS_CXX_VERSION)) ) endif + KOKKOS_INTERNAL_USE_CUDA_ARCH = 1 +endif +ifeq ($(KOKKOS_INTERNAL_USE_OPENMPTARGET), 1) + ifeq ($(KOKKOS_INTERNAL_COMPILER_CLANG), 1) + KOKKOS_INTERNAL_CUDA_ARCH_FLAG=-fopenmp-targets=nvptx64-nvidia-cuda -Xopenmp-target -march + endif + KOKKOS_INTERNAL_USE_CUDA_ARCH = 1 +endif + +ifeq ($(KOKKOS_INTERNAL_USE_CUDA_ARCH), 1) ifeq ($(KOKKOS_INTERNAL_USE_ARCH_KEPLER30), 1) tmp := $(call kokkos_append_header,"\#define KOKKOS_ARCH_KEPLER") tmp := $(call kokkos_append_header,"\#define KOKKOS_ARCH_KEPLER30") @@ -1042,55 +1098,49 @@ ifeq ($(KOKKOS_INTERNAL_USE_CUDA), 1) ifeq ($(KOKKOS_INTERNAL_COMPILER_NVCC), 1) KOKKOS_LDFLAGS += $(KOKKOS_INTERNAL_CUDA_ARCH_FLAG) endif + ifeq ($(KOKKOS_INTERNAL_COMPILER_CLANG), 1) + ifeq ($(KOKKOS_INTERNAL_USE_OPENMPTARGET), 1) + KOKKOS_LDFLAGS += $(KOKKOS_INTERNAL_CUDA_ARCH_FLAG) + endif + endif + endif + ifeq ($(KOKKOS_INTERNAL_USE_HIP), 1) + KOKKOS_CXXFLAGS += --expt-extended-lambda endif endif + # Figure out the architecture flag for ROCm. -ifeq ($(KOKKOS_INTERNAL_USE_ROCM), 1) +ifeq ($(KOKKOS_INTERNAL_USE_HIP), 1) # Lets start with adding architecture defines - ifeq ($(KOKKOS_INTERNAL_USE_ARCH_KAVERI), 1) - tmp := $(call kokkos_append_header,"\#define KOKKOS_ARCH_ROCM 701") - tmp := $(call kokkos_append_header,"\#define KOKKOS_ARCH_KAVERI") - KOKKOS_INTERNAL_ROCM_ARCH_FLAG := --amdgpu-target=gfx701 - endif - ifeq ($(KOKKOS_INTERNAL_USE_ARCH_CARRIZO), 1) - tmp := $(call kokkos_append_header,"\#define KOKKOS_ARCH_ROCM 801") - tmp := $(call kokkos_append_header,"\#define KOKKOS_ARCH_CARRIZO") - KOKKOS_INTERNAL_ROCM_ARCH_FLAG := --amdgpu-target=gfx801 - endif - ifeq ($(KOKKOS_INTERNAL_USE_ARCH_FIJI), 1) - tmp := $(call kokkos_append_header,"\#define KOKKOS_ARCH_ROCM 803") - tmp := $(call kokkos_append_header,"\#define KOKKOS_ARCH_FIJI") - KOKKOS_INTERNAL_ROCM_ARCH_FLAG := --amdgpu-target=gfx803 + ifeq ($(KOKKOS_INTERNAL_USE_ARCH_VEGA900), 1) + tmp := $(call kokkos_append_header,"\#define KOKKOS_ARCH_HIP 900") + tmp := $(call kokkos_append_header,"\#define KOKKOS_ARCH_VEGA900") + KOKKOS_INTERNAL_HIP_ARCH_FLAG := --amdgpu-target=gfx900 endif - ifeq ($(KOKKOS_INTERNAL_USE_ARCH_VEGA), 1) - tmp := $(call kokkos_append_header,"\#define KOKKOS_ARCH_ROCM 900") - tmp := $(call kokkos_append_header,"\#define KOKKOS_ARCH_VEGA") - KOKKOS_INTERNAL_ROCM_ARCH_FLAG := --amdgpu-target=gfx900 + ifeq ($(KOKKOS_INTERNAL_USE_ARCH_VEGA906), 1) + tmp := $(call kokkos_append_header,"\#define KOKKOS_ARCH_HIP 906") + tmp := $(call kokkos_append_header,"\#define KOKKOS_ARCH_VEGA906") + KOKKOS_INTERNAL_HIP_ARCH_FLAG := --amdgpu-target=gfx906 endif - ifeq ($(KOKKOS_INTERNAL_USE_ARCH_GFX901), 1) - tmp := $(call kokkos_append_header,"\#define KOKKOS_ARCH_ROCM 901") - tmp := $(call kokkos_append_header,"\#define KOKKOS_ARCH_GFX901") - KOKKOS_INTERNAL_ROCM_ARCH_FLAG := --amdgpu-target=gfx901 + + KOKKOS_SRC += $(wildcard $(KOKKOS_PATH)/core/src/HIP/*.cpp) + KOKKOS_HEADERS += $(wildcard $(KOKKOS_PATH)/core/src/HIP/*.hpp) + + KOKKOS_CXXFLAGS+=$(KOKKOS_INTERNAL_HIP_ARCH_FLAG) + KOKKOS_LDFLAGS+=$(KOKKOS_INTERNAL_HIP_ARCH_FLAG) + + ifeq ($(KOKKOS_INTERNAL_HIP_USE_RELOC), 1) + tmp := $(call kokkos_append_header,"\#define KOKKOS_ENABLE_HIP_RELOCATABLE_DEVICE_CODE") + KOKKOS_CXXFLAGS+=-fgpu-rdc + KOKKOS_LDFLAGS+=-fgpu-rdc + else + KOKKOS_CXXFLAGS+=-fno-gpu-rdc + KOKKOS_LDFLAGS+=-fno-gpu-rdc endif - - - KOKKOS_INTERNAL_HCC_PATH := $(shell which $(CXX)) - ROCM_HCC_PATH ?= $(KOKKOS_INTERNAL_HCC_PATH:/bin/clang++=) - - KOKKOS_CXXFLAGS += $(shell $(ROCM_HCC_PATH)/bin/hcc-config --cxxflags) - KOKKOS_LDFLAGS += $(shell $(ROCM_HCC_PATH)/bin/hcc-config --ldflags) -lhc_am -lm - KOKKOS_CXXLDFLAGS += $(shell $(ROCM_HCC_PATH)/bin/hcc-config --ldflags) -lhc_am -lm - KOKKOS_TPL_LIBRARY_NAMES += hc_am m - KOKKOS_LDFLAGS += $(KOKKOS_INTERNAL_ROCM_ARCH_FLAG) - - KOKKOS_SRC += $(wildcard $(KOKKOS_PATH)/core/src/ROCm/*.cpp) -ifeq ($(KOKKOS_INTERNAL_ENABLE_ETI), 1) - KOKKOS_SRC += $(wildcard $(KOKKOS_ETI_PATH)/ROCm/*.cpp) -endif - KOKKOS_HEADERS += $(wildcard $(KOKKOS_PATH)/core/src/ROCm/*.hpp) endif + KOKKOS_INTERNAL_LS_CONFIG := $(shell ls KokkosCore_config.h 2>&1) ifeq ($(KOKKOS_INTERNAL_LS_CONFIG), KokkosCore_config.h) @@ -1141,7 +1191,7 @@ endif endif ifeq ($(KOKKOS_INTERNAL_USE_OPENMPTARGET), 1) - KOKKOS_SRC += $(KOKKOS_PATH)/core/src/OpenMPTarget/Kokkos_OpenMPTarget_Exec.cpp $(KOKKOS_PATH)/core/src/OpenMPTarget/Kokkos_OpenMPTargetSpace.cpp + KOKKOS_SRC += $(wildcard $(KOKKOS_PATH)/core/src/OpenMPTarget/*.cpp) KOKKOS_HEADERS += $(wildcard $(KOKKOS_PATH)/core/src/OpenMPTarget/*.hpp) ifeq ($(KOKKOS_INTERNAL_USE_CUDA), 1) KOKKOS_CXXFLAGS += -Xcompiler $(KOKKOS_INTERNAL_OPENMPTARGET_FLAG) @@ -1149,6 +1199,7 @@ ifeq ($(KOKKOS_INTERNAL_USE_OPENMPTARGET), 1) KOKKOS_CXXFLAGS += $(KOKKOS_INTERNAL_OPENMPTARGET_FLAG) endif KOKKOS_LDFLAGS += $(KOKKOS_INTERNAL_OPENMPTARGET_FLAG) + KOKKOS_LIBS += $(KOKKOS_INTERNAL_OPENMPTARGET_LIB) endif ifeq ($(KOKKOS_INTERNAL_USE_OPENMP), 1) @@ -1178,22 +1229,6 @@ endif KOKKOS_TPL_LIBRARY_NAMES += pthread endif -ifeq ($(KOKKOS_INTERNAL_USE_QTHREADS), 1) - KOKKOS_SRC += $(wildcard $(KOKKOS_PATH)/core/src/Qthreads/*.cpp) - KOKKOS_HEADERS += $(wildcard $(KOKKOS_PATH)/core/src/Qthreads/*.hpp) - ifneq ($(KOKKOS_CMAKE), yes) - ifneq ($(QTHREADS_PATH),) - KOKKOS_CPPFLAGS += -I$(QTHREADS_PATH)/include - KOKKOS_LIBDIRS += -L$(QTHREADS_PATH)/lib - KOKKOS_CXXLDFLAGS += -L$(QTHREADS_PATH)/lib - KOKKOS_TPL_INCLUDE_DIRS += $(QTHREADS_PATH)/include - KOKKOS_TPL_LIBRARY_DIRS += $(QTHREADS_PATH)/lib64 - endif - KOKKOS_LIBS += -lqthread - KOKKOS_TPL_LIBRARY_NAMES += qthread - endif -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) diff --git a/lib/kokkos/Makefile.targets b/lib/kokkos/Makefile.targets index 0a1f522016..18e37a71f7 100644 --- a/lib/kokkos/Makefile.targets +++ b/lib/kokkos/Makefile.targets @@ -55,6 +55,17 @@ ifeq ($(KOKKOS_INTERNAL_ENABLE_ETI), 1) endif endif +ifeq ($(KOKKOS_INTERNAL_USE_HIP), 1) +Kokkos_HIP_Space.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_PATH)/core/src/HIP/Kokkos_HIP_Space.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_PATH)/core/src/HIP/Kokkos_HIP_Space.cpp +Kokkos_HIP_Instance.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_PATH)/core/src/HIP/Kokkos_HIP_Instance.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_PATH)/core/src/HIP/Kokkos_HIP_Instance.cpp +Kokkos_HIP_KernelLaunch.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_PATH)/core/src/HIP/Kokkos_HIP_KernelLaunch.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_PATH)/core/src/HIP/Kokkos_HIP_KernelLaunch.cpp +Kokkos_HIP_Locks.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_PATH)/core/src/HIP/Kokkos_HIP_Locks.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_PATH)/core/src/HIP/Kokkos_HIP_Locks.cpp +endif + ifeq ($(KOKKOS_INTERNAL_USE_ROCM), 1) Kokkos_ROCm_Exec.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_PATH)/core/src/ROCm/Kokkos_ROCm_Exec.cpp $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_PATH)/core/src/ROCm/Kokkos_ROCm_Exec.cpp @@ -79,13 +90,6 @@ ifeq ($(KOKKOS_INTERNAL_ENABLE_ETI), 1) endif endif -ifeq ($(KOKKOS_INTERNAL_USE_QTHREADS), 1) -Kokkos_QthreadsExec.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_PATH)/core/src/Qthreads/Kokkos_QthreadsExec.cpp - $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_PATH)/core/src/Qthreads/Kokkos_QthreadsExec.cpp -Kokkos_Qthreads_Task.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_PATH)/core/src/Qthreads/Kokkos_Qthreads_Task.cpp - $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_PATH)/core/src/Qthreads/Kokkos_Qthreads_Task.cpp -endif - ifeq ($(KOKKOS_INTERNAL_USE_OPENMP), 1) Kokkos_OpenMP_Exec.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_PATH)/core/src/OpenMP/Kokkos_OpenMP_Exec.cpp $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_PATH)/core/src/OpenMP/Kokkos_OpenMP_Exec.cpp @@ -106,10 +110,12 @@ 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 +Kokkos_OpenMPTarget_Instance.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_PATH)/core/src/OpenMPTarget/Kokkos_OpenMPTarget_Instance.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_PATH)/core/src/OpenMPTarget/Kokkos_OpenMPTarget_Instance.cpp Kokkos_OpenMPTargetSpace.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_PATH)/core/src/OpenMPTarget/Kokkos_OpenMPTargetSpace.cpp $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_PATH)/core/src/OpenMPTarget/Kokkos_OpenMPTargetSpace.cpp -#Kokkos_OpenMPTarget_Task.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_PATH)/core/src/OpenMPTarget/Kokkos_OpenMPTarget_Task.cpp -# $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_PATH)/core/src/OpenMPTarget/Kokkos_OpenMPTarget_Task.cpp +Kokkos_OpenMPTarget_Task.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_PATH)/core/src/OpenMPTarget/Kokkos_OpenMPTarget_Task.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_PATH)/core/src/OpenMPTarget/Kokkos_OpenMPTarget_Task.cpp endif Kokkos_HBWSpace.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_PATH)/core/src/impl/Kokkos_HBWSpace.cpp diff --git a/lib/kokkos/README.md b/lib/kokkos/README.md index 322dabfdab..a04df9eb9b 100644 --- a/lib/kokkos/README.md +++ b/lib/kokkos/README.md @@ -11,8 +11,8 @@ CUDA, HPX, OpenMP and Pthreads as backend programming models with several other backends in development. Kokkos Core is part of the Kokkos C++ Performance Portability Programming EcoSystem, -which also provides math kernels (https://github.com/kokkos/kokkos-kernels), as well as -profiling and debugging tools (https://github.com/kokkos/kokkos-tools). +which also provides math kernels (https://github.com/kokkos/kokkos-kernels), as well as +profiling and debugging tools (https://github.com/kokkos/kokkos-tools). # Learning about Kokkos @@ -23,7 +23,7 @@ For questions find us on Slack: https://kokkosteam.slack.com or open a github is For non-public questions send an email to crtrott(at)sandia.gov -A separate repository with extensive tutorial material can be found under +A separate repository with extensive tutorial material can be found under https://github.com/kokkos/kokkos-tutorials. Furthermore, the 'example/tutorial' directory provides step by step tutorial @@ -41,12 +41,12 @@ To learn more about Kokkos consider watching one of our presentations: # Contributing to Kokkos -We are open and try to encourage contributions from external developers. +We are open and try to encourage contributions from external developers. To do so please first open an issue describing the contribution and then issue a pull request against the develop branch. For larger features it may be good -to get guidance from the core development team first through the github issue. +to get guidance from the core development team first through the github issue. -Note that Kokkos Core is licensed under standard 3-clause BSD terms of use. +Note that Kokkos Core is licensed under standard 3-clause BSD terms of use. Which means contributing to Kokkos allows anyone else to use your contributions not just for public purposes but also for closed source commercial projects. For specifics see the LICENSE file contained in the repository or distribution. @@ -94,9 +94,9 @@ For specifics see the LICENSE file contained in the repository or distribution. * Intel 18.2.199 (with gcc 4.9.3) ### Primary tested compilers on ARM (Cavium ThunderX2) -* GCC 7.2.0 +* GCC 7.2.0 * ARM/Clang 18.4.0 - + ### Other compilers working: * X86: * Cygwin 2.1.0 64bit with gcc 4.9.3 @@ -110,47 +110,47 @@ For specifics see the LICENSE file contained in the repository or distribution. Primary tested compiler are passing in release mode -with warnings as errors. They also are tested with a comprehensive set of +with warnings as errors. They also are tested with a comprehensive set of backend combinations (i.e. OpenMP, Pthreads, Serial, OpenMP+Serial, ...). We are using the following set of flags: -* GCC: +* GCC: ```` - -Wall -Wshadow -pedantic + -Wall -Wunused-parameter -Wshadow -pedantic -Werror -Wsign-compare -Wtype-limits - -Wignored-qualifiers -Wempty-body + -Wignored-qualifiers -Wempty-body -Wclobbered -Wuninitialized ```` -* Intel: +* Intel: ```` - -Wall -Wshadow -pedantic - -Werror -Wsign-compare -Wtype-limits + -Wall -Wunused-parameter -Wshadow -pedantic + -Werror -Wsign-compare -Wtype-limits -Wuninitialized ```` -* Clang: +* Clang: ```` - -Wall -Wshadow -pedantic - -Werror -Wsign-compare -Wtype-limits + -Wall -Wunused-parameter -Wshadow -pedantic + -Werror -Wsign-compare -Wtype-limits -Wuninitialized - ```` + ```` -* NVCC: +* NVCC: ```` - -Wall -Wshadow -pedantic - -Werror -Wsign-compare -Wtype-limits + -Wall -Wunused-parameter -Wshadow -pedantic + -Werror -Wsign-compare -Wtype-limits -Wuninitialized ```` -Other compilers are tested occasionally, in particular when pushing from develop to +Other compilers are tested occasionally, in particular when pushing from develop to master branch. These are tested less rigorously without `-Werror` and only for a select set of backends. # Building and Installing Kokkos -Kokkos provide a CMake build system and a raw Makefile build system. +Kokkos provide a CMake build system and a raw Makefile build system. The CMake build system is strongly encouraged and will be the most rigorously supported in future releases. Full details are given in the [build instructions](BUILD.md). Basic setups are shown here: ## CMake -The best way to install Kokkos is using the CMake build system. Assuming Kokkos lives in `$srcdir`: +The best way to install Kokkos is using the CMake build system. Assuming Kokkos lives in `$srcdir`: ```` cmake $srcdir \ -DCMAKE_CXX_COMPILER=$path_to_compiler \ @@ -162,9 +162,9 @@ cmake $srcdir \ ```` then simply type `make install`. The Kokkos CMake package will then be installed in `$path_to_install` to be used by downstream packages. -To validate the Kokkos build, configure with +To validate the Kokkos build, configure with ```` - -DKokkos_ENABLE_TESTS=On + -DKokkos_ENABLE_TESTS=On ```` and run `make test` after completing the build. @@ -209,7 +209,7 @@ For a complete list of Kokkos options, run: spack info kokkos ```` Spack currently installs packages to a location determined by a unique hash. This hash name is not really "human readable". -Generally, Spack usage should never really require you to reference the computer-generated unique install folder. +Generally, Spack usage should never really require you to reference the computer-generated unique install folder. More details are given in the [build instructions](BUILD.md). If you must know, you can locate Spack Kokkos installations with: ```` spack find -p kokkos ... @@ -217,7 +217,7 @@ spack find -p kokkos ... where `...` is the unique spec identifying the particular Kokkos configuration and version. -## Raw Makefile +## Raw Makefile A bash script is provided to generate raw makefiles. To install Kokkos as a library create a build directory and run the following ```` @@ -240,33 +240,33 @@ changing the device type for which to build. For individual projects, it may be preferable to build Kokkos inline rather than link to an installed package. The main reason is that you may otherwise need many different configurations of Kokkos installed depending on the required compile time -features an application needs. For example there is only one default +features an application needs. For example there is only one default execution space, which means you need different installations to have OpenMP or Pthreads as the default space. Also for the CUDA backend there are certain -choices, such as allowing relocatable device code, which must be made at +choices, such as allowing relocatable device code, which must be made at installation time. Building Kokkos inline uses largely the same process -as compiling an application against an installed Kokkos library. +as compiling an application against an installed Kokkos library. For CMake, this means copying over the Kokkos source code into your project and adding `add_subdirectory(kokkos)` to your CMakeLists.txt. -For raw Makefiles, see the example benchmarks/bytes_and_flops/Makefile which can be used with an installed library and or an inline build. +For raw Makefiles, see the example benchmarks/bytes_and_flops/Makefile which can be used with an installed library and or an inline build. # Kokkos and CUDA UVM -Kokkos does support UVM as a specific memory space called CudaUVMSpace. -Allocations made with that space are accessible from host and device. +Kokkos does support UVM as a specific memory space called CudaUVMSpace. +Allocations made with that space are accessible from host and device. You can tell Kokkos to use that as the default space for Cuda allocations. In either case UVM comes with a number of restrictions: -* You can't access allocations on the host while a kernel is potentially -running. This will lead to segfaults. To avoid that you either need to +* You can't access allocations on the host while a kernel is potentially +running. This will lead to segfaults. To avoid that you either need to call Kokkos::Cuda::fence() (or just Kokkos::fence()), after kernels, or you can set the environment variable CUDA_LAUNCH_BLOCKING=1. -* In multi socket multi GPU machines without NVLINK, UVM defaults +* In multi socket multi GPU machines without NVLINK, UVM defaults to using zero copy allocations for technical reasons related to using multiple GPUs from the same process. If an executable doesn't do that (e.g. each -MPI rank of an application uses a single GPU [can be the same GPU for +MPI rank of an application uses a single GPU [can be the same GPU for multiple MPI ranks]) you can set CUDA_MANAGED_FORCE_DEVICE_ALLOC=1. -This will enforce proper UVM allocations, but can lead to errors if +This will enforce proper UVM allocations, but can lead to errors if more than a single GPU is used by a single process. diff --git a/lib/kokkos/algorithms/src/Kokkos_Random.hpp b/lib/kokkos/algorithms/src/Kokkos_Random.hpp index 078db18edd..0a79675236 100644 --- a/lib/kokkos/algorithms/src/Kokkos_Random.hpp +++ b/lib/kokkos/algorithms/src/Kokkos_Random.hpp @@ -537,6 +537,145 @@ struct rand > { } }; +template +class Random_XorShift1024_Pool; + +namespace Impl { + +template +struct Random_XorShift1024_State { + uint64_t state_[16]; + KOKKOS_DEFAULTED_FUNCTION + Random_XorShift1024_State() = default; + + template + KOKKOS_FUNCTION Random_XorShift1024_State(const StateViewType& v, + int state_idx) { + for (int i = 0; i < 16; i++) state_[i] = v(state_idx, i); + } + + KOKKOS_FUNCTION + uint64_t operator[](const int i) const { return state_[i]; } + + KOKKOS_FUNCTION + uint64_t& operator[](const int i) { return state_[i]; } +}; + +template <> +struct Random_XorShift1024_State { + uint64_t* state_; + const int stride_; + KOKKOS_FUNCTION + Random_XorShift1024_State() : state_(nullptr), stride_(1){}; + + template + KOKKOS_FUNCTION Random_XorShift1024_State(const StateViewType& v, + int state_idx) + : state_(&v(state_idx, 0)), stride_(v.stride_1()) {} + + KOKKOS_FUNCTION + uint64_t operator[](const int i) const { return state_[i * stride_]; } + + KOKKOS_FUNCTION + uint64_t& operator[](const int i) { return state_[i * stride_]; } +}; + +template +struct Random_XorShift1024_UseCArrayState : std::true_type {}; + +#ifdef KOKKOS_ENABLE_CUDA +template <> +struct Random_XorShift1024_UseCArrayState : std::false_type {}; +#endif +#ifdef KOKKOS_ENABLE_HIP +template <> +struct Random_XorShift1024_UseCArrayState + : std::false_type {}; +#endif +#ifdef KOKKOS_ENABLE_OPENMPTARGET +template <> +struct Random_XorShift1024_UseCArrayState + : std::false_type {}; +#endif + +template +struct Random_UniqueIndex { + using locks_view_type = View; + KOKKOS_FUNCTION + static int get_state_idx(const locks_view_type) { +#ifdef KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_HOST +#ifdef KOKKOS_ENABLE_DEPRECATED_CODE + const int i = ExecutionSpace::hardware_thread_id(); +#else + const int i = ExecutionSpace::impl_hardware_thread_id(); +#endif + return i; +#else + return 0; +#endif + } +}; + +#ifdef KOKKOS_ENABLE_CUDA +template <> +struct Random_UniqueIndex { + using locks_view_type = View; + KOKKOS_FUNCTION + static int get_state_idx(const locks_view_type& locks_) { +#ifdef __CUDA_ARCH__ + const int i_offset = + (threadIdx.x * blockDim.y + threadIdx.y) * blockDim.z + threadIdx.z; + int i = (((blockIdx.x * gridDim.y + blockIdx.y) * gridDim.z + blockIdx.z) * + blockDim.x * blockDim.y * blockDim.z + + i_offset) % + locks_.extent(0); + while (Kokkos::atomic_compare_exchange(&locks_(i), 0, 1)) { + i += blockDim.x * blockDim.y * blockDim.z; + if (i >= static_cast(locks_.extent(0))) { + i = i_offset; + } + } + return i; +#else + (void)locks_; + return 0; +#endif + } +}; +#endif + +#ifdef KOKKOS_ENABLE_HIP +template <> +struct Random_UniqueIndex { + using locks_view_type = View; + KOKKOS_FUNCTION + static int get_state_idx(const locks_view_type& locks_) { +#ifdef __HIP_DEVICE_COMPILE__ + const int i_offset = + (hipThreadIdx_x * hipBlockDim_y + hipThreadIdx_y) * hipBlockDim_z + + hipThreadIdx_z; + int i = (((hipBlockIdx_x * hipGridDim_y + hipBlockIdx_y) * hipGridDim_z + + hipBlockIdx_z) * + hipBlockDim_x * hipBlockDim_y * hipBlockDim_z + + i_offset) % + locks_.extent(0); + while (Kokkos::atomic_compare_exchange(&locks_(i), 0, 1)) { + i += hipBlockDim_x * hipBlockDim_y * hipBlockDim_z; + if (i >= static_cast(locks_.extent(0))) { + i = i_offset; + } + } + return i; +#else + (void)locks_; + return 0; +#endif + } +}; +#endif + +} // namespace Impl + template class Random_XorShift64_Pool; @@ -550,10 +689,10 @@ class Random_XorShift64 { public: typedef DeviceType device_type; - enum { MAX_URAND = 0xffffffffU }; - enum { MAX_URAND64 = 0xffffffffffffffffULL - 1 }; - enum { MAX_RAND = static_cast(0xffffffff / 2) }; - enum { MAX_RAND64 = static_cast(0xffffffffffffffffLL / 2 - 1) }; + constexpr static uint32_t MAX_URAND = std::numeric_limits::max(); + constexpr static uint64_t MAX_URAND64 = std::numeric_limits::max(); + constexpr static int32_t MAX_RAND = std::numeric_limits::max(); + constexpr static int64_t MAX_RAND64 = std::numeric_limits::max(); KOKKOS_INLINE_FUNCTION Random_XorShift64(uint64_t state, int state_idx = 0) @@ -637,10 +776,12 @@ class Random_XorShift64 { } KOKKOS_INLINE_FUNCTION - float frand() { return 1.0f * urand64() / MAX_URAND64; } + float frand() { return urand64() / static_cast(MAX_URAND64); } KOKKOS_INLINE_FUNCTION - float frand(const float& range) { return range * urand64() / MAX_URAND64; } + float frand(const float& range) { + return range * urand64() / static_cast(MAX_URAND64); + } KOKKOS_INLINE_FUNCTION float frand(const float& start, const float& end) { @@ -648,10 +789,12 @@ class Random_XorShift64 { } KOKKOS_INLINE_FUNCTION - double drand() { return 1.0 * urand64() / MAX_URAND64; } + double drand() { return urand64() / static_cast(MAX_URAND64); } KOKKOS_INLINE_FUNCTION - double drand(const double& range) { return range * urand64() / MAX_URAND64; } + double drand(const double& range) { + return range * urand64() / static_cast(MAX_URAND64); + } KOKKOS_INLINE_FUNCTION double drand(const double& start, const double& end) { @@ -662,6 +805,11 @@ class Random_XorShift64 { // number KOKKOS_INLINE_FUNCTION double normal() { +#ifndef __HIP_DEVICE_COMPILE__ // FIXME_HIP + using std::sqrt; +#else + using ::sqrt; +#endif double S = 2.0; double U; while (S >= 1.0) { @@ -669,7 +817,7 @@ class Random_XorShift64 { const double V = 2.0 * drand() - 1.0; S = U * U + V * V; } - return U * std::sqrt(-2.0 * log(S) / S); + return U * sqrt(-2.0 * log(S) / S); } KOKKOS_INLINE_FUNCTION @@ -681,9 +829,10 @@ class Random_XorShift64 { template class Random_XorShift64_Pool { private: - typedef View lock_type; + using execution_space = typename DeviceType::execution_space; + typedef View locks_type; typedef View state_data_type; - lock_type locks_; + locks_type locks_; state_data_type state_; int num_states_; @@ -695,11 +844,8 @@ class Random_XorShift64_Pool { Random_XorShift64_Pool() { num_states_ = 0; } Random_XorShift64_Pool(uint64_t seed) { num_states_ = 0; -#ifdef KOKKOS_ENABLE_DEPRECATED_CODE - init(seed, DeviceType::max_hardware_threads()); -#else - init(seed, DeviceType::impl_max_hardware_threads()); -#endif + + init(seed, execution_space().concurrency()); } KOKKOS_INLINE_FUNCTION @@ -719,11 +865,11 @@ class Random_XorShift64_Pool { num_states_ = num_states; - locks_ = lock_type("Kokkos::Random_XorShift64::locks", num_states_); + locks_ = locks_type("Kokkos::Random_XorShift64::locks", num_states_); state_ = state_data_type("Kokkos::Random_XorShift64::state", num_states_); typename state_data_type::HostMirror h_state = create_mirror_view(state_); - typename lock_type::HostMirror h_lock = create_mirror_view(locks_); + typename locks_type::HostMirror h_lock = create_mirror_view(locks_); // Execute on the HostMirror's default execution space. Random_XorShift64 @@ -746,13 +892,8 @@ class Random_XorShift64_Pool { KOKKOS_INLINE_FUNCTION Random_XorShift64 get_state() const { -#ifdef KOKKOS_ENABLE_DEPRECATED_CODE - const int i = DeviceType::hardware_thread_id(); - ; -#else - const int i = DeviceType::impl_hardware_thread_id(); - ; -#endif + const int i = + Impl::Random_UniqueIndex::get_state_idx(locks_); return Random_XorShift64(state_(i), i); } @@ -765,35 +906,35 @@ class Random_XorShift64_Pool { KOKKOS_INLINE_FUNCTION void free_state(const Random_XorShift64& state) const { state_(state.state_idx_) = state.state_; + locks_(state.state_idx_) = 0; } }; -template -class Random_XorShift1024_Pool; - template class Random_XorShift1024 { + using execution_space = typename DeviceType::execution_space; + private: int p_; const int state_idx_; - uint64_t state_[16]; + Impl::Random_XorShift1024_State< + Impl::Random_XorShift1024_UseCArrayState::value> + state_; friend class Random_XorShift1024_Pool; public: typedef Random_XorShift1024_Pool pool_type; typedef DeviceType device_type; - enum { MAX_URAND = 0xffffffffU }; - enum { MAX_URAND64 = 0xffffffffffffffffULL - 1 }; - enum { MAX_RAND = static_cast(0xffffffffU / 2) }; - enum { MAX_RAND64 = static_cast(0xffffffffffffffffULL / 2 - 1) }; + constexpr static uint32_t MAX_URAND = std::numeric_limits::max(); + constexpr static uint64_t MAX_URAND64 = std::numeric_limits::max(); + constexpr static int32_t MAX_RAND = std::numeric_limits::max(); + constexpr static int64_t MAX_RAND64 = std::numeric_limits::max(); KOKKOS_INLINE_FUNCTION Random_XorShift1024(const typename pool_type::state_data_type& state, int p, int state_idx = 0) - : p_(p), state_idx_(state_idx) { - for (int i = 0; i < 16; i++) state_[i] = state(state_idx, i); - } + : p_(p), state_idx_(state_idx), state_(state, state_idx) {} KOKKOS_INLINE_FUNCTION uint32_t urand() { @@ -876,10 +1017,12 @@ class Random_XorShift1024 { } KOKKOS_INLINE_FUNCTION - float frand() { return 1.0f * urand64() / MAX_URAND64; } + float frand() { return urand64() / static_cast(MAX_URAND64); } KOKKOS_INLINE_FUNCTION - float frand(const float& range) { return range * urand64() / MAX_URAND64; } + float frand(const float& range) { + return range * urand64() / static_cast(MAX_URAND64); + } KOKKOS_INLINE_FUNCTION float frand(const float& start, const float& end) { @@ -887,10 +1030,12 @@ class Random_XorShift1024 { } KOKKOS_INLINE_FUNCTION - double drand() { return 1.0 * urand64() / MAX_URAND64; } + double drand() { return urand64() / static_cast(MAX_URAND64); } KOKKOS_INLINE_FUNCTION - double drand(const double& range) { return range * urand64() / MAX_URAND64; } + double drand(const double& range) { + return range * urand64() / static_cast(MAX_URAND64); + } KOKKOS_INLINE_FUNCTION double drand(const double& start, const double& end) { @@ -901,6 +1046,11 @@ class Random_XorShift1024 { // number KOKKOS_INLINE_FUNCTION double normal() { +#ifndef KOKKOS_ENABLE_HIP // FIXME_HIP + using std::sqrt; +#else + using ::sqrt; +#endif double S = 2.0; double U; while (S >= 1.0) { @@ -908,7 +1058,7 @@ class Random_XorShift1024 { const double V = 2.0 * drand() - 1.0; S = U * U + V * V; } - return U * std::sqrt(-2.0 * log(S) / S); + return U * sqrt(-2.0 * log(S) / S); } KOKKOS_INLINE_FUNCTION @@ -920,10 +1070,12 @@ class Random_XorShift1024 { template class Random_XorShift1024_Pool { private: + using execution_space = typename DeviceType::execution_space; + typedef View locks_type; typedef View int_view_type; typedef View state_data_type; - int_view_type locks_; + locks_type locks_; state_data_type state_; int_view_type p_; int num_states_; @@ -939,11 +1091,8 @@ class Random_XorShift1024_Pool { inline Random_XorShift1024_Pool(uint64_t seed) { num_states_ = 0; -#ifdef KOKKOS_ENABLE_DEPRECATED_CODE - init(seed, DeviceType::max_hardware_threads()); -#else - init(seed, DeviceType::impl_max_hardware_threads()); -#endif + + init(seed, execution_space().concurrency()); } KOKKOS_INLINE_FUNCTION @@ -965,12 +1114,12 @@ class Random_XorShift1024_Pool { inline void init(uint64_t seed, int num_states) { if (seed == 0) seed = uint64_t(1318319); num_states_ = num_states; - locks_ = int_view_type("Kokkos::Random_XorShift1024::locks", num_states_); + locks_ = locks_type("Kokkos::Random_XorShift1024::locks", num_states_); state_ = state_data_type("Kokkos::Random_XorShift1024::state", num_states_); p_ = int_view_type("Kokkos::Random_XorShift1024::p", num_states_); typename state_data_type::HostMirror h_state = create_mirror_view(state_); - typename int_view_type::HostMirror h_lock = create_mirror_view(locks_); + typename locks_type::HostMirror h_lock = create_mirror_view(locks_); typename int_view_type::HostMirror h_p = create_mirror_view(p_); // Execute on the HostMirror's default execution space. @@ -997,11 +1146,8 @@ class Random_XorShift1024_Pool { KOKKOS_INLINE_FUNCTION Random_XorShift1024 get_state() const { -#ifdef KOKKOS_ENABLE_DEPRECATED_CODE - const int i = DeviceType::hardware_thread_id(); -#else - const int i = DeviceType::impl_hardware_thread_id(); -#endif + const int i = + Impl::Random_UniqueIndex::get_state_idx(locks_); return Random_XorShift1024(state_, p_(i), i); }; @@ -1014,482 +1160,11 @@ class Random_XorShift1024_Pool { KOKKOS_INLINE_FUNCTION void free_state(const Random_XorShift1024& state) const { for (int i = 0; i < 16; i++) state_(state.state_idx_, i) = state.state_[i]; - p_(state.state_idx_) = state.p_; + p_(state.state_idx_) = state.p_; + locks_(state.state_idx_) = 0; } }; -#if defined(KOKKOS_ENABLE_CUDA) && defined(__CUDACC__) - -template <> -class Random_XorShift1024 { - private: - int p_; - const int state_idx_; - uint64_t* state_; - const int stride_; - friend class Random_XorShift1024_Pool; - - public: - typedef Kokkos::Cuda device_type; - typedef Random_XorShift1024_Pool pool_type; - - enum { MAX_URAND = 0xffffffffU }; - enum { MAX_URAND64 = 0xffffffffffffffffULL - 1 }; - enum { MAX_RAND = static_cast(0xffffffffU / 2) }; - enum { MAX_RAND64 = static_cast(0xffffffffffffffffULL / 2 - 1) }; - - KOKKOS_INLINE_FUNCTION - Random_XorShift1024(const typename pool_type::state_data_type& state, int p, - int state_idx = 0) - : p_(p), - state_idx_(state_idx), - state_(&state(state_idx, 0)), - stride_(state.stride_1()) {} - - KOKKOS_INLINE_FUNCTION - uint32_t urand() { - uint64_t state_0 = state_[p_ * stride_]; - uint64_t state_1 = state_[(p_ = (p_ + 1) & 15) * stride_]; - state_1 ^= state_1 << 31; - state_1 ^= state_1 >> 11; - state_0 ^= state_0 >> 30; - uint64_t tmp = - (state_[p_ * stride_] = state_0 ^ state_1) * 1181783497276652981ULL; - tmp = tmp >> 16; - return static_cast(tmp & MAX_URAND); - } - - KOKKOS_INLINE_FUNCTION - uint64_t urand64() { - uint64_t state_0 = state_[p_ * stride_]; - uint64_t state_1 = state_[(p_ = (p_ + 1) & 15) * stride_]; - state_1 ^= state_1 << 31; - state_1 ^= state_1 >> 11; - state_0 ^= state_0 >> 30; - return ((state_[p_ * stride_] = state_0 ^ state_1) * - 1181783497276652981LL) - - 1; - } - - KOKKOS_INLINE_FUNCTION - uint32_t urand(const uint32_t& range) { - const uint32_t max_val = (MAX_URAND / range) * range; - uint32_t tmp = urand(); - while (tmp >= max_val) urand(); - return tmp % range; - } - - KOKKOS_INLINE_FUNCTION - uint32_t urand(const uint32_t& start, const uint32_t& end) { - return urand(end - start) + start; - } - - KOKKOS_INLINE_FUNCTION - uint64_t urand64(const uint64_t& range) { - const uint64_t max_val = (MAX_URAND64 / range) * range; - uint64_t tmp = urand64(); - while (tmp >= max_val) urand64(); - return tmp % range; - } - - KOKKOS_INLINE_FUNCTION - uint64_t urand64(const uint64_t& start, const uint64_t& end) { - return urand64(end - start) + start; - } - - KOKKOS_INLINE_FUNCTION - int rand() { return static_cast(urand() / 2); } - - KOKKOS_INLINE_FUNCTION - int rand(const int& range) { - const int max_val = (MAX_RAND / range) * range; - int tmp = rand(); - while (tmp >= max_val) rand(); - return tmp % range; - } - - KOKKOS_INLINE_FUNCTION - int rand(const int& start, const int& end) { - return rand(end - start) + start; - } - - KOKKOS_INLINE_FUNCTION - int64_t rand64() { return static_cast(urand64() / 2); } - - KOKKOS_INLINE_FUNCTION - int64_t rand64(const int64_t& range) { - const int64_t max_val = (MAX_RAND64 / range) * range; - int64_t tmp = rand64(); - while (tmp >= max_val) rand64(); - return tmp % range; - } - - KOKKOS_INLINE_FUNCTION - int64_t rand64(const int64_t& start, const int64_t& end) { - return rand64(end - start) + start; - } - - KOKKOS_INLINE_FUNCTION - float frand() { return 1.0f * urand64() / MAX_URAND64; } - - KOKKOS_INLINE_FUNCTION - float frand(const float& range) { return range * urand64() / MAX_URAND64; } - - KOKKOS_INLINE_FUNCTION - float frand(const float& start, const float& end) { - return frand(end - start) + start; - } - - KOKKOS_INLINE_FUNCTION - double drand() { return 1.0 * urand64() / MAX_URAND64; } - - KOKKOS_INLINE_FUNCTION - double drand(const double& range) { return range * urand64() / MAX_URAND64; } - - KOKKOS_INLINE_FUNCTION - double drand(const double& start, const double& end) { - return frand(end - start) + start; - } - - // Marsaglia polar method for drawing a standard normal distributed random - // number - KOKKOS_INLINE_FUNCTION - double normal() { - double S = 2.0; - double U; - while (S >= 1.0) { - U = 2.0 * drand() - 1.0; - const double V = 2.0 * drand() - 1.0; - S = U * U + V * V; - } - return U * std::sqrt(-2.0 * log(S) / S); - } - - KOKKOS_INLINE_FUNCTION - double normal(const double& mean, const double& std_dev = 1.0) { - return mean + normal() * std_dev; - } -}; - -template <> -inline Random_XorShift64_Pool::Random_XorShift64_Pool( - uint64_t seed) { - num_states_ = 0; - init(seed, 4 * 32768); -} - -template <> -KOKKOS_INLINE_FUNCTION Random_XorShift64 -Random_XorShift64_Pool::get_state() const { -#ifdef __CUDA_ARCH__ - const int i_offset = - (threadIdx.x * blockDim.y + threadIdx.y) * blockDim.z + threadIdx.z; - int i = (((blockIdx.x * gridDim.y + blockIdx.y) * gridDim.z + blockIdx.z) * - blockDim.x * blockDim.y * blockDim.z + - i_offset) % - num_states_; - while (Kokkos::atomic_compare_exchange(&locks_(i), 0, 1)) { - i += blockDim.x * blockDim.y * blockDim.z; - if (i >= num_states_) { - i = i_offset; - } - } - - return Random_XorShift64(state_(i), i); -#else - return Random_XorShift64(state_(0), 0); -#endif -} - -template <> -KOKKOS_INLINE_FUNCTION void Random_XorShift64_Pool::free_state( - const Random_XorShift64& state) const { - state_(state.state_idx_) = state.state_; -#ifdef __CUDA_ARCH__ - locks_(state.state_idx_) = 0; - return; -#endif -} - -template <> -inline Random_XorShift1024_Pool::Random_XorShift1024_Pool( - uint64_t seed) { - num_states_ = 0; - init(seed, 4 * 32768); -} - -template <> -KOKKOS_INLINE_FUNCTION Random_XorShift1024 -Random_XorShift1024_Pool::get_state() const { -#ifdef __CUDA_ARCH__ - const int i_offset = - (threadIdx.x * blockDim.y + threadIdx.y) * blockDim.z + threadIdx.z; - int i = (((blockIdx.x * gridDim.y + blockIdx.y) * gridDim.z + blockIdx.z) * - blockDim.x * blockDim.y * blockDim.z + - i_offset) % - num_states_; - while (Kokkos::atomic_compare_exchange(&locks_(i), 0, 1)) { - i += blockDim.x * blockDim.y * blockDim.z; - if (i >= num_states_) { - i = i_offset; - } - } - - return Random_XorShift1024(state_, p_(i), i); -#else - return Random_XorShift1024(state_, p_(0), 0); -#endif -} - -template <> -KOKKOS_INLINE_FUNCTION void Random_XorShift1024_Pool::free_state( - const Random_XorShift1024& state) const { - for (int i = 0; i < 16; i++) state_(state.state_idx_, i) = state.state_[i]; -#ifdef __CUDA_ARCH__ - locks_(state.state_idx_) = 0; - return; -#endif -} - -#endif - -#if defined(KOKKOS_ENABLE_ROCM) - -template <> -class Random_XorShift1024 { - private: - int p_; - const int state_idx_; - uint64_t* state_; - const int stride_; - friend class Random_XorShift1024_Pool; - - public: - typedef Kokkos::Experimental::ROCm device_type; - typedef Random_XorShift1024_Pool pool_type; - - enum { MAX_URAND = 0xffffffffU }; - enum { MAX_URAND64 = 0xffffffffffffffffULL - 1 }; - enum { MAX_RAND = static_cast(0xffffffffU / 2) }; - enum { MAX_RAND64 = static_cast(0xffffffffffffffffULL / 2 - 1) }; - - KOKKOS_INLINE_FUNCTION - Random_XorShift1024(const typename pool_type::state_data_type& state, int p, - int state_idx = 0) - : p_(p), - state_idx_(state_idx), - state_(&state(state_idx, 0)), - stride_(state.stride_1()) {} - - KOKKOS_INLINE_FUNCTION - uint32_t urand() { - uint64_t state_0 = state_[p_ * stride_]; - uint64_t state_1 = state_[(p_ = (p_ + 1) & 15) * stride_]; - state_1 ^= state_1 << 31; - state_1 ^= state_1 >> 11; - state_0 ^= state_0 >> 30; - uint64_t tmp = - (state_[p_ * stride_] = state_0 ^ state_1) * 1181783497276652981ULL; - tmp = tmp >> 16; - return static_cast(tmp & MAX_URAND); - } - - KOKKOS_INLINE_FUNCTION - uint64_t urand64() { - uint64_t state_0 = state_[p_ * stride_]; - uint64_t state_1 = state_[(p_ = (p_ + 1) & 15) * stride_]; - state_1 ^= state_1 << 31; - state_1 ^= state_1 >> 11; - state_0 ^= state_0 >> 30; - return ((state_[p_ * stride_] = state_0 ^ state_1) * - 1181783497276652981LL) - - 1; - } - - KOKKOS_INLINE_FUNCTION - uint32_t urand(const uint32_t& range) { - const uint32_t max_val = (MAX_URAND / range) * range; - uint32_t tmp = urand(); - while (tmp >= max_val) urand(); - return tmp % range; - } - - KOKKOS_INLINE_FUNCTION - uint32_t urand(const uint32_t& start, const uint32_t& end) { - return urand(end - start) + start; - } - - KOKKOS_INLINE_FUNCTION - uint64_t urand64(const uint64_t& range) { - const uint64_t max_val = (MAX_URAND64 / range) * range; - uint64_t tmp = urand64(); - while (tmp >= max_val) urand64(); - return tmp % range; - } - - KOKKOS_INLINE_FUNCTION - uint64_t urand64(const uint64_t& start, const uint64_t& end) { - return urand64(end - start) + start; - } - - KOKKOS_INLINE_FUNCTION - int rand() { return static_cast(urand() / 2); } - - KOKKOS_INLINE_FUNCTION - int rand(const int& range) { - const int max_val = (MAX_RAND / range) * range; - int tmp = rand(); - while (tmp >= max_val) rand(); - return tmp % range; - } - - KOKKOS_INLINE_FUNCTION - int rand(const int& start, const int& end) { - return rand(end - start) + start; - } - - KOKKOS_INLINE_FUNCTION - int64_t rand64() { return static_cast(urand64() / 2); } - - KOKKOS_INLINE_FUNCTION - int64_t rand64(const int64_t& range) { - const int64_t max_val = (MAX_RAND64 / range) * range; - int64_t tmp = rand64(); - while (tmp >= max_val) rand64(); - return tmp % range; - } - - KOKKOS_INLINE_FUNCTION - int64_t rand64(const int64_t& start, const int64_t& end) { - return rand64(end - start) + start; - } - - KOKKOS_INLINE_FUNCTION - float frand() { return 1.0f * urand64() / MAX_URAND64; } - - KOKKOS_INLINE_FUNCTION - float frand(const float& range) { return range * urand64() / MAX_URAND64; } - - KOKKOS_INLINE_FUNCTION - float frand(const float& start, const float& end) { - return frand(end - start) + start; - } - - KOKKOS_INLINE_FUNCTION - double drand() { return 1.0 * urand64() / MAX_URAND64; } - - KOKKOS_INLINE_FUNCTION - double drand(const double& range) { return range * urand64() / MAX_URAND64; } - - KOKKOS_INLINE_FUNCTION - double drand(const double& start, const double& end) { - return frand(end - start) + start; - } - - // Marsaglia polar method for drawing a standard normal distributed random - // number - KOKKOS_INLINE_FUNCTION - double normal() { - double S = 2.0; - double U; - while (S >= 1.0) { - U = 2.0 * drand() - 1.0; - const double V = 2.0 * drand() - 1.0; - S = U * U + V * V; - } - return U * std::sqrt(-2.0 * log(S) / S); - } - - KOKKOS_INLINE_FUNCTION - double normal(const double& mean, const double& std_dev = 1.0) { - return mean + normal() * std_dev; - } -}; - -template <> -inline Random_XorShift64_Pool< - Kokkos::Experimental::ROCm>::Random_XorShift64_Pool(uint64_t seed) { - num_states_ = 0; - init(seed, 4 * 32768); -} - -template <> -KOKKOS_INLINE_FUNCTION Random_XorShift64 -Random_XorShift64_Pool::get_state() const { -#ifdef __HCC_ACCELERATOR__ - const int i_offset = - (threadIdx_x * blockDim_y + threadIdx_y) * blockDim_z + threadIdx_z; - int i = (((blockIdx_x * gridDim_y + blockIdx_y) * gridDim_z + blockIdx_z) * - blockDim_x * blockDim_y * blockDim_z + - i_offset) % - num_states_; - while (Kokkos::atomic_compare_exchange(&locks_(i), 0, 1)) { - i += blockDim_x * blockDim_y * blockDim_z; - if (i >= num_states_) { - i = i_offset; - } - } - - return Random_XorShift64(state_(i), i); -#else - return Random_XorShift64(state_(0), 0); -#endif -} - -template <> -KOKKOS_INLINE_FUNCTION void -Random_XorShift64_Pool::free_state( - const Random_XorShift64& state) const { -#ifdef __HCC_ACCELERATOR__ - state_(state.state_idx_) = state.state_; - locks_(state.state_idx_) = 0; - return; -#endif -} - -template <> -inline Random_XorShift1024_Pool< - Kokkos::Experimental::ROCm>::Random_XorShift1024_Pool(uint64_t seed) { - num_states_ = 0; - init(seed, 4 * 32768); -} - -template <> -KOKKOS_INLINE_FUNCTION Random_XorShift1024 -Random_XorShift1024_Pool::get_state() const { -#ifdef __HCC_ACCELERATOR__ - const int i_offset = - (threadIdx_x * blockDim_y + threadIdx_y) * blockDim_z + threadIdx_z; - int i = (((blockIdx_x * gridDim_y + blockIdx_y) * gridDim_z + blockIdx_z) * - blockDim_x * blockDim_y * blockDim_z + - i_offset) % - num_states_; - while (Kokkos::atomic_compare_exchange(&locks_(i), 0, 1)) { - i += blockDim_x * blockDim_y * blockDim_z; - if (i >= num_states_) { - i = i_offset; - } - } - - return Random_XorShift1024(state_, p_(i), i); -#else - return Random_XorShift1024(state_, p_(0), 0); -#endif -} - -template <> -KOKKOS_INLINE_FUNCTION void -Random_XorShift1024_Pool::free_state( - const Random_XorShift1024& state) const { -#ifdef __HCC_ACCELERATOR__ - for (int i = 0; i < 16; i++) state_(state.state_idx_, i) = state.state_[i]; - locks_(state.state_idx_) = 0; - return; -#endif -} - -#endif - namespace Impl { template 0) - parallel_for((LDA + 127) / 128, + parallel_for("Kokkos::fill_random", (LDA + 127) / 128, Impl::fill_random_functor_range( a, g, range)); @@ -2055,7 +1730,7 @@ void fill_random(ViewType a, RandomPool g, typename ViewType::const_value_type end) { int64_t LDA = a.extent(0); if (LDA > 0) - parallel_for((LDA + 127) / 128, + parallel_for("Kokkos::fill_random", (LDA + 127) / 128, Impl::fill_random_functor_begin_end( a, g, begin, end)); diff --git a/lib/kokkos/algorithms/src/Kokkos_Sort.hpp b/lib/kokkos/algorithms/src/Kokkos_Sort.hpp index b7a988361f..1c79a505bb 100644 --- a/lib/kokkos/algorithms/src/Kokkos_Sort.hpp +++ b/lib/kokkos/algorithms/src/Kokkos_Sort.hpp @@ -201,7 +201,7 @@ class BinSort { bool sort_within_bins; public: - BinSort() {} + BinSort() = default; //---------------------------------------- // Constructor: takes the keys, the binning_operator and optionally whether to @@ -327,7 +327,7 @@ class BinSort { Kokkos::RangePolicy(0, len), functor); } - Kokkos::fence(); + execution_space().fence(); } template @@ -349,14 +349,14 @@ class BinSort { public: KOKKOS_INLINE_FUNCTION - void operator()(const bin_count_tag& tag, const int& i) const { + void operator()(const bin_count_tag& /*tag*/, const int i) const { const int j = range_begin + i; bin_count_atomic(bin_op.bin(keys, j))++; } KOKKOS_INLINE_FUNCTION - void operator()(const bin_offset_tag& tag, const int& i, value_type& offset, - const bool& final) const { + void operator()(const bin_offset_tag& /*tag*/, const int i, + value_type& offset, const bool& final) const { if (final) { bin_offsets(i) = offset; } @@ -364,7 +364,7 @@ class BinSort { } KOKKOS_INLINE_FUNCTION - void operator()(const bin_binning_tag& tag, const int& i) const { + void operator()(const bin_binning_tag& /*tag*/, const int i) const { const int j = range_begin + i; const int bin = bin_op.bin(keys, j); const int count = bin_count_atomic(bin)++; @@ -373,7 +373,7 @@ class BinSort { } KOKKOS_INLINE_FUNCTION - void operator()(const bin_sort_bins_tag& tag, const int& i) const { + void operator()(const bin_sort_bins_tag& /*tag*/, const int i) const { auto bin_size = bin_count_const(i); if (bin_size <= 1) return; int upper_bound = bin_offsets(i) + bin_size; @@ -381,7 +381,7 @@ class BinSort { while (!sorted) { sorted = true; int old_idx = sort_order(bin_offsets(i)); - int new_idx; + int new_idx = 0; for (int k = bin_offsets(i) + 1; k < upper_bound; k++) { new_idx = sort_order(k); @@ -446,7 +446,7 @@ struct BinOp3D { typename KeyViewType::non_const_value_type range_[3]; typename KeyViewType::non_const_value_type min_[3]; - BinOp3D() {} + BinOp3D() = default; BinOp3D(int max_bins__[], typename KeyViewType::const_value_type min[], typename KeyViewType::const_value_type max[]) { diff --git a/lib/kokkos/algorithms/unit_tests/CMakeLists.txt b/lib/kokkos/algorithms/unit_tests/CMakeLists.txt index 6fb08ce2ed..e3563a8b98 100644 --- a/lib/kokkos/algorithms/unit_tests/CMakeLists.txt +++ b/lib/kokkos/algorithms/unit_tests/CMakeLists.txt @@ -20,16 +20,38 @@ KOKKOS_ADD_TEST_LIBRARY( HEADERS ${GTEST_SOURCE_DIR}/gtest/gtest.h SOURCES ${GTEST_SOURCE_DIR}/gtest/gtest-all.cc ) -KOKKOS_TARGET_COMPILE_DEFINITIONS(kokkosalgorithms_gtest PUBLIC "-DGTEST_HAS_PTHREAD=0") +# WORKAROUND FOR HIPCC +IF(Kokkos_ENABLE_HIP) + TARGET_COMPILE_DEFINITIONS(kokkosalgorithms_gtest PUBLIC "-DGTEST_HAS_PTHREAD=0 --amdgpu-target=gfx906") +ELSE() + TARGET_COMPILE_DEFINITIONS(kokkosalgorithms_gtest PUBLIC "-DGTEST_HAS_PTHREAD=0") +ENDIF() + +TARGET_COMPILE_FEATURES(kokkosalgorithms_gtest PUBLIC cxx_std_11) SET(SOURCES - UnitTestMain.cpp - TestCuda.cpp - ) + UnitTestMain.cpp +) IF(Kokkos_ENABLE_OPENMP) LIST( APPEND SOURCES TestOpenMP.cpp + TestOpenMP_Sort1D.cpp + TestOpenMP_Sort3D.cpp + TestOpenMP_SortDynamicView.cpp + TestOpenMP_Random.cpp + ) +ENDIF() + +IF(Kokkos_ENABLE_HIP) + LIST( APPEND SOURCES + TestHIP.cpp + ) +ENDIF() + +IF(Kokkos_ENABLE_CUDA) + LIST( APPEND SOURCES + TestCuda.cpp ) ENDIF() diff --git a/lib/kokkos/algorithms/unit_tests/Makefile b/lib/kokkos/algorithms/unit_tests/Makefile index 3c862d03dc..4a192b08ec 100644 --- a/lib/kokkos/algorithms/unit_tests/Makefile +++ b/lib/kokkos/algorithms/unit_tests/Makefile @@ -44,7 +44,7 @@ ifeq ($(KOKKOS_INTERNAL_USE_PTHREADS), 1) endif ifeq ($(KOKKOS_INTERNAL_USE_OPENMP), 1) - OBJ_OPENMP = TestOpenMP.o UnitTestMain.o gtest-all.o + OBJ_OPENMP = TestOpenMP.o TestOpenMP_Random.o TestOpenMP_Sort1D.o TestOpenMP_Sort3D.o TestOpenMP_SortDynamicView.o UnitTestMain.o gtest-all.o TARGETS += KokkosAlgorithms_UnitTest_OpenMP TEST_TARGETS += test-openmp endif diff --git a/lib/kokkos/algorithms/unit_tests/TestCuda.cpp b/lib/kokkos/algorithms/unit_tests/TestCuda.cpp index ab727b0326..86cee61f64 100644 --- a/lib/kokkos/algorithms/unit_tests/TestCuda.cpp +++ b/lib/kokkos/algorithms/unit_tests/TestCuda.cpp @@ -59,11 +59,15 @@ namespace Test { void cuda_test_random_xorshift64(int num_draws) { - Impl::test_random >(num_draws); + Impl::test_random>(num_draws); + Impl::test_random>>(num_draws); } void cuda_test_random_xorshift1024(int num_draws) { - Impl::test_random >(num_draws); + Impl::test_random>(num_draws); + Impl::test_random>>(num_draws); } #define CUDA_RANDOM_XORSHIFT64(num_draws) \ diff --git a/lib/kokkos/algorithms/unit_tests/TestHIP.cpp b/lib/kokkos/algorithms/unit_tests/TestHIP.cpp new file mode 100644 index 0000000000..5e5ccb6a2e --- /dev/null +++ b/lib/kokkos/algorithms/unit_tests/TestHIP.cpp @@ -0,0 +1,83 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// 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 NTESS "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 NTESS 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_HIP + +#include +#include +#include + +#include + +#include + +#include +#include + +namespace Test { + +void hip_test_random_xorshift64(size_t num_draws) { + Impl::test_random>( + num_draws); + Impl::test_random>>(num_draws); +} + +void hip_test_random_xorshift1024(size_t num_draws) { + Impl::test_random< + Kokkos::Random_XorShift1024_Pool>(num_draws); + Impl::test_random>>(num_draws); +} + +TEST(hip, Random_XorShift64) { hip_test_random_xorshift64(132141141); } +TEST(hip, Random_XorShift1024_0) { hip_test_random_xorshift1024(52428813); } +TEST(hip, SortUnsigned) { + Impl::test_sort(171); +} +} // namespace Test +#else +void KOKKOS_ALGORITHMS_UNITTESTS_TESTHIP_PREVENT_LINK_ERROR() {} +#endif /* #ifdef KOKKOS_ENABLE_HIP */ diff --git a/lib/kokkos/algorithms/unit_tests/TestOpenMP.cpp b/lib/kokkos/algorithms/unit_tests/TestOpenMP.cpp index 3a9e306014..5ded3ce390 100644 --- a/lib/kokkos/algorithms/unit_tests/TestOpenMP.cpp +++ b/lib/kokkos/algorithms/unit_tests/TestOpenMP.cpp @@ -55,30 +55,8 @@ namespace Test { -#define OPENMP_RANDOM_XORSHIFT64(num_draws) \ - TEST(openmp, Random_XorShift64) { \ - Impl::test_random >( \ - num_draws); \ - } +TEST(openmp, SortIssue1160) { Impl::test_issue_1160_sort(); } -#define OPENMP_RANDOM_XORSHIFT1024(num_draws) \ - TEST(openmp, Random_XorShift1024) { \ - Impl::test_random >( \ - num_draws); \ - } - -#define OPENMP_SORT_UNSIGNED(size) \ - TEST(openmp, SortUnsigned) { \ - Impl::test_sort(size); \ - } - -OPENMP_RANDOM_XORSHIFT64(10240000) -OPENMP_RANDOM_XORSHIFT1024(10130144) -OPENMP_SORT_UNSIGNED(171) - -#undef OPENMP_RANDOM_XORSHIFT64 -#undef OPENMP_RANDOM_XORSHIFT1024 -#undef OPENMP_SORT_UNSIGNED } // namespace Test #else void KOKKOS_ALGORITHMS_UNITTESTS_TESTOPENMP_PREVENT_LINK_ERROR() {} diff --git a/lib/kokkos/algorithms/unit_tests/TestOpenMP_Random.cpp b/lib/kokkos/algorithms/unit_tests/TestOpenMP_Random.cpp new file mode 100644 index 0000000000..1ca8e0a828 --- /dev/null +++ b/lib/kokkos/algorithms/unit_tests/TestOpenMP_Random.cpp @@ -0,0 +1,77 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// 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 NTESS "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 NTESS 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_OPENMP + +#include +#include + +//---------------------------------------------------------------------------- +#include +#include + +namespace Test { + +#define OPENMP_RANDOM_XORSHIFT64(num_draws) \ + TEST(openmp, Random_XorShift64) { \ + Impl::test_random >( \ + num_draws); \ + } + +#define OPENMP_RANDOM_XORSHIFT1024(num_draws) \ + TEST(openmp, Random_XorShift1024) { \ + Impl::test_random >( \ + num_draws); \ + } + +OPENMP_RANDOM_XORSHIFT64(10240000) +OPENMP_RANDOM_XORSHIFT1024(10130144) + +#undef OPENMP_RANDOM_XORSHIFT64 +#undef OPENMP_RANDOM_XORSHIFT1024 +} // namespace Test +#else +void KOKKOS_ALGORITHMS_UNITTESTS_TESTOPENMP_PREVENT_LINK_ERROR() {} +#endif diff --git a/lib/kokkos/algorithms/unit_tests/TestOpenMP_Sort1D.cpp b/lib/kokkos/algorithms/unit_tests/TestOpenMP_Sort1D.cpp new file mode 100644 index 0000000000..a9b2010ad0 --- /dev/null +++ b/lib/kokkos/algorithms/unit_tests/TestOpenMP_Sort1D.cpp @@ -0,0 +1,65 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// 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 NTESS "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 NTESS 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_OPENMP + +#include +#include + +//---------------------------------------------------------------------------- +#include +#include +#include + +namespace Test { + +TEST(openmp, SortUnsigned1D) { + Impl::test_1D_sort(171); +} + +} // namespace Test +#else +void KOKKOS_ALGORITHMS_UNITTESTS_TESTOPENMP_PREVENT_LINK_ERROR() {} +#endif diff --git a/lib/kokkos/algorithms/unit_tests/TestOpenMP_Sort3D.cpp b/lib/kokkos/algorithms/unit_tests/TestOpenMP_Sort3D.cpp new file mode 100644 index 0000000000..127d911d7c --- /dev/null +++ b/lib/kokkos/algorithms/unit_tests/TestOpenMP_Sort3D.cpp @@ -0,0 +1,65 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// 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 NTESS "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 NTESS 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_OPENMP + +#include +#include + +//---------------------------------------------------------------------------- +#include +#include +#include + +namespace Test { + +TEST(openmp, SortUnsigned3D) { + Impl::test_3D_sort(171); +} + +} // namespace Test +#else +void KOKKOS_ALGORITHMS_UNITTESTS_TESTOPENMP_PREVENT_LINK_ERROR() {} +#endif diff --git a/lib/kokkos/algorithms/unit_tests/TestOpenMP_SortDynamicView.cpp b/lib/kokkos/algorithms/unit_tests/TestOpenMP_SortDynamicView.cpp new file mode 100644 index 0000000000..3dc8854044 --- /dev/null +++ b/lib/kokkos/algorithms/unit_tests/TestOpenMP_SortDynamicView.cpp @@ -0,0 +1,65 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// 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 NTESS "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 NTESS 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_OPENMP + +#include +#include + +//---------------------------------------------------------------------------- +#include +#include +#include + +namespace Test { + +TEST(openmp, SortUnsignedDynamicView) { + Impl::test_dynamic_view_sort(171); +} + +} // namespace Test +#else +void KOKKOS_ALGORITHMS_UNITTESTS_TESTOPENMP_PREVENT_LINK_ERROR() {} +#endif diff --git a/lib/kokkos/algorithms/unit_tests/TestRandom.hpp b/lib/kokkos/algorithms/unit_tests/TestRandom.hpp index bc55ebfad3..10a496242b 100644 --- a/lib/kokkos/algorithms/unit_tests/TestRandom.hpp +++ b/lib/kokkos/algorithms/unit_tests/TestRandom.hpp @@ -140,7 +140,7 @@ struct test_random_functor { density_3d(d3d) {} KOKKOS_INLINE_FUNCTION - void operator()(int i, RandomProperties& prop) const { + void operator()(int /*i*/, RandomProperties& prop) const { using Kokkos::atomic_fetch_add; rnd_type rand_gen = rand_pool.get_state(); diff --git a/lib/kokkos/algorithms/unit_tests/TestSort.hpp b/lib/kokkos/algorithms/unit_tests/TestSort.hpp index 310a93c93d..b6ff91c25f 100644 --- a/lib/kokkos/algorithms/unit_tests/TestSort.hpp +++ b/lib/kokkos/algorithms/unit_tests/TestSort.hpp @@ -130,7 +130,7 @@ struct sum3D { }; template -void test_1D_sort(unsigned int n, bool force_kokkos) { +void test_1D_sort_impl(unsigned int n, bool force_kokkos) { typedef Kokkos::View KeyViewType; KeyViewType keys("Keys", n); @@ -165,7 +165,7 @@ void test_1D_sort(unsigned int n, bool force_kokkos) { } template -void test_3D_sort(unsigned int n) { +void test_3D_sort_impl(unsigned int n) { typedef Kokkos::View KeyViewType; KeyViewType keys("Keys", n * n * n); @@ -214,7 +214,7 @@ void test_3D_sort(unsigned int n) { //---------------------------------------------------------------------------- template -void test_dynamic_view_sort(unsigned int n) { +void test_dynamic_view_sort_impl(unsigned int n) { typedef Kokkos::Experimental::DynamicView KeyDynamicViewType; typedef Kokkos::View KeyViewType; @@ -278,7 +278,7 @@ void test_dynamic_view_sort(unsigned int n) { //---------------------------------------------------------------------------- template -void test_issue_1160() { +void test_issue_1160_impl() { Kokkos::View element_("element", 10); Kokkos::View x_("x", 10); Kokkos::View v_("y", 10); @@ -345,17 +345,34 @@ void test_issue_1160() { //---------------------------------------------------------------------------- +template +void test_1D_sort(unsigned int N) { + test_1D_sort_impl(N * N * N, true); + test_1D_sort_impl(N * N * N, false); +} + +template +void test_3D_sort(unsigned int N) { + test_3D_sort_impl(N); +} + +template +void test_dynamic_view_sort(unsigned int N) { + test_dynamic_view_sort_impl(N * N); +} + +template +void test_issue_1160_sort() { + test_issue_1160_impl(); +} + template void test_sort(unsigned int N) { - test_1D_sort(N * N * N, true); - test_1D_sort(N * N * N, false); -#if !defined(KOKKOS_ENABLE_ROCM) + test_1D_sort(N); test_3D_sort(N); - test_dynamic_view_sort(N * N); -#endif - test_issue_1160(); + test_dynamic_view_sort(N); + test_issue_1160_sort(); } - } // namespace Impl } // namespace Test #endif /* KOKKOS_ALGORITHMS_UNITTESTS_TESTSORT_HPP */ diff --git a/lib/kokkos/appveyor.yml b/lib/kokkos/appveyor.yml new file mode 100644 index 0000000000..8f139ba6ab --- /dev/null +++ b/lib/kokkos/appveyor.yml @@ -0,0 +1,10 @@ +image: + - Visual Studio 2019 +clone_folder: c:\projects\source +build_script: +- cmd: >- + mkdir build && + cd build && + cmake c:\projects\source -DKokkos_ENABLE_TESTS=ON -DKokkos_ENABLE_LIBDL=OFF -DKokkos_ENABLE_PROFILING=OFF && + cmake --build . --target install && + ctest -C Debug -V diff --git a/lib/kokkos/benchmarks/gups/gups-kokkos.cc b/lib/kokkos/benchmarks/gups/gups-kokkos.cc index 9ac59be4a6..36fc36925b 100644 --- a/lib/kokkos/benchmarks/gups/gups-kokkos.cc +++ b/lib/kokkos/benchmarks/gups/gups-kokkos.cc @@ -61,7 +61,7 @@ typedef int GUPSIndex; double now() { struct timeval now; - gettimeofday(&now, NULL); + gettimeofday(&now, nullptr); return (double) now.tv_sec + ((double) now.tv_usec * 1.0e-6); } diff --git a/lib/kokkos/benchmarks/stream/stream-kokkos.cc b/lib/kokkos/benchmarks/stream/stream-kokkos.cc index 6ce789dd82..8d604079d4 100644 --- a/lib/kokkos/benchmarks/stream/stream-kokkos.cc +++ b/lib/kokkos/benchmarks/stream/stream-kokkos.cc @@ -64,7 +64,7 @@ typedef int StreamIndex; double now() { struct timeval now; - gettimeofday(&now, NULL); + gettimeofday(&now, nullptr); return (double) now.tv_sec + ((double) now.tv_usec * 1.0e-6); } diff --git a/lib/kokkos/cm_generate_makefile.bash b/lib/kokkos/cm_generate_makefile.bash deleted file mode 100755 index fd7cfe2d32..0000000000 --- a/lib/kokkos/cm_generate_makefile.bash +++ /dev/null @@ -1,339 +0,0 @@ -#!/bin/bash - -update_kokkos_devices() { - SEARCH_TEXT="*$1*" - if [[ $KOKKOS_DEVICES == $SEARCH_TEXT ]]; then - echo kokkos devices already includes $SEARCH_TEXT - else - if [ "$KOKKOS_DEVICES" = "" ]; then - KOKKOS_DEVICES="$1" - echo reseting kokkos devices to $KOKKOS_DEVICES - else - KOKKOS_DEVICES="${KOKKOS_DEVICES},$1" - echo appending to kokkos devices $KOKKOS_DEVICES - fi - fi -} - -get_kokkos_device_list() { - KOKKOS_DEVICE_CMD= - PARSE_DEVICES_LST=$(echo $KOKKOS_DEVICES | tr "," "\n") - for DEVICE_ in $PARSE_DEVICES_LST - do - UC_DEVICE=$(echo $DEVICE_ | tr "[:lower:]" "[:upper:]") - KOKKOS_DEVICE_CMD="-DKokkos_ENABLE_${UC_DEVICE}=ON ${KOKKOS_DEVICE_CMD}" - done -} - -get_kokkos_arch_list() { - KOKKOS_ARCH_CMD= - PARSE_ARCH_LST=$(echo $KOKKOS_ARCH | tr "," "\n") - for ARCH_ in $PARSE_ARCH_LST - do - UC_ARCH=$(echo $ARCH_ | tr "[:lower:]" "[:upper:]") - KOKKOS_ARCH_CMD="-DKokkos_ARCH_${UC_ARCH}=ON ${KOKKOS_ARCH_CMD}" - done -} - -get_kokkos_cuda_option_list() { - echo parsing KOKKOS_CUDA_OPTIONS=$KOKKOS_CUDA_OPTIONS - KOKKOS_CUDA_OPTION_CMD= - PARSE_CUDA_LST=$(echo $KOKKOS_CUDA_OPTIONS | tr "," "\n") - for CUDA_ in $PARSE_CUDA_LST - do - CUDA_OPT_NAME= - if [ "${CUDA_}" == "enable_lambda" ]; then - CUDA_OPT_NAME=CUDA_LAMBDA - elif [ "${CUDA_}" == "rdc" ]; then - CUDA_OPT_NAME=CUDA_RELOCATABLE_DEVICE_CODE - elif [ "${CUDA_}" == "force_uvm" ]; then - CUDA_OPT_NAME=CUDA_UVM - elif [ "${CUDA_}" == "use_ldg" ]; then - CUDA_OPT_NAME=CUDA_LDG_INTRINSIC - else - echo "${CUDA_} is not a valid cuda options..." - fi - if [ "${CUDA_OPT_NAME}" != "" ]; then - KOKKOS_CUDA_OPTION_CMD="-DKokkos_ENABLE_${CUDA_OPT_NAME}=ON ${KOKKOS_CUDA_OPTION_CMD}" - fi - done -} - -get_kokkos_option_list() { - echo parsing KOKKOS_OPTIONS=$KOKKOS_OPTIONS - KOKKOS_OPTION_CMD= - PARSE_OPTIONS_LST=$(echo $KOKKOS_OPTIONS | tr "," "\n") - for OPT_ in $PARSE_OPTIONS_LST - do - UC_OPT_=$(echo $OPT_ | tr "[:lower:]" "[:upper:]") - if [[ "$UC_OPT_" == *DISABLE* ]]; then - FLIP_OPT_=${UC_OPT_/DISABLE/ENABLE} - KOKKOS_OPTION_CMD="-DKokkos_${FLIP_OPT_}=OFF ${KOKKOS_OPTION_CMD}" - elif [[ "$UC_OPT_" == *ENABLE* ]]; then - KOKKOS_OPTION_CMD="-DKokkos_${UC_OPT_}=ON ${KOKKOS_OPTION_CMD}" - else - KOKKOS_OPTION_CMD="-DKokkos_ENABLE_${UC_OPT_}=ON ${KOKKOS_OPTION_CMD}" - fi - done -} - -display_help_text() { - - echo "Kokkos configure options:" - echo "" - echo "--kokkos-path=/Path/To/Kokkos: Path to the Kokkos root directory." - echo "--prefix=/Install/Path: Path to install the Kokkos library." - echo "" - echo "--with-cuda[=/Path/To/Cuda]: Enable Cuda and set path to Cuda Toolkit." - echo "--with-openmp: Enable OpenMP backend." - echo "--with-pthread: Enable Pthreads backend." - echo "--with-serial: Enable Serial backend." - echo "--with-devices: Explicitly add a set of backends." - echo "" - echo "--arch=[OPT]: Set target architectures. Options are:" - echo " [AMD]" - echo " AMDAVX = AMD CPU" - echo " EPYC = AMD EPYC Zen-Core CPU" - echo " [ARM]" - echo " ARMv80 = ARMv8.0 Compatible CPU" - echo " ARMv81 = ARMv8.1 Compatible CPU" - echo " ARMv8-ThunderX = ARMv8 Cavium ThunderX CPU" - echo " ARMv8-TX2 = ARMv8 Cavium ThunderX2 CPU" - echo " [IBM]" - echo " BGQ = IBM Blue Gene Q" - echo " Power7 = IBM POWER7 and POWER7+ CPUs" - echo " Power8 = IBM POWER8 CPUs" - echo " Power9 = IBM POWER9 CPUs" - echo " [Intel]" - echo " WSM = Intel Westmere CPUs" - echo " SNB = Intel Sandy/Ivy Bridge CPUs" - echo " HSW = Intel Haswell CPUs" - echo " BDW = Intel Broadwell Xeon E-class CPUs" - echo " SKX = Intel Sky Lake Xeon E-class HPC CPUs (AVX512)" - echo " [Intel Xeon Phi]" - echo " KNC = Intel Knights Corner Xeon Phi" - echo " KNL = Intel Knights Landing Xeon Phi" - echo " [NVIDIA]" - echo " Kepler30 = NVIDIA Kepler generation CC 3.0" - echo " Kepler32 = NVIDIA Kepler generation CC 3.2" - echo " Kepler35 = NVIDIA Kepler generation CC 3.5" - echo " Kepler37 = NVIDIA Kepler generation CC 3.7" - echo " Maxwell50 = NVIDIA Maxwell generation CC 5.0" - echo " Maxwell52 = NVIDIA Maxwell generation CC 5.2" - echo " Maxwell53 = NVIDIA Maxwell generation CC 5.3" - echo " Pascal60 = NVIDIA Pascal generation CC 6.0" - echo " Pascal61 = NVIDIA Pascal generation CC 6.1" - echo " Volta70 = NVIDIA Volta generation CC 7.0" - echo " Volta72 = NVIDIA Volta generation CC 7.2" - echo "" - echo "--compiler=/Path/To/Compiler Set the compiler." - echo "--debug,-dbg: Enable Debugging." - echo "--cxxflags=[FLAGS] Overwrite CXXFLAGS for library build and test" - echo " build. This will still set certain required" - echo " flags via KOKKOS_CXXFLAGS (such as -fopenmp," - echo " --std=c++11, etc.)." - echo "--cxxstandard=[FLAGS] Overwrite KOKKOS_CXX_STANDARD for library build and test" - echo " c++11 (default), c++14, c++17, c++1y, c++1z, c++2a" - echo "--ldflags=[FLAGS] Overwrite LDFLAGS for library build and test" - echo " build. This will still set certain required" - echo " flags via KOKKOS_LDFLAGS (such as -fopenmp," - echo " -lpthread, etc.)." - echo "--with-gtest=/Path/To/Gtest: Set path to gtest. (Used in unit and performance" - echo " tests.)" - echo "--with-hwloc=/Path/To/Hwloc: Set path to hwloc library." - echo "--with-memkind=/Path/To/MemKind: Set path to memkind library." - echo "--with-options=[OPT]: Additional options to Kokkos:" - echo " compiler_warnings" - echo " aggressive_vectorization = add ivdep on loops" - echo " disable_profiling = do not compile with profiling hooks" - echo " " - echo "--with-cuda-options=[OPT]: Additional options to CUDA:" - echo " force_uvm, use_ldg, enable_lambda, rdc" - echo "--with-hpx-options=[OPT]: Additional options to HPX:" - echo " enable_async_dispatch" - echo "--gcc-toolchain=/Path/To/GccRoot: Set the gcc toolchain to use with clang (e.g. /usr)" - echo "--make-j=[NUM]: DEPRECATED: call make with appropriate" - echo " -j flag" - -} - -while [[ $# > 0 ]] -do - key="$1" - - case $key in - --kokkos-path*) - KOKKOS_PATH="${key#*=}" - ;; - --hpx-path*) - HPX_PATH="${key#*=}" - ;; - --prefix*) - PREFIX="${key#*=}" - ;; - --with-cuda) - update_kokkos_devices Cuda - CUDA_PATH_NVCC=$(command -v nvcc) - CUDA_PATH=${CUDA_PATH_NVCC%/bin/nvcc} - ;; - # Catch this before '--with-cuda*' - --with-cuda-options*) - KOKKOS_CUDA_OPTIONS="${key#*=}" - ;; - --with-cuda*) - update_kokkos_devices Cuda - CUDA_PATH="${key#*=}" - ;; - --with-openmp) - update_kokkos_devices OpenMP - ;; - --with-pthread) - update_kokkos_devices Pthread - ;; - --with-serial) - update_kokkos_devices Serial - ;; - --with-hpx-options*) - KOKKOS_HPX_OPT="${key#*=}" - ;; - --with-hpx*) - update_kokkos_devices HPX - if [ -z "$HPX_PATH" ]; then - HPX_PATH="${key#*=}" - fi - ;; - --with-devices*) - DEVICES="${key#*=}" - PARSE_DEVICES=$(echo $DEVICES | tr "," "\n") - for DEVICE_ in $PARSE_DEVICES - do - update_kokkos_devices $DEVICE_ - done - ;; - --with-gtest*) - GTEST_PATH="${key#*=}" - ;; - --with-hwloc*) - HWLOC_PATH="${key#*=}" - ;; - --with-memkind*) - MEMKIND_PATH="${key#*=}" - ;; - --arch*) - KOKKOS_ARCH="${key#*=}" - ;; - --cxxflags*) - KOKKOS_CXXFLAGS="${key#*=}" - KOKKOS_CXXFLAGS=${KOKKOS_CXXFLAGS//,/ } - ;; - --cxxstandard*) - KOKKOS_CXX_STANDARD="${key#*=}" - ;; - --ldflags*) - KOKKOS_LDFLAGS="${key#*=}" - ;; - --debug|-dbg) - KOKKOS_DEBUG=yes - ;; - --make-j*) - echo "Warning: ${key} is deprecated" - echo "Call make with appropriate -j flag" - ;; - --compiler*) - COMPILER="${key#*=}" - CNUM=$(command -v ${COMPILER} 2>&1 >/dev/null | grep "no ${COMPILER}" | wc -l) - if [ ${CNUM} -gt 0 ]; then - echo "Invalid compiler by --compiler command: '${COMPILER}'" - exit - fi - if [[ ! -n ${COMPILER} ]]; then - echo "Empty compiler specified by --compiler command." - exit - fi - CNUM=$(command -v ${COMPILER} | grep ${COMPILER} | wc -l) - if [ ${CNUM} -eq 0 ]; then - echo "Invalid compiler by --compiler command: '${COMPILER}'" - exit - fi - # ... valid compiler, ensure absolute path set - WCOMPATH=$(command -v $COMPILER) - COMPDIR=$(dirname $WCOMPATH) - COMPNAME=$(basename $WCOMPATH) - COMPILER=${COMPDIR}/${COMPNAME} - ;; - --with-options*) - KOKKOS_OPTIONS="${key#*=}" - ;; - --gcc-toolchain*) - KOKKOS_GCC_TOOLCHAIN="${key#*=}" - ;; - --help) - display_help_text - exit 0 - ;; - *) - echo "warning: ignoring unknown option $key" - ;; - esac - - shift -done - - -if [ "$COMPILER" == "" ]; then - COMPILER_CMD= -else - COMPILER_CMD=-DCMAKE_CXX_COMPILER=$COMPILER -fi - -if [ "$KOKKOS_DEBUG" == "" ]; then - KOKKOS_DEBUG_CMD=-DCMAKE_BUILD_TYPE=RELEASE -else - KOKKOS_DEBUG_CMD=-DCMAKE_BUILD_TYPE=DEBUG -fi - -if [ ! -e ${KOKKOS_PATH}/CMakeLists.txt ]; then - if [ "${KOKKOS_PATH}" == "" ]; then - CM_SCRIPT=$0 - KOKKOS_PATH=`dirname $CM_SCRIPT` - if [ ! -e ${KOKKOS_PATH}/CMakeLists.txt ]; then - echo "${KOKKOS_PATH} repository appears to not be complete. please verify and try again" - exit 0 - fi - else - echo "KOKKOS_PATH does not appear to be set properly. please specify in location of CMakeLists.txt" - display_help_text - exit 0 - fi -fi - -get_kokkos_device_list -get_kokkos_option_list -get_kokkos_arch_list -get_kokkos_cuda_option_list - -## if HPX is enabled, we need to enforce cxx standard = 14 -if [[ ${KOKKOS_DEVICE_CMD} == *Kokkos_ENABLE_HPX* ]]; then - if [ "${KOKKOS_CXX_STANDARD}" == "" ] || [ ${#KOKKOS_CXX_STANDARD} -lt 14 ]; then - echo CXX Standard must be 14 or higher for HPX to work. - KOKKOS_CXX_STANDARD=14 - fi -fi - -if [ "$KOKKOS_CXX_STANDARD" == "" ]; then - STANDARD_CMD= -else - STANDARD_CMD=-DKokkos_CXX_STANDARD=${KOKKOS_CXX_STANDARD} -fi - -if [[ ${COMPILER} == *clang* ]]; then - gcc_path=$(which g++ | awk --field-separator='/bin/g++' '{printf $1}' ) - KOKKOS_CXXFLAGS="${KOKKOS_CXXFLAGS} --gcc-toolchain=${gcc_path}" - - if [ ! "${CUDA_PATH}" == "" ]; then - KOKKOS_CXXFLAGS="${KOKKOS_CXXFLAGS} --cuda-path=${CUDA_PATH}" - fi -fi - -echo cmake $COMPILER_CMD -DCMAKE_CXX_FLAGS="${KOKKOS_CXXFLAGS}" -DCMAKE_EXE_LINKER_FLAGS="${KOKKOS_LDFLAGS}" -DCMAKE_INSTALL_PREFIX=${PREFIX} ${KOKKOS_DEVICE_CMD} ${KOKKOS_ARCH_CMD} -DKokkos_ENABLE_TESTS=ON ${KOKKOS_OPTION_CMD} ${KOKKOS_CUDA_OPTION_CMD} -DCMAKE_VERBOSE_MAKEFILE=ON -DCMAKE_CXX_EXTENSIONS=OFF ${STANDARD_CMD} ${KOKKOS_DEBUG_CMD} ${KOKKOS_PATH} -cmake $COMPILER_CMD -DCMAKE_CXX_FLAGS="${KOKKOS_CXXFLAGS//\"}" -DCMAKE_EXE_LINKER_FLAGS="${KOKKOS_LDFLAGS//\"}" -DCMAKE_INSTALL_PREFIX=${PREFIX} ${KOKKOS_DEVICE_CMD} ${KOKKOS_ARCH_CMD} -DKokkos_ENABLE_TESTS=ON ${KOKKOS_OPTION_CMD} ${KOKKOS_CUDA_OPTION_CMD} -DCMAKE_VERBOSE_MAKEFILE=ON -DCMAKE_CXX_EXTENSIONS=OFF ${STANDARD_CMD} ${KOKKOS_DEBUG_CMD} ${KOKKOS_PATH} diff --git a/lib/kokkos/cmake/Dependencies.cmake b/lib/kokkos/cmake/Dependencies.cmake index 8c51eab4d7..c0be9f5641 100644 --- a/lib/kokkos/cmake/Dependencies.cmake +++ b/lib/kokkos/cmake/Dependencies.cmake @@ -6,5 +6,4 @@ TRIBITS_PACKAGE_DEFINE_DEPENDENCIES( Core core PS REQUIRED Containers containers PS OPTIONAL Algorithms algorithms PS OPTIONAL - Example example EX OPTIONAL ) diff --git a/lib/kokkos/cmake/KokkosConfigCommon.cmake.in b/lib/kokkos/cmake/KokkosConfigCommon.cmake.in index da9c61976c..8c663d01c1 100644 --- a/lib/kokkos/cmake/KokkosConfigCommon.cmake.in +++ b/lib/kokkos/cmake/KokkosConfigCommon.cmake.in @@ -73,6 +73,9 @@ function(kokkos_check) # use it to check that there are variables defined for all required # arguments. Success or failure messages will be displayed but we are # responsible for signaling failure and skip the build system generation. + if (KOKKOS_CHECK_RETURN_VALUE) + set(Kokkos_${arg}_FIND_QUIETLY ON) + endif() find_package_handle_standard_args("Kokkos_${arg}" DEFAULT_MSG ${KOKKOS_CHECK_${arg}}) if(NOT Kokkos_${arg}_FOUND) diff --git a/lib/kokkos/cmake/KokkosCore_config.h.in b/lib/kokkos/cmake/KokkosCore_config.h.in index 084afba8a8..1d0b58fe02 100644 --- a/lib/kokkos/cmake/KokkosCore_config.h.in +++ b/lib/kokkos/cmake/KokkosCore_config.h.in @@ -5,11 +5,19 @@ #define KOKKOS_CORE_CONFIG_H #endif +// KOKKOS_VERSION % 100 is the patch level +// KOKKOS_VERSION / 100 % 100 is the minor version +// KOKKOS_VERSION / 10000 is the major version +#cmakedefine KOKKOS_VERSION @KOKKOS_VERSION@ + + /* Execution Spaces */ #cmakedefine KOKKOS_ENABLE_SERIAL #cmakedefine KOKKOS_ENABLE_OPENMP +#cmakedefine KOKKOS_ENABLE_OPENMPTARGET #cmakedefine KOKKOS_ENABLE_THREADS #cmakedefine KOKKOS_ENABLE_CUDA +#cmakedefine KOKKOS_ENABLE_HIP #cmakedefine KOKKOS_ENABLE_HPX #cmakedefine KOKKOS_ENABLE_MEMKIND #cmakedefine KOKKOS_ENABLE_LIBRT @@ -33,6 +41,7 @@ #cmakedefine KOKKOS_ENABLE_CUDA_LAMBDA #cmakedefine KOKKOS_ENABLE_CUDA_CONSTEXPR #cmakedefine KOKKOS_ENABLE_CUDA_LDG_INTRINSIC +#cmakedefine KOKKOS_ENABLE_HIP_RELOCATABLE_DEVICE_CODE #cmakedefine KOKKOS_ENABLE_HPX_ASYNC_DISPATCH #cmakedefine KOKKOS_ENABLE_DEBUG #cmakedefine KOKKOS_ENABLE_DEBUG_DUALVIEW_MODIFY_CHECK diff --git a/lib/kokkos/cmake/KokkosTrilinosConfig.cmake.in b/lib/kokkos/cmake/KokkosTrilinosConfig.cmake.in new file mode 100644 index 0000000000..626ef5a8eb --- /dev/null +++ b/lib/kokkos/cmake/KokkosTrilinosConfig.cmake.in @@ -0,0 +1,17 @@ +IF (NOT TARGET Kokkos::kokkos) + # Compute the installation prefix relative to this file. + get_filename_component(KOKKOS_IMPORT_PREFIX "${CMAKE_CURRENT_LIST_FILE}" PATH) + get_filename_component(KOKKOS_IMPORT_PREFIX "${KOKKOS_IMPORT_PREFIX}" PATH) + get_filename_component(KOKKOS_IMPORT_PREFIX "${KOKKOS_IMPORT_PREFIX}" PATH) + get_filename_component(KOKKOS_IMPORT_PREFIX "${KOKKOS_IMPORT_PREFIX}" PATH) + if(KOKKOS_IMPORT_PREFIX STREQUAL "/") + set(KOKKOS_IMPORT_PREFIX "") + endif() + add_library(Kokkos::kokkos INTERFACE IMPORTED) + set_target_properties(Kokkos::kokkos PROPERTIES + INTERFACE_LINK_LIBRARIES "@Kokkos_LIBRARIES@;@KOKKOS_LINK_OPTIONS@" + INTERFACE_COMPILE_FEATURES "@KOKKOS_CXX_STANDARD_FEATURE@" + INTERFACE_COMPILE_OPTIONS "@KOKKOS_ALL_COMPILE_OPTIONS@" + INTERFACE_INCLUDE_DIRECTORIES "${KOKKOS_IMPORT_PREFIX}/include" + ) +ENDIF() diff --git a/lib/kokkos/cmake/Modules/FindTPLCUDA.cmake b/lib/kokkos/cmake/Modules/FindTPLCUDA.cmake index 36aefcdb44..1b36ab819f 100644 --- a/lib/kokkos/cmake/Modules/FindTPLCUDA.cmake +++ b/lib/kokkos/cmake/Modules/FindTPLCUDA.cmake @@ -1,8 +1,12 @@ IF (KOKKOS_CXX_COMPILER_ID STREQUAL Clang) + # Note: "stubs" suffix allows CMake to find the dummy + # libcuda.so provided by the NVIDIA CUDA Toolkit for + # cross-compiling CUDA on a host without a GPU. KOKKOS_FIND_IMPORTED(CUDA INTERFACE LIBRARIES cudart cuda - LIBRARY_PATHS ENV LD_LIBRARY_PATH ENV CUDA_PATH + LIBRARY_PATHS ENV LD_LIBRARY_PATH ENV CUDA_PATH /usr/local/cuda + LIBRARY_SUFFIXES lib lib64 lib/stubs lib64/stubs ALLOW_SYSTEM_PATH_FALLBACK ) ELSE() diff --git a/lib/kokkos/cmake/Modules/FindTPLPTHREAD.cmake b/lib/kokkos/cmake/Modules/FindTPLPTHREAD.cmake index b4b8c34122..1d154e29af 100644 --- a/lib/kokkos/cmake/Modules/FindTPLPTHREAD.cmake +++ b/lib/kokkos/cmake/Modules/FindTPLPTHREAD.cmake @@ -3,15 +3,18 @@ TRY_COMPILE(KOKKOS_HAS_PTHREAD_ARG ${KOKKOS_TOP_BUILD_DIR}/tpl_tests ${KOKKOS_SOURCE_DIR}/cmake/compile_tests/pthread.cpp LINK_LIBRARIES -pthread - COMPILE_DEFINITIONS -pthread) + COMPILE_DEFINITIONS -pthread +) +# The test no longer requires C++11 +# if we did needed C++ standard support, then we should add option +# ${CMAKE_CXX${KOKKOS_CXX_STANDARD}_STANDARD_COMPILE_OPTION} INCLUDE(FindPackageHandleStandardArgs) FIND_PACKAGE_HANDLE_STANDARD_ARGS(PTHREAD DEFAULT_MSG KOKKOS_HAS_PTHREAD_ARG) - -KOKKOS_CREATE_IMPORTED_TPL(PTHREAD - INTERFACE #this is not a real library with a real location - COMPILE_OPTIONS -pthread - LINK_OPTIONS -pthread) - - - +#Only create the TPL if we succeed +IF (KOKKOS_HAS_PTHREAD_ARG) + KOKKOS_CREATE_IMPORTED_TPL(PTHREAD + INTERFACE #this is not a real library with a real location + COMPILE_OPTIONS -pthread + LINK_OPTIONS -pthread) +ENDIF() diff --git a/lib/kokkos/cmake/README.md b/lib/kokkos/cmake/README.md index 0543a18e89..6d0cc2daf1 100644 --- a/lib/kokkos/cmake/README.md +++ b/lib/kokkos/cmake/README.md @@ -67,7 +67,7 @@ Note that all of these use `PUBLIC`! Almost every Kokkos flag is not private to ### Compiler Features and Compiler Options -Compiler options are flags like `-fopenmp` that do not need to be "resolved." +Compiler options are flags like `-fopenmp` that do not need to be "resolved." The flag is either on or off. Compiler features are more fine-grained and require conflicting requests to be resolved. Suppose I have @@ -145,11 +145,11 @@ If Kokkos depends on, e.g. `hwloc` the downstream project will also need to link There are three stages in adding a new third-party library (TPL): * Finding: find the desired library on the system and verify the installation is correct * Importing: create a CMake target, if necessary, that is compatible with `target_link_libraries`. This is mostly relevant for TPLs not installed with CMake. -* Exporting: make the desired library visible to downstream projects +* Exporting: make the desired library visible to downstream projects TPLs are somewhat complicated by whether the library was installed with CMake or some other build system. If CMake, our lives are greatly simplified. We simply use `find_package` to locate the installed CMake project then call `target_link_libraries(kokkoscore PUBLIC/PRIVATE TPL)`. For libaries not installed with CMake, the process is a bit more complex. -It is up to the Kokkos developers to "convert" the library into a CMake target as if it had been installed as a valid modern CMake target with properties. +It is up to the Kokkos developers to "convert" the library into a CMake target as if it had been installed as a valid modern CMake target with properties. There are helper functions for simplifying the process of importing TPLs in Kokkos, but we walk through the process in detail to clearly illustrate the steps involved. #### TPL Search Order @@ -166,8 +166,9 @@ There are 3 possibilities that could be used: The following is the search order that Kokkos follows. Note: This differs from the default search order used by CMake `find_library` and `find_header`. CMake prefers default system paths over user-provided paths. For Kokkos (and package managers in general), it is better to prefer user-provided paths since this usually indicates a specific version we want. -1. `_ROOT` -1. `Kokkos__DIR` +1. `_ROOT` command line option +1. `_ROOT` environment variable +1. `Kokkos__DIR` command line option 1. Paths added by Kokkos CMake logic 1. Default system paths (if allowed) diff --git a/lib/kokkos/cmake/compile_tests/clang_omp.cpp b/lib/kokkos/cmake/compile_tests/clang_omp.cpp index ce3bbfb262..60a5c52282 100644 --- a/lib/kokkos/cmake/compile_tests/clang_omp.cpp +++ b/lib/kokkos/cmake/compile_tests/clang_omp.cpp @@ -1,6 +1,6 @@ #include -int main(int argc, char** argv) { +int main(int, char**) { int thr = omp_get_num_threads(); if (thr > 0) return thr; diff --git a/lib/kokkos/cmake/compile_tests/pthread.cpp b/lib/kokkos/cmake/compile_tests/pthread.cpp index 3b13f7ba35..92310da029 100644 --- a/lib/kokkos/cmake/compile_tests/pthread.cpp +++ b/lib/kokkos/cmake/compile_tests/pthread.cpp @@ -4,6 +4,10 @@ void* kokkos_test(void* args) { return args; } int main(void) { pthread_t thread; + /* Use NULL to avoid C++11. Some compilers + do not have C++11 by default. Forcing C++11 + in the compile tests can be done, but is unnecessary + */ pthread_create(&thread, NULL, kokkos_test, NULL); pthread_join(thread, NULL); return 0; diff --git a/lib/kokkos/cmake/fake_tribits.cmake b/lib/kokkos/cmake/fake_tribits.cmake index 26948d2cfb..acee4a249d 100644 --- a/lib/kokkos/cmake/fake_tribits.cmake +++ b/lib/kokkos/cmake/fake_tribits.cmake @@ -24,10 +24,6 @@ IF(NOT ${MACRO_DEFINE_NAME} STREQUAL "") ENDIF() ENDMACRO() -MACRO(GLOBAL_RESET VARNAME) - SET(${VARNAME} "" CACHE INTERNAL "" FORCE) -ENDMACRO() - MACRO(GLOBAL_OVERWRITE VARNAME VALUE TYPE) SET(${VARNAME} ${VALUE} CACHE ${TYPE} "" FORCE) ENDMACRO() @@ -88,13 +84,9 @@ MACRO(ADD_INTERFACE_LIBRARY LIB_NAME) SET_TARGET_PROPERTIES(${LIB_NAME} PROPERTIES INTERFACE TRUE) ENDMACRO() -IF(NOT TARGET check) - ADD_CUSTOM_TARGET(check COMMAND ${CMAKE_CTEST_COMMAND} -VV -C ${CMAKE_CFG_INTDIR}) -ENDIF() - FUNCTION(KOKKOS_ADD_TEST) if (KOKKOS_HAS_TRILINOS) - CMAKE_PARSE_ARGUMENTS(TEST + CMAKE_PARSE_ARGUMENTS(TEST "" "EXE;NAME" "" @@ -108,22 +100,27 @@ FUNCTION(KOKKOS_ADD_TEST) TRIBITS_ADD_TEST( ${EXE_ROOT} NAME ${TEST_NAME} - ${ARGN} COMM serial mpi NUM_MPI_PROCS 1 ${TEST_UNPARSED_ARGUMENTS} ) else() - CMAKE_PARSE_ARGUMENTS(TEST + CMAKE_PARSE_ARGUMENTS(TEST "WILL_FAIL" "FAIL_REGULAR_EXPRESSION;PASS_REGULAR_EXPRESSION;EXE;NAME" "CATEGORIES;CMD_ARGS" ${ARGN}) + # To match Tribits, we should always be receiving + # the root names of exes/libs IF(TEST_EXE) - SET(EXE ${TEST_EXE}) + SET(EXE_ROOT ${TEST_EXE}) ELSE() - SET(EXE ${TEST_NAME}) + SET(EXE_ROOT ${TEST_NAME}) ENDIF() + # Prepend package name to the test name + # These should be the full target name + SET(TEST_NAME ${PACKAGE_NAME}_${TEST_NAME}) + SET(EXE ${PACKAGE_NAME}_${EXE_ROOT}) IF(WIN32) ADD_TEST(NAME ${TEST_NAME} WORKING_DIRECTORY ${LIBRARY_OUTPUT_PATH} COMMAND ${EXE}${CMAKE_EXECUTABLE_SUFFIX} ${TEST_CMD_ARGS}) ELSE() @@ -160,7 +157,7 @@ FUNCTION(KOKKOS_TPL_FIND_INCLUDE_DIRS_AND_LIBRARIES TPL_NAME) if (KOKKOS_HAS_TRILINOS) TRIBITS_TPL_FIND_INCLUDE_DIRS_AND_LIBRARIES(${TPL_NAME} ${ARGN}) else() - CMAKE_PARSE_ARGUMENTS(PARSE + CMAKE_PARSE_ARGUMENTS(PARSE "" "" "REQUIRED_HEADERS;REQUIRED_LIBS_NAMES" @@ -214,13 +211,13 @@ ENDFUNCTION() FUNCTION(KOKKOS_TARGET_INCLUDE_DIRECTORIES TARGET) IF(KOKKOS_HAS_TRILINOS) - KOKKOS_LIB_TYPE(${TARGET} INCTYPE) + KOKKOS_LIB_TYPE(${TARGET} INCTYPE) #don't trust tribits to do this correctly - but need to add package name TARGET_INCLUDE_DIRECTORIES(${TARGET} ${INCTYPE} ${ARGN}) -ELSEIF(TARGET ${TARGET}) +ELSEIF(TARGET ${TARGET}) #the target actually exists - this means we are doing separate libs #or this a test library - KOKKOS_LIB_TYPE(${TARGET} INCTYPE) + KOKKOS_LIB_TYPE(${TARGET} INCTYPE) TARGET_INCLUDE_DIRECTORIES(${TARGET} ${INCTYPE} ${ARGN}) ELSE() GET_PROPERTY(LIBS GLOBAL PROPERTY KOKKOS_LIBRARIES_NAMES) @@ -239,7 +236,7 @@ ELSE() SET(options INTERFACE) SET(oneValueArgs) SET(multiValueArgs) - CMAKE_PARSE_ARGUMENTS(PARSE + CMAKE_PARSE_ARGUMENTS(PARSE "INTERFACE" "" "" @@ -264,7 +261,7 @@ ELSE() SET(oneValueArgs) SET(multiValueArgs HEADERS SOURCES) - CMAKE_PARSE_ARGUMENTS(PARSE + CMAKE_PARSE_ARGUMENTS(PARSE "STATIC;SHARED" "" "HEADERS;SOURCES" @@ -277,10 +274,6 @@ ELSE() LIST(REMOVE_DUPLICATES PARSE_SOURCES) ENDIF() ADD_LIBRARY(${NAME} ${PARSE_SOURCES}) - target_link_libraries( - ${NAME} - PUBLIC kokkos - ) ENDIF() ENDFUNCTION() diff --git a/lib/kokkos/cmake/kokkos_arch.cmake b/lib/kokkos/cmake/kokkos_arch.cmake index c33247c955..d73a353981 100644 --- a/lib/kokkos/cmake/kokkos_arch.cmake +++ b/lib/kokkos/cmake/kokkos_arch.cmake @@ -9,52 +9,6 @@ FUNCTION(KOKKOS_ARCH_OPTION SUFFIX DEV_TYPE DESCRIPTION) SET(KOKKOS_ARCH_${SUFFIX} ${KOKKOS_ARCH_${SUFFIX}} PARENT_SCOPE) ENDFUNCTION() -FUNCTION(ARCH_FLAGS) - SET(COMPILERS NVIDIA PGI XL DEFAULT Cray Intel Clang AppleClang GNU) - CMAKE_PARSE_ARGUMENTS( - PARSE - "LINK_ONLY;COMPILE_ONLY" - "" - "${COMPILERS}" - ${ARGN}) - - SET(COMPILER ${KOKKOS_CXX_COMPILER_ID}) - - SET(FLAGS) - SET(NEW_COMPILE_OPTIONS) - SET(NEW_XCOMPILER_OPTIONS) - SET(NEW_LINK_OPTIONS) - LIST(APPEND NEW_XCOMPILER_OPTIONS ${KOKKOS_XCOMPILER_OPTIONS}) - LIST(APPEND NEW_COMPILE_OPTIONS ${KOKKOS_COMPILE_OPTIONS}) - LIST(APPEND NEW_LINK_OPTIONS ${KOKKOS_LINK_OPTIONS}) - FOREACH(COMP ${COMPILERS}) - IF (COMPILER STREQUAL "${COMP}") - IF (PARSE_${COMPILER}) - IF (NOT "${PARSE_${COMPILER}}" STREQUAL "NO-VALUE-SPECIFIED") - SET(FLAGS ${PARSE_${COMPILER}}) - ENDIF() - ELSEIF(PARSE_DEFAULT) - SET(FLAGS ${PARSE_DEFAULT}) - ENDIF() - ENDIF() - ENDFOREACH() - - IF (NOT LINK_ONLY) - # The funky logic here is for future handling of argument deduplication - # If we naively pass multiple -Xcompiler flags to target_compile_options - # -Xcompiler will get deduplicated and break the build - IF ("-Xcompiler" IN_LIST FLAGS) - LIST(REMOVE_ITEM FLAGS "-Xcompiler") - GLOBAL_APPEND(KOKKOS_XCOMPILER_OPTIONS ${FLAGS}) - ELSE() - GLOBAL_APPEND(KOKKOS_COMPILE_OPTIONS ${FLAGS}) - ENDIF() - ENDIF() - - IF (NOT COMPILE_ONLY) - GLOBAL_APPEND(KOKKOS_LINK_OPTIONS ${FLAGS}) - ENDIF() -ENDFUNCTION() # Make sure devices and compiler ID are done KOKKOS_CFG_DEPENDS(ARCH COMPILER_ID) @@ -98,14 +52,15 @@ KOKKOS_ARCH_OPTION(VOLTA70 GPU "NVIDIA Volta generation CC 7.0") KOKKOS_ARCH_OPTION(VOLTA72 GPU "NVIDIA Volta generation CC 7.2") KOKKOS_ARCH_OPTION(TURING75 GPU "NVIDIA Turing generation CC 7.5") KOKKOS_ARCH_OPTION(EPYC HOST "AMD Epyc architecture") - +KOKKOS_ARCH_OPTION(VEGA900 GPU "AMD GPU MI25 GFX900") +KOKKOS_ARCH_OPTION(VEGA906 GPU "AMD GPU MI50/MI60 GFX906") IF (KOKKOS_ENABLE_CUDA) #Regardless of version, make sure we define the general architecture name IF (KOKKOS_ARCH_KEPLER30 OR KOKKOS_ARCH_KEPLER32 OR KOKKOS_ARCH_KEPLER35 OR KOKKOS_ARCH_KEPLER37) SET(KOKKOS_ARCH_KEPLER ON) ENDIF() - + #Regardless of version, make sure we define the general architecture name IF (KOKKOS_ARCH_MAXWELL50 OR KOKKOS_ARCH_MAXWELL52 OR KOKKOS_ARCH_MAXWELL53) SET(KOKKOS_ARCH_MAXWELL ON) @@ -126,13 +81,13 @@ ENDIF() IF(KOKKOS_ENABLE_COMPILER_WARNINGS) SET(COMMON_WARNINGS - "-Wall" "-Wshadow" "-pedantic" + "-Wall" "-Wunused-parameter" "-Wshadow" "-pedantic" "-Wsign-compare" "-Wtype-limits" "-Wuninitialized") SET(GNU_WARNINGS "-Wempty-body" "-Wclobbered" "-Wignored-qualifiers" ${COMMON_WARNINGS}) - ARCH_FLAGS( + COMPILER_SPECIFIC_FLAGS( PGI NO-VALUE-SPECIFIED GNU ${GNU_WARNINGS} DEFAULT ${COMMON_WARNINGS} @@ -141,7 +96,8 @@ ENDIF() #------------------------------- KOKKOS_CUDA_OPTIONS --------------------------- -GLOBAL_RESET(KOKKOS_CUDA_OPTIONS) +#clear anything that might be in the cache +GLOBAL_SET(KOKKOS_CUDA_OPTIONS) # Construct the Makefile options IF (KOKKOS_ENABLE_CUDA_LAMBDA) IF(KOKKOS_CXX_COMPILER_ID STREQUAL NVIDIA) @@ -157,6 +113,7 @@ ENDIF() IF (KOKKOS_CXX_COMPILER_ID STREQUAL Clang) SET(CUDA_ARCH_FLAG "--cuda-gpu-arch") + SET(AMDGPU_ARCH_FLAG "--amdgpu-target") GLOBAL_APPEND(KOKKOS_CUDA_OPTIONS -x cuda) IF (KOKKOS_ENABLE_CUDA) SET(KOKKOS_IMPL_CUDA_CLANG_WORKAROUND ON CACHE BOOL "enable CUDA Clang workarounds" FORCE) @@ -171,27 +128,13 @@ IF (KOKKOS_CXX_COMPILER_ID STREQUAL NVIDIA) GLOBAL_APPEND(KOKKOS_CUDA_OPTIONS -lineinfo) ENDIF() UNSET(_UPPERCASE_CMAKE_BUILD_TYPE) - IF (KOKKOS_CXX_COMPILER_VERSION VERSION_GREATER 9.0 OR KOKKOS_CXX_COMPILER_VERSION VERSION_EQUAL 9.0) - GLOBAL_APPEND(KOKKOS_CUDAFE_OPTIONS --diag_suppress=esa_on_defaulted_function_ignored) + IF (KOKKOS_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 9.0 AND KOKKOS_CXX_COMPILER_VERSION VERSION_LESS 10.0) + GLOBAL_APPEND(KOKKOS_CUDAFE_OPTIONS --diag_suppress=esa_on_defaulted_function_ignored) ENDIF() ENDIF() -IF(KOKKOS_ENABLE_OPENMP) - IF (KOKKOS_CXX_COMPILER_ID STREQUAL AppleClang) - MESSAGE(FATAL_ERROR "Apple Clang does not support OpenMP. Use native Clang instead") - ENDIF() - ARCH_FLAGS( - Clang -fopenmp=libomp - PGI -mp - NVIDIA -Xcompiler -fopenmp - Cray NO-VALUE-SPECIFIED - XL -qsmp=omp - DEFAULT -fopenmp - ) -ENDIF() - IF (KOKKOS_ARCH_ARMV80) - ARCH_FLAGS( + COMPILER_SPECIFIC_FLAGS( Cray NO-VALUE-SPECIFIED PGI NO-VALUE-SPECIFIED DEFAULT -march=armv8-a @@ -199,7 +142,7 @@ IF (KOKKOS_ARCH_ARMV80) ENDIF() IF (KOKKOS_ARCH_ARMV81) - ARCH_FLAGS( + COMPILER_SPECIFIC_FLAGS( Cray NO-VALUE-SPECIFIED PGI NO-VALUE-SPECIFIED DEFAULT -march=armv8.1-a @@ -208,7 +151,7 @@ ENDIF() IF (KOKKOS_ARCH_ARMV8_THUNDERX) SET(KOKKOS_ARCH_ARMV80 ON) #Not a cache variable - ARCH_FLAGS( + COMPILER_SPECIFIC_FLAGS( Cray NO-VALUE-SPECIFIED PGI NO-VALUE-SPECIFIED DEFAULT -march=armv8-a -mtune=thunderx @@ -217,7 +160,7 @@ ENDIF() IF (KOKKOS_ARCH_ARMV8_THUNDERX2) SET(KOKKOS_ARCH_ARMV81 ON) #Not a cache variable - ARCH_FLAGS( + COMPILER_SPECIFIC_FLAGS( Cray NO-VALUE-SPECIFIED PGI NO-VALUE-SPECIFIED DEFAULT -mcpu=thunderx2t99 -mtune=thunderx2t99 @@ -225,7 +168,7 @@ IF (KOKKOS_ARCH_ARMV8_THUNDERX2) ENDIF() IF (KOKKOS_ARCH_EPYC) - ARCH_FLAGS( + COMPILER_SPECIFIC_FLAGS( Intel -mavx2 DEFAULT -march=znver1 -mtune=znver1 ) @@ -234,7 +177,7 @@ IF (KOKKOS_ARCH_EPYC) ENDIF() IF (KOKKOS_ARCH_WSM) - ARCH_FLAGS( + COMPILER_SPECIFIC_FLAGS( Intel -xSSE4.2 PGI -tp=nehalem Cray NO-VALUE-SPECIFIED @@ -245,7 +188,7 @@ ENDIF() IF (KOKKOS_ARCH_SNB OR KOKKOS_ARCH_AMDAVX) SET(KOKKOS_ARCH_AVX ON) - ARCH_FLAGS( + COMPILER_SPECIFIC_FLAGS( Intel -mavx PGI -tp=sandybridge Cray NO-VALUE-SPECIFIED @@ -255,7 +198,7 @@ ENDIF() IF (KOKKOS_ARCH_HSW) SET(KOKKOS_ARCH_AVX2 ON) - ARCH_FLAGS( + COMPILER_SPECIFIC_FLAGS( Intel -xCORE-AVX2 PGI -tp=haswell Cray NO-VALUE-SPECIFIED @@ -265,7 +208,7 @@ ENDIF() IF (KOKKOS_ARCH_BDW) SET(KOKKOS_ARCH_AVX2 ON) - ARCH_FLAGS( + COMPILER_SPECIFIC_FLAGS( Intel -xCORE-AVX2 PGI -tp=haswell Cray NO-VALUE-SPECIFIED @@ -275,7 +218,7 @@ ENDIF() IF (KOKKOS_ARCH_EPYC) SET(KOKKOS_ARCH_AMD_AVX2 ON) - ARCH_FLAGS( + COMPILER_SPECIFIC_FLAGS( Intel -mvax2 DEFAULT -march=znver1 -mtune=znver1 ) @@ -284,7 +227,7 @@ ENDIF() IF (KOKKOS_ARCH_KNL) #avx512-mic SET(KOKKOS_ARCH_AVX512MIC ON) #not a cache variable - ARCH_FLAGS( + COMPILER_SPECIFIC_FLAGS( Intel -xMIC-AVX512 PGI NO-VALUE-SPECIFIED Cray NO-VALUE-SPECIFIED @@ -294,7 +237,7 @@ ENDIF() IF (KOKKOS_ARCH_KNC) SET(KOKKOS_USE_ISA_KNC ON) - ARCH_FLAGS( + COMPILER_SPECIFIC_FLAGS( DEFAULT -mmic ) ENDIF() @@ -302,7 +245,7 @@ ENDIF() IF (KOKKOS_ARCH_SKX) #avx512-xeon SET(KOKKOS_ARCH_AVX512XEON ON) - ARCH_FLAGS( + COMPILER_SPECIFIC_FLAGS( Intel -xCORE-AVX512 PGI NO-VALUE-SPECIFIED Cray NO-VALUE-SPECIFIED @@ -319,7 +262,7 @@ IF (KOKKOS_ARCH_BDW OR KOKKOS_ARCH_SKX) ENDIF() IF (KOKKOS_ARCH_POWER7) - ARCH_FLAGS( + COMPILER_SPECIFIC_FLAGS( PGI NO-VALUE-SPECIFIED DEFAULT -mcpu=power7 -mtune=power7 ) @@ -327,7 +270,7 @@ IF (KOKKOS_ARCH_POWER7) ENDIF() IF (KOKKOS_ARCH_POWER8) - ARCH_FLAGS( + COMPILER_SPECIFIC_FLAGS( PGI NO-VALUE-SPECIFIED NVIDIA NO-VALUE-SPECIFIED DEFAULT -mcpu=power8 -mtune=power8 @@ -335,7 +278,7 @@ IF (KOKKOS_ARCH_POWER8) ENDIF() IF (KOKKOS_ARCH_POWER9) - ARCH_FLAGS( + COMPILER_SPECIFIC_FLAGS( PGI NO-VALUE-SPECIFIED NVIDIA NO-VALUE-SPECIFIED DEFAULT -mcpu=power9 -mtune=power9 @@ -347,33 +290,50 @@ IF (KOKKOS_ARCH_POWER8 OR KOKKOS_ARCH_POWER9) ENDIF() IF (Kokkos_ENABLE_CUDA_RELOCATABLE_DEVICE_CODE) - ARCH_FLAGS( + COMPILER_SPECIFIC_FLAGS( Clang -fcuda-rdc NVIDIA --relocatable-device-code=true ) ENDIF() +#Right now we cannot get the compiler ID when cross-compiling, so just check +#that HIP is enabled +IF (Kokkos_ENABLE_HIP) + IF (Kokkos_ENABLE_HIP_RELOCATABLE_DEVICE_CODE) + COMPILER_SPECIFIC_FLAGS( + DEFAULT -fgpu-rdc + ) + ELSE() + COMPILER_SPECIFIC_FLAGS( + DEFAULT -fno-gpu-rdc + ) + ENDIF() +ENDIF() + SET(CUDA_ARCH_ALREADY_SPECIFIED "") FUNCTION(CHECK_CUDA_ARCH ARCH FLAG) -IF(KOKKOS_ARCH_${ARCH}) - IF(CUDA_ARCH_ALREADY_SPECIFIED) - MESSAGE(FATAL_ERROR "Multiple GPU architectures given! Already have ${CUDA_ARCH_ALREADY_SPECIFIED}, but trying to add ${ARCH}. If you are re-running CMake, try clearing the cache and running again.") - ENDIF() - SET(CUDA_ARCH_ALREADY_SPECIFIED ${ARCH} PARENT_SCOPE) - IF (NOT KOKKOS_ENABLE_CUDA) - MESSAGE(WARNING "Given CUDA arch ${ARCH}, but Kokkos_ENABLE_CUDA is OFF. Option will be ignored.") - UNSET(KOKKOS_ARCH_${ARCH} PARENT_SCOPE) - ELSE() - GLOBAL_APPEND(KOKKOS_CUDA_OPTIONS "${CUDA_ARCH_FLAG}=${FLAG}") - IF(KOKKOS_ENABLE_CUDA_RELOCATABLE_DEVICE_CODE) - GLOBAL_APPEND(KOKKOS_LINK_OPTIONS "${CUDA_ARCH_FLAG}=${FLAG}") + IF(KOKKOS_ARCH_${ARCH}) + IF(CUDA_ARCH_ALREADY_SPECIFIED) + MESSAGE(FATAL_ERROR "Multiple GPU architectures given! Already have ${CUDA_ARCH_ALREADY_SPECIFIED}, but trying to add ${ARCH}. If you are re-running CMake, try clearing the cache and running again.") + ENDIF() + SET(CUDA_ARCH_ALREADY_SPECIFIED ${ARCH} PARENT_SCOPE) + IF (NOT KOKKOS_ENABLE_CUDA AND NOT KOKKOS_ENABLE_OPENMPTARGET) + MESSAGE(WARNING "Given CUDA arch ${ARCH}, but Kokkos_ENABLE_CUDA and Kokkos_ENABLE_OPENMPTARGET are OFF. Option will be ignored.") + UNSET(KOKKOS_ARCH_${ARCH} PARENT_SCOPE) + ELSE() + SET(KOKKOS_CUDA_ARCH_FLAG ${FLAG} PARENT_SCOPE) + GLOBAL_APPEND(KOKKOS_CUDA_OPTIONS "${CUDA_ARCH_FLAG}=${FLAG}") + IF(KOKKOS_ENABLE_CUDA_RELOCATABLE_DEVICE_CODE) + GLOBAL_APPEND(KOKKOS_LINK_OPTIONS "${CUDA_ARCH_FLAG}=${FLAG}") + ENDIF() ENDIF() ENDIF() -ENDIF() ENDFUNCTION() +#These will define KOKKOS_CUDA_ARCH_FLAG +#to the corresponding flag name if ON CHECK_CUDA_ARCH(KEPLER30 sm_30) CHECK_CUDA_ARCH(KEPLER32 sm_32) CHECK_CUDA_ARCH(KEPLER35 sm_35) @@ -383,18 +343,76 @@ CHECK_CUDA_ARCH(MAXWELL52 sm_52) CHECK_CUDA_ARCH(MAXWELL53 sm_53) CHECK_CUDA_ARCH(PASCAL60 sm_60) CHECK_CUDA_ARCH(PASCAL61 sm_61) -CHECK_CUDA_ARCH(VOLTA70 sm_70) -CHECK_CUDA_ARCH(VOLTA72 sm_72) +CHECK_CUDA_ARCH(VOLTA70 sm_70) +CHECK_CUDA_ARCH(VOLTA72 sm_72) CHECK_CUDA_ARCH(TURING75 sm_75) +SET(AMDGPU_ARCH_ALREADY_SPECIFIED "") +FUNCTION(CHECK_AMDGPU_ARCH ARCH FLAG) + IF(KOKKOS_ARCH_${ARCH}) + IF(AMDGPU_ARCH_ALREADY_SPECIFIED) + MESSAGE(FATAL_ERROR "Multiple GPU architectures given! Already have ${AMDGPU_ARCH_ALREADY_SPECIFIED}, but trying to add ${ARCH}. If you are re-running CMake, try clearing the cache and running again.") + ENDIF() + SET(AMDGPU_ARCH_ALREADY_SPECIFIED ${ARCH} PARENT_SCOPE) + IF (NOT KOKKOS_ENABLE_HIP AND NOT KOKKOS_ENABLE_OPENMPTARGET) + MESSAGE(WARNING "Given HIP arch ${ARCH}, but Kokkos_ENABLE_AMDGPU and Kokkos_ENABLE_OPENMPTARGET are OFF. Option will be ignored.") + UNSET(KOKKOS_ARCH_${ARCH} PARENT_SCOPE) + ELSE() + SET(KOKKOS_AMDGPU_ARCH_FLAG ${FLAG} PARENT_SCOPE) + GLOBAL_APPEND(KOKKOS_AMDGPU_OPTIONS "${AMDGPU_ARCH_FLAG}=${FLAG}") + IF(KOKKOS_ENABLE_HIP) + GLOBAL_APPEND(KOKKOS_LINK_OPTIONS "${AMDGPU_ARCH_FLAG}=${FLAG}") + ENDIF() + ENDIF() + ENDIF() +ENDFUNCTION() + +#These will define KOKKOS_AMDGPU_ARCH_FLAG +#to the corresponding flag name if ON +CHECK_AMDGPU_ARCH(VEGA900 gfx900) # Radeon Instinct MI25 +CHECK_AMDGPU_ARCH(VEGA906 gfx906) # Radeon Instinct MI50 and MI60 + +IF (KOKKOS_ENABLE_OPENMPTARGET) + SET(CLANG_CUDA_ARCH ${KOKKOS_CUDA_ARCH_FLAG}) + IF (CLANG_CUDA_ARCH) + COMPILER_SPECIFIC_FLAGS( + Clang -Xopenmp-target -march=${CLANG_CUDA_ARCH} -fopenmp-targets=nvptx64-nvidia-cuda + XL -qtgtarch=${KOKKOS_CUDA_ARCH_FLAG} + ) + ENDIF() + SET(CLANG_AMDGPU_ARCH ${KOKKOS_AMDGPU_ARCH_FLAG}) + IF (CLANG_AMDGPU_ARCH) + COMPILER_SPECIFIC_FLAGS( + Clang -Xopenmp-target=amdgcn-amd-amdhsa -march=${CLANG_AMDGPU_ARCH} -fopenmp-targets=amdgcn-amd-amdhsa + ) + ENDIF() +ENDIF() + +IF(KOKKOS_ENABLE_CUDA AND NOT CUDA_ARCH_ALREADY_SPECIFIED) + MESSAGE(SEND_ERROR "CUDA enabled but no NVIDIA GPU architecture currently enabled. Please give one -DKokkos_ARCH_{..}=ON' to enable an NVIDIA GPU architecture.") +ENDIF() + #CMake verbose is kind of pointless #Let's just always print things MESSAGE(STATUS "Execution Spaces:") -IF(KOKKOS_ENABLE_CUDA) - MESSAGE(STATUS " Device Parallel: CUDA") -ELSE() - MESSAGE(STATUS " Device Parallel: NONE") + +FOREACH (_BACKEND CUDA OPENMPTARGET HIP) + IF(KOKKOS_ENABLE_${_BACKEND}) + IF(_DEVICE_PARALLEL) + MESSAGE(FATAL_ERROR "Multiple device parallel execution spaces are not allowed! " + "Trying to enable execution space ${_BACKEND}, " + "but execution space ${_DEVICE_PARALLEL} is already enabled. " + "Remove the CMakeCache.txt file and re-configure.") + ENDIF() + SET(_DEVICE_PARALLEL ${_BACKEND}) + ENDIF() +ENDFOREACH() +IF(NOT _DEVICE_PARALLEL) + SET(_DEVICE_PARALLEL "NONE") ENDIF() +MESSAGE(STATUS " Device Parallel: ${_DEVICE_PARALLEL}") +UNSET(_DEVICE_PARALLEL) + FOREACH (_BACKEND OPENMP PTHREAD HPX) IF(KOKKOS_ENABLE_${_BACKEND}) diff --git a/lib/kokkos/cmake/kokkos_check_env.cmake b/lib/kokkos/cmake/kokkos_check_env.cmake new file mode 100644 index 0000000000..a455a403b9 --- /dev/null +++ b/lib/kokkos/cmake/kokkos_check_env.cmake @@ -0,0 +1,12 @@ +SET(CRAYPE_VERSION $ENV{CRAYPE_VERSION}) +IF (CRAYPE_VERSION) + SET(KOKKOS_IS_CRAYPE TRUE) + SET(CRAYPE_LINK_TYPE $ENV{CRAYPE_LINK_TYPE}) + IF (CRAYPE_LINK_TYPE) + IF (NOT CRAYPE_LINK_TYPE STREQUAL "dynamic") + MESSAGE(WARNING "CRAYPE_LINK_TYPE is set to ${CRAYPE_LINK_TYPE}. Linking is likely to fail unless this is set to 'dynamic'") + ENDIF() + ELSE() + MESSAGE(WARNING "CRAYPE_LINK_TYPE is not set. Linking is likely to fail unless this is set to 'dynamic'") + ENDIF() +ENDIF() diff --git a/lib/kokkos/cmake/kokkos_compiler_id.cmake b/lib/kokkos/cmake/kokkos_compiler_id.cmake index d239c3b32e..cd5e7c9e4e 100644 --- a/lib/kokkos/cmake/kokkos_compiler_id.cmake +++ b/lib/kokkos/cmake/kokkos_compiler_id.cmake @@ -13,7 +13,7 @@ EXECUTE_PROCESS(COMMAND ${CMAKE_CXX_COMPILER} --version STRING(REGEX REPLACE "^ +" "" - INTERNAL_HAVE_COMPILER_NVCC ${INTERNAL_HAVE_COMPILER_NVCC}) + INTERNAL_HAVE_COMPILER_NVCC "${INTERNAL_HAVE_COMPILER_NVCC}") IF(INTERNAL_HAVE_COMPILER_NVCC) @@ -31,16 +31,32 @@ IF(INTERNAL_HAVE_COMPILER_NVCC) SET(KOKKOS_CXX_COMPILER_VERSION ${TEMP_CXX_COMPILER_VERSION} CACHE STRING INTERNAL FORCE) ENDIF() -IF(KOKKOS_CXX_COMPILER_ID STREQUAL Cray) - # SET nvcc's compiler version. +IF(KOKKOS_CXX_COMPILER_ID STREQUAL Clang) + # The Cray compiler reports as Clang to most versions of CMake + EXECUTE_PROCESS(COMMAND ${CMAKE_CXX_COMPILER} --version + COMMAND grep Cray + COMMAND wc -l + OUTPUT_VARIABLE INTERNAL_HAVE_CRAY_COMPILER + OUTPUT_STRIP_TRAILING_WHITESPACE) + IF (INTERNAL_HAVE_CRAY_COMPILER) #not actually Clang + SET(KOKKOS_CLANG_IS_CRAY TRUE) + ENDIF() +ENDIF() + +IF(KOKKOS_CXX_COMPILER_ID STREQUAL Cray OR KOKKOS_CLANG_IS_CRAY) + # SET Cray's compiler version. EXECUTE_PROCESS(COMMAND ${CMAKE_CXX_COMPILER} --version OUTPUT_VARIABLE INTERNAL_CXX_COMPILER_VERSION OUTPUT_STRIP_TRAILING_WHITESPACE) - STRING(REGEX MATCH "[0-9]+\\.[0-9]+\\.[0-9]+$" + STRING(REGEX MATCH "[0-9]+\\.[0-9]+\\.[0-9]+" TEMP_CXX_COMPILER_VERSION ${INTERNAL_CXX_COMPILER_VERSION}) - SET(KOKKOS_CXX_COMPILER_VERSION ${TEMP_CXX_COMPILER_VERSION} CACHE STRING INTERNAL FORCE) + IF (KOKKOS_CLANG_IS_CRAY) + SET(KOKKOS_CLANG_CRAY_COMPILER_VERSION ${TEMP_CXX_COMPILER_VERSION}) + ELSE() + SET(KOKKOS_CXX_COMPILER_VERSION ${TEMP_CXX_COMPILER_VERSION} CACHE STRING INTERNAL FORCE) + ENDIF() ENDIF() # Enforce the minimum compilers supported by Kokkos. diff --git a/lib/kokkos/cmake/kokkos_corner_cases.cmake b/lib/kokkos/cmake/kokkos_corner_cases.cmake index c03c385faf..e30be3c841 100644 --- a/lib/kokkos/cmake/kokkos_corner_cases.cmake +++ b/lib/kokkos/cmake/kokkos_corner_cases.cmake @@ -1,4 +1,4 @@ -IF(KOKKOS_CXX_COMPILER_ID STREQUAL Clang AND KOKKOS_ENABLE_OPENMP) +IF(KOKKOS_CXX_COMPILER_ID STREQUAL Clang AND KOKKOS_ENABLE_OPENMP AND NOT KOKKOS_CLANG_IS_CRAY) # The clang "version" doesn't actually tell you what runtimes and tools # were built into Clang. We should therefore make sure that libomp # was actually built into Clang. Otherwise the user will get nonsensical @@ -11,7 +11,7 @@ IF(KOKKOS_CXX_COMPILER_ID STREQUAL Clang AND KOKKOS_ENABLE_OPENMP) #also - this is easier to use than CMakeCheckCXXSourceCompiles TRY_COMPILE(CLANG_HAS_OMP ${KOKKOS_TOP_BUILD_DIR}/corner_cases - ${KOKKOS_SOURCE_DIR}/cmake/compile_tests/clang_omp.cpp + ${KOKKOS_SOURCE_DIR}/cmake/compile_tests/clang_omp.cpp COMPILE_DEFINITIONS -fopenmp=libomp LINK_LIBRARIES -fopenmp=libomp ) @@ -22,6 +22,30 @@ IF(KOKKOS_CXX_COMPILER_ID STREQUAL Clang AND KOKKOS_ENABLE_OPENMP) UNSET(CLANG_HAS_OMP CACHE) #make sure CMake always re-runs this ENDIF() +IF(KOKKOS_CXX_COMPILER_ID STREQUAL AppleClang AND KOKKOS_ENABLE_OPENMP) + # The clang "version" doesn't actually tell you what runtimes and tools + # were built into Clang. We should therefore make sure that libomp + # was actually built into Clang. Otherwise the user will get nonsensical + # errors when they try to build. + + #Try compile is the height of CMake nonsense + #I can't just give it compiler and link flags + #I have to hackily pretend that compiler flags are compiler definitions + #and that linker flags are libraries + #also - this is easier to use than CMakeCheckCXXSourceCompiles + TRY_COMPILE(APPLECLANG_HAS_OMP + ${KOKKOS_TOP_BUILD_DIR}/corner_cases + ${KOKKOS_SOURCE_DIR}/cmake/compile_tests/clang_omp.cpp + COMPILE_DEFINITIONS -Xpreprocessor -fopenmp + LINK_LIBRARIES -lomp + ) + IF (NOT APPLECLANG_HAS_OMP) + UNSET(APPLECLANG_HAS_OMP CACHE) #make sure CMake always re-runs this + MESSAGE(FATAL_ERROR "AppleClang failed OpenMP check. You have requested -DKokkos_ENABLE_OPENMP=ON, but the AppleClang compiler does not appear to have been built with OpenMP support") + ENDIF() + UNSET(APPLECLANG_HAS_OMP CACHE) #make sure CMake always re-runs this +ENDIF() + IF (KOKKOS_CXX_STANDARD STREQUAL 17) IF (KOKKOS_CXX_COMPILER_ID STREQUAL GNU AND KOKKOS_CXX_COMPILER_VERSION VERSION_LESS 7) diff --git a/lib/kokkos/cmake/kokkos_enable_devices.cmake b/lib/kokkos/cmake/kokkos_enable_devices.cmake index ff09876673..7b50cfe458 100644 --- a/lib/kokkos/cmake/kokkos_enable_devices.cmake +++ b/lib/kokkos/cmake/kokkos_enable_devices.cmake @@ -31,6 +31,41 @@ ELSE() SET(OMP_DEFAULT OFF) ENDIF() KOKKOS_DEVICE_OPTION(OPENMP ${OMP_DEFAULT} HOST "Whether to build OpenMP backend") +IF(KOKKOS_ENABLE_OPENMP) + SET(ClangOpenMPFlag -fopenmp=libomp) + IF(KOKKOS_CLANG_IS_CRAY) + SET(ClangOpenMPFlag -fopenmp) + ENDIF() + COMPILER_SPECIFIC_FLAGS( + Clang ${ClangOpenMPFlag} + AppleClang -Xpreprocessor -fopenmp + PGI -mp + NVIDIA -Xcompiler -fopenmp + Cray NO-VALUE-SPECIFIED + XL -qsmp=omp + DEFAULT -fopenmp + ) + COMPILER_SPECIFIC_LIBS( + AppleClang -lomp + ) +ENDIF() + +KOKKOS_DEVICE_OPTION(OPENMPTARGET OFF DEVICE "Whether to build the OpenMP target backend") +IF (KOKKOS_ENABLE_OPENMPTARGET) + COMPILER_SPECIFIC_FLAGS( + Clang -fopenmp -fopenmp=libomp + XL -qsmp=omp -qoffload -qnoeh + DEFAULT -fopenmp + ) + COMPILER_SPECIFIC_DEFS( + XL KOKKOS_IBM_XL_OMP45_WORKAROUND + Clang KOKKOS_WORKAROUND_OPENMPTARGET_CLANG + ) +# Are there compilers which identify as Clang and need this library? +# COMPILER_SPECIFIC_LIBS( +# Clang -lopenmptarget +# ) +ENDIF() IF(Trilinos_ENABLE_Kokkos AND TPL_ENABLE_CUDA) SET(CUDA_DEFAULT ON) @@ -59,3 +94,5 @@ ENDIF() KOKKOS_DEVICE_OPTION(SERIAL ${SERIAL_DEFAULT} HOST "Whether to build serial backend") KOKKOS_DEVICE_OPTION(HPX OFF HOST "Whether to build HPX backend (experimental)") + +KOKKOS_DEVICE_OPTION(HIP OFF DEVICE "Whether to build HIP backend") diff --git a/lib/kokkos/cmake/kokkos_enable_options.cmake b/lib/kokkos/cmake/kokkos_enable_options.cmake index c0e49482b6..4560c3df8f 100644 --- a/lib/kokkos/cmake/kokkos_enable_options.cmake +++ b/lib/kokkos/cmake/kokkos_enable_options.cmake @@ -21,6 +21,7 @@ ENDFUNCTION() # Certain defaults will depend on knowing the enabled devices KOKKOS_CFG_DEPENDS(OPTIONS DEVICES) +KOKKOS_CFG_DEPENDS(OPTIONS COMPILER_ID) # Put a check in just in case people are using this option KOKKOS_DEPRECATED_LIST(OPTIONS ENABLE) @@ -28,8 +29,10 @@ KOKKOS_DEPRECATED_LIST(OPTIONS ENABLE) KOKKOS_ENABLE_OPTION(CUDA_RELOCATABLE_DEVICE_CODE OFF "Whether to enable relocatable device code (RDC) for CUDA") KOKKOS_ENABLE_OPTION(CUDA_UVM OFF "Whether to use unified memory (UM) for CUDA by default") KOKKOS_ENABLE_OPTION(CUDA_LDG_INTRINSIC OFF "Whether to use CUDA LDG intrinsics") +KOKKOS_ENABLE_OPTION(HIP_RELOCATABLE_DEVICE_CODE OFF "Whether to enable relocatable device code (RDC) for HIP") KOKKOS_ENABLE_OPTION(HPX_ASYNC_DISPATCH OFF "Whether HPX supports asynchronous dispatch") KOKKOS_ENABLE_OPTION(TESTS OFF "Whether to build the unit tests") +KOKKOS_ENABLE_OPTION(EXAMPLES OFF "Whether to build the examples") STRING(TOUPPER "${CMAKE_BUILD_TYPE}" UPPERCASE_CMAKE_BUILD_TYPE) IF(UPPERCASE_CMAKE_BUILD_TYPE STREQUAL "DEBUG") KOKKOS_ENABLE_OPTION(DEBUG ON "Whether to activate extra debug features - may increase compile times") @@ -51,12 +54,14 @@ IF (KOKKOS_ENABLE_CUDA) SET(KOKKOS_COMPILER_CUDA_VERSION "${KOKKOS_COMPILER_VERSION_MAJOR}${KOKKOS_COMPILER_VERSION_MINOR}") ENDIF() -IF (Trilinos_ENABLE_Kokkos AND TPL_ENABLE_CUDA AND DEFINED KOKKOS_COMPILER_CUDA_VERSION AND KOKKOS_COMPILER_CUDA_VERSION GREATER 70) - SET(LAMBDA_DEFAULT ON) +IF (Trilinos_ENABLE_Kokkos AND TPL_ENABLE_CUDA) + SET(CUDA_LAMBDA_DEFAULT ON) +ELSEIF (KOKKOS_ENABLE_CUDA AND (KOKKOS_CXX_COMPILER_ID STREQUAL Clang)) + SET(CUDA_LAMBDA_DEFAULT ON) ELSE() - SET(LAMBDA_DEFAULT OFF) + SET(CUDA_LAMBDA_DEFAULT OFF) ENDIF() -KOKKOS_ENABLE_OPTION(CUDA_LAMBDA ${LAMBDA_DEFAULT} "Whether to activate experimental lambda features") +KOKKOS_ENABLE_OPTION(CUDA_LAMBDA ${CUDA_LAMBDA_DEFAULT} "Whether to activate experimental lambda features") IF (Trilinos_ENABLE_Kokkos) SET(COMPLEX_ALIGN_DEFAULT OFF) ELSE() @@ -64,7 +69,13 @@ ELSE() ENDIF() KOKKOS_ENABLE_OPTION(COMPLEX_ALIGN ${COMPLEX_ALIGN_DEFAULT} "Whether to align Kokkos::complex to 2*alignof(RealType)") -KOKKOS_ENABLE_OPTION(CUDA_CONSTEXPR OFF "Whether to activate experimental relaxed constexpr functions") + +IF (KOKKOS_ENABLE_CUDA AND (KOKKOS_CXX_COMPILER_ID STREQUAL Clang)) + SET(CUDA_CONSTEXPR_DEFAULT ON) +ELSE() + SET(CUDA_CONSTEXPR_DEFAULT OFF) +ENDIF() +KOKKOS_ENABLE_OPTION(CUDA_CONSTEXPR ${CUDA_CONSTEXPR_DEFAULT} "Whether to activate experimental relaxed constexpr functions") FUNCTION(check_device_specific_options) CMAKE_PARSE_ARGUMENTS(SOME "" "DEVICE" "OPTIONS" ${ARGN}) @@ -84,9 +95,18 @@ FUNCTION(check_device_specific_options) ENDFUNCTION() CHECK_DEVICE_SPECIFIC_OPTIONS(DEVICE CUDA OPTIONS CUDA_UVM CUDA_RELOCATABLE_DEVICE_CODE CUDA_LAMBDA CUDA_CONSTEXPR CUDA_LDG_INTRINSIC) +CHECK_DEVICE_SPECIFIC_OPTIONS(DEVICE HIP OPTIONS HIP_RELOCATABLE_DEVICE_CODE) CHECK_DEVICE_SPECIFIC_OPTIONS(DEVICE HPX OPTIONS HPX_ASYNC_DISPATCH) # Needed due to change from deprecated name to new header define name IF (KOKKOS_ENABLE_AGGRESSIVE_VECTORIZATION) SET(KOKKOS_OPT_RANGE_AGGRESSIVE_VECTORIZATION ON) ENDIF() + +# This is known to occur with Clang 9. We would need to use nvcc as the linker +# http://lists.llvm.org/pipermail/cfe-dev/2018-June/058296.html +# TODO: Through great effort we can use a different linker by hacking +# CMAKE_CXX_LINK_EXECUTABLE in a future release +IF (KOKKOS_ENABLE_CUDA_RELOCATABLE_DEVICE_CODE AND KOKKOS_CXX_COMPILER_ID STREQUAL Clang) + MESSAGE(FATAL_ERROR "Relocatable device code is currently not supported with Clang - must use nvcc_wrapper or turn off RDC") +ENDIF() diff --git a/lib/kokkos/cmake/kokkos_functions.cmake b/lib/kokkos/cmake/kokkos_functions.cmake index 3644c48ddd..fd04966baf 100644 --- a/lib/kokkos/cmake/kokkos_functions.cmake +++ b/lib/kokkos/cmake/kokkos_functions.cmake @@ -3,9 +3,9 @@ # kokkos_option # Validate options are given with correct case and define an internal -# upper-case version for use within +# upper-case version for use within -# +# # # @FUNCTION: kokkos_deprecated_list # @@ -62,7 +62,7 @@ FUNCTION(kokkos_option CAMEL_SUFFIX DEFAULT TYPE DOCSTRING) UNSET(${opt} CACHE) ELSE() MESSAGE(FATAL_ERROR "Matching option found for ${CAMEL_NAME} with the wrong case ${opt}. Please delete your CMakeCache.txt and change option to -D${CAMEL_NAME}=${${opt}}. This is now enforced to avoid hard-to-debug CMake cache inconsistencies.") - ENDIF() + ENDIF() ENDIF() ENDIF() ENDFOREACH() @@ -125,7 +125,7 @@ MACRO(kokkos_export_imported_tpl NAME) KOKKOS_APPEND_CONFIG_LINE("IF(NOT TARGET ${NAME})") KOKKOS_APPEND_CONFIG_LINE("ADD_LIBRARY(${NAME} UNKNOWN IMPORTED)") KOKKOS_APPEND_CONFIG_LINE("SET_TARGET_PROPERTIES(${NAME} PROPERTIES") - + GET_TARGET_PROPERTY(TPL_LIBRARY ${NAME} IMPORTED_LOCATION) IF(TPL_LIBRARY) KOKKOS_APPEND_CONFIG_LINE("IMPORTED_LOCATION ${TPL_LIBRARY}") @@ -198,7 +198,7 @@ MACRO(kokkos_import_tpl NAME) # I have still been getting errors about ROOT variables being ignored # I'm not sure if this is a scope issue - but make sure # the policy is set before we do any find_package calls - IF(${CMAKE_VERSION} VERSION_GREATER_EQUAL "3.12.0") + IF(${CMAKE_VERSION} VERSION_GREATER_EQUAL "3.12.0") CMAKE_POLICY(SET CMP0074 NEW) ENDIF() @@ -341,11 +341,12 @@ ENDMACRO() # default, custom paths are prioritized over system paths. The searched # order is: # 1. _ROOT variable -# 2. Kokkos__DIR variable -# 3. Locations in the PATHS option -# 4. Default system paths, if allowed. +# 2. _ROOT environment variable +# 3. Kokkos__DIR variable +# 4. Locations in the PATHS option +# 5. Default system paths, if allowed. # -# Default system paths are allowed if none of options (1)-(3) are specified +# Default system paths are allowed if none of options (1)-(4) are specified # or if default paths are specifically allowed via ALLOW_SYSTEM_PATH_FALLBACK # # Usage:: @@ -387,33 +388,29 @@ MACRO(kokkos_find_header VAR_NAME HEADER TPL_NAME) "PATHS" ${ARGN}) - SET(${HEADER}_FOUND FALSE) + SET(${VAR_NAME} "${VARNAME}-NOTFOUND") SET(HAVE_CUSTOM_PATHS FALSE) - IF(NOT ${HEADER}_FOUND AND DEFINED ${TPL_NAME}_ROOT) - #ONLY look in the root directory - FIND_PATH(${VAR_NAME} ${HEADER} PATHS ${${TPL_NAME}_ROOT}/include NO_DEFAULT_PATH) - SET(HAVE_CUSTOM_PATHS TRUE) - ENDIF() - IF(NOT ${HEADER}_FOUND AND DEFINED KOKKOS_${TPL_NAME}_DIR) - #ONLY look in the root directory - FIND_PATH(${VAR_NAME} ${HEADER} PATHS ${KOKKOS_${TPL_NAME}_DIR}/include NO_DEFAULT_PATH) + IF(DEFINED ${TPL_NAME}_ROOT OR + DEFINED ENV{${TPL_NAME}_ROOT} OR + DEFINED KOKKOS_${TPL_NAME}_DIR OR + TPL_PATHS) + FIND_PATH(${VAR_NAME} ${HEADER} + PATHS + ${${TPL_NAME}_ROOT} + $ENV{${TPL_NAME}_ROOT} + ${KOKKOS_${TPL_NAME}_DIR} + ${TPL_PATHS} + PATH_SUFFIXES include + NO_DEFAULT_PATH) SET(HAVE_CUSTOM_PATHS TRUE) ENDIF() - IF (NOT ${HEADER}_FOUND AND TPL_PATHS) - #we got custom paths - #ONLY look in these paths and nowhere else - FIND_PATH(${VAR_NAME} ${HEADER} PATHS ${TPL_PATHS} NO_DEFAULT_PATH) - SET(HAVE_CUSTOM_PATHS TRUE) + IF(NOT HAVE_CUSTOM_PATHS OR TPL_ALLOW_SYSTEM_PATH_FALLBACK) + #No-op if ${VAR_NAME} set by previous call + FIND_PATH(${VAR_NAME} ${HEADER}) ENDIF() - IF (NOT HAVE_CUSTOM_PATHS OR TPL_ALLOW_SYSTEM_PATH_FALLBACK) - #Now go ahead and look in system paths - IF (NOT ${HEADER}_FOUND) - FIND_PATH(${VAR_NAME} ${HEADER}) - ENDIF() - ENDIF() ENDMACRO() # @@ -424,9 +421,10 @@ ENDMACRO() # default, custom paths are prioritized over system paths. The search # order is: # 1. _ROOT variable -# 2. Kokkos__DIR variable -# 3. Locations in the PATHS option -# 4. Default system paths, if allowed. +# 2. _ROOT environment variable +# 3. Kokkos__DIR variable +# 4. Locations in the PATHS option +# 5. Default system paths, if allowed. # # Default system paths are allowed if none of options (1)-(3) are specified # or if default paths are specifically allowed via ALLOW_SYSTEM_PATH_FALLBACK @@ -439,6 +437,7 @@ ENDMACRO() # # [ALLOW_SYSTEM_PATH_FALLBACK] # [PATHS path1 [path2 ...]] +# [SUFFIXES suffix1 [suffix2 ...]] # ) # # ```` @@ -463,39 +462,46 @@ ENDMACRO() # # Custom paths to search for the library # +# ``SUFFIXES`` +# +# Suffixes appended to PATHS when attempting to locate +# the library. Defaults to {lib, lib64}. +# MACRO(kokkos_find_library VAR_NAME LIB TPL_NAME) CMAKE_PARSE_ARGUMENTS(TPL "ALLOW_SYSTEM_PATH_FALLBACK" "" - "PATHS" + "PATHS;SUFFIXES" ${ARGN}) - SET(${LIB}_FOUND FALSE) - SET(HAVE_CUSTOM_PATHS FALSE) - IF(NOT ${LIB}_FOUND AND DEFINED ${TPL_NAME}_ROOT) - FIND_LIBRARY(${VAR_NAME} ${LIB} PATHS ${${TPL_NAME}_ROOT}/lib ${${TPL_NAME}_ROOT}/lib64 NO_DEFAULT_PATH) - SET(HAVE_CUSTOM_PATHS TRUE) + IF(NOT TPL_SUFFIXES) + SET(TPL_SUFFIXES lib lib64) ENDIF() - IF(NOT ${LIB}_FOUND AND DEFINED KOKKOS_${TPL_NAME}_DIR) - #we got root paths, only look in these paths and nowhere else - FIND_LIBRARY(${VAR_NAME} ${LIB} PATHS ${KOKKOS_${TPL_NAME}_DIR}/lib ${KOKKOS_${TPL_NAME}_DIR}/lib64 NO_DEFAULT_PATH) - SET(HAVE_CUSTOM_PATHS TRUE) - ENDIF() + SET(${VAR_NAME} "${VARNAME}-NOTFOUND") + SET(HAVE_CUSTOM_PATHS FALSE) - IF (NOT ${LIB}_FOUND AND TPL_PATHS) - #we got custom paths, only look in these paths and nowhere else - FIND_LIBRARY(${VAR_NAME} ${LIB} PATHS ${TPL_PATHS} NO_DEFAULT_PATH) + IF(DEFINED ${TPL_NAME}_ROOT OR + DEFINED ENV{${TPL_NAME}_ROOT} OR + DEFINED KOKKOS_${TPL_NAME}_DIR OR + TPL_PATHS) + FIND_LIBRARY(${VAR_NAME} ${LIB} + PATHS + ${${TPL_NAME}_ROOT} + $ENV{${TPL_NAME}_ROOT} + ${KOKKOS_${TPL_NAME}_DIR} + ${TPL_PATHS} + PATH_SUFFIXES + ${TPL_SUFFIXES} + NO_DEFAULT_PATH) SET(HAVE_CUSTOM_PATHS TRUE) ENDIF() - - IF (NOT HAVE_CUSTOM_PATHS OR TPL_ALLOW_SYSTEM_PATH_FALLBACK) - IF (NOT ${LIB}_FOUND) - #Now go ahead and look in system paths - FIND_LIBRARY(${VAR_NAME} ${LIB}) - ENDIF() + IF(NOT HAVE_CUSTOM_PATHS OR TPL_ALLOW_SYSTEM_PATH_FALLBACK) + #No-op if ${VAR_NAME} set by previous call + FIND_LIBRARY(${VAR_NAME} ${LIB} PATH_SUFFIXES ${TPL_SUFFIXES}) ENDIF() + ENDMACRO() # @@ -510,26 +516,28 @@ ENDMACRO() # # INTERFACE # ALLOW_SYSTEM_PATH_FALLBACK -# LIBRARY -# LINK_LIBRARIES ... -# COMPILE_OPTIONS ... -# LINK_OPTIONS ... +# MODULE_NAME +# IMPORTED_NAME +# LIBRARY +# LIBRARIES ... +# LIBRARY_PATHS ... +# LIBRARY_SUFFIXES ... +# HEADER +# HEADERS ... +# HEADER_PATHS ... +# ) # # ``INTERFACE`` # # If specified, this TPL will build an INTERFACE library rather than an # IMPORTED target # -# ``ALLOW_SYSTEM_PATH_FALLBACK" +# ``ALLOW_SYSTEM_PATH_FALLBACK`` # # If custom paths are given and the library is not found # should we be allowed to search default system paths # or error out if not found in given paths. # -# ``LIBRARY `` -# -# If specified, this gives the name of the library to look for -# # ``MODULE_NAME `` # # If specified, the name of the enclosing module passed to @@ -541,29 +549,42 @@ ENDMACRO() # If specified, this gives the name of the target to build. # Defaults to Kokkos:: # +# ``LIBRARY `` +# +# If specified, this gives the name of the library to look for +# +# ``LIBRARIES ...`` +# +# If specified, this gives a list of libraries to find for the package +# # ``LIBRARY_PATHS ...`` # -# If specified, this gives a list of paths to search for the library -# If not given, _ROOT/lib and _ROOT/lib64 will be searched. +# If specified, this gives a list of paths to search for the library. +# If not given, _ROOT will be searched. # -# ``HEADER_PATHS ...`` +# ``LIBRARY_SUFFIXES ...`` # -# If specified, this gives a list of paths to search for the headers -# If not given, _ROOT/include and _ROOT/include will be searched. +# Suffixes appended to LIBRARY_PATHS when attempting to locate +# libraries. If not given, defaults to {lib, lib64}. +# +# ``HEADER `` +# +# If specified, this gives the name of a header to to look for # # ``HEADERS ...`` # # If specified, this gives a list of headers to find for the package # -# ``LIBRARIES ...`` +# ``HEADER_PATHS ...`` # -# If specified, this gives a list of libraries to find for the package +# If specified, this gives a list of paths to search for the headers +# If not given, _ROOT/include and _ROOT/include will be searched. # MACRO(kokkos_find_imported NAME) CMAKE_PARSE_ARGUMENTS(TPL "INTERFACE;ALLOW_SYSTEM_PATH_FALLBACK" - "HEADER;LIBRARY;IMPORTED_NAME;MODULE_NAME" - "HEADER_PATHS;LIBRARY_PATHS;HEADERS;LIBRARIES" + "IMPORTED_NAME;MODULE_NAME;LIBRARY;HEADER" + "LIBRARIES;LIBRARY_PATHS;LIBRARY_SUFFIXES;HEADERS;HEADER_PATHS" ${ARGN}) IF(NOT TPL_MODULE_NAME) @@ -584,6 +605,10 @@ MACRO(kokkos_find_imported NAME) ENDIF() ENDIF() + IF (NOT TPL_LIBRARY_SUFFIXES) + SET(TPL_LIBRARY_SUFFIXES lib lib64) + ENDIF() + SET(${NAME}_INCLUDE_DIRS) IF (TPL_HEADER) KOKKOS_FIND_HEADER(${NAME}_INCLUDE_DIRS ${TPL_HEADER} ${NAME} ${ALLOW_PATH_FALLBACK_OPT} PATHS ${TPL_HEADER_PATHS}) @@ -598,16 +623,22 @@ MACRO(kokkos_find_imported NAME) SET(${NAME}_LIBRARY) IF(TPL_LIBRARY) - KOKKOS_FIND_LIBRARY(${NAME}_LIBRARY ${TPL_LIBRARY} ${NAME} ${ALLOW_PATH_FALLBACK_OPT} PATHS ${TPL_LIBRARY_PATHS}) + KOKKOS_FIND_LIBRARY(${NAME}_LIBRARY ${TPL_LIBRARY} ${NAME} + ${ALLOW_PATH_FALLBACK_OPT} + PATHS ${TPL_LIBRARY_PATHS} + SUFFIXES ${TPL_LIBRARY_SUFFIXES}) ENDIF() SET(${NAME}_FOUND_LIBRARIES) FOREACH(LIB ${TPL_LIBRARIES}) - KOKKOS_FIND_LIBRARY(${LIB}_LOCATION ${LIB} ${NAME} ${ALLOW_PATH_FALLBACK_OPT} PATHS ${TPL_LIBRARY_PATHS}) + KOKKOS_FIND_LIBRARY(${LIB}_LOCATION ${LIB} ${NAME} + ${ALLOW_PATH_FALLBACK_OPT} + PATHS ${TPL_LIBRARY_PATHS} + SUFFIXES ${TPL_LIBRARY_SUFFIXES}) IF(${LIB}_LOCATION) LIST(APPEND ${NAME}_FOUND_LIBRARIES ${${LIB}_LOCATION}) ELSE() - SET(${NAME}_FOUND_LIBRARIES ${${LIB}_LOCATION}) + SET(${NAME}_FOUND_LIBRARIES ${${LIB}_LOCATION}) BREAK() ENDIF() ENDFOREACH() @@ -629,6 +660,13 @@ MACRO(kokkos_find_imported NAME) MARK_AS_ADVANCED(${NAME}_INCLUDE_DIRS ${NAME}_FOUND_LIBRARIES ${NAME}_LIBRARY) + #this is so much fun on a Cray system + #/usr/include should never be added as a -isystem include + #this freaks out the compiler include search order + IF (KOKKOS_IS_CRAYPE) + LIST(REMOVE_ITEM ${NAME}_INCLUDE_DIRS "/usr/include") + ENDIF() + IF (${TPL_MODULE_NAME}_FOUND) SET(IMPORT_TYPE) IF (TPL_INTERFACE) @@ -698,3 +736,66 @@ FUNCTION(kokkos_link_tpl TARGET) ENDIF() ENDFUNCTION() +FUNCTION(COMPILER_SPECIFIC_OPTIONS_HELPER) + SET(COMPILERS NVIDIA PGI XL DEFAULT Cray Intel Clang AppleClang GNU) + CMAKE_PARSE_ARGUMENTS( + PARSE + "LINK_OPTIONS;COMPILE_OPTIONS;COMPILE_DEFINITIONS;LINK_LIBRARIES" + "" + "${COMPILERS}" + ${ARGN}) + IF(PARSE_UNPARSED_ARGUMENTS) + MESSAGE(SEND_ERROR "'${PARSE_UNPARSED_ARGUMENTS}' argument(s) not recognized when providing compiler specific options") + ENDIF() + + SET(COMPILER ${KOKKOS_CXX_COMPILER_ID}) + + SET(COMPILER_SPECIFIC_FLAGS_TMP) + FOREACH(COMP ${COMPILERS}) + IF (COMPILER STREQUAL "${COMP}") + IF (PARSE_${COMPILER}) + IF (NOT "${PARSE_${COMPILER}}" STREQUAL "NO-VALUE-SPECIFIED") + SET(COMPILER_SPECIFIC_FLAGS_TMP ${PARSE_${COMPILER}}) + ENDIF() + ELSEIF(PARSE_DEFAULT) + SET(COMPILER_SPECIFIC_FLAGS_TMP ${PARSE_DEFAULT}) + ENDIF() + ENDIF() + ENDFOREACH() + + IF (PARSE_COMPILE_OPTIONS) + # The funky logic here is for future handling of argument deduplication + # If we naively pass multiple -Xcompiler flags to target_compile_options + # -Xcompiler will get deduplicated and break the build + IF ("-Xcompiler" IN_LIST COMPILER_SPECIFIC_FLAGS_TMP) + LIST(REMOVE_ITEM COMPILER_SPECIFIC_FLAGS_TMP "-Xcompiler") + GLOBAL_APPEND(KOKKOS_XCOMPILER_OPTIONS ${COMPILER_SPECIFIC_FLAGS_TMP}) + ELSE() + GLOBAL_APPEND(KOKKOS_COMPILE_OPTIONS ${COMPILER_SPECIFIC_FLAGS_TMP}) + ENDIF() + ENDIF() + + IF (PARSE_LINK_OPTIONS) + GLOBAL_APPEND(KOKKOS_LINK_OPTIONS ${COMPILER_SPECIFIC_FLAGS_TMP}) + ENDIF() + + IF (PARSE_COMPILE_DEFINITIONS) + GLOBAL_APPEND(KOKKOS_COMPILE_DEFINITIONS ${COMPILER_SPECIFIC_FLAGS_TMP}) + ENDIF() + + IF (PARSE_LINK_LIBRARIES) + GLOBAL_APPEND(KOKKOS_LINK_LIBRARIES ${COMPILER_SPECIFIC_FLAGS_TMP}) + ENDIF() +ENDFUNCTION(COMPILER_SPECIFIC_OPTIONS_HELPER) + +FUNCTION(COMPILER_SPECIFIC_FLAGS) + COMPILER_SPECIFIC_OPTIONS_HELPER(${ARGN} COMPILE_OPTIONS LINK_OPTIONS) +ENDFUNCTION(COMPILER_SPECIFIC_FLAGS) + +FUNCTION(COMPILER_SPECIFIC_DEFS) + COMPILER_SPECIFIC_OPTIONS_HELPER(${ARGN} COMPILE_DEFINITIONS) +ENDFUNCTION(COMPILER_SPECIFIC_DEFS) + +FUNCTION(COMPILER_SPECIFIC_LIBS) + COMPILER_SPECIFIC_OPTIONS_HELPER(${ARGN} LINK_LIBRARIES) +ENDFUNCTION(COMPILER_SPECIFIC_LIBS) diff --git a/lib/kokkos/cmake/kokkos_install.cmake b/lib/kokkos/cmake/kokkos_install.cmake index 1e4a5a2aad..6a39590f03 100644 --- a/lib/kokkos/cmake/kokkos_install.cmake +++ b/lib/kokkos/cmake/kokkos_install.cmake @@ -31,12 +31,11 @@ IF (NOT KOKKOS_HAS_TRILINOS) ELSE() CONFIGURE_FILE(cmake/KokkosConfigCommon.cmake.in ${Kokkos_BINARY_DIR}/KokkosConfigCommon.cmake @ONLY) file(READ ${Kokkos_BINARY_DIR}/KokkosConfigCommon.cmake KOKKOS_CONFIG_COMMON) - file(APPEND "${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/KokkosConfig_install.cmake" ${KOKKOS_CONFIG_COMMON}) + file(APPEND "${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/KokkosConfig_install.cmake" "${KOKKOS_CONFIG_COMMON}") + CONFIGURE_FILE(cmake/KokkosTrilinosConfig.cmake.in ${Kokkos_BINARY_DIR}/KokkosTrilinosConfig.cmake @ONLY) + file(READ ${Kokkos_BINARY_DIR}/KokkosTrilinosConfig.cmake KOKKOS_TRILINOS_CONFIG) + file(APPEND "${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/KokkosConfig_install.cmake" "${KOKKOS_TRILINOS_CONFIG}") ENDIF() -# build and install pkgconfig file -CONFIGURE_FILE(core/src/kokkos.pc.in kokkos.pc @ONLY) -INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/kokkos.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) - INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/KokkosCore_config.h DESTINATION ${KOKKOS_HEADER_DIR}) diff --git a/lib/kokkos/cmake/kokkos_test_cxx_std.cmake b/lib/kokkos/cmake/kokkos_test_cxx_std.cmake index c264517abe..603b4b3d7a 100644 --- a/lib/kokkos/cmake/kokkos_test_cxx_std.cmake +++ b/lib/kokkos/cmake/kokkos_test_cxx_std.cmake @@ -14,12 +14,12 @@ FUNCTION(kokkos_set_cxx_standard_feature standard) ENDIF() ELSEIF(CMAKE_CXX_EXTENSIONS) IF(KOKKOS_DONT_ALLOW_EXTENSIONS) - MESSAGE(FATAL_ERROR "The chosen configuration does not support CXX extensions flags: ${KOKKOS_DONT_ALLOW_EXTENSIONS}. Must set CMAKE_CXX_EXTENSIONS=OFF to continue") + MESSAGE(FATAL_ERROR "The chosen configuration does not support CXX extensions flags: ${KOKKOS_DONT_ALLOW_EXTENSIONS}. Must set CMAKE_CXX_EXTENSIONS=OFF to continue") ELSE() GLOBAL_SET(KOKKOS_USE_CXX_EXTENSIONS ON) ENDIF() ELSE() - #For trilinos, we need to make sure downstream projects + #For trilinos, we need to make sure downstream projects GLOBAL_SET(KOKKOS_USE_CXX_EXTENSIONS OFF) ENDIF() @@ -29,6 +29,10 @@ FUNCTION(kokkos_set_cxx_standard_feature standard) ELSEIF(NOT KOKKOS_USE_CXX_EXTENSIONS AND ${STANDARD_NAME}) MESSAGE(STATUS "Using ${${STANDARD_NAME}} for C++${standard} standard as feature") GLOBAL_SET(KOKKOS_CXX_STANDARD_FEATURE ${FEATURE_NAME}) + ELSEIF(KOKKOS_CXX_COMPILER_ID STREQUAL "MSVC") + #MSVC doesn't need a command line flag, that doesn't mean it has no support + MESSAGE(STATUS "Using no flag for C++${standard} standard as feature") + GLOBAL_SET(KOKKOS_CXX_STANDARD_FEATURE ${FEATURE_NAME}) ELSE() #nope, we can't do anything here MESSAGE(WARNING "C++${standard} is not supported as a compiler feature. We will choose custom flags for now, but this behavior has been deprecated. Please open an issue at https://github.com/kokkos/kokkos/issues reporting that ${KOKKOS_CXX_COMPILER_ID} ${KOKKOS_CXX_COMPILER_VERSION} failed for ${KOKKOS_CXX_STANDARD}, preferrably including your CMake command.") @@ -119,6 +123,9 @@ IF (NOT KOKKOS_CXX_STANDARD_FEATURE) ELSEIF(KOKKOS_CXX_COMPILER_ID STREQUAL Intel) INCLUDE(${KOKKOS_SRC_PATH}/cmake/intel.cmake) kokkos_set_intel_flags(${KOKKOS_CXX_STANDARD} ${KOKKOS_CXX_INTERMEDIATE_STANDARD}) + ELSEIF(KOKKOS_CXX_COMPILER_ID STREQUAL "MSVC") + INCLUDE(${KOKKOS_SRC_PATH}/cmake/msvc.cmake) + kokkos_set_msvc_flags(${KOKKOS_CXX_STANDARD} ${KOKKOS_CXX_INTERMEDIATE_STANDARD}) ELSE() INCLUDE(${KOKKOS_SRC_PATH}/cmake/gnu.cmake) kokkos_set_gnu_flags(${KOKKOS_CXX_STANDARD} ${KOKKOS_CXX_INTERMEDIATE_STANDARD}) @@ -128,9 +135,9 @@ IF (NOT KOKKOS_CXX_STANDARD_FEATURE) IF (DEFINED CXX_STD_FLAGS_ACCEPTED) UNSET(CXX_STD_FLAGS_ACCEPTED CACHE) ENDIF() - CHECK_CXX_COMPILER_FLAG(${KOKKOS_CXX_STANDARD_FLAG} CXX_STD_FLAGS_ACCEPTED) + CHECK_CXX_COMPILER_FLAG("${KOKKOS_CXX_STANDARD_FLAG}" CXX_STD_FLAGS_ACCEPTED) IF (NOT CXX_STD_FLAGS_ACCEPTED) - CHECK_CXX_COMPILER_FLAG(${KOKKOS_CXX_INTERMEDIATE_STANDARD_FLAG} CXX_INT_STD_FLAGS_ACCEPTED) + CHECK_CXX_COMPILER_FLAG("${KOKKOS_CXX_INTERMEDIATE_STANDARD_FLAG}" CXX_INT_STD_FLAGS_ACCEPTED) IF (NOT CXX_INT_STD_FLAGS_ACCEPTED) MESSAGE(FATAL_ERROR "${KOKKOS_CXX_COMPILER_ID} did not accept ${KOKKOS_CXX_STANDARD_FLAG} or ${KOKKOS_CXX_INTERMEDIATE_STANDARD_FLAG}. You likely need to reduce the level of the C++ standard from ${KOKKOS_CXX_STANDARD}") ENDIF() diff --git a/lib/kokkos/cmake/kokkos_tpls.cmake b/lib/kokkos/cmake/kokkos_tpls.cmake index 181a497d52..76efd42847 100644 --- a/lib/kokkos/cmake/kokkos_tpls.cmake +++ b/lib/kokkos/cmake/kokkos_tpls.cmake @@ -15,6 +15,10 @@ KOKKOS_TPL_OPTION(CUDA Off) KOKKOS_TPL_OPTION(LIBRT Off) KOKKOS_TPL_OPTION(LIBDL On) +IF(KOKKOS_ENABLE_PROFILING AND NOT KOKKOS_ENABLE_LIBDL) + MESSAGE(SEND_ERROR "Kokkos_ENABLE_PROFILING requires Kokkos_ENABLE_LIBDL=ON") +ENDIF() + IF(Trilinos_ENABLE_Kokkos AND TPL_ENABLE_HPX) SET(HPX_DEFAULT ON) ELSE() diff --git a/lib/kokkos/cmake/kokkos_tribits.cmake b/lib/kokkos/cmake/kokkos_tribits.cmake index d2317d2446..1c3b704ada 100644 --- a/lib/kokkos/cmake/kokkos_tribits.cmake +++ b/lib/kokkos/cmake/kokkos_tribits.cmake @@ -43,6 +43,8 @@ MACRO(KOKKOS_SUBPACKAGE NAME) SET(PACKAGE_NAME ${PACKAGE_NAME}${NAME}) STRING(TOUPPER ${PACKAGE_NAME} PACKAGE_NAME_UC) SET(${PACKAGE_NAME}_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}) + #ADD_INTERFACE_LIBRARY(PACKAGE_${PACKAGE_NAME}) + #GLOBAL_SET(${PACKAGE_NAME}_LIBS "") endif() ENDMACRO() @@ -114,57 +116,63 @@ MACRO(KOKKOS_INTERNAL_ADD_LIBRARY_INSTALL LIBRARY_NAME) VERIFY_EMPTY(KOKKOS_ADD_LIBRARY ${PARSE_UNPARSED_ARGUMENTS}) ENDMACRO() -FUNCTION(KOKKOS_ADD_EXECUTABLE EXE_NAME) +FUNCTION(KOKKOS_ADD_EXECUTABLE ROOT_NAME) if (KOKKOS_HAS_TRILINOS) - TRIBITS_ADD_EXECUTABLE(${EXE_NAME} ${ARGN}) + TRIBITS_ADD_EXECUTABLE(${ROOT_NAME} ${ARGN}) else() - CMAKE_PARSE_ARGUMENTS(PARSE + CMAKE_PARSE_ARGUMENTS(PARSE "TESTONLY" "" "SOURCES;TESTONLYLIBS" ${ARGN}) + SET(EXE_NAME ${PACKAGE_NAME}_${ROOT_NAME}) ADD_EXECUTABLE(${EXE_NAME} ${PARSE_SOURCES}) IF (PARSE_TESTONLYLIBS) - TARGET_LINK_LIBRARIES(${EXE_NAME} ${PARSE_TESTONLYLIBS}) + TARGET_LINK_LIBRARIES(${EXE_NAME} PRIVATE ${PARSE_TESTONLYLIBS}) ENDIF() VERIFY_EMPTY(KOKKOS_ADD_EXECUTABLE ${PARSE_UNPARSED_ARGUMENTS}) + #All executables must link to all the kokkos targets + #This is just private linkage because exe is final + TARGET_LINK_LIBRARIES(${EXE_NAME} PRIVATE kokkos) endif() ENDFUNCTION() -IF(NOT TARGET check) - ADD_CUSTOM_TARGET(check COMMAND ${CMAKE_CTEST_COMMAND} -VV -C ${CMAKE_CFG_INTDIR}) -ENDIF() - - FUNCTION(KOKKOS_ADD_EXECUTABLE_AND_TEST ROOT_NAME) IF (KOKKOS_HAS_TRILINOS) TRIBITS_ADD_EXECUTABLE_AND_TEST( - ${ROOT_NAME} - TESTONLYLIBS kokkos_gtest + ${ROOT_NAME} + TESTONLYLIBS kokkos_gtest ${ARGN} NUM_MPI_PROCS 1 COMM serial mpi FAIL_REGULAR_EXPRESSION " FAILED " ) ELSE() - CMAKE_PARSE_ARGUMENTS(PARSE + CMAKE_PARSE_ARGUMENTS(PARSE "" "" "SOURCES;CATEGORIES" ${ARGN}) VERIFY_EMPTY(KOKKOS_ADD_EXECUTABLE_AND_TEST ${PARSE_UNPARSED_ARGUMENTS}) - SET(EXE_NAME ${PACKAGE_NAME}_${ROOT_NAME}) - KOKKOS_ADD_TEST_EXECUTABLE(${EXE_NAME} + KOKKOS_ADD_TEST_EXECUTABLE(${ROOT_NAME} SOURCES ${PARSE_SOURCES} ) - KOKKOS_ADD_TEST(NAME ${ROOT_NAME} - EXE ${EXE_NAME} + KOKKOS_ADD_TEST(NAME ${ROOT_NAME} + EXE ${ROOT_NAME} FAIL_REGULAR_EXPRESSION " FAILED " ) ENDIF() ENDFUNCTION() +FUNCTION(KOKKOS_SET_EXE_PROPERTY ROOT_NAME) + SET(TARGET_NAME ${PACKAGE_NAME}_${ROOT_NAME}) + IF (NOT TARGET ${TARGET_NAME}) + MESSAGE(SEND_ERROR "No target ${TARGET_NAME} exists - cannot set target properties") + ENDIF() + SET_PROPERTY(TARGET ${TARGET_PROPERTY} PROPERTY ${ARGN}) +ENDFUNCTION() + MACRO(KOKKOS_SETUP_BUILD_ENVIRONMENT) INCLUDE(${KOKKOS_SRC_PATH}/cmake/kokkos_compiler_id.cmake) INCLUDE(${KOKKOS_SRC_PATH}/cmake/kokkos_enable_devices.cmake) @@ -178,20 +186,17 @@ MACRO(KOKKOS_SETUP_BUILD_ENVIRONMENT) INCLUDE(${KOKKOS_SRC_PATH}/cmake/kokkos_corner_cases.cmake) ENDMACRO() -MACRO(KOKKOS_ADD_TEST_EXECUTABLE EXE_NAME) - CMAKE_PARSE_ARGUMENTS(PARSE +MACRO(KOKKOS_ADD_TEST_EXECUTABLE ROOT_NAME) + CMAKE_PARSE_ARGUMENTS(PARSE "" "" "SOURCES" ${ARGN}) - KOKKOS_ADD_EXECUTABLE(${EXE_NAME} + KOKKOS_ADD_EXECUTABLE(${ROOT_NAME} SOURCES ${PARSE_SOURCES} ${PARSE_UNPARSED_ARGUMENTS} TESTONLYLIBS kokkos_gtest ) - IF (NOT KOKKOS_HAS_TRILINOS) - ADD_DEPENDENCIES(check ${EXE_NAME}) - ENDIF() ENDMACRO() MACRO(KOKKOS_PACKAGE_POSTPROCESS) @@ -201,7 +206,7 @@ MACRO(KOKKOS_PACKAGE_POSTPROCESS) ENDMACRO() FUNCTION(KOKKOS_SET_LIBRARY_PROPERTIES LIBRARY_NAME) - CMAKE_PARSE_ARGUMENTS(PARSE + CMAKE_PARSE_ARGUMENTS(PARSE "PLAIN_STYLE" "" "" @@ -230,6 +235,15 @@ FUNCTION(KOKKOS_SET_LIBRARY_PROPERTIES LIBRARY_NAME) $<$:${KOKKOS_COMPILE_OPTIONS}> ) + TARGET_COMPILE_DEFINITIONS( + ${LIBRARY_NAME} PUBLIC + $<$:${KOKKOS_COMPILE_DEFINITIONS}> + ) + + TARGET_LINK_LIBRARIES( + ${LIBRARY_NAME} PUBLIC ${KOKKOS_LINK_LIBRARIES} + ) + IF (KOKKOS_ENABLE_CUDA) TARGET_COMPILE_OPTIONS( ${LIBRARY_NAME} @@ -240,11 +254,18 @@ FUNCTION(KOKKOS_SET_LIBRARY_PROPERTIES LIBRARY_NAME) LIST(APPEND NODEDUP_CUDAFE_OPTIONS -Xcudafe ${OPT}) ENDFOREACH() TARGET_COMPILE_OPTIONS( - ${LIBRARY_NAME} + ${LIBRARY_NAME} PUBLIC $<$:${NODEDUP_CUDAFE_OPTIONS}> ) ENDIF() + IF (KOKKOS_ENABLE_HIP) + TARGET_COMPILE_OPTIONS( + ${LIBRARY_NAME} + PUBLIC $<$:${KOKKOS_AMDGPU_OPTIONS}> + ) + ENDIF() + LIST(LENGTH KOKKOS_XCOMPILER_OPTIONS XOPT_LENGTH) IF (XOPT_LENGTH GREATER 1) MESSAGE(FATAL_ERROR "CMake deduplication does not allow multiple -Xcompiler flags (${KOKKOS_XCOMPILER_OPTIONS}): will require Kokkos to upgrade to minimum 3.12") @@ -253,12 +274,12 @@ FUNCTION(KOKKOS_SET_LIBRARY_PROPERTIES LIBRARY_NAME) SET(NODEDUP_XCOMPILER_OPTIONS) FOREACH(OPT ${KOKKOS_XCOMPILER_OPTIONS}) #I have to do this for now because we can't guarantee 3.12 support - #I really should do this with the shell option - LIST(APPEND NODEDUP_XCOMPILER_OPTIONS -Xcompiler) - LIST(APPEND NODEDUP_XCOMPILER_OPTIONS ${OPT}) + #I really should do this with the shell option + LIST(APPEND NODEDUP_XCOMPILER_OPTIONS -Xcompiler) + LIST(APPEND NODEDUP_XCOMPILER_OPTIONS ${OPT}) ENDFOREACH() TARGET_COMPILE_OPTIONS( - ${LIBRARY_NAME} + ${LIBRARY_NAME} PUBLIC $<$:${NODEDUP_XCOMPILER_OPTIONS}> ) ENDIF() @@ -276,7 +297,7 @@ FUNCTION(KOKKOS_SET_LIBRARY_PROPERTIES LIBRARY_NAME) ENDFUNCTION() FUNCTION(KOKKOS_INTERNAL_ADD_LIBRARY LIBRARY_NAME) - CMAKE_PARSE_ARGUMENTS(PARSE + CMAKE_PARSE_ARGUMENTS(PARSE "STATIC;SHARED" "" "HEADERS;SOURCES" @@ -362,7 +383,7 @@ FUNCTION(KOKKOS_LIB_INCLUDE_DIRECTORIES TARGET) #ignore the target, tribits doesn't do anything directly with targets TRIBITS_INCLUDE_DIRECTORIES(${ARGN}) ELSE() #append to a list for later - KOKKOS_LIB_TYPE(${TARGET} INCTYPE) + KOKKOS_LIB_TYPE(${TARGET} INCTYPE) FOREACH(DIR ${ARGN}) TARGET_INCLUDE_DIRECTORIES(${TARGET} ${INCTYPE} $) ENDFOREACH() @@ -390,3 +411,15 @@ MACRO(KOKKOS_ADD_TEST_DIRECTORIES) ENDIF() ENDIF() ENDMACRO() + +MACRO(KOKKOS_ADD_EXAMPLE_DIRECTORIES) + if (KOKKOS_HAS_TRILINOS) + TRIBITS_ADD_EXAMPLE_DIRECTORIES(${ARGN}) + else() + IF(KOKKOS_ENABLE_EXAMPLES) + FOREACH(EXAMPLE_DIR ${ARGN}) + ADD_SUBDIRECTORY(${EXAMPLE_DIR}) + ENDFOREACH() + ENDIF() + endif() +ENDMACRO() diff --git a/lib/kokkos/cmake/msvc.cmake b/lib/kokkos/cmake/msvc.cmake new file mode 100644 index 0000000000..85421bdbaa --- /dev/null +++ b/lib/kokkos/cmake/msvc.cmake @@ -0,0 +1,11 @@ + +FUNCTION(kokkos_set_msvc_flags full_standard int_standard) + IF (CMAKE_CXX_EXTENSIONS) + SET(KOKKOS_CXX_STANDARD_FLAG "" PARENT_SCOPE) + SET(KOKKOS_CXX_INTERMEDIATE_STANDARD_FLAG "" PARENT_SCOPE) + ELSE() + SET(KOKKOS_CXX_STANDARD_FLAG "" PARENT_SCOPE) + SET(KOKKOS_CXX_INTERMEDIATE_STANDARD_FLAG "" PARENT_SCOPE) + ENDIF() +ENDFUNCTION() + diff --git a/lib/kokkos/cmake/tpls/FindTPLCUSPARSE.cmake b/lib/kokkos/cmake/tpls/FindTPLCUSPARSE.cmake index b8cee04804..a59868b73b 100644 --- a/lib/kokkos/cmake/tpls/FindTPLCUSPARSE.cmake +++ b/lib/kokkos/cmake/tpls/FindTPLCUSPARSE.cmake @@ -55,19 +55,9 @@ # Check for CUDA support -IF (NOT TPL_ENABLE_CUDA OR CUDA_VERSION VERSION_LESS "4.1") - MESSAGE(FATAL_ERROR "\nCUSPARSE: did not find acceptable version of CUDA libraries (4.1 or greater)") +IF (NOT TPL_ENABLE_CUDA) + MESSAGE(FATAL_ERROR "\nCUSPARSE requires CUDA") ELSE() - IF(CMAKE_VERSION VERSION_LESS "2.8.8") - # FindCUDA before CMake 2.8.8 does not find cusparse library; therefore, we must - find_library(CUDA_cusparse_LIBRARY - cusparse - HINTS ${CUDA_TOOLKIT_ROOT_DIR}/lib - ) - IF(CUDA_cusparse_LIBRARY STREQUAL "CUDA_cusparse_LIBRARY-NOTFOUND") - MESSAGE(FATAL_ERROR "\nCUSPARSE: could not find cuspasre library.") - ENDIF() - ENDIF() GLOBAL_SET(TPL_CUSPARSE_LIBRARY_DIRS) GLOBAL_SET(TPL_CUSPARSE_INCLUDE_DIRS ${TPL_CUDA_INCLUDE_DIRS}) GLOBAL_SET(TPL_CUSPARSE_LIBRARIES ${CUDA_cusparse_LIBRARY}) diff --git a/lib/kokkos/config/test_all_sandia b/lib/kokkos/config/test_all_sandia index d94c38cbc6..193a162a4e 100755 --- a/lib/kokkos/config/test_all_sandia +++ b/lib/kokkos/config/test_all_sandia @@ -76,19 +76,18 @@ CLANG_BUILD_LIST="Pthread,Serial,Pthread_Serial" CUDA_BUILD_LIST="Cuda_OpenMP,Cuda_Pthread,Cuda_Serial" CUDA_IBM_BUILD_LIST="Cuda_OpenMP,Cuda_Serial" -GCC_WARNING_FLAGS="-Wall,-Wshadow,-pedantic,-Werror,-Wsign-compare,-Wtype-limits,-Wignored-qualifiers,-Wempty-body,-Wclobbered,-Wuninitialized" -IBM_WARNING_FLAGS="-Wall,-Wshadow,-pedantic,-Werror,-Wsign-compare,-Wtype-limits,-Wuninitialized" -CLANG_WARNING_FLAGS="-Wall,-Wshadow,-pedantic,-Werror,-Wsign-compare,-Wtype-limits,-Wuninitialized" -INTEL_WARNING_FLAGS="-Wall,-Wshadow,-pedantic,-Werror,-Wsign-compare,-Wtype-limits,-Wuninitialized" -#CUDA_WARNING_FLAGS="-Wall,-Wshadow,-pedantic,-Werror,-Wsign-compare,-Wtype-limits,-Wuninitialized" -CUDA_WARNING_FLAGS="-Wall,-Wshadow,-pedantic,-Wsign-compare,-Wtype-limits,-Wuninitialized" +GCC_WARNING_FLAGS="-Wall,-Wunused-parameter,-Wshadow,-pedantic,-Werror,-Wsign-compare,-Wtype-limits,-Wignored-qualifiers,-Wempty-body,-Wclobbered,-Wuninitialized" +IBM_WARNING_FLAGS="-Wall,-Wunused-parameter,-Wshadow,-pedantic,-Werror,-Wsign-compare,-Wtype-limits,-Wuninitialized" +CLANG_WARNING_FLAGS="-Wall,-Wunused-parameter,-Wshadow,-pedantic,-Werror,-Wsign-compare,-Wtype-limits,-Wuninitialized" +INTEL_WARNING_FLAGS="-Wall,-Wunused-parameter,-Wshadow,-pedantic,-Werror,-Wsign-compare,-Wtype-limits,-Wuninitialized" +#CUDA_WARNING_FLAGS="-Wall,-Wunused-parameter,-Wshadow,-pedantic,-Werror,-Wsign-compare,-Wtype-limits,-Wuninitialized" +CUDA_WARNING_FLAGS="-Wall,-Wunused-parameter,-Wshadow,-pedantic,-Wsign-compare,-Wtype-limits,-Wuninitialized" PGI_WARNING_FLAGS="" # Default. Machine specific can override. DEBUG=False ARGS="" CUSTOM_BUILD_LIST="" -QTHREADS_PATH="" DRYRUN=False BUILD_ONLY=False declare -i NUM_JOBS_TO_RUN_IN_PARALLEL=1 @@ -114,9 +113,6 @@ do --kokkos-path*) KOKKOS_PATH="${key#*=}" ;; - --qthreads-path*) - QTHREADS_PATH="${key#*=}" - ;; --build-list*) CUSTOM_BUILD_LIST="${key#*=}" ;; @@ -417,8 +413,8 @@ if [ "$PRINT_HELP" = "True" ]; then echo "--build-list=BUILD,BUILD,BUILD..." echo " Provide a comma-separated list of builds instead of running all builds" echo " Valid items:" - echo " OpenMP, Pthread, Qthreads, Serial, OpenMP_Serial, Pthread_Serial" - echo " Qthreads_Serial, Cuda_OpenMP, Cuda_Pthread, Cuda_Serial" + echo " OpenMP, Pthread, Serial, OpenMP_Serial, Pthread_Serial" + echo " Cuda_OpenMP, Cuda_Pthread, Cuda_Serial" echo "" echo "ARGS: list of expressions matching compilers to test" @@ -483,33 +479,6 @@ for ARG in $ARGS; do done done -# Check if Qthreads build requested. -HAVE_QTHREADS_BUILD="False" -if [ -n "$CUSTOM_BUILD_LIST" ]; then - if [[ "$CUSTOM_BUILD_LIST" = *Qthreads* ]]; then - HAVE_QTHREADS_BUILD="True" - fi -else - for COMPILER_DATA in "${COMPILERS[@]}"; do - ARR=($COMPILER_DATA) - BUILD_LIST=${ARR[2]} - if [[ "$BUILD_LIST" = *Qthreads* ]]; then - HAVE_QTHREADS_BUILD="True" - fi - done -fi - -# Ensure Qthreads path is set if Qthreads build is requested. -if [ "$HAVE_QTHREADS_BUILD" = "True" ]; then - if [ -z "$QTHREADS_PATH" ]; then - echo "Need to supply Qthreads path (--qthreads-path) when testing Qthreads backend." >&2 - exit 1 - else - # Strip trailing slashes from path. - QTHREADS_PATH=$(echo $QTHREADS_PATH | sed 's/\/*$//') - fi -fi - # # Functions. # @@ -627,14 +596,6 @@ single_build_and_test() { local extra_args=--with-hwloc=$(dirname $(dirname $(which hwloc-info))) fi - if [[ "$build" = *Qthreads* ]]; then - if [[ "$build_type" = hwloc* ]]; then - local extra_args="$extra_args --qthreads-path=${QTHREADS_PATH}_hwloc" - else - local extra_args="$extra_args --qthreads-path=$QTHREADS_PATH" - fi - fi - if [[ "$OPT_FLAG" = "" ]]; then OPT_FLAG="-O3" fi diff --git a/lib/kokkos/containers/performance_tests/CMakeLists.txt b/lib/kokkos/containers/performance_tests/CMakeLists.txt index ca76808190..1011cb8fd1 100644 --- a/lib/kokkos/containers/performance_tests/CMakeLists.txt +++ b/lib/kokkos/containers/performance_tests/CMakeLists.txt @@ -5,58 +5,42 @@ KOKKOS_INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/../src ) IF(Kokkos_ENABLE_CUDA) SET(SOURCES - TestMain.cpp + TestMain.cpp TestCuda.cpp ) - KOKKOS_ADD_TEST_EXECUTABLE( PerfTestExec_Cuda + KOKKOS_ADD_EXECUTABLE_AND_TEST( PerformanceTest_Cuda SOURCES ${SOURCES} ) - - KOKKOS_ADD_TEST( NAME PerformanceTest_Cuda - EXE PerfTestExec_Cuda - ) ENDIF() IF(Kokkos_ENABLE_PTHREAD) SET(SOURCES - TestMain.cpp + TestMain.cpp TestThreads.cpp ) - KOKKOS_ADD_TEST_EXECUTABLE( PerfTestExec_Threads + KOKKOS_ADD_EXECUTABLE_AND_TEST( PerformanceTest_Threads SOURCES ${SOURCES} ) - - KOKKOS_ADD_TEST( NAME PerformanceTest_Threads - EXE PerfTestExec_Threads - ) ENDIF() IF(Kokkos_ENABLE_OPENMP) SET(SOURCES - TestMain.cpp + TestMain.cpp TestOpenMP.cpp ) - KOKKOS_ADD_TEST_EXECUTABLE( PerfTestExec_OpenMP + KOKKOS_ADD_EXECUTABLE_AND_TEST( PerformanceTest_OpenMP SOURCES ${SOURCES} ) - - KOKKOS_ADD_TEST( NAME PerformanceTest_OpenMP - EXE PerfTestExec_OpenMP - ) ENDIF() IF(Kokkos_ENABLE_HPX) SET(SOURCES - TestMain.cpp + TestMain.cpp TestHPX.cpp ) - KOKKOS_ADD_TEST_EXECUTABLE( PerfTestExec_HPX + KOKKOS_ADD_EXECUTABLE_AND_TEST( PerformanceTest_HPX SOURCES ${SOURCES} ) - - KOKKOS_ADD_TEST( NAME PerformanceTest_HPX - EXE PerfTestExec_HPX - ) ENDIF() diff --git a/lib/kokkos/containers/src/Kokkos_Bitset.hpp b/lib/kokkos/containers/src/Kokkos_Bitset.hpp index 3596c7653a..ab75fc1e1d 100644 --- a/lib/kokkos/containers/src/Kokkos_Bitset.hpp +++ b/lib/kokkos/containers/src/Kokkos_Bitset.hpp @@ -103,19 +103,19 @@ class Bitset { } } - KOKKOS_INLINE_FUNCTION + KOKKOS_DEFAULTED_FUNCTION Bitset(const Bitset&) = default; - KOKKOS_INLINE_FUNCTION + KOKKOS_DEFAULTED_FUNCTION Bitset& operator=(const Bitset&) = default; - KOKKOS_INLINE_FUNCTION + KOKKOS_DEFAULTED_FUNCTION Bitset(Bitset&&) = default; - KOKKOS_INLINE_FUNCTION + KOKKOS_DEFAULTED_FUNCTION Bitset& operator=(Bitset&&) = default; - KOKKOS_INLINE_FUNCTION + KOKKOS_DEFAULTED_FUNCTION ~Bitset() = default; /// number of bits in the set diff --git a/lib/kokkos/containers/src/Kokkos_DualView.hpp b/lib/kokkos/containers/src/Kokkos_DualView.hpp index d8a3ebc1ae..ede7d9a31f 100644 --- a/lib/kokkos/containers/src/Kokkos_DualView.hpp +++ b/lib/kokkos/containers/src/Kokkos_DualView.hpp @@ -238,6 +238,53 @@ class DualView : public ViewTraits { #endif } + /// \brief Constructor that allocates View objects on both host and device. + /// + /// This constructor works like the analogous constructor of View. + /// The first arguments are wrapped up in a ViewCtor class, this allows + /// for a label, without initializing, and all of the other things that can + /// be wrapped up in a Ctor class. + /// The arguments that follow are the dimensions of the + /// View objects. For example, if the View has three dimensions, + /// the first three integer arguments will be nonzero, and you may + /// omit the integer arguments that follow. + template + DualView(const Impl::ViewCtorProp& arg_prop, + typename std::enable_if::has_pointer, + size_t>::type const n0 = + KOKKOS_IMPL_CTOR_DEFAULT_ARG, + const size_t n1 = KOKKOS_IMPL_CTOR_DEFAULT_ARG, + const size_t n2 = KOKKOS_IMPL_CTOR_DEFAULT_ARG, + const size_t n3 = KOKKOS_IMPL_CTOR_DEFAULT_ARG, + const size_t n4 = KOKKOS_IMPL_CTOR_DEFAULT_ARG, + const size_t n5 = KOKKOS_IMPL_CTOR_DEFAULT_ARG, + const size_t n6 = KOKKOS_IMPL_CTOR_DEFAULT_ARG, + const size_t n7 = KOKKOS_IMPL_CTOR_DEFAULT_ARG) + : d_view(arg_prop, n0, n1, n2, n3, n4, n5, n6, n7), + h_view(create_mirror_view(d_view)) // without UVM, host View mirrors + , + modified_flags(t_modified_flags("DualView::modified_flags")) { +#ifdef KOKKOS_ENABLE_DEPRECATED_CODE + modified_host = t_modified_flag(modified_flags, 0); + modified_device = t_modified_flag(modified_flags, 1); +#endif + } + + explicit inline DualView(const ViewAllocateWithoutInitializing& arg_prop, + const size_t arg_N0 = KOKKOS_IMPL_CTOR_DEFAULT_ARG, + const size_t arg_N1 = KOKKOS_IMPL_CTOR_DEFAULT_ARG, + const size_t arg_N2 = KOKKOS_IMPL_CTOR_DEFAULT_ARG, + const size_t arg_N3 = KOKKOS_IMPL_CTOR_DEFAULT_ARG, + const size_t arg_N4 = KOKKOS_IMPL_CTOR_DEFAULT_ARG, + const size_t arg_N5 = KOKKOS_IMPL_CTOR_DEFAULT_ARG, + const size_t arg_N6 = KOKKOS_IMPL_CTOR_DEFAULT_ARG, + const size_t arg_N7 = KOKKOS_IMPL_CTOR_DEFAULT_ARG) + : DualView(Impl::ViewCtorProp( + arg_prop.label, Kokkos::WithoutInitializing), + arg_N0, arg_N1, arg_N2, arg_N3, arg_N4, arg_N5, arg_N6, + arg_N7) {} + //! Copy constructor (shallow copy) template DualView(const DualView& src) @@ -470,23 +517,43 @@ class DualView : public ViewTraits { /// as modified, by calling the modify() method with the /// appropriate template parameter. template - void sync(const typename Impl::enable_if< + void sync(const typename std::enable_if< (std::is_same::value) || (std::is_same::value), int>::type& = 0) { - if (modified_flags.data() == NULL) return; + if (modified_flags.data() == nullptr) return; int dev = get_device_side(); if (dev == 1) { // if Device is the same as DualView's device type if ((modified_flags(0) > 0) && (modified_flags(0) >= modified_flags(1))) { +#ifdef KOKKOS_ENABLE_CUDA + if (std::is_same::value) { + if (d_view.data() == h_view.data()) + Kokkos::Impl::cuda_prefetch_pointer( + Kokkos::Cuda(), d_view.data(), + sizeof(typename t_dev::value_type) * d_view.span(), true); + } +#endif + deep_copy(d_view, h_view); modified_flags(0) = modified_flags(1) = 0; } } if (dev == 0) { // hopefully Device is the same as DualView's host type if ((modified_flags(1) > 0) && (modified_flags(1) >= modified_flags(0))) { +#ifdef KOKKOS_ENABLE_CUDA + if (std::is_same::value) { + if (d_view.data() == h_view.data()) + Kokkos::Impl::cuda_prefetch_pointer( + Kokkos::Cuda(), d_view.data(), + sizeof(typename t_dev::value_type) * d_view.span(), false); + } +#endif + deep_copy(h_view, d_view); modified_flags(0) = modified_flags(1) = 0; } @@ -499,12 +566,12 @@ class DualView : public ViewTraits { } template - void sync(const typename Impl::enable_if< + void sync(const typename std::enable_if< (!std::is_same::value) || (std::is_same::value), int>::type& = 0) { - if (modified_flags.data() == NULL) return; + if (modified_flags.data() == nullptr) return; int dev = get_device_side(); @@ -527,8 +594,18 @@ class DualView : public ViewTraits { typename traits::non_const_data_type>::value) Impl::throw_runtime_exception( "Calling sync_host on a DualView with a const datatype."); - if (modified_flags.data() == NULL) return; + if (modified_flags.data() == nullptr) return; if (modified_flags(1) > modified_flags(0)) { +#ifdef KOKKOS_ENABLE_CUDA + if (std::is_same::value) { + if (d_view.data() == h_view.data()) + Kokkos::Impl::cuda_prefetch_pointer( + Kokkos::Cuda(), d_view.data(), + sizeof(typename t_dev::value_type) * d_view.span(), false); + } +#endif + deep_copy(h_view, d_view); modified_flags(1) = modified_flags(0) = 0; } @@ -539,8 +616,18 @@ class DualView : public ViewTraits { typename traits::non_const_data_type>::value) Impl::throw_runtime_exception( "Calling sync_device on a DualView with a const datatype."); - if (modified_flags.data() == NULL) return; + if (modified_flags.data() == nullptr) return; if (modified_flags(0) > modified_flags(1)) { +#ifdef KOKKOS_ENABLE_CUDA + if (std::is_same::value) { + if (d_view.data() == h_view.data()) + Kokkos::Impl::cuda_prefetch_pointer( + Kokkos::Cuda(), d_view.data(), + sizeof(typename t_dev::value_type) * d_view.span(), true); + } +#endif + deep_copy(d_view, h_view); modified_flags(1) = modified_flags(0) = 0; } @@ -548,7 +635,7 @@ class DualView : public ViewTraits { template bool need_sync() const { - if (modified_flags.data() == NULL) return false; + if (modified_flags.data() == nullptr) return false; int dev = get_device_side(); if (dev == 1) { // if Device is the same as DualView's device type @@ -565,12 +652,12 @@ class DualView : public ViewTraits { } inline bool need_sync_host() const { - if (modified_flags.data() == NULL) return false; + if (modified_flags.data() == nullptr) return false; return modified_flags(0) < modified_flags(1); } inline bool need_sync_device() const { - if (modified_flags.data() == NULL) return false; + if (modified_flags.data() == nullptr) return false; return modified_flags(1) < modified_flags(0); } @@ -581,7 +668,7 @@ class DualView : public ViewTraits { /// data as modified. template void modify() { - if (modified_flags.data() == NULL) return; + if (modified_flags.data() == nullptr) return; int dev = get_device_side(); if (dev == 1) { // if Device is the same as DualView's device type @@ -612,7 +699,7 @@ class DualView : public ViewTraits { } inline void modify_host() { - if (modified_flags.data() != NULL) { + if (modified_flags.data() != nullptr) { modified_flags(0) = (modified_flags(1) > modified_flags(0) ? modified_flags(1) : modified_flags(0)) + @@ -631,7 +718,7 @@ class DualView : public ViewTraits { } inline void modify_device() { - if (modified_flags.data() != NULL) { + if (modified_flags.data() != nullptr) { modified_flags(1) = (modified_flags(1) > modified_flags(0) ? modified_flags(1) : modified_flags(0)) + @@ -650,7 +737,7 @@ class DualView : public ViewTraits { } inline void clear_sync_state() { - if (modified_flags.data() != NULL) + if (modified_flags.data() != nullptr) modified_flags(1) = modified_flags(0) = 0; } @@ -675,7 +762,7 @@ class DualView : public ViewTraits { h_view = create_mirror_view(d_view); /* Reset dirty flags */ - if (modified_flags.data() == NULL) { + if (modified_flags.data() == nullptr) { modified_flags = t_modified_flags("DualView::modified_flags"); } else modified_flags(1) = modified_flags(0) = 0; @@ -693,7 +780,7 @@ class DualView : public ViewTraits { const size_t n5 = KOKKOS_IMPL_CTOR_DEFAULT_ARG, const size_t n6 = KOKKOS_IMPL_CTOR_DEFAULT_ARG, const size_t n7 = KOKKOS_IMPL_CTOR_DEFAULT_ARG) { - if (modified_flags.data() == NULL) { + if (modified_flags.data() == nullptr) { modified_flags = t_modified_flags("DualView::modified_flags"); } if (modified_flags(1) >= modified_flags(0)) { @@ -866,4 +953,27 @@ void deep_copy( } // namespace Kokkos +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- + +namespace Kokkos { + +// +// Non-member resize and realloc +// + +template +void resize(DualView& dv, Args&&... args) noexcept( + noexcept(dv.resize(std::forward(args)...))) { + dv.resize(std::forward(args)...); +} + +template +void realloc(DualView& dv, Args&&... args) noexcept( + noexcept(dv.realloc(std::forward(args)...))) { + dv.realloc(std::forward(args)...); +} + +} // end namespace Kokkos + #endif diff --git a/lib/kokkos/containers/src/Kokkos_DynRankView.hpp b/lib/kokkos/containers/src/Kokkos_DynRankView.hpp index 0ceb9d5d39..4ab212d7b9 100644 --- a/lib/kokkos/containers/src/Kokkos_DynRankView.hpp +++ b/lib/kokkos/containers/src/Kokkos_DynRankView.hpp @@ -293,6 +293,7 @@ KOKKOS_INLINE_FUNCTION void dyn_rank_view_verify_operator_bounds( dyn_rank_view_error_operator_bounds<0>(buffer + n, LEN - n, map, args...); Kokkos::Impl::throw_runtime_exception(std::string(buffer)); #else + (void)tracker; Kokkos::abort("DynRankView bounds error"); #endif } @@ -1065,8 +1066,8 @@ class DynRankView : public ViewTraits { //---------------------------------------- // Standard constructor, destructor, and assignment operators... - KOKKOS_INLINE_FUNCTION - ~DynRankView() {} + KOKKOS_DEFAULTED_FUNCTION + ~DynRankView() = default; KOKKOS_INLINE_FUNCTION DynRankView() : m_track(), m_map(), m_rank() {} // Default ctor @@ -1773,7 +1774,7 @@ struct DynRankViewRemap { const Kokkos::Impl::ParallelFor closure( *this, Policy(0, n0)); closure.execute(); - // Kokkos::fence(); // ?? + // ExecSpace().fence(); // ?? } KOKKOS_INLINE_FUNCTION @@ -1806,7 +1807,8 @@ inline void deep_copy( const DynRankView& dst, typename ViewTraits::const_value_type& value, typename std::enable_if::specialize, void>::value>::type* = 0) { + typename ViewTraits::specialize, void>::value>::type* = + nullptr) { static_assert( std::is_same::non_const_value_type, typename ViewTraits::value_type>::value, @@ -1843,7 +1845,7 @@ inline void deep_copy( (std::is_same::value && std::is_same::value && (Kokkos::is_dyn_rank_view::value || - Kokkos::is_dyn_rank_view::value))>::type* = 0) { + Kokkos::is_dyn_rank_view::value))>::type* = nullptr) { static_assert( std::is_same::value, @@ -2009,7 +2011,7 @@ inline typename DynRankView::HostMirror create_mirror( typename std::enable_if< std::is_same::specialize, void>::value && !std::is_same::array_layout, - Kokkos::LayoutStride>::value>::type* = 0) { + Kokkos::LayoutStride>::value>::type* = nullptr) { typedef DynRankView src_type; typedef typename src_type::HostMirror dst_type; @@ -2036,7 +2038,8 @@ template typename Impl::MirrorDRVType::view_type create_mirror( const Space&, const Kokkos::DynRankView& src, typename std::enable_if::specialize, void>::value>::type* = 0) { + typename ViewTraits::specialize, void>::value>::type* = + nullptr) { return typename Impl::MirrorDRVType::view_type( src.label(), Impl::reconstructLayout(src.layout(), src.rank())); } @@ -2050,7 +2053,7 @@ inline typename DynRankView::HostMirror create_mirror_view( typename DynRankView::HostMirror::memory_space>::value && std::is_same::data_type, typename DynRankView::HostMirror::data_type>:: - value)>::type* = 0) { + value)>::type* = nullptr) { return src; } @@ -2072,7 +2075,8 @@ template typename Impl::MirrorDRViewType::view_type create_mirror_view( const Space&, const Kokkos::DynRankView& src, typename std::enable_if< - Impl::MirrorDRViewType::is_same_memspace>::type* = 0) { + Impl::MirrorDRViewType::is_same_memspace>::type* = + nullptr) { return src; } @@ -2094,7 +2098,8 @@ create_mirror_view_and_copy( const Space&, const Kokkos::DynRankView& src, std::string const& name = "", typename std::enable_if< - Impl::MirrorDRViewType::is_same_memspace>::type* = 0) { + Impl::MirrorDRViewType::is_same_memspace>::type* = + nullptr) { (void)name; return src; } @@ -2139,7 +2144,7 @@ inline void resize(DynRankView& v, static_assert(Kokkos::ViewTraits::is_managed, "Can only resize managed views"); - drview_type v_resized(v.label(), n0, n1, n2, n3, n4, n5, n6); + drview_type v_resized(v.label(), n0, n1, n2, n3, n4, n5, n6, n7); Kokkos::Impl::DynRankViewRemap(v_resized, v); @@ -2166,7 +2171,7 @@ inline void realloc(DynRankView& v, const std::string label = v.label(); v = drview_type(); // Deallocate first, if the only view to allocation - v = drview_type(label, n0, n1, n2, n3, n4, n5, n6); + v = drview_type(label, n0, n1, n2, n3, n4, n5, n6, n7); } } // namespace Kokkos diff --git a/lib/kokkos/containers/src/Kokkos_DynamicView.hpp b/lib/kokkos/containers/src/Kokkos_DynamicView.hpp index 35a64d164f..ebbbcc5e8c 100644 --- a/lib/kokkos/containers/src/Kokkos_DynamicView.hpp +++ b/lib/kokkos/containers/src/Kokkos_DynamicView.hpp @@ -70,10 +70,10 @@ struct ChunkArraySpace { using memory_space = typename Kokkos::CudaUVMSpace; }; #endif -#ifdef KOKKOS_ENABLE_ROCM +#ifdef KOKKOS_ENABLE_HIP template <> -struct ChunkArraySpace { - using memory_space = typename Kokkos::Experimental::ROCmHostPinnedSpace; +struct ChunkArraySpace { + using memory_space = typename Kokkos::Experimental::HIPHostPinnedSpace; }; #endif } // end namespace Impl @@ -248,8 +248,8 @@ class DynamicView : public Kokkos::ViewTraits { //---------------------------------------- template - KOKKOS_INLINE_FUNCTION reference_type operator()(const I0& i0, - const Args&... args) const { + KOKKOS_INLINE_FUNCTION reference_type + operator()(const I0& i0, const Args&... /*args*/) const { static_assert(Kokkos::Impl::are_integral::value, "Indices must be integral type"); @@ -265,7 +265,7 @@ class DynamicView : public Kokkos::ViewTraits { // If not bounds checking then we assume a non-zero pointer is valid. #if !defined(KOKKOS_ENABLE_DEBUG_BOUNDS_CHECK) - if (0 == *ch) + if (nullptr == *ch) #endif { // Verify that allocation of the requested chunk in in progress. @@ -280,7 +280,7 @@ class DynamicView : public Kokkos::ViewTraits { // Allocation of this chunk is in progress // so wait for allocation to complete. - while (0 == *ch) + while (nullptr == *ch) ; } @@ -325,7 +325,7 @@ class DynamicView : public Kokkos::ViewTraits { --*pc; typename traits::memory_space().deallocate( m_chunks[*pc], sizeof(local_value_type) << m_chunk_shift); - m_chunks[*pc] = 0; + m_chunks[*pc] = nullptr; } } // *m_chunks[m_chunk_max+1] stores the 'extent' requested by resize @@ -366,10 +366,10 @@ class DynamicView : public Kokkos::ViewTraits { // Initialize or destroy array of chunk pointers. // Two entries beyond the max chunks are allocation counters. inline void operator()(unsigned i) const { - if (m_destroy && i < m_chunk_max && 0 != m_chunks[i]) { + if (m_destroy && i < m_chunk_max && nullptr != m_chunks[i]) { typename traits::memory_space().deallocate(m_chunks[i], m_chunk_size); } - m_chunks[i] = 0; + m_chunks[i] = nullptr; } void execute(bool arg_destroy) { @@ -419,7 +419,7 @@ class DynamicView : public Kokkos::ViewTraits { const unsigned min_chunk_size, const unsigned max_extent) : m_track(), - m_chunks(0) + m_chunks(nullptr) // The chunk size is guaranteed to be a power of two , m_chunk_shift(Kokkos::Impl::integral_power_of_two_that_contains( @@ -528,7 +528,7 @@ struct CommonSubview, typedef SrcType src_subview_type; dst_subview_type dst_sub; src_subview_type src_sub; - CommonSubview(const DstType& dst, const SrcType& src, const Arg0& arg0) + CommonSubview(const DstType& dst, const SrcType& src, const Arg0& /*arg0*/) : dst_sub(dst), src_sub(src) {} }; diff --git a/lib/kokkos/containers/src/Kokkos_ErrorReporter.hpp b/lib/kokkos/containers/src/Kokkos_ErrorReporter.hpp index 25335771e4..e07c386b7d 100644 --- a/lib/kokkos/containers/src/Kokkos_ErrorReporter.hpp +++ b/lib/kokkos/containers/src/Kokkos_ErrorReporter.hpp @@ -187,7 +187,7 @@ template void ErrorReporter::resize(const size_t new_size) { m_reports.resize(new_size); m_reporters.resize(new_size); - Kokkos::fence(); + typename DeviceType::execution_space().fence(); } } // namespace Experimental diff --git a/lib/kokkos/containers/src/Kokkos_OffsetView.hpp b/lib/kokkos/containers/src/Kokkos_OffsetView.hpp index a1fe793cc5..c3c66f0d7f 100644 --- a/lib/kokkos/containers/src/Kokkos_OffsetView.hpp +++ b/lib/kokkos/containers/src/Kokkos_OffsetView.hpp @@ -362,19 +362,18 @@ class OffsetView : public ViewTraits { //---------------------------------------- private: - enum { - is_layout_left = - std::is_same::value, + static constexpr bool is_layout_left = + std::is_same::value; - is_layout_right = - std::is_same::value, + static constexpr bool is_layout_right = + std::is_same::value; - is_layout_stride = std::is_same::value, + static constexpr bool is_layout_stride = + std::is_same::value; - is_default_map = std::is_same::value && - (is_layout_left || is_layout_right || is_layout_stride) - }; + static constexpr bool is_default_map = + std::is_same::value && + (is_layout_left || is_layout_right || is_layout_stride); template ::accessible> @@ -804,8 +803,8 @@ class OffsetView : public ViewTraits { //---------------------------------------- // Standard destructor, constructors, and assignment operators - KOKKOS_INLINE_FUNCTION - ~OffsetView() {} + KOKKOS_DEFAULTED_FUNCTION + ~OffsetView() = default; KOKKOS_INLINE_FUNCTION OffsetView() : m_track(), m_map() { @@ -1317,7 +1316,7 @@ KOKKOS_INLINE_FUNCTION KOKKOS_INLINE_FUNCTION Kokkos::Impl::ALL_t shift_input(const Kokkos::Impl::ALL_t arg, - const int64_t offset) { + const int64_t /*offset*/) { return arg; } @@ -1347,9 +1346,9 @@ KOKKOS_INLINE_FUNCTION void map_arg_to_new_begin( template KOKKOS_INLINE_FUNCTION void map_arg_to_new_begin( - const size_t i, Kokkos::Array& subviewBegins, - typename std::enable_if::type shiftedArg, const Arg arg, - const A viewBegins, size_t& counter) {} + const size_t /*i*/, Kokkos::Array& /*subviewBegins*/, + typename std::enable_if::type /*shiftedArg*/, + const Arg /*arg*/, const A /*viewBegins*/, size_t& /*counter*/) {} template KOKKOS_INLINE_FUNCTION @@ -1832,7 +1831,8 @@ inline void deep_copy( const OffsetView& dst, typename ViewTraits::const_value_type& value, typename std::enable_if::specialize, void>::value>::type* = 0) { + typename ViewTraits::specialize, void>::value>::type* = + nullptr) { static_assert( std::is_same::non_const_value_type, typename ViewTraits::value_type>::value, @@ -1846,7 +1846,8 @@ template inline void deep_copy( const OffsetView& dst, const OffsetView& value, typename std::enable_if::specialize, void>::value>::type* = 0) { + typename ViewTraits::specialize, void>::value>::type* = + nullptr) { static_assert( std::is_same::value_type, typename ViewTraits::non_const_value_type>::value, @@ -1859,7 +1860,8 @@ template inline void deep_copy( const OffsetView& dst, const View& value, typename std::enable_if::specialize, void>::value>::type* = 0) { + typename ViewTraits::specialize, void>::value>::type* = + nullptr) { static_assert( std::is_same::value_type, typename ViewTraits::non_const_value_type>::value, @@ -1873,7 +1875,8 @@ template inline void deep_copy( const View& dst, const OffsetView& value, typename std::enable_if::specialize, void>::value>::type* = 0) { + typename ViewTraits::specialize, void>::value>::type* = + nullptr) { static_assert( std::is_same::value_type, typename ViewTraits::non_const_value_type>::value, @@ -2011,7 +2014,7 @@ create_mirror_view( std::is_same< typename Kokkos::Experimental::OffsetView::data_type, typename Kokkos::Experimental::OffsetView< - T, P...>::HostMirror::data_type>::value)>::type* = 0) { + T, P...>::HostMirror::data_type>::value)>::type* = nullptr) { return src; } diff --git a/lib/kokkos/containers/src/Kokkos_ScatterView.hpp b/lib/kokkos/containers/src/Kokkos_ScatterView.hpp index ec3a966325..eb3bc1f2bc 100644 --- a/lib/kokkos/containers/src/Kokkos_ScatterView.hpp +++ b/lib/kokkos/containers/src/Kokkos_ScatterView.hpp @@ -171,24 +171,41 @@ struct DefaultContribution +struct DefaultDuplication { + enum : int { value = Kokkos::Experimental::ScatterNonDuplicated }; +}; +template <> +struct DefaultContribution { + enum : int { value = Kokkos::Experimental::ScatterAtomic }; +}; +template <> +struct DefaultContribution { + enum : int { value = Kokkos::Experimental::ScatterAtomic }; +}; +#endif + /* ScatterValue 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 +template struct ScatterValue; -template -struct ScatterValue +struct ScatterValue - : Sum { + : Sum { public: KOKKOS_FORCEINLINE_FUNCTION ScatterValue(ValueType& value_in) - : Sum(value_in) {} + : Sum(value_in) {} KOKKOS_FORCEINLINE_FUNCTION ScatterValue(ScatterValue&& other) - : Sum(other.reference()) {} + : Sum(other.reference()) {} KOKKOS_FORCEINLINE_FUNCTION void operator+=(ValueType const& rhs) { this->join(this->reference(), rhs); } @@ -206,13 +223,13 @@ struct ScatterValue -struct ScatterValue +struct ScatterValue - : Sum { + : Sum { public: KOKKOS_FORCEINLINE_FUNCTION ScatterValue(ValueType& value_in) - : Sum(value_in) {} + : Sum(value_in) {} KOKKOS_FORCEINLINE_FUNCTION void operator+=(ValueType const& rhs) { this->join(this->reference(), rhs); @@ -244,15 +261,15 @@ struct ScatterValue -struct ScatterValue +struct ScatterValue - : Prod { + : Prod { public: KOKKOS_FORCEINLINE_FUNCTION ScatterValue(ValueType& value_in) - : Prod(value_in) {} + : Prod(value_in) {} KOKKOS_FORCEINLINE_FUNCTION ScatterValue(ScatterValue&& other) - : Prod(other.reference()) {} + : Prod(other.reference()) {} KOKKOS_FORCEINLINE_FUNCTION void operator*=(ValueType const& rhs) { this->join(this->reference(), rhs); } @@ -271,13 +288,13 @@ struct ScatterValue -struct ScatterValue +struct ScatterValue - : Prod { + : Prod { public: KOKKOS_FORCEINLINE_FUNCTION ScatterValue(ValueType& value_in) - : Prod(value_in) {} + : Prod(value_in) {} KOKKOS_FORCEINLINE_FUNCTION void operator*=(ValueType const& rhs) { this->join(this->reference(), rhs); @@ -320,15 +337,15 @@ struct ScatterValue -struct ScatterValue +struct ScatterValue - : Min { + : Min { public: KOKKOS_FORCEINLINE_FUNCTION ScatterValue(ValueType& value_in) - : Min(value_in) {} + : Min(value_in) {} KOKKOS_FORCEINLINE_FUNCTION ScatterValue(ScatterValue&& other) - : Min(other.reference()) {} + : Min(other.reference()) {} KOKKOS_FORCEINLINE_FUNCTION void update(ValueType const& rhs) { this->join(this->reference(), rhs); } @@ -340,13 +357,13 @@ struct ScatterValue -struct ScatterValue +struct ScatterValue - : Min { + : Min { public: KOKKOS_FORCEINLINE_FUNCTION ScatterValue(ValueType& value_in) - : Min(value_in) {} + : Min(value_in) {} KOKKOS_FORCEINLINE_FUNCTION void atomic_min(ValueType& dest, const ValueType& src) const { @@ -382,15 +399,15 @@ struct ScatterValue -struct ScatterValue +struct ScatterValue - : Max { + : Max { public: KOKKOS_FORCEINLINE_FUNCTION ScatterValue(ValueType& value_in) - : Max(value_in) {} + : Max(value_in) {} KOKKOS_FORCEINLINE_FUNCTION ScatterValue(ScatterValue&& other) - : Max(other.reference()) {} + : Max(other.reference()) {} KOKKOS_FORCEINLINE_FUNCTION void update(ValueType const& rhs) { this->join(this->reference(), rhs); } @@ -402,13 +419,13 @@ struct ScatterValue -struct ScatterValue +struct ScatterValue - : Max { + : Max { public: KOKKOS_FORCEINLINE_FUNCTION ScatterValue(ValueType& value_in) - : Max(value_in) {} + : Max(value_in) {} KOKKOS_FORCEINLINE_FUNCTION void atomic_max(ValueType& dest, const ValueType& src) const { @@ -558,6 +575,8 @@ struct ReduceDuplicatesBase { Kokkos::Profiling::beginParallelFor(std::string("reduce_") + name, 0, &kpID); } +#else + (void)name; #endif typedef RangePolicy policy_type; typedef Kokkos::Impl::ParallelFor closure_type; @@ -584,8 +603,9 @@ struct ReduceDuplicates : 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) { - ScatterValue sv( - Base::dst[i]); + ScatterValue + sv(Base::dst[i]); sv.update(Base::src[i + Base::stride * j]); } } @@ -607,6 +627,8 @@ struct ResetDuplicatesBase { Kokkos::Profiling::beginParallelFor(std::string("reduce_") + name, 0, &kpID); } +#else + (void)name; #endif typedef RangePolicy policy_type; typedef Kokkos::Impl::ParallelFor closure_type; @@ -630,8 +652,9 @@ struct ResetDuplicates : public ResetDuplicatesBase { 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 { - ScatterValue sv( - Base::data[i]); + ScatterValue + sv(Base::data[i]); sv.reset(); } }; @@ -768,8 +791,8 @@ class ScatterAccess view_type; typedef typename view_type::original_value_type original_value_type; - typedef Kokkos::Impl::Experimental::ScatterValue + typedef Kokkos::Impl::Experimental::ScatterValue< + original_value_type, Op, DeviceType, override_contribution> value_type; KOKKOS_INLINE_FUNCTION @@ -777,13 +800,8 @@ class ScatterAccess KOKKOS_FORCEINLINE_FUNCTION value_type operator()(Args... args) const { @@ -1190,8 +1208,8 @@ class ScatterAccess view_type; typedef typename view_type::original_value_type original_value_type; - typedef Kokkos::Impl::Experimental::ScatterValue + typedef Kokkos::Impl::Experimental::ScatterValue< + original_value_type, Op, DeviceType, override_contribution> value_type; KOKKOS_FORCEINLINE_FUNCTION diff --git a/lib/kokkos/containers/src/Kokkos_StaticCrsGraph.hpp b/lib/kokkos/containers/src/Kokkos_StaticCrsGraph.hpp index 26c16c4e00..c11413d627 100644 --- a/lib/kokkos/containers/src/Kokkos_StaticCrsGraph.hpp +++ b/lib/kokkos/containers/src/Kokkos_StaticCrsGraph.hpp @@ -112,7 +112,7 @@ struct StaticCrsGraphBalancerFunctor { } } else { if ((count >= (current_block + 1) * cost_per_workset) || - (iRow + 2 == row_offsets.extent(0))) { + (iRow + 2 == int_type(row_offsets.extent(0)))) { if (end_block > current_block + 1) { int_type num_block = end_block - current_block; row_block_offsets(current_block + 1) = iRow; @@ -358,8 +358,8 @@ class StaticCrsGraph { /** \brief Destroy this view of the array. * If the last view then allocated memory is deallocated. */ - KOKKOS_INLINE_FUNCTION - ~StaticCrsGraph() {} + KOKKOS_DEFAULTED_FUNCTION + ~StaticCrsGraph() = default; /** \brief Return number of rows in the graph */ @@ -396,7 +396,7 @@ class StaticCrsGraph { const data_type count = static_cast(row_map(i + 1) - start); if (count == 0) { - return GraphRowViewConst(NULL, 1, 0); + return GraphRowViewConst(nullptr, 1, 0); } else { return GraphRowViewConst(entries, 1, count, start); } @@ -414,9 +414,10 @@ class StaticCrsGraph { row_map_type, View > partitioner(row_map, block_offsets, fix_cost_per_row, num_blocks); - Kokkos::parallel_for(Kokkos::RangePolicy(0, numRows()), + Kokkos::parallel_for("Kokkos::StaticCrsGraph::create_block_partitioning", + Kokkos::RangePolicy(0, numRows()), partitioner); - Kokkos::fence(); + typename device_type::execution_space().fence(); row_block_offsets = block_offsets; } @@ -522,7 +523,8 @@ DataType maximum_entry(const StaticCrsGraph FunctorType; DataType result = 0; - Kokkos::parallel_reduce(graph.entries.extent(0), FunctorType(graph), result); + Kokkos::parallel_reduce("Kokkos::maximum_entry", graph.entries.extent(0), + FunctorType(graph), result); return result; } diff --git a/lib/kokkos/containers/src/Kokkos_UnorderedMap.hpp b/lib/kokkos/containers/src/Kokkos_UnorderedMap.hpp index 32c04996bb..6f0434dd04 100644 --- a/lib/kokkos/containers/src/Kokkos_UnorderedMap.hpp +++ b/lib/kokkos/containers/src/Kokkos_UnorderedMap.hpp @@ -201,9 +201,9 @@ class UnorderedMapInsertResult { /// template ::type>, + typename Hasher = pod_hash::type>, typename EqualTo = - pod_equal_to::type> > + pod_equal_to::type> > class UnorderedMap { private: typedef typename ViewTraits::host_mirror_space @@ -215,13 +215,13 @@ class UnorderedMap { // key_types typedef Key declared_key_type; - typedef typename Impl::remove_const::type key_type; - typedef typename Impl::add_const::type const_key_type; + typedef typename std::remove_const::type key_type; + typedef typename std::add_const::type const_key_type; // value_types typedef Value declared_value_type; - typedef typename Impl::remove_const::type value_type; - typedef typename Impl::add_const::type const_value_type; + typedef typename std::remove_const::type value_type; + typedef typename std::add_const::type const_value_type; typedef Device device_type; typedef typename Device::execution_space execution_space; @@ -296,25 +296,13 @@ class UnorderedMap { //! \name Public member functions //@{ - UnorderedMap() - : m_bounded_insert(), - m_hasher(), - m_equal_to(), - m_size(), - m_available_indexes(), - m_hash_lists(), - m_next_index(), - m_keys(), - m_values(), - m_scalars() {} - /// \brief Constructor /// /// \param capacity_hint [in] Initial guess of how many unique keys will be /// inserted into the map \param hash [in] Hasher function for \c Key /// instances. The /// default value usually suffices. - UnorderedMap(size_type capacity_hint, hasher_type hasher = hasher_type(), + UnorderedMap(size_type capacity_hint = 0, hasher_type hasher = hasher_type(), equal_to_type equal_to = equal_to_type()) : m_bounded_insert(true), m_hasher(hasher), @@ -689,7 +677,7 @@ class UnorderedMap { template UnorderedMap( UnorderedMap const &src, - typename Impl::enable_if< + typename std::enable_if< Impl::UnorderedMapCanAssign::value, int>::type = 0) @@ -705,7 +693,7 @@ class UnorderedMap { m_scalars(src.m_scalars) {} template - typename Impl::enable_if< + typename std::enable_if< Impl::UnorderedMapCanAssign::value, declared_map_type &>::type @@ -724,9 +712,9 @@ class UnorderedMap { } template - typename Impl::enable_if< - std::is_same::type, key_type>::value && - std::is_same::type, + typename std::enable_if< + std::is_same::type, key_type>::value && + std::is_same::type, value_type>::value>::type create_copy_view( UnorderedMap const &src) { diff --git a/lib/kokkos/containers/src/Kokkos_Vector.hpp b/lib/kokkos/containers/src/Kokkos_Vector.hpp index 0641eeba82..02c3e44fc4 100644 --- a/lib/kokkos/containers/src/Kokkos_Vector.hpp +++ b/lib/kokkos/containers/src/Kokkos_Vector.hpp @@ -118,12 +118,12 @@ class vector : public DualView { if (DV::template need_sync()) { set_functor_host f(DV::h_view, val); - parallel_for(n, f); + parallel_for("Kokkos::vector::assign", n, f); typename DV::t_host::execution_space().fence(); DV::template modify(); } else { set_functor f(DV::d_view, val); - parallel_for(n, f); + parallel_for("Kokkos::vector::assign", n, f); typename DV::t_dev::execution_space().fence(); DV::template modify(); } diff --git a/lib/kokkos/containers/src/impl/Kokkos_Bitset_impl.hpp b/lib/kokkos/containers/src/impl/Kokkos_Bitset_impl.hpp index f5fa4d518a..6fd4319a82 100644 --- a/lib/kokkos/containers/src/impl/Kokkos_Bitset_impl.hpp +++ b/lib/kokkos/containers/src/impl/Kokkos_Bitset_impl.hpp @@ -77,7 +77,8 @@ struct BitsetCount { size_type apply() const { size_type count = 0u; - parallel_reduce(m_bitset.m_blocks.extent(0), *this, count); + parallel_reduce("Kokkos::Impl::BitsetCount::apply", + m_bitset.m_blocks.extent(0), *this, count); return count; } diff --git a/lib/kokkos/containers/src/impl/Kokkos_StaticCrsGraph_factory.hpp b/lib/kokkos/containers/src/impl/Kokkos_StaticCrsGraph_factory.hpp index d644c57c0a..a5fb9990f6 100644 --- a/lib/kokkos/containers/src/impl/Kokkos_StaticCrsGraph_factory.hpp +++ b/lib/kokkos/containers/src/impl/Kokkos_StaticCrsGraph_factory.hpp @@ -58,8 +58,8 @@ inline typename StaticCrsGraph& view, - typename Impl::enable_if::is_hostspace>::type* = 0) { + typename std::enable_if::is_hostspace>::type* = 0) { return view; } #else @@ -70,8 +70,8 @@ inline typename StaticCrsGraph& view, - typename Impl::enable_if::is_hostspace>::type* = 0) { + typename std::enable_if::is_hostspace>::type* = 0) { return view; } #endif @@ -128,8 +128,8 @@ inline typename StaticCrsGraph& view, - typename Impl::enable_if::is_hostspace>::type* = 0) + typename std::enable_if::is_hostspace>::type* = 0) #else template @@ -138,8 +138,8 @@ inline typename StaticCrsGraph& view, - typename Impl::enable_if::is_hostspace>::type* = 0) + typename std::enable_if::is_hostspace>::type* = 0) #endif { return create_mirror(view); diff --git a/lib/kokkos/containers/src/impl/Kokkos_UnorderedMap_impl.hpp b/lib/kokkos/containers/src/impl/Kokkos_UnorderedMap_impl.hpp index 55e76c424d..813936575c 100644 --- a/lib/kokkos/containers/src/impl/Kokkos_UnorderedMap_impl.hpp +++ b/lib/kokkos/containers/src/impl/Kokkos_UnorderedMap_impl.hpp @@ -71,7 +71,10 @@ struct UnorderedMapRehash { UnorderedMapRehash(map_type const& dst, const_map_type const& src) : m_dst(dst), m_src(src) {} - void apply() const { parallel_for(m_src.capacity(), *this); } + void apply() const { + parallel_for("Kokkos::Impl::UnorderedMapRehash::apply", m_src.capacity(), + *this); + } KOKKOS_INLINE_FUNCTION void operator()(size_type i) const { @@ -91,7 +94,10 @@ struct UnorderedMapErase { UnorderedMapErase(map_type const& map) : m_map(map) {} - void apply() const { parallel_for(m_map.m_hash_lists.extent(0), *this); } + void apply() const { + parallel_for("Kokkos::Impl::UnorderedMapErase::apply", + m_map.m_hash_lists.extent(0), *this); + } KOKKOS_INLINE_FUNCTION void operator()(size_type i) const { @@ -152,7 +158,10 @@ struct UnorderedMapHistogram { m_distance("UnorderedMap Histogram"), m_block_distance("UnorderedMap Histogram") {} - void calculate() { parallel_for(m_map.m_hash_lists.extent(0), *this); } + void calculate() { + parallel_for("Kokkos::Impl::UnorderedMapHistogram::calculate", + m_map.m_hash_lists.extent(0), *this); + } void clear() { Kokkos::deep_copy(m_length, 0); @@ -229,7 +238,10 @@ struct UnorderedMapPrint { UnorderedMapPrint(map_type const& map) : m_map(map) {} - void apply() { parallel_for(m_map.m_hash_lists.extent(0), *this); } + void apply() { + parallel_for("Kokkos::Impl::UnorderedMapPrint::apply", + m_map.m_hash_lists.extent(0), *this); + } KOKKOS_INLINE_FUNCTION void operator()(size_type i) const { @@ -245,21 +257,22 @@ struct UnorderedMapPrint { }; template -struct UnorderedMapCanAssign : public false_ {}; +struct UnorderedMapCanAssign : public std::false_type {}; template -struct UnorderedMapCanAssign : public true_ {}; +struct UnorderedMapCanAssign : public std::true_type {}; template -struct UnorderedMapCanAssign : public true_ {}; +struct UnorderedMapCanAssign + : public std::true_type {}; template struct UnorderedMapCanAssign - : public true_ {}; + : public std::true_type {}; template struct UnorderedMapCanAssign - : public true_ {}; + : public std::true_type {}; } // namespace Impl } // namespace Kokkos diff --git a/lib/kokkos/containers/unit_tests/CMakeLists.txt b/lib/kokkos/containers/unit_tests/CMakeLists.txt index a83ab1293c..448cdf4386 100644 --- a/lib/kokkos/containers/unit_tests/CMakeLists.txt +++ b/lib/kokkos/containers/unit_tests/CMakeLists.txt @@ -3,7 +3,7 @@ KOKKOS_INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}) KOKKOS_INCLUDE_DIRECTORIES(REQUIRED_DURING_INSTALLATION_TESTING ${CMAKE_CURRENT_SOURCE_DIR}) KOKKOS_INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/../src ) -foreach(Tag Threads;Serial;OpenMP;HPX;Cuda) +foreach(Tag Threads;Serial;OpenMP;HPX;Cuda;HIP) # Because there is always an exception to the rule if(Tag STREQUAL "Threads") set(DEVICE "PTHREAD") @@ -13,23 +13,31 @@ foreach(Tag Threads;Serial;OpenMP;HPX;Cuda) string(TOLOWER ${Tag} dir) # Add test for that backend if it is enabled if(Kokkos_ENABLE_${DEVICE}) - KOKKOS_ADD_EXECUTABLE_AND_TEST( - UnitTest_${Tag} - SOURCES - UnitTestMain.cpp - ${dir}/Test${Tag}_BitSet.cpp - ${dir}/Test${Tag}_DualView.cpp - ${dir}/Test${Tag}_DynamicView.cpp - ${dir}/Test${Tag}_DynRankViewAPI_generic.cpp - ${dir}/Test${Tag}_DynRankViewAPI_rank12345.cpp - ${dir}/Test${Tag}_DynRankViewAPI_rank67.cpp - ${dir}/Test${Tag}_ErrorReporter.cpp - ${dir}/Test${Tag}_OffsetView.cpp - ${dir}/Test${Tag}_ScatterView.cpp - ${dir}/Test${Tag}_StaticCrsGraph.cpp - ${dir}/Test${Tag}_UnorderedMap.cpp - ${dir}/Test${Tag}_Vector.cpp - ${dir}/Test${Tag}_ViewCtorPropEmbeddedDim.cpp + set(UnitTestSources UnitTestMain.cpp) + set(dir ${CMAKE_CURRENT_BINARY_DIR}/${dir}) + file(MAKE_DIRECTORY ${dir}) + foreach(Name + Bitset + DualView + DynamicView + DynViewAPI_generic + DynViewAPI_rank12345 + DynViewAPI_rank67 + ErrorReporter + OffsetView + ScatterView + StaticCrsGraph + UnorderedMap + Vector + ViewCtorPropEmbeddedDim + ) + set(file ${dir}/Test${Tag}_${Name}.cpp) + file(WRITE ${file} + "#include \n" + "#include \n" ) + list(APPEND UnitTestSources ${file}) + endforeach() + KOKKOS_ADD_EXECUTABLE_AND_TEST(UnitTest_${Tag} SOURCES ${UnitTestSources}) endif() endforeach() diff --git a/lib/kokkos/containers/unit_tests/Makefile b/lib/kokkos/containers/unit_tests/Makefile index a7e0233f8a..308b5aa8b5 100644 --- a/lib/kokkos/containers/unit_tests/Makefile +++ b/lib/kokkos/containers/unit_tests/Makefile @@ -9,7 +9,7 @@ vpath %.cpp ${KOKKOS_PATH}/containers/unit_tests/serial vpath %.cpp ${KOKKOS_PATH}/containers/unit_tests/threads vpath %.cpp ${KOKKOS_PATH}/containers/unit_tests/rocm vpath %.cpp ${KOKKOS_PATH}/containers/unit_tests/cuda - +vpath %.cpp ${CURDIR} default: build_all echo "End Build" @@ -31,14 +31,24 @@ KOKKOS_CXXFLAGS += -I$(GTEST_PATH) -I${KOKKOS_PATH}/containers/unit_tests TEST_TARGETS = TARGETS = +TESTS = Bitset DualView DynamicView DynViewAPI_generic DynViewAPI_rank12345 DynViewAPI_rank67 ErrorReporter OffsetView ScatterView StaticCrsGraph UnorderedMap Vector ViewCtorPropEmbeddedDim +tmp := $(foreach device, $(KOKKOS_DEVICELIST), \ + tmp2 := $(foreach test, $(TESTS), \ + $(if $(filter Test$(device)_$(test).cpp, $(shell ls Test$(device)_$(test).cpp 2>/dev/null)),,\ + $(shell echo "\#include" > Test$(device)_$(test).cpp); \ + $(shell echo "\#include" >> Test$(device)_$(test).cpp); \ + )\ + ) \ +) + ifeq ($(KOKKOS_INTERNAL_USE_CUDA), 1) OBJ_CUDA = UnitTestMain.o gtest-all.o - OBJ_CUDA += TestCuda_BitSet.o + OBJ_CUDA += TestCuda_Bitset.o OBJ_CUDA += TestCuda_DualView.o OBJ_CUDA += TestCuda_DynamicView.o - OBJ_CUDA += TestCuda_DynRankViewAPI_generic.o - OBJ_CUDA += TestCuda_DynRankViewAPI_rank12345.o - OBJ_CUDA += TestCuda_DynRankViewAPI_rank67.o + OBJ_CUDA += TestCuda_DynViewAPI_generic.o + OBJ_CUDA += TestCuda_DynViewAPI_rank12345.o + OBJ_CUDA += TestCuda_DynViewAPI_rank67.o OBJ_CUDA += TestCuda_ErrorReporter.o OBJ_CUDA += TestCuda_OffsetView.o OBJ_CUDA += TestCuda_ScatterView.o @@ -50,33 +60,14 @@ ifeq ($(KOKKOS_INTERNAL_USE_CUDA), 1) TEST_TARGETS += test-cuda endif -ifeq ($(KOKKOS_INTERNAL_USE_ROCM), 1) - OBJ_ROCM = UnitTestMain.o gtest-all.o - OBJ_ROCM += TestROCm_BitSet.o - OBJ_ROCM += TestROCm_DualView.o - OBJ_ROCM += TestROCm_DynamicView.o - OBJ_ROCM += TestROCm_DynRankViewAPI_generic.o - OBJ_ROCM += TestROCm_DynRankViewAPI_rank12345.o - OBJ_ROCM += TestROCm_DynRankViewAPI_rank67.o - OBJ_ROCM += TestROCm_ErrorReporter.o - OBJ_ROCM += TestROCm_OffsetView.o - OBJ_ROCM += TestROCm_ScatterView.o - OBJ_ROCM += TestROCm_StaticCrsGraph.o - OBJ_ROCM += TestROCm_UnorderedMap.o - OBJ_ROCM += TestROCm_Vector.o - OBJ_ROCM += TestROCm_ViewCtorPropEmbeddedDim.o - TARGETS += KokkosContainers_UnitTest_ROCm - TEST_TARGETS += test-rocm -endif - ifeq ($(KOKKOS_INTERNAL_USE_PTHREADS), 1) OBJ_THREADS = UnitTestMain.o gtest-all.o - OBJ_THREADS += TestThreads_BitSet.o + OBJ_THREADS += TestThreads_Bitset.o OBJ_THREADS += TestThreads_DualView.o OBJ_THREADS += TestThreads_DynamicView.o - OBJ_THREADS += TestThreads_DynRankViewAPI_generic.o - OBJ_THREADS += TestThreads_DynRankViewAPI_rank12345.o - OBJ_THREADS += TestThreads_DynRankViewAPI_rank67.o + OBJ_THREADS += TestThreads_DynViewAPI_generic.o + OBJ_THREADS += TestThreads_DynViewAPI_rank12345.o + OBJ_THREADS += TestThreads_DynViewAPI_rank67.o OBJ_THREADS += TestThreads_ErrorReporter.o OBJ_THREADS += TestThreads_OffsetView.o OBJ_THREADS += TestThreads_ScatterView.o @@ -90,12 +81,12 @@ endif ifeq ($(KOKKOS_INTERNAL_USE_OPENMP), 1) OBJ_OPENMP = UnitTestMain.o gtest-all.o - OBJ_OPENMP += TestOpenMP_BitSet.o + OBJ_OPENMP += TestOpenMP_Bitset.o OBJ_OPENMP += TestOpenMP_DualView.o OBJ_OPENMP += TestOpenMP_DynamicView.o - OBJ_OPENMP += TestOpenMP_DynRankViewAPI_generic.o - OBJ_OPENMP += TestOpenMP_DynRankViewAPI_rank12345.o - OBJ_OPENMP += TestOpenMP_DynRankViewAPI_rank67.o + OBJ_OPENMP += TestOpenMP_DynViewAPI_generic.o + OBJ_OPENMP += TestOpenMP_DynViewAPI_rank12345.o + OBJ_OPENMP += TestOpenMP_DynViewAPI_rank67.o OBJ_OPENMP += TestOpenMP_ErrorReporter.o OBJ_OPENMP += TestOpenMP_OffsetView.o OBJ_OPENMP += TestOpenMP_ScatterView.o @@ -109,12 +100,12 @@ endif ifeq ($(KOKKOS_INTERNAL_USE_HPX), 1) OBJ_HPX = UnitTestMain.o gtest-all.o - OBJ_HPX += TestHPX_BitSet.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_DynViewAPI_generic.o + OBJ_HPX += TestHPX_DynViewAPI_rank12345.o + OBJ_HPX += TestHPX_DynViewAPI_rank67.o OBJ_HPX += TestHPX_ErrorReporter.o OBJ_HPX += TestHPX_OffsetView.o OBJ_HPX += TestHPX_ScatterView.o @@ -128,12 +119,12 @@ endif ifeq ($(KOKKOS_INTERNAL_USE_SERIAL), 1) OBJ_SERIAL = UnitTestMain.o gtest-all.o - OBJ_SERIAL += TestSerial_BitSet.o + OBJ_SERIAL += TestSerial_Bitset.o OBJ_SERIAL += TestSerial_DualView.o OBJ_SERIAL += TestSerial_DynamicView.o - OBJ_SERIAL += TestSerial_DynRankViewAPI_generic.o - OBJ_SERIAL += TestSerial_DynRankViewAPI_rank12345.o - OBJ_SERIAL += TestSerial_DynRankViewAPI_rank67.o + OBJ_SERIAL += TestSerial_DynViewAPI_generic.o + OBJ_SERIAL += TestSerial_DynViewAPI_rank12345.o + OBJ_SERIAL += TestSerial_DynViewAPI_rank67.o OBJ_SERIAL += TestSerial_ErrorReporter.o OBJ_SERIAL += TestSerial_OffsetView.o OBJ_SERIAL += TestSerial_ScatterView.o @@ -148,9 +139,6 @@ endif KokkosContainers_UnitTest_Cuda: $(OBJ_CUDA) $(KOKKOS_LINK_DEPENDS) $(LINK) $(EXTRA_PATH) $(OBJ_CUDA) $(KOKKOS_LIBS) $(LIB) $(KOKKOS_LDFLAGS) $(LDFLAGS) -o KokkosContainers_UnitTest_Cuda -KokkosContainers_UnitTest_ROCm: $(OBJ_ROCM) $(KOKKOS_LINK_DEPENDS) - $(LINK) $(EXTRA_PATH) $(OBJ_ROCM) $(KOKKOS_LIBS) $(LIB) $(KOKKOS_LDFLAGS) $(LDFLAGS) -o KokkosContainers_UnitTest_ROCm - KokkosContainers_UnitTest_Threads: $(OBJ_THREADS) $(KOKKOS_LINK_DEPENDS) $(LINK) $(EXTRA_PATH) $(OBJ_THREADS) $(KOKKOS_LIBS) $(LIB) $(KOKKOS_LDFLAGS) $(LDFLAGS) -o KokkosContainers_UnitTest_Threads @@ -166,9 +154,6 @@ KokkosContainers_UnitTest_Serial: $(OBJ_SERIAL) $(KOKKOS_LINK_DEPENDS) test-cuda: KokkosContainers_UnitTest_Cuda ./KokkosContainers_UnitTest_Cuda -test-rocm: KokkosContainers_UnitTest_ROCm - ./KokkosContainers_UnitTest_ROCm - test-threads: KokkosContainers_UnitTest_Threads ./KokkosContainers_UnitTest_Threads @@ -186,7 +171,7 @@ build_all: $(TARGETS) test: $(TEST_TARGETS) clean: kokkos-clean - rm -f *.o $(TARGETS) + rm -f *.o $(TARGETS) *.cpp # Compilation rules diff --git a/lib/kokkos/containers/unit_tests/TestBitset.hpp b/lib/kokkos/containers/unit_tests/TestBitset.hpp index ebd35d3ae7..661a1365cb 100644 --- a/lib/kokkos/containers/unit_tests/TestBitset.hpp +++ b/lib/kokkos/containers/unit_tests/TestBitset.hpp @@ -253,8 +253,10 @@ void test_bitset() { } } +// FIXME_HIP deadlock +#ifndef KOKKOS_ENABLE_HIP TEST(TEST_CATEGORY, bitset) { test_bitset(); } - +#endif } // namespace Test #endif // KOKKOS_TEST_BITSET_HPP diff --git a/lib/kokkos/containers/unit_tests/cuda/TestCuda_Category.hpp b/lib/kokkos/containers/unit_tests/TestCuda_Category.hpp similarity index 100% rename from lib/kokkos/containers/unit_tests/cuda/TestCuda_Category.hpp rename to lib/kokkos/containers/unit_tests/TestCuda_Category.hpp diff --git a/lib/kokkos/containers/unit_tests/TestDualView.hpp b/lib/kokkos/containers/unit_tests/TestDualView.hpp index 572ef48839..665f251158 100644 --- a/lib/kokkos/containers/unit_tests/TestDualView.hpp +++ b/lib/kokkos/containers/unit_tests/TestDualView.hpp @@ -67,11 +67,17 @@ struct test_dualview_combinations { Scalar result; template - Scalar run_me(unsigned int n, unsigned int m) { + Scalar run_me(unsigned int n, unsigned int m, bool with_init) { if (n < 10) n = 10; if (m < 3) m = 3; - ViewType a("A", n, m); + ViewType a; + + if (with_init) { + a = ViewType("A", n, m); + } else { + a = ViewType(Kokkos::ViewAllocateWithoutInitializing("A"), n, m); + } Kokkos::deep_copy(a.d_view, 1); a.template modify(); @@ -96,9 +102,9 @@ struct test_dualview_combinations { return count - a.d_view.extent(0) * a.d_view.extent(1) - 2 - 4 - 3 * 2; } - test_dualview_combinations(unsigned int size) { + test_dualview_combinations(unsigned int size, bool with_init) { result = run_me >( - size, 3); + size, 3, with_init); } }; @@ -124,18 +130,25 @@ struct test_dual_view_deep_copy { typedef Device execution_space; template - void run_me() { - const unsigned int n = 10; - const unsigned int m = 5; - const unsigned int sum_total = n * m; - - ViewType a("A", n, m); - ViewType b("B", n, m); + void run_me(int n, const int m, const bool use_templ_sync) { + ViewType a, b; + if (n >= 0) { + a = ViewType("A", n, m); + b = ViewType("B", n, m); + } else { + n = 0; + } + const scalar_type sum_total = scalar_type(n * m); Kokkos::deep_copy(a.d_view, 1); - a.template modify(); - a.template sync(); + if (use_templ_sync) { + a.template modify(); + a.template sync(); + } else { + a.modify_device(); + a.sync_host(); + } // Check device view is initialized as expected scalar_type a_d_sum = 0; @@ -159,7 +172,11 @@ struct test_dual_view_deep_copy { // Test deep_copy Kokkos::deep_copy(b, a); - b.template sync(); + if (use_templ_sync) { + b.template sync(); + } else { + b.sync_host(); + } // Perform same checks on b as done on a // Check device view is initialized as expected @@ -183,6 +200,145 @@ struct test_dual_view_deep_copy { } // end run_me test_dual_view_deep_copy() { + run_me >(10, 5, + true); + run_me >(10, 5, + false); + // Test zero length but allocated (a.d_view.data!=nullptr but + // a.d_view.span()==0) + run_me >(0, 5, true); + run_me >(0, 5, + false); + + // Test default constructed view + run_me >(-1, 5, + true); + run_me >(-1, 5, + false); + } +}; + +template +struct test_dualview_resize { + typedef Scalar scalar_type; + typedef Device execution_space; + + template + void run_me() { + const unsigned int n = 10; + const unsigned int m = 5; + const unsigned int factor = 2; + + ViewType a("A", n, m); + Kokkos::deep_copy(a.d_view, 1); + + /* Covers case "Resize on Device" */ + a.modify_device(); + Kokkos::resize(a, factor * n, factor * m); + ASSERT_EQ(a.extent(0), n * factor); + ASSERT_EQ(a.extent(1), m * factor); + + Kokkos::deep_copy(a.d_view, 1); + a.sync_host(); + + // Check device view is initialized as expected + scalar_type a_d_sum = 0; + // Execute on the execution_space associated with t_dev's memory space + typedef typename ViewType::t_dev::memory_space::execution_space + t_dev_exec_space; + Kokkos::parallel_reduce( + Kokkos::RangePolicy(0, a.d_view.extent(0)), + SumViewEntriesFunctor(a.d_view), + a_d_sum); + + // Check host view is synced as expected + scalar_type a_h_sum = 0; + for (size_t i = 0; i < a.h_view.extent(0); ++i) + for (size_t j = 0; j < a.h_view.extent(1); ++j) { + a_h_sum += a.h_view(i, j); + } + + // Check + ASSERT_EQ(a_h_sum, a_d_sum); + ASSERT_EQ(a_h_sum, a.extent(0) * a.extent(1)); + + /* Covers case "Resize on Host" */ + a.modify_host(); + + Kokkos::resize(a, n / factor, m / factor); + ASSERT_EQ(a.extent(0), n / factor); + ASSERT_EQ(a.extent(1), m / factor); + + a.sync_device(); + + // Check device view is initialized as expected + a_d_sum = 0; + // Execute on the execution_space associated with t_dev's memory space + typedef typename ViewType::t_dev::memory_space::execution_space + t_dev_exec_space; + Kokkos::parallel_reduce( + Kokkos::RangePolicy(0, a.d_view.extent(0)), + SumViewEntriesFunctor(a.d_view), + a_d_sum); + + // Check host view is synced as expected + a_h_sum = 0; + for (size_t i = 0; i < a.h_view.extent(0); ++i) + for (size_t j = 0; j < a.h_view.extent(1); ++j) { + a_h_sum += a.h_view(i, j); + } + + // Check + ASSERT_EQ(a_h_sum, a.extent(0) * a.extent(1)); + ASSERT_EQ(a_h_sum, a_d_sum); + + } // end run_me + + test_dualview_resize() { + run_me >(); + } +}; + +template +struct test_dualview_realloc { + typedef Scalar scalar_type; + typedef Device execution_space; + + template + void run_me() { + const unsigned int n = 10; + const unsigned int m = 5; + + ViewType a("A", n, m); + Kokkos::realloc(a, n, m); + + Kokkos::deep_copy(a.d_view, 1); + a.modify_device(); + a.sync_host(); + + // Check device view is initialized as expected + scalar_type a_d_sum = 0; + // Execute on the execution_space associated with t_dev's memory space + typedef typename ViewType::t_dev::memory_space::execution_space + t_dev_exec_space; + Kokkos::parallel_reduce( + Kokkos::RangePolicy(0, a.d_view.extent(0)), + SumViewEntriesFunctor(a.d_view), + a_d_sum); + + // Check host view is synced as expected + scalar_type a_h_sum = 0; + for (size_t i = 0; i < a.h_view.extent(0); ++i) + for (size_t j = 0; j < a.h_view.extent(1); ++j) { + a_h_sum += a.h_view(i, j); + } + + // Check + ASSERT_EQ(a_h_sum, a.extent(0) * a.extent(1)); + ASSERT_EQ(a_h_sum, a_d_sum); + } // end run_me + + test_dualview_realloc() { run_me >(); } }; @@ -190,8 +346,8 @@ struct test_dual_view_deep_copy { } // namespace Impl template -void test_dualview_combinations(unsigned int size) { - Impl::test_dualview_combinations test(size); +void test_dualview_combinations(unsigned int size, bool with_init) { + Impl::test_dualview_combinations test(size, with_init); ASSERT_EQ(test.result, 0); } @@ -200,8 +356,22 @@ void test_dualview_deep_copy() { Impl::test_dual_view_deep_copy(); } +template +void test_dualview_realloc() { + Impl::test_dualview_realloc(); +} + +template +void test_dualview_resize() { + Impl::test_dualview_resize(); +} + TEST(TEST_CATEGORY, dualview_combination) { - test_dualview_combinations(10); + test_dualview_combinations(10, true); +} + +TEST(TEST_CATEGORY, dualview_combinations_without_init) { + test_dualview_combinations(10, false); } TEST(TEST_CATEGORY, dualview_deep_copy) { @@ -209,6 +379,14 @@ TEST(TEST_CATEGORY, dualview_deep_copy) { test_dualview_deep_copy(); } +TEST(TEST_CATEGORY, dualview_realloc) { + test_dualview_realloc(); +} + +TEST(TEST_CATEGORY, dualview_resize) { + test_dualview_resize(); +} + } // namespace Test -#endif // KOKKOS_TEST_UNORDERED_MAP_HPP +#endif // KOKKOS_TEST_DUALVIEW_HPP diff --git a/lib/kokkos/containers/unit_tests/TestDynViewAPI.hpp b/lib/kokkos/containers/unit_tests/TestDynViewAPI.hpp index 3692aa8a12..5c1d0229cb 100644 --- a/lib/kokkos/containers/unit_tests/TestDynViewAPI.hpp +++ b/lib/kokkos/containers/unit_tests/TestDynViewAPI.hpp @@ -706,8 +706,6 @@ class TestDynViewAPI { typedef typename View0::host_mirror_space host_view_space; - TestDynViewAPI() {} - static void run_tests() { run_test_resize_realloc(); run_test_mirror(); @@ -1078,12 +1076,12 @@ class TestDynViewAPI { ASSERT_TRUE(Kokkos::is_dyn_rank_view::value); ASSERT_FALSE(Kokkos::is_dyn_rank_view >::value); - ASSERT_TRUE(dx.data() == 0); // Okay with UVM - ASSERT_TRUE(dy.data() == 0); // Okay with UVM - ASSERT_TRUE(dz.data() == 0); // Okay with UVM - ASSERT_TRUE(hx.data() == 0); - ASSERT_TRUE(hy.data() == 0); - ASSERT_TRUE(hz.data() == 0); + ASSERT_TRUE(dx.data() == nullptr); // Okay with UVM + ASSERT_TRUE(dy.data() == nullptr); // Okay with UVM + ASSERT_TRUE(dz.data() == nullptr); // Okay with UVM + ASSERT_TRUE(hx.data() == nullptr); + ASSERT_TRUE(hy.data() == nullptr); + ASSERT_TRUE(hz.data() == nullptr); ASSERT_EQ(dx.extent(0), 0u); // Okay with UVM ASSERT_EQ(dy.extent(0), 0u); // Okay with UVM ASSERT_EQ(dz.extent(0), 0u); // Okay with UVM @@ -1154,11 +1152,11 @@ class TestDynViewAPI { ASSERT_EQ(dx.use_count(), size_t(2)); - ASSERT_FALSE(dx.data() == 0); - ASSERT_FALSE(const_dx.data() == 0); - ASSERT_FALSE(unmanaged_dx.data() == 0); - ASSERT_FALSE(unmanaged_from_ptr_dx.data() == 0); - ASSERT_FALSE(dy.data() == 0); + ASSERT_FALSE(dx.data() == nullptr); + ASSERT_FALSE(const_dx.data() == nullptr); + ASSERT_FALSE(unmanaged_dx.data() == nullptr); + ASSERT_FALSE(unmanaged_from_ptr_dx.data() == nullptr); + ASSERT_FALSE(dy.data() == nullptr); ASSERT_NE(dx, dy); ASSERT_EQ(dx.extent(0), unsigned(N0)); @@ -1318,17 +1316,17 @@ class TestDynViewAPI { ASSERT_NE(dx, dz); dx = dView0(); - ASSERT_TRUE(dx.data() == 0); - ASSERT_FALSE(dy.data() == 0); - ASSERT_FALSE(dz.data() == 0); + ASSERT_TRUE(dx.data() == nullptr); + ASSERT_FALSE(dy.data() == nullptr); + ASSERT_FALSE(dz.data() == nullptr); dy = dView0(); - ASSERT_TRUE(dx.data() == 0); - ASSERT_TRUE(dy.data() == 0); - ASSERT_FALSE(dz.data() == 0); + ASSERT_TRUE(dx.data() == nullptr); + ASSERT_TRUE(dy.data() == nullptr); + ASSERT_FALSE(dz.data() == nullptr); dz = dView0(); - ASSERT_TRUE(dx.data() == 0); - ASSERT_TRUE(dy.data() == 0); - ASSERT_TRUE(dz.data() == 0); + ASSERT_TRUE(dx.data() == nullptr); + ASSERT_TRUE(dy.data() == nullptr); + ASSERT_TRUE(dz.data() == nullptr); // View - DynRankView Interoperability tests // deep_copy from view to dynrankview diff --git a/lib/kokkos/containers/unit_tests/TestDynViewAPI_generic.hpp b/lib/kokkos/containers/unit_tests/TestDynViewAPI_generic.hpp index 90ca5df194..b3e2812b44 100644 --- a/lib/kokkos/containers/unit_tests/TestDynViewAPI_generic.hpp +++ b/lib/kokkos/containers/unit_tests/TestDynViewAPI_generic.hpp @@ -44,7 +44,10 @@ #include namespace Test { +// FIXME_HIP attempt to access inaccessible memory space +#ifndef KOKKOS_ENABLE_HIP TEST(TEST_CATEGORY, dyn_rank_view_api_generic) { TestDynViewAPI::run_tests(); } +#endif } // namespace Test diff --git a/lib/kokkos/containers/unit_tests/TestDynViewAPI_rank12345.hpp b/lib/kokkos/containers/unit_tests/TestDynViewAPI_rank12345.hpp index 050ebbe35c..86a2e4e954 100644 --- a/lib/kokkos/containers/unit_tests/TestDynViewAPI_rank12345.hpp +++ b/lib/kokkos/containers/unit_tests/TestDynViewAPI_rank12345.hpp @@ -45,7 +45,10 @@ #include namespace Test { +// FIXME_HIP failing with wrong value +#ifndef KOKKOS_ENABLE_HIP TEST(TEST_CATEGORY, dyn_rank_view_api_operator_rank12345) { TestDynViewAPI::run_operator_test_rank12345(); } +#endif } // namespace Test diff --git a/lib/kokkos/containers/unit_tests/TestDynamicView.hpp b/lib/kokkos/containers/unit_tests/TestDynamicView.hpp index 235464ef07..8eabbcb371 100644 --- a/lib/kokkos/containers/unit_tests/TestDynamicView.hpp +++ b/lib/kokkos/containers/unit_tests/TestDynamicView.hpp @@ -79,7 +79,6 @@ struct TestDynamicView { ASSERT_EQ(da.size(), da_size); #if defined(KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA) -#if !defined(KOKKOS_ENABLE_CUDA) || (8000 <= CUDA_VERSION) Kokkos::parallel_for( Kokkos::RangePolicy(0, da_size), KOKKOS_LAMBDA(const int i) { da(i) = Scalar(i); }); @@ -93,7 +92,6 @@ struct TestDynamicView { result_sum); ASSERT_EQ(result_sum, (value_type)(da_size * (da_size - 1) / 2)); -#endif #endif // add 3x more entries i.e. 4x larger than previous size @@ -103,7 +101,6 @@ struct TestDynamicView { ASSERT_EQ(da.size(), da_resize); #if defined(KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA) -#if !defined(KOKKOS_ENABLE_CUDA) || (8000 <= CUDA_VERSION) Kokkos::parallel_for( Kokkos::RangePolicy(da_size, da_resize), KOKKOS_LAMBDA(const int i) { da(i) = Scalar(i); }); @@ -118,7 +115,6 @@ struct TestDynamicView { ASSERT_EQ(new_result_sum + result_sum, (value_type)(da_resize * (da_resize - 1) / 2)); -#endif #endif } // end scope @@ -135,7 +131,6 @@ struct TestDynamicView { ASSERT_EQ(da.size(), da_size); #if defined(KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA) -#if !defined(KOKKOS_ENABLE_CUDA) || (8000 <= CUDA_VERSION) Kokkos::parallel_for( Kokkos::RangePolicy(0, da_size), KOKKOS_LAMBDA(const int i) { da(i) = Scalar(i); }); @@ -149,7 +144,6 @@ struct TestDynamicView { result_sum); ASSERT_EQ(result_sum, (value_type)(da_size * (da_size - 1) / 2)); -#endif #endif // add 3x more entries i.e. 4x larger than previous size @@ -159,7 +153,6 @@ struct TestDynamicView { ASSERT_EQ(da.size(), da_resize); #if defined(KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA) -#if !defined(KOKKOS_ENABLE_CUDA) || (8000 <= CUDA_VERSION) Kokkos::parallel_for( Kokkos::RangePolicy(da_size, da_resize), KOKKOS_LAMBDA(const int i) { da(i) = Scalar(i); }); @@ -174,7 +167,6 @@ struct TestDynamicView { ASSERT_EQ(new_result_sum + result_sum, (value_type)(da_resize * (da_resize - 1) / 2)); -#endif #endif } // end scope @@ -191,7 +183,6 @@ struct TestDynamicView { ASSERT_EQ(da.size(), da_size); #if defined(KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA) -#if !defined(KOKKOS_ENABLE_CUDA) || (8000 <= CUDA_VERSION) Kokkos::parallel_for( Kokkos::RangePolicy(0, da_size), KOKKOS_LAMBDA(const int i) { da(i) = Scalar(i); }); @@ -205,7 +196,6 @@ struct TestDynamicView { result_sum); ASSERT_EQ(result_sum, (value_type)(da_size * (da_size - 1) / 2)); -#endif #endif // remove the final 3/4 entries i.e. first 1/4 remain @@ -214,7 +204,6 @@ struct TestDynamicView { ASSERT_EQ(da.size(), da_resize); #if defined(KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA) -#if !defined(KOKKOS_ENABLE_CUDA) || (8000 <= CUDA_VERSION) Kokkos::parallel_for( Kokkos::RangePolicy(0, da_resize), KOKKOS_LAMBDA(const int i) { da(i) = Scalar(i); }); @@ -228,7 +217,6 @@ struct TestDynamicView { new_result_sum); ASSERT_EQ(new_result_sum, (value_type)(da_resize * (da_resize - 1) / 2)); -#endif #endif } // end scope } diff --git a/lib/kokkos/containers/unit_tests/TestErrorReporter.hpp b/lib/kokkos/containers/unit_tests/TestErrorReporter.hpp index 49b71cdea7..318132500c 100644 --- a/lib/kokkos/containers/unit_tests/TestErrorReporter.hpp +++ b/lib/kokkos/containers/unit_tests/TestErrorReporter.hpp @@ -50,9 +50,13 @@ #include #include +#ifndef M_PI +#define M_PI 3.14159265358979323846 +#endif + namespace Test { -// Just save the data in the report. Informative text goies in the +// Just save the data in the report. Informative text goes in the // operator<<(..). template struct ThreeValReport { @@ -85,7 +89,7 @@ struct ErrorReporterDriverBase { error_reporter_type; error_reporter_type m_errorReporter; - ErrorReporterDriverBase(int reporter_capacity, int test_size) + ErrorReporterDriverBase(int reporter_capacity, int /*test_size*/) : m_errorReporter(reporter_capacity) {} KOKKOS_INLINE_FUNCTION bool error_condition(const int work_idx) const { @@ -176,7 +180,8 @@ struct ErrorReporterDriver : public ErrorReporterDriverBase { } }; -#if defined(KOKKOS_CLASS_LAMBDA) +#if defined(KOKKOS_CLASS_LAMBDA) && \ + (!defined(KOKKOS_ENABLE_CUDA) || defined(KOKKOS_ENABLE_CUDA_LAMBDA)) template struct ErrorReporterDriverUseLambda : public ErrorReporterDriverBase { @@ -225,7 +230,8 @@ struct ErrorReporterDriverNativeOpenMP }; #endif -#if defined(KOKKOS_CLASS_LAMBDA) +#if defined(KOKKOS_CLASS_LAMBDA) && \ + (!defined(KOKKOS_ENABLE_CUDA) || defined(KOKKOS_ENABLE_CUDA_LAMBDA)) TEST(TEST_CATEGORY, ErrorReporterViaLambda) { TestErrorReporter>(); } diff --git a/lib/kokkos/containers/unit_tests/rocm/TestROCm_Category.hpp b/lib/kokkos/containers/unit_tests/TestHIP_Category.hpp similarity index 93% rename from lib/kokkos/containers/unit_tests/rocm/TestROCm_Category.hpp rename to lib/kokkos/containers/unit_tests/TestHIP_Category.hpp index d37cd05db6..c2d60d1814 100644 --- a/lib/kokkos/containers/unit_tests/rocm/TestROCm_Category.hpp +++ b/lib/kokkos/containers/unit_tests/TestHIP_Category.hpp @@ -42,10 +42,10 @@ //@HEADER */ -#ifndef KOKKOS_TEST_ROCM_HPP -#define KOKKOS_TEST_ROCM_HPP +#ifndef KOKKOS_TEST_HIP_HPP +#define KOKKOS_TEST_HIP_HPP -#define TEST_CATEGORY rocm -#define TEST_EXECSPACE Kokkos::Experimental::ROCm +#define TEST_CATEGORY hip +#define TEST_EXECSPACE Kokkos::Experimental::HIP #endif diff --git a/lib/kokkos/containers/unit_tests/hpx/TestHPX_Category.hpp b/lib/kokkos/containers/unit_tests/TestHPX_Category.hpp similarity index 100% rename from lib/kokkos/containers/unit_tests/hpx/TestHPX_Category.hpp rename to lib/kokkos/containers/unit_tests/TestHPX_Category.hpp diff --git a/lib/kokkos/containers/unit_tests/TestOffsetView.hpp b/lib/kokkos/containers/unit_tests/TestOffsetView.hpp index 12bcda9524..5114b8022f 100644 --- a/lib/kokkos/containers/unit_tests/TestOffsetView.hpp +++ b/lib/kokkos/containers/unit_tests/TestOffsetView.hpp @@ -60,7 +60,7 @@ using std::endl; namespace Test { template -void test_offsetview_construction(unsigned int size) { +void test_offsetview_construction() { typedef Kokkos::Experimental::OffsetView offset_view_type; typedef Kokkos::View view_type; @@ -185,15 +185,17 @@ void test_offsetview_construction(unsigned int size) { Kokkos::deep_copy(view3D, 1); - Kokkos::Array begins = {{-10, -20, -30}}; - Kokkos::Experimental::OffsetView offsetView3D(view3D, - begins); - typedef Kokkos::MDRangePolicy, Kokkos::IndexType > range3_type; typedef typename range3_type::point_type point3_type; + typename point3_type::value_type begins0 = -10, begins1 = -20, + begins2 = -30; + Kokkos::Array begins = {{begins0, begins1, begins2}}; + Kokkos::Experimental::OffsetView offsetView3D(view3D, + begins); + range3_type rangePolicy3DZero(point3_type{{0, 0, 0}}, point3_type{{extent0, extent1, extent2}}); @@ -207,9 +209,8 @@ void test_offsetview_construction(unsigned int size) { view3DSum); range3_type rangePolicy3D( - point3_type{{begins[0], begins[1], begins[2]}}, - point3_type{ - {begins[0] + extent0, begins[1] + extent1, begins[2] + extent2}}); + point3_type{{begins0, begins1, begins2}}, + point3_type{{begins0 + extent0, begins1 + extent1, begins2 + extent2}}); int offsetView3DSum = 0; Kokkos::parallel_reduce( @@ -388,7 +389,7 @@ void test_offsetview_unmanaged_construction() { } template -void test_offsetview_subview(unsigned int size) { +void test_offsetview_subview() { { // test subview 1 Kokkos::Experimental::OffsetView sliceMe("offsetToSlice", {-10, 20}); @@ -675,7 +676,7 @@ void test_offsetview_offsets_rank3() { #endif TEST(TEST_CATEGORY, offsetview_construction) { - test_offsetview_construction(10); + test_offsetview_construction(); } TEST(TEST_CATEGORY, offsetview_unmanaged_construction) { @@ -683,7 +684,7 @@ TEST(TEST_CATEGORY, offsetview_unmanaged_construction) { } TEST(TEST_CATEGORY, offsetview_subview) { - test_offsetview_subview(10); + test_offsetview_subview(); } #if defined(KOKKOS_ENABLE_CUDA_LAMBDA) || !defined(KOKKOS_ENABLE_CUDA) diff --git a/lib/kokkos/containers/unit_tests/openmp/TestOpenMP_Category.hpp b/lib/kokkos/containers/unit_tests/TestOpenMP_Category.hpp similarity index 100% rename from lib/kokkos/containers/unit_tests/openmp/TestOpenMP_Category.hpp rename to lib/kokkos/containers/unit_tests/TestOpenMP_Category.hpp diff --git a/lib/kokkos/containers/unit_tests/TestScatterView.hpp b/lib/kokkos/containers/unit_tests/TestScatterView.hpp index 93b69cc769..915d96d321 100644 --- a/lib/kokkos/containers/unit_tests/TestScatterView.hpp +++ b/lib/kokkos/containers/unit_tests/TestScatterView.hpp @@ -50,21 +50,21 @@ namespace Test { -template struct test_scatter_view_impl_cls; -template -struct test_scatter_view_impl_cls { public: - typedef Kokkos::Experimental::ScatterView scatter_view_type; - typedef Kokkos::View orig_view_type; + typedef Kokkos::View orig_view_type; scatter_view_type scatter_view; int scatterSize; @@ -90,7 +90,8 @@ struct test_scatter_view_impl_cls(0, n); + auto policy = + Kokkos::RangePolicy(0, n); Kokkos::parallel_for(policy, *this, "scatter_view_test: Sum"); } @@ -123,17 +124,17 @@ struct test_scatter_view_impl_cls -struct test_scatter_view_impl_cls { public: - typedef Kokkos::Experimental::ScatterView scatter_view_type; - typedef Kokkos::View orig_view_type; + typedef Kokkos::View orig_view_type; scatter_view_type scatter_view; int scatterSize; @@ -159,7 +160,8 @@ struct test_scatter_view_impl_cls(0, n); + auto policy = + Kokkos::RangePolicy(0, n); Kokkos::parallel_for(policy, *this, "scatter_view_test: Prod"); } @@ -192,17 +194,17 @@ struct test_scatter_view_impl_cls -struct test_scatter_view_impl_cls { public: - typedef Kokkos::Experimental::ScatterView scatter_view_type; - typedef Kokkos::View orig_view_type; + typedef Kokkos::View orig_view_type; scatter_view_type scatter_view; int scatterSize; @@ -228,7 +230,8 @@ struct test_scatter_view_impl_cls(0, n); + auto policy = + Kokkos::RangePolicy(0, n); Kokkos::parallel_for(policy, *this, "scatter_view_test: Prod"); } @@ -261,17 +264,17 @@ struct test_scatter_view_impl_cls -struct test_scatter_view_impl_cls { public: - typedef Kokkos::Experimental::ScatterView scatter_view_type; - typedef Kokkos::View orig_view_type; + typedef Kokkos::View orig_view_type; scatter_view_type scatter_view; int scatterSize; @@ -297,7 +300,7 @@ struct test_scatter_view_impl_cls(0, n); + Kokkos::RangePolicy policy(0, n); Kokkos::parallel_for(policy, *this, "scatter_view_test: Prod"); } @@ -330,20 +333,18 @@ struct test_scatter_view_impl_cls 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 { @@ -351,7 +352,7 @@ struct test_scatter_view_config { 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); @@ -379,7 +380,7 @@ struct test_scatter_view_config { 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); @@ -405,17 +406,18 @@ struct test_scatter_view_config { } }; -template +template struct TestDuplicatedScatterView { TestDuplicatedScatterView(int n) { // ScatterSum test - test_scatter_view_config< - ExecSpace, Kokkos::LayoutRight, Kokkos::Experimental::ScatterDuplicated, - Kokkos::Experimental::ScatterNonAtomic, ScatterType> + test_scatter_view_config test_sv_right_config; test_sv_right_config.run_test(n); test_scatter_view_config< - ExecSpace, Kokkos::LayoutLeft, Kokkos::Experimental::ScatterDuplicated, + DeviceType, Kokkos::LayoutLeft, Kokkos::Experimental::ScatterDuplicated, Kokkos::Experimental::ScatterNonAtomic, ScatterType> test_sv_left_config; test_sv_left_config.run_test(n); @@ -429,6 +431,16 @@ template struct TestDuplicatedScatterView { TestDuplicatedScatterView(int) {} }; +template +struct TestDuplicatedScatterView< + Kokkos::Device, ScatterType> { + TestDuplicatedScatterView(int) {} +}; +template +struct TestDuplicatedScatterView< + Kokkos::Device, ScatterType> { + TestDuplicatedScatterView(int) {} +}; #endif #ifdef KOKKOS_ENABLE_ROCM @@ -440,17 +452,15 @@ struct TestDuplicatedScatterView { }; #endif -template +template void test_scatter_view(int n) { - // all of these configurations should compile okay, but only some of them are - // correct and/or sensible in terms of memory use - Kokkos::Experimental::UniqueToken unique_token{ExecSpace()}; + using execution_space = typename DeviceType::execution_space; // no atomics or duplication is only sensible if the execution space // is running essentially in serial (doesn't have to be Serial though, // we also test OpenMP with one thread: LAMMPS cares about that) - if (unique_token.size() == 1) { - test_scatter_view_config @@ -458,9 +468,9 @@ void test_scatter_view(int n) { test_sv_config.run_test(n); } #ifdef KOKKOS_ENABLE_SERIAL - if (!std::is_same::value) { + if (!std::is_same::value) { #endif - test_scatter_view_config test_sv_config; @@ -473,16 +483,18 @@ void test_scatter_view(int n) { 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()); + maximum_allowed_total_bytes / + std::size_t(execution_space().concurrency()); 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); + TestDuplicatedScatterView duptest(n); } +// FIXME_HIP ScatterView requires UniqueToken +#ifndef KOKKOS_ENABLE_HIP TEST(TEST_CATEGORY, scatterview) { -#ifndef KOKKOS_ENABLE_ROCM test_scatter_view(10); test_scatter_view(10); test_scatter_view(10); @@ -504,8 +516,38 @@ TEST(TEST_CATEGORY, scatterview) { test_scatter_view(big_n); test_scatter_view(big_n); test_scatter_view(big_n); +} + +TEST(TEST_CATEGORY, scatterview_devicetype) { + using device_type = + Kokkos::Device; + + test_scatter_view(10); + test_scatter_view(10); + test_scatter_view(10); + test_scatter_view(10); + +#ifdef KOKKOS_ENABLE_CUDA + if (std::is_same::value) { + using cuda_device_type = Kokkos::Device; + test_scatter_view(10); + test_scatter_view(10); + test_scatter_view(10); + test_scatter_view(10); + using cudauvm_device_type = + Kokkos::Device; + test_scatter_view( + 10); + test_scatter_view( + 10); + test_scatter_view( + 10); + test_scatter_view( + 10); + } #endif } +#endif } // namespace Test diff --git a/lib/kokkos/containers/unit_tests/serial/TestSerial_Category.hpp b/lib/kokkos/containers/unit_tests/TestSerial_Category.hpp similarity index 100% rename from lib/kokkos/containers/unit_tests/serial/TestSerial_Category.hpp rename to lib/kokkos/containers/unit_tests/TestSerial_Category.hpp diff --git a/lib/kokkos/containers/unit_tests/threads/TestThreads_Category.hpp b/lib/kokkos/containers/unit_tests/TestThreads_Category.hpp similarity index 100% rename from lib/kokkos/containers/unit_tests/threads/TestThreads_Category.hpp rename to lib/kokkos/containers/unit_tests/TestThreads_Category.hpp diff --git a/lib/kokkos/containers/unit_tests/TestUnorderedMap.hpp b/lib/kokkos/containers/unit_tests/TestUnorderedMap.hpp index 82782d3bf4..3ec3a4e5ec 100644 --- a/lib/kokkos/containers/unit_tests/TestUnorderedMap.hpp +++ b/lib/kokkos/containers/unit_tests/TestUnorderedMap.hpp @@ -174,6 +174,9 @@ struct TestFind { } // namespace Impl +// MSVC reports a syntax error for this test. +// WORKAROUND MSVC +#ifndef _WIN32 template void test_insert(uint32_t num_nodes, uint32_t num_inserts, uint32_t num_duplicates, bool near) { @@ -225,6 +228,7 @@ void test_insert(uint32_t num_nodes, uint32_t num_inserts, EXPECT_EQ(0u, map.size()); } } +#endif template void test_failed_insert(uint32_t num_nodes) { @@ -291,12 +295,17 @@ void test_deep_copy(uint32_t num_nodes) { } } +// FIXME_HIP deadlock +#ifndef KOKKOS_ENABLE_HIP +// WORKAROUND MSVC +#ifndef _WIN32 TEST(TEST_CATEGORY, UnorderedMap_insert) { for (int i = 0; i < 500; ++i) { test_insert(100000, 90000, 100, true); test_insert(100000, 90000, 100, false); } } +#endif TEST(TEST_CATEGORY, UnorderedMap_failed_insert) { for (int i = 0; i < 1000; ++i) test_failed_insert(10000); @@ -305,6 +314,19 @@ TEST(TEST_CATEGORY, UnorderedMap_failed_insert) { TEST(TEST_CATEGORY, UnorderedMap_deep_copy) { for (int i = 0; i < 2; ++i) test_deep_copy(10000); } +#endif + +TEST(TEST_CATEGORY, UnorderedMap_valid_empty) { + using Key = int; + using Value = int; + using Map = Kokkos::UnorderedMap; + + Map m{}; + Map n{}; + n = Map{m.capacity()}; + n.rehash(m.capacity()); + Kokkos::deep_copy(n, m); +} } // namespace Test diff --git a/lib/kokkos/containers/unit_tests/cuda/TestCuda_DynRankViewAPI_rank67.cpp b/lib/kokkos/containers/unit_tests/cuda/TestCuda_DynRankViewAPI_rank67.cpp deleted file mode 100644 index 19e248dd93..0000000000 --- a/lib/kokkos/containers/unit_tests/cuda/TestCuda_DynRankViewAPI_rank67.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// 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 NTESS "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 NTESS 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/cuda/TestCuda_ScatterView.cpp b/lib/kokkos/containers/unit_tests/cuda/TestCuda_ScatterView.cpp deleted file mode 100644 index 10b63d037d..0000000000 --- a/lib/kokkos/containers/unit_tests/cuda/TestCuda_ScatterView.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// 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 NTESS "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 NTESS 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/cuda/TestCuda_StaticCrsGraph.cpp b/lib/kokkos/containers/unit_tests/cuda/TestCuda_StaticCrsGraph.cpp deleted file mode 100644 index 9c93da9c50..0000000000 --- a/lib/kokkos/containers/unit_tests/cuda/TestCuda_StaticCrsGraph.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// 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 NTESS "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 NTESS 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/cuda/TestCuda_UnorderedMap.cpp b/lib/kokkos/containers/unit_tests/cuda/TestCuda_UnorderedMap.cpp deleted file mode 100644 index b204e68977..0000000000 --- a/lib/kokkos/containers/unit_tests/cuda/TestCuda_UnorderedMap.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// 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 NTESS "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 NTESS 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/cuda/TestCuda_ViewCtorPropEmbeddedDim.cpp b/lib/kokkos/containers/unit_tests/cuda/TestCuda_ViewCtorPropEmbeddedDim.cpp deleted file mode 100644 index c865deb0b2..0000000000 --- a/lib/kokkos/containers/unit_tests/cuda/TestCuda_ViewCtorPropEmbeddedDim.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// 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 NTESS "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 NTESS 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 deleted file mode 100644 index 778bd891d6..0000000000 --- a/lib/kokkos/containers/unit_tests/hpx/TestHPX_DynRankViewAPI_generic.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// 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 NTESS "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 NTESS 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 deleted file mode 100644 index 0bb77a266d..0000000000 --- a/lib/kokkos/containers/unit_tests/hpx/TestHPX_DynRankViewAPI_rank12345.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// 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 NTESS "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 NTESS 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 deleted file mode 100644 index 6594cb3213..0000000000 --- a/lib/kokkos/containers/unit_tests/hpx/TestHPX_DynRankViewAPI_rank67.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// 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 NTESS "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 NTESS 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 deleted file mode 100644 index c1efc778a6..0000000000 --- a/lib/kokkos/containers/unit_tests/hpx/TestHPX_DynamicView.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// 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 NTESS "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 NTESS 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 deleted file mode 100644 index 3f68c6d07f..0000000000 --- a/lib/kokkos/containers/unit_tests/hpx/TestHPX_ErrorReporter.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// 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 NTESS "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 NTESS 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 deleted file mode 100644 index 1719300228..0000000000 --- a/lib/kokkos/containers/unit_tests/hpx/TestHPX_OffsetView.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// 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 NTESS "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 NTESS 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 deleted file mode 100644 index 8f9eb05918..0000000000 --- a/lib/kokkos/containers/unit_tests/hpx/TestHPX_ScatterView.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// 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 NTESS "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 NTESS 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 deleted file mode 100644 index 4f513efb0f..0000000000 --- a/lib/kokkos/containers/unit_tests/hpx/TestHPX_StaticCrsGraph.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// 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 NTESS "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 NTESS 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 deleted file mode 100644 index 517135290a..0000000000 --- a/lib/kokkos/containers/unit_tests/hpx/TestHPX_UnorderedMap.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// 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 NTESS "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 NTESS 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 deleted file mode 100644 index de2e96be73..0000000000 --- a/lib/kokkos/containers/unit_tests/hpx/TestHPX_ViewCtorPropEmbeddedDim.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// 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 NTESS "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 NTESS 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/openmp/TestOpenMP_DynRankViewAPI_generic.cpp b/lib/kokkos/containers/unit_tests/openmp/TestOpenMP_DynRankViewAPI_generic.cpp deleted file mode 100644 index 637be64dfa..0000000000 --- a/lib/kokkos/containers/unit_tests/openmp/TestOpenMP_DynRankViewAPI_generic.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// 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 NTESS "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 NTESS 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/openmp/TestOpenMP_DynRankViewAPI_rank12345.cpp b/lib/kokkos/containers/unit_tests/openmp/TestOpenMP_DynRankViewAPI_rank12345.cpp deleted file mode 100644 index 01b57a1690..0000000000 --- a/lib/kokkos/containers/unit_tests/openmp/TestOpenMP_DynRankViewAPI_rank12345.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// 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 NTESS "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 NTESS 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/openmp/TestOpenMP_DynRankViewAPI_rank67.cpp b/lib/kokkos/containers/unit_tests/openmp/TestOpenMP_DynRankViewAPI_rank67.cpp deleted file mode 100644 index 7d742eaeed..0000000000 --- a/lib/kokkos/containers/unit_tests/openmp/TestOpenMP_DynRankViewAPI_rank67.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// 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 NTESS "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 NTESS 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/openmp/TestOpenMP_DynamicView.cpp b/lib/kokkos/containers/unit_tests/openmp/TestOpenMP_DynamicView.cpp deleted file mode 100644 index 75b616f168..0000000000 --- a/lib/kokkos/containers/unit_tests/openmp/TestOpenMP_DynamicView.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// 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 NTESS "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 NTESS 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/openmp/TestOpenMP_ErrorReporter.cpp b/lib/kokkos/containers/unit_tests/openmp/TestOpenMP_ErrorReporter.cpp deleted file mode 100644 index 1f00f18532..0000000000 --- a/lib/kokkos/containers/unit_tests/openmp/TestOpenMP_ErrorReporter.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// 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 NTESS "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 NTESS 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/openmp/TestOpenMP_OffsetView.cpp b/lib/kokkos/containers/unit_tests/openmp/TestOpenMP_OffsetView.cpp deleted file mode 100644 index 98531ff212..0000000000 --- a/lib/kokkos/containers/unit_tests/openmp/TestOpenMP_OffsetView.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// 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 NTESS "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 NTESS 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/openmp/TestOpenMP_ScatterView.cpp b/lib/kokkos/containers/unit_tests/openmp/TestOpenMP_ScatterView.cpp deleted file mode 100644 index c49577f75d..0000000000 --- a/lib/kokkos/containers/unit_tests/openmp/TestOpenMP_ScatterView.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// 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 NTESS "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 NTESS 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/openmp/TestOpenMP_StaticCrsGraph.cpp b/lib/kokkos/containers/unit_tests/openmp/TestOpenMP_StaticCrsGraph.cpp deleted file mode 100644 index d8ab7b6b21..0000000000 --- a/lib/kokkos/containers/unit_tests/openmp/TestOpenMP_StaticCrsGraph.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// 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 NTESS "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 NTESS 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/openmp/TestOpenMP_UnorderedMap.cpp b/lib/kokkos/containers/unit_tests/openmp/TestOpenMP_UnorderedMap.cpp deleted file mode 100644 index c3db0c0d88..0000000000 --- a/lib/kokkos/containers/unit_tests/openmp/TestOpenMP_UnorderedMap.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// 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 NTESS "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 NTESS 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/openmp/TestOpenMP_Vector.cpp b/lib/kokkos/containers/unit_tests/openmp/TestOpenMP_Vector.cpp deleted file mode 100644 index 7ac49f24fb..0000000000 --- a/lib/kokkos/containers/unit_tests/openmp/TestOpenMP_Vector.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// 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 NTESS "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 NTESS 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/openmp/TestOpenMP_ViewCtorPropEmbeddedDim.cpp b/lib/kokkos/containers/unit_tests/openmp/TestOpenMP_ViewCtorPropEmbeddedDim.cpp deleted file mode 100644 index b9ae5d80ed..0000000000 --- a/lib/kokkos/containers/unit_tests/openmp/TestOpenMP_ViewCtorPropEmbeddedDim.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// 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 NTESS "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 NTESS 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/rocm/TestROCm_BitSet.cpp b/lib/kokkos/containers/unit_tests/rocm/TestROCm_BitSet.cpp deleted file mode 100644 index c72077eb4c..0000000000 --- a/lib/kokkos/containers/unit_tests/rocm/TestROCm_BitSet.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// 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 NTESS "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 NTESS 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/rocm/TestROCm_DualView.cpp b/lib/kokkos/containers/unit_tests/rocm/TestROCm_DualView.cpp deleted file mode 100644 index e9820395ba..0000000000 --- a/lib/kokkos/containers/unit_tests/rocm/TestROCm_DualView.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// 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 NTESS "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 NTESS 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/rocm/TestROCm_DynRankViewAPI_generic.cpp b/lib/kokkos/containers/unit_tests/rocm/TestROCm_DynRankViewAPI_generic.cpp deleted file mode 100644 index 7a3dd65f0e..0000000000 --- a/lib/kokkos/containers/unit_tests/rocm/TestROCm_DynRankViewAPI_generic.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// 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 NTESS "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 NTESS 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/rocm/TestROCm_DynRankViewAPI_rank12345.cpp b/lib/kokkos/containers/unit_tests/rocm/TestROCm_DynRankViewAPI_rank12345.cpp deleted file mode 100644 index 3963dd9c9c..0000000000 --- a/lib/kokkos/containers/unit_tests/rocm/TestROCm_DynRankViewAPI_rank12345.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// 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 NTESS "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 NTESS 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/rocm/TestROCm_DynRankViewAPI_rank67.cpp b/lib/kokkos/containers/unit_tests/rocm/TestROCm_DynRankViewAPI_rank67.cpp deleted file mode 100644 index b9a4582622..0000000000 --- a/lib/kokkos/containers/unit_tests/rocm/TestROCm_DynRankViewAPI_rank67.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// 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 NTESS "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 NTESS 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/rocm/TestROCm_DynamicView.cpp b/lib/kokkos/containers/unit_tests/rocm/TestROCm_DynamicView.cpp deleted file mode 100644 index 285ed916c4..0000000000 --- a/lib/kokkos/containers/unit_tests/rocm/TestROCm_DynamicView.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// 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 NTESS "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 NTESS 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/rocm/TestROCm_ErrorReporter.cpp b/lib/kokkos/containers/unit_tests/rocm/TestROCm_ErrorReporter.cpp deleted file mode 100644 index 2af2f79a16..0000000000 --- a/lib/kokkos/containers/unit_tests/rocm/TestROCm_ErrorReporter.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// 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 NTESS "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 NTESS 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/rocm/TestROCm_ScatterView.cpp b/lib/kokkos/containers/unit_tests/rocm/TestROCm_ScatterView.cpp deleted file mode 100644 index f7000bc99e..0000000000 --- a/lib/kokkos/containers/unit_tests/rocm/TestROCm_ScatterView.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// 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 NTESS "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 NTESS 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/rocm/TestROCm_StaticCrsGraph.cpp b/lib/kokkos/containers/unit_tests/rocm/TestROCm_StaticCrsGraph.cpp deleted file mode 100644 index bb1e04c536..0000000000 --- a/lib/kokkos/containers/unit_tests/rocm/TestROCm_StaticCrsGraph.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// 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 NTESS "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 NTESS 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/rocm/TestROCm_UnorderedMap.cpp b/lib/kokkos/containers/unit_tests/rocm/TestROCm_UnorderedMap.cpp deleted file mode 100644 index 7b8172fabd..0000000000 --- a/lib/kokkos/containers/unit_tests/rocm/TestROCm_UnorderedMap.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// 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 NTESS "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 NTESS 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/rocm/TestROCm_Vector.cpp b/lib/kokkos/containers/unit_tests/rocm/TestROCm_Vector.cpp deleted file mode 100644 index 1759797487..0000000000 --- a/lib/kokkos/containers/unit_tests/rocm/TestROCm_Vector.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// 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 NTESS "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 NTESS 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/rocm/TestROCm_ViewCtorPropEmbeddedDim.cpp b/lib/kokkos/containers/unit_tests/rocm/TestROCm_ViewCtorPropEmbeddedDim.cpp deleted file mode 100644 index e95680445b..0000000000 --- a/lib/kokkos/containers/unit_tests/rocm/TestROCm_ViewCtorPropEmbeddedDim.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// 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 NTESS "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 NTESS 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/serial/TestSerial_DynRankViewAPI_generic.cpp b/lib/kokkos/containers/unit_tests/serial/TestSerial_DynRankViewAPI_generic.cpp deleted file mode 100644 index e8f577c6ac..0000000000 --- a/lib/kokkos/containers/unit_tests/serial/TestSerial_DynRankViewAPI_generic.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// 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 NTESS "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 NTESS 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/serial/TestSerial_DynRankViewAPI_rank12345.cpp b/lib/kokkos/containers/unit_tests/serial/TestSerial_DynRankViewAPI_rank12345.cpp deleted file mode 100644 index 7db8983c1b..0000000000 --- a/lib/kokkos/containers/unit_tests/serial/TestSerial_DynRankViewAPI_rank12345.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// 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 NTESS "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 NTESS 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/serial/TestSerial_DynRankViewAPI_rank67.cpp b/lib/kokkos/containers/unit_tests/serial/TestSerial_DynRankViewAPI_rank67.cpp deleted file mode 100644 index a3a745efb5..0000000000 --- a/lib/kokkos/containers/unit_tests/serial/TestSerial_DynRankViewAPI_rank67.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// 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 NTESS "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 NTESS 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/serial/TestSerial_DynamicView.cpp b/lib/kokkos/containers/unit_tests/serial/TestSerial_DynamicView.cpp deleted file mode 100644 index 6624e3aa07..0000000000 --- a/lib/kokkos/containers/unit_tests/serial/TestSerial_DynamicView.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// 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 NTESS "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 NTESS 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/serial/TestSerial_ErrorReporter.cpp b/lib/kokkos/containers/unit_tests/serial/TestSerial_ErrorReporter.cpp deleted file mode 100644 index 280302275f..0000000000 --- a/lib/kokkos/containers/unit_tests/serial/TestSerial_ErrorReporter.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// 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 NTESS "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 NTESS 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/serial/TestSerial_OffsetView.cpp b/lib/kokkos/containers/unit_tests/serial/TestSerial_OffsetView.cpp deleted file mode 100644 index 5f8caf7c3f..0000000000 --- a/lib/kokkos/containers/unit_tests/serial/TestSerial_OffsetView.cpp +++ /dev/null @@ -1,46 +0,0 @@ -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// 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 NTESS "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 NTESS 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/serial/TestSerial_ScatterView.cpp b/lib/kokkos/containers/unit_tests/serial/TestSerial_ScatterView.cpp deleted file mode 100644 index 3f102e5cbc..0000000000 --- a/lib/kokkos/containers/unit_tests/serial/TestSerial_ScatterView.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// 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 NTESS "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 NTESS 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/serial/TestSerial_StaticCrsGraph.cpp b/lib/kokkos/containers/unit_tests/serial/TestSerial_StaticCrsGraph.cpp deleted file mode 100644 index 64f09e76e5..0000000000 --- a/lib/kokkos/containers/unit_tests/serial/TestSerial_StaticCrsGraph.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// 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 NTESS "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 NTESS 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/serial/TestSerial_UnorderedMap.cpp b/lib/kokkos/containers/unit_tests/serial/TestSerial_UnorderedMap.cpp deleted file mode 100644 index a72be8e2fc..0000000000 --- a/lib/kokkos/containers/unit_tests/serial/TestSerial_UnorderedMap.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// 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 NTESS "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 NTESS 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/serial/TestSerial_Vector.cpp b/lib/kokkos/containers/unit_tests/serial/TestSerial_Vector.cpp deleted file mode 100644 index 3826dab1d7..0000000000 --- a/lib/kokkos/containers/unit_tests/serial/TestSerial_Vector.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// 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 NTESS "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 NTESS 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/serial/TestSerial_ViewCtorPropEmbeddedDim.cpp b/lib/kokkos/containers/unit_tests/serial/TestSerial_ViewCtorPropEmbeddedDim.cpp deleted file mode 100644 index 1251808bed..0000000000 --- a/lib/kokkos/containers/unit_tests/serial/TestSerial_ViewCtorPropEmbeddedDim.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// 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 NTESS "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 NTESS 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/threads/TestThreads_DynRankViewAPI_generic.cpp b/lib/kokkos/containers/unit_tests/threads/TestThreads_DynRankViewAPI_generic.cpp deleted file mode 100644 index b015683bb9..0000000000 --- a/lib/kokkos/containers/unit_tests/threads/TestThreads_DynRankViewAPI_generic.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// 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 NTESS "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 NTESS 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/threads/TestThreads_DynRankViewAPI_rank12345.cpp b/lib/kokkos/containers/unit_tests/threads/TestThreads_DynRankViewAPI_rank12345.cpp deleted file mode 100644 index dea56c408b..0000000000 --- a/lib/kokkos/containers/unit_tests/threads/TestThreads_DynRankViewAPI_rank12345.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// 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 NTESS "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 NTESS 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/threads/TestThreads_DynRankViewAPI_rank67.cpp b/lib/kokkos/containers/unit_tests/threads/TestThreads_DynRankViewAPI_rank67.cpp deleted file mode 100644 index 17a289b506..0000000000 --- a/lib/kokkos/containers/unit_tests/threads/TestThreads_DynRankViewAPI_rank67.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// 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 NTESS "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 NTESS 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/threads/TestThreads_DynamicView.cpp b/lib/kokkos/containers/unit_tests/threads/TestThreads_DynamicView.cpp deleted file mode 100644 index 499321dbbe..0000000000 --- a/lib/kokkos/containers/unit_tests/threads/TestThreads_DynamicView.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// 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 NTESS "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 NTESS 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/threads/TestThreads_ErrorReporter.cpp b/lib/kokkos/containers/unit_tests/threads/TestThreads_ErrorReporter.cpp deleted file mode 100644 index 513fdc4af6..0000000000 --- a/lib/kokkos/containers/unit_tests/threads/TestThreads_ErrorReporter.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// 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 NTESS "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 NTESS 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/threads/TestThreads_OffsetView.cpp b/lib/kokkos/containers/unit_tests/threads/TestThreads_OffsetView.cpp deleted file mode 100644 index 717967b2ef..0000000000 --- a/lib/kokkos/containers/unit_tests/threads/TestThreads_OffsetView.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// 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 NTESS "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 NTESS 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/threads/TestThreads_ScatterView.cpp b/lib/kokkos/containers/unit_tests/threads/TestThreads_ScatterView.cpp deleted file mode 100644 index fbb37606ea..0000000000 --- a/lib/kokkos/containers/unit_tests/threads/TestThreads_ScatterView.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// 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 NTESS "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 NTESS 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/threads/TestThreads_StaticCrsGraph.cpp b/lib/kokkos/containers/unit_tests/threads/TestThreads_StaticCrsGraph.cpp deleted file mode 100644 index 29117c4ef6..0000000000 --- a/lib/kokkos/containers/unit_tests/threads/TestThreads_StaticCrsGraph.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// 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 NTESS "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 NTESS 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/threads/TestThreads_UnorderedMap.cpp b/lib/kokkos/containers/unit_tests/threads/TestThreads_UnorderedMap.cpp deleted file mode 100644 index 9a06288de4..0000000000 --- a/lib/kokkos/containers/unit_tests/threads/TestThreads_UnorderedMap.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// 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 NTESS "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 NTESS 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/threads/TestThreads_Vector.cpp b/lib/kokkos/containers/unit_tests/threads/TestThreads_Vector.cpp deleted file mode 100644 index 33e8b26c8e..0000000000 --- a/lib/kokkos/containers/unit_tests/threads/TestThreads_Vector.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// 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 NTESS "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 NTESS 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/threads/TestThreads_ViewCtorPropEmbeddedDim.cpp b/lib/kokkos/containers/unit_tests/threads/TestThreads_ViewCtorPropEmbeddedDim.cpp deleted file mode 100644 index 567b224195..0000000000 --- a/lib/kokkos/containers/unit_tests/threads/TestThreads_ViewCtorPropEmbeddedDim.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// 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 NTESS "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 NTESS 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 9ad7660bdf..cc901a4ede 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 HPX + LIB_OPTIONAL_TPLS Pthread CUDA HWLOC DLlib HPX TEST_OPTIONAL_TPLS CUSPARSE ) diff --git a/lib/kokkos/core/cmake/KokkosCore_config.h.in b/lib/kokkos/core/cmake/KokkosCore_config.h.in index f430c2b5f6..095c869a32 100644 --- a/lib/kokkos/core/cmake/KokkosCore_config.h.in +++ b/lib/kokkos/core/cmake/KokkosCore_config.h.in @@ -12,6 +12,7 @@ #endif #cmakedefine KOKKOS_ENABLE_CUDA +#cmakedefine KOKKOS_ENABLE_HIP #cmakedefine KOKKOS_ENABLE_OPENMP #cmakedefine KOKKOS_ENABLE_THREADS #cmakedefine KOKKOS_ENABLE_SERIAL @@ -63,6 +64,10 @@ #cmakedefine KOKKOS_ENABLE_ISA_POWERPCLE #endif +#ifdef KOKKOS_ENABLE_HIP +#cmakedefine KOKKOS_ENABLE_HIP_RELOCATABLE_DEVICE_CODE +#endif + #cmakedefine KOKKOS_ARCH_ARMV80 1 #cmakedefine KOKKOS_ARCH_ARMV81 1 #cmakedefine KOKKOS_ARCH_ARMV8_THUNDERX 1 diff --git a/lib/kokkos/core/perf_test/CMakeLists.txt b/lib/kokkos/core/perf_test/CMakeLists.txt index 79567835ee..ca695e2700 100644 --- a/lib/kokkos/core/perf_test/CMakeLists.txt +++ b/lib/kokkos/core/perf_test/CMakeLists.txt @@ -48,6 +48,14 @@ SET(SOURCES PerfTest_ViewResize_8.cpp ) +IF(Kokkos_ENABLE_HIP) +# FIXME requires TeamPolicy + LIST(REMOVE_ITEM SOURCES + PerfTest_CustomReduction.cpp + PerfTest_ExecSpacePartitioning.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. @@ -58,11 +66,14 @@ KOKKOS_INCLUDE_DIRECTORIES("${CMAKE_CURRENT_SOURCE_DIR}/../../algorithms/src") KOKKOS_INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}) KOKKOS_INCLUDE_DIRECTORIES(REQUIRED_DURING_INSTALLATION_TESTING ${CMAKE_CURRENT_SOURCE_DIR}) -KOKKOS_ADD_EXECUTABLE_AND_TEST( - PerfTestExec - SOURCES ${SOURCES} - CATEGORIES PERFORMANCE -) +# This test currently times out for MSVC +IF(NOT KOKKOS_CXX_COMPILER_ID STREQUAL "MSVC") + KOKKOS_ADD_EXECUTABLE_AND_TEST( + PerfTestExec + SOURCES ${SOURCES} + CATEGORIES PERFORMANCE + ) +ENDIF() KOKKOS_ADD_EXECUTABLE_AND_TEST( PerformanceTest_TaskDag diff --git a/lib/kokkos/core/perf_test/PerfTestBlasKernels.hpp b/lib/kokkos/core/perf_test/PerfTestBlasKernels.hpp index a5a376565d..2717b133bd 100644 --- a/lib/kokkos/core/perf_test/PerfTestBlasKernels.hpp +++ b/lib/kokkos/core/perf_test/PerfTestBlasKernels.hpp @@ -49,64 +49,9 @@ namespace Kokkos { -template -struct Dot; - -template -struct DotSingle; - -template -struct Scale; - -template -struct AXPBY; - -/** \brief Y = alpha * X + beta * Y */ -template -void axpby(const ConstScalarType& alpha, const ConstVectorType& X, - const ConstScalarType& beta, const VectorType& Y) { - typedef AXPBY functor; - - parallel_for(Y.extent(0), functor(alpha, X, beta, Y)); -} - -/** \brief Y *= alpha */ -template -void scale(const ConstScalarType& alpha, const VectorType& Y) { - typedef Scale functor; - - parallel_for(Y.extent(0), functor(alpha, Y)); -} - -template -void dot(const ConstVectorType& X, const ConstVectorType& Y, - const Finalize& finalize) { - typedef Dot functor; - - parallel_reduce(X.extent(0), functor(X, Y), finalize); -} - -template -void dot(const ConstVectorType& X, const Finalize& finalize) { - typedef DotSingle functor; - - parallel_reduce(X.extent(0), functor(X), finalize); -} - -} /* namespace Kokkos */ - -//---------------------------------------------------------------------------- -//---------------------------------------------------------------------------- - -namespace Kokkos { - -template +template struct Dot { - typedef typename Device::execution_space execution_space; + typedef typename Type::execution_space execution_space; static_assert(static_cast(Type::Rank) == static_cast(1), "Dot static_assert Fail: Rank != 1"); @@ -136,9 +81,9 @@ struct Dot { static void init(value_type& update) { update = 0; } }; -template +template struct DotSingle { - typedef typename Device::execution_space execution_space; + typedef typename Type::execution_space execution_space; static_assert(static_cast(Type::Rank) == static_cast(1), "DotSingle static_assert Fail: Rank != 1"); @@ -169,9 +114,9 @@ struct DotSingle { static void init(value_type& update) { update = 0; } }; -template +template struct Scale { - typedef typename Device::execution_space execution_space; + typedef typename VectorType::execution_space execution_space; static_assert(static_cast(ScalarType::Rank) == static_cast(0), @@ -196,10 +141,9 @@ struct Scale { void operator()(int i) const { Y[i] *= alpha(); } }; -template +template struct AXPBY { - typedef typename Device::execution_space execution_space; + typedef typename VectorType::execution_space execution_space; static_assert(static_cast(ScalarType::Rank) == static_cast(0), @@ -233,4 +177,42 @@ struct AXPBY { } /* namespace Kokkos */ +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- + +namespace Kokkos { +/** \brief Y = alpha * X + beta * Y */ +template +void axpby(const ConstScalarType& alpha, const ConstVectorType& X, + const ConstScalarType& beta, const VectorType& Y) { + typedef AXPBY functor; + + parallel_for(Y.extent(0), functor(alpha, X, beta, Y)); +} + +/** \brief Y *= alpha */ +template +void scale(const ConstScalarType& alpha, const VectorType& Y) { + typedef Scale functor; + + parallel_for(Y.extent(0), functor(alpha, Y)); +} + +template +void dot(const ConstVectorType& X, const ConstVectorType& Y, + const Finalize& finalize) { + typedef Dot functor; + + parallel_reduce(X.extent(0), functor(X, Y), finalize); +} + +template +void dot(const ConstVectorType& X, const Finalize& finalize) { + typedef DotSingle functor; + + parallel_reduce(X.extent(0), functor(X), finalize); +} + +} /* namespace Kokkos */ + #endif /* #ifndef KOKKOS_BLAS_KERNELS_HPP */ diff --git a/lib/kokkos/core/perf_test/PerfTestGramSchmidt.cpp b/lib/kokkos/core/perf_test/PerfTestGramSchmidt.cpp index 5e85163acf..0916b230ec 100644 --- a/lib/kokkos/core/perf_test/PerfTestGramSchmidt.cpp +++ b/lib/kokkos/core/perf_test/PerfTestGramSchmidt.cpp @@ -69,7 +69,10 @@ struct InvNorm2 : public Kokkos::DotSingle { KOKKOS_INLINE_FUNCTION void final(value_type& result) const { - result = std::sqrt(result); +#ifndef KOKKOS_ENABLE_HIP // FIXME_HIP + using std::sqrt; +#endif + result = sqrt(result); Rjj() = result; inv() = (0 < result) ? 1.0 / result : 0; } diff --git a/lib/kokkos/core/perf_test/PerfTestMain.cpp b/lib/kokkos/core/perf_test/PerfTestMain.cpp index 8cd015fbe8..8f4d48d57b 100644 --- a/lib/kokkos/core/perf_test/PerfTestMain.cpp +++ b/lib/kokkos/core/perf_test/PerfTestMain.cpp @@ -54,13 +54,13 @@ int command_line_num_args(int n = 0) { return n_args; } -const char* command_line_arg(int k, char** input_args = NULL) { +const char* command_line_arg(int k, char** input_args = nullptr) { static char** args; - if (input_args != NULL) args = input_args; + if (input_args != nullptr) args = input_args; if (command_line_num_args() > k) return args[k]; else - return NULL; + return nullptr; } } // namespace Test diff --git a/lib/kokkos/core/perf_test/PerfTest_Category.hpp b/lib/kokkos/core/perf_test/PerfTest_Category.hpp index c2cff22502..0f24490bfe 100644 --- a/lib/kokkos/core/perf_test/PerfTest_Category.hpp +++ b/lib/kokkos/core/perf_test/PerfTest_Category.hpp @@ -50,7 +50,7 @@ namespace Test { extern int command_line_num_args(int n = 0); -extern const char* command_line_arg(int k, char** input_args = NULL); +extern const char* command_line_arg(int k, char** input_args = nullptr); } // namespace Test diff --git a/lib/kokkos/core/perf_test/PerfTest_CustomReduction.cpp b/lib/kokkos/core/perf_test/PerfTest_CustomReduction.cpp index d06851ec9b..75ca4a0d5a 100644 --- a/lib/kokkos/core/perf_test/PerfTest_CustomReduction.cpp +++ b/lib/kokkos/core/perf_test/PerfTest_CustomReduction.cpp @@ -76,8 +76,8 @@ void custom_reduction_test(int N, int R, int num_trials) { Kokkos::ThreadVectorRange(team, 32), [&](const int& k, Scalar& max_) { const Scalar val = a((i * 32 + j) * 32 + k); - if (val > lmax) lmax = val; - if ((k == 11) && (j == 17) && (i == 2)) lmax = 11.5; + if (val > max_) max_ = val; + if ((k == 11) && (j == 17) && (i == 2)) max_ = 11.5; }, Kokkos::Max(t_max)); if (t_max > thread_max) thread_max = t_max; @@ -106,8 +106,8 @@ void custom_reduction_test(int N, int R, int num_trials) { Kokkos::ThreadVectorRange(team, 32), [&](const int& k, Scalar& max_) { const Scalar val = a((i * 32 + j) * 32 + k); - if (val > lmax) lmax = val; - if ((k == 11) && (j == 17) && (i == 2)) lmax = 11.5; + if (val > max_) max_ = val; + if ((k == 11) && (j == 17) && (i == 2)) max_ = 11.5; }, Kokkos::Max(t_max)); if (t_max > thread_max) thread_max = t_max; diff --git a/lib/kokkos/core/src/CMakeLists.txt b/lib/kokkos/core/src/CMakeLists.txt index eb058a982e..5b91b30787 100644 --- a/lib/kokkos/core/src/CMakeLists.txt +++ b/lib/kokkos/core/src/CMakeLists.txt @@ -35,6 +35,10 @@ IF (KOKKOS_ENABLE_OPENMP) ENDIF() ENDIF() +IF (KOKKOS_ENABLE_OPENMPTARGET) + APPEND_GLOB(KOKKOS_CORE_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/OpenMPTarget/*.cpp) +ENDIF() + IF (KOKKOS_ENABLE_PTHREAD) APPEND_GLOB(KOKKOS_CORE_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/Threads/*.cpp) IF (KOKKOS_ENABLE_ETI) @@ -42,6 +46,10 @@ IF (KOKKOS_ENABLE_PTHREAD) ENDIF() ENDIF() +IF (KOKKOS_ENABLE_HIP) + APPEND_GLOB(KOKKOS_CORE_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/HIP/*.cpp) +ENDIF() + IF (KOKKOS_ENABLE_HPX) APPEND_GLOB(KOKKOS_CORE_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/HPX/*.cpp) ENDIF() diff --git a/lib/kokkos/core/src/Cuda/Kokkos_CudaSpace.cpp b/lib/kokkos/core/src/Cuda/Kokkos_CudaSpace.cpp index 24be022d24..e11961d763 100644 --- a/lib/kokkos/core/src/Cuda/Kokkos_CudaSpace.cpp +++ b/lib/kokkos/core/src/Cuda/Kokkos_CudaSpace.cpp @@ -147,7 +147,7 @@ void CudaSpace::access_error(const void *const) { /*--------------------------------------------------------------------------*/ bool CudaUVMSpace::available() { -#if defined(CUDA_VERSION) && (6000 <= CUDA_VERSION) && !defined(__APPLE__) +#if defined(CUDA_VERSION) && !defined(__APPLE__) enum { UVM_available = true }; #else enum { UVM_available = false }; @@ -219,19 +219,10 @@ void *CudaSpace::allocate(const size_t arg_alloc_size) const { void *CudaUVMSpace::allocate(const size_t arg_alloc_size) const { void *ptr = nullptr; - enum { max_uvm_allocations = 65536 }; - Cuda::impl_static_fence(); if (arg_alloc_size > 0) { Kokkos::Impl::num_uvm_allocations++; - if (Kokkos::Impl::num_uvm_allocations.load() > max_uvm_allocations) { - throw Experimental::CudaRawMemoryAllocationFailure( - arg_alloc_size, 1, - Experimental::RawMemoryAllocationFailure::FailureMode:: - MaximumCudaUVMAllocationsExceeded); - } - auto error_code = cudaMallocManaged(&ptr, arg_alloc_size, cudaMemAttachGlobal); @@ -360,7 +351,8 @@ SharedAllocationRecord::attach_texture_object( resDesc.res.linear.sizeInBytes = alloc_size; resDesc.res.linear.devPtr = alloc_ptr; - CUDA_SAFE_CALL(cudaCreateTextureObject(&tex_obj, &resDesc, &texDesc, NULL)); + CUDA_SAFE_CALL( + cudaCreateTextureObject(&tex_obj, &resDesc, &texDesc, nullptr)); return tex_obj; } @@ -797,6 +789,8 @@ SharedAllocationRecord // Iterate records to print orphaned memory ... void SharedAllocationRecord::print_records( std::ostream &s, const Kokkos::CudaSpace &, bool detail) { + (void)s; + (void)detail; #ifdef KOKKOS_DEBUG SharedAllocationRecord *r = &s_root_record; @@ -869,6 +863,8 @@ void SharedAllocationRecord::print_records( void SharedAllocationRecord::print_records( std::ostream &s, const Kokkos::CudaUVMSpace &, bool detail) { + (void)s; + (void)detail; #ifdef KOKKOS_DEBUG SharedAllocationRecord::print_host_accessible_records( s, "CudaUVM", &s_root_record, detail); @@ -881,6 +877,8 @@ void SharedAllocationRecord::print_records( void SharedAllocationRecord::print_records( std::ostream &s, const Kokkos::CudaHostPinnedSpace &, bool detail) { + (void)s; + (void)detail; #ifdef KOKKOS_DEBUG SharedAllocationRecord::print_host_accessible_records( s, "CudaHostPinned", &s_root_record, detail); @@ -895,7 +893,7 @@ void SharedAllocationRecord::print_records( //============================================================================== void *cuda_resize_scratch_space(std::int64_t bytes, bool force_shrink) { - static void *ptr = NULL; + static void *ptr = nullptr; static std::int64_t current_size = 0; if (current_size == 0) { current_size = bytes; @@ -917,6 +915,27 @@ void *cuda_resize_scratch_space(std::int64_t bytes, bool force_shrink) { return ptr; } +void cuda_prefetch_pointer(const Cuda &space, const void *ptr, size_t bytes, + bool to_device) { + if ((ptr == nullptr) || (bytes == 0)) return; + cudaPointerAttributes attr; + CUDA_SAFE_CALL(cudaPointerGetAttributes(&attr, ptr)); + // I measured this and it turns out prefetching towards the host slows + // DualView syncs down. Probably because the latency is not too bad in the + // first place for the pull down. If we want to change that provde + // cudaCpuDeviceId as the device if to_device is false +#if CUDA_VERSION < 10000 + bool is_managed = attr.isManaged; +#else + bool is_managed = attr.type == cudaMemoryTypeManaged; +#endif + if (to_device && is_managed && + space.cuda_device_prop().concurrentManagedAccess) { + CUDA_SAFE_CALL(cudaMemPrefetchAsync(ptr, bytes, space.cuda_device(), + space.cuda_stream())); + } +} + } // namespace Impl } // namespace Kokkos #else diff --git a/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Error.hpp b/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Error.hpp index 3b674bbb30..01e60315ee 100644 --- a/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Error.hpp +++ b/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Error.hpp @@ -58,10 +58,10 @@ namespace Impl { void cuda_device_synchronize(); void cuda_internal_error_throw(cudaError e, const char* name, - const char* file = NULL, const int line = 0); + const char* file = nullptr, const int line = 0); inline void cuda_internal_safe_call(cudaError e, const char* name, - const char* file = NULL, + const char* file = nullptr, const int line = 0) { if (cudaSuccess != e) { cuda_internal_error_throw(e, name, file, line); diff --git a/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Instance.cpp b/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Instance.cpp index b3c7edf67c..37d0ffb687 100644 --- a/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Instance.cpp +++ b/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Instance.cpp @@ -115,10 +115,14 @@ __global__ void query_cuda_kernel_arch(int *d_arch) { /** Query what compute capability is actually launched to the device: */ int cuda_kernel_arch() { - int *d_arch = 0; + int arch = 0; + int *d_arch = nullptr; + cudaMalloc((void **)&d_arch, sizeof(int)); + cudaMemcpy(d_arch, &arch, sizeof(int), cudaMemcpyDefault); + query_cuda_kernel_arch<<<1, 1>>>(d_arch); - int arch = 0; + cudaMemcpy(&arch, d_arch, sizeof(int), cudaMemcpyDefault); cudaFree(d_arch); return arch; @@ -313,6 +317,7 @@ void CudaInternal::initialize(int cuda_device_id, cudaStream_t stream) { enum { WordSize = sizeof(size_type) }; +#ifndef KOKKOS_IMPL_TURN_OFF_CUDA_HOST_INIT_CHECK #ifdef KOKKOS_ENABLE_DEPRECATED_CODE if (!HostSpace::execution_space::is_initialized()) { #else @@ -323,6 +328,7 @@ void CudaInternal::initialize(int cuda_device_id, cudaStream_t stream) { "initialized"); throw_runtime_exception(msg); } +#endif const CudaInternalDevices &dev_info = CudaInternalDevices::singleton(); @@ -340,7 +346,8 @@ void CudaInternal::initialize(int cuda_device_id, cudaStream_t stream) { if (ok_init && ok_dev) { const struct cudaDeviceProp &cudaProp = dev_info.m_cudaProp[cuda_device_id]; - m_cudaDev = cuda_device_id; + m_cudaDev = cuda_device_id; + m_deviceProp = cudaProp; CUDA_SAFE_CALL(cudaSetDevice(m_cudaDev)); Kokkos::Impl::cuda_device_synchronize(); @@ -348,17 +355,24 @@ void CudaInternal::initialize(int cuda_device_id, cudaStream_t stream) { // Query what compute capability architecture a kernel executes: m_cudaArch = cuda_kernel_arch(); + if (m_cudaArch == 0) { + std::stringstream ss; + ss << "Kokkos::Cuda::initialize ERROR: likely mismatch of architecture" + << std::endl; + std::string msg = ss.str(); + Kokkos::abort(msg.c_str()); + } + int compiled_major = m_cudaArch / 100; int compiled_minor = (m_cudaArch % 100) / 10; - if (compiled_major < 5 && cudaProp.major >= 5) { + if (compiled_major != cudaProp.major || compiled_minor < cudaProp.minor) { std::stringstream ss; ss << "Kokkos::Cuda::initialize ERROR: running kernels compiled for " "compute capability " << compiled_major << "." << compiled_minor - << " (< 5.0) on device with compute capability " << cudaProp.major - << "." << cudaProp.minor - << " (>=5.0), this would give incorrect results!" << std::endl; + << " on device with compute capability " << cudaProp.major << "." + << cudaProp.minor << " is not supported by CUDA!" << std::endl; std::string msg = ss.str(); Kokkos::abort(msg.c_str()); } @@ -742,7 +756,7 @@ int Cuda::impl_is_initialized() void Cuda::initialize(const Cuda::SelectDevice config, size_t num_instances) #else void Cuda::impl_initialize(const Cuda::SelectDevice config, - size_t num_instances) + size_t /*num_instances*/) #endif { Impl::CudaInternal::singleton().initialize(config.cuda_device_id, 0); @@ -826,6 +840,9 @@ 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; } +const cudaDeviceProp &Cuda::cuda_device_prop() const { + return m_space_instance->m_deviceProp; +} } // namespace Kokkos diff --git a/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Instance.hpp b/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Instance.hpp index 9d2c939af8..2158f03dd5 100644 --- a/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Instance.hpp +++ b/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Instance.hpp @@ -97,6 +97,8 @@ class CudaInternal { int m_maxThreadsPerSM; int m_maxThreadsPerBlock; + cudaDeviceProp m_deviceProp; + mutable size_type m_scratchSpaceCount; mutable size_type m_scratchFlagsCount; mutable size_type m_scratchUnifiedCount; diff --git a/lib/kokkos/core/src/Cuda/Kokkos_Cuda_KernelLaunch.hpp b/lib/kokkos/core/src/Cuda/Kokkos_Cuda_KernelLaunch.hpp index 590fa7a784..ca72b3b302 100644 --- a/lib/kokkos/core/src/Cuda/Kokkos_Cuda_KernelLaunch.hpp +++ b/lib/kokkos/core/src/Cuda/Kokkos_Cuda_KernelLaunch.hpp @@ -150,7 +150,7 @@ template __global__ static void cuda_parallel_launch_constant_or_global_memory( const DriverType* driver_ptr) { const DriverType& driver = - driver_ptr != NULL + driver_ptr != nullptr ? *driver_ptr : *((const DriverType*)kokkos_impl_cuda_constant_memory_buffer); @@ -162,7 +162,7 @@ __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 != nullptr ? *driver_ptr : *((const DriverType*)kokkos_impl_cuda_constant_memory_buffer); @@ -260,6 +260,8 @@ struct CudaParallelLaunch< (prefer_shmem ? cudaFuncCachePreferShared : cudaFuncCachePreferL1))); } +#else + (void)prefer_shmem; #endif // Copy functor to constant memory on the device @@ -317,6 +319,8 @@ struct CudaParallelLaunch, (prefer_shmem ? cudaFuncCachePreferShared : cudaFuncCachePreferL1))); } +#else + (void)prefer_shmem; #endif // Copy functor to constant memory on the device @@ -371,6 +375,8 @@ struct CudaParallelLaunch< (prefer_shmem ? cudaFuncCachePreferShared : cudaFuncCachePreferL1))); } +#else + (void)prefer_shmem; #endif KOKKOS_ENSURE_CUDA_LOCK_ARRAYS_ON_DEVICE(); @@ -419,6 +425,8 @@ struct CudaParallelLaunch, (prefer_shmem ? cudaFuncCachePreferShared : cudaFuncCachePreferL1))); } +#else + (void)prefer_shmem; #endif KOKKOS_ENSURE_CUDA_LOCK_ARRAYS_ON_DEVICE(); @@ -465,11 +473,13 @@ struct CudaParallelLaunch< (prefer_shmem ? cudaFuncCachePreferShared : cudaFuncCachePreferL1))); } +#else + (void)prefer_shmem; #endif KOKKOS_ENSURE_CUDA_LOCK_ARRAYS_ON_DEVICE(); - DriverType* driver_ptr = NULL; + DriverType* driver_ptr = nullptr; driver_ptr = reinterpret_cast( cuda_instance->scratch_functor(sizeof(DriverType))); cudaMemcpyAsync(driver_ptr, &driver, sizeof(DriverType), @@ -516,11 +526,13 @@ struct CudaParallelLaunch, (prefer_shmem ? cudaFuncCachePreferShared : cudaFuncCachePreferL1))); } +#else + (void)prefer_shmem; #endif KOKKOS_ENSURE_CUDA_LOCK_ARRAYS_ON_DEVICE(); - DriverType* driver_ptr = NULL; + DriverType* driver_ptr = nullptr; driver_ptr = reinterpret_cast( cuda_instance->scratch_functor(sizeof(DriverType))); cudaMemcpyAsync(driver_ptr, &driver, sizeof(DriverType), diff --git a/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Parallel.hpp b/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Parallel.hpp index 78db807478..71ddadf74e 100644 --- a/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Parallel.hpp +++ b/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Parallel.hpp @@ -192,7 +192,7 @@ class TeamPolicyInternal } template - inline int team_size_max(const FunctorType& f, const ReducerType& r, + inline int team_size_max(const FunctorType& f, const ReducerType& /*r*/, const ParallelReduceTag&) const { using closure_type = Impl::ParallelReduce, @@ -304,7 +304,7 @@ class TeamPolicyInternal return m_thread_scratch_size[level]; } - inline typename traits::execution_space space() const { return m_space; } + const typename traits::execution_space& space() const { return m_space; } TeamPolicyInternal() : m_space(typename traits::execution_space()), @@ -895,10 +895,10 @@ class ParallelFor, // Functor's reduce memory, team scan memory, and team shared memory depend // upon team size. - m_scratch_ptr[0] = NULL; + m_scratch_ptr[0] = nullptr; m_scratch_ptr[1] = m_team_size <= 0 - ? NULL + ? nullptr : cuda_resize_scratch_space( static_cast(m_scratch_size[1]) * static_cast(Cuda::concurrency() / @@ -1207,7 +1207,7 @@ class ParallelReduce, ReducerType, ParallelReduce(const FunctorType& arg_functor, const Policy& arg_policy, const ViewType& arg_result, typename std::enable_if::value, - void*>::type = NULL) + void*>::type = nullptr) : m_functor(arg_functor), m_policy(arg_policy), m_reducer(InvalidType()), @@ -1499,7 +1499,7 @@ class ParallelReduce, ReducerType, ParallelReduce(const FunctorType& arg_functor, const Policy& arg_policy, const ViewType& arg_result, typename std::enable_if::value, - void*>::type = NULL) + void*>::type = nullptr) : m_functor(arg_functor), m_policy(arg_policy), m_reducer(InvalidType()), @@ -1810,7 +1810,7 @@ class ParallelReduce, ParallelReduce(const FunctorType& arg_functor, const Policy& arg_policy, const ViewType& arg_result, typename std::enable_if::value, - void*>::type = NULL) + void*>::type = nullptr) : m_functor(arg_functor), m_policy(arg_policy), m_reducer(InvalidType()), @@ -1824,7 +1824,7 @@ class ParallelReduce, m_team_begin(0), m_shmem_begin(0), m_shmem_size(0), - m_scratch_ptr{NULL, NULL}, + m_scratch_ptr{nullptr, nullptr}, m_league_size(arg_policy.league_size()), m_team_size(arg_policy.team_size()), m_vector_size(arg_policy.vector_length()) { @@ -1861,7 +1861,7 @@ class ParallelReduce, m_scratch_size[1] = m_policy.scratch_size(1, m_team_size); m_scratch_ptr[1] = m_team_size <= 0 - ? NULL + ? nullptr : cuda_resize_scratch_space( static_cast(m_scratch_size[1]) * (static_cast(Cuda::concurrency() / @@ -1923,7 +1923,7 @@ class ParallelReduce, m_team_begin(0), m_shmem_begin(0), m_shmem_size(0), - m_scratch_ptr{NULL, NULL}, + m_scratch_ptr{nullptr, nullptr}, m_league_size(arg_policy.league_size()), m_team_size(arg_policy.team_size()), m_vector_size(arg_policy.vector_length()) { @@ -1960,7 +1960,7 @@ class ParallelReduce, m_scratch_size[1] = m_policy.scratch_size(1, m_team_size); m_scratch_ptr[1] = m_team_size <= 0 - ? NULL + ? nullptr : cuda_resize_scratch_space( static_cast(m_scratch_size[1]) * static_cast(Cuda::concurrency() / diff --git a/lib/kokkos/core/src/Cuda/Kokkos_Cuda_ReduceScan.hpp b/lib/kokkos/core/src/Cuda/Kokkos_Cuda_ReduceScan.hpp index 41431bfb8d..7d996fba04 100644 --- a/lib/kokkos/core/src/Cuda/Kokkos_Cuda_ReduceScan.hpp +++ b/lib/kokkos/core/src/Cuda/Kokkos_Cuda_ReduceScan.hpp @@ -133,7 +133,8 @@ __device__ bool cuda_inter_block_reduction( typename FunctorValueTraits::reference_type value, typename FunctorValueTraits::reference_type neutral, const JoinOp& join, Cuda::size_type* const m_scratch_space, - typename FunctorValueTraits::pointer_type const result, + typename FunctorValueTraits::pointer_type const /*result*/, Cuda::size_type* const m_scratch_flags, const int max_active_thread = blockDim.y) { #ifdef __CUDA_ARCH__ @@ -236,6 +237,12 @@ __device__ bool cuda_inter_block_reduction( // "value" return last_block; #else + (void)value; + (void)neutral; + (void)join; + (void)m_scratch_space; + (void)m_scratch_flags; + (void)max_active_thread; return true; #endif } @@ -426,6 +433,10 @@ __device__ inline // "value" return last_block; #else + (void)reducer; + (void)m_scratch_space; + (void)m_scratch_flags; + (void)max_active_thread; return true; #endif } @@ -500,7 +511,7 @@ struct CudaReductionsFunctor { } __device__ static inline bool scalar_inter_block_reduction( - const FunctorType& functor, const Cuda::size_type block_id, + const FunctorType& functor, const Cuda::size_type /*block_id*/, const Cuda::size_type block_count, Cuda::size_type* const shared_data, Cuda::size_type* const global_data, Cuda::size_type* const global_flags) { Scalar* const global_team_buffer_element = ((Scalar*)global_data); @@ -577,7 +588,7 @@ struct CudaReductionsFunctor { __device__ static inline void scalar_intra_block_reduction( const FunctorType& functor, Scalar value, const bool skip, Scalar* result, - const int shared_elements, Scalar* shared_team_buffer_element) { + const int /*shared_elements*/, Scalar* shared_team_buffer_element) { const int warp_id = (threadIdx.y * blockDim.x) / 32; Scalar* const my_shared_team_buffer_element = shared_team_buffer_element + threadIdx.y * blockDim.x + threadIdx.x; @@ -601,7 +612,7 @@ struct CudaReductionsFunctor { } __device__ static inline bool scalar_inter_block_reduction( - const FunctorType& functor, const Cuda::size_type block_id, + const FunctorType& functor, const Cuda::size_type /*block_id*/, const Cuda::size_type block_count, Cuda::size_type* const shared_data, Cuda::size_type* const global_data, Cuda::size_type* const global_flags) { Scalar* const global_team_buffer_element = ((Scalar*)global_data); diff --git a/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Task.hpp b/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Task.hpp index 237d2430d6..decbecc5e6 100644 --- a/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Task.hpp +++ b/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Task.hpp @@ -128,7 +128,7 @@ class TaskQueueSpecialization> { auto current_task = OptionalRef(); // Loop until all queues are empty and no tasks in flight - while (not queue.is_done()) { + while (!queue.is_done()) { if (warp_lane == 0) { // should be (?) same as team_exec.team_rank() == 0 // pop off a task current_task = diff --git a/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Team.hpp b/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Team.hpp index ac9ab9660c..d9d5ed0bf3 100644 --- a/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Team.hpp +++ b/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Team.hpp @@ -164,6 +164,8 @@ class CudaTeamMember { template KOKKOS_INLINE_FUNCTION void team_broadcast(ValueType& val, const int& thread_id) const { + (void)val; + (void)thread_id; #ifdef __CUDA_ARCH__ if (1 == blockDim.z) { // team == block __syncthreads(); @@ -184,6 +186,9 @@ class CudaTeamMember { template KOKKOS_INLINE_FUNCTION void team_broadcast(Closure const& f, ValueType& val, const int& thread_id) const { + (void)f; + (void)val; + (void)thread_id; #ifdef __CUDA_ARCH__ f(val); @@ -230,6 +235,8 @@ class CudaTeamMember { typename std::enable_if::value>::type team_reduce(ReducerType const& reducer, typename ReducerType::value_type& value) const noexcept { + (void)reducer; + (void)value; #ifdef __CUDA_ARCH__ cuda_intra_block_reduction(reducer, value, blockDim.y); #endif /* #ifdef __CUDA_ARCH__ */ @@ -274,6 +281,8 @@ class CudaTeamMember { return base_data[threadIdx.y]; #else + (void)value; + (void)global_accum; return Type(); #endif } @@ -302,6 +311,8 @@ class CudaTeamMember { typename std::enable_if::value>::type vector_reduce(ReducerType const& reducer, typename ReducerType::value_type& value) { + (void)reducer; + (void)value; #ifdef __CUDA_ARCH__ if (blockDim.x == 1) return; @@ -509,6 +520,11 @@ class CudaTeamMember { return 0; #else + (void)reducer; + (void)global_scratch_flags; + (void)global_scratch_space; + (void)shmem; + (void)shmem_size; return 0; #endif } @@ -683,6 +699,8 @@ KOKKOS_INLINE_FUNCTION void parallel_for( const Impl::TeamThreadRangeBoundariesStruct& loop_boundaries, const Closure& closure) { + (void)loop_boundaries; + (void)closure; #ifdef __CUDA_ARCH__ for (iType i = loop_boundaries.start + threadIdx.y; i < loop_boundaries.end; i += blockDim.y) @@ -706,6 +724,9 @@ KOKKOS_INLINE_FUNCTION parallel_reduce(const Impl::TeamThreadRangeBoundariesStruct< iType, Impl::CudaTeamMember>& loop_boundaries, const Closure& closure, const ReducerType& reducer) { + (void)loop_boundaries; + (void)closure; + (void)reducer; #ifdef __CUDA_ARCH__ typename ReducerType::value_type value; reducer.init(value); @@ -734,6 +755,9 @@ KOKKOS_INLINE_FUNCTION parallel_reduce(const Impl::TeamThreadRangeBoundariesStruct< iType, Impl::CudaTeamMember>& loop_boundaries, const Closure& closure, ValueType& result) { + (void)loop_boundaries; + (void)closure; + (void)result; #ifdef __CUDA_ARCH__ ValueType val; Kokkos::Sum reducer(val); @@ -755,6 +779,8 @@ KOKKOS_INLINE_FUNCTION void parallel_for( const Impl::TeamVectorRangeBoundariesStruct& loop_boundaries, const Closure& closure) { + (void)loop_boundaries; + (void)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) @@ -768,6 +794,9 @@ KOKKOS_INLINE_FUNCTION parallel_reduce(const Impl::TeamVectorRangeBoundariesStruct< iType, Impl::CudaTeamMember>& loop_boundaries, const Closure& closure, const ReducerType& reducer) { + (void)loop_boundaries; + (void)closure; + (void)reducer; #ifdef __CUDA_ARCH__ typename ReducerType::value_type value; reducer.init(value); @@ -788,6 +817,9 @@ KOKKOS_INLINE_FUNCTION parallel_reduce(const Impl::TeamVectorRangeBoundariesStruct< iType, Impl::CudaTeamMember>& loop_boundaries, const Closure& closure, ValueType& result) { + (void)loop_boundaries; + (void)closure; + (void)result; #ifdef __CUDA_ARCH__ ValueType val; Kokkos::Sum reducer(val); @@ -818,6 +850,8 @@ KOKKOS_INLINE_FUNCTION void parallel_for( const Impl::ThreadVectorRangeBoundariesStruct& loop_boundaries, const Closure& closure) { + (void)loop_boundaries; + (void)closure; #ifdef __CUDA_ARCH__ for (iType i = loop_boundaries.start + threadIdx.x; i < loop_boundaries.end; i += blockDim.x) { @@ -853,6 +887,9 @@ KOKKOS_INLINE_FUNCTION parallel_reduce(Impl::ThreadVectorRangeBoundariesStruct< iType, Impl::CudaTeamMember> const& loop_boundaries, Closure const& closure, ReducerType const& reducer) { + (void)loop_boundaries; + (void)closure; + (void)reducer; #ifdef __CUDA_ARCH__ reducer.init(reducer.reference()); @@ -884,6 +921,9 @@ KOKKOS_INLINE_FUNCTION parallel_reduce(Impl::ThreadVectorRangeBoundariesStruct< iType, Impl::CudaTeamMember> const& loop_boundaries, Closure const& closure, ValueType& result) { + (void)loop_boundaries; + (void)closure; + (void)result; #ifdef __CUDA_ARCH__ result = ValueType(); @@ -912,6 +952,8 @@ KOKKOS_INLINE_FUNCTION void parallel_scan( const Impl::ThreadVectorRangeBoundariesStruct& loop_boundaries, const Closure& closure) { + (void)loop_boundaries; + (void)closure; #ifdef __CUDA_ARCH__ // Extract value_type from closure @@ -986,6 +1028,7 @@ template KOKKOS_INLINE_FUNCTION void single( const Impl::VectorSingleStruct&, const FunctorType& lambda) { + (void)lambda; #ifdef __CUDA_ARCH__ if (threadIdx.x == 0) lambda(); #ifdef KOKKOS_IMPL_CUDA_SYNCWARP_NEEDS_MASK @@ -1003,6 +1046,7 @@ template KOKKOS_INLINE_FUNCTION void single( const Impl::ThreadSingleStruct&, const FunctorType& lambda) { + (void)lambda; #ifdef __CUDA_ARCH__ if (threadIdx.x == 0 && threadIdx.y == 0) lambda(); #ifdef KOKKOS_IMPL_CUDA_SYNCWARP_NEEDS_MASK @@ -1020,6 +1064,8 @@ template KOKKOS_INLINE_FUNCTION void single( const Impl::VectorSingleStruct&, const FunctorType& lambda, ValueType& val) { + (void)lambda; + (void)val; #ifdef __CUDA_ARCH__ if (threadIdx.x == 0) lambda(val); unsigned mask = blockDim.x == 32 @@ -1034,6 +1080,9 @@ template KOKKOS_INLINE_FUNCTION void single( const Impl::ThreadSingleStruct& single_struct, const FunctorType& lambda, ValueType& val) { + (void)single_struct; + (void)lambda; + (void)val; #ifdef __CUDA_ARCH__ if (threadIdx.x == 0 && threadIdx.y == 0) { lambda(val); diff --git a/lib/kokkos/core/src/Cuda/Kokkos_Cuda_UniqueToken.hpp b/lib/kokkos/core/src/Cuda/Kokkos_Cuda_UniqueToken.hpp index a0de4eaa7f..3b470edbc3 100644 --- a/lib/kokkos/core/src/Cuda/Kokkos_Cuda_UniqueToken.hpp +++ b/lib/kokkos/core/src/Cuda/Kokkos_Cuda_UniqueToken.hpp @@ -76,41 +76,17 @@ class UniqueToken { explicit UniqueToken(execution_space const& = execution_space()); #endif -#ifdef KOKKOS_CUDA_9_DEFAULTED_BUG_WORKAROUND - KOKKOS_INLINE_FUNCTION - UniqueToken(const UniqueToken& rhs) - : m_buffer(rhs.m_buffer), m_count(rhs.m_count) {} - - KOKKOS_INLINE_FUNCTION - UniqueToken(UniqueToken&& rhs) - : m_buffer(std::move(rhs.m_buffer)), m_count(std::move(rhs.m_count)) {} - - KOKKOS_INLINE_FUNCTION - UniqueToken& operator=(const UniqueToken& rhs) { - m_buffer = rhs.m_buffer; - m_count = rhs.m_count; - return *this; - } - - KOKKOS_INLINE_FUNCTION - UniqueToken& operator=(UniqueToken&& rhs) { - m_buffer = std::move(rhs.m_buffer); - m_count = std::move(rhs.m_count); - return *this; - } -#else - KOKKOS_INLINE_FUNCTION + KOKKOS_DEFAULTED_FUNCTION UniqueToken(const UniqueToken&) = default; - KOKKOS_INLINE_FUNCTION + KOKKOS_DEFAULTED_FUNCTION UniqueToken(UniqueToken&&) = default; - KOKKOS_INLINE_FUNCTION + KOKKOS_DEFAULTED_FUNCTION UniqueToken& operator=(const UniqueToken&) = default; - KOKKOS_INLINE_FUNCTION + KOKKOS_DEFAULTED_FUNCTION UniqueToken& operator=(UniqueToken&&) = default; -#endif /// \brief upper bound for acquired values, i.e. 0 <= value < size() KOKKOS_INLINE_FUNCTION diff --git a/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Vectorization.hpp b/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Vectorization.hpp index 085262b804..f75d2e56f7 100644 --- a/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Vectorization.hpp +++ b/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Vectorization.hpp @@ -55,7 +55,7 @@ namespace Kokkos { namespace Impl { // Include all lanes -constexpr unsigned shfl_all_mask = 0xffffffff; +constexpr unsigned shfl_all_mask = 0xffffffffu; //---------------------------------------------------------------------------- // Shuffle operations require input to be a register (stack) variable @@ -71,20 +71,32 @@ struct in_place_shfl_op { return *static_cast(this); } - // sizeof(Scalar) == sizeof(int) case + // sizeof(Scalar) <= sizeof(int) case template // requires _assignable_from_bits - __device__ inline typename std::enable_if::type + __device__ inline typename std::enable_if::type operator()(Scalar& out, Scalar const& in, int lane_or_delta, int width, unsigned mask = shfl_all_mask) const noexcept { + using shfl_type = int; + union conv_type { + Scalar orig; + shfl_type conv; + }; + conv_type tmp_in; + tmp_in.orig = in; + conv_type tmp_out; + tmp_out.conv = tmp_in.conv; + conv_type res; //------------------------------------------------ - reinterpret_cast(out) = self().do_shfl_op( - mask, reinterpret_cast(in), lane_or_delta, width); + res.conv = self().do_shfl_op( + mask, reinterpret_cast(tmp_out.conv), lane_or_delta, + width); //------------------------------------------------ + out = res.orig; } // TODO: figure out why 64-bit shfl fails in Clang -#if (CUDA_VERSION >= 9000) && (!defined(KOKKOS_COMPILER_CLANG)) +#if !defined(KOKKOS_COMPILER_CLANG) // sizeof(Scalar) == sizeof(double) case // requires _assignable_from_bits template @@ -140,6 +152,10 @@ struct in_place_shfl_fn : in_place_shfl_op { __device__ KOKKOS_IMPL_FORCEINLINE T do_shfl_op(unsigned mask, T& val, int lane, int width) const noexcept { + (void)mask; + (void)val; + (void)lane; + (void)width; return KOKKOS_IMPL_CUDA_SHFL_MASK(mask, val, lane, width); } }; @@ -167,6 +183,10 @@ struct in_place_shfl_down_fn : in_place_shfl_op { __device__ KOKKOS_IMPL_FORCEINLINE T do_shfl_op(unsigned mask, T& val, int lane, int width) const noexcept { + (void)mask; + (void)val; + (void)lane; + (void)width; return KOKKOS_IMPL_CUDA_SHFL_DOWN_MASK(mask, val, lane, width); } }; diff --git a/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Version_9_8_Compatibility.hpp b/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Version_9_8_Compatibility.hpp index 66231e55f9..0cdd84ce27 100644 --- a/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Version_9_8_Compatibility.hpp +++ b/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Version_9_8_Compatibility.hpp @@ -1,20 +1,6 @@ #include #if defined(__CUDA_ARCH__) -#if (CUDA_VERSION < 9000) -#define KOKKOS_IMPL_CUDA_ACTIVEMASK 0 -#define KOKKOS_IMPL_CUDA_SYNCWARP __threadfence_block() -#define KOKKOS_IMPL_CUDA_SYNCWARP_MASK(m) \ - if (m) __threadfence_block() -#define KOKKOS_IMPL_CUDA_BALLOT(x) __ballot(x) -#define KOKKOS_IMPL_CUDA_BALLOT_MASK(m, x) __ballot(x) -#define KOKKOS_IMPL_CUDA_SHFL(x, y, z) __shfl(x, y, z) -#define KOKKOS_IMPL_CUDA_SHFL_MASK(m, x, y, z) __shfl(x, y, z) -#define KOKKOS_IMPL_CUDA_SHFL_UP(x, y, z) __shfl_up(x, y, z) -#define KOKKOS_IMPL_CUDA_SHFL_UP_MASK(m, x, y, z) __shfl_up(x, y, z) -#define KOKKOS_IMPL_CUDA_SHFL_DOWN(x, y, z) __shfl_down(x, y, z) -#define KOKKOS_IMPL_CUDA_SHFL_DOWN_MASK(m, x, y, z) __shfl_down(x, y, z) -#else #define KOKKOS_IMPL_CUDA_ACTIVEMASK __activemask() #define KOKKOS_IMPL_CUDA_SYNCWARP __syncwarp(0xffffffff) #define KOKKOS_IMPL_CUDA_SYNCWARP_MASK(m) __syncwarp(m) @@ -27,7 +13,6 @@ #define KOKKOS_IMPL_CUDA_SHFL_DOWN(x, y, z) \ __shfl_down_sync(0xffffffff, x, y, z) #define KOKKOS_IMPL_CUDA_SHFL_DOWN_MASK(m, x, y, z) __shfl_down_sync(m, x, y, z) -#endif #else #define KOKKOS_IMPL_CUDA_ACTIVEMASK 0 #define KOKKOS_IMPL_CUDA_SYNCWARP @@ -41,25 +26,13 @@ #define KOKKOS_IMPL_CUDA_SHFL_DOWN_MASK(m, x, y, z) 0 #endif -#if (CUDA_VERSION >= 9000) && (!defined(KOKKOS_COMPILER_CLANG)) +#if !defined(KOKKOS_COMPILER_CLANG) #define KOKKOS_IMPL_CUDA_MAX_SHFL_SIZEOF sizeof(long long) #else #define KOKKOS_IMPL_CUDA_MAX_SHFL_SIZEOF sizeof(int) #endif #if defined(__CUDA_ARCH__) -#if (CUDA_VERSION < 9000) -#define KOKKOS_IMPL_CUDA_SYNCWARP_OR_RETURN(MSG) \ - { \ - const unsigned b = __ballot(1); \ - if (b != 0xffffffff) { \ - printf(" SYNCWARP AT %s (%d,%d,%d) (%d,%d,%d) failed %x\n", MSG, \ - blockIdx.x, blockIdx.y, blockIdx.z, threadIdx.x, threadIdx.y, \ - threadIdx.z, b); \ - return; \ - } \ - } -#else #define KOKKOS_IMPL_CUDA_SYNCWARP_OR_RETURN(MSG) \ { \ __syncwarp(); \ @@ -71,7 +44,6 @@ return; \ } \ } -#endif #else #define KOKKOS_IMPL_CUDA_SYNCWARP_OR_RETURN(MSG) #endif diff --git a/lib/kokkos/core/src/Cuda/Kokkos_Cuda_View.hpp b/lib/kokkos/core/src/Cuda/Kokkos_Cuda_View.hpp index 08fdbea387..364f334a4c 100644 --- a/lib/kokkos/core/src/Cuda/Kokkos_Cuda_View.hpp +++ b/lib/kokkos/core/src/Cuda/Kokkos_Cuda_View.hpp @@ -84,8 +84,8 @@ struct CudaTextureFetch { KOKKOS_INLINE_FUNCTION CudaTextureFetch() : m_obj(), m_ptr(), m_offset() {} - KOKKOS_INLINE_FUNCTION - ~CudaTextureFetch() {} + KOKKOS_DEFAULTED_FUNCTION + ~CudaTextureFetch() = default; KOKKOS_INLINE_FUNCTION CudaTextureFetch(const CudaTextureFetch& rhs) @@ -153,8 +153,8 @@ struct CudaLDGFetch { KOKKOS_INLINE_FUNCTION CudaLDGFetch() : m_ptr() {} - KOKKOS_INLINE_FUNCTION - ~CudaLDGFetch() {} + KOKKOS_DEFAULTED_FUNCTION + ~CudaLDGFetch() = default; KOKKOS_INLINE_FUNCTION CudaLDGFetch(const CudaLDGFetch& rhs) : m_ptr(rhs.m_ptr) {} @@ -250,7 +250,7 @@ class ViewDataHandle< KOKKOS_INLINE_FUNCTION static handle_type assign(value_type* arg_data_ptr, track_type const& arg_tracker) { - if (arg_data_ptr == NULL) return handle_type(); + if (arg_data_ptr == nullptr) return handle_type(); #if defined(KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_HOST) // Assignment of texture = non-texture requires creation of a texture object @@ -273,6 +273,7 @@ class ViewDataHandle< return handle_type(arg_data_ptr, r); #else + (void)arg_tracker; Kokkos::Impl::cuda_abort( "Cannot create Cuda texture object from within a Cuda kernel"); return handle_type(); diff --git a/lib/kokkos/core/src/Cuda/Kokkos_Cuda_fwd.hpp b/lib/kokkos/core/src/Cuda/Kokkos_Cuda_fwd.hpp new file mode 100644 index 0000000000..4bda5e9411 --- /dev/null +++ b/lib/kokkos/core/src/Cuda/Kokkos_Cuda_fwd.hpp @@ -0,0 +1,67 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// 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 NTESS "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 NTESS 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_CUDA_FWD_HPP_ +#define KOKKOS_CUDA_FWD_HPP_ +#if defined(KOKKOS_ENABLE_CUDA) +namespace Kokkos { + +class CudaSpace; ///< Memory space on Cuda GPU +class CudaUVMSpace; ///< Memory space on Cuda GPU with UVM +class CudaHostPinnedSpace; ///< Memory space on Host accessible to Cuda GPU +class Cuda; ///< Execution space for Cuda GPU + +namespace Impl { + +template +void cuda_prefetch_pointer(const ExecSpace& /*space*/, const void* /*ptr*/, + size_t /*bytes*/, bool /*to_device*/) {} + +void cuda_prefetch_pointer(const Cuda& space, const void* ptr, size_t bytes, + bool to_device); + +} // namespace Impl +} // namespace Kokkos +#endif +#endif diff --git a/lib/kokkos/core/src/HIP/KokkosExp_HIP_IterateTile.hpp b/lib/kokkos/core/src/HIP/KokkosExp_HIP_IterateTile.hpp new file mode 100644 index 0000000000..e2525d70c1 --- /dev/null +++ b/lib/kokkos/core/src/HIP/KokkosExp_HIP_IterateTile.hpp @@ -0,0 +1,3296 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// 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 NTESS "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 NTESS 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_HIP_EXP_ITERATE_TILE_REFACTOR_HPP +#define KOKKOS_HIP_EXP_ITERATE_TILE_REFACTOR_HPP + +#include +#if defined(__HIPCC__) + +#include +#include +#include + +#include + +#if defined(KOKKOS_ENABLE_PROFILING) +#include +#include +#endif + +namespace Kokkos { +namespace Impl { + +// ------------------------------------------------------------------ // +// ParallelFor iteration pattern +template +struct DeviceIterateTile; + +// Rank 2 +// Specializations for void tag type +template +struct DeviceIterateTile<2, PolicyType, Functor, void> { + using index_type = typename PolicyType::index_type; + + __device__ DeviceIterateTile(const PolicyType& policy_, const Functor& f_) + : m_policy(policy_), m_func(f_) {} + + KOKKOS_INLINE_FUNCTION + void exec_range() const { + // LL + if (PolicyType::inner_direction == PolicyType::Left) { + for (index_type tile_id1 = static_cast(hipBlockIdx_y); + tile_id1 < m_policy.m_tile_end[1]; tile_id1 += hipGridDim_y) { + const index_type offset_1 = + tile_id1 * m_policy.m_tile[1] + + static_cast(hipThreadIdx_y) + + static_cast(m_policy.m_lower[1]); + if (offset_1 < m_policy.m_upper[1] && + static_cast(hipThreadIdx_y) < m_policy.m_tile[1]) { + for (index_type tile_id0 = static_cast(hipBlockIdx_x); + tile_id0 < m_policy.m_tile_end[0]; tile_id0 += hipGridDim_x) { + const index_type offset_0 = + tile_id0 * m_policy.m_tile[0] + + static_cast(hipThreadIdx_x) + + static_cast(m_policy.m_lower[0]); + if (offset_0 < m_policy.m_upper[0] && + static_cast(hipThreadIdx_x) < m_policy.m_tile[0]) { + m_func(offset_0, offset_1); + } + } + } + } + } + // LR + else { + for (index_type tile_id0 = static_cast(hipBlockIdx_x); + tile_id0 < m_policy.m_tile_end[0]; tile_id0 += hipGridDim_x) { + const index_type offset_0 = + tile_id0 * m_policy.m_tile[0] + + static_cast(hipThreadIdx_x) + + static_cast(m_policy.m_lower[0]); + if (offset_0 < m_policy.m_upper[0] && + static_cast(hipThreadIdx_x) < m_policy.m_tile[0]) { + for (index_type tile_id1 = static_cast(hipBlockIdx_y); + tile_id1 < m_policy.m_tile_end[1]; tile_id1 += hipGridDim_y) { + const index_type offset_1 = + tile_id1 * m_policy.m_tile[1] + + static_cast(hipThreadIdx_y) + + static_cast(m_policy.m_lower[1]); + if (offset_1 < m_policy.m_upper[1] && + static_cast(hipThreadIdx_y) < m_policy.m_tile[1]) { + m_func(offset_0, offset_1); + } + } + } + } + } + } // end exec_range + + private: + const PolicyType& m_policy; + const Functor& m_func; +}; + +// Specializations for tag type +template +struct DeviceIterateTile<2, PolicyType, Functor, Tag> { + using index_type = typename PolicyType::index_type; + + KOKKOS_INLINE_FUNCTION + DeviceIterateTile(const PolicyType& policy_, const Functor& f_) + : m_policy(policy_), m_func(f_) {} + + KOKKOS_INLINE_FUNCTION + void exec_range() const { + if (PolicyType::inner_direction == PolicyType::Left) { + // Loop over size maxnumblocks until full range covered + for (index_type tile_id1 = static_cast(hipBlockIdx_y); + tile_id1 < m_policy.m_tile_end[1]; tile_id1 += hipGridDim_y) { + const index_type offset_1 = + tile_id1 * m_policy.m_tile[1] + + static_cast(hipThreadIdx_y) + + static_cast(m_policy.m_lower[1]); + if (offset_1 < m_policy.m_upper[1] && + static_cast(hipThreadIdx_y) < m_policy.m_tile[1]) { + for (index_type tile_id0 = static_cast(hipBlockIdx_x); + tile_id0 < m_policy.m_tile_end[0]; tile_id0 += hipGridDim_x) { + const index_type offset_0 = + tile_id0 * m_policy.m_tile[0] + + static_cast(hipThreadIdx_x) + + static_cast(m_policy.m_lower[0]); + if (offset_0 < m_policy.m_upper[0] && + static_cast(hipThreadIdx_x) < m_policy.m_tile[0]) { + m_func(Tag(), offset_0, offset_1); + } + } + } + } + } else { + for (index_type tile_id0 = static_cast(hipBlockIdx_x); + tile_id0 < m_policy.m_tile_end[0]; tile_id0 += hipGridDim_x) { + const index_type offset_0 = + tile_id0 * m_policy.m_tile[0] + + static_cast(hipThreadIdx_x) + + static_cast(m_policy.m_lower[0]); + if (offset_0 < m_policy.m_upper[0] && + static_cast(hipThreadIdx_x) < m_policy.m_tile[0]) { + for (index_type tile_id1 = static_cast(hipBlockIdx_y); + tile_id1 < m_policy.m_tile_end[1]; tile_id1 += hipGridDim_y) { + const index_type offset_1 = + tile_id1 * m_policy.m_tile[1] + + static_cast(hipThreadIdx_y) + + static_cast(m_policy.m_lower[1]); + if (offset_1 < m_policy.m_upper[1] && + static_cast(hipThreadIdx_y) < m_policy.m_tile[1]) { + m_func(Tag(), offset_0, offset_1); + } + } + } + } + } + } // end exec_range + + private: + const PolicyType& m_policy; + const Functor& m_func; +}; + +// Rank 3 +// Specializations for void tag type +template +struct DeviceIterateTile<3, PolicyType, Functor, void> { + using index_type = typename PolicyType::index_type; + + __device__ DeviceIterateTile(const PolicyType& policy_, const Functor& f_) + : m_policy(policy_), m_func(f_) {} + + KOKKOS_INLINE_FUNCTION + void exec_range() const { + // LL + if (PolicyType::inner_direction == PolicyType::Left) { + for (index_type tile_id2 = static_cast(hipBlockIdx_z); + tile_id2 < m_policy.m_tile_end[2]; tile_id2 += hipGridDim_z) { + const index_type offset_2 = + tile_id2 * m_policy.m_tile[2] + + static_cast(hipThreadIdx_z) + + static_cast(m_policy.m_lower[2]); + if (offset_2 < m_policy.m_upper[2] && + static_cast(hipThreadIdx_z) < m_policy.m_tile[2]) { + for (index_type tile_id1 = static_cast(hipBlockIdx_y); + tile_id1 < m_policy.m_tile_end[1]; tile_id1 += hipGridDim_y) { + const index_type offset_1 = + tile_id1 * m_policy.m_tile[1] + + static_cast(hipThreadIdx_y) + + static_cast(m_policy.m_lower[1]); + if (offset_1 < m_policy.m_upper[1] && + static_cast(hipThreadIdx_y) < m_policy.m_tile[1]) { + for (index_type tile_id0 = static_cast(hipBlockIdx_x); + tile_id0 < m_policy.m_tile_end[0]; + tile_id0 += hipGridDim_x) { + const index_type offset_0 = + tile_id0 * m_policy.m_tile[0] + + static_cast(hipThreadIdx_x) + + static_cast(m_policy.m_lower[0]); + if (offset_0 < m_policy.m_upper[0] && + static_cast(hipThreadIdx_x) < + m_policy.m_tile[0]) { + m_func(offset_0, offset_1, offset_2); + } + } + } + } + } + } + } + // LR + else { + for (index_type tile_id0 = static_cast(hipBlockIdx_x); + tile_id0 < m_policy.m_tile_end[0]; tile_id0 += hipGridDim_x) { + const index_type offset_0 = + tile_id0 * m_policy.m_tile[0] + + static_cast(hipThreadIdx_x) + + static_cast(m_policy.m_lower[0]); + if (offset_0 < m_policy.m_upper[0] && + static_cast(hipThreadIdx_x) < m_policy.m_tile[0]) { + for (index_type tile_id1 = static_cast(hipBlockIdx_y); + tile_id1 < m_policy.m_tile_end[1]; tile_id1 += hipGridDim_y) { + const index_type offset_1 = + tile_id1 * m_policy.m_tile[1] + + static_cast(hipThreadIdx_y) + + static_cast(m_policy.m_lower[1]); + if (offset_1 < m_policy.m_upper[1] && + static_cast(hipThreadIdx_y) < m_policy.m_tile[1]) { + for (index_type tile_id2 = static_cast(hipBlockIdx_z); + tile_id2 < m_policy.m_tile_end[2]; + tile_id2 += hipGridDim_z) { + const index_type offset_2 = + tile_id2 * m_policy.m_tile[2] + + static_cast(hipThreadIdx_z) + + static_cast(m_policy.m_lower[2]); + if (offset_2 < m_policy.m_upper[2] && + static_cast(hipThreadIdx_z) < + m_policy.m_tile[2]) { + m_func(offset_0, offset_1, offset_2); + } + } + } + } + } + } + } + } // end exec_range + + private: + const PolicyType& m_policy; + const Functor& m_func; +}; + +// Specializations for void tag type +template +struct DeviceIterateTile<3, PolicyType, Functor, Tag> { + using index_type = typename PolicyType::index_type; + + KOKKOS_INLINE_FUNCTION + DeviceIterateTile(const PolicyType& policy_, const Functor& f_) + : m_policy(policy_), m_func(f_) {} + + KOKKOS_INLINE_FUNCTION + void exec_range() const { + if (PolicyType::inner_direction == PolicyType::Left) { + for (index_type tile_id2 = static_cast(hipBlockIdx_z); + tile_id2 < m_policy.m_tile_end[2]; tile_id2 += hipGridDim_z) { + const index_type offset_2 = + tile_id2 * m_policy.m_tile[2] + + static_cast(hipThreadIdx_z) + + static_cast(m_policy.m_lower[2]); + if (offset_2 < m_policy.m_upper[2] && + static_cast(hipThreadIdx_z) < m_policy.m_tile[2]) { + for (index_type tile_id1 = static_cast(hipBlockIdx_y); + tile_id1 < m_policy.m_tile_end[1]; tile_id1 += hipGridDim_y) { + const index_type offset_1 = + tile_id1 * m_policy.m_tile[1] + + static_cast(hipThreadIdx_y) + + static_cast(m_policy.m_lower[1]); + if (offset_1 < m_policy.m_upper[1] && + static_cast(hipThreadIdx_y) < m_policy.m_tile[1]) { + for (index_type tile_id0 = static_cast(hipBlockIdx_x); + tile_id0 < m_policy.m_tile_end[0]; + tile_id0 += hipGridDim_x) { + const index_type offset_0 = + tile_id0 * m_policy.m_tile[0] + + static_cast(hipThreadIdx_x) + + static_cast(m_policy.m_lower[0]); + if (offset_0 < m_policy.m_upper[0] && + static_cast(hipThreadIdx_x) < + m_policy.m_tile[0]) { + m_func(Tag(), offset_0, offset_1, offset_2); + } + } + } + } + } + } + } else { + for (index_type tile_id0 = static_cast(hipBlockIdx_x); + tile_id0 < m_policy.m_tile_end[0]; tile_id0 += hipGridDim_x) { + const index_type offset_0 = + tile_id0 * m_policy.m_tile[0] + + static_cast(hipThreadIdx_x) + + static_cast(m_policy.m_lower[0]); + if (offset_0 < m_policy.m_upper[0] && + static_cast(hipThreadIdx_x) < m_policy.m_tile[0]) { + for (index_type tile_id1 = static_cast(hipBlockIdx_y); + tile_id1 < m_policy.m_tile_end[1]; tile_id1 += hipGridDim_y) { + const index_type offset_1 = + tile_id1 * m_policy.m_tile[1] + + static_cast(hipThreadIdx_y) + + static_cast(m_policy.m_lower[1]); + if (offset_1 < m_policy.m_upper[1] && + static_cast(hipThreadIdx_y) < m_policy.m_tile[1]) { + for (index_type tile_id2 = static_cast(hipBlockIdx_z); + tile_id2 < m_policy.m_tile_end[2]; + tile_id2 += hipGridDim_z) { + const index_type offset_2 = + tile_id2 * m_policy.m_tile[2] + + static_cast(hipThreadIdx_z) + + static_cast(m_policy.m_lower[2]); + if (offset_2 < m_policy.m_upper[2] && + static_cast(hipThreadIdx_z) < + m_policy.m_tile[2]) { + m_func(Tag(), offset_0, offset_1, offset_2); + } + } + } + } + } + } + } + } // end exec_range + + private: + const PolicyType& m_policy; + const Functor& m_func; +}; + +// Rank 4 +// Specializations for void tag type +template +struct DeviceIterateTile<4, PolicyType, Functor, void> { + using index_type = typename PolicyType::index_type; + + __device__ DeviceIterateTile(const PolicyType& policy_, const Functor& f_) + : m_policy(policy_), m_func(f_) {} + + static constexpr index_type max_blocks = 65535; + + KOKKOS_INLINE_FUNCTION + void exec_range() const { + // LL + if (PolicyType::inner_direction == PolicyType::Left) { + const index_type temp0 = m_policy.m_tile_end[0]; + const index_type temp1 = m_policy.m_tile_end[1]; + const index_type numbl0 = (temp0 <= max_blocks ? temp0 : max_blocks); + const index_type numbl1 = + (temp0 * temp1 > max_blocks + ? index_type(max_blocks / numbl0) + : (temp1 <= max_blocks ? temp1 : max_blocks)); + + const index_type tile_id0 = + static_cast(hipBlockIdx_x) % numbl0; + const index_type tile_id1 = + static_cast(hipBlockIdx_x) / numbl0; + const index_type thr_id0 = + static_cast(hipThreadIdx_x) % m_policy.m_tile[0]; + const index_type thr_id1 = + static_cast(hipThreadIdx_x) / m_policy.m_tile[0]; + + for (index_type tile_id3 = static_cast(hipBlockIdx_z); + tile_id3 < m_policy.m_tile_end[3]; tile_id3 += hipGridDim_z) { + const index_type offset_3 = + tile_id3 * m_policy.m_tile[3] + + static_cast(hipThreadIdx_z) + + static_cast(m_policy.m_lower[3]); + if (offset_3 < m_policy.m_upper[3] && + static_cast(hipThreadIdx_z) < m_policy.m_tile[3]) { + for (index_type tile_id2 = static_cast(hipBlockIdx_y); + tile_id2 < m_policy.m_tile_end[2]; tile_id2 += hipGridDim_y) { + const index_type offset_2 = + tile_id2 * m_policy.m_tile[2] + + static_cast(hipThreadIdx_y) + + static_cast(m_policy.m_lower[2]); + if (offset_2 < m_policy.m_upper[2] && + static_cast(hipThreadIdx_y) < m_policy.m_tile[2]) { + for (index_type j = tile_id1; j < m_policy.m_tile_end[1]; + j += numbl1) { + const index_type offset_1 = + j * m_policy.m_tile[1] + thr_id1 + + static_cast(m_policy.m_lower[1]); + if (offset_1 < m_policy.m_upper[1] && + thr_id1 < m_policy.m_tile[1]) { + for (index_type i = tile_id0; i < m_policy.m_tile_end[0]; + i += numbl0) { + const index_type offset_0 = + i * m_policy.m_tile[0] + thr_id0 + + static_cast(m_policy.m_lower[0]); + if (offset_0 < m_policy.m_upper[0] && + thr_id0 < m_policy.m_tile[0]) { + m_func(offset_0, offset_1, offset_2, offset_3); + } + } + } + } + } + } + } + } + } + // LR + else { + const index_type temp0 = m_policy.m_tile_end[0]; + const index_type temp1 = m_policy.m_tile_end[1]; + const index_type numbl1 = (temp1 <= max_blocks ? temp1 : max_blocks); + const index_type numbl0 = + (temp0 * temp1 > max_blocks + ? index_type(max_blocks / numbl1) + : (temp0 <= max_blocks ? temp0 : max_blocks)); + + const index_type tile_id0 = + static_cast(hipBlockIdx_x) / numbl1; + const index_type tile_id1 = + static_cast(hipBlockIdx_x) % numbl1; + const index_type thr_id0 = + static_cast(hipThreadIdx_x) / m_policy.m_tile[1]; + const index_type thr_id1 = + static_cast(hipThreadIdx_x) % m_policy.m_tile[1]; + + for (index_type i = tile_id0; i < m_policy.m_tile_end[0]; i += numbl0) { + const index_type offset_0 = + i * m_policy.m_tile[0] + thr_id0 + + static_cast(m_policy.m_lower[0]); + if (offset_0 < m_policy.m_upper[0] && thr_id0 < m_policy.m_tile[0]) { + for (index_type j = tile_id1; j < m_policy.m_tile_end[1]; + j += numbl1) { + const index_type offset_1 = + j * m_policy.m_tile[1] + thr_id1 + + static_cast(m_policy.m_lower[1]); + if (offset_1 < m_policy.m_upper[1] && + thr_id1 < m_policy.m_tile[1]) { + for (index_type tile_id2 = static_cast(hipBlockIdx_y); + tile_id2 < m_policy.m_tile_end[2]; + tile_id2 += hipGridDim_y) { + const index_type offset_2 = + tile_id2 * m_policy.m_tile[2] + + static_cast(hipThreadIdx_y) + + static_cast(m_policy.m_lower[2]); + if (offset_2 < m_policy.m_upper[2] && + static_cast(hipThreadIdx_y) < + m_policy.m_tile[2]) { + for (index_type tile_id3 = + static_cast(hipBlockIdx_z); + tile_id3 < m_policy.m_tile_end[3]; + tile_id3 += hipGridDim_z) { + const index_type offset_3 = + tile_id3 * m_policy.m_tile[3] + + static_cast(hipThreadIdx_z) + + static_cast(m_policy.m_lower[3]); + if (offset_3 < m_policy.m_upper[3] && + static_cast(hipThreadIdx_z) < + m_policy.m_tile[3]) { + m_func(offset_0, offset_1, offset_2, offset_3); + } + } + } + } + } + } + } + } + } + } // end exec_range + + private: + const PolicyType& m_policy; + const Functor& m_func; +}; + +// Specializations for void tag type +template +struct DeviceIterateTile<4, PolicyType, Functor, Tag> { + using index_type = typename PolicyType::index_type; + + KOKKOS_INLINE_FUNCTION + DeviceIterateTile(const PolicyType& policy_, const Functor& f_) + : m_policy(policy_), m_func(f_) {} + + static constexpr index_type max_blocks = 65535; + + KOKKOS_INLINE_FUNCTION + void exec_range() const { + if (PolicyType::inner_direction == PolicyType::Left) { + const index_type temp0 = m_policy.m_tile_end[0]; + const index_type temp1 = m_policy.m_tile_end[1]; + const index_type numbl0 = (temp0 <= max_blocks ? temp0 : max_blocks); + const index_type numbl1 = + (temp0 * temp1 > max_blocks + ? static_cast(max_blocks / numbl0) + : (temp1 <= max_blocks ? temp1 : max_blocks)); + + const index_type tile_id0 = + static_cast(hipBlockIdx_x) % numbl0; + const index_type tile_id1 = + static_cast(hipBlockIdx_x) / numbl0; + const index_type thr_id0 = + static_cast(hipThreadIdx_x) % m_policy.m_tile[0]; + const index_type thr_id1 = + static_cast(hipThreadIdx_x) / m_policy.m_tile[0]; + + for (index_type tile_id3 = static_cast(hipBlockIdx_z); + tile_id3 < m_policy.m_tile_end[3]; tile_id3 += hipGridDim_z) { + const index_type offset_3 = + tile_id3 * m_policy.m_tile[3] + + static_cast(hipThreadIdx_z) + + static_cast(m_policy.m_lower[3]); + if (offset_3 < m_policy.m_upper[3] && + static_cast(hipThreadIdx_z) < m_policy.m_tile[3]) { + for (index_type tile_id2 = static_cast(hipBlockIdx_y); + tile_id2 < m_policy.m_tile_end[2]; tile_id2 += hipGridDim_y) { + const index_type offset_2 = + tile_id2 * m_policy.m_tile[2] + + static_cast(hipThreadIdx_y) + + static_cast(m_policy.m_lower[2]); + if (offset_2 < m_policy.m_upper[2] && + static_cast(hipThreadIdx_y) < m_policy.m_tile[2]) { + for (index_type j = tile_id1; j < m_policy.m_tile_end[1]; + j += numbl1) { + const index_type offset_1 = + j * m_policy.m_tile[1] + thr_id1 + + static_cast(m_policy.m_lower[1]); + if (offset_1 < m_policy.m_upper[1] && + thr_id1 < m_policy.m_tile[1]) { + for (index_type i = tile_id0; i < m_policy.m_tile_end[0]; + i += numbl0) { + const index_type offset_0 = + i * m_policy.m_tile[0] + thr_id0 + + static_cast(m_policy.m_lower[0]); + if (offset_0 < m_policy.m_upper[0] && + thr_id0 < m_policy.m_tile[0]) { + m_func(Tag(), offset_0, offset_1, offset_2, offset_3); + } + } + } + } + } + } + } + } + } else { + const index_type temp0 = m_policy.m_tile_end[0]; + const index_type temp1 = m_policy.m_tile_end[1]; + const index_type numbl1 = (temp1 <= max_blocks ? temp1 : max_blocks); + const index_type numbl0 = + (temp0 * temp1 > max_blocks + ? index_type(max_blocks / numbl1) + : (temp0 <= max_blocks ? temp0 : max_blocks)); + + const index_type tile_id0 = + static_cast(hipBlockIdx_x) / numbl1; + const index_type tile_id1 = + static_cast(hipBlockIdx_x) % numbl1; + const index_type thr_id0 = + static_cast(hipThreadIdx_x) / m_policy.m_tile[1]; + const index_type thr_id1 = + static_cast(hipThreadIdx_x) % m_policy.m_tile[1]; + + for (index_type i = tile_id0; i < m_policy.m_tile_end[0]; i += numbl0) { + const index_type offset_0 = + i * m_policy.m_tile[0] + thr_id0 + + static_cast(m_policy.m_lower[0]); + if (offset_0 < m_policy.m_upper[0] && thr_id0 < m_policy.m_tile[0]) { + for (index_type j = tile_id1; j < m_policy.m_tile_end[1]; + j += numbl1) { + const index_type offset_1 = + tile_id1 * m_policy.m_tile[1] + thr_id1 + + static_cast(m_policy.m_lower[1]); + if (offset_1 < m_policy.m_upper[1] && + thr_id1 < m_policy.m_tile[1]) { + for (index_type tile_id2 = static_cast(hipBlockIdx_y); + tile_id2 < m_policy.m_tile_end[2]; + tile_id2 += hipGridDim_y) { + const index_type offset_2 = + tile_id2 * m_policy.m_tile[2] + + static_cast(hipThreadIdx_y) + + static_cast(m_policy.m_lower[2]); + if (offset_2 < m_policy.m_upper[2] && + static_cast(hipThreadIdx_y) < + m_policy.m_tile[2]) { + for (index_type tile_id3 = + static_cast(hipBlockIdx_z); + tile_id3 < m_policy.m_tile_end[3]; + tile_id3 += hipGridDim_z) { + const index_type offset_3 = + tile_id3 * m_policy.m_tile[3] + + static_cast(hipThreadIdx_z) + + static_cast(m_policy.m_lower[3]); + if (offset_3 < m_policy.m_upper[3] && + static_cast(hipThreadIdx_z) < + m_policy.m_tile[3]) { + m_func(Tag(), offset_0, offset_1, offset_2, offset_3); + } + } + } + } + } + } + } + } + } + } // end exec_range + + private: + const PolicyType& m_policy; + const Functor& m_func; +}; + +// Rank 5 +// Specializations for void tag type +template +struct DeviceIterateTile<5, PolicyType, Functor, void> { + using index_type = typename PolicyType::index_type; + + __device__ DeviceIterateTile(const PolicyType& policy_, const Functor& f_) + : m_policy(policy_), m_func(f_) {} + + static constexpr index_type max_blocks = 65535; + + KOKKOS_INLINE_FUNCTION + void exec_range() const { + // LL + if (PolicyType::inner_direction == PolicyType::Left) { + index_type temp0 = m_policy.m_tile_end[0]; + index_type temp1 = m_policy.m_tile_end[1]; + const index_type numbl0 = (temp0 <= max_blocks ? temp0 : max_blocks); + const index_type numbl1 = + (temp0 * temp1 > max_blocks + ? index_type(max_blocks / numbl0) + : (temp1 <= max_blocks ? temp1 : max_blocks)); + + const index_type tile_id0 = + static_cast(hipBlockIdx_x) % numbl0; + const index_type tile_id1 = + static_cast(hipBlockIdx_x) / numbl0; + const index_type thr_id0 = + static_cast(hipThreadIdx_x) % m_policy.m_tile[0]; + const index_type thr_id1 = + static_cast(hipThreadIdx_x) / m_policy.m_tile[0]; + + temp0 = m_policy.m_tile_end[2]; + temp1 = m_policy.m_tile_end[3]; + const index_type numbl2 = (temp0 <= max_blocks ? temp0 : max_blocks); + const index_type numbl3 = + (temp0 * temp1 > max_blocks + ? index_type(max_blocks / numbl2) + : (temp1 <= max_blocks ? temp1 : max_blocks)); + + const index_type tile_id2 = + static_cast(hipBlockIdx_y) % numbl2; + const index_type tile_id3 = + static_cast(hipBlockIdx_y) / numbl2; + const index_type thr_id2 = + static_cast(hipThreadIdx_y) % m_policy.m_tile[2]; + const index_type thr_id3 = + static_cast(hipThreadIdx_y) / m_policy.m_tile[2]; + + for (index_type tile_id4 = static_cast(hipBlockIdx_z); + tile_id4 < m_policy.m_tile_end[4]; tile_id4 += hipGridDim_z) { + const index_type offset_4 = + tile_id4 * m_policy.m_tile[4] + + static_cast(hipThreadIdx_z) + + static_cast(m_policy.m_lower[4]); + if (offset_4 < m_policy.m_upper[4] && + static_cast(hipThreadIdx_z) < m_policy.m_tile[4]) { + for (index_type l = tile_id3; l < m_policy.m_tile_end[3]; + l += numbl3) { + const index_type offset_3 = + l * m_policy.m_tile[3] + thr_id3 + + static_cast(m_policy.m_lower[3]); + if (offset_3 < m_policy.m_upper[3] && + thr_id3 < m_policy.m_tile[3]) { + for (index_type k = tile_id2; k < m_policy.m_tile_end[2]; + k += numbl2) { + const index_type offset_2 = + k * m_policy.m_tile[2] + thr_id2 + + static_cast(m_policy.m_lower[2]); + if (offset_2 < m_policy.m_upper[2] && + thr_id2 < m_policy.m_tile[2]) { + for (index_type j = tile_id1; j < m_policy.m_tile_end[1]; + j += numbl1) { + const index_type offset_1 = + j * m_policy.m_tile[1] + thr_id1 + + static_cast(m_policy.m_lower[1]); + if (offset_1 < m_policy.m_upper[1] && + thr_id1 < m_policy.m_tile[1]) { + for (index_type i = tile_id0; i < m_policy.m_tile_end[0]; + i += numbl0) { + const index_type offset_0 = + i * m_policy.m_tile[0] + thr_id0 + + static_cast(m_policy.m_lower[0]); + if (offset_0 < m_policy.m_upper[0] && + thr_id0 < m_policy.m_tile[0]) { + m_func(offset_0, offset_1, offset_2, offset_3, + offset_4); + } + } + } + } + } + } + } + } + } + } + } + // LR + else { + index_type temp0 = m_policy.m_tile_end[0]; + index_type temp1 = m_policy.m_tile_end[1]; + const index_type numbl1 = (temp1 <= max_blocks ? temp1 : max_blocks); + const index_type numbl0 = + (temp0 * temp1 > max_blocks + ? index_type(max_blocks / numbl1) + : (temp0 <= max_blocks ? temp0 : max_blocks)); + + const index_type tile_id0 = + static_cast(hipBlockIdx_x) / numbl1; + const index_type tile_id1 = + static_cast(hipBlockIdx_x) % numbl1; + const index_type thr_id0 = + static_cast(hipThreadIdx_x) / m_policy.m_tile[1]; + const index_type thr_id1 = + static_cast(hipThreadIdx_x) % m_policy.m_tile[1]; + + temp0 = m_policy.m_tile_end[2]; + temp1 = m_policy.m_tile_end[3]; + const index_type numbl3 = (temp1 <= max_blocks ? temp1 : max_blocks); + const index_type numbl2 = + (temp0 * temp1 > max_blocks + ? index_type(max_blocks / numbl3) + : (temp0 <= max_blocks ? temp0 : max_blocks)); + + const index_type tile_id2 = + static_cast(hipBlockIdx_y) / numbl3; + const index_type tile_id3 = + static_cast(hipBlockIdx_y) % numbl3; + const index_type thr_id2 = + static_cast(hipThreadIdx_y) / m_policy.m_tile[3]; + const index_type thr_id3 = + static_cast(hipThreadIdx_y) % m_policy.m_tile[3]; + + for (index_type i = tile_id0; i < m_policy.m_tile_end[0]; i += numbl0) { + const index_type offset_0 = + i * m_policy.m_tile[0] + thr_id0 + + static_cast(m_policy.m_lower[0]); + if (offset_0 < m_policy.m_upper[0] && thr_id0 < m_policy.m_tile[0]) { + for (index_type j = tile_id1; j < m_policy.m_tile_end[1]; + j += numbl1) { + const index_type offset_1 = + j * m_policy.m_tile[1] + thr_id1 + + static_cast(m_policy.m_lower[1]); + if (offset_1 < m_policy.m_upper[1] && + thr_id1 < m_policy.m_tile[1]) { + for (index_type k = tile_id2; k < m_policy.m_tile_end[2]; + k += numbl2) { + const index_type offset_2 = + k * m_policy.m_tile[2] + thr_id2 + + static_cast(m_policy.m_lower[2]); + if (offset_2 < m_policy.m_upper[2] && + thr_id2 < m_policy.m_tile[2]) { + for (index_type l = tile_id3; l < m_policy.m_tile_end[3]; + l += numbl3) { + const index_type offset_3 = + l * m_policy.m_tile[3] + thr_id3 + + static_cast(m_policy.m_lower[3]); + if (offset_3 < m_policy.m_upper[3] && + thr_id3 < m_policy.m_tile[3]) { + for (index_type tile_id4 = + static_cast(hipBlockIdx_z); + tile_id4 < m_policy.m_tile_end[4]; + tile_id4 += hipGridDim_z) { + const index_type offset_4 = + tile_id4 * m_policy.m_tile[4] + + static_cast(hipThreadIdx_z) + + static_cast(m_policy.m_lower[4]); + if (offset_4 < m_policy.m_upper[4] && + static_cast(hipThreadIdx_z) < + m_policy.m_tile[4]) { + m_func(offset_0, offset_1, offset_2, offset_3, + offset_4); + } + } + } + } + } + } + } + } + } + } + } + } // end exec_range + + private: + const PolicyType& m_policy; + const Functor& m_func; +}; + +// Specializations for tag type +template +struct DeviceIterateTile<5, PolicyType, Functor, Tag> { + using index_type = typename PolicyType::index_type; + + KOKKOS_INLINE_FUNCTION + DeviceIterateTile(const PolicyType& policy_, const Functor& f_) + : m_policy(policy_), m_func(f_) {} + + static constexpr index_type max_blocks = 65535; + + KOKKOS_INLINE_FUNCTION + void exec_range() const { + // LL + if (PolicyType::inner_direction == PolicyType::Left) { + index_type temp0 = m_policy.m_tile_end[0]; + index_type temp1 = m_policy.m_tile_end[1]; + const index_type numbl0 = (temp0 <= max_blocks ? temp0 : max_blocks); + const index_type numbl1 = + (temp0 * temp1 > max_blocks + ? index_type(max_blocks / numbl0) + : (temp1 <= max_blocks ? temp1 : max_blocks)); + + const index_type tile_id0 = + static_cast(hipBlockIdx_x) % numbl0; + const index_type tile_id1 = + static_cast(hipBlockIdx_x) / numbl0; + const index_type thr_id0 = + static_cast(hipThreadIdx_x) % m_policy.m_tile[0]; + const index_type thr_id1 = + static_cast(hipThreadIdx_x) / m_policy.m_tile[0]; + + temp0 = m_policy.m_tile_end[2]; + temp1 = m_policy.m_tile_end[3]; + const index_type numbl2 = (temp0 <= max_blocks ? temp0 : max_blocks); + const index_type numbl3 = + (temp0 * temp1 > max_blocks + ? index_type(max_blocks / numbl2) + : (temp1 <= max_blocks ? temp1 : max_blocks)); + + const index_type tile_id2 = + static_cast(hipBlockIdx_y) % numbl2; + const index_type tile_id3 = + static_cast(hipBlockIdx_y) / numbl2; + const index_type thr_id2 = + static_cast(hipThreadIdx_y) % m_policy.m_tile[2]; + const index_type thr_id3 = + static_cast(hipThreadIdx_y) / m_policy.m_tile[2]; + + for (index_type tile_id4 = static_cast(hipBlockIdx_z); + tile_id4 < m_policy.m_tile_end[4]; tile_id4 += hipGridDim_z) { + const index_type offset_4 = + tile_id4 * m_policy.m_tile[4] + + static_cast(hipThreadIdx_z) + + static_cast(m_policy.m_lower[4]); + if (offset_4 < m_policy.m_upper[4] && + static_cast(hipThreadIdx_z) < m_policy.m_tile[4]) { + for (index_type l = tile_id3; l < m_policy.m_tile_end[3]; + l += numbl3) { + const index_type offset_3 = + l * m_policy.m_tile[3] + thr_id3 + + static_cast(m_policy.m_lower[3]); + if (offset_3 < m_policy.m_upper[3] && + thr_id3 < m_policy.m_tile[3]) { + for (index_type k = tile_id2; k < m_policy.m_tile_end[2]; + k += numbl2) { + const index_type offset_2 = + k * m_policy.m_tile[2] + thr_id2 + + static_cast(m_policy.m_lower[2]); + if (offset_2 < m_policy.m_upper[2] && + thr_id2 < m_policy.m_tile[2]) { + for (index_type j = tile_id1; j < m_policy.m_tile_end[1]; + j += numbl1) { + const index_type offset_1 = + j * m_policy.m_tile[1] + thr_id1 + + static_cast(m_policy.m_lower[1]); + if (offset_1 < m_policy.m_upper[1] && + thr_id1 < m_policy.m_tile[1]) { + for (index_type i = tile_id0; i < m_policy.m_tile_end[0]; + i += numbl0) { + const index_type offset_0 = + i * m_policy.m_tile[0] + thr_id0 + + static_cast(m_policy.m_lower[0]); + if (offset_0 < m_policy.m_upper[0] && + thr_id0 < m_policy.m_tile[0]) { + m_func(Tag(), offset_0, offset_1, offset_2, offset_3, + offset_4); + } + } + } + } + } + } + } + } + } + } + } + // LR + else { + index_type temp0 = m_policy.m_tile_end[0]; + index_type temp1 = m_policy.m_tile_end[1]; + const index_type numbl1 = (temp1 <= max_blocks ? temp1 : max_blocks); + const index_type numbl0 = + (temp0 * temp1 > max_blocks + ? static_cast(max_blocks / numbl1) + : (temp0 <= max_blocks ? temp0 : max_blocks)); + + const index_type tile_id0 = + static_cast(hipBlockIdx_x) / numbl1; + const index_type tile_id1 = + static_cast(hipBlockIdx_x) % numbl1; + const index_type thr_id0 = + static_cast(hipThreadIdx_x) / m_policy.m_tile[1]; + const index_type thr_id1 = + static_cast(hipThreadIdx_x) % m_policy.m_tile[1]; + + temp0 = m_policy.m_tile_end[2]; + temp1 = m_policy.m_tile_end[3]; + const index_type numbl3 = (temp1 <= max_blocks ? temp1 : max_blocks); + const index_type numbl2 = + (temp0 * temp1 > max_blocks + ? index_type(max_blocks / numbl3) + : (temp0 <= max_blocks ? temp0 : max_blocks)); + + const index_type tile_id2 = + static_cast(hipBlockIdx_y) / numbl3; + const index_type tile_id3 = + static_cast(hipBlockIdx_y) % numbl3; + const index_type thr_id2 = + static_cast(hipThreadIdx_y) / m_policy.m_tile[3]; + const index_type thr_id3 = + static_cast(hipThreadIdx_y) % m_policy.m_tile[3]; + + for (index_type i = tile_id0; i < m_policy.m_tile_end[0]; i += numbl0) { + const index_type offset_0 = + i * m_policy.m_tile[0] + thr_id0 + + static_cast(m_policy.m_lower[0]); + if (offset_0 < m_policy.m_upper[0] && thr_id0 < m_policy.m_tile[0]) { + for (index_type j = tile_id1; j < m_policy.m_tile_end[1]; + j += numbl1) { + const index_type offset_1 = + j * m_policy.m_tile[1] + thr_id1 + + static_cast(m_policy.m_lower[1]); + if (offset_1 < m_policy.m_upper[1] && + thr_id1 < m_policy.m_tile[1]) { + for (index_type k = tile_id2; k < m_policy.m_tile_end[2]; + k += numbl2) { + const index_type offset_2 = + k * m_policy.m_tile[2] + thr_id2 + + static_cast(m_policy.m_lower[2]); + if (offset_2 < m_policy.m_upper[2] && + thr_id2 < m_policy.m_tile[2]) { + for (index_type l = tile_id3; l < m_policy.m_tile_end[3]; + l += numbl3) { + const index_type offset_3 = + l * m_policy.m_tile[3] + thr_id3 + + static_cast(m_policy.m_lower[3]); + if (offset_3 < m_policy.m_upper[3] && + thr_id3 < m_policy.m_tile[3]) { + for (index_type tile_id4 = + static_cast(hipBlockIdx_z); + tile_id4 < m_policy.m_tile_end[4]; + tile_id4 += hipGridDim_z) { + const index_type offset_4 = + tile_id4 * m_policy.m_tile[4] + + static_cast(hipThreadIdx_z) + + static_cast(m_policy.m_lower[4]); + if (offset_4 < m_policy.m_upper[4] && + static_cast(hipThreadIdx_z) < + m_policy.m_tile[4]) { + m_func(Tag(), offset_0, offset_1, offset_2, offset_3, + offset_4); + } + } + } + } + } + } + } + } + } + } + } + } // end exec_range + + private: + const PolicyType& m_policy; + const Functor& m_func; +}; + +// Rank 6 +// Specializations for void tag type +template +struct DeviceIterateTile<6, PolicyType, Functor, void> { + using index_type = typename PolicyType::index_type; + + __device__ DeviceIterateTile(const PolicyType& rp_, const Functor& f_) + : m_policy(rp_), m_func(f_) {} + + static constexpr index_type max_blocks = 65535; + + KOKKOS_INLINE_FUNCTION + void exec_range() const { + // LL + if (PolicyType::inner_direction == PolicyType::Left) { + index_type temp0 = m_policy.m_tile_end[0]; + index_type temp1 = m_policy.m_tile_end[1]; + const index_type numbl0 = (temp0 <= max_blocks ? temp0 : max_blocks); + const index_type numbl1 = + (temp0 * temp1 > max_blocks + ? static_cast(max_blocks / numbl0) + : (temp1 <= max_blocks ? temp1 : max_blocks)); + + const index_type tile_id0 = + static_cast(hipBlockIdx_x) % numbl0; + const index_type tile_id1 = + static_cast(hipBlockIdx_x) / numbl0; + const index_type thr_id0 = + static_cast(hipThreadIdx_x) % m_policy.m_tile[0]; + const index_type thr_id1 = + static_cast(hipThreadIdx_x) / m_policy.m_tile[0]; + + temp0 = m_policy.m_tile_end[2]; + temp1 = m_policy.m_tile_end[3]; + const index_type numbl2 = (temp0 <= max_blocks ? temp0 : max_blocks); + const index_type numbl3 = + (temp0 * temp1 > max_blocks + ? index_type(max_blocks / numbl2) + : (temp1 <= max_blocks ? temp1 : max_blocks)); + + const index_type tile_id2 = + static_cast(hipBlockIdx_y) % numbl2; + const index_type tile_id3 = + static_cast(hipBlockIdx_y) / numbl2; + const index_type thr_id2 = + static_cast(hipThreadIdx_y) % m_policy.m_tile[2]; + const index_type thr_id3 = + static_cast(hipThreadIdx_y) / m_policy.m_tile[2]; + + temp0 = m_policy.m_tile_end[4]; + temp1 = m_policy.m_tile_end[5]; + const index_type numbl4 = (temp0 <= max_blocks ? temp0 : max_blocks); + const index_type numbl5 = + (temp0 * temp1 > max_blocks + ? static_cast(max_blocks / numbl4) + : (temp1 <= max_blocks ? temp1 : max_blocks)); + + const index_type tile_id4 = + static_cast(hipBlockIdx_z) % numbl4; + const index_type tile_id5 = + static_cast(hipBlockIdx_z) / numbl4; + const index_type thr_id4 = + static_cast(hipThreadIdx_z) % m_policy.m_tile[4]; + const index_type thr_id5 = + static_cast(hipThreadIdx_z) / m_policy.m_tile[4]; + + for (index_type n = tile_id5; n < m_policy.m_tile_end[5]; n += numbl5) { + const index_type offset_5 = + n * m_policy.m_tile[5] + thr_id5 + + static_cast(m_policy.m_lower[5]); + if (offset_5 < m_policy.m_upper[5] && thr_id5 < m_policy.m_tile[5]) { + for (index_type m = tile_id4; m < m_policy.m_tile_end[4]; + m += numbl4) { + const index_type offset_4 = + m * m_policy.m_tile[4] + thr_id4 + + static_cast(m_policy.m_lower[4]); + if (offset_4 < m_policy.m_upper[4] && + thr_id4 < m_policy.m_tile[4]) { + for (index_type l = tile_id3; l < m_policy.m_tile_end[3]; + l += numbl3) { + const index_type offset_3 = + l * m_policy.m_tile[3] + thr_id3 + + static_cast(m_policy.m_lower[3]); + if (offset_3 < m_policy.m_upper[3] && + thr_id3 < m_policy.m_tile[3]) { + for (index_type k = tile_id2; k < m_policy.m_tile_end[2]; + k += numbl2) { + const index_type offset_2 = + k * m_policy.m_tile[2] + thr_id2 + + static_cast(m_policy.m_lower[2]); + if (offset_2 < m_policy.m_upper[2] && + thr_id2 < m_policy.m_tile[2]) { + for (index_type j = tile_id1; j < m_policy.m_tile_end[1]; + j += numbl1) { + const index_type offset_1 = + j * m_policy.m_tile[1] + thr_id1 + + static_cast(m_policy.m_lower[1]); + if (offset_1 < m_policy.m_upper[1] && + thr_id1 < m_policy.m_tile[1]) { + for (index_type i = tile_id0; + i < m_policy.m_tile_end[0]; i += numbl0) { + const index_type offset_0 = + i * m_policy.m_tile[0] + thr_id0 + + static_cast(m_policy.m_lower[0]); + if (offset_0 < m_policy.m_upper[0] && + thr_id0 < m_policy.m_tile[0]) { + m_func(offset_0, offset_1, offset_2, offset_3, + offset_4, offset_5); + } + } + } + } + } + } + } + } + } + } + } + } + } + // LR + else { + index_type temp0 = m_policy.m_tile_end[0]; + index_type temp1 = m_policy.m_tile_end[1]; + const index_type numbl1 = (temp1 <= max_blocks ? temp1 : max_blocks); + const index_type numbl0 = + (temp0 * temp1 > max_blocks + ? static_cast(max_blocks / numbl1) + : (temp0 <= max_blocks ? temp0 : max_blocks)); + + const index_type tile_id0 = + static_cast(hipBlockIdx_x) / numbl1; + const index_type tile_id1 = + static_cast(hipBlockIdx_x) % numbl1; + const index_type thr_id0 = + static_cast(hipThreadIdx_x) / m_policy.m_tile[1]; + const index_type thr_id1 = + static_cast(hipThreadIdx_x) % m_policy.m_tile[1]; + + temp0 = m_policy.m_tile_end[2]; + temp1 = m_policy.m_tile_end[3]; + const index_type numbl3 = (temp1 <= max_blocks ? temp1 : max_blocks); + const index_type numbl2 = + (temp0 * temp1 > max_blocks + ? index_type(max_blocks / numbl3) + : (temp0 <= max_blocks ? temp0 : max_blocks)); + + const index_type tile_id2 = + static_cast(hipBlockIdx_y) / numbl3; + const index_type tile_id3 = + static_cast(hipBlockIdx_y) % numbl3; + const index_type thr_id2 = + static_cast(hipThreadIdx_y) / m_policy.m_tile[3]; + const index_type thr_id3 = + static_cast(hipThreadIdx_y) % m_policy.m_tile[3]; + + temp0 = m_policy.m_tile_end[4]; + temp1 = m_policy.m_tile_end[5]; + const index_type numbl5 = (temp1 <= max_blocks ? temp1 : max_blocks); + const index_type numbl4 = + (temp0 * temp1 > max_blocks + ? index_type(max_blocks / numbl5) + : (temp0 <= max_blocks ? temp0 : max_blocks)); + + const index_type tile_id4 = + static_cast(hipBlockIdx_z) / numbl5; + const index_type tile_id5 = + static_cast(hipBlockIdx_z) % numbl5; + const index_type thr_id4 = + static_cast(hipThreadIdx_z) / m_policy.m_tile[5]; + const index_type thr_id5 = + static_cast(hipThreadIdx_z) % m_policy.m_tile[5]; + + for (index_type i = tile_id0; i < m_policy.m_tile_end[0]; i += numbl0) { + const index_type offset_0 = + i * m_policy.m_tile[0] + thr_id0 + + static_cast(m_policy.m_lower[0]); + if (offset_0 < m_policy.m_upper[0] && thr_id0 < m_policy.m_tile[0]) { + for (index_type j = tile_id1; j < m_policy.m_tile_end[1]; + j += numbl1) { + const index_type offset_1 = + j * m_policy.m_tile[1] + thr_id1 + + static_cast(m_policy.m_lower[1]); + if (offset_1 < m_policy.m_upper[1] && + thr_id1 < m_policy.m_tile[1]) { + for (index_type k = tile_id2; k < m_policy.m_tile_end[2]; + k += numbl2) { + const index_type offset_2 = + k * m_policy.m_tile[2] + thr_id2 + + static_cast(m_policy.m_lower[2]); + if (offset_2 < m_policy.m_upper[2] && + thr_id2 < m_policy.m_tile[2]) { + for (index_type l = tile_id3; l < m_policy.m_tile_end[3]; + l += numbl3) { + const index_type offset_3 = + l * m_policy.m_tile[3] + thr_id3 + + static_cast(m_policy.m_lower[3]); + if (offset_3 < m_policy.m_upper[3] && + thr_id3 < m_policy.m_tile[3]) { + for (index_type m = tile_id4; m < m_policy.m_tile_end[4]; + m += numbl4) { + const index_type offset_4 = + m * m_policy.m_tile[4] + thr_id4 + + static_cast(m_policy.m_lower[4]); + if (offset_4 < m_policy.m_upper[4] && + thr_id4 < m_policy.m_tile[4]) { + for (index_type n = tile_id5; + n < m_policy.m_tile_end[5]; n += numbl5) { + const index_type offset_5 = + n * m_policy.m_tile[5] + thr_id5 + + static_cast(m_policy.m_lower[5]); + if (offset_5 < m_policy.m_upper[5] && + thr_id5 < m_policy.m_tile[5]) { + m_func(offset_0, offset_1, offset_2, offset_3, + offset_4, offset_5); + } + } + } + } + } + } + } + } + } + } + } + } + } + } // end exec_range + + private: + const PolicyType& m_policy; + const Functor& m_func; +}; + +// Specializations for tag type +template +struct DeviceIterateTile<6, PolicyType, Functor, Tag> { + using index_type = typename PolicyType::index_type; + + KOKKOS_INLINE_FUNCTION + DeviceIterateTile(const PolicyType& policy_, const Functor& f_) + : m_policy(policy_), m_func(f_) {} + + static constexpr index_type max_blocks = 65535; + + KOKKOS_INLINE_FUNCTION + void exec_range() const { + // LL + if (PolicyType::inner_direction == PolicyType::Left) { + index_type temp0 = m_policy.m_tile_end[0]; + index_type temp1 = m_policy.m_tile_end[1]; + const index_type numbl0 = (temp0 <= max_blocks ? temp0 : max_blocks); + const index_type numbl1 = + (temp0 * temp1 > max_blocks + ? static_cast(max_blocks / numbl0) + : (temp1 <= max_blocks ? temp1 : max_blocks)); + + const index_type tile_id0 = + static_cast(hipBlockIdx_x) % numbl0; + const index_type tile_id1 = + static_cast(hipBlockIdx_x) / numbl0; + const index_type thr_id0 = + static_cast(hipThreadIdx_x) % m_policy.m_tile[0]; + const index_type thr_id1 = + static_cast(hipThreadIdx_x) / m_policy.m_tile[0]; + + temp0 = m_policy.m_tile_end[2]; + temp1 = m_policy.m_tile_end[3]; + const index_type numbl2 = (temp0 <= max_blocks ? temp0 : max_blocks); + const index_type numbl3 = + (temp0 * temp1 > max_blocks + ? static_cast(max_blocks / numbl2) + : (temp1 <= max_blocks ? temp1 : max_blocks)); + + const index_type tile_id2 = + static_cast(hipBlockIdx_y) % numbl2; + const index_type tile_id3 = + static_cast(hipBlockIdx_y) / numbl2; + const index_type thr_id2 = + static_cast(hipThreadIdx_y) % m_policy.m_tile[2]; + const index_type thr_id3 = + static_cast(hipThreadIdx_y) / m_policy.m_tile[2]; + + temp0 = m_policy.m_tile_end[4]; + temp1 = m_policy.m_tile_end[5]; + const index_type numbl4 = (temp0 <= max_blocks ? temp0 : max_blocks); + const index_type numbl5 = + (temp0 * temp1 > max_blocks + ? static_cast(max_blocks / numbl4) + : (temp1 <= max_blocks ? temp1 : max_blocks)); + + const index_type tile_id4 = + static_cast(hipBlockIdx_z) % numbl4; + const index_type tile_id5 = + static_cast(hipBlockIdx_z) / numbl4; + const index_type thr_id4 = + static_cast(hipThreadIdx_z) % m_policy.m_tile[4]; + const index_type thr_id5 = + static_cast(hipThreadIdx_z) / m_policy.m_tile[4]; + + for (index_type n = tile_id5; n < m_policy.m_tile_end[5]; n += numbl5) { + const index_type offset_5 = + n * m_policy.m_tile[5] + thr_id5 + + static_cast(m_policy.m_lower[5]); + if (offset_5 < m_policy.m_upper[5] && thr_id5 < m_policy.m_tile[5]) { + for (index_type m = tile_id4; m < m_policy.m_tile_end[4]; + m += numbl4) { + const index_type offset_4 = + m * m_policy.m_tile[4] + thr_id4 + + static_cast(m_policy.m_lower[4]); + if (offset_4 < m_policy.m_upper[4] && + thr_id4 < m_policy.m_tile[4]) { + for (index_type l = tile_id3; l < m_policy.m_tile_end[3]; + l += numbl3) { + const index_type offset_3 = + l * m_policy.m_tile[3] + thr_id3 + + static_cast(m_policy.m_lower[3]); + if (offset_3 < m_policy.m_upper[3] && + thr_id3 < m_policy.m_tile[3]) { + for (index_type k = tile_id2; k < m_policy.m_tile_end[2]; + k += numbl2) { + const index_type offset_2 = + k * m_policy.m_tile[2] + thr_id2 + + static_cast(m_policy.m_lower[2]); + if (offset_2 < m_policy.m_upper[2] && + thr_id2 < m_policy.m_tile[2]) { + for (index_type j = tile_id1; j < m_policy.m_tile_end[1]; + j += numbl1) { + const index_type offset_1 = + j * m_policy.m_tile[1] + thr_id1 + + static_cast(m_policy.m_lower[1]); + if (offset_1 < m_policy.m_upper[1] && + thr_id1 < m_policy.m_tile[1]) { + for (index_type i = tile_id0; + i < m_policy.m_tile_end[0]; i += numbl0) { + const index_type offset_0 = + i * m_policy.m_tile[0] + thr_id0 + + static_cast(m_policy.m_lower[0]); + if (offset_0 < m_policy.m_upper[0] && + thr_id0 < m_policy.m_tile[0]) { + m_func(Tag(), offset_0, offset_1, offset_2, + offset_3, offset_4, offset_5); + } + } + } + } + } + } + } + } + } + } + } + } + } + // LR + else { + index_type temp0 = m_policy.m_tile_end[0]; + index_type temp1 = m_policy.m_tile_end[1]; + const index_type numbl1 = (temp1 <= max_blocks ? temp1 : max_blocks); + const index_type numbl0 = + (temp0 * temp1 > max_blocks + ? static_cast(max_blocks / numbl1) + : (temp0 <= max_blocks ? temp0 : max_blocks)); + + const index_type tile_id0 = + static_cast(hipBlockIdx_x) / numbl1; + const index_type tile_id1 = + static_cast(hipBlockIdx_x) % numbl1; + const index_type thr_id0 = + static_cast(hipThreadIdx_x) / m_policy.m_tile[1]; + const index_type thr_id1 = + static_cast(hipThreadIdx_x) % m_policy.m_tile[1]; + + temp0 = m_policy.m_tile_end[2]; + temp1 = m_policy.m_tile_end[3]; + const index_type numbl3 = (temp1 <= max_blocks ? temp1 : max_blocks); + const index_type numbl2 = + (temp0 * temp1 > max_blocks + ? static_cast(max_blocks / numbl3) + : (temp0 <= max_blocks ? temp0 : max_blocks)); + + const index_type tile_id2 = + static_cast(hipBlockIdx_y) / numbl3; + const index_type tile_id3 = + static_cast(hipBlockIdx_y) % numbl3; + const index_type thr_id2 = + static_cast(hipThreadIdx_y) / m_policy.m_tile[3]; + const index_type thr_id3 = + static_cast(hipThreadIdx_y) % m_policy.m_tile[3]; + + temp0 = m_policy.m_tile_end[4]; + temp1 = m_policy.m_tile_end[5]; + const index_type numbl5 = (temp1 <= max_blocks ? temp1 : max_blocks); + const index_type numbl4 = + (temp0 * temp1 > max_blocks + ? static_cast(max_blocks / numbl5) + : (temp0 <= max_blocks ? temp0 : max_blocks)); + + const index_type tile_id4 = + static_cast(hipBlockIdx_z) / numbl5; + const index_type tile_id5 = + static_cast(hipBlockIdx_z) % numbl5; + const index_type thr_id4 = + static_cast(hipThreadIdx_z) / m_policy.m_tile[5]; + const index_type thr_id5 = + static_cast(hipThreadIdx_z) % m_policy.m_tile[5]; + + for (index_type i = tile_id0; i < m_policy.m_tile_end[0]; i += numbl0) { + const index_type offset_0 = + i * m_policy.m_tile[0] + thr_id0 + + static_cast(m_policy.m_lower[0]); + if (offset_0 < m_policy.m_upper[0] && thr_id0 < m_policy.m_tile[0]) { + for (index_type j = tile_id1; j < m_policy.m_tile_end[1]; + j += numbl1) { + const index_type offset_1 = + j * m_policy.m_tile[1] + thr_id1 + + static_cast(m_policy.m_lower[1]); + if (offset_1 < m_policy.m_upper[1] && + thr_id1 < m_policy.m_tile[1]) { + for (index_type k = tile_id2; k < m_policy.m_tile_end[2]; + k += numbl2) { + const index_type offset_2 = + k * m_policy.m_tile[2] + thr_id2 + + static_cast(m_policy.m_lower[2]); + if (offset_2 < m_policy.m_upper[2] && + thr_id2 < m_policy.m_tile[2]) { + for (index_type l = tile_id3; l < m_policy.m_tile_end[3]; + l += numbl3) { + const index_type offset_3 = + l * m_policy.m_tile[3] + thr_id3 + + static_cast(m_policy.m_lower[3]); + if (offset_3 < m_policy.m_upper[3] && + thr_id3 < m_policy.m_tile[3]) { + for (index_type m = tile_id4; m < m_policy.m_tile_end[4]; + m += numbl4) { + const index_type offset_4 = + m * m_policy.m_tile[4] + thr_id4 + + static_cast(m_policy.m_lower[4]); + if (offset_4 < m_policy.m_upper[4] && + thr_id4 < m_policy.m_tile[4]) { + for (index_type n = tile_id5; + n < m_policy.m_tile_end[5]; n += numbl5) { + const index_type offset_5 = + n * m_policy.m_tile[5] + thr_id5 + + static_cast(m_policy.m_lower[5]); + if (offset_5 < m_policy.m_upper[5] && + thr_id5 < m_policy.m_tile[5]) { + m_func(Tag(), offset_0, offset_1, offset_2, + offset_3, offset_4, offset_5); + } + } + } + } + } + } + } + } + } + } + } + } + } + } // end exec_range + + private: + const PolicyType& m_policy; + const Functor& m_func; +}; + +// ---------------------------------------------------------------------------------- + +namespace Reduce { + +template +using is_void = std::is_same; + +template +struct is_array_type : std::false_type { + using value_type = T; +}; + +template +struct is_array_type : std::true_type { + using value_type = T; +}; + +template +struct is_array_type : std::true_type { + using value_type = T; +}; + +// ------------------------------------------------------------------ // +template +struct DeviceIterateTile; + +// ParallelReduce iteration pattern +// Scalar reductions + +// num_blocks = min( num_tiles, max_num_blocks ); //i.e. determined by number of +// tiles and reduction algorithm constraints extract n-dim tile offsets (i.e. +// tile's global starting mulit-index) from the tileid = blockid using tile +// dimensions local indices within a tile extracted from (index_type)threadIdx_x +// using tile dims, constrained by blocksize combine tile and local id info for +// multi-dim global ids + +// Pattern: +// Each block+thread is responsible for a tile+local_id combo (additional when +// striding by num_blocks) +// 1. create offset arrays +// 2. loop over number of tiles, striding by griddim (equal to num tiles, or max +// num blocks) +// 3. temps set for tile_idx and thrd_idx, which will be modified +// 4. if LL vs LR: +// determine tile starting point offsets (multidim) +// determine local index offsets (multidim) +// concatentate tile offset + local offset for global multi-dim index +// if offset withinin range bounds AND local offset within tile bounds, call +// functor + +// ValueType = T +// Rank 2 +// Specializations for void tag type +template +struct DeviceIterateTile< + 2, PolicyType, Functor, void, ValueType, + typename std::enable_if::value>::type> { + using index_type = typename PolicyType::index_type; + + __device__ DeviceIterateTile(const PolicyType& rp_, const Functor& f_, + ValueType& v_) + : m_policy(rp_), m_func(f_), m_v(v_) {} + + KOKKOS_INLINE_FUNCTION + void exec_range() const { + if (static_cast(hipBlockIdx_x) < m_policy.m_num_tiles && + static_cast(hipThreadIdx_y) < m_policy.m_prod_tile_dims) { + index_type m_offset[PolicyType::rank]; // tile starting global id offset + index_type + m_local_offset[PolicyType::rank]; // tile starting global id offset + + for (index_type tileidx = static_cast(hipBlockIdx_x); + tileidx < m_policy.m_num_tiles; tileidx += hipGridDim_x) { + index_type tile_idx = + tileidx; // temp because tile_idx will be modified while + // determining tile starting point offsets + index_type thrd_idx = static_cast(hipThreadIdx_y); + bool in_bounds = true; + + // LL + if (PolicyType::inner_direction == PolicyType::Left) { + for (int i = 0; i < PolicyType::rank; ++i) { + // Deduce this blocks tile_id + m_offset[i] = + (tile_idx % m_policy.m_tile_end[i]) * m_policy.m_tile[i] + + m_policy.m_lower[i]; + tile_idx /= m_policy.m_tile_end[i]; + + m_local_offset[i] = (thrd_idx % m_policy.m_tile[i]); + thrd_idx /= m_policy.m_tile[i]; + + m_offset[i] += m_local_offset[i]; + if (!(m_offset[i] < m_policy.m_upper[i] && + m_local_offset[i] < m_policy.m_tile[i])) { + in_bounds &= false; + } + } + if (in_bounds) { + m_func(m_offset[0], m_offset[1], m_v); + } + } + // LR + else { + for (int i = PolicyType::rank - 1; i >= 0; --i) { + m_offset[i] = + (tile_idx % m_policy.m_tile_end[i]) * m_policy.m_tile[i] + + m_policy.m_lower[i]; + tile_idx /= m_policy.m_tile_end[i]; + + m_local_offset[i] = (thrd_idx % m_policy.m_tile[i]); + thrd_idx /= m_policy.m_tile[i]; + + m_offset[i] += m_local_offset[i]; + if (!(m_offset[i] < m_policy.m_upper[i] && + m_local_offset[i] < m_policy.m_tile[i])) { + in_bounds &= false; + } + } + if (in_bounds) { + m_func(m_offset[0], m_offset[1], m_v); + } + } + } + } + + } // end exec_range + + private: + const PolicyType& m_policy; + const Functor& m_func; + ValueType& m_v; +}; + +// Specializations for tag type +template +struct DeviceIterateTile< + 2, PolicyType, Functor, Tag, ValueType, + typename std::enable_if::value && + !is_void::value>::type> { + using index_type = typename PolicyType::index_type; + + KOKKOS_INLINE_FUNCTION + DeviceIterateTile(const PolicyType& rp_, const Functor& f_, ValueType& v_) + : m_policy(rp_), m_func(f_), m_v(v_) {} + + KOKKOS_INLINE_FUNCTION + void exec_range() const { + if (static_cast(hipBlockIdx_x) < m_policy.m_num_tiles && + static_cast(hipThreadIdx_y) < m_policy.m_prod_tile_dims) { + index_type m_offset[PolicyType::rank]; // tile starting global id offset + index_type + m_local_offset[PolicyType::rank]; // tile starting global id offset + + for (index_type tileidx = static_cast(hipBlockIdx_x); + tileidx < m_policy.m_num_tiles; tileidx += hipGridDim_x) { + index_type tile_idx = + tileidx; // temp because tile_idx will be modified while + // determining tile starting point offsets + index_type thrd_idx = static_cast(hipThreadIdx_y); + bool in_bounds = true; + + // LL + if (PolicyType::inner_direction == PolicyType::Left) { + for (int i = 0; i < PolicyType::rank; ++i) { + m_offset[i] = + (tile_idx % m_policy.m_tile_end[i]) * m_policy.m_tile[i] + + m_policy.m_lower[i]; + tile_idx /= m_policy.m_tile_end[i]; + + // tile-local indices identified with (index_type)threadIdx_y + m_local_offset[i] = (thrd_idx % m_policy.m_tile[i]); + thrd_idx /= m_policy.m_tile[i]; + + m_offset[i] += m_local_offset[i]; + if (!(m_offset[i] < m_policy.m_upper[i] && + m_local_offset[i] < m_policy.m_tile[i])) { + in_bounds &= false; + } + } + if (in_bounds) { + m_func(Tag(), m_offset[0], m_offset[1], m_v); + } + } + // LR + else { + for (int i = PolicyType::rank - 1; i >= 0; --i) { + m_offset[i] = + (tile_idx % m_policy.m_tile_end[i]) * m_policy.m_tile[i] + + m_policy.m_lower[i]; + tile_idx /= m_policy.m_tile_end[i]; + + // tile-local indices identified with (index_type)threadIdx_y + m_local_offset[i] = + (thrd_idx % + m_policy.m_tile[i]); // Move this to first computation, + // add to m_offset right away + thrd_idx /= m_policy.m_tile[i]; + + m_offset[i] += m_local_offset[i]; + if (!(m_offset[i] < m_policy.m_upper[i] && + m_local_offset[i] < m_policy.m_tile[i])) { + in_bounds &= false; + } + } + if (in_bounds) { + m_func(Tag(), m_offset[0], m_offset[1], m_v); + } + } + } + } + } // end exec_range + + private: + const PolicyType& m_policy; + const Functor& m_func; + ValueType& m_v; +}; + +// Rank 3 +// Specializations for void tag type +template +struct DeviceIterateTile< + 3, PolicyType, Functor, void, ValueType, + typename std::enable_if::value>::type> { + using index_type = typename PolicyType::index_type; + + __device__ DeviceIterateTile(const PolicyType& policy_, const Functor& f_, + ValueType& v_) + : m_policy(policy_), m_func(f_), m_v(v_) {} + + KOKKOS_INLINE_FUNCTION + void exec_range() const { + if (static_cast(hipBlockIdx_x) < m_policy.m_num_tiles && + static_cast(hipThreadIdx_y) < m_policy.m_prod_tile_dims) { + index_type m_offset[PolicyType::rank]; // tile starting global id offset + index_type + m_local_offset[PolicyType::rank]; // tile starting global id offset + + for (index_type tileidx = static_cast(hipBlockIdx_x); + tileidx < m_policy.m_num_tiles; tileidx += hipGridDim_x) { + index_type tile_idx = + tileidx; // temp because tile_idx will be modified while + // determining tile starting point offsets + index_type thrd_idx = static_cast(hipThreadIdx_y); + bool in_bounds = true; + + // LL + if (PolicyType::inner_direction == PolicyType::Left) { + for (int i = 0; i < PolicyType::rank; ++i) { + m_offset[i] = + (tile_idx % m_policy.m_tile_end[i]) * m_policy.m_tile[i] + + m_policy.m_lower[i]; + tile_idx /= m_policy.m_tile_end[i]; + + // tile-local indices identified with (index_type)threadIdx_y + m_local_offset[i] = (thrd_idx % m_policy.m_tile[i]); + thrd_idx /= m_policy.m_tile[i]; + + m_offset[i] += m_local_offset[i]; + if (!(m_offset[i] < m_policy.m_upper[i] && + m_local_offset[i] < m_policy.m_tile[i])) { + in_bounds &= false; + } + } + if (in_bounds) { + m_func(m_offset[0], m_offset[1], m_offset[2], m_v); + } + } + // LR + else { + for (int i = PolicyType::rank - 1; i >= 0; --i) { + m_offset[i] = + (tile_idx % m_policy.m_tile_end[i]) * m_policy.m_tile[i] + + m_policy.m_lower[i]; + tile_idx /= m_policy.m_tile_end[i]; + + // tile-local indices identified with (index_type)threadIdx_y + m_local_offset[i] = + (thrd_idx % + m_policy.m_tile[i]); // Move this to first computation, + // add to m_offset right away + thrd_idx /= m_policy.m_tile[i]; + + m_offset[i] += m_local_offset[i]; + if (!(m_offset[i] < m_policy.m_upper[i] && + m_local_offset[i] < m_policy.m_tile[i])) { + in_bounds &= false; + } + } + if (in_bounds) { + m_func(m_offset[0], m_offset[1], m_offset[2], m_v); + } + } + } + } + } // end exec_range + + private: + const PolicyType& m_policy; + const Functor& m_func; + ValueType& m_v; +}; + +// Specializations for void tag type +template +struct DeviceIterateTile< + 3, PolicyType, Functor, Tag, ValueType, + typename std::enable_if::value && + !is_void::value>::type> { + using index_type = typename PolicyType::index_type; + + KOKKOS_INLINE_FUNCTION + DeviceIterateTile(const PolicyType& policy_, const Functor& f_, ValueType& v_) + : m_policy(policy_), m_func(f_), m_v(v_) {} + + KOKKOS_INLINE_FUNCTION + void exec_range() const { + if (static_cast(hipBlockIdx_x) < m_policy.m_num_tiles && + static_cast(hipThreadIdx_y) < m_policy.m_prod_tile_dims) { + index_type m_offset[PolicyType::rank]; // tile starting global id offset + index_type + m_local_offset[PolicyType::rank]; // tile starting global id offset + + for (index_type tileidx = static_cast(hipBlockIdx_x); + tileidx < m_policy.m_num_tiles; tileidx += hipGridDim_x) { + index_type tile_idx = + tileidx; // temp because tile_idx will be modified while + // determining tile starting point offsets + index_type thrd_idx = static_cast(hipThreadIdx_y); + bool in_bounds = true; + + // LL + if (PolicyType::inner_direction == PolicyType::Left) { + for (int i = 0; i < PolicyType::rank; ++i) { + m_offset[i] = + (tile_idx % m_policy.m_tile_end[i]) * m_policy.m_tile[i] + + m_policy.m_lower[i]; + tile_idx /= m_policy.m_tile_end[i]; + + // tile-local indices identified with (index_type)threadIdx_y + m_local_offset[i] = (thrd_idx % m_policy.m_tile[i]); + thrd_idx /= m_policy.m_tile[i]; + + m_offset[i] += m_local_offset[i]; + if (!(m_offset[i] < m_policy.m_upper[i] && + m_local_offset[i] < m_policy.m_tile[i])) { + in_bounds &= false; + } + } + if (in_bounds) { + m_func(Tag(), m_offset[0], m_offset[1], m_offset[2], m_v); + } + } + // LR + else { + for (int i = PolicyType::rank - 1; i >= 0; --i) { + m_offset[i] = + (tile_idx % m_policy.m_tile_end[i]) * m_policy.m_tile[i] + + m_policy.m_lower[i]; + tile_idx /= m_policy.m_tile_end[i]; + + // tile-local indices identified with (index_type)threadIdx_y + m_local_offset[i] = + (thrd_idx % + m_policy.m_tile[i]); // Move this to first computation, + // add to m_offset right away + thrd_idx /= m_policy.m_tile[i]; + + m_offset[i] += m_local_offset[i]; + if (!(m_offset[i] < m_policy.m_upper[i] && + m_local_offset[i] < m_policy.m_tile[i])) { + in_bounds &= false; + } + } + if (in_bounds) { + m_func(Tag(), m_offset[0], m_offset[1], m_offset[2], m_v); + } + } + } + } + } // end exec_range + + private: + const PolicyType& m_policy; + const Functor& m_func; + ValueType& m_v; +}; + +// Rank 4 +// Specializations for void tag type +template +struct DeviceIterateTile< + 4, PolicyType, Functor, void, ValueType, + typename std::enable_if::value>::type> { + using index_type = typename PolicyType::index_type; + + __device__ DeviceIterateTile(const PolicyType& policy_, const Functor& f_, + ValueType& v_) + : m_policy(policy_), m_func(f_), m_v(v_) {} + + static constexpr index_type max_blocks = 65535; + + KOKKOS_INLINE_FUNCTION + void exec_range() const { + if (static_cast(hipBlockIdx_x) < m_policy.m_num_tiles && + static_cast(hipThreadIdx_y) < m_policy.m_prod_tile_dims) { + index_type m_offset[PolicyType::rank]; // tile starting global id offset + index_type + m_local_offset[PolicyType::rank]; // tile starting global id offset + + for (index_type tileidx = static_cast(hipBlockIdx_x); + tileidx < m_policy.m_num_tiles; tileidx += hipGridDim_x) { + index_type tile_idx = + tileidx; // temp because tile_idx will be modified while + // determining tile starting point offsets + index_type thrd_idx = static_cast(hipThreadIdx_y); + bool in_bounds = true; + + // LL + if (PolicyType::inner_direction == PolicyType::Left) { + for (int i = 0; i < PolicyType::rank; ++i) { + m_offset[i] = + (tile_idx % m_policy.m_tile_end[i]) * m_policy.m_tile[i] + + m_policy.m_lower[i]; + tile_idx /= m_policy.m_tile_end[i]; + + // tile-local indices identified with (index_type)hipThreadIdx_y + m_local_offset[i] = (thrd_idx % m_policy.m_tile[i]); + thrd_idx /= m_policy.m_tile[i]; + + m_offset[i] += m_local_offset[i]; + if (!(m_offset[i] < m_policy.m_upper[i] && + m_local_offset[i] < m_policy.m_tile[i])) { + in_bounds &= false; + } + } + if (in_bounds) { + m_func(m_offset[0], m_offset[1], m_offset[2], m_offset[3], m_v); + } + } + // LR + else { + for (int i = PolicyType::rank - 1; i >= 0; --i) { + m_offset[i] = + (tile_idx % m_policy.m_tile_end[i]) * m_policy.m_tile[i] + + m_policy.m_lower[i]; + tile_idx /= m_policy.m_tile_end[i]; + + // tile-local indices identified with (index_type)threadIdx_y + m_local_offset[i] = (thrd_idx % m_policy.m_tile[i]); + thrd_idx /= m_policy.m_tile[i]; + + m_offset[i] += m_local_offset[i]; + if (!(m_offset[i] < m_policy.m_upper[i] && + m_local_offset[i] < m_policy.m_tile[i])) { + in_bounds &= false; + } + } + if (in_bounds) { + m_func(m_offset[0], m_offset[1], m_offset[2], m_offset[3], m_v); + } + } + } + } + } // end exec_range + + private: + const PolicyType& m_policy; + const Functor& m_func; + ValueType& m_v; +}; + +// Specializations for void tag type +template +struct DeviceIterateTile< + 4, PolicyType, Functor, Tag, ValueType, + typename std::enable_if::value && + !is_void::value>::type> { + using index_type = typename PolicyType::index_type; + + KOKKOS_INLINE_FUNCTION + DeviceIterateTile(const PolicyType& policy_, const Functor& f_, ValueType& v_) + : m_policy(policy_), m_func(f_), m_v(v_) {} + + static constexpr index_type max_blocks = 65535; + + KOKKOS_INLINE_FUNCTION + void exec_range() const { + if (static_cast(hipBlockIdx_x) < m_policy.m_num_tiles && + static_cast(hipThreadIdx_y) < m_policy.m_prod_tile_dims) { + index_type m_offset[PolicyType::rank]; // tile starting global id offset + index_type + m_local_offset[PolicyType::rank]; // tile starting global id offset + + for (index_type tileidx = static_cast(hipBlockIdx_x); + tileidx < m_policy.m_num_tiles; tileidx += hipGridDim_x) { + index_type tile_idx = + tileidx; // temp because tile_idx will be modified while + // determining tile starting point offsets + index_type thrd_idx = static_cast(hipThreadIdx_y); + bool in_bounds = true; + + // LL + if (PolicyType::inner_direction == PolicyType::Left) { + for (int i = 0; i < PolicyType::rank; ++i) { + m_offset[i] = + (tile_idx % m_policy.m_tile_end[i]) * m_policy.m_tile[i] + + m_policy.m_lower[i]; + tile_idx /= m_policy.m_tile_end[i]; + + // tile-local indices identified with hipThreadIdx_y + m_local_offset[i] = (thrd_idx % m_policy.m_tile[i]); + thrd_idx /= m_policy.m_tile[i]; + + m_offset[i] += m_local_offset[i]; + if (!(m_offset[i] < m_policy.m_upper[i] && + m_local_offset[i] < m_policy.m_tile[i])) { + in_bounds &= false; + } + } + if (in_bounds) { + m_func(Tag(), m_offset[0], m_offset[1], m_offset[2], m_offset[3], + m_v); + } + } + // LR + else { + for (int i = PolicyType::rank - 1; i >= 0; --i) { + m_offset[i] = + (tile_idx % m_policy.m_tile_end[i]) * m_policy.m_tile[i] + + m_policy.m_lower[i]; + tile_idx /= m_policy.m_tile_end[i]; + + // tile-local indices identified with hipThreadIdx_y + m_local_offset[i] = (thrd_idx % m_policy.m_tile[i]); + thrd_idx /= m_policy.m_tile[i]; + + m_offset[i] += m_local_offset[i]; + if (!(m_offset[i] < m_policy.m_upper[i] && + m_local_offset[i] < m_policy.m_tile[i])) { + in_bounds &= false; + } + } + if (in_bounds) { + m_func(Tag(), m_offset[0], m_offset[1], m_offset[2], m_offset[3], + m_v); + } + } + } + } + } // end exec_range + + private: + const PolicyType& m_policy; + const Functor& m_func; + ValueType& m_v; +}; + +// Rank 5 +// Specializations for void tag type +template +struct DeviceIterateTile< + 5, PolicyType, Functor, void, ValueType, + typename std::enable_if::value>::type> { + using index_type = typename PolicyType::index_type; + + __device__ DeviceIterateTile(const PolicyType& policy_, const Functor& f_, + ValueType& v_) + : m_policy(policy_), m_func(f_), m_v(v_) {} + + static constexpr index_type max_blocks = 65535; + + KOKKOS_INLINE_FUNCTION + void exec_range() const { + if (static_cast(hipBlockIdx_x) < m_policy.m_num_tiles && + static_cast(hipThreadIdx_y) < m_policy.m_prod_tile_dims) { + index_type m_offset[PolicyType::rank]; // tile starting global id offset + index_type + m_local_offset[PolicyType::rank]; // tile starting global id offset + + for (index_type tileidx = static_cast(hipBlockIdx_x); + tileidx < m_policy.m_num_tiles; tileidx += hipGridDim_x) { + index_type tile_idx = + tileidx; // temp because tile_idx will be modified while + // determining tile starting point offsets + index_type thrd_idx = static_cast(hipThreadIdx_y); + bool in_bounds = true; + + // LL + if (PolicyType::inner_direction == PolicyType::Left) { + for (int i = 0; i < PolicyType::rank; ++i) { + m_offset[i] = + (tile_idx % m_policy.m_tile_end[i]) * m_policy.m_tile[i] + + m_policy.m_lower[i]; + tile_idx /= m_policy.m_tile_end[i]; + + // tile-local indices identified with (index_type)threadIdx_y + m_local_offset[i] = (thrd_idx % m_policy.m_tile[i]); + thrd_idx /= m_policy.m_tile[i]; + + m_offset[i] += m_local_offset[i]; + if (!(m_offset[i] < m_policy.m_upper[i] && + m_local_offset[i] < m_policy.m_tile[i])) { + in_bounds &= false; + } + } + if (in_bounds) { + m_func(m_offset[0], m_offset[1], m_offset[2], m_offset[3], + m_offset[4], m_v); + } + } + // LR + else { + for (int i = PolicyType::rank - 1; i >= 0; --i) { + m_offset[i] = + (tile_idx % m_policy.m_tile_end[i]) * m_policy.m_tile[i] + + m_policy.m_lower[i]; + tile_idx /= m_policy.m_tile_end[i]; + + // tile-local indices identified with hipThreadIdx_y + m_local_offset[i] = (thrd_idx % m_policy.m_tile[i]); + thrd_idx /= m_policy.m_tile[i]; + + m_offset[i] += m_local_offset[i]; + if (!(m_offset[i] < m_policy.m_upper[i] && + m_local_offset[i] < m_policy.m_tile[i])) { + in_bounds &= false; + } + } + if (in_bounds) { + m_func(m_offset[0], m_offset[1], m_offset[2], m_offset[3], + m_offset[4], m_v); + } + } + } + } + } // end exec_range + + private: + const PolicyType& m_policy; + const Functor& m_func; + ValueType& m_v; +}; + +// Specializations for tag type +template +struct DeviceIterateTile< + 5, PolicyType, Functor, Tag, ValueType, + typename std::enable_if::value && + !is_void::value>::type> { + using index_type = typename PolicyType::index_type; + + __device__ DeviceIterateTile(const PolicyType& policy_, const Functor& f_, + ValueType& v_) + : m_policy(policy_), m_func(f_), m_v(v_) {} + + static constexpr index_type max_blocks = 65535; + + KOKKOS_INLINE_FUNCTION + void exec_range() const { + if (static_cast(hipBlockIdx_x) < m_policy.m_num_tiles && + static_cast(hipThreadIdx_y) < m_policy.m_prod_tile_dims) { + index_type m_offset[PolicyType::rank]; // tile starting global id offset + index_type + m_local_offset[PolicyType::rank]; // tile starting global id offset + + for (index_type tileidx = static_cast(hipBlockIdx_x); + tileidx < m_policy.m_num_tiles; tileidx += hipGridDim_x) { + index_type tile_idx = + tileidx; // temp because tile_idx will be modified while + // determining tile starting point offsets + index_type thrd_idx = static_cast(hipThreadIdx_y); + bool in_bounds = true; + + // LL + if (PolicyType::inner_direction == PolicyType::Left) { + for (int i = 0; i < PolicyType::rank; ++i) { + m_offset[i] = + (tile_idx % m_policy.m_tile_end[i]) * m_policy.m_tile[i] + + m_policy.m_lower[i]; + tile_idx /= m_policy.m_tile_end[i]; + + // tile-local indices identified with hipThreadIdx_y + m_local_offset[i] = (thrd_idx % m_policy.m_tile[i]); + thrd_idx /= m_policy.m_tile[i]; + + m_offset[i] += m_local_offset[i]; + if (!(m_offset[i] < m_policy.m_upper[i] && + m_local_offset[i] < m_policy.m_tile[i])) { + in_bounds &= false; + } + } + if (in_bounds) { + m_func(Tag(), m_offset[0], m_offset[1], m_offset[2], m_offset[3], + m_offset[4], m_v); + } + } + // LR + else { + for (int i = PolicyType::rank - 1; i >= 0; --i) { + m_offset[i] = + (tile_idx % m_policy.m_tile_end[i]) * m_policy.m_tile[i] + + m_policy.m_lower[i]; + tile_idx /= m_policy.m_tile_end[i]; + + // tile-local indices identified with hipThreadIdx_y + m_local_offset[i] = (thrd_idx % m_policy.m_tile[i]); + thrd_idx /= m_policy.m_tile[i]; + + m_offset[i] += m_local_offset[i]; + if (!(m_offset[i] < m_policy.m_upper[i] && + m_local_offset[i] < m_policy.m_tile[i])) { + in_bounds &= false; + } + } + if (in_bounds) { + m_func(Tag(), m_offset[0], m_offset[1], m_offset[2], m_offset[3], + m_offset[4], m_v); + } + } + } + } + } // end exec_range + + private: + const PolicyType& m_policy; + const Functor& m_func; + ValueType& m_v; +}; + +// Rank 6 +// Specializations for void tag type +template +struct DeviceIterateTile< + 6, PolicyType, Functor, void, ValueType, + typename std::enable_if::value>::type> { + using index_type = typename PolicyType::index_type; + + __device__ DeviceIterateTile(const PolicyType& policy_, const Functor& f_, + ValueType& v_) + : m_policy(policy_), m_func(f_), m_v(v_) {} + + static constexpr index_type max_blocks = 65535; + + KOKKOS_INLINE_FUNCTION + void exec_range() const { + if (static_cast(hipBlockIdx_x) < m_policy.m_num_tiles && + static_cast(hipThreadIdx_y) < m_policy.m_prod_tile_dims) { + index_type m_offset[PolicyType::rank]; // tile starting global id offset + index_type + m_local_offset[PolicyType::rank]; // tile starting global id offset + + for (index_type tileidx = static_cast(hipBlockIdx_x); + tileidx < m_policy.m_num_tiles; tileidx += hipGridDim_x) { + index_type tile_idx = + tileidx; // temp because tile_idx will be modified while + // determining tile starting point offsets + index_type thrd_idx = static_cast(hipThreadIdx_y); + bool in_bounds = true; + + // LL + if (PolicyType::inner_direction == PolicyType::Left) { + for (int i = 0; i < PolicyType::rank; ++i) { + m_offset[i] = + (tile_idx % m_policy.m_tile_end[i]) * m_policy.m_tile[i] + + m_policy.m_lower[i]; + tile_idx /= m_policy.m_tile_end[i]; + + // tile-local indices identified with hipThreadIdx_y + m_local_offset[i] = (thrd_idx % m_policy.m_tile[i]); + thrd_idx /= m_policy.m_tile[i]; + + m_offset[i] += m_local_offset[i]; + if (!(m_offset[i] < m_policy.m_upper[i] && + m_local_offset[i] < m_policy.m_tile[i])) { + in_bounds &= false; + } + } + if (in_bounds) { + m_func(m_offset[0], m_offset[1], m_offset[2], m_offset[3], + m_offset[4], m_offset[5], m_v); + } + } + // LR + else { + for (int i = PolicyType::rank - 1; i >= 0; --i) { + m_offset[i] = + (tile_idx % m_policy.m_tile_end[i]) * m_policy.m_tile[i] + + m_policy.m_lower[i]; + tile_idx /= m_policy.m_tile_end[i]; + + // tile-local indices identified with hipThreadIdx_y + m_local_offset[i] = (thrd_idx % m_policy.m_tile[i]); + thrd_idx /= m_policy.m_tile[i]; + + m_offset[i] += m_local_offset[i]; + if (!(m_offset[i] < m_policy.m_upper[i] && + m_local_offset[i] < m_policy.m_tile[i])) { + in_bounds &= false; + } + } + if (in_bounds) { + m_func(m_offset[0], m_offset[1], m_offset[2], m_offset[3], + m_offset[4], m_offset[5], m_v); + } + } + } + } + } // end exec_range + + private: + const PolicyType& m_policy; + const Functor& m_func; + ValueType& m_v; +}; + +// Specializations for tag type +template +struct DeviceIterateTile< + 6, PolicyType, Functor, Tag, ValueType, + typename std::enable_if::value && + !is_void::value>::type> { + using index_type = typename PolicyType::index_type; + + __device__ DeviceIterateTile(const PolicyType& rp_, const Functor& f_, + ValueType& v_) + : m_policy(rp_), m_func(f_), m_v(v_) {} + + static constexpr index_type max_blocks = 65535; + + KOKKOS_INLINE_FUNCTION + void exec_range() const { + if (static_cast(hipBlockIdx_x) < m_policy.m_num_tiles && + static_cast(hipThreadIdx_y) < m_policy.m_prod_tile_dims) { + index_type m_offset[PolicyType::rank]; // tile starting global id offset + index_type + m_local_offset[PolicyType::rank]; // tile starting global id offset + + for (index_type tileidx = static_cast(hipBlockIdx_x); + tileidx < m_policy.m_num_tiles; tileidx += hipGridDim_x) { + index_type tile_idx = + tileidx; // temp because tile_idx will be modified while + // determining tile starting point offsets + index_type thrd_idx = static_cast(hipThreadIdx_y); + bool in_bounds = true; + + // LL + if (PolicyType::inner_direction == PolicyType::Left) { + for (int i = 0; i < PolicyType::rank; ++i) { + m_offset[i] = + (tile_idx % m_policy.m_tile_end[i]) * m_policy.m_tile[i] + + m_policy.m_lower[i]; + tile_idx /= m_policy.m_tile_end[i]; + + // tile-local indices identified with (index_type)threadIdx_y + m_local_offset[i] = (thrd_idx % m_policy.m_tile[i]); + thrd_idx /= m_policy.m_tile[i]; + + m_offset[i] += m_local_offset[i]; + if (!(m_offset[i] < m_policy.m_upper[i] && + m_local_offset[i] < m_policy.m_tile[i])) { + in_bounds &= false; + } + } + if (in_bounds) { + m_func(Tag(), m_offset[0], m_offset[1], m_offset[2], m_offset[3], + m_offset[4], m_offset[5], m_v); + } + } + // LR + else { + for (int i = PolicyType::rank - 1; i >= 0; --i) { + m_offset[i] = + (tile_idx % m_policy.m_tile_end[i]) * m_policy.m_tile[i] + + m_policy.m_lower[i]; + tile_idx /= m_policy.m_tile_end[i]; + + // tile-local indices identified with (index_type)threadIdx_y + m_local_offset[i] = (thrd_idx % m_policy.m_tile[i]); + thrd_idx /= m_policy.m_tile[i]; + + m_offset[i] += m_local_offset[i]; + if (!(m_offset[i] < m_policy.m_upper[i] && + m_local_offset[i] < m_policy.m_tile[i])) { + in_bounds &= false; + } + } + if (in_bounds) { + m_func(Tag(), m_offset[0], m_offset[1], m_offset[2], m_offset[3], + m_offset[4], m_offset[5], m_v); + } + } + } + } + } // end exec_range + + private: + const PolicyType& m_policy; + const Functor& m_func; + ValueType& m_v; +}; + +// ValueType = T[], T* +// Rank 2 +// Specializations for void tag type +template +struct DeviceIterateTile< + 2, PolicyType, Functor, void, ValueType, + typename std::enable_if::value>::type> { + using index_type = typename PolicyType::index_type; + using value_type = typename is_array_type::value_type; + + __device__ DeviceIterateTile(const PolicyType& policy_, const Functor& f_, + value_type* v_) + : m_policy(policy_), m_func(f_), m_v(v_) {} + + KOKKOS_INLINE_FUNCTION + void exec_range() const { + if (static_cast(hipBlockIdx_x) < m_policy.m_num_tiles && + static_cast(hipThreadIdx_y) < m_policy.m_prod_tile_dims) { + index_type m_offset[PolicyType::rank]; // tile starting global id offset + index_type + m_local_offset[PolicyType::rank]; // tile starting global id offset + + for (index_type tileidx = static_cast(hipBlockIdx_x); + tileidx < m_policy.m_num_tiles; tileidx += hipGridDim_x) { + index_type tile_idx = + tileidx; // temp because tile_idx will be modified while + // determining tile starting point offsets + index_type thrd_idx = static_cast(hipThreadIdx_y); + bool in_bounds = true; + + // LL + if (PolicyType::inner_direction == PolicyType::Left) { + for (int i = 0; i < PolicyType::rank; ++i) { + m_offset[i] = + (tile_idx % m_policy.m_tile_end[i]) * m_policy.m_tile[i] + + m_policy.m_lower[i]; + tile_idx /= m_policy.m_tile_end[i]; + + m_local_offset[i] = (thrd_idx % m_policy.m_tile[i]); + thrd_idx /= m_policy.m_tile[i]; + + m_offset[i] += m_local_offset[i]; + if (!(m_offset[i] < m_policy.m_upper[i] && + m_local_offset[i] < m_policy.m_tile[i])) { + in_bounds &= false; + } + } + if (in_bounds) { + m_func(m_offset[0], m_offset[1], m_v); + } + } + // LR + else { + for (int i = PolicyType::rank - 1; i >= 0; --i) { + m_offset[i] = + (tile_idx % m_policy.m_tile_end[i]) * m_policy.m_tile[i] + + m_policy.m_lower[i]; + tile_idx /= m_policy.m_tile_end[i]; + + // tile-local indices identified with (index_type)threadIdx_y + m_local_offset[i] = + (thrd_idx % + m_policy.m_tile[i]); // Move this to first computation, + // add to m_offset right away + thrd_idx /= m_policy.m_tile[i]; + + m_offset[i] += m_local_offset[i]; + if (!(m_offset[i] < m_policy.m_upper[i] && + m_local_offset[i] < m_policy.m_tile[i])) { + in_bounds &= false; + } + } + if (in_bounds) { + m_func(m_offset[0], m_offset[1], m_v); + } + } + } + } + } // end exec_range + + private: + const PolicyType& m_policy; + const Functor& m_func; + value_type* m_v; +}; + +// Specializations for tag type +template +struct DeviceIterateTile< + 2, PolicyType, Functor, Tag, ValueType, + typename std::enable_if::value && + !is_void::value>::type> { + using index_type = typename PolicyType::index_type; + using value_type = typename is_array_type::value_type; + + KOKKOS_INLINE_FUNCTION + DeviceIterateTile(const PolicyType& rp_, const Functor& f_, value_type* v_) + : m_policy(rp_), m_func(f_), m_v(v_) {} + + KOKKOS_INLINE_FUNCTION + void exec_range() const { + if (static_cast(hipBlockIdx_x) < m_policy.m_num_tiles && + static_cast(hipThreadIdx_y) < m_policy.m_prod_tile_dims) { + index_type m_offset[PolicyType::rank]; // tile starting global id offset + index_type + m_local_offset[PolicyType::rank]; // tile starting global id offset + + for (index_type tileidx = static_cast(hipBlockIdx_x); + tileidx < m_policy.m_num_tiles; tileidx += hipGridDim_x) { + index_type tile_idx = + tileidx; // temp because tile_idx will be modified while + // determining tile starting point offsets + index_type thrd_idx = static_cast(hipThreadIdx_y); + bool in_bounds = true; + + // LL + if (PolicyType::inner_direction == PolicyType::Left) { + for (int i = 0; i < PolicyType::rank; ++i) { + m_offset[i] = + (tile_idx % m_policy.m_tile_end[i]) * m_policy.m_tile[i] + + m_policy.m_lower[i]; + tile_idx /= m_policy.m_tile_end[i]; + + // tile-local indices identified with (index_type)threadIdx_y + m_local_offset[i] = (thrd_idx % m_policy.m_tile[i]); + thrd_idx /= m_policy.m_tile[i]; + + m_offset[i] += m_local_offset[i]; + if (!(m_offset[i] < m_policy.m_upper[i] && + m_local_offset[i] < m_policy.m_tile[i])) { + in_bounds &= false; + } + } + if (in_bounds) { + m_func(Tag(), m_offset[0], m_offset[1], m_v); + } + } + // LR + else { + for (int i = PolicyType::rank - 1; i >= 0; --i) { + m_offset[i] = + (tile_idx % m_policy.m_tile_end[i]) * m_policy.m_tile[i] + + m_policy.m_lower[i]; + tile_idx /= m_policy.m_tile_end[i]; + + // tile-local indices identified with (index_type)threadIdx_y + m_local_offset[i] = (thrd_idx % m_policy.m_tile[i]); + thrd_idx /= m_policy.m_tile[i]; + + m_offset[i] += m_local_offset[i]; + if (!(m_offset[i] < m_policy.m_upper[i] && + m_local_offset[i] < m_policy.m_tile[i])) { + in_bounds &= false; + } + } + if (in_bounds) { + m_func(Tag(), m_offset[0], m_offset[1], m_v); + } + } + } // end for loop over num_tiles - product of tiles in each direction + } + } // end exec_range + + private: + const PolicyType& m_policy; + const Functor& m_func; + value_type* m_v; +}; + +// Rank 3 +// Specializations for void tag type +template +struct DeviceIterateTile< + 3, PolicyType, Functor, void, ValueType, + typename std::enable_if::value>::type> { + using index_type = typename PolicyType::index_type; + using value_type = typename is_array_type::value_type; + + KOKKOS_INLINE_FUNCTION + DeviceIterateTile(const PolicyType& policy_, const Functor& f_, + value_type* v_) + : m_policy(policy_), m_func(f_), m_v(v_) {} + + KOKKOS_INLINE_FUNCTION + void exec_range() const { + if (static_cast(hipBlockIdx_x) < m_policy.m_num_tiles && + static_cast(hipThreadIdx_y) < m_policy.m_prod_tile_dims) { + index_type m_offset[PolicyType::rank]; // tile starting global id offset + index_type + m_local_offset[PolicyType::rank]; // tile starting global id offset + + for (index_type tileidx = static_cast(hipBlockIdx_x); + tileidx < m_policy.m_num_tiles; tileidx += hipGridDim_x) { + index_type tile_idx = + tileidx; // temp because tile_idx will be modified while + // determining tile starting point offsets + index_type thrd_idx = static_cast(hipThreadIdx_y); + bool in_bounds = true; + + // LL + if (PolicyType::inner_direction == PolicyType::Left) { + for (int i = 0; i < PolicyType::rank; ++i) { + m_offset[i] = + (tile_idx % m_policy.m_tile_end[i]) * m_policy.m_tile[i] + + m_policy.m_lower[i]; + tile_idx /= m_policy.m_tile_end[i]; + + // tile-local indices identified with (index_type)threadIdx_y + m_local_offset[i] = + (thrd_idx % + m_policy.m_tile[i]); // Move this to first computation, + // add to m_offset right away + thrd_idx /= m_policy.m_tile[i]; + + m_offset[i] += m_local_offset[i]; + if (!(m_offset[i] < m_policy.m_upper[i] && + m_local_offset[i] < m_policy.m_tile[i])) { + in_bounds &= false; + } + } + if (in_bounds) { + m_func(m_offset[0], m_offset[1], m_offset[2], m_v); + } + } + // LR + else { + for (int i = PolicyType::rank - 1; i >= 0; --i) { + m_offset[i] = + (tile_idx % m_policy.m_tile_end[i]) * m_policy.m_tile[i] + + m_policy.m_lower[i]; + tile_idx /= m_policy.m_tile_end[i]; + + // tile-local indices identified with (index_type)threadIdx_y + m_local_offset[i] = + (thrd_idx % + m_policy.m_tile[i]); // Move this to first computation, + // add to m_offset right away + thrd_idx /= m_policy.m_tile[i]; + + m_offset[i] += m_local_offset[i]; + if (!(m_offset[i] < m_policy.m_upper[i] && + m_local_offset[i] < m_policy.m_tile[i])) { + in_bounds &= false; + } + } + if (in_bounds) { + m_func(m_offset[0], m_offset[1], m_offset[2], m_v); + } + } + } + } + } // end exec_range + + private: + const PolicyType& m_policy; + const Functor& m_func; + value_type* m_v; +}; + +// Specializations for void tag type +template +struct DeviceIterateTile< + 3, PolicyType, Functor, Tag, ValueType, + typename std::enable_if::value && + !is_void::value>::type> { + using index_type = typename PolicyType::index_type; + using value_type = typename is_array_type::value_type; + + KOKKOS_INLINE_FUNCTION + DeviceIterateTile(const PolicyType& policy_, const Functor& f_, + value_type* v_) + : m_policy(policy_), m_func(f_), m_v(v_) {} + + KOKKOS_INLINE_FUNCTION + void exec_range() const { + if (static_cast(hipBlockIdx_x) < m_policy.m_num_tiles && + static_cast(hipThreadIdx_y) < m_policy.m_prod_tile_dims) { + index_type m_offset[PolicyType::rank]; // tile starting global id offset + index_type + m_local_offset[PolicyType::rank]; // tile starting global id offset + + for (index_type tileidx = static_cast(hipBlockIdx_x); + tileidx < m_policy.m_num_tiles; tileidx += hipGridDim_x) { + index_type tile_idx = + tileidx; // temp because tile_idx will be modified while + // determining tile starting point offsets + index_type thrd_idx = static_cast(hipThreadIdx_y); + bool in_bounds = true; + + // LL + if (PolicyType::inner_direction == PolicyType::Left) { + for (int i = 0; i < PolicyType::rank; ++i) { + m_offset[i] = + (tile_idx % m_policy.m_tile_end[i]) * m_policy.m_tile[i] + + m_policy.m_lower[i]; + tile_idx /= m_policy.m_tile_end[i]; + + // tile-local indices identified with hipThreadIdx_y + m_local_offset[i] = (thrd_idx % m_policy.m_tile[i]); + thrd_idx /= m_policy.m_tile[i]; + + m_offset[i] += m_local_offset[i]; + if (!(m_offset[i] < m_policy.m_upper[i] && + m_local_offset[i] < m_policy.m_tile[i])) { + in_bounds &= false; + } + } + if (in_bounds) { + m_func(Tag(), m_offset[0], m_offset[1], m_offset[2], m_v); + } + } + // LR + else { + for (int i = PolicyType::rank - 1; i >= 0; --i) { + m_offset[i] = + (tile_idx % m_policy.m_tile_end[i]) * m_policy.m_tile[i] + + m_policy.m_lower[i]; + tile_idx /= m_policy.m_tile_end[i]; + + // tile-local indices identified with (index_type)threadIdx_y + m_local_offset[i] = (thrd_idx % m_policy.m_tile[i]); + thrd_idx /= m_policy.m_tile[i]; + + m_offset[i] += m_local_offset[i]; + if (!(m_offset[i] < m_policy.m_upper[i] && + m_local_offset[i] < m_policy.m_tile[i])) { + in_bounds &= false; + } + } + if (in_bounds) { + m_func(Tag(), m_offset[0], m_offset[1], m_offset[2], m_v); + } + } + } + } + } // end exec_range + + private: + const PolicyType& m_policy; + const Functor& m_func; + value_type* m_v; +}; + +// Rank 4 +// Specializations for void tag type +template +struct DeviceIterateTile< + 4, PolicyType, Functor, void, ValueType, + typename std::enable_if::value>::type> { + using index_type = typename PolicyType::index_type; + using value_type = typename is_array_type::value_type; + + KOKKOS_INLINE_FUNCTION + DeviceIterateTile(const PolicyType& policy_, const Functor& f_, + value_type* v_) + : m_policy(policy_), m_func(f_), m_v(v_) {} + + static constexpr index_type max_blocks = 65535; + + KOKKOS_INLINE_FUNCTION + void exec_range() const { + if (static_cast(hipBlockIdx_x) < m_policy.m_num_tiles && + static_cast(hipThreadIdx_y) < m_policy.m_prod_tile_dims) { + index_type m_offset[PolicyType::rank]; // tile starting global id offset + index_type + m_local_offset[PolicyType::rank]; // tile starting global id offset + + for (index_type tileidx = static_cast(hipBlockIdx_x); + tileidx < m_policy.m_num_tiles; tileidx += hipGridDim_x) { + index_type tile_idx = + tileidx; // temp because tile_idx will be modified while + // determining tile starting point offsets + index_type thrd_idx = static_cast(hipThreadIdx_y); + bool in_bounds = true; + + // LL + if (PolicyType::inner_direction == PolicyType::Left) { + for (int i = 0; i < PolicyType::rank; ++i) { + m_offset[i] = + (tile_idx % m_policy.m_tile_end[i]) * m_policy.m_tile[i] + + m_policy.m_lower[i]; + tile_idx /= m_policy.m_tile_end[i]; + + // tile-local indices identified with hipThreadIdx_y + m_local_offset[i] = (thrd_idx % m_policy.m_tile[i]); + thrd_idx /= m_policy.m_tile[i]; + + m_offset[i] += m_local_offset[i]; + if (!(m_offset[i] < m_policy.m_upper[i] && + m_local_offset[i] < m_policy.m_tile[i])) { + in_bounds &= false; + } + } + if (in_bounds) { + m_func(m_offset[0], m_offset[1], m_offset[2], m_offset[3], m_v); + } + } + // LR + else { + for (int i = PolicyType::rank - 1; i >= 0; --i) { + m_offset[i] = + (tile_idx % m_policy.m_tile_end[i]) * m_policy.m_tile[i] + + m_policy.m_lower[i]; + tile_idx /= m_policy.m_tile_end[i]; + + // tile-local indices identified with hipThreadIdx_y + m_local_offset[i] = (thrd_idx % m_policy.m_tile[i]); + thrd_idx /= m_policy.m_tile[i]; + + m_offset[i] += m_local_offset[i]; + if (!(m_offset[i] < m_policy.m_upper[i] && + m_local_offset[i] < m_policy.m_tile[i])) { + in_bounds &= false; + } + } + if (in_bounds) { + m_func(m_offset[0], m_offset[1], m_offset[2], m_offset[3], m_v); + } + } + } + } + } // end exec_range + + private: + const PolicyType& m_policy; + const Functor& m_func; + value_type* m_v; +}; + +// Specializations for void tag type +template +struct DeviceIterateTile< + 4, PolicyType, Functor, Tag, ValueType, + typename std::enable_if::value && + !is_void::value>::type> { + using index_type = typename PolicyType::index_type; + using value_type = typename is_array_type::value_type; + + KOKKOS_INLINE_FUNCTION + DeviceIterateTile(const PolicyType& policy_, const Functor& f_, + value_type* v_) + : m_policy(policy_), m_func(f_), m_v(v_) {} + + static constexpr index_type max_blocks = 65535; + + KOKKOS_INLINE_FUNCTION + void exec_range() const { + if (static_cast(hipBlockIdx_x) < m_policy.m_num_tiles && + static_cast(hipThreadIdx_y) < m_policy.m_prod_tile_dims) { + index_type m_offset[PolicyType::rank]; // tile starting global id offset + index_type + m_local_offset[PolicyType::rank]; // tile starting global id offset + + for (index_type tileidx = static_cast(hipBlockIdx_x); + tileidx < m_policy.m_num_tiles; tileidx += hipGridDim_x) { + index_type tile_idx = + tileidx; // temp because tile_idx will be modified while + // determining tile starting point offsets + index_type thrd_idx = static_cast(hipThreadIdx_y); + bool in_bounds = true; + + // LL + if (PolicyType::inner_direction == PolicyType::Left) { + for (int i = 0; i < PolicyType::rank; ++i) { + m_offset[i] = + (tile_idx % m_policy.m_tile_end[i]) * m_policy.m_tile[i] + + m_policy.m_lower[i]; + tile_idx /= m_policy.m_tile_end[i]; + + // tile-local indices identified with (index_type)threadIdx_y + m_local_offset[i] = (thrd_idx % m_policy.m_tile[i]); + thrd_idx /= m_policy.m_tile[i]; + + m_offset[i] += m_local_offset[i]; + if (!(m_offset[i] < m_policy.m_upper[i] && + m_local_offset[i] < m_policy.m_tile[i])) { + in_bounds &= false; + } + } + if (in_bounds) { + m_func(Tag(), m_offset[0], m_offset[1], m_offset[2], m_offset[3], + m_v); + } + } + // LR + else { + for (int i = PolicyType::rank - 1; i >= 0; --i) { + m_offset[i] = + (tile_idx % m_policy.m_tile_end[i]) * m_policy.m_tile[i] + + m_policy.m_lower[i]; + tile_idx /= m_policy.m_tile_end[i]; + + // tile-local indices identified with (index_type)threadIdx_y + m_local_offset[i] = (thrd_idx % m_policy.m_tile[i]); + thrd_idx /= m_policy.m_tile[i]; + + m_offset[i] += m_local_offset[i]; + if (!(m_offset[i] < m_policy.m_upper[i] && + m_local_offset[i] < m_policy.m_tile[i])) { + in_bounds &= false; + } + } + if (in_bounds) { + m_func(Tag(), m_offset[0], m_offset[1], m_offset[2], m_offset[3], + m_v); + } + } + } + } + } // end exec_range + + private: + const PolicyType& m_policy; + const Functor& m_func; + value_type* m_v; +}; + +// Rank 5 +// Specializations for void tag type +template +struct DeviceIterateTile< + 5, PolicyType, Functor, void, ValueType, + typename std::enable_if::value>::type> { + using index_type = typename PolicyType::index_type; + using value_type = typename is_array_type::value_type; + + KOKKOS_INLINE_FUNCTION + DeviceIterateTile(const PolicyType& policy_, const Functor& f_, + value_type* v_) + : m_policy(policy_), m_func(f_), m_v(v_) {} + + static constexpr index_type max_blocks = 65535; + + KOKKOS_INLINE_FUNCTION + void exec_range() const { + if (static_cast(hipBlockIdx_x) < m_policy.m_num_tiles && + static_cast(hipThreadIdx_y) < m_policy.m_prod_tile_dims) { + index_type m_offset[PolicyType::rank]; // tile starting global id offset + index_type + m_local_offset[PolicyType::rank]; // tile starting global id offset + + for (index_type tileidx = static_cast(hipBlockIdx_x); + tileidx < m_policy.m_num_tiles; tileidx += hipGridDim_x) { + index_type tile_idx = + tileidx; // temp because tile_idx will be modified while + // determining tile starting point offsets + index_type thrd_idx = static_cast(hipThreadIdx_y); + bool in_bounds = true; + + // LL + if (PolicyType::inner_direction == PolicyType::Left) { + for (int i = 0; i < PolicyType::rank; ++i) { + m_offset[i] = + (tile_idx % m_policy.m_tile_end[i]) * m_policy.m_tile[i] + + m_policy.m_lower[i]; + tile_idx /= m_policy.m_tile_end[i]; + + // tile-local indices identified with hipThreadIdx_y + m_local_offset[i] = (thrd_idx % m_policy.m_tile[i]); + thrd_idx /= m_policy.m_tile[i]; + + m_offset[i] += m_local_offset[i]; + if (!(m_offset[i] < m_policy.m_upper[i] && + m_local_offset[i] < m_policy.m_tile[i])) { + in_bounds &= false; + } + } + if (in_bounds) { + m_func(m_offset[0], m_offset[1], m_offset[2], m_offset[3], + m_offset[4], m_v); + } + } + // LR + else { + for (int i = PolicyType::rank - 1; i >= 0; --i) { + m_offset[i] = + (tile_idx % m_policy.m_tile_end[i]) * m_policy.m_tile[i] + + m_policy.m_lower[i]; + tile_idx /= m_policy.m_tile_end[i]; + + // tile-local indices identified with hipThreadIdx_y + m_local_offset[i] = (thrd_idx % m_policy.m_tile[i]); + thrd_idx /= m_policy.m_tile[i]; + + m_offset[i] += m_local_offset[i]; + if (!(m_offset[i] < m_policy.m_upper[i] && + m_local_offset[i] < m_policy.m_tile[i])) { + in_bounds &= false; + } + } + if (in_bounds) { + m_func(m_offset[0], m_offset[1], m_offset[2], m_offset[3], + m_offset[4], m_v); + } + } + } + } + } // end exec_range + + private: + const PolicyType& m_policy; + const Functor& m_func; + value_type* m_v; +}; + +// Specializations for tag type +template +struct DeviceIterateTile< + 5, PolicyType, Functor, Tag, ValueType, + typename std::enable_if::value && + !is_void::value>::type> { + using index_type = typename PolicyType::index_type; + using value_type = typename is_array_type::value_type; + + KOKKOS_INLINE_FUNCTION + DeviceIterateTile(const PolicyType& policy_, const Functor& f_, + value_type* v_) + : m_policy(policy_), m_func(f_), m_v(v_) {} + + static constexpr index_type max_blocks = 65535; + + KOKKOS_INLINE_FUNCTION + void exec_range() const { + if (static_cast(hipBlockIdx_x) < m_policy.m_num_tiles && + static_cast(hipThreadIdx_y) < m_policy.m_prod_tile_dims) { + index_type m_offset[PolicyType::rank]; // tile starting global id offset + index_type + m_local_offset[PolicyType::rank]; // tile starting global id offset + + for (index_type tileidx = static_cast(hipBlockIdx_x); + tileidx < m_policy.m_num_tiles; tileidx += hipGridDim_x) { + index_type tile_idx = + tileidx; // temp because tile_idx will be modified while + // determining tile starting point offsets + index_type thrd_idx = static_cast(hipThreadIdx_y); + bool in_bounds = true; + + // LL + if (PolicyType::inner_direction == PolicyType::Left) { + for (int i = 0; i < PolicyType::rank; ++i) { + m_offset[i] = + (tile_idx % m_policy.m_tile_end[i]) * m_policy.m_tile[i] + + m_policy.m_lower[i]; + tile_idx /= m_policy.m_tile_end[i]; + + // tile-local indices identified with hipThreadIdx_y + m_local_offset[i] = (thrd_idx % m_policy.m_tile[i]); + thrd_idx /= m_policy.m_tile[i]; + + m_offset[i] += m_local_offset[i]; + if (!(m_offset[i] < m_policy.m_upper[i] && + m_local_offset[i] < m_policy.m_tile[i])) { + in_bounds &= false; + } + } + if (in_bounds) { + m_func(Tag(), m_offset[0], m_offset[1], m_offset[2], m_offset[3], + m_offset[4], m_v); + } + } + // LR + else { + for (int i = PolicyType::rank - 1; i >= 0; --i) { + m_offset[i] = + (tile_idx % m_policy.m_tile_end[i]) * m_policy.m_tile[i] + + m_policy.m_lower[i]; + tile_idx /= m_policy.m_tile_end[i]; + + // tile-local indices identified with hipThreadIdx_y + m_local_offset[i] = (thrd_idx % m_policy.m_tile[i]); + thrd_idx /= m_policy.m_tile[i]; + + m_offset[i] += m_local_offset[i]; + if (!(m_offset[i] < m_policy.m_upper[i] && + m_local_offset[i] < m_policy.m_tile[i])) { + in_bounds &= false; + } + } + if (in_bounds) { + m_func(Tag(), m_offset[0], m_offset[1], m_offset[2], m_offset[3], + m_offset[4], m_v); + } + } + } + } + } // end exec_range + + private: + const PolicyType& m_policy; + const Functor& m_func; + value_type* m_v; +}; + +// Rank 6 +// Specializations for void tag type +template +struct DeviceIterateTile< + 6, PolicyType, Functor, void, ValueType, + typename std::enable_if::value>::type> { + using index_type = typename PolicyType::index_type; + using value_type = typename is_array_type::value_type; + + KOKKOS_INLINE_FUNCTION + DeviceIterateTile(const PolicyType& policy_, const Functor& f_, + value_type* v_) + : m_policy(policy_), m_func(f_), m_v(v_) {} + + static constexpr index_type max_blocks = 65535; + + KOKKOS_INLINE_FUNCTION + void exec_range() const { + if (static_cast(hipBlockIdx_x) < m_policy.m_num_tiles && + static_cast(hipThreadIdx_y) < m_policy.m_prod_tile_dims) { + index_type m_offset[PolicyType::rank]; // tile starting global id offset + index_type + m_local_offset[PolicyType::rank]; // tile starting global id offset + + for (index_type tileidx = static_cast(hipBlockIdx_x); + tileidx < m_policy.m_num_tiles; tileidx += hipGridDim_x) { + index_type tile_idx = + tileidx; // temp because tile_idx will be modified while + // determining tile starting point offsets + index_type thrd_idx = static_cast(hipThreadIdx_y); + bool in_bounds = true; + + // LL + if (PolicyType::inner_direction == PolicyType::Left) { + for (int i = 0; i < PolicyType::rank; ++i) { + m_offset[i] = + (tile_idx % m_policy.m_tile_end[i]) * m_policy.m_tile[i] + + m_policy.m_lower[i]; + tile_idx /= m_policy.m_tile_end[i]; + + // tile-local indices identified with hipThreadIdx_y + m_local_offset[i] = (thrd_idx % m_policy.m_tile[i]); + thrd_idx /= m_policy.m_tile[i]; + + m_offset[i] += m_local_offset[i]; + if (!(m_offset[i] < m_policy.m_upper[i] && + m_local_offset[i] < m_policy.m_tile[i])) { + in_bounds &= false; + } + } + if (in_bounds) { + m_func(m_offset[0], m_offset[1], m_offset[2], m_offset[3], + m_offset[4], m_offset[5], m_v); + } + } + // LR + else { + for (int i = PolicyType::rank - 1; i >= 0; --i) { + m_offset[i] = + (tile_idx % m_policy.m_tile_end[i]) * m_policy.m_tile[i] + + m_policy.m_lower[i]; + tile_idx /= m_policy.m_tile_end[i]; + + // tile-local indices identified with hipThreadIdx_y + m_local_offset[i] = (thrd_idx % m_policy.m_tile[i]); + thrd_idx /= m_policy.m_tile[i]; + + m_offset[i] += m_local_offset[i]; + if (!(m_offset[i] < m_policy.m_upper[i] && + m_local_offset[i] < m_policy.m_tile[i])) { + in_bounds &= false; + } + } + if (in_bounds) { + m_func(m_offset[0], m_offset[1], m_offset[2], m_offset[3], + m_offset[4], m_offset[5], m_v); + } + } + } + } + } // end exec_range + + private: + const PolicyType& m_policy; + const Functor& m_func; + value_type* m_v; +}; + +// Specializations for tag type +template +struct DeviceIterateTile< + 6, PolicyType, Functor, Tag, ValueType, + typename std::enable_if::value && + !is_void::value>::type> { + using index_type = typename PolicyType::index_type; + using value_type = typename is_array_type::value_type; + + KOKKOS_INLINE_FUNCTION + DeviceIterateTile(const PolicyType& policy_, const Functor& f_, + value_type* v_) + : m_policy(policy_), m_func(f_), m_v(v_) {} + + static constexpr index_type max_blocks = 65535; + + KOKKOS_INLINE_FUNCTION + void exec_range() const { + if (static_cast(hipBlockIdx_x) < m_policy.m_num_tiles && + static_cast(hipThreadIdx_y) < m_policy.m_prod_tile_dims) { + index_type m_offset[PolicyType::rank]; // tile starting global id offset + index_type + m_local_offset[PolicyType::rank]; // tile starting global id offset + + for (index_type tileidx = static_cast(hipBlockIdx_x); + tileidx < m_policy.m_num_tiles; tileidx += hipGridDim_x) { + index_type tile_idx = + tileidx; // temp because tile_idx will be modified while + // determining tile starting point offsets + index_type thrd_idx = static_cast(hipThreadIdx_y); + bool in_bounds = true; + + // LL + if (PolicyType::inner_direction == PolicyType::Left) { + for (int i = 0; i < PolicyType::rank; ++i) { + m_offset[i] = + (tile_idx % m_policy.m_tile_end[i]) * m_policy.m_tile[i] + + m_policy.m_lower[i]; + tile_idx /= m_policy.m_tile_end[i]; + + // tile-local indices identified with hipThreadIdx_y + m_local_offset[i] = (thrd_idx % m_policy.m_tile[i]); + thrd_idx /= m_policy.m_tile[i]; + + m_offset[i] += m_local_offset[i]; + if (!(m_offset[i] < m_policy.m_upper[i] && + m_local_offset[i] < m_policy.m_tile[i])) { + in_bounds &= false; + } + } + if (in_bounds) { + m_func(Tag(), m_offset[0], m_offset[1], m_offset[2], m_offset[3], + m_offset[4], m_offset[5], m_v); + } + } + // LR + else { + for (int i = PolicyType::rank - 1; i >= 0; --i) { + m_offset[i] = + (tile_idx % m_policy.m_tile_end[i]) * m_policy.m_tile[i] + + m_policy.m_lower[i]; + tile_idx /= m_policy.m_tile_end[i]; + + // tile-local indices identified with hipThreadIdx_y + m_local_offset[i] = (thrd_idx % m_policy.m_tile[i]); + thrd_idx /= m_policy.m_tile[i]; + + m_offset[i] += m_local_offset[i]; + if (!(m_offset[i] < m_policy.m_upper[i] && + m_local_offset[i] < m_policy.m_tile[i])) { + in_bounds &= false; + } + } + if (in_bounds) { + m_func(Tag(), m_offset[0], m_offset[1], m_offset[2], m_offset[3], + m_offset[4], m_offset[5], m_v); + } + } + } + } + } // end exec_range + + private: + const PolicyType& m_policy; + const Functor& m_func; + value_type* m_v; +}; + +} // namespace Reduce +} // namespace Impl +} // namespace Kokkos +#endif +#endif diff --git a/lib/kokkos/core/src/HIP/Kokkos_HIP_Abort.hpp b/lib/kokkos/core/src/HIP/Kokkos_HIP_Abort.hpp new file mode 100644 index 0000000000..1eaae38302 --- /dev/null +++ b/lib/kokkos/core/src/HIP/Kokkos_HIP_Abort.hpp @@ -0,0 +1,68 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// 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 NTESS "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 NTESS 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_HIP_ABORT_HPP +#define KOKKOS_HIP_ABORT_HPP + +#include +#if defined(KOKKOS_ENABLE_HIP) + +#include + +namespace Kokkos { +namespace Impl { + +__device__ inline void hip_abort(char const *msg) { + printf("%s", msg); + // FIXME_HIP both abort and the __assertfail system call are currently + // implemented with __builtin_trap which causes the program to exit abnormally + // without printing the error message. + // abort(); +} + +} // namespace Impl +} // namespace Kokkos + +#endif +#endif diff --git a/lib/kokkos/core/src/HIP/Kokkos_HIP_Atomic.hpp b/lib/kokkos/core/src/HIP/Kokkos_HIP_Atomic.hpp new file mode 100644 index 0000000000..c09e09f500 --- /dev/null +++ b/lib/kokkos/core/src/HIP/Kokkos_HIP_Atomic.hpp @@ -0,0 +1,576 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// 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 NTESS "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 NTESS 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_HIP_ATOMIC_HPP +#define KOKKOS_HIP_ATOMIC_HPP + +#ifdef KOKKOS_ENABLE_HIP_ATOMICS + +namespace Kokkos { +// HIP can do: +// Types int/unsigned int +// variants: +// atomic_exchange/compare_exchange/fetch_add/fetch_sub/fetch_max/fetch_min/fetch_and/fetch_or/fetch_xor/fetch_inc/fetch_dec + +// atomic_exchange ------------------------------------------------------------- + +__inline__ __device__ int atomic_exchange(volatile int *const dest, + const int val) { + return atomicExch(const_cast(dest), val); +} + +__inline__ __device__ unsigned int atomic_exchange( + volatile unsigned int *const dest, const unsigned int val) { + return atomicExch(const_cast(dest), val); +} + +__inline__ __device__ unsigned long long int atomic_exchange( + volatile unsigned long long int *const dest, + const unsigned long long int val) { + return atomicExch(const_cast(dest), val); +} + +__inline__ __device__ float atomic_exchange(volatile float *const dest, + const float val) { + return atomicExch(const_cast(dest), val); +} + +template +__inline__ __device__ T atomic_exchange( + volatile T *const dest, + typename std::enable_if::type val) { + int tmp = atomicExch(reinterpret_cast(const_cast(dest)), + *reinterpret_cast(const_cast(&val))); + return reinterpret_cast(tmp); +} + +template +__inline__ __device__ T atomic_exchange( + volatile T *const dest, + typename std::enable_if::type val) { + typedef unsigned long long int type; + + type tmp = atomicExch(reinterpret_cast(const_cast(dest)), + *reinterpret_cast(const_cast(&val))); + return reinterpret_cast(tmp); +} + +template +__inline__ __device__ T +atomic_exchange(volatile T *const dest, + typename std::enable_if::type &val) { + // FIXME_HIP + Kokkos::abort("atomic_exchange not implemented for large types.\n"); + T return_val; + int done = 0; + unsigned int active = __ballot(1); + unsigned int done_active = 0; + while (active != done_active) { + if (!done) { + // if (Impl::lock_address_hip_space((void*)dest)) + { + return_val = *dest; + *dest = val; + // Impl::unlock_address_hip_space((void*)dest); + done = 1; + } + } + done_active = __ballot(done); + } + return return_val; +} + +// atomic_assign --------------------------------------------------------------- + +template +__inline__ __device__ void atomic_assign( + volatile T *const dest, + typename std::enable_if::type val) { + atomicExch(reinterpret_cast(const_cast(dest)), + *reinterpret_cast(const_cast(&val))); +} + +template +__inline__ __device__ void atomic_assign( + volatile T *const dest, + typename std::enable_if::type val) { + typedef unsigned long long int type; + atomicExch(reinterpret_cast(const_cast(dest)), + *reinterpret_cast(const_cast(&val))); +} + +template +__inline__ __device__ void atomic_assign( + volatile T *const dest, + typename std::enable_if::type val) { + atomic_exchange(dest, val); +} + +// atomic_compare_exchange ----------------------------------------------------- + +inline __device__ int atomic_compare_exchange(volatile int *dest, int compare, + const int &val) { + return atomicCAS(const_cast(dest), compare, val); +} + +inline __device__ unsigned int atomic_compare_exchange( + volatile unsigned int *dest, unsigned int compare, + const unsigned int &val) { + return atomicCAS(const_cast(dest), compare, val); +} + +inline __device__ unsigned long long int atomic_compare_exchange( + volatile unsigned long long int *dest, unsigned long long int compare, + const unsigned long long int &val) { + return atomicCAS(const_cast(dest), compare, val); +} + +template +__inline__ __device__ T atomic_compare_exchange( + volatile T *dest, T compare, + typename std::enable_if::type val) { + // FIXME_HIP UB + union U { + int i; + T f; + __inline__ __device__ U() {} + } idest, icompare, ival; + icompare.f = compare; + ival.f = val; + idest.i = atomicCAS(reinterpret_cast(const_cast(dest)), + icompare.i, ival.i); + return idest.f; +} + +template +__inline__ __device__ T atomic_compare_exchange( + volatile T *dest, T compare, + typename std::enable_if::type val) { + // FIXME_HIP UB + union U { + unsigned long long int i; + T f; + __inline__ __device__ U() {} + } idest, icompare, ival; + icompare.f = compare; + ival.f = val; + idest.i = atomicCAS( + reinterpret_cast(const_cast(dest)), + icompare.i, ival.i); + return idest.f; +} + +template +__inline__ __device__ T atomic_compare_exchange( + volatile T *const dest, const T &compare, + typename std::enable_if::type &val) { + // FIXME_HIP + Kokkos::abort("atomic_compare_exchange not implemented for large types.\n"); + T return_val; + int done = 0; + unsigned int active = __ballot(1); + unsigned int done_active = 0; + while (active != done_active) { + if (!done) { + // if (Impl::lock_address_hip_space((void*)dest)) + { + return_val = *dest; + if (return_val == compare) *dest = val; + // Impl::unlock_address_hip_space((void*)dest); + done = 1; + } + } + done_active = __ballot(done); + } + return return_val; +} + +// atomic_fetch_add ------------------------------------------------------------ + +inline __device__ int atomic_fetch_add(volatile int *dest, const int &val) { + return atomicAdd(const_cast(dest), val); +} + +inline __device__ unsigned int atomic_fetch_add(volatile unsigned int *dest, + const unsigned int &val) { + return atomicAdd(const_cast(dest), val); +} + +inline __device__ unsigned long long atomic_fetch_add( + volatile unsigned long long *dest, const unsigned long long &val) { + return atomicAdd(const_cast(dest), val); +} + +inline __device__ float atomic_fetch_add(volatile float *dest, + const float &val) { + return atomicAdd(const_cast(dest), val); +} + +template +inline __device__ T atomic_fetch_add( + volatile T *const dest, + typename std::enable_if::type val) { + // FIXME_HIP UB + union U { + int i; + T t; + __inline__ __device__ U() {} + } assume, oldval, newval; + + oldval.t = *dest; + + do { + assume.i = oldval.i; + newval.t = assume.t + val; + oldval.i = atomicCAS(reinterpret_cast(const_cast(dest)), + assume.i, newval.i); + } while (assume.i != oldval.i); + + return oldval.t; +} + +template +inline __device__ T atomic_fetch_add( + volatile T *const dest, + typename std::enable_if::type + val) { + // FIXME_HIP UB + union U { + unsigned long long i; + T t; + __inline__ __device__ U() {} + } assume, oldval, newval; + + oldval.t = *dest; + + do { + assume.i = oldval.i; + newval.t = assume.t + val; + oldval.i = atomic_compare_exchange( + reinterpret_cast(dest), assume.i, + newval.i); + } while (assume.i != oldval.i); + + return oldval.t; +} + +__inline__ __device__ char atomic_fetch_add(volatile char *dest, + const char &val) { + unsigned int oldval, newval, assume; + oldval = *reinterpret_cast(&dest); + + do { + assume = oldval; + newval = assume & 0x7fffff00 + ((assume & 0xff) + val) & 0xff; + oldval = + atomicCAS(reinterpret_cast(const_cast(dest)), + assume, newval); + } while (assume != oldval); + + return oldval; +} + +__inline__ __device__ short atomic_fetch_add(volatile short *dest, + const short &val) { + unsigned int oldval, newval, assume; + oldval = *reinterpret_cast(&dest); + + do { + assume = oldval; + newval = assume & 0x7fff0000 + ((assume & 0xffff) + val) & 0xffff; + oldval = + atomicCAS(reinterpret_cast(const_cast(dest)), + assume, newval); + } while (assume != oldval); + + return oldval; +} + +__inline__ __device__ long long atomic_fetch_add(volatile long long *dest, + const long long &val) { + return atomicAdd( + reinterpret_cast(const_cast(dest)), + val); +} + +template +__inline__ __device__ T +atomic_fetch_add(volatile T *dest, + typename std::enable_if::type val) { + // FIXME_HIP + Kokkos::abort("atomic_fetch_add not implemented for large types.\n"); + T return_val; + int done = 0; + unsigned int active = __ballot(1); + unsigned int done_active = 0; + while (active != done_active) { + if (!done) { + // if(Kokkos::Impl::lock_address_hip_space((void *)dest)) + { + return_val = *dest; + *dest = return_val + val; + // Kokkos::Impl::unlock_address_hip_space((void *)dest); + done = 1; + } + } + done_active = __ballot(done); + } + return return_val; +} + +// atmic_fetch_sub ------------------------------------------------------------- + +__inline__ __device__ int atomic_fetch_sub(volatile int *dest, int const &val) { + return atomicSub(const_cast(dest), val); +} + +__inline__ __device__ unsigned int atomic_fetch_sub(volatile unsigned int *dest, + unsigned int const &val) { + return atomicSub(const_cast(dest), val); +} + +__inline__ __device__ unsigned long long atomic_fetch_sub( + unsigned long long *dest, int64_t const &val) { + return atomicAdd(reinterpret_cast(dest), + -reinterpret_cast(val)); +} + +__inline__ __device__ char atomic_fetch_sub(volatile char *dest, + const char &val) { + unsigned int oldval, newval, assume; + oldval = *reinterpret_cast(dest); + + do { + assume = oldval; + newval = assume & 0x7fffff00 + ((assume & 0xff) - val) & 0xff; + oldval = + atomicCAS(reinterpret_cast(const_cast(dest)), + assume, newval); + } while (assume != oldval); + + return oldval; +} + +__inline__ __device__ short atomic_fetch_sub(volatile short *dest, + const short &val) { + unsigned int oldval, newval, assume; + oldval = *reinterpret_cast(dest); + + do { + assume = oldval; + newval = assume & 0x7fff0000 + ((assume & 0xffff) - val) & 0xffff; + oldval = + atomicCAS(reinterpret_cast(const_cast(dest)), + assume, newval); + } while (assume != oldval); + + return oldval; +} + +__inline__ __device__ long long atomic_fetch_sub(volatile long long *dest, + const long long &val) { + return static_cast(atomicAdd( + reinterpret_cast(const_cast(dest)), + -reinterpret_cast(val))); +} + +template +__inline__ __device__ T atomic_fetch_sub( + volatile T *dest, + typename std::enable_if::type val) { + // FIXME_HIP UB + union U { + int i; + T t; + __inline__ __device__ U() {} + } assume, oldval, newval; + + oldval.t = *dest; + + do { + assume.i = oldval.i; + newval.t = assume.t - val; + oldval.i = atomic_compare_exchange(reinterpret_cast(dest), + assume.i, newval.i); + } while (assume.i != oldval.i); + + return oldval.t; +} + +template +inline __device__ T atomic_fetch_sub( + volatile T *const dest, + typename std::enable_if::type + val) { + // FIXME_HIP UB + union U { + unsigned long long i; + T t; + __inline__ __device__ U() {} + } assume, oldval, newval; + + oldval.t = *dest; + + do { + assume.i = oldval.i; + newval.t = assume.t - val; + oldval.i = atomic_compare_exchange( + reinterpret_cast(dest), assume.i, + newval.i); + } while (assume.i != oldval.i); + + return oldval.t; +} + +template +__inline__ __device__ T atomic_fetch_sub( + volatile T *dest, + typename std::enable_if::type val) { + unsigned int oldval, newval, assume; + oldval = *reinterpret_cast(dest); + + do { + assume = oldval; + newval = assume & 0x7fffff00 + ((assume & 0xff) - val) & 0xff; + oldval = atomicCAS(reinterpret_cast(dest), assume, newval); + } while (assume != oldval); + + return reinterpret_cast(oldval) & 0xff; +} + +template +__inline__ __device__ T atomic_fetch_sub( + volatile T *dest, + typename std::enable_if::type val) { + unsigned int oldval, newval, assume; + oldval = *reinterpret_cast(dest); + + do { + assume = oldval; + newval = assume & 0x7fff0000 + ((assume & 0xffff) - val) & 0xffff; + oldval = atomicCAS(reinterpret_cast(dest), assume, newval); + } while (assume != oldval); + + return reinterpret_cast(oldval) & 0xffff; +} + +template +__inline__ __device__ T +atomic_fetch_sub(volatile T *const dest, + typename std::enable_if::type &val) { + // FIXME_HIP + Kokkos::abort("atomic_fetch_sub not implemented for large types.\n"); + T return_val; + int done = 0; + unsigned int active = __ballot(1); + unsigned int done_active = 0; + while (active != done_active) { + if (!done) { + /*if (Impl::lock_address_hip_space((void*)dest)) */ + { + return_val = *dest; + *dest = return_val - val; + // Impl::unlock_address_hip_space((void*)dest); + done = 1; + } + } + done_active = __ballot(done); + } + return return_val; +} + +// atomic_fetch_or ------------------------------------------------------------- + +__inline__ __device__ int atomic_fetch_or(volatile int *const dest, + int const val) { + return atomicOr(const_cast(dest), val); +} + +__inline__ __device__ unsigned int atomic_fetch_or( + volatile unsigned int *const dest, unsigned int const val) { + return atomicOr(const_cast(dest), val); +} + +__inline__ __device__ unsigned long long int atomic_fetch_or( + volatile unsigned long long int *const dest, + unsigned long long int const val) { + return atomicOr(const_cast(dest), val); +} + +// atomic_fetch_and ------------------------------------------------------------ + +__inline__ __device__ int atomic_fetch_and(volatile int *const dest, + int const val) { + return atomicAnd(const_cast(dest), val); +} + +__inline__ __device__ unsigned int atomic_fetch_and( + volatile unsigned int *const dest, unsigned int const val) { + return atomicAnd(const_cast(dest), val); +} + +__inline__ __device__ unsigned long long int atomic_fetch_and( + volatile unsigned long long int *const dest, + unsigned long long int const val) { + return atomicAnd(const_cast(dest), val); +} +} // namespace Kokkos +#endif + +#endif diff --git a/lib/kokkos/core/src/HIP/Kokkos_HIP_BlockSize_Deduction.hpp b/lib/kokkos/core/src/HIP/Kokkos_HIP_BlockSize_Deduction.hpp new file mode 100644 index 0000000000..8799d359ff --- /dev/null +++ b/lib/kokkos/core/src/HIP/Kokkos_HIP_BlockSize_Deduction.hpp @@ -0,0 +1,339 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// 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 NTESS "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 NTESS 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_HIP_BLOCKSIZE_DEDUCTION_HPP +#define KOKKOS_HIP_BLOCKSIZE_DEDUCTION_HPP + +#include + +#if defined(__HIPCC__) + +#include +#include + +namespace Kokkos { +namespace Experimental { +namespace Impl { +template +struct HIPGetMaxBlockSize; + +template +int hip_get_max_block_size(typename DriverType::functor_type const &f, + size_t const vector_length, + size_t const shmem_extra_block, + size_t const shmem_extra_thread) { + return HIPGetMaxBlockSize::get_block_size( + f, vector_length, shmem_extra_block, shmem_extra_thread); +} + +template +int hip_get_max_block_size(const HIPInternal * /*hip_instance*/, + const hipFuncAttributes &attr, + const FunctorType & /*f*/, + const size_t /*vector_length*/, + const size_t /*shmem_block*/, + const size_t /*shmem_thread*/) { + // FIXME_HIP find a better algorithm. Be aware that + // maxThreadsPerMultiProcessor, regsPerBlock, and l2CacheSize are bugged and + // always return zero + // https://github.com/ROCm-Developer-Tools/HIP/blob/6c5fa32815650cc20a4f783d09b013610348a4d5/include/hip/hcc_detail/hip_runtime_api.h#L438-L440 + // and we don't have access to the same information than we do for CUDA + + int const max_threads_per_block_mi60 = 1024; + int const max_threads_per_block = LaunchBounds::maxTperB == 0 + ? max_threads_per_block_mi60 + : LaunchBounds::maxTperB; + return std::min(attr.maxThreadsPerBlock, max_threads_per_block); +} + +template +struct HIPGetMaxBlockSize, true> { + static int get_block_size(typename DriverType::functor_type const &f, + size_t const vector_length, + size_t const shmem_extra_block, + size_t const shmem_extra_thread) { + unsigned int numBlocks = 0; + int blockSize = 1024; + int sharedmem = + shmem_extra_block + shmem_extra_thread * (blockSize / vector_length) + + ::Kokkos::Impl::FunctorTeamShmemSize< + typename DriverType::functor_type>::value(f, blockSize / + vector_length); + hipOccupancyMaxActiveBlocksPerMultiprocessor( + &numBlocks, hip_parallel_launch_constant_memory, blockSize, + sharedmem); + + if (numBlocks > 0) return blockSize; + while (blockSize > HIPTraits::WarpSize && numBlocks == 0) { + blockSize /= 2; + sharedmem = + shmem_extra_block + shmem_extra_thread * (blockSize / vector_length) + + ::Kokkos::Impl::FunctorTeamShmemSize< + typename DriverType::functor_type>::value(f, blockSize / + vector_length); + + hipOccupancyMaxActiveBlocksPerMultiprocessor( + &numBlocks, hip_parallel_launch_constant_memory, + blockSize, sharedmem); + } + int blockSizeUpperBound = blockSize * 2; + while (blockSize < blockSizeUpperBound && numBlocks > 0) { + blockSize += HIPTraits::WarpSize; + sharedmem = + shmem_extra_block + shmem_extra_thread * (blockSize / vector_length) + + ::Kokkos::Impl::FunctorTeamShmemSize< + typename DriverType::functor_type>::value(f, blockSize / + vector_length); + + hipOccupancyMaxActiveBlocksPerMultiprocessor( + &numBlocks, hip_parallel_launch_constant_memory, + blockSize, sharedmem); + } + return blockSize - HIPTraits::WarpSize; + } +}; + +template +struct HIPGetOptBlockSize; + +template +int hip_get_opt_block_size(typename DriverType::functor_type const &f, + size_t const vector_length, + size_t const shmem_extra_block, + size_t const shmem_extra_thread) { + return HIPGetOptBlockSize< + DriverType, LaunchBounds, + (HIPTraits::ConstantMemoryUseThreshold < + sizeof(DriverType))>::get_block_size(f, vector_length, shmem_extra_block, + shmem_extra_thread); +} + +template +int hip_get_opt_block_size(HIPInternal const * /*hip_instance*/, + hipFuncAttributes const &attr, + FunctorType const & /*f*/, + size_t const /*vector_length*/, + size_t const /*shmem_block*/, + size_t const /*shmem_thread*/) { + // FIXME_HIP find a better algorithm. Be aware that + // maxThreadsPerMultiProcessor, regsPerBlock, and l2CacheSize are bugged and + // always return zero + // https://github.com/ROCm-Developer-Tools/HIP/blob/6c5fa32815650cc20a4f783d09b013610348a4d5/include/hip/hcc_detail/hip_runtime_api.h#L438-L440 + // and we don't have access to the same information than we do for CUDA + + int const max_threads_per_block_mi60 = 1024; + int const max_threads_per_block = LaunchBounds::maxTperB == 0 + ? max_threads_per_block_mi60 + : LaunchBounds::maxTperB; + return std::min(attr.maxThreadsPerBlock, max_threads_per_block); +} + +// FIXME_HIP the code is identical to the false struct except for +// hip_parallel_launch_constant_memory +template +struct HIPGetOptBlockSize, true> { + static int get_block_size(typename DriverType::functor_type const &f, + size_t const vector_length, + size_t const shmem_extra_block, + size_t const shmem_extra_thread) { + int blockSize = HIPTraits::WarpSize / 2; + int numBlocks; + int sharedmem; + int maxOccupancy = 0; + int bestBlockSize = 0; + + while (blockSize < 1024) { + blockSize *= 2; + + // calculate the occupancy with that optBlockSize and check whether its + // larger than the largest one found so far + sharedmem = + shmem_extra_block + shmem_extra_thread * (blockSize / vector_length) + + ::Kokkos::Impl::FunctorTeamShmemSize< + typename DriverType::functor_type>::value(f, blockSize / + vector_length); + hipOccupancyMaxActiveBlocksPerMultiprocessor( + &numBlocks, hip_parallel_launch_constant_memory, + blockSize, sharedmem); + if (maxOccupancy < numBlocks * blockSize) { + maxOccupancy = numBlocks * blockSize; + bestBlockSize = blockSize; + } + } + return bestBlockSize; + } +}; + +template +struct HIPGetOptBlockSize, 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 = HIPTraits::WarpSize / 2; + int numBlocks; + int sharedmem; + int maxOccupancy = 0; + int bestBlockSize = 0; + + while (blockSize < 1024) { + blockSize *= 2; + sharedmem = + shmem_extra_block + shmem_extra_thread * (blockSize / vector_length) + + ::Kokkos::Impl::FunctorTeamShmemSize< + typename DriverType::functor_type>::value(f, blockSize / + vector_length); + + hipOccupancyMaxActiveBlocksPerMultiprocessor( + &numBlocks, hip_parallel_launch_local_memory, blockSize, + sharedmem); + + if (maxOccupancy < numBlocks * blockSize) { + maxOccupancy = numBlocks * blockSize; + bestBlockSize = blockSize; + } + } + return bestBlockSize; + } +}; + +// FIXME_HIP the code is identical to the false struct except for +// hip_parallel_launch_constant_memory +template +struct HIPGetOptBlockSize< + DriverType, Kokkos::LaunchBounds, + 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 = HIPTraits::WarpSize / 2; + int numBlocks; + int sharedmem; + int maxOccupancy = 0; + int bestBlockSize = 0; + int max_threads_per_block = + std::min(MaxThreadsPerBlock, + hip_internal_maximum_warp_count() * HIPTraits::WarpSize); + + while (blockSize < max_threads_per_block) { + blockSize *= 2; + + // calculate the occupancy with that optBlockSize and check whether its + // larger than the largest one found so far + sharedmem = + shmem_extra_block + shmem_extra_thread * (blockSize / vector_length) + + ::Kokkos::Impl::FunctorTeamShmemSize< + typename DriverType::functor_type>::value(f, blockSize / + vector_length); + hipOccupancyMaxActiveBlocksPerMultiprocessor( + &numBlocks, + hip_parallel_launch_constant_memory, + blockSize, sharedmem); + if (numBlocks >= static_cast(MinBlocksPerSM) && + blockSize <= static_cast(MaxThreadsPerBlock)) { + if (maxOccupancy < numBlocks * blockSize) { + maxOccupancy = numBlocks * blockSize; + bestBlockSize = blockSize; + } + } + } + if (maxOccupancy > 0) return bestBlockSize; + return -1; + } +}; + +template +struct HIPGetOptBlockSize< + DriverType, Kokkos::LaunchBounds, + 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 = HIPTraits::WarpSize / 2; + int numBlocks; + int sharedmem; + int maxOccupancy = 0; + int bestBlockSize = 0; + int max_threads_per_block = + std::min(MaxThreadsPerBlock, + hip_internal_maximum_warp_count() * HIPTraits::WarpSize); + + while (blockSize < max_threads_per_block) { + blockSize *= 2; + sharedmem = + shmem_extra_block + shmem_extra_thread * (blockSize / vector_length) + + ::Kokkos::Impl::FunctorTeamShmemSize< + typename DriverType::functor_type>::value(f, blockSize / + vector_length); + + hipOccupancyMaxActiveBlocksPerMultiprocessor( + &numBlocks, + hip_parallel_launch_local_memory, + blockSize, sharedmem); + if (numBlocks >= int(MinBlocksPerSM) && + blockSize <= int(MaxThreadsPerBlock)) { + if (maxOccupancy < numBlocks * blockSize) { + maxOccupancy = numBlocks * blockSize; + bestBlockSize = blockSize; + } + } + } + if (maxOccupancy > 0) return bestBlockSize; + return -1; + } +}; + +} // namespace Impl +} // namespace Experimental +} // namespace Kokkos + +#endif + +#endif diff --git a/lib/kokkos/core/unit_test/qthreads/TestQthreads_ViewAPI_b.cpp b/lib/kokkos/core/src/HIP/Kokkos_HIP_Error.hpp similarity index 50% rename from lib/kokkos/core/unit_test/qthreads/TestQthreads_ViewAPI_b.cpp rename to lib/kokkos/core/src/HIP/Kokkos_HIP_Error.hpp index b37937369a..2abded0e99 100644 --- a/lib/kokkos/core/unit_test/qthreads/TestQthreads_ViewAPI_b.cpp +++ b/lib/kokkos/core/src/HIP/Kokkos_HIP_Error.hpp @@ -42,91 +42,69 @@ //@HEADER */ -#include +#ifndef KOKKOS_HIP_ERROR_HPP +#define KOKKOS_HIP_ERROR_HPP -namespace Test { +#include +#include -TEST_F(qthreads, impl_shared_alloc) { -#if 0 - test_shared_alloc< Kokkos::HostSpace, Kokkos::Qthreads >(); -#endif -} - -TEST_F(qthreads, impl_view_mapping_b) { -#if 0 - test_view_mapping_subview< Kokkos::Qthreads >(); - TestViewMappingAtomic< Kokkos::Qthreads >::run(); -#endif -} +#include -TEST_F(qthreads, view_api) { -#if 0 - TestViewAPI< double, Kokkos::Qthreads >(); -#endif -} +#include -TEST_F(qthreads, view_nested_view) { -#if 0 - ::Test::view_nested_view< Kokkos::Qthreads >(); -#endif -} +namespace Kokkos { +namespace Impl { -TEST_F(qthreads, view_remap) { -#if 0 - enum { N0 = 3, N1 = 2, N2 = 8, N3 = 9 }; +void hip_internal_error_throw(hipError_t e, const char* name, + const char* file = NULL, const int line = 0); - typedef Kokkos::View< double*[N1][N2][N3], - Kokkos::LayoutRight, - Kokkos::Qthreads > output_type; +inline void hip_internal_safe_call(hipError_t e, const char* name, + const char* file = NULL, + const int line = 0) { + if (hipSuccess != e) { + hip_internal_error_throw(e, name, file, line); + } +} - typedef Kokkos::View< int**[N2][N3], - Kokkos::LayoutLeft, - Kokkos::Qthreads > input_type; +} // namespace Impl +} // namespace Kokkos - typedef Kokkos::View< int*[N0][N2][N3], - Kokkos::LayoutLeft, - Kokkos::Qthreads > diff_type; +#define HIP_SAFE_CALL(call) \ + Kokkos::Impl::hip_internal_safe_call(call, #call, __FILE__, __LINE__) - output_type output( "output", N0 ); - input_type input ( "input", N0, N1 ); - diff_type diff ( "diff", N0 ); +namespace Kokkos { +namespace Experimental { - int value = 0; +class HIPRawMemoryAllocationFailure : public RawMemoryAllocationFailure { + private: + hipError_t m_error_code = hipSuccess; - for ( size_t i3 = 0; i3 < N3; ++i3 ) - for ( size_t i2 = 0; i2 < N2; ++i2 ) - for ( size_t i1 = 0; i1 < N1; ++i1 ) - for ( size_t i0 = 0; i0 < N0; ++i0 ) - { - input( i0, i1, i2, i3 ) = ++value; + static FailureMode get_failure_mode(hipError_t error_code) { + switch (error_code) { + case hipErrorMemoryAllocation: return FailureMode::OutOfMemoryError; + case hipErrorInvalidValue: return FailureMode::InvalidAllocationSize; + default: return FailureMode::Unknown; + } } - // Kokkos::deep_copy( diff, input ); // Throw with incompatible shape. - Kokkos::deep_copy( output, input ); - - value = 0; - - for ( size_t i3 = 0; i3 < N3; ++i3 ) - for ( size_t i2 = 0; i2 < N2; ++i2 ) - for ( size_t i1 = 0; i1 < N1; ++i1 ) - for ( size_t i0 = 0; i0 < N0; ++i0 ) - { - ++value; - ASSERT_EQ( value, ( (int) output( i0, i1, i2, i3 ) ) ); + public: + HIPRawMemoryAllocationFailure(size_t arg_attempted_size, + hipError_t arg_error_code, + AllocationMechanism arg_mechanism) noexcept + : RawMemoryAllocationFailure( + arg_attempted_size, /* HIPSpace doesn't handle alignment? */ 1, + get_failure_mode(arg_error_code), arg_mechanism), + m_error_code(arg_error_code) {} + + void append_additional_error_information(std::ostream& o) const override { + if (m_error_code != hipSuccess) { + o << " The HIP allocation returned the error code \"\"" + << hipGetErrorName(m_error_code) << "\"."; + } } -#endif -} +}; -TEST_F(qthreads, view_aggregate) { -#if 0 - TestViewAggregate< Kokkos::Qthreads >(); -#endif -} +} // namespace Experimental +} // namespace Kokkos -TEST_F(qthreads, template_meta_functions) { -#if 0 - TestTemplateMetaFunctions< int, Kokkos::Qthreads >(); #endif -} - -} // namespace Test diff --git a/lib/kokkos/core/src/HIP/Kokkos_HIP_Instance.cpp b/lib/kokkos/core/src/HIP/Kokkos_HIP_Instance.cpp new file mode 100644 index 0000000000..1dcba0ff3e --- /dev/null +++ b/lib/kokkos/core/src/HIP/Kokkos_HIP_Instance.cpp @@ -0,0 +1,373 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// 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 NTESS "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 NTESS 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 +*/ + +/*--------------------------------------------------------------------------*/ +/* Kokkos interfaces */ + +#include + +#include +#include +#include +#include + +/*--------------------------------------------------------------------------*/ +/* Standard 'C' libraries */ +#include + +/* Standard 'C++' libraries */ +#include +#include +#include +#include + +namespace Kokkos { +namespace Experimental { +namespace { +class HIPInternalDevices { + public: + enum { MAXIMUM_DEVICE_COUNT = 64 }; + struct hipDeviceProp_t m_hipProp[MAXIMUM_DEVICE_COUNT]; + int m_hipDevCount; + + HIPInternalDevices(); + + static HIPInternalDevices const &singleton(); +}; + +HIPInternalDevices::HIPInternalDevices() { + HIP_SAFE_CALL(hipGetDeviceCount(&m_hipDevCount)); + + if (m_hipDevCount > MAXIMUM_DEVICE_COUNT) { + Kokkos::abort( + "Sorry, you have more GPUs per node than we thought anybody would ever " + "have. Please report this to github.com/kokkos/kokkos."); + } + for (int i = 0; i < m_hipDevCount; ++i) { + HIP_SAFE_CALL(hipGetDeviceProperties(m_hipProp + i, i)); + } +} + +const HIPInternalDevices &HIPInternalDevices::singleton() { + static HIPInternalDevices self; + return self; +} +} // namespace + +namespace Impl { + +int HIPInternal::was_initialized = 0; +int HIPInternal::was_finalized = 0; +//---------------------------------------------------------------------------- + +void HIPInternal::print_configuration(std::ostream & /*s*/) const { + // FIXME_HIP + Kokkos::abort("print_configuration not implemented!\n"); + /*const HIPInternalDevices & dev_info = HIPInternalDevices::singleton(); + +#if defined( KOKKOS_ENABLE_HIP ) + s << "macro KOKKOS_ENABLE_HIP : defined" << std::endl ; +#endif +#if defined( __hcc_version__ ) + s << "macro __hcc_version__ = " << __hcc_version__ + << std::endl ; +#endif + + for ( int i = 0 ; i < dev_info.m_hipDevCount ; ++i ) { + s << "Kokkos::Experimental::HIP[ " << i << " ] " + << dev_info.m_hipProp[i].name + << " version " << (dev_info.m_hipProp[i].major) << "." << +dev_info.m_hipProp[i].minor + << ", Total Global Memory: " << +human_memory_size(dev_info.m_hipProp[i].totalGlobalMem) + << ", Shared Memory per Wavefront: " << +human_memory_size(dev_info.m_hipProp[i].sharedMemPerWavefront); if ( m_hipDev == +i ) s << " : Selected" ; s << std::endl ; + }*/ +} + +//---------------------------------------------------------------------------- + +HIPInternal::~HIPInternal() { + if (m_scratchSpace || m_scratchFlags) { + std::cerr << "Kokkos::Experimental::HIP ERROR: Failed to call " + "Kokkos::Experimental::HIP::finalize()" + << std::endl; + std::cerr.flush(); + } + + m_hipDev = -1; + m_hipArch = -1; + m_multiProcCount = 0; + m_maxWarpCount = 0; + m_maxSharedWords = 0; + m_maxShmemPerBlock = 0; + m_scratchSpaceCount = 0; + m_scratchFlagsCount = 0; + m_scratchSpace = 0; + m_scratchFlags = 0; +} + +int HIPInternal::verify_is_initialized(const char *const label) const { + if (m_hipDev < 0) { + std::cerr << "Kokkos::Experimental::HIP::" << label + << " : ERROR device not initialized" << std::endl; + } + return 0 <= m_hipDev; +} + +HIPInternal &HIPInternal::singleton() { + static HIPInternal *self = nullptr; + if (!self) { + self = new HIPInternal(); + } + return *self; +} + +void HIPInternal::initialize(int hip_device_id) { + if (was_finalized) + Kokkos::abort("Calling HIP::initialize after HIP::finalize is illegal\n"); + + if (is_initialized()) return; + + enum { WordSize = sizeof(size_type) }; + + if (!HostSpace::execution_space::impl_is_initialized()) { + const std::string msg( + "HIP::initialize ERROR : HostSpace::execution_space " + "is not initialized"); + Kokkos::Impl::throw_runtime_exception(msg); + } + + const HIPInternalDevices &dev_info = HIPInternalDevices::singleton(); + + const bool ok_init = 0 == m_scratchSpace || 0 == m_scratchFlags; + + // Need at least a GPU device + const bool ok_id = + 0 <= hip_device_id && hip_device_id < dev_info.m_hipDevCount; + + if (ok_init && ok_id) { + const struct hipDeviceProp_t &hipProp = dev_info.m_hipProp[hip_device_id]; + + m_hipDev = hip_device_id; + + hipSetDevice(m_hipDev); + + // FIXME_HIP for now always uses default stream + m_stream = 0; + + // number of multiprocessors + m_multiProcCount = hipProp.multiProcessorCount; + + //---------------------------------- + // Maximum number of warps, + // at most one warp per thread in a warp for reduction. + m_maxWarpCount = hipProp.maxThreadsPerBlock / Impl::HIPTraits::WarpSize; + if (HIPTraits::WarpSize < m_maxWarpCount) { + m_maxWarpCount = Impl::HIPTraits::WarpSize; + } + m_maxSharedWords = hipProp.sharedMemPerBlock / WordSize; + + //---------------------------------- + // Maximum number of blocks + m_maxBlock = hipProp.maxGridSize[0]; + + m_shmemPerSM = hipProp.maxSharedMemoryPerMultiProcessor; + m_maxShmemPerBlock = hipProp.sharedMemPerBlock; + m_maxThreadsPerSM = hipProp.maxThreadsPerMultiProcessor; + m_maxThreadsPerBlock = hipProp.maxThreadsPerBlock; + + //---------------------------------- + // Multiblock reduction uses scratch flags for counters + // and scratch space for partial reduction values. + // Allocate some initial space. This will grow as needed. + { + const unsigned reduce_block_count = + m_maxWarpCount * Impl::HIPTraits::WarpSize; + + (void)scratch_flags(reduce_block_count * 2 * sizeof(size_type)); + (void)scratch_space(reduce_block_count * 16 * sizeof(size_type)); + } + //---------------------------------- + } else { + std::ostringstream msg; + msg << "Kokkos::Experimental::HIP::initialize(" << hip_device_id + << ") FAILED"; + + if (!ok_init) { + msg << " : Already initialized"; + } + if (!ok_id) { + msg << " : Device identifier out of range " + << "[0.." << dev_info.m_hipDevCount - 1 << "]"; + } + Kokkos::Impl::throw_runtime_exception(msg.str()); + } + + // Init the array for used for arbitrarily sized atomics + // FIXME_HIP uncomment this when global variable works + // if (m_stream == 0) ::Kokkos::Impl::initialize_host_hip_lock_arrays(); +} + +//---------------------------------------------------------------------------- + +typedef Kokkos::Experimental::HIP::size_type + ScratchGrain[Impl::HIPTraits::WarpSize]; +enum { sizeScratchGrain = sizeof(ScratchGrain) }; + +Kokkos::Experimental::HIP::size_type *HIPInternal::scratch_space( + const Kokkos::Experimental::HIP::size_type size) { + if (verify_is_initialized("scratch_space") && + m_scratchSpaceCount * sizeScratchGrain < size) { + m_scratchSpaceCount = (size + sizeScratchGrain - 1) / sizeScratchGrain; + + typedef Kokkos::Impl::SharedAllocationRecord + Record; + + static Record *const r = Record::allocate( + Kokkos::Experimental::HIPSpace(), "InternalScratchSpace", + (sizeScratchGrain * m_scratchSpaceCount)); + + Record::increment(r); + + m_scratchSpace = reinterpret_cast(r->data()); + } + + return m_scratchSpace; +} + +Kokkos::Experimental::HIP::size_type *HIPInternal::scratch_flags( + const Kokkos::Experimental::HIP::size_type size) { + if (verify_is_initialized("scratch_flags") && + m_scratchFlagsCount * sizeScratchGrain < size) { + m_scratchFlagsCount = (size + sizeScratchGrain - 1) / sizeScratchGrain; + + typedef Kokkos::Impl::SharedAllocationRecord + Record; + + Record *const r = Record::allocate( + Kokkos::Experimental::HIPSpace(), "InternalScratchFlags", + (sizeScratchGrain * m_scratchFlagsCount)); + + Record::increment(r); + + m_scratchFlags = reinterpret_cast(r->data()); + + hipMemset(m_scratchFlags, 0, m_scratchFlagsCount * sizeScratchGrain); + } + + return m_scratchFlags; +} + +//---------------------------------------------------------------------------- + +void HIPInternal::finalize() { + HIP().fence(); + was_finalized = 1; + if (0 != m_scratchSpace || 0 != m_scratchFlags) { + typedef Kokkos::Impl::SharedAllocationRecord + RecordHIP; + + RecordHIP::decrement(RecordHIP::get_record(m_scratchFlags)); + RecordHIP::decrement(RecordHIP::get_record(m_scratchSpace)); + + m_hipDev = -1; + m_hipArch = -1; + m_multiProcCount = 0; + m_maxWarpCount = 0; + m_maxBlock = 0; + m_maxSharedWords = 0; + m_maxShmemPerBlock = 0; + m_scratchSpaceCount = 0; + m_scratchFlagsCount = 0; + m_scratchSpace = 0; + m_scratchFlags = 0; + } +} + +//---------------------------------------------------------------------------- + +Kokkos::Experimental::HIP::size_type hip_internal_maximum_warp_count() { + return HIPInternal::singleton().m_maxWarpCount; +} + +Kokkos::Experimental::HIP::size_type hip_internal_maximum_grid_count() { + return HIPInternal::singleton().m_maxBlock; +} + +Kokkos::Experimental::HIP::size_type *hip_internal_scratch_space( + const Kokkos::Experimental::HIP::size_type size) { + return HIPInternal::singleton().scratch_space(size); +} + +Kokkos::Experimental::HIP::size_type *hip_internal_scratch_flags( + const Kokkos::Experimental::HIP::size_type size) { + return HIPInternal::singleton().scratch_flags(size); +} + +} // namespace Impl +} // namespace Experimental +} // namespace Kokkos + +//---------------------------------------------------------------------------- + +namespace Kokkos { +namespace Impl { +void hip_device_synchronize() { HIP_SAFE_CALL(hipDeviceSynchronize()); } + +void hip_internal_error_throw(hipError_t e, const char *name, const char *file, + const int line) { + std::ostringstream out; + out << name << " error( " << hipGetErrorName(e) + << "): " << hipGetErrorString(e); + if (file) { + out << " " << file << ":" << line; + } + throw_runtime_exception(out.str()); +} +} // namespace Impl +} // namespace Kokkos diff --git a/lib/kokkos/core/src/HIP/Kokkos_HIP_Instance.hpp b/lib/kokkos/core/src/HIP/Kokkos_HIP_Instance.hpp new file mode 100644 index 0000000000..c66fb2776f --- /dev/null +++ b/lib/kokkos/core/src/HIP/Kokkos_HIP_Instance.hpp @@ -0,0 +1,141 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// 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 NTESS "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 NTESS 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_HIP_INSTANCE_HPP +#define KOKKOS_HIP_INSTANCE_HPP + +#include + +namespace Kokkos { +namespace Experimental { +namespace Impl { + +struct HIPTraits { + static int constexpr WarpSize = 64; + static int constexpr WarpIndexShift = 6; /* WarpSize == 1 << WarpShift*/ + + static int constexpr ConstantMemoryUsage = 0x008000; /* 32k bytes */ + static int constexpr ConstantMemoryUseThreshold = 0x000200; /* 512 bytes */ +}; + +//---------------------------------------------------------------------------- + +HIP::size_type hip_internal_maximum_warp_count(); +HIP::size_type hip_internal_maximum_grid_count(); + +HIP::size_type *hip_internal_scratch_space(const HIP::size_type size); +HIP::size_type *hip_internal_scratch_flags(const HIP::size_type size); + +//---------------------------------------------------------------------------- + +class HIPInternal { + private: + HIPInternal(const HIPInternal &); + HIPInternal &operator=(const HIPInternal &); + + public: + using size_type = ::Kokkos::Experimental::HIP::size_type; + + int m_hipDev; + int m_hipArch; + unsigned m_multiProcCount; + unsigned m_maxWarpCount; + unsigned m_maxBlock; + unsigned m_maxSharedWords; + int m_shmemPerSM; + int m_maxShmemPerBlock; + int m_maxThreadsPerSM; + int m_maxThreadsPerBlock; + size_type m_scratchSpaceCount; + size_type m_scratchFlagsCount; + size_type *m_scratchSpace; + size_type *m_scratchFlags; + + hipStream_t m_stream; + + static int was_initialized; + static int was_finalized; + + static HIPInternal &singleton(); + + int verify_is_initialized(const char *const label) const; + + int is_initialized() const { + return m_hipDev >= 0; + } // 0 != m_scratchSpace && 0 != m_scratchFlags ; } + + void initialize(int hip_device_id); + void finalize(); + + void print_configuration(std::ostream &) const; + + ~HIPInternal(); + + HIPInternal() + : m_hipDev(-1), + m_hipArch(-1), + m_multiProcCount(0), + m_maxWarpCount(0), + m_maxBlock(0), + m_maxSharedWords(0), + m_shmemPerSM(0), + m_maxShmemPerBlock(0), + m_maxThreadsPerSM(0), + m_maxThreadsPerBlock(0), + m_scratchSpaceCount(0), + m_scratchFlagsCount(0), + m_scratchSpace(0), + m_scratchFlags(0) {} + + size_type *scratch_space(const size_type size); + size_type *scratch_flags(const size_type size); +}; + +} // namespace Impl +} // namespace Experimental +} // namespace Kokkos + +#endif diff --git a/lib/kokkos/core/src/HIP/Kokkos_HIP_KernelLaunch.cpp b/lib/kokkos/core/src/HIP/Kokkos_HIP_KernelLaunch.cpp new file mode 100644 index 0000000000..7c8582ef0e --- /dev/null +++ b/lib/kokkos/core/src/HIP/Kokkos_HIP_KernelLaunch.cpp @@ -0,0 +1,72 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// 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 NTESS "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 NTESS 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 + +namespace Kokkos { +namespace Experimental { +namespace Impl { + +void *hip_resize_scratch_space(std::int64_t bytes, bool force_shrink) { + static void *ptr = nullptr; + static std::int64_t current_size = 0; + if (bytes > current_size) { + current_size = bytes; + if (ptr) Kokkos::kokkos_free<::Kokkos::Experimental::HIPSpace>(ptr); + ptr = Kokkos::kokkos_malloc( + "HIPSpace::ScratchMemory", current_size); + } + if ((bytes < current_size) && (force_shrink)) { + current_size = bytes; + Kokkos::kokkos_free<::Kokkos::Experimental::HIPSpace>(ptr); + ptr = Kokkos::kokkos_malloc( + "HIPSpace::ScratchMemory", current_size); + } + return ptr; +} +} // namespace Impl +} // namespace Experimental +} // namespace Kokkos diff --git a/lib/kokkos/core/src/HIP/Kokkos_HIP_KernelLaunch.hpp b/lib/kokkos/core/src/HIP/Kokkos_HIP_KernelLaunch.hpp new file mode 100644 index 0000000000..5c19a3e0da --- /dev/null +++ b/lib/kokkos/core/src/HIP/Kokkos_HIP_KernelLaunch.hpp @@ -0,0 +1,212 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// 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 NTESS "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 NTESS 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_HIP_KERNEL_LAUNCH_HPP +#define KOKKOS_HIP_KERNEL_LAUNCH_HPP + +#include + +#if defined(__HIPCC__) + +#include +#include +#include + +// FIXME_HIP cannot use global variable on the device with ROCm 2.9 +//__device__ __constant__ unsigned long kokkos_impl_hip_constant_memory_buffer +// [Kokkos::Experimental::Impl::HIPTraits::ConstantMemoryUsage / +// sizeof(unsigned long)]; + +namespace Kokkos { +namespace Experimental { +template +inline __device__ T *kokkos_impl_hip_shared_memory() { + extern __shared__ HIPSpace::size_type sh[]; + return (T *)sh; +} +} // namespace Experimental +} // namespace Kokkos + +namespace Kokkos { +namespace Experimental { +namespace Impl { + +void *hip_resize_scratch_space(std::int64_t bytes, bool force_shrink = false); + +template +__global__ static void hip_parallel_launch_constant_memory() { + __device__ __constant__ unsigned long kokkos_impl_hip_constant_memory_buffer + [Kokkos::Experimental::Impl::HIPTraits::ConstantMemoryUsage / + sizeof(unsigned long)]; + + const DriverType &driver = *(reinterpret_cast( + kokkos_impl_hip_constant_memory_buffer)); + + driver(); +} + +template +__global__ static void hip_parallel_launch_local_memory( + const DriverType driver) { + driver(); +} + +template +__global__ __launch_bounds__( + maxTperB, + minBperSM) static void hip_parallel_launch_local_memory(const DriverType + driver) { + driver(); +} + +enum class HIPLaunchMechanism : unsigned { + Default = 0, + ConstantMemory = 1, + GlobalMemory = 2, + LocalMemory = 4 +}; + +constexpr inline HIPLaunchMechanism operator|(HIPLaunchMechanism p1, + HIPLaunchMechanism p2) { + return static_cast(static_cast(p1) | + static_cast(p2)); +} +constexpr inline HIPLaunchMechanism operator&(HIPLaunchMechanism p1, + HIPLaunchMechanism p2) { + return static_cast(static_cast(p1) & + static_cast(p2)); +} + +template +struct HIPDispatchProperties { + HIPLaunchMechanism launch_mechanism = l; +}; + +template , + HIPLaunchMechanism LaunchMechanism = HIPLaunchMechanism::LocalMemory> +struct HIPParallelLaunch; + +template +struct HIPParallelLaunch< + DriverType, Kokkos::LaunchBounds, + HIPLaunchMechanism::LocalMemory> { + inline HIPParallelLaunch(const DriverType &driver, const dim3 &grid, + const dim3 &block, const int shmem, + const HIPInternal *hip_instance, + const bool /*prefer_shmem*/) { + if ((grid.x != 0) && ((block.x * block.y * block.z) != 0)) { + if (hip_instance->m_maxShmemPerBlock < shmem) { + Kokkos::Impl::throw_runtime_exception( + "HIPParallelLaunch FAILED: shared memory request is too large"); + } + + // Invoke the driver function on the device + printf("%i %i %i | %i %i %i | %i\n", grid.x, grid.y, grid.z, block.x, + block.y, block.z, shmem); + printf("Pre Launch Error: %s\n", hipGetErrorName(hipGetLastError())); + + hipLaunchKernelGGL( + (hip_parallel_launch_local_memory), + grid, block, shmem, hip_instance->m_stream, driver); + + Kokkos::Experimental::HIP().fence(); + printf("Post Launch Error: %s\n", hipGetErrorName(hipGetLastError())); +#if defined(KOKKOS_ENABLE_DEBUG_BOUNDS_CHECK) + HIP_SAFE_CALL(hipGetLastError()); + Kokkos::Experimental::HIP().fence(); +#endif + } + } + + static hipFuncAttributes get_hip_func_attributes() { + hipFuncAttributes attr; + hipFuncGetAttributes( + &attr, hip_parallel_launch_local_memory); + return attr; + } +}; + +template +struct HIPParallelLaunch, + HIPLaunchMechanism::LocalMemory> { + inline HIPParallelLaunch(const DriverType &driver, const dim3 &grid, + const dim3 &block, const int shmem, + const HIPInternal *hip_instance, + const bool /*prefer_shmem*/) { + if ((grid.x != 0) && ((block.x * block.y * block.z) != 0)) { + if (hip_instance->m_maxShmemPerBlock < shmem) { + Kokkos::Impl::throw_runtime_exception(std::string( + "HIPParallelLaunch FAILED: shared memory request is too large")); + } + + // Invoke the driver function on the device + hipLaunchKernelGGL(hip_parallel_launch_local_memory, grid, + block, shmem, hip_instance->m_stream, driver); + + Kokkos::Experimental::HIP().fence(); +#if defined(KOKKOS_ENABLE_DEBUG_BOUNDS_CHECK) + HIP_SAFE_CALL(hipGetLastError()); + Kokkos::Experimental::HIP().fence(); +#endif + } + } + + static hipFuncAttributes get_hip_func_attributes() { + hipFuncAttributes attr; + hipFuncGetAttributes(&attr, + reinterpret_cast( + &hip_parallel_launch_local_memory)); + return attr; + } +}; +} // namespace Impl +} // namespace Experimental +} // namespace Kokkos + +#endif + +#endif diff --git a/lib/kokkos/core/src/HIP/Kokkos_HIP_Locks.cpp b/lib/kokkos/core/src/HIP/Kokkos_HIP_Locks.cpp new file mode 100644 index 0000000000..0a34ed505b --- /dev/null +++ b/lib/kokkos/core/src/HIP/Kokkos_HIP_Locks.cpp @@ -0,0 +1,118 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// 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 NTESS "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 NTESS 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 + +#ifdef KOKKOS_ENABLE_HIP_RELOCATABLE_DEVICE_CODE +__device__ __constant__ HIPLockArrays g_device_hip_lock_arrays = {nullptr, + nullptr, 0}; +#endif + +namespace Kokkos { + +namespace { + +__global__ void init_lock_array_kernel_atomic() { + unsigned i = hipBlockIdx_x * hipBlockDim_x + hipThreadIdx_x; + if (i < KOKKOS_IMPL_HIP_SPACE_ATOMIC_MASK + 1) { + g_device_hip_lock_arrays.atomic[i] = 0; + } +} + +__global__ void init_lock_array_kernel_threadid(int N) { + unsigned i = hipBlockIdx_x * hipBlockDim_x + hipThreadIdx_x; + if (i < static_cast(N)) { + g_device_hip_lock_arrays.scratch[i] = 0; + } +} + +} // namespace + +namespace Impl { + +HIPLockArrays g_host_hip_lock_arrays = {nullptr, nullptr, 0}; + +void initialize_host_hip_lock_arrays() { + if (g_host_hip_lock_arrays.atomic != nullptr) return; + HIP_SAFE_CALL(hipMalloc( + &g_host_hip_lock_arrays.atomic, + sizeof(std::int32_t) * (KOKKOS_IMPL_HIP_SPACE_ATOMIC_MASK + 1))); + HIP_SAFE_CALL(hipMalloc( + &g_host_hip_lock_arrays.scratch, + sizeof(std::int32_t) * (::Kokkos::Experimental::HIP::concurrency()))); + + g_host_hip_lock_arrays.n = ::Kokkos::Experimental::HIP::concurrency(); + + KOKKOS_COPY_HIP_LOCK_ARRAYS_TO_DEVICE(); + hipLaunchKernelGGL(init_lock_array_kernel_atomic, + (KOKKOS_IMPL_HIP_SPACE_ATOMIC_MASK + 1 + 255) / 256, 256, + 0, 0); + hipLaunchKernelGGL(init_lock_array_kernel_threadid, + (::Kokkos::Experimental::HIP::concurrency() + 255) / 256, + 256, 0, 0, ::Kokkos::Experimental::HIP::concurrency()); +} + +void finalize_host_hip_lock_arrays() { + if (g_host_hip_lock_arrays.atomic == nullptr) return; + hipFree(g_host_hip_lock_arrays.atomic); + g_host_hip_lock_arrays.atomic = nullptr; + hipFree(g_host_hip_lock_arrays.scratch); + g_host_hip_lock_arrays.scratch = nullptr; + g_host_hip_lock_arrays.n = 0; +#ifdef KOKKOS_ENABLE_HIP_RELOCATABLE_DEVICE_CODE + KOKKOS_COPY_HIP_LOCK_ARRAYS_TO_DEVICE(); +#endif +} + +} // namespace Impl + +} // namespace Kokkos diff --git a/lib/kokkos/core/src/HIP/Kokkos_HIP_Locks.hpp b/lib/kokkos/core/src/HIP/Kokkos_HIP_Locks.hpp new file mode 100644 index 0000000000..fb6728ea14 --- /dev/null +++ b/lib/kokkos/core/src/HIP/Kokkos_HIP_Locks.hpp @@ -0,0 +1,174 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// 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 NTESS "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 NTESS 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_HIP_LOCKS_HPP +#define KOKKOS_HIP_LOCKS_HPP + +#include + +#include + +#include + +// FIXME_HIP We cannot use global variables defined in a namespace + +struct HIPLockArrays { + std::int32_t* atomic; + std::int32_t* scratch; + std::int32_t n; +}; + +/// \brief This global variable in Host space is the central definition +/// of these arrays. +extern HIPLockArrays g_host_hip_lock_arrays; + +namespace Kokkos { +namespace Impl { + +/// \brief After this call, the g_host_hip_lock_arrays variable has +/// valid, initialized arrays. +/// +/// This call is idempotent. +void initialize_host_hip_lock_arrays(); + +/// \brief After this call, the g_host_hip_lock_arrays variable has +/// all null pointers, and all array memory has been freed. +/// +/// This call is idempotent. +void finalize_host_hip_lock_arrays(); + +} // namespace Impl +} // namespace Kokkos + +#if defined(__HIPCC__) + +/// \brief This global variable in HIP space is what kernels use +/// to get access to the lock arrays. +/// +/// When relocatable device code is enabled, there can be one single +/// instance of this global variable for the entire executable, +/// whose definition will be in Kokkos_HIP_Locks.cpp (and whose declaration +/// here must then be extern). +/// This one instance will be initialized by initialize_host_HIP_lock_arrays +/// and need not be modified afterwards. +/// +/// When relocatable device code is disabled, an instance of this variable +/// will be created in every translation unit that sees this header file. +/// Since the Kokkos_HIP_Locks.cpp translation unit cannot initialize the +/// instances in other translation units, we must update this HIP global +/// variable based on the Host global variable prior to running any kernels +/// that will use it. +/// That is the purpose of the KOKKOS_ENSURE_HIP_LOCK_ARRAYS_ON_DEVICE macro. +__device__ +#ifdef KOKKOS_ENABLE_HIP_RELOCATABLE_DEVICE_CODE + __constant__ extern +#endif + HIPLockArrays g_device_hip_lock_arrays; + +#define KOKKOS_IMPL_HIP_SPACE_ATOMIC_MASK 0x1FFFF + +namespace Kokkos { +namespace Impl { + +/// \brief Acquire a lock for the address +/// +/// This function tries to acquire the lock for the hash value derived +/// from the provided ptr. If the lock is successfully acquired the +/// function returns true. Otherwise it returns false. +__device__ inline bool lock_address_hip_space(void* ptr) { + auto offset = reinterpret_cast(ptr); + offset = offset >> 2; + offset = offset & KOKKOS_IMPL_HIP_SPACE_ATOMIC_MASK; + return (0 == atomicCAS(&g_device_hip_lock_arrays.atomic[offset], 0, 1)); +} + +/// \brief Release lock for the address +/// +/// This function releases the lock for the hash value derived +/// from the provided ptr. This function should only be called +/// after previously successfully aquiring a lock with +/// lock_address. +__device__ inline void unlock_address_hip_space(void* ptr) { + auto offset = reinterpret_cast(ptr); + offset = offset >> 2; + offset = offset & KOKKOS_IMPL_HIP_SPACE_ATOMIC_MASK; + atomicExch(&g_device_hip_lock_arrays.atomic[offset], 0); +} + +} // namespace Impl +} // namespace Kokkos + +// Make lock_array_copied an explicit translation unit scope thingy +namespace Kokkos { +namespace Impl { +namespace { +static int lock_array_copied = 0; +inline int eliminate_warning_for_lock_array() { return lock_array_copied; } +} // namespace +} // namespace Impl +} // namespace Kokkos + +/* Dan Ibanez: it is critical that this code be a macro, so that it will + capture the right address for g_device_hip_lock_arrays! + putting this in an inline function will NOT do the right thing! */ +#define KOKKOS_COPY_HIP_LOCK_ARRAYS_TO_DEVICE() \ + { \ + if (::Kokkos::Impl::lock_array_copied == 0) { \ + HIP_SAFE_CALL(hipMemcpyToSymbol(HIP_SYMBOL(g_device_hip_lock_arrays), \ + &g_host_hip_lock_arrays, \ + sizeof(HIPLockArrays))); \ + } \ + lock_array_copied = 1; \ + } + +#ifdef KOKKOS_ENABLE_HIP_RELOCATABLE_DEVICE_CODE +#define KOKKOS_ENSURE_HIP_LOCK_ARRAYS_ON_DEVICE() +#else +#define KOKKOS_ENSURE_HIP_LOCK_ARRAYS_ON_DEVICE() \ + KOKKOS_COPY_HIP_LOCK_ARRAYS_TO_DEVICE() +#endif + +#endif /* defined( __HIPCC__ ) */ + +#endif /* #ifndef KOKKOS_HIP_LOCKS_HPP */ diff --git a/lib/kokkos/core/src/HIP/Kokkos_HIP_Parallel_MDRange.hpp b/lib/kokkos/core/src/HIP/Kokkos_HIP_Parallel_MDRange.hpp new file mode 100644 index 0000000000..7a6161346c --- /dev/null +++ b/lib/kokkos/core/src/HIP/Kokkos_HIP_Parallel_MDRange.hpp @@ -0,0 +1,411 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// 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 NTESS "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 NTESS 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_HIP_PARALLEL_MDRANGE_HPP +#define KOKKOS_HIP_PARALLEL_MDRANGE_HPP + +#include +#include +#include +#include +#include + +namespace Kokkos { +namespace Impl { +// ParallelFor +template +class ParallelFor, + Kokkos::Experimental::HIP> { + public: + using Policy = Kokkos::MDRangePolicy; + + private: + using array_index_type = typename Policy::array_index_type; + using index_type = typename Policy::index_type; + using LaunchBounds = typename Policy::launch_bounds; + + const FunctorType m_functor; + const Policy m_policy; + + ParallelFor() = delete; + ParallelFor& operator=(ParallelFor const&) = delete; + + public: + inline __device__ void operator()(void) const { + Kokkos::Impl::DeviceIterateTile(m_policy, + m_functor) + .exec_range(); + } + + inline void execute() const { + if (m_policy.m_num_tiles == 0) return; + array_index_type const maxblocks = static_cast( + m_policy.space().impl_internal_space_instance()->m_maxBlock); + if (Policy::rank == 2) { + dim3 const block(m_policy.m_tile[0], m_policy.m_tile[1], 1); + dim3 const grid( + std::min((m_policy.m_upper[0] - m_policy.m_lower[0] + block.x - 1) / + block.x, + maxblocks), + std::min((m_policy.m_upper[1] - m_policy.m_lower[1] + block.y - 1) / + block.y, + maxblocks), + 1); + Kokkos::Experimental::Impl::HIPParallelLaunch( + *this, grid, block, 0, + m_policy.space().impl_internal_space_instance(), false); + } else if (Policy::rank == 3) { + dim3 const block(m_policy.m_tile[0], m_policy.m_tile[1], + m_policy.m_tile[2]); + dim3 const grid( + std::min((m_policy.m_upper[0] - m_policy.m_lower[0] + block.x - 1) / + block.x, + maxblocks), + std::min((m_policy.m_upper[1] - m_policy.m_lower[1] + block.y - 1) / + block.y, + maxblocks), + std::min((m_policy.m_upper[2] - m_policy.m_lower[2] + block.z - 1) / + block.z, + maxblocks)); + Kokkos::Experimental::Impl::HIPParallelLaunch( + *this, grid, block, 0, + m_policy.space().impl_internal_space_instance(), false); + } else if (Policy::rank == 4) { + // id0,id1 encoded within hipThreadIdx_x; id2 to hipThreadIdx_y; id3 to + // hipThreadIdx_z + dim3 const block(m_policy.m_tile[0] * m_policy.m_tile[1], + m_policy.m_tile[2], m_policy.m_tile[3]); + dim3 const grid( + std::min(static_cast(m_policy.m_tile_end[0] * + m_policy.m_tile_end[1]), + static_cast(maxblocks)), + std::min((m_policy.m_upper[2] - m_policy.m_lower[2] + block.y - 1) / + block.y, + maxblocks), + std::min((m_policy.m_upper[3] - m_policy.m_lower[3] + block.z - 1) / + block.z, + maxblocks)); + Kokkos::Experimental::Impl::HIPParallelLaunch( + *this, grid, block, 0, + m_policy.space().impl_internal_space_instance(), false); + } else if (Policy::rank == 5) { + // id0,id1 encoded within hipThreadIdx_x; id2,id3 to hipThreadIdx_y; id4 + // to hipThreadIdx_z + dim3 const block(m_policy.m_tile[0] * m_policy.m_tile[1], + m_policy.m_tile[2] * m_policy.m_tile[3], + m_policy.m_tile[4]); + dim3 const grid( + std::min(static_cast(m_policy.m_tile_end[0] * + m_policy.m_tile_end[1]), + static_cast(maxblocks)), + std::min(static_cast(m_policy.m_tile_end[2] * + m_policy.m_tile_end[3]), + static_cast(maxblocks)), + std::min((m_policy.m_upper[4] - m_policy.m_lower[4] + block.z - 1) / + block.z, + maxblocks)); + Kokkos::Experimental::Impl::HIPParallelLaunch( + *this, grid, block, 0, + m_policy.space().impl_internal_space_instance(), false); + } else if (Policy::rank == 6) { + // id0,id1 encoded within hipThreadIdx_x; id2,id3 to hipThreadIdx_y; + // id4,id5 to hipThreadIdx_z + dim3 const block(m_policy.m_tile[0] * m_policy.m_tile[1], + m_policy.m_tile[2] * m_policy.m_tile[3], + m_policy.m_tile[4] * m_policy.m_tile[5]); + dim3 const grid(std::min(static_cast(m_policy.m_tile_end[0] * + m_policy.m_tile_end[1]), + static_cast(maxblocks)), + std::min(static_cast(m_policy.m_tile_end[2] * + m_policy.m_tile_end[3]), + static_cast(maxblocks)), + std::min(static_cast(m_policy.m_tile_end[4] * + m_policy.m_tile_end[5]), + static_cast(maxblocks))); + Kokkos::Experimental::Impl::HIPParallelLaunch( + *this, grid, block, 0, + m_policy.space().impl_internal_space_instance(), false); + } else { + printf("Kokkos::MDRange Error: Exceeded rank bounds with HIP\n"); + Kokkos::abort("Aborting"); + } + + } // end execute + + ParallelFor(FunctorType const& arg_functor, Policy const& arg_policy) + : m_functor(arg_functor), m_policy(arg_policy) {} +}; + +// ParallelReduce +template +class ParallelReduce, ReducerType, + Kokkos::Experimental::HIP> { + public: + using Policy = Kokkos::MDRangePolicy; + + private: + using array_index_type = typename Policy::array_index_type; + using index_type = typename Policy::index_type; + + using WorkTag = typename Policy::work_tag; + using Member = typename Policy::member_type; + using LaunchBounds = typename Policy::launch_bounds; + + 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 ValueTraits = + Kokkos::Impl::FunctorValueTraits; + using ValueInit = Kokkos::Impl::FunctorValueInit; + using ValueJoin = Kokkos::Impl::FunctorValueJoin; + + public: + using pointer_type = typename ValueTraits::pointer_type; + using value_type = typename ValueTraits::value_type; + using reference_type = typename ValueTraits::reference_type; + using functor_type = FunctorType; + using size_type = Experimental::HIP::size_type; + + // Algorithmic constraints: blockSize is a power of two AND hipBlockDim_y == + // hipBlockDim_z == 1 + + const FunctorType m_functor; + const Policy m_policy; // used for workrange and nwork + const ReducerType m_reducer; + const pointer_type m_result_ptr; + const bool m_result_ptr_device_accessible; + size_type* m_scratch_space; + size_type* m_scratch_flags; + + using DeviceIteratePattern = typename Kokkos::Impl::Reduce::DeviceIterateTile< + Policy::rank, Policy, FunctorType, WorkTag, reference_type>; + + // Shall we use the shfl based reduction or not (only use it for static sized + // types of more than 128bit + enum { + UseShflReduction = ((sizeof(value_type) > 2 * sizeof(double)) && + (ValueTraits::StaticValueSize != 0)) + }; + // Some crutch to do function overloading + private: + using DummyShflReductionType = double; + using DummySHMEMReductionType = int; + + public: + inline __device__ void exec_range(reference_type update) const { + DeviceIteratePattern(m_policy, m_functor, update).exec_range(); + } + + inline __device__ void operator()(void) const { + const integral_nonzero_constant + word_count(ValueTraits::value_size( + ReducerConditional::select(m_functor, m_reducer)) / + sizeof(size_type)); + + { + reference_type value = ValueInit::init( + ReducerConditional::select(m_functor, m_reducer), + Experimental::kokkos_impl_hip_shared_memory() + + hipThreadIdx_y * word_count.value); + + // Number of blocks is bounded so that the reduction can be limited to two + // passes. Each thread block is given an approximately equal amount of + // work to perform. Accumulate the values for this block. The accumulation + // ordering does not match the final pass, but is arithmatically + // equivalent. + + this->exec_range(value); + } + + // Reduce with final value at hipBlockDim_y - 1 location. + // Problem: non power-of-two blockDim + if (::Kokkos::Impl::hip_single_inter_block_reduce_scan< + false, ReducerTypeFwd, WorkTagFwd>( + ReducerConditional::select(m_functor, m_reducer), hipBlockIdx_x, + hipGridDim_x, + Experimental::kokkos_impl_hip_shared_memory(), + m_scratch_space, m_scratch_flags)) { + // This is the final block with the final result at the final threads' + // location + size_type* const shared = + Experimental::kokkos_impl_hip_shared_memory() + + (hipBlockDim_y - 1) * word_count.value; + size_type* const global = m_result_ptr_device_accessible + ? reinterpret_cast(m_result_ptr) + : m_scratch_space; + + if (hipThreadIdx_y == 0) { + Kokkos::Impl::FunctorFinal::final( + ReducerConditional::select(m_functor, m_reducer), shared); + } + + if (Experimental::Impl::HIPTraits::WarpSize < word_count.value) { + __syncthreads(); + } + + for (unsigned i = hipThreadIdx_y; i < word_count.value; + i += hipBlockDim_y) { + global[i] = shared[i]; + } + } + } + + // Determine block size constrained by shared memory: + // This is copy/paste from Kokkos_HIP_Parallel_Range + inline unsigned local_block_size(const FunctorType& f) { + unsigned n = Experimental::Impl::HIPTraits::WarpSize * 8; + int shmem_size = ::Kokkos::Impl::hip_single_inter_block_reduce_scan_shmem< + false, FunctorType, WorkTag>(f, n); + while ( + (n && + (m_policy.space().impl_internal_space_instance()->m_maxShmemPerBlock < + shmem_size)) || + (n > static_cast( + ::Kokkos::Experimental::Impl::hip_get_max_block_size< + ParallelReduce, LaunchBounds>(f, 1, shmem_size, 0)))) { + n >>= 1; + shmem_size = ::Kokkos::Impl::hip_single_inter_block_reduce_scan_shmem< + false, FunctorType, WorkTag>(f, n); + } + return n; + } + + inline void execute() { + const int nwork = m_policy.m_num_tiles; + if (nwork) { + int block_size = m_policy.m_prod_tile_dims; + // CONSTRAINT: Algorithm requires block_size >= product of tile dimensions + // Nearest power of two + int exponent_pow_two = std::ceil(std::log2(block_size)); + block_size = std::pow(2, exponent_pow_two); + int suggested_blocksize = local_block_size(m_functor); + + block_size = (block_size > suggested_blocksize) + ? block_size + : suggested_blocksize; // Note: block_size must be less + // than or equal to 512 + + m_scratch_space = + ::Kokkos::Experimental::Impl::hip_internal_scratch_space( + ValueTraits::value_size( + ReducerConditional::select(m_functor, m_reducer)) * + block_size /* block_size == max block_count */); + m_scratch_flags = + ::Kokkos::Experimental::Impl::hip_internal_scratch_flags( + sizeof(size_type)); + + // REQUIRED ( 1 , N , 1 ) + const dim3 block(1, block_size, 1); + // Required grid.x <= block.y + const dim3 grid(std::min(int(block.y), int(nwork)), 1, 1); + + const int shmem = + UseShflReduction + ? 0 + : ::Kokkos::Impl::hip_single_inter_block_reduce_scan_shmem< + false, FunctorType, WorkTag>(m_functor, block.y); + + Kokkos::Experimental::Impl::HIPParallelLaunch( + *this, grid, block, shmem, + m_policy.space().impl_internal_space_instance(), + false); // copy to device and execute + + if (!m_result_ptr_device_accessible) { + Experimental::HIP().fence(); + + if (m_result_ptr) { + const int size = ValueTraits::value_size( + ReducerConditional::select(m_functor, m_reducer)); + DeepCopy(m_result_ptr, + m_scratch_space, size); + } + } + } else { + if (m_result_ptr) { + ValueInit::init(ReducerConditional::select(m_functor, m_reducer), + m_result_ptr); + } + } + } + + template + ParallelReduce(const FunctorType& arg_functor, const Policy& arg_policy, + const ViewType& arg_result, + typename std::enable_if::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::accessible), + m_scratch_space(0), + m_scratch_flags(0) {} + + ParallelReduce(const FunctorType& arg_functor, 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::accessible), + m_scratch_space(0), + m_scratch_flags(0) {} +}; +} // namespace Impl +} // namespace Kokkos + +#endif diff --git a/lib/kokkos/core/src/HIP/Kokkos_HIP_Parallel_Range.hpp b/lib/kokkos/core/src/HIP/Kokkos_HIP_Parallel_Range.hpp new file mode 100644 index 0000000000..a9c44606e4 --- /dev/null +++ b/lib/kokkos/core/src/HIP/Kokkos_HIP_Parallel_Range.hpp @@ -0,0 +1,655 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// 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 NTESS "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 NTESS 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 KOKKO_HIP_PARALLEL_RANGE_HPP +#define KOKKO_HIP_PARALLEL_RANGE_HPP + +#include + +#if defined(__HIPCC__) + +#include +#include +#include + +namespace Kokkos { +namespace Impl { + +template +class ParallelFor, + Kokkos::Experimental::HIP> { + public: + using Policy = Kokkos::RangePolicy; + + private: + using Member = typename Policy::member_type; + using WorkTag = typename Policy::work_tag; + using LaunchBounds = typename Policy::launch_bounds; + + const FunctorType m_functor; + const Policy m_policy; + + ParallelFor() = delete; + ParallelFor& operator=(const ParallelFor&) = delete; + + template + inline __device__ + typename std::enable_if::value>::type + exec_range(const Member i) const { + m_functor(i); + } + + template + inline __device__ + typename std::enable_if::value>::type + exec_range(const Member i) const { + m_functor(TagType(), i); + } + + public: + using functor_type = FunctorType; + + inline __device__ void operator()(void) const { + const Member work_stride = hipBlockDim_y * hipGridDim_x; + const Member work_end = m_policy.end(); + + for (Member iwork = + m_policy.begin() + hipThreadIdx_y + hipBlockDim_y * hipBlockIdx_x; + iwork < work_end; + iwork = iwork < work_end - work_stride ? iwork + work_stride + : work_end) { + this->template exec_range(iwork); + } + } + + inline void execute() const { + const typename Policy::index_type nwork = m_policy.end() - m_policy.begin(); + + const int block_size = 256; // FIXME_HIP Choose block_size better + const dim3 block(1, block_size, 1); + const dim3 grid( + typename Policy::index_type((nwork + block.y - 1) / block.y), 1, 1); + + Kokkos::Experimental::Impl::HIPParallelLaunch( + *this, grid, block, 0, m_policy.space().impl_internal_space_instance(), + false); + } + + ParallelFor(const FunctorType& arg_functor, const Policy& arg_policy) + : m_functor(arg_functor), m_policy(arg_policy) {} +}; + +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- + +template +class ParallelReduce, ReducerType, + Kokkos::Experimental::HIP> { + public: + using Policy = Kokkos::RangePolicy; + + private: + using WorkRange = typename Policy::WorkRange; + using WorkTag = typename Policy::work_tag; + using Member = typename Policy::member_type; + using LaunchBounds = typename Policy::launch_bounds; + + 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 ValueTraits = + Kokkos::Impl::FunctorValueTraits; + using ValueInit = Kokkos::Impl::FunctorValueInit; + using ValueJoin = Kokkos::Impl::FunctorValueJoin; + + public: + using pointer_type = typename ValueTraits::pointer_type; + using value_type = typename ValueTraits::value_type; + using reference_type = typename ValueTraits::reference_type; + using functor_type = FunctorType; + using size_type = Kokkos::Experimental::HIP::size_type; + using index_type = typename Policy::index_type; + + // Algorithmic constraints: blockSize is a power of two AND hipBlockDim_y == + // hipBlockDim_z == 1 + + 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; + size_type* m_scratch_space = nullptr; + size_type* m_scratch_flags = nullptr; + + // Shall we use the shfl based reduction or not (only use it for static sized + // types of more than 128bit) + enum { + UseShflReduction = false + }; //((sizeof(value_type)>2*sizeof(double)) && ValueTraits::StaticValueSize) + //}; + // Some crutch to do function overloading + private: + using DummyShflReductionType = double; + using DummySHMEMReductionType = int; + + public: + // Make the exec_range calls call to Reduce::DeviceIterateTile + template + __device__ inline + typename std::enable_if::value>::type + exec_range(const Member& i, reference_type update) const { + m_functor(i, update); + } + + template + __device__ inline + typename std::enable_if::value>::type + exec_range(const Member& i, reference_type update) const { + m_functor(TagType(), i, update); + } + + __device__ inline void operator()() const { + const integral_nonzero_constant + word_count(ValueTraits::value_size( + ReducerConditional::select(m_functor, m_reducer)) / + sizeof(size_type)); + + { + reference_type value = ValueInit::init( + ReducerConditional::select(m_functor, m_reducer), + ::Kokkos::Experimental::kokkos_impl_hip_shared_memory() + + hipThreadIdx_y * word_count.value); + + // Number of blocks is bounded so that the reduction can be limited to two + // passes. Each thread block is given an approximately equal amount of + // work to perform. Accumulate the values for this block. The accumulation + // ordering does not match the final pass, but is arithmetically + // equivalent. + + const WorkRange range(m_policy, hipBlockIdx_x, hipGridDim_x); + + for (Member iwork = range.begin() + hipThreadIdx_y, + iwork_end = range.end(); + iwork < iwork_end; iwork += hipBlockDim_y) { + this->template exec_range(iwork, value); + } + } + + // Reduce with final value at hipBlockDim_y - 1 location. + if (hip_single_inter_block_reduce_scan( + ReducerConditional::select(m_functor, m_reducer), hipBlockIdx_x, + hipGridDim_x, + ::Kokkos::Experimental::kokkos_impl_hip_shared_memory(), + m_scratch_space, m_scratch_flags)) { + // This is the final block with the final result at the final threads' + // location + + size_type* const shared = + ::Kokkos::Experimental::kokkos_impl_hip_shared_memory() + + (hipBlockDim_y - 1) * word_count.value; + size_type* const global = m_result_ptr_device_accessible + ? reinterpret_cast(m_result_ptr) + : m_scratch_space; + + if (hipThreadIdx_y == 0) { + Kokkos::Impl::FunctorFinal::final( + ReducerConditional::select(m_functor, m_reducer), shared); + } + + if (::Kokkos::Experimental::Impl::HIPTraits::WarpSize < + word_count.value) { + __syncthreads(); + } + + for (unsigned i = hipThreadIdx_y; i < word_count.value; + i += hipBlockDim_y) { + global[i] = shared[i]; + } + } + } + + // Determine block size constrained by shared memory: + inline unsigned local_block_size(const FunctorType& f) { + // FIXME_HIP I don't know where 8 comes from + unsigned int n = ::Kokkos::Experimental::Impl::HIPTraits::WarpSize * 8; + int shmem_size = + hip_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::Experimental::Impl::hip_get_max_block_size< + ParallelReduce, LaunchBounds>(f, 1, shmem_size, 0)))) { + n >>= 1; + shmem_size = + hip_single_inter_block_reduce_scan_shmem( + f, n); + } + return n; + } + + inline void execute() { + const index_type nwork = m_policy.end() - m_policy.begin(); + if (nwork) { + const int block_size = local_block_size(m_functor); + + m_scratch_space = + ::Kokkos::Experimental::Impl::hip_internal_scratch_space( + ValueTraits::value_size( + ReducerConditional::select(m_functor, m_reducer)) * + block_size /* block_size == max block_count */); + m_scratch_flags = + ::Kokkos::Experimental::Impl::hip_internal_scratch_flags( + sizeof(size_type)); + + // REQUIRED ( 1 , N , 1 ) + const dim3 block(1, block_size, 1); + // Required grid.x <= block.y + const dim3 grid( + std::min(int(block.y), int((nwork + block.y - 1) / block.y)), 1, 1); + + const int shmem = + UseShflReduction + ? 0 + : hip_single_inter_block_reduce_scan_shmem(m_functor, + block.y); + + Kokkos::Experimental::Impl::HIPParallelLaunch( + *this, grid, block, shmem, + m_policy.space().impl_internal_space_instance(), + false); // copy to device and execute + + if (!m_result_ptr_device_accessible) { + ::Kokkos::Experimental::HIP().fence(); + + if (m_result_ptr) { + const int size = ValueTraits::value_size( + ReducerConditional::select(m_functor, m_reducer)); + DeepCopy( + m_result_ptr, m_scratch_space, size); + } + } + } else { + if (m_result_ptr) { + ValueInit::init(ReducerConditional::select(m_functor, m_reducer), + m_result_ptr); + } + } + } + + template + ParallelReduce(const FunctorType& arg_functor, const Policy& arg_policy, + const ViewType& arg_result, + typename std::enable_if::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::accessible) {} + + ParallelReduce(const FunctorType& arg_functor, 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::accessible) {} +}; + +template +class ParallelScanHIPBase { + public: + using Policy = Kokkos::RangePolicy; + + protected: + using Member = typename Policy::member_type; + using WorkTag = typename Policy::work_tag; + using WorkRange = typename Policy::WorkRange; + using LaunchBounds = typename Policy::launch_bounds; + + using ValueTraits = Kokkos::Impl::FunctorValueTraits; + using ValueInit = Kokkos::Impl::FunctorValueInit; + using ValueOps = Kokkos::Impl::FunctorValueOps; + + public: + using pointer_type = typename ValueTraits::pointer_type; + using reference_type = typename ValueTraits::reference_type; + using functor_type = FunctorType; + using size_type = Kokkos::Experimental::HIP::size_type; + using index_type = typename Policy::index_type; + + protected: + // Algorithmic constraints: + // (a) hipBlockDim_y is a power of two + // (b) hipBlockDim_x == hipBlockDim_z == 1 + // (c) hipGridDim_x <= hipBlockDim_y * hipBlockDim_y + // (d) hipGridDim_y == hipGridDim_z == 1 + + const FunctorType m_functor; + const Policy m_policy; + size_type* m_scratch_space = nullptr; + size_type* m_scratch_flags = nullptr; + size_type m_final = false; + int m_grid_x = 0; + + private: + template + __device__ inline + typename std::enable_if::value>::type + exec_range(const Member& i, reference_type update, + const bool final_result) const { + m_functor(i, update, final_result); + } + + template + __device__ inline + typename std::enable_if::value>::type + exec_range(const Member& i, reference_type update, + const bool final_result) const { + m_functor(TagType(), i, update, final_result); + } + + //---------------------------------------- + + __device__ inline void initial(void) const { + const integral_nonzero_constant + word_count(ValueTraits::value_size(m_functor) / sizeof(size_type)); + + size_type* const shared_value = + Kokkos::Experimental::kokkos_impl_hip_shared_memory() + + word_count.value * hipThreadIdx_y; + + ValueInit::init(m_functor, shared_value); + + // Number of blocks is bounded so that the reduction can be limited to two + // passes. Each thread block is given an approximately equal amount of work + // to perform. Accumulate the values for this block. The accumulation + // ordering does not match the final pass, but is arithmetically equivalent. + + const WorkRange range(m_policy, hipBlockIdx_x, hipGridDim_x); + + for (Member iwork = range.begin() + hipThreadIdx_y, iwork_end = range.end(); + iwork < iwork_end; iwork += hipBlockDim_y) { + this->template exec_range( + iwork, ValueOps::reference(shared_value), false); + } + + // Reduce and scan, writing out scan of blocks' totals and block-groups' + // totals. Blocks' scan values are written to 'hipBlockIdx_x' location. + // Block-groups' scan values are at: i = ( j * hipBlockDim_y - 1 ) for i < + // hipGridDim_x + hip_single_inter_block_reduce_scan( + m_functor, hipBlockIdx_x, hipGridDim_x, + Kokkos::Experimental::kokkos_impl_hip_shared_memory(), + m_scratch_space, m_scratch_flags); + } + + //---------------------------------------- + + __device__ inline void final(void) const { + const integral_nonzero_constant + word_count(ValueTraits::value_size(m_functor) / sizeof(size_type)); + + // Use shared memory as an exclusive scan: { 0 , value[0] , value[1] , + // value[2] , ... } + size_type* const shared_data = + Kokkos::Experimental::kokkos_impl_hip_shared_memory(); + size_type* const shared_prefix = + shared_data + word_count.value * hipThreadIdx_y; + size_type* const shared_accum = + shared_data + word_count.value * (hipBlockDim_y + 1); + + // Starting value for this thread block is the previous block's total. + if (hipBlockIdx_x) { + size_type* const block_total = + m_scratch_space + word_count.value * (hipBlockIdx_x - 1); + for (unsigned i = hipThreadIdx_y; i < word_count.value; ++i) { + shared_accum[i] = block_total[i]; + } + } else if (0 == hipThreadIdx_y) { + ValueInit::init(m_functor, shared_accum); + } + + const WorkRange range(m_policy, hipBlockIdx_x, hipGridDim_x); + + for (typename Policy::member_type iwork_base = range.begin(); + iwork_base < range.end(); iwork_base += hipBlockDim_y) { + const typename Policy::member_type iwork = iwork_base + hipThreadIdx_y; + + __syncthreads(); // Don't overwrite previous iteration values until they + // are used + + ValueInit::init(m_functor, shared_prefix + word_count.value); + + // Copy previous block's accumulation total into thread[0] prefix and + // inclusive scan value of this block + for (unsigned i = hipThreadIdx_y; i < word_count.value; ++i) { + shared_data[i + word_count.value] = shared_data[i] = shared_accum[i]; + } + + // Make sure the write is seen by all threads + __threadfence_block(); + + // Call functor to accumulate inclusive scan value for this work item + const bool doWork = (iwork < range.end()); + if (doWork) { + this->template exec_range( + iwork, ValueOps::reference(shared_prefix + word_count.value), + false); + } + + // Scan block values into locations shared_data[1..hipBlockDim_y] + hip_intra_block_reduce_scan( + m_functor, + typename ValueTraits::pointer_type(shared_data + word_count.value)); + + { + size_type* const block_total = + shared_data + word_count.value * hipBlockDim_y; + for (unsigned i = hipThreadIdx_y; i < word_count.value; ++i) { + shared_accum[i] = block_total[i]; + } + } + + // Call functor with exclusive scan value + if (doWork) { + this->template exec_range( + iwork, ValueOps::reference(shared_prefix), true); + } + } + } + + public: + //---------------------------------------- + + __device__ inline void operator()(void) const { + if (!m_final) { + initial(); + } else { + final(); + } + } + + // Determine block size constrained by shared memory: + inline unsigned local_block_size(const FunctorType& f) { + // hipBlockDim_y must be power of two = 128 (2 warps) or 256 (4 warps) or + // 512 (8 warps) hipGridDim_x <= hipBlockDim_y * hipBlockDim_y + // + // TODO check best option + + unsigned n = Experimental::Impl::HIPTraits::WarpSize * 4; + while (n && static_cast(m_policy.space() + .impl_internal_space_instance() + ->m_maxShmemPerBlock) < + hip_single_inter_block_reduce_scan_shmem(f, n)) { + n >>= 1; + } + return n; + } + + inline void impl_execute() { + const index_type nwork = m_policy.end() - m_policy.begin(); + if (nwork) { + // FIXME_HIP we cannot choose it larger for large work sizes to work + // correctly, the unit tests fail with wrong results + const int gridMaxComputeCapability_2x = 0x01fff; + + // FIXME_HIP block sizes greater than 256 don't work correctly, + // the unit tests fail with wrong results + const int block_size = + std::min(static_cast(local_block_size(m_functor)), 256); + + const int grid_max = + std::min(block_size * block_size, gridMaxComputeCapability_2x); + + // At most 'max_grid' blocks: + const int max_grid = + std::min(grid_max, (nwork + block_size - 1) / block_size); + + // How much work per block: + const int work_per_block = (nwork + max_grid - 1) / max_grid; + + // How many block are really needed for this much work: + m_grid_x = (nwork + work_per_block - 1) / work_per_block; + + m_scratch_space = Kokkos::Experimental::Impl::hip_internal_scratch_space( + ValueTraits::value_size(m_functor) * m_grid_x); + m_scratch_flags = Kokkos::Experimental::Impl::hip_internal_scratch_flags( + sizeof(size_type) * 1); + + dim3 grid(m_grid_x, 1, 1); + 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; + Kokkos::Experimental::Impl::HIPParallelLaunch( + *this, grid, block, shmem, + m_policy.space().impl_internal_space_instance(), + false); // copy to device and execute + + m_final = true; + Kokkos::Experimental::Impl::HIPParallelLaunch( + *this, grid, block, shmem, + m_policy.space().impl_internal_space_instance(), + false); // copy to device and execute + } + } + + ParallelScanHIPBase(const FunctorType& arg_functor, const Policy& arg_policy) + : m_functor(arg_functor), m_policy(arg_policy) {} +}; + +template +class ParallelScan, + Kokkos::Experimental::HIP> + : private ParallelScanHIPBase { + public: + using Base = ParallelScanHIPBase; + using Base::operator(); + + inline void execute() { Base::impl_execute(); } + + ParallelScan(const FunctorType& arg_functor, + const typename Base::Policy& arg_policy) + : Base(arg_functor, arg_policy) {} +}; + +//---------------------------------------------------------------------------- + +template +class ParallelScanWithTotal, + ReturnType, Kokkos::Experimental::HIP> + : private ParallelScanHIPBase { + public: + using Base = ParallelScanHIPBase; + using Base::operator(); + + ReturnType& m_returnvalue; + + inline void execute() { + Base::impl_execute(); + + const auto nwork = Base::m_policy.end() - Base::m_policy.begin(); + if (nwork) { + const int size = Base::ValueTraits::value_size(Base::m_functor); + DeepCopy( + &m_returnvalue, + Base::m_scratch_space + (Base::m_grid_x - 1) * size / sizeof(int), + size); + } + } + + ParallelScanWithTotal(const FunctorType& arg_functor, + const typename Base::Policy& arg_policy, + ReturnType& arg_returnvalue) + : Base(arg_functor, arg_policy), m_returnvalue(arg_returnvalue) {} +}; + +} // namespace Impl +} // namespace Kokkos + +#endif + +#endif diff --git a/lib/kokkos/core/src/HIP/Kokkos_HIP_Parallel_Team.hpp b/lib/kokkos/core/src/HIP/Kokkos_HIP_Parallel_Team.hpp new file mode 100644 index 0000000000..53097f3643 --- /dev/null +++ b/lib/kokkos/core/src/HIP/Kokkos_HIP_Parallel_Team.hpp @@ -0,0 +1,562 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// 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 NTESS "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 NTESS 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 KOKKO_HIP_PARALLEL_TEAM_HPP +#define KOKKO_HIP_PARALLEL_TEAM_HPP + +#include + +#if defined(__HIPCC__) + +#include +#include +#include +#include + +namespace Kokkos { +namespace Impl { +template +class TeamPolicyInternal + : public PolicyTraits { + public: + using execution_policy = TeamPolicyInternal; + + using traits = PolicyTraits; + + template + friend class TeamPolicyInternal; + + private: + static int constexpr MAX_WARP = 8; + + typename traits::execution_space m_space; + int m_league_size; + int m_team_size; + int m_vector_length; + int m_team_scratch_size[2]; + int m_thread_scratch_size[2]; + int m_chunk_size; + + public: + using execution_space = Kokkos::Experimental::HIP; + + template + TeamPolicyInternal(TeamPolicyInternal const& 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=(TeamPolicyInternal const& 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; + return *this; + } + + template + int team_size_max(FunctorType const& f, ParallelForTag const&) const { + using closure_type = + Impl::ParallelFor >; + hipFuncAttributes attr = ::Kokkos::Experimental::Impl::HIPParallelLaunch< + closure_type, + typename traits::launch_bounds>::get_hip_func_attributes(); + int const block_size = ::Kokkos::Experimental::Impl::hip_get_max_block_size< + FunctorType, typename traits::launch_bounds>( + space().impl_internal_space_instance(), attr, f, + static_cast(vector_length()), + static_cast(team_scratch_size(0)) + 2 * sizeof(double), + static_cast(thread_scratch_size(0)) + sizeof(double)); + return block_size / vector_length(); + } + + template + int team_size_recommended(FunctorType const& f, ParallelForTag const&) const { + typedef Impl::ParallelFor > + closure_type; + hipFuncAttributes attr = ::Kokkos::Experimental::Impl::HIPParallelLaunch< + closure_type, + typename traits::launch_bounds>::get_hip_func_attributes(); + int const block_size = ::Kokkos::Experimental::Impl::hip_get_opt_block_size< + FunctorType, typename traits::launch_bounds>( + space().impl_internal_space_instance(), attr, f, + static_cast(vector_length()), + static_cast(team_scratch_size(0)) + 2 * sizeof(double), + static_cast(thread_scratch_size(0)) + sizeof(double)); + return block_size / vector_length(); + } + + static int vector_length_max() { + return ::Kokkos::Experimental::Impl::HIPTraits::WarpSize; + } + + 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; + } + + static int scratch_size_max(int level) { + return ( + level == 0 ? 1024 * 40 : // FIXME_HIP arbitrarily setting this to 48kB + 20 * 1024 * 1024); // FIXME_HIP arbitrarily setting this to 20MB + } + + int vector_length() const { return m_vector_length; } + + int team_size() const { return m_team_size; } + + int league_size() const { return m_league_size; } + + int scratch_size(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]; + } + + int team_scratch_size(int level) const { return m_team_scratch_size[level]; } + + int thread_scratch_size(int level) const { + return m_thread_scratch_size[level]; + } + + typename traits::execution_space space() const { return m_space; } + + TeamPolicyInternal() + : 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}, + m_chunk_size(::Kokkos::Experimental::Impl::HIPTraits::WarpSize) {} + + /** \brief Specify league size, request team size */ + TeamPolicyInternal(const execution_space space_, int league_size_, + int team_size_request, int vector_length_request = 1) + : m_space(space_), + m_league_size(league_size_), + m_team_size(team_size_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(::Kokkos::Experimental::Impl::HIPTraits::WarpSize) { + // Make sure league size is permissable + if (league_size_ >= + static_cast( + ::Kokkos::Experimental::Impl::hip_internal_maximum_grid_count())) + Impl::throw_runtime_exception( + "Requested too large league_size for TeamPolicy on HIP execution " + "space."); + + // Make sure total block size is permissable + if (m_team_size * m_vector_length > 1024) { + Impl::throw_runtime_exception( + std::string("Kokkos::TeamPolicy< HIP > the team size is too large. " + "Team size x vector length must be smaller than 1024.")); + } + } + + /** \brief Specify league size, request team size */ + TeamPolicyInternal(const execution_space space_, int league_size_, + const Kokkos::AUTO_t& /* team_size_request */, + int vector_length_request = 1) + : m_space(space_), + m_league_size(league_size_), + m_team_size(-1), + 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(::Kokkos::Experimental::Impl::HIPTraits::WarpSize) { + // Make sure league size is permissable + if (league_size_ >= + static_cast( + ::Kokkos::Experimental::Impl::hip_internal_maximum_grid_count())) + Impl::throw_runtime_exception( + "Requested too large league_size for TeamPolicy on HIP execution " + "space."); + } + + TeamPolicyInternal(int league_size_, int team_size_request, + int vector_length_request = 1) + : m_space(typename traits::execution_space()), + m_league_size(league_size_), + m_team_size(team_size_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(::Kokkos::Experimental::Impl::HIPTraits::WarpSize) { + // Make sure league size is permissable + if (league_size_ >= + static_cast( + ::Kokkos::Experimental::Impl::hip_internal_maximum_grid_count())) + Impl::throw_runtime_exception( + "Requested too large league_size for TeamPolicy on HIP execution " + "space."); + + // Make sure total block size is permissable + if (m_team_size * m_vector_length > 1024) { + Impl::throw_runtime_exception( + std::string("Kokkos::TeamPolicy< HIP > the team size is too large. " + "Team size x vector length must be smaller than 1024.")); + } + } + + TeamPolicyInternal(int league_size_, + const Kokkos::AUTO_t& /* team_size_request */, + int vector_length_request = 1) + : m_space(typename traits::execution_space()), + m_league_size(league_size_), + m_team_size(-1), + 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(::Kokkos::Experimental::Impl::HIPTraits::WarpSize) { + // Make sure league size is permissable + if (league_size_ >= + static_cast( + ::Kokkos::Experimental::Impl::hip_internal_maximum_grid_count())) + Impl::throw_runtime_exception( + "Requested too large league_size for TeamPolicy on HIP execution " + "space."); + } + + int chunk_size() const { return m_chunk_size; } + + TeamPolicyInternal& set_chunk_size(typename traits::index_type chunk_size_) { + m_chunk_size = chunk_size_; + return *this; + } + + /** \brief set per team scratch size for a specific level of the scratch + * hierarchy */ + TeamPolicyInternal& set_scratch_size(int level, + PerTeamValue const& per_team) { + m_team_scratch_size[level] = per_team.value; + return *this; + } + + /** \brief set per thread scratch size for a specific level of the scratch + * hierarchy */ + TeamPolicyInternal& set_scratch_size(int level, + PerThreadValue const& per_thread) { + m_thread_scratch_size[level] = per_thread.value; + return *this; + } + + /** \brief set per thread and per team scratch size for a specific level of + * the scratch hierarchy */ + TeamPolicyInternal& set_scratch_size(int level, PerTeamValue const& per_team, + PerThreadValue const& per_thread) { + m_team_scratch_size[level] = per_team.value; + m_thread_scratch_size[level] = per_thread.value; + return *this; + } + + using member_type = Kokkos::Impl::HIPTeamMember; + + protected: + template + int internal_team_size_common(const FunctorType& f, + BlockSizeCallable&& block_size_callable) const { + using closure_type = ClosureType; + using functor_value_traits = + Impl::FunctorValueTraits; + + hipFuncAttributes attr = ::Kokkos::Experimental::Impl::HIPParallelLaunch< + closure_type, + typename traits::launch_bounds>::get_hip_func_attributes(); + const int block_size = std::forward(block_size_callable)( + space().impl_internal_space_instance(), attr, f, + static_cast(vector_length()), + static_cast(team_scratch_size(0)) + 2 * sizeof(double), + static_cast(thread_scratch_size(0)) + sizeof(double) + + ((functor_value_traits::StaticValueSize != 0) + ? 0 + : functor_value_traits::value_size(f))); + KOKKOS_ASSERT(block_size > 0); + + // 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(); + } + + template + int internal_team_size_max(const FunctorType& f) const { + return internal_team_size_common( + f, ::Kokkos::Experimental::Impl::hip_get_max_block_size< + FunctorType, typename traits::launch_bounds>); + } + + template + int internal_team_size_recommended(const FunctorType& f) const { + return internal_team_size_common( + f, ::Kokkos::Experimental::Impl::hip_get_opt_block_size< + FunctorType, typename traits::launch_bounds>); + } +}; + +struct HIPLockArrays { + std::int32_t* atomic = nullptr; + std::int32_t* scratch = nullptr; + std::int32_t n = 0; +}; + +template +class ParallelFor, + Kokkos::Experimental::HIP> { + public: + using Policy = TeamPolicyInternal; + using functor_type = FunctorType; + using size_type = ::Kokkos::Experimental::HIP::size_type; + + private: + using Member = typename Policy::member_type; + using WorkTag = typename Policy::work_tag; + using LaunchBounds = typename Policy::launch_bounds; + + // Algorithmic constraints: hipBlockDim_y is a power of two AND hipBlockDim_y + // == hipBlockDim_z == 1 shared memory utilization: + // + // [ team reduce space ] + // [ team shared space ] + + FunctorType const m_functor; + Policy const m_policy; + size_type const m_league_size; + int m_team_size; + size_type const m_vector_size; + int m_shmem_begin; + int m_shmem_size; + void* m_scratch_ptr[2]; + int m_scratch_size[2]; + mutable HIPLockArrays hip_lock_arrays; + + template + __device__ inline + typename std::enable_if::value>::type + exec_team(const Member& member) const { + m_functor(member); + } + + template + __device__ inline + typename std::enable_if::value>::type + exec_team(const Member& member) const { + m_functor(TagType(), member); + } + + public: + __device__ inline void operator()(void) const { + // Iterate this block through the league + int64_t threadid = 0; + if (m_scratch_size[1] > 0) { + __shared__ int64_t base_thread_id; + if (hipThreadIdx_x == 0 && hipThreadIdx_y == 0) { + threadid = (hipBlockIdx_x * hipBlockDim_z + hipThreadIdx_z) % + (hip_lock_arrays.n / (hipBlockDim_x * hipBlockDim_y)); + threadid *= hipBlockDim_x * hipBlockDim_y; + int done = 0; + while (!done) { + done = (0 == atomicCAS(&hip_lock_arrays.scratch[threadid], 0, 1)); + if (!done) { + threadid += hipBlockDim_x * hipBlockDim_y; + if (int64_t(threadid + hipBlockDim_x * hipBlockDim_y) >= + int64_t(hip_lock_arrays.n)) + threadid = 0; + } + } + base_thread_id = threadid; + } + __syncthreads(); + threadid = base_thread_id; + } + + int const int_league_size = static_cast(m_league_size); + for (int league_rank = hipBlockIdx_x; league_rank < int_league_size; + league_rank += hipGridDim_x) { + this->template exec_team(typename Policy::member_type( + ::Kokkos::Experimental::kokkos_impl_hip_shared_memory(), + m_shmem_begin, m_shmem_size, + static_cast( + static_cast(m_scratch_ptr[1]) + + ptrdiff_t(threadid / (hipBlockDim_x * hipBlockDim_y)) * + m_scratch_size[1]), + m_scratch_size[1], league_rank, m_league_size)); + } + if (m_scratch_size[1] > 0) { + __syncthreads(); + if (hipThreadIdx_x == 0 && hipThreadIdx_y == 0) + hip_lock_arrays.scratch[threadid] = 0; + } + } + + inline void execute() const { + HIP_SAFE_CALL(hipMalloc( + &hip_lock_arrays.atomic, + sizeof(std::int32_t) * (KOKKOS_IMPL_HIP_SPACE_ATOMIC_MASK + 1))); + HIP_SAFE_CALL(hipMalloc( + &hip_lock_arrays.scratch, + sizeof(std::int32_t) * (::Kokkos::Experimental::HIP::concurrency()))); + HIP_SAFE_CALL(hipMemset( + hip_lock_arrays.scratch, 0, + sizeof(std::int32_t) * (::Kokkos::Experimental::HIP::concurrency()))); + hip_lock_arrays.n = ::Kokkos::Experimental::HIP::concurrency(); + + int64_t const shmem_size_total = m_shmem_begin + m_shmem_size; + dim3 const grid(static_cast(m_league_size), 1, 1); + dim3 const block(static_cast(m_vector_size), + static_cast(m_team_size), 1); + + ::Kokkos::Experimental::Impl::HIPParallelLaunch( + *this, grid, block, shmem_size_total, + m_policy.space().impl_internal_space_instance(), + true); // copy to device and execute + + if (hip_lock_arrays.atomic) { + HIP_SAFE_CALL(hipFree(hip_lock_arrays.atomic)); + hip_lock_arrays.atomic = nullptr; + } + if (hip_lock_arrays.scratch) { + HIP_SAFE_CALL(hipFree(hip_lock_arrays.scratch)); + hip_lock_arrays.scratch = nullptr; + } + hip_lock_arrays.n = 0; + } + + ParallelFor(FunctorType const& arg_functor, Policy const& arg_policy) + : m_functor(arg_functor), + m_policy(arg_policy), + m_league_size(arg_policy.league_size()), + m_team_size(arg_policy.team_size()), + m_vector_size(arg_policy.vector_length()) { + hipFuncAttributes attr = ::Kokkos::Experimental::Impl::HIPParallelLaunch< + ParallelFor, LaunchBounds>::get_hip_func_attributes(); + m_team_size = + m_team_size >= 0 + ? m_team_size + : ::Kokkos::Experimental::Impl::hip_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::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[0] = nullptr; + m_scratch_ptr[1] = + m_team_size <= 0 + ? nullptr + : ::Kokkos::Experimental::Impl::hip_resize_scratch_space( + static_cast(m_scratch_size[1]) * + static_cast( + ::Kokkos::Experimental::HIP::concurrency() / + (m_team_size * m_vector_size))); + + int const shmem_size_total = m_shmem_begin + m_shmem_size; + 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< HIP > insufficient shared memory")); + } + + if (static_cast(m_team_size) > + static_cast( + ::Kokkos::Experimental::Impl::hip_get_max_block_size( + 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< HIP > requested too large team size.")); + } + } +}; +} // namespace Impl +} // namespace Kokkos + +#endif + +#endif diff --git a/lib/kokkos/core/src/HIP/Kokkos_HIP_ReduceScan.hpp b/lib/kokkos/core/src/HIP/Kokkos_HIP_ReduceScan.hpp new file mode 100644 index 0000000000..362128c411 --- /dev/null +++ b/lib/kokkos/core/src/HIP/Kokkos_HIP_ReduceScan.hpp @@ -0,0 +1,420 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// 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 NTESS "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 NTESS 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_HIP_REDUCESCAN_HPP +#define KOKKOS_HIP_REDUCESCAN_HPP + +#include + +#if defined(__HIPCC__) + +namespace Kokkos { +namespace Impl { +template +struct HIPReductionsFunctor; + +template +struct HIPReductionsFunctor { + using ValueTraits = FunctorValueTraits; + using ValueJoin = FunctorValueJoin; + using ValueInit = FunctorValueInit; + using ValueOps = FunctorValueOps; + using pointer_type = typename ValueTraits::pointer_type; + using Scalar = typename ValueTraits::value_type; + + __device__ static inline void scalar_intra_warp_reduction( + FunctorType const& functor, + Scalar* value, // Contribution + bool const skip_vector, // Skip threads if Kokkos vector lanes are not + // part of the reduction + int const width) // How much of the warp participates + { + int const lane_id = (hipThreadIdx_y * hipBlockDim_x + hipThreadIdx_x) % + ::Kokkos::Experimental::Impl::HIPTraits::WarpSize; + for (int delta = skip_vector ? hipBlockDim_x : 1; delta < width; + delta *= 2) { + if (lane_id + delta < ::Kokkos::Experimental::Impl::HIPTraits::WarpSize) { + ValueJoin::join(functor, value, value + delta); + } + } + *value = *(value - lane_id); + } + + __device__ static inline void scalar_intra_block_reduction( + FunctorType const& functor, Scalar value, bool const skip, Scalar* result, + int const /*shared_elements*/, Scalar* shared_team_buffer_element) { + int const warp_id = (hipThreadIdx_y * hipBlockDim_x) / + ::Kokkos::Experimental::Impl::HIPTraits::WarpSize; + Scalar* const my_shared_team_buffer_element = + shared_team_buffer_element + hipThreadIdx_y * hipBlockDim_x + + hipThreadIdx_x; + *my_shared_team_buffer_element = value; + // Warp Level Reduction, ignoring Kokkos vector entries + scalar_intra_warp_reduction( + functor, my_shared_team_buffer_element, skip, + ::Kokkos::Experimental::Impl::HIPTraits::WarpSize); + // Wait for every warp to be done before using one warp to do final cross + // warp reduction + __syncthreads(); + + if (warp_id == 0) { + const unsigned int delta = + (hipThreadIdx_y * hipBlockDim_x + hipThreadIdx_x) * + ::Kokkos::Experimental::Impl::HIPTraits::WarpSize; + if (delta < hipBlockDim_x * hipBlockDim_y) + *my_shared_team_buffer_element = shared_team_buffer_element[delta]; + scalar_intra_warp_reduction( + functor, my_shared_team_buffer_element, false, + hipBlockDim_x * hipBlockDim_y / + ::Kokkos::Experimental::Impl::HIPTraits::WarpSize); + if (hipThreadIdx_x + hipThreadIdx_y == 0) + *result = *shared_team_buffer_element; + } + } + + __device__ static inline bool scalar_inter_block_reduction( + FunctorType const& functor, + ::Kokkos::Experimental::HIP::size_type const /*block_id*/, + ::Kokkos::Experimental::HIP::size_type const block_count, + ::Kokkos::Experimental::HIP::size_type* const shared_data, + ::Kokkos::Experimental::HIP::size_type* const global_data, + ::Kokkos::Experimental::HIP::size_type* const global_flags) { + Scalar* const global_team_buffer_element = + reinterpret_cast(global_data); + Scalar* const my_global_team_buffer_element = + global_team_buffer_element + hipBlockIdx_x; + Scalar* shared_team_buffer_elements = + reinterpret_cast(shared_data); + Scalar value = shared_team_buffer_elements[hipThreadIdx_y]; + int shared_elements = (hipBlockDim_x * hipBlockDim_y) / + ::Kokkos::Experimental::Impl::HIPTraits::WarpSize; + int global_elements = block_count; + __syncthreads(); + + // Do the scalar reduction inside each block + scalar_intra_block_reduction(functor, value, true, + my_global_team_buffer_element, shared_elements, + shared_team_buffer_elements); + __syncthreads(); + + // Use the last block that is done to do the do the reduction across the + // block + __shared__ unsigned int num_teams_done; + if (hipThreadIdx_x + hipThreadIdx_y == 0) { + __threadfence(); + num_teams_done = Kokkos::atomic_fetch_add(global_flags, 1) + 1; + } + bool is_last_block = false; + // FIXME_HIP HIP does not support syncthreads_or. That's why we need to make + // num_teams_done __shared__ + // if (__syncthreads_or(num_teams_done == hipGridDim_x)) {*/ + __syncthreads(); + if (num_teams_done == hipGridDim_x) { + is_last_block = true; + *global_flags = 0; + ValueInit::init(functor, &value); + for (int i = hipThreadIdx_y * hipBlockDim_x + hipThreadIdx_x; + i < global_elements; i += hipBlockDim_x * hipBlockDim_y) { + ValueJoin::join(functor, &value, &global_team_buffer_element[i]); + } + scalar_intra_block_reduction( + functor, value, false, + shared_team_buffer_elements + (hipBlockDim_y - 1), shared_elements, + shared_team_buffer_elements); + } + + return is_last_block; + } +}; + +//---------------------------------------------------------------------------- +/* + * Algorithmic constraints: + * (a) hipBlockDim_y is a power of two + * (b) hipBlockDim_y <= 1024 + * (c) hipBlockDim_x == hipBlockDim_z == 1 + */ + +template +__device__ void hip_intra_block_reduce_scan( + FunctorType const& functor, + typename FunctorValueTraits::pointer_type const + base_data) { + using ValueTraits = FunctorValueTraits; + using ValueJoin = FunctorValueJoin; + + using pointer_type = typename ValueTraits::pointer_type; + + unsigned int const value_count = ValueTraits::value_count(functor); + unsigned int const BlockSizeMask = hipBlockDim_y - 1; + int const WarpMask = Experimental::Impl::HIPTraits::WarpSize - 1; + + // Must have power of two thread count + if ((hipBlockDim_y - 1) & hipBlockDim_y) { + Kokkos::abort( + "HIP::hip_intra_block_reduce_scan requires power-of-two " + "hipBlockDim_y\n"); + } + + auto block_reduce_step = + [&functor, value_count](int const R, pointer_type const TD, int const S) { + if (R > ((1 << S) - 1)) { + ValueJoin::join(functor, TD, (TD - (value_count << S))); + } + }; + + { // Intra-warp reduction: + const unsigned rtid_intra = hipThreadIdx_y & WarpMask; + const pointer_type tdata_intra = base_data + value_count * hipThreadIdx_y; + + block_reduce_step(rtid_intra, tdata_intra, 0); + block_reduce_step(rtid_intra, tdata_intra, 1); + block_reduce_step(rtid_intra, tdata_intra, 2); + block_reduce_step(rtid_intra, tdata_intra, 3); + block_reduce_step(rtid_intra, tdata_intra, 4); + block_reduce_step(rtid_intra, tdata_intra, 5); + } + + __syncthreads(); // Wait for all warps to reduce + + { // Inter-warp reduce-scan by a single warp to avoid extra synchronizations + unsigned int const rtid_inter = + ((hipThreadIdx_y + 1) + << Experimental::Impl::HIPTraits::WarpIndexShift) - + 1; + + if (rtid_inter < hipBlockDim_y) { + pointer_type const tdata_inter = base_data + value_count * rtid_inter; + + if ((1 << 6) < BlockSizeMask) { + block_reduce_step(rtid_inter, tdata_inter, 6); + } + if ((1 << 7) < BlockSizeMask) { + block_reduce_step(rtid_inter, tdata_inter, 7); + } + if ((1 << 8) < BlockSizeMask) { + block_reduce_step(rtid_inter, tdata_inter, 8); + } + if ((1 << 9) < BlockSizeMask) { + block_reduce_step(rtid_inter, tdata_inter, 9); + } + if ((1 << 10) < BlockSizeMask) { + block_reduce_step(rtid_inter, tdata_inter, 10); + } + } + } + + __syncthreads(); // Wait for inter-warp reduce-scan to complete + + if (DoScan) { + // Update all the values for the respective warps (except for the last one) + // by adding from the last value of the previous warp. + if (hipThreadIdx_y >= Experimental::Impl::HIPTraits::WarpSize && + (hipThreadIdx_y & WarpMask) != + Experimental::Impl::HIPTraits::WarpSize - 1) { + const int offset_to_previous_warp_total = + (hipThreadIdx_y & (~WarpMask)) - 1; + ValueJoin::join(functor, base_data + value_count * hipThreadIdx_y, + base_data + value_count * offset_to_previous_warp_total); + } + } +} + +//---------------------------------------------------------------------------- +/**\brief Input value-per-thread starting at 'shared_data'. + * Reduction value at last thread's location. + * + * If 'DoScan' then write blocks' scan values and block-groups' scan values. + * + * Global reduce result is in the last threads' 'shared_data' location. + */ + +template +__device__ bool hip_single_inter_block_reduce_scan2( + FunctorType const& functor, + ::Kokkos::Experimental::HIP::size_type const block_id, + ::Kokkos::Experimental::HIP::size_type const block_count, + ::Kokkos::Experimental::HIP::size_type* const shared_data, + ::Kokkos::Experimental::HIP::size_type* const global_data, + ::Kokkos::Experimental::HIP::size_type* const global_flags) { + using size_type = ::Kokkos::Experimental::HIP::size_type; + using ValueTraits = FunctorValueTraits; + using ValueJoin = FunctorValueJoin; + using ValueInit = FunctorValueInit; + using ValueOps = FunctorValueOps; + + using pointer_type = typename ValueTraits::pointer_type; + + // '__ffs' = position of the least significant bit set to 1. + // 'hipBlockDim_y' is guaranteed to be a power of two so this + // is the integral shift value that can replace an integral divide. + unsigned int const BlockSizeShift = __ffs(hipBlockDim_y) - 1; + unsigned int const BlockSizeMask = hipBlockDim_y - 1; + + // Must have power of two thread count + if (BlockSizeMask & hipBlockDim_y) { + Kokkos::abort( + "HIP::hip_single_inter_block_reduce_scan requires power-of-two " + "blockDim"); + } + + integral_nonzero_constant const + word_count(ValueTraits::value_size(functor) / sizeof(size_type)); + + // Reduce the accumulation for the entire block. + hip_intra_block_reduce_scan( + functor, pointer_type(shared_data)); + + { + // Write accumulation total to global scratch space. + // Accumulation total is the last thread's data. + size_type* const shared = shared_data + word_count.value * BlockSizeMask; + size_type* const global = global_data + word_count.value * block_id; + + for (size_t i = hipThreadIdx_y; i < word_count.value; i += hipBlockDim_y) { + global[i] = shared[i]; + } + } + + // Contributing blocks note that their contribution has been completed via an + // atomic-increment flag If this block is not the last block to contribute to + // this group then the block is done. + // FIXME_HIP __syncthreads_or is not supported by HIP yet. + // const bool is_last_block = !__syncthreads_or( + // threadIdx.y + // ? 0 + // : (1 + atomicInc(global_flags, block_count - 1) < block_count)); + __shared__ int n_done; + n_done = 0; + __syncthreads(); + if (hipThreadIdx_y == 0) { + __threadfence(); + n_done = 1 + atomicInc(global_flags, block_count - 1); + } + __syncthreads(); + bool const is_last_block = (n_done == static_cast(block_count)); + + if (is_last_block) { + size_type const b = (static_cast(block_count) * + static_cast(hipThreadIdx_y)) >> + BlockSizeShift; + size_type const e = (static_cast(block_count) * + static_cast(hipThreadIdx_y + 1)) >> + BlockSizeShift; + + { + void* const shared_ptr = shared_data + word_count.value * hipThreadIdx_y; + /* reference_type shared_value = */ ValueInit::init(functor, shared_ptr); + + for (size_type i = b; i < e; ++i) { + ValueJoin::join(functor, shared_ptr, + global_data + word_count.value * i); + } + } + + hip_intra_block_reduce_scan( + functor, pointer_type(shared_data)); + + if (DoScan) { + size_type* const shared_value = + shared_data + word_count.value * (hipThreadIdx_y ? hipThreadIdx_y - 1 + : hipBlockDim_y); + + if (!hipThreadIdx_y) { + ValueInit::init(functor, shared_value); + } + + // Join previous inclusive scan value to each member + for (size_type i = b; i < e; ++i) { + size_type* const global_value = global_data + word_count.value * i; + ValueJoin::join(functor, shared_value, global_value); + ValueOps::copy(functor, global_value, shared_value); + } + } + } + + return is_last_block; +} + +template +__device__ bool hip_single_inter_block_reduce_scan( + FunctorType const& functor, + ::Kokkos::Experimental::HIP::size_type const block_id, + ::Kokkos::Experimental::HIP::size_type const block_count, + ::Kokkos::Experimental::HIP::size_type* const shared_data, + ::Kokkos::Experimental::HIP::size_type* const global_data, + ::Kokkos::Experimental::HIP::size_type* const global_flags) { + using ValueTraits = FunctorValueTraits; + if (!DoScan && /*FIXME*/ (bool)ValueTraits::StaticValueSize) + // FIXME_HIP For now we don't use shuffle + // return Kokkos::Impl::HIPReductionsFunctor< + // FunctorType, ArgTag, false, (ValueTraits::StaticValueSize > 16)>:: + // scalar_inter_block_reduction(functor, block_id, block_count, + // shared_data, global_data, global_flags); + return Kokkos::Impl::HIPReductionsFunctor< + FunctorType, ArgTag, false, + false>::scalar_inter_block_reduction(functor, block_id, block_count, + shared_data, global_data, + global_flags); + else { + return hip_single_inter_block_reduce_scan2( + functor, block_id, block_count, shared_data, global_data, global_flags); + } +} + +// Size in bytes required for inter block reduce or scan +template +inline unsigned hip_single_inter_block_reduce_scan_shmem( + const FunctorType& functor, const unsigned BlockSize) { + return (BlockSize + 2) * + Impl::FunctorValueTraits::value_size(functor); +} + +} // namespace Impl +} // namespace Kokkos + +#endif + +#endif diff --git a/lib/kokkos/core/src/HIP/Kokkos_HIP_Space.cpp b/lib/kokkos/core/src/HIP/Kokkos_HIP_Space.cpp new file mode 100644 index 0000000000..2dca7f13c9 --- /dev/null +++ b/lib/kokkos/core/src/HIP/Kokkos_HIP_Space.cpp @@ -0,0 +1,636 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// 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 NTESS "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 NTESS 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 +#include + +#include +#include +#include + +#include +#include + +/*--------------------------------------------------------------------------*/ +/*--------------------------------------------------------------------------*/ +namespace Kokkos { +namespace Impl { + +namespace { +hipStream_t get_deep_copy_stream() { + static hipStream_t s = 0; + if (s == 0) { + HIP_SAFE_CALL(hipStreamCreate(&s)); + } + return s; +} +} // namespace + +DeepCopy::DeepCopy(void* dst, const void* src, + size_t n) { + HIP_SAFE_CALL(hipMemcpy(dst, src, n, hipMemcpyDefault)); +} + +DeepCopy::DeepCopy(void* dst, const void* src, + size_t n) { + HIP_SAFE_CALL(hipMemcpy(dst, src, n, hipMemcpyDefault)); +} + +DeepCopy::DeepCopy(void* dst, const void* src, + size_t n) { + HIP_SAFE_CALL(hipMemcpy(dst, src, n, hipMemcpyDefault)); +} + +DeepCopy::DeepCopy(const Kokkos::Experimental::HIP& + /*instance*/, + void* dst, const void* src, + size_t n) { + // FIXME_HIP use instance + HIP_SAFE_CALL(hipMemcpy(dst, src, n, hipMemcpyDefault)); +} + +DeepCopy:: + DeepCopy(const Kokkos::Experimental::HIP& /*instance*/, void* dst, + const void* src, size_t n) { + // FIXME_HIP use instance + HIP_SAFE_CALL(hipMemcpy(dst, src, n, hipMemcpyDefault)); +} + +DeepCopy:: + DeepCopy(const Kokkos::Experimental::HIP& /*instance*/, void* dst, + const void* src, size_t n) { + // FIXME_HIP use instance + HIP_SAFE_CALL(hipMemcpy(dst, src, n, hipMemcpyDefault)); +} + +DeepCopy::DeepCopy(void* dst, const void* src, + size_t n) { + HIP_SAFE_CALL(hipMemcpy(dst, src, n, hipMemcpyDefault)); +} + +DeepCopy::DeepCopy(void* dst, const void* src, + size_t n) { + HIP_SAFE_CALL(hipMemcpy(dst, src, n, hipMemcpyDefault)); +} + +DeepCopy::DeepCopy(void* dst, const void* src, + size_t n) { + HIP_SAFE_CALL(hipMemcpy(dst, src, n, hipMemcpyDefault)); +} + +DeepCopy:: + DeepCopy(const Kokkos::Experimental::HIP& /*instance*/, void* dst, + const void* src, size_t n) { + // FIXME_HIP use instance + HIP_SAFE_CALL(hipMemcpy(dst, src, n, hipMemcpyDefault)); +} + +DeepCopy::DeepCopy(const Kokkos::Experimental::HIP& + /*instance*/, + void* dst, const void* src, + size_t n) { + // FIXME_HIP use instance + HIP_SAFE_CALL(hipMemcpy(dst, src, n, hipMemcpyDefault)); +} + +DeepCopy::DeepCopy(const Kokkos::Experimental::HIP& + /*instance*/, + void* dst, const void* src, + size_t n) { + // FIXME_HIP use instance + HIP_SAFE_CALL(hipMemcpy(dst, src, n, hipMemcpyDefault)); +} + +void DeepCopyAsyncHIP(void* dst, void const* src, size_t n) { + hipStream_t s = get_deep_copy_stream(); + HIP_SAFE_CALL(hipMemcpyAsync(dst, src, n, hipMemcpyDefault, s)); + hipStreamSynchronize(s); +} + +} // namespace Impl +} // namespace Kokkos + +/*--------------------------------------------------------------------------*/ +/*--------------------------------------------------------------------------*/ + +namespace Kokkos { + +void Experimental::HIPSpace::access_error() { + const std::string msg( + "Kokkos::Experimental::HIPSpace::access_error attempt to execute " + "Experimental::HIP function from non-HIP space"); + Kokkos::Impl::throw_runtime_exception(msg); +} + +void Experimental::HIPSpace::access_error(const void* const) { + const std::string msg( + "Kokkos::Experimental::HIPSpace::access_error attempt to execute " + "Experimental::HIP function from non-HIP space"); + Kokkos::Impl::throw_runtime_exception(msg); +} + +} // namespace Kokkos + +/*--------------------------------------------------------------------------*/ +/*--------------------------------------------------------------------------*/ + +namespace Kokkos { +namespace Experimental { + +HIPSpace::HIPSpace() : m_device(HIP().hip_device()) {} + +HIPHostPinnedSpace::HIPHostPinnedSpace() {} + +void* HIPSpace::allocate(const size_t arg_alloc_size) const { + void* ptr = nullptr; + + auto const error_code = hipMalloc(&ptr, arg_alloc_size); + if (error_code != hipSuccess) { + hipGetLastError(); // This is the only way to clear the last error, which + // we should do here since we're turning it into an + // exception here + throw HIPRawMemoryAllocationFailure( + arg_alloc_size, error_code, + RawMemoryAllocationFailure::AllocationMechanism::HIPMalloc); + } + + return ptr; +} + +void* HIPHostPinnedSpace::allocate(const size_t arg_alloc_size) const { + void* ptr = nullptr; + + auto const error_code = hipHostMalloc(&ptr, arg_alloc_size); + if (error_code != hipSuccess) { + hipGetLastError(); // This is the only way to clear the last error, which + // we should do here since we're turning it into an + // exception here + throw HIPRawMemoryAllocationFailure( + arg_alloc_size, error_code, + RawMemoryAllocationFailure::AllocationMechanism::HIPHostMalloc); + } + + return ptr; +} + +void HIPSpace::deallocate(void* const arg_alloc_ptr, + const size_t /* arg_alloc_size */) const { + HIP_SAFE_CALL(hipFree(arg_alloc_ptr)); +} + +void HIPHostPinnedSpace::deallocate(void* const arg_alloc_ptr, + const size_t /* arg_alloc_size */) const { + HIP_SAFE_CALL(hipHostFree(arg_alloc_ptr)); +} + +} // namespace Experimental +} // namespace Kokkos + +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- + +namespace Kokkos { +namespace Impl { + +#ifdef KOKKOS_DEBUG +SharedAllocationRecord + SharedAllocationRecord::s_root_record; + +SharedAllocationRecord SharedAllocationRecord< + Kokkos::Experimental::HIPHostPinnedSpace, void>::s_root_record; +#endif + +std::string SharedAllocationRecord::get_label() const { + SharedAllocationHeader header; + + Kokkos::Impl::DeepCopy( + &header, RecordBase::head(), sizeof(SharedAllocationHeader)); + + return std::string(header.m_label); +} + +std::string SharedAllocationRecord::get_label() const { + return std::string(RecordBase::head()->m_label); +} + +SharedAllocationRecord* +SharedAllocationRecord::allocate( + const Kokkos::Experimental::HIPSpace& arg_space, + const std::string& arg_label, const size_t arg_alloc_size) { + return new SharedAllocationRecord(arg_space, arg_label, arg_alloc_size); +} + +SharedAllocationRecord* +SharedAllocationRecord:: + allocate(const Kokkos::Experimental::HIPHostPinnedSpace& arg_space, + const std::string& arg_label, const size_t arg_alloc_size) { + return new SharedAllocationRecord(arg_space, arg_label, arg_alloc_size); +} + +void SharedAllocationRecord::deallocate( + SharedAllocationRecord* arg_rec) { + delete static_cast(arg_rec); +} + +void SharedAllocationRecord:: + deallocate(SharedAllocationRecord* arg_rec) { + delete static_cast(arg_rec); +} + +SharedAllocationRecord::~SharedAllocationRecord() { +#if defined(KOKKOS_ENABLE_PROFILING) + if (Kokkos::Profiling::profileLibraryLoaded()) { + SharedAllocationHeader header; + Kokkos::Impl::DeepCopy( + &header, RecordBase::m_alloc_ptr, sizeof(SharedAllocationHeader)); + + Kokkos::Profiling::deallocateData( + Kokkos::Profiling::SpaceHandle(Kokkos::Experimental::HIPSpace::name()), + header.m_label, data(), size()); + } +#endif + + m_space.deallocate(SharedAllocationRecord::m_alloc_ptr, + SharedAllocationRecord::m_alloc_size); +} + +SharedAllocationRecord::~SharedAllocationRecord() { +#if defined(KOKKOS_ENABLE_PROFILING) + if (Kokkos::Profiling::profileLibraryLoaded()) { + Kokkos::Profiling::deallocateData( + Kokkos::Profiling::SpaceHandle( + Kokkos::Experimental::HIPHostPinnedSpace::name()), + RecordBase::m_alloc_ptr->m_label, data(), size()); + } +#endif + + m_space.deallocate(SharedAllocationRecord::m_alloc_ptr, + SharedAllocationRecord::m_alloc_size); +} + +SharedAllocationRecord:: + SharedAllocationRecord( + const Kokkos::Experimental::HIPSpace& arg_space, + const std::string& arg_label, const size_t arg_alloc_size, + const SharedAllocationRecord::function_type arg_dealloc) + // Pass through allocated [ SharedAllocationHeader , user_memory ] + // Pass through deallocation function + : SharedAllocationRecord( +#ifdef KOKKOS_DEBUG + &SharedAllocationRecord::s_root_record, +#endif + Kokkos::Impl::checked_allocation_with_header(arg_space, arg_label, + arg_alloc_size), + sizeof(SharedAllocationHeader) + arg_alloc_size, arg_dealloc), + m_space(arg_space) { +#if defined(KOKKOS_ENABLE_PROFILING) + if (Kokkos::Profiling::profileLibraryLoaded()) { + Kokkos::Profiling::allocateData( + Kokkos::Profiling::SpaceHandle(arg_space.name()), arg_label, data(), + arg_alloc_size); + } +#endif + + SharedAllocationHeader header; + + // Fill in the Header information + header.m_record = static_cast*>(this); + + strncpy(header.m_label, arg_label.c_str(), + SharedAllocationHeader::maximum_label_length); + // Set last element zero, in case c_str is too long + header.m_label[SharedAllocationHeader::maximum_label_length - 1] = (char)0; + + // Copy to device memory + Kokkos::Impl::DeepCopy( + RecordBase::m_alloc_ptr, &header, sizeof(SharedAllocationHeader)); +} + +SharedAllocationRecord:: + SharedAllocationRecord( + const Kokkos::Experimental::HIPHostPinnedSpace& arg_space, + const std::string& arg_label, const size_t arg_alloc_size, + const SharedAllocationRecord::function_type arg_dealloc) + // Pass through allocated [ SharedAllocationHeader , user_memory ] + // Pass through deallocation function + : SharedAllocationRecord( +#ifdef KOKKOS_DEBUG + &SharedAllocationRecord::s_root_record, +#endif + Kokkos::Impl::checked_allocation_with_header(arg_space, arg_label, + arg_alloc_size), + sizeof(SharedAllocationHeader) + arg_alloc_size, arg_dealloc), + m_space(arg_space) { +#if defined(KOKKOS_ENABLE_PROFILING) + if (Kokkos::Profiling::profileLibraryLoaded()) { + Kokkos::Profiling::allocateData( + Kokkos::Profiling::SpaceHandle(arg_space.name()), arg_label, data(), + arg_alloc_size); + } +#endif + // Fill in the Header information, directly accessible via host pinned memory + + RecordBase::m_alloc_ptr->m_record = this; + + strncpy(RecordBase::m_alloc_ptr->m_label, arg_label.c_str(), + SharedAllocationHeader::maximum_label_length); + // Set last element zero, in case c_str is too long + RecordBase::m_alloc_ptr + ->m_label[SharedAllocationHeader::maximum_label_length - 1] = (char)0; +} + +//---------------------------------------------------------------------------- + +void* SharedAllocationRecord:: + allocate_tracked(const Kokkos::Experimental::HIPSpace& arg_space, + const std::string& arg_alloc_label, + const size_t arg_alloc_size) { + if (!arg_alloc_size) return (void*)0; + + SharedAllocationRecord* const r = + allocate(arg_space, arg_alloc_label, arg_alloc_size); + + RecordBase::increment(r); + + return r->data(); +} + +void SharedAllocationRecord::deallocate_tracked(void* const + arg_alloc_ptr) { + if (arg_alloc_ptr != 0) { + SharedAllocationRecord* const r = get_record(arg_alloc_ptr); + + RecordBase::decrement(r); + } +} + +void* SharedAllocationRecord:: + reallocate_tracked(void* const arg_alloc_ptr, const size_t arg_alloc_size) { + SharedAllocationRecord* const r_old = get_record(arg_alloc_ptr); + SharedAllocationRecord* const r_new = + allocate(r_old->m_space, r_old->get_label(), arg_alloc_size); + + Kokkos::Impl::DeepCopy( + r_new->data(), r_old->data(), std::min(r_old->size(), r_new->size())); + + RecordBase::increment(r_new); + RecordBase::decrement(r_old); + + return r_new->data(); +} + +//---------------------------------------------------------------------------- + +SharedAllocationRecord* +SharedAllocationRecord::get_record( + void* alloc_ptr) { + using Header = SharedAllocationHeader; + using RecordHIP = + SharedAllocationRecord; + + // Copy the header from the allocation + Header head; + + Header const* const head_hip = + alloc_ptr ? Header::get_header(alloc_ptr) : (Header*)0; + + if (alloc_ptr) { + Kokkos::Impl::DeepCopy( + &head, head_hip, sizeof(SharedAllocationHeader)); + } + + RecordHIP* const record = + alloc_ptr ? static_cast(head.m_record) : (RecordHIP*)0; + + if (!alloc_ptr || record->m_alloc_ptr != head_hip) { + Kokkos::Impl::throw_runtime_exception(std::string( + "Kokkos::Impl::SharedAllocationRecord< Kokkos::Experimental::HIPSpace " + ", void >::get_record ERROR")); + } + + return record; +} + +// Iterate records to print orphaned memory ... +void SharedAllocationRecord:: + print_records(std::ostream& s, const Kokkos::Experimental::HIPSpace& space, + bool detail) { +#ifdef KOKKOS_DEBUG + SharedAllocationRecord* r = &s_root_record; + + char buffer[256]; + + SharedAllocationHeader head; + + if (detail) { + do { + if (r->m_alloc_ptr) { + Kokkos::Impl::DeepCopy( + &head, r->m_alloc_ptr, sizeof(SharedAllocationHeader)); + } else { + head.m_label[0] = 0; + } + + // Formatting dependent on sizeof(uintptr_t) + const char* format_string; + + if (sizeof(uintptr_t) == sizeof(unsigned long)) { + format_string = + "HIP addr( 0x%.12lx ) list( 0x%.12lx 0x%.12lx ) extent[ 0x%.12lx + " + "%.8ld ] count(%d) dealloc(0x%.12lx) %s\n"; + } else if (sizeof(uintptr_t) == sizeof(unsigned long long)) { + format_string = + "HIP addr( 0x%.12llx ) list( 0x%.12llx 0x%.12llx ) extent[ " + "0x%.12llx + %.8ld ] count(%d) dealloc(0x%.12llx) %s\n"; + } + + snprintf(buffer, 256, format_string, reinterpret_cast(r), + reinterpret_cast(r->m_prev), + reinterpret_cast(r->m_next), + reinterpret_cast(r->m_alloc_ptr), r->m_alloc_size, + r->m_count, reinterpret_cast(r->m_dealloc), + head.m_label); + std::cout << buffer; + r = r->m_next; + } while (r != &s_root_record); + } else { + do { + if (r->m_alloc_ptr) { + Kokkos::Impl::DeepCopy( + &head, r->m_alloc_ptr, sizeof(SharedAllocationHeader)); + + // Formatting dependent on sizeof(uintptr_t) + const char* format_string; + + if (sizeof(uintptr_t) == sizeof(unsigned long)) { + format_string = "HIP [ 0x%.12lx + %ld ] %s\n"; + } else if (sizeof(uintptr_t) == sizeof(unsigned long long)) { + format_string = "HIP [ 0x%.12llx + %ld ] %s\n"; + } + + snprintf(buffer, 256, format_string, + reinterpret_cast(r->data()), r->size(), + head.m_label); + } else { + snprintf(buffer, 256, "HIP [ 0 + 0 ]\n"); + } + std::cout << buffer; + r = r->m_next; + } while (r != &s_root_record); + } +#else + (void)s; + (void)space; + (void)detail; + throw_runtime_exception( + "Kokkos::Impl::SharedAllocationRecord::print_records" + " only works with KOKKOS_DEBUG enabled"); +#endif +} + +/*--------------------------------------------------------------------------*/ +/*--------------------------------------------------------------------------*/ + +void* hip_resize_scratch_space(size_t bytes, bool force_shrink) { + static void* ptr = NULL; + static size_t current_size = 0; + if (current_size == 0) { + current_size = bytes; + ptr = Kokkos::kokkos_malloc( + "HIPSpace::ScratchMemory", current_size); + } + if (bytes > current_size) { + current_size = bytes; + ptr = Kokkos::kokkos_realloc(ptr, + current_size); + } + if ((bytes < current_size) && (force_shrink)) { + current_size = bytes; + Kokkos::kokkos_free(ptr); + ptr = Kokkos::kokkos_malloc( + "HIPSpace::ScratchMemory", current_size); + } + return ptr; +} + +} // namespace Impl +} // namespace Kokkos + +/*--------------------------------------------------------------------------*/ +/*--------------------------------------------------------------------------*/ +namespace Kokkos { +namespace Experimental { + +// HIP::size_type HIP::detect_device_count() +//{ return Impl::HIPInternalDevices::singleton().m_hipDevCount ; } + +int HIP::concurrency() { + // FIXME_HIP + // MI60: ThreadsPerComputeUnit*ComputeUnits/ShaderEngine*ShaderEngines) + return 2536 * 16 * 4; +} +int HIP::impl_is_initialized() { + return Impl::HIPInternal::singleton().is_initialized(); +} + +void HIP::impl_initialize(const HIP::SelectDevice config) { + Impl::HIPInternal::singleton().initialize(config.hip_device_id); + +#if defined(KOKKOS_ENABLE_PROFILING) + Kokkos::Profiling::initialize(); +#endif +} + +void HIP::impl_finalize() { + Impl::HIPInternal::singleton().finalize(); + +#if defined(KOKKOS_ENABLE_PROFILING) + Kokkos::Profiling::finalize(); +#endif +} + +HIP::HIP() : m_space_instance(&Impl::HIPInternal::singleton()) { + Impl::HIPInternal::singleton().verify_is_initialized( + "HIP instance constructor"); +} + +// HIP::HIP( const int instance_id ) +// : m_device( Impl::HIPInternal::singleton().m_hipDev ) +//{} + +void HIP::print_configuration(std::ostream& s, const bool) { + Impl::HIPInternal::singleton().print_configuration(s); +} + +void HIP::fence() const { HIP_SAFE_CALL(hipDeviceSynchronize()); } + +int HIP::hip_device() const { return impl_internal_space_instance()->m_hipDev; } +const char* HIP::name() { return "HIP"; } + +} // namespace Experimental +} // namespace Kokkos diff --git a/lib/kokkos/core/src/HIP/Kokkos_HIP_Team.hpp b/lib/kokkos/core/src/HIP/Kokkos_HIP_Team.hpp new file mode 100644 index 0000000000..b3c4f4609b --- /dev/null +++ b/lib/kokkos/core/src/HIP/Kokkos_HIP_Team.hpp @@ -0,0 +1,1106 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// 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 NTESS "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 NTESS 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_HIP_TEAM_HPP +#define KOKKOS_HIP_TEAM_HPP + +#include + +#if defined(__HIPCC__) + +#include +#include + +#include +#include +#include +#include + +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- + +namespace Kokkos { +namespace Impl { + +template +struct HIPJoinFunctor { + typedef Type value_type; + + KOKKOS_INLINE_FUNCTION + static void join(volatile value_type& update, + volatile const value_type& input) { + update += input; + } +}; + +/**\brief Team member_type passed to TeamPolicy or TeamTask closures. + * + * HIP thread blocks for team closures are dimensioned as: + * hipBlockDim_x == number of "vector lanes" per "thread" + * hipBlockDim_y == number of "threads" per team + * hipBlockDim_z == number of teams in a block + * where + * A set of teams exactly fill a warp OR a team is the whole block + * ( 0 == WarpSize % ( hipBlockDim_x * hipBlockDim_y ) ) + * OR + * ( 1 == hipBlockDim_z ) + + * Thus when 1 < hipBlockDim_z the team is warp-synchronous + * and __syncthreads should not be called in team collectives. + * + * When multiple teams are mapped onto a single block then the + * total available shared memory must be partitioned among teams. + */ +class HIPTeamMember { + public: + using execution_space = Kokkos::Experimental::HIP; + using scratch_memory_space = execution_space::scratch_memory_space; + + private: + mutable void* m_team_reduce; + scratch_memory_space m_team_shared; + int m_team_reduce_size; + int m_league_rank; + int m_league_size; + + public: + KOKKOS_INLINE_FUNCTION + const execution_space::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& level) const { + return m_team_shared.set_team_thread_mode(level, 1, 0); + } + + KOKKOS_INLINE_FUNCTION + const execution_space::scratch_memory_space& thread_scratch( + const int& level) const { + return m_team_shared.set_team_thread_mode(level, team_size(), team_rank()); + } + + KOKKOS_INLINE_FUNCTION int league_rank() const { return m_league_rank; } + KOKKOS_INLINE_FUNCTION int league_size() const { return m_league_size; } + KOKKOS_INLINE_FUNCTION int team_rank() const { +#ifdef __HIP_DEVICE_COMPILE__ + return hipThreadIdx_y; +#else + return 0; +#endif + } + + KOKKOS_INLINE_FUNCTION int team_size() const { +#ifdef __HIP_DEVICE_COMPILE__ + return hipBlockDim_y; +#else + return 1; +#endif + } + + KOKKOS_INLINE_FUNCTION void team_barrier() const { +#ifdef __HIP_DEVICE_COMPILE__ + if (1 == hipBlockDim_z) + __syncthreads(); // team == block + else + __threadfence_block(); // team <= warp +#endif + } + + //-------------------------------------------------------------------------- + + template + KOKKOS_INLINE_FUNCTION void team_broadcast(ValueType& val, + const int& thread_id) const { +#ifdef __HIP_DEVICE_COMPILE__ + if (1 == hipBlockDim_z) { // team == block + __syncthreads(); + // Wait for shared data write until all threads arrive here + if (hipThreadIdx_x == 0u && + hipThreadIdx_y == static_cast(thread_id)) { + *(reinterpret_cast(m_team_reduce)) = val; + } + __syncthreads(); // Wait for shared data read until root thread writes + val = *(reinterpret_cast(m_team_reduce)); + } else { // team <= warp + ValueType tmp(val); // input might not be a register variable + ::Kokkos::Experimental::Impl::in_place_shfl( + val, tmp, hipBlockDim_x * thread_id, hipBlockDim_x * hipBlockDim_y); + } +#else + (void)val; + (void)thread_id; +#endif + } + + template + KOKKOS_INLINE_FUNCTION void team_broadcast(Closure const& f, ValueType& val, + const int& thread_id) const { +#ifdef __HIP_DEVICE_COMPILE__ + f(val); + + if (1 == hipBlockDim_z) { // team == block + __syncthreads(); + // Wait for shared data write until all threads arrive here + if (hipThreadIdx_x == 0u && + hipThreadIdx_y == static_cast(thread_id)) { + *(reinterpret_cast(m_team_reduce)) = val; + } + __syncthreads(); // Wait for shared data read until root thread writes + val = *(reinterpret_cast(m_team_reduce)); + } else { // team <= warp + ValueType tmp(val); // input might not be a register variable + ::Kokkos::Experimental::Impl::in_place_shfl( + val, tmp, hipBlockDim_x * thread_id, hipBlockDim_x * hipBlockDim_y); + } +#else + (void)f; + (void)val; + (void)thread_id; +#endif + } + + //-------------------------------------------------------------------------- + /**\brief Reduction across a team + * + * Mapping of teams onto blocks: + * hipBlockDim_x is "vector lanes" + * hipBlockDim_y is team "threads" + * hipBlockDim_z is number of teams per block + * + * Requires: + * hipBlockDim_x is power two + * hipBlockDim_x <= HIPTraits::WarpSize + * ( 0 == HIPTraits::WarpSize % ( hipBlockDim_x * hipBlockDim_y ) + * OR + * ( 1 == hipBlockDim_z ) + */ + template + KOKKOS_INLINE_FUNCTION + typename std::enable_if::value>::type + team_reduce(ReducerType const& reducer) const noexcept { + team_reduce(reducer, reducer.reference()); + } + + template + KOKKOS_INLINE_FUNCTION + typename std::enable_if::value>::type + team_reduce(ReducerType const& reducer, + typename ReducerType::value_type& value) const noexcept { +#ifdef __HIP_DEVICE_COMPILE__ + hip_intra_block_reduction(reducer, value, hipBlockDim_y); +#else + (void)reducer; + (void)value; +#endif + } + + //-------------------------------------------------------------------------- + /** \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 + * league's parallel execution, be the scan's total. + * Parallel execution ordering of the league's teams is non-deterministic. + * As such the base value for each team's scan operation is similarly + * non-deterministic. + */ + template + KOKKOS_INLINE_FUNCTION Type team_scan(const Type& value, + Type* const global_accum) const { +#ifdef __HIP_DEVICE_COMPILE__ + Type* const base_data = reinterpret_cast(m_team_reduce); + + __syncthreads(); // Don't write in to shared data until all threads have + // entered this function + + if (0 == hipThreadIdx_y) { + base_data[0] = 0; + } + + base_data[hipThreadIdx_y + 1] = value; + + Impl::hip_intra_block_reduce_scan, void>( + Impl::HIPJoinFunctor(), base_data + 1); + + if (global_accum) { + if (hipBlockDim_y == hipThreadIdx_y + 1) { + base_data[hipBlockDim_y] = + atomic_fetch_add(global_accum, base_data[hipBlockDim_y]); + } + __syncthreads(); // Wait for atomic + base_data[hipThreadIdx_y] += base_data[hipBlockDim_y]; + } + + return base_data[hipThreadIdx_y]; +#else + (void)value; + (void)global_accum; + return Type(); +#endif + } + + /** \brief Intra-team exclusive prefix sum with team_rank() ordering. + * + * The highest rank thread can compute the reduction total as + * reduction_total = dev.team_scan( value ) + value ; + */ + template + KOKKOS_INLINE_FUNCTION Type team_scan(const Type& value) const { + return this->template team_scan(value, 0); + } + + //---------------------------------------- + + template + KOKKOS_INLINE_FUNCTION static + typename std::enable_if::value>::type + vector_reduce(ReducerType const& reducer) { + vector_reduce(reducer, reducer.reference()); + } + + template + KOKKOS_INLINE_FUNCTION static + typename std::enable_if::value>::type + vector_reduce(ReducerType const& reducer, + typename ReducerType::value_type& value) { +#ifdef __HIP_DEVICE_COMPILE__ + if (hipBlockDim_x == 1) return; + + // Intra vector lane shuffle reduction: + typename ReducerType::value_type tmp(value); + typename ReducerType::value_type tmp2 = tmp; + + int constexpr warp_size = ::Kokkos::Experimental::Impl::HIPTraits::WarpSize; + unsigned mask = + hipBlockDim_x == warp_size + ? 0xffffffff + : ((1 << hipBlockDim_x) - 1) + << ((hipThreadIdx_y % (warp_size / hipBlockDim_x)) * + hipBlockDim_x); + + for (int i = hipBlockDim_x; (i >>= 1);) { + ::Kokkos::Experimental::Impl::in_place_shfl_down(tmp2, tmp, i, + hipBlockDim_x, mask); + if (static_cast(hipThreadIdx_x) < i) { + reducer.join(tmp, tmp2); + } + } + + // Broadcast from root lane to all other lanes. + // Cannot use "butterfly" algorithm to avoid the broadcast + // because floating point summation is not associative + // and thus different threads could have different results. + + ::Kokkos::Experimental::Impl::in_place_shfl(tmp2, tmp, 0, hipBlockDim_x, + mask); + value = tmp2; + reducer.reference() = tmp2; +#else + (void)reducer; + (void)value; +#endif + } + + //-------------------------------------------------------------------------- + /**\brief Global reduction across all blocks + * + * Return !0 if reducer contains the final value + */ + template + KOKKOS_INLINE_FUNCTION static + typename std::enable_if::value, int>::type + global_reduce(ReducerType const& reducer, int* const global_scratch_flags, + void* const global_scratch_space, void* const shmem, + int const shmem_size) { +#ifdef __HIP_COMPILE_DEVICE__ + + typedef typename ReducerType::value_type value_type; + typedef value_type volatile* pointer_type; + + // Number of shared memory entries for the reduction: + const int nsh = shmem_size / sizeof(value_type); + + // Number of HIP threads in the block, rank within the block + const int nid = hipBlockDim_x * hipBlockDim_y * hipBlockDim_z; + const int tid = + hipThreadIdx_x + + hipBlockDim_x * (hipThreadIdx_y + hipBlockDim_y * hipThreadIdx_z); + + // Reduces within block using all available shared memory + // Contributes if it is the root "vector lane" + + // wn == number of warps in the block + // wx == which lane within the warp + // wy == which warp within the block + + const int wn = + (nid + HIPTraits::WarpIndexMask) >> HIPTraits::WarpIndexShift; + const int wx = tid & HIPTraits::WarpIndexMask; + const int wy = tid >> HIPTraits::WarpIndexShift; + + //------------------------ + { // Intra warp shuffle reduction from contributing CUDA threads + + value_type tmp(reducer.reference()); + + int constexpr warp_size = + ::Kokkos::Experimental::Impl::HIPTraits::WarpSize; + for (int i = warp_size; static_cast(hipBlockDim_x) <= (i >>= 1);) { + Impl::in_place_shfl_down(reducer.reference(), tmp, i, warp_size); + + // Root of each vector lane reduces "thread" contribution + if (0 == hipThreadIdx_x && wx < i) { + reducer.join(&tmp, reducer.data()); + } + } + + // Reduce across warps using shared memory. + // Number of warps may not be power of two. + + __syncthreads(); // Wait before shared data write + + // Number of shared memory entries for the reduction + // is at most one per warp + const int nentry = wn < nsh ? wn : nsh; + + if (0 == wx && wy < nentry) { + // Root thread of warp 'wy' has warp's value to contribute + (reinterpret_cast(shmem))[wy] = tmp; + } + + __syncthreads(); // Wait for write to be visible to block + + // When more warps than shared entries + // then warps must take turns joining their contribution + // to the designated shared memory entry. + for (int i = nentry; i < wn; i += nentry) { + const int k = wy - i; + + if (0 == wx && i <= wy && k < nentry) { + // Root thread of warp 'wy' has warp's value to contribute + reducer.join((reinterpret_cast(shmem)) + k, &tmp); + } + + __syncthreads(); // Wait for write to be visible to block + } + + // One warp performs the inter-warp reduction: + + if (0 == wy) { + // Start fan-in at power of two covering nentry + + for (int i = (1 << (32 - __clz(nentry - 1))); (i >>= 1);) { + const int k = wx + i; + if (wx < i && k < nentry) { + reducer.join((reinterpret_cast(shmem)) + wx, + (reinterpret_cast(shmem)) + k); + __threadfence_block(); // Wait for write to be visible to warp + } + } + } + } + //------------------------ + { // Write block's value to global_scratch_memory + + int last_block = 0; + + if (0 == wx) { + reducer.copy((reinterpret_cast(global_scratch_space)) + + hipBlockIdx_x * reducer.length(), + reducer.data()); + + __threadfence(); // Wait until global write is visible. + + last_block = static_cast(hipGridDim_x) == + 1 + Kokkos::atomic_fetch_add(global_scratch_flags, 1); + + // If last block then reset count + if (last_block) *global_scratch_flags = 0; + } + + // FIXME hip does not support __syncthreads_or so we need to do it by hand + // last_block = __syncthreads_or(last_block); + + __shared__ int last_block_shared; + if (last_block) last_block_shared = last_block; + __threadfence_block(); + + if (!last_block_shared) return 0; + } + //------------------------ + // Last block reads global_scratch_memory into shared memory. + + const int nentry = nid < hipGridDim_x + ? (nid < nsh ? nid : nsh) + : (hipGridDim_x < nsh ? hipGridDim_x : nsh); + + // nentry = min( nid , nsh , gridDim.x ) + + // whole block reads global memory into shared memory: + + if (tid < nentry) { + const int offset = tid * reducer.length(); + + reducer.copy( + (reinterpret_cast(shmem)) + offset, + (reinterpret_cast(global_scratch_space)) + offset); + + for (int i = nentry + tid; i < static_cast(hipGridDim_x); + i += nentry) { + reducer.join((reinterpret_cast(shmem)) + offset, + (reinterpret_cast(global_scratch_space)) + + i * reducer.length()); + } + } + + __syncthreads(); // Wait for writes to be visible to block + + if (0 == wy) { + // Iterate to reduce shared memory to single warp fan-in size + + int constexpr warp_size = + ::Kokkos::Experimental::Impl::HIPTraits::WarpSize; + const int nreduce = warp_size < nentry ? warp_size : nentry; + + if (wx < nreduce && nreduce < nentry) { + for (int i = nreduce + wx; i < nentry; i += nreduce) { + reducer.join(((pointer_type)shmem) + wx, ((pointer_type)shmem) + i); + } + __threadfence_block(); // Wait for writes to be visible to warp + } + + // Start fan-in at power of two covering nentry + + for (int i = (1 << (warp_size - __clz(nreduce - 1))); (i >>= 1);) { + const int k = wx + i; + if (wx < i && k < nreduce) { + reducer.join((reinterpret_cast(shmem)) + wx, + (reinterpret_cast(shmem)) + k); + __threadfence_block(); // Wait for writes to be visible to warp + } + } + + if (0 == wx) { + reducer.copy(reducer.data(), reinterpret_cast(shmem)); + return 1; + } + } + return 0; + +#else + (void)reducer; + (void)global_scratch_flags; + (void)shmem; + (void)global_scratch_space; + (void)shmem_size; + return 0; +#endif + } + + //---------------------------------------- + // Private for the driver + + KOKKOS_INLINE_FUNCTION + HIPTeamMember(void* shared, const int shared_begin, const int shared_size, + void* scratch_level_1_ptr, const int scratch_level_1_size, + const int arg_league_rank, const int arg_league_size) + : m_team_reduce(shared), + m_team_shared(((char*)shared) + shared_begin, shared_size, + scratch_level_1_ptr, scratch_level_1_size), + m_team_reduce_size(shared_begin), + m_league_rank(arg_league_rank), + m_league_size(arg_league_size) {} + + public: + // Declare to avoid unused private member warnings which are trigger + // when SFINAE excludes the member function which uses these variables + // Making another class a friend also surpresses these warnings + bool impl_avoid_sfinae_warning() const noexcept { + return m_team_reduce_size > 0 && m_team_reduce != nullptr; + } +}; + +} // namespace Impl +} // namespace Kokkos + +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- + +namespace Kokkos { +namespace Impl { + +template +struct TeamThreadRangeBoundariesStruct { + typedef iType index_type; + const HIPTeamMember& member; + const iType start; + const iType end; + + KOKKOS_INLINE_FUNCTION + TeamThreadRangeBoundariesStruct(const HIPTeamMember& thread_, iType count) + : member(thread_), start(0), end(count) {} + + KOKKOS_INLINE_FUNCTION + TeamThreadRangeBoundariesStruct(const HIPTeamMember& thread_, iType begin_, + iType end_) + : member(thread_), start(begin_), end(end_) {} +}; + +template +struct TeamVectorRangeBoundariesStruct { + typedef iType index_type; + const HIPTeamMember& member; + const iType start; + const iType end; + + KOKKOS_INLINE_FUNCTION + TeamVectorRangeBoundariesStruct(const HIPTeamMember& thread_, + const iType& count) + : member(thread_), start(0), end(count) {} + + KOKKOS_INLINE_FUNCTION + TeamVectorRangeBoundariesStruct(const HIPTeamMember& thread_, + const iType& begin_, const iType& end_) + : member(thread_), start(begin_), end(end_) {} +}; + +template +struct ThreadVectorRangeBoundariesStruct { + typedef iType index_type; + const index_type start; + const index_type end; + + KOKKOS_INLINE_FUNCTION + ThreadVectorRangeBoundariesStruct(const HIPTeamMember, index_type count) + : start(static_cast(0)), end(count) {} + + KOKKOS_INLINE_FUNCTION + ThreadVectorRangeBoundariesStruct(index_type count) + : start(static_cast(0)), end(count) {} + + KOKKOS_INLINE_FUNCTION + ThreadVectorRangeBoundariesStruct(const HIPTeamMember, index_type arg_begin, + index_type arg_end) + : start(arg_begin), end(arg_end) {} + + KOKKOS_INLINE_FUNCTION + ThreadVectorRangeBoundariesStruct(index_type arg_begin, index_type arg_end) + : start(arg_begin), end(arg_end) {} +}; + +} // namespace Impl + +template +KOKKOS_INLINE_FUNCTION + Impl::TeamThreadRangeBoundariesStruct + TeamThreadRange(const Impl::HIPTeamMember& thread, iType count) { + return Impl::TeamThreadRangeBoundariesStruct( + thread, count); +} + +template +KOKKOS_INLINE_FUNCTION Impl::TeamThreadRangeBoundariesStruct< + typename std::common_type::type, Impl::HIPTeamMember> +TeamThreadRange(const Impl::HIPTeamMember& thread, iType1 begin, iType2 end) { + typedef typename std::common_type::type iType; + return Impl::TeamThreadRangeBoundariesStruct( + thread, iType(begin), iType(end)); +} + +template +KOKKOS_INLINE_FUNCTION + Impl::TeamVectorRangeBoundariesStruct + TeamVectorRange(const Impl::HIPTeamMember& thread, const iType& count) { + return Impl::TeamVectorRangeBoundariesStruct( + thread, count); +} + +template +KOKKOS_INLINE_FUNCTION Impl::TeamVectorRangeBoundariesStruct< + typename std::common_type::type, Impl::HIPTeamMember> +TeamVectorRange(const Impl::HIPTeamMember& thread, const iType1& begin, + const iType2& end) { + typedef typename std::common_type::type iType; + return Impl::TeamVectorRangeBoundariesStruct( + thread, iType(begin), iType(end)); +} + +template +KOKKOS_INLINE_FUNCTION + Impl::ThreadVectorRangeBoundariesStruct + ThreadVectorRange(const Impl::HIPTeamMember& thread, iType count) { + return Impl::ThreadVectorRangeBoundariesStruct( + thread, count); +} + +template +KOKKOS_INLINE_FUNCTION + Impl::ThreadVectorRangeBoundariesStruct + ThreadVectorRange(const Impl::HIPTeamMember& thread, iType arg_begin, + iType arg_end) { + return Impl::ThreadVectorRangeBoundariesStruct( + thread, arg_begin, arg_end); +} + +KOKKOS_INLINE_FUNCTION +Impl::ThreadSingleStruct PerTeam( + const Impl::HIPTeamMember& thread) { + return Impl::ThreadSingleStruct(thread); +} + +KOKKOS_INLINE_FUNCTION +Impl::VectorSingleStruct PerThread( + const Impl::HIPTeamMember& thread) { + return Impl::VectorSingleStruct(thread); +} + +//---------------------------------------------------------------------------- + +/** \brief Inter-thread parallel_for. + * + * Executes closure(iType i) for each i=[0..N). + * + * The range [0..N) is mapped to all threads of the the calling thread team. + */ +template +KOKKOS_INLINE_FUNCTION void parallel_for( + const Impl::TeamThreadRangeBoundariesStruct& + loop_boundaries, + const Closure& closure) { +#ifdef __HIP_DEVICE_COMPILE__ + for (iType i = loop_boundaries.start + hipThreadIdx_y; + i < loop_boundaries.end; i += hipBlockDim_y) + closure(i); +#else + (void)loop_boundaries; + (void)closure; +#endif +} + +//---------------------------------------------------------------------------- + +/** \brief Inter-thread parallel_reduce with a reducer. + * + * Executes closure(iType i, ValueType & val) for each i=[0..N) + * + * The range [0..N) is mapped to all threads of the + * calling thread team and a summation of val is + * performed and put into result. + */ +template +KOKKOS_INLINE_FUNCTION + typename std::enable_if::value>::type + parallel_reduce(const Impl::TeamThreadRangeBoundariesStruct< + iType, Impl::HIPTeamMember>& loop_boundaries, + const Closure& closure, const ReducerType& reducer) { +#ifdef __HIP_DEVICE_COMPILE__ + typename ReducerType::value_type value; + reducer.init(value); + + for (iType i = loop_boundaries.start + hipThreadIdx_y; + i < loop_boundaries.end; i += hipBlockDim_y) { + closure(i, value); + } + + loop_boundaries.member.team_reduce(reducer, value); +#else + (void)loop_boundaries; + (void)closure; + (void)reducer; +#endif +} + +/** \brief Inter-thread parallel_reduce assuming summation. + * + * Executes closure(iType i, ValueType & val) for each i=[0..N) + * + * The range [0..N) is mapped to all threads of the + * calling thread team and a summation of val is + * performed and put into result. + */ +template +KOKKOS_INLINE_FUNCTION + typename std::enable_if::value>::type + parallel_reduce(const Impl::TeamThreadRangeBoundariesStruct< + iType, Impl::HIPTeamMember>& loop_boundaries, + const Closure& closure, ValueType& result) { +#ifdef __HIP_DEVICE_COMPILE__ + ValueType val; + Kokkos::Sum reducer(val); + + reducer.init(reducer.reference()); + + for (iType i = loop_boundaries.start + hipThreadIdx_y; + i < loop_boundaries.end; i += hipBlockDim_y) { + closure(i, val); + } + + loop_boundaries.member.team_reduce(reducer, val); + result = reducer.reference(); +#else + (void)loop_boundaries; + (void)closure; + (void)result; +#endif +} + +template +KOKKOS_INLINE_FUNCTION void parallel_for( + const Impl::TeamVectorRangeBoundariesStruct& + loop_boundaries, + const Closure& closure) { +#ifdef __HIP_DEVICE_COMPILE__ + for (iType i = loop_boundaries.start + hipThreadIdx_y * hipBlockDim_x + + hipThreadIdx_x; + i < loop_boundaries.end; i += hipBlockDim_y * hipBlockDim_x) + closure(i); +#else + (void)loop_boundaries; + (void)closure; +#endif +} + +template +KOKKOS_INLINE_FUNCTION + typename std::enable_if::value>::type + parallel_reduce(const Impl::TeamVectorRangeBoundariesStruct< + iType, Impl::HIPTeamMember>& loop_boundaries, + const Closure& closure, const ReducerType& reducer) { +#ifdef __HIP_DEVICE_COMPILE__ + typename ReducerType::value_type value; + reducer.init(value); + + for (iType i = loop_boundaries.start + hipThreadIdx_y * hipBlockDim_x + + hipThreadIdx_x; + i < loop_boundaries.end; i += hipBlockDim_y * hipBlockDim_x) { + closure(i, value); + } + + loop_boundaries.member.vector_reduce(reducer, value); + loop_boundaries.member.team_reduce(reducer, value); +#else + (void)loop_boundaries; + (void)closure; + (void)reducer; +#endif +} + +template +KOKKOS_INLINE_FUNCTION + typename std::enable_if::value>::type + parallel_reduce(const Impl::TeamVectorRangeBoundariesStruct< + iType, Impl::HIPTeamMember>& loop_boundaries, + const Closure& closure, ValueType& result) { +#ifdef __HIP_DEVICE_COMPILE__ + ValueType val; + Kokkos::Sum reducer(val); + + reducer.init(reducer.reference()); + + for (iType i = loop_boundaries.start + hipThreadIdx_y * hipBlockDim_x + + hipThreadIdx_x; + i < loop_boundaries.end; i += hipBlockDim_y * hipBlockDim_x) { + closure(i, val); + } + + loop_boundaries.member.vector_reduce(reducer); + loop_boundaries.member.team_reduce(reducer); + result = reducer.reference(); +#else + (void)loop_boundaries; + (void)closure; + (void)result; +#endif +} + +//---------------------------------------------------------------------------- + +/** \brief Intra-thread vector parallel_for. + * + * Executes closure(iType i) for each i=[0..N) + * + * The range [0..N) is mapped to all vector lanes of the the calling thread. + */ +template +KOKKOS_INLINE_FUNCTION void parallel_for( + const Impl::ThreadVectorRangeBoundariesStruct& + loop_boundaries, + const Closure& closure) { +#ifdef __HIP_DEVICE_COMPILE__ + for (iType i = loop_boundaries.start + hipThreadIdx_x; + i < loop_boundaries.end; i += hipBlockDim_x) { + closure(i); + } +#else + (void)loop_boundaries; + (void)closure; +#endif +} + +//---------------------------------------------------------------------------- + +/** \brief Intra-thread vector parallel_reduce. + * + * Calls closure(iType i, ValueType & val) for each i=[0..N). + * + * The range [0..N) is mapped to all vector lanes of + * the calling thread and a reduction of val is performed using += + * and output into result. + * + * The identity value for the += operator is assumed to be the default + * constructed value. + */ +template +KOKKOS_INLINE_FUNCTION + typename std::enable_if::value>::type + parallel_reduce(Impl::ThreadVectorRangeBoundariesStruct< + iType, Impl::HIPTeamMember> const& loop_boundaries, + Closure const& closure, ReducerType const& reducer) { +#ifdef __HIP_DEVICE_COMPILE__ + reducer.init(reducer.reference()); + + for (iType i = loop_boundaries.start + hipThreadIdx_x; + i < loop_boundaries.end; i += hipBlockDim_x) { + closure(i, reducer.reference()); + } + + Impl::HIPTeamMember::vector_reduce(reducer); +#else + (void)loop_boundaries; + (void)closure; + (void)reducer; +#endif +} + +/** \brief Intra-thread vector parallel_reduce. + * + * Calls closure(iType i, ValueType & val) for each i=[0..N). + * + * The range [0..N) is mapped to all vector lanes of + * the calling thread and a reduction of val is performed using += + * and output into result. + * + * The identity value for the += operator is assumed to be the default + * constructed value. + */ +template +KOKKOS_INLINE_FUNCTION + typename std::enable_if::value>::type + parallel_reduce(Impl::ThreadVectorRangeBoundariesStruct< + iType, Impl::HIPTeamMember> const& loop_boundaries, + Closure const& closure, ValueType& result) { +#ifdef __HIP_DEVICE_COMPILE__ + result = ValueType(); + + for (iType i = loop_boundaries.start + hipThreadIdx_x; + i < loop_boundaries.end; i += hipBlockDim_x) { + closure(i, result); + } + + Impl::HIPTeamMember::vector_reduce(Kokkos::Sum(result)); +#else + (void)loop_boundaries; + (void)closure; + (void)result; +#endif +} + +//---------------------------------------------------------------------------- + +/** \brief Intra-thread vector parallel exclusive prefix sum. + * + * Executes closure(iType i, ValueType & val, bool final) for each i=[0..N) + * + * The range [0..N) is mapped to all vector lanes in the + * thread and a scan operation is performed. + * The last call to closure has final == true. + */ +template +KOKKOS_INLINE_FUNCTION void parallel_scan( + const Impl::ThreadVectorRangeBoundariesStruct& + loop_boundaries, + const Closure& closure) { +#ifdef __HIP_DEVICE_COMPILE__ + // Extract value_type from closure + + using value_type = typename Kokkos::Impl::FunctorAnalysis< + Kokkos::Impl::FunctorPatternInterface::SCAN, void, Closure>::value_type; + + // Loop through boundaries by vector-length chunks + // must scan at each iteration + + value_type accum = 0; + + // All thread "lanes" must loop the same number of times. + // Determine an loop end for all thread "lanes." + // Requires: + // hipBlockDim_x is power of two and thus + // ( end % hipBlockDim_x ) == ( end & ( hipBlockDim_x - 1 ) ) + // 1 <= hipBlockDim_x <= HIPTraits::WarpSize + + int constexpr warp_size = ::Kokkos::Experimental::Impl::HIPTraits::WarpSize; + const int mask = hipBlockDim_x - 1; + const unsigned active_mask = + blockDim.x == warp_size + ? 0xffffffff + : ((1 << hipBlockDim_x) - 1) + << (hipThreadIdx_y % (warp_size / hipBlockDim_x)) * + hipBlockDim_x; + const int rem = loop_boundaries.end & mask; // == end % hipBlockDim_x + const int end = loop_boundaries.end + (rem ? hipBlockDim_x - rem : 0); + + for (int i = hipThreadIdx_x; i < end; i += hipBlockDim_x) { + value_type val = 0; + + // First acquire per-lane contributions: + if (i < loop_boundaries.end) closure(i, val, false); + + value_type sval = val; + + // Bottom up inclusive scan in triangular pattern + // where each HIP thread is the root of a reduction tree + // from the zeroth "lane" to itself. + // [t] += [t-1] if t >= 1 + // [t] += [t-2] if t >= 2 + // [t] += [t-4] if t >= 4 + // ... + + for (int j = 1; j < static_cast(hipBlockDim_x); j <<= 1) { + value_type tmp = 0; + ::Kokkos::Experimental::Impl::in_place_shfl_up( + tmp, sval, j, hipBlockDim_x, active_mask); + if (j <= static_cast(hipThreadIdx_x)) { + sval += tmp; + } + } + + // Include accumulation and remove value for exclusive scan: + val = accum + sval - val; + + // Provide exclusive scan value: + if (i < loop_boundaries.end) closure(i, val, true); + + // Accumulate the last value in the inclusive scan: + ::Kokkos::Experimental::Impl::in_place_shfl(sval, sval, mask, blockDim.x, + active_mask); + + accum += sval; + } +#else + (void)loop_boundaries; + (void)closure; +#endif +} + +} // namespace Kokkos + +namespace Kokkos { + +template +KOKKOS_INLINE_FUNCTION void single( + const Impl::VectorSingleStruct&, + const FunctorType& lambda) { +#ifdef __HIP_DEVICE_COMPILE__ + if (hipThreadIdx_x == 0) lambda(); +#else + (void)lambda; +#endif +} + +template +KOKKOS_INLINE_FUNCTION void single( + const Impl::ThreadSingleStruct&, + const FunctorType& lambda) { +#ifdef __HIP_DEVICE_COMPILE__ + if (hipThreadIdx_x == 0 && hipThreadIdx_y == 0) lambda(); +#else + (void)lambda; +#endif +} + +template +KOKKOS_INLINE_FUNCTION void single( + const Impl::VectorSingleStruct&, + const FunctorType& lambda, ValueType& val) { +#ifdef __HIP_DEVICE_COMPILE__ + int constexpr warp_size = ::Kokkos::Experimental::Impl::HIPTraits::WarpSize; + if (hipThreadIdx_x == 0) lambda(val); + unsigned mask = hipBlockDim_x == warp_size + ? 0xffffffff + : ((1 << hipBlockDim_x) - 1) + << ((hipThreadIdx_y % (warp_size / hipBlockDim_x)) * + hipBlockDim_x); + ::Kokkos::Experimental::Impl::in_place_shfl(val, val, 0, hipBlockDim_x, mask); +#else + (void)lambda; + (void)val; +#endif +} + +template +KOKKOS_INLINE_FUNCTION void single( + const Impl::ThreadSingleStruct& single_struct, + const FunctorType& lambda, ValueType& val) { + (void)single_struct; + (void)lambda; + (void)val; +#ifdef __HIP_DEVICE_COMPILE__ + if (hipThreadIdx_x == 0 && hipThreadIdx_y == 0) { + lambda(val); + } + single_struct.team_member.team_broadcast(val, 0); +#else + (void)single_struct; + (void)lambda; + (void)val; +#endif +} + +} // namespace Kokkos + +#endif /* defined( __HIPCC__ ) */ + +#endif /* #ifndef KOKKOS_CUDA_TEAM_HPP */ diff --git a/lib/kokkos/core/src/HIP/Kokkos_HIP_Vectorization.hpp b/lib/kokkos/core/src/HIP/Kokkos_HIP_Vectorization.hpp new file mode 100644 index 0000000000..58b5abb2ee --- /dev/null +++ b/lib/kokkos/core/src/HIP/Kokkos_HIP_Vectorization.hpp @@ -0,0 +1,160 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// 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 NTESS "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 NTESS 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_HIP_VECTORIZATION_HPP +#define KOKKOS_HIP_VECTORIZATION_HPP + +#include +#include + +namespace Kokkos { +namespace Experimental { +namespace Impl { + +// Include all lanes +constexpr unsigned shfl_all_mask = 0xffffffff; + +//---------------------------------------------------------------------------- +// Shuffle operations require input to be a register (stack) variable + +// Derived implements do_shfl_op(unsigned mask, T& in, int lane, int width), +// which turns in to one of KOKKOS_IMPL_HIP_SHFL(_UP_|_DOWN_|_)MASK +// Since the logic with respect to value sizes, etc., is the same everywhere, +// put it all in one place. +template +struct in_place_shfl_op { + // CRTP boilerplate + __device__ KOKKOS_IMPL_FORCEINLINE const Derived& self() const noexcept { + return *static_cast(this); + } + + // sizeof(Scalar) == sizeof(int) case + template + // requires _assignable_from_bits + __device__ inline typename std::enable_if::type + operator()(Scalar& out, Scalar const& in, int lane_or_delta, int width, + unsigned mask = shfl_all_mask) const noexcept { + //------------------------------------------------ + reinterpret_cast(out) = self().do_shfl_op( + mask, reinterpret_cast(in), lane_or_delta, width); + //------------------------------------------------ + } + + template + __device__ inline + typename std::enable_if::type + operator()(Scalar& out, Scalar const& in, int lane_or_delta, int width, + unsigned mask = shfl_all_mask) const noexcept { + //------------------------------------------------ + reinterpret_cast(out) = self().do_shfl_op( + mask, *reinterpret_cast(&in), lane_or_delta, width); + //------------------------------------------------ + } + + // sizeof(Scalar) > sizeof(double) case + template + __device__ inline + typename std::enable_if<(sizeof(Scalar) > sizeof(double))>::type + operator()(Scalar& out, const Scalar& val, int lane_or_delta, int width, + unsigned mask = shfl_all_mask) const noexcept { + using shuffle_as_t = int; + enum : int { N = sizeof(Scalar) / sizeof(shuffle_as_t) }; + + for (int i = 0; i < N; ++i) { + reinterpret_cast(&out)[i] = self().do_shfl_op( + mask, reinterpret_cast(&val)[i], lane_or_delta, + width); + } + } +}; + +struct in_place_shfl_fn : in_place_shfl_op { + template + __device__ KOKKOS_IMPL_FORCEINLINE T do_shfl_op(unsigned mask, T& val, + int lane, int width) const + noexcept { + return KOKKOS_IMPL_HIP_SHFL_MASK(mask, val, lane, width); + } +}; + +template +__device__ KOKKOS_IMPL_FORCEINLINE void in_place_shfl(Args&&... args) noexcept { + in_place_shfl_fn{}((Args &&) args...); +} + +struct in_place_shfl_up_fn : in_place_shfl_op { + template + __device__ KOKKOS_IMPL_FORCEINLINE T do_shfl_op(unsigned mask, T& val, + int lane, int width) const + noexcept { + return KOKKOS_IMPL_HIP_SHFL_UP_MASK(mask, val, lane, width); + } +}; + +template +__device__ KOKKOS_IMPL_FORCEINLINE void in_place_shfl_up( + Args&&... args) noexcept { + in_place_shfl_up_fn{}((Args &&) args...); +} + +struct in_place_shfl_down_fn : in_place_shfl_op { + template + __device__ KOKKOS_IMPL_FORCEINLINE T do_shfl_op(unsigned mask, T& val, + int lane, int width) const + noexcept { + return KOKKOS_IMPL_HIP_SHFL_DOWN_MASK(mask, val, lane, width); + } +}; + +template +__device__ KOKKOS_IMPL_FORCEINLINE void in_place_shfl_down( + Args&&... args) noexcept { + in_place_shfl_down_fn{}((Args &&) args...); +} + +} // namespace Impl +} // namespace Experimental +} // namespace Kokkos + +#endif diff --git a/lib/kokkos/core/src/HPX/Kokkos_HPX.cpp b/lib/kokkos/core/src/HPX/Kokkos_HPX.cpp index 0c4cca70f8..acbd1074fd 100644 --- a/lib/kokkos/core/src/HPX/Kokkos_HPX.cpp +++ b/lib/kokkos/core/src/HPX/Kokkos_HPX.cpp @@ -85,6 +85,9 @@ void HPX::impl_initialize(int thread_count) { char *argv_hpx[] = {name, nullptr}; hpx::start(nullptr, argc_hpx, argv_hpx, config); +#if HPX_VERSION_FULL < 0x010400 + // This has been fixed in HPX 1.4.0. + // // 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 @@ -94,6 +97,7 @@ void HPX::impl_initialize(int thread_count) { rt = hpx::get_runtime_ptr(); hpx::util::yield_while( [rt]() { return rt->get_state() < hpx::state_running; }); +#endif m_hpx_initialized = true; } diff --git a/lib/kokkos/core/src/KokkosExp_MDRangePolicy.hpp b/lib/kokkos/core/src/KokkosExp_MDRangePolicy.hpp index 7981c04b4f..3195dbdedf 100644 --- a/lib/kokkos/core/src/KokkosExp_MDRangePolicy.hpp +++ b/lib/kokkos/core/src/KokkosExp_MDRangePolicy.hpp @@ -63,6 +63,10 @@ #include #endif +#if defined(__HIPCC__) && defined(KOKKOS_ENABLE_HIP) +#include +#endif + namespace Kokkos { // ------------------------------------------------------------------ // @@ -79,7 +83,8 @@ enum class Iterate template struct default_outer_direction { using type = Iterate; -#if defined(KOKKOS_ENABLE_CUDA) || defined(KOKKOS_ENABLE_ROCM) +#if defined(KOKKOS_ENABLE_CUDA) || defined(KOKKOS_ENABLE_ROCM) || \ + defined(KOKKOS_ENABLE_HIP) static constexpr Iterate value = Iterate::Left; #else static constexpr Iterate value = Iterate::Right; @@ -89,7 +94,8 @@ struct default_outer_direction { template struct default_inner_direction { using type = Iterate; -#if defined(KOKKOS_ENABLE_CUDA) || defined(KOKKOS_ENABLE_ROCM) +#if defined(KOKKOS_ENABLE_CUDA) || defined(KOKKOS_ENABLE_ROCM) || \ + defined(KOKKOS_ENABLE_HIP) static constexpr Iterate value = Iterate::Left; #else static constexpr Iterate value = Iterate::Right; @@ -256,6 +262,10 @@ struct MDRangePolicy : public Kokkos::Impl::PolicyTraits { #if defined(KOKKOS_ENABLE_ROCM) && !std::is_same::value +#endif +#if defined(KOKKOS_ENABLE_HIP) + && !std::is_same::value #endif ) { index_type span; @@ -275,7 +285,7 @@ struct MDRangePolicy : public Kokkos::Impl::PolicyTraits { m_prod_tile_dims *= m_tile[i]; } } -#if defined(KOKKOS_ENABLE_CUDA) +#if defined(KOKKOS_ENABLE_CUDA) || defined(KOKKOS_ENABLE_HIP) else // Cuda { index_type span; @@ -287,15 +297,21 @@ struct MDRangePolicy : public Kokkos::Impl::PolicyTraits { rank_start = rank - 1; rank_end = -1; } + bool is_cuda_exec_space = +#if defined(KOKKOS_ENABLE_CUDA) + std::is_same::value; +#else + false; +#endif for (int i = rank_start; i != rank_end; i += increment) { span = m_upper[i] - m_lower[i]; if (m_tile[i] <= 0) { - // TODO: determine what is a good default tile size for cuda + // TODO: determine what is a good default tile size for cuda and HIP // may be rank dependent if (((int)inner_direction == (int)Right && (i < rank - 1)) || ((int)inner_direction == (int)Left && (i > 0))) { if (m_prod_tile_dims < 256) { - m_tile[i] = 2; + m_tile[i] = (is_cuda_exec_space) ? 2 : 4; } else { m_tile[i] = 1; } @@ -311,13 +327,18 @@ struct MDRangePolicy : public Kokkos::Impl::PolicyTraits { if (m_prod_tile_dims > 1024) { // Match Cuda restriction for ParallelReduce; 1024,1024,64 // max per dim (Kepler), but product num_threads < 1024 - printf(" Tile dimensions exceed Cuda limits\n"); - Kokkos::abort( - " Cuda ExecSpace Error: MDRange tile dims exceed maximum number of " - "threads per block - choose smaller tile dims"); - // Kokkos::Impl::throw_runtime_exception( " Cuda ExecSpace Error: - // MDRange tile dims exceed maximum number of threads per block - choose - // smaller tile dims"); + if (is_cuda_exec_space) { + printf(" Tile dimensions exceed Cuda limits\n"); + Kokkos::abort( + " Cuda ExecSpace Error: MDRange tile dims exceed maximum number " + "of " + "threads per block - choose smaller tile dims"); + } else { + printf(" Tile dimensions exceed HIP limits\n"); + Kokkos::abort( + "HIP ExecSpace Error: MDRange tile dims exceed maximum number of " + "threads per block - choose smaller tile dims"); + } } } #endif @@ -396,6 +417,10 @@ struct MDRangePolicy : public Kokkos::Impl::PolicyTraits { #if defined(KOKKOS_ENABLE_ROCM) && !std::is_same::value +#endif +#if defined(KOKKOS_ENABLE_HIP) + && !std::is_same::value #endif ) { index_type span; @@ -415,8 +440,8 @@ struct MDRangePolicy : public Kokkos::Impl::PolicyTraits { m_prod_tile_dims *= m_tile[i]; } } -#if defined(KOKKOS_ENABLE_CUDA) - else // Cuda +#if defined(KOKKOS_ENABLE_CUDA) || defined(KOKKOS_ENABLE_HIP) + else // Cuda or HIP { index_type span; int increment = 1; @@ -451,13 +476,17 @@ struct MDRangePolicy : public Kokkos::Impl::PolicyTraits { if (m_prod_tile_dims > 1024) { // Match Cuda restriction for ParallelReduce; 1024,1024,64 // max per dim (Kepler), but product num_threads < 1024 +#if defined(KOKKOS_ENABLE_CUDA) printf(" Tile dimensions exceed Cuda limits\n"); Kokkos::abort( " Cuda ExecSpace Error: MDRange tile dims exceed maximum number of " "threads per block - choose smaller tile dims"); - // Kokkos::Impl::throw_runtime_exception( " Cuda ExecSpace Error: - // MDRange tile dims exceed maximum number of threads per block - choose - // smaller tile dims"); +#else + printf(" Tile dimensions exceed HIP limits\n"); + Kokkos::abort( + " HIP ExecSpace Error: MDRange tile dims exceed maximum number of " + "threads per block - choose smaller tile dims"); +#endif } } #endif diff --git a/lib/kokkos/core/src/Kokkos_Array.hpp b/lib/kokkos/core/src/Kokkos_Array.hpp index 88e7883cb9..d830616bd6 100644 --- a/lib/kokkos/core/src/Kokkos_Array.hpp +++ b/lib/kokkos/core/src/Kokkos_Array.hpp @@ -159,22 +159,21 @@ struct Array { return &m_internal_implementation_private_member_data[0]; } -#ifdef KOKKOS_IMPL_ROCM_CLANG_WORKAROUND +#ifdef KOKKOS_IMPL_HIP_CLANG_WORKAROUND // Do not default unless move and move-assignment are also defined - KOKKOS_INLINE_FUNCTION - ~Array() = default; - Array() = default; - Array(const Array&) = default; - Array& operator=(const Array&) = default; + KOKKOS_DEFAULTED_FUNCTION ~Array() = default; + KOKKOS_DEFAULTED_FUNCTION Array() = default; + KOKKOS_DEFAULTED_FUNCTION Array(const Array&) = default; + KOKKOS_DEFAULTED_FUNCTION Array& operator=(const Array&) = default; // Some supported compilers are not sufficiently C++11 compliant // for default move constructor and move assignment operator. - Array(Array&&) = default; - Array& operator=(Array&&) = default; + KOKKOS_DEFAULTED_FUNCTION Array(Array&&) = default; + KOKKOS_DEFAULTED_FUNCTION Array& operator=(Array&&) = default; KOKKOS_INLINE_FUNCTION Array(const std::initializer_list& vals) { - for (int i = 0; i < N; i++) { + for (size_t i = 0; i < N; i++) { m_internal_implementation_private_member_data[i] = vals.begin()[i]; } } @@ -217,17 +216,10 @@ struct Array { KOKKOS_INLINE_FUNCTION pointer data() { return pointer(0); } KOKKOS_INLINE_FUNCTION const_pointer data() const { return const_pointer(0); } -#ifdef KOKKOS_CUDA_9_DEFAULTED_BUG_WORKAROUND - KOKKOS_INLINE_FUNCTION ~Array() {} - KOKKOS_INLINE_FUNCTION Array() {} - KOKKOS_INLINE_FUNCTION Array(const Array&) {} - KOKKOS_INLINE_FUNCTION Array& operator=(const Array&) {} -#else - KOKKOS_INLINE_FUNCTION ~Array() = default; - KOKKOS_INLINE_FUNCTION Array() = default; - KOKKOS_INLINE_FUNCTION Array(const Array&) = default; - KOKKOS_INLINE_FUNCTION Array& operator=(const Array&) = default; -#endif + KOKKOS_DEFAULTED_FUNCTION ~Array() = default; + KOKKOS_DEFAULTED_FUNCTION Array() = default; + KOKKOS_DEFAULTED_FUNCTION Array(const Array&) = default; + KOKKOS_DEFAULTED_FUNCTION Array& operator=(const Array&) = default; // Some supported compilers are not sufficiently C++11 compliant // for default move constructor and move assignment operator. @@ -281,13 +273,9 @@ struct Array::contiguous> { KOKKOS_INLINE_FUNCTION pointer data() { return m_elem; } KOKKOS_INLINE_FUNCTION const_pointer data() const { return m_elem; } -#ifdef KOKKOS_CUDA_9_DEFAULTED_BUG_WORKAROUND - KOKKOS_INLINE_FUNCTION ~Array() {} -#else - KOKKOS_INLINE_FUNCTION ~Array() = default; -#endif - Array() = delete; - Array(const Array& rhs) = delete; + KOKKOS_DEFAULTED_FUNCTION ~Array() = default; + KOKKOS_INLINE_FUNCTION_DELETED Array() = delete; + KOKKOS_INLINE_FUNCTION_DELETED Array(const Array& rhs) = delete; // Some supported compilers are not sufficiently C++11 compliant // for default move constructor and move assignment operator. @@ -354,13 +342,9 @@ struct Array::strided> { KOKKOS_INLINE_FUNCTION pointer data() { return m_elem; } KOKKOS_INLINE_FUNCTION const_pointer data() const { return m_elem; } -#ifdef KOKKOS_CUDA_9_DEFAULTED_BUG_WORKAROUND - KOKKOS_INLINE_FUNCTION ~Array() {} -#else - KOKKOS_INLINE_FUNCTION ~Array() = default; -#endif - Array() = delete; - Array(const Array&) = delete; + KOKKOS_DEFAULTED_FUNCTION ~Array() = default; + KOKKOS_INLINE_FUNCTION_DELETED Array() = delete; + KOKKOS_INLINE_FUNCTION_DELETED Array(const Array&) = delete; // Some supported compilers are not sufficiently C++11 compliant // for default move constructor and move assignment operator. diff --git a/lib/kokkos/core/src/Kokkos_Atomic.hpp b/lib/kokkos/core/src/Kokkos_Atomic.hpp index c4f7fa3ec1..55139d07b9 100644 --- a/lib/kokkos/core/src/Kokkos_Atomic.hpp +++ b/lib/kokkos/core/src/Kokkos_Atomic.hpp @@ -86,6 +86,10 @@ #define KOKKOS_ENABLE_ROCM_ATOMICS +#elif defined(KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_HIP_GPU) + +#define KOKKOS_ENABLE_HIP_ATOMICS + #endif #if !defined(KOKKOS_ENABLE_GNU_ATOMICS) && \ @@ -178,11 +182,13 @@ extern KOKKOS_INLINE_FUNCTION void unlock_address_rocm_space(void* ptr); } // namespace Kokkos #include #endif +#if defined(KOKKOS_ENABLE_HIP) +#include +#endif #ifdef _WIN32 #include "impl/Kokkos_Atomic_Windows.hpp" #else - //---------------------------------------------------------------------------- // Atomic Assembly // @@ -209,6 +215,11 @@ extern KOKKOS_INLINE_FUNCTION void unlock_address_rocm_space(void* ptr); #include "impl/Kokkos_Atomic_Compare_Exchange_Strong.hpp" +#endif //_WIN32 + +#include "impl/Kokkos_Atomic_Generic.hpp" + +#ifndef _WIN32 //---------------------------------------------------------------------------- // Atomic fetch and add // @@ -262,6 +273,18 @@ extern KOKKOS_INLINE_FUNCTION void unlock_address_rocm_space(void* ptr); // { T tmp = *dest ; *dest = tmp & val ; return tmp ; } #include "impl/Kokkos_Atomic_Fetch_And.hpp" + +//---------------------------------------------------------------------------- +// Atomic MinMax +// +// template +// T atomic_min(volatile T* const dest, const T val) +// { T tmp = *dest ; *dest = min(*dest, val); return tmp ; } +// template +// T atomic_max(volatile T* const dest, const T val) +// { T tmp = *dest ; *dest = max(*dest, val); return tmp ; } + +#include "impl/Kokkos_Atomic_MinMax.hpp" #endif /*Not _WIN32*/ //---------------------------------------------------------------------------- @@ -284,16 +307,14 @@ extern KOKKOS_INLINE_FUNCTION void unlock_address_rocm_space(void* ptr); #include "impl/Kokkos_Volatile_Load.hpp" -#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" +// Generic functions using the above defined functions +#include "impl/Kokkos_Atomic_Generic_Secondary.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 a9af073b41..fec5d62c3d 100644 --- a/lib/kokkos/core/src/Kokkos_Complex.hpp +++ b/lib/kokkos/core/src/Kokkos_Complex.hpp @@ -73,14 +73,14 @@ class using value_type = RealType; //! Default constructor (initializes both real and imaginary parts to zero). - KOKKOS_INLINE_FUNCTION + KOKKOS_DEFAULTED_FUNCTION complex() noexcept = default; //! Copy constructor. - KOKKOS_INLINE_FUNCTION + KOKKOS_DEFAULTED_FUNCTION complex(const complex&) noexcept = default; - KOKKOS_INLINE_FUNCTION + KOKKOS_DEFAULTED_FUNCTION complex& operator=(const complex&) noexcept = default; /// \brief Conversion constructor from compatible RType @@ -219,7 +219,10 @@ class // Scale (by the "1-norm" of y) to avoid unwarranted overflow. // If the real part is +/-Inf and the imaginary part is -/+Inf, // this won't change the result. - const RealType s = std::fabs(y.real()) + std::fabs(y.imag()); +#if !defined(__HIP_DEVICE_COMPILE__) // FIXME_HIP + using std::fabs; +#endif + const RealType s = fabs(y.real()) + fabs(y.imag()); // If s is 0, then y is zero, so x/y == real(x)/0 + i*imag(x)/0. // In that case, the relation x/y == (x/s) / (y/s) doesn't hold, @@ -247,7 +250,10 @@ class // Scale (by the "1-norm" of y) to avoid unwarranted overflow. // If the real part is +/-Inf and the imaginary part is -/+Inf, // this won't change the result. - const RealType s = std::fabs(y.real()) + std::fabs(y.imag()); +#if !defined(__HIP_DEVICE_COMPILE__) // FIXME_HIP + using std::fabs; +#endif + const RealType s = fabs(y.real()) + fabs(y.imag()); // If s is 0, then y is zero, so x/y == real(x)/0 + i*imag(x)/0. // In that case, the relation x/y == (x/s) / (y/s) doesn't hold, @@ -298,8 +304,21 @@ class /// complex& . See Kokkos Issue #177 for the /// explanation. In practice, this means that you should not chain /// assignments with volatile lvalues. - KOKKOS_INLINE_FUNCTION void operator=( - const complex& src) volatile noexcept { + // + // Templated, so as not to be a copy assignment operator (Kokkos issue #2577) + // Intended to behave as + // void operator=(const complex&) volatile noexcept + // + // Use cases: + // complex r; + // const complex cr; + // volatile complex vl; + // vl = r; + // vl = cr; + template ::value, + int>::type = 0> + KOKKOS_INLINE_FUNCTION void operator=(const Complex& src) volatile noexcept { re_ = src.re_; im_ = src.im_; // We deliberately do not return anything here. See explanation @@ -308,16 +327,45 @@ class //! Assignment operator, volatile LHS and volatile RHS // TODO Should this return void like the other volatile assignment operators? + // + // Templated, so as not to be a copy assignment operator (Kokkos issue #2577) + // Intended to behave as + // volatile complex& operator=(const volatile complex&) volatile noexcept + // + // Use cases: + // volatile complex vr; + // const volatile complex cvr; + // volatile complex vl; + // vl = vr; + // vl = cvr; + template ::value, + int>::type = 0> KOKKOS_INLINE_FUNCTION volatile complex& operator=( - const volatile complex& src) volatile noexcept { + const volatile Complex& src) volatile noexcept { re_ = src.re_; im_ = src.im_; return *this; } //! Assignment operator, volatile RHS and non-volatile LHS + // + // Templated, so as not to be a copy assignment operator (Kokkos issue #2577) + // Intended to behave as + // complex& operator=(const volatile complex&) noexcept + // + // Use cases: + // volatile complex vr; + // const volatile complex cvr; + // complex l; + // l = vr; + // l = cvr; + // + template ::value, + int>::type = 0> KOKKOS_INLINE_FUNCTION complex& operator=( - const volatile complex& src) noexcept { + const volatile Complex& src) noexcept { re_ = src.re_; im_ = src.im_; return *this; @@ -650,7 +698,8 @@ KOKKOS_INLINE_FUNCTION RealType real(const complex& x) noexcept { //! Absolute value (magnitude) of a complex number. template KOKKOS_INLINE_FUNCTION RealType abs(const complex& x) { -#ifndef __CUDA_ARCH__ +#if !defined(__CUDA_ARCH__) && \ + !defined(__HIP_DEVICE_COMPILE__) // FIXME_CUDA FIXME_HIP using std::hypot; #endif return hypot(x.real(), x.imag()); @@ -660,20 +709,32 @@ KOKKOS_INLINE_FUNCTION RealType abs(const complex& x) { template KOKKOS_INLINE_FUNCTION Kokkos::complex pow(const complex& x, const RealType& e) { - RealType r = abs(x); - RealType phi = std::atan(x.imag() / x.real()); - return std::pow(r, e) * - Kokkos::complex(std::cos(phi * e), std::sin(phi * e)); + RealType r = abs(x); +#if !defined(__HIP_DEVICE_COMPILE__) // FIXME_HIP + using std::atan; + using std::cos; + using std::pow; + using std::sin; +#endif + using ::pow; + RealType phi = atan(x.imag() / x.real()); + return pow(r, e) * Kokkos::complex(cos(phi * e), sin(phi * e)); } //! Square root of a complex number. template KOKKOS_INLINE_FUNCTION Kokkos::complex sqrt( const complex& x) { - RealType r = abs(x); - RealType phi = std::atan(x.imag() / x.real()); - return std::sqrt(r) * - Kokkos::complex(std::cos(phi * 0.5), std::sin(phi * 0.5)); + RealType r = abs(x); +#if !defined(__HIP_DEVICE_COMPILE__) // FIXME_HIP + using std::atan; + using std::cos; + using std::sin; + using std::sqrt; +#endif + using ::sqrt; + RealType phi = atan(x.imag() / x.real()); + return sqrt(r) * Kokkos::complex(cos(phi * 0.5), sin(phi * 0.5)); } //! Conjugate of a complex number. @@ -686,8 +747,14 @@ KOKKOS_INLINE_FUNCTION complex conj( //! Exponential of a complex number. template KOKKOS_INLINE_FUNCTION complex exp(const complex& x) { - return std::exp(x.real()) * - complex(std::cos(x.imag()), std::sin(x.imag())); +#if !defined(__HIP_DEVICE_COMPILE__) // FIXME_HIP + using std::cos; + using std::exp; + using std::sin; +#else + using ::exp; +#endif + return exp(x.real()) * complex(cos(x.imag()), sin(x.imag())); } /// This function cannot be called in a CUDA device function, @@ -720,9 +787,12 @@ KOKKOS_INLINE_FUNCTION // Scale (by the "1-norm" of y) to avoid unwarranted overflow. // If the real part is +/-Inf and the imaginary part is -/+Inf, // this won't change the result. +#if !defined(__HIP_DEVICE_COMPILE__) // FIXME_HIP + using std::fabs; +#endif typedef typename std::common_type::type common_real_type; - const common_real_type s = std::fabs(real(y)) + std::fabs(imag(y)); + const common_real_type s = fabs(real(y)) + fabs(imag(y)); // If s is 0, then y is zero, so x/y == real(x)/0 + i*imag(x)/0. // In that case, the relation x/y == (x/s) / (y/s) doesn't hold, diff --git a/lib/kokkos/core/src/Kokkos_Concepts.hpp b/lib/kokkos/core/src/Kokkos_Concepts.hpp index 99b7aa9aab..13d7925c12 100644 --- a/lib/kokkos/core/src/Kokkos_Concepts.hpp +++ b/lib/kokkos/core/src/Kokkos_Concepts.hpp @@ -153,19 +153,17 @@ namespace Kokkos { template \ struct have : std::false_type {}; \ template \ - struct have::type, \ - typename std::remove_cv::type>::type> \ + struct have::type> \ : std::true_type {}; \ template \ struct have::type, \ - typename std::remove_cv::type>::type> \ + typename std::is_base_of::type> \ : std::true_type {}; \ \ public: \ - enum { value = is_##CONCEPT::template have::value }; \ + static constexpr bool value = \ + is_##CONCEPT::template have::type>::value; \ + constexpr operator bool() const noexcept { return value; } \ }; // Public concept: @@ -205,6 +203,43 @@ KOKKOS_IMPL_IS_CONCEPT(host_thread_team_member) } // namespace Kokkos +namespace Kokkos { +namespace Impl { + +template +class has_member_team_shmem_size { + template + static int32_t test_for_member(decltype(&T::team_shmem_size)) { + return int32_t(0); + } + template + static int64_t test_for_member(...) { + return int64_t(0); + } + + public: + constexpr static bool value = + sizeof(test_for_member(0)) == sizeof(int32_t); +}; + +template +class has_member_shmem_size { + template + static int32_t test_for_member(decltype(&T::shmem_size_me)) { + return int32_t(0); + } + template + static int64_t test_for_member(...) { + return int64_t(0); + } + + public: + constexpr static bool value = + sizeof(test_for_member(0)) == sizeof(int32_t); +}; + +} // namespace Impl +} // namespace Kokkos //---------------------------------------------------------------------------- namespace Kokkos { @@ -220,6 +255,23 @@ struct Device { typedef Device device_type; }; +namespace Impl { + +template +struct is_device_helper : std::false_type {}; + +template +struct is_device_helper> : std::true_type { +}; + +} // namespace Impl + +template +using is_device = + typename Impl::is_device_helper::type>::type; + +//---------------------------------------------------------------------------- + template struct is_space { private: @@ -259,12 +311,17 @@ struct is_space { typedef typename U::device_type space; }; - typedef typename is_space::template exe is_exe; - typedef typename is_space::template mem is_mem; - typedef typename is_space::template dev is_dev; + typedef typename is_space::template exe::type> + is_exe; + typedef typename is_space::template mem::type> + is_mem; + typedef typename is_space::template dev::type> + is_dev; public: - enum { value = is_exe::value || is_mem::value || is_dev::value }; + static constexpr bool value = is_exe::value || is_mem::value || is_dev::value; + + constexpr operator bool() const noexcept { return value; } typedef typename is_exe::space execution_space; typedef typename is_mem::space memory_space; @@ -300,7 +357,7 @@ struct is_space { typedef typename std::conditional< std::is_same::value && std::is_same::value, - T, Kokkos::Device >::type + T, Kokkos::Device>::type host_mirror_space; }; @@ -426,7 +483,7 @@ struct SpaceAccessibility { std::is_same::value || !exe_access::accessible, AccessSpace, - Kokkos::Device >::type + Kokkos::Device>::type space; }; diff --git a/lib/kokkos/core/src/Kokkos_CopyViews.hpp b/lib/kokkos/core/src/Kokkos_CopyViews.hpp index 9b3db1277d..810b712733 100644 --- a/lib/kokkos/core/src/Kokkos_CopyViews.hpp +++ b/lib/kokkos/core/src/Kokkos_CopyViews.hpp @@ -84,7 +84,7 @@ struct ViewFill { ViewType a; typename ViewType::const_value_type val; typedef typename ViewType::non_const_value_type ST; - ViewFill(const ViewType&, const ST&); + ViewFill(const ViewType&, const ST&, const ExecSpace&); }; template { ViewType a; typename ViewType::const_value_type val; typedef typename ViewType::non_const_value_type ST; - ViewFill(const ViewType&, const ST&); + ViewFill(const ViewType&, const ST&, const ExecSpace&); KOKKOS_INLINE_FUNCTION void operator()(const iType&) const; }; @@ -104,7 +104,7 @@ struct ViewFill { ViewType a; typename ViewType::const_value_type val; typedef typename ViewType::non_const_value_type ST; - ViewFill(const ViewType&, const ST&); + ViewFill(const ViewType&, const ST&, const ExecSpace&); KOKKOS_INLINE_FUNCTION void operator()(const iType&, const iType&) const; }; @@ -115,7 +115,7 @@ struct ViewFill { ViewType a; typename ViewType::const_value_type val; typedef typename ViewType::non_const_value_type ST; - ViewFill(const ViewType&, const ST&); + ViewFill(const ViewType&, const ST&, const ExecSpace&); KOKKOS_INLINE_FUNCTION void operator()(const iType&, const iType&, const iType&) const; }; @@ -126,7 +126,7 @@ struct ViewFill { ViewType a; typename ViewType::const_value_type val; typedef typename ViewType::non_const_value_type ST; - ViewFill(const ViewType&, const ST&); + ViewFill(const ViewType&, const ST&, const ExecSpace&); KOKKOS_INLINE_FUNCTION void operator()(const iType&, const iType&, const iType&, const iType&) const; }; @@ -137,7 +137,7 @@ struct ViewFill { ViewType a; typename ViewType::const_value_type val; typedef typename ViewType::non_const_value_type ST; - ViewFill(const ViewType&, const ST&); + ViewFill(const ViewType&, const ST&, const ExecSpace&); KOKKOS_INLINE_FUNCTION void operator()(const iType&, const iType&, const iType&, const iType&, const iType&) const; @@ -149,7 +149,7 @@ struct ViewFill { ViewType a; typename ViewType::const_value_type val; typedef typename ViewType::non_const_value_type ST; - ViewFill(const ViewType&, const ST&); + ViewFill(const ViewType&, const ST&, const ExecSpace&); KOKKOS_INLINE_FUNCTION void operator()(const iType&, const iType&, const iType&, const iType&, const iType&, const iType&) const; @@ -161,7 +161,7 @@ struct ViewFill { ViewType a; typename ViewType::const_value_type val; typedef typename ViewType::non_const_value_type ST; - ViewFill(const ViewType&, const ST&); + ViewFill(const ViewType&, const ST&, const ExecSpace&); KOKKOS_INLINE_FUNCTION void operator()(const iType&, const iType&, const iType&, const iType&, const iType&, const iType&, const iType&) const; @@ -173,7 +173,7 @@ struct ViewFill { ViewType a; typename ViewType::const_value_type val; typedef typename ViewType::non_const_value_type ST; - ViewFill(const ViewType&, const ST&); + ViewFill(const ViewType&, const ST&, const ExecSpace&); KOKKOS_INLINE_FUNCTION void operator()(const iType&, const iType&, const iType&, const iType&, const iType&, const iType&, const iType&, const iType&) const; @@ -183,9 +183,9 @@ template struct ViewFill { typedef typename ViewType::non_const_value_type ST; - ViewFill(const ViewType& a, const ST& val) { - Kokkos::Impl::DeepCopy( - a.data(), &val, sizeof(ST)); + ViewFill(const ViewType& a, const ST& val, const ExecSpace& space) { + Kokkos::Impl::DeepCopy(space, a.data(), &val, sizeof(ST)); } }; @@ -196,12 +196,11 @@ struct ViewFill> policy_type; - ViewFill(const ViewType& a_, typename ViewType::const_value_type& val_) + ViewFill(const ViewType& a_, typename ViewType::const_value_type& val_, + const ExecSpace& space) : a(a_), val(val_) { - ExecSpace().fence(); - Kokkos::parallel_for("Kokkos::ViewFill-1D", policy_type(0, a.extent(0)), - *this); - ExecSpace().fence(); + Kokkos::parallel_for("Kokkos::ViewFill-1D", + policy_type(space, 0, a.extent(0)), *this); } KOKKOS_INLINE_FUNCTION @@ -221,13 +220,12 @@ struct ViewFill> policy_type; - ViewFill(const ViewType& a_, typename ViewType::const_value_type& val_) + ViewFill(const ViewType& a_, typename ViewType::const_value_type& val_, + const ExecSpace& space) : a(a_), val(val_) { - ExecSpace().fence(); Kokkos::parallel_for("Kokkos::ViewFill-2D", - policy_type({0, 0}, {a.extent(0), a.extent(1)}), + policy_type(space, {0, 0}, {a.extent(0), a.extent(1)}), *this); - ExecSpace().fence(); } KOKKOS_INLINE_FUNCTION @@ -247,13 +245,13 @@ struct ViewFill> policy_type; - ViewFill(const ViewType& a_, typename ViewType::const_value_type& val_) + ViewFill(const ViewType& a_, typename ViewType::const_value_type& val_, + const ExecSpace& space) : a(a_), val(val_) { - 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(); + policy_type(space, {0, 0, 0}, {a.extent(0), a.extent(1), a.extent(2)}), + *this); } KOKKOS_INLINE_FUNCTION @@ -275,14 +273,14 @@ struct ViewFill> policy_type; - ViewFill(const ViewType& a_, typename ViewType::const_value_type& val_) + ViewFill(const ViewType& a_, typename ViewType::const_value_type& val_, + const ExecSpace& space) : a(a_), val(val_) { - 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(); + Kokkos::parallel_for( + "Kokkos::ViewFill-4D", + policy_type(space, {0, 0, 0, 0}, + {a.extent(0), a.extent(1), a.extent(2), a.extent(3)}), + *this); } KOKKOS_INLINE_FUNCTION @@ -305,15 +303,14 @@ struct ViewFill> policy_type; - ViewFill(const ViewType& a_, typename ViewType::const_value_type& val_) + ViewFill(const ViewType& a_, typename ViewType::const_value_type& val_, + const ExecSpace& space) : a(a_), val(val_) { - ExecSpace().fence(); - Kokkos::parallel_for( - "Kokkos::ViewFill-5D", - policy_type({0, 0, 0, 0, 0}, {a.extent(0), a.extent(1), a.extent(2), + Kokkos::parallel_for("Kokkos::ViewFill-5D", + policy_type(space, {0, 0, 0, 0, 0}, + {a.extent(0), a.extent(1), a.extent(2), a.extent(3), a.extent(4)}), - *this); - ExecSpace().fence(); + *this); } KOKKOS_INLINE_FUNCTION @@ -336,15 +333,14 @@ struct ViewFill> policy_type; - ViewFill(const ViewType& a_, typename ViewType::const_value_type& val_) + ViewFill(const ViewType& a_, typename ViewType::const_value_type& val_, + const ExecSpace& space) : a(a_), val(val_) { - ExecSpace().fence(); Kokkos::parallel_for("Kokkos::ViewFill-6D", - policy_type({0, 0, 0, 0, 0, 0}, + policy_type(space, {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(); } KOKKOS_INLINE_FUNCTION @@ -367,15 +363,14 @@ struct ViewFill> policy_type; - ViewFill(const ViewType& a_, typename ViewType::const_value_type& val_) + ViewFill(const ViewType& a_, typename ViewType::const_value_type& val_, + const ExecSpace& space) : a(a_), val(val_) { - ExecSpace().fence(); Kokkos::parallel_for("Kokkos::ViewFill-7D", - policy_type({0, 0, 0, 0, 0, 0}, + policy_type(space, {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(); } KOKKOS_INLINE_FUNCTION @@ -399,15 +394,14 @@ struct ViewFill> policy_type; - ViewFill(const ViewType& a_, typename ViewType::const_value_type& val_) + ViewFill(const ViewType& a_, typename ViewType::const_value_type& val_, + const ExecSpace& space) : a(a_), val(val_) { - ExecSpace().fence(); Kokkos::parallel_for("Kokkos::ViewFill-8D", - policy_type({0, 0, 0, 0, 0, 0}, + policy_type(space, {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(); } KOKKOS_INLINE_FUNCTION @@ -424,7 +418,7 @@ template { ViewTypeA a; ViewTypeB b; - ViewCopy(const ViewTypeA&, const ViewTypeB&); + ViewCopy(const ViewTypeA&, const ViewTypeB&, const ExecSpace&); KOKKOS_INLINE_FUNCTION void operator()(const iType& i0) const; }; @@ -434,7 +428,7 @@ template { ViewTypeA a; ViewTypeB b; - ViewCopy(const ViewTypeA&, const ViewTypeB&); + ViewCopy(const ViewTypeA&, const ViewTypeB&, const ExecSpace&); KOKKOS_INLINE_FUNCTION void operator()(const iType& i0, const iType& i1) const; }; @@ -444,7 +438,7 @@ template { ViewTypeA a; ViewTypeB b; - ViewCopy(const ViewTypeA&, const ViewTypeB&); + ViewCopy(const ViewTypeA&, const ViewTypeB&, const ExecSpace&); KOKKOS_INLINE_FUNCTION void operator()(const iType& i0, const iType& i1, const iType& i2) const; }; @@ -454,7 +448,7 @@ template { ViewTypeA a; ViewTypeB b; - ViewCopy(const ViewTypeA&, const ViewTypeB&); + ViewCopy(const ViewTypeA&, const ViewTypeB&, const ExecSpace&); KOKKOS_INLINE_FUNCTION void operator()(const iType& i0, const iType& i1, const iType& i2, const iType& i3) const; @@ -465,7 +459,7 @@ template { ViewTypeA a; ViewTypeB b; - ViewCopy(const ViewTypeA&, const ViewTypeB&); + ViewCopy(const ViewTypeA&, const ViewTypeB&, const ExecSpace&); KOKKOS_INLINE_FUNCTION void operator()(const iType& i0, const iType& i1, const iType& i2, const iType& i3, const iType& i4) const; @@ -476,7 +470,7 @@ template { ViewTypeA a; ViewTypeB b; - ViewCopy(const ViewTypeA&, const ViewTypeB&); + ViewCopy(const ViewTypeA&, const ViewTypeB&, const ExecSpace&); KOKKOS_INLINE_FUNCTION void operator()(const iType& i0, const iType& i1, const iType& i2, const iType& i3, const iType& i4, const iType& i5) const; @@ -487,7 +481,7 @@ template { ViewTypeA a; ViewTypeB b; - ViewCopy(const ViewTypeA&, const ViewTypeB&); + ViewCopy(const ViewTypeA&, const ViewTypeB&, const ExecSpace&); KOKKOS_INLINE_FUNCTION void operator()(const iType& i0, const iType& i1, const iType& i2, const iType& i3, const iType& i4, const iType& i5, @@ -499,7 +493,7 @@ template { ViewTypeA a; ViewTypeB b; - ViewCopy(const ViewTypeA&, const ViewTypeB&); + ViewCopy(const ViewTypeA&, const ViewTypeB&, const ExecSpace&); KOKKOS_INLINE_FUNCTION void operator()(const iType& i0, const iType& i1, const iType& i2, const iType& i3, const iType& i4, const iType& i5, @@ -515,11 +509,11 @@ struct ViewCopy> policy_type; - ViewCopy(const ViewTypeA& a_, const ViewTypeB& b_) : a(a_), b(b_) { - ExecSpace().fence(); - Kokkos::parallel_for("Kokkos::ViewCopy-1D", policy_type(0, a.extent(0)), - *this); - ExecSpace().fence(); + ViewCopy(const ViewTypeA& a_, const ViewTypeB& b_, + const ExecSpace space = ExecSpace()) + : a(a_), b(b_) { + Kokkos::parallel_for("Kokkos::ViewCopy-1D", + policy_type(space, 0, a.extent(0)), *this); } KOKKOS_INLINE_FUNCTION @@ -542,12 +536,12 @@ struct ViewCopy> policy_type; - ViewCopy(const ViewTypeA& a_, const ViewTypeB& b_) : a(a_), b(b_) { - ExecSpace().fence(); + ViewCopy(const ViewTypeA& a_, const ViewTypeB& b_, + const ExecSpace space = ExecSpace()) + : a(a_), b(b_) { Kokkos::parallel_for("Kokkos::ViewCopy-2D", - policy_type({0, 0}, {a.extent(0), a.extent(1)}), + policy_type(space, {0, 0}, {a.extent(0), a.extent(1)}), *this); - ExecSpace().fence(); } KOKKOS_INLINE_FUNCTION @@ -573,12 +567,13 @@ struct ViewCopy> policy_type; - ViewCopy(const ViewTypeA& a_, const ViewTypeB& b_) : a(a_), b(b_) { - ExecSpace().fence(); + ViewCopy(const ViewTypeA& a_, const ViewTypeB& b_, + const ExecSpace space = ExecSpace()) + : a(a_), b(b_) { Kokkos::parallel_for( "Kokkos::ViewCopy-3D", - policy_type({0, 0, 0}, {a.extent(0), a.extent(1), a.extent(2)}), *this); - ExecSpace().fence(); + policy_type(space, {0, 0, 0}, {a.extent(0), a.extent(1), a.extent(2)}), + *this); } KOKKOS_INLINE_FUNCTION @@ -604,13 +599,14 @@ struct ViewCopy> policy_type; - ViewCopy(const ViewTypeA& a_, const ViewTypeB& b_) : a(a_), b(b_) { - 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(); + ViewCopy(const ViewTypeA& a_, const ViewTypeB& b_, + const ExecSpace space = ExecSpace()) + : a(a_), b(b_) { + Kokkos::parallel_for( + "Kokkos::ViewCopy-4D", + policy_type(space, {0, 0, 0, 0}, + {a.extent(0), a.extent(1), a.extent(2), a.extent(3)}), + *this); } KOKKOS_INLINE_FUNCTION @@ -637,14 +633,14 @@ struct ViewCopy> policy_type; - ViewCopy(const ViewTypeA& a_, const ViewTypeB& b_) : a(a_), b(b_) { - ExecSpace().fence(); - Kokkos::parallel_for( - "Kokkos::ViewCopy-5D", - policy_type({0, 0, 0, 0, 0}, {a.extent(0), a.extent(1), a.extent(2), + ViewCopy(const ViewTypeA& a_, const ViewTypeB& b_, + const ExecSpace space = ExecSpace()) + : a(a_), b(b_) { + Kokkos::parallel_for("Kokkos::ViewCopy-5D", + policy_type(space, {0, 0, 0, 0, 0}, + {a.extent(0), a.extent(1), a.extent(2), a.extent(3), a.extent(4)}), - *this); - ExecSpace().fence(); + *this); } KOKKOS_INLINE_FUNCTION @@ -671,14 +667,14 @@ struct ViewCopy> policy_type; - ViewCopy(const ViewTypeA& a_, const ViewTypeB& b_) : a(a_), b(b_) { - ExecSpace().fence(); + ViewCopy(const ViewTypeA& a_, const ViewTypeB& b_, + const ExecSpace space = ExecSpace()) + : a(a_), b(b_) { Kokkos::parallel_for("Kokkos::ViewCopy-6D", - policy_type({0, 0, 0, 0, 0, 0}, + policy_type(space, {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(); } KOKKOS_INLINE_FUNCTION @@ -705,14 +701,14 @@ struct ViewCopy> policy_type; - ViewCopy(const ViewTypeA& a_, const ViewTypeB& b_) : a(a_), b(b_) { - ExecSpace().fence(); + ViewCopy(const ViewTypeA& a_, const ViewTypeB& b_, + const ExecSpace space = ExecSpace()) + : a(a_), b(b_) { Kokkos::parallel_for("Kokkos::ViewCopy-7D", - policy_type({0, 0, 0, 0, 0, 0}, + policy_type(space, {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(); } KOKKOS_INLINE_FUNCTION @@ -740,14 +736,14 @@ struct ViewCopy> policy_type; - ViewCopy(const ViewTypeA& a_, const ViewTypeB& b_) : a(a_), b(b_) { - ExecSpace().fence(); + ViewCopy(const ViewTypeA& a_, const ViewTypeB& b_, + const ExecSpace space = ExecSpace()) + : a(a_), b(b_) { Kokkos::parallel_for("Kokkos::ViewCopy-8D", - policy_type({0, 0, 0, 0, 0, 0}, + policy_type(space, {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(); } KOKKOS_INLINE_FUNCTION @@ -767,6 +763,85 @@ struct ViewCopy +void view_copy(const ExecutionSpace& space, const DstType& dst, + const SrcType& src) { + typedef typename DstType::memory_space dst_memory_space; + typedef typename SrcType::memory_space src_memory_space; + + enum { + ExecCanAccessSrc = + Kokkos::Impl::SpaceAccessibility::accessible + }; + enum { + ExecCanAccessDst = + Kokkos::Impl::SpaceAccessibility::accessible + }; + + if (!(ExecCanAccessSrc && ExecCanAccessDst)) { + Kokkos::Impl::throw_runtime_exception( + "Kokkos::Impl::view_copy called with invalid execution space"); + } else { + // Figure out iteration order in case we need it + int64_t strides[DstType::Rank + 1]; + dst.stride(strides); + Kokkos::Iterate iterate; + if (Kokkos::is_layouttiled::value) { + iterate = Kokkos::layout_iterate_type_selector< + typename DstType::array_layout>::outer_iteration_pattern; + } else if (std::is_same::value) { + iterate = Kokkos::Iterate::Right; + } else if (std::is_same::value) { + iterate = Kokkos::Iterate::Left; + } else if (std::is_same::value) { + if (strides[0] > strides[DstType::Rank - 1]) + iterate = Kokkos::Iterate::Right; + else + iterate = Kokkos::Iterate::Left; + } else { + if (std::is_same::value) + iterate = Kokkos::Iterate::Right; + else + iterate = Kokkos::Iterate::Left; + } + + if ((dst.span() >= size_t(std::numeric_limits::max())) || + (src.span() >= size_t(std::numeric_limits::max()))) { + if (iterate == Kokkos::Iterate::Right) + Kokkos::Impl::ViewCopy< + typename DstType::uniform_runtime_nomemspace_type, + typename SrcType::uniform_runtime_const_nomemspace_type, + Kokkos::LayoutRight, ExecutionSpace, DstType::Rank, int64_t>( + dst, src, space); + else + Kokkos::Impl::ViewCopy< + typename DstType::uniform_runtime_nomemspace_type, + typename SrcType::uniform_runtime_const_nomemspace_type, + Kokkos::LayoutLeft, ExecutionSpace, DstType::Rank, int64_t>( + dst, src, space); + } else { + if (iterate == Kokkos::Iterate::Right) + Kokkos::Impl::ViewCopy< + typename DstType::uniform_runtime_nomemspace_type, + typename SrcType::uniform_runtime_const_nomemspace_type, + Kokkos::LayoutRight, ExecutionSpace, DstType::Rank, int>(dst, src, + space); + else + Kokkos::Impl::ViewCopy< + typename DstType::uniform_runtime_nomemspace_type, + typename SrcType::uniform_runtime_const_nomemspace_type, + Kokkos::LayoutLeft, ExecutionSpace, DstType::Rank, int>(dst, src, + space); + } + } +} + template void view_copy(const DstType& dst, const SrcType& src) { typedef typename DstType::execution_space dst_execution_space; @@ -1421,21 +1496,22 @@ inline void deep_copy( const View& dst, typename ViewTraits::const_value_type& value, typename std::enable_if::specialize, void>::value>::type* = 0) { + typename ViewTraits::specialize, void>::value>::type* = + nullptr) { typedef View ViewType; + using exec_space_type = typename ViewType::execution_space; #if defined(KOKKOS_ENABLE_PROFILING) if (Kokkos::Profiling::profileLibraryLoaded()) { Kokkos::Profiling::beginDeepCopy( - Kokkos::Profiling::SpaceHandle( - typename ViewType::memory_space().name()), + Kokkos::Profiling::SpaceHandle(ViewType::memory_space::name()), dst.label(), dst.data(), - Kokkos::Profiling::SpaceHandle(Kokkos::HostSpace().name()), "Scalar", + Kokkos::Profiling::SpaceHandle(Kokkos::HostSpace::name()), "Scalar", &value, dst.span() * sizeof(typename ViewType::value_type)); } #endif - if (dst.data() == NULL) { + if (dst.data() == nullptr) { Kokkos::fence(); #if defined(KOKKOS_ENABLE_PROFILING) if (Kokkos::Profiling::profileLibraryLoaded()) { @@ -1463,13 +1539,13 @@ inline void deep_copy( ViewTypeFlat dst_flat(dst.data(), dst.size()); if (dst.span() < static_cast(std::numeric_limits::max())) { - Kokkos::Impl::ViewFill(dst_flat, value); + Kokkos::Impl::ViewFill(dst_flat, value, + exec_space_type()); } else - Kokkos::Impl::ViewFill(dst_flat, value); + Kokkos::Impl::ViewFill(dst_flat, value, + exec_space_type()); Kokkos::fence(); #if defined(KOKKOS_ENABLE_PROFILING) if (Kokkos::Profiling::profileLibraryLoaded()) { @@ -1511,21 +1587,21 @@ inline void deep_copy( if (dst.span() > static_cast(std::numeric_limits::max())) { if (iterate == Kokkos::Iterate::Right) Kokkos::Impl::ViewFill(dst, value); + exec_space_type, ViewType::Rank, int64_t>( + dst, value, exec_space_type()); else Kokkos::Impl::ViewFill(dst, value); + exec_space_type, ViewType::Rank, int64_t>( + dst, value, exec_space_type()); } else { if (iterate == Kokkos::Iterate::Right) Kokkos::Impl::ViewFill(dst, value); + exec_space_type, ViewType::Rank, int>( + dst, value, exec_space_type()); else Kokkos::Impl::ViewFill(dst, value); + exec_space_type, ViewType::Rank, int>( + dst, value, exec_space_type()); } Kokkos::fence(); @@ -1542,7 +1618,8 @@ inline void deep_copy( typename ViewTraits::non_const_value_type& dst, const View& src, typename std::enable_if::specialize, void>::value>::type* = 0) { + typename ViewTraits::specialize, void>::value>::type* = + nullptr) { typedef ViewTraits src_traits; typedef typename src_traits::memory_space src_memory_space; @@ -1552,14 +1629,14 @@ inline void deep_copy( #if defined(KOKKOS_ENABLE_PROFILING) if (Kokkos::Profiling::profileLibraryLoaded()) { Kokkos::Profiling::beginDeepCopy( - Kokkos::Profiling::SpaceHandle(Kokkos::HostSpace().name()), "Scalar", - &dst, Kokkos::Profiling::SpaceHandle(src_memory_space().name()), + Kokkos::Profiling::SpaceHandle(Kokkos::HostSpace::name()), "Scalar", + &dst, Kokkos::Profiling::SpaceHandle(src_memory_space::name()), src.label(), src.data(), src.span() * sizeof(typename src_traits::value_type)); } #endif - if (src.data() == NULL) { + if (src.data() == nullptr) { Kokkos::fence(); #if defined(KOKKOS_ENABLE_PROFILING) if (Kokkos::Profiling::profileLibraryLoaded()) { @@ -1587,7 +1664,8 @@ inline void deep_copy( std::is_same::specialize, void>::value && std::is_same::specialize, void>::value && (unsigned(ViewTraits::rank) == unsigned(0) && - unsigned(ViewTraits::rank) == unsigned(0)))>::type* = 0) { + unsigned(ViewTraits::rank) == unsigned(0)))>::type* = + nullptr) { typedef View dst_type; typedef View src_type; @@ -1602,14 +1680,14 @@ inline void deep_copy( #if defined(KOKKOS_ENABLE_PROFILING) if (Kokkos::Profiling::profileLibraryLoaded()) { Kokkos::Profiling::beginDeepCopy( - Kokkos::Profiling::SpaceHandle(dst_memory_space().name()), dst.label(), - dst.data(), Kokkos::Profiling::SpaceHandle(src_memory_space().name()), + Kokkos::Profiling::SpaceHandle(dst_memory_space::name()), dst.label(), + dst.data(), Kokkos::Profiling::SpaceHandle(src_memory_space::name()), src.label(), src.data(), src.span() * sizeof(typename dst_type::value_type)); } #endif - if (dst.data() == NULL && src.data() == NULL) { + if (dst.data() == nullptr && src.data() == nullptr) { Kokkos::fence(); #if defined(KOKKOS_ENABLE_PROFILING) if (Kokkos::Profiling::profileLibraryLoaded()) { @@ -1643,7 +1721,7 @@ inline void deep_copy( std::is_same::specialize, void>::value && std::is_same::specialize, void>::value && (unsigned(ViewTraits::rank) != 0 || - unsigned(ViewTraits::rank) != 0))>::type* = 0) { + unsigned(ViewTraits::rank) != 0))>::type* = nullptr) { typedef View dst_type; typedef View src_type; typedef typename dst_type::execution_space dst_execution_space; @@ -1663,14 +1741,14 @@ inline void deep_copy( #if defined(KOKKOS_ENABLE_PROFILING) if (Kokkos::Profiling::profileLibraryLoaded()) { Kokkos::Profiling::beginDeepCopy( - Kokkos::Profiling::SpaceHandle(dst_memory_space().name()), dst.label(), - dst.data(), Kokkos::Profiling::SpaceHandle(src_memory_space().name()), + Kokkos::Profiling::SpaceHandle(dst_memory_space::name()), dst.label(), + dst.data(), Kokkos::Profiling::SpaceHandle(src_memory_space::name()), src.label(), src.data(), src.span() * sizeof(typename dst_type::value_type)); } #endif - if (dst.data() == NULL || src.data() == NULL) { + if (dst.data() == nullptr || src.data() == nullptr) { #ifdef KOKKOS_ENABLE_DEPRECATED_CODE // do nothing #else @@ -1874,7 +1952,7 @@ void KOKKOS_INLINE_FUNCTION local_deep_copy( const View& src, typename std::enable_if<(unsigned(ViewTraits::rank) == 1 && unsigned(ViewTraits::rank) == - 1)>::type* = 0) { + 1)>::type* = nullptr) { if (dst.data() == nullptr) { return; } @@ -1893,7 +1971,7 @@ void KOKKOS_INLINE_FUNCTION local_deep_copy( const View& src, typename std::enable_if<(unsigned(ViewTraits::rank) == 2 && unsigned(ViewTraits::rank) == - 2)>::type* = 0) { + 2)>::type* = nullptr) { if (dst.data() == nullptr) { return; } @@ -1921,7 +1999,7 @@ void KOKKOS_INLINE_FUNCTION local_deep_copy( const View& src, typename std::enable_if<(unsigned(ViewTraits::rank) == 3 && unsigned(ViewTraits::rank) == - 3)>::type* = 0) { + 3)>::type* = nullptr) { if (dst.data() == nullptr) { return; } @@ -1951,7 +2029,7 @@ void KOKKOS_INLINE_FUNCTION local_deep_copy( const View& src, typename std::enable_if<(unsigned(ViewTraits::rank) == 4 && unsigned(ViewTraits::rank) == - 4)>::type* = 0) { + 4)>::type* = nullptr) { if (dst.data() == nullptr) { return; } @@ -1984,7 +2062,7 @@ void KOKKOS_INLINE_FUNCTION local_deep_copy( const View& src, typename std::enable_if<(unsigned(ViewTraits::rank) == 5 && unsigned(ViewTraits::rank) == - 5)>::type* = 0) { + 5)>::type* = nullptr) { if (dst.data() == nullptr) { return; } @@ -2019,7 +2097,7 @@ void KOKKOS_INLINE_FUNCTION local_deep_copy( const View& src, typename std::enable_if<(unsigned(ViewTraits::rank) == 6 && unsigned(ViewTraits::rank) == - 6)>::type* = 0) { + 6)>::type* = nullptr) { if (dst.data() == nullptr) { return; } @@ -2056,7 +2134,7 @@ void KOKKOS_INLINE_FUNCTION local_deep_copy( const View& src, typename std::enable_if<(unsigned(ViewTraits::rank) == 7 && unsigned(ViewTraits::rank) == - 7)>::type* = 0) { + 7)>::type* = nullptr) { if (dst.data() == nullptr) { return; } @@ -2095,7 +2173,7 @@ 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) { + 1)>::type* = nullptr) { if (dst.data() == nullptr) { return; } @@ -2112,7 +2190,7 @@ 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) { + 2)>::type* = nullptr) { if (dst.data() == nullptr) { return; } @@ -2130,7 +2208,7 @@ 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) { + 3)>::type* = nullptr) { if (dst.data() == nullptr) { return; } @@ -2150,7 +2228,7 @@ 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) { + 4)>::type* = nullptr) { if (dst.data() == nullptr) { return; } @@ -2171,7 +2249,7 @@ 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) { + 5)>::type* = nullptr) { if (dst.data() == nullptr) { return; } @@ -2193,7 +2271,7 @@ 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) { + 6)>::type* = nullptr) { if (dst.data() == nullptr) { return; } @@ -2216,7 +2294,7 @@ 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) { + 7)>::type* = nullptr) { if (dst.data() == nullptr) { return; } @@ -2260,7 +2338,7 @@ 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) { + 1)>::type* = nullptr) { if (dst.data() == nullptr) { return; } @@ -2278,7 +2356,7 @@ 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) { + 2)>::type* = nullptr) { if (dst.data() == nullptr) { return; } @@ -2305,7 +2383,7 @@ 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) { + 3)>::type* = nullptr) { if (dst.data() == nullptr) { return; } @@ -2334,7 +2412,7 @@ 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) { + 4)>::type* = nullptr) { if (dst.data() == nullptr) { return; } @@ -2366,7 +2444,7 @@ 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) { + 5)>::type* = nullptr) { if (dst.data() == nullptr) { return; } @@ -2400,7 +2478,7 @@ 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) { + 6)>::type* = nullptr) { if (dst.data() == nullptr) { return; } @@ -2436,7 +2514,7 @@ 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) { + 7)>::type* = nullptr) { if (dst.data() == nullptr) { return; } @@ -2475,7 +2553,7 @@ 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) { + 1)>::type* = nullptr) { if (dst.data() == nullptr) { return; } @@ -2492,7 +2570,7 @@ 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) { + 2)>::type* = nullptr) { if (dst.data() == nullptr) { return; } @@ -2510,7 +2588,7 @@ 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) { + 3)>::type* = nullptr) { if (dst.data() == nullptr) { return; } @@ -2529,7 +2607,7 @@ 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) { + 4)>::type* = nullptr) { if (dst.data() == nullptr) { return; } @@ -2550,7 +2628,7 @@ 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) { + 5)>::type* = nullptr) { if (dst.data() == nullptr) { return; } @@ -2572,7 +2650,7 @@ 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) { + 6)>::type* = nullptr) { if (dst.data() == nullptr) { return; } @@ -2595,7 +2673,7 @@ 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) { + 7)>::type* = nullptr) { if (dst.data() == nullptr) { return; } @@ -2621,33 +2699,88 @@ void KOKKOS_INLINE_FUNCTION local_deep_copy( namespace Kokkos { -/** \brief Deep copy a value from Host memory into a view. */ +/** \brief Deep copy a value from Host memory into a view. ExecSpace can access + * dst */ template inline void deep_copy( - const ExecSpace&, const View& dst, + const ExecSpace& space, const View& dst, typename ViewTraits::const_value_type& value, typename std::enable_if< Kokkos::Impl::is_execution_space::value && - std::is_same::specialize, - void>::value>::type* = 0) { + std::is_same::specialize, void>::value && + Kokkos::Impl::SpaceAccessibility< + ExecSpace, + typename ViewTraits::memory_space>::accessible>::type* = + nullptr) { typedef ViewTraits dst_traits; + static_assert(std::is_same::value, + "deep_copy requires non-const type"); +#if defined(KOKKOS_ENABLE_PROFILING) typedef typename dst_traits::memory_space dst_memory_space; + if (Kokkos::Profiling::profileLibraryLoaded()) { + Kokkos::Profiling::beginDeepCopy( + Kokkos::Profiling::SpaceHandle(dst_memory_space::name()), dst.label(), + dst.data(), Kokkos::Profiling::SpaceHandle(Kokkos::HostSpace::name()), + "(none)", &value, dst.span() * sizeof(typename dst_traits::value_type)); + } +#endif + if (dst.data() == nullptr) { + space.fence(); + } else { + using ViewTypeUniform = typename std::conditional< + View::Rank == 0, + typename View::uniform_runtime_type, + typename View::uniform_runtime_nomemspace_type>::type; + Kokkos::Impl::ViewFill(dst, value, space); + } +#if defined(KOKKOS_ENABLE_PROFILING) + if (Kokkos::Profiling::profileLibraryLoaded()) { + Kokkos::Profiling::endDeepCopy(); + } +#endif +} + +/** \brief Deep copy a value from Host memory into a view. ExecSpace can not + * access dst */ +template +inline void deep_copy( + const ExecSpace& space, const View& dst, + typename ViewTraits::const_value_type& value, + typename std::enable_if< + Kokkos::Impl::is_execution_space::value && + std::is_same::specialize, void>::value && + !Kokkos::Impl::SpaceAccessibility< + ExecSpace, + typename ViewTraits::memory_space>::accessible>::type* = + nullptr) { + typedef ViewTraits dst_traits; static_assert(std::is_same::value, "deep_copy requires non-const type"); #if defined(KOKKOS_ENABLE_PROFILING) + typedef typename dst_traits::memory_space dst_memory_space; if (Kokkos::Profiling::profileLibraryLoaded()) { Kokkos::Profiling::beginDeepCopy( - Kokkos::Profiling::SpaceHandle(dst_memory_space().name()), dst.label(), - dst.data(), Kokkos::Profiling::SpaceHandle(Kokkos::HostSpace().name()), + Kokkos::Profiling::SpaceHandle(dst_memory_space::name()), dst.label(), + dst.data(), Kokkos::Profiling::SpaceHandle(Kokkos::HostSpace::name()), "(none)", &value, dst.span() * sizeof(typename dst_traits::value_type)); } #endif - ExecSpace().fence(); - typedef - typename View::uniform_runtime_nomemspace_type ViewTypeUniform; - Kokkos::Impl::ViewFill(dst, value); - ExecSpace().fence(); + if (dst.data() == nullptr) { + space.fence(); + } else { + space.fence(); + using ViewTypeUniform = typename std::conditional< + View::Rank == 0, + typename View::uniform_runtime_type, + typename View::uniform_runtime_nomemspace_type>::type; + using fill_exec_space = typename dst_traits::memory_space::execution_space; + Kokkos::Impl::ViewFill(dst, value, fill_exec_space()); + fill_exec_space().fence(); + } #if defined(KOKKOS_ENABLE_PROFILING) if (Kokkos::Profiling::profileLibraryLoaded()) { Kokkos::Profiling::endDeepCopy(); @@ -2672,13 +2805,13 @@ inline void deep_copy( #if defined(KOKKOS_ENABLE_PROFILING) if (Kokkos::Profiling::profileLibraryLoaded()) { Kokkos::Profiling::beginDeepCopy( - Kokkos::Profiling::SpaceHandle(Kokkos::HostSpace().name()), "(none)", - &dst, Kokkos::Profiling::SpaceHandle(src_memory_space().name()), + Kokkos::Profiling::SpaceHandle(Kokkos::HostSpace::name()), "(none)", + &dst, Kokkos::Profiling::SpaceHandle(src_memory_space::name()), src.label(), src.data(), sizeof(ST)); } #endif - if (src.data() == NULL) { + if (src.data() == nullptr) { exec_space.fence(); #if defined(KOKKOS_ENABLE_PROFILING) if (Kokkos::Profiling::profileLibraryLoaded()) { @@ -2721,13 +2854,13 @@ inline void deep_copy( #if defined(KOKKOS_ENABLE_PROFILING) if (Kokkos::Profiling::profileLibraryLoaded()) { Kokkos::Profiling::beginDeepCopy( - Kokkos::Profiling::SpaceHandle(dst_memory_space().name()), dst.label(), - dst.data(), Kokkos::Profiling::SpaceHandle(src_memory_space().name()), + Kokkos::Profiling::SpaceHandle(dst_memory_space::name()), dst.label(), + dst.data(), Kokkos::Profiling::SpaceHandle(src_memory_space::name()), src.label(), src.data(), sizeof(DT)); } #endif - if (dst.data() == NULL && src.data() == NULL) { + if (dst.data() == nullptr && src.data() == nullptr) { exec_space.fence(); #if defined(KOKKOS_ENABLE_PROFILING) if (Kokkos::Profiling::profileLibraryLoaded()) { @@ -2737,13 +2870,11 @@ inline void deep_copy( return; } - exec_space.fence(); if (dst.data() != src.data()) { Kokkos::Impl::DeepCopy( exec_space, dst.data(), src.data(), sizeof(typename dst_traits::value_type)); } - exec_space.fence(); #if defined(KOKKOS_ENABLE_PROFILING) if (Kokkos::Profiling::profileLibraryLoaded()) { Kokkos::Profiling::endDeepCopy(); @@ -2764,7 +2895,7 @@ inline void deep_copy( std::is_same::specialize, void>::value && std::is_same::specialize, void>::value && (unsigned(ViewTraits::rank) != 0 || - unsigned(ViewTraits::rank) != 0))>::type* = 0) { + unsigned(ViewTraits::rank) != 0))>::type* = nullptr) { typedef View dst_type; typedef View src_type; @@ -2785,13 +2916,21 @@ inline void deep_copy( #if defined(KOKKOS_ENABLE_PROFILING) if (Kokkos::Profiling::profileLibraryLoaded()) { Kokkos::Profiling::beginDeepCopy( - Kokkos::Profiling::SpaceHandle(dst_memory_space().name()), dst.label(), - dst.data(), Kokkos::Profiling::SpaceHandle(src_memory_space().name()), + Kokkos::Profiling::SpaceHandle(dst_memory_space::name()), dst.label(), + dst.data(), Kokkos::Profiling::SpaceHandle(src_memory_space::name()), src.label(), src.data(), dst.span() * sizeof(dst_value_type)); } #endif - if (dst.data() == NULL || src.data() == NULL) { + dst_value_type* dst_start = dst.data(); + dst_value_type* dst_end = dst.data() + dst.span(); + src_value_type* src_start = src.data(); + src_value_type* src_end = src.data() + src.span(); + + // Early dropout if identical range + if ((dst_start == nullptr || src_start == nullptr) || + ((std::ptrdiff_t(dst_start) == std::ptrdiff_t(src_start)) && + (std::ptrdiff_t(dst_end) == std::ptrdiff_t(src_end)))) { #ifdef KOKKOS_ENABLE_DEPRECATED_CODE // do nothing #else @@ -2823,7 +2962,6 @@ inline void deep_copy( Kokkos::Impl::throw_runtime_exception(message); } #endif - exec_space.fence(); #if defined(KOKKOS_ENABLE_PROFILING) if (Kokkos::Profiling::profileLibraryLoaded()) { Kokkos::Profiling::endDeepCopy(); @@ -2851,11 +2989,7 @@ inline void deep_copy( dst_memory_space>::accessible }; - // Checking for Overlapping Views. - dst_value_type* dst_start = dst.data(); - dst_value_type* dst_end = dst.data() + dst.span(); - src_value_type* src_start = src.data(); - src_value_type* src_end = src.data() + src.span(); + // Error out for non-identical overlapping views. if ((((std::ptrdiff_t)dst_start < (std::ptrdiff_t)src_end) && ((std::ptrdiff_t)dst_end > (std::ptrdiff_t)src_start)) && ((dst.span_is_contiguous() && src.span_is_contiguous()))) { @@ -2881,23 +3015,27 @@ inline void deep_copy( (src.extent(4) != dst.extent(4)) || (src.extent(5) != dst.extent(5)) || (src.extent(6) != dst.extent(6)) || (src.extent(7) != dst.extent(7))) { #ifdef KOKKOS_ENABLE_DEPRECATED_CODE - exec_space.fence(); if (ExecCanAccessSrcDst) { Kokkos::Impl::ViewRemap(dst, src); + exec_space.fence(); } else if (DstExecCanAccessSrc) { // Copying data between views in accessible memory spaces and either // non-contiguous or incompatible shape. - Kokkos::Impl::ViewRemap(dst, src); + exec_space.fence(); + Kokkos::Impl::ViewRemap(dst, + src); + dst_execution_space().fence(); } else if (SrcExecCanAccessDst) { // Copying data between views in accessible memory spaces and either // non-contiguous or incompatible shape. + exec_space.fence(); Kokkos::Impl::ViewRemap(dst, src); + src_execution_space().fence(); } else { Kokkos::Impl::throw_runtime_exception( "deep_copy given views that would require a temporary allocation"); } - exec_space.fence(); #if defined(KOKKOS_ENABLE_PROFILING) if (Kokkos::Profiling::profileLibraryLoaded()) { Kokkos::Profiling::endDeepCopy(); @@ -2946,16 +3084,26 @@ inline void deep_copy( ((dst_type::rank < 7) || (dst.stride_6() == src.stride_6())) && ((dst_type::rank < 8) || (dst.stride_7() == src.stride_7()))) { const size_t nbytes = sizeof(typename dst_type::value_type) * dst.span(); - exec_space.fence(); if ((void*)dst.data() != (void*)src.data()) { Kokkos::Impl::DeepCopy( exec_space, dst.data(), src.data(), nbytes); } - exec_space.fence(); } else { - exec_space.fence(); - Impl::view_copy(dst, src); - exec_space.fence(); + // Copying data between views in accessible memory spaces and either + // non-contiguous or incompatible shape. + if (ExecCanAccessSrcDst) { + Impl::view_copy(exec_space, dst, src); + } else if (DstExecCanAccessSrc || SrcExecCanAccessDst) { + using cpy_exec_space = + typename std::conditional::type; + exec_space.fence(); + Impl::view_copy(cpy_exec_space(), dst, src); + cpy_exec_space().fence(); + } else { + Kokkos::Impl::throw_runtime_exception( + "deep_copy given views that would require a temporary allocation"); + } } #if defined(KOKKOS_ENABLE_PROFILING) if (Kokkos::Profiling::profileLibraryLoaded()) { @@ -3285,7 +3433,7 @@ inline typename Kokkos::View::HostMirror create_mirror( typename std::enable_if< std::is_same::specialize, void>::value && !std::is_same::array_layout, - Kokkos::LayoutStride>::value>::type* = 0) { + Kokkos::LayoutStride>::value>::type* = nullptr) { typedef View src_type; typedef typename src_type::HostMirror dst_type; @@ -3321,7 +3469,7 @@ inline typename Kokkos::View::HostMirror create_mirror( typename std::enable_if< std::is_same::specialize, void>::value && std::is_same::array_layout, - Kokkos::LayoutStride>::value>::type* = 0) { + Kokkos::LayoutStride>::value>::type* = nullptr) { typedef View src_type; typedef typename src_type::HostMirror dst_type; @@ -3353,7 +3501,8 @@ template typename Impl::MirrorType::view_type create_mirror( const Space&, const Kokkos::View& src, typename std::enable_if::specialize, void>::value>::type* = 0) { + typename ViewTraits::specialize, void>::value>::type* = + nullptr) { return typename Impl::MirrorType::view_type(src.label(), src.layout()); } @@ -3367,7 +3516,7 @@ inline typename Kokkos::View::HostMirror create_mirror_view( typename Kokkos::View::HostMirror::memory_space>::value && std::is_same::data_type, typename Kokkos::View::HostMirror::data_type>:: - value)>::type* = 0) { + value)>::type* = nullptr) { return src; } @@ -3389,7 +3538,8 @@ template typename Impl::MirrorViewType::view_type create_mirror_view( const Space&, const Kokkos::View& src, typename std::enable_if< - Impl::MirrorViewType::is_same_memspace>::type* = 0) { + Impl::MirrorViewType::is_same_memspace>::type* = + nullptr) { return src; } @@ -3411,8 +3561,10 @@ create_mirror_view_and_copy( const Space&, const Kokkos::View& src, std::string const& name = "", typename std::enable_if< - Impl::MirrorViewType::is_same_memspace>::type* = 0) { + Impl::MirrorViewType::is_same_memspace>::type* = + nullptr) { (void)name; + fence(); // same behavior as deep_copy(src, src) return src; } @@ -3427,7 +3579,8 @@ create_mirror_view_and_copy( !Impl::MirrorViewType::is_same_memspace>::type* = 0) { using Mirror = typename Impl::MirrorViewType::view_type; std::string label = name.empty() ? src.label() : name; - auto mirror = Mirror(ViewAllocateWithoutInitializing(label), src.layout()); + auto mirror = typename Mirror::non_const_type{ + ViewAllocateWithoutInitializing(label), src.layout()}; deep_copy(mirror, src); return mirror; } @@ -3439,7 +3592,8 @@ typename Impl::MirrorViewType::view_type create_mirror_view( const Space&, const Kokkos::View& src, Kokkos::Impl::WithoutInitializing_t, typename std::enable_if< - Impl::MirrorViewType::is_same_memspace>::type* = 0) { + Impl::MirrorViewType::is_same_memspace>::type* = + nullptr) { return src; } diff --git a/lib/kokkos/core/src/Kokkos_Core.hpp b/lib/kokkos/core/src/Kokkos_Core.hpp index 7661efeca7..8392f0f3e5 100644 --- a/lib/kokkos/core/src/Kokkos_Core.hpp +++ b/lib/kokkos/core/src/Kokkos_Core.hpp @@ -58,13 +58,9 @@ #include #endif -//#if defined( KOKKOS_ENABLE_OPENMPTARGET ) +#if defined(KOKKOS_ENABLE_OPENMPTARGET) #include #include -//#endif - -#if defined(KOKKOS_ENABLE_QTHREADS) -#include #endif #if defined(KOKKOS_ENABLE_HPX) @@ -82,6 +78,9 @@ #if defined(KOKKOS_ENABLE_ROCM) #include #endif +#if defined(KOKKOS_ENABLE_HIP) +#include +#endif #include #include @@ -93,9 +92,7 @@ #include #include #include - #include - #include #include #include @@ -123,7 +120,15 @@ struct InitArguments { void initialize(int& narg, char* arg[]); -void initialize(const InitArguments& args = InitArguments()); +void initialize(InitArguments args = InitArguments()); + +namespace Impl { + +void pre_initialize(const InitArguments& args); + +void post_initialize(const InitArguments& args); + +} // namespace Impl bool is_initialized() noexcept; diff --git a/lib/kokkos/core/src/Kokkos_Core_fwd.hpp b/lib/kokkos/core/src/Kokkos_Core_fwd.hpp index 5b89dc51ca..4828a95775 100644 --- a/lib/kokkos/core/src/Kokkos_Core_fwd.hpp +++ b/lib/kokkos/core/src/Kokkos_Core_fwd.hpp @@ -99,10 +99,6 @@ class HBWSpace; /// Memory space for hbw_malloc from memkind (e.g. for KNL class Serial; ///< Execution space main process on CPU. #endif -#if defined(KOKKOS_ENABLE_QTHREADS) -class Qthreads; ///< Execution space with Qthreads back-end. -#endif - #if defined(KOKKOS_ENABLE_HPX) namespace Experimental { class HPX; ///< Execution space with HPX back-end. @@ -124,13 +120,6 @@ class OpenMPTargetSpace; } // namespace Experimental #endif -#if defined(KOKKOS_ENABLE_CUDA) -class CudaSpace; ///< Memory space on Cuda GPU -class CudaUVMSpace; ///< Memory space on Cuda GPU with UVM -class CudaHostPinnedSpace; ///< Memory space on Host accessible to Cuda GPU -class Cuda; ///< Execution space for Cuda GPU -#endif - #if defined(KOKKOS_ENABLE_ROCM) namespace Experimental { class ROCmSpace; ///< Memory space on ROCm GPU @@ -138,11 +127,20 @@ class ROCm; ///< Execution space for ROCm GPU } // namespace Experimental #endif +#if defined(KOKKOS_ENABLE_HIP) +namespace Experimental { +class HIPSpace; ///< Memory space on HIP GPU +class HIP; ///< Execution space for HIP GPU +} // namespace Experimental +#endif + template struct Device; } // namespace Kokkos +#include "Cuda/Kokkos_Cuda_fwd.hpp" + //---------------------------------------------------------------------------- // Set the default execution space. @@ -157,44 +155,42 @@ namespace Kokkos { typedef Cuda DefaultExecutionSpace; #elif defined(KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_OPENMPTARGET) typedef Experimental::OpenMPTarget DefaultExecutionSpace; +#elif defined(KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_HIP) +typedef Experimental::HIP DefaultExecutionSpace; #elif defined(KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_ROCM) typedef Experimental::ROCm DefaultExecutionSpace; #elif defined(KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_OPENMP) typedef OpenMP DefaultExecutionSpace; #elif defined(KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_THREADS) 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 #error \ - "At least one of the following execution spaces must be defined in order to use Kokkos: Kokkos::Cuda, Kokkos::Experimental::OpenMPTarget, Kokkos::OpenMP, Kokkos::Threads, Kokkos::Qthreads, or Kokkos::Serial." + "At least one of the following execution spaces must be defined in order to use Kokkos: Kokkos::Cuda, Kokkos::Experimental::HIP, Kokkos::Experimental::OpenMPTarget, Kokkos::OpenMP, Kokkos::Threads, Kokkos::Experimental::HPX, or Kokkos::Serial." #endif #if defined(KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_OPENMP) typedef OpenMP DefaultHostExecutionSpace; #elif defined(KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_THREADS) typedef Threads DefaultHostExecutionSpace; -//#elif defined( KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_QTHREADS ) -// typedef Qthreads DefaultHostExecutionSpace; +#elif defined(KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_HPX) +typedef Kokkos::Experimental::HPX DefaultHostExecutionSpace; #elif defined(KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_SERIAL) typedef Serial DefaultHostExecutionSpace; #elif defined(KOKKOS_ENABLE_OPENMP) typedef OpenMP DefaultHostExecutionSpace; #elif defined(KOKKOS_ENABLE_THREADS) 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 #error \ - "At least one of the following execution spaces must be defined in order to use Kokkos: Kokkos::OpenMP, Kokkos::Threads, Kokkos::Qthreads, or Kokkos::Serial." + "At least one of the following execution spaces must be defined in order to use Kokkos: Kokkos::OpenMP, Kokkos::Threads, Kokkos::Experimental::HPX, or Kokkos::Serial." #endif } // namespace Kokkos @@ -213,6 +209,8 @@ namespace Impl { typedef Kokkos::CudaSpace ActiveExecutionMemorySpace; #elif defined(KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_ROCM_GPU) typedef Kokkos::HostSpace ActiveExecutionMemorySpace; +#elif defined(KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_HIP_GPU) +typedef Kokkos::Experimental::HIPSpace ActiveExecutionMemorySpace; #elif defined(KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_HOST) typedef Kokkos::HostSpace ActiveExecutionMemorySpace; #else diff --git a/lib/kokkos/core/src/Kokkos_Crs.hpp b/lib/kokkos/core/src/Kokkos_Crs.hpp index f57863263b..3725ba2604 100644 --- a/lib/kokkos/core/src/Kokkos_Crs.hpp +++ b/lib/kokkos/core/src/Kokkos_Crs.hpp @@ -105,12 +105,12 @@ class Crs { /* * Default Constructors, operators and destructor */ - KOKKOS_FUNCTION Crs() = default; - KOKKOS_FUNCTION Crs(Crs const&) = default; - KOKKOS_FUNCTION Crs(Crs&&) = default; - KOKKOS_FUNCTION Crs& operator=(Crs const&) = default; - KOKKOS_FUNCTION Crs& operator=(Crs&&) = default; - KOKKOS_FUNCTION ~Crs() = default; + KOKKOS_DEFAULTED_FUNCTION Crs() = default; + KOKKOS_DEFAULTED_FUNCTION Crs(Crs const&) = default; + KOKKOS_DEFAULTED_FUNCTION Crs(Crs&&) = default; + KOKKOS_DEFAULTED_FUNCTION Crs& operator=(Crs const&) = default; + KOKKOS_DEFAULTED_FUNCTION Crs& operator=(Crs&&) = default; + KOKKOS_DEFAULTED_FUNCTION ~Crs() = default; /** \brief Assign to a view of the rhs array. * If the old view is the last view @@ -313,7 +313,7 @@ struct CountAndFillBase; template struct CountAndFillBase { - using data_type = typename CrsType::size_type; + using data_type = typename CrsType::data_type; using size_type = typename CrsType::size_type; using row_map_type = typename CrsType::row_map_type; using counts_type = row_map_type; @@ -343,7 +343,7 @@ struct CountAndFillBase { #if defined(KOKKOS_ENABLE_CUDA) template struct CountAndFillBase { - using data_type = typename CrsType::size_type; + using data_type = typename CrsType::data_type; using size_type = typename CrsType::size_type; using row_map_type = typename CrsType::row_map_type; using counts_type = row_map_type; diff --git a/lib/kokkos/core/src/Kokkos_Cuda.hpp b/lib/kokkos/core/src/Kokkos_Cuda.hpp index ad62ecf383..ed51e95778 100644 --- a/lib/kokkos/core/src/Kokkos_Cuda.hpp +++ b/lib/kokkos/core/src/Kokkos_Cuda.hpp @@ -199,8 +199,7 @@ class Cuda { //-------------------------------------------------- //! \name Cuda space instances - KOKKOS_INLINE_FUNCTION - ~Cuda() {} + ~Cuda() = default; Cuda(); @@ -258,6 +257,7 @@ class Cuda { cudaStream_t cuda_stream() const; int cuda_device() const; + const cudaDeviceProp& cuda_device_prop() const; //@} //-------------------------------------------------------------------------- @@ -267,11 +267,21 @@ class Cuda { inline Impl::CudaInternal* impl_internal_space_instance() const { return m_space_instance; } + uint32_t impl_instance_id() const noexcept { return 0; } private: Impl::CudaInternal* m_space_instance; }; +namespace Profiling { +namespace Experimental { +template <> +struct DeviceTypeTraits { + /// \brief An ID to differentiate (for example) Serial from OpenMP in Tooling + static constexpr DeviceType id = DeviceType::Cuda; +}; +} // namespace Experimental +} // namespace Profiling } // namespace Kokkos /*--------------------------------------------------------------------------*/ diff --git a/lib/kokkos/core/src/Kokkos_CudaSpace.hpp b/lib/kokkos/core/src/Kokkos_CudaSpace.hpp index 34db47f1c0..53e3b77786 100644 --- a/lib/kokkos/core/src/Kokkos_CudaSpace.hpp +++ b/lib/kokkos/core/src/Kokkos_CudaSpace.hpp @@ -166,7 +166,7 @@ class CudaUVMSpace { /*--------------------------------*/ /** \brief CudaUVMSpace specific routine */ - static int number_of_allocations(); + KOKKOS_DEPRECATED static int number_of_allocations(); /*--------------------------------*/ @@ -401,6 +401,126 @@ struct DeepCopy { DeepCopy(const Cuda&, void* dst, const void* src, size_t); }; +template <> +struct DeepCopy { + DeepCopy(void* dst, const void* src, size_t n) { + (void)DeepCopy(dst, src, n); + } + DeepCopy(const Cuda& instance, void* dst, const void* src, size_t n) { + (void)DeepCopy(instance, dst, src, n); + } +}; + +template <> +struct DeepCopy { + DeepCopy(void* dst, const void* src, size_t n) { + (void)DeepCopy(dst, src, n); + } + DeepCopy(const Cuda& instance, void* dst, const void* src, size_t n) { + (void)DeepCopy(instance, dst, src, n); + } +}; + +template <> +struct DeepCopy { + DeepCopy(void* dst, const void* src, size_t n) { + (void)DeepCopy(dst, src, n); + } + DeepCopy(const Cuda& instance, void* dst, const void* src, size_t n) { + (void)DeepCopy(instance, dst, src, n); + } +}; + +template <> +struct DeepCopy { + DeepCopy(void* dst, const void* src, size_t n) { + (void)DeepCopy(dst, src, n); + } + DeepCopy(const Cuda& instance, void* dst, const void* src, size_t n) { + (void)DeepCopy(instance, dst, src, n); + } +}; + +template <> +struct DeepCopy { + DeepCopy(void* dst, const void* src, size_t n) { + (void)DeepCopy(dst, src, n); + } + DeepCopy(const Cuda& instance, void* dst, const void* src, size_t n) { + (void)DeepCopy(instance, dst, src, n); + } +}; + +template <> +struct DeepCopy { + DeepCopy(void* dst, const void* src, size_t n) { + (void)DeepCopy(dst, src, n); + } + DeepCopy(const Cuda& instance, void* dst, const void* src, size_t n) { + (void)DeepCopy(instance, dst, src, n); + } +}; + +template <> +struct DeepCopy { + DeepCopy(void* dst, const void* src, size_t n) { + (void)DeepCopy(dst, src, n); + } + DeepCopy(const Cuda& instance, void* dst, const void* src, size_t n) { + (void)DeepCopy(instance, dst, src, n); + } +}; + +template <> +struct DeepCopy { + DeepCopy(void* dst, const void* src, size_t n) { + (void)DeepCopy(dst, src, n); + } + DeepCopy(const Cuda& instance, void* dst, const void* src, size_t n) { + (void)DeepCopy(instance, dst, src, n); + } +}; + +template <> +struct DeepCopy { + DeepCopy(void* dst, const void* src, size_t n) { + (void)DeepCopy(dst, src, n); + } + DeepCopy(const Cuda& instance, void* dst, const void* src, size_t n) { + (void)DeepCopy(instance, dst, src, n); + } +}; + +template <> +struct DeepCopy { + DeepCopy(void* dst, const void* src, size_t n) { + (void)DeepCopy(dst, src, n); + } + DeepCopy(const Cuda& instance, void* dst, const void* src, size_t n) { + (void)DeepCopy(instance, dst, src, n); + } +}; + +template <> +struct DeepCopy { + DeepCopy(void* dst, const void* src, size_t n) { + (void)DeepCopy(dst, src, n); + } + DeepCopy(const Cuda& instance, void* dst, const void* src, size_t n) { + (void)DeepCopy(instance, dst, src, n); + } +}; + +template <> +struct DeepCopy { + DeepCopy(void* dst, const void* src, size_t n) { + (void)DeepCopy(dst, src, n); + } + DeepCopy(const Cuda& instance, void* dst, const void* src, size_t n) { + (void)DeepCopy(instance, dst, src, n); + } +}; + template struct DeepCopy { inline DeepCopy(void* dst, const void* src, size_t n) { @@ -640,8 +760,8 @@ struct VerifyExecutionCanAccessMemorySpace struct VerifyExecutionCanAccessMemorySpace< - typename enable_if::value, - Kokkos::CudaSpace>::type, + typename std::enable_if::value, + Kokkos::CudaSpace>::type, OtherSpace> { enum { value = false }; KOKKOS_INLINE_FUNCTION static void verify(void) { diff --git a/lib/kokkos/core/src/Kokkos_ExecPolicy.hpp b/lib/kokkos/core/src/Kokkos_ExecPolicy.hpp index bf3a134b64..11910138d3 100644 --- a/lib/kokkos/core/src/Kokkos_ExecPolicy.hpp +++ b/lib/kokkos/core/src/Kokkos_ExecPolicy.hpp @@ -193,6 +193,7 @@ class RangePolicy : public Impl::PolicyTraits { inline void set(const ChunkSize& chunksize, Args... args) { m_granularity = chunksize.value; m_granularity_mask = m_granularity - 1; + set(args...); } public: @@ -210,8 +211,8 @@ class RangePolicy : public Impl::PolicyTraits { private: /** \brief finalize chunk_size if it was set to AUTO*/ inline void set_auto_chunk_size() { - typename traits::index_type concurrency = - traits::execution_space::concurrency(); + int64_t concurrency = + static_cast(traits::execution_space::concurrency()); if (concurrency == 0) concurrency = 1; if (m_granularity > 0) { @@ -219,12 +220,14 @@ class RangePolicy : public Impl::PolicyTraits { Kokkos::abort("RangePolicy blocking granularity must be power of two"); } - member_type new_chunk_size = 1; - while (new_chunk_size * 100 * concurrency < m_end - m_begin) + int64_t new_chunk_size = 1; + while (new_chunk_size * 100 * concurrency < + static_cast(m_end - m_begin)) new_chunk_size *= 2; if (new_chunk_size < 128) { new_chunk_size = 1; - while ((new_chunk_size * 40 * concurrency < m_end - m_begin) && + while ((new_chunk_size * 40 * concurrency < + static_cast(m_end - m_begin)) && (new_chunk_size < 128)) new_chunk_size *= 2; } @@ -483,7 +486,6 @@ struct ScratchRequest { level = level_; per_team = 0; per_thread = thread_value.value; - ; } inline ScratchRequest(const int& level_, const Impl::PerTeamValue& team_value, @@ -491,7 +493,6 @@ struct ScratchRequest { level = level_; per_team = team_value.value; per_thread = thread_value.value; - ; } inline ScratchRequest(const int& level_, @@ -500,7 +501,6 @@ struct ScratchRequest { level = level_; per_team = team_value.value; per_thread = thread_value.value; - ; } }; diff --git a/lib/kokkos/core/src/Kokkos_Extents.hpp b/lib/kokkos/core/src/Kokkos_Extents.hpp index 2e07e8b76b..856adf9cf9 100644 --- a/lib/kokkos/core/src/Kokkos_Extents.hpp +++ b/lib/kokkos/core/src/Kokkos_Extents.hpp @@ -97,36 +97,39 @@ struct _parse_impl { // backwards template struct _parse_impl< - T*, Experimental::Extents, + T*, Kokkos::Experimental::Extents, typename std::enable_if<_all_remaining_extents_dynamic::value>::type> - : _parse_impl> {}; + : _parse_impl> { +}; // int*(*[x])[y] should still work also (meaning int[][x][][y]) template -struct _parse_impl, - typename std::enable_if< - not _all_remaining_extents_dynamic::value>::type> { +struct _parse_impl< + T*, Kokkos::Experimental::Extents, + typename std::enable_if::value>::type> { using _next = Kokkos::Experimental::AppendExtent< - typename _parse_impl, void>::type, - Experimental::dynamic_extent>; + typename _parse_impl, + void>::type, + Kokkos::Experimental::dynamic_extent>; using type = typename _next::type; }; template -struct _parse_impl, void> - : _parse_impl, void> + : _parse_impl< + T, Kokkos::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< - DataType, Experimental::Extents<>>::type; + DataType, Kokkos::Experimental::Extents<>>::type; }; template @@ -135,7 +138,7 @@ struct ApplyExtent { }; template -struct ApplyExtent { +struct ApplyExtent { using type = ValueType*; }; @@ -150,15 +153,17 @@ struct ApplyExtent { }; template -struct ApplyExtent { +struct ApplyExtent { using type = - typename ApplyExtent::type*; + typename ApplyExtent::type*; }; template -struct ApplyExtent { +struct ApplyExtent { using type = - typename ApplyExtent::type[N]; + typename ApplyExtent::type[N]; }; } // end namespace Impl diff --git a/lib/kokkos/core/src/Kokkos_Future.hpp b/lib/kokkos/core/src/Kokkos_Future.hpp index 15a5d39aad..1995e2609a 100644 --- a/lib/kokkos/core/src/Kokkos_Future.hpp +++ b/lib/kokkos/core/src/Kokkos_Future.hpp @@ -296,7 +296,8 @@ class BasicFuture { task_base* m_task; - KOKKOS_INLINE_FUNCTION explicit BasicFuture(task_base* task) : m_task(0) { + KOKKOS_INLINE_FUNCTION explicit BasicFuture(task_base* task) + : m_task(nullptr) { if (task) queue_type::assign(&m_task, task); } @@ -306,7 +307,7 @@ class BasicFuture { //---------------------------------------- KOKKOS_INLINE_FUNCTION - bool is_null() const { return 0 == m_task; } + bool is_null() const { return nullptr == m_task; } KOKKOS_INLINE_FUNCTION int reference_count() const { @@ -317,7 +318,7 @@ class BasicFuture { KOKKOS_INLINE_FUNCTION void clear() { - if (m_task) queue_type::assign(&m_task, (task_base*)0); + if (m_task) queue_type::assign(&m_task, nullptr); } //---------------------------------------- @@ -332,11 +333,11 @@ class BasicFuture { KOKKOS_INLINE_FUNCTION BasicFuture(BasicFuture&& rhs) noexcept : m_task(rhs.m_task) { - rhs.m_task = 0; + rhs.m_task = nullptr; } KOKKOS_INLINE_FUNCTION - BasicFuture(const BasicFuture& rhs) : m_task(0) { + BasicFuture(const BasicFuture& rhs) : m_task(nullptr) { if (rhs.m_task) queue_type::assign(&m_task, rhs.m_task); } @@ -344,7 +345,7 @@ class BasicFuture { BasicFuture& operator=(BasicFuture&& rhs) noexcept { clear(); m_task = rhs.m_task; - rhs.m_task = 0; + rhs.m_task = nullptr; return *this; } @@ -420,13 +421,13 @@ class BasicFuture { KOKKOS_INLINE_FUNCTION int is_ready() const noexcept { - return (0 == m_task) || + return (nullptr == m_task) || (((task_base*)task_base::LockTag) == m_task->m_wait); } KOKKOS_INLINE_FUNCTION const typename Impl::TaskResult::reference_type get() const { - if (0 == m_task) { + if (nullptr == m_task) { Kokkos::abort("Kokkos:::Future::get ERROR: is_null()"); } return Impl::TaskResult::get(m_task); diff --git a/lib/kokkos/core/src/Kokkos_HBWSpace.hpp b/lib/kokkos/core/src/Kokkos_HBWSpace.hpp index c1f03f8962..ce36b018cf 100644 --- a/lib/kokkos/core/src/Kokkos_HBWSpace.hpp +++ b/lib/kokkos/core/src/Kokkos_HBWSpace.hpp @@ -110,19 +110,15 @@ class HBWSpace { 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_QTHREADS ) -// typedef Kokkos::Qthreads execution_space; #elif defined(KOKKOS_ENABLE_OPENMP) typedef Kokkos::OpenMP execution_space; #elif defined(KOKKOS_ENABLE_THREADS) typedef Kokkos::Threads execution_space; -//#elif defined( KOKKOS_ENABLE_QTHREADS ) -// typedef Kokkos::Qthreads execution_space; #elif defined(KOKKOS_ENABLE_SERIAL) typedef Kokkos::Serial execution_space; #else #error \ - "At least one of the following host execution spaces must be defined: Kokkos::OpenMP, Kokkos::Threads, Kokkos::Qhreads, or Kokkos::Serial. You might be seeing this message if you disabled the Kokkos::Serial device explicitly using the Kokkos_ENABLE_Serial:BOOL=OFF CMake option, but did not enable any of the other host execution space devices." + "At least one of the following host execution spaces must be defined: Kokkos::OpenMP, Kokkos::Threads, or Kokkos::Serial. You might be seeing this message if you disabled the Kokkos::Serial device explicitly using the Kokkos_ENABLE_Serial:BOOL=OFF CMake option, but did not enable any of the other host execution space devices." #endif //! This memory space preferred device_type @@ -192,7 +188,12 @@ class SharedAllocationRecord const Kokkos::Experimental::HBWSpace m_space; protected: - ~SharedAllocationRecord(); + ~SharedAllocationRecord() +#if defined( \ + KOKKOS_IMPL_INTEL_WORKAROUND_NOEXCEPT_SPECIFICATION_VIRTUAL_FUNCTION) + noexcept +#endif + ; SharedAllocationRecord() = default; SharedAllocationRecord( diff --git a/lib/kokkos/core/src/Kokkos_HIP.hpp b/lib/kokkos/core/src/Kokkos_HIP.hpp new file mode 100644 index 0000000000..4e9325c2d2 --- /dev/null +++ b/lib/kokkos/core/src/Kokkos_HIP.hpp @@ -0,0 +1,65 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// 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 NTESS "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 NTESS 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_HIP_HPP +#define KOKKOS_HIP_HPP + +#include + +#if defined(KOKKOS_ENABLE_HIP) + +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- + +#include +#include +#include + +#include +#include +#include +#include + +#endif +#endif diff --git a/lib/kokkos/core/src/Kokkos_HIP_Space.hpp b/lib/kokkos/core/src/Kokkos_HIP_Space.hpp new file mode 100644 index 0000000000..90bdb7b913 --- /dev/null +++ b/lib/kokkos/core/src/Kokkos_HIP_Space.hpp @@ -0,0 +1,758 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// 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 NTESS "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 NTESS 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_HIPSPACE_HPP +#define KOKKOS_HIPSPACE_HPP + +#include + +#if defined(KOKKOS_ENABLE_HIP) + +#include +#include +#include +#include +#include + +#include +#include +#include + +#include + +#include +/*--------------------------------------------------------------------------*/ + +namespace Kokkos { +namespace Experimental { +/** \brief HIP on-device memory management */ + +class HIPSpace { + public: + //! Tag this class as a kokkos memory space + using memory_space = HIPSpace; + using execution_space = Kokkos::Experimental::HIP; + using device_type = Kokkos::Device; + + using size_type = unsigned int; + + /*--------------------------------*/ + + HIPSpace(); + HIPSpace(HIPSpace&& rhs) = default; + HIPSpace(const HIPSpace& rhs) = default; + HIPSpace& operator=(HIPSpace&& rhs) = default; + HIPSpace& operator=(const HIPSpace& rhs) = default; + ~HIPSpace() = default; + + /**\brief Allocate untracked memory in the hip space */ + void* allocate(const size_t arg_alloc_size) const; + + /**\brief Deallocate untracked memory in the hip space */ + void deallocate(void* const arg_alloc_ptr, const size_t arg_alloc_size) const; + + /**\brief Return Name of the MemorySpace */ + static constexpr const char* name() { return "HIP"; } + + /*--------------------------------*/ + /** \brief Error reporting for HostSpace attempt to access HIPSpace */ + static void access_error(); + static void access_error(const void* const); + + private: + int m_device; ///< Which HIP device + + friend class Kokkos::Impl::SharedAllocationRecord< + Kokkos::Experimental::HIPSpace, void>; +}; + +} // namespace Experimental + +namespace Impl { + +/// \brief Initialize lock array for arbitrary size atomics. +/// +/// Arbitrary atomics are implemented using a hash table of locks +/// where the hash value is derived from the address of the +/// object for which an atomic operation is performed. +/// This function initializes the locks to zero (unset). +void init_lock_arrays_hip_space(); + +/// \brief Retrieve the pointer to the lock array for arbitrary size atomics. +/// +/// Arbitrary atomics are implemented using a hash table of locks +/// where the hash value is derived from the address of the +/// object for which an atomic operation is performed. +/// This function retrieves the lock array pointer. +/// If the array is not yet allocated it will do so. +int* atomic_lock_array_hip_space_ptr(bool deallocate = false); + +/// \brief Retrieve the pointer to the scratch array for team and thread private +/// global memory. +/// +/// Team and Thread private scratch allocations in +/// global memory are acquired via locks. +/// This function retrieves the lock array pointer. +/// If the array is not yet allocated it will do so. +int* scratch_lock_array_hip_space_ptr(bool deallocate = false); + +/// \brief Retrieve the pointer to the scratch array for unique identifiers. +/// +/// Unique identifiers in the range 0-HIP::concurrency +/// are provided via locks. +/// This function retrieves the lock array pointer. +/// If the array is not yet allocated it will do so. +int* threadid_lock_array_hip_space_ptr(bool deallocate = false); +} // namespace Impl +} // namespace Kokkos + +/*--------------------------------------------------------------------------*/ +/*--------------------------------------------------------------------------*/ + +namespace Kokkos { +namespace Experimental { +/** \brief Host memory that is accessible to HIP execution space + * through HIP's host-pinned memory allocation. + */ +class HIPHostPinnedSpace { + public: + //! Tag this class as a kokkos memory space + /** \brief Memory is in HostSpace so use the HostSpace::execution_space */ + using execution_space = HostSpace::execution_space; + using memory_space = HIPHostPinnedSpace; + using device_type = Kokkos::Device; + using size_type = unsigned int; + + /*--------------------------------*/ + + HIPHostPinnedSpace(); + HIPHostPinnedSpace(HIPHostPinnedSpace&& rhs) = default; + HIPHostPinnedSpace(const HIPHostPinnedSpace& rhs) = default; + HIPHostPinnedSpace& operator=(HIPHostPinnedSpace&& rhs) = default; + HIPHostPinnedSpace& operator=(const HIPHostPinnedSpace& rhs) = default; + ~HIPHostPinnedSpace() = default; + + /**\brief Allocate untracked memory in the space */ + void* allocate(const size_t arg_alloc_size) const; + + /**\brief Deallocate untracked memory in the space */ + void deallocate(void* const arg_alloc_ptr, const size_t arg_alloc_size) const; + + /**\brief Return Name of the MemorySpace */ + static constexpr const char* name() { return "HIPHostPinned"; } + + /*--------------------------------*/ +}; +} // namespace Experimental +} // namespace Kokkos + +/*--------------------------------------------------------------------------*/ +/*--------------------------------------------------------------------------*/ + +namespace Kokkos { +namespace Impl { + +static_assert( + Kokkos::Impl::MemorySpaceAccess::assignable, + ""); + +//---------------------------------------- + +template <> +struct MemorySpaceAccess { + enum { assignable = false }; + enum { accessible = false }; + enum { deepcopy = true }; +}; + +template <> +struct MemorySpaceAccess { + // HostSpace::execution_space == HIPHostPinnedSpace::execution_space + enum { assignable = true }; + enum { accessible = true }; + enum { deepcopy = true }; +}; + +//---------------------------------------- + +template <> +struct MemorySpaceAccess { + enum { assignable = false }; + enum { accessible = false }; + enum { deepcopy = true }; +}; + +template <> +struct MemorySpaceAccess { + // HIPSpace::execution_space != HIPHostPinnedSpace::execution_space + enum { assignable = false }; + enum { accessible = true }; // HIPSpace::execution_space + enum { deepcopy = true }; +}; + +//---------------------------------------- +// HIPHostPinnedSpace::execution_space == HostSpace::execution_space +// HIPHostPinnedSpace accessible to both HIP and Host + +template <> +struct MemorySpaceAccess { + enum { assignable = false }; // Cannot access from HIP + enum { accessible = true }; // HIPHostPinnedSpace::execution_space + enum { deepcopy = true }; +}; + +template <> +struct MemorySpaceAccess { + enum { assignable = false }; // Cannot access from Host + enum { accessible = false }; + enum { deepcopy = true }; +}; + +}; // namespace Impl +//---------------------------------------- + +} // namespace Kokkos + +/*--------------------------------------------------------------------------*/ +/*--------------------------------------------------------------------------*/ + +namespace Kokkos { +namespace Impl { + +void DeepCopyAsyncHIP(void* dst, const void* src, size_t n); + +template <> +struct DeepCopy { + DeepCopy(void* dst, const void* src, size_t); + DeepCopy(const Kokkos::Experimental::HIP&, void* dst, const void* src, + size_t); +}; + +template <> +struct DeepCopy { + DeepCopy(void* dst, const void* src, size_t); + DeepCopy(const Kokkos::Experimental::HIP&, void* dst, const void* src, + size_t); +}; + +template <> +struct DeepCopy { + DeepCopy(void* dst, const void* src, size_t); + DeepCopy(const Kokkos::Experimental::HIP&, void* dst, const void* src, + size_t); +}; + +template +struct DeepCopy { + inline DeepCopy(void* dst, const void* src, size_t n) { + (void)DeepCopy( + dst, src, n); + } + + inline DeepCopy(const ExecutionSpace& exec, void* dst, const void* src, + size_t n) { + exec.fence(); + DeepCopyAsyncHIP(dst, src, n); + } +}; + +template +struct DeepCopy { + inline DeepCopy(void* dst, const void* src, size_t n) { + (void)DeepCopy(dst, src, n); + } + + inline DeepCopy(const ExecutionSpace& exec, void* dst, const void* src, + size_t n) { + exec.fence(); + DeepCopyAsyncHIP(dst, src, n); + } +}; + +template +struct DeepCopy { + inline DeepCopy(void* dst, const void* src, size_t n) { + (void)DeepCopy(dst, src, n); + } + + inline DeepCopy(const ExecutionSpace& exec, void* dst, const void* src, + size_t n) { + exec.fence(); + DeepCopyAsyncHIP(dst, src, n); + } +}; + +template <> +struct DeepCopy { + DeepCopy(void* dst, const void* src, size_t); + DeepCopy(const Kokkos::Experimental::HIP&, void* dst, const void* src, + size_t); +}; + +template <> +struct DeepCopy { + DeepCopy(void* dst, const void* src, size_t); + DeepCopy(const Kokkos::Experimental::HIP&, void* dst, const void* src, + size_t); +}; + +template <> +struct DeepCopy { + DeepCopy(void* dst, const void* src, size_t); + DeepCopy(const Kokkos::Experimental::HIP&, void* dst, const void* src, + size_t); +}; + +template +struct DeepCopy { + inline DeepCopy(void* dst, const void* src, size_t n) { + (void)DeepCopy(dst, src, n); + } + + inline DeepCopy(const ExecutionSpace& exec, void* dst, const void* src, + size_t n) { + exec.fence(); + DeepCopyAsyncHIP(dst, src, n); + } +}; + +template +struct DeepCopy { + inline DeepCopy(void* dst, const void* src, size_t n) { + (void)DeepCopy(dst, src, n); + } + + inline DeepCopy(const ExecutionSpace& exec, void* dst, const void* src, + size_t n) { + exec.fence(); + DeepCopyAsyncHIP(dst, src, n); + } +}; + +template +struct DeepCopy { + inline DeepCopy(void* dst, const void* src, size_t n) { + (void)DeepCopy(dst, src, n); + } + + inline DeepCopy(const ExecutionSpace& exec, void* dst, const void* src, + size_t n) { + exec.fence(); + DeepCopyAsyncHIP(dst, src, n); + } +}; + +template +struct DeepCopy { + inline DeepCopy(void* dst, const void* src, size_t n) { + (void)DeepCopy(dst, src, n); + } + + inline DeepCopy(const ExecutionSpace& exec, void* dst, const void* src, + size_t n) { + exec.fence(); + DeepCopyAsyncHIP(dst, src, n); + } +}; + +template +struct DeepCopy { + inline DeepCopy(void* dst, const void* src, size_t n) { + (void)DeepCopy(dst, src, n); + } + + inline DeepCopy(const ExecutionSpace& exec, void* dst, const void* src, + size_t n) { + exec.fence(); + DeepCopyAsyncHIP(dst, src, n); + } +}; +} // namespace Impl +} // namespace Kokkos + +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- + +namespace Kokkos { +namespace Impl { + +/** Running in HIPSpace attempting to access HostSpace: error */ +template <> +struct VerifyExecutionCanAccessMemorySpace { + enum { value = false }; + KOKKOS_INLINE_FUNCTION static void verify(void) { + Kokkos::abort("HIP code attempted to access HostSpace memory"); + } + + KOKKOS_INLINE_FUNCTION static void verify(const void*) { + Kokkos::abort("HIP code attempted to access HostSpace memory"); + } +}; + +/** Running in HIPSpace accessing HIPHostPinnedSpace: ok */ +template <> +struct VerifyExecutionCanAccessMemorySpace< + Kokkos::Experimental::HIPSpace, Kokkos::Experimental::HIPHostPinnedSpace> { + enum { value = true }; + KOKKOS_INLINE_FUNCTION static void verify(void) {} + KOKKOS_INLINE_FUNCTION static void verify(const void*) {} +}; + +/** Running in HIPSpace attempting to access an unknown space: error */ +template +struct VerifyExecutionCanAccessMemorySpace< + typename std::enable_if< + !std::is_same::value, + Kokkos::Experimental::HIPSpace>::type, + OtherSpace> { + enum { value = false }; + KOKKOS_INLINE_FUNCTION static void verify(void) { + Kokkos::abort("HIP code attempted to access unknown Space memory"); + } + + KOKKOS_INLINE_FUNCTION static void verify(const void*) { + Kokkos::abort("HIP code attempted to access unknown Space memory"); + } +}; + +//---------------------------------------------------------------------------- +/** Running in HostSpace attempting to access HIPSpace */ +template <> +struct VerifyExecutionCanAccessMemorySpace { + enum { value = false }; + inline static void verify(void) { + Kokkos::Experimental::HIPSpace::access_error(); + } + inline static void verify(const void* p) { + Kokkos::Experimental::HIPSpace::access_error(p); + } +}; + +/** Running in HostSpace accessing HIPHostPinnedSpace is OK */ +template <> +struct VerifyExecutionCanAccessMemorySpace< + Kokkos::HostSpace, Kokkos::Experimental::HIPHostPinnedSpace> { + enum { value = true }; + KOKKOS_INLINE_FUNCTION static void verify(void) {} + KOKKOS_INLINE_FUNCTION static void verify(const void*) {} +}; +} // namespace Impl +} // namespace Kokkos + +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- + +namespace Kokkos { +namespace Impl { + +template <> +class SharedAllocationRecord + : public SharedAllocationRecord { + private: + typedef SharedAllocationRecord RecordBase; + + SharedAllocationRecord(const SharedAllocationRecord&) = delete; + SharedAllocationRecord& operator=(const SharedAllocationRecord&) = delete; + + static void deallocate(RecordBase*); + +#ifdef KOKKOS_DEBUG + static RecordBase s_root_record; +#endif + + const Kokkos::Experimental::HIPSpace m_space; + + protected: + ~SharedAllocationRecord(); + + SharedAllocationRecord( + const Kokkos::Experimental::HIPSpace& arg_space, + const std::string& arg_label, const size_t arg_alloc_size, + const RecordBase::function_type arg_dealloc = &deallocate); + + public: + std::string get_label() const; + + static SharedAllocationRecord* allocate( + const Kokkos::Experimental::HIPSpace& arg_space, + const std::string& arg_label, const size_t arg_alloc_size); + + /**\brief Allocate tracked memory in the space */ + static void* allocate_tracked(const Kokkos::Experimental::HIPSpace& arg_space, + const std::string& arg_label, + const size_t arg_alloc_size); + + /**\brief Reallocate tracked memory in the space */ + static void* reallocate_tracked(void* const arg_alloc_ptr, + const size_t arg_alloc_size); + + /**\brief Deallocate tracked memory in the space */ + static void deallocate_tracked(void* const arg_alloc_ptr); + + static SharedAllocationRecord* get_record(void* arg_alloc_ptr); + + static void print_records(std::ostream&, + const Kokkos::Experimental::HIPSpace&, + bool detail = false); +}; + +template <> +class SharedAllocationRecord + : public SharedAllocationRecord { + private: + typedef SharedAllocationRecord RecordBase; + + SharedAllocationRecord(const SharedAllocationRecord&) = delete; + SharedAllocationRecord& operator=(const SharedAllocationRecord&) = delete; + + static void deallocate(RecordBase*); + +#ifdef KOKKOS_DEBUG + static RecordBase s_root_record; +#endif + + const Kokkos::Experimental::HIPHostPinnedSpace m_space; + + protected: + ~SharedAllocationRecord(); + SharedAllocationRecord() : RecordBase(), m_space() {} + + SharedAllocationRecord( + const Kokkos::Experimental::HIPHostPinnedSpace& arg_space, + const std::string& arg_label, const size_t arg_alloc_size, + const RecordBase::function_type arg_dealloc = &deallocate); + + public: + std::string get_label() const; + + static SharedAllocationRecord* allocate( + const Kokkos::Experimental::HIPHostPinnedSpace& arg_space, + const std::string& arg_label, const size_t arg_alloc_size); + /**\brief Allocate tracked memory in the space */ + static void* allocate_tracked( + const Kokkos::Experimental::HIPHostPinnedSpace& arg_space, + const std::string& arg_label, const size_t arg_alloc_size); + + /**\brief Reallocate tracked memory in the space */ + static void* reallocate_tracked(void* const arg_alloc_ptr, + const size_t arg_alloc_size); + + /**\brief Deallocate tracked memory in the space */ + static void deallocate_tracked(void* const arg_alloc_ptr); + + static SharedAllocationRecord* get_record(void* arg_alloc_ptr); + + static void print_records(std::ostream&, + const Kokkos::Experimental::HIPHostPinnedSpace&, + bool detail = false); +}; +} // namespace Impl +} // namespace Kokkos + +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- + +namespace Kokkos { +namespace Experimental { +namespace Impl { +class HIPInternal; +} +/// \class HIP +/// \brief Kokkos device for multicore processors in the host memory space. +class HIP { + public: + //------------------------------------ + //! \name Type declarations that all Kokkos devices must provide. + //@{ + + //! Tag this class as a kokkos execution space + using execution_space = HIP; + using memory_space = HIPSpace; + using device_type = Kokkos::Device; + + using array_layout = LayoutLeft; + using size_type = HIPSpace::size_type; + + using scratch_memory_space = ScratchMemorySpace; + + ~HIP() = default; + HIP(); + // explicit HIP( const int instance_id ); + + HIP(HIP&&) = default; + HIP(const HIP&) = default; + HIP& operator=(HIP&&) = default; + HIP& operator=(const HIP&) = default; + + //@} + //------------------------------------ + //! \name Functions that all Kokkos devices must implement. + //@{ + + KOKKOS_INLINE_FUNCTION static int in_parallel() { +#if defined(__HIP_ARCH__) + return true; +#else + return false; +#endif + } + + /** \brief Wait until all dispatched functors complete. A noop for OpenMP. */ + static void impl_static_fence(); + void fence() const; + + /// \brief Print configuration information to the given output stream. + static void print_configuration(std::ostream&, const bool detail = false); + + /// \brief Free any resources being consumed by the device. + static void impl_finalize(); + + /** \brief Initialize the device. + * + */ + struct SelectDevice { + int hip_device_id; + SelectDevice() : hip_device_id(0) {} + explicit SelectDevice(int id) : hip_device_id(id) {} + }; + + int hip_device() const; + + static void impl_initialize(const SelectDevice = SelectDevice()); + + static int impl_is_initialized(); + + // static size_type device_arch(); + + // static size_type detect_device_count(); + + static int concurrency(); + static const char* name(); + + inline Impl::HIPInternal* impl_internal_space_instance() const { + return m_space_instance; + } + + uint32_t impl_instance_id() const noexcept { return 0; } + + private: + Impl::HIPInternal* m_space_instance; +}; +} // namespace Experimental +namespace Profiling { +namespace Experimental { +template <> +struct DeviceTypeTraits { + static constexpr DeviceType id = DeviceType::HIP; +}; +} // namespace Experimental +} // namespace Profiling +} // namespace Kokkos + +namespace Kokkos { +namespace Impl { + +template <> +struct MemorySpaceAccess { + enum { assignable = false }; + enum { accessible = true }; + enum { deepcopy = false }; +}; + +template <> +struct VerifyExecutionCanAccessMemorySpace< + Kokkos::Experimental::HIP::memory_space, + Kokkos::Experimental::HIP::scratch_memory_space> { + enum { value = true }; + KOKKOS_INLINE_FUNCTION static void verify(void) {} + KOKKOS_INLINE_FUNCTION static void verify(const void*) {} +}; + +template <> +struct VerifyExecutionCanAccessMemorySpace< + Kokkos::HostSpace, Kokkos::Experimental::HIP::scratch_memory_space> { + enum { value = false }; + inline static void verify(void) { + Kokkos::Experimental::HIPSpace::access_error(); + } + inline static void verify(const void* p) { + Kokkos::Experimental::HIPSpace::access_error(p); + } +}; + +} // namespace Impl +} // namespace Kokkos + +#endif /* #if defined( KOKKOS_ENABLE_HIP ) */ +#endif /* #define KOKKOS_HIPSPACE_HPP */ diff --git a/lib/kokkos/core/src/Kokkos_HPX.hpp b/lib/kokkos/core/src/Kokkos_HPX.hpp index 46101c824f..10354635c5 100644 --- a/lib/kokkos/core/src/Kokkos_HPX.hpp +++ b/lib/kokkos/core/src/Kokkos_HPX.hpp @@ -83,6 +83,7 @@ #include #include #include +#include #include #include @@ -194,6 +195,7 @@ class HPX { const bool /* verbose */ = false) { std::cout << "HPX backend" << std::endl; } + uint32_t impl_instance_id() const noexcept { return 0; } static bool in_parallel(HPX const & = HPX()) noexcept { return false; } static void impl_static_fence(HPX const & = HPX()) @@ -228,8 +230,8 @@ class HPX { } template - static void partition_master(F const &f, int requested_num_partitions = 0, - int requested_partition_size = 0) { + static void partition_master(F const &, int requested_num_partitions = 0, + int = 0) { if (requested_num_partitions > 1) { Kokkos::abort( "Kokkos::Experimental::HPX::partition_master: can't partition an " @@ -297,6 +299,15 @@ class HPX { }; } // namespace Experimental +namespace Profiling { +namespace Experimental { +template <> +struct DeviceTypeTraits { + constexpr static DeviceType id = DeviceType::HPX; +}; +} // namespace Experimental +} // namespace Profiling + namespace Impl { template inline void dispatch_execute_task(Closure *closure) { @@ -462,7 +473,7 @@ struct HPXTeamMember { template KOKKOS_INLINE_FUNCTION typename std::enable_if::value>::type - team_reduce(const ReducerType &reducer) const {} + team_reduce(const ReducerType &) const {} template KOKKOS_INLINE_FUNCTION Type @@ -590,6 +601,11 @@ class TeamPolicyInternal template friend class TeamPolicyInternal; + const typename traits::execution_space &space() const { + static typename traits::execution_space m_space; + return m_space; + } + template TeamPolicyInternal(const TeamPolicyInternal &p) { @@ -612,8 +628,7 @@ class TeamPolicyInternal } TeamPolicyInternal(const typename traits::execution_space &, - int league_size_request, - const Kokkos::AUTO_t &team_size_request, + int league_size_request, const Kokkos::AUTO_t &, int /* vector_length_request */ = 1) : m_team_scratch_size{0, 0}, m_thread_scratch_size{0, 0}, @@ -629,8 +644,7 @@ class TeamPolicyInternal init(league_size_request, team_size_request); } - TeamPolicyInternal(int league_size_request, - const Kokkos::AUTO_t &team_size_request, + TeamPolicyInternal(int league_size_request, const Kokkos::AUTO_t &, int /* vector_length_request */ = 1) : m_team_scratch_size{0, 0}, m_thread_scratch_size{0, 0}, @@ -1169,7 +1183,7 @@ class ParallelReduce, ReducerType, const ViewType &arg_view, typename std::enable_if::value && !Kokkos::is_reducer_type::value, - void *>::type = NULL) + void *>::type = nullptr) : m_functor(arg_functor), m_policy(arg_policy), m_reducer(InvalidType()), @@ -1359,7 +1373,7 @@ class ParallelReduce, ReducerType, const ViewType &arg_view, typename std::enable_if::value && !Kokkos::is_reducer_type::value, - void *>::type = NULL) + void *>::type = nullptr) : m_functor(arg_functor), m_mdr_policy(arg_policy), m_policy(Policy(0, m_mdr_policy.m_num_tiles).set_chunk_size(1)), @@ -1990,7 +2004,7 @@ class ParallelReduce, const ViewType &arg_result, typename std::enable_if::value && !Kokkos::is_reducer_type::value, - void *>::type = NULL) + void *>::type = nullptr) : m_functor(arg_functor), m_league(arg_policy.league_size()), m_policy(arg_policy), @@ -2241,28 +2255,28 @@ KOKKOS_INLINE_FUNCTION void parallel_scan( template KOKKOS_INLINE_FUNCTION void single( - const Impl::VectorSingleStruct &single_struct, + const Impl::VectorSingleStruct &, const FunctorType &lambda) { lambda(); } template KOKKOS_INLINE_FUNCTION void single( - const Impl::ThreadSingleStruct &single_struct, + const Impl::ThreadSingleStruct &, const FunctorType &lambda) { lambda(); } template KOKKOS_INLINE_FUNCTION void single( - const Impl::VectorSingleStruct &single_struct, + const Impl::VectorSingleStruct &, const FunctorType &lambda, ValueType &val) { lambda(val); } template KOKKOS_INLINE_FUNCTION void single( - const Impl::ThreadSingleStruct &single_struct, + const Impl::ThreadSingleStruct &, const FunctorType &lambda, ValueType &val) { lambda(val); } diff --git a/lib/kokkos/core/src/Kokkos_HostSpace.hpp b/lib/kokkos/core/src/Kokkos_HostSpace.hpp index c1b842c1c4..5bc50c7ff0 100644 --- a/lib/kokkos/core/src/Kokkos_HostSpace.hpp +++ b/lib/kokkos/core/src/Kokkos_HostSpace.hpp @@ -118,21 +118,17 @@ class HostSpace { 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) typedef Kokkos::OpenMP execution_space; #elif defined(KOKKOS_ENABLE_THREADS) 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 #error \ - "At least one of the following host execution spaces must be defined: Kokkos::OpenMP, Kokkos::Threads, Kokkos::Qthreads, or Kokkos::Serial. You might be seeing this message if you disabled the Kokkos::Serial device explicitly using the Kokkos_ENABLE_Serial:BOOL=OFF CMake option, but did not enable any of the other host execution space devices." + "At least one of the following host execution spaces must be defined: Kokkos::OpenMP, Kokkos::Threads, or Kokkos::Serial. You might be seeing this message if you disabled the Kokkos::Serial device explicitly using the Kokkos_ENABLE_Serial:BOOL=OFF CMake option, but did not enable any of the other host execution space devices." #endif //! This memory space preferred device_type @@ -248,7 +244,12 @@ class SharedAllocationRecord const Kokkos::HostSpace m_space; protected: - ~SharedAllocationRecord(); + ~SharedAllocationRecord() +#if defined( \ + KOKKOS_IMPL_INTEL_WORKAROUND_NOEXCEPT_SPECIFICATION_VIRTUAL_FUNCTION) + noexcept +#endif + ; SharedAllocationRecord() = default; SharedAllocationRecord( @@ -267,6 +268,9 @@ class SharedAllocationRecord #if defined(KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_HOST) return new SharedAllocationRecord(arg_space, arg_label, arg_alloc_size); #else + (void)arg_space; + (void)arg_label; + (void)arg_alloc_size; return (SharedAllocationRecord*)0; #endif } diff --git a/lib/kokkos/core/src/Kokkos_Macros.hpp b/lib/kokkos/core/src/Kokkos_Macros.hpp index 5649d12e97..00a07bdcf9 100644 --- a/lib/kokkos/core/src/Kokkos_Macros.hpp +++ b/lib/kokkos/core/src/Kokkos_Macros.hpp @@ -50,7 +50,6 @@ * * 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 @@ -80,6 +79,7 @@ * KOKKOS_COMPILER_APPLECC * KOKKOS_COMPILER_CLANG * KOKKOS_COMPILER_PGI + * KOKKOS_COMPILER_MSVC * * Macros for which compiler extension to use for atomics on intrinsice types * @@ -99,17 +99,17 @@ //---------------------------------------------------------------------------- -#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) +#if defined(KOKKOS_ENABLE_SERIAL) || defined(KOKKOS_ENABLE_THREADS) || \ + defined(KOKKOS_ENABLE_OPENMP) || defined(KOKKOS_ENABLE_HPX) || \ + defined(KOKKOS_ENABLE_ROCM) || defined(KOKKOS_ENABLE_OPENMPTARGET) || \ + defined(KOKKOS_ENABLE_HIP) #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) +#if !defined(KOKKOS_ENABLE_THREADS) && !defined(KOKKOS_ENABLE_CUDA) && \ + !defined(KOKKOS_ENABLE_OPENMP) && !defined(KOKKOS_ENABLE_HPX) && \ + !defined(KOKKOS_ENABLE_ROCM) && !defined(KOKKOS_ENABLE_OPENMPTARGET) && \ + !defined(KOKKOS_ENABLE_HIP) #define KOKKOS_INTERNAL_NOT_PARALLEL #endif @@ -131,37 +131,17 @@ #error "#include did not define CUDA_VERSION." #endif -#if (CUDA_VERSION < 7000) -// CUDA supports C++11 in device code starting with version 7.0. -// This includes auto type and device code internal lambdas. -#error "Cuda version 7.0 or greater required." -#endif - #if defined(__CUDA_ARCH__) && (__CUDA_ARCH__ < 300) // Compiling with CUDA compiler for device code. #error "Cuda device capability >= 3.0 is required." #endif #ifdef KOKKOS_ENABLE_CUDA_LAMBDA -#if (CUDA_VERSION < 7050) -// CUDA supports C++11 lambdas generated in host code to be given -// to the device starting with version 7.5. But the release candidate (7.5.6) -// still identifies as 7.0. -#error "Cuda version 7.5 or greater required for host-to-device Lambda support." -#endif - -#if (CUDA_VERSION < 8000) && defined(__NVCC__) -#define KOKKOS_LAMBDA [=] __device__ -#if defined(KOKKOS_INTERNAL_ENABLE_NON_CUDA_BACKEND) -#undef KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA -#endif -#else #define KOKKOS_LAMBDA [=] __host__ __device__ #if defined(KOKKOS_ENABLE_CXX17) || defined(KOKKOS_ENABLE_CXX20) #define KOKKOS_CLASS_LAMBDA [ =, *this ] __host__ __device__ #endif -#endif #if defined(__NVCC__) #define KOKKOS_IMPL_NEED_FUNCTOR_WRAPPER @@ -170,12 +150,6 @@ #undef KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA #endif // !defined(KOKKOS_ENABLE_CUDA_LAMBDA) -#if (9000 <= CUDA_VERSION) && (CUDA_VERSION < 10000) -// CUDA 9 introduced an incorrect warning, -// see https://github.com/kokkos/kokkos/issues/1470 -#define KOKKOS_CUDA_9_DEFAULTED_BUG_WORKAROUND -#endif - #if (10000 > CUDA_VERSION) #define KOKKOS_ENABLE_PRE_CUDA_10_DEPRECATION_API #endif @@ -194,6 +168,17 @@ #endif // #if defined( KOKKOS_ENABLE_CUDA ) && defined( __CUDACC__ ) +#if defined(KOKKOS_ENABLE_HIP) + +#define KOKKOS_IMPL_HIP_CLANG_WORKAROUND + +#define HIP_ENABLE_PRINTF +#include +#include + +#define KOKKOS_LAMBDA [=] __host__ __device__ +#endif // #if defined(KOKKOS_ENABLE_HIP) + //---------------------------------------------------------------------------- // Mapping compiler built-ins to KOKKOS_COMPILER_*** macros @@ -267,6 +252,10 @@ #endif #endif +#if defined(_MSC_VER) && !defined(KOKKOS_COMPILER_INTEL) +#define KOKKOS_COMPILER_MSVC _MSC_VER +#endif + //#endif // #if !defined( __CUDA_ARCH__ ) //---------------------------------------------------------------------------- // Language info: C++, CUDA, OPENMP @@ -283,7 +272,24 @@ #else #define KOKKOS_INLINE_FUNCTION_DELETED __device__ __host__ inline #endif -#endif // #if defined( __CUDA_ARCH__ ) +#if (CUDA_VERSION < 10000) +#define KOKKOS_DEFAULTED_FUNCTION __host__ __device__ inline +#else +#define KOKKOS_DEFAULTED_FUNCTION inline +#endif +#endif + +#if defined(KOKKOS_ENABLE_HIP) + +#define KOKKOS_FORCEINLINE_FUNCTION __device__ __host__ __forceinline__ +#define KOKKOS_INLINE_FUNCTION __device__ __host__ inline +#define KOKKOS_DEFAULTED_FUNCTION __device__ __host__ inline +#define KOKKOS_INLINE_FUNCTION_DELETED __device__ __host__ inline +#define KOKKOS_FUNCTION __device__ __host__ +#if defined(KOKKOS_ENABLE_CXX17) || defined(KOKKOS_ENABLE_CXX20) +#define KOKKOS_CLASS_LAMBDA [ =, *this ] __host__ __device__ +#endif +#endif // #if defined( KOKKOS_ENABLE_HIP ) #if defined(KOKKOS_ENABLE_ROCM) && defined(__HCC__) @@ -291,6 +297,7 @@ #define KOKKOS_INLINE_FUNCTION __attribute__((amp, cpu)) inline #define KOKKOS_FUNCTION __attribute__((amp, cpu)) #define KOKKOS_LAMBDA [=] __attribute__((amp, cpu)) +#define KOKKOS_DEFAULTED_FUNCTION __attribute__((amp, cpu)) inline #endif #if defined(_OPENMP) @@ -355,6 +362,10 @@ #endif #endif +#if (1800 > KOKKOS_COMPILER_INTEL) +#define KOKKOS_IMPL_INTEL_WORKAROUND_NOEXCEPT_SPECIFICATION_VIRTUAL_FUNCTION +#endif + #if defined(__MIC__) // Compiling for Xeon Phi #endif @@ -470,6 +481,10 @@ #if !defined(KOKKOS_INLINE_FUNCTION_DELETED) #define KOKKOS_INLINE_FUNCTION_DELETED inline #endif + +#if !defined(KOKKOS_DEFAULTED_FUNCTION) +#define KOKKOS_DEFAULTED_FUNCTION inline +#endif //---------------------------------------------------------------------------- // Define empty macro for restrict if necessary: @@ -497,28 +512,30 @@ // There is zero or one default execution space specified. #if 1 < ((defined(KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_CUDA) ? 1 : 0) + \ + (defined(KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_HIP) ? 1 : 0) + \ (defined(KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_ROCM) ? 1 : 0) + \ (defined(KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_OPENMPTARGET) ? 1 : 0) + \ (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, HPX, SERIAL +// Priority: CUDA, HIP, ROCM, OPENMPTARGET, OPENMP, THREADS, HPX, SERIAL #if defined(KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_CUDA) +#elif defined(KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_HIP) #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 +#elif defined(KOKKOS_ENABLE_HIP) +#define KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_HIP #elif defined(KOKKOS_ENABLE_ROCM) #define KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_ROCM #elif defined(KOKKOS_ENABLE_OPENMPTARGET) @@ -527,8 +544,6 @@ #define KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_OPENMP #elif defined(KOKKOS_ENABLE_THREADS) #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 @@ -543,6 +558,10 @@ #elif defined(__HCC__) && defined(__HCC_ACCELERATOR__) && \ defined(KOKKOS_ENABLE_ROCM) #define KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_ROCM_GPU +#elif defined(__HIPCC__) && \ + (defined(__HCC_ACCELERATOR__) || defined(__CUDA_ARCH__)) && \ + defined(KOKKOS_ENABLE_HIP) +#define KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_HIP_GPU #else #define KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_HOST #endif @@ -557,27 +576,25 @@ #endif //---------------------------------------------------------------------------- -// If compiling with CUDA then must be using CUDA 8 or better -// and use relocateable device code to enable the task policy. -// nvcc relocatable device code option: --relocatable-device-code=true +// If compiling with CUDA, we must use relocateable device code +// to enable the task policy. -#if (defined(KOKKOS_ENABLE_CUDA)) -#if (8000 <= CUDA_VERSION) && \ - defined(KOKKOS_ENABLE_CUDA_RELOCATABLE_DEVICE_CODE) +#if defined(KOKKOS_ENABLE_CUDA) +#if defined(KOKKOS_ENABLE_CUDA_RELOCATABLE_DEVICE_CODE) #define KOKKOS_ENABLE_TASKDAG #endif #else +#ifndef KOKKOS_ENABLE_HIP #define KOKKOS_ENABLE_TASKDAG #endif +#endif #if defined(KOKKOS_ENABLE_CUDA) -#if (9000 <= CUDA_VERSION) #define KOKKOS_IMPL_CUDA_VERSION_9_WORKAROUND #if (__CUDA_ARCH__) #define KOKKOS_IMPL_CUDA_SYNCWARP_NEEDS_MASK #endif #endif -#endif #define KOKKOS_INVALID_INDEX (~std::size_t(0)) @@ -622,4 +639,17 @@ #define KOKKOS_IMPL_ENABLE_CXXABI #endif +// WORKAROUND for AMD aomp which apparently defines CUDA_ARCH when building for +// AMD GPUs with OpenMP Target ??? +#if defined(__CUDA_ARCH__) && !defined(__CUDACC__) && \ + !defined(KOKKOS_ENABLE_HIP) && !defined(KOKKOS_ENABLE_CUDA) +#undef __CUDA_ARCH__ +#endif + +#if defined(KOKKOS_COMPILER_MSVC) +#define KOKKOS_THREAD_LOCAL __declspec(thread) +#else +#define KOKKOS_THREAD_LOCAL __thread +#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 5228f36612..da07544701 100644 --- a/lib/kokkos/core/src/Kokkos_MemoryPool.hpp +++ b/lib/kokkos/core/src/Kokkos_MemoryPool.hpp @@ -257,61 +257,14 @@ class MemoryPool { //-------------------------------------------------------------------------- -#ifdef KOKKOS_CUDA_9_DEFAULTED_BUG_WORKAROUND - KOKKOS_INLINE_FUNCTION MemoryPool(MemoryPool &&rhs) - : m_tracker(std::move(rhs.m_tracker)), - m_sb_state_array(std::move(rhs.m_sb_state_array)), - m_sb_state_size(std::move(rhs.m_sb_state_size)), - m_sb_size_lg2(std::move(rhs.m_sb_size_lg2)), - m_max_block_size_lg2(std::move(rhs.m_max_block_size_lg2)), - m_min_block_size_lg2(std::move(rhs.m_min_block_size_lg2)), - m_sb_count(std::move(rhs.m_sb_count)), - m_hint_offset(std::move(rhs.m_hint_offset)), - m_data_offset(std::move(rhs.m_data_offset)) {} - KOKKOS_INLINE_FUNCTION MemoryPool(const MemoryPool &rhs) - : m_tracker(rhs.m_tracker), - m_sb_state_array(rhs.m_sb_state_array), - m_sb_state_size(rhs.m_sb_state_size), - m_sb_size_lg2(rhs.m_sb_size_lg2), - m_max_block_size_lg2(rhs.m_max_block_size_lg2), - m_min_block_size_lg2(rhs.m_min_block_size_lg2), - m_sb_count(rhs.m_sb_count), - m_hint_offset(rhs.m_hint_offset), - m_data_offset(rhs.m_data_offset) {} - KOKKOS_INLINE_FUNCTION MemoryPool &operator=(MemoryPool &&rhs) { - m_tracker = std::move(rhs.m_tracker); - m_sb_state_array = std::move(rhs.m_sb_state_array); - m_sb_state_size = std::move(rhs.m_sb_state_size); - m_sb_size_lg2 = std::move(rhs.m_sb_size_lg2); - m_max_block_size_lg2 = std::move(rhs.m_max_block_size_lg2); - m_min_block_size_lg2 = std::move(rhs.m_min_block_size_lg2); - m_sb_count = std::move(rhs.m_sb_count); - m_hint_offset = std::move(rhs.m_hint_offset); - m_data_offset = std::move(rhs.m_data_offset); - return *this; - } - KOKKOS_INLINE_FUNCTION MemoryPool &operator=(const MemoryPool &rhs) { - m_tracker = rhs.m_tracker; - m_sb_state_array = rhs.m_sb_state_array; - m_sb_state_size = rhs.m_sb_state_size; - m_sb_size_lg2 = rhs.m_sb_size_lg2; - m_max_block_size_lg2 = rhs.m_max_block_size_lg2; - m_min_block_size_lg2 = rhs.m_min_block_size_lg2; - m_sb_count = rhs.m_sb_count; - m_hint_offset = rhs.m_hint_offset; - m_data_offset = rhs.m_data_offset; - return *this; - } -#else - KOKKOS_INLINE_FUNCTION MemoryPool(MemoryPool &&) = default; - KOKKOS_INLINE_FUNCTION MemoryPool(const MemoryPool &) = default; - KOKKOS_INLINE_FUNCTION MemoryPool &operator=(MemoryPool &&) = default; - KOKKOS_INLINE_FUNCTION MemoryPool &operator=(const MemoryPool &) = default; -#endif + KOKKOS_DEFAULTED_FUNCTION MemoryPool(MemoryPool &&) = default; + KOKKOS_DEFAULTED_FUNCTION MemoryPool(const MemoryPool &) = default; + KOKKOS_DEFAULTED_FUNCTION MemoryPool &operator=(MemoryPool &&) = default; + KOKKOS_DEFAULTED_FUNCTION MemoryPool &operator=(const MemoryPool &) = default; KOKKOS_INLINE_FUNCTION MemoryPool() : m_tracker(), - m_sb_state_array(0), + m_sb_state_array(nullptr), m_sb_state_size(0), m_sb_size_lg2(0), m_max_block_size_lg2(0), @@ -339,7 +292,7 @@ class MemoryPool { const size_t min_total_alloc_size, size_t min_block_alloc_size = 0, size_t max_block_alloc_size = 0, size_t min_superblock_size = 0) : m_tracker(), - m_sb_state_array(0), + m_sb_state_array(nullptr), m_sb_state_size(0), m_sb_size_lg2(0), m_max_block_size_lg2(0), @@ -547,9 +500,9 @@ class MemoryPool { "allocation size"); } - if (0 == alloc_size) return (void *)0; + if (0 == alloc_size) return nullptr; - void *p = 0; + void *p = nullptr; const uint32_t block_size_lg2 = get_block_size_lg2(alloc_size); @@ -590,7 +543,7 @@ class MemoryPool { int32_t sb_id = -1; - volatile uint32_t *sb_state_array = 0; + volatile uint32_t *sb_state_array = nullptr; while (attempt_limit) { int32_t hint_sb_id = -1; @@ -784,7 +737,7 @@ class MemoryPool { */ KOKKOS_INLINE_FUNCTION void deallocate(void *p, size_t /* alloc_size */) const noexcept { - if (0 == p) return; + if (nullptr == p) return; // Determine which superblock and block const ptrdiff_t d = diff --git a/lib/kokkos/core/src/Kokkos_NumericTraits.hpp b/lib/kokkos/core/src/Kokkos_NumericTraits.hpp index 666bb33266..88040bcbaa 100644 --- a/lib/kokkos/core/src/Kokkos_NumericTraits.hpp +++ b/lib/kokkos/core/src/Kokkos_NumericTraits.hpp @@ -160,8 +160,8 @@ struct reduction_identity { KOKKOS_FORCEINLINE_FUNCTION constexpr static long prod() { return static_cast(1); } - KOKKOS_FORCEINLINE_FUNCTION constexpr static long max() { return LLONG_MIN; } - KOKKOS_FORCEINLINE_FUNCTION constexpr static long min() { return LLONG_MAX; } + KOKKOS_FORCEINLINE_FUNCTION constexpr static long max() { return LONG_MIN; } + KOKKOS_FORCEINLINE_FUNCTION constexpr static long min() { return LONG_MAX; } KOKKOS_FORCEINLINE_FUNCTION constexpr static long bor() { return static_cast(0x0); } @@ -368,7 +368,8 @@ struct reduction_identity { KOKKOS_FORCEINLINE_FUNCTION constexpr static double min() { return DBL_MAX; } }; -#if !defined(KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_CUDA) +#if !defined(KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_CUDA) && \ + !defined(KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_HIP_GPU) template <> struct reduction_identity { KOKKOS_FORCEINLINE_FUNCTION constexpr static long double sum() { diff --git a/lib/kokkos/core/src/Kokkos_OpenMP.hpp b/lib/kokkos/core/src/Kokkos_OpenMP.hpp index 3955c06156..d9b9077c6d 100644 --- a/lib/kokkos/core/src/Kokkos_OpenMP.hpp +++ b/lib/kokkos/core/src/Kokkos_OpenMP.hpp @@ -94,9 +94,6 @@ class OpenMP { using size_type = memory_space::size_type; using scratch_memory_space = ScratchMemorySpace; - /// \brief Get a handle to the default execution space instance - inline OpenMP() noexcept; - /// \brief Print configuration information to the given output stream. static void print_configuration(std::ostream&, const bool verbose = false); @@ -225,8 +222,17 @@ class OpenMP { #endif static constexpr const char* name() noexcept { return "OpenMP"; } + uint32_t impl_instance_id() const noexcept { return 0; } }; +namespace Profiling { +namespace Experimental { +template <> +struct DeviceTypeTraits { + static constexpr DeviceType id = DeviceType::OpenMP; +}; +} // namespace Experimental +} // namespace Profiling } // namespace Kokkos /*--------------------------------------------------------------------------*/ diff --git a/lib/kokkos/core/src/Kokkos_OpenMPTarget.hpp b/lib/kokkos/core/src/Kokkos_OpenMPTarget.hpp index 9706751f9c..d113f24422 100644 --- a/lib/kokkos/core/src/Kokkos_OpenMPTarget.hpp +++ b/lib/kokkos/core/src/Kokkos_OpenMPTarget.hpp @@ -65,6 +65,10 @@ namespace Kokkos { namespace Experimental { +namespace Impl { +class OpenMPTargetInternal; +} + /// \class OpenMPTarget /// \brief Kokkos device for multicore processors in the host memory space. class OpenMPTarget { @@ -84,76 +88,47 @@ class OpenMPTarget { typedef ScratchMemorySpace scratch_memory_space; - //@} - //------------------------------------ - //! \name Functions that all Kokkos execution spaces must implement. - //@{ - inline static bool in_parallel() { return omp_in_parallel(); } - /** \brief Set the device in a "sleep" state. A noop for OpenMPTarget. */ - static bool sleep(); - - /** \brief Wake the device from the 'sleep' state. A noop for OpenMPTarget. */ - static bool wake(); - - /** \brief Wait until all dispatched functors complete. A noop for - * OpenMPTarget. */ - static void fence() {} - - /// \brief Print configuration information to the given output stream. - static void print_configuration(std::ostream&, const bool detail = false); - - /// \brief Free any resources being consumed by the device. - static void finalize(); - - /** \brief Initialize the device. - * - * 1) If the hardware locality library is enabled and OpenMPTarget has not - * already bound threads then bind OpenMPTarget threads to maximize - * core utilization and group for memory hierarchy locality. - * - * 2) Allocate a HostThread for each OpenMPTarget thread to hold its - * topology and fan in/out data. - */ - static void initialize(unsigned thread_count = 0, unsigned use_numa_count = 0, - unsigned use_cores_per_numa = 0); - - static int is_initialized(); + static void fence(); /** \brief Return the maximum amount of concurrency. */ static int concurrency(); - //@} - //------------------------------------ - /** \brief This execution space has a topological thread pool which can be - * queried. - * - * All threads within a pool have a common memory space for which they are - * cache coherent. depth = 0 gives the number of threads in the whole pool. - * depth = 1 gives the number of threads in a NUMA region, typically - * sharing L3 cache. depth = 2 gives the number of threads at the finest - * granularity, typically sharing L1 cache. - */ - inline static int thread_pool_size(int depth = 0); - - /** \brief The rank of the executing thread in this thread pool */ - KOKKOS_INLINE_FUNCTION static int thread_pool_rank(); + //! Print configuration information to the given output stream. + void print_configuration(std::ostream&, const bool detail = false); - //------------------------------------ + static const char* name(); - inline static unsigned max_hardware_threads() { return thread_pool_size(0); } + //! Free any resources being consumed by the device. + void impl_finalize(); - KOKKOS_INLINE_FUNCTION static unsigned hardware_thread_id() { - return thread_pool_rank(); + //! Has been initialized + static int impl_is_initialized(); + + //! Initialize, telling the CUDA run-time library which device to use. + void impl_initialize(); + + inline Impl::OpenMPTargetInternal* impl_internal_space_instance() const { + return m_space_instance; } - static const char* name(); + OpenMPTarget(); + uint32_t impl_instance_id() const noexcept { return 0; } private: - static bool m_is_initialized; + Impl::OpenMPTargetInternal* m_space_instance; +}; +} // namespace Experimental + +namespace Profiling { +namespace Experimental { +template <> +struct DeviceTypeTraits { + static constexpr DeviceType id = DeviceType::OpenMPTarget; }; } // namespace Experimental +} // namespace Profiling } // namespace Kokkos /*--------------------------------------------------------------------------*/ @@ -179,6 +154,7 @@ struct VerifyExecutionCanAccessMemorySpace< #include #include +#include #include /*--------------------------------------------------------------------------*/ diff --git a/lib/kokkos/core/src/Kokkos_OpenMPTargetSpace.hpp b/lib/kokkos/core/src/Kokkos_OpenMPTargetSpace.hpp index eef5893be5..9d24a342e7 100644 --- a/lib/kokkos/core/src/Kokkos_OpenMPTargetSpace.hpp +++ b/lib/kokkos/core/src/Kokkos_OpenMPTargetSpace.hpp @@ -128,6 +128,8 @@ class OpenMPTargetSpace { /**\brief Deallocate untracked memory in the space */ void deallocate(void* const arg_alloc_ptr, const size_t arg_alloc_size) const; + static constexpr const char* name() { return "OpenMPTargetSpace"; } + private: friend class Kokkos::Impl::SharedAllocationRecord< Kokkos::Experimental::OpenMPTargetSpace, void>; @@ -174,7 +176,13 @@ class SharedAllocationRecord KOKKOS_INLINE_FUNCTION static SharedAllocationRecord* allocate( const Kokkos::Experimental::OpenMPTargetSpace& arg_space, - const std::string& arg_label, const size_t arg_alloc_size); + const std::string& arg_label, const size_t arg_alloc_size) { +#if defined(KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_HOST) + return new SharedAllocationRecord(arg_space, arg_label, arg_alloc_size); +#else + return nullptr; +#endif + } /**\brief Allocate tracked memory in the space */ static void* allocate_tracked( diff --git a/lib/kokkos/core/src/Kokkos_Pair.hpp b/lib/kokkos/core/src/Kokkos_Pair.hpp index ee9797b4b3..23bb755e33 100644 --- a/lib/kokkos/core/src/Kokkos_Pair.hpp +++ b/lib/kokkos/core/src/Kokkos_Pair.hpp @@ -78,14 +78,7 @@ struct pair { /// This calls the default constructors of T1 and T2. It won't /// compile if those default constructors are not defined and /// public. - KOKKOS_FORCEINLINE_FUNCTION constexpr -#ifdef KOKKOS_CUDA_9_DEFAULTED_BUG_WORKAROUND - pair() - : first(), second() { - } -#else - pair() = default; -#endif + KOKKOS_DEFAULTED_FUNCTION constexpr pair() = default; /// \brief Constructor that takes both elements of the pair. /// @@ -439,14 +432,7 @@ struct pair { first_type first; enum { second = 0 }; - KOKKOS_FORCEINLINE_FUNCTION constexpr -#ifdef KOKKOS_CUDA_9_DEFAULTED_BUG_WORKAROUND - pair() - : first() { - } -#else - pair() = default; -#endif + KOKKOS_DEFAULTED_FUNCTION constexpr pair() = default; KOKKOS_FORCEINLINE_FUNCTION constexpr pair(const first_type& f) : first(f) {} diff --git a/lib/kokkos/core/src/Kokkos_Parallel.hpp b/lib/kokkos/core/src/Kokkos_Parallel.hpp index 7277ce287a..775ab9203c 100644 --- a/lib/kokkos/core/src/Kokkos_Parallel.hpp +++ b/lib/kokkos/core/src/Kokkos_Parallel.hpp @@ -114,7 +114,7 @@ struct FunctorPolicyExecutionSpace< Functor, Policy, typename enable_if_type::type, EnablePolicy> { - typedef typename Functor::device_type execution_space; + typedef typename Functor::device_type::execution_space execution_space; }; template @@ -158,16 +158,21 @@ template inline void parallel_for( const ExecPolicy& policy, const FunctorType& functor, const std::string& str = "", - typename Impl::enable_if< - Kokkos::Impl::is_execution_policy::value>::type* = 0) { + typename std::enable_if< + Kokkos::Impl::is_execution_policy::value>::type* = + nullptr) { #if defined(KOKKOS_ENABLE_PROFILING) uint64_t kpID = 0; if (Kokkos::Profiling::profileLibraryLoaded()) { Kokkos::Impl::ParallelConstructName name(str); - Kokkos::Profiling::beginParallelFor(name.get(), 0, &kpID); + Kokkos::Profiling::beginParallelFor( + name.get(), Kokkos::Profiling::Experimental::device_id(policy.space()), + &kpID); } +#else + (void)str; #endif Kokkos::Impl::shared_allocation_tracking_disable(); @@ -194,8 +199,12 @@ inline void parallel_for(const size_t work_count, const FunctorType& functor, uint64_t kpID = 0; if (Kokkos::Profiling::profileLibraryLoaded()) { Kokkos::Impl::ParallelConstructName name(str); - Kokkos::Profiling::beginParallelFor(name.get(), 0, &kpID); + Kokkos::Profiling::beginParallelFor( + name.get(), + Kokkos::Profiling::Experimental::device_id(policy().space()), &kpID); } +#else + (void)str; #endif Kokkos::Impl::shared_allocation_tracking_disable(); @@ -403,16 +412,21 @@ template inline void parallel_scan( const ExecutionPolicy& policy, const FunctorType& functor, const std::string& str = "", - typename Impl::enable_if< - Kokkos::Impl::is_execution_policy::value>::type* = 0) { + typename std::enable_if< + Kokkos::Impl::is_execution_policy::value>::type* = + nullptr) { #if defined(KOKKOS_ENABLE_PROFILING) uint64_t kpID = 0; if (Kokkos::Profiling::profileLibraryLoaded()) { Kokkos::Impl::ParallelConstructName name(str); - Kokkos::Profiling::beginParallelScan(name.get(), 0, &kpID); + Kokkos::Profiling::beginParallelScan( + name.get(), Kokkos::Profiling::Experimental::device_id(policy.space()), + &kpID); } +#else + (void)str; #endif Kokkos::Impl::shared_allocation_tracking_disable(); @@ -440,8 +454,12 @@ inline void parallel_scan(const size_t work_count, const FunctorType& functor, uint64_t kpID = 0; if (Kokkos::Profiling::profileLibraryLoaded()) { Kokkos::Impl::ParallelConstructName name(str); - Kokkos::Profiling::beginParallelScan(name.get(), 0, &kpID); + Kokkos::Profiling::beginParallelScan( + name.get(), + Kokkos::Profiling::Experimental::device_id(policy().space()), &kpID); } +#else + (void)str; #endif Kokkos::Impl::shared_allocation_tracking_disable(); @@ -479,16 +497,21 @@ template inline void parallel_scan( const ExecutionPolicy& policy, const FunctorType& functor, ReturnType& return_value, const std::string& str = "", - typename Impl::enable_if< - Kokkos::Impl::is_execution_policy::value>::type* = 0) { + typename std::enable_if< + Kokkos::Impl::is_execution_policy::value>::type* = + nullptr) { #if defined(KOKKOS_ENABLE_PROFILING) uint64_t kpID = 0; if (Kokkos::Profiling::profileLibraryLoaded()) { Kokkos::Impl::ParallelConstructName name(str); - Kokkos::Profiling::beginParallelScan(name.get(), 0, &kpID); + Kokkos::Profiling::beginParallelScan( + name.get(), Kokkos::Profiling::Experimental::device_id(policy.space()), + &kpID); } +#else + (void)str; #endif Kokkos::Impl::shared_allocation_tracking_disable(); @@ -503,7 +526,7 @@ inline void parallel_scan( Kokkos::Profiling::endParallelScan(kpID); } #endif - Kokkos::fence(); + policy.space().fence(); } template @@ -519,8 +542,12 @@ inline void parallel_scan(const size_t work_count, const FunctorType& functor, uint64_t kpID = 0; if (Kokkos::Profiling::profileLibraryLoaded()) { Kokkos::Impl::ParallelConstructName name(str); - Kokkos::Profiling::beginParallelScan(name.get(), 0, &kpID); + Kokkos::Profiling::beginParallelScan( + name.get(), + Kokkos::Profiling::Experimental::device_id(policy().space()), &kpID); } +#else + (void)str; #endif Kokkos::Impl::shared_allocation_tracking_disable(); @@ -535,7 +562,7 @@ inline void parallel_scan(const size_t work_count, const FunctorType& functor, Kokkos::Profiling::endParallelScan(kpID); } #endif - Kokkos::fence(); + execution_space().fence(); } template @@ -564,7 +591,10 @@ inline void parallel_scan(const std::string& str, const ExecutionPolicy& policy, namespace Kokkos { namespace Impl { -template +template ::value, + bool HasShmemSize = has_member_shmem_size::value> struct FunctorTeamShmemSize { KOKKOS_INLINE_FUNCTION static size_t value(const FunctorType&, int) { return 0; @@ -572,22 +602,27 @@ struct FunctorTeamShmemSize { }; template -struct FunctorTeamShmemSize< - FunctorType, - typename Impl::enable_if<0 < sizeof(&FunctorType::team_shmem_size)>::type> { +struct FunctorTeamShmemSize { static inline size_t value(const FunctorType& f, int team_size) { return f.team_shmem_size(team_size); } }; template -struct FunctorTeamShmemSize< - FunctorType, - typename Impl::enable_if<0 < sizeof(&FunctorType::shmem_size)>::type> { +struct FunctorTeamShmemSize { static inline size_t value(const FunctorType& f, int team_size) { return f.shmem_size(team_size); } }; +template +struct FunctorTeamShmemSize { + static inline size_t value(const FunctorType& /*f*/, int /*team_size*/) { + Kokkos::abort( + "Functor with both team_shmem_size and shmem_size defined is " + "not allowed"); + return 0; + } +}; } // namespace Impl } // namespace Kokkos diff --git a/lib/kokkos/core/src/Kokkos_Parallel_Reduce.hpp b/lib/kokkos/core/src/Kokkos_Parallel_Reduce.hpp index dbd33860fb..4ef2dbdf0d 100644 --- a/lib/kokkos/core/src/Kokkos_Parallel_Reduce.hpp +++ b/lib/kokkos/core/src/Kokkos_Parallel_Reduce.hpp @@ -543,7 +543,6 @@ struct MaxLoc { KOKKOS_INLINE_FUNCTION void init(value_type& val) const { val.val = reduction_identity::max(); - ; val.loc = reduction_identity::min(); } @@ -622,7 +621,6 @@ struct MinMax { KOKKOS_INLINE_FUNCTION void init(value_type& val) const { val.max_val = reduction_identity::max(); - ; val.min_val = reduction_identity::min(); } @@ -711,7 +709,6 @@ struct MinMaxLoc { KOKKOS_INLINE_FUNCTION void init(value_type& val) const { val.max_val = reduction_identity::max(); - ; val.min_val = reduction_identity::min(); val.max_loc = reduction_identity::min(); val.min_loc = reduction_identity::min(); @@ -772,7 +769,7 @@ struct ParallelReduceReturnValue< template struct ParallelReduceReturnValue< - typename std::enable_if<(is_array::value || + typename std::enable_if<(std::is_array::value || std::is_pointer::value)>::type, ReturnType, FunctorType> { typedef Kokkos::View::type, @@ -788,7 +785,7 @@ struct ParallelReduceReturnValue< #ifdef KOKKOS_ENABLE_DEPRECATED_CODE return return_type(return_val, functor.value_count); #else - if (is_array::value) + if (std::is_array::value) return return_type(return_val); else return return_type(return_val, functor.value_count); @@ -865,6 +862,8 @@ struct ParallelReduceAdaptor { name(label); Kokkos::Profiling::beginParallelReduce(name.get(), 0, &kpID); } +#else + (void)label; #endif Kokkos::Impl::shared_allocation_tracking_disable(); @@ -915,22 +914,25 @@ struct ReducerHasTestReferenceFunction { static std::false_type test_func(...); enum { - value = std::is_same(0))>::value + value = std::is_same(nullptr))>::value }; }; -template ::value> +template ::value> struct ParallelReduceFence { - static void fence(const T&) { Kokkos::fence(); } + static void fence(const ExecutionSpace& execution_space, const T&) { + execution_space.fence(); + } }; -template -struct ParallelReduceFence, false> { - static void fence(const View){}; +template +struct ParallelReduceFence, false> { + static void fence(const ExecutionSpace&, const View){}; }; -template -struct ParallelReduceFence { - static void fence(const T& reducer) { - if (reducer.references_scalar()) Kokkos::fence(); +template +struct ParallelReduceFence { + static void fence(const ExecutionSpace& execution_space, const T& reducer) { + if (reducer.references_scalar()) execution_space.fence(); } }; } // namespace Impl @@ -976,22 +978,26 @@ template inline void parallel_reduce( const std::string& label, const PolicyType& policy, const FunctorType& functor, ReturnType& return_value, - typename Impl::enable_if< - Kokkos::Impl::is_execution_policy::value>::type* = 0) { + typename std::enable_if< + Kokkos::Impl::is_execution_policy::value>::type* = + nullptr) { Impl::ParallelReduceAdaptor::execute( label, policy, functor, return_value); - Impl::ParallelReduceFence::fence(return_value); + Impl::ParallelReduceFence::fence(policy.space(), return_value); } template inline void parallel_reduce( const PolicyType& policy, const FunctorType& functor, ReturnType& return_value, - typename Impl::enable_if< - Kokkos::Impl::is_execution_policy::value>::type* = 0) { + typename std::enable_if< + Kokkos::Impl::is_execution_policy::value>::type* = + nullptr) { Impl::ParallelReduceAdaptor::execute( "", policy, functor, return_value); - Impl::ParallelReduceFence::fence(return_value); + Impl::ParallelReduceFence::fence(policy.space(), return_value); } template @@ -1001,7 +1007,8 @@ inline void parallel_reduce(const size_t& policy, const FunctorType& functor, void, size_t, FunctorType>::policy_type policy_type; Impl::ParallelReduceAdaptor::execute( "", policy_type(0, policy), functor, return_value); - Impl::ParallelReduceFence::fence(return_value); + Impl::ParallelReduceFence:: + fence(typename policy_type::execution_space(), return_value); } template @@ -1012,7 +1019,8 @@ inline void parallel_reduce(const std::string& label, const size_t& policy, void, size_t, FunctorType>::policy_type policy_type; Impl::ParallelReduceAdaptor::execute( label, policy_type(0, policy), functor, return_value); - Impl::ParallelReduceFence::fence(return_value); + Impl::ParallelReduceFence:: + fence(typename policy_type::execution_space(), return_value); } // ReturnValue as View or Reducer: take by copy to allow for inline construction @@ -1021,24 +1029,28 @@ template inline void parallel_reduce( const std::string& label, const PolicyType& policy, const FunctorType& functor, const ReturnType& return_value, - typename Impl::enable_if< - Kokkos::Impl::is_execution_policy::value>::type* = 0) { + typename std::enable_if< + Kokkos::Impl::is_execution_policy::value>::type* = + nullptr) { ReturnType return_value_impl = return_value; Impl::ParallelReduceAdaptor::execute( label, policy, functor, return_value_impl); - Impl::ParallelReduceFence::fence(return_value); + Impl::ParallelReduceFence::fence(policy.space(), return_value); } template inline void parallel_reduce( const PolicyType& policy, const FunctorType& functor, const ReturnType& return_value, - typename Impl::enable_if< - Kokkos::Impl::is_execution_policy::value>::type* = 0) { + typename std::enable_if< + Kokkos::Impl::is_execution_policy::value>::type* = + nullptr) { ReturnType return_value_impl = return_value; Impl::ParallelReduceAdaptor::execute( "", policy, functor, return_value_impl); - Impl::ParallelReduceFence::fence(return_value); + Impl::ParallelReduceFence::fence(policy.space(), return_value); } template @@ -1049,7 +1061,8 @@ inline void parallel_reduce(const size_t& policy, const FunctorType& functor, ReturnType return_value_impl = return_value; Impl::ParallelReduceAdaptor::execute( "", policy_type(0, policy), functor, return_value_impl); - Impl::ParallelReduceFence::fence(return_value); + Impl::ParallelReduceFence:: + fence(typename policy_type::execution_space(), return_value); } template @@ -1061,7 +1074,8 @@ inline void parallel_reduce(const std::string& label, const size_t& policy, ReturnType return_value_impl = return_value; Impl::ParallelReduceAdaptor::execute( label, policy_type(0, policy), functor, return_value_impl); - Impl::ParallelReduceFence::fence(return_value); + Impl::ParallelReduceFence:: + fence(typename policy_type::execution_space(), return_value); } // No Return Argument @@ -1070,8 +1084,9 @@ template inline void parallel_reduce( const std::string& label, const PolicyType& policy, const FunctorType& functor, - typename Impl::enable_if< - Kokkos::Impl::is_execution_policy::value>::type* = 0) { + typename std::enable_if< + Kokkos::Impl::is_execution_policy::value>::type* = + nullptr) { typedef Kokkos::Impl::FunctorValueTraits ValueTraits; typedef typename Kokkos::Impl::if_c< (ValueTraits::StaticValueSize != 0), typename ValueTraits::value_type, @@ -1094,8 +1109,9 @@ inline void parallel_reduce( template inline void parallel_reduce( const PolicyType& policy, const FunctorType& functor, - typename Impl::enable_if< - Kokkos::Impl::is_execution_policy::value>::type* = 0) { + typename std::enable_if< + Kokkos::Impl::is_execution_policy::value>::type* = + nullptr) { typedef Kokkos::Impl::FunctorValueTraits ValueTraits; typedef typename Kokkos::Impl::if_c< (ValueTraits::StaticValueSize != 0), typename ValueTraits::value_type, diff --git a/lib/kokkos/core/src/Kokkos_Profiling_ProfileSection.hpp b/lib/kokkos/core/src/Kokkos_Profiling_ProfileSection.hpp index 3c667f4432..3999ccb966 100644 --- a/lib/kokkos/core/src/Kokkos_Profiling_ProfileSection.hpp +++ b/lib/kokkos/core/src/Kokkos_Profiling_ProfileSection.hpp @@ -1,46 +1,46 @@ /* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 + //@HEADER + // ************************************************************************ + // + // Kokkos v. 3.0 // Copyright (2020) National Technology & Engineering // Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// 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 NTESS "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 NTESS 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 -*/ + // + // Under the terms of Contract DE-NA0003525 with NTESS, + // 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 NTESS "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 NTESS 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 KOKKOSP_PROFILE_SECTION_HPP #define KOKKOSP_PROFILE_SECTION_HPP diff --git a/lib/kokkos/core/src/Kokkos_Qthreads.hpp b/lib/kokkos/core/src/Kokkos_Qthreads.hpp deleted file mode 100644 index e10bd48593..0000000000 --- a/lib/kokkos/core/src/Kokkos_Qthreads.hpp +++ /dev/null @@ -1,196 +0,0 @@ -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// 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 NTESS "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 NTESS 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_QTHREADS_HPP -#define KOKKOS_QTHREADS_HPP - -#include -#if defined(KOKKOS_ENABLE_QTHREADS) - -#include - -// Defines to enable experimental Qthreads functionality. -#define QTHREAD_LOCAL_PRIORITY -#define CLONED_TASKS - -#include - -#include -#include - -#include -#include -#include -//#include -//#include -//#include // Uncomment when Tasking working. -#include -#include -#include - -/*--------------------------------------------------------------------------*/ - -namespace Kokkos { - -namespace Impl { - -class QthreadsExec; - -} // namespace Impl - -} // namespace Kokkos - -/*--------------------------------------------------------------------------*/ - -namespace Kokkos { - -/** \brief Execution space supported by Qthreads */ -class Qthreads { - public: - //! \name Type declarations that all Kokkos devices must provide. - //@{ - - //! Tag this class as an execution space - typedef Qthreads execution_space; - typedef Kokkos::HostSpace memory_space; - //! This execution space preferred device_type - typedef Kokkos::Device device_type; - - typedef Kokkos::LayoutRight array_layout; - typedef memory_space::size_type size_type; - - typedef ScratchMemorySpace scratch_memory_space; - - //@} - /*------------------------------------------------------------------------*/ - - /** \brief Initialization will construct one or more instances */ - static Qthreads& instance(int = 0); - - /** \brief Set the execution space to a "sleep" state. - * - * This function sets the "sleep" state in which it is not ready for work. - * This may consume less resources than in an "ready" state, - * but it may also take time to transition to the "ready" state. - * - * \return True if enters or is in the "sleep" state. - * False if functions are currently executing. - */ - bool sleep(); - - /** \brief Wake from the sleep state. - * - * \return True if enters or is in the "ready" state. - * False if functions are currently executing. - */ - static bool wake(); - - /** \brief Wait until all dispatched functions to complete. - * - * The parallel_for or parallel_reduce dispatch of a functor may - * return asynchronously, before the functor completes. This - * method does not return until all dispatched functors on this - * device have completed. - */ - static void fence(); - - /*------------------------------------------------------------------------*/ - - static int in_parallel(); - - static int is_initialized(); - - /** \brief Return maximum amount of concurrency */ - static int concurrency(); - - static void initialize(int thread_count); - static void finalize(); - - /** \brief Print configuration information to the given output stream. */ - static void print_configuration(std::ostream&, const bool detail = false); - - int shepherd_size() const; - int shepherd_worker_size() const; - - static const char* name(); -}; - -} // namespace Kokkos - -/*--------------------------------------------------------------------------*/ - -namespace Kokkos { - -namespace Impl { - -template <> -struct MemorySpaceAccess { - enum { assignable = false }; - enum { accessible = true }; - enum { deepcopy = false }; -}; - -template <> -struct VerifyExecutionCanAccessMemorySpace< - Kokkos::Qthreads::memory_space, Kokkos::Qthreads::scratch_memory_space> { - enum { value = true }; - inline static void verify(void) {} - inline static void verify(const void*) {} -}; - -} // namespace Impl - -} // namespace Kokkos - -/*--------------------------------------------------------------------------*/ - -#include -#include -//#include // Uncomment when Tasking -// working. #include // Uncomment when -// Tasking working. - -#endif // #define KOKKOS_ENABLE_QTHREADS -#endif // #define KOKKOS_QTHREADS_HPP diff --git a/lib/kokkos/core/src/Kokkos_ROCmSpace.hpp b/lib/kokkos/core/src/Kokkos_ROCmSpace.hpp index df13a7c2aa..56a1a93b9d 100644 --- a/lib/kokkos/core/src/Kokkos_ROCmSpace.hpp +++ b/lib/kokkos/core/src/Kokkos_ROCmSpace.hpp @@ -481,7 +481,7 @@ struct VerifyExecutionCanAccessMemorySpace< /** Running in ROCmSpace attempting to access an unknown space: error */ template struct VerifyExecutionCanAccessMemorySpace< - typename enable_if< + typename std::enable_if< !is_same::value, Kokkos::Experimental::ROCmSpace>::type, OtherSpace> { diff --git a/lib/kokkos/core/src/Kokkos_ScratchSpace.hpp b/lib/kokkos/core/src/Kokkos_ScratchSpace.hpp index c2337f08a1..708e0218b7 100644 --- a/lib/kokkos/core/src/Kokkos_ScratchSpace.hpp +++ b/lib/kokkos/core/src/Kokkos_ScratchSpace.hpp @@ -92,6 +92,8 @@ class ScratchMemorySpace { typedef typename ExecSpace::array_layout array_layout; typedef typename ExecSpace::size_type size_type; + static constexpr const char* name() { return "ScratchMemorySpace"; } + template KOKKOS_INLINE_FUNCTION static IntType align(const IntType& size) { return (size + MASK) & ~MASK; @@ -108,13 +110,13 @@ class ScratchMemorySpace { #ifdef KOKKOS_DEBUG // mfh 23 Jun 2015: printf call consumes 25 registers // in a CUDA build, so only print in debug mode. The - // function still returns NULL if not enough memory. + // function still returns nullptr if not enough memory. printf( "ScratchMemorySpace<...>::get_shmem: Failed to allocate " "%ld byte(s); remaining capacity is %ld byte(s)\n", long(size), long(m_end_L0 - m_iter_L0)); #endif // KOKKOS_DEBUG - tmp = 0; + tmp = nullptr; } return tmp; } else { @@ -124,13 +126,13 @@ class ScratchMemorySpace { #ifdef KOKKOS_DEBUG // mfh 23 Jun 2015: printf call consumes 25 registers // in a CUDA build, so only print in debug mode. The - // function still returns NULL if not enough memory. + // function still returns nullptr if not enough memory. printf( "ScratchMemorySpace<...>::get_shmem: Failed to allocate " "%ld byte(s); remaining capacity is %ld byte(s)\n", long(size), long(m_end_L1 - m_iter_L1)); #endif // KOKKOS_DEBUG - tmp = 0; + tmp = nullptr; } return tmp; } @@ -151,13 +153,13 @@ class ScratchMemorySpace { #ifdef KOKKOS_DEBUG // mfh 23 Jun 2015: printf call consumes 25 registers // in a CUDA build, so only print in debug mode. The - // function still returns NULL if not enough memory. + // function still returns nullptr if not enough memory. printf( "ScratchMemorySpace<...>::get_shmem: Failed to allocate " "%ld byte(s); remaining capacity is %ld byte(s)\n", long(size), long(m_end_L0 - m_iter_L0)); #endif // KOKKOS_DEBUG - tmp = 0; + tmp = nullptr; } return tmp; } else { @@ -171,13 +173,13 @@ class ScratchMemorySpace { #ifdef KOKKOS_DEBUG // mfh 23 Jun 2015: printf call consumes 25 registers // in a CUDA build, so only print in debug mode. The - // function still returns NULL if not enough memory. + // function still returns nullptr if not enough memory. printf( "ScratchMemorySpace<...>::get_shmem: Failed to allocate " "%ld byte(s); remaining capacity is %ld byte(s)\n", long(size), long(m_end_L1 - m_iter_L1)); #endif // KOKKOS_DEBUG - tmp = 0; + tmp = nullptr; } return tmp; } @@ -186,7 +188,7 @@ class ScratchMemorySpace { template KOKKOS_INLINE_FUNCTION ScratchMemorySpace(void* ptr_L0, const IntType& size_L0, - void* ptr_L1 = NULL, + void* ptr_L1 = nullptr, const IntType& size_L1 = 0) : m_iter_L0((char*)ptr_L0), m_end_L0(m_iter_L0 + size_L0), diff --git a/lib/kokkos/core/src/Kokkos_Serial.hpp b/lib/kokkos/core/src/Kokkos_Serial.hpp index e30598be21..1f97998ea5 100644 --- a/lib/kokkos/core/src/Kokkos_Serial.hpp +++ b/lib/kokkos/core/src/Kokkos_Serial.hpp @@ -181,11 +181,20 @@ class Serial { return impl_thread_pool_size(0); } #endif + uint32_t impl_instance_id() const noexcept { return 0; } static const char* name(); //-------------------------------------------------------------------------- }; +namespace Profiling { +namespace Experimental { +template <> +struct DeviceTypeTraits { + static constexpr DeviceType id = DeviceType::Serial; +}; +} // namespace Experimental +} // namespace Profiling } // namespace Kokkos /*--------------------------------------------------------------------------*/ @@ -257,6 +266,11 @@ class TeamPolicyInternal //! Execution space of this execution policy: typedef Kokkos::Serial execution_space; + const typename traits::execution_space& space() const { + static typename traits::execution_space m_space; + return m_space; + } + TeamPolicyInternal& operator=(const TeamPolicyInternal& p) { m_league_size = p.m_league_size; m_team_scratch_size[0] = p.m_team_scratch_size[0]; @@ -641,7 +655,7 @@ class ParallelReduce, ReducerType, const HostViewType& arg_result_view, typename std::enable_if::value && !Kokkos::is_reducer_type::value, - void*>::type = NULL) + void*>::type = nullptr) : m_functor(arg_functor), m_policy(arg_policy), m_reducer(InvalidType()), @@ -912,7 +926,7 @@ class ParallelReduce, ReducerType, const HostViewType& arg_result_view, typename std::enable_if::value && !Kokkos::is_reducer_type::value, - void*>::type = NULL) + void*>::type = nullptr) : m_functor(arg_functor), m_mdr_policy(arg_policy), m_policy(Policy(0, m_mdr_policy.m_num_tiles).set_chunk_size(1)), @@ -1087,7 +1101,7 @@ class ParallelReduce, const ViewType& arg_result, typename std::enable_if::value && !Kokkos::is_reducer_type::value, - void*>::type = NULL) + void*>::type = nullptr) : m_functor(arg_functor), m_league(arg_policy.league_size()), m_reducer(InvalidType()), diff --git a/lib/kokkos/core/src/Kokkos_TaskScheduler.hpp b/lib/kokkos/core/src/Kokkos_TaskScheduler.hpp index 4a78d6aca1..6b9608d629 100644 --- a/lib/kokkos/core/src/Kokkos_TaskScheduler.hpp +++ b/lib/kokkos/core/src/Kokkos_TaskScheduler.hpp @@ -143,7 +143,7 @@ class BasicTaskScheduler : public Impl::TaskSchedulerBase { 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, + typename task_base::destroy_type /*arg_destroy*/, FunctorType&& arg_functor) { using functor_future_type = future_type_for_functor::type>; @@ -203,7 +203,7 @@ class BasicTaskScheduler : public Impl::TaskSchedulerBase { public: KOKKOS_INLINE_FUNCTION - BasicTaskScheduler() : m_track(), m_queue(0) {} + BasicTaskScheduler() : m_track(), m_queue(nullptr) {} KOKKOS_INLINE_FUNCTION BasicTaskScheduler(BasicTaskScheduler&& rhs) noexcept @@ -231,7 +231,7 @@ class BasicTaskScheduler : public Impl::TaskSchedulerBase { } explicit BasicTaskScheduler(memory_pool const& arg_memory_pool) noexcept - : m_track(), m_queue(0) { + : m_track(), m_queue(nullptr) { typedef Kokkos::Impl::SharedAllocationRecord record_type; @@ -349,7 +349,7 @@ class BasicTaskScheduler : public Impl::TaskSchedulerBase { task->m_priority = static_cast(arg_priority); - task->add_dependence((task_base*)0); + task->add_dependence(nullptr); // Postcondition: task is in Executing-Respawn state } @@ -380,8 +380,8 @@ class BasicTaskScheduler : public Impl::TaskSchedulerBase { } } - if (q != 0) { // this should probably handle the queue == 0 case, but - // this is deprecated code anyway + if (q != nullptr) { // this should probably handle the queue == 0 case, + // but this is deprecated code anyway size_t const alloc_size = q->when_all_allocation_size(narg); @@ -459,7 +459,7 @@ class BasicTaskScheduler : public Impl::TaskSchedulerBase { for (int i = 0; i < narg; ++i) { const input_type arg_f = func(i); - if (0 != arg_f.m_task) { + if (nullptr != arg_f.m_task) { // Not scheduled, so task scheduler is not yet set // if ( m_queue != static_cast< BasicTaskScheduler const * >( // arg_f.m_task->m_scheduler )->m_queue ) { diff --git a/lib/kokkos/core/src/Kokkos_Threads.hpp b/lib/kokkos/core/src/Kokkos_Threads.hpp index d44042b062..9dd644df2e 100644 --- a/lib/kokkos/core/src/Kokkos_Threads.hpp +++ b/lib/kokkos/core/src/Kokkos_Threads.hpp @@ -56,6 +56,7 @@ #include #include #include +#include #include /*--------------------------------------------------------------------------*/ @@ -200,11 +201,21 @@ class Threads { } #endif + uint32_t impl_instance_id() const noexcept { return 0; } + static const char* name(); //@} //---------------------------------------- }; +namespace Profiling { +namespace Experimental { +template <> +struct DeviceTypeTraits { + static constexpr DeviceType id = DeviceType::Threads; +}; +} // namespace Experimental +} // namespace Profiling } // namespace Kokkos /*--------------------------------------------------------------------------*/ diff --git a/lib/kokkos/core/src/Kokkos_Timer.hpp b/lib/kokkos/core/src/Kokkos_Timer.hpp index 117f097f66..1dab73b44c 100644 --- a/lib/kokkos/core/src/Kokkos_Timer.hpp +++ b/lib/kokkos/core/src/Kokkos_Timer.hpp @@ -60,7 +60,7 @@ class Timer { public: inline void reset() { m_old = std::chrono::high_resolution_clock::now(); } - inline ~Timer() {} + inline ~Timer() = default; inline Timer() { reset(); } diff --git a/lib/kokkos/core/src/Kokkos_Vectorization.hpp b/lib/kokkos/core/src/Kokkos_Vectorization.hpp index 2604538b1c..cd24734100 100644 --- a/lib/kokkos/core/src/Kokkos_Vectorization.hpp +++ b/lib/kokkos/core/src/Kokkos_Vectorization.hpp @@ -49,6 +49,8 @@ #if defined(KOKKOS_ENABLE_CUDA) #include +#elif defined(KOKKOS_ENABLE_HIP) +#include #endif #endif diff --git a/lib/kokkos/core/src/Kokkos_View.hpp b/lib/kokkos/core/src/Kokkos_View.hpp index 6610bb842b..3d68d780a2 100644 --- a/lib/kokkos/core/src/Kokkos_View.hpp +++ b/lib/kokkos/core/src/Kokkos_View.hpp @@ -450,6 +450,70 @@ struct ViewTraits { template class View; +template +struct is_always_assignable_impl; + +template +struct is_always_assignable_impl, + Kokkos::View> { + using mapping_type = Kokkos::Impl::ViewMapping< + typename Kokkos::View::traits, + typename Kokkos::View::traits, + typename Kokkos::View::traits::specialize>; + + constexpr static bool value = + mapping_type::is_assignable && + static_cast(Kokkos::View::rank_dynamic) >= + static_cast(Kokkos::View::rank_dynamic); +}; + +template +using is_always_assignable = is_always_assignable_impl< + typename std::remove_reference::type, + typename std::remove_const< + typename std::remove_reference::type>::type>; + +#ifdef KOKKOS_ENABLE_CXX17 +template +inline constexpr bool is_always_assignable_v = + is_always_assignable::value; +#endif + +template +constexpr bool is_assignable(const Kokkos::View& dst, + const Kokkos::View& src) { + using DstTraits = typename Kokkos::View::traits; + using SrcTraits = typename Kokkos::View::traits; + using mapping_type = + Kokkos::Impl::ViewMapping; + +#ifdef KOKKOS_ENABLE_CXX17 + return is_always_assignable_v, + Kokkos::View> || +#else + return is_always_assignable, + Kokkos::View>::value || +#endif + (mapping_type::is_assignable && + ((DstTraits::dimension::rank_dynamic >= 1) || + (dst.static_extent(0) == src.extent(0))) && + ((DstTraits::dimension::rank_dynamic >= 2) || + (dst.static_extent(1) == src.extent(1))) && + ((DstTraits::dimension::rank_dynamic >= 3) || + (dst.static_extent(2) == src.extent(2))) && + ((DstTraits::dimension::rank_dynamic >= 4) || + (dst.static_extent(3) == src.extent(3))) && + ((DstTraits::dimension::rank_dynamic >= 5) || + (dst.static_extent(4) == src.extent(4))) && + ((DstTraits::dimension::rank_dynamic >= 6) || + (dst.static_extent(5) == src.extent(5))) && + ((DstTraits::dimension::rank_dynamic >= 7) || + (dst.static_extent(6) == src.extent(6))) && + ((DstTraits::dimension::rank_dynamic >= 8) || + (dst.static_extent(7) == src.extent(7)))); +} + } /* namespace Kokkos */ //---------------------------------------------------------------------------- @@ -793,19 +857,18 @@ class View : public ViewTraits { //---------------------------------------- private: - enum { - is_layout_left = - std::is_same::value, + static constexpr bool is_layout_left = + std::is_same::value; - is_layout_right = - std::is_same::value, + static constexpr bool is_layout_right = + std::is_same::value; - is_layout_stride = std::is_same::value, + static constexpr bool is_layout_stride = + std::is_same::value; - is_default_map = std::is_same::value && - (is_layout_left || is_layout_right || is_layout_stride) - }; + static constexpr bool is_default_map = + std::is_same::value && + (is_layout_left || is_layout_right || is_layout_stride); template ::accessible> @@ -823,6 +886,8 @@ class View : public ViewTraits { #if defined(KOKKOS_ENABLE_DEBUG_BOUNDS_CHECK) +#define KOKKOS_IMPL_SINK(ARG) ARG + #define KOKKOS_IMPL_VIEW_OPERATOR_VERIFY(ARG) \ View::template verify_space< \ Kokkos::Impl::ActiveExecutionMemorySpace>::check(); \ @@ -830,6 +895,8 @@ class View : public ViewTraits { #else +#define KOKKOS_IMPL_SINK(ARG) + #define KOKKOS_IMPL_VIEW_OPERATOR_VERIFY(ARG) \ View::template verify_space< \ Kokkos::Impl::ActiveExecutionMemorySpace>::check(); @@ -1452,8 +1519,9 @@ class View : public ViewTraits { typename std::enable_if<(Kokkos::Impl::are_integral::value && (0 == Rank)), reference_type>::type - access(Args... args) const { - KOKKOS_IMPL_VIEW_OPERATOR_VERIFY((m_track, m_map, args...)) + access(Args... KOKKOS_IMPL_SINK(args)) const { + KOKKOS_IMPL_VIEW_OPERATOR_VERIFY( + KOKKOS_IMPL_SINK((m_track, m_map, args...))) return m_map.reference(); } @@ -1462,8 +1530,9 @@ class View : public ViewTraits { typename std::enable_if<(Kokkos::Impl::are_integral::value && (1 == Rank) && !is_default_map), reference_type>::type - access(const I0& i0, Args... args) const { - KOKKOS_IMPL_VIEW_OPERATOR_VERIFY((m_track, m_map, i0, args...)) + access(const I0& i0, Args... KOKKOS_IMPL_SINK(args)) const { + KOKKOS_IMPL_VIEW_OPERATOR_VERIFY( + KOKKOS_IMPL_SINK((m_track, m_map, i0, args...))) return m_map.reference(i0); } @@ -1473,8 +1542,9 @@ class View : public ViewTraits { (1 == Rank) && is_default_map && !is_layout_stride), reference_type>::type - access(const I0& i0, Args... args) const { - KOKKOS_IMPL_VIEW_OPERATOR_VERIFY((m_track, m_map, i0, args...)) + access(const I0& i0, Args... KOKKOS_IMPL_SINK(args)) const { + KOKKOS_IMPL_VIEW_OPERATOR_VERIFY( + KOKKOS_IMPL_SINK((m_track, m_map, i0, args...))) return m_map.m_impl_handle[i0]; } @@ -1484,8 +1554,9 @@ class View : public ViewTraits { (1 == Rank) && is_default_map && is_layout_stride), reference_type>::type - access(const I0& i0, Args... args) const { - KOKKOS_IMPL_VIEW_OPERATOR_VERIFY((m_track, m_map, i0, args...)) + access(const I0& i0, Args... KOKKOS_IMPL_SINK(args)) const { + KOKKOS_IMPL_VIEW_OPERATOR_VERIFY( + KOKKOS_IMPL_SINK((m_track, m_map, i0, args...))) return m_map.m_impl_handle[m_map.m_impl_offset.m_stride.S0 * i0]; } @@ -1494,8 +1565,9 @@ class View : public ViewTraits { (Kokkos::Impl::are_integral::value && (2 == Rank) && !is_default_map), reference_type>::type - access(const I0& i0, const I1& i1, Args... args) const { - KOKKOS_IMPL_VIEW_OPERATOR_VERIFY((m_track, m_map, i0, i1, args...)) + access(const I0& i0, const I1& i1, Args... KOKKOS_IMPL_SINK(args)) const { + KOKKOS_IMPL_VIEW_OPERATOR_VERIFY( + KOKKOS_IMPL_SINK((m_track, m_map, i0, i1, args...))) return m_map.reference(i0, i1); } @@ -1504,8 +1576,9 @@ class View : public ViewTraits { (Kokkos::Impl::are_integral::value && (2 == Rank) && is_default_map && is_layout_left && (traits::rank_dynamic == 0)), reference_type>::type - access(const I0& i0, const I1& i1, Args... args) const { - KOKKOS_IMPL_VIEW_OPERATOR_VERIFY((m_track, m_map, i0, i1, args...)) + access(const I0& i0, const I1& i1, Args... KOKKOS_IMPL_SINK(args)) const { + KOKKOS_IMPL_VIEW_OPERATOR_VERIFY( + KOKKOS_IMPL_SINK((m_track, m_map, i0, i1, args...))) return m_map.m_impl_handle[i0 + m_map.m_impl_offset.m_dim.N0 * i1]; } @@ -1514,8 +1587,9 @@ class View : public ViewTraits { (Kokkos::Impl::are_integral::value && (2 == Rank) && is_default_map && is_layout_left && (traits::rank_dynamic != 0)), reference_type>::type - access(const I0& i0, const I1& i1, Args... args) const { - KOKKOS_IMPL_VIEW_OPERATOR_VERIFY((m_track, m_map, i0, i1, args...)) + access(const I0& i0, const I1& i1, Args... KOKKOS_IMPL_SINK(args)) const { + KOKKOS_IMPL_VIEW_OPERATOR_VERIFY( + KOKKOS_IMPL_SINK((m_track, m_map, i0, i1, args...))) return m_map.m_impl_handle[i0 + m_map.m_impl_offset.m_stride * i1]; } @@ -1524,8 +1598,9 @@ class View : public ViewTraits { (Kokkos::Impl::are_integral::value && (2 == Rank) && is_default_map && is_layout_right && (traits::rank_dynamic == 0)), reference_type>::type - access(const I0& i0, const I1& i1, Args... args) const { - KOKKOS_IMPL_VIEW_OPERATOR_VERIFY((m_track, m_map, i0, i1, args...)) + access(const I0& i0, const I1& i1, Args... KOKKOS_IMPL_SINK(args)) const { + KOKKOS_IMPL_VIEW_OPERATOR_VERIFY( + KOKKOS_IMPL_SINK((m_track, m_map, i0, i1, args...))) return m_map.m_impl_handle[i1 + m_map.m_impl_offset.m_dim.N1 * i0]; } @@ -1534,8 +1609,9 @@ class View : public ViewTraits { (Kokkos::Impl::are_integral::value && (2 == Rank) && is_default_map && is_layout_right && (traits::rank_dynamic != 0)), reference_type>::type - access(const I0& i0, const I1& i1, Args... args) const { - KOKKOS_IMPL_VIEW_OPERATOR_VERIFY((m_track, m_map, i0, i1, args...)) + access(const I0& i0, const I1& i1, Args... KOKKOS_IMPL_SINK(args)) const { + KOKKOS_IMPL_VIEW_OPERATOR_VERIFY( + KOKKOS_IMPL_SINK((m_track, m_map, i0, i1, args...))) return m_map.m_impl_handle[i1 + m_map.m_impl_offset.m_stride * i0]; } @@ -1544,8 +1620,9 @@ class View : public ViewTraits { (Kokkos::Impl::are_integral::value && (2 == Rank) && is_default_map && is_layout_stride), reference_type>::type - access(const I0& i0, const I1& i1, Args... args) const { - KOKKOS_IMPL_VIEW_OPERATOR_VERIFY((m_track, m_map, i0, i1, args...)) + access(const I0& i0, const I1& i1, Args... KOKKOS_IMPL_SINK(args)) const { + KOKKOS_IMPL_VIEW_OPERATOR_VERIFY( + KOKKOS_IMPL_SINK((m_track, m_map, i0, i1, args...))) return m_map.m_impl_handle[i0 * m_map.m_impl_offset.m_stride.S0 + i1 * m_map.m_impl_offset.m_stride.S1]; } @@ -1558,8 +1635,10 @@ class View : public ViewTraits { (Kokkos::Impl::are_integral::value && (3 == Rank) && is_default_map), reference_type>::type - access(const I0& i0, const I1& i1, const I2& i2, Args... args) const { - KOKKOS_IMPL_VIEW_OPERATOR_VERIFY((m_track, m_map, i0, i1, i2, args...)) + access(const I0& i0, const I1& i1, const I2& i2, + Args... KOKKOS_IMPL_SINK(args)) const { + KOKKOS_IMPL_VIEW_OPERATOR_VERIFY( + KOKKOS_IMPL_SINK((m_track, m_map, i0, i1, i2, args...))) return m_map.m_impl_handle[m_map.m_impl_offset(i0, i1, i2)]; } @@ -1568,8 +1647,10 @@ class View : public ViewTraits { (Kokkos::Impl::are_integral::value && (3 == Rank) && !is_default_map), reference_type>::type - access(const I0& i0, const I1& i1, const I2& i2, Args... args) const { - KOKKOS_IMPL_VIEW_OPERATOR_VERIFY((m_track, m_map, i0, i1, i2, args...)) + access(const I0& i0, const I1& i1, const I2& i2, + Args... KOKKOS_IMPL_SINK(args)) const { + KOKKOS_IMPL_VIEW_OPERATOR_VERIFY( + KOKKOS_IMPL_SINK((m_track, m_map, i0, i1, i2, args...))) return m_map.reference(i0, i1, i2); } @@ -1582,8 +1663,9 @@ class View : public ViewTraits { (4 == Rank) && is_default_map), reference_type>::type access(const I0& i0, const I1& i1, const I2& i2, const I3& i3, - Args... args) const { - KOKKOS_IMPL_VIEW_OPERATOR_VERIFY((m_track, m_map, i0, i1, i2, i3, args...)) + Args... KOKKOS_IMPL_SINK(args)) const { + KOKKOS_IMPL_VIEW_OPERATOR_VERIFY( + KOKKOS_IMPL_SINK((m_track, m_map, i0, i1, i2, i3, args...))) return m_map.m_impl_handle[m_map.m_impl_offset(i0, i1, i2, i3)]; } @@ -1593,8 +1675,9 @@ class View : public ViewTraits { (4 == Rank) && !is_default_map), reference_type>::type access(const I0& i0, const I1& i1, const I2& i2, const I3& i3, - Args... args) const { - KOKKOS_IMPL_VIEW_OPERATOR_VERIFY((m_track, m_map, i0, i1, i2, i3, args...)) + Args... KOKKOS_IMPL_SINK(args)) const { + KOKKOS_IMPL_VIEW_OPERATOR_VERIFY( + KOKKOS_IMPL_SINK((m_track, m_map, i0, i1, i2, i3, args...))) return m_map.reference(i0, i1, i2, i3); } @@ -1608,9 +1691,9 @@ class View : public ViewTraits { (5 == Rank) && is_default_map), reference_type>::type access(const I0& i0, const I1& i1, const I2& i2, const I3& i3, const I4& i4, - Args... args) const { + Args... KOKKOS_IMPL_SINK(args)) const { KOKKOS_IMPL_VIEW_OPERATOR_VERIFY( - (m_track, m_map, i0, i1, i2, i3, i4, args...)) + KOKKOS_IMPL_SINK((m_track, m_map, i0, i1, i2, i3, i4, args...))) return m_map.m_impl_handle[m_map.m_impl_offset(i0, i1, i2, i3, i4)]; } @@ -1621,9 +1704,9 @@ class View : public ViewTraits { (5 == Rank) && !is_default_map), reference_type>::type access(const I0& i0, const I1& i1, const I2& i2, const I3& i3, const I4& i4, - Args... args) const { + Args... KOKKOS_IMPL_SINK(args)) const { KOKKOS_IMPL_VIEW_OPERATOR_VERIFY( - (m_track, m_map, i0, i1, i2, i3, i4, args...)) + KOKKOS_IMPL_SINK((m_track, m_map, i0, i1, i2, i3, i4, args...))) return m_map.reference(i0, i1, i2, i3, i4); } @@ -1637,9 +1720,9 @@ class View : public ViewTraits { (6 == Rank) && is_default_map), reference_type>::type access(const I0& i0, const I1& i1, const I2& i2, const I3& i3, const I4& i4, - const I5& i5, Args... args) const { + const I5& i5, Args... KOKKOS_IMPL_SINK(args)) const { KOKKOS_IMPL_VIEW_OPERATOR_VERIFY( - (m_track, m_map, i0, i1, i2, i3, i4, i5, args...)) + KOKKOS_IMPL_SINK((m_track, m_map, i0, i1, i2, i3, i4, i5, args...))) return m_map.m_impl_handle[m_map.m_impl_offset(i0, i1, i2, i3, i4, i5)]; } @@ -1650,9 +1733,9 @@ class View : public ViewTraits { (6 == Rank) && !is_default_map), reference_type>::type access(const I0& i0, const I1& i1, const I2& i2, const I3& i3, const I4& i4, - const I5& i5, Args... args) const { + const I5& i5, Args... KOKKOS_IMPL_SINK(args)) const { KOKKOS_IMPL_VIEW_OPERATOR_VERIFY( - (m_track, m_map, i0, i1, i2, i3, i4, i5, args...)) + KOKKOS_IMPL_SINK((m_track, m_map, i0, i1, i2, i3, i4, i5, args...))) return m_map.reference(i0, i1, i2, i3, i4, i5); } @@ -1666,9 +1749,9 @@ class View : public ViewTraits { (7 == Rank) && is_default_map), reference_type>::type access(const I0& i0, const I1& i1, const I2& i2, const I3& i3, const I4& i4, - const I5& i5, const I6& i6, Args... args) const { + const I5& i5, const I6& i6, Args... KOKKOS_IMPL_SINK(args)) const { KOKKOS_IMPL_VIEW_OPERATOR_VERIFY( - (m_track, m_map, i0, i1, i2, i3, i4, i5, i6, args...)) + KOKKOS_IMPL_SINK((m_track, m_map, i0, i1, i2, i3, i4, i5, i6, args...))) return m_map.m_impl_handle[m_map.m_impl_offset(i0, i1, i2, i3, i4, i5, i6)]; } @@ -1679,9 +1762,9 @@ class View : public ViewTraits { (7 == Rank) && !is_default_map), reference_type>::type access(const I0& i0, const I1& i1, const I2& i2, const I3& i3, const I4& i4, - const I5& i5, const I6& i6, Args... args) const { + const I5& i5, const I6& i6, Args... KOKKOS_IMPL_SINK(args)) const { KOKKOS_IMPL_VIEW_OPERATOR_VERIFY( - (m_track, m_map, i0, i1, i2, i3, i4, i5, i6, args...)) + KOKKOS_IMPL_SINK((m_track, m_map, i0, i1, i2, i3, i4, i5, i6, args...))) return m_map.reference(i0, i1, i2, i3, i4, i5, i6); } @@ -1696,9 +1779,10 @@ class View : public ViewTraits { (8 == Rank) && is_default_map), reference_type>::type access(const I0& i0, const I1& i1, const I2& i2, const I3& i3, const I4& i4, - const I5& i5, const I6& i6, const I7& i7, Args... args) const { - KOKKOS_IMPL_VIEW_OPERATOR_VERIFY( - (m_track, m_map, i0, i1, i2, i3, i4, i5, i6, i7, args...)) + const I5& i5, const I6& i6, const I7& i7, + Args... KOKKOS_IMPL_SINK(args)) const { + KOKKOS_IMPL_VIEW_OPERATOR_VERIFY(KOKKOS_IMPL_SINK( + (m_track, m_map, i0, i1, i2, i3, i4, i5, i6, i7, args...))) return m_map .m_impl_handle[m_map.m_impl_offset(i0, i1, i2, i3, i4, i5, i6, i7)]; } @@ -1711,9 +1795,10 @@ class View : public ViewTraits { (8 == Rank) && !is_default_map), reference_type>::type access(const I0& i0, const I1& i1, const I2& i2, const I3& i3, const I4& i4, - const I5& i5, const I6& i6, const I7& i7, Args... args) const { - KOKKOS_IMPL_VIEW_OPERATOR_VERIFY( - (m_track, m_map, i0, i1, i2, i3, i4, i5, i6, i7, args...)) + const I5& i5, const I6& i6, const I7& i7, + Args... KOKKOS_IMPL_SINK(args)) const { + KOKKOS_IMPL_VIEW_OPERATOR_VERIFY(KOKKOS_IMPL_SINK( + (m_track, m_map, i0, i1, i2, i3, i4, i5, i6, i7, args...))) return m_map.reference(i0, i1, i2, i3, i4, i5, i6, i7); } @@ -1722,8 +1807,8 @@ class View : public ViewTraits { //---------------------------------------- // Standard destructor, constructors, and assignment operators - KOKKOS_INLINE_FUNCTION - ~View() {} + KOKKOS_DEFAULTED_FUNCTION + ~View() = default; KOKKOS_INLINE_FUNCTION View() : m_track(), m_map() {} @@ -1759,7 +1844,8 @@ class View : public ViewTraits { const View& rhs, typename std::enable_if::traits, - typename traits::specialize>::is_assignable_data_type>::type* = 0) + typename traits::specialize>::is_assignable_data_type>::type* = + nullptr) : m_track(rhs.m_track, traits::is_managed), m_map() { typedef typename View::traits SrcTraits; typedef Kokkos::Impl::ViewMapping { // If allocating in CudaUVMSpace must fence before and after // the allocation to protect against possible concurrent access // on the CPU and the GPU. - // Fence using the trait's executon space (which will be Kokkos::Cuda) - // to avoid incomplete type errors from usng Kokkos::Cuda directly. + // Fence using the trait's execution space (which will be Kokkos::Cuda) + // to avoid incomplete type errors from using Kokkos::Cuda directly. if (std::is_same::value) { typename traits::device_type::memory_space::execution_space().fence(); diff --git a/lib/kokkos/core/src/Kokkos_WorkGraphPolicy.hpp b/lib/kokkos/core/src/Kokkos_WorkGraphPolicy.hpp index 26df7e03a2..6ff2f0d4b7 100644 --- a/lib/kokkos/core/src/Kokkos_WorkGraphPolicy.hpp +++ b/lib/kokkos/core/src/Kokkos_WorkGraphPolicy.hpp @@ -199,6 +199,8 @@ class WorkGraphPolicy : public Kokkos::Impl::PolicyTraits { if (0 == count_queue[w]) push_work(w); } + execution_space space() const { return execution_space(); } + WorkGraphPolicy(const graph_type& arg_graph) : m_graph(arg_graph), m_queue(view_alloc("queue", WithoutInitializing), diff --git a/lib/kokkos/core/src/OpenMP/Kokkos_OpenMP_Exec.cpp b/lib/kokkos/core/src/OpenMP/Kokkos_OpenMP_Exec.cpp index d152fd62dc..21151156e3 100644 --- a/lib/kokkos/core/src/OpenMP/Kokkos_OpenMP_Exec.cpp +++ b/lib/kokkos/core/src/OpenMP/Kokkos_OpenMP_Exec.cpp @@ -149,12 +149,12 @@ void OpenMPExec::clear_thread_data() { { const int rank = omp_get_thread_num(); - if (0 != m_pool[rank]) { + if (nullptr != m_pool[rank]) { m_pool[rank]->disband_pool(); space.deallocate(m_pool[rank], old_alloc_bytes); - m_pool[rank] = 0; + m_pool[rank] = nullptr; } } /* END #pragma omp parallel */ @@ -211,7 +211,7 @@ void OpenMPExec::resize_thread_data(size_t pool_reduce_bytes, { const int rank = omp_get_thread_num(); - if (0 != m_pool[rank]) { + if (nullptr != m_pool[rank]) { m_pool[rank]->disband_pool(); space.deallocate(m_pool[rank], old_alloc_bytes); @@ -447,7 +447,7 @@ void OpenMP::impl_finalize() //---------------------------------------------------------------------------- -void OpenMP::print_configuration(std::ostream &s, const bool verbose) { +void OpenMP::print_configuration(std::ostream &s, const bool /*verbose*/) { s << "Kokkos::OpenMP"; const bool is_initialized = Impl::t_openmp_instance != nullptr; diff --git a/lib/kokkos/core/src/OpenMP/Kokkos_OpenMP_Exec.hpp b/lib/kokkos/core/src/OpenMP/Kokkos_OpenMP_Exec.hpp index 6a8773a58f..6614050f02 100644 --- a/lib/kokkos/core/src/OpenMP/Kokkos_OpenMP_Exec.hpp +++ b/lib/kokkos/core/src/OpenMP/Kokkos_OpenMP_Exec.hpp @@ -129,8 +129,6 @@ class OpenMPExec { namespace Kokkos { -inline OpenMP::OpenMP() noexcept {} - inline #ifdef KOKKOS_ENABLE_DEPRECATED_CODE bool @@ -176,20 +174,24 @@ int OpenMP::impl_thread_pool_rank() noexcept #endif } -inline void OpenMP::impl_static_fence(OpenMP const& instance) noexcept {} +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 { +inline bool OpenMP::is_asynchronous(OpenMP const& /*instance*/) noexcept { return false; } template void OpenMP::partition_master(F const& f, int num_partitions, int partition_size) { - if (omp_get_nested()) { +#if _OPENMP >= 201811 + if (omp_get_max_active_levels() > 1) { +#else + if (omp_get_nested() > 1) { +#endif using Exec = Impl::OpenMPExec; Exec* prev_instance = Impl::t_openmp_instance; diff --git a/lib/kokkos/core/src/OpenMP/Kokkos_OpenMP_Parallel.hpp b/lib/kokkos/core/src/OpenMP/Kokkos_OpenMP_Parallel.hpp index 5442119e73..83773ac305 100644 --- a/lib/kokkos/core/src/OpenMP/Kokkos_OpenMP_Parallel.hpp +++ b/lib/kokkos/core/src/OpenMP/Kokkos_OpenMP_Parallel.hpp @@ -389,7 +389,7 @@ class ParallelReduce, ReducerType, const ViewType& arg_view, typename std::enable_if::value && !Kokkos::is_reducer_type::value, - void*>::type = NULL) + void*>::type = nullptr) : m_instance(t_openmp_instance), m_functor(arg_functor), m_policy(arg_policy), @@ -551,7 +551,7 @@ class ParallelReduce, ReducerType, const ViewType& arg_view, typename std::enable_if::value && !Kokkos::is_reducer_type::value, - void*>::type = NULL) + void*>::type = nullptr) : m_instance(t_openmp_instance), m_functor(arg_functor), m_mdr_policy(arg_policy), @@ -1146,7 +1146,7 @@ class ParallelReduce, const ViewType& arg_result, typename std::enable_if::value && !Kokkos::is_reducer_type::value, - void*>::type = NULL) + void*>::type = nullptr) : m_instance(t_openmp_instance), m_functor(arg_functor), m_policy(arg_policy), diff --git a/lib/kokkos/core/src/OpenMP/Kokkos_OpenMP_Task.hpp b/lib/kokkos/core/src/OpenMP/Kokkos_OpenMP_Task.hpp index 0cbdfbbdaa..62f0a77d0e 100644 --- a/lib/kokkos/core/src/OpenMP/Kokkos_OpenMP_Task.hpp +++ b/lib/kokkos/core/src/OpenMP/Kokkos_OpenMP_Task.hpp @@ -132,14 +132,14 @@ class TaskQueueSpecialization > { auto current_task = OptionalRef(nullptr); - while (not queue.is_done()) { + while (!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()) { + while (!queue.is_done()) { current_task = queue.pop_ready_task(team_scheduler.team_scheduler_info()); diff --git a/lib/kokkos/core/src/OpenMP/Kokkos_OpenMP_Team.hpp b/lib/kokkos/core/src/OpenMP/Kokkos_OpenMP_Team.hpp index 39fd5ae033..f54b6e2d51 100644 --- a/lib/kokkos/core/src/OpenMP/Kokkos_OpenMP_Team.hpp +++ b/lib/kokkos/core/src/OpenMP/Kokkos_OpenMP_Team.hpp @@ -62,6 +62,11 @@ class TeamPolicyInternal typedef PolicyTraits traits; + const typename traits::execution_space& space() const { + static typename traits::execution_space m_space; + return m_space; + } + TeamPolicyInternal& operator=(const TeamPolicyInternal& p) { m_league_size = p.m_league_size; m_team_size = p.m_team_size; diff --git a/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTargetSpace.cpp b/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTargetSpace.cpp index 2dd038dce7..ab833b0363 100644 --- a/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTargetSpace.cpp +++ b/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTargetSpace.cpp @@ -111,14 +111,6 @@ std::string SharedAllocationRecord * -SharedAllocationRecord::allocate( - const Kokkos::Experimental::OpenMPTargetSpace &arg_space, - const std::string &arg_label, const size_t arg_alloc_size) { - return new SharedAllocationRecord(arg_space, arg_label, arg_alloc_size); -} - void SharedAllocationRecord::deallocate(SharedAllocationRecord *arg_rec) { @@ -151,6 +143,8 @@ SharedAllocationRecord:: header.m_label[SharedAllocationHeader::maximum_label_length - 1] = (char)0; // TODO DeepCopy // DeepCopy + Kokkos::Impl::DeepCopy( + RecordBase::m_alloc_ptr, &header, sizeof(SharedAllocationHeader)); } //---------------------------------------------------------------------------- @@ -203,18 +197,22 @@ SharedAllocationRecord typedef SharedAllocationRecord RecordHost; - SharedAllocationHeader const *const head = - alloc_ptr ? Header::get_header(alloc_ptr) : (SharedAllocationHeader *)0; - RecordHost *const record = - head ? static_cast(head->m_record) : (RecordHost *)0; + if (alloc_ptr) { + Header head; + const Header *const head_ompt = Header::get_header(alloc_ptr); - if (!alloc_ptr || record->m_alloc_ptr != head) { - Kokkos::Impl::throw_runtime_exception(std::string( - "Kokkos::Experimental::Impl::SharedAllocationRecord< " - "Kokkos::Experimental::OpenMPTargetSpace , void >::get_record ERROR")); - } + Kokkos::Impl::DeepCopy( + &head, head_ompt, sizeof(SharedAllocationHeader)); - return record; + RecordHost *record = static_cast(head.m_record); + if (record->m_alloc_ptr == head_ompt) { + return record; + } + } + Kokkos::Impl::throw_runtime_exception(std::string( + "Kokkos::Experimental::Impl::SharedAllocationRecord< " + "Kokkos::Experimental::OpenMPTargetSpace , void >::get_record ERROR")); + return nullptr; } // Iterate records to print orphaned memory ... diff --git a/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTarget_Exec.cpp b/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTarget_Exec.cpp index 140a4cb88e..b09dbeba3a 100644 --- a/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTarget_Exec.cpp +++ b/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTarget_Exec.cpp @@ -61,17 +61,8 @@ namespace { KOKKOS_INLINE_FUNCTION int kokkos_omp_in_parallel(); -int kokkos_omp_in_critical_region = - (Kokkos::HostSpace::register_in_parallel(kokkos_omp_in_parallel), 0); - KOKKOS_INLINE_FUNCTION -int kokkos_omp_in_parallel() { -#ifndef __CUDA_ARCH__ - return omp_in_parallel() && !kokkos_omp_in_critical_region; -#else - return 0; -#endif -} +int kokkos_omp_in_parallel() { return omp_in_parallel(); } bool s_using_hwloc = false; @@ -79,23 +70,9 @@ bool s_using_hwloc = false; } // namespace Impl } // namespace Kokkos -namespace Kokkos { -namespace Experimental { -bool OpenMPTarget::m_is_initialized = false; -} -} // namespace Kokkos - namespace Kokkos { namespace Impl { -// int OpenMPTargetExec::m_map_rank[ OpenMPTargetExec::MAX_THREAD_COUNT ] = { 0 -// }; - -// int OpenMPTargetExec::m_pool_topo[ 4 ] = { 0 }; - -// OpenMPTargetExec * OpenMPTargetExec::m_pool[ -// OpenMPTargetExec::MAX_THREAD_COUNT ] = { 0 }; - void OpenMPTargetExec::verify_is_process(const char* const label) { if (omp_in_parallel()) { std::string msg(label); @@ -105,28 +82,21 @@ void OpenMPTargetExec::verify_is_process(const char* const label) { } void OpenMPTargetExec::verify_initialized(const char* const label) { - if (0 == Kokkos::Experimental::OpenMPTarget::is_initialized()) { + if (0 == Kokkos::Experimental::OpenMPTarget().impl_is_initialized()) { std::string msg(label); msg.append(" ERROR: not initialized"); Kokkos::Impl::throw_runtime_exception(msg); } - - if (omp_get_max_threads() != - Kokkos::Experimental::OpenMPTarget::thread_pool_size(0)) { - std::string msg(label); - msg.append(" ERROR: Initialized but threads modified inappropriately"); - Kokkos::Impl::throw_runtime_exception(msg); - } } -void* OpenMPTargetExec::m_scratch_ptr = NULL; +void* OpenMPTargetExec::m_scratch_ptr = nullptr; int64_t OpenMPTargetExec::m_scratch_size = 0; void OpenMPTargetExec::clear_scratch() { Kokkos::Experimental::OpenMPTargetSpace space; space.deallocate(m_scratch_ptr, m_scratch_size); - m_scratch_ptr = NULL; - m_scratch_size = NULL; + m_scratch_ptr = nullptr; + m_scratch_size = 0; } void* OpenMPTargetExec::get_scratch_ptr() { return m_scratch_ptr; } @@ -151,122 +121,4 @@ void OpenMPTargetExec::resize_scratch(int64_t reduce_bytes, } // namespace Impl } // namespace Kokkos -//---------------------------------------------------------------------------- -//---------------------------------------------------------------------------- - -namespace Kokkos { -namespace Experimental { -//---------------------------------------------------------------------------- - -int OpenMPTarget::is_initialized() { - return m_is_initialized; -} // != Impl::OpenMPTargetExec::m_pool[0]; } - -void OpenMPTarget::initialize(unsigned thread_count, unsigned use_numa_count, - unsigned use_cores_per_numa) { - // Before any other call to OMP query the maximum number of threads - // and save the value for re-initialization unit testing. - - // Init the array for used for arbitrarily sized atomics - Kokkos::Impl::init_lock_array_host_space(); - -#ifdef KOKKOS_ENABLE_PROFILING - Kokkos::Profiling::initialize(); -#endif - m_is_initialized = true; -} - -//---------------------------------------------------------------------------- - -void OpenMPTarget::finalize() { - Kokkos::Impl::OpenMPTargetExec::verify_initialized("OpenMPTarget::finalize"); - Kokkos::Impl::OpenMPTargetExec::verify_is_process("OpenMPTarget::finalize"); - - m_is_initialized = false; - - omp_set_num_threads(1); - - if (Kokkos::Impl::s_using_hwloc && Kokkos::hwloc::can_bind_threads()) { - hwloc::unbind_this_thread(); - } - -#ifdef KOKKOS_ENABLE_PROFILING - Kokkos::Profiling::finalize(); -#endif -} - -//---------------------------------------------------------------------------- - -void OpenMPTarget::print_configuration(std::ostream& s, const bool detail) { - Kokkos::Impl::OpenMPTargetExec::verify_is_process( - "OpenMPTarget::print_configuration"); - /* - s << "Kokkos::Experimental::OpenMPTarget" ; - - #if defined( KOKKOS_ENABLE_OPENMPTARGET ) - s << " KOKKOS_ENABLE_OPENMPTARGET" ; - #endif - #if defined( KOKKOS_ENABLE_HWLOC ) - - const unsigned numa_count_ = - Kokkos::hwloc::get_available_numa_count(); const unsigned cores_per_numa = - Kokkos::hwloc::get_available_cores_per_numa(); const unsigned threads_per_core - = Kokkos::hwloc::get_available_threads_per_core(); - - s << " hwloc[" << numa_count_ << "x" << cores_per_numa << "x" << - threads_per_core << "]" - << " hwloc_binding_" << ( Impl::s_using_hwloc ? "enabled" : "disabled" ) - ; - #endif - - const bool is_initialized = 0 != Impl::OpenMPTargetExec::m_pool[0] ; - - if ( is_initialized ) { - const int numa_count = Kokkos::Impl::OpenMPTargetExec::m_pool_topo[0] - / Kokkos::Impl::OpenMPTargetExec::m_pool_topo[1] ; const int core_per_numa = - Kokkos::Impl::OpenMPTargetExec::m_pool_topo[1] / - Kokkos::Impl::OpenMPTargetExec::m_pool_topo[2] ; const int thread_per_core = - Kokkos::Impl::OpenMPTargetExec::m_pool_topo[2] ; - - s << " thread_pool_topology[ " << numa_count - << " x " << core_per_numa - << " x " << thread_per_core - << " ]" - << std::endl ; - - if ( detail ) { - std::vector< std::pair > coord( - Kokkos::Impl::OpenMPTargetExec::m_pool_topo[0] ); - - #pragma omp parallel - { - #pragma omp critical - { - coord[ omp_get_thread_num() ] = hwloc::get_this_thread_coordinate(); - } - // END #pragma omp critical - } - // END #pragma omp parallel - - for ( unsigned i = 0 ; i < coord.size() ; ++i ) { - s << " thread omp_rank[" << i << "]" - << " kokkos_rank[" << Impl::OpenMPTargetExec::m_map_rank[ i ] << "]" - << " hwloc_coord[" << coord[i].first << "." << coord[i].second << - "]" - << std::endl ; - } - } - } - else { - s << " not initialized" << std::endl ; - } - */ -} - -int OpenMPTarget::concurrency() { return thread_pool_size(0); } - -const char* OpenMPTarget::name() { return "OpenMPTarget"; } -} // namespace Experimental -} // namespace Kokkos - #endif // KOKKOS_ENABLE_OPENMPTARGET diff --git a/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTarget_Exec.hpp b/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTarget_Exec.hpp index c9d8543eab..be6ddb5ed4 100644 --- a/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTarget_Exec.hpp +++ b/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTarget_Exec.hpp @@ -341,19 +341,39 @@ class TeamPolicyInternal //---------------------------------------- template - inline static int team_size_max(const FunctorType&) { - return 1024; + inline static int team_size_max(const FunctorType&, const ParallelForTag&) { + return 256; } template - inline static int team_size_recommended(const FunctorType&) { + inline static int team_size_max(const FunctorType&, + const ParallelReduceTag&) { + return 256; + } + + template + inline static int team_size_max(const FunctorType&, const ReducerType&, + const ParallelReduceTag&) { return 256; } template inline static int team_size_recommended(const FunctorType&, - const int& vector_length) { - return 256 / vector_length; + const ParallelForTag&) { + return 128; + } + + template + inline static int team_size_recommended(const FunctorType&, + const ParallelReduceTag&) { + return 128; + } + + template + inline static int team_size_recommended(const FunctorType&, + const ReducerType&, + const ParallelReduceTag&) { + return 128; } //---------------------------------------- @@ -391,6 +411,10 @@ class TeamPolicyInternal team_size_ * m_thread_scratch_size[level]; } + inline Kokkos::Experimental::OpenMPTarget space() const { + return Kokkos::Experimental::OpenMPTarget(); + } + /** \brief Specify league size, request team size */ TeamPolicyInternal(typename traits::execution_space&, int league_size_request, int team_size_request, int vector_length_request = 1) @@ -540,8 +564,8 @@ class TeamPolicyInternal private: /** \brief finalize chunk_size if it was set to AUTO*/ inline void set_auto_chunk_size() { - int concurrency = - traits::execution_space::thread_pool_size(0) / m_team_alloc; + int concurrency = 2048 * 128; + if (concurrency == 0) concurrency = 1; if (m_chunk_size > 0) { @@ -568,23 +592,6 @@ class TeamPolicyInternal } // namespace Kokkos -//---------------------------------------------------------------------------- -//---------------------------------------------------------------------------- - -namespace Kokkos { -namespace Experimental { - -inline int OpenMPTarget::thread_pool_size(int depth) { - // return Impl::OpenMPTargetExec::pool_size(depth); - return omp_get_max_threads(); -} - -KOKKOS_INLINE_FUNCTION -int OpenMPTarget::thread_pool_rank() { return omp_get_thread_num(); } - -} // namespace Experimental -} // namespace Kokkos - namespace Kokkos { template diff --git a/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTarget_Instance.cpp b/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTarget_Instance.cpp new file mode 100644 index 0000000000..011bb1c8e1 --- /dev/null +++ b/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTarget_Instance.cpp @@ -0,0 +1,50 @@ +#include + +namespace Kokkos { +namespace Experimental { +namespace Impl { +void OpenMPTargetInternal::fence() {} +int OpenMPTargetInternal::concurrency() { return 128000; } +const char* OpenMPTargetInternal::name() { return "OpenMPTarget"; } +void OpenMPTargetInternal::print_configuration(std::ostream& stream, + const bool) { + printf("Using OpenMPTarget\n"); +} + +void OpenMPTargetInternal::impl_finalize() { m_is_initialized = false; } +void OpenMPTargetInternal::impl_initialize() { m_is_initialized = true; } +int OpenMPTargetInternal::impl_is_initialized() { + return m_is_initialized ? 1 : 0; +} + +OpenMPTargetInternal* OpenMPTargetInternal::impl_singleton() { + static OpenMPTargetInternal self; + return &self; +} +} // Namespace Impl + +OpenMPTarget::OpenMPTarget() + : m_space_instance(Impl::OpenMPTargetInternal::impl_singleton()) {} + +const char* OpenMPTarget::name() { + return Impl::OpenMPTargetInternal::impl_singleton()->name(); +} +void OpenMPTarget::print_configuration(std::ostream& stream, + const bool detail) { + m_space_instance->print_configuration(stream, detail); +} + +int OpenMPTarget::concurrency() { + return Impl::OpenMPTargetInternal::impl_singleton()->concurrency(); +} +void OpenMPTarget::fence() { + Impl::OpenMPTargetInternal::impl_singleton()->fence(); +} + +void OpenMPTarget::impl_initialize() { m_space_instance->impl_initialize(); } +void OpenMPTarget::impl_finalize() { m_space_instance->impl_finalize(); } +int OpenMPTarget::impl_is_initialized() { + return Impl::OpenMPTargetInternal::impl_singleton()->impl_is_initialized(); +} +} // Namespace Experimental +} // Namespace Kokkos diff --git a/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTarget_Instance.hpp b/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTarget_Instance.hpp new file mode 100644 index 0000000000..2087226d7c --- /dev/null +++ b/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTarget_Instance.hpp @@ -0,0 +1,40 @@ +#include + +namespace Kokkos { +namespace Experimental { +namespace Impl { + +class OpenMPTargetInternal { + private: + OpenMPTargetInternal() = default; + OpenMPTargetInternal(const OpenMPTargetInternal&) = default; + OpenMPTargetInternal& operator=(const OpenMPTargetInternal&) = default; + + public: + void fence(); + + /** \brief Return the maximum amount of concurrency. */ + int concurrency(); + + //! Print configuration information to the given output stream. + void print_configuration(std::ostream&, const bool detail = false); + + static const char* name(); + + //! Free any resources being consumed by the device. + void impl_finalize(); + + //! Has been initialized + int impl_is_initialized(); + + //! Initialize, telling the CUDA run-time library which device to use. + void impl_initialize(); + + static OpenMPTargetInternal* impl_singleton(); + + private: + bool m_is_initialized = false; +}; +} // Namespace Impl +} // Namespace Experimental +} // Namespace Kokkos diff --git a/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTarget_Parallel.hpp b/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTarget_Parallel.hpp index 2252cf0372..d5b62f60b8 100644 --- a/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTarget_Parallel.hpp +++ b/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTarget_Parallel.hpp @@ -57,6 +57,374 @@ namespace Kokkos { namespace Impl { +template +struct OpenMPTargetReducerWrapper { + typedef typename Reducer::value_type value_type; + + KOKKOS_INLINE_FUNCTION + static void join(value_type&, const value_type&) { + printf( + "Using a generic unknown Reducer for the OpenMPTarget backend is not " + "implemented."); + } + + KOKKOS_INLINE_FUNCTION + static void join(volatile value_type&, const volatile value_type&) { + printf( + "Using a generic unknown Reducer for the OpenMPTarget backend is not " + "implemented."); + } + + KOKKOS_INLINE_FUNCTION + static void init(value_type&) { + printf( + "Using a generic unknown Reducer for the OpenMPTarget backend is not " + "implemented."); + } +}; + +template +struct OpenMPTargetReducerWrapper> { + public: + // Required + typedef typename std::remove_cv::type value_type; + + // Required + KOKKOS_INLINE_FUNCTION + static void join(value_type& dest, const value_type& src) { dest += src; } + + KOKKOS_INLINE_FUNCTION + static void join(volatile value_type& dest, const volatile value_type& src) { + dest += src; + } + + KOKKOS_INLINE_FUNCTION + static void init(value_type& val) { + val = reduction_identity::sum(); + } +}; + +template +struct OpenMPTargetReducerWrapper> { + public: + // Required + typedef typename std::remove_cv::type value_type; + + // Required + KOKKOS_INLINE_FUNCTION + static void join(value_type& dest, const value_type& src) { dest *= src; } + + KOKKOS_INLINE_FUNCTION + static void join(volatile value_type& dest, const volatile value_type& src) { + dest *= src; + } + + KOKKOS_INLINE_FUNCTION + static void init(value_type& val) { + val = reduction_identity::prod(); + } +}; + +template +struct OpenMPTargetReducerWrapper> { + public: + // Required + typedef typename std::remove_cv::type value_type; + + // Required + KOKKOS_INLINE_FUNCTION + static void join(value_type& dest, const value_type& src) { + if (src < dest) dest = src; + } + + KOKKOS_INLINE_FUNCTION + static void join(volatile value_type& dest, const volatile value_type& src) { + if (src < dest) dest = src; + } + + KOKKOS_INLINE_FUNCTION + static void init(value_type& val) { + val = reduction_identity::min(); + } +}; + +template +struct OpenMPTargetReducerWrapper> { + public: + // Required + typedef typename std::remove_cv::type value_type; + + // Required + KOKKOS_INLINE_FUNCTION + static void join(value_type& dest, const value_type& src) { + if (src > dest) dest = src; + } + + KOKKOS_INLINE_FUNCTION + static void join(volatile value_type& dest, const volatile value_type& src) { + if (src > dest) dest = src; + } + + // Required + KOKKOS_INLINE_FUNCTION + static void init(value_type& val) { + val = reduction_identity::max(); + } +}; + +template +struct OpenMPTargetReducerWrapper> { + public: + // Required + typedef typename std::remove_cv::type value_type; + + KOKKOS_INLINE_FUNCTION + static void join(value_type& dest, const value_type& src) { + dest = dest && src; + } + + KOKKOS_INLINE_FUNCTION + static void join(volatile value_type& dest, const volatile value_type& src) { + dest = dest && src; + } + + KOKKOS_INLINE_FUNCTION + static void init(value_type& val) { + val = reduction_identity::land(); + } +}; + +template +struct OpenMPTargetReducerWrapper> { + public: + // Required + typedef typename std::remove_cv::type value_type; + + typedef Kokkos::View result_view_type; + + // Required + KOKKOS_INLINE_FUNCTION + static void join(value_type& dest, const value_type& src) { + dest = dest || src; + } + + KOKKOS_INLINE_FUNCTION + static void join(volatile value_type& dest, const volatile value_type& src) { + dest = dest || src; + } + + KOKKOS_INLINE_FUNCTION + static void init(value_type& val) { + val = reduction_identity::lor(); + } +}; + +template +struct OpenMPTargetReducerWrapper> { + public: + // Required + typedef typename std::remove_cv::type value_type; + + // Required + KOKKOS_INLINE_FUNCTION + static void join(value_type& dest, const value_type& src) { + dest = dest & src; + } + + KOKKOS_INLINE_FUNCTION + static void join(volatile value_type& dest, const volatile value_type& src) { + dest = dest & src; + } + + KOKKOS_INLINE_FUNCTION + static void init(value_type& val) { + val = reduction_identity::band(); + } +}; + +template +struct OpenMPTargetReducerWrapper> { + public: + // Required + typedef typename std::remove_cv::type value_type; + + // Required + KOKKOS_INLINE_FUNCTION + static void join(value_type& dest, const value_type& src) { + dest = dest | src; + } + + KOKKOS_INLINE_FUNCTION + static void join(volatile value_type& dest, const volatile value_type& src) { + dest = dest | src; + } + + KOKKOS_INLINE_FUNCTION + static void init(value_type& val) { + val = reduction_identity::bor(); + } +}; + +template +struct OpenMPTargetReducerWrapper> { + private: + typedef typename std::remove_cv::type scalar_type; + typedef typename std::remove_cv::type index_type; + + public: + // Required + typedef ValLocScalar value_type; + + // Required + KOKKOS_INLINE_FUNCTION + static void join(value_type& dest, const value_type& src) { + if (src.val < dest.val) dest = src; + } + + KOKKOS_INLINE_FUNCTION + static void join(volatile value_type& dest, const volatile value_type& src) { + if (src.val < dest.val) dest = src; + } + + KOKKOS_INLINE_FUNCTION + static void init(value_type& val) { + val.val = reduction_identity::min(); + val.loc = reduction_identity::min(); + } +}; + +template +struct OpenMPTargetReducerWrapper> { + private: + typedef typename std::remove_cv::type scalar_type; + typedef typename std::remove_cv::type index_type; + + public: + // Required + typedef ValLocScalar value_type; + + KOKKOS_INLINE_FUNCTION + static void join(value_type& dest, const value_type& src) { + if (src.val > dest.val) dest = src; + } + + KOKKOS_INLINE_FUNCTION + static void join(volatile value_type& dest, const volatile value_type& src) { + if (src.val > dest.val) dest = src; + } + + KOKKOS_INLINE_FUNCTION + static void init(value_type& val) { + val.val = reduction_identity::max(); + val.loc = reduction_identity::min(); + } +}; + +template +struct OpenMPTargetReducerWrapper> { + private: + typedef typename std::remove_cv::type scalar_type; + + public: + // Required + typedef MinMaxScalar value_type; + + // Required + KOKKOS_INLINE_FUNCTION + static void join(value_type& dest, const value_type& src) { + if (src.min_val < dest.min_val) { + dest.min_val = src.min_val; + } + if (src.max_val > dest.max_val) { + dest.max_val = src.max_val; + } + } + + KOKKOS_INLINE_FUNCTION + static void join(volatile value_type& dest, const volatile value_type& src) { + if (src.min_val < dest.min_val) { + dest.min_val = src.min_val; + } + if (src.max_val > dest.max_val) { + dest.max_val = src.max_val; + } + } + + KOKKOS_INLINE_FUNCTION + static void init(value_type& val) { + val.max_val = reduction_identity::max(); + val.min_val = reduction_identity::min(); + } +}; + +template +struct OpenMPTargetReducerWrapper> { + private: + typedef typename std::remove_cv::type scalar_type; + typedef typename std::remove_cv::type index_type; + + public: + // Required + typedef MinMaxLocScalar value_type; + + // Required + KOKKOS_INLINE_FUNCTION + static void join(value_type& dest, const value_type& src) { + if (src.min_val < dest.min_val) { + dest.min_val = src.min_val; + dest.min_loc = src.min_loc; + } + if (src.max_val > dest.max_val) { + dest.max_val = src.max_val; + dest.max_loc = src.max_loc; + } + } + + KOKKOS_INLINE_FUNCTION + static void join(volatile value_type& dest, const volatile value_type& src) { + if (src.min_val < dest.min_val) { + dest.min_val = src.min_val; + dest.min_loc = src.min_loc; + } + if (src.max_val > dest.max_val) { + dest.max_val = src.max_val; + dest.max_loc = src.max_loc; + } + } + + KOKKOS_INLINE_FUNCTION + static void init(value_type& val) { + val.max_val = reduction_identity::max(); + val.min_val = reduction_identity::min(); + val.max_loc = reduction_identity::min(); + val.min_loc = reduction_identity::min(); + } +}; +/* +template +class OpenMPTargetReducerWrapper { + public: + const ReducerType& reducer; + typedef typename ReducerType::value_type value_type; + value_type& value; + + KOKKOS_INLINE_FUNCTION + void join(const value_type& upd) { + reducer.join(value,upd); + } + + KOKKOS_INLINE_FUNCTION + void init(const value_type& upd) { + reducer.init(value,upd); + } +};*/ + +} // namespace Impl +} // namespace Kokkos + +namespace Kokkos { +namespace Impl { + template class ParallelFor, Kokkos::Experimental::OpenMPTarget> { @@ -71,7 +439,21 @@ class ParallelFor, public: inline void execute() const { execute_impl(); } - + /* + template + inline typename std::enable_if::value>::type + execute_impl() const { + OpenMPTargetExec::verify_is_process( + "Kokkos::Experimental::OpenMPTarget parallel_for"); + OpenMPTargetExec::verify_initialized( + "Kokkos::Experimental::OpenMPTarget parallel_for"); + const typename Policy::member_type begin = m_policy.begin(); + const typename Policy::member_type end = m_policy.end(); + + #pragma omp target teams distribute parallel for map(to: this->m_functor) + for (int i = begin; i < end; i++) m_functor(i); + } + */ template inline typename std::enable_if::value>::type execute_impl() const { @@ -82,8 +464,12 @@ class ParallelFor, const typename Policy::member_type begin = m_policy.begin(); const typename Policy::member_type end = m_policy.end(); -#pragma omp target teams distribute parallel for map(to : this->m_functor) - for (int i = begin; i < end; i++) m_functor(i); + if (end <= begin) return; + + FunctorType a_functor(m_functor); + +#pragma omp target teams distribute parallel for map(to : a_functor) + for (int i = begin; i < end; i++) a_functor(i); } template @@ -96,10 +482,13 @@ class ParallelFor, const typename Policy::member_type begin = m_policy.begin(); const typename Policy::member_type end = m_policy.end(); + if (end <= begin) return; + + FunctorType a_functor(m_functor); #pragma omp target teams distribute parallel for num_threads(128) \ map(to \ - : this->m_functor) - for (int i = begin; i < end; i++) m_functor(TagType(), i); + : a_functor) + for (int i = begin; i < end; i++) a_functor(TagType(), i); } inline ParallelFor(const FunctorType& arg_functor, Policy arg_policy) @@ -143,8 +532,11 @@ struct ParallelReduceSpecialize, const typename PolicyType::member_type begin = p.begin(); const typename PolicyType::member_type end = p.end(); + if (end <= begin) return; + ValueType result = ValueType(); -#pragma omp target teams distribute parallel for num_teams(512) map(to:f) map(tofrom:result) reduction(+: result) +#pragma omp target teams distribute parallel for num_teams(512) \ + map(to:f) map(tofrom:result) reduction(+: result) for (int i = begin; i < end; i++) f(i, result); *result_ptr = result; @@ -162,8 +554,12 @@ struct ParallelReduceSpecialize, const typename PolicyType::member_type begin = p.begin(); const typename PolicyType::member_type end = p.end(); + if (end <= begin) return; + ValueType result = ValueType(); -#pragma omp target teams distribute parallel for num_teams(512) map(to:f) map(tofrom: result) reduction(+: result) +#pragma omp target teams distribute parallel for \ + num_teams(512) map(to:f) map(tofrom: result) \ + reduction(+: result) for (int i = begin; i < end; i++) f(TagType(), i, result); *result_ptr = result; @@ -174,62 +570,73 @@ struct ParallelReduceSpecialize, execute_impl(f, p, ptr); } }; -/* -template struct ParallelReduceSpecialize { - #pragma omp declare reduction(custom: ValueType : ReducerType::join(omp_out, -omp_in)) initializer ( ReducerType::init(omp_priv) ) +template +struct ParallelReduceSpecialize { +#pragma omp declare reduction( \ + custom:ValueType \ + : OpenMPTargetReducerWrapper ::join(omp_out, omp_in)) \ + initializer(OpenMPTargetReducerWrapper ::init(omp_priv)) - template< class TagType > + template inline static - typename std::enable_if< std::is_same< TagType , void >::value >::type - execute_impl(const FunctorType& f, const PolicyType& p, PointerType -result_ptr) - { - OpenMPTargetExec::verify_is_process("Kokkos::Experimental::OpenMPTarget -parallel_for"); - OpenMPTargetExec::verify_initialized("Kokkos::Experimental::OpenMPTarget -parallel_for"); const typename PolicyType::member_type begin = p.begin(); const -typename PolicyType::member_type end = p.end(); - - ValueType result = ValueType(); - #pragma omp target teams distribute parallel for num_teams(512) map(to:f) -map(tofrom:result) reduction(custom: result) for(int i=begin; i::value>::type + execute_impl(const FunctorType& f, const PolicyType& p, + PointerType result_ptr) { + OpenMPTargetExec::verify_is_process( + "Kokkos::Experimental::OpenMPTarget parallel_for"); + OpenMPTargetExec::verify_initialized( + "Kokkos::Experimental::OpenMPTarget parallel_for"); + const typename PolicyType::member_type begin = p.begin(); + const typename PolicyType::member_type end = p.end(); + if (end <= begin) return; - template< class TagType > + ValueType result = ValueType(); + OpenMPTargetReducerWrapper::init(result); + +// clang-format off +#pragma omp target teams distribute parallel for num_teams(512) map(to: f) \ + map(tofrom: result) reduction(custom: result) + for (int i = begin; i < end; i++) f(i, result); + // clang-format on + + *result_ptr = result; + } + + template inline static - typename std::enable_if< ! std::is_same< TagType , void >::value >::type - execute_impl(const FunctorType& f, const PolicyType& p, PointerType -result_ptr) - { - OpenMPTargetExec::verify_is_process("Kokkos::Experimental::OpenMPTarget -parallel_for"); - OpenMPTargetExec::verify_initialized("Kokkos::Experimental::OpenMPTarget -parallel_for"); const typename PolicyType::member_type begin = p.begin(); const -typename PolicyType::member_type end = p.end(); - - ValueType result = ValueType(); - #pragma omp target teams distribute parallel for num_teams(512) map(to:f) -map(tofrom: result) reduction(custom: result) for(int i=begin; i::value>::type + execute_impl(const FunctorType& f, const PolicyType& p, + PointerType result_ptr) { + OpenMPTargetExec::verify_is_process( + "Kokkos::Experimental::OpenMPTarget parallel_for"); + OpenMPTargetExec::verify_initialized( + "Kokkos::Experimental::OpenMPTarget parallel_for"); + const typename PolicyType::member_type begin = p.begin(); + const typename PolicyType::member_type end = p.end(); + if (end <= begin) return; - inline static - void execute(const FunctorType& f, const PolicyType& p, PointerType ptr) { - execute_impl(f,p,ptr); - } + ValueType result = ValueType(); + OpenMPTargetReducerWrapper::init(result); + +// clang-format off +#pragma omp target teams distribute parallel for num_teams(512) map(to: f) \ + map(tofrom: result) reduction(custom: result) + for (int i = begin; i < end; i++) f(TagType(), i, result); +//clang format on + + *result_ptr = result; + } + + inline static void execute(const FunctorType& f, const PolicyType& p, + PointerType ptr) { + execute_impl(f, p, ptr); + } }; -*/ template class ParallelReduce, ReducerType, @@ -265,7 +672,7 @@ class ParallelReduce, ReducerType, typedef ParallelReduceSpecialize< FunctorType, Policy, ReducerType, pointer_type, typename ValueTraits::value_type, HasJoin, UseReducer> - ParForSpecialize; + ParReduceSpecialize; const FunctorType m_functor; const Policy m_policy; @@ -274,7 +681,7 @@ class ParallelReduce, ReducerType, public: inline void execute() const { - ParForSpecialize::execute(m_functor, m_policy, m_result_ptr); + ParReduceSpecialize::execute(m_functor, m_policy, m_result_ptr); } template @@ -283,28 +690,18 @@ class ParallelReduce, ReducerType, const ViewType& arg_result_view, typename std::enable_if::value && !Kokkos::is_reducer_type::value, - void*>::type = NULL) + void*>::type = nullptr) : m_functor(arg_functor), m_policy(arg_policy), m_reducer(InvalidType()), - m_result_ptr(arg_result_view.data()) { - /*static_assert( std::is_same< typename ViewType::memory_space - , Kokkos::HostSpace >::value - , "Reduction result on Kokkos::Experimental::OpenMPTarget must be a - Kokkos::View in HostSpace" );*/ - } + m_result_ptr(arg_result_view.data()) {} 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.result_view().data()) { - /*static_assert( std::is_same< typename ViewType::memory_space - , Kokkos::HostSpace >::value - , "Reduction result on Kokkos::Experimental::OpenMPTarget must be a - Kokkos::View in HostSpace" );*/ - } + m_result_ptr(reducer.view().data()) {} }; } // namespace Impl @@ -488,10 +885,11 @@ class ParallelFor, 0, 0); void* scratch_ptr = OpenMPTargetExec::get_scratch_ptr(); + FunctorType a_functor(m_functor); #pragma omp target teams distribute parallel for num_teams(league_size) \ num_threads(team_size* vector_length) schedule(static, 1) \ map(to \ - : this->m_functor, scratch_ptr) + : a_functor, scratch_ptr) for (int i = 0; i < league_size * team_size * vector_length; i++) { typename Policy::member_type team(i / (team_size * vector_length), league_size, team_size, vector_length, @@ -513,6 +911,7 @@ class ParallelFor, const int nteams = OpenMPTargetExec::MAX_ACTIVE_TEAMS < league_size ? OpenMPTargetExec::MAX_ACTIVE_TEAMS : league_size; + FunctorType a_functor(m_functor); OpenMPTargetExec::resize_scratch(0, Policy::member_type::TEAM_REDUCE_SIZE, 0, 0); @@ -520,7 +919,7 @@ class ParallelFor, #pragma omp target teams distribute parallel for num_teams(league_size) \ num_threads(team_size* vector_length) schedule(static, 1) \ map(to \ - : this->m_functor, scratch_ptr) + : a_functor, scratch_ptr) for (int i = 0; i < league_size; i++) { typename Policy::member_type team(i / (team_size * vector_length), league_size, team_size, vector_length, @@ -663,7 +1062,7 @@ class ParallelReduce, public: inline void execute() const { - ParForSpecialize::execute(m_functor, m_policy, m_result_ptr); + // ParForSpecialize::execute(m_functor, m_policy, m_result_ptr); } template @@ -672,11 +1071,11 @@ class ParallelReduce, const ViewType& arg_result, typename std::enable_if::value && !Kokkos::is_reducer_type::value, - void*>::type = NULL) + void*>::type = nullptr) : m_functor(arg_functor), m_policy(arg_policy), m_reducer(InvalidType()), - m_result_ptr(arg_result.ptr_on_device()), + m_result_ptr(arg_result.data()), m_shmem_size(arg_policy.scratch_size(0) + arg_policy.scratch_size(1) + FunctorTeamShmemSize::value( arg_functor, arg_policy.team_size())) {} @@ -686,7 +1085,7 @@ class ParallelReduce, : m_functor(arg_functor), m_policy(arg_policy), m_reducer(reducer), - m_result_ptr(reducer.result_view().data()), + m_result_ptr(reducer.view().data()), m_shmem_size(arg_policy.scratch_size(0) + arg_policy.scratch_size(1) + FunctorTeamShmemSize::value( arg_functor, arg_policy.team_size())) { diff --git a/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTarget_Parallel_MDRange.hpp b/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTarget_Parallel_MDRange.hpp new file mode 100644 index 0000000000..4ce2dee122 --- /dev/null +++ b/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTarget_Parallel_MDRange.hpp @@ -0,0 +1,549 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// 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 NTESS "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 NTESS 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_OPENMPTARGET_PARALLEL_MDRANGE_HPP +#define KOKKOS_OPENMPTARGET_PARALLEL_MDRANGE_HPP + +#include +#include +#include +#include +#include + +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- + +namespace Kokkos { +namespace Impl { + +template +class ParallelFor, + Kokkos::Experimental::OpenMPTarget> { + private: + typedef Kokkos::MDRangePolicy Policy; + typedef typename Policy::work_tag WorkTag; + typedef typename Policy::member_type Member; + + const FunctorType m_functor; + const Policy m_policy; + + public: + inline void execute() const { + OpenMPTargetExec::verify_is_process( + "Kokkos::Experimental::OpenMPTarget parallel_for"); + OpenMPTargetExec::verify_initialized( + "Kokkos::Experimental::OpenMPTarget parallel_for"); + const int64_t begin = 0; + const int64_t end = m_policy.m_num_tiles; + FunctorType functor(m_functor); + Policy policy = m_policy; +#pragma omp target teams distribute map(to : functor) num_teams(end - begin) + { + for (ptrdiff_t tile_idx = begin; tile_idx < end; tile_idx++) { +#pragma omp parallel + { + typename Policy::point_type offset; + if (Policy::outer_direction == Policy::Left) { + for (int i = 0; i < Policy::rank; ++i) { + offset[i] = (tile_idx % policy.m_tile_end[i]) * policy.m_tile[i] + + policy.m_lower[i]; + tile_idx /= policy.m_tile_end[i]; + } + } else { + for (int i = Policy::rank - 1; i >= 0; --i) { + offset[i] = (tile_idx % policy.m_tile_end[i]) * policy.m_tile[i] + + policy.m_lower[i]; + tile_idx /= policy.m_tile_end[i]; + } + } + execute_tile(offset, functor, policy); + } + } + } + } + + template + inline typename std::enable_if::type execute_tile( + typename Policy::point_type offset, const FunctorType& functor, + const Policy& policy) const { + const ptrdiff_t begin_0 = offset[0]; + ptrdiff_t end_0 = begin_0 + policy.m_tile[0]; + end_0 = end_0 < policy.m_upper[0] ? end_0 : policy.m_upper[0]; +#pragma omp for + for (ptrdiff_t i0 = begin_0; i0 < end_0; i0++) { + functor(i0); + } + } + + template + inline typename std::enable_if::type execute_tile( + typename Policy::point_type offset, const FunctorType& functor, + const Policy& policy) const { + const ptrdiff_t begin_0 = offset[0]; + ptrdiff_t end_0 = begin_0 + policy.m_tile[0]; + end_0 = end_0 < policy.m_upper[0] ? end_0 : policy.m_upper[0]; + + const ptrdiff_t begin_1 = offset[1]; + ptrdiff_t end_1 = begin_1 + policy.m_tile[1]; + end_1 = end_1 < policy.m_upper[1] ? end_1 : policy.m_upper[1]; + +#pragma omp for collapse(2) + for (ptrdiff_t i0 = begin_0; i0 < end_0; i0++) + for (ptrdiff_t i1 = begin_1; i1 < end_1; i1++) functor(i0, i1); + } + + template + inline typename std::enable_if::type execute_tile( + typename Policy::point_type offset, const FunctorType& functor, + const Policy& policy) const { + const ptrdiff_t begin_0 = offset[0]; + ptrdiff_t end_0 = begin_0 + policy.m_tile[0]; + end_0 = end_0 < policy.m_upper[0] ? end_0 : policy.m_upper[0]; + + const ptrdiff_t begin_1 = offset[1]; + ptrdiff_t end_1 = begin_1 + policy.m_tile[1]; + end_1 = end_1 < policy.m_upper[1] ? end_1 : policy.m_upper[1]; + + const ptrdiff_t begin_2 = offset[2]; + ptrdiff_t end_2 = begin_2 + policy.m_tile[2]; + end_2 = end_2 < policy.m_upper[2] ? end_2 : policy.m_upper[2]; + +#pragma omp for collapse(3) + for (ptrdiff_t i0 = begin_0; i0 < end_0; i0++) + for (ptrdiff_t i1 = begin_1; i1 < end_1; i1++) + for (ptrdiff_t i2 = begin_2; i2 < end_2; i2++) functor(i0, i1, i2); + } + + template + inline typename std::enable_if::type execute_tile( + typename Policy::point_type offset, const FunctorType& functor, + const Policy& policy) const { + const ptrdiff_t begin_0 = offset[0]; + ptrdiff_t end_0 = begin_0 + policy.m_tile[0]; + end_0 = end_0 < policy.m_upper[0] ? end_0 : policy.m_upper[0]; + + const ptrdiff_t begin_1 = offset[1]; + ptrdiff_t end_1 = begin_1 + policy.m_tile[1]; + end_1 = end_1 < policy.m_upper[1] ? end_1 : policy.m_upper[1]; + + const ptrdiff_t begin_2 = offset[2]; + ptrdiff_t end_2 = begin_2 + policy.m_tile[2]; + end_2 = end_2 < policy.m_upper[2] ? end_2 : policy.m_upper[2]; + + const ptrdiff_t begin_3 = offset[3]; + ptrdiff_t end_3 = begin_3 + policy.m_tile[3]; + end_3 = end_3 < policy.m_upper[3] ? end_3 : policy.m_upper[3]; + +#pragma omp for collapse(4) + for (ptrdiff_t i0 = begin_0; i0 < end_0; i0++) + for (ptrdiff_t i1 = begin_1; i1 < end_1; i1++) + for (ptrdiff_t i2 = begin_2; i2 < end_2; i2++) + for (ptrdiff_t i3 = begin_3; i3 < end_3; i3++) + functor(i0, i1, i2, i3); + } + + template + inline typename std::enable_if::type execute_tile( + typename Policy::point_type offset, const FunctorType& functor, + const Policy& policy) const { + const ptrdiff_t begin_0 = offset[0]; + ptrdiff_t end_0 = begin_0 + policy.m_tile[0]; + end_0 = end_0 < policy.m_upper[0] ? end_0 : policy.m_upper[0]; + + const ptrdiff_t begin_1 = offset[1]; + ptrdiff_t end_1 = begin_1 + policy.m_tile[1]; + end_1 = end_1 < policy.m_upper[1] ? end_1 : policy.m_upper[1]; + + const ptrdiff_t begin_2 = offset[2]; + ptrdiff_t end_2 = begin_2 + policy.m_tile[2]; + end_2 = end_2 < policy.m_upper[2] ? end_2 : policy.m_upper[2]; + + const ptrdiff_t begin_3 = offset[3]; + ptrdiff_t end_3 = begin_3 + policy.m_tile[3]; + end_3 = end_3 < policy.m_upper[3] ? end_3 : policy.m_upper[3]; + + const ptrdiff_t begin_4 = offset[4]; + ptrdiff_t end_4 = begin_4 + policy.m_tile[4]; + end_4 = end_4 < policy.m_upper[4] ? end_4 : policy.m_upper[4]; + +#pragma omp for collapse(5) + for (ptrdiff_t i0 = begin_0; i0 < end_0; i0++) + for (ptrdiff_t i1 = begin_1; i1 < end_1; i1++) + for (ptrdiff_t i2 = begin_2; i2 < end_2; i2++) + for (ptrdiff_t i3 = begin_3; i3 < end_3; i3++) + for (ptrdiff_t i4 = begin_4; i4 < end_4; i4++) + functor(i0, i1, i2, i3, i4); + } + + template + inline typename std::enable_if::type execute_tile( + typename Policy::point_type offset, const FunctorType& functor, + const Policy& policy) const { + const ptrdiff_t begin_0 = offset[0]; + ptrdiff_t end_0 = begin_0 + policy.m_tile[0]; + end_0 = end_0 < policy.m_upper[0] ? end_0 : policy.m_upper[0]; + + const ptrdiff_t begin_1 = offset[1]; + ptrdiff_t end_1 = begin_1 + policy.m_tile[1]; + end_1 = end_1 < policy.m_upper[1] ? end_1 : policy.m_upper[1]; + + const ptrdiff_t begin_2 = offset[2]; + ptrdiff_t end_2 = begin_2 + policy.m_tile[2]; + end_2 = end_2 < policy.m_upper[2] ? end_2 : policy.m_upper[2]; + + const ptrdiff_t begin_3 = offset[3]; + ptrdiff_t end_3 = begin_3 + policy.m_tile[3]; + end_3 = end_3 < policy.m_upper[3] ? end_3 : policy.m_upper[3]; + + const ptrdiff_t begin_4 = offset[4]; + ptrdiff_t end_4 = begin_4 + policy.m_tile[4]; + end_4 = end_4 < policy.m_upper[4] ? end_4 : policy.m_upper[4]; + + const ptrdiff_t begin_5 = offset[5]; + ptrdiff_t end_5 = begin_5 + policy.m_tile[5]; + end_5 = end_5 < policy.m_upper[5] ? end_5 : policy.m_upper[5]; + +#pragma omp for collapse(6) + for (ptrdiff_t i0 = begin_0; i0 < end_0; i0++) + for (ptrdiff_t i1 = begin_1; i1 < end_1; i1++) + for (ptrdiff_t i2 = begin_2; i2 < end_2; i2++) + for (ptrdiff_t i3 = begin_3; i3 < end_3; i3++) + for (ptrdiff_t i4 = begin_4; i4 < end_4; i4++) + for (ptrdiff_t i5 = begin_5; i5 < end_5; i5++) + functor(i0, i1, i2, i3, i4, i5); + } + + template + inline typename std::enable_if::type execute_tile( + typename Policy::point_type offset, const FunctorType& functor, + const Policy& policy) const { + const ptrdiff_t begin_0 = offset[0]; + ptrdiff_t end_0 = begin_0 + policy.m_tile[0]; + end_0 = end_0 < policy.m_upper[0] ? end_0 : policy.m_upper[0]; + + const ptrdiff_t begin_1 = offset[1]; + ptrdiff_t end_1 = begin_1 + policy.m_tile[1]; + end_1 = end_1 < policy.m_upper[1] ? end_1 : policy.m_upper[1]; + + const ptrdiff_t begin_2 = offset[2]; + ptrdiff_t end_2 = begin_2 + policy.m_tile[2]; + end_2 = end_2 < policy.m_upper[2] ? end_2 : policy.m_upper[2]; + + const ptrdiff_t begin_3 = offset[3]; + ptrdiff_t end_3 = begin_3 + policy.m_tile[3]; + end_3 = end_3 < policy.m_upper[3] ? end_3 : policy.m_upper[3]; + + const ptrdiff_t begin_4 = offset[4]; + ptrdiff_t end_4 = begin_4 + policy.m_tile[4]; + end_4 = end_4 < policy.m_upper[4] ? end_4 : policy.m_upper[4]; + + const ptrdiff_t begin_5 = offset[5]; + ptrdiff_t end_5 = begin_5 + policy.m_tile[5]; + end_5 = end_5 < policy.m_upper[5] ? end_5 : policy.m_upper[5]; + + const ptrdiff_t begin_6 = offset[6]; + ptrdiff_t end_6 = begin_6 + policy.m_tile[6]; + end_6 = end_6 < policy.m_upper[6] ? end_6 : policy.m_upper[6]; + +#pragma omp for collapse(7) + for (ptrdiff_t i0 = begin_0; i0 < end_0; i0++) + for (ptrdiff_t i1 = begin_1; i1 < end_1; i1++) + for (ptrdiff_t i2 = begin_2; i2 < end_2; i2++) + for (ptrdiff_t i3 = begin_3; i3 < end_3; i3++) + for (ptrdiff_t i4 = begin_4; i4 < end_4; i4++) + for (ptrdiff_t i5 = begin_5; i5 < end_5; i5++) + for (ptrdiff_t i6 = begin_6; i6 < end_6; i6++) + functor(i0, i1, i2, i3, i4, i5, i6); + } + + template + inline typename std::enable_if::type execute_tile( + typename Policy::point_type offset, const FunctorType& functor, + const Policy& policy) const { + const ptrdiff_t begin_0 = offset[0]; + ptrdiff_t end_0 = begin_0 + policy.m_tile[0]; + end_0 = end_0 < policy.m_upper[0] ? end_0 : policy.m_upper[0]; + + const ptrdiff_t begin_1 = offset[1]; + ptrdiff_t end_1 = begin_1 + policy.m_tile[1]; + end_1 = end_1 < policy.m_upper[1] ? end_1 : policy.m_upper[1]; + + const ptrdiff_t begin_2 = offset[2]; + ptrdiff_t end_2 = begin_2 + policy.m_tile[2]; + end_2 = end_2 < policy.m_upper[2] ? end_2 : policy.m_upper[2]; + + const ptrdiff_t begin_3 = offset[3]; + ptrdiff_t end_3 = begin_3 + policy.m_tile[3]; + end_3 = end_3 < policy.m_upper[3] ? end_3 : policy.m_upper[3]; + + const ptrdiff_t begin_4 = offset[4]; + ptrdiff_t end_4 = begin_4 + policy.m_tile[4]; + end_4 = end_4 < policy.m_upper[4] ? end_4 : policy.m_upper[4]; + + const ptrdiff_t begin_5 = offset[5]; + ptrdiff_t end_5 = begin_5 + policy.m_tile[5]; + end_5 = end_5 < policy.m_upper[5] ? end_5 : policy.m_upper[5]; + + const ptrdiff_t begin_6 = offset[6]; + ptrdiff_t end_6 = begin_6 + policy.m_tile[6]; + end_6 = end_6 < policy.m_upper[6] ? end_6 : policy.m_upper[6]; + + const ptrdiff_t begin_7 = offset[7]; + ptrdiff_t end_7 = begin_7 + policy.m_tile[7]; + end_7 = end_7 < policy.m_upper[7] ? end_7 : policy.m_upper[7]; + +#pragma omp for collapse(8) + for (ptrdiff_t i0 = begin_0; i0 < end_0; i0++) + for (ptrdiff_t i1 = begin_1; i1 < end_1; i1++) + for (ptrdiff_t i2 = begin_2; i2 < end_2; i2++) + for (ptrdiff_t i3 = begin_3; i3 < end_3; i3++) + for (ptrdiff_t i4 = begin_4; i4 < end_4; i4++) + for (ptrdiff_t i5 = begin_5; i5 < end_5; i5++) + for (ptrdiff_t i6 = begin_6; i6 < end_6; i6++) + for (ptrdiff_t i7 = begin_7; i7 < end_7; i7++) + functor(i0, i1, i2, i3, i4, i5, i6, i7); + } + + inline ParallelFor(const FunctorType& arg_functor, Policy arg_policy) + : m_functor(arg_functor), m_policy(arg_policy) {} +}; + +} // namespace Impl +} // namespace Kokkos + +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- + +namespace Kokkos { +namespace Impl { + +template +struct ParallelReduceSpecialize, + ReducerType, PointerType, ValueType, 0, 0> { + typedef Kokkos::RangePolicy PolicyType; + template + inline static + typename std::enable_if::value>::type + execute_impl(const FunctorType& f, const PolicyType& p, + PointerType result_ptr) { + OpenMPTargetExec::verify_is_process( + "Kokkos::Experimental::OpenMPTarget parallel_for"); + OpenMPTargetExec::verify_initialized( + "Kokkos::Experimental::OpenMPTarget parallel_for"); + const typename PolicyType::member_type begin = p.begin(); + const typename PolicyType::member_type end = p.end(); + + ValueType result = ValueType(); +#pragma omp target teams distribute parallel for num_teams(512) map(to:f) map(tofrom:result) reduction(+: result) + for (int i = begin; i < end; i++) f(i, result); + + *result_ptr = result; + } + + template + inline static + typename std::enable_if::value>::type + execute_impl(const FunctorType& f, const PolicyType& p, + PointerType result_ptr) { + OpenMPTargetExec::verify_is_process( + "Kokkos::Experimental::OpenMPTarget parallel_for"); + OpenMPTargetExec::verify_initialized( + "Kokkos::Experimental::OpenMPTarget parallel_for"); + const typename PolicyType::member_type begin = p.begin(); + const typename PolicyType::member_type end = p.end(); + + ValueType result = ValueType(); +#pragma omp target teams distribute parallel for num_teams(512) map(to:f) map(tofrom: result) reduction(+: result) + for (int i = begin; i < end; i++) f(TagType(), i, result); + + *result_ptr = result; + } + + inline static void execute(const FunctorType& f, const PolicyType& p, + PointerType ptr) { + execute_impl(f, p, ptr); + } +}; +/* +template struct ParallelReduceSpecialize { + + #pragma omp declare reduction(custom: ValueType : ReducerType::join(omp_out, +omp_in)) initializer ( ReducerType::init(omp_priv) ) + + template< class TagType > + inline static + typename std::enable_if< std::is_same< TagType , void >::value >::type + execute_impl(const FunctorType& f, const PolicyType& p, PointerType +result_ptr) + { + OpenMPTargetExec::verify_is_process("Kokkos::Experimental::OpenMPTarget +parallel_for"); + OpenMPTargetExec::verify_initialized("Kokkos::Experimental::OpenMPTarget +parallel_for"); const typename PolicyType::member_type begin = p.begin(); const +typename PolicyType::member_type end = p.end(); + + ValueType result = ValueType(); + #pragma omp target teams distribute parallel for num_teams(512) map(to:f) +map(tofrom:result) reduction(custom: result) for(int i=begin; i + inline static + typename std::enable_if< ! std::is_same< TagType , void >::value >::type + execute_impl(const FunctorType& f, const PolicyType& p, PointerType +result_ptr) + { + OpenMPTargetExec::verify_is_process("Kokkos::Experimental::OpenMPTarget +parallel_for"); + OpenMPTargetExec::verify_initialized("Kokkos::Experimental::OpenMPTarget +parallel_for"); const typename PolicyType::member_type begin = p.begin(); const +typename PolicyType::member_type end = p.end(); + + ValueType result = ValueType(); + #pragma omp target teams distribute parallel for num_teams(512) map(to:f) +map(tofrom: result) reduction(custom: result) for(int i=begin; i(f,p,ptr); + } +}; + + +template +class ParallelReduce, ReducerType, + Kokkos::Experimental::OpenMPTarget> { + private: + typedef Kokkos::MDRangePolicy Policy; + + typedef typename Policy::work_tag WorkTag; + typedef typename Policy::WorkRange WorkRange; + typedef typename Policy::member_type Member; + + typedef Kokkos::Impl::if_c::value, + FunctorType, ReducerType> + ReducerConditional; + typedef typename ReducerConditional::type ReducerTypeFwd; + typedef + typename Kokkos::Impl::if_c::value, + WorkTag, void>::type WorkTagFwd; + + // Static Assert WorkTag void if ReducerType not InvalidType + + typedef Kokkos::Impl::FunctorValueTraits + ValueTraits; + typedef Kokkos::Impl::FunctorValueInit ValueInit; + typedef Kokkos::Impl::FunctorValueJoin ValueJoin; + + enum { HasJoin = ReduceFunctorHasJoin::value }; + enum { UseReducer = is_reducer_type::value }; + + typedef typename ValueTraits::pointer_type pointer_type; + typedef typename ValueTraits::reference_type reference_type; + + typedef ParallelReduceSpecialize< + FunctorType, Policy, ReducerType, pointer_type, + typename ValueTraits::value_type, HasJoin, UseReducer> + ParForSpecialize; + + const FunctorType m_functor; + const Policy m_policy; + const ReducerType m_reducer; + const pointer_type m_result_ptr; + + public: + inline void execute() const { + ParForSpecialize::execute(m_functor, m_policy, m_result_ptr); + } + + template + inline ParallelReduce( + const FunctorType& arg_functor, Policy arg_policy, + const ViewType& arg_result_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_result_view.data()) { + //static_assert( std::is_same< typename ViewType::memory_space + // , Kokkos::HostSpace >::value + // , "Reduction result on Kokkos::Experimental::OpenMPTarget must be a + // Kokkos::View in HostSpace" ); + } + + 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()) { + //static_assert( std::is_same< typename ViewType::memory_space + // , Kokkos::HostSpace >::value + // , "Reduction result on Kokkos::Experimental::OpenMPTarget must be a + // Kokkos::View in HostSpace" ); + } +};*/ + +} // namespace Impl +} // namespace Kokkos + +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- + +#endif /* KOKKOS_OPENMPTARGET_PARALLEL_HPP */ diff --git a/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTarget_Task.hpp b/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTarget_Task.hpp index a40ec19e79..19956dad2e 100644 --- a/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTarget_Task.hpp +++ b/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTarget_Task.hpp @@ -113,7 +113,7 @@ class TaskExec { public: #if defined(KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_HOST) void* team_shared() const { - return m_team_exec ? m_team_exec->scratch_thread() : (void*)0; + return m_team_exec ? m_team_exec->scratch_thread() : nullptr; } int team_shared_size() const { diff --git a/lib/kokkos/core/src/Qthreads/Kokkos_QthreadsExec.cpp b/lib/kokkos/core/src/Qthreads/Kokkos_QthreadsExec.cpp deleted file mode 100644 index 4372f3ce80..0000000000 --- a/lib/kokkos/core/src/Qthreads/Kokkos_QthreadsExec.cpp +++ /dev/null @@ -1,535 +0,0 @@ -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// 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 NTESS "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 NTESS 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_QTHREADS) - -#include - -#include -#include -#include -#include -#include - -#include -#include -#include - -// Defines to enable experimental Qthreads functionality. -//#define QTHREAD_LOCAL_PRIORITY -//#define CLONED_TASKS - -//#include - -//---------------------------------------------------------------------------- - -namespace Kokkos { - -namespace Impl { - -namespace { - -enum { MAXIMUM_QTHREADS_WORKERS = 1024 }; - -/** s_exec is indexed by the reverse rank of the workers - * for faster fan-in / fan-out lookups - * [ n - 1, n - 2, ..., 0 ] - */ -QthreadsExec *s_exec[MAXIMUM_QTHREADS_WORKERS]; - -int s_number_shepherds = 0; -int s_number_workers_per_shepherd = 0; -int s_number_workers = 0; - -inline QthreadsExec **worker_exec() { - return s_exec + s_number_workers - - (qthread_shep() * s_number_workers_per_shepherd + - qthread_worker_local(NULL) + 1); -} - -const int s_base_size = QthreadsExec::align_alloc(sizeof(QthreadsExec)); - -int s_worker_reduce_end = 0; // End of worker reduction memory. -int s_worker_shared_end = 0; // Total of worker scratch memory. -int s_worker_shared_begin = 0; // Beginning of worker shared memory. - -QthreadsExecFunctionPointer volatile s_active_function = 0; -const void *volatile s_active_function_arg = 0; - -} // namespace - -} // namespace Impl - -} // namespace Kokkos - -//---------------------------------------------------------------------------- - -namespace Kokkos { - -int Qthreads::is_initialized() { return Impl::s_number_workers != 0; } - -int Qthreads::concurrency() { return Impl::s_number_workers_per_shepherd; } - -int Qthreads::in_parallel() { return Impl::s_active_function != 0; } - -void Qthreads::initialize(int thread_count) { - // Environment variable: QTHREAD_NUM_SHEPHERDS - // Environment variable: QTHREAD_NUM_WORKERS_PER_SHEP - // Environment variable: QTHREAD_HWPAR - - { - char buffer[256]; - snprintf(buffer, sizeof(buffer), "QTHREAD_HWPAR=%d", thread_count); - putenv(buffer); - } - - const bool ok_init = - (QTHREAD_SUCCESS == qthread_initialize()) && - (thread_count == - qthread_num_shepherds() * qthread_num_workers_local(NO_SHEPHERD)) && - (thread_count == qthread_num_workers()); - - bool ok_symmetry = true; - - if (ok_init) { - Impl::s_number_shepherds = qthread_num_shepherds(); - Impl::s_number_workers_per_shepherd = - qthread_num_workers_local(NO_SHEPHERD); - Impl::s_number_workers = - Impl::s_number_shepherds * Impl::s_number_workers_per_shepherd; - - for (int i = 0; ok_symmetry && i < Impl::s_number_shepherds; ++i) { - ok_symmetry = - (Impl::s_number_workers_per_shepherd == qthread_num_workers_local(i)); - } - } - - if (!ok_init || !ok_symmetry) { - std::ostringstream msg; - - msg << "Kokkos::Qthreads::initialize(" << thread_count << ") FAILED"; - msg << " : qthread_num_shepherds = " << qthread_num_shepherds(); - msg << " : qthread_num_workers_per_shepherd = " - << qthread_num_workers_local(NO_SHEPHERD); - msg << " : qthread_num_workers = " << qthread_num_workers(); - - if (!ok_symmetry) { - msg << " : qthread_num_workers_local = {"; - for (int i = 0; i < Impl::s_number_shepherds; ++i) { - msg << " " << qthread_num_workers_local(i); - } - msg << " }"; - } - - Impl::s_number_workers = 0; - Impl::s_number_shepherds = 0; - Impl::s_number_workers_per_shepherd = 0; - - if (ok_init) { - qthread_finalize(); - } - - Kokkos::Impl::throw_runtime_exception(msg.str()); - } - - Impl::QthreadsExec::resize_worker_scratch(256, 256); - - // Init the array for used for arbitrarily sized atomics. - Impl::init_lock_array_host_space(); -} - -void Qthreads::finalize() { - Impl::QthreadsExec::clear_workers(); - - if (Impl::s_number_workers) { - qthread_finalize(); - } - - Impl::s_number_workers = 0; - Impl::s_number_shepherds = 0; - Impl::s_number_workers_per_shepherd = 0; -} - -void Qthreads::print_configuration(std::ostream &s, const bool detail) { - s << "Kokkos::Qthreads {" - << " num_shepherds(" << Impl::s_number_shepherds << ")" - << " num_workers_per_shepherd(" << Impl::s_number_workers_per_shepherd - << ")" - << " }" << std::endl; -} - -Qthreads &Qthreads::instance(int) { - static Qthreads q; - return q; -} - -void Qthreads::fence() {} - -int Qthreads::shepherd_size() const { return Impl::s_number_shepherds; } -int Qthreads::shepherd_worker_size() const { - return Impl::s_number_workers_per_shepherd; -} - -const char *Qthreads::name() { return "Qthreads"; } - -} // namespace Kokkos - -//---------------------------------------------------------------------------- - -namespace Kokkos { - -namespace Impl { - -namespace { - -aligned_t driver_exec_all(void *arg) { - QthreadsExec &exec = **worker_exec(); - - (*s_active_function)(exec, s_active_function_arg); - - /* - fprintf( stdout - , "QthreadsExec driver worker(%d:%d) shepherd(%d:%d) - shepherd_worker(%d:%d) done\n" , exec.worker_rank() , exec.worker_size() , - exec.shepherd_rank() , exec.shepherd_size() , exec.shepherd_worker_rank() , - exec.shepherd_worker_size() - ); - fflush(stdout); - */ - - return 0; -} - -aligned_t driver_resize_worker_scratch(void *arg) { - static volatile int lock_begin = 0; - static volatile int lock_end = 0; - - QthreadsExec **const exec = worker_exec(); - - //---------------------------------------- - // Serialize allocation for thread safety. - - while (!atomic_compare_exchange_strong(&lock_begin, 0, 1)) - ; // Spin wait to claim lock. - - const bool ok = 0 == *exec; - - if (ok) { - *exec = (QthreadsExec *)malloc(s_base_size + s_worker_shared_end); - } - - lock_begin = 0; // Release lock. - - if (ok) { - new (*exec) QthreadsExec(); - } - - //---------------------------------------- - // Wait for all calls to complete to insure that each worker has executed. - - if (s_number_workers == 1 + atomic_fetch_add(&lock_end, 1)) { - lock_end = 0; - } - - while (lock_end) - ; - - /* - fprintf( stdout - , "QthreadsExec resize worker(%d:%d) shepherd(%d:%d) - shepherd_worker(%d:%d) done\n" , (**exec).worker_rank() , - (**exec).worker_size() , (**exec).shepherd_rank() , (**exec).shepherd_size() - , (**exec).shepherd_worker_rank() - , (**exec).shepherd_worker_size() - ); - fflush(stdout); - */ - - //---------------------------------------- - - if (!ok) { - fprintf(stderr, "Kokkos::QthreadsExec resize failed\n"); - fflush(stderr); - } - - return 0; -} - -void verify_is_process(const char *const label, bool not_active = false) { - const bool not_process = - 0 != qthread_shep() || 0 != qthread_worker_local(NULL); - const bool is_active = - not_active && (s_active_function || s_active_function_arg); - - if (not_process || is_active) { - std::string msg(label); - msg.append(" : FAILED"); - if (not_process) msg.append(" : not called by main process"); - if (is_active) msg.append(" : parallel execution in progress"); - Kokkos::Impl::throw_runtime_exception(msg); - } -} - -} // namespace - -int QthreadsExec::worker_per_shepherd() { - return s_number_workers_per_shepherd; -} - -QthreadsExec::QthreadsExec() { - const int shepherd_rank = qthread_shep(); - const int shepherd_worker_rank = qthread_worker_local(NULL); - const int worker_rank = - shepherd_rank * s_number_workers_per_shepherd + shepherd_worker_rank; - - m_worker_base = s_exec; - m_shepherd_base = s_exec + s_number_workers_per_shepherd * - ((s_number_shepherds - (shepherd_rank + 1))); - m_scratch_alloc = ((unsigned char *)this) + s_base_size; - m_reduce_end = s_worker_reduce_end; - m_shepherd_rank = shepherd_rank; - m_shepherd_size = s_number_shepherds; - m_shepherd_worker_rank = shepherd_worker_rank; - m_shepherd_worker_size = s_number_workers_per_shepherd; - m_worker_rank = worker_rank; - m_worker_size = s_number_workers; - m_worker_state = QthreadsExec::Active; -} - -void QthreadsExec::clear_workers() { - for (int iwork = 0; iwork < s_number_workers; ++iwork) { - QthreadsExec *const exec = s_exec[iwork]; - s_exec[iwork] = 0; - free(exec); - } -} - -void QthreadsExec::shared_reset(Qthreads::scratch_memory_space &space) { - new (&space) Qthreads::scratch_memory_space( - ((unsigned char *)(**m_shepherd_base).m_scratch_alloc) + - s_worker_shared_begin, - s_worker_shared_end - s_worker_shared_begin); -} - -void QthreadsExec::resize_worker_scratch(const int reduce_size, - const int shared_size) { - const int exec_all_reduce_alloc = align_alloc(reduce_size); - const int shepherd_scan_alloc = align_alloc(8); - const int shepherd_shared_end = - exec_all_reduce_alloc + shepherd_scan_alloc + align_alloc(shared_size); - - if (s_worker_reduce_end < exec_all_reduce_alloc || - s_worker_shared_end < shepherd_shared_end) { - /* - fprintf( stdout, "QthreadsExec::resize\n"); - fflush(stdout); - */ - - // Clear current worker memory before allocating new worker memory. - clear_workers(); - - // Increase the buffers to an aligned allocation. - s_worker_reduce_end = exec_all_reduce_alloc; - s_worker_shared_begin = exec_all_reduce_alloc + shepherd_scan_alloc; - s_worker_shared_end = shepherd_shared_end; - - // Need to query which shepherd this main 'process' is running. - - const int main_shep = qthread_shep(); - - // Have each worker resize its memory for proper first-touch. -#if 0 - for ( int jshep = 0; jshep < s_number_shepherds; ++jshep ) { - for ( int i = jshep != main_shep ? 0 : 1; i < s_number_workers_per_shepherd; ++i ) { - qthread_fork_to( driver_resize_worker_scratch, NULL, NULL, jshep ); - } - } -#else - // If this function is used before the 'qthreads.task_policy' unit test, - // the 'qthreads.task_policy' unit test fails with a seg-fault within - // libqthread.so. - for (int jshep = 0; jshep < s_number_shepherds; ++jshep) { - const int num_clone = jshep != main_shep - ? s_number_workers_per_shepherd - : s_number_workers_per_shepherd - 1; - - if (num_clone) { - const int ret = qthread_fork_clones_to_local_priority( - driver_resize_worker_scratch // Function - , - NULL // Function data block - , - NULL // Pointer to return value feb - , - jshep // Shepherd number - , - num_clone - 1 // Number of instances - 1 - ); - - assert(ret == QTHREAD_SUCCESS); - } - } -#endif - - driver_resize_worker_scratch(NULL); - - // Verify all workers allocated. - - bool ok = true; - for (int iwork = 0; ok && iwork < s_number_workers; ++iwork) { - ok = 0 != s_exec[iwork]; - } - - if (!ok) { - std::ostringstream msg; - msg << "Kokkos::Impl::QthreadsExec::resize : FAILED for workers {"; - for (int iwork = 0; iwork < s_number_workers; ++iwork) { - if (0 == s_exec[iwork]) { - msg << " " << (s_number_workers - (iwork + 1)); - } - } - msg << " }"; - Kokkos::Impl::throw_runtime_exception(msg.str()); - } - } -} - -void QthreadsExec::exec_all(Qthreads &, QthreadsExecFunctionPointer func, - const void *arg) { - verify_is_process("QthreadsExec::exec_all(...)", true); - - /* - fprintf( stdout, "QthreadsExec::exec_all\n"); - fflush(stdout); - */ - - s_active_function = func; - s_active_function_arg = arg; - - // Need to query which shepherd this main 'process' is running. - - const int main_shep = qthread_shep(); - -#if 0 - for ( int jshep = 0, iwork = 0; jshep < s_number_shepherds; ++jshep ) { - for ( int i = jshep != main_shep ? 0 : 1; i < s_number_workers_per_shepherd; ++i, ++iwork ) { - qthread_fork_to( driver_exec_all, NULL, NULL, jshep ); - } - } -#else - // If this function is used before the 'qthreads.task_policy' unit test, - // the 'qthreads.task_policy' unit test fails with a seg-fault within - // libqthread.so. - for (int jshep = 0; jshep < s_number_shepherds; ++jshep) { - const int num_clone = jshep != main_shep - ? s_number_workers_per_shepherd - : s_number_workers_per_shepherd - 1; - - if (num_clone) { - const int ret = qthread_fork_clones_to_local_priority( - driver_exec_all // Function - , - NULL // Function data block - , - NULL // Pointer to return value feb - , - jshep // Shepherd number - , - num_clone - 1 // Number of instances - 1 - ); - - assert(ret == QTHREAD_SUCCESS); - } - } -#endif - - driver_exec_all(NULL); - - s_active_function = 0; - s_active_function_arg = 0; -} - -void *QthreadsExec::exec_all_reduce_result() { - return s_exec[0]->m_scratch_alloc; -} - -} // namespace Impl - -} // namespace Kokkos - -namespace Kokkos { - -namespace Impl { - -QthreadsTeamPolicyMember::QthreadsTeamPolicyMember() - : m_exec(**worker_exec()), - m_team_shared(0, 0), - m_team_size(1), - m_team_rank(0), - m_league_size(1), - m_league_end(1), - m_league_rank(0) { - m_exec.shared_reset(m_team_shared); -} - -QthreadsTeamPolicyMember::QthreadsTeamPolicyMember( - const QthreadsTeamPolicyMember::TaskTeam &) - : m_exec(**worker_exec()), - m_team_shared(0, 0), - m_team_size(s_number_workers_per_shepherd), - m_team_rank(m_exec.shepherd_worker_rank()), - m_league_size(1), - m_league_end(1), - m_league_rank(0) { - m_exec.shared_reset(m_team_shared); -} - -} // namespace Impl - -} // namespace Kokkos - -#else -void KOKKOS_SRC_QTHREADS_EXEC_PREVENT_LINK_ERROR() {} -#endif // #if defined( KOKKOS_ENABLE_QTHREADS ) diff --git a/lib/kokkos/core/src/Qthreads/Kokkos_QthreadsExec.hpp b/lib/kokkos/core/src/Qthreads/Kokkos_QthreadsExec.hpp deleted file mode 100644 index aa0fd73a4a..0000000000 --- a/lib/kokkos/core/src/Qthreads/Kokkos_QthreadsExec.hpp +++ /dev/null @@ -1,687 +0,0 @@ -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// 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 NTESS "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 NTESS 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_QTHREADSEXEC_HPP -#define KOKKOS_QTHREADSEXEC_HPP - -#include -#if defined(KOKKOS_ENABLE_QTHREADS) - -#include - -//---------------------------------------------------------------------------- - -namespace Kokkos { - -namespace Impl { - -class QthreadsExec; - -typedef void (*QthreadsExecFunctionPointer)(QthreadsExec &, const void *); - -class QthreadsExec { - private: - enum { Inactive = 0, Active = 1 }; - - const QthreadsExec *const *m_worker_base; - const QthreadsExec *const *m_shepherd_base; - - void *m_scratch_alloc; ///< Scratch memory [ reduce, team, shared ] - int m_reduce_end; ///< End of scratch reduction memory - - int m_shepherd_rank; - int m_shepherd_size; - - int m_shepherd_worker_rank; - int m_shepherd_worker_size; - - /* - * m_worker_rank = m_shepherd_rank * m_shepherd_worker_size + - * m_shepherd_worker_rank m_worker_size = m_shepherd_size * - * m_shepherd_worker_size - */ - int m_worker_rank; - int m_worker_size; - - int mutable volatile m_worker_state; - - friend class Kokkos::Qthreads; - - ~QthreadsExec(); - QthreadsExec(const QthreadsExec &); - QthreadsExec &operator=(const QthreadsExec &); - - public: - QthreadsExec(); - - /** Execute the input function on all available Qthreads workers. */ - static void exec_all(Qthreads &, QthreadsExecFunctionPointer, const void *); - - /** Barrier across all workers participating in the 'exec_all'. */ - void exec_all_barrier() const { - const int rev_rank = m_worker_size - (m_worker_rank + 1); - - int n, j; - - for (n = 1; (!(rev_rank & n)) && ((j = rev_rank + n) < m_worker_size); - n <<= 1) { - Impl::spinwait_while_equal(m_worker_base[j]->m_worker_state, - QthreadsExec::Active); - } - - if (rev_rank) { - m_worker_state = QthreadsExec::Inactive; - Impl::spinwait_while_equal(m_worker_state, QthreadsExec::Inactive); - } - - for (n = 1; (!(rev_rank & n)) && ((j = rev_rank + n) < m_worker_size); - n <<= 1) { - m_worker_base[j]->m_worker_state = QthreadsExec::Active; - } - } - - /** Barrier across workers within the shepherd with rank < team_rank. */ - void shepherd_barrier(const int team_size) const { - if (m_shepherd_worker_rank < team_size) { - const int rev_rank = team_size - (m_shepherd_worker_rank + 1); - - int n, j; - - for (n = 1; (!(rev_rank & n)) && ((j = rev_rank + n) < team_size); - n <<= 1) { - Impl::spinwait_while_equal(m_shepherd_base[j]->m_worker_state, - QthreadsExec::Active); - } - - if (rev_rank) { - m_worker_state = QthreadsExec::Inactive; - Impl::spinwait_while_equal(m_worker_state, QthreadsExec::Inactive); - } - - for (n = 1; (!(rev_rank & n)) && ((j = rev_rank + n) < team_size); - n <<= 1) { - m_shepherd_base[j]->m_worker_state = QthreadsExec::Active; - } - } - } - - /** Reduce across all workers participating in the 'exec_all'. */ - template - inline void exec_all_reduce(const FunctorType &func, - const ReducerType &reduce) const { - typedef Kokkos::Impl::if_c::value, - FunctorType, ReducerType> - ReducerConditional; - typedef typename ReducerConditional::type ReducerTypeFwd; - typedef Kokkos::Impl::FunctorValueJoin ValueJoin; - - const int rev_rank = m_worker_size - (m_worker_rank + 1); - - int n, j; - - for (n = 1; (!(rev_rank & n)) && ((j = rev_rank + n) < m_worker_size); - n <<= 1) { - const QthreadsExec &fan = *m_worker_base[j]; - - Impl::spinwait_while_equal(fan.m_worker_state, QthreadsExec::Active); - - ValueJoin::join(ReducerConditional::select(func, reduce), m_scratch_alloc, - fan.m_scratch_alloc); - } - - if (rev_rank) { - m_worker_state = QthreadsExec::Inactive; - Impl::spinwait_while_equal(m_worker_state, QthreadsExec::Inactive); - } - - for (n = 1; (!(rev_rank & n)) && ((j = rev_rank + n) < m_worker_size); - n <<= 1) { - m_worker_base[j]->m_worker_state = QthreadsExec::Active; - } - } - - /** Scan across all workers participating in the 'exec_all'. */ - template - inline void exec_all_scan(const FunctorType &func) const { - typedef Kokkos::Impl::FunctorValueInit ValueInit; - typedef Kokkos::Impl::FunctorValueJoin ValueJoin; - typedef Kokkos::Impl::FunctorValueOps ValueOps; - - const int rev_rank = m_worker_size - (m_worker_rank + 1); - - int n, j; - - for (n = 1; (!(rev_rank & n)) && ((j = rev_rank + n) < m_worker_size); - n <<= 1) { - Impl::spinwait_while_equal(m_worker_base[j]->m_worker_state, - QthreadsExec::Active); - } - - if (rev_rank) { - m_worker_state = QthreadsExec::Inactive; - Impl::spinwait_while_equal(m_worker_state, QthreadsExec::Inactive); - } else { - // Root thread scans across values before releasing threads. - // Worker data is in reverse order, so m_worker_base[0] is the - // highest ranking thread. - - // Copy from lower ranking to higher ranking worker. - for (int i = 1; i < m_worker_size; ++i) { - ValueOps::copy(func, m_worker_base[i - 1]->m_scratch_alloc, - m_worker_base[i]->m_scratch_alloc); - } - - ValueInit::init(func, m_worker_base[m_worker_size - 1]->m_scratch_alloc); - - // Join from lower ranking to higher ranking worker. - // Value at m_worker_base[n-1] is zero so skip adding it to - // m_worker_base[n-2]. - for (int i = m_worker_size - 1; --i > 0;) { - ValueJoin::join(func, m_worker_base[i - 1]->m_scratch_alloc, - m_worker_base[i]->m_scratch_alloc); - } - } - - for (n = 1; (!(rev_rank & n)) && ((j = rev_rank + n) < m_worker_size); - n <<= 1) { - m_worker_base[j]->m_worker_state = QthreadsExec::Active; - } - } - - //---------------------------------------- - - template - inline volatile Type *shepherd_team_scratch_value() const { - return (volatile Type *)(((unsigned char *)m_scratch_alloc) + m_reduce_end); - } - - template - inline void shepherd_broadcast(Type &value, const int team_size, - const int team_rank) const { - if (m_shepherd_base) { - Type *const shared_value = - m_shepherd_base[0]->shepherd_team_scratch_value(); - if (m_shepherd_worker_rank == team_rank) { - *shared_value = value; - } - memory_fence(); - shepherd_barrier(team_size); - value = *shared_value; - } - } - - template - inline Type shepherd_reduce(const int team_size, const Type &value) const { - volatile Type *const shared_value = shepherd_team_scratch_value(); - *shared_value = value; - // *shepherd_team_scratch_value() = value; - - memory_fence(); - - const int rev_rank = team_size - (m_shepherd_worker_rank + 1); - - int n, j; - - for (n = 1; (!(rev_rank & n)) && ((j = rev_rank + n) < team_size); - n <<= 1) { - Impl::spinwait_while_equal(m_shepherd_base[j]->m_worker_state, - QthreadsExec::Active); - } - - if (rev_rank) { - m_worker_state = QthreadsExec::Inactive; - Impl::spinwait_while_equal(m_worker_state, QthreadsExec::Inactive); - } else { - Type &accum = *m_shepherd_base[0]->shepherd_team_scratch_value(); - for (int i = 1; i < n; ++i) { - accum += *m_shepherd_base[i]->shepherd_team_scratch_value(); - } - for (int i = 1; i < n; ++i) { - *m_shepherd_base[i]->shepherd_team_scratch_value() = accum; - } - - memory_fence(); - } - - for (n = 1; (!(rev_rank & n)) && ((j = rev_rank + n) < team_size); - n <<= 1) { - m_shepherd_base[j]->m_worker_state = QthreadsExec::Active; - } - - return *shepherd_team_scratch_value(); - } - - template - inline typename JoinOp::value_type shepherd_reduce( - const int team_size, const typename JoinOp::value_type &value, - const JoinOp &op) const { - typedef typename JoinOp::value_type Type; - - volatile Type *const shared_value = shepherd_team_scratch_value(); - *shared_value = value; - // *shepherd_team_scratch_value() = value; - - memory_fence(); - - const int rev_rank = team_size - (m_shepherd_worker_rank + 1); - - int n, j; - - for (n = 1; (!(rev_rank & n)) && ((j = rev_rank + n) < team_size); - n <<= 1) { - Impl::spinwait_while_equal(m_shepherd_base[j]->m_worker_state, - QthreadsExec::Active); - } - - if (rev_rank) { - m_worker_state = QthreadsExec::Inactive; - Impl::spinwait_while_equal(m_worker_state, QthreadsExec::Inactive); - } else { - volatile Type &accum = - *m_shepherd_base[0]->shepherd_team_scratch_value(); - for (int i = 1; i < team_size; ++i) { - op.join(accum, - *m_shepherd_base[i]->shepherd_team_scratch_value()); - } - for (int i = 1; i < team_size; ++i) { - *m_shepherd_base[i]->shepherd_team_scratch_value() = accum; - } - - memory_fence(); - } - - for (n = 1; (!(rev_rank & n)) && ((j = rev_rank + n) < team_size); - n <<= 1) { - m_shepherd_base[j]->m_worker_state = QthreadsExec::Active; - } - - return *shepherd_team_scratch_value(); - } - - template - inline Type shepherd_scan(const int team_size, const Type &value, - Type *const global_value = 0) const { - *shepherd_team_scratch_value() = value; - - memory_fence(); - - const int rev_rank = team_size - (m_shepherd_worker_rank + 1); - - int n, j; - - for (n = 1; (!(rev_rank & n)) && ((j = rev_rank + n) < team_size); - n <<= 1) { - Impl::spinwait_while_equal(m_shepherd_base[j]->m_worker_state, - QthreadsExec::Active); - } - - if (rev_rank) { - m_worker_state = QthreadsExec::Inactive; - Impl::spinwait_while_equal(m_worker_state, QthreadsExec::Inactive); - } else { - // Root thread scans across values before releasing threads. - // Worker data is in reverse order, so m_shepherd_base[0] is the - // highest ranking thread. - - // Copy from lower ranking to higher ranking worker. - - Type accum = *m_shepherd_base[0]->shepherd_team_scratch_value(); - for (int i = 1; i < team_size; ++i) { - const Type tmp = - *m_shepherd_base[i]->shepherd_team_scratch_value(); - accum += tmp; - *m_shepherd_base[i - 1]->shepherd_team_scratch_value() = tmp; - } - - *m_shepherd_base[team_size - 1]->shepherd_team_scratch_value() = - global_value ? atomic_fetch_add(global_value, accum) : 0; - - // Join from lower ranking to higher ranking worker. - for (int i = team_size; --i;) { - *m_shepherd_base[i - 1]->shepherd_team_scratch_value() += - *m_shepherd_base[i]->shepherd_team_scratch_value(); - } - - memory_fence(); - } - - for (n = 1; (!(rev_rank & n)) && ((j = rev_rank + n) < team_size); - n <<= 1) { - m_shepherd_base[j]->m_worker_state = QthreadsExec::Active; - } - - return *shepherd_team_scratch_value(); - } - - //---------------------------------------- - - static inline int align_alloc(int size) { - enum { ALLOC_GRAIN = 1 << 6 /* power of two, 64bytes */ }; - enum { ALLOC_GRAIN_MASK = ALLOC_GRAIN - 1 }; - return (size + ALLOC_GRAIN_MASK) & ~ALLOC_GRAIN_MASK; - } - - void shared_reset(Qthreads::scratch_memory_space &); - - void *exec_all_reduce_value() const { return m_scratch_alloc; } - - static void *exec_all_reduce_result(); - - static void resize_worker_scratch(const int reduce_size, - const int shared_size); - static void clear_workers(); - - //---------------------------------------- - - inline int worker_rank() const { return m_worker_rank; } - inline int worker_size() const { return m_worker_size; } - inline int shepherd_worker_rank() const { return m_shepherd_worker_rank; } - inline int shepherd_worker_size() const { return m_shepherd_worker_size; } - inline int shepherd_rank() const { return m_shepherd_rank; } - inline int shepherd_size() const { return m_shepherd_size; } - - static int worker_per_shepherd(); -}; - -} // namespace Impl - -} // namespace Kokkos - -//---------------------------------------------------------------------------- - -namespace Kokkos { - -namespace Impl { - -class QthreadsTeamPolicyMember { - private: - typedef Kokkos::Qthreads execution_space; - typedef execution_space::scratch_memory_space scratch_memory_space; - - Impl::QthreadsExec &m_exec; - scratch_memory_space m_team_shared; - const int m_team_size; - const int m_team_rank; - const int m_league_size; - const int m_league_end; - int m_league_rank; - - public: - KOKKOS_INLINE_FUNCTION - const scratch_memory_space &team_shmem() const { return m_team_shared; } - - KOKKOS_INLINE_FUNCTION int league_rank() const { return m_league_rank; } - KOKKOS_INLINE_FUNCTION int league_size() const { return m_league_size; } - KOKKOS_INLINE_FUNCTION int team_rank() const { return m_team_rank; } - KOKKOS_INLINE_FUNCTION int team_size() const { return m_team_size; } - - KOKKOS_INLINE_FUNCTION void team_barrier() const -#if !defined(KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_HOST) - { - } -#else - { - m_exec.shepherd_barrier(m_team_size); - } -#endif - - template - KOKKOS_INLINE_FUNCTION Type team_broadcast(const Type &value, int rank) const -#if !defined(KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_HOST) - { - return Type(); - } -#else - { - return m_exec.template shepherd_broadcast(value, m_team_size, rank); - } -#endif - - template - KOKKOS_INLINE_FUNCTION Type team_reduce(const Type &value) const -#if !defined(KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_HOST) - { - return Type(); - } -#else - { - return m_exec.template shepherd_reduce(m_team_size, value); - } -#endif - - template - KOKKOS_INLINE_FUNCTION typename JoinOp::value_type team_reduce( - const typename JoinOp::value_type &value, const JoinOp &op) const -#if !defined(KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_HOST) - { - return typename JoinOp::value_type(); - } -#else - { - return m_exec.template shepherd_reduce(m_team_size, value, op); - } -#endif - - /** \brief Intra-team exclusive prefix sum with team_rank() ordering. - * - * The highest rank thread can compute the reduction total as - * reduction_total = dev.team_scan( value ) + value; - */ - template - KOKKOS_INLINE_FUNCTION Type team_scan(const Type &value) const -#if !defined(KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_HOST) - { - return Type(); - } -#else - { - return m_exec.template shepherd_scan(m_team_size, value); - } -#endif - - /** \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 league's - * parallel execution, be the scan's total. Parallel execution ordering of - * the league's teams is non-deterministic. As such the base value for each - * team's scan operation is similarly non-deterministic. - */ - template - KOKKOS_INLINE_FUNCTION Type team_scan(const Type &value, - Type *const global_accum) const -#if !defined(KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_HOST) - { - return Type(); - } -#else - { - return m_exec.template shepherd_scan(m_team_size, value, - global_accum); - } -#endif - - //---------------------------------------- - // Private driver for task-team parallel. - - struct TaskTeam {}; - - QthreadsTeamPolicyMember(); - explicit QthreadsTeamPolicyMember(const TaskTeam &); - - //---------------------------------------- - // Private for the driver ( for ( member_type i( exec, team ); i; - // i.next_team() ) { ... } - - // Initialize. - template - QthreadsTeamPolicyMember( - Impl::QthreadsExec &exec, - const Kokkos::Impl::TeamPolicyInternal &team) - : m_exec(exec), - m_team_shared(0, 0), - m_team_size(team.m_team_size), - m_team_rank(exec.shepherd_worker_rank()), - m_league_size(team.m_league_size), - m_league_end(team.m_league_size - - team.m_shepherd_iter * - (exec.shepherd_size() - (exec.shepherd_rank() + 1))), - m_league_rank(m_league_end > team.m_shepherd_iter - ? m_league_end - team.m_shepherd_iter - : 0) { - m_exec.shared_reset(m_team_shared); - } - - // Continue. - operator bool() const { return m_league_rank < m_league_end; } - - // Iterate. - void next_team() { - ++m_league_rank; - m_exec.shared_reset(m_team_shared); - } -}; - -template -class TeamPolicyInternal - : public PolicyTraits { - private: - const int m_league_size; - const int m_team_size; - const int m_shepherd_iter; - - public: - //! Tag this class as a kokkos execution policy. - typedef TeamPolicyInternal execution_policy; - typedef Qthreads execution_space; - typedef PolicyTraits traits; - - //---------------------------------------- - - template - inline static int team_size_max(const FunctorType &) { - return Qthreads::instance().shepherd_worker_size(); - } - - template - static int team_size_recommended(const FunctorType &f) { - return team_size_max(f); - } - - template - inline static int team_size_recommended(const FunctorType &f, const int &) { - return team_size_max(f); - } - - //---------------------------------------- - - inline int team_size() const { return m_team_size; } - inline int league_size() const { return m_league_size; } - - // One active team per shepherd. - TeamPolicyInternal(Kokkos::Qthreads &q, const int league_size, - const int team_size, const int /* vector_length */ = 0) - : m_league_size(league_size), - m_team_size(team_size < q.shepherd_worker_size() - ? team_size - : q.shepherd_worker_size()), - m_shepherd_iter((league_size + q.shepherd_size() - 1) / - q.shepherd_size()) {} - - // TODO: Make sure this is correct. - // One active team per shepherd. - TeamPolicyInternal(Kokkos::Qthreads &q, const int league_size, - const Kokkos::AUTO_t & /* team_size_request */ - , - const int /* vector_length */ = 0) - : m_league_size(league_size), - m_team_size(q.shepherd_worker_size()), - m_shepherd_iter((league_size + q.shepherd_size() - 1) / - q.shepherd_size()) {} - - // One active team per shepherd. - TeamPolicyInternal(const int league_size, const int team_size, - const int /* vector_length */ = 0) - : m_league_size(league_size), - m_team_size(team_size < Qthreads::instance().shepherd_worker_size() - ? team_size - : Qthreads::instance().shepherd_worker_size()), - m_shepherd_iter( - (league_size + Qthreads::instance().shepherd_size() - 1) / - Qthreads::instance().shepherd_size()) {} - - // TODO: Make sure this is correct. - // One active team per shepherd. - TeamPolicyInternal(const int league_size, - const Kokkos::AUTO_t & /* team_size_request */ - , - const int /* vector_length */ = 0) - : m_league_size(league_size), - m_team_size(Qthreads::instance().shepherd_worker_size()), - m_shepherd_iter( - (league_size + Qthreads::instance().shepherd_size() - 1) / - Qthreads::instance().shepherd_size()) {} - - // TODO: Doesn't do anything yet. Fix this. - /** \brief set chunk_size to a discrete value*/ - inline TeamPolicyInternal set_chunk_size( - typename traits::index_type chunk_size_) const { - TeamPolicyInternal p = *this; - // p.m_chunk_size = chunk_size_; - return p; - } - - typedef Impl::QthreadsTeamPolicyMember member_type; - - friend class Impl::QthreadsTeamPolicyMember; -}; - -} // namespace Impl - -} // namespace Kokkos - -//---------------------------------------------------------------------------- - -#endif -#endif // #define KOKKOS_QTHREADSEXEC_HPP diff --git a/lib/kokkos/core/src/Qthreads/Kokkos_Qthreads_Parallel.hpp b/lib/kokkos/core/src/Qthreads/Kokkos_Qthreads_Parallel.hpp deleted file mode 100644 index 8611818e27..0000000000 --- a/lib/kokkos/core/src/Qthreads/Kokkos_Qthreads_Parallel.hpp +++ /dev/null @@ -1,753 +0,0 @@ -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// 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 NTESS "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 NTESS 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_QTHREADS_PARALLEL_HPP -#define KOKKOS_QTHREADS_PARALLEL_HPP - -#include -#if defined(KOKKOS_ENABLE_QTHREADS) - -#include - -#include - -#include - -#include - -//---------------------------------------------------------------------------- - -namespace Kokkos { -namespace Impl { - -//---------------------------------------------------------------------------- - -template -class ParallelFor, - Kokkos::Qthreads> { - private: - typedef Kokkos::RangePolicy Policy; - - typedef typename Policy::work_tag WorkTag; - typedef typename Policy::member_type Member; - typedef typename Policy::WorkRange WorkRange; - - const FunctorType m_functor; - const Policy m_policy; - - template - inline static - typename std::enable_if::value>::type - exec_range(const FunctorType& functor, const Member ibeg, - const Member iend) { - for (Member i = ibeg; i < iend; ++i) { - functor(i); - } - } - - template - inline static - typename std::enable_if::value>::type - exec_range(const FunctorType& functor, const Member ibeg, - const Member iend) { - const TagType t{}; - for (Member i = ibeg; i < iend; ++i) { - functor(t, i); - } - } - - // Function is called once by every concurrent thread. - static void exec(QthreadsExec& exec, const void* arg) { - const ParallelFor& self = *((const ParallelFor*)arg); - - const WorkRange range(self.m_policy, exec.worker_rank(), - exec.worker_size()); - - ParallelFor::template exec_range(self.m_functor, range.begin(), - range.end()); - - // All threads wait for completion. - exec.exec_all_barrier(); - } - - public: - inline void execute() const { - Impl::QthreadsExec::exec_all(Qthreads::instance(), &ParallelFor::exec, - this); - } - - ParallelFor(const FunctorType& arg_functor, const Policy& arg_policy) - : m_functor(arg_functor), m_policy(arg_policy) {} -}; - -//---------------------------------------------------------------------------- - -template -class ParallelReduce, ReducerType, - Kokkos::Qthreads> { - private: - typedef Kokkos::RangePolicy Policy; - - typedef typename Policy::work_tag WorkTag; - typedef typename Policy::WorkRange WorkRange; - typedef typename Policy::member_type Member; - - typedef Kokkos::Impl::if_c::value, - FunctorType, ReducerType> - ReducerConditional; - typedef typename ReducerConditional::type ReducerTypeFwd; - typedef - typename Kokkos::Impl::if_c::value, - WorkTag, void>::type WorkTagFwd; - - // Static Assert WorkTag void if ReducerType not InvalidType - - typedef Kokkos::Impl::FunctorValueTraits - ValueTraits; - typedef Kokkos::Impl::FunctorValueInit ValueInit; - - typedef typename ValueTraits::pointer_type pointer_type; - typedef typename ValueTraits::reference_type reference_type; - - const FunctorType m_functor; - const Policy m_policy; - const ReducerType m_reducer; - const pointer_type m_result_ptr; - - template - inline static - typename std::enable_if::value>::type - exec_range(const FunctorType& functor, const Member ibeg, - const Member iend, reference_type update) { - for (Member i = ibeg; i < iend; ++i) { - functor(i, update); - } - } - - template - inline static - typename std::enable_if::value>::type - exec_range(const FunctorType& functor, const Member ibeg, - const Member iend, reference_type update) { - const TagType t{}; - for (Member i = ibeg; i < iend; ++i) { - functor(t, i, update); - } - } - - static void exec(QthreadsExec& exec, const void* arg) { - const ParallelReduce& self = *((const ParallelReduce*)arg); - - const WorkRange range(self.m_policy, exec.worker_rank(), - exec.worker_size()); - - ParallelReduce::template exec_range( - self.m_functor, range.begin(), range.end(), - ValueInit::init( - ReducerConditional::select(self.m_functor, self.m_reducer), - exec.exec_all_reduce_value())); - - exec.template exec_all_reduce( - self.m_functor, self.m_reducer); - } - - public: - inline void execute() const { - QthreadsExec::resize_worker_scratch( - ValueTraits::value_size( - ReducerConditional::select(m_functor, m_reducer)), - 0); - Impl::QthreadsExec::exec_all(Qthreads::instance(), &ParallelReduce::exec, - this); - - const pointer_type data = - (pointer_type)QthreadsExec::exec_all_reduce_result(); - - Kokkos::Impl::FunctorFinal::final( - ReducerConditional::select(m_functor, m_reducer), data); - - if (m_result_ptr) { - const unsigned n = ValueTraits::value_count( - ReducerConditional::select(m_functor, m_reducer)); - for (unsigned i = 0; i < n; ++i) { - m_result_ptr[i] = data[i]; - } - } - } - - template - ParallelReduce( - const FunctorType& arg_functor, const Policy& arg_policy, - const ViewType& arg_result_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_result_view.data()) {} - - 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.result_view().data()) {} -}; - -//---------------------------------------------------------------------------- - -template -class ParallelFor, Kokkos::Qthreads> { - private: - typedef Kokkos::Impl::TeamPolicyInternal - Policy; - typedef typename Policy::member_type Member; - typedef typename Policy::work_tag WorkTag; - - const FunctorType m_functor; - const Policy m_policy; - - template - inline static - typename std::enable_if::value>::type - exec_team(const FunctorType& functor, Member member) { - while (member) { - functor(member); - member.team_barrier(); - member.next_team(); - } - } - - template - inline static - typename std::enable_if::value>::type - exec_team(const FunctorType& functor, Member member) { - const TagType t{}; - while (member) { - functor(t, member); - member.team_barrier(); - member.next_team(); - } - } - - static void exec(QthreadsExec& exec, const void* arg) { - const ParallelFor& self = *((const ParallelFor*)arg); - - ParallelFor::template exec_team(self.m_functor, - Member(exec, self.m_policy)); - - exec.exec_all_barrier(); - } - - public: - inline void execute() const { - QthreadsExec::resize_worker_scratch( - /* reduction memory */ 0, - /* team shared memory */ FunctorTeamShmemSize::value( - m_functor, m_policy.team_size())); - Impl::QthreadsExec::exec_all(Qthreads::instance(), &ParallelFor::exec, - this); - } - - ParallelFor(const FunctorType& arg_functor, const Policy& arg_policy) - : m_functor(arg_functor), m_policy(arg_policy) {} -}; - -//---------------------------------------------------------------------------- - -template -class ParallelReduce, ReducerType, - Kokkos::Qthreads> { - private: - typedef Kokkos::Impl::TeamPolicyInternal - Policy; - - typedef typename Policy::work_tag WorkTag; - typedef typename Policy::member_type Member; - - typedef Kokkos::Impl::if_c::value, - FunctorType, ReducerType> - ReducerConditional; - typedef typename ReducerConditional::type ReducerTypeFwd; - typedef - typename Kokkos::Impl::if_c::value, - WorkTag, void>::type WorkTagFwd; - - typedef Kokkos::Impl::FunctorValueTraits - ValueTraits; - typedef Kokkos::Impl::FunctorValueInit ValueInit; - - typedef typename ValueTraits::pointer_type pointer_type; - typedef typename ValueTraits::reference_type reference_type; - - const FunctorType m_functor; - const Policy m_policy; - const ReducerType m_reducer; - const pointer_type m_result_ptr; - - template - inline static - typename std::enable_if::value>::type - exec_team(const FunctorType& functor, Member member, - reference_type update) { - while (member) { - functor(member, update); - member.team_barrier(); - member.next_team(); - } - } - - template - inline static - typename std::enable_if::value>::type - exec_team(const FunctorType& functor, Member member, - reference_type update) { - const TagType t{}; - while (member) { - functor(t, member, update); - member.team_barrier(); - member.next_team(); - } - } - - static void exec(QthreadsExec& exec, const void* arg) { - const ParallelReduce& self = *((const ParallelReduce*)arg); - - ParallelReduce::template exec_team( - self.m_functor, Member(exec, self.m_policy), - ValueInit::init( - ReducerConditional::select(self.m_functor, self.m_reducer), - exec.exec_all_reduce_value())); - - exec.template exec_all_reduce( - self.m_functor, self.m_reducer); - } - - public: - inline void execute() const { - QthreadsExec::resize_worker_scratch( - /* reduction memory */ ValueTraits::value_size( - ReducerConditional::select(m_functor, m_reducer)), - /* team shared memory */ FunctorTeamShmemSize::value( - m_functor, m_policy.team_size())); - - Impl::QthreadsExec::exec_all(Qthreads::instance(), &ParallelReduce::exec, - this); - - const pointer_type data = - (pointer_type)QthreadsExec::exec_all_reduce_result(); - - Kokkos::Impl::FunctorFinal::final( - ReducerConditional::select(m_functor, m_reducer), data); - - if (m_result_ptr) { - const unsigned n = ValueTraits::value_count( - ReducerConditional::select(m_functor, m_reducer)); - for (unsigned i = 0; i < n; ++i) { - m_result_ptr[i] = data[i]; - } - } - } - - 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_policy(arg_policy), - m_reducer(InvalidType()), - m_result_ptr(arg_result.ptr_on_device()) {} - - 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.result_view().data()) {} -}; - -//---------------------------------------------------------------------------- -//---------------------------------------------------------------------------- - -template -class ParallelScan, - Kokkos::Qthreads> { - private: - typedef Kokkos::RangePolicy Policy; - - typedef typename Policy::work_tag WorkTag; - typedef typename Policy::WorkRange WorkRange; - typedef typename Policy::member_type Member; - - typedef Kokkos::Impl::FunctorValueTraits ValueTraits; - typedef Kokkos::Impl::FunctorValueInit ValueInit; - - typedef typename ValueTraits::pointer_type pointer_type; - typedef typename ValueTraits::reference_type reference_type; - - const FunctorType m_functor; - const Policy m_policy; - - template - inline static - typename std::enable_if::value>::type - exec_range(const FunctorType& functor, const Member ibeg, - const Member iend, reference_type update, const bool final) { - for (Member i = ibeg; i < iend; ++i) { - functor(i, update, final); - } - } - - template - inline static - typename std::enable_if::value>::type - exec_range(const FunctorType& functor, const Member ibeg, - const Member iend, reference_type update, const bool final) { - const TagType t{}; - for (Member i = ibeg; i < iend; ++i) { - functor(t, i, update, final); - } - } - - static void exec(QthreadsExec& exec, const void* arg) { - const ParallelScan& self = *((const ParallelScan*)arg); - - const WorkRange range(self.m_policy, exec.worker_rank(), - exec.worker_size()); - - // Initialize thread-local value - reference_type update = - ValueInit::init(self.m_functor, exec.exec_all_reduce_value()); - - ParallelScan::template exec_range(self.m_functor, range.begin(), - range.end(), update, false); - - exec.template exec_all_scan( - self.m_functor); - - ParallelScan::template exec_range(self.m_functor, range.begin(), - range.end(), update, true); - - exec.exec_all_barrier(); - } - - public: - inline void execute() const { - QthreadsExec::resize_worker_scratch(ValueTraits::value_size(m_functor), 0); - Impl::QthreadsExec::exec_all(Qthreads::instance(), &ParallelScan::exec, - this); - } - - ParallelScan(const FunctorType& arg_functor, const Policy& arg_policy) - : m_functor(arg_functor), m_policy(arg_policy) {} -}; - -} // namespace Impl - -} // namespace Kokkos - -//---------------------------------------------------------------------------- -//---------------------------------------------------------------------------- - -namespace Kokkos { - -template -KOKKOS_INLINE_FUNCTION - Impl::TeamThreadRangeBoundariesStruct - TeamThreadRange(const Impl::QthreadsTeamPolicyMember& thread, - const iType& count) { - return Impl::TeamThreadRangeBoundariesStruct( - thread, count); -} - -template -KOKKOS_INLINE_FUNCTION Impl::TeamThreadRangeBoundariesStruct< - typename std::common_type::type, - Impl::QthreadsTeamPolicyMember> -TeamThreadRange(const Impl::QthreadsTeamPolicyMember& thread, - const iType1& begin, const iType2& end) { - typedef typename std::common_type::type iType; - return Impl::TeamThreadRangeBoundariesStruct( - thread, iType(begin), iType(end)); -} - -template -KOKKOS_INLINE_FUNCTION Impl::ThreadVectorRangeBoundariesStruct< - iType, Impl::QthreadsTeamPolicyMember> -ThreadVectorRange(const Impl::QthreadsTeamPolicyMember& thread, - const iType& count) { - return Impl::ThreadVectorRangeBoundariesStruct< - iType, Impl::QthreadsTeamPolicyMember>(thread, count); -} - -template -KOKKOS_INLINE_FUNCTION Impl::ThreadVectorRangeBoundariesStruct< - iType, Impl::QthreadsTeamPolicyMember> -ThreadVectorRange(const Impl::QthreadsTeamPolicyMember& thread, - const iType& arg_begin, const iType& arg_end) { - return Impl::ThreadVectorRangeBoundariesStruct< - iType, Impl::QthreadsTeamPolicyMember>(thread, arg_begin, arg_end); -} - -KOKKOS_INLINE_FUNCTION -Impl::ThreadSingleStruct PerTeam( - const Impl::QthreadsTeamPolicyMember& thread) { - return Impl::ThreadSingleStruct(thread); -} - -KOKKOS_INLINE_FUNCTION -Impl::VectorSingleStruct PerThread( - const Impl::QthreadsTeamPolicyMember& 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< - iType, Impl::QthreadsTeamPolicyMember>& 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< - iType, Impl::QthreadsTeamPolicyMember>& loop_boundaries, - const Lambda& lambda, ValueType& result) { - result = ValueType(); - - for (iType i = loop_boundaries.start; i < loop_boundaries.end; - i += loop_boundaries.increment) { - ValueType tmp = ValueType(); - lambda(i, tmp); - result += tmp; - } - - result = - loop_boundaries.thread.team_reduce(result, Impl::JoinAdd()); -} - -/** \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 -KOKKOS_INLINE_FUNCTION void parallel_reduce( - const Impl::TeamThreadRangeBoundariesStruct< - iType, Impl::QthreadsTeamPolicyMember>& loop_boundaries, - const Lambda& lambda, const JoinType& join, ValueType& init_result) { - ValueType result = init_result; - - for (iType i = loop_boundaries.start; i < loop_boundaries.end; - i += loop_boundaries.increment) { - ValueType tmp = ValueType(); - lambda(i, tmp); - join(result, tmp); - } - - init_result = loop_boundaries.thread.team_reduce( - result, Impl::JoinLambdaAdapter(join)); -} - -/** \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< - iType, Impl::QthreadsTeamPolicyMember>& 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< - iType, Impl::QthreadsTeamPolicyMember>& 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) { - ValueType tmp = ValueType(); - lambda(i, tmp); - result += tmp; - } -} - -/** \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 -KOKKOS_INLINE_FUNCTION void parallel_reduce( - const Impl::ThreadVectorRangeBoundariesStruct< - iType, Impl::QthreadsTeamPolicyMember>& loop_boundaries, - const Lambda& lambda, const JoinType& join, ValueType& init_result) { - ValueType result = init_result; -#ifdef KOKKOS_ENABLE_PRAGMA_IVDEP -#pragma ivdep -#endif - for (iType i = loop_boundaries.start; i < loop_boundaries.end; - i += loop_boundaries.increment) { - ValueType tmp = ValueType(); - lambda(i, tmp); - join(result, tmp); - } - init_result = result; -} - -/** \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< - iType, Impl::QthreadsTeamPolicyMember>& loop_boundaries, - const FunctorType& lambda) { - typedef Kokkos::Impl::FunctorValueTraits ValueTraits; - typedef typename ValueTraits::value_type 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) { - if (single_struct.team_member.team_rank() == 0) 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) { - if (single_struct.team_member.team_rank() == 0) { - lambda(val); - } - single_struct.team_member.team_broadcast(val, 0); -} - -} // namespace Kokkos - -#endif -#endif /* #define KOKKOS_QTHREADS_PARALLEL_HPP */ diff --git a/lib/kokkos/core/src/Qthreads/Kokkos_Qthreads_Task.cpp b/lib/kokkos/core/src/Qthreads/Kokkos_Qthreads_Task.cpp deleted file mode 100644 index b3a903494a..0000000000 --- a/lib/kokkos/core/src/Qthreads/Kokkos_Qthreads_Task.cpp +++ /dev/null @@ -1,308 +0,0 @@ -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// 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 NTESS "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 NTESS 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_QTHREADS) && defined(KOKKOS_ENABLE_TASKPOLICY) - -#include -#include - -//---------------------------------------------------------------------------- -//---------------------------------------------------------------------------- - -namespace Kokkos { -namespace Impl { - -template class TaskQueue; - -//---------------------------------------------------------------------------- - -TaskExec::TaskExec() - : m_self_exec(0), - m_team_exec(0), - m_sync_mask(0), - m_sync_value(0), - m_sync_step(0), - m_group_rank(0), - m_team_rank(0), - m_team_size(1) {} - -TaskExec::TaskExec(Kokkos::Impl::QthreadsExec &arg_exec, - int const arg_team_size) - : m_self_exec(&arg_exec), - m_team_exec(arg_exec.pool_rev(arg_exec.pool_rank_rev() / arg_team_size)), - m_sync_mask(0), - m_sync_value(0), - m_sync_step(0), - m_group_rank(arg_exec.pool_rank_rev() / arg_team_size), - m_team_rank(arg_exec.pool_rank_rev() % arg_team_size), - m_team_size(arg_team_size) { - // This team spans - // m_self_exec->pool_rev( team_size * group_rank ) - // m_self_exec->pool_rev( team_size * ( group_rank + 1 ) - 1 ) - - int64_t volatile *const sync = (int64_t *)m_self_exec->scratch_reduce(); - - sync[0] = int64_t(0); - sync[1] = int64_t(0); - - for (int i = 0; i < m_team_size; ++i) { - m_sync_value |= int64_t(1) << (8 * i); - m_sync_mask |= int64_t(3) << (8 * i); - } - - Kokkos::memory_fence(); -} - -#if defined(KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_HOST) - -void TaskExec::team_barrier() const { - if (1 < m_team_size) { - if (m_team_exec->scratch_reduce_size() < int(2 * sizeof(int64_t))) { - Kokkos::abort("TaskQueue scratch_reduce memory too small"); - } - - // Use team shared memory to synchronize. - // Alternate memory locations between barriers to avoid a sequence - // of barriers overtaking one another. - - int64_t volatile *const sync = - ((int64_t *)m_team_exec->scratch_reduce()) + (m_sync_step & 0x01); - - // This team member sets one byte within the sync variable - int8_t volatile *const sync_self = ((int8_t *)sync) + m_team_rank; - -#if 0 -fprintf( stdout, - "barrier group(%d) member(%d) step(%d) wait(%lx) : before(%lx)\n", - m_group_rank, - m_team_rank, - m_sync_step, - m_sync_value, - *sync - ); -fflush(stdout); -#endif - - *sync_self = int8_t(m_sync_value & 0x03); // signal arrival - - while (m_sync_value != *sync) - ; // wait for team to arrive - -#if 0 -fprintf( stdout, - "barrier group(%d) member(%d) step(%d) wait(%lx) : after(%lx)\n", - m_group_rank, - m_team_rank, - m_sync_step, - m_sync_value, - *sync - ); -fflush(stdout); -#endif - - ++m_sync_step; - - if (0 == (0x01 & m_sync_step)) { // Every other step - m_sync_value ^= m_sync_mask; - if (1000 < m_sync_step) m_sync_step = 0; - } - } -} - -#endif - -//---------------------------------------------------------------------------- - -void TaskQueueSpecialization::execute( - TaskQueue *const queue) { - using execution_space = Kokkos::Qthreads; - using queue_type = TaskQueue; - using task_root_type = TaskBase; - using PoolExec = Kokkos::Impl::QthreadsExec; - using Member = TaskExec; - - task_root_type *const end = (task_root_type *)task_root_type::EndTag; - - // Required: team_size <= 8 - - const int team_size = PoolExec::pool_size(2); // Threads per core - // const int team_size = PoolExec::pool_size(1); // Threads per NUMA - - if (8 < team_size) { - Kokkos::abort("TaskQueue unsupported team size"); - } - -#pragma omp parallel - { - PoolExec &self = *PoolExec::get_thread_omp(); - - Member single_exec; - Member team_exec(self, team_size); - - // Team shared memory - task_root_type *volatile *const task_shared = - (task_root_type **)team_exec.m_team_exec->scratch_thread(); - -// Barrier across entire Qthreads thread pool to insure initialization -#pragma omp barrier - - // 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 == team_exec.team_rank()) { - task_root_type *tmp = - 0 < *((volatile int *)&queue->m_ready_count) ? end : 0; - - // Loop by priority and then type - for (int i = 0; i < queue_type::NumQueue && end == tmp; ++i) { - for (int j = 0; j < 2 && end == tmp; ++j) { - tmp = queue_type::pop_task(&queue->m_ready[i][j]); - } - } - - *task_shared = tmp; - - // Fence to be sure shared_task_array is stored - Kokkos::memory_fence(); - } - - // Whole team waits for every team member to reach this statement - team_exec.team_barrier(); - - Kokkos::memory_fence(); - - task_root_type *const task = *task_shared; - -#if 0 -fprintf( stdout, - "\nexecute group(%d) member(%d) task_shared(0x%lx) task(0x%lx)\n", - team_exec.m_group_rank, - team_exec.m_team_rank, - uintptr_t(task_shared), - uintptr_t(task) - ); -fflush(stdout); -#endif - - if (0 == task) break; // 0 == m_ready_count - - if (end == task) { - team_exec.team_barrier(); - } else if (task_root_type::TaskTeam == task->m_task_type) { - // Thread Team Task - (*task->m_apply)(task, &team_exec); - - // The m_apply function performs a barrier - - if (0 == team_exec.team_rank()) { - // team member #0 completes the task, which may delete the task - queue->complete(task); - } - } else { - // Single Thread Task - - if (0 == team_exec.team_rank()) { - (*task->m_apply)(task, &single_exec); - - queue->complete(task); - } - - // All team members wait for whole team to reach this statement. - // Not necessary to complete the task. - // Is necessary to prevent task_shared from being updated - // before it is read by all threads. - team_exec.team_barrier(); - } - } while (1); - } - // END #pragma omp parallel -} - -void TaskQueueSpecialization:: - iff_single_thread_recursive_execute( - TaskQueue *const queue) { - using execution_space = Kokkos::Qthreads; - using queue_type = TaskQueue; - using task_root_type = TaskBase; - using Member = TaskExec; - - if (1 == omp_get_num_threads()) { - task_root_type *const end = (task_root_type *)task_root_type::EndTag; - - Member single_exec; - - 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_task(&queue->m_ready[i][j]); - } - } - - if (end == task) break; - - (*task->m_apply)(task, &single_exec); - - queue->complete(task); - - } while (1); - } -} - -} // namespace Impl -} // namespace Kokkos - -//---------------------------------------------------------------------------- -#else -void KOKKOS_SRC_QTHREADS_TASK_PREVENT_LINK_ERROR() {} -#endif /* #if defined( KOKKOS_ENABLE_QTHREADS ) && defined( \ - KOKKOS_ENABLE_TASKPOLICY ) */ diff --git a/lib/kokkos/core/src/Qthreads/Kokkos_Qthreads_Task.hpp b/lib/kokkos/core/src/Qthreads/Kokkos_Qthreads_Task.hpp deleted file mode 100644 index 1b2c3d3855..0000000000 --- a/lib/kokkos/core/src/Qthreads/Kokkos_Qthreads_Task.hpp +++ /dev/null @@ -1,149 +0,0 @@ -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// 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 NTESS "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 NTESS 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_QTHREADS_TASK_HPP -#define KOKKOS_IMPL_QTHREADS_TASK_HPP - -#include -#if defined(KOKKOS_ENABLE_QTHREADS) && defined(KOKKOS_ENABLE_TASKPOLICY) - -//---------------------------------------------------------------------------- -//---------------------------------------------------------------------------- - -namespace Kokkos { -namespace Impl { - -template <> -class TaskQueueSpecialization { - public: - using execution_space = Kokkos::Qthreads; - using queue_type = Kokkos::Impl::TaskQueue; - using task_base_type = Kokkos::Impl::TaskBase; - - // Must specify memory space - using memory_space = Kokkos::HostSpace; - - static void iff_single_thread_recursive_execute(queue_type* const); - - // Must provide task queue execution function - static void execute(queue_type* const); - - // Must provide mechanism to set function pointer in - // execution space from the host process. - template - static void proc_set_apply(task_base_type::function_type* ptr) { - using TaskType = TaskBase; - *ptr = TaskType::apply; - } -}; - -extern template class TaskQueue; - -//---------------------------------------------------------------------------- - -template <> -class TaskExec { - private: - TaskExec(TaskExec&&) = delete; - TaskExec(TaskExec const&) = delete; - TaskExec& operator=(TaskExec&&) = delete; - TaskExec& operator=(TaskExec const&) = delete; - - using PoolExec = Kokkos::Impl::QthreadsExec; - - friend class Kokkos::Impl::TaskQueue; - friend class Kokkos::Impl::TaskQueueSpecialization; - - PoolExec* const m_self_exec; ///< This thread's thread pool data structure - PoolExec* const m_team_exec; ///< Team thread's thread pool data structure - int64_t m_sync_mask; - int64_t mutable m_sync_value; - int mutable m_sync_step; - int m_group_rank; ///< Which "team" subset of thread pool - int m_team_rank; ///< Which thread within a team - int m_team_size; - - TaskExec(); - TaskExec(PoolExec& arg_exec, int arg_team_size); - - public: -#if defined(KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_HOST) - void* team_shared() const { - return m_team_exec ? m_team_exec->scratch_thread() : (void*)0; - } - - int team_shared_size() const { - return m_team_exec ? m_team_exec->scratch_thread_size() : 0; - } - - /**\brief Whole team enters this function call - * before any teeam member returns from - * this function call. - */ - void team_barrier() const; -#else - KOKKOS_INLINE_FUNCTION void team_barrier() const {} - KOKKOS_INLINE_FUNCTION void* team_shared() const { return 0; } - KOKKOS_INLINE_FUNCTION int team_shared_size() const { return 0; } -#endif - - KOKKOS_INLINE_FUNCTION - int team_rank() const { return m_team_rank; } - - KOKKOS_INLINE_FUNCTION - int team_size() const { return m_team_size; } -}; - -} // namespace Impl -} // namespace Kokkos - -//---------------------------------------------------------------------------- -//---------------------------------------------------------------------------- - -//---------------------------------------------------------------------------- -//---------------------------------------------------------------------------- - -#endif /* #if defined( KOKKOS_ENABLE_TASKPOLICY ) */ -#endif /* #ifndef KOKKOS_IMPL_QTHREADS_TASK_HPP */ diff --git a/lib/kokkos/core/src/Qthreads/Kokkos_Qthreads_TaskPolicy.cpp.old b/lib/kokkos/core/src/Qthreads/Kokkos_Qthreads_TaskPolicy.cpp.old deleted file mode 100644 index a59afb2881..0000000000 --- a/lib/kokkos/core/src/Qthreads/Kokkos_Qthreads_TaskPolicy.cpp.old +++ /dev/null @@ -1,493 +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 H. Carter Edwards (hcedwar@sandia.gov) -// -// ************************************************************************ -//@HEADER -*/ - -// Experimental unified task-data parallel manycore LDRD. - - -#include -#if defined( KOKKOS_ENABLE_QTHREADS ) - -#include - -#include -#include - -#include -#include -#include -#include - -#include -#include - -#if defined( KOKKOS_ENABLE_TASKDAG ) - -namespace Kokkos { -namespace Experimental { -namespace Impl { - -typedef TaskMember< Kokkos::Qthreads , void , void > Task ; - -namespace { - -inline -unsigned padded_sizeof_derived( unsigned sizeof_derived ) -{ - return sizeof_derived + - ( sizeof_derived % sizeof(Task*) ? sizeof(Task*) - sizeof_derived % sizeof(Task*) : 0 ); -} - -// int lock_alloc_dealloc = 0 ; - -} // namespace - -void Task::deallocate( void * ptr ) -{ - // Counting on 'free' thread safety so lock/unlock not required. - // However, isolate calls here to mitigate future need to introduce lock/unlock. - - // lock - - // while ( ! Kokkos::atomic_compare_exchange_strong( & lock_alloc_dealloc , 0 , 1 ) ); - - free( ptr ); - - // unlock - - // Kokkos::atomic_compare_exchange_strong( & lock_alloc_dealloc , 1 , 0 ); -} - -void * Task::allocate( const unsigned arg_sizeof_derived - , const unsigned arg_dependence_capacity ) -{ - // Counting on 'malloc' thread safety so lock/unlock not required. - // However, isolate calls here to mitigate future need to introduce lock/unlock. - - // lock - - // while ( ! Kokkos::atomic_compare_exchange_strong( & lock_alloc_dealloc , 0 , 1 ) ); - - void * const ptr = malloc( padded_sizeof_derived( arg_sizeof_derived ) + arg_dependence_capacity * sizeof(Task*) ); - - // unlock - - // Kokkos::atomic_compare_exchange_strong( & lock_alloc_dealloc , 1 , 0 ); - - return ptr ; -} - -Task::~TaskMember() -{ - -} - - -Task::TaskMember( const function_verify_type arg_verify - , const function_dealloc_type arg_dealloc - , const function_single_type arg_apply_single - , const function_team_type arg_apply_team - , volatile int & arg_active_count - , const unsigned arg_sizeof_derived - , const unsigned arg_dependence_capacity - ) - : m_dealloc( arg_dealloc ) - , m_verify( arg_verify ) - , m_apply_single( arg_apply_single ) - , m_apply_team( arg_apply_team ) - , m_active_count( & arg_active_count ) - , m_qfeb(0) - , m_dep( (Task **)( ((unsigned char *) this) + padded_sizeof_derived( arg_sizeof_derived ) ) ) - , m_dep_capacity( arg_dependence_capacity ) - , m_dep_size( 0 ) - , m_ref_count( 0 ) - , m_state( Kokkos::Experimental::TASK_STATE_CONSTRUCTING ) -{ - qthread_empty( & m_qfeb ); // Set to full when complete - for ( unsigned i = 0 ; i < arg_dependence_capacity ; ++i ) m_dep[i] = 0 ; -} - -Task::TaskMember( const function_dealloc_type arg_dealloc - , const function_single_type arg_apply_single - , const function_team_type arg_apply_team - , volatile int & arg_active_count - , const unsigned arg_sizeof_derived - , const unsigned arg_dependence_capacity - ) - : m_dealloc( arg_dealloc ) - , m_verify( & Task::verify_type ) - , m_apply_single( arg_apply_single ) - , m_apply_team( arg_apply_team ) - , m_active_count( & arg_active_count ) - , m_qfeb(0) - , m_dep( (Task **)( ((unsigned char *) this) + padded_sizeof_derived( arg_sizeof_derived ) ) ) - , m_dep_capacity( arg_dependence_capacity ) - , m_dep_size( 0 ) - , m_ref_count( 0 ) - , m_state( Kokkos::Experimental::TASK_STATE_CONSTRUCTING ) -{ - qthread_empty( & m_qfeb ); // Set to full when complete - for ( unsigned i = 0 ; i < arg_dependence_capacity ; ++i ) m_dep[i] = 0 ; -} - -//---------------------------------------------------------------------------- - -void Task::throw_error_add_dependence() const -{ - std::cerr << "TaskMember< Qthreads >::add_dependence ERROR" - << " state(" << m_state << ")" - << " dep_size(" << m_dep_size << ")" - << std::endl ; - throw std::runtime_error("TaskMember< Qthreads >::add_dependence ERROR"); -} - -void Task::throw_error_verify_type() -{ - throw std::runtime_error("TaskMember< Qthreads >::verify_type ERROR"); -} - -//---------------------------------------------------------------------------- - -#if defined( KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_HOST ) -void Task::assign( Task ** const lhs , Task * rhs , const bool no_throw ) -{ - static const char msg_error_header[] = "Kokkos::Impl::TaskManager::assign ERROR" ; - static const char msg_error_count[] = ": negative reference count" ; - static const char msg_error_complete[] = ": destroy task that is not complete" ; - static const char msg_error_dependences[] = ": destroy task that has dependences" ; - static const char msg_error_exception[] = ": caught internal exception" ; - - if ( rhs ) { Kokkos::atomic_increment( &(*rhs).m_ref_count ); } - - Task * const lhs_val = Kokkos::atomic_exchange( lhs , rhs ); - - if ( lhs_val ) { - - const int count = Kokkos::atomic_fetch_add( & (*lhs_val).m_ref_count , -1 ); - - const char * msg_error = 0 ; - - try { - - if ( 1 == count ) { - - // Reference count at zero, delete it - - // Should only be deallocating a completed task - if ( (*lhs_val).m_state == Kokkos::Experimental::TASK_STATE_COMPLETE ) { - - // A completed task should not have dependences... - for ( int i = 0 ; i < (*lhs_val).m_dep_size && 0 == msg_error ; ++i ) { - if ( (*lhs_val).m_dep[i] ) msg_error = msg_error_dependences ; - } - } - else { - msg_error = msg_error_complete ; - } - - if ( 0 == msg_error ) { - // Get deletion function and apply it - const Task::function_dealloc_type d = (*lhs_val).m_dealloc ; - - (*d)( lhs_val ); - } - } - else if ( count <= 0 ) { - msg_error = msg_error_count ; - } - } - catch( ... ) { - if ( 0 == msg_error ) msg_error = msg_error_exception ; - } - - if ( 0 != msg_error ) { - if ( no_throw ) { - std::cerr << msg_error_header << msg_error << std::endl ; - std::cerr.flush(); - } - else { - std::string msg(msg_error_header); - msg.append(msg_error); - throw std::runtime_error( msg ); - } - } - } -} -#endif - - -//---------------------------------------------------------------------------- - -void Task::closeout() -{ - enum { RESPAWN = int( Kokkos::Experimental::TASK_STATE_WAITING ) | - int( Kokkos::Experimental::TASK_STATE_EXECUTING ) }; - -#if 0 -fprintf( stdout - , "worker(%d.%d) task 0x%.12lx %s\n" - , qthread_shep() - , qthread_worker_local(NULL) - , reinterpret_cast(this) - , ( m_state == RESPAWN ? "respawn" : "complete" ) - ); -fflush(stdout); -#endif - - // When dependent tasks run there would be a race - // condition between destroying this task and - // querying the active count pointer from this task. - int volatile * const active_count = m_active_count ; - - if ( m_state == RESPAWN ) { - // Task requests respawn, set state to waiting and reschedule the task - m_state = Kokkos::Experimental::TASK_STATE_WAITING ; - schedule(); - } - else { - - // Task did not respawn, is complete - m_state = Kokkos::Experimental::TASK_STATE_COMPLETE ; - - // Release dependences before allowing dependent tasks to run. - // Otherwise there is a thread race condition for removing dependences. - for ( int i = 0 ; i < m_dep_size ; ++i ) { - assign( & m_dep[i] , 0 ); - } - - // Set Qthreads FEB to full so that dependent tasks are allowed to execute. - // This 'task' may be deleted immediately following this function call. - qthread_fill( & m_qfeb ); - - // The dependent task could now complete and destroy 'this' task - // before the call to 'qthread_fill' returns. Therefore, for - // thread safety assume that 'this' task has now been destroyed. - } - - // Decrement active task count before returning. - Kokkos::atomic_decrement( active_count ); -} - -aligned_t Task::qthread_func( void * arg ) -{ - Task * const task = reinterpret_cast< Task * >(arg); - - // First member of the team change state to executing. - // Use compare-exchange to avoid race condition with a respawn. - Kokkos::atomic_compare_exchange_strong( & task->m_state - , int(Kokkos::Experimental::TASK_STATE_WAITING) - , int(Kokkos::Experimental::TASK_STATE_EXECUTING) - ); - - if ( task->m_apply_team && ! task->m_apply_single ) { - Kokkos::Impl::QthreadsTeamPolicyMember::TaskTeam task_team_tag ; - - // Initialize team size and rank with shephered info - Kokkos::Impl::QthreadsTeamPolicyMember member( task_team_tag ); - - (*task->m_apply_team)( task , member ); - -#if 0 -fprintf( stdout - , "worker(%d.%d) task 0x%.12lx executed by member(%d:%d)\n" - , qthread_shep() - , qthread_worker_local(NULL) - , reinterpret_cast(task) - , member.team_rank() - , member.team_size() - ); -fflush(stdout); -#endif - - member.team_barrier(); - if ( member.team_rank() == 0 ) task->closeout(); - member.team_barrier(); - } - else if ( task->m_apply_team && task->m_apply_single == reinterpret_cast(1) ) { - // Team hard-wired to one, no cloning - Kokkos::Impl::QthreadsTeamPolicyMember member ; - (*task->m_apply_team)( task , member ); - task->closeout(); - } - else { - (*task->m_apply_single)( task ); - task->closeout(); - } - -#if 0 -fprintf( stdout - , "worker(%d.%d) task 0x%.12lx return\n" - , qthread_shep() - , qthread_worker_local(NULL) - , reinterpret_cast(task) - ); -fflush(stdout); -#endif - - return 0 ; -} - -void Task::respawn() -{ - // Change state from pure executing to ( waiting | executing ) - // to avoid confusion with simply waiting. - Kokkos::atomic_compare_exchange_strong( & m_state - , int(Kokkos::Experimental::TASK_STATE_EXECUTING) - , int(Kokkos::Experimental::TASK_STATE_WAITING | - Kokkos::Experimental::TASK_STATE_EXECUTING) - ); -} - -void Task::schedule() -{ - // Is waiting for execution - - // Increment active task count before spawning. - Kokkos::atomic_increment( m_active_count ); - - // spawn in Qthreads. must malloc the precondition array and give to Qthreads. - // Qthreads will eventually free this allocation so memory will not be leaked. - - // concern with thread safety of malloc, does this need to be guarded? - aligned_t ** qprecon = (aligned_t **) malloc( ( m_dep_size + 1 ) * sizeof(aligned_t *) ); - - qprecon[0] = reinterpret_cast( uintptr_t(m_dep_size) ); - - for ( int i = 0 ; i < m_dep_size ; ++i ) { - qprecon[i+1] = & m_dep[i]->m_qfeb ; // Qthreads precondition flag - } - - if ( m_apply_team && ! m_apply_single ) { - // If more than one shepherd spawn on a shepherd other than this shepherd - const int num_shepherd = qthread_num_shepherds(); - const int num_worker_per_shepherd = qthread_num_workers_local(NO_SHEPHERD); - const int this_shepherd = qthread_shep(); - - int spawn_shepherd = ( this_shepherd + 1 ) % num_shepherd ; - -#if 0 -fprintf( stdout - , "worker(%d.%d) task 0x%.12lx spawning on shepherd(%d) clone(%d)\n" - , qthread_shep() - , qthread_worker_local(NULL) - , reinterpret_cast(this) - , spawn_shepherd - , num_worker_per_shepherd - 1 - ); -fflush(stdout); -#endif - - qthread_spawn_cloneable - ( & Task::qthread_func - , this - , 0 - , NULL - , m_dep_size , qprecon /* dependences */ - , spawn_shepherd - , unsigned( QTHREAD_SPAWN_SIMPLE | QTHREAD_SPAWN_LOCAL_PRIORITY ) - , num_worker_per_shepherd - 1 - ); - } - else { - qthread_spawn( & Task::qthread_func /* function */ - , this /* function argument */ - , 0 - , NULL - , m_dep_size , qprecon /* dependences */ - , NO_SHEPHERD - , QTHREAD_SPAWN_SIMPLE /* allows optimization for non-blocking task */ - ); - } -} - -} // namespace Impl -} // namespace Experimental -} // namespace Kokkos - -namespace Kokkos { -namespace Experimental { - -TaskPolicy< Kokkos::Qthreads >:: -TaskPolicy - ( const unsigned /* arg_task_max_count */ - , const unsigned /* arg_task_max_size */ - , const unsigned arg_task_default_dependence_capacity - , const unsigned arg_task_team_size - ) - : m_default_dependence_capacity( arg_task_default_dependence_capacity ) - , m_team_size( arg_task_team_size != 0 ? arg_task_team_size : unsigned(qthread_num_workers_local(NO_SHEPHERD)) ) - , m_active_count_root(0) - , m_active_count( m_active_count_root ) -{ - const unsigned num_worker_per_shepherd = unsigned( qthread_num_workers_local(NO_SHEPHERD) ); - - if ( m_team_size != 1 && m_team_size != num_worker_per_shepherd ) { - std::ostringstream msg ; - msg << "Kokkos::Experimental::TaskPolicy< Kokkos::Qthreads >( " - << "default_depedence = " << arg_task_default_dependence_capacity - << " , team_size = " << arg_task_team_size - << " ) ERROR, valid team_size arguments are { (omitted) , 1 , " << num_worker_per_shepherd << " }" ; - Kokkos::Impl::throw_runtime_exception(msg.str()); - } -} - -TaskPolicy< Kokkos::Qthreads >::member_type & -TaskPolicy< Kokkos::Qthreads >::member_single() -{ - static member_type s ; - return s ; -} - -void wait( Kokkos::Experimental::TaskPolicy< Kokkos::Qthreads > & policy ) -{ - volatile int * const active_task_count = & policy.m_active_count ; - while ( *active_task_count ) qthread_yield(); -} - -} // namespace Experimental -} // namespace Kokkos - -#else -void KOKKOS_CORE_SRC_QTHREADS_KOKKOS_QTHREADS_TASKPOLICY_PREVENT_LINK_ERROR() {} -#endif // #if defined( KOKKOS_ENABLE_TASKDAG ) -#endif // #if defined( KOKKOS_ENABLE_QTHREADS ) - diff --git a/lib/kokkos/core/src/Qthreads/Kokkos_Qthreads_TaskPolicy.hpp.old b/lib/kokkos/core/src/Qthreads/Kokkos_Qthreads_TaskPolicy.hpp.old deleted file mode 100644 index adb6859763..0000000000 --- a/lib/kokkos/core/src/Qthreads/Kokkos_Qthreads_TaskPolicy.hpp.old +++ /dev/null @@ -1,666 +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 H. Carter Edwards (hcedwar@sandia.gov) -// -// ************************************************************************ -//@HEADER -*/ - -// Experimental unified task-data parallel manycore LDRD - -#ifndef KOKKOS_QTHREADS_TASKSCHEDULER_HPP -#define KOKKOS_QTHREADS_TASKSCHEDULER_HPP - -#include -#if defined( KOKKOS_ENABLE_TASKDAG ) - -#include -#include -#include - -//---------------------------------------------------------------------------- -// Defines to enable experimental Qthreads functionality - -#define QTHREAD_LOCAL_PRIORITY -#define CLONED_TASKS - -#include - -#undef QTHREAD_LOCAL_PRIORITY -#undef CLONED_TASKS - -//---------------------------------------------------------------------------- - -#include -#include -#include - -#include - - -//---------------------------------------------------------------------------- - -namespace Kokkos { -namespace Experimental { -namespace Impl { - -template<> -class TaskMember< Kokkos::Qthreads , void , void > -{ -public: - - typedef TaskMember * (* function_verify_type) ( TaskMember * ); - typedef void (* function_single_type) ( TaskMember * ); - typedef void (* function_team_type) ( TaskMember * , Kokkos::Impl::QthreadsTeamPolicyMember & ); - typedef void (* function_dealloc_type)( TaskMember * ); - -private: - - const function_dealloc_type m_dealloc ; ///< Deallocation - const function_verify_type m_verify ; ///< Result type verification - const function_single_type m_apply_single ; ///< Apply function - const function_team_type m_apply_team ; ///< Apply function - int volatile * const m_active_count ; ///< Count of active tasks on this policy - aligned_t m_qfeb ; ///< Qthreads full/empty bit - TaskMember ** const m_dep ; ///< Dependences - const int m_dep_capacity ; ///< Capacity of dependences - int m_dep_size ; ///< Actual count of dependences - int m_ref_count ; ///< Reference count - int m_state ; ///< State of the task - - TaskMember() /* = delete */ ; - TaskMember( const TaskMember & ) /* = delete */ ; - TaskMember & operator = ( const TaskMember & ) /* = delete */ ; - - static aligned_t qthread_func( void * arg ); - - static void * allocate( const unsigned arg_sizeof_derived , const unsigned arg_dependence_capacity ); - static void deallocate( void * ); - - void throw_error_add_dependence() const ; - static void throw_error_verify_type(); - - template < class DerivedTaskType > - static - void deallocate( TaskMember * t ) - { - DerivedTaskType * ptr = static_cast< DerivedTaskType * >(t); - ptr->~DerivedTaskType(); - deallocate( (void *) ptr ); - } - - void schedule(); - void closeout(); - -protected : - - ~TaskMember(); - - // Used by TaskMember< Qthreads , ResultType , void > - TaskMember( const function_verify_type arg_verify - , const function_dealloc_type arg_dealloc - , const function_single_type arg_apply_single - , const function_team_type arg_apply_team - , volatile int & arg_active_count - , const unsigned arg_sizeof_derived - , const unsigned arg_dependence_capacity - ); - - // Used for TaskMember< Qthreads , void , void > - TaskMember( const function_dealloc_type arg_dealloc - , const function_single_type arg_apply_single - , const function_team_type arg_apply_team - , volatile int & arg_active_count - , const unsigned arg_sizeof_derived - , const unsigned arg_dependence_capacity - ); - -public: - - template< typename ResultType > - KOKKOS_FUNCTION static - TaskMember * verify_type( TaskMember * t ) - { - enum { check_type = ! std::is_same< ResultType , void >::value }; - - if ( check_type && t != 0 ) { - - // Verify that t->m_verify is this function - const function_verify_type self = & TaskMember::template verify_type< ResultType > ; - - if ( t->m_verify != self ) { - t = 0 ; -#if defined( KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_HOST ) - throw_error_verify_type(); -#endif - } - } - return t ; - } - - //---------------------------------------- - /* Inheritence Requirements on task types: - * typedef FunctorType::value_type value_type ; - * class DerivedTaskType - * : public TaskMember< Qthreads , value_type , FunctorType > - * { ... }; - * class TaskMember< Qthreads , value_type , FunctorType > - * : public TaskMember< Qthreads , value_type , void > - * , public Functor - * { ... }; - * If value_type != void - * class TaskMember< Qthreads , value_type , void > - * : public TaskMember< Qthreads , void , void > - * - * Allocate space for DerivedTaskType followed by TaskMember*[ dependence_capacity ] - * - */ - - /** \brief Allocate and construct a single-thread task */ - template< class DerivedTaskType > - static - TaskMember * create_single( const typename DerivedTaskType::functor_type & arg_functor - , volatile int & arg_active_count - , const unsigned arg_dependence_capacity ) - { - typedef typename DerivedTaskType::functor_type functor_type ; - typedef typename functor_type::value_type value_type ; - - DerivedTaskType * const task = - new( allocate( sizeof(DerivedTaskType) , arg_dependence_capacity ) ) - DerivedTaskType( & TaskMember::template deallocate< DerivedTaskType > - , & TaskMember::template apply_single< functor_type , value_type > - , 0 - , arg_active_count - , sizeof(DerivedTaskType) - , arg_dependence_capacity - , arg_functor ); - - return static_cast< TaskMember * >( task ); - } - - /** \brief Allocate and construct a team-thread task */ - template< class DerivedTaskType > - static - TaskMember * create_team( const typename DerivedTaskType::functor_type & arg_functor - , volatile int & arg_active_count - , const unsigned arg_dependence_capacity - , const bool arg_is_team ) - { - typedef typename DerivedTaskType::functor_type functor_type ; - typedef typename functor_type::value_type value_type ; - - const function_single_type flag = reinterpret_cast( arg_is_team ? 0 : 1 ); - - DerivedTaskType * const task = - new( allocate( sizeof(DerivedTaskType) , arg_dependence_capacity ) ) - DerivedTaskType( & TaskMember::template deallocate< DerivedTaskType > - , flag - , & TaskMember::template apply_team< functor_type , value_type > - , arg_active_count - , sizeof(DerivedTaskType) - , arg_dependence_capacity - , arg_functor ); - - return static_cast< TaskMember * >( task ); - } - - void respawn(); - void spawn() - { - m_state = Kokkos::Experimental::TASK_STATE_WAITING ; - schedule(); - } - - //---------------------------------------- - - typedef FutureValueTypeIsVoidError get_result_type ; - - KOKKOS_INLINE_FUNCTION - get_result_type get() const { return get_result_type() ; } - - KOKKOS_INLINE_FUNCTION - Kokkos::Experimental::TaskState get_state() const { return Kokkos::Experimental::TaskState( m_state ); } - - //---------------------------------------- - -#if defined( KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_HOST ) - static - void assign( TaskMember ** const lhs , TaskMember * const rhs , const bool no_throw = false ); -#else - KOKKOS_INLINE_FUNCTION static - void assign( TaskMember ** const lhs , TaskMember * const rhs , const bool no_throw = false ) {} -#endif - - KOKKOS_INLINE_FUNCTION - TaskMember * get_dependence( int i ) const - { return ( Kokkos::Experimental::TASK_STATE_EXECUTING == m_state && 0 <= i && i < m_dep_size ) ? m_dep[i] : (TaskMember*) 0 ; } - - KOKKOS_INLINE_FUNCTION - int get_dependence() const - { return m_dep_size ; } - - KOKKOS_INLINE_FUNCTION - void clear_dependence() - { - for ( int i = 0 ; i < m_dep_size ; ++i ) assign( m_dep + i , 0 ); - m_dep_size = 0 ; - } - - KOKKOS_INLINE_FUNCTION - void add_dependence( TaskMember * before ) - { - if ( ( Kokkos::Experimental::TASK_STATE_CONSTRUCTING == m_state || - Kokkos::Experimental::TASK_STATE_EXECUTING == m_state ) && - m_dep_size < m_dep_capacity ) { - assign( m_dep + m_dep_size , before ); - ++m_dep_size ; - } - else { - throw_error_add_dependence(); - } - } - - //---------------------------------------- - - template< class FunctorType , class ResultType > - KOKKOS_INLINE_FUNCTION static - void apply_single( typename std::enable_if< ! std::is_same< ResultType , void >::value , TaskMember * >::type t ) - { - typedef TaskMember< Kokkos::Qthreads , ResultType , FunctorType > derived_type ; - - // TaskMember< Kokkos::Qthreads , ResultType , FunctorType > - // : public TaskMember< Kokkos::Qthreads , ResultType , void > - // , public FunctorType - // { ... }; - - derived_type & m = * static_cast< derived_type * >( t ); - - Kokkos::Impl::FunctorApply< FunctorType , void , ResultType & >::apply( (FunctorType &) m , & m.m_result ); - } - - template< class FunctorType , class ResultType > - KOKKOS_INLINE_FUNCTION static - void apply_single( typename std::enable_if< std::is_same< ResultType , void >::value , TaskMember * >::type t ) - { - typedef TaskMember< Kokkos::Qthreads , ResultType , FunctorType > derived_type ; - - // TaskMember< Kokkos::Qthreads , ResultType , FunctorType > - // : public TaskMember< Kokkos::Qthreads , ResultType , void > - // , public FunctorType - // { ... }; - - derived_type & m = * static_cast< derived_type * >( t ); - - Kokkos::Impl::FunctorApply< FunctorType , void , void >::apply( (FunctorType &) m ); - } - - //---------------------------------------- - - template< class FunctorType , class ResultType > - KOKKOS_INLINE_FUNCTION static - void apply_team( typename std::enable_if< ! std::is_same< ResultType , void >::value , TaskMember * >::type t - , Kokkos::Impl::QthreadsTeamPolicyMember & member ) - { - typedef TaskMember< Kokkos::Qthreads , ResultType , FunctorType > derived_type ; - - derived_type & m = * static_cast< derived_type * >( t ); - - m.FunctorType::apply( member , m.m_result ); - } - - template< class FunctorType , class ResultType > - KOKKOS_INLINE_FUNCTION static - void apply_team( typename std::enable_if< std::is_same< ResultType , void >::value , TaskMember * >::type t - , Kokkos::Impl::QthreadsTeamPolicyMember & member ) - { - typedef TaskMember< Kokkos::Qthreads , ResultType , FunctorType > derived_type ; - - derived_type & m = * static_cast< derived_type * >( t ); - - m.FunctorType::apply( member ); - } -}; - -//---------------------------------------------------------------------------- -/** \brief Base class for tasks with a result value in the Qthreads execution space. - * - * The FunctorType must be void because this class is accessed by the - * Future class for the task and result value. - * - * Must be derived from TaskMember 'root class' so the Future class - * can correctly static_cast from the 'root class' to this class. - */ -template < class ResultType > -class TaskMember< Kokkos::Qthreads , ResultType , void > - : public TaskMember< Kokkos::Qthreads , void , void > -{ -public: - - ResultType m_result ; - - typedef const ResultType & get_result_type ; - - KOKKOS_INLINE_FUNCTION - get_result_type get() const { return m_result ; } - -protected: - - typedef TaskMember< Kokkos::Qthreads , void , void > task_root_type ; - typedef task_root_type::function_dealloc_type function_dealloc_type ; - typedef task_root_type::function_single_type function_single_type ; - typedef task_root_type::function_team_type function_team_type ; - - inline - TaskMember( const function_dealloc_type arg_dealloc - , const function_single_type arg_apply_single - , const function_team_type arg_apply_team - , volatile int & arg_active_count - , const unsigned arg_sizeof_derived - , const unsigned arg_dependence_capacity - ) - : task_root_type( & task_root_type::template verify_type< ResultType > - , arg_dealloc - , arg_apply_single - , arg_apply_team - , arg_active_count - , arg_sizeof_derived - , arg_dependence_capacity ) - , m_result() - {} -}; - -template< class ResultType , class FunctorType > -class TaskMember< Kokkos::Qthreads , ResultType , FunctorType > - : public TaskMember< Kokkos::Qthreads , ResultType , void > - , public FunctorType -{ -public: - - typedef FunctorType functor_type ; - - typedef TaskMember< Kokkos::Qthreads , void , void > task_root_type ; - typedef TaskMember< Kokkos::Qthreads , ResultType , void > task_base_type ; - typedef task_root_type::function_dealloc_type function_dealloc_type ; - typedef task_root_type::function_single_type function_single_type ; - typedef task_root_type::function_team_type function_team_type ; - - inline - TaskMember( const function_dealloc_type arg_dealloc - , const function_single_type arg_apply_single - , const function_team_type arg_apply_team - , volatile int & arg_active_count - , const unsigned arg_sizeof_derived - , const unsigned arg_dependence_capacity - , const functor_type & arg_functor - ) - : task_base_type( arg_dealloc - , arg_apply_single - , arg_apply_team - , arg_active_count - , arg_sizeof_derived - , arg_dependence_capacity ) - , functor_type( arg_functor ) - {} -}; - -} /* namespace Impl */ -} /* namespace Experimental */ -} /* namespace Kokkos */ - -//---------------------------------------------------------------------------- -//---------------------------------------------------------------------------- - -namespace Kokkos { -namespace Experimental { - -void wait( TaskPolicy< Kokkos::Qthreads > & ); - -template<> -class TaskPolicy< Kokkos::Qthreads > -{ -public: - - typedef Kokkos::Qthreads execution_space ; - typedef TaskPolicy execution_policy ; - typedef Kokkos::Impl::QthreadsTeamPolicyMember member_type ; - -private: - - typedef Impl::TaskMember< execution_space , void , void > task_root_type ; - - template< class FunctorType > - static inline - const task_root_type * get_task_root( const FunctorType * f ) - { - typedef Impl::TaskMember< execution_space , typename FunctorType::value_type , FunctorType > task_type ; - return static_cast< const task_root_type * >( static_cast< const task_type * >(f) ); - } - - template< class FunctorType > - static inline - task_root_type * get_task_root( FunctorType * f ) - { - typedef Impl::TaskMember< execution_space , typename FunctorType::value_type , FunctorType > task_type ; - return static_cast< task_root_type * >( static_cast< task_type * >(f) ); - } - - unsigned m_default_dependence_capacity ; - unsigned m_team_size ; - volatile int m_active_count_root ; - volatile int & m_active_count ; - -public: - - TaskPolicy - ( const unsigned arg_task_max_count - , const unsigned arg_task_max_size - , const unsigned arg_task_default_dependence_capacity = 4 - , const unsigned arg_task_team_size = 0 /* choose default */ - ); - - KOKKOS_FUNCTION TaskPolicy() = default ; - KOKKOS_FUNCTION TaskPolicy( TaskPolicy && rhs ) = default ; - KOKKOS_FUNCTION TaskPolicy( const TaskPolicy & rhs ) = default ; - KOKKOS_FUNCTION TaskPolicy & operator = ( TaskPolicy && rhs ) = default ; - KOKKOS_FUNCTION TaskPolicy & operator = ( const TaskPolicy & rhs ) = default ; - - //---------------------------------------- - - KOKKOS_INLINE_FUNCTION - int allocated_task_count() const { return m_active_count ; } - - template< class ValueType > - const Future< ValueType , execution_space > & - spawn( const Future< ValueType , execution_space > & f - , const bool priority = false ) const - { -#if defined( KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_HOST ) - f.m_task->spawn(); -#endif - return f ; - } - - // Create single-thread task - - template< class FunctorType > - KOKKOS_INLINE_FUNCTION - Future< typename FunctorType::value_type , execution_space > - task_create( const FunctorType & functor - , const unsigned dependence_capacity = ~0u ) const - { - typedef typename FunctorType::value_type value_type ; - typedef Impl::TaskMember< execution_space , value_type , FunctorType > task_type ; - return Future< value_type , execution_space >( -#if defined( KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_HOST ) - task_root_type::create_single< task_type > - ( functor - , m_active_count - , ( ~0u == dependence_capacity ? m_default_dependence_capacity : dependence_capacity ) - ) -#endif - ); - } - - template< class FunctorType > - Future< typename FunctorType::value_type , execution_space > - proc_create( const FunctorType & functor - , const unsigned dependence_capacity = ~0u ) const - { return task_create( functor , dependence_capacity ); } - - // Create thread-team task - - template< class FunctorType > - KOKKOS_INLINE_FUNCTION - Future< typename FunctorType::value_type , execution_space > - task_create_team( const FunctorType & functor - , const unsigned dependence_capacity = ~0u ) const - { - typedef typename FunctorType::value_type value_type ; - typedef Impl::TaskMember< execution_space , value_type , FunctorType > task_type ; - - return Future< value_type , execution_space >( -#if defined( KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_HOST ) - task_root_type::create_team< task_type > - ( functor - , m_active_count - , ( ~0u == dependence_capacity ? m_default_dependence_capacity : dependence_capacity ) - , 1 < m_team_size - ) -#endif - ); - } - - template< class FunctorType > - KOKKOS_INLINE_FUNCTION - Future< typename FunctorType::value_type , execution_space > - proc_create_team( const FunctorType & functor - , const unsigned dependence_capacity = ~0u ) const - { return task_create_team( functor , dependence_capacity ); } - - // Add dependence - template< class A1 , class A2 , class A3 , class A4 > - void add_dependence( const Future & after - , const Future & before - , typename std::enable_if - < std::is_same< typename Future::execution_space , execution_space >::value - && - std::is_same< typename Future::execution_space , execution_space >::value - >::type * = 0 - ) - { -#if defined( KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_HOST ) - after.m_task->add_dependence( before.m_task ); -#endif - } - - //---------------------------------------- - // Functions for an executing task functor to query dependences, - // set new dependences, and respawn itself. - - template< class FunctorType > - Future< void , execution_space > - get_dependence( const FunctorType * task_functor , int i ) const - { - return Future( -#if defined( KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_HOST ) - get_task_root(task_functor)->get_dependence(i) -#endif - ); - } - - template< class FunctorType > - int get_dependence( const FunctorType * task_functor ) const -#if defined( KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_HOST ) - { return get_task_root(task_functor)->get_dependence(); } -#else - { return 0 ; } -#endif - - template< class FunctorType > - void clear_dependence( FunctorType * task_functor ) const - { -#if defined( KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_HOST ) - get_task_root(task_functor)->clear_dependence(); -#endif - } - - template< class FunctorType , class A3 , class A4 > - void add_dependence( FunctorType * task_functor - , const Future & before - , typename std::enable_if - < std::is_same< typename Future::execution_space , execution_space >::value - >::type * = 0 - ) - { -#if defined( KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_HOST ) - get_task_root(task_functor)->add_dependence( before.m_task ); -#endif - } - - template< class FunctorType > - void respawn( FunctorType * task_functor - , const bool priority = false ) const - { -#if defined( KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_HOST ) - get_task_root(task_functor)->respawn(); -#endif - } - - template< class FunctorType > - void respawn_needing_memory( FunctorType * task_functor ) const - { -#if defined( KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_HOST ) - get_task_root(task_functor)->respawn(); -#endif - } - - static member_type & member_single(); - - friend void wait( TaskPolicy< Kokkos::Qthreads > & ); -}; - -} /* namespace Experimental */ -} // namespace Kokkos - -//---------------------------------------------------------------------------- -//---------------------------------------------------------------------------- - -#endif /* #if defined( KOKKOS_ENABLE_TASKDAG ) */ -#endif /* #define KOKKOS_QTHREADS_TASK_HPP */ - diff --git a/lib/kokkos/core/src/Qthreads/Kokkos_Qthreads_TaskQueue.hpp b/lib/kokkos/core/src/Qthreads/Kokkos_Qthreads_TaskQueue.hpp deleted file mode 100644 index b9b6dd86e4..0000000000 --- a/lib/kokkos/core/src/Qthreads/Kokkos_Qthreads_TaskQueue.hpp +++ /dev/null @@ -1,321 +0,0 @@ -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// 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 NTESS "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 NTESS 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_QTHREADS_TASKQUEUE_HPP -#define KOKKOS_QTHREADS_TASKQUEUE_HPP - -#include -#if defined(KOKKOS_ENABLE_QTHREADS) && defined(KOKKOS_ENABLE_TASKPOLICY) - -//---------------------------------------------------------------------------- -//---------------------------------------------------------------------------- - -namespace Kokkos { -namespace Impl { - -/** \brief Manage task allocation, deallocation, and scheduling. - * - * Task execution is handled here directly for the Qthread implementation. - */ -template <> -class TaskQueue { - private: - using execution_space = Kokkos::Qthread; - using memory_space = Kokkos::HostSpace using device_type = - Kokkos::Device; - using memory_pool = Kokkos::MemoryPool; - using task_root_type = Kokkos::Impl::TaskBase; - - friend class Kokkos::TaskScheduler; - - struct Destroy { - TaskQueue* m_queue; - void destroy_shared_allocation(); - }; - - //---------------------------------------- - - enum : int { - TASK_STATE_NULL = 0, ///< Does not exist - TASK_STATE_CONSTRUCTING = 1, ///< Is under construction - TASK_STATE_WAITING = 2, ///< Is waiting for execution - TASK_STATE_EXECUTING = 4, ///< Is executing - TASK_STATE_RESPAWN = 8, ///< Requested respawn - TASK_STATE_COMPLETE = 16 ///< Execution is complete - }; - - // Queue is organized as [ priority ][ type ] - - memory_pool m_memory; - unsigned m_team_size; // Number of threads in a team - long m_accum_alloc; // Accumulated number of allocations - int m_count_alloc; // Current number of allocations - int m_max_alloc; // Maximum number of allocations - int m_ready_count; // Number of ready or executing - - //---------------------------------------- - - ~TaskQueue(); - TaskQueue() = delete; - TaskQueue(TaskQueue&&) = delete; - TaskQueue(TaskQueue const&) = delete; - TaskQueue& operator=(TaskQueue&&) = delete; - TaskQueue& operator=(TaskQueue const&) = delete; - - TaskQueue(const memory_space& arg_space, - unsigned const arg_memory_pool_capacity, - unsigned const arg_memory_pool_superblock_capacity_log2); - - // Schedule a task - // Precondition: - // task is not executing - // task->m_next is the dependence or zero - // Postcondition: - // task->m_next is linked list membership - KOKKOS_FUNCTION - void schedule(task_root_type* const); - - // Reschedule a task - // Precondition: - // task is in Executing state - // task->m_next == LockTag - // Postcondition: - // task is in Executing-Respawn state - // task->m_next == 0 (no dependence) - KOKKOS_FUNCTION - void reschedule(task_root_type*); - - // Complete a task - // Precondition: - // task is not executing - // task->m_next == LockTag => task is complete - // task->m_next != LockTag => task is respawn - // Postcondition: - // task->m_wait == LockTag => task is complete - // task->m_wait != LockTag => task is waiting - KOKKOS_FUNCTION - void complete(task_root_type*); - - 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 - } - - void execute() { specialization::execute(this); } - - template - void proc_set_apply(typename task_root_type::function_type* ptr) { - specialization::template proc_set_apply(ptr); - } - - // Assign task pointer with reference counting of assigned tasks - template - KOKKOS_FUNCTION static void assign( - TaskBase** const lhs, - TaskBase* const rhs) { - using task_lhs = TaskBase; -#if 0 - { - printf( "assign( 0x%lx { 0x%lx %d %d }, 0x%lx { 0x%lx %d %d } )\n", - uintptr_t( lhs ? *lhs : 0 ), - uintptr_t( lhs && *lhs ? (*lhs)->m_next : 0 ), - int( lhs && *lhs ? (*lhs)->m_task_type : 0 ), - int( lhs && *lhs ? (*lhs)->m_ref_count : 0 ), - uintptr_t(rhs), - uintptr_t( rhs ? rhs->m_next : 0 ), - int( rhs ? rhs->m_task_type : 0 ), - int( rhs ? rhs->m_ref_count : 0 ) - ); - fflush( stdout ); - } -#endif - - if (*lhs) { - const int count = Kokkos::atomic_fetch_add(&((*lhs)->m_ref_count), -1); - - if ((1 == count) && ((*lhs)->m_state == TASK_STATE_COMPLETE)) { - // Reference count is zero and task is complete, deallocate. - (*lhs)->m_queue->deallocate(*lhs, (*lhs)->m_alloc_size); - } else if (count <= 1) { - Kokkos::abort( - "TaskScheduler task has negative reference count or is incomplete"); - } - - // GEM: Should I check that there are no dependences here? Can the state - // be set to complete while there are still dependences? - } - - if (rhs) { - Kokkos::atomic_fetch_add(&(rhs->m_ref_count), 1); - } - - // Force write of *lhs - - *static_cast(lhs) = rhs; - - Kokkos::memory_fence(); - } - - KOKKOS_FUNCTION - size_t allocate_block_size(size_t n); ///< Actual block size allocated - - KOKKOS_FUNCTION - void* allocate(size_t n); ///< Allocate from the memory pool - - KOKKOS_FUNCTION - void deallocate(void* p, size_t n); ///< Deallocate to the memory pool -}; - -} /* namespace Impl */ -} /* namespace Kokkos */ - -//---------------------------------------------------------------------------- -//---------------------------------------------------------------------------- - -namespace Kokkos { -namespace Impl { - -template <> -class TaskBase { - public: - enum : int16_t { - TaskTeam = TaskBase::TaskTeam, - TaskSingle = TaskBase::TaskSingle, - Aggregate = TaskBase::Aggregate - }; - - enum : uintptr_t { - LockTag = TaskBase::LockTag, - EndTag = TaskBase::EndTag - }; - - using execution_space = Kokkos::Qthread; - using queue_type = TaskQueue; - - template - friend class Kokkos::TaskScheduler; - - typedef void (*function_type)(TaskBase*, void*); - - // sizeof(TaskBase) == 48 - - function_type m_apply; ///< Apply function pointer - queue_type* m_queue; ///< Queue in which this task resides - TaskBase* m_dep; ///< Dependence - 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 - aligned_t m_qfeb; ///< Qthread full/empty bit - int m_state; ///< State of the task - - TaskBase(TaskBase&&) = delete; - TaskBase(const TaskBase&) = delete; - TaskBase& operator=(TaskBase&&) = delete; - TaskBase& operator=(const TaskBase&) = delete; - - KOKKOS_INLINE_FUNCTION ~TaskBase() = default; - - KOKKOS_INLINE_FUNCTION - constexpr TaskBase() noexcept - : m_apply(0), - m_queue(0), - m_dep(0), - m_ref_count(0), - m_alloc_size(0), - m_dep_count(0), - m_task_type(TaskSingle), - m_priority(1 /* TaskRegularPriority */), - m_qfeb(0), - m_state(queue_type::TASK_STATE_CONSTRUCTING) { - qthread_empty(&m_qfeb); // Set to full when complete - } - - //---------------------------------------- - - static aligned_t qthread_func(void* arg); - - KOKKOS_INLINE_FUNCTION - TaskBase** aggregate_dependences() { - return reinterpret_cast(this + 1); - } - - KOKKOS_INLINE_FUNCTION - void requested_respawn() { return m_state == queue_type::TASK_STATE_RESPAWN; } - - KOKKOS_INLINE_FUNCTION - void add_dependence(TaskBase* dep) { - // Assign dependence to m_dep. It will be processed in the subsequent - // call to schedule. Error if the dependence is reset. - if (0 != Kokkos::atomic_exchange(&m_dep, 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_fetch_add(&(dep->m_ref_count), 1); - } - } - - using get_return_type = void; - - KOKKOS_INLINE_FUNCTION - get_return_type get() const {} -}; - -} /* namespace Impl */ -} /* namespace Kokkos */ - -//---------------------------------------------------------------------------- -//---------------------------------------------------------------------------- - -#endif /* #if defined( KOKKOS_ENABLE_TASKPOLICY ) */ -#endif // KOKKOS_QTHREADS_TASKQUEUE_HPP diff --git a/lib/kokkos/core/src/Qthreads/Kokkos_Qthreads_TaskQueue_impl.hpp b/lib/kokkos/core/src/Qthreads/Kokkos_Qthreads_TaskQueue_impl.hpp deleted file mode 100644 index 7a91103ae7..0000000000 --- a/lib/kokkos/core/src/Qthreads/Kokkos_Qthreads_TaskQueue_impl.hpp +++ /dev/null @@ -1,398 +0,0 @@ -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// 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 NTESS "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 NTESS 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_QTHREADS_TASKQUEUE_IMPL_HPP -#define KOKKOS_QTHREADS_TASKQUEUE_IMPL_HPP - -#include -#if defined(KOKKOS_ENABLE_QTHREADS) && defined(KOKKOS_ENABLE_TASKPOLICY) - -namespace Kokkos { -namespace Impl { - -//---------------------------------------------------------------------------- - -template -void TaskQueue::Destroy::destroy_shared_allocation() { - m_queue->~TaskQueue(); -} - -//---------------------------------------------------------------------------- - -template -TaskQueue::TaskQueue( - const TaskQueue::memory_space &arg_space, - unsigned const arg_memory_pool_capacity, - unsigned const arg_memory_pool_superblock_capacity_log2) - : m_memory(arg_space, arg_memory_pool_capacity, - arg_memory_pool_superblock_capacity_log2) - m_team_size(unsigned(qthread_num_workers_local(NO_SHEPHERD))), - m_accum_alloc(0), - m_count_alloc(0), - m_max_alloc(0), - m_ready_count(0) {} - -//---------------------------------------------------------------------------- - -template -TaskQueue::~TaskQueue() { - // Verify that ready count is zero. - if (0 != m_ready_count) { - Kokkos::abort("TaskQueue::~TaskQueue ERROR: has ready or executing tasks"); - } -} - -//---------------------------------------------------------------------------- - -template -KOKKOS_FUNCTION size_t TaskQueue::allocate_block_size(size_t n) { - return m_memory.allocate_block_size(n); -} - -//---------------------------------------------------------------------------- - -template -KOKKOS_FUNCTION void *TaskQueue::allocate(size_t n) { - void *const p = m_memory.allocate(n); - - if (p) { - 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; - } - - return p; -} - -//---------------------------------------------------------------------------- - -template -KOKKOS_FUNCTION void TaskQueue::deallocate(void *p, size_t n) { - m_memory.deallocate(p, n); - Kokkos::atomic_decrement(&m_count_alloc); -} - -//---------------------------------------------------------------------------- - -template -KOKKOS_FUNCTION void TaskQueue::schedule( - TaskQueue::task_root_type *const task) { -#if 0 - printf( "schedule( 0x%lx { %d %d %d }\n", - uintptr_t(task), - task->m_task_type, - task->m_priority, - task->m_ref_count ); -#endif - - // The task has been constructed and is waiting to be executed. - task->m_state = TASK_STATE_WAITING; - - if (task->m_task_type != task_root_type::Aggregate) { - // Scheduling a single or team task. - - // Increment active task count before spawning. - Kokkos::atomic_increment(m_ready_count); - - if (task->m_dep == 0) { - // Schedule a task with no dependences. - - if (task_root_type::TaskTeam == task->m_task_type && m_team_size > 1) { - // If more than one shepherd spawn on a shepherd other than this - // shepherd - const int num_shepherd = qthread_num_shepherds(); - const int this_shepherd = qthread_shep(); - int spawn_shepherd = (this_shepherd + 1) % num_shepherd; - -#if 0 - fprintf( stdout, - "worker(%d.%d) task 0x%.12lx spawning on shepherd(%d) clone(%d)\n", - qthread_shep(), - qthread_worker_local(NULL), - reinterpret_cast(this), - spawn_shepherd, - m_team_size - 1 - ); - fflush(stdout); -#endif - - qthread_spawn_cloneable( - &task_root_type::qthread_func, task, 0, NULL, - 0, // no depenedences - 0, // dependences array - spawn_shepherd, - unsigned(QTHREAD_SPAWN_SIMPLE | QTHREAD_SPAWN_LOCAL_PRIORITY), - m_team_size - 1); - } else { - qthread_spawn( - &task_root_type::qthread_func, task, 0, NULL, - 0, // no depenedences - 0, // dependences array - NO_SHEPHERD, - QTHREAD_SPAWN_SIMPLE /* allows optimization for non-blocking task */ - ); - } - } else if (task->m_dep->m_task_type != task_root_type::Aggregate) - // Malloc the precondition array to pass to qthread_spawn(). For - // non-aggregate tasks, it is a single pointer since there are no - // dependences. Qthreads will eventually free this allocation so memory - // will not be leaked. Is malloc thread-safe? Should this call be - // guarded? The memory can't be allocated from the pool allocator because - // Qthreads frees it using free(). - aligned_t **qprecon = (aligned_t **)malloc(sizeof(aligned_t *)); - - *qprecon = reinterpret_cast(uintptr_t(m_dep_size)); - - if (task->m_task_type == task_root_type::TaskTeam && m_team_size > 1) { - // If more than one shepherd spawn on a shepherd other than this shepherd - const int num_shepherd = qthread_num_shepherds(); - const int this_shepherd = qthread_shep(); - int spawn_shepherd = (this_shepherd + 1) % num_shepherd; - -#if 0 - fprintf( stdout, - "worker(%d.%d) task 0x%.12lx spawning on shepherd(%d) clone(%d)\n", - qthread_shep(), - qthread_worker_local(NULL), - reinterpret_cast(this), - spawn_shepherd, - m_team_size - 1 - ); - fflush(stdout); -#endif - - qthread_spawn_cloneable( - &Task::qthread_func, this, 0, NULL, m_dep_size, - qprecon, /* dependences */ - spawn_shepherd, - unsigned(QTHREAD_SPAWN_SIMPLE | QTHREAD_SPAWN_LOCAL_PRIORITY), - m_team_size - 1); - } else { - qthread_spawn( - &Task::qthread_func, /* function */ - this, /* function argument */ - 0, NULL, m_dep_size, qprecon, /* dependences */ - NO_SHEPHERD, - QTHREAD_SPAWN_SIMPLE /* allows optimization for non-blocking task */ - ); - } - } else { - // GEM: How do I handle an aggregate (when_all) task? - } -} - -//---------------------------------------------------------------------------- - -template -KOKKOS_FUNCTION void TaskQueue::reschedule(task_root_type *task) { - // Precondition: - // task is in Executing state - // task->m_next == LockTag - // - // Postcondition: - // task is in Executing-Respawn state - // task->m_next == 0 (no dependence) - - task_root_type *const zero = (task_root_type *)0; - task_root_type *const lock = (task_root_type *)task_root_type::LockTag; - - if (lock != Kokkos::atomic_exchange(&task->m_next, zero)) { - Kokkos::abort("TaskScheduler::respawn ERROR: already respawned"); - } -} - -//---------------------------------------------------------------------------- - -template -KOKKOS_FUNCTION void TaskQueue::complete( - TaskQueue::task_root_type *task) { - // Complete a runnable task that has finished executing - // or a when_all task when all of its dependeneces are complete. - - task_root_type *const zero = (task_root_type *)0; - task_root_type *const lock = (task_root_type *)task_root_type::LockTag; - task_root_type *const end = (task_root_type *)task_root_type::EndTag; - -#if 0 - printf( "complete( 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 - ); - fflush( stdout ); -#endif - - const bool runnable = task_root_type::Aggregate != task->m_task_type; - - //---------------------------------------- - - if (runnable && lock != task->m_next) { - // Is a runnable task has finished executing and requested respawn. - // Schedule the task for subsequent execution. - - schedule(task); - } - //---------------------------------------- - else { - // Is either an aggregate or a runnable task that executed - // and did not respawn. Transition this task to complete. - - // If 'task' is an aggregate then any of the runnable tasks that - // it depends upon may be attempting to complete this 'task'. - // Must only transition a task once to complete status. - // This is controled by atomically locking the wait queue. - - // Stop other tasks from adding themselves to this task's wait queue - // by locking the head of this task's wait queue. - - task_root_type *x = Kokkos::atomic_exchange(&task->m_wait, lock); - - if (x != (task_root_type *)lock) { - // This thread has transitioned this 'task' to complete. - // 'task' is no longer in a queue and is not executing - // so decrement the reference count from 'task's creation. - // If no other references to this 'task' then it will be deleted. - - TaskQueue::assign(&task, zero); - - // This thread has exclusive access to the wait list so - // the concurrency-safe pop_task function is not needed. - // Schedule the tasks that have been waiting on the input 'task', - // which may have been deleted. - - while (x != end) { - // Set x->m_next = zero <= no dependence - - task_root_type *const next = - (task_root_type *)Kokkos::atomic_exchange(&x->m_next, zero); - - schedule(x); - - x = next; - } - } - } - - if (runnable) { - // A runnable task was popped from a ready queue and executed. - // If respawned into a ready queue then the ready count was incremented - // so decrement whether respawned or not. - Kokkos::atomic_decrement(&m_ready_count); - } -} - -//---------------------------------------------------------------------------- - -template <> -aligned_t TaskBase::qthread_func(void *arg) { - using execution_space = Kokkos::Qthreads; - using task_root_type = TaskBase; - using Member = Kokkos::Impl::QthreadsTeamPolicyMember; - - task_root_type *const task = reinterpret_cast(arg); - - // First member of the team change state to executing. - // Use compare-exchange to avoid race condition with a respawn. - Kokkos::atomic_compare_exchange_strong(&task->m_state, - queue_type::TASK_STATE_WAITING, - queue_type::TASK_STATE_EXECUTING); - - if (task_root_type::TaskTeam == task->m_task_type) { - if (1 < task->m_queue->m_team_size) { - // Team task with team size of more than 1. - Member::TaskTeam task_team_tag; - - // Initialize team size and rank with shephered info - Member member(task_team_tag); - - (*task->m_apply)(task, &member); - -#if 0 - fprintf( stdout, - "worker(%d.%d) task 0x%.12lx executed by member(%d:%d)\n", - qthread_shep(), - qthread_worker_local(NULL), - reinterpret_cast(task), - member.team_rank(), - member.team_size() - ); - fflush(stdout); -#endif - - member.team_barrier(); - if (member.team_rank() == 0) task->closeout(); - member.team_barrier(); - } else { - // Team task with team size of 1. - Member member; - (*task->m_apply)(task, &member); - task->closeout(); - } - } else { - (*task->m_apply)(task); - task->closeout(); - } - -#if 0 -fprintf( stdout - , "worker(%d.%d) task 0x%.12lx return\n" - , qthread_shep() - , qthread_worker_local(NULL) - , reinterpret_cast(task) - ); -fflush(stdout); -#endif - - return 0; -} - -} /* namespace Impl */ -} /* namespace Kokkos */ - -#endif /* #if defined( KOKKOS_ENABLE_TASKPOLICY ) */ -#endif // KOKKOS_QTHREADS_TASKQUEUE_IMPL_HPP diff --git a/lib/kokkos/core/src/Qthreads/README b/lib/kokkos/core/src/Qthreads/README deleted file mode 100644 index e35b1f698e..0000000000 --- a/lib/kokkos/core/src/Qthreads/README +++ /dev/null @@ -1,24 +0,0 @@ - -# This Qthreads back-end uses an experimental branch of the Qthreads repository with special #define options. - -# Cloning repository and branch: - -git clone git@github.com:Qthreads/qthreads.git qthreads - -cd qthreads - -# checkout branch with "cloned tasks" - -git checkout dev-kokkos - -# Configure/autogen - -sh autogen.sh - -# configure with 'hwloc' installation: - -./configure CFLAGS="-DCLONED_TASKS -DQTHREAD_LOCAL_PRIORITY" --with-hwloc=${HWLOCDIR} --prefix=${INSTALLDIR} - -# install - -make install diff --git a/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Parallel.hpp b/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Parallel.hpp index 4ebcdc6f95..8a4d8c07d0 100644 --- a/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Parallel.hpp +++ b/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Parallel.hpp @@ -293,7 +293,6 @@ class TeamPolicyInternal } KOKKOS_INLINE_FUNCTION int team_size() const { return (m_team_size > 0) ? m_team_size : Impl::get_max_tile_thread(); - ; } KOKKOS_INLINE_FUNCTION int league_size() const { return m_league_size; } @@ -837,7 +836,7 @@ class ParallelFor, if (total_size == 0) return; const auto shared_size = FunctorTeamShmemSize::value(f, team_size); - char* scratch = NULL; + char* scratch = nullptr; char* shared = (char*)rocm_device_allocate(shared_size * league_size + scratch_size0 * league_size); if (0 < scratch_size1) @@ -889,7 +888,7 @@ class ParallelReduce, ReducerType, const FunctorType& f, const Policy& policy, const ViewType& result_view, typename std::enable_if::value && !Kokkos::is_reducer_type::value, - void*>::type = NULL) { + void*>::type = nullptr) { typedef typename Policy::work_tag Tag; typedef Kokkos::Impl::FunctorValueTraits ValueTraits; typedef Kokkos::Impl::FunctorValueInit ValueInit; @@ -1106,7 +1105,7 @@ class ParallelReduce, ReducerType, ParallelReduce(const FunctorType& arg_functor, const Policy& arg_policy, const HostViewType& arg_result, typename std::enable_if::value, - void*>::type = NULL) + void*>::type = nullptr) : m_functor(arg_functor), m_policy(arg_policy), m_reducer(InvalidType()), @@ -1149,7 +1148,7 @@ class ParallelReduce, ReducerType, const FunctorType& f, const Policy& policy, const ViewType& result_view, typename std::enable_if::value && !Kokkos::is_reducer_type::value, - void*>::type = NULL) { + void*>::type = nullptr) { const int league_size = policy.league_size(); const int team_size = policy.team_size(f); const int vector_length = policy.vector_length(); @@ -1172,7 +1171,7 @@ class ParallelReduce, ReducerType, FunctorTeamShmemSize::value(f, team_size); char* shared; - char* scratch = NULL; + char* scratch = nullptr; shared = (char*)rocm_device_allocate(league_size * (shared_size + scratch_size0)); @@ -1223,7 +1222,7 @@ class ParallelReduce, ReducerType, const int scratch_size1 = policy.scratch_size(1, team_size); char* shared; - char* scratch = NULL; + char* scratch = nullptr; shared = (char*)rocm_device_allocate((shared_size + scratch_size0) * league_size); if (0 < scratch_size1) diff --git a/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Space.cpp b/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Space.cpp index 501567406d..1a79425f49 100644 --- a/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Space.cpp +++ b/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Space.cpp @@ -409,7 +409,7 @@ void* SharedAllocationRecord:: allocate_tracked(const Kokkos::Experimental::ROCmSpace& arg_space, const std::string& arg_alloc_label, const size_t arg_alloc_size) { - if (!arg_alloc_size) return (void*)0; + if (!arg_alloc_size) return nullptr; SharedAllocationRecord* const r = allocate(arg_space, arg_alloc_label, arg_alloc_size); @@ -621,7 +621,7 @@ namespace Kokkos { namespace { void* rocm_resize_scratch_space(size_t bytes, bool force_shrink) { - static void* ptr = NULL; + static void* ptr = nullptr; static size_t current_size = 0; if (current_size == 0) { current_size = bytes; diff --git a/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Tile.hpp b/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Tile.hpp index da95064eea..3d80b4d440 100644 --- a/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Tile.hpp +++ b/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Tile.hpp @@ -293,8 +293,9 @@ struct tile_buffer { } template - typename Impl::enable_if<(sizeof(Q) <= 8), void>::type action_at( - std::size_t i, Action a) [[hc]] { + typename std::enable_if<(sizeof(Q) <= 8), void>::type action_at(std::size_t i, + Action a) + [[hc]] { element_type* value = (*this)[i]; #if defined(ROCM15) a(value); @@ -316,7 +317,7 @@ struct tile_buffer { } template - typename Impl::enable_if::type action_at( + typename std::enable_if::type action_at( std::size_t i, Action a) [[hc]] { element_type* value = (*this)[i]; #if defined(ROCM15) diff --git a/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Vectorization.hpp b/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Vectorization.hpp index 157c15695b..ae52f8da34 100644 --- a/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Vectorization.hpp +++ b/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Vectorization.hpp @@ -163,7 +163,7 @@ float shfl(const float& val, const int& srcLane, const int& width) { template KOKKOS_INLINE_FUNCTION Scalar shfl(const Scalar& val, const int& srcLane, - const typename Impl::enable_if<(sizeof(Scalar) == 4), int>::type& width) { + const typename std::enable_if<(sizeof(Scalar) == 4), int>::type& width) { Scalar tmp1 = val; float tmp = *reinterpret_cast(&tmp1); tmp = __shfl(tmp, srcLane, width); @@ -182,7 +182,7 @@ double shfl(const double& val, const int& srcLane, const int& width) { template KOKKOS_INLINE_FUNCTION Scalar shfl(const Scalar& val, const int& srcLane, - const typename Impl::enable_if<(sizeof(Scalar) == 8), int>::type& width) { + const typename std::enable_if<(sizeof(Scalar) == 8), int>::type& width) { int lo = __double2loint(*reinterpret_cast(&val)); int hi = __double2hiint(*reinterpret_cast(&val)); lo = __shfl(lo, srcLane, width); @@ -194,7 +194,7 @@ shfl(const Scalar& val, const int& srcLane, template KOKKOS_INLINE_FUNCTION Scalar shfl(const Scalar& val, const int& srcLane, - const typename Impl::enable_if<(sizeof(Scalar) > 8), int>::type& width) { + const typename std::enable_if<(sizeof(Scalar) > 8), int>::type& width) { Impl::shfl_union s_val; Impl::shfl_union r_val; s_val = val; @@ -217,7 +217,7 @@ float shfl_down(const float& val, const int& delta, const int& width) { template KOKKOS_INLINE_FUNCTION Scalar shfl_down( const Scalar& val, const int& delta, - const typename Impl::enable_if<(sizeof(Scalar) == 4), int>::type& width) { + const typename std::enable_if<(sizeof(Scalar) == 4), int>::type& width) { Scalar tmp1 = val; float tmp = *reinterpret_cast(&tmp1); tmp = __shfl_down(tmp, delta, width); @@ -245,7 +245,7 @@ double shfl_down(const double& val, const int& delta, const int& width) { template KOKKOS_INLINE_FUNCTION Scalar shfl_down( const Scalar& val, const int& delta, - const typename Impl::enable_if<(sizeof(Scalar) == 8), int>::type& width) { + const typename std::enable_if<(sizeof(Scalar) == 8), int>::type& width) { int lo = __double2loint(*reinterpret_cast(&val)); int hi = __double2hiint(*reinterpret_cast(&val)); lo = __shfl_down(lo, delta, width); @@ -257,7 +257,7 @@ KOKKOS_INLINE_FUNCTION Scalar shfl_down( template KOKKOS_INLINE_FUNCTION Scalar shfl_down( const Scalar& val, const int& delta, - const typename Impl::enable_if<(sizeof(Scalar) > 8), int>::type& width) { + const typename std::enable_if<(sizeof(Scalar) > 8), int>::type& width) { Impl::shfl_union s_val; Impl::shfl_union r_val; s_val = val; @@ -280,7 +280,7 @@ float shfl_up(const float& val, const int& delta, const int& width) { template KOKKOS_INLINE_FUNCTION Scalar shfl_up( const Scalar& val, const int& delta, - const typename Impl::enable_if<(sizeof(Scalar) == 4), int>::type& width) { + const typename std::enable_if<(sizeof(Scalar) == 4), int>::type& width) { Scalar tmp1 = val; float tmp = *reinterpret_cast(&tmp1); tmp = __shfl_up(tmp, delta, width); @@ -299,7 +299,7 @@ double shfl_up(const double& val, const int& delta, const int& width) { template KOKKOS_INLINE_FUNCTION Scalar shfl_up( const Scalar& val, const int& delta, - const typename Impl::enable_if<(sizeof(Scalar) == 8), int>::type& width) { + const typename std::enable_if<(sizeof(Scalar) == 8), int>::type& width) { int lo = __double2loint(*reinterpret_cast(&val)); int hi = __double2hiint(*reinterpret_cast(&val)); lo = __shfl_up(lo, delta, width); @@ -309,9 +309,9 @@ KOKKOS_INLINE_FUNCTION Scalar shfl_up( } template -KOKKOS_INLINE_FUNCTION Scalar shfl_up( - const Scalar& val, const int& delta, - const typename Impl::enable_if<(sizeof(Scalar) > 8), int>::type& width) { +KOKKOS_INLINE_FUNCTION Scalar +shfl_up(const Scalar& val, const int& delta, + const typename std::enable_if<(sizeof(Scalar) > 8), int>::type& width) { Impl::shfl_union s_val; Impl::shfl_union r_val; s_val = val; diff --git a/lib/kokkos/core/src/Threads/Kokkos_ThreadsExec.cpp b/lib/kokkos/core/src/Threads/Kokkos_ThreadsExec.cpp index d106abf688..7adfd127de 100644 --- a/lib/kokkos/core/src/Threads/Kokkos_ThreadsExec.cpp +++ b/lib/kokkos/core/src/Threads/Kokkos_ThreadsExec.cpp @@ -65,7 +65,7 @@ namespace Impl { namespace { ThreadsExec s_threads_process; -ThreadsExec *s_threads_exec[ThreadsExec::MAX_THREAD_COUNT] = {0}; +ThreadsExec *s_threads_exec[ThreadsExec::MAX_THREAD_COUNT] = {nullptr}; pthread_t s_threads_pid[ThreadsExec::MAX_THREAD_COUNT] = {0}; std::pair s_threads_coord[ThreadsExec::MAX_THREAD_COUNT]; @@ -75,11 +75,9 @@ unsigned s_current_reduce_size = 0; unsigned s_current_shared_size = 0; void (*volatile s_current_function)(ThreadsExec &, const void *); -const void *volatile s_current_function_arg = 0; +const void *volatile s_current_function_arg = nullptr; struct Sentinel { - Sentinel() {} - ~Sentinel() { if (s_thread_pool_size[0] || s_thread_pool_size[1] || s_thread_pool_size[2] || s_current_reduce_size || @@ -129,8 +127,8 @@ void ThreadsExec::driver(void) { } ThreadsExec::ThreadsExec() - : m_pool_base(0), - m_scratch(0), + : m_pool_base(nullptr), + m_scratch(nullptr), m_scratch_reduce_end(0), m_scratch_thread_end(0), m_numa_rank(0), @@ -142,7 +140,7 @@ ThreadsExec::ThreadsExec() if (&s_threads_process != this) { // A spawned thread - ThreadsExec *const nil = 0; + ThreadsExec *const nil = nullptr; // Which entry in 's_threads_exec', possibly determined from hwloc binding const int entry = @@ -192,12 +190,12 @@ ThreadsExec::~ThreadsExec() { if (m_scratch) { Record *const r = Record::get_record(m_scratch); - m_scratch = 0; + m_scratch = nullptr; Record::decrement(r); } - m_pool_base = 0; + m_pool_base = nullptr; m_scratch_reduce_end = 0; m_scratch_thread_end = 0; m_numa_rank = 0; @@ -209,7 +207,7 @@ ThreadsExec::~ThreadsExec() { m_pool_state = ThreadsExec::Terminating; if (&s_threads_process != this && entry < MAX_THREAD_COUNT) { - ThreadsExec *const nil = 0; + ThreadsExec *const nil = nullptr; atomic_compare_exchange(s_threads_exec + entry, this, nil); @@ -223,13 +221,13 @@ ThreadsExec *ThreadsExec::get_thread(const int init_thread_rank) { ThreadsExec *const th = init_thread_rank < s_thread_pool_size[0] ? s_threads_exec[s_thread_pool_size[0] - (init_thread_rank + 1)] - : 0; + : nullptr; - if (0 == th || th->m_pool_rank != init_thread_rank) { + if (nullptr == th || th->m_pool_rank != init_thread_rank) { std::ostringstream msg; msg << "Kokkos::Impl::ThreadsExec::get_thread ERROR : " << "thread " << init_thread_rank << " of " << s_thread_pool_size[0]; - if (0 == th) { + if (nullptr == th) { msg << " does not exist"; } else { msg << " has wrong thread_rank " << th->m_pool_rank; @@ -299,8 +297,8 @@ void ThreadsExec::fence() { ThreadsExec::Active); } - s_current_function = 0; - s_current_function_arg = 0; + s_current_function = nullptr; + s_current_function_arg = nullptr; // Make sure function and arguments are cleared before // potentially re-activating threads with a subsequent launch. @@ -364,7 +362,7 @@ bool ThreadsExec::wake() { ThreadsExec::global_unlock(); if (s_threads_process.m_pool_base) { - execute_sleep(s_threads_process, 0); + execute_sleep(s_threads_process, nullptr); s_threads_process.m_pool_state = ThreadsExec::Inactive; } @@ -394,12 +392,12 @@ void ThreadsExec::execute_serial(void (*func)(ThreadsExec &, const void *)) { if (s_threads_process.m_pool_base) { s_threads_process.m_pool_state = ThreadsExec::Active; - (*func)(s_threads_process, 0); + (*func)(s_threads_process, nullptr); s_threads_process.m_pool_state = ThreadsExec::Inactive; } - s_current_function_arg = 0; - s_current_function = 0; + s_current_function_arg = nullptr; + s_current_function = nullptr; // Make sure function and arguments are cleared before proceeding. memory_fence(); @@ -417,7 +415,7 @@ void ThreadsExec::execute_resize_scratch(ThreadsExec &exec, const void *) { if (exec.m_scratch) { Record *const r = Record::get_record(exec.m_scratch); - exec.m_scratch = 0; + exec.m_scratch = nullptr; Record::decrement(r); } @@ -508,7 +506,7 @@ void ThreadsExec::print_configuration(std::ostream &s, const bool detail) { s << " threads[" << s_thread_pool_size[0] << "]" << " threads_per_numa[" << s_thread_pool_size[1] << "]" << " threads_per_core[" << s_thread_pool_size[2] << "]"; - if (0 == s_threads_process.m_pool_base) { + if (nullptr == s_threads_process.m_pool_base) { s << " Asynchronous"; } s << " ReduceScratch[" << s_current_reduce_size << "]" @@ -547,19 +545,20 @@ void ThreadsExec::print_configuration(std::ostream &s, const bool detail) { //---------------------------------------------------------------------------- -int ThreadsExec::is_initialized() { return 0 != s_threads_exec[0]; } +int ThreadsExec::is_initialized() { return nullptr != s_threads_exec[0]; } void ThreadsExec::initialize(unsigned thread_count, unsigned use_numa_count, unsigned use_cores_per_numa, bool allow_asynchronous_threadpool) { - static const Sentinel sentinel; + // need to provide an initializer for Intel compilers + static const Sentinel sentinel = {}; const bool is_initialized = 0 != s_thread_pool_size[0]; unsigned thread_spawn_failed = 0; for (int i = 0; i < ThreadsExec::MAX_THREAD_COUNT; i++) - s_threads_exec[i] = NULL; + s_threads_exec[i] = nullptr; if (!is_initialized) { // If thread_count, use_numa_count, or use_cores_per_numa are zero @@ -631,8 +630,8 @@ void ThreadsExec::initialize(unsigned thread_count, unsigned use_numa_count, } } - s_current_function = 0; - s_current_function_arg = 0; + s_current_function = nullptr; + s_current_function_arg = nullptr; s_threads_process.m_pool_state = ThreadsExec::Inactive; memory_fence(); @@ -659,7 +658,7 @@ void ThreadsExec::initialize(unsigned thread_count, unsigned use_numa_count, s_threads_process.m_pool_rank, s_threads_process.m_pool_size); s_threads_pid[s_threads_process.m_pool_rank] = pthread_self(); } else { - s_threads_process.m_pool_base = 0; + s_threads_process.m_pool_base = nullptr; s_threads_process.m_pool_rank = 0; s_threads_process.m_pool_size = 0; s_threads_process.m_pool_fan_size = 0; @@ -740,7 +739,7 @@ void ThreadsExec::finalize() { if (s_threads_process.m_pool_base) { (&s_threads_process)->~ThreadsExec(); - s_threads_exec[0] = 0; + s_threads_exec[0] = nullptr; } if (Kokkos::hwloc::can_bind_threads()) { @@ -754,7 +753,7 @@ void ThreadsExec::finalize() { // Reset master thread to run solo. s_threads_process.m_numa_rank = 0; s_threads_process.m_numa_core_rank = 0; - s_threads_process.m_pool_base = 0; + s_threads_process.m_pool_base = nullptr; s_threads_process.m_pool_rank = 0; s_threads_process.m_pool_size = 1; s_threads_process.m_pool_fan_size = 0; diff --git a/lib/kokkos/core/src/Threads/Kokkos_ThreadsExec_base.cpp b/lib/kokkos/core/src/Threads/Kokkos_ThreadsExec_base.cpp index ed7b884a87..40a09ed22a 100644 --- a/lib/kokkos/core/src/Threads/Kokkos_ThreadsExec_base.cpp +++ b/lib/kokkos/core/src/Threads/Kokkos_ThreadsExec_base.cpp @@ -87,7 +87,7 @@ void* internal_pthread_driver(void*) { std::cerr.flush(); std::abort(); } - return NULL; + return nullptr; } } // namespace @@ -105,7 +105,7 @@ bool ThreadsExec::spawn() { 0 == pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED)) { pthread_t pt; - result = 0 == pthread_create(&pt, &attr, internal_pthread_driver, 0); + result = 0 == pthread_create(&pt, &attr, internal_pthread_driver, nullptr); } pthread_attr_destroy(&attr); diff --git a/lib/kokkos/core/src/Threads/Kokkos_ThreadsTeam.hpp b/lib/kokkos/core/src/Threads/Kokkos_ThreadsTeam.hpp index 2cd9d73b2a..fe1a1e8b08 100644 --- a/lib/kokkos/core/src/Threads/Kokkos_ThreadsTeam.hpp +++ b/lib/kokkos/core/src/Threads/Kokkos_ThreadsTeam.hpp @@ -169,7 +169,10 @@ class ThreadsExecTeamMember { KOKKOS_INLINE_FUNCTION void team_broadcast(ValueType& value, const int& thread_id) const { #if !defined(KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_HOST) - {} + { + (void)value; + (void)thread_id; + } #else // Make sure there is enough scratch space: typedef typename if_cscratch_memory()); + memory_fence(); + team_barrier(); if (team_rank() == thread_id) *local_value = value; memory_fence(); team_barrier(); @@ -189,7 +194,11 @@ class ThreadsExecTeamMember { KOKKOS_INLINE_FUNCTION void team_broadcast(Closure const& f, ValueType& value, const int& thread_id) const { #if !defined(KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_HOST) - {} + { + (void)f; + (void)value; + (void)thread_id; + } #else // Make sure there is enough scratch space: typedef typename if_cscratch_memory()); + memory_fence(); + team_barrier(); if (team_rank() == thread_id) *local_value = value; memory_fence(); team_barrier(); @@ -211,7 +222,7 @@ class ThreadsExecTeamMember { team_reduce(const Type& value) const #if !defined(KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_HOST) { - return Type(); + return value; } #else { @@ -221,13 +232,15 @@ class ThreadsExecTeamMember { if (0 == m_exec) return value; - *((volatile type*)m_exec->scratch_memory()) = value; + if (team_rank() != team_size() - 1) + *((volatile type*)m_exec->scratch_memory()) = value; memory_fence(); type& accum = *((type*)m_team_base[0]->scratch_memory()); if (team_fan_in()) { + accum = value; for (int i = 1; i < m_team_size; ++i) { accum += *((type*)m_team_base[i]->scratch_memory()); } @@ -267,7 +280,7 @@ class ThreadsExecTeamMember { type* const local_value = ((type*)m_exec->scratch_memory()); // Set this thread's contribution - *local_value = contribution; + if (team_rank() != team_size() - 1) *local_value = contribution; // Fence to make sure the base team member has access: memory_fence(); @@ -277,6 +290,7 @@ class ThreadsExecTeamMember { // team_fan_out() type* const team_value = ((type*)m_team_base[0]->scratch_memory()); + *team_value = contribution; // Join to the team value: for (int i = 1; i < m_team_size; ++i) { reducer.join(*team_value, *((type*)m_team_base[i]->scratch_memory())); @@ -313,7 +327,8 @@ class ThreadsExecTeamMember { ArgType* const global_accum) const #if !defined(KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_HOST) { - return ArgType(); + (void)global_accum; + return value; } #else { @@ -607,6 +622,11 @@ class TeamPolicyInternal typedef PolicyTraits traits; + const typename traits::execution_space& space() const { + static typename traits::execution_space m_space; + return m_space; + } + TeamPolicyInternal& operator=(const TeamPolicyInternal& p) { m_league_size = p.m_league_size; m_team_size = p.m_team_size; @@ -1167,7 +1187,8 @@ namespace Kokkos { template KOKKOS_INLINE_FUNCTION void single( - const Impl::VectorSingleStruct& single_struct, + const Impl::VectorSingleStruct< + Impl::ThreadsExecTeamMember>& /*single_struct*/, const FunctorType& lambda) { lambda(); } @@ -1181,7 +1202,8 @@ KOKKOS_INLINE_FUNCTION void single( template KOKKOS_INLINE_FUNCTION void single( - const Impl::VectorSingleStruct& single_struct, + const Impl::VectorSingleStruct< + Impl::ThreadsExecTeamMember>& /*single_struct*/, const FunctorType& lambda, ValueType& val) { lambda(val); } diff --git a/lib/kokkos/core/src/Threads/Kokkos_Threads_Parallel.hpp b/lib/kokkos/core/src/Threads/Kokkos_Threads_Parallel.hpp index f45830cb24..fbc83e9a55 100644 --- a/lib/kokkos/core/src/Threads/Kokkos_Threads_Parallel.hpp +++ b/lib/kokkos/core/src/Threads/Kokkos_Threads_Parallel.hpp @@ -492,7 +492,7 @@ class ParallelReduce, ReducerType, const HostViewType &arg_result_view, typename std::enable_if::value && !Kokkos::is_reducer_type::value, - void *>::type = NULL) + void *>::type = nullptr) : m_functor(arg_functor), m_policy(arg_policy), m_reducer(InvalidType()), @@ -650,7 +650,7 @@ class ParallelReduce, ReducerType, const HostViewType &arg_result_view, typename std::enable_if::value && !Kokkos::is_reducer_type::value, - void *>::type = NULL) + void *>::type = nullptr) : m_functor(arg_functor), m_mdr_policy(arg_policy), m_policy(Policy(0, m_mdr_policy.m_num_tiles).set_chunk_size(1)), @@ -774,7 +774,7 @@ class ParallelReduce, const ViewType &arg_result, typename std::enable_if::value && !Kokkos::is_reducer_type::value, - void *>::type = NULL) + void *>::type = nullptr) : m_functor(arg_functor), m_policy(arg_policy), m_reducer(InvalidType()), diff --git a/lib/kokkos/core/src/Threads/Kokkos_Threads_WorkGraphPolicy.hpp b/lib/kokkos/core/src/Threads/Kokkos_Threads_WorkGraphPolicy.hpp index ec2b1d983f..7bcd9aaee0 100644 --- a/lib/kokkos/core/src/Threads/Kokkos_Threads_WorkGraphPolicy.hpp +++ b/lib/kokkos/core/src/Threads/Kokkos_Threads_WorkGraphPolicy.hpp @@ -87,9 +87,10 @@ class ParallelFor, } } - static inline void thread_main(ThreadsExec&, const void* arg) noexcept { + static inline void thread_main(ThreadsExec& exec, const void* arg) noexcept { const Self& self = *(static_cast(arg)); self.exec_one_thread(); + exec.fan_in(); } public: diff --git a/lib/kokkos/core/src/impl/CMakeLists.txt b/lib/kokkos/core/src/impl/CMakeLists.txt index 2f6d8e78a3..361a85b738 100644 --- a/lib/kokkos/core/src/impl/CMakeLists.txt +++ b/lib/kokkos/core/src/impl/CMakeLists.txt @@ -9,7 +9,7 @@ TRIBITS_ADD_LIBRARY( kokkoscore_impl NOINSTALLHEADERS ${HEADERS} SOURCES ${SOURCES} - DEPLIBS + DEPLIBS ) SET(TRILINOS_INCDIR ${CMAKE_INSTALL_PREFIX}/${${PROJECT_NAME}_INSTALL_INCLUDE_DIR}) diff --git a/lib/kokkos/core/src/impl/Kokkos_AnalyzePolicy.hpp b/lib/kokkos/core/src/impl/Kokkos_AnalyzePolicy.hpp index ac86651433..739e2d4f46 100644 --- a/lib/kokkos/core/src/impl/Kokkos_AnalyzePolicy.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_AnalyzePolicy.hpp @@ -177,11 +177,14 @@ struct AnalyzePolicy is_launch_bounds::value, SetLaunchBounds, typename std::conditional< - Experimental::is_work_item_property< - T>::value, + Kokkos::Experimental:: + is_work_item_property::value, SetWorkItemProperty, - SetWorkTag >::type>::type>:: - type>::type>::type>::type>::type::type, + typename std::conditional< + !std::is_void::value, + SetWorkTag, Base>::type>:: + type>::type>::type>::type>::type>::type>:: + type::type, Traits...> {}; template @@ -201,9 +204,9 @@ struct AnalyzePolicy { using index_type = typename std::conditional::value, IndexType, - typename Base::index_type>::type :: - type // nasty hack to make index_type into an integral_type - ; // instead of the wrapped IndexType for backwards compatibility + typename Base::index_type>::type::type; + // nasty hack to make index_type into an integral_type + // instead of the wrapped IndexType for backwards compatibility using iteration_pattern = typename std::conditional< is_void::value, diff --git a/lib/kokkos/core/src/impl/Kokkos_Atomic_Assembly.hpp b/lib/kokkos/core/src/impl/Kokkos_Atomic_Assembly.hpp index 786ffc902f..a31dd1cf49 100644 --- a/lib/kokkos/core/src/impl/Kokkos_Atomic_Assembly.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_Atomic_Assembly.hpp @@ -48,6 +48,8 @@ namespace Kokkos { namespace Impl { + +#if !defined(_WIN32) struct cas128_t { uint64_t lower; uint64_t upper; @@ -85,6 +87,7 @@ struct cas128_t { upper = a.upper; } } __attribute__((__aligned__(16))); +#endif #if defined(KOKKOS_ENABLE_ASM) && defined(KOKKOS_ENABLE_ISA_X86_64) inline cas128_t cas128(volatile cas128_t* ptr, cas128_t cmp, cas128_t swap) { 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 4fe72ad142..c25b80a825 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 @@ -92,8 +92,7 @@ __inline__ __device__ unsigned long long int atomic_compare_exchange( template __inline__ __device__ T atomic_compare_exchange( volatile T* const dest, const T& compare, - typename Kokkos::Impl::enable_if::type - val) { + typename std::enable_if::type val) { const int tmp = atomicCAS((int*)dest, *((int*)&compare), *((int*)&val)); return *((T*)&tmp); } @@ -101,9 +100,9 @@ __inline__ __device__ T atomic_compare_exchange( template __inline__ __device__ T atomic_compare_exchange( volatile T* const dest, const T& compare, - typename Kokkos::Impl::enable_if< - sizeof(T) != sizeof(int) && sizeof(T) == sizeof(unsigned long long int), - const T&>::type val) { + typename std::enable_if::type val) { typedef unsigned long long int type; const type tmp = atomicCAS((type*)dest, *((type*)&compare), *((type*)&val)); return *((T*)&tmp); @@ -112,8 +111,8 @@ __inline__ __device__ T atomic_compare_exchange( template __inline__ __device__ T atomic_compare_exchange( volatile T* const dest, const T& compare, - typename Kokkos::Impl::enable_if<(sizeof(T) != 4) && (sizeof(T) != 8), - const T>::type& val) { + typename std::enable_if<(sizeof(T) != 4) && (sizeof(T) != 8), + const T>::type& val) { T return_val; // This is a way to (hopefully) avoid dead lock in a warp int done = 0; @@ -147,7 +146,7 @@ __inline__ __device__ T atomic_compare_exchange( //---------------------------------------------------------------------------- // 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(KOKKOS_ENABLE_ROCM_ATOMICS) || !defined(KOKKOS_ENABLE_HIP_ATOMICS) #if !defined(__CUDA_ARCH__) || defined(KOKKOS_IMPL_CUDA_CLANG_WORKAROUND) #if defined(KOKKOS_ENABLE_GNU_ATOMICS) || defined(KOKKOS_ENABLE_INTEL_ATOMICS) @@ -188,12 +187,11 @@ inline unsigned long atomic_compare_exchange(volatile unsigned long* const dest, template inline T atomic_compare_exchange( volatile T* const dest, const T& compare, - typename Kokkos::Impl::enable_if::type - val) { + typename std::enable_if::type val) { union U { int i; T t; - KOKKOS_INLINE_FUNCTION U(){}; + KOKKOS_INLINE_FUNCTION U() {} } tmp; #if defined(KOKKOS_ENABLE_RFO_PREFETCH) @@ -208,13 +206,13 @@ inline T atomic_compare_exchange( template inline T atomic_compare_exchange( volatile T* const dest, const T& compare, - typename Kokkos::Impl::enable_if::type val) { + typename std::enable_if::type val) { union U { long i; T t; - KOKKOS_INLINE_FUNCTION U(){}; + KOKKOS_INLINE_FUNCTION U() {} } tmp; #if defined(KOKKOS_ENABLE_RFO_PREFETCH) @@ -230,14 +228,14 @@ inline T atomic_compare_exchange( template inline T atomic_compare_exchange( volatile T* const dest, const T& compare, - typename Kokkos::Impl::enable_if::type val) { + typename std::enable_if::type val) { union U { Impl::cas128_t i; T t; - KOKKOS_INLINE_FUNCTION U(){}; + KOKKOS_INLINE_FUNCTION U() {} } tmp; #if defined(KOKKOS_ENABLE_RFO_PREFETCH) @@ -253,12 +251,12 @@ inline T atomic_compare_exchange( template inline T atomic_compare_exchange( volatile T* const dest, const T compare, - typename Kokkos::Impl::enable_if<(sizeof(T) != 4) && (sizeof(T) != 8) + typename std::enable_if<(sizeof(T) != 4) && (sizeof(T) != 8) #if defined(KOKKOS_ENABLE_ASM) && defined(KOKKOS_ENABLE_ISA_X86_64) - && (sizeof(T) != 16) + && (sizeof(T) != 16) #endif - , - const T>::type& val) { + , + const T>::type& val) { #if defined(KOKKOS_ENABLE_RFO_PREFETCH) _mm_prefetch((const char*)dest, _MM_HINT_ET0); #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 index c2aad61975..e3fd1c53db 100644 --- a/lib/kokkos/core/src/impl/Kokkos_Atomic_Compare_Exchange_Weak.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_Atomic_Compare_Exchange_Weak.hpp @@ -226,7 +226,7 @@ bool atomic_compare_exchange_weak( // 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(KOKKOS_ENABLE_ROCM_ATOMICS) || !defined(KOKKOS_ENABLE_HIP_ATOMICS) #if !defined(__CUDA_ARCH__) || defined(KOKKOS_IMPL_CUDA_CLANG_WORKAROUND) #if defined(KOKKOS_ENABLE_GNU_ATOMICS) || defined(KOKKOS_ENABLE_INTEL_ATOMICS) @@ -267,12 +267,11 @@ inline unsigned long atomic_compare_exchange(volatile unsigned long* const dest, template inline T atomic_compare_exchange( volatile T* const dest, const T& compare, - typename Kokkos::Impl::enable_if::type - val) { + typename std::enable_if::type val) { union U { int i; T t; - KOKKOS_INLINE_FUNCTION U(){}; + KOKKOS_INLINE_FUNCTION U() {} } tmp; #if defined(KOKKOS_ENABLE_RFO_PREFETCH) @@ -287,13 +286,13 @@ inline T atomic_compare_exchange( template inline T atomic_compare_exchange( volatile T* const dest, const T& compare, - typename Kokkos::Impl::enable_if::type val) { + typename std::enable_if::type val) { union U { long i; T t; - KOKKOS_INLINE_FUNCTION U(){}; + KOKKOS_INLINE_FUNCTION U() {} } tmp; #if defined(KOKKOS_ENABLE_RFO_PREFETCH) @@ -309,14 +308,14 @@ inline T atomic_compare_exchange( template inline T atomic_compare_exchange( volatile T* const dest, const T& compare, - typename Kokkos::Impl::enable_if::type val) { + typename std::enable_if::type val) { union U { Impl::cas128_t i; T t; - KOKKOS_INLINE_FUNCTION U(){}; + KOKKOS_INLINE_FUNCTION U() {} } tmp; #if defined(KOKKOS_ENABLE_RFO_PREFETCH) @@ -332,12 +331,12 @@ inline T atomic_compare_exchange( template inline T atomic_compare_exchange( volatile T* const dest, const T compare, - typename Kokkos::Impl::enable_if<(sizeof(T) != 4) && (sizeof(T) != 8) + typename std::enable_if<(sizeof(T) != 4) && (sizeof(T) != 8) #if defined(KOKKOS_ENABLE_ASM) && defined(KOKKOS_ENABLE_ISA_X86_64) - && (sizeof(T) != 16) + && (sizeof(T) != 16) #endif - , - const T>::type& val) { + , + const T>::type& val) { #if defined(KOKKOS_ENABLE_RFO_PREFETCH) _mm_prefetch((const char*)dest, _MM_HINT_ET0); #endif diff --git a/lib/kokkos/core/src/impl/Kokkos_Atomic_Decrement.hpp b/lib/kokkos/core/src/impl/Kokkos_Atomic_Decrement.hpp index 992ae3c005..47961b5c71 100644 --- a/lib/kokkos/core/src/impl/Kokkos_Atomic_Decrement.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_Atomic_Decrement.hpp @@ -54,7 +54,7 @@ namespace Kokkos { -// Atomic increment +// Atomic decrement template <> KOKKOS_INLINE_FUNCTION void atomic_decrement(volatile char* a) { #if defined(KOKKOS_ENABLE_ASM) && defined(KOKKOS_ENABLE_ISA_X86_64) && \ diff --git a/lib/kokkos/core/src/impl/Kokkos_Atomic_Exchange.hpp b/lib/kokkos/core/src/impl/Kokkos_Atomic_Exchange.hpp index 37aebf9a3d..4a9a786df4 100644 --- a/lib/kokkos/core/src/impl/Kokkos_Atomic_Exchange.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_Atomic_Exchange.hpp @@ -84,8 +84,7 @@ __inline__ __device__ unsigned long long int atomic_exchange( template __inline__ __device__ T atomic_exchange( volatile T* const dest, - typename Kokkos::Impl::enable_if::type - val) { + typename std::enable_if::type val) { // int tmp = __ullAtomicExch( (int*) dest , *((int*)&val) ); #if defined(KOKKOS_ENABLE_RFO_PREFETCH) _mm_prefetch((const char*)dest, _MM_HINT_ET0); @@ -98,9 +97,9 @@ __inline__ __device__ T atomic_exchange( template __inline__ __device__ T atomic_exchange( volatile T* const dest, - typename Kokkos::Impl::enable_if< - sizeof(T) != sizeof(int) && sizeof(T) == sizeof(unsigned long long int), - const T&>::type val) { + typename std::enable_if::type val) { typedef unsigned long long int type; #if defined(KOKKOS_ENABLE_RFO_PREFETCH) @@ -113,10 +112,10 @@ __inline__ __device__ T atomic_exchange( } template -__inline__ __device__ T atomic_exchange( - volatile T* const dest, - typename Kokkos::Impl::enable_if<(sizeof(T) != 4) && (sizeof(T) != 8), - const T>::type& val) { +__inline__ __device__ T +atomic_exchange(volatile T* const dest, + typename std::enable_if<(sizeof(T) != 4) && (sizeof(T) != 8), + const T>::type& val) { T return_val; // This is a way to (hopefully) avoid dead lock in a warp #if defined(KOKKOS_ENABLE_RFO_PREFETCH) @@ -152,8 +151,7 @@ __inline__ __device__ T atomic_exchange( template __inline__ __device__ void atomic_assign( volatile T* const dest, - typename Kokkos::Impl::enable_if::type - val) { + typename std::enable_if::type val) { // (void) __ullAtomicExch( (int*) dest , *((int*)&val) ); (void)atomicExch(((int*)dest), *((int*)&val)); } @@ -161,9 +159,9 @@ __inline__ __device__ void atomic_assign( template __inline__ __device__ void atomic_assign( volatile T* const dest, - typename Kokkos::Impl::enable_if< - sizeof(T) != sizeof(int) && sizeof(T) == sizeof(unsigned long long int), - const T&>::type val) { + typename std::enable_if::type val) { typedef unsigned long long int type; // (void) __ullAtomicExch( (type*) dest , *((type*)&val) ); (void)atomicExch(((type*)dest), *((type*)&val)); @@ -172,9 +170,9 @@ __inline__ __device__ void atomic_assign( template __inline__ __device__ void atomic_assign( volatile T* const dest, - typename Kokkos::Impl::enable_if< - sizeof(T) != sizeof(int) && sizeof(T) != sizeof(unsigned long long int), - const T&>::type val) { + typename std::enable_if::type val) { (void)atomic_exchange(dest, val); } @@ -187,11 +185,10 @@ __inline__ __device__ void atomic_assign( #if defined(KOKKOS_ENABLE_GNU_ATOMICS) || defined(KOKKOS_ENABLE_INTEL_ATOMICS) template -inline T atomic_exchange( - volatile T* const dest, - typename Kokkos::Impl::enable_if::type val) { +inline T atomic_exchange(volatile T* const dest, + typename std::enable_if::type val) { typedef typename Kokkos::Impl::if_c::type type; #if defined(KOKKOS_ENABLE_RFO_PREFETCH) @@ -205,7 +202,7 @@ inline T atomic_exchange( union U { T val_T; type val_type; - inline U(){}; + inline U() {} } old; old.val_T = *dest; @@ -223,8 +220,8 @@ inline T atomic_exchange( template inline T atomic_exchange( volatile T* const dest, - typename Kokkos::Impl::enable_if::type val) { + typename std::enable_if::type + val) { #if defined(KOKKOS_ENABLE_RFO_PREFETCH) _mm_prefetch((const char*)dest, _MM_HINT_ET0); #endif @@ -232,7 +229,7 @@ inline T atomic_exchange( union U { Impl::cas128_t i; T t; - inline U(){}; + inline U() {} } assume, oldval, newval; oldval.t = *dest; @@ -252,12 +249,12 @@ inline T atomic_exchange( template inline T atomic_exchange( volatile T* const dest, - typename Kokkos::Impl::enable_if<(sizeof(T) != 4) && (sizeof(T) != 8) + typename std::enable_if<(sizeof(T) != 4) && (sizeof(T) != 8) #if defined(KOKKOS_ENABLE_ASM) && defined(KOKKOS_ENABLE_ISA_X86_64) - && (sizeof(T) != 16) + && (sizeof(T) != 16) #endif - , - const T>::type& val) { + , + const T>::type& val) { while (!Impl::lock_address_host_space((void*)dest)) ; T return_val = *dest; @@ -280,11 +277,10 @@ inline T atomic_exchange( } template -inline void atomic_assign( - volatile T* const dest, - typename Kokkos::Impl::enable_if::type val) { +inline void atomic_assign(volatile T* const dest, + typename std::enable_if::type val) { typedef typename Kokkos::Impl::if_c::type type; @@ -299,7 +295,7 @@ inline void atomic_assign( union U { T val_T; type val_type; - inline U(){}; + inline U() {} } old; old.val_T = *dest; @@ -315,8 +311,8 @@ inline void atomic_assign( template inline void atomic_assign( volatile T* const dest, - typename Kokkos::Impl::enable_if::type val) { + typename std::enable_if::type + val) { #if defined(KOKKOS_ENABLE_RFO_PREFETCH) _mm_prefetch((const char*)dest, _MM_HINT_ET0); #endif @@ -324,7 +320,7 @@ inline void atomic_assign( union U { Impl::cas128_t i; T t; - inline U(){}; + inline U() {} } assume, oldval, newval; oldval.t = *dest; @@ -339,12 +335,12 @@ inline void atomic_assign( template inline void atomic_assign( volatile T* const dest, - typename Kokkos::Impl::enable_if<(sizeof(T) != 4) && (sizeof(T) != 8) + typename std::enable_if<(sizeof(T) != 4) && (sizeof(T) != 8) #if defined(KOKKOS_ENABLE_ASM) && defined(KOKKOS_ENABLE_ISA_X86_64) - && (sizeof(T) != 16) + && (sizeof(T) != 16) #endif - , - const T>::type& val) { + , + const T>::type& val) { while (!Impl::lock_address_host_space((void*)dest)) ; // This is likely an aggregate type with a defined 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 58277740da..0a6900f840 100644 --- a/lib/kokkos/core/src/impl/Kokkos_Atomic_Fetch_Add.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_Atomic_Fetch_Add.hpp @@ -94,14 +94,13 @@ __inline__ __device__ double atomic_fetch_add(volatile double* const dest, template __inline__ __device__ T atomic_fetch_add( volatile T* const dest, - typename Kokkos::Impl::enable_if::type - val) { + typename std::enable_if::type val) { // 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 U1(){}; + KOKKOS_INLINE_FUNCTION U1() {} } assume, oldval, newval; oldval.t = *dest; @@ -118,15 +117,15 @@ __inline__ __device__ T atomic_fetch_add( template __inline__ __device__ 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) { + typename std::enable_if::type val) { // 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 U2(){}; + KOKKOS_INLINE_FUNCTION U2() {} } assume, oldval, newval; oldval.t = *dest; @@ -143,10 +142,10 @@ __inline__ __device__ T atomic_fetch_add( //---------------------------------------------------------------------------- template -__inline__ __device__ T atomic_fetch_add( - volatile T* const dest, - typename Kokkos::Impl::enable_if<(sizeof(T) != 4) && (sizeof(T) != 8), - const T>::type& val) { +__inline__ __device__ T +atomic_fetch_add(volatile T* const dest, + typename std::enable_if<(sizeof(T) != 4) && (sizeof(T) != 8), + const T>::type& val) { T return_val; // This is a way to (hopefully) avoid dead lock in a warp int done = 0; @@ -179,7 +178,7 @@ __inline__ __device__ T atomic_fetch_add( #endif #endif //---------------------------------------------------------------------------- -#if !defined(KOKKOS_ENABLE_ROCM_ATOMICS) +#if !defined(KOKKOS_ENABLE_ROCM_ATOMICS) || !defined(KOKKOS_ENABLE_HIP_ATOMICS) #if !defined(__CUDA_ARCH__) || defined(KOKKOS_IMPL_CUDA_CLANG_WORKAROUND) #if defined(KOKKOS_ENABLE_GNU_ATOMICS) || defined(KOKKOS_ENABLE_INTEL_ATOMICS) @@ -239,12 +238,11 @@ inline unsigned long int atomic_fetch_add( template inline T atomic_fetch_add( volatile T* const dest, - typename Kokkos::Impl::enable_if::type - val) { + typename std::enable_if::type val) { union U { int i; T t; - inline U(){}; + inline U() {} } assume, oldval, newval; #if defined(KOKKOS_ENABLE_RFO_PREFETCH) @@ -263,15 +261,14 @@ inline T atomic_fetch_add( } template -inline T atomic_fetch_add( - volatile T* const dest, - typename Kokkos::Impl::enable_if::type val) { +inline T atomic_fetch_add(volatile T* const dest, + typename std::enable_if::type val) { union U { long i; T t; - inline U(){}; + inline U() {} } assume, oldval, newval; #if defined(KOKKOS_ENABLE_RFO_PREFETCH) @@ -293,14 +290,14 @@ inline T atomic_fetch_add( template inline T atomic_fetch_add( volatile T* const dest, - typename Kokkos::Impl::enable_if::type val) { + typename std::enable_if::type val) { union U { Impl::cas128_t i; T t; - inline U(){}; + inline U() {} } assume, oldval, newval; #if defined(KOKKOS_ENABLE_RFO_PREFETCH) @@ -324,12 +321,12 @@ inline T atomic_fetch_add( template inline T atomic_fetch_add( volatile T* const dest, - typename Kokkos::Impl::enable_if<(sizeof(T) != 4) && (sizeof(T) != 8) + typename std::enable_if<(sizeof(T) != 4) && (sizeof(T) != 8) #if defined(KOKKOS_ENABLE_ASM) && defined(KOKKOS_ENABLE_ISA_X86_64) - && (sizeof(T) != 16) + && (sizeof(T) != 16) #endif - , - const T>::type& val) { + , + const T>::type& val) { while (!Impl::lock_address_host_space((void*)dest)) ; T return_val = *dest; @@ -390,11 +387,5 @@ __inline__ __device__ T atomic_fetch_add(volatile T* const, } #endif -// Simpler version of atomic_fetch_add without the fetch -template -KOKKOS_INLINE_FUNCTION void atomic_add(volatile T* const dest, const T src) { - atomic_fetch_add(dest, src); -} - } // namespace Kokkos #endif 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 91da9fdcaa..c14749f1b7 100644 --- a/lib/kokkos/core/src/impl/Kokkos_Atomic_Fetch_Sub.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_Atomic_Fetch_Sub.hpp @@ -93,8 +93,7 @@ __inline__ __device__ unsigned int atomic_fetch_sub(volatile double* const dest, template __inline__ __device__ T atomic_fetch_sub( volatile T* const dest, - typename Kokkos::Impl::enable_if::type - val) { + typename std::enable_if::type val) { union U { int i; T t; @@ -115,9 +114,9 @@ __inline__ __device__ T atomic_fetch_sub( template __inline__ __device__ 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) { + typename std::enable_if::type val) { union U { unsigned long long int i; T t; @@ -138,10 +137,10 @@ __inline__ __device__ T atomic_fetch_sub( //---------------------------------------------------------------------------- template -__inline__ __device__ T atomic_fetch_sub( - volatile T* const dest, - typename Kokkos::Impl::enable_if<(sizeof(T) != 4) && (sizeof(T) != 8), - const T>::type& val) { +__inline__ __device__ T +atomic_fetch_sub(volatile T* const dest, + typename std::enable_if<(sizeof(T) != 4) && (sizeof(T) != 8), + const T>::type& val) { T return_val; // This is a way to (hopefully) avoid dead lock in a warp int done = 0; @@ -172,7 +171,7 @@ __inline__ __device__ T atomic_fetch_sub( #endif #endif //---------------------------------------------------------------------------- -#if !defined(KOKKOS_ENABLE_ROCM_ATOMICS) +#if !defined(KOKKOS_ENABLE_ROCM_ATOMICS) || !defined(KOKKOS_ENABLE_HIP_ATOMICS) #if !defined(__CUDA_ARCH__) || defined(KOKKOS_IMPL_CUDA_CLANG_WORKAROUND) #if defined(KOKKOS_ENABLE_GNU_ATOMICS) || defined(KOKKOS_ENABLE_INTEL_ATOMICS) @@ -214,8 +213,7 @@ inline unsigned long int atomic_fetch_sub( template inline T atomic_fetch_sub( volatile T* const dest, - typename Kokkos::Impl::enable_if::type - val) { + typename std::enable_if::type val) { union U { int i; T t; @@ -238,11 +236,10 @@ inline T atomic_fetch_sub( } template -inline T atomic_fetch_sub( - volatile T* const dest, - typename Kokkos::Impl::enable_if::type val) { +inline T atomic_fetch_sub(volatile T* const dest, + typename std::enable_if::type val) { #if defined(KOKKOS_ENABLE_RFO_PREFETCH) _mm_prefetch((const char*)dest, _MM_HINT_ET0); #endif @@ -269,8 +266,8 @@ inline T atomic_fetch_sub( template inline T atomic_fetch_sub( volatile T* const dest, - typename Kokkos::Impl::enable_if<(sizeof(T) != 4) && (sizeof(T) != 8), - const T>::type& val) { + typename std::enable_if<(sizeof(T) != 4) && (sizeof(T) != 8), + const T>::type& val) { #if defined(KOKKOS_ENABLE_RFO_PREFETCH) _mm_prefetch((const char*)dest, _MM_HINT_ET0); #endif @@ -321,12 +318,6 @@ __inline__ __device__ T atomic_fetch_sub(volatile T* const, } #endif -// Simpler version of atomic_fetch_sub without the fetch -template -KOKKOS_INLINE_FUNCTION void atomic_sub(volatile T* const dest, const T src) { - atomic_fetch_sub(dest, src); -} - } // namespace Kokkos #include diff --git a/lib/kokkos/core/src/impl/Kokkos_Atomic_Generic.hpp b/lib/kokkos/core/src/impl/Kokkos_Atomic_Generic.hpp index 160a4e7921..49ee86b2c4 100644 --- a/lib/kokkos/core/src/impl/Kokkos_Atomic_Generic.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_Atomic_Generic.hpp @@ -155,9 +155,9 @@ struct RShiftOper { template KOKKOS_INLINE_FUNCTION 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) { + typename std::enable_if::type val) { union U { unsigned long long int i; T t; @@ -179,9 +179,9 @@ KOKKOS_INLINE_FUNCTION T atomic_fetch_oper( template KOKKOS_INLINE_FUNCTION 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) { + typename std::enable_if::type val) { union U { unsigned long long int i; T t; @@ -192,7 +192,7 @@ KOKKOS_INLINE_FUNCTION T atomic_oper_fetch( 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); @@ -203,8 +203,7 @@ KOKKOS_INLINE_FUNCTION T atomic_oper_fetch( template KOKKOS_INLINE_FUNCTION T atomic_fetch_oper( const Oper& op, volatile T* const dest, - typename Kokkos::Impl::enable_if::type - val) { + typename std::enable_if::type val) { union U { int i; T t; @@ -225,8 +224,7 @@ KOKKOS_INLINE_FUNCTION T atomic_fetch_oper( template KOKKOS_INLINE_FUNCTION T atomic_oper_fetch( const Oper& op, volatile T* const dest, - typename Kokkos::Impl::enable_if::type - val) { + typename std::enable_if::type val) { union U { int i; T t; @@ -237,7 +235,7 @@ KOKKOS_INLINE_FUNCTION T atomic_oper_fetch( 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); @@ -247,13 +245,13 @@ KOKKOS_INLINE_FUNCTION T atomic_oper_fetch( template KOKKOS_INLINE_FUNCTION T atomic_fetch_oper( const Oper& op, volatile T* const dest, - typename Kokkos::Impl::enable_if<(sizeof(T) != 4) && (sizeof(T) != 8), - const T>::type val) { + typename std::enable_if<(sizeof(T) != 4) && (sizeof(T) != 8), const T>::type + val) { #ifdef KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_HOST while (!Impl::lock_address_host_space((void*)dest)) ; T return_val = *dest; - *dest = Oper::apply(return_val, val); + *dest = op.apply(return_val, val); Impl::unlock_address_host_space((void*)dest); return return_val; #elif defined(KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_CUDA) @@ -271,8 +269,7 @@ KOKKOS_INLINE_FUNCTION T atomic_fetch_oper( if (!done) { if (Impl::lock_address_cuda_space((void*)dest)) { return_val = *dest; - *dest = Oper::apply(return_val, val); - ; + *dest = op.apply(return_val, val); Impl::unlock_address_cuda_space((void*)dest); done = 1; } @@ -284,24 +281,44 @@ KOKKOS_INLINE_FUNCTION T atomic_fetch_oper( #endif } return return_val; +#elif defined(__HIP_DEVICE_COMPILE__) + // FIXME_HIP + Kokkos::abort("atomic_fetch_oper not implemented for large types."); + T return_val = *dest; + int done = 0; + unsigned int active = __ballot(1); + unsigned int done_active = 0; + while (active != done_active) { + if (!done) { + // if (Impl::lock_address_hip_space((void*)dest)) + { + return_val = *dest; + *dest = op.apply(return_val, val); + // Impl::unlock_address_hip_space((void*)dest); + done = 1; + } + } + done_active = __ballot(done); + } + return return_val; #endif } template -KOKKOS_INLINE_FUNCTION T atomic_oper_fetch( - const Oper& op, volatile T* const dest, - typename Kokkos::Impl::enable_if<(sizeof(T) != 4) && (sizeof(T) != 8) +KOKKOS_INLINE_FUNCTION T +atomic_oper_fetch(const Oper& op, volatile T* const dest, + typename std::enable_if<(sizeof(T) != 4) && (sizeof(T) != 8) #if defined(KOKKOS_ENABLE_ASM) && \ defined(KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_HOST) - && (sizeof(T) != 16) + && (sizeof(T) != 16) #endif - , - const T>::type& val) { + , + const T>::type& val) { #ifdef KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_HOST while (!Impl::lock_address_host_space((void*)dest)) ; - T return_val = Oper::apply(*dest, val); + T return_val = op.apply(*dest, val); *dest = return_val; Impl::unlock_address_host_space((void*)dest); return return_val; @@ -319,7 +336,7 @@ KOKKOS_INLINE_FUNCTION T atomic_oper_fetch( while (active != done_active) { if (!done) { if (Impl::lock_address_cuda_space((void*)dest)) { - return_val = Oper::apply(*dest, val); + return_val = op.apply(*dest, val); *dest = return_val; Impl::unlock_address_cuda_space((void*)dest); done = 1; @@ -332,6 +349,26 @@ KOKKOS_INLINE_FUNCTION T atomic_oper_fetch( #endif } return return_val; +#elif defined(__HIP_DEVICE_COMPILE__) + // FIXME_HIP + Kokkos::abort("atomic_oper_fetch not implemented for large types."); + T return_val; + int done = 0; + unsigned int active = __ballot(1); + unsigned int done_active = 0; + while (active != done_active) { + if (!done) { + // if (Impl::lock_address_hip_space((void*)dest)) + { + return_val = op.apply(*dest, val); + *dest = return_val; + // Impl::unlock_address_hip_space((void*)dest); + done = 1; + } + } + done_active = __ballot(done); + } + return return_val; #endif } @@ -454,5 +491,27 @@ KOKKOS_INLINE_FUNCTION T atomic_rshift_fetch(volatile T* const dest, dest, val); } +#ifdef _WIN32 +template +KOKKOS_INLINE_FUNCTION T atomic_add_fetch(volatile T* const dest, const T val) { + return Impl::atomic_oper_fetch(Impl::AddOper(), dest, val); +} + +template +KOKKOS_INLINE_FUNCTION T atomic_sub_fetch(volatile T* const dest, const T val) { + return Impl::atomic_oper_fetch(Impl::SubOper(), dest, val); +} + +template +KOKKOS_INLINE_FUNCTION T atomic_fetch_add(volatile T* const dest, const T val) { + return Impl::atomic_fetch_oper(Impl::AddOper(), dest, val); +} + +template +KOKKOS_INLINE_FUNCTION T atomic_fetch_sub(volatile T* const dest, const T val) { + return Impl::atomic_fetch_oper(Impl::SubOper(), dest, val); +} +#endif + } // namespace Kokkos #endif diff --git a/lib/kokkos/core/src/impl/Kokkos_Atomic_Generic_Secondary.hpp b/lib/kokkos/core/src/impl/Kokkos_Atomic_Generic_Secondary.hpp new file mode 100644 index 0000000000..9d0172b653 --- /dev/null +++ b/lib/kokkos/core/src/impl/Kokkos_Atomic_Generic_Secondary.hpp @@ -0,0 +1,76 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// 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 NTESS "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 NTESS 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_ATOMIC_HPP) && !defined(KOKKOS_ATOMIC_GENERIC_SECONDARY_HPP) +#define KOKKOS_ATOMIC_GENERIC_SECONDARY_HPP +#include + +namespace Kokkos { + +#ifndef KOKKOS_ENABLE_SERIAL_ATOMICS +template +KOKKOS_INLINE_FUNCTION T atomic_exchange(volatile T* const dest, const T val) { + T oldval = *dest; + T assume; + do { + assume = oldval; + oldval = atomic_compare_exchange(dest, assume, val); + } while (assume != oldval); + + return oldval; +} +#endif + +template +KOKKOS_INLINE_FUNCTION void atomic_add(volatile T* const dest, const T val) { + (void)atomic_fetch_add(dest, val); +} + +template +KOKKOS_INLINE_FUNCTION void atomic_sub(volatile T* const dest, const T val) { + (void)atomic_fetch_sub(dest, val); +} + +} // namespace Kokkos +#endif diff --git a/lib/kokkos/core/src/impl/Kokkos_Atomic_Increment.hpp b/lib/kokkos/core/src/impl/Kokkos_Atomic_Increment.hpp index f0ffebef9a..65630aa84c 100644 --- a/lib/kokkos/core/src/impl/Kokkos_Atomic_Increment.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_Atomic_Increment.hpp @@ -91,6 +91,7 @@ KOKKOS_INLINE_FUNCTION void atomic_increment(volatile short* a) { #endif } +#ifndef _WIN32 template <> KOKKOS_INLINE_FUNCTION void atomic_increment(volatile int* a) { #if defined(KOKKOS_ENABLE_ASM) && defined(KOKKOS_ENABLE_ISA_X86_64) && \ @@ -109,6 +110,7 @@ KOKKOS_INLINE_FUNCTION void atomic_increment(volatile int* a) { Kokkos::atomic_fetch_add(a, int(1)); #endif } +#endif template <> KOKKOS_INLINE_FUNCTION void atomic_increment( diff --git a/lib/kokkos/core/src/impl/Kokkos_Atomic_Load.hpp b/lib/kokkos/core/src/impl/Kokkos_Atomic_Load.hpp index 6b4c82b620..f3b77a2976 100644 --- a/lib/kokkos/core/src/impl/Kokkos_Atomic_Load.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_Atomic_Load.hpp @@ -125,8 +125,7 @@ __device__ __inline__ T _relaxed_atomic_load_impl( void const**>::type = nullptr) { T rv{}; // TODO remove a copy operation here? - Kokkos::Impl::atomic_oper_fetch(NoOpOper{}, &rv, rv); - return rv; + return Kokkos::Impl::atomic_oper_fetch(NoOpOper{}, ptr, rv); } template @@ -168,6 +167,14 @@ inline T _atomic_load(T* ptr, MemoryOrder) { return *ptr; } +#elif defined(KOKKOS_ENABLE_WINDOWS_ATOMICS) + +template +inline T _atomic_load(T* ptr, MemoryOrder) { + atomic_compare_exchange(ptr, 0, 0); + return *ptr; +} + #endif // end of all atomic implementations template @@ -189,7 +196,7 @@ KOKKOS_FORCEINLINE_FUNCTION T atomic_load(T* ptr, } template -KOKKOS_FORCEINLINE_FUNCTION T atomic_load(T* ptr, +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 @@ -198,7 +205,7 @@ KOKKOS_FORCEINLINE_FUNCTION T atomic_load(T* ptr, } template -KOKKOS_FORCEINLINE_FUNCTION T atomic_load(T* ptr, +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 diff --git a/lib/kokkos/core/src/impl/Kokkos_Atomic_MinMax.hpp b/lib/kokkos/core/src/impl/Kokkos_Atomic_MinMax.hpp new file mode 100644 index 0000000000..8a886d0a77 --- /dev/null +++ b/lib/kokkos/core/src/impl/Kokkos_Atomic_MinMax.hpp @@ -0,0 +1,223 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// 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 NTESS "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 NTESS 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_ATOMIC_HPP) && !defined(KOKKOS_ATOMIC_MINMAX_HPP) +#define KOKKOS_ATOMIC_MINMAX_HPP + +namespace Kokkos { + +//---------------------------------------------------------------------------- + +#if defined(KOKKOS_ENABLE_CUDA) +#if defined(__CUDA_ARCH__) || defined(KOKKOS_IMPL_CUDA_CLANG_WORKAROUND) + +// Support for int, unsigned int, unsigned long long int, and float + +// Atomic_fetch_{min,max} + +#ifdef KOKKOS_IMPL_CUDA_CLANG_WORKAROUND + +// Host implementations for CLANG compiler + +inline __host__ int atomic_fetch_min(volatile int* const dest, const int val) { + return Impl::atomic_fetch_oper(Impl::MinOper(), dest, + val); +} + +inline __host__ unsigned int atomic_fetch_min(volatile unsigned int* const dest, + const unsigned int val) { + return Impl::atomic_fetch_oper( + Impl::MinOper(), dest, val); +} + +inline __host__ unsigned long long int atomic_fetch_min( + volatile unsigned long long int* const dest, + const unsigned long long int val) { + return Impl::atomic_fetch_oper(Impl::MinOper(), + dest, val); +} + +inline __host__ int atomic_fetch_max(volatile int* const dest, const int val) { + return Impl::atomic_fetch_oper(Impl::MaxOper(), dest, + val); +} + +inline __host__ unsigned int atomic_fetch_max(volatile unsigned int* const dest, + const unsigned int val) { + return Impl::atomic_fetch_oper( + Impl::MaxOper(), dest, val); +} + +inline __host__ unsigned long long int atomic_fetch_max( + volatile unsigned long long int* const dest, + const unsigned long long int val) { + return Impl::atomic_fetch_oper(Impl::MaxOper(), + dest, val); +} + +#endif + +inline __device__ int atomic_fetch_min(volatile int* const dest, + const int val) { + return atomicMin((int*)dest, val); +} + +inline __device__ unsigned int atomic_fetch_min( + volatile unsigned int* const dest, const unsigned int val) { + return atomicMin((unsigned int*)dest, val); +} + +inline __device__ unsigned long long int atomic_fetch_min( + volatile unsigned long long int* const dest, + const unsigned long long int val) { + return atomicMin((unsigned long long int*)dest, val); +} + +inline __device__ int atomic_fetch_max(volatile int* const dest, + const int val) { + return atomicMax((int*)dest, val); +} + +inline __device__ unsigned int atomic_fetch_max( + volatile unsigned int* const dest, const unsigned int val) { + return atomicMax((unsigned int*)dest, val); +} + +inline __device__ unsigned long long int atomic_fetch_max( + volatile unsigned long long int* const dest, + const unsigned long long int val) { + return atomicMax((unsigned long long int*)dest, val); +} + +// Atomic_{min,max}_fetch + +#ifdef KOKKOS_IMPL_CUDA_CLANG_WORKAROUND + +// Host implementations for CLANG compiler + +inline __host__ int atomic_min_fetch(volatile int* const dest, const int val) { + return Impl::atomic_oper_fetch(Impl::MinOper(), dest, + val); +} + +inline __host__ unsigned int atomic_min_fetch(volatile unsigned int* const dest, + const unsigned int val) { + return Impl::atomic_oper_fetch( + Impl::MinOper(), dest, val); +} + +inline __host__ unsigned long long int atomic_min_fetch( + volatile unsigned long long int* const dest, + const unsigned long long int val) { + return Impl::atomic_oper_fetch(Impl::MinOper(), + dest, val); +} + +inline __host__ int atomic_max_fetch(volatile int* const dest, const int val) { + return Impl::atomic_oper_fetch(Impl::MaxOper(), dest, + val); +} + +inline __host__ unsigned int atomic_max_fetch(volatile unsigned int* const dest, + const unsigned int val) { + return Impl::atomic_oper_fetch( + Impl::MaxOper(), dest, val); +} + +inline __host__ unsigned long long int atomic_max_fetch( + volatile unsigned long long int* const dest, + const unsigned long long int val) { + return Impl::atomic_oper_fetch(Impl::MaxOper(), + dest, val); +} +#endif + +inline __device__ int atomic_min_fetch(volatile int* const dest, + const int val) { + const int old = atomicMin((int*)dest, val); + return old < val ? old : val; +} + +inline __device__ unsigned int atomic_min_fetch( + volatile unsigned int* const dest, const unsigned int val) { + const unsigned int old = atomicMin((unsigned int*)dest, val); + return old < val ? old : val; +} + +inline __device__ unsigned long long int atomic_min_fetch( + volatile unsigned long long int* const dest, + const unsigned long long int val) { + const unsigned long long old = atomicMin((unsigned long long*)dest, val); + return old < val ? old : val; +} + +inline __device__ int atomic_max_fetch(volatile int* const dest, + const int val) { + const int old = atomicMax((int*)dest, val); + return old >= val ? old : val; +} + +inline __device__ unsigned int atomic_max_fetch( + volatile unsigned int* const dest, const unsigned int val) { + const unsigned int old = atomicMax((unsigned int*)dest, val); + return old >= val ? old : val; +} + +inline __device__ unsigned long long int atomic_max_fetch( + volatile unsigned long long int* const dest, + const unsigned long long int val) { + const unsigned long long old = atomicMax((unsigned long long*)dest, val); + return old >= val ? old : val; +} + +#endif +#endif +} // namespace Kokkos + +#endif diff --git a/lib/kokkos/core/src/impl/Kokkos_Atomic_Store.hpp b/lib/kokkos/core/src/impl/Kokkos_Atomic_Store.hpp index 6cd246e3ae..264d6beaf5 100644 --- a/lib/kokkos/core/src/impl/Kokkos_Atomic_Store.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_Atomic_Store.hpp @@ -164,6 +164,13 @@ inline void _atomic_store(T* ptr, T val, MemoryOrder) { *ptr = val; } +#elif defined(KOKKOS_ENABLE_WINDOWS_ATOMICS) + +template +inline void _atomic_store(T* ptr, T val, MemoryOrder) { + atomic_exchange(ptr, val); +} + #endif // end of all atomic implementations template @@ -185,7 +192,7 @@ KOKKOS_FORCEINLINE_FUNCTION void atomic_store(T* ptr, T val, } template -KOKKOS_FORCEINLINE_FUNCTION void atomic_store(T* ptr, T val, +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 @@ -194,7 +201,7 @@ KOKKOS_FORCEINLINE_FUNCTION void atomic_store(T* ptr, T val, } template -KOKKOS_FORCEINLINE_FUNCTION void atomic_store(T* ptr, T val, +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 @@ -205,7 +212,7 @@ KOKKOS_FORCEINLINE_FUNCTION void atomic_store(T* ptr, T val, template KOKKOS_FORCEINLINE_FUNCTION void atomic_store(T* ptr, T val) { // relaxed by default! - _atomic_store(ptr, Impl::memory_order_relaxed); + _atomic_store(ptr, val, Impl::memory_order_relaxed); } } // end namespace Impl diff --git a/lib/kokkos/core/src/impl/Kokkos_Atomic_View.hpp b/lib/kokkos/core/src/impl/Kokkos_Atomic_View.hpp index bfe9bcd0b3..c3719bed22 100644 --- a/lib/kokkos/core/src/impl/Kokkos_Atomic_View.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_Atomic_View.hpp @@ -347,7 +347,7 @@ class AtomicViewDataHandle { typename ViewTraits::value_type* ptr; KOKKOS_INLINE_FUNCTION - AtomicViewDataHandle() : ptr(NULL) {} + AtomicViewDataHandle() : ptr(nullptr) {} KOKKOS_INLINE_FUNCTION AtomicViewDataHandle(typename ViewTraits::value_type* ptr_) : ptr(ptr_) {} diff --git a/lib/kokkos/core/src/impl/Kokkos_Atomic_Windows.hpp b/lib/kokkos/core/src/impl/Kokkos_Atomic_Windows.hpp index 25230982ec..c5d3466c6c 100644 --- a/lib/kokkos/core/src/impl/Kokkos_Atomic_Windows.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_Atomic_Windows.hpp @@ -52,6 +52,8 @@ #include #include +#undef VOID + namespace Kokkos { namespace Impl { #ifdef _MSC_VER @@ -74,14 +76,43 @@ __attribute__((aligned(16))) template KOKKOS_INLINE_FUNCTION T atomic_compare_exchange( volatile T* const dest, const T& compare, - typename Kokkos::Impl::enable_if::type - val) { + typename std::enable_if::type val) { union U { - LONG i; + CHAR i; + T t; + KOKKOS_INLINE_FUNCTION U(){}; + } tmp; + + tmp.i = _InterlockedCompareExchange8((CHAR*)dest, *((CHAR*)&val), + *((CHAR*)&compare)); + return tmp.t; +} + +template +KOKKOS_INLINE_FUNCTION T atomic_compare_exchange( + volatile T* const dest, const T& compare, + typename std::enable_if::type val) { + union U { + SHORT i; T t; KOKKOS_INLINE_FUNCTION U(){}; } tmp; + tmp.i = _InterlockedCompareExchange16((SHORT*)dest, *((SHORT*)&val), + *((SHORT*)&compare)); + return tmp.t; +} + +template +KOKKOS_INLINE_FUNCTION T atomic_compare_exchange( + volatile T* const dest, const T& compare, + typename std::enable_if::type val) { + union U { + LONG i; + T t; + KOKKOS_INLINE_FUNCTION U() {} + } tmp; + tmp.i = _InterlockedCompareExchange((LONG*)dest, *((LONG*)&val), *((LONG*)&compare)); return tmp.t; @@ -90,12 +121,12 @@ KOKKOS_INLINE_FUNCTION T atomic_compare_exchange( template KOKKOS_INLINE_FUNCTION T atomic_compare_exchange( volatile T* const dest, const T& compare, - typename Kokkos::Impl::enable_if::type val) { + typename std::enable_if::type + val) { union U { LONGLONG i; T t; - KOKKOS_INLINE_FUNCTION U(){}; + KOKKOS_INLINE_FUNCTION U() {} } tmp; tmp.i = _InterlockedCompareExchange64((LONGLONG*)dest, *((LONGLONG*)&val), @@ -106,18 +137,19 @@ KOKKOS_INLINE_FUNCTION T atomic_compare_exchange( template KOKKOS_INLINE_FUNCTION T atomic_compare_exchange( volatile T* const dest, const T& compare, - typename Kokkos::Impl::enable_if::type val) { + typename std::enable_if::type + val) { + T compare_and_result(compare); union U { Impl::cas128_t i; T t; KOKKOS_INLINE_FUNCTION U(){}; - } tmp, newval; + } newval; newval.t = val; _InterlockedCompareExchange128((LONGLONG*)dest, newval.i.upper, - newval.i.lower, ((LONGLONG*)&compare)); - tmp.t = dest; - return tmp.t; + newval.i.lower, + ((LONGLONG*)&compare_and_result)); + return compare_and_result; } template @@ -127,117 +159,6 @@ KOKKOS_INLINE_FUNCTION T atomic_compare_exchange_strong(volatile T* const dest, return atomic_compare_exchange(dest, compare, val); } -template -T atomic_fetch_or(volatile T* const dest, const T val) { - T oldval = *dest; - T assume; - do { - assume = oldval; - T newval = val | oldval; - oldval = atomic_compare_exchange(dest, assume, newval); - } while (assume != oldval); - - return oldval; -} - -template -T atomic_fetch_and(volatile T* const dest, const T val) { - T oldval = *dest; - T assume; - do { - assume = oldval; - T newval = val & oldval; - oldval = atomic_compare_exchange(dest, assume, newval); - } while (assume != oldval); - - return oldval; -} - -template -T atomic_fetch_add(volatile T* const dest, const T val) { - T oldval = *dest; - T assume; - do { - assume = oldval; - T newval = val + oldval; - oldval = atomic_compare_exchange(dest, assume, newval); - } while (assume != oldval); - - return oldval; -} - -template -T atomic_fetch_sub(volatile T* const dest, const T val) { - T oldval = *dest; - T assume; - do { - assume = oldval; - T newval = val - oldval; - oldval = atomic_compare_exchange(dest, assume, newval); - } while (assume != oldval); - - return oldval; -} - -template -T atomic_exchange(volatile T* const dest, const T val) { - T oldval = *dest; - T assume; - do { - assume = oldval; - oldval = atomic_compare_exchange(dest, assume, val); - } while (assume != oldval); - - return oldval; -} - -template -void atomic_or(volatile T* const dest, const T val) { - atomic_fetch_or(dest, val); -} - -template -void atomic_and(volatile T* const dest, const T val) { - atomic_fetch_and(dest, val); -} - -template -void atomic_add(volatile T* const dest, const T val) { - atomic_fetch_add(dest, val); -} - -template -void atomic_sub(volatile T* const dest, const T val) { - atomic_fetch_sub(dest, val); -} - -template -void atomic_assign(volatile T* const dest, const T val) { - atomic_fetch_exchange(dest, val); -} - -template -T atomic_increment(volatile T* const dest) { - T oldval = *dest; - T assume; - do { - assume = oldval; - T newval = assume++; - oldval = atomic_compare_exchange(dest, assume, newval); - } while (assume != oldval); -} - -template -T atomic_decrement(volatile T* const dest) { - T oldval = *dest; - T assume; - do { - assume = oldval; - T newval = assume--; - oldval = atomic_compare_exchange(dest, assume, newval); - } while (assume != oldval); -} - } // namespace Kokkos #endif #endif diff --git a/lib/kokkos/core/src/impl/Kokkos_ChaseLev.hpp b/lib/kokkos/core/src/impl/Kokkos_ChaseLev.hpp index bff0ed8315..e2283f11fd 100644 --- a/lib/kokkos/core/src/impl/Kokkos_ChaseLev.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_ChaseLev.hpp @@ -48,8 +48,7 @@ #define KOKKOS_IMPL_LOCKFREEDEQUE_HPP #include -#ifdef KOKKOS_ENABLE_TASKDAG // Note: implies CUDA_VERSION >= 8000 if using - // CUDA +#ifdef KOKKOS_ENABLE_TASKDAG #include @@ -191,11 +190,21 @@ struct ChaseLevDeque { return_value = *static_cast(a[b]); // relaxed load if (t == b) { /* single last element in the queue. */ - if (not Impl::atomic_compare_exchange_strong( +#ifdef _WIN32 + Kokkos::memory_fence(); + bool const success = + Kokkos::atomic_compare_exchange_strong(&m_top, t, t + 1); + Kokkos::memory_fence(); + if (!success) { + return_value = nullptr; + } +#else + if (!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; } +#endif m_bottom = b + 1; // memory order relaxed } } else { @@ -241,10 +250,20 @@ struct ChaseLevDeque { 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( +#ifdef _WIN32 + Kokkos::memory_fence(); + bool const success = + Kokkos::atomic_compare_exchange_strong(&m_top, t, t + 1); + Kokkos::memory_fence(); + if (!success) { + return_value = nullptr; + } +#else + if (!Impl::atomic_compare_exchange_strong( &m_top, t, t + 1, memory_order_seq_cst, memory_order_relaxed)) { return_value = nullptr; } +#endif } return return_value; } diff --git a/lib/kokkos/core/src/impl/Kokkos_ClockTic.hpp b/lib/kokkos/core/src/impl/Kokkos_ClockTic.hpp index ad13fb7548..386b5918d0 100644 --- a/lib/kokkos/core/src/impl/Kokkos_ClockTic.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_ClockTic.hpp @@ -75,7 +75,10 @@ uint64_t clock_tic(void) noexcept { #elif defined(__HCC_ACCELERATOR__) // Get clock register return hc::__clock_u64(); - +#elif defined(KOKKOS_ENABLE_OPENMPTARGET) + return (uint64_t)std::chrono::high_resolution_clock::now() + .time_since_epoch() + .count(); #elif defined(__i386__) || defined(__x86_64) // Return value of 64-bit hi-res clock register. diff --git a/lib/kokkos/core/src/impl/Kokkos_Core.cpp b/lib/kokkos/core/src/impl/Kokkos_Core.cpp index 53f3fd9ce2..9640e0fccb 100644 --- a/lib/kokkos/core/src/impl/Kokkos_Core.cpp +++ b/lib/kokkos/core/src/impl/Kokkos_Core.cpp @@ -50,19 +50,122 @@ #include #include #include +#include +#include #include +#ifndef _WIN32 #include +#endif //---------------------------------------------------------------------------- - namespace { bool g_is_initialized = false; bool g_show_warnings = true; -std::stack > finalize_hooks; +// When compiling with clang/LLVM and using the GNU (GCC) C++ Standard Library +// (any recent version between GCC 7.3 and GCC 9.2), std::deque SEGV's during +// the unwinding of the atexit(3C) handlers at program termination. However, +// this bug is not observable when building with GCC. +// As an added bonus, std::list provides constant insertion and +// deletion time complexity, which translates to better run-time performance. As +// opposed to std::deque which does not provide the same constant time +// complexity for inserts/removals, since std::deque is implemented as a +// segmented array. +using hook_function_type = std::function; +std::stack> finalize_hooks; } // namespace namespace Kokkos { namespace Impl { + +int get_ctest_gpu(const char* local_rank_str) { + auto const* ctest_kokkos_device_type = + std::getenv("CTEST_KOKKOS_DEVICE_TYPE"); + if (!ctest_kokkos_device_type) { + return 0; + } + + auto const* ctest_resource_group_count_str = + std::getenv("CTEST_RESOURCE_GROUP_COUNT"); + if (!ctest_resource_group_count_str) { + return 0; + } + + // Make sure rank is within bounds of resource groups specified by CTest + auto resource_group_count = std::atoi(ctest_resource_group_count_str); + auto local_rank = std::atoi(local_rank_str); + if (local_rank >= resource_group_count) { + std::ostringstream ss; + ss << "Error: local rank " << local_rank + << " is outside the bounds of resource groups provided by CTest. Raised" + << " by Kokkos::Impl::get_ctest_gpu()."; + throw_runtime_exception(ss.str()); + } + + // Get the resource types allocated to this resource group + std::ostringstream ctest_resource_group; + ctest_resource_group << "CTEST_RESOURCE_GROUP_" << local_rank; + std::string ctest_resource_group_name = ctest_resource_group.str(); + auto const* ctest_resource_group_str = + std::getenv(ctest_resource_group_name.c_str()); + if (!ctest_resource_group_str) { + std::ostringstream ss; + ss << "Error: " << ctest_resource_group_name << " is not specified. Raised" + << " by Kokkos::Impl::get_ctest_gpu()."; + throw_runtime_exception(ss.str()); + } + + // Look for the device type specified in CTEST_KOKKOS_DEVICE_TYPE + bool found_device = false; + std::string ctest_resource_group_cxx_str = ctest_resource_group_str; + std::istringstream instream(ctest_resource_group_cxx_str); + while (true) { + std::string devName; + std::getline(instream, devName, ','); + if (devName == ctest_kokkos_device_type) { + found_device = true; + break; + } + if (instream.eof() || devName.length() == 0) { + break; + } + } + + if (!found_device) { + std::ostringstream ss; + ss << "Error: device type '" << ctest_kokkos_device_type + << "' not included in " << ctest_resource_group_name + << ". Raised by Kokkos::Impl::get_ctest_gpu()."; + throw_runtime_exception(ss.str()); + } + + // Get the device ID + std::string ctest_device_type_upper = ctest_kokkos_device_type; + for (auto& c : ctest_device_type_upper) { + c = std::toupper(c); + } + ctest_resource_group << "_" << ctest_device_type_upper; + + std::string ctest_resource_group_id_name = ctest_resource_group.str(); + auto resource_str = std::getenv(ctest_resource_group_id_name.c_str()); + if (!resource_str) { + std::ostringstream ss; + ss << "Error: " << ctest_resource_group_id_name + << " is not specified. Raised by Kokkos::Impl::get_ctest_gpu()."; + throw_runtime_exception(ss.str()); + } + + auto const* comma = std::strchr(resource_str, ','); + if (!comma || strncmp(resource_str, "id:", 3)) { + std::ostringstream ss; + ss << "Error: invalid value of " << ctest_resource_group_id_name << ": '" + << resource_str << "'. Raised by Kokkos::Impl::get_ctest_gpu()."; + throw_runtime_exception(ss.str()); + } + + std::string id(resource_str + 3, comma - resource_str - 3); + return std::atoi(id.c_str()); +} + namespace { bool is_unsigned_int(const char* str) { @@ -74,7 +177,8 @@ bool is_unsigned_int(const char* str) { } return true; } -void initialize_internal(const InitArguments& args) { + +void initialize_backends(const InitArguments& args) { // This is an experimental setting // For KNL in Flat mode this variable should be set, so that // memkind allocates high bandwidth memory correctly. @@ -82,10 +186,6 @@ void initialize_internal(const InitArguments& args) { setenv("MEMKIND_HBW_NODES", "1", 0); #endif - if (args.disable_warnings) { - g_show_warnings = false; - } - // Protect declarations, to prevent "unused variable" warnings. #if defined(KOKKOS_ENABLE_OPENMP) || defined(KOKKOS_ENABLE_THREADS) || \ defined(KOKKOS_ENABLE_OPENMPTARGET) || defined(KOKKOS_ENABLE_HPX) @@ -94,25 +194,39 @@ void initialize_internal(const InitArguments& args) { #if defined(KOKKOS_ENABLE_THREADS) || defined(KOKKOS_ENABLE_OPENMPTARGET) const int use_numa = args.num_numa; #endif -#if defined(KOKKOS_ENABLE_CUDA) || defined(KOKKOS_ENABLE_ROCM) +#if defined(KOKKOS_ENABLE_CUDA) || defined(KOKKOS_ENABLE_ROCM) || \ + defined(KOKKOS_ENABLE_HIP) int use_gpu = args.device_id; const int ndevices = args.ndevices; const int skip_device = args.skip_device; // if the exact device is not set, but ndevices was given, assign round-robin // using on-node MPI rank - if (use_gpu < 0 && ndevices >= 0) { - auto local_rank_str = std::getenv("OMPI_COMM_WORLD_LOCAL_RANK"); // OpenMPI + if (use_gpu < 0) { + auto const* local_rank_str = + std::getenv("OMPI_COMM_WORLD_LOCAL_RANK"); // OpenMPI if (!local_rank_str) local_rank_str = std::getenv("MV2_COMM_WORLD_LOCAL_RANK"); // MVAPICH2 if (!local_rank_str) local_rank_str = std::getenv("SLURM_LOCALID"); // SLURM - if (local_rank_str) { - auto local_rank = std::atoi(local_rank_str); - use_gpu = local_rank % ndevices; - } else { - // user only gave us ndevices, but the MPI environment variable wasn't - // set. start with GPU 0 at this point - use_gpu = 0; + + auto const* ctest_kokkos_device_type = + std::getenv("CTEST_KOKKOS_DEVICE_TYPE"); // CTest + auto const* ctest_resource_group_count_str = + std::getenv("CTEST_RESOURCE_GROUP_COUNT"); // CTest + if (ctest_kokkos_device_type && ctest_resource_group_count_str && + local_rank_str) { + // Use the device assigned by CTest + use_gpu = get_ctest_gpu(local_rank_str); + } else if (ndevices >= 0) { + // Use the device assigned by the rank + if (local_rank_str) { + auto local_rank = std::atoi(local_rank_str); + use_gpu = local_rank % ndevices; + } else { + // user only gave use ndevices, but the MPI environment variable wasn't + // set. start with GPU 0 at this point + use_gpu = 0; + } } // shift assignments over by one so no one is assigned to "skip_device" if (use_gpu >= skip_device) ++use_gpu; @@ -199,17 +313,9 @@ void initialize_internal(const InitArguments& args) { #endif #if defined(KOKKOS_ENABLE_OPENMPTARGET) - if (Impl::is_same::value) { - if (num_threads > 0) { - if (use_numa > 0) { - Kokkos::Experimental::OpenMPTarget::initialize(num_threads, use_numa); - } else { - Kokkos::Experimental::OpenMPTarget::initialize(num_threads); - } - } else { - Kokkos::Experimental::OpenMPTarget::initialize(); - } + if (std::is_same::value) { + Kokkos::Experimental::OpenMPTarget().impl_initialize(); // std::cout << "Kokkos::initialize() fyi: OpenMP enabled and initialized" // << std::endl ; } else { @@ -254,6 +360,23 @@ void initialize_internal(const InitArguments& args) { } #endif +#if defined(KOKKOS_ENABLE_HIP) + if (std::is_same::value || + 0 < use_gpu) { + if (use_gpu > -1) { + Kokkos::Experimental::HIP::impl_initialize( + Kokkos::Experimental::HIP::SelectDevice(use_gpu)); + } else { + Kokkos::Experimental::HIP::impl_initialize(); + } + std::cout << "Kokkos::initialize() fyi: HIP enabled and initialized" + << std::endl; + } +#endif +} + +void initialize_profiling(const InitArguments&) { #if defined(KOKKOS_ENABLE_PROFILING) Kokkos::Profiling::initialize(); #else @@ -263,9 +386,23 @@ void initialize_internal(const InitArguments& args) { << std::endl; } #endif +} + +void pre_initialize_internal(const InitArguments& args) { + if (args.disable_warnings) g_show_warnings = false; +} + +void post_initialize_internal(const InitArguments& args) { + initialize_profiling(args); g_is_initialized = true; } +void initialize_internal(const InitArguments& args) { + pre_initialize_internal(args); + initialize_backends(args); + post_initialize_internal(args); +} + void finalize_internal(const bool all_spaces = false) { typename decltype(finalize_hooks)::size_type numSuccessfulCalls = 0; while (!finalize_hooks.empty()) { @@ -320,12 +457,20 @@ void finalize_internal(const bool all_spaces = false) { } #endif +#if defined(KOKKOS_ENABLE_HIP) + if (std::is_same::value || + all_spaces) { + if (Kokkos::Experimental::HIP::impl_is_initialized()) + Kokkos::Experimental::HIP::impl_finalize(); + } +#endif #if defined(KOKKOS_ENABLE_OPENMPTARGET) if (std::is_same::value || all_spaces) { - if (Kokkos::Experimental::OpenMPTarget::is_initialized()) - Kokkos::Experimental::OpenMPTarget::finalize(); + if (Kokkos::Experimental::OpenMPTarget().impl_is_initialized()) + Kokkos::Experimental::OpenMPTarget().impl_finalize(); } #endif @@ -380,23 +525,19 @@ void finalize_internal(const bool all_spaces = false) { void fence_internal() { #if defined(KOKKOS_ENABLE_CUDA) - if (std::is_same::value) { - Kokkos::Cuda::impl_static_fence(); - } + Kokkos::Cuda::impl_static_fence(); #endif #if defined(KOKKOS_ENABLE_ROCM) - if (std::is_same::value) { - Kokkos::Experimental::ROCm().fence(); - } + Kokkos::Experimental::ROCm().fence(); +#endif + +#if defined(KOKKOS_ENABLE_HIP) + Kokkos::Experimental::HIP().fence(); #endif #if defined(KOKKOS_ENABLE_OPENMP) - if (std::is_same::value || - std::is_same::value) { - Kokkos::OpenMP::impl_static_fence(); - } + Kokkos::OpenMP::impl_static_fence(); #endif #if defined(KOKKOS_ENABLE_HPX) @@ -404,18 +545,11 @@ void fence_internal() { #endif #if defined(KOKKOS_ENABLE_THREADS) - if (std::is_same::value || - std::is_same::value) { - Kokkos::Threads::impl_static_fence(); - } + Kokkos::Threads::impl_static_fence(); #endif #if defined(KOKKOS_ENABLE_SERIAL) - if (std::is_same::value || - std::is_same::value) { - Kokkos::Serial::impl_static_fence(); - } + Kokkos::Serial::impl_static_fence(); #endif } @@ -454,22 +588,31 @@ bool check_int_arg(char const* arg, char const* expected, int* value) { return true; } -} // namespace - -} // namespace Impl -} // namespace Kokkos - -//---------------------------------------------------------------------------- +void warn_deprecated_command_line_argument(std::string deprecated, + std::string valid) { + std::cerr + << "Warning: command line argument '" << deprecated + << "' is deprecated. Use '" << valid + << "' instead. Raised by Kokkos::initialize(int narg, char* argc[])." + << std::endl; +} -namespace Kokkos { +unsigned get_process_id() { +#ifdef _WIN32 + return unsigned(GetCurrentProcessId()); +#else + return unsigned(getpid()); +#endif +} -void initialize(int& narg, char* arg[]) { - int num_threads = -1; - int numa = -1; - int device = -1; - int ndevices = -1; - int skip_device = 9999; - bool disable_warnings = false; +void parse_command_line_arguments(int& narg, char* arg[], + InitArguments& arguments) { + auto& num_threads = arguments.num_threads; + auto& numa = arguments.num_numa; + auto& device = arguments.device_id; + auto& ndevices = arguments.ndevices; + auto& skip_device = arguments.skip_device; + auto& disable_warnings = arguments.disable_warnings; int kokkos_threads_found = 0; int kokkos_numa_found = 0; @@ -479,76 +622,97 @@ void initialize(int& narg, char* arg[]) { int iarg = 0; while (iarg < narg) { - if (Impl::check_int_arg(arg[iarg], "--kokkos-threads", &num_threads)) { + if (check_int_arg(arg[iarg], "--kokkos-threads", &num_threads)) { for (int k = iarg; k < narg - 1; k++) { arg[k] = arg[k + 1]; } kokkos_threads_found = 1; narg--; } else if (!kokkos_threads_found && - Impl::check_int_arg(arg[iarg], "--threads", &num_threads)) { + check_int_arg(arg[iarg], "--threads", &num_threads)) { iarg++; - } else if (Impl::check_int_arg(arg[iarg], "--kokkos-numa", &numa)) { + } else if (check_int_arg(arg[iarg], "--kokkos-numa", &numa)) { for (int k = iarg; k < narg - 1; k++) { arg[k] = arg[k + 1]; } kokkos_numa_found = 1; narg--; } else if (!kokkos_numa_found && - Impl::check_int_arg(arg[iarg], "--numa", &numa)) { + check_int_arg(arg[iarg], "--numa", &numa)) { iarg++; - } else if (Impl::check_int_arg(arg[iarg], "--kokkos-device", &device)) { + } else if (check_int_arg(arg[iarg], "--kokkos-device-id", &device) || + check_int_arg(arg[iarg], "--kokkos-device", &device)) { + if (check_arg(arg[iarg], "--kokkos-device")) { + warn_deprecated_command_line_argument("--kokkos-device", + "--kokkos-device-id"); + } for (int k = iarg; k < narg - 1; k++) { arg[k] = arg[k + 1]; } kokkos_device_found = 1; narg--; } else if (!kokkos_device_found && - Impl::check_int_arg(arg[iarg], "--device", &device)) { + (check_int_arg(arg[iarg], "--device-id", &device) || + check_int_arg(arg[iarg], "--device", &device))) { + if (check_arg(arg[iarg], "--device")) { + warn_deprecated_command_line_argument("--device", "--device-id"); + } iarg++; - } else if (Impl::check_arg(arg[iarg], "--kokkos-ndevices") || - Impl::check_arg(arg[iarg], "--ndevices")) { + } else if (check_arg(arg[iarg], "--kokkos-num-devices") || + check_arg(arg[iarg], "--num-devices") || + check_arg(arg[iarg], "--kokkos-ndevices") || + check_arg(arg[iarg], "--ndevices")) { + if (check_arg(arg[iarg], "--ndevices")) { + warn_deprecated_command_line_argument("--ndevices", "--num-devices"); + } + if (check_arg(arg[iarg], "--kokkos-ndevices")) { + warn_deprecated_command_line_argument("--kokkos-ndevices", + "--kokkos-num-devices"); + } // Find the number of device (expecting --device=XX) - if (!((strncmp(arg[iarg], "--kokkos-ndevices=", 18) == 0) || + if (!((strncmp(arg[iarg], "--kokkos-num-devices=", 21) == 0) || + (strncmp(arg[iarg], "--num-ndevices=", 14) == 0) || + (strncmp(arg[iarg], "--kokkos-ndevices=", 18) == 0) || (strncmp(arg[iarg], "--ndevices=", 11) == 0))) - Impl::throw_runtime_exception( + throw_runtime_exception( "Error: expecting an '=INT[,INT]' after command line argument " - "'--ndevices/--kokkos-ndevices'. Raised by Kokkos::initialize(int " - "narg, char* argc[])."); + "'--num-devices/--kokkos-num-devices'. Raised by " + "Kokkos::initialize(int narg, char* argc[])."); char* num1 = strchr(arg[iarg], '=') + 1; char* num2 = strpbrk(num1, ","); - int num1_len = num2 == NULL ? strlen(num1) : num2 - num1; + int num1_len = num2 == nullptr ? strlen(num1) : num2 - num1; char* num1_only = new char[num1_len + 1]; strncpy(num1_only, num1, num1_len); num1_only[num1_len] = 0; - if (!Impl::is_unsigned_int(num1_only) || (strlen(num1_only) == 0)) { - Impl::throw_runtime_exception( + if (!is_unsigned_int(num1_only) || (strlen(num1_only) == 0)) { + throw_runtime_exception( "Error: expecting an integer number after command line argument " - "'--kokkos-ndevices'. Raised by Kokkos::initialize(int narg, char* " - "argc[])."); + "'--kokkos-numdevices'. Raised by " + "Kokkos::initialize(int narg, char* argc[])."); } - if ((strncmp(arg[iarg], "--kokkos-ndevices", 17) == 0) || - !kokkos_ndevices_found) + if (check_arg(arg[iarg], "--kokkos-num-devices") || + check_arg(arg[iarg], "--kokkos-ndevices") || !kokkos_ndevices_found) ndevices = atoi(num1_only); delete[] num1_only; - if (num2 != NULL) { - if ((!Impl::is_unsigned_int(num2 + 1)) || (strlen(num2) == 1)) - Impl::throw_runtime_exception( + if (num2 != nullptr) { + if ((!is_unsigned_int(num2 + 1)) || (strlen(num2) == 1)) + throw_runtime_exception( "Error: expecting an integer number after command line argument " - "'--kokkos-ndevices=XX,'. Raised by Kokkos::initialize(int narg, " - "char* argc[])."); + "'--kokkos-num-devices=XX,'. Raised by " + "Kokkos::initialize(int narg, char* argc[])."); - if ((strncmp(arg[iarg], "--kokkos-ndevices", 17) == 0) || - !kokkos_ndevices_found) + if (check_arg(arg[iarg], "--kokkos-num-devices") || + check_arg(arg[iarg], "--kokkos-ndevices") || !kokkos_ndevices_found) skip_device = atoi(num2 + 1); } - // Remove the --kokkos-ndevices argument from the list but leave - // --ndevices - if (strncmp(arg[iarg], "--kokkos-ndevices", 17) == 0) { + // Remove the --kokkos-num-devices argument from the list but leave + // --num-devices + if (check_arg(arg[iarg], "--kokkos-num-devices") || + check_arg(arg[iarg], "--kokkos-ndevices")) { for (int k = iarg; k < narg - 1; k++) { arg[k] = arg[k + 1]; } @@ -557,88 +721,45 @@ void initialize(int& narg, char* arg[]) { } else { iarg++; } - } else if (strcmp(arg[iarg], "--kokkos-disable-warnings") == 0) { + } else if (check_arg(arg[iarg], "--kokkos-disable-warnings")) { disable_warnings = true; for (int k = iarg; k < narg - 1; k++) { arg[k] = arg[k + 1]; } narg--; - } else if ((strcmp(arg[iarg], "--kokkos-help") == 0) || - (strcmp(arg[iarg], "--help") == 0)) { - std::cout << std::endl; - std::cout << "-----------------------------------------------------------" - "---------------------" - << std::endl; - std::cout << "-------------Kokkos command line " - "arguments--------------------------------------" - << std::endl; - std::cout << "-----------------------------------------------------------" - "---------------------" - << std::endl; - std::cout << "The following arguments exist also without prefix 'kokkos' " - "(e.g. --help)." - << std::endl; - std::cout << "The prefixed arguments will be removed from the list by " - "Kokkos::initialize()," - << std::endl; - std::cout << "the non-prefixed ones are not removed. Prefixed versions " - "take precedence over " - << std::endl; - std::cout << "non prefixed ones, and the last occurrence of an argument " - "overwrites prior" - << std::endl; - std::cout << "settings." << std::endl; - std::cout << std::endl; - std::cout << "--kokkos-help : print this message" - << std::endl; - std::cout - << "--kokkos-disable-warnings : disable kokkos warning messages" - << std::endl; - std::cout - << "--kokkos-threads=INT : specify total number of threads or" - << std::endl; - std::cout << " number of threads per NUMA " - "region if " - << std::endl; - std::cout << " used in conjunction with " - "'--numa' option. " - << std::endl; - std::cout << "--kokkos-numa=INT : specify number of NUMA " - "regions used by process." - << std::endl; - std::cout << "--kokkos-device=INT : specify device id to be used " - "by Kokkos. " - << std::endl; - std::cout << "--kokkos-ndevices=INT[,INT] : used when running MPI jobs. " - "Specify number of" - << std::endl; - std::cout << " devices per node to be used. " - "Process to device" - << std::endl; - std::cout << " mapping happens by obtaining " - "the local MPI rank" - << std::endl; - std::cout << " and assigning devices " - "round-robin. The optional" - << std::endl; - std::cout << " second argument allows for " - "an existing device" - << std::endl; - std::cout << " to be ignored. This is most " - "useful on workstations" - << std::endl; - std::cout << " with multiple GPUs of which " - "one is used to drive" - << std::endl; - std::cout << " screen output." << std::endl; - std::cout << std::endl; - std::cout << "-----------------------------------------------------------" - "---------------------" - << std::endl; - std::cout << std::endl; - - // Remove the --kokkos-help argument from the list but leave --ndevices - if (strcmp(arg[iarg], "--kokkos-help") == 0) { + } else if (check_arg(arg[iarg], "--kokkos-help") || + check_arg(arg[iarg], "--help")) { + auto const help_message = R"( + -------------------------------------------------------------------------------- + -------------Kokkos command line arguments-------------------------------------- + -------------------------------------------------------------------------------- + The following arguments exist also without prefix 'kokkos' (e.g. --help). + The prefixed arguments will be removed from the list by Kokkos::initialize(), + the non-prefixed ones are not removed. Prefixed versions take precedence over + non prefixed ones, and the last occurrence of an argument overwrites prior + settings. + + --kokkos-help : print this message + --kokkos-disable-warnings : disable kokkos warning messages + --kokkos-threads=INT : specify total number of threads or + number of threads per NUMA region if + used in conjunction with '--numa' option. + --kokkos-numa=INT : specify number of NUMA regions used by process. + --kokkos-device-id=INT : specify device id to be used by Kokkos. + --kokkos-num-devices=INT[,INT] : used when running MPI jobs. Specify number of + devices per node to be used. Process to device + mapping happens by obtaining the local MPI rank + and assigning devices round-robin. The optional + second argument allows for an existing device + to be ignored. This is most useful on workstations + with multiple GPUs of which one is used to drive + screen output. + -------------------------------------------------------------------------------- +)"; + std::cout << help_message << std::endl; + + // Remove the --kokkos-help argument from the list but leave --help + if (check_arg(arg[iarg], "--kokkos-help")) { for (int k = iarg; k < narg - 1; k++) { arg[k] = arg[k + 1]; } @@ -649,8 +770,16 @@ void initialize(int& narg, char* arg[]) { } else iarg++; } +} + +void parse_environment_variables(InitArguments& arguments) { + auto& num_threads = arguments.num_threads; + auto& numa = arguments.num_numa; + auto& device = arguments.device_id; + auto& ndevices = arguments.ndevices; + auto& skip_device = arguments.skip_device; + auto& disable_warnings = arguments.disable_warnings; - // Read environment variables char* endptr; auto env_num_threads_str = std::getenv("KOKKOS_NUM_THREADS"); if (env_num_threads_str != nullptr) { @@ -783,7 +912,7 @@ void initialize(int& narg, char* arg[]) { "Error: cannot KOKKOS_SKIP_DEVICE the only KOKKOS_RAND_DEVICE. " "Raised by Kokkos::initialize(int narg, char* argc[])."); - std::srand(getpid()); + std::srand(get_process_id()); while (device < 0) { int test_device = std::rand() % rdevices; if (test_device != skip_device) device = test_device; @@ -804,21 +933,40 @@ void initialize(int& narg, char* arg[]) { "KOKKOS_DISABLE_WARNINGS if both are set. Raised by " "Kokkos::initialize(int narg, char* argc[])."); } +} +} // namespace + +} // namespace Impl +} // namespace Kokkos + +//---------------------------------------------------------------------------- + +namespace Kokkos { + +void initialize(int& narg, char* arg[]) { InitArguments arguments; - arguments.num_threads = num_threads; - arguments.num_numa = numa; - arguments.device_id = device; - arguments.ndevices = ndevices; - arguments.skip_device = skip_device; - arguments.disable_warnings = disable_warnings; + Impl::parse_command_line_arguments(narg, arg, arguments); + Impl::parse_environment_variables(arguments); Impl::initialize_internal(arguments); } -void initialize(const InitArguments& arguments) { +void initialize(InitArguments arguments) { + Impl::parse_environment_variables(arguments); Impl::initialize_internal(arguments); } +namespace Impl { + +void pre_initialize(const InitArguments& args) { + pre_initialize_internal(args); +} + +void post_initialize(const InitArguments& args) { + post_initialize_internal(args); +} +} // namespace Impl + void push_finalize_hook(std::function f) { finalize_hooks.push(f); } void finalize() { Impl::finalize_internal(); } @@ -833,6 +981,10 @@ void fence() { Impl::fence_internal(); } void print_configuration(std::ostream& out, const bool detail) { std::ostringstream msg; + msg << "Kokkos Version:" << std::endl; + msg << " " << KOKKOS_VERSION / 10000 << "." << (KOKKOS_VERSION % 10000) / 100 + << "." << KOKKOS_VERSION % 100 << std::endl; + msg << "Compiler:" << std::endl; #ifdef KOKKOS_COMPILER_APPLECC msg << " KOKKOS_COMPILER_APPLECC: " << KOKKOS_COMPILER_APPLECC << std::endl; @@ -882,6 +1034,12 @@ void print_configuration(std::ostream& out, const bool detail) { msg << "yes" << std::endl; #else msg << "no" << std::endl; +#endif + msg << " KOKKOS_ENABLE_HIP: "; +#ifdef KOKKOS_ENABLE_HIP + msg << "yes" << std::endl; +#else + msg << "no" << std::endl; #endif msg << " KOKKOS_ENABLE_OPENMP: "; #ifdef KOKKOS_ENABLE_OPENMP @@ -900,12 +1058,6 @@ void print_configuration(std::ostream& out, const bool detail) { msg << "yes" << std::endl; #else msg << "no" << std::endl; -#endif - msg << " KOKKOS_ENABLE_QTHREADS: "; -#ifdef KOKKOS_ENABLE_QTHREADS - msg << "yes" << std::endl; -#else - msg << "no" << std::endl; #endif msg << " KOKKOS_ENABLE_SERIAL: "; #ifdef KOKKOS_ENABLE_SERIAL @@ -921,20 +1073,20 @@ void print_configuration(std::ostream& out, const bool detail) { #else msg << "no" << std::endl; #endif - msg << " KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_OPENMP: "; -#ifdef KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_OPENMP + msg << " KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_HIP: "; +#ifdef KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_HIP msg << "yes" << std::endl; #else msg << "no" << std::endl; #endif - msg << " KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_THREADS: "; -#ifdef KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_THREADS + msg << " KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_OPENMP: "; +#ifdef KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_OPENMP msg << "yes" << std::endl; #else msg << "no" << std::endl; #endif - msg << " KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_QTHREADS: "; -#ifdef KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_QTHREADS + msg << " KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_THREADS: "; +#ifdef KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_THREADS msg << "yes" << std::endl; #else msg << "no" << std::endl; @@ -1131,12 +1283,25 @@ void print_configuration(std::ostream& out, const bool detail) { msg << "no" << std::endl; #endif +#endif + +#ifdef KOKKOS_ENABLE_HIP + msg << "HIP Options:" << std::endl; + msg << " KOKKOS_ENABLE_HIP_RELOCATABLE_DEVICE_CODE: "; +#ifdef KOKKOS_ENABLE_HIP_RELOCATABLE_DEVICE_CODE + msg << "yes" << std::endl; +#else + msg << "no" << std::endl; +#endif #endif msg << "\nRuntime Configuration:" << std::endl; #ifdef KOKKOS_ENABLE_CUDA Cuda::print_configuration(msg, detail); #endif +#ifdef KOKKOS_ENABLE_HIP + Experimental::HIP::print_configuration(msg, detail); +#endif #ifdef KOKKOS_ENABLE_OPENMP OpenMP::print_configuration(msg, detail); #endif @@ -1146,9 +1311,6 @@ void print_configuration(std::ostream& out, const bool detail) { #if defined(KOKKOS_ENABLE_THREADS) Threads::print_configuration(msg, detail); #endif -#ifdef KOKKOS_ENABLE_QTHREADS - Qthreads::print_configuration(msg, detail); -#endif #ifdef KOKKOS_ENABLE_SERIAL Serial::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 index 5adf4bd5f1..39e855a55e 100644 --- a/lib/kokkos/core/src/impl/Kokkos_EBO.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_EBO.hpp @@ -117,21 +117,21 @@ struct EBOBaseImpl { : EBOBaseImpl(_constexpr_14_workaround_no_device_tag{}, T(std::forward(args)...)) {} - KOKKOS_FORCEINLINE_FUNCTION + KOKKOS_DEFAULTED_FUNCTION constexpr EBOBaseImpl(EBOBaseImpl const&) = default; - KOKKOS_FORCEINLINE_FUNCTION + KOKKOS_DEFAULTED_FUNCTION constexpr EBOBaseImpl(EBOBaseImpl&&) = default; - KOKKOS_FORCEINLINE_FUNCTION + KOKKOS_DEFAULTED_FUNCTION KOKKOS_CONSTEXPR_14 EBOBaseImpl& operator=(EBOBaseImpl const&) = default; - KOKKOS_FORCEINLINE_FUNCTION + KOKKOS_DEFAULTED_FUNCTION KOKKOS_CONSTEXPR_14 EBOBaseImpl& operator=(EBOBaseImpl&&) = default; - KOKKOS_FORCEINLINE_FUNCTION + KOKKOS_DEFAULTED_FUNCTION ~EBOBaseImpl() = default; KOKKOS_INLINE_FUNCTION @@ -184,21 +184,21 @@ struct EBOBaseImpl { // TODO @tasking @minor DSH noexcept in the right places? - KOKKOS_FORCEINLINE_FUNCTION + KOKKOS_DEFAULTED_FUNCTION constexpr EBOBaseImpl(EBOBaseImpl const&) = default; - KOKKOS_FORCEINLINE_FUNCTION + KOKKOS_DEFAULTED_FUNCTION constexpr EBOBaseImpl(EBOBaseImpl&&) noexcept = default; - KOKKOS_FORCEINLINE_FUNCTION + KOKKOS_DEFAULTED_FUNCTION KOKKOS_CONSTEXPR_14 EBOBaseImpl& operator=(EBOBaseImpl const&) = default; - KOKKOS_FORCEINLINE_FUNCTION + KOKKOS_DEFAULTED_FUNCTION KOKKOS_CONSTEXPR_14 EBOBaseImpl& operator=(EBOBaseImpl&&) = default; - KOKKOS_FORCEINLINE_FUNCTION + KOKKOS_DEFAULTED_FUNCTION ~EBOBaseImpl() = default; KOKKOS_INLINE_FUNCTION diff --git a/lib/kokkos/core/src/impl/Kokkos_Error.cpp b/lib/kokkos/core/src/impl/Kokkos_Error.cpp index 817c9a0581..a42b916f80 100644 --- a/lib/kokkos/core/src/impl/Kokkos_Error.cpp +++ b/lib/kokkos/core/src/impl/Kokkos_Error.cpp @@ -129,6 +129,8 @@ void Experimental::RawMemoryAllocationFailure::print_error_message( o << "cudaMallocManaged()."; break; case AllocationMechanism::CudaHostAlloc: o << "cudaHostAlloc()."; break; + case AllocationMechanism::HIPMalloc: o << "hipMalloc()."; break; + case AllocationMechanism::HIPHostMalloc: o << "hipHostMalloc()."; break; } append_additional_error_information(o); o << ")" << std::endl; diff --git a/lib/kokkos/core/src/impl/Kokkos_Error.hpp b/lib/kokkos/core/src/impl/Kokkos_Error.hpp index 44f7771042..41be6737e7 100644 --- a/lib/kokkos/core/src/impl/Kokkos_Error.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_Error.hpp @@ -51,6 +51,9 @@ #ifdef KOKKOS_ENABLE_CUDA #include #endif +#ifdef KOKKOS_ENABLE_HIP +#include +#endif #ifndef KOKKOS_ABORT_MESSAGE_BUFFER_SIZE #define KOKKOS_ABORT_MESSAGE_BUFFER_SIZE 2048 @@ -87,7 +90,9 @@ class RawMemoryAllocationFailure : public std::bad_alloc { IntelMMAlloc, CudaMalloc, CudaMallocManaged, - CudaHostAlloc + CudaHostAlloc, + HIPMalloc, + HIPHostMalloc }; private: @@ -124,7 +129,7 @@ class RawMemoryAllocationFailure : public std::bad_alloc { const char *what() const noexcept override { if (m_failure_mode == FailureMode::OutOfMemoryError) { return "Memory allocation error: out of memory"; - } else if (m_failure_mode == FailureMode::OutOfMemoryError) { + } else if (m_failure_mode == FailureMode::AllocationNotAligned) { return "Memory allocation error: allocation result was under-aligned"; } @@ -164,11 +169,11 @@ KOKKOS_INLINE_FUNCTION void abort(const char *const message) { #if defined(KOKKOS_ENABLE_CUDA) && defined(__CUDA_ARCH__) Kokkos::Impl::cuda_abort(message); -#else -#if !defined(KOKKOS_ENABLE_OPENMPTARGET) && !defined(__HCC_ACCELERATOR__) +#elif defined(KOKKOS_ENABLE_HIP) && defined(__HIP_DEVICE_COMPILE__) + Kokkos::Impl::hip_abort(message); +#elif !defined(KOKKOS_ENABLE_OPENMPTARGET) && !defined(__HCC_ACCELERATOR__) Kokkos::Impl::host_abort(message); #endif -#endif } } // namespace Kokkos diff --git a/lib/kokkos/core/src/impl/Kokkos_FixedBufferMemoryPool.hpp b/lib/kokkos/core/src/impl/Kokkos_FixedBufferMemoryPool.hpp index a304e8eff2..2651229a70 100644 --- a/lib/kokkos/core/src/impl/Kokkos_FixedBufferMemoryPool.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_FixedBufferMemoryPool.hpp @@ -126,18 +126,19 @@ class FixedBlockSizeMemoryPool 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=( + KOKKOS_DEFAULTED_FUNCTION FixedBlockSizeMemoryPool() = default; + KOKKOS_DEFAULTED_FUNCTION FixedBlockSizeMemoryPool( FixedBlockSizeMemoryPool&&) = default; - KOKKOS_INLINE_FUNCTION FixedBlockSizeMemoryPool& operator=( + KOKKOS_DEFAULTED_FUNCTION FixedBlockSizeMemoryPool( + FixedBlockSizeMemoryPool const&) = default; + KOKKOS_DEFAULTED_FUNCTION FixedBlockSizeMemoryPool& operator=( + FixedBlockSizeMemoryPool&&) = default; + KOKKOS_DEFAULTED_FUNCTION FixedBlockSizeMemoryPool& operator=( FixedBlockSizeMemoryPool const&) = default; KOKKOS_INLINE_FUNCTION void* allocate(size_type alloc_size) const noexcept { + (void)alloc_size; KOKKOS_EXPECTS(alloc_size <= Size); auto free_idx_counter = Kokkos::atomic_fetch_add( (volatile size_type*)&m_first_free_idx, size_type(1)); @@ -161,7 +162,7 @@ class FixedBlockSizeMemoryPool } KOKKOS_INLINE_FUNCTION - void deallocate(void* ptr, size_type alloc_size) const noexcept { + 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); @@ -250,11 +251,11 @@ public: ) : 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_DEFAULTED_FUNCTION FixedBlockSizeMemoryPool() = default; + KOKKOS_DEFAULTED_FUNCTION FixedBlockSizeMemoryPool(FixedBlockSizeMemoryPool&&) = default; + KOKKOS_DEFAULTED_FUNCTION FixedBlockSizeMemoryPool(FixedBlockSizeMemoryPool const&) = default; + KOKKOS_DEFAULTED_FUNCTION FixedBlockSizeMemoryPool& operator=(FixedBlockSizeMemoryPool&&) = default; + KOKKOS_DEFAULTED_FUNCTION FixedBlockSizeMemoryPool& operator=(FixedBlockSizeMemoryPool const&) = default; KOKKOS_INLINE_FUNCTION diff --git a/lib/kokkos/core/src/impl/Kokkos_FunctorAdapter.hpp b/lib/kokkos/core/src/impl/Kokkos_FunctorAdapter.hpp index e981e90366..b777dac021 100644 --- a/lib/kokkos/core/src/impl/Kokkos_FunctorAdapter.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_FunctorAdapter.hpp @@ -64,7 +64,7 @@ struct ReduceFunctorHasInit { template struct ReduceFunctorHasInit< FunctorType, - typename Impl::enable_if<0 < sizeof(&FunctorType::init)>::type> { + typename std::enable_if<0 < sizeof(&FunctorType::init)>::type> { enum { value = true }; }; @@ -76,7 +76,7 @@ struct ReduceFunctorHasJoin { template struct ReduceFunctorHasJoin< FunctorType, - typename Impl::enable_if<0 < sizeof(&FunctorType::join)>::type> { + typename std::enable_if<0 < sizeof(&FunctorType::join)>::type> { enum { value = true }; }; @@ -88,7 +88,7 @@ struct ReduceFunctorHasFinal { template struct ReduceFunctorHasFinal< FunctorType, - typename Impl::enable_if<0 < sizeof(&FunctorType::final)>::type> { + typename std::enable_if<0 < sizeof(&FunctorType::final)>::type> { enum { value = true }; }; @@ -100,18 +100,18 @@ struct ReduceFunctorHasShmemSize { template struct ReduceFunctorHasShmemSize< FunctorType, - typename Impl::enable_if<0 < sizeof(&FunctorType::team_shmem_size)>::type> { + typename std::enable_if<0 < sizeof(&FunctorType::team_shmem_size)>::type> { enum { value = true }; }; template -struct FunctorDeclaresValueType : public Impl::false_type {}; +struct FunctorDeclaresValueType : public std::false_type {}; template struct FunctorDeclaresValueType< FunctorType, ArgTag, typename Impl::enable_if_type::type> - : public Impl::true_type {}; + : public std::true_type {}; template ::value) || @@ -174,18 +174,19 @@ struct FunctorValueTraits { template struct FunctorValueTraits { - typedef typename Impl::remove_extent::type + typedef typename std::remove_extent::type value_type; typedef FunctorType functor_type; - static_assert(0 == (sizeof(value_type) % sizeof(int)), + static_assert((sizeof(value_type) < sizeof(int)) || + 0 == (sizeof(value_type) % sizeof(int)), "Reduction functor's declared value_type requires: 0 == " "sizeof(value_type) % sizeof(int)"); /* this cast to bool is needed for correctness by NVCC */ enum : bool { IsArray = static_cast( - Impl::is_array::value) + std::is_array::value) }; // If not an array then what is the sizeof(value_type) @@ -202,8 +203,8 @@ struct FunctorValueTraits KOKKOS_FORCEINLINE_FUNCTION static - typename Impl::enable_if::value && !IsArray, - unsigned>::type + typename std::enable_if::value && !IsArray, + unsigned>::type value_count(const F&) { return 1; } @@ -213,8 +214,8 @@ struct FunctorValueTraits KOKKOS_FORCEINLINE_FUNCTION static - typename Impl::enable_if::value && IsArray, - unsigned>::type + typename std::enable_if::value && IsArray, + unsigned>::type value_count(const F& f) { return f.value_count; } @@ -1412,8 +1413,10 @@ struct FunctorValueInit< // First substitution failure when FunctorType::init does not exist. // Second substitution failure when FunctorType::init is not compatible. , - decltype(FunctorValueInitFunction::enable_if( - &FunctorType::init))> { + typename std::enable_if< + !std::is_same::value, + decltype(FunctorValueInitFunction::enable_if( + &FunctorType::init))>::type> { KOKKOS_FORCEINLINE_FUNCTION static T& init(const FunctorType& f, void* p) { f.init(ArgTag(), *((T*)p)); return *((T*)p); @@ -1428,8 +1431,10 @@ struct FunctorValueInit< // First substitution failure when FunctorType::init does not exist. // Second substitution failure when FunctorType::init is not compatible , - decltype(FunctorValueInitFunction::enable_if( - &FunctorType::init))> { + typename std::enable_if< + !std::is_same::value, + decltype(FunctorValueInitFunction::enable_if( + &FunctorType::init))>::type> { KOKKOS_FORCEINLINE_FUNCTION static T* init(const FunctorType& f, void* p) { f.init(ArgTag(), (T*)p); return (T*)p; @@ -1525,7 +1530,7 @@ struct FunctorValueJoin { KOKKOS_FORCEINLINE_FUNCTION FunctorValueJoin(const FunctorType&) {} - KOKKOS_FORCEINLINE_FUNCTION static void join(const FunctorType& f, + KOKKOS_FORCEINLINE_FUNCTION static void join(const FunctorType& /*f*/, volatile void* const lhs, const volatile void* const rhs) { *((volatile T*)lhs) += *((const volatile T*)rhs); @@ -1760,8 +1765,8 @@ template struct JoinAdd { typedef ValueType value_type; - KOKKOS_INLINE_FUNCTION - JoinAdd() {} + KOKKOS_DEFAULTED_FUNCTION + JoinAdd() = default; KOKKOS_INLINE_FUNCTION void join(volatile value_type& dst, const volatile value_type& src) const { diff --git a/lib/kokkos/core/src/impl/Kokkos_FunctorAnalysis.hpp b/lib/kokkos/core/src/impl/Kokkos_FunctorAnalysis.hpp index a8f3b5042a..827a9f346d 100644 --- a/lib/kokkos/core/src/impl/Kokkos_FunctorAnalysis.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_FunctorAnalysis.hpp @@ -797,7 +797,7 @@ struct FunctorAnalysis { using rebind = Reducer; KOKKOS_INLINE_FUNCTION explicit constexpr Reducer( - Functor const* arg_functor = 0, ValueType* arg_value = 0) noexcept + Functor const* arg_functor = 0, ValueType* arg_value = nullptr) noexcept : m_functor(arg_functor), m_result(arg_value) {} }; }; diff --git a/lib/kokkos/core/src/impl/Kokkos_HBWSpace.cpp b/lib/kokkos/core/src/impl/Kokkos_HBWSpace.cpp index 8a83aef4c9..9b5bee2279 100644 --- a/lib/kokkos/core/src/impl/Kokkos_HBWSpace.cpp +++ b/lib/kokkos/core/src/impl/Kokkos_HBWSpace.cpp @@ -136,8 +136,8 @@ void *HBWSpace::allocate(const size_t arg_alloc_size) const { case STD_MALLOC: msg << "STD_MALLOC"; break; } msg << " ]( " << arg_alloc_size << " ) FAILED"; - if (ptr == NULL) { - msg << " NULL"; + if (ptr == nullptr) { + msg << " nullptr"; } else { msg << " NOT ALIGNED " << ptr; } @@ -181,7 +181,12 @@ void SharedAllocationRecord::deallocate( } SharedAllocationRecord::~SharedAllocationRecord() { + void>::~SharedAllocationRecord() +#if defined( \ + KOKKOS_IMPL_INTEL_WORKAROUND_NOEXCEPT_SPECIFICATION_VIRTUAL_FUNCTION) + noexcept +#endif +{ #if defined(KOKKOS_ENABLE_PROFILING) if (Kokkos::Profiling::profileLibraryLoaded()) { Kokkos::Profiling::deallocateData( diff --git a/lib/kokkos/core/src/impl/Kokkos_HostBarrier.cpp b/lib/kokkos/core/src/impl/Kokkos_HostBarrier.cpp index 0b96add432..55d70985dc 100644 --- a/lib/kokkos/core/src/impl/Kokkos_HostBarrier.cpp +++ b/lib/kokkos/core/src/impl/Kokkos_HostBarrier.cpp @@ -92,7 +92,7 @@ void HostBarrier::impl_backoff_wait_until_equal( #endif } #else // _WIN32 - while (!try_wait()) { + while (!test_equal(ptr, v)) { #if defined(KOKKOS_ENABLE_ASM) for (int j = 0; j < num_nops; ++j) { __asm__ __volatile__("nop\n"); diff --git a/lib/kokkos/core/src/impl/Kokkos_HostBarrier.hpp b/lib/kokkos/core/src/impl/Kokkos_HostBarrier.hpp index ce7a1408a3..4b9235ab70 100644 --- a/lib/kokkos/core/src/impl/Kokkos_HostBarrier.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_HostBarrier.hpp @@ -235,6 +235,7 @@ class HostBarrier { impl_backoff_wait_until_equal(ptr, v, active_wait); } #else + (void)active_wait; while (!test_equal(ptr, v)) { } #endif diff --git a/lib/kokkos/core/src/impl/Kokkos_HostSpace.cpp b/lib/kokkos/core/src/impl/Kokkos_HostSpace.cpp index 94490b8300..59d14e5392 100644 --- a/lib/kokkos/core/src/impl/Kokkos_HostSpace.cpp +++ b/lib/kokkos/core/src/impl/Kokkos_HostSpace.cpp @@ -221,18 +221,19 @@ void *HostSpace::allocate(const size_t arg_alloc_size) const { // read write access to private memory - ptr = mmap(NULL /* address hint, if NULL OS kernel chooses address */ - , - arg_alloc_size /* size in bytes */ - , - prot /* memory protection */ - , - flags /* visibility of updates */ - , - -1 /* file descriptor */ - , - 0 /* offset */ - ); + ptr = + mmap(nullptr /* address hint, if nullptr OS kernel chooses address */ + , + arg_alloc_size /* size in bytes */ + , + prot /* memory protection */ + , + flags /* visibility of updates */ + , + -1 /* file descriptor */ + , + 0 /* offset */ + ); /* Associated reallocation: ptr = mremap( old_ptr , old_size , new_size , MREMAP_MAYMOVE ); @@ -325,7 +326,12 @@ void SharedAllocationRecord::deallocate( delete static_cast(arg_rec); } -SharedAllocationRecord::~SharedAllocationRecord() { +SharedAllocationRecord::~SharedAllocationRecord() +#if defined( \ + KOKKOS_IMPL_INTEL_WORKAROUND_NOEXCEPT_SPECIFICATION_VIRTUAL_FUNCTION) + noexcept +#endif +{ #if defined(KOKKOS_ENABLE_PROFILING) if (Kokkos::Profiling::profileLibraryLoaded()) { Kokkos::Profiling::deallocateData( @@ -397,7 +403,7 @@ SharedAllocationRecord::SharedAllocationRecord( void *SharedAllocationRecord::allocate_tracked( const Kokkos::HostSpace &arg_space, const std::string &arg_alloc_label, const size_t arg_alloc_size) { - if (!arg_alloc_size) return (void *)nullptr; + if (!arg_alloc_size) return nullptr; SharedAllocationRecord *const r = allocate(arg_space, arg_alloc_label, arg_alloc_size); @@ -409,7 +415,7 @@ void *SharedAllocationRecord::allocate_tracked( void SharedAllocationRecord::deallocate_tracked( void *const arg_alloc_ptr) { - if (arg_alloc_ptr != 0) { + if (arg_alloc_ptr != nullptr) { SharedAllocationRecord *const r = get_record(arg_alloc_ptr); RecordBase::decrement(r); @@ -437,9 +443,9 @@ SharedAllocationRecord::get_record(void *alloc_ptr) { typedef SharedAllocationRecord RecordHost; SharedAllocationHeader const *const head = - alloc_ptr ? Header::get_header(alloc_ptr) : (SharedAllocationHeader *)0; + alloc_ptr ? Header::get_header(alloc_ptr) : nullptr; RecordHost *const record = - head ? static_cast(head->m_record) : (RecordHost *)0; + head ? static_cast(head->m_record) : nullptr; if (!alloc_ptr || record->m_alloc_ptr != head) { Kokkos::Impl::throw_runtime_exception( diff --git a/lib/kokkos/core/src/impl/Kokkos_HostThreadTeam.cpp b/lib/kokkos/core/src/impl/Kokkos_HostThreadTeam.cpp index 92e9aa24b0..2e5587e4a3 100644 --- a/lib/kokkos/core/src/impl/Kokkos_HostThreadTeam.cpp +++ b/lib/kokkos/core/src/impl/Kokkos_HostThreadTeam.cpp @@ -62,7 +62,8 @@ void HostThreadTeamData::organize_pool(HostThreadTeamData *members[], // Verify not already a member of a pool: for (int rank = 0; rank < size && ok; ++rank) { - ok = (nullptr != members[rank]) && (0 == members[rank]->m_pool_scratch); + ok = (nullptr != members[rank]) && + (nullptr == members[rank]->m_pool_scratch); } if (ok) { @@ -106,8 +107,8 @@ void HostThreadTeamData::organize_pool(HostThreadTeamData *members[], void HostThreadTeamData::disband_pool() { m_work_range.first = -1; m_work_range.second = -1; - m_pool_scratch = 0; - m_team_scratch = 0; + m_pool_scratch = nullptr; + m_team_scratch = nullptr; m_pool_rank = 0; m_pool_size = 1; m_team_base = 0; @@ -121,7 +122,7 @@ void HostThreadTeamData::disband_pool() { int HostThreadTeamData::organize_team(const int team_size) { // Pool is initialized - const bool ok_pool = 0 != m_pool_scratch; + const bool ok_pool = nullptr != m_pool_scratch; // Team is not set const bool ok_team = diff --git a/lib/kokkos/core/src/impl/Kokkos_HostThreadTeam.hpp b/lib/kokkos/core/src/impl/Kokkos_HostThreadTeam.hpp index fce665f6b1..9e4dda941b 100644 --- a/lib/kokkos/core/src/impl/Kokkos_HostThreadTeam.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_HostThreadTeam.hpp @@ -53,7 +53,8 @@ #include #include -#include // std::numeric_limits +#include // std::numeric_limits +#include // std::max //---------------------------------------------------------------------------- //---------------------------------------------------------------------------- @@ -188,9 +189,9 @@ class HostThreadTeamData { constexpr HostThreadTeamData() noexcept : m_work_range(-1, -1), m_work_end(0), - m_scratch(0), - m_pool_scratch(0), - m_team_scratch(0), + m_scratch(nullptr), + m_pool_scratch(nullptr), + m_team_scratch(nullptr), m_pool_rank(0), m_pool_size(1), m_team_reduce(0), @@ -538,6 +539,8 @@ class HostThreadTeamMember { } #else { + (void)value; + (void)source_team_rank; Kokkos::abort("HostThreadTeamMember team_broadcast\n"); } #endif @@ -574,6 +577,9 @@ class HostThreadTeamMember { } #else { + (void)f; + (void)value; + (void)source_team_rank; Kokkos::abort("HostThreadTeamMember team_broadcast\n"); } #endif @@ -640,6 +646,8 @@ class HostThreadTeamMember { } #else { + (void)reducer; + (void)contribution; Kokkos::abort("HostThreadTeamMember team_reduce\n"); } #endif @@ -693,8 +701,8 @@ class HostThreadTeamMember { #endif*/ template - KOKKOS_INLINE_FUNCTION T team_scan(T const& value, T* const global = 0) const - noexcept + KOKKOS_INLINE_FUNCTION T team_scan(T const& value, + T* const global = nullptr) const noexcept #if defined(KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_HOST) { if (0 != m_data.m_team_rank) { @@ -751,6 +759,8 @@ class HostThreadTeamMember { } #else { + (void)value; + (void)global; Kokkos::abort("HostThreadTeamMember team_scan\n"); return T(); } diff --git a/lib/kokkos/core/src/impl/Kokkos_LIFO.hpp b/lib/kokkos/core/src/impl/Kokkos_LIFO.hpp index 67e9af5c40..683c5c9b18 100644 --- a/lib/kokkos/core/src/impl/Kokkos_LIFO.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_LIFO.hpp @@ -48,8 +48,7 @@ #define KOKKOS_IMPL_LIFO_HPP #include -#ifdef KOKKOS_ENABLE_TASKDAG // Note: implies CUDA_VERSION >= 8000 if using - // CUDA +#ifdef KOKKOS_ENABLE_TASKDAG #include @@ -305,7 +304,7 @@ class SingleConsumeOperationLIFO : private LockBasedLIFOCommon { public: using value_type = typename base_t::value_type; // = T - KOKKOS_INLINE_FUNCTION + KOKKOS_DEFAULTED_FUNCTION SingleConsumeOperationLIFO() noexcept = default; SingleConsumeOperationLIFO(SingleConsumeOperationLIFO const&) = delete; @@ -314,7 +313,7 @@ class SingleConsumeOperationLIFO : private LockBasedLIFOCommon { delete; SingleConsumeOperationLIFO& operator=(SingleConsumeOperationLIFO&&) = delete; - KOKKOS_INLINE_FUNCTION + KOKKOS_DEFAULTED_FUNCTION ~SingleConsumeOperationLIFO() = default; KOKKOS_INLINE_FUNCTION diff --git a/lib/kokkos/core/src/impl/Kokkos_LinkedListNode.hpp b/lib/kokkos/core/src/impl/Kokkos_LinkedListNode.hpp index 1b7918ed78..79aeca5da0 100644 --- a/lib/kokkos/core/src/impl/Kokkos_LinkedListNode.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_LinkedListNode.hpp @@ -48,8 +48,7 @@ #define KOKKOS_IMPL_LINKEDLISTNODE_HPP #include -#ifdef KOKKOS_ENABLE_TASKDAG // Note: implies CUDA_VERSION >= 8000 if using - // CUDA +#ifdef KOKKOS_ENABLE_TASKDAG #include diff --git a/lib/kokkos/core/src/impl/Kokkos_MemoryPoolAllocator.hpp b/lib/kokkos/core/src/impl/Kokkos_MemoryPoolAllocator.hpp index 54f91eb68d..2218405766 100644 --- a/lib/kokkos/core/src/impl/Kokkos_MemoryPoolAllocator.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_MemoryPoolAllocator.hpp @@ -65,17 +65,17 @@ class MemoryPoolAllocator { memory_pool m_pool; public: - KOKKOS_INLINE_FUNCTION + KOKKOS_DEFAULTED_FUNCTION MemoryPoolAllocator() = default; - KOKKOS_INLINE_FUNCTION + KOKKOS_DEFAULTED_FUNCTION MemoryPoolAllocator(MemoryPoolAllocator const&) = default; - KOKKOS_INLINE_FUNCTION + KOKKOS_DEFAULTED_FUNCTION MemoryPoolAllocator(MemoryPoolAllocator&&) = default; - KOKKOS_INLINE_FUNCTION + KOKKOS_DEFAULTED_FUNCTION MemoryPoolAllocator& operator=(MemoryPoolAllocator const&) = default; - KOKKOS_INLINE_FUNCTION + KOKKOS_DEFAULTED_FUNCTION MemoryPoolAllocator& operator=(MemoryPoolAllocator&&) = default; - KOKKOS_INLINE_FUNCTION + KOKKOS_DEFAULTED_FUNCTION ~MemoryPoolAllocator() = default; KOKKOS_INLINE_FUNCTION diff --git a/lib/kokkos/core/src/impl/Kokkos_Memory_Fence.hpp b/lib/kokkos/core/src/impl/Kokkos_Memory_Fence.hpp index f8bef72b77..eae14a92d5 100644 --- a/lib/kokkos/core/src/impl/Kokkos_Memory_Fence.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_Memory_Fence.hpp @@ -55,6 +55,8 @@ void memory_fence() { __threadfence(); #elif defined(KOKKOS_ENABLE_ROCM_ATOMICS) amp_barrier(CLK_LOCAL_MEM_FENCE | CLK_GLOBAL_MEM_FENCE); +#elif defined(KOKKOS_ENABLE_HIP_ATOMICS) + __threadfence(); #elif defined(KOKKOS_ENABLE_ASM) && defined(KOKKOS_ENABLE_ISA_X86_64) asm volatile("mfence" ::: "memory"); #elif defined(KOKKOS_ENABLE_GNU_ATOMICS) || \ diff --git a/lib/kokkos/core/src/impl/Kokkos_MultipleTaskQueue.hpp b/lib/kokkos/core/src/impl/Kokkos_MultipleTaskQueue.hpp index 675547ba5e..fe78cfbacc 100644 --- a/lib/kokkos/core/src/impl/Kokkos_MultipleTaskQueue.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_MultipleTaskQueue.hpp @@ -125,7 +125,7 @@ struct MultipleTaskQueueTeamEntry { KOKKOS_INLINE_FUNCTION OptionalRef _pop_failed_insertion( int priority, TaskType type, typename std::enable_if< - task_queue_traits::ready_queue_insertion_may_fail and + task_queue_traits::ready_queue_insertion_may_fail && std::is_void<_always_void>::value, void*>::type = nullptr) { auto* rv_ptr = m_failed_heads[priority][(int)type]; @@ -142,9 +142,9 @@ struct MultipleTaskQueueTeamEntry { template KOKKOS_INLINE_FUNCTION OptionalRef _pop_failed_insertion( - int priority, TaskType type, + int /*priority*/, TaskType /*type*/, typename std::enable_if< - not task_queue_traits::ready_queue_insertion_may_fail and + !task_queue_traits::ready_queue_insertion_may_fail && std::is_void<_always_void>::value, void*>::type = nullptr) { return OptionalRef{nullptr}; @@ -181,13 +181,13 @@ struct MultipleTaskQueueTeamEntry { 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) + if (!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) + if (!return_value) return_value = m_ready_queues[i_priority][TaskSingle].pop(); if (return_value) return return_value; } @@ -203,7 +203,7 @@ struct MultipleTaskQueueTeamEntry { 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 + task_queue_traits::ready_queue_insertion_may_fail && std::is_void<_always_void>::value, void*>::type = nullptr) { // failed insertions, if they happen, must be from the only thread that @@ -217,9 +217,9 @@ struct MultipleTaskQueueTeamEntry { template KOKKOS_INLINE_FUNCTION void do_handle_failed_insertion( - runnable_task_base_type&& task, + runnable_task_base_type&& /*task*/, typename std::enable_if< - not task_queue_traits::ready_queue_insertion_may_fail and + !task_queue_traits::ready_queue_insertion_may_fail && std::is_void<_always_void>::value, void*>::type = nullptr) { Kokkos::abort("should be unreachable!"); @@ -229,7 +229,7 @@ struct MultipleTaskQueueTeamEntry { 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 + task_queue_traits::ready_queue_insertion_may_fail && std::is_void<_always_void>::value, // just to make this dependent // on template parameter int>::type = 0) { @@ -258,7 +258,7 @@ struct MultipleTaskQueueTeamEntry { KOKKOS_INLINE_FUNCTION void flush_failed_insertions( int, int, typename std::enable_if< - not task_queue_traits::ready_queue_insertion_may_fail and + !task_queue_traits::ready_queue_insertion_may_fail && std::is_void<_always_void>::value, // just to make this dependent // on template parameter int>::type = 0) {} @@ -335,22 +335,22 @@ class MultipleTaskQueue final constexpr explicit SchedulerInfo(team_queue_id_t association) noexcept : team_association(association) {} - KOKKOS_INLINE_FUNCTION + KOKKOS_DEFAULTED_FUNCTION SchedulerInfo() = default; - KOKKOS_INLINE_FUNCTION + KOKKOS_DEFAULTED_FUNCTION SchedulerInfo(SchedulerInfo const&) = default; - KOKKOS_INLINE_FUNCTION + KOKKOS_DEFAULTED_FUNCTION SchedulerInfo(SchedulerInfo&&) = default; - KOKKOS_INLINE_FUNCTION + KOKKOS_DEFAULTED_FUNCTION SchedulerInfo& operator=(SchedulerInfo const&) = default; - KOKKOS_INLINE_FUNCTION + KOKKOS_DEFAULTED_FUNCTION SchedulerInfo& operator=(SchedulerInfo&&) = default; - KOKKOS_INLINE_FUNCTION + KOKKOS_DEFAULTED_FUNCTION ~SchedulerInfo() = default; }; @@ -438,7 +438,7 @@ class MultipleTaskQueue final return_value = team_queue_info.pop_ready_task(); - if (not return_value) { + if (!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; @@ -484,32 +484,32 @@ class MultipleTaskQueue final // 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 { + 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 { + 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 { + 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 { + 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 } diff --git a/lib/kokkos/core/src/impl/Kokkos_OldMacros.hpp b/lib/kokkos/core/src/impl/Kokkos_OldMacros.hpp index 6b1e8b63cc..fbb921d7f2 100644 --- a/lib/kokkos/core/src/impl/Kokkos_OldMacros.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_OldMacros.hpp @@ -245,12 +245,6 @@ #endif #endif -#ifdef KOKKOS_HAVE_QTHREADS -#ifndef KOKKOS_ENABLE_QTHREADS -#define KOKKOS_ENABLE_QTHREADS KOKKOS_HAVE_QTHREADS -#endif -#endif - #ifdef KOKKOS_HAVE_SERIAL #ifndef KOKKOS_ENABLE_SERIAL #define KOKKOS_ENABLE_SERIAL KOKKOS_HAVE_SERIAL @@ -474,10 +468,6 @@ #define KOKKOS_HAVE_PTHREAD 1 #endif -#if (!defined(KOKKOS_HAVE_QTHREADS)) && defined(KOKKOS_ENABLE_QTHREADS) -#define KOKKOS_HAVE_QTHREADS 1 -#endif - #if (!defined(KOKKOS_HAVE_SERIAL)) && defined(KOKKOS_ENABLE_SERIAL) #define KOKKOS_HAVE_SERIAL 1 #endif diff --git a/lib/kokkos/core/src/impl/Kokkos_OptionalRef.hpp b/lib/kokkos/core/src/impl/Kokkos_OptionalRef.hpp index 668e7c0916..12f6c9f5fd 100644 --- a/lib/kokkos/core/src/impl/Kokkos_OptionalRef.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_OptionalRef.hpp @@ -69,17 +69,22 @@ struct OptionalRef { public: using value_type = T; - KOKKOS_INLINE_FUNCTION + KOKKOS_DEFAULTED_FUNCTION OptionalRef() = default; - KOKKOS_INLINE_FUNCTION + KOKKOS_DEFAULTED_FUNCTION OptionalRef(OptionalRef const&) = default; - KOKKOS_INLINE_FUNCTION + KOKKOS_DEFAULTED_FUNCTION OptionalRef(OptionalRef&&) = default; KOKKOS_INLINE_FUNCTION - OptionalRef& operator=(OptionalRef const&) = default; + // MSVC requires that this copy constructor is not defaulted + // if there exists a (non-defaulted) volatile one. + OptionalRef& operator=(OptionalRef const& other) noexcept { + m_value = other.m_value; + return *this; + } KOKKOS_INLINE_FUNCTION // Can't return a reference to volatile OptionalRef, since GCC issues a @@ -88,10 +93,10 @@ struct OptionalRef { m_value = other.m_value; } - KOKKOS_INLINE_FUNCTION + KOKKOS_DEFAULTED_FUNCTION OptionalRef& operator=(OptionalRef&&) = default; - KOKKOS_INLINE_FUNCTION + KOKKOS_DEFAULTED_FUNCTION ~OptionalRef() = default; KOKKOS_INLINE_FUNCTION diff --git a/lib/kokkos/core/src/impl/Kokkos_Profiling_DeviceInfo.hpp b/lib/kokkos/core/src/impl/Kokkos_Profiling_DeviceInfo.hpp index e35ff84e97..51d1446ef5 100644 --- a/lib/kokkos/core/src/impl/Kokkos_Profiling_DeviceInfo.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_Profiling_DeviceInfo.hpp @@ -1,45 +1,45 @@ /* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 + //@HEADER + // ************************************************************************ + // + // Kokkos v. 3.0 // Copyright (2020) National Technology & Engineering // Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// 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 NTESS "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 NTESS 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 + // + // Under the terms of Contract DE-NA0003525 with NTESS, + // 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 NTESS "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 NTESS 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 KOKKOSP_DEVICE_INFO_HPP diff --git a/lib/kokkos/core/src/impl/Kokkos_Profiling_Interface.cpp b/lib/kokkos/core/src/impl/Kokkos_Profiling_Interface.cpp index a069a695fc..cf52caea90 100644 --- a/lib/kokkos/core/src/impl/Kokkos_Profiling_Interface.cpp +++ b/lib/kokkos/core/src/impl/Kokkos_Profiling_Interface.cpp @@ -1,46 +1,46 @@ /* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 + //@HEADER + // ************************************************************************ + // + // Kokkos v. 3.0 // Copyright (2020) National Technology & Engineering // Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// 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 NTESS "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 NTESS 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 -*/ + // + // Under the terms of Contract DE-NA0003525 with NTESS, + // 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 NTESS "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 NTESS 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 diff --git a/lib/kokkos/core/src/impl/Kokkos_Profiling_Interface.hpp b/lib/kokkos/core/src/impl/Kokkos_Profiling_Interface.hpp index ac37401e10..df17501ff4 100644 --- a/lib/kokkos/core/src/impl/Kokkos_Profiling_Interface.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_Profiling_Interface.hpp @@ -1,46 +1,46 @@ /* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 + //@HEADER + // ************************************************************************ + // + // Kokkos v. 3.0 // Copyright (2020) National Technology & Engineering // Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// 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 NTESS "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 NTESS 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 -*/ + // + // Under the terms of Contract DE-NA0003525 with NTESS, + // 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 NTESS "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 NTESS 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 KOKKOSP_INTERFACE_HPP #define KOKKOSP_INTERFACE_HPP @@ -54,7 +54,37 @@ #include #include +// NOTE: in this Kokkos::Profiling block, do not define anything that shouldn't +// exist should Profiling be disabled + +namespace Kokkos { +namespace Profiling { +namespace Experimental { +enum struct DeviceType { + Serial, + OpenMP, + Cuda, + HIP, + OpenMPTarget, + HPX, + Threads +}; +template +struct DeviceTypeTraits; + +constexpr const size_t device_type_bits = 8; +constexpr const size_t instance_bits = 24; +template +inline uint32_t device_id(ExecutionSpace const& space) noexcept { + auto device_id = static_cast(DeviceTypeTraits::id); + return (device_id << instance_bits) + space.impl_instance_id(); +} +} // namespace Experimental +} // namespace Profiling +} // end namespace Kokkos + #if defined(KOKKOS_ENABLE_PROFILING) +// We check at configure time that libdl is available. #include #include diff --git a/lib/kokkos/core/src/impl/Kokkos_Serial.cpp b/lib/kokkos/core/src/impl/Kokkos_Serial.cpp index 40aeaa1b7a..b39f9dfeea 100644 --- a/lib/kokkos/core/src/impl/Kokkos_Serial.cpp +++ b/lib/kokkos/core/src/impl/Kokkos_Serial.cpp @@ -192,7 +192,7 @@ void Serial::impl_finalize() space.deallocate(Impl::g_serial_thread_team_data.scratch_buffer(), Impl::g_serial_thread_team_data.scratch_bytes()); - Impl::g_serial_thread_team_data.scratch_assign((void*)0, 0, 0, 0, 0, 0); + Impl::g_serial_thread_team_data.scratch_assign(nullptr, 0, 0, 0, 0, 0); } #if defined(KOKKOS_ENABLE_PROFILING) diff --git a/lib/kokkos/core/src/impl/Kokkos_Serial_Task.hpp b/lib/kokkos/core/src/impl/Kokkos_Serial_Task.hpp index 6871e4f14a..3ac3899aca 100644 --- a/lib/kokkos/core/src/impl/Kokkos_Serial_Task.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_Serial_Task.hpp @@ -92,7 +92,7 @@ class TaskQueueSpecialization > { auto current_task = OptionalRef(nullptr); - while (not queue.is_done()) { + while (!queue.is_done()) { // Each team lead attempts to acquire either a thread team task // or a single thread task for the team. diff --git a/lib/kokkos/core/src/impl/Kokkos_SharedAlloc.cpp b/lib/kokkos/core/src/impl/Kokkos_SharedAlloc.cpp index 3688f069e5..6a054f73a1 100644 --- a/lib/kokkos/core/src/impl/Kokkos_SharedAlloc.cpp +++ b/lib/kokkos/core/src/impl/Kokkos_SharedAlloc.cpp @@ -47,7 +47,8 @@ namespace Kokkos { namespace Impl { -__thread int SharedAllocationRecord::t_tracking_enabled = 1; +KOKKOS_THREAD_LOCAL int SharedAllocationRecord::t_tracking_enabled = + 1; #ifdef KOKKOS_DEBUG bool SharedAllocationRecord::is_sane( @@ -100,7 +101,7 @@ bool SharedAllocationRecord::is_sane( reinterpret_cast(rec->m_next), reinterpret_cast(rec->m_prev), reinterpret_cast( - rec->m_next != NULL ? rec->m_next->m_prev : NULL), + rec->m_next != nullptr ? rec->m_next->m_prev : nullptr), reinterpret_cast(rec->m_prev != rec->m_root ? rec->m_prev->m_next : root_next)); @@ -186,7 +187,7 @@ SharedAllocationRecord::SharedAllocationRecord( #endif , m_count(0) { - if (0 != arg_alloc_ptr) { + if (nullptr != arg_alloc_ptr) { #ifdef KOKKOS_DEBUG // Insert into the root double-linked list for tracking // @@ -197,7 +198,7 @@ SharedAllocationRecord::SharedAllocationRecord( m_prev = m_root; static constexpr SharedAllocationRecord* zero = nullptr; - // Read root->m_next and lock by setting to NULL + // Read root->m_next and lock by setting to nullptr while ((m_next = Kokkos::atomic_exchange(&m_root->m_next, zero)) == nullptr) ; @@ -214,7 +215,7 @@ SharedAllocationRecord::SharedAllocationRecord( } else { Kokkos::Impl::throw_runtime_exception( - "Kokkos::Impl::SharedAllocationRecord given NULL allocation"); + "Kokkos::Impl::SharedAllocationRecord given nullptr allocation"); } } @@ -288,7 +289,7 @@ SharedAllocationRecord* SharedAllocationRecord< function_type d = arg_record->m_dealloc; (*d)(arg_record); - arg_record = 0; + arg_record = nullptr; } else if (old_count < 1) { // Error fprintf(stderr, "Kokkos::Impl::SharedAllocationRecord '%s' failed decrement count " diff --git a/lib/kokkos/core/src/impl/Kokkos_SharedAlloc.hpp b/lib/kokkos/core/src/impl/Kokkos_SharedAlloc.hpp index b68c0834c9..6e954e8f27 100644 --- a/lib/kokkos/core/src/impl/Kokkos_SharedAlloc.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_SharedAlloc.hpp @@ -115,7 +115,7 @@ class SharedAllocationRecord { SharedAllocationHeader* arg_alloc_ptr, size_t arg_alloc_size, function_type arg_dealloc); private: - static __thread int t_tracking_enabled; + static KOKKOS_THREAD_LOCAL int t_tracking_enabled; public: virtual std::string get_label() const { return std::string("Unmanaged"); } @@ -132,7 +132,7 @@ class SharedAllocationRecord { */ static void tracking_enable() { t_tracking_enabled = 1; } - virtual ~SharedAllocationRecord() {} + virtual ~SharedAllocationRecord() = default; SharedAllocationRecord() : m_alloc_ptr(nullptr), @@ -245,6 +245,9 @@ class SharedAllocationRecord #if defined(KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_HOST) return new SharedAllocationRecord(arg_space, arg_label, arg_alloc); #else + (void)arg_space; + (void)arg_label; + (void)arg_alloc; return (SharedAllocationRecord*)0; #endif } diff --git a/lib/kokkos/core/src/impl/Kokkos_SimpleTaskScheduler.hpp b/lib/kokkos/core/src/impl/Kokkos_SimpleTaskScheduler.hpp index f01bdce17b..a01b22e4e9 100644 --- a/lib/kokkos/core/src/impl/Kokkos_SimpleTaskScheduler.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_SimpleTaskScheduler.hpp @@ -226,13 +226,13 @@ class SimpleTaskScheduler } template - 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_FUNCTION future_type_for_functor< + typename std::decay::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 = @@ -445,7 +445,7 @@ class SimpleTaskScheduler KOKKOS_EXPECTS(!task.get_respawn_flag()); task.set_priority(priority); - KOKKOS_ASSERT(not task.has_predecessor()); + KOKKOS_ASSERT(!task.has_predecessor()); task.set_respawn_flag(true); } diff --git a/lib/kokkos/core/src/impl/Kokkos_SingleTaskQueue.hpp b/lib/kokkos/core/src/impl/Kokkos_SingleTaskQueue.hpp index 8c149e978f..a0eccffb62 100644 --- a/lib/kokkos/core/src/impl/Kokkos_SingleTaskQueue.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_SingleTaskQueue.hpp @@ -154,7 +154,7 @@ class SingleTaskQueue KOKKOS_FUNCTION OptionalRef pop_ready_task( - team_scheduler_info_type const& info) { + team_scheduler_info_type const& /*info*/) { OptionalRef return_value; // always loop in order of priority first, then prefer team tasks over // single tasks diff --git a/lib/kokkos/core/src/impl/Kokkos_Stacktrace.cpp b/lib/kokkos/core/src/impl/Kokkos_Stacktrace.cpp index 582f697936..c0c1fdf6be 100644 --- a/lib/kokkos/core/src/impl/Kokkos_Stacktrace.cpp +++ b/lib/kokkos/core/src/impl/Kokkos_Stacktrace.cpp @@ -18,7 +18,7 @@ namespace Kokkos { namespace Impl { #ifndef KOKKOS_IMPL_ENABLE_STACKTRACE int backtrace(void**, int) { return 0; } -char** backtrace_symbols(void* const*, int) { return NULL; } +char** backtrace_symbols(void* const*, int) { return nullptr; } #endif std::string demangle(const std::string& name) { diff --git a/lib/kokkos/core/src/impl/Kokkos_TaskBase.hpp b/lib/kokkos/core/src/impl/Kokkos_TaskBase.hpp index e3de5d0eb9..8078c68dbd 100644 --- a/lib/kokkos/core/src/impl/Kokkos_TaskBase.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_TaskBase.hpp @@ -167,11 +167,7 @@ class TaskBase { 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_DEFAULTED_FUNCTION ~TaskBase() = default; KOKKOS_INLINE_FUNCTION constexpr TaskBase() : m_apply(nullptr), @@ -211,7 +207,7 @@ class TaskBase { Kokkos::abort("TaskScheduler ERROR: resetting task dependence"); } - if (0 != dep) { + if (nullptr != 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)); @@ -226,7 +222,44 @@ class TaskBase { } }; -static_assert(sizeof(TaskBase) == 48, "Verifying expected sizeof(TaskBase)"); +//------------------------------------------------------------------------------ +// {{{2 + +// Workaround: some compilers implement int16_t as 4 bytes, so the size might +// not actually be 48 bytes. +// There's not a lot of reason to keep checking this here; the program will +// work fine if this isn't true. I think this check was originally here to +// emphasize the fact that adding to the size of TaskBase could have a +// significant performance penalty, since doing so could substantially decrease +// the number of full task types that fit into a cache line. We'll leave it +// here for now, though, since we're probably going to be ripping all of the +// old TaskBase stuff out eventually anyway. +constexpr size_t unpadded_task_base_size = 44 + 2 * sizeof(int16_t); +// don't forget padding: +constexpr size_t task_base_misalignment = + unpadded_task_base_size % alignof(void*); +constexpr size_t task_base_padding_size = + (alignof(void*) - task_base_misalignment) % alignof(void*); +constexpr size_t expected_task_base_size = + unpadded_task_base_size + task_base_padding_size; + +// Produce a more readable compiler error message than the plain static assert +template +struct verify_task_base_size_is_48_note_actual_size_is_ {}; +template <> +struct verify_task_base_size_is_48_note_actual_size_is_< + expected_task_base_size> { + using type = int; +}; +static constexpr + typename verify_task_base_size_is_48_note_actual_size_is_::type verify = {}; + +static_assert(sizeof(TaskBase) == expected_task_base_size, + "Verifying expected sizeof(TaskBase)"); + +// end Verify the size of TaskBase is as expected }}}2 +//------------------------------------------------------------------------------ } /* namespace Impl */ } /* namespace Kokkos */ diff --git a/lib/kokkos/core/src/impl/Kokkos_TaskNode.hpp b/lib/kokkos/core/src/impl/Kokkos_TaskNode.hpp index 1ea7fc2049..42afa93cdc 100644 --- a/lib/kokkos/core/src/impl/Kokkos_TaskNode.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_TaskNode.hpp @@ -308,7 +308,7 @@ class TaskNode template KOKKOS_INLINE_FUNCTION void consume_wait_queue(Function&& f) { - KOKKOS_EXPECTS(not m_wait_queue.is_consumed()); + KOKKOS_EXPECTS(!m_wait_queue.is_consumed()); m_wait_queue.consume(std::forward(f)); } @@ -620,7 +620,7 @@ class alignas(16) RunnableTask ~RunnableTask() = delete; KOKKOS_INLINE_FUNCTION - void update_scheduling_info(member_type& member) { + 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(); @@ -639,7 +639,7 @@ class alignas(16) RunnableTask this->functor_type::operator()(*member, *val); } - KOKKOS_FUNCTION static void destroy(task_base_type* root) { + KOKKOS_FUNCTION static void destroy(task_base_type* /*root*/) { // TaskResult::destroy(root); } diff --git a/lib/kokkos/core/src/impl/Kokkos_TaskPolicyData.hpp b/lib/kokkos/core/src/impl/Kokkos_TaskPolicyData.hpp index c5b8c2fc68..09113628a7 100644 --- a/lib/kokkos/core/src/impl/Kokkos_TaskPolicyData.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_TaskPolicyData.hpp @@ -75,20 +75,20 @@ struct TaskPolicyWithPredecessor { TaskPolicyWithPredecessor() = delete; - KOKKOS_INLINE_FUNCTION + KOKKOS_DEFAULTED_FUNCTION TaskPolicyWithPredecessor(TaskPolicyWithPredecessor const&) = default; - KOKKOS_INLINE_FUNCTION + KOKKOS_DEFAULTED_FUNCTION TaskPolicyWithPredecessor(TaskPolicyWithPredecessor&&) = default; - KOKKOS_INLINE_FUNCTION + KOKKOS_DEFAULTED_FUNCTION TaskPolicyWithPredecessor& operator=(TaskPolicyWithPredecessor const&) = default; - KOKKOS_INLINE_FUNCTION + KOKKOS_DEFAULTED_FUNCTION TaskPolicyWithPredecessor& operator=(TaskPolicyWithPredecessor&&) = default; - KOKKOS_INLINE_FUNCTION + KOKKOS_DEFAULTED_FUNCTION ~TaskPolicyWithPredecessor() = default; KOKKOS_INLINE_FUNCTION @@ -129,19 +129,19 @@ struct TaskPolicyWithScheduler { TaskPolicyWithScheduler() = delete; - KOKKOS_INLINE_FUNCTION + KOKKOS_DEFAULTED_FUNCTION TaskPolicyWithScheduler(TaskPolicyWithScheduler const&) = default; - KOKKOS_INLINE_FUNCTION + KOKKOS_DEFAULTED_FUNCTION TaskPolicyWithScheduler(TaskPolicyWithScheduler&&) = default; - KOKKOS_INLINE_FUNCTION + KOKKOS_DEFAULTED_FUNCTION TaskPolicyWithScheduler& operator=(TaskPolicyWithScheduler const&) = default; - KOKKOS_INLINE_FUNCTION + KOKKOS_DEFAULTED_FUNCTION TaskPolicyWithScheduler& operator=(TaskPolicyWithScheduler&&) = default; - KOKKOS_INLINE_FUNCTION + KOKKOS_DEFAULTED_FUNCTION ~TaskPolicyWithScheduler() = default; KOKKOS_INLINE_FUNCTION @@ -155,7 +155,7 @@ struct TaskPolicyWithScheduler { KOKKOS_INLINE_FUNCTION static constexpr bool has_predecessor() noexcept { - return not std::is_same::value; + return !std::is_same::value; } KOKKOS_INLINE_FUNCTION diff --git a/lib/kokkos/core/src/impl/Kokkos_TaskQueue.hpp b/lib/kokkos/core/src/impl/Kokkos_TaskQueue.hpp index f7787dae0c..c0d2eca9c1 100644 --- a/lib/kokkos/core/src/impl/Kokkos_TaskQueue.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_TaskQueue.hpp @@ -168,13 +168,13 @@ class TaskQueue : public TaskQueueBase { int allocation_count() const noexcept { return m_count_alloc; } KOKKOS_INLINE_FUNCTION - void initialize_team_queues(int pool_size) const noexcept {} + void initialize_team_queues(int /*pool_size*/) const noexcept {} KOKKOS_INLINE_FUNCTION task_root_type* attempt_to_steal_task() const noexcept { return nullptr; } KOKKOS_INLINE_FUNCTION - team_queue_type& get_team_queue(int team_rank) { return *this; } + team_queue_type& get_team_queue(int /*team_rank*/) { return *this; } // void execute() { specialization::execute( this ); } diff --git a/lib/kokkos/core/src/impl/Kokkos_TaskQueueCommon.hpp b/lib/kokkos/core/src/impl/Kokkos_TaskQueueCommon.hpp index b3444420d6..cd53a81b1b 100644 --- a/lib/kokkos/core/src/impl/Kokkos_TaskQueueCommon.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_TaskQueueCommon.hpp @@ -259,9 +259,9 @@ class TaskQueueCommonMixin { // 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; + task_is_ready = !predecessor_not_ready; - if (task_is_ready and predecessor.is_runnable()) { + if (task_is_ready && 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( @@ -299,7 +299,7 @@ class TaskQueueCommonMixin { // 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) { + if (!push_success) { _self().handle_failed_ready_queue_insertion(std::move(task), ready_queue, info); } @@ -312,8 +312,8 @@ class TaskQueueCommonMixin { template KOKKOS_INLINE_FUNCTION void handle_failed_ready_queue_insertion( - RunnableTaskBase&& task, ReadyQueueType& ready_queue, - TeamSchedulerInfo const& info) { + RunnableTaskBase&& /*task*/, + ReadyQueueType& /*ready_queue*/, TeamSchedulerInfo const& /*info*/) { Kokkos::abort("Unhandled failure of ready task queue insertion!\n"); } @@ -325,7 +325,7 @@ class TaskQueueCommonMixin { AggregateTask&& aggregate, TeamSchedulerInfo const& info) { // Because the aggregate is being scheduled, should not be in any queue - KOKKOS_EXPECTS(not aggregate.is_enqueued()); + KOKKOS_EXPECTS(!aggregate.is_enqueued()); using task_scheduling_info_type = typename Derived::task_scheduling_info_type; @@ -369,7 +369,7 @@ class TaskQueueCommonMixin { // ready yet incomplete_dependence_found = pred_not_ready; - if (not pred_not_ready) { + if (!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) @@ -403,7 +403,7 @@ class TaskQueueCommonMixin { // dependence was found, because some other thread could have already popped // it off of another waiting queue - if (not incomplete_dependence_found) { + if (!incomplete_dependence_found) { // all of the predecessors were completed, so we can complete `task` _self().complete(std::move(aggregate), info); } @@ -462,15 +462,16 @@ class TaskQueueCommonMixin { template KOKKOS_INLINE_FUNCTION void initialize_scheduling_info_from_predecessor( - TaskNode& task, - TaskNode& predecessor) const { + 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 { + TaskNode& /*task*/, + TeamSchedulerInfo const& /*info*/) const { /* do nothing by default */ } diff --git a/lib/kokkos/core/src/impl/Kokkos_TaskQueue_impl.hpp b/lib/kokkos/core/src/impl/Kokkos_TaskQueue_impl.hpp index c64c497966..fe3cac7bda 100644 --- a/lib/kokkos/core/src/impl/Kokkos_TaskQueue_impl.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_TaskQueue_impl.hpp @@ -181,7 +181,7 @@ KOKKOS_FUNCTION bool TaskQueue::push_task( task->m_priority, task->m_ref_count); #endif - task_root_type *const zero = (task_root_type *)0; + task_root_type *const zero = nullptr; task_root_type *const lock = (task_root_type *)task_root_type::LockTag; task_root_type *volatile &next = task->m_next; @@ -254,7 +254,7 @@ TaskQueue::pop_ready_task( // // If queue is locked then just read by guaranteeing the CAS will fail. - if (lock == task) task = 0; + if (lock == task) task = nullptr; task_root_type *const x = task; @@ -334,7 +334,7 @@ KOKKOS_FUNCTION void TaskQueue::schedule_runnable( task->m_priority, task->m_ref_count); #endif - task_root_type *const zero = (task_root_type *)0; + task_root_type *const zero = nullptr; task_root_type *const lock = (task_root_type *)task_root_type::LockTag; task_root_type *const end = (task_root_type *)task_root_type::EndTag; @@ -382,16 +382,16 @@ KOKKOS_FUNCTION void TaskQueue::schedule_runnable( // 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)); + const bool is_ready = (nullptr == dep) || (!push_task(&dep->m_wait, task)); - if ((0 != dep) && respawn) { + if ((nullptr != dep) && respawn) { // Reference count for dep was incremented when // respawn assigned dependency to task->m_next // so that if dep completed prior to the // above push_task dep would not be destroyed. // dep reference count can now be decremented, // which may deallocate the task. - TaskQueue::assign(&dep, (task_root_type *)0); + TaskQueue::assign(&dep, nullptr); } if (is_ready) { @@ -452,7 +452,7 @@ KOKKOS_FUNCTION void TaskQueue::schedule_aggregate( task->m_ref_count); #endif - task_root_type *const zero = (task_root_type *)0; + task_root_type *const zero = nullptr; task_root_type *const lock = (task_root_type *)task_root_type::LockTag; task_root_type *const end = (task_root_type *)task_root_type::EndTag; @@ -551,7 +551,7 @@ KOKKOS_FUNCTION void TaskQueue::reschedule( // task is in Executing-Respawn state // task->m_next == 0 (no dependence) - task_root_type *const zero = (task_root_type *)0; + task_root_type *const zero = nullptr; task_root_type *const lock = (task_root_type *)task_root_type::LockTag; if (lock != Kokkos::atomic_exchange(&task->m_next, zero)) { @@ -567,7 +567,7 @@ KOKKOS_FUNCTION void TaskQueue::complete( // Complete a runnable task that has finished executing // or a when_all task when all of its dependeneces are complete. - task_root_type *const zero = (task_root_type *)0; + task_root_type *const zero = nullptr; task_root_type *const lock = (task_root_type *)task_root_type::LockTag; task_root_type *const end = (task_root_type *)task_root_type::EndTag; @@ -624,7 +624,7 @@ KOKKOS_FUNCTION void TaskQueue::complete( task_root_type volatile &vx = *x; task_root_type *const next = vx.m_next; - vx.m_next = 0; + vx.m_next = nullptr; Kokkos::memory_fence(); diff --git a/lib/kokkos/core/src/impl/Kokkos_TaskResult.hpp b/lib/kokkos/core/src/impl/Kokkos_TaskResult.hpp index f846ff4ea6..40a9c3bf57 100644 --- a/lib/kokkos/core/src/impl/Kokkos_TaskResult.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_TaskResult.hpp @@ -113,20 +113,20 @@ struct TaskResult { using reference_type = void; template - KOKKOS_INLINE_FUNCTION static void* ptr(TaskNode* task) { + KOKKOS_INLINE_FUNCTION static void* ptr(TaskNode* /*task*/) { return nullptr; } - KOKKOS_INLINE_FUNCTION static void* ptr(TaskBase*) { return (void*)nullptr; } + KOKKOS_INLINE_FUNCTION static void* ptr(TaskBase*) { return nullptr; } template KOKKOS_INLINE_FUNCTION static reference_type get( - TaskNode* task) { /* Should never be called */ + TaskNode* /*task*/) { /* Should never be called */ } KOKKOS_INLINE_FUNCTION static reference_type get(TaskBase*) {} - KOKKOS_INLINE_FUNCTION static void destroy(TaskBase* task) {} + KOKKOS_INLINE_FUNCTION static void destroy(TaskBase* /*task*/) {} // template // KOKKOS_INLINE_FUNCTION static diff --git a/lib/kokkos/core/src/impl/Kokkos_TaskTeamMember.hpp b/lib/kokkos/core/src/impl/Kokkos_TaskTeamMember.hpp index 5a9d4c77bf..2faab57949 100644 --- a/lib/kokkos/core/src/impl/Kokkos_TaskTeamMember.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_TaskTeamMember.hpp @@ -90,22 +90,22 @@ class TaskTeamMemberAdapter : public TeamMember { // (rule of 6 constructors) - KOKKOS_INLINE_FUNCTION + KOKKOS_DEFAULTED_FUNCTION TaskTeamMemberAdapter() = default; - KOKKOS_INLINE_FUNCTION + KOKKOS_DEFAULTED_FUNCTION TaskTeamMemberAdapter(TaskTeamMemberAdapter const&) = default; - KOKKOS_INLINE_FUNCTION + KOKKOS_DEFAULTED_FUNCTION TaskTeamMemberAdapter(TaskTeamMemberAdapter&&) = default; - KOKKOS_INLINE_FUNCTION + KOKKOS_DEFAULTED_FUNCTION TaskTeamMemberAdapter& operator=(TaskTeamMemberAdapter const&) = default; - KOKKOS_INLINE_FUNCTION + KOKKOS_DEFAULTED_FUNCTION TaskTeamMemberAdapter& operator=(TaskTeamMemberAdapter&&) = default; - KOKKOS_INLINE_FUNCTION ~TaskTeamMemberAdapter() = default; + KOKKOS_DEFAULTED_FUNCTION ~TaskTeamMemberAdapter() = default; //---------------------------------------- diff --git a/lib/kokkos/core/src/impl/Kokkos_Traits.hpp b/lib/kokkos/core/src/impl/Kokkos_Traits.hpp index 6f7e164baf..32e78b7f5f 100644 --- a/lib/kokkos/core/src/impl/Kokkos_Traits.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_Traits.hpp @@ -137,132 +137,6 @@ struct are_integral { }; //---------------------------------------------------------------------------- -/* C++11 conformal compile-time type traits utilities. - * Prefer to use C++11 when portably available. - */ -//---------------------------------------------------------------------------- -// C++11 Helpers: - -template -struct integral_constant { - // Declaration of 'static const' causes an unresolved linker symbol in debug - // static const T value = v ; - enum { value = T(v) }; - typedef T value_type; - typedef integral_constant type; - KOKKOS_INLINE_FUNCTION operator T() { return v; } -}; - -typedef integral_constant false_type; -typedef integral_constant true_type; - -//---------------------------------------------------------------------------- -// C++11 Type relationships: - -template -struct is_same : public false_type {}; -template -struct is_same : public true_type {}; - -//---------------------------------------------------------------------------- -// C++11 Type properties: - -template -struct is_const : public false_type {}; -template -struct is_const : public true_type {}; -template -struct is_const : public true_type {}; - -template -struct is_array : public false_type {}; -template -struct is_array : public true_type {}; -template -struct is_array : public true_type {}; - -//---------------------------------------------------------------------------- -// C++11 Type transformations: - -template -struct remove_const { - typedef T type; -}; -template -struct remove_const { - typedef T type; -}; -template -struct remove_const { - typedef T& type; -}; - -template -struct add_const { - typedef const T type; -}; -template -struct add_const { - typedef const T& type; -}; -template -struct add_const { - typedef const T type; -}; -template -struct add_const { - typedef const T& type; -}; - -template -struct remove_reference { - typedef T type; -}; -template -struct remove_reference { - typedef T type; -}; -template -struct remove_reference { - typedef const T type; -}; - -template -struct remove_extent { - typedef T type; -}; -template -struct remove_extent { - typedef T type; -}; -template -struct remove_extent { - typedef T type; -}; - -//---------------------------------------------------------------------------- -// C++11 Other type generators: - -template -struct condition { - typedef F type; -}; - -template -struct condition { - typedef T type; -}; - -template -struct enable_if; - -template -struct enable_if { - typedef T type; -}; - -//---------------------------------------------------------------------------- - } // namespace Impl } // namespace Kokkos @@ -280,19 +154,6 @@ struct enable_if_type { typedef T type; }; -//---------------------------------------------------------------------------- - -template -struct bool_ : public integral_constant {}; - -template -struct unsigned_ : public integral_constant {}; - -template -struct int_ : public integral_constant {}; - -typedef bool_ true_; -typedef bool_ false_; //---------------------------------------------------------------------------- // if_ @@ -302,10 +163,10 @@ struct if_c { typedef FalseType type; - typedef typename remove_const::type>::type - value_type; + typedef typename std::remove_const< + typename std::remove_reference::type>::type value_type; - typedef typename add_const::type const_value_type; + typedef typename std::add_const::type const_value_type; static KOKKOS_INLINE_FUNCTION const_value_type& select(const_value_type& v) { return v; @@ -337,10 +198,10 @@ struct if_c { typedef TrueType type; - typedef typename remove_const::type>::type - value_type; + typedef typename std::remove_const< + typename std::remove_reference::type>::type value_type; - typedef typename add_const::type const_value_type; + typedef typename std::add_const::type const_value_type; static KOKKOS_INLINE_FUNCTION const_value_type& select(const_value_type& v) { return v; @@ -387,50 +248,26 @@ struct if_ : public if_c {}; //---------------------------------------------------------------------------- -// Allows aliased types: -template -struct is_integral - : public integral_constant< - bool, - (std::is_same::value || - std::is_same::value || - std::is_same::value || - std::is_same::value || - std::is_same::value || - std::is_same::value || - std::is_same::value || - std::is_same::value || - std::is_same::value || - std::is_same::value || - - std::is_same::value || std::is_same::value || - std::is_same::value || std::is_same::value || - std::is_same::value || - std::is_same::value || - std::is_same::value || - std::is_same::value)> {}; -//---------------------------------------------------------------------------- - template -struct is_label : public false_type {}; +struct is_label : public std::false_type {}; template <> -struct is_label : public true_type {}; +struct is_label : public std::true_type {}; template <> -struct is_label : public true_type {}; +struct is_label : public std::true_type {}; template -struct is_label : public true_type {}; +struct is_label : public std::true_type {}; template -struct is_label : public true_type {}; +struct is_label : public std::true_type {}; template <> -struct is_label : public true_type {}; +struct is_label : public std::true_type {}; template <> -struct is_label : public true_type {}; +struct is_label : public std::true_type {}; // These 'constexpr'functions can be used as // both regular functions and meta-function. @@ -515,20 +352,6 @@ struct integral_nonzero_constant { //---------------------------------------------------------------------------- -template -struct is_integral_constant : public false_ { - typedef void integral_type; - enum { integral_value = 0 }; -}; - -template -struct is_integral_constant> : public true_ { - typedef T integral_type; - enum { integral_value = v }; -}; - -//---------------------------------------------------------------------------- - template class TypeList; diff --git a/lib/kokkos/core/src/impl/Kokkos_VLAEmulation.hpp b/lib/kokkos/core/src/impl/Kokkos_VLAEmulation.hpp index 2746932878..9b90864199 100644 --- a/lib/kokkos/core/src/impl/Kokkos_VLAEmulation.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_VLAEmulation.hpp @@ -185,7 +185,7 @@ struct ObjectWithVLAEmulation { // 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, + static_assert(!std::is_abstract::value, "Can't use abstract type with VLA emulation"); KOKKOS_EXPECTS(num_entries >= 0); diff --git a/lib/kokkos/core/src/impl/Kokkos_ViewArray.hpp b/lib/kokkos/core/src/impl/Kokkos_ViewArray.hpp index 6123a608a7..119ad4eccf 100644 --- a/lib/kokkos/core/src/impl/Kokkos_ViewArray.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_ViewArray.hpp @@ -338,7 +338,7 @@ class ViewMapping > { //---------------------------------------- - KOKKOS_INLINE_FUNCTION ~ViewMapping() {} + KOKKOS_DEFAULTED_FUNCTION ~ViewMapping() = default; KOKKOS_INLINE_FUNCTION ViewMapping() : m_impl_handle(), m_impl_offset(), m_stride(0) {} KOKKOS_INLINE_FUNCTION ViewMapping(const ViewMapping &rhs) @@ -349,7 +349,6 @@ class ViewMapping > { m_impl_handle = rhs.m_impl_handle; m_impl_offset = rhs.m_impl_offset; m_stride = rhs.m_stride; - ; return *this; } @@ -469,7 +468,7 @@ class ViewMapping< KOKKOS_INLINE_FUNCTION static void assign(DstType &dst, const SrcType &src, - const TrackType &src_track) { + const TrackType & /*src_track*/) { static_assert(is_assignable, "Can only convert to array_type"); typedef typename DstType::offset_type dst_offset_type; diff --git a/lib/kokkos/core/src/impl/Kokkos_ViewCtor.hpp b/lib/kokkos/core/src/impl/Kokkos_ViewCtor.hpp index 33c6e73f05..93a267ffa3 100644 --- a/lib/kokkos/core/src/impl/Kokkos_ViewCtor.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_ViewCtor.hpp @@ -238,7 +238,10 @@ struct ViewCtorProp : public ViewCtorProp... { /* Copy from a matching property subset */ template ViewCtorProp(ViewCtorProp const &arg) - : ViewCtorProp(((ViewCtorProp const &)arg))... {} + : ViewCtorProp( + static_cast const &>(arg))... { + (void)arg; + } }; } /* namespace Impl */ diff --git a/lib/kokkos/core/src/impl/Kokkos_ViewLayoutTiled.hpp b/lib/kokkos/core/src/impl/Kokkos_ViewLayoutTiled.hpp index 2071f931e3..27f4375e56 100644 --- a/lib/kokkos/core/src/impl/Kokkos_ViewLayoutTiled.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_ViewLayoutTiled.hpp @@ -601,39 +601,10 @@ struct ViewOffset< //---------------------------------------- -#ifdef KOKKOS_CUDA_9_DEFAULTED_BUG_WORKAROUND - KOKKOS_INLINE_FUNCTION ~ViewOffset() {} - KOKKOS_INLINE_FUNCTION ViewOffset() {} - KOKKOS_INLINE_FUNCTION ViewOffset(const ViewOffset& rhs) - : m_dim(rhs.m_dim), - m_tile_N0(rhs.m_tile_N0), - m_tile_N1(rhs.m_tile_N1), - m_tile_N2(rhs.m_tile_N2), - m_tile_N3(rhs.m_tile_N3), - m_tile_N4(rhs.m_tile_N4), - m_tile_N5(rhs.m_tile_N5), - m_tile_N6(rhs.m_tile_N6), - m_tile_N7(rhs.m_tile_N7) {} - - KOKKOS_INLINE_FUNCTION ViewOffset& operator=(const ViewOffset& rhs) { - m_dim = rhs.m_dim; - m_tile_N0 = rhs.m_tile_N0; - m_tile_N1 = rhs.m_tile_N1; - m_tile_N2 = rhs.m_tile_N2; - m_tile_N3 = rhs.m_tile_N3; - m_tile_N4 = rhs.m_tile_N4; - m_tile_N5 = rhs.m_tile_N5; - m_tile_N6 = rhs.m_tile_N6; - m_tile_N7 = rhs.m_tile_N7; - return *this; - } - -#else - KOKKOS_INLINE_FUNCTION ~ViewOffset() = default; - KOKKOS_INLINE_FUNCTION ViewOffset() = default; - KOKKOS_INLINE_FUNCTION ViewOffset(const ViewOffset&) = default; - KOKKOS_INLINE_FUNCTION ViewOffset& operator=(const ViewOffset&) = default; -#endif + KOKKOS_DEFAULTED_FUNCTION ~ViewOffset() = default; + KOKKOS_DEFAULTED_FUNCTION ViewOffset() = default; + KOKKOS_DEFAULTED_FUNCTION ViewOffset(const ViewOffset&) = default; + KOKKOS_DEFAULTED_FUNCTION ViewOffset& operator=(const ViewOffset&) = default; template KOKKOS_INLINE_FUNCTION constexpr ViewOffset( diff --git a/lib/kokkos/core/src/impl/Kokkos_ViewMapping.hpp b/lib/kokkos/core/src/impl/Kokkos_ViewMapping.hpp index f6dfacb4d8..a8dc1fb84a 100644 --- a/lib/kokkos/core/src/impl/Kokkos_ViewMapping.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_ViewMapping.hpp @@ -252,7 +252,7 @@ template struct ViewDimensionJoin; template -struct ViewDimensionJoin, ViewDimension > { +struct ViewDimensionJoin, ViewDimension> { typedef ViewDimension type; }; @@ -263,7 +263,7 @@ struct ViewDimensionAssignable; template struct ViewDimensionAssignable, - ViewDimension > { + ViewDimension> { typedef ViewDimension dst; typedef ViewDimension src; @@ -327,18 +327,18 @@ struct is_integral_extent_type { }; template -struct is_integral_extent_type > { +struct is_integral_extent_type> { enum { value = std::is_integral::value ? 1 : 0 }; }; template -struct is_integral_extent_type > { +struct is_integral_extent_type> { enum { value = std::is_integral::value ? 1 : 0 }; }; // Assuming '2 == initializer_list::size()' template -struct is_integral_extent_type > { +struct is_integral_extent_type> { enum { value = std::is_integral::value ? 1 : 0 }; }; @@ -641,10 +641,10 @@ struct SubviewExtents { error(buf + n, buf_len - n, domain_rank + 1, range_rank + 1, dim, args...); } +#if defined(KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_HOST) template KOKKOS_FORCEINLINE_FUNCTION void error(const ViewDimension& dim, Args... args) const { -#if defined(KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_HOST) enum { LEN = 1024 }; char buffer[LEN]; @@ -652,10 +652,14 @@ struct SubviewExtents { error(buffer + n, LEN - n, 0, 0, dim, args...); Kokkos::Impl::throw_runtime_exception(std::string(buffer)); + } #else + template + KOKKOS_FORCEINLINE_FUNCTION void error(const ViewDimension&, + Args...) const { Kokkos::abort("Kokkos::subview bounds error"); -#endif } +#endif #else @@ -726,18 +730,18 @@ template struct ViewDataType; template -struct ViewDataType > { +struct ViewDataType> { typedef T type; }; template -struct ViewDataType > { - typedef typename ViewDataType >::type type; +struct ViewDataType> { + typedef typename ViewDataType>::type type; }; template -struct ViewDataType > { - typedef typename ViewDataType >::type type[N]; +struct ViewDataType> { + typedef typename ViewDataType>::type type[N]; }; /**\brief Analysis of View data type. @@ -2740,7 +2744,7 @@ struct ViewValueFunctor; template struct ViewValueFunctor { - typedef Kokkos::RangePolicy PolicyType; + typedef Kokkos::RangePolicy> PolicyType; typedef typename ExecSpace::execution_space Exec; Exec space; @@ -2778,6 +2782,12 @@ struct ViewValueFunctor { : "Kokkos::View::initialization"), 0, &kpID); } +#endif +#ifdef KOKKOS_ENABLE_CUDA + if (std::is_same::value) { + Kokkos::Impl::cuda_prefetch_pointer(space, ptr, sizeof(ValueType) * n, + true); + } #endif const Kokkos::Impl::ParallelFor closure( *this, PolicyType(0, n)); @@ -2800,7 +2810,7 @@ struct ViewValueFunctor { template struct ViewValueFunctor { - typedef Kokkos::RangePolicy PolicyType; + typedef Kokkos::RangePolicy> PolicyType; ExecSpace space; ValueType* ptr; @@ -2825,6 +2835,12 @@ struct ViewValueFunctor { Kokkos::Profiling::beginParallelFor("Kokkos::View::initialization", 0, &kpID); } +#endif +#ifdef KOKKOS_ENABLE_CUDA + if (std::is_same::value) { + Kokkos::Impl::cuda_prefetch_pointer(space, ptr, sizeof(ValueType) * n, + true); + } #endif const Kokkos::Impl::ParallelFor closure( *this, PolicyType(0, n)); @@ -3069,7 +3085,7 @@ class ViewMapping< //---------------------------------------- - KOKKOS_INLINE_FUNCTION ~ViewMapping() {} + KOKKOS_DEFAULTED_FUNCTION ~ViewMapping() = default; KOKKOS_INLINE_FUNCTION ViewMapping() : m_impl_handle(), m_impl_offset() {} KOKKOS_INLINE_FUNCTION ViewMapping(const ViewMapping& rhs) : m_impl_handle(rhs.m_impl_handle), m_impl_offset(rhs.m_impl_offset) {} @@ -3493,7 +3509,7 @@ struct SubViewDataTypeImpl; /* base case */ template -struct SubViewDataTypeImpl > { +struct SubViewDataTypeImpl> { using type = ValueType; }; @@ -3503,16 +3519,17 @@ template ::type>::value>::type, - ValueType, Experimental::Extents, Integral, Args...> - : SubViewDataTypeImpl, - Args...> {}; + ValueType, Kokkos::Experimental::Extents, Integral, Args...> + : SubViewDataTypeImpl, Args...> {}; /* for ALL slice, subview has the same dimension */ template -struct SubViewDataTypeImpl, - ALL_t, Args...> +struct SubViewDataTypeImpl, ALL_t, + Args...> : SubViewDataTypeImpl::type, - Experimental::Extents, Args...> {}; + Kokkos::Experimental::Extents, Args...> {}; /* for pair-style slice, subview has dynamic dimension, since pair doesn't give * static sizes */ @@ -3522,10 +3539,10 @@ template struct SubViewDataTypeImpl< typename std::enable_if::value>::type, ValueType, - Experimental::Extents, PairLike, Args...> + Kokkos::Experimental::Extents, PairLike, Args...> : SubViewDataTypeImpl< void, typename make_all_extents_into_pointers::type*, - Experimental::Extents, Args...> {}; + Kokkos::Experimental::Extents, Args...> {}; template struct SubViewDataType : SubViewDataTypeImpl {}; diff --git a/lib/kokkos/core/src/impl/Kokkos_ViewTile.hpp b/lib/kokkos/core/src/impl/Kokkos_ViewTile.hpp index f1227c2ab6..342927ef77 100644 --- a/lib/kokkos/core/src/impl/Kokkos_ViewTile.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_ViewTile.hpp @@ -146,22 +146,10 @@ struct ViewOffset< //---------------------------------------- -#ifdef KOKKOS_CUDA_9_DEFAULTED_BUG_WORKAROUND - KOKKOS_INLINE_FUNCTION ~ViewOffset() {} - KOKKOS_INLINE_FUNCTION ViewOffset() {} - KOKKOS_INLINE_FUNCTION ViewOffset(const ViewOffset& rhs) - : m_dim(rhs.m_dim), m_tile_N0(rhs.m_tile_N0) {} - KOKKOS_INLINE_FUNCTION ViewOffset& operator=(const ViewOffset& rhs) { - m_dim = rhs.m_dim; - m_tile_N0 = rhs.m_tile_N0; - return *this; - } -#else - KOKKOS_INLINE_FUNCTION ~ViewOffset() = default; - KOKKOS_INLINE_FUNCTION ViewOffset() = default; - KOKKOS_INLINE_FUNCTION ViewOffset(const ViewOffset&) = default; - KOKKOS_INLINE_FUNCTION ViewOffset& operator=(const ViewOffset&) = default; -#endif + KOKKOS_DEFAULTED_FUNCTION ~ViewOffset() = default; + KOKKOS_DEFAULTED_FUNCTION ViewOffset() = default; + KOKKOS_DEFAULTED_FUNCTION ViewOffset(const ViewOffset&) = default; + KOKKOS_DEFAULTED_FUNCTION ViewOffset& operator=(const ViewOffset&) = default; template KOKKOS_INLINE_FUNCTION constexpr ViewOffset( diff --git a/lib/kokkos/core/src/kokkos.pc.in b/lib/kokkos/core/src/kokkos.pc.in deleted file mode 100644 index 47786faefb..0000000000 --- a/lib/kokkos/core/src/kokkos.pc.in +++ /dev/null @@ -1,71 +0,0 @@ -# -# Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -# -# Under the terms of Contract DE-NA0003525 with NTESS, -# 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 NTESS "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 NTESS 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) -# - -# Add the directory where kokkos.pc got installed to your PKG_CONFIG_PATH - -# Use this on commandline with: -# c++ `pkg-config --cflags --libs kokkos` -o myapp myapp.cpp - -# Use this in a Makefile: -# myapp: myapp.cpp -# $(CC) `pkg-config --cflags --libs kokkos` -o $@ $< - -# Use this in autotools: -# configure.ac: -# PKG_CHECK_MODULES([KOKKOS], [kokkos]) -# Makefile.am: -# myapp_CFLAGS = $(KOKKOS_CFLAGS) -# myapp_LDADD = $(KOKKOS_LIBS) - -# Use this in CMake: -# CMakeLists.txt: -# find_package(PkgConfig) -# pkg_check_modules(KOKKOS IMPORTED_TARGET kokkos) -# target_link_libraries( PkgConfig::KOKKOS) - -libdir=@CMAKE_INSTALL_FULL_LIBDIR@ -includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@ - -Name: kokkos -Description: Kokkos C++ Performance Portability Programming EcoSystem -URL: https://github.com/kokkos -Version: @Kokkos_VERSION@ -Requires: -Libs: -L${libdir} -lkokkos @KOKKOS_EXTRA_LIBS_LIST@ @KOKKOS_LINK_FLAGS@ -Libs.private: -lm -Cflags: -I${includedir} @KOKKOS_CXXFLAGS@ diff --git a/lib/kokkos/core/unit_test/CMakeLists.txt b/lib/kokkos/core/unit_test/CMakeLists.txt index c0957e83a8..dec2f5e920 100644 --- a/lib/kokkos/core/unit_test/CMakeLists.txt +++ b/lib/kokkos/core/unit_test/CMakeLists.txt @@ -12,8 +12,38 @@ KOKKOS_ADD_TEST_LIBRARY( HEADERS ${GTEST_SOURCE_DIR}/gtest/gtest.h SOURCES ${GTEST_SOURCE_DIR}/gtest/gtest-all.cc ) -KOKKOS_TARGET_COMPILE_DEFINITIONS(kokkos_gtest PUBLIC "-DGTEST_HAS_PTHREAD=0") -KOKKOS_TARGET_INCLUDE_DIRECTORIES(kokkos_gtest PUBLIC ${GTEST_SOURCE_DIR}) +#These can be direct, no need for Tribits or Kokkos wrappers + +# WORKAROUND FOR HIPCC +IF(Kokkos_ENABLE_HIP) + TARGET_COMPILE_DEFINITIONS(kokkos_gtest PUBLIC "-DGTEST_HAS_PTHREAD=0 --amdgpu-target=gfx906") +ELSE() + TARGET_COMPILE_DEFINITIONS(kokkos_gtest PUBLIC "-DGTEST_HAS_PTHREAD=0") +ENDIF() + +TARGET_INCLUDE_DIRECTORIES(kokkos_gtest PUBLIC ${GTEST_SOURCE_DIR}) +#Gtest minimally requires C++11 +TARGET_COMPILE_FEATURES(kokkos_gtest PUBLIC cxx_std_11) + +# +# Define Incremental Testing Feature Levels +# Define Device name mappings (i.e. what comes after Kokkos:: for the ExecSpace) +# + +SET(KOKKOS_CUDA_FEATURE_LEVEL 999) +SET(KOKKOS_CUDA_NAME Cuda) +SET(KOKKOS_HIP_FEATURE_LEVEL 12) +SET(KOKKOS_HIP_NAME Experimental::HIP) +SET(KOKKOS_HPX_FEATURE_LEVEL 999) +SET(KOKKOS_HPX_NAME Experimental::HPX) +SET(KOKKOS_OPENMP_FEATURE_LEVEL 999) +SET(KOKKOS_OPENMP_NAME OpenMP) +SET(KOKKOS_OPENMPTARGET_FEATURE_LEVEL 10) +SET(KOKKOS_OPENMPTARGET_NAME Experimental::OpenMPTarget) +SET(KOKKOS_SERIAL_FEATURE_LEVEL 999) +SET(KOKKOS_SERIAL_NAME Serial) +SET(KOKKOS_THREADS_FEATURE_LEVEL 999) +SET(KOKKOS_THREADS_NAME Threads) # @@ -24,7 +54,7 @@ KOKKOS_TARGET_INCLUDE_DIRECTORIES(kokkos_gtest PUBLIC ${GTEST_SOURCE_DIR}) KOKKOS_INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}) KOKKOS_INCLUDE_DIRECTORIES(REQUIRED_DURING_INSTALLATION_TESTING ${CMAKE_CURRENT_SOURCE_DIR}) -foreach(Tag Threads;Serial;OpenMP;Cuda;HPX) +foreach(Tag Threads;Serial;OpenMP;Cuda;HPX;OpenMPTarget;HIP) # Because there is always an exception to the rule if(Tag STREQUAL "Threads") set(DEVICE "PTHREAD") @@ -46,6 +76,7 @@ foreach(Tag Threads;Serial;OpenMP;Cuda;HPX) ${dir}/Test${Tag}_AtomicOperations_complexfloat.cpp ${dir}/Test${Tag}_AtomicViews.cpp ${dir}/Test${Tag}_Atomics.cpp + ${dir}/Test${Tag}_Concepts.cpp ${dir}/Test${Tag}_Complex.cpp ${dir}/Test${Tag}_Crs.cpp ${dir}/Test${Tag}_DeepCopyAlignment.cpp @@ -59,6 +90,7 @@ foreach(Tag Threads;Serial;OpenMP;Cuda;HPX) ${dir}/Test${Tag}_MDRange_e.cpp ${dir}/Test${Tag}_Other.cpp ${dir}/Test${Tag}_RangePolicy.cpp + ${dir}/Test${Tag}_RangePolicyRequire.cpp ${dir}/Test${Tag}_Reductions.cpp ${dir}/Test${Tag}_Reducers_a.cpp ${dir}/Test${Tag}_Reducers_b.cpp @@ -104,6 +136,30 @@ foreach(Tag Threads;Serial;OpenMP;Cuda;HPX) ) endforeach() +if(Kokkos_ENABLE_OPENMPTARGET) + list(REMOVE_ITEM OpenMPTarget_SOURCES + openmptarget/TestOpenMPTarget_AtomicOperations_complexdouble.cpp + openmptarget/TestOpenMPTarget_MDRange_a.cpp + openmptarget/TestOpenMPTarget_MDRange_b.cpp + openmptarget/TestOpenMPTarget_MDRange_c.cpp + openmptarget/TestOpenMPTarget_MDRange_d.cpp + openmptarget/TestOpenMPTarget_MDRange_e.cpp + openmptarget/TestOpenMPTarget_Other.cpp + openmptarget/TestOpenMPTarget_Scan.cpp + openmptarget/TestOpenMPTarget_Team.cpp + openmptarget/TestOpenMPTarget_TeamScratch.cpp + openmptarget/TestOpenMPTarget_ViewAPI_e.cpp + openmptarget/TestOpenMPTarget_ViewMapping_subview.cpp + openmptarget/TestOpenMPTarget_ViewOfClass.cpp + ) +endif() + +if(Kokkos_ENABLE_HIP) + # FIXME Linktime error: undefined reference to + # Kokkos::Impl::ViewDimensin<0ul, ...>(unsigned int, ...) + list(REMOVE_ITEM Serial_SOURCES serial/TestSerial_ViewLayoutStrideAssignment.cpp) +endif() + if(Kokkos_ENABLE_SERIAL) KOKKOS_ADD_EXECUTABLE_AND_TEST( UnitTest_Serial @@ -150,42 +206,11 @@ if(Kokkos_ENABLE_HPX) ) endif() -if(Kokkos_ENABLE_QTHREADS) +if(Kokkos_ENABLE_OPENMPTARGET) KOKKOS_ADD_EXECUTABLE_AND_TEST( - UnitTest_Qthreads + UnitTest_OpenMPTarget SOURCES - UnitTestMainInit.cpp - qthreads/TestQthreads_Atomics.cpp - qthreads/TestQthreads_Complex.cpp - qthreads/TestQthreads_DeepCopyAlignment.cpp - qthreads/TestQthreads_Other.cpp - qthreads/TestQthreads_Reductions.cpp - qthreads/TestQthreads_Reducers_a.cpp - qthreads/TestQthreads_Reducers_b.cpp - qthreads/TestQthreads_Reducers_c.cpp - qthreads/TestQthreads_Reducers_d.cpp - qthreads/TestQthreads_SubView_a.cpp - qthreads/TestQthreads_SubView_b.cpp - qthreads/TestQthreads_SubView_c01.cpp - qthreads/TestQthreads_SubView_c02.cpp - qthreads/TestQthreads_SubView_c03.cpp - qthreads/TestQthreads_SubView_c04.cpp - qthreads/TestQthreads_SubView_c05.cpp - qthreads/TestQthreads_SubView_c06.cpp - qthreads/TestQthreads_SubView_c07.cpp - qthreads/TestQthreads_SubView_c08.cpp - qthreads/TestQthreads_SubView_c09.cpp - qthreads/TestQthreads_SubView_c10.cpp - qthreads/TestQthreads_SubView_c11.cpp - qthreads/TestQthreads_SubView_c12.cpp - qthreads/TestQthreads_SubView_c13.cpp - qthreads/TestQthreads_Team.cpp - qthreads/TestQthreads_View_64bit.cpp - qthreads/TestQthreads_ViewAPI_a.cpp - qthreads/TestQthreads_ViewAPI_b.cpp - qthreads/TestQthreads_ViewAPI_c.cpp - qthreads/TestQthreads_ViewAPI_d.cpp - qthreads/TestQthreads_ViewAPI_e.cpp + ${OpenMPTarget_SOURCES} ) endif() @@ -233,22 +258,66 @@ if(Kokkos_ENABLE_CUDA) ) endif() +if(Kokkos_ENABLE_HIP) + # FIXME_HIP + LIST(REMOVE_ITEM HIP_SOURCES + hip/TestHIP_AtomicOperations_complexdouble.cpp + hip/TestHIP_Other.cpp + hip/TestHIP_Reductions_DeviceView.cpp + hip/TestHIP_Team.cpp + hip/TestHIP_TeamReductionScan.cpp + hip/TestHIP_TeamScratch.cpp + hip/TestHIP_TeamTeamSize.cpp + hip/TestHIP_TeamVectorRange.cpp + hip/TestHIP_UniqueToken.cpp + hip/TestHIP_ViewAPI_a.cpp + hip/TestHIP_ViewAPI_b.cpp + hip/TestHIP_ViewAPI_e.cpp + hip/TestHIP_ViewLayoutStrideAssignment.cpp + hip/TestHIP_WorkGraph.cpp + ) + + KOKKOS_ADD_EXECUTABLE_AND_TEST( + UnitTest_HIP + SOURCES + ${HIP_SOURCES} + hip/TestHIPHostPinned_ViewAPI_a.cpp + hip/TestHIPHostPinned_ViewAPI_b.cpp + hip/TestHIPHostPinned_ViewAPI_c.cpp + hip/TestHIPHostPinned_ViewAPI_d.cpp + hip/TestHIPHostPinned_ViewAPI_e.cpp + hip/TestHIPHostPinned_ViewCopy.cpp + hip/TestHIPHostPinned_ViewMapping_a.cpp + hip/TestHIPHostPinned_ViewMapping_b.cpp + hip/TestHIPHostPinned_ViewMapping_subview.cpp + ) + KOKKOS_ADD_EXECUTABLE_AND_TEST( + UnitTest_HIPInterOpInit + SOURCES + UnitTestMain.cpp + hip/TestHIP_InterOp_Init.cpp + ) +endif() + +SET(DEFAULT_DEVICE_SOURCES + UnitTestMainInit.cpp + default/TestDefaultDeviceType.cpp + default/TestDefaultDeviceType_a1.cpp + default/TestDefaultDeviceType_b1.cpp + default/TestDefaultDeviceType_c1.cpp + default/TestDefaultDeviceType_a2.cpp + default/TestDefaultDeviceType_b2.cpp + default/TestDefaultDeviceType_c2.cpp + default/TestDefaultDeviceType_a3.cpp + default/TestDefaultDeviceType_b3.cpp + default/TestDefaultDeviceType_c3.cpp + default/TestDefaultDeviceType_d.cpp + default/TestDefaultDeviceTypeResize.cpp +) + KOKKOS_ADD_EXECUTABLE_AND_TEST( UnitTest_Default - SOURCES - UnitTestMainInit.cpp - default/TestDefaultDeviceType.cpp - default/TestDefaultDeviceType_a1.cpp - default/TestDefaultDeviceType_b1.cpp - default/TestDefaultDeviceType_c1.cpp - default/TestDefaultDeviceType_a2.cpp - default/TestDefaultDeviceType_b2.cpp - default/TestDefaultDeviceType_c2.cpp - default/TestDefaultDeviceType_a3.cpp - default/TestDefaultDeviceType_b3.cpp - default/TestDefaultDeviceType_c3.cpp - default/TestDefaultDeviceType_d.cpp - default/TestDefaultDeviceTypeResize.cpp + SOURCES ${DEFAULT_DEVICE_SOURCES} ) KOKKOS_ADD_EXECUTABLE_AND_TEST( @@ -275,6 +344,7 @@ KOKKOS_ADD_ADVANCED_TEST( UnitTest_PushFinalizeHook_terminate ALWAYS_FAIL_ON_ZERO_RETURN ) +if(NOT KOKKOS_HAS_TRILINOS) KOKKOS_ADD_TEST_EXECUTABLE( StackTraceTestExec SOURCES @@ -287,20 +357,9 @@ KOKKOS_ADD_TEST_EXECUTABLE( ) # We need -rdynamic on GNU platforms for the stacktrace functionality # to work correctly with shared libraries -if(NOT KOKKOS_HAS_TRILINOS) -SET_PROPERTY(TARGET StackTraceTestExec PROPERTY ENABLE_EXPORTS 1) - -KOKKOS_ADD_TEST( NAME UnitTest_StackTraceTest_normal - EXE StackTraceTestExec - FAIL_REGULAR_EXPRESSION "FAILED" - ) - -KOKKOS_ADD_TEST( NAME UnitTest_StackTraceTest_terminate - EXE StackTraceTestExec - FAIL_REGULAR_EXPRESSION "FAILED" - ) +KOKKOS_SET_EXE_PROPERTY(StackTraceTestExec ENABLE_EXPORTS ON) -KOKKOS_ADD_TEST( NAME UnitTest_StackTraceTest_generic_term +KOKKOS_ADD_TEST( NAME UnitTest_StackTraceTest EXE StackTraceTestExec FAIL_REGULAR_EXPRESSION "FAILED" ) @@ -325,5 +384,52 @@ KOKKOS_ADD_EXECUTABLE_AND_TEST( SOURCES UnitTestMain.cpp TestHostBarrier.cpp ) +FUNCTION (KOKKOS_ADD_INCREMENTAL_TEST DEVICE) + KOKKOS_OPTION( ${DEVICE}_EXCLUDE_TESTS "" STRING "Incremental test exclude list" ) + # Add unit test main + SET(${DEVICE}_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/UnitTestMainInit.cpp) + + # Iterate over incremental tests in directory + APPEND_GLOB(INCREMENTAL_FILE_LIST ${CMAKE_CURRENT_SOURCE_DIR}/incremental/*.hpp) + SET(DEVICE_NAME ${KOKKOS_${DEVICE}_NAME}) + FOREACH (CURRENT_FILE_PATH ${INCREMENTAL_FILE_LIST}) + GET_FILENAME_COMPONENT( CURRENT_FILE_NAME ${CURRENT_FILE_PATH} NAME ) + STRING (REPLACE ".hpp" "" CURRENT_TEST_NAME ${CURRENT_FILE_NAME}) + IF (NOT CURRENT_TEST_NAME IN_LIST Kokkos_${DEVICE}_EXCLUDE_TESTS) + SET (CURRENT_TEST_OUTPUT_FILENAME ${CURRENT_TEST_NAME}_${DEVICE}) + FILE( STRINGS ${CURRENT_FILE_PATH} CURRENT_REQUIRED_FEATURE_LINE REGEX "Kokkos_Feature_Level_Required" ) + # From each test get level implementation required + STRING( REGEX REPLACE ".*Kokkos_Feature_Level_Required:" "" CURRENT_REQUIRED_FEATURE_LEVEL ${CURRENT_REQUIRED_FEATURE_LINE} ) + # Cross-reference list of dependencies with selected feature list > matching feature test files are added to test applications + IF (KOKKOS_${DEVICE}_FEATURE_LEVEL GREATER_EQUAL CURRENT_REQUIRED_FEATURE_LEVEL) + CONFIGURE_FILE (IncrementalTest.cpp.in ${CMAKE_BINARY_DIR}/core/unit_test/generated/${CURRENT_TEST_OUTPUT_FILENAME}.cpp ) + SET(${DEVICE}_SOURCES ${${DEVICE}_SOURCES}; ${CMAKE_BINARY_DIR}/core/unit_test/generated/${CURRENT_TEST_OUTPUT_FILENAME}.cpp) + ENDIF() + ENDIF() + ENDFOREACH() + + STRING(TOUPPER ${DEVICE} UC_DEVICE) + + KOKKOS_OPTION ( + ENABLE_${UC_DEVICE} ON BOOL "ENABLE ${UC_DEVICE}" + ) + + KOKKOS_ADD_EXECUTABLE_AND_TEST( + IncrementalTest_${DEVICE} + SOURCES ${${DEVICE}_SOURCES} + ) + + TARGET_INCLUDE_DIRECTORIES( ${PACKAGE_NAME}_IncrementalTest_${DEVICE} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/incremental ) + +ENDFUNCTION() + +FOREACH (DEVICE ${KOKKOS_ENABLED_DEVICES}) + KOKKOS_ADD_INCREMENTAL_TEST(${DEVICE}) +ENDFOREACH() + +KOKKOS_ADD_EXECUTABLE_AND_TEST( + UnitTest_CTestDevice + SOURCES UnitTestMain.cpp TestCTestDevice.cpp +) diff --git a/lib/kokkos/core/unit_test/IncrementalTest.cpp.in b/lib/kokkos/core/unit_test/IncrementalTest.cpp.in new file mode 100644 index 0000000000..e4358efe9d --- /dev/null +++ b/lib/kokkos/core/unit_test/IncrementalTest.cpp.in @@ -0,0 +1,58 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// 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 NTESS "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 NTESS 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_@BACK_END_NAME@_@CURRENT_TEST_NAME@ +#define KOKKOS_TEST_@BACK_END_NAME@_@CURRENT_TEST_NAME@ + +#include +#include + +#define TEST_CATEGORY @DEVICE@ +#define TEST_EXECSPACE Kokkos::@DEVICE_NAME@ + +#if defined(KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA) +#include <@CURRENT_FILE_NAME@> +#endif + +#endif + + diff --git a/lib/kokkos/core/unit_test/Makefile b/lib/kokkos/core/unit_test/Makefile index cf945bd718..1a386adc4a 100644 --- a/lib/kokkos/core/unit_test/Makefile +++ b/lib/kokkos/core/unit_test/Makefile @@ -8,7 +8,7 @@ vpath %.cpp ${KOKKOS_PATH}/core/unit_test/serial 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/hip vpath %.cpp ${KOKKOS_PATH}/core/unit_test/hpx vpath %.cpp ${KOKKOS_PATH}/core/unit_test/cuda vpath %.cpp ${KOKKOS_PATH}/core/unit_test/rocm @@ -67,7 +67,7 @@ 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_RangePolicy.o TestCuda_RangePolicyRequire.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_ViewResize.o TestCuda_ViewLayoutStrideAssignment.o @@ -103,7 +103,7 @@ ifeq ($(KOKKOS_INTERNAL_USE_CUDA), 1) OBJ_CUDA += TestCuda_LocalDeepCopy.o OBJ_CUDA += TestCuda_DebugSerialExecution.o OBJ_CUDA += TestCuda_DebugPinUVMSpace.o - + TARGETS += KokkosCore_UnitTest_Cuda TARGETS += KokkosCore_UnitTest_CudaInterOpInit TARGETS += KokkosCore_UnitTest_CudaInterOpStreams @@ -166,7 +166,7 @@ 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 += TestThreads_RangePolicy.o TestThreads_RangePolicyRequire.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_DeepCopyAlignment.o @@ -201,7 +201,7 @@ 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 += TestOpenMP_RangePolicy.o TestOpenMP_RangePolicyRequire.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_DeepCopyAlignment.o @@ -242,11 +242,12 @@ ifeq ($(KOKKOS_INTERNAL_USE_OPENMPTARGET), 1) 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_ViewAPI_a.o TestOpenMPTarget_ViewAPI_b.o TestOpenMPTarget_ViewAPI_c.o TestOpenMPTarget_ViewAPI_d.o #Some commented out code + #OBJ_OPENMPTARGET += TestOpenMPTarget_ViewAPI_e.o 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_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: @@ -255,12 +256,13 @@ ifeq ($(KOKKOS_INTERNAL_USE_OPENMPTARGET), 1) #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_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_AtomicOperations_complexfloat.o + #OBJ_OPENMPTARGET += 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 @@ -275,28 +277,26 @@ ifeq ($(KOKKOS_INTERNAL_USE_OPENMPTARGET), 1) 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 +ifeq ($(KOKKOS_INTERNAL_USE_HIP), 1) + OBJ_HIP = UnitTestMainInit.o gtest-all.o + OBJ_HIP += TestHIP_Init.o + OBJ_HIP += TestHIP_Reducers_a.o TestHIP_Reducers_b.o TestHIP_Reducers_c.o TestHIP_Reducers_d.o + OBJ_HIP += TestHIP_Reductions.o + OBJ_HIP += TestHIP_MDRange_a.o TestHIP_MDRange_b.o TestHIP_MDRange_c.o TestHIP_MDRange_d.o TestHIP_MDRange_e.o + OBJ_HIP += TestHIP_Spaces.o + OBJ_HIP += TestHIPHostPinned_ViewCopy.o TestHIPHostPinned_ViewAPI_a.o TestHIPHostPinned_ViewAPI_b.o TestHIPHostPinned_ViewAPI_c.o TestHIPHostPinned_ViewAPI_d.o TestHIPHostPinned_ViewAPI_e.o + OBJ_HIP += TestHIPHostPinned_ViewMapping_a.o TestHIPHostPinned_ViewMapping_b.o TestHIPHostPinned_ViewMapping_subview.o + + TARGETS += KokkosCore_UnitTest_HIP + + TEST_TARGETS += test-hip 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_RangePolicy.o TestHPX_RangePolicyRequire.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 TestHPX_ViewResize.o @@ -335,7 +335,7 @@ 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_RangePolicy.o TestSerial_RangePolicyRequire.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 @@ -414,7 +414,7 @@ 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_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) @@ -438,11 +438,8 @@ KokkosCore_UnitTest_OpenMPTarget: $(OBJ_OPENMPTARGET) $(KOKKOS_LINK_DEPENDS) KokkosCore_UnitTest_Serial: $(OBJ_SERIAL) $(KOKKOS_LINK_DEPENDS) $(LINK) $(EXTRA_PATH) $(OBJ_SERIAL) $(KOKKOS_LIBS) $(LIB) $(KOKKOS_LDFLAGS) $(LDFLAGS) -o KokkosCore_UnitTest_Serial -KokkosCore_UnitTest_Qthreads: $(OBJ_QTHREADS) $(KOKKOS_LINK_DEPENDS) - $(LINK) $(EXTRA_PATH) $(OBJ_QTHREADS) $(KOKKOS_LIBS) $(LIB) $(KOKKOS_LDFLAGS) $(LDFLAGS) -o KokkosCore_UnitTest_Qthreads - -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_HIP: $(OBJ_HIP) $(KOKKOS_LINK_DEPENDS) + $(LINK) $(EXTRA_PATH) $(OBJ_HIP) $(KOKKOS_LIBS) $(LIB) $(KOKKOS_LDFLAGS) $(LDFLAGS) -o KokkosCore_UnitTest_HIP KokkosCore_UnitTest_HPX: $(OBJ_HPX) $(KOKKOS_LINK_DEPENDS) $(LINK) $(EXTRA_PATH) $(OBJ_HPX) $(KOKKOS_LIBS) $(LIB) $(KOKKOS_LDFLAGS) $(LDFLAGS) -o KokkosCore_UnitTest_HPX @@ -496,9 +493,8 @@ test-openmptarget: KokkosCore_UnitTest_OpenMPTarget test-serial: KokkosCore_UnitTest_Serial ./KokkosCore_UnitTest_Serial -test-qthreads: KokkosCore_UnitTest_Qthreads KokkosCore_UnitTest_Qthreads2 - ./KokkosCore_UnitTest_Qthreads - ./KokkosCore_UnitTest_Qthreads2 +test-hip: KokkosCore_UnitTest_HIP + ./KokkosCore_UnitTest_HIP test-hpx: KokkosCore_UnitTest_HPX ./KokkosCore_UnitTest_HPX diff --git a/lib/kokkos/core/unit_test/TestAtomic.hpp b/lib/kokkos/core/unit_test/TestAtomic.hpp index a72a179e02..809f9dc01f 100644 --- a/lib/kokkos/core/unit_test/TestAtomic.hpp +++ b/lib/kokkos/core/unit_test/TestAtomic.hpp @@ -527,7 +527,19 @@ TEST(TEST_CATEGORY, atomics) { ASSERT_TRUE((TestAtomic::Loop(100, 3))); #ifndef KOKKOS_ENABLE_OPENMPTARGET -#ifndef KOKKOS_ENABLE_ROCM // ROCM doesn't yet support atomics for >64bit types + ASSERT_TRUE((TestAtomic::Loop, TEST_EXECSPACE>(1, 1))); + ASSERT_TRUE((TestAtomic::Loop, TEST_EXECSPACE>(1, 2))); + ASSERT_TRUE((TestAtomic::Loop, TEST_EXECSPACE>(1, 3))); + + ASSERT_TRUE( + (TestAtomic::Loop, TEST_EXECSPACE>(100, 1))); + ASSERT_TRUE( + (TestAtomic::Loop, TEST_EXECSPACE>(100, 2))); + ASSERT_TRUE( + (TestAtomic::Loop, TEST_EXECSPACE>(100, 3))); + + // FIXME_HIP HIP doesn't yet support atomics for >64bit types properly +#ifndef KOKKOS_ENABLE_HIP ASSERT_TRUE( (TestAtomic::Loop, TEST_EXECSPACE>(1, 1))); ASSERT_TRUE( @@ -542,17 +554,8 @@ TEST(TEST_CATEGORY, atomics) { ASSERT_TRUE( (TestAtomic::Loop, TEST_EXECSPACE>(100, 3))); - ASSERT_TRUE((TestAtomic::Loop, TEST_EXECSPACE>(1, 1))); - ASSERT_TRUE((TestAtomic::Loop, TEST_EXECSPACE>(1, 2))); - ASSERT_TRUE((TestAtomic::Loop, TEST_EXECSPACE>(1, 3))); - - ASSERT_TRUE( - (TestAtomic::Loop, TEST_EXECSPACE>(100, 1))); - ASSERT_TRUE( - (TestAtomic::Loop, TEST_EXECSPACE>(100, 2))); - ASSERT_TRUE( - (TestAtomic::Loop, TEST_EXECSPACE>(100, 3))); - +// WORKAROUND MSVC +#ifndef _WIN32 ASSERT_TRUE( (TestAtomic::Loop, TEST_EXECSPACE>(100, 1))); ASSERT_TRUE( @@ -561,6 +564,7 @@ TEST(TEST_CATEGORY, atomics) { (TestAtomic::Loop, TEST_EXECSPACE>(100, 3))); #endif #endif +#endif } } // namespace Test diff --git a/lib/kokkos/core/unit_test/TestAtomicViews.hpp b/lib/kokkos/core/unit_test/TestAtomicViews.hpp index d7a45dc40f..109598e8c6 100644 --- a/lib/kokkos/core/unit_test/TestAtomicViews.hpp +++ b/lib/kokkos/core/unit_test/TestAtomicViews.hpp @@ -97,8 +97,8 @@ struct TestViewOperator_LeftAndRight { right_view right; stride_view left_stride; stride_view right_stride; - long left_alloc; - long right_alloc; + int64_t left_alloc; + int64_t right_alloc; TestViewOperator_LeftAndRight() : left("left"), @@ -255,11 +255,11 @@ class TestAtomicViewAPI { ASSERT_EQ(ax.use_count(), size_t(4)); ASSERT_EQ(const_ax.use_count(), ax.use_count()); - ASSERT_FALSE(ax.data() == 0); - ASSERT_FALSE(const_ax.data() == 0); // referenceable ptr - ASSERT_FALSE(unmanaged_ax.data() == 0); - ASSERT_FALSE(unmanaged_ax_from_ptr_dx.data() == 0); - ASSERT_FALSE(ay.data() == 0); + ASSERT_FALSE(ax.data() == nullptr); + ASSERT_FALSE(const_ax.data() == nullptr); // referenceable ptr + ASSERT_FALSE(unmanaged_ax.data() == nullptr); + ASSERT_FALSE(unmanaged_ax_from_ptr_dx.data() == nullptr); + ASSERT_FALSE(ay.data() == nullptr); // ASSERT_NE( ax, ay ); // Above test results in following runtime error from gtest: // Expected: (ax) != (ay), actual: 32-byte object <30-01 D0-A0 D8-7F @@ -318,13 +318,13 @@ struct InitFunctor_Seq { typedef Kokkos::View view_type; view_type input; - const long length; + const int64_t length; - InitFunctor_Seq(view_type& input_, const long length_) + InitFunctor_Seq(view_type& input_, const int64_t length_) : input(input_), length(length_) {} KOKKOS_INLINE_FUNCTION - void operator()(const long i) const { + void operator()(const int64_t i) const { if (i < length) { input(i) = (T)i; } @@ -336,15 +336,15 @@ struct InitFunctor_ModTimes { typedef Kokkos::View view_type; view_type input; - const long length; - const long remainder; + const int64_t length; + const int64_t remainder; - InitFunctor_ModTimes(view_type& input_, const long length_, - const long remainder_) + InitFunctor_ModTimes(view_type& input_, const int64_t length_, + const int64_t remainder_) : input(input_), length(length_), remainder(remainder_) {} KOKKOS_INLINE_FUNCTION - void operator()(const long i) const { + void operator()(const int64_t i) const { if (i < length) { if (i % (remainder + 1) == remainder) { input(i) = (T)2; @@ -360,15 +360,15 @@ struct InitFunctor_ModShift { typedef Kokkos::View view_type; view_type input; - const long length; - const long remainder; + const int64_t length; + const int64_t remainder; - InitFunctor_ModShift(view_type& input_, const long length_, - const long remainder_) + InitFunctor_ModShift(view_type& input_, const int64_t length_, + const int64_t remainder_) : input(input_), length(length_), remainder(remainder_) {} KOKKOS_INLINE_FUNCTION - void operator()(const long i) const { + void operator()(const int64_t i) const { if (i < length) { if (i % (remainder + 1) == remainder) { input(i) = 1; @@ -390,15 +390,15 @@ struct PlusEqualAtomicViewFunctor { view_type input; atomic_view_type even_odd_result; - const long length; + const int64_t length; // Wrap the result view in an atomic view, use this for operator PlusEqualAtomicViewFunctor(const view_type& input_, - view_type& even_odd_result_, const long length_) + view_type& even_odd_result_, const int64_t length_) : input(input_), even_odd_result(even_odd_result_), length(length_) {} KOKKOS_INLINE_FUNCTION - void operator()(const long i) const { + void operator()(const int64_t i) const { if (i < length) { if (i % 2 == 0) { even_odd_result(0) += input(i); @@ -410,11 +410,11 @@ struct PlusEqualAtomicViewFunctor { }; template -T PlusEqualAtomicView(const long input_length) { +T PlusEqualAtomicView(const int64_t input_length) { typedef Kokkos::View view_type; typedef typename view_type::HostMirror host_view_type; - const long length = input_length; + const int64_t length = input_length; view_type input("input_view", length); view_type result_view("result_view", 2); @@ -435,19 +435,19 @@ T PlusEqualAtomicView(const long input_length) { } template -T PlusEqualAtomicViewCheck(const long input_length) { - const long N = input_length; +T PlusEqualAtomicViewCheck(const int64_t input_length) { + const int64_t N = input_length; T result[2]; if (N % 2 == 0) { - const long half_sum_end = (N / 2) - 1; - const long full_sum_end = N - 1; + const int64_t half_sum_end = (N / 2) - 1; + const int64_t full_sum_end = N - 1; result[0] = half_sum_end * (half_sum_end + 1) / 2; // Even sum. result[1] = (full_sum_end * (full_sum_end + 1) / 2) - result[0]; // Odd sum. } else { - const long half_sum_end = (T)(N / 2); - const long full_sum_end = N - 2; + const int64_t half_sum_end = (T)(N / 2); + const int64_t full_sum_end = N - 2; result[0] = half_sum_end * (half_sum_end - 1) / 2; // Even sum. result[1] = (full_sum_end * (full_sum_end - 1) / 2) - result[0]; // Odd sum. @@ -457,7 +457,7 @@ T PlusEqualAtomicViewCheck(const long input_length) { } template -bool PlusEqualAtomicViewTest(long input_length) { +bool PlusEqualAtomicViewTest(int64_t input_length) { T res = PlusEqualAtomicView(input_length); T resSerial = PlusEqualAtomicViewCheck(input_length); @@ -487,15 +487,16 @@ struct MinusEqualAtomicViewFunctor { view_type input; atomic_view_type even_odd_result; - const long length; + const int64_t length; // Wrap the result view in an atomic view, use this for operator. MinusEqualAtomicViewFunctor(const view_type& input_, - view_type& even_odd_result_, const long length_) + view_type& even_odd_result_, + const int64_t length_) : input(input_), even_odd_result(even_odd_result_), length(length_) {} KOKKOS_INLINE_FUNCTION - void operator()(const long i) const { + void operator()(const int64_t i) const { if (i < length) { if (i % 2 == 0) { even_odd_result(0) -= input(i); @@ -507,11 +508,11 @@ struct MinusEqualAtomicViewFunctor { }; template -T MinusEqualAtomicView(const long input_length) { +T MinusEqualAtomicView(const int64_t input_length) { typedef Kokkos::View view_type; typedef typename view_type::HostMirror host_view_type; - const long length = input_length; + const int64_t length = input_length; view_type input("input_view", length); view_type result_view("result_view", 2); @@ -532,19 +533,19 @@ T MinusEqualAtomicView(const long input_length) { } template -T MinusEqualAtomicViewCheck(const long input_length) { - const long N = input_length; +T MinusEqualAtomicViewCheck(const int64_t input_length) { + const int64_t N = input_length; T result[2]; if (N % 2 == 0) { - const long half_sum_end = (N / 2) - 1; - const long full_sum_end = N - 1; + const int64_t half_sum_end = (N / 2) - 1; + const int64_t full_sum_end = N - 1; result[0] = -1 * (half_sum_end * (half_sum_end + 1) / 2); // Even sum. result[1] = -1 * ((full_sum_end * (full_sum_end + 1) / 2) + result[0]); // Odd sum. } else { - const long half_sum_end = (long)(N / 2); - const long full_sum_end = N - 2; + const int64_t half_sum_end = (int64_t)(N / 2); + const int64_t full_sum_end = N - 2; result[0] = -1 * (half_sum_end * (half_sum_end - 1) / 2); // Even sum. result[1] = -1 * ((full_sum_end * (full_sum_end - 1) / 2) + result[0]); // Odd sum. @@ -554,7 +555,7 @@ T MinusEqualAtomicViewCheck(const long input_length) { } template -bool MinusEqualAtomicViewTest(long input_length) { +bool MinusEqualAtomicViewTest(int64_t input_length) { T res = MinusEqualAtomicView(input_length); T resSerial = MinusEqualAtomicViewCheck(input_length); @@ -584,15 +585,15 @@ struct TimesEqualAtomicViewFunctor { view_type input; atomic_view_type result; - const long length; + const int64_t length; // Wrap the result view in an atomic view, use this for operator TimesEqualAtomicViewFunctor(const view_type& input_, view_type& result_, - const long length_) + const int64_t length_) : input(input_), result(result_), length(length_) {} KOKKOS_INLINE_FUNCTION - void operator()(const long i) const { + void operator()(const int64_t i) const { if (i < length && i > 0) { result(0) *= (double)input(i); } @@ -600,11 +601,11 @@ struct TimesEqualAtomicViewFunctor { }; template -T TimesEqualAtomicView(const long input_length, const long remainder) { +T TimesEqualAtomicView(const int64_t input_length, const int64_t remainder) { typedef Kokkos::View view_type; typedef typename view_type::HostMirror host_view_type; - const long length = input_length; + const int64_t length = input_length; view_type input("input_view", length); view_type result_view("result_view", 1); @@ -626,12 +627,13 @@ T TimesEqualAtomicView(const long input_length, const long remainder) { } template -T TimesEqualAtomicViewCheck(const long input_length, const long remainder) { +T TimesEqualAtomicViewCheck(const int64_t input_length, + const int64_t remainder) { // Analytical result. - const long N = input_length; - T result = 1.0; + const int64_t N = input_length; + T result = 1.0; - for (long i = 2; i < N; ++i) { + for (int64_t i = 2; i < N; ++i) { if (i % (remainder + 1) == remainder) { result *= 2.0; } else { @@ -643,8 +645,8 @@ T TimesEqualAtomicViewCheck(const long input_length, const long remainder) { } template -bool TimesEqualAtomicViewTest(const long input_length) { - const long remainder = 23; +bool TimesEqualAtomicViewTest(const int64_t input_length) { + const int64_t remainder = 23; T res = TimesEqualAtomicView(input_length, remainder); T resSerial = TimesEqualAtomicViewCheck(input_length, remainder); @@ -675,15 +677,15 @@ struct DivEqualAtomicViewFunctor { view_type input; atomic_view_type result; - const long length; + const int64_t length; // Wrap the result view in an atomic view, use this for operator. DivEqualAtomicViewFunctor(const view_type& input_, scalar_view_type& result_, - const long length_) + const int64_t length_) : input(input_), result(result_), length(length_) {} KOKKOS_INLINE_FUNCTION - void operator()(const long i) const { + void operator()(const int64_t i) const { if (i < length && i > 0) { result() /= (double)(input(i)); } @@ -691,12 +693,12 @@ struct DivEqualAtomicViewFunctor { }; template -T DivEqualAtomicView(const long input_length, const long remainder) { +T DivEqualAtomicView(const int64_t input_length, const int64_t remainder) { typedef Kokkos::View view_type; typedef Kokkos::View scalar_view_type; typedef typename scalar_view_type::HostMirror host_scalar_view_type; - const long length = input_length; + const int64_t length = input_length; view_type input("input_view", length); scalar_view_type result_view("result_view"); @@ -718,10 +720,10 @@ T DivEqualAtomicView(const long input_length, const long remainder) { } template -T DivEqualAtomicViewCheck(const long input_length, const long remainder) { - const long N = input_length; - T result = 12121212121.0; - for (long i = 2; i < N; ++i) { +T DivEqualAtomicViewCheck(const int64_t input_length, const int64_t remainder) { + const int64_t N = input_length; + T result = 12121212121.0; + for (int64_t i = 2; i < N; ++i) { if (i % (remainder + 1) == remainder) { result /= 1.0; } else { @@ -733,8 +735,8 @@ T DivEqualAtomicViewCheck(const long input_length, const long remainder) { } template -bool DivEqualAtomicViewTest(const long input_length) { - const long remainder = 23; +bool DivEqualAtomicViewTest(const int64_t input_length) { + const int64_t remainder = 23; T res = DivEqualAtomicView(input_length, remainder); T resSerial = DivEqualAtomicViewCheck(input_length, remainder); @@ -766,15 +768,15 @@ struct ModEqualAtomicViewFunctor { view_type input; atomic_view_type result; - const long length; + const int64_t length; // Wrap the result view in an atomic view, use this for operator. ModEqualAtomicViewFunctor(const view_type& input_, scalar_view_type& result_, - const long length_) + const int64_t length_) : input(input_), result(result_), length(length_) {} KOKKOS_INLINE_FUNCTION - void operator()(const long i) const { + void operator()(const int64_t i) const { if (i < length && i > 0) { result() %= (double)(input(i)); } @@ -782,12 +784,12 @@ struct ModEqualAtomicViewFunctor { }; template -T ModEqualAtomicView(const long input_length, const long remainder) { +T ModEqualAtomicView(const int64_t input_length, const int64_t remainder) { typedef Kokkos::View view_type; typedef Kokkos::View scalar_view_type; typedef typename scalar_view_type::HostMirror host_scalar_view_type; - const long length = input_length; + const int64_t length = input_length; view_type input("input_view", length); scalar_view_type result_view("result_view"); @@ -809,10 +811,10 @@ T ModEqualAtomicView(const long input_length, const long remainder) { } template -T ModEqualAtomicViewCheck(const long input_length, const long remainder) { - const long N = input_length; - T result = 12121212121; - for (long i = 2; i < N; ++i) { +T ModEqualAtomicViewCheck(const int64_t input_length, const int64_t remainder) { + const int64_t N = input_length; + T result = 12121212121; + for (int64_t i = 2; i < N; ++i) { if (i % (remainder + 1) == remainder) { result %= 1; } else { @@ -824,12 +826,12 @@ T ModEqualAtomicViewCheck(const long input_length, const long remainder) { } template -bool ModEqualAtomicViewTest(const long input_length) { +bool ModEqualAtomicViewTest(const int64_t input_length) { static_assert(std::is_integral::value, "ModEqualAtomicView Error: Type must be integral type for this " "unit test"); - const long remainder = 23; + const int64_t remainder = 23; T res = ModEqualAtomicView(input_length, remainder); T resSerial = ModEqualAtomicViewCheck(input_length, remainder); @@ -861,16 +863,16 @@ struct RSEqualAtomicViewFunctor { const view_type input; atomic_view_type result; - const long length; - const long value; + const int64_t length; + const int64_t value; // Wrap the result view in an atomic view, use this for operator. RSEqualAtomicViewFunctor(const view_type& input_, result_view_type& result_, - const long& length_, const long& value_) + const int64_t& length_, const int64_t& value_) : input(input_), result(result_), length(length_), value(value_) {} KOKKOS_INLINE_FUNCTION - void operator()(const long i) const { + void operator()(const int64_t i) const { if (i < length) { if (i % 4 == 0) { result(1, 0, 0, 0) >>= input(i); @@ -886,13 +888,13 @@ struct RSEqualAtomicViewFunctor { }; template -T RSEqualAtomicView(const long input_length, const long value, - const long remainder) { +T RSEqualAtomicView(const int64_t input_length, const int64_t value, + const int64_t remainder) { typedef Kokkos::View view_type; typedef Kokkos::View result_view_type; typedef typename result_view_type::HostMirror host_scalar_view_type; - const long length = input_length; + const int64_t length = input_length; view_type input("input_view", length); result_view_type result_view("result_view", 2, 2, 2, 2); @@ -918,8 +920,8 @@ T RSEqualAtomicView(const long input_length, const long value, } template -T RSEqualAtomicViewCheck(const long input_length, const long value, - const long remainder) { +T RSEqualAtomicViewCheck(const int64_t input_length, const int64_t value, + const int64_t remainder) { T result[4]; result[0] = value; result[1] = value; @@ -927,7 +929,7 @@ T RSEqualAtomicViewCheck(const long input_length, const long value, result[3] = value; T* input = new T[input_length]; - for (long i = 0; i < input_length; ++i) { + for (int64_t i = 0; i < input_length; ++i) { if (i % (remainder + 1) == remainder) { input[i] = 1; } else { @@ -935,7 +937,7 @@ T RSEqualAtomicViewCheck(const long input_length, const long value, } } - for (long i = 0; i < input_length; ++i) { + for (int64_t i = 0; i < input_length; ++i) { if (i % 4 == 0) { result[0] >>= input[i]; } else if (i % 4 == 1) { @@ -953,12 +955,12 @@ T RSEqualAtomicViewCheck(const long input_length, const long value, } template -bool RSEqualAtomicViewTest(const long input_length) { +bool RSEqualAtomicViewTest(const int64_t input_length) { static_assert(std::is_integral::value, "RSEqualAtomicViewTest: Must be integral type for test"); - const long remainder = 61042; // prime - 1 - const long value = 1073741825; // 2^30+1 + const int64_t remainder = 61042; // prime - 1 + const int64_t value = 1073741825; // 2^30+1 T res = RSEqualAtomicView(input_length, value, remainder); T resSerial = RSEqualAtomicViewCheck(input_length, value, remainder); @@ -989,16 +991,16 @@ struct LSEqualAtomicViewFunctor { view_type input; atomic_view_type result; - const long length; - const long value; + const int64_t length; + const int64_t value; // Wrap the result view in an atomic view, use this for operator. LSEqualAtomicViewFunctor(const view_type& input_, result_view_type& result_, - const long& length_, const long& value_) + const int64_t& length_, const int64_t& value_) : input(input_), result(result_), length(length_), value(value_) {} KOKKOS_INLINE_FUNCTION - void operator()(const long i) const { + void operator()(const int64_t i) const { if (i < length) { if (i % 4 == 0) { result(1, 0, 0, 0) <<= input(i); @@ -1014,13 +1016,13 @@ struct LSEqualAtomicViewFunctor { }; template -T LSEqualAtomicView(const long input_length, const long value, - const long remainder) { +T LSEqualAtomicView(const int64_t input_length, const int64_t value, + const int64_t remainder) { typedef Kokkos::View view_type; typedef Kokkos::View result_view_type; typedef typename result_view_type::HostMirror host_scalar_view_type; - const long length = input_length; + const int64_t length = input_length; view_type input("input_view", length); result_view_type result_view("result_view", 2, 2, 2, 2); @@ -1046,8 +1048,8 @@ T LSEqualAtomicView(const long input_length, const long value, } template -T LSEqualAtomicViewCheck(const long input_length, const long value, - const long remainder) { +T LSEqualAtomicViewCheck(const int64_t input_length, const int64_t value, + const int64_t remainder) { T result[4]; result[0] = value; result[1] = value; @@ -1055,7 +1057,7 @@ T LSEqualAtomicViewCheck(const long input_length, const long value, result[3] = value; T* input = new T[input_length]; - for (long i = 0; i < input_length; ++i) { + for (int64_t i = 0; i < input_length; ++i) { if (i % (remainder + 1) == remainder) { input[i] = 1; } else { @@ -1063,7 +1065,7 @@ T LSEqualAtomicViewCheck(const long input_length, const long value, } } - for (long i = 0; i < input_length; ++i) { + for (int64_t i = 0; i < input_length; ++i) { if (i % 4 == 0) { result[0] <<= input[i]; } else if (i % 4 == 1) { @@ -1081,12 +1083,12 @@ T LSEqualAtomicViewCheck(const long input_length, const long value, } template -bool LSEqualAtomicViewTest(const long input_length) { +bool LSEqualAtomicViewTest(const int64_t input_length) { static_assert(std::is_integral::value, "LSEqualAtomicViewTest: Must be integral type for test"); - const long remainder = 61042; // prime - 1 - const long value = 1; // 2^30+1 + const int64_t remainder = 61042; // prime - 1 + const int64_t value = 1; // 2^30+1 T res = LSEqualAtomicView(input_length, value, remainder); T resSerial = LSEqualAtomicViewCheck(input_length, value, remainder); @@ -1116,15 +1118,15 @@ struct AndEqualAtomicViewFunctor { view_type input; atomic_view_type even_odd_result; - const long length; + const int64_t length; // Wrap the result view in an atomic view, use this for operator. AndEqualAtomicViewFunctor(const view_type& input_, - view_type& even_odd_result_, const long length_) + view_type& even_odd_result_, const int64_t length_) : input(input_), even_odd_result(even_odd_result_), length(length_) {} KOKKOS_INLINE_FUNCTION - void operator()(const long i) const { + void operator()(const int64_t i) const { if (i < length) { if (i % 2 == 0) { even_odd_result(0) &= input(i); @@ -1136,11 +1138,11 @@ struct AndEqualAtomicViewFunctor { }; template -T AndEqualAtomicView(const long input_length) { +T AndEqualAtomicView(const int64_t input_length) { typedef Kokkos::View view_type; typedef typename view_type::HostMirror host_view_type; - const long length = input_length; + const int64_t length = input_length; view_type input("input_view", length); view_type result_view("result_view", 2); @@ -1162,10 +1164,10 @@ T AndEqualAtomicView(const long input_length) { } template -T AndEqualAtomicViewCheck(const long input_length) { - const long N = input_length; - T result[2] = {1}; - for (long i = 0; i < N; ++i) { +T AndEqualAtomicViewCheck(const int64_t input_length) { + const int64_t N = input_length; + T result[2] = {1}; + for (int64_t i = 0; i < N; ++i) { if (N % 2 == 0) { result[0] &= (T)i; } else { @@ -1177,7 +1179,7 @@ T AndEqualAtomicViewCheck(const long input_length) { } template -bool AndEqualAtomicViewTest(long input_length) { +bool AndEqualAtomicViewTest(int64_t input_length) { static_assert(std::is_integral::value, "AndEqualAtomicViewTest: Must be integral type for test"); @@ -1210,15 +1212,15 @@ struct OrEqualAtomicViewFunctor { view_type input; atomic_view_type even_odd_result; - const long length; + const int64_t length; // Wrap the result view in an atomic view, use this for operator. OrEqualAtomicViewFunctor(const view_type& input_, view_type& even_odd_result_, - const long length_) + const int64_t length_) : input(input_), even_odd_result(even_odd_result_), length(length_) {} KOKKOS_INLINE_FUNCTION - void operator()(const long i) const { + void operator()(const int64_t i) const { if (i < length) { if (i % 2 == 0) { even_odd_result(0) |= input(i); @@ -1230,11 +1232,11 @@ struct OrEqualAtomicViewFunctor { }; template -T OrEqualAtomicView(const long input_length) { +T OrEqualAtomicView(const int64_t input_length) { typedef Kokkos::View view_type; typedef typename view_type::HostMirror host_view_type; - const long length = input_length; + const int64_t length = input_length; view_type input("input_view", length); view_type result_view("result_view", 2); @@ -1255,10 +1257,10 @@ T OrEqualAtomicView(const long input_length) { } template -T OrEqualAtomicViewCheck(const long input_length) { - const long N = input_length; - T result[2] = {0}; - for (long i = 0; i < N; ++i) { +T OrEqualAtomicViewCheck(const int64_t input_length) { + const int64_t N = input_length; + T result[2] = {0}; + for (int64_t i = 0; i < N; ++i) { if (i % 2 == 0) { result[0] |= (T)i; } else { @@ -1270,7 +1272,7 @@ T OrEqualAtomicViewCheck(const long input_length) { } template -bool OrEqualAtomicViewTest(long input_length) { +bool OrEqualAtomicViewTest(int64_t input_length) { static_assert(std::is_integral::value, "OrEqualAtomicViewTest: Must be integral type for test"); @@ -1303,15 +1305,15 @@ struct XOrEqualAtomicViewFunctor { view_type input; atomic_view_type even_odd_result; - const long length; + const int64_t length; // Wrap the result view in an atomic view, use this for operator. XOrEqualAtomicViewFunctor(const view_type& input_, - view_type& even_odd_result_, const long length_) + view_type& even_odd_result_, const int64_t length_) : input(input_), even_odd_result(even_odd_result_), length(length_) {} KOKKOS_INLINE_FUNCTION - void operator()(const long i) const { + void operator()(const int64_t i) const { if (i < length) { if (i % 2 == 0) { even_odd_result(0) ^= input(i); @@ -1323,11 +1325,11 @@ struct XOrEqualAtomicViewFunctor { }; template -T XOrEqualAtomicView(const long input_length) { +T XOrEqualAtomicView(const int64_t input_length) { typedef Kokkos::View view_type; typedef typename view_type::HostMirror host_view_type; - const long length = input_length; + const int64_t length = input_length; view_type input("input_view", length); view_type result_view("result_view", 2); @@ -1348,10 +1350,10 @@ T XOrEqualAtomicView(const long input_length) { } template -T XOrEqualAtomicViewCheck(const long input_length) { - const long N = input_length; - T result[2] = {0}; - for (long i = 0; i < N; ++i) { +T XOrEqualAtomicViewCheck(const int64_t input_length) { + const int64_t N = input_length; + T result[2] = {0}; + for (int64_t i = 0; i < N; ++i) { if (i % 2 == 0) { result[0] ^= (T)i; } else { @@ -1363,7 +1365,7 @@ T XOrEqualAtomicViewCheck(const long input_length) { } template -bool XOrEqualAtomicViewTest(long input_length) { +bool XOrEqualAtomicViewTest(int64_t input_length) { static_assert(std::is_integral::value, "XOrEqualAtomicViewTest: Must be integral type for test"); @@ -1426,38 +1428,38 @@ bool AtomicViewsTestNonIntegralType(const int length, int test) { namespace Test { TEST(TEST_CATEGORY, atomic_views_integral) { - const long length = 1000000; + const int64_t length = 1000000; { // Integral Types. ASSERT_TRUE( - (TestAtomicViews::AtomicViewsTestIntegralType( + (TestAtomicViews::AtomicViewsTestIntegralType( length, 1))); ASSERT_TRUE( - (TestAtomicViews::AtomicViewsTestIntegralType( + (TestAtomicViews::AtomicViewsTestIntegralType( length, 2))); ASSERT_TRUE( - (TestAtomicViews::AtomicViewsTestIntegralType( + (TestAtomicViews::AtomicViewsTestIntegralType( length, 3))); ASSERT_TRUE( - (TestAtomicViews::AtomicViewsTestIntegralType( + (TestAtomicViews::AtomicViewsTestIntegralType( length, 4))); ASSERT_TRUE( - (TestAtomicViews::AtomicViewsTestIntegralType( + (TestAtomicViews::AtomicViewsTestIntegralType( length, 5))); ASSERT_TRUE( - (TestAtomicViews::AtomicViewsTestIntegralType( + (TestAtomicViews::AtomicViewsTestIntegralType( length, 6))); ASSERT_TRUE( - (TestAtomicViews::AtomicViewsTestIntegralType( + (TestAtomicViews::AtomicViewsTestIntegralType( length, 7))); ASSERT_TRUE( - (TestAtomicViews::AtomicViewsTestIntegralType( + (TestAtomicViews::AtomicViewsTestIntegralType( length, 8))); } } TEST(TEST_CATEGORY, atomic_views_nonintegral) { - const long length = 1000000; + const int64_t length = 1000000; { // Non-Integral Types. ASSERT_TRUE(( diff --git a/lib/kokkos/core/unit_test/TestCTestDevice.cpp b/lib/kokkos/core/unit_test/TestCTestDevice.cpp new file mode 100644 index 0000000000..b2ee79b856 --- /dev/null +++ b/lib/kokkos/core/unit_test/TestCTestDevice.cpp @@ -0,0 +1,138 @@ +#include + +namespace Kokkos { +namespace Impl { + +int get_ctest_gpu(const char *local_rank_str); + +} // namespace Impl +} // namespace Kokkos + +#ifdef _WIN32 +int setenv(const char *name, const char *value, int overwrite) { + int errcode = 0; + if (!overwrite) { + size_t envsize = 0; + errcode = getenv_s(&envsize, NULL, 0, name); + if (errcode || envsize) return errcode; + } + return _putenv_s(name, value); +} + +int unsetenv(const char *name) { return _putenv_s(name, ""); } +#endif + +// Needed because https://github.com/google/googletest/issues/952 has not been +// resolved +#define EXPECT_THROW_WITH_MESSAGE(stmt, etype, whatstring) \ + EXPECT_THROW( \ + try { stmt; } catch (const etype &ex) { \ + EXPECT_EQ(whatstring, std::string(ex.what())); \ + throw; \ + }, \ + etype) + +class ctest_environment : public ::testing::Test { + protected: + void SetUp(); +}; + +void ctest_environment::SetUp() { + setenv("CTEST_KOKKOS_DEVICE_TYPE", "gpus", 1); + setenv("CTEST_RESOURCE_GROUP_COUNT", "10", 1); + unsetenv("CTEST_RESOURCE_GROUP_0"); + setenv("CTEST_RESOURCE_GROUP_1", "threads", 1); + setenv("CTEST_RESOURCE_GROUP_2", "threads,cores", 1); + + setenv("CTEST_RESOURCE_GROUP_3", "gpus", 1); + unsetenv("CTEST_RESOURCE_GROUP_3_GPUS"); + + setenv("CTEST_RESOURCE_GROUP_4", "gpus", 1); + setenv("CTEST_RESOURCE_GROUP_4_GPUS", "id:2", 1); + + setenv("CTEST_RESOURCE_GROUP_5", "gpus", 1); + setenv("CTEST_RESOURCE_GROUP_5_GPUS", "slots:1,id:2", 1); + + setenv("CTEST_RESOURCE_GROUP_6", "gpus", 1); + setenv("CTEST_RESOURCE_GROUP_6_GPUS", "id:2,slots:1", 1); + + setenv("CTEST_RESOURCE_GROUP_7", "threads,gpus", 1); + setenv("CTEST_RESOURCE_GROUP_7_GPUS", "id:3,slots:1", 1); + + setenv("CTEST_RESOURCE_GROUP_8", "gpus,threads", 1); + setenv("CTEST_RESOURCE_GROUP_8_GPUS", "id:1,slots:1", 1); + + setenv("CTEST_RESOURCE_GROUP_9", "cores,gpus,threads", 1); + setenv("CTEST_RESOURCE_GROUP_9_GPUS", "id:4,slots:1", 1); +} + +TEST_F(ctest_environment, no_device_type) { + unsetenv("CTEST_KOKKOS_DEVICE_TYPE"); + EXPECT_EQ(Kokkos::Impl::get_ctest_gpu("0"), 0); +} + +TEST_F(ctest_environment, no_process_count) { + unsetenv("CTEST_RESOURCE_GROUP_COUNT"); + EXPECT_EQ(Kokkos::Impl::get_ctest_gpu("0"), 0); +} + +TEST_F(ctest_environment, invalid_rank) { + EXPECT_THROW_WITH_MESSAGE( + Kokkos::Impl::get_ctest_gpu("10"), std::runtime_error, + "Error: local rank 10 is outside the bounds of resource groups provided " + "by" + " CTest. Raised by Kokkos::Impl::get_ctest_gpu().\nTraceback " + "functionality" + " not available\n"); +} + +TEST_F(ctest_environment, no_type_str) { + EXPECT_THROW_WITH_MESSAGE( + Kokkos::Impl::get_ctest_gpu("0"), std::runtime_error, + "Error: CTEST_RESOURCE_GROUP_0 is not specified. Raised by " + "Kokkos::Impl::get_ctest_gpu().\nTraceback functionality not " + "available\n"); +} + +TEST_F(ctest_environment, missing_type) { + EXPECT_THROW_WITH_MESSAGE( + Kokkos::Impl::get_ctest_gpu("1"), std::runtime_error, + "Error: device type 'gpus' not included in CTEST_RESOURCE_GROUP_1. " + "Raised " + "by Kokkos::Impl::get_ctest_gpu().\nTraceback functionality not available" + "\n"); + EXPECT_THROW_WITH_MESSAGE( + Kokkos::Impl::get_ctest_gpu("2"), std::runtime_error, + "Error: device type 'gpus' not included in CTEST_RESOURCE_GROUP_2. " + "Raised " + "by Kokkos::Impl::get_ctest_gpu().\nTraceback functionality not available" + "\n"); +} + +TEST_F(ctest_environment, no_id_str) { + EXPECT_THROW_WITH_MESSAGE( + Kokkos::Impl::get_ctest_gpu("3"), std::runtime_error, + "Error: CTEST_RESOURCE_GROUP_3_GPUS is not specified. Raised by " + "Kokkos::Impl::get_ctest_gpu().\nTraceback functionality not " + "available\n"); +} + +TEST_F(ctest_environment, invalid_id_str) { + EXPECT_THROW_WITH_MESSAGE( + Kokkos::Impl::get_ctest_gpu("4"), std::runtime_error, + "Error: invalid value of CTEST_RESOURCE_GROUP_4_GPUS: 'id:2'. Raised by " + "Kokkos::Impl::get_ctest_gpu().\nTraceback functionality not " + "available\n"); + EXPECT_THROW_WITH_MESSAGE( + Kokkos::Impl::get_ctest_gpu("5"), std::runtime_error, + "Error: invalid value of CTEST_RESOURCE_GROUP_5_GPUS: 'slots:1,id:2'. " + "Raised by Kokkos::Impl::get_ctest_gpu().\nTraceback functionality not " + "available\n"); +} + +TEST_F(ctest_environment, good) { + EXPECT_EQ(Kokkos::Impl::get_ctest_gpu("6"), 2); + EXPECT_EQ(Kokkos::Impl::get_ctest_gpu("7"), 3); + EXPECT_EQ(Kokkos::Impl::get_ctest_gpu("8"), 1); + EXPECT_EQ(Kokkos::Impl::get_ctest_gpu("9"), 4); +} diff --git a/lib/kokkos/core/unit_test/TestCXX11.hpp b/lib/kokkos/core/unit_test/TestCXX11.hpp index 876a3b5da8..405652b29e 100644 --- a/lib/kokkos/core/unit_test/TestCXX11.hpp +++ b/lib/kokkos/core/unit_test/TestCXX11.hpp @@ -361,6 +361,7 @@ bool Test(int test) { return passed; #else + (void)test; return true; #endif } diff --git a/lib/kokkos/core/unit_test/TestCompilerMacros.hpp b/lib/kokkos/core/unit_test/TestCompilerMacros.hpp index e8daab9db6..c644daca0e 100644 --- a/lib/kokkos/core/unit_test/TestCompilerMacros.hpp +++ b/lib/kokkos/core/unit_test/TestCompilerMacros.hpp @@ -44,10 +44,7 @@ #include -#if defined(KOKKOS_ENABLE_CUDA) && \ - (!defined(KOKKOS_ENABLE_CUDA_LAMBDA) || \ - ((defined(KOKKOS_ENABLE_SERIAL) || defined(KOKKOS_ENABLE_OPENMP)) && \ - ((CUDA_VERSION < 8000) && defined(__NVCC__)))) +#if defined(KOKKOS_ENABLE_CUDA) && !defined(KOKKOS_ENABLE_CUDA_LAMBDA) #if defined(KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA) #error "Macro bug: KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA shouldn't be defined" #endif diff --git a/lib/kokkos/core/unit_test/TestComplex.hpp b/lib/kokkos/core/unit_test/TestComplex.hpp index e049dcd175..2bb81052fe 100644 --- a/lib/kokkos/core/unit_test/TestComplex.hpp +++ b/lib/kokkos/core/unit_test/TestComplex.hpp @@ -84,8 +84,9 @@ struct TestComplexConstruction { ASSERT_FLOAT_EQ(h_results(8).real(), double(8)); ASSERT_FLOAT_EQ(h_results(8).imag(), 0.0); -#ifndef KOKKOS_ENABLE_ROCM // Copy construction conversion between - // Kokkos::complex and std::complex doesn't compile + // Copy construction conversion between + // Kokkos::complex and std::complex doesn't compile +#ifndef KOKKOS_ENABLE_HIP // FIXME_HIP Kokkos::complex a(1.5, 2.5), b(3.25, 5.25), r_kk; std::complex sa(a), sb(3.25, 5.25), r; r = a; @@ -104,7 +105,7 @@ struct TestComplexConstruction { } KOKKOS_INLINE_FUNCTION - void operator()(const int &i) const { + void operator()(const int & /*i*/) const { Kokkos::complex a(1.5, 2.5); d_results(0) = a; Kokkos::complex b(a); @@ -164,8 +165,10 @@ struct TestComplexBasicMath { ASSERT_FLOAT_EQ(h_results(2).real(), r.real()); ASSERT_FLOAT_EQ(h_results(2).imag(), r.imag()); r = a / b; +#ifndef KOKKOS_WORKAROUND_OPENMPTARGET_CLANG ASSERT_FLOAT_EQ(h_results(3).real(), r.real()); ASSERT_FLOAT_EQ(h_results(3).imag(), r.imag()); +#endif r = d + a; ASSERT_FLOAT_EQ(h_results(4).real(), r.real()); ASSERT_FLOAT_EQ(h_results(4).imag(), r.imag()); @@ -212,8 +215,10 @@ struct TestComplexBasicMath { ASSERT_FLOAT_EQ(h_results(18).real(), r.real()); ASSERT_FLOAT_EQ(h_results(18).imag(), r.imag()); r = c / a; +#ifndef KOKKOS_WORKAROUND_OPENMPTARGET_CLANG ASSERT_FLOAT_EQ(h_results(19).real(), r.real()); ASSERT_FLOAT_EQ(h_results(19).imag(), r.imag()); +#endif r = a; /* r = a+e; */ ASSERT_FLOAT_EQ(h_results(20).real(), r.real() + e); @@ -227,7 +232,7 @@ struct TestComplexBasicMath { } KOKKOS_INLINE_FUNCTION - void operator()(const int &i) const { + void operator()(const int & /*i*/) const { Kokkos::complex a(1.5, 2.5); Kokkos::complex b(3.25, 5.75); // Basic math complex / complex @@ -320,7 +325,7 @@ struct TestComplexSpecialFunctions { } KOKKOS_INLINE_FUNCTION - void operator()(const int &i) const { + void operator()(const int & /*i*/) const { Kokkos::complex a(1.5, 2.5); Kokkos::complex b(3.25, 5.75); double c = 9.3; @@ -356,4 +361,41 @@ TEST(TEST_CATEGORY, complex_special_funtions) { TEST(TEST_CATEGORY, complex_io) { testComplexIO(); } +TEST(TEST_CATEGORY, complex_trivially_copyable) { + using RealType = double; + + // Kokkos::complex is trivially copyable when RealType is + // trivially copyable + // Simply disable the check for IBM's XL compiler since we can't reliably + // check for a version that defines relevant functions. +#if !defined(__ibmxl__) + // clang claims compatibility with gcc 4.2.1 but all versions tested know + // about std::is_trivially_copyable. +#if !defined(__clang__) +#define KOKKOS_COMPILER_GNU_VERSION \ + __GNUC__ * 100 + __GNUC_MINOR__ * 10 + __GNUC_PATCHLEVEL__ +#endif +#if KOKKOS_COMPILER_GNU_VERSION == 0 || KOKKOS_COMPILER_GNU_VERSION > 500 + ASSERT_TRUE(std::is_trivially_copyable>::value || + !std::is_trivially_copyable::value); +#elif KOKKOS_COMPILER_GNU_VERSION > 480 + ASSERT_TRUE( + (std::has_trivial_copy_constructor>::value && + std::has_trivial_copy_assign>::value && + std::is_trivially_destructible>::value) || + !(std::has_trivial_copy_constructor::value && + std::has_trivial_copy_assign::value && + std::is_trivially_destructible::value)); +#else + ASSERT_TRUE( + (std::has_trivial_copy_constructor>::value && + std::has_trivial_copy_assign>::value && + std::has_trivial_destructor>::value) || + !(std::has_trivial_copy_constructor::value && + std::has_trivial_copy_assign::value && + std::has_trivial_destructor::value)); +#endif +#endif +} + } // namespace Test diff --git a/lib/kokkos/core/unit_test/TestConcepts.hpp b/lib/kokkos/core/unit_test/TestConcepts.hpp new file mode 100644 index 0000000000..dcd4d948a6 --- /dev/null +++ b/lib/kokkos/core/unit_test/TestConcepts.hpp @@ -0,0 +1,81 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// 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 NTESS "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 NTESS 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 TestConcept { + +using ExecutionSpace = TEST_EXECSPACE; +using MemorySpace = typename ExecutionSpace::memory_space; +using DeviceType = typename ExecutionSpace::device_type; + +static_assert(Kokkos::is_execution_space{}, ""); +static_assert(Kokkos::is_execution_space{}, ""); +static_assert(!Kokkos::is_execution_space{}, ""); +static_assert(!Kokkos::is_execution_space{}, ""); + +static_assert(Kokkos::is_memory_space{}, ""); +static_assert(Kokkos::is_memory_space{}, ""); +static_assert(!Kokkos::is_memory_space{}, ""); +static_assert(!Kokkos::is_memory_space{}, ""); + +static_assert(Kokkos::is_device{}, ""); +static_assert(Kokkos::is_device{}, ""); +static_assert(!Kokkos::is_device{}, ""); +static_assert(!Kokkos::is_device{}, ""); + +static_assert(!Kokkos::is_device{}, ""); +static_assert(!Kokkos::is_device{}, ""); + +static_assert(Kokkos::is_space{}, ""); +static_assert(Kokkos::is_space{}, ""); +static_assert(Kokkos::is_space{}, ""); +static_assert(Kokkos::is_space{}, ""); +static_assert(Kokkos::is_space{}, ""); +static_assert(Kokkos::is_space{}, ""); +static_assert(!Kokkos::is_space{}, ""); +static_assert(!Kokkos::is_space{}, ""); +static_assert(!Kokkos::is_space{}, ""); + +} // namespace TestConcept diff --git a/lib/kokkos/core/unit_test/TestCrs.hpp b/lib/kokkos/core/unit_test/TestCrs.hpp index 5807109601..296235aad0 100644 --- a/lib/kokkos/core/unit_test/TestCrs.hpp +++ b/lib/kokkos/core/unit_test/TestCrs.hpp @@ -53,7 +53,7 @@ namespace { template struct CountFillFunctor { KOKKOS_INLINE_FUNCTION - std::int32_t operator()(std::int32_t row, std::int32_t *fill) const { + std::int32_t operator()(std::int32_t row, float *fill) const { auto n = (row % 4) + 1; if (fill) { for (std::int32_t j = 0; j < n; ++j) { @@ -153,7 +153,7 @@ struct RunUpdateCrsTest { template void test_count_fill(std::int32_t nrows) { - Kokkos::Crs graph; + Kokkos::Crs graph; Kokkos::count_and_fill_crs(graph, nrows, CountFillFunctor()); ASSERT_EQ(graph.numRows(), nrows); auto row_map = Kokkos::create_mirror_view(graph.row_map); @@ -176,12 +176,12 @@ void test_count_fill(std::int32_t nrows) { template void test_constructor(std::int32_t nrows) { for (int nTest = 1; nTest < 5; nTest++) { - typedef Kokkos::Crs crs_int32; - crs_int32 graph; + typedef Kokkos::Crs crs_type; + crs_type graph; Kokkos::count_and_fill_crs(graph, nrows, CountFillFunctor()); ASSERT_EQ(graph.numRows(), nrows); - RunUpdateCrsTest crstest(graph); + RunUpdateCrsTest crstest(graph); crstest.run_test(nTest); auto row_map = Kokkos::create_mirror_view(graph.row_map); diff --git a/lib/kokkos/core/unit_test/TestDeepCopy.hpp b/lib/kokkos/core/unit_test/TestDeepCopy.hpp index a7e80cef36..56c259ff6a 100644 --- a/lib/kokkos/core/unit_test/TestDeepCopy.hpp +++ b/lib/kokkos/core/unit_test/TestDeepCopy.hpp @@ -2,6 +2,7 @@ namespace Test { +#ifdef KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA namespace Impl { template struct TestDeepCopy { @@ -210,5 +211,149 @@ TEST(TEST_CATEGORY, deep_copy_alignment) { Kokkos::HostSpace>::run_test(100000); } } +#endif +// KOKKOS_IMPL_HIP_CLANG_WORKAROUND +#ifndef KOKKOS_ENABLE_HIP +namespace Impl { +template +struct TestDeepCopyScalarConversion { + struct TagFill {}; + struct TagCompare {}; + + using view_type_s1_1d = Kokkos::View; + using view_type_s2_1d = Kokkos::View; + using view_type_s1_2d = Kokkos::View; + using view_type_s2_2d = Kokkos::View; + + using base_layout1 = typename std::conditional< + std::is_same::value, Kokkos::LayoutLeft, + Layout1>::type; + using base_layout2 = typename std::conditional< + std::is_same::value, Kokkos::LayoutLeft, + Layout2>::type; + + using base_type_s1_1d = Kokkos::View; + using base_type_s2_1d = Kokkos::View; + using base_type_s1_2d = Kokkos::View; + using base_type_s2_2d = Kokkos::View; + + view_type_s1_1d view_s1_1d; + view_type_s2_1d view_s2_1d; + view_type_s1_2d view_s1_2d; + view_type_s2_2d view_s2_2d; + + Kokkos::View error_count; + + void create_views(int64_t N0, int64_t N1) { + base_type_s1_1d b_s1_1d("TestDeepCopyConversion::b_s1_1d", N0); + base_type_s2_1d b_s2_1d("TestDeepCopyConversion::b_s2_1d", N0); + base_type_s1_2d b_s1_2d("TestDeepCopyConversion::b_s1_2d", N0, N1); + base_type_s2_2d b_s2_2d("TestDeepCopyConversion::b_s2_2d", N0, N1); + + view_s1_1d = view_type_s1_1d(b_s1_1d, Kokkos::ALL); + view_s2_1d = view_type_s2_1d(b_s2_1d, Kokkos::ALL); + view_s1_2d = view_type_s1_2d(b_s1_2d, Kokkos::ALL, Kokkos::ALL); + view_s2_2d = view_type_s2_2d(b_s2_2d, Kokkos::ALL, Kokkos::ALL); + + error_count = Kokkos::View( + "TestDeepCopyConversion::error_count"); + } + + KOKKOS_FUNCTION + void operator()(TagFill, const int64_t i) const { + view_s2_1d(i) = static_cast(i + 1); + for (int64_t j = 0; j < static_cast(view_s2_2d.extent(1)); j++) + view_s2_2d(i, j) = static_cast((i + 1) * 1000 + j + 1); + } + + KOKKOS_FUNCTION + void operator()(TagCompare, const int64_t i) const { + int64_t errors = 0; + if (view_s1_1d(i) != static_cast(static_cast(i + 1))) + errors++; + for (int64_t j = 0; j < static_cast(view_s1_2d.extent(1)); j++) { + if (view_s1_2d(i, j) != + static_cast(static_cast((i + 1) * 1000 + j + 1))) + errors++; + } + if (errors > 0) Kokkos::atomic_add(&error_count(), errors); + } + + void run_tests(int64_t N0, int64_t N1) { + create_views(N0, N1); + + Kokkos::parallel_for("TestDeepCopyConversion::Fill", + Kokkos::RangePolicy>(0, N0), + *this); + + Kokkos::deep_copy(view_s1_1d, view_s2_1d); + Kokkos::deep_copy(view_s1_2d, view_s2_2d); + + Kokkos::parallel_for("TestDeepCopyConversion::Compare", + Kokkos::RangePolicy>(0, N0), + *this); + + int64_t errors = 0; + Kokkos::deep_copy(errors, error_count); + ASSERT_TRUE(errors == 0); + + Kokkos::deep_copy(view_s1_1d, static_cast(0)); + Kokkos::deep_copy(view_s1_2d, static_cast(0)); + + Kokkos::parallel_for("TestDeepCopyConversion::Compare", + Kokkos::RangePolicy>(0, N0), + *this); + Kokkos::deep_copy(errors, error_count); + ASSERT_TRUE(errors > 0); + + Kokkos::deep_copy(error_count, 0); + Kokkos::deep_copy(TEST_EXECSPACE(), view_s1_1d, view_s2_1d); + Kokkos::deep_copy(TEST_EXECSPACE(), view_s1_2d, view_s2_2d); + + Kokkos::parallel_for("TestDeepCopyConversion::Compare", + Kokkos::RangePolicy>(0, N0), + *this); + + Kokkos::deep_copy(errors, error_count); + ASSERT_TRUE(errors == 0); + } +}; +} // namespace Impl + +TEST(TEST_CATEGORY, deep_copy_conversion) { + int64_t N0 = 19381; + int64_t N1 = 17; + + using right = Kokkos::LayoutRight; + using left = Kokkos::LayoutLeft; + using stride = Kokkos::LayoutStride; + + Impl::TestDeepCopyScalarConversion().run_tests( + N0, N1); + Impl::TestDeepCopyScalarConversion().run_tests( + N0, N1); + Impl::TestDeepCopyScalarConversion().run_tests( + N0, N1); + Impl::TestDeepCopyScalarConversion().run_tests( + N0, N1); + Impl::TestDeepCopyScalarConversion().run_tests( + N0, N1); + + Impl::TestDeepCopyScalarConversion().run_tests( + N0, N1); + Impl::TestDeepCopyScalarConversion().run_tests( + N0, N1); + Impl::TestDeepCopyScalarConversion().run_tests( + N0, N1); + Impl::TestDeepCopyScalarConversion().run_tests( + N0, N1); + Impl::TestDeepCopyScalarConversion().run_tests( + N0, N1); +} +#endif } // namespace Test diff --git a/lib/kokkos/core/unit_test/TestLocalDeepCopy.hpp b/lib/kokkos/core/unit_test/TestLocalDeepCopy.hpp index 9bca373a40..c776481c70 100644 --- a/lib/kokkos/core/unit_test/TestLocalDeepCopy.hpp +++ b/lib/kokkos/core/unit_test/TestLocalDeepCopy.hpp @@ -934,7 +934,6 @@ void impl_test_local_deepcopy_rangepolicy_rank_7(const int N) { //------------------------------------------------------------------------------------------------------------- #if defined(KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA) -#if !defined(KOKKOS_ENABLE_CUDA) || (8000 <= CUDA_VERSION) TEST(TEST_CATEGORY, local_deepcopy_teampolicy_layoutleft) { typedef TEST_EXECSPACE ExecSpace; typedef Kokkos::View ViewType; @@ -1043,5 +1042,73 @@ TEST(TEST_CATEGORY, local_deepcopy_rangepolicy_layoutright) { } } #endif -#endif + +namespace Impl { +template +using ShMemView = + Kokkos::View; + +struct DeepCopyScratchFunctor { + DeepCopyScratchFunctor( + Kokkos::View check_view_1, + Kokkos::View check_view_2) + : check_view_1_(check_view_1), + check_view_2_(check_view_2), + N_(check_view_1.extent(0)) {} + + KOKKOS_INLINE_FUNCTION void operator()( + Kokkos::TeamPolicy>::member_type team) + const { + using ShmemType = TEST_EXECSPACE::scratch_memory_space; + auto shview = + Impl::ShMemView(team.team_scratch(1), N_, 1); + + Kokkos::parallel_for( + Kokkos::TeamThreadRange(team, N_), KOKKOS_LAMBDA(const size_t& index) { + auto thread_shview = Kokkos::subview(shview, index, Kokkos::ALL()); + Kokkos::Experimental::local_deep_copy(thread_shview, index); + }); + Kokkos::Experimental::local_deep_copy( + team, check_view_1_, Kokkos::subview(shview, Kokkos::ALL(), 0)); + + Kokkos::Experimental::local_deep_copy(team, shview, 6.); + Kokkos::Experimental::local_deep_copy( + team, check_view_2_, Kokkos::subview(shview, Kokkos::ALL(), 0)); + } + + Kokkos::View check_view_1_; + Kokkos::View check_view_2_; + int const N_; +}; +} // namespace Impl + +TEST(TEST_CATEGORY, deep_copy_scratch) { + using TestDeviceTeamPolicy = Kokkos::TeamPolicy; + + const int N = 8; + const int bytes_per_team = + Impl::ShMemView::shmem_size(N, 1); + + TestDeviceTeamPolicy policy(1, Kokkos::AUTO); + auto team_exec = policy.set_scratch_size(1, Kokkos::PerTeam(bytes_per_team)); + + Kokkos::View check_view_1("check_1", + N); + Kokkos::View check_view_2("check_2", + N); + + Kokkos::parallel_for( + team_exec, Impl::DeepCopyScratchFunctor{check_view_1, check_view_2}); + auto host_copy_1 = + Kokkos::create_mirror_view_and_copy(Kokkos::HostSpace(), check_view_1); + auto host_copy_2 = + Kokkos::create_mirror_view_and_copy(Kokkos::HostSpace(), check_view_2); + + for (unsigned int i = 0; i < N; ++i) { + ASSERT_EQ(host_copy_1(i), i); + ASSERT_EQ(host_copy_2(i), 6.0); + } +} } // namespace Test diff --git a/lib/kokkos/core/unit_test/TestMDRange.hpp b/lib/kokkos/core/unit_test/TestMDRange.hpp index 1e1bd869ca..c4288f21a1 100644 --- a/lib/kokkos/core/unit_test/TestMDRange.hpp +++ b/lib/kokkos/core/unit_test/TestMDRange.hpp @@ -256,7 +256,6 @@ struct TestMDRange_2D { static void test_reduce2(const int N0, const int N1) { #if defined(KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA) -#if !defined(KOKKOS_ENABLE_CUDA) || (8000 <= CUDA_VERSION) { typedef typename Kokkos::MDRangePolicy, Kokkos::IndexType > @@ -269,13 +268,12 @@ struct TestMDRange_2D { double sum = 0.0; parallel_reduce( range, - KOKKOS_LAMBDA(const int i, const int j, double &lsum) { + KOKKOS_LAMBDA(const int /*i*/, const int /*j*/, double &lsum) { lsum += 1.0; }, sum); ASSERT_EQ(sum, N0 * N1); } -#endif #endif { @@ -361,7 +359,6 @@ struct TestMDRange_2D { } // Test Min reducer with lambda #if defined(KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA) -#if !defined(KOKKOS_ENABLE_CUDA) || (8000 <= CUDA_VERSION) { typedef typename Kokkos::MDRangePolicy, Kokkos::IndexType > @@ -387,7 +384,6 @@ struct TestMDRange_2D { ASSERT_EQ(min, 4.0); } -#endif #endif // Tagged operator test { @@ -532,7 +528,6 @@ struct TestMDRange_2D { static void test_for2(const int N0, const int N1) { #if defined(KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA) -#if !defined(KOKKOS_ENABLE_CUDA) || (8000 <= CUDA_VERSION) { typedef typename Kokkos::MDRangePolicy, Kokkos::IndexType > @@ -571,7 +566,6 @@ struct TestMDRange_2D { ASSERT_EQ(counter, 0); } -#endif #endif { @@ -909,7 +903,6 @@ struct TestMDRange_3D { static void test_reduce3(const int N0, const int N1, const int N2) { #if defined(KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA) -#if !defined(KOKKOS_ENABLE_CUDA) || (8000 <= CUDA_VERSION) { typedef typename Kokkos::MDRangePolicy, Kokkos::IndexType > @@ -922,13 +915,11 @@ struct TestMDRange_3D { double sum = 0.0; parallel_reduce( range, - KOKKOS_LAMBDA(const int i, const int j, const int k, double &lsum) { - lsum += 1.0; - }, + KOKKOS_LAMBDA(const int /*i*/, const int /*j*/, const int /*k*/, + double &lsum) { lsum += 1.0; }, sum); ASSERT_EQ(sum, N0 * N1 * N2); } -#endif #endif { @@ -1013,7 +1004,6 @@ struct TestMDRange_3D { } // Test Min reducer with lambda #if defined(KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA) -#if !defined(KOKKOS_ENABLE_CUDA) || (8000 <= CUDA_VERSION) { typedef typename Kokkos::MDRangePolicy, Kokkos::IndexType > @@ -1046,7 +1036,6 @@ struct TestMDRange_3D { ASSERT_EQ(min, min_identity); } } -#endif #endif // Tagged operator test @@ -1193,7 +1182,6 @@ struct TestMDRange_3D { static void test_for3(const int N0, const int N1, const int N2) { #if defined(KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA) -#if !defined(KOKKOS_ENABLE_CUDA) || (8000 <= CUDA_VERSION) { typedef typename Kokkos::MDRangePolicy, Kokkos::IndexType > @@ -1236,7 +1224,6 @@ struct TestMDRange_3D { ASSERT_EQ(counter, 0); } -#endif #endif { @@ -1549,7 +1536,6 @@ struct TestMDRange_4D { static void test_reduce4(const int N0, const int N1, const int N2, const int N3) { #if defined(KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA) -#if !defined(KOKKOS_ENABLE_CUDA) || (8000 <= CUDA_VERSION) { typedef typename Kokkos::MDRangePolicy, Kokkos::IndexType > @@ -1562,12 +1548,11 @@ struct TestMDRange_4D { double sum = 0.0; parallel_reduce( range, - KOKKOS_LAMBDA(const int i, const int j, const int k, const int l, - double &lsum) { lsum += 1.0; }, + KOKKOS_LAMBDA(const int /*i*/, const int /*j*/, const int /*k*/, + const int /*l*/, double &lsum) { lsum += 1.0; }, sum); ASSERT_EQ(sum, N0 * N1 * N2 * N3); } -#endif #endif { @@ -1656,7 +1641,6 @@ struct TestMDRange_4D { // Test Min reducer with lambda #if defined(KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA) -#if !defined(KOKKOS_ENABLE_CUDA) || (8000 <= CUDA_VERSION) { typedef typename Kokkos::MDRangePolicy, Kokkos::IndexType > @@ -1684,7 +1668,6 @@ struct TestMDRange_4D { ASSERT_EQ(min, 16.0); } -#endif #endif // Tagged operator test @@ -1834,7 +1817,6 @@ struct TestMDRange_4D { static void test_for4(const int N0, const int N1, const int N2, const int N3) { #if defined(KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA) -#if !defined(KOKKOS_ENABLE_CUDA) || (8000 <= CUDA_VERSION) { typedef typename Kokkos::MDRangePolicy, Kokkos::IndexType > @@ -1878,7 +1860,6 @@ struct TestMDRange_4D { ASSERT_EQ(counter, 0); } -#endif #endif { @@ -2206,7 +2187,6 @@ struct TestMDRange_5D { static void test_reduce5(const int N0, const int N1, const int N2, const int N3, const int N4) { #if defined(KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA) -#if !defined(KOKKOS_ENABLE_CUDA) || (8000 <= CUDA_VERSION) { typedef typename Kokkos::MDRangePolicy, Kokkos::IndexType > @@ -2220,12 +2200,12 @@ struct TestMDRange_5D { double sum = 0.0; parallel_reduce( range, - KOKKOS_LAMBDA(const int i, const int j, const int k, const int l, - const int m, double &lsum) { lsum += 1.0; }, + KOKKOS_LAMBDA(const int /*i*/, const int /*j*/, const int /*k*/, + const int /*l*/, const int /*m*/, + double &lsum) { lsum += 1.0; }, sum); ASSERT_EQ(sum, N0 * N1 * N2 * N3 * N4); } -#endif #endif { @@ -2320,7 +2300,6 @@ struct TestMDRange_5D { // Test Min reducer with lambda #if defined(KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA) -#if !defined(KOKKOS_ENABLE_CUDA) || (8000 <= CUDA_VERSION) { typedef typename Kokkos::MDRangePolicy, Kokkos::IndexType > @@ -2352,7 +2331,6 @@ struct TestMDRange_5D { ASSERT_EQ(min, 32.0); } -#endif #endif // Tagged operator test @@ -2404,7 +2382,6 @@ struct TestMDRange_5D { static void test_for5(const int N0, const int N1, const int N2, const int N3, const int N4) { #if defined(KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA) -#if !defined(KOKKOS_ENABLE_CUDA) || (8000 <= CUDA_VERSION) { typedef typename Kokkos::MDRangePolicy, Kokkos::IndexType > @@ -2452,7 +2429,6 @@ struct TestMDRange_5D { ASSERT_EQ(counter, 0); } -#endif #endif { @@ -2798,7 +2774,6 @@ struct TestMDRange_6D { static void test_reduce6(const int N0, const int N1, const int N2, const int N3, const int N4, const int N5) { #if defined(KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA) -#if !defined(KOKKOS_ENABLE_CUDA) || (8000 <= CUDA_VERSION) { typedef typename Kokkos::MDRangePolicy, Kokkos::IndexType > @@ -2812,13 +2787,12 @@ struct TestMDRange_6D { double sum = 0.0; parallel_reduce( range, - KOKKOS_LAMBDA(const int i, const int j, const int k, const int l, - const int m, const int n, + KOKKOS_LAMBDA(const int /*i*/, const int /*j*/, const int /*k*/, + const int /*l*/, const int /*m*/, const int /*n*/, double &lsum) { lsum += 1.0; }, sum); ASSERT_EQ(sum, N0 * N1 * N2 * N3 * N4 * N5); } -#endif #endif { @@ -2914,7 +2888,6 @@ struct TestMDRange_6D { // Test Min reducer with lambda #if defined(KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA) -#if !defined(KOKKOS_ENABLE_CUDA) || (8000 <= CUDA_VERSION) { typedef typename Kokkos::MDRangePolicy, Kokkos::IndexType > @@ -2948,7 +2921,6 @@ struct TestMDRange_6D { ASSERT_EQ(min, 64.0); } -#endif #endif // Tagged operator test @@ -3001,7 +2973,6 @@ struct TestMDRange_6D { static void test_for6(const int N0, const int N1, const int N2, const int N3, const int N4, const int N5) { #if defined(KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA) -#if !defined(KOKKOS_ENABLE_CUDA) || (8000 <= CUDA_VERSION) { typedef typename Kokkos::MDRangePolicy, Kokkos::IndexType > @@ -3051,7 +3022,6 @@ struct TestMDRange_6D { ASSERT_EQ(counter, 0); } -#endif #endif { diff --git a/lib/kokkos/core/unit_test/TestMemoryPool.hpp b/lib/kokkos/core/unit_test/TestMemoryPool.hpp index bc78a2908e..cc18a90305 100644 --- a/lib/kokkos/core/unit_test/TestMemoryPool.hpp +++ b/lib/kokkos/core/unit_test/TestMemoryPool.hpp @@ -162,10 +162,10 @@ void test_host_memory_pool_stats() { // Aborts because exceeds max block size: // void * p2048 = pool.allocate(2048); - ASSERT_NE(p0064, (void*)0); - ASSERT_NE(p0128, (void*)0); - ASSERT_NE(p0256, (void*)0); - ASSERT_NE(p1024, (void*)0); + ASSERT_NE(p0064, nullptr); + ASSERT_NE(p0128, nullptr); + ASSERT_NE(p0256, nullptr); + ASSERT_NE(p1024, nullptr); pool.deallocate(p0064, 64); pool.deallocate(p0128, 128); @@ -475,17 +475,15 @@ void test_memory_pool_corners(const bool print_statistics, template struct TestMemoryPoolHuge { - TestMemoryPoolHuge() {} - enum : size_t { num_superblock = 0 }; using value_type = long; KOKKOS_INLINE_FUNCTION - void operator()(int i, long& err) const noexcept {} + void operator()(int /*i*/, long& /*err*/) const noexcept {} KOKKOS_INLINE_FUNCTION - void operator()(int i) const noexcept {} + void operator()(int /*i*/) const noexcept {} }; template diff --git a/lib/kokkos/core/unit_test/TestRange.hpp b/lib/kokkos/core/unit_test/TestRange.hpp index 1fd6a508f7..9bd13ad239 100644 --- a/lib/kokkos/core/unit_test/TestRange.hpp +++ b/lib/kokkos/core/unit_test/TestRange.hpp @@ -54,9 +54,10 @@ template struct TestRange { typedef int value_type; ///< typedef required for the parallel_reduce - typedef Kokkos::View view_type; + typedef Kokkos::View view_type; view_type m_flags; + view_type result_view; struct VerifyInitTag {}; struct ResetTag {}; @@ -65,9 +66,19 @@ struct TestRange { struct VerifyOffsetTag {}; int N; +#ifndef KOKKOS_WORKAROUND_OPENMPTARGET_GCC static const int offset = 13; +#else + int offset; +#endif TestRange(const size_t N_) - : m_flags(Kokkos::ViewAllocateWithoutInitializing("flags"), N_), N(N_) {} + : m_flags(Kokkos::ViewAllocateWithoutInitializing("flags"), N_), + result_view(Kokkos::ViewAllocateWithoutInitializing("results"), N_), + N(N_) { +#ifdef KOKKOS_WORKAROUND_OPENMPTARGET_GCC + offset = 13; +#endif + } void test_for() { typename view_type::HostMirror host_flags = @@ -185,7 +196,7 @@ struct TestRange { //---------------------------------------- void test_reduce() { - int total = 0; + value_type total = 0; Kokkos::parallel_for(Kokkos::RangePolicy(0, N), *this); @@ -220,15 +231,31 @@ struct TestRange { Kokkos::parallel_for(Kokkos::RangePolicy(0, N), *this); + auto check_scan_results = [&]() { + auto const host_mirror = + Kokkos::create_mirror_view_and_copy(Kokkos::HostSpace(), result_view); + for (int i = 0; i < N; ++i) { + if (((i + 1) * i) / 2 != host_mirror(i)) { + std::cout << "Error at " << i << std::endl; + EXPECT_EQ(size_t(((i + 1) * i) / 2), size_t(host_mirror(i))); + } + } + }; + Kokkos::parallel_scan( "TestKernelScan", Kokkos::RangePolicy(0, N), *this); - int total = 0; + check_scan_results(); + + value_type total = 0; Kokkos::parallel_scan( "TestKernelScanWithTotal", Kokkos::RangePolicy(0, N), *this, total); + + check_scan_results(); + ASSERT_EQ(size_t((N - 1) * (N) / 2), size_t(total)); // sum( 0 .. N-1 ) } @@ -239,16 +266,16 @@ struct TestRange { if (final) { if (update != (i * (i + 1)) / 2) { - printf("TestRange::test_scan error %d : %d != %d\n", i, - (i * (i + 1)) / 2, m_flags(i)); + printf("TestRange::test_scan error (%d,%d) : %d != %d\n", i, m_flags(i), + (i * (i + 1)) / 2, update); } + result_view(i) = update; } } void test_dynamic_policy() { - auto const N_no_implicit_capture = N; #if defined(KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA) -#if !defined(KOKKOS_ENABLE_CUDA) || (8000 <= CUDA_VERSION) + auto const N_no_implicit_capture = N; typedef Kokkos::RangePolicy > policy_t; @@ -273,7 +300,7 @@ struct TestRange { int error = 0; Kokkos::parallel_reduce( Kokkos::RangePolicy(0, N), - KOKKOS_LAMBDA(const int &i, int &lsum) { + KOKKOS_LAMBDA(const int &i, value_type &lsum) { lsum += (a(i) != (i < N_no_implicit_capture / 2 ? 1 : 10000)); }, error); @@ -300,10 +327,10 @@ struct TestRange { count("Count", ExecSpace::concurrency()); Kokkos::View a("A", N); - int sum = 0; + value_type sum = 0; Kokkos::parallel_reduce( policy_t(0, N), - KOKKOS_LAMBDA(const int &i, int &lsum) { + KOKKOS_LAMBDA(const int &i, value_type &lsum) { for (int k = 0; k < (i < N_no_implicit_capture / 2 ? 1 : 10000); k++) { a(i)++; @@ -321,7 +348,7 @@ struct TestRange { int error = 0; Kokkos::parallel_reduce( Kokkos::RangePolicy(0, N), - KOKKOS_LAMBDA(const int &i, int &lsum) { + KOKKOS_LAMBDA(const int &i, value_type &lsum) { lsum += (a(i) != (i < N_no_implicit_capture / 2 ? 1 : 10000)); }, error); @@ -342,7 +369,6 @@ struct TestRange { //} } } -#endif #endif } }; @@ -417,7 +443,7 @@ TEST(TEST_CATEGORY, range_scan) { TestRange > f(0); f.test_scan(); } -#if !defined(KOKKOS_ENABLE_CUDA) && !defined(KOKKOS_ENABLE_ROCM) +#if !defined(KOKKOS_ENABLE_CUDA) && !defined(KOKKOS_ENABLE_HIP) { TestRange > f(0); f.test_dynamic_policy(); @@ -432,7 +458,7 @@ TEST(TEST_CATEGORY, range_scan) { TestRange > f(3); f.test_scan(); } -#if !defined(KOKKOS_ENABLE_CUDA) && !defined(KOKKOS_ENABLE_ROCM) +#if !defined(KOKKOS_ENABLE_CUDA) && !defined(KOKKOS_ENABLE_HIP) { TestRange > f(3); f.test_dynamic_policy(); @@ -447,7 +473,7 @@ TEST(TEST_CATEGORY, range_scan) { TestRange > f(1001); f.test_scan(); } -#if !defined(KOKKOS_ENABLE_CUDA) && !defined(KOKKOS_ENABLE_ROCM) +#if !defined(KOKKOS_ENABLE_CUDA) && !defined(KOKKOS_ENABLE_HIP) { TestRange > f(1001); f.test_dynamic_policy(); diff --git a/lib/kokkos/core/unit_test/TestRangeRequire.hpp b/lib/kokkos/core/unit_test/TestRangeRequire.hpp new file mode 100644 index 0000000000..a75af0b95b --- /dev/null +++ b/lib/kokkos/core/unit_test/TestRangeRequire.hpp @@ -0,0 +1,518 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// 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 NTESS "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 NTESS 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 + +// This file is largely duplicating TestRange.hpp but it applies +// Kokkos::Experimental require at every place where a parallel +// operation is executed. + +namespace Test { + +namespace { + +template +struct TestRangeRequire { + typedef int value_type; ///< typedef required for the parallel_reduce + + typedef Kokkos::View view_type; + + view_type m_flags; + + struct VerifyInitTag {}; + struct ResetTag {}; + struct VerifyResetTag {}; + struct OffsetTag {}; + struct VerifyOffsetTag {}; + + int N; + static const int offset = 13; + TestRangeRequire(const size_t N_) + : m_flags(Kokkos::ViewAllocateWithoutInitializing("flags"), N_), N(N_) {} + + void test_for() { + typename view_type::HostMirror host_flags = + Kokkos::create_mirror_view(m_flags); + + Kokkos::parallel_for( + Kokkos::Experimental::require( + Kokkos::RangePolicy(0, N), Property()), + *this); + +#if defined(KOKKOS_ENABLE_PROFILING) + { + typedef TestRangeRequire ThisType; + std::string label("parallel_for"); + Kokkos::Impl::ParallelConstructName pcn(label); + ASSERT_EQ(pcn.get(), label); + std::string empty_label(""); + Kokkos::Impl::ParallelConstructName empty_pcn( + empty_label); + ASSERT_EQ(empty_pcn.get(), typeid(ThisType).name()); + } +#endif + + Kokkos::parallel_for( + Kokkos::Experimental::require( + Kokkos::RangePolicy(0, N), + Property()), + *this); + +#if defined(KOKKOS_ENABLE_PROFILING) + { + typedef TestRangeRequire ThisType; + std::string label("parallel_for"); + Kokkos::Impl::ParallelConstructName pcn(label); + ASSERT_EQ(pcn.get(), label); + std::string empty_label(""); + Kokkos::Impl::ParallelConstructName empty_pcn( + empty_label); + ASSERT_EQ(empty_pcn.get(), std::string(typeid(ThisType).name()) + "/" + + typeid(VerifyInitTag).name()); + } +#endif + + Kokkos::deep_copy(host_flags, m_flags); + + int error_count = 0; + for (int i = 0; i < N; ++i) { + if (int(i) != host_flags(i)) ++error_count; + } + ASSERT_EQ(error_count, int(0)); + + Kokkos::parallel_for( + Kokkos::Experimental::require( + Kokkos::RangePolicy(0, N), + Property()), + *this); + Kokkos::parallel_for( + std::string("TestKernelFor"), + Kokkos::Experimental::require( + Kokkos::RangePolicy(0, N), + Property()), + *this); + + Kokkos::deep_copy(host_flags, m_flags); + + error_count = 0; + for (int i = 0; i < N; ++i) { + if (int(2 * i) != host_flags(i)) ++error_count; + } + ASSERT_EQ(error_count, int(0)); + + Kokkos::parallel_for( + Kokkos::Experimental::require( + Kokkos::RangePolicy(offset, + N + offset), + Property()), + *this); + Kokkos::parallel_for( + std::string("TestKernelFor"), + Kokkos::Experimental::require( + Kokkos::RangePolicy, + VerifyOffsetTag>(0, N), + Property()), + *this); + + Kokkos::deep_copy(host_flags, m_flags); + + error_count = 0; + for (int i = 0; i < N; ++i) { + if (i + offset != host_flags(i)) ++error_count; + } + ASSERT_EQ(error_count, int(0)); + } + + KOKKOS_INLINE_FUNCTION + void operator()(const int i) const { m_flags(i) = i; } + + KOKKOS_INLINE_FUNCTION + void operator()(const VerifyInitTag &, const int i) const { + if (i != m_flags(i)) { + printf("TestRangeRequire::test_for error at %d != %d\n", i, m_flags(i)); + } + } + + KOKKOS_INLINE_FUNCTION + void operator()(const ResetTag &, const int i) const { + m_flags(i) = 2 * m_flags(i); + } + + KOKKOS_INLINE_FUNCTION + void operator()(const VerifyResetTag &, const int i) const { + if (2 * i != m_flags(i)) { + printf("TestRangeRequire::test_for error at %d != %d\n", i, m_flags(i)); + } + } + + KOKKOS_INLINE_FUNCTION + void operator()(const OffsetTag &, const int i) const { + m_flags(i - offset) = i; + } + + KOKKOS_INLINE_FUNCTION + void operator()(const VerifyOffsetTag &, const int i) const { + if (i + offset != m_flags(i)) { + printf("TestRangeRequire::test_for error at %d != %d\n", i + offset, + m_flags(i)); + } + } + + //---------------------------------------- + + void test_reduce() { + int total = 0; + + Kokkos::parallel_for( + Kokkos::Experimental::require( + Kokkos::RangePolicy(0, N), Property()), + *this); + + Kokkos::parallel_reduce( + "TestKernelReduce", + Kokkos::Experimental::require( + Kokkos::RangePolicy(0, N), Property()), + *this, total); + // sum( 0 .. N-1 ) + ASSERT_EQ(size_t((N - 1) * (N) / 2), size_t(total)); + + Kokkos::parallel_reduce( + Kokkos::Experimental::require( + Kokkos::RangePolicy(offset, + N + offset), + Property()), + *this, total); + // sum( 1 .. N ) + ASSERT_EQ(size_t((N) * (N + 1) / 2), size_t(total)); + } + + KOKKOS_INLINE_FUNCTION + void operator()(const int i, value_type &update) const { + update += m_flags(i); + } + + KOKKOS_INLINE_FUNCTION + void operator()(const OffsetTag &, const int i, value_type &update) const { + update += 1 + m_flags(i - offset); + } + + //---------------------------------------- + + void test_scan() { + Kokkos::parallel_for(Kokkos::RangePolicy(0, N), + *this); + + Kokkos::parallel_scan( + "TestKernelScan", + Kokkos::RangePolicy(0, N), *this); + + int total = 0; + Kokkos::parallel_scan( + "TestKernelScanWithTotal", + Kokkos::RangePolicy(0, N), *this, + total); + ASSERT_EQ(size_t((N - 1) * (N) / 2), size_t(total)); // sum( 0 .. N-1 ) + } + + KOKKOS_INLINE_FUNCTION + void operator()(const OffsetTag &, const int i, value_type &update, + bool final) const { + update += m_flags(i); + + if (final) { + if (update != (i * (i + 1)) / 2) { + printf("TestRangeRequire::test_scan error %d : %d != %d\n", i, + (i * (i + 1)) / 2, m_flags(i)); + } + } + } + + void test_dynamic_policy() { +#if defined(KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA) + auto const N_no_implicit_capture = N; + typedef Kokkos::RangePolicy > + policy_t; + + { + Kokkos::View > + count("Count", ExecSpace::concurrency()); + Kokkos::View a("A", N); + + Kokkos::parallel_for( + policy_t(0, N), KOKKOS_LAMBDA(const int &i) { + for (int k = 0; k < (i < N_no_implicit_capture / 2 ? 1 : 10000); + k++) { + a(i)++; + } +#ifdef KOKKOS_ENABLE_DEPRECATED_CODE + count(ExecSpace::hardware_thread_id())++; +#else + count( ExecSpace::impl_hardware_thread_id() )++; +#endif + }); + + int error = 0; + Kokkos::parallel_reduce( + Kokkos::RangePolicy(0, N), + KOKKOS_LAMBDA(const int &i, int &lsum) { + lsum += (a(i) != (i < N_no_implicit_capture / 2 ? 1 : 10000)); + }, + error); + ASSERT_EQ(error, 0); + + if ((ExecSpace::concurrency() > (int)1) && + (N > static_cast(4 * ExecSpace::concurrency()))) { + size_t min = N; + size_t max = 0; + for (int t = 0; t < ExecSpace::concurrency(); t++) { + if (count(t) < min) min = count(t); + if (count(t) > max) max = count(t); + } + ASSERT_TRUE(min < max); + + // if ( ExecSpace::concurrency() > 2 ) { + // ASSERT_TRUE( 2 * min < max ); + //} + } + } + + { + Kokkos::View > + count("Count", ExecSpace::concurrency()); + Kokkos::View a("A", N); + + int sum = 0; + Kokkos::parallel_reduce( + policy_t(0, N), + KOKKOS_LAMBDA(const int &i, int &lsum) { + for (int k = 0; k < (i < N_no_implicit_capture / 2 ? 1 : 10000); + k++) { + a(i)++; + } +#ifdef KOKKOS_ENABLE_DEPRECATED_CODE + count(ExecSpace::hardware_thread_id())++; +#else + count(ExecSpace::impl_hardware_thread_id())++; +#endif + lsum++; + }, + sum); + ASSERT_EQ(sum, N); + + int error = 0; + Kokkos::parallel_reduce( + Kokkos::RangePolicy(0, N), + KOKKOS_LAMBDA(const int &i, int &lsum) { + lsum += (a(i) != (i < N_no_implicit_capture / 2 ? 1 : 10000)); + }, + error); + ASSERT_EQ(error, 0); + + if ((ExecSpace::concurrency() > (int)1) && + (N > static_cast(4 * ExecSpace::concurrency()))) { + size_t min = N; + size_t max = 0; + for (int t = 0; t < ExecSpace::concurrency(); t++) { + if (count(t) < min) min = count(t); + if (count(t) > max) max = count(t); + } + ASSERT_TRUE(min < max); + + // if ( ExecSpace::concurrency() > 2 ) { + // ASSERT_TRUE( 2 * min < max ); + //} + } + } +#endif + } +}; + +} // namespace + +TEST(TEST_CATEGORY, range_for_require) { + using Property = Kokkos::Experimental::WorkItemProperty::HintLightWeight_t; + { + TestRangeRequire, Property> + f(0); + f.test_for(); + } + { + TestRangeRequire, + Property> + f(0); + f.test_for(); + } + + { + TestRangeRequire, Property> + f(2); + f.test_for(); + } + { + TestRangeRequire, + Property> + f(3); + f.test_for(); + } + + { + TestRangeRequire, Property> + f(1000); + f.test_for(); + } + { + TestRangeRequire, + Property> + f(1001); + f.test_for(); + } +} + +TEST(TEST_CATEGORY, range_reduce_require) { + using Property = Kokkos::Experimental::WorkItemProperty::HintLightWeight_t; + { + TestRangeRequire, Property> + f(0); + f.test_reduce(); + } + { + TestRangeRequire, + Property> + f(0); + f.test_reduce(); + } + + { + TestRangeRequire, Property> + f(2); + f.test_reduce(); + } + { + TestRangeRequire, + Property> + f(3); + f.test_reduce(); + } + + { + TestRangeRequire, Property> + f(1000); + f.test_reduce(); + } + { + TestRangeRequire, + Property> + f(1001); + f.test_reduce(); + } +} + +#ifndef KOKKOS_ENABLE_OPENMPTARGET +TEST(TEST_CATEGORY, range_scan_require) { + using Property = Kokkos::Experimental::WorkItemProperty::HintLightWeight_t; + { + TestRangeRequire, Property> + f(0); + f.test_scan(); + } + { + TestRangeRequire, + Property> + f(0); + f.test_scan(); + } +#if !defined(KOKKOS_ENABLE_CUDA) && !defined(KOKKOS_ENABLE_HIP) + { + TestRangeRequire, + Property> + f(0); + f.test_dynamic_policy(); + } +#endif + + { + TestRangeRequire, Property> + f(2); + f.test_scan(); + } + { + TestRangeRequire, + Property> + f(3); + f.test_scan(); + } +#if !defined(KOKKOS_ENABLE_CUDA) && !defined(KOKKOS_ENABLE_HIP) + { + TestRangeRequire, + Property> + f(3); + f.test_dynamic_policy(); + } +#endif + + { + TestRangeRequire, Property> + f(1000); + f.test_scan(); + } + { + TestRangeRequire, + Property> + f(1001); + f.test_scan(); + } +#if !defined(KOKKOS_ENABLE_CUDA) && !defined(KOKKOS_ENABLE_HIP) + { + TestRangeRequire, + Property> + f(1001); + f.test_dynamic_policy(); + } +#endif +} +#endif +} // namespace Test diff --git a/lib/kokkos/core/unit_test/TestReduce.hpp b/lib/kokkos/core/unit_test/TestReduce.hpp index 6c518429a0..d63d5e8d4a 100644 --- a/lib/kokkos/core/unit_test/TestReduce.hpp +++ b/lib/kokkos/core/unit_test/TestReduce.hpp @@ -95,12 +95,12 @@ class ReduceFunctor { }; template -class ReduceFunctorFinal : public ReduceFunctor { +class ReduceFunctorFinal : public ReduceFunctor { public: - typedef typename ReduceFunctor::value_type value_type; + typedef typename ReduceFunctor::value_type value_type; KOKKOS_INLINE_FUNCTION - ReduceFunctorFinal(const size_t n) : ReduceFunctor(n) {} + ReduceFunctorFinal(const size_t n) : ReduceFunctor(n) {} KOKKOS_INLINE_FUNCTION void final(value_type& dst) const { @@ -198,11 +198,11 @@ class RuntimeReduceMinMax { template class RuntimeReduceFunctorFinal - : public RuntimeReduceFunctor { + : public RuntimeReduceFunctor { public: - typedef RuntimeReduceFunctor base_type; + typedef RuntimeReduceFunctor base_type; typedef typename base_type::value_type value_type; - typedef long scalar_type; + typedef int64_t scalar_type; RuntimeReduceFunctorFinal(const size_t theNwork, const size_t count) : base_type(theNwork, count) {} @@ -237,9 +237,8 @@ class TestReduce { value_type result[Repeat]; - const unsigned long nw = nwork; - const unsigned long nsum = - nw % 2 ? nw * ((nw + 1) / 2) : (nw / 2) * (nw + 1); + const uint64_t nw = nwork; + const uint64_t nsum = nw % 2 ? nw * ((nw + 1) / 2) : (nw / 2) * (nw + 1); for (unsigned i = 0; i < Repeat; ++i) { Kokkos::parallel_reduce(nwork, functor_type(nwork), result[i]); @@ -247,7 +246,7 @@ class TestReduce { for (unsigned i = 0; i < Repeat; ++i) { for (unsigned j = 0; j < Count; ++j) { - const unsigned long correct = 0 == j % 3 ? nw : nsum; + const uint64_t correct = 0 == j % 3 ? nw : nsum; ASSERT_EQ((ScalarType)correct, result[i].value[j]); } } @@ -262,9 +261,8 @@ class TestReduce { value_type result[Repeat]; - const unsigned long nw = nwork; - const unsigned long nsum = - nw % 2 ? nw * ((nw + 1) / 2) : (nw / 2) * (nw + 1); + const uint64_t nw = nwork; + const uint64_t nsum = nw % 2 ? nw * ((nw + 1) / 2) : (nw / 2) * (nw + 1); for (unsigned i = 0; i < Repeat; ++i) { if (i % 2 == 0) { @@ -277,7 +275,7 @@ class TestReduce { for (unsigned i = 0; i < Repeat; ++i) { for (unsigned j = 0; j < Count; ++j) { - const unsigned long correct = 0 == j % 3 ? nw : nsum; + const uint64_t correct = 0 == j % 3 ? nw : nsum; ASSERT_EQ((ScalarType)correct, -result[i].value[j]); } } @@ -305,9 +303,8 @@ class TestReduceDynamic { ScalarType result[Repeat][Count]; - const unsigned long nw = nwork; - const unsigned long nsum = - nw % 2 ? nw * ((nw + 1) / 2) : (nw / 2) * (nw + 1); + const uint64_t nw = nwork; + const uint64_t nsum = nw % 2 ? nw * ((nw + 1) / 2) : (nw / 2) * (nw + 1); for (unsigned i = 0; i < Repeat; ++i) { if (i % 2 == 0) { @@ -320,7 +317,7 @@ class TestReduceDynamic { for (unsigned i = 0; i < Repeat; ++i) { for (unsigned j = 0; j < Count; ++j) { - const unsigned long correct = 0 == j % 3 ? nw : nsum; + const uint64_t correct = 0 == j % 3 ? nw : nsum; ASSERT_EQ((ScalarType)correct, result[i][j]); } } @@ -351,7 +348,7 @@ class TestReduceDynamic { const ScalarType correct = (j % 2) ? amax : amin; ASSERT_EQ((ScalarType)correct, result[i][j]); } else { - const unsigned long correct = j % 2 ? 1 : nwork; + const uint64_t correct = j % 2 ? 1 : nwork; ASSERT_EQ((ScalarType)correct, result[i][j]); } } @@ -366,9 +363,8 @@ class TestReduceDynamic { typename functor_type::scalar_type result[Repeat][Count]; - const unsigned long nw = nwork; - const unsigned long nsum = - nw % 2 ? nw * ((nw + 1) / 2) : (nw / 2) * (nw + 1); + const uint64_t nw = nwork; + const uint64_t nsum = nw % 2 ? nw * ((nw + 1) / 2) : (nw / 2) * (nw + 1); for (unsigned i = 0; i < Repeat; ++i) { if (i % 2 == 0) { @@ -381,7 +377,7 @@ class TestReduceDynamic { for (unsigned i = 0; i < Repeat; ++i) { for (unsigned j = 0; j < Count; ++j) { - const unsigned long correct = 0 == j % 3 ? nw : nsum; + const uint64_t correct = 0 == j % 3 ? nw : nsum; ASSERT_EQ((ScalarType)correct, -result[i][j]); } } @@ -405,9 +401,8 @@ class TestReduceDynamicView { const unsigned CountLimit = 23; - const unsigned long nw = nwork; - const unsigned long nsum = - nw % 2 ? nw * ((nw + 1) / 2) : (nw / 2) * (nw + 1); + const uint64_t nw = nwork; + const uint64_t nsum = nw % 2 ? nw * ((nw + 1) / 2) : (nw / 2) * (nw + 1); for (unsigned count = 0; count < CountLimit; ++count) { result_type result("result", count); @@ -425,7 +420,7 @@ class TestReduceDynamicView { } for (unsigned j = 0; j < count; ++j) { - const unsigned long correct = 0 == j % 3 ? nw : nsum; + const uint64_t correct = 0 == j % 3 ? nw : nsum; ASSERT_EQ(host_result(j), (ScalarType)correct); host_result(j) = 0; } @@ -435,9 +430,9 @@ class TestReduceDynamicView { } // namespace -TEST(TEST_CATEGORY, long_reduce) { - TestReduce(0); - TestReduce(1000000); +TEST(TEST_CATEGORY, int64_t_reduce) { + TestReduce(0); + TestReduce(1000000); } TEST(TEST_CATEGORY, double_reduce) { @@ -445,9 +440,9 @@ TEST(TEST_CATEGORY, double_reduce) { TestReduce(1000000); } -TEST(TEST_CATEGORY, long_reduce_dynamic) { - TestReduceDynamic(0); - TestReduceDynamic(1000000); +TEST(TEST_CATEGORY, int64_t_reduce_dynamic) { + TestReduceDynamic(0); + TestReduceDynamic(1000000); } TEST(TEST_CATEGORY, double_reduce_dynamic) { @@ -455,9 +450,9 @@ TEST(TEST_CATEGORY, double_reduce_dynamic) { TestReduceDynamic(1000000); } -TEST(TEST_CATEGORY, long_reduce_dynamic_view) { - TestReduceDynamicView(0); - TestReduceDynamicView(1000000); +TEST(TEST_CATEGORY, int64_t_reduce_dynamic_view) { + TestReduceDynamicView(0); + TestReduceDynamicView(1000000); } } // namespace Test diff --git a/lib/kokkos/core/unit_test/TestReduceCombinatorical.hpp b/lib/kokkos/core/unit_test/TestReduceCombinatorical.hpp index a03dbd1141..fe85f360cb 100644 --- a/lib/kokkos/core/unit_test/TestReduceCombinatorical.hpp +++ b/lib/kokkos/core/unit_test/TestReduceCombinatorical.hpp @@ -467,10 +467,10 @@ struct TestReduceCombinatoricalInstantiation { } template - static void AddLambdaRange(Kokkos::InvalidType, Args... args) {} + static void AddLambdaRange(Kokkos::InvalidType, Args... /*args*/) {} template - static void AddLambdaTeam(Kokkos::InvalidType, Args... args) {} + static void AddLambdaTeam(Kokkos::InvalidType, Args... /*args*/) {} template static void AddFunctor(Args... args) { diff --git a/lib/kokkos/core/unit_test/TestResize.hpp b/lib/kokkos/core/unit_test/TestResize.hpp index 14d1295538..32a85f03e9 100644 --- a/lib/kokkos/core/unit_test/TestResize.hpp +++ b/lib/kokkos/core/unit_test/TestResize.hpp @@ -71,7 +71,7 @@ void impl_testResize() { typedef Kokkos::View view_type; view_type view_1d("view_1d", sizes[0]); const int* oldPointer = view_1d.data(); - EXPECT_TRUE(oldPointer != NULL); + EXPECT_TRUE(oldPointer != nullptr); resize_dispatch(Tag{}, view_1d, sizes[0]); const int* newPointer = view_1d.data(); EXPECT_TRUE(oldPointer == newPointer); @@ -80,7 +80,7 @@ void impl_testResize() { typedef Kokkos::View view_type; view_type view_2d("view_2d", sizes[0], sizes[1]); const int* oldPointer = view_2d.data(); - EXPECT_TRUE(oldPointer != NULL); + EXPECT_TRUE(oldPointer != nullptr); resize_dispatch(Tag{}, view_2d, sizes[0], sizes[1]); const int* newPointer = view_2d.data(); EXPECT_TRUE(oldPointer == newPointer); @@ -89,7 +89,7 @@ void impl_testResize() { typedef Kokkos::View view_type; view_type view_3d("view_3d", sizes[0], sizes[1], sizes[2]); const int* oldPointer = view_3d.data(); - EXPECT_TRUE(oldPointer != NULL); + EXPECT_TRUE(oldPointer != nullptr); resize_dispatch(Tag{}, view_3d, sizes[0], sizes[1], sizes[2]); const int* newPointer = view_3d.data(); EXPECT_TRUE(oldPointer == newPointer); @@ -98,7 +98,7 @@ void impl_testResize() { typedef Kokkos::View view_type; view_type view_4d("view_4d", sizes[0], sizes[1], sizes[2], sizes[3]); const int* oldPointer = view_4d.data(); - EXPECT_TRUE(oldPointer != NULL); + EXPECT_TRUE(oldPointer != nullptr); resize_dispatch(Tag{}, view_4d, sizes[0], sizes[1], sizes[2], sizes[3]); const int* newPointer = view_4d.data(); EXPECT_TRUE(oldPointer == newPointer); @@ -108,7 +108,7 @@ void impl_testResize() { view_type view_5d("view_5d", sizes[0], sizes[1], sizes[2], sizes[3], sizes[4]); const int* oldPointer = view_5d.data(); - EXPECT_TRUE(oldPointer != NULL); + EXPECT_TRUE(oldPointer != nullptr); resize_dispatch(Tag{}, view_5d, sizes[0], sizes[1], sizes[2], sizes[3], sizes[4]); const int* newPointer = view_5d.data(); @@ -119,7 +119,7 @@ void impl_testResize() { view_type view_6d("view_6d", sizes[0], sizes[1], sizes[2], sizes[3], sizes[4], sizes[5]); const int* oldPointer = view_6d.data(); - EXPECT_TRUE(oldPointer != NULL); + EXPECT_TRUE(oldPointer != nullptr); resize_dispatch(Tag{}, view_6d, sizes[0], sizes[1], sizes[2], sizes[3], sizes[4], sizes[5]); const int* newPointer = view_6d.data(); @@ -130,7 +130,7 @@ void impl_testResize() { view_type view_7d("view_7d", sizes[0], sizes[1], sizes[2], sizes[3], sizes[4], sizes[5], sizes[6]); const int* oldPointer = view_7d.data(); - EXPECT_TRUE(oldPointer != NULL); + EXPECT_TRUE(oldPointer != nullptr); resize_dispatch(Tag{}, view_7d, sizes[0], sizes[1], sizes[2], sizes[3], sizes[4], sizes[5], sizes[6]); const int* newPointer = view_7d.data(); @@ -141,7 +141,7 @@ void impl_testResize() { view_type view_8d("view_8d", sizes[0], sizes[1], sizes[2], sizes[3], sizes[4], sizes[5], sizes[6], sizes[7]); const int* oldPointer = view_8d.data(); - EXPECT_TRUE(oldPointer != NULL); + EXPECT_TRUE(oldPointer != nullptr); resize_dispatch(Tag{}, view_8d, sizes[0], sizes[1], sizes[2], sizes[3], sizes[4], sizes[5], sizes[6], sizes[7]); const int* newPointer = view_8d.data(); diff --git a/lib/kokkos/core/unit_test/TestScan.hpp b/lib/kokkos/core/unit_test/TestScan.hpp index 483f186880..f7ebbb62a3 100644 --- a/lib/kokkos/core/unit_test/TestScan.hpp +++ b/lib/kokkos/core/unit_test/TestScan.hpp @@ -50,7 +50,7 @@ namespace Test { template struct TestScan { typedef Device execution_space; - typedef long int value_type; + typedef int64_t value_type; Kokkos::View > errors; @@ -98,10 +98,12 @@ struct TestScan { Kokkos::parallel_scan(N, *this); - long long int total = 0; + int64_t total = 0; Kokkos::parallel_scan(N, *this, total); - run_check(size_t((N + 1) * N / 2), size_t(total)); + // We can't return a value in a constructor so use a lambda as wrapper to + // ignore it. + [&] { ASSERT_EQ(size_t((N + 1) * N / 2), size_t(total)); }(); check_error(); } @@ -129,10 +131,6 @@ struct TestScan { (void)TestScan(i); } } - - void run_check(const size_t& expected, const size_t& actual) { - ASSERT_EQ(expected, actual); - } }; TEST(TEST_CATEGORY, scan) { diff --git a/lib/kokkos/core/unit_test/TestSharedAlloc.hpp b/lib/kokkos/core/unit_test/TestSharedAlloc.hpp index d284b7d61e..1b67e29d70 100644 --- a/lib/kokkos/core/unit_test/TestSharedAlloc.hpp +++ b/lib/kokkos/core/unit_test/TestSharedAlloc.hpp @@ -116,7 +116,7 @@ void test_shared_alloc() { #endif Kokkos::parallel_for(range, [=](size_t i) { - while (0 != + while (nullptr != (r[i] = static_cast(RecordBase::decrement(r[i])))) { #ifdef KOKKOS_DEBUG if (r[i]->use_count() == 1) RecordBase::is_sane(r[i]); @@ -157,7 +157,7 @@ void test_shared_alloc() { #endif Kokkos::parallel_for(range, [=](size_t i) { - while (0 != + while (nullptr != (r[i] = static_cast(RecordBase::decrement(r[i])))) { #ifdef KOKKOS_DEBUG if (r[i]->use_count() == 1) RecordBase::is_sane(r[i]); diff --git a/lib/kokkos/core/unit_test/TestTaskScheduler.hpp b/lib/kokkos/core/unit_test/TestTaskScheduler.hpp index 9f593a00fd..ebfdcf1df3 100644 --- a/lib/kokkos/core/unit_test/TestTaskScheduler.hpp +++ b/lib/kokkos/core/unit_test/TestTaskScheduler.hpp @@ -843,11 +843,14 @@ struct TestMultipleDependence { #undef TEST_SCHEDULER #undef TEST_SCHEDULER_SUFFIX +// KOKKOS WORKAROUND WIN32: Theses tests hang with msvc +#ifndef _WIN32 #define TEST_SCHEDULER_SUFFIX _chase_lev #define TEST_SCHEDULER Kokkos::ChaseLevTaskScheduler #include "TestTaskScheduler_single.hpp" #undef TEST_SCHEDULER #undef TEST_SCHEDULER_SUFFIX +#endif #if 0 #define TEST_SCHEDULER_SUFFIX _fixed_mempool diff --git a/lib/kokkos/core/unit_test/TestTeam.hpp b/lib/kokkos/core/unit_test/TestTeam.hpp index e19c1c160d..d1ee003969 100644 --- a/lib/kokkos/core/unit_test/TestTeam.hpp +++ b/lib/kokkos/core/unit_test/TestTeam.hpp @@ -100,7 +100,7 @@ struct TestTeamPolicy { struct NoOpTag {}; KOKKOS_INLINE_FUNCTION - void operator()(const NoOpTag &, const team_member &member) const {} + void operator()(const NoOpTag &, const team_member & /*member*/) const {} static void test_small_league_size() { int bs = 8; // batch size (number of elements per batch) @@ -139,7 +139,7 @@ struct TestTeamPolicy { struct ReduceTag {}; - typedef long value_type; + typedef int64_t value_type; KOKKOS_INLINE_FUNCTION void operator()(const team_member &member, value_type &update) const { @@ -164,9 +164,9 @@ struct TestTeamPolicy { policy_type_reduce(league_size, 1) .team_size_max(functor, Kokkos::ParallelReduceTag()); - const long N = team_size * league_size; + const int64_t N = team_size * league_size; - long total = 0; + int64_t total = 0; Kokkos::parallel_reduce(policy_type(league_size, team_size), functor, total); @@ -263,9 +263,8 @@ class TestReduceTeam { value_type result[Repeat]; - const unsigned long nw = nwork; - const unsigned long nsum = - nw % 2 ? nw * ((nw + 1) / 2) : (nw / 2) * (nw + 1); + const uint64_t nw = nwork; + const uint64_t nsum = nw % 2 ? nw * ((nw + 1) / 2) : (nw / 2) * (nw + 1); policy_type team_exec(nw, 1); @@ -284,7 +283,7 @@ class TestReduceTeam { for (unsigned i = 0; i < Repeat; ++i) { for (unsigned j = 0; j < Count; ++j) { - const unsigned long correct = 0 == j % 3 ? nw : nsum; + const uint64_t correct = 0 == j % 3 ? nw : nsum; ASSERT_EQ((ScalarType)correct, result[i].value[j]); } } @@ -302,7 +301,7 @@ class ScanTeamFunctor { public: typedef DeviceType execution_space; typedef Kokkos::TeamPolicy policy_type; - typedef long int value_type; + typedef int64_t value_type; Kokkos::View accum; Kokkos::View total; @@ -319,7 +318,7 @@ class ScanTeamFunctor { } struct JoinMax { - typedef long int value_type; + typedef int64_t value_type; KOKKOS_INLINE_FUNCTION void join(value_type volatile &dst, @@ -332,31 +331,31 @@ class ScanTeamFunctor { void operator()(const typename policy_type::member_type ind, value_type &error) const { if (0 == ind.league_rank() && 0 == ind.team_rank()) { - const long int thread_count = ind.league_size() * ind.team_size(); - total() = (thread_count * (thread_count + 1)) / 2; + const int64_t thread_count = ind.league_size() * ind.team_size(); + total() = (thread_count * (thread_count + 1)) / 2; } // Team max: - int long m = (long int)(ind.league_rank() + ind.team_rank()); - ind.team_reduce(Kokkos::Max(m)); + int64_t m = (int64_t)(ind.league_rank() + ind.team_rank()); + ind.team_reduce(Kokkos::Max(m)); if (m != ind.league_rank() + (ind.team_size() - 1)) { printf( "ScanTeamFunctor[%d.%d of %d.%d] reduce_max_answer(%ld) != " "reduce_max(%ld)\n", ind.league_rank(), ind.team_rank(), ind.league_size(), - ind.team_size(), - (long int)(ind.league_rank() + (ind.team_size() - 1)), m); + ind.team_size(), (int64_t)(ind.league_rank() + (ind.team_size() - 1)), + m); } // Scan: - const long int answer = (ind.league_rank() + 1) * ind.team_rank() + - (ind.team_rank() * (ind.team_rank() + 1)) / 2; + const int64_t answer = (ind.league_rank() + 1) * ind.team_rank() + + (ind.team_rank() * (ind.team_rank() + 1)) / 2; - const long int result = + const int64_t result = ind.team_scan(ind.league_rank() + 1 + ind.team_rank() + 1); - const long int result2 = + const int64_t result2 = ind.team_scan(ind.league_rank() + 1 + ind.team_rank() + 1); if (answer != result || answer != result2) { @@ -369,7 +368,7 @@ class ScanTeamFunctor { error = 1; } - const long int thread_rank = + const int64_t thread_rank = ind.team_rank() + ind.team_size() * ind.league_rank(); ind.team_scan(1 + thread_rank, accum.data()); } @@ -379,14 +378,14 @@ template class TestScanTeam { public: typedef DeviceType execution_space; - typedef long int value_type; + typedef int64_t value_type; typedef Kokkos::TeamPolicy policy_type; typedef Test::ScanTeamFunctor functor_type; TestScanTeam(const size_t nteam) { run_test(nteam); } void run_test(const size_t nteam) { - typedef Kokkos::View + typedef Kokkos::View result_type; const unsigned REPEAT = 100000; @@ -405,9 +404,9 @@ class TestScanTeam { nteam, team_exec.team_size_max(functor, Kokkos::ParallelReduceTag())); for (unsigned i = 0; i < Repeat; ++i) { - long int accum = 0; - long int total = 0; - long int error = 0; + int64_t accum = 0; + int64_t total = 0; + int64_t error = 0; Kokkos::deep_copy(functor.accum, total); Kokkos::parallel_reduce(team_exec, functor, result_type(&error)); @@ -445,7 +444,7 @@ struct SharedTeamFunctor { shared_int_array_type; // Tell how much shared memory will be required by this functor. - inline unsigned team_shmem_size(int team_size) const { + inline unsigned team_shmem_size(int /*team_size*/) const { return shared_int_array_type::shmem_size(SHARED_COUNT) + shared_int_array_type::shmem_size(SHARED_COUNT); } @@ -462,7 +461,7 @@ struct SharedTeamFunctor { "member( %d/%d , %d/%d ) Failed to allocate shared memory of size " "%lu\n", ind.league_rank(), ind.league_size(), ind.team_rank(), - ind.team_size(), static_cast(SHARED_COUNT)); + ind.team_size(), static_cast(SHARED_COUNT)); ++update; // Failure to allocate is an error. } else { @@ -523,7 +522,6 @@ struct TestSharedTeam { namespace Test { #if defined(KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA) -#if !defined(KOKKOS_ENABLE_CUDA) || (8000 <= CUDA_VERSION) template struct TestLambdaSharedTeam { TestLambdaSharedTeam() { run(); } @@ -568,7 +566,7 @@ struct TestLambdaSharedTeam { if ((shared_A.data() == nullptr && SHARED_COUNT > 0) || (shared_B.data() == nullptr && SHARED_COUNT > 0)) { printf("Failed to allocate shared memory of size %lu\n", - static_cast(SHARED_COUNT)); + static_cast(SHARED_COUNT)); ++update; // Failure to allocate is an error. } else { @@ -601,7 +599,6 @@ struct TestLambdaSharedTeam { } }; #endif -#endif } // namespace Test @@ -636,7 +633,7 @@ struct ScratchTeamFunctor { (scratch_A.data() == nullptr && SHARED_TEAM_COUNT > 0) || (scratch_B.data() == nullptr && SHARED_THREAD_COUNT > 0)) { printf("Failed to allocate shared memory of size %lu\n", - static_cast(SHARED_TEAM_COUNT)); + static_cast(SHARED_TEAM_COUNT)); ++update; // Failure to allocate is an error. } else { @@ -739,22 +736,22 @@ KOKKOS_INLINE_FUNCTION int test_team_mulit_level_scratch_loop_body( a_thread2(team.thread_scratch(0), 16); Kokkos::View > - b_team1(team.team_scratch(1), 128000); + b_team1(team.team_scratch(1), 12800); Kokkos::View > - b_thread1(team.thread_scratch(1), 16000); + b_thread1(team.thread_scratch(1), 1600); Kokkos::View > - b_team2(team.team_scratch(1), 128000); + b_team2(team.team_scratch(1), 12800); Kokkos::View > - b_thread2(team.thread_scratch(1), 16000); + b_thread2(team.thread_scratch(1), 1600); Kokkos::View > a_team3(team.team_scratch(0), 128); Kokkos::View > a_thread3(team.thread_scratch(0), 16); Kokkos::View > - b_team3(team.team_scratch(1), 128000); + b_team3(team.team_scratch(1), 12800); Kokkos::View > - b_thread3(team.thread_scratch(1), 16000); + b_thread3(team.thread_scratch(1), 1600); // The explicit types for 0 and 128 are here to test TeamThreadRange accepting // different types for begin and end. @@ -775,7 +772,7 @@ KOKKOS_INLINE_FUNCTION int test_team_mulit_level_scratch_loop_body( team.league_rank() * 100000; }); - Kokkos::parallel_for(Kokkos::TeamThreadRange(team, 0, 128000), + Kokkos::parallel_for(Kokkos::TeamThreadRange(team, 0, 12800), [&](const int &i) { b_team1(i) = 1000000 + i + team.league_rank() * 100000; b_team2(i) = 2000000 + i + team.league_rank() * 100000; @@ -783,7 +780,7 @@ KOKKOS_INLINE_FUNCTION int test_team_mulit_level_scratch_loop_body( }); team.team_barrier(); - Kokkos::parallel_for(Kokkos::ThreadVectorRange(team, 16000), + Kokkos::parallel_for(Kokkos::ThreadVectorRange(team, 1600), [&](const int &i) { b_thread1(i) = 1000000 + 100000 * team.team_rank() + 16 - i + team.league_rank() * 100000; @@ -817,7 +814,7 @@ KOKKOS_INLINE_FUNCTION int test_team_mulit_level_scratch_loop_body( }); Kokkos::parallel_for( - Kokkos::TeamThreadRange(team, 0, 128000), [&](const int &i) { + Kokkos::TeamThreadRange(team, 0, 12800), [&](const int &i) { if (b_team1(i) != 1000000 + i + team.league_rank() * 100000) error++; if (b_team2(i) != 2000000 + i + team.league_rank() * 100000) error++; if (b_team3(i) != 3000000 + i + team.league_rank() * 100000) error++; @@ -825,7 +822,7 @@ KOKKOS_INLINE_FUNCTION int test_team_mulit_level_scratch_loop_body( team.team_barrier(); Kokkos::parallel_for( - Kokkos::ThreadVectorRange(team, 16000), [&](const int &i) { + Kokkos::ThreadVectorRange(team, 1600), [&](const int &i) { if (b_thread1(i) != 1000000 + 100000 * team.team_rank() + 16 - i + team.league_rank() * 100000) error++; @@ -879,11 +876,11 @@ struct ClassNoShmemSizeFunction { const int per_team1 = 3 * Kokkos::View< double *, ExecSpace, - Kokkos::MemoryTraits >::shmem_size(128000); + Kokkos::MemoryTraits >::shmem_size(12800); const int per_thread1 = 3 * Kokkos::View< double *, ExecSpace, - Kokkos::MemoryTraits >::shmem_size(16000); + Kokkos::MemoryTraits >::shmem_size(1600); int team_size = 8; if (team_size > ExecSpace::concurrency()) @@ -952,11 +949,11 @@ struct ClassWithShmemSizeFunction { const int per_team1 = 3 * Kokkos::View< double *, ExecSpace, - Kokkos::MemoryTraits >::shmem_size(128000); + Kokkos::MemoryTraits >::shmem_size(12800); const int per_thread1 = 3 * Kokkos::View< double *, ExecSpace, - Kokkos::MemoryTraits >::shmem_size(16000); + Kokkos::MemoryTraits >::shmem_size(1600); int team_size = 8; if (team_size > ExecSpace::concurrency()) @@ -1008,7 +1005,6 @@ struct ClassWithShmemSizeFunction { template void test_team_mulit_level_scratch_test_lambda() { #ifdef KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA -#if !defined(KOKKOS_ENABLE_CUDA) || (8000 <= CUDA_VERSION) Kokkos::View > errors; Kokkos::View d_errors("Errors"); errors = d_errors; @@ -1023,13 +1019,13 @@ void test_team_mulit_level_scratch_test_lambda() { Kokkos::MemoryTraits >::shmem_size(16); const int per_team1 = - 3 * Kokkos::View< - double *, ExecSpace, - Kokkos::MemoryTraits >::shmem_size(128000); + 3 * + Kokkos::View >::shmem_size(12800); const int per_thread1 = 3 * Kokkos::View >::shmem_size(16000); + Kokkos::MemoryTraits >::shmem_size(1600); int team_size = 8; if (team_size > ExecSpace::concurrency()) @@ -1070,7 +1066,6 @@ void test_team_mulit_level_scratch_test_lambda() { error); ASSERT_EQ(error, 0); #endif -#endif } } // namespace Test @@ -1102,7 +1097,7 @@ struct TestShmemSize { TestShmemSize() { run(); } void run() { - typedef Kokkos::View view_type; + typedef Kokkos::View view_type; size_t d1 = 5; size_t d2 = 6; @@ -1110,7 +1105,7 @@ struct TestShmemSize { size_t size = view_type::shmem_size(d1, d2, d3); - ASSERT_EQ(size, (d1 * d2 * d3 + 1) * sizeof(long)); + ASSERT_EQ(size, (d1 * d2 * d3 + 1) * sizeof(int64_t)); test_layout_stride(); } @@ -1137,16 +1132,129 @@ namespace Test { namespace { -template -struct TestTeamBroadcast { - typedef typename Kokkos::TeamPolicy::member_type - team_member; +template +struct TestTeamBroadcast; + +template +struct TestTeamBroadcast< + ExecSpace, ScheduleType, T, + typename std::enable_if<(sizeof(T) == sizeof(char)), void>::type> { + using team_member = + typename Kokkos::TeamPolicy::member_type; + using memory_space = typename ExecSpace::memory_space; + using value_type = T; + + const value_type offset; - TestTeamBroadcast(const size_t league_size) {} + TestTeamBroadcast(const size_t /*league_size*/, const value_type os_) + : offset(os_) {} struct BroadcastTag {}; - typedef long value_type; + KOKKOS_INLINE_FUNCTION + void operator()(const team_member &teamMember, value_type &update) const { + int lid = teamMember.league_rank(); + int tid = teamMember.team_rank(); + int ts = teamMember.team_size(); + + value_type parUpdate = 0; + value_type value = (value_type)(tid % 0xFF) + offset; + + // broadcast boolean and value to team from source thread + teamMember.team_broadcast(value, lid % ts); + + Kokkos::parallel_reduce( + Kokkos::TeamThreadRange(teamMember, ts), + [&](const int /*j*/, value_type &teamUpdate) { teamUpdate |= value; }, + Kokkos::BOr(parUpdate)); + + if (teamMember.team_rank() == 0) update |= parUpdate; + } + + KOKKOS_INLINE_FUNCTION + void operator()(const BroadcastTag &, const team_member &teamMember, + value_type &update) const { + int lid = teamMember.league_rank(); + int tid = teamMember.team_rank(); + int ts = teamMember.team_size(); + + value_type parUpdate = 0; + value_type value = (value_type)(tid % 0xFF) + offset; + + teamMember.team_broadcast([&](value_type &var) { var -= offset; }, value, + lid % ts); + + Kokkos::parallel_reduce( + Kokkos::TeamThreadRange(teamMember, ts), + [&](const int /*j*/, value_type &teamUpdate) { teamUpdate |= value; }, + Kokkos::BOr(parUpdate)); + + if (teamMember.team_rank() == 0) update |= parUpdate; + } + + static void test_teambroadcast(const size_t league_size, + const value_type off) { + TestTeamBroadcast functor(league_size, off); + + typedef Kokkos::TeamPolicy policy_type; + typedef Kokkos::TeamPolicy + policy_type_f; + + const int team_size = + policy_type_f(league_size, 1) + .team_size_max( + functor, + Kokkos:: + ParallelReduceTag()); // printf("team_size=%d\n",team_size); + + // team_broadcast with value + value_type total = 0; + + Kokkos::parallel_reduce(policy_type(league_size, team_size), functor, + Kokkos::BOr(total)); + + value_type expected_result = 0; + for (unsigned int i = 0; i < league_size; i++) { + value_type val = (value_type((i % team_size % 0xFF)) + off); + expected_result |= val; + } + ASSERT_EQ(expected_result, total); + // printf("team_broadcast with value --" + //"expected_result=%x," + //"total=%x\n",expected_result, total); + + // team_broadcast with function object + total = 0; + + Kokkos::parallel_reduce(policy_type_f(league_size, team_size), functor, + Kokkos::BOr(total)); + + expected_result = 0; + for (unsigned int i = 0; i < league_size; i++) { + value_type val = ((value_type)((i % team_size % 0xFF))); + expected_result |= val; + } + ASSERT_EQ(expected_result, total); + // printf("team_broadcast with function object --" + // "expected_result=%x," + // "total=%x\n",expected_result, total); + } +}; + +template +struct TestTeamBroadcast< + ExecSpace, ScheduleType, T, + typename std::enable_if<(sizeof(T) > sizeof(char)), void>::type> { + using team_member = + typename Kokkos::TeamPolicy::member_type; + using value_type = T; + + const value_type offset; + + TestTeamBroadcast(const size_t /*league_size*/, const value_type os_) + : offset(os_) {} + + struct BroadcastTag {}; KOKKOS_INLINE_FUNCTION void operator()(const team_member &teamMember, value_type &update) const { @@ -1155,16 +1263,26 @@ struct TestTeamBroadcast { int ts = teamMember.team_size(); value_type parUpdate = 0; - value_type value = tid * 3 + 1; + value_type value = (value_type)(tid * 3) + offset; + + // setValue is used to determine if the update should be + // performed at the bottom. The thread id must match the + // thread id used to broadcast the value. It is the + // thread id that matches the league rank mod team size + // this way each league rank will use a different thread id + // which is likely not 0 + bool setValue = ((lid % ts) == tid); + // broadcast boolean and value to team from source thread teamMember.team_broadcast(value, lid % ts); + teamMember.team_broadcast(setValue, lid % ts); Kokkos::parallel_reduce( Kokkos::TeamThreadRange(teamMember, ts), - [&](const int j, value_type &teamUpdate) { teamUpdate += value; }, + [&](const int /*j*/, value_type &teamUpdate) { teamUpdate += value; }, parUpdate); - if (teamMember.team_rank() == 0) update += parUpdate; + if (teamMember.team_rank() == 0 && setValue) update += parUpdate; } KOKKOS_INLINE_FUNCTION @@ -1175,21 +1293,53 @@ struct TestTeamBroadcast { int ts = teamMember.team_size(); value_type parUpdate = 0; - value_type value = tid * 3 + 1; + value_type value = (value_type)(tid * 3) + offset; + + // setValue is used to determine if the update should be + // performed at the bottom. The thread id must match the + // thread id used to broadcast the value. It is the + // thread id that matches the league rank mod team size + // this way each league rank will use a different thread id + // which is likely not 0. Note the logic is switched from + // above because the functor switches it back. + bool setValue = ((lid % ts) != tid); teamMember.team_broadcast([&](value_type &var) { var *= 2; }, value, lid % ts); + teamMember.team_broadcast([&](bool &bVar) { bVar = !bVar; }, setValue, + lid % ts); Kokkos::parallel_reduce( Kokkos::TeamThreadRange(teamMember, ts), - [&](const int j, value_type &teamUpdate) { teamUpdate += value; }, + [&](const int /*j*/, value_type &teamUpdate) { teamUpdate += value; }, parUpdate); - if (teamMember.team_rank() == 0) update += parUpdate; + if (teamMember.team_rank() == 0 && setValue) update += parUpdate; + } + + template + static inline + typename std::enable_if::value, void>::type + compare_test(ScalarType A, ScalarType B) { + if (std::is_same::value) { + ASSERT_DOUBLE_EQ((double)A, (double)B); + } else if (std::is_same::value) { + ASSERT_FLOAT_EQ((double)A, (double)B); + } else { + ASSERT_EQ(A, B); + } + } + + template + static inline + typename std::enable_if::value, void>::type + compare_test(ScalarType A, ScalarType B) { + ASSERT_EQ(A, B); } - static void test_teambroadcast(const size_t league_size) { - TestTeamBroadcast functor(league_size); + static void test_teambroadcast(const size_t league_size, + const value_type off) { + TestTeamBroadcast functor(league_size, off); typedef Kokkos::TeamPolicy policy_type; typedef Kokkos::TeamPolicy @@ -1203,20 +1353,21 @@ struct TestTeamBroadcast { ParallelReduceTag()); // printf("team_size=%d\n",team_size); // team_broadcast with value - long total = 0; + value_type total = 0; Kokkos::parallel_reduce(policy_type(league_size, team_size), functor, total); value_type expected_result = 0; for (unsigned int i = 0; i < league_size; i++) { - value_type val = ((i % team_size) * 3 + 1) * team_size; + value_type val = + (value_type((i % team_size) * 3) + off) * (value_type)team_size; expected_result += val; } - ASSERT_EQ(size_t(expected_result), - size_t(total)); // printf("team_broadcast with value -- - // expected_result=%d, - // total=%d\n",expected_result, total); + compare_test(expected_result, + total); // printf("team_broadcast with value -- + // expected_result=%d, + // total=%d\n",expected_result, total); // team_broadcast with function object total = 0; @@ -1226,13 +1377,14 @@ struct TestTeamBroadcast { expected_result = 0; for (unsigned int i = 0; i < league_size; i++) { - value_type val = ((i % team_size) * 3 + 1) * 2 * team_size; + value_type val = ((value_type)((i % team_size) * 3) + off) * + (value_type)(2 * team_size); expected_result += val; } - ASSERT_EQ(size_t(expected_result), - size_t(total)); // printf("team_broadcast with function object -- - // expected_result=%d, - // total=%d\n",expected_result, total); + compare_test(expected_result, + total); // printf("team_broadcast with function object -- + // expected_result=%d, + // total=%d\n",expected_result, total); } }; diff --git a/lib/kokkos/core/unit_test/TestTeamTeamSize.hpp b/lib/kokkos/core/unit_test/TestTeamTeamSize.hpp index 4a9b7c41a4..0703f90cf8 100644 --- a/lib/kokkos/core/unit_test/TestTeamTeamSize.hpp +++ b/lib/kokkos/core/unit_test/TestTeamTeamSize.hpp @@ -78,13 +78,13 @@ template struct FunctorFor { double static_array[S]; KOKKOS_INLINE_FUNCTION - void operator()(const typename PolicyType::member_type& team) const {} + void operator()(const typename PolicyType::member_type& /*team*/) const {} }; template struct FunctorReduce { double static_array[S]; KOKKOS_INLINE_FUNCTION - void operator()(const typename PolicyType::member_type& team, + void operator()(const typename PolicyType::member_type& /*team*/, MyArray& lval) const { for (int j = 0; j < N; j++) lval.values[j] += 1 + lval.values[0]; } @@ -191,7 +191,7 @@ struct PrintFunctor2 { }; TEST(TEST_CATEGORY, team_policy_max_scalar_without_plus_equal_k) { - using ExecSpace = Kokkos::DefaultExecutionSpace; + using ExecSpace = TEST_EXECSPACE; using ReducerType = Kokkos::MinMax; using ReducerValueType = typename ReducerType::value_type; using DynamicScheduleType = Kokkos::Schedule; diff --git a/lib/kokkos/core/unit_test/TestTeamVector.hpp b/lib/kokkos/core/unit_test/TestTeamVector.hpp index 4cf0ceaf47..c313988efc 100644 --- a/lib/kokkos/core/unit_test/TestTeamVector.hpp +++ b/lib/kokkos/core/unit_test/TestTeamVector.hpp @@ -622,7 +622,7 @@ struct functor_vec_single { Scalar value2 = 0; Kokkos::parallel_reduce( Kokkos::ThreadVectorRange(team, nStart, nEnd), - [&](int i, Scalar &val) { val += value; }, value2); + [&](int /*i*/, Scalar &val) { val += value; }, value2); if (value2 != (value * (nEnd - nStart))) { printf("FAILED vector_single broadcast %i %i %f %f\n", team.league_rank(), @@ -895,8 +895,7 @@ namespace Test { // Computes y^T*A*x // ( modified from kokkos-tutorials/GTC2016/Exercises/ThreeLevelPar ) -#if (!defined(KOKKOS_ENABLE_CUDA)) || \ - (defined(KOKKOS_ENABLE_CUDA_LAMBDA) && (8000 <= CUDA_VERSION)) +#if (!defined(KOKKOS_ENABLE_CUDA)) || defined(KOKKOS_ENABLE_CUDA_LAMBDA) template class TestTripleNestedReduce { public: diff --git a/lib/kokkos/core/unit_test/TestTeamVectorRange.hpp b/lib/kokkos/core/unit_test/TestTeamVectorRange.hpp index 71351c1981..cc83785185 100644 --- a/lib/kokkos/core/unit_test/TestTeamVectorRange.hpp +++ b/lib/kokkos/core/unit_test/TestTeamVectorRange.hpp @@ -233,7 +233,7 @@ struct functor_teamvector_for { typedef typename ExecutionSpace::scratch_memory_space shmem_space; typedef Kokkos::View shared_int; - unsigned team_shmem_size(int team_size) const { + unsigned team_shmem_size(int /*team_size*/) const { return shared_int::shmem_size(131); } diff --git a/lib/kokkos/core/unit_test/TestTemplateMetaFunctions.hpp b/lib/kokkos/core/unit_test/TestTemplateMetaFunctions.hpp index 1e25d46dfe..b9c16f506c 100644 --- a/lib/kokkos/core/unit_test/TestTemplateMetaFunctions.hpp +++ b/lib/kokkos/core/unit_test/TestTemplateMetaFunctions.hpp @@ -58,7 +58,7 @@ struct SumPlain { SumPlain(type view_) : view(view_) {} KOKKOS_INLINE_FUNCTION - void operator()(int i, Scalar& val) { val += Scalar(); } + void operator()(int /*i*/, Scalar& val) { val += Scalar(); } }; template @@ -80,7 +80,7 @@ struct SumInitJoinFinalValueType { } KOKKOS_INLINE_FUNCTION - void operator()(int i, value_type& val) const { val += value_type(); } + void operator()(int /*i*/, value_type& val) const { val += value_type(); } }; template @@ -102,7 +102,7 @@ struct SumInitJoinFinalValueType2 { } KOKKOS_INLINE_FUNCTION - void operator()(int i, value_type& val) const { val += value_type(); } + void operator()(int /*i*/, value_type& val) const { val += value_type(); } }; template @@ -157,7 +157,7 @@ struct SumWrongInitJoinFinalValueType { } KOKKOS_INLINE_FUNCTION - void operator()(int i, value_type& val) const { val += value_type(); } + void operator()(int /*i*/, value_type& val) const { val += value_type(); } }; template diff --git a/lib/kokkos/core/unit_test/TestViewAPI.hpp b/lib/kokkos/core/unit_test/TestViewAPI.hpp index 36d158d643..b9847773b6 100644 --- a/lib/kokkos/core/unit_test/TestViewAPI.hpp +++ b/lib/kokkos/core/unit_test/TestViewAPI.hpp @@ -841,6 +841,22 @@ struct TestViewMirror { ASSERT_EQ(a_org(5), a_h3(5)); } + template + static typename View::const_type view_const_cast(View const &v) { + return v; + } + + static void test_mirror_copy_const_data_type() { + using ExecutionSpace = typename DeviceType::execution_space; + int const N = 100; + Kokkos::View v("v", N); + Kokkos::deep_copy(v, 255); + auto v_m1 = Kokkos::create_mirror_view_and_copy( + Kokkos::DefaultHostExecutionSpace(), view_const_cast(v)); + auto v_m2 = Kokkos::create_mirror_view_and_copy(ExecutionSpace(), + view_const_cast(v)); + } + template struct CopyUnInit { typedef typename Kokkos::Impl::MirrorViewType< @@ -896,6 +912,7 @@ struct TestViewMirror { test_mirror_view >(); test_mirror_copy >(); test_mirror_copy >(); + test_mirror_copy_const_data_type(); test_mirror_no_initialize >(); test_mirror_no_initialize >(); } @@ -920,8 +937,6 @@ class TestViewAPI { dView4_unmanaged; typedef typename dView0::host_mirror_space host; - TestViewAPI() {} - static void run_test_view_operator_a() { { TestViewOperator f; @@ -1034,12 +1049,12 @@ class TestViewAPI { dView4 dx, dy, dz; hView4 hx, hy, hz; - ASSERT_TRUE(dx.data() == 0); - ASSERT_TRUE(dy.data() == 0); - ASSERT_TRUE(dz.data() == 0); - ASSERT_TRUE(hx.data() == 0); - ASSERT_TRUE(hy.data() == 0); - ASSERT_TRUE(hz.data() == 0); + ASSERT_TRUE(dx.data() == nullptr); + ASSERT_TRUE(dy.data() == nullptr); + ASSERT_TRUE(dz.data() == nullptr); + ASSERT_TRUE(hx.data() == nullptr); + ASSERT_TRUE(hy.data() == nullptr); + ASSERT_TRUE(hz.data() == nullptr); ASSERT_EQ(dx.extent(0), 0u); ASSERT_EQ(dy.extent(0), 0u); ASSERT_EQ(dz.extent(0), 0u); @@ -1096,11 +1111,11 @@ class TestViewAPI { ASSERT_EQ(dx.use_count(), size_t(2)); - ASSERT_FALSE(dx.data() == 0); - ASSERT_FALSE(const_dx.data() == 0); - ASSERT_FALSE(unmanaged_dx.data() == 0); - ASSERT_FALSE(unmanaged_from_ptr_dx.data() == 0); - ASSERT_FALSE(dy.data() == 0); + ASSERT_FALSE(dx.data() == nullptr); + ASSERT_FALSE(const_dx.data() == nullptr); + ASSERT_FALSE(unmanaged_dx.data() == nullptr); + ASSERT_FALSE(unmanaged_from_ptr_dx.data() == nullptr); + ASSERT_FALSE(dy.data() == nullptr); ASSERT_NE(dx, dy); ASSERT_EQ(dx.extent(0), unsigned(N0)); @@ -1139,6 +1154,7 @@ class TestViewAPI { Kokkos::deep_copy(typename hView4::execution_space(), dx, hx); Kokkos::deep_copy(typename hView4::execution_space(), dy, dx); Kokkos::deep_copy(typename hView4::execution_space(), hy, dy); + typename dView4::execution_space().fence(); for (size_t ip = 0; ip < N0; ++ip) for (size_t i1 = 0; i1 < N1; ++i1) @@ -1149,6 +1165,7 @@ class TestViewAPI { Kokkos::deep_copy(typename hView4::execution_space(), dx, T(0)); Kokkos::deep_copy(typename hView4::execution_space(), hx, dx); + typename dView4::execution_space().fence(); for (size_t ip = 0; ip < N0; ++ip) for (size_t i1 = 0; i1 < N1; ++i1) @@ -1172,6 +1189,7 @@ class TestViewAPI { Kokkos::deep_copy(typename dView4::execution_space(), dx, hx); Kokkos::deep_copy(typename dView4::execution_space(), dy, dx); Kokkos::deep_copy(typename dView4::execution_space(), hy, dy); + typename dView4::execution_space().fence(); for (size_t ip = 0; ip < N0; ++ip) for (size_t i1 = 0; i1 < N1; ++i1) @@ -1182,6 +1200,7 @@ class TestViewAPI { Kokkos::deep_copy(typename dView4::execution_space(), dx, T(0)); Kokkos::deep_copy(typename dView4::execution_space(), hx, dx); + typename dView4::execution_space().fence(); for (size_t ip = 0; ip < N0; ++ip) for (size_t i1 = 0; i1 < N1; ++i1) @@ -1233,19 +1252,19 @@ class TestViewAPI { ASSERT_NE(dx, dz); dx = dView4(); - ASSERT_TRUE(dx.data() == 0); - ASSERT_FALSE(dy.data() == 0); - ASSERT_FALSE(dz.data() == 0); + ASSERT_TRUE(dx.data() == nullptr); + ASSERT_FALSE(dy.data() == nullptr); + ASSERT_FALSE(dz.data() == nullptr); dy = dView4(); - ASSERT_TRUE(dx.data() == 0); - ASSERT_TRUE(dy.data() == 0); - ASSERT_FALSE(dz.data() == 0); + ASSERT_TRUE(dx.data() == nullptr); + ASSERT_TRUE(dy.data() == nullptr); + ASSERT_FALSE(dz.data() == nullptr); dz = dView4(); - ASSERT_TRUE(dx.data() == 0); - ASSERT_TRUE(dy.data() == 0); - ASSERT_TRUE(dz.data() == 0); + ASSERT_TRUE(dx.data() == nullptr); + ASSERT_TRUE(dy.data() == nullptr); + ASSERT_TRUE(dz.data() == nullptr); } static void run_test_deep_copy_empty() { @@ -1450,6 +1469,11 @@ class TestViewAPI { } static void run_test_error() { +#ifdef KOKKOS_ENABLE_OPENMPTARGET + if (std::is_same::value) + return; +#endif auto alloc_size = std::numeric_limits::max() - 42; try { auto should_always_fail = dView1("hello_world_failure", alloc_size); diff --git a/lib/kokkos/core/unit_test/TestViewAPI_e.hpp b/lib/kokkos/core/unit_test/TestViewAPI_e.hpp index e433535236..40ae083630 100644 --- a/lib/kokkos/core/unit_test/TestViewAPI_e.hpp +++ b/lib/kokkos/core/unit_test/TestViewAPI_e.hpp @@ -204,13 +204,13 @@ TEST(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; } + 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 int bar(Kokkos::View /*a*/) { return 4; } + static int bar(Kokkos::View /*a*/) { return 5; } static void test_function_overload() { Kokkos::View::test_function_overload(); } } // namespace Test + +#include diff --git a/lib/kokkos/core/unit_test/TestViewCopy.hpp b/lib/kokkos/core/unit_test/TestViewCopy.hpp index 27018e7f7b..6db2d3a4f6 100644 --- a/lib/kokkos/core/unit_test/TestViewCopy.hpp +++ b/lib/kokkos/core/unit_test/TestViewCopy.hpp @@ -52,124 +52,446 @@ namespace Test { namespace { -template -struct TestViewCopy { - using InExecSpace = ExecSpace; - - static void test_view_copy(const int dim0, const int dim1, const int dim2) { -#if defined(KOKKOS_ENABLE_CUDA) || defined(KOKKOS_ENABLE_ROCM) - // ExecSpace = CudaUVM, CudaHostPinned - // This test will fail at runtime with an illegal memory access if something - // goes wrong Test 1: deep_copy from host_mirror_space to ExecSpace and - // ExecSpace back to host_mirror_space - { - typedef Kokkos::View Rank4ViewType; - Rank4ViewType view_4; - view_4 = Rank4ViewType("view_4", dim0, dim1, dim2, dim2); - - typedef typename Kokkos::Impl::is_space< - InExecSpace>::host_mirror_space::execution_space host_space_type; - Kokkos::View srcView( - "srcView", dim2, dim2); - - // Strided dst view - auto dstView = - Kokkos::subview(view_4, 0, 0, Kokkos::ALL(), Kokkos::ALL()); - - // host_mirror_space to ExecSpace - Kokkos::deep_copy(dstView, srcView); - Kokkos::fence(); - - // ExecSpace to host_mirror_space - Kokkos::deep_copy(srcView, dstView); - Kokkos::fence(); +template +struct CheckResult { + using value_type = typename ViewType::non_const_value_type; + ViewType v; + value_type value; + CheckResult(ViewType v_, value_type value_) : v(v_), value(value_){}; + KOKKOS_FUNCTION + void operator()(const int i, int& lsum) const { + for (int j = 0; j < static_cast(v.extent(1)); j++) { + if (v.access(i, j) != value) lsum++; } + } +}; - // Test 2: deep_copy from Cuda to ExecSpace and ExecSpace back to Cuda - { - typedef Kokkos::View Rank4ViewType; - Rank4ViewType view_4; - view_4 = Rank4ViewType("view_4", dim0, dim1, dim2, dim2); - -#if defined(KOKKOS_ENABLE_CUDA) - typedef typename std::conditional< - Kokkos::Impl::MemorySpaceAccess< - Kokkos::CudaSpace, - typename InExecSpace::memory_space>::accessible, - Kokkos::CudaSpace, InExecSpace>::type space_type; -#endif -#if defined(KOKKOS_ENABLE_ROCM) - typedef typename std::conditional< - Kokkos::Impl::MemorySpaceAccess< - Kokkos::ROCmSpace, - typename InExecSpace::memory_space>::accessible, - Kokkos::ROCmSpace, InExecSpace>::type space_type; -#endif - Kokkos::View srcView( - "srcView", dim2, dim2); - - // Strided dst view - auto dstView = - Kokkos::subview(view_4, 0, 0, Kokkos::ALL(), Kokkos::ALL()); - - // Cuda to ExecSpace - Kokkos::deep_copy(dstView, srcView); - Kokkos::fence(); - - // ExecSpace to Cuda - Kokkos::deep_copy(srcView, dstView); - Kokkos::fence(); - } +template +bool run_check(ViewType v, typename ViewType::value_type value) { + using exec_space = typename ViewType::memory_space::execution_space; + int errors = 0; + Kokkos::fence(); + Kokkos::parallel_reduce(Kokkos::RangePolicy(0, v.extent(0)), + CheckResult(v, value), errors); + return errors == 0; +} - // Test 3: deep_copy from host_space to ExecSpace and ExecSpace back to - // host_space - { - typedef Kokkos::View Rank4ViewType; - Rank4ViewType view_4; - view_4 = Rank4ViewType("view_4", dim0, dim1, dim2, dim2); +} // namespace - typedef Kokkos::HostSpace host_space_type; - Kokkos::View srcView( - "srcView", dim2, dim2); +TEST(TEST_CATEGORY, view_copy_tests) { + int N = 10000; + int M = 10; - // Strided dst view - auto dstView = - Kokkos::subview(view_4, 0, 0, Kokkos::ALL(), Kokkos::ALL()); + Kokkos::View defaulted; + Kokkos::View a("A", N, M); + Kokkos::View b("B", N, M); + auto h_a = Kokkos::create_mirror(a); + auto h_b = Kokkos::create_mirror(b); + auto m_a = Kokkos::create_mirror_view(a); + auto s_a = Kokkos::subview(a, Kokkos::ALL, 1); + auto s_b = Kokkos::subview(b, Kokkos::ALL, 1); + auto hs_a = Kokkos::subview(h_a, Kokkos::ALL, 1); + auto hs_b = Kokkos::subview(h_b, Kokkos::ALL, 1); + auto dev = typename TEST_EXECSPACE::execution_space(); + auto host = Kokkos::DefaultHostExecutionSpace(); + + constexpr bool DevExecCanAccessHost = + Kokkos::Impl::SpaceAccessibility::accessible; + + constexpr bool HostExecCanAccessDev = Kokkos::Impl::SpaceAccessibility< + typename Kokkos::HostSpace::execution_space, + typename TEST_EXECSPACE::memory_space>::accessible; + + // Contiguous copies + { Kokkos::deep_copy(defaulted, defaulted); } + { + Kokkos::deep_copy(a, 1); + ASSERT_TRUE(run_check(a, 1)); + } + { + Kokkos::deep_copy(a, a); + ASSERT_TRUE(run_check(a, 1)); + } + { + Kokkos::deep_copy(m_a, a); + ASSERT_TRUE(run_check(m_a, 1)); + } + { + Kokkos::deep_copy(m_a, 2); + ASSERT_TRUE(run_check(m_a, 2)); + } + { + Kokkos::deep_copy(a, m_a); + ASSERT_TRUE(run_check(a, 2)); + } + { + Kokkos::deep_copy(b, 3); + ASSERT_TRUE(run_check(b, 3)); + } + { + Kokkos::deep_copy(h_a, 4); + ASSERT_TRUE(run_check(h_a, 4)); + } + { + Kokkos::deep_copy(a, b); + ASSERT_TRUE(run_check(a, 3)); + } + { + Kokkos::deep_copy(h_b, h_a); + ASSERT_TRUE(run_check(h_b, 4)); + } + { + Kokkos::deep_copy(h_a, a); + ASSERT_TRUE(run_check(h_a, 3)); + } + { + Kokkos::deep_copy(b, h_b); + ASSERT_TRUE(run_check(b, 4)); + } + // Non contiguous copies + { + Kokkos::deep_copy(s_a, 5); + ASSERT_TRUE(run_check(s_a, 5)); + } + { + Kokkos::deep_copy(hs_a, 6); + ASSERT_TRUE(run_check(hs_a, 6)); + } + { + Kokkos::deep_copy(s_b, s_a); + ASSERT_TRUE(run_check(s_b, 5)); + } + { + Kokkos::deep_copy(hs_b, hs_a); + ASSERT_TRUE(run_check(hs_b, 6)); + } + if (DevExecCanAccessHost || HostExecCanAccessDev) { + { + Kokkos::deep_copy(hs_b, s_b); + ASSERT_TRUE(run_check(hs_b, 5)); + } + { + Kokkos::deep_copy(s_a, hs_a); + ASSERT_TRUE(run_check(s_a, 6)); + } + } - // host_space to ExecSpace - Kokkos::deep_copy(dstView, srcView); - Kokkos::fence(); + // Contiguous copies + { Kokkos::deep_copy(dev, defaulted, defaulted); } + { + Kokkos::deep_copy(dev, a, 1); + ASSERT_TRUE(run_check(a, 1)); + } + { + Kokkos::deep_copy(dev, a, a); + ASSERT_TRUE(run_check(a, 1)); + } + { + Kokkos::deep_copy(dev, m_a, a); + ASSERT_TRUE(run_check(m_a, 1)); + } + { + Kokkos::deep_copy(dev, m_a, 2); + ASSERT_TRUE(run_check(m_a, 2)); + } + { + Kokkos::deep_copy(dev, a, m_a); + ASSERT_TRUE(run_check(a, 2)); + } + { + Kokkos::deep_copy(dev, b, 3); + ASSERT_TRUE(run_check(b, 3)); + } + { + Kokkos::deep_copy(dev, h_a, 4); + ASSERT_TRUE(run_check(h_a, 4)); + } + { + Kokkos::deep_copy(dev, a, b); + ASSERT_TRUE(run_check(a, 3)); + } + { + Kokkos::deep_copy(dev, h_b, h_a); + ASSERT_TRUE(run_check(h_b, 4)); + } + { + Kokkos::deep_copy(dev, h_a, a); + ASSERT_TRUE(run_check(h_a, 3)); + } + { + Kokkos::deep_copy(dev, b, h_b); + ASSERT_TRUE(run_check(b, 4)); + } + // Non contiguous copies + { + Kokkos::deep_copy(dev, s_a, 5); + ASSERT_TRUE(run_check(s_a, 5)); + } + { + Kokkos::deep_copy(dev, hs_a, 6); + ASSERT_TRUE(run_check(hs_a, 6)); + } + { + Kokkos::deep_copy(dev, s_b, s_a); + ASSERT_TRUE(run_check(s_b, 5)); + } + { + Kokkos::deep_copy(dev, hs_b, hs_a); + ASSERT_TRUE(run_check(hs_b, 6)); + } + if (DevExecCanAccessHost || HostExecCanAccessDev) { + { + Kokkos::deep_copy(dev, hs_b, s_b); + ASSERT_TRUE(run_check(hs_b, 5)); + } + { + Kokkos::deep_copy(dev, s_a, hs_a); + ASSERT_TRUE(run_check(s_a, 6)); + } + } - // ExecSpace to host_space - Kokkos::deep_copy(srcView, dstView); - Kokkos::fence(); + // Contiguous copies + { Kokkos::deep_copy(host, defaulted, defaulted); } + { + Kokkos::deep_copy(host, a, 1); + ASSERT_TRUE(run_check(a, 1)); + } + { + Kokkos::deep_copy(host, a, a); + ASSERT_TRUE(run_check(a, 1)); + } + { + Kokkos::deep_copy(host, m_a, a); + ASSERT_TRUE(run_check(m_a, 1)); + } + { + Kokkos::deep_copy(host, m_a, 2); + ASSERT_TRUE(run_check(m_a, 2)); + } + { + Kokkos::deep_copy(host, a, m_a); + ASSERT_TRUE(run_check(a, 2)); + } + { + Kokkos::deep_copy(host, b, 3); + ASSERT_TRUE(run_check(b, 3)); + } + { + Kokkos::deep_copy(host, h_a, 4); + ASSERT_TRUE(run_check(h_a, 4)); + } + { + Kokkos::deep_copy(host, a, b); + ASSERT_TRUE(run_check(a, 3)); + } + { + Kokkos::deep_copy(host, h_b, h_a); + ASSERT_TRUE(run_check(h_b, 4)); + } + { + Kokkos::deep_copy(host, h_a, a); + ASSERT_TRUE(run_check(h_a, 3)); + } + { + Kokkos::deep_copy(host, b, h_b); + ASSERT_TRUE(run_check(b, 4)); + } + // Non contiguous copies + { + Kokkos::deep_copy(host, s_a, 5); + ASSERT_TRUE(run_check(s_a, 5)); + } + { + Kokkos::deep_copy(host, hs_a, 6); + ASSERT_TRUE(run_check(hs_a, 6)); + } + { + Kokkos::deep_copy(host, s_b, s_a); + ASSERT_TRUE(run_check(s_b, 5)); + } + { + Kokkos::deep_copy(host, hs_b, hs_a); + ASSERT_TRUE(run_check(hs_b, 6)); + } + if (DevExecCanAccessHost || HostExecCanAccessDev) { + { + Kokkos::deep_copy(host, hs_b, s_b); + ASSERT_TRUE(run_check(hs_b, 5)); } -#endif - } // end test_view_copy + { + Kokkos::deep_copy(host, s_a, hs_a); + ASSERT_TRUE(run_check(s_a, 6)); + } + } +} -}; // end struct +TEST(TEST_CATEGORY, view_copy_tests_rank_0) { + Kokkos::View defaulted; + Kokkos::View a("A"); + Kokkos::View b("B"); + auto h_a = Kokkos::create_mirror(a); + auto h_b = Kokkos::create_mirror(b); + auto m_a = Kokkos::create_mirror_view(a); + auto dev = typename TEST_EXECSPACE::execution_space(); + auto host = Kokkos::DefaultHostExecutionSpace(); -} // namespace + // No execution space + { Kokkos::deep_copy(defaulted, defaulted); } + { + Kokkos::deep_copy(a, 1); + ASSERT_TRUE(run_check(a, 1)); + } + { + Kokkos::deep_copy(a, a); + ASSERT_TRUE(run_check(a, 1)); + } + { + Kokkos::deep_copy(m_a, a); + ASSERT_TRUE(run_check(m_a, 1)); + } + { + Kokkos::deep_copy(m_a, 2); + ASSERT_TRUE(run_check(m_a, 2)); + } + { + Kokkos::deep_copy(a, m_a); + ASSERT_TRUE(run_check(a, 2)); + } + { + Kokkos::deep_copy(b, 3); + ASSERT_TRUE(run_check(b, 3)); + } + { + Kokkos::deep_copy(h_a, 4); + ASSERT_TRUE(run_check(h_a, 4)); + } + { + Kokkos::deep_copy(a, b); + ASSERT_TRUE(run_check(a, 3)); + } + { + Kokkos::deep_copy(h_b, h_a); + ASSERT_TRUE(run_check(h_b, 4)); + } + { + Kokkos::deep_copy(h_a, a); + ASSERT_TRUE(run_check(h_a, 3)); + } + { + Kokkos::deep_copy(b, h_b); + ASSERT_TRUE(run_check(b, 4)); + } -TEST(TEST_CATEGORY, view_copy_tests) { - // Only include this file to be compiled with CudaUVM and CudaHostPinned - TestViewCopy::test_view_copy(4, 2, 3); - TestViewCopy::test_view_copy(4, 2, 0); + // Device + { Kokkos::deep_copy(dev, defaulted, defaulted); } + { + Kokkos::deep_copy(dev, a, 1); + ASSERT_TRUE(run_check(a, 1)); + } + { + Kokkos::deep_copy(dev, a, a); + ASSERT_TRUE(run_check(a, 1)); + } + { + Kokkos::deep_copy(dev, m_a, a); + ASSERT_TRUE(run_check(m_a, 1)); + } + { + Kokkos::deep_copy(dev, m_a, 2); + ASSERT_TRUE(run_check(m_a, 2)); + } + { + Kokkos::deep_copy(dev, a, m_a); + ASSERT_TRUE(run_check(a, 2)); + } + { + Kokkos::deep_copy(dev, b, 3); + ASSERT_TRUE(run_check(b, 3)); + } + { + Kokkos::deep_copy(dev, h_a, 4); + ASSERT_TRUE(run_check(h_a, 4)); + } + { + Kokkos::deep_copy(dev, a, b); + ASSERT_TRUE(run_check(a, 3)); + } + { + Kokkos::deep_copy(dev, h_b, h_a); + ASSERT_TRUE(run_check(h_b, 4)); + } + { + Kokkos::deep_copy(dev, h_a, a); + ASSERT_TRUE(run_check(h_a, 3)); + } + { + Kokkos::deep_copy(dev, b, h_b); + ASSERT_TRUE(run_check(b, 4)); + } + + // Host + { Kokkos::deep_copy(host, defaulted, defaulted); } + { + Kokkos::deep_copy(host, a, 1); + ASSERT_TRUE(run_check(a, 1)); + } + { + Kokkos::deep_copy(host, a, a); + ASSERT_TRUE(run_check(a, 1)); + } + { + Kokkos::deep_copy(host, m_a, a); + ASSERT_TRUE(run_check(m_a, 1)); + } + { + Kokkos::deep_copy(host, m_a, 2); + ASSERT_TRUE(run_check(m_a, 2)); + } + { + Kokkos::deep_copy(host, a, m_a); + ASSERT_TRUE(run_check(a, 2)); + } + { + Kokkos::deep_copy(host, b, 3); + ASSERT_TRUE(run_check(b, 3)); + } + { + Kokkos::deep_copy(host, h_a, 4); + ASSERT_TRUE(run_check(h_a, 4)); + } + { + Kokkos::deep_copy(host, a, b); + ASSERT_TRUE(run_check(a, 3)); + } + { + Kokkos::deep_copy(host, h_b, h_a); + ASSERT_TRUE(run_check(h_b, 4)); + } + { + Kokkos::deep_copy(host, h_a, a); + ASSERT_TRUE(run_check(h_a, 3)); + } + { + Kokkos::deep_copy(host, b, h_b); + ASSERT_TRUE(run_check(b, 4)); + } } TEST(TEST_CATEGORY, view_copy_degenerated) { - // Only include this file to be compiled with CudaUVM and CudaHostPinned - Kokkos::View> v_um_def_1; - Kokkos::View> v_um_1( - reinterpret_cast(-1), 0); - Kokkos::View v_m_def_1; - Kokkos::View v_m_1("v_m_1", 0); - - Kokkos::View> v_um_def_2; - Kokkos::View> v_um_2( - reinterpret_cast(-1), 0); - Kokkos::View v_m_def_2; - Kokkos::View v_m_2("v_m_2", 0); + Kokkos::View> + v_um_def_1; + Kokkos::View> + v_um_1(reinterpret_cast(-1), 0); + Kokkos::View v_m_def_1; + Kokkos::View v_m_1("v_m_1", 0); + + Kokkos::View> + v_um_def_2; + Kokkos::View> + v_um_2(reinterpret_cast(-1), 0); + Kokkos::View v_m_def_2; + Kokkos::View v_m_2("v_m_2", 0); Kokkos::deep_copy(v_um_def_1, v_um_def_2); Kokkos::deep_copy(v_um_def_1, v_um_2); diff --git a/lib/kokkos/core/unit_test/TestViewIsAssignable.hpp b/lib/kokkos/core/unit_test/TestViewIsAssignable.hpp new file mode 100644 index 0000000000..fcf9f75f37 --- /dev/null +++ b/lib/kokkos/core/unit_test/TestViewIsAssignable.hpp @@ -0,0 +1,145 @@ +#include + +namespace Test { +namespace Impl { +template +struct TestAssignability { + using mapping_type = + Kokkos::Impl::ViewMapping; + + template + static void try_assign( + ViewTypeDst& dst, ViewTypeSrc& src, + typename std::enable_if::type* = nullptr) { + dst = src; + } + + template + static void try_assign( + ViewTypeDst&, ViewTypeSrc&, + typename std::enable_if::type* = nullptr) { + Kokkos::Impl::throw_runtime_exception( + "TestAssignability::try_assign: Unexpected call path"); + } + + template + static void test(bool always, bool sometimes, Dimensions... dims) { + ViewTypeDst dst; + ViewTypeSrc src("SRC", dims...); + + bool is_always_assignable = + Kokkos::is_always_assignable::value; + bool is_assignable = Kokkos::is_assignable(dst, src); + + // Print out if there is an error with typeid so you can just filter the + // output with c++filt -t to see which assignment causes the error. + if (is_always_assignable != always || is_assignable != sometimes) + printf( + "is_always_assignable: %i (%i), is_assignable: %i (%i) [ %s ] to [ " + "%s ]\n", + is_always_assignable ? 1 : 0, always ? 1 : 0, is_assignable ? 1 : 0, + sometimes ? 1 : 0, typeid(ViewTypeSrc).name(), + typeid(ViewTypeDst).name()); + if (sometimes) { + ASSERT_NO_THROW(try_assign(dst, src)); + } + ASSERT_EQ(always, is_always_assignable); + ASSERT_EQ(sometimes, is_assignable); + } +}; + +} // namespace Impl + +TEST(TEST_CATEGORY, view_is_assignable) { + using namespace Kokkos; + using h_exec = typename DefaultHostExecutionSpace::memory_space; + using d_exec = typename TEST_EXECSPACE::memory_space; + using left = LayoutLeft; + using right = LayoutRight; + using stride = LayoutStride; + // Static/Dynamic Extents + Impl::TestAssignability, + View>::test(true, true, 10); + Impl::TestAssignability, + View>::test(false, true, 10); + Impl::TestAssignability, + View>::test(false, false, 10); + Impl::TestAssignability, + View>::test(true, true); + Impl::TestAssignability, + View>::test(true, true); + Impl::TestAssignability, + View>::test(false, false); + Impl::TestAssignability, + View>::test(true, true, 10, 10); + Impl::TestAssignability, + View>::test(false, true, 10, 10); + Impl::TestAssignability, + View>::test(false, false, 10, + 10); + Impl::TestAssignability, + View>::test(true, true, 10); + Impl::TestAssignability, + View>::test(true, true, 10); + Impl::TestAssignability, + View>::test(false, false, + 10); + + // Mismatch value_type + Impl::TestAssignability, + View>::test(false, false, 10); + + // Layout assignment + Impl::TestAssignability, + View>::test(true, true, 10); + + // This could be made possible (due to the degenerate nature of the views) but + // we do not allow this yet + // TestAssignability,View>::test(false,true,10,1); + Impl::TestAssignability, + View>::test(false, false, 10, + 2); + Impl::TestAssignability, + View>::test(true, true, 10, 2); + Impl::TestAssignability, + View>::test(true, true, 10, 2); + + // Space Assignment + bool expected = Kokkos::Impl::MemorySpaceAccess::assignable; + Impl::TestAssignability, + View>::test(expected, expected, + 10); + expected = Kokkos::Impl::MemorySpaceAccess::assignable; + Impl::TestAssignability, + View>::test(expected, expected, + 10); + + // reference type and const-qualified types + using SomeViewType = View; +#if defined(KOKKOS_ENABLE_CXX17) + static_assert(is_always_assignable_v); + static_assert(is_always_assignable_v); + static_assert(is_always_assignable_v); + static_assert(is_always_assignable_v); + static_assert(is_always_assignable_v); + static_assert(is_always_assignable_v); + static_assert(is_always_assignable_v); + static_assert(is_always_assignable_v); +#else + static_assert(is_always_assignable::value, ""); + static_assert(is_always_assignable::value, ""); + static_assert(is_always_assignable::value, + ""); + static_assert(is_always_assignable::value, + ""); + static_assert(is_always_assignable::value, ""); + static_assert(is_always_assignable::value, ""); + static_assert(is_always_assignable::value, + ""); + static_assert(is_always_assignable::value, + ""); +#endif +} +} // namespace Test diff --git a/lib/kokkos/core/unit_test/TestViewLayoutStrideAssignment.hpp b/lib/kokkos/core/unit_test/TestViewLayoutStrideAssignment.hpp index 5e373dbbc9..583d135f35 100644 --- a/lib/kokkos/core/unit_test/TestViewLayoutStrideAssignment.hpp +++ b/lib/kokkos/core/unit_test/TestViewLayoutStrideAssignment.hpp @@ -56,7 +56,7 @@ namespace Test { TEST(TEST_CATEGORY, view_layoutstride_left_to_layoutleft_assignment) { typedef TEST_EXECSPACE exec_space; - auto t = time(0); + auto t = time(nullptr); srand(t); // Use current time as seed for random generator printf("view_layoutstride_left_to_layoutleft_assignment: srand(%lu)\n", size_t(t)); @@ -338,7 +338,7 @@ TEST(TEST_CATEGORY, view_layoutstride_left_to_layoutleft_assignment) { TEST(TEST_CATEGORY, view_layoutstride_right_to_layoutright_assignment) { typedef TEST_EXECSPACE exec_space; - auto t = time(0); + auto t = time(nullptr); srand(t); // Use current time as seed for random generator printf("view_layoutstride_right_to_layoutright_assignment: srand(%lu)\n", size_t(t)); @@ -620,7 +620,7 @@ TEST(TEST_CATEGORY, view_layoutstride_right_to_layoutright_assignment) { TEST(TEST_CATEGORY_DEATH, view_layoutstride_right_to_layoutleft_assignment) { typedef TEST_EXECSPACE exec_space; - auto t = time(0); + auto t = time(nullptr); srand(t); // Use current time as seed for random generator printf("view_layoutstride_right_to_layoutleft_assignment: srand(%lu)\n", size_t(t)); @@ -771,7 +771,7 @@ TEST(TEST_CATEGORY_DEATH, view_layoutstride_right_to_layoutleft_assignment) { TEST(TEST_CATEGORY_DEATH, view_layoutstride_left_to_layoutright_assignment) { typedef TEST_EXECSPACE exec_space; - auto t = time(0); + auto t = time(nullptr); srand(t); // Use current time as seed for random generator printf("view_layoutstride_left_to_layoutright_assignment: srand(%lu)\n", size_t(t)); diff --git a/lib/kokkos/core/unit_test/TestViewLayoutTiled.hpp b/lib/kokkos/core/unit_test/TestViewLayoutTiled.hpp index 2526a3e7e3..75eef2d69e 100644 --- a/lib/kokkos/core/unit_test/TestViewLayoutTiled.hpp +++ b/lib/kokkos/core/unit_test/TestViewLayoutTiled.hpp @@ -112,9 +112,10 @@ struct TestViewLayoutTiled { Kokkos::Iterate::Right, Kokkos::Iterate::Right, T0, T1, T2, T3> LayoutRR_4D_2x4x4x2; +#if !defined(KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA) + static void test_view_layout_tiled_2d(const int, const int) { +#else static void test_view_layout_tiled_2d(const int N0, const int N1) { -#if defined(KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA) -#if !defined(KOKKOS_ENABLE_CUDA) || (8000 <= CUDA_VERSION) const int FT = T0 * T1; const int NT0 = int(std::ceil(N0 / T0)); @@ -382,15 +383,14 @@ struct TestViewLayoutTiled { ASSERT_EQ(counter_subview, long(0)); ASSERT_EQ(counter_inc, long(0)); } // end scope -#endif #endif } // end test_view_layout_tiled_2d +#if !defined(KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA) + static void test_view_layout_tiled_3d(const int, const int, const int) { +#else static void test_view_layout_tiled_3d(const int N0, const int N1, const int N2) { -#if defined(KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA) -#if !defined(KOKKOS_ENABLE_CUDA) || (8000 <= CUDA_VERSION) - const int FT = T0 * T1 * T2; const int NT0 = int(std::ceil(N0 / T0)); @@ -680,14 +680,15 @@ struct TestViewLayoutTiled { ASSERT_EQ(counter_subview, long(0)); ASSERT_EQ(counter_inc, long(0)); } // end scope -#endif #endif } // end test_view_layout_tiled_3d +#if !defined(KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA) + static void test_view_layout_tiled_4d(const int, const int, const int, + const int){ +#else static void test_view_layout_tiled_4d(const int N0, const int N1, const int N2, const int N3) { -#if defined(KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA) -#if !defined(KOKKOS_ENABLE_CUDA) || (8000 <= CUDA_VERSION) const int FT = T0 * T1 * T2 * T3; const int NT0 = int(std::ceil(N0 / T0)); @@ -1027,7 +1028,6 @@ struct TestViewLayoutTiled { ASSERT_EQ(counter_subview, long(0)); ASSERT_EQ(counter_inc, long(0)); } // end scope -#endif #endif } // end test_view_layout_tiled_4d diff --git a/lib/kokkos/core/unit_test/TestViewMapping_a.hpp b/lib/kokkos/core/unit_test/TestViewMapping_a.hpp index 5e27cc5e51..7bd6353c2b 100644 --- a/lib/kokkos/core/unit_test/TestViewMapping_a.hpp +++ b/lib/kokkos/core/unit_test/TestViewMapping_a.hpp @@ -77,7 +77,9 @@ void test_view_mapping() { typedef Kokkos::Impl::ViewDimension<0, 0, 0, 0, 0, 0, 0, 0> dim_s0_s0_s0_s0_s0_s0_s0_s0; - // Fully static dimensions should not be larger than an int. +// Fully static dimensions should not be larger than an int. +#ifndef _WIN32 // For some reason on Windows the first test here fails with + // size being 7 bytes on windows??? ASSERT_LE(sizeof(dim_0), sizeof(int)); ASSERT_LE(sizeof(dim_s2), sizeof(int)); ASSERT_LE(sizeof(dim_s2_s3), sizeof(int)); @@ -98,7 +100,7 @@ void test_view_mapping() { ASSERT_EQ(sizeof(dim_s0_s0_s0_s0_s0_s0), 6 * sizeof(unsigned)); ASSERT_LE(sizeof(dim_s0_s0_s0_s0_s0_s0_s0), 8 * sizeof(unsigned)); ASSERT_EQ(sizeof(dim_s0_s0_s0_s0_s0_s0_s0_s0), 8 * sizeof(unsigned)); - +#endif static_assert(int(dim_0::rank) == int(0), ""); static_assert(int(dim_0::rank_dynamic) == int(0), ""); static_assert(int(dim_0::ArgN0) == 1, ""); @@ -900,7 +902,7 @@ void test_view_mapping() { ASSERT_TRUE(offset.span_is_contiguous()); Kokkos::Impl::ViewMapping v( - Kokkos::Impl::ViewCtorProp((int*)0), stride); + Kokkos::Impl::ViewCtorProp(nullptr), stride); } { @@ -1076,17 +1078,20 @@ void test_view_mapping() { typedef typename Kokkos::Impl::HostMirror::Space::execution_space host_exec_space; - Kokkos::parallel_for( - Kokkos::RangePolicy(0, 10), KOKKOS_LAMBDA(int) { - // 'a' is captured by copy, and the capture mechanism converts 'a' to + int errors = 0; + Kokkos::parallel_reduce( + Kokkos::RangePolicy(0, 10), + KOKKOS_LAMBDA(int, int& e) { // an unmanaged copy. When the parallel dispatch accepts a move for // the lambda, this count should become 1. - ASSERT_EQ(a.use_count(), 2); + if (a.use_count() != 2) ++e; V x = a; - ASSERT_EQ(a.use_count(), 2); - ASSERT_EQ(x.use_count(), 2); - }); + if (a.use_count() != 2) ++e; + if (x.use_count() != 2) ++e; + }, + errors); + ASSERT_EQ(errors, 0); #endif // #if !defined( KOKKOS_ENABLE_CUDA_LAMBDA ) } } @@ -1106,7 +1111,7 @@ struct TestViewMapOperator { #endif KOKKOS_INLINE_FUNCTION - void test_left(size_t i0, long& error_count) const { + void test_left(size_t i0, int64_t& error_count) const { #ifdef KOKKOS_ENABLE_DEPPRECATED_CODE typename ViewType::value_type* const base_ptr = &v(0, 0, 0, 0, 0, 0, 0, 0); #else @@ -1121,7 +1126,7 @@ struct TestViewMapOperator { const size_t n6 = v.extent(6); const size_t n7 = v.extent(7); - long offset = 0; + int64_t offset = 0; for (size_t i7 = 0; i7 < n7; ++i7) for (size_t i6 = 0; i6 < n6; ++i6) @@ -1131,9 +1136,10 @@ struct TestViewMapOperator { for (size_t i2 = 0; i2 < n2; ++i2) for (size_t i1 = 0; i1 < n1; ++i1) { #ifdef KOKKOS_ENABLE_DEPRECATED_CODE - const long d = &v(i0, i1, i2, i3, i4, i5, i6, i7) - base_ptr; + const int64_t d = + &v(i0, i1, i2, i3, i4, i5, i6, i7) - base_ptr; #else - const long d = + const int64_t d = &v.access(i0, i1, i2, i3, i4, i5, i6, i7) - base_ptr; #endif if (d < offset) ++error_count; @@ -1144,7 +1150,7 @@ struct TestViewMapOperator { } KOKKOS_INLINE_FUNCTION - void test_right(size_t i0, long& error_count) const { + void test_right(size_t i0, int64_t& error_count) const { #ifdef KOKKOS_ENABLE_DEPRECATED_CODE typename ViewType::value_type* const base_ptr = &v(0, 0, 0, 0, 0, 0, 0, 0); #else @@ -1159,7 +1165,7 @@ struct TestViewMapOperator { const size_t n6 = v.extent(6); const size_t n7 = v.extent(7); - long offset = 0; + int64_t offset = 0; for (size_t i1 = 0; i1 < n1; ++i1) for (size_t i2 = 0; i2 < n2; ++i2) @@ -1169,9 +1175,10 @@ struct TestViewMapOperator { for (size_t i6 = 0; i6 < n6; ++i6) for (size_t i7 = 0; i7 < n7; ++i7) { #ifdef KOKKOS_ENABLE_DEPRECATED_CODE - const long d = &v(i0, i1, i2, i3, i4, i5, i6, i7) - base_ptr; + const int64_t d = + &v(i0, i1, i2, i3, i4, i5, i6, i7) - base_ptr; #else - const long d = + const int64_t d = &v.access(i0, i1, i2, i3, i4, i5, i6, i7) - base_ptr; #endif if (d < offset) ++error_count; @@ -1182,7 +1189,7 @@ struct TestViewMapOperator { } KOKKOS_INLINE_FUNCTION - void operator()(size_t i, long& error_count) const { + void operator()(size_t i, int64_t& error_count) const { if (std::is_same::value) { test_left(i, error_count); @@ -1245,7 +1252,7 @@ struct TestViewMapOperator { v.extent(4) * v.extent(5) * v.extent(6) * v.extent(7), v.span()); - long error_count; + int64_t error_count; Kokkos::RangePolicy range(0, v.extent(0)); Kokkos::parallel_reduce(range, *this, error_count); diff --git a/lib/kokkos/core/unit_test/TestView_64bit.hpp b/lib/kokkos/core/unit_test/TestView_64bit.hpp index 0b7b9d425a..7dc47ccb0f 100644 --- a/lib/kokkos/core/unit_test/TestView_64bit.hpp +++ b/lib/kokkos/core/unit_test/TestView_64bit.hpp @@ -55,7 +55,7 @@ void test_64bit() { Kokkos::parallel_reduce( Kokkos::RangePolicy>(0, N), - KOKKOS_LAMBDA(const int64_t& i, int64_t& lsum) { lsum += 1; }, sum); + KOKKOS_LAMBDA(const int64_t& /*i*/, int64_t& lsum) { lsum += 1; }, sum); ASSERT_EQ(N, sum); } { diff --git a/lib/kokkos/core/unit_test/UnitTestConfig.make b/lib/kokkos/core/unit_test/UnitTestConfig.make index 97f4af5a8b..5c93bf69fb 100644 --- a/lib/kokkos/core/unit_test/UnitTestConfig.make +++ b/lib/kokkos/core/unit_test/UnitTestConfig.make @@ -8,7 +8,7 @@ KOKKOS_ARCH_OPTIONS="None AMDAVX ARMv80 ARMv81 ARMv8-ThunderX \ Maxwell Maxwell50 Maxwell52 Maxwell53 Pascal60 Pascal61" #KOKKOS_ARCH_OPTIONS="AMDAVX" -KOKKOS_DEVICE_OPTIONS="Cuda ROCm OpenMP Pthread Serial Qthreads" +KOKKOS_DEVICE_OPTIONS="Cuda ROCm OpenMP Pthread Serial" #KOKKOS_DEVICE_OPTIONS="Cuda" # Configure paths to enable environment query in Makefile.kokkos to work diff --git a/lib/kokkos/core/unit_test/config/cmaketest/CMakeLists.txt b/lib/kokkos/core/unit_test/config/cmaketest/CMakeLists.txt index 72fef0a3e8..5d59017394 100644 --- a/lib/kokkos/core/unit_test/config/cmaketest/CMakeLists.txt +++ b/lib/kokkos/core/unit_test/config/cmaketest/CMakeLists.txt @@ -56,20 +56,20 @@ foreach(KOKKOS_HOST_ARCH ${KOKKOS_HOST_ARCH_LIST}) set(NEWCONFH ${PREFIX}${KOKKOS_CONFIG_HEADER}) file(RENAME ${KOKKOS_CMAKEFILE} ${NEWCMAKE}) file(RENAME ${KOKKOS_CONFIG_HEADER} ${NEWCONFH}) - - add_test(NAME ${NEWCMAKE}-test + + add_test(NAME ${NEWCMAKE}-test COMMAND ${KOKKOS_TESTDIR}/testmake.sh ${NEWCMAKE} ${KOKKOS_HOST_ARCH} ${KOKKOS_DEV} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} ) - set_tests_properties(${NEWCMAKE}-test + set_tests_properties(${NEWCMAKE}-test PROPERTIES PASS_REGULAR_EXPRESSION Passed TIMEOUT 15 ) - add_test(NAME ${NEWCONFH}-test - COMMAND ${KOKKOS_TESTDIR}/diffconfig.sh ${NEWCONFH} + add_test(NAME ${NEWCONFH}-test + COMMAND ${KOKKOS_TESTDIR}/diffconfig.sh ${NEWCONFH} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} ) - set_tests_properties(${NEWCONFH}-test + set_tests_properties(${NEWCONFH}-test PROPERTIES PASS_REGULAR_EXPRESSION Passed TIMEOUT 15 ) diff --git a/lib/kokkos/core/unit_test/config/results/AMDAVX_Qthreads_KokkosCore_config.h b/lib/kokkos/core/unit_test/config/results/AMDAVX_Qthreads_KokkosCore_config.h deleted file mode 100644 index fb5d214630..0000000000 --- a/lib/kokkos/core/unit_test/config/results/AMDAVX_Qthreads_KokkosCore_config.h +++ /dev/null @@ -1,17 +0,0 @@ -/* --------------------------------------------- -Makefile constructed configuration: -Fri Sep 22 17:22:11 MDT 2017 -----------------------------------------------*/ -#if !defined(KOKKOS_MACROS_HPP) || defined(KOKKOS_CORE_CONFIG_H) -#error "Do not include KokkosCore_config.h directly; include Kokkos_Macros.hpp instead." -#else -#define KOKKOS_CORE_CONFIG_H -#endif -/* Execution Spaces */ -#define KOKKOS_HAVE_QTHREADS 1 -/* General Settings */ -#define KOKKOS_HAVE_CXX11 1 -#define KOKKOS_ENABLE_PROFILING -/* Optimization Settings */ -/* Cuda Settings */ -#define KOKKOS_ARCH_AVX 1 diff --git a/lib/kokkos/core/unit_test/config/results/ARMv8-ThunderX_Qthreads_KokkosCore_config.h b/lib/kokkos/core/unit_test/config/results/ARMv8-ThunderX_Qthreads_KokkosCore_config.h deleted file mode 100644 index 3865bc4a9a..0000000000 --- a/lib/kokkos/core/unit_test/config/results/ARMv8-ThunderX_Qthreads_KokkosCore_config.h +++ /dev/null @@ -1,18 +0,0 @@ -/* --------------------------------------------- -Makefile constructed configuration: -Fri Sep 22 17:22:20 MDT 2017 -----------------------------------------------*/ -#if !defined(KOKKOS_MACROS_HPP) || defined(KOKKOS_CORE_CONFIG_H) -#error "Do not include KokkosCore_config.h directly; include Kokkos_Macros.hpp instead." -#else -#define KOKKOS_CORE_CONFIG_H -#endif -/* Execution Spaces */ -#define KOKKOS_HAVE_QTHREADS 1 -/* General Settings */ -#define KOKKOS_HAVE_CXX11 1 -#define KOKKOS_ENABLE_PROFILING -/* Optimization Settings */ -/* Cuda Settings */ -#define KOKKOS_ARCH_ARMV80 1 -#define KOKKOS_ARCH_ARMV8_THUNDERX 1 diff --git a/lib/kokkos/core/unit_test/config/results/ARMv80_Qthreads_KokkosCore_config.h b/lib/kokkos/core/unit_test/config/results/ARMv80_Qthreads_KokkosCore_config.h deleted file mode 100644 index 7259a9e964..0000000000 --- a/lib/kokkos/core/unit_test/config/results/ARMv80_Qthreads_KokkosCore_config.h +++ /dev/null @@ -1,17 +0,0 @@ -/* --------------------------------------------- -Makefile constructed configuration: -Fri Sep 22 17:22:14 MDT 2017 -----------------------------------------------*/ -#if !defined(KOKKOS_MACROS_HPP) || defined(KOKKOS_CORE_CONFIG_H) -#error "Do not include KokkosCore_config.h directly; include Kokkos_Macros.hpp instead." -#else -#define KOKKOS_CORE_CONFIG_H -#endif -/* Execution Spaces */ -#define KOKKOS_HAVE_QTHREADS 1 -/* General Settings */ -#define KOKKOS_HAVE_CXX11 1 -#define KOKKOS_ENABLE_PROFILING -/* Optimization Settings */ -/* Cuda Settings */ -#define KOKKOS_ARCH_ARMV80 1 diff --git a/lib/kokkos/core/unit_test/config/results/ARMv81_Qthreads_KokkosCore_config.h b/lib/kokkos/core/unit_test/config/results/ARMv81_Qthreads_KokkosCore_config.h deleted file mode 100644 index e9fc71ad9b..0000000000 --- a/lib/kokkos/core/unit_test/config/results/ARMv81_Qthreads_KokkosCore_config.h +++ /dev/null @@ -1,17 +0,0 @@ -/* --------------------------------------------- -Makefile constructed configuration: -Fri Sep 22 17:22:17 MDT 2017 -----------------------------------------------*/ -#if !defined(KOKKOS_MACROS_HPP) || defined(KOKKOS_CORE_CONFIG_H) -#error "Do not include KokkosCore_config.h directly; include Kokkos_Macros.hpp instead." -#else -#define KOKKOS_CORE_CONFIG_H -#endif -/* Execution Spaces */ -#define KOKKOS_HAVE_QTHREADS 1 -/* General Settings */ -#define KOKKOS_HAVE_CXX11 1 -#define KOKKOS_ENABLE_PROFILING -/* Optimization Settings */ -/* Cuda Settings */ -#define KOKKOS_ARCH_ARMV81 1 diff --git a/lib/kokkos/core/unit_test/config/results/BDW_Qthreads_KokkosCore_config.h b/lib/kokkos/core/unit_test/config/results/BDW_Qthreads_KokkosCore_config.h deleted file mode 100644 index e879e7e1fe..0000000000 --- a/lib/kokkos/core/unit_test/config/results/BDW_Qthreads_KokkosCore_config.h +++ /dev/null @@ -1,23 +0,0 @@ -/* --------------------------------------------- -Makefile constructed configuration: -Fri Sep 22 17:22:39 MDT 2017 -----------------------------------------------*/ -#if !defined(KOKKOS_MACROS_HPP) || defined(KOKKOS_CORE_CONFIG_H) -#error "Do not include KokkosCore_config.h directly; include Kokkos_Macros.hpp instead." -#else -#define KOKKOS_CORE_CONFIG_H -#endif -/* Execution Spaces */ -#define KOKKOS_HAVE_QTHREADS 1 -#ifndef __CUDA_ARCH__ -#define KOKKOS_ENABLE_TM -#endif -#ifndef __CUDA_ARCH__ -#define KOKKOS_USE_ISA_X86_64 -#endif -/* General Settings */ -#define KOKKOS_HAVE_CXX11 1 -#define KOKKOS_ENABLE_PROFILING -/* Optimization Settings */ -/* Cuda Settings */ -#define KOKKOS_ARCH_AVX2 1 diff --git a/lib/kokkos/core/unit_test/config/results/BGQ_Qthreads_KokkosCore_config.h b/lib/kokkos/core/unit_test/config/results/BGQ_Qthreads_KokkosCore_config.h deleted file mode 100644 index 60c7ddcdb5..0000000000 --- a/lib/kokkos/core/unit_test/config/results/BGQ_Qthreads_KokkosCore_config.h +++ /dev/null @@ -1,16 +0,0 @@ -/* --------------------------------------------- -Makefile constructed configuration: -Tue Sep 26 15:19:44 MDT 2017 -----------------------------------------------*/ -#if !defined(KOKKOS_MACROS_HPP) || defined(KOKKOS_CORE_CONFIG_H) -#error "Do not include KokkosCore_config.h directly; include Kokkos_Macros.hpp instead." -#else -#define KOKKOS_CORE_CONFIG_H -#endif -/* Execution Spaces */ -#define KOKKOS_HAVE_QTHREADS 1 -/* General Settings */ -#define KOKKOS_HAVE_CXX11 1 -#define KOKKOS_ENABLE_PROFILING -/* Optimization Settings */ -/* Cuda Settings */ diff --git a/lib/kokkos/core/unit_test/config/results/HSW_Qthreads_KokkosCore_config.h b/lib/kokkos/core/unit_test/config/results/HSW_Qthreads_KokkosCore_config.h deleted file mode 100644 index 253dc35bdf..0000000000 --- a/lib/kokkos/core/unit_test/config/results/HSW_Qthreads_KokkosCore_config.h +++ /dev/null @@ -1,20 +0,0 @@ -/* --------------------------------------------- -Makefile constructed configuration: -Fri Sep 22 17:22:36 MDT 2017 -----------------------------------------------*/ -#if !defined(KOKKOS_MACROS_HPP) || defined(KOKKOS_CORE_CONFIG_H) -#error "Do not include KokkosCore_config.h directly; include Kokkos_Macros.hpp instead." -#else -#define KOKKOS_CORE_CONFIG_H -#endif -/* Execution Spaces */ -#define KOKKOS_HAVE_QTHREADS 1 -#ifndef __CUDA_ARCH__ -#define KOKKOS_USE_ISA_X86_64 -#endif -/* General Settings */ -#define KOKKOS_HAVE_CXX11 1 -#define KOKKOS_ENABLE_PROFILING -/* Optimization Settings */ -/* Cuda Settings */ -#define KOKKOS_ARCH_AVX2 1 diff --git a/lib/kokkos/core/unit_test/config/results/KNC_Qthreads_KokkosCore_config.h b/lib/kokkos/core/unit_test/config/results/KNC_Qthreads_KokkosCore_config.h deleted file mode 100644 index 5f95a83c27..0000000000 --- a/lib/kokkos/core/unit_test/config/results/KNC_Qthreads_KokkosCore_config.h +++ /dev/null @@ -1,20 +0,0 @@ -/* --------------------------------------------- -Makefile constructed configuration: -Fri Sep 22 17:22:45 MDT 2017 -----------------------------------------------*/ -#if !defined(KOKKOS_MACROS_HPP) || defined(KOKKOS_CORE_CONFIG_H) -#error "Do not include KokkosCore_config.h directly; include Kokkos_Macros.hpp instead." -#else -#define KOKKOS_CORE_CONFIG_H -#endif -/* Execution Spaces */ -#define KOKKOS_HAVE_QTHREADS 1 -#ifndef __CUDA_ARCH__ -#define KOKKOS_USE_ISA_KNC -#endif -/* General Settings */ -#define KOKKOS_HAVE_CXX11 1 -#define KOKKOS_ENABLE_PROFILING -/* Optimization Settings */ -/* Cuda Settings */ -#define KOKKOS_ARCH_KNC 1 diff --git a/lib/kokkos/core/unit_test/config/results/KNL_Qthreads_KokkosCore_config.h b/lib/kokkos/core/unit_test/config/results/KNL_Qthreads_KokkosCore_config.h deleted file mode 100644 index 6d179d82f8..0000000000 --- a/lib/kokkos/core/unit_test/config/results/KNL_Qthreads_KokkosCore_config.h +++ /dev/null @@ -1,20 +0,0 @@ -/* --------------------------------------------- -Makefile constructed configuration: -Fri Sep 22 17:22:48 MDT 2017 -----------------------------------------------*/ -#if !defined(KOKKOS_MACROS_HPP) || defined(KOKKOS_CORE_CONFIG_H) -#error "Do not include KokkosCore_config.h directly; include Kokkos_Macros.hpp instead." -#else -#define KOKKOS_CORE_CONFIG_H -#endif -/* Execution Spaces */ -#define KOKKOS_HAVE_QTHREADS 1 -#ifndef __CUDA_ARCH__ -#define KOKKOS_USE_ISA_X86_64 -#endif -/* General Settings */ -#define KOKKOS_HAVE_CXX11 1 -#define KOKKOS_ENABLE_PROFILING -/* Optimization Settings */ -/* Cuda Settings */ -#define KOKKOS_ARCH_AVX512MIC 1 diff --git a/lib/kokkos/core/unit_test/config/results/Kepler30_Qthreads_KokkosCore_config.h b/lib/kokkos/core/unit_test/config/results/Kepler30_Qthreads_KokkosCore_config.h deleted file mode 100644 index 410ba5ea15..0000000000 --- a/lib/kokkos/core/unit_test/config/results/Kepler30_Qthreads_KokkosCore_config.h +++ /dev/null @@ -1,16 +0,0 @@ -/* --------------------------------------------- -Makefile constructed configuration: -Fri Sep 22 17:22:50 MDT 2017 -----------------------------------------------*/ -#if !defined(KOKKOS_MACROS_HPP) || defined(KOKKOS_CORE_CONFIG_H) -#error "Do not include KokkosCore_config.h directly; include Kokkos_Macros.hpp instead." -#else -#define KOKKOS_CORE_CONFIG_H -#endif -/* Execution Spaces */ -#define KOKKOS_HAVE_QTHREADS 1 -/* General Settings */ -#define KOKKOS_HAVE_CXX11 1 -#define KOKKOS_ENABLE_PROFILING -/* Optimization Settings */ -/* Cuda Settings */ diff --git a/lib/kokkos/core/unit_test/config/results/Kepler32_Qthreads_KokkosCore_config.h b/lib/kokkos/core/unit_test/config/results/Kepler32_Qthreads_KokkosCore_config.h deleted file mode 100644 index f42d0cc5f2..0000000000 --- a/lib/kokkos/core/unit_test/config/results/Kepler32_Qthreads_KokkosCore_config.h +++ /dev/null @@ -1,16 +0,0 @@ -/* --------------------------------------------- -Makefile constructed configuration: -Fri Sep 22 17:22:53 MDT 2017 -----------------------------------------------*/ -#if !defined(KOKKOS_MACROS_HPP) || defined(KOKKOS_CORE_CONFIG_H) -#error "Do not include KokkosCore_config.h directly; include Kokkos_Macros.hpp instead." -#else -#define KOKKOS_CORE_CONFIG_H -#endif -/* Execution Spaces */ -#define KOKKOS_HAVE_QTHREADS 1 -/* General Settings */ -#define KOKKOS_HAVE_CXX11 1 -#define KOKKOS_ENABLE_PROFILING -/* Optimization Settings */ -/* Cuda Settings */ diff --git a/lib/kokkos/core/unit_test/config/results/Kepler35_Qthreads_KokkosCore_config.h b/lib/kokkos/core/unit_test/config/results/Kepler35_Qthreads_KokkosCore_config.h deleted file mode 100644 index 429f5e9e28..0000000000 --- a/lib/kokkos/core/unit_test/config/results/Kepler35_Qthreads_KokkosCore_config.h +++ /dev/null @@ -1,16 +0,0 @@ -/* --------------------------------------------- -Makefile constructed configuration: -Fri Sep 22 17:22:55 MDT 2017 -----------------------------------------------*/ -#if !defined(KOKKOS_MACROS_HPP) || defined(KOKKOS_CORE_CONFIG_H) -#error "Do not include KokkosCore_config.h directly; include Kokkos_Macros.hpp instead." -#else -#define KOKKOS_CORE_CONFIG_H -#endif -/* Execution Spaces */ -#define KOKKOS_HAVE_QTHREADS 1 -/* General Settings */ -#define KOKKOS_HAVE_CXX11 1 -#define KOKKOS_ENABLE_PROFILING -/* Optimization Settings */ -/* Cuda Settings */ diff --git a/lib/kokkos/core/unit_test/config/results/Kepler37_Qthreads_KokkosCore_config.h b/lib/kokkos/core/unit_test/config/results/Kepler37_Qthreads_KokkosCore_config.h deleted file mode 100644 index 2b8a7f8183..0000000000 --- a/lib/kokkos/core/unit_test/config/results/Kepler37_Qthreads_KokkosCore_config.h +++ /dev/null @@ -1,16 +0,0 @@ -/* --------------------------------------------- -Makefile constructed configuration: -Fri Sep 22 17:22:59 MDT 2017 -----------------------------------------------*/ -#if !defined(KOKKOS_MACROS_HPP) || defined(KOKKOS_CORE_CONFIG_H) -#error "Do not include KokkosCore_config.h directly; include Kokkos_Macros.hpp instead." -#else -#define KOKKOS_CORE_CONFIG_H -#endif -/* Execution Spaces */ -#define KOKKOS_HAVE_QTHREADS 1 -/* General Settings */ -#define KOKKOS_HAVE_CXX11 1 -#define KOKKOS_ENABLE_PROFILING -/* Optimization Settings */ -/* Cuda Settings */ diff --git a/lib/kokkos/core/unit_test/config/results/Kepler_Qthreads_KokkosCore_config.h b/lib/kokkos/core/unit_test/config/results/Kepler_Qthreads_KokkosCore_config.h deleted file mode 100644 index 021d18c002..0000000000 --- a/lib/kokkos/core/unit_test/config/results/Kepler_Qthreads_KokkosCore_config.h +++ /dev/null @@ -1,16 +0,0 @@ -/* --------------------------------------------- -Makefile constructed configuration: -Tue Sep 26 15:19:51 MDT 2017 -----------------------------------------------*/ -#if !defined(KOKKOS_MACROS_HPP) || defined(KOKKOS_CORE_CONFIG_H) -#error "Do not include KokkosCore_config.h directly; include Kokkos_Macros.hpp instead." -#else -#define KOKKOS_CORE_CONFIG_H -#endif -/* Execution Spaces */ -#define KOKKOS_HAVE_QTHREADS 1 -/* General Settings */ -#define KOKKOS_HAVE_CXX11 1 -#define KOKKOS_ENABLE_PROFILING -/* Optimization Settings */ -/* Cuda Settings */ diff --git a/lib/kokkos/core/unit_test/config/results/Maxwell50_Qthreads_KokkosCore_config.h b/lib/kokkos/core/unit_test/config/results/Maxwell50_Qthreads_KokkosCore_config.h deleted file mode 100644 index be1353365c..0000000000 --- a/lib/kokkos/core/unit_test/config/results/Maxwell50_Qthreads_KokkosCore_config.h +++ /dev/null @@ -1,16 +0,0 @@ -/* --------------------------------------------- -Makefile constructed configuration: -Fri Sep 22 17:23:02 MDT 2017 -----------------------------------------------*/ -#if !defined(KOKKOS_MACROS_HPP) || defined(KOKKOS_CORE_CONFIG_H) -#error "Do not include KokkosCore_config.h directly; include Kokkos_Macros.hpp instead." -#else -#define KOKKOS_CORE_CONFIG_H -#endif -/* Execution Spaces */ -#define KOKKOS_HAVE_QTHREADS 1 -/* General Settings */ -#define KOKKOS_HAVE_CXX11 1 -#define KOKKOS_ENABLE_PROFILING -/* Optimization Settings */ -/* Cuda Settings */ diff --git a/lib/kokkos/core/unit_test/config/results/Maxwell52_Qthreads_KokkosCore_config.h b/lib/kokkos/core/unit_test/config/results/Maxwell52_Qthreads_KokkosCore_config.h deleted file mode 100644 index 58a043c6a3..0000000000 --- a/lib/kokkos/core/unit_test/config/results/Maxwell52_Qthreads_KokkosCore_config.h +++ /dev/null @@ -1,16 +0,0 @@ -/* --------------------------------------------- -Makefile constructed configuration: -Fri Sep 22 17:23:05 MDT 2017 -----------------------------------------------*/ -#if !defined(KOKKOS_MACROS_HPP) || defined(KOKKOS_CORE_CONFIG_H) -#error "Do not include KokkosCore_config.h directly; include Kokkos_Macros.hpp instead." -#else -#define KOKKOS_CORE_CONFIG_H -#endif -/* Execution Spaces */ -#define KOKKOS_HAVE_QTHREADS 1 -/* General Settings */ -#define KOKKOS_HAVE_CXX11 1 -#define KOKKOS_ENABLE_PROFILING -/* Optimization Settings */ -/* Cuda Settings */ diff --git a/lib/kokkos/core/unit_test/config/results/Maxwell53_Qthreads_KokkosCore_config.h b/lib/kokkos/core/unit_test/config/results/Maxwell53_Qthreads_KokkosCore_config.h deleted file mode 100644 index 96fdbef3dc..0000000000 --- a/lib/kokkos/core/unit_test/config/results/Maxwell53_Qthreads_KokkosCore_config.h +++ /dev/null @@ -1,16 +0,0 @@ -/* --------------------------------------------- -Makefile constructed configuration: -Fri Sep 22 17:23:08 MDT 2017 -----------------------------------------------*/ -#if !defined(KOKKOS_MACROS_HPP) || defined(KOKKOS_CORE_CONFIG_H) -#error "Do not include KokkosCore_config.h directly; include Kokkos_Macros.hpp instead." -#else -#define KOKKOS_CORE_CONFIG_H -#endif -/* Execution Spaces */ -#define KOKKOS_HAVE_QTHREADS 1 -/* General Settings */ -#define KOKKOS_HAVE_CXX11 1 -#define KOKKOS_ENABLE_PROFILING -/* Optimization Settings */ -/* Cuda Settings */ diff --git a/lib/kokkos/core/unit_test/config/results/Maxwell_Qthreads_KokkosCore_config.h b/lib/kokkos/core/unit_test/config/results/Maxwell_Qthreads_KokkosCore_config.h deleted file mode 100644 index a7f1fd3803..0000000000 --- a/lib/kokkos/core/unit_test/config/results/Maxwell_Qthreads_KokkosCore_config.h +++ /dev/null @@ -1,16 +0,0 @@ -/* --------------------------------------------- -Makefile constructed configuration: -Tue Sep 26 15:20:01 MDT 2017 -----------------------------------------------*/ -#if !defined(KOKKOS_MACROS_HPP) || defined(KOKKOS_CORE_CONFIG_H) -#error "Do not include KokkosCore_config.h directly; include Kokkos_Macros.hpp instead." -#else -#define KOKKOS_CORE_CONFIG_H -#endif -/* Execution Spaces */ -#define KOKKOS_HAVE_QTHREADS 1 -/* General Settings */ -#define KOKKOS_HAVE_CXX11 1 -#define KOKKOS_ENABLE_PROFILING -/* Optimization Settings */ -/* Cuda Settings */ diff --git a/lib/kokkos/core/unit_test/config/results/None_Qthreads_KokkosCore_config.h b/lib/kokkos/core/unit_test/config/results/None_Qthreads_KokkosCore_config.h deleted file mode 100644 index 6bd8addd97..0000000000 --- a/lib/kokkos/core/unit_test/config/results/None_Qthreads_KokkosCore_config.h +++ /dev/null @@ -1,16 +0,0 @@ -/* --------------------------------------------- -Makefile constructed configuration: -Tue Sep 26 15:19:23 MDT 2017 -----------------------------------------------*/ -#if !defined(KOKKOS_MACROS_HPP) || defined(KOKKOS_CORE_CONFIG_H) -#error "Do not include KokkosCore_config.h directly; include Kokkos_Macros.hpp instead." -#else -#define KOKKOS_CORE_CONFIG_H -#endif -/* Execution Spaces */ -#define KOKKOS_HAVE_QTHREADS 1 -/* General Settings */ -#define KOKKOS_HAVE_CXX11 1 -#define KOKKOS_ENABLE_PROFILING -/* Optimization Settings */ -/* Cuda Settings */ diff --git a/lib/kokkos/core/unit_test/config/results/Pascal60_Qthreads_KokkosCore_config.h b/lib/kokkos/core/unit_test/config/results/Pascal60_Qthreads_KokkosCore_config.h deleted file mode 100644 index c5a2d1d707..0000000000 --- a/lib/kokkos/core/unit_test/config/results/Pascal60_Qthreads_KokkosCore_config.h +++ /dev/null @@ -1,16 +0,0 @@ -/* --------------------------------------------- -Makefile constructed configuration: -Fri Sep 22 17:23:10 MDT 2017 -----------------------------------------------*/ -#if !defined(KOKKOS_MACROS_HPP) || defined(KOKKOS_CORE_CONFIG_H) -#error "Do not include KokkosCore_config.h directly; include Kokkos_Macros.hpp instead." -#else -#define KOKKOS_CORE_CONFIG_H -#endif -/* Execution Spaces */ -#define KOKKOS_HAVE_QTHREADS 1 -/* General Settings */ -#define KOKKOS_HAVE_CXX11 1 -#define KOKKOS_ENABLE_PROFILING -/* Optimization Settings */ -/* Cuda Settings */ diff --git a/lib/kokkos/core/unit_test/config/results/Pascal61_Qthreads_KokkosCore_config.h b/lib/kokkos/core/unit_test/config/results/Pascal61_Qthreads_KokkosCore_config.h deleted file mode 100644 index 958aac11da..0000000000 --- a/lib/kokkos/core/unit_test/config/results/Pascal61_Qthreads_KokkosCore_config.h +++ /dev/null @@ -1,16 +0,0 @@ -/* --------------------------------------------- -Makefile constructed configuration: -Fri Sep 22 17:23:13 MDT 2017 -----------------------------------------------*/ -#if !defined(KOKKOS_MACROS_HPP) || defined(KOKKOS_CORE_CONFIG_H) -#error "Do not include KokkosCore_config.h directly; include Kokkos_Macros.hpp instead." -#else -#define KOKKOS_CORE_CONFIG_H -#endif -/* Execution Spaces */ -#define KOKKOS_HAVE_QTHREADS 1 -/* General Settings */ -#define KOKKOS_HAVE_CXX11 1 -#define KOKKOS_ENABLE_PROFILING -/* Optimization Settings */ -/* Cuda Settings */ diff --git a/lib/kokkos/core/unit_test/config/results/Power7_Qthreads_KokkosCore_config.h b/lib/kokkos/core/unit_test/config/results/Power7_Qthreads_KokkosCore_config.h deleted file mode 100644 index dffa8a3f58..0000000000 --- a/lib/kokkos/core/unit_test/config/results/Power7_Qthreads_KokkosCore_config.h +++ /dev/null @@ -1,20 +0,0 @@ -/* --------------------------------------------- -Makefile constructed configuration: -Fri Sep 22 17:22:22 MDT 2017 -----------------------------------------------*/ -#if !defined(KOKKOS_MACROS_HPP) || defined(KOKKOS_CORE_CONFIG_H) -#error "Do not include KokkosCore_config.h directly; include Kokkos_Macros.hpp instead." -#else -#define KOKKOS_CORE_CONFIG_H -#endif -/* Execution Spaces */ -#define KOKKOS_HAVE_QTHREADS 1 -#ifndef __CUDA_ARCH__ -#define KOKKOS_USE_ISA_POWERPCBE -#endif -/* General Settings */ -#define KOKKOS_HAVE_CXX11 1 -#define KOKKOS_ENABLE_PROFILING -/* Optimization Settings */ -/* Cuda Settings */ -#define KOKKOS_ARCH_POWER7 1 diff --git a/lib/kokkos/core/unit_test/config/results/Power8_Qthreads_KokkosCore_config.h b/lib/kokkos/core/unit_test/config/results/Power8_Qthreads_KokkosCore_config.h deleted file mode 100644 index 9da90f4f7e..0000000000 --- a/lib/kokkos/core/unit_test/config/results/Power8_Qthreads_KokkosCore_config.h +++ /dev/null @@ -1,20 +0,0 @@ -/* --------------------------------------------- -Makefile constructed configuration: -Fri Sep 22 17:22:25 MDT 2017 -----------------------------------------------*/ -#if !defined(KOKKOS_MACROS_HPP) || defined(KOKKOS_CORE_CONFIG_H) -#error "Do not include KokkosCore_config.h directly; include Kokkos_Macros.hpp instead." -#else -#define KOKKOS_CORE_CONFIG_H -#endif -/* Execution Spaces */ -#define KOKKOS_HAVE_QTHREADS 1 -#ifndef __CUDA_ARCH__ -#define KOKKOS_USE_ISA_POWERPCLE -#endif -/* General Settings */ -#define KOKKOS_HAVE_CXX11 1 -#define KOKKOS_ENABLE_PROFILING -/* Optimization Settings */ -/* Cuda Settings */ -#define KOKKOS_ARCH_POWER8 1 diff --git a/lib/kokkos/core/unit_test/config/results/Power9_Qthreads_KokkosCore_config.h b/lib/kokkos/core/unit_test/config/results/Power9_Qthreads_KokkosCore_config.h deleted file mode 100644 index 5c5be2ed3c..0000000000 --- a/lib/kokkos/core/unit_test/config/results/Power9_Qthreads_KokkosCore_config.h +++ /dev/null @@ -1,20 +0,0 @@ -/* --------------------------------------------- -Makefile constructed configuration: -Fri Sep 22 17:22:28 MDT 2017 -----------------------------------------------*/ -#if !defined(KOKKOS_MACROS_HPP) || defined(KOKKOS_CORE_CONFIG_H) -#error "Do not include KokkosCore_config.h directly; include Kokkos_Macros.hpp instead." -#else -#define KOKKOS_CORE_CONFIG_H -#endif -/* Execution Spaces */ -#define KOKKOS_HAVE_QTHREADS 1 -#ifndef __CUDA_ARCH__ -#define KOKKOS_USE_ISA_POWERPCLE -#endif -/* General Settings */ -#define KOKKOS_HAVE_CXX11 1 -#define KOKKOS_ENABLE_PROFILING -/* Optimization Settings */ -/* Cuda Settings */ -#define KOKKOS_ARCH_POWER9 1 diff --git a/lib/kokkos/core/unit_test/config/results/SKX_Qthreads_KokkosCore_config.h b/lib/kokkos/core/unit_test/config/results/SKX_Qthreads_KokkosCore_config.h deleted file mode 100644 index 2e4b1d61ef..0000000000 --- a/lib/kokkos/core/unit_test/config/results/SKX_Qthreads_KokkosCore_config.h +++ /dev/null @@ -1,23 +0,0 @@ -/* --------------------------------------------- -Makefile constructed configuration: -Fri Sep 22 17:22:42 MDT 2017 -----------------------------------------------*/ -#if !defined(KOKKOS_MACROS_HPP) || defined(KOKKOS_CORE_CONFIG_H) -#error "Do not include KokkosCore_config.h directly; include Kokkos_Macros.hpp instead." -#else -#define KOKKOS_CORE_CONFIG_H -#endif -/* Execution Spaces */ -#define KOKKOS_HAVE_QTHREADS 1 -#ifndef __CUDA_ARCH__ -#define KOKKOS_ENABLE_TM -#endif -#ifndef __CUDA_ARCH__ -#define KOKKOS_USE_ISA_X86_64 -#endif -/* General Settings */ -#define KOKKOS_HAVE_CXX11 1 -#define KOKKOS_ENABLE_PROFILING -/* Optimization Settings */ -/* Cuda Settings */ -#define KOKKOS_ARCH_AVX512XEON 1 diff --git a/lib/kokkos/core/unit_test/config/results/SNB_Qthreads_KokkosCore_config.h b/lib/kokkos/core/unit_test/config/results/SNB_Qthreads_KokkosCore_config.h deleted file mode 100644 index 2f0216f9c4..0000000000 --- a/lib/kokkos/core/unit_test/config/results/SNB_Qthreads_KokkosCore_config.h +++ /dev/null @@ -1,20 +0,0 @@ -/* --------------------------------------------- -Makefile constructed configuration: -Fri Sep 22 17:22:34 MDT 2017 -----------------------------------------------*/ -#if !defined(KOKKOS_MACROS_HPP) || defined(KOKKOS_CORE_CONFIG_H) -#error "Do not include KokkosCore_config.h directly; include Kokkos_Macros.hpp instead." -#else -#define KOKKOS_CORE_CONFIG_H -#endif -/* Execution Spaces */ -#define KOKKOS_HAVE_QTHREADS 1 -#ifndef __CUDA_ARCH__ -#define KOKKOS_USE_ISA_X86_64 -#endif -/* General Settings */ -#define KOKKOS_HAVE_CXX11 1 -#define KOKKOS_ENABLE_PROFILING -/* Optimization Settings */ -/* Cuda Settings */ -#define KOKKOS_ARCH_AVX 1 diff --git a/lib/kokkos/core/unit_test/config/results/WSM_Qthreads_KokkosCore_config.h b/lib/kokkos/core/unit_test/config/results/WSM_Qthreads_KokkosCore_config.h deleted file mode 100644 index d4a78790e3..0000000000 --- a/lib/kokkos/core/unit_test/config/results/WSM_Qthreads_KokkosCore_config.h +++ /dev/null @@ -1,20 +0,0 @@ -/* --------------------------------------------- -Makefile constructed configuration: -Fri Sep 22 17:22:31 MDT 2017 -----------------------------------------------*/ -#if !defined(KOKKOS_MACROS_HPP) || defined(KOKKOS_CORE_CONFIG_H) -#error "Do not include KokkosCore_config.h directly; include Kokkos_Macros.hpp instead." -#else -#define KOKKOS_CORE_CONFIG_H -#endif -/* Execution Spaces */ -#define KOKKOS_HAVE_QTHREADS 1 -#ifndef __CUDA_ARCH__ -#define KOKKOS_USE_ISA_X86_64 -#endif -/* General Settings */ -#define KOKKOS_HAVE_CXX11 1 -#define KOKKOS_ENABLE_PROFILING -/* Optimization Settings */ -/* Cuda Settings */ -#define KOKKOS_ARCH_SSE42 1 diff --git a/lib/kokkos/containers/unit_tests/cuda/TestCuda_BitSet.cpp b/lib/kokkos/core/unit_test/cuda/TestCuda_Concepts.cpp similarity index 98% rename from lib/kokkos/containers/unit_tests/cuda/TestCuda_BitSet.cpp rename to lib/kokkos/core/unit_test/cuda/TestCuda_Concepts.cpp index 5306ab3883..31b36cbd8a 100644 --- a/lib/kokkos/containers/unit_tests/cuda/TestCuda_BitSet.cpp +++ b/lib/kokkos/core/unit_test/cuda/TestCuda_Concepts.cpp @@ -1,4 +1,3 @@ - /* //@HEADER // ************************************************************************ @@ -44,4 +43,4 @@ */ #include -#include +#include diff --git a/lib/kokkos/core/unit_test/cuda/TestCuda_DeepCopyAlignment.cpp b/lib/kokkos/core/unit_test/cuda/TestCuda_DeepCopyAlignment.cpp index 16793abe08..e8ce7381b4 100644 --- a/lib/kokkos/core/unit_test/cuda/TestCuda_DeepCopyAlignment.cpp +++ b/lib/kokkos/core/unit_test/cuda/TestCuda_DeepCopyAlignment.cpp @@ -43,6 +43,4 @@ */ #include -#if defined(KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA) #include -#endif diff --git a/lib/kokkos/containers/unit_tests/cuda/TestCuda_OffsetView.cpp b/lib/kokkos/core/unit_test/cuda/TestCuda_RangePolicyRequire.cpp similarity index 98% rename from lib/kokkos/containers/unit_tests/cuda/TestCuda_OffsetView.cpp rename to lib/kokkos/core/unit_test/cuda/TestCuda_RangePolicyRequire.cpp index b2e851d099..1317705399 100644 --- a/lib/kokkos/containers/unit_tests/cuda/TestCuda_OffsetView.cpp +++ b/lib/kokkos/core/unit_test/cuda/TestCuda_RangePolicyRequire.cpp @@ -44,4 +44,4 @@ */ #include -#include +#include diff --git a/lib/kokkos/core/unit_test/cuda/TestCuda_Spaces.cpp b/lib/kokkos/core/unit_test/cuda/TestCuda_Spaces.cpp index 800d589e94..d68ffb0865 100644 --- a/lib/kokkos/core/unit_test/cuda/TestCuda_Spaces.cpp +++ b/lib/kokkos/core/unit_test/cuda/TestCuda_Spaces.cpp @@ -280,73 +280,6 @@ TEST(cuda, uvm) { } } -/* Removing UVM Allocs Test due to added time to complete overall unit test - * The issue verified with this unit test appears to no longer be an - * problem. Refer to github issue 1880 for more details - * -TEST( cuda, uvm_num_allocs ) -{ - // The max number of UVM allocations allowed is 65536. - #define MAX_NUM_ALLOCS 65536 - - if ( Kokkos::CudaUVMSpace::available() ) { - struct TestMaxUVMAllocs { - - using view_type = Kokkos::View< double*, Kokkos::CudaUVMSpace >; - using view_of_view_type = Kokkos::View< view_type[ MAX_NUM_ALLOCS ] - , Kokkos::CudaUVMSpace >; - - TestMaxUVMAllocs() : view_allocs_test( "view_allocs_test" ) - { - for ( auto i = 0; i < MAX_NUM_ALLOCS; ++i ) { - - // Kokkos will throw a runtime exception if an attempt is made to - // allocate more than the maximum number of uvm allocations. - - // In this test, the max num of allocs occurs when i = MAX_NUM_ALLOCS -- 1 - // since the 'outer' view counts as one UVM allocation, leaving - // 65535 possible UVM allocations, that is 'i in [0, 65535)'. - - // The test will catch the exception thrown in this case and continue. - - if ( i == ( MAX_NUM_ALLOCS - 1 ) ) { - EXPECT_ANY_THROW( { view_allocs_test( i ) = view_type( "inner_view", -1 ); } ); - } - else { - if ( i < MAX_NUM_ALLOCS - 1000 ) { - EXPECT_NO_THROW( { view_allocs_test( i ) = view_type( -"inner_view", 1 ); } ); } else { // This might or might not throw depending on -compilation options. try { view_allocs_test( i ) = view_type( "inner_view", 1 ); - } - catch ( ... ) {} - } - } - - } // End allocation for loop. - - for ( auto i = 0; i < MAX_NUM_ALLOCS - 1; ++i ) { - - view_allocs_test( i ) = view_type(); - - } // End deallocation for loop. - - view_allocs_test = view_of_view_type(); // Deallocate the view of views. - } - - // Member. - view_of_view_type view_allocs_test; - }; - - // Trigger the test via the TestMaxUVMAllocs constructor. - TestMaxUVMAllocs(); - } - - #undef MAX_NUM_ALLOCS -} -*/ - template struct TestViewCudaAccessible { enum { N = 1000 }; diff --git a/lib/kokkos/core/unit_test/cuda/TestCuda_Team.cpp b/lib/kokkos/core/unit_test/cuda/TestCuda_Team.cpp index 93aae95bac..fe57437989 100644 --- a/lib/kokkos/core/unit_test/cuda/TestCuda_Team.cpp +++ b/lib/kokkos/core/unit_test/cuda/TestCuda_Team.cpp @@ -79,26 +79,100 @@ TEST(TEST_CATEGORY, team_reduce) { Kokkos::Schedule >::test_reduce(1000); } -TEST(TEST_CATEGORY, team_broadcast) { - TestTeamBroadcast >::test_teambroadcast(0); - TestTeamBroadcast >::test_teambroadcast(0); - - TestTeamBroadcast >::test_teambroadcast(2); - TestTeamBroadcast >::test_teambroadcast(2); - - TestTeamBroadcast >::test_teambroadcast(16); - TestTeamBroadcast >::test_teambroadcast(16); - - TestTeamBroadcast >:: - test_teambroadcast(1000); - TestTeamBroadcast >:: - test_teambroadcast(1000); +TEST(TEST_CATEGORY, team_broadcast_long) { + TestTeamBroadcast, + long>::test_teambroadcast(0, 1); + TestTeamBroadcast, + long>::test_teambroadcast(0, 1); + + TestTeamBroadcast, + long>::test_teambroadcast(2, 1); + TestTeamBroadcast, + long>::test_teambroadcast(2, 1); + + TestTeamBroadcast, + long>::test_teambroadcast(16, 1); + TestTeamBroadcast, + long>::test_teambroadcast(16, 1); + + // TestTeamBroadcast, long + // >:: + // test_teambroadcast(1000, 1); + // TestTeamBroadcast, long + // >:: + // test_teambroadcast(1000, 1); +} + +TEST(TEST_CATEGORY, team_broadcast_char) { + TestTeamBroadcast, + unsigned char>::test_teambroadcast(0, 1); + TestTeamBroadcast, + unsigned char>::test_teambroadcast(0, 1); + + TestTeamBroadcast, + unsigned char>::test_teambroadcast(2, 1); + TestTeamBroadcast, + unsigned char>::test_teambroadcast(2, 1); + + TestTeamBroadcast, + unsigned char>::test_teambroadcast(16, 1); + TestTeamBroadcast, + unsigned char>::test_teambroadcast(16, 1); + + // TestTeamBroadcast, long + // >:: + // test_teambroadcast(1000, 1); + // TestTeamBroadcast, long + // >:: + // test_teambroadcast(1000, 1); +} + +TEST(TEST_CATEGORY, team_broadcast_float) { + TestTeamBroadcast, + float>::test_teambroadcast(0, 1.3); + TestTeamBroadcast, + float>::test_teambroadcast(0, 1.3); + + TestTeamBroadcast, + float>::test_teambroadcast(2, 1.3); + TestTeamBroadcast, + float>::test_teambroadcast(2, 1.3); + + TestTeamBroadcast, + float>::test_teambroadcast(16, 1.3); + TestTeamBroadcast, + float>::test_teambroadcast(16, 1.3); + + // TestTeamBroadcast, float + // >:: + // test_teambroadcast(1000, 1.3); + // TestTeamBroadcast, float + // >:: + // test_teambroadcast(1000, 1.3); +} + +TEST(TEST_CATEGORY, team_broadcast_double) { + TestTeamBroadcast, + double>::test_teambroadcast(0, 1.3); + TestTeamBroadcast, + double>::test_teambroadcast(0, 1.3); + + TestTeamBroadcast, + double>::test_teambroadcast(2, 1.3); + TestTeamBroadcast, + double>::test_teambroadcast(2, 1.3); + + TestTeamBroadcast, + double>::test_teambroadcast(16, 1.3); + TestTeamBroadcast, + double>::test_teambroadcast(16, 1.3); + + // TestTeamBroadcast, double + // >:: + // test_teambroadcast(1000, 1.3); + // TestTeamBroadcast, + // double >:: + // test_teambroadcast(1000, 1.3); } } // namespace Test diff --git a/lib/kokkos/core/unit_test/cuda/TestCuda_TeamScratch.cpp b/lib/kokkos/core/unit_test/cuda/TestCuda_TeamScratch.cpp index 858bf599b5..63291dbbb4 100644 --- a/lib/kokkos/core/unit_test/cuda/TestCuda_TeamScratch.cpp +++ b/lib/kokkos/core/unit_test/cuda/TestCuda_TeamScratch.cpp @@ -58,7 +58,6 @@ TEST(TEST_CATEGORY, team_scratch_request) { } #if defined(KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA) -#if !defined(KOKKOS_ENABLE_CUDA) || (8000 <= CUDA_VERSION) TEST(TEST_CATEGORY, team_lambda_shared_request) { TestLambdaSharedTeam >(); @@ -68,7 +67,6 @@ TEST(TEST_CATEGORY, team_lambda_shared_request) { TEST(TEST_CATEGORY, scratch_align) { TestScratchAlignment(); } #endif -#endif TEST(TEST_CATEGORY, shmem_size) { TestShmemSize(); } diff --git a/lib/kokkos/core/unit_test/cuda/TestCuda_ViewAPI_e.cpp b/lib/kokkos/core/unit_test/cuda/TestCuda_ViewAPI_e.cpp index a15bdbd8d3..754b90acac 100644 --- a/lib/kokkos/core/unit_test/cuda/TestCuda_ViewAPI_e.cpp +++ b/lib/kokkos/core/unit_test/cuda/TestCuda_ViewAPI_e.cpp @@ -44,3 +44,4 @@ #include #include +#include diff --git a/lib/kokkos/core/unit_test/default/TestDefaultDeviceType_d.cpp b/lib/kokkos/core/unit_test/default/TestDefaultDeviceType_d.cpp index 3502e1762f..ff87b7802c 100644 --- a/lib/kokkos/core/unit_test/default/TestDefaultDeviceType_d.cpp +++ b/lib/kokkos/core/unit_test/default/TestDefaultDeviceType_d.cpp @@ -61,7 +61,7 @@ TEST(defaultdevicetype, malloc) { Kokkos::kokkos_free(data); int* data2 = (int*)Kokkos::kokkos_malloc(0); - ASSERT_TRUE(data2 == NULL); + ASSERT_TRUE(data2 == nullptr); Kokkos::kokkos_free(data2); } diff --git a/lib/kokkos/core/unit_test/qthreads/TestQthreads_Category.hpp b/lib/kokkos/core/unit_test/hip/TestHIPHostPinned_Category.hpp similarity index 91% rename from lib/kokkos/core/unit_test/qthreads/TestQthreads_Category.hpp rename to lib/kokkos/core/unit_test/hip/TestHIPHostPinned_Category.hpp index fc0a088700..12c69926c7 100644 --- a/lib/kokkos/core/unit_test/qthreads/TestQthreads_Category.hpp +++ b/lib/kokkos/core/unit_test/hip/TestHIPHostPinned_Category.hpp @@ -42,13 +42,12 @@ //@HEADER */ -#ifndef KOKKOS_TEST_QTHREADS_HPP -#define KOKKOS_TEST_QTHREADS_HPP +#ifndef KOKKOS_TEST_HIPHOSTPINNED_HPP +#define KOKKOS_TEST_HIPHOSTPINNED_HPP #include -#define TEST_CATEGORY qthreads -#define TEST_CATEGORY_DEATH qthreads_DeathTest -#define TEST_EXECSPACE Kokkos::Qthreads +#define TEST_CATEGORY hip_hostpinned +#define TEST_EXECSPACE Kokkos::Experimental::HIPHostPinnedSpace #endif diff --git a/lib/kokkos/core/unit_test/qthreads/TestQthreads_SubView_c10.cpp b/lib/kokkos/core/unit_test/hip/TestHIPHostPinned_SharedAlloc.cpp similarity index 91% rename from lib/kokkos/core/unit_test/qthreads/TestQthreads_SubView_c10.cpp rename to lib/kokkos/core/unit_test/hip/TestHIPHostPinned_SharedAlloc.cpp index e42c464020..7b2db4f8bc 100644 --- a/lib/kokkos/core/unit_test/qthreads/TestQthreads_SubView_c10.cpp +++ b/lib/kokkos/core/unit_test/hip/TestHIPHostPinned_SharedAlloc.cpp @@ -42,14 +42,13 @@ //@HEADER */ -#include +#include +#include namespace Test { -TEST_F(qthreads, view_subview_3d_from_5d_right) { -#if 0 - TestViewSubview::test_3d_subview_5d_right< Kokkos::Qthreads >(); -#endif +TEST(TEST_CATEGORY, impl_shared_alloc) { + test_shared_alloc(); } } // namespace Test diff --git a/lib/kokkos/core/unit_test/qthreads/TestQqthreads_ViewAPI_a.cpp b/lib/kokkos/core/unit_test/hip/TestHIPHostPinned_ViewAPI_a.cpp similarity index 97% rename from lib/kokkos/core/unit_test/qthreads/TestQqthreads_ViewAPI_a.cpp rename to lib/kokkos/core/unit_test/hip/TestHIPHostPinned_ViewAPI_a.cpp index 4339c1b5a0..53f0371b23 100644 --- a/lib/kokkos/core/unit_test/qthreads/TestQqthreads_ViewAPI_a.cpp +++ b/lib/kokkos/core/unit_test/hip/TestHIPHostPinned_ViewAPI_a.cpp @@ -42,5 +42,5 @@ //@HEADER */ -#include +#include #include diff --git a/lib/kokkos/core/unit_test/qthreads/TestQqthreads_ViewAPI_b.cpp b/lib/kokkos/core/unit_test/hip/TestHIPHostPinned_ViewAPI_b.cpp similarity index 97% rename from lib/kokkos/core/unit_test/qthreads/TestQqthreads_ViewAPI_b.cpp rename to lib/kokkos/core/unit_test/hip/TestHIPHostPinned_ViewAPI_b.cpp index bcbef94ab7..2e3685d610 100644 --- a/lib/kokkos/core/unit_test/qthreads/TestQqthreads_ViewAPI_b.cpp +++ b/lib/kokkos/core/unit_test/hip/TestHIPHostPinned_ViewAPI_b.cpp @@ -42,5 +42,5 @@ //@HEADER */ -#include +#include #include diff --git a/lib/kokkos/core/unit_test/qthreads/TestQqthreads_ViewAPI_c.cpp b/lib/kokkos/core/unit_test/hip/TestHIPHostPinned_ViewAPI_c.cpp similarity index 97% rename from lib/kokkos/core/unit_test/qthreads/TestQqthreads_ViewAPI_c.cpp rename to lib/kokkos/core/unit_test/hip/TestHIPHostPinned_ViewAPI_c.cpp index 21c9fd890c..079a244d43 100644 --- a/lib/kokkos/core/unit_test/qthreads/TestQqthreads_ViewAPI_c.cpp +++ b/lib/kokkos/core/unit_test/hip/TestHIPHostPinned_ViewAPI_c.cpp @@ -42,5 +42,5 @@ //@HEADER */ -#include +#include #include diff --git a/lib/kokkos/core/unit_test/qthreads/TestQqthreads_ViewAPI_d.cpp b/lib/kokkos/core/unit_test/hip/TestHIPHostPinned_ViewAPI_d.cpp similarity index 97% rename from lib/kokkos/core/unit_test/qthreads/TestQqthreads_ViewAPI_d.cpp rename to lib/kokkos/core/unit_test/hip/TestHIPHostPinned_ViewAPI_d.cpp index ef4bddc572..bc3843b2c1 100644 --- a/lib/kokkos/core/unit_test/qthreads/TestQqthreads_ViewAPI_d.cpp +++ b/lib/kokkos/core/unit_test/hip/TestHIPHostPinned_ViewAPI_d.cpp @@ -42,5 +42,5 @@ //@HEADER */ -#include +#include #include diff --git a/lib/kokkos/core/unit_test/qthreads/TestQqthreads_ViewAPI_e.cpp b/lib/kokkos/core/unit_test/hip/TestHIPHostPinned_ViewAPI_e.cpp similarity index 97% rename from lib/kokkos/core/unit_test/qthreads/TestQqthreads_ViewAPI_e.cpp rename to lib/kokkos/core/unit_test/hip/TestHIPHostPinned_ViewAPI_e.cpp index bba5916a5a..1c80e05fe0 100644 --- a/lib/kokkos/core/unit_test/qthreads/TestQqthreads_ViewAPI_e.cpp +++ b/lib/kokkos/core/unit_test/hip/TestHIPHostPinned_ViewAPI_e.cpp @@ -42,5 +42,5 @@ //@HEADER */ -#include +#include #include diff --git a/lib/kokkos/containers/unit_tests/cuda/TestCuda_DynamicView.cpp b/lib/kokkos/core/unit_test/hip/TestHIPHostPinned_ViewCopy.cpp similarity index 96% rename from lib/kokkos/containers/unit_tests/cuda/TestCuda_DynamicView.cpp rename to lib/kokkos/core/unit_test/hip/TestHIPHostPinned_ViewCopy.cpp index 9eccb05a25..59674ad22f 100644 --- a/lib/kokkos/containers/unit_tests/cuda/TestCuda_DynamicView.cpp +++ b/lib/kokkos/core/unit_test/hip/TestHIPHostPinned_ViewCopy.cpp @@ -1,4 +1,3 @@ - /* //@HEADER // ************************************************************************ @@ -43,5 +42,5 @@ //@HEADER */ -#include -#include +#include +#include diff --git a/lib/kokkos/containers/unit_tests/cuda/TestCuda_DynRankViewAPI_rank12345.cpp b/lib/kokkos/core/unit_test/hip/TestHIPHostPinned_ViewMapping_a.cpp similarity index 96% rename from lib/kokkos/containers/unit_tests/cuda/TestCuda_DynRankViewAPI_rank12345.cpp rename to lib/kokkos/core/unit_test/hip/TestHIPHostPinned_ViewMapping_a.cpp index 66d2d17e8b..f9b5608d1b 100644 --- a/lib/kokkos/containers/unit_tests/cuda/TestCuda_DynRankViewAPI_rank12345.cpp +++ b/lib/kokkos/core/unit_test/hip/TestHIPHostPinned_ViewMapping_a.cpp @@ -1,4 +1,3 @@ - /* //@HEADER // ************************************************************************ @@ -43,5 +42,5 @@ //@HEADER */ -#include -#include +#include +#include diff --git a/lib/kokkos/containers/unit_tests/cuda/TestCuda_DynRankViewAPI_generic.cpp b/lib/kokkos/core/unit_test/hip/TestHIPHostPinned_ViewMapping_b.cpp similarity index 96% rename from lib/kokkos/containers/unit_tests/cuda/TestCuda_DynRankViewAPI_generic.cpp rename to lib/kokkos/core/unit_test/hip/TestHIPHostPinned_ViewMapping_b.cpp index 609c8b41a5..bff68fc072 100644 --- a/lib/kokkos/containers/unit_tests/cuda/TestCuda_DynRankViewAPI_generic.cpp +++ b/lib/kokkos/core/unit_test/hip/TestHIPHostPinned_ViewMapping_b.cpp @@ -1,4 +1,3 @@ - /* //@HEADER // ************************************************************************ @@ -43,5 +42,5 @@ //@HEADER */ -#include -#include +#include +#include diff --git a/lib/kokkos/core/unit_test/hip/TestHIPHostPinned_ViewMapping_subview.cpp b/lib/kokkos/core/unit_test/hip/TestHIPHostPinned_ViewMapping_subview.cpp new file mode 100644 index 0000000000..cfa9da5495 --- /dev/null +++ b/lib/kokkos/core/unit_test/hip/TestHIPHostPinned_ViewMapping_subview.cpp @@ -0,0 +1,46 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// 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 NTESS "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 NTESS 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/unit_test/qthreads/TestQqthreads_AtomicOperations_complexdouble.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_AtomicOperations_complexdouble.cpp similarity index 97% rename from lib/kokkos/core/unit_test/qthreads/TestQqthreads_AtomicOperations_complexdouble.cpp rename to lib/kokkos/core/unit_test/hip/TestHIP_AtomicOperations_complexdouble.cpp index 9c6589539a..644a825bfc 100644 --- a/lib/kokkos/core/unit_test/qthreads/TestQqthreads_AtomicOperations_complexdouble.cpp +++ b/lib/kokkos/core/unit_test/hip/TestHIP_AtomicOperations_complexdouble.cpp @@ -42,5 +42,5 @@ //@HEADER */ -#include +#include #include diff --git a/lib/kokkos/core/unit_test/qthreads/TestQqthreads_AtomicOperations_complexfloat.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_AtomicOperations_complexfloat.cpp similarity index 97% rename from lib/kokkos/core/unit_test/qthreads/TestQqthreads_AtomicOperations_complexfloat.cpp rename to lib/kokkos/core/unit_test/hip/TestHIP_AtomicOperations_complexfloat.cpp index 1163da7285..f8aaed88cb 100644 --- a/lib/kokkos/core/unit_test/qthreads/TestQqthreads_AtomicOperations_complexfloat.cpp +++ b/lib/kokkos/core/unit_test/hip/TestHIP_AtomicOperations_complexfloat.cpp @@ -42,5 +42,5 @@ //@HEADER */ -#include +#include #include diff --git a/lib/kokkos/core/unit_test/qthreads/TestQqthreads_AtomicOperations_double.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_AtomicOperations_double.cpp similarity index 97% rename from lib/kokkos/core/unit_test/qthreads/TestQqthreads_AtomicOperations_double.cpp rename to lib/kokkos/core/unit_test/hip/TestHIP_AtomicOperations_double.cpp index aee8ccde7f..9adeaa76ba 100644 --- a/lib/kokkos/core/unit_test/qthreads/TestQqthreads_AtomicOperations_double.cpp +++ b/lib/kokkos/core/unit_test/hip/TestHIP_AtomicOperations_double.cpp @@ -42,5 +42,5 @@ //@HEADER */ -#include +#include #include diff --git a/lib/kokkos/core/unit_test/qthreads/TestQqthreads_AtomicOperations_float.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_AtomicOperations_float.cpp similarity index 97% rename from lib/kokkos/core/unit_test/qthreads/TestQqthreads_AtomicOperations_float.cpp rename to lib/kokkos/core/unit_test/hip/TestHIP_AtomicOperations_float.cpp index 0bfa8d43d6..ba7c6d9bc3 100644 --- a/lib/kokkos/core/unit_test/qthreads/TestQqthreads_AtomicOperations_float.cpp +++ b/lib/kokkos/core/unit_test/hip/TestHIP_AtomicOperations_float.cpp @@ -42,5 +42,5 @@ //@HEADER */ -#include +#include #include diff --git a/lib/kokkos/core/unit_test/qthreads/TestQqthreads_AtomicOperations_int.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_AtomicOperations_int.cpp similarity index 97% rename from lib/kokkos/core/unit_test/qthreads/TestQqthreads_AtomicOperations_int.cpp rename to lib/kokkos/core/unit_test/hip/TestHIP_AtomicOperations_int.cpp index 8900daf81e..840f2dbd06 100644 --- a/lib/kokkos/core/unit_test/qthreads/TestQqthreads_AtomicOperations_int.cpp +++ b/lib/kokkos/core/unit_test/hip/TestHIP_AtomicOperations_int.cpp @@ -42,5 +42,5 @@ //@HEADER */ -#include +#include #include diff --git a/lib/kokkos/core/unit_test/qthreads/TestQqthreads_AtomicOperations_longint.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_AtomicOperations_longint.cpp similarity index 97% rename from lib/kokkos/core/unit_test/qthreads/TestQqthreads_AtomicOperations_longint.cpp rename to lib/kokkos/core/unit_test/hip/TestHIP_AtomicOperations_longint.cpp index 9dcff92312..be30507663 100644 --- a/lib/kokkos/core/unit_test/qthreads/TestQqthreads_AtomicOperations_longint.cpp +++ b/lib/kokkos/core/unit_test/hip/TestHIP_AtomicOperations_longint.cpp @@ -42,5 +42,5 @@ //@HEADER */ -#include +#include #include diff --git a/lib/kokkos/core/unit_test/qthreads/TestQqthreads_AtomicOperations_longlongint.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_AtomicOperations_longlongint.cpp similarity index 97% rename from lib/kokkos/core/unit_test/qthreads/TestQqthreads_AtomicOperations_longlongint.cpp rename to lib/kokkos/core/unit_test/hip/TestHIP_AtomicOperations_longlongint.cpp index 0f5a0b7df7..85f54dee14 100644 --- a/lib/kokkos/core/unit_test/qthreads/TestQqthreads_AtomicOperations_longlongint.cpp +++ b/lib/kokkos/core/unit_test/hip/TestHIP_AtomicOperations_longlongint.cpp @@ -42,5 +42,5 @@ //@HEADER */ -#include +#include #include diff --git a/lib/kokkos/core/unit_test/qthreads/TestQqthreads_AtomicOperations_unsignedint.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_AtomicOperations_unsignedint.cpp similarity index 97% rename from lib/kokkos/core/unit_test/qthreads/TestQqthreads_AtomicOperations_unsignedint.cpp rename to lib/kokkos/core/unit_test/hip/TestHIP_AtomicOperations_unsignedint.cpp index eee44e84a3..d738b608c2 100644 --- a/lib/kokkos/core/unit_test/qthreads/TestQqthreads_AtomicOperations_unsignedint.cpp +++ b/lib/kokkos/core/unit_test/hip/TestHIP_AtomicOperations_unsignedint.cpp @@ -42,5 +42,5 @@ //@HEADER */ -#include +#include #include diff --git a/lib/kokkos/core/unit_test/qthreads/TestQqthreads_AtomicOperations_unsignedlongint.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_AtomicOperations_unsignedlongint.cpp similarity index 97% rename from lib/kokkos/core/unit_test/qthreads/TestQqthreads_AtomicOperations_unsignedlongint.cpp rename to lib/kokkos/core/unit_test/hip/TestHIP_AtomicOperations_unsignedlongint.cpp index 9379a6efa8..ab25f5d142 100644 --- a/lib/kokkos/core/unit_test/qthreads/TestQqthreads_AtomicOperations_unsignedlongint.cpp +++ b/lib/kokkos/core/unit_test/hip/TestHIP_AtomicOperations_unsignedlongint.cpp @@ -42,5 +42,5 @@ //@HEADER */ -#include +#include #include diff --git a/lib/kokkos/containers/unit_tests/cuda/TestCuda_DualView.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_AtomicViews.cpp similarity index 96% rename from lib/kokkos/containers/unit_tests/cuda/TestCuda_DualView.cpp rename to lib/kokkos/core/unit_test/hip/TestHIP_AtomicViews.cpp index 5641966db4..0dae0cb9eb 100644 --- a/lib/kokkos/containers/unit_tests/cuda/TestCuda_DualView.cpp +++ b/lib/kokkos/core/unit_test/hip/TestHIP_AtomicViews.cpp @@ -43,5 +43,5 @@ //@HEADER */ -#include -#include +#include +#include diff --git a/lib/kokkos/core/unit_test/hip/TestHIP_Atomics.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_Atomics.cpp new file mode 100644 index 0000000000..dda1388237 --- /dev/null +++ b/lib/kokkos/core/unit_test/hip/TestHIP_Atomics.cpp @@ -0,0 +1,46 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// 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 NTESS "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 NTESS 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/unit_test/hip/TestHIP_Category.hpp b/lib/kokkos/core/unit_test/hip/TestHIP_Category.hpp new file mode 100644 index 0000000000..8cae165c33 --- /dev/null +++ b/lib/kokkos/core/unit_test/hip/TestHIP_Category.hpp @@ -0,0 +1,53 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// 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 NTESS "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 NTESS 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_HIP_HPP +#define KOKKOS_TEST_HIP_HPP + +#include + +#define TEST_CATEGORY hip +#define TEST_EXECSPACE Kokkos::Experimental::HIP + +#endif diff --git a/lib/kokkos/containers/unit_tests/cuda/TestCuda_Vector.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_Complex.cpp similarity index 96% rename from lib/kokkos/containers/unit_tests/cuda/TestCuda_Vector.cpp rename to lib/kokkos/core/unit_test/hip/TestHIP_Complex.cpp index 408d0c76fc..f628fb834f 100644 --- a/lib/kokkos/containers/unit_tests/cuda/TestCuda_Vector.cpp +++ b/lib/kokkos/core/unit_test/hip/TestHIP_Complex.cpp @@ -43,5 +43,5 @@ //@HEADER */ -#include -#include +#include +#include diff --git a/lib/kokkos/core/unit_test/hip/TestHIP_Concepts.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_Concepts.cpp new file mode 100644 index 0000000000..bfdfda15db --- /dev/null +++ b/lib/kokkos/core/unit_test/hip/TestHIP_Concepts.cpp @@ -0,0 +1,46 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// 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 NTESS "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 NTESS 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/unit_test/hip/TestHIP_Crs.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_Crs.cpp new file mode 100644 index 0000000000..b01b787743 --- /dev/null +++ b/lib/kokkos/core/unit_test/hip/TestHIP_Crs.cpp @@ -0,0 +1,46 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// 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 NTESS "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 NTESS 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/unit_test/qthreads/TestQthreads_DeepCopyAlignment.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_DeepCopyAlignment.cpp similarity index 97% rename from lib/kokkos/core/unit_test/qthreads/TestQthreads_DeepCopyAlignment.cpp rename to lib/kokkos/core/unit_test/hip/TestHIP_DeepCopyAlignment.cpp index edfaa08d29..43f9d4b5c3 100644 --- a/lib/kokkos/core/unit_test/qthreads/TestQthreads_DeepCopyAlignment.cpp +++ b/lib/kokkos/core/unit_test/hip/TestHIP_DeepCopyAlignment.cpp @@ -42,5 +42,5 @@ //@HEADER */ -#include +#include #include diff --git a/lib/kokkos/containers/unit_tests/cuda/TestCuda_ErrorReporter.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_FunctorAnalysis.cpp similarity index 96% rename from lib/kokkos/containers/unit_tests/cuda/TestCuda_ErrorReporter.cpp rename to lib/kokkos/core/unit_test/hip/TestHIP_FunctorAnalysis.cpp index 806a3c6ecc..f3ae5f47ca 100644 --- a/lib/kokkos/containers/unit_tests/cuda/TestCuda_ErrorReporter.cpp +++ b/lib/kokkos/core/unit_test/hip/TestHIP_FunctorAnalysis.cpp @@ -43,5 +43,5 @@ //@HEADER */ -#include -#include +#include +#include diff --git a/lib/kokkos/core/unit_test/hip/TestHIP_Init.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_Init.cpp new file mode 100644 index 0000000000..16a73293b3 --- /dev/null +++ b/lib/kokkos/core/unit_test/hip/TestHIP_Init.cpp @@ -0,0 +1,49 @@ + +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// 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 NTESS "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 NTESS 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 diff --git a/lib/kokkos/core/unit_test/hip/TestHIP_InterOp_Init.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_InterOp_Init.cpp new file mode 100644 index 0000000000..0dc279fc78 --- /dev/null +++ b/lib/kokkos/core/unit_test/hip/TestHIP_InterOp_Init.cpp @@ -0,0 +1,85 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// 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 NTESS "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 NTESS 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 + +namespace Test { + +__global__ void offset(int* p) { + int idx = hipBlockIdx_x * hipBlockDim_x + hipThreadIdx_x; + if (idx < 100) { + p[idx] += idx; + } +} + +// Test whether allocations survive Kokkos initialize/finalize if done via Raw +// HIP. +TEST(hip, raw_hip_interop) { + int* p; + hipMalloc(&p, sizeof(int) * 100); + Kokkos::InitArguments arguments{-1, -1, -1, false}; + Kokkos::initialize(arguments); + + Kokkos::View> v(p, 100); + Kokkos::deep_copy(v, 5); + + Kokkos::finalize(); + + hipLaunchKernelGGL(offset, dim3(100), dim3(100), 0, 0, p); + HIP_SAFE_CALL(hipDeviceSynchronize()); + + int* h_p = new int[100]; + hipMemcpy(h_p, p, sizeof(int) * 100, hipMemcpyDefault); + HIP_SAFE_CALL(hipDeviceSynchronize()); + int64_t sum = 0; + int64_t sum_expect = 0; + for (int i = 0; i < 100; i++) { + sum += h_p[i]; + sum_expect += 5 + i; + } + + ASSERT_EQ(sum, sum_expect); +} +} // namespace Test diff --git a/lib/kokkos/core/unit_test/hip/TestHIP_LocalDeepCopy.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_LocalDeepCopy.cpp new file mode 100644 index 0000000000..4fc7ca680b --- /dev/null +++ b/lib/kokkos/core/unit_test/hip/TestHIP_LocalDeepCopy.cpp @@ -0,0 +1,46 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// 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 NTESS "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 NTESS 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/unit_test/qthreads/TestQqthreads_MDRange_a.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_MDRange_a.cpp similarity index 97% rename from lib/kokkos/core/unit_test/qthreads/TestQqthreads_MDRange_a.cpp rename to lib/kokkos/core/unit_test/hip/TestHIP_MDRange_a.cpp index 7067d841e3..6bf23f1b2c 100644 --- a/lib/kokkos/core/unit_test/qthreads/TestQqthreads_MDRange_a.cpp +++ b/lib/kokkos/core/unit_test/hip/TestHIP_MDRange_a.cpp @@ -43,5 +43,5 @@ //@HEADER */ -#include +#include #include diff --git a/lib/kokkos/core/unit_test/qthreads/TestQqthreads_MDRange_b.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_MDRange_b.cpp similarity index 97% rename from lib/kokkos/core/unit_test/qthreads/TestQqthreads_MDRange_b.cpp rename to lib/kokkos/core/unit_test/hip/TestHIP_MDRange_b.cpp index 1f4ba9c984..d820fa02c9 100644 --- a/lib/kokkos/core/unit_test/qthreads/TestQqthreads_MDRange_b.cpp +++ b/lib/kokkos/core/unit_test/hip/TestHIP_MDRange_b.cpp @@ -43,5 +43,5 @@ //@HEADER */ -#include +#include #include diff --git a/lib/kokkos/core/unit_test/qthreads/TestQqthreads_MDRange_c.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_MDRange_c.cpp similarity index 97% rename from lib/kokkos/core/unit_test/qthreads/TestQqthreads_MDRange_c.cpp rename to lib/kokkos/core/unit_test/hip/TestHIP_MDRange_c.cpp index 37b4671d05..5c70cf6c6c 100644 --- a/lib/kokkos/core/unit_test/qthreads/TestQqthreads_MDRange_c.cpp +++ b/lib/kokkos/core/unit_test/hip/TestHIP_MDRange_c.cpp @@ -43,5 +43,5 @@ //@HEADER */ -#include +#include #include diff --git a/lib/kokkos/core/unit_test/qthreads/TestQqthreads_MDRange_d.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_MDRange_d.cpp similarity index 97% rename from lib/kokkos/core/unit_test/qthreads/TestQqthreads_MDRange_d.cpp rename to lib/kokkos/core/unit_test/hip/TestHIP_MDRange_d.cpp index 2bd1fbbfd5..a18fc24d11 100644 --- a/lib/kokkos/core/unit_test/qthreads/TestQqthreads_MDRange_d.cpp +++ b/lib/kokkos/core/unit_test/hip/TestHIP_MDRange_d.cpp @@ -43,5 +43,5 @@ //@HEADER */ -#include +#include #include diff --git a/lib/kokkos/core/unit_test/qthreads/TestQqthreads_MDRange_e.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_MDRange_e.cpp similarity index 97% rename from lib/kokkos/core/unit_test/qthreads/TestQqthreads_MDRange_e.cpp rename to lib/kokkos/core/unit_test/hip/TestHIP_MDRange_e.cpp index 659dd23d7f..fe011213d3 100644 --- a/lib/kokkos/core/unit_test/qthreads/TestQqthreads_MDRange_e.cpp +++ b/lib/kokkos/core/unit_test/hip/TestHIP_MDRange_e.cpp @@ -43,5 +43,5 @@ //@HEADER */ -#include +#include #include diff --git a/lib/kokkos/containers/unit_tests/hpx/TestHPX_Vector.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_RangePolicy.cpp similarity index 96% rename from lib/kokkos/containers/unit_tests/hpx/TestHPX_Vector.cpp rename to lib/kokkos/core/unit_test/hip/TestHIP_RangePolicy.cpp index d42cef4b28..5c87418209 100644 --- a/lib/kokkos/containers/unit_tests/hpx/TestHPX_Vector.cpp +++ b/lib/kokkos/core/unit_test/hip/TestHIP_RangePolicy.cpp @@ -43,5 +43,5 @@ //@HEADER */ -#include -#include +#include +#include diff --git a/lib/kokkos/core/unit_test/hip/TestHIP_RangePolicyRequire.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_RangePolicyRequire.cpp new file mode 100644 index 0000000000..6cf9a36f9f --- /dev/null +++ b/lib/kokkos/core/unit_test/hip/TestHIP_RangePolicyRequire.cpp @@ -0,0 +1,47 @@ + +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// 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 NTESS "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 NTESS 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/unit_test/hip/TestHIP_Reducers_a.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_Reducers_a.cpp new file mode 100644 index 0000000000..ec9331d50c --- /dev/null +++ b/lib/kokkos/core/unit_test/hip/TestHIP_Reducers_a.cpp @@ -0,0 +1,46 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// 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 NTESS "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 NTESS 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/unit_test/hip/TestHIP_Reducers_b.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_Reducers_b.cpp new file mode 100644 index 0000000000..c51c76ae2f --- /dev/null +++ b/lib/kokkos/core/unit_test/hip/TestHIP_Reducers_b.cpp @@ -0,0 +1,46 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// 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 NTESS "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 NTESS 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/unit_test/hip/TestHIP_Reducers_c.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_Reducers_c.cpp new file mode 100644 index 0000000000..42c21390a2 --- /dev/null +++ b/lib/kokkos/core/unit_test/hip/TestHIP_Reducers_c.cpp @@ -0,0 +1,46 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// 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 NTESS "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 NTESS 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/unit_test/hip/TestHIP_Reducers_d.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_Reducers_d.cpp new file mode 100644 index 0000000000..6014405c37 --- /dev/null +++ b/lib/kokkos/core/unit_test/hip/TestHIP_Reducers_d.cpp @@ -0,0 +1,46 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// 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 NTESS "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 NTESS 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/unit_test/hip/TestHIP_Reductions.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_Reductions.cpp new file mode 100644 index 0000000000..8bf8cc63aa --- /dev/null +++ b/lib/kokkos/core/unit_test/hip/TestHIP_Reductions.cpp @@ -0,0 +1,47 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// 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 NTESS "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 NTESS 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 diff --git a/lib/kokkos/core/unit_test/hip/TestHIP_Scan.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_Scan.cpp new file mode 100644 index 0000000000..8dc06c7060 --- /dev/null +++ b/lib/kokkos/core/unit_test/hip/TestHIP_Scan.cpp @@ -0,0 +1,47 @@ + +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// 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 NTESS "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 NTESS 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/unit_test/qthreads/TestQthreads_SubView_a.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_ScanUnit.cpp similarity index 56% rename from lib/kokkos/core/unit_test/qthreads/TestQthreads_SubView_a.cpp rename to lib/kokkos/core/unit_test/hip/TestHIP_ScanUnit.cpp index f3d3396520..ea38596883 100644 --- a/lib/kokkos/core/unit_test/qthreads/TestQthreads_SubView_a.cpp +++ b/lib/kokkos/core/unit_test/hip/TestHIP_ScanUnit.cpp @@ -1,3 +1,4 @@ + /* //@HEADER // ************************************************************************ @@ -42,74 +43,55 @@ //@HEADER */ -#include - -namespace Test { - -TEST_F(qthreads, view_subview_auto_1d_left) { -#if 0 - TestViewSubview::test_auto_1d< Kokkos::LayoutLeft, Kokkos::Qthreads >(); -#endif -} - -TEST_F(qthreads, view_subview_auto_1d_right) { -#if 0 - TestViewSubview::test_auto_1d< Kokkos::LayoutRight, Kokkos::Qthreads >(); -#endif -} - -TEST_F(qthreads, view_subview_auto_1d_stride) { -#if 0 - TestViewSubview::test_auto_1d< Kokkos::LayoutStride, Kokkos::Qthreads >(); -#endif -} - -TEST_F(qthreads, view_subview_assign_strided) { -#if 0 - TestViewSubview::test_1d_strided_assignment< Kokkos::Qthreads >(); -#endif -} - -TEST_F(qthreads, view_subview_left_0) { -#if 0 - TestViewSubview::test_left_0< Kokkos::Qthreads >(); -#endif -} +#include +#include -TEST_F(qthreads, view_subview_left_1) { -#if 0 - TestViewSubview::test_left_1< Kokkos::Qthreads >(); -#endif -} +struct DummyFunctor { + using value_type = int; + void operator()(const int, value_type &, bool) const {} +}; -TEST_F(qthreads, view_subview_left_2) { -#if 0 - TestViewSubview::test_left_2< Kokkos::Qthreads >(); -#endif -} +template +__global__ void start_intra_block_scan() { + __shared__ DummyFunctor::value_type values[N]; + const int i = hipThreadIdx_y; + values[i] = i + 1; + __syncthreads(); -TEST_F(qthreads, view_subview_left_3) { -#if 0 - TestViewSubview::test_left_3< Kokkos::Qthreads >(); -#endif -} + DummyFunctor f; + Kokkos::Impl::hip_intra_block_reduce_scan(f, + values); -TEST_F(qthreads, view_subview_right_0) { -#if 0 - TestViewSubview::test_right_0< Kokkos::Qthreads >(); -#endif + __syncthreads(); + if (values[i] != ((i + 2) * (i + 1)) / 2) { + printf("Value for %d should be %d but is %d\n", i, ((i + 2) * (i + 1)) / 2, + values[i]); + Kokkos::abort("Test for intra_block_reduce_scan failed!"); + } } -TEST_F(qthreads, view_subview_right_1) { -#if 0 - TestViewSubview::test_right_1< Kokkos::Qthreads >(); -#endif +template +void test_intra_block_scan() { + dim3 grid(1, 1, 1); + dim3 block(1, N, 1); + hipLaunchKernelGGL(start_intra_block_scan, grid, block, 0, 0); } -TEST_F(qthreads, view_subview_right_3) { -#if 0 - TestViewSubview::test_right_3< Kokkos::Qthreads >(); -#endif +TEST(TEST_CATEGORY, scan_unit) { + if (std::is_same< + TEST_EXECSPACE, + typename Kokkos::Experimental::HIPSpace::execution_space>::value) { + test_intra_block_scan<1>(); + test_intra_block_scan<2>(); + test_intra_block_scan<4>(); + test_intra_block_scan<8>(); + test_intra_block_scan<16>(); + test_intra_block_scan<32>(); + test_intra_block_scan<64>(); + test_intra_block_scan<128>(); + test_intra_block_scan<256>(); + // FIXME_HIP block sizes larger than 256 give wrong results. + // test_intra_block_scan<512>(); + // test_intra_block_scan<1024>(); + } } - -} // namespace Test diff --git a/lib/kokkos/core/unit_test/qthreads/TestQthreads_SubView_c03.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_SharedAlloc.cpp similarity index 90% rename from lib/kokkos/core/unit_test/qthreads/TestQthreads_SubView_c03.cpp rename to lib/kokkos/core/unit_test/hip/TestHIP_SharedAlloc.cpp index 89b68ae42c..c66e01fe0a 100644 --- a/lib/kokkos/core/unit_test/qthreads/TestQthreads_SubView_c03.cpp +++ b/lib/kokkos/core/unit_test/hip/TestHIP_SharedAlloc.cpp @@ -42,14 +42,14 @@ //@HEADER */ -#include +#include +#include namespace Test { -TEST_F(qthreads, view_subview_1d_assign_randomaccess) { -#if 0 - TestViewSubview::test_1d_assign< Kokkos::Qthreads, Kokkos::MemoryTraits >(); -#endif +TEST(TEST_CATEGORY, impl_shared_alloc) { + test_shared_alloc(); } } // namespace Test diff --git a/lib/kokkos/core/unit_test/hip/TestHIP_Spaces.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_Spaces.cpp new file mode 100644 index 0000000000..f13400d096 --- /dev/null +++ b/lib/kokkos/core/unit_test/hip/TestHIP_Spaces.cpp @@ -0,0 +1,233 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// 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 NTESS "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 NTESS 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 + +namespace Test { + +__global__ void test_abort() { Kokkos::abort("test_abort"); } + +__global__ void test_hip_spaces_int_value(int *ptr) { + if (*ptr == 42) { + *ptr = 2 * 42; + } +} + +TEST(hip, space_access) { + static_assert(Kokkos::Impl::MemorySpaceAccess::assignable, + ""); + + static_assert(Kokkos::Impl::MemorySpaceAccess< + Kokkos::HostSpace, + Kokkos::Experimental::HIPHostPinnedSpace>::assignable, + ""); + + static_assert( + !Kokkos::Impl::MemorySpaceAccess< + Kokkos::HostSpace, Kokkos::Experimental::HIPSpace>::assignable, + ""); + + static_assert( + !Kokkos::Impl::MemorySpaceAccess< + Kokkos::HostSpace, Kokkos::Experimental::HIPSpace>::accessible, + ""); + + //-------------------------------------- + + static_assert(Kokkos::Impl::MemorySpaceAccess< + Kokkos::Experimental::HIPSpace, + Kokkos::Experimental::HIPSpace>::assignable, + ""); + + static_assert(!Kokkos::Impl::MemorySpaceAccess< + Kokkos::Experimental::HIPSpace, + Kokkos::Experimental::HIPHostPinnedSpace>::assignable, + ""); + + static_assert(Kokkos::Impl::MemorySpaceAccess< + Kokkos::Experimental::HIPSpace, + Kokkos::Experimental::HIPHostPinnedSpace>::accessible, + ""); + + static_assert(!Kokkos::Impl::MemorySpaceAccess::assignable, + ""); + + static_assert(!Kokkos::Impl::MemorySpaceAccess::accessible, + ""); + + //-------------------------------------- + + static_assert(Kokkos::Impl::MemorySpaceAccess< + Kokkos::Experimental::HIPHostPinnedSpace, + Kokkos::Experimental::HIPHostPinnedSpace>::assignable, + ""); + + static_assert( + !Kokkos::Impl::MemorySpaceAccess::assignable, + ""); + + static_assert( + Kokkos::Impl::MemorySpaceAccess::accessible, + ""); + + static_assert(!Kokkos::Impl::MemorySpaceAccess< + Kokkos::Experimental::HIPHostPinnedSpace, + Kokkos::Experimental::HIPSpace>::assignable, + ""); + + static_assert(!Kokkos::Impl::MemorySpaceAccess< + Kokkos::Experimental::HIPHostPinnedSpace, + Kokkos::Experimental::HIPSpace>::accessible, + ""); + + //-------------------------------------- + + static_assert( + !Kokkos::Impl::SpaceAccessibility::accessible, + ""); + + static_assert(Kokkos::Impl::SpaceAccessibility< + Kokkos::Experimental::HIP, + Kokkos::Experimental::HIPSpace>::accessible, + ""); + + static_assert(Kokkos::Impl::SpaceAccessibility< + Kokkos::Experimental::HIP, + Kokkos::Experimental::HIPHostPinnedSpace>::accessible, + ""); + + static_assert( + !Kokkos::Impl::SpaceAccessibility< + Kokkos::HostSpace, Kokkos::Experimental::HIPSpace>::accessible, + ""); + + static_assert(Kokkos::Impl::SpaceAccessibility< + Kokkos::HostSpace, + Kokkos::Experimental::HIPHostPinnedSpace>::accessible, + ""); + + static_assert( + std::is_same< + Kokkos::Impl::HostMirror::Space, + Kokkos::HostSpace>::value, + ""); + + static_assert( + std::is_same::Space, + Kokkos::Experimental::HIPHostPinnedSpace>::value, + ""); + + static_assert(Kokkos::Impl::SpaceAccessibility< + Kokkos::Impl::HostMirror::Space, + Kokkos::HostSpace>::accessible, + ""); + + static_assert( + Kokkos::Impl::SpaceAccessibility< + Kokkos::Impl::HostMirror::Space, + Kokkos::HostSpace>::accessible, + ""); + + static_assert(Kokkos::Impl::SpaceAccessibility< + Kokkos::Impl::HostMirror< + Kokkos::Experimental::HIPHostPinnedSpace>::Space, + Kokkos::HostSpace>::accessible, + ""); +} + +template +struct TestViewHIPAccessible { + enum { N = 1000 }; + + using V = Kokkos::View; + + V m_base; + + struct TagInit {}; + struct TagTest {}; + + KOKKOS_INLINE_FUNCTION + void operator()(const TagInit &, const int i) const { m_base[i] = i + 1; } + + KOKKOS_INLINE_FUNCTION + void operator()(const TagTest &, const int i, long &error_count) const { + if (m_base[i] != i + 1) ++error_count; + } + + TestViewHIPAccessible() : m_base("base", N) {} + + static void run() { + TestViewHIPAccessible self; + Kokkos::parallel_for( + Kokkos::RangePolicy(0, N), + self); + typename MemSpace::execution_space().fence(); + + // Next access is a different execution space, must complete prior kernel. + long error_count = -1; + Kokkos::parallel_reduce(Kokkos::RangePolicy(0, N), self, + error_count); + EXPECT_EQ(error_count, 0); + } +}; + +TEST(hip, impl_view_accessible) { + TestViewHIPAccessible::run(); + + TestViewHIPAccessible::run(); + TestViewHIPAccessible::run(); +} + +} // namespace Test diff --git a/lib/kokkos/core/unit_test/hip/TestHIP_SubView_a.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_SubView_a.cpp new file mode 100644 index 0000000000..df7b474afd --- /dev/null +++ b/lib/kokkos/core/unit_test/hip/TestHIP_SubView_a.cpp @@ -0,0 +1,102 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// 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 NTESS "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 NTESS 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 + +namespace Test { + +TEST(TEST_CATEGORY, view_subview_auto_1d_left) { + TestViewSubview::test_auto_1d(); +} + +TEST(TEST_CATEGORY, view_subview_auto_1d_right) { + TestViewSubview::test_auto_1d(); +} + +TEST(TEST_CATEGORY, view_subview_auto_1d_stride) { + TestViewSubview::test_auto_1d(); +} + +TEST(TEST_CATEGORY, view_subview_assign_strided) { + TestViewSubview::test_1d_strided_assignment(); +} + +TEST(TEST_CATEGORY, view_subview_left_0) { + TestViewSubview::test_left_0(); +} + +TEST(TEST_CATEGORY, view_subview_left_1) { + TestViewSubview::test_left_1(); +} + +TEST(TEST_CATEGORY, view_subview_left_2) { + TestViewSubview::test_left_2(); +} + +TEST(TEST_CATEGORY, view_subview_left_3) { + TestViewSubview::test_left_3(); +} + +TEST(TEST_CATEGORY, view_subview_right_0) { + TestViewSubview::test_right_0(); +} + +TEST(TEST_CATEGORY, view_subview_right_1) { + TestViewSubview::test_right_1(); +} + +TEST(TEST_CATEGORY, view_subview_right_3) { + TestViewSubview::test_right_3(); +} + +TEST(TEST_CATEGORY, view_static_tests) { + TestViewSubview::TestSubviewStaticSizes()(); + TestViewSubview::TestSubviewStaticSizes()(); + TestViewSubview::TestExtentsStaticTests(); +} + +} // namespace Test diff --git a/lib/kokkos/core/unit_test/qthreads/TestQthreads_SubView_b.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_SubView_b.cpp similarity index 71% rename from lib/kokkos/core/unit_test/qthreads/TestQthreads_SubView_b.cpp rename to lib/kokkos/core/unit_test/hip/TestHIP_SubView_b.cpp index 6ef5dc4cf1..5fdaefcf21 100644 --- a/lib/kokkos/core/unit_test/qthreads/TestQthreads_SubView_b.cpp +++ b/lib/kokkos/core/unit_test/hip/TestHIP_SubView_b.cpp @@ -42,24 +42,25 @@ //@HEADER */ -#include +#include +#include namespace Test { -TEST_F(qthreads, view_subview_layoutleft_to_layoutleft) { -#if 0 - TestViewSubview::test_layoutleft_to_layoutleft< Kokkos::Qthreads >(); - TestViewSubview::test_layoutleft_to_layoutleft< Kokkos::Qthreads, Kokkos::MemoryTraits >(); - TestViewSubview::test_layoutleft_to_layoutleft< Kokkos::Qthreads, Kokkos::MemoryTraits >(); -#endif +TEST(TEST_CATEGORY, view_subview_layoutleft_to_layoutleft) { + TestViewSubview::test_layoutleft_to_layoutleft(); + TestViewSubview::test_layoutleft_to_layoutleft< + TEST_EXECSPACE, Kokkos::MemoryTraits >(); + TestViewSubview::test_layoutleft_to_layoutleft< + TEST_EXECSPACE, Kokkos::MemoryTraits >(); } -TEST_F(qthreads, view_subview_layoutright_to_layoutright) { -#if 0 - TestViewSubview::test_layoutright_to_layoutright< Kokkos::Qthreads >(); - TestViewSubview::test_layoutright_to_layoutright< Kokkos::Qthreads, Kokkos::MemoryTraits >(); - TestViewSubview::test_layoutright_to_layoutright< Kokkos::Qthreads, Kokkos::MemoryTraits >(); -#endif +TEST(TEST_CATEGORY, view_subview_layoutright_to_layoutright) { + TestViewSubview::test_layoutright_to_layoutright(); + TestViewSubview::test_layoutright_to_layoutright< + TEST_EXECSPACE, Kokkos::MemoryTraits >(); + TestViewSubview::test_layoutright_to_layoutright< + TEST_EXECSPACE, Kokkos::MemoryTraits >(); } } // namespace Test diff --git a/lib/kokkos/core/unit_test/qthreads/TestQthreads_SubView_c07.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_SubView_c01.cpp similarity index 91% rename from lib/kokkos/core/unit_test/qthreads/TestQthreads_SubView_c07.cpp rename to lib/kokkos/core/unit_test/hip/TestHIP_SubView_c01.cpp index 5857f67d19..79bb42bc59 100644 --- a/lib/kokkos/core/unit_test/qthreads/TestQthreads_SubView_c07.cpp +++ b/lib/kokkos/core/unit_test/hip/TestHIP_SubView_c01.cpp @@ -42,14 +42,13 @@ //@HEADER */ -#include +#include +#include namespace Test { -TEST_F(qthreads, view_subview_3d_from_5d_left) { -#if 0 - TestViewSubview::test_3d_subview_5d_left< Kokkos::Qthreads >(); -#endif +TEST(TEST_CATEGORY, view_subview_1d_assign) { + TestViewSubview::test_1d_assign(); } } // namespace Test diff --git a/lib/kokkos/core/unit_test/hip/TestHIP_SubView_c02.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_SubView_c02.cpp new file mode 100644 index 0000000000..c38dee484e --- /dev/null +++ b/lib/kokkos/core/unit_test/hip/TestHIP_SubView_c02.cpp @@ -0,0 +1,55 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// 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 NTESS "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 NTESS 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 + +namespace Test { + +TEST(TEST_CATEGORY, view_subview_1d_assign_atomic) { + TestViewSubview::test_1d_assign >(); +} + +} // namespace Test diff --git a/lib/kokkos/core/unit_test/hip/TestHIP_SubView_c03.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_SubView_c03.cpp new file mode 100644 index 0000000000..c35f786d38 --- /dev/null +++ b/lib/kokkos/core/unit_test/hip/TestHIP_SubView_c03.cpp @@ -0,0 +1,55 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// 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 NTESS "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 NTESS 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 + +namespace Test { + +TEST(TEST_CATEGORY, view_subview_1d_assign_randomaccess) { + TestViewSubview::test_1d_assign< + TEST_EXECSPACE, Kokkos::MemoryTraits >(); +} + +} // namespace Test diff --git a/lib/kokkos/core/unit_test/qthreads/TestQthreads_SubView_c04.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_SubView_c04.cpp similarity index 91% rename from lib/kokkos/core/unit_test/qthreads/TestQthreads_SubView_c04.cpp rename to lib/kokkos/core/unit_test/hip/TestHIP_SubView_c04.cpp index 0ee4d6887c..3a0cafdbe1 100644 --- a/lib/kokkos/core/unit_test/qthreads/TestQthreads_SubView_c04.cpp +++ b/lib/kokkos/core/unit_test/hip/TestHIP_SubView_c04.cpp @@ -42,14 +42,13 @@ //@HEADER */ -#include +#include +#include namespace Test { -TEST_F(qthreads, view_subview_2d_from_3d) { -#if 0 - TestViewSubview::test_2d_subview_3d< Kokkos::Qthreads >(); -#endif +TEST(TEST_CATEGORY, view_subview_2d_from_3d) { + TestViewSubview::test_2d_subview_3d(); } } // namespace Test diff --git a/lib/kokkos/core/unit_test/hip/TestHIP_SubView_c05.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_SubView_c05.cpp new file mode 100644 index 0000000000..7b3710f428 --- /dev/null +++ b/lib/kokkos/core/unit_test/hip/TestHIP_SubView_c05.cpp @@ -0,0 +1,55 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// 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 NTESS "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 NTESS 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 + +namespace Test { + +TEST(TEST_CATEGORY, view_subview_2d_from_3d_atomic) { + TestViewSubview::test_2d_subview_3d >(); +} + +} // namespace Test diff --git a/lib/kokkos/core/unit_test/hip/TestHIP_SubView_c06.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_SubView_c06.cpp new file mode 100644 index 0000000000..f0ac19f2c4 --- /dev/null +++ b/lib/kokkos/core/unit_test/hip/TestHIP_SubView_c06.cpp @@ -0,0 +1,55 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// 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 NTESS "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 NTESS 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 + +namespace Test { + +TEST(TEST_CATEGORY, view_subview_2d_from_3d_randomaccess) { + TestViewSubview::test_2d_subview_3d< + TEST_EXECSPACE, Kokkos::MemoryTraits >(); +} + +} // namespace Test diff --git a/lib/kokkos/core/unit_test/qthreads/TestQthreads_SubView_c01.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_SubView_c07.cpp similarity index 91% rename from lib/kokkos/core/unit_test/qthreads/TestQthreads_SubView_c01.cpp rename to lib/kokkos/core/unit_test/hip/TestHIP_SubView_c07.cpp index 1f560c24f6..b9743ab0a4 100644 --- a/lib/kokkos/core/unit_test/qthreads/TestQthreads_SubView_c01.cpp +++ b/lib/kokkos/core/unit_test/hip/TestHIP_SubView_c07.cpp @@ -42,14 +42,13 @@ //@HEADER */ -#include +#include +#include namespace Test { -TEST_F(qthreads, view_subview_1d_assign) { -#if 0 - TestViewSubview::test_1d_assign< Kokkos::Qthreads >(); -#endif +TEST(TEST_CATEGORY, view_subview_3d_from_5d_left) { + TestViewSubview::test_3d_subview_5d_left(); } } // namespace Test diff --git a/lib/kokkos/core/unit_test/hip/TestHIP_SubView_c08.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_SubView_c08.cpp new file mode 100644 index 0000000000..30bef76d7f --- /dev/null +++ b/lib/kokkos/core/unit_test/hip/TestHIP_SubView_c08.cpp @@ -0,0 +1,55 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// 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 NTESS "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 NTESS 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 + +namespace Test { + +TEST(TEST_CATEGORY, view_subview_3d_from_5d_left_atomic) { + TestViewSubview::test_3d_subview_5d_left< + TEST_EXECSPACE, Kokkos::MemoryTraits >(); +} + +} // namespace Test diff --git a/lib/kokkos/core/unit_test/hip/TestHIP_SubView_c09.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_SubView_c09.cpp new file mode 100644 index 0000000000..2e63849f35 --- /dev/null +++ b/lib/kokkos/core/unit_test/hip/TestHIP_SubView_c09.cpp @@ -0,0 +1,55 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// 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 NTESS "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 NTESS 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 + +namespace Test { + +TEST(TEST_CATEGORY, view_subview_3d_from_5d_left_randomaccess) { + TestViewSubview::test_3d_subview_5d_left< + TEST_EXECSPACE, Kokkos::MemoryTraits >(); +} + +} // namespace Test diff --git a/lib/kokkos/core/unit_test/hip/TestHIP_SubView_c10.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_SubView_c10.cpp new file mode 100644 index 0000000000..dae65a4d3b --- /dev/null +++ b/lib/kokkos/core/unit_test/hip/TestHIP_SubView_c10.cpp @@ -0,0 +1,54 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// 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 NTESS "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 NTESS 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 + +namespace Test { + +TEST(TEST_CATEGORY, view_subview_3d_from_5d_right) { + TestViewSubview::test_3d_subview_5d_right(); +} + +} // namespace Test diff --git a/lib/kokkos/core/unit_test/hip/TestHIP_SubView_c11.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_SubView_c11.cpp new file mode 100644 index 0000000000..570658bf55 --- /dev/null +++ b/lib/kokkos/core/unit_test/hip/TestHIP_SubView_c11.cpp @@ -0,0 +1,55 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// 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 NTESS "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 NTESS 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 + +namespace Test { + +TEST(TEST_CATEGORY, view_subview_3d_from_5d_right_atomic) { + TestViewSubview::test_3d_subview_5d_right< + TEST_EXECSPACE, Kokkos::MemoryTraits >(); +} + +} // namespace Test diff --git a/lib/kokkos/core/unit_test/hip/TestHIP_SubView_c12.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_SubView_c12.cpp new file mode 100644 index 0000000000..4e943c68f0 --- /dev/null +++ b/lib/kokkos/core/unit_test/hip/TestHIP_SubView_c12.cpp @@ -0,0 +1,55 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// 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 NTESS "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 NTESS 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 + +namespace Test { + +TEST(TEST_CATEGORY, view_subview_3d_from_5d_right_randomaccess) { + TestViewSubview::test_3d_subview_5d_right< + TEST_EXECSPACE, Kokkos::MemoryTraits >(); +} + +} // namespace Test diff --git a/lib/kokkos/core/unit_test/qthreads/TestQthreads_SubView_c02.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_SubView_c13.cpp similarity index 90% rename from lib/kokkos/core/unit_test/qthreads/TestQthreads_SubView_c02.cpp rename to lib/kokkos/core/unit_test/hip/TestHIP_SubView_c13.cpp index e4065d22b2..52a065f2bd 100644 --- a/lib/kokkos/core/unit_test/qthreads/TestQthreads_SubView_c02.cpp +++ b/lib/kokkos/core/unit_test/hip/TestHIP_SubView_c13.cpp @@ -42,14 +42,13 @@ //@HEADER */ -#include +#include +#include namespace Test { -TEST_F(qthreads, view_subview_1d_assign_atomic) { -#if 0 - TestViewSubview::test_1d_assign< Kokkos::Qthreads, Kokkos::MemoryTraits >(); -#endif +TEST(TEST_CATEGORY, view_test_unmanaged_subview_reset) { + TestViewSubview::test_unmanaged_subview_reset(); } } // namespace Test diff --git a/lib/kokkos/core/unit_test/hip/TestHIP_ViewAPI_c.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_ViewAPI_c.cpp new file mode 100644 index 0000000000..4dc72a0786 --- /dev/null +++ b/lib/kokkos/core/unit_test/hip/TestHIP_ViewAPI_c.cpp @@ -0,0 +1,46 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// 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 NTESS "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 NTESS 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/unit_test/hip/TestHIP_ViewAPI_d.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_ViewAPI_d.cpp new file mode 100644 index 0000000000..c96d39feeb --- /dev/null +++ b/lib/kokkos/core/unit_test/hip/TestHIP_ViewAPI_d.cpp @@ -0,0 +1,46 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// 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 NTESS "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 NTESS 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/unit_test/hip/TestHIP_ViewMapping_a.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_ViewMapping_a.cpp new file mode 100644 index 0000000000..146f06fc6e --- /dev/null +++ b/lib/kokkos/core/unit_test/hip/TestHIP_ViewMapping_a.cpp @@ -0,0 +1,46 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// 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 NTESS "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 NTESS 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/unit_test/hip/TestHIP_ViewMapping_b.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_ViewMapping_b.cpp new file mode 100644 index 0000000000..00f931ce9b --- /dev/null +++ b/lib/kokkos/core/unit_test/hip/TestHIP_ViewMapping_b.cpp @@ -0,0 +1,46 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// 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 NTESS "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 NTESS 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/unit_test/hip/TestHIP_ViewMapping_subview.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_ViewMapping_subview.cpp new file mode 100644 index 0000000000..f0e76e0400 --- /dev/null +++ b/lib/kokkos/core/unit_test/hip/TestHIP_ViewMapping_subview.cpp @@ -0,0 +1,46 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// 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 NTESS "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 NTESS 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/unit_test/hip/TestHIP_ViewOfClass.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_ViewOfClass.cpp new file mode 100644 index 0000000000..c673ffb354 --- /dev/null +++ b/lib/kokkos/core/unit_test/hip/TestHIP_ViewOfClass.cpp @@ -0,0 +1,46 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// 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 NTESS "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 NTESS 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/unit_test/hip/TestHIP_ViewResize.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_ViewResize.cpp new file mode 100644 index 0000000000..35e3125915 --- /dev/null +++ b/lib/kokkos/core/unit_test/hip/TestHIP_ViewResize.cpp @@ -0,0 +1,46 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// 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 NTESS "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 NTESS 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/unit_test/hip/TestHIP_View_64bit.cpp b/lib/kokkos/core/unit_test/hip/TestHIP_View_64bit.cpp new file mode 100644 index 0000000000..fed256043f --- /dev/null +++ b/lib/kokkos/core/unit_test/hip/TestHIP_View_64bit.cpp @@ -0,0 +1,46 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// 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 NTESS "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 NTESS 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_BitSet.cpp b/lib/kokkos/core/unit_test/hpx/TestHPX_Concepts.cpp similarity index 98% rename from lib/kokkos/containers/unit_tests/hpx/TestHPX_BitSet.cpp rename to lib/kokkos/core/unit_test/hpx/TestHPX_Concepts.cpp index 179cfcc7b4..197a99a1e4 100644 --- a/lib/kokkos/containers/unit_tests/hpx/TestHPX_BitSet.cpp +++ b/lib/kokkos/core/unit_test/hpx/TestHPX_Concepts.cpp @@ -1,4 +1,3 @@ - /* //@HEADER // ************************************************************************ @@ -44,4 +43,4 @@ */ #include -#include +#include diff --git a/lib/kokkos/containers/unit_tests/hpx/TestHPX_DualView.cpp b/lib/kokkos/core/unit_test/hpx/TestHPX_RangePolicyRequire.cpp similarity index 98% rename from lib/kokkos/containers/unit_tests/hpx/TestHPX_DualView.cpp rename to lib/kokkos/core/unit_test/hpx/TestHPX_RangePolicyRequire.cpp index 368cdde95c..c76750e8fd 100644 --- a/lib/kokkos/containers/unit_tests/hpx/TestHPX_DualView.cpp +++ b/lib/kokkos/core/unit_test/hpx/TestHPX_RangePolicyRequire.cpp @@ -44,4 +44,4 @@ */ #include -#include +#include diff --git a/lib/kokkos/core/unit_test/hpx/TestHPX_TeamScratch.cpp b/lib/kokkos/core/unit_test/hpx/TestHPX_TeamScratch.cpp index 14cbfb8f41..232bed509b 100644 --- a/lib/kokkos/core/unit_test/hpx/TestHPX_TeamScratch.cpp +++ b/lib/kokkos/core/unit_test/hpx/TestHPX_TeamScratch.cpp @@ -58,7 +58,6 @@ TEST(TEST_CATEGORY, team_scratch_request) { } #if defined(KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA) -#if !defined(KOKKOS_ENABLE_CUDA) || (8000 <= CUDA_VERSION) TEST(TEST_CATEGORY, team_lambda_shared_request) { TestLambdaSharedTeam >(); @@ -66,7 +65,6 @@ TEST(TEST_CATEGORY, team_lambda_shared_request) { Kokkos::Schedule >(); } #endif -#endif TEST(TEST_CATEGORY, shmem_size) { TestShmemSize(); } diff --git a/lib/kokkos/core/unit_test/incremental/Test01_execspace.hpp b/lib/kokkos/core/unit_test/incremental/Test01_execspace.hpp new file mode 100644 index 0000000000..9f118bfb49 --- /dev/null +++ b/lib/kokkos/core/unit_test/incremental/Test01_execspace.hpp @@ -0,0 +1,111 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// 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 NTESS "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 NTESS 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 +*/ + +/// @Kokkos_Feature_Level_Required:1 + +#include +#include +#include +#include +#include + +namespace Test { + +// Unit test for Execution Space +// Test1 - testing for memory_space, execution_space, scratch space and +// array_layout of an execution space +// Test2 - Test if the is_execution_space evaluation is working correctly + +template +struct TestIncrExecSpaceTypedef { + void testit() { + const bool passed = + (!std::is_same::value) && + std::is_same::value && + !std::is_same::value && + !std::is_same::value; + static_assert(passed == true, + "The memory and execution spaces are defined"); + } +}; + +template +struct TestIncrExecSpace { + void testit() { + typedef typename ExecSpace::device_type device_type; + typedef typename device_type::memory_space memory_space; + typedef typename device_type::execution_space execution_space; + + const bool passed = + std::is_same>::value; + + static_assert(passed == true, + "Checking if the is_execution_space is evaluated correctly"); + + ExecSpace().print_configuration(std::cout); + ExecSpace().fence(); + + auto concurrency = ExecSpace().concurrency(); + ASSERT_TRUE(concurrency > 0); + + int in_parallel = ExecSpace::in_parallel(); + ASSERT_FALSE(in_parallel); + + const char* name = ExecSpace::name(); + std::cout << name << std::endl; + } +}; + +TEST(TEST_CATEGORY, IncrTest_01_execspace_typedef) { + TestIncrExecSpaceTypedef test; + test.testit(); +} + +TEST(TEST_CATEGORY, IncrTest_01_execspace) { + ASSERT_TRUE(Kokkos::is_execution_space::value); + ASSERT_FALSE(Kokkos::is_execution_space< + TestIncrExecSpaceTypedef>::value); +} +} // namespace Test diff --git a/lib/kokkos/core/unit_test/incremental/Test02_atomic_host.hpp b/lib/kokkos/core/unit_test/incremental/Test02_atomic_host.hpp new file mode 100644 index 0000000000..4617ede99e --- /dev/null +++ b/lib/kokkos/core/unit_test/incremental/Test02_atomic_host.hpp @@ -0,0 +1,97 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// 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 NTESS "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 NTESS 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 +*/ + +/// @Kokkos_Feature_Level_Required:2 +// Unit test for atomic exchange, atomic add and atomic sub. +// Atomic exchange test : we interchange value1 with value2 and check for +// correctness. Atomic add test : we add value2 to value1 and check for +// correctness. Atomic sub test : we subtract value2 from value1 and check for +// correctmess. + +#include +#include + +using value_type = double; + +namespace Test { + +struct TestIncrAtomic { + value_type value1 = 1.5, value2 = 0.5; + + void testExchange() { + value_type ret_value = Kokkos::atomic_exchange(&value1, value2); + + ASSERT_EQ(value1, 0.5); + ASSERT_EQ(ret_value, 1.5); + } + + void testAdd() { + Kokkos::atomic_add(&value1, value2); + + ASSERT_EQ(value1, 2.0); + } + + void testSub() { + Kokkos::atomic_sub(&value1, value2); + + ASSERT_EQ(value1, 1.0); + } +}; + +TEST(TEST_CATEGORY, IncrTest_01_AtomicExchange) { + TestIncrAtomic test; + test.testExchange(); +} + +TEST(TEST_CATEGORY, IncrTest_02_AtomicAdd) { + TestIncrAtomic test; + test.testAdd(); +} + +TEST(TEST_CATEGORY, IncrTest_02_AtomicSub) { + TestIncrAtomic test; + test.testSub(); +} + +} // namespace Test diff --git a/lib/kokkos/core/unit_test/incremental/Test03a_MemorySpace_malloc.hpp b/lib/kokkos/core/unit_test/incremental/Test03a_MemorySpace_malloc.hpp new file mode 100644 index 0000000000..da808be219 --- /dev/null +++ b/lib/kokkos/core/unit_test/incremental/Test03a_MemorySpace_malloc.hpp @@ -0,0 +1,80 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// 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 NTESS "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 NTESS 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 + +/// @Kokkos_Feature_Level_Required:3 +// Unit Test for Kokkos malloc. +// Allocate memory to a pointer and check if the allocation has not returned a +// null pointer. + +namespace Test { + +using value_type = double; +const int num_elements = 10; + +template +struct TestIncrMemorySpace_malloc { + using memory_space = typename ExecSpace::memory_space; + + void test_malloc() { + // Allocate memory + auto *data = static_cast(Kokkos::kokkos_malloc( + "data", num_elements * sizeof(value_type))); + + // Check if the allocated memory has not returned a NULL + ASSERT_NE(data, nullptr); + + // Free the allocated memory + Kokkos::kokkos_free(data); + } +}; + +TEST(TEST_CATEGORY, IncrTest_03a_memspace_malloc) { + TestIncrMemorySpace_malloc test; + test.test_malloc(); +} + +} // namespace Test diff --git a/lib/kokkos/core/unit_test/incremental/Test03b_MemorySpace_free.hpp b/lib/kokkos/core/unit_test/incremental/Test03b_MemorySpace_free.hpp new file mode 100644 index 0000000000..f7ee76ec9d --- /dev/null +++ b/lib/kokkos/core/unit_test/incremental/Test03b_MemorySpace_free.hpp @@ -0,0 +1,83 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// 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 NTESS "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 NTESS 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 +*/ + +/// @Kokkos_Feature_Level_Required:3 +// Unit test for Kokkos free. +// We constantly allocate and free the memory. +// If the kokkos_free does not free the allocated memory, +// we will exceed the available space. + +#include +#include + +namespace Test { + +using value_type = double; + +// Allocate M number of value_type elements N number of times. +const int N = 100000; +const int M = 100000; + +template +struct TestIncrMemorySpace_free { + using memory_space = typename ExecSpace::memory_space; + + void test_free() { + for (int i = 0; i < N; ++i) { + auto *data = static_cast( + Kokkos::kokkos_malloc("data", M * sizeof(value_type))); + + ASSERT_NE(data, nullptr); + + Kokkos::kokkos_free(data); + } + } +}; + +TEST(TEST_CATEGORY, IncrTest_03b_memspace_free) { + TestIncrMemorySpace_free test; + test.test_free(); +} + +} // namespace Test diff --git a/lib/kokkos/core/unit_test/incremental/Test04_ParallelFor_RangePolicy.hpp b/lib/kokkos/core/unit_test/incremental/Test04_ParallelFor_RangePolicy.hpp new file mode 100644 index 0000000000..5e50b51dd1 --- /dev/null +++ b/lib/kokkos/core/unit_test/incremental/Test04_ParallelFor_RangePolicy.hpp @@ -0,0 +1,169 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// 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 NTESS "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 NTESS 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 + +/// @Kokkos_Feature_Level_Required:4 +// parallel-for unit test. +// In this test, different elements of an array are updated by different +// threads. + +namespace Test { + +using value_type = double; +int num_elements = 10; +const value_type value = 0.5; + +struct ParallelForFunctor { + value_type *_data; + + ParallelForFunctor(value_type *data) : _data(data) {} + + KOKKOS_INLINE_FUNCTION + void operator()(const int i) const { _data[i] = (i + 1) * value; } +}; + +template +struct TestParallel_For { + // Memory space type for Device and Host data + using d_memspace_type = typename ExecSpace::memory_space; + using h_memspace_type = Kokkos::HostSpace; + + value_type *deviceData, *hostData; + + // Check if the array values are updated correctly. + void correctness_check(value_type *data) { + for (int i = 0; i < num_elements; ++i) { + ASSERT_EQ((i + 1) * value, data[i]) + << "Values in index " << i << " are incorrect"; + } + } + + // Routine to allocate memory in a specific memory space. + template + value_type *allocate_mem(int N) { + return (static_cast( + Kokkos::kokkos_malloc("deviceData", N * sizeof(value_type)))); + } + + // Routine to free the memory from a specific memory space. + template + void free_mem(value_type *data) { + Kokkos::kokkos_free(data); + } + + void init() { + // Allocate memory on Device space. + deviceData = allocate_mem(num_elements); + ASSERT_NE(deviceData, nullptr); + + // Allocate memory on Host space. + hostData = allocate_mem(num_elements); + ASSERT_NE(hostData, nullptr); + } + + void check_correctness_and_cleanup() { + // Copy the data back to Host memory space + Kokkos::Impl::DeepCopy( + hostData, deviceData, num_elements * sizeof(value_type)); + + // Check if all data has been update correctly + correctness_check(hostData); + + // free the allocated memory + free_mem(deviceData); + free_mem(hostData); + } + + // A simple parallel for test with functors + void simple_test() { + // Allocates memory for num_elements number of value_type elements in the + // host and device memory spaces. + init(); + + // parallel-for functor called for num_elements number of iterations. + Kokkos::parallel_for("parallel_for", num_elements, + ParallelForFunctor(deviceData)); + + Kokkos::fence(); + // Checks if parallel_for gave the correct results. + // Frees the allocated memory in init(). + check_correctness_and_cleanup(); + } + + // A parallel_for test with user defined RangePolicy + void range_policy() { + // Allocates memory for num_elements number of value_type elements in the + // host and device memory spaces. + init(); + + // Creates a range policy that uses dynamic scheduling. + typedef Kokkos::RangePolicy > + range_policy_t; + + // parallel-for functor with range-policy from 0 to num_elements iterations. + Kokkos::parallel_for("RangePolicy_ParallelFor", + range_policy_t(0, num_elements), + ParallelForFunctor(deviceData)); + + // Checks if parallel_for gave the correct results. + // Free the allocated memory in init(). + check_correctness_and_cleanup(); + } +}; + +TEST(TEST_CATEGORY, IncrTest_04_simple_parallelFor) { + if (std::is_same::value) { + TestParallel_For test; + test.simple_test(); + } +} + +TEST(TEST_CATEGORY, IncrTest_04_RangePolicy_parallelFor) { + TestParallel_For test; + test.range_policy(); +} + +} // namespace Test diff --git a/lib/kokkos/core/unit_test/incremental/Test05_ParallelReduce_RangePolicy.hpp b/lib/kokkos/core/unit_test/incremental/Test05_ParallelReduce_RangePolicy.hpp new file mode 100644 index 0000000000..7c147e47cc --- /dev/null +++ b/lib/kokkos/core/unit_test/incremental/Test05_ParallelReduce_RangePolicy.hpp @@ -0,0 +1,154 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// 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 NTESS "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 NTESS 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 + +/// @Kokkos_Feature_Level_Required:5 +// Unit test for reduction of native data type. +// Assigns an index based value to elements of an array. +// Performs an reduction over the addition operation. + +namespace Test { + +using value_type = double; +const double value = 0.5; +const int num_elements = 10; + +struct ReduceFunctor { + value_type *_data; + + ReduceFunctor(value_type *data) : _data(data) {} + + KOKKOS_INLINE_FUNCTION + void operator()(const int i, double &UpdateSum) const { + _data[i] = (i + 1) * value; + UpdateSum += _data[i]; + } +}; + +template +struct TestReduction { + // Memory space type for Device and Host data + using d_memspace_type = typename ExecSpace::memory_space; + using h_memspace_type = Kokkos::HostSpace; + + value_type *deviceData, *hostData; + value_type sum = 0.0; + + // compare and equal + void check_correctness() { + int sum_local = 0; + for (int i = 0; i < num_elements; ++i) sum_local += (i + 1); + + ASSERT_EQ(sum, sum_local * value) + << "The reduced value does not match the expected answer"; + } + + // Routine to allocate memory in a specific memory space. + template + value_type *allocate_mem(int N) { + return (static_cast( + Kokkos::kokkos_malloc("deviceData", N * sizeof(value_type)))); + } + + // Routine to free the memory from a specific memory space. + template + void free_mem(value_type *data) { + Kokkos::kokkos_free(data); + } + + // Free the allocated memory + void free_mem() { + Kokkos::kokkos_free(deviceData); + Kokkos::kokkos_free(hostData); + } + + // Allocate Memory for both device and host memory spaces + void init() { + // Allocate memory on Device space. + deviceData = allocate_mem(num_elements); + ASSERT_NE(deviceData, nullptr); + + // Allocate memory on Host space. + hostData = allocate_mem(num_elements); + ASSERT_NE(hostData, nullptr); + + // Initialize the sum value to zero. + sum = 0.0; + } + + void check_correctness_and_cleanup() { + // Check if reduction has produced correct results + check_correctness(); + + // free the allocated memory + free_mem(deviceData); + free_mem(hostData); + } + + void sum_reduction() { + // Allocates memory for num_elements number of value_type elements in the + // host and device memory spaces. + init(); + + // Creates a range policy that uses dynamic schedule. + typedef Kokkos::RangePolicy > + range_policy; + + // parallel_reduce call with range policy over num_elements number of + // iterations + Kokkos::parallel_reduce("Reduction", range_policy(0, num_elements), + ReduceFunctor(deviceData), sum); + + check_correctness_and_cleanup(); + } +}; + +TEST(TEST_CATEGORY, IncrTest_05_reduction) { + TestReduction test; + test.sum_reduction(); +} + +} // namespace Test diff --git a/lib/kokkos/core/unit_test/incremental/Test06_ParallelFor_MDRangePolicy.hpp b/lib/kokkos/core/unit_test/incremental/Test06_ParallelFor_MDRangePolicy.hpp new file mode 100644 index 0000000000..d9e5a37b55 --- /dev/null +++ b/lib/kokkos/core/unit_test/incremental/Test06_ParallelFor_MDRangePolicy.hpp @@ -0,0 +1,263 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// 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 NTESS "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 NTESS 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 + +/// @Kokkos_Feature_Level_Required:6 +// Unit Test for MDRangePolicy without Views uptil 4 ranks. +// For each of the MDRangePolicy test from 2-to-4 ranks, we create an equivalent +// dimensional array implemented in 1D. In each of these arrays we update the +// elements as a product of iterator indexes and a constant. At the end, we +// check for correctness. + +namespace Test04 { + +using value_type = double; +const int N = 10; +const int M = 10; +const value_type delta = 0.5; + +struct MDFunctor { + value_type *_data; + + MDFunctor(value_type *data) : _data(data) {} + + // 2D + KOKKOS_INLINE_FUNCTION + void operator()(const int i, const int j) const { + _data[i * M + j] = i * j * delta; + } + + // 3D + KOKKOS_INLINE_FUNCTION + void operator()(const int i, const int j, const int k) const { + _data[i * M * N + j * M + k] = i * j * k * delta; + } + + // 4D + KOKKOS_INLINE_FUNCTION + void operator()(const int i, const int j, const int k, const int l) const { + _data[i * M * N * M + j * M * N + k * M + l] = i * j * k * l * delta; + } +}; + +template +struct TestMDRangePolicy { + // Memory space type for Device and Host data + using d_memspace_type = typename ExecSpace::memory_space; + using h_memspace_type = Kokkos::HostSpace; + + // Index Type for the iterator + using int_index = Kokkos::IndexType; + + // An MDRangePolicy for 2 nested loops + using MDPolicyType_2D = typename Kokkos::Experimental::MDRangePolicy< + ExecSpace, Kokkos::Experimental::Rank<2>, int_index>; + + // An MDRangePolicy for 3 nested loops + using MDPolicyType_3D = typename Kokkos::Experimental::MDRangePolicy< + ExecSpace, Kokkos::Experimental::Rank<3>, int_index>; + + // An MDRangePolicy for 4 nested loops + using MDPolicyType_4D = typename Kokkos::Experimental::MDRangePolicy< + ExecSpace, Kokkos::Experimental::Rank<4>, int_index>; + + // Device and Host Data structure pointer + value_type *deviceData, *hostData; + + // Routine to allocate memory in a specific memory space. + template + value_type *allocate_mem(int N_) { + return (static_cast( + Kokkos::kokkos_malloc("Data", N_ * sizeof(value_type)))); + } + + // Routine to free the memory from a specific memory space. + template + void free_mem(value_type *data) { + Kokkos::kokkos_free(data); + } + + // compare and equal + void compare_equal_2D() { + for (int i = 0; i < N; ++i) + for (int j = 0; j < M; ++j) ASSERT_EQ(hostData[i * M + j], i * j * delta); + } + + // compare and equal + void compare_equal_3D() { + for (int i = 0; i < N; ++i) + for (int j = 0; j < M; ++j) + for (int k = 0; k < N; ++k) + ASSERT_EQ(hostData[i * M * N + j * M + k], i * j * k * delta); + } + + // compare and equal + void compare_equal_4D() { + for (int i = 0; i < N; ++i) + for (int j = 0; j < M; ++j) + for (int k = 0; k < N; ++k) + for (int l = 0; l < M; ++l) + ASSERT_EQ(hostData[i * M * N * M + j * M * N + k * M + l], + i * j * k * l * delta); + } + + // A 2-D MDRangePolicy + void mdRange2D() { + MDPolicyType_2D mdPolicy_2D({0, 0}, {N, M}); + + // Total number of elements + int num_elements = N * M; + + // Allocate Memory for both device and host memory spaces + // Data[M*N] + deviceData = allocate_mem(num_elements); + ASSERT_NE(deviceData, nullptr); + + hostData = allocate_mem(num_elements); + ASSERT_NE(hostData, nullptr); + + // parallel_for call + MDFunctor Functor_2D(deviceData); + Kokkos::parallel_for("MDRange2D", mdPolicy_2D, Functor_2D); + + // Copy the data back to Host memory space + Kokkos::Impl::DeepCopy( + hostData, deviceData, num_elements * sizeof(value_type)); + + // Check if all data has been update correctly + compare_equal_2D(); + + // free the allocated memory + free_mem(deviceData); + free_mem(hostData); + } + + // A 3-D MDRangePolicy + void mdRange3D() { + MDPolicyType_3D mdPolicy_3D({0, 0, 0}, {N, M, N}); + + // Total number of elements + int num_elements = N * M * N; + + // Allocate Memory for both device and host memory spaces + // Data[M*N*N] + deviceData = allocate_mem(num_elements); + ASSERT_NE(deviceData, nullptr); + + hostData = allocate_mem(num_elements); + ASSERT_NE(hostData, nullptr); + + // parallel_for call + MDFunctor Functor_3D(deviceData); + Kokkos::parallel_for("MDRange3D", mdPolicy_3D, Functor_3D); + + // Copy the data back to Host memory space + Kokkos::Impl::DeepCopy( + hostData, deviceData, num_elements * sizeof(value_type)); + + // Check if all data has been update correctly + compare_equal_3D(); + + // free the allocated memory + free_mem(deviceData); + free_mem(hostData); + } + + // A 4-D MDRangePolicy + void mdRange4D() { + MDPolicyType_4D mdPolicy_4D({0, 0, 0, 0}, {N, M, N, M}); + + // Total number of elements + int num_elements = N * M * N * M; + + // Allocate Memory for both device and host memory spaces + // Data[M*N*N*M] + deviceData = allocate_mem(num_elements); + ASSERT_NE(deviceData, nullptr); + + hostData = allocate_mem(num_elements); + ASSERT_NE(hostData, nullptr); + + // parallel_for call + MDFunctor Functor_4D(deviceData); + Kokkos::parallel_for("MDRange4D", mdPolicy_4D, Functor_4D); + + // Copy the data back to Host memory space + Kokkos::Impl::DeepCopy( + hostData, deviceData, num_elements * sizeof(value_type)); + + // Check if all data has been update correctly + compare_equal_4D(); + + // free the allocated memory + free_mem(deviceData); + free_mem(hostData); + } +}; + +} // namespace Test04 + +namespace Test { + +// 2D MDRangePolicy +TEST(TEST_CATEGORY, IncrTest_06_mdrange2D) { + Test04::TestMDRangePolicy test; + test.mdRange2D(); +} + +// 3D MDRangePolicy +TEST(TEST_CATEGORY, IncrTest_06_mdrange3D) { + Test04::TestMDRangePolicy test; + test.mdRange3D(); +} + +// 4D MDRangePolicy +TEST(TEST_CATEGORY, IncrTest_06_mdrange4D) { + Test04::TestMDRangePolicy test; + test.mdRange4D(); +} + +} // namespace Test diff --git a/lib/kokkos/core/unit_test/incremental/Test08_deep_copy.hpp b/lib/kokkos/core/unit_test/incremental/Test08_deep_copy.hpp new file mode 100644 index 0000000000..5166f5a9f0 --- /dev/null +++ b/lib/kokkos/core/unit_test/incremental/Test08_deep_copy.hpp @@ -0,0 +1,207 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// 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 NTESS "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 NTESS 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 + +/// @Kokkos_Feature_Level_Required:8 +// Unit Test for MDRangePolicy without Views uptil 4 ranks. +// For each of the MDRangePolicy test from 2-to-4 ranks, we create an equivalent +// dimensional view. In each of these views we update the +// elements as a product of iterator indexes and a constant inside a +// parallel_for lambda. At the end, we check for correctness. + +namespace Test05 { + +using value_type = double; +const int N = 10; +const int M = 10; + +template +struct TestMDRangePolicy { + // 2D View + using View_2D = typename Kokkos::View; + using Host_View_2D = typename View_2D::HostMirror; + Host_View_2D hostDataView_2D; + + // 3D View + using View_3D = typename Kokkos::View; + using Host_View_3D = typename View_3D::HostMirror; + Host_View_3D hostDataView_3D; + + // 4D View + using View_4D = typename Kokkos::View; + using Host_View_4D = typename View_4D::HostMirror; + Host_View_4D hostDataView_4D; + + // Memory space type for Device and Host data + using d_memspace_type = typename ExecSpace::memory_space; + using h_memspace_type = Kokkos::HostSpace; + + // Index Type for the iterator + using int_index = Kokkos::IndexType; + + // An MDRangePolicy for 2 nested loops + using MDPolicyType_2D = typename Kokkos::Experimental::MDRangePolicy< + ExecSpace, Kokkos::Experimental::Rank<2>, int_index>; + + // An MDRangePolicy for 3 nested loops + using MDPolicyType_3D = typename Kokkos::Experimental::MDRangePolicy< + ExecSpace, Kokkos::Experimental::Rank<3>, int_index>; + + // An MDRangePolicy for 4 nested loops + using MDPolicyType_4D = typename Kokkos::Experimental::MDRangePolicy< + ExecSpace, Kokkos::Experimental::Rank<4>, int_index>; + + // compare and equal + void compare_equal_2D() { + for (int i = 0; i < N; ++i) + for (int j = 0; j < M; ++j) ASSERT_EQ(hostDataView_2D(i, j), i * M + j); + } + + // compare and equal + void compare_equal_3D() { + for (int i = 0; i < N; ++i) + for (int j = 0; j < M; ++j) + for (int k = 0; k < N; ++k) + ASSERT_EQ(hostDataView_3D(i, j, k), i * M * N + j * N + k); + } + + // compare and equal + void compare_equal_4D() { + for (int i = 0; i < N; ++i) + for (int j = 0; j < M; ++j) + for (int k = 0; k < N; ++k) + for (int l = 0; l < M; ++l) + ASSERT_EQ(hostDataView_4D(i, j, k, l), + i * M * N * M + j * N * M + k * M + l); + } + + // A 2-D MDRangePolicy + void mdRange2D() { + View_2D deviceDataView_2D("deviceData_2D", N, M); + hostDataView_2D = create_mirror_view(deviceDataView_2D); + + MDPolicyType_2D mdPolicy_2D({0, 0}, {N, M}); + + Kokkos::parallel_for( + mdPolicy_2D, KOKKOS_LAMBDA(const int i, const int j) { + deviceDataView_2D(i, j) = i * M + j; + }); + + // Copy data back to host view. + Kokkos::deep_copy(hostDataView_2D, deviceDataView_2D); + + // Check if all data has been update correctly + compare_equal_2D(); + } + + // A 3-D MDRangePolicy + void mdRange3D() { + View_3D deviceDataView_3D("deviceData_3D", N, M, N); + hostDataView_3D = create_mirror_view(deviceDataView_3D); + + MDPolicyType_3D mdPolicy_3D({0, 0, 0}, {N, M, N}); + + Kokkos::parallel_for( + mdPolicy_3D, KOKKOS_LAMBDA(const int i, const int j, const int k) { + deviceDataView_3D(i, j, k) = i * M * N + j * N + k; + }); + + // Copy data back to host view. + Kokkos::deep_copy(hostDataView_3D, deviceDataView_3D); + + // Check if all data has been update correctly + compare_equal_3D(); + } + + // A 4-D MDRangePolicy + void mdRange4D() { + View_4D deviceDataView_4D("deviceData_4D", N, M, N, M); + hostDataView_4D = create_mirror_view(deviceDataView_4D); + + MDPolicyType_4D mdPolicy_4D({0, 0, 0, 0}, {N, M, N, M}); + + Kokkos::parallel_for( + mdPolicy_4D, + KOKKOS_LAMBDA(const int i, const int j, const int k, const int l) { + deviceDataView_4D(i, j, k, l) = i * M * N * M + j * N * M + k * M + l; + }); + + Kokkos::deep_copy(hostDataView_4D, deviceDataView_4D); + + // Check if all data has been update correctly + compare_equal_4D(); + } +}; + +} // namespace Test05 + +namespace Test { + +// 2D MDRangePolicy +TEST(TEST_CATEGORY, IncrTest_08_deep_copy_2D) { + { + Test05::TestMDRangePolicy test; + test.mdRange2D(); + } +} + +// 3D MDRangePolicy +TEST(TEST_CATEGORY, IncrTest_08_deep_copy_3D) { + { + Test05::TestMDRangePolicy test; + test.mdRange3D(); + } +} + +// 4D MDRangePolicy +TEST(TEST_CATEGORY, IncrTest_08_deep_copy_4D) { + { + Test05::TestMDRangePolicy test; + test.mdRange4D(); + } +} + +} // namespace Test diff --git a/lib/kokkos/core/unit_test/incremental/Test10_HierarchicalBasics.hpp b/lib/kokkos/core/unit_test/incremental/Test10_HierarchicalBasics.hpp new file mode 100644 index 0000000000..a5e478c30f --- /dev/null +++ b/lib/kokkos/core/unit_test/incremental/Test10_HierarchicalBasics.hpp @@ -0,0 +1,101 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// 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 NTESS "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 NTESS 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 +*/ + +// @Kokkos_Feature_Level_Required:10 +// Unit test for hierarchical parallelism +// Create concurrent work hierarchically and verify if +// contributions of paticipating processing units corresponds to expected value + +#include +#include + +namespace Test { + +template +struct HierarchicalBasics { + using policy_t = Kokkos::TeamPolicy; + using team_t = typename policy_t::member_type; + + void run(const int nP, int nT) { + if (nT > ExecSpace::concurrency()) nT = ExecSpace::concurrency(); + + policy_t pol(nP, nT); + + ASSERT_EQ(pol.league_size(), nP); + ASSERT_LE(pol.team_size(), nT); + nT = pol.team_size(); + + Kokkos::View v("Array_A", nP, nT); + Kokkos::parallel_for( + "Teams", pol, KOKKOS_LAMBDA(const team_t &team) { + const int tR = team.team_rank(); + const int tS = team.team_size(); + const int lR = team.league_rank(); + const int lS = team.league_size(); + if (lR < lS) { + v(lR, tR) = lR * tS + tR; + } else { + v(lR, tR) = 100000; + } + }); + Kokkos::fence(); + auto h_v = Kokkos::create_mirror_view_and_copy(Kokkos::HostSpace(), v); + + size_t check = 0; + size_t ref = nP * nT; + for (int i = 0; i < nP; ++i) + for (int j = 0; j < nT; ++j) check += h_v(i, j); + + ASSERT_EQ(check, ref * (ref - 1) / 2); + } +}; + +TEST(TEST_CATEGORY, IncrTest_10_Hierarchical_Basics) { + HierarchicalBasics test; + test.run(1, 4); + test.run(8, 16); + test.run(11, 13); +} + +} // namespace Test diff --git a/lib/kokkos/core/unit_test/incremental/Test11a_ParallelFor_TeamThreadRange.hpp b/lib/kokkos/core/unit_test/incremental/Test11a_ParallelFor_TeamThreadRange.hpp new file mode 100644 index 0000000000..e36b8f9d3f --- /dev/null +++ b/lib/kokkos/core/unit_test/incremental/Test11a_ParallelFor_TeamThreadRange.hpp @@ -0,0 +1,99 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// 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 NTESS "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 NTESS 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 +*/ + +// @Kokkos_Feature_Level_Required:11 +// Unit test for hierarchical parallelism +// Create concurrent work hierarchically and verify if +// contributions of paticipating processing units corresponds to expected value + +#include +#include + +namespace Test { + +template +struct Hierarchical_ForLoop_A { + void run(const int pN, const int sX, const int sY) { + typedef Kokkos::TeamPolicy team_policy; + typedef typename Kokkos::TeamPolicy::member_type member_type; + + typedef Kokkos::View viewDataType; + viewDataType v("Matrix", sX, sY); + + Kokkos::parallel_for( + "Team", team_policy(pN, Kokkos::AUTO), + KOKKOS_LAMBDA(const member_type &team) { + const int n = team.league_rank(); + const int ls = team.league_size(); + + const int startDim1 = n * (int)(sX / ls); + const int modDim1 = n == ls - 1 ? sX % ls : 0; + + Kokkos::parallel_for( + Kokkos::TeamThreadRange(team, v.extent(1)), [&](const int m) { + for (int i = startDim1; + i < (startDim1 + (int)(sX / ls) + modDim1); ++i) + v(i, m) = i * v.extent(1) + m; + }); + }); + + Kokkos::fence(); + auto v_H = Kokkos::create_mirror_view_and_copy(Kokkos::HostSpace(), v); + + int check = 0; + const int s = sY * sX; + for (int i = 0; i < sX; ++i) + for (int j = 0; j < sY; ++j) check += v_H(i, j); + ASSERT_EQ(check, s * (s - 1) / 2); + } +}; + +TEST(TEST_CATEGORY, IncrTest_11a_Hierarchical_ForLoop) { + Hierarchical_ForLoop_A test; + test.run(4, 5, 200); + test.run(4, 7, 19); + test.run(14, 277, 321); +} + +} // namespace Test diff --git a/lib/kokkos/core/unit_test/incremental/Test11b_ParallelFor_TeamVectorRange.hpp b/lib/kokkos/core/unit_test/incremental/Test11b_ParallelFor_TeamVectorRange.hpp new file mode 100644 index 0000000000..7e4bb2aa3b --- /dev/null +++ b/lib/kokkos/core/unit_test/incremental/Test11b_ParallelFor_TeamVectorRange.hpp @@ -0,0 +1,99 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// 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 NTESS "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 NTESS 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 +*/ + +// @Kokkos_Feature_Level_Required:11 +// Unit test for hierarchical parallelism +// Create concurrent work hierarchically and verify if +// contributions of paticipating processing units corresponds to expected value + +#include +#include + +namespace Test { + +template +struct Hierarchical_ForLoop_B { + void run(const int pN, const int sX, const int sY) { + typedef Kokkos::TeamPolicy team_policy; + typedef typename Kokkos::TeamPolicy::member_type member_type; + + typedef Kokkos::View viewDataType; + viewDataType v("Matrix", sX, sY); + + Kokkos::parallel_for( + "Team", team_policy(pN, Kokkos::AUTO), + KOKKOS_LAMBDA(const member_type &team) { + const int n = team.league_rank(); + const int ls = team.league_size(); + + const int startDim1 = n * (int)(sX / ls); + const int modDim1 = n == ls - 1 ? sX % ls : 0; + + Kokkos::parallel_for( + Kokkos::TeamVectorRange(team, v.extent(1)), [&](const int m) { + for (int i = startDim1; + i < (startDim1 + (int)(sX / ls) + modDim1); ++i) + v(i, m) = i * v.extent(1) + m; + }); + }); + + Kokkos::fence(); + auto v_H = Kokkos::create_mirror_view_and_copy(Kokkos::HostSpace(), v); + + int check = 0; + const int s = sY * sX; + for (int i = 0; i < sX; ++i) + for (int j = 0; j < sY; ++j) check += v_H(i, j); + ASSERT_EQ(check, s * (s - 1) / 2); + } +}; + +TEST(TEST_CATEGORY, IncrTest_11b_Hierarchical_ForLoop) { + Hierarchical_ForLoop_B test; + test.run(1, 6, 400); + test.run(6, 7, 19); + test.run(12, 277, 321); +} + +} // namespace Test diff --git a/lib/kokkos/core/unit_test/incremental/Test11c_ParallelFor_ThreadVectorRange.hpp b/lib/kokkos/core/unit_test/incremental/Test11c_ParallelFor_ThreadVectorRange.hpp new file mode 100644 index 0000000000..c6998a5781 --- /dev/null +++ b/lib/kokkos/core/unit_test/incremental/Test11c_ParallelFor_ThreadVectorRange.hpp @@ -0,0 +1,105 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// 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 NTESS "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 NTESS 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 +*/ + +// @Kokkos_Feature_Level_Required:11 +// Unit test for hierarchical parallelism +// Create concurrent work hierarchically and verify if +// contributions of paticipating processing units corresponds to expected value + +#include +#include + +namespace Test { + +template +struct Hierarchical_ForLoop_C { + void run(const int pN, const int sX, const int sY, const int sZ) { + typedef Kokkos::TeamPolicy team_policy; + typedef typename Kokkos::TeamPolicy::member_type member_type; + + typedef Kokkos::View viewDataType; + viewDataType v("Matrix", sX, sY, sZ); + + Kokkos::parallel_for( + "Team", team_policy(pN, Kokkos::AUTO), + KOKKOS_LAMBDA(const member_type &team) { + int n = team.league_rank(); + int ls = team.league_size(); + + int startDim1 = n * (int)(sX / ls); + int modDim1 = n == ls - 1 ? sX % ls : 0; + + Kokkos::parallel_for( + Kokkos::TeamThreadRange(team, v.extent(1)), [&](const int m) { + Kokkos::parallel_for( + Kokkos::ThreadVectorRange(team, v.extent(2)), + [&](const int k) { + for (int i = startDim1; + i < (startDim1 + (int)(sX / ls) + modDim1); ++i) + v(i, m, k) = + i * v.extent(1) * v.extent(2) + m * v.extent(2) + k; + }); + }); + }); + + Kokkos::fence(); + auto v_H = Kokkos::create_mirror_view_and_copy(Kokkos::HostSpace(), v); + + size_t check = 0; + const size_t s = sX * sY * sZ; + for (int i = 0; i < sX; ++i) + for (int j = 0; j < sY; ++j) + for (int k = 0; k < sZ; ++k) check += v_H(i, j, k); + ASSERT_EQ(check, s * (s - 1) / 2); + } +}; + +TEST(TEST_CATEGORY, IncrTest_11c_Hierarchical_ForLoop) { + Hierarchical_ForLoop_C test; + test.run(4, 16, 16, 16); + test.run(8, 12, 333, 16); + test.run(12, 277, 321, 345); +} + +} // namespace Test diff --git a/lib/kokkos/core/unit_test/incremental/Test12a_ThreadScratch.hpp b/lib/kokkos/core/unit_test/incremental/Test12a_ThreadScratch.hpp new file mode 100644 index 0000000000..8eb1c243c5 --- /dev/null +++ b/lib/kokkos/core/unit_test/incremental/Test12a_ThreadScratch.hpp @@ -0,0 +1,125 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// 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 NTESS "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 NTESS 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 +*/ + +// @Kokkos_Feature_Level_Required:12 +// Unit test for hierarchical parallelism +// Create concurrent work hierarchically and verify if +// contributions of paticipating processing units corresponds to expected value +// Use a scratch pad memory for each team +#include +#include + +namespace Test { + +template +struct ThreadScratch { + using policy_t = Kokkos::TeamPolicy; + using team_t = typename Kokkos::TeamPolicy::member_type; + using data_t = Kokkos::View; + + using scratch_t = Kokkos::View >; + + int sX, sY; + data_t v; + KOKKOS_FUNCTION + void operator()(const team_t &team) const { + // Allocate and use scratch pad memory + scratch_t v_S(team.thread_scratch(1), sY); + int n = team.league_rank(); + + for (int i = 0; i < sY; ++i) v_S(i) = 0; + + Kokkos::parallel_for(Kokkos::TeamThreadRange(team, sX), [&](const int m) { + Kokkos::parallel_for( + Kokkos::ThreadVectorRange(team, sY), + [&](const int k) { v_S(k) += sX * sY * n + sY * m + k; }); + }); + + team.team_barrier(); + + for (int i = 0; i < sY; ++i) { + v(n, team.team_rank()) += v_S(i); + } + } + + void run(const int pN, const int sX_, const int sY_) { + sX = sX_; + sY = sY_; + + int scratchSize = scratch_t::shmem_size(sY); + // So this works with deprecated code enabled: + policy_t policy = policy_t(pN, Kokkos::AUTO) + .set_scratch_size(1, Kokkos::PerThread(scratchSize)); + + int max_team_size = policy.team_size_max(*this, Kokkos::ParallelForTag()); + v = data_t("Matrix", pN, max_team_size); + + Kokkos::parallel_for( + "Test12a_ThreadScratch", + policy_t(pN, max_team_size) + .set_scratch_size(1, Kokkos::PerThread(scratchSize)), + *this); + + Kokkos::fence(); + auto v_H = Kokkos::create_mirror_view_and_copy(Kokkos::HostSpace(), v); + + size_t check = 0; + const size_t s = pN * sX * sY; + for (int n = 0; n < pN; ++n) + for (int m = 0; m < max_team_size; ++m) { + check += v_H(n, m); + } + ASSERT_EQ(s * (s - 1) / 2, check); + } +}; + +TEST(TEST_CATEGORY, IncrTest_12a_ThreadScratch) { + ThreadScratch test; + test.run(1, 55, 9); + test.run(2, 4, 22); + test.run(14, 277, 321); +} + +} // namespace Test diff --git a/lib/kokkos/core/unit_test/incremental/Test12b_TeamScratch.hpp b/lib/kokkos/core/unit_test/incremental/Test12b_TeamScratch.hpp new file mode 100644 index 0000000000..169491af3f --- /dev/null +++ b/lib/kokkos/core/unit_test/incremental/Test12b_TeamScratch.hpp @@ -0,0 +1,113 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// 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 NTESS "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 NTESS 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 +*/ + +// @Kokkos_Feature_Level_Required:12 +// Unit test for hierarchical parallelism +// Create concurrent work hierarchically and verify if +// contributions of paticipating processing units corresponds to expected value +// Use a scratch pad memory for each team +#include +#include + +namespace Test { + +template +struct TeamScratch { + void run(const int pN, const int sX, const int sY) { + using policy_t = Kokkos::TeamPolicy; + using team_t = typename Kokkos::TeamPolicy::member_type; + using data_t = Kokkos::View; + data_t v("Matrix", pN, sX); + + using scratch_t = Kokkos::View >; + int scratchSize = scratch_t::shmem_size(sX, sY); + + Kokkos::parallel_for( + "Team", + policy_t(pN, Kokkos::AUTO) + .set_scratch_size(1, Kokkos::PerTeam(scratchSize)), + KOKKOS_LAMBDA(const team_t &team) { + // Allocate and use scratch pad memory + scratch_t v_S(team.team_scratch(1), sX, sY); + int n = team.league_rank(); + + Kokkos::parallel_for( + Kokkos::TeamThreadRange(team, sX), [&](const int m) { + Kokkos::parallel_for( + Kokkos::ThreadVectorRange(team, sY), [&](const int k) { + v_S(m, k) = v_S.extent(0) * v_S.extent(1) * n + + v_S.extent(1) * m + k; + }); + }); + + team.team_barrier(); + + // Sum up contributions and reduce by one dimension + Kokkos::parallel_for(Kokkos::TeamThreadRange(team, sX), + [&](const int m) { + for (int i = 0; i < sY; ++i) + v(n, m) += v_S(m, i); + }); + }); + + Kokkos::fence(); + auto v_H = Kokkos::create_mirror_view_and_copy(Kokkos::HostSpace(), v); + + size_t check = 0; + const size_t s = pN * sX * sY; + for (int n = 0; n < pN; ++n) + for (int m = 0; m < sX; ++m) check += v_H(n, m); + ASSERT_EQ(check, s * (s - 1) / 2); + } +}; + +TEST(TEST_CATEGORY, IncrTest_12b_TeamScratch) { + TeamScratch test; + test.run(1, 4, 4); + test.run(4, 7, 10); + test.run(14, 277, 321); +} + +} // namespace Test diff --git a/lib/kokkos/core/unit_test/incremental/Test13a_ParallelRed_TeamThreadRange.hpp b/lib/kokkos/core/unit_test/incremental/Test13a_ParallelRed_TeamThreadRange.hpp new file mode 100644 index 0000000000..b5467da921 --- /dev/null +++ b/lib/kokkos/core/unit_test/incremental/Test13a_ParallelRed_TeamThreadRange.hpp @@ -0,0 +1,105 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// 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 NTESS "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 NTESS 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 +*/ + +// @Kokkos_Feature_Level_Required:13 +// Unit test for hierarchical parallelism +// Create concurrent work hierarchically and verify if +// sum of created processing units corresponds to expected value + +#include +#include + +// Degrees of concurrency per nesting level + +using SCALAR_TYPE = int; + +namespace Test { + +template +struct Hierarchical_Red_A { + void run(const int pN, const int sX) { + typedef Kokkos::TeamPolicy team_policy; + typedef typename Kokkos::TeamPolicy::member_type member_type; + + typedef Kokkos::View viewDataType; + viewDataType v("Vector", pN); + + Kokkos::parallel_for( + "Team", team_policy(pN, Kokkos::AUTO), + KOKKOS_LAMBDA(const member_type &team) { + const int n = team.league_rank(); + SCALAR_TYPE out = 0; + + Kokkos::parallel_reduce( + Kokkos::TeamThreadRange(team, sX), + [=](const int i, SCALAR_TYPE &tmp) { + tmp += n * v.extent(0) + i; + }, + out); + + Kokkos::single(Kokkos::PerTeam(team), [&]() { v(n) += out; }); + }); + + Kokkos::fence(); + auto v_H = Kokkos::create_mirror_view_and_copy(Kokkos::HostSpace(), v); + + SCALAR_TYPE check = 0; + SCALAR_TYPE ref = 0; + for (int i = 0; i < pN; ++i) { + check += v_H(i); + ref += + (sX + i * pN) * (sX + i * pN - 1) / 2 - ((i * pN) * (i * pN - 1) / 2); + } + ASSERT_EQ(check, ref); + } +}; + +TEST(TEST_CATEGORY, IncrTest_13a_Hierarchical_Red) { + Hierarchical_Red_A test; + test.run(4, 16); + test.run(2, 39); + test.run(39, 3); +} + +} // namespace Test diff --git a/lib/kokkos/core/unit_test/qthreads/TestQthreads.hpp b/lib/kokkos/core/unit_test/incremental/Test13b_ParallelRed_TeamVectorRange.hpp similarity index 57% rename from lib/kokkos/core/unit_test/qthreads/TestQthreads.hpp rename to lib/kokkos/core/unit_test/incremental/Test13b_ParallelRed_TeamVectorRange.hpp index c45433d77d..ada295591e 100644 --- a/lib/kokkos/core/unit_test/qthreads/TestQthreads.hpp +++ b/lib/kokkos/core/unit_test/incremental/Test13b_ParallelRed_TeamVectorRange.hpp @@ -42,68 +42,61 @@ //@HEADER */ -#ifndef KOKKOS_TEST_QTHREADS_HPP -#define KOKKOS_TEST_QTHREADS_HPP +// @Kokkos_Feature_Level_Required:13 +// Unit test for hierarchical parallelism +// Create concurrent work hierarchically and verify if +// sum of created processing units corresponds to expected value #include +#include -#include +using SCALAR_TYPE = int; -#ifdef KOKKOS_LAMBDA -#undef KOKKOS_LAMBDA -#endif -#define KOKKOS_LAMBDA [=] +namespace Test { -#include +template +struct Hierarchical_Red_B { + void run(const int pN, const int sX) { + typedef Kokkos::TeamPolicy team_policy; + typedef typename Kokkos::TeamPolicy::member_type member_type; -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include + typedef Kokkos::View viewDataType; + viewDataType v("Vector", pN); -namespace Test { + Kokkos::parallel_for( + "Team", team_policy(pN, Kokkos::AUTO), + KOKKOS_LAMBDA(const member_type &team) { + const int n = team.league_rank(); + SCALAR_TYPE out = 0; -class qthreads : public ::testing::Test { - protected: - static void SetUpTestCase() { - const unsigned numa_count = Kokkos::hwloc::get_available_numa_count(); - const unsigned cores_per_numa = - Kokkos::hwloc::get_available_cores_per_numa(); - const unsigned threads_per_core = - Kokkos::hwloc::get_available_threads_per_core(); + Kokkos::parallel_reduce( + Kokkos::TeamVectorRange(team, sX), + [=](const int i, SCALAR_TYPE &tmp) { + tmp += n * v.extent(0) + i; + }, + out); - const unsigned threads_count = - std::max(1u, numa_count) * - std::max(2u, (cores_per_numa * threads_per_core) / 2); + Kokkos::single(Kokkos::PerTeam(team), [&]() { v(n) += out; }); + }); - Kokkos::Qthreads::initialize(threads_count); - Kokkos::print_configuration(std::cout, true); + Kokkos::fence(); + auto v_H = Kokkos::create_mirror_view_and_copy(Kokkos::HostSpace(), v); - srand(10231); + SCALAR_TYPE check = 0; + SCALAR_TYPE ref = 0; + for (int i = 0; i < pN; ++i) { + check += v_H(i); + ref += ((sX + i * pN) * (sX + i * pN - 1) - (i * pN * (i * pN - 1))) / 2; + } + ASSERT_EQ(check, ref); } - - static void TearDownTestCase() { Kokkos::Qthreads::finalize(); } }; -} // namespace Test +TEST(TEST_CATEGORY, IncrTest_13b_Hierarchical_Red) { + Hierarchical_Red_B test; + test.run(4, 16); + test.run(2, 39); + test.run(39, 3); +} -#endif +} // namespace Test diff --git a/lib/kokkos/core/unit_test/incremental/Test13c_ParallelRed_ThreadVectorRange.hpp b/lib/kokkos/core/unit_test/incremental/Test13c_ParallelRed_ThreadVectorRange.hpp new file mode 100644 index 0000000000..7df940c58d --- /dev/null +++ b/lib/kokkos/core/unit_test/incremental/Test13c_ParallelRed_ThreadVectorRange.hpp @@ -0,0 +1,112 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// 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 NTESS "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 NTESS 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 +*/ + +// @Kokkos_Feature_Level_Required:13 +// Unit test for hierarchical parallelism +// Create concurrent work hierarchically and verify if +// sum of created processing units corresponds to expected value + +#include +#include + +using SCALAR_TYPE = int; + +namespace Test { + +template +struct Hierarchical_Red_C { + void run(const int pN, const int sX, const int sY) { + typedef Kokkos::TeamPolicy team_policy; + typedef typename Kokkos::TeamPolicy::member_type member_type; + + typedef Kokkos::View viewDataType; + viewDataType v("Vector", pN); + + Kokkos::parallel_for( + "Team", team_policy(pN, Kokkos::AUTO), + KOKKOS_LAMBDA(const member_type &team) { + int n = team.league_rank(); + SCALAR_TYPE out = 0; + + Kokkos::parallel_reduce( + Kokkos::TeamThreadRange(team, sX), + [=](const int i, SCALAR_TYPE &tmp) { + SCALAR_TYPE out_inner = 0; + Kokkos::parallel_reduce( + Kokkos::ThreadVectorRange(team, sY), + [=](const int k, int &tmp_inner) { + tmp_inner += n * sX * v.extent(0) + sX * i + k; + }, + out_inner); + + Kokkos::single(Kokkos::PerThread(team), + [&]() { tmp += out_inner; }); + }, + out); + + Kokkos::single(Kokkos::PerTeam(team), [&]() { v(n) += out; }); + }); + + Kokkos::fence(); + auto v_H = Kokkos::create_mirror_view_and_copy(Kokkos::HostSpace(), v); + + SCALAR_TYPE check = 0; + SCALAR_TYPE ref = 0; + for (int i = 0; i < pN; ++i) { + check += v_H(i); + for (int j = 0; j < sX; ++j) + for (int k = 0; k < sY; ++k) ref += i * sX * pN + sX * j + k; + } + ASSERT_EQ(check, ref); + } +}; + +TEST(TEST_CATEGORY, IncrTest_13c_Hierarchical_Red) { + Hierarchical_Red_C test; + test.run(1, 4, 8); + test.run(2, 39, 12); + test.run(39, 3, 235); +} + +} // namespace Test diff --git a/lib/kokkos/containers/unit_tests/openmp/TestOpenMP_BitSet.cpp b/lib/kokkos/core/unit_test/openmp/TestOpenMP_Concepts.cpp similarity index 98% rename from lib/kokkos/containers/unit_tests/openmp/TestOpenMP_BitSet.cpp rename to lib/kokkos/core/unit_test/openmp/TestOpenMP_Concepts.cpp index db11017159..5480af5aaf 100644 --- a/lib/kokkos/containers/unit_tests/openmp/TestOpenMP_BitSet.cpp +++ b/lib/kokkos/core/unit_test/openmp/TestOpenMP_Concepts.cpp @@ -1,4 +1,3 @@ - /* //@HEADER // ************************************************************************ @@ -44,4 +43,4 @@ */ #include -#include +#include diff --git a/lib/kokkos/core/unit_test/openmp/TestOpenMP_Other.cpp b/lib/kokkos/core/unit_test/openmp/TestOpenMP_Other.cpp index 6e7463a33f..7043432517 100644 --- a/lib/kokkos/core/unit_test/openmp/TestOpenMP_Other.cpp +++ b/lib/kokkos/core/unit_test/openmp/TestOpenMP_Other.cpp @@ -63,7 +63,7 @@ TEST(openmp, partition_master) { Mutex mtx; int errors = 0; - auto master = [&errors, &mtx](int partition_id, int num_partitions) { + auto master = [&errors, &mtx](int /*partition_id*/, int /*num_partitions*/) { #ifdef KOKKOS_ENABLE_DEPRECATED_CODE const int pool_size = Kokkos::OpenMP::thread_pool_size(); diff --git a/lib/kokkos/containers/unit_tests/openmp/TestOpenMP_DualView.cpp b/lib/kokkos/core/unit_test/openmp/TestOpenMP_RangePolicyRequire.cpp similarity index 98% rename from lib/kokkos/containers/unit_tests/openmp/TestOpenMP_DualView.cpp rename to lib/kokkos/core/unit_test/openmp/TestOpenMP_RangePolicyRequire.cpp index ed4eb23a8b..284a65a21e 100644 --- a/lib/kokkos/containers/unit_tests/openmp/TestOpenMP_DualView.cpp +++ b/lib/kokkos/core/unit_test/openmp/TestOpenMP_RangePolicyRequire.cpp @@ -44,4 +44,4 @@ */ #include -#include +#include diff --git a/lib/kokkos/core/unit_test/openmp/TestOpenMP_Team.cpp b/lib/kokkos/core/unit_test/openmp/TestOpenMP_Team.cpp index c389ebac37..2409307387 100644 --- a/lib/kokkos/core/unit_test/openmp/TestOpenMP_Team.cpp +++ b/lib/kokkos/core/unit_test/openmp/TestOpenMP_Team.cpp @@ -80,25 +80,25 @@ TEST(TEST_CATEGORY, team_reduce) { } TEST(TEST_CATEGORY, team_broadcast) { - TestTeamBroadcast >::test_teambroadcast(0); - TestTeamBroadcast >::test_teambroadcast(0); + TestTeamBroadcast, + long>::test_teambroadcast(0, 1); + TestTeamBroadcast, + long>::test_teambroadcast(0, 1); - TestTeamBroadcast >::test_teambroadcast(2); - TestTeamBroadcast >::test_teambroadcast(2); + TestTeamBroadcast, + long>::test_teambroadcast(2, 1); + TestTeamBroadcast, + long>::test_teambroadcast(2, 1); - TestTeamBroadcast >::test_teambroadcast(16); - TestTeamBroadcast >::test_teambroadcast(16); + TestTeamBroadcast, + long>::test_teambroadcast(16, 1); + TestTeamBroadcast, + long>::test_teambroadcast(16, 1); - TestTeamBroadcast >:: - test_teambroadcast(1000); - TestTeamBroadcast >:: - test_teambroadcast(1000); + TestTeamBroadcast, + long>::test_teambroadcast(1000, 1); + TestTeamBroadcast, + long>::test_teambroadcast(1000, 1); } } // namespace Test diff --git a/lib/kokkos/core/unit_test/openmp/TestOpenMP_TeamScratch.cpp b/lib/kokkos/core/unit_test/openmp/TestOpenMP_TeamScratch.cpp index 5c283a6226..b42bdf754f 100644 --- a/lib/kokkos/core/unit_test/openmp/TestOpenMP_TeamScratch.cpp +++ b/lib/kokkos/core/unit_test/openmp/TestOpenMP_TeamScratch.cpp @@ -58,7 +58,6 @@ TEST(TEST_CATEGORY, team_scratch_request) { } #if defined(KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA) -#if !defined(KOKKOS_ENABLE_CUDA) || (8000 <= CUDA_VERSION) TEST(TEST_CATEGORY, team_lambda_shared_request) { TestLambdaSharedTeam >(); @@ -67,7 +66,6 @@ TEST(TEST_CATEGORY, team_lambda_shared_request) { } TEST(TEST_CATEGORY, scratch_align) { TestScratchAlignment(); } #endif -#endif TEST(TEST_CATEGORY, shmem_size) { TestShmemSize(); } diff --git a/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_Concepts.cpp b/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_Concepts.cpp new file mode 100644 index 0000000000..8896339f99 --- /dev/null +++ b/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_Concepts.cpp @@ -0,0 +1,46 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 3.0 +// Copyright (2020) National Technology & Engineering +// Solutions of Sandia, LLC (NTESS). +// +// Under the terms of Contract DE-NA0003525 with NTESS, +// 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 NTESS "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 NTESS 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/unit_test/openmptarget/TestOpenMPTarget_Crs.cpp b/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_Crs.cpp new file mode 100644 index 0000000000..e69de29bb2 diff --git a/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_FunctorAnalysis.cpp b/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_FunctorAnalysis.cpp new file mode 100644 index 0000000000..e69de29bb2 diff --git a/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_LocalDeepCopy.cpp b/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_LocalDeepCopy.cpp new file mode 100644 index 0000000000..e69de29bb2 diff --git a/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_RangePolicyRequire.cpp b/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_RangePolicyRequire.cpp new file mode 100644 index 0000000000..e69de29bb2 diff --git a/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_Reductions_DeviceView.cpp b/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_Reductions_DeviceView.cpp new file mode 100644 index 0000000000..e69de29bb2 diff --git a/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SharedAlloc.cpp b/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SharedAlloc.cpp index aa0d9cfe27..6d5645547b 100644 --- a/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SharedAlloc.cpp +++ b/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SharedAlloc.cpp @@ -47,7 +47,7 @@ namespace Test { -TEST_F(TEST_CATEGORY, impl_shared_alloc) { +TEST(TEST_CATEGORY, impl_shared_alloc) { test_shared_alloc(); } diff --git a/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SubView_a.cpp b/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SubView_a.cpp index 6f6255af87..4be6218e23 100644 --- a/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SubView_a.cpp +++ b/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SubView_a.cpp @@ -47,51 +47,51 @@ namespace Test { -TEST_F(TEST_CATEGORY, view_subview_auto_1d_left) { +TEST(TEST_CATEGORY, view_subview_auto_1d_left) { TestViewSubview::test_auto_1d(); } -TEST_F(TEST_CATEGORY, view_subview_auto_1d_right) { +TEST(TEST_CATEGORY, view_subview_auto_1d_right) { TestViewSubview::test_auto_1d(); } -TEST_F(TEST_CATEGORY, view_subview_auto_1d_stride) { +TEST(TEST_CATEGORY, view_subview_auto_1d_stride) { TestViewSubview::test_auto_1d(); } -TEST_F(TEST_CATEGORY, view_subview_assign_strided) { +TEST(TEST_CATEGORY, view_subview_assign_strided) { TestViewSubview::test_1d_strided_assignment(); } -TEST_F(TEST_CATEGORY, view_subview_left_0) { +TEST(TEST_CATEGORY, view_subview_left_0) { TestViewSubview::test_left_0(); } -TEST_F(TEST_CATEGORY, view_subview_left_1) { +TEST(TEST_CATEGORY, view_subview_left_1) { TestViewSubview::test_left_1(); } -TEST_F(TEST_CATEGORY, view_subview_left_2) { +TEST(TEST_CATEGORY, view_subview_left_2) { TestViewSubview::test_left_2(); } -TEST_F(TEST_CATEGORY, view_subview_left_3) { +TEST(TEST_CATEGORY, view_subview_left_3) { TestViewSubview::test_left_3(); } -TEST_F(TEST_CATEGORY, view_subview_right_0) { +TEST(TEST_CATEGORY, view_subview_right_0) { TestViewSubview::test_right_0(); } -TEST_F(TEST_CATEGORY, view_subview_right_1) { +TEST(TEST_CATEGORY, view_subview_right_1) { TestViewSubview::test_right_1(); } -TEST_F(TEST_CATEGORY, view_subview_right_3) { +TEST(TEST_CATEGORY, view_subview_right_3) { TestViewSubview::test_right_3(); } -TEST_F(TEST_CATEGORY, view_static_tests) { +TEST(TEST_CATEGORY, view_static_tests) { TestViewSubview::TestSubviewStaticSizes()(); TestViewSubview::TestSubviewStaticSizes(); TestViewSubview::test_layoutleft_to_layoutleft< TEST_EXECSPACE, Kokkos::MemoryTraits >(); @@ -55,7 +55,7 @@ TEST_F(TEST_CATEGORY, view_subview_layoutleft_to_layoutleft) { TEST_EXECSPACE, Kokkos::MemoryTraits >(); } -TEST_F(TEST_CATEGORY, view_subview_layoutright_to_layoutright) { +TEST(TEST_CATEGORY, view_subview_layoutright_to_layoutright) { TestViewSubview::test_layoutright_to_layoutright(); TestViewSubview::test_layoutright_to_layoutright< TEST_EXECSPACE, Kokkos::MemoryTraits >(); diff --git a/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SubView_c01.cpp b/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SubView_c01.cpp index 953c383bf9..3361efcc16 100644 --- a/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SubView_c01.cpp +++ b/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SubView_c01.cpp @@ -47,7 +47,7 @@ namespace Test { -TEST_F(TEST_CATEGORY, view_subview_1d_assign) { +TEST(TEST_CATEGORY, view_subview_1d_assign) { TestViewSubview::test_1d_assign(); } diff --git a/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SubView_c02.cpp b/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SubView_c02.cpp index 3a6245e258..c4887cf3db 100644 --- a/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SubView_c02.cpp +++ b/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SubView_c02.cpp @@ -47,7 +47,7 @@ namespace Test { -TEST_F(TEST_CATEGORY, view_subview_1d_assign_atomic) { +TEST(TEST_CATEGORY, view_subview_1d_assign_atomic) { TestViewSubview::test_1d_assign >(); } diff --git a/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SubView_c03.cpp b/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SubView_c03.cpp index e9e912dd0e..b172b0c619 100644 --- a/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SubView_c03.cpp +++ b/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SubView_c03.cpp @@ -47,7 +47,7 @@ namespace Test { -TEST_F(TEST_CATEGORY, view_subview_1d_assign_randomaccess) { +TEST(TEST_CATEGORY, view_subview_1d_assign_randomaccess) { TestViewSubview::test_1d_assign< TEST_EXECSPACE, Kokkos::MemoryTraits >(); } diff --git a/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SubView_c04.cpp b/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SubView_c04.cpp index 0c5b9c8c01..faf0ef7a41 100644 --- a/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SubView_c04.cpp +++ b/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SubView_c04.cpp @@ -47,7 +47,7 @@ namespace Test { -TEST_F(TEST_CATEGORY, view_subview_2d_from_3d) { +TEST(TEST_CATEGORY, view_subview_2d_from_3d) { TestViewSubview::test_2d_subview_3d(); } diff --git a/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SubView_c05.cpp b/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SubView_c05.cpp index 0e11c637e6..a3fb95fbef 100644 --- a/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SubView_c05.cpp +++ b/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SubView_c05.cpp @@ -47,7 +47,7 @@ namespace Test { -TEST_F(openmptarget, view_subview_2d_from_3d_atomic) { +TEST(openmptarget, view_subview_2d_from_3d_atomic) { TestViewSubview::test_2d_subview_3d >(); } diff --git a/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SubView_c06.cpp b/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SubView_c06.cpp index e9a30a1835..056b392cd5 100644 --- a/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SubView_c06.cpp +++ b/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SubView_c06.cpp @@ -47,7 +47,7 @@ namespace Test { -TEST_F(TEST_CATEGORY, view_subview_2d_from_3d_randomaccess) { +TEST(TEST_CATEGORY, view_subview_2d_from_3d_randomaccess) { TestViewSubview::test_2d_subview_3d< TEST_EXECSPACE, Kokkos::MemoryTraits >(); } diff --git a/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SubView_c07.cpp b/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SubView_c07.cpp index 7d230d7e85..033bce8633 100644 --- a/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SubView_c07.cpp +++ b/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SubView_c07.cpp @@ -47,7 +47,7 @@ namespace Test { -TEST_F(TEST_CATEGORY, view_subview_3d_from_5d_left) { +TEST(TEST_CATEGORY, view_subview_3d_from_5d_left) { TestViewSubview::test_3d_subview_5d_left(); } diff --git a/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SubView_c08.cpp b/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SubView_c08.cpp index e0b1f17a98..58ef423608 100644 --- a/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SubView_c08.cpp +++ b/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SubView_c08.cpp @@ -47,7 +47,7 @@ namespace Test { -TEST_F(TEST_CATEGORY, view_subview_3d_from_5d_left_atomic) { +TEST(TEST_CATEGORY, view_subview_3d_from_5d_left_atomic) { TestViewSubview::test_3d_subview_5d_left< TEST_EXECSPACE, Kokkos::MemoryTraits >(); } diff --git a/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SubView_c09.cpp b/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SubView_c09.cpp index 0b5d94b527..6e6c2af8e9 100644 --- a/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SubView_c09.cpp +++ b/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SubView_c09.cpp @@ -47,7 +47,7 @@ namespace Test { -TEST_F(TEST_CATEGORY, view_subview_3d_from_5d_left_randomaccess) { +TEST(TEST_CATEGORY, view_subview_3d_from_5d_left_randomaccess) { TestViewSubview::test_3d_subview_5d_left< TEST_EXECSPACE, Kokkos::MemoryTraits >(); } diff --git a/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SubView_c10.cpp b/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SubView_c10.cpp index da2605da03..2ad95d38cf 100644 --- a/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SubView_c10.cpp +++ b/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SubView_c10.cpp @@ -47,7 +47,7 @@ namespace Test { -TEST_F(TEST_CATEGORY, view_subview_3d_from_5d_right) { +TEST(TEST_CATEGORY, view_subview_3d_from_5d_right) { TestViewSubview::test_3d_subview_5d_right(); } diff --git a/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SubView_c11.cpp b/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SubView_c11.cpp index 3aa927190c..da8684d21c 100644 --- a/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SubView_c11.cpp +++ b/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SubView_c11.cpp @@ -47,7 +47,7 @@ namespace Test { -TEST_F(TEST_CATEGORY, view_subview_3d_from_5d_right_atomic) { +TEST(TEST_CATEGORY, view_subview_3d_from_5d_right_atomic) { TestViewSubview::test_3d_subview_5d_right< TEST_EXECSPACE, Kokkos::MemoryTraits >(); } diff --git a/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SubView_c12.cpp b/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SubView_c12.cpp index dde0db7dd8..dde7d51762 100644 --- a/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SubView_c12.cpp +++ b/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SubView_c12.cpp @@ -47,7 +47,7 @@ namespace Test { -TEST_F(TEST_CATEGORY, view_subview_3d_from_5d_right_randomaccess) { +TEST(TEST_CATEGORY, view_subview_3d_from_5d_right_randomaccess) { TestViewSubview::test_3d_subview_5d_right< TEST_EXECSPACE, Kokkos::MemoryTraits >(); } diff --git a/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SubView_c13.cpp b/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_SubView_c13.cpp new file mode 100644 index 0000000000..e69de29bb2 diff --git a/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_Team.cpp b/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_Team.cpp index f2d063c25f..74b74d784c 100644 --- a/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_Team.cpp +++ b/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_Team.cpp @@ -47,7 +47,7 @@ namespace Test { -TEST_F(TEST_CATEGORY, team_for) { +TEST(TEST_CATEGORY, team_for) { TestTeamPolicy >::test_for( 0); TestTeamPolicy >::test_for( @@ -64,7 +64,7 @@ TEST_F(TEST_CATEGORY, team_for) { 1000); } -TEST_F(TEST_CATEGORY, team_reduce) { +TEST(TEST_CATEGORY, team_reduce) { TestTeamPolicy >::test_reduce(0); TestTeamPolicy >(0); TestScanTeam >(0); TestScanTeam >(10); @@ -56,7 +56,7 @@ TEST_F(TEST_CATEGORY, team_scan) { TestScanTeam >(10000); } -TEST_F(TEST_CATEGORY, team_long_reduce) { +TEST(TEST_CATEGORY, team_long_reduce) { TestReduceTeam >(0); TestReduceTeam >(0); TestReduceTeam >(3); @@ -67,7 +67,7 @@ TEST_F(TEST_CATEGORY, team_long_reduce) { 100000); } -TEST_F(TEST_CATEGORY, team_double_reduce) { +TEST(TEST_CATEGORY, team_double_reduce) { TestReduceTeam >(0); TestReduceTeam >(0); TestReduceTeam >(3); diff --git a/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_TeamScratch.cpp b/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_TeamScratch.cpp index b0a75432d7..729e359187 100644 --- a/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_TeamScratch.cpp +++ b/lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_TeamScratch.cpp @@ -47,18 +47,17 @@ namespace Test { -TEST_F(TEST_CATEGORY, team_shared_request) { +TEST(TEST_CATEGORY, team_shared_request) { TestSharedTeam >(); TestSharedTeam >(); } -TEST_F(TEST_CATEGORY, team_scratch_request) { +TEST(TEST_CATEGORY, team_scratch_request) { TestScratchTeam >(); TestScratchTeam >(); } #if defined(KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA) -#if !defined(KOKKOS_ENABLE_CUDA) || (8000 <= CUDA_VERSION) TEST_F(TEST_CATEGORY, team_lambda_shared_request) { TestLambdaSharedTeam >(); @@ -66,11 +65,10 @@ TEST_F(TEST_CATEGORY, team_lambda_shared_request) { Kokkos::Schedule >(); } #endif -#endif -TEST_F(TEST_CATEGORY, shmem_size) { TestShmemSize(); } +TEST(TEST_CATEGORY, shmem_size) { TestShmemSize(); } -TEST_F(TEST_CATEGORY, multi_level_scratch) { +TEST(TEST_CATEGORY, multi_level_scratch) { TestMultiLevelScratchTeam >(); TestMultiLevelScratchTeam - -namespace Test { - -TEST_F(qthreads, atomics) { -#if 0 - const int loop_count = 1e4; - - ASSERT_TRUE( ( TestAtomic::Loop< int, Kokkos::Qthreads >( loop_count, 1 ) ) ); - ASSERT_TRUE( ( TestAtomic::Loop< int, Kokkos::Qthreads >( loop_count, 2 ) ) ); - ASSERT_TRUE( ( TestAtomic::Loop< int, Kokkos::Qthreads >( loop_count, 3 ) ) ); - - ASSERT_TRUE( ( TestAtomic::Loop< unsigned int, Kokkos::Qthreads >( loop_count, 1 ) ) ); - ASSERT_TRUE( ( TestAtomic::Loop< unsigned int, Kokkos::Qthreads >( loop_count, 2 ) ) ); - ASSERT_TRUE( ( TestAtomic::Loop< unsigned int, Kokkos::Qthreads >( loop_count, 3 ) ) ); - - ASSERT_TRUE( ( TestAtomic::Loop< long int, Kokkos::Qthreads >( loop_count, 1 ) ) ); - ASSERT_TRUE( ( TestAtomic::Loop< long int, Kokkos::Qthreads >( loop_count, 2 ) ) ); - ASSERT_TRUE( ( TestAtomic::Loop< long int, Kokkos::Qthreads >( loop_count, 3 ) ) ); - - ASSERT_TRUE( ( TestAtomic::Loop< unsigned long int, Kokkos::Qthreads >( loop_count, 1 ) ) ); - ASSERT_TRUE( ( TestAtomic::Loop< unsigned long int, Kokkos::Qthreads >( loop_count, 2 ) ) ); - ASSERT_TRUE( ( TestAtomic::Loop< unsigned long int, Kokkos::Qthreads >( loop_count, 3 ) ) ); - - ASSERT_TRUE( ( TestAtomic::Loop< long long int, Kokkos::Qthreads >( loop_count, 1 ) ) ); - ASSERT_TRUE( ( TestAtomic::Loop< long long int, Kokkos::Qthreads >( loop_count, 2 ) ) ); - ASSERT_TRUE( ( TestAtomic::Loop< long long int, Kokkos::Qthreads >( loop_count, 3 ) ) ); - - ASSERT_TRUE( ( TestAtomic::Loop< double, Kokkos::Qthreads >( loop_count, 1 ) ) ); - ASSERT_TRUE( ( TestAtomic::Loop< double, Kokkos::Qthreads >( loop_count, 2 ) ) ); - ASSERT_TRUE( ( TestAtomic::Loop< double, Kokkos::Qthreads >( loop_count, 3 ) ) ); - - ASSERT_TRUE( ( TestAtomic::Loop< float, Kokkos::Qthreads >( 100, 1 ) ) ); - ASSERT_TRUE( ( TestAtomic::Loop< float, Kokkos::Qthreads >( 100, 2 ) ) ); - ASSERT_TRUE( ( TestAtomic::Loop< float, Kokkos::Qthreads >( 100, 3 ) ) ); - - ASSERT_TRUE( ( TestAtomic::Loop< Kokkos::complex, Kokkos::Qthreads >( 100, 1 ) ) ); - ASSERT_TRUE( ( TestAtomic::Loop< Kokkos::complex, Kokkos::Qthreads >( 100, 2 ) ) ); - ASSERT_TRUE( ( TestAtomic::Loop< Kokkos::complex, Kokkos::Qthreads >( 100, 3 ) ) ); - - ASSERT_TRUE( ( TestAtomic::Loop< TestAtomic::SuperScalar<4>, Kokkos::Qthreads >( 100, 1 ) ) ); - ASSERT_TRUE( ( TestAtomic::Loop< TestAtomic::SuperScalar<4>, Kokkos::Qthreads >( 100, 2 ) ) ); - ASSERT_TRUE( ( TestAtomic::Loop< TestAtomic::SuperScalar<4>, Kokkos::Qthreads >( 100, 3 ) ) ); -#endif -} - -TEST_F(qthreads, atomic_operations) { -#if 0 - const int start = 1; // Avoid zero for division. - const int end = 11; - - for ( int i = start; i < end; ++i ) - { - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestIntegralType< int, Kokkos::Qthreads >( start, end - i, 1 ) ) ); - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestIntegralType< int, Kokkos::Qthreads >( start, end - i, 2 ) ) ); - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestIntegralType< int, Kokkos::Qthreads >( start, end - i, 3 ) ) ); - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestIntegralType< int, Kokkos::Qthreads >( start, end - i, 4 ) ) ); - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestIntegralType< int, Kokkos::Qthreads >( start, end - i, 5 ) ) ); - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestIntegralType< int, Kokkos::Qthreads >( start, end - i, 6 ) ) ); - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestIntegralType< int, Kokkos::Qthreads >( start, end - i, 7 ) ) ); - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestIntegralType< int, Kokkos::Qthreads >( start, end - i, 8 ) ) ); - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestIntegralType< int, Kokkos::Qthreads >( start, end - i, 9 ) ) ); - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestIntegralType< int, Kokkos::Qthreads >( start, end - i, 11 ) ) ); - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestIntegralType< int, Kokkos::Qthreads >( start, end - i, 12 ) ) ); - - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestIntegralType< unsigned int, Kokkos::Qthreads >( start, end - i, 1 ) ) ); - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestIntegralType< unsigned int, Kokkos::Qthreads >( start, end - i, 2 ) ) ); - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestIntegralType< unsigned int, Kokkos::Qthreads >( start, end - i, 3 ) ) ); - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestIntegralType< unsigned int, Kokkos::Qthreads >( start, end - i, 4 ) ) ); - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestIntegralType< unsigned int, Kokkos::Qthreads >( start, end - i, 5 ) ) ); - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestIntegralType< unsigned int, Kokkos::Qthreads >( start, end - i, 6 ) ) ); - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestIntegralType< unsigned int, Kokkos::Qthreads >( start, end - i, 7 ) ) ); - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestIntegralType< unsigned int, Kokkos::Qthreads >( start, end - i, 8 ) ) ); - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestIntegralType< unsigned int, Kokkos::Qthreads >( start, end - i, 9 ) ) ); - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestIntegralType< unsigned int, Kokkos::Qthreads >( start, end - i, 11 ) ) ); - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestIntegralType< unsigned int, Kokkos::Qthreads >( start, end - i, 12 ) ) ); - - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestIntegralType< long int, Kokkos::Qthreads >( start, end - i, 1 ) ) ); - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestIntegralType< long int, Kokkos::Qthreads >( start, end - i, 2 ) ) ); - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestIntegralType< long int, Kokkos::Qthreads >( start, end - i, 3 ) ) ); - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestIntegralType< long int, Kokkos::Qthreads >( start, end - i, 4 ) ) ); - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestIntegralType< long int, Kokkos::Qthreads >( start, end - i, 5 ) ) ); - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestIntegralType< long int, Kokkos::Qthreads >( start, end - i, 6 ) ) ); - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestIntegralType< long int, Kokkos::Qthreads >( start, end - i, 7 ) ) ); - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestIntegralType< long int, Kokkos::Qthreads >( start, end - i, 8 ) ) ); - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestIntegralType< long int, Kokkos::Qthreads >( start, end - i, 9 ) ) ); - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestIntegralType< long int, Kokkos::Qthreads >( start, end - i, 11 ) ) ); - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestIntegralType< long int, Kokkos::Qthreads >( start, end - i, 12 ) ) ); - - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestIntegralType< unsigned long int, Kokkos::Qthreads >( start, end - i, 1 ) ) ); - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestIntegralType< unsigned long int, Kokkos::Qthreads >( start, end - i, 2 ) ) ); - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestIntegralType< unsigned long int, Kokkos::Qthreads >( start, end - i, 3 ) ) ); - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestIntegralType< unsigned long int, Kokkos::Qthreads >( start, end - i, 4 ) ) ); - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestIntegralType< unsigned long int, Kokkos::Qthreads >( start, end - i, 5 ) ) ); - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestIntegralType< unsigned long int, Kokkos::Qthreads >( start, end - i, 6 ) ) ); - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestIntegralType< unsigned long int, Kokkos::Qthreads >( start, end - i, 7 ) ) ); - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestIntegralType< unsigned long int, Kokkos::Qthreads >( start, end - i, 8 ) ) ); - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestIntegralType< unsigned long int, Kokkos::Qthreads >( start, end - i, 9 ) ) ); - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestIntegralType< unsigned long int, Kokkos::Qthreads >( start, end - i, 11 ) ) ); - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestIntegralType< unsigned long int, Kokkos::Qthreads >( start, end - i, 12 ) ) ); - - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestIntegralType< long long int, Kokkos::Qthreads >( start, end - i, 1 ) ) ); - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestIntegralType< long long int, Kokkos::Qthreads >( start, end - i, 2 ) ) ); - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestIntegralType< long long int, Kokkos::Qthreads >( start, end - i, 3 ) ) ); - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestIntegralType< long long int, Kokkos::Qthreads >( start, end - i, 4 ) ) ); - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestIntegralType< long long int, Kokkos::Qthreads >( start, end - i, 5 ) ) ); - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestIntegralType< long long int, Kokkos::Qthreads >( start, end - i, 6 ) ) ); - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestIntegralType< long long int, Kokkos::Qthreads >( start, end - i, 7 ) ) ); - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestIntegralType< long long int, Kokkos::Qthreads >( start, end - i, 8 ) ) ); - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestIntegralType< long long int, Kokkos::Qthreads >( start, end - i, 9 ) ) ); - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestIntegralType< long long int, Kokkos::Qthreads >( start, end - i, 11 ) ) ); - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestIntegralType< long long int, Kokkos::Qthreads >( start, end - i, 12 ) ) ); - - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestNonIntegralType< double, Kokkos::Qthreads >( start, end - i, 1 ) ) ); - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestNonIntegralType< double, Kokkos::Qthreads >( start, end - i, 2 ) ) ); - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestNonIntegralType< double, Kokkos::Qthreads >( start, end - i, 3 ) ) ); - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestNonIntegralType< double, Kokkos::Qthreads >( start, end - i, 4 ) ) ); - - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestNonIntegralType< float, Kokkos::Qthreads >( start, end - i, 1 ) ) ); - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestNonIntegralType< float, Kokkos::Qthreads >( start, end - i, 2 ) ) ); - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestNonIntegralType< float, Kokkos::Qthreads >( start, end - i, 3 ) ) ); - ASSERT_TRUE( ( TestAtomicOperations::AtomicOperationsTestNonIntegralType< float, Kokkos::Qthreads >( start, end - i, 4 ) ) ); - } -#endif -} - -TEST_F(qthreads, atomic_views_integral) { -#if 0 - const long length = 1000000; - - { - // Integral Types. - ASSERT_TRUE( ( TestAtomicViews::AtomicViewsTestIntegralType< long, Kokkos::Qthreads >( length, 1 ) ) ); - ASSERT_TRUE( ( TestAtomicViews::AtomicViewsTestIntegralType< long, Kokkos::Qthreads >( length, 2 ) ) ); - ASSERT_TRUE( ( TestAtomicViews::AtomicViewsTestIntegralType< long, Kokkos::Qthreads >( length, 3 ) ) ); - ASSERT_TRUE( ( TestAtomicViews::AtomicViewsTestIntegralType< long, Kokkos::Qthreads >( length, 4 ) ) ); - ASSERT_TRUE( ( TestAtomicViews::AtomicViewsTestIntegralType< long, Kokkos::Qthreads >( length, 5 ) ) ); - ASSERT_TRUE( ( TestAtomicViews::AtomicViewsTestIntegralType< long, Kokkos::Qthreads >( length, 6 ) ) ); - ASSERT_TRUE( ( TestAtomicViews::AtomicViewsTestIntegralType< long, Kokkos::Qthreads >( length, 7 ) ) ); - ASSERT_TRUE( ( TestAtomicViews::AtomicViewsTestIntegralType< long, Kokkos::Qthreads >( length, 8 ) ) ); - } -#endif -} - -TEST_F(qthreads, atomic_views_nonintegral) { -#if 0 - const long length = 1000000; - - { - // Non-Integral Types. - ASSERT_TRUE( ( TestAtomicViews::AtomicViewsTestNonIntegralType< double, Kokkos::Qthreads >( length, 1 ) ) ); - ASSERT_TRUE( ( TestAtomicViews::AtomicViewsTestNonIntegralType< double, Kokkos::Qthreads >( length, 2 ) ) ); - ASSERT_TRUE( ( TestAtomicViews::AtomicViewsTestNonIntegralType< double, Kokkos::Qthreads >( length, 3 ) ) ); - ASSERT_TRUE( ( TestAtomicViews::AtomicViewsTestNonIntegralType< double, Kokkos::Qthreads >( length, 4 ) ) ); - } -#endif -} - -TEST_F(qthreads, atomic_view_api) { -#if 0 - TestAtomicViews::TestAtomicViewAPI< int, Kokkos::Qthreads >(); -#endif -} - -} // namespace Test diff --git a/lib/kokkos/core/unit_test/qthreads/TestQthreads_Complex.cpp b/lib/kokkos/core/unit_test/qthreads/TestQthreads_Complex.cpp deleted file mode 100644 index 09e1ca3e24..0000000000 --- a/lib/kokkos/core/unit_test/qthreads/TestQthreads_Complex.cpp +++ /dev/null @@ -1,2 +0,0 @@ -#include -#include diff --git a/lib/kokkos/core/unit_test/qthreads/TestQthreads_Other.cpp b/lib/kokkos/core/unit_test/qthreads/TestQthreads_Other.cpp deleted file mode 100644 index 7d54616613..0000000000 --- a/lib/kokkos/core/unit_test/qthreads/TestQthreads_Other.cpp +++ /dev/null @@ -1,196 +0,0 @@ -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// 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 NTESS "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 NTESS 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(qthreads, init) { ; } - -TEST_F(qthreads, md_range) { -#if 0 - TestMDRange_2D< Kokkos::Qthreads >::test_for2( 100, 100 ); - TestMDRange_3D< Kokkos::Qthreads >::test_for3( 100, 100, 100 ); -#endif -} - -TEST_F(qthreads, policy_construction) { -#if 0 - TestRangePolicyConstruction< Kokkos::Qthreads >(); - TestTeamPolicyConstruction< Kokkos::Qthreads >(); -#endif -} - -TEST_F(qthreads, range_tag) { -#if 0 - TestRange< Kokkos::Qthreads, Kokkos::Schedule >::test_for( 0 ); - TestRange< Kokkos::Qthreads, Kokkos::Schedule >::test_reduce( 0 ); - TestRange< Kokkos::Qthreads, Kokkos::Schedule >::test_scan( 0 ); - TestRange< Kokkos::Qthreads, Kokkos::Schedule >::test_for( 0 ); - TestRange< Kokkos::Qthreads, Kokkos::Schedule >::test_reduce( 0 ); - TestRange< Kokkos::Qthreads, Kokkos::Schedule >::test_scan( 0 ); - TestRange< Kokkos::Qthreads, Kokkos::Schedule >::test_dynamic_policy( 0 ); - - TestRange< Kokkos::Qthreads, Kokkos::Schedule >::test_for( 2 ); - TestRange< Kokkos::Qthreads, Kokkos::Schedule >::test_reduce( 2 ); - TestRange< Kokkos::Qthreads, Kokkos::Schedule >::test_scan( 2 ); - - TestRange< Kokkos::Qthreads, Kokkos::Schedule >::test_for( 3 ); - TestRange< Kokkos::Qthreads, Kokkos::Schedule >::test_reduce( 3 ); - TestRange< Kokkos::Qthreads, Kokkos::Schedule >::test_scan( 3 ); - TestRange< Kokkos::Qthreads, Kokkos::Schedule >::test_dynamic_policy( 3 ); - - TestRange< Kokkos::Qthreads, Kokkos::Schedule >::test_for( 1000 ); - TestRange< Kokkos::Qthreads, Kokkos::Schedule >::test_reduce( 1000 ); - TestRange< Kokkos::Qthreads, Kokkos::Schedule >::test_scan( 1000 ); - - TestRange< Kokkos::Qthreads, Kokkos::Schedule >::test_for( 1001 ); - TestRange< Kokkos::Qthreads, Kokkos::Schedule >::test_reduce( 1001 ); - TestRange< Kokkos::Qthreads, Kokkos::Schedule >::test_scan( 1001 ); - TestRange< Kokkos::Qthreads, Kokkos::Schedule >::test_dynamic_policy( 1000 ); -#endif -} - -//---------------------------------------------------------------------------- - -TEST_F(qthreads, compiler_macros) { -#if 0 - ASSERT_TRUE( ( TestCompilerMacros::Test< Kokkos::Qthreads >() ) ); -#endif -} - -//---------------------------------------------------------------------------- - -TEST_F(qthreads, memory_pool) { -#if 0 - -#endif -} - -//---------------------------------------------------------------------------- - -#if defined(KOKKOS_ENABLE_TASKDAG) - -TEST_F(qthreads, task_fib) { -#if 0 - const int N = 24 ; // 25 triggers tbd bug on Cuda/Pascal - for ( int i = 0; i < N; ++i ) { - TestTaskScheduler::TestFib< Kokkos::Qthreads >::run( i, ( i + 1 ) * ( i + 1 ) * 10000 ); - } -#endif -} - -TEST_F(qthreads, task_depend) { -#if 0 - for ( int i = 0; i < 25; ++i ) { - TestTaskScheduler::TestTaskDependence< Kokkos::Qthreads >::run( i ); - } -#endif -} - -TEST_F(qthreads, task_team) { -#if 0 - TestTaskScheduler::TestTaskTeam< Kokkos::Qthreads >::run( 1000 ); - //TestTaskScheduler::TestTaskTeamValue< Kokkos::Qthreads >::run( 1000 ); // Put back after testing. -#endif -} - -#endif // #if defined( KOKKOS_ENABLE_TASKDAG ) - -//---------------------------------------------------------------------------- - -#if defined(KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_QTHREADS) - -TEST_F(qthreads, cxx11) { -#if 0 - if ( std::is_same< Kokkos::DefaultExecutionSpace, Kokkos::Qthreads >::value ) { - ASSERT_TRUE( ( TestCXX11::Test< Kokkos::Qthreads >( 1 ) ) ); - ASSERT_TRUE( ( TestCXX11::Test< Kokkos::Qthreads >( 2 ) ) ); - ASSERT_TRUE( ( TestCXX11::Test< Kokkos::Qthreads >( 3 ) ) ); - ASSERT_TRUE( ( TestCXX11::Test< Kokkos::Qthreads >( 4 ) ) ); - } -#endif -} - -#endif - -TEST_F(qthreads, tile_layout) { -#if 0 - TestTile::test< Kokkos::Qthreads, 1, 1 >( 1, 1 ); - TestTile::test< Kokkos::Qthreads, 1, 1 >( 2, 3 ); - TestTile::test< Kokkos::Qthreads, 1, 1 >( 9, 10 ); - - TestTile::test< Kokkos::Qthreads, 2, 2 >( 1, 1 ); - TestTile::test< Kokkos::Qthreads, 2, 2 >( 2, 3 ); - TestTile::test< Kokkos::Qthreads, 2, 2 >( 4, 4 ); - TestTile::test< Kokkos::Qthreads, 2, 2 >( 9, 9 ); - - TestTile::test< Kokkos::Qthreads, 2, 4 >( 9, 9 ); - TestTile::test< Kokkos::Qthreads, 4, 2 >( 9, 9 ); - - TestTile::test< Kokkos::Qthreads, 4, 4 >( 1, 1 ); - TestTile::test< Kokkos::Qthreads, 4, 4 >( 4, 4 ); - TestTile::test< Kokkos::Qthreads, 4, 4 >( 9, 9 ); - TestTile::test< Kokkos::Qthreads, 4, 4 >( 9, 11 ); - - TestTile::test< Kokkos::Qthreads, 8, 8 >( 1, 1 ); - TestTile::test< Kokkos::Qthreads, 8, 8 >( 4, 4 ); - TestTile::test< Kokkos::Qthreads, 8, 8 >( 9, 9 ); - TestTile::test< Kokkos::Qthreads, 8, 8 >( 9, 11 ); -#endif -} - -TEST_F(qthreads, dispatch) { -#if 0 - const int repeat = 100; - for ( int i = 0; i < repeat; ++i ) { - for ( int j = 0; j < repeat; ++j ) { - Kokkos::parallel_for( Kokkos::RangePolicy< Kokkos::Qthreads >( 0, j ) - , KOKKOS_LAMBDA( int ) {} ); - } - } -#endif -} - -} // namespace Test diff --git a/lib/kokkos/core/unit_test/qthreads/TestQthreads_Reductions.cpp b/lib/kokkos/core/unit_test/qthreads/TestQthreads_Reductions.cpp deleted file mode 100644 index 9e60ad123f..0000000000 --- a/lib/kokkos/core/unit_test/qthreads/TestQthreads_Reductions.cpp +++ /dev/null @@ -1,157 +0,0 @@ -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// 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 NTESS "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 NTESS 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(qthreads, long_reduce) { -#if 0 - TestReduce< long, Kokkos::Qthreads >( 0 ); - TestReduce< long, Kokkos::Qthreads >( 1000000 ); -#endif -} - -TEST_F(qthreads, double_reduce) { -#if 0 - TestReduce< double, Kokkos::Qthreads >( 0 ); - TestReduce< double, Kokkos::Qthreads >( 1000000 ); -#endif -} - -TEST_F(qthreads, reducers) { -#if 0 - TestReducers< int, Kokkos::Qthreads >::execute_integer(); - TestReducers< size_t, Kokkos::Qthreads >::execute_integer(); - TestReducers< double, Kokkos::Qthreads >::execute_float(); - TestReducers< Kokkos::complex, Kokkos::Qthreads>::execute_basic(); -#endif -} - -TEST_F(qthreads, long_reduce_dynamic) { -#if 0 - TestReduceDynamic< long, Kokkos::Qthreads >( 0 ); - TestReduceDynamic< long, Kokkos::Qthreads >( 1000000 ); -#endif -} - -TEST_F(qthreads, double_reduce_dynamic) { -#if 0 - TestReduceDynamic< double, Kokkos::Qthreads >( 0 ); - TestReduceDynamic< double, Kokkos::Qthreads >( 1000000 ); -#endif -} - -TEST_F(qthreads, long_reduce_dynamic_view) { -#if 0 - TestReduceDynamicView< long, Kokkos::Qthreads >( 0 ); - TestReduceDynamicView< long, Kokkos::Qthreads >( 1000000 ); -#endif -} - -TEST_F(qthreads, scan) { -#if 0 - TestScan< Kokkos::Qthreads >::test_range( 1, 1000 ); - TestScan< Kokkos::Qthreads >( 0 ); - TestScan< Kokkos::Qthreads >( 100000 ); - TestScan< Kokkos::Qthreads >( 10000000 ); - Kokkos::Qthreads().fence(); -#endif -} - -TEST_F(qthreads, scan_small) { -#if 0 - typedef TestScan< Kokkos::Qthreads, Kokkos::Impl::QthreadsExecUseScanSmall > TestScanFunctor; - - for ( int i = 0; i < 1000; ++i ) { - TestScanFunctor( 10 ); - TestScanFunctor( 10000 ); - } - TestScanFunctor( 1000000 ); - TestScanFunctor( 10000000 ); - - Kokkos::Qthreads().fence(); -#endif -} - -TEST_F(qthreads, team_scan) { -#if 0 - TestScanTeam< Kokkos::Qthreads, Kokkos::Schedule >( 0 ); - TestScanTeam< Kokkos::Qthreads, Kokkos::Schedule >( 0 ); - TestScanTeam< Kokkos::Qthreads, Kokkos::Schedule >( 10 ); - TestScanTeam< Kokkos::Qthreads, Kokkos::Schedule >( 10 ); - TestScanTeam< Kokkos::Qthreads, Kokkos::Schedule >( 10000 ); - TestScanTeam< Kokkos::Qthreads, Kokkos::Schedule >( 10000 ); -#endif -} - -TEST_F(qthreads, team_long_reduce) { -#if 0 - TestReduceTeam< long, Kokkos::Qthreads, Kokkos::Schedule >( 0 ); - TestReduceTeam< long, Kokkos::Qthreads, Kokkos::Schedule >( 0 ); - TestReduceTeam< long, Kokkos::Qthreads, Kokkos::Schedule >( 3 ); - TestReduceTeam< long, Kokkos::Qthreads, Kokkos::Schedule >( 3 ); - TestReduceTeam< long, Kokkos::Qthreads, Kokkos::Schedule >( 100000 ); - TestReduceTeam< long, Kokkos::Qthreads, Kokkos::Schedule >( 100000 ); -#endif -} - -TEST_F(qthreads, team_double_reduce) { -#if 0 - TestReduceTeam< double, Kokkos::Qthreads, Kokkos::Schedule >( 0 ); - TestReduceTeam< double, Kokkos::Qthreads, Kokkos::Schedule >( 0 ); - TestReduceTeam< double, Kokkos::Qthreads, Kokkos::Schedule >( 3 ); - TestReduceTeam< double, Kokkos::Qthreads, Kokkos::Schedule >( 3 ); - TestReduceTeam< double, Kokkos::Qthreads, Kokkos::Schedule >( 100000 ); - TestReduceTeam< double, Kokkos::Qthreads, Kokkos::Schedule >( 100000 ); -#endif -} - -TEST_F(qthreads, reduction_deduction) { -#if 0 - TestCXX11::test_reduction_deduction< Kokkos::Qthreads >(); -#endif -} - -} // namespace Test diff --git a/lib/kokkos/core/unit_test/qthreads/TestQthreads_SubView_c05.cpp b/lib/kokkos/core/unit_test/qthreads/TestQthreads_SubView_c05.cpp deleted file mode 100644 index 1e6b673662..0000000000 --- a/lib/kokkos/core/unit_test/qthreads/TestQthreads_SubView_c05.cpp +++ /dev/null @@ -1,55 +0,0 @@ -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// 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 NTESS "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 NTESS 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(qthreads, view_subview_2d_from_3d_atomic) { -#if 0 - TestViewSubview::test_2d_subview_3d< Kokkos::Qthreads, Kokkos::MemoryTraits >(); -#endif -} - -} // namespace Test diff --git a/lib/kokkos/core/unit_test/qthreads/TestQthreads_SubView_c06.cpp b/lib/kokkos/core/unit_test/qthreads/TestQthreads_SubView_c06.cpp deleted file mode 100644 index b2ef924f87..0000000000 --- a/lib/kokkos/core/unit_test/qthreads/TestQthreads_SubView_c06.cpp +++ /dev/null @@ -1,55 +0,0 @@ -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// 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 NTESS "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 NTESS 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(qthreads, view_subview_2d_from_3d_randomaccess) { -#if 0 - TestViewSubview::test_2d_subview_3d< Kokkos::Qthreads, Kokkos::MemoryTraits >(); -#endif -} - -} // namespace Test diff --git a/lib/kokkos/core/unit_test/qthreads/TestQthreads_SubView_c08.cpp b/lib/kokkos/core/unit_test/qthreads/TestQthreads_SubView_c08.cpp deleted file mode 100644 index 0bc591c128..0000000000 --- a/lib/kokkos/core/unit_test/qthreads/TestQthreads_SubView_c08.cpp +++ /dev/null @@ -1,55 +0,0 @@ -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// 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 NTESS "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 NTESS 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(qthreads, view_subview_3d_from_5d_left_atomic) { -#if 0 - TestViewSubview::test_3d_subview_5d_left< Kokkos::Qthreads, Kokkos::MemoryTraits >(); -#endif -} - -} // namespace Test diff --git a/lib/kokkos/core/unit_test/qthreads/TestQthreads_SubView_c09.cpp b/lib/kokkos/core/unit_test/qthreads/TestQthreads_SubView_c09.cpp deleted file mode 100644 index 45d878fcea..0000000000 --- a/lib/kokkos/core/unit_test/qthreads/TestQthreads_SubView_c09.cpp +++ /dev/null @@ -1,55 +0,0 @@ -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// 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 NTESS "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 NTESS 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(qthreads, view_subview_3d_from_5d_left_randomaccess) { -#if 0 - TestViewSubview::test_3d_subview_5d_left< Kokkos::Qthreads, Kokkos::MemoryTraits >(); -#endif -} - -} // namespace Test diff --git a/lib/kokkos/core/unit_test/qthreads/TestQthreads_SubView_c11.cpp b/lib/kokkos/core/unit_test/qthreads/TestQthreads_SubView_c11.cpp deleted file mode 100644 index 6bfd19ad65..0000000000 --- a/lib/kokkos/core/unit_test/qthreads/TestQthreads_SubView_c11.cpp +++ /dev/null @@ -1,55 +0,0 @@ -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// 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 NTESS "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 NTESS 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(qthreads, view_subview_3d_from_5d_right_atomic) { -#if 0 - TestViewSubview::test_3d_subview_5d_right< Kokkos::Qthreads, Kokkos::MemoryTraits >(); -#endif -} - -} // namespace Test diff --git a/lib/kokkos/core/unit_test/qthreads/TestQthreads_SubView_c12.cpp b/lib/kokkos/core/unit_test/qthreads/TestQthreads_SubView_c12.cpp deleted file mode 100644 index 9b6896d3ee..0000000000 --- a/lib/kokkos/core/unit_test/qthreads/TestQthreads_SubView_c12.cpp +++ /dev/null @@ -1,55 +0,0 @@ -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// 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 NTESS "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 NTESS 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(qthreads, view_subview_3d_from_5d_right_randomaccess) { -#if 0 - TestViewSubview::test_3d_subview_5d_right< Kokkos::Qthreads, Kokkos::MemoryTraits >(); -#endif -} - -} // namespace Test diff --git a/lib/kokkos/core/unit_test/qthreads/TestQthreads_SubView_c13.cpp b/lib/kokkos/core/unit_test/qthreads/TestQthreads_SubView_c13.cpp deleted file mode 100644 index e03190d514..0000000000 --- a/lib/kokkos/core/unit_test/qthreads/TestQthreads_SubView_c13.cpp +++ /dev/null @@ -1,55 +0,0 @@ -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// 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 NTESS "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 NTESS 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(qthreads, view_test_unmanaged_subview_reset) { -#if 0 - TestViewSubview::test_unmanaged_subview_reset< TEST_EXECSPACE >(); -#endif -} - -} // namespace Test diff --git a/lib/kokkos/core/unit_test/qthreads/TestQthreads_SubView_c_all.cpp b/lib/kokkos/core/unit_test/qthreads/TestQthreads_SubView_c_all.cpp deleted file mode 100644 index d8ea958a5d..0000000000 --- a/lib/kokkos/core/unit_test/qthreads/TestQthreads_SubView_c_all.cpp +++ /dev/null @@ -1,13 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include diff --git a/lib/kokkos/core/unit_test/qthreads/TestQthreads_Team.cpp b/lib/kokkos/core/unit_test/qthreads/TestQthreads_Team.cpp deleted file mode 100644 index 6a4d9323a7..0000000000 --- a/lib/kokkos/core/unit_test/qthreads/TestQthreads_Team.cpp +++ /dev/null @@ -1,136 +0,0 @@ -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// 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 NTESS "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 NTESS 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(qthreads, team_tag) { -#if 0 - TestTeamPolicy< Kokkos::Qthreads, Kokkos::Schedule >::test_for( 0 ); - TestTeamPolicy< Kokkos::Qthreads, Kokkos::Schedule >::test_reduce( 0 ); - TestTeamPolicy< Kokkos::Qthreads, Kokkos::Schedule >::test_for( 0 ); - TestTeamPolicy< Kokkos::Qthreads, Kokkos::Schedule >::test_reduce( 0 ); - - TestTeamPolicy< Kokkos::Qthreads, Kokkos::Schedule >::test_for( 2 ); - TestTeamPolicy< Kokkos::Qthreads, Kokkos::Schedule >::test_reduce( 2 ); - TestTeamPolicy< Kokkos::Qthreads, Kokkos::Schedule >::test_for( 2 ); - TestTeamPolicy< Kokkos::Qthreads, Kokkos::Schedule >::test_reduce( 2 ); - - TestTeamPolicy< Kokkos::Qthreads, Kokkos::Schedule >::test_for( 1000 ); - TestTeamPolicy< Kokkos::Qthreads, Kokkos::Schedule >::test_reduce( 1000 ); - TestTeamPolicy< Kokkos::Qthreads, Kokkos::Schedule >::test_for( 1000 ); - TestTeamPolicy< Kokkos::Qthreads, Kokkos::Schedule >::test_reduce( 1000 ); -#endif -} - -TEST_F(qthreads, team_shared_request) { -#if 0 - TestSharedTeam< Kokkos::Qthreads, Kokkos::Schedule >(); - TestSharedTeam< Kokkos::Qthreads, Kokkos::Schedule >(); -#endif -} - -TEST_F(qthreads, team_scratch_request) { -#if 0 - TestScratchTeam< Kokkos::Qthreads, Kokkos::Schedule >(); - TestScratchTeam< Kokkos::Qthreads, Kokkos::Schedule >(); -#endif -} - -#if defined(KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA) -TEST_F(qthreads, team_lambda_shared_request) { -#if 0 - TestLambdaSharedTeam< Kokkos::HostSpace, Kokkos::Qthreads, Kokkos::Schedule >(); - TestLambdaSharedTeam< Kokkos::HostSpace, Kokkos::Qthreads, Kokkos::Schedule >(); -#endif -} -#endif - -TEST_F(qthreads, shmem_size) { -#if 0 - TestShmemSize< Kokkos::Qthreads >(); -#endif -} - -TEST_F(qthreads, multi_level_scratch) { -#if 0 - TestMultiLevelScratchTeam< Kokkos::Qthreads, Kokkos::Schedule >(); - TestMultiLevelScratchTeam< Kokkos::Qthreads, Kokkos::Schedule >(); -#endif -} - -TEST_F(qthreads, team_vector) { -#if 0 - ASSERT_TRUE( ( TestTeamVector::Test< Kokkos::Qthreads >( 0 ) ) ); - ASSERT_TRUE( ( TestTeamVector::Test< Kokkos::Qthreads >( 1 ) ) ); - ASSERT_TRUE( ( TestTeamVector::Test< Kokkos::Qthreads >( 2 ) ) ); - ASSERT_TRUE( ( TestTeamVector::Test< Kokkos::Qthreads >( 3 ) ) ); - ASSERT_TRUE( ( TestTeamVector::Test< Kokkos::Qthreads >( 4 ) ) ); - ASSERT_TRUE( ( TestTeamVector::Test< Kokkos::Qthreads >( 5 ) ) ); - ASSERT_TRUE( ( TestTeamVector::Test< Kokkos::Qthreads >( 6 ) ) ); - ASSERT_TRUE( ( TestTeamVector::Test< Kokkos::Qthreads >( 7 ) ) ); - ASSERT_TRUE( ( TestTeamVector::Test< Kokkos::Qthreads >( 8 ) ) ); - ASSERT_TRUE( ( TestTeamVector::Test< Kokkos::Qthreads >( 9 ) ) ); - ASSERT_TRUE( ( TestTeamVector::Test< Kokkos::Qthreads >( 10 ) ) ); -#endif -} - -#ifdef KOKKOS_COMPILER_GNU -#if (KOKKOS_COMPILER_GNU == 472) -#define SKIP_TEST -#endif -#endif - -#ifndef SKIP_TEST -TEST_F(qthreads, triple_nested_parallelism) { -#if 0 - TestTripleNestedReduce< double, Kokkos::Qthreads >( 8192, 2048, 32, 32 ); - TestTripleNestedReduce< double, Kokkos::Qthreads >( 8192, 2048, 32, 16 ); - TestTripleNestedReduce< double, Kokkos::Qthreads >( 8192, 2048, 16, 16 ); -#endif -} -#endif - -} // namespace Test diff --git a/lib/kokkos/core/unit_test/qthreads/TestQthreads_ViewAPI_a.cpp b/lib/kokkos/core/unit_test/qthreads/TestQthreads_ViewAPI_a.cpp deleted file mode 100644 index fad6473d20..0000000000 --- a/lib/kokkos/core/unit_test/qthreads/TestQthreads_ViewAPI_a.cpp +++ /dev/null @@ -1,56 +0,0 @@ -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 3.0 -// Copyright (2020) National Technology & Engineering -// Solutions of Sandia, LLC (NTESS). -// -// Under the terms of Contract DE-NA0003525 with NTESS, -// 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 NTESS "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 NTESS 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(qthreads, impl_view_mapping_a) { -#if 0 - test_view_mapping< Kokkos::Qthreads >(); - test_view_mapping_operator< Kokkos::Qthreads >(); -#endif -} - -} // namespace Test diff --git a/lib/kokkos/containers/unit_tests/serial/TestSerial_BitSet.cpp b/lib/kokkos/core/unit_test/serial/TestSerial_Concepts.cpp similarity index 98% rename from lib/kokkos/containers/unit_tests/serial/TestSerial_BitSet.cpp rename to lib/kokkos/core/unit_test/serial/TestSerial_Concepts.cpp index 322e88a6af..aa2c1577ce 100644 --- a/lib/kokkos/containers/unit_tests/serial/TestSerial_BitSet.cpp +++ b/lib/kokkos/core/unit_test/serial/TestSerial_Concepts.cpp @@ -1,4 +1,3 @@ - /* //@HEADER // ************************************************************************ @@ -44,4 +43,4 @@ */ #include -#include +#include diff --git a/lib/kokkos/containers/unit_tests/serial/TestSerial_DualView.cpp b/lib/kokkos/core/unit_test/serial/TestSerial_RangePolicyRequire.cpp similarity index 98% rename from lib/kokkos/containers/unit_tests/serial/TestSerial_DualView.cpp rename to lib/kokkos/core/unit_test/serial/TestSerial_RangePolicyRequire.cpp index c1646ed13b..dcc77054d6 100644 --- a/lib/kokkos/containers/unit_tests/serial/TestSerial_DualView.cpp +++ b/lib/kokkos/core/unit_test/serial/TestSerial_RangePolicyRequire.cpp @@ -44,4 +44,4 @@ */ #include -#include +#include diff --git a/lib/kokkos/core/unit_test/serial/TestSerial_Team.cpp b/lib/kokkos/core/unit_test/serial/TestSerial_Team.cpp index e85ea86f3f..1ee6946810 100644 --- a/lib/kokkos/core/unit_test/serial/TestSerial_Team.cpp +++ b/lib/kokkos/core/unit_test/serial/TestSerial_Team.cpp @@ -79,26 +79,87 @@ TEST(TEST_CATEGORY, team_reduce) { Kokkos::Schedule >::test_reduce(1000); } -TEST(TEST_CATEGORY, team_broadcast) { - TestTeamBroadcast >::test_teambroadcast(0); - TestTeamBroadcast >::test_teambroadcast(0); - - TestTeamBroadcast >::test_teambroadcast(2); - TestTeamBroadcast >::test_teambroadcast(2); - - TestTeamBroadcast >::test_teambroadcast(16); - TestTeamBroadcast >::test_teambroadcast(16); - - TestTeamBroadcast >:: - test_teambroadcast(1000); - TestTeamBroadcast >:: - test_teambroadcast(1000); +TEST(TEST_CATEGORY, team_broadcast_long) { + TestTeamBroadcast, + long>::test_teambroadcast(0, 1); + TestTeamBroadcast, + long>::test_teambroadcast(0, 1); + + TestTeamBroadcast, + long>::test_teambroadcast(2, 1); + TestTeamBroadcast, + long>::test_teambroadcast(2, 1); + + TestTeamBroadcast, + long>::test_teambroadcast(16, 1); + TestTeamBroadcast, + long>::test_teambroadcast(16, 1); + + TestTeamBroadcast, + long>::test_teambroadcast(1000, 1); + TestTeamBroadcast, + long>::test_teambroadcast(1000, 1); +} + +TEST(TEST_CATEGORY, team_broadcast_char) { + TestTeamBroadcast, + unsigned char>::test_teambroadcast(0, 1); + TestTeamBroadcast, + unsigned char>::test_teambroadcast(0, 1); + + TestTeamBroadcast, + unsigned char>::test_teambroadcast(2, 1); + TestTeamBroadcast, + unsigned char>::test_teambroadcast(2, 1); + + TestTeamBroadcast, + unsigned char>::test_teambroadcast(16, 1); + TestTeamBroadcast, + unsigned char>::test_teambroadcast(16, 1); +} + +TEST(TEST_CATEGORY, team_broadcast_float) { + TestTeamBroadcast, + float>::test_teambroadcast(0, 1.3); + TestTeamBroadcast, + float>::test_teambroadcast(0, 1.3); + + TestTeamBroadcast, + float>::test_teambroadcast(2, 1.3); + TestTeamBroadcast, + float>::test_teambroadcast(2, 1.3); + + TestTeamBroadcast, + float>::test_teambroadcast(16, 1.3); + TestTeamBroadcast, + float>::test_teambroadcast(16, 1.3); + + TestTeamBroadcast, + float>::test_teambroadcast(1000, 1.3); + TestTeamBroadcast, + float>::test_teambroadcast(1000, 1.3); +} + +TEST(TEST_CATEGORY, team_broadcast_double) { + TestTeamBroadcast, + double>::test_teambroadcast(0, 1.3); + TestTeamBroadcast, + double>::test_teambroadcast(0, 1.3); + + TestTeamBroadcast, + double>::test_teambroadcast(2, 1.3); + TestTeamBroadcast, + double>::test_teambroadcast(2, 1.3); + + TestTeamBroadcast, + double>::test_teambroadcast(16, 1.3); + TestTeamBroadcast, + double>::test_teambroadcast(16, 1.3); + + TestTeamBroadcast, + double>::test_teambroadcast(1000, 1.3); + TestTeamBroadcast, + double>::test_teambroadcast(1000, 1.3); } } // namespace Test diff --git a/lib/kokkos/core/unit_test/serial/TestSerial_TeamScratch.cpp b/lib/kokkos/core/unit_test/serial/TestSerial_TeamScratch.cpp index e70b3e34d6..5d10c0c5e9 100644 --- a/lib/kokkos/core/unit_test/serial/TestSerial_TeamScratch.cpp +++ b/lib/kokkos/core/unit_test/serial/TestSerial_TeamScratch.cpp @@ -58,7 +58,6 @@ TEST(TEST_CATEGORY, team_scratch_request) { } #if defined(KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA) -#if !defined(KOKKOS_ENABLE_CUDA) || (8000 <= CUDA_VERSION) TEST(TEST_CATEGORY, team_lambda_shared_request) { TestLambdaSharedTeam >(); @@ -68,7 +67,6 @@ TEST(TEST_CATEGORY, team_lambda_shared_request) { TEST(TEST_CATEGORY, scratch_align) { TestScratchAlignment(); } #endif -#endif TEST(TEST_CATEGORY, shmem_size) { TestShmemSize(); } diff --git a/lib/kokkos/core/unit_test/standalone/Makefile b/lib/kokkos/core/unit_test/standalone/Makefile index c910cc5fd1..d60422233d 100644 --- a/lib/kokkos/core/unit_test/standalone/Makefile +++ b/lib/kokkos/core/unit_test/standalone/Makefile @@ -9,7 +9,6 @@ ifndef KOKKOS_PATH endif SRC = $(wildcard $(MAKEFILE_PATH)*.cpp) -SRC += $(MAKEFILE_PATH)/../TestStackTrace.cpp HEADERS = $(wildcard $(MAKEFILE_PATH)*.hpp) HEADERS = $(wildcard $(MAKEFILE_PATH)/../*.hpp) @@ -42,7 +41,7 @@ include $(KOKKOS_PATH)/Makefile.kokkos build: $(EXE) $(EXE): $(OBJ) $(KOKKOS_LINK_DEPENDS) gtest-all.o - $(LINK) $(KOKKOS_LDFLAGS) $(LINKFLAGS) $(EXTRA_PATH) $(OBJ) $(KOKKOS_LIBS) $(LIB) gtest-all.o -o $(EXE) + $(LINK) $(KOKKOS_LDFLAGS) $(LINKFLAGS) $(EXTRA_PATH) $(OBJ) $(KOKKOS_LIBS) $(LIB) gtest-all.o -lpthread -o $(EXE) clean: kokkos-clean rm -f *.o *.cuda *.host diff --git a/lib/kokkos/core/unit_test/standalone/UnitTestMainInit.cpp b/lib/kokkos/core/unit_test/standalone/UnitTestMainInit.cpp index 8f8bac7b23..c5d4a36677 100644 --- a/lib/kokkos/core/unit_test/standalone/UnitTestMainInit.cpp +++ b/lib/kokkos/core/unit_test/standalone/UnitTestMainInit.cpp @@ -62,12 +62,15 @@ #ifdef KOKKOS_ENABLE_HPX #include #endif +#ifdef KOKKOS_ENABLE_OPENMPTARGET +#include +#endif #ifndef TEST_EXECSPACE #ifdef KOKKOS_ENABLE_SERIAL #include #endif #endif -#include +#include int main(int argc, char *argv[]) { Kokkos::initialize(argc, argv); diff --git a/lib/kokkos/containers/unit_tests/threads/TestThreads_BitSet.cpp b/lib/kokkos/core/unit_test/threads/TestThreads_Concepts.cpp similarity index 98% rename from lib/kokkos/containers/unit_tests/threads/TestThreads_BitSet.cpp rename to lib/kokkos/core/unit_test/threads/TestThreads_Concepts.cpp index ec93bb121c..ed2d61ed3b 100644 --- a/lib/kokkos/containers/unit_tests/threads/TestThreads_BitSet.cpp +++ b/lib/kokkos/core/unit_test/threads/TestThreads_Concepts.cpp @@ -1,4 +1,3 @@ - /* //@HEADER // ************************************************************************ @@ -44,4 +43,4 @@ */ #include -#include +#include diff --git a/lib/kokkos/containers/unit_tests/threads/TestThreads_DualView.cpp b/lib/kokkos/core/unit_test/threads/TestThreads_RangePolicyRequire.cpp similarity index 98% rename from lib/kokkos/containers/unit_tests/threads/TestThreads_DualView.cpp rename to lib/kokkos/core/unit_test/threads/TestThreads_RangePolicyRequire.cpp index f6967bf0d4..7a10b82658 100644 --- a/lib/kokkos/containers/unit_tests/threads/TestThreads_DualView.cpp +++ b/lib/kokkos/core/unit_test/threads/TestThreads_RangePolicyRequire.cpp @@ -44,4 +44,4 @@ */ #include -#include +#include diff --git a/lib/kokkos/core/unit_test/threads/TestThreads_Team.cpp b/lib/kokkos/core/unit_test/threads/TestThreads_Team.cpp index b931c5cb61..5d2e360734 100644 --- a/lib/kokkos/core/unit_test/threads/TestThreads_Team.cpp +++ b/lib/kokkos/core/unit_test/threads/TestThreads_Team.cpp @@ -80,25 +80,25 @@ TEST(TEST_CATEGORY, team_reduce) { } TEST(TEST_CATEGORY, team_broadcast) { - TestTeamBroadcast >::test_teambroadcast(0); - TestTeamBroadcast >::test_teambroadcast(0); + TestTeamBroadcast, + long>::test_teambroadcast(0, 1); + TestTeamBroadcast, + long>::test_teambroadcast(0, 1); - TestTeamBroadcast >::test_teambroadcast(2); - TestTeamBroadcast >::test_teambroadcast(2); + TestTeamBroadcast, + long>::test_teambroadcast(2, 1); + TestTeamBroadcast, + long>::test_teambroadcast(2, 1); - TestTeamBroadcast >::test_teambroadcast(16); - TestTeamBroadcast >::test_teambroadcast(16); + TestTeamBroadcast, + long>::test_teambroadcast(16, 1); + TestTeamBroadcast, + long>::test_teambroadcast(16, 1); - TestTeamBroadcast >:: - test_teambroadcast(1000); - TestTeamBroadcast >:: - test_teambroadcast(1000); + TestTeamBroadcast, + long>::test_teambroadcast(1000, 1); + TestTeamBroadcast, + long>::test_teambroadcast(1000, 1); } } // namespace Test diff --git a/lib/kokkos/core/unit_test/threads/TestThreads_TeamScratch.cpp b/lib/kokkos/core/unit_test/threads/TestThreads_TeamScratch.cpp index d793a9050f..a37369fc04 100644 --- a/lib/kokkos/core/unit_test/threads/TestThreads_TeamScratch.cpp +++ b/lib/kokkos/core/unit_test/threads/TestThreads_TeamScratch.cpp @@ -58,7 +58,6 @@ TEST(TEST_CATEGORY, team_scratch_request) { } #if defined(KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA) -#if !defined(KOKKOS_ENABLE_CUDA) || (8000 <= CUDA_VERSION) TEST(TEST_CATEGORY, team_lambda_shared_request) { TestLambdaSharedTeam >(); @@ -68,7 +67,6 @@ TEST(TEST_CATEGORY, team_lambda_shared_request) { TEST(TEST_CATEGORY, scratch_align) { TestScratchAlignment(); } #endif -#endif TEST(TEST_CATEGORY, shmem_size) { TestShmemSize(); } diff --git a/lib/kokkos/example/CMakeLists.txt b/lib/kokkos/example/CMakeLists.txt index c7d6099546..34157329d0 100644 --- a/lib/kokkos/example/CMakeLists.txt +++ b/lib/kokkos/example/CMakeLists.txt @@ -2,19 +2,11 @@ # Subpackage name must match what appears in kokkos/cmake/Dependencies.cmake # -#KOKKOS_SUBPACKAGE(Example) +KOKKOS_SUBPACKAGE(Example) -#KOKKOS_ADD_EXAMPLE_DIRECTORIES(query_device) -#KOKKOS_ADD_EXAMPLE_DIRECTORIES(fixture) -#KOKKOS_ADD_EXAMPLE_DIRECTORIES(feint) -#KOKKOS_ADD_EXAMPLE_DIRECTORIES(fenl) -#KOKKOS_ADD_EXAMPLE_DIRECTORIES(multi_fem) -#KOKKOS_ADD_EXAMPLE_DIRECTORIES(md_skeleton) -#KOKKOS_ADD_EXAMPLE_DIRECTORIES(global_2_local_ids) -#KOKKOS_ADD_EXAMPLE_DIRECTORIES(grow_array) -#KOKKOS_ADD_EXAMPLE_DIRECTORIES(sort_array) -#if(NOT Kokkos_ENABLE_CUDA) -#KOKKOS_ADD_EXAMPLE_DIRECTORIES(tutorial) -#endif() -#KOKKOS_SUBPACKAGE_POSTPROCESS() +KOKKOS_ADD_EXAMPLE_DIRECTORIES(query_device) +if(NOT Kokkos_ENABLE_CUDA) + KOKKOS_ADD_EXAMPLE_DIRECTORIES(tutorial) +endif() +KOKKOS_SUBPACKAGE_POSTPROCESS() diff --git a/lib/kokkos/example/README b/lib/kokkos/example/README index ec64004842..6686051244 100644 --- a/lib/kokkos/example/README +++ b/lib/kokkos/example/README @@ -5,12 +5,5 @@ Tpetra. MANIFEST: - - common: Header files used by different examples - - feint: Unstructured finite-element method - - fixture: Some other finite-element method example - - global_2_local_ids: Example of global-to-local index lookup - - grow_array: Parallel dynamic memory allocation - - md_skeleton: Molecular dynamics - query_device: Kokkos' HWLOC wrapper for querying device topology - - sort_array: Parallel sort - tutorial: Kokkos tutorial (START HERE) diff --git a/lib/kokkos/example/build_cmake_in_tree/cmake_example.cpp b/lib/kokkos/example/build_cmake_in_tree/cmake_example.cpp index c6bbaeca81..63875d013f 100644 --- a/lib/kokkos/example/build_cmake_in_tree/cmake_example.cpp +++ b/lib/kokkos/example/build_cmake_in_tree/cmake_example.cpp @@ -57,7 +57,7 @@ int main(int argc, char* argv[]) { exit(1); } - const long n = strtol(argv[1], NULL, 10); + const long n = strtol(argv[1], nullptr, 10); printf("Number of even integers from 0 to %ld\n", n - 1); diff --git a/lib/kokkos/example/build_cmake_installed/cmake_example.cpp b/lib/kokkos/example/build_cmake_installed/cmake_example.cpp index c6bbaeca81..63875d013f 100644 --- a/lib/kokkos/example/build_cmake_installed/cmake_example.cpp +++ b/lib/kokkos/example/build_cmake_installed/cmake_example.cpp @@ -57,7 +57,7 @@ int main(int argc, char* argv[]) { exit(1); } - const long n = strtol(argv[1], NULL, 10); + const long n = strtol(argv[1], nullptr, 10); printf("Number of even integers from 0 to %ld\n", n - 1); diff --git a/lib/kokkos/example/cmake/Dependencies.cmake b/lib/kokkos/example/cmake/Dependencies.cmake deleted file mode 100644 index 741db6a0c4..0000000000 --- a/lib/kokkos/example/cmake/Dependencies.cmake +++ /dev/null @@ -1,3 +0,0 @@ -TRIBITS_PACKAGE_DEFINE_DEPENDENCIES( - TEST_OPTIONAL_TPLS CUSPARSE MKL HPX - ) diff --git a/lib/kokkos/example/query_device/query_device.cpp b/lib/kokkos/example/query_device/query_device.cpp index 0ce7fc9eca..a563b06b28 100644 --- a/lib/kokkos/example/query_device/query_device.cpp +++ b/lib/kokkos/example/query_device/query_device.cpp @@ -59,6 +59,8 @@ int main(int argc, char** argv) { std::ostringstream msg; + (void)argc; + (void)argv; #if defined(KOKKOS_ENABLE_MPI) MPI_Init(&argc, &argv); diff --git a/lib/kokkos/example/tutorial/CMakeLists.txt b/lib/kokkos/example/tutorial/CMakeLists.txt index 2d8259506a..fd471fa6be 100644 --- a/lib/kokkos/example/tutorial/CMakeLists.txt +++ b/lib/kokkos/example/tutorial/CMakeLists.txt @@ -8,11 +8,9 @@ KOKKOS_ADD_EXAMPLE_DIRECTORIES(06_simple_mdrangepolicy) KOKKOS_ADD_EXAMPLE_DIRECTORIES(Advanced_Views) KOKKOS_ADD_EXAMPLE_DIRECTORIES(Hierarchical_Parallelism) -IF (Kokkos_ENABLE_CXX11) - KOKKOS_ADD_EXAMPLE_DIRECTORIES(01_hello_world_lambda) - KOKKOS_ADD_EXAMPLE_DIRECTORIES(02_simple_reduce_lambda) - KOKKOS_ADD_EXAMPLE_DIRECTORIES(03_simple_view_lambda) -ENDIF () +KOKKOS_ADD_EXAMPLE_DIRECTORIES(01_hello_world_lambda) +KOKKOS_ADD_EXAMPLE_DIRECTORIES(02_simple_reduce_lambda) +KOKKOS_ADD_EXAMPLE_DIRECTORIES(03_simple_view_lambda) diff --git a/lib/kokkos/example/tutorial/README b/lib/kokkos/example/tutorial/README index 4ba0b3a5d9..c46ace0d11 100644 --- a/lib/kokkos/example/tutorial/README +++ b/lib/kokkos/example/tutorial/README @@ -2,16 +2,11 @@ Build the examples by typing in each directory: make -j 16 To specify a target device: -make openmp -j 16 -make pthreads -j 16 -make serial -j 16 -make cuda -j 16 +KOKKOS_DEVICES=OpenMP make -j 16 +KOKKOS_DEVICES=Pthread make -j 16 +KOKKOS_DEVICES=Serial make -j 16 +KOKKOS_DEVICES=Cuda make -j 16 -The lambda variants can not be build with CUDA=yes at the moment, since -CUDA does not support lambdas from the host. Some of the advanced topics try to highlight performance impacts by timing different variants of doing the same thing. -Also some of the advanced topics (in particular hierarchical parallelism) -require C++11 even with out using host side lambdas. CUDA 6.5 can be used -to compile those. diff --git a/lib/kokkos/example/virtual_functions/Makefile b/lib/kokkos/example/virtual_functions/Makefile index 06186786c2..fbc54510da 100644 --- a/lib/kokkos/example/virtual_functions/Makefile +++ b/lib/kokkos/example/virtual_functions/Makefile @@ -1,5 +1,5 @@ KOKKOS_DEVICES=Cuda -KOKKOS_CUDA_OPTIONS=enable_lambda +KOKKOS_CUDA_OPTIONS=enable_lambda,rdc KOKKOS_ARCH = "SNB,Kepler35" #KOKKOS_DEVICES=OpenMP diff --git a/lib/kokkos/generate_makefile.bash b/lib/kokkos/generate_makefile.bash index 7ef477b9f2..555f0b30a1 100755 --- a/lib/kokkos/generate_makefile.bash +++ b/lib/kokkos/generate_makefile.bash @@ -1,6 +1,166 @@ #!/bin/bash -KOKKOS_DEVICES="" +update_kokkos_devices() { + SEARCH_TEXT="*$1*" + if [[ $KOKKOS_DEVICES == $SEARCH_TEXT ]]; then + echo kokkos devices already includes $SEARCH_TEXT + else + if [ "$KOKKOS_DEVICES" = "" ]; then + KOKKOS_DEVICES="$1" + echo reseting kokkos devices to $KOKKOS_DEVICES + else + KOKKOS_DEVICES="${KOKKOS_DEVICES},$1" + echo appending to kokkos devices $KOKKOS_DEVICES + fi + fi +} + +get_kokkos_device_list() { + KOKKOS_DEVICE_CMD= + PARSE_DEVICES_LST=$(echo $KOKKOS_DEVICES | tr "," "\n") + PARSE_DEVICES_LST=$(echo $PARSE_DEVICES_LST | tr "_" "\n") + for DEVICE_ in $PARSE_DEVICES_LST + do + UC_DEVICE=$(echo $DEVICE_ | tr "[:lower:]" "[:upper:]") + KOKKOS_DEVICE_CMD="-DKokkos_ENABLE_${UC_DEVICE}=ON ${KOKKOS_DEVICE_CMD}" + done +} + +get_kokkos_arch_list() { + KOKKOS_ARCH_CMD= + PARSE_ARCH_LST=$(echo $KOKKOS_ARCH | tr "," "\n") + for ARCH_ in $PARSE_ARCH_LST + do + UC_ARCH=$(echo $ARCH_ | tr "[:lower:]" "[:upper:]") + KOKKOS_ARCH_CMD="-DKokkos_ARCH_${UC_ARCH}=ON ${KOKKOS_ARCH_CMD}" + done +} + +get_kokkos_cuda_option_list() { + echo parsing KOKKOS_CUDA_OPTIONS=$KOKKOS_CUDA_OPTIONS + KOKKOS_CUDA_OPTION_CMD= + PARSE_CUDA_LST=$(echo $KOKKOS_CUDA_OPTIONS | tr "," "\n") + for CUDA_ in $PARSE_CUDA_LST + do + CUDA_OPT_NAME= + if [ "${CUDA_}" == "enable_lambda" ]; then + CUDA_OPT_NAME=CUDA_LAMBDA + elif [ "${CUDA_}" == "rdc" ]; then + CUDA_OPT_NAME=CUDA_RELOCATABLE_DEVICE_CODE + elif [ "${CUDA_}" == "force_uvm" ]; then + CUDA_OPT_NAME=CUDA_UVM + elif [ "${CUDA_}" == "use_ldg" ]; then + CUDA_OPT_NAME=CUDA_LDG_INTRINSIC + else + echo "${CUDA_} is not a valid cuda options..." + fi + if [ "${CUDA_OPT_NAME}" != "" ]; then + KOKKOS_CUDA_OPTION_CMD="-DKokkos_ENABLE_${CUDA_OPT_NAME}=ON ${KOKKOS_CUDA_OPTION_CMD}" + fi + done +} + +get_kokkos_option_list() { + echo parsing KOKKOS_OPTIONS=$KOKKOS_OPTIONS + KOKKOS_OPTION_CMD= + PARSE_OPTIONS_LST=$(echo $KOKKOS_OPTIONS | tr "," "\n") + for OPT_ in $PARSE_OPTIONS_LST + do + UC_OPT_=$(echo $OPT_ | tr "[:lower:]" "[:upper:]") + if [[ "$UC_OPT_" == *DISABLE* ]]; then + FLIP_OPT_=${UC_OPT_/DISABLE/ENABLE} + KOKKOS_OPTION_CMD="-DKokkos_${FLIP_OPT_}=OFF ${KOKKOS_OPTION_CMD}" + elif [[ "$UC_OPT_" == *ENABLE* ]]; then + KOKKOS_OPTION_CMD="-DKokkos_${UC_OPT_}=ON ${KOKKOS_OPTION_CMD}" + else + KOKKOS_OPTION_CMD="-DKokkos_ENABLE_${UC_OPT_}=ON ${KOKKOS_OPTION_CMD}" + fi + done +} + +display_help_text() { + + echo "Kokkos configure options:" + echo "" + echo "--kokkos-path=/Path/To/Kokkos: Path to the Kokkos root directory." + echo "--prefix=/Install/Path: Path to install the Kokkos library." + echo "" + echo "--with-cuda[=/Path/To/Cuda]: Enable Cuda and set path to Cuda Toolkit." + echo "--with-openmp: Enable OpenMP backend." + echo "--with-pthread: Enable Pthreads backend." + echo "--with-serial: Enable Serial backend." + echo "--with-devices: Explicitly add a set of backends." + echo "" + echo "--arch=[OPT]: Set target architectures. Options are:" + echo " [AMD]" + echo " AMDAVX = AMD CPU" + echo " EPYC = AMD EPYC Zen-Core CPU" + echo " [ARM]" + echo " ARMv80 = ARMv8.0 Compatible CPU" + echo " ARMv81 = ARMv8.1 Compatible CPU" + echo " ARMv8-ThunderX = ARMv8 Cavium ThunderX CPU" + echo " ARMv8-TX2 = ARMv8 Cavium ThunderX2 CPU" + echo " [IBM]" + echo " BGQ = IBM Blue Gene Q" + echo " Power7 = IBM POWER7 and POWER7+ CPUs" + echo " Power8 = IBM POWER8 CPUs" + echo " Power9 = IBM POWER9 CPUs" + echo " [Intel]" + echo " WSM = Intel Westmere CPUs" + echo " SNB = Intel Sandy/Ivy Bridge CPUs" + echo " HSW = Intel Haswell CPUs" + echo " BDW = Intel Broadwell Xeon E-class CPUs" + echo " SKX = Intel Sky Lake Xeon E-class HPC CPUs (AVX512)" + echo " [Intel Xeon Phi]" + echo " KNC = Intel Knights Corner Xeon Phi" + echo " KNL = Intel Knights Landing Xeon Phi" + echo " [NVIDIA]" + echo " Kepler30 = NVIDIA Kepler generation CC 3.0" + echo " Kepler32 = NVIDIA Kepler generation CC 3.2" + echo " Kepler35 = NVIDIA Kepler generation CC 3.5" + echo " Kepler37 = NVIDIA Kepler generation CC 3.7" + echo " Maxwell50 = NVIDIA Maxwell generation CC 5.0" + echo " Maxwell52 = NVIDIA Maxwell generation CC 5.2" + echo " Maxwell53 = NVIDIA Maxwell generation CC 5.3" + echo " Pascal60 = NVIDIA Pascal generation CC 6.0" + echo " Pascal61 = NVIDIA Pascal generation CC 6.1" + echo " Volta70 = NVIDIA Volta generation CC 7.0" + echo " Volta72 = NVIDIA Volta generation CC 7.2" + echo "" + echo "--compiler=/Path/To/Compiler Set the compiler." + echo "--debug,-dbg: Enable Debugging." + echo "--disable-tests Disable compilation of unit tests (enabled by default)" + echo "--cxxflags=[FLAGS] Overwrite CXXFLAGS for library build and test" + echo " build. This will still set certain required" + echo " flags via KOKKOS_CXXFLAGS (such as -fopenmp," + echo " --std=c++11, etc.)." + echo "--cxxstandard=[FLAGS] Overwrite KOKKOS_CXX_STANDARD for library build and test" + echo " c++11 (default), c++14, c++17, c++1y, c++1z, c++2a" + echo "--ldflags=[FLAGS] Overwrite LDFLAGS for library build and test" + echo " build. This will still set certain required" + echo " flags via KOKKOS_LDFLAGS (such as -fopenmp," + echo " -lpthread, etc.)." + echo "--with-gtest=/Path/To/Gtest: Set path to gtest. (Used in unit and performance" + echo " tests.)" + echo "--with-hwloc=/Path/To/Hwloc: Set path to hwloc library." + echo "--with-memkind=/Path/To/MemKind: Set path to memkind library." + echo "--with-options=[OPT]: Additional options to Kokkos:" + echo " compiler_warnings" + echo " aggressive_vectorization = add ivdep on loops" + echo " disable_profiling = do not compile with profiling hooks" + echo " " + echo "--with-cuda-options=[OPT]: Additional options to CUDA:" + echo " force_uvm, use_ldg, enable_lambda, rdc" + echo "--with-hpx-options=[OPT]: Additional options to HPX:" + echo " enable_async_dispatch" + echo "--gcc-toolchain=/Path/To/GccRoot: Set the gcc toolchain to use with clang (e.g. /usr)" + echo "--make-j=[NUM]: DEPRECATED: call make with appropriate" + echo " -j flag" + +} + +KOKKOS_DO_TESTS=ON +KOKKOS_DO_EXAMPLES=OFF while [[ $# > 0 ]] do @@ -17,68 +177,84 @@ do PREFIX="${key#*=}" ;; --with-cuda) - KOKKOS_DEVICES="${KOKKOS_DEVICES},Cuda" + update_kokkos_devices Cuda CUDA_PATH_NVCC=$(command -v nvcc) CUDA_PATH=${CUDA_PATH_NVCC%/bin/nvcc} ;; # Catch this before '--with-cuda*' --with-cuda-options*) - KOKKOS_CUDA_OPT="${key#*=}" + KOKKOS_CUDA_OPTIONS="${key#*=}" ;; --with-cuda*) - KOKKOS_DEVICES="${KOKKOS_DEVICES},Cuda" + update_kokkos_devices Cuda CUDA_PATH="${key#*=}" ;; --with-openmp) - KOKKOS_DEVICES="${KOKKOS_DEVICES},OpenMP" + update_kokkos_devices OpenMP ;; --with-pthread) - KOKKOS_DEVICES="${KOKKOS_DEVICES},Pthread" + update_kokkos_devices Pthread ;; --with-serial) - KOKKOS_DEVICES="${KOKKOS_DEVICES},Serial" + update_kokkos_devices Serial ;; --with-hpx-options*) KOKKOS_HPX_OPT="${key#*=}" ;; --with-hpx*) - KOKKOS_DEVICES="${KOKKOS_DEVICES},HPX" + update_kokkos_devices HPX if [ -z "$HPX_PATH" ]; then HPX_PATH="${key#*=}" fi ;; --with-devices*) DEVICES="${key#*=}" - KOKKOS_DEVICES="${KOKKOS_DEVICES},${DEVICES}" + PARSE_DEVICES=$(echo $DEVICES | tr "," "\n") + for DEVICE_ in $PARSE_DEVICES + do + update_kokkos_devices $DEVICE_ + done ;; --with-gtest*) GTEST_PATH="${key#*=}" ;; --with-hwloc*) + KOKKOS_HWLOC=ON HWLOC_PATH="${key#*=}" ;; --with-memkind*) + KOKKOS_MEMKIND=ON MEMKIND_PATH="${key#*=}" ;; --arch*) KOKKOS_ARCH="${key#*=}" ;; --cxxflags*) - CXXFLAGS="${key#*=}" + KOKKOS_CXXFLAGS="${key#*=}" + KOKKOS_CXXFLAGS=${KOKKOS_CXXFLAGS//,/ } ;; --cxxstandard*) KOKKOS_CXX_STANDARD="${key#*=}" ;; --ldflags*) - LDFLAGS="${key#*=}" + KOKKOS_LDFLAGS="${key#*=}" ;; --debug|-dbg) - KOKKOS_DEBUG=yes + KOKKOS_DEBUG=ON ;; --make-j*) echo "Warning: ${key} is deprecated" echo "Call make with appropriate -j flag" ;; + --disable-tests) + KOKKOS_DO_TESTS=OFF + ;; + --no-examples) + KOKKOS_DO_EXAMPLES=OFF + ;; + --enable-examples) + KOKKOS_DO_EXAMPLES=ON + ;; --compiler*) COMPILER="${key#*=}" CNUM=$(command -v ${COMPILER} 2>&1 >/dev/null | grep "no ${COMPILER}" | wc -l) @@ -102,87 +278,13 @@ do COMPILER=${COMPDIR}/${COMPNAME} ;; --with-options*) - KOKKOS_OPT="${key#*=}" + KOKKOS_OPTIONS="${key#*=}" ;; --gcc-toolchain*) KOKKOS_GCC_TOOLCHAIN="${key#*=}" ;; --help) - echo "Kokkos configure options:" - echo "" - echo "--kokkos-path=/Path/To/Kokkos: Path to the Kokkos root directory." - echo "--prefix=/Install/Path: Path to install the Kokkos library." - echo "" - echo "--with-cuda[=/Path/To/Cuda]: Enable Cuda and set path to Cuda Toolkit." - echo "--with-openmp: Enable OpenMP backend." - echo "--with-pthread: Enable Pthreads backend." - echo "--with-serial: Enable Serial backend." - echo "--with-devices: Explicitly add a set of backends." - echo "" - echo "--arch=[OPT]: Set target architectures. Options are:" - echo " [AMD]" - echo " AMDAVX = AMD CPU" - echo " EPYC = AMD EPYC Zen-Core CPU" - echo " [ARM]" - echo " ARMv80 = ARMv8.0 Compatible CPU" - echo " ARMv81 = ARMv8.1 Compatible CPU" - echo " ARMv8-ThunderX = ARMv8 Cavium ThunderX CPU" - echo " ARMv8-TX2 = ARMv8 Cavium ThunderX2 CPU" - echo " [IBM]" - echo " BGQ = IBM Blue Gene Q" - echo " Power7 = IBM POWER7 and POWER7+ CPUs" - echo " Power8 = IBM POWER8 CPUs" - echo " Power9 = IBM POWER9 CPUs" - echo " [Intel]" - echo " WSM = Intel Westmere CPUs" - echo " SNB = Intel Sandy/Ivy Bridge CPUs" - echo " HSW = Intel Haswell CPUs" - echo " BDW = Intel Broadwell Xeon E-class CPUs" - echo " SKX = Intel Sky Lake Xeon E-class HPC CPUs (AVX512)" - echo " [Intel Xeon Phi]" - echo " KNC = Intel Knights Corner Xeon Phi" - echo " KNL = Intel Knights Landing Xeon Phi" - echo " [NVIDIA]" - echo " Kepler30 = NVIDIA Kepler generation CC 3.0" - echo " Kepler32 = NVIDIA Kepler generation CC 3.2" - echo " Kepler35 = NVIDIA Kepler generation CC 3.5" - echo " Kepler37 = NVIDIA Kepler generation CC 3.7" - echo " Maxwell50 = NVIDIA Maxwell generation CC 5.0" - echo " Maxwell52 = NVIDIA Maxwell generation CC 5.2" - echo " Maxwell53 = NVIDIA Maxwell generation CC 5.3" - echo " Pascal60 = NVIDIA Pascal generation CC 6.0" - echo " Pascal61 = NVIDIA Pascal generation CC 6.1" - echo " Volta70 = NVIDIA Volta generation CC 7.0" - echo " Volta72 = NVIDIA Volta generation CC 7.2" - echo "" - echo "--compiler=/Path/To/Compiler Set the compiler." - echo "--debug,-dbg: Enable Debugging." - echo "--cxxflags=[FLAGS] Overwrite CXXFLAGS for library build and test" - echo " build. This will still set certain required" - echo " flags via KOKKOS_CXXFLAGS (such as -fopenmp," - echo " --std=c++11, etc.)." - echo "--cxxstandard=[FLAGS] Overwrite KOKKOS_CXX_STANDARD for library build and test" - echo " c++11 (default), c++14, c++17, c++1y, c++1z, c++2a" - echo "--ldflags=[FLAGS] Overwrite LDFLAGS for library build and test" - echo " build. This will still set certain required" - echo " flags via KOKKOS_LDFLAGS (such as -fopenmp," - echo " -lpthread, etc.)." - echo "--with-gtest=/Path/To/Gtest: Set path to gtest. (Used in unit and performance" - echo " tests.)" - echo "--with-hwloc=/Path/To/Hwloc: Set path to hwloc library." - echo "--with-memkind=/Path/To/MemKind: Set path to memkind library." - echo "--with-options=[OPT]: Additional options to Kokkos:" - echo " compiler_warnings" - echo " aggressive_vectorization = add ivdep on loops" - echo " disable_profiling = do not compile with profiling hooks" - echo " " - echo "--with-cuda-options=[OPT]: Additional options to CUDA:" - echo " force_uvm, use_ldg, enable_lambda, rdc, enable_constexpr" - echo "--with-hpx-options=[OPT]: Additional options to HPX:" - echo " enable_async_dispatch" - echo "--gcc-toolchain=/Path/To/GccRoot: Set the gcc toolchain to use with clang (e.g. /usr)" - echo "--make-j=[NUM]: DEPRECATED: call make with appropriate" - echo " -j flag" + display_help_text exit 0 ;; *) @@ -193,265 +295,79 @@ do shift done -# Remove leading ',' from KOKKOS_DEVICES. -KOKKOS_DEVICES=$(echo $KOKKOS_DEVICES | sed 's/^,//') -# If KOKKOS_PATH undefined, assume parent dir of this script is the KOKKOS_PATH. -if [ -z "$KOKKOS_PATH" ]; then - KOKKOS_PATH=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd ) +if [ "$COMPILER" == "" ]; then + COMPILER_CMD= else - # Ensure KOKKOS_PATH is abs path - KOKKOS_PATH=$( cd $KOKKOS_PATH && pwd ) -fi - -if [ "${KOKKOS_PATH}" = "${PWD}" ] || [ "${KOKKOS_PATH}" = "${PWD}/" ]; then - echo "Running generate_makefile.bash in the Kokkos root directory is not allowed" - exit -fi - -KOKKOS_SRC_PATH=${KOKKOS_PATH} - -KOKKOS_SETTINGS="KOKKOS_SRC_PATH=${KOKKOS_SRC_PATH}" - -# The double [[ ]] in the elif branch is not a typo -if [ ${#COMPILER} -gt 0 ]; then - KOKKOS_SETTINGS="${KOKKOS_SETTINGS} CXX=${COMPILER}" -elif - [ ${#COMPILER} -eq 0 ] && [[ ${KOKKOS_DEVICES} =~ .*Cuda.* ]]; then - COMPILER="${KOKKOS_PATH}/bin/nvcc_wrapper" - KOKKOS_SETTINGS="${KOKKOS_SETTINGS} CXX=${COMPILER}" -fi - -if [ ${#KOKKOS_DEVICES} -gt 0 ]; then - KOKKOS_SETTINGS="${KOKKOS_SETTINGS} KOKKOS_DEVICES=${KOKKOS_DEVICES}" -fi - -if [ ${#KOKKOS_ARCH} -gt 0 ]; then - KOKKOS_SETTINGS="${KOKKOS_SETTINGS} KOKKOS_ARCH=${KOKKOS_ARCH}" -fi - -if [ ${#KOKKOS_DEBUG} -gt 0 ]; then - KOKKOS_SETTINGS="${KOKKOS_SETTINGS} KOKKOS_DEBUG=${KOKKOS_DEBUG}" -fi - -if [ ${#CUDA_PATH} -gt 0 ]; then - KOKKOS_SETTINGS="${KOKKOS_SETTINGS} CUDA_PATH=${CUDA_PATH}" -fi - -if [ ${#CXXFLAGS} -gt 0 ]; then - KOKKOS_SETTINGS="${KOKKOS_SETTINGS} CXXFLAGS=\"${CXXFLAGS}\"" -fi - -if [ ${#KOKKOS_CXX_STANDARD} -gt 0 ]; then - KOKKOS_SETTINGS="${KOKKOS_SETTINGS} KOKKOS_CXX_STANDARD=\"${KOKKOS_CXX_STANDARD}\"" -fi - -if [ ${#LDFLAGS} -gt 0 ]; then - KOKKOS_SETTINGS="${KOKKOS_SETTINGS} LDFLAGS=\"${LDFLAGS}\"" + COMPILER_CMD=-DCMAKE_CXX_COMPILER=$COMPILER fi -if [ ${#GTEST_PATH} -gt 0 ]; then - KOKKOS_SETTINGS="${KOKKOS_SETTINGS} GTEST_PATH=${GTEST_PATH}" +if [ "$KOKKOS_DEBUG" == "ON" ]; then + KOKKOS_DEBUG_CMD=-DCMAKE_BUILD_TYPE=DEBUG else - GTEST_PATH=${KOKKOS_PATH}/tpls/gtest - KOKKOS_SETTINGS="${KOKKOS_SETTINGS} GTEST_PATH=${GTEST_PATH}" + KOKKOS_DEBUG_CMD=-DCMAKE_BUILD_TYPE=RELEASE fi -if [ ${#HWLOC_PATH} -gt 0 ]; then - KOKKOS_SETTINGS="${KOKKOS_SETTINGS} HWLOC_PATH=${HWLOC_PATH}" - KOKKOS_USE_TPLS="${KOKKOS_USE_TPLS},hwloc" +if [ "$KOKKOS_HWLOC" == "ON" ]; then + KOKKOS_HWLOC_CMD=-DKokkos_ENABLE_HWLOC=ON + if [ "$HWLOC_PATH" != "" ]; then + KOKKOS_HWLOC_PATH_CMD=-DHWLOC_ROOT=$HWLOC_PATH + fi +else + KOKKOS_HWLOC_CMD= fi -if [ ${#MEMKIND_PATH} -gt 0 ]; then - KOKKOS_SETTINGS="${KOKKOS_SETTINGS} MEMKIND_PATH=${MEMKIND_PATH}" - KOKKOS_USE_TPLS="${KOKKOS_USE_TPLS},experimental_memkind" +if [ "$KOKKOS_MEMKIND" == "ON" ]; then + KOKKOS_MEMKIND_CMD=-DKokkos_ENABLE_MEMKIND=ON + if [ "$MEMKIND_PATH" != "" ]; then + KOKKOS_MEMKIND_PATH_CMD=-DMEMKIND_ROOT=$MEMKIND_PATH + fi +else + KOKKOS_MEMKIND_CMD= fi -if [ ${#KOKKOS_USE_TPLS} -gt 0 ]; then - KOKKOS_SETTINGS="${KOKKOS_SETTINGS} KOKKOS_USE_TPLS=${KOKKOS_USE_TPLS}" +if [ ! -e ${KOKKOS_PATH}/CMakeLists.txt ]; then + if [ "${KOKKOS_PATH}" == "" ]; then + CM_SCRIPT=$0 + KOKKOS_PATH=`dirname $CM_SCRIPT` + if [ ! -e ${KOKKOS_PATH}/CMakeLists.txt ]; then + echo "${KOKKOS_PATH} repository appears to not be complete. please verify and try again" + exit 0 + fi + else + echo "KOKKOS_PATH does not appear to be set properly. please specify in location of CMakeLists.txt" + display_help_text + exit 0 + fi fi -if [ ${#HPX_PATH} -gt 0 ]; then - KOKKOS_SETTINGS="${KOKKOS_SETTINGS} HPX_PATH=${HPX_PATH}" +get_kokkos_device_list +get_kokkos_option_list +get_kokkos_arch_list +get_kokkos_cuda_option_list + +## if HPX is enabled, we need to enforce cxx standard = 14 +if [[ ${KOKKOS_DEVICE_CMD} == *Kokkos_ENABLE_HPX* ]]; then + if [ "${KOKKOS_CXX_STANDARD}" == "" ] || [ ${#KOKKOS_CXX_STANDARD} -lt 14 ]; then + echo CXX Standard must be 14 or higher for HPX to work. + KOKKOS_CXX_STANDARD=14 + fi fi -if [ ${#KOKKOS_OPT} -gt 0 ]; then - KOKKOS_SETTINGS="${KOKKOS_SETTINGS} KOKKOS_OPTIONS=${KOKKOS_OPT}" +if [ "$KOKKOS_CXX_STANDARD" == "" ]; then + STANDARD_CMD= +else + STANDARD_CMD=-DKokkos_CXX_STANDARD=${KOKKOS_CXX_STANDARD} fi -if [ ${#KOKKOS_CUDA_OPT} -gt 0 ]; then - KOKKOS_SETTINGS="${KOKKOS_SETTINGS} KOKKOS_CUDA_OPTIONS=${KOKKOS_CUDA_OPT}" -fi +if [[ ${COMPILER} == *clang* ]]; then + gcc_path=$(which g++ | awk --field-separator='/bin/g++' '{printf $1}' ) + KOKKOS_CXXFLAGS="${KOKKOS_CXXFLAGS} --gcc-toolchain=${gcc_path}" -if [ ${#KOKKOS_HPX_OPT} -gt 0 ]; then - KOKKOS_SETTINGS="${KOKKOS_SETTINGS} KOKKOS_HPX_OPTIONS=${KOKKOS_HPX_OPT}" + if [ ! "${CUDA_PATH}" == "" ]; then + KOKKOS_CXXFLAGS="${KOKKOS_CXXFLAGS} --cuda-path=${CUDA_PATH}" + fi fi - -if [ ${#KOKKOS_GCC_TOOLCHAIN} -gt 0 ]; then - KOKKOS_SETTINGS="${KOKKOS_SETTINGS} KOKKOS_INTERNAL_GCC_TOOLCHAIN=${KOKKOS_GCC_TOOLCHAIN}" -fi - -KOKKOS_SETTINGS_NO_KOKKOS_PATH="${KOKKOS_SETTINGS}" - - -gen_makefile=Makefile.kokkos -mkdir -p core -mkdir -p core/unit_test -mkdir -p core/perf_test -mkdir -p containers -mkdir -p containers/unit_tests -mkdir -p containers/performance_tests -mkdir -p algorithms -mkdir -p algorithms/unit_tests -mkdir -p algorithms/performance_tests -mkdir -p example -mkdir -p example/fixture -mkdir -p example/feint -mkdir -p example/fenl -mkdir -p example/make_buildlink -mkdir -p example/tutorial - -KOKKOS_SETTINGS="${KOKKOS_SETTINGS_NO_KOKKOS_PATH} KOKKOS_PATH=${KOKKOS_PATH}" - -# Generate subdirectory makefiles. -echo "KOKKOS_SETTINGS=${KOKKOS_SETTINGS}" > core/unit_test/Makefile -echo "" >> core/unit_test/Makefile -echo "all:" >> core/unit_test/Makefile -echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/core/unit_test/Makefile ${KOKKOS_SETTINGS}" >> core/unit_test/Makefile -echo "" >> core/unit_test/Makefile -echo "test: all" >> core/unit_test/Makefile -echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/core/unit_test/Makefile ${KOKKOS_SETTINGS} test" >> core/unit_test/Makefile -echo "" >> core/unit_test/Makefile -echo "clean:" >> core/unit_test/Makefile -echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/core/unit_test/Makefile ${KOKKOS_SETTINGS} clean" >> core/unit_test/Makefile - -echo "KOKKOS_SETTINGS=${KOKKOS_SETTINGS}" > core/perf_test/Makefile -echo "" >> core/perf_test/Makefile -echo "all:" >> core/perf_test/Makefile -echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/core/perf_test/Makefile ${KOKKOS_SETTINGS}" >> core/perf_test/Makefile -echo "" >> core/perf_test/Makefile -echo "test: all" >> core/perf_test/Makefile -echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/core/perf_test/Makefile ${KOKKOS_SETTINGS} test" >> core/perf_test/Makefile -echo "" >> core/perf_test/Makefile -echo "clean:" >> core/perf_test/Makefile -echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/core/perf_test/Makefile ${KOKKOS_SETTINGS} clean" >> core/perf_test/Makefile - -echo "KOKKOS_SETTINGS=${KOKKOS_SETTINGS}" > containers/unit_tests/Makefile -echo "" >> containers/unit_tests/Makefile -echo "all:" >> containers/unit_tests/Makefile -echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/containers/unit_tests/Makefile ${KOKKOS_SETTINGS}" >> containers/unit_tests/Makefile -echo "" >> containers/unit_tests/Makefile -echo "test: all" >> containers/unit_tests/Makefile -echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/containers/unit_tests/Makefile ${KOKKOS_SETTINGS} test" >> containers/unit_tests/Makefile -echo "" >> containers/unit_tests/Makefile -echo "clean:" >> containers/unit_tests/Makefile -echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/containers/unit_tests/Makefile ${KOKKOS_SETTINGS} clean" >> containers/unit_tests/Makefile - -echo "KOKKOS_SETTINGS=${KOKKOS_SETTINGS}" > containers/performance_tests/Makefile -echo "" >> containers/performance_tests/Makefile -echo "all:" >> containers/performance_tests/Makefile -echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/containers/performance_tests/Makefile ${KOKKOS_SETTINGS}" >> containers/performance_tests/Makefile -echo "" >> containers/performance_tests/Makefile -echo "test: all" >> containers/performance_tests/Makefile -echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/containers/performance_tests/Makefile ${KOKKOS_SETTINGS} test" >> containers/performance_tests/Makefile -echo "" >> containers/performance_tests/Makefile -echo "clean:" >> containers/performance_tests/Makefile -echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/containers/performance_tests/Makefile ${KOKKOS_SETTINGS} clean" >> containers/performance_tests/Makefile - -echo "KOKKOS_SETTINGS=${KOKKOS_SETTINGS}" > algorithms/unit_tests/Makefile -echo "" >> algorithms/unit_tests/Makefile -echo "all:" >> algorithms/unit_tests/Makefile -echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/algorithms/unit_tests/Makefile ${KOKKOS_SETTINGS}" >> algorithms/unit_tests/Makefile -echo "" >> algorithms/unit_tests/Makefile -echo "test: all" >> algorithms/unit_tests/Makefile -echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/algorithms/unit_tests/Makefile ${KOKKOS_SETTINGS} test" >> algorithms/unit_tests/Makefile -echo "" >> algorithms/unit_tests/Makefile -echo "clean:" >> algorithms/unit_tests/Makefile -echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/algorithms/unit_tests/Makefile ${KOKKOS_SETTINGS} clean" >> algorithms/unit_tests/Makefile - -echo "KOKKOS_SETTINGS=${KOKKOS_SETTINGS}" > example/fixture/Makefile -echo "" >> example/fixture/Makefile -echo "all:" >> example/fixture/Makefile -echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/example/fixture/Makefile ${KOKKOS_SETTINGS}" >> example/fixture/Makefile -echo "" >> example/fixture/Makefile -echo "test: all" >> example/fixture/Makefile -echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/example/fixture/Makefile ${KOKKOS_SETTINGS} test" >> example/fixture/Makefile -echo "" >> example/fixture/Makefile -echo "clean:" >> example/fixture/Makefile -echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/example/fixture/Makefile ${KOKKOS_SETTINGS} clean" >> example/fixture/Makefile - -echo "KOKKOS_SETTINGS=${KOKKOS_SETTINGS}" > example/feint/Makefile -echo "" >> example/feint/Makefile -echo "all:" >> example/feint/Makefile -echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/example/feint/Makefile ${KOKKOS_SETTINGS}" >> example/feint/Makefile -echo "" >> example/feint/Makefile -echo "test: all" >> example/feint/Makefile -echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/example/feint/Makefile ${KOKKOS_SETTINGS} test" >> example/feint/Makefile -echo "" >> example/feint/Makefile -echo "clean:" >> example/feint/Makefile -echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/example/feint/Makefile ${KOKKOS_SETTINGS} clean" >> example/feint/Makefile - -echo "KOKKOS_SETTINGS=${KOKKOS_SETTINGS}" > example/fenl/Makefile -echo "" >> example/fenl/Makefile -echo "all:" >> example/fenl/Makefile -echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/example/fenl/Makefile ${KOKKOS_SETTINGS}" >> example/fenl/Makefile -echo "" >> example/fenl/Makefile -echo "test: all" >> example/fenl/Makefile -echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/example/fenl/Makefile ${KOKKOS_SETTINGS} test" >> example/fenl/Makefile -echo "" >> example/fenl/Makefile -echo "clean:" >> example/fenl/Makefile -echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/example/fenl/Makefile ${KOKKOS_SETTINGS} clean" >> example/fenl/Makefile - -echo "KOKKOS_SETTINGS=${KOKKOS_SETTINGS}" > example/make_buildlink/Makefile -echo "" >> example/make_buildlink/Makefile -echo "build:" >> example/make_buildlink/Makefile -echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/example/make_buildlink/Makefile ${KOKKOS_SETTINGS} build" >> example/make_buildlink/Makefile -echo "" >> example/make_buildlink/Makefile -echo "test: build" >> example/make_buildlink/Makefile -echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/example/make_buildlink/Makefile ${KOKKOS_SETTINGS} test" >> example/make_buildlink/Makefile -echo "" >> example/make_buildlink/Makefile -echo "clean:" >> example/make_buildlink/Makefile -echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/example/make_buildlink/Makefile ${KOKKOS_SETTINGS} clean" >> example/make_buildlink/Makefile - -echo "KOKKOS_SETTINGS=${KOKKOS_SETTINGS}" > example/tutorial/Makefile -echo "" >> example/tutorial/Makefile -echo "build:" >> example/tutorial/Makefile -echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/example/tutorial/Makefile KOKKOS_SETTINGS='${KOKKOS_SETTINGS}' KOKKOS_PATH=${KOKKOS_PATH} build">> example/tutorial/Makefile -echo "" >> example/tutorial/Makefile -echo "test: build" >> example/tutorial/Makefile -echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/example/tutorial/Makefile KOKKOS_SETTINGS='${KOKKOS_SETTINGS}' KOKKOS_PATH=${KOKKOS_PATH} test" >> example/tutorial/Makefile -echo "" >> example/tutorial/Makefile -echo "clean:" >> example/tutorial/Makefile -echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/example/tutorial/Makefile KOKKOS_SETTINGS='${KOKKOS_SETTINGS}' KOKKOS_PATH=${KOKKOS_PATH} clean" >> example/tutorial/Makefile - -# Generate top level directory makefile. -echo "Generating Makefiles with options " ${KOKKOS_SETTINGS} -echo "KOKKOS_SETTINGS=${KOKKOS_SETTINGS}" > Makefile -echo "" >> Makefile -echo "build-test:" >> Makefile -echo -e "\t\$(MAKE) -C core/unit_test" >> Makefile -echo -e "\t\$(MAKE) -C core/perf_test" >> Makefile -echo -e "\t\$(MAKE) -C containers/unit_tests" >> Makefile -echo -e "\t\$(MAKE) -C containers/performance_tests" >> Makefile -echo -e "\t\$(MAKE) -C algorithms/unit_tests" >> Makefile -echo "" >> Makefile -echo "test: build-test" >> Makefile -echo -e "\t\$(MAKE) -C core/unit_test test" >> Makefile -echo -e "\t\$(MAKE) -C core/perf_test test" >> Makefile -echo -e "\t\$(MAKE) -C containers/unit_tests test" >> Makefile -echo -e "\t\$(MAKE) -C containers/performance_tests test" >> Makefile -echo -e "\t\$(MAKE) -C algorithms/unit_tests test" >> Makefile -echo "" >> Makefile -echo "unit-tests-only:" >> Makefile -echo -e "\t\$(MAKE) -C core/unit_test test" >> Makefile -echo -e "\t\$(MAKE) -C containers/unit_tests test" >> Makefile -echo -e "\t\$(MAKE) -C algorithms/unit_tests test" >> Makefile -echo "" >> Makefile - -echo "clean:" >> Makefile -echo -e "\t\$(MAKE) -C core/unit_test clean" >> Makefile -echo -e "\t\$(MAKE) -C core/perf_test clean" >> Makefile -echo -e "\t\$(MAKE) -C containers/unit_tests clean" >> Makefile -echo -e "\t\$(MAKE) -C containers/performance_tests clean" >> Makefile -echo -e "\t\$(MAKE) -C algorithms/unit_tests clean" >> Makefile - + +echo cmake $COMPILER_CMD -DCMAKE_CXX_FLAGS="${KOKKOS_CXXFLAGS}" -DCMAKE_EXE_LINKER_FLAGS="${KOKKOS_LDFLAGS}" -DCMAKE_INSTALL_PREFIX=${PREFIX} ${KOKKOS_DEVICE_CMD} ${KOKKOS_ARCH_CMD} -DKokkos_ENABLE_TESTS=${KOKKOS_DO_TESTS} -DKokkos_ENABLE_EXAMPLES=${KOKKOS_DO_EXAMPLES} ${KOKKOS_OPTION_CMD} ${KOKKOS_CUDA_OPTION_CMD} -DCMAKE_VERBOSE_MAKEFILE=ON -DCMAKE_CXX_EXTENSIONS=OFF ${STANDARD_CMD} ${KOKKOS_DEBUG_CMD} ${KOKKOS_HWLOC_CMD} ${KOKKOS_HWLOC_PATH_CMD} ${KOKKOS_MEMKIND_CMD} ${KOKKOS_MEMKIND_PATH_CMD} ${KOKKOS_PATH} +cmake $COMPILER_CMD -DCMAKE_CXX_FLAGS="${KOKKOS_CXXFLAGS//\"}" -DCMAKE_EXE_LINKER_FLAGS="${KOKKOS_LDFLAGS//\"}" -DCMAKE_INSTALL_PREFIX=${PREFIX} ${KOKKOS_DEVICE_CMD} ${KOKKOS_ARCH_CMD} -DKokkos_ENABLE_TESTS=${KOKKOS_DO_TESTS} -DKokkos_ENABLE_EXAMPLES=${KOKKOS_DO_EXAMPLES} ${KOKKOS_OPTION_CMD} ${KOKKOS_CUDA_OPTION_CMD} -DCMAKE_VERBOSE_MAKEFILE=ON -DCMAKE_CXX_EXTENSIONS=OFF ${STANDARD_CMD} ${KOKKOS_DEBUG_CMD} ${KOKKOS_HWLOC_CMD} ${KOKKOS_HWLOC_PATH_CMD} ${KOKKOS_MEMKIND_CMD} ${KOKKOS_MEMKIND_PATH_CMD} ${KOKKOS_PATH} diff --git a/lib/kokkos/gnu_generate_makefile.bash b/lib/kokkos/gnu_generate_makefile.bash new file mode 100755 index 0000000000..42b26bf4a4 --- /dev/null +++ b/lib/kokkos/gnu_generate_makefile.bash @@ -0,0 +1,484 @@ +#!/bin/bash + +KOKKOS_DEVICES="" + +KOKKOS_DO_EXAMPLES="1" + +while [[ $# > 0 ]] +do + key="$1" + + case $key in + --kokkos-path*) + KOKKOS_PATH="${key#*=}" + ;; + --hpx-path*) + HPX_PATH="${key#*=}" + ;; + --prefix*) + PREFIX="${key#*=}" + ;; + --with-cuda) + KOKKOS_DEVICES="${KOKKOS_DEVICES},Cuda" + CUDA_PATH_NVCC=$(command -v nvcc) + CUDA_PATH=${CUDA_PATH_NVCC%/bin/nvcc} + ;; + # Catch this before '--with-cuda*' + --with-cuda-options*) + KOKKOS_CUDA_OPT="${key#*=}" + ;; + --with-cuda*) + KOKKOS_DEVICES="${KOKKOS_DEVICES},Cuda" + CUDA_PATH="${key#*=}" + ;; + --with-openmp) + KOKKOS_DEVICES="${KOKKOS_DEVICES},OpenMP" + ;; + --with-pthread) + KOKKOS_DEVICES="${KOKKOS_DEVICES},Pthread" + ;; + --with-serial) + KOKKOS_DEVICES="${KOKKOS_DEVICES},Serial" + ;; + --with-hpx-options*) + KOKKOS_HPX_OPT="${key#*=}" + ;; + --with-hpx*) + KOKKOS_DEVICES="${KOKKOS_DEVICES},HPX" + if [ -z "$HPX_PATH" ]; then + HPX_PATH="${key#*=}" + fi + ;; + --with-devices*) + DEVICES="${key#*=}" + KOKKOS_DEVICES="${KOKKOS_DEVICES},${DEVICES}" + ;; + --with-gtest*) + GTEST_PATH="${key#*=}" + ;; + --with-hwloc*) + HWLOC_PATH="${key#*=}" + ;; + --with-memkind*) + MEMKIND_PATH="${key#*=}" + ;; + --arch*) + KOKKOS_ARCH="${key#*=}" + ;; + --cxxflags*) + CXXFLAGS="${key#*=}" + ;; + --cxxstandard*) + KOKKOS_CXX_STANDARD="${key#*=}" + ;; + --ldflags*) + LDFLAGS="${key#*=}" + ;; + --debug|-dbg) + KOKKOS_DEBUG=yes + ;; + --make-j*) + echo "Warning: ${key} is deprecated" + echo "Call make with appropriate -j flag" + ;; + --no-examples) + KOKKOS_DO_EXAMPLES="0" + ;; + --compiler*) + COMPILER="${key#*=}" + CNUM=$(command -v ${COMPILER} 2>&1 >/dev/null | grep "no ${COMPILER}" | wc -l) + if [ ${CNUM} -gt 0 ]; then + echo "Invalid compiler by --compiler command: '${COMPILER}'" + exit + fi + if [[ ! -n ${COMPILER} ]]; then + echo "Empty compiler specified by --compiler command." + exit + fi + CNUM=$(command -v ${COMPILER} | grep ${COMPILER} | wc -l) + if [ ${CNUM} -eq 0 ]; then + echo "Invalid compiler by --compiler command: '${COMPILER}'" + exit + fi + # ... valid compiler, ensure absolute path set + WCOMPATH=$(command -v $COMPILER) + COMPDIR=$(dirname $WCOMPATH) + COMPNAME=$(basename $WCOMPATH) + COMPILER=${COMPDIR}/${COMPNAME} + ;; + --with-options*) + KOKKOS_OPT="${key#*=}" + ;; + --gcc-toolchain*) + KOKKOS_GCC_TOOLCHAIN="${key#*=}" + ;; + --help) + echo "Kokkos configure options:" + echo "" + echo "--kokkos-path=/Path/To/Kokkos: Path to the Kokkos root directory." + echo "--prefix=/Install/Path: Path to install the Kokkos library." + echo "" + echo "--with-cuda[=/Path/To/Cuda]: Enable Cuda and set path to Cuda Toolkit." + echo "--with-openmp: Enable OpenMP backend." + echo "--with-pthread: Enable Pthreads backend." + echo "--with-serial: Enable Serial backend." + echo "--with-devices: Explicitly add a set of backends." + echo "" + echo "--arch=[OPT]: Set target architectures. Options are:" + echo " [AMD]" + echo " AMDAVX = AMD CPU" + echo " EPYC = AMD EPYC Zen-Core CPU" + echo " [ARM]" + echo " ARMv80 = ARMv8.0 Compatible CPU" + echo " ARMv81 = ARMv8.1 Compatible CPU" + echo " ARMv8-ThunderX = ARMv8 Cavium ThunderX CPU" + echo " ARMv8-TX2 = ARMv8 Cavium ThunderX2 CPU" + echo " [IBM]" + echo " BGQ = IBM Blue Gene Q" + echo " Power7 = IBM POWER7 and POWER7+ CPUs" + echo " Power8 = IBM POWER8 CPUs" + echo " Power9 = IBM POWER9 CPUs" + echo " [Intel]" + echo " WSM = Intel Westmere CPUs" + echo " SNB = Intel Sandy/Ivy Bridge CPUs" + echo " HSW = Intel Haswell CPUs" + echo " BDW = Intel Broadwell Xeon E-class CPUs" + echo " SKX = Intel Sky Lake Xeon E-class HPC CPUs (AVX512)" + echo " [Intel Xeon Phi]" + echo " KNC = Intel Knights Corner Xeon Phi" + echo " KNL = Intel Knights Landing Xeon Phi" + echo " [NVIDIA]" + echo " Kepler30 = NVIDIA Kepler generation CC 3.0" + echo " Kepler32 = NVIDIA Kepler generation CC 3.2" + echo " Kepler35 = NVIDIA Kepler generation CC 3.5" + echo " Kepler37 = NVIDIA Kepler generation CC 3.7" + echo " Maxwell50 = NVIDIA Maxwell generation CC 5.0" + echo " Maxwell52 = NVIDIA Maxwell generation CC 5.2" + echo " Maxwell53 = NVIDIA Maxwell generation CC 5.3" + echo " Pascal60 = NVIDIA Pascal generation CC 6.0" + echo " Pascal61 = NVIDIA Pascal generation CC 6.1" + echo " Volta70 = NVIDIA Volta generation CC 7.0" + echo " Volta72 = NVIDIA Volta generation CC 7.2" + echo "" + echo "--compiler=/Path/To/Compiler Set the compiler." + echo "--debug,-dbg: Enable Debugging." + echo "--cxxflags=[FLAGS] Overwrite CXXFLAGS for library build and test" + echo " build. This will still set certain required" + echo " flags via KOKKOS_CXXFLAGS (such as -fopenmp," + echo " --std=c++11, etc.)." + echo "--cxxstandard=[FLAGS] Overwrite KOKKOS_CXX_STANDARD for library build and test" + echo " c++11 (default), c++14, c++17, c++1y, c++1z, c++2a" + echo "--ldflags=[FLAGS] Overwrite LDFLAGS for library build and test" + echo " build. This will still set certain required" + echo " flags via KOKKOS_LDFLAGS (such as -fopenmp," + echo " -lpthread, etc.)." + echo "--with-gtest=/Path/To/Gtest: Set path to gtest. (Used in unit and performance" + echo " tests.)" + echo "--with-hwloc=/Path/To/Hwloc: Set path to hwloc library." + echo "--with-memkind=/Path/To/MemKind: Set path to memkind library." + echo "--with-options=[OPT]: Additional options to Kokkos:" + echo " compiler_warnings" + echo " aggressive_vectorization = add ivdep on loops" + echo " disable_profiling = do not compile with profiling hooks" + echo " " + echo "--with-cuda-options=[OPT]: Additional options to CUDA:" + echo " force_uvm, use_ldg, enable_lambda, rdc, enable_constexpr" + echo "--with-hpx-options=[OPT]: Additional options to HPX:" + echo " enable_async_dispatch" + echo "--gcc-toolchain=/Path/To/GccRoot: Set the gcc toolchain to use with clang (e.g. /usr)" + echo "--make-j=[NUM]: DEPRECATED: call make with appropriate" + echo " -j flag" + exit 0 + ;; + *) + echo "warning: ignoring unknown option $key" + ;; + esac + + shift +done + +# Remove leading ',' from KOKKOS_DEVICES. +KOKKOS_DEVICES=$(echo $KOKKOS_DEVICES | sed 's/^,//') + +# If KOKKOS_PATH undefined, assume parent dir of this script is the KOKKOS_PATH. +if [ -z "$KOKKOS_PATH" ]; then + KOKKOS_PATH=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd ) +else + # Ensure KOKKOS_PATH is abs path + KOKKOS_PATH=$( cd $KOKKOS_PATH && pwd ) +fi + +if [ "${KOKKOS_PATH}" = "${PWD}" ] || [ "${KOKKOS_PATH}" = "${PWD}/" ]; then + echo "Running generate_makefile.bash in the Kokkos root directory is not allowed" + exit +fi + +KOKKOS_SRC_PATH=${KOKKOS_PATH} + +KOKKOS_SETTINGS="KOKKOS_SRC_PATH=${KOKKOS_SRC_PATH}" + +# The double [[ ]] in the elif branch is not a typo +if [ ${#COMPILER} -gt 0 ]; then + KOKKOS_SETTINGS="${KOKKOS_SETTINGS} CXX=${COMPILER}" +elif + [ ${#COMPILER} -eq 0 ] && [[ ${KOKKOS_DEVICES} =~ .*Cuda.* ]]; then + COMPILER="${KOKKOS_PATH}/bin/nvcc_wrapper" + KOKKOS_SETTINGS="${KOKKOS_SETTINGS} CXX=${COMPILER}" +fi + +if [ ${#KOKKOS_DEVICES} -gt 0 ]; then + KOKKOS_SETTINGS="${KOKKOS_SETTINGS} KOKKOS_DEVICES=${KOKKOS_DEVICES}" +fi + +if [ ${#KOKKOS_ARCH} -gt 0 ]; then + KOKKOS_SETTINGS="${KOKKOS_SETTINGS} KOKKOS_ARCH=${KOKKOS_ARCH}" +fi + +if [ ${#KOKKOS_DEBUG} -gt 0 ]; then + KOKKOS_SETTINGS="${KOKKOS_SETTINGS} KOKKOS_DEBUG=${KOKKOS_DEBUG}" +fi + +if [ ${#CUDA_PATH} -gt 0 ]; then + KOKKOS_SETTINGS="${KOKKOS_SETTINGS} CUDA_PATH=${CUDA_PATH}" +fi + +if [ ${#CXXFLAGS} -gt 0 ]; then + KOKKOS_SETTINGS="${KOKKOS_SETTINGS} CXXFLAGS=\"${CXXFLAGS}\"" +fi + +if [ ${#KOKKOS_CXX_STANDARD} -gt 0 ]; then + KOKKOS_SETTINGS="${KOKKOS_SETTINGS} KOKKOS_CXX_STANDARD=\"${KOKKOS_CXX_STANDARD}\"" +fi + +if [ ${#LDFLAGS} -gt 0 ]; then + KOKKOS_SETTINGS="${KOKKOS_SETTINGS} LDFLAGS=\"${LDFLAGS}\"" +fi + +if [ ${#GTEST_PATH} -gt 0 ]; then + KOKKOS_SETTINGS="${KOKKOS_SETTINGS} GTEST_PATH=${GTEST_PATH}" +else + GTEST_PATH=${KOKKOS_PATH}/tpls/gtest + KOKKOS_SETTINGS="${KOKKOS_SETTINGS} GTEST_PATH=${GTEST_PATH}" +fi + +if [ ${#HWLOC_PATH} -gt 0 ]; then + KOKKOS_SETTINGS="${KOKKOS_SETTINGS} HWLOC_PATH=${HWLOC_PATH}" + KOKKOS_USE_TPLS="${KOKKOS_USE_TPLS},hwloc" +fi + +if [ ${#MEMKIND_PATH} -gt 0 ]; then + KOKKOS_SETTINGS="${KOKKOS_SETTINGS} MEMKIND_PATH=${MEMKIND_PATH}" + KOKKOS_USE_TPLS="${KOKKOS_USE_TPLS},experimental_memkind" +fi + +if [ ${#KOKKOS_USE_TPLS} -gt 0 ]; then + KOKKOS_SETTINGS="${KOKKOS_SETTINGS} KOKKOS_USE_TPLS=${KOKKOS_USE_TPLS}" +fi + +if [ ${#HPX_PATH} -gt 0 ]; then + KOKKOS_SETTINGS="${KOKKOS_SETTINGS} HPX_PATH=${HPX_PATH}" +fi + +if [ ${#KOKKOS_OPT} -gt 0 ]; then + KOKKOS_SETTINGS="${KOKKOS_SETTINGS} KOKKOS_OPTIONS=${KOKKOS_OPT}" +fi + +if [ ${#KOKKOS_CUDA_OPT} -gt 0 ]; then + KOKKOS_SETTINGS="${KOKKOS_SETTINGS} KOKKOS_CUDA_OPTIONS=${KOKKOS_CUDA_OPT}" +fi + +if [ ${#KOKKOS_HPX_OPT} -gt 0 ]; then + KOKKOS_SETTINGS="${KOKKOS_SETTINGS} KOKKOS_HPX_OPTIONS=${KOKKOS_HPX_OPT}" +fi + +if [ ${#KOKKOS_GCC_TOOLCHAIN} -gt 0 ]; then + KOKKOS_SETTINGS="${KOKKOS_SETTINGS} KOKKOS_INTERNAL_GCC_TOOLCHAIN=${KOKKOS_GCC_TOOLCHAIN}" +fi + +KOKKOS_SETTINGS_NO_KOKKOS_PATH="${KOKKOS_SETTINGS}" + + +gen_makefile=Makefile.kokkos +mkdir -p core +mkdir -p core/unit_test +mkdir -p core/perf_test +mkdir -p containers +mkdir -p containers/unit_tests +mkdir -p containers/performance_tests +mkdir -p algorithms +mkdir -p algorithms/unit_tests +mkdir -p algorithms/performance_tests +mkdir -p example +mkdir -p example/fixture +mkdir -p example/feint +mkdir -p example/fenl +mkdir -p example/make_buildlink +mkdir -p example/tutorial + +KOKKOS_SETTINGS="${KOKKOS_SETTINGS_NO_KOKKOS_PATH} KOKKOS_PATH=${KOKKOS_PATH}" + +# Generate subdirectory makefiles. +echo "KOKKOS_SETTINGS=${KOKKOS_SETTINGS}" > core/unit_test/Makefile +echo "" >> core/unit_test/Makefile +echo "all:" >> core/unit_test/Makefile +echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/core/unit_test/Makefile ${KOKKOS_SETTINGS}" >> core/unit_test/Makefile +echo "" >> core/unit_test/Makefile +echo "test: all" >> core/unit_test/Makefile +echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/core/unit_test/Makefile ${KOKKOS_SETTINGS} test" >> core/unit_test/Makefile +echo "" >> core/unit_test/Makefile +echo "clean:" >> core/unit_test/Makefile +echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/core/unit_test/Makefile ${KOKKOS_SETTINGS} clean" >> core/unit_test/Makefile + +echo "KOKKOS_SETTINGS=${KOKKOS_SETTINGS}" > core/perf_test/Makefile +echo "" >> core/perf_test/Makefile +echo "all:" >> core/perf_test/Makefile +echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/core/perf_test/Makefile ${KOKKOS_SETTINGS}" >> core/perf_test/Makefile +echo "" >> core/perf_test/Makefile +echo "test: all" >> core/perf_test/Makefile +echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/core/perf_test/Makefile ${KOKKOS_SETTINGS} test" >> core/perf_test/Makefile +echo "" >> core/perf_test/Makefile +echo "clean:" >> core/perf_test/Makefile +echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/core/perf_test/Makefile ${KOKKOS_SETTINGS} clean" >> core/perf_test/Makefile + +echo "KOKKOS_SETTINGS=${KOKKOS_SETTINGS}" > containers/unit_tests/Makefile +echo "" >> containers/unit_tests/Makefile +echo "all:" >> containers/unit_tests/Makefile +echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/containers/unit_tests/Makefile ${KOKKOS_SETTINGS}" >> containers/unit_tests/Makefile +echo "" >> containers/unit_tests/Makefile +echo "test: all" >> containers/unit_tests/Makefile +echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/containers/unit_tests/Makefile ${KOKKOS_SETTINGS} test" >> containers/unit_tests/Makefile +echo "" >> containers/unit_tests/Makefile +echo "clean:" >> containers/unit_tests/Makefile +echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/containers/unit_tests/Makefile ${KOKKOS_SETTINGS} clean" >> containers/unit_tests/Makefile + +echo "KOKKOS_SETTINGS=${KOKKOS_SETTINGS}" > containers/performance_tests/Makefile +echo "" >> containers/performance_tests/Makefile +echo "all:" >> containers/performance_tests/Makefile +echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/containers/performance_tests/Makefile ${KOKKOS_SETTINGS}" >> containers/performance_tests/Makefile +echo "" >> containers/performance_tests/Makefile +echo "test: all" >> containers/performance_tests/Makefile +echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/containers/performance_tests/Makefile ${KOKKOS_SETTINGS} test" >> containers/performance_tests/Makefile +echo "" >> containers/performance_tests/Makefile +echo "clean:" >> containers/performance_tests/Makefile +echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/containers/performance_tests/Makefile ${KOKKOS_SETTINGS} clean" >> containers/performance_tests/Makefile + +echo "KOKKOS_SETTINGS=${KOKKOS_SETTINGS}" > algorithms/unit_tests/Makefile +echo "" >> algorithms/unit_tests/Makefile +echo "all:" >> algorithms/unit_tests/Makefile +echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/algorithms/unit_tests/Makefile ${KOKKOS_SETTINGS}" >> algorithms/unit_tests/Makefile +echo "" >> algorithms/unit_tests/Makefile +echo "test: all" >> algorithms/unit_tests/Makefile +echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/algorithms/unit_tests/Makefile ${KOKKOS_SETTINGS} test" >> algorithms/unit_tests/Makefile +echo "" >> algorithms/unit_tests/Makefile +echo "clean:" >> algorithms/unit_tests/Makefile +echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/algorithms/unit_tests/Makefile ${KOKKOS_SETTINGS} clean" >> algorithms/unit_tests/Makefile + +echo "KOKKOS_SETTINGS=${KOKKOS_SETTINGS}" > example/fixture/Makefile +echo "" >> example/fixture/Makefile +echo "all:" >> example/fixture/Makefile +echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/example/fixture/Makefile ${KOKKOS_SETTINGS}" >> example/fixture/Makefile +echo "" >> example/fixture/Makefile +echo "test: all" >> example/fixture/Makefile +echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/example/fixture/Makefile ${KOKKOS_SETTINGS} test" >> example/fixture/Makefile +echo "" >> example/fixture/Makefile +echo "clean:" >> example/fixture/Makefile +echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/example/fixture/Makefile ${KOKKOS_SETTINGS} clean" >> example/fixture/Makefile + +echo "KOKKOS_SETTINGS=${KOKKOS_SETTINGS}" > example/feint/Makefile +echo "" >> example/feint/Makefile +echo "all:" >> example/feint/Makefile +echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/example/feint/Makefile ${KOKKOS_SETTINGS}" >> example/feint/Makefile +echo "" >> example/feint/Makefile +echo "test: all" >> example/feint/Makefile +echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/example/feint/Makefile ${KOKKOS_SETTINGS} test" >> example/feint/Makefile +echo "" >> example/feint/Makefile +echo "clean:" >> example/feint/Makefile +echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/example/feint/Makefile ${KOKKOS_SETTINGS} clean" >> example/feint/Makefile + +echo "KOKKOS_SETTINGS=${KOKKOS_SETTINGS}" > example/fenl/Makefile +echo "" >> example/fenl/Makefile +echo "all:" >> example/fenl/Makefile +echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/example/fenl/Makefile ${KOKKOS_SETTINGS}" >> example/fenl/Makefile +echo "" >> example/fenl/Makefile +echo "test: all" >> example/fenl/Makefile +echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/example/fenl/Makefile ${KOKKOS_SETTINGS} test" >> example/fenl/Makefile +echo "" >> example/fenl/Makefile +echo "clean:" >> example/fenl/Makefile +echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/example/fenl/Makefile ${KOKKOS_SETTINGS} clean" >> example/fenl/Makefile + +echo "KOKKOS_SETTINGS=${KOKKOS_SETTINGS}" > example/make_buildlink/Makefile +echo "" >> example/make_buildlink/Makefile +echo "build:" >> example/make_buildlink/Makefile +echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/example/make_buildlink/Makefile ${KOKKOS_SETTINGS} build" >> example/make_buildlink/Makefile +echo "" >> example/make_buildlink/Makefile +echo "test: build" >> example/make_buildlink/Makefile +echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/example/make_buildlink/Makefile ${KOKKOS_SETTINGS} test" >> example/make_buildlink/Makefile +echo "" >> example/make_buildlink/Makefile +echo "clean:" >> example/make_buildlink/Makefile +echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/example/make_buildlink/Makefile ${KOKKOS_SETTINGS} clean" >> example/make_buildlink/Makefile + +echo "KOKKOS_SETTINGS=${KOKKOS_SETTINGS}" > example/tutorial/Makefile +echo "" >> example/tutorial/Makefile +echo "build:" >> example/tutorial/Makefile +echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/example/tutorial/Makefile KOKKOS_SETTINGS='${KOKKOS_SETTINGS}' KOKKOS_PATH=${KOKKOS_PATH} build">> example/tutorial/Makefile +echo "" >> example/tutorial/Makefile +echo "test: build" >> example/tutorial/Makefile +echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/example/tutorial/Makefile KOKKOS_SETTINGS='${KOKKOS_SETTINGS}' KOKKOS_PATH=${KOKKOS_PATH} test" >> example/tutorial/Makefile +echo "" >> example/tutorial/Makefile +echo "clean:" >> example/tutorial/Makefile +echo -e "\t\$(MAKE) -f ${KOKKOS_PATH}/example/tutorial/Makefile KOKKOS_SETTINGS='${KOKKOS_SETTINGS}' KOKKOS_PATH=${KOKKOS_PATH} clean" >> example/tutorial/Makefile + +# Generate top level directory makefile. +echo "Generating Makefiles with options " ${KOKKOS_SETTINGS} +echo "KOKKOS_SETTINGS=${KOKKOS_SETTINGS}" > Makefile +echo "" >> Makefile +echo "build-test:" >> Makefile +echo -e "\t\$(MAKE) -C core/unit_test" >> Makefile +echo -e "\t\$(MAKE) -C core/perf_test" >> Makefile +echo -e "\t\$(MAKE) -C containers/unit_tests" >> Makefile +echo -e "\t\$(MAKE) -C containers/performance_tests" >> Makefile +echo -e "\t\$(MAKE) -C algorithms/unit_tests" >> Makefile +if [ ${KOKKOS_DO_EXAMPLES} -gt 0 ]; then +$() +echo -e "\t\$(MAKE) -C example/fixture" >> Makefile +echo -e "\t\$(MAKE) -C example/feint" >> Makefile +echo -e "\t\$(MAKE) -C example/fenl" >> Makefile +echo -e "\t\$(MAKE) -C example/make_buildlink build" >> Makefile +echo -e "\t\$(MAKE) -C example/tutorial build" >> Makefile +fi +echo "" >> Makefile +echo "test: build-test" >> Makefile +echo -e "\t\$(MAKE) -C core/unit_test test" >> Makefile +echo -e "\t\$(MAKE) -C core/perf_test test" >> Makefile +echo -e "\t\$(MAKE) -C containers/unit_tests test" >> Makefile +echo -e "\t\$(MAKE) -C containers/performance_tests test" >> Makefile +echo -e "\t\$(MAKE) -C algorithms/unit_tests test" >> Makefile +if [ ${KOKKOS_DO_EXAMPLES} -gt 0 ]; then +echo -e "\t\$(MAKE) -C example/fixture test" >> Makefile +echo -e "\t\$(MAKE) -C example/feint test" >> Makefile +echo -e "\t\$(MAKE) -C example/fenl test" >> Makefile +echo -e "\t\$(MAKE) -C example/make_buildlink test" >> Makefile +echo -e "\t\$(MAKE) -C example/tutorial test" >> Makefile +fi +echo "" >> Makefile +echo "unit-tests-only:" >> Makefile +echo -e "\t\$(MAKE) -C core/unit_test test" >> Makefile +echo -e "\t\$(MAKE) -C containers/unit_tests test" >> Makefile +echo -e "\t\$(MAKE) -C algorithms/unit_tests test" >> Makefile +echo "" >> Makefile + +echo "clean:" >> Makefile +echo -e "\t\$(MAKE) -C core/unit_test clean" >> Makefile +echo -e "\t\$(MAKE) -C core/perf_test clean" >> Makefile +echo -e "\t\$(MAKE) -C containers/unit_tests clean" >> Makefile +echo -e "\t\$(MAKE) -C containers/performance_tests clean" >> Makefile +echo -e "\t\$(MAKE) -C algorithms/unit_tests clean" >> Makefile +if [ ${KOKKOS_DO_EXAMPLES} -gt 0 ]; then +echo -e "\t\$(MAKE) -C example/fixture clean" >> Makefile +echo -e "\t\$(MAKE) -C example/feint clean" >> Makefile +echo -e "\t\$(MAKE) -C example/fenl clean" >> Makefile +echo -e "\t\$(MAKE) -C example/make_buildlink clean" >> Makefile +echo -e "\t\$(MAKE) -C example/tutorial clean" >> Makefile +fi + diff --git a/lib/kokkos/master_history.txt b/lib/kokkos/master_history.txt index ee5238be8c..f6eb95292c 100644 --- a/lib/kokkos/master_history.txt +++ b/lib/kokkos/master_history.txt @@ -18,3 +18,4 @@ tag: 2.7.24 date: 11:04:2018 master: d3a94192 develop: 7a06fc81 tag: 2.8.00 date: 02:05:2019 master: 34931a36 develop: d1659d1d tag: 2.9.00 date: 06:24:2019 master: 5d6e7fb3 develop: 4c6cb80a tag: 3.0.00 date: 01:31:2020 master: 2983b80d release-candidate-3.0: fdc904a6 +tag: 3.1.00 date: 04:14:2020 master: cd1b1d0a develop: fd90af43 -- GitLab From 19ac94e9a38d9625a352cb30616221022076544a Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 16 Apr 2020 13:15:41 -0400 Subject: [PATCH 323/717] remove @timmattox as a code owner of USER-DPD --- .github/CODEOWNERS | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index a2ab1d4407..d44b3dfb4d 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -22,7 +22,6 @@ src/SPIN/* @julient31 src/USER-CGDNA/* @ohenrich src/USER-CGSDK/* @akohlmey src/USER-COLVARS/* @giacomofiorin -src/USER-DPD/* @timattox src/USER-INTEL/* @wmbrownintel src/USER-MANIFOLD/* @Pakketeretet2 src/USER-MEAMC/* @martok -- GitLab From f8f69996eb81a6e0e63e629091fd6254e83a9634 Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Thu, 16 Apr 2020 11:49:03 -0600 Subject: [PATCH 324/717] Remove obsolete note --- doc/src/Speed_kokkos.rst | 6 ------ 1 file changed, 6 deletions(-) diff --git a/doc/src/Speed_kokkos.rst b/doc/src/Speed_kokkos.rst index ab8444b845..1e88a2fc69 100644 --- a/doc/src/Speed_kokkos.rst +++ b/doc/src/Speed_kokkos.rst @@ -29,12 +29,6 @@ task). These are Serial (MPI-only for CPUs and Intel Phi), OpenMP GPUs). You choose the mode at build time to produce an executable compatible with specific hardware. -.. note:: - - Kokkos support within LAMMPS must be built with a C++11 compatible - compiler. This means GCC version 4.7.2 or later, Intel 14.0.4 or later, or - Clang 3.5.2 or later is required. - .. note:: To build with Kokkos support for NVIDIA GPUs, NVIDIA CUDA -- GitLab From 348118317c111b5541255e21f334392a82b5c77d Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Thu, 16 Apr 2020 12:36:43 -0600 Subject: [PATCH 325/717] Update Kokkos docs --- doc/src/Speed_kokkos.rst | 28 +++++++--------------------- 1 file changed, 7 insertions(+), 21 deletions(-) diff --git a/doc/src/Speed_kokkos.rst b/doc/src/Speed_kokkos.rst index 1e88a2fc69..56490e8e84 100644 --- a/doc/src/Speed_kokkos.rst +++ b/doc/src/Speed_kokkos.rst @@ -9,10 +9,7 @@ different back end languages such as CUDA, OpenMP, or Pthreads. The Kokkos library also provides data abstractions to adjust (at compile time) the memory layout of data structures like 2d and 3d arrays to optimize performance on different hardware. For more information on -Kokkos, see `GitHub `_. Kokkos is -part of `Trilinos `_. The Kokkos -library was written primarily by Carter Edwards, Christian Trott, and -Dan Sunderland (all Sandia). +Kokkos, see `GitHub `_. The LAMMPS KOKKOS package contains versions of pair, fix, and atom styles that use data structures and macros provided by the Kokkos @@ -21,7 +18,7 @@ package was developed primarily by Christian Trott (Sandia) and Stan Moore (Sandia) with contributions of various styles by others, including Sikandar Mashayak (UIUC), Ray Shan (Sandia), and Dan Ibanez (Sandia). For more information on developing using Kokkos abstractions -see the Kokkos programmers' guide at /lib/kokkos/doc/Kokkos_PG.pdf. +see the Kokkos `Wiki `_. Kokkos currently provides support for 3 modes of execution (per MPI task). These are Serial (MPI-only for CPUs and Intel Phi), OpenMP @@ -251,7 +248,7 @@ one or more nodes, each with two GPUs: running on GPUs is to use "full" neighbor lists and set the Newton flag to "off" for both pairwise and bonded interactions, along with threaded communication. When running on Maxwell or Kepler GPUs, this will - typically be best. For Pascal GPUs, using "half" neighbor lists and + typically be best. For Pascal GPUs and beyond, using "half" neighbor lists and setting the Newton flag to "on" may be faster. For many pair styles, setting the neighbor binsize equal to twice the CPU default value will give speedup, which is the default when running on GPUs. Use the "-pk @@ -264,13 +261,6 @@ one or more nodes, each with two GPUs: mpirun -np 2 lmp_kokkos_cuda_openmpi -k on g 2 -sf kk -pk kokkos newton on neigh half binsize 2.8 -in in.lj # Newton on, half neighbor list, set binsize = neighbor ghost cutoff -.. note:: - - For good performance of the KOKKOS package on GPUs, you must - have Kepler generation GPUs (or later). The Kokkos library exploits - texture cache options not supported by Telsa generation GPUs (or - older). - .. note:: When using a GPU, you will achieve the best performance if your @@ -386,13 +376,12 @@ As explained on the :ref:`Build extras ` doc page, they can be set either as variables on the make command line or in Makefile.machine, or they can be specified as CMake variables. Each takes a value shown below. The default value is listed, which is set -in the lib/kokkos/Makefile.kokkos file. +in the lib/kokkos/Makefile.kokkos file. For a full listing of all options, +see lib/kokkos/Makefile.kokkos. -* KOKKOS_DEBUG, values = *yes*\ , *no*\ , default = *no* * KOKKOS_USE_TPLS, values = *hwloc*\ , *librt*\ , *experimental_memkind*, default = *none* -* KOKKOS_CXX_STANDARD, values = *c++11*\ , *c++1z*\ , default = *c++11* -* KOKKOS_OPTIONS, values = *aggressive_vectorization*, *disable_profiling*, default = *none* -* KOKKOS_CUDA_OPTIONS, values = *force_uvm*, *use_ldg*, *rdc*\ , *enable_lambda*, default = *enable_lambda* +* KOKKOS_DEBUG, values = *yes*\ , *no*\ , default = *no* +* KOKKOS_CUDA_OPTIONS, values = *force_uvm*, *use_ldg*, *rdc*\ , *enable_lambda*\ , *enable_constexpr*, default = *enable_lambda* KOKKOS_USE_TPLS=hwloc binds threads to hardware cores, so they do not migrate during a simulation. KOKKOS_USE_TPLS=hwloc should always be @@ -411,9 +400,6 @@ within LAMMPS. KOKKOS_DEBUG=yes enables printing of run-time debugging information that can be useful. It also enables runtime bounds checking on Kokkos data structures. -KOKKOS_CXX_STANDARD and KOKKOS_OPTIONS are typically not changed when -building LAMMPS. - KOKKOS_CUDA_OPTIONS are additional options for CUDA. The LAMMPS KOKKOS package must be compiled with the *enable_lambda* option when using GPUs. -- GitLab From b3c7c1f93cba39c12edbaea132c63e29bc20e77e Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 16 Apr 2020 15:13:21 -0400 Subject: [PATCH 326/717] utils.h is not used anymore --- src/USER-DPD/fix_rx.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/USER-DPD/fix_rx.cpp b/src/USER-DPD/fix_rx.cpp index 6367b32e9d..3d870cc902 100644 --- a/src/USER-DPD/fix_rx.cpp +++ b/src/USER-DPD/fix_rx.cpp @@ -31,7 +31,6 @@ #include "neigh_request.h" #include "math_special.h" #include "pair_dpd_fdt_energy.h" -#include "utils.h" #include // std::vector<> #include // std::max -- GitLab From 850bee23310f13e936d40069132c256039f993aa Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 16 Apr 2020 15:39:53 -0400 Subject: [PATCH 327/717] update KOKKOS.cmake for Kokkos 3.1. no more patch needed. --- cmake/Modules/Packages/KOKKOS.cmake | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/cmake/Modules/Packages/KOKKOS.cmake b/cmake/Modules/Packages/KOKKOS.cmake index a9a5c01a72..d3b8fd4ed0 100644 --- a/cmake/Modules/Packages/KOKKOS.cmake +++ b/cmake/Modules/Packages/KOKKOS.cmake @@ -15,12 +15,10 @@ option(EXTERNAL_KOKKOS "Build against external kokkos library" OFF) option(DOWNLOAD_KOKKOS "Download the KOKKOS library instead of using the bundled one" OFF) if(DOWNLOAD_KOKKOS) message(STATUS "KOKKOS download requested - we will build our own") - file(DOWNLOAD https://github.com/kokkos/kokkos/compare/3.0.00...stanmoore1:lammps.diff ${CMAKE_CURRENT_BINARY_DIR}/kokkos-lammps.patch) include(ExternalProject) ExternalProject_Add(kokkos_build - URL https://github.com/kokkos/kokkos/archive/3.0.00.tar.gz - URL_MD5 281c7093aa3a603276e93abdf4be23b9 - PATCH_COMMAND patch -p1 < ${CMAKE_CURRENT_BINARY_DIR}/kokkos-lammps.patch + URL https://github.com/kokkos/kokkos/archive/3.1.00.tar.gz + URL_MD5 f638a6c786f748a602b26faa0e96ebab CMAKE_ARGS -DCMAKE_INSTALL_PREFIX= ${CMAKE_REQUEST_PIC} -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DCMAKE_INSTALL_LIBDIR=lib -DCMAKE_MAKE_PROGRAM=${CMAKE_MAKE_PROGRAM} -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE} @@ -39,7 +37,7 @@ if(DOWNLOAD_KOKKOS) install(CODE "MESSAGE(FATAL_ERROR \"Installing liblammps with downloaded libraries is currently not supported.\")") endif() elseif(EXTERNAL_KOKKOS) - find_package(Kokkos 3) + find_package(Kokkos 3.1) if(NOT Kokkos_FOUND) message(FATAL_ERROR "KOKKOS library not found, help CMake to find it by setting KOKKOS_LIBRARY, or set DOWNLOAD_KOKKOS=ON to download it") endif() -- GitLab From 8c545073718077e597d06051e9670bc65bfb11ee Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 16 Apr 2020 16:32:41 -0400 Subject: [PATCH 328/717] forward Kokkos library variables from CMake configuration for LAMMPS to the downloaded Kokkos library build --- cmake/Modules/Packages/KOKKOS.cmake | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/cmake/Modules/Packages/KOKKOS.cmake b/cmake/Modules/Packages/KOKKOS.cmake index d3b8fd4ed0..3aaba0c4fd 100644 --- a/cmake/Modules/Packages/KOKKOS.cmake +++ b/cmake/Modules/Packages/KOKKOS.cmake @@ -14,14 +14,30 @@ endif() option(EXTERNAL_KOKKOS "Build against external kokkos library" OFF) option(DOWNLOAD_KOKKOS "Download the KOKKOS library instead of using the bundled one" OFF) if(DOWNLOAD_KOKKOS) + # extract Kokkos-related variables and values so we can forward them to the Kokkos library build + get_cmake_property(_VARS VARIABLES) + list(FILTER _VARS INCLUDE REGEX ^Kokkos_) + foreach(_VAR IN LISTS _VARS) + list(APPEND KOKKOS_LIB_BUILD_ARGS "-D${_VAR}=${${_VAR}}") + endforeach() message(STATUS "KOKKOS download requested - we will build our own") + list(APPEND KOKKOS_LIB_BUILD_ARGS "-DCMAKE_INSTALL_PREFIX=") + if(CMAKE_REQUEST_PIC) + list(APPEND KOKKOS_LIB_BUILD_ARGS ${CMAKE_REQUEST_PIC}) + endif() + # append other CMake variables that need to be forwarded to CMAKE_ARGS + list(APPEND KOKKOS_LIB_BUILD_ARGS "-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}") + list(APPEND KOKKOS_LIB_BUILD_ARGS "-DCMAKE_INSTALL_LIBDIR=lib") + list(APPEND KOKKOS_LIB_BUILD_ARGS "-DCMAKE_MAKE_PROGRAM=${CMAKE_MAKE_PROGRAM}") + list(APPEND KOKKOS_LIB_BUILD_ARGS "-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}") + list(APPEND KOKKOS_LIB_BUILD_ARGS "-DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}") + list(APPEND KOKKOS_LIB_BUILD_ARGS "-DCMAKE_CXX_EXTENSIONS=${CMAKE_CXX_EXTENSIONS}") + list(APPEND KOKKOS_LIB_BUILD_ARGS "-DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}") include(ExternalProject) ExternalProject_Add(kokkos_build URL https://github.com/kokkos/kokkos/archive/3.1.00.tar.gz URL_MD5 f638a6c786f748a602b26faa0e96ebab - CMAKE_ARGS -DCMAKE_INSTALL_PREFIX= ${CMAKE_REQUEST_PIC} - -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DCMAKE_INSTALL_LIBDIR=lib - -DCMAKE_MAKE_PROGRAM=${CMAKE_MAKE_PROGRAM} -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE} + CMAKE_ARGS ${KOKKOS_LIB_BUILD_ARGS} BUILD_BYPRODUCTS /lib/libkokkoscore.a ) ExternalProject_get_property(kokkos_build INSTALL_DIR) -- GitLab From 4fa0186b68b30fe819fc2f518c6c3191801054db Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 16 Apr 2020 18:17:38 -0400 Subject: [PATCH 329/717] update docs to cleanly translate --- doc/src/pair_momb.rst | 4 +- doc/src/pair_polymorphic.rst | 170 ++++++++++++++--------------------- 2 files changed, 70 insertions(+), 104 deletions(-) diff --git a/doc/src/pair_momb.rst b/doc/src/pair_momb.rst index ed9a0b98dd..99dce23bf8 100644 --- a/doc/src/pair_momb.rst +++ b/doc/src/pair_momb.rst @@ -31,7 +31,7 @@ Style *momb* computes pairwise van der Waals (vdW) and short-range interactions using the Morse potential and :ref:`(Grimme) ` method implemented in the Many-Body Metal-Organic (MOMB) force field described comprehensively in :ref:`(Fichthorn) ` and -:ref:`(Zhou) `. Grimme's method is widely used to correct for +:ref:`(Zhou) `. Grimme's method is widely used to correct for dispersion in density functional theory calculations. .. math:: @@ -76,6 +76,6 @@ Related commands **(Fichthorn)** Fichthorn, Balankura, Qi, CrystEngComm, 18(29), 5410-5417 (2016). -.. _Zhou4: +.. _Zhou5: **(Zhou)** Zhou, Saidi, Fichthorn, J Phys Chem C, 118(6), 3366-3374 (2014). diff --git a/doc/src/pair_polymorphic.rst b/doc/src/pair_polymorphic.rst index 15ac466a21..712e453cf0 100644 --- a/doc/src/pair_polymorphic.rst +++ b/doc/src/pair_polymorphic.rst @@ -1,5 +1,4 @@ - -
    .. index:: pair_style polymorphic
    +.. index:: pair_style polymorphic
     
     pair_style polymorphic command
     ==============================
    @@ -19,7 +18,7 @@ Examples
     .. code-block:: LAMMPS
     
        pair_style polymorphic
    -   pair_coeff * * FeCH_BOPI.poly Fe C H
    +   pair_coeff * * FeCH_BOP_I.poly Fe C H
        pair_coeff * * TlBr_msw.poly Tl Br
        pair_coeff * * CuTa_eam.poly Cu Ta
        pair_coeff * * GaN_tersoff.poly Ga N
    @@ -29,17 +28,13 @@ Description
     """""""""""
     
     The *polymorphic* pair style computes a 3-body free-form potential
    -(:ref:`Zhou <Zhou3>`) for the energy E of a system of atoms as
    +(:ref:`Zhou `) for the energy E of a system of atoms as
     
     .. math::
     
    -\begin{eqnarray}\nonumber
    -   \left\{\begin{array}{l}
    -   E = \frac{1}{2}\sum_{i=1}^{i=N}\sum_{j=1}^{j=N}\left[\left(1-\delta_{ij}\right)\cdot U_{IJ}\left(r_{ij}\right)-\left(1-\eta_{ij}\right)\cdot F_{IJ}\left(X_{ij}\right)\cdot V_{IJ}\left(r_{ij}\right)\right] \\
    -   X_{ij} = \sum_{k=i_1,k\neq j}^{i_N}W_{IK}\left(r_{ik}\right)\cdot G_{JIK}\left(\theta_{jik}\right)\cdot P_{JIK}\left(\Delta r_{jik}\right) \\
    -   \Delta r_{jik} = r_{ij}-\xi_{IJ}\cdot r_{ik}
    -   \end{array}\right.
    -\end{eqnarray}
    +   E & = \frac{1}{2}\sum_{i=1}^{i=N}\sum_{j=1}^{j=N}\left[\left(1-\delta_{ij}\right)\cdot U_{IJ}\left(r_{ij}\right)-\left(1-\eta_{ij}\right)\cdot F_{IJ}\left(X_{ij}\right)\cdot V_{IJ}\left(r_{ij}\right)\right] \\
    +   X_{ij} & = \sum_{k=i_1,k\neq j}^{i_N}W_{IK}\left(r_{ik}\right)\cdot G_{JIK}\left(\theta_{jik}\right)\cdot P_{JIK}\left(\Delta r_{jik}\right) \\
    +   \Delta r_{jik} & = r_{ij}-\xi_{IJ}\cdot r_{ik}
     
     where I, J, K represent species of atoms i, j, and k, :math:`i_1, ...,
     i_N` represents a list of *i*\ 's neighbors, :math:`\delta_{ij}` is a
    @@ -67,137 +62,108 @@ only depends on species I and K. Note that these six functions are all
     one dimensional, and hence can be provided in a tabular
     form. This allows users to design different potentials solely based on a
     manipulation of these functions. For instance, the potential reduces a
    -Stillinger-Weber potential (:ref:`SW <SW>`) if we set
    +Stillinger-Weber potential (:ref:`SW `) if we set
     
     .. math::
     
    -\begin{eqnarray}\nonumber
    -   \left\{\begin{array}{l}
    -   \eta_{ij} = \delta_{ij} (\eta = 2~or~\eta = 0),\xi_{IJ}=0 \\
    -   U_{IJ}\left(r\right) = A_{IJ}\cdot\epsilon_{IJ}\cdot \left(\frac{\sigma_{IJ}}{r}\right)^q\cdot \left[B_{IJ}\cdot \left(\frac{\sigma_{IJ}}{r}\right)^{p-q}-1\right]\cdot exp\left(\frac{\sigma_{IJ}}{r-a_{IJ}\cdot \sigma_{IJ}}\right) \\
    -   V_{IJ}\left(r\right) = \sqrt{\lambda_{IJ}\cdot \epsilon_{IJ}}\cdot exp\left(\frac{\gamma_{IJ}\cdot \sigma_{IJ}}{r-a_{IJ}\cdot \sigma_{IJ}}\right) \\
    -   F_{IJ}\left(X\right) = -X \\
    -   P_{JIK}\left(\Delta r\right) = P_{IK}\left(\Delta r\right) = 1 \\
    -   W_{IJ}\left(r\right) = \sqrt{\lambda_{IJ}\cdot \epsilon_{IJ}}\cdot exp\left(\frac{\gamma_{IJ}\cdot \sigma_{IJ}}{r-a_{IJ}\cdot \sigma_{IJ}}\right) \\
    -   G_{JIK}\left(\theta\right) = \left(cos\theta+\frac{1}{3}\right)^2
    -   \end{array}\right.
    -\end{eqnarray}
    +   \eta_{ij} & = \delta_{ij} (\eta = 2~or~\eta = 0),\xi_{IJ}=0 \\
    +   U_{IJ}\left(r\right) & = A_{IJ}\cdot\epsilon_{IJ}\cdot \left(\frac{\sigma_{IJ}}{r}\right)^q\cdot \left[B_{IJ}\cdot \left(\frac{\sigma_{IJ}}{r}\right)^{p-q}-1\right]\cdot exp\left(\frac{\sigma_{IJ}}{r-a_{IJ}\cdot \sigma_{IJ}}\right) \\
    +   V_{IJ}\left(r\right) & = \sqrt{\lambda_{IJ}\cdot \epsilon_{IJ}}\cdot exp\left(\frac{\gamma_{IJ}\cdot \sigma_{IJ}}{r-a_{IJ}\cdot \sigma_{IJ}}\right) \\
    +   F_{IJ}\left(X\right) & = -X \\
    +   P_{JIK}\left(\Delta r\right) & = P_{IK}\left(\Delta r\right) = 1 \\
    +   W_{IJ}\left(r\right) & = \sqrt{\lambda_{IJ}\cdot \epsilon_{IJ}}\cdot exp\left(\frac{\gamma_{IJ}\cdot \sigma_{IJ}}{r-a_{IJ}\cdot \sigma_{IJ}}\right) \\
    +   G_{JIK}\left(\theta\right) & = \left(cos\theta+\frac{1}{3}\right)^2
     
    -The potential reduces to a Tersoff potential (:ref:`Tersoff <Tersoff>
    -` or :ref:`Albe <poly-Albe>`) if we set
    +The potential reduces to a Tersoff potential (:ref:`Tersoff `
    +or :ref:`Albe `) if we set
     
     .. math::
     
    -\begin{eqnarray}\nonumber
    -   \left\{\begin{array}{l}
    -   \eta_{ij} = \delta_{ij} (\eta = 2~or~\eta = 0),\xi_{IJ}=1 \\
    -   U_{IJ}\left(r\right) = \frac{D_{e,IJ}}{S_{IJ}-1}\cdot exp\left[-\beta_{IJ}\sqrt{2S_{IJ}}\left(r-r_{e,IJ}\right)\right]\cdot f_{c,IJ}\left(r\right) \\
    -   V_{IJ}\left(r\right) = \frac{S_{IJ}\cdot D_{e,IJ}}{S_{IJ}-1}\cdot exp\left[-\beta_{IJ}\sqrt{\frac{2}{S_{IJ}}}\left(r-r_{e,IJ}\right)\right]\cdot f_{c,IJ}\left(r\right) \\
    -   F_{IJ}\left(X\right) = \left(1+X\right)^{-\frac{1}{2}} \\
    -   P_{JIK}\left(\Delta r\right) = P_{IK}\left(\Delta r\right) = exp\left(2\mu_{IK}\cdot \Delta r\right) \\
    -   W_{IJ}\left(r\right) = f_{c,IJ}\left(r\right) \\
    -   G_{JIK}\left(\theta\right) = \gamma_{IK}\left[1+\frac{c_{IK}^2}{d_{IK}^2}-\frac{c_{IK}^2}{d_{IK}^2+\left(h_{IK}+cos\theta\right)^2}\right]
    -   \end{array}\right.
    -\end{eqnarray}
    +   \eta_{ij} & = \delta_{ij} (\eta = 2~or~\eta = 0),\xi_{IJ}=1 \\
    +   U_{IJ}\left(r\right) & = \frac{D_{e,IJ}}{S_{IJ}-1}\cdot exp\left[-\beta_{IJ}\sqrt{2S_{IJ}}\left(r-r_{e,IJ}\right)\right]\cdot f_{c,IJ}\left(r\right) \\
    +   V_{IJ}\left(r\right) & = \frac{S_{IJ}\cdot D_{e,IJ}}{S_{IJ}-1}\cdot exp\left[-\beta_{IJ}\sqrt{\frac{2}{S_{IJ}}}\left(r-r_{e,IJ}\right)\right]\cdot f_{c,IJ}\left(r\right) \\
    +   F_{IJ}\left(X\right) & = \left(1+X\right)^{-\frac{1}{2}} \\
    +   P_{JIK}\left(\Delta r\right) & = P_{IK}\left(\Delta r\right) = exp\left(2\mu_{IK}\cdot \Delta r\right) \\
    +   W_{IJ}\left(r\right) & = f_{c,IJ}\left(r\right) \\
    +   G_{JIK}\left(\theta\right) & = \gamma_{IK}\left[1+\frac{c_{IK}^2}{d_{IK}^2}-\frac{c_{IK}^2}{d_{IK}^2+\left(h_{IK}+cos\theta\right)^2}\right]
     
     where
     
     .. math::
     
    -\begin{eqnarray}\nonumber
        f_{c,IJ}\left(r\right)=\left\{\begin{array}{l}
        1, r\leq R_{IJ}-D_{IJ} \\
        \frac{1}{2}+\frac{1}{2}cos\left[\frac{\pi\left(r+D_{IJ}-R_{IJ}\right)}{2D_{IJ}}\right], R_{IJ}-D_{IJ} < r < R_{IJ}+D_{IJ} \\
        0, r \geq R_{IJ}+D_{IJ}
        \end{array}\right.
    -\end{eqnarray}
     
    -The potential reduces to a modified Stillinger-Weber potential (:ref:`Zhou <Zhou3>`) if we set
    +The potential reduces to a modified Stillinger-Weber potential (:ref:`Zhou `) if we set
     
     .. math::
     
    -\begin{eqnarray}\nonumber
    -   \left\{\begin{array}{l}
    -   \eta_{ij} = \delta_{ij} (\eta = 2~or~\eta = 0),\xi_{IJ}=0 \\
    -   U_{IJ}\left(r\right) = \varphi_{R,IJ}\left(r\right)-\varphi_{A,IJ}\left(r\right) \\
    -   V_{IJ}\left(r\right) = u_{IJ}\left(r\right) \\
    -   F_{IJ}\left(X\right) = -X \\
    -   P_{JIK}\left(\Delta r\right) = P_{IK}\left(\Delta r\right) = 1 \\
    -   W_{IJ}\left(r\right) = u_{IJ}\left(r\right) \\
    -   G_{JIK}\left(\theta\right) = g_{JIK}\left(cos\theta\right)
    -   \end{array}\right.
    -\end{eqnarray}
    -
    +   \eta_{ij} & = \delta_{ij} (\eta = 2~or~\eta = 0),\xi_{IJ}=0 \\
    +   U_{IJ}\left(r\right) & = \varphi_{R,IJ}\left(r\right)-\varphi_{A,IJ}\left(r\right) \\
    +   V_{IJ}\left(r\right) & = u_{IJ}\left(r\right) \\
    +   F_{IJ}\left(X\right) & = -X \\
    +   P_{JIK}\left(\Delta r\right) & = P_{IK}\left(\Delta r\right) = 1 \\
    +   W_{IJ}\left(r\right) & = u_{IJ}\left(r\right) \\
    +   G_{JIK}\left(\theta\right) & = g_{JIK}\left(cos\theta\right)
     
    -The potential reduces to a Rockett-Tersoff potential (:ref:`Wang <Wang3>`) if we set
    +The potential reduces to a Rockett-Tersoff potential (:ref:`Wang `) if we set
     
     .. math::
     
    -\begin{eqnarray}\nonumber
    -   \left\{ \begin{array}{l}
    -   \eta_{ij} = \delta_{ij} (\eta = 2~or~\eta = 0),\xi_{IJ}=1 \\
    -   U_{IJ}\left(r\right) = A_{IJ}exp\left(-\lambda_{1,IJ}\cdot r\right)f_{c,IJ}\left(r\right)f_{ca,IJ}\left(r\right) \\
    -   V_{IJ}\left(r\right) = \left\{\begin{array}{l}B_{IJ}exp\left(-\lambda_{2,IJ}\cdot r\right)f_{c,IJ}\left(r\right)+ \\ A_{IJ}exp\left(-\lambda_{1,IJ}\cdot r\right)f_{c,IJ}\left(r\right) \left[1-f_{ca,IJ}\left(r\right)\right]\end{array} \right\} \\
    -   F_{IJ}\left(X\right) = \left[1+\left(\beta_{IJ}X\right)^{n_{IJ}}\right]^{-\frac{1}{2n_{IJ}}} \\
    -   P_{JIK}\left(\Delta r\right) = P_{IK}\left(\Delta r\right) = exp\left(\lambda_{3,IK}\cdot \Delta r^3\right) \\
    -   W_{IJ}\left(r\right) = f_{c,IJ}\left(r\right) \\
    -   G_{JIK}\left(\theta\right) = 1+\frac{c_{IK}^2}{d_{IK}^2}-\frac{c_{IK}^2}{d_{IK}^2+\left(h_{IK}+cos\theta\right)^2}
    -   \end{array}\right.
    -\end{eqnarray}
    +   \eta_{ij} & = \delta_{ij} (\eta = 2~or~\eta = 0),\xi_{IJ}=1 \\
    +   U_{IJ}\left(r\right) & = A_{IJ}exp\left(-\lambda_{1,IJ}\cdot r\right)f_{c,IJ}\left(r\right)f_{ca,IJ}\left(r\right) \\
    +   V_{IJ}\left(r\right) & = \left\{\begin{array}{l}B_{IJ}exp\left(-\lambda_{2,IJ}\cdot r\right)f_{c,IJ}\left(r\right)+ \\ A_{IJ}exp\left(-\lambda_{1,IJ}\cdot r\right)f_{c,IJ}\left(r\right) \left[1-f_{ca,IJ}\left(r\right)\right]\end{array} \right\} \\
    +   F_{IJ}\left(X\right) & = \left[1+\left(\beta_{IJ}X\right)^{n_{IJ}}\right]^{-\frac{1}{2n_{IJ}}} \\
    +   P_{JIK}\left(\Delta r\right) & = P_{IK}\left(\Delta r\right) = exp\left(\lambda_{3,IK}\cdot \Delta r^3\right) \\
    +   W_{IJ}\left(r\right) & = f_{c,IJ}\left(r\right) \\
    +   G_{JIK}\left(\theta\right) & = 1+\frac{c_{IK}^2}{d_{IK}^2}-\frac{c_{IK}^2}{d_{IK}^2+\left(h_{IK}+cos\theta\right)^2}
     
     where :math:`f_{ca,IJ}(r)` is similar to the :math:`f_{c,IJ}(r)` defined above:  
     
     .. math::
     
    -\begin{eqnarray}\nonumber
        f_{ca,IJ}\left(r\right)=\left\{\begin{array}{l}
        1, r\leq R_{a,IJ}-D_{a,IJ} \\
        \frac{1}{2}+\frac{1}{2}cos\left[\frac{\pi\left(r+D_{a,IJ}-R_{a,IJ}\right)}{2D_{a,IJ}}\right], R_{a,IJ}-D_{a,IJ} < r < R_{a,IJ}+D_{a,IJ} \\
        0, r \geq R_{a,IJ}+D_{a,IJ}
        \end{array}\right.
    -\end{eqnarray}
     
    -The potential becomes embedded atom method (:ref:`Daw <poly-Daw>`) if we set
    +The potential becomes embedded atom method (:ref:`Daw `) if we set
     
     .. math::
     
    -\begin{eqnarray}\nonumber
    -   \left\{\begin{array}{l}
    -   \eta_{ij} = 1-\delta_{ij} (\eta = 1),\xi_{IJ}=0 \\
    -   U_{IJ}\left(r\right) = \phi_{IJ}\left(r\right) \\
    -   V_{IJ}\left(r\right) = 1 \\
    -   F_{II}\left(X\right) = -2F_I\left(X\right) \\
    -   P_{JIK}\left(\Delta r\right) = P_{IK}\left(\Delta r\right) = 1 \\
    -   W_{IJ}\left(r\right) = f_{J}\left(r\right) \\
    -   G_{JIK}\left(\theta\right) = 1
    -   \end{array}\right.
    -\end{eqnarray}
    +   \eta_{ij} & = 1-\delta_{ij} (\eta = 1),\xi_{IJ}=0 \\
    +   U_{IJ}\left(r\right) & = \phi_{IJ}\left(r\right) \\
    +   V_{IJ}\left(r\right) & = 1 \\
    +   F_{II}\left(X\right) & = -2F_I\left(X\right) \\
    +   P_{JIK}\left(\Delta r\right) & = P_{IK}\left(\Delta r\right) = 1 \\
    +   W_{IJ}\left(r\right) & = f_{J}\left(r\right) \\
    +   G_{JIK}\left(\theta\right) & = 1
     
     In the embedded atom method case, :math:`\phi_{IJ}(r)` is the pair
     energy, :math:`F_I(X)` is the embedding energy, *X* is the local
     electron density, and :math:`f_J(r)` is the atomic electron density function.
     
     The potential reduces to another type of Tersoff potential 
    -(:ref:`Zhou <Zhou4>`) if we set
    +(:ref:`Zhou `) if we set
     
     .. math::
     
    -\begin{eqnarray}\nonumber
    -   \left\{\begin{array}{l}
    -   \eta_{ij} = \delta_{ij} (\eta = 3),\xi_{IJ}=1 \\
    -   U_{IJ}\left(r\right) = \frac{D_{e,IJ}}{S_{IJ}-1}\cdot exp\left[-\beta_{IJ}\sqrt{2S_{IJ}}\left(r-r_{e,IJ}\right)\right]\cdot f_{c,IJ}\left(r\right) \cdot T_{IJ}\left(r\right)+V_{ZBL,IJ}\left(r\right)\left[1-T_{IJ}\left(r\right)\right] \\
    -   V_{IJ}\left(r\right) = \frac{S_{IJ}\cdot D_{e,IJ}}{S_{IJ}-1}\cdot exp\left[-\beta_{IJ}\sqrt{\frac{2}{S_{IJ}}}\left(r-r_{e,IJ}\right)\right]\cdot f_{c,IJ}\left(r\right) \cdot T_{IJ}\left(r\right) \\
    -   F_{IJ}\left(X\right) = \left(1+X\right)^{-\frac{1}{2}} \\
    -   P_{JIK}\left(\Delta r\right) = \omega_{JIK} \cdot exp\left(\alpha_{JIK}\cdot \Delta r\right) \\
    -   W_{IJ}\left(r\right) = f_{c,IJ}\left(r\right) \\
    -   G_{JIK}\left(\theta\right) = \gamma_{JIK}\left[1+\frac{c_{JIK}^2}{d_{JIK}^2}-\frac{c_{JIK}^2}{d_{JIK}^2+\left(h_{JIK}+cos\theta\right)^2}\right] \\
    -   T_{IJ}\left(r\right) = \frac{1}{1+exp\left[-b_{f,IJ}\left(r-r_{f,IJ}\right)\right]} \\
    -   V_{ZBL,IJ}\left(r\right) = 14.4 \cdot \frac{Z_I \cdot Z_J}{r}\sum_{k=1}^{4}\mu_k \cdot exp\left[-\nu_k \left(Z_I^{0.23}+Z_J^{0.23}\right) r\right]
    -   \end{array}\right.
    -\end{eqnarray}
    +   \eta_{ij} & = \delta_{ij} (\eta = 3),\xi_{IJ}=1 \\
    +   U_{IJ}\left(r\right) & = \frac{D_{e,IJ}}{S_{IJ}-1}\cdot exp\left[-\beta_{IJ}\sqrt{2S_{IJ}}\left(r-r_{e,IJ}\right)\right]\cdot f_{c,IJ}\left(r\right) \cdot T_{IJ}\left(r\right)+V_{ZBL,IJ}\left(r\right)\left[1-T_{IJ}\left(r\right)\right] \\
    +   V_{IJ}\left(r\right) & = \frac{S_{IJ}\cdot D_{e,IJ}}{S_{IJ}-1}\cdot exp\left[-\beta_{IJ}\sqrt{\frac{2}{S_{IJ}}}\left(r-r_{e,IJ}\right)\right]\cdot f_{c,IJ}\left(r\right) \cdot T_{IJ}\left(r\right) \\
    +   F_{IJ}\left(X\right) & = \left(1+X\right)^{-\frac{1}{2}} \\
    +   P_{JIK}\left(\Delta r\right) & = \omega_{JIK} \cdot exp\left(\alpha_{JIK}\cdot \Delta r\right) \\
    +   W_{IJ}\left(r\right) & = f_{c,IJ}\left(r\right) \\
    +   G_{JIK}\left(\theta\right) & = \gamma_{JIK}\left[1+\frac{c_{JIK}^2}{d_{JIK}^2}-\frac{c_{JIK}^2}{d_{JIK}^2+\left(h_{JIK}+cos\theta\right)^2}\right] \\
    +   T_{IJ}\left(r\right) & = \frac{1}{1+exp\left[-b_{f,IJ}\left(r-r_{f,IJ}\right)\right]} \\
    +   V_{ZBL,IJ}\left(r\right) & = 14.4 \cdot \frac{Z_I \cdot Z_J}{r}\sum_{k=1}^{4}\mu_k \cdot exp\left[-\nu_k \left(Z_I^{0.23}+Z_J^{0.23}\right) r\right]
     
     where :math:`f_{c,IJ}(r)` is the as defined above. This Tersoff potential
    -differs from the one above because the :math:`\P_{JIK}(\Delta r)` function
    +differs from the one above because the :math:`P_{JIK}(\Delta r)` function
     is now dependent on all three species I, J, and K. 
     
     If the tabulated functions are created using the parameters of sw,
    @@ -251,7 +217,7 @@ and are ignored by LAMMPS. The next line lists two numbers:
     
     .. parsed-literal::
     
    -   ntypes :math:`\eta`
    +   ntypes eta
     
     Here ntypes represent total number of species defined in the potential
     file, :math:`\eta = 1` reduces to embedded atom method, :math:`\eta = 3`
    @@ -291,10 +257,10 @@ The next ntypes\*(ntypes+1)/2 lines contain two numbers:
     
     .. parsed-literal::
     
    -   cut :math:`xi`(1)
    -   cut :math:`xi`(2)
    +   cut xi(1)
    +   cut xi(2)
        ...
    -   cut :math:`xi`(ntypes\*(ntypes+1)/2)
    +   cut xi(ntypes\*(ntypes+1)/2)
     
     Here cut means the cutoff distance of the pair functions, :math:`\xi` is
     the same as defined in the potential functions above. The
    @@ -323,10 +289,10 @@ For each of the F functions, nx values are listed.
     
     **Mixing, shift, table tail correction, restart**\ :
     
    -This pair styles does not support the :doc:`pair_modify <pair_modify>`
    +This pair styles does not support the :doc:`pair_modify `
     shift, table, and tail options.
     
    -This pair style does not write their information to :doc:`binary restart files <restart>`, since it is stored in potential files. Thus, you
    +This pair style does not write their information to :doc:`binary restart files `, since it is stored in potential files. Thus, you
     need to re-specify the pair_style and pair_coeff commands in an input
     script that reads a restart file.
     
    @@ -340,20 +306,20 @@ input script. If using read_data, atomic masses must be defined in the
     atomic structure data file.
     
     This pair style is part of the MANYBODY package. It is only enabled if
    -LAMMPS was built with that package. See the :doc:`Build package <Build_package>` doc page for more info.
    +LAMMPS was built with that package. See the :doc:`Build package ` doc page for more info.
     
    -This pair potential requires the :doc:`newtion <newton>` setting to be
    +This pair potential requires the :doc:`newtion ` setting to be
     "on" for pair interactions.
     
     The potential files provided with LAMMPS (see the potentials
    -directory) are parameterized for metal :doc:`units <units>`. You can use
    +directory) are parameterized for metal :doc:`units `. You can use
     any LAMMPS units, but you would need to create your own potential
     files.
     
     Related commands
     """"""""""""""""
     
    -:doc:`pair_coeff <pair_coeff>`
    +:doc:`pair_coeff `
     
     ----------
     
    -- 
    GitLab
    
    
    From 42a59921f96d1e3a7fbb39e0cc10b830488e5761 Mon Sep 17 00:00:00 2001
    From: Axel Kohlmeyer 
    Date: Thu, 16 Apr 2020 19:04:26 -0400
    Subject: [PATCH 330/717] fix spelling issues
    
    ---
     doc/src/pair_polymorphic.rst                | 2 +-
     doc/utils/sphinx-config/false_positives.txt | 3 +++
     2 files changed, 4 insertions(+), 1 deletion(-)
    
    diff --git a/doc/src/pair_polymorphic.rst b/doc/src/pair_polymorphic.rst
    index 712e453cf0..c71200d79d 100644
    --- a/doc/src/pair_polymorphic.rst
    +++ b/doc/src/pair_polymorphic.rst
    @@ -221,7 +221,7 @@ and are ignored by LAMMPS. The next line lists two numbers:
     
     Here ntypes represent total number of species defined in the potential
     file, :math:`\eta = 1` reduces to embedded atom method, :math:`\eta = 3`
    -assumes three spcies dependent :math:`P_{JIK}(\Delta r)` function, and
    +assumes three species dependent :math:`P_{JIK}(\Delta r)` function, and
     all other :math:`\eta` assumes two species dependent
     :math:`P_{JK}(\Delta r)` function. The number ntypes must equal the total
     number of different species defined in the pair_coeff command. The next
    diff --git a/doc/utils/sphinx-config/false_positives.txt b/doc/utils/sphinx-config/false_positives.txt
    index c19349f3e6..65ad1ee7e0 100644
    --- a/doc/utils/sphinx-config/false_positives.txt
    +++ b/doc/utils/sphinx-config/false_positives.txt
    @@ -1663,6 +1663,7 @@ manybody
     MANYBODY
     Maras
     Marchetti
    +Marchi
     Mariella
     Marrink
     Marroquin
    @@ -2442,6 +2443,7 @@ Ravelo
     rc
     Rc
     Rcm
    +rcmax
     Rcmx
     Rcmy
     Rcut
    @@ -2560,6 +2562,7 @@ Rockett
     Rodrigues
     Rohart
     Ronchetti
    +Ronevich
     Rosati
     Rosenberger
     Rossky
    -- 
    GitLab
    
    
    From ba66f05a04bcf36904a476603ec4a2b777609887 Mon Sep 17 00:00:00 2001
    From: Axel Kohlmeyer 
    Date: Thu, 16 Apr 2020 19:14:42 -0400
    Subject: [PATCH 331/717] some reformatting and minor cleanup of the
     documentation
    
    ---
     doc/src/pair_polymorphic.rst | 92 ++++++++++++++++++++----------------
     1 file changed, 50 insertions(+), 42 deletions(-)
    
    diff --git a/doc/src/pair_polymorphic.rst b/doc/src/pair_polymorphic.rst
    index c71200d79d..ce62ed3062 100644
    --- a/doc/src/pair_polymorphic.rst
    +++ b/doc/src/pair_polymorphic.rst
    @@ -44,25 +44,25 @@ constant that can be set either to :math:`\eta_{ij} = \delta_{ij}` or
     :math:`\eta_{ij} = 1 - \delta_{ij}` depending on the potential type,
     :math:`U_{IJ}(r_{ij})`, :math:`V_{IJ}(r_{ij})`, :math:`W_{IK}(r_{ik})`
     are pair functions, :math:`G_{JIK}(\cos\theta_{jik})` is an angular
    -function, :math:`P_{JIK}(\Delta r_{jik})` is a function of atomic spacing
    -differential :math:`\Delta r_{jik} = r_{ij} - \xi_{IJ} \cdot r_{ik}`
    -with :math:`\xi_{IJ}` being a pair-dependent parameter, and
    +function, :math:`P_{JIK}(\Delta r_{jik})` is a function of atomic
    +spacing differential :math:`\Delta r_{jik} = r_{ij} - \xi_{IJ} \cdot
    +r_{ik}` with :math:`\xi_{IJ}` being a pair-dependent parameter, and
     :math:`F_{IJ}(X_{ij})` is a function of the local environment variable
     :math:`X_{ij}`. This generic potential is fully defined once the
     constants :math:`\eta_{ij}` and :math:`\xi_{IJ}`, and the six functions
     :math:`U_{IJ}(r_{ij})`, :math:`V_{IJ}(r_{ij})`, :math:`W_{IK}(r_{ik})`,
     :math:`G_{JIK}(\cos\theta_{jik})`, :math:`P_{JIK}(\Delta r_{jik})`, and
    -:math:`F_{IJ}(X_{ij})` are given. Here LAMMPS uses a global
    -parameter :math:`\eta` to represent :math:`\eta_{ij}`. When
    -:math:`\eta = 1`, :math:`\eta_{ij} = 1 - \delta_{ij}`, otherwise
    -:math:`\eta_{ij} = \delta_{ij}`. Additionally, :math:`\eta = 3`
    -indicates that the function :math:`P_{JIK}(\Delta r)` depends on
    -species I, J and K, otherwise :math:`P_{JIK}(\Delta r) = P_{IK}(\Delta r)` 
    -only depends on species I and K. Note that these six functions are all
    -one dimensional, and hence can be provided in a tabular
    -form. This allows users to design different potentials solely based on a
    -manipulation of these functions. For instance, the potential reduces a
    -Stillinger-Weber potential (:ref:`SW `) if we set
    +:math:`F_{IJ}(X_{ij})` are given. Here LAMMPS uses a global parameter
    +:math:`\eta` to represent :math:`\eta_{ij}`. When :math:`\eta = 1`,
    +:math:`\eta_{ij} = 1 - \delta_{ij}`, otherwise :math:`\eta_{ij} =
    +\delta_{ij}`. Additionally, :math:`\eta = 3` indicates that the function
    +:math:`P_{JIK}(\Delta r)` depends on species I, J and K, otherwise
    +:math:`P_{JIK}(\Delta r) = P_{IK}(\Delta r)` only depends on species I
    +and K. Note that these six functions are all one dimensional, and hence
    +can be provided in a tabular form. This allows users to design different
    +potentials solely based on a manipulation of these functions. For
    +instance, the potential reduces to a Stillinger-Weber potential
    +(:ref:`SW `) if we set
     
     .. math::
     
    @@ -97,7 +97,8 @@ where
        0, r \geq R_{IJ}+D_{IJ}
        \end{array}\right.
     
    -The potential reduces to a modified Stillinger-Weber potential (:ref:`Zhou `) if we set
    +The potential reduces to a modified Stillinger-Weber potential
    +(:ref:`Zhou `) if we set
     
     .. math::
     
    @@ -109,7 +110,8 @@ The potential reduces to a modified Stillinger-Weber potential (:ref:`Zhou `) if we set
    +The potential reduces to a Rockett-Tersoff potential (:ref:`Wang
    +`) if we set
     
     .. math::
     
    @@ -121,7 +123,8 @@ The potential reduces to a Rockett-Tersoff potential (:ref:`Wang `) if we
        W_{IJ}\left(r\right) & = f_{c,IJ}\left(r\right) \\
        G_{JIK}\left(\theta\right) & = 1+\frac{c_{IK}^2}{d_{IK}^2}-\frac{c_{IK}^2}{d_{IK}^2+\left(h_{IK}+cos\theta\right)^2}
     
    -where :math:`f_{ca,IJ}(r)` is similar to the :math:`f_{c,IJ}(r)` defined above:  
    +where :math:`f_{ca,IJ}(r)` is similar to the :math:`f_{c,IJ}(r)` defined
    +above:
     
     .. math::
     
    @@ -131,7 +134,8 @@ where :math:`f_{ca,IJ}(r)` is similar to the :math:`f_{c,IJ}(r)` defined above:
        0, r \geq R_{a,IJ}+D_{a,IJ}
        \end{array}\right.
     
    -The potential becomes embedded atom method (:ref:`Daw `) if we set
    +The potential becomes the embedded atom method (:ref:`Daw `)
    +if we set
     
     .. math::
     
    @@ -145,10 +149,11 @@ The potential becomes embedded atom method (:ref:`Daw `) if we set
     
     In the embedded atom method case, :math:`\phi_{IJ}(r)` is the pair
     energy, :math:`F_I(X)` is the embedding energy, *X* is the local
    -electron density, and :math:`f_J(r)` is the atomic electron density function.
    +electron density, and :math:`f_J(r)` is the atomic electron density
    +function.
     
    -The potential reduces to another type of Tersoff potential 
    -(:ref:`Zhou `) if we set
    +The potential reduces to another type of Tersoff potential (:ref:`Zhou
    +`) if we set
     
     .. math::
     
    @@ -162,21 +167,24 @@ The potential reduces to another type of Tersoff potential
        T_{IJ}\left(r\right) & = \frac{1}{1+exp\left[-b_{f,IJ}\left(r-r_{f,IJ}\right)\right]} \\
        V_{ZBL,IJ}\left(r\right) & = 14.4 \cdot \frac{Z_I \cdot Z_J}{r}\sum_{k=1}^{4}\mu_k \cdot exp\left[-\nu_k \left(Z_I^{0.23}+Z_J^{0.23}\right) r\right]
     
    -where :math:`f_{c,IJ}(r)` is the as defined above. This Tersoff potential
    -differs from the one above because the :math:`P_{JIK}(\Delta r)` function
    -is now dependent on all three species I, J, and K. 
    -
    -If the tabulated functions are created using the parameters of sw,
    -tersoff, and eam potentials, the polymorphic pair style will produce
    -the same global properties (energies and stresses) and the same forces
    -as the sw, tersoff, and eam pair styles. The polymorphic pair style
    -also produces the same atom properties (energies and stresses) as the
    -corresponding tersoff and eam pair styles. However, due to a different
    -partition of global properties to atom properties, the polymorphic
    -pair style will produce different atom properties (energies and
    -stresses) as the sw pair style. This does not mean that polymorphic
    -pair style is different from the sw pair style. It just means that the
    -definitions of the atom energies and atom stresses are different.
    +where :math:`f_{c,IJ}(r)` is the as defined above. This Tersoff
    +potential differs from the one above because the :math:`P_{JIK}(\Delta
    +r)` function is now dependent on all three species I, J, and K.
    +
    +If the tabulated functions are created using the parameters of
    +Stillinger-Weber, Tersoff, and EAM potentials, the polymorphic pair
    +style will produce the same global properties (energies and stresses)
    +and the same forces as the :doc:`sw `, :doc:`tersoff
    +`, and :doc:`eam ` pair styles. The polymorphic
    +pair style also produces the same per-atom properties (energies and
    +stresses) as the corresponding :doc:`tersoff ` and
    +:doc:`eam ` pair styles. However, due to a different
    +partitioning of global properties to per-atom properties, the
    +polymorphic pair style will produce different per-atom properties
    +(energies and stresses) as the :doc:`sw ` pair style. This does
    +not mean that polymorphic pair style is different from the sw pair
    +style. It just means that the definitions of the atom energies and atom
    +stresses are different.
     
     Only a single pair_coeff command is used with the polymorphic pair
     style which specifies an potential file for all needed elements.
    @@ -201,14 +209,14 @@ would use the following pair_coeff command:
     
        pair_coeff * * GaN_tersoff.poly Ga Ga Ga N
     
    -The 1st 2 arguments must be \* \* so as to span all LAMMPS atom
    +The first two arguments must be \* \* to span all pairs of LAMMPS atom
     types. The first three Ga arguments map LAMMPS atom types 1,2,3 to the
     Ga element in the polymorphic file. The final N argument maps LAMMPS
    -atom type 4 to the N element in the polymorphic file. If a mapping
    -value is specified as NULL, the mapping is not performed. This can be
    -used when an polymorphic potential is used as part of the hybrid pair
    -style. The NULL values are placeholders for atom types that will be
    -used with other potentials.
    +atom type 4 to the N element in the polymorphic file. If a mapping value
    +is specified as NULL, the mapping is not performed. This can be used
    +when an polymorphic potential is used as part of the hybrid pair
    +style. The NULL values are placeholders for atom types that will be used
    +with other potentials.
     
     Potential files in the potentials directory of the LAMMPS distribution
     have a ".poly" suffix. At the beginning of the files, an unlimited
    -- 
    GitLab
    
    
    From 822c396e3ac8b497cfc51c4d7315ef63d97f6a2f Mon Sep 17 00:00:00 2001
    From: Stan Moore 
    Date: Fri, 17 Apr 2020 11:30:43 -0600
    Subject: [PATCH 332/717] Work around Kokkos issue
    
    ---
     src/KOKKOS/npair_kokkos.h | 4 ++--
     1 file changed, 2 insertions(+), 2 deletions(-)
    
    diff --git a/src/KOKKOS/npair_kokkos.h b/src/KOKKOS/npair_kokkos.h
    index 7650bf3350..c02c174b57 100644
    --- a/src/KOKKOS/npair_kokkos.h
    +++ b/src/KOKKOS/npair_kokkos.h
    @@ -395,7 +395,7 @@ struct NPairKokkosBuildFunctor {
       void operator() (typename Kokkos::TeamPolicy::member_type dev) const {
         c.template build_ItemCuda(dev);
       }
    -  size_t shmem_size(const int team_size) const { (void) team_size; return sharedsize; }
    +  size_t team_shmem_size(const int team_size) const { (void) team_size; return sharedsize; }
     #endif
     };
     
    @@ -455,7 +455,7 @@ struct NPairKokkosBuildFunctorSize {
       void operator() (typename Kokkos::TeamPolicy::member_type dev) const {
         c.template build_ItemSizeCuda(dev);
       }
    -  size_t shmem_size(const int team_size) const { (void) team_size; return sharedsize; }
    +  size_t team_shmem_size(const int team_size) const { (void) team_size; return sharedsize; }
     #endif
     };
     
    -- 
    GitLab
    
    
    From 1599d984259a59c9906624724fb79d2782ea4312 Mon Sep 17 00:00:00 2001
    From: Trung Nguyen 
    Date: Fri, 17 Apr 2020 13:33:47 -0500
    Subject: [PATCH 333/717] Fixed the doc page for fix wall/body/polyhedron
    
    ---
     doc/src/fix_wall_body_polyhedron.rst | 13 +++++--------
     1 file changed, 5 insertions(+), 8 deletions(-)
    
    diff --git a/doc/src/fix_wall_body_polyhedron.rst b/doc/src/fix_wall_body_polyhedron.rst
    index 4b01234f0f..35be8e9259 100644
    --- a/doc/src/fix_wall_body_polyhedron.rst
    +++ b/doc/src/fix_wall_body_polyhedron.rst
    @@ -15,15 +15,14 @@ Syntax
     * k_n = normal repulsion strength (force/distance units or pressure units - see discussion below)
     * c_n = normal damping coefficient (force/distance units or pressure units - see discussion below)
     * c_t = tangential damping coefficient (force/distance units or pressure units - see discussion below)
    -* wallstyle = *xplane* or *yplane* or *zplane* or *zcylinder*
    +* wallstyle = *xplane* or *yplane* or *zplane*
     * args = list of arguments for a particular style
     
       .. parsed-literal::
     
    -       *xplane* or *yplane* args = lo hi
    +       *xplane* or *yplane* or *zplane* args = lo hi
              lo,hi = position of lower and upper plane (distance units), either can be NULL)
    -       *zcylinder* args = radius
    -         radius = cylinder radius (distance units)
    +
     
     * zero or more keyword/value pairs may be appended to args
     * keyword = *wiggle*
    @@ -60,8 +59,7 @@ those specified with the :doc:`pair_style body/rounded/polyhedron 
    Date: Sat, 18 Apr 2020 10:09:30 -0400
    Subject: [PATCH 334/717] small corrections/updates for the polymorphic pair
     style docs
    
    ---
     doc/src/pair_polymorphic.rst | 140 +++++++++++++++++------------------
     1 file changed, 70 insertions(+), 70 deletions(-)
    
    diff --git a/doc/src/pair_polymorphic.rst b/doc/src/pair_polymorphic.rst
    index ce62ed3062..e6117c5c11 100644
    --- a/doc/src/pair_polymorphic.rst
    +++ b/doc/src/pair_polymorphic.rst
    @@ -28,12 +28,12 @@ Description
     """""""""""
     
     The *polymorphic* pair style computes a 3-body free-form potential
    -(:ref:`Zhou `) for the energy E of a system of atoms as
    +(:ref:`Zhou3 `) for the energy E of a system of atoms as
     
     .. math::
     
        E & = \frac{1}{2}\sum_{i=1}^{i=N}\sum_{j=1}^{j=N}\left[\left(1-\delta_{ij}\right)\cdot U_{IJ}\left(r_{ij}\right)-\left(1-\eta_{ij}\right)\cdot F_{IJ}\left(X_{ij}\right)\cdot V_{IJ}\left(r_{ij}\right)\right] \\
    -   X_{ij} & = \sum_{k=i_1,k\neq j}^{i_N}W_{IK}\left(r_{ik}\right)\cdot G_{JIK}\left(\theta_{jik}\right)\cdot P_{JIK}\left(\Delta r_{jik}\right) \\
    +   X_{ij} & = \sum_{k=i_1,k\neq j}^{i_N}W_{IK}\left(r_{ik}\right)\cdot G_{JIK}\left(\cos\theta_{jik}\right)\cdot P_{JIK}\left(\Delta r_{jik}\right) \\
        \Delta r_{jik} & = r_{ij}-\xi_{IJ}\cdot r_{ik}
     
     where I, J, K represent species of atoms i, j, and k, :math:`i_1, ...,
    @@ -72,7 +72,7 @@ instance, the potential reduces to a Stillinger-Weber potential
        F_{IJ}\left(X\right) & = -X \\
        P_{JIK}\left(\Delta r\right) & = P_{IK}\left(\Delta r\right) = 1 \\
        W_{IJ}\left(r\right) & = \sqrt{\lambda_{IJ}\cdot \epsilon_{IJ}}\cdot exp\left(\frac{\gamma_{IJ}\cdot \sigma_{IJ}}{r-a_{IJ}\cdot \sigma_{IJ}}\right) \\
    -   G_{JIK}\left(\theta\right) & = \left(cos\theta+\frac{1}{3}\right)^2
    +   G_{JIK}\left(\cos\theta\right) & = \left(\cos\theta+\frac{1}{3}\right)^2
     
     The potential reduces to a Tersoff potential (:ref:`Tersoff `
     or :ref:`Albe `) if we set
    @@ -85,7 +85,7 @@ or :ref:`Albe `) if we set
        F_{IJ}\left(X\right) & = \left(1+X\right)^{-\frac{1}{2}} \\
        P_{JIK}\left(\Delta r\right) & = P_{IK}\left(\Delta r\right) = exp\left(2\mu_{IK}\cdot \Delta r\right) \\
        W_{IJ}\left(r\right) & = f_{c,IJ}\left(r\right) \\
    -   G_{JIK}\left(\theta\right) & = \gamma_{IK}\left[1+\frac{c_{IK}^2}{d_{IK}^2}-\frac{c_{IK}^2}{d_{IK}^2+\left(h_{IK}+cos\theta\right)^2}\right]
    +   G_{JIK}\left(\cos\theta\right) & = \gamma_{IK}\left[1+\frac{c_{IK}^2}{d_{IK}^2}-\frac{c_{IK}^2}{d_{IK}^2+\left(h_{IK}+\cos\theta\right)^2}\right]
     
     where
     
    @@ -98,7 +98,7 @@ where
        \end{array}\right.
     
     The potential reduces to a modified Stillinger-Weber potential
    -(:ref:`Zhou `) if we set
    +(:ref:`Zhou3 `) if we set
     
     .. math::
     
    @@ -108,9 +108,9 @@ The potential reduces to a modified Stillinger-Weber potential
        F_{IJ}\left(X\right) & = -X \\
        P_{JIK}\left(\Delta r\right) & = P_{IK}\left(\Delta r\right) = 1 \\
        W_{IJ}\left(r\right) & = u_{IJ}\left(r\right) \\
    -   G_{JIK}\left(\theta\right) & = g_{JIK}\left(cos\theta\right)
    +   G_{JIK}\left(\cos\theta\right) & = g_{JIK}\left(\cos\theta\right)
     
    -The potential reduces to a Rockett-Tersoff potential (:ref:`Wang
    +The potential reduces to a Rockett-Tersoff potential (:ref:`Wang3
     `) if we set
     
     .. math::
    @@ -121,7 +121,7 @@ The potential reduces to a Rockett-Tersoff potential (:ref:`Wang
        F_{IJ}\left(X\right) & = \left[1+\left(\beta_{IJ}X\right)^{n_{IJ}}\right]^{-\frac{1}{2n_{IJ}}} \\
        P_{JIK}\left(\Delta r\right) & = P_{IK}\left(\Delta r\right) = exp\left(\lambda_{3,IK}\cdot \Delta r^3\right) \\
        W_{IJ}\left(r\right) & = f_{c,IJ}\left(r\right) \\
    -   G_{JIK}\left(\theta\right) & = 1+\frac{c_{IK}^2}{d_{IK}^2}-\frac{c_{IK}^2}{d_{IK}^2+\left(h_{IK}+cos\theta\right)^2}
    +   G_{JIK}\left(\cos\theta\right) & = 1+\frac{c_{IK}^2}{d_{IK}^2}-\frac{c_{IK}^2}{d_{IK}^2+\left(h_{IK}+\cos\theta\right)^2}
     
     where :math:`f_{ca,IJ}(r)` is similar to the :math:`f_{c,IJ}(r)` defined
     above:
    @@ -145,14 +145,14 @@ if we set
        F_{II}\left(X\right) & = -2F_I\left(X\right) \\
        P_{JIK}\left(\Delta r\right) & = P_{IK}\left(\Delta r\right) = 1 \\
        W_{IJ}\left(r\right) & = f_{J}\left(r\right) \\
    -   G_{JIK}\left(\theta\right) & = 1
    +   G_{JIK}\left(\cos\theta\right) & = 1
     
     In the embedded atom method case, :math:`\phi_{IJ}(r)` is the pair
     energy, :math:`F_I(X)` is the embedding energy, *X* is the local
     electron density, and :math:`f_J(r)` is the atomic electron density
     function.
     
    -The potential reduces to another type of Tersoff potential (:ref:`Zhou
    +The potential reduces to another type of Tersoff potential (:ref:`Zhou4
     `) if we set
     
     .. math::
    @@ -163,7 +163,7 @@ The potential reduces to another type of Tersoff potential (:ref:`Zhou
        F_{IJ}\left(X\right) & = \left(1+X\right)^{-\frac{1}{2}} \\
        P_{JIK}\left(\Delta r\right) & = \omega_{JIK} \cdot exp\left(\alpha_{JIK}\cdot \Delta r\right) \\
        W_{IJ}\left(r\right) & = f_{c,IJ}\left(r\right) \\
    -   G_{JIK}\left(\theta\right) & = \gamma_{JIK}\left[1+\frac{c_{JIK}^2}{d_{JIK}^2}-\frac{c_{JIK}^2}{d_{JIK}^2+\left(h_{JIK}+cos\theta\right)^2}\right] \\
    +   G_{JIK}\left(\cos\theta\right) & = \gamma_{JIK}\left[1+\frac{c_{JIK}^2}{d_{JIK}^2}-\frac{c_{JIK}^2}{d_{JIK}^2+\left(h_{JIK}+\cos\theta\right)^2}\right] \\
        T_{IJ}\left(r\right) & = \frac{1}{1+exp\left[-b_{f,IJ}\left(r-r_{f,IJ}\right)\right]} \\
        V_{ZBL,IJ}\left(r\right) & = 14.4 \cdot \frac{Z_I \cdot Z_J}{r}\sum_{k=1}^{4}\mu_k \cdot exp\left[-\nu_k \left(Z_I^{0.23}+Z_J^{0.23}\right) r\right]
     
    @@ -186,24 +186,24 @@ not mean that polymorphic pair style is different from the sw pair
     style. It just means that the definitions of the atom energies and atom
     stresses are different.
     
    -Only a single pair_coeff command is used with the polymorphic pair
    -style which specifies an potential file for all needed elements.
    -These are mapped to LAMMPS atom types by specifying N additional
    -arguments after the filename in the pair_coeff command, where N
    -is the number of LAMMPS atom types:
    +Only a single pair_coeff command is used with the polymorphic pair style
    +which specifies a potential file for all needed elements.  These are
    +mapped to LAMMPS atom types by specifying N additional arguments after
    +the filename in the pair_coeff command, where N is the number of LAMMPS
    +atom types:
     
     * filename
    -* N element names = mapping of Tersoff elements to atom types
    +* N element names = mapping of polymorphic potential elements to atom types
     
     See the pair_coeff doc page for alternate ways to specify the path for
     the potential file. Several files for polymorphic potentials are
     included in the potentials directory of the LAMMPS distribution. They
     have a "poly" suffix.
     
    -As an example, imagine the GaN_tersoff.poly file has tabulated
    -functions for Ga-N tersoff potential. If your LAMMPS simulation has 4
    -atoms types and you want the 1st 3 to be Ga, and the 4th to be N, you
    -would use the following pair_coeff command:
    +As an example, imagine the GaN_tersoff.poly file has tabulated functions
    +for Ga-N tersoff potential. If your LAMMPS simulation has 4 atoms types
    +and you want the 1st 3 to be Ga, and the 4th to be N, you would use the
    +following pair_coeff command:
     
     .. code-block:: LAMMPS
     
    @@ -220,21 +220,22 @@ with other potentials.
     
     Potential files in the potentials directory of the LAMMPS distribution
     have a ".poly" suffix. At the beginning of the files, an unlimited
    -number of lines starting with '#' are used to describe the potential
    -and are ignored by LAMMPS. The next line lists two numbers:
    +number of lines starting with '#' are used to describe the potential and
    +are ignored by LAMMPS. The next line lists two numbers:
     
     .. parsed-literal::
     
        ntypes eta
     
    -Here ntypes represent total number of species defined in the potential
    +Here *ntypes* represent total number of species defined in the potential
     file, :math:`\eta = 1` reduces to embedded atom method, :math:`\eta = 3`
    -assumes three species dependent :math:`P_{JIK}(\Delta r)` function, and
    -all other :math:`\eta` assumes two species dependent
    -:math:`P_{JK}(\Delta r)` function. The number ntypes must equal the total
    -number of different species defined in the pair_coeff command. The next
    -ntypes lines each lists two numbers and a character string representing
    -atomic number, atomic mass, and name of the species of the ntypes elements:
    +assumes a three species dependent :math:`P_{JIK}(\Delta r)` function,
    +and all other values of :math:`\eta` assume a two species dependent
    +:math:`P_{JK}(\Delta r)` function. The value of *ntypes* must equal the
    +total number of different species defined in the pair_coeff command. The
    +next *ntypes* lines each lists two numbers and a character string
    +representing atomic number, atomic mass, and name of the species of the
    +ntypes elements:
     
     .. parsed-literal::
     
    @@ -249,17 +250,17 @@ The next line contains four numbers:
     
        nr ntheta nx xmax
     
    -Here nr is total number of tabular points for radial functions U, V, W, P,
    -ntheta is total number of tabular points for the angular function G, nx is
    -total number of tabular points for the function F, xmax is a maximum
    -value of the argument of function F. Note that the pair functions
    -:math:`U_{IJ}(r)`, :math:`V_{IJ}(r)`, :math:`W_{IJ}(r)` are uniformly
    -tabulated between 0 and cutoff distance of the IJ pair,
    -:math:`G_{JIK}(\theta)` is uniformly tabulated between -1 and 1,
    -:math:`P_{JIK}(\Delta r)` is uniformly tabulated between -rcmax
    -and rcmax where rcmax is the maximum cutoff distance of all pairs, and
    +Here nr is total number of tabular points for radial functions U, V, W,
    +P, ntheta is total number of tabular points for the angular function G,
    +nx is total number of tabular points for the function F, xmax is a
    +maximum value of the argument of function F. Note that the pair
    +functions :math:`U_{IJ}(r)`, :math:`V_{IJ}(r)`, :math:`W_{IJ}(r)` are
    +uniformly tabulated between 0 and cutoff distance of the IJ pair,
    +:math:`G_{JIK}(\cos\theta)` is uniformly tabulated between -1 and 1,
    +:math:`P_{JIK}(\Delta r)` is uniformly tabulated between -rcmax and
    +rcmax where rcmax is the maximum cutoff distance of all pairs, and
     :math:`F_{IJ}(X)` is uniformly tabulated between 0 and xmax. Linear
    -extrapolation is assumed if actual simulations exceed these ranges. 
    +extrapolation is assumed if actual simulations exceed these ranges.
     
     The next ntypes\*(ntypes+1)/2 lines contain two numbers:
     
    @@ -270,39 +271,39 @@ The next ntypes\*(ntypes+1)/2 lines contain two numbers:
        ...
        cut xi(ntypes\*(ntypes+1)/2)
     
    -Here cut means the cutoff distance of the pair functions, :math:`\xi` is
    -the same as defined in the potential functions above. The
    +Here cut means the cutoff distance of the pair functions, "xi" is
    +:math:`\xi` as defined in the potential functions above. The
     ntypes\*(ntypes+1)/2 lines are related to the pairs according to the
    -sequence of first ii (self) pairs, i = 1, 2, ..., ntypes, and then
    -ij (cross) pairs, i = 1, 2, ..., ntypes-1, and j = i+1, i+2, ..., ntypes
    +sequence of first ii (self) pairs, i = 1, 2, ..., ntypes, and then ij
    +(cross) pairs, i = 1, 2, ..., ntypes-1, and j = i+1, i+2, ..., ntypes
     (i.e., the sequence of the ij pairs follows 11, 22, ..., 12, 13, 14,
     ..., 23, 24, ...).
     
     In the final blocks of the potential file, U, V, W, P, G, and F
    -functions are listed sequentially. First, U functions are given for
    -each of the ntypes\*(ntypes+1)/2 pairs according to the sequence
    -described above. For each of the pairs, nr values are listed. Next,
    -similar arrays are given for V and W functions. If P functions
    -depend only on pair species, i.e., :math:`\eta \neq 3`, then P
    -functions are also listed the same way the next. If P functions
    -depend on three species, i.e., :math:`\eta = 3`, then P functions
    -are listed for all the ntypes*ntypes*ntypes IJK triplets in a
    -natural sequence I from 1 to ntypes, J from 1 to ntypes, and K from
    -1 to ntypes (i.e., IJK = 111, 112, 113, ..., 121, 122, 123 ..., 211,
    -212, ...). Next, G functions are listed for all the ntypes*ntypes*ntypes
    -IJK triplets similarly. For each of the G functions, ntheta values
    -are listed. Finally, F functions are listed for all the
    -ntypes*(ntypes+1)/2 pairs in the same sequence as described above.
    -For each of the F functions, nx values are listed.
    +functions are listed sequentially. First, U functions are given for each
    +of the ntypes\*(ntypes+1)/2 pairs according to the sequence described
    +above. For each of the pairs, nr values are listed. Next, similar arrays
    +are given for V and W functions. If P functions depend only on pair
    +species, i.e., :math:`\eta \neq 3`, then P functions are also listed the
    +same way the next. If P functions depend on three species, i.e.,
    +:math:`\eta = 3`, then P functions are listed for all the
    +ntypes*ntypes*ntypes IJK triplets in a natural sequence I from 1 to
    +ntypes, J from 1 to ntypes, and K from 1 to ntypes (i.e., IJK = 111,
    +112, 113, ..., 121, 122, 123 ..., 211, 212, ...). Next, G functions are
    +listed for all the ntypes*ntypes*ntypes IJK triplets similarly. For each
    +of the G functions, ntheta values are listed. Finally, F functions are
    +listed for all the ntypes*(ntypes+1)/2 pairs in the same sequence as
    +described above.  For each of the F functions, nx values are listed.
     
     **Mixing, shift, table tail correction, restart**\ :
     
     This pair styles does not support the :doc:`pair_modify `
     shift, table, and tail options.
     
    -This pair style does not write their information to :doc:`binary restart files `, since it is stored in potential files. Thus, you
    -need to re-specify the pair_style and pair_coeff commands in an input
    -script that reads a restart file.
    +This pair style does not write their information to :doc:`binary restart
    +files `, since it is stored in potential files. Thus, you need
    +to re-specify the pair_style and pair_coeff commands in an input script
    +that reads a restart file.
     
     ----------
     
    @@ -314,15 +315,15 @@ input script. If using read_data, atomic masses must be defined in the
     atomic structure data file.
     
     This pair style is part of the MANYBODY package. It is only enabled if
    -LAMMPS was built with that package. See the :doc:`Build package ` doc page for more info.
    +LAMMPS was built with that package. See the :doc:`Build package
    +` doc page for more info.
     
     This pair potential requires the :doc:`newtion ` setting to be
     "on" for pair interactions.
     
    -The potential files provided with LAMMPS (see the potentials
    -directory) are parameterized for metal :doc:`units `. You can use
    -any LAMMPS units, but you would need to create your own potential
    -files.
    +The potential files provided with LAMMPS (see the potentials directory)
    +are parameterized for metal :doc:`units `. You can use any LAMMPS
    +units, but you would need to create your own potential files.
     
     Related commands
     """"""""""""""""
    @@ -333,11 +334,11 @@ Related commands
     
     .. _Zhou3:
     
    -**(Zhou)** X. W. Zhou, M. E. Foster, R. E. Jones, P. Yang, H. Fan, and F. P. Doty, J. Mater. Sci. Res., 4, 15 (2015).
    +**(Zhou3)** X. W. Zhou, M. E. Foster, R. E. Jones, P. Yang, H. Fan, and F. P. Doty, J. Mater. Sci. Res., 4, 15 (2015).
     
     .. _Zhou4:
     
    -**(Zhou)** X. W. Zhou, M. E. Foster, J. A. Ronevich, and C. W. San Marchi, J. Comp. Chem., 41, 1299 (2020).
    +**(Zhou4)** X. W. Zhou, M. E. Foster, J. A. Ronevich, and C. W. San Marchi, J. Comp. Chem., 41, 1299 (2020).
     
     .. _SW:
     
    @@ -358,4 +359,3 @@ Related commands
     .. _poly-Daw:
     
     **(Daw)** M. S. Daw, and M. I. Baskes, Phys. Rev. B, 29, 6443 (1984).
    -
    -- GitLab From 42203bbc356dcece2c1e4cc93fcd7349d1c53640 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 19 Apr 2020 16:37:52 -0400 Subject: [PATCH 335/717] fix two more typos --- doc/src/pair_polymorphic.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/src/pair_polymorphic.rst b/doc/src/pair_polymorphic.rst index e6117c5c11..a23a9f12f9 100644 --- a/doc/src/pair_polymorphic.rst +++ b/doc/src/pair_polymorphic.rst @@ -22,7 +22,7 @@ Examples pair_coeff * * TlBr_msw.poly Tl Br pair_coeff * * CuTa_eam.poly Cu Ta pair_coeff * * GaN_tersoff.poly Ga N - pair_coeff * * GaN_sw.poly GaN + pair_coeff * * GaN_sw.poly Ga N Description """"""""""" @@ -167,7 +167,7 @@ The potential reduces to another type of Tersoff potential (:ref:`Zhou4 T_{IJ}\left(r\right) & = \frac{1}{1+exp\left[-b_{f,IJ}\left(r-r_{f,IJ}\right)\right]} \\ V_{ZBL,IJ}\left(r\right) & = 14.4 \cdot \frac{Z_I \cdot Z_J}{r}\sum_{k=1}^{4}\mu_k \cdot exp\left[-\nu_k \left(Z_I^{0.23}+Z_J^{0.23}\right) r\right] -where :math:`f_{c,IJ}(r)` is the as defined above. This Tersoff +where :math:`f_{c,IJ}(r)` is the same as defined above. This Tersoff potential differs from the one above because the :math:`P_{JIK}(\Delta r)` function is now dependent on all three species I, J, and K. -- GitLab From dcc074215d698b9466bbdfbb5f6b18c86a92fbab Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 20 Apr 2020 06:04:33 -0400 Subject: [PATCH 336/717] fix inconsistent memory allocate/free --- src/USER-MISC/dihedral_nharmonic.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/USER-MISC/dihedral_nharmonic.cpp b/src/USER-MISC/dihedral_nharmonic.cpp index 56254a5c03..238c17d812 100644 --- a/src/USER-MISC/dihedral_nharmonic.cpp +++ b/src/USER-MISC/dihedral_nharmonic.cpp @@ -261,8 +261,8 @@ void DihedralNHarmonic::allocate() allocated = 1; int n = atom->ndihedraltypes; - memory->create(nterms,n+1,"dihedral:nt"); - a = new double * [n+1]; + nterms = new int[n+1]; + a = new double *[n+1]; memory->create(setflag,n+1,"dihedral:setflag"); for (int i = 1; i <= n; i++) setflag[i] = 0; -- GitLab From 91153eaa1a30bee81386eab25744e1d7a4dc2975 Mon Sep 17 00:00:00 2001 From: "Ryan S. Elliott" Date: Mon, 20 Apr 2020 13:15:25 -0500 Subject: [PATCH 337/717] Added changes to support SMs setting charges in kim_interactions --- src/KIM/kim_interactions.cpp | 71 ++++++++++++++++++++++++------------ src/KIM/kim_interactions.h | 2 +- 2 files changed, 48 insertions(+), 25 deletions(-) diff --git a/src/KIM/kim_interactions.cpp b/src/KIM/kim_interactions.cpp index 55d89766b5..d0aa0e3c4e 100644 --- a/src/KIM/kim_interactions.cpp +++ b/src/KIM/kim_interactions.cpp @@ -232,19 +232,19 @@ void KimInteractions::do_setup(int narg, char **arg) char * strword; strcpy(strbuf,sim_value); strword = strtok(strbuf," \t"); - if (0==strcmp(strword,"KIM_MATCH_PAIRS")) { - // Notes regarding the KIM_MATCH_PAIRS command + if (0==strcmp(strword,"KIM_SET_TYPE_PARAMETERS")) { + // Notes regarding the KIM_SET_TYPE_PARAMETERS command // * This is an INTERNAL command. // * It is intended for use only by KIM Simulator Models. // * It is not possible to use this command outside of the context // of the kim_interactions command and KIM Simulator Models. // * The command performs a transformation from symbolic // string-based atom types to lammps numeric atom types for - // the pair_coeff settings. + // the pair_coeff and charge settings. // * The command is not documented fully as it is expected to be // temporary. Eventually it should be replaced by a more // comprehensive symbolic types support in lammps. - KIM_MATCH_PAIRS(sim_value); + KIM_SET_TYPE_PARAMETERS(sim_value); } else { input->one(sim_value); } @@ -287,12 +287,14 @@ void KimInteractions::do_setup(int narg, char **arg) /* ---------------------------------------------------------------------- */ -void KimInteractions::KIM_MATCH_PAIRS(char const *const input_line) const +void KimInteractions::KIM_SET_TYPE_PARAMETERS(char const *const input_line) const { char strbuf[MAXLINE]; strcpy(strbuf,input_line); - char *cmd, *filename; + char *cmd, *key, *filename; + int nocomment; cmd = strtok(strbuf," \t"); + key = strtok(NULL," \t"); filename = strtok(NULL," \t"); FILE *fp; @@ -301,13 +303,14 @@ void KimInteractions::KIM_MATCH_PAIRS(char const *const input_line) const error->one(FLERR,"Parameter file not found"); } + char *species1, *species2, *the_rest, *check; std::vector species; for (int i = 0; i < atom->ntypes; ++i) { char *str; str = strtok(NULL," \t"); if (str == NULL) - error->one(FLERR,"Incorrect args for KIM_MATCH_PAIRS command"); + error->one(FLERR,"Incorrect args for KIM_SET_TYPE_PARAMETERS command"); species.push_back(str); } @@ -327,26 +330,46 @@ void KimInteractions::KIM_MATCH_PAIRS(char const *const input_line) const MPI_Bcast(&n,1,MPI_INT,0,world); MPI_Bcast(line,n,MPI_CHAR,0,world); - char *species1, *species2, *the_rest; ptr = line; - species1 = strtok(ptr," \t"); - species2 = strtok(NULL," \t"); - the_rest = strtok(NULL,"\n"); - - for (int type_a = 0; type_a < atom->ntypes; ++type_a) { - for (int type_b = type_a; type_b < atom->ntypes; ++type_b) { - if(((strcmp(species[type_a],species1) == 0) && - (strcmp(species[type_b],species2) == 0)) - || - ((strcmp(species[type_b],species1) == 0) && - (strcmp(species[type_a],species2) == 0)) - ) { - char pair_command[MAXLINE]; - sprintf(pair_command,"pair_coeff %i %i %s",type_a+1,type_b+1, - the_rest); - input->one(pair_command); + nocomment = line[0] != '#'; + + if(nocomment) { + if (strcmp(key,"pair") == 0) { + species1 = strtok(ptr," \t"); + species2 = strtok(NULL," \t"); + the_rest = strtok(NULL,"\n"); + + for (int type_a = 0; type_a < atom->ntypes; ++type_a) { + for (int type_b = type_a; type_b < atom->ntypes; ++type_b) { + if(((strcmp(species[type_a],species1) == 0) && + (strcmp(species[type_b],species2) == 0)) + || + ((strcmp(species[type_b],species1) == 0) && + (strcmp(species[type_a],species2) == 0)) + ) { + char pair_command[MAXLINE]; + sprintf(pair_command,"pair_coeff %i %i %s",type_a+1,type_b+1, + the_rest); + input->one(pair_command); + } + } } } + else if (strcmp(key,"charge") == 0) { + species1 = strtok(ptr," \t"); + the_rest = strtok(NULL,"\n"); + + for (int type_a = 0; type_a < atom->ntypes; ++type_a) { + if(strcmp(species[type_a],species1) == 0) { + char pair_command[MAXLINE]; + sprintf(pair_command,"set type %i charge %s",type_a+1,the_rest); + input->one(pair_command); + } + } + } + else{ + error->one(FLERR,"Unrecognized KEY for KIM_SET_TYPE_PARAMETERS command"); + } } } fclose(fp); diff --git a/src/KIM/kim_interactions.h b/src/KIM/kim_interactions.h index f92e58ca48..ffec48adab 100644 --- a/src/KIM/kim_interactions.h +++ b/src/KIM/kim_interactions.h @@ -77,7 +77,7 @@ class KimInteractions : protected Pointers { private: void do_setup(int, char **); int species_to_atomic_no(std::string const species) const; - void KIM_MATCH_PAIRS(char const *const input_line) const; + void KIM_SET_TYPE_PARAMETERS(char const *const input_line) const; void kim_interactions_log_delimiter(std::string const begin_end) const; }; -- GitLab From 1c15ba88f32011c8e655626740b00954b2b5d1e5 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 20 Apr 2020 15:27:30 -0400 Subject: [PATCH 338/717] need to copy maxspecial and "extra" data to do a proper recreation --- src/replicate.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/replicate.cpp b/src/replicate.cpp index b3baf47c16..96125d4fe2 100644 --- a/src/replicate.cpp +++ b/src/replicate.cpp @@ -196,6 +196,12 @@ void Replicate::command(int narg, char **arg) atom->dihedral_per_atom = old->dihedral_per_atom; atom->improper_per_atom = old->improper_per_atom; + atom->extra_bond_per_atom = old->extra_bond_per_atom; + atom->extra_angle_per_atom = old->extra_angle_per_atom; + atom->extra_dihedral_per_atom = old->extra_dihedral_per_atom; + atom->extra_improper_per_atom = old->extra_improper_per_atom; + atom->maxspecial = old->maxspecial; + // store old simulation box int triclinic = domain->triclinic; -- GitLab From 0dfb1329bea08965cbd1032a371476f45f6943ae Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 20 Apr 2020 16:56:09 -0400 Subject: [PATCH 339/717] we must not write out per-type pair cutoff when long-range LJ is enabled --- src/KSPACE/pair_buck_long_coul_long.cpp | 15 +++++++++++---- src/KSPACE/pair_lj_long_coul_long.cpp | 15 +++++++++++---- 2 files changed, 22 insertions(+), 8 deletions(-) diff --git a/src/KSPACE/pair_buck_long_coul_long.cpp b/src/KSPACE/pair_buck_long_coul_long.cpp index 6c731b73b3..db01cb8509 100644 --- a/src/KSPACE/pair_buck_long_coul_long.cpp +++ b/src/KSPACE/pair_buck_long_coul_long.cpp @@ -430,10 +430,17 @@ void PairBuckLongCoulLong::write_data(FILE *fp) void PairBuckLongCoulLong::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\n",i,j, - buck_a_read[i][j],buck_rho_read[i][j],buck_c_read[i][j]); + for (int i = 1; i <= atom->ntypes; i++) { + for (int j = i; j <= atom->ntypes; j++) { + if (ewald_order & (1<<6)) { + fprintf(fp,"%d %d %g %g\n",i,j, + buck_a_read[i][j],buck_rho_read[i][j]); + } else { + fprintf(fp,"%d %d %g %g %g\n",i,j, + buck_a_read[i][j],buck_rho_read[i][j],buck_c_read[i][j]); + } + } + } } /* ---------------------------------------------------------------------- diff --git a/src/KSPACE/pair_lj_long_coul_long.cpp b/src/KSPACE/pair_lj_long_coul_long.cpp index 94955d2d6d..ce6b6f57a2 100644 --- a/src/KSPACE/pair_lj_long_coul_long.cpp +++ b/src/KSPACE/pair_lj_long_coul_long.cpp @@ -427,10 +427,17 @@ void PairLJLongCoulLong::write_data(FILE *fp) void PairLJLongCoulLong::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\n",i,j, - epsilon_read[i][j],sigma_read[i][j],cut_lj_read[i][j]); + for (int i = 1; i <= atom->ntypes; i++) { + for (int j = i; j <= atom->ntypes; j++) { + if (ewald_order & (1<<6)) { + fprintf(fp,"%d %d %g %g\n",i,j, + epsilon_read[i][j],sigma_read[i][j]); + } else { + fprintf(fp,"%d %d %g %g %g\n",i,j, + epsilon_read[i][j],sigma_read[i][j],cut_lj_read[i][j]); + } + } + } } /* ---------------------------------------------------------------------- -- GitLab From 2ac7bfc9cf1ba16fcfa3bb7df56d8042f0e78cbb Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 21 Apr 2020 08:26:01 -0400 Subject: [PATCH 340/717] rephrase note about kernel JIT recompilation and Kepler vs. the rest compatibility --- doc/src/Build_extras.rst | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/doc/src/Build_extras.rst b/doc/src/Build_extras.rst index 5457494c87..4465fc884a 100644 --- a/doc/src/Build_extras.rst +++ b/doc/src/Build_extras.rst @@ -320,11 +320,12 @@ to have an executable that will run on this and newer architectures. .. note:: - NVIDIA GPUs with CC 5.0 (Maxwell) and newer are not compatible with - CC 3.x (Kepler). If you run Kokkos on a newer architecture than what - LAMMPS was compiled with, there will be a significant delay during - device initialization since the just-in-time compiler has to - recompile the GPU kernel code for the new hardware. + If you run Kokkos on a newer GPU architecture than what LAMMPS was + compiled with, there will be a delay during device initialization + since the just-in-time compiler has to recompile all GPU kernels + for the new hardware. This is, however, not possible when compiled + for NVIDIA GPUs with CC 3.x (Kepler) for GPUs with CC 5.0 (Maxwell) + and newer as they are not compatible. The settings discussed below have been tested with LAMMPS and are confirmed to work. Kokkos is an active project with ongoing improvements -- GitLab From 729646d7b52f03115a14d1027d55a9ea60efebd3 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 21 Apr 2020 08:27:00 -0400 Subject: [PATCH 341/717] update table of Kokkos supported archs and indicate HOST/GPU designation --- doc/src/Build_extras.rst | 38 +++++++++++++++++++++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/doc/src/Build_extras.rst b/doc/src/Build_extras.rst index 4465fc884a..1b74358b36 100644 --- a/doc/src/Build_extras.rst +++ b/doc/src/Build_extras.rst @@ -344,65 +344,101 @@ be specified in uppercase. :widths: auto * - **Arch-ID** + - **HOST or GPU** - **Description** * - AMDAVX + - HOST - AMD 64-bit x86 CPU (AVX 1) * - EPYC + - HOST - AMD EPYC Zen class CPU (AVX 2) * - ARMV80 + - HOST - ARMv8.0 Compatible CPU * - ARMV81 + - HOST - ARMv8.1 Compatible CPU * - ARMV8_THUNDERX + - HOST - ARMv8 Cavium ThunderX CPU * - ARMV8_THUNDERX2 + - HOST - ARMv8 Cavium ThunderX2 CPU * - WSM + - HOST - Intel Westmere CPU (SSE 4.2) * - SNB + - HOST - Intel Sandy/Ivy Bridge CPU (AVX 1) * - HSW + - HOST - Intel Haswell CPU (AVX 2) * - BDW + - HOST - Intel Broadwell Xeon E-class CPU (AVX 2 + transactional mem) * - SKX + - HOST - Intel Sky Lake Xeon E-class HPC CPU (AVX512 + transactional mem) * - KNC + - HOST - Intel Knights Corner Xeon Phi * - KNL + - HOST - Intel Knights Landing Xeon Phi * - BGQ + - HOST - IBM Blue Gene/Q CPU * - POWER7 - - IBM POWER8 CPU + - HOST + - IBM POWER7 CPU * - POWER8 + - HOST - IBM POWER8 CPU * - POWER9 + - HOST - IBM POWER9 CPU * - KEPLER30 + - GPU - NVIDIA Kepler generation CC 3.0 GPU * - KEPLER32 + - GPU - NVIDIA Kepler generation CC 3.2 GPU * - KEPLER35 + - GPU - NVIDIA Kepler generation CC 3.5 GPU * - KEPLER37 + - GPU - NVIDIA Kepler generation CC 3.7 GPU * - MAXWELL50 + - GPU - NVIDIA Maxwell generation CC 5.0 GPU * - MAXWELL52 + - GPU - NVIDIA Maxwell generation CC 5.2 GPU * - MAXWELL53 + - GPU - NVIDIA Maxwell generation CC 5.3 GPU * - PASCAL60 + - GPU - NVIDIA Pascal generation CC 6.0 GPU * - PASCAL61 + - GPU - NVIDIA Pascal generation CC 6.1 GPU * - VOLTA70 + - GPU - NVIDIA Volta generation CC 7.0 GPU * - VOLTA72 + - GPU - NVIDIA Volta generation CC 7.2 GPU * - TURING75 + - GPU - NVIDIA Turing generation CC 7.5 GPU + * - VEGA900 + - GPU + - AMD GPU MI25 GFX900 + * - VEGA906 + - GPU + - AMD GPU MI50/MI60 GFX906 CMake build settings: ^^^^^^^^^^^^^^^^^^^^^ -- GitLab From 2348d6db62360a91b3717ce02aa2c0045734ebcb Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 21 Apr 2020 08:30:16 -0400 Subject: [PATCH 342/717] use HOSTARCH/HOST instead of CPUARCH/CPU to better distinguish from GPUARCH/GPU --- doc/src/Build_extras.rst | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/doc/src/Build_extras.rst b/doc/src/Build_extras.rst index 1b74358b36..9f097b3fc1 100644 --- a/doc/src/Build_extras.rst +++ b/doc/src/Build_extras.rst @@ -446,7 +446,7 @@ For multicore CPUs using OpenMP, set these 2 variables. .. code-block:: bash - -D Kokkos_ARCH_CPUARCH=yes # CPUARCH = CPU from list above + -D Kokkos_ARCH_HOSTARCH=yes # HOSTARCH = HOST from list above -D Kokkos_ENABLE_OPENMP=yes -D BUILD_OMP=yes @@ -464,7 +464,7 @@ For NVIDIA GPUs using CUDA, set these variables: .. code-block:: bash - -D Kokkos_ARCH_CPUARCH=yes # CPUARCH = CPU from list above + -D Kokkos_ARCH_HOSTARCH=yes # HOSTARCH = HOST from list above -D Kokkos_ARCH_GPUARCH=yes # GPUARCH = GPU from list above -D Kokkos_ENABLE_CUDA=yes -D Kokkos_ENABLE_OPENMP=yes @@ -504,7 +504,7 @@ For multicore CPUs using OpenMP: .. code-block:: make KOKKOS_DEVICES = OpenMP - KOKKOS_ARCH = CPUARCH # CPUARCH = CPU from list above + KOKKOS_ARCH = HOSTARCH # HOSTARCH = HOST from list above For Intel KNLs using OpenMP: @@ -518,7 +518,7 @@ For NVIDIA GPUs using CUDA: .. code-block:: make KOKKOS_DEVICES = Cuda - KOKKOS_ARCH = CPUARCH,GPUARCH # CPUARCH = CPU from list above that is hosting the GPU + KOKKOS_ARCH = HOSTARCH,GPUARCH # HOSTARCH = HOST from list above that is hosting the GPU # GPUARCH = GPU from list above FFT_INC = -DFFT_CUFFT # enable use of cuFFT (optional) FFT_LIB = -lcufft # link to cuFFT library -- GitLab From 3c144600a55058b5ab92ab86abe6842f22786e75 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 21 Apr 2020 11:46:16 -0400 Subject: [PATCH 343/717] update Kokkos related documentation for Kokkos 3.1 and refactor build info a bit --- doc/src/Build_extras.rst | 57 +++++++-- doc/src/Speed_kokkos.rst | 126 ++++++++++---------- doc/utils/sphinx-config/false_positives.txt | 2 + 3 files changed, 112 insertions(+), 73 deletions(-) diff --git a/doc/src/Build_extras.rst b/doc/src/Build_extras.rst index 9f097b3fc1..5d6f2c65a7 100644 --- a/doc/src/Build_extras.rst +++ b/doc/src/Build_extras.rst @@ -440,8 +440,8 @@ be specified in uppercase. - GPU - AMD GPU MI50/MI60 GFX906 -CMake build settings: -^^^^^^^^^^^^^^^^^^^^^ +Basic CMake build settings: +^^^^^^^^^^^^^^^^^^^^^^^^^^^ For multicore CPUs using OpenMP, set these 2 variables. .. code-block:: bash @@ -470,9 +470,13 @@ For NVIDIA GPUs using CUDA, set these variables: -D Kokkos_ENABLE_OPENMP=yes -D CMAKE_CXX_COMPILER=wrapper # wrapper = full path to Cuda nvcc wrapper -The wrapper value is the Cuda nvcc compiler wrapper provided in the -Kokkos library: ``lib/kokkos/bin/nvcc_wrapper``\ . The setting should -include the full path name to the wrapper, e.g. +This will also enable executing FFTs on the GPU, either via the internal +KISSFFT library, or - by preference - with the cuFFT library bundled +with the CUDA toolkit, depending on whether CMake can identify its +location. The *wrapper* value for ``CMAKE_CXX_COMPILER`` variable is +the path to the CUDA nvcc compiler wrapper provided in the Kokkos +library: ``lib/kokkos/bin/nvcc_wrapper``\ . The setting should include +the full path name to the wrapper, e.g. .. code-block:: bash @@ -492,8 +496,8 @@ common packages enabled, you can do the following: cmake -C ../cmake/presets/minimal.cmake -C ../cmake/presets/kokkos-cuda.cmake ../cmake cmake --build . -Traditional make settings: -^^^^^^^^^^^^^^^^^^^^^^^^^^ +Basic traditional make settings: +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Choose which hardware to support in ``Makefile.machine`` via ``KOKKOS_DEVICES`` and ``KOKKOS_ARCH`` settings. See the @@ -519,6 +523,7 @@ For NVIDIA GPUs using CUDA: KOKKOS_DEVICES = Cuda KOKKOS_ARCH = HOSTARCH,GPUARCH # HOSTARCH = HOST from list above that is hosting the GPU + KOKKOS_CUDA_OPTIONS = "enable_lambda" # GPUARCH = GPU from list above FFT_INC = -DFFT_CUFFT # enable use of cuFFT (optional) FFT_LIB = -lcufft # link to cuFFT library @@ -541,6 +546,44 @@ C++ compiler for non-Kokkos, non-CUDA files. KOKKOS_ABSOLUTE_PATH = $(shell cd $(KOKKOS_PATH); pwd) CC = mpicxx -cxx=$(KOKKOS_ABSOLUTE_PATH)/config/nvcc_wrapper + +Advanced KOKKOS compilation settings +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +There are other allowed options when building with the KOKKOS package +that can improve performance or assist in debugging or profiling. Below +are some examples that may be useful in combination with LAMMPS. For +the full list (which keeps changing as the Kokkos package itself evolves), +please consult the Kokkos library documentation. + +As alternative to using multi-threading via OpenMP +(``-DKokkos_ENABLE_OPENMP=on`` or ``KOKKOS_DEVICES=OpenMP``) it is also +possible to use Posix threads directly (``-DKokkos_ENABLE_PTHREAD=on`` +or ``KOKKOS_DEVICES=Pthread``). While binding of threads to individual +or groups of CPU cores is managed in OpenMP with environment variables, +you need assistance from either the "hwloc" or "libnuma" library for the +Pthread thread parallelization option. To enable use with CMake: +``-DKokkos_ENABLE_HWLOC=on`` or ``-DKokkos_ENABLE_LIBNUMA=on``; and with +conventional make: ``KOKKOS_USE_TPLS=hwloc`` or +``KOKKOS_USE_TPLS=libnuma``. + +The CMake option ``-DKokkos_ENABLE_LIBRT=on`` or the makefile setting +``KOKKOS_USE_TPLS=librt`` enables the use of a more accurate timer +mechanism on many Unix-like platforms for internal profiling. + +The CMake option ``-DKokkos_ENABLE_DEBUG=on`` or the makefile setting +``KOKKOS_DEBUG=yes`` enables printing of run-time +debugging information that can be useful. It also enables runtime +bounds checking on Kokkos data structures. As to be expected, enabling +this option will negatively impact the performance and thus is only +recommended when developing a Kokkos-enabled style in LAMMPS. + +The CMake option ``-DKokkos_ENABLE_CUDA_UVM=on`` or the makefile +setting ``KOKKOS_CUDA_OPTIONS=enable_lambda,force_uvm`` enables the +use of CUDA "Unified Virtual Memory" in Kokkos. Please note, that +the LAMMPS KOKKOS package must **always** be compiled with the +*enable_lambda* option when using GPUs. + ---------- .. _latte: diff --git a/doc/src/Speed_kokkos.rst b/doc/src/Speed_kokkos.rst index 56490e8e84..3269564d21 100644 --- a/doc/src/Speed_kokkos.rst +++ b/doc/src/Speed_kokkos.rst @@ -28,27 +28,30 @@ compatible with specific hardware. .. note:: - To build with Kokkos support for NVIDIA GPUs, NVIDIA CUDA + To build with Kokkos support for NVIDIA GPUs, the NVIDIA CUDA toolkit software version 9.0 or later must be installed on your system. See - the discussion for the :doc:`GPU package ` for details of how - to check and do this. + the discussion for the :doc:`GPU package ` for details of + how to check and do this. .. note:: - Kokkos with CUDA currently implicitly assumes that the MPI library - is CUDA-aware. This is not always the case, especially when using - pre-compiled MPI libraries provided by a Linux distribution. This is not - a problem when using only a single GPU with a single MPI rank. When - running with multiple MPI ranks, you may see segmentation faults without - CUDA-aware MPI support. These can be avoided by adding the flags :doc:`-pk kokkos cuda/aware off ` to the LAMMPS command line or by - using the command :doc:`package kokkos cuda/aware off ` in the - input file. + Kokkos with CUDA currently implicitly assumes that the MPI library is + CUDA-aware. This is not always the case, especially when using + pre-compiled MPI libraries provided by a Linux distribution. This is + not a problem when using only a single GPU with a single MPI + rank. When running with multiple MPI ranks, you may see segmentation + faults without CUDA-aware MPI support. These can be avoided by adding + the flags :doc:`-pk kokkos cuda/aware off ` to the + LAMMPS command line or by using the command :doc:`package kokkos + cuda/aware off ` in the input file. -**Building LAMMPS with the KOKKOS package:** +Building LAMMPS with the KOKKOS package +""""""""""""""""""""""""""""""""""""""" See the :ref:`Build extras ` doc page for instructions. -**Running LAMMPS with the KOKKOS package:** +Running LAMMPS with the KOKKOS package +"""""""""""""""""""""""""""""""""""""" All Kokkos operations occur within the context of an individual MPI task running on a single node of the machine. The total number of MPI @@ -57,7 +60,8 @@ usual manner via the mpirun or mpiexec commands, and is independent of Kokkos. E.g. the mpirun command in OpenMPI does this via its -np and -npernode switches. Ditto for MPICH via -np and -ppn. -**Running on a multi-core CPU:** +Running on a multi-core CPU +^^^^^^^^^^^^^^^^^^^^^^^^^^^ Here is a quick overview of how to use the KOKKOS package for CPU acceleration, assuming one or more 16-core nodes. @@ -133,7 +137,8 @@ atom. When using the Kokkos Serial back end or the OpenMP back end with a single thread, no duplication or atomic operations are used. For CUDA and half neighbor lists, the KOKKOS package always uses atomic operations. -**Core and Thread Affinity:** +CPU Cores, Sockets and Thread Affinity +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ When using multi-threading, it is important for performance to bind both MPI tasks to physical cores, and threads to physical cores, so @@ -147,15 +152,16 @@ for your MPI installation), binding can be forced with these flags: OpenMPI 1.8: mpirun -np 2 --bind-to socket --map-by socket ./lmp_openmpi ... Mvapich2 2.0: mpiexec -np 2 --bind-to socket --map-by socket ./lmp_mvapich ... -For binding threads with KOKKOS OpenMP, use thread affinity -environment variables to force binding. With OpenMP 3.1 (gcc 4.7 or -later, intel 12 or later) setting the environment variable -OMP_PROC_BIND=true should be sufficient. In general, for best -performance with OpenMP 4.0 or better set OMP_PROC_BIND=spread and -OMP_PLACES=threads. For binding threads with the KOKKOS pthreads -option, compile LAMMPS the KOKKOS HWLOC=yes option as described below. +For binding threads with KOKKOS OpenMP, use thread affinity environment +variables to force binding. With OpenMP 3.1 (gcc 4.7 or later, intel 12 +or later) setting the environment variable ``OMP_PROC_BIND=true`` should +be sufficient. In general, for best performance with OpenMP 4.0 or later +set ``OMP_PROC_BIND=spread`` and ``OMP_PLACES=threads``. For binding +threads with the KOKKOS pthreads option, compile LAMMPS with the hwloc +or libnuma support enabled as described in the :ref:`extra build options page `. -**Running on Knight's Landing (KNL) Intel Xeon Phi:** +Running on Knight's Landing (KNL) Intel Xeon Phi +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Here is a quick overview of how to use the KOKKOS package for the Intel Knight's Landing (KNL) Xeon Phi: @@ -213,7 +219,8 @@ threads/task as Nt. The product of these two values should be N, i.e. them in "native" mode, not "offload" mode like the USER-INTEL package supports. -**Running on GPUs:** +Running on GPUs +^^^^^^^^^^^^^^^ Use the "-k" :doc:`command-line switch ` to specify the number of GPUs per node. Typically the -np setting of the mpirun command @@ -277,7 +284,8 @@ one or more nodes, each with two GPUs: kspace, etc., you must set the environment variable CUDA_LAUNCH_BLOCKING=1. However, this will reduce performance and is not recommended for production runs. -**Run with the KOKKOS package by editing an input script:** +Run with the KOKKOS package by editing an input script +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Alternatively the effect of the "-sf" or "-pk" switches can be duplicated by adding the :doc:`package kokkos ` or :doc:`suffix kk ` commands to your input script. @@ -300,17 +308,24 @@ You only need to use the :doc:`package kokkos ` command if you wish to change any of its option defaults, as set by the "-k on" :doc:`command-line switch `. -**Using OpenMP threading and CUDA together (experimental):** +**Using OpenMP threading and CUDA together:** With the KOKKOS package, both OpenMP multi-threading and GPUs can be -used together in a few special cases. In the Makefile, the -KOKKOS_DEVICES variable must include both "Cuda" and "OpenMP", as is -the case for /src/MAKE/OPTIONS/Makefile.kokkos_cuda_mpi +compiled and used together in a few special cases. In the makefile for +the conventional build, the KOKKOS_DEVICES variable must include both, +"Cuda" and "OpenMP", as is the case for ``/src/MAKE/OPTIONS/Makefile.kokkos_cuda_mpi``. .. code-block:: bash KOKKOS_DEVICES=Cuda,OpenMP +When building with CMake you need to enable both features as it is done +in the ``kokkos-cuda.cmake`` CMake preset file. + +.. code-block:: bash + + cmake ../cmake -DKokkos_ENABLE_CUDA=yes -DKokkos_ENABLE_OPENMP=yes + The suffix "/kk" is equivalent to "/kk/device", and for Kokkos CUDA, using the "-sf kk" in the command line gives the default CUDA version everywhere. However, if the "/kk/host" suffix is added to a specific @@ -344,7 +359,8 @@ suffix for kspace and bonds, angles, etc. in the input file and the sure the environment variable CUDA_LAUNCH_BLOCKING is not set to "1" so CPU/GPU overlap can occur. -**Speed-ups to expect:** +Performance to expect +""""""""""""""""""""" The performance of KOKKOS running in different modes is a function of your hardware, which KOKKOS-enable styles are used, and the problem @@ -361,48 +377,26 @@ Generally speaking, the following rules of thumb apply: performance of a KOKKOS style is a bit slower than the USER-OMP package. * When running large number of atoms per GPU, KOKKOS is typically faster - than the GPU package. + than the GPU package when compiled for double precision. The benefit + of using single or mixed precision with the GPU package depends + significantly on the hardware in use and the simulated system and pair + style. * When running on Intel hardware, KOKKOS is not as fast as - the USER-INTEL package, which is optimized for that hardware. + the USER-INTEL package, which is optimized for x86 hardware (not just + from Intel) and compilation with the Intel compilers. The USER-INTEL + package also can increase the vector length of vector instructions + by switching to single or mixed precision mode. See the `Benchmark page `_ of the LAMMPS web site for performance of the KOKKOS package on different hardware. -**Advanced Kokkos options:** - -There are other allowed options when building with the KOKKOS package. -As explained on the :ref:`Build extras ` doc page, -they can be set either as variables on the make command line or in -Makefile.machine, or they can be specified as CMake variables. Each -takes a value shown below. The default value is listed, which is set -in the lib/kokkos/Makefile.kokkos file. For a full listing of all options, -see lib/kokkos/Makefile.kokkos. - -* KOKKOS_USE_TPLS, values = *hwloc*\ , *librt*\ , *experimental_memkind*, default = *none* -* KOKKOS_DEBUG, values = *yes*\ , *no*\ , default = *no* -* KOKKOS_CUDA_OPTIONS, values = *force_uvm*, *use_ldg*, *rdc*\ , *enable_lambda*\ , *enable_constexpr*, default = *enable_lambda* - -KOKKOS_USE_TPLS=hwloc binds threads to hardware cores, so they do not -migrate during a simulation. KOKKOS_USE_TPLS=hwloc should always be -used if running with KOKKOS_DEVICES=Pthreads for pthreads. It is not -necessary for KOKKOS_DEVICES=OpenMP for OpenMP, because OpenMP -provides alternative methods via environment variables for binding -threads to hardware cores. More info on binding threads to cores is -given on the :doc:`Speed omp ` doc page. - -KOKKOS_USE_TPLS=librt enables use of a more accurate timer mechanism -on most Unix platforms. This library is not available on all -platforms. - -KOKKOS_DEBUG is only useful when developing a Kokkos-enabled style -within LAMMPS. KOKKOS_DEBUG=yes enables printing of run-time -debugging information that can be useful. It also enables runtime -bounds checking on Kokkos data structures. - -KOKKOS_CUDA_OPTIONS are additional options for CUDA. The LAMMPS KOKKOS -package must be compiled with the *enable_lambda* option when using -GPUs. +Advanced Kokkos options +""""""""""""""""""""""" + +There are other allowed options when building with the KOKKOS package +that can improve performance or assist in debugging or profiling. +They are explained on the :ref:`KOKKOS section of the build extras ` doc page, Restrictions """""""""""" diff --git a/doc/utils/sphinx-config/false_positives.txt b/doc/utils/sphinx-config/false_positives.txt index c19349f3e6..4dd258f622 100644 --- a/doc/utils/sphinx-config/false_positives.txt +++ b/doc/utils/sphinx-config/false_positives.txt @@ -499,6 +499,7 @@ cuda Cuda CUDA CuH +cuFFT Cummins Curk customIDs @@ -1544,6 +1545,7 @@ libmeam libmessage libmpi libmpich +libnuma libplumed libplumedKernel libpng -- GitLab From 9f923c51f8f0cd416c08a43a1c249df0ac906386 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 21 Apr 2020 12:07:34 -0400 Subject: [PATCH 344/717] update singularity definition files for ubuntu variants to enable more LAMMPS build options and features --- tools/singularity/ubuntu16.04.def | 2 +- tools/singularity/ubuntu18.04.def | 4 ++++ tools/singularity/ubuntu18.04_amd_rocm.def | 10 ++++++++++ tools/singularity/ubuntu18.04_intel_opencl.def | 10 ++++++++++ tools/singularity/ubuntu18.04_nvidia.def | 10 ++++++++++ tools/singularity/ubuntu20.04.def | 5 ++++- 6 files changed, 39 insertions(+), 2 deletions(-) diff --git a/tools/singularity/ubuntu16.04.def b/tools/singularity/ubuntu16.04.def index b6833707a2..ea661cf083 100644 --- a/tools/singularity/ubuntu16.04.def +++ b/tools/singularity/ubuntu16.04.def @@ -8,7 +8,7 @@ From: ubuntu:16.04 apt-get install --no-install-recommends -y \ bc build-essential curl doxygen vim-nox wget \ make cmake cmake-curses-gui ninja-build git \ - rsync ssh \ + rsync ssh less \ ccache gcc g++ gfortran \ mpi-default-bin mpi-default-dev \ libfftw3-dev libjpeg-dev libpng12-dev libblas-dev liblapack-dev \ diff --git a/tools/singularity/ubuntu18.04.def b/tools/singularity/ubuntu18.04.def index 4285f8d3a4..31c14f6830 100644 --- a/tools/singularity/ubuntu18.04.def +++ b/tools/singularity/ubuntu18.04.def @@ -20,15 +20,19 @@ From: ubuntu:18.04 gfortran \ git \ hdf5-tools \ + less \ libblas-dev \ libeigen3-dev \ libenchant-dev \ libfftw3-dev \ libgsl-dev \ libhdf5-serial-dev \ + libhwloc-dev \ libjpeg-dev \ liblapack-dev \ + libomp-dev \ libopenblas-dev \ + libnuma-dev \ libpng-dev \ libproj-dev \ libvtk6-dev \ diff --git a/tools/singularity/ubuntu18.04_amd_rocm.def b/tools/singularity/ubuntu18.04_amd_rocm.def index f653e65130..0338ff3c45 100644 --- a/tools/singularity/ubuntu18.04_amd_rocm.def +++ b/tools/singularity/ubuntu18.04_amd_rocm.def @@ -24,14 +24,18 @@ From: rocm/dev-ubuntu-18.04 gfortran \ git \ hdf5-tools \ + kmod \ + less \ libblas-dev \ libeigen3-dev \ libenchant-dev \ libfftw3-dev \ libgsl-dev \ libhdf5-serial-dev \ + libhwloc-dev \ libjpeg-dev \ liblapack-dev \ + libomp-dev \ libopenblas-dev \ libnuma-dev \ libpng-dev \ @@ -53,6 +57,12 @@ From: rocm/dev-ubuntu-18.04 rocm-libs \ rsync \ ssh \ + texlive \ + texlive-latex-recommended \ + texlive-pictures \ + texlive-publishers \ + texlive-science \ + dvipng \ vim-nox \ virtualenv \ voro++-dev \ diff --git a/tools/singularity/ubuntu18.04_intel_opencl.def b/tools/singularity/ubuntu18.04_intel_opencl.def index 389c75699c..6dabb94cb1 100644 --- a/tools/singularity/ubuntu18.04_intel_opencl.def +++ b/tools/singularity/ubuntu18.04_intel_opencl.def @@ -22,15 +22,19 @@ From: ubuntu:18.04 gfortran \ git \ hdf5-tools \ + less \ libblas-dev \ libeigen3-dev \ libenchant-dev \ libfftw3-dev \ libgsl-dev \ libhdf5-serial-dev \ + libhwloc-dev \ libjpeg-dev \ liblapack-dev \ + libomp-dev \ libopenblas-dev \ + libnuma-dev \ libpng-dev \ libproj-dev \ libvtk6-dev \ @@ -51,6 +55,12 @@ From: ubuntu:18.04 python3-virtualenv \ rsync \ ssh \ + texlive \ + texlive-latex-recommended \ + texlive-pictures \ + texlive-publishers \ + texlive-science \ + dvipng \ vim-nox \ virtualenv \ voro++-dev \ diff --git a/tools/singularity/ubuntu18.04_nvidia.def b/tools/singularity/ubuntu18.04_nvidia.def index 9392821d7e..bec17adf7f 100644 --- a/tools/singularity/ubuntu18.04_nvidia.def +++ b/tools/singularity/ubuntu18.04_nvidia.def @@ -22,15 +22,19 @@ From: nvidia/cuda:10.2-devel-ubuntu18.04 gfortran \ git \ hdf5-tools \ + less \ libblas-dev \ libeigen3-dev \ libenchant-dev \ libfftw3-dev \ libgsl-dev \ libhdf5-serial-dev \ + libhwloc-dev \ libjpeg-dev \ liblapack-dev \ + libomp-dev \ libopenblas-dev \ + libnuma-dev \ libpng-dev \ libproj-dev \ libvtk6-dev \ @@ -51,6 +55,12 @@ From: nvidia/cuda:10.2-devel-ubuntu18.04 python3-virtualenv \ rsync \ ssh \ + texlive \ + texlive-latex-recommended \ + texlive-pictures \ + texlive-publishers \ + texlive-science \ + dvipng \ vim-nox \ virtualenv \ voro++-dev \ diff --git a/tools/singularity/ubuntu20.04.def b/tools/singularity/ubuntu20.04.def index 37c67b9373..028f5a09c7 100644 --- a/tools/singularity/ubuntu20.04.def +++ b/tools/singularity/ubuntu20.04.def @@ -20,16 +20,19 @@ From: ubuntu:20.04 gfortran \ git \ hdf5-tools \ + less \ libblas-dev \ libeigen3-dev \ libenchant-dev \ libfftw3-dev \ libgsl-dev \ libhdf5-serial-dev \ + libhwloc-dev \ libjpeg-dev \ liblapack-dev \ - libopenblas-dev \ libomp-dev \ + libopenblas-dev \ + libnuma-dev \ libpng-dev \ libproj-dev \ libvtk6-dev \ -- GitLab From ea31fc11a61e9aa39d526eba8e74d4b9e897a0e1 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 21 Apr 2020 12:44:13 -0400 Subject: [PATCH 345/717] add more explicit note about lack of support for pair styles in compute centroid/stress/atom --- doc/src/compute_stress_atom.rst | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/doc/src/compute_stress_atom.rst b/doc/src/compute_stress_atom.rst index 48e8b9c69c..b8b3cb0ea1 100644 --- a/doc/src/compute_stress_atom.rst +++ b/doc/src/compute_stress_atom.rst @@ -2,6 +2,7 @@ compute stress/atom command =========================== + compute centroid/stress/atom command ==================================== @@ -223,15 +224,14 @@ The per-atom array values will be in pressure\*volume Restrictions """""""""""" -Currently, compute *centroid/stress/atom* does not support -pair styles with many-body interactions, -such as :doc:`Tersoff `, -and LAMMPS will generate an error in such cases. -In principal, equivalent formulation -to that of angle, dihedral and improper contributions -in the virial :math:`W_{ab}` formula -can also be applied to the many-body pair styles, -and is planned in the future. + +Currently (Spring 2020), compute *centroid/stress/atom* does not support +pair styles with many-body interactions, such as :doc:`Tersoff +`, or pair styles with long-range Coulomb interactions. +LAMMPS will generate an error in such cases. In principal, equivalent +formulation to that of angle, dihedral and improper contributions in the +virial :math:`W_{ab}` formula can also be applied to the many-body pair +styles, and is planned in the future. Related commands """""""""""""""" -- GitLab From 0f9d8efe69817b3f8fc478bec2d29dce2712e05e Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 21 Apr 2020 12:50:27 -0400 Subject: [PATCH 346/717] state in external Kokkos error message the version 3.1 or later is required --- cmake/Modules/Packages/KOKKOS.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/Modules/Packages/KOKKOS.cmake b/cmake/Modules/Packages/KOKKOS.cmake index 3aaba0c4fd..eb549519d1 100644 --- a/cmake/Modules/Packages/KOKKOS.cmake +++ b/cmake/Modules/Packages/KOKKOS.cmake @@ -55,7 +55,7 @@ if(DOWNLOAD_KOKKOS) elseif(EXTERNAL_KOKKOS) find_package(Kokkos 3.1) if(NOT Kokkos_FOUND) - message(FATAL_ERROR "KOKKOS library not found, help CMake to find it by setting KOKKOS_LIBRARY, or set DOWNLOAD_KOKKOS=ON to download it") + message(FATAL_ERROR "KOKKOS library version 3.1 or later not found, help CMake to find it by setting KOKKOS_LIBRARY, or set DOWNLOAD_KOKKOS=ON to download it") endif() target_link_libraries(lammps PRIVATE Kokkos::kokkos) else() -- GitLab From db4c6e4056027e6346e24b3829ef0f8895c868d6 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 21 Apr 2020 19:31:18 -0400 Subject: [PATCH 347/717] update include file conventions since we no longer require C++98 for LAMMPS core files --- doc/include-file-conventions.md | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) diff --git a/doc/include-file-conventions.md b/doc/include-file-conventions.md index 132f2ec4eb..1b8e79d71e 100644 --- a/doc/include-file-conventions.md +++ b/doc/include-file-conventions.md @@ -49,22 +49,15 @@ include files provided with LAMMPS are included with double quotes For headers declaring functions of the C-library, the corresponding C++ versions should be included (examples: `#include ` or -`#include `). However, these includes are limited to those defined -in the C++98 standard. Some files thus must use the older style until -the minimum C++ standard requirement of LAMMPS is lifted to C++11 or -even beyond (examples: `#include ` versus `#include ` -or `#include ` versus `#include `). +`#include ` instead of `#include ` or +`#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 such as 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. +LAMMPS core files use standard conforming C++ compatible with the +C++11 standard, unless explicitly noted. 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 -- GitLab From 5eccaecf9b59fba1fae6408a87a896b5a9ba6cac Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 21 Apr 2020 19:31:57 -0400 Subject: [PATCH 348/717] use #include now that we require C++11 --- src/hashlittle.h | 2 +- src/info.cpp | 2 +- src/math_special.cpp | 2 +- src/timer.cpp | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/hashlittle.h b/src/hashlittle.h index 75380d366b..aafde922b7 100644 --- a/src/hashlittle.h +++ b/src/hashlittle.h @@ -6,7 +6,7 @@ #define LMP_HASHLITTLE_H #include -#include +#include namespace LAMMPS_NS { uint32_t hashlittle(const void *key, size_t length, uint32_t); diff --git a/src/info.cpp b/src/info.cpp index c02a0499fc..9cb6528f7d 100644 --- a/src/info.cpp +++ b/src/info.cpp @@ -53,7 +53,7 @@ #ifdef _WIN32 #define PSAPI_VERSION 1 #include -#include // requires C++-11 +#include #include #else #include diff --git a/src/math_special.cpp b/src/math_special.cpp index d4abc36f25..c8aa248910 100644 --- a/src/math_special.cpp +++ b/src/math_special.cpp @@ -1,6 +1,6 @@ #include "math_special.h" #include -#include // IWYU pragma: keep +#include // IWYU pragma: keep using namespace LAMMPS_NS; diff --git a/src/timer.cpp b/src/timer.cpp index 0a5e56ab35..41a0166a89 100644 --- a/src/timer.cpp +++ b/src/timer.cpp @@ -21,7 +21,7 @@ #ifdef _WIN32 #include -#include // requires C++-11 +#include #else #include #include -- GitLab From 0288bb4b6b2d0eec681ee428d57cd81b18e1d081 Mon Sep 17 00:00:00 2001 From: wverestek Date: Wed, 22 Apr 2020 13:27:10 +0200 Subject: [PATCH 349/717] small modification to fix bond/react to allow equal style variables as probability o On branch master Your branch is up to date with 'origin/master'. Changes to be committed: modified: doc/src/fix_bond_react.rst new file: examples/USER/reaction/nylon,6-6_melt/in.large_nylon_melt_variable_probability modified: src/USER-REACTION/fix_bond_react.cpp modified: src/USER-REACTION/fix_bond_react.h --- doc/src/fix_bond_react.rst | 6 +- .../in.large_nylon_melt_variable_probability | 55 +++++++++++++++++++ src/USER-REACTION/fix_bond_react.cpp | 35 +++++++++++- src/USER-REACTION/fix_bond_react.h | 1 + 4 files changed, 93 insertions(+), 4 deletions(-) create mode 100644 examples/USER/reaction/nylon,6-6_melt/in.large_nylon_melt_variable_probability diff --git a/doc/src/fix_bond_react.rst b/doc/src/fix_bond_react.rst index 8daa52a73d..3467932500 100644 --- a/doc/src/fix_bond_react.rst +++ b/doc/src/fix_bond_react.rst @@ -419,8 +419,10 @@ it occurs: The *prob* keyword can affect whether or not an eligible reaction actually occurs. The fraction setting must be a value between 0.0 and -1.0. A uniform random number between 0.0 and 1.0 is generated and the -eligible reaction only occurs if the random number is less than the +1.0 or can be an equal style variable. In the later case the variable +is evaluated during runtime and adjusted to be between 0.0 and 1.0 if +necessary. A uniform random number between 0.0 and 1.0 is generated and +the eligible reaction only occurs if the random number is less than the fraction. Up to N reactions are permitted to occur, as optionally specified by the *max_rxn* keyword. diff --git a/examples/USER/reaction/nylon,6-6_melt/in.large_nylon_melt_variable_probability b/examples/USER/reaction/nylon,6-6_melt/in.large_nylon_melt_variable_probability new file mode 100644 index 0000000000..f169f19504 --- /dev/null +++ b/examples/USER/reaction/nylon,6-6_melt/in.large_nylon_melt_variable_probability @@ -0,0 +1,55 @@ +# 35,000 atom nylon melt example + +units real + +boundary p p p + +atom_style full + +kspace_style pppm 1.0e-4 + +pair_style lj/class2/coul/long 8.5 + +angle_style class2 + +bond_style class2 + +dihedral_style class2 + +improper_style class2 + +read_data large_nylon_melt.data.gz + +variable runsteps equal 200 +varaible prob equal step/v_runsteps + +velocity all create 800.0 4928459 dist gaussian + +molecule mol1 rxn1_stp1_unreacted.data_template +molecule mol2 rxn1_stp1_reacted.data_template +molecule mol3 rxn1_stp2_unreacted.data_template +molecule mol4 rxn1_stp2_reacted.data_template + +thermo 50 + +# dump 1 all xyz 100 test_vis.xyz + +fix myrxns all bond/react stabilization yes statted_grp .03 & + react rxn1 all 1 0.0 2.9 mol1 mol2 rxn1_stp1_map & + react rxn2 all 1 0.0 5.0 mol3 mol4 rxn1_stp2_map + +# stable at 800K +fix 1 statted_grp_REACT nvt temp 800 800 100 + +# in order to customize behavior of reacting atoms, +# you can use the internally created 'bond_react_MASTER_group', like so: +# fix 2 bond_react_MASTER_group temp/rescale 1 800 800 10 1 + +thermo_style custom step temp press density f_myrxns[1] f_myrxns[2] # cumulative reaction counts + +# restart 100 restart1 restart2 + +run 200 + +# write_restart restart_longrun +# write_data restart_longrun.data diff --git a/src/USER-REACTION/fix_bond_react.cpp b/src/USER-REACTION/fix_bond_react.cpp index 44e2bd172e..ae4c977f4d 100644 --- a/src/USER-REACTION/fix_bond_react.cpp +++ b/src/USER-REACTION/fix_bond_react.cpp @@ -39,6 +39,8 @@ Contributing Author: Jacob Gissinger (jacob.gissinger@colorado.edu) #include "math_extra.h" #include "memory.h" #include "error.h" +#include "input.h" +#include "variable.h" #include @@ -175,6 +177,8 @@ FixBondReact::FixBondReact(LAMMPS *lmp, int narg, char **arg) : memory->create(nghostlyskips,nreacts,"bond/react:nghostlyskips"); memory->create(seed,nreacts,"bond/react:seed"); memory->create(limit_duration,nreacts,"bond/react:limit_duration"); + memory->create(var_fraction_flag,nreacts,"bond/react:var_fraction_flag"); + memory->create(var_fraction_id,nreacts,"bond/react:var_fraction_id"); memory->create(stabilize_steps_flag,nreacts,"bond/react:stabilize_steps_flag"); memory->create(update_edges_flag,nreacts,"bond/react:update_edges_flag"); memory->create(constraints,1,MAXCONARGS,"bond/react:constraints"); @@ -193,6 +197,8 @@ FixBondReact::FixBondReact(LAMMPS *lmp, int narg, char **arg) : fraction[i] = 1; seed[i] = 12345; max_rxn[i] = INT_MAX; + var_fraction_flag[i] = 0; + var_fraction_id[i] = 0; stabilize_steps_flag[i] = 0; update_edges_flag[i] = 0; // set default limit duration to 60 timesteps @@ -251,7 +257,23 @@ FixBondReact::FixBondReact(LAMMPS *lmp, int narg, char **arg) : if (strcmp(arg[iarg],"prob") == 0) { if (iarg+3 > narg) error->all(FLERR,"Illegal fix bond/react command: " "'prob' keyword has too few arguments"); - fraction[rxn] = force->numeric(FLERR,arg[iarg+1]); + // check if probability is a variable + if (strstr(arg[iarg+1],"v_") == arg[iarg+1]) { + int n = strlen(&arg[iarg+1][2]) + 1; + char *fracstr = new char[n]; + strcpy(fracstr,&arg[iarg+1][2]); + var_fraction_id[rxn] = input->variable->find(fracstr); + if (var_fraction_id[rxn] < 0) + error->all(FLERR,"variable name for fix bond/react does not exist"); + if (! input->variable->equalstyle(var_fraction_id[rxn])) + error->all(FLERR,"variable in bond/react is not equal style"); + fraction[rxn] = input->variable->compute_equal(var_fraction_id[rxnID]); + var_fraction_flag[rxn] = 1.0; + delete [] fracstr; + } else { + // otherwise probability should be a number + fraction[rxn] = force->numeric(FLERR,arg[iarg+1]); + } seed[rxn] = force->inumeric(FLERR,arg[iarg+2]); if (fraction[rxn] < 0.0 || fraction[rxn] > 1.0) error->all(FLERR,"Illegal fix bond/react command: " @@ -447,6 +469,8 @@ FixBondReact::~FixBondReact() memory->destroy(nlocalskips); memory->destroy(nghostlyskips); memory->destroy(limit_duration); + memory->destroy(var_fraction_flag); + memory->destroy(var_fraction_id); memory->destroy(stabilize_steps_flag); memory->destroy(update_edges_flag); @@ -824,10 +848,17 @@ void FixBondReact::post_integrate() comm->reverse_comm_fix(this); } + // update reaction probability + if (var_fraction_flag[rxnID]) { + fraction[rxnID] = input->variable->compute_equal(var_fraction_id[rxnID]); + if (fraction[rxnID] < 0.0) fraction[rxnID] = 0.0; + if (fraction[rxnID] > 1.0) fraction[rxnID] = 1.0; + } + // each atom now knows its winning partner // for prob check, generate random value for each atom with a bond partner // forward comm of partner and random value, so ghosts have it - + if (fraction[rxnID] < 1.0) { for (int i = 0; i < nlocal; i++) if (partner[i]) probability[i] = random[rxnID]->uniform(); diff --git a/src/USER-REACTION/fix_bond_react.h b/src/USER-REACTION/fix_bond_react.h index 84cb9401f8..6f5ec9c7d7 100644 --- a/src/USER-REACTION/fix_bond_react.h +++ b/src/USER-REACTION/fix_bond_react.h @@ -64,6 +64,7 @@ class FixBondReact : public Fix { int custom_exclude_flag; int *stabilize_steps_flag; int *update_edges_flag; + int *var_fraction_flag, *var_fraction_id; int nconstraints; int narrhenius; double **constraints; -- GitLab From 48ab70f9eefe9748330e6888cc2ced70c6d92475 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Wed, 22 Apr 2020 07:30:06 -0400 Subject: [PATCH 350/717] avoid segfault when using compute_scalar() on the initial step and no scaling has yet been done. --- src/fix_heat.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/fix_heat.cpp b/src/fix_heat.cpp index 67d445df92..65ca47c46d 100644 --- a/src/fix_heat.cpp +++ b/src/fix_heat.cpp @@ -300,6 +300,7 @@ double FixHeat::compute_scalar() { double average_scale = scale; if (hstyle == ATOM) { + if (!vscale) return 1.0; double scale_sum = 0.0; int ncount = 0; int *mask = atom->mask; -- GitLab From 1751a27ff6c6fbcc19c15a97b9c7c952f7aaf975 Mon Sep 17 00:00:00 2001 From: wverestek Date: Wed, 22 Apr 2020 14:07:11 +0200 Subject: [PATCH 351/717] removing example script from nylon melt and adding to tiny nylon --- .../in.large_nylon_melt_variable_probability | 55 ----- ...tiny_nylon.stabilized_variable_probability | 56 +++++ .../log.22Apr20.tiny_nylon.unstabilized.g++ | 199 ++++++++++++++++++ 3 files changed, 255 insertions(+), 55 deletions(-) delete mode 100644 examples/USER/reaction/nylon,6-6_melt/in.large_nylon_melt_variable_probability create mode 100644 examples/USER/reaction/tiny_nylon/in.tiny_nylon.stabilized_variable_probability create mode 100644 examples/USER/reaction/tiny_nylon/log.22Apr20.tiny_nylon.unstabilized.g++ diff --git a/examples/USER/reaction/nylon,6-6_melt/in.large_nylon_melt_variable_probability b/examples/USER/reaction/nylon,6-6_melt/in.large_nylon_melt_variable_probability deleted file mode 100644 index f169f19504..0000000000 --- a/examples/USER/reaction/nylon,6-6_melt/in.large_nylon_melt_variable_probability +++ /dev/null @@ -1,55 +0,0 @@ -# 35,000 atom nylon melt example - -units real - -boundary p p p - -atom_style full - -kspace_style pppm 1.0e-4 - -pair_style lj/class2/coul/long 8.5 - -angle_style class2 - -bond_style class2 - -dihedral_style class2 - -improper_style class2 - -read_data large_nylon_melt.data.gz - -variable runsteps equal 200 -varaible prob equal step/v_runsteps - -velocity all create 800.0 4928459 dist gaussian - -molecule mol1 rxn1_stp1_unreacted.data_template -molecule mol2 rxn1_stp1_reacted.data_template -molecule mol3 rxn1_stp2_unreacted.data_template -molecule mol4 rxn1_stp2_reacted.data_template - -thermo 50 - -# dump 1 all xyz 100 test_vis.xyz - -fix myrxns all bond/react stabilization yes statted_grp .03 & - react rxn1 all 1 0.0 2.9 mol1 mol2 rxn1_stp1_map & - react rxn2 all 1 0.0 5.0 mol3 mol4 rxn1_stp2_map - -# stable at 800K -fix 1 statted_grp_REACT nvt temp 800 800 100 - -# in order to customize behavior of reacting atoms, -# you can use the internally created 'bond_react_MASTER_group', like so: -# fix 2 bond_react_MASTER_group temp/rescale 1 800 800 10 1 - -thermo_style custom step temp press density f_myrxns[1] f_myrxns[2] # cumulative reaction counts - -# restart 100 restart1 restart2 - -run 200 - -# write_restart restart_longrun -# write_data restart_longrun.data diff --git a/examples/USER/reaction/tiny_nylon/in.tiny_nylon.stabilized_variable_probability b/examples/USER/reaction/tiny_nylon/in.tiny_nylon.stabilized_variable_probability new file mode 100644 index 0000000000..2c101ac77c --- /dev/null +++ b/examples/USER/reaction/tiny_nylon/in.tiny_nylon.stabilized_variable_probability @@ -0,0 +1,56 @@ +# two monomer nylon example +# reaction produces a condensed water molecule + +units real + +boundary p p p + +atom_style full + +kspace_style pppm 1.0e-4 + +pair_style lj/class2/coul/long 8.5 + +angle_style class2 + +bond_style class2 + +dihedral_style class2 + +improper_style class2 + +read_data tiny_nylon.data + +variable runsteps equal 1000 +variable prob1 equal step/v_runsteps*2 +variable prob2 equal (step/v_runsteps)>0.5 + +velocity all create 300.0 4928459 dist gaussian + +molecule mol1 rxn1_stp1_unreacted.data_template +molecule mol2 rxn1_stp1_reacted.data_template +molecule mol3 rxn1_stp2_unreacted.data_template +molecule mol4 rxn1_stp2_reacted.data_template + +thermo 50 + +# dump 1 all xyz 1 test_vis.xyz + +fix myrxns all bond/react stabilization yes statted_grp .03 & + react rxn1 all 1 0.0 5.0 mol1 mol2 rxn1_stp1_map prob v_prob1 1234 & + react rxn2 all 1 0.0 5.0 mol3 mol4 rxn1_stp2_map prob v_prob2 1234 + +fix 1 statted_grp_REACT nvt temp 300 300 100 + +# optionally, you can customize behavior of reacting atoms, +# by using the internally-created 'bond_react_MASTER_group', like so: +fix 4 bond_react_MASTER_group temp/rescale 1 300 300 10 1 + +thermo_style custom step temp press density v_prob1 v_prob2 f_myrxns[1] f_myrxns[2] + +# restart 100 restart1 restart2 + +run ${runsteps} + +# write_restart restart_longrun +# write_data restart_longrun.data diff --git a/examples/USER/reaction/tiny_nylon/log.22Apr20.tiny_nylon.unstabilized.g++ b/examples/USER/reaction/tiny_nylon/log.22Apr20.tiny_nylon.unstabilized.g++ new file mode 100644 index 0000000000..9fbd807c85 --- /dev/null +++ b/examples/USER/reaction/tiny_nylon/log.22Apr20.tiny_nylon.unstabilized.g++ @@ -0,0 +1,199 @@ +LAMMPS (15 Apr 2020) +# two monomer nylon example +# reaction produces a condensed water molecule + +units real + +boundary p p p + +atom_style full + +kspace_style pppm 1.0e-4 + +pair_style lj/class2/coul/long 8.5 + +angle_style class2 + +bond_style class2 + +dihedral_style class2 + +improper_style class2 + +read_data tiny_nylon.data + orthogonal box = (-25 -25 -25) to (25 25 25) + 1 by 1 by 1 MPI processor grid + reading atoms ... + 44 atoms + reading velocities ... + 44 velocities + scanning bonds ... + 9 = max bonds/atom + scanning angles ... + 21 = max angles/atom + scanning dihedrals ... + 29 = max dihedrals/atom + scanning impropers ... + 29 = max impropers/atom + reading bonds ... + 42 bonds + reading angles ... + 74 angles + reading dihedrals ... + 100 dihedrals + reading impropers ... + 44 impropers + 4 = max # of 1-2 neighbors + 6 = max # of 1-3 neighbors + 12 = max # of 1-4 neighbors + 41 = max # of special neighbors + special bonds CPU = 0.000278722 secs + read_data CPU = 0.0146239 secs + +variable runsteps equal 1000 +variable prob1 equal step/v_runsteps*2 +variable prob2 equal (step/v_runsteps)>0.5 + +velocity all create 300.0 4928459 dist gaussian + +molecule mol1 rxn1_stp1_unreacted.data_template +Read molecule template mol1: + 1 molecules + 18 atoms with max type 8 + 16 bonds with max type 14 + 25 angles with max type 28 + 23 dihedrals with max type 36 + 14 impropers with max type 11 +molecule mol2 rxn1_stp1_reacted.data_template +Read molecule template mol2: + 1 molecules + 18 atoms with max type 9 + 17 bonds with max type 13 + 31 angles with max type 27 + 39 dihedrals with max type 33 + 20 impropers with max type 1 +molecule mol3 rxn1_stp2_unreacted.data_template +Read molecule template mol3: + 1 molecules + 15 atoms with max type 9 + 14 bonds with max type 13 + 25 angles with max type 27 + 30 dihedrals with max type 33 + 16 impropers with max type 1 +molecule mol4 rxn1_stp2_reacted.data_template +Read molecule template mol4: + 1 molecules + 15 atoms with max type 11 + 13 bonds with max type 15 + 19 angles with max type 29 + 16 dihedrals with max type 32 + 10 impropers with max type 13 + +thermo 50 + +dump 1 all xyz 1 test_vis.xyz + +fix myrxns all bond/react stabilization yes statted_grp .03 react rxn1 all 1 0.0 5.0 mol1 mol2 rxn1_stp1_map prob v_prob1 1234 react rxn2 all 1 0.0 5.0 mol3 mol4 rxn1_stp2_map prob v_prob2 1234 +WARNING: Bond/react: Atom affected by reaction rxn1 too close to template edge (../fix_bond_react.cpp:2052) +WARNING: Bond/react: Atom affected by reaction rxn2 too close to template edge (../fix_bond_react.cpp:2052) +dynamic group bond_react_MASTER_group defined +dynamic group statted_grp_REACT defined + +fix 1 statted_grp_REACT nvt temp 300 300 100 + +# optionally, you can customize behavior of reacting atoms, +# by using the internally-created 'bond_react_MASTER_group', like so: +fix 4 bond_react_MASTER_group temp/rescale 1 300 300 10 1 + +thermo_style custom step temp press density v_prob1 v_prob2 f_myrxns[1] f_myrxns[2] + +# restart 100 restart1 restart2 + +run ${runsteps} +run 1000 +PPPM initialization ... + using 12-bit tables for long-range coulomb (../kspace.cpp:332) + G vector (1/distance) = 0.0534597 + grid = 2 2 2 + stencil order = 5 + estimated absolute RMS force accuracy = 0.0402256 + estimated relative force accuracy = 0.000121138 + using double precision KISS FFT + 3d grid and FFT values/proc = 343 8 +Neighbor list info ... + update every 1 steps, delay 10 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 10.5 + ghost atom cutoff = 10.5 + binsize = 5.25, bins = 10 10 10 + 2 neighbor lists, perpetual/occasional/extra = 1 1 0 + (1) pair lj/class2/coul/long, perpetual + attributes: half, newton on + pair build: half/bin/newton + stencil: half/bin/3d/newton + bin: standard + (2) fix bond/react, occasional, copy from (1) + attributes: half, newton on + pair build: copy + stencil: none + bin: none +WARNING: Inconsistent image flags (../domain.cpp:812) +Per MPI rank memory allocation (min/avg/max) = 34.78 | 34.78 | 34.78 Mbytes +Step Temp Press Density v_prob1 v_prob2 f_myrxns[1] f_myrxns[2] + 0 300 346.78165 0.0034851739 0 0 0 0 + 50 262.63913 -492.10749 0.0034851739 0.1 0 1 0 + 100 766.52962 -29.714349 0.0034851739 0.2 0 1 0 + 150 503.86837 50.220304 0.0034851739 0.3 0 1 0 + 200 456.51295 12.312892 0.0034851739 0.4 0 1 0 + 250 391.54928 9.2335844 0.0034851739 0.5 0 1 0 + 300 336.6988 -47.193937 0.0034851739 0.6 0 1 0 + 350 254.06985 -9.2867898 0.0034851739 0.7 0 1 0 + 400 259.41098 -25.657321 0.0034851739 0.8 0 1 0 + 450 258.10364 22.5086 0.0034851739 0.9 0 1 0 + 500 272.13412 -6.5391448 0.0034851739 1 0 1 0 + 550 202.75504 54.658731 0.0034851739 1.1 1 1 1 + 600 344.79887 23.798478 0.0034851739 1.2 1 1 1 + 650 328.44488 -29.908484 0.0034851739 1.3 1 1 1 + 700 280.13593 -8.3223255 0.0034851739 1.4 1 1 1 + 750 300.67624 1.0632669 0.0034851739 1.5 1 1 1 + 800 376.64234 12.488392 0.0034851739 1.6 1 1 1 + 850 321.07642 19.814074 0.0034851739 1.7 1 1 1 + 900 332.23751 30.814079 0.0034851739 1.8 1 1 1 + 950 311.14029 5.7853136 0.0034851739 1.9 1 1 1 + 1000 253.14634 -37.560642 0.0034851739 2 1 1 1 +Loop time of 0.580684 on 1 procs for 1000 steps with 44 atoms + +Performance: 148.790 ns/day, 0.161 hours/ns, 1722.106 timesteps/s +95.0% CPU use with 1 MPI tasks x no OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 0.090707 | 0.090707 | 0.090707 | 0.0 | 15.62 +Bond | 0.18541 | 0.18541 | 0.18541 | 0.0 | 31.93 +Kspace | 0.065715 | 0.065715 | 0.065715 | 0.0 | 11.32 +Neigh | 0.085003 | 0.085003 | 0.085003 | 0.0 | 14.64 +Comm | 0.0068229 | 0.0068229 | 0.0068229 | 0.0 | 1.17 +Output | 0.096583 | 0.096583 | 0.096583 | 0.0 | 16.63 +Modify | 0.047377 | 0.047377 | 0.047377 | 0.0 | 8.16 +Other | | 0.00307 | | | 0.53 + +Nlocal: 44 ave 44 max 44 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 3 ave 3 max 3 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 722 ave 722 max 722 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 722 +Ave neighs/atom = 16.4091 +Ave special neighs/atom = 9.77273 +Neighbor list builds = 1000 +Dangerous builds = 0 + +# write_restart restart_longrun +# write_data restart_longrun.data + +Please see the log.cite file for references relevant to this simulation + +Total wall time: 0:00:00 -- GitLab From 34d73a3c67075f837b928d4a9e59308ebb1a1f49 Mon Sep 17 00:00:00 2001 From: wverestek <46591944+wverestek@users.noreply.github.com> Date: Wed, 22 Apr 2020 14:10:43 +0200 Subject: [PATCH 352/717] wrong script. --- .../in.large_nylon_melt_variable_probability | 55 ------------------- 1 file changed, 55 deletions(-) delete mode 100644 examples/USER/reaction/nylon,6-6_melt/in.large_nylon_melt_variable_probability diff --git a/examples/USER/reaction/nylon,6-6_melt/in.large_nylon_melt_variable_probability b/examples/USER/reaction/nylon,6-6_melt/in.large_nylon_melt_variable_probability deleted file mode 100644 index f169f19504..0000000000 --- a/examples/USER/reaction/nylon,6-6_melt/in.large_nylon_melt_variable_probability +++ /dev/null @@ -1,55 +0,0 @@ -# 35,000 atom nylon melt example - -units real - -boundary p p p - -atom_style full - -kspace_style pppm 1.0e-4 - -pair_style lj/class2/coul/long 8.5 - -angle_style class2 - -bond_style class2 - -dihedral_style class2 - -improper_style class2 - -read_data large_nylon_melt.data.gz - -variable runsteps equal 200 -varaible prob equal step/v_runsteps - -velocity all create 800.0 4928459 dist gaussian - -molecule mol1 rxn1_stp1_unreacted.data_template -molecule mol2 rxn1_stp1_reacted.data_template -molecule mol3 rxn1_stp2_unreacted.data_template -molecule mol4 rxn1_stp2_reacted.data_template - -thermo 50 - -# dump 1 all xyz 100 test_vis.xyz - -fix myrxns all bond/react stabilization yes statted_grp .03 & - react rxn1 all 1 0.0 2.9 mol1 mol2 rxn1_stp1_map & - react rxn2 all 1 0.0 5.0 mol3 mol4 rxn1_stp2_map - -# stable at 800K -fix 1 statted_grp_REACT nvt temp 800 800 100 - -# in order to customize behavior of reacting atoms, -# you can use the internally created 'bond_react_MASTER_group', like so: -# fix 2 bond_react_MASTER_group temp/rescale 1 800 800 10 1 - -thermo_style custom step temp press density f_myrxns[1] f_myrxns[2] # cumulative reaction counts - -# restart 100 restart1 restart2 - -run 200 - -# write_restart restart_longrun -# write_data restart_longrun.data -- GitLab From 73bf1874c5f8f284da7658c06b4d40460395e02b Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Wed, 22 Apr 2020 08:12:56 -0400 Subject: [PATCH 353/717] update code owner entry for fix bond/react --- .github/CODEOWNERS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index d44b3dfb4d..87f3dd1f22 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -45,7 +45,7 @@ src/GPU/pair_vashishta_gpu.* @andeplane src/KOKKOS/pair_vashishta_kokkos.* @andeplane src/MANYBODY/pair_vashishta_table.* @andeplane src/MANYBODY/pair_atm.* @sergeylishchuk -src/USER-MISC/fix_bond_react.* @jrgissing +src/USER-REACTION/fix_bond_react.* @jrgissing src/USER-MISC/*_grem.* @dstelter92 src/USER-MISC/compute_stress_mop*.* @RomainVermorel -- GitLab From fc10e885b20888bec0077ab9a0391f7f3d014d74 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Wed, 22 Apr 2020 08:13:27 -0400 Subject: [PATCH 354/717] make description of eflux as a variable less convoluted --- doc/src/fix_heat.rst | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/doc/src/fix_heat.rst b/doc/src/fix_heat.rst index 82a2b6e7f8..5bb6402d46 100644 --- a/doc/src/fix_heat.rst +++ b/doc/src/fix_heat.rst @@ -47,16 +47,22 @@ and the specified geometric :doc:`region ` in order to have energy added or subtracted to it. If not specified, then the atoms in the group are affected wherever they may move to. -Heat addition/subtraction is performed every N timesteps. The *eflux* -parameter can be specified as a numeric constant or as a variable (see -below). If it is a numeric constant or equal-style variable which -evaluates to a scalar value, then the *eflux* determines the change in -aggregate energy of the entire group of atoms per unit time, e.g. in -eV/psec for :doc:`metal units `. In this case it is an -"extensive" quantity, meaning its magnitude should be scaled with the -number of atoms in the group. Note that since *eflux* has per-time -units (i.e. it is a flux), this means that a larger value of N will -add/subtract a larger amount of energy each time the fix is invoked. +Heat addition/subtraction is performed every N timesteps. + +The *eflux* parameter can be specified as a numeric constant or as an +equal- or atom-style :doc:`variable `. If the value is a +variable, it should be specified as v_name, where *name* is the variable +name. In this case, the variable will be evaluated each timestep, and +its current value(s) used to determine the flux. + +If *eflux* is a numeric constant or equal-style variable which evaluates +to a scalar value, then *eflux* determines the change in aggregate energy +of the entire group of atoms per unit time, e.g. in eV/psec for +:doc:`metal units `. In this case it is an "extensive" quantity, +meaning its magnitude should be scaled with the number of atoms in the +group. Note that since *eflux* also has per-time units (i.e. it is a +flux), this means that a larger value of N will add/subtract a larger +amount of energy each time the fix is invoked. .. note:: @@ -71,12 +77,6 @@ the energy flux for a single atom, again in units of energy per unit time. In this case, each value is an "intensive" quantity, which need not be scaled with the number of atoms in the group. -As mentioned above, the *eflux* parameter can be specified as an -equal-style or atom_style :doc:`variable `. If the value is a -variable, it should be specified as v_name, where name is the variable -name. In this case, the variable will be evaluated each timestep, and -its value(s) used to determine the flux. - Equal-style variables can specify formulas with various mathematical functions, and include :doc:`thermo_style ` command keywords for the simulation box parameters and timestep and elapsed -- GitLab From 2493987875de2f31b84ee289e764adadde05f0a8 Mon Sep 17 00:00:00 2001 From: Josh Vita Date: Wed, 22 Apr 2020 14:33:20 -0500 Subject: [PATCH 355/717] Fix binning bug --- src/USER-MISC/pair_meam_spline.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/USER-MISC/pair_meam_spline.h b/src/USER-MISC/pair_meam_spline.h index 7b5ff3bf6d..e717d676bb 100644 --- a/src/USER-MISC/pair_meam_spline.h +++ b/src/USER-MISC/pair_meam_spline.h @@ -142,7 +142,7 @@ protected: ((a*a*a - a) * Y2[klo] + (b*b*b - b) * Y2[khi])*(h*h)/6.0; #else // For a spline with regular grid, we directly calculate the interval X is in. - int klo = (int)(x / h); + int klo = (int)(x*(1/h)); int khi = klo + 1; double a = Xs[khi] - x; double b = h - a; -- GitLab From 623f03e3225a01f1cee996addee51e9364ea6be4 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Wed, 22 Apr 2020 14:21:34 -0600 Subject: [PATCH 356/717] cmake: add support for latte super-build --- cmake/Modules/Packages/LATTE.cmake | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/cmake/Modules/Packages/LATTE.cmake b/cmake/Modules/Packages/LATTE.cmake index 4ce8888f37..d6eca1bbbd 100644 --- a/cmake/Modules/Packages/LATTE.cmake +++ b/cmake/Modules/Packages/LATTE.cmake @@ -1,4 +1,11 @@ enable_language(Fortran) + +# using lammps in a super-build setting +if(TARGET LATTE::latte) + target_link_libraries(lammps PRIVATE LATTE::latte) + return() +endif() + find_package(LATTE) if(LATTE_FOUND) set(DOWNLOAD_LATTE_DEFAULT OFF) -- GitLab From 1a286d5722167184f0543752f8dfc61a256588b1 Mon Sep 17 00:00:00 2001 From: Josh Vita Date: Wed, 22 Apr 2020 16:14:11 -0500 Subject: [PATCH 357/717] Fix repeat of same bug --- src/USER-MISC/pair_meam_spline.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/USER-MISC/pair_meam_spline.h b/src/USER-MISC/pair_meam_spline.h index e717d676bb..9ef5b57381 100644 --- a/src/USER-MISC/pair_meam_spline.h +++ b/src/USER-MISC/pair_meam_spline.h @@ -186,7 +186,7 @@ protected: (b*b*b - b) * Y2[khi]) * (h*h) / 6.0; #else // For a spline with regular grid, we directly calculate the interval X is in. - int klo = (int)(x / h); + int klo = (int)(x*(1/h)); int khi = klo + 1; double a = Xs[khi] - x; double b = h - a; -- GitLab From 68dd6d0f19b669c29b60ebcc4fd069f8e8cd5d33 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Thu, 23 Apr 2020 09:20:38 -0600 Subject: [PATCH 358/717] cmake: move kim-api detection to cmake config --- cmake/LAMMPSConfig.cmake.in | 4 ++-- cmake/Modules/Packages/KIM.cmake | 18 ++++++++---------- 2 files changed, 10 insertions(+), 12 deletions(-) diff --git a/cmake/LAMMPSConfig.cmake.in b/cmake/LAMMPSConfig.cmake.in index 7cd782b3b8..969bd6e929 100644 --- a/cmake/LAMMPSConfig.cmake.in +++ b/cmake/LAMMPSConfig.cmake.in @@ -20,8 +20,8 @@ if(NOT @BUILD_SHARED_LIBS@) find_dependency(ZLIB REQUIRED) endif() if(@PKG_KIM@) - find_dependency(PkgConfig REQUIRED) - pkg_check_modules(KIM-API REQUIRED IMPORTED_TARGET libkim-api>=@KIM-API_MIN_VERSION@) + find_package(KIM-API @KIM-API_MIN_VERSION@ CONFIG REQUIRED) + add_kim_api_imported_library() if(@CURL_FOUND@) find_dependency(CURL REQUIRED) endif() diff --git a/cmake/Modules/Packages/KIM.cmake b/cmake/Modules/Packages/KIM.cmake index b4e1fb3502..2a9cb739f7 100644 --- a/cmake/Modules/Packages/KIM.cmake +++ b/cmake/Modules/Packages/KIM.cmake @@ -14,13 +14,11 @@ if(CURL_FOUND) target_compile_definitions(lammps PRIVATE -DLMP_NO_SSL_CHECK) endif() endif() -find_package(PkgConfig QUIET) -set(DOWNLOAD_KIM_DEFAULT ON) -if(PKG_CONFIG_FOUND) - pkg_check_modules(KIM-API QUIET libkim-api>=${KIM-API_MIN_VERSION}) - if(KIM-API_FOUND) - set(DOWNLOAD_KIM_DEFAULT OFF) - endif() +find_package(KIM-API ${KIM-API_MIN_VERSION} CONFIG) +if(KIM-API_FOUND) + set(DOWNLOAD_KIM_DEFAULT OFF) +else() + set(DOWNLOAD_KIM_DEFAULT ON) endif() option(DOWNLOAD_KIM "Download KIM-API from OpenKIM instead of using an already installed one" ${DOWNLOAD_KIM_DEFAULT}) if(DOWNLOAD_KIM) @@ -55,7 +53,7 @@ if(DOWNLOAD_KIM) install(CODE "MESSAGE(FATAL_ERROR \"Installing liblammps with downloaded libraries is currently not supported.\")") endif() else() - find_package(PkgConfig REQUIRED) - pkg_check_modules(KIM-API REQUIRED IMPORTED_TARGET libkim-api>=${KIM-API_MIN_VERSION}) - target_link_libraries(lammps PRIVATE PkgConfig::KIM-API) + find_package(KIM-API ${KIM-API_MIN_VERSION} CONFIG REQUIRED) + add_kim_api_imported_library() + target_link_libraries(lammps PRIVATE kim-api) endif() -- GitLab From 5a9cc9e38056472cfa192ca24ab60ca3a9d7b37f Mon Sep 17 00:00:00 2001 From: wverestek Date: Fri, 24 Apr 2020 09:35:32 +0200 Subject: [PATCH 359/717] updated log files --- .../log.22Apr20.tiny_nylon.unstabilized.g++.1 | 201 ++++++++++++++++++ .../log.22Apr20.tiny_nylon.unstabilized.g++.4 | 201 ++++++++++++++++++ 2 files changed, 402 insertions(+) create mode 100644 examples/USER/reaction/tiny_nylon/log.22Apr20.tiny_nylon.unstabilized.g++.1 create mode 100644 examples/USER/reaction/tiny_nylon/log.22Apr20.tiny_nylon.unstabilized.g++.4 diff --git a/examples/USER/reaction/tiny_nylon/log.22Apr20.tiny_nylon.unstabilized.g++.1 b/examples/USER/reaction/tiny_nylon/log.22Apr20.tiny_nylon.unstabilized.g++.1 new file mode 100644 index 0000000000..16e4deef51 --- /dev/null +++ b/examples/USER/reaction/tiny_nylon/log.22Apr20.tiny_nylon.unstabilized.g++.1 @@ -0,0 +1,201 @@ +LAMMPS (15 Apr 2020) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:94) + using 1 OpenMP thread(s) per MPI task +# two monomer nylon example +# reaction produces a condensed water molecule + +units real + +boundary p p p + +atom_style full + +kspace_style pppm 1.0e-4 + +pair_style lj/class2/coul/long 8.5 + +angle_style class2 + +bond_style class2 + +dihedral_style class2 + +improper_style class2 + +read_data tiny_nylon.data + orthogonal box = (-25 -25 -25) to (25 25 25) + 1 by 1 by 1 MPI processor grid + reading atoms ... + 44 atoms + reading velocities ... + 44 velocities + scanning bonds ... + 9 = max bonds/atom + scanning angles ... + 21 = max angles/atom + scanning dihedrals ... + 29 = max dihedrals/atom + scanning impropers ... + 29 = max impropers/atom + reading bonds ... + 42 bonds + reading angles ... + 74 angles + reading dihedrals ... + 100 dihedrals + reading impropers ... + 44 impropers + 4 = max # of 1-2 neighbors + 6 = max # of 1-3 neighbors + 12 = max # of 1-4 neighbors + 41 = max # of special neighbors + special bonds CPU = 0.000385045 secs + read_data CPU = 0.013443 secs + +variable runsteps equal 1000 +variable prob1 equal step/v_runsteps*2 +variable prob2 equal (step/v_runsteps)>0.5 + +velocity all create 300.0 4928459 dist gaussian + +molecule mol1 rxn1_stp1_unreacted.data_template +Read molecule template mol1: + 1 molecules + 18 atoms with max type 8 + 16 bonds with max type 14 + 25 angles with max type 28 + 23 dihedrals with max type 36 + 14 impropers with max type 11 +molecule mol2 rxn1_stp1_reacted.data_template +Read molecule template mol2: + 1 molecules + 18 atoms with max type 9 + 17 bonds with max type 13 + 31 angles with max type 27 + 39 dihedrals with max type 33 + 20 impropers with max type 1 +molecule mol3 rxn1_stp2_unreacted.data_template +Read molecule template mol3: + 1 molecules + 15 atoms with max type 9 + 14 bonds with max type 13 + 25 angles with max type 27 + 30 dihedrals with max type 33 + 16 impropers with max type 1 +molecule mol4 rxn1_stp2_reacted.data_template +Read molecule template mol4: + 1 molecules + 15 atoms with max type 11 + 13 bonds with max type 15 + 19 angles with max type 29 + 16 dihedrals with max type 32 + 10 impropers with max type 13 + +thermo 50 + +# dump 1 all xyz 1 test_vis.xyz + +fix myrxns all bond/react stabilization yes statted_grp .03 react rxn1 all 1 0.0 5.0 mol1 mol2 rxn1_stp1_map prob v_prob1 1234 react rxn2 all 1 0.0 5.0 mol3 mol4 rxn1_stp2_map prob v_prob2 1234 +WARNING: Bond/react: Atom affected by reaction rxn1 too close to template edge (src/USER-REACTION/fix_bond_react.cpp:2051) +WARNING: Bond/react: Atom affected by reaction rxn2 too close to template edge (src/USER-REACTION/fix_bond_react.cpp:2051) +dynamic group bond_react_MASTER_group defined +dynamic group statted_grp_REACT defined + +fix 1 statted_grp_REACT nvt temp 300 300 100 + +# optionally, you can customize behavior of reacting atoms, +# by using the internally-created 'bond_react_MASTER_group', like so: +fix 4 bond_react_MASTER_group temp/rescale 1 300 300 10 1 + +thermo_style custom step temp press density v_prob1 v_prob2 f_myrxns[1] f_myrxns[2] + +# restart 100 restart1 restart2 + +run ${runsteps} +run 1000 +PPPM initialization ... + using 12-bit tables for long-range coulomb (src/kspace.cpp:332) + G vector (1/distance) = 0.0534597 + grid = 2 2 2 + stencil order = 5 + estimated absolute RMS force accuracy = 0.0402256 + estimated relative force accuracy = 0.000121138 + using double precision FFTW3 + 3d grid and FFT values/proc = 343 8 +Neighbor list info ... + update every 1 steps, delay 10 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 10.5 + ghost atom cutoff = 10.5 + binsize = 5.25, bins = 10 10 10 + 2 neighbor lists, perpetual/occasional/extra = 1 1 0 + (1) pair lj/class2/coul/long, perpetual + attributes: half, newton on + pair build: half/bin/newton + stencil: half/bin/3d/newton + bin: standard + (2) fix bond/react, occasional, copy from (1) + attributes: half, newton on + pair build: copy + stencil: none + bin: none +WARNING: Inconsistent image flags (src/domain.cpp:812) +Per MPI rank memory allocation (min/avg/max) = 33.78 | 33.78 | 33.78 Mbytes +Step Temp Press Density v_prob1 v_prob2 f_myrxns[1] f_myrxns[2] + 0 300 346.78165 0.0034851739 0 0 0 0 + 50 262.63913 -492.10749 0.0034851739 0.1 0 1 0 + 100 766.52962 -29.714349 0.0034851739 0.2 0 1 0 + 150 503.86837 50.220304 0.0034851739 0.3 0 1 0 + 200 456.51295 12.312892 0.0034851739 0.4 0 1 0 + 250 391.54928 9.2335844 0.0034851739 0.5 0 1 0 + 300 336.6988 -47.193937 0.0034851739 0.6 0 1 0 + 350 254.06985 -9.2867898 0.0034851739 0.7 0 1 0 + 400 259.41098 -25.657321 0.0034851739 0.8 0 1 0 + 450 258.10364 22.5086 0.0034851739 0.9 0 1 0 + 500 272.13412 -6.5391448 0.0034851739 1 0 1 0 + 550 202.75504 54.658731 0.0034851739 1.1 1 1 1 + 600 344.79887 23.798478 0.0034851739 1.2 1 1 1 + 650 328.44488 -29.908484 0.0034851739 1.3 1 1 1 + 700 280.13593 -8.3223255 0.0034851739 1.4 1 1 1 + 750 300.67624 1.0632669 0.0034851739 1.5 1 1 1 + 800 376.64234 12.488392 0.0034851739 1.6 1 1 1 + 850 321.07642 19.814074 0.0034851739 1.7 1 1 1 + 900 332.23751 30.814079 0.0034851739 1.8 1 1 1 + 950 311.14029 5.7853136 0.0034851739 1.9 1 1 1 + 1000 253.14634 -37.560642 0.0034851739 2 1 1 1 +Loop time of 0.379454 on 1 procs for 1000 steps with 44 atoms + +Performance: 227.696 ns/day, 0.105 hours/ns, 2635.368 timesteps/s +99.6% 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.069723 | 0.069723 | 0.069723 | 0.0 | 18.37 +Bond | 0.14802 | 0.14802 | 0.14802 | 0.0 | 39.01 +Kspace | 0.044252 | 0.044252 | 0.044252 | 0.0 | 11.66 +Neigh | 0.072359 | 0.072359 | 0.072359 | 0.0 | 19.07 +Comm | 0.0044748 | 0.0044748 | 0.0044748 | 0.0 | 1.18 +Output | 0.0022775 | 0.0022775 | 0.0022775 | 0.0 | 0.60 +Modify | 0.036509 | 0.036509 | 0.036509 | 0.0 | 9.62 +Other | | 0.00184 | | | 0.48 + +Nlocal: 44 ave 44 max 44 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 3 ave 3 max 3 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 722 ave 722 max 722 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 722 +Ave neighs/atom = 16.4091 +Ave special neighs/atom = 9.77273 +Neighbor list builds = 1000 +Dangerous builds = 0 + +# write_restart restart_longrun +# write_data restart_longrun.data + +Please see the log.cite file for references relevant to this simulation + +Total wall time: 0:00:00 diff --git a/examples/USER/reaction/tiny_nylon/log.22Apr20.tiny_nylon.unstabilized.g++.4 b/examples/USER/reaction/tiny_nylon/log.22Apr20.tiny_nylon.unstabilized.g++.4 new file mode 100644 index 0000000000..527d71ce87 --- /dev/null +++ b/examples/USER/reaction/tiny_nylon/log.22Apr20.tiny_nylon.unstabilized.g++.4 @@ -0,0 +1,201 @@ +LAMMPS (15 Apr 2020) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:94) + using 1 OpenMP thread(s) per MPI task +# two monomer nylon example +# reaction produces a condensed water molecule + +units real + +boundary p p p + +atom_style full + +kspace_style pppm 1.0e-4 + +pair_style lj/class2/coul/long 8.5 + +angle_style class2 + +bond_style class2 + +dihedral_style class2 + +improper_style class2 + +read_data tiny_nylon.data + orthogonal box = (-25 -25 -25) to (25 25 25) + 1 by 2 by 2 MPI processor grid + reading atoms ... + 44 atoms + reading velocities ... + 44 velocities + scanning bonds ... + 9 = max bonds/atom + scanning angles ... + 21 = max angles/atom + scanning dihedrals ... + 29 = max dihedrals/atom + scanning impropers ... + 29 = max impropers/atom + reading bonds ... + 42 bonds + reading angles ... + 74 angles + reading dihedrals ... + 100 dihedrals + reading impropers ... + 44 impropers + 4 = max # of 1-2 neighbors + 6 = max # of 1-3 neighbors + 12 = max # of 1-4 neighbors + 41 = max # of special neighbors + special bonds CPU = 0.000431282 secs + read_data CPU = 0.0129571 secs + +variable runsteps equal 1000 +variable prob1 equal step/v_runsteps*2 +variable prob2 equal (step/v_runsteps)>0.5 + +velocity all create 300.0 4928459 dist gaussian + +molecule mol1 rxn1_stp1_unreacted.data_template +Read molecule template mol1: + 1 molecules + 18 atoms with max type 8 + 16 bonds with max type 14 + 25 angles with max type 28 + 23 dihedrals with max type 36 + 14 impropers with max type 11 +molecule mol2 rxn1_stp1_reacted.data_template +Read molecule template mol2: + 1 molecules + 18 atoms with max type 9 + 17 bonds with max type 13 + 31 angles with max type 27 + 39 dihedrals with max type 33 + 20 impropers with max type 1 +molecule mol3 rxn1_stp2_unreacted.data_template +Read molecule template mol3: + 1 molecules + 15 atoms with max type 9 + 14 bonds with max type 13 + 25 angles with max type 27 + 30 dihedrals with max type 33 + 16 impropers with max type 1 +molecule mol4 rxn1_stp2_reacted.data_template +Read molecule template mol4: + 1 molecules + 15 atoms with max type 11 + 13 bonds with max type 15 + 19 angles with max type 29 + 16 dihedrals with max type 32 + 10 impropers with max type 13 + +thermo 50 + +# dump 1 all xyz 1 test_vis.xyz + +fix myrxns all bond/react stabilization yes statted_grp .03 react rxn1 all 1 0.0 5.0 mol1 mol2 rxn1_stp1_map prob v_prob1 1234 react rxn2 all 1 0.0 5.0 mol3 mol4 rxn1_stp2_map prob v_prob2 1234 +WARNING: Bond/react: Atom affected by reaction rxn1 too close to template edge (src/USER-REACTION/fix_bond_react.cpp:2051) +WARNING: Bond/react: Atom affected by reaction rxn2 too close to template edge (src/USER-REACTION/fix_bond_react.cpp:2051) +dynamic group bond_react_MASTER_group defined +dynamic group statted_grp_REACT defined + +fix 1 statted_grp_REACT nvt temp 300 300 100 + +# optionally, you can customize behavior of reacting atoms, +# by using the internally-created 'bond_react_MASTER_group', like so: +fix 4 bond_react_MASTER_group temp/rescale 1 300 300 10 1 + +thermo_style custom step temp press density v_prob1 v_prob2 f_myrxns[1] f_myrxns[2] + +# restart 100 restart1 restart2 + +run ${runsteps} +run 1000 +PPPM initialization ... + using 12-bit tables for long-range coulomb (src/kspace.cpp:332) + G vector (1/distance) = 0.0534597 + grid = 2 2 2 + stencil order = 5 + estimated absolute RMS force accuracy = 0.0402256 + estimated relative force accuracy = 0.000121138 + using double precision FFTW3 + 3d grid and FFT values/proc = 252 2 +Neighbor list info ... + update every 1 steps, delay 10 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 10.5 + ghost atom cutoff = 10.5 + binsize = 5.25, bins = 10 10 10 + 2 neighbor lists, perpetual/occasional/extra = 1 1 0 + (1) pair lj/class2/coul/long, perpetual + attributes: half, newton on + pair build: half/bin/newton + stencil: half/bin/3d/newton + bin: standard + (2) fix bond/react, occasional, copy from (1) + attributes: half, newton on + pair build: copy + stencil: none + bin: none +WARNING: Inconsistent image flags (src/domain.cpp:812) +Per MPI rank memory allocation (min/avg/max) = 33.66 | 33.88 | 34.43 Mbytes +Step Temp Press Density v_prob1 v_prob2 f_myrxns[1] f_myrxns[2] + 0 300 346.78165 0.0034851739 0 0 0 0 + 50 266.5092 -90.813802 0.0034851739 0.1 0 1 0 + 100 559.41271 -53.23688 0.0034851739 0.2 0 1 0 + 150 489.90516 31.555817 0.0034851739 0.3 0 1 0 + 200 326.18391 7.7889992 0.0034851739 0.4 0 1 0 + 250 339.78203 2.3919541 0.0034851739 0.5 0 1 0 + 300 370.90263 -32.01673 0.0034851739 0.6 0 1 0 + 350 294.07547 -5.4019813 0.0034851739 0.7 0 1 0 + 400 287.76477 12.254133 0.0034851739 0.8 0 1 0 + 450 293.36482 66.372956 0.0034851739 0.9 0 1 0 + 500 246.84496 26.132317 0.0034851739 1 0 1 0 + 550 253.08778 -15.350262 0.0034851739 1.1 1 1 1 + 600 358.83641 25.007371 0.0034851739 1.2 1 1 1 + 650 320.51492 -32.34823 0.0034851739 1.3 1 1 1 + 700 310.87976 -8.2306669 0.0034851739 1.4 1 1 1 + 750 307.54142 12.025818 0.0034851739 1.5 1 1 1 + 800 272.51724 -22.92823 0.0034851739 1.6 1 1 1 + 850 268.66181 10.069534 0.0034851739 1.7 1 1 1 + 900 265.5531 -10.471377 0.0034851739 1.8 1 1 1 + 950 259.43086 9.4546712 0.0034851739 1.9 1 1 1 + 1000 247.14622 20.250308 0.0034851739 2 1 1 1 +Loop time of 0.357762 on 4 procs for 1000 steps with 44 atoms + +Performance: 241.502 ns/day, 0.099 hours/ns, 2795.157 timesteps/s +99.0% 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.0003917 | 0.015545 | 0.033317 | 11.9 | 4.35 +Bond | 0.0010131 | 0.030153 | 0.076975 | 18.2 | 8.43 +Kspace | 0.092857 | 0.1462 | 0.18688 | 10.7 | 40.87 +Neigh | 0.043786 | 0.044014 | 0.044189 | 0.1 | 12.30 +Comm | 0.03636 | 0.038345 | 0.040538 | 0.8 | 10.72 +Output | 0.00091578 | 0.0012541 | 0.0020923 | 1.4 | 0.35 +Modify | 0.075379 | 0.080791 | 0.086052 | 1.8 | 22.58 +Other | | 0.00146 | | | 0.41 + +Nlocal: 11 ave 32 max 0 min +Histogram: 2 0 1 0 0 0 0 0 0 1 +Nghost: 40 ave 51 max 19 min +Histogram: 1 0 0 0 0 0 0 1 0 2 +Neighs: 191 ave 529 max 0 min +Histogram: 2 0 0 0 1 0 0 0 0 1 + +Total # of neighbors = 764 +Ave neighs/atom = 17.3636 +Ave special neighs/atom = 9.77273 +Neighbor list builds = 1000 +Dangerous builds = 0 + +# write_restart restart_longrun +# write_data restart_longrun.data + +Please see the log.cite file for references relevant to this simulation + +Total wall time: 0:00:00 -- GitLab From 7a366de0a9b50541568d1b27868af5e67d1fc96a Mon Sep 17 00:00:00 2001 From: wverestek <46591944+wverestek@users.noreply.github.com> Date: Fri, 24 Apr 2020 09:39:11 +0200 Subject: [PATCH 360/717] Delete log.22Apr20.tiny_nylon.unstabilized.g++ --- .../log.22Apr20.tiny_nylon.unstabilized.g++ | 199 ------------------ 1 file changed, 199 deletions(-) delete mode 100644 examples/USER/reaction/tiny_nylon/log.22Apr20.tiny_nylon.unstabilized.g++ diff --git a/examples/USER/reaction/tiny_nylon/log.22Apr20.tiny_nylon.unstabilized.g++ b/examples/USER/reaction/tiny_nylon/log.22Apr20.tiny_nylon.unstabilized.g++ deleted file mode 100644 index 9fbd807c85..0000000000 --- a/examples/USER/reaction/tiny_nylon/log.22Apr20.tiny_nylon.unstabilized.g++ +++ /dev/null @@ -1,199 +0,0 @@ -LAMMPS (15 Apr 2020) -# two monomer nylon example -# reaction produces a condensed water molecule - -units real - -boundary p p p - -atom_style full - -kspace_style pppm 1.0e-4 - -pair_style lj/class2/coul/long 8.5 - -angle_style class2 - -bond_style class2 - -dihedral_style class2 - -improper_style class2 - -read_data tiny_nylon.data - orthogonal box = (-25 -25 -25) to (25 25 25) - 1 by 1 by 1 MPI processor grid - reading atoms ... - 44 atoms - reading velocities ... - 44 velocities - scanning bonds ... - 9 = max bonds/atom - scanning angles ... - 21 = max angles/atom - scanning dihedrals ... - 29 = max dihedrals/atom - scanning impropers ... - 29 = max impropers/atom - reading bonds ... - 42 bonds - reading angles ... - 74 angles - reading dihedrals ... - 100 dihedrals - reading impropers ... - 44 impropers - 4 = max # of 1-2 neighbors - 6 = max # of 1-3 neighbors - 12 = max # of 1-4 neighbors - 41 = max # of special neighbors - special bonds CPU = 0.000278722 secs - read_data CPU = 0.0146239 secs - -variable runsteps equal 1000 -variable prob1 equal step/v_runsteps*2 -variable prob2 equal (step/v_runsteps)>0.5 - -velocity all create 300.0 4928459 dist gaussian - -molecule mol1 rxn1_stp1_unreacted.data_template -Read molecule template mol1: - 1 molecules - 18 atoms with max type 8 - 16 bonds with max type 14 - 25 angles with max type 28 - 23 dihedrals with max type 36 - 14 impropers with max type 11 -molecule mol2 rxn1_stp1_reacted.data_template -Read molecule template mol2: - 1 molecules - 18 atoms with max type 9 - 17 bonds with max type 13 - 31 angles with max type 27 - 39 dihedrals with max type 33 - 20 impropers with max type 1 -molecule mol3 rxn1_stp2_unreacted.data_template -Read molecule template mol3: - 1 molecules - 15 atoms with max type 9 - 14 bonds with max type 13 - 25 angles with max type 27 - 30 dihedrals with max type 33 - 16 impropers with max type 1 -molecule mol4 rxn1_stp2_reacted.data_template -Read molecule template mol4: - 1 molecules - 15 atoms with max type 11 - 13 bonds with max type 15 - 19 angles with max type 29 - 16 dihedrals with max type 32 - 10 impropers with max type 13 - -thermo 50 - -dump 1 all xyz 1 test_vis.xyz - -fix myrxns all bond/react stabilization yes statted_grp .03 react rxn1 all 1 0.0 5.0 mol1 mol2 rxn1_stp1_map prob v_prob1 1234 react rxn2 all 1 0.0 5.0 mol3 mol4 rxn1_stp2_map prob v_prob2 1234 -WARNING: Bond/react: Atom affected by reaction rxn1 too close to template edge (../fix_bond_react.cpp:2052) -WARNING: Bond/react: Atom affected by reaction rxn2 too close to template edge (../fix_bond_react.cpp:2052) -dynamic group bond_react_MASTER_group defined -dynamic group statted_grp_REACT defined - -fix 1 statted_grp_REACT nvt temp 300 300 100 - -# optionally, you can customize behavior of reacting atoms, -# by using the internally-created 'bond_react_MASTER_group', like so: -fix 4 bond_react_MASTER_group temp/rescale 1 300 300 10 1 - -thermo_style custom step temp press density v_prob1 v_prob2 f_myrxns[1] f_myrxns[2] - -# restart 100 restart1 restart2 - -run ${runsteps} -run 1000 -PPPM initialization ... - using 12-bit tables for long-range coulomb (../kspace.cpp:332) - G vector (1/distance) = 0.0534597 - grid = 2 2 2 - stencil order = 5 - estimated absolute RMS force accuracy = 0.0402256 - estimated relative force accuracy = 0.000121138 - using double precision KISS FFT - 3d grid and FFT values/proc = 343 8 -Neighbor list info ... - update every 1 steps, delay 10 steps, check yes - max neighbors/atom: 2000, page size: 100000 - master list distance cutoff = 10.5 - ghost atom cutoff = 10.5 - binsize = 5.25, bins = 10 10 10 - 2 neighbor lists, perpetual/occasional/extra = 1 1 0 - (1) pair lj/class2/coul/long, perpetual - attributes: half, newton on - pair build: half/bin/newton - stencil: half/bin/3d/newton - bin: standard - (2) fix bond/react, occasional, copy from (1) - attributes: half, newton on - pair build: copy - stencil: none - bin: none -WARNING: Inconsistent image flags (../domain.cpp:812) -Per MPI rank memory allocation (min/avg/max) = 34.78 | 34.78 | 34.78 Mbytes -Step Temp Press Density v_prob1 v_prob2 f_myrxns[1] f_myrxns[2] - 0 300 346.78165 0.0034851739 0 0 0 0 - 50 262.63913 -492.10749 0.0034851739 0.1 0 1 0 - 100 766.52962 -29.714349 0.0034851739 0.2 0 1 0 - 150 503.86837 50.220304 0.0034851739 0.3 0 1 0 - 200 456.51295 12.312892 0.0034851739 0.4 0 1 0 - 250 391.54928 9.2335844 0.0034851739 0.5 0 1 0 - 300 336.6988 -47.193937 0.0034851739 0.6 0 1 0 - 350 254.06985 -9.2867898 0.0034851739 0.7 0 1 0 - 400 259.41098 -25.657321 0.0034851739 0.8 0 1 0 - 450 258.10364 22.5086 0.0034851739 0.9 0 1 0 - 500 272.13412 -6.5391448 0.0034851739 1 0 1 0 - 550 202.75504 54.658731 0.0034851739 1.1 1 1 1 - 600 344.79887 23.798478 0.0034851739 1.2 1 1 1 - 650 328.44488 -29.908484 0.0034851739 1.3 1 1 1 - 700 280.13593 -8.3223255 0.0034851739 1.4 1 1 1 - 750 300.67624 1.0632669 0.0034851739 1.5 1 1 1 - 800 376.64234 12.488392 0.0034851739 1.6 1 1 1 - 850 321.07642 19.814074 0.0034851739 1.7 1 1 1 - 900 332.23751 30.814079 0.0034851739 1.8 1 1 1 - 950 311.14029 5.7853136 0.0034851739 1.9 1 1 1 - 1000 253.14634 -37.560642 0.0034851739 2 1 1 1 -Loop time of 0.580684 on 1 procs for 1000 steps with 44 atoms - -Performance: 148.790 ns/day, 0.161 hours/ns, 1722.106 timesteps/s -95.0% CPU use with 1 MPI tasks x no OpenMP threads - -MPI task timing breakdown: -Section | min time | avg time | max time |%varavg| %total ---------------------------------------------------------------- -Pair | 0.090707 | 0.090707 | 0.090707 | 0.0 | 15.62 -Bond | 0.18541 | 0.18541 | 0.18541 | 0.0 | 31.93 -Kspace | 0.065715 | 0.065715 | 0.065715 | 0.0 | 11.32 -Neigh | 0.085003 | 0.085003 | 0.085003 | 0.0 | 14.64 -Comm | 0.0068229 | 0.0068229 | 0.0068229 | 0.0 | 1.17 -Output | 0.096583 | 0.096583 | 0.096583 | 0.0 | 16.63 -Modify | 0.047377 | 0.047377 | 0.047377 | 0.0 | 8.16 -Other | | 0.00307 | | | 0.53 - -Nlocal: 44 ave 44 max 44 min -Histogram: 1 0 0 0 0 0 0 0 0 0 -Nghost: 3 ave 3 max 3 min -Histogram: 1 0 0 0 0 0 0 0 0 0 -Neighs: 722 ave 722 max 722 min -Histogram: 1 0 0 0 0 0 0 0 0 0 - -Total # of neighbors = 722 -Ave neighs/atom = 16.4091 -Ave special neighs/atom = 9.77273 -Neighbor list builds = 1000 -Dangerous builds = 0 - -# write_restart restart_longrun -# write_data restart_longrun.data - -Please see the log.cite file for references relevant to this simulation - -Total wall time: 0:00:00 -- GitLab From c7e4304ab6c2bff8b5864280ea091e790df6d731 Mon Sep 17 00:00:00 2001 From: Zheng Gong Date: Fri, 17 Apr 2020 15:14:44 +0200 Subject: [PATCH 361/717] add package and examples for viscosity calculation --- examples/USER/viscosity/data.1000SPCE.lmp | 6043 ++++++++++++++++++ examples/USER/viscosity/in.1000SPCE.lmp | 53 + src/USER-VISCOSITY/README | 8 + src/USER-VISCOSITY/compute_viscosity_cos.cpp | 292 + src/USER-VISCOSITY/compute_viscosity_cos.h | 73 + src/USER-VISCOSITY/fix_accelerate_cos.cpp | 93 + src/USER-VISCOSITY/fix_accelerate_cos.h | 74 + 7 files changed, 6636 insertions(+) create mode 100644 examples/USER/viscosity/data.1000SPCE.lmp create mode 100644 examples/USER/viscosity/in.1000SPCE.lmp create mode 100644 src/USER-VISCOSITY/README create mode 100644 src/USER-VISCOSITY/compute_viscosity_cos.cpp create mode 100644 src/USER-VISCOSITY/compute_viscosity_cos.h create mode 100644 src/USER-VISCOSITY/fix_accelerate_cos.cpp create mode 100644 src/USER-VISCOSITY/fix_accelerate_cos.h diff --git a/examples/USER/viscosity/data.1000SPCE.lmp b/examples/USER/viscosity/data.1000SPCE.lmp new file mode 100644 index 0000000000..e04d3cbf51 --- /dev/null +++ b/examples/USER/viscosity/data.1000SPCE.lmp @@ -0,0 +1,6043 @@ +# DFF generated LAMMPS data file +3000 atoms +2000 bonds +1000 angles +0 dihedrals +0 impropers + +2 atom types +1 bond types +1 angle types +0 dihedral types +0 improper types + + 0.0000 31.0430 xlo xhi + 0.0000 31.0430 ylo yhi + 0.0000 31.0430 zlo zhi + +Masses + + 1 15.9994 # o_2w + 2 1.0079 # h_1o + +Atoms + + 1 1 1 -0.84760 10.02000 17.96200 20.41400 # O1 + 2 1 2 0.42380 10.01000 18.85000 20.89600 # H2 + 3 1 2 0.42380 10.87100 17.45700 20.64700 # H3 + 4 2 1 -0.84760 5.99700 12.62400 25.60500 # O4 + 5 2 2 0.42380 5.78800 12.30400 26.55300 # H5 + 6 2 2 0.42380 6.69100 11.94300 25.34500 # H6 + 7 3 1 -0.84760 8.41400 5.80900 17.01200 # O7 + 8 3 2 0.42380 8.48900 5.69300 16.00800 # H8 + 9 3 2 0.42380 7.90800 4.99800 17.40500 # H9 + 10 4 1 -0.84760 17.58100 16.62000 6.43700 # O10 + 11 4 2 0.42380 17.25100 17.30600 7.17000 # H11 + 12 4 2 0.42380 18.39900 17.02700 5.90600 # H12 + 13 5 1 -0.84760 15.82700 21.92200 15.08600 # O13 + 14 5 2 0.42380 16.43600 22.69100 15.11000 # H14 + 15 5 2 0.42380 16.56400 21.17400 14.98900 # H15 + 16 6 1 -0.84760 24.18200 -0.18100 27.97700 # O16 + 17 6 2 0.42380 23.95500 -0.27600 26.96300 # H17 + 18 6 2 0.42380 23.44400 0.37300 28.30000 # H18 + 19 7 1 -0.84760 7.19500 7.91600 -0.56500 # O19 + 20 7 2 0.42380 7.55900 6.96600 -0.38300 # H20 + 21 7 2 0.42380 7.20700 8.39600 0.34200 # H21 + 22 8 1 -0.84760 5.63500 13.85300 11.25200 # O22 + 23 8 2 0.42380 6.08200 13.16700 10.62800 # H23 + 24 8 2 0.42380 4.84500 13.43100 11.72500 # H24 + 25 9 1 -0.84760 23.85900 -0.47100 19.57500 # O25 + 26 9 2 0.42380 24.23000 -0.80400 18.71100 # H26 + 27 9 2 0.42380 23.88300 -1.23400 20.25500 # H27 + 28 10 1 -0.84760 7.19100 20.92100 28.09900 # O28 + 29 10 2 0.42380 6.61400 21.56500 27.55300 # H29 + 30 10 2 0.42380 6.68200 20.08700 28.02500 # H30 + 31 11 1 -0.84760 6.10000 27.87700 18.99800 # O31 + 32 11 2 0.42380 5.49800 27.32200 18.45300 # H32 + 33 11 2 0.42380 7.03600 27.63800 18.73900 # H33 + 34 12 1 -0.84760 22.42000 9.51900 9.70000 # O34 + 35 12 2 0.42380 22.08300 9.67000 10.67900 # H35 + 36 12 2 0.42380 23.36100 9.97900 9.69000 # H36 + 37 13 1 -0.84760 29.33600 21.61500 18.38900 # O37 + 38 13 2 0.42380 29.20300 22.58600 18.29200 # H38 + 39 13 2 0.42380 28.37100 21.33000 18.42500 # H39 + 40 14 1 -0.84760 20.82900 25.68600 29.05700 # O40 + 41 14 2 0.42380 20.68200 24.91600 29.71000 # H41 + 42 14 2 0.42380 19.95500 25.65300 28.50100 # H42 + 43 15 1 -0.84760 20.16600 20.34600 17.44500 # O43 + 44 15 2 0.42380 20.37000 19.35800 17.15100 # H44 + 45 15 2 0.42380 20.89300 20.56700 18.05800 # H45 + 46 16 1 -0.84760 24.91300 27.21500 15.65400 # O46 + 47 16 2 0.42380 24.95000 27.94200 16.40800 # H47 + 48 16 2 0.42380 25.30100 27.67200 14.82300 # H48 + 49 17 1 -0.84760 10.86100 25.07200 22.61800 # O49 + 50 17 2 0.42380 10.51500 25.85100 21.97900 # H50 + 51 17 2 0.42380 10.26100 25.02600 23.45100 # H51 + 52 18 1 -0.84760 20.41700 4.62600 14.12400 # O52 + 53 18 2 0.42380 21.28400 3.99600 14.15300 # H53 + 54 18 2 0.42380 20.66000 5.60900 13.89000 # H54 + 55 19 1 -0.84760 18.65500 9.73300 16.03500 # O55 + 56 19 2 0.42380 18.81100 9.24400 15.15200 # H56 + 57 19 2 0.42380 17.82800 10.19500 15.75000 # H57 + 58 20 1 -0.84760 15.15000 10.75800 24.17300 # O58 + 59 20 2 0.42380 14.29300 11.08600 24.54700 # H59 + 60 20 2 0.42380 15.86200 11.41200 24.55500 # H60 + 61 21 1 -0.84760 0.43700 1.33900 16.19600 # O61 + 62 21 2 0.42380 0.45100 1.11700 15.20700 # H62 + 63 21 2 0.42380 0.46400 0.48900 16.74600 # H63 + 64 22 1 -0.84760 6.40400 22.65100 26.12000 # O64 + 65 22 2 0.42380 5.42300 22.87000 26.37400 # H65 + 66 22 2 0.42380 6.11500 22.28300 25.17700 # H66 + 67 23 1 -0.84760 24.88400 20.16700 25.26600 # O67 + 68 23 2 0.42380 23.95400 20.57300 24.98900 # H68 + 69 23 2 0.42380 25.39500 21.06100 25.25300 # H69 + 70 24 1 -0.84760 13.97500 16.88900 10.88100 # O70 + 71 24 2 0.42380 13.82600 16.33300 10.04100 # H71 + 72 24 2 0.42380 13.34100 16.77700 11.59500 # H72 + 73 25 1 -0.84760 0.73200 20.62100 5.08000 # O73 + 74 25 2 0.42380 0.48100 19.75800 5.45100 # H74 + 75 25 2 0.42380 0.24900 20.62700 4.22900 # H75 + 76 26 1 -0.84760 4.21500 23.27600 20.59300 # O76 + 77 26 2 0.42380 4.32700 24.17100 20.06800 # H77 + 78 26 2 0.42380 3.75400 23.53200 21.42600 # H78 + 79 27 1 -0.84760 5.08400 20.34600 6.43100 # O79 + 80 27 2 0.42380 4.33700 20.78900 5.90200 # H80 + 81 27 2 0.42380 4.78300 19.42800 6.59200 # H81 + 82 28 1 -0.84760 9.94400 22.43600 27.21700 # O82 + 83 28 2 0.42380 9.49200 21.88100 26.52400 # H83 + 84 28 2 0.42380 10.75500 21.84300 27.39500 # H84 + 85 29 1 -0.84760 22.87700 5.01000 28.11900 # O85 + 86 29 2 0.42380 22.40000 5.25100 27.22800 # H86 + 87 29 2 0.42380 23.73300 5.50100 28.05400 # H87 + 88 30 1 -0.84760 3.15000 23.45700 0.05000 # O88 + 89 30 2 0.42380 3.63500 24.06500 0.66700 # H89 + 90 30 2 0.42380 3.49800 23.55000 -0.87900 # H90 + 91 31 1 -0.84760 21.21700 14.97600 28.85900 # O91 + 92 31 2 0.42380 22.02000 15.18800 28.28200 # H92 + 93 31 2 0.42380 21.49700 15.06100 29.85600 # H93 + 94 32 1 -0.84760 18.14800 25.30800 3.57400 # O94 + 95 32 2 0.42380 17.65500 24.94900 2.75600 # H95 + 96 32 2 0.42380 17.86600 24.72600 4.39200 # H96 + 97 33 1 -0.84760 14.78100 10.19800 19.09700 # O97 + 98 33 2 0.42380 13.87800 10.49300 19.47300 # H98 + 99 33 2 0.42380 14.43200 9.89800 18.13600 # H99 + 100 34 1 -0.84760 22.84400 2.27900 23.49900 # O100 + 101 34 2 0.42380 21.82600 2.13500 23.68400 # H101 + 102 34 2 0.42380 23.22400 1.40000 23.16000 # H102 + 103 35 1 -0.84760 21.93300 14.23900 9.87300 # O103 + 104 35 2 0.42380 21.23200 13.49500 9.81800 # H104 + 105 35 2 0.42380 21.51100 15.06800 9.33000 # H105 + 106 36 1 -0.84760 19.42400 30.06700 7.14100 # O106 + 107 36 2 0.42380 18.65200 29.34600 7.16500 # H107 + 108 36 2 0.42380 20.01100 29.93000 7.93500 # H108 + 109 37 1 -0.84760 3.00900 7.29000 19.12900 # O109 + 110 37 2 0.42380 2.34300 6.56000 19.04200 # H110 + 111 37 2 0.42380 2.52200 7.60100 20.03000 # H111 + 112 38 1 -0.84760 14.46300 13.71300 10.47200 # O112 + 113 38 2 0.42380 13.77400 13.63700 9.69500 # H113 + 114 38 2 0.42380 14.93100 14.60600 10.49300 # H114 + 115 39 1 -0.84760 26.02000 3.52800 19.78800 # O115 + 116 39 2 0.42380 25.04700 3.83300 19.83300 # H116 + 117 39 2 0.42380 26.03000 2.63800 20.28600 # H117 + 118 40 1 -0.84760 15.63500 27.14400 26.49400 # O118 + 119 40 2 0.42380 14.59800 27.43000 26.44700 # H119 + 120 40 2 0.42380 15.84700 26.35000 27.11500 # H120 + 121 41 1 -0.84760 18.20200 -0.34100 13.08200 # O121 + 122 41 2 0.42380 17.63600 0.47800 12.83100 # H122 + 123 41 2 0.42380 17.53000 -1.12700 13.03800 # H123 + 124 42 1 -0.84760 5.36400 1.04500 3.37800 # O124 + 125 42 2 0.42380 6.38800 0.72200 3.40900 # H125 + 126 42 2 0.42380 4.90900 0.71200 4.24200 # H126 + 127 43 1 -0.84760 28.56000 17.87800 12.38900 # O127 + 128 43 2 0.42380 27.75900 17.74800 12.93600 # H128 + 129 43 2 0.42380 29.36300 18.37200 12.69000 # H129 + 130 44 1 -0.84760 11.17600 9.31000 19.41400 # O130 + 131 44 2 0.42380 10.42900 8.65200 19.27900 # H131 + 132 44 2 0.42380 11.96800 8.92900 18.93400 # H132 + 133 45 1 -0.84760 23.15200 11.07200 16.86400 # O133 + 134 45 2 0.42380 23.22800 11.88000 16.23700 # H134 + 135 45 2 0.42380 22.39000 10.45900 16.53300 # H135 + 136 46 1 -0.84760 17.75000 13.43200 4.45000 # O136 + 137 46 2 0.42380 18.72000 13.75500 4.33700 # H137 + 138 46 2 0.42380 17.56000 12.78800 5.29500 # H138 + 139 47 1 -0.84760 11.70100 14.33600 17.46700 # O139 + 140 47 2 0.42380 10.83000 14.15500 17.93500 # H140 + 141 47 2 0.42380 11.64900 15.19800 16.91500 # H141 + 142 48 1 -0.84760 23.22600 -0.66600 25.69700 # O142 + 143 48 2 0.42380 23.62500 0.00100 25.06700 # H143 + 144 48 2 0.42380 22.51900 -1.05400 25.16600 # H144 + 145 49 1 -0.84760 16.94400 11.52900 17.25900 # O145 + 146 49 2 0.42380 15.97000 11.88500 17.38400 # H146 + 147 49 2 0.42380 17.65000 12.05900 17.77100 # H147 + 148 50 1 -0.84760 21.12700 26.88300 23.25400 # O148 + 149 50 2 0.42380 21.07100 25.96900 22.88900 # H149 + 150 50 2 0.42380 20.32100 27.34000 22.85300 # H150 + 151 51 1 -0.84760 13.08200 28.59900 9.25700 # O151 + 152 51 2 0.42380 12.99700 27.59400 9.03200 # H152 + 153 51 2 0.42380 13.95400 28.78900 9.61000 # H153 + 154 52 1 -0.84760 18.07800 1.87000 15.56900 # O154 + 155 52 2 0.42380 17.67300 1.18000 14.94100 # H155 + 156 52 2 0.42380 18.32700 2.58700 14.90100 # H156 + 157 53 1 -0.84760 24.21600 23.08900 20.28300 # O157 + 158 53 2 0.42380 23.81800 24.02700 20.26300 # H158 + 159 53 2 0.42380 23.51800 22.38600 20.07300 # H159 + 160 54 1 -0.84760 13.49600 3.82000 4.73600 # O160 + 161 54 2 0.42380 13.46000 4.83000 4.74500 # H161 + 162 54 2 0.42380 13.12400 3.62600 5.72000 # H162 + 163 55 1 -0.84760 9.97500 10.77100 6.90400 # O163 + 164 55 2 0.42380 10.85200 10.71000 6.43600 # H164 + 165 55 2 0.42380 9.43300 10.27900 6.27000 # H165 + 166 56 1 -0.84760 2.65800 15.47300 21.75500 # O166 + 167 56 2 0.42380 2.85400 16.12500 22.44000 # H167 + 168 56 2 0.42380 2.66900 14.51500 22.11500 # H168 + 169 57 1 -0.84760 15.23100 25.00200 15.10200 # O169 + 170 57 2 0.42380 14.21300 25.02400 15.21400 # H170 + 171 57 2 0.42380 15.55100 25.61300 15.85500 # H171 + 172 58 1 -0.84760 24.76200 12.98300 29.24400 # O172 + 173 58 2 0.42380 24.23400 13.72400 29.65700 # H173 + 174 58 2 0.42380 24.20700 12.40600 28.57500 # H174 + 175 59 1 -0.84760 16.70100 23.48200 12.88000 # O175 + 176 59 2 0.42380 16.06200 24.22400 13.24000 # H176 + 177 59 2 0.42380 17.48400 23.50400 13.57700 # H177 + 178 60 1 -0.84760 5.03400 14.97500 8.22300 # O178 + 179 60 2 0.42380 4.66600 15.74600 7.70100 # H179 + 180 60 2 0.42380 5.36300 15.29600 9.11700 # H180 + 181 61 1 -0.84760 1.41800 0.11800 13.87300 # O181 + 182 61 2 0.42380 1.81800 -0.01400 14.78800 # H182 + 183 61 2 0.42380 0.38900 -0.01500 13.84100 # H183 + 184 62 1 -0.84760 29.01700 8.90400 24.43500 # O184 + 185 62 2 0.42380 28.39400 9.21500 23.74100 # H185 + 186 62 2 0.42380 29.68600 8.45500 23.89000 # H186 + 187 63 1 -0.84760 2.46500 19.03100 23.65900 # O187 + 188 63 2 0.42380 2.12900 18.43200 24.46500 # H188 + 189 63 2 0.42380 2.69700 18.32200 22.96300 # H189 + 190 64 1 -0.84760 19.67500 19.94000 27.72700 # O190 + 191 64 2 0.42380 20.13100 20.57000 27.09800 # H191 + 192 64 2 0.42380 19.18000 20.42400 28.45600 # H192 + 193 65 1 -0.84760 10.07000 23.67200 11.11200 # O193 + 194 65 2 0.42380 10.51900 23.08700 10.45100 # H194 + 195 65 2 0.42380 9.92900 24.48200 10.59100 # H195 + 196 66 1 -0.84760 13.25600 28.34400 25.62000 # O196 + 197 66 2 0.42380 12.63100 28.05800 24.83700 # H197 + 198 66 2 0.42380 13.03800 28.09500 26.62000 # H198 + 199 67 1 -0.84760 12.37800 10.79300 10.02000 # O199 + 200 67 2 0.42380 13.11900 11.13600 9.53100 # H200 + 201 67 2 0.42380 12.39300 9.81500 9.94000 # H201 + 202 68 1 -0.84760 22.75300 14.39900 7.19200 # O202 + 203 68 2 0.42380 21.78500 14.25000 6.98600 # H203 + 204 68 2 0.42380 22.98300 13.64100 7.76400 # H204 + 205 69 1 -0.84760 21.34100 2.49900 2.14600 # O205 + 206 69 2 0.42380 20.61300 2.89500 2.74300 # H206 + 207 69 2 0.42380 22.06500 3.22600 1.83100 # H207 + 208 70 1 -0.84760 11.64800 20.29400 27.70500 # O208 + 209 70 2 0.42380 11.88800 20.72800 28.56500 # H209 + 210 70 2 0.42380 11.93400 19.29500 27.96600 # H210 + 211 71 1 -0.84760 8.01800 25.70500 -0.48800 # O211 + 212 71 2 0.42380 7.69400 25.20200 -1.34500 # H212 + 213 71 2 0.42380 9.00600 25.68300 -0.45200 # H213 + 214 72 1 -0.84760 7.55000 2.04700 1.09200 # O214 + 215 72 2 0.42380 6.78400 2.29700 1.61100 # H215 + 216 72 2 0.42380 7.30700 2.15000 0.14800 # H216 + 217 73 1 -0.84760 27.52800 17.17200 8.33700 # O217 + 218 73 2 0.42380 27.39900 16.58100 7.46000 # H218 + 219 73 2 0.42380 28.56000 16.85700 8.49500 # H219 + 220 74 1 -0.84760 25.28900 27.23700 6.77400 # O220 + 221 74 2 0.42380 24.50500 27.84000 6.69400 # H221 + 222 74 2 0.42380 25.38500 26.87200 7.72400 # H222 + 223 75 1 -0.84760 26.37200 0.72700 -0.31700 # O223 + 224 75 2 0.42380 27.34600 0.85700 -0.12100 # H224 + 225 75 2 0.42380 26.01600 1.55700 -0.75100 # H225 + 226 76 1 -0.84760 26.16200 3.51400 24.32700 # O226 + 227 76 2 0.42380 27.13500 3.66200 24.08000 # H227 + 228 76 2 0.42380 25.54600 3.30400 23.57500 # H228 + 229 77 1 -0.84760 22.84800 27.59600 29.22800 # O229 + 230 77 2 0.42380 22.08000 26.90900 29.06500 # H230 + 231 77 2 0.42380 23.41000 26.96700 29.79900 # H231 + 232 78 1 -0.84760 26.87700 3.82500 29.76200 # O232 + 233 78 2 0.42380 27.54400 3.19700 30.19100 # H233 + 234 78 2 0.42380 26.75100 3.68200 28.79700 # H234 + 235 79 1 -0.84760 13.12900 12.86500 29.25300 # O235 + 236 79 2 0.42380 12.43400 13.14800 28.59400 # H236 + 237 79 2 0.42380 13.71300 13.67800 29.38000 # H237 + 238 80 1 -0.84760 17.81000 10.12300 7.12400 # O238 + 239 80 2 0.42380 17.14200 9.62900 6.54700 # H239 + 240 80 2 0.42380 18.64100 9.88200 6.63300 # H240 + 241 81 1 -0.84760 9.11100 14.30700 26.16000 # O241 + 242 81 2 0.42380 9.94000 14.12900 26.74400 # H242 + 243 81 2 0.42380 9.26700 13.63600 25.36000 # H243 + 244 82 1 -0.84760 13.93000 18.44400 22.37300 # O244 + 245 82 2 0.42380 14.20900 18.54400 23.29400 # H245 + 246 82 2 0.42380 13.59300 19.26100 21.97000 # H246 + 247 83 1 -0.84760 0.98800 6.29300 27.55700 # O247 + 248 83 2 0.42380 0.66100 5.39100 27.24600 # H248 + 249 83 2 0.42380 1.66000 6.39900 26.78000 # H249 + 250 84 1 -0.84760 16.84600 29.24900 24.51000 # O250 + 251 84 2 0.42380 16.15500 28.61600 24.90700 # H251 + 252 84 2 0.42380 16.38300 29.46200 23.67000 # H252 + 253 85 1 -0.84760 6.35100 17.25400 0.83800 # O253 + 254 85 2 0.42380 6.87700 16.45400 0.54800 # H254 + 255 85 2 0.42380 5.40800 16.85300 0.93700 # H255 + 256 86 1 -0.84760 14.99500 7.90900 26.86300 # O256 + 257 86 2 0.42380 14.70900 8.05000 27.84900 # H257 + 258 86 2 0.42380 15.49800 7.06200 26.68800 # H258 + 259 87 1 -0.84760 6.14100 28.63000 15.75200 # O259 + 260 87 2 0.42380 6.30700 28.03400 16.59200 # H260 + 261 87 2 0.42380 6.77000 29.40400 15.69900 # H261 + 262 88 1 -0.84760 18.65800 14.29600 15.00200 # O262 + 263 88 2 0.42380 19.31800 13.86500 14.37000 # H263 + 264 88 2 0.42380 19.01100 15.24500 15.11500 # H264 + 265 89 1 -0.84760 2.33700 9.03400 14.49900 # O265 + 266 89 2 0.42380 2.08400 8.54100 13.66900 # H266 + 267 89 2 0.42380 2.36800 8.41700 15.26300 # H267 + 268 90 1 -0.84760 25.94900 19.31100 7.58500 # O268 + 269 90 2 0.42380 25.95900 19.30900 8.56800 # H269 + 270 90 2 0.42380 26.66100 18.63500 7.29300 # H270 + 271 91 1 -0.84760 26.62900 23.49600 12.15600 # O271 + 272 91 2 0.42380 26.96300 22.56800 12.24600 # H272 + 273 91 2 0.42380 27.03600 24.04000 12.88200 # H273 + 274 92 1 -0.84760 11.48400 2.32400 12.59700 # O274 + 275 92 2 0.42380 11.49400 2.62300 11.62500 # H275 + 276 92 2 0.42380 10.74900 1.62200 12.64000 # H276 + 277 93 1 -0.84760 -0.51800 22.20500 8.88100 # O277 + 278 93 2 0.42380 0.24900 22.55800 8.29500 # H278 + 279 93 2 0.42380 -0.27400 22.11400 9.87800 # H279 + 280 94 1 -0.84760 9.41700 -0.60000 -0.33000 # O280 + 281 94 2 0.42380 10.01100 0.03500 0.20200 # H281 + 282 94 2 0.42380 9.97700 -0.71600 -1.18400 # H282 + 283 95 1 -0.84760 8.06700 23.08800 12.87300 # O283 + 284 95 2 0.42380 8.84700 23.20800 12.17200 # H284 + 285 95 2 0.42380 7.89200 23.83600 13.54200 # H285 + 286 96 1 -0.84760 19.90600 3.96900 6.75100 # O286 + 287 96 2 0.42380 18.90100 3.94900 6.74700 # H287 + 288 96 2 0.42380 20.12800 4.43200 5.89700 # H288 + 289 97 1 -0.84760 3.70900 13.47300 12.79500 # O289 + 290 97 2 0.42380 3.70700 14.47600 12.92800 # H290 + 291 97 2 0.42380 3.13100 13.06300 13.52000 # H291 + 292 98 1 -0.84760 8.17700 5.56700 22.63100 # O292 + 293 98 2 0.42380 8.71100 5.65200 21.78000 # H293 + 294 98 2 0.42380 8.01600 4.52300 22.82400 # H294 + 295 99 1 -0.84760 7.65500 25.50400 20.30100 # O295 + 296 99 2 0.42380 7.86200 24.54100 20.00200 # H296 + 297 99 2 0.42380 6.97300 25.75100 19.67200 # H297 + 298 100 1 -0.84760 6.31400 24.43900 23.75900 # O298 + 299 100 2 0.42380 7.09900 23.87900 24.14400 # H299 + 300 100 2 0.42380 5.98400 23.90400 22.85200 # H300 + 301 101 1 -0.84760 8.63500 28.19600 26.74700 # O301 + 302 101 2 0.42380 7.96500 28.81900 27.07100 # H302 + 303 101 2 0.42380 8.75300 27.62000 27.55300 # H303 + 304 102 1 -0.84760 19.14700 8.19000 5.28700 # O304 + 305 102 2 0.42380 18.85200 7.35700 4.87600 # H305 + 306 102 2 0.42380 19.18000 8.94500 4.66300 # H306 + 307 103 1 -0.84760 0.72400 17.61700 5.56500 # O307 + 308 103 2 0.42380 -0.26000 17.53400 5.32500 # H308 + 309 103 2 0.42380 1.10200 16.67300 5.43600 # H309 + 310 104 1 -0.84760 26.48800 8.52500 17.62200 # O310 + 311 104 2 0.42380 27.25900 8.55600 16.94700 # H311 + 312 104 2 0.42380 25.98500 9.40700 17.53100 # H312 + 313 105 1 -0.84760 26.37000 26.56500 22.42700 # O313 + 314 105 2 0.42380 26.68000 26.97900 23.27200 # H314 + 315 105 2 0.42380 26.30300 25.54500 22.60600 # H315 + 316 106 1 -0.84760 6.20600 2.71900 27.71200 # O316 + 317 106 2 0.42380 6.54100 1.75300 27.92300 # H317 + 318 106 2 0.42380 6.84600 3.50400 27.85600 # H318 + 319 107 1 -0.84760 21.33300 8.71000 15.84400 # O319 + 320 107 2 0.42380 20.96500 8.84900 16.82000 # H320 + 321 107 2 0.42380 20.61300 8.51500 15.16100 # H321 + 322 108 1 -0.84760 23.04900 8.30800 25.42000 # O322 + 323 108 2 0.42380 23.30100 8.29700 24.44100 # H323 + 324 108 2 0.42380 22.55500 7.46700 25.63500 # H324 + 325 109 1 -0.84760 28.13700 21.97400 25.15200 # O325 + 326 109 2 0.42380 28.78100 22.74100 25.08500 # H326 + 327 109 2 0.42380 28.61900 21.10300 25.05900 # H327 + 328 110 1 -0.84760 20.07800 11.96900 9.22700 # O328 + 329 110 2 0.42380 20.64100 11.21200 9.59300 # H329 + 330 110 2 0.42380 19.66900 11.65800 8.45100 # H330 + 331 111 1 -0.84760 3.18100 5.04200 11.07600 # O331 + 332 111 2 0.42380 3.60900 4.28400 11.50800 # H332 + 333 111 2 0.42380 2.80100 4.47300 10.35300 # H333 + 334 112 1 -0.84760 16.12500 13.48300 14.11400 # O334 + 335 112 2 0.42380 16.64900 14.27700 13.69200 # H335 + 336 112 2 0.42380 16.88300 13.06900 14.61500 # H336 + 337 113 1 -0.84760 7.02000 26.55300 3.72800 # O337 + 338 113 2 0.42380 6.55400 27.16200 4.38600 # H338 + 339 113 2 0.42380 6.75100 25.66300 4.02100 # H339 + 340 114 1 -0.84760 29.22600 18.67700 20.15300 # O340 + 341 114 2 0.42380 29.49900 19.55900 19.67000 # H341 + 342 114 2 0.42380 28.21200 18.73200 20.32800 # H342 + 343 115 1 -0.84760 12.55200 21.55000 5.16200 # O343 + 344 115 2 0.42380 12.98500 21.34800 6.11700 # H344 + 345 115 2 0.42380 11.61400 21.12600 5.16400 # H345 + 346 116 1 -0.84760 8.63800 -0.13900 14.55100 # O346 + 347 116 2 0.42380 9.31700 -0.85400 14.91100 # H347 + 348 116 2 0.42380 8.44100 0.61400 15.22200 # H348 + 349 117 1 -0.84760 9.80400 16.72700 17.47600 # O349 + 350 117 2 0.42380 9.76900 15.83000 17.87100 # H350 + 351 117 2 0.42380 8.86600 17.01200 17.34500 # H351 + 352 118 1 -0.84760 24.87300 17.76500 1.87500 # O352 + 353 118 2 0.42380 25.13400 17.11300 2.61000 # H353 + 354 118 2 0.42380 25.10600 18.69800 2.25800 # H354 + 355 119 1 -0.84760 4.18000 0.08600 5.94900 # O355 + 356 119 2 0.42380 3.29100 0.24300 5.70200 # H356 + 357 119 2 0.42380 3.96600 -0.00400 6.91500 # H357 + 358 120 1 -0.84760 1.99900 2.18900 3.47900 # O358 + 359 120 2 0.42380 1.53600 1.62500 4.19900 # H359 + 360 120 2 0.42380 2.34400 1.44200 2.87900 # H360 + 361 121 1 -0.84760 -0.82900 21.94500 2.26100 # O361 + 362 121 2 0.42380 -1.18100 22.83300 2.44400 # H362 + 363 121 2 0.42380 0.13700 22.20000 2.12600 # H363 + 364 122 1 -0.84760 4.26200 17.28500 15.28600 # O364 + 365 122 2 0.42380 3.38100 17.59300 14.78700 # H365 + 366 122 2 0.42380 4.52500 18.08500 15.79900 # H366 + 367 123 1 -0.84760 0.45100 7.25700 2.06100 # O367 + 368 123 2 0.42380 -0.59500 7.26500 2.17100 # H368 + 369 123 2 0.42380 0.84600 6.33100 2.34900 # H369 + 370 124 1 -0.84760 8.49200 9.41900 4.76400 # O370 + 371 124 2 0.42380 7.94000 10.31500 4.61500 # H371 + 372 124 2 0.42380 8.45800 9.16200 3.75100 # H372 + 373 125 1 -0.84760 11.76800 10.07000 21.96000 # O373 + 374 125 2 0.42380 11.79800 10.94000 22.43500 # H374 + 375 125 2 0.42380 11.34400 10.44800 21.11100 # H375 + 376 126 1 -0.84760 17.93100 4.97400 5.34200 # O376 + 377 126 2 0.42380 18.04500 5.26500 4.42800 # H377 + 378 126 2 0.42380 17.12300 4.42000 5.46300 # H378 + 379 127 1 -0.84760 13.94600 21.75000 29.55100 # O379 + 380 127 2 0.42380 14.62600 21.14800 29.12000 # H380 + 381 127 2 0.42380 14.49600 22.33000 30.24200 # H381 + 382 128 1 -0.84760 29.95900 11.24400 15.21000 # O382 + 383 128 2 0.42380 30.53100 10.86500 15.96200 # H383 + 384 128 2 0.42380 29.23500 11.90500 15.49100 # H384 + 385 129 1 -0.84760 28.73000 25.04000 8.86300 # O385 + 386 129 2 0.42380 28.78500 26.00000 8.63100 # H386 + 387 129 2 0.42380 27.89900 24.81400 9.29500 # H387 + 388 130 1 -0.84760 3.12200 2.48500 12.69900 # O388 + 389 130 2 0.42380 2.57300 2.16500 11.87300 # H389 + 390 130 2 0.42380 2.55100 2.74700 13.53700 # H390 + 391 131 1 -0.84760 12.19900 20.81200 19.63000 # O391 + 392 131 2 0.42380 12.29500 21.40500 18.85100 # H392 + 393 131 2 0.42380 12.18600 19.85400 19.25400 # H393 + 394 132 1 -0.84760 4.27600 17.63700 29.06200 # O394 + 395 132 2 0.42380 4.43200 18.55600 28.70900 # H395 + 396 132 2 0.42380 3.92800 17.79500 30.01900 # H396 + 397 133 1 -0.84760 26.46500 15.91900 13.35100 # O397 + 398 133 2 0.42380 27.22300 15.38700 12.91400 # H398 + 399 133 2 0.42380 26.22500 15.35000 14.23300 # H399 + 400 134 1 -0.84760 1.06200 24.79400 6.30800 # O400 + 401 134 2 0.42380 0.82600 24.56300 5.37600 # H401 + 402 134 2 0.42380 0.19000 24.65200 6.67800 # H402 + 403 135 1 -0.84760 11.84500 4.80100 11.12900 # O403 + 404 135 2 0.42380 10.98000 4.34500 10.76500 # H404 + 405 135 2 0.42380 11.92900 5.63200 10.54100 # H405 + 406 136 1 -0.84760 6.61800 22.08500 7.40900 # O406 + 407 136 2 0.42380 6.09300 22.97200 7.17300 # H407 + 408 136 2 0.42380 6.00700 21.57900 6.77300 # H408 + 409 137 1 -0.84760 16.37500 17.74800 14.02800 # O409 + 410 137 2 0.42380 16.44400 18.21800 13.07300 # H410 + 411 137 2 0.42380 15.38000 17.35200 14.09800 # H411 + 412 138 1 -0.84760 14.02800 0.14900 8.99200 # O412 + 413 138 2 0.42380 14.01000 0.15700 10.00200 # H413 + 414 138 2 0.42380 13.33900 0.85800 8.75100 # H414 + 415 139 1 -0.84760 19.23800 27.39900 14.06700 # O415 + 416 139 2 0.42380 20.23700 27.14300 14.17200 # H416 + 417 139 2 0.42380 19.00400 28.32900 13.75900 # H417 + 418 140 1 -0.84760 12.14500 10.56400 1.61100 # O418 + 419 140 2 0.42380 11.37500 10.03100 1.35600 # H419 + 420 140 2 0.42380 12.73500 10.54900 0.79300 # H420 + 421 141 1 -0.84760 6.73400 2.81800 6.80400 # O421 + 422 141 2 0.42380 6.04500 2.72400 6.06900 # H422 + 423 141 2 0.42380 7.65700 3.04600 6.47000 # H423 + 424 142 1 -0.84760 22.08100 23.34800 11.46100 # O424 + 425 142 2 0.42380 21.44900 22.98900 10.74200 # H425 + 426 142 2 0.42380 22.07100 24.29500 11.75100 # H426 + 427 143 1 -0.84760 -0.99100 19.78800 11.83600 # O427 + 428 143 2 0.42380 -0.66600 18.93700 11.38700 # H428 + 429 143 2 0.42380 -0.64100 20.63300 11.27700 # H429 + 430 144 1 -0.84760 27.38400 19.96600 29.05800 # O430 + 431 144 2 0.42380 26.75100 19.42900 29.70600 # H431 + 432 144 2 0.42380 26.96000 19.77900 28.17800 # H432 + 433 145 1 -0.84760 25.28400 23.63700 29.75800 # O433 + 434 145 2 0.42380 24.96000 22.87800 30.33000 # H434 + 435 145 2 0.42380 24.64700 24.39500 29.67000 # H435 + 436 146 1 -0.84760 5.18400 13.82300 3.14900 # O436 + 437 146 2 0.42380 5.79400 14.03200 3.89700 # H437 + 438 146 2 0.42380 4.24500 13.85600 3.56600 # H438 + 439 147 1 -0.84760 12.96500 23.45100 0.42800 # O439 + 440 147 2 0.42380 13.25300 23.68300 1.36400 # H440 + 441 147 2 0.42380 12.98600 22.44300 0.18800 # H441 + 442 148 1 -0.84760 3.53300 9.15500 9.68400 # O442 + 443 148 2 0.42380 3.01800 9.94300 9.63500 # H443 + 444 148 2 0.42380 4.29800 9.31000 10.26700 # H444 + 445 149 1 -0.84760 28.25100 24.91700 24.44700 # O445 + 446 149 2 0.42380 27.37900 24.50200 24.43100 # H446 + 447 149 2 0.42380 28.25600 25.80300 23.96900 # H447 + 448 150 1 -0.84760 10.72700 2.36700 0.31000 # O448 + 449 150 2 0.42380 11.29000 2.93300 0.86400 # H449 + 450 150 2 0.42380 10.60300 1.60100 0.94600 # H450 + 451 151 1 -0.84760 28.15000 24.26400 1.63500 # O451 + 452 151 2 0.42380 28.58300 23.65800 0.88000 # H452 + 453 151 2 0.42380 28.49800 24.27500 2.57800 # H453 + 454 152 1 -0.84760 0.25300 15.93600 20.26800 # O454 + 455 152 2 0.42380 0.28800 16.26900 19.32800 # H455 + 456 152 2 0.42380 0.25400 14.92700 20.17800 # H456 + 457 153 1 -0.84760 24.94900 10.19400 19.81100 # O457 + 458 153 2 0.42380 25.08300 11.14900 19.29000 # H458 + 459 153 2 0.42380 25.92900 9.72800 19.87000 # H459 + 460 154 1 -0.84760 13.75400 28.21500 16.12700 # O460 + 461 154 2 0.42380 14.06700 28.71900 16.93600 # H461 + 462 154 2 0.42380 14.51200 28.22500 15.41900 # H462 + 463 155 1 -0.84760 7.07800 24.11600 18.01800 # O463 + 464 155 2 0.42380 7.09000 23.80600 17.08400 # H464 + 465 155 2 0.42380 6.13600 23.82500 18.26600 # H465 + 466 156 1 -0.84760 27.85600 19.17100 5.01000 # O466 + 467 156 2 0.42380 27.32200 19.89900 4.55900 # H467 + 468 156 2 0.42380 28.38500 19.53800 5.78900 # H468 + 469 157 1 -0.84760 20.62000 22.45300 29.96600 # O469 + 470 157 2 0.42380 20.91100 22.66600 30.86200 # H470 + 471 157 2 0.42380 20.42400 21.47400 30.08200 # H471 + 472 158 1 -0.84760 21.08700 4.56800 21.66900 # O472 + 473 158 2 0.42380 20.58700 4.15300 20.84400 # H473 + 474 158 2 0.42380 21.88400 4.06300 22.08300 # H474 + 475 159 1 -0.84760 15.06800 27.00000 8.00000 # O475 + 476 159 2 0.42380 16.03500 26.91000 8.40000 # H476 + 477 159 2 0.42380 15.16800 27.69600 7.21300 # H477 + 478 160 1 -0.84760 14.23200 10.03000 -0.52200 # O478 + 479 160 2 0.42380 13.77600 10.13200 -1.47600 # H479 + 480 160 2 0.42380 14.84100 9.20900 -0.57500 # H480 + 481 161 1 -0.84760 12.95200 7.21000 1.31400 # O481 + 482 161 2 0.42380 12.27200 7.81500 0.88100 # H482 + 483 161 2 0.42380 13.40600 7.71600 2.08100 # H483 + 484 162 1 -0.84760 22.41200 13.99100 4.68900 # O484 + 485 162 2 0.42380 21.52000 14.48700 4.62100 # H485 + 486 162 2 0.42380 22.76900 14.50200 5.49300 # H486 + 487 163 1 -0.84760 20.07900 8.68600 -0.60200 # O487 + 488 163 2 0.42380 19.81200 9.66100 -0.32600 # H488 + 489 163 2 0.42380 21.07400 8.50100 -0.62000 # H489 + 490 164 1 -0.84760 19.40500 3.95400 19.50300 # O490 + 491 164 2 0.42380 19.26400 4.92100 19.20300 # H491 + 492 164 2 0.42380 20.12100 3.71500 18.83700 # H492 + 493 165 1 -0.84760 22.82000 22.39200 5.52600 # O493 + 494 165 2 0.42380 22.93100 22.21200 4.54800 # H494 + 495 165 2 0.42380 21.83200 22.52500 5.60500 # H495 + 496 166 1 -0.84760 18.20800 2.98900 13.31600 # O496 + 497 166 2 0.42380 18.46600 3.96300 13.54700 # H497 + 498 166 2 0.42380 19.10000 2.48200 12.98400 # H498 + 499 167 1 -0.84760 12.98300 16.84500 17.12000 # O499 + 500 167 2 0.42380 13.53200 16.05800 17.01200 # H500 + 501 167 2 0.42380 12.94100 16.80900 18.15700 # H501 + 502 168 1 -0.84760 28.53200 11.25600 19.74200 # O502 + 503 168 2 0.42380 27.95500 11.67300 20.42700 # H503 + 504 168 2 0.42380 29.21600 11.99200 19.69500 # H504 + 505 169 1 -0.84760 8.23900 7.27400 24.66700 # O505 + 506 169 2 0.42380 8.18800 6.37900 24.20300 # H506 + 507 169 2 0.42380 7.39500 7.37600 25.12300 # H507 + 508 170 1 -0.84760 12.41600 1.34000 16.33800 # O508 + 509 170 2 0.42380 12.98100 1.63300 15.55000 # H509 + 510 170 2 0.42380 11.69600 0.62700 16.12300 # H510 + 511 171 1 -0.84760 14.44100 23.55200 5.37700 # O511 + 512 171 2 0.42380 13.91700 22.64700 5.08900 # H512 + 513 171 2 0.42380 13.90100 24.38200 4.97100 # H513 + 514 172 1 -0.84760 12.34700 8.67200 4.62100 # O514 + 515 172 2 0.42380 11.63100 8.10600 4.17100 # H515 + 516 172 2 0.42380 12.19400 9.60700 4.21400 # H516 + 517 173 1 -0.84760 21.73500 15.69400 14.61100 # O517 + 518 173 2 0.42380 21.52000 14.78400 14.25600 # H518 + 519 173 2 0.42380 20.84300 16.25900 14.41100 # H519 + 520 174 1 -0.84760 26.28500 15.55500 5.80200 # O520 + 521 174 2 0.42380 26.92100 14.91600 6.29300 # H521 + 522 174 2 0.42380 25.34200 15.42500 6.13300 # H522 + 523 175 1 -0.84760 0.67500 13.59000 5.58300 # O523 + 524 175 2 0.42380 0.91700 14.27500 6.28100 # H524 + 525 175 2 0.42380 1.48100 12.98000 5.49700 # H525 + 526 176 1 -0.84760 20.33500 13.51000 22.74200 # O526 + 527 176 2 0.42380 19.46500 14.01700 22.72500 # H527 + 528 176 2 0.42380 20.47400 12.96200 23.58900 # H528 + 529 177 1 -0.84760 2.31300 28.51700 19.81500 # O529 + 530 177 2 0.42380 2.01300 28.77000 20.71500 # H530 + 531 177 2 0.42380 1.41400 28.34100 19.44700 # H531 + 532 178 1 -0.84760 17.72900 10.27700 29.56200 # O532 + 533 178 2 0.42380 17.02900 10.58200 28.90200 # H533 + 534 178 2 0.42380 18.13500 11.06100 30.09800 # H534 + 535 179 1 -0.84760 20.90800 0.61300 24.55000 # O535 + 536 179 2 0.42380 20.06900 0.85600 24.97000 # H536 + 537 179 2 0.42380 21.51200 0.43400 25.38100 # H537 + 538 180 1 -0.84760 14.32000 12.90500 22.84800 # O538 + 539 180 2 0.42380 15.00600 12.09300 22.88700 # H539 + 540 180 2 0.42380 14.64800 13.61500 22.18900 # H540 + 541 181 1 -0.84760 17.51700 13.05600 20.10500 # O541 + 542 181 2 0.42380 17.37800 13.44500 21.06400 # H542 + 543 181 2 0.42380 17.77500 12.04900 20.18600 # H543 + 544 182 1 -0.84760 3.57500 24.92100 2.24600 # O544 + 545 182 2 0.42380 3.89100 23.94600 2.43100 # H545 + 546 182 2 0.42380 3.28600 25.02900 3.18900 # H546 + 547 183 1 -0.84760 0.04900 17.15900 25.41000 # O547 + 548 183 2 0.42380 -0.72300 17.23100 24.64300 # H548 + 549 183 2 0.42380 -0.10900 17.88300 26.14300 # H549 + 550 184 1 -0.84760 8.81400 28.47200 19.58400 # O550 + 551 184 2 0.42380 8.22100 28.47700 20.40300 # H551 + 552 184 2 0.42380 8.64600 29.21600 18.92700 # H552 + 553 185 1 -0.84760 26.32400 22.12200 20.94200 # O553 + 554 185 2 0.42380 25.96700 21.18200 20.85800 # H554 + 555 185 2 0.42380 25.46800 22.66900 20.99100 # H555 + 556 186 1 -0.84760 29.84500 6.84900 20.25200 # O556 + 557 186 2 0.42380 29.85200 7.58200 20.95000 # H557 + 558 186 2 0.42380 29.05600 6.26000 20.42900 # H558 + 559 187 1 -0.84760 15.72100 10.32200 9.03100 # O559 + 560 187 2 0.42380 15.43600 9.57500 9.60800 # H560 + 561 187 2 0.42380 16.48100 9.96400 8.45500 # H561 + 562 188 1 -0.84760 16.02400 27.53700 5.47600 # O562 + 563 188 2 0.42380 15.89400 28.57400 5.36000 # H563 + 564 188 2 0.42380 17.09100 27.44100 5.69100 # H564 + 565 189 1 -0.84760 27.45800 12.03000 15.51400 # O565 + 566 189 2 0.42380 27.26400 12.99000 15.88700 # H566 + 567 189 2 0.42380 26.53200 11.59100 15.36700 # H567 + 568 190 1 -0.84760 1.37300 -0.01600 10.70200 # O568 + 569 190 2 0.42380 0.57500 0.20500 11.24100 # H569 + 570 190 2 0.42380 2.08300 -0.23200 11.40500 # H570 + 571 191 1 -0.84760 5.14400 4.21600 2.65800 # O571 + 572 191 2 0.42380 5.90100 4.44800 3.27700 # H572 + 573 191 2 0.42380 4.76000 3.40200 3.10100 # H573 + 574 192 1 -0.84760 13.62400 15.89200 13.41800 # O574 + 575 192 2 0.42380 13.21500 14.97700 13.20500 # H575 + 576 192 2 0.42380 14.14000 15.69800 14.27200 # H576 + 577 193 1 -0.84760 18.02700 18.45900 22.76700 # O577 + 578 193 2 0.42380 17.89700 18.24600 21.77000 # H578 + 579 193 2 0.42380 17.55900 17.74400 23.29200 # H579 + 580 194 1 -0.84760 14.03500 6.72100 3.82200 # O580 + 581 194 2 0.42380 13.07200 6.52400 4.10400 # H581 + 582 194 2 0.42380 14.22500 7.76000 3.75200 # H582 + 583 195 1 -0.84760 2.70000 26.70500 7.58000 # O583 + 584 195 2 0.42380 1.95400 26.02000 7.52700 # H584 + 585 195 2 0.42380 2.31900 27.44700 6.99500 # H585 + 586 196 1 -0.84760 17.29000 2.40200 1.41600 # O586 + 587 196 2 0.42380 16.56800 1.69800 1.37200 # H587 + 588 196 2 0.42380 16.67500 3.13600 1.64500 # H588 + 589 197 1 -0.84760 7.17700 20.82500 4.18200 # O589 + 590 197 2 0.42380 6.56700 20.63700 3.36400 # H590 + 591 197 2 0.42380 6.70600 20.48200 5.01000 # H591 + 592 198 1 -0.84760 4.18400 1.70500 18.56600 # O592 + 593 198 2 0.42380 3.78400 2.57600 18.83800 # H593 + 594 198 2 0.42380 4.59200 1.51500 19.45500 # H594 + 595 199 1 -0.84760 18.38500 22.81800 15.15900 # O595 + 596 199 2 0.42380 19.16100 22.19800 14.80500 # H596 + 597 199 2 0.42380 18.92800 23.67600 15.39900 # H597 + 598 200 1 -0.84760 15.22900 1.69200 22.93500 # O598 + 599 200 2 0.42380 16.02600 1.07100 22.84900 # H599 + 600 200 2 0.42380 15.04700 2.20500 22.07000 # H600 + 601 201 1 -0.84760 9.24200 2.19500 20.13300 # O601 + 602 201 2 0.42380 9.04300 3.12300 19.68400 # H602 + 603 201 2 0.42380 9.18200 2.31400 21.15400 # H603 + 604 202 1 -0.84760 21.21100 0.75700 16.20800 # O604 + 605 202 2 0.42380 20.90300 1.03400 15.29800 # H605 + 606 202 2 0.42380 21.47400 1.70800 16.57100 # H606 + 607 203 1 -0.84760 25.26300 28.96100 3.71900 # O607 + 608 203 2 0.42380 25.43100 28.36300 2.94900 # H608 + 609 203 2 0.42380 25.45900 28.49800 4.62100 # H609 + 610 204 1 -0.84760 15.04500 19.70400 3.35100 # O610 + 611 204 2 0.42380 14.63900 18.78900 3.54500 # H611 + 612 204 2 0.42380 14.46700 20.51800 3.50700 # H612 + 613 205 1 -0.84760 13.49100 8.86700 17.02500 # O613 + 614 205 2 0.42380 13.34500 7.90100 17.19000 # H614 + 615 205 2 0.42380 12.54900 8.93000 16.57100 # H615 + 616 206 1 -0.84760 18.49100 8.02900 13.87300 # O616 + 617 206 2 0.42380 17.91200 8.63900 13.22400 # H617 + 618 206 2 0.42380 18.49600 7.14700 13.40200 # H618 + 619 207 1 -0.84760 18.45500 14.51300 0.43900 # O619 + 620 207 2 0.42380 19.26700 15.00700 0.61200 # H620 + 621 207 2 0.42380 18.25500 13.99200 1.24800 # H621 + 622 208 1 -0.84760 26.66300 14.98700 10.26100 # O622 + 623 208 2 0.42380 27.33900 14.54400 9.72300 # H623 + 624 208 2 0.42380 27.08300 15.84000 10.58400 # H624 + 625 209 1 -0.84760 0.79200 15.54100 14.80600 # O625 + 626 209 2 0.42380 0.60500 16.35400 15.34800 # H626 + 627 209 2 0.42380 1.59700 14.98900 14.96500 # H627 + 628 210 1 -0.84760 1.24800 0.86300 19.58500 # O628 + 629 210 2 0.42380 1.74900 0.15400 19.04400 # H629 + 630 210 2 0.42380 2.03000 1.40800 19.93700 # H630 + 631 211 1 -0.84760 17.41700 16.44900 16.91800 # O631 + 632 211 2 0.42380 16.58900 16.94000 17.26700 # H632 + 633 211 2 0.42380 17.15400 15.56300 16.52200 # H633 + 634 212 1 -0.84760 12.61100 -0.74700 0.78800 # O634 + 635 212 2 0.42380 12.83900 -1.64100 0.34800 # H635 + 636 212 2 0.42380 12.99300 -0.02800 0.20700 # H636 + 637 213 1 -0.84760 8.58700 15.73300 6.99100 # O637 + 638 213 2 0.42380 8.15000 15.39900 7.84600 # H638 + 639 213 2 0.42380 7.96000 16.26500 6.44500 # H639 + 640 214 1 -0.84760 0.10100 8.84700 9.14300 # O640 + 641 214 2 0.42380 -0.12000 9.30800 8.23200 # H641 + 642 214 2 0.42380 0.69600 8.07800 9.00700 # H642 + 643 215 1 -0.84760 7.83200 19.40900 21.52800 # O643 + 644 215 2 0.42380 8.82700 19.74400 21.54000 # H644 + 645 215 2 0.42380 7.43400 19.98000 22.32400 # H645 + 646 216 1 -0.84760 24.88300 29.08000 22.32600 # O646 + 647 216 2 0.42380 24.29100 28.30800 22.06700 # H647 + 648 216 2 0.42380 25.66200 28.58900 22.73400 # H648 + 649 217 1 -0.84760 24.14600 8.41900 28.35000 # O649 + 650 217 2 0.42380 23.90300 8.83400 29.30300 # H650 + 651 217 2 0.42380 23.28300 8.15100 27.78300 # H651 + 652 218 1 -0.84760 2.71000 17.46700 19.40600 # O652 + 653 218 2 0.42380 1.81500 17.24400 19.87200 # H653 + 654 218 2 0.42380 3.27000 16.66600 19.10500 # H654 + 655 219 1 -0.84760 12.08300 1.09900 6.91900 # O655 + 656 219 2 0.42380 12.36500 1.00800 5.93100 # H656 + 657 219 2 0.42380 11.27700 0.50000 6.95900 # H657 + 658 220 1 -0.84760 28.61200 16.27300 0.63700 # O658 + 659 220 2 0.42380 28.64200 16.41000 -0.42900 # H659 + 660 220 2 0.42380 27.66700 16.38600 0.82000 # H660 + 661 221 1 -0.84760 17.84500 10.35800 3.96000 # O661 + 662 221 2 0.42380 18.37600 9.84700 3.27200 # H662 + 663 221 2 0.42380 17.85400 11.36300 3.75400 # H663 + 664 222 1 -0.84760 16.54600 5.94400 19.90700 # O664 + 665 222 2 0.42380 15.56700 5.95500 20.04000 # H665 + 666 222 2 0.42380 16.76000 5.76200 18.98500 # H666 + 667 223 1 -0.84760 4.76800 14.87500 19.66700 # O667 + 668 223 2 0.42380 5.24500 14.35600 18.98900 # H668 + 669 223 2 0.42380 5.00700 14.59300 20.60100 # H669 + 670 224 1 -0.84760 8.43700 26.26700 11.43900 # O670 + 671 224 2 0.42380 7.88700 26.77400 12.09200 # H671 + 672 224 2 0.42380 9.34900 26.38400 11.65300 # H672 + 673 225 1 -0.84760 11.14500 19.49700 12.30900 # O673 + 674 225 2 0.42380 10.87400 19.72900 11.26700 # H674 + 675 225 2 0.42380 10.49900 20.14800 12.82300 # H675 + 676 226 1 -0.84760 7.26600 12.28000 9.35500 # O676 + 677 226 2 0.42380 8.30600 12.10900 9.33800 # H677 + 678 226 2 0.42380 7.02700 11.30500 9.55000 # H678 + 679 227 1 -0.84760 13.84500 4.44700 12.97500 # O679 + 680 227 2 0.42380 13.17600 4.57100 13.69400 # H680 + 681 227 2 0.42380 13.26800 4.78100 12.26700 # H681 + 682 228 1 -0.84760 20.55100 18.83200 2.05500 # O682 + 683 228 2 0.42380 21.07300 18.02000 1.61900 # H683 + 684 228 2 0.42380 21.19500 19.63100 2.07600 # H684 + 685 229 1 -0.84760 14.23000 17.12400 4.30100 # O685 + 686 229 2 0.42380 14.08000 16.88000 5.37800 # H686 + 687 229 2 0.42380 14.54000 16.21400 3.84000 # H687 + 688 230 1 -0.84760 26.33600 20.79200 15.28500 # O688 + 689 230 2 0.42380 26.85300 19.93300 15.49500 # H689 + 690 230 2 0.42380 25.33100 20.70500 15.65100 # H690 + 691 231 1 -0.84760 1.50800 24.66300 11.21700 # O691 + 692 231 2 0.42380 1.28100 23.70300 11.23800 # H692 + 693 231 2 0.42380 0.99500 25.08100 10.41200 # H693 + 694 232 1 -0.84760 27.31800 3.87100 4.07400 # O694 + 695 232 2 0.42380 26.88700 4.80700 3.98200 # H695 + 696 232 2 0.42380 28.30400 4.07500 3.91500 # H696 + 697 233 1 -0.84760 5.79500 1.18200 23.83900 # O697 + 698 233 2 0.42380 6.32100 0.52000 23.26500 # H698 + 699 233 2 0.42380 5.98300 0.97000 24.82700 # H699 + 700 234 1 -0.84760 16.77600 21.32800 17.80500 # O700 + 701 234 2 0.42380 16.36100 20.57400 18.36000 # H701 + 702 234 2 0.42380 16.67300 21.14200 16.82600 # H702 + 703 235 1 -0.84760 20.02700 15.39000 25.15800 # O703 + 704 235 2 0.42380 20.28900 15.71600 26.05600 # H704 + 705 235 2 0.42380 19.97300 16.10800 24.42100 # H705 + 706 236 1 -0.84760 13.95400 5.18600 18.25200 # O706 + 707 236 2 0.42380 13.30500 4.41500 18.35000 # H707 + 708 236 2 0.42380 14.61300 4.73700 17.60200 # H708 + 709 237 1 -0.84760 24.35500 23.90700 15.00000 # O709 + 710 237 2 0.42380 24.29100 23.18100 14.25900 # H710 + 711 237 2 0.42380 23.98000 24.80500 14.76100 # H711 + 712 238 1 -0.84760 3.90100 27.25500 28.80500 # O712 + 713 238 2 0.42380 4.67800 27.81800 28.66400 # H713 + 714 238 2 0.42380 3.09100 27.67000 28.47200 # H714 + 715 239 1 -0.84760 16.57600 21.68400 25.60700 # O715 + 716 239 2 0.42380 16.06100 22.35300 24.98200 # H716 + 717 239 2 0.42380 15.94100 21.09800 26.11700 # H717 + 718 240 1 -0.84760 7.58300 17.01700 28.05600 # O718 + 719 240 2 0.42380 7.26900 16.56200 27.14400 # H719 + 720 240 2 0.42380 7.01900 17.03500 28.94900 # H720 + 721 241 1 -0.84760 21.80100 19.55400 -0.55100 # O721 + 722 241 2 0.42380 22.56300 20.00900 -1.05400 # H722 + 723 241 2 0.42380 21.04200 19.66900 -1.12700 # H723 + 724 242 1 -0.84760 11.93600 26.16500 8.75000 # O724 + 725 242 2 0.42380 12.22500 25.69700 7.91000 # H725 + 726 242 2 0.42380 12.48100 25.67400 9.46100 # H726 + 727 243 1 -0.84760 24.78600 16.49500 21.39500 # O727 + 728 243 2 0.42380 25.51200 17.20000 21.44300 # H728 + 729 243 2 0.42380 23.94700 16.91800 21.63000 # H729 + 730 244 1 -0.84760 3.50900 13.39600 23.81400 # O730 + 731 244 2 0.42380 4.27000 13.86100 24.41900 # H731 + 732 244 2 0.42380 4.17400 13.00200 23.09100 # H732 + 733 245 1 -0.84760 3.99900 7.64700 26.09300 # O733 + 734 245 2 0.42380 3.20700 7.98200 25.55400 # H734 + 735 245 2 0.42380 4.49200 7.02900 25.41300 # H735 + 736 246 1 -0.84760 3.63900 18.61900 0.59400 # O736 + 737 246 2 0.42380 3.58800 17.70200 1.06800 # H737 + 738 246 2 0.42380 4.38500 19.08900 1.14800 # H738 + 739 247 1 -0.84760 9.93300 24.42200 14.24800 # O739 + 740 247 2 0.42380 9.85900 23.58500 13.65200 # H740 + 741 247 2 0.42380 10.29100 25.28000 13.75100 # H741 + 742 248 1 -0.84760 22.78300 16.98000 10.33400 # O742 + 743 248 2 0.42380 23.14700 18.00000 10.38200 # H743 + 744 248 2 0.42380 23.13600 16.33100 11.02700 # H744 + 745 249 1 -0.84760 13.75100 1.02900 4.36700 # O745 + 746 249 2 0.42380 14.40500 1.74900 4.74500 # H746 + 747 249 2 0.42380 13.79800 1.33000 3.41000 # H747 + 748 250 1 -0.84760 16.52300 15.46700 29.56300 # O748 + 749 250 2 0.42380 17.30400 15.15000 30.08700 # H749 + 750 250 2 0.42380 15.77700 15.33700 30.25500 # H750 + 751 251 1 -0.84760 7.67200 15.32000 9.68800 # O751 + 752 251 2 0.42380 8.27100 14.50600 9.57200 # H752 + 753 251 2 0.42380 7.26500 14.97900 10.54300 # H753 + 754 252 1 -0.84760 6.73400 22.83300 21.74700 # O754 + 755 252 2 0.42380 7.33500 22.75500 20.95200 # H755 + 756 252 2 0.42380 5.96400 22.17600 21.58500 # H756 + 757 253 1 -0.84760 28.66600 24.11400 27.25200 # O757 + 758 253 2 0.42380 27.71300 23.88100 27.24200 # H758 + 759 253 2 0.42380 28.89400 24.55400 26.37100 # H759 + 760 254 1 -0.84760 26.62600 29.42200 28.66300 # O760 + 761 254 2 0.42380 25.96300 30.18600 28.63900 # H761 + 762 254 2 0.42380 26.07700 28.84600 29.29100 # H762 + 763 255 1 -0.84760 0.35000 28.67800 21.88200 # O763 + 764 255 2 0.42380 -0.61400 28.49300 22.10200 # H764 + 765 255 2 0.42380 0.71500 27.78300 22.11200 # H765 + 766 256 1 -0.84760 13.47000 24.34000 12.88700 # O766 + 767 256 2 0.42380 12.85500 23.61900 13.27400 # H767 + 768 256 2 0.42380 14.36400 24.22600 13.39700 # H768 + 769 257 1 -0.84760 20.34800 10.80800 6.75400 # O769 + 770 257 2 0.42380 21.27500 11.06400 6.42500 # H770 + 771 257 2 0.42380 19.68700 10.52300 6.07000 # H771 + 772 258 1 -0.84760 20.78700 -0.46400 11.51100 # O772 + 773 258 2 0.42380 20.27100 -0.28600 10.67000 # H773 + 774 258 2 0.42380 20.39300 0.20300 12.08400 # H774 + 775 259 1 -0.84760 26.29300 1.73100 16.35100 # O775 + 776 259 2 0.42380 26.54100 2.29000 17.11200 # H776 + 777 259 2 0.42380 27.03300 1.92500 15.72700 # H777 + 778 260 1 -0.84760 10.51000 5.51600 5.06600 # O778 + 779 260 2 0.42380 9.74700 4.89000 5.30200 # H779 + 780 260 2 0.42380 10.10300 6.19800 4.43700 # H780 + 781 261 1 -0.84760 7.03700 0.34600 28.66100 # O781 + 782 261 2 0.42380 7.74000 -0.34500 29.00900 # H782 + 783 261 2 0.42380 6.17800 -0.27900 28.71000 # H783 + 784 262 1 -0.84760 25.07900 11.33600 14.72800 # O784 + 785 262 2 0.42380 25.02600 10.82200 13.80600 # H785 + 786 262 2 0.42380 24.09800 11.64100 14.83400 # H786 + 787 263 1 -0.84760 9.44600 15.10300 3.13100 # O787 + 788 263 2 0.42380 9.72700 15.64800 2.34300 # H788 + 789 263 2 0.42380 8.51700 14.82100 2.82600 # H789 + 790 264 1 -0.84760 5.46300 18.74100 25.34700 # O790 + 791 264 2 0.42380 4.44600 18.97500 25.39300 # H791 + 792 264 2 0.42380 5.53900 17.73800 25.29600 # H792 + 793 265 1 -0.84760 5.50600 21.82300 -0.10800 # O793 + 794 265 2 0.42380 5.80500 22.77800 0.12400 # H794 + 795 265 2 0.42380 6.27700 21.17000 -0.14800 # H795 + 796 266 1 -0.84760 27.88000 19.46000 1.95200 # O796 + 797 266 2 0.42380 28.65700 19.78600 2.50700 # H797 + 798 266 2 0.42380 28.17900 18.89800 1.14400 # H798 + 799 267 1 -0.84760 12.35600 11.97700 4.46700 # O799 + 800 267 2 0.42380 13.03300 12.66500 4.21900 # H800 + 801 267 2 0.42380 12.80600 11.10300 4.25800 # H801 + 802 268 1 -0.84760 8.60200 7.28900 27.67900 # O802 + 803 268 2 0.42380 9.23400 8.09600 27.78600 # H803 + 804 268 2 0.42380 7.68200 7.66600 27.42600 # H804 + 805 269 1 -0.84760 21.65600 22.83600 27.51100 # O805 + 806 269 2 0.42380 20.93800 22.65300 28.20100 # H806 + 807 269 2 0.42380 22.06400 23.73300 27.79100 # H807 + 808 270 1 -0.84760 6.79500 15.28800 13.91400 # O808 + 809 270 2 0.42380 7.07600 14.91500 13.01700 # H809 + 810 270 2 0.42380 7.64200 15.16900 14.42100 # H810 + 811 271 1 -0.84760 12.64500 14.94700 2.61200 # O811 + 812 271 2 0.42380 11.98400 14.93400 1.79800 # H812 + 813 271 2 0.42380 12.50400 15.78800 3.01800 # H813 + 814 272 1 -0.84760 8.83000 13.27800 17.89900 # O814 + 815 272 2 0.42380 8.79600 13.47000 16.91900 # H815 + 816 272 2 0.42380 8.35400 14.09700 18.28200 # H816 + 817 273 1 -0.84760 7.36400 28.18200 29.66300 # O817 + 818 273 2 0.42380 7.16700 27.28100 30.10900 # H818 + 819 273 2 0.42380 6.58700 28.71500 30.02900 # H819 + 820 274 1 -0.84760 11.41400 15.36700 5.37700 # O820 + 821 274 2 0.42380 11.00600 15.34100 4.47400 # H821 + 822 274 2 0.42380 11.83300 14.46500 5.56600 # H822 + 823 275 1 -0.84760 7.50000 6.68900 7.27700 # O823 + 824 275 2 0.42380 7.03700 6.96300 8.11200 # H824 + 825 275 2 0.42380 7.58800 5.62800 7.34100 # H825 + 826 276 1 -0.84760 18.35000 21.26300 7.02600 # O826 + 827 276 2 0.42380 17.47500 21.76600 7.07300 # H827 + 828 276 2 0.42380 18.88500 21.62400 6.23600 # H828 + 829 277 1 -0.84760 7.05400 18.76100 16.03800 # O829 + 830 277 2 0.42380 7.99900 19.08000 16.04100 # H830 + 831 277 2 0.42380 6.72900 18.90100 15.03800 # H831 + 832 278 1 -0.84760 26.64600 -0.00100 12.35200 # O832 + 833 278 2 0.42380 27.50600 0.08800 12.98300 # H833 + 834 278 2 0.42380 26.75300 -0.86100 11.80100 # H834 + 835 279 1 -0.84760 11.29900 2.98400 18.61200 # O835 + 836 279 2 0.42380 10.33400 3.12200 19.00900 # H836 + 837 279 2 0.42380 11.56100 2.04800 18.91200 # H837 + 838 280 1 -0.84760 14.25000 29.32200 3.30900 # O838 + 839 280 2 0.42380 14.47600 29.58400 2.31600 # H839 + 840 280 2 0.42380 14.00300 30.16000 3.83400 # H840 + 841 281 1 -0.84760 2.88800 15.57300 6.31500 # O841 + 842 281 2 0.42380 3.27900 16.03900 7.15900 # H842 + 843 281 2 0.42380 3.69500 15.58300 5.59100 # H843 + 844 282 1 -0.84760 14.10700 27.19700 0.95500 # O844 + 845 282 2 0.42380 13.09600 27.01300 0.93800 # H845 + 846 282 2 0.42380 14.50500 26.49800 0.34800 # H846 + 847 283 1 -0.84760 29.93100 26.37900 12.24200 # O847 + 848 283 2 0.42380 30.61700 25.63200 12.21600 # H848 + 849 283 2 0.42380 29.00900 26.00000 12.44300 # H849 + 850 284 1 -0.84760 20.41800 -0.23900 1.17700 # O850 + 851 284 2 0.42380 21.43400 -0.19600 1.28600 # H851 + 852 284 2 0.42380 20.00400 0.53800 0.63300 # H852 + 853 285 1 -0.84760 3.20000 28.88300 4.45300 # O853 + 854 285 2 0.42380 3.24400 29.45200 5.22400 # H854 + 855 285 2 0.42380 3.93100 29.20000 3.78600 # H855 + 856 286 1 -0.84760 -0.96000 10.89700 2.95300 # O856 + 857 286 2 0.42380 -1.58100 10.26700 2.47900 # H857 + 858 286 2 0.42380 -0.13200 11.06300 2.48500 # H858 + 859 287 1 -0.84760 29.44500 1.96000 28.74200 # O859 + 860 287 2 0.42380 29.30000 2.55700 27.88200 # H860 + 861 287 2 0.42380 29.30700 2.41700 29.62200 # H861 + 862 288 1 -0.84760 6.86600 18.53900 8.97700 # O862 + 863 288 2 0.42380 6.36800 19.37400 8.91900 # H863 + 864 288 2 0.42380 6.93200 18.25100 9.96800 # H864 + 865 289 1 -0.84760 9.40600 25.21400 25.61800 # O865 + 866 289 2 0.42380 9.40600 25.19900 26.57500 # H866 + 867 289 2 0.42380 8.82900 25.94500 25.19200 # H867 + 868 290 1 -0.84760 23.07700 5.97600 14.12900 # O868 + 869 290 2 0.42380 23.87300 5.33000 13.96900 # H869 + 870 290 2 0.42380 23.44400 6.75000 14.68600 # H870 + 871 291 1 -0.84760 21.16600 22.07300 14.37800 # O871 + 872 291 2 0.42380 21.31800 22.99100 13.95800 # H872 + 873 291 2 0.42380 21.11500 21.35300 13.66200 # H873 + 874 292 1 -0.84760 2.10300 14.99800 -0.46700 # O874 + 875 292 2 0.42380 1.72700 14.12300 -0.78300 # H875 + 876 292 2 0.42380 1.43100 15.15900 0.30500 # H876 + 877 293 1 -0.84760 8.38900 17.59500 4.31200 # O877 + 878 293 2 0.42380 8.91100 16.81800 4.64300 # H878 + 879 293 2 0.42380 8.98400 18.08900 3.63000 # H879 + 880 294 1 -0.84760 18.42900 27.29600 5.48400 # O880 + 881 294 2 0.42380 19.42900 27.07200 5.80500 # H881 + 882 294 2 0.42380 18.44000 27.08100 4.50600 # H882 + 883 295 1 -0.84760 5.28600 16.08800 23.52700 # O883 + 884 295 2 0.42380 5.08800 16.61300 22.63400 # H884 + 885 295 2 0.42380 5.91600 16.69700 24.08900 # H885 + 886 296 1 -0.84760 22.21500 11.50700 11.66000 # O886 + 887 296 2 0.42380 23.23100 11.37700 11.71900 # H887 + 888 296 2 0.42380 21.95700 12.52000 11.73500 # H888 + 889 297 1 -0.84760 23.78400 2.26600 17.45100 # O889 + 890 297 2 0.42380 24.25800 1.87800 16.63300 # H890 + 891 297 2 0.42380 24.18000 3.13900 17.75600 # H891 + 892 298 1 -0.84760 10.09800 27.30300 3.37700 # O892 + 893 298 2 0.42380 10.32900 28.30300 3.50800 # H893 + 894 298 2 0.42380 9.26600 27.23200 2.81500 # H894 + 895 299 1 -0.84760 27.03800 14.30500 1.95500 # O895 + 896 299 2 0.42380 27.93500 14.71000 2.17500 # H896 + 897 299 2 0.42380 27.00900 13.49900 2.52800 # H897 + 898 300 1 -0.84760 3.36300 12.13500 19.58000 # O898 + 899 300 2 0.42380 3.96700 12.44100 20.31600 # H899 + 900 300 2 0.42380 3.46300 12.66700 18.69400 # H900 + 901 301 1 -0.84760 7.72000 7.48400 13.41300 # O901 + 902 301 2 0.42380 6.85900 7.04600 13.17400 # H902 + 903 301 2 0.42380 7.49500 8.46700 13.48200 # H903 + 904 302 1 -0.84760 15.09900 24.83500 27.68500 # O904 + 905 302 2 0.42380 15.50500 24.24700 28.42200 # H905 + 906 302 2 0.42380 14.13100 24.96300 27.90200 # H906 + 907 303 1 -0.84760 1.15900 12.92500 25.01400 # O907 + 908 303 2 0.42380 0.46100 12.64100 24.31800 # H908 + 909 303 2 0.42380 1.99400 12.37900 24.70200 # H909 + 910 304 1 -0.84760 11.69100 28.58700 17.76100 # O910 + 911 304 2 0.42380 12.03600 28.82800 16.81000 # H911 + 912 304 2 0.42380 11.25100 27.68000 17.68600 # H912 + 913 305 1 -0.84760 13.08000 28.33900 12.69100 # O913 + 914 305 2 0.42380 13.19900 27.38200 12.38900 # H914 + 915 305 2 0.42380 13.90500 28.71700 12.19500 # H915 + 916 306 1 -0.84760 20.10500 25.56600 21.26000 # O916 + 917 306 2 0.42380 19.87100 25.64200 20.19200 # H917 + 918 306 2 0.42380 19.48700 24.83800 21.61800 # H918 + 919 307 1 -0.84760 8.55100 12.04000 3.45200 # O919 + 920 307 2 0.42380 8.69600 12.98800 3.84800 # H920 + 921 307 2 0.42380 9.40800 11.52000 3.29700 # H921 + 922 308 1 -0.84760 15.03500 17.08200 19.02600 # O922 + 923 308 2 0.42380 15.80600 16.84700 18.48000 # H923 + 924 308 2 0.42380 15.26100 17.64800 19.75700 # H924 + 925 309 1 -0.84760 4.23500 10.48300 16.44300 # O925 + 926 309 2 0.42380 5.10200 10.19500 16.91000 # H926 + 927 309 2 0.42380 3.70600 9.60100 16.63900 # H927 + 928 310 1 -0.84760 29.07000 27.60700 14.61500 # O928 + 929 310 2 0.42380 28.95400 26.92600 15.29300 # H929 + 930 310 2 0.42380 29.37400 27.20200 13.76400 # H930 + 931 311 1 -0.84760 15.33700 18.69300 6.76700 # O931 + 932 311 2 0.42380 16.14700 18.23800 6.46600 # H932 + 933 311 2 0.42380 14.62200 18.99200 6.12800 # H933 + 934 312 1 -0.84760 22.97900 18.23400 23.67500 # O934 + 935 312 2 0.42380 22.66200 17.35600 23.20300 # H935 + 936 312 2 0.42380 22.95000 17.75400 24.56600 # H936 + 937 313 1 -0.84760 24.79800 10.88400 12.01000 # O937 + 938 313 2 0.42380 25.17800 11.54100 12.72900 # H938 + 939 313 2 0.42380 25.52600 10.71300 11.34900 # H939 + 940 314 1 -0.84760 7.72800 3.02500 22.95200 # O940 + 941 314 2 0.42380 7.65300 2.53200 23.83700 # H941 + 942 314 2 0.42380 7.45000 2.31600 22.31200 # H942 + 943 315 1 -0.84760 7.45000 0.58000 21.64100 # O943 + 944 315 2 0.42380 7.98500 0.31800 20.82300 # H944 + 945 315 2 0.42380 6.87900 -0.33000 21.70100 # H945 + 946 316 1 -0.84760 14.89500 15.51400 21.60900 # O946 + 947 316 2 0.42380 15.45200 16.34100 21.44600 # H947 + 948 316 2 0.42380 14.80800 15.21400 20.66100 # H948 + 949 317 1 -0.84760 16.88600 7.36400 8.30200 # O949 + 950 317 2 0.42380 16.06400 7.10400 7.87100 # H950 + 951 317 2 0.42380 17.61000 7.00500 7.70700 # H951 + 952 318 1 -0.84760 24.01500 10.35700 -0.67600 # O952 + 953 318 2 0.42380 24.22600 11.33500 -0.95900 # H953 + 954 318 2 0.42380 24.72100 10.11000 0.04100 # H954 + 955 319 1 -0.84760 16.52900 -0.79400 5.02600 # O955 + 956 319 2 0.42380 15.75700 -0.94200 4.35400 # H956 + 957 319 2 0.42380 17.35200 -0.67400 4.46300 # H957 + 958 320 1 -0.84760 7.85100 8.52700 20.99800 # O958 + 959 320 2 0.42380 8.34000 9.18900 21.59800 # H959 + 960 320 2 0.42380 7.44200 9.20700 20.42300 # H960 + 961 321 1 -0.84760 23.76700 19.80700 27.82800 # O961 + 962 321 2 0.42380 24.40800 20.44300 28.28000 # H962 + 963 321 2 0.42380 24.11000 19.80100 26.85900 # H963 + 964 322 1 -0.84760 5.43500 2.46800 11.12500 # O964 + 965 322 2 0.42380 4.73200 2.69100 11.81900 # H965 + 966 322 2 0.42380 5.34400 1.41000 10.87000 # H966 + 967 323 1 -0.84760 17.50600 29.21200 18.78000 # O967 + 968 323 2 0.42380 18.33200 29.41100 18.18900 # H968 + 969 323 2 0.42380 17.88500 29.41700 19.65600 # H969 + 970 324 1 -0.84760 24.19600 23.30400 25.38900 # O970 + 971 324 2 0.42380 24.00200 23.88900 26.15400 # H971 + 972 324 2 0.42380 24.64000 24.00300 24.75200 # H972 + 973 325 1 -0.84760 29.26600 8.08600 3.69900 # O973 + 974 325 2 0.42380 28.31500 8.14300 4.10900 # H974 + 975 325 2 0.42380 29.48200 7.20400 4.19300 # H975 + 976 326 1 -0.84760 15.93000 21.73000 10.78600 # O976 + 977 326 2 0.42380 15.61600 22.15200 11.64400 # H977 + 978 326 2 0.42380 16.91700 21.86400 10.65100 # H978 + 979 327 1 -0.84760 29.24600 28.17200 7.94900 # O979 + 980 327 2 0.42380 28.26200 28.45300 7.92100 # H980 + 981 327 2 0.42380 29.75000 28.70900 8.61600 # H981 + 982 328 1 -0.84760 24.84300 26.44100 10.97300 # O982 + 983 328 2 0.42380 24.85600 25.60700 10.37700 # H983 + 984 328 2 0.42380 24.38700 25.96700 11.80500 # H984 + 985 329 1 -0.84760 20.21700 23.06900 18.59300 # O985 + 986 329 2 0.42380 19.52300 22.36400 18.53700 # H986 + 987 329 2 0.42380 20.51900 23.05000 19.52800 # H987 + 988 330 1 -0.84760 20.38700 0.83200 29.45000 # O988 + 989 330 2 0.42380 21.14000 0.19900 29.11800 # H989 + 990 330 2 0.42380 19.56100 0.73400 28.88200 # H990 + 991 331 1 -0.84760 25.26800 10.20400 9.04900 # O991 + 992 331 2 0.42380 25.80200 9.35600 9.28400 # H992 + 993 331 2 0.42380 25.86700 10.67200 8.30300 # H993 + 994 332 1 -0.84760 20.71700 3.35500 16.84700 # O994 + 995 332 2 0.42380 21.56800 3.97200 16.97900 # H995 + 996 332 2 0.42380 20.63900 3.43900 15.87100 # H996 + 997 333 1 -0.84760 17.93100 1.63100 18.09300 # O997 + 998 333 2 0.42380 18.87100 1.99400 18.26300 # H998 + 999 333 2 0.42380 17.95900 1.84200 17.04600 # H999 + 1000 334 1 -0.84760 22.75800 29.11600 13.69100 # O1000 + 1001 334 2 0.42380 23.29100 29.73400 14.37200 # H1001 + 1002 334 2 0.42380 22.72300 29.65400 12.84700 # H1002 + 1003 335 1 -0.84760 5.20200 9.38600 29.21700 # O1003 + 1004 335 2 0.42380 4.26800 9.07500 29.46600 # H1004 + 1005 335 2 0.42380 5.87200 8.65100 29.51000 # H1005 + 1006 336 1 -0.84760 28.49100 3.00300 0.80300 # O1006 + 1007 336 2 0.42380 29.04200 2.30600 1.27400 # H1007 + 1008 336 2 0.42380 27.98500 3.55400 1.49300 # H1008 + 1009 337 1 -0.84760 9.66100 9.85800 12.27100 # O1009 + 1010 337 2 0.42380 9.79900 10.88000 12.24300 # H1010 + 1011 337 2 0.42380 10.12200 9.43700 11.51200 # H1011 + 1012 338 1 -0.84760 30.11800 19.36200 28.74500 # O1012 + 1013 338 2 0.42380 30.20200 18.72800 27.94500 # H1013 + 1014 338 2 0.42380 29.11500 19.37800 28.93800 # H1014 + 1015 339 1 -0.84760 20.70400 16.06700 3.88200 # O1015 + 1016 339 2 0.42380 21.36600 15.80000 3.10700 # H1016 + 1017 339 2 0.42380 20.46000 16.94400 3.46600 # H1017 + 1018 340 1 -0.84760 8.01600 19.14400 26.06200 # O1018 + 1019 340 2 0.42380 7.53500 19.31700 26.95300 # H1019 + 1020 340 2 0.42380 7.22000 18.86000 25.50600 # H1020 + 1021 341 1 -0.84760 11.98500 14.63800 22.91000 # O1021 + 1022 341 2 0.42380 12.47500 13.80900 23.08200 # H1022 + 1023 341 2 0.42380 11.50800 14.51300 22.00700 # H1023 + 1024 342 1 -0.84760 17.50100 12.14200 11.47000 # O1024 + 1025 342 2 0.42380 17.41100 12.56400 12.38600 # H1025 + 1026 342 2 0.42380 16.89500 12.58900 10.80200 # H1026 + 1027 343 1 -0.84760 12.78500 11.75100 25.70700 # O1027 + 1028 343 2 0.42380 12.36000 10.93700 26.23100 # H1028 + 1029 343 2 0.42380 12.22700 12.09800 24.94100 # H1029 + 1030 344 1 -0.84760 0.27100 24.57400 0.56700 # O1030 + 1031 344 2 0.42380 -0.54700 24.92000 0.04400 # H1031 + 1032 344 2 0.42380 0.50700 23.61800 0.19100 # H1032 + 1033 345 1 -0.84760 -0.57600 26.36400 19.94200 # O1033 + 1034 345 2 0.42380 -0.41900 25.31800 19.96900 # H1034 + 1035 345 2 0.42380 -0.85300 26.64200 20.85900 # H1035 + 1036 346 1 -0.84760 12.47900 9.73900 14.02500 # O1036 + 1037 346 2 0.42380 12.47700 9.94500 13.05600 # H1037 + 1038 346 2 0.42380 11.82600 10.37200 14.46100 # H1038 + 1039 347 1 -0.84760 16.60000 4.07000 29.89800 # O1039 + 1040 347 2 0.42380 15.72400 4.05800 29.31500 # H1040 + 1041 347 2 0.42380 17.10600 3.20200 29.89500 # H1041 + 1042 348 1 -0.84760 4.20800 23.49800 6.84200 # O1042 + 1043 348 2 0.42380 4.26800 24.43100 7.16900 # H1043 + 1044 348 2 0.42380 3.29200 23.07200 7.02000 # H1044 + 1045 349 1 -0.84760 9.50300 10.75300 27.56700 # O1045 + 1046 349 2 0.42380 8.81500 11.47300 27.41100 # H1046 + 1047 349 2 0.42380 9.72600 10.65600 28.55900 # H1047 + 1048 350 1 -0.84760 20.86900 21.37400 25.64300 # O1048 + 1049 350 2 0.42380 21.20700 22.09800 26.36100 # H1049 + 1050 350 2 0.42380 20.14900 21.87100 25.18600 # H1050 + 1051 351 1 -0.84760 13.25500 24.15700 10.13400 # O1051 + 1052 351 2 0.42380 13.45700 24.04700 11.14900 # H1052 + 1053 351 2 0.42380 12.81900 23.32400 9.75500 # H1053 + 1054 352 1 -0.84760 23.20100 19.39400 7.34300 # O1054 + 1055 352 2 0.42380 23.05800 20.40000 7.14300 # H1055 + 1056 352 2 0.42380 24.19600 19.23200 7.50400 # H1056 + 1057 353 1 -0.84760 14.79900 9.60300 3.02500 # O1057 + 1058 353 2 0.42380 15.68500 9.78900 3.46700 # H1058 + 1059 353 2 0.42380 14.82600 10.33200 2.28600 # H1059 + 1060 354 1 -0.84760 6.62700 24.26700 1.11000 # O1060 + 1061 354 2 0.42380 7.30600 23.51600 1.20300 # H1061 + 1062 354 2 0.42380 7.12300 24.93000 0.46800 # H1062 + 1063 355 1 -0.84760 22.06800 8.84400 12.59900 # O1063 + 1064 355 2 0.42380 21.91500 8.13000 13.31000 # H1064 + 1065 355 2 0.42380 21.47800 9.66900 12.76000 # H1065 + 1066 356 1 -0.84760 18.88100 18.17900 11.83700 # O1066 + 1067 356 2 0.42380 19.72500 18.78800 11.68400 # H1067 + 1068 356 2 0.42380 18.46300 18.44000 10.94700 # H1068 + 1069 357 1 -0.84760 18.86900 28.64200 22.10200 # O1069 + 1070 357 2 0.42380 19.12900 28.88200 21.12300 # H1070 + 1071 357 2 0.42380 18.22100 29.39800 22.32900 # H1071 + 1072 358 1 -0.84760 10.61300 20.02400 24.94600 # O1072 + 1073 358 2 0.42380 11.27500 19.71200 25.60900 # H1073 + 1074 358 2 0.42380 9.69800 19.89000 25.50600 # H1074 + 1075 359 1 -0.84760 29.45500 -0.63900 11.82500 # O1075 + 1076 359 2 0.42380 29.53900 0.35400 12.02800 # H1076 + 1077 359 2 0.42380 30.23600 -0.88300 11.24600 # H1077 + 1078 360 1 -0.84760 7.16700 15.98000 16.89600 # O1078 + 1079 360 2 0.42380 6.53600 16.15100 16.07900 # H1079 + 1080 360 2 0.42380 7.15600 16.91300 17.34200 # H1080 + 1081 361 1 -0.84760 16.94000 24.19400 17.84000 # O1081 + 1082 361 2 0.42380 16.59000 23.30400 17.63800 # H1082 + 1083 361 2 0.42380 16.73400 24.06400 18.83000 # H1083 + 1084 362 1 -0.84760 4.98300 17.16400 4.50800 # O1084 + 1085 362 2 0.42380 3.99400 17.48300 4.55000 # H1085 + 1086 362 2 0.42380 5.51400 17.50700 5.24100 # H1086 + 1087 363 1 -0.84760 17.97700 26.88800 19.70900 # O1087 + 1088 363 2 0.42380 17.71500 27.78900 19.23900 # H1088 + 1089 363 2 0.42380 17.12200 26.41300 19.34500 # H1089 + 1090 364 1 -0.84760 10.38600 29.24400 8.56100 # O1090 + 1091 364 2 0.42380 10.47000 28.57400 7.82000 # H1091 + 1092 364 2 0.42380 11.32600 29.46500 8.65700 # H1092 + 1093 365 1 -0.84760 3.07100 23.74600 27.92700 # O1093 + 1094 365 2 0.42380 2.15100 24.06200 27.61800 # H1094 + 1095 365 2 0.42380 3.22100 22.82900 27.49100 # H1095 + 1096 366 1 -0.84760 28.17200 6.11100 17.85200 # O1096 + 1097 366 2 0.42380 27.29200 6.40600 18.22600 # H1097 + 1098 366 2 0.42380 28.64900 6.99600 17.89000 # H1098 + 1099 367 1 -0.84760 18.70400 22.92800 27.25100 # O1099 + 1100 367 2 0.42380 17.77000 22.61500 26.86600 # H1100 + 1101 367 2 0.42380 19.41600 22.48600 26.68800 # H1101 + 1102 368 1 -0.84760 -0.57900 11.79900 8.34000 # O1102 + 1103 368 2 0.42380 -0.17000 11.37800 7.56800 # H1103 + 1104 368 2 0.42380 0.22000 12.28100 8.74800 # H1104 + 1105 369 1 -0.84760 0.55900 21.23800 27.27300 # O1105 + 1106 369 2 0.42380 -0.17700 21.29900 27.91400 # H1106 + 1107 369 2 0.42380 1.33800 20.79800 27.78300 # H1107 + 1108 370 1 -0.84760 21.58100 0.25900 4.21100 # O1108 + 1109 370 2 0.42380 21.83300 1.12300 3.79900 # H1109 + 1110 370 2 0.42380 21.37200 0.47600 5.17400 # H1110 + 1111 371 1 -0.84760 23.78600 4.43600 23.18800 # O1111 + 1112 371 2 0.42380 23.49500 3.49100 23.42900 # H1112 + 1113 371 2 0.42380 23.79400 4.36700 22.19500 # H1113 + 1114 372 1 -0.84760 9.17200 10.44400 1.08200 # O1114 + 1115 372 2 0.42380 8.22500 10.37500 0.74800 # H1115 + 1116 372 2 0.42380 9.39800 11.31600 1.31900 # H1116 + 1117 373 1 -0.84760 0.90500 0.14500 5.09300 # O1117 + 1118 373 2 0.42380 0.50800 -0.63200 4.52300 # H1118 + 1119 373 2 0.42380 1.18100 -0.42900 5.94500 # H1119 + 1120 374 1 -0.84760 26.47800 7.71700 9.00300 # O1120 + 1121 374 2 0.42380 26.59200 7.05100 8.27500 # H1121 + 1122 374 2 0.42380 26.08900 7.14000 9.77600 # H1122 + 1123 375 1 -0.84760 8.66100 4.75200 26.59400 # O1123 + 1124 375 2 0.42380 8.98400 5.18900 27.43700 # H1124 + 1125 375 2 0.42380 7.94500 5.38600 26.38100 # H1125 + 1126 376 1 -0.84760 20.33100 1.47700 9.50500 # O1126 + 1127 376 2 0.42380 19.35700 1.70100 9.80700 # H1127 + 1128 376 2 0.42380 20.92600 2.28200 9.69600 # H1128 + 1129 377 1 -0.84760 7.38900 10.06400 24.58700 # O1129 + 1130 377 2 0.42380 6.55500 10.06900 25.22700 # H1130 + 1131 377 2 0.42380 7.67300 9.06200 24.52600 # H1131 + 1132 378 1 -0.84760 23.35100 22.97800 17.20600 # O1132 + 1133 378 2 0.42380 23.82300 23.40700 16.36500 # H1133 + 1134 378 2 0.42380 23.24000 22.05500 16.81000 # H1134 + 1135 379 1 -0.84760 4.21700 27.30100 1.28100 # O1135 + 1136 379 2 0.42380 4.41000 26.43900 1.76000 # H1136 + 1137 379 2 0.42380 4.15900 26.86600 0.36700 # H1137 + 1138 380 1 -0.84760 19.77100 26.73800 0.47800 # O1138 + 1139 380 2 0.42380 19.56000 27.55700 1.04800 # H1139 + 1140 380 2 0.42380 19.85300 27.03500 -0.48600 # H1140 + 1141 381 1 -0.84760 13.11800 3.74900 23.60400 # O1141 + 1142 381 2 0.42380 13.10500 2.76400 23.96600 # H1142 + 1143 381 2 0.42380 14.01000 3.80500 23.10400 # H1143 + 1144 382 1 -0.84760 13.97600 -0.98600 6.60800 # O1144 + 1145 382 2 0.42380 13.86600 -1.79900 7.27300 # H1145 + 1146 382 2 0.42380 13.97000 -0.13300 7.23100 # H1146 + 1147 383 1 -0.84760 9.04800 6.04500 0.50100 # O1147 + 1148 383 2 0.42380 9.82500 5.30800 0.45000 # H1148 + 1149 383 2 0.42380 9.18300 6.38000 -0.43000 # H1149 + 1150 384 1 -0.84760 29.73900 14.83200 29.44100 # O1150 + 1151 384 2 0.42380 30.28800 15.53600 29.06500 # H1151 + 1152 384 2 0.42380 30.34200 13.99700 29.41800 # H1152 + 1153 385 1 -0.84760 19.73600 14.54500 17.95300 # O1153 + 1154 385 2 0.42380 19.45400 14.17700 17.05900 # H1154 + 1155 385 2 0.42380 19.24100 13.84400 18.45700 # H1155 + 1156 386 1 -0.84760 17.17000 9.62900 12.35200 # O1156 + 1157 386 2 0.42380 16.33500 9.71900 13.01100 # H1157 + 1158 386 2 0.42380 17.46500 10.35300 11.77000 # H1158 + 1159 387 1 -0.84760 5.81700 10.65400 5.56600 # O1159 + 1160 387 2 0.42380 5.48500 9.95900 6.21400 # H1160 + 1161 387 2 0.42380 5.06600 11.21700 5.19400 # H1161 + 1162 388 1 -0.84760 0.99700 23.71800 19.96400 # O1162 + 1163 388 2 0.42380 1.20100 23.77300 18.95900 # H1163 + 1164 388 2 0.42380 1.61700 24.26700 20.57000 # H1164 + 1165 389 1 -0.84760 1.50700 23.69800 17.30500 # O1165 + 1166 389 2 0.42380 2.45900 23.51000 17.62400 # H1166 + 1167 389 2 0.42380 1.00600 22.85400 17.52300 # H1167 + 1168 390 1 -0.84760 8.25400 15.41500 -0.26100 # O1168 + 1169 390 2 0.42380 8.23800 14.56900 -0.84600 # H1169 + 1170 390 2 0.42380 8.65500 16.01500 -0.93300 # H1170 + 1171 391 1 -0.84760 11.96500 13.76900 14.57800 # O1171 + 1172 391 2 0.42380 11.05800 13.30900 14.58900 # H1172 + 1173 391 2 0.42380 11.98400 14.04500 15.53100 # H1173 + 1174 392 1 -0.84760 16.35300 2.97200 4.61600 # O1174 + 1175 392 2 0.42380 15.80500 3.76500 5.02000 # H1175 + 1176 392 2 0.42380 16.61500 3.31000 3.69600 # H1176 + 1177 393 1 -0.84760 30.05500 22.84500 5.38300 # O1177 + 1178 393 2 0.42380 29.32600 22.74900 6.12700 # H1178 + 1179 393 2 0.42380 30.72200 22.02600 5.55000 # H1179 + 1180 394 1 -0.84760 11.94500 -0.97500 14.78500 # O1180 + 1181 394 2 0.42380 12.71500 -0.73100 15.36300 # H1181 + 1182 394 2 0.42380 12.35600 -1.53700 14.07800 # H1182 + 1183 395 1 -0.84760 8.86600 4.23900 11.67400 # O1183 + 1184 395 2 0.42380 7.98000 4.84000 11.72600 # H1184 + 1185 395 2 0.42380 8.64800 3.30600 11.34900 # H1185 + 1186 396 1 -0.84760 7.88500 3.45500 14.24200 # O1186 + 1187 396 2 0.42380 8.56900 3.49100 13.40700 # H1187 + 1188 396 2 0.42380 6.91400 3.20100 14.00900 # H1188 + 1189 397 1 -0.84760 19.58900 13.99900 12.53800 # O1189 + 1190 397 2 0.42380 20.59900 14.01700 12.66000 # H1190 + 1191 397 2 0.42380 19.41200 14.29100 11.57000 # H1191 + 1192 398 1 -0.84760 16.24000 15.62700 12.17600 # O1192 + 1193 398 2 0.42380 15.39400 15.77000 12.67600 # H1193 + 1194 398 2 0.42380 16.74100 16.48500 12.21600 # H1194 + 1195 399 1 -0.84760 7.81900 26.05800 14.78500 # O1195 + 1196 399 2 0.42380 8.63100 25.37900 14.82500 # H1196 + 1197 399 2 0.42380 8.02100 27.04900 15.09600 # H1197 + 1198 400 1 -0.84760 19.41600 16.88200 14.39100 # O1198 + 1199 400 2 0.42380 18.73900 16.83000 13.76400 # H1199 + 1200 400 2 0.42380 19.83500 17.78900 14.16800 # H1200 + 1201 401 1 -0.84760 27.37700 11.85400 23.44500 # O1201 + 1202 401 2 0.42380 26.72800 12.63200 23.44200 # H1202 + 1203 401 2 0.42380 27.77200 11.92800 24.36300 # H1203 + 1204 402 1 -0.84760 13.96500 26.27800 22.16800 # O1204 + 1205 402 2 0.42380 13.28400 27.00300 21.96100 # H1205 + 1206 402 2 0.42380 13.81100 26.05100 23.15000 # H1206 + 1207 403 1 -0.84760 6.86100 5.57000 11.48100 # O1207 + 1208 403 2 0.42380 7.73800 6.14400 11.31000 # H1208 + 1209 403 2 0.42380 6.72000 5.00200 10.64200 # H1209 + 1210 404 1 -0.84760 8.93700 8.22400 18.11400 # O1210 + 1211 404 2 0.42380 9.49200 8.44700 17.26800 # H1211 + 1212 404 2 0.42380 8.45500 7.33300 17.80600 # H1212 + 1213 405 1 -0.84760 16.21000 4.70100 14.59300 # O1213 + 1214 405 2 0.42380 16.68000 3.87100 14.20300 # H1214 + 1215 405 2 0.42380 15.25400 4.58300 14.27900 # H1215 + 1216 406 1 -0.84760 10.39700 7.31800 2.82500 # O1216 + 1217 406 2 0.42380 10.50000 6.65300 2.01600 # H1217 + 1218 406 2 0.42380 9.76400 8.16100 2.61800 # H1218 + 1219 407 1 -0.84760 10.50000 13.98200 9.00200 # O1219 + 1220 407 2 0.42380 10.99800 13.18100 8.63800 # H1220 + 1221 407 2 0.42380 11.16400 14.68800 8.74400 # H1221 + 1222 408 1 -0.84760 24.67100 4.05200 15.70500 # O1222 + 1223 408 2 0.42380 24.66200 4.89300 16.35700 # H1223 + 1224 408 2 0.42380 25.45500 4.38700 15.11500 # H1224 + 1225 409 1 -0.84760 26.50400 9.01000 4.26500 # O1225 + 1226 409 2 0.42380 26.77800 8.39500 5.00000 # H1226 + 1227 409 2 0.42380 25.93200 8.37700 3.68900 # H1227 + 1228 410 1 -0.84760 26.74200 18.07600 20.67100 # O1228 + 1229 410 2 0.42380 26.02800 18.15300 19.93300 # H1229 + 1230 410 2 0.42380 26.27100 18.67800 21.43300 # H1230 + 1231 411 1 -0.84760 17.24500 27.97100 1.85200 # O1231 + 1232 411 2 0.42380 16.32700 27.94800 2.24200 # H1232 + 1233 411 2 0.42380 17.62000 27.18900 2.37400 # H1233 + 1234 412 1 -0.84760 24.23400 10.88100 27.04900 # O1234 + 1235 412 2 0.42380 23.30800 10.89200 27.43200 # H1235 + 1236 412 2 0.42380 24.58900 10.01400 26.70000 # H1236 + 1237 413 1 -0.84760 29.26200 20.88400 15.33500 # O1237 + 1238 413 2 0.42380 28.85300 20.96700 16.24100 # H1238 + 1239 413 2 0.42380 28.72800 21.55400 14.79300 # H1239 + 1240 414 1 -0.84760 17.51200 26.36600 8.92400 # O1240 + 1241 414 2 0.42380 17.00300 25.85000 9.67200 # H1241 + 1242 414 2 0.42380 18.06100 25.66700 8.51100 # H1242 + 1243 415 1 -0.84760 21.13200 11.87100 24.81700 # O1243 + 1244 415 2 0.42380 21.05200 11.74600 25.81900 # H1244 + 1245 415 2 0.42380 20.96600 11.03400 24.28000 # H1245 + 1246 416 1 -0.84760 4.54400 20.37700 9.27100 # O1246 + 1247 416 2 0.42380 5.35000 20.97900 9.13900 # H1247 + 1248 416 2 0.42380 4.07400 20.63100 10.13500 # H1248 + 1249 417 1 -0.84760 6.19500 24.18200 10.15100 # O1249 + 1250 417 2 0.42380 5.52300 24.74800 9.70700 # H1250 + 1251 417 2 0.42380 6.99700 24.15200 9.57500 # H1251 + 1252 418 1 -0.84760 20.59200 28.17200 20.04100 # O1252 + 1253 418 2 0.42380 20.19100 27.25600 19.95500 # H1253 + 1254 418 2 0.42380 21.28800 28.19300 20.69900 # H1254 + 1255 419 1 -0.84760 28.15100 22.55200 7.17600 # O1255 + 1256 419 2 0.42380 27.58100 23.31900 6.91400 # H1256 + 1257 419 2 0.42380 28.34700 22.50000 8.17000 # H1257 + 1258 420 1 -0.84760 6.91000 10.14000 17.29200 # O1258 + 1259 420 2 0.42380 7.79000 9.72600 17.58900 # H1259 + 1260 420 2 0.42380 7.01900 11.09500 17.03600 # H1260 + 1261 421 1 -0.84760 -0.11000 23.57300 13.20400 # O1261 + 1262 421 2 0.42380 -0.73200 22.81500 13.37200 # H1262 + 1263 421 2 0.42380 0.34000 23.88300 14.05600 # H1263 + 1264 422 1 -0.84760 30.08100 6.38000 7.74300 # O1264 + 1265 422 2 0.42380 29.16800 6.51500 7.98400 # H1265 + 1266 422 2 0.42380 30.50100 5.88600 8.49900 # H1266 + 1267 423 1 -0.84760 25.34800 15.08400 0.21900 # O1267 + 1268 423 2 0.42380 25.83300 14.46400 0.85700 # H1268 + 1269 423 2 0.42380 25.81300 15.31100 -0.68600 # H1269 + 1270 424 1 -0.84760 0.45600 28.55400 1.07200 # O1270 + 1271 424 2 0.42380 1.19400 28.87700 0.46500 # H1271 + 1272 424 2 0.42380 -0.44900 28.89700 0.85500 # H1272 + 1273 425 1 -0.84760 6.94000 3.35700 20.59800 # O1273 + 1274 425 2 0.42380 7.37700 3.85300 21.37300 # H1274 + 1275 425 2 0.42380 7.53900 2.50800 20.45700 # H1275 + 1276 426 1 -0.84760 14.06700 25.47800 18.42900 # O1276 + 1277 426 2 0.42380 14.45800 26.38700 18.33300 # H1277 + 1278 426 2 0.42380 13.04000 25.51500 18.41900 # H1278 + 1279 427 1 -0.84760 14.74100 2.35200 26.58200 # O1279 + 1280 427 2 0.42380 15.70100 2.64300 26.44600 # H1280 + 1281 427 2 0.42380 14.46100 2.26300 25.61400 # H1281 + 1282 428 1 -0.84760 21.31800 7.20800 20.93500 # O1282 + 1283 428 2 0.42380 20.32100 7.28400 20.60200 # H1283 + 1284 428 2 0.42380 21.19300 6.31400 21.41100 # H1284 + 1285 429 1 -0.84760 13.40500 16.30600 24.48200 # O1285 + 1286 429 2 0.42380 13.85900 16.80300 23.73300 # H1286 + 1287 429 2 0.42380 12.97300 15.51400 24.09000 # H1287 + 1288 430 1 -0.84760 9.79400 20.26400 -0.14800 # O1288 + 1289 430 2 0.42380 10.69000 20.20200 -0.63300 # H1289 + 1290 430 2 0.42380 9.36000 21.13900 -0.37400 # H1290 + 1291 431 1 -0.84760 26.77500 22.48500 17.53200 # O1291 + 1292 431 2 0.42380 26.73400 22.35300 16.53600 # H1292 + 1293 431 2 0.42380 26.07600 23.14800 17.90000 # H1293 + 1294 432 1 -0.84760 15.54100 4.93000 10.52600 # O1294 + 1295 432 2 0.42380 14.85000 4.34000 10.03100 # H1295 + 1296 432 2 0.42380 15.31900 4.85300 11.49700 # H1296 + 1297 433 1 -0.84760 28.26200 3.88700 15.33600 # O1297 + 1298 433 2 0.42380 29.17200 4.25000 15.03200 # H1298 + 1299 433 2 0.42380 28.00100 4.48400 16.09700 # H1299 + 1300 434 1 -0.84760 18.63900 22.63800 11.06300 # O1300 + 1301 434 2 0.42380 19.53800 22.85300 11.42400 # H1301 + 1302 434 2 0.42380 17.98200 22.80800 11.80100 # H1302 + 1303 435 1 -0.84760 4.29500 -0.94000 25.45200 # O1303 + 1304 435 2 0.42380 3.70800 -0.11200 25.34500 # H1304 + 1305 435 2 0.42380 3.59200 -1.68700 25.54400 # H1305 + 1306 436 1 -0.84760 4.17200 0.09300 11.42200 # O1306 + 1307 436 2 0.42380 5.15300 -0.04400 11.55800 # H1307 + 1308 436 2 0.42380 3.78200 -0.72300 10.98000 # H1308 + 1309 437 1 -0.84760 19.50700 3.96600 26.63400 # O1309 + 1310 437 2 0.42380 19.04500 4.78100 26.29700 # H1310 + 1311 437 2 0.42380 18.81400 3.23100 26.42300 # H1311 + 1312 438 1 -0.84760 24.93300 24.23200 1.65400 # O1312 + 1313 438 2 0.42380 24.79300 23.45100 2.29100 # H1313 + 1314 438 2 0.42380 25.85500 24.56800 1.94500 # H1314 + 1315 439 1 -0.84760 4.59600 19.29000 18.01900 # O1315 + 1316 439 2 0.42380 4.90000 18.58800 17.43500 # H1316 + 1317 439 2 0.42380 4.82000 20.10800 17.42200 # H1317 + 1318 440 1 -0.84760 8.32300 28.59400 6.68700 # O1318 + 1319 440 2 0.42380 7.66000 29.28300 6.32000 # H1319 + 1320 440 2 0.42380 8.30700 27.91700 5.95300 # H1320 + 1321 441 1 -0.84760 15.91200 1.28400 13.86200 # O1321 + 1322 441 2 0.42380 15.29600 0.57200 13.49400 # H1322 + 1323 441 2 0.42380 15.53400 2.19300 13.59900 # H1323 + 1324 442 1 -0.84760 13.41300 24.14300 20.74000 # O1324 + 1325 442 2 0.42380 13.70500 24.61200 19.91300 # H1325 + 1326 442 2 0.42380 13.31600 24.89100 21.35200 # H1326 + 1327 443 1 -0.84760 29.87400 4.65600 12.60000 # O1327 + 1328 443 2 0.42380 30.05500 5.65100 12.49600 # H1328 + 1329 443 2 0.42380 29.46300 4.33800 11.68900 # H1329 + 1330 444 1 -0.84760 3.44500 25.61900 4.84600 # O1330 + 1331 444 2 0.42380 3.04900 25.33500 5.75400 # H1331 + 1332 444 2 0.42380 3.47300 26.68100 4.84000 # H1332 + 1333 445 1 -0.84760 2.81100 17.33000 12.95300 # O1333 + 1334 445 2 0.42380 2.28300 18.12300 13.24700 # H1334 + 1335 445 2 0.42380 3.78100 17.62800 12.73800 # H1335 + 1336 446 1 -0.84760 29.11700 6.06600 25.91400 # O1336 + 1337 446 2 0.42380 28.77500 6.87900 25.35200 # H1337 + 1338 446 2 0.42380 29.32700 5.35100 25.20600 # H1338 + 1339 447 1 -0.84760 25.31000 28.91300 0.60400 # O1339 + 1340 447 2 0.42380 24.58400 28.88600 -0.07600 # H1340 + 1341 447 2 0.42380 25.28900 29.87100 0.95100 # H1341 + 1342 448 1 -0.84760 28.99600 8.82900 7.25800 # O1342 + 1343 448 2 0.42380 29.30000 7.94200 7.57500 # H1343 + 1344 448 2 0.42380 29.77300 9.38800 6.88500 # H1344 + 1345 449 1 -0.84760 11.24700 24.27000 18.81000 # O1345 + 1346 449 2 0.42380 11.54700 24.38600 17.82300 # H1346 + 1347 449 2 0.42380 11.82200 23.59300 19.26500 # H1347 + 1348 450 1 -0.84760 13.90300 7.50400 14.11100 # O1348 + 1349 450 2 0.42380 13.07100 8.05600 14.39600 # H1349 + 1350 450 2 0.42380 14.59600 8.13000 14.41700 # H1350 + 1351 451 1 -0.84760 14.79100 -0.76200 17.57100 # O1351 + 1352 451 2 0.42380 14.43600 -0.29800 18.40200 # H1352 + 1353 451 2 0.42380 15.67700 -1.17400 17.79900 # H1353 + 1354 452 1 -0.84760 24.68100 6.60600 10.88500 # O1354 + 1355 452 2 0.42380 23.92500 7.25600 10.66800 # H1355 + 1356 452 2 0.42380 24.18000 5.79000 11.19400 # H1356 + 1357 453 1 -0.84760 16.58900 10.36000 26.61000 # O1357 + 1358 453 2 0.42380 16.94400 10.96200 25.84300 # H1358 + 1359 453 2 0.42380 15.63800 10.22800 26.26700 # H1359 + 1360 454 1 -0.84760 19.45900 0.43300 21.36400 # O1360 + 1361 454 2 0.42380 19.43100 1.00700 22.28700 # H1361 + 1362 454 2 0.42380 20.36400 0.52600 20.82500 # H1362 + 1363 455 1 -0.84760 29.38600 9.37200 17.37000 # O1363 + 1364 455 2 0.42380 28.87000 10.25800 17.20900 # H1364 + 1365 455 2 0.42380 29.92800 9.52900 18.22600 # H1365 + 1366 456 1 -0.84760 13.77500 19.61000 9.09000 # O1366 + 1367 456 2 0.42380 13.87800 20.32700 8.28000 # H1367 + 1368 456 2 0.42380 12.83000 19.62700 9.54000 # H1368 + 1369 457 1 -0.84760 3.81900 17.62800 7.97900 # O1369 + 1370 457 2 0.42380 4.44100 18.35100 8.15300 # H1370 + 1371 457 2 0.42380 3.33400 17.38400 8.90000 # H1371 + 1372 458 1 -0.84760 22.20500 10.96900 1.67700 # O1372 + 1373 458 2 0.42380 23.14700 11.41700 1.65000 # H1373 + 1374 458 2 0.42380 22.36500 10.03600 2.06000 # H1374 + 1375 459 1 -0.84760 22.98400 1.49200 29.71400 # O1375 + 1376 459 2 0.42380 23.16000 2.42100 29.99300 # H1376 + 1377 459 2 0.42380 22.22900 1.18000 30.30300 # H1377 + 1378 460 1 -0.84760 23.10700 24.60800 23.42100 # O1378 + 1379 460 2 0.42380 23.07100 23.74300 23.96400 # H1379 + 1380 460 2 0.42380 23.97400 25.04400 23.68800 # H1380 + 1381 461 1 -0.84760 19.01900 22.83700 24.20100 # O1381 + 1382 461 2 0.42380 18.19800 23.44100 24.14100 # H1382 + 1383 461 2 0.42380 18.74600 21.87500 24.02200 # H1383 + 1384 462 1 -0.84760 6.96400 17.85900 19.45400 # O1384 + 1385 462 2 0.42380 7.49400 18.14500 20.27300 # H1385 + 1386 462 2 0.42380 6.54900 18.70200 19.03700 # H1386 + 1387 463 1 -0.84760 28.06000 19.59000 23.10600 # O1387 + 1388 463 2 0.42380 28.02200 20.30300 22.44200 # H1388 + 1389 463 2 0.42380 27.14900 19.37800 23.56100 # H1389 + 1390 464 1 -0.84760 15.97300 6.77600 16.93600 # O1390 + 1391 464 2 0.42380 15.89100 6.78400 17.98300 # H1391 + 1392 464 2 0.42380 15.70200 5.79400 16.75900 # H1392 + 1393 465 1 -0.84760 16.72900 8.33300 0.69000 # O1393 + 1394 465 2 0.42380 17.26200 8.89900 -0.01400 # H1394 + 1395 465 2 0.42380 15.73400 8.46700 0.67400 # H1395 + 1396 466 1 -0.84760 17.38700 21.06000 23.05700 # O1396 + 1397 466 2 0.42380 17.01800 21.97800 23.15900 # H1397 + 1398 466 2 0.42380 17.11200 20.57100 23.87400 # H1398 + 1399 467 1 -0.84760 5.81900 28.61200 9.00300 # O1399 + 1400 467 2 0.42380 6.23600 28.11100 9.77800 # H1400 + 1401 467 2 0.42380 4.80700 28.32000 9.08100 # H1401 + 1402 468 1 -0.84760 6.39500 12.40500 28.77000 # O1402 + 1403 468 2 0.42380 6.90500 12.55900 29.64800 # H1403 + 1404 468 2 0.42380 5.48800 12.22600 29.21700 # H1404 + 1405 469 1 -0.84760 17.84300 20.43600 30.00400 # O1405 + 1406 469 2 0.42380 17.49000 19.70300 30.57700 # H1406 + 1407 469 2 0.42380 18.10100 21.10500 30.73400 # H1407 + 1408 470 1 -0.84760 11.63300 4.51000 28.17300 # O1408 + 1409 470 2 0.42380 11.76700 5.16900 27.36400 # H1409 + 1410 470 2 0.42380 10.66400 4.54300 28.48200 # H1410 + 1411 471 1 -0.84760 1.53100 28.54900 26.79000 # O1411 + 1412 471 2 0.42380 2.18000 28.14500 27.39500 # H1412 + 1413 471 2 0.42380 0.97900 27.71900 26.39300 # H1413 + 1414 472 1 -0.84760 -0.45000 28.31100 18.15600 # O1414 + 1415 472 2 0.42380 -0.60600 27.54200 18.86900 # H1415 + 1416 472 2 0.42380 -1.36700 28.75700 18.28400 # H1416 + 1417 473 1 -0.84760 21.14500 28.57000 3.69000 # O1417 + 1418 473 2 0.42380 20.83700 29.35100 4.26800 # H1418 + 1419 473 2 0.42380 21.46400 29.04000 2.88000 # H1419 + 1420 474 1 -0.84760 9.31500 18.47400 1.84300 # O1420 + 1421 474 2 0.42380 9.00000 18.21900 0.90700 # H1421 + 1422 474 2 0.42380 9.40000 19.43700 1.66400 # H1422 + 1423 475 1 -0.84760 25.20200 28.37100 25.77700 # O1423 + 1424 475 2 0.42380 26.20600 28.52800 25.73000 # H1424 + 1425 475 2 0.42380 24.82500 29.24300 26.03500 # H1425 + 1426 476 1 -0.84760 0.13700 23.55500 25.87000 # O1426 + 1427 476 2 0.42380 0.12600 22.74300 26.49000 # H1427 + 1428 476 2 0.42380 0.37700 23.40200 24.92400 # H1428 + 1429 477 1 -0.84760 20.94600 16.46500 8.37600 # O1429 + 1430 477 2 0.42380 20.22800 16.68200 7.79100 # H1430 + 1431 477 2 0.42380 21.77000 17.05100 8.26600 # H1431 + 1432 478 1 -0.84760 17.16600 14.75700 25.68300 # O1432 + 1433 478 2 0.42380 17.51200 14.40700 24.79100 # H1433 + 1434 478 2 0.42380 16.70400 15.70800 25.62800 # H1434 + 1435 479 1 -0.84760 28.38100 18.43900 17.44500 # O1435 + 1436 479 2 0.42380 29.14400 18.55600 16.75000 # H1436 + 1437 479 2 0.42380 28.70600 17.68700 18.08100 # H1437 + 1438 480 1 -0.84760 14.41700 4.29000 28.70700 # O1438 + 1439 480 2 0.42380 13.52000 4.59300 28.21800 # H1439 + 1440 480 2 0.42380 14.34100 3.32100 28.30000 # H1440 + 1441 481 1 -0.84760 6.78400 -0.21300 6.56700 # O1441 + 1442 481 2 0.42380 6.25800 -0.69400 7.32500 # H1442 + 1443 481 2 0.42380 6.16700 0.17900 5.88000 # H1443 + 1444 482 1 -0.84760 27.01300 6.79200 29.77400 # O1444 + 1445 482 2 0.42380 26.86900 7.75900 29.82600 # H1445 + 1446 482 2 0.42380 27.08300 6.62300 28.80600 # H1446 + 1447 483 1 -0.84760 25.24100 5.90100 17.87500 # O1447 + 1448 483 2 0.42380 26.25300 5.84100 17.97000 # H1448 + 1449 483 2 0.42380 25.03800 6.76100 18.28700 # H1449 + 1450 484 1 -0.84760 7.95600 -0.13900 19.25800 # O1450 + 1451 484 2 0.42380 7.78500 0.87300 19.12300 # H1451 + 1452 484 2 0.42380 7.13800 -0.70000 18.88700 # H1452 + 1453 485 1 -0.84760 20.00000 20.12800 22.02500 # O1453 + 1454 485 2 0.42380 19.92700 19.16900 22.25900 # H1454 + 1455 485 2 0.42380 19.04300 20.44200 22.05000 # H1455 + 1456 486 1 -0.84760 8.55100 24.64100 2.85400 # O1456 + 1457 486 2 0.42380 9.33400 24.99100 3.33700 # H1457 + 1458 486 2 0.42380 7.78000 25.33100 2.83600 # H1458 + 1459 487 1 -0.84760 12.07900 5.92500 25.86400 # O1459 + 1460 487 2 0.42380 11.54800 6.72500 25.48900 # H1460 + 1461 487 2 0.42380 12.87400 5.78900 25.20200 # H1461 + 1462 488 1 -0.84760 0.41400 27.88300 5.96800 # O1462 + 1463 488 2 0.42380 0.03400 28.46600 5.07900 # H1463 + 1464 488 2 0.42380 -0.27500 27.90400 6.78100 # H1464 + 1465 489 1 -0.84760 -0.73800 3.84500 19.94800 # O1465 + 1466 489 2 0.42380 0.11800 4.09700 19.43300 # H1466 + 1467 489 2 0.42380 -0.64100 3.53400 20.93400 # H1467 + 1468 490 1 -0.84760 29.77100 1.05100 18.82300 # O1468 + 1469 490 2 0.42380 30.76000 0.93500 18.85100 # H1469 + 1470 490 2 0.42380 29.61200 1.99000 19.09800 # H1470 + 1471 491 1 -0.84760 16.90600 -0.10900 20.84700 # O1471 + 1472 491 2 0.42380 17.96900 -0.20100 21.13600 # H1472 + 1473 491 2 0.42380 17.11400 0.85400 20.45500 # H1473 + 1474 492 1 -0.84760 5.90200 11.67300 13.97600 # O1474 + 1475 492 2 0.42380 5.58300 11.85100 14.88600 # H1475 + 1476 492 2 0.42380 6.40700 10.84900 13.99800 # H1476 + 1477 493 1 -0.84760 20.80100 17.08000 20.64000 # O1477 + 1478 493 2 0.42380 21.32100 16.53300 21.29900 # H1478 + 1479 493 2 0.42380 21.30800 17.13400 19.70000 # H1479 + 1480 494 1 -0.84760 21.95200 9.67500 22.27800 # O1480 + 1481 494 2 0.42380 21.32400 9.41800 23.05500 # H1481 + 1482 494 2 0.42380 22.06900 8.77400 21.71200 # H1482 + 1483 495 1 -0.84760 20.37200 13.01400 2.97400 # O1483 + 1484 495 2 0.42380 20.26300 13.19800 3.95800 # H1484 + 1485 495 2 0.42380 21.34000 12.71200 2.87400 # H1485 + 1486 496 1 -0.84760 7.92700 -0.11500 9.60000 # O1486 + 1487 496 2 0.42380 8.31900 -0.39700 10.45200 # H1487 + 1488 496 2 0.42380 7.70600 -0.98700 9.22300 # H1488 + 1489 497 1 -0.84760 2.86300 8.55600 21.49300 # O1489 + 1490 497 2 0.42380 2.15400 9.30000 21.55300 # H1490 + 1491 497 2 0.42380 3.54500 8.96600 20.90100 # H1491 + 1492 498 1 -0.84760 6.16100 5.61600 28.38000 # O1492 + 1493 498 2 0.42380 5.49700 5.83600 27.60600 # H1493 + 1494 498 2 0.42380 5.76600 5.49100 29.33400 # H1494 + 1495 499 1 -0.84760 14.02900 21.85200 22.68600 # O1495 + 1496 499 2 0.42380 14.84000 22.41100 22.93600 # H1496 + 1497 499 2 0.42380 13.26400 22.50000 22.47300 # H1497 + 1498 500 1 -0.84760 15.66700 24.19300 8.93900 # O1498 + 1499 500 2 0.42380 15.28700 23.41500 9.36600 # H1499 + 1500 500 2 0.42380 14.93600 24.89200 8.96900 # H1500 + 1501 501 1 -0.84760 4.37700 22.31100 2.32500 # O1501 + 1502 501 2 0.42380 4.81500 22.01900 1.38200 # H1502 + 1503 501 2 0.42380 3.68900 21.53200 2.50700 # H1503 + 1504 502 1 -0.84760 26.78600 23.05100 23.45400 # O1504 + 1505 502 2 0.42380 27.16700 22.42800 24.20200 # H1505 + 1506 502 2 0.42380 26.85900 22.54700 22.53700 # H1506 + 1507 503 1 -0.84760 2.22700 3.28000 8.34400 # O1507 + 1508 503 2 0.42380 3.08700 2.75400 8.37800 # H1508 + 1509 503 2 0.42380 2.40000 3.78300 7.49200 # H1509 + 1510 504 1 -0.84760 16.11100 10.52500 21.72300 # O1510 + 1511 504 2 0.42380 15.69700 10.22700 20.79100 # H1511 + 1512 504 2 0.42380 15.66400 9.82200 22.29300 # H1512 + 1513 505 1 -0.84760 27.91700 24.73800 14.35400 # O1513 + 1514 505 2 0.42380 27.63500 24.69400 15.29600 # H1514 + 1515 505 2 0.42380 28.86200 24.46200 14.29500 # H1515 + 1516 506 1 -0.84760 24.03000 21.38200 0.57200 # O1516 + 1517 506 2 0.42380 23.28900 22.07000 0.65800 # H1517 + 1518 506 2 0.42380 24.46200 21.12900 1.47200 # H1518 + 1519 507 1 -0.84760 9.64100 8.37300 15.27900 # O1519 + 1520 507 2 0.42380 8.78200 7.94500 14.89000 # H1520 + 1521 507 2 0.42380 10.26000 8.25200 14.43800 # H1521 + 1522 508 1 -0.84760 26.09800 16.71600 24.63300 # O1522 + 1523 508 2 0.42380 26.61600 17.53400 25.03200 # H1523 + 1524 508 2 0.42380 26.06500 16.06700 25.43100 # H1524 + 1525 509 1 -0.84760 11.84600 8.83000 26.81600 # O1525 + 1526 509 2 0.42380 12.73900 8.38400 26.71900 # H1526 + 1527 509 2 0.42380 11.12000 8.13400 26.88400 # H1527 + 1528 510 1 -0.84760 21.94300 2.01200 19.78200 # O1528 + 1529 510 2 0.42380 22.20900 1.04600 19.78200 # H1529 + 1530 510 2 0.42380 22.06200 2.21500 18.80700 # H1530 + 1531 511 1 -0.84760 20.76100 22.81700 21.03200 # O1531 + 1532 511 2 0.42380 19.80900 22.57300 21.41300 # H1532 + 1533 511 2 0.42380 21.24400 23.36500 21.77100 # H1533 + 1534 512 1 -0.84760 25.22000 13.48900 11.95200 # O1534 + 1535 512 2 0.42380 25.70900 14.36400 11.71700 # H1535 + 1536 512 2 0.42380 24.73400 13.38900 11.09400 # H1536 + 1537 513 1 -0.84760 8.04900 18.98900 11.03100 # O1537 + 1538 513 2 0.42380 7.95000 19.99900 11.07300 # H1538 + 1539 513 2 0.42380 8.49400 18.75500 10.16800 # H1539 + 1540 514 1 -0.84760 7.83100 11.23700 19.74400 # O1540 + 1541 514 2 0.42380 7.93400 12.15200 19.21900 # H1541 + 1542 514 2 0.42380 8.17100 10.34500 19.28300 # H1542 + 1543 515 1 -0.84760 29.22700 17.01700 5.31100 # O1543 + 1544 515 2 0.42380 28.49200 17.67900 5.60700 # H1544 + 1545 515 2 0.42380 29.17900 16.83600 4.36700 # H1545 + 1546 516 1 -0.84760 15.65300 29.24700 22.18300 # O1546 + 1547 516 2 0.42380 16.08300 29.85300 21.48000 # H1547 + 1548 516 2 0.42380 15.63600 28.33200 21.80000 # H1548 + 1549 517 1 -0.84760 13.75600 7.55800 7.02500 # O1549 + 1550 517 2 0.42380 14.45100 6.96100 6.56900 # H1550 + 1551 517 2 0.42380 13.09000 7.88500 6.34000 # H1551 + 1552 518 1 -0.84760 16.28000 1.61600 10.70500 # O1552 + 1553 518 2 0.42380 16.38300 2.59800 11.04500 # H1553 + 1554 518 2 0.42380 16.53500 1.66700 9.75400 # H1554 + 1555 519 1 -0.84760 25.61800 26.29400 27.77900 # O1555 + 1556 519 2 0.42380 25.65000 27.12700 27.20200 # H1556 + 1557 519 2 0.42380 24.79500 26.22500 28.38700 # H1557 + 1558 520 1 -0.84760 16.71600 8.30200 23.52000 # O1558 + 1559 520 2 0.42380 17.69400 8.52800 23.29100 # H1559 + 1560 520 2 0.42380 16.20800 9.15200 23.81500 # H1560 + 1561 521 1 -0.84760 7.85000 21.48800 10.10000 # O1561 + 1562 521 2 0.42380 7.39300 22.12800 10.71300 # H1562 + 1563 521 2 0.42380 8.17000 22.06900 9.27900 # H1563 + 1564 522 1 -0.84760 0.06000 3.51400 22.63100 # O1564 + 1565 522 2 0.42380 -0.37000 3.37400 23.54300 # H1565 + 1566 522 2 0.42380 0.70500 2.71700 22.62500 # H1566 + 1567 523 1 -0.84760 28.88200 27.38500 27.81000 # O1567 + 1568 523 2 0.42380 28.99600 28.18200 28.37700 # H1568 + 1569 523 2 0.42380 29.24800 26.67900 28.43100 # H1569 + 1570 524 1 -0.84760 1.14600 20.55500 1.57400 # O1570 + 1571 524 2 0.42380 0.31700 20.90700 1.05800 # H1571 + 1572 524 2 0.42380 1.89300 21.18300 1.48500 # H1572 + 1573 525 1 -0.84760 12.32400 28.67100 23.20500 # O1573 + 1574 525 2 0.42380 13.28800 28.95500 23.32300 # H1574 + 1575 525 2 0.42380 11.99500 29.36700 22.66400 # H1575 + 1576 526 1 -0.84760 0.98100 26.99200 29.83100 # O1576 + 1577 526 2 0.42380 0.93700 26.01200 30.07900 # H1577 + 1578 526 2 0.42380 0.13700 27.45000 29.96100 # H1578 + 1579 527 1 -0.84760 6.68500 1.77700 16.64300 # O1579 + 1580 527 2 0.42380 6.51500 2.60600 16.23600 # H1580 + 1581 527 2 0.42380 7.55500 1.68500 17.16100 # H1581 + 1582 528 1 -0.84760 1.73400 3.69500 27.76300 # O1582 + 1583 528 2 0.42380 2.34300 3.09000 28.39600 # H1583 + 1584 528 2 0.42380 1.32100 4.44500 28.34700 # H1584 + 1585 529 1 -0.84760 26.37900 13.23100 25.82200 # O1585 + 1586 529 2 0.42380 27.03100 14.02100 25.89600 # H1586 + 1587 529 2 0.42380 26.63500 12.64800 26.62300 # H1587 + 1588 530 1 -0.84760 25.90900 2.83400 7.77700 # O1588 + 1589 530 2 0.42380 26.74300 2.32000 7.97900 # H1589 + 1590 530 2 0.42380 25.68400 3.44900 8.59800 # H1590 + 1591 531 1 -0.84760 3.59100 1.74900 28.26500 # O1591 + 1592 531 2 0.42380 4.55500 2.09700 28.49900 # H1592 + 1593 531 2 0.42380 3.29500 2.13100 27.36500 # H1593 + 1594 532 1 -0.84760 7.59200 13.94200 22.65200 # O1594 + 1595 532 2 0.42380 8.27100 14.48300 23.29900 # H1595 + 1596 532 2 0.42380 6.66500 14.33300 22.99400 # H1596 + 1597 533 1 -0.84760 15.31700 9.22900 15.36300 # O1597 + 1598 533 2 0.42380 14.65400 9.16500 16.13800 # H1598 + 1599 533 2 0.42380 15.82100 8.32900 15.55000 # H1599 + 1600 534 1 -0.84760 6.28000 29.19600 3.42400 # O1600 + 1601 534 2 0.42380 6.90800 29.45800 2.67700 # H1601 + 1602 534 2 0.42380 5.83100 28.38900 2.98300 # H1602 + 1603 535 1 -0.84760 -0.54700 11.31600 23.78400 # O1603 + 1604 535 2 0.42380 -1.09100 10.85900 24.50600 # H1604 + 1605 535 2 0.42380 -1.26300 11.74200 23.23500 # H1605 + 1606 536 1 -0.84760 18.48100 19.62300 19.59100 # O1606 + 1607 536 2 0.42380 18.81300 18.97800 20.30500 # H1607 + 1608 536 2 0.42380 19.18900 19.62200 18.83900 # H1608 + 1609 537 1 -0.84760 5.17600 25.45100 12.68900 # O1609 + 1610 537 2 0.42380 4.85900 24.53100 12.93600 # H1610 + 1611 537 2 0.42380 6.11500 25.53000 13.09900 # H1611 + 1612 538 1 -0.84760 9.98200 -0.25900 23.19800 # O1612 + 1613 538 2 0.42380 9.97300 0.75600 22.99000 # H1613 + 1614 538 2 0.42380 9.10200 -0.72700 23.53100 # H1614 + 1615 539 1 -0.84760 6.33600 9.61400 1.54300 # O1615 + 1616 539 2 0.42380 6.19300 9.12300 2.47400 # H1616 + 1617 539 2 0.42380 5.40600 9.58400 1.15300 # H1617 + 1618 540 1 -0.84760 26.16600 8.35500 12.93600 # O1618 + 1619 540 2 0.42380 25.78400 7.43100 12.98900 # H1619 + 1620 540 2 0.42380 25.38900 8.69600 12.38600 # H1620 + 1621 541 1 -0.84760 1.52000 12.64700 29.34400 # O1621 + 1622 541 2 0.42380 0.89400 12.32200 30.12700 # H1622 + 1623 541 2 0.42380 1.69700 11.72300 28.95800 # H1623 + 1624 542 1 -0.84760 8.73200 19.72200 7.42000 # O1624 + 1625 542 2 0.42380 8.11400 20.48900 7.15800 # H1625 + 1626 542 2 0.42380 8.06200 18.95900 7.47000 # H1626 + 1627 543 1 -0.84760 15.89200 2.41800 20.26900 # O1627 + 1628 543 2 0.42380 14.98500 2.88300 20.13800 # H1628 + 1629 543 2 0.42380 16.32300 2.03000 19.42200 # H1629 + 1630 544 1 -0.84760 23.63900 27.48000 1.95200 # O1630 + 1631 544 2 0.42380 22.89800 27.63300 2.66900 # H1631 + 1632 544 2 0.42380 23.84000 28.33400 1.42200 # H1632 + 1633 545 1 -0.84760 15.26200 20.42800 0.70500 # O1633 + 1634 545 2 0.42380 15.48500 19.56900 0.15700 # H1634 + 1635 545 2 0.42380 15.22700 19.97500 1.63900 # H1635 + 1636 546 1 -0.84760 17.01100 22.45900 4.46700 # O1636 + 1637 546 2 0.42380 17.83100 22.03600 4.02400 # H1637 + 1638 546 2 0.42380 16.38300 22.92600 3.84900 # H1638 + 1639 547 1 -0.84760 29.37100 15.17500 8.87600 # O1639 + 1640 547 2 0.42380 29.31700 14.19500 8.65400 # H1640 + 1641 547 2 0.42380 29.88200 15.35400 9.76500 # H1641 + 1642 548 1 -0.84760 28.84500 13.35800 21.50700 # O1642 + 1643 548 2 0.42380 28.19200 13.64000 22.24600 # H1643 + 1644 548 2 0.42380 29.76800 13.68400 21.97800 # H1644 + 1645 549 1 -0.84760 1.34100 3.38200 17.78200 # O1645 + 1646 549 2 0.42380 1.08400 3.65500 16.91000 # H1646 + 1647 549 2 0.42380 1.14200 2.38000 17.64900 # H1647 + 1648 550 1 -0.84760 19.33700 10.61800 20.89500 # O1648 + 1649 550 2 0.42380 18.71800 9.98000 20.38500 # H1649 + 1650 550 2 0.42380 19.87100 9.98700 21.49000 # H1650 + 1651 551 1 -0.84760 23.10600 20.60100 10.94400 # O1651 + 1652 551 2 0.42380 22.68600 21.50600 11.17000 # H1652 + 1653 551 2 0.42380 24.06800 20.87900 10.65200 # H1653 + 1654 552 1 -0.84760 6.03500 16.99200 11.67900 # O1654 + 1655 552 2 0.42380 6.02900 16.91100 12.69600 # H1655 + 1656 552 2 0.42380 7.02600 16.87900 11.58200 # H1656 + 1657 553 1 -0.84760 14.94700 21.44300 6.62700 # O1657 + 1658 553 2 0.42380 14.92500 22.43000 6.25800 # H1658 + 1659 553 2 0.42380 15.58100 20.90500 6.05900 # H1659 + 1660 554 1 -0.84760 14.98000 4.90300 7.11400 # O1660 + 1661 554 2 0.42380 15.82400 4.70100 7.63700 # H1661 + 1662 554 2 0.42380 14.34700 4.96400 7.92100 # H1662 + 1663 555 1 -0.84760 20.05200 -0.99600 17.74900 # O1663 + 1664 555 2 0.42380 20.19200 -0.12900 17.18600 # H1664 + 1665 555 2 0.42380 20.89300 -1.06300 18.29900 # H1665 + 1666 556 1 -0.84760 11.85200 4.54000 2.25200 # O1666 + 1667 556 2 0.42380 12.44000 5.36300 2.08600 # H1667 + 1668 556 2 0.42380 11.90700 4.29600 3.22700 # H1668 + 1669 557 1 -0.84760 17.98800 22.11400 20.54600 # O1669 + 1670 557 2 0.42380 17.67100 22.39100 19.61700 # H1670 + 1671 557 2 0.42380 18.24200 21.12100 20.49900 # H1671 + 1672 558 1 -0.84760 3.61300 26.15900 18.97200 # O1672 + 1673 558 2 0.42380 3.64900 26.51100 18.02800 # H1673 + 1674 558 2 0.42380 3.07800 26.89500 19.40700 # H1674 + 1675 559 1 -0.84760 29.72700 15.51600 11.32600 # O1675 + 1676 559 2 0.42380 29.41100 14.63400 11.75400 # H1676 + 1677 559 2 0.42380 29.08400 16.31800 11.43700 # H1677 + 1678 560 1 -0.84760 21.70000 9.16900 18.44000 # O1678 + 1679 560 2 0.42380 21.31600 9.64500 19.23400 # H1679 + 1680 560 2 0.42380 22.73100 9.33200 18.52500 # H1680 + 1681 561 1 -0.84760 9.36300 27.67800 22.83200 # O1681 + 1682 561 2 0.42380 10.18300 27.84700 23.43400 # H1682 + 1683 561 2 0.42380 9.14100 28.62500 22.48900 # H1683 + 1684 562 1 -0.84760 7.20200 4.15200 8.89600 # O1684 + 1685 562 2 0.42380 6.28100 4.29900 9.26200 # H1685 + 1686 562 2 0.42380 7.07300 3.41500 8.14800 # H1686 + 1687 563 1 -0.84760 19.74900 11.57900 0.04800 # O1687 + 1688 563 2 0.42380 20.20600 11.19700 0.83900 # H1688 + 1689 563 2 0.42380 19.59500 12.54200 0.06600 # H1689 + 1690 564 1 -0.84760 1.82800 25.07400 14.50200 # O1690 + 1691 564 2 0.42380 2.07200 25.93600 13.92700 # H1691 + 1692 564 2 0.42380 1.96400 25.33100 15.47900 # H1692 + 1693 565 1 -0.84760 15.39500 13.78000 27.35300 # O1693 + 1694 565 2 0.42380 15.48800 14.31200 28.16700 # H1694 + 1695 565 2 0.42380 16.19800 13.89700 26.76500 # H1695 + 1696 566 1 -0.84760 11.47800 5.90100 21.32000 # O1696 + 1697 566 2 0.42380 11.10500 6.70400 21.76600 # H1697 + 1698 566 2 0.42380 12.11000 5.51400 21.99900 # H1698 + 1699 567 1 -0.84760 3.04600 10.66200 27.52000 # O1699 + 1700 567 2 0.42380 3.89800 10.08100 27.75900 # H1700 + 1701 567 2 0.42380 3.28400 11.62800 27.78000 # H1701 + 1702 568 1 -0.84760 17.51600 16.71200 20.54400 # O1702 + 1703 568 2 0.42380 18.12600 16.00700 20.16800 # H1703 + 1704 568 2 0.42380 17.18100 17.00200 19.67700 # H1704 + 1705 569 1 -0.84760 15.33900 19.82700 19.86000 # O1705 + 1706 569 2 0.42380 16.21900 19.60700 20.24300 # H1706 + 1707 569 2 0.42380 14.67100 19.92500 20.60900 # H1707 + 1708 570 1 -0.84760 14.67200 18.60600 25.48000 # O1708 + 1709 570 2 0.42380 14.99000 18.00700 26.27900 # H1709 + 1710 570 2 0.42380 14.11600 19.33500 25.98600 # H1710 + 1711 571 1 -0.84760 24.92900 24.16600 7.08500 # O1711 + 1712 571 2 0.42380 24.35000 24.04400 6.25700 # H1712 + 1713 571 2 0.42380 25.26500 23.23000 7.22300 # H1713 + 1714 572 1 -0.84760 12.40400 3.51600 7.29300 # O1714 + 1715 572 2 0.42380 12.40400 2.45400 7.21500 # H1715 + 1716 572 2 0.42380 11.84900 3.63600 8.09200 # H1716 + 1717 573 1 -0.84760 25.58900 2.66900 11.46900 # O1717 + 1718 573 2 0.42380 26.00800 1.83000 11.87600 # H1718 + 1719 573 2 0.42380 26.42500 3.17600 11.22200 # H1719 + 1720 574 1 -0.84760 2.77300 5.68000 6.76500 # O1720 + 1721 574 2 0.42380 1.88000 6.04800 6.83700 # H1721 + 1722 574 2 0.42380 3.16700 5.89800 7.64900 # H1722 + 1723 575 1 -0.84760 16.17700 5.49100 1.78900 # O1723 + 1724 575 2 0.42380 16.55900 5.20300 0.90100 # H1724 + 1725 575 2 0.42380 15.14800 5.43800 1.63700 # H1725 + 1726 576 1 -0.84760 13.81100 21.52500 17.30200 # O1726 + 1727 576 2 0.42380 14.43200 21.33700 16.49600 # H1727 + 1728 576 2 0.42380 14.35300 21.02100 18.06500 # H1728 + 1729 577 1 -0.84760 22.00300 19.23800 14.66100 # O1729 + 1730 577 2 0.42380 22.78700 19.26500 14.01200 # H1730 + 1731 577 2 0.42380 21.40800 19.93100 14.44600 # H1731 + 1732 578 1 -0.84760 22.73300 15.82100 1.69000 # O1732 + 1733 578 2 0.42380 23.09700 14.98000 2.20600 # H1733 + 1734 578 2 0.42380 23.60300 16.28600 1.32800 # H1734 + 1735 579 1 -0.84760 10.08200 20.27600 4.78000 # O1735 + 1736 579 2 0.42380 9.07200 20.17000 4.75100 # H1736 + 1737 579 2 0.42380 10.38700 19.46800 4.21400 # H1737 + 1738 580 1 -0.84760 22.50600 11.35600 20.48900 # O1738 + 1739 580 2 0.42380 22.13700 10.75900 21.24700 # H1739 + 1740 580 2 0.42380 23.38900 10.94600 20.18700 # H1740 + 1741 581 1 -0.84760 17.79800 3.60400 21.72000 # O1741 + 1742 581 2 0.42380 16.96900 3.70100 21.11100 # H1742 + 1743 581 2 0.42380 18.50600 3.98000 21.00300 # H1743 + 1744 582 1 -0.84760 27.14600 14.91000 16.23300 # O1744 + 1745 582 2 0.42380 26.21500 14.93400 16.70800 # H1745 + 1746 582 2 0.42380 27.81000 15.16000 16.98800 # H1746 + 1747 583 1 -0.84760 9.19700 23.05800 19.72700 # O1747 + 1748 583 2 0.42380 10.07300 23.46200 19.27300 # H1748 + 1749 583 2 0.42380 8.68200 22.71000 18.95800 # H1749 + 1750 584 1 -0.84760 15.75300 23.65600 23.56400 # O1750 + 1751 584 2 0.42380 16.48200 24.35700 23.34800 # H1751 + 1752 584 2 0.42380 14.94500 24.23900 23.93200 # H1752 + 1753 585 1 -0.84760 10.50700 5.14600 8.78400 # O1753 + 1754 585 2 0.42380 10.14600 4.50100 8.12300 # H1754 + 1755 585 2 0.42380 10.02600 6.03200 8.65200 # H1755 + 1756 586 1 -0.84760 13.66100 19.26900 13.94000 # O1756 + 1757 586 2 0.42380 12.94800 19.02800 13.29400 # H1757 + 1758 586 2 0.42380 14.61700 19.32400 13.55200 # H1758 + 1759 587 1 -0.84760 5.45300 13.15900 17.18000 # O1759 + 1760 587 2 0.42380 6.16700 13.81100 17.30800 # H1760 + 1761 587 2 0.42380 5.01600 13.57000 16.35300 # H1761 + 1762 588 1 -0.84760 10.59700 27.87900 29.62600 # O1762 + 1763 588 2 0.42380 9.90000 28.34900 30.26100 # H1763 + 1764 588 2 0.42380 11.34600 27.39200 30.13900 # H1764 + 1765 589 1 -0.84760 29.41400 0.32500 6.04600 # O1765 + 1766 589 2 0.42380 29.95800 0.06400 5.27200 # H1766 + 1767 589 2 0.42380 29.91600 1.06500 6.42700 # H1767 + 1768 590 1 -0.84760 27.98300 8.36600 15.01800 # O1768 + 1769 590 2 0.42380 28.91000 8.58500 14.76700 # H1769 + 1770 590 2 0.42380 27.34400 8.99000 14.51800 # H1770 + 1771 591 1 -0.84760 28.20700 15.05600 25.54700 # O1771 + 1772 591 2 0.42380 28.07800 15.96700 25.21900 # H1772 + 1773 591 2 0.42380 28.47600 14.66200 24.64300 # H1773 + 1774 592 1 -0.84760 22.33400 15.75800 23.11100 # O1774 + 1775 592 2 0.42380 21.86400 15.13100 22.51800 # H1775 + 1776 592 2 0.42380 22.22300 15.15000 23.92300 # H1776 + 1777 593 1 -0.84760 23.88600 1.10000 13.45000 # O1777 + 1778 593 2 0.42380 24.23200 1.03400 14.40700 # H1778 + 1779 593 2 0.42380 24.34300 0.46000 12.73900 # H1779 + 1780 594 1 -0.84760 7.85100 10.72000 29.97400 # O1780 + 1781 594 2 0.42380 8.53400 9.94800 29.99700 # H1781 + 1782 594 2 0.42380 6.93000 10.30700 29.94400 # H1782 + 1783 595 1 -0.84760 24.37900 19.47800 12.86200 # O1783 + 1784 595 2 0.42380 23.86900 19.92300 12.05700 # H1784 + 1785 595 2 0.42380 24.72500 18.54500 12.60800 # H1785 + 1786 596 1 -0.84760 8.99300 7.80100 10.34700 # O1786 + 1787 596 2 0.42380 9.99700 7.68000 10.39100 # H1787 + 1788 596 2 0.42380 8.73100 8.59600 10.87200 # H1788 + 1789 597 1 -0.84760 20.30200 23.46300 4.91100 # O1789 + 1790 597 2 0.42380 20.23600 23.93100 5.85400 # H1790 + 1791 597 2 0.42380 20.68400 24.26700 4.37200 # H1791 + 1792 598 1 -0.84760 19.80700 12.01600 18.55300 # O1792 + 1793 598 2 0.42380 20.82600 11.98000 18.61000 # H1793 + 1794 598 2 0.42380 19.58400 11.85300 19.56000 # H1794 + 1795 599 1 -0.84760 7.70400 21.14200 17.75300 # O1795 + 1796 599 2 0.42380 7.49400 20.32500 17.20700 # H1796 + 1797 599 2 0.42380 8.60900 21.04000 18.18300 # H1797 + 1798 600 1 -0.84760 20.03700 20.34500 9.75400 # O1798 + 1799 600 2 0.42380 20.81700 20.30800 9.07400 # H1799 + 1800 600 2 0.42380 19.60100 21.27800 9.58700 # H1800 + 1801 601 1 -0.84760 4.53600 10.29600 24.99400 # O1801 + 1802 601 2 0.42380 4.15600 11.01900 25.62200 # H1802 + 1803 601 2 0.42380 4.22900 10.25000 24.09500 # H1803 + 1804 602 1 -0.84760 20.20300 8.66200 2.26500 # O1804 + 1805 602 2 0.42380 21.17600 8.67800 1.89000 # H1805 + 1806 602 2 0.42380 20.07200 7.67300 2.16600 # H1806 + 1807 603 1 -0.84760 4.48000 20.89100 23.42100 # O1807 + 1808 603 2 0.42380 3.86700 20.27400 23.90400 # H1808 + 1809 603 2 0.42380 5.34700 20.73000 23.80300 # H1809 + 1810 604 1 -0.84760 -0.79400 13.79100 3.31000 # O1810 + 1811 604 2 0.42380 -1.21400 12.91900 3.18900 # H1811 + 1812 604 2 0.42380 -0.59700 13.75300 4.34300 # H1812 + 1813 605 1 -0.84760 16.63200 24.97200 6.11700 # O1813 + 1814 605 2 0.42380 16.24200 24.04600 6.11900 # H1814 + 1815 605 2 0.42380 16.13200 25.48200 6.83100 # H1815 + 1816 606 1 -0.84760 12.84600 14.23600 26.88500 # O1816 + 1817 606 2 0.42380 12.95400 13.25800 26.58000 # H1817 + 1818 606 2 0.42380 13.84900 14.46600 26.93300 # H1818 + 1819 607 1 -0.84760 8.91300 28.57900 16.66400 # O1819 + 1820 607 2 0.42380 9.83600 28.95000 16.89200 # H1820 + 1821 607 2 0.42380 8.60100 27.82600 17.23400 # H1821 + 1822 608 1 -0.84760 4.73900 17.66800 21.47000 # O1822 + 1823 608 2 0.42380 5.43000 17.54300 20.75500 # H1823 + 1824 608 2 0.42380 4.05800 18.20600 21.02000 # H1824 + 1825 609 1 -0.84760 22.72000 14.32000 18.24400 # O1825 + 1826 609 2 0.42380 21.75500 14.16700 18.09800 # H1826 + 1827 609 2 0.42380 23.11800 13.42600 18.50500 # H1827 + 1828 610 1 -0.84760 27.30700 0.98900 21.65200 # O1828 + 1829 610 2 0.42380 27.11700 0.68300 20.71800 # H1829 + 1830 610 2 0.42380 28.22900 0.70400 21.89600 # H1830 + 1831 611 1 -0.84760 12.03700 13.03000 6.86600 # O1831 + 1832 611 2 0.42380 12.97800 12.78900 7.29300 # H1832 + 1833 611 2 0.42380 11.91000 12.28200 6.25600 # H1833 + 1834 612 1 -0.84760 27.48000 24.59700 4.56500 # O1834 + 1835 612 2 0.42380 27.99100 24.89700 5.40600 # H1835 + 1836 612 2 0.42380 26.47500 24.85300 4.64600 # H1836 + 1837 613 1 -0.84760 12.63200 12.30900 19.19100 # O1837 + 1838 613 2 0.42380 11.75700 12.17800 19.61400 # H1838 + 1839 613 2 0.42380 12.38700 12.44000 18.23500 # H1839 + 1840 614 1 -0.84760 0.49800 4.06900 6.11100 # O1840 + 1841 614 2 0.42380 1.47900 3.78500 6.19400 # H1841 + 1842 614 2 0.42380 0.08100 4.01700 7.01900 # H1842 + 1843 615 1 -0.84760 3.37300 23.46700 13.07800 # O1843 + 1844 615 2 0.42380 3.07200 24.19300 12.42400 # H1844 + 1845 615 2 0.42380 2.92700 23.89600 13.86000 # H1845 + 1846 616 1 -0.84760 29.44500 25.39100 29.60400 # O1846 + 1847 616 2 0.42380 28.81600 25.69900 30.25100 # H1847 + 1848 616 2 0.42380 29.11000 24.96700 28.69700 # H1848 + 1849 617 1 -0.84760 9.04800 23.00000 24.32700 # O1849 + 1850 617 2 0.42380 8.86800 23.84500 24.87600 # H1850 + 1851 617 2 0.42380 9.56500 23.11000 23.51100 # H1851 + 1852 618 1 -0.84760 11.70500 6.73500 17.70600 # O1852 + 1853 618 2 0.42380 12.28500 6.44200 18.51700 # H1853 + 1854 618 2 0.42380 12.00300 6.01000 16.99600 # H1854 + 1855 619 1 -0.84760 5.41100 11.28000 21.91600 # O1855 + 1856 619 2 0.42380 5.59900 10.86900 20.90900 # H1856 + 1857 619 2 0.42380 6.28800 11.07700 22.44500 # H1857 + 1858 620 1 -0.84760 21.54600 14.16700 0.21200 # O1858 + 1859 620 2 0.42380 21.16100 13.58400 0.94600 # H1859 + 1860 620 2 0.42380 22.07400 14.87300 0.70100 # H1860 + 1861 621 1 -0.84760 26.64900 18.89600 10.73100 # O1861 + 1862 621 2 0.42380 26.38700 18.65600 11.61700 # H1862 + 1863 621 2 0.42380 26.76700 18.11000 10.22400 # H1863 + 1864 622 1 -0.84760 22.30600 0.74100 7.56700 # O1864 + 1865 622 2 0.42380 21.52400 1.32400 7.87000 # H1865 + 1866 622 2 0.42380 23.09500 1.13300 8.10200 # H1866 + 1867 623 1 -0.84760 18.77200 5.39900 28.79900 # O1867 + 1868 623 2 0.42380 18.08100 4.69100 29.06400 # H1868 + 1869 623 2 0.42380 18.14500 6.17400 28.64200 # H1869 + 1870 624 1 -0.84760 -0.22200 15.25500 23.14000 # O1870 + 1871 624 2 0.42380 0.25800 15.29900 22.23100 # H1871 + 1872 624 2 0.42380 0.07500 16.16500 23.55300 # H1872 + 1873 625 1 -0.84760 10.89700 17.61800 15.00500 # O1873 + 1874 625 2 0.42380 11.76800 17.59100 14.50900 # H1874 + 1875 625 2 0.42380 11.13100 17.97600 15.91500 # H1875 + 1876 626 1 -0.84760 5.31400 21.75700 11.67100 # O1876 + 1877 626 2 0.42380 5.36800 21.97300 12.55700 # H1877 + 1878 626 2 0.42380 5.41100 22.58500 11.23400 # H1878 + 1879 627 1 -0.84760 23.44300 22.96800 3.19800 # O1879 + 1880 627 2 0.42380 23.04000 23.33700 2.35600 # H1880 + 1881 627 2 0.42380 23.93200 22.18200 2.77500 # H1881 + 1882 628 1 -0.84760 25.28400 17.14300 27.44500 # O1882 + 1883 628 2 0.42380 24.70100 17.03000 28.28200 # H1883 + 1884 628 2 0.42380 24.64800 17.61900 26.83200 # H1884 + 1885 629 1 -0.84760 26.65400 3.82400 27.02600 # O1885 + 1886 629 2 0.42380 26.20600 3.53400 26.13500 # H1886 + 1887 629 2 0.42380 25.79300 4.02500 27.60000 # H1887 + 1888 630 1 -0.84760 19.16200 15.67800 10.32100 # O1888 + 1889 630 2 0.42380 19.77100 16.02000 9.59300 # H1889 + 1890 630 2 0.42380 19.16500 16.16900 11.16600 # H1890 + 1891 631 1 -0.84760 27.70400 12.60300 -0.34200 # O1891 + 1892 631 2 0.42380 27.97300 13.58300 -0.54300 # H1892 + 1893 631 2 0.42380 27.61100 12.17100 -1.29500 # H1893 + 1894 632 1 -0.84760 1.17600 21.82200 11.66500 # O1894 + 1895 632 2 0.42380 1.42500 21.09800 12.32700 # H1895 + 1896 632 2 0.42380 0.99000 22.57800 12.35900 # H1896 + 1897 633 1 -0.84760 -0.71000 18.00300 22.82400 # O1897 + 1898 633 2 0.42380 -0.34300 18.92200 23.06400 # H1898 + 1899 633 2 0.42380 -1.57500 18.15700 22.29600 # H1899 + 1900 634 1 -0.84760 21.16000 22.09300 2.65100 # O1900 + 1901 634 2 0.42380 21.77400 21.30800 2.42500 # H1901 + 1902 634 2 0.42380 20.71100 21.82100 3.46300 # H1902 + 1903 635 1 -0.84760 5.96000 -0.54800 17.77200 # O1903 + 1904 635 2 0.42380 6.12100 0.41500 17.41400 # H1904 + 1905 635 2 0.42380 5.22100 -0.59300 18.47600 # H1905 + 1906 636 1 -0.84760 17.11800 4.29100 17.54400 # O1906 + 1907 636 2 0.42380 16.98800 3.52500 18.21000 # H1907 + 1908 636 2 0.42380 17.30000 4.00300 16.56900 # H1908 + 1909 637 1 -0.84760 0.93400 23.30900 23.29900 # O1909 + 1910 637 2 0.42380 0.28800 24.10500 23.16000 # H1910 + 1911 637 2 0.42380 0.70200 22.38100 22.84900 # H1911 + 1912 638 1 -0.84760 19.73200 9.67500 26.94400 # O1912 + 1913 638 2 0.42380 19.27100 10.19500 27.67700 # H1913 + 1914 638 2 0.42380 20.75700 9.68400 27.07100 # H1914 + 1915 639 1 -0.84760 22.17200 -0.58400 22.45600 # O1915 + 1916 639 2 0.42380 21.61000 -0.46900 23.30900 # H1916 + 1917 639 2 0.42380 23.12100 -0.79600 22.77400 # H1917 + 1918 640 1 -0.84760 11.21700 22.37800 22.31500 # O1918 + 1919 640 2 0.42380 11.47000 22.40000 21.36200 # H1919 + 1920 640 2 0.42380 11.39400 23.32300 22.60600 # H1920 + 1921 641 1 -0.84760 7.18900 29.48300 24.33500 # O1921 + 1922 641 2 0.42380 7.52700 29.13400 25.18700 # H1922 + 1923 641 2 0.42380 6.29000 29.74100 24.78900 # H1923 + 1924 642 1 -0.84760 21.71400 1.70700 27.35900 # O1924 + 1925 642 2 0.42380 20.92800 1.86900 28.01200 # H1925 + 1926 642 2 0.42380 22.55400 1.99200 27.83900 # H1926 + 1927 643 1 -0.84760 1.73600 9.28600 17.29200 # O1927 + 1928 643 2 0.42380 0.93500 8.99000 16.69900 # H1928 + 1929 643 2 0.42380 1.85200 8.54800 17.93100 # H1929 + 1930 644 1 -0.84760 2.52400 19.65100 29.36500 # O1930 + 1931 644 2 0.42380 2.62800 20.03500 30.28900 # H1931 + 1932 644 2 0.42380 2.22400 18.68000 29.54500 # H1932 + 1933 645 1 -0.84760 19.07900 2.71800 23.99400 # O1933 + 1934 645 2 0.42380 19.45500 3.57100 24.35100 # H1934 + 1935 645 2 0.42380 18.48200 3.02000 23.26300 # H1935 + 1936 646 1 -0.84760 16.52300 0.10800 29.68600 # O1936 + 1937 646 2 0.42380 15.53000 0.23400 29.70700 # H1937 + 1938 646 2 0.42380 16.81900 -0.87000 29.84600 # H1938 + 1939 647 1 -0.84760 8.02200 1.91400 25.66800 # O1939 + 1940 647 2 0.42380 8.20700 2.49500 26.41500 # H1940 + 1941 647 2 0.42380 8.37100 1.06900 25.91100 # H1941 + 1942 648 1 -0.84760 9.14200 19.99600 14.37100 # O1942 + 1943 648 2 0.42380 9.84400 19.26700 14.18600 # H1943 + 1944 648 2 0.42380 9.72500 20.72300 14.75800 # H1944 + 1945 649 1 -0.84760 23.47000 -0.20900 2.08800 # O1945 + 1946 649 2 0.42380 23.85900 -0.40600 3.00500 # H1946 + 1947 649 2 0.42380 23.95700 0.65000 1.71100 # H1947 + 1948 650 1 -0.84760 5.52300 8.09700 23.48400 # O1948 + 1949 650 2 0.42380 6.19600 7.51400 23.14200 # H1949 + 1950 650 2 0.42380 5.43500 8.79100 22.79800 # H1950 + 1951 651 1 -0.84760 2.62600 16.75000 10.24000 # O1951 + 1952 651 2 0.42380 2.70600 17.32700 11.12900 # H1952 + 1953 651 2 0.42380 2.95900 15.82600 10.49100 # H1953 + 1954 652 1 -0.84760 11.19100 16.79700 26.60100 # O1954 + 1955 652 2 0.42380 11.92700 16.07000 26.47100 # H1955 + 1956 652 2 0.42380 10.82100 17.24400 25.73600 # H1956 + 1957 653 1 -0.84760 -0.48700 25.51900 17.05000 # O1957 + 1958 653 2 0.42380 0.20200 24.74700 17.04600 # H1958 + 1959 653 2 0.42380 -0.03700 26.41000 17.18200 # H1959 + 1960 654 1 -0.84760 5.73400 4.34100 16.50900 # O1960 + 1961 654 2 0.42380 5.54000 5.28500 16.76600 # H1961 + 1962 654 2 0.42380 4.98100 3.72600 16.81300 # H1962 + 1963 655 1 -0.84760 21.92600 5.03600 25.65800 # O1963 + 1964 655 2 0.42380 22.19600 4.70100 24.73700 # H1964 + 1965 655 2 0.42380 21.33700 4.28900 26.14200 # H1965 + 1966 656 1 -0.84760 21.02500 17.42000 17.74300 # O1966 + 1967 656 2 0.42380 20.79000 16.47600 17.94800 # H1967 + 1968 656 2 0.42380 20.95100 17.40600 16.73200 # H1968 + 1969 657 1 -0.84760 5.03800 7.69900 7.73600 # O1969 + 1970 657 2 0.42380 4.30100 8.08800 7.11900 # H1970 + 1971 657 2 0.42380 4.79300 7.91400 8.67800 # H1971 + 1972 658 1 -0.84760 1.44200 5.67000 20.84000 # O1972 + 1973 658 2 0.42380 1.55200 4.82000 20.29900 # H1973 + 1974 658 2 0.42380 0.46000 5.92300 20.72800 # H1974 + 1975 659 1 -0.84760 24.06400 12.94600 2.13700 # O1975 + 1976 659 2 0.42380 24.62100 13.66400 2.60700 # H1976 + 1977 659 2 0.42380 24.82000 12.35200 1.90600 # H1977 + 1978 660 1 -0.84760 2.56700 3.72000 0.18100 # O1978 + 1979 660 2 0.42380 1.70100 4.12400 -0.12600 # H1979 + 1980 660 2 0.42380 2.82500 4.04200 1.07800 # H1980 + 1981 661 1 -0.84760 -0.44700 18.58700 2.12200 # O1981 + 1982 661 2 0.42380 -1.24400 18.67000 1.57800 # H1982 + 1983 661 2 0.42380 0.27000 19.27700 1.88700 # H1983 + 1984 662 1 -0.84760 1.90300 5.38700 13.80700 # O1984 + 1985 662 2 0.42380 1.38900 6.18700 13.51700 # H1985 + 1986 662 2 0.42380 2.19500 5.12600 12.89400 # H1986 + 1987 663 1 -0.84760 18.77800 13.20600 28.18900 # O1987 + 1988 663 2 0.42380 17.91900 13.64100 27.85300 # H1988 + 1989 663 2 0.42380 19.56500 13.79800 27.80900 # H1989 + 1990 664 1 -0.84760 23.21900 4.65900 0.68700 # O1990 + 1991 664 2 0.42380 24.08900 5.05700 0.94000 # H1991 + 1992 664 2 0.42380 22.77600 5.22500 -0.01700 # H1992 + 1993 665 1 -0.84760 -0.08900 26.08200 26.11000 # O1993 + 1994 665 2 0.42380 -0.05800 25.03500 26.12000 # H1994 + 1995 665 2 0.42380 -0.87900 26.39100 25.57400 # H1995 + 1996 666 1 -0.84760 27.84000 27.57100 0.25400 # O1996 + 1997 666 2 0.42380 27.81700 26.64200 0.75400 # H1997 + 1998 666 2 0.42380 26.96200 28.06900 0.63600 # H1998 + 1999 667 1 -0.84760 16.24000 24.30800 20.74600 # O1999 + 2000 667 2 0.42380 16.50500 23.30200 20.84600 # H2000 + 2001 667 2 0.42380 15.27500 24.30800 21.02500 # H2001 + 2002 668 1 -0.84760 29.19000 12.26700 5.28000 # O2002 + 2003 668 2 0.42380 30.00800 11.72600 5.55300 # H2003 + 2004 668 2 0.42380 28.92900 11.83600 4.41100 # H2004 + 2005 669 1 -0.84760 29.74400 9.66200 13.37300 # O2005 + 2006 669 2 0.42380 29.73700 10.38500 14.12300 # H2006 + 2007 669 2 0.42380 30.21400 10.08600 12.56700 # H2007 + 2008 670 1 -0.84760 1.60800 10.91900 22.00000 # O2008 + 2009 670 2 0.42380 2.53100 11.33100 22.12900 # H2009 + 2010 670 2 0.42380 1.05700 10.98000 22.88500 # H2010 + 2011 671 1 -0.84760 18.57000 25.31600 25.79400 # O2011 + 2012 671 2 0.42380 18.52700 24.32700 25.73000 # H2012 + 2013 671 2 0.42380 18.29500 25.74400 24.86000 # H2013 + 2014 672 1 -0.84760 0.14800 2.78100 25.53200 # O2014 + 2015 672 2 0.42380 0.00400 3.72700 25.64800 # H2015 + 2016 672 2 0.42380 1.02400 2.44400 25.86700 # H2016 + 2017 673 1 -0.84760 3.56600 13.36300 28.05200 # O2017 + 2018 673 2 0.42380 3.93200 14.24500 28.48500 # H2018 + 2019 673 2 0.42380 2.76100 13.22000 28.68700 # H2019 + 2020 674 1 -0.84760 28.31900 16.08400 19.28600 # O2020 + 2021 674 2 0.42380 28.69600 15.42400 19.97700 # H2021 + 2022 674 2 0.42380 28.27600 17.06100 19.68400 # H2022 + 2023 675 1 -0.84760 23.17300 30.05100 16.60800 # O2023 + 2024 675 2 0.42380 23.11900 29.01600 16.71800 # H2024 + 2025 675 2 0.42380 22.35500 30.20300 16.00000 # H2025 + 2026 676 1 -0.84760 1.30000 5.69800 24.43900 # O2026 + 2027 676 2 0.42380 0.63300 5.47800 23.74600 # H2027 + 2028 676 2 0.42380 2.08700 6.17600 23.92400 # H2028 + 2029 677 1 -0.84760 1.42000 -0.07600 26.06900 # O2029 + 2030 677 2 0.42380 1.50800 -1.12100 26.17700 # H2030 + 2031 677 2 0.42380 0.81800 0.05000 26.84600 # H2031 + 2032 678 1 -0.84760 7.05800 7.32500 3.90700 # O2032 + 2033 678 2 0.42380 7.47300 7.81700 4.71900 # H2033 + 2034 678 2 0.42380 7.36200 6.41200 4.09600 # H2034 + 2035 679 1 -0.84760 8.60500 11.27400 14.18600 # O2035 + 2036 679 2 0.42380 8.33400 12.22700 13.93500 # H2036 + 2037 679 2 0.42380 8.75800 10.67300 13.31900 # H2037 + 2038 680 1 -0.84760 21.29500 24.95300 16.15300 # O2038 + 2039 680 2 0.42380 21.19600 23.96400 16.32100 # H2039 + 2040 680 2 0.42380 21.97300 25.14200 16.94800 # H2040 + 2041 681 1 -0.84760 26.80700 13.01900 4.59200 # O2041 + 2042 681 2 0.42380 27.58400 12.56500 5.14400 # H2042 + 2043 681 2 0.42380 27.08500 13.93400 5.10700 # H2043 + 2044 682 1 -0.84760 24.38700 1.49700 5.75700 # O2044 + 2045 682 2 0.42380 23.96900 0.58400 5.99000 # H2045 + 2046 682 2 0.42380 25.05300 1.76300 6.39600 # H2046 + 2047 683 1 -0.84760 4.71700 25.48400 26.84500 # O2047 + 2048 683 2 0.42380 4.31700 26.24600 27.32200 # H2048 + 2049 683 2 0.42380 4.37000 24.65700 27.28600 # H2049 + 2050 684 1 -0.84760 25.27600 16.20800 18.59800 # O2050 + 2051 684 2 0.42380 25.56200 16.12600 19.54300 # H2051 + 2052 684 2 0.42380 24.50400 15.60800 18.41800 # H2052 + 2053 685 1 -0.84760 11.03700 14.66000 0.63800 # O2053 + 2054 685 2 0.42380 10.83700 14.73300 -0.35700 # H2054 + 2055 685 2 0.42380 11.06500 13.68600 0.81800 # H2055 + 2056 686 1 -0.84760 25.03400 19.44600 19.16600 # O2056 + 2057 686 2 0.42380 24.05600 19.21800 18.91100 # H2057 + 2058 686 2 0.42380 25.01900 20.37000 18.84000 # H2058 + 2059 687 1 -0.84760 12.16800 4.75800 15.85200 # O2059 + 2060 687 2 0.42380 11.80000 4.04200 16.34200 # H2060 + 2061 687 2 0.42380 11.38700 5.17800 15.35600 # H2061 + 2062 688 1 -0.84760 24.08400 19.84100 16.26600 # O2062 + 2063 688 2 0.42380 24.68200 19.09500 16.57300 # H2063 + 2064 688 2 0.42380 23.32700 19.51500 15.77800 # H2064 + 2065 689 1 -0.84760 3.21400 8.80100 6.31300 # O2065 + 2066 689 2 0.42380 3.95200 8.95100 5.60900 # H2066 + 2067 689 2 0.42380 3.08200 9.67400 6.81500 # H2067 + 2068 690 1 -0.84760 1.95700 14.14100 8.85600 # O2068 + 2069 690 2 0.42380 1.69300 13.55800 9.63800 # H2069 + 2070 690 2 0.42380 1.71200 15.11200 9.09500 # H2070 + 2071 691 1 -0.84760 28.36400 0.14300 14.57400 # O2071 + 2072 691 2 0.42380 28.43900 -0.85100 14.44700 # H2072 + 2073 691 2 0.42380 28.55000 0.23800 15.60900 # H2073 + 2074 692 1 -0.84760 13.02400 22.22100 25.78100 # O2074 + 2075 692 2 0.42380 12.32600 21.85900 25.13800 # H2075 + 2076 692 2 0.42380 12.91600 21.77900 26.66000 # H2076 + 2077 693 1 -0.84760 19.23800 17.50500 29.03900 # O2077 + 2078 693 2 0.42380 19.61700 18.37400 28.63800 # H2078 + 2079 693 2 0.42380 18.97800 16.84100 28.29300 # H2079 + 2080 694 1 -0.84760 20.90500 27.74300 6.43600 # O2080 + 2081 694 2 0.42380 21.06000 27.37400 5.53500 # H2081 + 2082 694 2 0.42380 20.46100 28.57700 6.30200 # H2082 + 2083 695 1 -0.84760 9.97300 0.17100 1.97500 # O2083 + 2084 695 2 0.42380 10.51400 -0.63400 1.74000 # H2084 + 2085 695 2 0.42380 9.03200 -0.04200 2.26900 # H2085 + 2086 696 1 -0.84760 26.75400 14.96000 22.82600 # O2086 + 2087 696 2 0.42380 26.25400 14.87300 21.96100 # H2087 + 2088 696 2 0.42380 26.42300 15.50800 23.58200 # H2088 + 2089 697 1 -0.84760 5.71300 7.36000 16.36000 # O2089 + 2090 697 2 0.42380 5.93400 6.69200 17.06200 # H2090 + 2091 697 2 0.42380 5.57600 8.28600 16.80300 # H2091 + 2092 698 1 -0.84760 3.23300 2.65400 15.49000 # O2092 + 2093 698 2 0.42380 3.45700 2.26800 16.36900 # H2093 + 2094 698 2 0.42380 2.97600 3.56900 15.68500 # H2094 + 2095 699 1 -0.84760 15.03200 12.36000 3.08600 # O2095 + 2096 699 2 0.42380 15.82300 12.77100 3.55700 # H2096 + 2097 699 2 0.42380 14.73200 13.04800 2.43600 # H2097 + 2098 700 1 -0.84760 16.15000 24.98600 0.48600 # O2098 + 2099 700 2 0.42380 15.77800 24.17900 0.09600 # H2099 + 2100 700 2 0.42380 16.78100 25.26600 -0.23000 # H2100 + 2101 701 1 -0.84760 14.43800 7.83800 11.39700 # O2101 + 2102 701 2 0.42380 13.90400 7.24100 12.09000 # H2102 + 2103 701 2 0.42380 14.75200 8.69500 11.95200 # H2103 + 2104 702 1 -0.84760 0.99700 19.52600 18.22200 # O2104 + 2105 702 2 0.42380 1.95800 19.21500 18.40400 # H2105 + 2106 702 2 0.42380 0.69600 19.79400 19.08200 # H2106 + 2107 703 1 -0.84760 16.30600 17.56600 27.41500 # O2107 + 2108 703 2 0.42380 16.05600 16.65700 27.84200 # H2108 + 2109 703 2 0.42380 17.31900 17.77000 27.19500 # H2109 + 2110 704 1 -0.84760 18.94300 28.33100 29.18900 # O2110 + 2111 704 2 0.42380 18.70700 28.75200 30.06700 # H2111 + 2112 704 2 0.42380 19.91900 28.21300 29.11500 # H2112 + 2113 705 1 -0.84760 14.84300 1.93100 17.50600 # O2113 + 2114 705 2 0.42380 15.23800 1.06300 17.17300 # H2114 + 2115 705 2 0.42380 13.87600 1.60700 17.40200 # H2115 + 2116 706 1 -0.84760 17.72600 2.28600 8.42300 # O2116 + 2117 706 2 0.42380 16.90200 2.12000 7.84000 # H2117 + 2118 706 2 0.42380 18.42500 1.53000 8.36600 # H2118 + 2119 707 1 -0.84760 6.45800 29.20900 21.46100 # O2119 + 2120 707 2 0.42380 6.76400 28.87500 22.37000 # H2120 + 2121 707 2 0.42380 6.02700 28.47600 20.97400 # H2121 + 2122 708 1 -0.84760 0.46000 15.49500 1.81800 # O2122 + 2123 708 2 0.42380 -0.05500 14.68300 2.09300 # H2123 + 2124 708 2 0.42380 -0.28600 16.04800 1.46200 # H2124 + 2125 709 1 -0.84760 10.36800 19.79400 22.30400 # O2125 + 2126 709 2 0.42380 10.87200 20.66800 22.39900 # H2126 + 2127 709 2 0.42380 10.23800 19.44900 23.24500 # H2127 + 2128 710 1 -0.84760 2.72600 11.89400 6.09600 # O2128 + 2129 710 2 0.42380 3.50100 11.29700 6.28400 # H2129 + 2130 710 2 0.42380 3.08200 12.83400 6.23900 # H2130 + 2131 711 1 -0.84760 22.46300 22.56100 8.61400 # O2131 + 2132 711 2 0.42380 22.93600 21.72300 8.38100 # H2132 + 2133 711 2 0.42380 22.76600 23.35100 8.09200 # H2133 + 2134 712 1 -0.84760 12.33800 -0.14000 26.01900 # O2134 + 2135 712 2 0.42380 13.13100 0.43300 25.78800 # H2135 + 2136 712 2 0.42380 12.47900 -1.01500 25.54800 # H2136 + 2137 713 1 -0.84760 4.18500 3.69700 5.53000 # O2137 + 2138 713 2 0.42380 3.37600 3.45200 4.96800 # H2138 + 2139 713 2 0.42380 3.76700 4.40000 6.19500 # H2139 + 2140 714 1 -0.84760 24.69100 0.47500 8.96300 # O2140 + 2141 714 2 0.42380 24.71100 -0.45800 9.06100 # H2141 + 2142 714 2 0.42380 25.48000 0.71400 9.50500 # H2142 + 2143 715 1 -0.84760 21.53600 27.81900 17.15700 # O2143 + 2144 715 2 0.42380 20.87600 27.80500 16.37600 # H2144 + 2145 715 2 0.42380 21.06500 27.74000 18.01400 # H2145 + 2146 716 1 -0.84760 27.65300 16.88400 29.37400 # O2146 + 2147 716 2 0.42380 26.59900 16.91700 29.45700 # H2147 + 2148 716 2 0.42380 28.09300 16.07300 28.85600 # H2148 + 2149 717 1 -0.84760 1.93200 9.83300 4.00400 # O2149 + 2150 717 2 0.42380 1.96500 8.91200 4.40500 # H2150 + 2151 717 2 0.42380 1.47600 9.72800 3.07500 # H2151 + 2152 718 1 -0.84760 17.88200 28.63900 10.24600 # O2152 + 2153 718 2 0.42380 17.91600 29.51900 9.71400 # H2153 + 2154 718 2 0.42380 17.91500 27.82900 9.57200 # H2154 + 2155 719 1 -0.84760 25.88300 13.38800 19.14400 # O2155 + 2156 719 2 0.42380 26.77300 13.84800 19.39900 # H2156 + 2157 719 2 0.42380 25.10900 13.90300 18.75000 # H2157 + 2158 720 1 -0.84760 4.55800 12.13900 8.04500 # O2158 + 2159 720 2 0.42380 5.34200 12.80700 7.95000 # H2159 + 2160 720 2 0.42380 3.78800 12.68400 8.43400 # H2160 + 2161 721 1 -0.84760 5.39400 5.51200 25.28900 # O2161 + 2162 721 2 0.42380 5.26800 4.54800 25.58300 # H2162 + 2163 721 2 0.42380 5.43400 5.61700 24.27700 # H2163 + 2164 722 1 -0.84760 17.95400 21.11900 1.63900 # O2164 + 2165 722 2 0.42380 18.37700 21.91900 1.25300 # H2165 + 2166 722 2 0.42380 16.89300 21.23500 1.68800 # H2166 + 2167 723 1 -0.84760 9.57500 10.91500 9.53400 # O2167 + 2168 723 2 0.42380 10.34600 11.30200 9.99100 # H2168 + 2169 723 2 0.42380 10.03600 10.55100 8.69200 # H2169 + 2170 724 1 -0.84760 21.95700 13.22200 15.14600 # O2170 + 2171 724 2 0.42380 21.94000 14.04700 15.78600 # H2171 + 2172 724 2 0.42380 21.12000 12.60400 15.34100 # H2172 + 2173 725 1 -0.84760 19.22700 18.06900 25.35300 # O2173 + 2174 725 2 0.42380 19.31400 19.05000 25.55300 # H2174 + 2175 725 2 0.42380 19.25700 18.07200 24.41100 # H2175 + 2176 726 1 -0.84760 26.90300 1.16300 2.78400 # O2176 + 2177 726 2 0.42380 26.91300 0.15600 2.82300 # H2177 + 2178 726 2 0.42380 26.47500 1.50100 3.62800 # H2178 + 2179 727 1 -0.84760 8.12300 1.10700 4.21900 # O2179 + 2180 727 2 0.42380 7.97900 2.05800 4.07400 # H2180 + 2181 727 2 0.42380 8.62800 0.91100 5.07200 # H2181 + 2182 728 1 -0.84760 24.55400 2.42900 2.15600 # O2182 + 2183 728 2 0.42380 24.95200 2.40500 1.21700 # H2183 + 2184 728 2 0.42380 23.53700 2.37900 2.13500 # H2184 + 2185 729 1 -0.84760 23.25000 11.77400 8.41300 # O2185 + 2186 729 2 0.42380 22.37900 11.33200 8.55600 # H2186 + 2187 729 2 0.42380 23.91500 11.06400 8.31400 # H2187 + 2188 730 1 -0.84760 29.09400 12.51300 27.75300 # O2188 + 2189 730 2 0.42380 29.85100 12.07700 28.19800 # H2189 + 2190 730 2 0.42380 29.45400 13.32300 27.29400 # H2190 + 2191 731 1 -0.84760 28.72900 27.85500 25.34100 # O2191 + 2192 731 2 0.42380 28.50100 28.78200 25.87300 # H2192 + 2193 731 2 0.42380 28.82900 27.15400 26.09000 # H2193 + 2194 732 1 -0.84760 0.96000 16.58500 28.82500 # O2194 + 2195 732 2 0.42380 1.82200 16.24500 29.29200 # H2195 + 2196 732 2 0.42380 0.80000 15.76100 28.17800 # H2196 + 2197 733 1 -0.84760 8.23700 22.27700 1.83900 # O2197 + 2198 733 2 0.42380 8.66700 21.68400 2.53900 # H2198 + 2199 733 2 0.42380 8.38500 23.22200 2.23000 # H2199 + 2200 734 1 -0.84760 17.67200 18.47700 1.64000 # O2200 + 2201 734 2 0.42380 17.45900 19.48000 1.75900 # H2201 + 2202 734 2 0.42380 18.26800 18.28800 2.40200 # H2202 + 2203 735 1 -0.84760 29.62700 8.19700 28.35600 # O2203 + 2204 735 2 0.42380 29.30200 7.65400 27.52200 # H2204 + 2205 735 2 0.42380 30.68500 8.33600 28.20800 # H2205 + 2206 736 1 -0.84760 25.89200 18.12600 16.47200 # O2206 + 2207 736 2 0.42380 26.85700 18.04500 16.73700 # H2207 + 2208 736 2 0.42380 25.44400 17.33500 16.92100 # H2208 + 2209 737 1 -0.84760 18.13100 5.55400 24.78700 # O2209 + 2210 737 2 0.42380 17.46000 5.35000 24.08100 # H2210 + 2211 737 2 0.42380 17.90600 6.55500 25.03600 # H2211 + 2212 738 1 -0.84760 10.08500 11.61900 23.61800 # O2212 + 2213 738 2 0.42380 10.03200 10.74100 24.08500 # H2213 + 2214 738 2 0.42380 9.22900 11.69100 23.19700 # H2214 + 2215 739 1 -0.84760 14.30600 12.17100 15.93200 # O2215 + 2216 739 2 0.42380 14.08000 13.09100 15.44600 # H2216 + 2217 739 2 0.42380 14.24100 11.42100 15.18100 # H2217 + 2218 740 1 -0.84760 8.81000 14.19300 12.51200 # O2218 + 2219 740 2 0.42380 9.49000 14.04600 11.86000 # H2219 + 2220 740 2 0.42380 8.98900 15.15300 12.85600 # H2220 + 2221 741 1 -0.84760 14.78800 18.96800 16.39400 # O2221 + 2222 741 2 0.42380 13.79800 19.21900 16.30600 # H2222 + 2223 741 2 0.42380 14.91100 18.26900 15.65900 # H2223 + 2224 742 1 -0.84760 25.62000 23.70600 9.91100 # O2224 + 2225 742 2 0.42380 26.30400 23.90600 9.20200 # H2225 + 2226 742 2 0.42380 26.18500 23.66700 10.80600 # H2226 + 2227 743 1 -0.84760 22.87900 25.85800 13.06000 # O2227 + 2228 743 2 0.42380 22.57500 25.82100 14.01500 # H2228 + 2229 743 2 0.42380 22.38200 26.65800 12.72100 # H2229 + 2230 744 1 -0.84760 25.45900 28.98700 10.22500 # O2230 + 2231 744 2 0.42380 24.83800 28.34900 10.68800 # H2231 + 2232 744 2 0.42380 25.29000 28.91700 9.24400 # H2232 + 2233 745 1 -0.84760 17.35500 13.40700 8.81500 # O2233 + 2234 745 2 0.42380 17.28700 12.39100 8.92400 # H2234 + 2235 745 2 0.42380 17.99500 13.66200 9.54400 # H2235 + 2236 746 1 -0.84760 0.27800 7.20600 12.23400 # O2236 + 2237 746 2 0.42380 0.51500 8.16300 12.44300 # H2237 + 2238 746 2 0.42380 -0.68300 7.19400 11.95700 # H2238 + 2239 747 1 -0.84760 4.29000 1.99600 8.57700 # O2239 + 2240 747 2 0.42380 4.35100 1.99000 9.60900 # H2240 + 2241 747 2 0.42380 5.18600 1.78900 8.26700 # H2241 + 2242 748 1 -0.84760 28.20800 9.24900 10.44200 # O2242 + 2243 748 2 0.42380 27.36600 8.91200 9.90900 # H2243 + 2244 748 2 0.42380 27.91800 9.80900 11.22500 # H2244 + 2245 749 1 -0.84760 0.19800 10.32300 6.06600 # O2245 + 2246 749 2 0.42380 0.56300 9.43400 5.77200 # H2246 + 2247 749 2 0.42380 0.96300 11.02800 5.96400 # H2247 + 2248 750 1 -0.84760 28.52500 23.77100 20.34400 # O2248 + 2249 750 2 0.42380 27.57300 23.39600 20.36500 # H2249 + 2250 750 2 0.42380 28.50700 24.47300 19.56900 # H2250 + 2251 751 1 -0.84760 -0.59000 11.34800 -0.43000 # O2251 + 2252 751 2 0.42380 -0.47400 10.54200 -1.04400 # H2252 + 2253 751 2 0.42380 -1.46200 11.21200 0.06500 # H2253 + 2254 752 1 -0.84760 9.11900 4.02500 29.65600 # O2254 + 2255 752 2 0.42380 9.59700 3.29400 30.29600 # H2255 + 2256 752 2 0.42380 8.32200 4.28500 30.28800 # H2256 + 2257 753 1 -0.84760 16.63100 16.03300 2.70800 # O2257 + 2258 753 2 0.42380 16.15100 16.86900 2.38500 # H2258 + 2259 753 2 0.42380 17.28800 16.41900 3.39800 # H2259 + 2260 754 1 -0.84760 17.56900 7.61700 28.47100 # O2260 + 2261 754 2 0.42380 17.00200 8.17300 27.84300 # H2261 + 2262 754 2 0.42380 18.09300 8.34300 28.92900 # H2262 + 2263 755 1 -0.84760 6.78000 9.43800 9.19300 # O2263 + 2264 755 2 0.42380 6.99800 8.50200 9.12900 # H2264 + 2265 755 2 0.42380 6.74800 9.98600 8.39100 # H2265 + 2266 756 1 -0.84760 23.70200 16.38200 29.42700 # O2266 + 2267 756 2 0.42380 23.70300 15.86500 30.24000 # H2267 + 2268 756 2 0.42380 23.07000 17.10000 29.51000 # H2268 + 2269 757 1 -0.84760 7.27700 24.84000 27.49900 # O2269 + 2270 757 2 0.42380 6.86700 24.80300 26.56800 # H2270 + 2271 757 2 0.42380 7.77900 23.95200 27.60600 # H2271 + 2272 758 1 -0.84760 29.17300 6.54900 10.39700 # O2272 + 2273 758 2 0.42380 29.60000 7.08900 9.67700 # H2273 + 2274 758 2 0.42380 28.46600 7.27800 10.66900 # H2274 + 2275 759 1 -0.84760 27.49400 12.41100 9.87300 # O2275 + 2276 759 2 0.42380 27.65900 12.10800 10.86300 # H2276 + 2277 759 2 0.42380 27.58300 11.56500 9.30100 # H2277 + 2278 760 1 -0.84760 20.24700 25.57400 18.72900 # O2278 + 2279 760 2 0.42380 19.90600 26.05400 17.85700 # H2279 + 2280 760 2 0.42380 20.22100 24.58600 18.42600 # H2280 + 2281 761 1 -0.84760 16.78400 6.94700 12.26000 # O2281 + 2282 761 2 0.42380 16.08900 6.95400 11.51600 # H2282 + 2283 761 2 0.42380 16.34900 6.59700 13.07400 # H2283 + 2284 762 1 -0.84760 22.57000 25.63700 0.11600 # O2284 + 2285 762 2 0.42380 23.13600 26.11000 0.80500 # H2285 + 2286 762 2 0.42380 21.64300 25.56400 0.45100 # H2286 + 2287 763 1 -0.84760 9.65100 23.82600 5.82400 # O2287 + 2288 763 2 0.42380 9.02800 23.57900 5.10000 # H2288 + 2289 763 2 0.42380 10.50400 23.31300 5.75200 # H2289 + 2290 764 1 -0.84760 1.54200 8.65800 29.46900 # O2290 + 2291 764 2 0.42380 1.21000 7.76400 29.76200 # H2291 + 2292 764 2 0.42380 1.50600 8.84500 28.43500 # H2292 + 2293 765 1 -0.84760 13.12600 1.71300 20.73800 # O2293 + 2294 765 2 0.42380 12.95600 0.70400 20.78200 # H2294 + 2295 765 2 0.42380 12.24100 2.21000 20.64500 # H2295 + 2296 766 1 -0.84760 13.67400 3.09100 9.63500 # O2296 + 2297 766 2 0.42380 13.72300 2.14600 10.03500 # H2297 + 2298 766 2 0.42380 13.26900 3.72900 10.32700 # H2298 + 2299 767 1 -0.84760 19.04500 7.50400 10.40400 # O2299 + 2300 767 2 0.42380 18.37800 7.30500 11.10000 # H2300 + 2301 767 2 0.42380 18.60300 7.77400 9.55500 # H2301 + 2302 768 1 -0.84760 5.18700 9.60000 20.03400 # O2302 + 2303 768 2 0.42380 4.77200 8.74400 19.62400 # H2303 + 2304 768 2 0.42380 4.96100 10.40800 19.45600 # H2304 + 2305 769 1 -0.84760 29.84200 1.89000 12.29500 # O2305 + 2306 769 2 0.42380 29.66700 2.63300 12.96200 # H2306 + 2307 769 2 0.42380 29.95100 2.43200 11.41000 # H2307 + 2308 770 1 -0.84760 26.43400 5.46400 13.90200 # O2308 + 2309 770 2 0.42380 27.13100 4.83800 13.66200 # H2309 + 2310 770 2 0.42380 26.88700 6.36500 13.99100 # H2310 + 2311 771 1 -0.84760 10.16300 -0.07500 27.45300 # O2311 + 2312 771 2 0.42380 9.84400 -0.46600 26.60600 # H2312 + 2313 771 2 0.42380 11.17400 0.14800 27.24500 # H2313 + 2314 772 1 -0.84760 2.82500 18.44100 3.80600 # O2314 + 2315 772 2 0.42380 2.44700 18.35400 2.84900 # H2315 + 2316 772 2 0.42380 1.86400 18.53800 4.13500 # H2316 + 2317 773 1 -0.84760 29.69300 26.85700 2.59000 # O2317 + 2318 773 2 0.42380 29.55900 26.12000 1.91900 # H2318 + 2319 773 2 0.42380 30.68900 26.88200 2.85300 # H2319 + 2320 774 1 -0.84760 25.31800 8.52000 22.93200 # O2320 + 2321 774 2 0.42380 25.81900 9.40600 22.97700 # H2321 + 2322 774 2 0.42380 25.47100 7.88800 23.63800 # H2322 + 2323 775 1 -0.84760 16.39800 -0.97200 8.15100 # O2323 + 2324 775 2 0.42380 15.41400 -0.73300 8.31700 # H2324 + 2325 775 2 0.42380 16.51800 -0.67200 7.17500 # H2325 + 2326 776 1 -0.84760 15.08500 26.48200 11.27100 # O2326 + 2327 776 2 0.42380 15.36000 25.50900 11.09400 # H2327 + 2328 776 2 0.42380 15.77600 26.86200 11.87900 # H2328 + 2329 777 1 -0.84760 20.45900 2.14900 12.30600 # O2329 + 2330 777 2 0.42380 21.17600 2.84600 12.60300 # H2330 + 2331 777 2 0.42380 21.09000 1.39400 12.07500 # H2331 + 2332 778 1 -0.84760 27.47100 27.74100 17.37300 # O2332 + 2333 778 2 0.42380 27.41300 27.84200 16.33900 # H2333 + 2334 778 2 0.42380 26.48700 27.88200 17.63000 # H2334 + 2335 779 1 -0.84760 6.16500 24.19800 4.87200 # O2335 + 2336 779 2 0.42380 5.16600 24.21400 4.48000 # H2336 + 2337 779 2 0.42380 6.45000 23.35700 4.28000 # H2337 + 2338 780 1 -0.84760 10.41500 13.47400 20.92500 # O2338 + 2339 780 2 0.42380 10.18000 14.16800 20.21500 # H2339 + 2340 780 2 0.42380 9.58500 13.27200 21.44000 # H2340 + 2341 781 1 -0.84760 10.36500 1.76800 9.28700 # O2341 + 2342 781 2 0.42380 9.73100 1.82200 8.48800 # H2342 + 2343 781 2 0.42380 9.81200 1.22800 9.89500 # H2343 + 2344 782 1 -0.84760 24.92600 18.04400 4.82600 # O2344 + 2345 782 2 0.42380 25.90500 17.88100 4.93300 # H2345 + 2346 782 2 0.42380 24.46900 17.73600 5.66000 # H2346 + 2347 783 1 -0.84760 3.16800 0.32100 2.13300 # O2347 + 2348 783 2 0.42380 4.10800 0.51900 2.40000 # H2348 + 2349 783 2 0.42380 3.06600 0.24000 1.11500 # H2349 + 2350 784 1 -0.84760 20.54100 5.21300 10.22700 # O2350 + 2351 784 2 0.42380 19.61200 5.06000 10.45600 # H2351 + 2352 784 2 0.42380 20.64300 6.05400 9.62000 # H2352 + 2353 785 1 -0.84760 25.14800 0.38800 24.10600 # O2353 + 2354 785 2 0.42380 25.53200 1.24400 23.93900 # H2354 + 2355 785 2 0.42380 25.83200 -0.29900 24.34900 # H2355 + 2356 786 1 -0.84760 20.18900 8.65200 24.70400 # O2356 + 2357 786 2 0.42380 20.05300 9.08400 25.64700 # H2357 + 2358 786 2 0.42380 20.28800 7.69100 24.91400 # H2358 + 2359 787 1 -0.84760 24.38900 25.85000 3.93000 # O2359 + 2360 787 2 0.42380 24.47700 26.79400 3.56100 # H2360 + 2361 787 2 0.42380 24.27600 25.25700 3.07600 # H2361 + 2362 788 1 -0.84760 19.77700 24.87200 12.92000 # O2362 + 2363 788 2 0.42380 20.36600 24.77200 12.06800 # H2363 + 2364 788 2 0.42380 19.76800 25.84400 13.19100 # H2364 + 2365 789 1 -0.84760 15.63900 20.15800 28.13500 # O2365 + 2366 789 2 0.42380 16.39900 20.42400 28.77800 # H2366 + 2367 789 2 0.42380 15.73800 19.15400 28.01500 # H2367 + 2368 790 1 -0.84760 2.20700 -0.88500 7.84200 # O2368 + 2369 790 2 0.42380 2.11600 -1.65900 8.53000 # H2369 + 2370 790 2 0.42380 1.82500 -0.15900 8.43400 # H2370 + 2371 791 1 -0.84760 9.15600 0.87100 6.79700 # O2371 + 2372 791 2 0.42380 9.67400 0.14500 7.29100 # H2372 + 2373 791 2 0.42380 8.26500 0.99600 7.26200 # H2373 + 2374 792 1 -0.84760 27.60400 9.71600 30.20100 # O2374 + 2375 792 2 0.42380 26.72000 9.97400 29.82900 # H2375 + 2376 792 2 0.42380 28.17000 9.40900 29.38400 # H2376 + 2377 793 1 -0.84760 15.06700 13.85100 19.30500 # O2377 + 2378 793 2 0.42380 15.17200 12.81900 19.29400 # H2378 + 2379 793 2 0.42380 15.94800 14.27900 19.45300 # H2379 + 2380 794 1 -0.84760 12.00100 25.06200 3.34400 # O2380 + 2381 794 2 0.42380 12.45700 25.93300 3.38400 # H2381 + 2382 794 2 0.42380 11.31300 25.08600 3.98700 # H2382 + 2383 795 1 -0.84760 21.85000 25.84600 4.38800 # O2383 + 2384 795 2 0.42380 22.81600 25.80200 3.96600 # H2384 + 2385 795 2 0.42380 22.06700 25.76000 5.33800 # H2385 + 2386 796 1 -0.84760 14.84300 14.95700 16.24800 # O2386 + 2387 796 2 0.42380 14.25900 14.58400 16.91200 # H2387 + 2388 796 2 0.42380 15.27400 14.05200 16.00700 # H2388 + 2389 797 1 -0.84760 4.40700 8.69100 3.47700 # O2389 + 2390 797 2 0.42380 3.50300 9.12300 3.60800 # H2390 + 2391 797 2 0.42380 4.28600 7.85900 2.86600 # H2391 + 2392 798 1 -0.84760 9.76400 1.78200 16.65700 # O2392 + 2393 798 2 0.42380 10.45900 2.34000 17.19600 # H2393 + 2394 798 2 0.42380 9.57900 2.02600 15.70900 # H2394 + 2395 799 1 -0.84760 27.53400 20.92500 12.70800 # O2395 + 2396 799 2 0.42380 26.81200 20.60100 13.39700 # H2396 + 2397 799 2 0.42380 27.41800 20.39900 11.81700 # H2397 + 2398 800 1 -0.84760 0.49400 7.14100 16.48600 # O2398 + 2399 800 2 0.42380 0.89900 6.47500 15.81000 # H2399 + 2400 800 2 0.42380 -0.08300 7.83600 15.97000 # H2400 + 2401 801 1 -0.84760 20.83400 26.81600 10.17700 # O2401 + 2402 801 2 0.42380 20.43000 27.74900 10.48800 # H2402 + 2403 801 2 0.42380 21.56400 26.98200 9.51000 # H2403 + 2404 802 1 -0.84760 25.39300 18.85500 -0.45100 # O2404 + 2405 802 2 0.42380 24.97600 18.21400 0.20700 # H2405 + 2406 802 2 0.42380 24.93700 19.76300 -0.33600 # H2406 + 2407 803 1 -0.84760 9.55500 17.60200 9.10400 # O2407 + 2408 803 2 0.42380 9.37900 18.19200 8.28700 # H2408 + 2409 803 2 0.42380 8.66100 17.02300 9.10100 # H2409 + 2410 804 1 -0.84760 24.74800 27.92500 18.36700 # O2410 + 2411 804 2 0.42380 25.03200 27.46200 19.26100 # H2411 + 2412 804 2 0.42380 23.78700 27.58500 18.16300 # H2412 + 2413 805 1 -0.84760 18.21000 11.16600 24.43800 # O2413 + 2414 805 2 0.42380 19.00700 11.68400 24.78400 # H2414 + 2415 805 2 0.42380 18.62000 10.28100 24.19300 # H2415 + 2416 806 1 -0.84760 0.28700 12.14200 19.06800 # O2416 + 2417 806 2 0.42380 0.90000 11.60000 18.57500 # H2417 + 2418 806 2 0.42380 0.79000 12.31800 19.92900 # H2418 + 2419 807 1 -0.84760 18.90200 29.76000 26.00800 # O2419 + 2420 807 2 0.42380 19.67500 29.95200 25.39100 # H2420 + 2421 807 2 0.42380 17.98700 29.72400 25.49700 # H2421 + 2422 808 1 -0.84760 14.12600 24.98200 25.35100 # O2422 + 2423 808 2 0.42380 13.67800 24.28200 25.99600 # H2423 + 2424 808 2 0.42380 14.86100 25.45000 25.84100 # H2424 + 2425 809 1 -0.84760 22.65300 4.18800 11.66200 # O2425 + 2426 809 2 0.42380 23.49900 3.72000 11.29400 # H2426 + 2427 809 2 0.42380 22.22000 4.81600 10.98700 # H2427 + 2428 810 1 -0.84760 2.52300 19.46000 10.60100 # O2428 + 2429 810 2 0.42380 2.07400 20.33400 10.60800 # H2429 + 2430 810 2 0.42380 2.69100 19.12400 9.63700 # H2430 + 2431 811 1 -0.84760 20.65000 24.89500 7.68000 # O2431 + 2432 811 2 0.42380 20.46400 25.86000 7.35500 # H2432 + 2433 811 2 0.42380 20.27300 24.74800 8.65900 # H2433 + 2434 812 1 -0.84760 14.28500 12.49800 7.87100 # O2434 + 2435 812 2 0.42380 14.82600 11.68400 7.75300 # H2435 + 2436 812 2 0.42380 14.90200 13.33700 7.80100 # H2436 + 2437 813 1 -0.84760 2.22000 18.21700 26.46900 # O2437 + 2438 813 2 0.42380 2.06700 17.86000 27.44400 # H2438 + 2439 813 2 0.42380 1.68800 17.55800 25.80300 # H2439 + 2440 814 1 -0.84760 1.58300 0.32800 23.40600 # O2440 + 2441 814 2 0.42380 0.97500 -0.33000 22.94300 # H2441 + 2442 814 2 0.42380 1.75900 0.02600 24.34900 # H2442 + 2443 815 1 -0.84760 17.40100 9.56500 18.97400 # O2443 + 2444 815 2 0.42380 17.95200 9.42400 18.18600 # H2444 + 2445 815 2 0.42380 16.51700 9.93400 18.67700 # H2445 + 2446 816 1 -0.84760 27.14400 10.87300 7.47200 # O2446 + 2447 816 2 0.42380 27.69100 9.95800 7.56500 # H2447 + 2448 816 2 0.42380 27.31500 11.34200 6.54000 # H2448 + 2449 817 1 -0.84760 3.40000 5.57600 16.90500 # O2449 + 2450 817 2 0.42380 3.11500 6.10600 17.74900 # H2450 + 2451 817 2 0.42380 4.06400 6.16800 16.37100 # H2451 + 2452 818 1 -0.84760 1.75300 9.18800 24.26400 # O2452 + 2453 818 2 0.42380 1.91600 10.23200 24.22000 # H2453 + 2454 818 2 0.42380 2.53000 8.67300 23.80800 # H2454 + 2455 819 1 -0.84760 27.23900 27.46700 12.06200 # O2455 + 2456 819 2 0.42380 27.72400 28.33800 11.90300 # H2456 + 2457 819 2 0.42380 26.42800 27.30100 11.44900 # H2457 + 2458 820 1 -0.84760 14.85200 9.70400 6.13000 # O2458 + 2459 820 2 0.42380 14.67800 8.81200 6.64400 # H2459 + 2460 820 2 0.42380 14.59700 9.49700 5.19000 # H2460 + 2461 821 1 -0.84760 1.88400 12.18800 14.14100 # O2461 + 2462 821 2 0.42380 2.22100 11.37900 14.68200 # H2462 + 2463 821 2 0.42380 0.88300 12.15000 14.17400 # H2463 + 2464 822 1 -0.84760 12.28900 18.61900 -0.04600 # O2464 + 2465 822 2 0.42380 11.31400 18.62000 0.24000 # H2465 + 2466 822 2 0.42380 12.95000 18.13800 0.54600 # H2466 + 2467 823 1 -0.84760 10.60600 20.27600 17.14500 # O2467 + 2468 823 2 0.42380 11.58700 20.30700 17.38000 # H2468 + 2469 823 2 0.42380 10.29100 19.33900 17.33700 # H2469 + 2470 824 1 -0.84760 3.32700 5.02100 22.56700 # O2470 + 2471 824 2 0.42380 2.60100 5.38500 21.91900 # H2471 + 2472 824 2 0.42380 3.73800 4.45500 21.84900 # H2472 + 2473 825 1 -0.84760 6.03300 13.89100 5.74600 # O2473 + 2474 825 2 0.42380 6.43000 12.97900 5.94000 # H2474 + 2475 825 2 0.42380 6.71700 14.61100 5.68500 # H2475 + 2476 826 1 -0.84760 4.79400 6.98500 1.45900 # O2476 + 2477 826 2 0.42380 5.17300 6.04300 1.67200 # H2477 + 2478 826 2 0.42380 3.85400 6.91800 1.03300 # H2478 + 2479 827 1 -0.84760 17.50700 19.86600 15.28100 # O2479 + 2480 827 2 0.42380 18.42700 19.91100 15.68400 # H2480 + 2481 827 2 0.42380 17.27100 18.85600 15.27400 # H2481 + 2482 828 1 -0.84760 4.73400 22.71400 17.97900 # O2482 + 2483 828 2 0.42380 4.83700 21.77300 17.64900 # H2483 + 2484 828 2 0.42380 4.19400 22.56900 18.81300 # H2484 + 2485 829 1 -0.84760 10.66500 3.07600 22.45000 # O2485 + 2486 829 2 0.42380 11.63100 2.91100 22.34500 # H2486 + 2487 829 2 0.42380 10.30400 3.04900 23.44300 # H2487 + 2488 830 1 -0.84760 -0.16900 4.00100 -0.25500 # O2488 + 2489 830 2 0.42380 -0.83000 4.56000 -0.75800 # H2489 + 2490 830 2 0.42380 -0.12300 4.22500 0.72200 # H2490 + 2491 831 1 -0.84760 1.98500 6.69500 9.30800 # O2491 + 2492 831 2 0.42380 2.24600 7.60300 9.68200 # H2492 + 2493 831 2 0.42380 2.31300 6.07600 10.05700 # H2493 + 2494 832 1 -0.84760 21.51000 7.76000 7.87100 # O2494 + 2495 832 2 0.42380 21.81400 8.49300 8.57100 # H2495 + 2496 832 2 0.42380 21.23400 8.14800 6.92700 # H2496 + 2497 833 1 -0.84760 -0.47200 29.18200 4.02100 # O2497 + 2498 833 2 0.42380 0.18300 28.92900 3.28100 # H2498 + 2499 833 2 0.42380 -1.39700 29.43100 3.64500 # H2499 + 2500 834 1 -0.84760 25.51300 13.14900 7.82600 # O2500 + 2501 834 2 0.42380 24.63400 12.84200 8.14000 # H2501 + 2502 834 2 0.42380 26.03900 12.98500 8.60100 # H2502 + 2503 835 1 -0.84760 28.51500 3.16200 6.31200 # O2503 + 2504 835 2 0.42380 27.75800 3.33600 6.92400 # H2504 + 2505 835 2 0.42380 28.08800 2.68500 5.55500 # H2505 + 2506 836 1 -0.84760 5.98400 4.04300 -0.64900 # O2506 + 2507 836 2 0.42380 5.00100 4.17100 -0.29500 # H2507 + 2508 836 2 0.42380 6.07100 4.15500 -1.69900 # H2508 + 2509 837 1 -0.84760 3.72300 27.96800 17.04100 # O2509 + 2510 837 2 0.42380 4.64300 28.32900 16.90200 # H2510 + 2511 837 2 0.42380 3.13500 28.37200 16.26800 # H2511 + 2512 838 1 -0.84760 22.92000 25.10600 18.92300 # O2512 + 2513 838 2 0.42380 22.80100 24.33800 18.27100 # H2513 + 2514 838 2 0.42380 21.95300 25.29700 19.09700 # H2514 + 2515 839 1 -0.84760 15.63900 -1.00500 1.26800 # O2515 + 2516 839 2 0.42380 16.26800 -0.24500 1.29200 # H2516 + 2517 839 2 0.42380 15.81800 -1.40100 0.34000 # H2517 + 2518 840 1 -0.84760 3.41000 28.27500 10.60800 # O2518 + 2519 840 2 0.42380 3.61800 28.16800 11.61100 # H2519 + 2520 840 2 0.42380 3.24800 27.32400 10.37400 # H2520 + 2521 841 1 -0.84760 5.11300 8.92200 12.89300 # O2521 + 2522 841 2 0.42380 4.75500 8.96000 13.80400 # H2522 + 2523 841 2 0.42380 4.98000 9.83300 12.52200 # H2523 + 2524 842 1 -0.84760 17.80000 26.20000 23.17700 # O2524 + 2525 842 2 0.42380 17.87700 26.39800 22.18700 # H2525 + 2526 842 2 0.42380 18.21400 27.06300 23.43600 # H2526 + 2527 843 1 -0.84760 6.21300 8.56200 26.79900 # O2527 + 2528 843 2 0.42380 6.06600 8.63300 27.78400 # H2528 + 2529 843 2 0.42380 5.26000 8.43400 26.29500 # H2529 + 2530 844 1 -0.84760 10.78900 3.22500 25.75200 # O2530 + 2531 844 2 0.42380 11.22000 3.93500 25.20000 # H2531 + 2532 844 2 0.42380 9.99300 3.61300 26.12300 # H2532 + 2533 845 1 -0.84760 9.54500 3.50500 6.39300 # O2533 + 2534 845 2 0.42380 9.79000 3.38500 5.40800 # H2534 + 2535 845 2 0.42380 9.69400 2.56000 6.75900 # H2535 + 2536 846 1 -0.84760 25.36500 25.81600 24.73400 # O2536 + 2537 846 2 0.42380 25.47000 25.54300 25.68700 # H2537 + 2538 846 2 0.42380 25.00400 26.78100 24.70000 # H2538 + 2539 847 1 -0.84760 15.62000 14.36600 6.84800 # O2539 + 2540 847 2 0.42380 16.31600 14.18000 7.59400 # H2540 + 2541 847 2 0.42380 16.04900 15.11700 6.28000 # H2541 + 2542 848 1 -0.84760 12.03600 8.19300 9.68400 # O2542 + 2543 848 2 0.42380 13.00200 8.08500 10.03700 # H2543 + 2544 848 2 0.42380 11.89500 8.16800 8.64800 # H2544 + 2545 849 1 -0.84760 12.69400 27.95400 28.16300 # O2545 + 2546 849 2 0.42380 12.35100 28.93300 28.27800 # H2546 + 2547 849 2 0.42380 11.87400 27.41200 28.42500 # H2547 + 2548 850 1 -0.84760 26.47400 6.65400 6.01500 # O2548 + 2549 850 2 0.42380 26.60600 5.64900 6.19700 # H2549 + 2550 850 2 0.42380 25.51600 6.84100 6.23300 # H2550 + 2551 851 1 -0.84760 18.17300 26.20800 16.73700 # O2551 + 2552 851 2 0.42380 17.62200 25.38800 16.89700 # H2552 + 2553 851 2 0.42380 18.63500 26.09700 15.80200 # H2553 + 2554 852 1 -0.84760 6.09600 12.52200 1.04600 # O2554 + 2555 852 2 0.42380 6.50000 11.69700 1.35400 # H2555 + 2556 852 2 0.42380 5.94100 13.10100 1.91200 # H2556 + 2557 853 1 -0.84760 19.10200 4.96500 1.46300 # O2557 + 2558 853 2 0.42380 18.28400 5.50700 1.72400 # H2558 + 2559 853 2 0.42380 18.91300 4.55100 0.58000 # H2559 + 2560 854 1 -0.84760 20.90300 6.99500 27.14800 # O2560 + 2561 854 2 0.42380 21.07500 6.09400 26.66800 # H2561 + 2562 854 2 0.42380 20.32400 6.69200 28.00300 # H2562 + 2563 855 1 -0.84760 25.48600 20.41100 2.72700 # O2563 + 2564 855 2 0.42380 26.50200 20.18400 2.47600 # H2564 + 2565 855 2 0.42380 25.42600 20.35100 3.72600 # H2565 + 2566 856 1 -0.84760 12.07200 19.23600 6.61000 # O2566 + 2567 856 2 0.42380 11.07500 19.22400 6.80400 # H2567 + 2568 856 2 0.42380 12.14400 19.22200 5.61600 # H2568 + 2569 857 1 -0.84760 11.35200 0.35700 19.15000 # O2569 + 2570 857 2 0.42380 10.95500 0.00800 20.07700 # H2570 + 2571 857 2 0.42380 10.78100 0.27400 18.22500 # H2571 + 2572 858 1 -0.84760 16.95800 22.96900 29.27200 # O2572 + 2573 858 2 0.42380 17.87100 23.37300 29.06500 # H2573 + 2574 858 2 0.42380 16.59600 22.51700 28.45600 # H2574 + 2575 859 1 -0.84760 18.03600 -0.71100 2.79300 # O2575 + 2576 859 2 0.42380 18.03900 -1.60800 2.27500 # H2576 + 2577 859 2 0.42380 18.81300 -0.19500 2.41000 # H2577 + 2578 860 1 -0.84760 11.18400 23.20400 8.36000 # O2578 + 2579 860 2 0.42380 11.98200 23.63300 7.92400 # H2579 + 2580 860 2 0.42380 10.38700 23.46600 7.82400 # H2580 + 2581 861 1 -0.84760 22.50600 21.38000 22.94900 # O2581 + 2582 861 2 0.42380 21.78300 21.77100 22.49500 # H2582 + 2583 861 2 0.42380 22.02900 20.54800 23.39100 # H2583 + 2584 862 1 -0.84760 22.88900 8.41600 5.38400 # O2584 + 2585 862 2 0.42380 22.50600 8.68500 4.43600 # H2585 + 2586 862 2 0.42380 23.24100 9.28900 5.76600 # H2586 + 2587 863 1 -0.84760 12.09400 22.95000 15.20900 # O2587 + 2588 863 2 0.42380 12.24700 22.56200 16.13000 # H2588 + 2589 863 2 0.42380 11.95000 23.91400 15.45100 # H2589 + 2590 864 1 -0.84760 11.93300 16.47400 9.09000 # O2590 + 2591 864 2 0.42380 11.12300 17.10000 9.17100 # H2591 + 2592 864 2 0.42380 12.40200 16.64900 8.15000 # H2592 + 2593 865 1 -0.84760 24.32000 16.40000 8.04600 # O2593 + 2594 865 2 0.42380 23.88200 16.80400 8.85200 # H2594 + 2595 865 2 0.42380 23.54800 15.76700 7.72900 # H2595 + 2596 866 1 -0.84760 3.74400 1.04900 21.57800 # O2596 + 2597 866 2 0.42380 4.14500 1.77800 22.19700 # H2597 + 2598 866 2 0.42380 3.09400 0.52300 22.09200 # H2598 + 2599 867 1 -0.84760 13.89600 -0.22100 28.49400 # O2599 + 2600 867 2 0.42380 13.78900 0.67900 28.06000 # H2600 + 2601 867 2 0.42380 14.61800 -0.82600 28.11500 # H2601 + 2602 868 1 -0.84760 11.65000 26.80100 0.90800 # O2602 + 2603 868 2 0.42380 11.18200 26.82200 1.81100 # H2603 + 2604 868 2 0.42380 11.51200 25.84700 0.50500 # H2604 + 2605 869 1 -0.84760 24.89600 7.87100 0.44100 # O2605 + 2606 869 2 0.42380 23.99000 7.70900 0.91300 # H2606 + 2607 869 2 0.42380 25.13000 7.06600 -0.17400 # H2607 + 2608 870 1 -0.84760 23.05200 14.96800 25.49500 # O2608 + 2609 870 2 0.42380 22.91400 14.20300 26.16100 # H2609 + 2610 870 2 0.42380 23.99300 15.03700 25.31100 # H2610 + 2611 871 1 -0.84760 4.19800 15.95000 1.05600 # O2611 + 2612 871 2 0.42380 4.70800 15.28200 1.64600 # H2612 + 2613 871 2 0.42380 3.53500 15.34300 0.58400 # H2613 + 2614 872 1 -0.84760 9.05600 16.78100 13.10400 # O2614 + 2615 872 2 0.42380 9.39400 17.23100 12.26800 # H2615 + 2616 872 2 0.42380 9.86800 17.04900 13.70500 # H2616 + 2617 873 1 -0.84760 17.81400 25.77000 28.22200 # O2617 + 2618 873 2 0.42380 17.34100 26.53600 27.73100 # H2618 + 2619 873 2 0.42380 17.75900 24.82900 27.79000 # H2619 + 2620 874 1 -0.84760 15.21000 5.91000 22.77600 # O2620 + 2621 874 2 0.42380 15.64100 6.63400 22.19400 # H2621 + 2622 874 2 0.42380 14.21000 6.17900 22.91700 # H2622 + 2623 875 1 -0.84760 19.26100 19.74100 4.14100 # O2623 + 2624 875 2 0.42380 19.89100 19.60600 3.29500 # H2624 + 2625 875 2 0.42380 19.86800 19.79800 4.95700 # H2625 + 2626 876 1 -0.84760 8.04800 15.53500 19.72100 # O2626 + 2627 876 2 0.42380 7.49800 16.39800 19.50200 # H2627 + 2628 876 2 0.42380 8.53300 15.73700 20.56600 # H2628 + 2629 877 1 -0.84760 24.69700 1.96400 21.46200 # O2629 + 2630 877 2 0.42380 24.04800 2.41300 20.79000 # H2630 + 2631 877 2 0.42380 24.85500 1.04900 21.00200 # H2631 + 2632 878 1 -0.84760 8.65600 1.72900 12.29000 # O2632 + 2633 878 2 0.42380 8.27500 1.26800 13.11800 # H2633 + 2634 878 2 0.42380 7.94600 1.83900 11.63900 # H2634 + 2635 879 1 -0.84760 21.85100 5.92100 17.32100 # O2635 + 2636 879 2 0.42380 22.08000 5.93600 16.33600 # H2636 + 2637 879 2 0.42380 21.08500 6.55900 17.26400 # H2637 + 2638 880 1 -0.84760 9.30600 26.60000 7.99000 # O2638 + 2639 880 2 0.42380 9.05800 27.58500 7.65900 # H2639 + 2640 880 2 0.42380 10.29000 26.44900 8.25400 # H2640 + 2641 881 1 -0.84760 13.64500 16.80500 6.93000 # O2641 + 2642 881 2 0.42380 13.98700 17.76400 7.22700 # H2642 + 2643 881 2 0.42380 14.32500 16.03200 7.15900 # H2643 + 2644 882 1 -0.84760 10.23500 7.60200 7.00900 # O2644 + 2645 882 2 0.42380 10.71100 6.76500 6.65200 # H2645 + 2646 882 2 0.42380 9.25700 7.30500 6.90300 # H2646 + 2647 883 1 -0.84760 23.56100 4.97000 20.27300 # O2647 + 2648 883 2 0.42380 22.67400 4.73700 19.89900 # H2648 + 2649 883 2 0.42380 24.01700 5.29800 19.44100 # H2649 + 2650 884 1 -0.84760 22.35800 5.57100 6.01000 # O2650 + 2651 884 2 0.42380 22.53900 6.47800 5.77500 # H2651 + 2652 884 2 0.42380 21.44400 5.60600 6.35700 # H2652 + 2653 885 1 -0.84760 29.29000 6.01200 4.97700 # O2653 + 2654 885 2 0.42380 28.85200 6.17600 5.93700 # H2654 + 2655 885 2 0.42380 29.68200 5.08100 4.95700 # H2655 + 2656 886 1 -0.84760 25.10800 5.82700 25.52100 # O2656 + 2657 886 2 0.42380 24.49400 5.36500 24.81800 # H2657 + 2658 886 2 0.42380 25.76000 5.11900 25.73200 # H2658 + 2659 887 1 -0.84760 20.22900 16.56800 0.25300 # O2659 + 2660 887 2 0.42380 20.00900 17.32700 -0.49600 # H2660 + 2661 887 2 0.42380 20.19100 15.69000 -0.30900 # H2661 + 2662 888 1 -0.84760 1.28100 27.85200 15.99800 # O2662 + 2663 888 2 0.42380 1.65000 27.58800 16.88800 # H2663 + 2664 888 2 0.42380 0.51600 28.42100 16.29100 # H2664 + 2665 889 1 -0.84760 26.77200 6.23000 21.72000 # O2665 + 2666 889 2 0.42380 26.72400 6.31700 20.72000 # H2666 + 2667 889 2 0.42380 25.85100 6.69500 21.97600 # H2667 + 2668 890 1 -0.84760 1.84000 22.39600 7.26800 # O2668 + 2669 890 2 0.42380 1.21700 23.09700 6.87000 # H2669 + 2670 890 2 0.42380 1.62900 21.44200 7.12700 # H2670 + 2671 891 1 -0.84760 4.09500 14.72700 15.45600 # O2671 + 2672 891 2 0.42380 4.88700 14.41100 14.82800 # H2672 + 2673 891 2 0.42380 4.19700 15.77900 15.26700 # H2673 + 2674 892 1 -0.84760 24.47900 10.89300 4.96400 # O2674 + 2675 892 2 0.42380 25.15000 11.55300 4.58100 # H2675 + 2676 892 2 0.42380 25.03900 10.47700 5.69700 # H2676 + 2677 893 1 -0.84760 1.72200 0.25800 30.03500 # O2677 + 2678 893 2 0.42380 0.99000 0.60000 29.36200 # H2678 + 2679 893 2 0.42380 1.80100 1.14500 30.50800 # H2679 + 2680 894 1 -0.84760 25.46700 29.76400 15.08200 # O2680 + 2681 894 2 0.42380 26.03700 30.35300 15.69800 # H2681 + 2682 894 2 0.42380 26.01500 29.72400 14.24600 # H2682 + 2683 895 1 -0.84760 8.64100 4.12700 2.77800 # O2683 + 2684 895 2 0.42380 8.49900 4.79100 1.93200 # H2684 + 2685 895 2 0.42380 8.98400 3.24900 2.39300 # H2685 + 2686 896 1 -0.84760 2.50200 11.78600 0.48900 # O2686 + 2687 896 2 0.42380 2.27200 12.37400 1.30100 # H2687 + 2688 896 2 0.42380 3.52200 11.79200 0.49000 # H2688 + 2689 897 1 -0.84760 3.41100 2.92600 24.99700 # O2689 + 2690 897 2 0.42380 4.29000 2.83200 25.37400 # H2690 + 2691 897 2 0.42380 3.32100 3.78400 24.54100 # H2691 + 2692 898 1 -0.84760 12.77600 28.10100 20.25000 # O2692 + 2693 898 2 0.42380 11.92800 27.98500 19.74800 # H2693 + 2694 898 2 0.42380 13.25100 28.65200 19.57200 # H2694 + 2695 899 1 -0.84760 11.10000 15.30700 11.55700 # O2695 + 2696 899 2 0.42380 10.89100 15.59000 10.55400 # H2696 + 2697 899 2 0.42380 11.97700 14.81600 11.39300 # H2697 + 2698 900 1 -0.84760 3.99600 21.61700 26.08100 # O2698 + 2699 900 2 0.42380 3.57700 21.70500 25.12900 # H2699 + 2700 900 2 0.42380 4.73100 20.86700 26.06400 # H2700 + 2701 901 1 -0.84760 10.98700 24.58400 -0.64200 # O2701 + 2702 901 2 0.42380 11.10200 24.39200 -1.64800 # H2702 + 2703 901 2 0.42380 11.43700 23.92200 -0.07500 # H2703 + 2704 902 1 -0.84760 26.78100 -0.21900 18.90300 # O2704 + 2705 902 2 0.42380 27.51400 -0.50400 18.31300 # H2705 + 2706 902 2 0.42380 26.08500 0.11300 18.30400 # H2706 + 2707 903 1 -0.84760 13.76100 3.04100 1.00800 # O2707 + 2708 903 2 0.42380 13.61800 3.26800 0.04300 # H2708 + 2709 903 2 0.42380 13.14500 3.67200 1.58600 # H2709 + 2710 904 1 -0.84760 26.55900 5.01200 10.12100 # O2710 + 2711 904 2 0.42380 26.30300 5.65200 10.82100 # H2711 + 2712 904 2 0.42380 25.91900 5.05500 9.34000 # H2712 + 2713 905 1 -0.84760 22.06800 11.56800 28.50100 # O2713 + 2714 905 2 0.42380 22.69900 11.44000 29.30000 # H2714 + 2715 905 2 0.42380 21.25200 12.16700 28.74000 # H2715 + 2716 906 1 -0.84760 10.74900 5.90700 13.73800 # O2716 + 2717 906 2 0.42380 10.25300 5.03600 13.40500 # H2717 + 2718 906 2 0.42380 10.16600 6.69600 13.53000 # H2718 + 2719 907 1 -0.84760 12.24200 15.66600 19.62300 # O2719 + 2720 907 2 0.42380 12.89500 16.24400 20.09800 # H2720 + 2721 907 2 0.42380 12.60500 14.73700 19.66000 # H2721 + 2722 908 1 -0.84760 3.29100 21.55100 4.79300 # O2722 + 2723 908 2 0.42380 2.27600 21.50000 4.63700 # H2723 + 2724 908 2 0.42380 3.51300 22.31200 4.14900 # H2724 + 2725 909 1 -0.84760 25.00600 19.42800 22.35500 # O2725 + 2726 909 2 0.42380 25.30200 19.83600 23.18900 # H2726 + 2727 909 2 0.42380 24.28700 18.82100 22.80200 # H2727 + 2728 910 1 -0.84760 11.86400 25.83300 15.79200 # O2728 + 2729 910 2 0.42380 11.51900 26.73100 15.45800 # H2729 + 2730 910 2 0.42380 10.99800 25.32500 15.81300 # H2730 + 2731 911 1 -0.84760 24.45600 7.93800 15.09300 # O2731 + 2732 911 2 0.42380 24.13300 8.79500 14.77400 # H2732 + 2733 911 2 0.42380 25.34700 8.13100 15.55700 # H2733 + 2734 912 1 -0.84760 8.47500 22.53100 29.92000 # O2734 + 2735 912 2 0.42380 7.77100 22.07500 29.41100 # H2735 + 2736 912 2 0.42380 8.44900 22.30300 30.87900 # H2736 + 2737 913 1 -0.84760 22.29300 2.94200 14.79900 # O2737 + 2738 913 2 0.42380 23.07600 3.52700 15.14900 # H2738 + 2739 913 2 0.42380 22.60800 2.09800 14.35400 # H2739 + 2740 914 1 -0.84760 21.35200 5.40100 2.87400 # O2740 + 2741 914 2 0.42380 22.20600 4.94000 2.58800 # H2741 + 2742 914 2 0.42380 20.63300 5.16500 2.21800 # H2742 + 2743 915 1 -0.84760 12.65300 7.73400 23.02000 # O2743 + 2744 915 2 0.42380 12.19100 8.40000 22.38300 # H2744 + 2745 915 2 0.42380 12.39200 8.02700 23.97000 # H2745 + 2746 916 1 -0.84760 -0.66500 21.80500 21.46200 # O2746 + 2747 916 2 0.42380 -1.10200 22.67900 21.07800 # H2747 + 2748 916 2 0.42380 -1.19000 20.99900 21.19000 # H2748 + 2749 917 1 -0.84760 5.73400 5.98600 20.23700 # O2749 + 2750 917 2 0.42380 5.70900 6.88000 20.63400 # H2750 + 2751 917 2 0.42380 6.69000 5.76400 20.57400 # H2751 + 2752 918 1 -0.84760 15.59400 30.01200 11.74600 # O2752 + 2753 918 2 0.42380 15.78000 30.97900 11.49300 # H2753 + 2754 918 2 0.42380 15.90000 29.44300 10.93800 # H2754 + 2755 919 1 -0.84760 22.53800 19.33000 4.21800 # O2755 + 2756 919 2 0.42380 22.12100 19.18100 5.12300 # H2756 + 2757 919 2 0.42380 23.50600 19.10200 4.32400 # H2757 + 2758 920 1 -0.84760 9.56400 25.74000 17.31700 # O2758 + 2759 920 2 0.42380 8.65500 25.27600 17.30500 # H2759 + 2760 920 2 0.42380 10.14900 25.23900 18.02200 # H2760 + 2761 921 1 -0.84760 14.28400 10.92800 27.99100 # O2761 + 2762 921 2 0.42380 13.76500 11.60700 28.49000 # H2762 + 2763 921 2 0.42380 15.24200 10.84100 28.24500 # H2763 + 2764 922 1 -0.84760 9.34600 15.22700 15.34500 # O2764 + 2765 922 2 0.42380 9.19100 15.95800 16.01200 # H2765 + 2766 922 2 0.42380 9.40500 15.73200 14.48100 # H2766 + 2767 923 1 -0.84760 16.63400 29.65300 15.00300 # O2767 + 2768 923 2 0.42380 16.63300 30.66600 15.05700 # H2768 + 2769 923 2 0.42380 17.52000 29.34800 15.36800 # H2769 + 2770 924 1 -0.84760 2.49000 11.86300 10.53200 # O2770 + 2771 924 2 0.42380 2.85800 12.68100 11.17300 # H2771 + 2772 924 2 0.42380 2.50300 11.14700 11.27800 # H2772 + 2773 925 1 -0.84760 1.71400 20.68000 20.46600 # O2773 + 2774 925 2 0.42380 0.92600 21.18300 20.72000 # H2774 + 2775 925 2 0.42380 2.35900 21.12000 21.05300 # H2775 + 2776 926 1 -0.84760 10.98300 7.57400 -0.71500 # O2776 + 2777 926 2 0.42380 11.77700 7.35000 -1.20400 # H2777 + 2778 926 2 0.42380 10.53000 8.33000 -1.23100 # H2778 + 2779 927 1 -0.84760 13.20700 27.26500 4.50000 # O2779 + 2780 927 2 0.42380 13.93500 26.65300 4.78400 # H2780 + 2781 927 2 0.42380 13.55600 28.04400 3.89100 # H2781 + 2782 928 1 -0.84760 -0.46800 11.41300 11.34800 # O2782 + 2783 928 2 0.42380 0.29400 11.96100 10.94600 # H2783 + 2784 928 2 0.42380 -1.25300 11.11600 10.80700 # H2784 + 2785 929 1 -0.84760 15.77800 19.10800 11.50500 # O2785 + 2786 929 2 0.42380 15.80200 20.07200 11.08600 # H2786 + 2787 929 2 0.42380 15.25400 18.50500 10.83500 # H2787 + 2788 930 1 -0.84760 -0.35200 2.12700 2.31100 # O2788 + 2789 930 2 0.42380 -0.23500 1.67700 1.42300 # H2789 + 2790 930 2 0.42380 0.21100 2.95400 2.28200 # H2790 + 2791 931 1 -0.84760 22.05700 3.67900 8.65300 # O2791 + 2792 931 2 0.42380 22.20400 3.81800 7.65000 # H2792 + 2793 931 2 0.42380 21.38600 4.30700 9.15700 # H2793 + 2794 932 1 -0.84760 20.63000 18.22700 6.35000 # O2794 + 2795 932 2 0.42380 20.72300 17.56000 5.60500 # H2795 + 2796 932 2 0.42380 21.59700 18.38300 6.57900 # H2796 + 2797 933 1 -0.84760 10.33600 14.73200 29.18100 # O2797 + 2798 933 2 0.42380 11.21500 15.22900 28.92900 # H2798 + 2799 933 2 0.42380 9.70000 15.50300 28.86600 # H2799 + 2800 934 1 -0.84760 9.00000 16.90300 22.63500 # O2800 + 2801 934 2 0.42380 9.63800 16.85800 23.56400 # H2801 + 2802 934 2 0.42380 9.35700 17.71900 22.10000 # H2802 + 2803 935 1 -0.84760 18.72600 6.63300 17.16400 # O2803 + 2804 935 2 0.42380 17.72400 6.36500 17.23700 # H2804 + 2805 935 2 0.42380 18.76000 7.63400 16.96200 # H2805 + 2806 936 1 -0.84760 6.15100 19.41500 13.49200 # O2806 + 2807 936 2 0.42380 6.97600 19.09700 13.10800 # H2807 + 2808 936 2 0.42380 5.56400 19.60900 12.65100 # H2808 + 2809 937 1 -0.84760 5.17700 20.76200 16.11500 # O2809 + 2810 937 2 0.42380 5.98100 20.79700 15.46000 # H2810 + 2811 937 2 0.42380 4.21100 20.80200 15.58700 # H2811 + 2812 938 1 -0.84760 -0.80000 21.79300 -0.70400 # O2812 + 2813 938 2 0.42380 -1.82200 21.88600 -0.76200 # H2813 + 2814 938 2 0.42380 -0.52100 21.16000 -1.43000 # H2814 + 2815 939 1 -0.84760 24.75000 4.40000 5.35500 # O2815 + 2816 939 2 0.42380 25.42300 4.24100 4.62900 # H2816 + 2817 939 2 0.42380 24.33000 3.50200 5.56200 # H2817 + 2818 940 1 -0.84760 26.38700 10.98700 1.37700 # O2818 + 2819 940 2 0.42380 27.02400 10.83700 2.14100 # H2819 + 2820 940 2 0.42380 26.93000 11.40200 0.57500 # H2820 + 2821 941 1 -0.84760 19.70000 14.87400 6.04800 # O2821 + 2822 941 2 0.42380 19.49700 14.39500 6.90200 # H2822 + 2823 941 2 0.42380 18.85200 14.73300 5.51900 # H2823 + 2824 942 1 -0.84760 0.67000 19.62200 14.19600 # O2824 + 2825 942 2 0.42380 0.16700 19.21600 14.98100 # H2825 + 2826 942 2 0.42380 -0.04400 20.33000 14.02300 # H2826 + 2827 943 1 -0.84760 4.85500 -0.97200 29.97500 # O2827 + 2828 943 2 0.42380 4.13800 -0.34800 29.74500 # H2828 + 2829 943 2 0.42380 4.59500 -1.27000 30.90600 # H2829 + 2830 944 1 -0.84760 11.55400 -0.78500 4.88300 # O2830 + 2831 944 2 0.42380 12.20500 -1.56800 5.10300 # H2831 + 2832 944 2 0.42380 12.04700 -0.13900 4.28200 # H2832 + 2833 945 1 -0.84760 10.68200 20.44500 9.63900 # O2833 + 2834 945 2 0.42380 10.96500 20.47600 8.67100 # H2834 + 2835 945 2 0.42380 10.09900 21.33000 9.66700 # H2835 + 2836 946 1 -0.84760 9.43500 28.83400 12.17100 # O2836 + 2837 946 2 0.42380 10.23300 28.48000 11.62600 # H2837 + 2838 946 2 0.42380 9.70700 29.71600 12.68300 # H2838 + 2839 947 1 -0.84760 24.42900 15.38000 15.37300 # O2839 + 2840 947 2 0.42380 24.73800 16.32600 15.59700 # H2840 + 2841 947 2 0.42380 23.52700 15.54000 14.96200 # H2841 + 2842 948 1 -0.84760 28.53700 3.45800 10.49200 # O2842 + 2843 948 2 0.42380 27.97200 2.81900 9.98300 # H2843 + 2844 948 2 0.42380 28.10700 4.40200 10.39900 # H2844 + 2845 949 1 -0.84760 23.18600 26.69300 21.30600 # O2845 + 2846 949 2 0.42380 22.69800 25.99500 20.76100 # H2846 + 2847 949 2 0.42380 22.67300 26.92500 22.19500 # H2847 + 2848 950 1 -0.84760 29.35700 5.29100 22.99300 # O2848 + 2849 950 2 0.42380 28.53700 5.31300 22.33100 # H2849 + 2850 950 2 0.42380 30.05900 4.53300 22.62400 # H2850 + 2851 951 1 -0.84760 3.26000 21.15000 14.57200 # O2851 + 2852 951 2 0.42380 3.40500 21.94100 13.87800 # H2852 + 2853 951 2 0.42380 2.32200 20.78800 14.44200 # H2853 + 2854 952 1 -0.84760 28.70500 14.28000 13.80700 # O2854 + 2855 952 2 0.42380 29.43900 13.68300 14.21800 # H2855 + 2856 952 2 0.42380 27.90500 14.15300 14.48200 # H2856 + 2857 953 1 -0.84760 3.74200 28.83400 13.44000 # O2857 + 2858 953 2 0.42380 3.46400 29.57900 14.08200 # H2858 + 2859 953 2 0.42380 4.73500 28.72500 13.61800 # H2859 + 2860 954 1 -0.84760 19.87600 20.34500 12.64100 # O2860 + 2861 954 2 0.42380 18.83200 20.11900 12.67200 # H2861 + 2862 954 2 0.42380 19.86900 20.91200 11.81300 # H2862 + 2863 955 1 -0.84760 2.81200 16.09900 24.66600 # O2863 + 2864 955 2 0.42380 3.80800 16.18900 24.40500 # H2864 + 2865 955 2 0.42380 2.31700 15.22100 24.52100 # H2865 + 2866 956 1 -0.84760 22.68500 25.32700 26.75400 # O2866 + 2867 956 2 0.42380 21.85800 25.65800 27.12300 # H2867 + 2868 956 2 0.42380 22.68700 25.72400 25.80900 # H2868 + 2869 957 1 -0.84760 17.33800 18.81900 8.73000 # O2869 + 2870 957 2 0.42380 17.73800 19.57000 8.27200 # H2870 + 2871 957 2 0.42380 16.54400 19.16600 9.08000 # H2871 + 2872 958 1 -0.84760 10.48700 27.75000 14.43100 # O2872 + 2873 958 2 0.42380 10.60400 27.95800 13.42400 # H2873 + 2874 958 2 0.42380 9.52300 27.92700 14.58000 # H2874 + 2875 959 1 -0.84760 28.15200 11.71000 12.35700 # O2875 + 2876 959 2 0.42380 28.31400 12.37800 13.17700 # H2876 + 2877 959 2 0.42380 29.07200 11.76800 11.94400 # H2877 + 2878 960 1 -0.84760 0.81100 14.61800 27.22200 # O2878 + 2879 960 2 0.42380 1.55400 14.19000 26.70400 # H2879 + 2880 960 2 0.42380 0.28100 15.11800 26.54500 # H2880 + 2881 961 1 -0.84760 17.70900 6.95200 3.29300 # O2881 + 2882 961 2 0.42380 16.87100 6.55000 2.84100 # H2882 + 2883 961 2 0.42380 17.50200 7.94400 3.11300 # H2883 + 2884 962 1 -0.84760 4.26200 -0.02300 14.65800 # O2884 + 2885 962 2 0.42380 4.57300 0.57700 15.33200 # H2885 + 2886 962 2 0.42380 3.76700 0.51300 13.90800 # H2886 + 2887 963 1 -0.84760 11.58300 18.56700 3.53200 # O2887 + 2888 963 2 0.42380 11.24100 18.02700 2.77300 # H2888 + 2889 963 2 0.42380 12.54700 18.36500 3.77400 # H2889 + 2890 964 1 -0.84760 0.28400 27.96600 9.95200 # O2890 + 2891 964 2 0.42380 -0.61700 27.77600 10.28200 # H2891 + 2892 964 2 0.42380 0.90600 27.92100 10.73700 # H2892 + 2893 965 1 -0.84760 2.86300 14.32900 3.84300 # O2893 + 2894 965 2 0.42380 2.06700 14.55900 3.34300 # H2894 + 2895 965 2 0.42380 2.47100 14.46900 4.81000 # H2895 + 2896 966 1 -0.84760 5.81300 25.66500 7.58200 # O2896 + 2897 966 2 0.42380 6.54500 26.29500 7.76000 # H2897 + 2898 966 2 0.42380 5.40200 25.95500 6.72600 # H2898 + 2899 967 1 -0.84760 27.61900 18.33900 26.23400 # O2899 + 2900 967 2 0.42380 27.83600 19.09700 26.83800 # H2900 + 2901 967 2 0.42380 27.79900 17.50200 26.76300 # H2901 + 2902 968 1 -0.84760 28.15500 21.08800 10.10000 # O2902 + 2903 968 2 0.42380 27.30900 20.54500 10.01000 # H2903 + 2904 968 2 0.42380 28.66500 20.74000 10.90400 # H2904 + 2905 969 1 -0.84760 14.10600 7.19100 29.21700 # O2905 + 2906 969 2 0.42380 13.84100 7.15400 30.13100 # H2906 + 2907 969 2 0.42380 14.49600 6.26300 29.09300 # H2907 + 2908 970 1 -0.84760 22.89900 28.88500 8.08900 # O2908 + 2909 970 2 0.42380 22.57700 29.91800 8.11200 # H2909 + 2910 970 2 0.42380 22.40100 28.22300 7.48300 # H2910 + 2911 971 1 -0.84760 24.28100 7.57300 19.86400 # O2911 + 2912 971 2 0.42380 24.34900 8.63500 19.85500 # H2912 + 2913 971 2 0.42380 23.36000 7.31300 20.28200 # H2913 + 2914 972 1 -0.84760 14.69000 14.93000 0.56800 # O2914 + 2915 972 2 0.42380 15.34700 15.32300 1.23300 # H2915 + 2916 972 2 0.42380 13.79800 15.01700 1.02400 # H2916 + 2917 973 1 -0.84760 21.92500 20.22800 19.85100 # O2917 + 2918 973 2 0.42380 21.29300 20.93200 20.09200 # H2918 + 2919 973 2 0.42380 22.46800 20.18300 20.68300 # H2919 + 2920 974 1 -0.84760 9.36100 4.79600 19.61900 # O2920 + 2921 974 2 0.42380 8.99500 5.22200 18.77600 # H2921 + 2922 974 2 0.42380 10.19300 5.32400 19.45300 # H2922 + 2923 975 1 -0.84760 27.01500 7.03400 2.22100 # O2923 + 2924 975 2 0.42380 28.04900 7.10900 2.11500 # H2924 + 2925 975 2 0.42380 26.73100 7.87400 1.69400 # H2925 + 2926 976 1 -0.84760 3.68400 25.08900 23.94900 # O2926 + 2927 976 2 0.42380 3.37000 24.45900 24.65800 # H2927 + 2928 976 2 0.42380 4.71700 25.12100 23.99000 # H2928 + 2929 977 1 -0.84760 15.56400 28.53900 -0.79300 # O2929 + 2930 977 2 0.42380 15.51600 27.90500 -1.53600 # H2930 + 2931 977 2 0.42380 15.91500 27.91800 -0.04900 # H2931 + 2932 978 1 -0.84760 11.59700 12.21700 12.44700 # O2932 + 2933 978 2 0.42380 12.58500 11.83500 12.18100 # H2933 + 2934 978 2 0.42380 11.75300 13.09700 12.93800 # H2934 + 2935 979 1 -0.84760 25.65600 21.36700 6.38200 # O2935 + 2936 979 2 0.42380 25.71400 20.46600 6.86800 # H2936 + 2937 979 2 0.42380 26.47900 21.85000 6.73200 # H2937 + 2938 980 1 -0.84760 24.32900 6.83900 3.81300 # O2938 + 2939 980 2 0.42380 24.69400 5.94000 4.12200 # H2939 + 2940 980 2 0.42380 23.34000 6.78200 3.77900 # H2940 + 2941 981 1 -0.84760 0.86900 4.76800 3.28200 # O2941 + 2942 981 2 0.42380 0.96600 3.72200 3.49000 # H2942 + 2943 981 2 0.42380 0.85200 5.28800 4.15800 # H2943 + 2944 982 1 -0.84760 19.13800 23.57400 1.38400 # O2944 + 2945 982 2 0.42380 18.88900 24.55400 1.39300 # H2945 + 2946 982 2 0.42380 19.80700 23.39200 2.11900 # H2946 + 2947 983 1 -0.84760 6.53100 15.10900 26.06900 # O2947 + 2948 983 2 0.42380 6.10100 14.24000 26.22500 # H2948 + 2949 983 2 0.42380 7.57600 15.07800 25.95300 # H2949 + 2950 984 1 -0.84760 26.23600 8.42900 26.73400 # O2950 + 2951 984 2 0.42380 25.48000 8.39800 27.39900 # H2951 + 2952 984 2 0.42380 26.07400 7.74800 26.04700 # H2952 + 2953 985 1 -0.84760 24.57800 5.44600 8.08000 # O2953 + 2954 985 2 0.42380 24.47700 5.17400 7.05100 # H2954 + 2955 985 2 0.42380 23.65100 5.21700 8.41700 # H2955 + 2956 986 1 -0.84760 17.70800 1.71000 25.85400 # O2956 + 2957 986 2 0.42380 17.94700 1.97800 24.88200 # H2957 + 2958 986 2 0.42380 17.92600 0.76600 26.16300 # H2958 + 2959 987 1 -0.84760 3.39800 27.20600 22.11100 # O2959 + 2960 987 2 0.42380 3.61700 27.64700 21.25400 # H2960 + 2961 987 2 0.42380 3.92700 26.36400 22.40100 # H2961 + 2962 988 1 -0.84760 15.53600 18.22400 30.10500 # O2962 + 2963 988 2 0.42380 16.26400 18.07900 29.41900 # H2963 + 2964 988 2 0.42380 15.23600 17.22900 30.21600 # H2964 + 2965 989 1 -0.84760 18.67400 7.96200 20.94000 # O2965 + 2966 989 2 0.42380 18.15100 8.33300 20.11200 # H2966 + 2967 989 2 0.42380 17.97400 7.29100 21.31300 # H2967 + 2968 990 1 -0.84760 25.40900 21.16600 9.51300 # O2968 + 2969 990 2 0.42380 25.79200 21.14100 8.59800 # H2969 + 2970 990 2 0.42380 25.33300 22.17200 9.72600 # H2970 + 2971 991 1 -0.84760 19.75300 11.42500 13.98700 # O2971 + 2972 991 2 0.42380 19.83500 10.56700 14.48800 # H2972 + 2973 991 2 0.42380 19.00900 11.20900 13.35300 # H2973 + 2974 992 1 -0.84760 17.63800 13.68500 22.98500 # O2974 + 2975 992 2 0.42380 18.21300 12.84500 22.86900 # H2975 + 2976 992 2 0.42380 16.73000 13.27000 23.12100 # H2976 + 2977 993 1 -0.84760 27.39900 29.95700 26.23000 # O2977 + 2978 993 2 0.42380 27.70800 30.93500 26.31300 # H2978 + 2979 993 2 0.42380 26.69500 29.76400 26.96200 # H2979 + 2980 994 1 -0.84760 0.92500 26.26400 23.00600 # O2980 + 2981 994 2 0.42380 1.16900 26.54200 22.08600 # H2981 + 2982 994 2 0.42380 1.24800 26.99400 23.63500 # H2982 + 2983 995 1 -0.84760 10.67600 11.09800 15.98400 # O2983 + 2984 995 2 0.42380 10.30800 11.91200 16.45100 # H2984 + 2985 995 2 0.42380 9.86300 10.52900 15.64000 # H2985 + 2986 996 1 -0.84760 10.01800 17.14400 28.86700 # O2986 + 2987 996 2 0.42380 10.79400 17.22300 28.11500 # H2987 + 2988 996 2 0.42380 9.13000 17.25600 28.26800 # H2988 + 2989 997 1 -0.84760 7.67500 20.66300 23.83000 # O2989 + 2990 997 2 0.42380 8.37200 21.38200 24.04200 # H2990 + 2991 997 2 0.42380 7.87000 19.70500 24.21700 # H2991 + 2992 998 1 -0.84760 14.19000 12.06800 12.40500 # O2992 + 2993 998 2 0.42380 14.44200 12.51300 11.44100 # H2993 + 2994 998 2 0.42380 14.95300 12.46900 12.94900 # H2994 + 2995 999 1 -0.84760 29.27300 7.39000 0.56900 # O2995 + 2996 999 2 0.42380 28.67000 6.78700 0.03200 # H2996 + 2997 999 2 0.42380 29.05800 8.33200 0.22800 # H2997 + 2998 1000 1 -0.84760 12.04100 24.19700 27.58700 # O2998 + 2999 1000 2 0.42380 11.79500 24.66500 26.69800 # H2999 + 3000 1000 2 0.42380 11.47500 23.36800 27.42600 # H3000 + +Bonds + + 1 1 1 2 + 2 1 1 3 + 3 1 4 5 + 4 1 4 6 + 5 1 7 8 + 6 1 7 9 + 7 1 10 11 + 8 1 10 12 + 9 1 13 14 + 10 1 13 15 + 11 1 16 17 + 12 1 16 18 + 13 1 19 20 + 14 1 19 21 + 15 1 22 23 + 16 1 22 24 + 17 1 25 26 + 18 1 25 27 + 19 1 28 29 + 20 1 28 30 + 21 1 31 32 + 22 1 31 33 + 23 1 34 35 + 24 1 34 36 + 25 1 37 38 + 26 1 37 39 + 27 1 40 41 + 28 1 40 42 + 29 1 43 44 + 30 1 43 45 + 31 1 46 47 + 32 1 46 48 + 33 1 49 50 + 34 1 49 51 + 35 1 52 53 + 36 1 52 54 + 37 1 55 56 + 38 1 55 57 + 39 1 58 59 + 40 1 58 60 + 41 1 61 62 + 42 1 61 63 + 43 1 64 65 + 44 1 64 66 + 45 1 67 68 + 46 1 67 69 + 47 1 70 71 + 48 1 70 72 + 49 1 73 74 + 50 1 73 75 + 51 1 76 77 + 52 1 76 78 + 53 1 79 80 + 54 1 79 81 + 55 1 82 83 + 56 1 82 84 + 57 1 85 86 + 58 1 85 87 + 59 1 88 89 + 60 1 88 90 + 61 1 91 92 + 62 1 91 93 + 63 1 94 95 + 64 1 94 96 + 65 1 97 98 + 66 1 97 99 + 67 1 100 101 + 68 1 100 102 + 69 1 103 104 + 70 1 103 105 + 71 1 106 107 + 72 1 106 108 + 73 1 109 110 + 74 1 109 111 + 75 1 112 113 + 76 1 112 114 + 77 1 115 116 + 78 1 115 117 + 79 1 118 119 + 80 1 118 120 + 81 1 121 122 + 82 1 121 123 + 83 1 124 125 + 84 1 124 126 + 85 1 127 128 + 86 1 127 129 + 87 1 130 131 + 88 1 130 132 + 89 1 133 134 + 90 1 133 135 + 91 1 136 137 + 92 1 136 138 + 93 1 139 140 + 94 1 139 141 + 95 1 142 143 + 96 1 142 144 + 97 1 145 146 + 98 1 145 147 + 99 1 148 149 + 100 1 148 150 + 101 1 151 152 + 102 1 151 153 + 103 1 154 155 + 104 1 154 156 + 105 1 157 158 + 106 1 157 159 + 107 1 160 161 + 108 1 160 162 + 109 1 163 164 + 110 1 163 165 + 111 1 166 167 + 112 1 166 168 + 113 1 169 170 + 114 1 169 171 + 115 1 172 173 + 116 1 172 174 + 117 1 175 176 + 118 1 175 177 + 119 1 178 179 + 120 1 178 180 + 121 1 181 182 + 122 1 181 183 + 123 1 184 185 + 124 1 184 186 + 125 1 187 188 + 126 1 187 189 + 127 1 190 191 + 128 1 190 192 + 129 1 193 194 + 130 1 193 195 + 131 1 196 197 + 132 1 196 198 + 133 1 199 200 + 134 1 199 201 + 135 1 202 203 + 136 1 202 204 + 137 1 205 206 + 138 1 205 207 + 139 1 208 209 + 140 1 208 210 + 141 1 211 212 + 142 1 211 213 + 143 1 214 215 + 144 1 214 216 + 145 1 217 218 + 146 1 217 219 + 147 1 220 221 + 148 1 220 222 + 149 1 223 224 + 150 1 223 225 + 151 1 226 227 + 152 1 226 228 + 153 1 229 230 + 154 1 229 231 + 155 1 232 233 + 156 1 232 234 + 157 1 235 236 + 158 1 235 237 + 159 1 238 239 + 160 1 238 240 + 161 1 241 242 + 162 1 241 243 + 163 1 244 245 + 164 1 244 246 + 165 1 247 248 + 166 1 247 249 + 167 1 250 251 + 168 1 250 252 + 169 1 253 254 + 170 1 253 255 + 171 1 256 257 + 172 1 256 258 + 173 1 259 260 + 174 1 259 261 + 175 1 262 263 + 176 1 262 264 + 177 1 265 266 + 178 1 265 267 + 179 1 268 269 + 180 1 268 270 + 181 1 271 272 + 182 1 271 273 + 183 1 274 275 + 184 1 274 276 + 185 1 277 278 + 186 1 277 279 + 187 1 280 281 + 188 1 280 282 + 189 1 283 284 + 190 1 283 285 + 191 1 286 287 + 192 1 286 288 + 193 1 289 290 + 194 1 289 291 + 195 1 292 293 + 196 1 292 294 + 197 1 295 296 + 198 1 295 297 + 199 1 298 299 + 200 1 298 300 + 201 1 301 302 + 202 1 301 303 + 203 1 304 305 + 204 1 304 306 + 205 1 307 308 + 206 1 307 309 + 207 1 310 311 + 208 1 310 312 + 209 1 313 314 + 210 1 313 315 + 211 1 316 317 + 212 1 316 318 + 213 1 319 320 + 214 1 319 321 + 215 1 322 323 + 216 1 322 324 + 217 1 325 326 + 218 1 325 327 + 219 1 328 329 + 220 1 328 330 + 221 1 331 332 + 222 1 331 333 + 223 1 334 335 + 224 1 334 336 + 225 1 337 338 + 226 1 337 339 + 227 1 340 341 + 228 1 340 342 + 229 1 343 344 + 230 1 343 345 + 231 1 346 347 + 232 1 346 348 + 233 1 349 350 + 234 1 349 351 + 235 1 352 353 + 236 1 352 354 + 237 1 355 356 + 238 1 355 357 + 239 1 358 359 + 240 1 358 360 + 241 1 361 362 + 242 1 361 363 + 243 1 364 365 + 244 1 364 366 + 245 1 367 368 + 246 1 367 369 + 247 1 370 371 + 248 1 370 372 + 249 1 373 374 + 250 1 373 375 + 251 1 376 377 + 252 1 376 378 + 253 1 379 380 + 254 1 379 381 + 255 1 382 383 + 256 1 382 384 + 257 1 385 386 + 258 1 385 387 + 259 1 388 389 + 260 1 388 390 + 261 1 391 392 + 262 1 391 393 + 263 1 394 395 + 264 1 394 396 + 265 1 397 398 + 266 1 397 399 + 267 1 400 401 + 268 1 400 402 + 269 1 403 404 + 270 1 403 405 + 271 1 406 407 + 272 1 406 408 + 273 1 409 410 + 274 1 409 411 + 275 1 412 413 + 276 1 412 414 + 277 1 415 416 + 278 1 415 417 + 279 1 418 419 + 280 1 418 420 + 281 1 421 422 + 282 1 421 423 + 283 1 424 425 + 284 1 424 426 + 285 1 427 428 + 286 1 427 429 + 287 1 430 431 + 288 1 430 432 + 289 1 433 434 + 290 1 433 435 + 291 1 436 437 + 292 1 436 438 + 293 1 439 440 + 294 1 439 441 + 295 1 442 443 + 296 1 442 444 + 297 1 445 446 + 298 1 445 447 + 299 1 448 449 + 300 1 448 450 + 301 1 451 452 + 302 1 451 453 + 303 1 454 455 + 304 1 454 456 + 305 1 457 458 + 306 1 457 459 + 307 1 460 461 + 308 1 460 462 + 309 1 463 464 + 310 1 463 465 + 311 1 466 467 + 312 1 466 468 + 313 1 469 470 + 314 1 469 471 + 315 1 472 473 + 316 1 472 474 + 317 1 475 476 + 318 1 475 477 + 319 1 478 479 + 320 1 478 480 + 321 1 481 482 + 322 1 481 483 + 323 1 484 485 + 324 1 484 486 + 325 1 487 488 + 326 1 487 489 + 327 1 490 491 + 328 1 490 492 + 329 1 493 494 + 330 1 493 495 + 331 1 496 497 + 332 1 496 498 + 333 1 499 500 + 334 1 499 501 + 335 1 502 503 + 336 1 502 504 + 337 1 505 506 + 338 1 505 507 + 339 1 508 509 + 340 1 508 510 + 341 1 511 512 + 342 1 511 513 + 343 1 514 515 + 344 1 514 516 + 345 1 517 518 + 346 1 517 519 + 347 1 520 521 + 348 1 520 522 + 349 1 523 524 + 350 1 523 525 + 351 1 526 527 + 352 1 526 528 + 353 1 529 530 + 354 1 529 531 + 355 1 532 533 + 356 1 532 534 + 357 1 535 536 + 358 1 535 537 + 359 1 538 539 + 360 1 538 540 + 361 1 541 542 + 362 1 541 543 + 363 1 544 545 + 364 1 544 546 + 365 1 547 548 + 366 1 547 549 + 367 1 550 551 + 368 1 550 552 + 369 1 553 554 + 370 1 553 555 + 371 1 556 557 + 372 1 556 558 + 373 1 559 560 + 374 1 559 561 + 375 1 562 563 + 376 1 562 564 + 377 1 565 566 + 378 1 565 567 + 379 1 568 569 + 380 1 568 570 + 381 1 571 572 + 382 1 571 573 + 383 1 574 575 + 384 1 574 576 + 385 1 577 578 + 386 1 577 579 + 387 1 580 581 + 388 1 580 582 + 389 1 583 584 + 390 1 583 585 + 391 1 586 587 + 392 1 586 588 + 393 1 589 590 + 394 1 589 591 + 395 1 592 593 + 396 1 592 594 + 397 1 595 596 + 398 1 595 597 + 399 1 598 599 + 400 1 598 600 + 401 1 601 602 + 402 1 601 603 + 403 1 604 605 + 404 1 604 606 + 405 1 607 608 + 406 1 607 609 + 407 1 610 611 + 408 1 610 612 + 409 1 613 614 + 410 1 613 615 + 411 1 616 617 + 412 1 616 618 + 413 1 619 620 + 414 1 619 621 + 415 1 622 623 + 416 1 622 624 + 417 1 625 626 + 418 1 625 627 + 419 1 628 629 + 420 1 628 630 + 421 1 631 632 + 422 1 631 633 + 423 1 634 635 + 424 1 634 636 + 425 1 637 638 + 426 1 637 639 + 427 1 640 641 + 428 1 640 642 + 429 1 643 644 + 430 1 643 645 + 431 1 646 647 + 432 1 646 648 + 433 1 649 650 + 434 1 649 651 + 435 1 652 653 + 436 1 652 654 + 437 1 655 656 + 438 1 655 657 + 439 1 658 659 + 440 1 658 660 + 441 1 661 662 + 442 1 661 663 + 443 1 664 665 + 444 1 664 666 + 445 1 667 668 + 446 1 667 669 + 447 1 670 671 + 448 1 670 672 + 449 1 673 674 + 450 1 673 675 + 451 1 676 677 + 452 1 676 678 + 453 1 679 680 + 454 1 679 681 + 455 1 682 683 + 456 1 682 684 + 457 1 685 686 + 458 1 685 687 + 459 1 688 689 + 460 1 688 690 + 461 1 691 692 + 462 1 691 693 + 463 1 694 695 + 464 1 694 696 + 465 1 697 698 + 466 1 697 699 + 467 1 700 701 + 468 1 700 702 + 469 1 703 704 + 470 1 703 705 + 471 1 706 707 + 472 1 706 708 + 473 1 709 710 + 474 1 709 711 + 475 1 712 713 + 476 1 712 714 + 477 1 715 716 + 478 1 715 717 + 479 1 718 719 + 480 1 718 720 + 481 1 721 722 + 482 1 721 723 + 483 1 724 725 + 484 1 724 726 + 485 1 727 728 + 486 1 727 729 + 487 1 730 731 + 488 1 730 732 + 489 1 733 734 + 490 1 733 735 + 491 1 736 737 + 492 1 736 738 + 493 1 739 740 + 494 1 739 741 + 495 1 742 743 + 496 1 742 744 + 497 1 745 746 + 498 1 745 747 + 499 1 748 749 + 500 1 748 750 + 501 1 751 752 + 502 1 751 753 + 503 1 754 755 + 504 1 754 756 + 505 1 757 758 + 506 1 757 759 + 507 1 760 761 + 508 1 760 762 + 509 1 763 764 + 510 1 763 765 + 511 1 766 767 + 512 1 766 768 + 513 1 769 770 + 514 1 769 771 + 515 1 772 773 + 516 1 772 774 + 517 1 775 776 + 518 1 775 777 + 519 1 778 779 + 520 1 778 780 + 521 1 781 782 + 522 1 781 783 + 523 1 784 785 + 524 1 784 786 + 525 1 787 788 + 526 1 787 789 + 527 1 790 791 + 528 1 790 792 + 529 1 793 794 + 530 1 793 795 + 531 1 796 797 + 532 1 796 798 + 533 1 799 800 + 534 1 799 801 + 535 1 802 803 + 536 1 802 804 + 537 1 805 806 + 538 1 805 807 + 539 1 808 809 + 540 1 808 810 + 541 1 811 812 + 542 1 811 813 + 543 1 814 815 + 544 1 814 816 + 545 1 817 818 + 546 1 817 819 + 547 1 820 821 + 548 1 820 822 + 549 1 823 824 + 550 1 823 825 + 551 1 826 827 + 552 1 826 828 + 553 1 829 830 + 554 1 829 831 + 555 1 832 833 + 556 1 832 834 + 557 1 835 836 + 558 1 835 837 + 559 1 838 839 + 560 1 838 840 + 561 1 841 842 + 562 1 841 843 + 563 1 844 845 + 564 1 844 846 + 565 1 847 848 + 566 1 847 849 + 567 1 850 851 + 568 1 850 852 + 569 1 853 854 + 570 1 853 855 + 571 1 856 857 + 572 1 856 858 + 573 1 859 860 + 574 1 859 861 + 575 1 862 863 + 576 1 862 864 + 577 1 865 866 + 578 1 865 867 + 579 1 868 869 + 580 1 868 870 + 581 1 871 872 + 582 1 871 873 + 583 1 874 875 + 584 1 874 876 + 585 1 877 878 + 586 1 877 879 + 587 1 880 881 + 588 1 880 882 + 589 1 883 884 + 590 1 883 885 + 591 1 886 887 + 592 1 886 888 + 593 1 889 890 + 594 1 889 891 + 595 1 892 893 + 596 1 892 894 + 597 1 895 896 + 598 1 895 897 + 599 1 898 899 + 600 1 898 900 + 601 1 901 902 + 602 1 901 903 + 603 1 904 905 + 604 1 904 906 + 605 1 907 908 + 606 1 907 909 + 607 1 910 911 + 608 1 910 912 + 609 1 913 914 + 610 1 913 915 + 611 1 916 917 + 612 1 916 918 + 613 1 919 920 + 614 1 919 921 + 615 1 922 923 + 616 1 922 924 + 617 1 925 926 + 618 1 925 927 + 619 1 928 929 + 620 1 928 930 + 621 1 931 932 + 622 1 931 933 + 623 1 934 935 + 624 1 934 936 + 625 1 937 938 + 626 1 937 939 + 627 1 940 941 + 628 1 940 942 + 629 1 943 944 + 630 1 943 945 + 631 1 946 947 + 632 1 946 948 + 633 1 949 950 + 634 1 949 951 + 635 1 952 953 + 636 1 952 954 + 637 1 955 956 + 638 1 955 957 + 639 1 958 959 + 640 1 958 960 + 641 1 961 962 + 642 1 961 963 + 643 1 964 965 + 644 1 964 966 + 645 1 967 968 + 646 1 967 969 + 647 1 970 971 + 648 1 970 972 + 649 1 973 974 + 650 1 973 975 + 651 1 976 977 + 652 1 976 978 + 653 1 979 980 + 654 1 979 981 + 655 1 982 983 + 656 1 982 984 + 657 1 985 986 + 658 1 985 987 + 659 1 988 989 + 660 1 988 990 + 661 1 991 992 + 662 1 991 993 + 663 1 994 995 + 664 1 994 996 + 665 1 997 998 + 666 1 997 999 + 667 1 1000 1001 + 668 1 1000 1002 + 669 1 1003 1004 + 670 1 1003 1005 + 671 1 1006 1007 + 672 1 1006 1008 + 673 1 1009 1010 + 674 1 1009 1011 + 675 1 1012 1013 + 676 1 1012 1014 + 677 1 1015 1016 + 678 1 1015 1017 + 679 1 1018 1019 + 680 1 1018 1020 + 681 1 1021 1022 + 682 1 1021 1023 + 683 1 1024 1025 + 684 1 1024 1026 + 685 1 1027 1028 + 686 1 1027 1029 + 687 1 1030 1031 + 688 1 1030 1032 + 689 1 1033 1034 + 690 1 1033 1035 + 691 1 1036 1037 + 692 1 1036 1038 + 693 1 1039 1040 + 694 1 1039 1041 + 695 1 1042 1043 + 696 1 1042 1044 + 697 1 1045 1046 + 698 1 1045 1047 + 699 1 1048 1049 + 700 1 1048 1050 + 701 1 1051 1052 + 702 1 1051 1053 + 703 1 1054 1055 + 704 1 1054 1056 + 705 1 1057 1058 + 706 1 1057 1059 + 707 1 1060 1061 + 708 1 1060 1062 + 709 1 1063 1064 + 710 1 1063 1065 + 711 1 1066 1067 + 712 1 1066 1068 + 713 1 1069 1070 + 714 1 1069 1071 + 715 1 1072 1073 + 716 1 1072 1074 + 717 1 1075 1076 + 718 1 1075 1077 + 719 1 1078 1079 + 720 1 1078 1080 + 721 1 1081 1082 + 722 1 1081 1083 + 723 1 1084 1085 + 724 1 1084 1086 + 725 1 1087 1088 + 726 1 1087 1089 + 727 1 1090 1091 + 728 1 1090 1092 + 729 1 1093 1094 + 730 1 1093 1095 + 731 1 1096 1097 + 732 1 1096 1098 + 733 1 1099 1100 + 734 1 1099 1101 + 735 1 1102 1103 + 736 1 1102 1104 + 737 1 1105 1106 + 738 1 1105 1107 + 739 1 1108 1109 + 740 1 1108 1110 + 741 1 1111 1112 + 742 1 1111 1113 + 743 1 1114 1115 + 744 1 1114 1116 + 745 1 1117 1118 + 746 1 1117 1119 + 747 1 1120 1121 + 748 1 1120 1122 + 749 1 1123 1124 + 750 1 1123 1125 + 751 1 1126 1127 + 752 1 1126 1128 + 753 1 1129 1130 + 754 1 1129 1131 + 755 1 1132 1133 + 756 1 1132 1134 + 757 1 1135 1136 + 758 1 1135 1137 + 759 1 1138 1139 + 760 1 1138 1140 + 761 1 1141 1142 + 762 1 1141 1143 + 763 1 1144 1145 + 764 1 1144 1146 + 765 1 1147 1148 + 766 1 1147 1149 + 767 1 1150 1151 + 768 1 1150 1152 + 769 1 1153 1154 + 770 1 1153 1155 + 771 1 1156 1157 + 772 1 1156 1158 + 773 1 1159 1160 + 774 1 1159 1161 + 775 1 1162 1163 + 776 1 1162 1164 + 777 1 1165 1166 + 778 1 1165 1167 + 779 1 1168 1169 + 780 1 1168 1170 + 781 1 1171 1172 + 782 1 1171 1173 + 783 1 1174 1175 + 784 1 1174 1176 + 785 1 1177 1178 + 786 1 1177 1179 + 787 1 1180 1181 + 788 1 1180 1182 + 789 1 1183 1184 + 790 1 1183 1185 + 791 1 1186 1187 + 792 1 1186 1188 + 793 1 1189 1190 + 794 1 1189 1191 + 795 1 1192 1193 + 796 1 1192 1194 + 797 1 1195 1196 + 798 1 1195 1197 + 799 1 1198 1199 + 800 1 1198 1200 + 801 1 1201 1202 + 802 1 1201 1203 + 803 1 1204 1205 + 804 1 1204 1206 + 805 1 1207 1208 + 806 1 1207 1209 + 807 1 1210 1211 + 808 1 1210 1212 + 809 1 1213 1214 + 810 1 1213 1215 + 811 1 1216 1217 + 812 1 1216 1218 + 813 1 1219 1220 + 814 1 1219 1221 + 815 1 1222 1223 + 816 1 1222 1224 + 817 1 1225 1226 + 818 1 1225 1227 + 819 1 1228 1229 + 820 1 1228 1230 + 821 1 1231 1232 + 822 1 1231 1233 + 823 1 1234 1235 + 824 1 1234 1236 + 825 1 1237 1238 + 826 1 1237 1239 + 827 1 1240 1241 + 828 1 1240 1242 + 829 1 1243 1244 + 830 1 1243 1245 + 831 1 1246 1247 + 832 1 1246 1248 + 833 1 1249 1250 + 834 1 1249 1251 + 835 1 1252 1253 + 836 1 1252 1254 + 837 1 1255 1256 + 838 1 1255 1257 + 839 1 1258 1259 + 840 1 1258 1260 + 841 1 1261 1262 + 842 1 1261 1263 + 843 1 1264 1265 + 844 1 1264 1266 + 845 1 1267 1268 + 846 1 1267 1269 + 847 1 1270 1271 + 848 1 1270 1272 + 849 1 1273 1274 + 850 1 1273 1275 + 851 1 1276 1277 + 852 1 1276 1278 + 853 1 1279 1280 + 854 1 1279 1281 + 855 1 1282 1283 + 856 1 1282 1284 + 857 1 1285 1286 + 858 1 1285 1287 + 859 1 1288 1289 + 860 1 1288 1290 + 861 1 1291 1292 + 862 1 1291 1293 + 863 1 1294 1295 + 864 1 1294 1296 + 865 1 1297 1298 + 866 1 1297 1299 + 867 1 1300 1301 + 868 1 1300 1302 + 869 1 1303 1304 + 870 1 1303 1305 + 871 1 1306 1307 + 872 1 1306 1308 + 873 1 1309 1310 + 874 1 1309 1311 + 875 1 1312 1313 + 876 1 1312 1314 + 877 1 1315 1316 + 878 1 1315 1317 + 879 1 1318 1319 + 880 1 1318 1320 + 881 1 1321 1322 + 882 1 1321 1323 + 883 1 1324 1325 + 884 1 1324 1326 + 885 1 1327 1328 + 886 1 1327 1329 + 887 1 1330 1331 + 888 1 1330 1332 + 889 1 1333 1334 + 890 1 1333 1335 + 891 1 1336 1337 + 892 1 1336 1338 + 893 1 1339 1340 + 894 1 1339 1341 + 895 1 1342 1343 + 896 1 1342 1344 + 897 1 1345 1346 + 898 1 1345 1347 + 899 1 1348 1349 + 900 1 1348 1350 + 901 1 1351 1352 + 902 1 1351 1353 + 903 1 1354 1355 + 904 1 1354 1356 + 905 1 1357 1358 + 906 1 1357 1359 + 907 1 1360 1361 + 908 1 1360 1362 + 909 1 1363 1364 + 910 1 1363 1365 + 911 1 1366 1367 + 912 1 1366 1368 + 913 1 1369 1370 + 914 1 1369 1371 + 915 1 1372 1373 + 916 1 1372 1374 + 917 1 1375 1376 + 918 1 1375 1377 + 919 1 1378 1379 + 920 1 1378 1380 + 921 1 1381 1382 + 922 1 1381 1383 + 923 1 1384 1385 + 924 1 1384 1386 + 925 1 1387 1388 + 926 1 1387 1389 + 927 1 1390 1391 + 928 1 1390 1392 + 929 1 1393 1394 + 930 1 1393 1395 + 931 1 1396 1397 + 932 1 1396 1398 + 933 1 1399 1400 + 934 1 1399 1401 + 935 1 1402 1403 + 936 1 1402 1404 + 937 1 1405 1406 + 938 1 1405 1407 + 939 1 1408 1409 + 940 1 1408 1410 + 941 1 1411 1412 + 942 1 1411 1413 + 943 1 1414 1415 + 944 1 1414 1416 + 945 1 1417 1418 + 946 1 1417 1419 + 947 1 1420 1421 + 948 1 1420 1422 + 949 1 1423 1424 + 950 1 1423 1425 + 951 1 1426 1427 + 952 1 1426 1428 + 953 1 1429 1430 + 954 1 1429 1431 + 955 1 1432 1433 + 956 1 1432 1434 + 957 1 1435 1436 + 958 1 1435 1437 + 959 1 1438 1439 + 960 1 1438 1440 + 961 1 1441 1442 + 962 1 1441 1443 + 963 1 1444 1445 + 964 1 1444 1446 + 965 1 1447 1448 + 966 1 1447 1449 + 967 1 1450 1451 + 968 1 1450 1452 + 969 1 1453 1454 + 970 1 1453 1455 + 971 1 1456 1457 + 972 1 1456 1458 + 973 1 1459 1460 + 974 1 1459 1461 + 975 1 1462 1463 + 976 1 1462 1464 + 977 1 1465 1466 + 978 1 1465 1467 + 979 1 1468 1469 + 980 1 1468 1470 + 981 1 1471 1472 + 982 1 1471 1473 + 983 1 1474 1475 + 984 1 1474 1476 + 985 1 1477 1478 + 986 1 1477 1479 + 987 1 1480 1481 + 988 1 1480 1482 + 989 1 1483 1484 + 990 1 1483 1485 + 991 1 1486 1487 + 992 1 1486 1488 + 993 1 1489 1490 + 994 1 1489 1491 + 995 1 1492 1493 + 996 1 1492 1494 + 997 1 1495 1496 + 998 1 1495 1497 + 999 1 1498 1499 + 1000 1 1498 1500 + 1001 1 1501 1502 + 1002 1 1501 1503 + 1003 1 1504 1505 + 1004 1 1504 1506 + 1005 1 1507 1508 + 1006 1 1507 1509 + 1007 1 1510 1511 + 1008 1 1510 1512 + 1009 1 1513 1514 + 1010 1 1513 1515 + 1011 1 1516 1517 + 1012 1 1516 1518 + 1013 1 1519 1520 + 1014 1 1519 1521 + 1015 1 1522 1523 + 1016 1 1522 1524 + 1017 1 1525 1526 + 1018 1 1525 1527 + 1019 1 1528 1529 + 1020 1 1528 1530 + 1021 1 1531 1532 + 1022 1 1531 1533 + 1023 1 1534 1535 + 1024 1 1534 1536 + 1025 1 1537 1538 + 1026 1 1537 1539 + 1027 1 1540 1541 + 1028 1 1540 1542 + 1029 1 1543 1544 + 1030 1 1543 1545 + 1031 1 1546 1547 + 1032 1 1546 1548 + 1033 1 1549 1550 + 1034 1 1549 1551 + 1035 1 1552 1553 + 1036 1 1552 1554 + 1037 1 1555 1556 + 1038 1 1555 1557 + 1039 1 1558 1559 + 1040 1 1558 1560 + 1041 1 1561 1562 + 1042 1 1561 1563 + 1043 1 1564 1565 + 1044 1 1564 1566 + 1045 1 1567 1568 + 1046 1 1567 1569 + 1047 1 1570 1571 + 1048 1 1570 1572 + 1049 1 1573 1574 + 1050 1 1573 1575 + 1051 1 1576 1577 + 1052 1 1576 1578 + 1053 1 1579 1580 + 1054 1 1579 1581 + 1055 1 1582 1583 + 1056 1 1582 1584 + 1057 1 1585 1586 + 1058 1 1585 1587 + 1059 1 1588 1589 + 1060 1 1588 1590 + 1061 1 1591 1592 + 1062 1 1591 1593 + 1063 1 1594 1595 + 1064 1 1594 1596 + 1065 1 1597 1598 + 1066 1 1597 1599 + 1067 1 1600 1601 + 1068 1 1600 1602 + 1069 1 1603 1604 + 1070 1 1603 1605 + 1071 1 1606 1607 + 1072 1 1606 1608 + 1073 1 1609 1610 + 1074 1 1609 1611 + 1075 1 1612 1613 + 1076 1 1612 1614 + 1077 1 1615 1616 + 1078 1 1615 1617 + 1079 1 1618 1619 + 1080 1 1618 1620 + 1081 1 1621 1622 + 1082 1 1621 1623 + 1083 1 1624 1625 + 1084 1 1624 1626 + 1085 1 1627 1628 + 1086 1 1627 1629 + 1087 1 1630 1631 + 1088 1 1630 1632 + 1089 1 1633 1634 + 1090 1 1633 1635 + 1091 1 1636 1637 + 1092 1 1636 1638 + 1093 1 1639 1640 + 1094 1 1639 1641 + 1095 1 1642 1643 + 1096 1 1642 1644 + 1097 1 1645 1646 + 1098 1 1645 1647 + 1099 1 1648 1649 + 1100 1 1648 1650 + 1101 1 1651 1652 + 1102 1 1651 1653 + 1103 1 1654 1655 + 1104 1 1654 1656 + 1105 1 1657 1658 + 1106 1 1657 1659 + 1107 1 1660 1661 + 1108 1 1660 1662 + 1109 1 1663 1664 + 1110 1 1663 1665 + 1111 1 1666 1667 + 1112 1 1666 1668 + 1113 1 1669 1670 + 1114 1 1669 1671 + 1115 1 1672 1673 + 1116 1 1672 1674 + 1117 1 1675 1676 + 1118 1 1675 1677 + 1119 1 1678 1679 + 1120 1 1678 1680 + 1121 1 1681 1682 + 1122 1 1681 1683 + 1123 1 1684 1685 + 1124 1 1684 1686 + 1125 1 1687 1688 + 1126 1 1687 1689 + 1127 1 1690 1691 + 1128 1 1690 1692 + 1129 1 1693 1694 + 1130 1 1693 1695 + 1131 1 1696 1697 + 1132 1 1696 1698 + 1133 1 1699 1700 + 1134 1 1699 1701 + 1135 1 1702 1703 + 1136 1 1702 1704 + 1137 1 1705 1706 + 1138 1 1705 1707 + 1139 1 1708 1709 + 1140 1 1708 1710 + 1141 1 1711 1712 + 1142 1 1711 1713 + 1143 1 1714 1715 + 1144 1 1714 1716 + 1145 1 1717 1718 + 1146 1 1717 1719 + 1147 1 1720 1721 + 1148 1 1720 1722 + 1149 1 1723 1724 + 1150 1 1723 1725 + 1151 1 1726 1727 + 1152 1 1726 1728 + 1153 1 1729 1730 + 1154 1 1729 1731 + 1155 1 1732 1733 + 1156 1 1732 1734 + 1157 1 1735 1736 + 1158 1 1735 1737 + 1159 1 1738 1739 + 1160 1 1738 1740 + 1161 1 1741 1742 + 1162 1 1741 1743 + 1163 1 1744 1745 + 1164 1 1744 1746 + 1165 1 1747 1748 + 1166 1 1747 1749 + 1167 1 1750 1751 + 1168 1 1750 1752 + 1169 1 1753 1754 + 1170 1 1753 1755 + 1171 1 1756 1757 + 1172 1 1756 1758 + 1173 1 1759 1760 + 1174 1 1759 1761 + 1175 1 1762 1763 + 1176 1 1762 1764 + 1177 1 1765 1766 + 1178 1 1765 1767 + 1179 1 1768 1769 + 1180 1 1768 1770 + 1181 1 1771 1772 + 1182 1 1771 1773 + 1183 1 1774 1775 + 1184 1 1774 1776 + 1185 1 1777 1778 + 1186 1 1777 1779 + 1187 1 1780 1781 + 1188 1 1780 1782 + 1189 1 1783 1784 + 1190 1 1783 1785 + 1191 1 1786 1787 + 1192 1 1786 1788 + 1193 1 1789 1790 + 1194 1 1789 1791 + 1195 1 1792 1793 + 1196 1 1792 1794 + 1197 1 1795 1796 + 1198 1 1795 1797 + 1199 1 1798 1799 + 1200 1 1798 1800 + 1201 1 1801 1802 + 1202 1 1801 1803 + 1203 1 1804 1805 + 1204 1 1804 1806 + 1205 1 1807 1808 + 1206 1 1807 1809 + 1207 1 1810 1811 + 1208 1 1810 1812 + 1209 1 1813 1814 + 1210 1 1813 1815 + 1211 1 1816 1817 + 1212 1 1816 1818 + 1213 1 1819 1820 + 1214 1 1819 1821 + 1215 1 1822 1823 + 1216 1 1822 1824 + 1217 1 1825 1826 + 1218 1 1825 1827 + 1219 1 1828 1829 + 1220 1 1828 1830 + 1221 1 1831 1832 + 1222 1 1831 1833 + 1223 1 1834 1835 + 1224 1 1834 1836 + 1225 1 1837 1838 + 1226 1 1837 1839 + 1227 1 1840 1841 + 1228 1 1840 1842 + 1229 1 1843 1844 + 1230 1 1843 1845 + 1231 1 1846 1847 + 1232 1 1846 1848 + 1233 1 1849 1850 + 1234 1 1849 1851 + 1235 1 1852 1853 + 1236 1 1852 1854 + 1237 1 1855 1856 + 1238 1 1855 1857 + 1239 1 1858 1859 + 1240 1 1858 1860 + 1241 1 1861 1862 + 1242 1 1861 1863 + 1243 1 1864 1865 + 1244 1 1864 1866 + 1245 1 1867 1868 + 1246 1 1867 1869 + 1247 1 1870 1871 + 1248 1 1870 1872 + 1249 1 1873 1874 + 1250 1 1873 1875 + 1251 1 1876 1877 + 1252 1 1876 1878 + 1253 1 1879 1880 + 1254 1 1879 1881 + 1255 1 1882 1883 + 1256 1 1882 1884 + 1257 1 1885 1886 + 1258 1 1885 1887 + 1259 1 1888 1889 + 1260 1 1888 1890 + 1261 1 1891 1892 + 1262 1 1891 1893 + 1263 1 1894 1895 + 1264 1 1894 1896 + 1265 1 1897 1898 + 1266 1 1897 1899 + 1267 1 1900 1901 + 1268 1 1900 1902 + 1269 1 1903 1904 + 1270 1 1903 1905 + 1271 1 1906 1907 + 1272 1 1906 1908 + 1273 1 1909 1910 + 1274 1 1909 1911 + 1275 1 1912 1913 + 1276 1 1912 1914 + 1277 1 1915 1916 + 1278 1 1915 1917 + 1279 1 1918 1919 + 1280 1 1918 1920 + 1281 1 1921 1922 + 1282 1 1921 1923 + 1283 1 1924 1925 + 1284 1 1924 1926 + 1285 1 1927 1928 + 1286 1 1927 1929 + 1287 1 1930 1931 + 1288 1 1930 1932 + 1289 1 1933 1934 + 1290 1 1933 1935 + 1291 1 1936 1937 + 1292 1 1936 1938 + 1293 1 1939 1940 + 1294 1 1939 1941 + 1295 1 1942 1943 + 1296 1 1942 1944 + 1297 1 1945 1946 + 1298 1 1945 1947 + 1299 1 1948 1949 + 1300 1 1948 1950 + 1301 1 1951 1952 + 1302 1 1951 1953 + 1303 1 1954 1955 + 1304 1 1954 1956 + 1305 1 1957 1958 + 1306 1 1957 1959 + 1307 1 1960 1961 + 1308 1 1960 1962 + 1309 1 1963 1964 + 1310 1 1963 1965 + 1311 1 1966 1967 + 1312 1 1966 1968 + 1313 1 1969 1970 + 1314 1 1969 1971 + 1315 1 1972 1973 + 1316 1 1972 1974 + 1317 1 1975 1976 + 1318 1 1975 1977 + 1319 1 1978 1979 + 1320 1 1978 1980 + 1321 1 1981 1982 + 1322 1 1981 1983 + 1323 1 1984 1985 + 1324 1 1984 1986 + 1325 1 1987 1988 + 1326 1 1987 1989 + 1327 1 1990 1991 + 1328 1 1990 1992 + 1329 1 1993 1994 + 1330 1 1993 1995 + 1331 1 1996 1997 + 1332 1 1996 1998 + 1333 1 1999 2000 + 1334 1 1999 2001 + 1335 1 2002 2003 + 1336 1 2002 2004 + 1337 1 2005 2006 + 1338 1 2005 2007 + 1339 1 2008 2009 + 1340 1 2008 2010 + 1341 1 2011 2012 + 1342 1 2011 2013 + 1343 1 2014 2015 + 1344 1 2014 2016 + 1345 1 2017 2018 + 1346 1 2017 2019 + 1347 1 2020 2021 + 1348 1 2020 2022 + 1349 1 2023 2024 + 1350 1 2023 2025 + 1351 1 2026 2027 + 1352 1 2026 2028 + 1353 1 2029 2030 + 1354 1 2029 2031 + 1355 1 2032 2033 + 1356 1 2032 2034 + 1357 1 2035 2036 + 1358 1 2035 2037 + 1359 1 2038 2039 + 1360 1 2038 2040 + 1361 1 2041 2042 + 1362 1 2041 2043 + 1363 1 2044 2045 + 1364 1 2044 2046 + 1365 1 2047 2048 + 1366 1 2047 2049 + 1367 1 2050 2051 + 1368 1 2050 2052 + 1369 1 2053 2054 + 1370 1 2053 2055 + 1371 1 2056 2057 + 1372 1 2056 2058 + 1373 1 2059 2060 + 1374 1 2059 2061 + 1375 1 2062 2063 + 1376 1 2062 2064 + 1377 1 2065 2066 + 1378 1 2065 2067 + 1379 1 2068 2069 + 1380 1 2068 2070 + 1381 1 2071 2072 + 1382 1 2071 2073 + 1383 1 2074 2075 + 1384 1 2074 2076 + 1385 1 2077 2078 + 1386 1 2077 2079 + 1387 1 2080 2081 + 1388 1 2080 2082 + 1389 1 2083 2084 + 1390 1 2083 2085 + 1391 1 2086 2087 + 1392 1 2086 2088 + 1393 1 2089 2090 + 1394 1 2089 2091 + 1395 1 2092 2093 + 1396 1 2092 2094 + 1397 1 2095 2096 + 1398 1 2095 2097 + 1399 1 2098 2099 + 1400 1 2098 2100 + 1401 1 2101 2102 + 1402 1 2101 2103 + 1403 1 2104 2105 + 1404 1 2104 2106 + 1405 1 2107 2108 + 1406 1 2107 2109 + 1407 1 2110 2111 + 1408 1 2110 2112 + 1409 1 2113 2114 + 1410 1 2113 2115 + 1411 1 2116 2117 + 1412 1 2116 2118 + 1413 1 2119 2120 + 1414 1 2119 2121 + 1415 1 2122 2123 + 1416 1 2122 2124 + 1417 1 2125 2126 + 1418 1 2125 2127 + 1419 1 2128 2129 + 1420 1 2128 2130 + 1421 1 2131 2132 + 1422 1 2131 2133 + 1423 1 2134 2135 + 1424 1 2134 2136 + 1425 1 2137 2138 + 1426 1 2137 2139 + 1427 1 2140 2141 + 1428 1 2140 2142 + 1429 1 2143 2144 + 1430 1 2143 2145 + 1431 1 2146 2147 + 1432 1 2146 2148 + 1433 1 2149 2150 + 1434 1 2149 2151 + 1435 1 2152 2153 + 1436 1 2152 2154 + 1437 1 2155 2156 + 1438 1 2155 2157 + 1439 1 2158 2159 + 1440 1 2158 2160 + 1441 1 2161 2162 + 1442 1 2161 2163 + 1443 1 2164 2165 + 1444 1 2164 2166 + 1445 1 2167 2168 + 1446 1 2167 2169 + 1447 1 2170 2171 + 1448 1 2170 2172 + 1449 1 2173 2174 + 1450 1 2173 2175 + 1451 1 2176 2177 + 1452 1 2176 2178 + 1453 1 2179 2180 + 1454 1 2179 2181 + 1455 1 2182 2183 + 1456 1 2182 2184 + 1457 1 2185 2186 + 1458 1 2185 2187 + 1459 1 2188 2189 + 1460 1 2188 2190 + 1461 1 2191 2192 + 1462 1 2191 2193 + 1463 1 2194 2195 + 1464 1 2194 2196 + 1465 1 2197 2198 + 1466 1 2197 2199 + 1467 1 2200 2201 + 1468 1 2200 2202 + 1469 1 2203 2204 + 1470 1 2203 2205 + 1471 1 2206 2207 + 1472 1 2206 2208 + 1473 1 2209 2210 + 1474 1 2209 2211 + 1475 1 2212 2213 + 1476 1 2212 2214 + 1477 1 2215 2216 + 1478 1 2215 2217 + 1479 1 2218 2219 + 1480 1 2218 2220 + 1481 1 2221 2222 + 1482 1 2221 2223 + 1483 1 2224 2225 + 1484 1 2224 2226 + 1485 1 2227 2228 + 1486 1 2227 2229 + 1487 1 2230 2231 + 1488 1 2230 2232 + 1489 1 2233 2234 + 1490 1 2233 2235 + 1491 1 2236 2237 + 1492 1 2236 2238 + 1493 1 2239 2240 + 1494 1 2239 2241 + 1495 1 2242 2243 + 1496 1 2242 2244 + 1497 1 2245 2246 + 1498 1 2245 2247 + 1499 1 2248 2249 + 1500 1 2248 2250 + 1501 1 2251 2252 + 1502 1 2251 2253 + 1503 1 2254 2255 + 1504 1 2254 2256 + 1505 1 2257 2258 + 1506 1 2257 2259 + 1507 1 2260 2261 + 1508 1 2260 2262 + 1509 1 2263 2264 + 1510 1 2263 2265 + 1511 1 2266 2267 + 1512 1 2266 2268 + 1513 1 2269 2270 + 1514 1 2269 2271 + 1515 1 2272 2273 + 1516 1 2272 2274 + 1517 1 2275 2276 + 1518 1 2275 2277 + 1519 1 2278 2279 + 1520 1 2278 2280 + 1521 1 2281 2282 + 1522 1 2281 2283 + 1523 1 2284 2285 + 1524 1 2284 2286 + 1525 1 2287 2288 + 1526 1 2287 2289 + 1527 1 2290 2291 + 1528 1 2290 2292 + 1529 1 2293 2294 + 1530 1 2293 2295 + 1531 1 2296 2297 + 1532 1 2296 2298 + 1533 1 2299 2300 + 1534 1 2299 2301 + 1535 1 2302 2303 + 1536 1 2302 2304 + 1537 1 2305 2306 + 1538 1 2305 2307 + 1539 1 2308 2309 + 1540 1 2308 2310 + 1541 1 2311 2312 + 1542 1 2311 2313 + 1543 1 2314 2315 + 1544 1 2314 2316 + 1545 1 2317 2318 + 1546 1 2317 2319 + 1547 1 2320 2321 + 1548 1 2320 2322 + 1549 1 2323 2324 + 1550 1 2323 2325 + 1551 1 2326 2327 + 1552 1 2326 2328 + 1553 1 2329 2330 + 1554 1 2329 2331 + 1555 1 2332 2333 + 1556 1 2332 2334 + 1557 1 2335 2336 + 1558 1 2335 2337 + 1559 1 2338 2339 + 1560 1 2338 2340 + 1561 1 2341 2342 + 1562 1 2341 2343 + 1563 1 2344 2345 + 1564 1 2344 2346 + 1565 1 2347 2348 + 1566 1 2347 2349 + 1567 1 2350 2351 + 1568 1 2350 2352 + 1569 1 2353 2354 + 1570 1 2353 2355 + 1571 1 2356 2357 + 1572 1 2356 2358 + 1573 1 2359 2360 + 1574 1 2359 2361 + 1575 1 2362 2363 + 1576 1 2362 2364 + 1577 1 2365 2366 + 1578 1 2365 2367 + 1579 1 2368 2369 + 1580 1 2368 2370 + 1581 1 2371 2372 + 1582 1 2371 2373 + 1583 1 2374 2375 + 1584 1 2374 2376 + 1585 1 2377 2378 + 1586 1 2377 2379 + 1587 1 2380 2381 + 1588 1 2380 2382 + 1589 1 2383 2384 + 1590 1 2383 2385 + 1591 1 2386 2387 + 1592 1 2386 2388 + 1593 1 2389 2390 + 1594 1 2389 2391 + 1595 1 2392 2393 + 1596 1 2392 2394 + 1597 1 2395 2396 + 1598 1 2395 2397 + 1599 1 2398 2399 + 1600 1 2398 2400 + 1601 1 2401 2402 + 1602 1 2401 2403 + 1603 1 2404 2405 + 1604 1 2404 2406 + 1605 1 2407 2408 + 1606 1 2407 2409 + 1607 1 2410 2411 + 1608 1 2410 2412 + 1609 1 2413 2414 + 1610 1 2413 2415 + 1611 1 2416 2417 + 1612 1 2416 2418 + 1613 1 2419 2420 + 1614 1 2419 2421 + 1615 1 2422 2423 + 1616 1 2422 2424 + 1617 1 2425 2426 + 1618 1 2425 2427 + 1619 1 2428 2429 + 1620 1 2428 2430 + 1621 1 2431 2432 + 1622 1 2431 2433 + 1623 1 2434 2435 + 1624 1 2434 2436 + 1625 1 2437 2438 + 1626 1 2437 2439 + 1627 1 2440 2441 + 1628 1 2440 2442 + 1629 1 2443 2444 + 1630 1 2443 2445 + 1631 1 2446 2447 + 1632 1 2446 2448 + 1633 1 2449 2450 + 1634 1 2449 2451 + 1635 1 2452 2453 + 1636 1 2452 2454 + 1637 1 2455 2456 + 1638 1 2455 2457 + 1639 1 2458 2459 + 1640 1 2458 2460 + 1641 1 2461 2462 + 1642 1 2461 2463 + 1643 1 2464 2465 + 1644 1 2464 2466 + 1645 1 2467 2468 + 1646 1 2467 2469 + 1647 1 2470 2471 + 1648 1 2470 2472 + 1649 1 2473 2474 + 1650 1 2473 2475 + 1651 1 2476 2477 + 1652 1 2476 2478 + 1653 1 2479 2480 + 1654 1 2479 2481 + 1655 1 2482 2483 + 1656 1 2482 2484 + 1657 1 2485 2486 + 1658 1 2485 2487 + 1659 1 2488 2489 + 1660 1 2488 2490 + 1661 1 2491 2492 + 1662 1 2491 2493 + 1663 1 2494 2495 + 1664 1 2494 2496 + 1665 1 2497 2498 + 1666 1 2497 2499 + 1667 1 2500 2501 + 1668 1 2500 2502 + 1669 1 2503 2504 + 1670 1 2503 2505 + 1671 1 2506 2507 + 1672 1 2506 2508 + 1673 1 2509 2510 + 1674 1 2509 2511 + 1675 1 2512 2513 + 1676 1 2512 2514 + 1677 1 2515 2516 + 1678 1 2515 2517 + 1679 1 2518 2519 + 1680 1 2518 2520 + 1681 1 2521 2522 + 1682 1 2521 2523 + 1683 1 2524 2525 + 1684 1 2524 2526 + 1685 1 2527 2528 + 1686 1 2527 2529 + 1687 1 2530 2531 + 1688 1 2530 2532 + 1689 1 2533 2534 + 1690 1 2533 2535 + 1691 1 2536 2537 + 1692 1 2536 2538 + 1693 1 2539 2540 + 1694 1 2539 2541 + 1695 1 2542 2543 + 1696 1 2542 2544 + 1697 1 2545 2546 + 1698 1 2545 2547 + 1699 1 2548 2549 + 1700 1 2548 2550 + 1701 1 2551 2552 + 1702 1 2551 2553 + 1703 1 2554 2555 + 1704 1 2554 2556 + 1705 1 2557 2558 + 1706 1 2557 2559 + 1707 1 2560 2561 + 1708 1 2560 2562 + 1709 1 2563 2564 + 1710 1 2563 2565 + 1711 1 2566 2567 + 1712 1 2566 2568 + 1713 1 2569 2570 + 1714 1 2569 2571 + 1715 1 2572 2573 + 1716 1 2572 2574 + 1717 1 2575 2576 + 1718 1 2575 2577 + 1719 1 2578 2579 + 1720 1 2578 2580 + 1721 1 2581 2582 + 1722 1 2581 2583 + 1723 1 2584 2585 + 1724 1 2584 2586 + 1725 1 2587 2588 + 1726 1 2587 2589 + 1727 1 2590 2591 + 1728 1 2590 2592 + 1729 1 2593 2594 + 1730 1 2593 2595 + 1731 1 2596 2597 + 1732 1 2596 2598 + 1733 1 2599 2600 + 1734 1 2599 2601 + 1735 1 2602 2603 + 1736 1 2602 2604 + 1737 1 2605 2606 + 1738 1 2605 2607 + 1739 1 2608 2609 + 1740 1 2608 2610 + 1741 1 2611 2612 + 1742 1 2611 2613 + 1743 1 2614 2615 + 1744 1 2614 2616 + 1745 1 2617 2618 + 1746 1 2617 2619 + 1747 1 2620 2621 + 1748 1 2620 2622 + 1749 1 2623 2624 + 1750 1 2623 2625 + 1751 1 2626 2627 + 1752 1 2626 2628 + 1753 1 2629 2630 + 1754 1 2629 2631 + 1755 1 2632 2633 + 1756 1 2632 2634 + 1757 1 2635 2636 + 1758 1 2635 2637 + 1759 1 2638 2639 + 1760 1 2638 2640 + 1761 1 2641 2642 + 1762 1 2641 2643 + 1763 1 2644 2645 + 1764 1 2644 2646 + 1765 1 2647 2648 + 1766 1 2647 2649 + 1767 1 2650 2651 + 1768 1 2650 2652 + 1769 1 2653 2654 + 1770 1 2653 2655 + 1771 1 2656 2657 + 1772 1 2656 2658 + 1773 1 2659 2660 + 1774 1 2659 2661 + 1775 1 2662 2663 + 1776 1 2662 2664 + 1777 1 2665 2666 + 1778 1 2665 2667 + 1779 1 2668 2669 + 1780 1 2668 2670 + 1781 1 2671 2672 + 1782 1 2671 2673 + 1783 1 2674 2675 + 1784 1 2674 2676 + 1785 1 2677 2678 + 1786 1 2677 2679 + 1787 1 2680 2681 + 1788 1 2680 2682 + 1789 1 2683 2684 + 1790 1 2683 2685 + 1791 1 2686 2687 + 1792 1 2686 2688 + 1793 1 2689 2690 + 1794 1 2689 2691 + 1795 1 2692 2693 + 1796 1 2692 2694 + 1797 1 2695 2696 + 1798 1 2695 2697 + 1799 1 2698 2699 + 1800 1 2698 2700 + 1801 1 2701 2702 + 1802 1 2701 2703 + 1803 1 2704 2705 + 1804 1 2704 2706 + 1805 1 2707 2708 + 1806 1 2707 2709 + 1807 1 2710 2711 + 1808 1 2710 2712 + 1809 1 2713 2714 + 1810 1 2713 2715 + 1811 1 2716 2717 + 1812 1 2716 2718 + 1813 1 2719 2720 + 1814 1 2719 2721 + 1815 1 2722 2723 + 1816 1 2722 2724 + 1817 1 2725 2726 + 1818 1 2725 2727 + 1819 1 2728 2729 + 1820 1 2728 2730 + 1821 1 2731 2732 + 1822 1 2731 2733 + 1823 1 2734 2735 + 1824 1 2734 2736 + 1825 1 2737 2738 + 1826 1 2737 2739 + 1827 1 2740 2741 + 1828 1 2740 2742 + 1829 1 2743 2744 + 1830 1 2743 2745 + 1831 1 2746 2747 + 1832 1 2746 2748 + 1833 1 2749 2750 + 1834 1 2749 2751 + 1835 1 2752 2753 + 1836 1 2752 2754 + 1837 1 2755 2756 + 1838 1 2755 2757 + 1839 1 2758 2759 + 1840 1 2758 2760 + 1841 1 2761 2762 + 1842 1 2761 2763 + 1843 1 2764 2765 + 1844 1 2764 2766 + 1845 1 2767 2768 + 1846 1 2767 2769 + 1847 1 2770 2771 + 1848 1 2770 2772 + 1849 1 2773 2774 + 1850 1 2773 2775 + 1851 1 2776 2777 + 1852 1 2776 2778 + 1853 1 2779 2780 + 1854 1 2779 2781 + 1855 1 2782 2783 + 1856 1 2782 2784 + 1857 1 2785 2786 + 1858 1 2785 2787 + 1859 1 2788 2789 + 1860 1 2788 2790 + 1861 1 2791 2792 + 1862 1 2791 2793 + 1863 1 2794 2795 + 1864 1 2794 2796 + 1865 1 2797 2798 + 1866 1 2797 2799 + 1867 1 2800 2801 + 1868 1 2800 2802 + 1869 1 2803 2804 + 1870 1 2803 2805 + 1871 1 2806 2807 + 1872 1 2806 2808 + 1873 1 2809 2810 + 1874 1 2809 2811 + 1875 1 2812 2813 + 1876 1 2812 2814 + 1877 1 2815 2816 + 1878 1 2815 2817 + 1879 1 2818 2819 + 1880 1 2818 2820 + 1881 1 2821 2822 + 1882 1 2821 2823 + 1883 1 2824 2825 + 1884 1 2824 2826 + 1885 1 2827 2828 + 1886 1 2827 2829 + 1887 1 2830 2831 + 1888 1 2830 2832 + 1889 1 2833 2834 + 1890 1 2833 2835 + 1891 1 2836 2837 + 1892 1 2836 2838 + 1893 1 2839 2840 + 1894 1 2839 2841 + 1895 1 2842 2843 + 1896 1 2842 2844 + 1897 1 2845 2846 + 1898 1 2845 2847 + 1899 1 2848 2849 + 1900 1 2848 2850 + 1901 1 2851 2852 + 1902 1 2851 2853 + 1903 1 2854 2855 + 1904 1 2854 2856 + 1905 1 2857 2858 + 1906 1 2857 2859 + 1907 1 2860 2861 + 1908 1 2860 2862 + 1909 1 2863 2864 + 1910 1 2863 2865 + 1911 1 2866 2867 + 1912 1 2866 2868 + 1913 1 2869 2870 + 1914 1 2869 2871 + 1915 1 2872 2873 + 1916 1 2872 2874 + 1917 1 2875 2876 + 1918 1 2875 2877 + 1919 1 2878 2879 + 1920 1 2878 2880 + 1921 1 2881 2882 + 1922 1 2881 2883 + 1923 1 2884 2885 + 1924 1 2884 2886 + 1925 1 2887 2888 + 1926 1 2887 2889 + 1927 1 2890 2891 + 1928 1 2890 2892 + 1929 1 2893 2894 + 1930 1 2893 2895 + 1931 1 2896 2897 + 1932 1 2896 2898 + 1933 1 2899 2900 + 1934 1 2899 2901 + 1935 1 2902 2903 + 1936 1 2902 2904 + 1937 1 2905 2906 + 1938 1 2905 2907 + 1939 1 2908 2909 + 1940 1 2908 2910 + 1941 1 2911 2912 + 1942 1 2911 2913 + 1943 1 2914 2915 + 1944 1 2914 2916 + 1945 1 2917 2918 + 1946 1 2917 2919 + 1947 1 2920 2921 + 1948 1 2920 2922 + 1949 1 2923 2924 + 1950 1 2923 2925 + 1951 1 2926 2927 + 1952 1 2926 2928 + 1953 1 2929 2930 + 1954 1 2929 2931 + 1955 1 2932 2933 + 1956 1 2932 2934 + 1957 1 2935 2936 + 1958 1 2935 2937 + 1959 1 2938 2939 + 1960 1 2938 2940 + 1961 1 2941 2942 + 1962 1 2941 2943 + 1963 1 2944 2945 + 1964 1 2944 2946 + 1965 1 2947 2948 + 1966 1 2947 2949 + 1967 1 2950 2951 + 1968 1 2950 2952 + 1969 1 2953 2954 + 1970 1 2953 2955 + 1971 1 2956 2957 + 1972 1 2956 2958 + 1973 1 2959 2960 + 1974 1 2959 2961 + 1975 1 2962 2963 + 1976 1 2962 2964 + 1977 1 2965 2966 + 1978 1 2965 2967 + 1979 1 2968 2969 + 1980 1 2968 2970 + 1981 1 2971 2972 + 1982 1 2971 2973 + 1983 1 2974 2975 + 1984 1 2974 2976 + 1985 1 2977 2978 + 1986 1 2977 2979 + 1987 1 2980 2981 + 1988 1 2980 2982 + 1989 1 2983 2984 + 1990 1 2983 2985 + 1991 1 2986 2987 + 1992 1 2986 2988 + 1993 1 2989 2990 + 1994 1 2989 2991 + 1995 1 2992 2993 + 1996 1 2992 2994 + 1997 1 2995 2996 + 1998 1 2995 2997 + 1999 1 2998 2999 + 2000 1 2998 3000 + +Angles + + 1 1 2 1 3 + 2 1 5 4 6 + 3 1 8 7 9 + 4 1 11 10 12 + 5 1 14 13 15 + 6 1 17 16 18 + 7 1 20 19 21 + 8 1 23 22 24 + 9 1 26 25 27 + 10 1 29 28 30 + 11 1 32 31 33 + 12 1 35 34 36 + 13 1 38 37 39 + 14 1 41 40 42 + 15 1 44 43 45 + 16 1 47 46 48 + 17 1 50 49 51 + 18 1 53 52 54 + 19 1 56 55 57 + 20 1 59 58 60 + 21 1 62 61 63 + 22 1 65 64 66 + 23 1 68 67 69 + 24 1 71 70 72 + 25 1 74 73 75 + 26 1 77 76 78 + 27 1 80 79 81 + 28 1 83 82 84 + 29 1 86 85 87 + 30 1 89 88 90 + 31 1 92 91 93 + 32 1 95 94 96 + 33 1 98 97 99 + 34 1 101 100 102 + 35 1 104 103 105 + 36 1 107 106 108 + 37 1 110 109 111 + 38 1 113 112 114 + 39 1 116 115 117 + 40 1 119 118 120 + 41 1 122 121 123 + 42 1 125 124 126 + 43 1 128 127 129 + 44 1 131 130 132 + 45 1 134 133 135 + 46 1 137 136 138 + 47 1 140 139 141 + 48 1 143 142 144 + 49 1 146 145 147 + 50 1 149 148 150 + 51 1 152 151 153 + 52 1 155 154 156 + 53 1 158 157 159 + 54 1 161 160 162 + 55 1 164 163 165 + 56 1 167 166 168 + 57 1 170 169 171 + 58 1 173 172 174 + 59 1 176 175 177 + 60 1 179 178 180 + 61 1 182 181 183 + 62 1 185 184 186 + 63 1 188 187 189 + 64 1 191 190 192 + 65 1 194 193 195 + 66 1 197 196 198 + 67 1 200 199 201 + 68 1 203 202 204 + 69 1 206 205 207 + 70 1 209 208 210 + 71 1 212 211 213 + 72 1 215 214 216 + 73 1 218 217 219 + 74 1 221 220 222 + 75 1 224 223 225 + 76 1 227 226 228 + 77 1 230 229 231 + 78 1 233 232 234 + 79 1 236 235 237 + 80 1 239 238 240 + 81 1 242 241 243 + 82 1 245 244 246 + 83 1 248 247 249 + 84 1 251 250 252 + 85 1 254 253 255 + 86 1 257 256 258 + 87 1 260 259 261 + 88 1 263 262 264 + 89 1 266 265 267 + 90 1 269 268 270 + 91 1 272 271 273 + 92 1 275 274 276 + 93 1 278 277 279 + 94 1 281 280 282 + 95 1 284 283 285 + 96 1 287 286 288 + 97 1 290 289 291 + 98 1 293 292 294 + 99 1 296 295 297 + 100 1 299 298 300 + 101 1 302 301 303 + 102 1 305 304 306 + 103 1 308 307 309 + 104 1 311 310 312 + 105 1 314 313 315 + 106 1 317 316 318 + 107 1 320 319 321 + 108 1 323 322 324 + 109 1 326 325 327 + 110 1 329 328 330 + 111 1 332 331 333 + 112 1 335 334 336 + 113 1 338 337 339 + 114 1 341 340 342 + 115 1 344 343 345 + 116 1 347 346 348 + 117 1 350 349 351 + 118 1 353 352 354 + 119 1 356 355 357 + 120 1 359 358 360 + 121 1 362 361 363 + 122 1 365 364 366 + 123 1 368 367 369 + 124 1 371 370 372 + 125 1 374 373 375 + 126 1 377 376 378 + 127 1 380 379 381 + 128 1 383 382 384 + 129 1 386 385 387 + 130 1 389 388 390 + 131 1 392 391 393 + 132 1 395 394 396 + 133 1 398 397 399 + 134 1 401 400 402 + 135 1 404 403 405 + 136 1 407 406 408 + 137 1 410 409 411 + 138 1 413 412 414 + 139 1 416 415 417 + 140 1 419 418 420 + 141 1 422 421 423 + 142 1 425 424 426 + 143 1 428 427 429 + 144 1 431 430 432 + 145 1 434 433 435 + 146 1 437 436 438 + 147 1 440 439 441 + 148 1 443 442 444 + 149 1 446 445 447 + 150 1 449 448 450 + 151 1 452 451 453 + 152 1 455 454 456 + 153 1 458 457 459 + 154 1 461 460 462 + 155 1 464 463 465 + 156 1 467 466 468 + 157 1 470 469 471 + 158 1 473 472 474 + 159 1 476 475 477 + 160 1 479 478 480 + 161 1 482 481 483 + 162 1 485 484 486 + 163 1 488 487 489 + 164 1 491 490 492 + 165 1 494 493 495 + 166 1 497 496 498 + 167 1 500 499 501 + 168 1 503 502 504 + 169 1 506 505 507 + 170 1 509 508 510 + 171 1 512 511 513 + 172 1 515 514 516 + 173 1 518 517 519 + 174 1 521 520 522 + 175 1 524 523 525 + 176 1 527 526 528 + 177 1 530 529 531 + 178 1 533 532 534 + 179 1 536 535 537 + 180 1 539 538 540 + 181 1 542 541 543 + 182 1 545 544 546 + 183 1 548 547 549 + 184 1 551 550 552 + 185 1 554 553 555 + 186 1 557 556 558 + 187 1 560 559 561 + 188 1 563 562 564 + 189 1 566 565 567 + 190 1 569 568 570 + 191 1 572 571 573 + 192 1 575 574 576 + 193 1 578 577 579 + 194 1 581 580 582 + 195 1 584 583 585 + 196 1 587 586 588 + 197 1 590 589 591 + 198 1 593 592 594 + 199 1 596 595 597 + 200 1 599 598 600 + 201 1 602 601 603 + 202 1 605 604 606 + 203 1 608 607 609 + 204 1 611 610 612 + 205 1 614 613 615 + 206 1 617 616 618 + 207 1 620 619 621 + 208 1 623 622 624 + 209 1 626 625 627 + 210 1 629 628 630 + 211 1 632 631 633 + 212 1 635 634 636 + 213 1 638 637 639 + 214 1 641 640 642 + 215 1 644 643 645 + 216 1 647 646 648 + 217 1 650 649 651 + 218 1 653 652 654 + 219 1 656 655 657 + 220 1 659 658 660 + 221 1 662 661 663 + 222 1 665 664 666 + 223 1 668 667 669 + 224 1 671 670 672 + 225 1 674 673 675 + 226 1 677 676 678 + 227 1 680 679 681 + 228 1 683 682 684 + 229 1 686 685 687 + 230 1 689 688 690 + 231 1 692 691 693 + 232 1 695 694 696 + 233 1 698 697 699 + 234 1 701 700 702 + 235 1 704 703 705 + 236 1 707 706 708 + 237 1 710 709 711 + 238 1 713 712 714 + 239 1 716 715 717 + 240 1 719 718 720 + 241 1 722 721 723 + 242 1 725 724 726 + 243 1 728 727 729 + 244 1 731 730 732 + 245 1 734 733 735 + 246 1 737 736 738 + 247 1 740 739 741 + 248 1 743 742 744 + 249 1 746 745 747 + 250 1 749 748 750 + 251 1 752 751 753 + 252 1 755 754 756 + 253 1 758 757 759 + 254 1 761 760 762 + 255 1 764 763 765 + 256 1 767 766 768 + 257 1 770 769 771 + 258 1 773 772 774 + 259 1 776 775 777 + 260 1 779 778 780 + 261 1 782 781 783 + 262 1 785 784 786 + 263 1 788 787 789 + 264 1 791 790 792 + 265 1 794 793 795 + 266 1 797 796 798 + 267 1 800 799 801 + 268 1 803 802 804 + 269 1 806 805 807 + 270 1 809 808 810 + 271 1 812 811 813 + 272 1 815 814 816 + 273 1 818 817 819 + 274 1 821 820 822 + 275 1 824 823 825 + 276 1 827 826 828 + 277 1 830 829 831 + 278 1 833 832 834 + 279 1 836 835 837 + 280 1 839 838 840 + 281 1 842 841 843 + 282 1 845 844 846 + 283 1 848 847 849 + 284 1 851 850 852 + 285 1 854 853 855 + 286 1 857 856 858 + 287 1 860 859 861 + 288 1 863 862 864 + 289 1 866 865 867 + 290 1 869 868 870 + 291 1 872 871 873 + 292 1 875 874 876 + 293 1 878 877 879 + 294 1 881 880 882 + 295 1 884 883 885 + 296 1 887 886 888 + 297 1 890 889 891 + 298 1 893 892 894 + 299 1 896 895 897 + 300 1 899 898 900 + 301 1 902 901 903 + 302 1 905 904 906 + 303 1 908 907 909 + 304 1 911 910 912 + 305 1 914 913 915 + 306 1 917 916 918 + 307 1 920 919 921 + 308 1 923 922 924 + 309 1 926 925 927 + 310 1 929 928 930 + 311 1 932 931 933 + 312 1 935 934 936 + 313 1 938 937 939 + 314 1 941 940 942 + 315 1 944 943 945 + 316 1 947 946 948 + 317 1 950 949 951 + 318 1 953 952 954 + 319 1 956 955 957 + 320 1 959 958 960 + 321 1 962 961 963 + 322 1 965 964 966 + 323 1 968 967 969 + 324 1 971 970 972 + 325 1 974 973 975 + 326 1 977 976 978 + 327 1 980 979 981 + 328 1 983 982 984 + 329 1 986 985 987 + 330 1 989 988 990 + 331 1 992 991 993 + 332 1 995 994 996 + 333 1 998 997 999 + 334 1 1001 1000 1002 + 335 1 1004 1003 1005 + 336 1 1007 1006 1008 + 337 1 1010 1009 1011 + 338 1 1013 1012 1014 + 339 1 1016 1015 1017 + 340 1 1019 1018 1020 + 341 1 1022 1021 1023 + 342 1 1025 1024 1026 + 343 1 1028 1027 1029 + 344 1 1031 1030 1032 + 345 1 1034 1033 1035 + 346 1 1037 1036 1038 + 347 1 1040 1039 1041 + 348 1 1043 1042 1044 + 349 1 1046 1045 1047 + 350 1 1049 1048 1050 + 351 1 1052 1051 1053 + 352 1 1055 1054 1056 + 353 1 1058 1057 1059 + 354 1 1061 1060 1062 + 355 1 1064 1063 1065 + 356 1 1067 1066 1068 + 357 1 1070 1069 1071 + 358 1 1073 1072 1074 + 359 1 1076 1075 1077 + 360 1 1079 1078 1080 + 361 1 1082 1081 1083 + 362 1 1085 1084 1086 + 363 1 1088 1087 1089 + 364 1 1091 1090 1092 + 365 1 1094 1093 1095 + 366 1 1097 1096 1098 + 367 1 1100 1099 1101 + 368 1 1103 1102 1104 + 369 1 1106 1105 1107 + 370 1 1109 1108 1110 + 371 1 1112 1111 1113 + 372 1 1115 1114 1116 + 373 1 1118 1117 1119 + 374 1 1121 1120 1122 + 375 1 1124 1123 1125 + 376 1 1127 1126 1128 + 377 1 1130 1129 1131 + 378 1 1133 1132 1134 + 379 1 1136 1135 1137 + 380 1 1139 1138 1140 + 381 1 1142 1141 1143 + 382 1 1145 1144 1146 + 383 1 1148 1147 1149 + 384 1 1151 1150 1152 + 385 1 1154 1153 1155 + 386 1 1157 1156 1158 + 387 1 1160 1159 1161 + 388 1 1163 1162 1164 + 389 1 1166 1165 1167 + 390 1 1169 1168 1170 + 391 1 1172 1171 1173 + 392 1 1175 1174 1176 + 393 1 1178 1177 1179 + 394 1 1181 1180 1182 + 395 1 1184 1183 1185 + 396 1 1187 1186 1188 + 397 1 1190 1189 1191 + 398 1 1193 1192 1194 + 399 1 1196 1195 1197 + 400 1 1199 1198 1200 + 401 1 1202 1201 1203 + 402 1 1205 1204 1206 + 403 1 1208 1207 1209 + 404 1 1211 1210 1212 + 405 1 1214 1213 1215 + 406 1 1217 1216 1218 + 407 1 1220 1219 1221 + 408 1 1223 1222 1224 + 409 1 1226 1225 1227 + 410 1 1229 1228 1230 + 411 1 1232 1231 1233 + 412 1 1235 1234 1236 + 413 1 1238 1237 1239 + 414 1 1241 1240 1242 + 415 1 1244 1243 1245 + 416 1 1247 1246 1248 + 417 1 1250 1249 1251 + 418 1 1253 1252 1254 + 419 1 1256 1255 1257 + 420 1 1259 1258 1260 + 421 1 1262 1261 1263 + 422 1 1265 1264 1266 + 423 1 1268 1267 1269 + 424 1 1271 1270 1272 + 425 1 1274 1273 1275 + 426 1 1277 1276 1278 + 427 1 1280 1279 1281 + 428 1 1283 1282 1284 + 429 1 1286 1285 1287 + 430 1 1289 1288 1290 + 431 1 1292 1291 1293 + 432 1 1295 1294 1296 + 433 1 1298 1297 1299 + 434 1 1301 1300 1302 + 435 1 1304 1303 1305 + 436 1 1307 1306 1308 + 437 1 1310 1309 1311 + 438 1 1313 1312 1314 + 439 1 1316 1315 1317 + 440 1 1319 1318 1320 + 441 1 1322 1321 1323 + 442 1 1325 1324 1326 + 443 1 1328 1327 1329 + 444 1 1331 1330 1332 + 445 1 1334 1333 1335 + 446 1 1337 1336 1338 + 447 1 1340 1339 1341 + 448 1 1343 1342 1344 + 449 1 1346 1345 1347 + 450 1 1349 1348 1350 + 451 1 1352 1351 1353 + 452 1 1355 1354 1356 + 453 1 1358 1357 1359 + 454 1 1361 1360 1362 + 455 1 1364 1363 1365 + 456 1 1367 1366 1368 + 457 1 1370 1369 1371 + 458 1 1373 1372 1374 + 459 1 1376 1375 1377 + 460 1 1379 1378 1380 + 461 1 1382 1381 1383 + 462 1 1385 1384 1386 + 463 1 1388 1387 1389 + 464 1 1391 1390 1392 + 465 1 1394 1393 1395 + 466 1 1397 1396 1398 + 467 1 1400 1399 1401 + 468 1 1403 1402 1404 + 469 1 1406 1405 1407 + 470 1 1409 1408 1410 + 471 1 1412 1411 1413 + 472 1 1415 1414 1416 + 473 1 1418 1417 1419 + 474 1 1421 1420 1422 + 475 1 1424 1423 1425 + 476 1 1427 1426 1428 + 477 1 1430 1429 1431 + 478 1 1433 1432 1434 + 479 1 1436 1435 1437 + 480 1 1439 1438 1440 + 481 1 1442 1441 1443 + 482 1 1445 1444 1446 + 483 1 1448 1447 1449 + 484 1 1451 1450 1452 + 485 1 1454 1453 1455 + 486 1 1457 1456 1458 + 487 1 1460 1459 1461 + 488 1 1463 1462 1464 + 489 1 1466 1465 1467 + 490 1 1469 1468 1470 + 491 1 1472 1471 1473 + 492 1 1475 1474 1476 + 493 1 1478 1477 1479 + 494 1 1481 1480 1482 + 495 1 1484 1483 1485 + 496 1 1487 1486 1488 + 497 1 1490 1489 1491 + 498 1 1493 1492 1494 + 499 1 1496 1495 1497 + 500 1 1499 1498 1500 + 501 1 1502 1501 1503 + 502 1 1505 1504 1506 + 503 1 1508 1507 1509 + 504 1 1511 1510 1512 + 505 1 1514 1513 1515 + 506 1 1517 1516 1518 + 507 1 1520 1519 1521 + 508 1 1523 1522 1524 + 509 1 1526 1525 1527 + 510 1 1529 1528 1530 + 511 1 1532 1531 1533 + 512 1 1535 1534 1536 + 513 1 1538 1537 1539 + 514 1 1541 1540 1542 + 515 1 1544 1543 1545 + 516 1 1547 1546 1548 + 517 1 1550 1549 1551 + 518 1 1553 1552 1554 + 519 1 1556 1555 1557 + 520 1 1559 1558 1560 + 521 1 1562 1561 1563 + 522 1 1565 1564 1566 + 523 1 1568 1567 1569 + 524 1 1571 1570 1572 + 525 1 1574 1573 1575 + 526 1 1577 1576 1578 + 527 1 1580 1579 1581 + 528 1 1583 1582 1584 + 529 1 1586 1585 1587 + 530 1 1589 1588 1590 + 531 1 1592 1591 1593 + 532 1 1595 1594 1596 + 533 1 1598 1597 1599 + 534 1 1601 1600 1602 + 535 1 1604 1603 1605 + 536 1 1607 1606 1608 + 537 1 1610 1609 1611 + 538 1 1613 1612 1614 + 539 1 1616 1615 1617 + 540 1 1619 1618 1620 + 541 1 1622 1621 1623 + 542 1 1625 1624 1626 + 543 1 1628 1627 1629 + 544 1 1631 1630 1632 + 545 1 1634 1633 1635 + 546 1 1637 1636 1638 + 547 1 1640 1639 1641 + 548 1 1643 1642 1644 + 549 1 1646 1645 1647 + 550 1 1649 1648 1650 + 551 1 1652 1651 1653 + 552 1 1655 1654 1656 + 553 1 1658 1657 1659 + 554 1 1661 1660 1662 + 555 1 1664 1663 1665 + 556 1 1667 1666 1668 + 557 1 1670 1669 1671 + 558 1 1673 1672 1674 + 559 1 1676 1675 1677 + 560 1 1679 1678 1680 + 561 1 1682 1681 1683 + 562 1 1685 1684 1686 + 563 1 1688 1687 1689 + 564 1 1691 1690 1692 + 565 1 1694 1693 1695 + 566 1 1697 1696 1698 + 567 1 1700 1699 1701 + 568 1 1703 1702 1704 + 569 1 1706 1705 1707 + 570 1 1709 1708 1710 + 571 1 1712 1711 1713 + 572 1 1715 1714 1716 + 573 1 1718 1717 1719 + 574 1 1721 1720 1722 + 575 1 1724 1723 1725 + 576 1 1727 1726 1728 + 577 1 1730 1729 1731 + 578 1 1733 1732 1734 + 579 1 1736 1735 1737 + 580 1 1739 1738 1740 + 581 1 1742 1741 1743 + 582 1 1745 1744 1746 + 583 1 1748 1747 1749 + 584 1 1751 1750 1752 + 585 1 1754 1753 1755 + 586 1 1757 1756 1758 + 587 1 1760 1759 1761 + 588 1 1763 1762 1764 + 589 1 1766 1765 1767 + 590 1 1769 1768 1770 + 591 1 1772 1771 1773 + 592 1 1775 1774 1776 + 593 1 1778 1777 1779 + 594 1 1781 1780 1782 + 595 1 1784 1783 1785 + 596 1 1787 1786 1788 + 597 1 1790 1789 1791 + 598 1 1793 1792 1794 + 599 1 1796 1795 1797 + 600 1 1799 1798 1800 + 601 1 1802 1801 1803 + 602 1 1805 1804 1806 + 603 1 1808 1807 1809 + 604 1 1811 1810 1812 + 605 1 1814 1813 1815 + 606 1 1817 1816 1818 + 607 1 1820 1819 1821 + 608 1 1823 1822 1824 + 609 1 1826 1825 1827 + 610 1 1829 1828 1830 + 611 1 1832 1831 1833 + 612 1 1835 1834 1836 + 613 1 1838 1837 1839 + 614 1 1841 1840 1842 + 615 1 1844 1843 1845 + 616 1 1847 1846 1848 + 617 1 1850 1849 1851 + 618 1 1853 1852 1854 + 619 1 1856 1855 1857 + 620 1 1859 1858 1860 + 621 1 1862 1861 1863 + 622 1 1865 1864 1866 + 623 1 1868 1867 1869 + 624 1 1871 1870 1872 + 625 1 1874 1873 1875 + 626 1 1877 1876 1878 + 627 1 1880 1879 1881 + 628 1 1883 1882 1884 + 629 1 1886 1885 1887 + 630 1 1889 1888 1890 + 631 1 1892 1891 1893 + 632 1 1895 1894 1896 + 633 1 1898 1897 1899 + 634 1 1901 1900 1902 + 635 1 1904 1903 1905 + 636 1 1907 1906 1908 + 637 1 1910 1909 1911 + 638 1 1913 1912 1914 + 639 1 1916 1915 1917 + 640 1 1919 1918 1920 + 641 1 1922 1921 1923 + 642 1 1925 1924 1926 + 643 1 1928 1927 1929 + 644 1 1931 1930 1932 + 645 1 1934 1933 1935 + 646 1 1937 1936 1938 + 647 1 1940 1939 1941 + 648 1 1943 1942 1944 + 649 1 1946 1945 1947 + 650 1 1949 1948 1950 + 651 1 1952 1951 1953 + 652 1 1955 1954 1956 + 653 1 1958 1957 1959 + 654 1 1961 1960 1962 + 655 1 1964 1963 1965 + 656 1 1967 1966 1968 + 657 1 1970 1969 1971 + 658 1 1973 1972 1974 + 659 1 1976 1975 1977 + 660 1 1979 1978 1980 + 661 1 1982 1981 1983 + 662 1 1985 1984 1986 + 663 1 1988 1987 1989 + 664 1 1991 1990 1992 + 665 1 1994 1993 1995 + 666 1 1997 1996 1998 + 667 1 2000 1999 2001 + 668 1 2003 2002 2004 + 669 1 2006 2005 2007 + 670 1 2009 2008 2010 + 671 1 2012 2011 2013 + 672 1 2015 2014 2016 + 673 1 2018 2017 2019 + 674 1 2021 2020 2022 + 675 1 2024 2023 2025 + 676 1 2027 2026 2028 + 677 1 2030 2029 2031 + 678 1 2033 2032 2034 + 679 1 2036 2035 2037 + 680 1 2039 2038 2040 + 681 1 2042 2041 2043 + 682 1 2045 2044 2046 + 683 1 2048 2047 2049 + 684 1 2051 2050 2052 + 685 1 2054 2053 2055 + 686 1 2057 2056 2058 + 687 1 2060 2059 2061 + 688 1 2063 2062 2064 + 689 1 2066 2065 2067 + 690 1 2069 2068 2070 + 691 1 2072 2071 2073 + 692 1 2075 2074 2076 + 693 1 2078 2077 2079 + 694 1 2081 2080 2082 + 695 1 2084 2083 2085 + 696 1 2087 2086 2088 + 697 1 2090 2089 2091 + 698 1 2093 2092 2094 + 699 1 2096 2095 2097 + 700 1 2099 2098 2100 + 701 1 2102 2101 2103 + 702 1 2105 2104 2106 + 703 1 2108 2107 2109 + 704 1 2111 2110 2112 + 705 1 2114 2113 2115 + 706 1 2117 2116 2118 + 707 1 2120 2119 2121 + 708 1 2123 2122 2124 + 709 1 2126 2125 2127 + 710 1 2129 2128 2130 + 711 1 2132 2131 2133 + 712 1 2135 2134 2136 + 713 1 2138 2137 2139 + 714 1 2141 2140 2142 + 715 1 2144 2143 2145 + 716 1 2147 2146 2148 + 717 1 2150 2149 2151 + 718 1 2153 2152 2154 + 719 1 2156 2155 2157 + 720 1 2159 2158 2160 + 721 1 2162 2161 2163 + 722 1 2165 2164 2166 + 723 1 2168 2167 2169 + 724 1 2171 2170 2172 + 725 1 2174 2173 2175 + 726 1 2177 2176 2178 + 727 1 2180 2179 2181 + 728 1 2183 2182 2184 + 729 1 2186 2185 2187 + 730 1 2189 2188 2190 + 731 1 2192 2191 2193 + 732 1 2195 2194 2196 + 733 1 2198 2197 2199 + 734 1 2201 2200 2202 + 735 1 2204 2203 2205 + 736 1 2207 2206 2208 + 737 1 2210 2209 2211 + 738 1 2213 2212 2214 + 739 1 2216 2215 2217 + 740 1 2219 2218 2220 + 741 1 2222 2221 2223 + 742 1 2225 2224 2226 + 743 1 2228 2227 2229 + 744 1 2231 2230 2232 + 745 1 2234 2233 2235 + 746 1 2237 2236 2238 + 747 1 2240 2239 2241 + 748 1 2243 2242 2244 + 749 1 2246 2245 2247 + 750 1 2249 2248 2250 + 751 1 2252 2251 2253 + 752 1 2255 2254 2256 + 753 1 2258 2257 2259 + 754 1 2261 2260 2262 + 755 1 2264 2263 2265 + 756 1 2267 2266 2268 + 757 1 2270 2269 2271 + 758 1 2273 2272 2274 + 759 1 2276 2275 2277 + 760 1 2279 2278 2280 + 761 1 2282 2281 2283 + 762 1 2285 2284 2286 + 763 1 2288 2287 2289 + 764 1 2291 2290 2292 + 765 1 2294 2293 2295 + 766 1 2297 2296 2298 + 767 1 2300 2299 2301 + 768 1 2303 2302 2304 + 769 1 2306 2305 2307 + 770 1 2309 2308 2310 + 771 1 2312 2311 2313 + 772 1 2315 2314 2316 + 773 1 2318 2317 2319 + 774 1 2321 2320 2322 + 775 1 2324 2323 2325 + 776 1 2327 2326 2328 + 777 1 2330 2329 2331 + 778 1 2333 2332 2334 + 779 1 2336 2335 2337 + 780 1 2339 2338 2340 + 781 1 2342 2341 2343 + 782 1 2345 2344 2346 + 783 1 2348 2347 2349 + 784 1 2351 2350 2352 + 785 1 2354 2353 2355 + 786 1 2357 2356 2358 + 787 1 2360 2359 2361 + 788 1 2363 2362 2364 + 789 1 2366 2365 2367 + 790 1 2369 2368 2370 + 791 1 2372 2371 2373 + 792 1 2375 2374 2376 + 793 1 2378 2377 2379 + 794 1 2381 2380 2382 + 795 1 2384 2383 2385 + 796 1 2387 2386 2388 + 797 1 2390 2389 2391 + 798 1 2393 2392 2394 + 799 1 2396 2395 2397 + 800 1 2399 2398 2400 + 801 1 2402 2401 2403 + 802 1 2405 2404 2406 + 803 1 2408 2407 2409 + 804 1 2411 2410 2412 + 805 1 2414 2413 2415 + 806 1 2417 2416 2418 + 807 1 2420 2419 2421 + 808 1 2423 2422 2424 + 809 1 2426 2425 2427 + 810 1 2429 2428 2430 + 811 1 2432 2431 2433 + 812 1 2435 2434 2436 + 813 1 2438 2437 2439 + 814 1 2441 2440 2442 + 815 1 2444 2443 2445 + 816 1 2447 2446 2448 + 817 1 2450 2449 2451 + 818 1 2453 2452 2454 + 819 1 2456 2455 2457 + 820 1 2459 2458 2460 + 821 1 2462 2461 2463 + 822 1 2465 2464 2466 + 823 1 2468 2467 2469 + 824 1 2471 2470 2472 + 825 1 2474 2473 2475 + 826 1 2477 2476 2478 + 827 1 2480 2479 2481 + 828 1 2483 2482 2484 + 829 1 2486 2485 2487 + 830 1 2489 2488 2490 + 831 1 2492 2491 2493 + 832 1 2495 2494 2496 + 833 1 2498 2497 2499 + 834 1 2501 2500 2502 + 835 1 2504 2503 2505 + 836 1 2507 2506 2508 + 837 1 2510 2509 2511 + 838 1 2513 2512 2514 + 839 1 2516 2515 2517 + 840 1 2519 2518 2520 + 841 1 2522 2521 2523 + 842 1 2525 2524 2526 + 843 1 2528 2527 2529 + 844 1 2531 2530 2532 + 845 1 2534 2533 2535 + 846 1 2537 2536 2538 + 847 1 2540 2539 2541 + 848 1 2543 2542 2544 + 849 1 2546 2545 2547 + 850 1 2549 2548 2550 + 851 1 2552 2551 2553 + 852 1 2555 2554 2556 + 853 1 2558 2557 2559 + 854 1 2561 2560 2562 + 855 1 2564 2563 2565 + 856 1 2567 2566 2568 + 857 1 2570 2569 2571 + 858 1 2573 2572 2574 + 859 1 2576 2575 2577 + 860 1 2579 2578 2580 + 861 1 2582 2581 2583 + 862 1 2585 2584 2586 + 863 1 2588 2587 2589 + 864 1 2591 2590 2592 + 865 1 2594 2593 2595 + 866 1 2597 2596 2598 + 867 1 2600 2599 2601 + 868 1 2603 2602 2604 + 869 1 2606 2605 2607 + 870 1 2609 2608 2610 + 871 1 2612 2611 2613 + 872 1 2615 2614 2616 + 873 1 2618 2617 2619 + 874 1 2621 2620 2622 + 875 1 2624 2623 2625 + 876 1 2627 2626 2628 + 877 1 2630 2629 2631 + 878 1 2633 2632 2634 + 879 1 2636 2635 2637 + 880 1 2639 2638 2640 + 881 1 2642 2641 2643 + 882 1 2645 2644 2646 + 883 1 2648 2647 2649 + 884 1 2651 2650 2652 + 885 1 2654 2653 2655 + 886 1 2657 2656 2658 + 887 1 2660 2659 2661 + 888 1 2663 2662 2664 + 889 1 2666 2665 2667 + 890 1 2669 2668 2670 + 891 1 2672 2671 2673 + 892 1 2675 2674 2676 + 893 1 2678 2677 2679 + 894 1 2681 2680 2682 + 895 1 2684 2683 2685 + 896 1 2687 2686 2688 + 897 1 2690 2689 2691 + 898 1 2693 2692 2694 + 899 1 2696 2695 2697 + 900 1 2699 2698 2700 + 901 1 2702 2701 2703 + 902 1 2705 2704 2706 + 903 1 2708 2707 2709 + 904 1 2711 2710 2712 + 905 1 2714 2713 2715 + 906 1 2717 2716 2718 + 907 1 2720 2719 2721 + 908 1 2723 2722 2724 + 909 1 2726 2725 2727 + 910 1 2729 2728 2730 + 911 1 2732 2731 2733 + 912 1 2735 2734 2736 + 913 1 2738 2737 2739 + 914 1 2741 2740 2742 + 915 1 2744 2743 2745 + 916 1 2747 2746 2748 + 917 1 2750 2749 2751 + 918 1 2753 2752 2754 + 919 1 2756 2755 2757 + 920 1 2759 2758 2760 + 921 1 2762 2761 2763 + 922 1 2765 2764 2766 + 923 1 2768 2767 2769 + 924 1 2771 2770 2772 + 925 1 2774 2773 2775 + 926 1 2777 2776 2778 + 927 1 2780 2779 2781 + 928 1 2783 2782 2784 + 929 1 2786 2785 2787 + 930 1 2789 2788 2790 + 931 1 2792 2791 2793 + 932 1 2795 2794 2796 + 933 1 2798 2797 2799 + 934 1 2801 2800 2802 + 935 1 2804 2803 2805 + 936 1 2807 2806 2808 + 937 1 2810 2809 2811 + 938 1 2813 2812 2814 + 939 1 2816 2815 2817 + 940 1 2819 2818 2820 + 941 1 2822 2821 2823 + 942 1 2825 2824 2826 + 943 1 2828 2827 2829 + 944 1 2831 2830 2832 + 945 1 2834 2833 2835 + 946 1 2837 2836 2838 + 947 1 2840 2839 2841 + 948 1 2843 2842 2844 + 949 1 2846 2845 2847 + 950 1 2849 2848 2850 + 951 1 2852 2851 2853 + 952 1 2855 2854 2856 + 953 1 2858 2857 2859 + 954 1 2861 2860 2862 + 955 1 2864 2863 2865 + 956 1 2867 2866 2868 + 957 1 2870 2869 2871 + 958 1 2873 2872 2874 + 959 1 2876 2875 2877 + 960 1 2879 2878 2880 + 961 1 2882 2881 2883 + 962 1 2885 2884 2886 + 963 1 2888 2887 2889 + 964 1 2891 2890 2892 + 965 1 2894 2893 2895 + 966 1 2897 2896 2898 + 967 1 2900 2899 2901 + 968 1 2903 2902 2904 + 969 1 2906 2905 2907 + 970 1 2909 2908 2910 + 971 1 2912 2911 2913 + 972 1 2915 2914 2916 + 973 1 2918 2917 2919 + 974 1 2921 2920 2922 + 975 1 2924 2923 2925 + 976 1 2927 2926 2928 + 977 1 2930 2929 2931 + 978 1 2933 2932 2934 + 979 1 2936 2935 2937 + 980 1 2939 2938 2940 + 981 1 2942 2941 2943 + 982 1 2945 2944 2946 + 983 1 2948 2947 2949 + 984 1 2951 2950 2952 + 985 1 2954 2953 2955 + 986 1 2957 2956 2958 + 987 1 2960 2959 2961 + 988 1 2963 2962 2964 + 989 1 2966 2965 2967 + 990 1 2969 2968 2970 + 991 1 2972 2971 2973 + 992 1 2975 2974 2976 + 993 1 2978 2977 2979 + 994 1 2981 2980 2982 + 995 1 2984 2983 2985 + 996 1 2987 2986 2988 + 997 1 2990 2989 2991 + 998 1 2993 2992 2994 + 999 1 2996 2995 2997 + 1000 1 2999 2998 3000 + +Pair Coeffs + + 1 0.1553 3.1655 + 2 0.0000 0.0000 + +Bond Coeffs + + 1 450.0000 1.0000 + +Angle Coeffs + + 1 55.0000 109.4700 diff --git a/examples/USER/viscosity/in.1000SPCE.lmp b/examples/USER/viscosity/in.1000SPCE.lmp new file mode 100644 index 0000000000..1da02bae22 --- /dev/null +++ b/examples/USER/viscosity/in.1000SPCE.lmp @@ -0,0 +1,53 @@ +# DFF generated Lammps input file + +units real +atom_style full +boundary p p p + +pair_style lj/cut/coul/long 10.0 +pair_modify mix arithmetic +pair_modify tail yes +kspace_style pppm 1.0e-4 +dielectric 1.0 +special_bonds amber +bond_style harmonic +angle_style harmonic +dihedral_style none +improper_style none + +read_data data.1000SPCE.lmp + +variable T equal 300 +variable P equal 1.0 + +velocity all create ${T} 12345 mom yes rot yes dist gaussian + +timestep 1.0 + +# Constraint ################################## +fix com all momentum 100 linear 1 1 1 +fix rigid all shake 1e-4 20 0 b 1 a 1 + +# Viscosity ################################## +variable A equal 0.02e-5 # angstrom/fs^2 + +fix cos all accelerate/cos ${A} +compute cos all viscosity/cos + +variable density equal density +variable lz equal lz +variable vMax equal c_cos[7] # velocity of atoms at z=0 +variable invVis equal v_vMax/${A}/v_density*39.4784/v_lz/v_lz*100 # reciprocal of viscosity 1/Pa/s + +fix npt all npt temp ${T} ${T} 100 iso ${P} ${P} 1000 +fix_modify npt temp cos + +thermo_style custom step cpu temp press pe density v_vMax v_invVis +thermo_modify temp cos +thermo 100 +################################################ + +dump 1 all custom 10000 dump.lammpstrj id mol type element q xu yu zu +dump_modify 1 sort id element O H + +run 2000 diff --git a/src/USER-VISCOSITY/README b/src/USER-VISCOSITY/README new file mode 100644 index 0000000000..f24bf6c2b5 --- /dev/null +++ b/src/USER-VISCOSITY/README @@ -0,0 +1,8 @@ +This package provides fix and compute styles for calculating viscosity +with the periodic perturbation method, as described in the following paper: + Hess, B. The Journal of Chemical Physics 2002, 116 (1), 209–217. + +There is example script for using this package in examples/USER/viscosity + +The person who created this package is Zheng GONG (z.gong@outlook.com) +at ENS de Lyon. diff --git a/src/USER-VISCOSITY/compute_viscosity_cos.cpp b/src/USER-VISCOSITY/compute_viscosity_cos.cpp new file mode 100644 index 0000000000..44103b501f --- /dev/null +++ b/src/USER-VISCOSITY/compute_viscosity_cos.cpp @@ -0,0 +1,292 @@ +/* ---------------------------------------------------------------------- + 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 author: Zheng GONG (ENS Lyon) +------------------------------------------------------------------------- */ + +#include +#include "compute_viscosity_cos.h" +#include "atom.h" +#include "update.h" +#include "force.h" +#include "domain.h" +#include "comm.h" +#include "group.h" +#include "error.h" +#include "math_const.h" + +using namespace LAMMPS_NS; +using namespace MathConst; + +/* ---------------------------------------------------------------------- */ + +ComputeViscosityCos::ComputeViscosityCos(LAMMPS *lmp, int narg, char **arg) : + Compute(lmp, narg, arg) { + if (narg != 3) error->all(FLERR, "Illegal compute viscosity/cos command"); + + scalar_flag = vector_flag = 1; + size_vector = 7; + extscalar = 0; + extvector = 1; + tempflag = 1; + tempbias = 1; + + maxbias = 0; + vbiasall = NULL; + + vector = new double[7]; +} + +/* ---------------------------------------------------------------------- */ + +ComputeViscosityCos::~ComputeViscosityCos() { + if (!copymode) + delete[] vector; +} + +/* ---------------------------------------------------------------------- */ + +void ComputeViscosityCos::setup() { + dynamic = 0; + if (dynamic_user || group->dynamic[igroup]) dynamic = 1; + dof_compute(); +} + +/* ---------------------------------------------------------------------- */ + +void ComputeViscosityCos::dof_compute() { + adjust_dof_fix(); + natoms_temp = group->count(igroup); + dof = domain->dimension * natoms_temp; + dof -= extra_dof + fix_dof; + if (dof > 0.0) tfactor = force->mvv2e / (dof * force->boltz); + else tfactor = 0.0; +} + +/* ---------------------------------------------------------------------- */ +void ComputeViscosityCos::calc_V() { + double zlo = domain->boxlo[2]; + double zhi = domain->boxhi[2]; + + double **x = atom->x; + double **v = atom->v; + double *mass = atom->mass; + double *rmass = atom->rmass; + int *type = atom->type; + int *mask = atom->mask; + int nlocal = atom->nlocal; + + double massone; + + double V_m[2]; + double V_m_local[2] = {0, 0}; + + for (int i = 0; i < nlocal; i++) + if (mask[i] & groupbit) { + if (rmass) massone = rmass[i]; + else massone = mass[type[i]]; + + V_m_local[0] += + 2 * massone * v[i][0] * cos(MY_2PI * (x[i][2] - zlo) / (zhi - zlo)); + V_m_local[1] += massone; + } + + MPI_Allreduce(V_m_local, V_m, 2, MPI_DOUBLE, MPI_SUM, world); + V = V_m[0] / V_m[1]; +} + +/* ---------------------------------------------------------------------- */ + +double ComputeViscosityCos::compute_scalar() { + invoked_scalar = update->ntimestep; + + double zlo = domain->boxlo[2]; + double zhi = domain->boxhi[2]; + + double **x = atom->x; + double **v = atom->v; + double *mass = atom->mass; + double *rmass = atom->rmass; + int *type = atom->type; + int *mask = atom->mask; + int nlocal = atom->nlocal; + + double t = 0.0; + double vx_acc; + double massone; + + calc_V(); + + for (int i = 0; i < nlocal; i++) + if (mask[i] & groupbit) { + if (rmass) massone = rmass[i]; + else massone = mass[type[i]]; + + vx_acc = V * cos(MY_2PI * (x[i][2] - zlo) / (zhi - zlo)); + t += ((v[i][0] - vx_acc) * (v[i][0] - vx_acc) + v[i][1] * v[i][1] + + v[i][2] * v[i][2]) * massone; + } + + MPI_Allreduce(&t, &scalar, 1, MPI_DOUBLE, MPI_SUM, world); + if (dynamic) dof_compute(); + if (dof < 0.0 && natoms_temp > 0.0) + error->all(FLERR, "Temperature compute degrees of freedom < 0"); + scalar *= tfactor; + return scalar; +} + +/* ---------------------------------------------------------------------- */ + +void ComputeViscosityCos::compute_vector() { + int i; + + invoked_vector = update->ntimestep; + + double zlo = domain->boxlo[2]; + double zhi = domain->boxhi[2]; + + double **x = atom->x; + double **v = atom->v; + double *mass = atom->mass; + double *rmass = atom->rmass; + int *type = atom->type; + int *mask = atom->mask; + int nlocal = atom->nlocal; + + double vx_acc; + + double massone, t[6]; + for (i = 0; i < 6; i++) t[i] = 0.0; + + for (i = 0; i < nlocal; i++) + if (mask[i] & groupbit) { + if (rmass) massone = rmass[i]; + else massone = mass[type[i]]; + + vx_acc = V * cos(MY_2PI * (x[i][2] - zlo) / (zhi - zlo)); + t[0] += massone * (v[i][0] - vx_acc) * (v[i][0] - vx_acc); + t[1] += massone * v[i][1] * v[i][1]; + t[2] += massone * v[i][2] * v[i][2]; + t[3] += massone * (v[i][0] - vx_acc) * v[i][1]; + t[4] += massone * (v[i][0] - vx_acc) * v[i][2]; + t[5] += massone * v[i][1] * v[i][2]; + } + + MPI_Allreduce(t, vector, 6, MPI_DOUBLE, MPI_SUM, world); + for (i = 0; i < 6; i++) vector[i] *= force->mvv2e; + vector[6] = V; +} + + +/* ---------------------------------------------------------------------- + remove velocity bias from atom I to leave thermal velocity +------------------------------------------------------------------------- */ + +void ComputeViscosityCos::remove_bias(int i, double *v) { + + double zlo = domain->boxlo[2]; + double zhi = domain->boxhi[2]; + + double **x = atom->x; + + vbias[0] = V * cos(MY_2PI * (x[i][2] - zlo) / (zhi - zlo)); + vbias[1] = 0; + vbias[2] = 0; + v[0] -= vbias[0]; +// v[1] -= vbias[1]; +// v[2] -= vbias[2]; +} + +/* ---------------------------------------------------------------------- + remove velocity bias from atom I to leave thermal velocity +------------------------------------------------------------------------- */ + +void ComputeViscosityCos::remove_bias_thr(int i, double *v, double *b) { + double zlo = domain->boxlo[2]; + double zhi = domain->boxhi[2]; + + double **x = atom->x; + + b[0] = V * cos(MY_2PI * (x[i][2] - zlo) / (zhi - zlo)); + b[1] = 0; + b[2] = 0; + v[0] -= b[0]; +// v[1] -= b[1]; +// v[2] -= b[2]; +} + +/* ---------------------------------------------------------------------- + remove velocity bias from all atoms to leave thermal velocity +------------------------------------------------------------------------- */ + +void ComputeViscosityCos::remove_bias_all() { + double zlo = domain->boxlo[2]; + double zhi = domain->boxhi[2]; + + double **x = atom->x; + double **v = atom->v; + int *mask = atom->mask; + int nlocal = atom->nlocal; + + for (int i = 0; i < nlocal; i++) + if (mask[i] & groupbit) { + vbiasall[i][0] = V * cos(MY_2PI * (x[i][2] - zlo) / (zhi - zlo)); + vbiasall[i][1] = 0; + vbiasall[i][2] = 0; + v[i][0] -= vbiasall[i][0]; +// v[i][1] -= vbiasall[i][1]; +// v[i][2] -= vbiasall[i][2]; + } +} + +/* ---------------------------------------------------------------------- + add back in velocity bias to atom I removed by remove_bias() + assume remove_bias() was previously called +------------------------------------------------------------------------- */ + +void ComputeViscosityCos::restore_bias(int i, double *v) { + v[0] += vbias[0]; + v[1] += vbias[1]; + v[2] += vbias[2]; +} + +/* ---------------------------------------------------------------------- + add back in velocity bias to atom I removed by remove_bias_thr() + assume remove_bias_thr() was previously called with the same buffer b +------------------------------------------------------------------------- */ + +void ComputeViscosityCos::restore_bias_thr(int i, double *v, double *b) { + v[0] += b[0]; + v[1] += b[1]; + v[2] += b[2]; +} + +/* ---------------------------------------------------------------------- + add back in velocity bias to all atoms removed by remove_bias_all() + assume remove_bias_all() was previously called +------------------------------------------------------------------------- */ + +void ComputeViscosityCos::restore_bias_all() { + double **v = atom->v; + int *mask = atom->mask; + int nlocal = atom->nlocal; + + for (int i = 0; i < nlocal; i++) + if (mask[i] & groupbit) { + v[i][0] += vbiasall[i][0]; + v[i][1] += vbiasall[i][1]; + v[i][2] += vbiasall[i][2]; + } +} + diff --git a/src/USER-VISCOSITY/compute_viscosity_cos.h b/src/USER-VISCOSITY/compute_viscosity_cos.h new file mode 100644 index 0000000000..735cabf05b --- /dev/null +++ b/src/USER-VISCOSITY/compute_viscosity_cos.h @@ -0,0 +1,73 @@ +/* -*- 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 author: Zheng GONG (ENS Lyon) +------------------------------------------------------------------------- */ + +#ifdef COMPUTE_CLASS + +ComputeStyle(viscosity/cos,ComputeViscosityCos) + +#else + +#ifndef LMP_COMPUTE_VISCOSITY_COS_H +#define LMP_COMPUTE_VISCOSITY_COS_H + +#include "compute.h" + +namespace LAMMPS_NS { + +class ComputeViscosityCos : public Compute { + public: + ComputeViscosityCos(class LAMMPS *, int, char **); + virtual ~ComputeViscosityCos(); + void init() {} + void setup(); + virtual double compute_scalar(); + virtual void compute_vector(); + + void remove_bias(int, double *); + void remove_bias_thr(int, double *, double *); + void remove_bias_all(); + void restore_bias(int, double *); + void restore_bias_thr(int, double *, double *); + void restore_bias_all(); + + protected: + double tfactor; + double V; + + void dof_compute(); + void calc_V(); +}; + +} + +#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: Temperature compute degrees of freedom < 0 + +This should not happen if you are calculating the temperature +on a valid set of atoms. + +*/ diff --git a/src/USER-VISCOSITY/fix_accelerate_cos.cpp b/src/USER-VISCOSITY/fix_accelerate_cos.cpp new file mode 100644 index 0000000000..cf40d3ae22 --- /dev/null +++ b/src/USER-VISCOSITY/fix_accelerate_cos.cpp @@ -0,0 +1,93 @@ +/* ---------------------------------------------------------------------- + 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 author: Zheng GONG (ENS Lyon) +------------------------------------------------------------------------- */ + +#include "fix_accelerate_cos.h" +#include "atom.h" +#include "update.h" +#include "modify.h" +#include "domain.h" +#include "region.h" +#include "respa.h" +#include "input.h" +#include "variable.h" +#include "memory.h" +#include "error.h" +#include "force.h" +#include "math_const.h" + +using namespace LAMMPS_NS; +using namespace FixConst; + +/* ---------------------------------------------------------------------- */ + +FixAccelerateCos::FixAccelerateCos(LAMMPS *lmp, int narg, char **arg) : + Fix(lmp, narg, arg) { + if (narg < 4) error->all(FLERR, "Illegal fix accelerate/cos command"); + acceleration = force->numeric(FLERR, arg[3]); +} + +/* ---------------------------------------------------------------------- */ + +FixAccelerateCos::~FixAccelerateCos() { +} + +/* ---------------------------------------------------------------------- */ + +int FixAccelerateCos::setmask() { + int mask = 0; + mask |= POST_FORCE; + return mask; +} + +/* ---------------------------------------------------------------------- */ + +void FixAccelerateCos::init() { +} + +/* ---------------------------------------------------------------------- */ + +void FixAccelerateCos::setup(int vflag) { + post_force(vflag); +} + +/* ---------------------------------------------------------------------- */ + +void FixAccelerateCos::post_force(int vflag) { + double **x = atom->x; + double **f = atom->f; + int *type = atom->type; + double *mass = atom->mass; + double *rmass = atom->rmass; + int *mask = atom->mask; + int nlocal = atom->nlocal; + + double massone, force_x, acc_x; + double zlo = domain->boxlo[2]; + double zhi = domain->boxhi[2]; + + for (int i = 0; i < nlocal; i++) + if (mask[i] & groupbit) { + if (rmass) massone = rmass[i]; + else massone = mass[type[i]]; + + acc_x = acceleration * + cos(MathConst::MY_2PI * (x[i][2] - zlo) / (zhi - zlo)); + force_x = acc_x * massone * force->mvv2e; + + f[i][0] += force_x; + } +} diff --git a/src/USER-VISCOSITY/fix_accelerate_cos.h b/src/USER-VISCOSITY/fix_accelerate_cos.h new file mode 100644 index 0000000000..af59003599 --- /dev/null +++ b/src/USER-VISCOSITY/fix_accelerate_cos.h @@ -0,0 +1,74 @@ +/* -*- 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 author: Zheng GONG (ENS Lyon) +------------------------------------------------------------------------- */ + +#ifdef FIX_CLASS + +FixStyle(accelerate/cos,FixAccelerateCos) + +#else + +#ifndef LMP_FIX_ACCELERATE_COS_H +#define LMP_FIX_ACCELERATE_COS_H + +#include "fix.h" + +namespace LAMMPS_NS { + +class FixAccelerateCos: public Fix { + public: + FixAccelerateCos(class LAMMPS *, int, char **); + virtual ~FixAccelerateCos(); + int setmask(); + virtual void init(); + void setup(int); + virtual void post_force(int); + + protected: + double acceleration; +}; + +} + +#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: Region ID for fix setforce does not exist + +Self-explanatory. + +E: Variable name for fix setforce does not exist + +Self-explanatory. + +E: Variable for fix setforce is invalid style + +Only equal-style variables can be used. + +E: Cannot use non-zero forces in an energy minimization + +Fix setforce cannot be used in this manner. Use fix addforce +instead. + +*/ -- GitLab From a30d4a6c6fe127b6cca463d9e55c1c5c680097c3 Mon Sep 17 00:00:00 2001 From: Zheng Gong Date: Fri, 24 Apr 2020 00:27:09 +0200 Subject: [PATCH 362/717] Add documents and minor fix for USER-VISCOSITY package --- doc/src/Commands_compute.rst | 1 + doc/src/Commands_fix.rst | 1 + doc/src/Packages_details.rst | 27 ++++ doc/src/compute.rst | 1 + doc/src/compute_viscosity_cos.rst | 157 +++++++++++++++++++ doc/src/fix.rst | 1 + doc/src/fix_accelerate_cos.rst | 106 +++++++++++++ examples/USER/viscosity/README | 5 + src/USER-VISCOSITY/README | 2 +- src/USER-VISCOSITY/compute_viscosity_cos.cpp | 3 +- 10 files changed, 302 insertions(+), 2 deletions(-) create mode 100644 doc/src/compute_viscosity_cos.rst create mode 100644 doc/src/fix_accelerate_cos.rst create mode 100644 examples/USER/viscosity/README diff --git a/doc/src/Commands_compute.rst b/doc/src/Commands_compute.rst index 13336fa89b..8230a88986 100644 --- a/doc/src/Commands_compute.rst +++ b/doc/src/Commands_compute.rst @@ -161,5 +161,6 @@ KOKKOS, o = USER-OMP, t = OPT. * :doc:`torque/chunk ` * :doc:`vacf ` * :doc:`vcm/chunk ` + * :doc:`viscosity/cos ` * :doc:`voronoi/atom ` * :doc:`xrd ` diff --git a/doc/src/Commands_fix.rst b/doc/src/Commands_fix.rst index ce7cade0f6..67696912a8 100644 --- a/doc/src/Commands_fix.rst +++ b/doc/src/Commands_fix.rst @@ -22,6 +22,7 @@ OPT. .. table_from_list:: :columns: 5 + * :doc:`accelerate/cos ` * :doc:`adapt ` * :doc:`adapt/fep ` * :doc:`addforce ` diff --git a/doc/src/Packages_details.rst b/doc/src/Packages_details.rst index 8251c5301e..7c8a849f65 100644 --- a/doc/src/Packages_details.rst +++ b/doc/src/Packages_details.rst @@ -104,6 +104,7 @@ page gives those details. * :ref:`USER-UEF ` * :ref:`USER-VTK ` * :ref:`USER-YAFF ` + * :ref:`USER-VISCOSITY ` ---------- @@ -2365,3 +2366,29 @@ which discuss the `QuickFF `_ methodology. * :doc:`pair_style mm3/switch3/coulgauss/long ` * :doc:`pair_style lj/switch3/coulgauss/long ` * examples/USER/yaff + + +---------- + + +.. _PKG-USER-VISCOSITY: + +USER-VISCOSITY package +---------------------- + +**Contents:** + +This package provides fix and compute styles for calculating viscosity +with the periodic perturbation method, as described in the following paper: + +* Hess, B. The Journal of Chemical Physics 2002, 116 (1), 209–217. + +**Author:** Zheng Gong (ENS de Lyon) + +**Supporting info:** + +* src/USER-VISCOSITY: filenames -> commands +* src/USER-VISCOSITY/README +* :doc:`fix accelerate/cos ` +* :doc:`compute viscosity/cos ` +* examples/USER/viscosity diff --git a/doc/src/compute.rst b/doc/src/compute.rst index 0726a502bc..c09ba7fbeb 100644 --- a/doc/src/compute.rst +++ b/doc/src/compute.rst @@ -307,6 +307,7 @@ The individual style names on the :doc:`Commands compute ` doc * :doc:`torque/chunk ` - torque applied on each chunk * :doc:`vacf ` - velocity auto-correlation function of group of atoms * :doc:`vcm/chunk ` - velocity of center-of-mass for each chunk +* :doc:`viscosity/cos ` - velocity profile under cosine-shaped acceleration * :doc:`voronoi/atom ` - Voronoi volume and neighbors for each atom * :doc:`xrd ` - x-ray diffraction intensity on a mesh of reciprocal lattice nodes diff --git a/doc/src/compute_viscosity_cos.rst b/doc/src/compute_viscosity_cos.rst new file mode 100644 index 0000000000..8e7bb2b70e --- /dev/null +++ b/doc/src/compute_viscosity_cos.rst @@ -0,0 +1,157 @@ +.. index:: compute viscosity/cos + +compute viscosity/cos command +============================= + +Syntax +"""""" + + +.. parsed-literal:: + + compute ID group-ID viscosity/cos + +* ID, group-ID are documented in :doc:`compute ` command +* viscosity/cos = style name of this compute command + + +Examples +"""""""" + + +.. parsed-literal:: + + compute cos all viscosity/cos + variable V equal c_cos[7] + variable A equal 0.02E-5 + variable density equal density + variable lz equal lz + variable reciprocalViscosity equal v_V/${A}/v_density*39.4784/v_lz/v_lz*100 + +Description +""""""""""" + +Define a computation that calculates the velocity amplitude of a group of atoms +with an cosine-shaped velocity profile and the temperature of them +after subtracting out the velocity profile before computing the kinetic energy. +A compute of this style can be used by any command that computes a temperature, +e.g. :doc:`thermo_modify `, :doc:`fix npt `, etc. + +This command together with :doc:`fix_accelerate/cos` +enables viscosity calculation with periodic perturbation method, +as described by :ref:`Hess`. +An acceleration along the x-direction is applied to the simulation system +by using :doc:`fix_accelerate/cos` command. +The acceleration is a periodic function along the z-direction: + +.. math:: + + a_{x}(z) = A \cos \left(\frac{2 \pi z}{l_{z}}\right) + +where :math:`A` is the acceleration amplitude, :math:`l_z` is the z-length +of the simulation box. At steady state, the acceleration generates +a velocity profile: + +.. math:: + + v_{x}(z) = V \cos \left(\frac{2 \pi z}{l_{z}}\right) + +The generated velocity amplitude :math:`V` is related to the +shear viscosity :math:`\eta` by: + +.. math:: + + V = \frac{A \rho}{\eta}\left(\frac{l_{z}}{2 \pi}\right)^{2} + + +and it can be obtained from ensemble average of the velocity profile: + +.. math:: + + V = \frac{\sum_i 2 m_{i} v_{i, x} \cos \left(\frac{2 \pi z_i}{l_{z}}\right)}{\sum_i m_{i}} + + +where :math:`m_i`, :math:`v_{i,x}` and :math:`z_i` are the mass, +x-component velocity and z coordinate of a particle. + +After the cosine-shaped collective velocity in :math:`x` direction +has been subtracted for each atom, the temperature is calculated by the formula +KE = dim/2 N k T, where KE = total kinetic energy of the group of +atoms (sum of 1/2 m v\^2), dim = 2 or 3 = dimensionality of the +simulation, N = number of atoms in the group, k = Boltzmann constant, +and T = temperature. + +A kinetic energy tensor, stored as a 6-element vector, is also +calculated by this compute for use in the computation of a pressure +tensor. The formula for the components of the tensor is the same as +the above formula, except that v\^2 is replaced by vx\*vy for the xy +component, etc. The 6 components of the vector are ordered xx, yy, +zz, xy, xz, yz. + +The number of atoms contributing to the temperature is assumed to be +constant for the duration of the run; use the *dynamic* option of the +:doc:`compute_modify ` command if this is not the case. +However, in order to get meaningful result, the group ID of this compute should be all. + +The removal of the cosine-shaped velocity component by this command is +essentially computing the temperature after a "bias" has been removed +from the velocity of the atoms. If this compute is used with a fix +command that performs thermostatting then this bias will be subtracted +from each atom, thermostatting of the remaining thermal velocity will +be performed, and the bias will be added back in. Thermostatting +fixes that work in this way include :doc:`fix nvt `, :doc:`fix temp/rescale `, :doc:`fix temp/berendsen `, and :doc:`fix langevin `. + +This compute subtracts out degrees-of-freedom due to fixes that +constrain molecular motion, such as :doc:`fix shake ` and +:doc:`fix rigid `. This means the temperature of groups of +atoms that include these constraints will be computed correctly. If +needed, the subtracted degrees-of-freedom can be altered using the +*extra* option of the :doc:`compute_modify ` command. + +See the :doc:`Howto thermostat ` doc page for a +discussion of different ways to compute temperature and perform +thermostatting. + + +---------- + + +**Output info:** + +This compute calculates a global scalar (the temperature) and a global +vector of length 7, which can be accessed by indices 1-7. +The first 6 elements of the vector are the KE tensor, +and the 7-th is the cosine-shaped velocity amplitude :math:`V`, +which can be used to calculate the reciprocal viscosity, as shown in the example. +These values can be used by any command that uses global scalar or +vector values from a compute as input. +See the :doc:`Howto output ` doc page for an overview of LAMMPS output options. + +The scalar value calculated by this compute is "intensive". The +first 6 elements of vector values are "extensive", +and the 7-th element of vector values is "intensive". + +The scalar value will be in temperature :doc:`units `. The +first 6 elements of vector values will be in energy :doc:`units `. +The 7-th element of vector value will be in velocity :doc:`units `. + +Restrictions +"""""""""""" + +This command is only available when LAMMPS was built with the USER-VISCOSITY package. + +Related commands +"""""""""""""""" + +:doc:`fix accelerate/cos ` + +Default +""""""" + none + + +---------- + +.. _Hess: + +**(Hess)** Hess, B. The Journal of Chemical Physics 2002, 116 (1), 209–217. diff --git a/doc/src/fix.rst b/doc/src/fix.rst index 2b5ed48ac9..cb2e4bb5b1 100644 --- a/doc/src/fix.rst +++ b/doc/src/fix.rst @@ -165,6 +165,7 @@ The individual style names on the :doc:`Commands fix ` doc page are followed by one or more of (g,i,k,o,t) to indicate which accelerated styles exist. +* :doc:`accelerate/cos ` - apply cosine-shaped acceleration to atoms * :doc:`adapt ` - change a simulation parameter over time * :doc:`adapt/fep ` - enhanced version of fix adapt * :doc:`addforce ` - add a force to each atom diff --git a/doc/src/fix_accelerate_cos.rst b/doc/src/fix_accelerate_cos.rst new file mode 100644 index 0000000000..0a780ae59c --- /dev/null +++ b/doc/src/fix_accelerate_cos.rst @@ -0,0 +1,106 @@ +.. index:: fix accelerate/cos + +fix accelerate/cos command +========================== + +Syntax +"""""" + + +.. parsed-literal:: + + fix ID group-ID accelerate value + +* ID, group-ID are documented in :doc:`fix ` command +* accelerate/cos = style name of this fix command +* value = amplitude of acceleration (in unit of force/mass) + + +Examples +"""""""" + + +.. parsed-literal:: + + fix 1 all accelerate/cos 0.02E-5 + +Description +""""""""""" + +Give each atom a acceleration in x-direciton based on its z coordinate. +The acceleration is a periodic function along the z-direction: + +.. math:: + + a_{x}(z) = A \cos \left(\frac{2 \pi z}{l_{z}}\right) + +where :math:`A` is the acceleration amplitude, :math:`l_z` is the z-length +of the simulation box. +At steady state, the acceleration generates a velocity profile: + +.. math:: + + v_{x}(z) = V \cos \left(\frac{2 \pi z}{l_{z}}\right) + +The generated velocity amplitude :math:`V` is related to the +shear viscosity :math:`\eta` by: + +.. math:: + + V = \frac{A \rho}{\eta}\left(\frac{l_{z}}{2 \pi}\right)^{2} + + +and it can be obtained from ensemble average of the velocity profile: + +.. math:: + + V = \frac{\sum_i 2 m_{i} v_{i, x} \cos \left(\frac{2 \pi z_i}{l_{z}}\right)}{\sum_i m_{i}} + +where :math:`m_i`, :math:`v_{i,x}` and :math:`z_i` are the mass, +x-component velocity and z coordinate of a particle. + +The velocity amplitude :math:`V` can be calculated with :doc:`compute viscosity/cos `, +which enables viscosity calculation with periodic perturbation method, +as described by :ref:`Hess`. +Because the applied acceleration drives the system away from equilibration, +the calculated shear viscosity is lower than the intrinsic viscosity +due to the shear-thinning effect. +Extrapolation to zero acceleration should generally be performed to +predict the zero-shear viscosity. +As the shear stress decreases, the signal-noise ratio decreases rapidly, +the simulation time must be extended accordingly to get converged result. + +In order to get meaningful result, the group ID of this fix should be all. + + +---------- + + +**Restart, fix\_modify, output, run start/stop, minimize info:** + +No information about this fix is written to binary restart files. +None of the fix_modify options are relevant to this fix. +No global or per-atom quantities are stored by this fix for access by various output commands. +No parameter of this fix can be used with the start/stop keywords of the run command. +This fix is not invoked during energy minimization. + +Restrictions +"""""""""""" + +This command is only available when LAMMPS was built with the USER-VISCOSITY package. + +Related commands +"""""""""""""""" + +:doc:`compute viscosity/cos ` + +Default +""""""" + none + + +---------- + +.. _Hess: + +**(Hess)** Hess, B. The Journal of Chemical Physics 2002, 116 (1), 209–217. diff --git a/examples/USER/viscosity/README b/examples/USER/viscosity/README new file mode 100644 index 0000000000..1221509ea7 --- /dev/null +++ b/examples/USER/viscosity/README @@ -0,0 +1,5 @@ +The input script in in.1000SPCE.lmp gives an example on how to calculate +the shear viscosity of SPCE water with the periodic perturbation method. +For a production run, much longer simulation is required. +Note that the acceleration amplitude of `fix accelerate/cos` should be carefully chosen, +and an extrapolation is generally required to get the viscosity at zero-shear. diff --git a/src/USER-VISCOSITY/README b/src/USER-VISCOSITY/README index f24bf6c2b5..13c50ec286 100644 --- a/src/USER-VISCOSITY/README +++ b/src/USER-VISCOSITY/README @@ -2,7 +2,7 @@ This package provides fix and compute styles for calculating viscosity with the periodic perturbation method, as described in the following paper: Hess, B. The Journal of Chemical Physics 2002, 116 (1), 209–217. -There is example script for using this package in examples/USER/viscosity +There is an example script for using this package in examples/USER/viscosity The person who created this package is Zheng GONG (z.gong@outlook.com) at ENS de Lyon. diff --git a/src/USER-VISCOSITY/compute_viscosity_cos.cpp b/src/USER-VISCOSITY/compute_viscosity_cos.cpp index 44103b501f..6f69969759 100644 --- a/src/USER-VISCOSITY/compute_viscosity_cos.cpp +++ b/src/USER-VISCOSITY/compute_viscosity_cos.cpp @@ -38,7 +38,8 @@ ComputeViscosityCos::ComputeViscosityCos(LAMMPS *lmp, int narg, char **arg) : scalar_flag = vector_flag = 1; size_vector = 7; extscalar = 0; - extvector = 1; + extvector = -1; + extlist = new int[7]{1,1,1,1,1,1,0}; tempflag = 1; tempbias = 1; -- GitLab From 0bb41bf00b45bb76e9f17cf5ccd7c3a2378cbb76 Mon Sep 17 00:00:00 2001 From: Zheng Gong Date: Fri, 24 Apr 2020 00:32:46 +0200 Subject: [PATCH 363/717] Add ouput for the example for USER-VISCOSITY package --- examples/USER/viscosity/log.1000SPCE.lammps | 160 ++++++++++++++++++++ 1 file changed, 160 insertions(+) create mode 100644 examples/USER/viscosity/log.1000SPCE.lammps diff --git a/examples/USER/viscosity/log.1000SPCE.lammps b/examples/USER/viscosity/log.1000SPCE.lammps new file mode 100644 index 0000000000..896539a093 --- /dev/null +++ b/examples/USER/viscosity/log.1000SPCE.lammps @@ -0,0 +1,160 @@ +LAMMPS (3 Mar 2020) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:94) + using 1 OpenMP thread(s) per MPI task +# DFF generated Lammps input file + +units real +atom_style full +boundary p p p + +pair_style lj/cut/coul/long 10.0 +pair_modify mix arithmetic +pair_modify tail yes +kspace_style pppm 1.0e-4 +dielectric 1.0 +special_bonds amber +bond_style harmonic +angle_style harmonic +dihedral_style none +improper_style none + +read_data data.1000SPCE.lmp + orthogonal box = (0 0 0) to (31.043 31.043 31.043) + 2 by 2 by 2 MPI processor grid + reading atoms ... + 3000 atoms + scanning bonds ... + 2 = max bonds/atom + scanning angles ... + 1 = max angles/atom + reading bonds ... + 2000 bonds + reading angles ... + 1000 angles + 2 = max # of 1-2 neighbors + 1 = max # of 1-3 neighbors + 1 = max # of 1-4 neighbors + 2 = max # of special neighbors + special bonds CPU = 0.00114917 secs + read_data CPU = 0.00953543 secs + +variable T equal 300 +variable P equal 1.0 + +velocity all create ${T} 12345 mom yes rot yes dist gaussian +velocity all create 300 12345 mom yes rot yes dist gaussian + +timestep 1.0 + +# Constraint ################################## +fix com all momentum 100 linear 1 1 1 +fix rigid all shake 1e-4 20 0 b 1 a 1 + 0 = # of size 2 clusters + 0 = # of size 3 clusters + 0 = # of size 4 clusters + 1000 = # of frozen angles + find clusters CPU = 0.000442737 secs + +# Viscosity ################################## +variable A equal 0.02e-5 # angstrom/fs^2 + +fix cos all accelerate/cos ${A} +fix cos all accelerate/cos 2e-07 +compute cos all viscosity/cos + +variable density equal density +variable lz equal lz +variable vMax equal c_cos[7] # velocity of atoms at z=0 +variable invVis equal v_vMax/${A}/v_density*39.4784/v_lz/v_lz*100 # reciprocal of viscosity 1/Pa/s +variable invVis equal v_vMax/2e-07/v_density*39.4784/v_lz/v_lz*100 + +fix npt all npt temp ${T} ${T} 100 iso ${P} ${P} 1000 +fix npt all npt temp 300 ${T} 100 iso ${P} ${P} 1000 +fix npt all npt temp 300 300 100 iso ${P} ${P} 1000 +fix npt all npt temp 300 300 100 iso 1 ${P} 1000 +fix npt all npt temp 300 300 100 iso 1 1 1000 +fix_modify npt temp cos + +thermo_style custom step cpu temp press pe density v_vMax v_invVis +thermo_modify temp cos +thermo 100 +################################################ + +dump 1 all custom 10000 dump.lammpstrj id mol type element q xu yu zu +dump_modify 1 sort id element O H + +run 2000 +PPPM initialization ... + using 12-bit tables for long-range coulomb (src/kspace.cpp:332) + G vector (1/distance) = 0.263539 + grid = 16 16 16 + stencil order = 5 + estimated absolute RMS force accuracy = 0.0325342 + estimated relative force accuracy = 9.79757e-05 + using double precision MKL FFT + 3d grid and FFT values/proc = 3375 512 +Neighbor list info ... + update every 1 steps, delay 10 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 12 + ghost atom cutoff = 12 + binsize = 6, bins = 6 6 6 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair lj/cut/coul/long, perpetual + attributes: half, newton on + pair build: half/bin/newton + stencil: half/bin/3d/newton + bin: standard +Per MPI rank memory allocation (min/avg/max) = 10.14 | 10.14 | 10.14 Mbytes +Step CPU Temp Press PotEng Density v_vMax v_invVis + 0 0 450.04468 9838.6886 -7651.736 0.99999331 0.0001293705 2649.9663 + 100 0.33736925 497.65155 2024.4827 -8342.2499 0.98595028 0.00019602427 4034.2452 + 200 0.67116638 446.48518 27.075082 -8908.9684 0.9652009 0.00027615455 5723.7907 + 300 0.99760895 401.79875 -776.99871 -9381.8986 0.95205822 0.00019626685 4086.6103 + 400 1.3239019 369.65373 -510.5336 -9803.6463 0.94817309 0.00022998514 4795.2142 + 500 1.6488092 343.35807 -936.31982 -10146.023 0.94840581 0.0001434423 2990.5423 + 600 1.9826063 319.86131 -1381.3302 -10405.812 0.95459202 6.6411532e-05 1381.5767 + 700 2.3172637 307.74606 -98.775733 -10643.5 0.96669652 0.00010446317 2164.0664 + 800 2.6562841 305.14214 -540.57804 -10865.742 0.97808367 5.4381233e-05 1122.1765 + 900 2.9938415 288.01316 639.00486 -10925.39 0.98686357 0.00010878474 2238.1355 + 1000 3.327893 295.07773 -226.06503 -11033.826 0.99128496 0.00011935058 2451.8608 + 1100 3.6618862 299.21578 306.34231 -11049.152 0.99552203 8.9538943e-05 1836.8166 + 1200 3.9984287 301.82462 85.804646 -11013.564 0.99713434 0.00015912276 3262.51 + 1300 4.3320735 308.6009 268.08897 -11009.836 0.99695358 0.00026212596 5374.72 + 1400 4.668875 298.36903 -258.75495 -10962.299 0.99503447 0.00033087355 6788.7027 + 1500 5.0003694 299.96073 99.512082 -10980.551 0.99315631 0.00033996557 6979.6425 + 1600 5.3367337 304.18018 -500.65441 -11002.054 0.9914558 0.00039075642 8026.9849 + 1700 5.6780828 301.63978 -499.07458 -10992.88 0.99234354 0.00038101175 7824.4738 + 1800 6.0140638 303.25858 640.03432 -11053.335 0.99553958 0.00041336203 8479.7267 + 1900 6.3532521 301.40882 208.28331 -11119.481 0.99534534 0.00032474734 6662.3144 + 2000 6.6938104 298.0462 -236.47954 -11162.212 0.99421846 0.00023869721 4898.8129 +Loop time of 6.69387 on 8 procs for 2000 steps with 3000 atoms + +Performance: 25.815 ns/day, 0.930 hours/ns, 298.781 timesteps/s +99.7% CPU use with 8 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 4.36 | 4.4981 | 4.6781 | 5.1 | 67.20 +Bond | 0.00074545 | 0.00088463 | 0.0012464 | 0.0 | 0.01 +Kspace | 0.86696 | 1.0476 | 1.1863 | 10.5 | 15.65 +Neigh | 0.37733 | 0.37785 | 0.3784 | 0.1 | 5.64 +Comm | 0.19874 | 0.20168 | 0.20729 | 0.6 | 3.01 +Output | 0.0015529 | 0.0015803 | 0.0017546 | 0.2 | 0.02 +Modify | 0.54083 | 0.55143 | 0.55445 | 0.6 | 8.24 +Other | | 0.01483 | | | 0.22 + +Nlocal: 375 ave 385 max 361 min +Histogram: 1 1 0 0 1 0 2 0 1 2 +Nghost: 5772.25 ave 5789 max 5757 min +Histogram: 1 1 2 0 0 0 2 0 0 2 +Neighs: 135285 ave 144189 max 127550 min +Histogram: 1 2 1 1 0 0 0 0 1 2 + +Total # of neighbors = 1082280 +Ave neighs/atom = 360.76 +Ave special neighs/atom = 2 +Neighbor list builds = 101 +Dangerous builds = 1 +Total wall time: 0:00:06 -- GitLab From 9266c743700202f90b452dd597ea78d7d8cb1959 Mon Sep 17 00:00:00 2001 From: Zheng Gong Date: Fri, 24 Apr 2020 15:30:20 +0200 Subject: [PATCH 364/717] move fix_accelerate_cos and compute_viscosity_cos to USER-MISC --- doc/src/Packages_details.rst | 27 ------------------- doc/src/compute_viscosity_cos.rst | 2 +- doc/src/fix_accelerate_cos.rst | 2 +- examples/USER/{ => misc}/viscosity/README | 0 .../{ => misc}/viscosity/data.1000SPCE.lmp | 0 .../USER/{ => misc}/viscosity/in.1000SPCE.lmp | 0 .../{ => misc}/viscosity/log.1000SPCE.lammps | 0 src/USER-MISC/README | 2 ++ .../compute_viscosity_cos.cpp | 2 +- .../compute_viscosity_cos.h | 2 +- .../fix_accelerate_cos.cpp | 2 +- .../fix_accelerate_cos.h | 2 +- src/USER-VISCOSITY/README | 8 ------ 13 files changed, 8 insertions(+), 41 deletions(-) rename examples/USER/{ => misc}/viscosity/README (100%) rename examples/USER/{ => misc}/viscosity/data.1000SPCE.lmp (100%) rename examples/USER/{ => misc}/viscosity/in.1000SPCE.lmp (100%) rename examples/USER/{ => misc}/viscosity/log.1000SPCE.lammps (100%) rename src/{USER-VISCOSITY => USER-MISC}/compute_viscosity_cos.cpp (99%) rename src/{USER-VISCOSITY => USER-MISC}/compute_viscosity_cos.h (96%) rename src/{USER-VISCOSITY => USER-MISC}/fix_accelerate_cos.cpp (97%) rename src/{USER-VISCOSITY => USER-MISC}/fix_accelerate_cos.h (96%) delete mode 100644 src/USER-VISCOSITY/README diff --git a/doc/src/Packages_details.rst b/doc/src/Packages_details.rst index 7c8a849f65..8251c5301e 100644 --- a/doc/src/Packages_details.rst +++ b/doc/src/Packages_details.rst @@ -104,7 +104,6 @@ page gives those details. * :ref:`USER-UEF ` * :ref:`USER-VTK ` * :ref:`USER-YAFF ` - * :ref:`USER-VISCOSITY ` ---------- @@ -2366,29 +2365,3 @@ which discuss the `QuickFF `_ methodology. * :doc:`pair_style mm3/switch3/coulgauss/long ` * :doc:`pair_style lj/switch3/coulgauss/long ` * examples/USER/yaff - - ----------- - - -.. _PKG-USER-VISCOSITY: - -USER-VISCOSITY package ----------------------- - -**Contents:** - -This package provides fix and compute styles for calculating viscosity -with the periodic perturbation method, as described in the following paper: - -* Hess, B. The Journal of Chemical Physics 2002, 116 (1), 209–217. - -**Author:** Zheng Gong (ENS de Lyon) - -**Supporting info:** - -* src/USER-VISCOSITY: filenames -> commands -* src/USER-VISCOSITY/README -* :doc:`fix accelerate/cos ` -* :doc:`compute viscosity/cos ` -* examples/USER/viscosity diff --git a/doc/src/compute_viscosity_cos.rst b/doc/src/compute_viscosity_cos.rst index 8e7bb2b70e..033a7f0956 100644 --- a/doc/src/compute_viscosity_cos.rst +++ b/doc/src/compute_viscosity_cos.rst @@ -138,7 +138,7 @@ The 7-th element of vector value will be in velocity :doc:`units `. Restrictions """""""""""" -This command is only available when LAMMPS was built with the USER-VISCOSITY package. +This command is only available when LAMMPS was built with the USER-MISC package. Related commands """""""""""""""" diff --git a/doc/src/fix_accelerate_cos.rst b/doc/src/fix_accelerate_cos.rst index 0a780ae59c..60281d4acd 100644 --- a/doc/src/fix_accelerate_cos.rst +++ b/doc/src/fix_accelerate_cos.rst @@ -87,7 +87,7 @@ This fix is not invoked during energy minimization. Restrictions """""""""""" -This command is only available when LAMMPS was built with the USER-VISCOSITY package. +This command is only available when LAMMPS was built with the USER-MISC package. Related commands """""""""""""""" diff --git a/examples/USER/viscosity/README b/examples/USER/misc/viscosity/README similarity index 100% rename from examples/USER/viscosity/README rename to examples/USER/misc/viscosity/README diff --git a/examples/USER/viscosity/data.1000SPCE.lmp b/examples/USER/misc/viscosity/data.1000SPCE.lmp similarity index 100% rename from examples/USER/viscosity/data.1000SPCE.lmp rename to examples/USER/misc/viscosity/data.1000SPCE.lmp diff --git a/examples/USER/viscosity/in.1000SPCE.lmp b/examples/USER/misc/viscosity/in.1000SPCE.lmp similarity index 100% rename from examples/USER/viscosity/in.1000SPCE.lmp rename to examples/USER/misc/viscosity/in.1000SPCE.lmp diff --git a/examples/USER/viscosity/log.1000SPCE.lammps b/examples/USER/misc/viscosity/log.1000SPCE.lammps similarity index 100% rename from examples/USER/viscosity/log.1000SPCE.lammps rename to examples/USER/misc/viscosity/log.1000SPCE.lammps diff --git a/src/USER-MISC/README b/src/USER-MISC/README index 91d630e560..f34a9c243a 100644 --- a/src/USER-MISC/README +++ b/src/USER-MISC/README @@ -38,6 +38,7 @@ compute momentum, Rupert Nash (University of Edinburgh), r.nash at epcc.ed.ac.uk compute stress/mop, Romain Vermorel (U Pau) & Laurent Joly (U Lyon), romain.vermorel at univ-pau.fr & ljoly.ulyon at gmail.com, 5 Sep 18 compute stress/mop/profile, Romain Vermorel (U Pau) & Laurent Joly (U Lyon), romain.vermorel at univ-pau.fr & ljoly.ulyon at gmail.com, 5 Sep 18 compute temp/rotate, Laurent Joly (U Lyon), ljoly.ulyon at gmail.com, 8 Aug 11 +compute viscosity/cos, Zheng Gong (ENS de Lyon), z.gong@outlook.com, 24 Aug 20 compute PRESSURE/GREM, David Stelter, dstelter@bu.edu, 22 Nov 16 dihedral_style cosine/shift/exp, Carsten Svaneborg, science at zqex.dk, 8 Aug 11 dihedral_style fourier, Loukas Peristeras, loukas.peristeras at scienomics.com, 27 Oct 12 @@ -46,6 +47,7 @@ dihedral_style quadratic, Loukas Peristeras, loukas.peristeras at scienomics.com dihedral_style spherical, Andrew Jewett, jewett.aij@gmail.com, 15 Jul 16 dihedral_style table, Andrew Jewett, jewett.aij@gmail.com, 10 Jan 12 dihedral_style table/cut, Mike Salerno, ksalerno@pha.jhu.edu, 11 May 18 +fix accelerate/cos, Zheng Gong (ENS de Lyon), z.gong@outlook.com, 24 Aug 20 fix addtorque, Laurent Joly (U Lyon), ljoly.ulyon at gmail.com, 8 Aug 11 fix ave/correlate/long, Jorge Ramirez (UPM Madrid), jorge.ramirez at upm.es, 21 Oct 2015 fix electron/stopping, Konstantin Avchaciov, k.avchachov at gmail.com, 26 Feb 2019 diff --git a/src/USER-VISCOSITY/compute_viscosity_cos.cpp b/src/USER-MISC/compute_viscosity_cos.cpp similarity index 99% rename from src/USER-VISCOSITY/compute_viscosity_cos.cpp rename to src/USER-MISC/compute_viscosity_cos.cpp index 6f69969759..64103d2653 100644 --- a/src/USER-VISCOSITY/compute_viscosity_cos.cpp +++ b/src/USER-MISC/compute_viscosity_cos.cpp @@ -12,7 +12,7 @@ ------------------------------------------------------------------------- */ /* ---------------------------------------------------------------------- - Contributing author: Zheng GONG (ENS Lyon) + Contributing author: Zheng GONG (ENS de Lyon, z.gong@outlook.com) ------------------------------------------------------------------------- */ #include diff --git a/src/USER-VISCOSITY/compute_viscosity_cos.h b/src/USER-MISC/compute_viscosity_cos.h similarity index 96% rename from src/USER-VISCOSITY/compute_viscosity_cos.h rename to src/USER-MISC/compute_viscosity_cos.h index 735cabf05b..7bc27a9541 100644 --- a/src/USER-VISCOSITY/compute_viscosity_cos.h +++ b/src/USER-MISC/compute_viscosity_cos.h @@ -12,7 +12,7 @@ ------------------------------------------------------------------------- */ /* ---------------------------------------------------------------------- - Contributing author: Zheng GONG (ENS Lyon) + Contributing author: Zheng GONG (ENS de Lyon, z.gong@outlook.com) ------------------------------------------------------------------------- */ #ifdef COMPUTE_CLASS diff --git a/src/USER-VISCOSITY/fix_accelerate_cos.cpp b/src/USER-MISC/fix_accelerate_cos.cpp similarity index 97% rename from src/USER-VISCOSITY/fix_accelerate_cos.cpp rename to src/USER-MISC/fix_accelerate_cos.cpp index cf40d3ae22..73a154255a 100644 --- a/src/USER-VISCOSITY/fix_accelerate_cos.cpp +++ b/src/USER-MISC/fix_accelerate_cos.cpp @@ -12,7 +12,7 @@ ------------------------------------------------------------------------- */ /* ---------------------------------------------------------------------- - Contributing author: Zheng GONG (ENS Lyon) + Contributing author: Zheng GONG (ENS de Lyon, z.gong@outlook.com) ------------------------------------------------------------------------- */ #include "fix_accelerate_cos.h" diff --git a/src/USER-VISCOSITY/fix_accelerate_cos.h b/src/USER-MISC/fix_accelerate_cos.h similarity index 96% rename from src/USER-VISCOSITY/fix_accelerate_cos.h rename to src/USER-MISC/fix_accelerate_cos.h index af59003599..1204cec260 100644 --- a/src/USER-VISCOSITY/fix_accelerate_cos.h +++ b/src/USER-MISC/fix_accelerate_cos.h @@ -12,7 +12,7 @@ ------------------------------------------------------------------------- */ /* ---------------------------------------------------------------------- - Contributing author: Zheng GONG (ENS Lyon) + Contributing author: Zheng GONG (ENS de Lyon, z.gong@outlook.com) ------------------------------------------------------------------------- */ #ifdef FIX_CLASS diff --git a/src/USER-VISCOSITY/README b/src/USER-VISCOSITY/README deleted file mode 100644 index 13c50ec286..0000000000 --- a/src/USER-VISCOSITY/README +++ /dev/null @@ -1,8 +0,0 @@ -This package provides fix and compute styles for calculating viscosity -with the periodic perturbation method, as described in the following paper: - Hess, B. The Journal of Chemical Physics 2002, 116 (1), 209–217. - -There is an example script for using this package in examples/USER/viscosity - -The person who created this package is Zheng GONG (z.gong@outlook.com) -at ENS de Lyon. -- GitLab From 47b06cf541c1671ffeeadfac1a55475debd94c57 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Fri, 24 Apr 2020 09:51:13 -0600 Subject: [PATCH 365/717] github templates: turn comments in real comments --- .github/ISSUE_TEMPLATE/bug_report.md | 12 ++++++------ .github/ISSUE_TEMPLATE/feature_request.md | 6 +++--- .github/ISSUE_TEMPLATE/generic.md | 6 +++--- .github/PULL_REQUEST_TEMPLATE.md | 14 +++++++------- .github/PULL_REQUEST_TEMPLATE/bug_fix.md | 14 +++++++------- .../maintenance_refactoring.md | 10 +++++----- .github/PULL_REQUEST_TEMPLATE/new_feature.md | 16 ++++++++-------- .../PULL_REQUEST_TEMPLATE/update_enhancement.md | 12 ++++++------ 8 files changed, 45 insertions(+), 45 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index 91b7e2bf48..0d1d3b0364 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -9,24 +9,24 @@ assignees: '' **Summary** -_Please provide a clear and concise description of what the bug is._ + **LAMMPS Version and Platform** -_Please specify precisely which LAMMPS version this issue was detected with (the first line of the output) and what platform (operating system and its version, hardware) you are running on. If possible, test with the most recent LAMMPS patch version_ + **Expected Behavior** -_Describe the expected behavior. Quote from the LAMMPS manual where needed, or explain why the expected behavior is meaningful, especially when it differs from the manual_ + **Actual Behavior** -_Describe the actual behavior, how it differs from the expected behavior, and how this can be observed. Try to be specific and do **not** use vague terms like "doesn't work" or "wrong result". Do not assume that the person reading this has any experience with or knowledge of your specific area of research._ + **Steps to Reproduce** -_Describe the steps required to (quickly) reproduce the issue. You can attach (small) files to the section below or add URLs where to download an archive with all necessary files. Please try to create an input set that is as minimal and small as possible and reproduces the bug as quickly as possible. **NOTE:** the less effort and time it takes to reproduce your reported bug, the more likely it becomes, that somebody will look into it and fix the problem._ + **Further Information, Files, and Links** -_Put any additional information here, attach relevant text or image files and URLs to external sites, e.g. relevant publications_ + diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md index a3a70c0d5a..0334e086fc 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -9,12 +9,12 @@ assignees: '' **Summary** -_Please provide a brief and concise description of the suggested feature or change_ + **Detailed Description** -_Please explain how you would like to see LAMMPS enhanced, what feature(s) you are looking for, what specific problems this will solve. If possible, provide references to relevant background information like publications or web pages, and whether you are planning to implement the enhancement yourself or would like to participate in the implementation. If applicable add a reference to an existing bug report or issue that this will address._ + **Further Information, Files, and Links** -_Put any additional information here, attach relevant text or image files and URLs to external sites, e.g. relevant publications_ + diff --git a/.github/ISSUE_TEMPLATE/generic.md b/.github/ISSUE_TEMPLATE/generic.md index 15d2763919..9e5d908bbc 100644 --- a/.github/ISSUE_TEMPLATE/generic.md +++ b/.github/ISSUE_TEMPLATE/generic.md @@ -9,13 +9,13 @@ assignees: '' **Summary** -_Please provide a clear and concise description of what this issue report is about._ + **LAMMPS Version and Platform** -_Please specify precisely which LAMMPS version this issue was detected with (the first line of the output) and what platform (operating system and its version, hardware) you are running on. If possible, test with the most recent LAMMPS patch version_ + **Details** -_Please explain the issue in detail here_ + diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 9e43aa0244..6ef945d8d4 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -1,14 +1,14 @@ **Summary** -_Briefly describe the new feature(s), enhancement(s), or bugfix(es) included in this pull request._ + **Related Issues** -_If this addresses an open GitHub issue for this project, please mention the issue number here, and describe the relation. Use the phrases `fixes #221` or `closes #135`, when you want an issue to be automatically closed when the pull request is merged_ + **Author(s)** -_Please state name and affiliation of the author or authors that should be credited with the changes in this pull request. If this pull request adds new files to the distribution, please also provide a suitable "long-lived" e-mail address (ideally something that can outlive your institution's e-mail, in case you change jobs) for the *corresponding* author, i.e. the person the LAMMPS developers can contact directly with questions and requests related to maintenance and support of this contributed code._ + **Licensing** @@ -16,15 +16,15 @@ By submitting this pull request, I agree, that my contribution will be included **Backward Compatibility** -_Please state whether any changes in the pull request will break backward compatibility for inputs, and - if yes - explain what has been changed and why_ + **Implementation Notes** -_Provide any relevant details about how the changes are implemented, how correctness was verified, how other features - if any - in LAMMPS are affected_ + **Post Submission Checklist** -_Please check the fields below as they are completed **after** the pull request has been submitted. Delete lines that don't apply_ + - [ ] The feature or features in this pull request is complete - [ ] Licensing information is complete @@ -39,6 +39,6 @@ _Please check the fields below as they are completed **after** the pull request **Further Information, Files, and Links** -_Put any additional information here, attach relevant text or image files, and URLs to external sites (e.g. DOIs or webpages)_ + diff --git a/.github/PULL_REQUEST_TEMPLATE/bug_fix.md b/.github/PULL_REQUEST_TEMPLATE/bug_fix.md index cea04c6873..a5a0b8c489 100644 --- a/.github/PULL_REQUEST_TEMPLATE/bug_fix.md +++ b/.github/PULL_REQUEST_TEMPLATE/bug_fix.md @@ -9,15 +9,15 @@ assignees: '' **Summary** -_Briefly describe the bug or bugs, that are eliminated by this pull request._ + **Related Issue(s)** -_If this request addresses or is related to an existing (open) GitHub issue, e.g. a bug report, mention the issue number number here following a pound sign (aka hashmark), e.g.`#222`._ + **Author(s)** -_Please state name and affiliation of the author or authors that should be credited with the changes in this pull request_ + **Licensing** @@ -25,18 +25,18 @@ By submitting this pull request I implicitly accept, that my submission is subje **Backward Compatibility** -_Please state whether any changes in the pull request break backward compatibility for inputs, and - if yes - explain what has been changed and why_ + **Detailed Description** -_Provide any relevant details about how the fixed bug can be reproduced, how the changes are implemented, how correctness was verified, how other features - if any - in LAMMPS are affected_ + ## Post Submission Checklist -_Please check the fields below as they are completed *after* the pull request is submitted_ + - [ ] The code in this pull request is complete - [ ] The source code follows the LAMMPS formatting guidelines ## Further Information, Files, and Links -_Put any additional information here, attach relevant text or image files, and URLs to external sites (e.g. to download input decks for testing)_ + diff --git a/.github/PULL_REQUEST_TEMPLATE/maintenance_refactoring.md b/.github/PULL_REQUEST_TEMPLATE/maintenance_refactoring.md index b3599cb36d..b7bf40a1e8 100644 --- a/.github/PULL_REQUEST_TEMPLATE/maintenance_refactoring.md +++ b/.github/PULL_REQUEST_TEMPLATE/maintenance_refactoring.md @@ -9,15 +9,15 @@ assignees: '' **Summary** -_Briefly describe the included changes._ + **Related Issue(s)** -_If this request addresses or is related to an existing (open) GitHub issue, e.g. a bug report, mention the issue number number here following a pound sign (aka hashmark), e.g.`#222`. + **Licensing** @@ -25,11 +25,11 @@ By submitting this pull request I implicitly accept, that my submission is subje **Detailed Description** -_Provide any relevant details about the included changes._ + ## Post Submission Checklist -_Please check the fields below as they are completed *after* the pull request is submitted_ + - [ ] The pull request is complete - [ ] The source code follows the LAMMPS formatting guidelines diff --git a/.github/PULL_REQUEST_TEMPLATE/new_feature.md b/.github/PULL_REQUEST_TEMPLATE/new_feature.md index e9d16a0fc7..563a9be4aa 100644 --- a/.github/PULL_REQUEST_TEMPLATE/new_feature.md +++ b/.github/PULL_REQUEST_TEMPLATE/new_feature.md @@ -9,34 +9,34 @@ assignees: '' **Summary** -_Briefly describe the new feature(s) included in this pull request._ + **Related Issues** -_If this addresses an existing (open) GitHub issue, e.g. a feature request, mention the issue number here following a pound sign (aka hashmark), e.g. `#331`._ + **Author(s)** -_Please state name and affiliation of the author or authors that should be credited with the features added in this pull request. Please provide a suitable "long-lived" e-mail address (e.g. from gmail, yahoo, outlook, etc.) for the *corresponding* author, i.e. the person the LAMMPS developers can contact directly with questions and requests related to maintenance and support of this code. now and in the future_ + **Licensing** -_Please add *yes* or *no* to the following two statements (please contact @lammps/core if you have questions about this)_ + My contribution may be licensed as GPL v2 (default LAMMPS license): My contribution may be licensed as LGPL (for use as a library with proprietary software): **Backward Compatibility** -_Please state if any of the changes in this pull request will affect backward compatibility for inputs, and - if yes - explain what has been changed and why_ + **Implementation Notes** -_Provide any relevant details about how the new features are implemented, how correctness was verified, what platforms (OS, compiler, MPI, hardware, number of processors, accelerator(s)) it was tested on_ + ## Post Submission Checklist -_Please check the fields below as they are completed *after* the pull request has been submitted_ + - [ ] The feature or features in this pull request is complete - [ ] Licensing information is complete @@ -51,6 +51,6 @@ _Please check the fields below as they are completed *after* the pull request ha ## Further Information, Files, and Links -_Put any additional information here, attach relevant text or image files, and URLs to external sites (e.g. DOIs or webpages)_ + diff --git a/.github/PULL_REQUEST_TEMPLATE/update_enhancement.md b/.github/PULL_REQUEST_TEMPLATE/update_enhancement.md index 52ef91e6c1..9edfb587c0 100644 --- a/.github/PULL_REQUEST_TEMPLATE/update_enhancement.md +++ b/.github/PULL_REQUEST_TEMPLATE/update_enhancement.md @@ -9,11 +9,11 @@ assignees: '' **Summary** -_Briefly describe what kind of updates or enhancements for a package or feature are included. If you are not the original author of the package or feature, please mention, whether your contribution was created independently or in collaboration/cooperation with the original author._ + **Author(s)** -_Please state name and affiliation of the author or authors that should be credited with the changes in this pull request_ + **Licensing** @@ -21,15 +21,15 @@ By submitting this pull request I implicitly accept, that my submission is subje **Backward Compatibility** -_Please state whether any changes in the pull request break backward compatibility for inputs, and - if yes - explain what has been changed and why_ + **Implementation Notes** -_Provide any relevant details about how the changes are implemented, how correctness was verified, how other features - if any - in LAMMPS are affected_ + **Post Submission Checklist** -_Please check the fields below as they are completed_ + - [ ] The feature or features in this pull request is complete - [ ] Suitable updates to the existing docs are included - [ ] One or more example input decks are included @@ -37,6 +37,6 @@ _Please check the fields below as they are completed_ **Further Information, Files, and Links** -_Put any additional information here, attach relevant text or image files, and URLs to external sites (e.g. DOIs or webpages)_ + -- GitLab From cb2a9e4329e5e13fd169e6d9607c32e7db234a9c Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Fri, 24 Apr 2020 09:59:29 -0600 Subject: [PATCH 366/717] Clear sharedsize for flat method --- src/KOKKOS/npair_kokkos.cpp | 19 ++++++++++++++----- src/KOKKOS/npair_kokkos.h | 25 +++++++++++-------------- 2 files changed, 25 insertions(+), 19 deletions(-) diff --git a/src/KOKKOS/npair_kokkos.cpp b/src/KOKKOS/npair_kokkos.cpp index 0de8d5173d..cbea210693 100644 --- a/src/KOKKOS/npair_kokkos.cpp +++ b/src/KOKKOS/npair_kokkos.cpp @@ -219,12 +219,12 @@ void NPairKokkos::build(NeighList *list_) #endif if (GHOST) { - NPairKokkosBuildFunctorGhost f(data,atoms_per_bin * 5 * sizeof(X_FLOAT) * factor); + NPairKokkosBuildFunctorGhost f(data); Kokkos::parallel_for(nall, f); } else { if (newton_pair) { if (SIZE) { - NPairKokkosBuildFunctorSize f(data,atoms_per_bin * 5 * sizeof(X_FLOAT) * factor); + NPairKokkosBuildFunctorSize f(data,atoms_per_bin * 5 * sizeof(X_FLOAT) * factor); #ifdef KOKKOS_ENABLE_CUDA if (ExecutionSpaceFromDevice::space == Device) { int team_size = atoms_per_bin*factor; @@ -232,7 +232,10 @@ void NPairKokkos::build(NeighList *list_) if (team_size <= team_size_max) { Kokkos::TeamPolicy config((mbins+factor-1)/factor,team_size); Kokkos::parallel_for(config, f); - } else Kokkos::parallel_for(nall, f); // fall back to flat method + } else { // fall back to flat method + f.sharedsize = 0; + Kokkos::parallel_for(nall, f); + } } else Kokkos::parallel_for(nall, f); #else @@ -247,7 +250,10 @@ void NPairKokkos::build(NeighList *list_) if (team_size <= team_size_max) { Kokkos::TeamPolicy config((mbins+factor-1)/factor,team_size); Kokkos::parallel_for(config, f); - } else Kokkos::parallel_for(nall, f); // fall back to flat method + } else { // fall back to flat method + f.sharedsize = 0; + Kokkos::parallel_for(nall, f); + } } else Kokkos::parallel_for(nall, f); #else @@ -264,7 +270,10 @@ void NPairKokkos::build(NeighList *list_) if (team_size <= team_size_max) { Kokkos::TeamPolicy config((mbins+factor-1)/factor,team_size); Kokkos::parallel_for(config, f); - } else Kokkos::parallel_for(nall, f); // fall back to flat method + } else { // fall back to flat method + f.sharedsize = 0; + Kokkos::parallel_for(nall, f); + } } else Kokkos::parallel_for(nall, f); #else diff --git a/src/KOKKOS/npair_kokkos.h b/src/KOKKOS/npair_kokkos.h index c02c174b57..6ed1debf7c 100644 --- a/src/KOKKOS/npair_kokkos.h +++ b/src/KOKKOS/npair_kokkos.h @@ -379,11 +379,11 @@ struct NPairKokkosBuildFunctor { typedef DeviceType device_type; const NeighborKokkosExecute c; - const size_t sharedsize; + size_t sharedsize; NPairKokkosBuildFunctor(const NeighborKokkosExecute &_c, - const size_t _sharedsize):c(_c), - sharedsize(_sharedsize) {}; + size_t _sharedsize):c(_c), + sharedsize(_sharedsize) {} KOKKOS_INLINE_FUNCTION void operator() (const int & i) const { @@ -404,11 +404,11 @@ struct NPairKokkosBuildFunctor { typedef LMPHostType device_type; const NeighborKokkosExecute c; - const size_t sharedsize; + size_t sharedsize; NPairKokkosBuildFunctor(const NeighborKokkosExecute &_c, - const size_t _sharedsize):c(_c), - sharedsize(_sharedsize) {}; + size_t _sharedsize):c(_c), + sharedsize(_sharedsize) {} KOKKOS_INLINE_FUNCTION void operator() (const int & i) const { @@ -423,11 +423,8 @@ struct NPairKokkosBuildFunctorGhost { typedef DeviceType device_type; const NeighborKokkosExecute c; - const size_t sharedsize; - NPairKokkosBuildFunctorGhost(const NeighborKokkosExecute &_c, - const size_t _sharedsize):c(_c), - sharedsize(_sharedsize) {}; + NPairKokkosBuildFunctorGhost(const NeighborKokkosExecute &_c):c(_c) {} KOKKOS_INLINE_FUNCTION void operator() (const int & i) const { @@ -440,10 +437,10 @@ struct NPairKokkosBuildFunctorSize { typedef DeviceType device_type; const NeighborKokkosExecute c; - const size_t sharedsize; + size_t sharedsize; NPairKokkosBuildFunctorSize(const NeighborKokkosExecute &_c, - const size_t _sharedsize): c(_c), sharedsize(_sharedsize) {}; + size_t _sharedsize): c(_c), sharedsize(_sharedsize) {} KOKKOS_INLINE_FUNCTION void operator() (const int & i) const { @@ -464,10 +461,10 @@ struct NPairKokkosBuildFunctorSize { typedef LMPHostType device_type; const NeighborKokkosExecute c; - const size_t sharedsize; + size_t sharedsize; NPairKokkosBuildFunctorSize(const NeighborKokkosExecute &_c, - const size_t _sharedsize): c(_c), sharedsize(_sharedsize) {}; + size_t _sharedsize): c(_c), sharedsize(_sharedsize) {} KOKKOS_INLINE_FUNCTION void operator() (const int & i) const { -- GitLab From e114a8d15bedce7967346ebf9ce8deda063d3bf6 Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Fri, 24 Apr 2020 10:14:31 -0600 Subject: [PATCH 367/717] Revert accidental change --- src/KOKKOS/npair_kokkos.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/KOKKOS/npair_kokkos.cpp b/src/KOKKOS/npair_kokkos.cpp index cbea210693..5a5bd6eb20 100644 --- a/src/KOKKOS/npair_kokkos.cpp +++ b/src/KOKKOS/npair_kokkos.cpp @@ -224,7 +224,7 @@ void NPairKokkos::build(NeighList *list_) } else { if (newton_pair) { if (SIZE) { - NPairKokkosBuildFunctorSize f(data,atoms_per_bin * 5 * sizeof(X_FLOAT) * factor); + NPairKokkosBuildFunctorSize f(data,atoms_per_bin * 5 * sizeof(X_FLOAT) * factor); #ifdef KOKKOS_ENABLE_CUDA if (ExecutionSpaceFromDevice::space == Device) { int team_size = atoms_per_bin*factor; -- GitLab From 4890c328d91c49de44c22a279ea6c8feb66b9966 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 24 Apr 2020 13:21:38 -0400 Subject: [PATCH 368/717] add comment to trigger jenkins rerun --- cmake/Modules/Packages/KIM.cmake | 1 + 1 file changed, 1 insertion(+) diff --git a/cmake/Modules/Packages/KIM.cmake b/cmake/Modules/Packages/KIM.cmake index 2a9cb739f7..06e513bc0a 100644 --- a/cmake/Modules/Packages/KIM.cmake +++ b/cmake/Modules/Packages/KIM.cmake @@ -1,3 +1,4 @@ +# CMake configuration for KIM package set(KIM-API_MIN_VERSION 2.1.3) find_package(CURL) if(CURL_FOUND) -- GitLab From cf702c4b1a0d7b6c5ddb3512ee8564804c9e7eb4 Mon Sep 17 00:00:00 2001 From: Zheng Gong Date: Fri, 24 Apr 2020 20:20:49 +0200 Subject: [PATCH 369/717] fixed a type in README --- src/USER-MISC/README | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/USER-MISC/README b/src/USER-MISC/README index f34a9c243a..27b6efb518 100644 --- a/src/USER-MISC/README +++ b/src/USER-MISC/README @@ -38,7 +38,7 @@ compute momentum, Rupert Nash (University of Edinburgh), r.nash at epcc.ed.ac.uk compute stress/mop, Romain Vermorel (U Pau) & Laurent Joly (U Lyon), romain.vermorel at univ-pau.fr & ljoly.ulyon at gmail.com, 5 Sep 18 compute stress/mop/profile, Romain Vermorel (U Pau) & Laurent Joly (U Lyon), romain.vermorel at univ-pau.fr & ljoly.ulyon at gmail.com, 5 Sep 18 compute temp/rotate, Laurent Joly (U Lyon), ljoly.ulyon at gmail.com, 8 Aug 11 -compute viscosity/cos, Zheng Gong (ENS de Lyon), z.gong@outlook.com, 24 Aug 20 +compute viscosity/cos, Zheng Gong (ENS de Lyon), z.gong@outlook.com, 24 Apr 20 compute PRESSURE/GREM, David Stelter, dstelter@bu.edu, 22 Nov 16 dihedral_style cosine/shift/exp, Carsten Svaneborg, science at zqex.dk, 8 Aug 11 dihedral_style fourier, Loukas Peristeras, loukas.peristeras at scienomics.com, 27 Oct 12 @@ -47,7 +47,7 @@ dihedral_style quadratic, Loukas Peristeras, loukas.peristeras at scienomics.com dihedral_style spherical, Andrew Jewett, jewett.aij@gmail.com, 15 Jul 16 dihedral_style table, Andrew Jewett, jewett.aij@gmail.com, 10 Jan 12 dihedral_style table/cut, Mike Salerno, ksalerno@pha.jhu.edu, 11 May 18 -fix accelerate/cos, Zheng Gong (ENS de Lyon), z.gong@outlook.com, 24 Aug 20 +fix accelerate/cos, Zheng Gong (ENS de Lyon), z.gong@outlook.com, 24 Apr 20 fix addtorque, Laurent Joly (U Lyon), ljoly.ulyon at gmail.com, 8 Aug 11 fix ave/correlate/long, Jorge Ramirez (UPM Madrid), jorge.ramirez at upm.es, 21 Oct 2015 fix electron/stopping, Konstantin Avchaciov, k.avchachov at gmail.com, 26 Feb 2019 -- GitLab From 0545de51374d305a79942f766e56ae7112320fd7 Mon Sep 17 00:00:00 2001 From: Zheng Gong Date: Fri, 24 Apr 2020 20:23:14 +0200 Subject: [PATCH 370/717] clean up comments in fix_accelerate_cos.h --- src/USER-MISC/fix_accelerate_cos.h | 17 ----------------- 1 file changed, 17 deletions(-) diff --git a/src/USER-MISC/fix_accelerate_cos.h b/src/USER-MISC/fix_accelerate_cos.h index 1204cec260..c1355d737c 100644 --- a/src/USER-MISC/fix_accelerate_cos.h +++ b/src/USER-MISC/fix_accelerate_cos.h @@ -54,21 +54,4 @@ 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: Region ID for fix setforce does not exist - -Self-explanatory. - -E: Variable name for fix setforce does not exist - -Self-explanatory. - -E: Variable for fix setforce is invalid style - -Only equal-style variables can be used. - -E: Cannot use non-zero forces in an energy minimization - -Fix setforce cannot be used in this manner. Use fix addforce -instead. - */ -- GitLab From 261b826cfc8a39913b74230b264665efa9717af5 Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Fri, 24 Apr 2020 12:49:50 -0600 Subject: [PATCH 371/717] Remove Kokkos deprecated code --- src/KOKKOS/compute_orientorder_atom_kokkos.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/KOKKOS/compute_orientorder_atom_kokkos.cpp b/src/KOKKOS/compute_orientorder_atom_kokkos.cpp index dc1bca8afb..375d3fea71 100644 --- a/src/KOKKOS/compute_orientorder_atom_kokkos.cpp +++ b/src/KOKKOS/compute_orientorder_atom_kokkos.cpp @@ -91,10 +91,10 @@ void ComputeOrientOrderAtomKokkos::init() int irequest = neighbor->nrequest - 1; neighbor->requests[irequest]-> - kokkos_host = Kokkos::Impl::is_same::value && - !Kokkos::Impl::is_same::value; + kokkos_host = std::is_same::value && + std::is_same::value; neighbor->requests[irequest]-> - kokkos_device = Kokkos::Impl::is_same::value; + kokkos_device = std::is_same::value; } /* ---------------------------------------------------------------------- */ -- GitLab From 91d958fafffaf4c2ea82c5bee2d8cebbfe40e5c3 Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Fri, 24 Apr 2020 12:52:46 -0600 Subject: [PATCH 372/717] Remove Kokkos deprecated code --- src/KOKKOS/compute_coord_atom_kokkos.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/KOKKOS/compute_coord_atom_kokkos.cpp b/src/KOKKOS/compute_coord_atom_kokkos.cpp index 3ce4e3b852..d91bf5a82a 100644 --- a/src/KOKKOS/compute_coord_atom_kokkos.cpp +++ b/src/KOKKOS/compute_coord_atom_kokkos.cpp @@ -85,10 +85,10 @@ void ComputeCoordAtomKokkos::init() int irequest = neighbor->nrequest - 1; neighbor->requests[irequest]-> - kokkos_host = Kokkos::Impl::is_same::value && - !Kokkos::Impl::is_same::value; + kokkos_host = std::is_same::value && + !std::is_same::value; neighbor->requests[irequest]-> - kokkos_device = Kokkos::Impl::is_same::value; + kokkos_device = std::is_same::value; } /* ---------------------------------------------------------------------- */ -- GitLab From 0a96a8c3a521329783d42164ee0700a5c1c4447b Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 24 Apr 2020 21:23:21 -0400 Subject: [PATCH 373/717] make check for running under hybrid/overlay compatible with suffix styles also improve error message --- src/USER-MISC/pair_drip.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/USER-MISC/pair_drip.cpp b/src/USER-MISC/pair_drip.cpp index 020216f503..bb28d056ac 100644 --- a/src/USER-MISC/pair_drip.cpp +++ b/src/USER-MISC/pair_drip.cpp @@ -33,6 +33,7 @@ #include "neigh_request.h" #include "memory.h" #include "error.h" +#include "utils.h" using namespace LAMMPS_NS; @@ -116,8 +117,8 @@ void PairDRIP::allocate() void PairDRIP::settings(int narg, char ** /* arg */) { if (narg != 0) error->all(FLERR,"Illegal pair_style command"); - if (strcmp(force->pair_style,"hybrid/overlay")!=0) - error->all(FLERR,"ERROR: requires hybrid/overlay pair_style"); + if (!utils::strmatch(force->pair_style,"^hybrid/overlay")) + error->all(FLERR,"Pair style drip must be used as sub-style with hybrid/overlay"); } /* ---------------------------------------------------------------------- -- GitLab From 1de3995598f46cde09fe6c4bfb5cb4a1f5cbe258 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 24 Apr 2020 21:26:11 -0400 Subject: [PATCH 374/717] rename src/MAKE/MINE/... to src/MAKE/MINE/.gitignore to avoid penalizing people downloading LAMMPS via git on windows --- src/MAKE/MINE/... | 0 src/MAKE/MINE/.gitignore | 1 + 2 files changed, 1 insertion(+) delete mode 100644 src/MAKE/MINE/... create mode 100644 src/MAKE/MINE/.gitignore diff --git a/src/MAKE/MINE/... b/src/MAKE/MINE/... deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/MAKE/MINE/.gitignore b/src/MAKE/MINE/.gitignore new file mode 100644 index 0000000000..9c45e661e8 --- /dev/null +++ b/src/MAKE/MINE/.gitignore @@ -0,0 +1 @@ +/Makefile.* -- GitLab From bac681b9dcd879f576b6adbcc8e4c21d883990da Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Fri, 24 Apr 2020 20:14:30 -0600 Subject: [PATCH 375/717] cmake: fix linkage against external latte --- cmake/Modules/Packages/LATTE.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/Modules/Packages/LATTE.cmake b/cmake/Modules/Packages/LATTE.cmake index 4ce8888f37..d6e893b025 100644 --- a/cmake/Modules/Packages/LATTE.cmake +++ b/cmake/Modules/Packages/LATTE.cmake @@ -35,5 +35,5 @@ else() if(NOT LATTE_FOUND) message(FATAL_ERROR "LATTE library not found, help CMake to find it by setting LATTE_LIBRARY, or set DOWNLOAD_LATTE=ON to download it") endif() - target_link_libraries(lammps PRIVATE LATTE::latte) + target_link_libraries(lammps PRIVATE LATTE::latte ${LAPACK_LIBRARIES}) endif() -- GitLab From 643ef2e2bcc382c7820c479fe389144ec08bee64 Mon Sep 17 00:00:00 2001 From: Jacob Gissinger Date: Fri, 24 Apr 2020 22:59:20 -0600 Subject: [PATCH 376/717] return of the data file --- .../nylon,6-6_melt/large_nylon_melt.data.gz | Bin 0 -> 3745227 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 examples/USER/reaction/nylon,6-6_melt/large_nylon_melt.data.gz diff --git a/examples/USER/reaction/nylon,6-6_melt/large_nylon_melt.data.gz b/examples/USER/reaction/nylon,6-6_melt/large_nylon_melt.data.gz new file mode 100644 index 0000000000000000000000000000000000000000..c620b879a883817b8eb7abe4495e585ecacfaf02 GIT binary patch literal 3745227 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 %XlO{Un{C;OKaoazpbeGx|H3_4c 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 jV4v9vkYu+6~9n3uuu4%Q+MxS#mXz& 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%0A;*YQVmA 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

  1. KS4kH_f=yG>6*dCU8Y6ZdYfxqM?G#{m<@GgYa}9?HgP zJQa}5sC)UNCs(1fmwVd(lh?QVZ;NZYP*B2s%sT8@zisp8X^$9{PaZho*Uj4StT-|5 z+Wxya|J0|q6_!6ZI^)c>_$eRPbIS*OxTV-tP$rb{;yv%J&b^8f=8rwLB;Eei?sUg* zio+_=$8&sh)16j(a`>qq?w2~6BNQ5S)UURd@#(t0#v7*@cAh$T>-o>77oBF)7k_B; z@yJculNw*)zkc=I>PrqeB21GQr=FZ@@43=CBIVY>y(^FWnCx!Cda!HFw|(2QRrT!I z+$sbPFFU<;*QL9&KJ9w;&WP&?x7V(wFR#{rFYEuSx9QDh{k|O>F*9_H>j|nLLwU`-~xM9YZ(@D2;nLFnkO7Yy>rO& zp7ZTF-N91m)3&o9>~e&=?fSIpUsv0^19%R(|J?OC=5OMpxsvZrd`NmePp0rv0;l_l zmm8-?Y?RFx({Z_Ml+Iwg>RnKVE2n5ziv2xT1cvGS1KFU3RxxDwSngjMd)sD&7CqC&kJS zajez5wDLX2!j@tty7$G_+L)mwLkJ4EL_IczgcTdb<|%}GJU&xs+= zAM&yZeKD2z@b9UVbz$${(mdzl&A%38`Tj^~P0lsi^T3w%dF(;i=F6=Se6Jr1%b)qM zZ>{^EsSB(F6)#tAdj5Nj@(u1y%txp3zC63G?m%pjgF;)*rB|FvCQ^OBs?)RE(&q zD$bSb7Kv;<8gwka|I@X+!;`j{3R+r!JX~I75~-uYmq#4PQfedx{}4+r<`{kckdhc2hj?0Iy-h^6W3b&30ZZP}IKi#`Q% zY&*E({PMdu<#gwLol&rkmseHyP4Ss5?|+N5>-n~q1zs|8Sn}(5pNQwW{`s5?YN4~v z{FrDqgW+Mg|YgKQV4m zGtXFkVx8P`sR*@;%Uu|aEDp&2n|aqi$eK}kr_~h4_P|7;$e(7D4`uU(PD_cnYAQP+ zd-A6x4|Z9Lo!57XZDdf9KX^RmtsUdxwX?+#qKM|L*>?Ga2K%L$xP$gdw{#;!lrNUyw<<(oy?`FWXtWJk*mtftS~`xOUUiS zNpIZ*nSxHVT%R{b@AqsNtKq_{lb+B1Y4Cp2-@|^Q!*>7a77_hW z&nXWzUJ9(Rirsud?WA9Zv{dhg*~c&KH(K$w?9q`gt9CTFuTNqzv+zCp@#vSH6KeCt ze|HLgIn-IP!!&t~^8Gb-hhG2QcYgNTBM!;D+gD!MBd^AJ-{RMee-mT-+fFqpE=mzI z-d8@k-h*E$v4~^G+k^3QC9VgHeZTCT`i^&zySS~^kstSb-)-Wvmg?m0ZHaq!g~Y)tHyC$J8kN7SCB}Sq-Q2Rw+>=T%O@7$Y1e;ghc zwDhhIH`njKRJLdhr@3|Bn}c8TJslM)1gc{SkM6Qk+NPFl+b+Ja`|c-s3rE582i0~u zf95Q2*mv&gq60J@aC-xn;hC^Y%&iCn~VotNe^K)IFgd_+Z_ccEMQ^ z(-z#B_3mWHW4&)izH1oTxhFeKJi?y!Hr1Qmt*o-|LiWj|>5bo~T~a$GqCMsC;`PNW z&C~KeOjy3?LEJRWuSJHJ+68wkto?atF4M`n2L@}dxPD%Hq{Fd0$*=e9hnmum$B)h% zDV$lwy&$5byhKN1;&YFG#&>q`?!WGE)>MA?`|ES>$|<+F_HeJYetYk4;LORolL7;b zSyxuCXgbQVH|O7_s5RYpZ!w%m3p_XDhv{20hhuA7(=*gpeLp6tWT888%Z+qP&w0O} z8kSj`NUfBgSu*XBnfVN(b72K} zWfQkgs@|-@BoHU`c+s?Y?j`rdJVcM~bV^kEe@k9D(Ixbt>IpCNAh{0>&-_2$socBy zUjBVa9qZc@GM3nip82M|FGKr#5_|TFdm2IZ#^wwuD;~0{eW}`M95G2j=fE|CzOrS` z$5!6ATN5|w@be1{8|PiRXYnj^p+TNnBr9Liv^^5H?xp2Cl=oh`?uJMC6Q$N;Ue`{! z?=9G8>n-{H@hqM5eI~JW&gW9DKjAQBs9|4UYjDze7u%EDS@o8)?+PzDd|9&8^2d%k z0WaACRypNw@p-3QkF3*`Jrr?qV~x7O)M~GA_q67#7gcPOsv1nV?3D_BY}v)1H{<#A zCGFgwYxZeP)SlL3dS2k{{CRg5$~{Up3}4JA*`20)T1e^D0bPr!w@%yG|1~-9-Vrl@ ziSioHLpS6S)@lfe&OY+i?tqL;%cVF;Py6&0J7@jAKf~vu&Wpus-Ye$2Hr#lnQL>}q zeMH3Jhpzt5+;!KlzS;imca~3uyq1*o9^+_FOSy`T$q(+|?Q!k%IK#7P$Ch*>v&(0) z7ch6#Yui`f@MyVI?3u^GwO!}jYi0(v?G;JW5ASrmmHa4ae^&h&Q?&@|Gd}~$wy1@v z#`<;KS+;o{r;AsE%Gzx|ug%ytTcPcuq@5LuM|gR?%Yklx{od#AwrVq}$MUMZu{gXY zN>ynzO68^!eh_WkAGf2b$!2MZQZ_kXJnd7-urrJcU@yiQYgJCeAV>(Dc8ci zx>J6}{r&tYbuq&`t|}QVr|YleeO^pl=k)g8qr!dcbDkIOdtth7y;TFaKU_RQRB+l9&d6d&I@ z*sYvrb^ZF)W4Zk)*{SC32WB1Sd!Wss{I*(3Dy&jTE5~}$lr&$1fP3G?^565y#HY;A z$~+pSdO$(N-C&0gUy4J?;r$aWXXIwQug>27o$cwoN{uQ5YtPtEn!l`?Pctg-%)2vd zG3QEF=FQ)=GFw;wm0Fr`p^-89U`0vAA&$do$Y1buxhpHagC!TuVe*LlMcPIXEzT8&!N=!-c z#;%}=%P;=9!**=h&dIAX=7=fjoGPj;EOI@3a@NKxAM|#g-XQ2P_1xXw8i`xNZr5B` zPrW~za;N{2=5;T=M^|h*?rk&tb6B$H(fQ5x@7tF0nn@qo^ibWc zHmG!&e7=36rN%Y0x|JNo5}U+VG_G%q-m}&tV!@G#MuD7uA69<}4eL5!`k9?=MeBPx z=gp2!jzs27t-p|}xlnxiOfU7x*KZwe)4sB#W7CG5<`bW{MBO;`Rl-Pn#h##z>q~@I zT$9Q3D$Y9TKK)vwjoPDa*DfD>VtIvwJ6W>7%%pR|u5}iljxf%cpjr2FZ=vrGrE5zT zHojkH&T(zy#($D`Ze(@pr=GWe(b3RaSak6CG1C(&%MZ);drD3{C(`_gOZBXncmK}$ zazW*#%z7_l4fh9~`1#STD%N$I)$v(cHqAl5E>06QzSnnbZA@;!MJ?9c*E8PcuG-UO z{U^+GW~ubwl`orv>OOqSS+1lS|Kmy7AFUjwtd6}ao;^0x3OjQ_JuBn6$`SSj{a#+u z4+oiTN9QZ=>?< z=oL5iTO0WrJKpkec{NqWME$1ZK^2a};k!3(_+M|}pP(q>czZ!|-3E~_FRlpO*s8xp zJf9FWL3Ol22Xmy3i|_xO5X|oo}e}KF*8m0)Z3nFG&hoxZg{!VEgUO zXFf#FJ{7-O{LZ8=lG6gjCV#T|Gi{;4gd&bI^Z!b+N26brFJ7g8N?$&C^YL_{thguA z615+EgUy@HC}rOboKjtJv%b%);T;=KS;=>ndpjmCm}<8pG2_6u*30Eet}AD)IPUiI zb5lh5^z8STUHX=Hj^3f%z&W*7*K>7;&zM+iymD?i`~R#vym5jtLhIN>9{Guc zeSWBKD#9uDN0EPK{^p)z1%@YIefpT)Q1kKfy{%3!FKeWxu6Y!YtL`hzb<*Kh?!ls| z@;VJg@vNukdG@~U4%QIn?=f+$FI=?8ZqDCZwIQmv%`$ozxD@|y^?UTkc5lmqn}PBn zZ?v+%ES~H)Bgf+lzlzuIj2@9no0kj4pM1JLdv~zO#-oh~qpvnrIN9V+^s5Y$(qX^I zsqSJSw?xnCLcpOq{R9Ci>ECrmdfIo+Jc~OZq^d1+an1FuGZJr~I-+E;?$0#U*-UeP z7@t1h(&VtVXS3&#^*Z@>8PnV<7VY@@DeY5w=N3C)I@N)vo) zsta#^0Zv*QXL*>h*p&a?tF*;&lEziECBcKGyHd58p7wVNqD$?0c!L zB{M%Ao?>CXKkwb7l~Y6RIp5#RJ3(@xz463Mj^;zt^xkcl>USzlAXRl*&8xdPXYZY; zTVr7+vf}(fN8N)jF7&){&bhgt@oMy$i4pt0x^mR+5vo_tHZfjlH|6HL{+>l*Nh*CU z4l`ai2v~GJ?3?@j=bTj!MC;ejSiNWNt{j`1C5C~F{xADN*IUgj5-4{sQTVmP+K&#){{ACsPogNBw-OpT|0hEA?^8M)8AdEavyA9+~!6^YL@XhLV}3exdiw z;u)fu?cS-(bNR5ayH>6ER0N;S*WG^=Bp&43=*VS>`uK=a=dO(Pq&+v&h5V94X7UT{-XY^~yh0Jvo(Tlii1ooUPZp_fxoq z*MHr%lPNsG%raME{Eb*D9QSk<7`Yu=p}EGe!DjQjzK`tl-E_Apr}1xdE0da06}BY% zYi;>;ww62DL3@K|o~ryLYUpC|)Mxg_cmB-J-NFK9@BQ}u?%m9+1@q_p-J(!&@n@Q6 zlDS?hO8`s#F`f^d^Ic1WKF7a*x2{^-Ywhfe!i`!V%hqk!tC6SWbKUm9?ycVzUtafU z%Ex_oWZO`5RQ>S5@zVYBa@iX8H8VS>tNT_-e`Cp1z8R=ilDj^d%{4Cg%eq{x zr?utf_L@Q>juH$apSET7-*|lC=p}B;qb!T0cH}NleXqFp{X4xAPn4&XM5)E>Gvb_~ z*5)Fq`g^yx%ENOjGxis4>e#t^b(hPjrGfI*?_cRKtyX1dc^kg4;odK;Y@Y>(%vHUY zeNNnD`uF7im*-i3pI=SzP@iHL z_WknQck5>!n&EP>=jzL4aSQ)#5cgGN$V85@5#Hmt2&5hF2CfV3DSA5rc0Q_9C`3{%JbE3{$GQ56|X7Px80K7{`YHD zK*E7!UZI>_B|1jMo62WeVtXq=J_YL}&=`M{H&YgAVy!zZrol-J-rw-|6 zEaG#opQ7=29=~_pPY2PNkM_;tI(5?M@YOq>#f}v@Q?@R9zHm+D5s&(;pJ$a1+>!R& zDq4CsGB!a{LtL|ygx0ZZ&urFfKh4Txy#7Mr4jZjM|>N~gR zv{CPm2X!e-+b&z?uuM40@G^XrDa-3+6{j{H3Oebw;*|Y{#f=qfWBEMY7A@Gdi=CzW zQuh1<@7+0f`==#^884eF-+yOoLa|xrzoNaG0m`MULVLE^?|7aS5%Ev+<@PQ7kqaDV zzPM+RvMc!@uONHTg8lwXdQBF5k66B$|EdmOr+jDYdfwM;>-{d2`KaDVRzGp2w)v;Q z?e?~kdd~+27CZJ>tbQi&j_=#akg~XTTbCu;5)JPBTQj8AZ>n{(+4|^r*3VCm42r`1 zFQ3?#dHeo?EypeRZruCm^&yeTdjZ$i!~V~2`o2^1n6;9>Kq2SBUG>w~J|C9w-sQhu ztm5E=xG$o6$|vtW&R(LuZ{fMlZ99JQPU8(avb;h+_uacWLB9kA+o!+xk+>cxBwfAu zf!jHQ+Vr*u;fC5wT-tf(y!c`d^T?cTw>uyCs$=?hwGXjvnw`m&pQAP2Ssm==v0VMU z_T%@DQ|2X!?F~PfyL^iuZ;51cn%jZwmF1e{xv!I1EDxRAC|U4DpkQHM%|Xd2Q}*v~ zSQc|e!sP7z%8;*;@wdL+Jm`4*oWPb}l4hlk3jV)t*}eRd6PFb4eCUEGu@#W#_xB7Qp>$Rzw zwHmv4UEk<^Bc+<{zS#8J3*Arr6S%+VhWhG?3=12YQX%iZqYYO*U3}A zuYavPWwX;qcZX}9t*2(W-j%{2KX95c{?*CQch+fFF=Bt9Q_p8#w zVoHgYGhV-_ma?90T-!C_W9q%u#|hz2B9Gqr`1kDAnw?QHtDYAWH#ZCY`EVpr-ugt3 z($%S9XI2Z(^S9{Ul5Br4?4$pmyC+z0+8ABwE~vZXICo2EMoC~-=U17HVTbwIgwnG0 zvs))Vf6C%+(`U&1ruBl%$pfOh1hlT5{3%zvoq3P(&9%w9EBBddi+{>rr{Ak|Co{fEFK+yKFq%9n^oC=Apc~`wI>SG zcmkYXGXGtDXhL(07Dt1fCvTwRMHUgS)gS(5+OPU_KV$k82iZlsH)fg31s`J$@wh3h zv#RFjuVh1)qN|B^44XT=UMyGS*_HC*`8C9zjwLY z{NI*86n&B|nOH5zCGhvS(^~$V=p&-Lmu>Ijh8`(tS_A|NC~9HSgZh?C`p2VqMAN z{55a5uWB*cJnT-t{KWJ8d-Lep>(3W%^r^cg%f4gx5z&JZ_Y`;;JAw}?hV802z|*6! zA;{zZ{k`9pckZ4Quqbv?XkXi(do}4#W0DJ!qTM@F%jG3{CkLpU`gQZ=7VqWFtQv-E zg(VLd-Fl&+ThQ^YNWV+(yF}6pqwfyeX8g};zr9u5AvI;b-!UeAHvf|c=SsY5T5Eer ze(qz@DfO-`X>SwvEZkGIdnc#OHS<*T=s7DwP@B><+2F zR^Q$6JHchi{2%8W6TPjU&Ha<3mhi~+Z0|mq4vn+1L?kK!tx3%x6>Hn!)Rcwzi zsf4|-2zj>0^JS0Na--PfD%Fn+7p_FlZSZxPFuz#u@avXFZ;8NK;pUEgC(q_EdOq^i z+B^N{u_ImVE9o!+DLI`Lkm7 z`<5Qt6Ivem(@b>XhTAq-J8n$XON_4NpZzZ+afWNl(+2m4wfTS9E|zZ%R#o^dar?r3 zxy00S4xTsX-Zm9*pD@$mW6Xc8)5mx4T5GWz*hCzepSWGDb=$HDdQ!*L>>tjNsF*L} z`1S8SxBaoYS_dV*)xFC#|HS({*!m>XpHCY;?$(&du9{c9d-Xx{4f$*Tl-MNXoNre7 zZPV9#-!rX zrn0@T3U#gNHCj72V}o@4Ta_i(Z_Ycq=Ey?}m#mo&+fCNzUFF;9W6AZ&zyE9K07*tE^M?tnNzM(c*Tw*VZrqqSNKk9JL(0e-N?P!$aClNzGFN) zo405zsR`!Fkzcm3NmBmV?%g}n*PO_b>#LsD{&d^5js5yQKcb8Cwk=$A>&=m^PK}8r z7M3gje!Dhf_rrtk9bsQ=x@R8EXP@dB|9jfk(?@by9T&db5|{NqDJ?I&A-lz1F-?^3 z(!r2sbKxnC4{T29mCpPz<*92WS9#7pf$VcPu1>RDrTKp&&-yn32c5S6yr6Mj!JDt>Te9dF)BS8^QQ3w<;usTvPvMTD?BGo0s?8qu33Sx|9A#yjXc-vBK*DE`RZ* z+?%DN*ZeuYe)i_CW&Uq6G-9uC9Txknx#iO{rf9Q$C8hPnVSgt$ir#GJ^R{^uR_}jg z5|2XS+Tc%1rv7N0H$A-5vG(GWi=jtZ*0^LnjXP}dE!9Rf??dZWnS|ykPC-wsLg!2I zhc8^y_-oZsjt>VUrY?9HcrW~SyLo%`l%~BR)1EtLl*nB8_``3`n~bZnZFm19Y*AHD zuyfnN-odDHuv>12>kk%-jl~JqTc7T~J~LzL#JTJrK9%119hX`9{cVxO!&IIhBCFml z_Bp~g`AV@8%cE=2H`DqhMgMfnITjsOq|P2%cFW_FbpD~!Oe<<71z5Sw-bX3!7uj|6 zP`!{J<2=#X^;y4r{oVXLqvLZ9uA8BFLQ^Ps>c=$&D}3*2hAj?QA5|5r^Y!%6s*PMK zDl2vsb=^+q`_#Nj;7sJU%c0Y9c--Y=?wvn>cGaYxzkke=Ffocy-+TAv7vG7dJU=(j zIP&guz>g~_yZZRPzF^Mi-+4 z+e$ww)SEH|sBHGJ>0rIllH-W&S+XJ~wgDctBMcEIB3tqQ>{o&pxjT_5|k zYV7#2l!J4MgHZTdhY!n6I+;b9=^fU6xTa&WYmKAonb7*Y6Fxr;xVSd-oSL3Ax08uo zO{{N2dCf$h3qn060tQpAAD_0achMPrj^f29qGu>L$jn~yx1{U$qkU^`2!8sR*fa4m zchRcw6Pzd8YObtV@kvqso}Wl?r^Uj%NxrvQmAs2rdwEs&U%Bl6>7p=yp0|#D+`@G; z*YEgY;J)gJdTs7y&L1gCQ5yG+-k-nv=xvrlNs+~Cj=6J{Efuwm`Zo64Rcu?L@$3)h z|F3T^{uZ2Yrn|vKokyP0Z;f=!qRokE8vb8jh96E^%jqG}@#FsYYmeS$g%s#yrad>! zX|z*Sxh8(f?*`v83nBG8?hEX`eV;r>{E_Pl|2sR6Ro;|5Ii(`BCB<$3IaTMJd7a%| zlT7x%G*bPyN9s9K-Mj}2JU4!fUsSY1`O3sR#${TU?ujqv3n_kVam#~iZ~Y~~3$->~I?HbS zcxRW=x;bJ;$~J13owet?b$R0R-Q|hli?qHJ)yV9c9yMdL)91?z121>ap8QU~cPqmU zX16!eMqw)r8dH@YUU?&N^p4Pev62^iT|V``aMxQlr#(kr^W;$x(N7&~5}&Mm>0-aT zYtQ2eWlQGVe{Fwf-!?B7@ncKMHf{CgNbR4ewD-}P-MmYg3k7;AwMtKByWV46&}=ln z*V)kZZe?Q7%*TA3R-51c6!^-fVXgbksL!=1TxZqmqt(+ht8T=G9DB|Dle==xZT+6O z#?GJKnVM=O7n{F%gdr>gS9 z-K%$ZNFLJTHF$se-ru$R)9&zeopOKhHe-#zUd>g%yLNrE-u>zjgI%uf1r`VIjNPe+ zKe+y@W|_8g@uG-ui(NMtTQG#1O)tFq`jWaKOSa4syNClDH*m#F+r4!D(;2Ul-e&t7 zewjS)&y%@-Y+MbS=NBcqHb47o?UVeYRiMmiRqgrCNj!5;x^SeMXI0;}{UYqiTJp;0 zO8otEiYn`FHgBCSx!IlBuGrQtuj%-C4e=n?cfpY*R=j7`r*ZB3c*{6%yw@H&QI|3nSX2BK2HWC!`H?=;mr|;WG^2|SbB1Hu{hJVPY*Y1?@iHLsI+_I z)*E5lL)K^&RlGf>dhddu_M8cd#k-Oxy_@sj$!*(QErX1v_Yob7Po{0wzbKbnZ7TI~ zSwQ2rsjH?aO6Xd~_1^b=I5)HTXOfnP&7|FF-#@k*EiGiNTgGED@%+Qs$5H0D8%^H0 zI&7~j3=811KCHRLOLP768LXLqlY$oBJ>Dbu_NU*O2^06%hP_xg*XU@m%QL|z))B9M z#yY>-d3Wa9tq+d*Xcd+DC)imToIfHKyS+yIsYGB|V|Ymxn_xrSwS8Mw7L*+~{$40L zIk(?p`lX$36ndM!v7fyhaO}?aTj@&*Q_D7pyzMppG3SZYFCoPrGfciV)ZA&`Z^;$3 z*q4(RE>JOy^pC!IUt&wI=Ow0VoO*W_9bLvDc-Qv&^{ej+-3e8jh}C)jdCnOv%i-c*;90{r1_^-juda+ma_Z&z^Q$e0HHifP``B)o8x( z19i%4c-K{PuIIPDKf`y6;FcW5WfL~PPjpSb&3NbUR~hy?8RqNL`nEdNe&730ZE3^t z12sY(THn^nzy07SU3GpJ@AQplR&iAvVb^T^e)ZDY_j3=_-1zh8)az~i!BscS=C8lu znIu!Tq|LQ0Q2D>=*;nR)Tu*BS4lpe(c4mFymOe4?&J81(OHYJ1)vQj~_j-*#_tkYt zTxL2lrlPanIn)HtQEauid~%nh#FAfvOjjrV*kksj#`?yZ9wh^%4NTtN)n)1D-y2@j zu9g1dc+_#N&p)xk==HhU_iyops6E+xq%*Oy{LI{x3J+y3;m_aO6M7XS};gu}f zlk@+P*aR1|#0kHinERhy|Ik2l@1?({9Kc{YOy!}g~ z)4^l!jpo<)j3i|(zBuWf|Ea%c-MxL=(!X)+ll*b?dXmH1y#Mnomo1Me+{M=uEPTKy z{k}KT$!j*&58Z+?MhzvHTZvuwqPON@j3* zx?6c~w2Z)t@RtUyOirIQXMK2`RlbSUT|w-euivxZfn`dUPCR4&@;1KyPC!FccGK}s zm0JsICwW!-b)DV(DO26ffmh=0G?p3D%fHIlr(B=haHqJ|_GIDn|2#JR3B`-v7foPy z;On2n;=I>dd*)PzWk)&YpP6ud@*d{0u!j#48grx0)}~Lm5NPix`R?hNC*8NYv*sRq z)Uvfg?Ei$oPJjN*zXX=^U-?n?F#b`e#U}BS6^6I?r^GFrFKXHUukXe}&kl}=+)mYS ziOJ9J2;Nwb_-T!dUuPq~d{vkD$Hwa2)rE=+p0O21`TTzVC~)aaxyP>ZuLT`!Q^R$F zAC!5WtNM|7@8rv6xpoSn%g>eO3F{sF@V~jp-n>%CEcGl`L#BTA8l!cr;YZ8soVuGL z9yX<|X0HnSs5Rlv{ssph_sLIoFL5qeX7c(zllc_|M@~u6=1W_6E2pS-YI^1+N6#(I zeemSv*2~8qbGH2LtucD3UbFCVrQl<6M{zM%(NiXKCt7x{TizMOaekp-puvmM+f7M4 z&t{rz)VRIq$UosAS?!ecc*|b@pdbZp+w%_$swU6&%JNcmeYmRULFmiJVFvRg_LjM$( zoY@!sspD;V=!|RP&YP~N=kHyz&(iJ3J%{|p_kY)#C3KeP9*?)1<+#n_%+5)(S0>D1 zV>|J#(|Oln<*-SDLBG!!{Jwbe%()iJ*f0D4%&LgmvMKc_<2{>CVlgqZ*@cXZGH<9| zTjKfsWogQOt?=I~BM)^HF1WU)P|*CuiuoToJ)}a`@%5+7v(mKa!DCvsZ#*Mo4GgJH`K z?Vcm$=IRy@ta4_NY*lsjl&_yOQayWJHY_lge;4dGOOtPFLRox)X?61QBfUb=`{QHw z=?b3_zG#vZ95nZ_X3&$2qSv}dCkj7{?YMqXCVH#sy=f6&%S@Rjx6SbrKDsIRiS})w zHI-)i>_RGa{w3dTC>{NN^;4^xpXrIXb1$~LF5h};pTM`+X#xkFAH4a`@=$t(Tvo09 z$wK9|&D*+f_WnM#$mqcn-x)KeNMHN-JD_=5oY_2!DO09zY5(`WEPqz?;xo=YueO-y z7#DK0%5PtLdA-^Ojp+Y3JU;x*p1S08_2$2S63?(o23nu(;FV0>bLHbcHNy>!3eA#U z85{TCkKP%V>lG%sAbo1?)V^&Vnp0ooZF?$FRe6F@W$u;|J5RMae_u^eI5W{tymVu+ zd`|VDm!hTo$9(@?6pxr(wCSAXvf}W*?febBbJltmmObR2tQaJvo)Z#s?_)t%QeV*j z_1Ddu_SVeon_u|HCFi8n9Tf^SdP z9bfIT+Aobw&zUdp;qi3}N-j!IRU6-kbE>%dq`m0!SowTMXa0eA87qR{oD16`rRsFt zp)Al%SD)`^>JhiXu*pe^$8+~1KKCiyr@V+gQ zn`i#Z87fCR=FZtMw`IMGi_f-)hS$1Yym=BC;C0V;QDD?5z5c?Z`(kAM*DD(K3p**N zhN`9sy}w-GcI>`q%csMv+mm^AseKFKdhtqyv2SPYM-j^h%zM>6?!OMydhti>N3y=` z=2!=}?P`m&t{Ap_6b;k4E#I-0d(}&YU2ik;IHY$>+!g9>RV^w$gLnn4|{K#GZ zRr8aEa@(uJwj6~Cwl~5e_kW-F|J&-<>rVs)+?k+}J7Lxh;Wy7dDt&AaxRt~f{Eh!p zj8$a2(7Vp_8K1RYWQogHl*+Uyncm|U6k2DzA=u;DOhMa=Ha`y@iHd92oH$WHA-O*> z^g-;uD@PU@uI-ZknkyyyF+qKQg2j5VciW;xotSK_>mEP6sJ=QH0^9*$e*_w8YwZgBbI^+VDn%sdkVN*+C3UGz0BeD~};RgS#58yK_p z+^zq#&uj7wJ?mZp`vxVsguwO1ac|d6Y4u_)D;GJ<9>>Ljq+2FBbS5Oy22mCG%nF#xl#DPq}0hE~PJe zyluZhip8=*lY5EBRg-U|U3dI$^Ek7YulVz|-7A#@Sh-DwfM z$en>7RGxRL9ofwv-vO zf^pug_a|fwTe}@SzvXf5ulv1hG0Tm|C2r3>@3rQh@oo@V!^v||Q{air4L^~c8jCf) z+etZRt`-h|Ts$l8)m@(kNnRsn?UJH(w|$pA{MryJ-4!ps<<_?x)h|a@%LMP)T+%xE z^X`&XiKg4ix7f5-@7^xva>C=7+ueKRF&3G{tk=H;eNJ4_`1bo%_H{07w=HCsez7fJ z@Z#9EI$+7B=cTz? zUYl_vW1pI9Om5taT9#yitE~TZuIk^9s9bwvSM%q$+kMtEEIARF_5W=O$L)oMu@g%~ z80WKasLr0}_fRl$szuk&@`K+U-X^@?zWeCwu-q2u%!vVqSFLzAM_f_d8lCmC9U&jE?_T6N+Li>zy*2#U$kDi(^lA`pgo0 z_9?MCUxmv|t4lB@?R=ed^T+IYVlK~C$|&iy$NUYNvg@AfoSxF@uAgokzAa;a-hBO6 zHGY*@{g1?^iJg3KzwXJ@g7dR#WK_C&qx~wLhJA^sKgs;rRnDU-o#T}Bn>siseeDN3CJL)$7YUq5hQ*M3O^&0_NJ0ltMqaQORw#GQNPJ4GlujR?7zegXv zTd%u1-fW_Zw%WF0o(J1(8K-6`zirr5s64gNz}p}>>~e*n=bA-3Y}}Xa5pti{Hs|gF zp7**bx2y!iZm+y^_T(n^=DBP8uCI;dm$H-+E#%Mnna3%3ZzJQ8(yBHqYq8%e-ulis z_~t-J{GYeSZZm!MsF)dI7qNW8Z9Sj5jkY=mbe`J<=LmIi?_4kYrefK@?VI@6K6Lb7 zDazZa_4A07^W>9v{;a*}I`8OY32vE_c>>bw(pMCne=wg{XVd3>?Or{<(@tDNf8cex;gSZ{Snd^0A{PKgszdL-CEwaQP(~f6bWxPM$gQQ+D&3uWEc} ziteg!`ROpIKMBW_E_V zxISOcgv+vhc6}N@xBkiAaaXD>eMX08%Hu!gU92^to2SIrM!R2K=E!yT_>A{SOX6Bz z$Q};!)31oHwD)+;{r2F4U$0kiN4Z>?xtk8hv!1)gyM@)1=S4J0=@?9TwD|MMrG2|QiXDzKe_89w z^S9}Z+60vs!adE4&d*cwdbUg>PwVoQzxSueU6bc6v7V~`-NT&K%$z4w_@RfjG*cI= za#^dzj#WEPO^-k6`+3Pkl~0;=$sDW#?u<*FJ$K&jf0bC5)N}vOjoWAzb z`eRN^p{~!J<|ly?G5KPzN{*nP`ovMhu*xX zPv;ITt={f^?T=!4z@h%2D;qd4b~u-VVuR(NcDEHcTz zWV>#*Qg_I|xvLgkou2YiZvxYa&d|fne_Yv=mtH!@@_Uh0(|=tKw|5QBYB?X2dnesD zjqN$4%qj4pa>bKFJ zcR;FaPc-9%2R1h?Pk0v8FevzbSK8?kB(iD3yuFz>M0W*6yiwVtyZ_zl$h-IF8T5rc zdYu(spPi->yX&Whx$yH{J+ z&b#6GXW47MXL>o-+sfG9zL;omV((o+p-2@~p6!#gS!P#A7;t#bl8o*>&DR^kv$61x z**cL8)_Di?n7+*_WN?15Z{h?o76G%bORIHaA_H5OZCPqu+vO!o}MEYo|ok> z)Ma*j#VPJo^I{H@_q>r)b~Cg!we8xIIREWR5ragD_Qob3^Vj?-iUO@IE{ZZ= z?Il-lKfG*FMuXG2D{7WsI@j_C{c3qv__;}=&EV+O!29v<+B5#Ilb8OW^yb$ot=o#c zrrK3(_dMdCNHg5%Xjk+$I`pSb_y0G3|4C2YD)9fCyUfpJTa3hW;pSbju}sT)WDmXY zc%HpG`M>WZwl$6>fA6nfyXjXOPg3>Ey6j6rx5C<&zKNfE#tmQ;`PxTnkybToG3MRTOfDhso2em4*_D?8-xx?DBQT! z&nxM9qqNh(qxI%0#r5BJdYztiB2QUtU+w4BA8HmWh*$sEv-vff=Fh5SG0clTFfdq2 zRcVKO+-Maz*W&6#A{Q|n?}B$Z&tXcjQNArrLy%e zN)!sBHPz>yeqkot&Ev%YHcLG9!fzAH>t zimv}<|LpcvlRs1YSN*WF>*e~f#7JPj8!tMAnc?i(Fdu1xpY!ZO?&_PzCEw$t7* zRlMSY`XqzbQxyX&{c{YpvUmH~FMR7S$Ni6S+MD~gkL;A2t>t67 zlaf;GjV`9&?CbDropEWWKSR+0mckbCT}ST~+}`Q1YJ)?2a(r{O*8^K`Tf0u)^LCBO z@^d7O-<`IYJa7K(*vZ_iJff^+vC*$)6wYv)H@!hVwl$&DWaq32g%b|VcXirnoHAwE zHIA0ezNgZ8S2W)Ao-$$Ec^e;7i3J9Rd7EX;n4X?fX+L*3M5TFR@A_aJZu`Jp5#I&g zb+GiEH1k&zBq$&C%Ltvw!Jmb3A$!UZ)JN6mSuzryC9>AHBRM&6O@#mf=rd+K#=62PssaD4)d&z8j)2QF< zpy8DM>W#kJt*sBAiR*Xqt@JT??YAuZS8(+Dmb~42Rn~ENUOr=SiTlCa37_h_U$UL~ z9(h|hcH7?hYt;^3yt1lvwV`YQQ?lL@heu+cG}Rv4?RuYO^=!4n=N+Of@vraNF~}r& zis@VqUKTOGdA;lQ8op&8PR*U};v3Pqh2ffeKnMHzG!;drDQh298=1{XkZ1htzUJY% zH$s=DJ^hpe_si^BQ3$jWb|ZxTqWx<=TKlK|Y z{+Y0LQPQD(@+xY9e~<4AEno<`PEt&#zdy<^e4niKQf61w|2uP;*ryaF^Q%;TJax6h`G2gh*rb_jTasgq^#5Lo z5!`*Z>$a>=$)#J@CVR~Iu532r)3%S%-7#-2O&1IDP=AtcBJ-we*A1097pJlRbbsP> zgZr1j`I$c#+MfE;_4#*_0?YMVTTf?9oIE+Z&P{A`$ZF5Hk_AOu7rTZ(-a66TbEZP) zRI_g0!=&sR(py1C~668UzApZ<#r4i#)z8<#cjf8q}_ zyLukewOh9a&8zF5sPwP=>*n(>-p#W8WzXSVAH#c8O~&!1xxK1Kqw};M2~Xn!PCr+h zx929yBM~T7}o@=S9`4?mqe_v_Z#G5g*-t#;#e zGS_cjdR{jmP0KRfAZO)2nI}7Q=Pv!a@o{HXtT;2{_WwU8PwzQ8OZG(Mp~p+(Hf?2i z5@Pw|jWpZjUvEwwkYfJ*XyvXa(t0o7UYjG9{cQP}jixsFwY7JIt(haDp6J+guKRU+ z#)MV>XY~}t@BWn9`r-WA#Ybu_LxhfA^FI7^kJ8P#H_U3vdU)QiU@{CpcEta}_v=TW zy-ng$-QIrl1#kGiNqc3ZEfU@bT+#-L}O%g_qt=eDkjR?x&*e6|epM1n%E< zFPtF4!@FJdQ%YS@F_UZjwA)FYYaKZ2RiM4FNm_X@VNtPO-e{_)w+%{L{l1 zcANdw^cjA3a0LJPwazqTudPRyWWw2&C6Q{C`TsWd z7HrO$xZg}S>4VX$@PMB4dP%3{Be|yS$}xCZ_@Ar)J8S3Fklj^R&d>aQrM#lLXzTy_ z^MNA$4Eq@;U*0t#%bJ1dzPtkS<-FCq=E+tza6UMsa)?3n@b$0D1m667ee~q&l}Z1O ztoql}z39?^qh;+Af4*UVCi~x0kALUV6Yuou=I5H;t!ZCVrOM#FPwi6b`qi4<9QKJE zeac_XPd*YMy{O>u;b~FdW7NLx^6_9wUc+%$t^R{f-x;6GbM+E$)qihOty>|xd%_R- z@`>yHA1sSsYQ)|d%ypne^>KK!=gAH(#rW#FH~+bu>aR??@G5X|Z9TJ3?)s@l3vBdj z9x$86&f}|XoAFrd@NKKIT`_f&qIN7QjsJh!*L`#KzJrr}`^pp^#MZgLeipH;OSWBA z{F>pH&ib<~Gd?`qH_da(hacBiJL=l>vl+P}PqWD1Z*tLJ$tkh=IOA-|l`&_@U{?G7<*v$#Z4u`dPsz{ybI)6Cwj7H@ z!2GSnjLE#IXN0rkch6rEY&hM^Zg%lJ^_N>c6nOmdItq48_nvV#a>B|sBem1XHmB|% zv%9d1DTO&=)w$1mGPi$fKXz8zvm+|5APd!X; zxHS7@?o27E-lH&Y!`YX~ZTn4<0u8O0c_OsdE#H~w-nwT}y{>>?l2TJagwE>3|LeP6 zC1m#(+!hN9_WIE}RcMNUir&}Qf3LTk)cRjPRi#4Y!ipOcds323^Ef7`F4yi~b?|ik zp2^*{DLp6Wy-S(;zvS|D)te!qjB=;fjUuO5}_)6XxoGV)*xWb+{S+8w)?Xf+V zx31?~#Kb4&k5Zyv8Grcs>&6>Hv2|aQJ0~dL=)5GRwLez;WKe|x?@IMA+n?7**t1lA zoAAKk@<);Af0eq?=e+J7(=>i~c7uXvOT(koMe_42YctolX!EVHYhG0-vi3&T{do_Q z!@SnAKE86c^+AS{2@6YB+^^GJ9U=RBEdF0!^sDyjY2z)|g{E3Nay`0actf7qc%puz zLiv~T*IQPxWL6y4I~7-CwJ!Ad(|sGtR2H4l+ji2N^~b8l$p;s#d3)L3^_hZ2sO!uH zQ<9aprQdj$-F(OTg@K7y_O%>qPHTzG^uNr7c9t8ST=nfJVt8`@yQ^T)*Ql1JRzcf? zZyxZ!wsC&ov?MG2-!IAX8^s6a^=uAi%=oxF?CEPs`_*;PT{rA*GA{O*CR&nv+vP!f z>%td(Gwf79{C`rwpLLj>G3?jDbh%xuO*5l^p0GP0!m7ONT8&lkhy01P+DaQD?bh=u zbW|}%w?*vx(xH&?m@h2CQfejp+V0krc>DgK8BUvpMb@mj`t^9o1C`Z@lOvx$%oCq_ ztEM|@ZI@oaweTooo0cx0v?(bZ-$cY$Ssy%?z;z>e4f}Rc;d|N*46eJM{;@do*05}9 zj})8QMydJ2TmGj1O>)|maegM_O}pePGSdny9YTc;n>|g4xzW+nsIc;({Gug0O6&Lz zrVD)N>Ph4KvF883ExEpjSdy*%PW|}w;PSyE`pNA*ufN2kTkkt7(a-xYwzl@x=S`x` z{D=Q<33prNR(M-5SF}ON#47pwiN+1BaZjvD6nw(u?tXlgaGxVfU+GeK+3MPlGlKnA z#LS#|@pI7%?yN2C9=8)`$4JEA^=S&L)c)C+FEpbxK<3n|G_I+(H60AB$Ga!@xCuV@ z?{V_;PD@(5{`;{d!rt1FoLio#%KkC?lPa+5N_*?UPyH)$75paEOWyvu@#e{@?5hSB zHrNI|t{qpzQ#?Z{LnIHW+^X$&^dCFD$joz!7+I)UoxMpv1UrkP@Q2O)c{coy&x39iw-}~d5 zfx*uUTAO?hTd`^fvVCmk^GgX5cD2;y-L*qldS|84?a40pL?&)hWb)vvd8C_V-Wy$X zvN-pokJ0=X&zBoIK1w{9e6U;K8RKiazf!x-M$3BkH(u767Ipb2M~W+d)}#fB zZ>#zmD|EuN{cdQ^GtGX#J$vE~j<1T2?Imt?EiB3WJe+=SbA!cGrks-r)Y`InA^-HY zdGbef_~rS8`0W15NAIcS3zKJH+_p#Hnom-5(vBGs*WTCNi@Uierl+KeV^UAg=|^HN zJ$X|%yUPScSH08-*0-KHVY-s(>HD%}OrPewRo{0j#mZ@4z)y$SYnZnrI7fQV;H-Ws zuX1x+Z||8q|8B~EKlix-!k ze%xb~$-Q zJdKC4P48{ciEh}N@#f}Q?O#*w9RB9O_MIcJL@VdH-)-HWZxo*OUOZQB_B^#QVeJ9C zITJ)#;(NCVEHD&&>K@`6n<_R-di8vBzc*Og)<@=tL#@5C&lOoL8T^G4LWLXn6`OmHOH@frA z2eQrBR1^H?=OO+jqEn(c_?sW>-S8^0sL*if=aWT0V&0z8YvOFPH+6a(_G^}1q%cF} zQk$3JxmB7|R(z=VQMPIO`-z;UQNJ#K(%;f#sgYv7t!;(v%59XHK4i#W7|ZUkF+ zWK782xij9x=ZxEddx?*xPxY5c{5g?LY)3}4Oq`T<^tTH~Gxn}z+W)@q+3%=zMsw9I zoY|5Np1*i(`8ghW6}6*VZ~Z^4z0WhJLC}p~zsfaD?aS)R^AyZ%F1Iaxyez!r;+NtB zRW_}zFP&@ir#DS*x%gV}Uu)0rYv~U@9T(Zg^g2!cY3L`h!ukzgC$-nhWcWSQZNAte z@_D1)+m0t!|2pW1>`REB&bHt3O{4x#PL~@=f&W+b{b#R=QF*1A!53tCPiDU3o*Fij zmm8)T%+HGd{8S}lLKgqK+5R8aZkBqI$#_xNz9{Zo*oCL>-mIN?|5VsgzN&{DoQ5K* z60NV><#>KLPrb@`!)mQl<^9;FMf=_MeVE*p_BBWFa3Z%&+44;fE^SJGwJD$N$P`JR zzXHduncJn9TGfTElh`*&_MCI9&DAgRFRzHo*F8M_MLy%?x*RBT@3jUNjF{wKScU73F3&(ij) z1<|UpAJ4Nex*g#ZSyeoBy+wGmX6Izn^t->_c`jwXtB^J0{QJ`4@F3xjIUV0c^6bku z=N?xRvw6vR`QuivZwt1{&OEVUMqGQ=u1`H5>JpAkYnsb*t7PusP{d|umS z-#(Zs@Z$MTjn7l14>0vFwo#~*d|jl&%5%{8^5P#0SNzTY zw+7ylJbq-S()Zp%=khW>lQR{j->T$PK1!Ur-H_Q*_}o$X;KjrHwtw3Fb6b+aX-U(Y zyW?x!avySbZd)$1JUF2J(_E&^4OYqT}8*jz!a3G8yFL{$1mEaPEltHef@KF|Hf4h+x|+OIyFIZE$_jzslu#JUOR1S$d&%eoFVvvdFP2& zRxFyfavXBu-Su_f7&ho6+CQFVJ3Zw~{Ztzfp7$wQMZE44?)b<1dJ|u>Kuu_(731w(o5vei>f(9SH_p%97ZqJ;-QX@Jxc4m$D7ps4hbLJSb`B>l9`*LApx#oqr35OW-mVcjn^?r@3&To$`4N5PoPy8>r zv2pndre@nkt4p`Zu(`OfKTNQ@AD%sZ^~NXMFY_HWow*HiwnavEx;lJjnfvFyd)(Sb z4Hw`3nDJFcynBB*$CXIFUM+pzaDKykv-+Ja^7ZS(Izs!`sPRcL%{=xy>F0N@mqz72 z4hA}o`ma9pbTzCwvD&_W;x5VOrB+OrGUK+KpYd+v)>reD4Oah|aJo;Wb$@$5L&%9; zr*tHiIb`|%+K~nEi>@d)7R1+t#r31ow2l zGRcsjJvW7>uIRY4@Lh`azPjK43=Sm;)CDx(p8JnscH$vP*J-;x1$T33&0$}px9v{N z3=RQnO@6Cwwd+^kt<;_oFiE%5CiAC_$dwoKCrkdzipy@%P_mvCIsNltt^T^C>95yb zENAj=61;s@mr3B>8Wm>sx=ssm?*AXlonk~hU!779|9eY5jLEy8%f)==qe(M(eZFoo zFpF-ClT+Z;TVW_!e(j%7QtWQ$A0=UI9sO+HMTKD*kqLE0;+E@P^6Ga@(mQFmQSJ`A zbyj^f@4`7AMqCF3j?9ZK^Wk(e*dS|Uw}RpS<(UHVO5)OAJJ$AXKC>%0Y|3{vrOlzo zchB_5N&6`QI=Tu%h!)umy zMD*N0-}P^&yt>O?^Ea}5o5h<1@8npYlLB+Iy3{SN6>Vvq{Bijy*GSQH#?0#bUoAJW z2t7XSv}eiW6_aw_OwPHn_`Q;&%pU{!-{(cnzpsjm&RG`qA!H-d%*%nm>uy2HEpM&A{?|Mb9%4@eQv{G;nSa`)dM_V{~_3q_+>?ar73;t1HpJ08xrc?db z`y$aTlQS$HG2bfL&b)}#``~@yv?G@iLRZHgsa$-cM&)XI#i4VD<~K{*=rdne$DBGTwFWII+*8!&K$Q)<@-m`;|(z^#AD& zST7LkF!4?plm9P%-(QpU*R89XdfbO4#njhTnlDP&v&;N+Qi0%!{2Rv`PwQ%NCRV*j zdTXI5p0L+6g1I@x;tc=q#A>J9pXyWRzmWVUapw8K8-b?ve1T7T3^Et*5wpLP`CHS4 zaly$6eicXZS2J-PmQFWsHW6FYnDD^Iyi)CZ`5E=xe~T*=Q+vXePwZ~h`*4)s&-{?9 z-=^<5=W|<1ll$ZNqNW|{7dt)czQ==ArOQqCJQ03*ta@HUy~?{q|MYHma0%LYWNrWS z?y%;n2|_o-Dw%q2#&4QXv|E42v>Cemg4@En8y(eulrwA2p1(=t_bfRPk2N8`Oyc)E zUwvt#VcNDw(_Oagy1T3J>aw)WuSDkP=sCBn@l-9_lfrf6U+>ehh>+=<_Mh5swm~`h z|IRm|3$h+wbuV#@h`9Er-{t0lLz4ZgBIDEauFD)_lV$uXf9BMK!||)XTkq%4lPs3p z(s2n$9-g~5SWAT(owz}&D`}Xhn!Jqthm$T94*N)3K zZ@X1$`p2Q!;n5B8s%10d)NEO@%Tf-t9}U>&9u>AFHfUz{f{me7tjykad?p{gBN#RH zZFY8qBtDE$`|few?~Xv)>uv58jXpCEyEpjCzB~DDp;hXQ=?fesLA|FEq_< z3hUCzzm-_lE@3peA5nCwJy%u7-AD5HM^1xtJHpB&4m&J8_M$Cd{nd2ly?sqNi<6q4 zJ?2r1Um;{TNArIBwzn}q-ELehy!+&M3jfK=Eo&p*U79Z}DB1-Q#{+Y`Dgq^YOboaoL)(KeW=%{#8hI@Zk4ebBE6{{D6UkYJSl!uc*!sPX&#g3pPI#~XqiyLk`ei==Cl3#4gIlR(b^NE zb)T(gxS)})yDUzA#V*IPq;?&T2gT<iOXV|)H z?a5!NS1)*XZ$D(8&5(M#e@C^PUT4-rcO@?pm9bQN#iZnZXhE9ZW3N?A7PBWjiF*6kv^w|tP3>*<44#sHoB72Tq~DA_ zGWY(e-lGo8TigEgrmp?^VQ;ffs?(ns1Syy)VTcN7LooN9t3~X=so%HmblfLNY=I~j*`{m3;mdXhi zSO0wJ#4h|X{Nl>V_bu0M+>|q2^g^V=mP6_PSmp{k*DSm7QRaMccDPP>)!$`pY+2<+ zkL>4PQQ5^MQBr%|<-(14mKARLqVeIo4_|3nx@n>Eh|F_ua2+fKRJrue%q)h zur288M{a-S#bx!SW<7o@Om@E)0mDM;H7B}_Z zM&XN_ISx+nKPlQg;qoa*j%8fyr(18{c4wY=8^7?ylb7~fFjVYmN{c^UvNT!R^R0}f z_1}^Yy&vsPEYR56>ax=N#>rnBX7W$$P-hFhF#I~ zJ{(csv1grGUifSO0-kujZ8fVWwu_(K*!s^f_YwcAFCnRd*St921~gA#snx79P&p96 z)c)$?9PM)s>l1wZ+d`u1dsIaVZwQ)Y>fH~qdL8tC$^3b-J9c=zY3#|lZu4r3Crb*? ztQZBROwP+nJGWS`*7}vaXWRTQYg^Jigf7Y+K6LC>->Igod;35Q#1^-;cz$=qcQD{jfi1U%5Vb=&do`;EtLU8=a_>HqW3xkKmQ^SqeLa8Bt|t<=4k zC5r#LbNr6=1+=}4mzb8YFpz%%``n{n4R1~F&Z-Z3d+hA?=Sx+6Z7h#%Pm_=tb|mH&^=CdD)wZ2DgL&1mc0 za}p`ylF8{;%8IKUcuy^GxYB>V_u?TtS(RnSO|SjCwf>O(oA8oyt{U%iH>Pz8@~vHS z;y@{-2-4ep*uEz79?b&hDzMop_ z+w{I=^9Q;n^t*oCZdkfJ&nN3nldI~1fX1G;dRJptQ2U}AEZ&zw_EE88oP5ALfr{Y5HzkOoUes(OA zswtNLdLhVoWxE#B%gWGo7dF0;Uu{0`sZHXk9l5_|OuZfKQ}OmnuU+!9Z#P&Uu6#Xh zGw-+Vd-{?_Z|{6LEUMi+CEd2=QhLXR+j?((v?d-1d~Eq3Z#GMu0Oz_d@3id%e(-Vy z>S=TAo7ybX@w)w1RdRr_X#6kBr))7!uc`%(UnoBP{9>eDe$UAy35o8>N-?wK=e~Gj zaPfHD>Nj_aSBOd|9LVW-yC-bVO^e{`rvh76F1s#Yz{tVQVz|N2w&Iog;=2nQw0_t5 z@7ee)`em;Bp#vOoZCP;(7A@Wqzel@R<9*7FHUFe`$~Eo%{%VJoH;2lx^3!DrE=TI7 z2>JwccJY4L|Mwx&N1jhLmRHjMM9D5F`lz=5!S6>k&kI@a{}cMdyujG*yO3BXGuI!6 zy~h-_u8XtGSl`w0(ZY!NegDht4sI>Eo?Cow6je-_xM#Y>iJaauA1_rsso866sjkMh z2y)U$cZ26`7q2Bd)H2-I@7YqvV?|kfT9jIa1H&y0t$eb0Yj_cp5Es<{i zuTih$up+V?DQF52>4X;!VVhDU>dVj9;&4Y{TgS6y#u(;itK3#3)8Rla_7uM>2nCW)7@yN5w zkNG-xyUt`}E#DGc)$;uG+|L>93O@uCHP61iw3a2sg1uW>%eBzWIWgt($?C(;K5V$Y zMZCz+HsFPUj{=iu(yh*n3mayp-DGV%`u}^O;sg%C>r=P0%De3S5`9?1-)5S4yv*X$ zPo!jp3|pT$yq($I+Torxy<0y%+FJO;aoKxs0$*yl>~YHY@Te=ZC)QSp{UqP63->1- zZCGiM`qYzWkMwcZI}HME4+3}etbWmuc=gf==KZzD9(=pUmRA{ZFU-kt-@%X%J*y>s zSvER4yB7J#XCFUMF0GvT;`ftA%PLlOiwOTS4<0>Ob*uaIep`+J>xZx1A51^ACye9g zT)wX#bnw1!})r-$n$mnF7ywI;*riO|aH{G7Q)wS*8%2)}Xw{KV*M25j zN707IA)m8v?~*g0GoQn;*<+vlrE0~XeXG|^`C0V2x8>yiG|q1;zs@?>t1|7hThe`@ zzEsynNyD{k^tRQ%I&mcQWZ&_>BJ#=+%N*yksd3)tpOn|Nry>55)7SR_v!&J^M9-AzGxO~MmkHvG!r(IH=lWA}!{R`iOD^2ycdg|F`o(Rz{d$G2+<(WvU z(Ugf2w^l2?yly14em8sl#`qhtOYo`(tJ2xoo~{$J%C` zsv2>_uIUH=khrov&wLGFfK}bDrM3|Cc+~em*Agu5|k5l3C7dp%MSLe+o*Bk$wGz z`C;vamukzK6{Ig8nI7`|;l7pTTV;A@H$L>Dks}s znbZJHIR^KP<1BM{^z_P)zptD->&C9d46>fo{8o+*FJe_c>CnUE$<8u&DP4Se78_WZTr!@MV^t7aZ6)&PboVelA_eo zY`g8VYQa92^^132J9S7$g7?(315tZxj;L<@w>}_P^tx#7B9pe$54JWm3Vlz>_e*T} z|GVRR`?CG9cfJS2zy5zqMW`XNk%2kPA(^-2bn_JLX`9!Ic)gr{@M~9u?8@5ZT%Px; z;yQO`Vk18Boam zsJlzx*KhU2<+r@^<~pc<=nlO7Fz{fBV$2VbH_l-byRW`KWaX6Xur&9!!oh7~_a`xb zsk*p*%A<-;nr{29s2th(@UhRX6B&JGH!p8rdVPUOg4V{@O1pB;7-{sJsyOTWC^e5s zuw{qglL_+9ypes;C)*R5P4}+-^3GeObA^zL=KGg#1iQa>ynOC);@`u`?{jrmL{GbH z5IFPELi>)#(aU$fy(`Eod+wlROQpivGMm344`0f>{Zx|n{ogEm(?utw7n!K6>+3uu zzWlWE`IWMJ*&5Ew-O+xmjiuOcnuV@4Pu)viGwzl8@ z1^I7ls@n9Y$Hn22hn5p}cRuG!VSBY>+7)bPp1y9Bk=@W?9L?01|ByZTp!XT+GtrmI z=B2+(5dLZ!Wg2uh>)Q?wA(g3bv(4RBocZ3ybN2ToWwRIkj+^>9@7Fb!%}JCO%{hN` zv*ypQ+{d$9FGrp4o_geH-LEN1{f>eY+CQsrsGFIy<4DHSfYX!qh<)<*j8i^tZC z(USE22d=RN_a0=sG$*t#L9C(Qsk>#5K*6Jzy;t>)Hb`&&|7+jYirrhACdl4@%lGJg zCx`EP!F0zX$!9nJT=d4V!QU1lkM zhVkfG!Cw~s5(|%=u5!usU$XO^Ze7>>U-AzU)Y{~tm+d&ctLyz{D^{ID`|^9^syE30 zR}o#vGtIDBH2UD#>2I{0jNZt!2fdOvoAkERQRVRa>j{Uqy_~o>jBY`#{tW%0T)SB_$X zz3+44^vqb_AMibC&7baY#r2T$vQTEZqN)4VR<(%qoVpb#|KZZJ^GPk1dk^j361in+ zis9Qoo1U$GxI8UB|JBvo&M$14Ux@{j*}ZOF_3OcM8>hJPmIISa1nzK8svwjp!W51UEUypwQpK9e4C%-rEKDzJWU*h$n>+1V8LT2Gt>ReuLz5ib4 zj-0aI;!ok5r1ZWnjZ(R2xJaJOR;zE*t<$r996x-kX;#4lpO<~%4|;->tMXU9+thZ_ zG1-&nck@&??f(rEOrrlT>ODE}zxAG3%)hxJN|rJk{8$>re#7Lv%{LCNRXw(N%A<4lA8+2~JFlZ%!uChZG8UeIh>%pdtsH&f;c@nc zc@|fOZffw% zkv_iDtnkVn!{33)cJnv%w+ApieAapAY@Us~`EQ2>J-qfOgV*kx`S-7uz@#KC4#PO+ z8IJe4clF38i9`!gMNyfI^6!+*D1DWV&qkH53!C_T1iwaNC< zdm$$(BL7@ER?5}fwL&?UQ*zVc1zgMDTZ-&9m(-m2)?(WAsyW-cMStfk%vV08pE^_O z#yR`Y|EqXq-hB~yp{rzR`K@$*U_-`5{nr<>a&OBYly#^$_2~7%fb$9;6;zCMH08=% zzhyt@^;&go<`;*Cm%4Kfa80|hc+JG@yA#r9uQ+G;NnUyPb2FdaUCSgVKhL%Myr2Jt zao%o^%hyzHeOr;JCn0pm>`39m-lf}n=WYD+@$uz{-=dVvp9c3|V7j4@Xum|2(KXY( z&NnE)xBRHzgg%d(eH*V`pJw{0ch>E-VXpu4s}*ZLn@T+8P1Jya zZ*MdGUf31y$$w_u6b`2Oif7+G{MHdCV0AV0n(Cu9izQ}!i~VBx*wbhIQ@zXmr!?nI z(4YRn-@>u((G270uT=-OP1#9%Xs8|s5+b9^V-ylDK?++-W0b$dsFM1DL=@D%RzD=e23h5WyBE4KJkhU({vmdfav zj@Qgpe2u!x4+#p$Mu!LA`SN}3MvrxFc3)Dr$$Zp4xbud3m292%Laj}e#j(tMTO<}t z%np?Rde_DRh}7tw5CNI zIbk+^7pG_p?_-AByXIW(5}Er~(LaBpP!xA$T2RZWS*i@Wa@ zW(vL!T2pg;&ePJZufMyUQK;$q_$A|a^=y{7$nE_aSKm%sI^o&vHV>iW)hhz^qdiak zStffhcgDfo=ToJwMap@&edc@P@YJt%w)FjjuUU5R&6J+x?{Z#1`%zzW){7^(txHxF zn7luj?ex#}jq|Fl`@~L$23=EB5fXEeHk-SL>paiV#vZXn#?MxMOE{w}r=s%u>#cY1 zvP7<5HB&m%(8b*1X=u-)$vJUOyixlyMwy(JU$?xHcKz~ZtaRbkTO>aDO@Ku`!>(k` zn6f5$HASBJ!jY0cw|eAVnD%$Em*-SAzUFv!lQsp5+X6oxPZhLc$?@&Jq<%=y?wkYP zqvz{|I&^|_zIs0AE3Oce{PxND^#0Y8K1+J3@oY&j@9Pctkyh8laCgOjRqe&5%w@ki zk6v7q5v}3zqh!s+sv{vg6+I6;(V8YMz5o8{NdZq~T6&A#oW0&WXUX#`dk&u#x^&~s z&22rWL+#j>h^+q`x93(`-%IUDFD8AzYPIKw*5-RlO-?*fpPaxOc1r&Fbg^$yGlZXZ z+!5s|RlC0^!;Iy#Hm_bDBh#Oie%JXUP3FJ2w&&esFJ_(zGn95^Z@+QGYsrK?&50?| ziEEFvXs;5rt+BYQ^>%NpZpX!lPL+VCzMD6uJPDtub+c>d+l_60QsIh{vfI9&sJo+3 zsbj|Ub$e5t*;~7XTOX+?m>>Io@?6@Xww%zKKK=cz7uO$Vi&1GY6FfL!dx@WWM2n{B zFSnCx%a*0jaIwAi{pc;x9m{5?x@o1J?@QSB$zJP&@Pk|IKPyf)+OoIY`MNY~$Lx8b zOdE_{<{!Df^>OgRg%39{nQW0?fAs~=e9LXQjOW7zuI#A38_k%yUrVdl!Zus#cE-8` zRZQ1b@Z}#Y4B~9rx4iyxvct*KvQyZtygtRbOnJ{boyS#E#HlkbdC~G@dEsNz_ystQ z2JUoFo%^O}TC!Tt%hw{wB5gH%*B5LsG^^QJ(AVANu=aicXLQlNl`|%4bwBU_UUKhT z>ja$zH@6Ca17~lI3qNJW)9x3;)fQTMIYTm;<9fs7ob?$SR~Q^n z`PeO_FSA%WZOKa`<)f=suUO)DqethR|B)kt?cN_wrk<7-ebSM1aa*wKjk?26410Ii zz6*G!doftFe1Yp0;23ImcL89FZeSpQ+B!d>hIQx z1qH=7Zrl!ZJ75%bcs~C%{yN!BYpi)hDqUvX`QtLT;CrF~+ve))4iOxzZ`;n;U0THF zk#}ldm%x{Y)h+s$e(m}2%VBS{jOgrbGWI%A(JG6Q`BKxJgW^N1&s{e}LSmG>-OJ09a^xtrbd_Uc@j z*noiIMfqMP8?4U89dq5c=ZE3XL;V}|+d~#D7t5%ga$?=g&_@dPIlH$hALNS6e z+p3e^-1bx1ew_Xk%kH)F-gH&r68@e&O8*inY=3M|Yq!XfI1=CRR9)6S_PBHg$3uO` z|J(n5I{kn>pQ)-YZOTo~-CtC?q!>D_j-TCj@!o;gd_K<;fhbgK8598eFbx87`!Q#mcKFMh|=*XPrjIq##Z=KK($%&&N~#AGxGHU;o7X83(jAW*pYE)IAivWvY!sI^Q)V zrNi|RQ)`ybs1U!B%D2LB!IFN?A7_@SnuU4hrsp+tUa{%;W5}-e*8l%b4bPw>ozni# zH@wyr(c82-pd&f@Ugaf+&EHr1yqjmg^-tCB*3I7c8Xg_8`t<0$lH(taX`vg$QUi6Q z6pt>gXy3N%msjk^$7<2>QFYT!N`yKWOKg6i`Y=~BQ{fv!ydZA9Eq=&^OdGRNic6Q?3 zFFp4a2DG&^*fsFo=!IBR9m}5 zV#*$=cNzSF%bkxks-OG3HTF3}>`BSVT?)rc&nUc^aM;mrH%ZL;tG-h1;~w(&&r zY7smArZ(q?n?GHzKev!QvPbKhsY-KSxlj5+?ze9-IA;FRwPA$%>ca-Z!|1*gDKjnio zt7^8Wi(+rT#mmiK!`!}vSe4xKK6AXJPesdN(lq{e)84)+-(RM{U&E=^q9DIMG4j}& ztPi0&lakcV%=qcz){tQOdE-O|je84=l$I=gwOuu0T2_98ycRoqx6%EH8&|0m8ag)e z>CTz|t(ME-W%oPg?aQ7nJlDp!WY!Y<(<@8w|9iXSpaE0bzZvVhV-tTKJRvDACv+w} z##c$ky{jZUUm^eJGS}I@A&%*fg!yHUYW$yY#qrIWt5%Hr+qdn?b&6Y&{;+7b%xO7g z51u-k*v|cb_iTPW)AquQkKRcK4S#KWJ2lztQ{O+8M#|7!XR`-QOH(N27HgO6WzUD^C)7n~;A1w`sqo{Y~3F-%%lbcy42mX~{D zXh5UTFGD|>pH+qivA0<{S4);Eu6Sv`)N}H*PUFO%0vCij-xqPJd2IeBbG~Uw&-_Ka zoGfcstm0ak(`_-yH+{(tMb{O?F*`VfV35TQfKI7KGhh=XNnAl-=mnjJb4t#cR)V zOP(m7uuR?dVc*WG)o(Y5oO&}M@ULrRTH6`s!6(6funQ!4HDR*R~cmfOFd?VYbB z_;rca@s0D9jM5y%f8>Q{Z0qq@wqB@B_yK1ayHleTm*)?WaP_5&TxQ%zn)IerZX*7yC4ScvEuraOw`xs};a2-N$0B0-^}SDjxAf1HUY;rR z>d69&TgUY-=l6w_pANggQfD+nrRDQ8i+iWeFAlk_yt27+>9?R;FW)ZUI{9Gt{7E*q zFE)Jhz86>{T^(FEp<8>(1q;uYLMuBqci&!fYSj;8){J!#&(|m~u#c5H7dKmHLEY`T zr>`sYjU_jR+e_S7pK@l^&NZc`H$J4F2%Z0#lhtl#SyIbBwY(a~?feX@V|Kns-nQdd ztWeZ~+9P+xbvCZ6KD=hzC7~PZZn@Pc`hD*R^w8Q=_2Slz>9+G@XH4W1NztgE|L$I& zq|S~L_YSO1*(0!gw>oq4Y&N;&SDt^pw_yK7Jyy?|HJ?lKUtG>yYT(%Eo+KQ;yZ<1A z#M2h7jcd!7di;!-?h~xAYVGXokezQ>f9!5IuP7HkrRF4f;pItvgIr_YNiK$k$M>hz z?3vQx!Js_XBEF|!&yL;GXNaB>(8!72u$aZ+#A~4`&J0x@{EN&PdxE-Z&dt#1`{E@0 zsPu8uuh6EZ+GV?|KW=>77Ql7Pee;@4Dk}x$H$3Ino0A*E()d@?UN&5-TDa1wB3pF3 z=CQXofBFB~%y((`ADdZgE*m6oG*bKiKCbKC$GoK}yA?RKjI(*yDf+U1+4O%!V&Lm% zVyE;Pak-ZpE&ZHKQZAG&_D)Zs&eDBs<@&djZ50&Q1x#IIz=^RDE( z^y7C>@ME_vH(PJ*vAU8{ZCzr`a%S`HJFMCXO=4vr8}W{^YpE z8*n;GaKo>yeAbfA$3vz_*V`PQRv(}BXoeL>pquq&vjbA{w?8|5`5qHmf7rh*MD=M~ zy^d+zq!cD^EZA7DfFMP z%>2f-zveb_KQj*Zv9p_NaP@7Rm%UF{Vx11liVaqCf*zdsaGqzjuT{qd5%)b}i{5Iu zFdkes<0*Gj<+Q){5j#y5BpW@<+;V+WyJ+TiRo2@p@-80{yI`l6b zd|iEWzG154`g0E@`DV|WFKstXfrazNaW{p-D_&bWuko={xP0DB)~xwd%Tw0Z7v<9b z$Njl;=| ze~bYq^a|Gcs1;;LdHqs$DEo)5F9t>l!JtPAk$(W{=)uI#jW z|8({`!<-h8g*lH_FTc<~+s2?q`_F`JVGfdV%}!5GAAVZz@Ab#GsY9*N(nHyMucac7 zv<8E(MQh%~%=2P5C1Wa&xn#;LTXb#C-*v?|YSm`5KdZ=eeLI1}vRhW=iArhvUBOEi zt8W}Vk@)WU$4m9H`V#D&2O1Ciy*wNo%~tRF&~$~p*@>IWXW33ml6|Qa_8J_sr~ugP0B%@CTdNYwI?S&A-JPo^E>O{1w!C6Z&rkk~^G=9fq4>wPFp>4uP(i|a>0Zy$=hEh zoLi{!_D`>->-jkbOHN$5lYOV9@|(k#B|YDENf~{aa7N28;m?tcb&qF%ZnIE2q4t8? z?o5)S5!2ZKM)g}cPx*d6uwu$|-Ly*fXx#U-{SJGkuq0G=eQ9QiYu7%Q8|;4dPT>4C zjoD3|VhOLhUd{S_T08m5ZT7nhHw(PzlCggiBd{x~BH!is&K^F~Fb4;d&hFlap>Lkd zFF*Fqk;9X}D(ddl-(jyrtkx|wGSS~7m>ngcZDFr4>G{z$l`Hp~*F3xM;-7Z&yufKf zGT!r>v`$XbZoU#)XE3iN%J_ldvyZ#BmS{?;S8)XScs0M>lu^vubfV!=b7JrAl{`;B zx$NL@k>96xjamHn$=n$#&5IOf78Jxj_B&wMZK%udlpB$?F!%Vuxy!bHKYA(E@{zM* zsM+WLS8R7q>EqdH=5p!H+L<@jYVBdYEdM->|GUgD&g(t(UJGj1MeDS?P0r((I%~4% z#;IZ(D>c-0_fPZKY2%)>-|}ncYX#0k7{1_}GjXNL{M$DRz3Nx3d3rBS{Pgs0 zUzy!a58`4Thea#)>N{8`y?Ue*`GC{q+LmFL3z6&G#X`tGr*LUf6ZP2#D^ z%8Zjs90ZokcaoZ;u=>K&$e8C7O&menR&E}(KGjTe`mxQuK2^HzaD%o*jjR4fJ1hNtKGKUJCxe)RZVr97pk?iqL8(k z?`Gpw&*vMauD9;l}>($OC#%Ja46y`qP+IeutqAr`Z@3j#ZzN@V2Yi&9o zud(mz8Z>tjXUaCdSZMn{VeAeoocG+6R4j!oo_VQ}G zw%*k(FtW>a4CdIe?RA!dXUFA;x0fg9C`5;Eapr097n|#M^|pA!tj>ehr7PaHu9Idv zb8v_DhKVZvMjM>>oY*}5c;$(powt6lzgD_)Gk2muWZZryyQw-2SGjhaxaG;T^O@9A z1GcR7tM5uiu9}gsK-{2x%jUxd&a+#=m^HB;w`6 zmx-PmEho)Pe6iWic}3(C2A0rux_jQ`-V62IwoNX7CFj;-S7TYiO+2brOb}a_Qtcqf z#@fGq`LA73`(L+gSfeK2a3jk9G4rZ-UN?@IpD67pX}#dL*37BCz$f{_^uI6dx3YLm zJ%2N*3o zU))vA3wUE2@N&!gn0VjEuhkfz7`fbWG26boZ&%GWwb0(ZTkb~4E|OvCj5>38QseD^ ze#@U6e$XS5{<$pu_iqbX#_WcLw%;$T3-(KzA?eU5^Y?fKt64yRI#+^^W7z96PHDX> zP6~4VcF(eZJaNXRMWu?1dENhSyxV$GB6X2l{?XK~m(h2G_f@`OzTg{EJ6VJEBF{UK z;@yATa+lkS*FR!ed$dn_$IdX>n{zV%FTQM)^5gIR^TPhCm#EF3;a}OX?d7p6-N*Wm zT{XBjN8G7m&h$LeHD2=>y4mFXr@M6$qCh!S9b4eQF+L-fWuj-q}1q}^VB)duZaFVC{<$i z|H{>8Y8R@vYBRU=anGy&G$%rArc-!Aj&E?wwMJ#>lqW3}uEHNbY`s;R$8@ZFQtL)X zud9NZFAk|iO^TR#?&`M3wds=Hmt%ZCvgpNbys~53B+cl3rl+$e|M3^7cs6B{Lfh^w zlN4s1lj3HqvGcikL+yII^8rZ-2F}Yd{O;Bhrp>L{$}#2K9mY0I?Gr6E=M=@A-GBT4 zvi%_CZ7Vq2<9tWzHl<@`%j}O{{Hw8m*CFGZ+aa$o<>^B|mu&yztQRS<=d)16C*za{-8ZUdvx5eCS}nmOm;xZtq<7H}2!q2*aH(ZnZ@6b=zLul-1xcVH=lJqQbmi)`16Z z{x!eP@>yZcrMC+dE^aqE#%_xHMgNy=dSqkH=A<;zPM5~3WrGZqv*a+e@>&2v@Wh`~3Yu zYV^dauP3govAXzD-lAm3_U;+$I_#9yBd?`0_a9iLr!f7C)uoHfvaND2{C%nzT9038 zaXcVi=y>mth9$>?{R?WgXjuoW659Vn_L1@8{gUDg)0+5vSr>lnNY;I+RPb{_(=4-@ z40+@@{W0IQ+>i6@x1D)#u88Ajv`$J^llC(Al!`#F*v!m56_Sy0 zuf-njgNel(l@(?PD6uO`Oe>_0xiC zHWhW8di`+KmakSTCEu(NFW>pcx%>JjO`U}*OWrHH;*$Q=!CZY$TjhaSC? zuHIU&5X=>8^5X2{TRUXjGX;&}HW!eI>zZYq=CF88=RPv*r^gP$Kb$Rh6GrLA~9CeGBnc7JyjH;Y>%Z_<~> zE(U`hpC$7{!{d!Kjzzva{4gf%R<{N(+y6r%qGyEH7*4X*4F5jg>BOqu^zBu~y3U7n z1J>(A)J;CnJa5g7$$y1HIt{#xeBwUD6@I_}^yb+M?~OlSo6Px@;pNdui&&-O?y~5l z{rhueX`-pU^ zJO7SyH0_fQTl1lKbMkNR+RA6Yoj>7!Pr2cLX?$d^jhzU1AiS8Q35`|{_n z<5Vg8k|MBaf6#%%l0eG~>p$(;s`Rh@-kT*|h2mM zU|D@Vt9soj?}$fDsdKX}3w&daJ``Rb_~26Ko`pZTxMEaV&l+84Wj*$#^;{84;KzdS zDOW_VoZlfIV6#qr*7{y(eJI_~kM51KJ0Gdmw9>=!Y(BM^V!;6Gst4bjXXPAPVgTUYnj zGdj)|c=B3#U3QdCS;RA~ll$M?`5N(+X?uV0)a(F;yIi|MbC!vP#GAyw5|kIH5Zid3 z*}~#o!(%4L?vWo{`?8qd+bKPzf8KALVB#cS;(IG3&idsE-9&MT-;28zs%HzFo_Tl0iT`rk zPiwMuOgRo4Eol1iDr;WG#??ogmOTG6XA4i^+NJ|bp3V1m$kYwZ_h;o$?c!nYzc`)g zgv$N!l9h97dLN3rFe!*1Ug&ZDSo>>#?(KiP{5pkv-)IGBoqm_=m8=$A=QJxaQgr{M zEdC9#-T}Xg6YqJj-0^rZll3Rhk*D^oTh44#xc6#9Uzk5<410s#?L{3|=9b^^&l8o~ z9=mw6(tPImQy0`b-o3Z`%dfo$^HX(~I~>i|VlSD!&3n%_N2a_0+1dWxB6|Mc7vwpK z_3in7^}&)?tT7$SBj!J5k&9@$oIme$!@jrIwi-;l)+gV@Izj%S^ZoB{dtQ5ANVU6M zX`TL6RnJv&tNaPxD+hv#m3_YSznC@2`02E7Klswuv>d#i@$;(RrlLRox%;;#9iPc} zoJY^ZeC5k4{Yn*#ftj-fe;t$6MZ54>c-W6=3MnDA>GN2xbA2pb8?#%`wV_TyS|H@ntjLDPhflA4uspOTtufQ)*O4B# zV9V`Fc_rJo@y)&WB`2L>d-gA9?KvK%OJ-cK{l4KdL!a{E-YJ(}yWDPU`S9hmm-r@0 zrb&^!zeDF<5KcLy=K5JoJm}gZk$rj!7Y+pMjotKosnen;&S}w$UvkJF`m1ulOt^4j zUU7iZ%jpTLCEoTid$}Kfz{JSL8aH7QQ< zZ;Ki)_MT^3`{rTN3kEjJcpr%iA`vrqugH5AIIPssaR2hsV~3CXibkEy+xGL`xVZJ% z(BQd{e>GVRvJ0-e-yv?Q0J;+-vukxyNS~o-_^vWKGD3& zkrEyE<3K|GUpK{y8{Q}GP22g@QL=}DC6Os3@kVv%H}_uMtW<;ArNRnvdP2;ux0-{Q z#J71~y4H610mIL)Y!Zc~_cn62$o!w-J$?Q56S)<#a_M{Cs{Z7;fBEhNmD?^!XEaPg zu7^xm$W|NrTb(_M-+lJ#zrqi!Z%DMuTJsaqdZIDc<>L_g=^HcC4`z>SCn+~*EGg{DqlWVLuyjVj$=&Li8q~6T<&dY z^ojlL%=?G4>m5)Ez9Q2oVUL4 z-a+T7io5Slw3xbkHK$9>h6$H``>nNp!62q}M7U(lq3q^6zO@PWSnjYHDipu-S$cae z$1CMCtrIsNZOEQ_{G0Wb<_{_BKfW_o^}T!UZvVD9`;YOwm$={NCnr>E7|FQFbH)<+ zBc*RFJHqx0g}AviM%wFYyw}Z=58EU8cK7jZRY`L`bWW1EwrugUaAv(&CuNDr3HIS? zD~?W`m3`Fx4%20Yv+}Dap1i;})n&`%Y(9OB=b_Dfk9Aip*mx+hFRxlTvD_otgwyN0 zncb#UvYw_2D(myhS{D?j>Fi4C@{s<0T9faFseyPKbM@=w+U^r_pAM<#i6~dcJ@$Y7 zg>l(LPSco_`2i6eIVWCSWY;)dtnavD`6Jh3l9#fr?V~0Zr2Tx_vv%T?w?{kM7N5>m zH`wDmYI$v38y{)2bPS%WHUzS;1|68+Zw?p)%-}66dE2v(p6`OHmX<2j7{Ij8! zhfm0Rs!O|6tX(e*OPs6vf_EnwxcG}CJ=xq26Bga`&HU9C1rwglg z#u)ATd&YgiWxL3Iwlh!EC~&>_U3sPbZ}(hk(|J>;KQ)!419&N4=)0m#xe*WDCFiPk7;}XD3)C>Scemv!0VU zY{}<%?5WlC#la~r?K0(0u#vM7X$DDllk}cLA|G=|jMUKfiNgc+! z?eU@NJ1y)PIN$Ev_AlXB$ozn;`R@&mxUHXD_3OH?ti~CpsAXkW_J}QcHAl+JU#>#c zW=9vl+W*+%tIacWQeRKyOuuRw)yy#4EuQD&Kk*=`yyh*Azb360PjwXX@cmk5SH&u} zUg+bi>ovl)%rZU#O7}neMrkWgfO5v3+o`=<4+ zweb>P7Ps7Ru{oL6+ACgNNO+sRIw6K>W31$c1;S4!wF*4n(ZwQIu#Hvv#aGGsVym5B zzOG%WP}TW!mspKKNL9ej;_HTI_>O!CP``iPNWhnD*Y1(%rkO zb5hW~Et~UJW~@1S()UJW<5e}|h1=?%hP~W0Bi8?${=|7@HPSMZx^8ht$}E}0Yw9?A zYMJ`o7dGB@>(6BuFSnOURT2p^Kexoaom+ojX29e9Kkj;c;*OpE>+Jiqyu#bx1Ru(* z4pGv2@h?WwPO#43`BBp4)8`slc^p=At$h7pk}=Pm{a+V7(Gb(L6r5gsUgqWp(NDYr z>UoO|jw(JmIpJ2eeu;qY`wz1{x+e=(%|G&Q`>XHsyZ`fB>?*G+epY=(bIxr)*R+EtCVjpl zpf`P*(bf|(KU-EG(7$L$&3zednX5ooCC<`%qX{$;Y9y=qYde$C`6d`}qZ> z=Be-XoNAvN@9Ae6t9IID0iVe9`ECFB6L@Xs&)c_OYVY2P#N!vz0}Rq6_Nr>0aA%&u zfA9T`r0X1PyauN^&et3MzA|ZFn&PyN2RAOZpYq#i>#=8i(q4@xFRpr_o#EQB;z#?5 zncq#H^oO6bdJx81l{Y1{d!oUGdx7t=3-|4?s}Q}|rL!VYxNyxe`Fk8pqQNN~KePCE zoYAW`G5(u(!_P{6R^`T?{#h#|m+xTTw{`!vpKrVE?`pS2D9j%>D_cX(}8u)Wfg;##LCdUf4t4(prP zLUU^OzO=h=O38EK#@l{OSLaImOc%Sp?1<~+SZ2QWwzFyfVPHpJ_Dumb}z;Xl0fA-7U*rb1NsO8}Y?F4ssGT@!t45^4?UgW5Vmi zlHD6TA6~B6BEfsCVb7#57GIUWBs)*aDE+5Y8|FKA$2za|yOWwHU*NubSHNDzL-XOL z*>b(wSqt)wm3D3ZyNIv-0#~=9t$mre_`($|#~a@U&*fAp1kD=@9To_qfN^*Vm7!NJIN^p zwXl1Y8tTcKuoOz(mG#m6=CRKpRI65Jg;NG+&7o{&zPkt7TjEqXHgDs2r&$sI`c|&~ zw>Pn?7iOlg{S^?o$bRyh{W|XpCpVM}-r}p(oqp9f`$6B~il@gv%bTPfkbiX3@B&xN zv3?V7wwIpXHP`1{XY}ZqCYYqs>1nx7>62)2cbLP`xQ+#e+kfjXTJ7w4hv#JJG?(WJ zOWh3qJmpJYeV04;gF8dUl~=Rh{XM!|c*9IV=R3=-y=Do1+H~~gJ+d+Xn9BmY#78NBzaLf^>DIdFLK{F+bmes48D@wLZIUPM}cR!4lVtlT&6 zo6lRlb_etwd#-%u!`#0MUY5R(V9|7DSt`XB%sTaK!D6m?PvYJ%_po5m;DXWXA{-Em^ZueqVqS>M~$HqV&2ai2?lRr=X1<7LH` zR=J&*#QyDS{n?iH|M_G^j+QXp$?*nj+RHY{y}7<)gKOv8OYXecK4t;AiyTd7Xn%2^ z?0dd7p23Z;Bkzh0|DQQaw{5@qL?Wx*`iDFua+_ws`#^TaLZ_j|VHk~9CKxlh71woSd1zqLH%md8bftKXjCJ9kn>Q zS8naScm5)4b@w*Rw+%0}kQY3r7CSR;_GLY#S^Mv-Skcv@zv=Vml#)j++#^%& zWIk?~{XwL8*|p@V)`=zFn>6-yd=Z&G&691v^Hu(o7p$g9xk6|11g49a*KfP7wzFxI z(C3Hi_Ipbglqx<|ohNvo@24@dnEcuD0`l25t!Cf&ZQc_NH$a?{k93Bn!ot~`tiO8qqb^Q*gJykV8Q|I*z(_@u8k`=it!u_hBoJe%&xo5st zYThn~_tQFCUouSP%9yn6OTvWzO@&`}^XMBGv7IzpS9q~pCoZsN`AV7RyBLg4OwjrG z_675V^|eLUi?1pOlqwYc+VW01;q0aFr#Ti|+~j;G@AETbe?-^Q7``LVbSJi)(D`U? z@lY?+m63l2%R7myk9T?RtTKGiU~ATIrk(1$H}(#PZ*oCLK<)ikQd?rIPV{OO#^~Sp zbouB5<@1lVSU(2nKQ5k2mFKax zlHJqd3Je)Kckfx^VJi`noHpt7EtNCAC%hJz9jmc$F5b&)Rc8Nm4%?zFpM2LQ&fIr> zzf!r$0ghL5&E@;DdM2~-MMZAvcE4Km+1PE1XV%tl8aLgm3Tz8^zdYmdI^xz$gIz0| zUrc1)Qf0j0_*&_c&*pVpy2Mb*BzN_9p)TJi^1T$5_G$%~^cUSu0o~LdHW-GX}>(&Te{Lm_t-tS=Cak|;R!I4E;Y2sz| zsn#}q*@CU_lqR(wEK;BE@s;L^Qg7oM3%^avT70B`Zob=!3x&%4 zza|}Jgp^I6^aBwI@-T(;bG!*piMlzR?wdmoox zxV3jprstN@kh+)ursS3>tjK8>mN)k;=IXX_*~YuPg(K5{7f%hNlXHcpY=5B< z{p{wwwKEDc6&G}$nV@bQcDDGo*dorQN4&R85S4$OF7dZRP-gzwL#JZpjyA1zwLQ&L z(Ed@W>p5rG>j1mQr?yrtndnbvI03-W9v0;Cz%H=|J#oKu!cP4S@kxwkGE&MtYpi>8>Zxzi z5om z0yAYU7#uoTyXv@r$WN zpAQ!r&+b;6oFkm}+`#16;^RxMerVp_&1qoNm0LVVY3}DmL3|cGFTdF>cxEBbd?Yd< zW`3$I>(w{){^DXuRu#8q+*GZ6JmLTJfBo7PcXzdTJfHZTsmd?&{A~uc+iLtd^ZMUE zYmPh7;lbY_`OTTH_GI1pk6ks&2WI)r_|5I_UfuLhw|tlA?A6=S)l{$9K4|4V^8bg- z{dNYiCbp@;jJDFU>=&-)y9Uqyvp&B|?_Zn$bOSwun{jXTs)RLH8a(#qC|s-6+a|`x z@L>A0Pt#q!1NTJ*oGaE}zD+*K_PX@e%kDFHbXBE)M)EfB1hEFhJu(t$w_mX_hV5T+ z{cD^1CA;g=ofxc*3R@EOnbzvb-&6HTE@a+N+O_+8j;8(xk-YuSJYMci_+R!IN{7}i62SaFEsz}I@{R1I!d+P)^6+T|8}a3a<8|STP|68 zeZqde)92C_{pBug)|;4GUVCuu%yUkmNB=I+yJ=KEmEr697%rW;%vvvZ`n7v8J#q^b z;N{NOW4I*XKPRQP^Z0iIiJ9LDPU^0eT6VqZw`0-4d0)hhb_X!tnALaw?BR`@y&V?3 zIMJZFZ@cQZm-`b>^2}lD+9#|OQMzG9Zg3kTgVu+Jt>rUSuNkObW(nG)Q`NlR`wvUr zTb>YUxk{olzvoPx`?J1-f77k=v!`~c)z!SWGqV4GxVp{5=)?Kf zId`|-I-!-peqfK`@$XrZ-d*!=Pl{&ylA4xr~yD-`})Ku zTC5ZKIqk~2{_FpuPAWex-q)(D`O^Z5{tZkqVMSTYAL50xkam?Xi@8A5iYFSY*m2u0Bb0udDGrcaDusY6omfZX6!A7Gu8@#-gdjGw9^)+>{;TK4MWNk$J!_Vp*j?E4OK5}h^3FK+mvJZL zeIi}|@tze``>;ZOZYY1z>u_fM-AkAsf6^$5i#)y{U^(9^50^$e-XNnR5%O<^Lfq4< zUI%USw%2l2b%^6TllNoA;}RpESpI38Um|4e*-p=jD|CIa?Qi+~E7lyd`}qBO56qq0 z>v8bz+kX%Fmd>~{dq!kc>JsNgpR8EQLo^ah7FhE9+?N+%BlC9AZ>+B`9%{lT|~yQVCj zY52s|b$xx}`^44JFWxP^xOd`;OP9K0Yy$U{h|bRqdX#Efb<1_#yo+*|yz6c9-db|G zF)cZ5cfjH024-t#)#rPo?&{teJIe(&N85 zKfmQXES%NI<-NW9F7wQDFQ*7_TCu<8m|)N9RjBZL=e{uS{quPzS~jfbm=JKf=2+O< z^*g$kW_pBG>EGMS^h>+_#u&fTUWZ@>e&4YH(&pV__aamjXXo^htyxMPDFiU zm6Nh_ce#|<_PuXr z^GjQ|f8j}b^LE~|n`b+_ORws_%7B{5>Gx$kDqrQMFlcPAN7nY>*h!QMpcb|dd;iv;VZ zhZa0KsTJ|7L2lXA&U@dbynZE3wR@xdZcS5sz_U|JB&>Tr9y5!Zy+ol+a>0Ub1My3l z3rZM*Lf_O|{rIQV^7^PR&%64X<(nX;Sa^Gfsy6n}inYUbF(SeK3U*al+E){#dKcM~ZzwV1$v71`< z#&0=(;*#v4=Ie^b+8HaROV27xdAihVvPANc>&tgrPmaiW_D7-7^WXa$rfF}cB`rKJ z@LO#w&r9Z;!S>9*7e83;wbR5yP`372-=*z0-9kE!lxy-Yyt6sSw&7&xsl*5G+B3{$ zHvd~b{r(o$4JSnYB%Hp*rEW5l`)60e+{|AbVQLyXq|DPI?jQbOlxh0^jdN(VBE#N* z(7P#n_s<9m-V*ff+|%tk@~JU@51d&fAb0NQj1|-FXNd$Jt6vf~jd6#Bpx%NPd!lEx zE5B3Hxxv4sI#J=`p+0+Y<)XiFJbULk{O&w9>9;o1YMxEcTOP=Y8Huq7zOB{KiSE-6 z`4;@&-@27fMzZ%Z~@_>lcu`0~08uZqq~J2%Xj z@%Y-Z)>~ftVlsEGOX8lCy=3X}`qrX1f=8U!CtD`4K6v|L$!K*wdL<9?wQeg@A)o?t`ngVyDZ{%FNqIV zwyiJmzt-^hqyJOmsIwLmi@#`UJKRzKet7$mz2Be2#)~>AkzRZ8i^7GU^ z&$yShtuphRbK~1BrIX3Vx$jppTv6BWtmR(ry{GYo2-W1ast^0n0&HsabEX!;Q;&c-B7`giKSh}#h(8=wryE{c^s;1Cg z;bZ>FPy1%}ZM%B$NK?hjqGJbygfbeN=9he1d{+L2Yt+@KeTBHqql}uGTx}W*4JiYi+bNvkUm~%WUI`;)L3l+ukxBG;i$-^|^WNXe86j zeE(I`nPx0C^Vw5hdd1;eL11CUt9_ntZ5F0VOT51McKUW_xyf^y6j#pK+Fu!=wg2Ku z`4qWr0SbYOvl}8MQWh~#T$F++!dtQ84w)d;oge|Kb<~{%Ot6+sN z-?T$JE_+Tn;=abC&|*u0QM`Eht}9D>c1>hI_$X$<#-~0hh1}9jorcq=n@_V!k(hEO zuh{mCd5-rz)d?5w9H`PWaxGk_^JcokC#H)YC#P2D$T#gfGHve74~qZ2_lf39JUeHx zto!AZ{fkmwxg1uxz9^#o|LsZdlcY{>y$~<(tWtVksRDb3U3llT-`5-8#?M;j_m;Uu zG`x919p8~PEHm~$)Zs~K(70fH-zeeHJf|wHPhOFqeFIK8tlu!_&0~e)01n)GtN8IlP^GiCExZ{5NT5r00w)B9}H$l$umP^O$-p;tDVA#kJ=a(;W zsWd_5&7(C8%dC~IWLwG{-1WECjrU}r2aj~4=W37qmmR8?8h1-we2_8c;S689`O(IQ zk`DfsoV%I*z~>Hw6LZCjY}NJmJzMryN~@FSfb-LdJ12aq$~G}u;N3q#wmL50UA~wD z{yyEIr7sca!5JZRke%(yR;BBYw~Ktdzu5j$JN&V#O z-Kipbth{r#dM8*r$_c2{DS1Eky~jR*EAZvD;APXVWi~!q5q!I7UF+3z)!i)@U-~am7M6v6emgGVd;ATs?TjM}o7@mPdHmtSFAdlds%&`}UV@3Sa1x zlG4A=4+;NU|L^P%zo5v){oP8h)jN#W9h#MXs`yDl-`Cxf{4a`3UVBbOef_llryG~N zGB{N&vC#5cYthX6hyCg;7IQ8>SiNilW6{C#sTa=p$)|!#ovzEi9RnkJ>rzxH=j3s#UJ(m&%_^H zT(dCn*uD*GE?N~w8bzz|7T3&a*Y>(E?489ik7KnD@A<-1f-vjz})#*lF@s zQoQ$P*Qv0w7&~dNP>#Qe@1~sIX32LUN-#i9@z+zcgw)4MzV2nu%IdaO?`Gi<|Mpxm zvi$+m6ka{9Nv)2554{Q$`WYkhh9P0eHz$oV+V`1q*%WnkbYI@=?PET6VMgG?9Y(SJ zjQm~!i#ZDCv2d(gwpv5ZK+ti8-2HV^?|WMR-}vwC=A4J-aeChc)*DUVo_@Dh~*TM-R(mEQ-VeRh^Hl_P>9J644v@zt?#lRo! zkq)8i(^DcAiE~T#nq1JxdSF=jA!bvv^rlA=GkkyXGi%)Q+je7DNar*gvFpVRKfAW^ zT5{a{bZYYAy7e9!j-UUR-dNWlIm^Dq+4A-hf8NB@%Nu@h@GB~@7_BZ|ue90yj@`r6LXD1Hs%3GMk>Gt?|kJ_u>xArZIzA^V=0@EqsY0ZVs zGbe@2oVWkR+W1=^1ryy>)+SfhZmU}yq&P7xkfV0e8`CfUtxg$CEn?5-ahYI0^Yw$u zjUTqE&ykkct5mdSt{Jyn3e(!Gio3BPdpz4_G4fqHaPGR_rXzDgmKKM1oiE(%UuesC zsKZ6&;oBqEdLMgL2roF_67lM>&W|a<8@^P;RcZe9&CQzY_Wpgh^s1brg~IV~_f1~F zx3Rgeo-?z&N_R(SC-Z@Q*4l|G_x>&UQtg!eo8^m5XGm%Oc@eEeb0=3m&8ainV7AFg zW3gcB{VjV~9{y)s+PrFh%5q7otGO#UuHAiig_A#djUE?6XU9C<(hn9kL6d#<=da1w z^7A7zPlM;3wYw$;suoJGG#1;sS#hlQ@q^u zn2-J@!mG~Cxc_Lv#O2egBdc2e_8EdtycCT+({Qhsi zv9b)KvY$J26J#cc9to;Q3$U@fBHQ~~Q+bQ2-{u6bXRqxT=V&vm%)7Qlf=O)qlZKp| zo_`Ep$+PE+spuY2usdSzsTPwauweRtOQ4YQQsjPD%I(|BTp7XPA zhqhkEA;T9b9R^PhpZap4LZSEQzFM6{O%Zw}JWK66?mhc``R>EyB|%e`cm7=DJ?)gA z)N|L&r@f{XjYaIXbGQqp&AWFxR(fBJUfx!PG^c2vzsrK`xa)<=-93!|UwqnOciVfD z(!bjg4QUC-53SH;u3|Xt@Z%+4Qs$GRc8AZme6Bnyl(FUe_T7uuFzKsac;v`^HuTZU z=+!$NPuk1;?y}=G&N^mqy!UwM+gmNJrOeFxB&JU3pK8&p@ZuHE!l*rsAHp2Yb6j#! zT6JHMwRM%W{H}twi#gkyDzv#HN{-d{-E9#1{zcF`fKzYfGMk{9udm+!eWUe7qC+;S zeVzBg^$o6~My!{exwaZ7bvI`gonrqzYnteV_wnrvs||LaUG_=0UBG~6L4I#_U{rZT5c0)F;t&TX&^OY2|#MX9Yr+q$a86-4j(+Qfl%!zx|K7MZBnt z`km~qAl|%LyHBL(-Cm#=7$;jJsbu#inxT31vFPtIhr8`J{_~Mcc^r2<`TyQMOO|io zJm9=iySlh5SXq0?&-B?zZ50=+D|WrM%Un>UI6d0tTbWyUvWdrYgVt?-CJJt1k8@DX zb3IUfF2nP{j=)uKD$1{l_;lSdPIGE;I~Mb1LB#Y!Ow)`Tgq~VQ`nfUfyKy~(Q+A`4 zwP;m(@G6JT{I~c_!o{Y_RtjEP=w7pMpMp?si~~2v7WW@Nna^H%t2#~1X?p z6?1&%v@9xI9gv@KKbA>bcbelRo{za_AH7j`YdOIEX<0W9*Zi&}o*5G7>T5%fm2U{W zwDHuY>$8%#o)4VgzLI0Q(2fbl0uxVPXia(lSNI!Kb+Igv#4p|J7YeYb;lJ-#;L<;jX`J!;*6)QyY$i%;RgH;qZ5F#Lj}E z0`+4;K4EX~UbcB)+_C;b+f#*gho|i*dpqYu&gy+)*CHd}K<==M+{)tVyQMO88;a7L& zl%{L8Pu9-+yZUCH3sZ;Wmzt|g85MU~wL;pO*1Goo)ec^u8THfWt9KFa#GW-(GLB6@ z=dwil)rzmz-r=ht)ARaaxTeB_olkq4p0diH7k$U<9dX6+zZg@^wB2QXEIp5}r>@(l z@POGcH?ueDs=W8tpoW!NXUilF*0!AzkN=@%-Em;y-l7f5ZOfidTJYXGnj^|3ZieTf zJM8Std-b1|U%PskH`}P;wSwj0v%;6e{j3rsdRQ3$>@F3IEO9AW%^Rihf2EZBj-`$~ z&X$}OqCK1L{x+C!(0M}Ll{pu$cDqj5xO##@aa_TQ`X<3&qJADS6Ek>jwESb;exaN3q*5NZ5k#m zX?}C4@Sp!Q%L$88WcZ|C#k_U&jh zg{3RCuPgjM#GWDl=+@h2*2t4AFETQ$tosE_wEo729E(+2wph5QSZ8CZs{X#Py$x5H zZoJD`IpwP1#;^K}^T& z>9C@b=~L2npN;<3rH_a;@sSX^+J04t_ zn|SZX^1mexioXn!mn6sA{jnGpTa{h+4flRI@a*hl^~R}9Ygnh< zV?5oXSCGp5&{uKavF;5_Og$!3RBmmb%NFM|J-IEz*QGr?W5c%0wL3jjU4=Q_lP$SzQnm3p7EdqtJuoE!`3WiNzk9GL}f?qE51(*A8}r~l=Uc{c?Q^j(#C+IH1N zM5Hv%C-m1Hmtd}gEpalLecSz>P1ZZyp;x-ka_1F{?+a# zm7BFXdV#WWQ?ZC#+N&*--&|D{k71j7&QHoB{>J=iDo?G9-X^;B=z1IPeKwoiN?x86*r2m`ogn{{GxE{9pOt)JKG2l&Kw`DIEk98mUFgY^mdAM)B^or6PycyYCA1-ELR?m=nMMueZGN z=EQ`Ttl#uEF#I|YbihwY?29JXvEqnOMTTj8oaP?_#C~gb`}Qj`tFSOVPU8KhY1n$| zlJ}g~u6!>A8ate)?5NRi6M1m;zt~eg30{-c*Y8eD_?f6YIc0Hd*2gyziVc%IYc5Rw zzwa7T^S17FMt5U&Utco)&(*diif3z??qx>%UTAP(7xVa^@$<@Fcea8i%nzt?2tY}CFYy;gVkN-Lvc4VInK>Oubm+Ai9+%UnWfU3H!(MC{MNK~+44IU9{;E5vnSYmpIxccxJx*raDD>=G@6`A`hIE_usVppHRR)rMX2wzISJ&mZ0hq36tY} z=MJ+hK6|4y>9e@s{iKqH_sP|!TLYuEEZ+NN+0IXI{x8@fzo0Ywu7kpw$*N6RC!ZLm zG#Gs6|6`Rpp~29wsYq9E&P&hZfj>?s&t=GSs1W`3mm_}t!EdsAn)dHlE0kJgDb`^o zxSeZ`JkRlG-{v|_l5UlB`)RsgWa|1U+x;ds{g7#Eyt{tmg)KIxzWro2ns`GlROE~F zw72>mE3Ov(SGcIxsq^I1!u9J;rg%85cKqMI>QU0aZ-$wBma**nz#2Ex_)cVo2AhKR zWCopSuJS3xB{@beKMHRwnfvA!2TSylF4Mi!cP9%Otx4~^vB-6+%jKU_rbtJ28Q9%& z+r(baep_$p)ay&m@;(2Ws`T@kiCd<}((0FOtL*kMK8fh|2`@}?$Xu^ze)CeM?Q!Gy zf{SHclYMr}-@6$R$I84bY2nrGu=G`Yl}ELu)F(DJBvpUZK6d`6R}4%q^wwiv^U~@3L<>ALsBiOn=Rc1&5k8 z9V==G3p;4I!o)>2>D8{>uob*IDURE-c3ZDIy5dg$ao)5L<>Dzblj3*-)}%iSx@^?; zf6pa_)0Tl93+(&k{v1rrdiyPOdMMR$qWnbD$KTJs`*LP_;|1FfVf?i_rb{H~ za><=NdF=MR*L>!Oo@(({`Zm6bs}( zH=fqw9EPU*DhrWL%~k!AeKKFKz0_=CI>|Mp zDxJ@Q>DThO2?x4$=d3+BCqG@LROgJAecKD`ph>NZC-a`#TY0NBP5q9Zih6bZ{Esv8 z#p)hdSaF@3aPy8b7eDV-_kdWYnC~eY1ns3x|2i=9%u}h?rz5xQvHlSD?yTY($92*{ z9I|`?f<+S+Tj(wbcvJX6L;TrF<{W+Fd-K*EvS9N#IOo24*IYZjSuelnh_BzRwCwPN zY37EGul}kh-1{RSedrWU8a$=0 zN~Q}=dGq^Nc*8Si7QnCoGEy28*nGx=48Tm z)#(vglWsLGVZB=)8ongMB3daqw7O>Fr{K;HYwKMNlw25A=giitJJE6Y6_1M5Lv7=q z8rqwuOx7`<_Gy#dc|PZrIj85(mAYf`(km$aOll9qk@?<-E+zkA#D#T@4V=BXm*7cv+u z(Vkjk@@r1TYd`MqeP=!ScP{FjxU+pr#C4N3#vlG#MYPyN?RxX?+ku^L?RELPYdd*8 z)>tywF1@6uJ;C5L;{iX;dvR9B8(!As2}V6>e&-`G>3pF^@N1!c(-pbu@?S4jv|ReG zp8fszSF-1B{6ENiQH<%|`TcWclcF{*deyYed0|X$;O@6=tF&J&5I%D5@ZE3r3nXSf zGTRz^{cxxX6XU}d_dNObtp0SJ?ZuV3b{q8O#C%TJI)9x#r>x9_^u6l*DrHg+mK|}? z+T=QYgGjzn>czKWajU1+{4SUpxbRo|C#BDudmp>7EWCUxEOt_ZqA8PERqd7US&xJ2 z8lsw#=Qk+pur_#3mbqwUC%9PPy3j-3Ns|h;=Z5WDe=YwgpHq_L_9RVVHFlp{-H+5} z{aDxjlCOS3utA>V9fhyovz~79zHnY$_<<~=+wV2gE*;iZafmqhwy=ARRH*NTRS$j6 z-&Fm($(yOfPA62o^_#l-+Z!q&Q=S}9-tr{Ow5d9=RF>7T_WjAI{MBEz-kTrFkIJ%o zt1pz&ad%?awnx2t7ADH8?X9S~zPYw<+oRV1J$Z(oGMpF8@V}j!bhvLev#`>qRR6{U zuDv{^LabXq?aI&E5yL3NdFh`=#`GQcJttijG?U%)_^LHOhs2^j#wRxNyB>+j-6}Ow zV?WvOgy&XPac8Qd=_C)9c@F$H%xu!SS0ok-xPGWO=zYxAFX=ev^v;ll$JVm`5mqtH6@+tq$ZQ;59c6Q9*uu+`q;m=WgLuk*cM`=entsIaEq@(cf2JC!ycSGo5WaoD=$^VloS%6B_f=oc-hVHJ zes$=iNGe^rAJtox&=|C6;m!|9nH!^arN*=fh{{xTn2H@xm;HCp;a>9g%n$v#VP_V# z*;bu;e`0E$IUkcz%^!Z@+Qc=ge_N8z1oZCmbLg^oBoaNf=F{IC)wnS49fAsHZb&3v zYmIVrtrgH$QrdL)zRI*^!t&31K3)2K^Odev_8CE!Z8?QIJ-pIq-)D%vEznhNSn%PX=$)Yd8!ujJ>9>l@63a!2}-A`%UV9m z_Juo7{q_51)Q+by87KSuBa%*d>#%yr%@Uc#(KqvtuTe$15&N_ECY`D8Dq6Lif1P5L zSgU24e)PeX=5WnjR@%3kd8W?PIgn#D_5Z@6J6m}*Rvah};96sRponvaX7GeJyEIx2 z^)7`y(%D^m@Osg8w^U&(k1dLxURG0;7cuvxU3b}j+SDs|vH8T)6DO};|McI%uU&eq zhc5q!JiF`J;T_p0H^~)VpCa>D(fLBlTK36zKGyB}#{aKf<=KkITs*rj*|^N+JRLI0 zR7^fANv7MDX;($&zUjMf>#DKvcsxB|crCPQ@$-hAHbvP>dqnpO8Tp6F32glN^`8Fc z_$)V@UWdxVYEe%Owy8gyc>7%8?Y+xYzNegEiLm{fzO!DSnK4URVd;V;`?6{`&XH_y z5RQ`EwM?EL&hJP3%JWg9>*5(c}q<<@(*oqIiaDJU%orSJ7;N9 z@2sx*Qp-(luHN$Ib-4Jnc`KqOYWQv0w8SgWgx|y9pfZQw*6gzRNs(<2T`QMrh&YxX z*%{Gtgzv;v+g*yCcZR1&%y~TE#k7*zC4~N zx%{k|>Cx(`;f|~S&e`Fv^H}@VQ;q{y_ue_MYg6`;helI81Bx>k6L-$9(-&tx{rAw_ zv^C`m{hP&ZUA=Q;HqXDv#6$CC53wb%Fv)4{`WtI~tn%`?QwzLIO4>7@n;iOOv5R>Z ztKY75yBxT0*vZ`T&}}VWDpj{`*|~t=P~(Jd*Z8x10)f1>SqVYerYh4G?wYXtxZOSZ zyni*5g*I=>UHOUY)}nUd-OO*M9c1VDxU#ml``%rH*)M+DhgQ7V?(6w}emJvOR;FP8 z{w3zjrsqGN`1muY;rcAeZ%O(RacAb#BtN?`&5fJ$iM-!hKb0eHV)@4p*&MCCRQSdt z_FL*sS&@ter}D)P8a^9B-ugb9XO=7Yn6Kc$+Lo)#sZA;U{=e*$b*Fzirh2zjf9Fk? z1$`kF>z=o*$@^)sZ|z5m`@Br2LlhY9{ppMStJl;h9g_U}dBC^bAqI_3Y2gQrb_kpD zvS~Z-k_uk^-1fq;r-uzUALs3g5i@F0b~KQ#EBTZBUT*qEm5qOA$bG(B*thyY`Tuz) zkFFj)(UMlm!#zJXKzG%d)yhBbbxoGgWs~IjaP`y81clfgmrkCZ(jz~wYDVE1{nIZ9fU|Gi(@pNGeB108%m2@uAL5za@N@FC6`vOfFZxlo@Z#K?w{A)l zEZ))Fm)-x0qMGBv4Y!LzQlp+<5qh!S`$*ols!I`{^3R$6;r(#w zTiSxhCC7z4QpJuKUHJV^GCqoL_Cuouf^MI}pYM#=^=MCk+kvTFG3QGSrYH-vn2OD> z+kY_J;f~n)CsjMbqdI18pWbmv|H{gq1N8+>O#f1Bv~M((u3B~FN#JM42{W>uMr0q+ z=8uXy!Tk64o_B7Sto>%G>~EMOn!Zdls5BwI(dc2#x`N1VIgT0K8ussE=IoU?^mvV6 z##f85zMsyTMsA9%wl^)yc|xYOPmC$heKh56Btxak%BdSxe%zi>U8wNp;0%MKpZFsG z2Lv>-98FGa;*$3}#lF}zRIOelenLXItT5ISg35|e2R4n+lpDy3(aMi zj2eZWOn-bQ^Jymolh%@bHxAjxhDbALn!H>d&ANa6+opTsTuvS}=l0Cwl~tRRV*O_0 zvJXK)FRuG8deX-bB-4^C*z(3@+uA$kb-lOLpLm4iUYh1#*j#vfLd7}%AP<{k(Kqjy zyesTc-h9H(Z`WZx_NC8HahT81`tnph7*Q=eNW4J5(O~2Vap6k`gyn=4KS2q?K zekzbzv)6UUzmm5({X6tl+fEjJUbf#Srjk#p|JIpxLiiiuth9~XZ7e!8E%%02a3V(Za@O*YMTm%_Hz9?sEIIiz#pow0Y{ zo~R!zlfLk8DmkKPkv!}9k!g3QPTMV=TfJ^Q`=8$(jVqM7XY(pOGQZe=^3GP{=A67u z(nq~2yI*nl%+x6J;SeCzUX_?mdqtS)wXz|;XoK0p^o-a>L6Iyyq@Pyw?2fp-QtY6Q}R#{eL zy*BBgsMf__g@>#Q8a`#5d9MFCPxN(=eAc;gjS0_n&ai*j?_nc*E$)9pM8Mk(i45^W#*Z+mm!z`B(?ePt4p%LA9tPOFWo7sdVc z1Cn<+zTy-PHMn=_@2Z+kQEF|Lj1Iu(4b2w7EVHbsjfM#{o6fN)h4_+-_?AgF)8L?!s}qcf9wB;Mynh! z&GK=2X2o%a@vYvXMM@W~w|BdqF6o_i=(Ul?w4irQL6;_c)Rlj*N186Yf>(@-<WAK)z4s=$q^>&Ra7ymny6<~3x4kG`kbn9@@#V;CXN#SKyE3|rLk_tw(hU)E?mVOr zcftMp+~ly(nY)?J%=meB{`=`0jNWY3;C#W8;Zzz?drVqm0sFti3fnhAEA)*nCm4N| zXYkm;;BaBmmb2&LE0v4)wru=- z)@)|h4ZRIo;!~bHT+Qs;DkP;*_J_qr??XVFQO4dXqZjKhCnkgz)CBC_aHaaK=a$^c zy&an8SeLg1bjodLJ>PWWyoLDg`^6^3mG?VtT$>tp>9EF*Jtli%Uw^u@s$O@tyQJ5L zv(xx*yGFmsYhv1eXc5PZ8h@`$ak0$X42Rn?_K6*yb97T{OZ)wt_3FF7i5hqxJ0|x? z;mMS>Kh|!Gb3c{4!-Va!PD$8-4yPBE;=30a9{8B}pI57O+j8z%4P^^YOBMP>tvz&0 zbvnyro&!HON@&en{D*JC9knIRJHOr7et!3c^?}#pzFS)8oNoKq)^O?RmAOxT?NEI_ zOG)ITqT@2X4NTt-@f+~Q?%a1pc}E2+2#mIUmNnl~P?8lXP0Gc$LK5My|%|T`zSqcg2OB zqBoXrm;CXxk$EY zere^|tl*S$zPc$+|1$z+i$Yvtyy{}8HQ zC)@vv<-JGUM?<}{i#Y6LZdpcF{7EpE7JlIo?<2NuXI*%RhC(R)!3NG{bBE$SjowMt_yr?Ir_EI z#9%|isQ`}TC*SvKD;|s~T=eboq7^0IWDiHfOk0g*OtaV5n0fXU z_F^AG;NDj6EKPhu$dyLicE4hL_O{UM=+mQiQ(b{u@@tRwQL_SZSz zC)0{6%|7^L@E-L0@bS!lhQLJ}tYtI5?6cQx{TALObb;yh_cNV|KV4X)jY zaTU6E>t?F3wuU1ym+cy_Pf=|>%V~7K^D&s-S;wzK9wfQ9R0xY zVNtQYM7e^SoJHHi*vc!}@8`_5NSTzIzIw+u;WPXvcP5xliTNvDaK~Z%@pP;Hb8xM&&no{`T{* zdond2jZjJb{!m=T!eK+I_1iyjH?Gszi%TwtIrD`L^#fmYB58bj)1MRR3b} z2KzRN_3vvd%^N4HimsGSzoNOq^|8y1)4b=`K4W!kv}k!{boTW3qNl4)ne2M;+2oMn zp;AlsI=vm0Q}~*novO zn%;*0Q8;+tzkK}<)oS(4Cu}CC^LVt{viU}Koq7GTX{o@(C!HHE-Lu~OZTEkTM+Im0 zY*?3>y`$5FZ9+zYr>W&i79HDnnG;S4uvF@o%O3w|%-MM0+2Ki^OE|wsEOZa~n;mg{ z4x`6JTctBI{~X)CIPUxIxxK&4s(4fqqW`hAXzLnQgj5LVySA`QYWS(^RJJ^NbIQW{ z=I_RfUbV1Wsm_U?en#!1(w>Psbd*_tNv6!XYGlWmzJDjv#=k6$$~S@vb8TT1lT*~p!WeO*3*Nl!v&+0M@w+=YyrHhmP=>3_+b zT3Rb}QY>DlDSKiRx5bxI?u5;)t)gFce_0#;QD>T7x1;SegBr#ym#!xX{+Z*^{zh>> z^Mc0J>0>FssF z>srL5-aL)7{A5>*kq#2TuOui`iPc}4iTg>G9Y0f>xl$d#I46ZGkpL+gbRi5*w2P+?_ zADDA7Uik)#TFaq@>*emmt%(y;wx8|5!k!rve`KGIvD2EmhQMtPY)v;D2;h9XjPvDQ z$6Id$m{mn4?YQ<_;;JVPDAl@pR=dC`CBHwb2>K5GjhgJ_L&Q= zD+DSYzJBcWs(nt!b+)VBXK!Wp$!X{i%f7{#H0tMyYmHwHC zh;$#Q(K}#L(Kx~D<-+a$ubKW|am+rY#5t+HoiRrL;X1Q<$D6}9p0>=@n#Gz>rGG+w z+R=QZ7_c}J`+BRc9nH5K_n@(@J)_6T zR_o-O?b6ZFuXL@{cFj%96c3aWs}OMb9#~R6-Q;7KLt;V{lQVbG%G^6Gslvyc1PkN# zUp>}*Xwt;QbD!;>M(w*W@uGMe17r9q-|vEKE*1WyPTY)6a6h~ww5W| z->#foBgrKY?+}uu^;`JCJBb+U1d%1euNZn%&zWahoB!7ow?4PzajvU|%fqsIk3B&CB=loZma|>{0ysqCfIc(i>gUs}K_J^HJ&wQVDX1lKEv&EZQRw%Pq-ulC1uQwZH!#jC-&3ClU z`6=&mrmc))j*E4Es&nKD=eN(p3f1G?7r6I1{M1bEm>BWcY3a$=EiyM!Ltn_Qh+Z9j zQatRG`=pu|l}gJBBeOj&Nv5CR5V{|j^+Jky^`*^cU(G&}WTN-!n}0{y`paf{@x7hV zye3R158U0k_0kIOLlvzTn%RYPSTfe!j($W7jBg^PH^;&-+irBP%ZgqQ~Q$7hBJ4U{+J)3&~|=yPQCGW;k0=@n;zZ#Jtg61 z?x$}pHriYZZ#@x=krItQVxfB5($1-L8rxQdEvjnAZiLGGbvzLNU`oB?gq+veDP2<{ zrT6(WT;rS7;xq5^@j2~hy}Ed~Ib~i=)LAT47`nsJ=IzN3DZP*1nSPTDopI~!&FSwK z-7T>CUR0AbOZ0riP|8a&>eUHz(O^pqmt`lr^4jt4lf08-j#s7O6 zKjZgUKHM=epSN`Owata?H>Wl5$aseRJ?AMYXuVCWSKr*=nx@9bzS%Eb{pvOkBmGy0eU9r(+}zEpxNI}ePaVdh$kVoq{;=u_ zc&+^rm-nxEro)x$BMa&Zvu;j1(RSd*>Y~|k(yX4%o&Q7(_D+dEeRn3u8P&oEm&{fc zN;{cr&DGI-{oq`vY`tvGh0HrULSM$cljnF7D0*9EDYu^Gg3|}HToqz#zt3RzzSzOU zxbMri{nK_YiZtL$b8~X!PrA5YHY=!L*9zge7hSg`r}^*f>pot+Q#)<`x^pbEo2K0U zvSjA7*!JY3G5V$R3l2yx4mi+~SLsu$TYgl~dH-}Fhl>?=LpSTJnz%G!p{4Vu5{}cA zyJE#mCN8Mc|IVMq@S*F%_5F&o?83yrzyAQG!{P{lP{=vQdTUnA0p4oS2LqKx>3OVQa#nII> zjn29JVf%RT(*4u1@yk?$Lpn>CrB7V@Y9zU8Nz4-7ZQBwyXYKUbEZrsJd8T@2eFOVL z)RUoI)5M0-t_LAu zwafaCy9&p1B*(N_964*OsrAurzLSRZ4Uum=$=cm5YIBosK3TRlGQZqPU}ewoLzm`s z&5qW#p7JSLQ(_Zuu(#WkzPtK|{u?&F*p)V~X?fGM5IwD5|1_NpX0-kl`+Im=IJ z_Q}Iu=X?H@PWDZTd8aayZR%5zq!VX%Zn|mKknEbKSoYzZp0xbdzahqspL^oD_6k&q z`mNqp!=hUwkd{$Xw=AhouSJ2 zULona&i&41Q&#NH^t)c&r@^Txu0Bcfvr*vTQ}!0y^)FLjZd%;**>~Ayr=@d0 zEIGbOcLy6|*jlzT?`FDPaL7@=d)v$*Dg57|=?`oZKXL>g-=k!(&qcIAt#|RU)Capa zt@z*ju;z!=L;n=Da=rbfn}u$1yon9{KzEow=yO-{m58{LQ7)I3&re>Hf( zw6I+I-kUAg^czw`y9XLyN~DbB$w=s4-<7>?aBV4K6{Q{ zVa}%oKGAc<=M*;HKYKB~-(~GrZKdd}b4x@5H*UL^9A>R7q-iksbuH^jo0Q0QRn|wE z?`Qh$eIux`Y$N*=NiV)A`YvOW#X-{0uIBn`b=Q#bzjm#T5 zPPWefC+}Y_FXaBrQZ(MhMSr&O4h5e_4k9b3J$m)(sY71wY?nJvga1nS-8G$ap3j}OoNVV`m6CYN>Fc4#Z!c{O{%k(|>s^Uy5kIy&I~{&%lEwW{PeASaVaA-agy2ar z#~WuBN?mf=RKMc>S*=E%s5u9vEOve~D&8btuyNhnokq_+_ml9Hu65B(?K2xar>DMeRK3Pvr2GF;@(reE z3UMtF3lB$lO#SIn_|G(M^`|GiLUp>8Zzpr+aBvAM=rCOw@y5jR@LxOT9S;i-^5#a&cQWgLT>PZgYysNeS7qtOXkk<3zL^x1niq)d$L1PZ`GEl zot65V8r^$^mfqNWZX<7L?k(dJiV~rdraZc0eWmE)+eO)#D;Ip;%e?AxGgs*{VW&AM zhp+1CxTWYUwz=ORv$o;NEWY ztW3)-db#{%NJjnziwL5-&Hb<3)l;LXQ`h%d&c1E-;FuNdS)^qtIr&hNxC^NE4JWz-d<-( z|Hn?JH8%X-a5Sl)a))cuPV2WF5?w~dk6+pyid;0!JC7+_;H+=c?x#_&yCz$P2v3+^ zc45){X?mSXDvU2ezFnWUhv(!3lZ`f7kHcmcG?dIR`P<@YX(iD7N!_`RcdoU-)UPZ~ zH}CJbQ}DrQ#n%lr&wrJ5h#N^JHQdgBXfAVXN6*`YeV0}K^qmT;-gNDJlEja^!@zpteK+^N17EIk?D7>e1=)-jsw)>5NHQGP%)1-mzUc4M&#qDnA3R9^)fZ{|t$OkI zK=XSg3@D~*YAo}?@qqh+^Z0~_v)i0FKxr%rM;DJ z#HQyi?JC=TchTcDAA@%{R!cH9?CfTGr&p(a)Ua)i^Q)V8E$>+dc(blk@R-QX`)m6T z!w=yldK&~gcS(q^dMe4jnP*YTYF+1I#{Ue})gJ`<=4lJxKV8guBV=h;PMgP zc7=MM`mC;32W@tSig6>?=y!Z%*G;JbH8<5sGq`{u~+QMV*a%|(zU;xUYy$d zs=+DbS+(|GjxTo;)fd@+EBW*#W5X@^hantp&$D~B`?oz8<=pGa6s52IJ>yK68t>td zn-gD8Zv5eFz39W$PZrm^w%@C8blsek*4r~9`D^Au<`YL6Y~JitbyhZ#{j);1XYSuu z7W#j)wh5GoMDv+G+?M-nP2X~Pu6fz@hC4z7W~}-5=TW+Cc57v2=aT1Qd;z(^JGTp2 z1pHP#p`gIlzdtKSSvu#dE7wz>qDQ*_lDIBtp6>|GToYnp%y>%Z<)+D+Y8RD47V3Q-+BJ|s_oC6>WVdP9b$~R z&+YPFVgE*XyJi&_Q+jl)RsE8 zC{_8xOB zn(8I7T=|>&ze_dyk7@U4Dcf0D&Iv8~cs{8hIpF?fo)6(3Rl`A(~6r0H{bn5tztMlH-D=>z>V%cN3M)LZX&Oqnp z1-(r3+Y>y08pJGI*Y)vF+S{mp(TS|H=Is0Y$s>qm@k&t@cAHxBqRi*+N%JQj&Tfuj z->b35!10|xi`dH^U#_&4*An5}{tqUUo;xI|u)g?7NXUWjeCmtUZ$Dt*oOx}1kF@K1 zt{>$eUjO*wsTIt8R!*Q|`CNUki{=woG1^URVmx{OQLUwq{>uqUd{?hkzyBlVx@*V8 zuEL-Cb(?~%=OjF>mwKuh?Q~wk^3}^je=7u{ve>^bU;1v|p}-3@MrTA0t>&EZZiD%n z6DehrSq)2Nq^=x1R=uqv=vu?QJlVF8hab~D-kL60zkT0t0p*F;1j5wj9}8W?xAhFq ze;dWrN$Ev~UROU${`<>rmgM=0)vT%Y1cP42`@GG&ml&SBbLSNA8|_8ONf-Vor#oKF z-?%!gad!TP(i`nff){81lQBPXk(=4>c3))d@zTpY8z!dADr0*dx#KYNj@OeO6xe*+ zy=70{O^WoMr6 zt5{Wgvg6MspQCTs8nrjPPSxAe9Gdpz$d5?Jz?Jh986q2*9li$kdw$#Tdac8*oKIU= zH%jm4Gnb0qwp`c!W$E3gD@@GxaD0gL)|3A&cwXlJg8ixg=e%W)(y%xpF?E}xy3nfF z_)BMwcusln@Uz>jy-&B^iQU7dl=>{dH|OD81CPV^KTVNranL(l9sYvxf{DU&uK$(0 ztVNeG$u87e5*Ri2aQKFM8o|>bw0(l6t*g7dDChR&g)cMjTQFaV2|E;j`fjr7x27qVcV;*}zmfOn>W0~e)vg`= z@M7k3HJ>kUtiyg4m9Oi6I?;LGx#og!^8mRuc9%=Im5LY6=l)b5vusmg;ag67w(<}L zmD8Ngi^8rKPgIOLqLOvuR=Q6(x9-xOc9v*(W<;A>6u!x z{B61Hbffr1|MQpXeCl{VH}YTOGS*Ww99!qMZg_j|g2{UUjSE|QxNn~gVgBu^)nsAY z{q^a)W}6w6o;hFRCdn7w^6$--QF!v=UY+~SkTXJAk?fCugza2*wr5^ODid=9-}8UVruRGvSbWOMRqVuJ=|%j<#TM}K_FTMo zI#yfYi&aWg|BmW=lOm>GnXvBvH~mhjc^1=0S9uwR6N|D^ZuLL#TG%7FCbpU5-^R6> zoEt*^>|fWc^zQ6=5!Pu*H9GUFi`Ls^N*lW-PucP2kmlE&`yZ|rDY)qF6mp6^^xxrn zu5AC+E*ovm6b3Jol6}cixLRkoLzM)p_?mAVSNecB=_)QqQ*idOd2x=DIq)K)KEdXZrsn7^gQ+SoitbUVHz*BX1XkJ>~hC zn^G&AY+SiiU#D~aRjx^gj$L8Ub(Sn)F4}!M@%^HGtOvf?Up)|eA?Td3C?{*1(7RdR z873Rfn3ww`^o78gAhyo_P`4a)_mA&H8g?lDu$ZE4ZqIQ{tjB6fN=Epvuf7-Wtn?2I z(*AmO>aMnlJr@>Ft&W`_ay}_@M)TPN@7Zh*O`UUN`s+D)Z*TmQ&$?!sd5k&I>_}63 z&P@k}rPIVFvz@zkH%O@R9^bRY#+((KI}h3W@CR;fOtpP_dhfJmscxgSwNWDf{=VFB zo1?(WMBKM zK%T`f#8ma;MvX}^3^s)(yn2pjSSCyoyu7|5XnI%28vE-~A5KjOTU7m~C|)o^cjj9b z-H2;ZZ-Q^V66`3lc;0?tZvHl(1DYAjxZ=03d;XvI*F2N&E7$@KXEz-wxh0@!@Fnk6 z_}R_3ufFeEo+4xL;O3jci?4QbCGGy=ur7H2GX7~NA5Fg76r8it#Gg0lz{JmNeKHaY zwH`bcd4C}<;kd~%!4q%#w)F`F%seZ$?+*9G_>x`qapsKomVUXfDfKt&@QGI|zfWZ1 zSQnf-pJ&mczjZ6;)QD*PyUMBNel?IQ3=Os%nF&nl;~)tzKo! zcRKmCsmNz=&rN0!tvU|+bk;la?EKy;3&3Ciq{rN9v=-B@bzxL~*$?MN*dY!kFwfYuBx!+zTF6Mk8 zHeI7}_L;1*lc(d@*ea~$mdSjRdbd?cXs*UT2ctRXnCJCRYs_%|VXQkxY1(<-CO&@~ zKT$3Pp>T+ZD=RPi1vV=6<=#=WyL*uFnLqWDK>eUM9!-Rvj# z9vP|6{W06)uuS{uZE}36FOEz-%^Ii^-uHf`!+syuf}L3hcnoajai5$2VbY9X*}$Hz zqHpDr^U7Afo&Kuw>!M4ozjYfn9axab_q=@Sw#VyPcse$BT)njAACIDxN}ghS`{^Sr zET`>^Ed0+GmQ!w+n2uL z<;Zzd%DOnC?}4#>S9fPZVlrD@-kA%}=6W7n!RVv;XTQ}PHfAPvnQaogUu!Mcv+3$` z6TVZK9Vahu-Q8iap68x^g}lGN)#cj4oPuPI>_=yAw%%~t_oDKx&)iqdH1T3R zap}P9tlyVxTRI;3r+;@ovPQc4hSk5%M(b-Mtg{xZHEs+3kS8uNxh^U5)t{!Ic>n8f z)ecPUU3Pq5c>?D#tm3GQA0 zwPeXA4)r6;#4c6utbTYyao5*H8QW(3E%OT8CO=Es;MVu)oD6!()(u5Brr$o_{;Dka zX=}szhUWFpE#wzGIdND?qTMwj`qek4Dsz|q#$EDqVl_MK50o*hG`u`HWxZAZRH+k5 z^=jew+vn)*R`n7~(>?J_cw4uH+m6e5QRgB{eqZYDdu2lFJvX5P)@eoNZx*-B zjF)LJ(r2?_NVR$~wa?!rUQA4a{lIgLU}Zt}qmfgVD0P&4Pp|qpxd zU%bnk*7xAkNq^m=p~n|UC90+6o45XYdo63@b2hJKXFLlg>`Z_4Elc){?UNZXm-PbI zPFj6vkHa0DX%yjkH+gXyIb5>_FiMg(u%$md) zESDvqrZs;GW07_VV>j~|j=rl}n>fX*Ek#UU2Jw|Hnlq(IMvUXIj&$2L4m;zA&yG(p zU;JH)UvBl^P1{%M@){o~Q<&SPeS_(+N7=&@4i;7lo>j9NPQQ6@K41UVg7wq%-V25s zSg~&Me_JW|*Vv4eL+RtCqz`L$GWW9u_V0}6&3C$+A7Zy7%*)Yas`9Qg+Bv*adUv@T z)UiFeF1YE2@VBxJPwr0SVBzx;kLs+i9l*JkQeYuj!o z)qLU1?bgPa^cxwK4lG~%cCbGC{qWP<9gNY<+Zli5?noC>30{&Qz_!-gFp9}|n&7gZ z9nE`VT3@uqA1Qvr$W`XzEX8~~4gb+z70ca475fBt=cS*ki@v~eAgp1=j_uN1 zmptSQRX9?2*(je%iFlas%HsHMkvrc~1vlJ^iwcoWz3HwLcwOWBTeT*=oqiVXOxx`H z!ZrV?>m5J6`Qpd5Kl~FnZCLhpo765#&y`$O8}6-bf25vUc#Fk!@BG}j`zkTa+>Jke zTzeoTl5xFjhSPU#mU7p{zg13{v~2qmr+fci3cKD+iTf=ZryMi-@hEe5ZHCwemq4qi zOH)=(KE&ws?DvVQ(JAMIrb&dX%wWiGjr(YQ@g7&P$@3k)aTTn#Qfa@=m+uaoyK- z>f98@mL`egS2+Hx)&8x|T0hZB=Emw>DiYQ^5*M8D*x_%|@Mllr2JSPJD+KJ-Jl>vL z(Olf7;Fod9Sw4Q=$Ix5=lZBx!8rM5>)WVv=HKZ}`a$Dz9W zoOOWz>cC6gWi_GiRWzrqd+e}yO=Y&o9n)ad3I@aNyr+-7-n&|HPFn5sL*)tgSWcf_ zFn6PKNu%T%74@g4Me>P_HINF({B``y8G7GOewNBF3=Te zzxDaYeH&ajtZJha(3z9Y8UL^jXU=Jp@IO|62CgyX$xL``2+uoh*`Ce)sgE?l%n&M7=+J zoVYhqYay4^_k@!ll-3)U3C;hfVPh1<$L*l-^+n_1ypv~zKdUT>x*GGf`|vKi+ojLu zN-XpCi!R&6t*xs+hjad|y5{z?Ix%H(P5cJtr`OI83lJ;FpU(UG!mLb_$n^N$nI44> z!8h+U9X+i2z-OV%)Xsw&U;P!`_D<%%R)Xcds}*+3U2i)*xN%R4wKc(jUstxGAvp!?{hlGrvbpPM(>n&v~lgPu{XdgEMcRAK=$Z zVxRBfoo;G(fUn`N+jRBS>Q4{Uo(X%g-gDB5c^0Mu3E>CzqvT_LHaMQPy20T$DfFhj z<7UOWw5^PxH`RVe2zaG8ua2K-`NZC0)`>;U%ieiST&p8yux?V<(H-R~;!eD-#S^QF zwnzPE@631_xg+$*)BcFu*9Oldlmnwf-Y>hzu_3p)c#X>LbGAiy|1J=Fo8N4)v@5DA zN3!x&-yC^^3lIF;a-=gj4{G#P+*v6%^q)qcS9-t_(K_XHH`noU~yF1T7g zvEJoj#BihWUqoJ(`qBIgdUKO^x9DUoE6ke25aJ=usBTi(F(KsjJ=uTptT(wtg_w0i z=X=jyl`7h|WBIcfen$1`{oB(Q2liaFm0wZ0S@Y!e&70+&H3~1LYzR}a+;~B)=n{8> z)q10?FTP#6Et~Oo&F0Ay(l7hZyD>p`UX}Z56Xk7p7Vf!L5hC@i`@4PVpJTiqE?>#r z^g%-G(c(q(F29(;IQt!U>)Dj47IR;&-Ii=$^qf!ZcjoTH9?dQeR+W7Q>Pb->r(KQb z)4qPWr$Z)OO zFU!;~G-&Vq5G~un^(6PfS_gA|)A9@RGAf(X+-`l|8?jrbZEo&kA+i6*x0XxlCC_i% zQ5`1}!X5E-V&d~7#;5gh(qdyYN=7Ya5qwT=;R;>G6y8 z*DapCot-*S<86Dy9)6$_H;8WwnVERy zRA{-tPGO6rMy)E+iu25e}RLNoRNiZ?(d6N5jb`~D5p$_)%)a> zo2kFen9j&wSkD~Sb)Q%7NT5=xlWzJg=GUJW{SIr7c=%}Q)?H%U8BI;U1v8A+-~A!T zyiRgMR;7N}>7yZxTfLSn8MrmO6Hvz~LBwl1}1ITv& z<{wdNIOxo*{7sNy>x2Whb(Q{3`N+l_KfC!ym6|{+>(tIIlJg&QUI}2@xZ{}xr(g*~ zX2jXn%f?M%hf9T~URZH3O_KHE!)3F-?PDsJG(5^R|IsPcM@CUPE3>-x2^Kuo`gTt( z?NP_IFR45}t0n~ID$QrjdR&k%m#K8XtI+1$x%54oBOTiuHb0ch{Q0@4LGSYY=bO_` z{@+!w)WT=Vkrk_3rcXODcX{iS8E-Sb{E&3D(sgjPS=PK$=XF4dQou|XU4ek&mHN^9 z0`npcS-75eh`4T){64~7KwFUY^t)G=?wkwSaqwP7+vVWeE2opzdjFXmeDr?#*Hi9M z>Zfv-wYq*wsk<-0wZJU$=!E3iUc0#7Jz_eiW9EK+_D0#0Hf)~*K0Le1&DZjH=f#c7 zH{RJZud4j}=ajGfLC+C%UyD3=3j`(lvrF<-y+_AgKu%0TvS!=-_@ED zTXgOy+*IONtMewk`4=bm1lgHQyEm0peOuASru8RZp-*)o&8HnSZa zj+?HKE4`ib_}wI{3#wAUTKtL4GDHznms+P=Y$&bjrixck}ABI{1`H%wf8GKRy6GCFT0wxr71zMZeQ1z zKS3(`;vb$ntdWux-|5lH8pSWL)=+3o#^l|d{L}e=>aG1EcBmqE(ryKfSpjFxE#zD~ zkI_Z`$Er+^`*-UU#b1W3K2~NG^ZVCThE0#t^ez9swC88wHB7O8sT5feHGyyE{#()0 zCfsWJ8_?myn!9!Tard|H>pun;-ZuTX{ONrs9bUt#w&NC8*KU)Q3YyTeF}bs}vr+xm z%QKSPF6JyQUo7Xdew@7ROzD#QIolha^@skra%uMN#G^8SEZ#;Bda^e^l40&JJYezm ztw;SE^NszVZ_i`3X1&CiH}&7nn?h0MCW(P>6r%Nir(Ez=5I?dpKltBD#x)OiPtAAK zdz)~L!Rp84jR%cCwWyqmTc0F#`1FzX3ClX`PNe%Mo%*8w|D2NgzEeIP6Q9gFZM^P* zmIUJsq1L-w#g_$7@l|nn&0qecn9-nhC*NX+S(i2+l1dZ}X5diYXzXCe`0rU*k;WA- zH;%at&J+25e0{o@_s;?sy`zs*cW$cgbP(7zqeb&~QpPq#FUMU|_C1>B>M8W9I)C~@ zSB5iTwGy+BOi}W>U41O|Oyy>+h8aIE&EUBo&l`QnUiXg*OY|CtQo)ud;`yB|1q~ug zWbN#Bi^Oc3>%G@oBqZsd%+~a^b0S_Zf1@eEz@5L~Xfa3L!?1u9M(*zSp+rIu-z9NfN`jDz{boum^YcX> zJ032U`t|1TnF-Ht-9D7EOyPY4hkL9!?{t1+M(fnIOXoI){RnDOuUTZNjVk7j>%6=PC(klJ?nXx9g35vAJD zL^b=jmcONZkMQl-_3h5j$H%rmTI|}edtzU1)1nZGIn&$gA{Z9rzH0U@EOBD9$onpn zr6ezH`S#=rZR?`c|3@AgPg;Jkx7N8hK60+Nw9}hAFHoahe{PgR>-kNne_nwNb zZ(>k)GTZj?+4Y8!RbM+cE@(af@>)Ut@)vw_wb-UNm+U)JXl|;%=~5#bkBh~RG=Haw zNo!)n*KPaf>;JGjPVo2U+WkJ$cJJ<4y<)*h_K3T0)m60)#OyoBJ>%k9{u4`gMi~}% z{M~wI&+h{B2C-K^iqHSPoLc#E!7tX@l(WVYuR26tF#7qhYFoU2IeXyN_E2X}H{Y#w z>vH&1cwP1{x6Ij5e@D;St>Iw=U(X>`)>D(>5~p8SJFlBv=E+B^Q*mj`5nb>qwCD`&V^|FD4J9vwQyn>rys}$J3u%!wqs&quY_b-3@(d{Yo2}kpYl@~vsR8yFG%kQx3+~Q-i zMdJnE&F7c?nZ2{RuYKnlp2u46R=iGi%Ty0edcg4IW%a^uITN{Wn$&!pcK+P;(|_2x zORFYqP`lu@!K7BI-2sLsbr%;UYqFa4bv3Mq9%R$ z%NhIR!rfzTkz#9%><;yAwK^_bIU%s~!!}F%^1CWmwI}(woJ@J5{I}^xO=RzqoLqouEPRdx#NvDreR|wY9ywfa72I z@@3vL3eImi+nGC?J;!wA>F3!SqZQ9EINl9aXgb@!?UdOm4+mN8!t`@V)*Bah@NZQ) z_T{VGQ@1jC4sqY^2~Q-w9lB&^KCMu9zrt$sOWsp*-Q5#UCoTED)9IwTY}Usr1~!dL zP8ajy&+#|NYTU6h)SUY|=kj&8d5s?p*FEWf_WHWs%Fo-p7u@vvK8<#-8akl>9%Rlrp9)? z7dvgczPbNs`pFmTmb^R=YfvD(^^TKOrA;{J_N@)eqB)Y%ET(@J>s3(NXUniNB>qfs z$P0s9Mds{BALi*7#)-Z5kei@eCi%MJB+GAE1BS|%Li#LS6F+uNIhLha+Vb8ZXaD=P z+V`#ZuJydpSx1Nx!El3o`3GTgx+$V4IB+^lA_`5``uE?H410O*Ug&r|L}G_ldftx zp2Q>Tk8YT_O?p|}mMLs%PRu-&cXz}_DQ4)OXgRXjc)6n%yX(A~m%9(LGEO;Kx3Ea1 z>;A?t>C9i*ErDL#MFneB#Um!|wvY(f_iT||z17Kr`R@a`Z%?S$z`o4W#=If1O(^u>N2&N{~VzsJg5?9f*0PyP~#YA?#z zm;E^!-t|BHg=s4{@7!}S+xYLvaO&^b)+@Zp7Wf!G=FAY z)Xqev{wK@trfP9b!^_T}i~1KSjwZ%)l>wpsdr`+S~+*XNVN93AISX}7lzgO5eLYn@r>A+(s!gwt##!^!T-nn9 zbit;0&5{tOJKg=JpZ=BkzLU5hc&w=~WlH?j+}?<=s2Nw@|M^-{{x|bLRcJ!{L#BP4 zH<#%d*6uoHXnEK7p4|cNjdx{!R$D%LVt*rBDKJq`QtaiTD7BOj?X?nV=aQ$ckkn1? z+!UBOea!b1pFpldtQ}(;MlGd$3*RIwv2951XPdcw=B$ZPSkrB&(|4o zi}9q~8l6n%H*44I63}9hZ>tW`!|mRP!LKAs$8wYyA4y56dMpX<%si$W@n zkv4bzQ`}T_WA0?UdVF?*=Ji;;$Uxyr6*tG07Y9BZ- zK}=HM)pb!`F3~+ADrVQMj@(x)jeXIYR?x@J!qjwbzG1yzGR2r9eWDtN&7 z_v3lJtHoz-mYKWp!NQqB`|>P=SbZRbWhzhsNA1X%D$NGN+ePMS2uOXBNErE1>bq+b_~N#@xE&74nP)2U=Z>Tjp{|`UU^+TKar< z-eHFC{&VclZ~NPq@@19RXSMf@liZUy_S8iDJ@_v?>Sd3?(qDGJ%kN~Bx5}L2%rYyP z{(RDG*QuL3cAjFLx9ucz*H4b1!bew}{`u`*Qy@Kk-Zh8M=|T6}`6>@`n^!lBBkTPh;b1{uNUlub%JwAie3fW2bDpNP7EKjZ*1VHm4`Q z`j~R$f3`pO!bMW5DXh6S)1QatZLg3sVwTV|^h~<4fKMZ}qEzYg+E$-zhM(V-bQP*v zJ6y}$YGitZy;zgieNBY%kI7x@eg>*VNi16V_4BQN99#>i!0p4*9K<@zwkL0_quY^ z`w77%zKUjHZkrdngl}#?(a0vbeYUZovecs&ycg6o7tXglRGXn0ZdH+UW0Q%0=fNmv z!|6vBTW5zI65Dsbb>*ug8gFH8+$r|#I3?VG>`_aO>3PzqjZ}TvzklQ6<)PK&vFh(K`%^B4nv(!dlKWm`{6Z@cgYLC8gBaaz%ycP z_SX3|j#~vy)^Dq|tT9aa>0uyv&hK@I2h)K|g;#E9Y>(^ydO9gmPG9UJoA1fFhi-}~ zgq_Y?KK*D{qrLP@>*P6mSgP#07cRN1zqUeZnWR6%k4=|1%kOAf!838y7uNpQNlKTs z4yswS6oi<4ky^J$_0+-+SMIM{&+naeWo?tsdtJuJd#@_yEIxiz^nhh&{m?z&TdILd?G)$Pv{n#98!Su-bQR{s|z1MV$$29^K2qB@Q| zt9xz5n)0|U%3*88M%fov4!@ewq^|!{cMIp+4HK?###HV(aqYd-q-}>Krr*%bwZFEN z{~zCssE(wQaSPWjGz*hAm{R>9Z^r$@8ezZNg&E%8_M1>qpC_y0IK3f?dE4Ve$1smq z2Rs#yW^b>mn%i(l?dQ}S#m9U<1tzb1=-~R|tA?2R62a@SheM*xCW%cDT&nw5`oM|Q z$$Ha!w|sK3XJ>pC#QAFVAr0X`gFG(IKNV+=KX~~)f0{^H;+u)_%X!UHSz1(PUa(Qz z?xM1owcXRre_pPkyjzsq?cPb3c6u5dd%eFqmrqzn^Fqtr+T5ozn5Ir%9+4WNKH-Km z3sY2B3u4AUb0!z9)iNn>rdJ zcd=8xS_g~6eF_(t#Nr6pvcdNR;SWYfkyx>}(Lwy3{iFZ-5oGy({S#x?sDnynz)YW?57q^8!5KRmbT;P7_^0uwEZPjy4 zv(&kc@tmm2+>$t@k!zdBfkc^L=^U5!wk>={4b`j<0zOz?U%-2KyXO@T#{&(NC z2X`_qsC9TgMJc|o@Z7CWJDxoH^<)C)YMJ9lDu!)yZ6NIkfm3Xgv;5ueLg+A zqugW1#G1Cs>2^)rlLJPJKI{%%;2y6(NqzSj!Ho@RT+Q!mip~cJ@G49cepkLW)m)B0 z<&4V(7nWcsIi_K}`3?s_#5Ar4}BWY4V}&@PzkgC3big zJbCIm>5d}Dem}=3$2Okw%!!evmse;S&#E*q&)9kQN|)u`PN8LN-Rc)_x+vUuG1DcZ zOYcgWAOoYPSH!W~?Mz~u5A62xaDTtm@!gxNysIXf9nWX`e{zRzhKYFJ4$VW$XS;u6 zj(TA=nfI4(;EM^jI+}|_7pCRDa;{9YUt)g$W%P6L&5cpjcM|f2rH!9W2s@#&e(TO# zYAP$+t~tjC2@C(9sgYLO<)63BuuQDJj>&VvQl>fLPhy0wN3{IZPkJAFWxLg9u6av@ zCTXjeum8MT`f$=mriqLk-pcbgK5!3vck|Vj4+m-&a88>JO+GbpC_!ZiSxAdH#XIF)146eY@Ni1>z)tpZ})w$?I-KRm6Mp+ zDxw1q74xt+UsQSB_)FBqZq7Wt(m(l*@q3RI*k(k;PTU{Z&UU>%If0k=?4-HJo=3~F zSf}`Io1XLVOYH@N%3WFW7Rz=TaMYcAk-clR@TwD%W?`$3Dq4Q~^Wnb3y})O(%hCec z^@G`LbQ2^NlphtiUEU#;5%QsC#oEbkYfk!dUG8^WdVInk{yp0q-ZDR%+?6|RYH(r_ zpZErQH$~|#h7Om#9to!H2X@tNt^A$k%UU)4(kUsU1r_&Nv?ey4+2paIdjAJ5#@ zG0{5X=I_O8KPJ96zryT1uW7g7j75g#*;lie{y1(pek;piia&$zOzx*9@y!=!>iMfV zbI%D}V|FB?;_Y#XCH_gNi{~EPQ&rlrJN;(+jr_~cA~)R>J}zB%?VqRzOHb*ePoI~a zOM4+I{Yt&;_FCO0Ez6^`LcYX(FrTG1xBJ<03Ef*()1JFz>a*XU5Gi|4skiasoJ{|H z<}b~fLsqYkUVBe$v0MKGABE*r{h}>`<>E&6nmZPWU*%gDI6-EIPTY)Zb-u0#tdx&4 z?@xyVgaOuWjQM^()aRFI}E` z^CP=P!v3kOD~di{%-#C&v#r;k;IF3ZxXYrhC+P-raQWt5)Ls|DVtb!!(OxsnwfpZS z?_R2ONb-cvg2dSyCq}8fSls!2`)9cct%B~_M=qpSzMb$o>05Tw^aQ<|v$=aOomkW} zOQW}MBU?^|+=LExg+9$Q*C$V%-`zNuX+}3A*9RtbjmF%?>81vU;>63gUYO6YCh;}< z%s*RY)A#GDwNxm*aen{Z(N;kz)U?Cwsp{sAd2MdiJRDJ0@yXl|H{EzsvaBdrWnT1$ zJBL(vPdRrvBJZT^b>p557dj8bJ}zD5zRy-tSHA72hIHSf?L4(Aw~d5n#Yvu(op3<3 z(V%hNjC~jLRz>C?(O#6zdZg!|$F~<9wZ0)1^R`4zk4kmrXpIZtkiXvSeC3hXKGuot zKQ6h%EZ-h_$=k|e;V0G`%hx^P)ZKd~riU?M?&DC2xMHh!UL~Il-eq@pPJdG5xy!u4 z#CJK9%T0{~1`Q=K&m$$SMe3#VDza_C~3axxQ<-=oGCZvPmeu2CHHwtWNxR>=BLVOUzxT%x;}%= z(PWlB9rBiaBpst`r>Oe{DkRiijNUzVDTrS|58{Kf0!CfyAP_d#{*Bt~s>% zk?QjeSw9`8=bkt-`||ZPTSw)^_r*4A?=uyhkjZ!cdBJG3^5aW%JNupQ>3=Oh0h+FNT%w9aM8St zb4>i@GQT%hHfrCRzAbY>?u3J42j}{Jj9GK_^kl~r_t?3Hdy*L=bcAkO9^PUz{g#I2 zNgkd(6P&;3eT{naPs%!km1nweOvrI>*0!Jxm5!@^SZWu{Qu?G`%#y!m-Srvz>nB?H zMWkL{I^!E#;{(4))2K6kQ<7c?${FsLn0EfOn`mp*VJ9z*z}o#jS+dg| zeenUuMMQGGGxk1ZGZAL^y5`HoCbyVt?Ol@Dm3vR_*78+WW$jVo77?#qWz{y>Oi`-A z`_p`BY4*b3p)a)dgze`3@cC+pNK@MF*jFvzu1<+9x^?Pk&&?Sf3sb_UciyU-{Maf& z_++;vuitX%L#GlZ{E|B6sCDw_qzU{E$95<3T#H}*xA~>UQr0FD)m_u4rDSF>xt?J> zE;g^r$IXf<`PIRm>$CUV-hS)op(6zo-i9py;Iq#4*~bl8mv0Cp3VDYl%KN{$zWM0y z%?E3j-tKrFbu*(~=e+#xZ?9sQ7jhY2l3RNzi(&Pjy2;mVHP<_wQZnIN^m-nnt^1X? z%{4JCic!z6EU<{Gm3g{9e0N`b<-`MSYE6BLwQq$^+poH5W@ z^+vl=-F=RVZ^rgSwl54m&NGtL_4x&r`B!WHEElO*@XwJMEG6RaLh0bZg_K-m2dI>at6|@3Y(8qSK8Z773M!WU5@B=J)Eiz!brQD|cHmy$R+OJ@_}? zwtkoL{(kAhoh;7;rp*`rV$?L_L}T=_mO}16%xe&Sj*k#!Xzm8lH zoVW0~s!vsBn!%j8m)U3RRa9b@*t$66D-+*6&Z=)22}>GtznHc%oeFHP;1OKB-!`$@ zMV-qaye;Ye28q?z@>$uZ`D(b_sz39#Ey_mU^Ugq|fJCsxH-6H_<8WNsPh7o;=QUZGkISm&ZQTtGtBem^)8;;4_#gjqKBH&c zFH5WEm-c?#^TET}J^bF@jTRSW9egGPimq+jvpZv#PR992QS12pPg;98kKZ{bx$X54 zPyR_hOB+@zg_%SZRj+Hz*)AKXU3<$re8u_G|E8Bn_3@M$-rT$+$+hJk)3X)KJaV^} z7AVc@$z=CxSg+=}UvTfK?lzsxcAncuk{(3iuT&GW;Baz6gpyQ z?QpX@kyV#%1=HtE%ZsXY&5pfYEXw(&RA#65t(9VKdm39f5+`qX#L;PNA#C~g>4#q# zi(_W{Uf_GVe9?wSw!00lcr5*{eDB4gO2-4&w{jOc|Zu<|RD%GU@Q^MK8Y|V{y6Iev0Ft-yj?XwNJ1w5$E53eL}XTFVE6#e|L1G__P`9?o-~!^knL6T~|dt_em|&KJzJ^ zn0I64gl89=K2Gcj__fM>mb*=}$L_rzNdeawCjC3|?&ejkhff7QE-%{aSYlZa?~-7# zqi^^A6V_`)rW*EadigImBJ*0NhRCNEYQLs1N-k{@P}roRzi_qTGvC?GpHc!!+|*)r zf6Q3FP32_c?(f(C&pKk7V4Jq!N!fh)M>1c$@^4sWdNOpsH2Ly(^TME(x($ER@BFaS zd7Lpl?L>sJOqHQn#IN4DDfT9x$^}#VF)!aT429N#`A)iylHGg_0SA@;?lZ>x^5|HDUZ zr#+WmbZ#iQ8h6@DVRPoBxp%u{t85=Tv-I3Da=RO{bGDy~UGc;|$eOG@RICt~|Z;m+qU+oNiT-vdawq=V#9pnKzv^YIjb-q7Yvt-^dW( z{_-1N`0CHOEIgw4WI}4fhM7gOWm6FnKy<_mD$;98pV zOIzrBMu%tIk-rtzb(0yTuTKoNy}s*Wri7b0!@Ol^=9+V`|3jOEloivN%_Lb?_4Ik~ z4{j*Y5w*Umr&pA%dpe^~Ve1Vy>3^j&E8v7)66c^d9m^~7ze3d+&^8G*Czggh}7e+dmrf*81O4) z**Cx3#<}+v^GdJ#cd`%WJ!~{_w_W)o!7KvH3oSTqnk4FN%=c z_NsU8qca6Z|3z}JA3M0{B=6Pp83iXq7PmceaBubc=TmmDP;}m>gxQhC>?gd}|6IcG zX#b|hHI>R{-D0*eZE8hlZ}7EVxF&v=d!^X2S5FhArXT*Ub@|xt(4BLIV!cvMyxDPB zbTQk4zY%3iT>m<+Now#-tJBK9AwEs--iG%{Gu%t;vu>5T&hN8dY&Uzo%#?i`@i z#;MY<)@pC(c2q&q8ZfmxPfJL`&q~!1J z+jX>q{$XGEo8zGW-@cv8pJupR(seG~X2mbM`Bxi<(X0uEPl~se zu`)HRJ8H$h$+0VW@f*f_YDe-M{;dg)eK3zfG@#nw~rR{e5yGjRSCeK)k)=<-$%v8JN*LidMl z^HYy+Sv>u?^^@q+!F!g^f0uE>EyX5JH$CfIHS6Mw1x%ARd=FD{JHzghcR@EU?#ObH zd~@FFi+Un!%HDkIh*oL3&V6&5b>d7#my=J7B%Wm)V=hmwzj5LBkFA~s=@0bX4{bX9 zOYlfThWW>B-5c`{dVdJMG2;0&FPOAUhlRt@#T$0}x zUb6G5ow#OQ_rc4WJp3*vZm%zNx{%k?aj3vPS7+85k(4z~ufM96mzn!!y|PgbNcw;C z^E}4FB`*UQG(TOO;Iraj1JmoxtKMzU%Kq+Wxa~rxTE%*!>^oh13Jvz;eevJB&B0%M z2jf2`y{J8pPwcsOL-vF9Q>HD!*LSx+Ol4&`DeL6c*T`~SC*C{9?bpi6fXk}OlUFRZ zeffdUVtI*4&T3+on2|bU%wp`1gWCz9etcmm=N5 z)n8ZF9`(F9fraVm_J_-JuM}-=SvuuphGlwD&GMuJ)0qQg3O1I8&a!IReOx8XXI}Bf zqTs^E?x!5GI}{#<#HpMtmMz2fhjrxo3nG53^y>=sjbp0e;ruU2!0 zOVdLdb5j9|2Q{u@`;~;msld&FJG2B z*7nA&fG6(r`>XFnu5{+?S}JaG+5Klwpn#Ed_6I51&AFLz6T~F`t?b^k{qxm&hj*%M zilR*-so%cIrEqn;c+rr-Se<&MSaz(fCD7F0Xf-wJn_cGUI2?2IX&rf$3be8J4l8&UHPUOX1D{Zf#G zMd`V~c{_(5tHm=@jo2j+4@LtzW(Qxr2%QTqxUR||LQ8Pj) z;HRiZ)o$r~r_A)Y4ql6SZnsdt;O(Vl4|h&=bvS!#y(mLwTalUkM7cb3XUi|gwKj^& zuHIHVQ9<)^!ss8kysAt7rdyc>6*=BBJRa|_Nb=8w=^Ncz_ z&GF;YQ7{y|(6Rhh@ZP4g3pA7ua4gzZeJg*b%B_uJ%B>Cs+b8!-W?hv3VpdRfjcwHH z$N#QY82kK6t$Oh1q{_;o1#w@V?VA4OLoE9v`xT;l{i1if>(;Eae)Y*S$$Q=2^xgIx zjc#-IPm&j6th4W3cF9uHanplqiB96&q5pJ_8mE`0R(bDu-nHV5q^C%&r9tV@i;ulU zny;RUHElg8vx47X)#1cPTjZAC>6Eq&T)%0eoOY*PICp&E>&Ulu1+Gnw70XY&EYgdc z%n=y4ULaz@cQ>7?M>77xb(SyQTzyyN|6`|++?oXk?w$(%uTayi@cQmqZ@~n&yTOs4 zXFT0{%aqY6RQ~lh2KD;9q7@HLJ5TCVtd8E3q1DjBvp==xc~<$O?D>YLU7Fh5bCa{5 z-BJ$kT+x5`g6>l>$phW6pg zmD~rm-hZ++k^SbCM+yf5x&v-oYIca5YRXBT|NVBF;kJ&Bj2_eKd*{vG)pezu_-3l& zD)w#OmIX2s>i9D(&BKjy6gmXrojpHo_5L*1$)`)OV{<@c?Aw)HT(h?re>R$yw%}sw zR|huP$G=OS|KxwL&F?3J-BR89Qtx*;=BMrnubeFM*H`V?!12-U-&Fi#I=u)or;N@Y&^y{?_m1+27x{9n*g)E41dGYr=sp_H7A`2baF$ zdenC1*WL_;uY09h?niSnERmhjw)Dvt`Pv!ooB0}8H>Iy;`7ysOvEjSGg-t!0t<#U3 zGo8C7I8@hD*MI(niJF2bkxy5-nVft+rD9S~U;QlCYa-9Q7wx?trLtmzm&Ejk3y%xg zB+k@7aIEWK>BkS(+$1Nx77_e8eeZsw}`OX(2Qi5h$um9-!yPHEqt1@uTsR}RoC-nw}?cq&H#fr=4-)1jktNQ4%=HmVv z&LR#^87^sE;(NIJV%N>DTOaU+zFU3j=ArQUN0?@@%+}SJUb}6w9_wm%wJoReC7*Z7 zo_oKZEvV`O_i|R*)#eSG*cNppnoR$7?4j5L3(+K%qt;$QoZ9zqsW94lJTYC#z4z-( z!)I(=hkLDLUrh+eI2b0i;e^iTEf)Ib>3Isbzipo&>UR0;?~IZOnU0CVTYrWlrX_dJp1TmNg`@l52(^?BSj=_UIVo2EG^7RdJUX*A7j zzRr3j$2;{|_Eznz+l!=x+InoB$ISa+6rT~S?74cq*oBUJ*E~Kg^L%t=>-9kG?`oW3 zStl-*o_f12*?z~JsDr=Mu3vGQcrY*aNQI8XmS3{JQ!i9Ko^|10m^kCl{%vzN?atAE zsB`5Nn*&!G1BdFosizM9Yna-__Hq3|eLmN+NTzUZKjEiM4{a8@#ZHbtS3jH2D`|rM zj}zOcES$Tz+T4!&dqd;NoY_Y#mNK7bHQT0T9-%I9CChi}mHmf1Se9LSKT+99>~ zC#PLo%=RimZPJ6rAHwgf^Zw6~*Wdh6;s1UOC!Vj5Vi#{QiuK~KXZllkdPY~vz6VDS z>n(a{8=-_ic$ ztDUzOAJvp=dO9&d@VDHniHwJtuQyzDRbCS6 zCqA-0k=!eIK;rV(ixYQvX_S3@uv+6-mB3Z0Nw%?0TkGY`yFPbcOmv#V^u>Sj!Zq<` z4Q?+bCOErH_gG%ewEMuNE}>)F_vBo8C@1sozBq%>5rhAZs(HZxLQx@Efbva3@2=l2SE9?*Cr*A#zS;BVI)Lk5LPv11R)L^#76_>4Q7mI z75H5D{h8|-^|4~L`^Cjl4b_``y8fP<(pGj1-tiWT2y9npnYplFpNd0C zHoIKWjm6*AuJfP8cex?Edhfmeg}lBp4K9ka9y7Ri`IVoJHvBcwz%u#Wlx+cLG#(Y7 znymZ&>JxK8ljB*-Ih|i$f5a9lt7WX6BM|Ow=bgjzz2VM-JJ09$-g#$u_E`0!9bPk? zzt}&1&e&ivLHe2P6URKxzPDC-8y{7^{WeQtkH5b2x9Rs;9kwrDDJ9D2~AlGA=*6Xb72|FCuT}nN}F}Gr^ z+tJqiNl(R;kN%0ujk%XR-K{S9$jlwj%Dv>ePPDC7E{_5b!42akR$-a1R?UgO-Yk7qgE(cI~!9dbXYWD3KqM}e1R(k?u0bwB;n z>^56Ln~J`|Ue?amf)2CRqxTeF?Jm~2+P7u(hNe!b``sJ=zkZrx9uukiyn*%g&3;#p z(=JckRu@iX{*bcU!1EFJt$_O)!8PY!&yTEY6TD@U@hkDj#KrxBf&C8WnackBxKwl4 z*GI)f&Hd}23|INL%Zq*;u5k@CP}ASm`DB~$NjWtuM(Je^`B^7^?m4>n^L^(%-zHpa zn%A{U;LGg$Hw&^R9B$k;eOry*-(E#7*&kaE*Ru=1w|=vq!DaS@RXRDQ=l?DCsQl)u z?(6tp)nQB0glkdJKJ4+jam<~meFe`nUuEmut8Dx=WdaX>*1FJoGwWKz4r$gUufOJe z7khYSQObnk#LS1wy0)o?KAH5+a@y&zwj=HDxEL0`|8V}#n*W;i+|m;)_Dt)lxL%Sf zZ2elwC+VTkrsSQIvMwqHr9@p&xv%o@R<`efOG}^5+U)Q2^z+FN0UgTLa(+TC-42(2 zN!~bGvG+vwD%NWS9%d86pVhKlsp4ioCDvn_Ki}b5;+8m!kL6RGd6jchYh0E!?|=P9M5+)82>u*RzFIKhq*N+|;jaT`RyV?RM(P z)4f%h{1>fHgfdv%{}ywkX^Wycci7LrYU?+Mu3-?;oE>8EX!-*z3)UNz~d+q1+ z0RDyAn|kj~h(F*S_x0GdVwX2!+C@()-!RK)T7ErTtHLUlZj%>$RnYQ*egRM8uDi{f z-4;}rZmbuYv0u5s@aQhqbu1<<`j@xd|~(PS1xlB{v>K0{q@02 z)u_Xxx0&JP<0FDmnWfKdjpiKA{CA?HvnG zM+?qec!>X9WmD6%sa`%h&NrI&z3A}!)wV!9{p|Ywu>4-#JsRD7g)^n+Wt&?TO_;Wx zpG)`uG!3y6U#^(__quYu<4gRLw8B;{p{#=wk4eszcy%juu}n(N>TbTJa^AdaaxdRg z`tl~ncw+9~uH(M99!mC!3n{SZhN;>^?o4?tlHWvvSzmH7+ae)KP2PtKhvd z$maj{y}bq;zWhh{H${gB@kSr(d>QKbGiJ>>Z@H6m_}K3^nC0KQ^nHb`(kD~!#hIK4UWkyl%MMRm)&V|Y+Bi3 zQ=O|F)$0~tAht&A4h(zx8_r})d|*Li)wYR<;(lt z6`YcsxZ(LX)3UQly$Z+vUVW`v>F!;z;D5=6GZ~6!qTgmuwazk`Fzwh4r{A0!^WXS3 zNFCL^tg>E%%`(|k?|ah6Te6K)8J*WM7ko~W>})$xEOz=)o9Lm4B|ltGB(>Cu1b%Bf zzO?EM) zN^eSbY9!36jn4|;t~aw|-E^!@x`AJA^Ex9BpCii|e?NWLsMGPK$ywg`+~OvtS^t;+ zpC;sGk)5=Bbg9-A}h)Ow!R$3UBP4wXJ{h zlI+Nhvzq(f=AJ*W*(`v$Ct%jw#?D&~_LykWaO z+&S5Ay)JdZ)m)FD=Q?qsRv9)uLwz&(s+2n?Ae83ylaHZt< z?CEzs{yca8<9qjKeniSocHQU?)>Gd2_*WIbmgte5tS8T@RB=&p*RpRZ~3 zOWS?bDC}>l%!eI9v-=YguczcJ(}`|}1a8UDsC3 zEir%LD~9>Ue_wwg7V>2!W77O%3QH89PFule>a*JA*zUWZ^vjYx>=(TP`n|tKqTK z{dk9h+zyGWZ+FjeGG#pND6n_oo_TBT3F*A4YEB7M-c|5U)N`%n!*A(&8Rws^Dblw1 z!W-fBS5)?~?tS%U%`=l#?B6WhaiM7Tr0{<~lx@w2*0q%LClI zb9rjp!t{#QPWz;%XE4XlXy4Y7CudjhG_w|r3R>ov6ZPr>Pv!(s#_xyhwc>M=7YZ^> zShZ98C;$3qw}iyGB&5{+^lpA+;7OWbot)Q^@MK-8&QxXA>uWa6cU0LHUD=quPM5WP z?~}Eklnpnu?Uu@TzU%07L6z=1Z&z*+HscohI?bl(c!pDWbJ?9R>$#iRbh*8D++XlS zfG2U{$6D3?6Wd~623(o7?d5{MXCLxLhZr<-Ffa!B-gp};qkiDu!}}$BJa#KcamN0$ zjXup}plJBg=vn9)_rOgTeirX)R0(-o9jNlW!e=*wnc?fdQ!fNgx$sTxXvWop=@#<0 zr!Rb;Xn(BzWz&tWcdm?+&I>Nh?e|vu#PLmGJ^zf`$-+tBrpP!Som}sI#Nh20-UC}6 zC-|H&YR!9~zkvU+ip9a8FM0n8Rl3}wx*8wvd!;7a(dfpfWSjry@6=U%<>iYXO3dF*cHFrt<=pzK>+JXinxu*n#F}>;o)doIrlC%Y#$I=i)27_~ zh6Ywr>|I;quDZYYve<@6ePPzJS9biWi*1;GaDo_V{@bzDg}%0 z-<5Xa|G{%FKE1MxI`%m}ZHkhB!5>YIw&}5-l%54_Zu8fh6kPCruEg)Q_cq!!VY`j9 z+juTkKYa{bY8go(MD`ig5$FgHZS+GoZYW3MYc}-Um@YR>g%Sz8wI^P z+|*-U{}Fk#-kLF#+4SeVNj!ard6VzYN zd@R@cmHOreM&6W6?+V>S--UIrH+o%Q(MtHbO!(Kq7&ey4zqq2sc-Nha3f8mVb4Vj) ziF0j$0iROYxwWiU6Q?YEt-bvFpDGh?k2-s)Q)XXEe`tzv+ISQ-Duy4tEA%JBSnR+X zne5j){BGZyP+pTXbzWEQT`#34vhqd`be2fg?Ah{r(vLq2o~`-)C+4kP_~}m@d;6Oo zYTR>i&F6JmdWV12>WzsrQ)Z`~di!}r_1p7RyF(WB-|c)CY=?tc;6OSF&e`x>mB6>`adZRd}s z!y#7#_8*%Zld;mq>v(3l*~Iso-X6A2+x8$KyN8R>#<$XR|Ea^vw0?_!x>0x2t$nUl zdGq3iO`hlFwA^l|F~zLga%&N5OTNXK%@I3w*f?4<74wWszdJ10dh(&uyR}Q-{^jtK zT*8$3dE&3nS$VD^Pb6BrnVcL8cYT(cWzhT1kTdt)?n>Wg(L#mQr=u%dC%&%P^yK*M zWh>&J_i+B6d19Ypw@dfQP`AY!=1H!dTIJ^)`F58wx3j_odAlP-PXG}!aGtoe~y!Zoo*weJsC zl$xFw+R1U@<+ltejAt+pM0{r`*_}@Cw~~7Z#^&Am>{a)@hWP|_V3@W z{&HE^KS^Thz5=F4)%zJ9>3((Z?|9v|an*J^#Tu3sL9C2^>z^&Vqrc)qy2r;YyB<{}`eYcz} znEo#D#qJmK2KROEY~0Rw_hv`lxv$4Aa{JuyNVfdys>I-;#cuXMlrMQx%jr|0zps>e zonPS-{xs}P$ULSNNxhE;@2hC-|4c7C-u)zL@?0+A zR@>WKm3a&&#%yY}?Q-fB3lGp(^Vqd?=1aDY{%LJa7v1JBwoDUPy|C$fV#6z;?c4&N z6asf|IroLPjIFNt>fsb7>q{=K@)-x;{Y`e3Ox4ed?65cdl)0&P2}ADv57G&5pB`&_ z^gYE|JTl_v0)diqK{T6r8eI>BV_RW|h_omF2ci_>3n!oV5Rnc&Fms=j|fr zvJwM-oaHUiE>U-E+j8xDnNDw@^#=i-Mm4^Qd#bmYiKA14`eN^e6TfZNF zySU8a^|yEvuif6JPJ)YUl_CR{9<}laz@KHVv2g;^!U6sN2Ra`?R_0%<9Vvd?P82cI%oIA87d1_ zH7#hqufEh?By-Z~M_H+V;u?z7ZF|139c;e9HQlbpagBjP=AAhTm3Ax6UuCiTv~KyI zem0%RPkrwXoHvfQ-sSQ3LecX{GoNz1AFN^FsXA?$!&0J!H<+cmI~oJZU-4ob&R+O|r8M5{?>OJ+yA| zrKpK7M33`Uw_eXG7met6TCm8_&G)Wmg@K6G0`A}aTfSyh@b?I4w!S^ke?9B_J&WG? zpDHdqSzjnM=fwg^E|#`!gw=bs zZYI-@tT(gt+QaNJZk=y4)4j#Q_~2mn)_MtrOZ%8u`@FXv4wBe+;3MnO$<6BjUeqp9 zHEHB(>IvTQU$E(n?qDtG_Q_Hzy_CIpT zFQ58%`sPPUcYJp&dbGn@VLnS^azlHjeESQI4Ug>KZrA73)ehisyb$^Rx}nmN6Kehv z2OTF`Ji7IJZG+$GnXZfaD(_DUyHetH$Adjv{Y2}bQ=6uqJo;ct@1ZHpe3Sp`y;M+h z)Yx4<^FTvnVzXYYZ`}@6CRcOK#nORh84R+VIlCK0pZ(jFf9vVK!0RGExw%%pd({-? zaP&BXu~zA~DJdKNUu03*w}&O&drw0N`?uxOUN_}G)+=SZCvrIEQozk#)!9078^y13 z= zQpVoVm;Y{7ZLjtbrhD=~9((MaZY$!Y*gr8PI6kjgb*A9r_+F{cGU{{QzpD$CR8rs6 zc&_KP{KDoE#yvAmh23%a;H6t4!u3qkBCozq{eAOt$w`*EiIa^tv~AdR=#-hahuM_U z51iVwl>0*ul?#65=bN$eUJ-cMS zME7HfmnZFwDnBjDH*nhXV_DdierB$P=O^9fZkblsbYVgRYgD4Wd4k=ewJL2K)8;t4 zihnQo%O{p8#OB=-l>KV`(L=e0H)j2aN#vh-?AmPBS)T*soJ%e%-{9uB9$m00XYcmU zruUwv-P|nDV6Y)mPRHck(jTsE>aBk@8HJn!|7n@CHvpIO(?{!>kTw^I-2_nk9rw_NyiX$b4>V+)*H_x#wa*nHK#g*w^Y`b=Emt|^~&0tfS zzqjUW0^<@>m(9=R?mJsCe{4IN%Keb%kI(g6`S&a<^NYOjwLOzLI`nm?KI+dJ0v8RiwP%g#1@_4_52rd|^{bLY+McPC1g z=Q^dFd{(@6S1^}gs7{b6&0Ed6O3d2-Px#H0XG!gj>y|a%f6Tjn#dJTP z#4X9oEu1Ibi(pnz-qE+h(C}HF?Be3?H(aGxxoh)}e?G?Q=-j$ec4}~v5N7hmkRyeQD!)n(dD zCBO4O*h}q`E-$ewJ@fhGyIQL|?1rnD&8K?bK4)RH)!Fp$Hjn!%2kr<|@L%FwufHyL zr=mXNK?dCe@k^~2>|bc6ufi#}^5#^$*P`@-`-~U-_)Yc`|`)^ z9hI|ZeGt0nzxDEzOHSeoHk`R)ez?Zv(y6aX?L7j9v$Wsc*qpNC?ds>Zvl4CGjxgkf zPxIJbf8g@7e@A1lzpk!2R`AX9^t74ZqH_N=9}|hwRSwuzzGQ+-i;$hw-We(Non4b2 zbWXU+;#H?OssP^Y%f0ZCLZ9Q({8Gx`DTZPa^Vq))B|}s(jSdx$hzFq z4bHazAe6Obmfnj0*N?57U)218@j=34MvIgKrnl2(JSgpp^-zxgx>jqdAlsMPV?z5G zWjbEP%?J?wnK#EuVwb*v*qKzmgjQ$X$JW25GW2aX{=(#E7cYKxk4~DtbJ=#=#kqTa zTfKN_$a;eD`>Rcx>$a_!BUx0XA9g#{&`)SdJlwtkcT{`o35%UQN-25vUq%D!ecOQ8Vk{p(3zkHxKCByYHX+Zl^> z#kt27PK6zF^0}v^JWajX`o)*ty;p9TX8ezA&N5t3A#lTb>2BqlZBJh4C`-k&-Z@gi z^|8HcZ*`6Mp2yoHcKMY(Pp&iAH{oSxqpd>dFZQ?HX$)^nicHUhFHBp%@s8MG9XZE< z-$kX;^CBYqE;r|X)Do?_udt0D)ErSjjleLZ)HqV$SkLyUBapT4Eyo z*&eDYUg>7{tj+&hQEfEs;4T~GE1PF0Pn+q}`DWpTjnPWq{=a?XACVh-c%=i+i)ZFD zmzl17w`%JBeNQAZpYl{6+!8fuw!`Q54E2mVxdLA}aBkau+yAJJc$BDD+rhUptQK7r ze5UD_Qfkb%xQF5C?x4@JeLnLWEfr2#!E@u)BLODiGh1%xYRWO3yvsU$b6=fu>HzP=(KmR zfR4%w;n!!sCxvgFro?|hBPot^wn5J+^NU={neO_G7boaOH*c=@@V|6y*QY?mWf!B8 z%C63-ZZXp6acAQ--g#(h#Tk#Rs6!K;8$LR8;ER;p%#Y#=gN+okZ?B5j86m&#hDSUT z4|8wwj-WXQi}mW43LZGIx#Vot(=`Q;j@sNf=;qrt!~3>Y+X>T052UYZ=IF=%{SutX zD9AbU*`n7Dr+=OfVZEW1qc5?)QvIPIU*UAMspVGkQjUMw+utcHvr#^RS0ac6AU7BxRUUIP^poX*ByGt?gX|R?(JGaXk z_VgP;`Lq9CY<=(ei}~x32RF=DUuN5>U^3zIOM#G|x*koZn=UNhHgT~D(<14~E@B@3 z=XVGCg|pmIEj?6t{f6`_b4NajvQ13euUnMySsF%7v{##W-CnxK<;>-b#=TD-v@hk` zE}Q8;ZTXw72~PKqWPjj`thlkI_s9j2e5I{Vp6#psmon|gf4iH`XRL1uCGOiWl|k$C z@us_{*4(qM7Sahh5-`~^*dtmeeqN7X#I)sH%S1{~KW9H?_UO*h2WCTe9< z=5FD?u=7)0|GMbz$OX55d2`(p+g-T-r1qlF7LT>xUVSOuZM`$iV(+EqDF3v|v`Y;9 zksBr}Hm2S;{bJnY{^VZQ5>+nV8*-DZnN~+IJ>MohxyDg}|Hj>?*DbrvC+sMQC|D-9 z(~3VLk~N6A-fqwDbLmgymhU$ys(X9vPjqU#^ptHPldnX1Mr^+)Z{yq`w&&^H83%=I zPCQiH8^!)&a%`NkvhNjn=>rR19c5{iZjp7E-@qz+abkl+q#~!G%6`7mbK8$<-OQN& zp8M$gb-9b9o}6&ZOXz7`b>{yA#*Vt<-kN{cowYu~sWIWyNj}@SlTwn4kKPDc6Tj=t zr+)`$uiX1MbZ6{!hi9U-^Y;C^CgC~7e;c1x>g^(S3$@Vwwf6;|X}83b&S2AVIa2*b zw$GI@wLN0Rlp_8|%k5_QY?|s=u}Puz?_TEy<$J}+-)cnF%Ig-MnvknDpLyxIKc}r@ zHgRcmh#gR~2;UvNxbd@bKIe^<*Eevcl*wEuZD6(CvoztUbmiKoQ9C;4h4?PBiO~Ba zb*5aQBts^lVC&i>72c@8YfQ2mRx{e@8J$daVf^-0>AgmfPvJso$F|kdH+*)_vUjdr zRT&>-ALL@n65_|tl63#;=EB$oI~?mRDi2CtO?jfgB|6{SDQpkZtea0`d`l1XZdSf% z5vVAr{PnDZ6qA@(%551tBgv9S7fTp-i2Getub3FV;cv~0e2H^)3txFEY-XwQl-qRQ zxH#2ceuwL9?~iIbIHykYXZo~rYxxBai8*CFXHRket!BS{ z*!bG<1R`Pj$U z%fkQPvo{Fq9IWI~_P8BG7JqI4LOxga0))(9P8@4Y116FCY~vb&+8xD zU^X^bX!Js3_kk9T?w2>*D%?-*KEd>?W5KrzvFGigw*6;b?V)kTgmJU_M6n95pr2BQ z8Cy?QOo(?CTjs{udtu`1uxQsxMsp9RlQ~bls~g!=g+)aE$LD|2Ti9f0FK%L15q~SU zWx}@=hbJugHAk(RfgyVRu@C?9$}1%z3LZ#mmFe^qZg%G25BYH7mh9c0-!58{*YvHs zQnR*f`lAA^I{ zEhpNlp3OMkL!Ap1aTO+ofL@9B+ho8B83z3IE9^f5s`NgDy3Cid5ErPqD<~~{RqmCs*~y}MfxXKvaK3HXRdG(@!|feyx)m8e zsvhUg+_TbkmzNGpp!nx+O3T~X=cyE(KW?t79JlnuoA1-vX3TxNtCxeLZ&M6+$weEt zvbYvk;bW(N2CR1e_%3Toi&yssmd3>H-eRnP5;}zKV2|~Vbgr>Y1gvl*B@P{xVk}TyUZlv30?8GMD?o_m}EIV zv^|Vo)yexdM6Ghl;x~VzTW`phvAoTyepx#C&kRNO4J{%2`<89Ho^9wpZ^2I%7KXch zZ~n&L@MIv4%F5b2_fh)`6VgE^= zcOtJJ#qT~+XX4e_{o_{u+TMlNuf8llbb3a7Uzx0?z`t-${Uaf}jlUgaVenu&V`*m6 zb&~mBudJ~Edyr%P0)6|?b^9LteS1rOWBRNzUG*uKZ*3Dk6yD+|d+pi69UQ?E`0BTw z?@0Kb?Y!-F>)FMjFD_cdJ}P~5!J(6+%Y*GXk1j4=&icq?``M$+M~*&keHL(eH+%i-5aZ8VW-AA4?X25d6%~-_GOP2g zxBo0RJq5-iYY%%zt-5ym0n0<79lutbx%IqwQM;|WERVta+CaCHdna@*pWW0HTV*YM zukwD4@$J$Z55MRiw@7(%VzIK0Z1$X(oa_mZoi^(h7chf6h%N8hKe&t=*0Y}2bbzXgT1%;~Y; zc4hOQ6%QSaPc3>bK`ZC)`OjCuG+I7vom*OX5X&*+ptTRfr)3nRIF%TkS-u9xUxwP=6+D;n&^P7unvb)Xm%rTNescEX^4(i+7jC*>y)5-_P>a9# z>h``#oIOk_GZwvGl5(PKvWwu2)Z3dDGHWdm;nU5xt7^8n9eY91xKF-F^7ZWP+D2Oq_2Tl9Ot{y3?Y1pB7WngrMDbThx1A z{!e~$XOhnGi7LPEukPRt;kwuVH$Ugii&6=_7s@TCPkix74`plKqmp0{Y}=)BOzugx zomNdHldFkPx#50Mo4rBLFHX9#*xAm$@6MtL+bcaR12p~}{NbArbAZchcWKV_N>%~h zNvF%0mhWKsDP=$P)Xi@P`#!H*=MZ^(($Qs|eFt^7$~JSacCI!lr)|8`wpXSkzKOj~&~8n1?&3yy@He z?d}mvl!Q6vp7`gnL3?_R-JHlDlMR_}%0E>tI)04bs`LC!)#WXVCd@ndN9#)b$)(qM z+nJ1nUOPm^eZIx_%1A*aV{)0wS3ecrMGa!2YYS`>OTXpD)t-JV%$F4}`lV%~ee$ao z&T}?jJ}yl=r6Mhw=HhL*;jHB2XDlb3q83eGru2@6v*5mvsODuC-v#q`a(vU! z;bMNL^yFFi9i7bvB?2;xmpmmIYYKfgZSdv!73NYrZMJx!!CDj5EmN0RXjy-b_G4S_ zwO*3{Z{hxQr3p38%ccH!&G>yM({#p~hHpYYtGisfW#<_`;^604y7tO-@ktd|{yCm* z3D|b0Eh03<;c ztT(0E&SB|WzMPpVy)RNX94g)ZSNeHQNZmGxucA+mvN2p>@w7Yr>ZaV9$9c&IJXtL# zX4ZDbhxME=VOU|c(#!63+eGHQXRC>uq5ab@oA49XvTgr@ z5~t*J$DgWhy4Skn*NUv~<}2)8%<=G9n=z}u@z~b9+*m8`CkhIFHGHZ1>Ou7t-)nPN znq_wjObIue6L)UHtjdiRllBWow*Tyiy!Q77o92wb$wAj1=iM;1JL8t!-}q`{=Iy3A z?`AIgvU0=!^ZIw0Gv>O4n07}+Rju0(rKK%aAF^MRzhUO-IawCR6GP9~$2$AR z%zJxme)`5{X7-(%dGsX~D|vQ3smZnOe6yne;JJ5Vg-iBN^tQP7j+OJZ-j<>x%`aEC zAN?96xLmWw_sfSopNC8Cp4e5t-MT~n!2Wq_zNy$%y!CCjD}R`LY0?h`(P=owhFh6^ZqKlHElgFB=z#sE0v=X74cHyPakURn`73o>GHvj1uln9 ze^26&V40xvTzPrANK|Y_xn$^Co4xBLZhN!6651ZX;U7*dh}yu*NZN@Jiek=tn2dYFY_#$ z^`~*C@QoMFA7fcRdL8yVw;^{$0fXb|Q2D;;v-JDK3!lGzdbs}3#S8tnO#(RdIyP*z z5m{C4x?4LZ-@KpHzPRUC@Ry4`!h%OMDK9wc7 za|g?sXm26c`NCHtFWtXiT}FBqN#bY43Y_kWqbS=aGwo zexKjY&G2T4f6sL<;8x@BIPQns0#DYw_>_9Y?DWb%TlDh$DlGzb8Ck_;?rqN8`JrxO z{aqJ@tfeb-CqM67uxS=kL`cYvQ_fwMht_&9C>)x7&ZK;LXy_}YET0=Db=eEDEG`u^ z9|@T6%H(ppT#q;W@RHNVd&9EW1uk)kEVq1P>#=R`Imelo!?XG2(|7)`DBRRovR&3^ z)0DaC=ic!8np_IYfA(>@gXZ~H_0u@Mq^~<3zwG2CKMuDCR~}2+U$PFG_2+>9-^m;I z82;@oKKAcvr;z5`O_wuLlILrA^jPhcTRDF@hp*G>_iW2neVQ+EE~!STJVa@Fc>kn3 zEgphzHu;^|baeg^m9VuFj-Auz2tMi@@b1OKi;IJskNx@@ym-&bMUJ<*U#8j>oxkN! zweVq4i*>$R;!S;qr~5ZeS8lp?aOT_6nEq{twBo0x#vj$3qdvi!*Zc6fT-Vg54919% z-seR%*Il!mk5y~4tk?gisNK`EeZh{sz31mBOnd7}2cj9o@*;x~17@Wj8f3jP0p zsb7<8e$@WjtgeR(B-%=hwwWy}EwvAvU?B57esbcPyRmN9zqA_n@7h{e?4KeKW>8x= z?|0!B=UZy;#a0A-d_U`PFt5oQt&5BJm${^$)LNf!A1EVHzU#M`#59G}rt0&THcd9( z@<1f_UFAF@nH(MS^CjvY?i)o_^XBi4^)y}c*Y3j0$Jdv;MNjzuD#O?&;@sm)>z1v` zdlNg!r~2{oqVUc?mrknhV{VofWV154_3~9l`0XmGe^-A+UA~yc&g9^eEj^F#@=B)* zc@s~6D8BaG(m-JGZSM=0Udkv1^mgyPdQ3rP#Y)jEp|az$x?atTJgn{h#^{7`q(%gM zkd$2~kg3CARe$!`x`0*IdB=^+f68jQPZuv+bN$(5t|OBsy@>AH{I*%}Taj*4@P}Fl zS!us0ZO4seDIDH+wyj&LBjdm|dtY+lsi7$tIN z?yaTs(=_szp8s+y@MTzv$cH)8o%2N>rtB-o&!4(VL;i$`knxp`)}@|rzHuG8WuJ3t zjdZ_-;D=AI@4egmm}|j`4Z9Xgd@4>97uc(jTo$ zTeqfj^|m_H3fnU|$(TOddHUDf;X)BgN$e?qm2>=+=jwh)pC5Dg?`B?;e~*hpH169= zZ!cSYcp-oNmoGDYD`ww0xo7LHAm0l8y;e6lB!t*!U%q*oDf`ILxWK(VQJJC(W^w1S z3Cf4ZrRwnIu08(kzQn2LE0p%z>6z(?GoN>R+3b5}TFUmrVQw!kxlRj|`F+6a=oRS% zN4<}QhJL%JA3yQW<(k&J>l0EDzHISaP;&nIb-|UXLBD%S z0@7J8Jh_o(0TW|z9wYUaH>R}$_!U1S&j+Tif(jLNp>QF{Fw1s;T4 zG(OHT@6OvrEmfDi-rZ3BW4>BsMa#qq$@L-+!))6MwL@omspOr0r}TaW*P{QE4%n^m z`mS^Q^t*4WUwB_*cdW9y zr~@k{gOsm-^{ zzgOj`WX#&SCOOf9?aQ8D*Tq?;7%)8cdTjaY=oR%#+gKBy{5nV8nylwZmfxx-uz0Kl-IwxvRIqzsHaPon#!^BS3Qgm9qB!5dHqLC z-{Z7<>gmc|SMEpMJ#JFOJJZB@M(lxbn_x#xl{Z|OavVF4T>KbcZ7&>_l-Y1bdH(6& z8M(_#a-P2xzV)%#(1M34Rm3MTn>T{<(%V@Iy)$*fE=pON?O4!W=qchOb^Ev03x*%! zZ-gIsK3gPFbL(Kz&r61hXTll{$ znQY?x|BA`AJcWmnom;=kJbr#;_2sXpr>m7R|2gi&T>2&>&YHVpRf6{wryq+0wHL8W zVwIV;^j3b)iFMyU=N)`<%AVn-effWmwB5TL<~aU6mSCm)Qf}A#nmZA@=Q{lKxN3Fv z&Vi3Q7J;iL`B?1!Ez}gEGkJ>4l*zNsU(VYV)BV;~bN4j6i*}L0ikGFXcbw$pvHGy! zRrAZRzO$1(R-NW|Q&Ku?7+sWE^d{r|xip0tf)jQAH7|VfAYauh#JYaN9X)%A9{yX7 zABA1_DT3gSf#G|eBZKMcgM#0Y`Q}6 z5#I!*+Z|4v>zH%g$ZE~@!+oOf_e-qpJn?b!CHt)3ZyDA${+qtd{nhRtd={QR-}e`; zIb?IRs`{IA0cQwEHOpZ+*O>OJ$ znD1q&4;JUJuKbd)H2%Q-q=r4VSs^-{<+gghuGO||e|Nlc%P9&~ee&#%^vyK!wsPJ7h&*Cr=ZRXdS_}<4nc5Uoi|B&>C z=SBsGbQjC1q!>gyEs?JJ(w4=da;oWmknH*D-EFKHyJi&ra%{MDE__+W&eMreU5l3# z1|694V1H)l+roSk=F7daz1J|xPUHEr=KT|Uoj+&ZXlOXc^e*kl&nqfgTwK>TM-TxsD)137kZbEwaILv z>}8Hmt9cJ>o3Y7~VVg6PoA`GvRi$-W!Ph>X-;}+w^6!QF%!jwgYyY%dyJ*km-B0)V zPbuE1rMFVI!suIA!Py<(XZhq_R_l4O!|r|4(M^me=6qP^R2`yZQgu%~=2Ujdir|%s zvR7trlxEwfW4mi>;^cj8bzK=xu3otPx_c~iV2Ole#2r+M8B zGtIjkg1OEJKG10rU$t$r@zstw@BAgV*49ja)o@veZ3~}H#$`S3zxKx#U6}j$Ue*l_ zj~NFZ6zp2;`DWi8@x%yOV>7+ZS0OXJWKD#vrrTZTXuTR?X?;W>oqzSs_kZ_1UXxSq zRZ-ydD~m;KriFGY!=)Jy_Dk4{pJi2AaV{prDM|nNGR@*v-R(L%kNRIL%5Xlp{cEAl zdrK=%>+c`)n`akv-P4jg{8WAO)#>w;&61{__#(P_S@3c7Q|IEVXKFAf?|zcO_y1&G zYnF3jOzQ6C>vw%Fw2w;Kbp6x^CK(N;b>XV>|ChDL9er4qzAd7B=Y^y{Ud@b?y`@`b*Z%6&IM4O;*N-B{ zpK8{fh>O_0@j?FNJ!?<(BqRpk>izvl(DH29gXBpQ=RN(m!&ilI_lKsGS-ZRRX3Bi zlfJ#gDTO^{K5c7bK83CN`-A69uHa^0^|i*rfBB!RS+Q+K)STy=3ndke?`&UwB%Q_V zrtAu?xMtsk=;V?FrI#sR)+M}W46hepTsKvQx9s=s$Gwam@5135F{Qu?Gl|EA*zY6WwR>`%mR!#cO=IqPUq#DUnS@do=?f5$)P=Po*Jy5`Krv-S%@be~pkwcqjH zVIkky`?vhs)IPPb?PK|;J#)ngvwj{nZa3-pzh%3n+>c9hbv{`mhemHJ{#?S zD;*7@*XYkq;^yK%@hZ@(c8~JYPklT^krI4K2cuVMiT>(z?_|hIn=T(Pr|G^&!2htG zQ+i)YH*SAuF(vP*qgz8&U%s2U|8GfqC+T@Y4u%I*=IYo+C(DIvKfPAFak+)6IJdM9 z?@P7`_GV}NHr@GkO+m4_+wH=&X?`{FI(PYe9C&9X-EF;8w$rY-uw>gD+uwKoPPjPh zl_7)4@uNAfCI8?0o#Zn)qM5O3Q|5lfDeA6yGS$vC(X$oQm+qN+-oo4|;$QFg?yqWh zdCu;=S?1q@&(2| z8l7Ud)XKi(X4Mw8%v-)iV&-$-+Bnk(48E5>y8RI1{Ive@#sypL>hsod%(!Z__SBAl zx23-oE?>u%Go3YT^WMtK)9bA=JC(8*uop(?y$_!LWxnul!5_0;9=?B1NUZjBhd;RJ)N6;iSF+;T}A3C0Ne9yg7m$Ra54_{$4hq9bylvr!}%PkoP0!n^P z?F`%Bv-MJVTS4&68{!S;^y_-ki!Vno?OD&#e)Zp+uR9MaoSd}R;HGuwDbLE%^+ubI z-C(*TT(b975~tel$*e{zec#UR4L#PvKAAVCeRXBrnXLI`4-XprN; z4d&~reLQ9eK9S7f)|7q9vC^pgh@oM5*R&`S_^m+f<;g2~POL~@a;<;$ z!-QRIQ<>_SH>IoF@?UD1*XHS0W;10?w&~{JX@B$W11|k+?f(5G^u1uwq$K5otz8f6 zE;Q`Z{uE`D$NSsyQ1pW@M_!oQRUIq0YYnvzc+K3qbH-@fR4tk2R6+fGKBNfkY z`*&r%^84iqJ8wG{Du-oyyfjTK-i_Hs< z`u#YaHo>iP_Y0NFyZP+)J)W%6JI(xCz;$JhdE3?WI+iQ2Cu*N{oh#B6=KIpZ_Ojh( z#xNF{X`3EB;ty2k|M4w|%dc@7NA1sTFBa=eI?Z(W0$0Al+UVcb0}D>ajXV6Iuu%W9amO`mo;u8Vj6+tu3ZkE(M&@Zy-` z&V21#^r6Z*GmgipH01aHT^6U;7T5SvW~y1HX577%)oyXD3Etv27a!mBy)$I0O#ifL zf2Y5hbN62B`=mQ(6|O%P^EUqG=;?B>qx{WsrcLICm!!Mbj0u7m3SMMhm$uD#`+9w+!)dx6)Fl@0p} z*v%&!UC?J0XM8O`+c4+0>=e&qlEwd%r|5m0oD}%^9MjK8wa2m&cQ1O0YyQ6=_Fk9a zNuZkKs+I?>O$zHv`g0k#E63aH{t&Wmx}MDh@o&E8_EfraU7YL|$ryHyUA=6_O8H0i zLK7aY<~~2GCf0LTQ1A^)djt9BY>pm0v*vA?`Fr};=7j|lR=x1aZr@OSQ8@I+q_2+^ zwja{Uopds!N$T?Kxt}g?GSI#fT_W=QaC3QST|(uy*35fr9y?SmBzLsS6x>GIu^Nopt5l4+X=4IZKpCsM6b*Z&) zz~zY=(p503_rNsT8w~Ly+{3c_$zI9avK-C2oZ=pn4bHg;Kyy( zpFy7<-+Q;2_hib(>EXY>e?AwxIa$&;=m7U>$F-9^liywXVH3`tem{CoUapIL;W;0z z^>b#OzAZRW(Jbli_3g1!-HvuvCOod#H#z)|oEFQk%MtJQb*R2%wmsCc=-lOBI||Qk zEHo}y_xYpWwAX3IAvT^B9WSmquVeb(J>`6h#cww+{%I3UPCcxuyE|uc=+=FH=8G=y zR9th9;i=_gNQf4=cC&t3Et|s{J+Ju-d**+=f9;fO^8ffca~0k#9CI#j+<#2=!s?QJ zeiF4&+NDR!oi80u*wPpBeWOZ$bZ0|<$6K|oPmjJ?)I5l2*|1{SCbQfnt-h}Wd%GST zzGAKK?oy>KvSy-ROksJ(50_FCwStb>;jKPAhbR0uxSVR&*RgF`?AHlC-zp+l@~%9o zxNwByu2|KMJ!X4)%5R@{uiuPK&vn+SK?!GWY+joskAC z=bq+ozqR4F@Q%8B!bXbA*@F&06K~>KkTL0bmWugX?Qrg&yY^~UXzyDWmOC-AxO%5? z?r(#Q$_EpR!^;KdWl!z1F28^0fS5??<4^PKWG*d@``gPLAo6PJ%;wn)A5|9`F)on{ zuQ=XcSCR0h{qjBexAQOMt2qQ7m-xu}X2VY_pQ|5cgqm&+``gS`y6!ex#RZ|&HpxaZ7NQCZ13%!-qf-m`hA-Ks zw-MVD<9~Uq4ybZ|6MyAmVtn;{rH#AGb=IJXo+nmXI=ZL- zx)8h0=h?^WEjxUF2PoKiXnjBSF8Q|TEV~o?r(|@iu2A z)uV*IO>X}F*duB^w`cGo{v|;synCy1(@&=yXE<^CQJcmAlP!F|1C)L|zISR*`6OXa zCz-ivu@jf5xJ}YeT5q4%5LCW#>66($GH?HcG1R_$yH90u<(Vlf82P@u*vxc*b&r(M zlA~&q<~DLx3*LL;DA;tiz}oBNwXTCQOFx(?1SzU~y7tz2+ilG{Q*Dh0%RiU|Ro=OM zx5V!4|7>sJwW^z<%Vy~cM`iAQcKC9OrZXRFp;tKB!be3s&7)hS73#^01HUzl4* zw;JEfed%>^wvneoG+)=k_Q!KmHvB%dYO#u<@S+PjheBSY$sL()armvO%;D@5Ri_(# z4NXVCEwABeNKayjxfipTQ-_;<@-NjqrwG1>ocGIQ|8)iIFAz9%)ynvJCke6+Mu2i!y1O*pc`h>jE zIa9l1ikG9)}EBj<=2sVC$%)zM?G9_{=0k*Ri>93p{lOG z?rpP_4pf-_y}>SE-j~C3JEz)BHTX2cKXU7C`!i-!6WH5!+no9RaoOUn;f<4JTQlz8 zQ(PpmVrS!qV=wbPmTC2gq^B(V=Dg*!=Yv?sn99$yF)yH?rmJ6{mZr_I;Vi zl%|>MFaFu~zD&jI5c%?3(XnOgHCH6}N^H(IihCNpY;nhr2W#9TKCEj_Th{SI=H~9} zzg8{zp(EgZ@cd(2#V`5WgpHUQ^gqNZ+!mUo=gkomx@G6&x|>{UMQt_;PIk+YzY@dV zu;2`12-kuo_Gcb^H<+M#l~+SEAwJH<=n8`_%jTWx;mMOOHRv%rINGW68ob%DIXq0< zU1K-nkFT2f&zLN~``msbVLo@RM|rW4YQm>25szPMJ}ZpwkakSesJ`rC{p7~-bzC?8 zX$p44eHZ=|mU%Cs-oATtmUHotWaQ|W}N=_sex-INti$JE9IyO@66b3 z5tx3rU0vBZMC`O`Yu&x+YY$HU&Gakvyz)twN#<8liaO?}q$sT`b%}N8=ZLuc?Q+?^ zuaECVpZf7PbK=3ZH)b$A=*XF}l{RQbYJ0gsC@t8PafmYi4BANjsx@to_cre}w;Xhgg?_%^R= z-!H>ix(3_Igmun2UO65(@0{|LnJW#iSFJBO60gM3Q+lEK60@`S0-Ym_KVsHCxYTy= zL*q1iy|P%L%-0vY=4s3}pL*S^W_8wt84HhpN#(jDm)E)QKBpOX%YRz9rDggH>4cya9_!oBr{2o{ufOd36>p)54FAg4*ziqR-@_`|w8?2& zsQ#^IUPXEbW*jN`B=aCPY5ojB=JwP}yo+kIg>xMhPqfFL`Ih3Iw$RE!&hx~TYaumk z6~4@^*ZZ>C_Re-loVa(RF`M*k!;4Yh{)H~T7jgB>la-nucRzhT;dRxKr!QI~Mc%8t zJQ?4Z_sz4^sq@Xz5_#MEb;o0Txwjl|F1hx9!_k%xKkK~yaD58iV_wI}RNHV^_xjpc znVHPm%Kr}6NhChr8#%$n_kp$Jt2=Wv`YU9tlb*BenLWpOTS3*Ck8eICd+zL#c~Lqc zHYl;PVxDEyJCDEp^Ha)W6IM1VN`}0C`h@-F#^Cfj=8rkq_pN$U!nfP{+~%8ZMivc* z8^2h0o203{-2BR9$#Kc@qK(%NSG(V85SRJ7?YH=fw^n8LF>QDG4FW9L+<#r#-=uh5 zu>9UTo|&O-mhKE6?r83u|AFlWU&g^boJrEGo)aVP9-GtO-FkZN&CErgCb~_rIjH-~ zNa(V>mWyk3Y=Glb*IUmn+}}UB>Sp?(x8~iR?Q0hvjOVdl&h4-6ToS^*TetlHduq+K znf7(@J^a6aeG1-Ez9@}D;^gP(2l|3FFV1p#+0S+q>yKjdkh8JNN%(%J=6M*uZY zYH#)GbJ;m(e*dR=JyxCTep#r$EuC#Gop#{(BVMVS>{)YMUs~T>b#w0DUGH_{-}N?> zJM9o$yLBz|0_L@QRL!Qnsk+ox-&B{SJb%Zx<9qMke&?{R(BKI})}>I5O~JRSSPe~b zK4rB;IzN#T{XA=t%l~_?-rm!)tF_qrO=5r9+w&zJw|yg4%;$0`zjS!^9QJhi{`YI| z#0mY|)T^d6bNRf}lTM_lKc6%6UP-P}Pig?igliWPY~m+XUzc^w3^^k8iP^l#<)-s7 zmQcf3J&#q~rm+oYO=2FspT2ur{zXyaTkjiE!ab&b63(@3=5P91aCq~Dt_OPsC$5!y zBr-)@l=1uS^Rf;L|6Nnf{k=y__{Fzx(S~zAMGA!OniasqI&XLM?stq+x@69rWc=oH ze$hHvFZtg_+pM^wJLb6l;aq(5_`9(6r;P%+WpV`A-_@Kpv41XmV8Y(i?c6V)=W=xY z>MQwu-)PtNZeg!aGrL~6-Ld6gzt-uuDc8w;g+4r|I?W$PAGG**;qH=X0oCWu$F_Yt zeg54|^T~3K$CM5U7MJLsQ2qQm;M5Bv`N&>_W9zO(NB2EkqjkObW%deTfrA^kH>|GO zZ?W1tXKCIuPx)iczpp-e8m>Hf$}NGy_db0KPI7TBZTDH1RGg|5ujY6B$iYiD7rqvi zoIX{BIdZv$T2}J$>g9{N1tl1-U!9&3VqoEJ@#*--8u{N(lUR4z?%Jv#xo5v(*K8Fh zZ^?aew-V)+9&It(zWhgx{O6;beU40Vsv+Mu@vzR{^H%d9_tE$}SG@1s{Im5}!>0OK zuE(c3-?Y3kp-G@2+H#6Xmtuaa?7p^`{ZjAC{t0fWS|;-GPNOK}gKHrM2dn1%@ZZPK9GFmM&GbRq zrp4epkHFHD8{!AHU8=1*eum-tYPV+9?Ya;6E+w#VCSE!`Q)T^&)o;xL#b15lnNePU z^Nmqsu-G=U=k2$OyxvTn>-}P(?fprsS2|b*H!HQ59(;V;$kNB8#B%w$+(ZYxV}BZs ze3SgVSn)IaF;R(}t!Ym`m#*jvWx9E8<;0t-Cr4O65v%r$oK|gZD*C~B{Xd=%jX4Y- zHcfeQAhAe4^Ml{L1@CrG`1Pdo9VhdP5--Km@=fop=Qtj_|3j?%bLOTk-&v;xrXIg} z@AH~7mQoTM=fqwU$bas_@@0`RpJ4Id9lZ|^bBWp%c*l1}-HDU>vF^kVvyFvQCv8vt zWZcL&-`n@4H|JgX-<2mU&LxMJOU#&1>aBYDaOB;8Gk;9|CeYI_{dMX&{uSwSlFs> zULEwPv2%A@%~jEwke_dxzj_|Dp7ib64fhjH438Flzs!-%9bPSZ&->Pdgi8x^Kh~-E zFg#-LocLPXaqpzSOnI(b%rd(+)+YbSeY`u3?Z)YN*Dp_a_8zvBDmZb-+r8)XuPvf# zN9Ig_c;nUWpGS-K-<51x-Lblf@7Nu+={&6xO{HozcV2s>u5fbX=5x9sKHEHcp%83R=3S~IbyKggNwTyJx{s=9CD8qc4>i|5Y$#OJv5rJo9? z`l?X(MHk%tSIeDiGW&V-)gCt66X~Zc_+KuIHeO^iEo_4Mu8rAW>C0duiIEQZ)y9_dtqUN$A#rS;>#BEa(|oKt+Zc9>vz)EZ*41XPQ1C{!|~r+ zY=Za-Pxzhk{C+wA;)gB5FSj}=e#@VhC(iub-76zR@aaj{ZEJ;!yf1~^X?8xLa^;0{ z-QIsYBKFo@4K-N%$@ASRJ>l?!XZM_|oBPH_k?p+G&)c)FPZLtFdRu%o<`z?8=mGyj z=N=tfXqDjn_`-=pJ5@haRIPALh`!#ed}{62*~Rz6>XzB|l$~8S~sl+E>NY68>lWEHkW`?^>%`bn?&Yw3w9lOsoD+kXhCwb@8600^^EDef+%r zXH;jlNizR2G%&HXNRWJ^$eZk-V4O2wV4k<3H~0Jl7V^m#rGxJ6iW06g+iknfNBrQ0 z`3D30F0MJUVY*ZkZ^ExGb_{Y=$&D&C1?7L&1RI^V$lQr*?)_)P|HMCcI1U^p?ZBXE6QT7V_w&LduChf$Or8MT-OVd{!5I6H4Oep28}&PV$i0 z+tL-L&BrS5WZt*$FN{fRFR^mXYjECkXw`;5rM>fO8jeg}e_qEp;XtmZZ?%-lf@^;d zdgwG58hF_}vA!xjr_O2i+|KCF37u`1W$&a{ESdUf{q8%GwmNF}dNLpNozV!K#Vk~D zf+^BrAIn}g_8hluMT?gGk`K}`igGyA&Gz=2t=-12a%ru9c|Fz@%F14-j{35r_POWQ z-o0`DH=f*g)n2i@f~EF-Mp#Bh1ZT%tcd3*@CF?~ykN3PtblY`LI;ps4;)$}D0;gpQ zbN|X#zu&TW%W7G+zJjXB+m7A#7CN_jYW8}ji7Z~GznRx){pEW1sO4~8`|r}c&}m9r z9u_~^w5ES`>~40JmWj7oWi{6GiB?OQiMwPt+-r00exd8yvU^3wsl(Swx4$)x4JcT* z_m%O^Ov}0rvp6?+M4Vo?ck&G03d7Ys$In;qj=sIn&gn9z(P7i`CnlSAoY9=tdsTAb z(WwuAD^JdR`ElBvwQp~(s$H$bP^&WEP^Dvg&(*bJr#zJR@*V$^F`KopQ6NPA{S$cw z#vX;t{t%JoeShkmiY9)&GVO15bBJS^Y=s&B)0^MR)EOp;9%kpcv|DBU=4C-UFKXO4 z^(NH*l=SWUnFm|${Q7+FU680^`h~m;RV6dmTwNmc;IOs7cYJQRa(?eQb=$SyUf=tt zv{NPQ>)~_rGyms>%|21pQo1AeANxkbB|)V(r^|mYt5xULn$5`HaP?llN#lyHb#6Sl zA4->ST2yNccd=-sfz@;K*&33Q-@Q|-J8QzbVEb1_ zy}gg7U0r)pR-Oe_Ckeys|lXGPWe@^-2XV15qo>(HoUz9TQ z^BXInwCBgSA67Y@&f_BR@n~;LmYR)%;rB1H7iO`{DCv~{#xwUApNQy`RkgXxyz=BX zwMD$WDZgpHSbm1NWXI2=3p#RC%y~)`W(3G@`hHGo*HN1~sipUKv0un5S4ln6%E=;k zCH3pnBXQfA_(by;dvDTmQa52)d3k5ej$Go`~Qsh_)po%cb-;H zoKs|Ud#<6fZC}6)vAiGoX}de_EcE2>mlVIep{PyCeB<|8!!PUJa0cD8eYfV$JDv)w zX%hb?M1~)}T(|aIB&XenH+2^pI9M~iKFlt&@_nNJXtth1#Jt>h*PBC@tokhc(f^*<${$yR)Doq?wG{dH;^X6M}m-E8bk!dHKMOhIR{C7R9J#;p+3&K3eqh^Sqx; z$4}kgaJ78y(rISBezFrdL)^|R^jjmUyyErdB{j|&oW=*&I#irk@-Jz*w}Q-{cN{Uy zg2}C?Ry_WwvwktpufHuj6FgH`UTSmZer#BKV-?%|42zRnmoywdXYg&$tv$_d8Tps2 zo@E$*tMYlrxzAZ=hoQOtYmK9cG7V-jp9}M^zn7k^CzrvCUE|VW10r9hpME9FS^l2E5&@&Aju_4 ztQY+BUbMmbz>1V6y()6sZGND{a^m}n&zve>lJ5NbHADTS z!^V(vn`Mi0O;{b8&Tu7_YMZ|n6PeJWfA-ppH|%CJc{W;jNdGKYbgx92bFSH;>Uj~L zvZn4y(0;Rd3+GYSVCUdHM}AJ9{QMQ%gkjIJ19OWk87PLwo`PgwXR4Y;AaJPtOTXej(O3(5BA$S5nG(Y9x)HjkmU;pM$C=fd~La%Kle zeZ1fPE;IPlM7eKux99P0%=rF5aS@w}U$E1@_H~c+_C5c>GSiUz)t+}ez8tf)mnW*d zzjx6|&pXEY+l)JM)fqdsy>2R5^DS1{rLV7_x!GXr#6`lN!&EfiE)ZQfopC{xMErZ@ z6@JY*K0Ec6ZC3o5x!^$o-z8Oa%y0;M z*p=s1Tr^!gQqNIqBnRQlsL-1!qm}#vIsb|M8Pcqvxm3Mc2=%_p1ExoxvPbX#aG{ z*8KP|_bJkw^-oUT9JOqEQ`26XoyS>k=G4f~QO;1{+M~8!dFc+<6TS!c=dgbZa(sB~ zg$MV8=#yWHi@#q>SE}0@zVhz!>rZMV1>Z96d?{^Wofu;pHi_rR*CRT&mrae-h%fHd z`pF*fYvvd0j0wV;^NU52FLoF0_{}NopEhmQ^Nm48wz_BXC0uWE-`HlfOr`zA#tcsT z4!x(VC#_jxvca6^fApHuhH3lMPnLvCm~l(U`0o0NsulOb0wbTin3lx%P@zCT`kL{z ziI<c7*(lJ}&o zVOH0()TwPh_a^)1DykX_b(GzEkahdb+x)hK>BR>MPi;4Tu%~DCTOk#uRo~68?P+2= z_TaDo-@{p7`x&OoPK)@x`^fv`?XOy;xA3`2{8cLn+WMmKji7Y83I z+~5{dN`&>tiF>N(WBJz|qHGBzg{~EI__x`2rIlUz#C1|zrQd+R^pbqo9j%=l3#$K| zd)K#Ua%YA%M{p@yc-w2n{U0}QG%|+lz3=IFMMza7HTHThgS-^q1NW0}IT`k>7IJZQ zZ}Yd@{(MQoMYc2itctsuH3V#8r|3I$mM}47Gcx?xHX$LJ+okC8x&n*#SV^bF%lOuu z((7BkcbdbSV>kNNZ`*Xf-qbz<)BO%Go8y_J}B;?)tP4_~+=KHEZU-m4EcdZH~OjZhlkV8F?pfMv)>F z^PSucIx9kFnLm4({ZeI(Sn@0WDPO9i*%qnpmDY~C@GUp9#%s~7Wt@%)(#xc>>^;<7 ze_U1m-=!9?%cPObu-WmX=8W*UlUuy|G9;ITi$kSnfubE90} z-q+%H&YLZc3qo%M=3F|oLF&8RHy^H>3-+$qW;e}Z{^Pdlb72mdjJyn+Gs;z;`AC(S z`$@~>Z@bXc*5LH^%?+D*wNG|GlbmU_SL~bg`I+8xo~@XWE9!Z;U+Toq1(^je_?Is# zJth33@1@67Kkj({)Rg@%D_Wi{(0{Wo=&|FY)TueEcU2~vtG-v#O0eVPR`Q5hK7BJU z%c+JH*Hh%*Wrx4YQBYg7?D_e!@W&4I>YGgu{VH5;rX!`+8PNNNW74-D=8KNDRon=7 zxqAKSyWW{?>#klCSY~!v*J+0R4D}7Kp3SX0^e*?cW{%bHg_<>EsvL3YF z&|Jsb(w?{8YVKx7p&YH-7FUiRzjD2A^84c-to7LMuRP+V#iua)-lhcRrijGVVw0!6 zI$l+AS$6%(uyv0gaJT-nx_$Vcp?a)%)0aI*yQS{VlUydbx~WV;`nkoV6;+GmehNvQ zlql0bmicw@{v%hm2v1u3V`*u|Q9h5(xsmx_8Go+Zn*7irr}5jWvL><5zbkJ4J0#Hl z(tnMt!y7$qFXjpBpFTU-)cSAo-F3!cwfiQ1{pL1F^;SsLZMK&WmU#VcsN_3%>EgoP z6UsBI_|Gz)%iCmo-1;LUL&}w(-Yj|UPN9!pz5Qk|yWaI$vd_Xf^FH~{pIX0@uj_@x z?fIP93zwVbH)pNO)cI9pa^l{G1K-$g3+!}~yT8dU>to%@qqEOAZ#vf085zhE!r|E& zX#4A>Gb6(cYsoJLM{7Gi-p<{j?vguU<#+887u^GkPB9ApiWwgZ7I5z@ zovzIP%&}(+2gBFJD=d6=XgrXyUdFJOX{|$cescV-U3aDP89hJqY{ahb_pSJ_oR2s4O^QUG8In+$4S}-R|CTWJ= z^SGWIN zHL}{@KYT6!dY4R>RIK8LR=Gk^`v=$Mnzgd+#@~FJ$F1l6KK<~Ia&dJ#mc0?5!W^btWl}4_m7r^s zt0NQi*MG~wmbOFZJ`~%CJv_8E?kD?GWtNFrt1D0UOf0;1LFi#fe7-%?o0Vx5OeVi7 ze!tF5Rf!6-x_Tm@W~zLRPwNtuONDLk^?t}Kn<4d$JKTul*?xQj_!y)yqrCxeP8+Q_)_OnCk&=7 z{FE%Jw>|sg`-dl*^Db`NKT(?{Bx355kD<>5{<2?K7$7svSar7f&-fbup!FdQ0vkKi zVojR=AK-HRBqs4hZ&uFYc=mM?R@T#Nc0@nh8}2jn+LqVGu0=*Z%dh$cvEKSpdLXpB z$<=4o<9`Bodw#3*&S_lLCX%^GuEAM*-r_Y^O&iS?+Mig)$>$_<<$u5E6FKu42fUp0 zRi+vpeaooRW$D(E;eKfA;!q`zgk3K)pZ%=0e8co@+MaS*$%$LmwUkUT=-WDXR`iWu z9*Oho>UKDN7Mt7=DztCLyYx!)9qF3qS6o~6SMWD;!jJoGKe@iS{m5GL$2%u`$H}BR zyVKP(ly)+1GxhtVcRTO%?fplCjyP` z_=JVnk0*=&m%OT4^!%^HveSh-|4q*^+VrF)FlExl=P}#*eDhiiR&8)K?+R9QVSM)7 zFjzVI&8+)!J9yGBoKZMzYA(6U>-PyA@kR3%@%5@p3p~90bjq@pYVPd^y&s0iT;w#h ze;u|%W<}3t{+SgMzEo*wi##n^@ng!{^5{JY8x=m~&v0G5+IDJtJ9FE{=Ig6h%w&q~ zQs6q0yfnqK^7@sRFJ?Ve+PwI%(TB(83w`|>#4CL2`?fWPO57}X+`mx!^rr_&`MG{) zLMx`OJ#|7`Qn9Y(P#HJl{&Q7|(lh&}%qjZwrNr;l?yz;=`*R;nSu7f8y7_aMg5uFV z<$Hwk)Yaal3P_#)VYB@B+^sdcjpLp+>}WGiJ#mg}#R_Ai8`HLJV|%63Fz-fC`p;FH z>+b#4UeCS0OSZbhP@eDcVre6`+QmAr^P{^}7HEDfnjv)bvA}t)qTIHWf3e#vA}-wx zoxW`^qnu8`H_6Z+r~9>6GGB0OtzW0);&eYE<>BIKkNIcbKHR1nVi^7HU;o_6r>c7L z0!|#eaQSiVo9*#u|Fub4D;~M}r<5xoNJUQRc3PQmoGy4oUq z8~Q}O535Rj<0`uuBEFrnQnw=gLgplfxy5b%EX5wkbfduW zpUK6r;&a~~NMAZ@x9-64?CY~KTh}aFu}(gQJ*HJO^qL1N7thZHe{ZDkf0-cv`Bv=h zwtwncoY5Dg&!0HFtnDA;_DSI0huTeqniUlAe!#ZNh8^uPsMeKNkPcQ#LK@QVEc|;%zNB<+fzkvPoN}N)~j^ zUnsQvos>Y@(kJYJDsnq!Za8CgLG=fBrE^*6Bfr3g8# zH9MzVpW81!>1$!kE4di{i1q5qdwQP;s05~pH@ROAJ|V@odG*023#R%V5qo2JZrbP^ z=@B=xTrDWUp(a}$SFo#Wb5orDTZiAS&NefrC*FJKGof7Kp1`K(*OVtcOiR!2vq`-8 zLHcp=)2>_XZWZ5)xpSxIw#~|AkZ#;MWlwvyJn!WLop+fRt}3rxwV<{jNs-+)>*}v6 z!?a%-@>AIwf^N#T3wvcvEtn>C=6iOKphBhZtlZCgBDl8mir7f)S>!(>vB1#k!Y#g# z-go7n*I6e|^2kwM@J;!XO6%&|+lq`>o~F1Snse^h>{|~bY%U!8bLPKw7z_JrEB<@ZZN96_wh{NSaVz>;IxQx=C{vR+2tyR-e3#q2C=!jvO9_a>e0iImeW+`Hz8&rim_qK+SJ0d7l!oY(t_@Y|OkE16Iz zrO|P(?(R&j=1Vroe(u`W_jMKb&*>8S+nL?d_W!W`6?CG! zlbuEKOF`$V*1KWi55Bx!EH_6_?R19YrJ7|`x3-tB+|c1E^T&*1+NRwv7J8f%O2`3U(ZP}Y7+AeI$IiIv=-P>7`3{gc-7aac=vFVtrJL5k2I}%}& zw)DR3P0@}pQ4lX<=2eQ)dXRZSgXiVOPphBRzkRB8CzScogl*T_Zm4f6{`vd)(G}ZP zxAGsHvVO;0TmQVbYJwa0e`Dxz(UNTxn&;{-Ez~cn*0CY%vB&)#iv+fmZ{7CM!uIaM zusP?}W+^XPk*B!wZ!!xb3%}RQP1gj!&F^by@h_0mo$uoE{Oa8k>1o}ZTi9*~$J|Lc z`tgO(qK6fc=HV9K*uTl|F;I6ty{>HU&Ynv__sWv;j+J}FJ8$ys+~k%~X1eB&N{S$_ z^>g#hea?Y9Ev^|fIK;n@l3451-8l8FcmvlnuF9XgVmhav4xLkAviyznBi_=7a=(o{kG5{v zQfetNwP&x=?6UvIbpOP>%Uar^!ez$w_D)XjW!Z?OZ(lTiTv0t$Ac5PaWW8YWO}p3Y@9RySZ8+7pd;f-jFS>6ovpI@C zIVWm)Y0tDCi=EX!Eh2BPe|`1z+fb%PWgg$Qw%q;NKNqJh>yW5E)RQsqN${!tmmaTQ z9-051%k8qBY{y&mIL*nLZHAtY9__G>_F2@W8z=EI`+usa@7r&WGb@(MbJUgo&pP?S zq19HU!f1P6vBn23?W%YC-|5Bg`@HJFf?&^2ZD)Rs@L-yM5e#PIFm`a`*Lo8Pu~ zPVGq(j^et{Kf~dIa7M@T>nW#dw}0b*Z>ZQMabCew`qiGdpJp+X70hqBdOhQRVp3@M z?u!pC8YcE+zMiVj__6;yr*oOdI=v(@>(-u`-EZ$(s6O~UljB&GE$gcneEFtc#~&}6 zsB_}jq_UmuhgIsAsrlU#X>aZLb>{Z1ezEW$%m+6LRtqQ|b)9&_hLJUtsVKPGIBbsN zU;pF9T09Y{mi_IwKA)Q&;N*8e#j)bmx$-$&N4DmcE}HW(@s!H);-vM8lH2X`-pR$f zP4(Dg?AdpA;(g8#+4=UY!5`%H8j6n!XNulmv2|Wd=I@Q`kGmCR6wGO2i8kY93zp|9 zObUpp-FxKnk)0d8lFFTCiIf+=U6uH%)x)cCPi1ebatF(vkWcqs1hq(1TvKSjrW~L- zy|THq#-&)8p(yt4k~2J<5+ZfAccfOc1eYW*y*Oo}GkvkV%EY_Xhr}1LDRHc2c(t$K zgV14hg}g~6(?wzx+Um-K7!R+u{FN0bwDJ4uz_*N3P8B8YEGwIoa8u;%m8`G*3lvX< z{9`+EVA8zs-8+Azw{VZqREqaun46Gt==w(EX$%&bJmaT$_LsOEcyNDYoL*63E%6GRf=|dy>~4N<>R&SFXv&F|~Ym^~_lZPIA0p@!WB98|wnzZNIgjn=>4KVs$Jha;m{Y z?Zdw-Go-HW3%E6}-}=bA6Hd<`?#$?qeLic|swkO9>1_>jYGdcMh)%e6(DP1h$CULx zYl|ktJ-!jN^NuaQx!{g-O-Vh+iYANM<1Vi;yFRnnSw)7{)a@vn~5-~BG#r{q*V+}*h$uv+O(-YxFFId7M9d>480 ze}cy3C8AFmzie7Px#HGGQPZHU{dK9oobP)F1x$#su$mqya=h9}^6x~)(C|sop@;gj zQ!T4&ZGP|5P+K3#8@azSjDKa#O08;BKLSrB&m_xo!e(MtW?oXfATZ_QBs^YCf1hyB5TrFZ;( zuTjYe+x6tmN%cBTvEXzWxoL9_)NN~w=eOoL*8CwuZ^Qe0a;kPZGx8?0?0U$k#HD|7 z=3xy6f%!Ez#P3%wJ;*<;{g2fBV@r>4|M+i_BfdZ)Zu$vRzD2@Hd3X1+-Z(L1>)IuA zABO*o(hr^Rs_0Jd*$uvhe+dG_*EotBBds<%08;^(jT+-VRNAk2I8hX0j+rR`H5FW-J@;mxG?mx?Ai zSFknvS{!@6_iN2=sg;UFBFQ0~cLPHTX52i!CPVTjKa+s`lrMTlUq1U>Ey-V>Qr@y> zMNPqb7ki$1J@!7C>F>XsEDzdKz?PD1T2@!Xta^VRV_e3pQ_OL_IaPf} zC`3;6OXnGhCoy{>q7U!?W~H25)^uYF(-y9OI*RE=!HVKb*4*RW>%2piC3nM_BVTT? zy*uo?CTCB>nsePg%r{tfw=vD(c>HOqWP*jA-=(d=bzB*r-m)B*ob_x&QNuF%FUkSR zKh6m*x_@oKrBz3JTpWdOJuW}JeJl4Zg@oAK4{|iWG0SYwxU#a0ZK?1F-NV1PbhcgF z`na4q>-YPjR}Lrq^j-%T9rC~E>Qbqk88YwfCN=Asy_&v!d`aSVS*>NQDPe-HC%sgw zRo~a--ZHopoLK)o>Y!K1xeYI!@BXdxEq8)r*i%a?4~9(=&Z@f%0Pj-A$P}WUO z>9bjL;zKURdWkA{brx>lubgt?hIHp6J=XKqM<3mi488o8>+_3mLcxVs6PhnA%khm^ zWYe7|6nky!^oJc^lDDh8Ke)=1DgB&AE6?VA`;}ie7AF*GD&`zdNWZ^rtMC-Ji1n4f z`HOVUaoD}tct!g6h1k5Rd{dzxSGlzI?|av?O?Fbo(~5Jt3c_1g2`!$nCni2^YSr5> zLWg?3cxJ77#V+$Z-h+iT=CUE*I`g1wrB)Xvgg(BmIO91-@BdgyFJqRbd2fHFM%GSb zS9Ep~>z%GztvyA`-~vBGXKa7&?v|?GSKg$w++E1{J6iFW%EgC&Lf*|`(yzH77%}~Z z*W2Cp*}HA>=bJK~SmD|9>E7JMx#5X|GpDH7Y%Pr!Qi@DvQ?fi(8K)h$F7>u@NXjPT z2|VvwY^%54cr3AC%cgsL2CvIh4$9iOpFh6!!~Z)k7xD0WHm*H$*|x(eq|t3U)1$9a z;=X+MV%1$d;?*5io-6V%esyF9r#@Hm_2n`zt`uZ#ys!Ir*<7Ku+ukw-d2AH+Uzo?#U;l>Gen3jg$% zwyFB7+ATVc(v)C_o^vDSE}`Nzkl3wC)T}LP+V8wbq$Yo)!Ru|kfFDNT*{<*#G?p@I+=2@O|o*$e2w*8%mUHb1^D2o&wp4tIO;q#{z$> z*DCm(iH*wN_n0AfQ90whMN6I^-cx+KW3#(WQ*`#{wu1Dec73mVpH7|%k+_%A=JVv( z`rW&i`wA5~%-AZ__{Vue(x!B0AOy%1-G$GSB~bl2bV4Ov-oBv*Zb zgs;7;wAtb{%;qyo!EpbPtUtP%LpPS}}S$KWWdQ*`V8g^&nbuB~2nw$Q+ z>dd$lSb1L;+NISpDCtEzItn!Yb9?>v!%OMLg${0SXFl9=uQt51C{WH?@Ot~t&zJle z<^)vUinws1=^Nj+t0CLAJ#U$xKHxpEB9wCO2&uSzwtNB zTk6KLKq8!7`m}Uhw7|o)GK`P5e7b!0hjKCRskoqtfA=^Zvf-=P5GLba%kF;f@PnCY z_YYsb^)z#D$=rMi?n!H}Ehevsu)Kc9UEJmn+qm&HzvRtaD&tyB4PrT_b%_iyqWB_2JjE1f1* z+HgrHJ$q91ZZCrm5ecsrAK1A4P^?N!-=&}Hf6}{8tT$pjW@cR7f#l?XyWA?bM zRhpVo>%#Jm{au%|)x|b-H{%}#S{(=bj3t)URXXUuJGhSP;^A+dDQB*}o$yx3W1_~E zcfW25xCl(`wKJSnu_DOw;$7X>Du%ZWHy-AY=@Wdmk3(PKBK!1fQC>!Gd_MLZk6E{8 z>6Es0-|zXZNXj;lzT~6$v#{%P+pNVMyxsCvZy1kg)e248`nb4x%9s4OhTS!JJd+BK zsGOH}&U9gsjPy~|6Rb#*`^Q<)mGW9f`0{T4n_cotds77-XB)62EPk|Z+G%_B>4ARt zLK2-f#q8@}$D_XL`eKGPfs8Se_BQs_G%5>gEP5L-X|?wO*LeS~=iBzjTLnK-sEK!< zabWRB>mWt8c+Uf+i60JnG%(zYZ8;F_DRoTkZolBNy-M3A?_+xI;ju-RXP(b}h6@aJ z)9YO}8?=>Xv;10+b=c$1@tFn9+rQnfJ}m0WWiz$IU*VlaR_BtX2acA-Y}aO-Tp7AA zN5g-~LE8tHwrPCwIv}`Uvxc=Fds6uVeXFo*-phOE@4h#&srb={eGmI;*1L1P*>vbo z|Hu007dLv8c=0T#+;_D`O>l}tH8Z~v>YAKYbLs;6>7^@Fj^AN!xr zj)*+xjkvqy-+k{e!TU|0cIxsQ{AKC%&p5lq@^j;(cF}VClF#$XMH04st7g&a@|UWd zd@b*5wDP^gOs?-xyMyA&2W@3sGYV$({ww;s$jL_|`46vh?7`x* zUf(Ym2F>cYwIO|Z!uq#)P5)XCg)f@?^_Rck(SnK1Q>?C9PO#Na+dc7O#o}MbUfg*; zU0pGYz3Y(NFG2Z)uDfO%&RvqfxHWv|83x;ypk>KMw`cB|v%gR#xic^Gys+n~v~5Rt zp0z{=KYBL1|H8HnVaw-n7ad%G!Zzq$yUV`B*Rh?_hj%APpY^=*I4RtES?)oGNe6E^ z<$h?$`0YMb&DhQGe)fvPtDkiu)h7ZINdy~`BC?a_f4DDy?ec4QJ3nTA3Z+b6qeQ>+rDl60tH*;l6OMtd|y@w zt>FIMm%EMqsFz@=+`K#$pOza%hns^wsQf->FY@2(l*?&8-3^rwR3?a;tlVIkTdfxz z@bx3V$*EP&y2rfAShu=fJk!az&Z6+{WyfnvYHxXz%$T^-lPATmMbW5ArhoNaR@IOj zJi^L(dwHj%tbY>J`e5yYP?e;Xju7jjU7BBC_?%nK#gwgTq!2WBpANrE(nqNaRs6e; zTd(@$HesPLpFQ9Hn73y4{N{f;_U~zb*R{R1A?J2TDKVYA%C(7tzAzHIDX4*sA1u*){t1g^NqmP12Sqc zZkyMvow7##SU^sN!N>5YUgujLe|w@bf4={xx^4Qe%6ue`9NzXV@km=@?)Jt@C!`%@ z+5~G{&)%1NowB!FsI9Mg>Y8P@UX@utDC#;?*ZSbF_alY_GhC*G9-sW=-n*aEltc}3 z+bm7Yvzb4czqdG!3~ojjUg8-r2=`HX$;3yPG^~*ro4z9u6Pgb7+2i)hDvu z?SrGZ&i;96w|@U)WAo*kqjzTQ`WUXGPuDaioM~UmxwP(_myC0T%c~lj%>6*o>EX;g#R>oz^vBPzT zf7kPKIbCS*yx0^TE_2hW>Hb!>&Lv@i=bp8c z*<>u#`TSF5{V5is&kPa~uFP}Q-!ECf7q33$;G5icjY`!4!I2Zs*D&9kdpi13f!M@I z{#_b7X4XtfXjV=aQ@dR0o$Asmcr{aW*YA7pv^@oWNh>Yf=C}T|w0BD2>1o_nev0L9 zmM>JAdh)#KPrkKEYj@u~r>}pxZj#63<(KBHvC^CE!BW=GY{0hDn4|9BLamKk=R7dK zx!_enq~+PQQM;TLA8&eU{xnD-AWZDsOST91{!Mwae9BbDM%7(WlYY&9k^4z_+MAiO z4RTV4IB!3B&cVOn#15Z4f!z;N&z*T$&KYv0Sm~o^hjYnX_TU(|b9;nd&J>kR+sS(; zW6{mvz?9UL=j@)!Y6P*JsD8D!`_xHxFA2T=%c7ZESHFAf%bVCOcg)7jz2xEQz!g_7 zhB+zyI3WD?SKo$@n%{hFe^2UhD%oisp7LygTf^qJmcO61cuZ4PP)^kOeSxuk%DuU< zA9*;RX8kQQUHO>xg@2sTV(o?7k|!KIa@O{V&({eOw)^sd2MmUg$Ffp$MQHnnszq&+*;Re~Zfr@8Vuk;5^~Z@uSa{E|1x2HQ~)6!!30?l?0WPKWQoMa?xFQ(ZN~dN@#a~ zx2xW_Z>t5PU84+S&TV|hST4I;yXx~o5gB`SjrUV?xR)LI$T)S^!LUYQgWJlJOxEpN z8zOKfUy5^Rkpi3)gxp*Di$pL);y?)zN4gQ>seY!6$<%9x*DRsJsubp9E+#l<(@e^JEd3Q#`+;=UhEd&IJs)?r5jz{)*&qZB8y};uC8au$X{#s|A^I+9}{AGPHp;H7RHj= zwlMnTf^(@Yx?%QhVUJGzO}g=m<=KI6^7C(NCMLXmdzwfJGz4Ckk@6>=aN zyT09ZOIJe5Oy;w-0%`l0QhGW%cRpCPVETqV(`MQ=HyiVA{r6DVVUO#qh=a-Ud(XS- zml))$Y&H0OM5NNNo--^>V9NbN-0yyUnk7=Wd}@A6kHH&xzr?p|I>Ve;>^T;%bd*p3 ze{aR{2*Znaf3_d_R(r|)k9t$&Ieop0`kTs&{SJTI|Afg|cCS-PsB5tcXM2dLfF`5L3z-MY zE9CbG+FzKO+ir43{YPxvd8b<+Ic}zRZ4mqMbd$kp{>9EaHVa$yEnMC7|B`z_q0^SH zt@a|}m8Hwns?O?MvRvC%l*V|wyLd5|S8U2uqq-ZSJ&O*w@GUpc3*7d@n#m>R^IX4J zJN^=sE%dE_{i6-eQIucGepil*cveJg$U<&?H8x##^-t4sNZuqcD^8e?%VZT%XnOFt!01n zWkPkEZt1NH7e!h-(^UfhbiCv*|FQh(;iyBB_rv_|O}g>;^Sw`R@456WT%L3M;kKYQ z#;OlrFHPHMnl^W%1c&1ax%21A7wHp4p1&2EwJ=QPiq?kgsB`XCTpzw2d9|oT(tl=o(p;VV zYlR=>H`My}S8TuEyG?ed^{Go=^cl9XFG-DCV|C1#|4Qk`^2vJbCN)bfYM)LZAZVgzt2lNG)+8_8F9r6+pFxmaJgc4+3Ke`hTsJEvGA|9>FW}Ocd`hx@0y~uvgH5G zDHl_$^>;LuxHNp3@LnnZON$K4+Z7r5mA4pY2M8~n@<3(7K9eg?A|l$Z%<1pG+kR(@ z`mAq!fju>XjRpQ}jk#5q?O!vto($8T8}hiZV4Llebz%Vv*n0wl9xvLR*Y#<3q{-2o za&39$+B+vWJ-=0Mta;9terfVa-!!3sTjBqB-D5VYZX>mpwO1pM{C^ zv^&o_t;)an$m53jmW{EW(k>s_XV|$m?V9ZCpJs9H<`t`&dDy(~Yax_;E`<%P2;rjOIr{1(Lb51cy?`#jAtd!EtZe`)`v1q+_Wz&u( z$s>1?m16j{zWvC$we!>S)qH*xVZ62bc4f5uKJl)#VaDaX`~P|FwW6E;Oal@zb|;fgh>Z)R7~$=$?ROy@V8%hg`(Rd)(Wk^(QZ$!oGiJuV!d7N z$`dPcUpw77z0^)~)G?;@Io6&ZN=gTQbKN)3SJN z%01FMc`mZNfE9Cc4-A*UdZ`sGKpq)K8b) z`Ndh!su%CqOMkswx+T58t5#qOH%HgrfTlSuW{K@H?kc*>F6-Ov2lrKMe6JN@_cH z;?|?9+CQfYFU?|j__HQB@4ig2sf*0E?1xh$-m7NYw!2$#aTxy1I`tsr8cX-R&)nzD zzcYR)-lxcPvdpDHKq@3mLwUJ*sz~t738#a_{{4D(i}%%CLl5nkoh$M_tZ#T0%sksI z;P00#Nq^SaE>35E{CW0|LFc%S<&4WFzu5n&m`-)owrO1SD~j_D+iHKdc{k@jT>4Y$ zjMj!MA0dq&;(aDFH%ra6-oAJHf2PVqJFYQDtus9D|L)xMg|Ru$S+x|SdskVfsZKt4 zRzM_W*Y^ChhpkrxSEpV2Jb8Dr%^UTkE8GT-#_a!}E;-<0sMGLpm)vI!opoWN(@K4Q z{(7?RN%pZDSMJZuX?|I3VC35^)jYQ|^p4cuq~$tlo?EAWIWbptWlr2F;fr>i6&@nz zPQO2FWAee>{e$T~i|hY9UD#jG`jxzO&*rKRlUcVUrX-k)e|q%)%BH)nWkm^$AE;PMM04|Vmv9orIk?zN)NPQ%$7Pv89J z`e*Xrqq0Vl57RzYK0X~a&*j8D#zxzTjXqm%JAPxkSAF}HKn7DB|C_9%zCZRT_+&~g zU%0g?aIwR8mY9ieIWE@KbB1U0Y}1UG%493X|MitX(c9JYZZNsscb3s<{jy#9#j$vs z=DL}s;(b3|eLvrn;lG}F*>wh&R#B|w%_orwYq%#{*;lglzJGAG^}xothvpyMVZDVb z!2j8ksR?}BzfM%wY2EayETW`ebR! ze|IifAind|+$VRJ@i+)h-gexnoY#);+~W_so!_t8Wml#A>vvW8ey**W?1e|etha1d zefq;|HN%>Wy)(F0=iYeh@$U5gb>+EXMrMbjlUIAOu{<~>sgbZov*hZs{B^Ej$~rtX zru~v8A}77)GsX()8Gcjz&#nEweZu)$69TT;>@N~;S@^%jb^fmm7xn3?vwD30>2vz< z{EbNqEm+hHO9aZ5*`-TqIfSueCr>iJOhdzQsUUhCEeU(0!g z_9_XfYoD7b^8E3&V|!{#h0TLgCUB%(>6Kmc_Ev-10;l)`YD|-TrpW)C>8>r7aQCex z+myNmdM(RunM`Aur=qE{+0sLC(f<=aR99H_XDIdrT=xrk^J=E(#>z?Re-|(>4%oil zu&SwGqNfJO(|g7C$ClaLS?$xfvSF_9+su!~l?zy=oIJMUUfi`O-Qp+reiP^@Re5bD z+hE_oC%(6C@lG?gnZ3VrCKp~Y+$pq*Lumf@HY2IX=$Ve;XVn!}KP{KnohW4K(Quae zRjqvQ+vkq|J<|?c`n+kH%Tae%tyj0sHCsINHuv4lbYMY%;-MAAy9EzuDV}}6XuTy@ z!@5^_jnem5#oYgyCw6$4ZgOea_HFSGm3>$4*~g?`4Nv0{?3%ye-PwizR&~6)?)^>J zF~0FqaG5KMi81$5534ru&4S^W3cKw#qks`Lz5?qU?+;oYoo;>4-^NKB9-x<@k zA9{K!PeOoWamBsl)Px81tF7*DUVr)Hy|XL)(>PLg8t~7ua8CKw5dKx7Ztt0yv-0NV zTU=Q#Q`@MZy8Ot^=mRnBX}wPb`)|hoah3^r=)1+2k9X$n`#Epd_%2sCSCw4uf8+KB z(c5ZuZ8{X=hiZnO?bHXhWy?Qs{?KxJ{~aXMtOgr$>oj@x2`_( ze(kk<`rB-aiF$_Lk{!E!uHMb%l9x&qTCr53x{71td#j#%Q{8grGc=!E?_$FC=0c*B zE>HRFAV$VR2TVWQDEe`CT~Nplwh&9tl@F|IPF>3=EGwva_Aj)s*5Y}>uS1Q(51Dt| z7BgIAtgV`uSYxhp@mAy3xA(uwPJVd6h)wg|#8pY`dv5PN`!REJja2o|(>v@=h&6fz zh80PA<@||a{3;i?Q-L*ly*zq*jHSwK2I-|l9Gt2^5#GE_kpR0xEA+ewq4meHOcnwNBQ|yd_T)6;kCx~`pTBq zGv?`amsIzeywy6w=f;0j{q2#C(o54f`t9o8z`ga#%FqMfZEU-f_w7^OP`zf2`iYGP zcKBV5Ez6m_xg$*E?oF=4dj*ebFdg_&ns0u)`O~UdZx?k$FYErgvnN(Cu6u9QZAYU7 z$vUA+Z|wWeuecWdtm^o&gELtxPn&r>S|IRF=tA%f$8f1~p$TdGGkJeb)HZ*|v1h?` z{+q0?71yZzVGM)zOTFGKINa}NatxhIu9SKQ5{a_7l*YYRV#Z%1I+RPRETPDQEwCz@OUVP>3-6gq7-yL*5DQ(Vv zcko8jneJZ^(}H*Wnjc!i`B*pXc0v06^rDkyu^LPN&als{h{$C+mu7hT@i*n|-nJ`4 zE?RP?%d}{|6X5>x#&hzt8MdurW<5;%f7E+b{>l6KY4^=4*WZhc{wXV+7e3`AAe*qM z|LqjvB)i5eqe;@LHn!U3oFWMyJhsU2O7bVExd{H~RXXf_YoXSPX%l@9maKTLd4ucH z@4$@<*JY?!H2lrl9nlcT@um68${n*$XRK;9*~t9*p|Z}8759pbCv2MZc=5ZpA1+JB z)!)$R`k-~zQSgdDFvj~cWJ#)=c&E5FTyFIEhYZ*=U=7{YhBl={C;`vv4|o=xs`I5?(M*?F1dJB#e!(b z<7+L`x~7C#MHeP*)i!;8{Jhz_d3O&yEScmqTm1HvEexBkf4Huo{Nk$ap>MO2emNZa z^!6FDLRua zw2H3Wd9Nbn8*yaGhVPrcn;Xr{Ou9UO4u4$9?u6|ppR`^%*svx2c)WqN&lx}MrVCF# zew=e*X8MMI-~Uxicq-?7Pqa<<@s7RI^_bER#r|Mewvp2L%N9yQCZEfIOgcsYV8M_O~+>RYelWLsKx1#Pr@ zmHPWCmz&8MfQTXB0Y?-sL9@t-uGhx*-W=FPas)_dWFPuQ+yJ#rgd7oWW# zziEA0XnnxGbj#I-Pj>K$`Fbq!dHLmb&5q_>J^!_ShWvD1@@L%I!Gm^9eLRAF#=Y7?#kIlU&9P_~Yfz%Q02{tiT%%*YH-rn~>YBzVl z38fUv%u|8E+W&vwTgQ0W<3fbd8;kz<{M_YJw@4L8w@hEl6Xg+XT)=cV;`rtIn73Tb zD))T4W-dB-FH0+6ok7nA>oa`2d<@EtUErC(5@OrAVRN(QyF;vP?gcH29!39;G%c}G zIN7nmIq%u$cRV|iS0q>`b$vQ1_BC4i<-Negwha-t;tX0=+KW5Ou&^=Pt0}!LtvUT* zqS7wj!1OQeYaUDIpENaW*n4cB+$NWkvJuq``Amy7uW6hMv**@W5ykM#!C0ZT=B|v< zi9hS(nq=&^@OkX_{=KsL@Ff0k)Bm4%c`kr0*Yp_MExY9ZA0og0=fC%F|3^O2=bb9M zu&6w$FbTah41GfUwggj?`Lb;Zu+(`W5Lw;>5tDg+UlEp^v_=Z=lFu98p6V{ z>9u!cIR(q*R{i~;vFpca-M(Db4>|IT`~9a+dXxTkQm4YF>k68NcIG=?+gO;j-cXts zcxUGSval^_2Fk$`!&ggnb1Zt3!oK&_<7r<~cN)~Z5MRKNAU4ZS@WK*)!?iL8_w;Sq zsQ+d1)MpnCS$UPnOjCUCF8S|#T*IgJPrv_jRr|8I$YzUgO{T6<<`e3mXs}=W*ZvUw{*STD|`Rks>yx%gft{wd( zAF*Oe;TyR*xsO(T{VKCi>1MEt?Mq#~sBcSFs~FsUS<$y``nA^;VMki>JTtqkQKSqxsxixX_v?;zV5yXNVJe;aLb zMEJATUjG!DuQ~PMrH0`jb593sJ?DFZGYGjjS-No|zv?D|H z;#`GOKMUR!$E_)vyCmoDrmMC$FSXj zPU$gQ9h_9o2sl)nesEgto-9wcC~xws`{isd4_+}gy>Rtzx8M6ydeW{EmNkkDGGX~& z?NizOLw*PDJNDi`cT?*2FLAkwJ3e5-VMEz+*!wyZx`6yym@YkuyIF1;RaQ? z_5Wo>8Z$(5Bbq<-ziyx2QfeMldV|^b@b@&gO`%uz>l`~6 zrLdNbrzKnPyrJJLHR09uEBA5r8?c0I*m$b&qp(A82zQ+6q-)cTI%ZDW*7mgj)SlY; zw^Guc$yP31Vlw5Qyk^R|)h^E*6kJ-2m|qD+{cjIqTPMGg=V|rF{~{dMr)dX!&)oU( z*OVQ64Bs@rXvDKC{nJ$m-ot!6VS)T&JHI7Q|GKPt;CM$ebX)VYe2xm%)v{_8|6eVS z-@v;hn&rc6`|hwmo!lMYS=_ZNyj5!(XH|cV=6-geW0#)xuLsLLBxQ0F(h9#F9~Do0yuj;WuV zx;IMvKHpx}eOf{556Cs?EN?H&n_7O8QwUo$ro3SoQN_&ezP47T5I;s^s5J z4WH)uE`GN5YQsv0FwPL3&sR1+zk2JfW8JKoJhdL-A6NBhSu8r_kiF@TqHo)LhYtPs znkCoPuU?qDTk5S9&-tTgz+A@9)0mD(0Vb z*I?$_QWf{DaRG1rJ9y`@op`vv;GWRY7dKsZ91dDx8_>5wZu>Lo=;H-zdF}*-S*Tnt zIXX-2#;!lH=T4W(Sg7tvs&vnAPSe{x z8b3<&}T`#U3QqsR4gON#a66H?Ut0;8uOsgy|Max?7Z1dcz9pk zHQQT4K4){<#H=f^Pt*0R1zKF(dcK7(_VMdKyY_xpN_WcT7*~J@jVBrXIX3Oh*_u1$Pfyb%%k!VF{n`=3^J4bjP-|y~T^HiTUoTo4 z)f;eqrmoNfC${`2DTj{zuFd{d^VMnJw+mbPn`W$&TiJT~#pF;1-!79=rZ<_blCpUi z8umPk|L1hBpi(jVVzZ3THx7-jT@z38hU?4h_?sfk@liFliQ~(Ash^*JJwLtnp>gIC z*Bi%0#f)e2an4w^psn)0X^~^CqXhrginIN4xAv6TF$UiFH}hem-W9FAJ$&D%bTXv> z+uCasqgmFn(RsqLP5s?hZ?~VF(8988fk5#3sF`*qdrT$cC$5j2_*s@sK`AV`dR^r9 z__b`2kD?ddHh%qKvs^?iphRe8XvWEkk()*8lyNfnfRR7ejxZ@X+^<6~cQ|PisY%gbAQPr0EW@UC@=Z7RV z-A~7l=EcvF*vH!FEBd1{wkJVJBG=@3(T7*|MzIR(r=}T4-Flq0t!qy_@8P(kyRWF+ zIlIs9QJ0XaYlP(gD<@7ZW^O1s@Ne_ytjF6fE4G3??H z;JtK!ukYuY+IKPeCV4Zv1a7a*mg$)CXhM`{!>o796)2Yzd zW2>G_T@^K#)5~Jl$Bg>*t+K(D(cIDEUO96U*SKXKIpZ^J<(7}v_innaxnRfHKX-3B zEiPDU&CBRAA?u3F-VMU1*s~P=9DVwBnHxh)N~+~)$KNK0uI)9wvUc%4ZEKNp%XzGS zNYtf&d46>Hshw35%-Re+K9<=XQNOTXgtIsA$?vTZvnO5STJU<^xARRc!8H$7d{8wy z?duiMp=&4KynMC%ni=~&>qX``Gc(=}|FTlQ?2p}xfC$~0chZ)pd&?Nd%u-zx_1<1E zY5n$ND`EmtbSIUr^{?t#!IzMtxTE+&Z|H=lpC2XkbskUl`E~LhTi^$O%Qp+X?irmA zDLL`rfrjNRDMM!6LpM)85s~`(zpkYACA_xH~kIkUWICJv<}w)C6#jQK<~ZRhK*+8Py0{#S$Xkn%)0a5 z?yuaLo8Q>|-@iP>)O4|%ZOaw;*aN>VzLPu=<|gXJa_#S~0;yJ;(l1xbuDNe`mz5Ia z-f7W(<#Ol4Kl==m@?TYRR9v_iaL-Hp*{#bbKF1fP7ooIlg<1jFWYm!JOayZScBHTK*ZJLb#p_wIeMHGg~b z;Zw=K#ZuyzJb!K2*Yl)XobULL56QyP%pH!mGd@@B>3X@zbMd>WSL93_*RO78bqRZ% z{fygs5_6YYXX_EyEpo4~Z++6gzav6Ac^%hnkyz(hai-T4L)oXCzI1I>$A!-5MccAg z=Rbe_*LFVZG>LOw=bo)x|5a|jZj<0n|7-5w_Ol&2kjKM5EjM%Fl;XYe(~sZCTs=vC z&6G=#wO zWY`A2E*}1*H<9z=7|XwPB&?1~^h!yKQ#XmuRx}dMSQ#Ll&swIk)be!j-Q$ZTFa3Vn zl9sM!5Hd3*LCNrsdw1lPlH7^ORx_+7ugF`vcvN6UnMcj{?C-vk z(;f{@ni=Ld!(0y>3NzWZFw^|^$F?Pf+K(m9nfEFQ{#@TLwa{|f=|vZU%MDx_E#LBb z#tKbcUpx8hE4%$_JUR`bs>+9sPq?wI)gx`;xxP@LMO#kT`j%Y(5x4$L{n>EF^2yn( zZ8m?Eub*DTvw^oSraG^1SHo;o2loj9eqQxGZ_k}OFfDz5@S0uBmu39+BUeYi= zS?|mF`W==*$r{{GoC-zPU3fiLQ({_AYD1t0dxWQu%D$z?qb541yVkv49i_;Wp?yPe ziezUv`-lDW21Q^86G{~B)qgt&Hc!q^?U1Ymo@f$iVa&{o8As#1$ zA$p?kMYm6Tdmp%S-1u~`dcHuD6i>5TebSOYJMPS_kC>@%x~s5<|F)KghZING-q!~o zu4LtNK4#bwtg^i1j_j$muVrQ%3oJ{Gx?9PkU$1q^V~_2&X@2(Bnx8BuN$WmLsL6I*YWjHR!L#;Hl1i35`Xgm@0V4;G$YyygtJ}&Be?DTz;c;mVW$5(B8q9RnrTK(uv@EgnhH9XfRac|Xq$lGD@ zyI}ggBeQ!HyDvWf;@ZaeTjbDTv3dWDV}9(q^YxB(#sij%cSSn3UKKUCe_=(#!%rVF ztk^&74V-=D_#X47NxQCcHw#3HoZvK^qJ8hfmVj9|Hn(v-`Q2yap7FqQ*XDA|yD|Tr ze|Cken~;7r%uB;dK}xsLt7X}w-OG;(_k9q0@ns&HwA-ujbNVY6UzjW+5VN=8Y3-7) z%*JX~^?Xy81iX}g_42#hfk@ezkD`m09Ar!=*IIOP_r1-V(gZil%&9xKpiRtpoohs{ z`vX>O5FdT&J>jf?J2jPFJ!+JASfAk{iM!G#pj|;j4|&|mN=~v`Xiqw?*4>dyuCj0 zoFHFr>AvhFkzbDaSH0HD&Q}WSd*p60rRPzH=TBVrJ4diduQo2Q@H}RHl+)^s9UXNa{KtVx09ws8)94^}a;m z#rGdpyjW1FuT{Ax=O@qJ`QH~aD6zY({&M$p)9gi;vrZj-mKFAFr=R#C23>{fo-@M7 zc9!4YJmVG1pS1_|yq@IlXId4m+OYoS&P)@(9OEOLm28H*cwVvBU77+yCV1 zWopk8C+(Vh*SfcAwPwhaOOJL3WgJ<*?Rs#zOK7`>#JhwtMm}}!1RxDl z<*Si)E|eqVx>o0I-NFa2UbH>let+qavi_t^PMq_PEr{Q}=5h&_@EHb?DA`qA-3Fy8 zY7b*BE;=rG{9W%L|YL9b%aXS3CbN$jq$P^*GD0aO-w|hs^I!I6m+m-!qG=*ekkMM>zPwE#@kho0m+Na?Rg& zuW)D4?}tKf7o0q>#Ok}d(v~wf)swt*;(zpTeQnpV+p&7TT1rAlqbtR|D9GkLz zmcGU#nKJJV?wsQ;{f||vuF0F7DBODD>Z#j_6Z>j3SZ>``d)_BL=c{kg(MLNMT{YuL zoqwL+BkRcXtCyZ;F=%(JPA+mpYFlD3vQg-`9A;7IvaQLyY7O-y{fbKOggj4bcSJC?h}uj z(T(*-}pTt<8%IpWOK=^shZcMz5~uV)3Nh z6}3srsx<3(-my$yxKb%*iA+&m)T-+?UVh&lKS}Vl*X3{V6R}-p((_ei?S~GZXOTgt z+1G9VDEYK*+N_@Q0sl7m*8Q(3~;I(a?&6Gn@)rQJU)s;sth=&THX#mV9&$DMxZ znYMWB0<#ml(|E3iS>6=6=~O)9!P~`;oK#C}i*N5+w5`WUBc|(`XbPLpYR`>Z_x)Ux z@Xl*O@;{TJZ%1$4y?CIg!;{neV8MHt%-b8ib3E&TRZok@{!(}hzsufme(c! zRd~Hpy>Rv&(e97Yk8PiH_C?8SWNCW7(cdQb*skaR`yLsl9jqryn{%T~e_xPeladfF zNlN|^CG?Uj^@Gh?nYrO2h2o!ATrx>Ks-1P`sn*PWLMzx0`5fN%Y9r?@J4W-|3x4+f z2gRQiKc2qjOC3pIR$mx%CJ7Ww^1}|$Ce)7Z1 zUQA?5T=)b2LN>v#i-j)#nm1Lc=SshPxlq5FWJ9T8%>Qu90Jo-9 z)jwYv%xU^xwfUUl>+5SKakw47B2dtGKq|-foc{ky9AH`!=suhBaYEd!dxdfvX>uHl(dQ#<{PAm!;}Y#EEGOmwi2< z$E&6gH*s>%;bxt}*Aq7!xgB}?n$>{=)i2k-d0bKU#!I=XzranFO~l}Ol0AEHV%)NX zsUDZKoWzX-Z#+Wubn z6Vd;OX&?9BwfmI5S*_;t;VeqB+c`g8-t6_S++bmLo@qZ9*iPEJ-g<>kr%LL!Jzf(X zJ_zl5+4S*wkNqamKXT3NzKq*<%L)~J)XEN$6`scRUTaC~3;tL`yBuGwuD489^vyXEIMOrE&%K#XG5flXY#VxFg#+?#j&jm&!6Y~Pvy_T)Lm`L-SN zdE(lAu2}6&o?g*(V*MqK`!`Zd|-aoLLPiv-k}Rf<^B>zWR|^j7CDT|0e3ShI1;1Kovsoaft)?up@LU~8Gx zCbehJi%#C+OK>s zHqH1HTUqkM^;E^St$FWLlrJ+@n?~#lsZBc>AsfGbuTI!4-J60j>)A@qoocjt{@L?b zUG=0jI|Awi?wsBD&R5r&X+x{(%agn3cZw($6{~mppI?16x_!gR-KvwNN_5K?Zs;!M z{KB|Vms#(Nl#h?dk;UJB?YXly{rVBBOsDQEPj=6iovQHkM)tjwi&3YZA3Aqn+47`^ z*ZITOpAGYCXYFNwb^lTSrD+;d{AW2nE#08_r}?wKO7JHpxp3~!pJo*Zgw{xHzJE`4 z4$D1DX3ov#1*w+j|EpYg?>#bm*0J^S@4i(=Pjz0=E33({{#tLQ)Dk5}cHtA3rB6;~ z`Nc48a}5LAadvUNzaCejbvC`pv#p%Gr%=T0funs|<4QH%h|0U2vMZO`MSm)cTi3=G zw`A6gl!XP$wTg3Ot~zVDh(A_-o$#%1!KXia+;@0OSl_!lC*t1}g~#c+zf4@yUvIc| zTIX8BLZNicDK_jMxF+5Enk9OgPce(ZxNPBqlxmqvOI)6ZPIK`&dZT8IAID#YiI0!$ zIoC0v{q+B zHTif~`RlU`Mxh7er)=~$l;yKTiQACq?y~n zGWi7=3jRH%=^^Sit}JS6?c*m@hUZRva-^J{c;tpC>xM(dnE^pM4+I|kpLcHO>xPBQE8NvMo${1x zO}@#_dO1-zG+ckuuNBR!XC&0{&$anba69Gx(ZpbfAnV)%3NpVV*7Gd=QYkp?17o$` zW9L&}wn@CX{W3bwFaBX#Q_Y2}HS4Z#yzKjLiS(9MxsB#7x~UltX6S$Z_-=8{o><;` z-Fqp5=57V7TR0R2?yd=ozjCTmgVW7kGLXmN*W;|v@akTV^n%8Wi~CL=b$E0yU`m%R zug1cEA;+&I^?cqEedX5<^V|gwWiRM<8Fx5aPrGJ1t$jz1_~EBFpA{4`DBVi>&eHj- z{m`e{{I}m!ESptb{RKm9wnyi0_{`CF>zRLb&4U*mo1|9gR-4#OeO@(l-Us$YU0e5S z3A?!GKl=N2&82M#KRhNbGqjQBY2G^T*7LyPy&q=2c#`q>(yHf&%zL&^%1&gC_~>jh zA@fea%||S9>_?d-D|d1i9_YB;f3amz`Nz#B$34y%-*3n-yW;lfba{=}#{%g9vv_X# ze|sIv*CgHh9H@HSUMug>!f7WbHO@QMwrx$&;kNgBw|+1ONzE2leUV^d@>uS=hy#D% z{hE?&X%?-JGQ~FxK(={PyFGb4C z{1)@Jd0v&f+D-1>?s+2TtoE+;=AZeq>sfrASgJSg{4gccpFg*H_W!RkJ*NIGeNvt4 zk179iB<5`H(^ru>dRO7doaS{d7q6%PI%V4ybw=XgTf_SI{tCCgom?R@)BU4^saN!& z+xAxXlzE%>z1wq^|KVMpl}wTXmNjSRb*(C3ePn4gb>}iQX9-X7tiR8%y(!*(D4}u5 z>pyk|u0KQgnNq@%`<5-)?R|2yQzEawtz6R7^VXK@tQpSSJZO1a>(QL1-#yHCeKsuG zxrV8-V`_k5MaSA|pCsX>pVun-=Pz}v%7{$<9Xfe}bg1jI#@CyD@087YbLRX>Db0_W zJANKc=vPs!`gkO*VtprT%d#M+O}m8zUe`07-q_8=l(pGLzuflsGPhqWcc(HPytY}s z;jlw*%K6NB-0d6Y9^+igt@H8x>8%to7n*ZK#w+TpevQF0QMIdHn_d{W-{!W|Uw*#&ONsv7%Qgw2kGPgxo%}r{ z>%<=RH=SY4#-X0}?@n!N3XqVyf3Rcwdk5hPp(Po1ZsxBQSq^3A#>;O$^{Oemt2EP9 zwCqE~?B`pT@$Be(`DuZy&)MwHe#gTliriAT7qEO&=U(Gwt!#Jg*?GSYUPtqPoSl_n z_h&W$%R??q6mtSl3h?;Jo}vsiDKWnGGu<6ej53OyZN@ z9)EmK-28jsyd&HwH?LrI?_VDT$GrEBXoJXsa}6Yq*&TjawK z8>sc-<0EF_io-jyU8FRliYG@G<){=b+MK4nX6l>D^T~ouTnjCW>SMHDM&%!l=TK8I z5`XgFxNoh?zaEE!|D^NuYd4fo9%ibCro9bru}(;kCXb>oo+Tr$YoW= zF+1&<`sj-G#(5U^WL20MU7r0Gna`cHchBc-(>10!?)Z0MoBFl@;q-u;I=}waKKygO zOKOvPNsQ z+}PaXm+@@()r?U#H4o!A7KL#BJzlxiB>%qnDVJ%HCJ!(Ae|mA%a=GWWO{`i|HhuA0 zkUQ&G+OT^~G^7v{Gvyd@qVlz($`w;J>F+NULd_ujC(u%q-! zO09bRtzV}EL;mDHUo7;}?@hy8_lN!RhKIsB;*EEItoY!v=EZ`kTegWtm%O!Axm8}V zy+q-r5PCN`T5J_u#GG~L!_NlWx-u;j{zxwL$ zJDzV1U-`D}P4u>SV{|Ia-Fe@A0fjQrzsFhvK196zomwpx?Zv7no$~#8gp_@H_=k#& zn@c-gT15gko|?n|dsA-mmiT+Kc8JuJ{bCcIIj8hm!$by4#Wk5X)$N|JPO-B&{lU1l z?B%w-`^xuDsmM0;%-)f*k;&+Y|E@U>U*$HMmb_r74&=!F`)Z$Xf5BEpCDY6%DJ9GE z??j*K`aY^tKPUbAZ~E<)zGL^Uf7<-B$amk=3$D-1nNFD3t8@qnu}aGOF$S%_SC^S< zoGW)$Jn!8+!|R>)*Yo|okMjNz+08R+%>%_rN4jNm*gLWn_kSsV=>KP|8GY^Zg_+HvuRaFs$~pJ&c$%|tbX-wuACMVU!&*0V*bZ7!!|ssX_viNeCv7U zB4(@DtX*mBrpNeH9=k;yleFBxzTiu_Vh_u?3R6+nr`((7W^a_`4?6B~;P*dL3*PsAMw?~TSsj(XkusZjp=69eNhwV2fMxc3~MAIo-3 zoSI!|@@2E)L#JYSkDc`vo?#-vy7{s z(|+%*lN@Z@&6|2!LiTqaS(CDYsrA{-qsg*go*9HMxhUteLYu!`(Yp5cqKux%Isc`$ zWOeR}eWfKY7`OOtLYm#BpDL&2w*}2f3^*mqy=_;WR~P*p$h4-Kl8K6ZLGP#&zW^fh}Us+NLa+AGX4w=}C0= zqO7zgZGFK_54@gVy7I5F(;zIohm~zrhG16GvwQoMRZec+`}0%4%g*|cjE8!E8Bf|w z6jwFrWxQs6Y10h_$(OH{TuOvO?_|NvB&q`F&^4va4UM+tRuaCxBF#0G&9v7g}q?uAF6!J5wWfm9A;n#&JM=skv>E)mu;DGv`-x$H+5?B$Omx zjJ`bCLt%<7(^9Kv?DLtcD-X<=wcpVGPfmTsgp8(;gbhb~WtE&49`>K?eEX}|Re|sB zq8s^?eyi@x%XRFWBDkF=PT{=r%m))JE?qp>z3d1a7bopw?^L9n`4$DOzFVF^3`yD7HcOMYIIc<0|Ca>VTF z#{2(xgO%%~=}O za$OUd4k@Ure>r}2o%`$--VFg89!2{^v!B1QPPD@b5%X=KLxWst+mjiE^EOYg=88Q8fZNHbjoz&6OEk6!*i=|iyZr0zMI{b``!F0 znd0T?*Xu-NQZ}e8<+v@Yu!W=J=1+ln`)_|O@Hcf1V!gZNjx1+i$ArCIn-kvf6{N_Y z37P!ueMI5cKTPi|FF#N)ynBh0cf1 zod23}@k1uXUj}vg3`U7@{kKj;E%3ULcqXeTfBPZvxlIulB4T^Ye|vD4Gh9}ibJjC< z_iewB)k5_SS}q)Zv8N@@CO9#5eSUu9sm%3~eP@&XP8QGke=mKn2}f%;%aX@^{bz1> z%xaD=mKAszb-47&_pP^MH_6}kxV-1mImQNqcdge<7r)kgA@(3|;;~KP_J5e74=B!? ztY-dvt!Uoc&_nJX?mq*bPhTvgr`=_|=x4Y#%+svMoS8w~^L`yxy9-;6%|X!SdsZ z7LQCq8MiL)zQ4_2b-b(jDL#)Y{~9}3rmrxb%P-?;xMExH9aM`-m@R_fBY^G4MBX*X8Sl;Y}ZHhA;)Vo)# z`ys_L^NIuG}bgEh^~YXBR#u-Q$Mx>A$Uc*zenH(r4SSI9FGN>(#-g zV?8RB>b-`a*=uC8JeI$EQ%zeT~_*My>MwHm##`W-`xs`baU; zBZ%v*U&YPK=cS$3ZCLQT`?JN)K!^Kg<`FBu`QH4gf1u^7f^?oH_m1uw?R6@iLU%e^ z+&sCr<@-op0pp)+F~b$CSWD?V?~Sa^GBgRr24(J{#Mz z5}RN}&f4c%OMe8;<30YzN49sPg2T$6k8hM%d5X_@XRnd< znLIzQY14-zoSr*v?oIsmPeC!b%#@F9ZbJMd>qL!MsfWAn3w}_Tyd|SxRb`vI_p!dt z_ZJTGd~4{R8nbXib<2zAO8=Oad92O<&1rMTt!c8gU44|%om&<4e={QlOb;p^IQNDx zR@t%bPlJ>F?sxzE7kX?L=kh(Y;(Ym&s%%{klh=j`1tE{H) zS-L~$v!lh5<25@?CB97XRxn@w=Dt)>cgspS%_Da1S6B7USzI*#`E*;)!(QuMjXwHc ziDHp{c6P_24cQy+C@e5JF1=`*m)7x#9aFz(s2s0$%!|(#*gk*FD=RaN^+MkcWe0Se zEIed?KuV&VNBH+e#Vwn^U!AA*&gS8?GkuHQEuw7MTibYZ4&D8JMP`en>5yeQvIyiNg2Dw7(y8qZ6;D)*LH2w%zo|u?Ol(UJD*S-7c)U;L7)Drj|^i{~z|~ znReN%P?_N0ooxP?*_~JW$BA%V{xGwLB@c}@H)*yTXyWOk1_@VcMYoV`da^CzVS5S*3!F*Iyy5|HA*wD9gk%GdS2D2y|&Ft z_oe%-!Z{Wn-b^|1Z0adK?#u;01D_>-msEdP-?Q66&3KW97SpQjZ#-NtKi~)|^Em0e zIH71m$5X-V|I?(lUeMR)Xmp>0ube=R%T_TkQhu4J{l;t?pfj)U63W)Mp9ky`EUQDfI0J z{jDFCsQg-0J*Bo_cHgV5+wB>99d0VF3iG+9Vju8owKd1>;(-4Pw>fFV?4MkDXwS9@ zrvF?V*RK3~?R)U7gvhlXx9)77rGCeTHRJI+4hfCvM)V@gn2sKFy;NzIn?+ zlcNJlZuec9^2S2yq@P`v&NT75ZQ=fgxl`qi{GR>0=i*L(zR)x4-T!jQYRTyTxSQx* z7ry!_fATZCr~CCn4O$+)o2K$K{g7u=@V%EOBtNqh3ruq1s}}!z7c9T?7ySG!Pn6!T|)Rr%JWPhUOZ+-RfwW{Nt6AZ2FM*Ca&tqk^EFIn4?sujxW3N z&v2Fa^>VDd_06DQ1+(z97rSMDOZ~svz4i1vp6b&IUlrW)!@Av;$xc2wF?u&!oRq|_ zsOgu#Z!uDS_H+8F?Db5Jr&ab(=Ra`sO3#afI@cEpY(Bb#bHyn`h9K!L%6TXBuDyPJ z^vWexiBmdzE`$|XPTsMkb>8y3&G9~8npgZe756-Gri1m=*Q(3p8nZ6A-&$1dveEYQ zx5K?R5}1-!N$IC-jnA!maBRmXo^6H~l#@!aVPyy>#Hr~QrG%w}}&8JD%GyXETx z%=+z|HBP#{KSMvvpSfZ3ZV!&$%QIeBUW`t%&C6Efbe+y}c-;wwS<=sgd!{eXcy8yW z$e3RJ`nJreH6~idoT>k-vLgxIdT5g?T4iHS$Gs4-M(&pmB6t(0YNNG?=Dpy z*e^EG$u^7_2&KB?|!V`^6VJE?u%?dePpSj)1`7|I;aZqvQqvW2H(#bmL| znR->5XE`w5+5XCWUEH;l*}dD2-Bw-eH?v>8^62jaLXVy^Dw~Q|i)s|PZcn%OQ@2Q; z`siENip?qFS8x5^+oiy>YuY0h-iu=ES#O@7_P1D4WxnB=R#lJxiToShMj!ewR#PTn z|Gmur#71j|{5EE>DOGnGb2vn~PY17=xBbMz@(cCsuWmg4>=}2{^_yHdtNSFcJ&S!j z{T4qHFyDUsYW$+}0U5Wo)AZ$oM5`-vxofxI*f6CzCtY9nUdt3E$*;+;qPI^EJmhM3 z*kk%i`Kmm_kLyiUtaMwnd^lepyOa<(HM*s__kT{~nkKjW37a-wSwDYm>58R~@6J)r zXAG+QH0^KH8kIl%2d(P(7BM`M++tiTU|3VvJSj(4Vtu!Lx`UkXDo&x!>TeYqzZ`Du z{Uozb;j(FekBB;3qx0!ga<}xVR|N6haFAYh=3(`Uy_}Kj1WNN}*WdV|wnAdY=cUKn za!;T5ee?~JhO~gehL7)grJKA0Dg$GV^>ECsJF|K~d_KZiXq z578^T!}D)zaF@!ZSH^Fz&Zxf|xx?1&W%0@j9th`*4~6J&$Ks=AB#{D~b;$F|wjz;(|7I6z9JOJ;yYATgUN=q0aIyBy`8(Yww!12yt*fU zMeIV-~f)Z(ggiX|h`>ngAf%fGx*WAXddA@^l@e-!fG^n4$d7Rh=t?Zl?@kDkw|?R%r~ zP2
    l=AkPWYU1t$qBd!ZUC6#;a1oZyAm1KeX9ZYwg(299iJ^-&>+VG*a57&^|0# zyZO-me}0dJAMZ_>QEFS&s(*NX?qkt<|Ic^bw@6Q6cUjR_aKd6jbIfd|8FmxqGTN+q zr=3vNUbtg%;;ele)2>zjHkUHJaiag~j^nrOjK4e<5e-^cc_-B2e)8`9vSn{Be>(1Q z(`m2Lm!gWC>$2j@w-Q}W_&*@rn{|{Vs{L9z=%c?vZ3-(kWn8_E+-||E*_;;M!vITkT*{g29lDs!n zX>R`Q3)TO866;ca#=1LO#Z1nVWBXFE#Z|;{_Wg-!T&X?tYo0$8vb!|B^SR^-@9#%8 zWX_lMxt4r;)2{jN92Zo7urg#h-SnjOV@*-8q2=S|4YG?2YtzqWoXa`+{)e_0$N%S= zN?yCRoNb%Lw|mz8ZyPP&*A+Z?wt8E6;>CT!e#~OhB4#JNk2#kXUwy{rbf@zDhG)HJ zC7wK(H)Vs_>ucSIjh~)&-XeYYkKIS3(E8qMk7@!1bVX!m?rvAQagF(w{9l%j)Bi0z zD8anI{Y&+1{?_w*_~T|C3Tcr#v0;znSqFi+t_vl%YZ$ z;SrxttP4BtEr0EFZ|C2VQx0E*_1%;Id=V~i(~95vF~{@%*Vj8_LapV?T2|N`K4-nq zBB8Hu#*x!Ga#2s9WwXe9UD^n)|2S!u1<&g)I#TEFD7BA4Rs zzZ3FrpLS;axoo-KgRqY^`~fTGt#gW5`J%o|%`5I=sI`CUTvf}^t3P&ZEo`4zerQ*O z;L|tXzSlQMxqO*-vMc`dMy7*_*B%C+X%~`6wS0dfdXo4GpDQdko-SfPve+lnC`FV- z=Jgrx^=x0~O--2k|JZfyLs|u)mqTv^G+dron>xKhshQK|lJ}*TcGYfG+u{V{82)UX zyE|&zt8NRd|QEm?ZeXLvn9I!=g!}F{lKZ6HoMsG z)Gtwb^*CwK)0}N#bqvCDQVY6`SgqHK<}d8B5VNv7cC6{$8TVyR4?Oy)$1~ltbW@k= z&m)1AJ5)*-cFS;kR=6#VH2wbHX?uiY|6%UAze|`clF~)^g+_17LW|Umy^1@kzSlllD!C-;M)&ji zGi5*IGM=nSHh%IYr|XYmRYBTI-v?*cPf5@7i#_X=;uwcv@V)yh8onNr# zQgE5BsZyjh?*vPezL!hh?w_7CRn0nCL1a~D-Y)HxnU$AgeP85E;@&<}sc8}iv$enV z>NVwymPuqA)!Yg`D79y9%A2d(W-Qzl<8I`a)$!EXF+IimWR1zoLr4EhojiS1Cg-@+ z8bRwPEoWO&DhhaBA7k2k-QUdo#*4?bPrg({x=OrG{=UFQ@36YW1-+|lgF+ThXFK!7 zE;jVc;`WIS#m8SyZ)>l0b3NO>k=e(Sd%^zv?HdA1n;p!eL%M>VJg%s_zI{nf$v4UQ zbNrm^4lVd`;?(sci{5KFuAZChdS2vXYft=Yk3FX6nx-6UJT@tG_sw|0mg8kr&Vuo) zrXM@v^$$(wJFwnNZ~yF= zkKd-VR!#iY$mY-V(z|E1;D&Ygc`H3y*7q4@FFSrUYR9^NSN4_MZ(pXCccNLq?XlO^ z)O*a%9V{5o%3R<^vIm{4)p=}_Vg z{(w1UOHCG4UO0E3SN+sg#?xFXqFlVe;X(W{`!g)1ySVRXU$|0q>)_#uMJxKnF5lg* z@K^V}{aw-YxW{UYk1t&P<@5W=YLO|cY@R(e{Jgr=`kvRu8#T9%EX#=~S^C^+l|>l$ zgt;%A+ytJTaJ{v{{Ws6H`@Tgv?=6?BzgXTWpfA4SLy%MA+ucW5cCTx-I?C_gkT>7{ z&RsP}E7oPs)=pENy(l-!j&?j*=$O8(x;ZvFq>*#Kg!b#ee~PcT{LMwhEjJhU9(-N@ z_HJBq6l;rR`6b!u z>Pu~2tzG@kL9naDnrYjk^)?P{RmGF+LZ*F~zdG@->f)ATr;2mr*864t*m3IavxeY3 z&P?^ZHx296SjzA3T`1cfHM7R#b$;r;w@j^DJlMRSu)N`!)RJVbRGZxOW<|rX9UTf; zw;umKu<_cuJNen-a#AlkwplDUo!YqFf6I|An?omC9h9E`a&oiNg%@(QCkvFX^FLshXd!ITbdvZ-Wwgq)1R(iYd-`|lPXnmA*!$cc#p zwM$#-4^*rWE`Ip=@Q>z--F5d|9ysiMlVX(#ny7KjK4Jd~2d(!WY!a6w zb=;y|T*FRT+1pFKSS`@MGyL@WV*RCu*;#kE?mBdHesUrM>voPen@<<55!fQN_2PrW zXU)&o^|)xQ-|Xe`X5!Bky07v+_h$f<%FAh_dDinDqXVu`o$GhYg#9- z)D?VZ9T*<4)8bG4oX7rcjMpTsSAHqTGgJNc`bPGtoW7T9wagD+-qRv8^N!=~11lG< z2zggBL8xer(zY3Q_c(?vQ1@g-MEfO za~@dGx@GT_ZSj0(O*^J#{N@O-GgUF#DB!ni;UUYsldl{matYjMI&ko;q*vfpe~YGP zagUv~86Ju{KM^>z5k=T>p58Lc}BTAz#7V|u}Uf{v3f7|lhjv}wOUk*L2y7baoOxI`gb*_VP#Z}un z50~oZooo2RDt`IYh6}dq8SW?+%yF4-*HakR7xVIVnec|K-rTc~=}ofl_@SZX5NjuX zDr`rz3>Ft3MM$t2Z7%KBGom=8O^N?oUP41ME9+`Hd zMcvNQ(`NjSd!@VRjneYoRjUs4e-BYwQL?0=V6Nacsb3rw{L>ARuSQSMGM-+Yy2^ON z@_n189|?YC*n7+VpsD)*&}d&hC#NZv%}3KD4`2IQq5J+}L#IQkY?uP$j|yq6poM!+ zD!tuR@w>8p)6B%IqhD%tZ|{wEQa$Wx3=N5O|2DEKJK~m zSNny-+7BB$U(PQ}(w^z&ay+2xw@={A2Rx>4U$1x>Ia~eevwZFupN>gY9J_IP+slcU zWhYh&9k%Z7FL-hIu%DWy)x7sz2~0b9?rAJjc_VVp*eXrL{JduL>J4>ImI|N#pDC`8 zq}{1?^ZcSuY)7_yKmE^pPH~fj%DjbMlFI^9R~$WUqco*p>20T(>A5d;_82U>QZDc1 zly&@O@BQS<3~%{a)8v|>Bvy-Tde5`jYUcj6^-HfGuw1^<=HAOA6ZJCG3vbRWIpP)6 zt#~MX$=eSrKN;pNcogb#XQQ85ZI=1=-EYr^R4mxKYjXO`q8o|LPMi`~r2gHM4LuSt z<6g0)w_@Chib_S{FWhNWb2PSX>*woPbm~HZZ+@#-mi4_Qrx-V1fBq=6Wao9kWwv^I zw$C`bNIKBLSNZ$F=!Xvj%Ph5z9;p3ff4J%S@8ACKPTXDZ^0+B6KBdBTzt0ZllNMYT zuYO9rA>MlSR9JlE zc1)CnkIV8WJ~Q(EPJir@HvbO$JJaaTzvlSyzBb}J=seN?_R83^fgw^6LCQ?Q_F*^e z&KXWQ=A+%c?6?uT$wN{i& z`CGZMZm;nK>nm*+R$p>+bL-H$V9#;eurW*7voLsWn>}Ro;YeLsts z)oSOq*2nahcVsqOwW=-k>V18vG{*Dc?~_*- zZ42#xxMbrhrkJWXsme*-t6EC8*PY3?^Sfgm%4f>nlu#jYoAJWJmCCy}XC1gEGGA*I z_YrBHc{%egFDg6#>(z;^U9(I&%d0jUTL`l4>@SX(8{jjqqxebHn|`aAw;p~wT-rF1 zWl4U<{XeFP8`|%!ZtJxR&6#jet?>FA>9-$e#rWqh7MLwwx!rPag&Y5xJs&#_i$B{Q zPWNK@{c1z@Q|6Sjd-mRsKea0PSxDcEY6gwXIg{sla94l+#J7&~guqFr{TDd`^;36e z$85e(^39#u(@Spc@x33^|bUonwG@#y}>&i9H7TJ9!#ZWK3T5$AOX+VI#fw8h0r$9%`v_j(c&6nwNJ zd%wkT^(k}yYv(v(?e8LWd*&vg*ib_mci$C1#dYoQHTCGOH_}A~;qDiw zOGH1+zMGV>R57UJoPODdUw7B}+Wh{kVA{!+6km0-MxgrrOva>|Z)V}@%!lLL(~g(U zJDl)u)As6Qty|GzCX2W69zA}Q@we%NEgy9FUwQ8~-?Ys0pLGsj!Hxf0KlVukc}PEC zQi-}d*C1*sb9MU7`>uYo_!-<%F8$I_JH6*h`3*VOszt9OH{~xAp1t_*U3Oa$`I(2} z*}~7o>pgFl_Nl$D_f_`GH-E?Y6B}>rtJ}A{??9__)Q8Wu`^>AKoMHK0nWz17-lYTG zF{ailFY+H$DpTmy|M2~IiMv&mR|yjXbNXk_&_6r3R_!#c{;_n`LH~sBcdDhIYHE8= z$v(2Tnz6IU!SylkV%|49m_G&{NHNPV$cejWdeK~Pm15vG<_(KnA{Hw1E7z}&lHAL; za6$fK1C2E@?t%|=KXERv_S@glETH<6vD>Dy!{vwkB=zqD?>XTsT+dt4$(EmeQZiSym^N25Qz+HdrrO=Z!Owuyf7r8}nEar}Du zzOj$v?rp;_|=8?@f}pFdQko2 z$U>FWv~>|D{{LJac6qJqr3ta=4?gHjdB@cKvN>(D_=cw4pKqyqD4g;!uz&R6Lg2sb z&sQraFFm9fE;Muba<8PdZN)6MrC;7X-LcE{n}R2kovK{pg6sfUWpHG2hS{hVub9u1 z!?yo*c6Fw=mWU@`6N#Oa;pFjy@4*y)wpVNZvcBQJx7EVWO6~rMiG0_$)owP=lbfi* z@UT*}sK{M#<>eI*O4jvXoXs)Ej^PBzO5uSc(b zt7jxV%b#OXW$}LX{dtNXeZpcrRU;QM*RbAT(d{}_s-o{aW9!X${pMtgGcHpcr)Mt= zT>fJ7s>ADMelvEdkX#z5ulx4*s}A*_YH!~CvRN;hzdt_g?<#oagwNE9YRipNLabwfl=>In_BwUAyiv^Y~clo9Wlh zK9<)ea8@g+Kx^I!gM&rptSe00cltC;Ej|=+k-H`)`^;^AvE@Ziw9R^6-11nFQc`lm z_1UQ?pZ_nv@E!7gblEt2#o62J*D5PY{?2fFr<1bVePhNI(et~V-d+iAy7h6RP28`_ zYRe6QpX}dwXD9xCZ9K7jA`5Tdq1x_Q9!s1z%0$@(9g+BRS7xq{g9T&iT&+1W2a@up zDsI}nFW1)iQ&!tS2CfTNE7xi-J@CrKDaTl6=gVeOp8FF6ByC){Gbb$()wu9kgXh|l z6YER=&dAJ8|GMtLpB=Ylml>~Oso=gUuBmp*`G~lhTzmDD;-6FZUFdwaRDa>cIo7Wk z&8F$demb;Oou|fPnFWWEtiAYs13f?6n)M0)XMU>R$z-{YEu(14qi(Yq26jGz{U5}i zCp&IY_T6Em`7`j%+jSamfM*`4AI zpU(g5`zUcwP^*$XEWB;4h=|6XO_NtfK0OiKx+%0QxamQYOr6#(_o>D9zPGJd4jZeP z>YA5uy_ajt(G^LY>oU<%VQ)jx_2~f>(gC0La9f zZ5P?#S+?=aIsdn^;>sUwpY7n7x3XNl^Oo9)2b^jWKSirUJoM{~UNA2yd3RBKv-M{a zFV1M!A2qAES97jAZ}Q_L)2X=Nk8=-)To168n`mKkbob7lrVCuzu_kA}t~6YlP$YNa zW%SvsHb1TY-5qg{JvKkc`p$9aki&BAy<66t4Oq?HE?II{Bz)a|87K9Kv$^vN?Q$+p zzVoBJ(dyIQ4rb*`FYZP2Bp39={dgWE8@+F$%OTay+GB;23SKPP_t^55NM(O{U-BAy;xx4!b=xEm+x?y{P(t9(~hGb z9w$5KM?9{t+ftf-#4T>gIhMT5H$<&MQ{P_+%N97u+;g$q#BH-r){HgNr}3Zg+%x^h zk(*JDVpGpW#6CMI7kP1t63_Qe8&Ru0nE_88ewnv9E;jsl)7yUah?dfIx1YK$S8aTu zRr~Ixo?8=}N!iRca@qwG%b=m=Y8|^9}S23=iW|Mx)?8T_F%^p&yDuCSLEKS zN}1@FKkaar+uHBZ6Hec>=R4uP=YG>4p_?kg+qM|^-PQ~LZ_xkH!s&u)+s2*B6DP9q zJ9)45`gpMP!1)D+?SGdf&MSEEL)?h>me7?mPa@vSEN&E?W^m)-FKq_a%_};?H?%A@ zHvR3~w*SqIIVsXVYp!%=R$LR+UFLJ`+={E)C8fM0Yt_z~FW2#Id9-`gtQWp>8WtQ~ z+gs1LA{pBJ=YH&ZucD`yo}^BB z-n(Vn^UZtu*R2(pU?q0=R(OEwT%(vH9&+X8Q$>X%MVD7N`OTmHyP2_7*<0|?eqAQc z_o+e=8VYSQ@9o``$|7WT*iOg%aplh6E9U6=OmX|4TN z_ctH#VVlZUwCw>`n31P?_KHiZPrba7@qI$(t#2K|Z%Y{;zAO*-(Zt&=nRz@dl7tJM4=LMOg&n{)Z|_TAaFDHquo{J!p<`btI9$?(DdBeqpu z3)CB4g$CNqD=)v!WA>z;QODp?QM%X^!Sh8vz@-`^_pXhF_%KqHA*`@ z1Qez$fnd6S}zSJf`bQ)jz^*uTZQ{b3QRKFa=7Ju8;E`rTwN4ucb2S1M=i z{JUx2m+q=Nc3G*rS6*0i^Z9Al7UyeH6360}8JsWjQtbW2TEU*IOrc z81GgUUslgDk2CJ5blaKZIjW66LjK#|`Y}h}PH9?=^%J)_it892AKkM2WLzI(w&3#+ z^Ai&;EVb_1uQ&ab>)O78SL&HJ#W?*dkL*;+hS&KPYe7_al>qu}~yHcm3vRxehYvjRh;7UgJNlQ*5&A`_r|> zhZ|1)yWw?ulkfF)EIjFyDfg+1i`u zU4JG1ic4VOr4#!S&YxVpiDgT&7V3=i4bv zjV&F`HF4Va*SYQ%uhaLupe+#Slw!AYS;9OK8|Q_J%M%3{UvHZK-tDsW|FGhPLE_wA zKR^Cn>TWyr=IV$!Wv-lMrXIIB{wU2gH`CMKyFqAz#hMmZ_eZnRSL8HigiBp`=jvi` z@=S-#`6?L}hVLWJu|0Ob)`Hl|1o!B{IQv?l6H1c zTOOG`(0x~-A6ZIHHs#4_+n|qH*P~l|K1GO~ z=B=4(?0+Hd_nHsy|4u!4C5$hh@3(gF9aH~FuU5}JUF&^4m&ZAGOT2W)R_(tJ8E)Qd z`w?{Vx}A~JJVTZVYqr`?J6iN}(dGii1VgK=|9hN^Gpa*(YJ~YFU-zmoW?C%s=5aem zQ_ZR$v&tET<1@39UmV#NEq1{DD)w_#Az?y-jV!g?NdTD)%2KTriTJ z@U+s>^ZU$udG8)wNGtMBn=U)`(xHP1+Vdp#8|=8cqdCdgq+3H)%lX^pUvA#>PoAxu zdXM>U%7){7lglEO8Aw`42L}9Jq5oY(Bq1|C)kdIue%Q~~5rO-z+q@}%)%7dNSk!lQ z$B(T`>)G2glGym?dR*Du;w%vJz9~VwWJ1ZSt#>&49j{3`r5k*xh~_@7@aUn}y^o5! z5-y1AZ+qkx<;FZcs^i0_Q(foJixn*ioi}kosl-~o?`{8|Chk++{O@k1-zuJ8ib*ER zRx5BM@EftH{nUu<`DUr=mm#y*?){oOddJor(sC%ABR-k)>wlM~(=Xgovds+`o-9g8 zm3--6Tea`S<+nPHiHs*Cn~wCQH!teA#MYW#?m1u9fFmJkw(7i}itPWG8`|gTt*&D} z_RvXE#r@Sh*PzSSJZca1IEJ~EMAsxOymgn$DUZu*lH-ZPbD}vM_s@N%W}Q)XwnACU zD8M+(|!%#5srf6rxhLXs@wIfA;;`X^ztSGS4LhD??;& zNjR?Mve6KlEB(LAwOrvu?V5X>2Y4;wa=&M+YwOU|=rUxSeDit3fu*^*2haLU{$l8M z^7_9WHzq1PPQ6of)_709TQ)=b(;FMS6fSI;C0KFZn0rd$&8^b>eoDeME^J8!;i=3q zi=!sSZIs@7pzG2@J_cSs{e+**lGAt(bP2g-O_{GJnP4QsI%k8df|Y_jxAQHFpr=Kf zx|BJ7mS^!8uj^z}_uBkg`;)-_^Q%_9d@KKGxANgf9xgM~75<#({#Yq%^}4^=kSnP0 z=~@wn8NR+1M;9Nt`{Vfp$LYPg>(2)V%=mX8qlu;Yt>4|=-q6Nl{~0GPcdcS^oZ6Xl zu)+2D(~pI>uio=!*|ln$)rB7Qumj#(rO`&=usR{C@9 zm0Y=F(NCr#xqUyk6Gg>>y??f_%r0R)A$xv$d|$`yxd+`@w{R-2II@v_ zzsLp?JHasj>74#gqv~WhKR?{bTh)_4P2foWx5o`^+Np0Gm?ijo7gRp-zy4@`NkwJ9NX^SfP3euO2aY@AwqaMGqZYLja0!}ZN`4n4ZLCG3)DuEVAiJN1wJlXB)%`=+qZ<}Px_*9+k z>#T-TpPihWC%h7SHoaZJL@j|;*OCgKUh5B=a5|x?KO*MNJ->V6FIzOq$H9X>+u97iDQ%j(YW*C4!*AE$OXvmyctc7zq__10ee;t=>fVa7e7RqG^Io|4W+zpH~Vnm;QKVp8$wfHB4()J^JIP-&E9#-zxkg`(xeyE>yD%U5hK&7U{MJjgQFI4;9n&OXoZ&f$H% zTBi*+i%pi?SA0^tP%&)&0?~Qr=f9N;40@cd`Q+ZJ*|`pmWmnE+^f%3S6~6UU>4DTj z=I77ZI{sz}Yx*1ySkj#KWv;Hj(4AH1{w%g^u+;2oIK`3vG3Wg0zmBVqzF@t|nBq|$ ztWdtysr9j7nmLReUoF_R-YD!8DcEW%6H3Mc_#a?O%IvA&}Qe4`V%fQ--Jpk zguh$&a&xQ8yxdb8ZhrqGCCXzj{d0-t|6fnnZDLMHe#?At_R^}StFGyC++8RVly9~$ z{z^xVmj3(7ogdkoxC>h~mS=SCh>25>SK3fe)E2w@oW>PJqboChe=fTI`TdWGmrGn( z#GZTHP^!(FGG#-*Z4BGK$Pe?siM@7asl7hyRxj@(&6j^$Q`@KhO}`-G^&t25yE_Z- z{9J?5W$vRLd-7hmb!l)zo)MpDNuPw#A<{wM0m#c(D0 zBioE`>8zG}x>to+{AkU@X9>E~59~jwnD#x=Q)hOs{JTweR|foIT$QZH%({1Xo5zg( zY$|HsS2z@lYESsW=x%we|8vg0XD&VmC$CV`h~B=l^1``k?nhUN%x5S$Wq12x?(E#J zi7h=x-1o}wT>CBm&+Lph+dlTh3OniOJ4J6*KFgw-GhIdJnsD#^cU>ENX0q2v%=tfw zK_HX)Q}TrS>Y*D>cL_*O47Mu?`MFQ#_=oP+^XD>N*jeuA*>%Oa>c3@N>QhPg^9eEfVgbIHf-~$rZd6Ti?{G}6_@8I?6JGf zol=)ux%Fy?3_n)8>wB-tNW9gw!|?m$rgiEqC-M%zI=ejaLsap?4LvNG!NNy&Ox^s@ z`MLKc`(4L)bA^|uUYhtzbEWggS$g>#VxdbSG{WA*7DPAq#EEJu*4frivhaLyJ*4W% z*TS$f4~zCZZ*ZPwK2xFO*4+}B2m{Wkx^i`W57Gk;u84ZS(N6nm(N2jLzBxiWj3i8V ze%!>Mo_IFl%fs1bPj&BXS|YIa-;T`{)jdmc1$}P2lz7)YVUtany2eSN=JYcQs|yVZ zj<&{a+%J>fC$ZRkn;H_6HR;KEWvN>|#ceLLBWuz;U!H%U`1rlYa*4*RulD9QHtqM7 zQu%z^>#pK`H$llq(`R-4`}s#@!(}!5w`c1Q9B}$8$}~CdfJ`R$@;7TGy=G_LOlDsC z^NMt**yjnWZp>YJ``gSZMzb!yKksY4q_D}{@$s2Asw(g5S48-9K7XZN*Xw?|R_JJ1 zZ{4kXeQzp{v6Ov}+IS=Kq_~-XY;DPl6A|0{*>5@=J^#^bwgVsk?sH{FLhiN%iEMXy z*5tcr6)G`%o^vxF$rRXb z`8iM3=Ewvi`>GWA&7M0QZZU9nJ>POEZduhs>8=^x6S{2Y*gXncwt9+pLSTCFG3iIP zeSf4Fo_srNz9eKXyQ9h+o5*R}PLrkw*({v2Df+C>;ziDpxw$e;mz7pkNK8E?Uv!x* zIzy0kkDi`{RbjwuW{1gpRdaJ%#I-!_IPN{ppOLrO{)y85GjC>pTXxy@(B#+eIkXhc z#UD9XE!g*JX4&Mcfy%&Zzifc ze<}Uz9zONpDGJ~)(cjzP#BycJi>;T=S3g$Wan9)JSM|-Ta>gRl!mrzCNYA`JKk&QR zOT&1dBCDq9oPRf3eLJ0Rw&FH(g4$V=rrG5U`wZh9s%*B;I3IV>=Vt4~;&Y$>a>Trz zdL`s(+L76J#WQA#=u}PKP{?#xX8VSVR}VZ}^Z4V&aAmIU^5@o!zI&3k37f~SbMP;U znrSj?*XF_}74lsh-xeG^-*fq2Rr-c#g(nNS(r>+DGKq9LS>X~Ead)NdkM-r3Y=2zk zn`r!~-F`*Lj33T#F*!>Ob^c3eOMR)3$%)@Ulr?L532o6ZC|hwY=JvICvvjOmQ+u16tvFTmH7SJ6)D!}O@ZegG~E3W@4VUI>L$iN z1sbB3%kTev=gD`D>(auV?=!d_`_*?o-o4-UQE}8+-n)Cx7Oj#KVE(JfCH|M!Bei9* zUYO1#wS<#yM_#C?XPpX}QQ-IdW@W6n`>*hL?Q2}iwH>|*8QwiFc|p%2$H9~P;_LM~ zYbJiWY;)$%^R-VRFN1i^{3Z*GYtmCS=PR;X-CeoZ1Z*P zPE^abds{E_LFUxOi>EDbFkdT<-NTlml5?nI`E9G~3AUTwieC2p7~_z;*W;Iz-lVWg zo#v08l;3~&X7X7NAI0_8)>m*J5>yr_TBdWmuXTIde2+J~AGfd8yceu$eJ|tMh6T$S zudA}Q+pa69erGh_cB<}u@NM!+9QZy)~0ZIRIy@B8+}|G$2(lry4H?j;=SKetdQurTkrnYhQ9n)a1h zMiMLA3PpDRb?v!v%74j@x4KtF7O-&ttXQITbCOubiTzqO3A#$&n=iY3xZb!WZ|e?) z`tNHGEOXF5@?G)a{QJiomOb8eV>OqOhoB|ritRz?ZIycGO4%%0!11s6n}X#D5#y9O zLJuqae?5v2mA#wWTRZYT zb6%+w-^#l>@`KDlorFDeA5K!Ay}rD~@KCAT>NP*u9!&fbAire8?$op;o(J!}lRR@m zQ?b5q`sWoFm<8uvKP}oiHC5L7bC{#Z3igg!3cbI?8N9dh$AzS_%TD)xvL{ANc+39> z4$6IL;l_>MlJvLA8=rabHn8J))2q-K8gJjMn0W5;z5Lz>JW-!dET662baL&5f(Mrw z3k-uADrZe;iu!f1{+Z)F#?};j(}I_0{F+`HaW6ES#dF}YhIQT~jwFx$U&Ky-F5jJ3 zST=9LnkO->PmXK8o~gJeN2!cI(>@`}nb*&@cGlx^XQ8YAZ+8C-3svhBf2lB8`nA1) zwn*F{&&go!T%$vh2hLyb66&=U{hFHo8N1v+i*_q(dXCaYVNK# ziFxs%nVILX^Zg}XBQ^Q57kLy?3HBfQ}JFFLlspLbu%?-h#9il*n|Pi>iaw3{`ybxX3% zwUpcUZ)uyjeOa(>D!25a{X7{OM^7wQeP!(XPdvoq&(}AtRe!QfWA)f9cQpU;k$H5t z{M_7I^4a=wrwqcSK3&fW5wrPf`RcJ~=XTx$|CS!RIs3)2xk)!$_iXgtYbaS3>7o+a zwxCc(<>QL&Kd!!8Sv6;oWy_=+7i=?IHLQ}K)#&8e^YOZO^x90=!UX>3e2<^F?8c@8GXnC`wnuVg zeK9<{#Xx@Ty4M?bYsNP3j6I^ZZ)R;tc8jgM=gqPwLJqT6TrD};^|nbn{;FHlyftbH z@2b|QrC)USd1jVg$fg%(t8sg`v79r<#~i!6do>H9)#vlAu$*t>eyqOOLw1hS%^iw@ zpI<9%%>TH2Z+qg@vu_h`owJZQ^eJ5VYFer0NkP61dkvFzhAmUHe!8H~-|Y9tx5Z&C z-NE`V<(mI=vgz%=y5qU*lj_BPl>c8mULW>SNnF*F#iFL#Wd5VQ#eO-3je(Z8-6pP1 zJ8(Fk+d%d7FC&kR({m)$PJgSgJ83`XlOb=&Qj3bz^PfD`dMe6J&K52C&d?j29u<50 zw4o8JME&a1ovg+JlCJUE1m(3Kw2S`ny6MY@$FoJ9S&o^8isstYZ+l(X zWufJj({S_8r}$0EVd7a)tD4rcUMZ7)ss78W=w|rt@6K0KmtIbazjmXxcuw2|$!G1d zPu0Ux+D!CTn12538Ru`Iu%N-*ZS{{piyv2W^m$v}7@WE98yQ{Tl9S%HA=bw}eD-y} zfJvKMSX>UBzVrI<@vtpN7jfQuY~# zT>oZ;6<=*@zddd9zdg5P_4%E*KRA8h<^zwCg7Yb5!WWZFH!j}iaHu?HkLh9A>X^53 zj=l-CuDmiL*WbKX`8hX?Usz}FL?-7IW)+*h*{7{?_sHF|ThTGyb5{q`zAbkXoc67I zDIml9|LzUGMwQ$1-YLDQoOJtqS;(`p-JkP{0_IN_N%^IxH#J@8^fw2c#F8T$s-%7_{SjJSCDZ(0 zz=2t7TXT#w=n%91Esp*>gH@#nFZMjXWza2_E8fP#i)o{+2vdzoPRkR-}~+PHO0Zx zrT5H7Bima~cWpKgkV^a4cX`I=GvU#5qFUnAgYLc*U+lhO!zLZCQ;(Bg78y3aXa9D` zhtbHaY*B&UJf4i*?<)jXK0Gj4^5E8O$CGuYAMeY2p@ZV*MEEY ze)mPv0V{|)>Ry8 zJ-zMGyX@kp527z_Ecs+LZ~oV__mbUbwS>=}S9CYqL+Lu#C##FIjNfWXyqqa`(>V6t zhaYQhzZE?hRjtOVeUsPv)+EWGL@QSR9lzq0xZ^#T50`yxMR0;$-Ta_;dA_??;kQAyzrW%bcfrf@M?l*qMB5>ZQgrz z@5olJYyD=H@7n7Z?{Bv)yyX1lXwdtga;n`N%Qa6qbIp=t z)9*#BeR2M63BO9w{BNGI#{y5OgsfY#Dn+8>VNKuTQ$dH$$1k*fV7spL`f&lKxAQVz zr<5}}-%mJacjW!N$2v7$&#&DxN=e^pucNf#QOk>6Cq-s&N!+G7eOn`ESN9x?-j@Ay zkMF%&Y3}gp{b|E1EDuXc6`3mj1Ozf%w)J;!P*+u2vHx?rc5ijHb>AhsO}zGnMz>@u z4P`e5bNqgx8?Sc2BjUlnFPAl2&pq%f%AennlvPxn@lO1>uga~AX1jMr>lzj2ELotp z{q^Hso%Q)DMqEESQ}%b9-|XA8R@mAn)@su1+gd*aiY6SmcZ_}Ng?|mVk4|{Y=%V(( zafajt%G9G?^zn=G6ll+!*fsMR)_H-|qC%o&MYBz|K``v7nkr8ec|Hyjr{_+3E zZ|qm|?o;-@_Ts;ktB->7hq^QMNvYmD6AKJnWPZ=7{{8yg8ZNe%DhUR`u~BLvY}NHr ziTl?JUW_etd?x49?d5#I|Ldg0TXjj@uDYvLkL(Lcvonr$6y<*=hb?c?;b|7R{@xx%zki13!(B)e3@nhq*7W{4&!ou&eEY^;c&J zw`i^>e{D)yzwP{UNVCIX>5YE2*_*4|1?1l>xt3I}o0!hd`-yMajae_RPUa6ynzVkE z(-pgvM@Aj%r5Ur*of+f=a~Dp3!TDd=?-D1^r-X2&IX{!NJ%3L7bLr^)wpUDxuhz@C z2tHwWZ0~XI@$%RHF;&-R{#d%^?B88|F0IyyC%BJP>}2tst2fDdis?pkn+rEh=FDW> zHvP$qf2$J<7A%|<$Z}nFdiH-GAwczyI$DV5_l%X58p z1zU5L&+Yymz7dudcm~jt}0v@H4MI%<)!t0%PZs(ytC1>W^JNwyUNj zdCK}S*+xZXjR20d9Pz8I0t-DR7&qoEtj}m>JD{UtF4c2KQt?$Cg64ZccILfXB;`A^Zu)51Tw`dPT#cU`n|c2-`;zp?;YZ{AuB|* zD%Y@7}pB zYT^usQ2b`QX8o04dmo?elG$rL9|V2)H2>+neaCWGPMtK64?VDMXU5DM zjF-gtRvenAebnx7-{E7z{1ff`jbi%_M81-kc5>CuY1}gp_-a3$nSXe-k2T|B-E}!a z-A{H-W%{hN^T5IjYQ=gF8j{!VlUXq_HLbF#Tsk+aoBNAi|7G6S@jovgDu2eZyLXqq zrp_CI?FYi{aS8>pZSY^%*yZX_dNcdS{7o!VMEXB!AJ$)-#QrVy_R8})S(mMy4Vc;P z>c+Z+9#NMNoOAtpT-E)%6I7k;5`IZ;3RCz7IOprx{oW}JQP|u zJ@e+Y0z zW=_TzPfg-VPQKW-E2eJap1N(T%O~g=CUKuK%Xwt|t6mqySs%&pi23(dP<{rddu zm}rZ~>C6*fJ)Sw-uyLO=J!k!v2Cq+sGL=mg6QuO6m$f8Z_T8=ZpkaN1!TW}v)f{mu z%Et3p-cP+yQ|!EltyGo6rY6VyvDfn{d`JCeZsKl`{uC*mEG*^y?Kb1&(hb7T?|l3+ zsW|uf(PR2KYi7iDXdZFhK3(I{Wl4(#&p$nsQ@StLw&}6A&gV5Ad8?O{tTkX;Bep?w zjTLj>0S&2BixyRKsTA?A+I-@`zWMRePw#~t^uCMSjemA-CqQ#+IXvysXcACMtE_w>-^L`zPb2)-gp- zS^n&cKh$^rx_3=XM(ROHREev=q?uh;r`lS{aDUn{seI`z-6uS%VtXGg^ES%r&MLC# zh}*37l3!K#`R59U*5gxmpDsAOZ)Sj{Hm`l}s?A?jJTEq_SFPnx5535ExS~Fz+<)sN z9uA)4!TYbfZ#eeBfZ1yue}-l0%>`H2AHMQCrardUot@p|NY`G0gLgl~7I?lX4U6o3 z%kaRVDL`uHWharw^9jb~2%j4oN3S9VN_gXhk_hBu#IOMK;4 z(LFfx%HI=fZ_N{OeDi{f|KaMQgY5H)F0h3yJtFt|b=Gw?%S#nb?>gijo&R*e&m?A! z?a8vwQ;Rho3w%^tGuI+Me0P6PL!ld6bH_5Een|Ej$I&USHHyqx(5F7f20ZZ~IEeDCCXU;V7{oxQ=9%)d)( zSC?B@rn$LI-}1}$)vW5%G8-1zu;2dLSv@gl8Bn>gOZ*p3++MU{xp0Z2%EPUS$-71SHtD=RS$6Hl?!4bzCX6M9dI$Z4?f9ED zpT_K)_oQ^&MA7a;F^&zhbU(?saE8BKa&l|g1cNv0-jw+mJHqX9({d(>4AB_{*PVlT3S~at~_~SKkF6-)P`=j_RPri-_i!Df!JofnD zT@$(J#k-n{Uk0yPEqWxyVM0fv&im3&x6~S?_%o+PE$`j&(aUkJ&4CAtujk4&@?Cr@ z=)EcId~?X|?a`7oN{Qj-4!@i3?N5y@5 zelK4s@!#o=+z&x6)4wMQ929DhXgl#Dm&xrI-=4+St8SgO;Jv#i*TTDjVIt4OnDDIW zvtqXy>72Z$Bsj-u{w&)+A$@OD{e6YBvN+Mc!teFPP8z#^8%rN4VY_%FX5Ji@HI~=s7}wnR z!Dy+H_I<9w?g#C`JHBsQT)?f_gG*yeN{{Dq+A)F z^sm)PkKEgr^eN926g-@oBWbWX!;Z7y3G*(dW$otijN#RD)4FC{Sl{qme*OKoMk-TP zCx!?9JYV?V;RUzHme6mGH)^?W2TL+%U6qoLIPyG8H}1^sBfD=c){?QjWcTKhT0hT~ zj^lUr`>$?t{PIldJm-P)(M9$Tf_+&dIV8+0*DrV8w%wSeW}dC&V|}xm+ci&p7Tk4; z`-*;i!`?F&EDZaS`0meedSWlQF8Ji@o~28L=PIsCZ@KmH@7|-Q-@6?W4nESNy}Hl# z=(S5NQ~MtNeRj(^_|b)lDo^a^E&1#Dz0;Y&uAPlTI^}L*#oTL+vZAH?zVGAdocBb~ z|JU5*dN=vr{B?6&_`AcayI|p?f7A6gsPyjkI{J>wh^a()s@|?M%8y0m?@qNf4_G9; z>ugC)m6hq^iwWV6gjXC~%Q#nVibhcD$-gykm%Q9H#lYghkCO*CRH}EIg)o@edKi3+ z&ii&{`La&Yv_pnFj-*#-H!3xTUDqr!yVH3pu%LPcQ)c<3r;%?u=CR#)dpSET|NLHW zKP7ATyK_u=%G{Ps$T&5(Fi`pYTz&&h&%VT$o*#GneM!-B?&v8$A(S}KmN|g*#^&6UF_^J`mYQ)xrg_xT&-RlI#O#HX?(SIjD`M0!^<;;${9ouGy7|Slax$S81up?k^bkg}KC%L=h*-S~Z5Rwe{QCA;S8Ot+lC)uYt3rF{B{ zfK0_I(Pzm$e-61^t=nx{z5VAYi*)A14?maGT6~FOZ>rGOH(ohU)Hqx8&6}@_?>6wr zI2C#wX8fL_+7@H-rs~M!)cto$wgvj0TH41XzF$8qUpzS}rpak>(x>ygjAyb0$EEE5 zB)@j@oTjHt8;dyBo2SHiHgef6J)qCT_I`7|;L{R@*qirTJmNd@I2mTX4ej6V9ov5C zsF`U)wC)jE8_r{GXS&y=2%Ep~n{vt_?5$(lg!`p;d8cNI+J~vUJe>5+UMxd5(BO-1 z#AzGlsZkjQeCZ2qUNKku-cB_P+j#bhnYY86Tqi!(XPsqG+K4W3Efy8Dbljl7Xo=pmVm$m1PR@f$Pu||W6i;g0S${gqZ zr2bfY@vwBxRgU{~-^uePQ0a9^2%>wHB zvBmwHOfOD+^J!7<*6DWV%r~8#?Igrj|Ez%d>Hg}c`A=ZdUY`cpQ03bU=i&lLOJ zCvsZ0M;*C#&EvY&iNF``ue_}E%W_XeZjbup)M-DR<%#85-YvEh9@qC;AFwfKnBMrM zaD(6s?tPUt2k)M~q4|tCvc%%8|Af7Jvt%Q)f1WZu^+uH`sZ9LPWW5aW`8Og@_uXo2 z^}EJ*Sl`NZee~;HTl0m4(m21JzRbE&IrE;Rnu(4@O~%5neWshEjj9E8=H;qw*>PQL z*4xPiZzh^QkJwfx9ePzHeTRGar=lzJ9DWO;=4GVc4BX(O55Fo2P!O5gFgk!yk`Hq*C*r&qgPn; z1GxvvlNQeXp2b-7YOlw#^UTF5{zo4__IP#R#rd|x_#YOzynk=~Qvb8csQQ)E$E~{7 zkLRqtb8nY%?#ZpsPo(9ia=onh|Mp72`sL1MeHwiR0dKd7CTU!H7{)X;e|Ep$rrL=f zIeX3=n;`UF>64O!flT|p*H(+%jOMV_xb4$+acJsH6}oe=+bn(e`M=B=!F>8PZHwP+ zXNihPbr3PwfBvn>1M$a^VHe`oPktYoc}3z?=$%Dh1iq=Y`EvhKzjX51F*(-R4bl$k z*WIf)qh0H@?+4g?>wGx-WN?bqb@uMJ%{ttPPIoJ}nJ7JVEUvu1FJf0r&l)+W18)k_ zs;BzT6?z_>l{I(?8X@|GN9z zX?lghcE_Ka&U?E`seG8kp;u!rejxM2lUe?PmW(g1n-^(RZ}+s0{mqv9aQZTK2~*3v z0USwhl-69I^ZR%C?$38uX9d?Z>Ac-{>AIGosnS`ozgy1BX+8cWptp2R*U=h&zOHXh zpBr)_<$iz3-o5#)(V9!&5_7lrGgSsY6#cR9pFel-yPetbMAL5-jbHBg!wGvUx;Io#dhtzF=EdU= zWw#{XSKU##(zLGM>4yCV*;RZ>Wz10`w?zdep8p{8LUtd=j%~_yYu}07zxgo0$T|7J zgX~SBKaRXxa89c3kkGLk|Kv`+SMhVw05ykGld)y>;->)C8$1wK}Pb4`yq&J`5BP0=<(f|F(IIjmvI7))4xz`0kU8trLG9;%16edhyz%A^)$5`~CKA2anH5 z@|>D&_s^ZIl(*UF5%N%eRZM5Kv~0h1SM%3DIj*0yV*7G*R(llfW-8g^FmK7532%?F z-Tqc~oO9+Ip{3R5rZ+4(x4Vg@URf!sZS~D=d262(qX5fGy$>Htr6n%WNV<3E`7fio zyTJ)3>KJ)C7N#C$y1KlVAu{a(<99aO&#XSV1?IoDv9DVl`&Da)N#=wbeh2T}D4Wyw zH`uzNn29g?#;L@<1c^<{!qze%gpHL5bF46ki*&1pUE zTs)^!f~W5OmZL9zb87T1-Fx>%xNX{zb2;-xjX%zdJs{3_jAf^-@e`i+?qa2>*1kWl z#E0+xoG2L5y!AC>{p$43T^E^ynUd>2tEDq1mBaDT>wD|=OEYK`S!McO&-Lr- zxNQ(;xc~O?ZCpuyyLx&u|JCOIt;_!*WpRALlDpGFE%qPTyZEWp?Q0Hh-ikWTd;82c zKln9GV4j&vT*fK!0&iQh%+)RxlNRUZo=iEs_7LBdBEEfTdvX~>mQJxc!ezGp^V&&S zLH9hXUP?Q#YPi_lNV#rt`1^+T`(jTQiK-}{U8R~EZtr!b^WpJ*jlHa!w%cFibGkJ9 z)kn8U7PULWl4r4LnrhETnyxH0@$(u9?{jw*1KFpYyxQ~p8e9GAYYJORm6(4EpR?a~ z*Cj1T&cx={Qw}GUEi+AK-B@_fc6ZUs<7bvgvW8f%dGR}#TWj}XHM8BlZYtXxb{8K| zu8h2xZ)+{4a>$DF*X-=_w);V?(R^Jw9=q3UUhdtJKY7}+xnW-_H!nJTcjIv-4h6wk z`)tcCY@8D|-QAS&B-CCl=IW&N@^8)3GiLd*&$&G3zIl<#%IFD#)#3Gp92`nn2j7X^ zuBtfAe*CSswpA7H$)xV*&OT2&H7_&sPnn;!>yJ%GLgc~wEI(HpFtGS7Dm=xa@Q!DB zAg7;Tsfo+^TP|(0LN+Y&wwisSA(HJ+PyX{?eOKZpdTp5#t8qw0KPhJ$Yj53?s=&fs zrC&2F+>SQ?b>_6(cX-!Yy|iq#S&9AvE1hp#%&rwg*a9vP-_UZc}U!IC5jn!5d3AT1L-(b>o!$F8|MaBKWpjAJ%irU?^NznZ7fu z&$uOIg~x|kikEt~YOB8Z`2SAi&O4E_d!BiCx<}h=yDP@p`f1w3*}oqp)i=sb?YZN$ z^68$4S=+ZyOq`YbwNWWOkMo?$5g}%-&Y9Mi?o7*#^4~J?W^-KmG`;e)?v`b~JuhPB z967?Viof9Sio6N?6>h9Fp7vcVY|Ht55qoUi9;`3Z*kqKoyhIET_xruSO4-yiCGq{Mh1 zlsYc=({A?HQupSM>orpGAe4t!2)Yyn0rqsrYQeesPhxb!Ik#6Jqmp)n${}Wk2qE8}}qj`83PS4!+#{ zYdsqZc`iEIeECq8w`1PrH>u0MPOp>j@7u3ZH~Wv!sXcEb0^US5a6F9b*{*J|#aiI_ zJe4!nTNDz1d7TlMrr9LHC|A*bZ;R)%wEx=+zD+MUb-#a)zy?RJkIh$nb6)yN8|^)| zZQ0U0o3CyuxV!PrnS1vZ9bA2%`$3jc&_?yIt81MP&gR~kneeIfE^AS4Wsj-i>h*z7 zWmA{%@V1l&zVDp>Jdj19}aBA=Ep+IXyXi@rh~UOe&9$FN^f*9i>-hCUjJuR&DsST zg}*-j+PXG*>+6R9dLFB{-9CEnLBoLweMRfom-L7CEI5?^$!f+qq4(}*y)yUxKSzBG!jE05=rtccBm9jWaXx)z!nsVTSfQ3|( z!o7D%TO1fq7U$WCoZ2EO6;rfu>-ih;X7^7|p7Nuiec6hGzXadketDST{W|GRwO(Ph zl7@}xA&SPEXS*K$cRTD;`Pu82%BCge)HS_T_jxxr?c}jGzO#LM_twq3rg3K79i9m# zK8FgwI-z}eBCza3anwo1;d~neX^EZ=1w_ed|{3bH}sCIqFhHVdptR2FRRHk3|y^{5F z$%Z1ewKuQpn4Rp>J$791u0?W?) z|H^OWcCL9DHtloL({=U-5}EEDFl*Se`(p1jQBm#PQRmlrE3@}mW;4nc965ON=(?%= ze_t~8$gK>xTWIMlmgBnrsi{Wok9M8QC!`$L%n{$6CEH@RR%xfx`;QBDGcqvgDjjS* z=p8oKO`vx3ANe)uyKlt4KBiC*aD2nc9L;re`UOIm7(3z?T}Xa+CH}^=DBJi6uP?Ct zoiBTNg`XwcuY9u^OHDSFwX658RPTS#^o=tzdHwr0=QcR_w@2~iITXF>%?NQ|o>krpB;)_8I2lyEzr7IIc*VI~V zn<`K)YhJqTz@esCv0rN;{sNvdw1i#30Kfuh$;*PF85|X}qD~WpUHz zD_4_}fY>Xi<^4Cmsq8b*ToN#stNFuAvsG$uA1kTMU;kKE+?kv0rD~@^v3hZo)+}aMUv!_^XB7mPop$UF``*COZ|!Q-J=I4F0`=h zX#8+n_t&Z??J8&UioUGdGxe1Zo7ztM+2eWm|i7wwGYyE$i$NS=GdgQ~?# zuRcDVC&8hy#Y}gqXa=_Pc zmR4hVE%R#6eXH+q-OSbrjF__hP~E9yFX((k#Jlte)ILhnR_n@EoAmL zaK9;L^K8e@g&`YwTlp=eWP5a~ca%SnS6x#3>bhIX;XOXL_|`PMi{edjtzn$HFyQ0E zGS@$9$=f{I^G!Z({gF8{R>D7K+L!CDK1wRWCI^h~S(r8K5>gS^GBg~Nw#rigC=9jgxSD{Z^FLgA6S zg|yY#zAB3&pQ8S|?>ix!DXp;BU5{P%(rcLsudZ&BI@P}KX<5gWhK`5qmUZUmzF*gJ ze9X$VwNJJ3JEzeC^>f?5Ezge>%uQSAx@yIx<-ZPO-8sEHH(IJvyO+6)ulneQ?7|Zh zvQ2*<-H;f{^We{gmGe(kN1xhp6M9-Uw zsh?kGJ^p?5$yJuS(viy^H2gfz_K96Ulvmu|<=~YK&U@cVN_M`uDY^1{hLE;>rxoWL z#^m51OuR`OvN<1Lx>0AD7W&DBsqE*C+Z^-voRyfBF!_gv(phEwi9erzNc;Nh>K{P? z_Ymg)CTEO8dd$w0TQ*ExFxSj_M*9|Co<_Ibx?$VSE~+muu&IPP#heQbI_FNvFy5{@J#)vz zvy)8%XUz7AoXLCpd(!N~o~nA`9J8DzebBnl=UD%EDTDQ9U6Buo>7VW`;YkZwV|=jn z--N>+^Q`p^bf@Hsd~SGk>zvG5tveQx6Si*;p0xR1@apJ^`=3s~@O++EQ0jz~j?mP| z8_#n%EUsAUOiUH$;5xYOPw1)rnG%vQ1JD}P+N$f)x{ zYF72s#}AFfdf!a%xT(c*D)!0kMfuS^GghP?tp0h$fkSiZ1fEmD5B+Q6|LJMyx-f{Y zi`eElzh!=tN#P=|ueKsS4q}VHb^27lHNNhsT4Xqhh08SS#q0~LCwv{Rsa&bfzhuU> zMpR<1XLXJ3u{uj9)f-Dbc&*sBDEx8R#$_&sEFGs${wuiHv?PIr^SU_0+jFynCK(sb zo*Gwvzjjk!_9WhgwNG58@`&Ah#k%_KBXzYmmdnrOo7MjI3ZBNH zBhO;;R?O+C!93BIv3$}xj2p~zla@5k+*~DhR@`Y;OqkGund>TV$8{*@@Pu4o-CBI~ z(9`1Col2&S7mn^}u)U!!IcM+11?~(>&+)G?nyu}=_{d~oALUPNZ<>|MIH+Wg$@9E9-WFybACr47_eyZGC+py@KqXSQySm%qq zt%6;0OGWand*>89X;i)wagOg4+pay^PK30XSldrdVPx8RRJz7E^0MsRxYb2ZU(8bC zJRirt_+_Jw&wZtuC6gSsA70@(`>}4(zN5K?`$VO~^)k*kwAr2hqdw{K2FVk`FC~q7 z4*IO$KE3FP-cyF2)Yq+T^K&mAnCFx1*7Cymky^%KZo1ik&WkuZeWAnI-kH-BOdJ?v90TQd&9K&~Hd)E_X0Cwo`OBi7A2%hJ)_po@ zJ4dW}sjLLom8X*ak8b@r+HExN&*N!J0>6J#zgqa9MB+p5uD1fur0u-fJTv#Xecd+m z*q6OKv^n@0?c4Tj{H<`@;j!_Z-h;K_Zn@H}a_OJXf+>rpO;5e= zGW)=V?q8FX+gC5oadhjrcGL5M8Ikvmr$1pP+FOle??@+V_Vv+$NcCm@mL=6`y)&hv#ys{vL@{ zGwm(T>9mFPmR$T*a>V|H;ssa5iI->J+t5&{ee$9f?<)DAuWt7geT6a~D(mK+mtXTi z-tkgK^`gI_|N2jF?Whszz4U5&;NL>lntqY$RXcZ?Z*36y@L1ut^O`bvuT$8E$?fm^86BnSvlCMQ%cY7G;dn_ z^9A?2?~85wW|+nvUGu@@Wr*w5Z?hTvT-5i^o@#T?En(jQJ`S$^(>5ojt1r%eug;OV z*v9JsTk8AsdsH$eoOFwRZK(U>N6E|5bv9A+O}}LuaeD3J`B9bO^=i4qnJHN=PWwyq z`IpA2c=QW2-Fx-A=xx*#hBHgeeb#qraL%7L+3ApkoFp(PHXe5;{@ZzHtEzm9=BgUcAB$tT6H2YlI`@fB zm|3sa?jI{w@#>Uh-$b4HKlYmN-&$ZuJOH;!}d{{Lm>m5{3TPjfQM<}6@; zR`%$|FJMU&y2zOLr4#m~zxtZR_E$01@ayY9<5zRS}) zggN(?f9zxW5+st}61nxf@xRYH??0XiJj|P*sWJC=-_J`1t*KiaAODLC+VH}#alx@S z)w4EDJ8co6xBu$1vMsHpefDZ^E|?oJDwb$u>Zr!+F&7u`g?w1&_j~Q%V?X_~?nm-F z`3Wt}+x{Y|@YeqyFSai3onN#m(Odn2lHs|P>m3DK*4>_av(0m({S^5<`=6Cxcb9iK$};d&+a&*p>fGO6DjDqd&G&AYoXhne7CT?u z)D$s#oaUgyu;g*RjQ85r4+S}`9xQwNd&XYQgb zzdOkEoayEVqcvyde@xk2E`Liu@_4WCn+j3K@KTkFVKdKo{92c-`egPBlM9v%$^UP^ zS9W=A_0r*stJuFv*C@TI(Z9>QRL+@cWC%}ixfvpQk2&Le+4F1P!au*LxDEM+lg`|VpZ|4F?X?4)ZZ5Sa1TWq! zZ0TE2cbaFz;_D~5emgI9-r;Aldy-*Y?0Spb31KPR_I*p9y=A(+-RhHEm3XD?(LRS` zW`5d+6D6-2#G8xl+?X$=6&1p4#j?m``4_c|-ptL)2hy`|DSSwj>6cai`q^6BuyEu0 z&1OyOvP90YXLo-7#%S@2YrkEmI>kZfpHBM;Diyvm;xd%3%Rk~bL z6`+>u^g`Dn@K{B+;5u9GzDo=r7Dc)LQ+Qj~5thQte14Z)O6V-PrTmwVRz+=Km>z#E zY0~LsO0FMm^6DcUHfxC0babx^)6`wv6vC;0;`83+y|+*Mw|Bl!tFlVm)^F-^Yx{{e z%ipj^&cCMjug&+>F`9vM>hUFtr=1SFhKk1=Gnz8jW~~uJn(?Wh62&|IrfIaRsoIHV z+>z_`DrOh!yJG&@Fm38HjvI{5GFrRK+}{->=!K*&YTWUJ;i>gzpSc3!C#L-sPUrV5 znaM5~m-=JwyD))Y+#T**C3jx-&A90(_jpFs^TU3Nxpi!R+OFI?WyZJH@pY!!Q@9?p z)jTVf+!)zYJ#pz=mXELWcEEKMxAe_l ziR$~3p<40tG9hYv&#{sfY9G_xCZi8>LuI~PE;LXP` z@%NdhR6Ji|RQtwR-}{z?zjd+`*NZDExhLnnj=$KWV8Zhx`)fw;4Ye9~hlw|jr%XDq z=fx>`x8T5tFtHU6vQ->IIQC1L&v%{sS9M+P48MvLhh}c~o7GXyTNW(n+&p>eY>~+# zm$$_@2d+)$-x*(ZV#C6RFBkiE>gKp=>jtJJep!3y-F!piO}~9rmdduP7X+KLOqtqe z(wifA=($vRThJ8kxtAyJT~}x5_wB;wg$n&Y)T-mYo4&N&=;(f{w9i>U%INvB4YwZ3 zeLUA>HMwW!%Bkg#H^2OcDr|9})hRNj%o?J{zD&MulrdD(8T6*tt&33l;VxfC~ z@2Qw6(7g8_GqbW6TlC)WD3L!#nzol0FP^(}%JtjUk)8D~p3IuWx#=r^#~lru0#EgD zyW2CXC$XJjm{9VCnd#oU%*8A2a!xpW)U##RZPNvz3sxtb{-V?v#37@o!gyz+y4qJW z*Ny*KrX;palC<2!{n7HOLWYG+yu%&!e6C$bC;77`_D|1dUD2=d`iA61zQniA_I@=& z<`XAtU)*&Vb0 zh3tCwoQmKzhdT-nnO#_X&NbSdEimTVvtynjGA^OV9M(PkyD?U9#*?;3-$YpwvV#|O z>@>K%xkhWXgWe%)qeIKZY;ylFEL(qR`*KO0kV=o=Z6{kd_qw{X zjvUyZ%gQFdH*ejlohkJOKl%$wR%r^ZU(VZ8U!W!!UKg-WwJM*^-y>;Doxs2n1Lv;1psPD}p zDMqX7qQVy)HG5NT^>~hZ=Ym^@6@5Cw78dqNJ+?i+V|T&FX^t1B|GX7>-*KJBi|~-- zIEKO#`4Og@cHDXYciGY3KbB~HQ$Fxf_g??TLzc#MdV9n!9#=2m7iGCKukTOx{+;PY z!G&ohwJb(Q=cYP3luKsJjC!$ec9Bx*#?99yT7U0Oovt@`ZP)(kYB9?%ZoVuw`%|XS zUPUS0d)ZPFUpqc7Jz?V^rr7^)dF^(|8y_3rg)Z2UEziUk;d&uhd3M8gyZSjVGnAsD zpPX0q+^k+{KJn4%bR+(hnjBrlKnWPewAZYk-oVuP z_^2|klG=A~153sf_Ng!1gRU8{9yoW<%1`8L<(y4ZYwy{;?=zM@Z(ekI4{uZ1w8aw2 zKTp51ULR+9;o;Iv@#nv_Cnq_ZR@u&KYGs*yoMTPzUA2@c%TG;4>-0qJ zanrZ@n`<5%Z^&HVu`KEGZ1ELrGpZDsd!JvcZFM>vzR_~#ayga>G8=f_&bR+;&9#x?INZpT)U?IjBV$Tdo}u;b47M z9=}za=j0XZwvRV%pZ-z79;Gp1vVd09h=R5eYD}^_-_KwMxLOAbxet3Q z`MDBfwpe3Ud@y+R*-OuRPD+St zu}@Q9)o16VHr10XiweRzpW9h!|9)W}sQp_0iEj$)+1smnraAX9{LJ{ee*LUXlM7cp z`QLqXkLjnEX$#c;%$Zy}>1@tsFUzaVi&eC3e)mVdj2BCN*t_rO`SY9$j@9(4xJxA; zPjB*M_?#=9&+nM93B&)Qnq;Ct?x@^1d23XRBzpyVz^U0;c8yayv-52 z*B9;7pVRo_qVj?rW@Vei=l*Ewl;-c7&p%Z;^(lwcw5l690ax$MQ;e|NIMc8X|k$>a9{NLm|(<0LHB=QaI8_X@%U(J8d#^KQHpC zdT_P2SyS@&WeJx(Z{I6LZE-SNxL3KRX1;BG_00Fj6hBl5i!ro&yyrPI-D%p*FMaEd z9-e2uSJFa{X=i<$&Xm`RyvrojeH-SLcII~+bGdrqW6?ItZ5=C(b&@tZtuA(Xvq*ba z+2*D;R^OXe40^GgmIrr7w3^Re-et;W(Rj{G+t_Fp^M{j@7wUA}ui^2ywQEmrtvqLY zj}mJy*UkxbyZlNPyVVv29nwzMxaT7kCVt_n%f4%G)3vO%l#_2d)cF{-DL*~2CMh>K zdA)qPla%&#vy>-Kk1y!*y8Ae5i@(2&XUVGH`y$w6nzr&w{!M?+^Y5`~N3gZqr2W?I zJ2Tf$JrQK}`M~16_nr&LXK0(d#eCdzV`>{id2fpUn&+91e|OGl+TJLYy<}s*?-v`z zN5+%n)?4o`b6It1#v9Y;4PxbC3>q@Ow`w?^%5&Tl!^rT&@!Y4R`?tgUKYYr*&QPaw z;qpp}XTFORC&(4Ki~E)9{@rW8xg$;5?-ctB_S`(D*}t#Wy4J|m*_>*4Q&n;8wx@5G zz{cM*C-k@+~n zukkR)mbq%NpVt|(i`B3-GbetS%&N(gVsY>es)nHB6uOE-Y7mFk^I7~Rv zSavRBO@27@SC@;7YS|0rHuXFce89*4{oPxK-;3CH8CJ1vW8HfFYSC^Jc|qG--O{Uq zvX4y7Sk?t5y6V{{J#>tM_kdKXP05&_b_Hr7sQ@InS3AU3u*&_n%$2 z$;R*ydzq^`zcp`PA*#l-kdSE6ka3YM$JK zD)nX|M#FNiKLr7Hr}ZOdu*{pRdZaJZ_J_NEhwOa!nVS|?uQYwavrsqw*Fw8z(z{;Q zc06$5YhXK&ZsO{`YQY?qMJ(6OixuvE>^f5<>GM{l>Fdu2s%kUVyS!)Az9p9y6j8au z<9!U*`2rzN<#XGUlP_Bbt=s$k+FRYnPZdHcr<}D?Ty%Wi>btJ8c`Tkcy58J<7@qc~ zh9}{+e$%c*r^}trD*HCOXy07cx`~5z#%!(~`c;8*J&sj{a7>i@xAniruBP1FGj|`( zw^U$G?UyZ(yuP-0@!i>?FBYn3*go*;JGpai`MNxZoGcyQ7bPzxeilw?4xM0h+*;zV zey3i+;w7)M-gEYbp15yscE_XBcy>^D);)!<$8rm9n)Oe=N%1jmNj_EetzrO7Doi|M1bXGpGjJLXy=uqFV zJoKgHmuJ!p!507gU$j4-ue!5luhd<^-99q@2NHkY$eYq;y~Hzqo!7P?H_d=++{#lw z-OKy*^zpJo54SU%^pja*f3hdpXV3pFEE9YKU#M&`ko~}UsonLIYcV9o%bNcMX z`X_#$DcJQ+r_{Ba(SXxR(=T3q;dCWOhpM~$j`E8q$Ma-WiN3y2_f4oQ%v^R)OxA|W zb8_{vs~=zBINU8f*Y?7XD2?}v{4HcIEjj-zD(jcngvFU&*WZCoJ26|-yC&ek1e^P< zPP=mpcI#Z`JBTiSBaFrz7ifE z`}IW2i@p*Lj??w7i7bdJh^`c2uU3;-X)%v&VqWF0KXVgj%-`0ot9+%bBjnfZ zw?*AIj=l+=s={^h)>VTwbu;QM_ifQ_cu=6F#rbUhH@UTUk2$esmW3LZ7F#c!Ez93z z@u2QYwx*SDX3mPAeeWtX%L5wz>`mDEX2+E0eO?Q+)8A`m^tgs+912;et@v}%)5q$Y zlh4XdH+0bZAkLQZay2`jL!V^91kR#JR~6%jc3V6f*zMoH(fhP=$+8>q^FLe)d1SZ2 zGxz8Rqq>mNnvz)`O`ooj_nx{}TDkV_8bPrG1q)C8V|cbv%id%1qe%W0UQf?woKbPJ zDDxK*$+z-<($31b!^7lXoq|w{X{PE8^?Q{UQkc#(UP|x#tal4{N%54@7;!d~gVEOYkuUPTr%QpuY4l26K2f4k8%}DFq81rs=dg2tu z%hw(jXgz#;?vTDw?|~l1`YRg>+7}0UubQ2e|G3Kjz~KV6rfuf~pYORbb!X=jO&5*C zBWrgYVm~W=-)iFgZ}pM+c8%x!FDV^=a+s&pO7GuHah4qQOEXX8Xy-n1Um#w^USq^4 zzhl0^28Fb*HFk$8>h2w@+_=p+CQ+-=N-gok>#IJ8 z2{cr&a!Q7B?D7#a=~>Xcxz4Ah?a~S1l>tTJbB-SGb-Q4>rn#G=E50{+(&;_&vyXFp zJbZ)iN1LP4>8qCfx?k;T&Yn@evF^mSH6OuNkIwBUboef_@g zpB8SPsq#Q;`3|r0|5^d-g*LR!+peA1_<(P^y;_iVq@<(n^P_E?9h`<~#(QV}-CB9C zc?AdK!bX=F2cCHtcRhV|J}>fmRjPNU&|M{F8Jk_+C8_IXt8cpEdC2zN(@mRw)^3`( zNk>U6QrqxsamqB6){7tObrt_^Yq{~NccVb;imA%G^N&5|opW}{zK@#@+!HsFGrn;n z*xmQcp|_S{uF;0~UHV@gu$Uk;x#3F7iDSMSR%~6Ylx=aN^>go%r04hcdDSdZy7A^e z_m;cDN`ki*>o59iSL5dCB*~F%c=1@x`lC<3DP&$3x^?)J$=#i5J|@S+*?!!#&pl_t znr`ub*^}??`11pPOXHWnm|F8M6y30L&bW)eagaJyG>a(pTDMacNm&k5$my_hMh~x*TwvR->_c)+4_O zi944#y0P8~lDAt_`5^0tmxY}CT=Cu8Yj&FpF!0#TKe^l9;|s%q-`0Mo1!8%bORsAk zces#QTbs4;UY%*2GK0dzDGzq^8*Te)kmTiKyv+WD=LDG>nwF1FzYf2Abl=Vli8m~a ziz}6FYs*%s&OEukM8HPB-YJYlDOBdr^z66mlu}P+?RR*xUGk{5{Ik}YBLX{Dm2Xg* ze1Az>O8sfA9e3_tZ+g2(p6w%{Oh^Wv8xM{7y1*@jbOnCB2KRzog}ukF)++`E!f;wBLKW-{)>>ztk1!&OYtD z$WcqSL))hGhfP`$e*Q${$?*63>+bHen8vOY*|GXf-8}y-njVw$7gW^DUE=9vEHk~@ z!a?6z@a5zji$%8PU(9pYyid)){WfYsfsA%n7{7Pd ziP_9QB~m8no~qscLaEr|+|P+OzW&*@`SwGBTPZ3wrUff9W*@cP;^!|or6#{woawmp zfv3~gXa9MW;2h{)tXI}DabALBh5R?8fEm^K%4@g`Dm!OP_Y;u!ydN&jd*Q&nE6Gy1 zj{})+8vT$x{UyfEN67I*a@ZU*zhdj+rrH0N-PSrkbA|9!lW&P4p_)JEwW#J^_0ZP1 z)Hq9cYK?`_4Hvz?OBXf=Jv_QJ|IPB8S8P6^sc$9-7bySioaGVu=G5mW(s|3@Oj&wU zMxk`mWR(WKTh;Aa6Smy&U2-x1jLt^p@Am#*9$vCluuC|lbXB0IVx5WXp>uEMO-Pkr z*%+>td+DA=*Q=U+J>Pfm%?NABWxrr`F;~quEAm|a)|}H#Jeq=g6#xCb;{PQ6_4egA zPA6>Y^3WDhf5Sc9<*~GvW0599h}Q*)oM(SaPe^>%DPS;XbYht4So{1x?^>NxZQpNh zTzfdEwkSdN?D7}C&)r)4c=C^~2b*th5}9jee}i>W%z`Gv9fJOSehzIeGD|+k%1mGG z@#=TO*{ch5cGmQN%scYQy)&SegX>-Y_l=i=vVWT9o!VYr=y82%VN{&7X@Sa>>gKjN zwYThik8Ke!y|yX%n9UsdpHXd>YmRKozQ6vj$in=18AoM}9HxC1^&KjAf_AverOZrs zdHTau#NspOH^T|H6TKgBc4j6hDYskLpEdvTILXwgT6+EJyV9b*x2hI>UvQ^liufv~ z3&$&3o4I9NiXE0XsP8=UXVf_COlT2c>C@7Pe&7{9~O)&mo~rD;VQ9MX4j8h zx3Ts46U8_j6a&uB|IP<2!!E_eRI&^G|Kg ziVn+xS5< z=lPbrxjiZWCq!uU1b9hXzts&p8h`cnDbwREy*+8ySNSBp)ii53t-D*JwM}*J7lxNV zTiiv?aGPtgR`*`&^jP-Mc(3kd&WmER78%HJC#cU{7NGQE?&GU%OQMSmZ{7;#JQJ83 z+rakGbJ3PxrXO^EuM0{MlT8u2`EM7a*1gV`(=Q9ln;n;Y8UDG=P_@ivf=`57^w)QW zA$v4qg@ZOukKP%7=alT{_yv-lF&npU`61}SxP0=iJ8RFD6>H32pv_VHzJLGBjs8j;*}U*B_v5Sfugfi2@0guhcED@Ww)+!a zST5MuGw0H^If8T96QzE7)cwuUyd$;C;pjx;h}u)d-@{thil{{QF7Mr7)}a1P*2KMd z$Mt>NUng{IlDeJeeCyJqW0n{GBs`dMP%~t{w3`--quI*K@wa{VY6TZf6zdF9wqRZ9 zFj;m@XRB+nX-tVwZ$-J)zKK8mgI|k_=?mu1Fix0PC=%y#+ozfRZXWk;+m0RcZ%wU> z?R$SZmOb!H_fMWT;wqC5^E0TV3m1QR>{g^}@c43!>9SYpXH_Gw=Qb}^<<+0F?4Zu= z*-{cad;ZT^iH~1!cg?fi`hG^jxw8{ljDB45w!S{kW&Ns( zs0;1y+auRC^f)aLEO5LXc!(>+Q9mR7k&@=>UAC_iv$B=Ef|cKvJAYdCb-8nf{N3bD zQYZG?{F>&wdDV04<=fYuytaAjrYx!5)2FaaHH5CcYF)B4Q2nyp z8g@mt>|0kO7*bq{H=knLEPVXn_M74kQTL>{O9U2&tb7&n%=O2uGhMG=``=2dve~;> z@1uCdVXuWwt2Afl78$B|yghed;)~BUPSNkQ#T$236kjNL^5TKvs#R_`IFgQR{OFO= z`glp($C&fgo5f$POJ9^OR;ZeubL4Y!ABTXznN*#+7?mVv<^7859|b1z=NsJCWK0C}ae|NgAn|hC}W|-ofgU@sC zxt@~^+*&(rLD?_1wW29AL&HAoIwu|w!cg&iLCo};x?9`2Vxzed<}x$Lw=O&PF3mll zf-76g;Le`%yXm+3?WJ3-$4umVbgwY8uS~cq80)cP-GjLbMjtYCjCb3t z%+tNwt#JGG#7q@~lCYg`Q)Eh?tp0R#Rq)*t&D|-kzNbzWwq-ouy+h=wcu}BLZL+MD zN7cgni%ommmjBOj{7}85enr?b^`AU%u9^N|@v2vkZMiUiZ}#-%*S3o*PI;zTC8?jO zEF}IqQcFGbk=-@#J)FUTTfQ9L`?h71^i?tE7aMNsTD@xYO-Q$HV0_A_>na`=dQ;o? z$mKl^SF=7h-FPuk@545Sg-T~$KbO3(SC+4~I3wTj);YnN)+LHYQ|8EAuwMI7qkYXv z{pPb8dtG*2uT*VFUK8FLmi+rb*lG)fuPv{y_NZ*)UaUr+Dqpgf;ZHMpHy#?$~`O6eo$HEZCl4HhX_UaKZ{m) zJ0ITixLNPR=TF5uch4!cSs7q>>cQU4)q#GkOFCMDW&;BfwpWd ze2WgeyU!c$wne_WN!c=yqjN=PLE+ql2{PL%1FzRiaOgT0W^>|Y)3q%9f7r zRZfz2i(j_puu!n(lm0*h{oOxb&ic`_jyvcEhc-j$R@Ip+{&~i)^(x9*hJ&P7Q z%zNg2#MrRtvk9AmzU*96rcG9Hziz%hD0f)tY_>J?1<^0tSf4c>vXm2vD^m_psqj0L zf9ce{t^apK&)9nWfMyc=$3idh0|JjzxT-tOY0M}SuD@&d+gfx(Y!IX5CvU5BXA(V= zW=>+NoOZ5x)(O?S-=;CNCZzK|%u(uD{W-?LclC0WWt%UR?B4v8S;nO_J!1B1DbAiB zi!y#2%CB_0VZPpd8{0#P#noZ@H(#!(a81Zct1Z~q@3!)!z-E8`>o=6!3zg$9on6y( z-O=u=Lw5D?wN|ZD4>ByzT~(QCyY-UB)-r`O!-IDg?_ylaFlVKa@UJ6`%Ka5zwjKJx z$m;0&wK4&CU$^R zU~Bi)(?{1FlIN&iWw&~6Xxqjvj{=YUm+8!#T(wu0dtMP@dQ)e2EZch0evPxivwZhf zRXW(Q`KqzVTwuIg#Ts=ni?jD<|MiR07OuW@h-(h}+aouY@2;D$cZovKhO^7uwl_LE zxaFRncEsxYBcrF$JuCNiR78m!+L<%i|5RyUWy9Y4oxM^WAAbeS{U7Y~Z_$e6h8~H{ z9?y2Z)$48dRzF6~Xx%=m)Vf-1Z}GvO=V$6x zeee0QNzHY)?cc@EE!VB>a-Zxvl_PtZn*W?bo7PWKKKSPI^BIfp_#|A*j_@qFw`zC( zf&`xpDan=vl7_E%k~OhlX5!E)@fdL`r2db>ashV(gU|$h}oFCd;JNH3$dO3 zYd4vkyPB|-wfjZS0*=Ip*Ke=3?sT_P`1Q2JQ76RnT=d~ExB0CRO}R6>6|QjJdcDHn z(#-R{vM;RGFTCU6!@RRhQ`S>%(RB-pXA!zWfB*KMmnrzNrsHd|As4^5?nh z=k3e3Ta-7`<4*evhHp8Yi;QyPzA4*I%VN0sv}k$Jn^dc|aGQx?Won1wCe+Mvl3w`n z$RbYRC!VG+k{9wCU*Yik-l*#mpnf}Vj{4-4Q+9uGY)wiky1RM4Q{c13YFoZLehJOL zl3CW`F7AHdWy@ae51tRUWnVbx^5k`z{ynaSUQYGpw@uzGe)hv1t$B2X zS^WDJ&_(f$MmoN zZ@usoJ)Z;^xt(C1wd(wyMfp}m9jmr6>YlDz_P1bbO|_@U@7&j7cejdyl5<7ZsboWa>`8e0hg?3tShMwEe1^vNksEl;f)6Yr1}C-pzBmVQ}Ze zBZI__xErCY8-~}3Qcd1HQrlNCOz>XI(jg-k8h7H$*H)HPhY2bkbv<)q=L`8rAoDb2=NXZ)&-A zcOKuNZD8cxU~o)tf~BC#iD$loPnO5*jbmgL4OPh#He}e#?7vMf&AqbBEU@XihC!6_ zu5Z1{`!<%DL~K5ElJ87F<1Ih&rwpM>#3btMRJpl|vYbVw{#$;#H#Lfvb-(V%F9&z8 z_6%)1&%{vRK9Mo^42wB$RIE$OzAJp!(_A--awPH_wQX4&H{;s^Rs*K2qnA|+9(8;= zeaiULZ_%HvN)6xT^Y6Tgu(h$6AtY8Gq1qJd)K&AqSVvpSMT08fi+ru&(WKy z`jO#_9cJE|Z5i}qdaPi2YM)$6>G|t>W4o^{(qLB%W!YA~J^%T%hoP74zFnVxkaNx1 zV<}nt)|Wl?QYj6sSU>T?uEWcerYvXd%t)EL;$_I;BWy$oiNr&$t}EpJa3g9(O&dq(?2$)p4E5fYG^!* zeehwA{=F~SUyiGaJTD77w6LDxgu-Y0*@o8_aIXEVaYn6F|3yiEt1El%(aE(e0zdz( zx%j~+xqEpBzkcq;(xQ8-C*9e!uj%E9V?1x2MYgx?I>F9!fK?*a=n}_M-+$cUL zM`|xz+LCnopw^cE8|J1|RIIafI@6)&6!gs?E@)Z&n_SToLT!^HCdjXA7WwDr!YNwT zBb{W@B=)$_h*49%iT!uQrMEHseN9UW<0i<~Xo}f{Z?-k=*_*xHPSmoQVWFI~gIu|W zWM14XA=RRJUu-mPDmKjtK6t$B#01TQ8~hCJSU%1Z{8p46&;3OGL5q!vL-0CB4oka< zv74*%ny&pn=%wbBdVc+`ch@BAb?T-(%=M1Bz!KbVRMQ)D;{5~1uk&&iy2bor(wG*_ zd-LVP)n_zzz7Nrr>Sfp_VWj_S#<_r2!N#>06B_$|JMsP0UGKmXvgweAjH2`1Xde-~ zinVMH=Km?wHM%hIniALS=e1u?8@ufFN<7PGtF}GNt8`}PtmLpQ*K0$PXZA}e22^Z) zaQW%J6H@c7=56;s@3%xl-LCDZ#hY^G6me~?JMXJZir?ju6$5<+^v47Omr0)&J<(yX-_YxAc^HcGgStzK5Yo#%A@wmmYhU%d5$t-Q7GZ{N4Z*H%8~kx$ep|Gn4YllC;G z2G1KGO};fYK2$W=YF__5H`hg%^T+-<3%4mSQm!66?P=1)+2Af(reC-v4x7I zFA_OBCSPbbou_OUDEG6Of~kO zS;V>H)LCCoj^O1{p&UPBe|kJoh_l@l{?wv;QPXZMmql+rO9Z%g+HGU2xtQToTyyST z$@>{!5+XEuKQ;IyF3p%eQF!*=*xr^(mlfGNPBTv6`Eg3`)}rng3Oxlj+&sCTIPF$^ zU3TQDg)f)LX_vc7N?Vq*$SJ?^S+|fuXR5^xgVTDSOBcN}|E~Rnxx|C#-G#PY5xcXD z#FsZLd}rEnAkgCWWTTMyQimULB>}rdS*JL^RFpqG`@u|`oJqO|o8Im-S=KaaViY5UOHy*z_=)OBv zu%6LgI2x~W>Ad!9MLTmJjKJ7-QDo7K_w=c1j*JOQpN=bTy|v&#Hb_I$8? zPl>Ddw~VXq`+q3q98{Wc#xA0o@8ILLYyNC}YwvtUwec$BlpvubMlBY#GuLnYsw!FD z@7sQ5ngT#lrybw_mb4q{Osh0jn7(6pJSc$ zT&XvgtEy{K%F^6^w|}R^BR0F)WuN6@u%F;~q5fColI`UWxU`&>96NDFF7=;9P{^Bo zJ}-CdyehCvJ67af$CuUfm6RAazH3U0{uy{QD)m76hJA1UEKw@Z`NhGYa?!D?PVJSk z%p|`_d-P+3!yKmcyplEL-{rz{K%x0#Mt}5Ltz(848NVp@2O6!qU(I5!{Xpi+GbfGR z(^;~6jfE|HS5M6RJ*!qnM%O}qS)EI@+nX2POP)@ep)?^veG=SymJSx z_LnoxW1F^labN-aO|_%9Z%#V+$Nsm*%nG}+?<#_)+nL`o;}8#Km+7<2tK9TI{*U~c zcKf|G*KN&M_dnR&c{<_fi5?{ui`BY@FVn+210GC`VPM;!yZ1n`=_|qCw*S8Ttle=` zKjEmzq}{gW92&>oZcZ@PKiwer|I)#2wR4!~%n14A{Nw%)d#UO5m#*J(pX=))xTjV( z_u-P;w|^2zAf#Rtz9oGt!yO<%)aT`cOw)y)BkFO=W6I+(VvPusS6v6YJ0 z?!@>@_kUFOb>`f;y>{U`k#iF?c07FY=b+^QvjBO{Lzb%*9n0`H*`OdTX%QuaQGbYUEOj@?f*W%G6 zv1ug_9@p=CbY$P@g7U0azho+}YiIf&`q%w)_mW8UvqwH1f3{<@Ugi^*j8k^}@3-~) zHTXn6*Eqo{Z!dlI-qT|f!XG6|7DTt{x5=z_R&bsE@TdQ7y(aB-En189-kx7B`|W7e z|6hrd-yJiuj}Vf4W!*XVuBCF^w)PwKWvwpz_qtz{zL>po-j6*ucC1nQlDKw9;*{1; zCzW&Bd#<_2JE)Y5Uf zTTWHxCd=hNdv5ehw^r8aNSY&@aJzHinO8UVYt>g}W?RZ_cw98~#jSH}A4@luRXVb{ zbH&IuOkdP}o7p!hX{m=|%%a|m<9`l{C!Lo0aL@8hu8+L9_H^sTRm^w1PV$zXfBoRd zh9semW3yM)+x$PZ%iu-Uf$sNzYrYd6u-OW$O5eoSKkZGt?)RK zD|BN2{>>%P4i5j*S=}QWW4?1=YACo+*0f!)F0OV7-?yEYw<%74{^MMM^`D>bI2TP@ z{QZI;7t8tRtW!njCfddPy6LMFBVLxJH{brzuDWS%ZobMj)9Y@=b5=(RF`oY|FYJ+W zEa;A-`~MKedP5-=DSru0_u4r3sgJf<+?qJ!=*QQJvkT2`BU7tv;vj)WZLl;&(oOa-Z|-^2+ap zTeJT&=&cXpRlL+@V(S}|_o87*@fw!{{{^DF9=6-dv0r-5of*EHFDfwphJSl~PsTd_ zHnpUADfOJ2O6IfwoL`%r!WUYzH6`*)P2Afmq0q^}MXf%wR{Xwde8}0!-GO1tmhF2ZhSrWCb!#O*`nh;4`<#EW}N+_JZEFv z#Sh;Wn~F>-*=LkA`)5_(cVS-6^&V3zRy;1)B(D+pWO3lX_w)Tf*fTVD>UDj|e{)BEd)UeddsFaK0@QeF}$H*31fx0#}Ak|pnJbX$K_N!3~N_xvq}_3xJkd$m`7mj!VDeI=7HX@=ulU%Sf>_U3D)K3Y|p)}uW|wm@9#okk4fgZxwT z`jy{HY&VjrTPyoKva+~*QRAd@yPr)}<;nL8>Igk_o<;rj*FRU*?M>cN(eYQvXm;+Q z7hD-U7o<4neEN4+OPWse+Yh ziLF*+|MdTSa)&puTHgP+DB|d~qX!xccLX{`#2GB#U-ofDiO-aC{L{Za?%k7pZ)Jz- z9Uh6bx8Ip|&G8XVUQ@2}Pn2nz{^c^qMX`4GJ$_$YcQ4r5?!#AssgW*vV2M2%Cvo_i*EIQ=6QVaH~WGqPH%hi>XkQN_OobFE}42}H794@%v*&C!PP;+ zd)SkuFVFuIyE50F??>9bf>kE!_C`gntbC_(IbCxvI_>l2?*DUedBz8|p0_Q#ZkZP= zK5f(Zkox@Sq1FkOJseF=bAI?AZ+8^sn%|js_gl;S?e(!b1sn6(rKC!xzBJ^mmY?`w z{pQ0;TMgD9o)x`lox<+BVNACxZof{_E!wz#!{dJm#SA&@`kOo~6<)3lbkP%kP`_pU z>MM~hxrXu;vAHqpj(tct)X?{2L2i=q8tYPqo0*5Q9GT`b^?GKcR7$kT+e`H{zZbu( zb;u`%&9(ifXw=1oYgZn8*(bTy!R*6=6YoClirD=pBOu*iG2OE3Cxf5Ex8x2|*KZxVIS{UqX4vG@1i zPw#GTzuk1_#MUiOj;TH3Z#wWO;&lDDYb`G}y<`+l5Ip_bS^M)RiQOHGt!xrIN{$&k z+PLH`ck9ino|KZ$Q*R6TU8$_SdvlMCTUGI&7fUWpku6hptU73)oxXGFWxe``Ru|tc zeHY~Q`{%3WxAV=k(n{36ta)L#e!DxS+IV-rqe^&sTltK7WL~ z6iT)Fx~Km7TKgnP)G~L`@{?AZ;sj0gEz~|9{rl(ff0cgEOAj12au@Ci`&Y8tH0u4A zP&u#N#f6FIj4c=~Z|+Is3uSIN)EO+u`+V)!_tqLGLU)8FE#R(x8}p^7v(51@-{If+ ze~x-fDp;5-NqktEzchB9N~wsP-L>yQvh#XY^m^#03h*yKt?-e5$6aHs#+dl*`rhg4 znf0z-IzPRGzMa}Xv2j*p%8v>4cDdGHEYrabqWAsD3-L9Xk#OE%@y*Ij#;RwwCO+u)wt8f)@TYxR2JJHFNb z-#ovyFJ50atoq>5gKCMJbl>@iM>5V}w~G>L{Z`kUWv+0Qak8OZ^co}fe=nz3KQ`%7 zZPRR4FG<`w@7J5;GKp=mz8QLF-g7)Uop{N8PJ;P_ecKOKXopXM{3 zbjv#|dbYeqI9Ij5z1Fng!_%O@j~A&1c2wqm3^da)j>wWZusk?`dE$J5ADkU`H$Q!z zHHGhfd7h)|7N5(@=St6(*~qjhjCuDNySK7iUIk3fUT+(4(S3Pd?8IKXIRhQ+?0eWvYBimp*p#>3r_qlXcRg?ev?j zP5&aF+pQ}Tzs|Z%WR~!fsb=^6o*SQAAnAO1*I%EuBJuvVx8_28?~_+Nzqd|yQoxq= zp%wiylkXIyzpn^!SF`v%>6`yTzn2df-yA!fr)WQYcM``5{x!Z2Sjr|n5Rm<(Ti|u; znE9uyC4q@TDUFXzzDdRPe-eMVcaIE%uz|e$_eqyod>Hmiot?Z*EbaHBh8)$4(i5Hj ze0Q{BKKJ|Y=WRzlUav7b5pu`7&wJM9nX(U03uUQBPv6}4&}VUE>%IBg#U}rlYMry+ zW#TFe-ER^`K{ZA{THfA1k-YQO!mEap7?N$}7_aY>dU0a4@cFFT9)^sICq2G@Z`o-& zTRycqYHjRv=Qs`A?= zo~h@+H-FLVo6JQS*QdAm9hy?wI&ax|?ZkHRALm_va@$>fJ!_u#WpAmYG0}bh3m$LM zD-RNzV(zx=ty!9w^~Z)h{j7_j{Hd>7yo?sK-kTS<{^W(L`^x6L;1qk3CUaujd;!+L zW!qU62l3^DC;{@>(ff_)6eg$ zlyP-=n9A2_GLJov?RPfczICJZo*C{7zOd~K`kX%X_~JdUeHO;vN;}*5@^EET$gG6L zA(N_asE4pw#U^hMx%GT;OI7*O+Qq!nVx|T7q)$xjPudi2vgz;3kA3?q7QXRad#bBC zqqNRc%65C}&XclM(jId!X5Bqf_gkZ>l6@Xql@cjiDnRx67> ztvi8B=D$kOV{zP8@f_$cGr%#3|@`SO^dK+^3z+eAH)1Ah78?83%UUushM`}lL z+LNa~>vw&!d%+OvA8)g;^j+M%4N+;Sy$Z_Z58GGdWb|&Z-BK1-_1*F~%bNpX4l_=- zZxOvSMM@?#>WyvK#$<-&O4lBys|ebO%>4VUQ~9J~kjskiPr5!Xnxoswb)MC*_gnvJ zr%e(Jm%424Pp)}BpLfmeA3=`l{qNX#k5xLC_s+g&-5%09Rm1kn=a)JcPoI5o?nmN; z$&K$>>el}Le`Lp!l(dMKGnXxCO@5+K%*lN}(D?L&f2HeYWGXAacV4`~`le_B>n_3Q zZwG~c%$dE$mdn(s;9QU5waM0hH=WY;bg(%r^1NU5YF*BnBhP-^()lJ|9r*Zh_R9$W zH&x|tII7E?Ch{9p6+dA9&EO{?(R=x}q@#jU#OVd=J_Vi-I#MBhNoi4oH~nk+aC7RxQ`cGrR{PI?dfDgAgKcltp2^Ifw(!`YzO7bo16*%xe(~`9pS}+D zrQNEFCvq9v=(IiKSds9XYr-`BgYE}bI~l!=Io{I0*>ARZGFP=(n11xFt9IY=rEknC zI-WWsj(^fGVWD+Fu`zo$pa1>+M&55_;l4dF8ZFzeeZAw@R6c~|$(XL@?;nCL?%>BeFO?}~gs zw~Q4IN*Ci??oHcuc}0lp;kij-e}tZUhyKe=aBV4D{<(X*N%a*0x1f8%bvFzrzpl7= zQTcb$&N?sddUeO?F;cfCyzU51zc#N-s%h<2!RhM1m~A(P>Zt5G^CaIm!*l)n+?aBi zV=u!V3O|jjQD0qjNW_onfVp|^%~NbFk!Qth9^82v^6Jjwwu$i!jW!ifN?VEII z-op7`blQPAxh0q1CLeTu|tT$&DIE*1xZ_G>f<9 z`zpQ)OZY4reW{>)kp{<7t#^uRE*Q1Ux?tGJplnci^WwLsUo`f!Ej0dexSh4S(ye~V zf`~?zTl?kgt?&Hl<`nK>K77}#uJ67))8X4uhuT9~rleka{zhU?j?A0NlER$VyllZC z4M%SE*u=fss9npYRi38FvQqBOA(q~`g4VG`Mf+{evsG%PIa)a^zqmXu_Mg$2vY%xo z>c!kD4$gempBH<7UOz8->C@YS=HI`43fofkF>Jxd4xRl%eEK`fE5GF&DJs=VnE2Kr zrLEWMagS}~$mdk&O7VEva>eC~>!g8+x!=NbOh#vT&EH+QIAT+yEUw4X)Ne4;pi=g*AtUun(V zEVKCZlWyeL97y~&o!_VV`KMiq(r)XGO&eamO+N7H&7JN2(kzDUhP&pUyR`nu;__Kb zU2gS1eJEEiYTbBkZce}1v+CV}wcm9g?e*mJ(OdQR;k#5OrS*j(c?)jYwoLp~e@eBd z>HUv8232v!Nk7jfERTLDnf&L$zd()K-s(jk&L3CPH#(5>apz@=c}woR+@A5t!9-|T z`LvT8w*G49?YPF&^p0_XsFY~>;|7~8d-ToM$+DI>C_N~cwqEXl+Y{5bJZ-CUWyOxi z|K7$KHD}Mtx1N{n-mSYk`NGT@B0g?D7T4I9Uy?k|AiVNu@>Z^Vn-B?&!iJQ4)4jh} z$UT~I^4&G{=l>obN^(5++re_D=(I_j9?o$zlf6HE_v|Y(Vtmd2^f`{&gA=~(irFnKw1G$P?x|ZhY@VI|#~Bv3FC}Wx>+Q}@XG-W?JoWx* z?an&>u%zmZ{0`~U-?UyxX==(-vyWT6)rh+(?!)K8Ra);)$A${EDqH8d^D%c{?LD8T zRQ_E3ibq9s5yy=UNgd8EddK%A^M9VF&-|Es!I39#9xlCp;8J_ijG8C^iZ9Qxy)gfk zsoc(GKmWabrxNAE#Nu*6RxZI-I@6SE(kMj-mW4>{#aJR-mt$pv`oik~D5hv>H z(_i^^)t+@l@*$}jKMvP~75q=4&MBP|9qvS3O?mYRMVdhjd7a8h(xTFD z&R=aX3w(EQ*(~i3$rIcSB`!ptWbgSh|J$LzEcZIY99f#SpRG5$pub@H2RFS5Cx5Ii zd%akN-QO_T8DiZ2Gsg+dj7VT06BAox3M@%c)d+h3U9f{ni8%k_f+ovlUP1)jV(=2-@bhEcQ0ev zs)&t@=1-QsePh&ifG5eN`pfy9x90wJ;%(5LBy#D|Kkn7s49?E~HnCd&zTWG?TBK%h zz3_sdWpjV_!!sYeKPG~>X7dbf9LU&(u)GBI;5za;0c zUw4I4C5?4<@$db4m1$nhrjD6ArUH!T5)>}`dn#tRjAH48+{q1j(il;uZ9pA|5==<>|HO&E#twapWu}>%evnG(5~Z0Ec)+ND)*<>$s1n! z6;j&Ac*wSuCCg=AeqYfxeHMecJW3^%oBR!49DlPSv+T>-Tqk8A&0EH0pTAEG(b=Lq zwczZW@;j006^%;g_kFXoYj@8*lYR2&iz1`#DXD&imqVuhXSzLI=GBf>#Ys^=?m8T| zTc(nqGGTr3d8x&1o1a_Ubge2jS$;R&$vVukN@RJELAvald;{LsiQ;OGm-T+U^;BBG zsClygUYmQ{4PF7Z&r5oH-|=eHMX>~|I#OhFZ(@W#;~SIHM~-irE26pMea@9G*RJVy zcAs`=e6zZh>bh#)`{dnw`e$|AENol1@cQ8pj?M&~e`n8J6?|k<=rPx(_*dogI~*3* z%45y)_yWV;{EaTuiwM=)7q`NZ_t^DcD;V!Jtai<~`Co8mPxU1?9VXe2O66-#O4+nivpG|2C%=C9_MYRF_!A}n7K&F_YPRUzeCl{p z_4x6&kYB%Nxf;*olM6giR(`hLoVPR3CqnVrW*?TD9nEi)pRAe3$9EvM#gUU|M!LW+ zv0JO$c5uz%nznAsuj+;+BgB9nPqZ4dApip;uk?B#;> z*IWAR)Ps^37-jd=Z?~S>A=7%yp;2Sit2{;((~PV)M>%c^i~V4lTJN&v!e!wfd+y9# z*b^GCS^vhT?iuT^FR^*K#Ag4lqo*$G@W`)yyR9F!xi&Vq$SB`DdRj-~$u>{L zD|1>L%}oxyIQmNDa3cF6j~${8L1&ZAp5~svXVtPw^PPR)v2V&3W;{5_pf2WDrTC9w z-lBYq@=z@;)@N4@vcJ1%afuySmmGimPN}v4XUoPH4CwsZ9A2*n5Us)`P%g#A@j@KblH^lJtYww43?WOzAG)0vnAV3OBa1JYQGeI$LiFMi<5ykmQxEkpn93$9=9MXnTYU42JP zPyL*~*!~TP7eqf~w$3`UpxAxECkg9~!49#<3QdoBl`YK=E1Q=*?S)?A-hu>+sTMm} zSvz%k`MDfd8m}Z3GDw`=%72217-LhDv_12nu%XE9Ib#L+}#J_&_;{Ti5 z-w*9cW>04G&D~UG>wEI$dGj;v?;kNf@e}^HyRKm-zlTZF-PJkq8haI{U*o^{E4`fi z$nS@hr&kNQo)>Lr->2x7rnz_8lkD_;e#iV8-K4Iy&AsTeN3}Ck_Qruf8P^sFrYLT_ z`*QPKo@4)w67$a(a9FH(uz1_oDJ9Zk8Z*pN*UjUR-yej6W9=9#be;%_JiC{DXxS3OX@0vh?-pn6l&~=gZ0KaEneY34!mdL*r#$Mcmfjce zY2`-q!)mir(@QV-tN-Ro2%huv@9w)RH@!$?xuIBRS;@Uv!~1BK%D1%}Qum(Ob^3r* zU>vWFUitJSgLNC$9>2%kx;~F(zQfa4ubBK}e&?o`YPZ?;f3U0Uk3X_UZSB?%XDib8 zgl(HE9k%?DdU=F!ZQ9Ys;8Xqea?eU1#IA5QTp7~1(V|O=ufSJnvBccY`5tV9Tj}`QuRcPuIynV<1cjwM| zdAqYFyHDc@zx5#QC2Pm73nCVqb{aIDsW4gUZ}n!)dY%=ncyU$b0g!L+#U z71A~e5%EX%3jE1!?DD_(HmFL+h(*lgLF2~V6E5|gp7mhCzWmQyTaR0}Z&h+^zS+uA zuw||xYgpc<&ykJ~E!72{zfo3Cdb9k~E%#%8*2F!mHchd=bLC4^Or`&#mpq>jJ>lmq z{;ylmP<(&R*~fulZFT0;nT=h3pDIX}Z9h2m(^mGIKPQ~B_&)X6JXx7dlU|0`hSekSZSU& zNqy})gR|^$Q`a7I7M#Uk$#QAV09s9to56B3eF6dojFk__VKlbNuJaH&&}Dd_cz-_OoGEPH174*OF^8gnT{^` zu=wy{Zl8}vR!?JJd~y45%Ic!a3-6%m307-tB&#RP`7ip^sW#}=%~KoFOAI$nci*KS zVZBr4-qQ3qx3vxKD_UYpKQ1h$gb@c~&1h*Bn zRc>tJEtYC$VYWI{DsbF}>%34$5YNJOv2MQ1a~N3KqW7M3WpTcL_1uh?Qy$)Zy1v&= zbaE@#-;@0EPZni4m_NAl{h`E5#?J?@g-+u5U9tAm$7@YqqH^VHytYc+JGD(#YL`;R zzMsrzuP$Da-=s5r=jp7EwIzF=r8YZ9%)6oZ`*PH$iOcwmci05U#c?EdznxHLxnW7c z6g8Pg>zys)()Y=69qpa&g7%YW7)n9tC)Cs z1j}-+Yv=wg=yIGH>wIiO(gpjH)7KA{Uu@u*#mBbsS+@8e<2m-ie|K+x^^u3wXyVV3 zWBYeKwN~NDNqWxWfA9Xb=K((r#b<1(tzE!etEIHBH^W7It#w|Mflotz5)V`4OtnXg z=DzEZ{PV^jQ&3%BU|B5h3^T@SYdao%*`(25^|6xW$nH{)3yy4uzcn9HZCYq+o7Hh4 zJ5H^-r)R@)NqIKAA5wXO4AM-+LW1k7AL#5nJ^B4ctCZM9Pc_%|$BGG^pDk1P{;-f9 z@058vlgbuP{`=%%;X1~4nR5=w9o;M{2ft}r%6Z*pnXsllU2*cVM(+b$E3ItrPqx_Y zRQx*8tD;Zn=zIoWgMF_IyWO%)^X+P@>zLIS=Q3;VR&c(V)Hzd0aHhRE`)B1x_r+a* zyFYq-JU?!Av}Vi2HLn6#EL19&${9&*~q_c6(dD!ox(!dw&ca>`o;p;__km&GI<*)7C(E_4-B)v?QG6MX{@ zC4R3xXjA+{BO&wr^i5k&SI&@&TAHC8yJ3eC=jr~nDK|PLgmRWzu54kjdTSk%5oRBD zQ%fN4*w5o~mpTPDJl~eOSL6MpS(>G-{=&vwohQGoU{^JcKfda|L#ce9y<+1-=YP4g znJ4mYYf8HCFJx6C}3FLAF{x9pXFB=lD2Q^QP|T`sp)g>89mvf*Uz{gul)d)aH1 z*`JmlteL-gv8^A|6~?wd9{=7bbl>zZ{?sWdILBe~8~$Enc~;}&tF%QJHdZQ$IsWl< z|8eX8Y?(ug-no5^U6AtVrGq#BBd+-H-HVmkGAm`D{!@Ne>Mrx%{n1^;qbE=AX?&u* za)SJ8o87XUKZ_h%Cq|3#$Vsa2Hr08|nH=8FQ#$Lqn#a-;a}Tg>T+qHdLC;)+q0&C2 zWKLCbNA;x>3(^mL?$OfEVH+oyPKv|Dw7G)g+_uJ!n58ln<}zsQOuExUGlbTye2qyx_CTz zk*>Y|p6q(rm7ZcN4*koMYd;jxz&Q8P(@o4Rv*z66;Es6tX*na4@u^s~-1A4{IDakA z{AJ~Nk5gZESNDZ&s*YE+HFw{b<7F3;{cXGK^v?yG?l&l^sf67(pSjVdF~jxKt=g0= znure@{@5aY=JRKHbx!BTtoO>vyW`I83;Ff1XGU_-LCeh!OSvy- zY3-ivD?U3o`LxX0`~IJ-WH!H=aNt1?>p{sG3R~W+Kj#=Cx#g_?iWPZFc;{~r|6KV? z?(?U;7unaR=%)l!>rK@=6B96@OzM>NHVF<+(MyvRP42~)?~vIi$!@db?ZL43RgWgN z9y>fms;p{h$l}j|U)#5Ss`-=maN9J4X-DUt$uX|FRx&NZdQ;TmyfVgwVE*-5?!{-V z?AKk(|GRw25z}V}5A?+Z*v~ezm|(ok>bIH$&&?GjTQpxDp6yz8UbNavyQOYL=A2)S z<$GTB+{rHbH%pW=NGRaf*5j-nC(ce_KgR8ncWLh7nTKQUroXjxTB7r4$sYzD$pw=b z8VtHF|2wl+ej}#?ciw*KisD4uMc-uBi$u&2(i9P3T`X^{!gKP}KFRfxELJ~nzn^yU zh13i-QSOI);eD(|PY-3*fKB2S)LHD~p$LKwMec-X$l~O^*;^hJp z4}0oQeEj`JnG=K5lljq>UoLn5vp8_nTlC7(_bg`*WS;!~PAzWRGZ*DIYN}Nle0Npu z-`HQ>J?W9{2?o2Wz@J>luk|nQInA}Bao(O)bKfu~h-T!jT3>hQe~0VOe?f;#dUQ^U zE=;@2*pm`;QFtr6iBn-U-`?;h4bkLMvDkg=xC zE6chmt~O}jqQzW{!XHx>U7ND0=6~SQc;-1h!A1M}m_#;QzgVs=9@F%CWpDOZ7vssw zeUV4*J$<{z=|UPi)1k&g8tdyOe9GB(h|RKCSS5L>fQ`-nL&jCn5rr!D%lVVG?GOz1 zIq@rtqqi=5RtlfzoE2P4_MYVmo7ORF>bFz7gyzKA?n*ej<5i*Qm;S%6YGxBlZh_wC+$w|+8>c6b}IfM3^o#?pu7&+-p!)T*3O zcqsBfHIItUw)&91>qQ5@J@J{x{CS7a-gAe8G+elB7B79E(!R9t_O`1VZ!D?Ly0QC0 zxRT(!Uk9eWyrFkhf%&!FJ3jRVjfG1k&v1MW^!qVqV)FB^(>EXOzjVLO);f&!{Od-i z`J0Svvra_cS+sFg4%Y_X``w>qnXPBOx*eTSnjL@KVcXSX>F1J_H(UPNtWp@V(e}oo z*T0KC&s*4hcD6x5o4j2%`!CCxM-5|U#YJd6n!2SZ#ja3>y&$Myoq4$GI;V3PzporS zEY9TqHn;tN;O9JpVEM?KQ(QX#eu@7abuGT8SYevmhWWZI(wl@A3%vg?VzuSV;x+D)g{_wybWXj{ec%6X-qseA z{a&@*kJr^$OehFZ%9>GJT$^)t<6K$y|2hxlB|~;R=N8#icj@r|DC4(&vqYa;Xe$I3 zsjct$Ak=W~$di9rM(Y1A&cC#OvQ|@@{iDp#{6Mw^PbrO))gC2Vw1l{{YUe#G z6RRmIxN`Bq*+8?1U0TQWnC4ig3!YNiacK8~owkh*UzP7l{7p;d@brw{`~I{f|61!K zS9U#`^Zmu+TlPMU2_{Yp-uSP`-paB&*<9(>EsuAbrarJ+#Kzs&eEOr#N9Vi7I~nR5 zA|4dj{#lUqea;kH-*eyH&oa1A(%W}+-|Ft2w0vYXVfRonw$7T+<|e?k)Ur| zAFS$O*)Oz#``yWmr3er@ohN6@JvI;Sw<~IoWRYCFj&v3)g?FnqYe0NAQe@@be#C zF(uJFtXzCN5sFPeWG@>ZQB=Ku^|j--=q0}CyA#i^>hgSXdzEITxI3eZx81r$Jj#BJ z0ZT0I%RB6@W#IMV5=mK_VeP_X?7i@Z@{`opzETg5ZxC3Z^8AC}h0N`~4IIWEk6v>6 zd^uP*DUCh%o8OeHI()v->F?Ozz1tBryYe1mpKx!iSmx%c8SPT%JRCl-ubHD)?Gh-N zwc+H?PtP0W)qS2!yT{4Ze82CJ%I_Eadz)m>e4L`V@cR$_)v*sh1*m)2{rD8Iv8*=x z$gTR*Wp3XD_dVX$*?ddtMfT<+fdtuJ?A<4ja3Vfpjn;M^MuzQWVa zp80=2{I!xfOM+0-g-f@^L-M)B&ogi4pLXI|TlVUv3tq(@TbOLCf(1oOLzskvP9ILb zVNn%x=aTeOTJ zxqXGGQ1ON*R~$Yk9ql=)c45KXhsXTybeDf_u#4NR_U%t@s76Z4w6Djv?T@gruaN6u zElDnQX6G#PW3F;B+>%JSeCTYp;KDzSJdc|qn^6C*G46#JWVJnrxP-}S3NZBfz3dC$xLfAwQuJ=I@INM-l7@?8-pJzV7X z{#HM~QAAMvZLZq&`HzElu6h@eS;FL^e~wG}i(e z{mGK~u{Nx0SiZ=+)Kzv1UExYx^_@L)DMXfEWI&8=L3@>dHb{93T`kygp(FIkfU0m9Cj)kwQm>r_|N8}mL zX~k73?L20SgqZErXLV{bN}OdAi80!BI;djTw(Il0&kx&I?)A(e+k3i<_wL2=N;=}#CaPoxE9JSSt8zeVylPA!;3PZv*vlvoA{5Z?(M6# zpo3dJe%u^+Fic;`D@s&!8;9+^JF(ZhSMaRT@alPJlvMgfBDzsFvbQ9DN1fn>#ZN0< z%uTr`u z-d_`q&fa{R8~XUX_RRH)AGXOwtQFnJ5-{V3^`)mP4lVNkZNJ7`Xn|Rj^CZnniY}YP zjlQ1dUKuBIt8i(b3%}?Kl|^CEMjo~P+*}QxZ*QxTIBmRk*X8GjzP?jisC)D2?TpgO zKQB}m{I49;J#;uO@X??BIp!?(4f*Ht-`cNL*`M*TY*(n%lP6~*+aj+{>1sZEuC-oP zRWr?Vi_2Rdq4WDaT7qRWr!uixde6u=JF-%&G$ki6vRYc#j%(erj;Fyk3E#`!Pg7pc zb!tZNr_R+^wLX0oXg&Aw7;9XV+sti#lQY8NPlsjgQH@t#<-sXE<4fWBUrLdYkz6~= zF1Ocm{`5J?wSzT&&tB~+?+wv$-_7Pp%(9>LC%b0RhlLG)qPdPO%|BJ2x*;iWbLyq6 z?y876Ik)%bS$uP!gs zJoB2EgN@=GnM;u$X4Zr`Tu>>9uK9hFfonnTquw|!j_4gzUR_N*{5k(`y7RmS9i|WN zoS#2md&9k>-*BOAQq2bOrV~fcM!HpW%-8>F+SB{Q)a2&xh@j(^j}%Tk>CatupXJiG z=_VM6&ocSy~+x>`(huHb#K z_3_^rQs0za`8W4k(EIGCNiP^bwUsfQJhoi)O4tnhS7&NwE;sn=`D@p&ZBvaug&J)Z z4o`i2m-?`s7DSs$}pTp@b;ZSBsIot6n#3rvsBkH~$cUeEC`2kd^{;C zY=76NPwf0|ee1p*1CO{fd(Vc+mvizreE;KV7g;K>>R0Ck*K2>pbLyv6RBI~d?pk+P z?aiIgM>m~3LeD5B>xl?+r?Tj`hI4Q}`t2F@^Vi?34xNPA>>{T=D}UhgmpUX<)b{(= z-JIZ4J{%2^%fA&xABcaPbzf)CiVcza9lHIOXJ41})?Y63b?bHYhQ0Z#M5Cwh*8j;f zu+H1-IqS-{SsrVHH$Q)U(^+NDv?m&Kv{r}Ti`;WDEO63OAv`@0HuOUd!rIT)!0SFew)ymw8{DspCd zjIqS{S67l z3-S+VEUM&g*2&AU3A<%=qHg8c-2a>2{?-;+EKu2Q(XCeWYTxq}mn1(tm;5+gb^#BE zE{Bcm>B!kvDv$FjsiZwz;jy!=zpcUe(QL+fm&9%y{&rH}3D2R_q@_7_VZy)p@2TA_ z`YDhs*x~qLgNDbe-g8Ec3UbRDm6impWmfY38?yM*{IlDI7mIK;B~D(lbFw6p*_A~r z-oKk0XQIIn`>TKUXB+N2jL&&mm4ro%w95{8Gc??3^>wL!q5juP(^6o+k$v6#z3+EM zr##}ZT>o*^?wLpYcI(9X*Y((YP58thy(XY&a`lX=;%&Rlx@`rf+tDy>@jEk!4<&pUc`MdKT`^qZv>D(ZcKS~v1c-hD0I zy4&aMv_)JRGs?p6l|5`PNV+XI|3Kav#T)8rYfdb%iSyrd|F|1(?U+C#QNW&m^k}86Hac-{2+0-vRLNmI;lqu#Y4|VCXVahv$&3xeu~I&VI5Jr7Vwt>nL#>;3cyySjks-A`_B(#m$08bve; zi?-iAF|98&VRp&3E8<_5X>7LZd8R3NHTwL$S+zyi`x|UscHB~`Yh27L>CLSF)MJv2 z)8(TXYWHRzykT*=b>_PTAt}4RH65Ir@M+uSxC-?pCY#ousot>Fsa<62nr~D5OuvD5UH{N15m_Os-$5|D3#Gmoq%?uFEnEY{@XP!*; zOw%KxuVy&xxRra*bwl^oFPX(>C*=I=c`vi<$jRBIj8_*l=WyRW`04T!?YdQmdfeZK zY+k$L>)}80uXN7buG}H?^w1{fv+w7!s?A=J(7em_UZg{wki_xNC$IjwSMn@&P0Y(l z{YkT@{r#io1`! z2Y!Z!o7hfCh|YZGpS7&3`T4bV>F*sn+y$3ye{y!4tD)f(pGZs3b-a9YMCCH99YXxy zMW$Osul>AqI&Z=t?qDnX$Ljzv&($Eo{x7`V)TMHfB7q3-Hx1nJ|OQ{@Gpf6 z&Trn|x|Y*_ibcVlRf65DZm){3XXAyM4bESK?G8KIKYhQTxpQ?xjnnU++wV*fo&Ho_ z(c{<0_<{@lTmClbs{Wbvwsd37?i&X#dVUiX+hDjiz~QjV>j_;)&;Km2=yF)q@_XrK zZ~M)9-$Fk{{n&L*HZlg&T7EI=^Kl|g`s+g%k+vs3p*-8g&Rq{EHl@%6gSx9T~wmMB<@ ziQG?e>hki4lIu42TfAB&GWi2r&jmYsCIip#5}675i{44(*HpY!(-KOW)SU2Zw2+ds&i&lfT;~H85B}FP1kcOvJ-yY!e{!TH2ZQE8_wEVl z3jz)uIkDQUFK01}$i`c(&T&V5e#j*r3u_i>myGlMJ)`4=Bd14Y-%kFZFHYXVt91Il z-7Ie{3i)@XKygM&n4y{#$(XL+xhA`(~LRE}Lk~n|HQC-i#;kb>HFS z&4Fho)!zK}F7NiQ{zuh)@Ad5#FeY8&zOwYqq701(EtM&ie~wvQ)3J z=(pv34$G_NKceQ&cbkvO-pYQI`X#a}>d%e^o+c}^w{NT7a_E~Q$M$bbsW**kay|V8I5qU){>ezM$ameZb^#mEju57puO-=RBq#9i(|5%xIgoI z2g<)Os#~JIeop+R$A>C?g%^sS^A_Md)vI^1rqE8m(0wLL{(`-^YfAU8(C_A0n$1^u zN$S~LGv}kaUv)&C-bPokOUx>HeP~Wi<_?Lk$-kUk5=y-*P8PrWWird6w}6k&%{nN0 za_R+_1E$wMO?oiz=0TpsZjW7WOUuh|7*??#nxygR@u`(8&i=)M1))pZqVJnOE}v$> z8}_>*H~U*=P5gGQpJ#TcTFFg+6*<#+Yte(LPrrY64qjfxlbbj=jI`wBo4M zl@IyT`hCPLT)i%J%N;r(<*Aeyz_RFWR7Gy~&)-`cRy8bnEUl4yyHRs9Fs~L^G|wR ze~kKN$z>_Bat){Fwec{_NMKcbbl%|Tk~`Ww*EP2W>)p@KQRvKU^-z0oYCUV5rBhW> zUAWk%rNvSz&NEn++&FA6(EPjM%gOfCtaBdM{%&eL;mabU^L^c^gF@Z23>;-86!$zg z4L`2nxVzIi|H723=4QK}c3t5;m!SRnsyOSsJ=H1Jo2P#FT>D4qp1A$ICgxv#^S8df zoW1@+UdHT-Y=Iw|F)tehZ1?vYPqDi{B~wa>$vjU*=T}-qkFIa>!(SbXql$b*Sdy z#(gXM8U!?d`OA9xZ?0hKyI_9np*e5=TkgnpUssy!|2WJ2?)3EmPcOJmInjA0@IZ;* z)9nfU@9rsY@t>2Mz|gy{eZNTHk_9W89VC&rO z!-5m-Emn6#`wMnPBpWZSpLhPgPW+@p^5L#Zx*|_-$EDFVy{|4f?9}}~#lAdeb55tJOI^oHDel(T%X`;t z+j8XLGUle;h7UDajQXdmd={@QR9MSgDZhKMbJ6T2^QR=8_*a+Jc&147VfSRN8@Jpi zu4()xG5xc~bPlEWd{MJrC(Y#*65Be}weR!h?!eNfh1+%Qa#glYFS~wqqM!M$ls>-7 zr~aj(H8tTWR!mGEHk(PTWJ~1N2&^iv~8=ogJsLcA- zT4-?Q;Lbfd(GPO7{~tXN_;4%Bo2>z-VjuJ#7XBev^<1~9?H8~1++g;dW$$%&$83Ak zvPaaqaQpPEt#Kzro!+`DsOqeG7Oq?%c+)a#YfTpO6pt$70u|TN(5DY?Jldnb+#vSM zybBK(iLcwX=fs}qr|FgP>*BV4>Rpjl?GpBX+nd7hi~Dqb{r2)L*7;gowbtd>6r)GK zv$pleZTYn2T46m;tLwGgB95ZOi)Y{2T{^(X<=MMJ?LrK@@$%{KU#qY-{kR_drSrj3 zF+q+QhJtSWd$%t5<8DM7uX7z#+LkKHeToAT=34;REK>lFAJ+z@%FNXC678%nmyi!8^zy^+{Eyz z!zDZIe-^`~H$JmA$R4S^k&vtvQex3{Z+`U2?d2^Cc%tX2^~}4v(An|QhMBj*IRtLa zS2Y>tS^!&DpZG#==VS3+y`-Z_QbvxPBLlpzb7vnzu{mGMD6Zmrqe$u{+OO zc=_TN6Xyq)b@4EXe2)5Hl%ZhhoM!0d^>>Y`_a0^cqmA1p3vDP3SMhHRE;uq}Yh^9N zV!^LWF+C5~9}d^`ekR*{+Qq9_?aPF783#Ui%wFR3o$K{I1Ab$JsqYiC?;m>1Hg8Ac z{<#b)GauJ$&B=Uk&Zw2(8Zs;Nwch3hnq0@Hecjc%*-LNDzxcVGe-icxnkdO0IxUcD zw0@&)`kUXg=46-jgw#3M?DF03G2>WH=Zcec?>5;qevoYIIajf%F6hS&!;a~feuhRo zc>8uT*L1He3@6Ok?zFica~ zb!WSZywNd(A2zEi%5E0-$E>MQ^}pff{8WCW^4yivr<6z=HEelioO|evgx1RoW_?p6 ze(eo^S}!zD{qp+M+uu|~wU{&I*=Fe8cUd{zwe=uN?WqZu^|yQsdT{u{iyz-(lG}H; zG9C0|-JSB(`Y?w}O>peJg!jEM7Kf9uK-IY4*$7aA-x^ceYnj&tM?*Y%Ndkmg0 z*J>~dk*@x+-u%d^d8c1{Y~ff?`X{;az9h4#kbneVsQiN4j|?3*lq{&*xIg}Q#mGP zn;baYG_t9I{Qv3E*%`iA?jwI^+#z5tGwuWL{36u~hGq@$ChgwyS@Ios^C6+{z|h+$C3@v6PX+n&ETE(Vb_e zZ+<4O=aR|$c7f%R{}JKIjGJrMF&@&rX#YA;vf6c}e(}2JYtL5hG*z*g}(dnYKCiE^CljCsp?=TvxLL^Esm;%#d!l^&zyDR>8WnW|yY(Tf}d=CH;;0bDqVM<)@DtOMAkG>sQ}Nne0~H)T8ab z_uay)W!pKK^-?a2lr4_hb)j!D=d5oQc5fE(|DJ8o=Gmbu>Z5rve~0=VJG+RpZ!RRh z(b}_df}fWn|K(e43rluOeA9E|Da$B7XTMczvz`N|#XOlCDb?0}Mj^^9=l6t7T+>~f z9hBVb_Ag>)g{%Lc$X_B1ZiLDPhIj~&0`6V?ED2*%l7r|a}m9{Nl7K|d(zZCS;xnW-!7!z z{&91Ia{RaLdaQ1;t`~3B8GSy-m%1uu&9g?+=M7U&?qMk|Q>d$yS(o(fLPeyzk>TOM zylfp7>vdKK9FK)9?$8lm$*|im$!Yo3j@Z{H^zBToW`5CZjC=a>mep=P?oA$Am6hK% z9XfF0%(H#Jydy5wFXVI!SheJ#)2~J8I>w8a08ZC^S) zTk_xzkG5pTiU)HX{9pf_v?ZFClgDgxy-%$}-k#PEOX4|Jy>r1se1Fy zEH{^VuGPu$0e$z*E;`HMF0IdT_T<(2^;Y#8zA;blT%Wb)U(;)j!Z_~Sb*atI5*P*J z*thDxwOl&a$Yb`*Pc3`ucW8^Sn5G<>-G5d)KhU7E=G!X;uPw%VnvECupVhqXsPkB$ z^{df3rP%7lg_dFO^wvn`G_UWy7*HMHx30o1*6Ul*wdoRmj%V}@Zp}zLQ4s3;NYzuP z=x?Cb8;{t&c8O%U%!@xvmS2nRm+q2S_`}(dzki{G!hT7d~m+jsgt=e#pBR)H=8rr zd+&TKda}cBS-oSz>liUjf)%nGY zk&TS*8Z||N!bcBHc(@@mtG?`4^}Y!IhAaLaA{sL$3$M+c>adk*%JIG=ujRXWlasnex%uj?ji-C8 z=IL@K{fmAfp!jmJ$ji4G>!wvVb6ytx$If)*<07Q0wv3Xi z-ydEOYxCypto^<*-AUp*`^o+Ve+&ywE3cW?pCi;dC2Q4x;eFTY6(!sKTuy~oUC~@O zGik|zg?H_C+`40MF?GQ@XXpN~&#Rvc>&5K!I(%l^^2DXV`h4@4dJgRCG}P1GD0f=9 zxJc|u-+JS@+sn%1Zt6Q1&8xk)W#8oXmP;!(#IrSf-}_ba+c441%{AspavY!Z+c2qy zsZOjnJtuIjV|mfU|3D-8!^@AHK2{2iPTbiKUj%)R?>MLtE}0l0|9$Q1#eS`P5i{5N z+IN^$XESwVUQ#Qryn5_o+y&8yqk;llnJ%x-i9BFf8a+GUWA{bj<9>kxu5F)_zE|~~ zU}6c5Fz^0;?!>w$YiByC?LM`ishz2h;eO$@>&bhz7a6Z&+9lKMdq!UQpMA(R-rc?O z*DQ+ESFCN_?^Lx{;rgO@74>s}x73yG-@JLUXvr;?j*9y`RtH*6)s;5aeDnO=yXP}~ z-Y{8~+^CU#>c_%%#+gI7cK3^)-kEMKFIRuNeso(i&uMu z{Q#eiW~-1KrF%7pR!7N;RfIeJtP;O^Q|icst3myVik|1M`%C3d5M?I=#_Lx+9E*M5AL8{)5U6PBIP~n|izU3(rO}b59o9^fjCy7)U9>sX z@Wp3e4ZG-)Q%s9RpH0mbuhg^H;e5@5;iQ6_)y5}!Hy4ZL&OEX7pJR!z$TqF#O~J=s zU#nx@_tLY*M0@k4pdjtT%$_NSjBkpiyluQKG(qTxhJU7g(CLzkQqGk1;jz-*=5d4ROJ3ZcwYS|jHcRn}_`0UU3;t$I zjR}oD|AoWzZt=pZLg8PS2j>qV{ISf9WJd&mvdbI z|FIHK6=<$%IkEf3s{1mH_+3WBmy4Z)C29{x!M!~{PHWz-D{#5s(keP_$=x%l_vQqse0jRGT_oWt{~|u^ zub;FV_~yQKog&w{Qj+7GQFLd!efQJkbjGlm53hc_a2KH$?_~6R^x3s0*UMHoI7>nNT}DeLz(|4|JSdV?>h99^|wgsN2z_BCaPVFKO8@@ zK~?!rQkDGekCooc`OmlhG8Gp&?>pIP^@O~)HxFIdc|gl}V$9?{KDlm;W)Du?{%<~i z;fudw`kCE&hfXbw%PPKIskDnd{igtDN-dMcVCh9-U z!{+?(-zHIY*ZN*$py9-M-qB0^Vj5Iwg+y`gr^=G=Fy#XJ_geUd+QSM|KsZvyX+EpV}#|48;7KZE;1 zqp)WOmV7+6;Obuu=C^6GZZku5N)PGI*4gy%>Hi&bHm~JTIKU&jBvkd?pKVMt8ZRty zzC0~m@;7^~?V=qUOP_wamvJn2@y6Oo?406#3(kC%Vcx2$Y?2V{XWsdjvv~8W*2gjb z?_`{qxcAMC1M6Q}vS0mWnJ3-5_pjGs)+g`WT_%)yE{W9keDys1tmW2wQ|vrT{DM{* z6#u-~mO8^lo#B7A+u_EBmY}BRkF*Nxy{=hr?O-dEHOjfTHtPGad#=So=Y2k2X-fO8 zt5td?E|+&sdCScmTE%Nm9lv3Ba!m|t(eLcr{J9}((S^El2fEW3Gg;WODsQBS`*(#Z>Kx}@&$JfEki2^D$cp!QRjd(3Jnp)ao$ib@fF{0eXcsge^6nO0G}Lh zW^?w@z|E748|8MK|F~;&Rkfo<%%sUK>?5*qi!)Jb&h?X6-ZT42YeNyw+6q0UBBePOeNO)R&8lg>|76R1clpS)jlB}_PmFyYvloxgRL*mWO!(7Qdi>&u*|OGm&bMjj)2dLP~VzUSzf#yfpSWV!ElmNqObcxv}C+WE_oLp!u}D-tD*v>&e&EWaYQ_sc33 z&qFu;%D>ohRB?Q8Nz(sgyZ^?7*0_U4HIecc!+E?#cL(vQMobHRB=p0;)MYcXw19*A z{R2)a1+4%4BIl}~yK&*5x{}@M`Snpgzul#$%lF0^tkLi4zgI35z3f=$qwd`tbL*}Z zACr)(-1>78cU0i_*t&p}^S&LOM^8qqw?E1&s%^V)X>HnkMVrJ;Nk01;w_6y-zIq%o z^XWuCwt!PFS5!QH(b~M?%Z}a0J9%d;t-_RvqITL0*%^FB?Zr0e`2gnUs|ge zzJs01{Hw|ZSA{qo_jkYar+kA#RS67!SmC-bj6 zTCeb-%dleFx$CpnMEdz%$v5&_bI4Dm>UV_Hn!m~014ZtC4OClZ+mL&bBk#9~m;Ro%C}^%a?j&$>hA89Ua`^9KRx39S57P6(%h0Z zX`@n*Z(Y%5Esk?`of}tH#qoYz>tc7~Ig{*%+MT;C)Qnw4!o-?qspo!t<@_t{n9-v3 zXID&&++|_XV|L%W@zb{*mJF&tC%LO0Vb{&y?f8U=uj0W5 z$M-Cb-P#kR*Cko!r2pcqWdDBjtK^w(v9oql=2=#4n$B;|XPUX2`B(4{d%cN)UA8|Z zGajAeNS^mJe}hcVw)7Cb&HB?_j^E-sqrbHGLj074CRZ3UH@5t$(tp4B(h0XT*1l&S z585~D6&fGE5MrxretMzrITrOlAAY^M5OepqwAW){O}=w))f6uWE*6qs_)gr_w&-R7 zx6H23u8D8{?ETSn+Uu~$RSxzlcVpASrOS52RqxDcI>EE!c;U-OcP*;UzvUM2`;fcI zZ1;YlwPKOsUp@x?_Ar-Er*HmH@zUpbu3@H()7$mkt6x6uk!PH47Ak01+wv#OcjbY*Z;x=BKe+b#!LhLF z7Pgeq$Jx*9)>g)Z~9eO$R?eq+U% zBNu#qZRaC}T0%|B>XDtl^Qs|q_$%zWs1SaIDU&7}>K z)I=+eGu*%R?t{_i1N-J`nje43t@!7=QlI~kl8L=hiuWuEH;63^Ue)G)ww-TVi^5{x z2Di5!^WrW)tNYxlkvEw|r`mN>btQwB<}JC_`pkR2Y;z8!@a0!jTgT<8iG1N*!nrVt zr&3>ue+B=CWub3(PdnnlBHVQ4k?V^X{rVrR%Vt03`nLSgmBhjls|AmIvX5Q+f6(Dv z@uaV}&fIV)pOc^#bT(gP#hR7%DKA$gZ;#nndUg?Kk?v#VX)W`d*mmA5`lo(vV_X&2 zoL&YG_N$@)RtEB=7Wn%dU;h4vie&NLGv}wD+bJSnwm-*I;=u*w?LJF3&u3hu(!8OB z@yc}FNf%!);nOslT)y^e_snJvi5*E3nR0dQ_C8s4<^GgC){`%sR%Cg*RjyIke(N=T z5rH#51U|85_QXtSp1{SVJ?-PG`3-+#e5Inb?H{|(e*L`Y`=9eo{v4JD?@z50V({3~ zVn6Nk-E}Iin*!%Ky;`})zx!|6&5Tdn?xD+17I&X?5S#CuA?$x?@yRyFo`<%r?^fP< zHOs1gswxM6yAP}UHuE!*N}YA0f=`ZbIURO;p3*GES#R{suU)vh@1%9daW${DlDo1j zCY_N}lI<5X-ig*+qj*o6tNTM!USHMDh_l-QZUs#$Xg?!aR~Vr?;~ldXS*J=l-=}>0Xq6pvmrb-%RngKi@lJWAa8;S#lAOfK z`KAjr7QWhA)&KHpq3MxD+dGve30j)3P!D(MdAsz(ii;Ob6Q~qw1bNHdHCg%mu z>6F)RO!AQqoFa4L+hiGzM~z~Ik3O1-U(IcuH}Qpm+^4(8Du3_hQ<@l<{Jbh+)8;n} z0ntl1XXyW#_FBSkw}Jh^?Qnoo$aj@0{}SfUic+y~t3FJO4x{p1jI- zCh5<-IYNJ@)>s`{BL3Ot^vY#f;%2sAgpPii6tOu;?8=mfnUSWQnkoG|raop|)>~dt zcPmKg-O<|%njKaB%GvUD-Q~56%JMcbU$0FTo$Stjxt}BZn{n}L@ndEwTNZ>&nH6QL zGR?;Cx9mj!ZyR(nKIU((Br{qPC!`sR! zNlR{&Yi?7C_)~Rid)J4()8}rw9ZN_eWh@$lYAarSI?BFvT|iN@Pp3Ea+-jlnTI4|ehhMw59{S#^ms`id6W#ldG_q5!s*fp`RfHwPJH3EyxC{L52Z3^f#autZeH+E%A>$Fm-oHN z=lG-A-JXAMX}L%;@HwCDda{Y}+~R=D6UF@8RqOA#biD6~`TgfhzRl`Sdm?0vCRZMM z9a!aFKOyX?_UNCq^C)II}2vbCb|1xi<-!|Gx46OJeopzp*s9 zHgWg6r%97F6*pf?ykEFp{;F(aZCB|`@35ndjMjT5eSA?OZ(Dg}!*q?xoY_yD*=i~; zAMQ4Mbusqw3%5@X&*!u8x9j9@ySFnc@c&P#&KuKS*J_{s9Ng!(QQYQm|1arQ)@94~ z?3}@{Psnmp@UpI=b;@UgPF;W7_V{Lsj#SFFlCA7-_11_9|C)VzT4tluE>(|$Ij)@1 zFTWbJ9ufIfwA5v7>fZv@Zxgnh4-tmQ>!wSnxmwh&SWOBsPaBl_c zqx7$hkNjU7sT{Uc*tteUa$cIXoq5QC@C@Jdb&WS|Px)=IQdJhZ<|Z0)>DHp|hT1)R z%zjSRs)ZKU*YVYFn7?w$2bDW+?@wQ_JefENDGj)>}#2q%Q)>I60opIJN|+xI%p&w77Hw7PTs-tL1*9f9kV{*}CoK6KW2=?$f=$MbvHqzlTG z&h;rV-aFl^e^&476G7+bk5UU?Y~*Xrn3VYE^Wue57B4+`@`>`(7c%BozZu-DQ9`OW6ACwS6fM86DBiVe^Cst?yA7|( z`W?{j7Q-mMQ!AI~}afi>|;q2(;`m)G`ecrG4lZJMa|O~gV&PuT8xL6rRSf<@0F zcdeacyVjh?a{V+biOg^8DSxC6?=BBf3Ce#oA%3Y<%&wLTPZfQZU#@OeeCL+*EMTD` z(;A!O$=6nu@INp;@Z)+DkBv;GnI7ZruZtgSGV+mnx;`s^Nm7gX!7Ve+Jy2hI{+qDS zX^zQXrwciWG%5c3yC&bWBrE1!_EWDTT#<8JrMG6UGB_dP=&?8V*sfG*)-aU|Gat7U zK8si3=Y67b;jHr2sn07G^Iv$~ES9;$dg7Z?eRH`E9J8quxD&nij;#>%y;D9Yy}BOzsb=R~hVQdAXZwyTT2FSnczj*#%kC&so=sPk14;w7@Ls$pV0R?qp77;0-=ECZ zeXw#upyTP{*Ow|6d8;BUhcyJ^y~!CF=h--U$~iUD~$%y~X%Y>FVR{p4+@!_isOTB60(F$-a$y z#U>Y>^qDNa;PgfPdprBR9Rplrc(?6*a(CvNOSdKk^ZEZMP2Y7R{EzxX$(cX*u033w zT>M7cWnX`t&hstyjIFuOIfwsFJh!^HCQ?29y7r`(tP|y)_UKm|N*VL!xb=NdIN9E^ zvPpFJd_&usZSnOcS2$VT7d$%p;HlL;CzVX5e@qK>*EunU`6|vzda!xcdaavW>)wZM z+VpCr$1#V zcglH)HC=kV@$3(7&E_Qs9M4QWwpwFnvfhFIhQ|$C-4;I2R#`f~La)Xpv$XL-O0d*M ze%*u)`NsFGaW290Sf0&cm^;_Rce;DBR7T^zf6ms2c7{$^wCwuTcUQBYiEg|q%DaC0 z~gA4Hnu{;pxVymXy-Jbw7ggd(fet*!bKJYE$WTsYs@GLhls zM~-PvRA=r{c`B_j%|hp7Xj05=FK69`qit3FKb!WeaJJZ9Y3%y`U`_oG~?iPXTuT>T6&e<6oET7YUZ#s9(yW1by4lh@!U2%BM@-7L@3DcSj zGoOZZ`1KxcbTky)^RRYn;qQAlwjR~y-o(C}b>@ZjDtq;A)yI2rm~PlFVfD-I^6MLk8?J-GFDG}FYL>>q8{ zM)1zd30|mSY$&DtgT>y@S5CboOt5Z+}M_?OeaiwaIZ>d-aWnZ5>K>EgP;2 zT?oB!cEw!p`h1J8W!ZC*9G>v=ay+-wWRt07)Q|D_{kZL$`IMj0PTKENmY1!Z{8DvA zrNeCP{#rLNeH%BuDLL!; z^asn5N&o6Xbh!tG;U*+=5 z-)teo-Klw_=!ZzluBy~?QVOd=c)#wMvG!g$FE_XNtu+x-MYm6VBf5a&g82E5EtwX( z?(mguFKmDLw=4l1jI7>4kB|FKEMilixVKCAO|{sRD|T;NI9}F1+b7$+(Ph(Y zF`c%r%|E(z+Mj2ax|Av!`3I-l z>;s$C+-#?PGzdvzxO?s58k~yoNz5EAF|onFnl6)p4GW|}A8$?y^dFQ0w6e%XqZLOeww z0WnYZE>{gaeD~aqRTCS;v$MX2B;3ATwY}P}#%E@6x@Vn;p2#VO<{8D|{`2%NO;`V& zCDGCQ*>$1BAFYlD(~}n@vHN{n9Z_>$@<~zPfi%`RYpx6Z;yzz%B-s7AV_CM0-{tFd zifJ)i(xMFA&%5@>JW3Ap>9$ROFV3bad#f+MG|v0I{-0SpP8~E@So@4O@1B8TMzlaP z)5CM8^%`F^H3dve`~Uf5Y@^N+JLQh)b#}j^H1F#b>^|6iadAF#f=ESAWXtE^=%nt0 zTYtJ-RtS8~d;E0bPoFoIz6WodmI|ABx^z>i=d(w*t$Vb7*q_+?e^td%CM9_emxo(2 z--Nh{ylI}b^ykX1^Gy#HDY#v}_*!ZG%WJi*&PsWn{A+h{Of{@(O1K=lc#W;!N|tY> zU5jhBHGk4)vdMiZ`fBE`8(~XqEw9dAZlD-4^YzjzTFiBmHeZ{$dsh9#2g|yICTNB| zdBi_Sbjp+E4I){Qnln-+_44hKbq)Xhe1@@J>jV+I7s|q%g?9Cu_uF)3r>t1A^?kG5 zbDKx4nM^I^S4&^(urEz4X$wBsm-^0$!S@h@iqVtIYH^OT9^H}-!B+WS+%InKnRuUr z`SU@&sFmh-S7o0Md?a(*v-rkuIo3pXDOK*Yn6iyuohEr4Gy3_pmF1>oz=x}wj%-?S z)9~(6&Bu37wLFtev{LQNpWVIc&HEE`|25fi264z&++S!Q@i%dWpo(DI?L%wo7Ow9} zXUP8Z(`}Ml<<&67ay-hdg~g zoxHs;_~EN>;vxZ0zaGB(R5egED?q#2>Q-C$R1G~bp4+K*HH=}wT8zBB^|i8X>w8nV zY?RI}IMMge(nK&bY3u#D4C_UI#Qi^(@%-(vB|NXAtxY9rm?!5yxGl$Uzqg^BiSd>e zSH-ljlcAo`f*-0}RxVRsz`{K1-e%P-`5pHr=a(O6Y_}*%+E;$%sk81g51qN;->$m! zN+hhd)KPpOq?Hi3FP1mVP2?+k^4$GX9dEjyxgU^R{k`*`v=rN_&vVXS$Plw`S$N;4 zmQ#;wR>i&cxvcVACT-{vI=FYAg<+CH{(G+pKeM zf0uL6E^+$KJ+FMNY>rYpTIR~#o-+VV(+JO zB=ud3ogr<%FY}LC$rWanBCiQ6boI^~UdqdH;=X8`|L$NT-`X{^-hDNHvXx7&d#SOt zpu(C}Pgc!y|1f!HyG7@&;_Z6MxgmGYyq#TqWZ`!MW<_Zk^S?XqPT75+Cg^In+FVtc z!ss5^LxtiGTi@6%uG;4iJ?-tpa|JvLKH7ZgE=}ProUmci`tA1wOLVoK9;n#z=9y;3 zUmm52x$+v3w+{U@3V&H4CA9x~%gILv**RquYHEM8+`i%dXJL-qqp8_^`b`{VeLqC| zE?x0u>+P{xx@*@4k)_PhFMB@b#rAs0-BK#a`YZc$N7SynvyFsL+9un*l&JMvv5>3( z*23xQ&5eZaG8S!Ee4y|B>Z7OkmKJ`Ka8$ZkBL7UlIUq^-O5bbQgRf6sXXjMakG`=l zYUkbCM-FKoabMuan))W<(JZWmW#tVm&S^v=KN5( zzOntrucuGL`joT|zkh!=UO0y{L6N!k;lD-e{9G-Uzc2Qgc%*RN0f|osSYBc0U&Q z!@05av&79hdDpkgt6%F_UC3muH~O`D>70$u3?`e!n6!Cou3TRvvvYI4JHyTMCI{FQ zENv$Ik^8_r#Zat$WGV3MJQ% z`g(S#T|IYVxzVn_PL|EbdZ%&dv3!}__paS8imQw-MmCO#mGR_@n$`(^8z##-=iL9- z)&AIboAgTm{-U>ezVE&-5h~s>WBY>*&+N~rXwI8lx;yM=@II|bhdaDWH*A?##_`={ zfqaA8&C}0Ui?uM{UMFoPQ?CBrTqWj}d{t11rS^&yc6Xc4aQS{^ylS)LrCm+bhNmBo zoxl9ya-E{|VtIdQK3?;X<8$i;1ik$w9It-Q4YGIeTByhWQN;Rap}$H7M-Rg*Gu;@u zS~lURHGa`9Ud8;gj!l26dFpg^%V%ysz0{y6(l(KYln3-_)Wf}M@~jGyg% zSim3j|8@EAD6dO(@8|6JscN%{!*;T6glj*}W_CS>EC3(RW#W=20%?d19R_ zR=XrjIh?uEAb-yK{@?2yLTC2WPB^jk;Vw_LFU&g>wr$WYOZw$>h}+RwdF#JlH`kpt zxp2laHT2knXZs{Bd%^i{n7`3DtR-?|+${Vh}yu`d9Gs-*XX4 z1==^JHq|#qzgW(k`SY1%!D3+C#H!!Ds)NFoc+DT zMw|QKO`oG8mU0s>GpK2@UAp^w;)DB=`HxFBlxpv1&HA|7-Bq18r&8yb%zv{^6Tug0 z)^hPvFW)+mFLfqz#*!n=a}O-kjptkPt=6T)@{m27f54nOx=*h!@D2a#;3en&K)_t# z)!$+T-s#Mme#t36IFes1-kG)UBd@YzgV(LUs-2f?H`h)3=&!u+$olZf2I8d`l`qVk z_a-f0G0JqS$x2Dt^?_SML(Zx{vp;@6`gYQ#-Zvbp7aZEw|7*rS;T@0LEY8Pj@gHK} zD|&3w_q|h3iyOG=i9NcWcYgWHZ-x__zwB|kIQ8j-sRB)EQLWjsKX+`OyZc8y8fw8(`NC(BNf^|Qo>Z{&kn6Wnx!3Vu^2ylRKQ8b4!rI<+r$kpBTxzCq*Dh9-iywbm)@}C zth}Aj;vZP5E&b!eG1e2-XV$l_d$RHQ2fsM=ycZ9aT8AwOyQLX^Wp9U!A-B~A^+|3k z*NEDE{;_Q8o#p3JW_5pP-CLQbsQ*T$q{ZuWaf-C5_$7|$JI6d1Ki1v({GEzLXu>PQ z`@1GgEMd4K>v+&*-^&|LOlE~0?GyVoG}e{*Ao(E{|uI#$l zaCfzflgq04`6usw=bz0vJ62)l;%#$<_|1>Rc~)&yt@_RssiIx zt6cqU`S15(2}@n9(s{m{U(?*QMD%3Fg^Rx7c-_s%vg=aJ3?N+?D-&VPYbA|I0W1GnN`NDhR4pu4aXs);3 zJ=Y>5C(@QnX!4Q0FMjhHvgc^$@SMEZ|7G`rOhze<_WO-#PJ0vH3rzU@|A?{d_k~-O zQs18Ob@=e(S=)9ihFMt>i_TxR75(y7hc%M3u=UNpy7X@sr$))$6j?Q;)Nq=&nBl(0 zJ8}JnPjAn4oO=AMszK*-715t6Z=98nY}dg^f3vW-} z@=#WRt)p`x@A~5zud`(QvqRgN>;L_>ymorG|1{Ny>-#G%zRi0e@?e=_?6$KdH;Ug`IB=}Y6!Yi&KI_ROLX95lUjVeYpIItVXyzIoLiq*z1BGDIO(DO{e(RAA5#5qU2`r@ zT*^_YS6NgxkN4Y+C^?p2I=lY{KNXx%pemCra+~%2UbU8=8@73HmMO8cB>s|U4SDd$ zt(}cW@R8u;MbjsAMQ7i+wY|!w=!wWaR@Uz0$pY7wcDf%Ce7yXKAZzi86ooUDZquW# z7F71l=<(#dbTHSNF+;OBYOT_@>e7HI%kIuw=3|pSZOiR-dhLcc>=v>&MSNOv!gG$( zF+C=Qi}yXOSCmCRQ(AVps3I|A;&$$(jUCh0#AzR$-T!sL>IpkKU1fS_OjmkS?Ah73 z?a`T_L`MjlAMm& z%-DPT%EX96@~Q_ag9Qz3Cu}}oX|ufC=auiya}oQ>bEop`zgDdBI#l%hlN-;T=^RSW zSYF~M%nl-*@*yCh^j{8U)!@cia;zeO8mH%((-V;Q4-IKs+y>jVW6ecjw$VaLDC zEi4OHSt6UdNA=`29KmA7ZaG!V8is$#-OY@ba7&f$jQ!|+Q)tF7x_<*fWlIFaRn%|7? ziwVs;AZ?a(leJ^MxbYplfra0 z?V^=@;>sF7HYs0oe-YsKME26MD&@uMy)(3KHufD7SytS%>jK}kn!Y}{(i0}WR>5=cyS=|3Wj)z;RN^^j$$9}< z9`~~xZO~WuoZ#Wq<;+h%d3&GX7O%h$?a%JcUnp-S zvht+&{B{-gh9{+wa-J_t-&!eF^SJQQyw%fV!gx(eHy@t7 z<5_zyOSr`G*+F;u-A_I}^t32}snam!@TSWvck^{ka(}__&~jxRlbYw0d#Q>%>-Oqh zf4-+{-AmCUnvA(;Efa>$_LK%0(GY?aw+d(4P6lgO9bF?T`I0`_<)o2I(u$ihpie zS#MzdzRJn!)2SRinUXugJxvyjb62!XsNnV}x}lR(ye4y>e))9n&!wund}~tYZC~tn zVn)OZhEmu2hj&k5-Rkk@%DK}ME3367)mZ+y&9a?!Xs&l!dxG}?bt!A;+>DCASZt60!%P@TJt=3fO!N2VC-uhkgLZ@Z+FD#ts@AX2p z-7&oC@RCDYr)n~6PhjYfzNp>u`Ks}5kH(1be=Ga8m!%xJadYlFsm^5%y&)4%oL}3% z?#!AC(3=Z+@8lz%eRT z*X!QRWsjv6mCWQSNsqmyHSNr?bDQ7XezoE6-QX~$$d9_@APlEtnJaX)p}d8$GrK88MltVKV>0ec*(?|33N9 zWMR$j1ydwtOd9_53k5pP(%)}&|6#4y(E^b^)m#0(KJ54Jzx-)5r|<4rEruD20*4;W zfBT2$9jpA}2Q2wpF1g*To;$&xV^`WIhEHBz*@CSnr`;4vum8OAv~CPHv)WbF-H!L3 zM6hXWyJ2FPW`E(c$xV*v)OA~Ye)To!e7~Y{Dez;F(WUPbjDN+ItY8XDSWtNRD>Fx& z=sKkfFK(v34ln84l_AJ2sy2JmUBf?SN5lF&JG%VY3>1skBrgd)RioN;#oNh!`Q4Kz z8!~o2$-RFj|K`F_mcL$kfAclgT)2H>?UQmPkFB{cSIHlUX=B(~_@+!wtHE=dgVGE` zmNn^~#>_8;5}Q7ktX-XabDwbW%1VYk%Ds}e6=N(mmriMDyB3PO!XijS{d{`bcJg01TrdOWU(OtpIx z*uSz-v?VA~wwC|0N0;`(X{-&?o}KO!dmkf~@i6eEHP7wX%oCBy9&_&`7f9Ok1~+Ve zq5IqW&)FZ(r9wS7blzq3;A+$DyYD8_{h6tMU4L8kMW+Vg$$}rdZH`^}RaI^yTp`{w z=TKar!Lfo@X$@g_<6D)sU(Svu!E`LebAmNzQjq!g1RQYyL0Qs9-X{5-zDzs&sycGKbQ6L zWM=uCTD9)xXaS)>hV?=Dcx-)rq^D7In}qZd}W-@rx!Z|wNh-7w56}j zQ`wgO`{t7~um1HFD6Bhg<>|a@&dm1DVTRc*ncN(P4SRRx&FsBx=Kbc?7uV~vda5QW zE4N4-@%V4j{^Z2}V}TnkKVz0rEl9NfWWA}ZG}@F4ts7rxaIb?`Z?Q4JsIaW@8)^N zF4D;8QrvU$rE1L5y%n=hR0ZkWh|{pNaZT$MjR^f@#aJ#HlvHE$biEE$Acx2GBf9u{n-FPnr6<;3TiRaE-J-T#9x8r=#wkOZFcC9u2#v}AH;D+hz z*GW%{41X2wcwl&_f5YU7ta=-#E>t`AM|#!C;4O~}53Gnk_S*2<>7x?GiBgSya*yqD z7pNUMGjHRhZ;4_^EX## zT@uJ&Z+~&(#l3qRC*CZv4!FPPNZ984zDb_xiy5_M{*j(<%)~RX-hWnVe@(Vhr@%Gy z+m-jWi9dg(#MsubE#-z#|KloSX`|;=)3}qk_Ij|b(Ob^`>+^?Q+q3tXeCqOJ*wG`p zua_%t&7O1{|9g5Vn-}kvbKE75UZXwHa@tX>@%Qdd7Oi%LOHTU+S?dn|28(G%RNxl42 zfJK^7Wc&Jg&+cX)@4J4h{qKf_Y0LS}UVdx1#3JdPT4ZY522CZ$MmE-GXQkg>$#*=; zwZrlFi5I13uSoo8oG-}}o)me}w5s-G^6|Gv`U)A;t2M4icOS48NETB)Zasnf#l*Df z-=@F#S94H)9rdU)IDyxmE6^+u(UucMsg*u-^3?+izK(@E>yZRH_7SIslr7m zZv|t|e_IgDX)fV&zR0uBftSl>Nk+l(X?LTSGv1CUU1MPVSRhAo$G(5ey$p<=yvy@? z-|=U-3VyqBE&1y||Fd4Emm_qJecW}cR&nF~?i1e@+H88DRTVUuqxsY;?ds_)8*>tr zL$>{?sl65c@8|?U*@H$WeB9TqTG-;w&|CY}ZPuaI!W&|f%8q9~fQyPr5Iia^%=y3CG$)*N@jOHPcX&N^LdKlxqt(a>nIEtA@$XvgFka!P6!L zIL%Y6ec_h(=pKW-Q?2B$y1NT+-*EkR{>JQ7$4Sbkr~Z#|&0Fv&LGIiBjn}lF1z70( zvTVvR`?+b;p+mV0BCC|bv!;Gd-?8N`AG2s#w1{nWpSX%%e3($Qm_g1&;gJIr#dtqmd-tXtf-wVQ8HJ`g&gYIgj;_KITDgL?D3a-SG% zGY?WJn)zS;49k0=GGEJ=D?Y6KI(@V9-5ixO-W}j6E;NH>bcF#huGihdx z%k-@JdxEP?)_v*byScvDV3o&wo0sf`am*VIZ~l;1=J=%Zr;>fn_3JO5-BW&8;qfFo zvG50<_}0_Pj@#wkv~K+>bZ&n$W96H;XwBlz-v{GF4HwxxI&UMoK_jtOhr4ORGWo5Z zS;$*?o~9k`hob$8=fArYi?$)7T6dm$85PW&g;=xhfgNUoo>V}p7MkLVNoj| zfBEVg;!kuvCrx_myH>%#OhTVS@XCpo&VirfR1eSfn0~Qhd5hrQpZUr?r@pl=S(JL) zU`52+|2Gs3PYe8br8<4~uSHJXON(`SC+FvNElz(i=VfB0{jsA~=K&8(AimkA5!N=wY2`#t(iVe%zWCYOVkFEOpJo3%-q zL*vD|DHmVmIz7uV*?TKw-m@RCuW!A*{md$vVU`efxV}Z{fXT((P$; zgkG+XUw-UQen8A@u3U!5eRo@U7H7(BD%-HI%D!>e%7Sf+VF}R+&L&Cbk~iPXcDZU7Let zy|%+kzsvc?aOn5z1;wG$ZX8OGw*RQSz~^qQdBn%i8%nPWVl>iT zGBrf@tSf)NGXC?gg2IDx-Ivb%m^|60%Aj{0&#do`>|Ik^rb>w4i|wiEJiFlOj4M1$ z^CfKz8HCeV`||R0UcG+9xSaj4-He`_=XLzjM1Fp%T>SFt3nryAX1yOnPcz>z{Cifm z%qd${!?{%F?)3ij)25s5_4&0(Pg3CBnP9#8!h*^Bj( z8uM1YTH;;9U6I?)H&UCH2PmFAVIbW-U9jWBfw<0xG3k8y%Hfy#e_u6uctN1hra10) zAb-K$Y(_8EEnr zXxxgMDZAF+Pvyc9pV@Z`(_PzHTpn9z9^1d;R(^cUD<1yF^TrQv#krL%bZGHNl0LY% zXU*fRSr7bQtY?{&ecdHh^F#0~-^F^CW!FMPR5^G1OY41~(88K4&i?U3(F5NHo6NT` zX(XY%VU6ZRkYSbeRWTPtq&qOj1gU5@@wWn?RQ{)rq=d(!d1Mnx_COJ>EI)XFe> zU5#mzZyQeCv4-P9V@PZ6qfJ{|mX@C?zPf0-Q&(-U38&EZs%smLB*)6lx%0tsWB3LA zz5Cs?_!%c%m@DQQlbL$t&8J!=$yv_@Yp!I^bT^W+wA(W0(z_qumfxM#%(7s0#D;8> znGB-8B>r0+jh)*Qrknb)QD;UaAcHe=bdH zeA#eu&d=jDwGVk-<{8WGi(pyLc_6EET~$`bgA;WL%fANp%SOxF_=ziI%`sCi(Er~% zU$tuThV$3>tFJ!_tNjp{^iyr!;`cK+5Abg*HMl)>;Tw_2ySL+bl(-BxHb1<5Z_;v3}Yw@8KzHEw|j@vqYDZd*}9c!O&;j z4X@Umo9t?@>3i%v*W3du9jBNE-+y~ira~xpqnL{F`_Ja>Cz=Z8PdD0kOvn6wm+0++ zN=Ng_Jdcyb4z+CFyTq$YHd^xd&vw~}n)~4oML%Di>@22WRlGp%>*>kOUhHK}GVT9F zza0r=59$j#;`b``%y&y=L(2@?`BV33E(!V8{%GRItHoO1rU&T! za(cfyw!QF8-kakSIS;REVXORjBe7&#ah_SyPM<$wrulDQmTujB;fNMj%a_Ra^PNi+ zuivZ}caTllL zf;NWs4?@Z}^?$dovXd~|N#NGY|MuU;hE)YO}=ntaUZRoB$I5CuP-Ls_jIvnCtQWp`g; zQ`P$V_I++y)+f=y`}4oX7g`9;nRDXTr=vX1Jd%+EgkCm+l6EI4bHF?Da@8<)j;Cc7H~-sHqx6gwiR zaAoUN`M%0eH{aw>(Ths8m?C>S@(0(22?7EO($X(IKK4zgM5alWW8&A)owvT%P2W1@ z+&ZQkGG{+kIc=zCY~^BlYU^b!m*U5`=JL+A@6XCaXDyh&lEdt^u+7u#^|rnttfJl% z*UvqZzc}dDgs*aT-F0_!9rl?|JP=U6+hgzli!AF{{w&`!uTuTrBqb*wPL1h{ucp=q z{gqt&_r|P_^c3k0lYh%`p7?S0jo{_^$F(w7wSHxi^|3Yna^kD+esAlu)7Bnw+ZQE5mKt_;omQPA8@T)A z|4TJad{Y?xuk?1fs0XkXTr)XxQH`c{E6q)p}Ok2scY_}s@X%Xi) z&8VBtt8xOXRzI@JdX=8WuD8nCgKvo$*N3h>DRr(cp=YYX0{RU0HAx*wbmn1O^>xLR zpI4{Lwg)`Y5|hon`tDxov=+zN-DT((hij=x~mF@3zU?%Hm#sJMrStt)}a(leB6}=YDX$ZMml7#^rrUb2`GN z&Mcf}D)})r<=>f7cZWNc$0BxKbvafRxI6SaYlfY}!cBiO7wmfbb*a`YcTrB&CtQEr za>Cc>)K2Pry=-dHru1&P!u7K^3V#-T!rO57?_P&*0qY;c2LSXYP?P0?ITgg z(k(_43g<6+sU(%9@V7huP9OgMIy?xFGFS%-=nRO}?pXEx+T8FCzF1UQf zJK3}9@5HUAPw{V_U3Qt}-Ncv#(GzjW&lW@-F`cUDHD|6$z^SLA&#QA|563$Mbum8I z-adVz)t7}zKKJd`GfF6$HL#ugQrFs66O#S^YGLQOv;z0f$Ma5qxtY@_cXUacf~)&h z4de5#3{?w`P4i1E*?UOQt7=w5gV}_dibqp*5BpX&$d+!YPh&`1cxdu5vHg>~PWt@0 zxh{d3w_&^WhhGzG^jH;H>Y_K@Pbx3*Hx>P*Eq3mX+tmKjntz9{N<9(yWj#@_;r;1J z&68SOGj7>+IAtds)7|~7^PI2eika~_dLNjggbTykp0v&9v~lcu`SI%MdH$ES6)jJ% zILW;}o8x%gn-4B;1-M?U%wU#PedO=gb}_b~f;n+cHFlm#$rSJWAidbvxlZSS~8Ok1?eQI z9yxdEVDAQf+21Ayv%)zfPAi?uc`EWdWZKcL->lNM?~f@MS-x8ssIF(?8kU>?WOl5C2|XXSP=Hl#ElMOiteAM?BXBttMFSy4)f>;dkGDjRjI&>!b8~ zy#!K5)01Cr8SQ`T5y5&1QF9r+64lKW>-kZl-!=mE>IS z8rv<_Vj9}VM5pQIil$e1{kgC*sPWUU*~*=Yw>4&cuM~N(?ZeXQA8Q0eT93}Ky=8hT z?89V-;F;RbcUt?r_~_vf*mTZP$+i89eEQ+|UAw!c?9|-0+M=MpZOhyRf!YTcia6gq z(Qn-#Rvf!>z0jR=nfvd1sE96dpIrZv$!(t6oWvth8LVY9R9+SA)Oh}C@sX>NGoQ-O zscDSS+hJqUb-h?w^!7Qo#=6QoGAUR5HogA9`Yc(t@qg9Ip0{jjZ#%yv9J-d~H9s_P z`}sYSFInaAEM*niSU4rpwQ|FLZ!4V$iL(>z%fqiY?P8Gi)6wB7f4@#`r+2{nM=PxC z-&FmK-FC^yC?%&sD{cM9-UF43UOY@#@>XcZ8CPT7gIA8<6xNwOPr=Q3m$!!F$<+mG zK8Z+l%`1v>WZDvc!svX3=bK}FKdns9-dD9aR{UtrO|Lm2nb(<2!Y$U_?lb@MJnF4? zYfE~O{I>5~^|%W|_oTaSobdeKR6(nQ;fa4(57+z^Z4$~k@m`8$#=PrVA3t?|Wixk9 z4zo6V)64zZf{)R4QC0SIChnhVMICcazmED@wrJUI`4x97`OVcF_bT6M{?hPE?ZL(c zAL=hg*4nNwvNU>lr|p{i>4WcP#(VF~*b!x|WS#$yJ2+^UNWjn9s`GC@?YUraV_~Q3 zs;zT9*Ua{~ZOpvT?3K}L%6EKwCSt+F^HKEj<_~+$c0D+I zkM~vKl7pX1`GbGg^8bv@O6Z^I@!&(XhuR4Scc;40yYmlCF_^qy6YHYe*R{6m?Kp7r z$Y}$GVp%%{X0f!s9Mjz|L?$O44eVx3yU6;@_ssSm%{+Y5mx&gHo}akjQsTqMH(B2I z7|dUy7@JVGrt;XnYo+|!bN+msU8ZjOxh#66N3smB)8`8bdrDb27v#^-7An4fq^dIE z1ZRV4an%Wx$Temq|ah!f8n!1<&cpYcS%dqDelQ_>G+82Dh^7gi*c=5Q1 zFV~KU|1vUNutM?N@$&Dh9=?-#+%-?6PMKlm8~)`=C4qkwo{R6_>vPrUlA(3=_KF?9 zDi`a&-LY)J7SGSTqQ&>Sb~WAB<%oOVZJTvLbGq@VNrLfLUxwao=G`N7+q!v=-0SJ0 z7pi}ji)!=0lZXSHe zAzCqMmdcWjUruY}B2V-0eNwCbU-1vKk9fNA#)?(;=GsC}4;~Ae|4ncCGVU_-nwqy6 zdC#o5q@*@Z-Pok_Ojn4L^Q;wvRNvLRsx1;?4>t#HT6*}G-*wk7=jU$-v=TT!iTm{R zs|qvSUUAIX{8mm>{NV$s6xFE=`{#bD4zMvlq`zn0DxECtm)rL)v-zezjn{`aj+gxu zhr^1f{pVH*etG!*)B&yurw-0MznZO|{n+Ex5|b~O%N#!^G-I{0rNa!-cHmb+hSk-U6cFRw^b?6vSoGcF!ssL;xFlzhDW_~m0uj|Xcm`NAmvXYalHER(Zl z_vhx^xbt0SS<;!LX%-QFe5+oD@PD|@-NZesb5)Js;f2c*o(0dAIcjleH=nSIw9u|2 zI+jnrTYd-j=habM|X!sb|Zt{d7 z^K|~3TU$=wWIDE*)$ZTJujfN%ifS=goqIG-%ENO*^VAiOzWE*C@UfE&n5UTi;>J?9 zKX;3d1RRJIN^0|8cJ#l)j)h8+Q3`-1w{D$@{E%b9i!v;`O(0I^E+XTz_rL zQpr8v9Ts|~=(&F{Uf*-qUKN3)1-y^)ql5)_PuA$}x^ye`)u(2g#ksp% zk39Rf-OjA-wp1q*S2|DbrPeRuZ`ceT_^oljH)&~K%$x;$c~xiMn{T?W$9DacnEOS( z$&(Xr?#@UId-$RDuw0ir|C$MBxE{Ywdi-ncMa2c`>GuzONvdhs=A~irNT*Wx>x<(X z9N1M{jx%(0pFMr_O?P7VtDJC`d3kzK=cU$as@A@ldHu*7*4RbIzszEI`kJMqgyYG^ zlC87d=V=~f7dF-{Q*XZ+{IcPJ$X(Oh)dhwBFTA;Ndd4dM7ME!8OBVuyJR4=dzjIZ( zvw20-QlqM)2aeP`?7R4MW0m!$jZfG1&SEiTJErflrk2_Cz_PTDZSi9659Vw?y|6@b zk+WFJrhN*3qNs zgYK(y<{Y?d{;_nY^;a1N2F(>t3hn!fMKV+zWCOQ+pBLY5A zh4l}uqixCxI@{*_i7}hM*hIH>&$K%6g#t$XD^J{dHT}kcxTTfR9sxO%e)~G z810zj^L^MST1DzU5;HPm?8uqIljzQULCR@6`)skP$GK;h2=1l0iEXmUKXVUlu0AE@OGJ*nMOfBWjy?%B+mZ(Oo2?|G;Aw~I$?SEgnKpL~O7 z)bmS%wd_{5``58&#K_BKOs~Bw_V;}(7k>8esbfd{9JsSBe#6r% zVg4&$m45Z#bHdpssOj^sX$+TcwSM-0F^8R3A!F{GVvUn`B0mZC$B7FHbr(t-uZ^|XO zdtQl*?w0GuyUqA^JrnKv+`RC$)SV+ceFJ3+m3O;tRM{}MG(k66k7K`HU)dUmri`Wh zoq@VLg_(j1K7aD|?!S{BXc@=cI%{ZdDf>g-QMk+{>0yy5!({!aoh=^Am7m1T zxqSb+*8@$7X_LR~4o<$nSroRdx`#1y`92$?_(P#dHkv176zW%M&u258Ci85rrp1Gv z3GOz2XPzIwvrT!&eVGjg^N(B(%&5@O$H*=c(rA|YQkoUYF44?CzOLn;PWqWc%!Uku>mtt=@W zg?qt_C*kuyIp5oI|GbXL-<`ZU0zq}_-@KjnX#UAlw{D+5^J=$4f_n5pLDQD(Us+79 z0!Jq<)eKCvu60}V+}GRqoyGpFr8BHPoqAPU8d99UhS?V z;V0!&(-$i_pXNBZes?FQr|m&*6E5#>jlPK+^L#g+YhM$TU$^JahK_#b84*d|_gCo` zh6`L4dlGQ+HNTc})ZA8%T^0W}l$qc1O?wk|Kx3m$zNp{>?kPTo@5@ZPlhn1?KL=ab zWv+RDeU4?+U1fWN$In{dpU_CqUZsCG-o575zi9z=)xpMU4x{KlQ#=Gye)F%;Qe*yHx^>z8Z^mzGZ4^Y}x__41G`(E!6Ln_K zJbS}=aiz~!Sb0~)ul>`vL^mtVX!^$A28Ye!CViRXn6}XUHoH^WBBP8fFYD(kOU{>{ zmX+?(Est8yuW%MMF3T1YNV?Thzy5^-}ln7gy? zrs9heapiB+eu*)ePmTV)ATnc(@v4-z=S;g-99EBtdA{}6(RXcHrq?{9SguZ}^}3$< zgW2|himllLvq!rQtKI+n{rWPq=f2P5*q@zu`=wI+Z3p)p&Lgq{$t&#gU8Qt>s5XWu z&Mo_6y=Z&lYW)q{mF%*`Q$&x-1@(tr3)mhR{ggFP$}IR_$>*4ziJ}j3B@0-}Lhh8S+v`XEwZfVl91*?~un0nTZLO z-sU#XgnyNrJ`rcox&7;Zwd*;SZPQ{z6$1Ypzd3oO@9VS+2B&kmb;QcFIj&1A-5p#COt2do`5SFv^jSqKp z-`lwYf0A@tnRZRgInd5H`$wpAU(wEf*E^y-S>M=2-b*zoDLJVI9ZXI*Ma~%&;b-bHW zmH$=a-Ve3vhoA1uT-(j{D|zdeTl0ORuPMJgXH&;fXd9Q9VBg*Ir*vz@ZYjYKk^83E zE1n8_h*g-(Xx`#JpJBuOTZfhXFP{s4Si806_qMeSOA=4jbgnwGHC5rm#NYy(5=94P z=X+W8)zR6Nmo;Aa#I0k~?KNMhs1kkKpeb<@R{j`%6sV_BL zX3S{t@hV+8&yykSV4Pbh}+fcotk1YRa0ChL&8Wf=8VY6@45Oqd-iHef!()1J1&mRDq@?Y!(6aBg|%?!u88ePVNZBgeEPv5Fgt#7 zEW^umq3$+5(|f6^+d5~(H1o216^2}^=$ZKW=h?3n^Jgy>QGDX^Hy4C|MBX@*TqG3g&{JcwJs=~NyEupOMCip|dwuw3qG(IMmu93bKW%Br!#j}Z?r<vWTAC$BtTEiV6isr^0HMQK_rdh2pt%g$2zt&kD=BsYe;;gyEg z%yav8pLkisz^CJvq;+)O=W7qlijozUL~VVvxV^LU<|)pWpv`B>@2`ugo4#jR*9|A` zmzO_!EHLn1raLe79rOObvrZP?ym$Fic)3know(uRu(htNJ=Q+QUs)y0R9TRa(Q%u> z_0x(wEF0Fv?bnX26Tdq{i6>O~Ykqw8hIsC45$4WZK|-(VmOs;apB=kn+7e^e7Y;m3 z-Rs|<`L#R9WX9skWXV>(iggZJ$ur(t`u?zd^T;(tF8Jw!h3YS6dxqa*ocSrBW83$Y zydvu+?2p$f+--YZ%xGu*tldd2r|X24MD%T0ci|9Eyv-ZsXUmP2u%{F`m?SpezwPtq zx{0OZ?_I)gGwRIw#Ll?JOlbZx-ONFp`QM!LlT#|*{&i?nlvWGY{B5H+nThx3ly3># zyMJ+qlJ317{$?K2-J-Z(zv(kBN$F6nqY+NRxIU~MLz|vu9*>#7gpZ^vy&YpYK;lt6%;ojt1nM>9n;CGRm66pdxj=Z46J;?g^v|JEAXE6#j!)4`v6>95#wPJ=sAMr=3kZd+(`ajk>rj}|A(lV(m= zlh~KOn7{t?)OwF&E*&19LfYeYmrE}#IsA0V{-^UIeD9rDrrPlI>+2UKe=-6+K#d7Z+GO(-8x^iQoR4)m38T+ z@9YXU^RQOmxqtP6N5?CBvwrpDCBD55COWZ4zg+h&Qa4J96L~1xIk7&H<(=rU;MmNv zv$OyI*!0GF0i(dVK34P3Rc1@#uW>M~+`@LOOoL&=19pMK2IUUM(YHnXS^56_z8)L8 zM$(t-Rkn5av1c*YS-2bmj&XM0IBA!B$y??I-|M2Py4ZJepASzE{legP;KfzGF0%Hp1`(wjr(N8zyHYox$CkdXNJl}-t!Ztevjk0*?y*O z-olON)-TGQ@M7M?nDbM^K9m}-?{$ja;wG>*;?M5ftBi~Ff5pB0sQv6>+4dC`$QpsQBE`QD{|K5YhGq;`z2e>o!{x(^{zdle=>~`>Z z4o+{|ShL-a4xW0TPe=jyl>m)nLbh< zx3)apx?<+K$hOi)Zyj#mHdd8eaP{5&*;BQ7O{^`Seo5s^blPK)|4?s&mnWA~X#UC9 z$4@QXD_r0D?_?kc;{vzIGxMJ)zwJGCH?+(pO^$cziG@nL4zfvGM^{ak{1(lba^Fc^ ze0uOtY4x~w$Adr0E}ymf%9Gb&LMvKJ^D{mdapbg^oO;>J?9a3Q+q+Wf4gC_TEFsTc ztW4gazM}2H_K(}PzJ0g8XZy{gZw*_8i;Ygr{lOmH^Z!-Ay{CTjX05nxsr4e_&E8Wy z&u8=)MaTIIiyb?aeX4Ws8>gTJ{Vy|rTZDc!SmQF`L6E1^k0-p1$6u_E?mYjXN`L0j z%ijWbxqV1ZX8V0mS*hJTkI8UZ?xAz@7p$t#Q~&F?)8BPM_JQku@|BC+vo7`@-e+dU zy2zfr)o{P?B>O=A6#4jzPCMe(T$=UNbKRXLT{EUNPA}|ZrOqA{UF|&2>DwGLuHV^r zp3T@`s<`dJmNTWNW8N~{UKsIs&nGvAZ2m`oy)MLNf8M&N#rt*3i@7d(f$CDHR!?p$ zZZDR0Z+ddIy8Y%UmF|E3`A?U;KT|*9!>3P5@+=cW=I~p(;R3Z+%* z%=10|Jo8W7)@qaU^`PA;(UAQrPeYb(Tyy-|f5n%Ku1a5-JowIg9n4}=bAK!RqV`S+P|gV@BSXkh=;!g|NAU{5r0WW znYH4A`I9T`cAGA;8J_QXB6G$~kNsKtn*A?NXeKc4PhZ5iR(YcTwZMPxbTp4PP%ltJc1uWPZTS!yyqSQdeev+W0a; zSO3w~_4C^V8Vk+$yt-QZkg;${`l&PA63^Na7d3lDvHQtuhPs?Tt)T`BUc$ zua0mC=pDP(%XmjB%clI_Ut^0)|8BmuOY4}prftLazlUGROjfp4o;UCIH?0(nOKlz% zKIzFE8{PME{@bwlc6K^z*V@|J%^?@=Uo?5T!1V4b|MznwpJmZ-K^+$Re7J6&d#h-trz8DQM<~%KV4nmKf?<-j<3fm z)4c;u=Blj|Ug|FOc3j?`AKwNSXvw=w4A<~a+mZN4jfe?!Qn_xduD-)|di^uLh8XApGv!l@{y zv|v}kYL5-od%~a2JW?X|Q^EPRT25fYtI@WWmuD5dGQ#0Sn-udf>fSMO{& zd+6Hjv>#m;=KbMvst@|YVm6~n(p6ga&xE+TOZ6}2iC4^DBA3Q-#c%H>e&*+qEeenF zwfN#%DoZThd~3gcthQeBrnSfv^Ao4;t#bWV$Yy@x=JgHJHr@GWx%RS&gU(d*_UDJ5 zu`Oj)*i`T-j!FL9=Ox>-r#gOmaw#N1XrkNVLwYhJ$SRGc8Nci-$KqO}~`@*K7Mb8qLJtKAj!=9-A5yiIO! z#tN6tGY#os{Ov+Il6z(fy*!scd+~qM>qn>Al)X82?XK*?b0z2QP3-x2XmjQlL7@rG zu|k&*t^KigOMT5%?F)+*Z)@J-ku^tp>jKqgf7P`rx$hF6?^XIT&Cs(V{{23k+o!$n z&iK(){9Qa)E^OcGNm~MUTe?-QUU72e`CqTASiJvEKYf0o?#XJ4ra*0R`3jeNPL34^ zK3mI1#xWifO;KECbwB2Kjqq%Rx929#)LK;gPU5%Il|&W)Ie$MaJ-lu4lTxKzQ@7*6EgN%=d^)P) zvTWj}6({fUFh%*f&z~yl@p$L!JK4foPaC+~Zh93SoMGVWHPwY-*Y4B2&;GwLY5x2v z!43wiem!ev5n_A3eL{ zW9=%W1qdHwIu zNG|n|C6nZya+iBw^ixWB?ESqiX*r|l3NFc>KienFeK#v~6Z2R78}?q&hvrzw z{7BJUSbF#eyX4NlwL1%U%IxCXT0Q&PKUp84rY-zuel!=GFyHaqwRDn9{eI2)r(N~F zPoBGYOKcy@Dff@%OP#hRpE!H_AwR#a^I};xlND3G?2DT@y*>P4VZ>R+?fH4HjBD4i ziEylUy0M&fnHAj$izRApw{72T-|YCh zt3SVtZ^Pm<;oreQ0W}1DxCfHM*A;TtSbtvP0RQ5wt zmEB=8Qobv;>m6BtJvTxoxY?>LBiFy?L{@XE)A?m{VoRdS*Dv^YszALnDw#Xwj;i3X z+N!GuByAopTzKzTafeLZvFkD`@3e(+i8kEUOyB9v`<9K1Z=S@S-FqhW2`BUK>V9!3 z?(zO2`yWdjUU7Ry%9P0*GjdICYKw@S!C`S_n~UkwCmq&rmwPB%w*9HenaR|itNtBL15Z}0UV+A8y)I7$1D z)S-|o5eX?BcWa(9-DvjS&dx3|;llkT36;~Imo^=+I<2k|@cnyP>n-lJK7S5XKizf8 zZ_O8vC(5gyPm4KubHx*@gMJA;i~NsG7J3rF@xxyKrBlcDf((u`GnyyH<)72!UvW`w z>tQAKHFqb?Ixx-iXU^6+2OR}MEM@*{B{MS>lvawi?!I_8)VIw`A^gLca|Rny{fizk zo1Wdd^w!=zlP5k%E!!mAvAf_8ch+M?U5>jecmDi5H^a!__Nx5ziL2fQ{MmEgT$saH zBz!~3xdn;0lDyvwtWN5GY8O0XxlYYhry91;pW=j8PHdO6?zEa6b2PE}=&5h>UcD-? z(3a&bT|D{HrQg~b+voAVTXjVE(U%+>%x9Be!CDP0j66j|XR6A_Y(XK6+*H?^L5TMeA?8a$kSYbXA6vqRH#& z^`$o_Dl9&_yc;qLQe~|1p-KYJnu-@MyQc>###HJ8FmmAfqAS>M@z$SnALtLpN-=Z`9_Ef1wHcrGH5SlfDH;x`4er88vg3^Rm9 zRp#E@P#*f9kwV4p$dlf`Fm&r;A0YF%k;yWdr5 z!#dR|qUqHM-`B6+K6~ZDRd-didk$?|d2u_(hU7PUjQ1yTNGh=JbNSNraXssqt||AY zPp+_JV7riU^|kHq7wIed<5yG~&swFqI7-Aq>u>2!lYDbw3HeF-JQp$-hb&Ti!gFea z$nU307ne$2RKC>r;rja1(@zUtYx~;FW~E_%|5b(dd~=Pp!qc9-zp>APukhgh`LX-& z_}uu+BhykLefvPC=E-RfI$|@_-(2E9?!d74Y~R`X|GRFtG`-_jFQ~RH4f&kT?!S)n zQQWq9YlWqK4ldL96rSIIdg|@P^U~#H4J7f;m&>bHt*aQ$*O9$eLvTm7vIsk)zr{6chif~+p{LOzvNV& z&Eq=#Ve==&iR_>1{=Lq7R=858sPU2Q+w-bCH@Ci<)15g-Y{$pS^gLdluR3>2G7jBu z_1Yh^u7PO^cP(FR8j(zCyCvRP)#a>&lQvR}_U|8&>B!lgFqX=`r>DxbDn z)D(0l&ND*A+)n%Ir}w&wS5KGwC56qi(R{}6F1P*E%)oEi9mZyx*}gwNu;Nf!iCL4Q zc<_opJejJWm^W#x{rXJ3HhQMumQ6yb(d9dPc>*cTzcb#(uwLzm)rS%O5SuS`^(61FJ?uaq1f4?a|&zs%`x{B1AMCHhW&U0dGZ$&Y=PI&U5tnFGu-M^oVDS=Hc$wv*0Vt%g>y4j}|tSE5y zp-+SVGhu_v&hqQ?s{FTSXgIKbiwfq7e)=$Kf~U<=+0P5+Oh5Znlm??0ku}7jDUY2>H;yrk}a> zrT5RG@5{KjlTBrh{|ViF(O2QETJ~h+#LU|F%()&6k5nR_eY`v)_}(-uHQ$JuJ)Wl7#yD+&azRxf1d=B?jb z+ZL8Dztc_P;s5NH;qHqM`n&8E6WIUzWnAUr6;0B9C%;YI)xG-N#K84(U!HjjO!#bF zu*iomBUX(21jj$YWPO<^-D7TCA{8H>cs;heAF}iO+BxN|B9E4QSTe7%vAm2y(mt!r zaK`tAVX1cWzPcFR|8hCs^nEeYrs*%|Hs0<-m^pKjR|XFUgyqFItHCANAW1GOd_> zNBP$elYC5fX6&&N3R}z`z3A`|{izTLa_$X(aoTMip4Pi&DroqIcB)3NK5<8Ga+I%|`D;J)j;m(oj4 zyU8)UyyZTjT)QDMMxl`TqL9O18}!~R42)3tX#f9_l`I40N0cqJ&psq`72;h_f&v-r*x zEIM~)?dq8dwvWoKV?v%R+*f_sietjWn=hm8^e_pT7GHKbSZ=Xb%_Fxie(gWU{|3#I zT&trRwx4+2%)v5MQuV}@{eSmo+}3|A8+3~Ce}*Z?u9!ddS)2aFP1Ek2p_(RG+m?RK z_0XP%hR=$Zg5+KoZS!HT`aD7QmvGOg(w)%_9TOfeD2?3yM&QTA`#0AoFt2EuFuC*V zpN(rg-!S(&i)AXWe35&5|GK+%u?L^>_3J*%`~T%)w5l|CL{lNlbZ9 z@{e-+{b%0^AC-7qZ!Pc5mbQJ;WBa0mDXX{^x}v3i$!D!rzLDxGyG} zJHNNRa_f`Nv;V2z{BFxKtzlUre7<>ewB}akd-@Zu_3taa>y;FAxc>9?t1FBR%oc9r z*OoGPv?zF*X3g~s-gqn&D$vkQL`1^!h`tqs&H$4BVA-3rd)7loTimRudyE!?} zPe|T$B&-@e6O6j?ECh-X;8Z+hNB80ax6Xt^anhFU|VGl{1pk1{z1sKbL(N zapc6-#;wlrhodH4)Asa#@a>L7&c;^{HQt?m`eXk&JBMn{H+s)MJm2YA=zp`dn(NA| z=j#{lKKV7zVsSc??~B?F{>k5V-us~({a>X^V-n}Z>72bcj|6-Pkn?}EI-Y;w=Tu8h zrDumeyyB^veob`B-nT2(9Ps^l_4UoI8mA;%q~G-2KfmtwtiSP^_VFTz{s^&#xy;#Y zm#=z^nRokh$g{J>5RX_O1Fk9=-?ZSiU{}gnu-IFX>bSzzZM*XCM zmNJHeCL*_gy{WyvbK8Q92=-?wPdKLgYxmE2alnVmjQ92JnAOt@Qp+~I@-kd^zgp(f z``6K)%5u_@CuUoQ?QD2ev!UKuG(v9riN3D2?%yJ-w?Dcls$}wPSA-p7LSV`HrH6gb z{68V+Ipyrri>a*F0(|CtS@=rCby~0O``QJu-xwvr%dQ+TWiYR<-rJ^SB(?PA$t4x{ zguRNL^crKnRK8<2zb~`0s$tTb{apz~swX10IxL#>S4YW0ORZ`zzpG!vwxnWi+;k3$+_D&b9FKXmLLw$-Mf?tzho0 zT$d}nHW?gR?IyoH-u+#s>!QvmwJV`V!=^qr(aQ;)W4k8HaIs)m`Z%*Od$3 z<{sqxc8cFWXrhFG>9y&9CP)bGUjKjU{B9%jCC-zNKi}*2b=IN_yEgIi^~86)e!~-L zm$3Bmx3Jp7j4x98pL}2LdtUW~OaG#2;kE4xA80*uY}nH^fA5uPZ`aiOR@J{>vsV9i z)tiKbF1Lxy7J1LUcHKCh(5|^la>=VJUlT9AWBsg}cmIdofkNfePu;{Sj|uryChW=$ zRsEuAaeTrLmia;TI&NtjYFQ0DFH(i6;se3eZ9 z|1rAlStx8!t>Ex$rQP9W`|kGVf9rDO-@1t9*A{o9MHz{I+`SbiFZwI9qQTaqX65A1 zHWI~G%C9T;g*fDBwlr>gDLQ=>|DCu7>v<`vxqefnZ8+Qy?Xc>vy7cea|FidJ_Bfqb zs@BRA((*M|{N)@2`ICqL{@nIft4nb~5v#$L)j|m;%k-b~Tcxr7S5cIF)v@8y0rr~d z2YqJuZnF_nzg6eiFZ4*CxxpY_T-#nhtiknyIYUo;N8YbLMogs#ehKsNJb$z^aYvV> zYy(GY-=ui^v)4}iv{qaZ=&|UoY{la1euo2eCdD`VuB@H*?+1I58iUZygyeO*XYl-A zzpPvA+vPOXr0vY^zhx$}DU06=YGa)0bL9L{jwRhkln?#$Rj*z6rRuH=qta#0M<&N+ zTsqJ2W>WJKoebakUg`f1ifOMgf3o|T>`L``yZD`FLQa(guNF&X|KXDJmfxmx$BtXq z_#8HxT&Wg#zPeujl;!>N`6*Q^R-Ov9|5|FA5N@(aLZJ8QvD5W$Dw?k~Ykd3Hc&9dY zZOrQ3D;f?l7H)g0`k=>RYCDT?;QWVKf~r>*Z`qh>efB)x?h8+X*FWjMW>hKgi0Sgq zSE*;k)jQ5J#!9>iJGnZ~by@p?>7u$7r_=UM+J9H|P3|^Nh8Cs&R!>4-wzpgi7_kk0%RlJnY3bsC!-J z%X_?9;kaAz&S`)DGB|xb{@(I>^?}W+XJsuu^?Qy<%Tl$w`yNGdDW88FRa~$(UN$v! z|IuqbnvMt3mviPkIuU!*f71VTDpOv$Jl^UyuTFQ~^|t}e0SepxE6jcIJWA%c#fu3n z(;ht!P@XY!(~OEaFEba`|6NzPGt6l7Q!O>d1~Y+I~R>wmF3^Z%5sZ^SLRHTN1l zneeYv*KXtMPmHzEnpQsNA4ja0Y1{rmAWHGtlk?upD3)&A>%|icKGa+~@%N0>GkF2S zZ%;o?UvXvm{7(}%+I~Cf$x@O1HCyB8?wZIoKVDy)?{xm*fmfa<^Pkop<87y6Vy4ZS zdc#l1;(2Jm-Ny?x*?i^Kuq9{Cn{sKToPP54M?XH#KIS{yQeWU&aGBxv8MY#=A0I@O z$_MI&v}vC@X?Oom-R;B%smJfrE4j3NPp%57y#Ba`!6vun+m}Bj&!>hZz0dq@b@KTi zen*#Y3@cWxk~-u)P4eZjRJYt#y}LykpI+V8_IDCAm>|}Fsq661x4aJxGNX9{*jTi( zmneSNr#r*s?4u%m*By*YCrNeiDQzvN$=G}UUGmkphj)9&HDuo~KKoPs3kU1M{R&p^ zom}%jpJe`f@1mY_$?r=-?xLF(IF&6|SHAayXYVG4;=h~M-a4dLRUMR3YQ>e*bTfb1 z{FOezjQtO4Dwnec33hl-64}-#SHi5~wDotn=%My$r8!wI%eS*D@`Zijtgn!L%6vF) zSMfK$8{u!)do(%wao-brEZezSv|F@C&Gl#L#+E1h6&BbdDlnd6%Sc`3{QSyyv7ezcTc;@8%$urnZ+W}K zN-btKCgDFBvYzwYTuwZi`n>$|4CPy2PrGp)x)bOqc{<|QG^KZ{OL@;R_oqL&asGhd zC%)!=|7#s*{Mr-O8<99^*3bR!A6B!@JU`>%jq00o1K3}7os~^)XsN#+tnq?%`(@Lk z%3%k)in1HGJ(j!DBR zR@Ps;6s|YCmG#xEEWQ`D)!muFM#A}7+~e1xnnpGpMps^cmzuerbMpBMttpSr{gz4p zt~qP%qyw)wcF&ui|F8aXoNP?*9=j}&w)OlC1-ouL?sF1;ygz$(>i- z;;Dkw+J6P?c$UxnbnU|m%WF5v{|PFsiLR9Wamu4@BLDr5mwqq);Argav6AUV_xH(_ z@}|mtCQB}T|JKI#@7t5MD%T73IS*IQo3g;tL5!6%bVQ zH|3>V+-dIkJX_cOeUp)D?+w05Oz*ybzxF@z!O<^MXS5$+EI!IsypF-|VD4eYDc{VN zEL2M~`4ar{>!c~!k7vA5)J!-rE&t!AiwcX4ZCZ8TSex?lhiA?R&aw4~-`^`(`aA!h z-Hqg?qpl9y=IyWCCfzZ^oA;1oovC`~MlHt}cPZEV?A1NS*WdES^6)Ho3z;fDIqiT8J>OpO;h&#|aBG0yX`>hcbT_$e1& zR-12~Y8o*0&z<{1PxF;tZdn(@HtV?8v*O}+}h~uJf*0k35XSG>}0bK%zZV;#mHzJ`^(G`tzKaIMJy9>%*x z1{avu#5t^Hm&|ldyx@OdRs6)o?v@GvcM15jaQ(J%Q+B%QwyAJ^`J_t{VL{C|fA3I> z6$}3Nd+mnH-W??qUY10PPs*Mv{H|tC)4KakMu)gg?)vp3_t3lp(|+&azR0chXobt~ z2d137UVV`_P99(PF6vsw&O)B_FJHgfDLL<-9-W+JclhqF6Ne_eE?XdbDlFeyBm4gj z!A(itd}mu!_2O51r2YGq{We@`>Nc-iTlPtPJ~x4%^@hyLJ^a^J#J%YhEZMG7_xo+f z{`FTQB|5hrn`u((tm#s!@kEb%(u3@hqjUYAx7XEF$7=tt6IR@Mvw!&_?{6YC(-T*O zKe+9)TJTR4gOU{Ite{y(t71;a&Hk^aTj5oc_Bh70BD<;I@fJJl@2OvJsYmdY%r_2VGlc?@ zy8U0V1U!>D`0365)AvGl?XH;Mda~;7k$=CRZuqQnuIz}(mp9wa89&fwI$?0C=$=Z( zrVTHY*1g@qSNOa9>*>=6PfWcjdS%5?p6--+1~;4ibU$5}y70l?Zd1+g$<@_=*A-U2 z%yh{pU&Qh8nxx(-6G8u*^Ce=}r0(ZxSiZMALn)}{@48>RRT9!!R=d1?8)z`)>&a7b z$2O$oel6wKPSfl&=D3{pCv17~ra$^;?=R)kP|H}Ba(;)q$SL&)6S|7?dEU44@15U~ zvUJaHi<{SM_w4z6f^*HEgizO(cV0p7gmZXBzE%GE9CUx;;tpQo{xG2$r0Cmjtdb0_!8jT`MZ%~0Uwo2t2U z(t-X@+ZiGfE}cF%X`ZWV`xw~#NZvUV1aDzslrxh1#R$NnOUwMXE zW>8_q`g2=?R82i!mbSg$=i>CV-ga7`8f(Hbh3B)_SGoB9&-{3xedcL<2d^dn?)I&+ zTDErnw9aMsY$_*YYH;Ul-6UG+$-uH>dX&Kb%kKA2EMUx9IJZjDdh3VY%i2e-}% zC2LMr+L{SHZIjTOqwwpy)FF{Sm!7b1ZsC|PW!k2>`&uRCY7WE*{+60t?K?iyQY zMwHOGPM^ZR8W%G8-o;vq<*xl(k^1t@1n+CFX6df`y`ucd^s`-mGPr_%&ES>@7EmhC zsbSmsIQTOE42M%+{8H?$8J)ZOQNHc^MXwJ`2X33`pU>GW+TAl(bBmZ#`TL~cQ@q#Q zc!Zxv%~_xR-Qm+*iva${^qn77HaA{R=T3Jx|0nRvWxIJI@n5#`on^fF;?D8-M=u$V z9pQ4XR!rhgj^tgvsJ38^@%;ZK3T?F_t|G+~BHmi2|31p*vi81EwRPdGMGUJVR;_uU z?$e_%L5Af{-M?IkjT4nlY?I45wso)Gv>g$Dt}>}y-Wqtbxx?f2)AT2%2c{jKzsdCX z;^*gO_Dn20JW*!tobc6O%S^ZAD=c99k(8f5Nsae;v$N(e$N8!yXHqJ?46nu6_ln$@ zFP`1ylv?Pt;$`99ff8En` zI(PZKXZP}^SDTB=lpgx`+o$cB<#U+=o5Rm<8YJb&E~~w|N%)@qCEg$M`{Vz$sGm5u zuJA<0kIJ9X0TJ_ObcuA&Z+Ejl_b>gKdKkmj>(i(G{>uB(V@CC4&Mj+`xgWD0>HlE7 z#%jg8&58D#wdU+Od+qmYZ)x$sQvs|F`jQV_ZkDC~_Wky7)A=t3yO{+=`8{v92mSdQ zdHr*YB;T6?FQ3 ziMyYD|5fY$G=WX3R||8z9>0B^@z>q~4CVcinHIx8uh8KINeJ z10SM9(xTqmg~VPlUQ+e#&&%^+DGzHhJ9M0S+T{=NnP0atS1>6##U{wEJ`EMDw zUwPDXWpCVI-col{rLbzn+@HBKo*bxME&nvs@!B*Mi6YMEr#!yP=ImYh@N&@cNT<8U zIA+ZK;C*x1>c7s(_8Y4MT_>qOTFj~4e5mG#K99l8BL;H6B_oeu9}j2%Fcl! zKt-o6tZr8CmsG8aowxR@i+#&Kc6;RnkqRSj!9~+Igt^aJ*7177gxeF7ZhAFzIDI~N z$}aiEb54^xM>Yz)uxi-DWqc$0kb%*O-KhsNymj5(929;}DBOAV!TQJVe9R+v_{Duw zTdDKzb;jI`BPW~luR8q@iFn!gpYt2r&;Kt(79ZI2Y9G@H={LbFc58mxeKYyvC^}zk z<@B?>$tMKXzTKi+b7h%#E{B|meWP~;2cy*v_M(++eTh{y=uz-u1<+A&de|C~kv)g{ln z7`C;3$ZP*;z|WcagIzNz#LVBFg;nkB!w(jMT%jE?p|536@}HQ#*`E1O-5%xIf6nsS z336*x6mD_v5uUSY$;%YCz=oZlvK5RI%(s`Tv|Yb?Xs>)nPqrTmr_J-Pw~bCZ_fp&S$k>@&*V#ZS?Ike3+bgr^WPDi4Rl2 zKJGBVRA;ucd%yGcT$|-6Y?5_2GCX+A?zQ1%%TBHK-sfs|J-0WOH+KGq>KP@@He1v@h&udRcjsy5sht`6%DQtN zPM*Ex35O z|4QHB*((yR=E{_}nPG$Nud6Tm%``5HOlO~XyQ@Wderw?3OF9-6b;aSGoUQU)E`^+X zepnj_yqr;yxjJE{qeSK@4xklupIVW-nlEZ(o1=2q}`>cvNnE8`PL12lLBs6NS3|xa;Zt@ z+@y6eew{q)kE7C=-wm4&#=munw)xO+H>GRw(Uyy!qHY)730}jIb>!Q}2>zq(QH}nG zEM8oBSLs@DR^)@1=Ct_s74;Kl@J3lW9=xpmGIdekrn!vbYXT;eN-v6h+$ED|x_`ac zyU#xxLTwb%zjU;GTyDQveT~4j&LyEXSXUV&(X*dOZJfZL0W-gR5%Z_=bM!*=+qeG3iy(6J3^1 zueZmZm*!n(af30(Q`^0Q>E4qa$@5(&en<=U5J-41Cm~*9{pwil@F;7KXK!mmPMu!0 zy(46{V}bFv;{1Crnj22GWIg+N@k?lWpSIRqH|mviD5ZhdTae#_H+QXgA?E`70U3yWLz-IHbY>YS#%T`9%w zEVp^5K721<#xJ zL{{+2yubhciR|NP%qM5aDrjCk#N>SIb*_2DnM0O`f5e>ib9iIM+#~ksQvOHYGv;RR zK24T9J~OQ7!^W0`G9?+uneS8FC$en(maAho^_c3MOEm>G0!A_7PaU%RW(dr&IBa^Q zK|0Y*!MUO!d)D*J{mC~NIUbg{7pwnoT+JrRV0%zF`VGrxmxu=rd@<8}^8aNvol^>L zy*D@R^^>_tNv}nZhga2E?b25XQfpu@EqxXoaXvSR-TjcohT5Zls`9>mx)af{(1m}Z z+T~Na86^>!m(8U#)^&B39I)t1-j=Uk@42PtwN<3bA+`m}dX{{Bu&U{($ku}vm;Y7> z)`g0fsmlpvo!M4i!;)-r;yZ@zB6?#+r8MlT#9aR1m4)$Ve!s!Hj~sT_E&B{K6uBgHQ#$W)wW` z?AVmC#_dW-@|Cg$3qLK{^ULVxr_&CpiDJ{r_U-sSTi?qvbd7%ZHfIjOYMb|*$#bs6 ziO-%M-*(cJX}MH|L~K%HL+6JLEDe?wGFc(V%s9h3XWRH?#LNlbv@BOv!IJx^+Xo-( zSKBoUl=I$i+cI4vr87XL_sbmpI+rWIE7r$+biGt6E^#+sr6lOLdWu@Q+LqV)fh#+t z5@deYpRL;0|M}W3?<23mKJ+Br-DxsiS>)q;iLK#ETV)wIE;oLhc0x~Q{c^L3g_viBuK0mjeb4lH_@ZF*tZ@)jktDwLwZw9A+@qMn) zMP7}24!=DnzvkGfj}o!WyRIL7^>*gMk3Q$8M@5wgM5vU`I$)jmJmzdp&jU$$^&k7o zbRr~Qea@Y|aBAjLMh)SvmJOWj4K;84QzpoFJzvb2>?Furv3$#CXX(eEE-%PsNtG>W zD}T3ZMMusDCm$_c`(=lmGBRpCy6xHm_bC4Tbm7BvmyWCs{@crp&E~XEIkw{Hr|I49 zN(s?-y`uV-?mhkGwtjZWTlM#g_bT#P9FYIU!4+z9#kBVEJx>E~`Nu7`j>~t>bK7|7 zlhrkbqLq1b3NPfW&{%ReHr!}#_|>zSwx`dxoDgfvX4(2zOIv(r?Bt~vgil|{4U{;* z)qRz5-lfYt{069IJnomSeLQri@5Rh*6gJ#Z}}_V>|}Fx zDJ-?xo%El*X+kbz#9~c;?*er*W>%*R&Yjy2Rd%*AKg|thOv`@l^M3l1s!i^}jC+?m z?!FW2G$X3v*g~r-65*D59n!00_o&DJ`I*jtfd5kcnpY|%`CzFL| z>HO^nvt7!k7(QFZ{N#N8?sZej3f@WFUcF;N-mY!-C;NU*_`Y01RC}?OgNW9tHND2y zzCW+E{a41B&lTNips;Ti%dwdb63=1`FQzCsM!s%2zNxSG`{doqjT_gQUaEMrlfAyE zCv}@iBmEX2_E;L!?(Dm`}qC1n@BHp}ZIs9i%(AVyq)(6h|=iTr87nu1XIik@e z@%HC<^Ut@KCv|nXob+0_!#T{NaWVf&;f5{lb)gP7FZ2}Dv?i;2>|l9!OZ0aaH`6uu z_RVR}MJHGWJur8#j+sY!HD_I`Z8^cXkU@Ua)sh>+f2SMn zaJq9P;aKhGj77EA{(oP6P;XArpuRP!mYka5X876o;>S^LSRo{=6lBZ8k*vjf#b7skE;S-b2v0uwCP~llO=bj_? z`iN|mA18ucN@cws#AeqE?{Hfi+i>Lg(MLbp<-P zQ^Xt7RQ@@W>3<6lko89ycN1(9~>Y3>)EouFR+~JY0amqH*7aA zrm3b1|GCpR=h41dwI|PUY}+zPr{K<`%3~#;c-9`-^?}E5gK>TTqx{Op>V_T;%>H3L z#!qveb3d@xdb{gWmx9j9JHh1_xRMr1o^-Bq6*>>9O0 zK6xcA|5LR&6>hxia@9J;bLUDQTkYSgcC{71kAE-h6;gW3ztHl=;_reJ9+`ZoSz_38 zHrP|~)DEtRYkN0yZ1n#fE+XyUG{_-OIYWe zKWnzXQZ;bW-&FtjN~MFs7o#?*yP2A2x_qCyU#*|P?wV6a)X8`uA-h{u)p=XCo>=q0 zBx+jezRL#>Z?_aVX0qqaLgv=4i9Yvhcmm#JJ*_e|6v;U+!=h%Tu}*v9hDPUPh6&|& z6ayt=KV~kx_Bre8v7)qpT}K)YSMkVAbGc-yziVor=&f6~a)fMCZ%qF-;nq(-rX@T6 zm>kvGkYAkisyl!3zYCeV{SrYfr?+Z^pRMsc-zV~a{rqeB_Pvh$3z=lrimQoBbA7Pd zGGj+k^@r|@tbMl(s{XuQ`ITF8Q*p)eT?b-C?;e@6;YSh2nIzBLQixLEXjqN>+eR#t0_uhbG~l<^6yvX_SEhR%7y=a{H>#xVe{2!g3^!wsvwo9QmWllD@?SC>SYto&Q zV!CC=6X);OySDzlvfJckp3Lt8&&SOEFrlgEz}=-YT)yyVZ2lqh>*k*=k8kf^A|9A@ zW1gnVv!a)U`I_I~Y&2FZ`tK6v#m_v!V*lh_^S>;bUAdz3{Lzg(J1i6N+_Tu> z<)@-^n)h2496Fg&J@4J;YNvw}_I3PB4}A5v*z(DvssFTPm?m7w)m+-Fwk)>mtL6C< z9sx?>3pM%sW_Iq-n%CX)wm8I3{loi4?cAIRimsnz-MM_6PcN5Z zXcjDLDoM4{QOh`Im>Ljs_=>K{-tKEVBY8Hxc;&{=x6b0aN8Iw$A#>XsmPv2hu~x0b zB5u>Q$oB^ihH0~z3a{ojG+6fd&7#Y$`|f(^)g4=UZo>6#b4*)r?0>8EcME%5_kox< z_upkQPyXsse`EiI;_pHyylfXWb2H!kp}Q#c-oMGt$99{W%u-w}X!|QG^C64k%7#B* zud??99VtBSsIgT2{&(xhMKLO}SJ*NxvrgjZ>)ZTaJl5(-Yjg1qc?Jb7rF_Yr3co_0 z-iOh~m#*>OmguYwUxc$)x%lw-9b8h_)AqMY8&26i8?2vC=vPmN4>N@=}Q=XD_ z-(I^piKl;=%CafuuW|L`H*?PjsU3SWF{(_#t^eke((dIS+N~w^!xz8jIo*_Oh2 z6ZtmnowDMu*FUxVN3z>>n|Capbuaw%bnDFOQ!W$cSG+4uZk-bSe-794P2L+OOh|Ff zFtgYF`}OuM(^brG+1pJHasJVrxYR*at!v_oU)(JVJh&wd&DgbnT|M>G&+AXul*t#L zzH+@VYx7c8PrKenlgvY}{973@FU90(71y>I0(XUc)R#-htPknbi(home>3|5>DCFs zlP9(Ky-tB*{vdyWiVZL3m#W{hz3pduR zy!FSqdsD*kvmxs*%XaP*Zo29*F;i9k+&mW7kLhMN74~wSV83x=7|KvmF&3AwH+YjE@zu@0-B`tSUEP=Cwry#xi1=fE8@UqgPk}AQ^)edIw(2@xl3H+Lq2)!s&xh(0emk7; ziu%S_ecW<&V4bDy&H%@wsoHSvFC+wh2~6+H_uLJe)hf>@~*b>s2=m& z+=bKMB&|B-DH>#=qJI2TMqcYOq4>iWH5_+d&FeH3HmM2mz8{w^pA~(uadTf;MfN)V zCr9EpzOhZ{PG)fX_j9dJn%$Kpd(w|wkGUzx=rmdKkW1M+f8V@MjVEd|zi)5*v(C&Z z{^0#Em&YGiZ@%Br%ErINQetX&OG@a!SeH33-^AXZ8trl}$WL8WzCZR@V9>?SuE{$J zfAEK`<8GYpTw8nd*(g93{826$R{qOsss>&daX~sw~~LJK;v(^ERe0T9N%*T4#GLh*-RTlCW%_ z?3$MWQ=X(JeC3;I@u8ekf98`ND^JXv7Q%bi{FS& zT4b%Y%=*mSuTCB;Cw+Fvr`N`>{b%-sOZ1eugHQhd2KD*(ve-|bw3xLdT3+4AGw>qU zt8K@=KmGLfxbH;1h2oquUK>5+T06HrT|evYi}bRhTl^vmHts(k^tH_Ih!7*cq*wjC z*?AK+PIe2;nsqvYDe$%MMyZ3Lk1eL&icE@;XmK=_Ppa|$vVnP4oPxp$({!09y+u+> zd3MjxzwVkGWBPN?>RAPEjrOoVmj66W_mPQOPuI5a!rFzhlM}aJl5@5AC-vd3=**V0 zYOYgmt$mq#I(q82hVCg_((65QGFJws8UEfayOF;pZ+pg>17pK|KP0cpk> zz3YGbSHBWix$JsjqJFe;T-YRs2R6aZ97)lUXIEJ&UiX>vEtfHEhVVhjQ&~NI%o{BJ zH%2?V-}h6!5%gi2ZggX9-x0-2=56aYnw0i18^*EtJuLJ8J@Z=P)NAWG*^i2e9bmM+ z(RcS~;r4)Un-xx~HSH-WO+72qRu^^HxotXBFZ1a5P3Gr9Q2 z>3GpZvqbx+6PT_otvSc%e6jS!^N&8?FO^x?Do7i>`@vQHgYSZZ-rH#zifh^KSe*GB z&D)=LCeI*1S^M#%{pKO78`rhY-F{s0qQPVo!=WuiMp zo-Nbq$DWJ7Hp-kfuU`Gv@)cvpt4Zs5)PE+Kh8?NUJG<4_qvY5r*^zQ4A3*CLZD z_Hfp5d86$+XvVwu?_(;na4GUwmZY$)^r`c;^mCdulrB)YRZyxc#b?a;%H|4iw|esTRqqO^3To(mJykI zT@Fl4weNM%w~qPx^~Q(p$N%P*oH`tMQ*h&l_&>HPPD=y>m^Cs^n>Q@XS*7Eg%2}H_ zFZySf72C^1nV*0Arql}vC%xm&_>s}MKA?ADaO*ykDc7`@*?ou<)|40R{cU?^TafPE z2@ibcY?vP5n6&?pVO7fRQj`B&eD2#nu8>aE@RuhB&g>{QJPngDj;`^-E zAH*lM*qqw7u;r=6fBAQ^b|tGDFE|JXe%;S{Z)6m-O zzMEt16|Sz9^Z85Nf5a8fzEx})9kw=Z>+~w~ivp8`T~ghT>twh^t>-+-allr@@9blr zn(W=#nSz^nC2yYQd1t!KywM_%@9VeT-8q6QQV#8J+*G|a^V-a{v8E0g4y)Jv@?_R6 zmsaje{J&7qa&fte;+h2oSG+FumD$v^tyXEAvhL1&kzNxq=e81|m&d$>(#zj2-tn<; zL-3h(8O2WL-?AbDf_3CfAdfJwTM|)`@^j0MLAm^A8V-> zy>Zy?cSfB=Rat`Afp4W-cV|xxx;U*m#pP!DW1Y?v9kGn9E(?~&?()(QoHA)%e698G z?fKOVH+%o&ub6mu_Kw~i+Ch;8#@C;yH!~G5nC{$BaQ}xh--_##qg{m~B{ft^N~*V+ zzue3>W%J7GuRP5dK6<-Un#Ui`y}0=Q?1$-6VvotK8mbRd~RqIzj)ztk)ma1CJfF^vRwyFGK%!QS*|EVjrvKnX`$n z+Rv=Al7EHY?lX1svsn+SScn^BWOSQEsmxHkGkf8im2V_Cj9$N=Y#S+;z}W-e-Zv?8M9LlN6eH-~tvk z@8@-K+V|J7zPbPJbWhF$X+25Z89p7dR;gRIu5SF)nyTJXd$v94^t@wFD-X&)|8RQ6 zy?Kq^hO_@{`|?mSNOzIxS*{aWCcJ{mbM|M)tZTh>#w_P|^21P7{(PAb+b=H^R`or5 zpXh!qPhaivhJU-R?b$1B#J}7jS4Ld!|AWPIj{iGTp3u-`1n#X}B_%rS&%V%j?_j?$bz} zvt-qx+#A#Onk}28_LCv$dDh_?qnis-?)5YV99W^AVWOu{#~73N+@)f>%7tmQ`{u>; zSx82&-yab^k>_NY<=K=S9-(P-{&da~lH+_Nk{Rf-Xz8XauHTfhdU;&b&zwK^GSTbQ zYMuSZ_rB#kB3ZffeD2&$;%x`s>HKOx{9V%d#_KBqQatR_*5sTi`5QaQJ}Bw!0F; z4;fRUzi{kZcQoMZtZ5A99)FX#e(!SkU&7b4amJ4NyBdeI6+hd^KU>J=5K{ItF>raL z%QVKXhmz7wbyayjGGtjl<_(K)dEz8+@#nSVJG*PnZ~5NvqJwSHwA2ot9VhkLK1rN+ zjC-fOo6E7KN0`xD-ahBd>D!Girkfu7RV&LEtm{}*b8L<5iTTkz|I~`Eu!@|_u-$X7 zuR!*`;A0f#k(zhOX;2aE*3c+ z>ObE7ax(b1J0qb*sqvJTWBlnUwx_DE@@6J4I@c6x5^JIO@Pdj-@3O|@`HTwbCbPcE z@2yHL-_4R_c8%H9f7j|w%6HUw`@*;K_1n4>8UI|q?W9iQhgToJ6jgoGvj-B zq*f#UI!4{Z!Yj26>U_!xHdCg5sY%jvs|jq z1Ux(as9&&lY3fZojSY?$e-~Z2e!^zy=NpG!XT6-K7QmwNZ1+ZUovQa@#>(9GEWaL@ z%9O-DsE?d_uI78*drbk?Lf<2^#bds#4i0U7t0iFmcFB{k?6W*HpGzLSR`@ON{YIWG zMuw%A_wyD82K|(Jl>A%GEoaTWwIbqk6{96yXZ)BsdHWas$K8iA#HHQz=Wl;F^Hlk< zMwgB=F^k;AmA|I$ZIRy~5GuFvMyTi?A&be@VIQhLbFT6G{Nz2`JI~I|^J7E1r`bf! zNWA&cu3c8&@zYWk$E!Z;)UWEZwVkhBQkrHzwI`_PQ|1mpdLms0Y7m&74{zi2lKaF zIbFGN_f)ytMw$vDel7Rc2=K0qP|nCI+w!PexjkUD@(iw}KYyh@zO~hL)4@+1Y-{@8 z{k5oWyOA5IH?45;OxgT@OZG>(>#rAoa_eRa|I5dfCvRs7-ZuA5Tsn1Su}{oevA)-x z8WR`2X(@|abMN=X6U9b62^LDL4{cgH@okHz|KXF5#Jf*zb=y8KUHAFXb-ivD7n=J* z#e}x6{c`iy0VSz3d-s@|tW79e^?Xm@t=Cugm;ZaS`QYD_@7$Rm7k&EH89w8jbkna$ z+x2WGOgbk?Xuf`(^!=N`Z?4H|YWkO7%7;zAkg{d7NYZ`&RkLQYu1?nTnU*c{bI*;t z_6AEY`UfTIw*<8F=&vakW>;R{EqcrEOx=kYJRdD07s%`Gmo?e4NKo8tVcqpb`mD9C z#~uHLeX8r;yR+<-qneN4kKD|S-(N3eJ3!o_!f@BCIQaUnu#Rka0vHAJnKZMfPYRevO& zwUH&*O+2*Hv zP&(&8vG(F8kCY0hG+&z3H!1v}A;Vd&v%B7Jnz-6@-8bVez1Ao5++yN0;%|gcI-lWt zqy2xSq9%{UoL&`n-|Y9NZ=THjlNYx!(uYqkCzwy%M?{f9#^~PVeOXCTJOa!U1gL$_|JzGG zzFI39%XfLRT{MynHZcqMwQU*4!93j-?2A#~z5+wB*&kZ<|Kqg`T~`Q^mwHr-cEyRxc4yHRXyu=7Li39A%MUz&$k%YQL? z5c&IfSFgRw+-(8|34dRvsmKWRtL%{V-+Y*B`3IwAC;F$qn#p@ek;AHY`;V!?ANG4Z ze<08FY*~b$tMQI^2PHGyEVP^c{dUpGIy6gUz4xE)q7QxBTh1K%|LXi!746?s&ut04 zT+5^W|Du+f``v%a4;o&ZW=d38B!^7=dw%Wjx?^pw9MAe^&VRmoK}4&G>Pp^}E01Qc zyle2w*P>cnD}D97_XoIcs9q_{Iezmn7Z>AuBX?%L;$FQftEwi}rjy?%Klbwrd-^Td z(RYQqkHWLxBNBuz2~=6p~2Sf^E^wphx}b}@nUu3ZKvb2&c&yl{!+i>@IS4| ztP#!iS+}QNp2PU-vT@oGvnKOccI5<(z7qax6JHC@$-RGJ=}gfnUxPQQ_V}L;t9{Jz zx#u#=nY8(L6)h5U75|&hGi9>R`E>Y`|FdkruI&dOKXE&>$j;KXFzIMb_1hb!yMhir z)%o`;@xbMEFBxC>Bq$&BJDvN|@@3!REt4KsC;njhwL~w7PuX|j`=&X<=j$zFr5*)% zOMD7`pT9tnbJ34j;|oi+z0-?U^-8n8S9^5JzxcT}=PtRd) zZt|a1ywm!PyisOina?|JAoZo4a(l0rS+4H7 z(60|K@3+~;@=2%2Xx86u-MEW)qyIKkXRrG%^2{@UAv(0=XZDr?dAq<;lSZ>hqigeI z4@w`}b24Q++xsI1^@mRyO;nUgO-ZfHdHa0%v5CF=Yu{+qhF^E*%r4Wcnf3OtQQ{$Q z2A9O?8h>4DeZL)#dByC&TeG)7Z^4;$x>x?qnsJBySfAgzx9*Ko4f~17@b%b^)9iCnTmIg6Uy=UY zQ%CTPv9gSVxdhwxUkWR9)7MuBlwD$-%TgdV$B{9u!1?U79WuR(B93YCVSSG#qOB0D9&Z7`ux+W4<2hCaJVpC zqFMenSG(Sk{SrC%!*|Oq$+?@v*PlGQ?e{WilU3<8&&v${xd^RxIdJdTOy4b!-mkuS zsTG{HGp6s9nbUDX`iNbDq~_AkcgzlzE(^SQUvo>y|9mZ0)Ya)9PF^M>?}d)htMJbv!wG5NFU-vx&3KYESxzCYRZ{K48@|DaU& z#UEMsInMX{BK`RF3$f0F9~RmjelEPoB7foeFYn&$Q2Lv=+c<`M&L! zd*6P(ksT~@_wCl2yEA(ytUj=BQI6bCXXPLFH~8B)*fn#US6(xJc4v;hlB?I6(&v9_ z+IC-xU_5cd-&5yx@!5`o>kA^MI&AuVm4h{fTP;gm=Ch^!|MqUfrHB8`TKxWgPp+E7 zRyUdAcn-ze!K-hTeJS7iu-1J2+dYMWlV0hWt;+p2U389P+7>I-H_1EA=bI^9SQVtc z?F*L@yI?8r1aUjRfI^q*Y=x;4I~<<`=P%Z~88V+UtGapLtJ%jcnQULZZ}M)I_#XSj zHE~YP6Am3(eqixFHJ5K3rc)9gI;DU8ms(!UA{m>~Ix+G4U9-cie6Qs1F73~4o0hzV zMMmd$cKvQ?7td{1@AcnT`L#-Cv(ZcCH+j)Fe3Tit^0!|K@N3gJDRtehQ{=_WMS=p8 zr^oinIZxlt9rjvlcUz2qm=^cDvN>Km?`$m&oVv&BAglQ6V!jC?dnWYA6iyV~&T+9% zr9gt?FgxFe+O4kzWPh4UC49J1tk|(=-@#++H{Z6{KGA29mfMBSlJAAPqz-S@b3E() zduiy?f-v!TAtT$T29IBCTxOmy@y(g6)agkr{^7~HGem?vtjbJ}32V>fpT9P=@63lp z&xu{T_vNk-vN-+Z2-n-EHG8*tPDu7Wx^CiJiRqsjPx!w%v#m2!yE#VQLBDZF6kpgv z*_~oLr1MmazSxEFD5R(!IKXY=Hu=P>=)(-VbJRRft&Fe}?)va6_d2WOL8CtlnzGmI zZoatB=Bro6gNIs?`_Jwx`DMZR_VSDTw-3G+bB8qxJyD+Kn~}ZX275z@Pi)|apQSa) zX#!KF&UvWpSr_*Hl)^E|j!i_t&Ts}9GIWzt`ufna{ zj%Ux$RBJ2Udc68v(T^{Wu8T0-H)GVDJd}!ZW)*ojK9<i!>0AI{ir z=pg9XrC_JM|M?f0XG?wx-}tQGZ)VBR^(|~uQ11JeXSdGiQM%)@lCRPwG`$oS0WpGkt|rn&6_l zn>lA)Ug{;#?&DL<(tR%?RG8yTXP5Xw2gg9ktCKTSO4kN@ zxop+vWy!n#VyjqWQcIO_g^g|Rx0%IjKh3_@ov)>o)?fHnukj7zWVH&NKfG?Tfg2ZA!O;)vuD)U00QPO??8x+QjXpUI^P>e382R`t3k{@#OoL zHuUXTKJ%Kw#H~!19}2H{bZNe48{e%LHyw1(e@?oPQ(v|=a>g6|l`XMHitTPG&*MI9 z(!~$b=YilAFh=kt%JMo}wazPZUW<_ky9XsRO&n^lY`zBk)t!rZJG5?@*@vy$C z_VFmOnkSD;<=jp6uH|nRVyU!@oX@VD zs8%xNo%>P88D^V>t*SqV)<3yj=2qgFx|jXWCMG-em3A$e0_|=#%gP_A-{3V1*&y@2 z-|G5n?nRPoWL4ihURPWws%r<}tbhJqR*<~A zK-1TaaiZsfhreoNQe>~S%*J^Zmx@5;Mr8a_AHru z=*sgqg+D6Y_hkH>@qj5&GGNFGcy4muhRQ%UWV}@U1cT- z9>JTH5*BfrS%mQ4Xyi!mZvUT>z|btj&mUNssr0rn_Dbmy7GBnWQ;qIUP08nZy`hQI z;C)4wB6;=U> z_wr`JVVm4C`P)sk4|%VgsJ}<{jiC| z`_Ary*lu~z<{Yot9AXB^iw~|jjy&e{9GJ)xzUc086Ll#(FjXitQp6Oluw$wJqdlmn;#pIpuJz;8ftfl10AJ;F-b};|3J{j?G_0)Af z-fcC>d*(-<3(qw8mt9>bD5csyBU!^a{;Wyc`#a)ZF^?@gQz|pw>%Y4tx<23}cXxc) z^F!4iBtHwkyx-DiRno4QtU6KrU`TEJJ3H%^1X0gCkAth;zPsNrwcEukH0tr$@9#U0 zNq^M-*`fLL`}*B|H!PMm_np3RvitBp!8Ef~!YghqUZ*SSlhyvx_(_KCHQ{Gr|2GKV zI4mLI@-~tuymUd-(ND?s!b*;t-mhG-!cB3v<@?5C>TjOZ@kj(+YLseB5!xolyTe&+ zOGn|;DF29a6>D?;b6&9H=k@e{yWBzO1>+>|e~Uzp8Rv6yehYbOwZ!*_yW~Ni*6>xm zUvwv=nC`4AoLQ9MGR+{O_Z{2zV*bOXJiisU|2@57fkI_MZS8usjrVeFLq8VoQQRit z?ys=1l|_$zXS9dNCUvh{k~^}(oc9G-+@Dl+{rH1}YHGL3gs*9~M_kyIYS-Ppd+AoA z^n3pmP8qLQQepBouSfG0ztXQ|40ZPo9dc)oS(1|ZDn{~xLUzQ#sgu^!q-Qzgn@8JP zx{BP1O-z`-JZ{ROrc{1cj@63~M<+OHZgn{R<-OAhKDN(h@eK9aihFYJUp4Fv_%33Z zt$uIEs?>nkqyPn%XFmU4oqSUFI>u$@!zsRrp~ux;C(lb>p!fUMuDw0Q%bZ$85Bz&& zmb!IY-7^vHyyGXgv-_MtjF89=et> zclL2Iy^(ZzcsyxcE8qD^xCoE*XGzYCa>3@{>v=f*wD)5 zJNb;ay+PR16&ng}c5bm0>Sc3Q7Zxr(bpQ5k`x`$)v!Z#Ko~q@(=jL@>Ek8jaJbuTF z=0FGK2RZAu-Fls}Z_Oz#nFKYztsAczCJ7jqJv(=HLw`Ym(~B#@Wg_?Mj#SL zL1f*FkEM3JXRa29IC-vo7q#@xQwyOdK`-^chilp2jsMF3$JmO)X6Mds%ccJsPaORo z61(=Or|s7j2j<^AT|R5^m(S+6ZnZp3Hf?)ytuI0@#sBv4-g!3L_xW6r2*|i`p(;u3 z>)pAE!b`T?FN?8eoNz1K|7=|s`-X=f7BVC**c^9d$=f+{cDstJ8~3euT^XIf#XGvS zq~g(sO;XCA`!~p6=$v`g{JLA%ku^sWyIu)?_Lh!(*TfgC=vZ!hFMj*oq|eVQ7@t(S z3S`|&SiN}eG4|Cd_R~C<1a6<-wr1XqY3mmJPTd)_%jB}xET6B7mdr%pB0$|6yiu z^6~`@`2txM_FELzJUrjEq^shZ1><$o?=$NUM0}WMER-hmVW(6-mn`qi_{!IZzATM= z*|++C_%^OHyiPqgY^Ob__|s^hzEAq%-AoIqM5ixY8kteHdpFwL(H3cOIkqN)tIy!v zqA7pc)0k4$KJ46J^fxPWQo*+iYzr>zIA(j{o>0=Hkf+a8wo_WVU(Q`M@wIE##D~W1Cz$x(N!O;&xSY<{oTDNW`aP}KX%05_>w(;gXiAHT~fhrQ5~WT_dD)eN=pl$ult@4vU zei9KmUiR$7y9LchJ=)n+eAeyDNEHj3@rb|EVs630*SRA0;^Mt4_FR4WS;NERq6+&( zU9+&glWsRY&^;df-qY{a)o-c()deO>-z#Q5a}1gMCuKhCjAatjPEP6xJSEUqTvqaj zO)KcflDOueD{rK*VoIp^5<`hU8A{i+O(d(^>K0uUuGxFnDXv{ zcKw1{8_{SUW%c=?*RFPWET18%f9h9EjEP6S=7g2q>U`36sToZ_JlK5w(|)+ zQHV=X%u)Ffq4-Lm-F`)FkoNq8XH`;W{gAz}^!@y4diK3G(@yMD-1aQSF1K1xKT(6#60U)9>MS}{-AOU7!>x{jQt8-l$&br~z)&-~BlYTYzx zmj2l{Uu&;CW7+O&X_~3Y?rP&)Bci@%YpJ~D^q^*kMMaC}nk&6M{O@i@ijCL$JgqC+ za-UdMN$mXjk9* z2kM%ePDHY8Uwytm;c0!tftA`u@-n?fc%sDA8Bl$xV&nC9*&DCQKj@mm5o2%c zf3CH;CSBl>fwQdre9@JRW)=qLEe{Imet!2~>z6y*$74q47Hx1gU;FB$Nk#|L`@E#& z*}@OKD|bEKDt7-PxAV(Al?R06qxpGcTNX9Qy_cyoH2At;t>wil&98l?FS@tN-Q?zh zH0cuo(+}P_n7ql5y|Vgrl$_+vbdkGF_m9;qxc8{G^vsVZZ&VKyY@G68@~4!9l!No{ zKl`FI=SrZEvjWSq<{*caQgvbvFO;vi?vQwEw)v@ogUkOKd}FC|`KT1r^N2-kXR(rA zdhDD}OCK$Ns(v6nEbgA#bnYL#Yb>|03ZHf0n<;;biMQ~l!n4AS6_2?LgO;{Cx83EE z(k|0s;j%xnO!8#t#NtPNt|oT-`&+dizmosJJ^AX~wTq9woR|6R74uBJIwg1cKM#NU zs>OA1KHD9%cm3}lX56nWPM&?}9ey^mYe!_;!ISnT=frruM0KwJX7T!6(=gzf2LC&RGp=!Z@J5DwS8ssS&hW?!VV$jrVtzgJDRvYey4>$zd(@%-V04@`@5@E5S2j3>++JNMcDZ!%LPll7oUH6)ou^q_xQmq{tdCYJ z3H`h6c*HNqce9n2f|A|)U*r~@ zd}$W_Sd{&~^pmvCc|vYWV@@8qTqN|TcFI1}bLzFfR`f`IjVUvInwb>AKHtK=xQS_& zf`+NM_nmJI#iCn#*7Ee^)|ua*$Ulwy1-q%l+YTWIxr&VNKsFY!f^!X*mu}|WKH=Hq zZOzx1za)Quw5!X<=dQ!6h7Drrn?GIS<`!T*ub21xsvYyAQ(-55-pY7oyLm3>B##D; zMPh%gl}>UxHXjM7In4Ib`;vgG^Qos-Ep}wNNi>$1`LDTl`r*|#-G>y<3U@7hBeRzC zYOBibb&Mys&*{JLT-$Tk#mt3MJF4z0t4a7hn&5oTanZYP4g9AHZeLT&X!@LV{i{`esrmenQey6hQkKF7%^mAEQ zZQ+*giGrR*Z0)T@F>l_zb&Y7g!L_0wVwQN!>}`J^a52dV99k9HEFk-_(Rg?CpU7`F z8`mq9?or>dbwYTWzv_!JE{!=lYI3i(Bzt=XI=CMSS-$rQgX%rAfIhzngGBRn+h=B| znU)qLeepl_`g5B?N6W7sfiF3oCO3M;=Qis$h=@(TG36l_-&)~!c#mvA)pNbI*(Koa-0DE_(U$=`#uWw|1DG zo3JR@UhT?*xbKHqgju|Jh5JKp6C`f67jGW-xhMx@709Z%6Y|4rJyhzFODfGIME*!4H?sZ%-OF50#FA={5Fzj!@tS~L2r?K*Y)le^zVM|0nD5If5` z(ej4*L*F;|Dwl6kn%-OVZrQE^)xg@yoyRS-j&A%O{=~9l(#!DkkC``UZMuK?#mU9) z3yl)jtxYxy{364cx#Hlg;#YMpPmZx)53-mvt#X#VZ(!KZ$v>+Y^U#mthzvB`7(nMBtU48E=G7Y@`+d+@X{=vhOppr`Gk$J1|~6uR?iJ*U~_ zTLy_+p4c^?zpC*)NTs=HalzXO^72FhkxsJ;sApf@W2?Irsxl-Cw7aF%N zNf%-8TCy=U@{699#tq3hfrS<7*3OwPZmn6vmGwI5g`jFpcmMhFsmCX^y8aSR-lCkL z%KfIyvB@5Ya7*6ed%v`)|<^T2v7p{75314gFSHU`2c+<>D z!smMZHqQMnIN|6XrcXKl-MiL4xjbWf>@3YCcQhi3(pRh#ZPY#ca+Shw+56^`?*3TC zvY}|YNZbmx%q6T*ufIG!*^=<;=IvLZ2OQcXmK!u)+Hc(Z%HGGfBH`o8D^YQa0$1cQ z^G{*hq}luBXoKiQ8z(Ufqy3ykf7*Qlts|9`WhWacTPe-{XKLG`cl_ojt4ZHFKFho; zu$|Jh=ildFzuK1^Oh_-fvBx-Re%z%iP0JFBtb~-To|*N?J-UAAze`!a|=#%;x)`s|mt8HLpa2_AX)uxRO{%O{;4PyCalHBEI@)Q|r9 z6Kfck9Z{Tnr+P_Kwzu+hhMx)_)9=nU$XQXwae&WbUW!fJ-_t4c_TCb6kl~-hFnj%P z)dPBgzpaIM-sIc8a9nm~$vHVLcGuG}-~DgIe_1%Q_sG=vesw*^(0Q(PZJVx5Xg|`q z1@a;Q$QIuz1z}d2Wo%8s4Qvb;Q zS*w}vEsc+GqW^I-&CdA zdhvLjlfb(d0au(D|0SiFY;unkn0{fko7mw!Ry!T^*^QPfGXDO~E!kN8=bmF`(DbM& zeQvSQV$LgsPq$n%ck=Gt_aRwC@iCWXsr9L(nTq*`M6B!W9@^*JsAHINC|0bz#=W$6 zS4O(?Eyb4{oduYu#%QJmGNU`~HWo zdY$f{@%pxI&z#M_>mI+?eEWgZx_P>g%zV|0)(S>ur{}u(&(e4oGwsl;yo&YDFZsH9 zMP)H=Id?Mgtn_pFtczS*1>9TW6|uGQVw=RMCjeO5BVJm{~b{*yl^ zc@IXU%#JF#Q5aaGaYgCg?nly53X@i?xN-kP)&C1gJHI%)@xGlI*ne&IV=<|JdT)N- zV4N%+GVz+@^t3#YK9Dk8@qT~%R2Amd^y!=vK(ud{NB2_)bQ4e zAMS@luNia%1WWzh!Zlg{w--ZGHN)bKZ53^Q?>vsIY&AUk_~7e{#vYUI)Va+0{&DKZ zrV2hIp_5-FE8_Ls7PDcIsHLv{cdbZ>_0lX=qZ+}l=>-&A{ zb^eiS7x$%FM8;l{7qY1cm>BqR;(T!~UhY(}n)N39UdoxdkN3;zt804h6mb%`;!_RfIv&VwqMBuhrfc zCqH4oW~g+FeNT{;MPizzrlCx2MXbh^rRHz7&V05pKKw6n$(;FtS?`3*c3#;>WO2ne`e)*GQXX+EWlFzBUondmEH)~6=yYu6QmH?;Y z=^sKqZfX!(Vk*0R^7qen*G~WLu#Q;n6Qs5J{Hur?nY_)+Z)$%?F_rEld;&Zc6tN)|L6)bNAEfKTO%VhlAU{861Bq zv-rvNv`a6TCo=4xb*<#g36B+xZ+Fho_t<~eEt+G3z(?+Y_8+G^xZbbamG!mmBS(kM z2}Yj@+du7$*?PL@E2Ga%vBQ-oQoRpM6NtYW*x?*^{ZUAMzqxx%;b#|fB0B>CZ@lfy){3V6n$4`Gn`kY`uG;d*R2Bg z+fO#MYq(0C3Ry3^I_SA@`uRS=dfhPL(m-MFL)lM5CH^=cP~6#j;%rW%eC?Uz`&^Ql~0c6jP+8_et&slkcr-$0Ux-Trv5S8>iHR zx!3c052|Quf3UGET=tuIx3@%nWx^SH11ys|;20+^cqxA@l9G>sQ|; zc}KTP?BJO2o=g7NT-Sr!E1tYv5_G*k`PpiRU_FV$zmMNdxFK_N(Tck+Th-k&52-6j z@CW>i>fbr_37Ze!Ps!O245uw`*p+uPbw!x0GJ=oVIt4P~)x`=Ke>W8r+>G??(I{BiUHC}%?lsy&`@GKX-u*kF2ixaQXOT&}wy;_%RoG%~uVSalqxc^z zR#YCFQH53dKoiL+}+OD<@+&jM$K`9bJw4|oBUwiiVo+c zJ16)Tg#T0%nWLKfBmMWg4`&5;i%qC3-7|x|d>X$ev)Afv_b1eTbSheqY4hpGgJ~)Y z40{+W>JKNGy8BIE4VqrJpO~J1-E%|E*2u|e5AQ>bIDIX7CasC* zZ_78t)~Qb3X1}QV*7KCr9cnY`8+@iRSo z=h4Dw*GhFJ@x_Lvffh!huXQ=*u%G*V&wf$u`z~W|ky#8|O1fV+CR!@2oUHdtyz1rW zJYlh%$^ai3mI0F%Qnbn)LNFc=f!z7TE#gzPEHg#FIBr+jHj37i$!Aejgxl0iqe9yOV*bDpJ%y|X-i7f zy#3XpDf6FnGf5QNua)(&FJ4~zxjIVlxcVc%2HqkiLJ<~RzpR@^DWzN-ul_P^*(#mt@l8Te_xJx*(TKqJA(6Y6+Kq>Kd(3*M2j*CpWcSeLYWpC#;57B*syId9+^(9SR z;WX{Re1Z1mZHY0{HYd+9-WXicps^>c`!(al#rKrFwtOwrIjHmF=cWhcef0%>f^W*7 z&vvbJWjqkhY4JDf@yf25z3mtJS2G&#mE)gUn7LKG{nJ!cm0o6(q#vK>3e0+WyvMO9 zS>*t~_|fuIp2X?%e(-NSp)hZ;=fn;(!yW9^4VSiLih4gQ(2M*ytKFfThe6-)OONgKAf8CZL&39d^zGr0ckarq zyK`ds-aA}d?n`Cy=rAhAF{@cb-*!r#WO<0WOfS*&nf5U$p85jm?DNYfy*qYKVYbLc z%gs*(x0i4RRwPV578g+FJ7H}DhZl#VLfyKEm%FTj?kHV2U14kM({b4LfY_$4?&i)6 zvB_Ua9Xy!l7s`=$HKjn3~%RWw?i>Xvb}QQ`;J1U8N>bIwnivG=R|g4^2yM9c&Z z%ueKN=;TwEkVwwwx|gzu(>W+j_@B{ScJ)hJ*56vAv(%`rOwsbXW$#MumFJA6wOswA z@7%p-?SJ2#xy6c|<~(MNZ#BK0?#p&}ceb(IU-e_kz6W+s`)iwA>y1tAZyQFnWtYq9 z2Cr(ak@45q&_9j&OX&-TGrO<7Pzic>@$sZLpC#6%Zh0I&Pfd^iY!(~WvJC}%%u{ws zv8RNVnWx=c*3D*dLPscm@zZl=zh1B8z0>k-`=Z1-yVE<&kpsW$$oxx41(CCA&p zji)cTx;@Zkt@w1yi7&QjX-U3+&AsWobi@If9R-j7+}WJIe?$GPkeLe}aNnQ5-NJeL zJ`U|#w|TlReLt#Sxga`Gb5dvir-PMY?_>(hzZ_*xW@LY|)J0*p-^axnM}p)1qLnN> zY}D;5w(ZdpGP)n(w}JPn!0DUa`*$zCIQ^;41=dxkOxI}!W^PcK=dQHUuG#DNu9Xcx zL>X-M+vnx1{oi{(>Za0{g}R%TbgdWj`^Bs`M^3wB_P#IQSnZbVHQu(O$c(3W&gqo> zr`+R15?Uer&bRoG* z*ClF$#HOk$ZMliFZ#gq_zux_^-gkp^N4b*Hzf;jW#a1j7FJdrL*|oUhGlNNu+Px;Z zZ@ZsXp0sdzd`6`Euotd`0%F-#Rg!p+EbwI}bc+OWS$j?%gf^r=kQl&Y$<{L#imdRp*0(_DA2J zT>o}yx7?&mIoU5Pa=YGmaK4#!f|cFr!qUf&?f9 z%x>pF|MooX55Jcm*J6%e^tR>Ywt2Qf6*e!=@%VD|a0qZGN5;JImdnXeSodK4wYyif z46e6z>{9(={Qm5|_uie;Uw&{uQYe$w#C>1_<3bTl4(;EYb}(qSZe{P@`HuNq@|0zb z-+$X)j9R(b=ah@t+a+p2EGBL>C862Z1i6&CePvQ)1V)=Ca>aVvFHqsXkxLh&b z_weiOl%*|mymPvP3!@Z;dZo-(?y_*c|HgjLyoVg`)-XgIJ~aQ-)1ymjPKBoJ_W6D* z=CVeJ;}Y*B=4QY0rl?JxvUQSTfZXrn8}m2qylnRFb@Sna;#}1Jl1VoSt2^Yzfs)d zc+TSAw?sP_nj92fRBR1z};F@3?RzE@YXa3Qui_`Z068%=PK6m+Z!(E5JF*%%n zc_izIm`lSWuj`LJSW|wfPwH0=O{rCtY!{rDzAto&*qK{WftRkXciYn~Ghti9v~N}i zrhW+4Xr9|{siJ(uGv=Dqwuya>K0Oid=IybbY4U!y>)Z8{&Kp`;E}eegZ0f7FiR|2S z+5ZU$<+&OzUAwpCw;xx5cboX37y726W>YH9-w@56%2V+!`rirr|L$TYH+Ma#P%G;z zz3_5k#<^uqXQtgKj&wV4rvLX!rmhsRg&Pm&%kBTPE@OMB&%ENNv4s-HROmuF=dwDA1b#>GYLUw!0sc_s^9*wB(LwR>5!C;%di$J$nW&n?)^+JSTu$(J7%f&#Kme!e4mc*eaDq#(im_hrF!qwO?7UEW<`b{isq?W z&e)`>aLadPc;#bF!6Y*`omXvZpD}$*72)cQj;*Q@jl2Fy=4$NJujLmGmD&j%OP*qt zut9Fl?saUHEeFz+W+%z&dp-;;KC(1o*2UeuM+&lTORutW{OXcEH*aBHQmDt;z125grt3%ZOfnSt*YGH9O=xq6sN9_kx#tc_ zZ{WWhXnAAr95c;%x3}g_^61^X++{;%XQp~nyB4?6lkRrRurCyF*I>Lx#rBh>87rmrY%@;@ueaA>L>=Yg5A@FJB59d4_$b6s$Ba< zU8d1hkDG7e8%$O$c|P@3{PO$WzxAKKPMGmfusdg^;jT!pb2)4gyyce*_>vA;OrCnL zP3NVA+}4WY91rF<7`1xqec5xkOz`?qzvV@N3%@*A!MQN*pg{dovF*1Hgf%jCW)`pH ziu--WL_KVSW$PsMLvE7nV&mR>UKezwzQh2uL!J`klo2m;0%X~ezvGt#J*IyC%K(Xm&#NJa|-)@=h zGV>|-quyEi2Pez^UoIo!y7P1I)0fhY>O4KX%~gxe1t0T1{e1t&*{-51%|3K$+}^I6 zvrY6!2ge89ThFG>O<)phU6}Rk$=2^z&UY2VY+cRW+MX7q&4Xpxt%TkIkE#%n|1y-WR7zYk5! zc(kNtuAuDvaLp{`$KHKU3u_;;WL^5B{D0??%@Rza)ywZ?nWc$$-PYi`!)hXu^vLP% zo_W%_zGC6O4*%%c_g(hYmiretr53YpEqAkt3ERmvOEEOz(3#wm+R?{DCUnaLNvUl3 zX8P-~>Bji-^U}QrtPegp{)j4E!?}`Ocm~VYseSj-9W%S`FPQtN=hpjwPQNPuO}IQi z<#x}m)n?OmMG}NLlO05FSIxCInfcx&Y=idM@BP2U+YJ79$7qzqoPM*$$2jMO&GK0_ z*EIZ{rhL@bS3h^^%trmkTy@)m4L9jkUp;-N;S6IzaIuezMrtiHhlxN#yIxXK#oD;< zC)sUWH#`ash{%62(TPiIYr|uynr^S_!E-Ku0*6ujV+&h56FE=)<; zE5b6ThQ9e|_mErTjot3#|2wDumHWhfB(KT5acxNWMt3&<&}TxIH$TWR!z7uWmAs5fd#|TiF3I3z5hBd#-D|U^+ba3`b^i7 zE%sf^Szfir*so0!6?S}_AagMP%-gTG*DaS#`Q;+`iSg)FqaX5r%2cczW1JS;dtJn( zk)xuWe{M#6UX1kq*b60r8r-v_`lqtEG0A$H?TLsjNxiSJ^H#~l=aI{9&lAa?rxvDv z^xmSG{C(2|{jTgwYk0kO$8ydyCaVNzomndP@XQtU>uVJz^a^zty3Ko-yIx~rV{QI{ z>a?!~;d>^!*gOdKet3iHmc2*o1{ncWFXx%JpC5>=(h~kMA%iztX5yDb#`r+{+dB{N%%`n|_a1tmQgtVRicI`Z+ziFXk+YTk%nX|BJP@fUqL_<8u>t zSZfPdS8QFJ5MWUhv$_Ak3oGp}ON&Y>W8eO}G374fpV_Arba-=;|8#Vi_)Js|(>zkx zu=Rk}y&X)4zFl3%z4YAInj_zwzNtQNDUv%WuNhEk`DEvTR-Poce_M=#t7G483YccU z>cgt3=5wd7ukKULVN_+mwLSFEtbc`bM2}2M*)fs-g~q34|8KqD%(wGM*Xbw8-1=a(I*C(hAuogBv2Rq1~!%xeUKnY}jD5J7v3AP?(B(mubo-GUu1vjdM8#Xr(Y;6;Nxr0c9)0$zPx_jB;i}_Ipf}gQ=MNAXN4_p zYtB$vqR=J%d)KY4ud{diIDVS-vAxCUuZX*Y>#^%+OA5DsRx%6xZFExbWcG_)TYo>j z7IWgpOo!yp?iR}XMDc0sjfANaocle> z9sesjC4QZHgpcu?r?=CsPbU|3e6{M$TauFybac_Hk8BQqBV0Jbwt5{p?fGOMZ=l?o zYt!|%-hckfLGCwm^5Z8vH)JxWZM%BpPpFMt_uMT4AN0gZ?GBe$x}N&ly2O5^n9;(N zd#m{uOsQ~qn;5z#yrs@THC1MZ$B%otQfZS6^%op>n-DlFXsiAjm5VEX-CG>twYuPK z)bEexd^NM&KZGB?Z2Ro|G>xT-jt{mZZc=~48W(7EG8M^3`Xud%VST>opR&`jQVW4k{43q}#hM-P`QC!A4e>cb`=iJU**=Z9SB5iEFNf z{OjusOo888%c8cZxXv@-t$fL?R{P_!QWpMqG?s4vs%*7LOodVAeYjGI zs`8@xCsqbozsq+|@Orvzf##;U!eNs&xWYV6y>ZUavF@l*@mi&{R)NWxaktW(2E!`d z>Di_aEu~JL*Ie5td|x5?UrW$bx31Ok3zs>*a{Xf%SN+2DCRRf^3b{$2;pk=k8Zq#=tI+n7r2Nua}pQl7r_Ao#=R@1}*-xhlA|j zKMcL_Kl?0qZFPvS!()azqgRLeOqwKb zcr&q{pK;GcnWH{)t%1+7$g(P6~5 z?)lcduc3)*-C{Zm-K5toSoB`6lp*EDJ~I`UoC^YmPp6j5=y_9l_sG_7_qQ4Qi2gYh z_V;Sf_W7$POPoG=qhed1l>eIS%FgrOH(Y&f>%yPjzTc<%)b{!{bs{Uf3_CC1UGt6e z*0&}@%Wo6n?|<^GyzUrTko=-H#Q)IJ-zN=vl`}aFf9#kk<_q%FO`!cQM zoTFIt?6d!2nS(|F0z7yBotvz5XcbTFzU$v@Wwx813hO?0y7$DE%5FYw;V`}pU-opo zwpDp!+;oBQqfy*@FMV&qV}xA`}KLn7wEs#DUN&nOgoD! z@aQVd54X9Td=!{FY*K9EtM4bVm<5CwTa=uyu9#XO9HT288Q6S_HJBxFlDA{KRb_tO zhczNO$@NF)&e-NBay?CQlhmQOoZG$g8rzCKN}e;)+HPC)eSN^L%hQi@RB`!nrtgW& zm--U21J{JGMmGg;-1 z@b(k_yHBq$FgEtwWbI~s_h~-Q$Ct+iraUchzir4oO_I-UhF0JFwE81&-L`#b2(p}V zr8RtBeMA4HtE$~g?5*z@XY;T6B9-X6_sVpyP1{!A@KcafNYyxU=cpH-7u(*>q$7q~ zJryE<^UTm*_EXGr+H8+aPG;(}0>oClbUNhn(Q&_+d-=ycq0Y~|J?wk-Ti$m%R3+$H zmd4h@*7>2&T6>x^^MlTwo}=y?<^(maDEh>+^l$0bI#Exvy5RJ`rBBS|%`Hn5Zl5^# z!FuNIN8VD~!lNDfoAqAD?3pv;*9DCjy&Df$s^;uJ;XBj+u}a}J)<0>#*^f-`y*lTg zQg+Mft7;~ao1VOFJyDu|dcir~6AqPk_lhRH<`dT zEDTRJ4XQ5`f9rN;wwC1W-E$&44gGI33!l`6+ZX(6K4qH z)MZoUFYGVxQT62)WNf|hVNR}@?X^^qy0`kgB`c@u z@?D_e!oVJO;M`iL53BE%9Gb9o!qLMAzATBqC)8v%;cMgT-!|tColI{?mJ5!Zxc}Xg zv+M^}wkYf6y}kLz@78O_#Q3MYD-TNljj)eA;i&d47^O8ms@R=tllIk-xSp_vs>| z;H-I$q2E}aaEqKUlL?5DoL+IhR$p!ML=NfPZ%18n^|{jdOgTOt`kr(sUwZoewk12S zF0Z{=mX}juadOjx{#uO(5#DEA7VkW}IhSqUt4V8CX_PwH&-gm+bzy*CmQb@foBmfT zr->O^`J&wifAI1AzjNYL@1L#HJPw9gIaft7UcE1Lq};J$&IZ?*2hTHh2RKYA-MN+1 z;Q7v%zuv??*ctpX>)aN(7zO99EF)L<#fb{b`0sgosGqjm|KslUlTuOpd_2@`F2CaS z*l}U0V`cdEqorjQ*Bdn*Dr!Yfzj)!1i!_Vyf^xcu2WLqrcP zd+%{)gAaST=B&M}C+-Pa9se6D8TU1hmGs|ZXW$IDQLwGE%i9>k8A(uTu)JNxR4?oe$wG?MRI%S?{?3<_Z}Sk z!N}dm)cp9A+JhgF3imE(cwA1s)wutGjMxF@gVTgXR3(b8MK&y&bHjbf?E28>Z{JC# zuup7sNavDw^bOo}Na3aO7Tf*}xd+a1O1w*!_;_~9PVQNYYW{4~;J4a(@5^!N%O?cH z-)4$V{UD>H8R;PM%R_&e@2_?rz1@~?=CAO-)^-1%!|e2_T0!;w`hrY;ZnEnC>ksIc zpLA|puwae8%#7T*B|qe?m&^a0y=rl{MHNqFb-Mkf$c$h2J#=O^^3|_S|8Vv1i5U|F zQ%@FmpErKteC*Q)XQz()oQMA_RX8y62neP-eowe--($CX(ge4H7$v*Xm~9$=Z`8z> zrB|1(OVVvU>h3Y4h@t+dq0*XM5w)KEH3F^$Y*rui1ivVzcWn=_lKDUPpoYqK!+kGq zJqTI+=kck)50MO)T>^9%zCVs;sNFv8R(Pw0591c@zKrNc!kjIWUO!&^&%^i7flRL} zey29hUlY$asXURvE;H#d=fpdFy1$hR^%XzoJZ$!L^O>i3zU1$VYx}2W#Jt_bui<3* zaQk{L=2$a%w^v7$4d-}jTC4NVV$$I;S(UERw)fV54ryY(4*d)Win}!ox-pq6Q=hdI+=k~n!+qb~kU!;}$bcMRDHcPf7CRg}q zd>6gUwN6+5I`clox|N0=J?*v5HxFM?`(HluxQ@BKal?v)-qyN}PK*zHowv(<&g*d6 z?>6c9{RG+7X1^}(Tk`*ve}sL4sF%6NvMrmg&73&B-Kw!HysRh9afidV`6i`rFC8`B%?3-pnrb_sD<3URL<$m{qY`!}J~okW z$UW3*y=B(XRO{m{#XN7DPtrF1nyUIWF;96+8yA;pwsdW{Rq{))J$HiC&%iT&3z|2s zSyLJ*W&N&0_f)3b^ycMX@8`Gi<-S?7?$DJ*n>yYr@VzlPFu&t{f@_5FN>R=2TJmpy zpZqwlU~BxGqJTLE+?5~J)|%Ed2DmV`dM5IC->|iAk1KLxdUO59zKH*|hJW@7ZkjB+ zt@z^=3#o}p=ORm8xlaB{W&IR*U14tDuh&T{1nYKPSvtwm(E zkH?u+g3Zph{CrCNK8B!~0m^@TexL3*oU!`ro$bps1e{h)@NTlJG2VLV+`q~Vt2ht% z+nn*w$}0bRK}y~G1unGIL%IdR~_%0ZXVxO{fT$(_X%5+ z`Rm`khxT#9Y=1ts<6qtSopr-*4JgGx;#-% zjxR6hO>BH*IkQpyMb_FqE=ijIa~vKnJ#)%5nIr7F#>5rZ`?jhDZh9U=*@{B7t zs}FV0EvVO=pTA(``VjG=&@jy$?=x3tH}A1r))3`X=>Fa4+Vsz#)(N;JGG`0r*RGkZ zc1~o`qT@LVF4wMFyka%G-5K_;pi$7_VDazB($c=r4Kdw!`d2%99IL%*th!)z&INVe zgjtr{yp=0{U-G>xejs&{VfVM4`h~(bJ$^KDH~oJokx(*g4=^{k%8#jl0MBuOijl&W)}NE*VYF#rXQ9T#xwPKDC>lrNh+n%d0s@JWX~Nso3Q% z`|y!#LYU9`?vPv4w{4BpciW&+_}clyhtQeKNv_{7OpV^_ZqKtW!^!;6=R@9kv-F*! zZoGJ6KiQB;xpJcQ$#4y?0~`KV{NLo@W5ptN=uUS1-%T~u&J__0GA?e^vA3;w+_;jr zQFPzBC&$yS{I7X!p_5e|t8-7~&U7NCrS+kq}F;^{VY_rH=ipdkjvNesL+ok z;bDAKg~@7WvD{;4m+lT1o0;x-fYtO`dXmeZ2*xl^-&Zd)tP90<-8sh5t1x-L3eVB5 z1rJqScX=I(tU8or_exjE`ljB3>+_7Fs=ux;)o!s}vy-b@=bc#6c{M+dJL|8?pPX;V zrW?WbfS1o)>}|{Ik8S&PFYG?1xuy4AT##!*h}1O2@6U>=W-aD9xuN;o_p9%UYBpsT z2;Wc=T75j{vw`q!xtxPy=3F;dHS1ZJMLZ4voD?G~?bW)uJiaxnyxaH#Q{d^Qw<)IE zYSrI9eDv5syK>DxE8e?v%_e+VrrSQ}>)k)5oD2_r8SdN2O!-&wz(MR2@3nI27h3Zw zivmq*}_?$h#H+2?DCqx9KnEmR>q#_pe&@+>5Woduy(^6bfB&tFGBTrP<+d z%9M#S-rkxS(9)Fh)@$$l`DH7=%CDJwWATG2>T*|$%s$xrtYY>sy2yX;B3 zKT;cS7hdevnY%H3i#8McpA=8w$s1X&b3NNO*CFPGRJlK|J=ewNf{CAB$4z_9-sjZw zZKlNB$~7ls4;@Qb>tvP2cysC|-PkFoX7bh6$G@BB=kU47I%T$J+=sb|{w6Crb_r?e03tu zE#0hZHWW7ZBuZ^~a-q}hkpNrYy<=W$E^l$#EwX9TocK)-tqUUJYHi9h)_O+=_x>_j zZ}^OB>I+rz0~H;MiWs+FzwqMMjZHx}589uu*tyLjTJ@ojX1|?zyuSjIpmuW$Bj1^s zqQ-jL0~aZ194l!I3yJyX%*SaKS-NJqbEBHI<=Ib{7U#FyMd@7kWjG(;zRc&pLd}v% zbDgC!w+F;8thh2a-sgFvgMrYQL%&=1T;p1zlv#M_e{4|sJccMHo%lWV@}By;+5TUc zm-0}>@_u~z-bdV4$&(dTW7bgnCFKH3q8~i z?+Ly>-Qr>Hg-87< z=hcH>r#)Mc=-u&dg_E;&zyhN#|Xt)^FNAD`Tj0mHbkUMuh(Pi zr0w2H!KGQ!QvSMc{+w>|(L7xx|G2uZxcxBWcehJMxr}nDH@7#s1be2hjQP&cx8RyW zuf5#Qf^&uc7+tS(Ze(Sg?kfIirQl>+mDrrQ>*h~<-#C%`&deCUs6#*46BH$%#m?2< z^URNB(o8MmcM|vdljIYgZu}&+_*2%#_h#3>W@*W$Hj79t+0{9<$I;}oWNSOKjlfIZ z$n9zCURKZY|NgM5E&0USOB*k@@>Q>M+Q}zA1hT#*~6U%OqcVnYR@b-L_BNkitB%j^?0>g6yl9X;^!-|&p|0SjH_Ppd4+k`}7Ho`_$!a%#;pkMq znQ2W+bfD)Liskn`*bzW74{B|9@qA+AUo3xcvRotCf4D?q4Wmo%JAuVYQL_ zrp(pvQi2zrDP|~8Ka!Wwx!%jy>Knt8{_vtG!M?*>yc{joaeW0UZ5G?=C)>T+d1tP1 z(Zm_7-;Zi9^$FS&zrORY>A^`puKV-83Cz|$!Nj-TXZ!U1&2t;4%jddTI_UH4SwEZM z5#Op=UB@)4rzlV4U2?QXYu9A?c4cpmo<+RN@5SjqwS8#$nBP(E$i@ZL**hK5MVgd2 zuD*_2&+*FU^^(n6V(D+57EN63dS;D?Su4|$U%PsIXYb2#m?v_lw=Y1zvA@zRIh$2ZrCSjm4{ zw_CvTlGf8B&*roRm1aCW$}}f9?)}MBXIBZwPuUN4cS+s0kFO9-KQ>QVxBZpy{&SvU z2_BoKm(6k5-(mN6|3~9?V}Gr{X?j8zyH~H*c4t1TB}>Nulvd! z{kDazTau#6mEP3yOxBp$JtJAC>Uq@6U$GNcRUcDqm6+sT+^C^@%q@(8t;$Hb`e7?q zY{isow{Fjy`Rn`@iNuIEHHoP^=azajf4|PMUhzhsmeGee<_* z&7ac!<_RUQ_&Q02)jV{8*%R+|TU{=fZE^V~zwFnko}KwC9tZ?#ig@0OvA=Bf(CNqA zlh@^C%&7%i6np6dhK* z>h7=3b(nbbvdCBW&wsp=gk~lw#`<*Sl`g1Idd$Mcc;)f-KfnJy7Rq9$x4BQ{ zs^mI-obg;xFE*Ab$8>_fR?Wq!YclP5+b=KPpSpHUe295x?^}i=D<4$zZ@9iovHI8k z)p}|#1G5s3)MV}ooAl(A-ID)|!W*Vr{$})1Q9N`-zv9_upKmo6&u{p4nm>B#FXK5p zUI7N~`FtG76CG!|9eVZfa{ucOo2PmHj^hfPv!AK(#T-6fkqO3?Ka7=oS3XGTyEm`; zoWS&mGb`>K`1$S3_3re#MFGdVEjH-%nSNW>lfiB0mGyCt$!Q&%<|v~_KWj73KEG?! zFQVw_@1*zVk;Kh>wmX@#(_ehZInA|gowNS_N#d8eJWI-t?_j^C&h?ZdOkwJl+^u{1 zg5}CC-9BA#%wy^A+}9cHJ{RIbug`tCsvtGNbZ*9c{nuQ9uTtcb`uXQ^bUl;_W^`%0 zKIh`KbJ@Wne{@p5b8u#}KKj@w{Gy?-VZsEV*h`0GmpeD>e7o@Wwswhn0yAGq-r;Sx zCMz>e$o=TI$oaztjSXsR)K7f7AijiI(KY0Xf2?w`MT$y;c|!itcY+Ne8_H@@v)}X0 zaXf!Wqc4K(gZ2IU=A1$0Q?D*)*;>mgoBCCbcRBB)sN9=+k3IKY6lV`x*l=UM%)xlG z{nZybg_sze8@I)Llq*wjJZoDs@8++2kCH@$_Gztua$}$3={T+%-!%NYUFitUO}r|3#)~ z@Aa8lN4aIh6J3(i9iNNDT%M}%bn+&Sn|s@JyOy3}X& zTmL`W1peWT%Jxm@H=V?C!tb2rweQM_f_=HqH2!!yXI5(#N~RP zmkX`-?hQWc^di-%uBY$9$AYc##1Od^j<1e9hbFFX;QGRzd zbeQF7&)-)zwKj50T;kS+%(bW1ci)}mC-`3EMB^dNBt5?O3Q9N3W}R8^gR$H`vbAIX zGL4mXvH#y>8x-dspS>_b}Jk6frvs?SAlmQfu3#e^J+s z%`1aX1PJ@5q-xxnFTIT6RPTh(t^D~$CvGIJzx;Bo>i%DQ-oBgUa)0{4iA6QhuRGSB zxFH}}!V#Bq{>x^i$9AE*ol|l@J_!FXMb~Azx_E@PhlJ{qHRac1f_FQveq5VtSlMTk zl>DnTw&2A3)+KjhL&_==8G5xixMx+DRKBW`WQaHUzs)kl?2vtf_|Y?-n~&s>~{a1daJ=Rx5XghpVcsPl}x4R@z*BY}YS` zGesX|Cw)%Zon-yJ;U|Bj(~;wx54z0mH~ww@$^P>4PE!1O=tSo-gy-CJDlO%^44w?%GBrQGB`zrAbMuU_fve#JWeV7rC?!`3Y>o}pdJ*6lODonEiYv#OoK3{r-9TN$=9w#@jdSnGxy(uZ;EjH6L34mk5hxZR2qgxv{kVVe@4} zTayJk@;8eXFO9!o^1x^DqQCR(H>{7py)fXmME=32UDfIddnBJO>fW4|{y^h_#_HRq zr(RBX_o!p{$|VZ@TpNElc>glUH1yeCbxWt9(kzoCl&?_2sKPCgt5|GESgC~GVX_T7Iz{H0vGn@iZ06Q}omo|+KK@ZXdF1@7O>y^6ulk{<`26RM+7{=Id%;hKD?mCN{R_=Y>Zu4;$%PCBi)lUpe7 zcVSa)LyfgbXp7~#N`=o&i~MT8f05Zgx%`4uvyg+|WWT(x7tLFBHF>`6Gqc*5?aZ|1 z!lsG~5g*S5eUoe8`_*5#ndi{XpPpO8SqqP^+8q9oA>gyzW||W04w8MzHb^+Q@ibt_q-Am+httip2_)$!|0sFWR-8fceH1& zE=V|d;_BBYanE;_*{|W#EdOz+c-6c^Cpo!gmW1*hFc<&U*0fZ)_=IEL@6D$#ct1a2q4JV|s5kMs z&#Hc=ioD1;mT>LbTx&ibj#jB--7?>fT5JgZuB~jj_g28yYi*~F?3)xC8}a_Q6(58A z7W1h-qE!`#-!oU6JF_(LpZYH5P;2fBq=7tU?3FXbxE6x;Tlo{qEBz}9Vlo=P> zv1*O6d_%vaZbvHPMa`iO&R zXVJc>|J!s5?y$%G3pk%{rhmT2WB!sH&xD#x`IW2M7&1aGdzC)U>2hN-HSYc{IP=u( z_&R@aOZ~9cvRm8yPai0pb!Jimi^!gov$GdH^pswDH+!~o#oc2?J9`Vv1RkzFziaV2 zp>lC^rhqfHiJ2Szt@T@OXzgrst@h6SJ$?IU`ES;8ndK~bcgy+@rZ)HXRD3(WZi$BW z^EWq`&Aj{mT{h`Y`^uNp%Gjdr>&R30q3!jtD@L48pINV~Ej@GRt*kD~>Fe)1+4C7{ z4#uC?opeU^!=ix0R}a3Gbd2IsD%j!Q)*%zqw`9TM@E`l8YIyFvbv~&3(z1zD4(yHD zZp3KCa5mw6Kzzdv_CIanTywW1*ZfIxeQ{*|zNtJ4?3Xi7+;n{9vyGExf5l({7#cmQ>o%d%!s_`D?>P|KP3c8#%mf^sha8YUUP~ zw?=#CMWZc42o7yc^NIXwAV@)vWKg?1kouXxdW@{4c81D5pNlpA7_F)4 zSkL>=TfCZQ<8PaF$7U{xSu%^|;%oi>L#0QJ+;Tq7eYYz2!s6ZsTg8uacZN0Z>09sr z_E(pHg^{JoLXqEH$p==P5!sl#Ra4rm)kurkuJ31*OV;j~Gv^#Tw@aRlSm*b(U4yk* z`rgLZcc$jCJ(;<8ib;R+@`cqUbBkS4IVaue6j_!NV*0&{IaELU&%qP!8%%5d9Q+)4 zJ&bw7>#V8EmmFjFl-(Pqeqz>_vPmo_IUKK9R$utxdQnWc|Mv>FH*Z*;KE6JUS7Y*l zhllFz-}bFORv&xSF}^BX!g?ZON%)7y4>vHVU#h!ztZS(zU+%95>usksoV0oxE)sAh z{rtDNH^nrRes(;p$tYhnCD(sO?3}U-8-~dw%jY3wfVjAR%6dxiQ}&ho_Sikr#R@!V~JCt8(h!tRpwM> z3YMx`m&oqx?2~?F@x=En?DyM{yeC5@p9qXX?po~3HCASW$RRb zUeJ9a{M*V=$Y#-&?IvEc{rna+srO~~7Oeg$*suK0Db8?v_;z=>dc|^vwngF*o}VOt zi=XWNy-$p7>iopbbEYPkUN|4ST+J@svYz?RZ?jnT>01|EtaLeBc0|{GZ)f=w5yvT2 z=5O}LmG`i&O)jaMQM7Bf?u|nR0v{`8u9Zu7dUk30-=1(mF;UB^wU&qNU$4l%&$#O0 zRKv3s8V6Q)InBJ1Z0|g^x-x~MTcOx5!1QSMPLnC&XRB{HeSXW6%Ne?*_C1Tx+@Qp2 zndvS`Gv{-~HXq`+x!t&E<-~Ol~pHIB-N`z&3a*&lca@?`a{hXt!Ok zrTFT?NQVvG<-A60hd1wFw7Rq;bK14d`xQS+K7G)3=BMkP7v*LXyxxj!6fJRx-}lUU zb=D{O!wdiHQJUki@vx_Z@HsiL;5FKI?EM-Wy1O#0+k0m`oHNs-Hs}XOVfc)jt@y>fvSvz?qZA-21 z@H5fOX%ySte)tThN~-0)-NGN$A4Z)nIsfTb;gvnFtUk*7q*p3Pcc&b>_1pNG^S5~? z?Dwcz)Ulp9Fl$qDod?U3>sj21OunBqUp)AJWBrRQy}A1>=O`)03VL_sNwjB~ZTDdN z|M>R0Pv0URHnf!U8n)$F6dad7__pv7t9+UC!E2|wgd7G5<)M;*bm(rp)9lvZ}I=R(eXI*e2^K= zn~p8e7I1m@WkR1`*M>Z&o!4i~zG-gFcJAO7sp@DBtM|u@6+3< z{IcZ7g^##4&X+x)Rd+kIFFE^|NQ&W&>2kG?qS=DZb{*Q)d$jt!N!-Jq(-(P6QhwHQ zXi4ylKTm>gf7g!NQG3#K{q{|ovEdOxzh&>97UDbZ>YEeuX8EB*|JXY7?&j|_xO;_< zV|I__dj)|NI-LyJWG(n*Ijq%1Bd4Y@Tp5Nal zE!8C8F2egPKiR>w{|(QX@2~2TA4n+KsDDX(+`B6wbidx@6{iwpqJ7VNj+n_U$t>3N z)a%UiPn*+s$iHAe+W7Lh(NBJb$OC^%BIL{;-Ps+T7QyvTR_f4~(w2|MbbP8Tdt~Cv zc6*mgT3tGQbeF-W=Nf6BmWXNxQe_f zNKq8hyEmuvL;6ok)upZS7RPFe8qZmZ%$fIZ^@5s9o0om~yZL8_V$;`UGoF;}U35=s zo625gxS?l^-(+c?kdmhL{kA6w+# z&D1h|y_9d(pLMTaF5&K&v1j$Sm7*28xstQ5^etJw@9IxxqYF#BWeWZ{E67H)mc44y zy>f(A_|JyU+>+R(w^P4!yT6w&d^}f;yIXLUyW-Cq#~tPrE^tqex{_KU%-*0li=mC- z;e?|GUv`R5nec5#e%84!sy`i-{O=#SS9RgQ%g=%gTaKPu&g}iCsEUgxW%Y~PnDuX_ z$C>;%TcCWE^ZPzgx&0faVqq_J0>DSdxEJ5k@&0AtWXGKkB?NzlfcITJB zZlTLFiNSiOzJ>dz-+T8gpAu?t%<=Ai!KBDfHB~Jh^A`U8Cb}T2H9X9Co~N4c$Nl@7 zcl&!klv@&Y`SSWwL62soZp-;vwqZUvGEUc(p*V^;hbWC-1o%#I>u0f)4Lme?4$wLeKM5ulm^cyB;QfJJiPgXq|q# zFVnrSjBiDH+YVK}d?u`~^W^%mXzTy`=9lwNwUvqPWR7I?>9o6kc;)RYf3AyO|L*WI z_~&Y#g08QB&cKCb)t93Uo5f3R#cpG2+qM4up16Qx_Z=imbKK}=~2de@VJC96U z+)&Lay{**MYeil>|AyqlZN5BTV6tB_=n{i(*Vy0^zOSpV%AC?MMfJbf zOaFk+Zx6og-8lK_#`=d%jHj*3W<@$)?tdd*a%Lx^;-#H2JiAJtO@vSj*(dXGm z)7Bmq-jR{SLEfV@H|Hf=-F$>C5XK6dwdX*;Z_Q zPXF9Chds6Xf9{N!)Y;3!!o59}`KXh|c7;y1qkAv7@EV^<5ah2G60+yrw>rSy?`cf& zqjdN9dlD)QMoR>j1zwKwZ*VW3knSk))>lk2XZ3#fIT<(J^1lnqTPgKhC*Jr}QpS9? zl>Qy3ru1AjTeM~S_0?O0oxlAz{1z8E>5bQIFrOlYjcJDeYz#VLQFA??v4D zxa+FN51nxgaczxQe087H-2)BU9?y;3j>~azB;@^;>=(`n7B99t1QxD?b>nRY}ycwf&qh zsYIze$Zd^tNvH3-rxPO=rWE)hWU6n~oYV)Gm!QiP}-@kKc1&MSF7@H8dPc>lDt02MWXR>wCl3j|1%>$ z>o0oBS>XEiP)>4HcWUj9oMQ&7e@8IXFA#D0$g8|f?Dvo7mHPvxu!k@*{;mvpdUNx0 zBU6sZCrS_2K5E&qS*!WS%bDxXFJ68BhNR%+s3LpLIK4d6b3#WvjGKkT^EoyMAH6mG z&qcwwp))9{KwrM-@0<7o?>aSl{%p$FnLcU4UzT;#W`3&J)OEL1P&Rg&c{%v0_sxa$bO0B(o))}uOGERT~O`gA8Qtw#+Z}h2_-g}bF zES%rD7I&CkOOy^1@6S4xT&}%s3U6CVLFSA<309AL=A2(3lehe|(#aVd34A)P6K`j` zZBmxJ!C0o#vvHx!imsNv;OFNnjp|Jm4u9UEsOTi4nQkb4JmgPFLtDo6MgH7Y(Nz=D zGNvEg|KUPu*s)#i#rF)8BCmTK657ALLI2N%)VHNh%Z}xoIX-vZme^z3Zg=8$YcW-} zy;15g%v#N*KuU&dfX}%Fpm_z#Oip+m9KjYPW>ofb|Kj%u>tB)N7&Z{tTFJ#mAO$l#iJ5+Zl z=+^J2&wRIEGBuVx(N|n-q^x`P&qiO#wZ9A_FQ!e_pL{GQy~|-r;@79`kK0mCa8yj{ zF5aujZ(PjzlW)!9)wN&NM7&ZfnDu=+&-C)m#VcK3KI!zHn=SpgOJrBhv56~n1Nt`{ z=(@LZ(G!l3fAhjwCtU6Q5!K&++3jBI^#|WoF3(f0x7Fo*m=~P&*XaIxv%FkBrhUtn z1W!2c`X`~rn?Wn^!(&E<=*r_9T8eXf(l0GGJNh;=tn#)!V;1-138iii=eON8TN}oA z@w>U&lvCSTy=;uxQYLbHsK z_5F4H%dNxKOt_${?NByv`T^0@XIp33Em(J$wa9d@=r;H15%%9^)fAt~-pKLt)Z-(& z-XzT3-o<^%QZ;#FQHIL;={IjNbTJn17pn0z`q{pcZ`-wgv-G%(qXDj_4|HyynQ-I= z*Behg1(}AUclv!^c(!Z3aGaNZ?fEv&zg7R7e;)U}dhej#+_i5X-*La*QrYRu6&u!d z?X~N-XEOu3_ZRKl{f1fC*-T~Woy}VVtzPnNy1%w%#}X!&YYtn_aH>Yvbrxmqnl$6> zw1@j63WJLK=IL_J5nlP@NLu`+#JEtqHQ(xs>bzGjssH^f)%#s`(5!iLRdRLf479Dw zxlaXIU;T4-*17agt2_R$(ogTNey4GIrrFvP;ztkv=Jb zu*`RN;pc_wOBQU9DNX+8qw_re>ZUj4ud6KWuWLHZ)1EH;B7EiJ8i@&)zqd15@+s-& zc)FpkG>LOz z<&WK+b@wZiESd{`PhHUEuRp=^W>II%nSJrT|9V|6IAR_niY z|6JtrZ;Hp|X*1-N6sDg)p1gj|zKGNEk9mJT3wio=tH-;OXTIHk_(pY?`J=NNrm0AT zA68%D7#($8cCwX+!Zo|5tUXg&{%YOob#@b(Qc(If$4*69{Wh^{OX3X9WpDOW%{j$+=c+{AS^pb3E*4BI3)0^FE$xX}=ybuattDhls_;3k&tB=iV_eGzJE_hzIS?sdCcfPpYn%ad6coR6UvChc9qntm1_m+#$ z;w*dPy&7BhdtVcscs4`4E1v(L=}gvJ1vB3K{3220@JG~hZkB5A_4C(mg>K5LmfB?# zQg!|M|D}p2&i<e}0_2c5=Y05IwJIb04e457JrvI`j{L8MCF4vlEj#Cf!u^d#K zcgX$!57nfLEgWS#a-Mwl)|+-ZcYEn1`-XMwEGqpj3bGS=QqEk7ig?Q5m3>WLWsezO zLR`oL?!L78%y1oJ+f!dY@9?qZ-{yHDMpDtUx z^ESGu@UNT2`{>5D2q6~NXD;hL#{A#rqwi7Fyt@Ca#P3;+ZUq;8L~e6T4_#z=?Y&v5 z(6J3%-#eK99qfJ`)&IDK`Dou6Z5Jc%J8Qkv-&jaLS^H&!x$?>L_w*E8D_LXWZ(Pzy zHoEfK|HN``zoXg5y65_pZZ!NLefjX)=c_-)ckH>76_$OzaLQB_gQsu*8Woxxo8I_i z_M~m+{Po&8INhu&#NTZ5?mUpEtRrF0$|iPE+q#--dqt2_PS3vEU03~fr(U?`qWiNz zaN&`_`qcj+_it}e{cy};UzOH#-&?Os7o1z(GVB0~cq^LM3#=kG`}bj%m!qXveN11O@NaSL5k*segYeJRwZdg21NMrf*y>EAFJkr-3Z}^;QC!Q zf%|K&9(Lp|zV7@=_Se(MEAsb+96BdOBm9dx9 z(vwaF8%z^*%rTUZe4rA!+WCt`fXQz4FOzGPyA@duyNdDN`NsGA^b*OXp(^oBnJ4)R z<(qG_?A~|MjI+-*%dr>weP})m}Nx?{?#befy^WdA9WE)Qw?x|78X; z?yA^0;kMDWJKodJC_L$^jJLP_W>K|o{|q4^PtHY4-BY~gWHvZoVSbA=DD{a;tKPUBR@`lSbL=bL_si?@BTM&(54QxO$*_w!GF&ryl` zBUzf=pICW(sgL08OD~;8F6BBeetody!oOSlGRic5AIW2=J5+Q-a={NFmX^t(J8r#{ zy#1*6-<*#p)ML_xer>7YS}D`HbsKl#zY3PRDNmTS)m$FDQ0KR6zgzou(n-e7-egb3 zU8(6s3=Kv}+u}LwRpis0UmR_A&}tO$&oa+=5xTK8F>c|NSrIX%p_so52wrxS-r;8_~8;d0FW!$x$(^DX3Ek7fv@wqD{YEiaGx6N7;Ay@8wv~dEa|O_lb~oe%wb+EW5m2+Uw;}0P zaSgg!;L{x^6C5ZIBF63K_Sf~7O!%erR5OhRQS0MxCf-+J6@8#kVpuy@Nuo)0hl zg+xO9%YWr7>)OnD-hWscaetDr@Z`rzbpaJ~C%*l3STQ+uHEWI9w5h?0wG5Kd8RA7N zxAgySQD>Lw-g5Er*R1Qj4QA7J=r}gs)U`?Yz^3{5W5~R}&z&!wS2**^X@Yab^O}3S z-;JVAbP3)LR{o*VwNd3`lZe2M%3rJtS~?lM6(@evyjP;qA=K zljO~`)-6-s^eK4S^Uyhq{b*WRq@e)ZF) z-#JirCf2(#yFBzyMZ_{a&i9)cSE@WVmZ=RrwPcZSOuPB_AJ3QXj<)eN+TrlV=;B_# zz9WD29L_&c*Y$qX8K}$iGK|ys)$+$YQk%3bHz}S_W;a^u$|>V=Ou)kULh4eHS88=Z z;mPUzhr;7jc8l%*)N@4X_#U1P`Dth5lqWI9-fRunH+#R4U--AzH#w8<|4kJsNmu6a zopM`!mHN+w{@Zg5ql34tQ_l=mF`wb5a_Cu6Px9)DyZ5E?N|*x`msxIS7dUyAcje)K z=_k*9KFrb5!Biu2Z%WP5aAH?@`h^fZ31s2@+u;y5~)!Il-QOC{CdbO{KJt^3`LUccNbT#tvA)%%kVvML3vI8zGqLbO1KnqdQaSS zV=B*;oS({@W_7JA%1xhGS-;Mz<{X36@BaHTvtQneJpW_v63bY}FCRs&{V8zmzdZTV z*9`$KQ*Ot-ejJw1`0e&`Ei38Y{@eiuUB{;StMfhr;JOb$V1*r)m}H)hsDy zE;3N`ma6&s<6|v{&c8ku7oIh7(%KP!mmW2>LP!sd^gl^9FjzVbA(xP9o{!n^H?Ol!^? z2h3{zzv*&;mHS%uyA?f4d0VzGyi(FN>4k9GoqE%rZr_-n;!Z{U`&f3WDtEnE`k*Df zME7J^lfaf@Zj^++kcc!=1$UQe-xO*zoWM>a0=JGot0a7qf`?9x9nB> zxajBJU$;vm`mNW5u1=Wr?dvpEWh16X?Q5?je%j42vmuwm!?x-5;e=5GhK0v8*JXK zV@Ts^xUW+1{261k>V%Igm79etpG0YK2z+q5YEky@v*GctZ&wHy?R>>yHi!MZp@-0< ztB0FxuLm70pQ)<2`Q0D2+`F~EjXw*rtS`7b&HvMusPsi|k9e4$iRrHQsWENnVDR(* z>?gu4p;{xY67+3SyWjCm?=Js;6n|-h`psa6pllbd#UZ&ZFBsD4uox=pBA8FER>uhjGLG;1|N@{2%AMe;nSbUV%zR=%o%4+5t2G|+Ek5yq3fA0`LJwDXzPfNo%~0gHvZ(O# zUFk1{=j{Z<5;TuuD<4Y6t5Q9zp57t+HqCv4*HA8cbMl{K-eA zE9=^yxYT*c#?9WOarZ}Gph=Gp&!0VEZ3@B{_0)1+-8-7S+tlLHtAq7^yzg1(FF#A!~rt$ZvxtVdYTV2fR=@p;CkJ;2M z3OKX=e8tWkvyXk;Rx0F_sbd`eQ7X}D!$!};um4HTp7X=ujAG2$@18~9^ZuFKx?#U$ zzQUXH?OT*)dM~WWi;`dY`Et?k5AT=!ajJOC>%~xffFCPf6cc8nHrugbLU(OSMk&5SzH`{cJ|zpo=k=}S_4kr^Z(u2pLX!M z)YS_zCv~@Rlyi95967Q7C$B+6>C9P-C$D^{iu&1`#IHJWif8TO>y7WZc1H7^+V}6{ zw>dL5-#VtxUUcyCuUOZV|9^v)bgWw)H@kkR-phdI50-bAtPMD&9>+HEc(kHvo#Cua zzYp7~W*@XQWMAPk?OkAV;PG|2{fXZ^F56^PI%d}1sjZxCdoyg;x_8giYuSSi{om+d z$Yu9P!dGdZ+wFi)zrFA6O<9{L0M9DSQF$LXI`9g=B};r$DpH&l{K8N{N`nydqi#H0m(;)X5ZC~eYh@T z-!X${&!=ygwa0_Y)%8L>%L)5Gx|L-H-%E}+);>HEA7jDjk^V?>$CG%^g;%aAoO*At zRrY-2OBr9C!^b3F&sMB4&p)KT_QLD12Y&sk+Fx2$3VGRzEz;d#aAH^crO&4Gwl0r7 zKk3AtujwnJzrJRYSpDM>%R;xAQ$IOxJJp)8cHV`()9<|bb$H`0gNG_FR_f+6wMaJ$ z&uHqe2>jkMLnPrwlk%fg`JV6o@*Ri>4_x%aT<^F28CJWuGHX7*Ta_zv@5tLnR_x*L zrY^0pRabl_(AaC9^Lm|N`flZ4(<*G<9x;$vRJ4Fs?ct00cmHy)V^_D@%fjcEC_5!s zD(EZQh4-=n4xf73g6OO;Pq<=Xzs;y@7tYrJBx<&a*|AB7T|jGAdo<__S%Q zTv;l+et<@d)Ukx@r0jUb19FE-DrDL}o&UCP-l+;RL0;PxPP^FCB6O3YdH-AIbv%n^ zc%@eJx__!qB`3qWT=T86%j-jy-F}pjw(6Ez@o5gV=-)!Y2htXZKU~l4uEck_+5Y}a zIhM!Q7VJ?l_#Cy{q&V4T5HsJkp*{p-5Bw>53}XC`&?1>X6^*;~fo z8~moINcyqS60i9uP8D9QaMN$G7cWdtEIV^DoA)vQ@{~WVjXu{;g!-k;Jzo8&ZmLVs zTg~?RHm%QIGZimSN^JAlHrKYpmEVy+^wZ9bS=U{5NNCP)=8RmO&wqXO9{JDbnEDGd zCdkC7ENbvSle6G|==Zk_PSYhAi?7!=Twnd9r>sDOgVSd9`k6@wxALFPo>6Dan*VXC z9joX>vo-sEZ!di6q`@UnU}?nlH7D%dwq+XxcP^;-nU&4vmKZi!_}r9zxAHY>ZC{12 zcRt*^XR-M~_qX2})4lFq4w`u1#E0#{s(G5VYh#LKx=T_;?;qXrHMeZ9mvFG*q>nmL zIkPwJI-;?>?Gw-R$McJ>rlh8doQ%s;nZLaJ_iI(=0~|?n|Hp7o`0Qyq`|a~9T=R7W z-e&&Y$Ecz9v9g(e?yS@1Z%%j^xp$gyhvSFOdEFJVA^(`<844!*=@H|5t$px zEcPD%G~+F@i z9?>Q6^2iP;-`794XbZGNE|v{i;D1eE2X~8*QYOO!W48YIgb)`yjc+BJ|1sSDompP~ zOr_dgC4J?$`ClF8RQ+ADZQ7!yo1QlnPZX6*x@7aHdTxw&>aieUch#jSTeeQzT~y8? zn_T{MV|vlg!{4*K!Y7uc+P~$pIcS`$z;gOf*21rvPfrSSoL8P#&7VK9K+x*fP1DC; z^UD7^9*CBBBEfUkb;8_o*(qB)&t>X{MZQTs+@V*_oBy4^eC>OsJB~@IlGDyVd2hDs zA5Rp|A3d>|2`3&)@s?+Pj8WSm*K7YXdtHf|f{$RA#*f2QoJk#pd>s+lTjOGcgg0*S zSNX#|#d}FcP zP*_}O?e*P?$?Tungri8#_X!=|DPiE zRy*YHWd3uCQdzKE=-g?aGTSrncIhyx1*+-lpSko;xY#VvyCWs1|GbCXwW$?S3v~rq zJ!iiN*Sz21Cc$#)YoJdVhs*&vk+x)+=ZDvYWjfawyKrpVnilD7=kkg-eoe#9#lVd-lux?tfXPo<2W%k}9XW?!9pJng8zJ zn`(ct{rR%sQHyQhl=|T5tS@4YoBVBm@%B{aua__WBwm*~SoPfVK=$Okf~rrK6;2=S zDqXYYc7I2QgTBo|(XewNw)6RCf47`5*VMtNU~^Z!yQ_KACl*aEaSN^tL(ZRbF8OVH zyzJ$EhV3UJx^kqCeSfWRWZ~=|hHJj84gKnORm|_Wlb>e6@pbwV1hAJh>q{_kV3 zF!x7!PESDOa)*D3tp1r2yb1CNf3|+H*(fpTzvk!HicY)pv~51xXGcp*OgD1fA|mQ| zaI&mN&HHc51+@Mvi(J0Y$fU@;vu^o%1|zjY6E3=!uD5>S=X}~>jo}VqStGX!`6F+I zcJFYP`KD^9_S^W@QKl&&f;SHbOnUEnY08hbw3WxNPBwb)yhn7y1DVHLmELy=TB)v? z7HFlee`0D`=kgUvoA&4*>)?=9`omXHTRSiE!ZW@6ww;PW;H+)HRu+fnlF2W$v5$ zur6k|@qXJOadmg@wb(@h@3#1qI<{}i>S$RTD7ZS+ZvL?s@1hi%H5*rGJ~)}qFr!m6 zXI8?4HG6xzUOJnwpO${ip7Q%jso=rm;a;K%!NR!#Nk?3#Ewm0^moUBE;a_I?hQJkJ z?5t5~t7rc%>{esz3jZ3pl;Np?68~ZUCwWt&9XK1L(%(%yr!LdkBwF%yrRfgbDo{P_+p*t^^Cu3 z{yGcTeJiz2cfH2@BXf)G?QauHY_7O{T43oR{!Q}zNgZK(zI6#xS>kk^7V30Gc+3gp zyAtr}!THns#piwXV7dR}^6R6M_G>(u$uaq9Zc3|tLxAvGewXu?&ud5e{Mq*HKDYf$ z*KDR^2j19uI-WN8ARxO{ZT>xDK8XWPD?ZrDO=A=-S=bc*#y$LF&GxcNbFa#03>HTd zTDIDy1geM?3d%aK`pI&-zk>{W`WDq4 zw^{sWVVc@9bscZx>X-((Q_{}fwbLe5-Pxlj+?n7V(sdx`^^_LLv-=s0D|O<Q6LdYQH|utY)8bdUfK0 zjHilI6sKW+^^*JFW>*~gz<**{-oK+wJ3M}rIxH;=AtoCfR_m?{ISd zhhH8&7Y(Px@LWuFFbUedPxuD-I>6n||8!$;!toUZdwk7*N ztXs2cm$1wa!SXXj&5ODfH7zGsb_*J~&-yj7+M4kv3-c#&V}m&jA|C1G;kQq$i(Mb~ z%$>DN&0L1VGrHk_BZ4v8R^+$Z=LXCS5Cw+LE zwq`Xu-((xpKhtLlzn#fmvr|t!`oig-cNi^Pne`&=WxNvA|#JBql3pj4hUa~+eKHscz^ZUcLYx%X8G+2u_ z+SV>goi)jPQoAUt&T)%nyWg~*H$VN<+RMqmD@`JF%3mvQj@fpBY$vq3)_#8R!hVw5 znkJR&A7x`d72{*PncmcC}#v}gaD_x*tfZS%4fcGpQ1e7k%6C5O4!j=yOiwpH+d)^ka9gVO0l(t-&lU}CY5dG*B+a%cG0eP-_~&0%AqqO^J==r+}(G+Dctz_?`*`k z8T<#Q#cOfrFL^h?$LUzt(Z>%8kKVqY_Wp+5U3E}#9YF11-U>8)|P0{7ca!E-b7 zM42KRWqLz8E-Js+JS*O5+o~JBdB3}rHGH!k&6b-Rl6I_0H2q{T-}6$lXuo@tk3~$* z_{bnqxKQPjPj36{95!iC@0YQSl^1iC2u#rn&Wscc}~|(&$9<(Pq9i^ep2y$ zdH2qlO6};kD>h9MZ&coz`1P=SA#bp0SBCqH-C`;~o2Qn)Iez&>)K0OJ9BKA%*v)5b zSiW(q=ay9xy6@!qeyT6hs$u(l{$Aal+gp88tWH_%6m#AB`|_(EmX2d84PV&3{G|T- zE$zLjeeC*Ww_P^8LSoJL7$4jHSahV^CV}1E#m)2GE+obUoklMbB=*K^1w9%bz1}*@DSeHioC)k`ULw-r+--% z|FLLJZ-L+&1;xYG57$kwVf($Q=j*d6WrC*`uU%j>Uz9occ6YkPVV51>wn&`W^XJE- z`R+c7kL`}HpQw;{jPYLV>B9+X|KwMty!iA{+kWP?4sY%sIyq*ZhZfG142n5e-E3pG z$#v$$lau~F-}~=!5C6e)bN4X)>)W&I6MO%07u&3N(`IgbDmyvw?$+*RIuSG}mQT22<4ctf zt1I4Sh2MSEJaczXpQ*(2RM~#9<9_+8oA-TT)Tvug_rht3%#YeGUdy9t4}X`5_o(cv zm~NfyEw8O6-(pyw{_0O|?*s(_1C^6I)P3YN)9!F@capuoG@Wg#EqL_H;b>CLzbqdip~(-{zm@j;#`Ph=ZR<7zwwd3;mfSJ86SFhR zXU@r->7`CKvt$<88T0=xD;EBD*rZKlnSjg^1z+}sswq3J9op2iF!Z0t)g1X69}#)~ z)gM1)wZ7UbDw(qFufgqiYw|q~rp(qoYI$NLACvwyE~XT=2~`e&Q_32SnDAa z`BB$%RyN!D<;sQ5o6@${Jl|WkKV!}BmV>htABdFCPxg^6k-3!bdVNB`_7y5w^YwnV zGR8`(ZqfSomnm`X+CE>)*5}MYee1iAuS(p0_5^S8v~54MXYa0umA zt43?H-SQK6KX@Dt(7FFs{QbODZ4>73u`CRXe;>V7Jw)JS>$2A8oHGqy&A%U=*B7dE z;pf@!C-YY`RQsg)C(eHQXy>hkeFtN5l114+rZ@KNmc1}V)Bec6UG=jWb9w%T1{A!P zx?6lEBiZbVTdEwl%KeosPa+@JNGy=wVq3)gnsrXI^*)jADQg%#r0+^!x*jp_uk9s0 zh2{Cu()_MAYu?HfE?T}$iuLB=q6V35o6cLE;o{|fa7VT{a?yN!{=+T3G38MV9MiKq z1A>$e=>|4`p3g0v_%vPZ^p=gwJ|`}WozwoHC15Sv%)7fTvaZoLk-B#C`_2{G2GNaa z?0I!FV%o0HKKgpL;l@N)@m8^2Ob#U(=VB(ze04C-w5BIUvitbq`Ryy>@uO8#^Bvhho1n50!Zg_ELcZJ_{KV7Da$reHL8)Kf$X)_jlYTf$yK=h;6iJyad zHk{j7nbUEtt-1f3chXbyC)wdPB{$@{`{pi^bbtP_Dq_EF&qA9ttrs)5dlh_IRF)?2 zlXYrlu49kxhb!+AH23b2Gt=WgyjfLg`NKNB-zI)%7I6rzS3309rsw|wJP}gPK3k7tdSO-5)d!20 zuM9K}ohrL%oxJ$R`GNBzRMWFqX06FT5}S3xQzt*vct_WqFXD#{bZ&TLoje-)GE79I z&1PkQ(>z^~J=0%L5Lx4+xYarHb##6jyTr9yT+h9-`y@6#-t>8L{I7QIck?G5|Ep9M z{Zz!P_RQs2O^F378{hgpJ->eYVx8=+>rDPK`i1B93)D_*EIYjLUF0^=pX*KbCH-`k zF40KdKX!;sYQ3QKj^m8hjq4lKnyrJ4yN_<(SufJ_*3x_X`+wZqWu62c zd3M8oMYU&M^?JV2eZul9bC)-InVYS_6=`t)qIivh+Uj-c`mj`C{uIr>$Pg`0uUN+mr6% zoz_c}FS0POe$R|G?VQ2Cd)}sP)%FEHCLVmazi*$`ro(-_Mmufil`*?c>a^Q!uEw7y zDXHladh%yUe7fne-95Wj9@-E$S7G~Ep>3)ewmomRo|vt_f0d{0kxl%cPOW^-v{R_p z;~R$ugH-A2)6=9FGgerx*cX21cghigjs3GM(y!L&{jIqE?~vuTeT_>3o=KfM-tX1; zM5Wnv&xgkgLxQRv{X2Z{8}n(YZFT$x69ax4+xvZ16gdB+=dxe&kC(>!x0d()cKR%M zSZd=<{Yu@fMl-_x8khzZuBvxm?Gn+tm$Clr`6d>t$NUTrx0%-{eOw_LF(LjkLz~(W z`S>VxUA`>|z4a5ht{&|VU<-K^;_>I}PC3!a3g(j4H`F9HG;a!tR}v_G`&_9Zf$jda zmO%5RJO{5u(etvCZuZ?diVX@us^YX2IQWRX5g(E@j(h zZ<}Et{I|qsk=rD%w)n*O%yTL06TMDI%;@@h)p={Q_N`K_MZAZ89;>|eZK{fP!i!y- z?iQF|=$Sp!>-Wcdb#h0qxA9J3Qg+ZTufK7$YDU|lIl6(fr0O?!)h7fbx!M1Uizs_} z?8dCfqU&c0GM}DwdimP*j@eu#(_MdOYcVaWF=75&vAJOF^BI>68kgRgVIA<${YgN5 z%cbni+OZRo6PQkK6TT>=d;b`>SL2m$s@%yxdee@pxvl%=@=ogc;m}1s(#u`5zuH=? z{Qmkf-ye^C>ww`@<#T`YMV7@)uRG2mFaIPb{@Bq!U&M`0>d&~L)WT^-oicCGl{`v{`NB$D@+%~t@-SFZ{GJiEzj6)-*4i6)!4&e8*3f+hViYO;~U0J z`wlRl-BR%2=*{a-y$lyCB>#j`Ad^1Jj(W-=74#BUrFHUxF zzSALbTri-1-%VTf5{Jdi_RAi1N{b!joUY@2vtEq0L+ezj?>6_ci{=nX{|ZmuI#zz47^frhn!g z!R?#NZ?;}@?fWFP?^@AL+tqy9Jo?4?xjC;GJy;fQRGD(!bV0iQ1Ep-!%3SUDncb4F zu1}uv;8vf>@`-1hGB>^oakV`uE%Sew==>Fd8m~|Co!DTL{C#8m{!7Omu9&=H?$WG< z*Q2>xn$((>u6$QMqpy3`5A_P)s(&Ya-rkKYxSO@iEV3 z_o7o}M`nh7)IRa)(4oTzk9}ON`m{0g@oVF4uhVlfxK=EY5Z@ugKh1WcW)WxMY&+LR z-ij?B68}xSc1N!5kTSpaMwNqet(8MqR-OCPz7wo zz~O>gwt0&eoJ=`;d}@45>aCpVl9ybBbY8tSm)?G#$1P`ya8_|p@iY6}ZU-41*8}Ts zPqy(o^1PR`q~dQ{pi*1DcvMhHVHj7g#MXB<%uZF3H%>QH$tpH)(K(u@^tUGP+@;nc zHSW^YQ{F@;MT?XzkG7N1VhhU4Kkm|dO)Y8r)I*mIRz`^aUtaTlCHw7*>oVm$PFz{p z;3FR7WhfA}edY|2z#Hl7Kd)p-y!ZESprn`So5^0gK1R5QUQ=R_cE9;@pFJ1*f!0}* z_sjpaW>{+bBKywV1){sZi!OUL-Goa@yG@eAY`4wd$SwOmynC}Ok9*#im4EKCwa+Pi zqo5pSmHAsGRLLV%AX~Ju=$qM74ud^gl{hnM_@B<4cYjBkqxZc3nf5)`e+KSVlrWX+ ztG)V@g>SmnR6e~-{e1`T2C%*t+cd*-?Q!NCp2B7Kl!RMT8vz zxtx!U@?CfEUzg2F?TDVLqNG~IbnH6cyVL3FLMJ)`i=@w2YQHZl_42B5y<}m1x99%l zsR_2{Zu31hs(fd_zF}@R%i`pW&sV$xI%3a$H(q1Ja#CUIJiCdUo|;F@SRLM%9{#c< zWl7^sQ@a57n-%h>Cb0C)u=V!cvDL|k`^{Rb7st5R7nWYRwf+h}$KiABchik#ZWcQu zxO>&BC2xJg64x&MDt(ZX?%?rl*IeDq zg{)``DOL8J-@-G;C629Ty2q8RVZl(lLsioGrrH7quBgh|W7QWl z735c`n8e-X<(TxMGngazrXg3SmXLlYU--s3wMT33oQhwcBe1IX>Fx8bzVD{#=9LI7 z)~OYb3=0kudSLnX>xSKdZmW&L)!bM6J`Z$>@m;Z>`P8;e4&q{a{vO%(XKC>K=lNw{ zCk1$wt0&Cav1RU84-He6HYM>{r3+Jeu0JhY$Fl7D?7M$|Z1~Of;rng{+5GborwkLX zNR;;qF8UAy@iMQs=vS)xq|N5 zVWvwq@=i!qGU=SVMxty^e%anN8%tLoGI%hn@@7W4`6G6}sRwd5f5>MtJ91~~*V_MS z;qx8Oq!uu5*rdBa`m=CKz^#jS4CcOzYhUnU>94*`!nI7PGBdBAnCdW})lh6xVUd!a zllCK%<+}3?WGC`jyttLyr23%e;e*fHe;3rG-H|s)k~w=;<6_wjt)ojqIqU2eg`AR9 z4zckc0BShxId(rKZM600kou06Uw(31O`%y;)vk!A#A=-IpsUIg2;bl{F!qzT)RPZe#GEtz0heF=r?l12Zgagf$!PAIw(00i zuLXL6S>L||t8__qcPw*W*7QH%*XzXV=R5d>HY;hbS4hl1UgopZdg?ZI(dgfiPc+iY z&2BDn&pc4HNAtx`x%pdELM)Xn4@W$(o02v|aov+m|JOctW$W9PG4FTc=Wl5fE*F%y z&fDL5NM+B%Bda9VKl9=3(p&N2!(lJ03DIIFrhf6>o}e!DIH9CIQ~G+?8(nteH&f<{ zYu^$mwUlXT{<6B`sy55H`~HdjtdBZwm#p#n9@`n|dGBQNmc<;jwnQlQUvJ;Du`#k{lVMZ=h}AX=Y>45zIW+sWLt7q@4*x0 z-z{{D>Cd_~&6Z6nd((HuamzMSt7GT5Hcnemk;|Yi+r@Tg z=e=XX3m+fZj7o~|r;n)!XDtl&u{ zE8ni1?|sj%C&l^1_?_;%AGOlqZF0W5*`W&C+&i@!e_no@ZT2UAS9atsw%uQnC2DL| z)kXg;?Fyay{Po>;5$VTgwhM0(*z#zJ!zAV(?UO_elJ8DmkKVZgxTg4!|ks;Zy!{fKd(8c9DIP6ZTb7$hM(mZi>q*1f*&3%UizAtao zeRzrW_~vr|r0D&(MOPk}FUhv?(+=}`kCS$iMfw|R?qq*z?h^ay*7sbCv1|Xd<2$-H zBwnm_czs7^bEl+WmFw!&bB>sFU3$8zWDCEzT4m_x-B+@>#+8@%god|xQM*!|PK zkH0rBeg2J8-l+G`%?WFFS8LoeY}gZ8x&Qb?na_6mH`@d}`(&fMiz2~OxKd48(rXanc}iEZ(_y0f{DB&)WDczj>? z-Fc4vM7u@zZT>{QNxWWt#mvmv=*Ar7X4sl4%BX#eYf$y+2pgx+TQAm{!6 z-O33k4#}l>9#Ah5w0F1ju| zBH(|j-?9}F)#XOZ-$=VC6)ZopyxM=T2l1Qz%uRIDO5-(?{&wC{EEabZ{Z)2Xu z=b}FN1Bt`yZSz?7p`4-5XMZ`nU@(_hWQ z3qQq$c}x=wU8=D4@~OKkrEg{JUb3*FQEx{L_cb;LF`1L|*0#zF>*9?g3^(r=I0pVSK6BR$J~_NA}PzT!(>|9qb59l~V&!0T>; zUC(Y6JFne(4G%n7gtM3AtykhX!>lL2wA1QGmecz?y)H%ko4DHwYPTD2yP$lNVeYSs z>Ly*krM^vkYpwU{V%@ELmaQ%pSt(r z(*{FM-Hl2{Zx*n>aWDL#AeG=UfA1k1|3kkeL+n22^jNO z%A~uVksU=d`V-u)K3D$u;PI;T``7qf`cH3|%DFlJ)Y)J2zec=Qnc-){sW|!0;&tNA z$GwF(g`GDkUcdZ7^z0{r)LY+}HoptrlX=v9%ef;Rdn}6-W~;7aY2w)Z_|u1YMRSIT zzR=3I<-3m?ccyS`6`tJxaw^BNSKzt z^SJt1uD_2mtT`9f$sE{mKK*;Bkg36b;ib!1WL-K9IzF{u)MMP#P=N3AKaId~zn>3dt{jwK1%Wp~rUWEaFfa@25*(QBJJ zHP$|0)1{*7tE&ZVeZF_}CC!_-ru-~V<(;0x8z;+nTh4eJ|8K^(7NutoZ&)R^y}siU z^ZqUC#jnz9j)d@@*8Xt%VPe!Zc}If<{%;y4y)*X@ZOCfqxNJPNzkIj)rm~J%WpCJu z;ug)8PPb8-(#?J}SN*9eXY1-una)+UCwC{OyWjOK;I6xVZc&;p%c+TqQ41EopKHph z$^Gr#!TSpqo-DU0nDC}yCu3}H@Y0U16@p6rGAOyd-gw(UC11E>V}X1 zQMvV|l8J6vYZinZU%z$6i9q%9;?v)S`+N|6>u7a4g~iM8`m*Abk3|Z3Gd+ts&b4@E ze4J6?>{0I`irX@=(y?!|EPXBx$a{0o(^L*A9FDu)&%4J?Z^x|jDt=PtPo}^Rr zHw5$S&QW|Yz5lq##ke~52_BuVi&7^|`+xJ^^@SP@y6*D#>Tgec6Q$=$5vf( z{h9N5CC{n{Avfapm3-Fz?;y7`%;r&X)^6*HMJ#c~H|pxxmL@(H?L5rzsNE;w+>b69 z{iF=3%_}!FPn&bRXHtV??dDgTygc^%L^90Tv?=3a!_?`=4}Lx5c#~h0Ve+}Szs~~? zB??YnY_m^!`+~orUANzM>+Qc4Sl1uT$MN50k=jgAb$&I0qdeh9x^7MhW<3$I$g1y1 z`t-}*$IGh!R_zu2r1EAz%h5>p>E?kRcAiNGB#Wxz{r^}vE-vHmkooU4^Vpu5nO!@Z z-T4=UeVyLGWMgN?yVWQC`{R_<_a;vx{`JWIywP&(z1hMi#zu4hxHMQlohZXr-M`>< z$>QtZyp$HNe3)S=bBF7b={j#EY<^}N3C zj>Py0Y8G$Wp>AjL{6N;G>W$M*cC++&&x%>MCNfuF{N}&AuG=Qu)H5@lDIu?Um?%(PjC2<^$cY+u1pnmUMe`-3U5aE*s1ozV(39#?7*E*&Ky$vwoK*N;%Hk z%2v8hhi~1JHGMhUr=8o5*uL*jX?vgIj-j+2MloDl< zPmd4gjJcov+oF@_(UUo46FfI=yVtor>u-myYTAq!%k!TXqby|E_cqpDg^*^?!@Rloiuef-p|$gh5mO{;AE>{+G^t(FCzn|e?GXQh8|Ah3{a~qI5c%VRbxo3ok(0OA zqsl&UI}>y3bNioX2)FCx6~gZMvo{_`Jf~=b5(&{4SomCV%GpuNKN?CwEJIk?X&ddZ{ba z&AV&!-HSpW{yY9<4_^HIaf1B4w&wvFEB0^P%EzZ{F0)lV?d=ZToVAW2TLf4wm%a|1 zm>gf2d*g=f6s88@$~XFwfw$74&Tr5NzOhC7s@VVR?0DJCPx_Yc6HR`ce_-T$^{M{% z&hD9>b_^#wub$}^N}chxY3CP>>d<=!=NmkY>A0i!Ezow;QiE&BN7|00Tg{xqQ_vB{ zQFzNRL)rMIRNsftxknuPJK5WsPI7ixycFJL*xADuz5U`_8|J%i0b!puYACMso%b!& z@XCV8suO26c>Vb@Nm(*z>xm18UW-b^eov zHbdL$`-?>0upV{t-m!I0|K#i^Mq(2RUa7jz``V~{=1l*QkX&oK1|4m-$vod4KH2qk z%j*@q(_2@3Whl>luX|=kPOZtKR1)h~{{RIztC5ng|*{MrwZ>HT$U*`7}jXpoUm4BDP^ux#3Q)!lOp zc2?N&oDUB>X|85&V_72qBwn1ISy1R?#$CRrm-Yxunzpa(lgft++V6E2@P3c2)+n#@ zc=RT@zy8oG#Y+<(9C~Zbu&`{wb7mQ>w|kjyJ-w?TBDGyKjnO#w`KL1~ACvd(%5)R( zT6`gPH`6w`3-{N?-|M~6y@v#FL~)&Yj>&d%lX}RucbJKaeiKK<<@pX(=<1YuI@#K zF~UL|eJlrDu3SI;n{USFZ@VAfYVb34{#GdO$kRS^nfR$&lm6W8Fm&+glJx3aZ)*8N zy{`V2&!(lkQmWOdO{w0KmdCI?`x>Q_EpyNQ(DVB6lcnr8WDRZ}eh_(euFXbSzkn$l zL(iRkef=Bl-s>MF!$@i26>*#8}H0p@@3Eb zX?oc~di+baZf#t5;kruIx;9=j&FmX2XF2dgmwCDWZJ1RqpiDa{Ck1)_lHh%y9(CFA${Sqr0_U9z{@VQ@HzkS`+`7XOSerqK11*F8KERC~yVj6btU*e|^ zYZrH&5}0$vO4{JyNxAnnR$J$kRkqhit9!}pJ!ZK({oUWa=hIo(E_Iixu{D(D%{Q<< zy+-TZguS!-{XhQQT-z^ktS{;@E5?Qw&PVkh-a)D~z6 zNu9pXb~z*^UQXcU%F3^{9OBH^qjf4?9kg=#TX{R@+AhaVK?##PmCGkh?YQ{y_>t4G zP7C~$esOlS%wE6l_bkf}38tBiu}ik~ZjMh%x;AM^hg;tL+do=Dcq#+z=f|42f0?Vr zJimm4t#Q&N^Qi`=qNjU*pD8_Fz?qq<*nIt;k>RfA!V{7YZA!KY-Da)TZc-{6!qfKS zch8$oADV3>KN;R%ws+U63kRnetzltdiJPo)G(~+=TJoovg4Z^587fRwlh^UQTNYl$ zzG)Lz<%B?|n^RIOIVV^c+1#5fB+Ra4a&Cr>{Bir$PxLlFbXiv;-!*&B<+)F%&#({K zzi&0m0k4#+p4)ck=R8~0BYWe^sc;VQi17Ujyo0pln&-@Q(OzYw{7S=P;a<7v?>rAq zm=rmk@#0<@mBuZJNK#=t}~ooot(5W_gegxKSkY5r({GXw>Ty|eS7fm zADNTZ8nIt3{5<4l)R`sb@QYioJyuj{nA0M${P2GL!@O4_7Z%;!!pG2X^}O3Ej~N2a zAx+n__6Y6ae3+HA^n%OoLWk)ZbK;GYTCVPWba?N|(>@E{I^H;+wP*Iu1mDhcEk27x zR!3W;NlaREWTxZonm25wvpe`0?tQGfmCxg!lgR3GkwM>vKb_XPcC%aqf%0Z|qh}_eY#a+AmXCdev35 zFI|hgv1h}|m{g&Vw^0!h>bLLivzozr<@3$c-BT^|*7!tMUwE6rbV}{rqo1AmKA~UV zZue1d=Jhjrn<4vn$*Jj8^Op(SoHWgU+vREiz7j-88 zSnq1I*Y>bFhvp5Z%B4#uS~)XTvp-jFIAKz~yyf=tCe3+!_r@-qsr_a3yS)?arcMc( zD7!Ol#rY2A$%^s35tCgcdNof6zPC`ExpafWK2{rJJ)R%gOp+BL>^yfpLu|7Z!_U{c zwJq*ZzPRDO&ClKQx5x@hT)V}Je3`4c~Qz4dTazPcu~=3aKn-MeR3 z-<-s{u}F3IWkaEeHj9NRf42OwPO|gL&*l^ceg3I>v!z_7ak7k=3`SI!=Heq(Q<*~NY4M$hZA`D#teKV4S- zccO3gqBW~Ik~*W}xrFXAOkEtj^4KeO0<;`84@7y=N+*IoJq%Gyj(jCdip1(i#Y}@1~ z*`7{s8u!lmn-sf7s9Z7S$Wg7Ww(({A+Wz`>ZV>nQSvoB_$ZOqU`P(e_zf{X!)hNl+ z34HvaMWC8vg3l$>w^y5MPiZdyym6;<-PE@1{ca+wo=s%D=vSAM+|wfEEq8DEWj(E= zl?{S(+$(=ye#iXomtxA)B?eme^Gy~mc~)BU;d@5U1`VacPCvDI|3cMb6e}f8c>L!o z+Qs|$7Pqim(9~AR?@!#W1b7}Virx2YCL?u|CcSmUD?QxYJ-8-C@=jVC{Y zax}m~b(E-G=Xf zr){oPxAP10es=8Di!k;(XBwl=^eJy&nqXdglb zw#jeKHDPmN`0Q8V^?tL;y_t0p2ZRb-qYm=KP1CR!(T=*hrPTP?7sWU6ZV~_Tn101R zVymCnV-+ipvr**bRBxr}yX_*NRC6W&@ zCJCJG<9Poq`c}W#p$W2QUK{mpKV1^=<5AI3UGq7uVjHuVX1|vH8u}n_imuML-0a;t zS0zuqyS=-y{h-g0xLs!ZnU#7L^KD|$lDa!$-pRtfw(dFz~Yk?@4hyYA-#4A&kz*0!PIYge~+UVKtt%KUr$d){*{$SvEn)hMpK z;lTNP-{W&uF-yk&$e78i@Lg9;YvKE8eG9t#vWuSEM;}^!ct6)M!-migie?=A_Pnq1 zIA)h=9NQSV=)_zHy|vd5et!98=jW|29WHT5*(n7c@3)qcHBL(moZ?xZ`g)0rZPM1B z$IiFjXUH4X+iyR?<#9^SyHvePQK#)x%f03O@7_+iq&D$;;#t(~)C3d`zG zeBQGwcUEKWB!tN?p-Qp3@;pDwAaYrk>+REA`y7yduWww`Pvf)zBWpvSQyt8 zevbN<9`N~Q`Zq}lK`X9uCr{z~{=468TQxISrAlDCY`lt1*R~12tX=l+;9U9siK)2F z|J#)l62yb{&x`6*n9wj^H-shKQ9w!~yRxci`EkQ{3(Sw&nm+lr%d@^wU1dvpMebp5 zkKJA!1rt_Gww$^B<8+V39sL*G`mg`2U;9p}T~SQE?0vGz`+ILi)kVD8ZRA=7ncbMS zT3Th>%$ae~rN(w*YIy!_mZcWAwcjaNXd8I{+;NRxo+qGXVN-e*_s17CTchjw516WE zOEYc!{LLivl1sq04|mqLX_a(IcyBH33VCC`Z);wN@vT7DYul@Dcq;`m-#BpHH z2M@KoF*lDrw=anDtKXOQ%jpHD#MK+RPG%dne>d1x5D}DBSp2enQtgN1&leq?&KdKk zRd@E^iLO^PGp4@_>#>dqEh)>17BqWullimB$}iP{eNs~v=O47ZVN{Sjd3DgXNT&N- zlMfubam+9v={jTcS|j)H2!Fnoxyr`%t$G*o+_!`;d2aUnrQeO(AJ1-|`&Jnc^3QZR z_iW=U|F%4me;PMYI5zLUiIuv?+LOT!%xOlUb6ur(zjWtxaEom|abeyH9?_F~Z*V!< z2?$Qu{{9l*f5A;{M$FrCBaUh;*?J~1{CVOLo}jwirAph|r~EG2RyQ%})MeGke4hl_ z%ZC*_T7)7reoip#U42n+m!nXl^a-tC_T`OgTr4sk5M~`a{LTBQr&!?;n@G=HGBMNPG5)@Gn6}yi%9z1x@UfXMVeTN>P@`d&_>tRI3o~9o&W4 zXS8n4DeHF9miH6X_+jM#Hpi{uvB;r2U#H)g?bjqQwfJd_ya_*Ra?+{GFKv}7xeNm* z8??;&SbFmg^ZpON7`qxyn8@yG>uPpqo+(i#{o66OoN@mq5ABaWTMk-1J#{*zLA+4m z$Qy0@j>o#)YcGX#zg^8+Tqnk|?9B1$NBX~<5|LKevE`b?!yUg{YR)TmPHeX*bLUDp zr6aigr`@N(i8uD`5r`>#yrl7e!>{D%&j;2t_jlahTK?yZo?(6F9kGWR+kV*m_5Z() zWpby=qA6=cuE!cAB}qB`wrI5GpRML$o+-C{t?A*#ClBvib;pJ6MS-_t#NJg&G1_nE zG;!U%EcB~%-K_FUx%C!fDw6$ldNb&4eIJ`q)-rnzw8-;52eKjwsG>$4g{pINv zizLUs(@j1p@up6DGHxwz|5^~kXY;p6wsdyoZ9l=}T{k1ckNr;k`c3kn%^DYG`%{Id zCEC86jfqQY`*nw{I(c0#->zT3diKWIDLXHpG&SPd4W@fRED~#Y`aWcpPT91GiTjkK zQLtF`_Ie%I5& zo4Hlp>$K$qx|14*Y)XQn$Eid zKHTl~%Xbpz*)F`&#_Y^In`ZCUzq}ULw;L}Mvp)8E?pyIAw-HwN&j&xQ2 zTP(_No@pg?PHXeoQ$LQcyc@zd<)imX8Q*5H7v6{`6{wJ;5fSo!zsC43fsS$M6ElWr!By- z+^xdsQMp#l;fWmC0T!?7Jp2^P?zrS!HvY8Yd`W26?U^wVu`0T%;hb)-lDr->gfDpC zFfFHE=E#CSVFx~JsknNQX~Qkw#rJmR+_J67n54DKX`d~(j`GK_IEKvT_IqqxFV|*H zZvS$?DSYEZJ<;{@SEcP%7ysCsP@dg*pJP^H>(A=0qVG@6zi4f^&ny?ZZ|C9VESr@~ z`=0Sk_FJH)^dQSVOZMZ^?Sj|7@cx~?ZC;#?oo19p{Xr||KVrqVgQqau?c|;q|HWWu zTFYndnF)!<4lLQa^ld=vd)A7qOZKMu_F|igS(f+IeUNWZK3u+>&k&G5Z?*?1wV;l+0ozqD@f`6~Zse$`=}SzEt0JXT8k)p?LZP+hhv^mer0owxI4 z_PgAx&3^y$#n$!e>Rxx$R1M$ciIkhoK+=AJzgcjZVncF!lG;i)-6MZ$MCuuSLp0B6$)!ThiU7N)6=s?txCrhNzQ)qgnj*&mmTXm_TROvkV$1#v;MzzV%(?o)y7c{ zS9eEr9f@7Ld}1iic9T^a-!1DVHXm5-b~E$(x|ciUluNRHnVevpEqzy2M&Uxl;oH6E zJc6^hbX70jf4nE>!H46sQ>EUBl)SUJJZ;zKG@+MrA&wD~E12af?B-3MXm7Y@M$2{P znd>H%Nbiw+bnJ~$B3BIKi_+!6CnpAc&==H6VSj#5WsB=oO^u+%KMw zck!kVFJ~I8iJ9(uL8g;i{aWi2%L}*GIb=7uG>A=olfYvs!7&WxmaN(fZc|jejs3hzQjy%r~*#o}PH-WW;i@ zB}&$Br_{$B*|77OWZ9fGxgLH#t7GIA`gMORcxvKknsDIg#_Q(q+iz@JBp7;~|M}+a z)1C-Q?L6!k*gy4a_&izJW+VSKAu1a(ZF9AJCj4btS*yN$!D1zr{AXhQ4kdjPv)|7S zSQeCd@m{+80tX>Y9-W2%)!io~)~-6SRq2zWU}PQ7_ha)i82?3iy}u+o^Yu21nZik{ z!{r5i0*gv^W!=7(yw5K6&(Y;7{N@@)cGjy{=Qc69Moze^{=(>Rw#3Hti@)RicQaqJ z>CmyLKD@{I8$*-Fzm~{JyXCJiWQj6|xhl;o+(HT~$8cXOu2jVliJd?|o~q0^e_mFS#ND9Xx(1 zQ^S{?t~<%B;ZYp;Xr3q6xB0r;o9&bQoX;t^KU}=5d3)3Ki4tz>?3r^Oa2rjSvHtVL zu6d_78+?6L*8GSw{?5}mcJ99q`hDJ%nRwzHmyzThiRTA@FuL!w<1RMu3HzY?EvE95 za^}fP?ML2aGY2)*y1sf@m=?bvbjP2#C%Z4$xy`yWW$$enj@xhB83VkfKV@2+x#8>l z@217FF9mzFKApR>~n=%%-atr_O^c6a&CcqR$eJPbA?O^`;yFM+eQEHVX^b$ z`G0`i!;zP53~nN)G@wuS9`O*#9f&lC{J`dL^OHT_csdrwwi znc<)OdD2T#vukbcEPCvo%pjW2tg+^HqBCE?%N=*i9IcmssJ*mz?zGNj>x51oYEalC zXO@@GHkaL&ne+LE4FaE?^pS}0CsBJ}aYo_zNi++C})gLX}=KWyX*KbD(d{pjUS-JkG z{HxsMt|y*-c4xXME3oiJhr-)6SGMiev<{q+rq%Feis*)GJJR-bZecI4S(LhH>CKo2 zY2xZ?Q4H2MYl{+IX%#6hW~(zie<=6uZKlpc$8H=|&Xw?%Df-b_@!KL>oVWhJ#rty= zKNfzRefM0gL;32JiT?R>ciQrpF+FqRZ8`9=N#oZ>9!ZPPxh!G6K6<@8Z%+j*@m77d zBsX4hLb-NJSM2rQQAhXBlQP!$_g-P%N7>R3^{H|Z?1|qM`>L(iGm3>ZPjR);JzQPR zKHWLk^%L98=T{^9qg{PA#fp?PPn>A(d&2a?9VTP#dvC>pHhJ_MZg}-no2BsItjo(5 z1Yhcxy!@Nd?Ztsx3#&c-Zz1Dsc=D9Buj_*GasI#ZrvV!G>EHB%W zNrmZ^tI|##;j!4lGWY(g^$RP1eR&b}&UD%B196tUM(3KJicua^_YW?->Ya2()3V|E!SJz&ddR41h*2gsFU&np%pNmVZ z_1@lLxn|wf&1tE2v{Y+n{$`uaKe}WlUw%J}$C821T|sPh%j5%9;i2Dd+Kb*%UwLY^ z)udkvy%(BnPEF)DZ}{-O(fQ8L&8^j!N-rq3uvo77W_5bcY%%35i${Cxe%iRWe#MfIn% zZsW<_78Mqg_x$=1)BFjca)&%UPDPg% z?Z3G};$YDH2~1ALf4;Dbs})*Lu76@`HAQKf%9Njm^O&8tW$$^Gy+Mj~?W4fQF{&R+ zS5K3VY?3~7qM|Xu+Vpj%#DR97>HMBEwGW?Elv=u8@Ran8TfLQS@mxKzH=n<;(Ac}) zv}pg00_9UzcDooak1h9?xzG{hwD@7r?=uyv6EluWY3c6^*ra5HffhoaXtaprh`oT{#@=i;#sUP-G?2OHxtHqNp8N5lnIel?YXk)~}m)HL(S^Pg#ZdNou;LnAd zUt}jZ&yN*7I&-`8j?%~llTT^swp$tseJWcTYh*gZV#c{Qp^8(K{&216e|xsA{QjrH zr8nK{Bo9T(|92|#UKlxX!)eQ-S5HKyzvxxl9FJE#kH4Je+ix&6?e>Xh z@-yq+^`A|9YEhGS^-x~o6w#R-AGkgJD;1;ePhGS~{~_azA9gOge^{UJ(A6m0XkjV$ zok3;$lSV7$EBzDiR|u!4HMN`;c=X!r|AaNOFKzWaT4HJV?fH(4f|>Oa6(>DEZ`y45 zMf*h7Nq^tG&WZNjcdkW*I{z@}I26P5chmHS-x51nCnVk1Rg1k;bBI&aX~%+!Q--&< zZ+j5NbL)+AySeGo_?4Ok3L7&Hx}+~ppZvg4q&0N?I$wIUZQD|F)*VNGylf1=;BhPe!8dt4r{9|NQ-b58Xg=4%rf|hS ziBskJD%fgcD@-%YUVkg|p7SSQtI?I->)}4;=6o*>m%T~ujuwc{i8gIYncS0qY8h*~ zNMu;~!Clp+{#UZfW0k`guFRL5bZMK^@$l9^?2kAPl|9TidivbsSoP~K|2o2NGWi|r zt%=Qge0LS=ED5&gO*6_^t6T;BG@JVN%e`;&jQjPjA+uilnxKi|EA|?Y4Gz+ z(pQVJ#%!aIt$Z4DHdM-?w{STfa;? zaWilC3l5VtKeq5~yRp3^NO<3>2gfF~hfnpG&H1;*?#6w-n-8_8soL8eI%ujxsrZokxCi`^{Q-pzrSWx2!_>+)Ey@b3LB4vFKiz=uE-Ye_6kYT`hJ#F-xsk zZo!0AzrSu+y{gqnPg&iu}NXwwkQXb1szGzR_LP{msG$^FNhoC$!#}J~en%{db$oY`-U*u$Z|0sCh?Z;;!Qf zS=x(pd5vP4rGla>Y~N6yqDZR zb}FgFZ0Yl5xl`lbim&FK`QeC?+M5F{X7*jl2FpGj>UsZ{H7CjX>!LQhd;b$R9r4mw z!W3$*&S0!kF;6GX|K*>beVgy)#xq|$u;WPJ&3rHWxq@Bx)ncDc-aQp<%VWu!814W5 zpws@XpNg&oq|SXaqx9C#kXNOx`!daUUjK8Y&UGK_7LNP|t9TV%i5CxM-k0zxk$=JW zqsY)vD8#K>zW;&KhpkipeY$r34EF{twpD-ilxDoWkQ8%M`C9y@y1QZ~VJ}oarEs;( zyByD0b&j_#F{|N_f#C-2_VBH5b7uAJN|#93aO1^7n~x9Q*G25KT@z6{+0&Rs?%o>9 z>h=YR&mGQhU<|K|b6Bs!zc0M_Z}%Q~9`6Zuid)z3u5y`vHaE%snVjFPK%X|LKCOeh z=g&Wyf7&pv&g4=Dv!Ox5xubzGEP^){bY7fn?!eoZm@eTU?O3&bYy3X`tFPiGJ@NS6 zz!|*#w!wdwYnFX`wpo{*i=DuwqBZqn?}gT?N>krSN{;Ds_)?`+oSq!lV+$63Z@}?g z%*wG*u5Z%(qxbc^mz+8=r$$1R_2-hjKP`J40yAq5bB1v=p6cJpJ7rJBnd|SOj@{d! ze&g1>gA8&#d3!$v=Tz~8N~9X?v{AfvJv?Xo`iywySMIDo*2zs=-k@*kF3#s`?^JLg zr($Pn<@`Nnw{p!Ur&^wjne^uBajEoEou}4m2py20_C$AfqHf{OZcPb)v{yK`n` z9?Sj{f3$d?*)H;7yWMl{jqdGh{26XDGCwIktbVMLZRw@YH!)nXC|t2{&+Un=vlG9F zdG6s9dbzvn@yjzO4sgT=%1*3URq<`6z1~lWdFCR_RWDiCtJ_- zR&vVK(70R}?Vj>2d>O|96WP=&cgms<`G0ZaV4Ub=ndjRk5OQYO-=c`0#*g>9Uod*N z@-+ka}!ymBgHpIBu>=-!3l{tBxV-*+g#LWN zD;pgyF|cd?jFfliIdWe8dTvn5lLC%8N0J}aX5HoW%9VX=lNf9Led>PZpUSa*hXp2; zZ(&JOE_v)+_x*kFYjMZ2APx6zSyewQ4%e=6`M1F1Tc_d~KL+U~?>`*&TcZ@efh*^= zavl2tncb0(_leXpEp%G_Pe;N^WKOZ&-Vs$SxMD!2bIyUxr*GyE>N?tXIak$MZG&&^`#8Z%A{rAwL9%=>P?*P3M( z^j!Qv!sV-l6D@fzrdHhly3w`xM*D*wEf0OGm-c_DTg)i1qAfvO#Ax^D8qJQkA3UC} z+_#bW0S}Mlx$WOJUEQ*_YWuGSKYiJ$J1vgi$$o&CUyF47%!O_Q$RbH`NRGTWOmx z@#BZnu57pM8pZ9;0>5f}ZQFD4Z{effe#A1?8=aemsv zC-6PYz2WMbz0v{3lQxIV*kq?iH=uKecmc}{Oc;tz4b-A zcJ*}2d$&y6$9D1Bq|5gn=m!2a)q3{9t8h+vk+GTi5>>Z#f1faN2bUMm;pk5*z5n*u z6^`nh9Wm}NK50A@{~k5LHejMe{VxVfdw4Qq8CPZ|}b2m3~tG zPIF3g_a~*~5;6aUtdd8)Svanlto4eUx4cu)ctifSAd~iq4=v74?>Oo=t;=WghgFxv z%BKI0d8K|O+~Uc_b%8$dPJRgm4R!^W4maO%%6Z^9qsdtBrOT9yy|LV~<_5Qo^>@Fh z(^Z`5vZ$@&f!pfB18dv=%TCG?I(=)c>zWeI7k4<%SwA-kGrTiF{`Cz>H@-IpZ*G;% z&|IXbaCL2X`!i8-1$*T)hQDX7XexYa`Z8>V)jsc-ztMlx^JMSpw$^>!SafU#Q@DWI z^HLjel~JTA^MTWYRkSCc{)k?E|XtYe;ot-0EFc>asdGl%!F%?-Yntau{C#QO1%#fsTIhlJif z|J65ZX@Z)$giXt5_ucM^ew%ih$|x({yX)zB>R604{}W%WEQcEriked`_jTO9ZXF$V zERyF-X6(zdrk2En*^MhsygZ>G^6_Kg!b8%=bEDthb1viy`W)z*0Yu3pb25Y+M}8S@yfUAt`S_2mB|vxc~L(#praol}@TW6g^v0#O%z({0%dQp@YC`Rq+ZT0u{$Q_-Esro2s=6-T}0e}4IB&a|SBIV;e? z>zKg#nXV#d81I)oGO_dC^oMmxcI?E0Pl`7Cm;C+p_WYl1UMiMHb+wARcWf{hmSSv= zzww{n>V#$fv@7)2Oo?^I^uOjOrbKT!GaPfzoq^J;qaM>jPt@p&lDSJ?eGt9<(V0LS$?fs>w! z?GcaWT1DlX17w{D_;I?N^;-TFfkO#BuM>?ayB|Z||5k=@+~5TBfCPx94(ePB>+dpf^FKHw^(}$@diZu$?Z>+;swGVFHIs!o8~b+YNV0P2mT_-u zxDoTD?$V)md$Llq#U=$YteqpxXBc+bPW$5oJEPcW>> z7qL1Jkn1m?*nK%$S@qY=!fhUFV!fl5U-~e`IC%Rt`?r@EHixUxr^<^uB#864IfQi-~0Om zTW`*S-Ngp)x@x?fPVQemVa0dN%J#QXy3)ya)~O_g@ACQi=7pG)w!V&V^nwD$W16)~ zu78fWe%&-ve}#Q`;*{Gvn(jGuH?geWQMb!6%i_N9wa;hRyImIU`rKsh`)8BYt%^%$ zWj(bWo^@nIFub0kB0u5TkuZZvzn(vvw@UcZcT>){w$Aydjd%YS4r6s;o}S|#`0}*^ zr&N4OUhJOdw^wWMUk{oTIQP!<2pv7Eme^AdW?o9!{*B>w%l`)xXQkK3{x4VP-SfV0 z-d1PxPdnohF2%I8u$u_&zTI}NF(Sh|ZNBTz9eZTHurBNPvNZ8C`$vK?Tm3vAUo-m$nR-NGg@b!OXgM~qk25;lqSq=+{20Ix2t|(=A`E9eO z-^^Ui&BooCU8O`1HTz-|x_DkYeR@{D>UGG_NpVVbFvmnTAcDT zTK%ih^V62sz0BrD%B=oV3wEAWVzJ)1)j{Kd#%{lDbNLeI2^+~=%(ht@TW_|kDwvC> zi-i7JYHJt*o-4ks5cXK-@)CjJ3 zZ3!)TBDIr;Upr{p)zB%In+{xP-+k>|f~8pb{y8y`R%K__e%Su;M=O_4pKNn(a@Vn~ zj2&~5g6^#Fe-v#}6@EjYlU>GR&f5=R6T4dzS5CS)ZPvLs-s57u0iLHVb7y*_?sjUO za)_f_o4?q3YNomG^FHC-C%qM(v`5%zv~Rioa~IR2x6jte3NhS!5KtR)@j{83`JS)| zitECgEt};dAI|&7zI(QLh4=lH%?FdSB+V~Ian07_`to6|tO&Qfow!TI->mPI%<~sd z%e0nZxul({vnFz-!HgI8{`{F=;y5vF=G?+0@zR>3dM}o&P+l1z*m2C3QDNN*gU5QM zm9IA_2>Y3znO!>o`Ryv&(c9$RB55aHxv;pmux52CInI+x|sWxbSQ`&osYCbzf0;ld+?* z*5}adh5P=W+8S_y*-n6U`d*7~-4k0p6)HCiS5AFw;~n;-^?TFzFFCgll% z-K{&zl%Jhi-a4b^K()4`nPB$Q@;T47dxYO@72!KA_T8&#e)elx;iGM?Uy4;?p4n#Z-YTiGDJ-qY)8yv9 z-VYfEb9+8;-iUsxtKK|EQpdDyP4V=SSE>!utaB5-J?2W=o?Baa z>Dc828KdWGO%$%$G%~RX%Fo$5<>A7EcTexwy#D=-6-{rhw7oVds`#6s8Sl+}m(Sx) zsB2Y2i|oN*AvM7Uvk#sJti0-Pi+%noo4j{zZR+KSxn2`@XgBvUN{G!q(3iSqmA&Q+ zMrIbRt`CoF?&m&q58Y|I>&)6eciLZeI+q+bTK(+RnRFLc#K}Yincg4VOss&YyQ67(VK3(I*>43QgaH|kqtcV z4wquQmHXQreubQkyQ0c^?AFgt-GAQ8PR%Tqy=9y+!{OQr-n(0-Bx=N+7VbKu!F|m) z#x7ELLQveTq+PdeuYS1Ee^J~6?5G2b_-3mts6+fP2fuMG{VJ!5 z+PZ@du6#GwvH$GW=D$(VyzVKhC;ajI_xzw*V}a~5{SWf5EiLt|xq4qRtjOY@lIQT^ z>hqT~`BE+w_Jlt_=C!LXx)*AyaPQMUYp#Qf~Yh$iNNuX3>;Rc!L1N$6* zPJZ;=rC{cqk5UO9w}ra&OcUQWM}1HK8X{}Ft-@V9)*-}8shE>B+MbuGX3{0${^547I z+s<%J`s33TE%rb>DZMmpQ`j`4H6H)-zFYY@yg2;G)Ax6))>4D4a}$uQ%W{I*r{)!>>Rve$C+tA zxLl7_h{@hCk7`=-tE_zSo1*FLHWwcRiCR5;b9DZs)kV|JugmRAu0DMANn*UY!!bq` zML)&`g}aP@minBl{!${+;V?_ab>`ls#d@Iy3uk@Z?JIfNL+$Pa8@JM@LJ?(?PcSOK zXwCPGTq0sSX~F$3M=PWMJKMc+u$$ZZ?vu8NZ`f+*hNsU<<_Pe+vnn05=wJU{Vt<`` zPQ8+;%szRm#=q84^{nyp*46bYzTx7y#PT?xFU(+{*b~tmV#cb;|Btx7%@JZcqHs`i z_1ay5Gv_kjSYf=w|HtV$ypKyCEO>GF(A2YxM|Yfj+v1^q?Nwv7Y|X?Fr<#wa=IFWH z?%%!r@YMh2=Nyx+?fT4dh2vCRbo~!Gs{lS;r3t(HmIunb-@f~taOy(tchplkmzb|R?9b4uWgjKZu zEYf=rv?p}K)Z!z4sj-=Nmp?bvPMzYQr?GH#Q)qN1?-mcQzZ)(uh}&0px^s%v?0IfW(f<6~%r5=Cvb@JM4 z?`sS@(znH*P`Pe+8qJAZ*RO9aJyM5MvB`4gJJN=5~%|FhrpRAf$d+h`jw;lNUO|Ky~Ma-M~g-JH+vPR9z!Yc3IisXB7 zAO97p)N{OV_ooW(hv__;%a^P?w|BOR&1JaiBlqzx_Vo}3QOJt|FWNcTR6yAI)Q7qBSxTWs<;qNP6 zF64aABJ%3s+LbD1r*>?;y4?K;!xqjpves?s*7cTk6YSqsuQQ!@XAReal>UQfO_Z+w z6Y^UrQ+~dK-BRzY?UbeMclJjM_J6GYpwV=*<4S7F7GwLhC)0A0MV(jpec$HHa94Hm zoM$Y}^Y8a2ytV(i+ric#Yw3Z+h^Mb^$St@SoG-5Fc73jLXWAjji4E_K|K73l*&h}s z`n2xglh!-F-xt2B(bcrlPU-)e*OideWH*!Zy14sK@h`zHtdpgLx<&2xym^%#81#7w zua1co|7*qNAoEQ|C#;nBYFhNSer`IuRHh<>pABVl%ns8)?xbzC?eJ$67-t1}9+opA` z@WSc;A7AWz-6VO>z@ss5qio{`^Mr5gKA#QFW@ZH*xcy-9mVazU>)vQR+VU{&QUA>4 z)>{wl(wBeCx99Y=zq#$N{-hjcoVM+9`IWl*W1;c2yHCFOQDM|`RH(zN`Jjn$ah2$P z|Fv#UuN<6}w5v}|N2+Z1bTxy*T@Ilv9d?eb>osojAK!LfGSa6c=1Qf``uZbU*LB-> zI)pA;`#1TKj!mM>CQ&oj`UOzoWyJfCI zcQSWn&qagSojoz1?a%KHn^uu^auZLk$EWYom(C|KpOFvwc1P@J%ENyga^b&g?(GQQ z^uUQ>{SsfF=lhIqoqS?cUV8lAH{q}9y4GQWUn}Igzd4x+1{xcOPRZ%uXzjzR7w2)s2qoOxLL=(?6Z?%bC3jyIE{b_p&WV?}eTa{Z*0Y*tO~M&!hj=*gyWg-Yh40 z;ew`TyJBAmtuhZ1Uaclmw^HkE)KcA$=hqvZOul?S-;tqFoGa+IY3Z_x6d}!%N35*s zh4{l~UPv~Ksj{|D=A3>$;^U>aL930f7nX}~UgO@GCbJ;Bp`~TVgCfg|XZwF_nYr=u z`(-XCco(UOnMwTUOJ@+eJ1y3&(ARcKQy8a6(!KoIi}!CyygqmB9NXW=9UV@e-q~q> zdebk3TU&Kh)@T$=IKxolG;jN!GO6k3_O`v%VA>g*Vg2`#q7sLx`lTBi3WXbW&dmBz z?WdOYr}v6fdXkUh!l;Tb{2pv;7CR}ecl*6=5$j*RAMzI}rq;h}eBCjl;w{(z6H!Yy zzU?@%Xz{MKJG8Doc)o;5RK4CSR{a1N@{m%U* z*sw9fWX-!5Zw1+oJ(+JYdBv<6Z%$9!W1Y;u+ded1yc{keTYq8AM~xe-m*n<`eDq1a zsrJKG&pb)!yb6c)kDIqSU2f_ZF)nfnaoSbu_QoQX@mA~FNii*ZN*tXHx;T;;{A zuZ7dw-7K*7@z)Jii-o%X&ozB?`24ZGA{;Xm#SD#NBA&oBYpxGo{q=U-VNx(-Orl)%wu}4L73J_w#ur5S6_%{?6Eth^El@3^(yYVl|3aQ`IEQ1FqArl zch7J8-Z^8%>38S%nJ+Xve)!o`mt}MKqZwF)m%a2|B>VeD+u<*6H9NnRp3T~`=EqBw z_4~ek-MeY?G&kpjl;gQ?+Aqd-GD+_UnRC(U)$TV&Cw^4MFMRoX?XgSh3w1Svtn*h# zyh*YCF5~yDO_Qm=TppW`gEqKnS7p0Txa+j!NQ5#@@>-Xw||{` zlW)3oi8yQGY`w^zCLNr2TBln6O+2!%+nwv;v#o32+xj-@w`wY838vdjv=Ta%E_HEI za^|))E&pbncQ>#8n|=58{Uwc=if4FsU(0n}xIj+(t+l}1>HSxD&M0QT{X8M+#^H5$ zg^P3^O%d92(6)^E*_#Vm%Ja6C%0~#a7Ra)htX$9h`j=$1@`E#3YaBm?-+$yNd(os? zM*3{Ne_Ah#?Z&t9%OA_^k5D+&B|P=zH~a0`;hm+fhM%ini3RX0Wo$LII-LFTzPsy> zOAI?7M4HZN_qB;rDPRo!!*zG@OV+7#pL}$(wUjqow?*irRKdfg#h$6rrV}#lU%cQx zENdPq^=Y+2me%*f;!M0JN_oztq?~e?yhBxAuDPWkVp}5bD~FUTeh1Yo9cyguAFn^e zC#98KE5<)*D$C?Do#5i!AQPXL4kw+CoZKjte&Eal>t(Dr+#N1YS#kL1y%~|k-5qJ4 zf_0L!J8o}S5a1^LeBQk9EWhLv4JlLKMkU=+R@xKg=<|l{dmytzYKRQuwutus0?aE{ zPh_lJHuo2+>Y*Fyi%)DjwR>~<>pHVVTn%b>Q|DJ6JMn1MkLC4WGqdOPG#_G6xW9af z=$%ean{9tL=64w-zdiLq#k0wKKAdNU$4i7ZCntQHxS{%Wm3?GtkbklmS46{nP|#$eYcPB^M{>s z&wK?g*ozzSEt&DKI*Cg!E8_2@N%!XRc?`2oa z{nPqIJ84hyH<3jdt!#d$R3;o-nvinq#H$C|DL?c+tEk-ZU6pgw{Fup^6!}RNa~v2K zzr1^5akRhoH~zIdHXMFYlVVnHv+9+;kH^|0sXVtlc*{#>Xlp#2sn9y{-R=5(MLx={*zn3JXZRRLx59=VvlEC z$$#BUw>M2orEa`WOP49OPx(=L+ho0J<@P_kpF9qnZQFNd^M$Ye%Ka;fH^HD$IzPVdT^EeHS2d15v3qtWHV-1%F+Bz>4xy&|odYu19h zsxoPR3S}7sT4&CjyxQ*fac^I>&~KWzUI%ac%_94u(BqoGa_=QePEU8XyTq3MqcPZR zPW6uYk8JL|`M7xd-M?4Grq68BWjhl+X|ciNxXG(UUzDwUAhD!uO?A@b)POb5&wrDC zm$X#oKuq;AnQ!GhUVjd}S-su%bCTZC(l#Zm!{t`9g(^Q8(1Qjyl?DZ4mx+!a1hJ z|IXX!KL1mJS9A7Re3j>t>CoOb%i+nnyiJ!BFM11oD}Oc5SoMHzbLVgFpMD#-mCx<< zd-JDNR`zID0iSh-r%EVO_o8+sx63>pmiOnU^%`&X`xK>-6#G4f;s1hS1+R~uoA=t- zKfO?(Ww+tr{NJLH~j^WXiq!Pee?_2lKX z+CC3n7Cv7g^2Y@|9xj`uDwSZTbf#X;yyA{|o4li1ng4CE{L1nJ zN0yuTo)zj$Kd0`)BIjn+@a6ySho_#lU;ZL|CNCi|GFDnfYS;R-PyOD+`ygwuhYwve{Dg=-Q93cTMhY zy2$>-%UX|V&s2l?{62m{ZR#u{cRCh+Eqk`oJ-pTKow$NVLaRpSgm>k)_J+Os6SB>2 z>%oZ}r(J^Xb}?tk=Nk06Z2!@0DQerWAWdgG-^6Dp->Nt@%`l$+z+v~Jd6VT9Yzdz) zoIh27g-yU?N58eVW$_fBqXN6Hs`hTaV)rol`m{^lCrk7b+Rv4|^Gn;6$3HhQUTf!N zvz?zeE-zx?D0SQZ?bMAoWv5~-GB@~Z$ZmY0xcTl*3(vD+1zdHGebWduNN&r9!CPFQAW=y3OT+&tBX&$gb8nO9Zm#qv^ba^Tjglr8hZ zshJJEl}A*j28O-(uVGhT zytmWWT_w^}&t&x{u|~@@b@!6{atqQ{Pq){+^;IaSY-6i;@mr+JV|B$BEAGmATcxovdp8GM zs@VDBKC3e0{D+-0`%EPY_qwPs-+QIxkh)-*>MDknr@1l|Gn3|hd;c_T@nw~welGjj zd5d^1X&T9@{o1)DHzVP#ePLtk=ARLhWTGEBDFv35KWsU1;$7{5_5iN=_ZyRHX1`Dt z;7j;c+_c%oQzdNuR_@zU>-TarYb~&^KEmP3r}5x|%=Fc&d}SH|7DXSv*%Y(gbh;i@ z)U;=nMt+L(j%ud`r_z@`2$^NJzH?=SviP=d&WBoD?_OQs{wH`}*VcTyS&Mkz2?T6B z?!@)}0?($!4k_Z7{uW)D)$nosRF!2r1h4Xn?LK$n{Ut|bCJq&Y>g&1tKehN}nQxz5 zxm{q{-4#!IERN37j(*`MVptN(`O{P zm2#InxjuX8?Q|8+i*=>Hvrd>SI=}3K&Qq1<(u_UXoehx!d}4vz)5QPUe>JdD+R$83&j=IF7Tc+2jV=<(CC}@tzfIoUp>7N&RBLUnQ|4)up>L zF8#h`r64|oYxDklZ^C*@wmjQm+1t|@_f2ub-J;I7_Y<|N79KsfI4#^Ls(-!t>h1S+ z4kjM+mD8O&KcXk7qfUJrH`|dai5q&dEB{(QmaP6zX*~6KyyDCi+7+u<>k51>w>R4? z+&F#H)TW*^&aCjX4+OVVy{6Z~Y&A}Fo4J)YTrIHYyy69=1#+_43zEWhW80?k6qr2vJx}wF@qL$be~dgUt!yqn z-eq+{>Z@vFa_Wu{vHq=!p8~zzb8;*YY;n?c+-g^j0zaw{}C>JiV5}A6qUQQJk^H$wjy$A=mwiT*caB zHPO9^3dQV9E4}FOs8&3w~YmyDoG$+wOyyX48b;nXC(b(Z=wRz)bvTnn70 z>-GQrVIH~biOgQ1=ZcqA*ycVoi^)xso_gWum9nX<X#v;px zTa_9TJ2>3MV$@ExZQVFiB%xT|;IeLh#P<7+DLxDqs)bwlSHF8Hv>@PfLGzp0Y^_3@ z{319NWhQL>JNPtuLr?<`^5&|&$!tKM#1zqy#DupX$ z7JvP^<@TZ}<)}0l#`>~M&B1+%*Sbn$#KYUvKCdlFajwg2tk}t_@#LgQi>LMC?Hy$TLf<%rIddC-qEe}w6H)T}z0*Sogrm*ESi;OwqdI#oZrZZt*s z*&Sb0_O|rW;kVI?43(!YK78ww#Q`+%V5B%rQ*)Evo5k5rr*89(TX|$^kC1w9^=*~#f;zTMYs%}V z?UFOuz0JP-)}bP%U6Za)e5K5LsB^9Oa=*^$Y5Avr@(bTrbdp)U$YbM2*FBFf{g}M} z^j9gdo|HXa>v#GIRcIJkcFE+FNef79VP#!VJ>}Im*0m2FKb20>eUs(j`QjqGgzLey zYt}_~-e<7i@#YZPRyy0@sojC|67O3rAFN#RRAPChl&@e<&rRDMJ?v4P`{Yl4(E5~R zA!dL4*IkD@UAn&_Q}*25`cU&_{dT!_#d{w(SE|jFlw&rz{N3|X{+B+zd0`7;r&zC; zKgm?%JlF9*y>*AKhS<%@o&Iaefj>vWzHkRPz1XYsM)QNyU8CeEryVkLGS)4Bu|cf4 z=TXyc+rJBpp77Ouz57UO-i~aew}<){SGlpN2+N3aZ~pQ%>xsz8&Gm~mzj^DbxnG;n z?oZx~d*5p39N?QG7`iG+#$ww$2A`P+x&01qocGh?>oI`?GkEh`|5Q4MfB$mfN2MLZ zAHK!&eOfn8QhfJqMs~pMsqeSSK3}Bk&Lv%wU$ZXO^yvm`j=yzh^FsSJZ;+Xhb$i#+ z`6WMA>sxtllJSfAvAIHy_thfD|Hm@)f0{~hyi_pV$F0Mu?~_(@JSF9SV==?I#M^OB zVohFQ=RaJ%wTxY$T43qz+_m$Zd$aQoKh*G3QMoYp-KhsE3A*xAp5DFVe9SBFcJiEw z6W+z;UEdqacj7?9oan`#%oo0KuyU+g`8>iU(Mcn)`?1Akkp*9hH0N8S*E}^9O)&gn zsB!SswrsD8qB72dvG*pdoOW?(>%xE=-+xw=A73cT7fg?N)o!;EnQ>kQ;SBo_8(TX_tTzp6B+>^G}QlAg|sa1zW^)FvkCa7;M zsdu$BXo{OKx3`kPB_I7~zxG~ic)Q+!eNS`EB3>cqRG;}BQ&Mbsw>1YHGG?>;`gP0h zoPLEn_olo&GOzSj-qQzjHk?^I_j6*cNGZGG?GlS*SNH8@k%|s;UNmp8=eqm#@|(po z>=T(Y-))Z;t{p7l#z_|x^{%}y2``=70PA{1q=p|p!J&ErR6RjqsW^?mE>RI6@8EuWZs z`pV?oT<&Hco)b-H56X8u(eO|$(`)C8Ju|19wfWbUe>YcGpJRAmknv#3k12d6D`!58 zI=yK7o)yI}q zDSE2b-|g8}O=c67_*nEgllLEIaAnlvE2}S^c{017b&4v_ohiX{=e)mW5+|Uv^UW6t zV}+Ydeajc`kdt$Jk{Ca$@`%@x)w|Mqtk!v* z6YlI$+0x`w-Y@De^eH+w_{jQsx3jIfG9xUVPEF+CiKE5o8Oyca z#eMm8Ze89Aj4%IX>>4k5MGe}%NeZG@w|KUq5-uFdOKOHtXA zyIH>K*uV3a^Qu%U6+(Enc(8qXrs{Ri;zsn%&;Jr^lD9CjuA9_X_9nk?vi4Kn!mAT3 zLe?Z*-^=mXwUvj>ZgqUVFXP@b-%l>IY7o?!n!h$9X7@ibTRvf4XyWw- z?{70UDGD6Wzq{(y_PCYjqaD`;&+B}y?s4JnHNpA`H#uLt+w!2ZPCsJ_*T%mws!!&{ zTjknh&S(v5^{e_J5mgc*84+-H>ZUIrS7(Z9FLqNc?8(kqKV^M~Uih^K??Pg{ZtQit zQhKz~L;10*(P9Rzg`IW3U5#gz@0WVLcxL)zk%@cPbe05u`Y%(^CVt`e1CvC)*oUT9 zSrhfM16iJ4kJQ=Me2MAfW6P!eDwh;k1-(WQ(#KaLKff+azSH}pv9^Gb zU4nzVbB^nVgk$B~bgJr{%{r2W57@VR*6)wqaZbSUbJLoGirK$!KUFf}eAyv=KJn23 zgOzM2S^C#ZIe+`^(kqdX70fX@dfOA0Xl!`7VU2=H#jnQ=dXsJ1-`1b|P)~8;x~0v5`TvZ_yvaKzJ-_(BaX0@N>?3-bJ;VMLr-@3 zL>rcgU((|kY+?)^-cxnDIal9o`KR4a&djg-*TvU$NT4~gO7iiUwmIeV7cZC+xuT2t zy72k@4Z7bQ*MHP{zq*h0kmK~zFJ_nhuG#*jyRMycgXxi=_DSx0li7}DJ1%|B_r&FB z*&(l8NxRbQqy;jhu7Bb#Wtll|f<$w^_3N@3$C6I@>%F#GsGhe!C|KZO!3h_wuIBff zPis0G%_!-Zn|@m+yy?F1q!l55u9}oL-jw*zp3VNDEArR;Pj|!A1nZXfeDB-7bNNA* z4}y;tO?mlmv&WL>4l4Xd;%-|O%r3XKJ@Ae1oLx!D8QDKk7kC2aeLl05Ibi!uyOkco zkFpOx)Hv7vrz_RL^?BU6l;hKU*>a24JGPjvzP^$7xfYLCYn6Q1WznZ`|FW`k>(dwB zX)N<>X}JGTN%NNX#Io0Ke3oe+IdH+c$GEa>=kK?XKK)CRmA4(9=iuE~jd=YrC}QP2bXUrK*K$h0G6_!ftWue%XCe zR&Mua=W0Zbe3Paa9-IDW|M~WtKPxV7OPn0MJZ9#EhwIv1D}P-2BBb@ol~bvqbFqrt$@EDa zxewl+O`EV-)@jz1JIqWGk$<);>0Zn#PVifFO4V#@ukmVerl(I6S@yGbEUnq_XqT#u z*2zySOI-q*LpFFXb-h%vx@8rQlj;ci_Pf6+TRfJzr<@PI_VZV|lWT z@|_<&52yW8ioWdeP5I8+(hi@Zhd)afguQ>b^v14GX7# zJR!HtyoZxR!Q*uKK`z~BzkuC^ma^x+O#d&EGx^wC>$KH-wK<|DvmG^;nx=KclmE}D zGHccn_cu>Mo;`i-K70FC`3-;6?OR?bich@t-eiN@=J`F9z4kn2vf(uo51;wC*m3P% zMaQX8Tw5-Fn>n@ncIm`RyNlZWdW7ojmbi(q#CX}v=;QDF7kqM4d~wc6_XfisC!(J? zm&HjQcir-hdtv^kmx_N^Y~SLW`Plzi?bF2jPhK!3NHCo?em$|a#aw#k6rT^W&zH(M z>x*sN)Ax4H?x{t#8$Yldm~d&`QP;rb68a?vT8?UO%HAt^FZD;z#lQVO#17uMro74U zK);*iey)IRQj_^plNSc@)O|RcSp@} zT^(-tyY3I>rrp{1fAW*?obMa! zzs==!>#!BP_NnqJPxc3fsoU?FN$aJ!Zi$VVRy*~;+>M`?UTxF5m-`^)Z0mAv$H#9A z)LIxma9>i=$ZKti|2|7)z2uea-xRphY}YP4K1ofk#;9fcErqy@Ei4O#ZnCTYd#IZB zKT5>M!)V>*3~gTCvd$;%OOzcOc?*`W6S&lJ#g2_Nd}r?DN!3h=3vX;#!^@!U85!0U zq`kiFtzSd)DlQKl+m+Jg%^mI~SMB-4Rwv{#nyy}ZciyQ@8DF-^Etx(0%k6h;XI!VW zg#OqSzT&U8O+}9Q?Ebx08dEOyNjz~bx7TC1qyBHpA6uO%Z@YPF5)MD%<4kFNV9eQH z#%eV&_{9RvJP%sCcK>`ceS4WRY$rlwjX%9v zHH9(U*s$QILG1O*94`(X*m~*HnGchKo@j4iH8eZ*Xd3H&;Yfj!2V5)*t1G^Qr=B?% zd*VsS%pJB))tBxbx$5UsEhWjmbVt!*ZF42zB+p&V@@E`fXVeHeW#}98{_fsca>|@n zJGAb=zxLgiR7)o=(rTJ~z`ig*XoJn7&I64P3|6R?eLg4pEa^#<-;6j*rOa}!O&dC; zFaBYa*wv$<^(vj~O~ncZq3~;eGoMa&Wm>qUH#gszqCPp^J$52-I|6Pr8xrpleaQITsc49$iR5+{mOga_(iP?FYW$)qxS-% zUf%Eh3b#_PItDjgW9qbX zirM!4cEkhmgO6s!PQDTxuzBa4Jckn-{w+U|dr9!R-_mm&iyEZPJ~m){x^vg}!s^4% zCoZ{UE)#1$O`yZWIe+&@2G&iiq5<6BzSP~hx@^8iht-l**KI1iBNiInDzr3R`|$2&xB@=^GPAp5e<>Qk1rO5Ya-|Y8Vu11{oM^v6%fBbG+aYo<6 z(1cvk@HGsJ3VYL3d2^Jl-*Hv@-ie=e=HtH^`#=0-IxKzU49~U3c$N>bh22X_;-<^Y zt1xIVZtPsry#4#*bw@j8LN_WOJe}sQR5;TwuenL}Pr)7;O~qwN+uq;3^7G@4)#*As ztXIM&?KD|l8(#8l=H!_w1>q~rH|=<9-|;sirZD?;VZroE^FP%}nMv@SeARO8;_HYn zQo_c}C5)Gsy9HEPpL@7t@qD?@Jdc(9e?N0{5i@;Yb-3MR&wq|h8yChqzq=&!wsrS; zLGAy)EA4dB<-Ylz4KZ|5Q=ELn)%}yyn@UHcm@+;4XL(JT8XO931tQMnOS?9mmOK#k z*?OA2;x+-tHNvZednR0yOHgpKWwwj|-Mx|1uWIS>sXafqpRK&``smB1ss5`b2x-}D zVEPyqw)_0skDnGi6TTmpKWXk7M$IdKK1_HyY1Nqno1WeL#^3&}$%|uO?wj|=?<)WB z*zop-eX!m4w+ca1OMF5EHahYh@>?mtq2P4xweOGDz38078Bnd5Ew#=wWjk-^3$LO` z?WIM#7khf0u{%F)ere>sb*JUCb!;vMZ_rcAndzYJB3{Vze&ehH?K9T%W`&t1Kba6` z?Z^N7o9f0-+*(`Ke46oF?0K}uu2#Ofb>GUGF3KFge)!YZ#DEg36_;Olw=}8U z`=+?-tzX#O(;f$&FE8b|^sD!y(aSyRr#DS(o^(bsWM}cF*xAAbGdK0gehRJ;ecCu- zru)7$i=K;&3qPgKaXx-~##&>e9>1F{724ifI=hOagE?ZH75+Y&b7oe}TER7}`|3R( ztu}W}j{3=W36Ym%T zYEtKI*|*X8_U(zSTr2)Qle}jfXzH@0n|noKv;Xc~@!;nZYh$Y_oFo(ET(<_>A9P;! z^!o%y>lwzbEC1GIzR|FA^PgoJK7Ubgv`VAg)ZOd%bqO!M6fankHZ#;%V^wf?MM;mY zTCiw<{_|riCo(@@QRG?`^s+E!x7i=9PsTM9Uo0x&cyJ?j^LOpdr>{0VQA`#w+G}vz zj$QuGMe|E)A{J?{=bYBv{aUlLp4CuurOau~h0fVqPFYT>JkPLX?-T9vOKO}t8D4LH zO)ES6x2O5p%op=E+>G2WJH=&{&?3geJpO&0u66r7PVAPs|0Cna>vtdcw^&{}6|`S` ze#FP9&x=`jmcM6ZKX^BB#$KZp-mE!0bQBM>r>JGu`$X1=&G^mLJel!+<>8O2@B6-0 z%y68b_PylejkoQKxja*jzmWQ%FL}@}=jZ9g`f^SRJ{s=@A9L`2`R=DSJ3BH;c3yMW znq@ccY}MfmZ?x+Am$~Hg+XU{&)FN+*{@^&?TFZYLg=;&H+P|W&<7(q)!*(a5SJ%1|V|3oTXq>XUesD|cH@(mQW#w*5s@}P7?(K4BvPP?O zRFQjf+p)-d4?WW^%c!Vzm2rT-#Q zzF9qO%hVHhCK`*1FZ#1<>-(VYLoeA~B4!=GJ;5})yyxx(m#M9-1-Bpe`{!<7>w6^8 zcCUQnrqjGapJy9jKTLZCCpPHpS(tOX&HTZgZxfwzIv?HL z@G#&tzowMnr3i+ce>;8(E>v9b@ux|)M1;cqZKliCUGo+dY}hn?Qb6;^cwaA;_^o1Q z>&uS0&NMr2oYLj=_jT2gklICt%=7dfD;{sG?oHOs+wrro)#&xMI`-*ZX0N(07H#F1 zDX4tgaO4bI*!t;qVR1M2OD&!Bai+Oc+VA~27S^fHq)qv+XR;@*6IipuanfzelTVm~ z`0icwc58j&sP--3vq#r2_h~i#M}Jf(u~dAhj=B1>{Rg8pHIpUmLxNh*-Q+5oZvS=l{K;RhGU~`2 zxxDHr44j_s=g{PrRqSj~9yTG`Y&7-puR}X;iW)QLXL5 zztxOyil&t*$(?F-n0`n?Zm#RQ?%3=FB8T@fzpO4ipWpHA_|AU^FRink%@GzN@yY39Rg1-$`CmK4 zCpee;-1}f6wtU}z=DV@d(m!}R*6%Pro|j|Mc{2Fni<0tGF3$+#FOx6KyY&0*FVPt) z<)@_HQ7Dx1wB^&N@}87c6=AMuq79of@UuNe0i)PtJ+>;b|!*`$To>o=Y}}wn!C`>(0Sd*`R~f> z?%&%~nljIQLu?td?~$Y(g%Q3tABn9i-r`W*_~Y!A_kYu-Z(AE`nV|AVPfqM!2Pb=i z-a0R3lkfn zR9?Bqzl*%DhjCp~Sj;=;^k#d#3H+=2ubwdc^t){r`!=E6m#2PKDny5`=fYmIB=7Xvx^LMP={Ltx|6Pk|U)k{OrmN2V?oCOScB=bND9^w3KqdP9`(5*sxLIab z`kY^_?eq4)0kxT)^Gp}r^VK}o8zS`YaQ@7#FI3}mr>_Zna*M5ce)m6TbJ30OI$4aD zJv>m#IA0_)Q6u!h*9{ewn^i9AXcbCbm}_|T2*cCv&J}y_`3N)r=K6MW;iJ8BZl&M9 z-tdymPl^;U&AFvX6+09SBasGH%C&FnRwCDBPa;bBj&Q^Z9XBpc6-+!I>@{@s5=bQCwHf6mn zHojGuzs~dJ#ctOdCro=^ZQ-12@nq@zkN2J?PE73IC#Ge-U1suf2{ma!&G5+i69d=g zZscqd7F)1M&P}wkU-4MTE)Cm-Q+BCKcb%EGqNC_q=PZ%_KxYG^?sHWvt557MKF>0# zO9C^PZR^r!X)K9jwl9$2BApUv?m{zLt? zr~@zS5@aUS7oJ-8QC_{PTF&>-#L0ORrhJUt-n3+be^0vly;X7l4a5%1J8wGtF-q;j zhxPkq#0wWBG+%kRZmZ9W(^o#6ym$WifmS(fgAXiCGnTJWK6iVkY0ASq@p5tAo4IC_ zRF-k<^5FcO>Y26TYN?OH+@MY09d^HA{PXnfW09QY&lc63_T%N0@N-o^e5`s zJ{L|k-`p?bedN$Txt!Feu1d3nr{|d8ocC#ea64;eg6t%fsE11f6mD$$VCVJg?OCRS z*F}TWO!V3(t&RA*#LPtI$*lKzM^hKHulW37!G*)eo}Nv)aQ6sLqRHz`{*&sal%1Jx zbj_5@clPPtL=Q`u*?Sk2eh6`#`~q&z=D-{1FX z?p@D+`pc!Md|Xqu@8qf!3Y)lr_mp-)^VJpBjjQjJ-KtLKj}F{^K~K*4t}jpOM`KIJ zyY6Pke0S+Qlf0eo#-MULP-V~8%|B8fl zlt%`scc^S%W}E){$L$-Nq-CzveyRTx_ikM-=X?1G-iW@k{y*22A6m-yr8Z3bVM4w` zk!rbv)u#C;7XI0HHDz=7#`^~=PM@#SSrqW}gZ)S8&yU! zhsIY$*`*VEi?15oV|f3iilsPwrli)7e_vPMJ!SP{PQxme8_Qp6`gFuC_;X&d>AhCO z?e?6m$3jdW>bFPjdiMBWzS^ACPow5)aV~Sc$$M_f@om)`i%$IG>Z?04V|nerwQX9Uvi_3eDZyR5w~q-5=d6GArlc+Q^!ngSQj(W8hkkQO*pPes-P3g;?|3YH zn>$=mE^o`7dsxs`LGZBW>%3=Irj*KLXt`%Ezh9QUU01cak5)62rkv@WP+Nu2AO z(=|KpMrv@w+QMx$(JHsm+{V4aJELxU zqK?NM15VarE8WeD@(!eO{(LlJdC>>I4{G7e-4`vM{(f{z$-!Yu!JLDNYuRS>tkA4t z6DwLfSANr1YsN*J4;*k7*j=%1d90<>*Ct)_^}-De)|uLpD@?Clzr1dNY{%&(OXvM@ zj%nw)*?EN9=aittn&qM?6D_{+=Y9EDb!+S2-al~~F&EsQzGR#zY-J=Ra_@Yi$&Fso zi$w<)eN=E{e*5fw#U6#~Q#ofEcL}R(e&Qlq#HBJn)_oE8sZZ@5e|g-Re*IRjw^xy7 zv+dO6@@Nef)803ygJa6Ncd=Ivbk7P|#dfyF_RQ0HFL%%RJ-No&sPt%R$#jRF?HSGm z%g-MCy~0PVN#(-^r_1)UPLx%{pV_;m3DY>|JtHwLNF)k&Q}kdlo<2vP)&J zhf&Xy`otS2JNc4R4jlO!X{B8DI>n@2W8Y5Ws)K=3j->oQT7TooOSRnx3tcx>Gjqk1 zajKmZ?}UB23a$U$ zn(gU*X^M>MtJ^o26Mvifh)wFa=W#_p(irt-i zzTUq2-MopXRx#VDs@&S^D*QRhFYv@9ffJ|oG~Z5su9Uvy!oQz)*KMwzqZlBP__%-H zrPDSEp@;NMpL{sZ`)SwgXWl8sd$<4Cdg^hJBL9q;^Gr?lalV=UdV_RfUF7YLMMA=i;pQ@$Y-+2{m`q`yW-UgbH|C6Lhr5bE4j**U!C8}xuNq!!@{=qEWxd& z4I4xMirCNc+|cvGZQ{{yMn5(mzq`_%B}?4UDMNU>{=}=XfjebcKC;Yb6aI%#H|5)?z&vg+$!7p`o%dZy+6yj1rKQ`-|yee{>(9h>DVK`(|*$D zB!7uH{XcW`S@D@eK0em{`uF2hT1!gTvtCw}+_ZsjzLQ$?tk5Jiork;6XDt6)_(7*z zrtMyx)%ER*&ocJ32c~!5^Hy5({er5%vb%RG*JxRYO!D(gkGQ;CbH@b9W~GFa6E$vJ zt_(If@VU*R(asz_Dbe|Z%I-6M6FESRNSUI!2D7N8mhT}JXj-|J|V^dd~-%nWKCRTC$soVdq^&wiS_J@?&l)ubg0mgP;UyH)&gN41-67MByh#6|aTH?1AY z+8^hfvdnW}zAfDlwPoGc&?vTdS3g}96lz!!nz*F)&6%7uffX?~C%(R0uzK38sj<5h z-~OLg@gZ+U-&2VT;_C|UUe43x6|xdL#$sxHgrPU}!A$RhCy{SI?ub7Sr}F5;Cbq{j zzFG*_7Ku%%k$GJ5XnRM6$%`2>Pt5Bd+_U#vHcMcq=9JZsr%qaPSd8!U!9UMhyeGJ_ zuAhFGx99F}^}6Ch;l-hu%r`9g&42lY{WqL*EIO-wp28ia`OL);Zw}v!|D-_9~9p89G)OVa~x~>=)T`6U{cV)#(J*A1tUQJg`bKBS2F0e715Wk@9uBZX? zcI^cd`7U1idH7@JyMMDRLJMo1d1uJoc2~?}*I1I>)>XG4LI29fifzV;^X9GpEPhlq zsqT&Kf)^DP)Aq`o{3w{M^h$UAH!eHtP8*S&KmH&2`#w!SH1ozA2O-9DRY%P&-bE*L z2)=#w?$^o0<$6a>T{f$(7d`iN7we34AD`Uiv8ONpTqv>jk;-zjtk{Qt*N0A#&Et>T z`*8lJC*oGwhf0|uPg|s?rkif-PqkD$p%F6YDqkjNzV_}=Nf+| zV|nt0ZOLVdhUII{ZP2?jn;~iA+rK(fH1=7|tF)Xc$?ez>Tpecq@%Ld(=eVmgZ{;?z zsQsJCe=F{-X!HZF>jLsQq8wfxoYH#^HeF4fp5D6YO@XiDQU?~9i9w5H&)wLzZe8uh zKm7&|(z>q5`)}4=-sB^>;9k6-Py6Yan_8T!eip>v*47I7)!DaZztvCaMl*fG9m&&J z%^ua4Y%sbjkvHRS!mM`g%X=7kPregn{c^+Y$TckXo)zwZz{)^X7*ZmCJK8FVf?m_3p64jX7^KW2UbS zVYR-$MXxVZO}6IrhpMPQuB&!$wb*cAazt6(OM~l-X^a2efA98D!M)h}`24c^`KFcA z*9dHCdm@&USlc$SnAbpfW=7UrSDo~}{=Ppv%G0;J72g;PFrn&O z|IT#DgD)AFcvCudNVRt^FjFi&xFR~+)>HlZmRVfCP4qTy6<+`OScA*Th4&s6#GF4I z`zCp~Zl5oldK`8qu~S}xZTqHP@2;<|+gcv7 ziTQKf3gr1LmL6gtmSQa2Vs?%fd< zDo(MA;<{b-tKlF^@~;1;>l`{gA5Q-K+O1ylHOE3<-c!40-&87`_*QYt)3EzruJ1mq z!<@D-;HR+Xo9W+EKD9IRd|^x%);PWX)Qmk(!=s8GF4$A!b>om!nQ`QoGj=aNIrCL= zU5uVF!AGkoXjQG|@;e>VcTeLA*p!;-Xm-$R(fLJloZT}wd=7i3d0jK{)(+u=Yb$on z+AOTEpZ?!QQiZQ}$D1c}*&>-A>M8BFn={)b&$j2P-;(PWxg7ZSo81=(m^vft`IA$Z znsx^m%sOHm+sF1gvuxT!mz?=bwr?xmzPl}!Fy+>oB?&q4i*6t0w@R6D=7pi#t2iBg zjiRpaWvNFFv#+^tw?sBS&}S8k>YIsgRtPZ1@ZP?3wrtU)jmJ(OaXt9H(su3E(q&h zp2&Z`Dm#U7mBZ@jnF&TGzAtuZ)bO~vamL5_XQ$;)&iy{+e?`svZ6!Z%9+;RO&?3>e zO3!;k6bsuo_djo0?@ie*vdc?g!}MzBg;l!KI|Kww7Zh>C^36EW)$o|LB`wzFh(MHO z(9S%A9daK-wa>>pe6@I~EYx#w(Cy< zQ8R(N&iCZrxd&oD+VP&UFZBGhVVTH72PUCh{Z)7F9-Z7%@cO#pME6|}W#S7Yp9x=m zH+^FFdZB{Uvrb8zA2aR;2;XmeJApg*qu{P)hngKPd7}0=`I~&KT3wsWuJG;vpYD}{ zIg`Gz_pg7HSFxp{`bN=lh1|^yh51Ui_8Nch(0jKml0o=4&k4U}b4=CE-4E*R={zR2 z@!%|3)u!&Z%QyCAPIC|SQB)(y7j`?uV!<9_5*A>zj2{^NzOdDEPtB@a^cv}Ja2g#;T|R;`$E>2+TA z_uFio3l~K(%#2}8v=@6Vc(~hWlfDO25!?Qv;{H>|bA#7!=dHKpZV`|)-@Ckh(w91c z>?<;5n@&wV8LD2Yu;;zm>;3<}d=WKa|L5>VbK3Qqh&uvaoYf`^j(y8udEk1gKGkEd zeahas6MeGZrX8HQpfvx3;G`1@?C(A#O+L6x#z<^ydAI7>@QxW*U9Wd^#ynX${h_K2 zS8CFs5B5%y+rHj)zMyh1+o$$aW=oa)RihuQ-x73k?(fZQpUox58YdYpqCQ#lNBx6^ z6ZgMgqq37(pYhP0c>@0%H(BP*z5gRoK%+g8b7s!O39@;|dquaLsp!*E6lk)$99|=L z&BNn!@$H=G)Fm;2n?qiet{0lJes(9X%$B9>NkG>bw?yZlD%`{g%dXM zb8IG9|K83Pb3pEP_dfg2UvDTm=zM1CX)k-lDR|FfPO>gf)DHv8KHtXGA%f|zI15v* z-$}RrDwHCWb7am0mdrjE3%4bSN2Mk%a-X8`*}Np><&T>goAUUZojbB~{=6u<8zK`| z?P}VTvEj$^Ep~!&Q~uWKK27gT5dW)hbh_(P$4ZVvO)D?Qe{7Z7yW{QAoyKk}Pbe*v zW1aK8q+;r+k6cp}UaGvBv|y##_bFzY(8S37hg5%$vG`fR z$>CeKQ4H)`%aq@R<}&P6L#r!=90i#-YysR6Ke4wLZP+|2-~T_|+Vg_lD`9Oxf3z^gSmXC){55MRKS2q_C*m#;Py; zGUa_DyCpgJqx+S8XJ);*Z1}ubf+4Qhx27TT$f^UyODiusav2{85c%_-B~7qU*?k9F z_s6e0tjmMNBywW99K1nRNd0t}s&Yx@tx^g`(wOjt||Hyn&HN0U`uIu&A zcXe*+&BxC(T>N)&;rf7NF*WwNS1$>4g-QSXF|GVv@PbRTHym8ZzomD-n9kMJS5D9S zbYce2ttB(gZodBAYv;G+CRPh}Rrqa7b>poSp1f$miLU{2&o?W*NU(R5t^cffTK}G2 z)9fOp!UMbS2KR>UD?Amfx%#@}bC#>#f3Ey^WRNUW?B22|%-S{dMcm@zDih0-x7ecN ze(@^w*{=@bYD%@y4>RL%{ zZ549i{C4Er>Uq5h_RF>wsMI|#dGzH4gMJ8)NL~i_1I9-}&p(T9ITCuYpiJDtXTGEF zlsflD|?m3yu|_B#B7PcEw{>AJ$*b*DefIC-(+qur^kTUxd< zrQC3JD1B~mlchw;++td4zj0-_RQS=LCD$!B-&f&sbeuim+e^Xkfs&QHZ)Waz9kZz6 zzG|{%-GzVrl7HlKQf{{_oA*-C>E*8ctLvE68Xc$p*irt5;aCxG_>X_j?Cu_)d1CiY z9ZkVWzjwMmxx2x|&@!%nGQZ(si96y`W__{S^UmDSdx_$re@i((-YhtNeE#muohRSN z8oFpV*e9I4elce&_uNTo>fcKg2H)U|IL zXJ<5gnAYHIFVg+!0_P@`NGGKN$-0xRpC;dIasAfwdF#VRxm8@MJ%K3-+x1kJZz*|a zx2)id#Wzv&m*rML8u?k~mKyP8-#NVIZCq?naKrz6#<7F>Sz)s-^IggIGCHiQcq})4 z$GtUiPu-)69;`3By<=ggN5zbv4vad6wns}Q`~)!h|pZ68&*LwvvVj<|2thc*=N^;z;?&3w7z za_#l^*W8h7%P{ZO=T3-?q<#a5){KED2> zSec_&VA_QzYp4G^c&%!O@RF%FyjOQB6jfeweHvGodAsOHdV%~u79)cX3FY654#hs@ zDmOhVZe+}OLXa=`(4(G?IR+0u$FRigTo`}j(oAiY)0K`r>FZu>3fX$Pa(lUYyHb|w z%xO>j+^2i4*qD9cmmk=|xnw)9L^N9^rqm8Kff6Wh4#Vr7;a zSRLB9Z^u^u$n?MxH>p=|-m_)!>PE7$+F2^uvCj)_7m%3mVq^1u-4c#32@{$YBdh{w?Mo<0kX}Tp<2bP?Wv#k zE5+!nRqma|Z<7;bzpcKzFvq0MAX8DNJpGt&>%po1zvJ&#?eAJ@JYmVU4}~Tl!<$7u ztM{#!b_jI5(JI{aZmR5$&f3#08Ra>x2IG1)cgc-9fpt;m~=lh3Dj%(|O)ZxXbx+eaaD&Y1bBh z>0kN3%351^-|5*B6&;iKZ>ukzD|V7kyTc&xi|Y1Mzr1<57YEK|5Gr)&>@nURoEFCnUYL;U|A`Du^qx82o< z4f!HyF4JA_zB|9p@rA0)GXLMD9AUHNt~ttUoOiUg%-QHyF2}MgStr0HxOQFr7x(ZT z0)_l-yfyPJ{ybNlzRIm~)y}I|>o4mu$Z)^Ve*50})0g{hdZ$7&4*qKY-X?9%Hrsx? zn)cOQJYKSEq_@qt_X)3gC^&D@`8D+&uUIZ+&2X&0d;5Um%$_bs<=Aj`pYv|~47Hm= z%%?SXP2v#pTd_^fV4LZIkLz9ryfL5TzK7fW&Ayu#jB88Q+zY?mp7L09jnqL|j_*J6 zr#mR$nfpV)NBm5pL+o`tMsMYxI(R8Ej ze$I~nN>azq-K_KsnDS=%Lf)iXpHgZbGgl~XsyP+=Y@bTK`Ta~C*R-6*JsR5;vn7O- z`MQ#(oSiSe`Ko+r*PYZ_14$;fzmgZv-^zZnF_N?MpzZv#sw-Yh^t69!^KSuPUDtyL z)s^NiW=>k}zHib0j2{P_3{w>vANTTqYJC0n-chF&KYIUGn%_8A|LD6wuBxHx?c*jt z<^^|V3wUwq?w)G!fBq?Ng=Kt46>hHozGL&-%qjol=eNx@c6UyFvUl?=wz=$1G8K;A zM^eqD6V+LtTPQsWs3%jeQaanr_ zT9tkB4qrRt<8VtIXHFkyBmDhI{EskchIpC7AZ#dhWS#Bm*+20vkZC2 zVzAdu>_sSJY@(H2-L_BMw!wi*7Bp}@3yAyQ{Jf~`!KRqKT92+Dee=xt)0&4G9#Old zOmrz(_)2XlkIV zTSftMM`+w@|G$f^WS9BLvG_JA+nX^oU9f+ADVHa9v4r{KtR3$HR~~)Bcy;#vI}N8# zOvrcRJX_2BLg(P>pH+8T)}6_?r1iGHFYf<@V;2owg%)4n-=dgb_^<6_=~ z-Cdf|SvEtNZ*%<-Ef0ap^qVtpo66Sfeg2=JHG4v&=fPaWX2tpP>XPJCMVeZtPf)J?K~BRgv!-(V=enZ8(4`__>o((8gJ{ZuT>7WH59XwoW= z-@Pwy2HbO~s&ijGx$dEJ=PUb3a@THeQayTTmbrjR{_`{Ezt62dx+LTS>#Dn7bn3nK zu+RGt+G=W9UcNlx6CE-PJbG0Q%ga7X?p#vy`=Wr=BDMvbD{6DKrY$d< zt-Ci$#;93%`cyI3FGrsjRn7bV_>;*61I`M8)hhjawwkMb>dg?^S+w?7I@k90Lpevo z=A_$KZSR#Xl4~vMe{n$m8cQtyO(`|=luhi(9IOi%W3A`f-`aasftRbG$1?DvRAZ*_ zpN?Bk#O9k<^xd)$QV7nHNpG(x*K)N^*&cCTK6vw=&#NCA$DcU(MroJsWtnG(Zj?Q= za|k+BWzPFfG3iet#|Pi&#H}0W?&OiVuw(7=n|E_q)qacf{RmpG;%6S%HC4Q#WdFBY ze?M(#;*5ABB>(KIzwQdz4{Z$T?-O5Iuc+fVve4yWjm+`0$I724#;*^2ktT8crrE3C z)=V?c_&w%+@rcW)lwwZ<$x4r^>RJJ=#7R%o_c`8GR%P7MW|95PHoMk7=bl_!!Td#5-GxPOVR?n#t8!Oy>XyF9PSbUr!17d_dnDs4AA6=HJCgDRJ3D(>7|JM*AL zoc*mGy6#3DA72E#`~1QD_m_4Rrm*sY{`$37H^wf^$=KcW?B|A*tv{Y7ie|SciJ#wi z!kKkqL#)rqe&{x{KMW1Gjs!mDgu$;^3gx~w9j5AAAp zJK?b9^OWpoA7>jz@4A2Oh~Q-9<36Xj1y9Ad&N=+P^Id$CB6pppXz*qJazl$_Chre1 zv-R)jNv&XA!B#_OdlxRw%#OQ_=iGeZZ{uas90NZ;sh4 zxb{_1GV??wr}gTBnCpMCUY3aoXEE!_C*5E7Tl$EO+LCSCo7q!NF!b+U{vn&KCaQm} z*yB{kG|goX8u)HJ`e)*&lT z*p#S!eqqqDaqqb-hOci^n!lu(A9%H~ae2ok53j%yVTqjqZbBC`rajxd@Hpc`HS2i- zbJwOSIM-TK9T0M0W4JxP`pfgP2lT6^MGDTysof`OvX@WqN3ZQy&tIHZj<4HzzW%98 z>fVfyMH!I_Do$bn_cab*DzsRpEU{zj=Q&~$DGuQ;|4E+I)t@y%x%R*2i+`_w?4I=X z!sHFVKfZbXSwHJvi)}*N^rq*BBbIZ7RQ!(Yh*B_2;f&+BdNnj)Y3L8jU-fz!;9X{wxz3{K8oRa+CcC(+C$cxXi?U_QaCYm{2+!~guw%=o-=bH)p z%GoTK?RtJxd^ukCc=_(xHK(O{*}a8w{%%Tq;Hsu2Ip>K-#r^K6Hf1i+OUI?`ZTN&2 zuDP%DYu4BLYjuU2CnP`hSC-q>kt=&W#Us)3lxw37lk3lxlHgr7XY5kg!b6;|>|No+ zbe~c7EyuGv_a1*fXS1Vj4(mK|hSN{<9!zttOx3xP{i*mgQ(Z$&#!WEJ>*9HOLwfCgvxBYcnY3jNPMy2$ zmF?$SEG5|&K6e_QeVV@ZpZhykAvdpGTxRcS=-hlWEiB`S**39QH4Wa%DOkzjvGLy6w;0-tM0JvdQ@ItGd7qpKiNkD4q07 zHfUaZ$9Z{Qb7<|?j-O$w&()^a9OY4yH=4YlaoH4>n4bOOvE2&=k~OUBmb|gveZOM$ zB+f%U&NDxjT9~G32x=WrXtdb5Nrm%l*y8;BxpryN=gntdKhJS>i^8PWwT?C(zHb}& zHbp+U(`A>+apBBbt%Xcm{~vgKHEn-)Acygq2rbr=7i2q@TR-tqomspik;9MSkK}^N zzmFXsEOq+F8q+H>Z^!etQ@-terbI^xXGdH$gzK1Hv}6De?D6!^7rZ+ z2A`q>2lm!5mif-pBU&>?Y&0GtXZ0f04AMzWQr!;6I_j z$aR)SmT%Mj&*XS)6UQvGXP-9yT&DDT@?@7y(@p0u(n^<6`jKkF(bre*2Y`d@R$j>&S=8HL;u`Y z?|$-7_vcE_UsL6J#95eKR)1I_XuhV~vNT-#-lbPzYqzof-r9R;&%$%hm-^~|TYkre zb(TQNsp|B-4{Z;nc=FA()Uz^4`?F?;bLHmxQV_y zN2>Bx*7A}Iv&(prKI>=X@3?*QY6oJF4t%nNLhx*Ax5fjLCK76Okvo zbtj(t5anod$xOWXg8b&Fj~>=(@n=N;f9Y=FXynedd%LG!js3}qh0$f~zYb&xSfuc8kTP-ITM=Hy);%-V?al}_HYEz@gdIKG3yUIl##*{%TKVyPRqEvHwK;F7H)p@*4+l}#6dUe!+K;*x z%30m!F}r;Iu!L||@NA3e^(|VT*O&Ydy~iB>uqLeh=PF@$*IP?FHh)cNZ@z!0VA_NJ z+x=el@@6%RTK1bZy?N%Z|8)6D{iespvpUwv#J*>XejV&w019_EWD=unZP%-?(x$wJ#^D99#Z$s@C<}CH>Y6D|x=e#@ujKkrBz!dA(l6X`cVN1N$0{qf&1E zy`%9`+|)d3rO4793OZYhC+WSD)(M)bW04`d*v#!)hfd%N`LzlswDvb_YucN#o#DjS zFQrC_8y+~OmkTnyX*lfHQN%h$<+bo+$@hGR3U&tAx(Zydb({Eo!R=;GSW?hYX z{as7HURtpEHmhaReI{8g%?g$^es{Sya@aDTJi!)uaiFTZ3ao1JiVC#v~k$DQ*D`lKNt!p*QE|#ti*vEQZ z%xh!%;%@WE$4gH+ityjx>bKc^Cxb?CRAsQoCbgaJJGCw^NLo@e$Kv~Jm-zqJLLZ;o z7VhexQ@XUjWT(fW^vPSkKRd6saGjD{D9`WtD^i4%U-hjI;X1kZ@gAS&SISi`w;plX zz3|TVU#%IOJQwUEKh5-KlIUQKdmJu)uI+)^PZiG}9}ZtTeg2Kg^QFg`l#CZWpJw{> z$BqoU^8b5u%vTf8kn({o=oDS+y0bH*iE4*|n+5^B*~$WO~=E<88{RJQ@DC zzrNiO{caN>>BF&&OKu9+?leJ9iTD4+WSi{cH?y!M{3wph<<7h4zDVV;#;F_c4Hr-U z9>P^N(QM_R9J62im)^a*9qLlU?mBPIx2#s1orMVWed9lggVbazLW z8vn^D?kg%S`JS_P-N;O}4OU6pw)$nOt<^Dx4$d}rZCtbZ~nCbp%3f!x|OigO>Dwcwu2aT=;z5T82q9(aj zyCDCuF22D zd3V4?{^-Abd-wGVKTMW4^Go>6rO>F$^;j?P#*&A{wnwZ|4`uFead%-@9`rfw@HfN0 z_eY;~ZNDh4vaQiT*LVNJ{;-L!S&YIn`*$~-eehQ4!wiO+9`%H!ODksoz4e>wN3iCEMtJ6x_bU+NN{%Yi4(d+!Piiy+uYI+s5 zv{;%a|KRU!(g*oJrbGrGdaz-`v5U-Rr*+m;>^u^gE;iR=!EeR@eF>MExl)rv z59PR)l~qJERU}GsUOpINZYpZP)1apIq)z_thI6{k`$hFVq?!tr>LD60m&EGzRCp zeTqkCwTorVT59*>!c4b)haTOX|HqWwajNL{6_I=Ps&8R7JsseF>r=}0sp1~pQ%;vv z#<6S(oe}x)BliyGDcUBhFHA05Tj9OcV2-FU$64q4lv|zx_l~@=w3;i(#uUVH|CH*c z43kq<%xfOGvZhO&b=#nv`fg%?lLx)MR+laKfuru|HL_$Yp*-L92W*BO?deUUd?>8eRg!owMDo8Jcg z-ddCXjw4Za`_fphTS+r(W;n#(Nt8LDuu6lc)XDO-pZAMHe@^XA>I;0Lx*~ebZsqAV zxs6|LhRJ##>3Ar$p)zCpRJ~%WnE`L#O+FDI87HiAJE+F6#r*)+bzPIh_2mwoSJ=cp zef4p9w_#TLo=ek$Pd%l?6c+$1x z*Q}5qGY<%@o^B&-(7^f2P4Q38N~63Tm)0=_a(*&&4X?hkv!cgw?v|c|(#0+h`!?Ac z-xs{4=-RjK!`p|q`kOd%gPwe|IUV%$W1!KzJZH|1>I46s_NqRqpQc^z9C^ZV>b3%1 z?XQgHd@uR?zs1$hSU8{iz@klaSQt6xp1zrH^ImVoj1>)nT4U1*jP zwOs7nou5etrI)t0EXc1-40#uR`+)gMu12?Yn|Hl)nbxKym-o#6%9a0CV#}7y5eo?T zB=`8{Q}=0arT!;oG8C^i+%e7abHEmO|pPs&|&W z^85YJZ3@F_`-e7ZWiN$)Ik^TK{>eOdbRFvyS<|JDw$`Lw&if zRMn+&4}aX^d+8!}Qq*qh$*3J{9-0jbiA(E$_mxsPpJXg5*z)7#mGyE5zr z7R}n+U0%4=aLU1`B|BeuOkCdiw@E|s`$rbJ4;ddnWlXZ#P_k-4LBwB=#QSI4F4r2= z+1>iHI^@se0I7q9w%zxp=$B?Vd{PSelVn}At#4JE;5?U*KJRtO22tDhd#)F%_^0D8 z+r@EcX`!3gxo3I@_RsOpoI2l??~K4KhlAc~3<;g86T>`KJ*?Cdd%jfPsh?GWMdA6T z%9TD90ehCtm~pc8^$JBn9j5Ia{)b+lJoVOe(XopHQaq{a@){O=ShYrD!{?xri+Sb> zU7U3I)uW&{NB5Q2{74Iyw9}ZeubSORz+*}9i+jH(KkV$75fH*>@#|yCh2nLGxqr!Y z2F|JNP~|&bYAZ3nRP#$({wMF(k-NUmw6}kA^uv*TIkk+_8Im6yw3M0U7b(Ui$bEj9 zl&$5vIX-vxb)>Mrm?7PHbYE6xbDzmQYBemlwG`GR@R{BP}@*W)62 zhJQx;lLqPPR%frx-wr(Vy#L20a_=6u!U}d7=idjtpPt_*X(+MCcS7*y-{(d1$`&l( zRlfKsDknyad6QIuoQ{0w;jIx0ACG=ytw@To6PV_6%h^!*%*U%A5_9hBcXPT=`WYVB zS0JErMgLQ{Lga>?da=a?!oS&A;^x1<8=-e!$0@~;H#wSy*lKS?5LU zp{c4O3xuCMlK%e9VLk(!&fC+s7PBWAcr(`2PfvZX{i;7YUQ{MOs8i(Dt4uMQXKGRQ ztgbDgLVVf^#(GyD*q#1!=DGZ4$=_+)Raj2BXBKVk*jnkC5vjH3DPwY;j-UGToDOSU zuHbc#w|;&8Hem6>lVUSC?zpfsFyC%G=XNsslvnWbBO7&X{&lp@4}OxJ+sn6cui>)W z90C94QUpad`sXRr5 zZw`-vD}UK1;a$CFYE>6Z{cd2#^jSwEc=5d7GTxh{AFIYJ+^H?c`{t(V0w#&_C@=mp z_rjdqI?W3KZ=zmB*tP%NDSbKBoN2z>xvnWyI@i}NdUuUwBk$oHMsIcp)g|fO1&xL0 z!qZ>QYVnX*$z$1Q^zq{>54p*2j~ib&{$FB|s3+?lr~SUmB!!NDiI_MttsE<&tj z+gjdFoVuZ?`qYViGE7cC#Xl8>I;-V*|2lTpuz%KVN4*sW9^0Q7=IR#g`u0heSw~;) zVC)wjFNv9jS6ttmKFBA#h{dl()O>Z|wSKWnMk0M$vYU8$WXc!T2L5ZjaVbM*-nyjr z#trJi?+nCuwx*>!p3ZH^w`**CV6%RPYSf)+K8*}(W-D{~u~x@){4(9;X>}{1Y=e5( z&N613^lY2kQzy4HpX6BKtyKQlRsY7R8>+lKQZ+|CFEHM4n=IKr?U3c6eW#<&w#0h5 zKVrOj<5`aLU7c?#&C2_7bu$j%ig!;=l9_dm=gfLri4fo57LN-j*6(eYwaM8Nd?{wHJBywQ0kpD+g>>F7l1`>-w^w;nY*6jAQaCN%kv@YK4O?hIVYYe(BQ-<~z%# zIW67e)bjIh!FRvB31_6rv_;G_of(-E!&%nPo0Oh-;#0`c6ETOX|KBfHc{5w_j$iwk z-BL$po%aMn_G?GVM!4U+eav`;zGms;O_GidFF*+H~e^uOcW?kPJ29bN6cMj`bj#=|dud3gaA?eqb(6C_n z7JV1l7U#s}Q>SLTuKKUwFRozm{>Z!Pc1}IHPtGS=n&yA|CBVrr^RDQdid$TNFZ^C+ z@;7tE((g%Mx6P1AVlox{XDFv|kZA!k!$s|LSEVu~_|rA&OrAc^-dLCYE8&saW%F0h zpZLlb)HHaWFbMkK&D)~a_l;M#d(!-F-h>46V`&o~39291S5;hNn^G6B}F|%(`iix!Buc^NtAHLcsJhAUcP+TAXM>WU( z3voiHwm;&28F5g{{AW^V>r#%t3vW1SUD0ixqq;QQ>fZCUYZ7nFU$te`>zvt*ib^|D z4l_Miwv=B%D!jGN>XZG{V=tyZvA@>ev-XI4ck_$|kB!B)@0qjh)2Z2s45#&O^+o0V zbZLs@{3`pcua9%RTio3~-^?PX7n72_PA^r~@?|nS^e@qSUhz6Zz4NTQ4iwGo=~bWE zcUf}duaG-i&qs!-UHX;oa%H6s4Ds&mW~$r9M`JL~o&z6B;xV&^xSw#Rr)W|!^bk$!A2dHeawMt#>7 zA^Q^UOWiNNs}}{#+IXq9?22SW!cV11u1}nk8UNjlO%eF5^Wd=YmWjmJZUFLcAk*VBoA-`Yjj7j?b(_Y*VD>Qr~u{)zAG2hHe zZ1MRQ?`DThRGO|RE3-QK_Q#7mr1x`KO*o&*>Dut+P4+34o18ZnEBZVAs{9>ux@pSI z)TnhKvzu~V-={9?d6U`lJil5eCBC(~FjHn+MFj#i#z& zv1GwcL-pKbtr`|L|A}R3GtCdW9lK<5NV58w$eiz2X0Gbt+gt5;@!#uuR|c0UEuF!3 zEKe%7?cS|4NrOWwOz5y~Z1=X_T)~+KTAyUj?KyH`#j*YGO?Y36dG0ed$=s^EJa=PU z>1Vz92l9BPdU-n;Cdo%gp7me4`RAUjS35eJcsEEqnE2uP*S{wYF5ArUpw6y)6+^A~ z3kCL?eG;=?p7L+ICu?-+4H9E5{q})eUDKrOgO2H*uR}wJ7^e zcjL-X@dSmAe)jL2;ce0-{y+70WH#(w*VUq|a!XOL@rB&v;#1un*I(FeEjv+i^O~gi zB*kFvpB|Bgr`Hs)3YzLQ?by5S-DSh+Pu`_`Yw5V>9eA+l@o8SEL`ME+9Cr?^F6lh8 zQ-DKB`cz-{^4Y%1GP+NM;^!2(yv|#z({W{*!A0ZO2m5E`q#plMXmZDIhJw6Z+_9ZuQGi)=lL1Yj@^EjZo>^ zDw}iVWfbgZa0Dyld6`@mN^>dm{licsuk*Af@pSpgk5RKawrw{)!LpvQ!tTSV8Qc>+ z;w~@Q-=%Qh(3pMm=ecR3nO2Y31(x=`%ZqX}`?^AsLF{gT)eI}KSs&N)f4o`8xM9|< z>siw`>YixUla#-%dP@G@lQj#JPwPF=t-AVaVaeH-hqiIgnw0;?>44+RJ3R-NPqz1b zbzv=6P}ny$`v{koJEr1%OZQ8>slBIB@0gNxEHm+l?`57TO%8lnv2vc9JVFZ;Ek||roB#5- zUAs4a=}~H#vtj4DNybYY8+X04kkT)keb38ZYO2X(f#;dlUW}{LPjsjSzUSuk+-^Vh z=R%D$MNfVfneDoJaU~ZI>+D%3%0IrIn6qEClk?h!MYdYKCpf$Ui?^h2N#ANMDdl^8 zWn$n*aZaCAkDRAH*%}k$y`kT5rku<6&wIO$nSY6l#Dckot3|ez87oK9ghuVoR=RoYTDT@ZlG_}J89FNtuX~#V|An-el4CSd`#clJNTV6t6be< zhN(|truD}g2Kk?9IX-!Lg62o*tjr#*PT?OCdI9d*@3%n8uKG*w)$MAprDc~&u`Ss5Y9UqWhCX6 z$&hvF*vzv_{I=Q}aT&5pp7Z;)$3`lRZPOEn7W=*(OLJeW2|n0hw5~5Jp~3lP*j2L% zF@wE#WcM#Lcig)zrQ%d&)y2y?9t!a@1n=_BUgqE|zS(BV-D&^NxpBl9y8QUV7GWM@ zU}!C!*EP*2p6}`Go#vfS*9EL&U|3Sm&>1c;G4@K%7o#l~WjphpuVa6BS1q#H--~5} zQtiB|f6t42HtK7gN>J%=nQ%3_WNGdfj;99aO1G~F&4@~iIx#tgyY70izgnBaeO=3z z>GF;9?k(9Dp>MQVnj!r3Omm&j>Z`dD-g_P5(0jMgaAy8o%WaGQHt)Y)|+Fu`)jd*#@OG_!>&$Sn4vMshTCR^$q`u8j4uaR5dwxt<-k&eNK zuKE4m;dH93x5PB(DsSB33paKArZ<=@ZKj zzZge~g~$Sq|Hgj*E0Tm=-|4A9eX zi)&>km>(;in^@J{x?^51j|BJ4Sw|9(HT+V~!`irzd4hQyy6mu&bU z>-AS*TdCHbLkCv1%8BQEuk`A=5xCQ{q$%>X{QV*?Q+ad4M+@s!rM~37J^ZxQFiX{G z&U44+M|1X_I?$2RV^nqYEX%Uv-x-QHTDkho>R zzk}P@C-=<1o7b}OrP!KpxvoayxjHTBg}&}D{rWDc=y%Y6J#7LrbD5NP#&2!s6WKO)zscf$d*O#e(!c6f z#^^bPE{?iM%~b)x^IW^^rpnFz&dU_@m+3*_xljECq3^fb29@M1F6&NT^PO)7$HGkq z-qcp?Kez5>=gHZrmM3atzI6u7%X_xzhRLSM%-@*!j&54ul$H74V^i_r*?l+k*)L9h zW|75HcH-_D!BR$(8^u%3Htw!uIxP`)=wxnIn~f%?{;{+uT1L?^xU+_IUxD=ckDu)hAbOpWwV^dUzkR*NNjXZRVAsOb&cW20z|p zW(yolU2>Kwg)b|2tzLS3%ICH%F&v*|-5=#n_p!2wSnW13DM%&)pv69b-G_e?0$^&K8Eb zp^qx6=D*8s=e%RnX>g7&A~`pVTd2Z>b?4=Bd+xQ~CG$2&oL~R`+PYaiCp0~7`i1=2 zqnq0-;V;N?MtPb^Pwa%b@~@co+|74APoJ^He^8MT^hbuTr6Gcz2GMRKYlhtM| z>(w1PyT50>)jMqM;OSYYq;J)k(Ppr(P((Aa@XMQ<6Ra4MWtQ&wS+}iP{!(6`iu%o4 z$vKD08yS0NW}e7Bc_L8J=sNSEY*+U)=dZ4KbC~yD^J#r?8Kbk-dU zdf_31c%bM}m2I*O(rHO@o+ri+;!PnR!iym837-SSVa;K+0X)t(` z#dF+Ti+iH`(IjJdt}Q&Lvwcvh6-m}E`w!@H!0+vHa(MfcX5tz z^Mk4_8@C>xr_1m$X0y?=b)VFZEnsjqdC#}$+!W7MPu9l$ol&;@rr0)PE(ZsrJ&iqa zF4N35a0tF$ow${IiA|yTmrq#}?j#wdDoJu4`f_vI*4@gPE6yyL8NR(IW0}e!h0gMt zJw=wih7R(Zz4w*AWjGO76UHDSH(7dZ>l}kkd>XozW&9_1{9}A_MY3<FiiNrNT=s%C5||*m*^>Mtrih zJHMWQ=i0eFY#B?dEj&GvnUp&3J*}S8l)YlhdE*I3n!7JNy0*c!Bed-CqnwJ@vwlV= z>fKFs`5O1G>%QBM4nq~DHEXS=Mp)^dnkML4dULkRUJn0Tn-*NyuJPNSdGXz+OD|Y5 zw6$K};9SdARLCLZ_%13Uc%sY1{xEIhX+QS_IA+}Wl^HzEcm_+yx)+nD^zYQI*&`_v zbZUZ))BB~eqS5xrPi>D*HcUC5#cSJb z^{LLr{_k1aUvDwKq87g5iE7=!g&(~%^`=jpRKwx+cxK(gOIhspKeE1lQ`5b&u;EB% z>V&sPlbFA)m#aBr=QE`tFligZqv~hh|H*GpKYgK2hx64BA5&y*=YxuTods;OV+;^0~Q;Ue$4%Uk3V49`T}TYWTIDn;D* z@p87`Yt#Ex3eqM`@;p^jKUsEx^v!f8MI_k<>Yx-+!{Mypnq4@O8Kea~Z6QL3RiXK*&N%F*0SKR4Y za^y!``1^CW8JBq~de4=6ey55%IP09&+hZ3GE_<@)Nz9$A6_zLFWK?nUi>4mYWS+1# zcbQZ6riR6?YB}>bmp;8VtEfhKL!!6H$>ZKM9H8J<#$KXVE%@Z06+fu>#i>vqW=9Ptgv7TU{esPsw0f(cG zUDqF3DLZ|33|x9z;PcP3pY(ZLRBgi7lypppjjfVvKkRYU?4o?6N9zhfu?nk6(=YLP zpLcojf7uMZSnXd&_n1j6w|mgBV3qN8Blop$6L?D>+*L_?sdEGOO`0?k*iqz zPpUVIspJ8#vs&njXHR6?73VkYWl*=@wlFGBr11tK^(z zU8d{sZg_p=vQ<#)3{{;+>zW_1CogDSW*EWyvo*&nUeNN^gg>i~^uPJxH^G;KC&{+| zOQUnC<>kb#Gbw@3UobHKe`)^D>2cb&;8u_KD{?=JKX}G(qJ3!98U{{=3yRvz4L0)% z=gWK(5964zSY<-(G(EHHdo#~?-dtCCC)Go z(LKTE4g_Aiv9sz#meL}F$i?E9rY}%GI(e__JiaNH1QmsstUg_S`a`<%8U9|8SiQUF zVq1a)U*0OM-_c{>=3aX7RL?zs_1o3`D;9z>fQ__Li$xL;YWZ)V>0T{dA!ql54F8Fl;3l^MTAYB6fCh#va+s4a${ zVRN8~_e9=a@2Q8^nNKL)cJ}j>{||Q+8f;lSxi=*|`d!lRo9pt8_`fb=p01T~OZNa{ zxx~47CKv0%oL|oWY4yu)hm_4_mhRav{ZGa#lwS&1a>?W6@fTMe3(lnKEM;w&eCPcP zf!-Mg5t$AJ_N)KCIcaipa(v=zvFm}KXFodZ_WsXhO+KE@7vIFUige|?kYV-wd;G(# z$uG6)rnQNPH`)B(bh^W6(ytp^mEE5#IiR>EV(Wf=^CV0lZe!Vzy(S^_9Aq2tE=Nqp{=ibiid05%=U~Af**==ku z?#tY7=ZkYu<77g8*CCcSYN;n0{uydGu5Z|V;pMb{CJSFoFW!|llVhLa?Lvc~l#(*`A2hp+owyt!4mj_FVQS$OZvJib$jT}e;YdMpzZj(zF2`k=0iJ@1na z-{aR+7^@d3NGVMD^szuDfH8+xRwlgoWw`?6(Mt<>Xz7G^M{j4;Y}A|WQ^2(E_sQT35|dhI75CIH3Y$6o%DRgS*M_V&s1EuNvsy7a zZ>zLM?E9NH_MUHvgL=J-ywpDA^iadRuwNA?jaeyx{c>oJr1|5q_NOI*%-! z@Zbl7*Xz^UWEYyK)G@gIHjh&{IpgznSx&c{35I5KJc2%Ls((Pc}Oy+ZseLvk@x14t|r%KkM9q&G7uDI8APQhiy zSFN459@v@LFuPUMZ?B%#b4hN6*|LUr+*225`c+jaasQgvvfXY%FO$Y+J%%+w|0eJE zt78|n>2aH<+Hzcnbr1W$>`RTYk{90m3|4ef=XLixG<%O&=cET4?t4e&-Q8I|S4nhc zyI1jR_wW<3j4k3GFV?Q+?wlcO|c z`W2CL=XZxlxlKRa>$jg(qce5Mn|rf0CMnL=cy?scgfsOQ8)i9i)I3Xj?WN=L@+8qtIKJ2_p`QA2%8)ZIAMK{hl8~fXLY3={1Ofk!+ z{1Q}HchFU_UDo)@3&Dj>e-msYS>717M6FLeGdaKD`@E|&6d5NRzkd4R35kUaXE*vb zpSl*st0C;tFJvj!US#TV&YJzqHnDl;UrP6`^-7FcVa&BV@!L+lAWvO?9!Vw3(}xYL z|IMH3@v`V<$l9Rv?5u4$rM@3#Y<--aEqP&AjzVzY^u_W``d?nl^=|*e{!nShS0}q) zM|8c-L|C#@n;zRb{n;EC#?E;A+#S9&MgMQ23YVWsEmTU{5$ir#P-)8@4iC%9)X$mE z9Y1a6exIRySZ5FC4c@LP0$;8se_ghoqLNiH!XEc6ZusLB4`t zeY}T1Bo-KYKfUmqBh05@`y*BR+Xbc3ZC{NFou;YFz4Dy)d&-BY83#D}SF_Z=f3aI| z3Ui_Hsat06p7l?8^6-;si0}QICu03Y%($QKD!6*`H^+w=0zU1sGyh&>$ksf6s^>_$ zy}a({jOj5g%eHS2_HJj`%Dp9uySXngy!_$iU+t`o?{Z_m&VBsh{c$PZ6`h+|-Lo|N#VB#}YntNeMVEWu=6x~~ZuM_77q!gVY4h0b zbnNGOIU7ayEMC?ABt_?gQE+oa-KOi=Tf7_=o5`ezas5oUyuJ1FxfhL3S@~vucw#Br z%e+Wp!!?6FEwAqEP;s3RdEMkZZ{_l&$hym^QSA%XZJyfZkjQ*wd9J7V-;J>?E9D=p zIjkOjPfqi`>+Q^bl^%H~R+rg-S9rQ|drVgC%nMl-X4ALTwbZF1>A3ysR&VZ^uV=Mn zp3>e_$t^iWXF{dIfwP{u9v?TXZd&r@ljg0yRVQUrXYKg3boSKG({k4frA*r89V2{1 z$M8ji#>5nd==$C_-g|83JXz=Yb0>>eai~L!2&2>Oc@n3&rhALjM*o_^5Pdr`{q{S> z_CK!#nmky})+qA5HWSvBmzLX|TNRrxB>AP~j?aSKf}gcp_i$hG-c!G#ue8u~k^Oto zZbgZ*!lNhrPT#wnGpPU#;?+=s^=%oyOzGIw=Pxs;Fq3fFALHV7HvyC)M_8K zYMu+`+p{9^H!GilzRnAQ+SKj$dwVg6yZVBhq34iU|UsUXT`d*ghNINUDp8Siazj7G7 zFNi;tzYgp zwu|>C33Ws+Unv-KA-hFo>x6?b*Le=EloFosEFrCB;`dv>Z*V>|?D-VIr_QN*cD?nI z6C0b;Om_SioU@$kSN4gUtQymmFIpY3op@j6Tg91Ix*M)aM_n|s+HkYw-^O5ho*5gz zvz|=-UU{c|m(jMfO+i%#|2DK;@@+P_5bw6a%K7r=Z(6RIKPnb0etvwNM_9I`X$99S zM@PqtpZs~_pF0U0ci<9TP(k8546Sa{?pm$r_*wsVT%a#@pvYxfz} zItG_7nQ*+!l;7n44a3O~BCcQI&0>g+IgoU9slv5y9pRA&dek`*w*M*M^fswqbZf0b z^{RaSPnH~JyEu;**53R5p5gC8R>O-YGRu!JU(IV#mYyN9F4=75gpFNOvz||sys=$= z`ZA6hA%X2eEb_^=H`NO~RM{G8Sc{1fj zlJ9q=i>+yr&vQQ~pXE@9W4Yemt^Zlw0Gb z;MR>zucjC!*j(^^Q@hff z>n5e|4D@new~Y00eEiyfNt32G^B8g+j`ex;cSGtVhKW)|^X@geoKjPD;?XbObLw8T zzIfqwGv=#$zES>=_NMBkzZS?v zX5VqhaBO=g9DiEVKJID8@jVNhE$duc4dYJmEYOe)Xuo$jhr{H?{M)-<{$^P5TGZpz zi<$O~QF~6tYur*@lJ}zRq{6{u&$R(tH1)F!4dkbIR~(xv_$o;4XXWIWo$=MBPUqZi z83Zzzo#$hkWY=^y=-P7I<;yoaUYe|;Rrc-GyA=#O1wKm^{#&Cr-@HL+(m$S+bFGD2 zuf;BZZQW_R{KfM1^E<*1mEHT^`N`MyxW2O7`w8X?mQIoUkkpolk$f{g?6n^Q|9h1RhGw$oX0_r%+Gh0*6M?#FfUry1N&= zeD6Aw>;30%@qg@Zdy=!b9$e5ctyWVB*VNgwQtDa9`@Gj*ZztO1tN&a)NmA~m_OjVb z%qPRoIB)(tm0{;Sv)4i8RW^4`mmEl4dB#TCV(-hmGe2@2H*OaY*xq$-O1&aaR>E#& z`{~V13{r1bXZy8UGj=wHoJjAOHpAem% z5bFr3@}8u1r!Q$mjBwwdjS2^1JLaD)_b+@H~D{?uyhkl`4{Mp$m1jMB`Q`WOk58gr zKVEL2Dj)4xedq@JS(!UB2BLNI-&aRYb?taJt39fvB!64O>Oj?wQ=+F=vWZ@mpK@|z zveh)@eKGCk60Iy3IBpYi_-00sZo}rM+qE9g=KC3-HS_t37x#+JR_Wd5oe(?i zk>2?=uR8b0cD$Q)cYcOcz*O$==E4tMbO<+Tp~he;-$ew5!KYo6*f+ zkYXG5zjNyK$UvtpitZTW^OiUHacoO)2CD#9=z>Z7`bugM-wg|%9!ort?s;-X|A(uktTp>q+Ru@7 zh}hb|5!JiA;_u#VuO9VmI?2R%FJHE#R&kPLRpBuxxj`FX5KIywCJA3`1cja^El^!*8{L2-~$gkF%#1J&C-QppeHV5bH zo8OvGZ-{dGCbg`EYpHJCK9AGh`>yxI^yd6gGSr?fv`scfv}|3% z)ms1?6xm)eb*KHetGx|9xi!3em!C~+ znz4N1xfxcr3z@1WerB_nC4afBVRy+gdGnV7mg~LKD)t`NTGlg%>#>pHm!q$C%r%wN zQp|UJUwnH>%_qJi{#-(}e2kmcXav3KOtOkUnX)@sPvOv_znyo(OAbeAYt_fB(UV&L(^LYwByU!oH! z5oa4?8lvX!T5|Cy|I+XCR78yA+;=Dbv{>>z)H~~8&i-xdD=UM`Wdw8?uFZQDmb=L9 z@f<~+i`Ug07qRH_oMP6vn_f0OYsc1j#$%IzUvhZy^`N<1;KsCt?z_x4Nxt#95z*Y2 zTfg^2)por`PsQa529KBS+UfS+a=-k#D^X|Ht#?yctZ#a%cjCK zMHFYm{n~s$@@e1lSs(lvg_Kqp{5|(hpzGmUv4FFeOOL$SE;N~`cv<11|39Hzo+&YHubciq-xK|1!ODx2Y+7!&>^h@U)dEF++hy*72HNrB#*7g6@t4<)x}{Ndexb>~i% z^wxR(vpI}H&on3(?EA>YHHV?@n}D(V3wO&~tL5HEC(N}}wQ4GB_~i7OvEgtNpHay5 zfqn0$D{%0S`FeSEPkVux;Zt~lfG#=>ym`ON~= z$h|H}?|iyA`##^8k+&~m;;-4Z*Mv8zZeZz~7AAVWSU2~`dWF{xVU113Wyy7O9eIyj zw0;z9eK_ybV&@Zg=U#HU^UEz~`qmZcmA!kULMGm6GVE6EQac_YAzQ6?hx?>9XZO=H z8{XX8xyN}+Sm4vmJ+oI#F=sWe4T*a)@#T5fD8E&A3{5=Pi~CHzev6UexnQHgc6JND zv87yY-D$o(N^=xSE|?vz%?vE~yYtc0odUu$C+QvBo;G<)VB*uPElH=mjOz8CbSXFK z3x51yTp;rH=XzxkFFTe63ZIUzwQu@V=awv9o}AD9iq*``V#cxF4{U$#@77=87-=x; z%!OYC9>NBmCeJT~#cY_*61%s#cGWE<_MP*tt~2I+mbu4F@ztXD0w+8smMIEmCVtM{ zs-+us>(q-CQ?Ku>44*OEMOEgF)aEH$*sGr`^m(Byee|;ItE^6j#Gj)6CVfdC{{PEU z5L)1tT|4@8k9^((kDe7SnseB-%~zW9!ObPJzyIVkVyM`u>|hpddn|%=F{8-0 zz{B4oH*cA(VDw+ZUgkCn|9$D(6L+${idv8w^<~}6Al?*-0>>}XqK%T8AA^3Z=SjNS z^0V5vBOv~g+z2(Z%b(hGszmGXBRkzUZx`O?{mjE7#{P=OX?OmLJhoZ=FZeB%ZR*U4lxpFTE4I9{ z(=j&wm=kkE@0Z@A$BG{ou6)SwBKcE5&G+E<5$B8-RP=pdF>5@qgG0%Oy|=@1|*cbvRa*$%bdh*Glh+_<4M7PU-EY z!p&lb6^^`P2-{k=Zt2G-+ojLyP46leT&LhMZ|zZySJJbh-pt&&+VAwowJe*PN~+Rt z+Runf`l&WmeGbb#^D82GMP2zESA}@Cy{jyr*lPTNBTCY8PWIQ+Q9j8XMHLr}dP?S* zTvhxb>SFxuYg1F>+bYg~=L_o$e)ZmWTq96@Fw^wGHoM15n~#`IP)tqNpS<8lN=?em z&5sqPB)+a`>D|@y7km$U?#^~|r_hIk2WCdDx%J4<@8d2;rQG?7cey8= zD?7#)#E}&i;&!m`M??5K)`qJ>B1a3>g|f8&+4j;fM|RT{r{4*eJ51x;`gFdj`X7(# zG52B+;+*)kW}WnJ(-*HcW!ZY4tcgux{tZdEIOHX$O zd`z2SV{!2yvwL{7FejT%;~eLnat6b-T?;P7oj1+TZnO}STyZAMtb0WonjFBZn{-osT@dS>r!m_1t|d+D_>sv_zfsrM(Zf)0 z&aSLIFL@_Ke{$t`dwjB!=lRFGbyRAvGc010Nx7fCGyBVo6VIIP%S4xSbL|umI8-b@ zt*}=*AWTW&k<>Pp)j~&(tZ-?0D*Alm-a|TJc`s~_IX8AT{{P-B*~0Q}Ptc)TA!S@D zzTX{Em+x-F-na7jf>Pe+1&ep49KXmnO(2Ag(hrb)| zKD)I4=N66|oX(4)e(s!+`t5C)>ka-ap`fjIG}Wi4bFSFZ*u5Zre%P`O7D2rL#fL4y z@u4m|*Q#>5yxg3e`7|R}c~oo+!zdPGRJGX&bgXPryy!iN=Q?0unLzd4kFu#iK~`|~kmkF+(U3zvd z4Hmaw``&9kcR=X!>GwB8Dykd)$nk#FnEt~yw3XTQu++}|H{(uzc)Q6@0jD<-1p=}b&XjbUt}I#P;5Oi`L7d?(BZ4+ByM%tzTX^h@j$xkjA>hvZ6l=? zwWsuOMc2KbnEhgVmnHKirN44_BP&c7xw!v0zU2Jvd_1%(n3oKi7 zEid?I@B7bg^;lrO*QHrQyZd`=0(W<@(Fm5tJC)&Lte`D&5GN+4*H&l%4cQ1YjW#r z-|+Cw9De@^(jER+{u*xVcq!1!CQvq&chxrzM>+W!t9kP4{C8>{Dm!)}@9Eh$69O`R z9{y3+*ygqK;KE5NM;$8@dgWqHt1R5+d|6U>&AY9plkODOc+D#|w7V^Pq*GT=Z#K)) z8|L*E$r^q0CGxi4d@t?8Vd&y~?@vacf@8q@z6S!g1Yaa>c=F_@%2v(YADF^c*)?sN zx^}{L4bFS2UoV^Oi=0=`7;09GzJ@eQF{6FXYs2sK?H9->s(V zye&cOyUE-8JCZafr&SbR@T}=zxG=pe%iUtjTrt_FW`8Drn%fhke&fZj1qmmv`Wk%M z_EV>f_hOjBe3!V*_L=urPQ889SH0F{rF`Sndu;n=RG6x9>Yn4hp!RnDi(}rlU)H?% zyj5FC-}Om)6LVC6QDTvF>-{akJ3^;w_wqjZ)fg*h$i4SZwM62CE{};S;-AADs3Pd1pGGKgoUa&4&9dPoGa- z7sgmsJAFD=*RPaAOLAs^Y^l^@b}&fL&AZ1_dtl+KWB+di@1DIvr(kt|y9HC)J5irm z9oua9w3L7QDmM#oEjx5hetlfn-mjK#)s^(G?XbReBUmkFdBfiDjSewSrJrt7m{4f> zHc4XHonLcGnm&GCEff^Jl0UaA=4#9I%SWp8if*WN+FB&7{};3~vtO|+JmJFR+I043 zC&RgRGA?@X;pl_S7ZjI7N{V$}k$+R2yyVZ+_uS&P!IIcyN*8NWQ(S)Tb62moOtE0iNLSiBEh9|nA6VWowxlf=&{A& z_q#mB$pt6bnEH;z9MOImc;)lH{DP!E|6j4oE;(DltJKcT zy0y;Y;4$I7W{<)(*;j^4_rv1dAW&*xdoF6Z|Doq6qXJiF@_Th_;Q^YUWm^_57gZ(&O@`DIeaCuo>? z#Cg@+e@2XYHyzJR3P17RX6}tQ_aC$~m)K=GI2s*X-{5s>&I*^ycP?07HJYYl&c?EG z|2)2J=bqj=wu0}T!On`fU(YusZ}ySc=OFR!!BiD*&*v=4vv$3>wT?IW!vW>#{~vV#g*12DR&)04xUXnk7KK1xV&48^VpQV zx*G$gMo2E+U;oW>_elX0)3`SVhgYA{o9p^}L8476r+C@veR5n56B)BU+I-jW>~QjDKUqu1eT#@;}0)A?GZ|7&GVy=q;S6F%pP&5m8wpE9o; zeFB+Mx3qMqI9 zTldFz=FATH`>*EJDT+pBZZv)M;k(_+?Yr4IXS%)RN;Y_Mw#@0+p+|pN*dA{dS;Oh} z_rpgw&;Kpnt1b1WGhQ}}5Vi7|XSiYE$r*vkTz?tot2J(K=BnF$wRk7fu75^*HuhdJ zIlP)-by$I$GE-&iF_+?BhaG*>8eFxtbkw{ewpa9ScW0iVdaH^-<~gU=arY^o-S)m! zV!3=s{b-EK+NARy-)EoM&aWQN5Tsar=*e7bwcL~6RIWI^YS}7tBzSc}Ld}-DKEET+ ztvlWQ;$VW9H#5iPDWQK)E|0cq-nxqQ@#DRU6-}=CEy4b78f7QzKczkkTXH*8RqpLZ z?kgM(&l|S=mEwH5|5EW3y=cZbkvJy9t#|okW@|5wZF>0Q4ja!CYq6hMQ|CXHGe5lT z(5J*HXCHsn{@QgYbJb1HA|2+ahm9doUG)vMA6f4l={V;*)!`#73a2{ zYL=bYW#CsP*#F`D;k&cAoDT_eaFtl;^*@^{#j(v$<<{%9MI6-?{H7*9KX;z`+q#MW zzVtWgJKX`>ZFp{Zt|(yPZLW>Jbk^}l>gMZ?wp7~UH$Fzv*rihY2bd+byb=3!;~eaQ{}~q5PmD?ygw9*|z`)UALPhikhldZ{lNnw(v&W=7 z`Q@o4!uLu-CmO&!v=<6ax@_5Axx#`*Y+X(kodo_u>1yil%i z#>oq(E}!i0Q<{BhUzD{^p;AiA>ihi;4ke1&Inir1E(_-{wJ7&()U*9@i1lUI71uD^ zPZ95|%9ky0I`VR}>Z-*nGelgA7BKBknd@kDu;tLYsP9&Wx9sv$IUQD2*a$D(Je zo=vRov6EUPl*zqdq59dx)fT}=f5h-bHgMnVk{149^s&B_J=H01A*;D(;qzn3^P0Yk z%Smnff7>%s+uUw(tJ{Oi@~NufQOw~Xo~a+Fbm+CuuTqRrQ9I_LJ5OYVcIsNA;*1?V zX%T=C-eUo@$9wtBeGkwx=Wbf&U&WwU68bDDhxHl1^!zSkXVDkzb5}Q5^3zB|@8xPn=GyCw8Z0d#tIyg?vI#{r zC7x(=`&bsrvOFwvU*wuj{pLp&`fNv8mY!L;@xkHuyMJ-Wr+%FET0P9!F1}5Q1bCKr|KhKk?WXXLS- z`DV^q!N5EHwdpyLbGeo52Q$kYcOK(7v{z%c%e1Rg6La1viJp3O;!D7Un_Is<-*+y& ztI{!P@#0keNy&G!TjSbtttVVPd77t&YmvkKEk|xu#&54#IzzeAS5@)M^60x^>mHw) zcwp7CiaWC;>+g#(dhRP~E<4S8;OpcGN)fC}Z};Z0ztFL4c+~!My41T*3A-nM*>QgB ztK78*BKBN-&Y1dMa8eVG&J%Y2mmzO-whHbM)UA2?=hn~ii0!R%TOYqXwfwEtN1xh%;9=0yoq3~Rf!NERcem)R~=X7!zb%nUFP>?G46Ua&0yxCSfkyJE6bUCUAQ!jG^Ia^Ol_J{I=8_2zh|gL*p>cm z_p%>e6j+iV_pEMZS@h=&pQ*=WUQSuQx&D9u)PVcz%s4`MY8^H{d+5c&*j}hLyMM;+ z-)aXRN_#%KR=MZPqf5CFr)(zK9p_0BS!2huM78=si^`#GXPS3+T?<{1KK)!t%g(bq zGN(lKHSC^nM>DCM(OhJ%p|n%R%3UUAnL?jtmaL0j#lGg`BXK*P`)qdt*FMm!ylKj| z%|G%`yX~5ehk9k3SGwfQe0O0VK_^-@2 z{Q3q}I!Z4tYMwm0)sywtc^~7zl`9{|ys28~8pxw|AWz}sK8b3+8g(YI)0QTSl@eax z;8vGwFBA$qC7L#OiC5NDn{6wk)fs*`^zBNRvC92%$F9ypE8fihweyB(@+_5eYzOr( zh!(2+JK)-r7&txX{Hn`Z&bcSHF*vzdi0>||{t^Ch#sXcT-O9gSn0{2exMssI0^eLrIOAT8smoI?% zyUR5_+x{z}?%b_EmYI?br*8e?%v969n_*>Xb@}=8pH?TCnS>psl3#^g7ZqNTyn4IG zvKQ+GkNkKt?a1WkE8l8G{;m4{V#8L2jiOtvYVE~585nZ8qW8`@tG^?ygXLY!r-Ke# zj=V{lW%y#}gX-g^J5%@#F1Jdmrq-^$K8w9>>wnX8EGz8JPcB<~+2nra1;5QzcG_(# zj&iPT`h9#p&q@)VJ&S!-Wz{Z}`@|}iaC4T#?ggdkw}TI#Iry%O>*HOWqs-G(V|K)! zob%q)^hnUxs>W0LwsjK@o=gqiF;RDA^S|p(cTTaNID0#?ajIcZ&B8~&^;x!aH~o^? zVmLihQAcF;?~M6O(i&H}-*{=Sf54=8;qXk!lgkX`3}(f4;gnd}YL zY^S=bTQ2b*XE|G^vFY~F=%$%x+&P%KOZ~Bsa?udr@k(-&A)ccbDOF4)A*(K|3}p2efA zs(L?X@13o>IWMh#fF2cf}cXw?yHoq-@Ml|;;;C9-Y9*Ybx!$J zr^8+3thm4Y3b?22>t)b0aj#AP?6qa~c`xogG)sk=W&#$7;8C+{)M)siTm* zN?zdV&RaX$C!LrOzw1pz^^Pmfjx}eLjIVwX+uQTu&Vk18oqV=|PtNE)pMPoJ=1QiM z=}kJ0kz3-P966(PNO?okM*9UatW2`%$t})mQ?$0##GaYQ;~AvWqGqEg&+&0rftY4b z_bhhLn4pERO2!wCue`;7=}Fq-*3Dr}MI7fYf4Bd)$0g;b-SSwOB(uI(=F>KRym?mC zrf$o6Nu$jlXC66nMM8VW;w@A2GK40oKEE4$AaKe?^OqiPmiNp4*<#JoJApM>_xaLm zzTXv+Qj#)_ZKcGepY3|K?%|<=+FJYEh!t_tkMD%}+V$#O2J9%3-Xe2?``BIGcE?f60;L!aEx!#bWoEsJi2RTfzjo)tZNcA@mPyp^Qg|4( zhWUk6nYoL%hG%w3v)DubS$kNYzpquhR9LZx=h5_cN_)e9n=vR^|5bZ`?7-fIb}M%% z9NYZ*W_@Clv%g{YbMal?3Kta@b}Zz*sqyx3-pe5E3)i0ho%41^)${O4r;H`u^K6>i zEg%N@V2Z}y%3 zwRxtjd|Che+*NYFluahCjyKmldHHmcW9OSG>b)9&7AYTI??0{iR*B|Y!=yMzxrTP* zt%5mvS&vE$KXI8tZrRkQqervTeF>s5j7x5x zHM+LnP1?lY;KC)B)9Wu*?t9L`+cRg5dZGT8GU1OC?{H*( zd{peJmAa1Y!86_Ynw@!1wEqa5tY33UTj0xaGf#uXIu?zpQn|B56`C%!%$~b=Pb1@X zKcl!{=W}u=ihnXRD|^JAWsWX=(D7-VW7*G`@A~$l0gd0EZu&HH*{MVNnWtA4%;`6p z=-qcEtHz|$=Jqc3Qva`KdA8R^rhZR%XNY^s)~{UGR-xn?`hH%=!&!HwjrLBx_iLyA z<*%>W*69fgemOK*edUac>=)fEdDbP|^>Wyt%l%+qNu#`U>YdQufEgb08-H$W7MLa9S`REol;GC@h82mm7S;HujCc3fDN^ktLst(rW|<`ztsL{cETJk zg*cru{ zC)VptKk~JD+M?%^WRLkwYC62Ct~)<*>sI;2Z+{nE%76LkzU1i#b5#77L?pCi)c;;m zW_GGi$H|A|ajWU6@(=uR42$9$rk76Jw)Ei+=8#7j*>YPm9i93nMcnat&k=U$u5sq6 z^x8+qFWSD`c&REuwOLfRwCVVB$LM`Rl8+u`S~?#2r`Y^^z0_L9$_j@`wt8Il?z2l132jCwEB*UfG%6|$O)P{R6 z;}Ke zk8fhS{`*$sJ=4b20I$dXYkzDM>|SuEAw_IK^1Y3L^J6Yu6%NX+-#+)%{PlZ1>x5Wr zIut5BWlop##_r>Pu<*wnM~VC`CR}CbSMC+xtnsO|`@l!%9Sb^+zj^m@(q4AS{I7Yp z!lD^vqJ+&`Z+_0+7^3gWx8bvsYjf+DI-{98Zm*uQX~Jixs>c0>j)sdEzi%o&Uivxu z#G!4m`(CXQe|*VHseiN5jYZwD+Pq5-iEf%?Byoa$ip6K0`){uO({s6f@UW7Yr$}M6 z!Ow}ohbKq2Zd%=ZVojMs`wNke>`T7#xljA(w_r_5_f9R&57kAfn)9~Qrt{yq;m8)5 zHJ7h)I@6~7W$$l1U*;w?xkWN&JHz+SUeB3M-gx$%=cO{=R-q3P>O%EVPAm&I*JOVv zn(DB5drgT&+nk>l9Og@w-((hSpU=I(H8kpY_mk#7Gw)AM37KiIJ4J7|^qvyOi^Xex zt<3x9vw=(Cl7j8Lkdi(9>x|QX?kKFhz<2l4!4$`xNmIlhIh%0x+WzonPMzqyWOkX; z&NuE!LSMv6bN9}@@F724r@{4c&g~xpiai}h(tT{7Wt~rLmvEYYr;GQFY|B>eyH7s{ z{Bb$TAldk4_Wp$|<_s|m4xQ<;rp`Nh^BhDJ|0!R7I`{sHsKeG$2PTR?Vwe}u$hpL| zc-~o->I^aM`17W+Gi5|3?N#Sw7cFc2x7@01k8@4hBlcpA>ES#F-XilCkTCs?o_;JYM)vv!SN@kuK1^DjjQCZ$ay!#ct104`q#QQF=<1CPUDA!xSbKl zt_hU?Q;D~;(UP)1vHx9&8Ph*8{SVuj&T-fZ{ZzNM+vM3d|4@&6nUZv@{G1Dg-_C43 zBYsWq?uN2mF)DKRkB22?|HzqiF3~~s*EgFfJ-h#Mm)aEl+j_&-+|K>Ws-NFv^!Wco zZcg}8#?VtycPV7sL(Yb{XDeScUHRI&fGgtUx3EnQxI%2K?sKo+*Lk>2qIBN;h*+I) zww;Bxfh|WSlyobes62I5mpSvZgp#zAQ1*-cavRp%V#sM}lbF?dULxuLvDk*mm#P{H zPTa{$HD7P^LBb(qZQojH(}0q*%qJ&Y&H8#EKk$uN_O`u_Rvgxr?&0o_7Yk0=P^BtY zbz;(W{(o1NBz*jnu{VA$tI5Xq7N(Z=j5d8WsZXnKH0^$E_KMHW*!lZCzB5W(R^c~{ zuS@zZ5-XZ;CqACHo!eq3XHDniDHgA0ST4HB?*5=+qS&!@YyIoIf9(=jHNmTBsqP$W z0d|(n?|Sr)cvzK+%3j<)q1E>8){U#f`tL6CDb4iwefgt8Q&q6$+i77FotQR+{BHWV z_s&-DzK2W<3SS})UlRJYqAqM{LG6<#G38J8d2BN=oUwk=v1z;0qEd`_zDrDJ&M4}P zJyJ5!tu85$0}Xy0acStvTFTICa!8M=#L3L z^|AEXo2uV+JWAnb)w_>uQObY#U()`PX9@phvBPsE4*2dmxOe}#J13@VGqmc>JfA#C zF7~^<=1#GrLZ2RQ>z_ZXQ}N@J>X+<32ZY#fiN?S5`sseJOd)#P*Pcl_%YPoOK z=RA9>VWTy7WE3En8lzh&SQ{!&Zo8plxC%MMSh0WS8J1XU3W0$nAlVMOhU6i^>cgCKzp=&2Cel)}3z~;ruCi1O04bIn| z-TK2JWg7kNQ2(qOiwpuLN-s!Pn4$h~!7UHt#o`YSi2q=}wQB4Bpmmj}n-bgqxP{&Z2x6zu;;M}hb}(I4E`j!F212-`qAu!*mG;DTh^9U z_CB$9a#Ud6d{();;%#VH{N`LS^Q|(%{YxgsTPu48sC34k4U}S16SN8y?=r~Tm_wuQ$UIkM#yQkTbi{%D;Pn9cdYc!|vyrR|M; z>N6(i?LT^^Zfcar!l!c9Ukf?bUws!QQlL6v#pKFe_b+(z%<*taNZj%DZhGqt^-De# zGo4%FFKAk|t+{Z$q0;3&iCcud>v)K5f4&+ckB;@fjxlLEjr*O)fsE zx9sbWsJH)eOeTIbUh!z!Qd#3!GK|VUuj#pMXq)<6SL@B!6^+ua$9pwXZ}&ZtG85u| zB58k8w$c2OceJ>bY#-x;TV-OG_dZWO+`gOp|L2{iZBFYn&*olZ(^5LD!FM%hqX(*WCkN zZJpNaChOA5TJm<=A;uo|*b9m$PI5CFww(RB%CKErSA+TVEuGl1dy;dC-LeAN&flA! zBInR$x%1iMi+h~8o1!1Q&azc{CTj7-IB(wJ30?BZmyF7_+)m73TEV(PmR;mZ(9?p+ zs_y*yo~E~(p1qrUu-s8XN`Y@iYQENm4-djM1aD5+JiBIj#iFf!A>CVkof7-P6_EaP z#^lfQE*B+8sboxicKq~}{4?JBmvE^1lyYn`uo7Hwc*6=ONyeW0%N|~liL5zxGk)#@ zL4DS~M~1g&YWjW)+M%VQEBPKd{(dtdv!Obt?bP!V7uN`k3o|a(9ce4Fw1+!!RfxMu2AHK!!Vm2m@em-2yXC3nnd%0>;9oEb<`X|Dbw(xZ?tkbwKi?PH-UwzIl^);dU*Q<8ETyv~6 zLE!!5N`>V=PKen^HFsNdK9>E-yU=HDcImv=+7%mbm`+VR&MWgG_VV;XDa(nq-Wz7V zJ{a(6(JE=@b@j);oPKmuRr&mb0}KZl^=`=B3O=ydzt3_ytL9YR9LcBi3R{v5?>+i) zZ%X?*!-IbedS*p06$+G9Idx&-EiTomT!zVwk*)iz@@MT9o-1-rIE<%5Wb0n>i|-ra z9RHu@ZC3GV)#cL4=`Ps(oOf>S|E+tw+n8@v?^wMtFUc}^DfOqV{W9Canm7adl34+7rYTl@ zc`3f#XomsY>u+LvRr!DMS87aEczR+>f$pv@$<)5$$z7Rz|Kv9MT)x`Fn=hI8da}!+ zVh7F)ITnLsGahOm>L^*e}e_EJZx5uWb zt{Yiz%i4X2d1R4N&7eQ&LngnR(cOs}mrNU8o7|JV9{(bW$Mceb#|!W05%Yr;TR01D zhRf!J_3$3ZJS1Cj_{}@Mrq*-cWj3YU4%_-IHNc-iW9jaj!6{LRcQk|@a&4rIp60!3 z-)$TaTq5~)Q{fB$*#eDI7xlc^+|dxVFJ|)0b<@kGD!*Sy$!e^dz9-DALm+LB)q;sX zoBAJp5LK*v-gD$nzWvWxlfv0s{3R*t6>k)4|qjy6ahNF72DSYNEyI>ID&b z3>@9juF6Ln^f$#bw!WMpYqjWG0psb;>%o)P7BVpYs+<0OlC-1zESZeb>mq;ei4{8~ zT`E(}-Fs%nTY-c~*6B~?pFCWe?Bp$PklpYmx14!Vh})A@{0YC~x)z`BRFPI!pEJcu ze)rk=$!^KU zf^97iuPvB8ZMxSLQ{zS!tuFT&-3wS z|Gh9^s>Zr>W&XCyA3e=%tuC`~e(UhlfBv`9CvJNc_IS3tMyK(Z?pb)?y@Ry)5q_Qc z@J;T=Bo=ODShivRmtFY_QuM6U{yH#c{(Zu`e@$6~wAO+f0Tsfnv)5~KAHA`5f7#Q7 z@Ved44fg$)oSn4kMO5GcF|D;RcWSn^h?qMZjt=K&O%A`byf=Qi)`957cjT{n&pp@9 zveL+K3e(nYBE?)`aUF%VYviUKIpLIll(Xt}{qko&a`}&(_;5YU=z)C4K{Z~zEgm+X znWQGJEI44YrRJF45iWg>42!ojTqcAZbuE2%ylB6{I`-4gV_n`t1 zB`G66JA2Nar%QM3Oz#k0%rfgxSz;=?|IJ+WpXGCBDSlt5^y`&|)VFoNj~ZM3vcD0O zDq<*mBQ$f~}^RSX4NiU)d=gkl6I_aQc56 z9lg+q3wI;+FDM@o%g9k`k)Lz;>;dIPN0l_S_Fv{+cI!k?b4J9eYU|dw+jS>p_9+;4 zTzMuZ>UqoDa7s5nw`KL3WrejKMwRm8QPZjIQL>-MAGv+mlHzS-QJ54D3r zdT!s{a4t_=#!h#F(ed-^k9zIVX}hy#?pDXyGFuwXe_SNf5$L`7k4TlorTN z|Fkn=?)0NdIiJsM;Qcn0S#C+X!D_YhOLt!4i3#ia?J1vQ_d}5@!kll$1sTrGshW#S z-IqnqQx=V?V#$n_GU}OoN$HTx%YwHmHs`EQ3RnAFC|K~cdwY*$N0@c8h0FVk4z8SM zifn!C?idxVFKd17BA2Vg5Sk+Wfa|0a)5)M^U-!*lt9-lj?*W&q-(z&|rm6>QRFK|i zJ7e+xh?I$fne5i~+gB>iP;@zy;G*pGC2H-ReY4XHwaVX?Og}z*2|J4o2g}~`idrih zWwRzSKk8V2b)78h(Xu5>o$GS*+D~_dF^MD}3)Txhm)Kz0^x!wg`q-l76^~Mx5Aja? zu#d&X)c;J=+RJJ^iTgd5TrD`oz{rg*wuJX#{tr8+Hh2g0JxQy~F zgoSpW$e+!kCtjntrJ}1_{bWE`k=UZ1{P(=KVmoc79a=7DRbIgqGt219P0cK|qwhb+ zcRw_^wSZ^4hnK-FqHgIl!tgXN$7EgU=S8 zcc&(8D9rk?F)DHE`n=EySBfSwhu*aiJ#goSsMx{V<$g)ue=lg%l|JwzZf)#5-c)vm z6MMZwKQbQXSGc-%*^H8g*esrl7PZ^*%Jb`F-(AcTiQM&Y#r%cAf@U|f`BoY()-<^M zZqecA%1iln+?zL9$z$epaZX|BhtpK7Ro|~WlqW1Ov#aXnbB;bPmVATgP1!5<#i#6$ zW4Lp%(t@x2UX0a_OJ}YxD5@&EK2c-pC;N3G#(Tn~KX04$bYjL@!AxDR+`Cm>SG>}t zyOqUF({^-3g)%2u{jT0xVa?F%w%ALOZSlQOr|t7B9m0!G1jaI7Qefk{vC5YF_xag- z?wa?gtKYI|+AaECYvM!>#-7sBn-ZJ)`!>rq+~VVxU3)D*f0OAw(LXQlygs(T@T-87 zRhQJ$&6+*)oJ9q8=|4M@ytU@$C+sAY*v2L(`8+2*zeufjbol(<8Add;cnKolCs;! zGemzXr3)BsUlNw*vOz39Z*}=c(V33}+Hcmn9j@7HT%GKB&!}Mj_8r--3#3GpCij2p zQ{BEG$6j-_;emZOKINP_Amw*}LGam~7YiJ!xce@d<(zmQyNLUFG+&EJs6+geBir+q z@~sFgC`+|`qs}ZldCAOlrlz`8$HaWB_upS;Qs-gD=Cdz1JFPuQYuU<`8#7=2*t}qg z=g|v?YxqMRrJDZCHZ`?RwR$++q*85J)s;oNUv~dl`8VR%jM|SC@-`0&b{8&_m4D+| zbah)vn!%bC8I9Yy~{I7Hk@Z!?A{7lBk6BSt=${0{gGM~Uug6)_=dulz7?I^QmRJE zH!m*!x2OHpnZi#S?zbL!squd2ll9@yU^><0` z>mO({>~!$sO#od>6=e)%&1Ibe>!7_ z=jT0hgzil_ZT_L^&@yRJZ-#rbpI9nhy;#R|_1&xep$ev}-cG1l^>Kc7^qurgIq5Yr zGixSZTk}gNX;=Ego0nMT@XU2T5qr4#_+8)nn4G`=Zcg|eaDJDxxjUCk3(YCyhFRoDsN=P zn|J1};ajfZeC(5+eb_=n^V6L(tKXcgO?|I)!IN#;dG*ubGa5w71D-9B-yzv784xRP;H5P& zn)7@AFT3=g+oY|l1!ek|EvP$p;pWyR>yMYK@2yog=#xCUf=l?_(xb+Cx5PrYecN`Q z=&df8lEeM(yh6<%tAN=yFS;FVeDg*6!hUPr30!HEc!=5g!ymV``9eo}wmjKao6xVm z>~u)B^8V9@{(XIz@iOhr62Ua5s%rmijgvXyN^iH?ZYT`VUNObMMC zC2HPCE#4h;;Lvsv{?v_;W=fF<8d!LA_Qxr450YGm85A3Hlcmp+h)mvPLv{m^OK zoLANW%bo@2NnLw=T|300sG@M%PQ~a4uk1H< zU$&5To9_Q*#+Ap*n8nrfe?F<*a`^k3hKin`=|_9Lj=c!nH!*;5|HhnS-&)hpIR9g= z;96PvuPf@|w+!Fjh+9Hm0_09g-&m{m{Pn&}*CTJdxZKRX?AtI^y1rHG*2;?()dJ7< z-n|jRppNv10ee?zaZJ zj&DX19+b7+q+f>c8^M=^%6NV=Q zp5!lhaDkySm|OAZbaR~rfr-gYxl4mSZ&SIVk(Ml|e!fB}a`wEp(KSAw%)K;Nj6clb zt2nmC`tgMmJ~ssUU#uvL{Khn;##UzSjn%76AN=!37F}<6y;byozx4^bxO*yGm46Nh zY+#mh?tbr3q@AV1^{DXpZsz1?voFol^)zZ&`R5z!Y5B{E-Kv`wSWjU5*>`w8D^u?h z2K5&!{^~JGn|u*u@c1=zy`TcS$t!`&hOJ3EwUd*(c8FCnR2t=M4O?>m$+LiV;S%r3 zu@c{{z5M@fy)$>?!oLl(N?TMOB{rY8G?hy#c(qo-ae2!M*6)_*JacsRUs%-Zd90hk z{%!i3XLh^}XP&Byx4fPxz;1Po{ea@8`xf^5bWB^ji_WGPDTZbru=uU!Ef~@8m-){L znMIbWF~(n8;@-dSn55TRQBj@Y#QJNV?vB|Uw+c8eGR6ANK6%#7wfg8KyVHrM3SR_V z(Jw#W>%lFclRk^PjU#UQBOWUbOOJ1x`L~&KmW zpmjs!hn=!TKAY5P9&0V1;LG|@I`m-hhnSB(9rJ9@WNF>H$v0PK-LKaTQ~t2u44kzs z`bg~q>7%NG>~BB)y^>_2uv}#2!F#7;AC~>#N|^A+Q8TZ+tD%5tm)Qx$XOC*6-NM7H zA|Lc=&hu~AVdvPfKFuSm zX>p~~Jr-Qv^dweDb=}q3+?hu1SyC?MX`N49zE6EGkWnVJ_WjACk}toVRrfEnRga0d zbJc%JnA!_bh1vQcMZZ>guH$D+?tCVD>QeMEDb;uj7lVC!1X)ZN%-AE=3%&X%w|3c% z93izO33+b>CJX1TGw6!q!%(>~h z57HfWH7>Y$YCr3z&kJsCH(EE(gv)wq{jc!ns?};gyq;Jjn0;z?V?5GQnR`#bB2HYU zra@G5PKEL@m+u)(UUg5D6awGhekD3XrOa!~R~a!!-dYKqFmt{vig_{<+%(QD%KS@-AG|G#c|3F`zWRG$$M<(s13>k#`cne)w6F?qrN z>Lo9|c=Yp|>jb&xdrUMr=~ePxMR8BG>)xPDV>6u&r%8!>mrh^UGF_u{YN+@`>jv2k zhaC5Af8}xh-T}tz60R2_mNy*^=$t8{)1A3_ugg15lu$^x4nB;;v1!Qf+4cwQ(ol}!R~*o z)r!}it>9RHC0e8GF|J@&i#WHCJ;L>cuX5|GDMa zXLZe^=lTO-n~K>?o6h$rEi?XSeZehemjwSD{jfZePRH6%SVXOup^RWn5->C)0Xr`~2lI48Dm~y?V|*`{5@( z&abk1)l2_BbXe4xnZ7o~(cn^fed94znL9J@uDUy4`|iDm#|0!M41^-(ZrQKUU7gmt z>w}cCQIuPb;Ma?m=e8b8UF$WS-9TYhw)G{pGY!d;!(PP%8D5EsnSEo;qax|oJHvMG zbKbpZW87iYyf=ax>*5wjEjVTS%`G8aXmaMiDc7xgra#xJFgo}}sZ&2MM&UloZf1c_ zor~3vgEe@b@lUfoClvSU!C$q|n<|U-R&EOTC8rjWnaozO|MoiJhE1R5tQ7usr(??X z@Ov@sGPV*SCXA(bU$4+kT+7mz+s=D-WA>(G!%DdY46A1BF7`N-YTEpGTT$WZpIWDVqxHLyt4cYB~;bM%NcqTva zx{nU-RGcN4x+chMl}Ml^)5$rPU$T8jbN_uts<>zU(Yl3Kbk_(aeN1>6+iugu-oJv` zef92``>aA%88@RoMVs^dp5Fbz$?42)&%BwFE=&~&$WeKawq$4b>N15#tsgA;_*CZ~ z;$G5o{T=s8wOOZjbTAg(IHUgKVbW|y>w>h%38zx@rky*=Y^W`}V78y6Q~Sh!zFF%e zQZn;H6*X#$6ZXHJSvtphQXmK0kz(h#P-W*98-s&Og3K*HNqA4}DiFNV`KD6Fc17Dw z@9U>6#CMmo%>J8Q_H}W{%?lHe^2jkwV{ z!Gd4-UV$u+;p9NsW4ZI^NOTzq&(gZl^KIz|1|7#N*$}YhZq|o9vEH(OABR`I-v{JNs9mz9i0?OQrQ9UTZWNCEoj=Ue>ZZ??jN!ySfT-XYq^` zDm~}acOSC25Fu>ElDT}B?ZSudjZ-sz7`<_c*HfKwl22~kyx+?4ljdohKW$>SEpVR2 zp+BulI}5y`TXKbTUI?#9RoP;|f0#Szbm+4?+iF?kr<|M}^PbahL99j?Us_YEf5OLw z%VXJQJ&ovbuB$Xi@Jz6s_10inV|2w#>8tN#8sExzFs+=pDAyzUYiQ_`=xJQ}!V_9r zt+PDa9hx|vIiq{sM-e>q{Hpln0ZyW8yTLkqEzrFTJZ|Tmw z9Q`7%Aj$P_cHg_!w7&VSwEXs-zcDTRvYR9?iK#kwv)%FwTbv|w@bIUlvt@$ALywe- zReg)Nec_pt8po^rlhSg{4f2;v3y#LK`R(Yq^HxkVUP-D#RanH7!9b-}EX`&q9y zOl#4QJzc~0uyA#fijMMGrH06T_8yxLbk-CcUAK8f?|rTkq;>fIk599A-W)fYQvQWTp*&cFN97jmdkNGIQ2lv1v~Q>bLC|UocB$ zu|Re5JB6N(B$W`QP=RAN<)y!Fl6<@U$cMvqOv1YEP0R{^9X9El6}*IdGg!))I5J}UbDgFzgnJj3QPAx z<3&n+t7Sf9t3TnKkQ03@aMB-+t0EI!<1TmAF`IqRGOT?%CCvP!Cxdn2iitXl`qLG* ztQ69{l5T&dKlk;${3T+$D;334<1W02-rgJTxtQm{&c{kGKQnu;*mP>x350WJM)bDAF=mLe~n)4+twSXv|{g_LbsmN?0MEk zcS377G^MX$Z`iRzB-OQDdb*^~?&a!s8v7s0nojnyK5h8Jz2IHZ0}mF#qEiKL#NK-x zdX}J(>hR*T)jpXT%PISGHCk-`TNarA+h8lUanhdo&!&_=nz8G#wUXB)bZh#zPMw@fTkngO_RPfSK}bN?D7H=`M0}!3z+qIYxW8mGjFN=HgC<5Y)#J__imr~q4a!r z2V1nh`i)~=TPw{c9^b@}B)V$NZTAK%_p1_iEjO7}7gw%{Ha3#ny7%4_U)DL@t5%j8 zSe&!gI(*%+J;v(Hyc|b8hvOnImprZ6b#~cr^Wyu*-1B+*Gd~`Em*CfZLL&T97SpfS zQnfst6Sx``_8zc1SLpXzfd3++z!i|;u&@1xTG9Q&;tTfSeiW4mdlCm_h6 ze&EQ5@H5gklTCw#ZrK+t&F?bo+_c23J%x#nnOQVn+}CU2-R8Ng=B(LQUZ8&R*8zpQ z>;6CDXTL4W$;lH`b?Wm|@6zK>%eXZAv>kdkd=|29j5y})wQlDDmJG%@^Az?bJ}Y2) z`R?D;fV|_!Sy+-;{2dm&WLTDQ$*N#&*e=cmHv75EA(-A@qyG|%9I@p5ig z_l@(9IBQ4cU(H9pBn#z%P`J7L`9v3Og@;TKZvn2e^f!~Y5 zR;m>pkC`&>d#OQJslj`JG{@VsUM_IT$Xg)$eL>kH<%InldJ!fW?H8(@S?e&NdzS2*rw*T!PqYfR`12n;{Gg?eTYmeimzIX_*v~cX z(UCq`T~!z{QSG^dP-a`-zS*C)T)Ggx@L{Q&*P`EBZO(p~cHr364*$;kRw=74XdT?C zYF@SEdCvZ8Dy!G7y*^#?-5#aXq5 zzBe1sv6Xi0W|(|6S7pWo-DQ6~pKj@Wq;z6?cSD`>V|jyJM}w_O)-DWFmMRLGQDNps;Xed<6a8;kqaHmU8_Q;H=f9Cqz}ZW8}~@t;Fs(##?|JTn~fzKUdA zlnv5awCvuoV-sejX?(n2bUS$Fk9Ypv3v69HHQ(7gbI$h{9u?gqpE}_ zcVqSa%nP?BR)`tsgui!HV{&D8_;faQQ=8kRpfinE1pLoF&2DWzDRwt|N=o+ko6S*+ zuN<53WA*U~easpf%bW79D86swetC7O`fA0C?74@n%+-oc{SZI9a)yj8>kd6befQa# zdse(lyuy8kDI(Hi#_LNHia%8z_PdlMysA`YRjE?eBw<#kV{5Nf+1r=Q96( zuYFak(0g0Y5!J0{)xP29=%KkHz3kwuwhx|@Zmf~HGH@D9^*v*m&tomT<))rgS8X!4D~n~Ob~-Z#xIDvdRaf5R2XUN_-F--;ktF22SMDqB@~ zJSP;zNnibET%3P|v2oJ;>tFBgl>1e{rhMZHOIju?|XIQ!`THa;<(&%aplh^g#I&_uWMH755%~*d}z9bCH&` zzN`GohgSuk{NIptLWfz`%-dswvi+Odlg+309#@&_cgc0-^!$6@8)A(ne29OLciJUq zW1yq_P0N*!pX`nL@Y{G_y{Xg#Ddw|g+Y)(wtdDK9af@jR_El-odt)GVJzZVs!wXZp zYaQ)+LW^2YJkQKr74n_8DJ!P>xZcIKy+ZN4XP&I)Xk|CKF**LP$C_izaW{Xy@w1j) z@!`O{!^@Xf9FGc?IT>iEqWh4wW4-tso=65?znyQs?AiMIO}N9G`;TgJcbgr(&n)&$ zB<@G)tvAbd&e^7wQlb9RH@W@svW1zCehN(c%)H%JqW&1buAp7-hC)Vv?jN4vz*B{$x>9>cG^z)yG! z$EmWIg~k64ZPXFn*tqfQT{Vss7K>u$1^($Nox8QE+<2QUgUS7C4d3qm-?Dzo`-^tZ zL<#~{oSWmr$I5kp=3;>(W6jaz-z`R4U2YT~tDA9c zaqg+=KUu$K&U~TR)Yei`wA0ro*ieD}LPWjSj$>jI+xdQpnr^$?E4krk2&o5@R>6SX=vFlS-hLre5#$Yf07oQJAx7l3kT2XrA z%^HWqa|Uysf4Y8eYvMkqUJa+Wn=dA;*IRQlBhY=Nrt*p%W}SMWOM(wA|M~k*-VU*U zC-19X@%-~}llxZF)xuA$c1}q{R%x8+%#j;+Z?Q3k-KRR;9XJYhb)seG z&XlC5kG=$zZDaYe?S{*ggmG*ZJ$*oD<%j2aOAeNlZeFlFU(~DVsnNDthT1!vlLIs7 zq$`I`3YHPFPXGAf$ipR9Pm6Z#IX>YC`^*)^Ia$+BPMLc^D*dCLPx3vTjaF}>_(O{; zLt;Wj-d=ogb3((d*2l)NJCYj?1)SAb{Fce9B>fz-?;CTGop;ZC?%?v>Eb-%i?d!wM zjGN>opV&V9tMfZSWtxU@;p}~rPE>g-d0u(4=AH$^JEt2b!i(leQ4_gI1b$@q(>B>c$&DLMe=_~sj@Vl&W z2$?=&Fdj9DC*A3=lDX#8ayxpwv<@9a;ZsfgL zwo`kt*rG6t@ZHjHv|95`7Tm0;yV2!(yK!Iqzk}t-HGuZc#iZk zEoBwk|0eFtlF2Fdbvtz3FaJ1ph(k{Glb!vTk>zw!6$-g7xNJ{RbZXc|!V2&mXzBdHYUpGoLISH@B^4j&s)Nb?n@_ z{#(&mr~eaNRs0fDoB4$n&2E;I=WQ!ZcTVn7;Jq3Blh<%<`9;AqZdPA+FYT3XZp$}3 zxl#0H>5myge;IaOY2M%M{(HvNcUfx`j;yU>%bvEqoI9_^;Aui*MA(~V#p;I@Q&x6Q zi@)~3I412&0{g^Y(mXfS#4@58)|_0o(tqjy{%aL!_Z13-PGwKN^E7&gJp=3FN0;Xv zsE=Dax2bE+X6Abd;t?)OOLX4Z?A^%s_k8QRiMuECANYK1)|+ShzaDO2+T(j9uD!s_ zvTxG0-Y+^g?Y5tF73bFy>F{FGjd0C(yOrA;vQbHcS0n#-asu<>U6=Sc)!Q@fRiB8F zUU92<@>$!}OJ2?t;_OJ_`^)xVk^9%p&AU1LuZT>(YQ1Q-q=iB1Td{Wr3PXK#!1xzE?KW^G!Z)X}o|#XS{{TbDXG56xoDH(e;6>aTY6ukhJ) z$47d<(yJF7-k!8d?AE)8%T{a^j*<7TSxBd7H#Rrl+5Y|= z5SUf*_2Q?siM?^0X3=H04jgRH-ShdOnrFj4HhabxM~n9<1^&l*8D77XQp=oov-`=t zQ&(@>d?_;uI^pU)!i+%NlY-JN@ob zA7QoD{Kh4fPbNL#{OEP;P^OHwWXrziW)}`m?3wM~niQ|z@NF`WWX1c3U;Zb)JF~d9 zb@Qa=Te=q%7w2i#ui&|KlJVgd&xxWQp2xQ8XkV={6*{(7Ep>)l#}@Hl67dJ*CiMok zhQB~6x$1(ot^HA?V8CMWnzPvcrbW-?GuO{uT>G70RUnTcsq60MCw|*!EKjwF`o#4=){wz(SMBCY z{IMZRve%tpP*_yvbYSS&J z3!8)NZ%_PYnireW7AWkuSyb28x|9^~%s1@t^z1B}+jLObE**H5ck)?Ts_Zg=B z7mQrIk1^K z`4T5-qnJB8ziwH(uy41H+INO6XOve-$ZdY}?9CVZov(AWe`L!%@_5AC@iw>a=o+^( zzn;mRoN@M^m__@>-+c=T76e@TY3Ld2sZys`#d_oIUY^rA_wQV+(Qs6KvCgN?tVv3| zs@tH|GWEND%@8yxs@h--Zk+2(Lj3{pWCaq zDt?i8ZKEM|_uq%}aeXR-E^i(v_bZo*rBj z=H#@R?R;c=M(q~yDCxhl%I{Zw5Mr7=f9_9(9p+1-H}tdoeV`@vE$*ef!{R=U@V!R_ z-%a^?GT_&>YTujWKP6x+V2QsG>(bo8lhlTY@| znz~z{>R99iBSoqElk2biQRT68l`eBP+pwHDJ=iDf+QYsR({9Y=RTA=F^S!5*FRNX;ZPI_2SoJ9a^Fp6)ndlNYJKz(qWKWuU&S##T7oz{p z2xV$vw6|F1>@)F=q`ktEjUWI0|9c|mZtKI$Ohq3vyJ_?E47#6l#$A^@)WKb5;J(E_ zZNKCu=k#6={;y>Z7xXbd=}vqT^!eYHw`?<%ex2O?>u7dDz<)3G|13((LA!lCUJ5xV zyD9M7F5N2Ow9>cC_e*2V4YtjCp1oR?|Mty)GfhS0Q}Q{_Uk7Tg$uah|?vP%`barjl z0!OCZ6QrMK{yvlR_nTDU@r_XiO^5FP+H~V*(*mZD#D&-Q-<(kqv&g$I{YCZ03h8Wf zlj7)~CEpfzFW~+4Wl6!6`@3B`=E$!3@743>$eacj`k*cG1(?1i=H= zH8S3=_ntW2lM#IKd42V-{ut{kH=AZ$aAs`WHSurfoLYH1+2;J!fs2l`tXOrcFt}2uI!9A%)|7wS>+__$=SIDmeM%B}TMRVr%aQ3h95swq+l+=r9d-Kxp->*#N z^S5Uov0d@uDszPO^F0x3Hhe$L;bU>=>Q)brCB84$pTEAg*ZIKKKS!&Cy9%6o*XC|) zoq3^RS>;sot}d~qH5DIz@agV77XR4j-=PWo-hyu){a$vdVMlXT#}b}T%-Mfbi-i=I zCKg{a&iUIE>*h9H^3dY#FOPF=cX;-ElTqBF`Af>SsdIbG(VIAL`?u&_?VcT}JUY^G zYoe1|@9cK$Q1!fL!Ysj8vBBJ+`=P1oUdtTD4DGMVwg);6PgM~RdE|d^#&Xjg;Xb(> zXH9!Vf4#ht(zxQD$&^iB>H;RsiF3@>5NNoN=JxDv<>E(c8t%NTX{^Z7_-eU6qsHpv z3r24%3-j+ahkMvsSN}_tsSxx@3%jCxyzIS-_R=~{uR_tJ3*9p-Ps}@{4yXdJwfObPnG( zn*!b0`*hV3#OexH6z-aN^a1aoTWtsJYOVz=lvye@j(4|*PX4nl|Nfbvpks|U>MsP`DYFS(KcO(~)4Wo*Fxfxxi3f!5`%lYXKhbc_ zlUuv*G~Ru;LG88z$7V0a+Q-Ld`g`iGYCZhB{phQ=a~3AHY*`dg>c^$B^wEuvil4Ju zZd`kBFj1XFQfue;Yu6Y4d)L9~aP6CN!?g!Sm9c)zJz@_VtW!=Wr7e|PdY3!ydCb~7 z+myvDW3nPYecEgDr#^(m$aDQc{lF=|W|UlJ@_o41d7a{t%fEGJP0S93X2{(z2C)XZc^Xq}uhMLveUQPF5XKPo_SiUeW z&RXUAZTIf^KX>X_W_|566SKY0?2vVA>6}X|IF@y6@5z7taO2U%SJ!WO*?(Tr@0Edb zQE~8Lw!_oh%8s7iSY6_>UO~a)h^;f>ioPVEH4)5oOdrYZ6NTg10=!B01R z0bQ$8?|BUN6@Sr6J7x0ot?n-y{yMf;E4Al0mhBVdf62z(P`vh-!ky1jW|_Mt^(*DH z?3u1?s5!y#{-*n_KYw~JSa5$E$DZh{+e(R+*H0^yx}+S*JH6@s7B}ZPtIAJg{ViQS zwJ6Z}fcf-Xr*K=o=bIwgl0;WbYP~k=d7o48!@lO!$C-~f_C82Uyv6n1JnQv6|M7j8w0i}&iqQpAt*t+b zVr*aR=k%GDZo?jL`u|Xl-}m&jN~*b07G2?9DaH$G_HU8=qo@-6BwYI5>AR{K7n_=7 zHMpbBZ?*EwoNggM<=4LpJ)TJi)Fe09Oy9h>n6-}YLBkGC*T41a9KCm|C|l`DZh0BJ z*KM|TvZCqp)4n|t6YCY{&CT$BV7Pg%(2Vt+I*rEOC2Nyr?fG!r^hR{a2KCTrfmQm9 zt&5CLviAL-yzP-^TNmF8)res+XH?Bvi;O6ih8zu~Sw4z&Zbq zcaO!~zO>0*XMV%0hy!-aT)TEp=U&%Pq;jgOV8SD_1UUs3j%m3|tu}-%JYU%2kURIT zV7KwdY;(D_0kgJ(AY2 zLle7|?-iU5Ia|2+e3tE=CZVa|?l66i_(K|J16}`g~E29K6P==)`I>r-7?GB=?tuYM=6B?1&GtWPcpq`DNi8hH2Mk`#uWuSkiy^2ESzd>Saa0wVWV z?{3Ba{y6Vn$jr;xOkJ{%%JOpUS^6|8h3+dBT)w%0XW8xQ@9~d40w*2&&>gnL_?NYF z1mn9#{x7;bOlE6>$`()gbg#dBs=tv(H^YKLuhN$iM|>xJV{YQsGYHw;#j29KLM2|X zGH#{DrKzr(3?e_h*iyI;ntOk3{`1lH(gDYo{<&c@*H5;sQ@pf1%}}$5@#>rNZozGD zsxu5;pI6JD>9M(a+RN^%H}#}!JQpm?GwqXYeiM-*Fl%m%*w!U4t_Y}{P3dp>8)19Y zSVGTm?ax<^?QM?^yk+HG{pi=7GiAB&IbQ79k@qd*(s!oStd1$qn13A3+qEk?dQr!e zI>&qaEqUw~`~1JSb`78Og59F4kNivQ+kTPnRMxIM&zD{og;>m{+iYKa)FG9(hRgi> z+{qW%7ti(h{7*OY;`=WSKescVzjUW~ZPj*NaE_ZIo1D{cKA5G@RHcykUCpvcR^DG>-KFnY*Sn{fU1P6P z`mua_;|KZkMJiiZ*1ucb+r7;D%Wc2o-8X9HFLD-|q++Hq+f+}#UiELjWA{Cwz${zo zos&u!>=rM&o^{HtOE3SmR%xe|mbqqjuti?-(e^P~l$sTiIqTWasI`BSlGY1y z`JOPlqbK>stS3!PY^`;wv!B(U*qqks=dRzId_8v2e2vwGK?ULwOQy>dT${jot>^dd zM1E$56R-My-BZ0DB9y6-v3=6>7w7uAg1*lA6n_3-deDy6uEOgtd3(Rl-m~naiPIbQ z@F#|XH%h7=OyJ_%Gi$?vYgsECz1*aFqm$=(?Ngo1T)UgO>xQ`4pOznA^Ae}+?|sWW zgHhAg%{*v|V&II&57yjD^4hVlREVpJZ$@Wi$%}Q@SQPr!*-id4XK(Js46DaXlh+EJ zYoD}!t?7O*k=M7>q?|ua5}mf5Ri^3Tfhj?kqE7dz94Y;^|AbS7nhCUumC};BYHd ze*0rJt8o6m)~ZQ5r~f7tJ3fp!XgTlp@_Bz`3Zz#pPP{BNN#?smQIt`1QtiXTc@EsO z<~T1Zm56=1b7#ahzp1q%E-cgCHw4QTc&bZUTZ%|j*Bt$OVrtkgwX&5CM@x;kHblL( zpHeP&l}%M-zF_T{!VZze2cz{So!GWL`_z@&n}gDYzgji?{2LenR{emryQr<af8A_i0i_&d9y_xZ)a_<_EH&>q< zzp)Lf<(ji=f%%gYy+0Q}eeHAhpDn}7ZBeWX#TQO06R@ef<1+1aPKkGtNJ<9TfP6C>&<0ED(5jU`M!b#J+pK8J?UjXV&&U#l41? zJIy@$NN)JN9fF}r=cC?!ckjC17yH*-WBKjbF4L#p36U$)mVDOF*z3ZZcw5cGacA?6 zypuN_F8%s@cirwImkxDY)oqfz8_nsttBPaQiI*o_XD?_@oXl~g{P&E%EPAKY@=x(I zKJIK{6Ns8)r=BXFaOGOz?Qfa|4hvasBsEMF?Kf#O{JM6M)8m%-9fxak@^Tby-!`t} znltNJWB1?8K=%F1C4cXpSyrBPK&^50{H*d$Lx$=_^;egswVmIvebU=}U(RCXy(V#1 z!f(GRO_n>|B!BSI+>;k0(isFdoX||QHjU`=yV)TgkoVbCWv}kCa;DAlRhKlPT^Qb+ zU0^+N#8qA^RjQ;wD!i@W6#VR1>dYz)S2KIa_PCA@?Pok@~N5JAB*Cq**)9# zS9GfLxAT{KCrPK|`3NUD^x2&MP&N5;)y{|Ir`BrfO^j#Q=k9_Uc0a1lD4yS0%A^R-90H(uvWzF;SzuJPw`I_u`sR*5}!tGz&@+R`T%*c)IkY5%# zRqOdYUW48G7alPlym^{_B9;x+xdNcW>4b9nO6#L zW=&cl@Q{yVQN_EtO{%>2PRbk;`FB(E`o-vWJ(m6Vvule(aSu(^pN( zJ^uDYWa*7G#oZcD-hTUjV8sMQ(Yc@J#lMccGH1Jl?=ttzQmOmiH1#z^F)2qXo%<4| zuge+{`i*nq0-IzLn~wF@79{nU-?7s1ci(#8@{O(pch_He4H947*kTR4^Dl8&ndDS_ zzJIh}Dr>UZp-d;;1GeTt>x;BEo#0(`?`q|aTOXIGOz(KO^!{9ZhG;L}YV!sa#`AB~ z4__{MmEs^6EwELqtA3*C{mx{@glgXSu+W8SOXQR9AJlJNSM=m@=k^j0tGG%FJH?kX ztE?Hfoe+zC&A4Hb!`GKPlIL!imh9t@E%@|zb}93EE67VesSNF$*0xW&EGcfFHToCTa1eXp9kcfXjE`nC0x`{#KRYK^=f z2&bJ-zH+_jZC}U&S*aDd0pVVDXQtG1**g@M`InCl837ip_s?vi1wnKw1!bj-YE z>t)MJ!i^Po{ofqAu3Xl5wi~;6>87OuiYYw`S9|$or$n@y zaoo$Qhwp3Dj};eQx+EPDaAd306lqIu(T=;-R&2L@4~N})V7S-k-QyixrA#Z|&RDPU z_x9})KYs+OM0 zlEu!t{oz|@eR8!vt|VU=A7VR6!GCUGs&rbpM#fVw2Fsz`qnO<>pwnU4HP@f zd^fEjy}N#^V&NINCyO^5xWDmuHjg2AL$u{f#%&Qv8~?{%T*zk8z;c@X3fHV%iS=Rg zRd3}0KYeyvuyFk`t38%1=R>bqxwctlPgb}hX8-u*rQ^5bQff+>o^4nCc&@`z z@vY(ZpH_{k%-sGLvzcx-K5U=x@tJjO*9FzRVa2nq8l8AN>9*{bj!LV21qpX+Pvx;+ z77JQwsWG|FJac;7{#V@M7OP^F#4l{AwVZ1|r@-l!aJ0m=g5%3;cAc`6-7W=bvd2YQJ%aAF>=qeG&6|FtsDyK7(Q5_o*B-08uK5eR zx<7MI$-V%K1+FZ-_Iox(STo)K{JHHLN5@>hi;p*zH;BHN=drM4tJu?3KIi${-yH2wSJ7EE*J$-8jxQ!+867HO`h^`Zy`1%MY8A(k~8| zsr-95~d&tNDpi|MRlypHo?w?msBSwBtX+b(!g)&}g*nG9X+qHTm$% zYvz4fwm|Gj?P|sX_J>ngZhyL^#+G=i?X8SC-?v4(@6HX+t>>K~(c3oNdCiVRT%B`U z4{zMFL-o7HWzBDkV@=*a*&i#NeZ_yKWrkB^c}YCq7CzZzZ~y7{*{8(jtog9uXok|C zVD)M7Cz2SiFRT-c%+xhs@`C$~=*7G5E+|~Gy2I-jz3k&U(^H{wLi!$NOVxhAjtyED zJ>f_Pr~A=|(<%g1UMv@vGuR*bc!2woJv*t#FxD8JK|=*-Tk1^ za`sS~=)G8cwgSEu4{b!O8=H0 z@6A(f|9(ufVf9g(zQb$zqWl6GU5h_gtuAc(@hk7Tn)tQivi>MPCq7A;uUeBtR?dBU zQ`9Vj*)+P}hw;Ee&8p+Mb)gT>GNkD;K7W^U)xRP4IiC}A@S>e_r_QuFwDh3ninAYg zG3S{Ce~S6=UGRg$?HPKzK5uxo@|;-B0lhhaDcZ;L8A3itI7B%8dj9*V+O6notj81X zzy8JJ*yzV3!@w?iNvTEhT9-?k|B6kyC*F6&?Y0egaagd=<%X}^CoLa=Dbj!zFn2^XN0%w|5ALh<#ubnID{f@gT3m+??4}_Y(QrjMA6Lbk>{=zx{kwP;14X zmJYXU(+YL9O!h-7#TVLC^$NCc3hg<2yz=aY`n{#E4`?(NKKTB&FXhT#w~uPgA^v^Y zQ%q%)>EP2Hn=mk_ZC&ypO@-*7JtFJJ4M&UDdTqv^K6+(ug`6LUv>6Vn)iyG_csbu zJX>9}{k25vC)b~h3=NOg{@~G$c(-TDzPt-lpDvi>@b=i@gMT)AuREsHu_e{Y?h#9s zk=_i`aM`23FFk$9RITuY`E1R!k5O;?QaV?4uk zPE)VX+p{v_)@A17@=AUB+7-7a^BBL__iW2vJ{8?FHJj@<$g%IA;`ik4@y1CzYh)^4 zmrO0yF4mYb;abK$nS)`Hy|2_hL`3AuuQxt5cUh|R{EG@Vg)eIC%qyCfx2!ho%z|C& zr9Ig*T^g^?|NHgsI?+eR&&^gWa+1taEo~6puySxjI|h-)opSbKaw)5#e)qEc|#qmKnKq>rcP;`{OZj?*HO#rdOw4GP1f?!em&m zK5zf@l!GU4oY*8b~ zw)K0oDi0p-4SrVoI9sv$DgTPggtMa0ug0tw^b{b$!NS^zGcH({Z)++$N zHu3P9mDAWFT$~$3PH%oA5lCqn+oR>djvF&JH!OQq=>-~eJ z&Tl#{+&vJ&)s$v8Upwv^Q%R%p5 z{|#UHcAwjqdV-P7$u899R&R*cR8Jw!P5a-z2z=7myW6Mb#s)>P6_;;mr$4w8x8%~T z_Y=9aSYp`4zHVdW+8;b=3D3-JBGY6eryehndX~NR_V-yF(G&T+&MWn|uMjHw^v(XL zt9@>MM1g>6xl7>eb9*o9y$|>n(!9x4uEM&qNB*Of$j)thtT`N99AKg4+J_j~WX%ZLzIell?)S4*{>+T&@iecK?%2qsUzcb(8uJ}U=B6~z{ z3r_i4VW6on%_w3ve~dxSgDz2z$q!#uEObrUdC2?Yw^^Gu^LcmkZ{RTHx%_I@T(#es z7e3}6V4U%COX*S3e`@)<2aPUqZm}q1zFu@x=aB->8j~95bNv%0iMBl1pkH`=x1Mnv zr%L#e8?zbtO&I11Xy%Es|5Pw(7pXg3xBkrIHG*FG%suCL0%is+6MXPg{m(s*dihSt ze7jS(R0=AcB&^?hv}){POw^jxpwPVgLDjlDAv)(5>Na<8s_u4ZlyF@)_lnuuoKN?4 zy_=TEPBdG3?Q@mDbL(SQw=^BoTdE?{ccFmoO>tk-i)(*Y#-|!3dNN#c4YTDB7irt) z_AVQtz(coO)=jSSa_2EY>x9uU~Hw^fXFp zT-V?pvHUIj({J38F&VQ&ZQPFZ*8H;8w%FjrC3flT^T}c^Tt$wKGBduJo%AxFtn;Dm z<6*P9O%E9BKHUfwh^yxJw&pX`i2Re^z*HT&uH{_KZLU~{yBl`N z8lITL6{RhF(Y;nt^p0iS#bpu_+nnB>DmI)R;OF{Dc!H`*^ZbWSzr4*9_f<`3jlIbK zaKHWPyUQ!eq!*{<@{7yvcj)VDF@O48Wahv0tvp_vHLMo5o5Zb-m9~orXIkrh#&vi8 zfzEd>8>)XdSN`}@_(yw3-c+?+EFI^s);Zo2d)UdqaUgH@vW0GQHJ=o?@Vve`VZDo6 z%X%*Uh=aBEw|AIt{%}zsrt4+r{*&hz7M@hqTO*`ZmmqM*B4z7*?Y}>B_W#J^nexiL ze9xD=|4vMD_G_8qs<-W`gD+R1?w-Th)BiX<+0y*qZTe#2nRjY8dIshw*~=E+4wL#M-M zA};AC+s=OKY9P49`OVhz$Fp9{`9JgT?#QmU3{K9$Qd{h2drWX%`)Q*^M&Jhi4VFIX z4>wgl`DJq})u?5*l$lMKTx8aRzp8uo87R#4e5CbodE|tDS$Q7m`ApZ}pATT#vFDE9 zD-(C7CF`e5|HF9puj1n1V^{ZHwOz%s-L;jy+_iW4hvK7#7k{`W8wB)y)8grgotGM| zVG!2&Mo~wn?w!$Y6Sm3xOWu3^v5@@vIM6M=Tvg$;Pj+z2=NGmGE0kRHydxjQOf))l zbm0-HU#otq&W>O2!+U!5iES5uq?cVaU%ICI#bmGYT{+7Zd(YqQx%Jg!%^mmEQjY#i zui0wgll9mbHy`3uTlUTLEg!%ArVn*bj_u*oDePaQ-Fq`ucb$vq$wY02 z+F!rzmqxYBxb|`Nv~3QnN-uLqyp{8H$#efT`Ck~%?K3=IOcpC-+N@dcDfcb#Q|7M% z`~GED4IIwZ|N5b4$1;QSw6%+BQi*WTfy;+32VMLvC=r-+#pBOZ`QQ%^?r`3^dwpTs z-0dDI1He=Y1*MmN0+0^qm!v29_Le8;bj)pNsF3>J_}{;KEYA?6c|5 zgun~8CWkVa7pyecQg@$uzrae?w6+ur=DUAPwA~l*%6UZh_{XU}C{?R%_&F9G^0WR&?AcQ^IlkcX+fr^*uh+NlW(odWHRJoDnHxSBn&b)eC2zhR zRe3Gh)F+Hdv#zm{7Pd4qD-}=7mWz?rTG3*T+rLTVvSJoCO zGhFL*ASpUdc%i~m!-)7GrEgb__?$x{)cMorvp0Jr{ofuZweY9#6KMs7?@Vm!KKz>= z7tEV>bQKrNhS0EM7niSnQt@(QOv=vuzpq&&xJ*iycYS~BKb@~ue)pc^M$y{>luj|_ z)h4*vRjIvR9XL1UYk-<>%tz%JMivj|9hA;3oTO5aZoht$*NX#nDx7~i54Zn4mi~Ly zUZq`G3=6$jpROv~^gOksW!19N6&?NEtCFXmeOGM%P1``u?Xio!oXU+^Wo0faC9fEJ zJ8~}nXCr=Qa!6=#@oo7Ovt@6?LnV(r^m(QJa>3zVZVvkZ%|Cp`Yj*eA1@JlAJ`H?c z(LPc8$>hf=jU8#ShDCwDm#RugfB9@zF40(*(<$gA6Y%4cc2A74!V#?(IgcWR+N7WH zacwzizvSze&8|YnZYQKj9yIt;H!XkL-_?G%&0}ZI(X{mF={$InfA)pH4<60fv1ZGP zhc9$8-}F^gR^Q2)v$Zm^XRpJ2&r7GHD^opGJ0&;gUjG>E7*(^t-2Za^gox;)Ut@It zIMvCjFkcW^&2Tg%%1|gT z`Ps2GJH2xj&D(eQvv`_(pxB7N`5Zn7IOy}PwePj90wT5-g z*DWCvI#pNvxEZ_h*zXe~N#?t%zig+5o&twIY_McVT zZt1Uf{j%puPeRz!qCc%|j`EK@dQH7Ioz`WL5xBqTY5%EbpKq?yi;bDj>=|=l(nUqa z1xHgf8Iu=<>##-wXE{-y_z>?A?Ab>SeEy;LcL<{Z8p_O}`fE%$a>P&nRcp zinQhXzenD?pS$T+_~M|Xc=uOJ@{Lq0G(EIxrrl%`D)>-6E&foK$ zXL9NV0Vn?(Yk9ef7H)YO(D;RgKR7}|IY8()dvMK~Yx=7nx+kt~>}B2hTtF@IXvssn zH%1=w{Jf5vdVk9M_Pzb}*VoIIoM$cN6)t-!b6ffPB$nTAt+Sqb=Ug`uE-{!#mlO-Z#k!C)dBrYi1MuzaZ#v>s8*PpP1*FZkhVAQTN@|fa5z3 zPbySXwAlPT#^Y+yuX7tDc6e4v)HTOA@J1}NP<`(vP`pv@ovzo3;uBV6NY4ZGI!XFRDIsUvCbYM%Q+G>qCySPL}*3W3DkAC6l?RSrl zeOIK9#l>Z({{F1cnXY%bF=4I3fmzS$3ab|uEse@x{`1|~@|XX!;Ay3%4sSg;Yoyfr zpK_g^n!m&P!Rw61g4sW6q<^Pf32mHppG1xw6f4w?uuL`|rbd6}g#@eQdvf^Ocx^n8Ou62lcfvyyn%e5g&Yd zZ8FxLe}1FCwuqg_xaFDN!tkxE9s(B@K2G~;aJFZv(St7x8w-kzYnM3f@!GoQi(dJ0 zNi|RXElk@z^YsKh*E32L%-q2EbfLzCYmR(BmwVO9Gi&%I1i{EpliFRngSoRGC)1zS)?&82&_ zk`JcWY`vY?6EEqcP_pH)YTEqPdE%~z&Fr>6>S$x;m>%^@aE|s3F@?(eIszZoFPnX! zx}3**>B5YYtCq}~HsfNwY>D+Y?XXv+dP^72%>Djq@7@?yy%bNQ_m`yO42%+&-+s%P zc!2jy#&IPbrUd1qf9j?_zPHl-vt;U{ro~>Lo0dPeX6WGFeTnsOlO)ewU*l<&dESr0 zcgC`6B%Qj!qnI3i#JA_h+lj_D2UGKZ$Qyt3Qs+6Psigl`GBCj)erd|vjTt|#^~)^q zzH%y?or$k^_mj@eTAsI6g0j~?y!p-R(SsN{z84eks^~WF(fNAu!VIZ1Nx%L!pW6IE zHOA18qqEiK*6+)AXMYvGsC17%?QwLaNpQ1D<(jQeE}5y!R*+jOv^+8X-s#xeIeQsi zZ}w-LQ?vWRf~A?qw!{@FR<5T8zFg-$)J0y; zclGIe;ix7l%Z~RC8V7&r~}zvwY@ewFiuk=l)r8 z^uX-hX36yvmVIdYT{eBuP6ZR= zJ6__@8qeZ+Io;k&b*4V=@AZ1^-<)PBuU6k`yjN#(){*xsl`rRYoMnvjf4iM|(!uVY z`1mEW$|vk+dz`~lXr|4&`f<+`hL96SS8Y{N43u0fp8ouG25;leop%daQ)-rK_8BJM z@YCgyJ>u5Rb2EH}j75FX+$=t0`GrAe?-z;sZ3qtIbbirnBeTT*(AjO#59;);c&D() zD+)g7l}npK@k>1NJ} zUjMA0GCusn;2^aA(``G)|6R5-ue{Xt+r{!;MCC!()<@^Feh7EH%N4KwxghS_>L=6o znC5hxmaXZFeO#?_UGv(E3x}qzNGuh6tMN#aaT(*>r<)U#+uyA_e5tV0VFlYluXHB% z6;0o|74*I9Z=9~vZrreqFQV!Av_3uOi81~^e!UD}Jn~Cg&SAdY^x2PY`A%tna^$6N zP@w6DtuyTpRVPXtJmC8M*Dtlk@9;4pC6}{v!mk_hCCrN6=3D;Dd;ZSHv)Z4y=|28y zbXe9v{ATS6RR#GsKQAn>&(ddq`#9>Z0)tpt`!0rFgPJMQe^ZTSdh?v#7gyr(daC58wZK&RkmND0W7{Fz3Xp6T8=3uy0IOoY=PK(mT!r0&FpynuRqcGI9*3i{?M( z3OwB5H|cQoYJ=~GJxvd-jG1ZG5%H|CVcM_fmu(dq8}#%fpDhsWI=1odtru16=Q=G5 zvJ-x~MaA|~`-A4EJeTL+`eg0)|4=g1)zT{)vdcbo9QAp$d{%bJ_1(uaj?L$o$hvO% ztY_M8)2k}2T5fL;nX7R)RDZ(mxAT5To;4TQC>z^wS12!t;jw!~>x(r4f44fgy^5K* zW_LB$a=xv*+E&S*{rXabNvA1?-MpdE&LVF0)vCzeI3-KV70x@_Uf+B%JDKmK@7BEV z(=sJ1%?_?;aNILLHztg^@kG0Dcj1oJV!8GXo_Gww}~-Cb+G zV&-pmPXDiu8WO7ed7r*C&t9DZJ%_CNsx8drSFG*kFM!Csq%fBx@P1);hy@$Rc#e_ zn7{1TTPRd|&&P`8QReBdnM<@%TFqH%-isw=g)%P zxtog)ZeneDnO@+ZvM;8ATa9s})Vu>XuDtg#%9tPf`6@@F?rtZ6Um8X4n*-k57mg8` zps^?E^6FO`ZF;A@2|pUssr}$+%aMlo6$aNA&T>}d$eY5sOtgHS-nUCS@6)clZF_v} zh?vSs$9J3k`mRi{Rl0Aq?$g9SRi|b#Bt58cUw2D?^}{RO65_4AA%EHDv6tjE+?7i& zNfHm1m)R(oC6gX9&*ynwvcN3K853`w*UJo^@^GEUKkg3|F`^0g^pU%BB z=Dw=5t0ez}r~6oCG=3UeJ-f%W?8EsD&ja!udtT1ZD2nD4clog<>{P_8=N!^8t1`kr zy-5D3rfc5F)59Vk-0I)=x8?7-=xOfi%%5Z(dauZ=JD%TXA+}0dJL>!X&73(kTq_T6`(`$Ftnsn6dwK26gM`|_u9Z(xw8$!)Eg=OX^TD$g#P|DMPn<8aVi zwA@i;|C-m?$V{YI2`HvnMrSLB|&UIsfLHc`m!>W%X(1y>RQc zzOQ^dIvS<{Pfwk`yS-z9f8=q|qi;S=R)0{?zhRlqMz32DSI>vKd4xIJ8S9VAh|`&!4soBD%#J!b!b1pU%>a1dx{j_2CbN` z*?pF5vb@>p%LMHd7HoPuquxO-Drd!tojZB5Ukd8fwq5_mx&$T-{--@;{ zu3Io!a7p&;%WGE7*f7EBObJivjPSGEvt~w2eY*4WMvgdn-nQJVjyl6v5e#x7e|7(v zM`>5eDLK74R(P|QF*Z`+eFl$pc}^EkX1%Y-qZgHPd**kqIJ$Iyu&(!vbrzgI{0Dw>t+%*^k$xJ+Z=3*Ys?eUmHOfA!j_ z>trYfP<_k*Qb`$*ADK@a=odW zx9IOGuFw%+*nIFjk4Ad++P0Xx*EjC#d9VAT@g>K}rD7ZQ9Gtn*!|U=>w?#bH+%7MC z|8nn*Kl|Jno?bk{`qOH1y2>oC6W1Ac7KLA08NmXm4|?`gG8nK$>0 z1%rq}$@x9@RX?Sl=y#QIKmX_6_jqH(|FD0bQf5df98BGsKl|!c3xkxVU5D`L0%`o_pr=rFYZw z-J)cLrrqT@aQxl+i2_XzO$|C;?$XMU(b1L4`e3?0{;{gq;R7xABLz3ys+#L~FUzBJ z5%cT(>96|qo<8tN+KXW+cM{`X6d7Z1jk%|A)M-`FduUYs@z3V1$ESlbb{QixtWrv?nUdSg{ z_)ACiBBLK?3#a-YgHRR4pREN|$CKDwR(?splifIbr)gqp*pDrj;<~<+9lkkx!*c6~ zR@(%XI;O1`_@^|f?$NcZr8`o*TP8D#9jWV*w=&TZ(%QYyJN;wEtw61M*VhMhj{ef) za?Mor{e1OFhx;)ujhl^APHbc2jXSXG_OU95`IBaSx*vIerk;h7zf!ZS`WEHyx#8Xo zuLG|~a7n-JG1}oO#m)V2gXqycj}Mg#arpBcf2H#?!gkSJ?_0Wy&ze5iTz%}*H^0@( zqElw4J6~Ei+uK=ao%8ZGkF!6Or-emE9+>xMhwsi6EFzn^-U)r}=ubH#{IE`ZU!%Rz z!Kt4)_};O`FmdFwY0v-QN+Q#&QjE_x@F zD61$_aL$3Znm>QnWzqF)2b^Zut^V}+vC(4vBXiiY4?Vd%IcqxGO(Bh!L5FLabJri_ z)_i)TA&ukZV`GMf%Lb1Fo_PFwD$y9YKWd-o@%=aMec3?4{#QBqdiH@nk*FAst6!z=PFwb| zcq(7%!#`mj&IJNdGB+lDSao;JrL6i_<=#GX<|Qs>6}q{ts6a}?zI{W0e7tS;~sKT~<|1VA_qxz0#VISs(*_>GYso?%3 zeYT*RaZMIa^-ia+Hn`w+s8Mq2=EW1E-HMrfcfQ@QqJ6Q_&r_ckbW6=#CGKHfxbuO- zndavS^`|yp-Lp<9nnhb7XhFZ za~Frl9NKTY)%trzlk{eNp5UT$FE3>o-BLNITR2huD*K`RJ5*mbPObaJcKo-G?2Aor z|M8{te(O8#B~-l8)v%?=#n^SFi2S2T?=6y^#^yAZyXv0Zl4iY9e8!W2+Fa&m`!whL zXuW(vXVY=pm9tEO^O-UPg8-MH_!|4r8B$cocH>STB1c=UzK zJ9YE^ILi2i^Q@*$t)JT83Ui;6znzxfa9$7WT?c0q{>^_G% zZm!K=$rsi?(`fR-U-mZZ3PkUPaM^9P`_pXZmf5Z*pQK#qsQq$j_pu3v47u~=?raQv zx5*^dD5K}YTd}wN{-O)IJAO`5+3~WB>vWFmCA$EZ&?~)u@T$r zT{gcpa|laSebMtlSLBLHbHCU;osbOOMXj^tjv0;=d|?c2C?l- ziEO*CnDGm6yB6*eJ$fR~U}B4byxCTP?<$#7ud&;AJo5^@)gqc?b?PtMw0}%(4O`rw zciwb7!6N)@K|Hi)V-#$N&U+&n#ohAHjxx?BC z*PV)Ax~Y|%cvaG3EPkfGQ-88j?00*K(w>e(xRZ>?|xF?i7^yu{OA_7c=qZUO)4OZLGp&!EmTZZ(Y-`(Ugg0{OK!LF zhQDFoHMjHp)OpMj(hs*PGUl>xFaIPYw05OWk)}*iI$O4U-e(&}t8JWC#dGqVgo3WP zAD+MRtj6ufVl!l3NNnW`Kb9jn^OST}l*dbf?kDRv-q?P~YmJ8jlgXC5Mm*s=8*)W* zZ$6!48KCf-p^T&ATlgz))>TJmyRlvK`|vQZJYq+FiL618)*`+BRN)!9?q(M^YjQbp zfButIetVO~Tl**@lQy%JUX#}PibQvxx%;yIhWP|#PwSs8%)PtUykii(zqsXr?w^Vz zCQG@8{z)Geg)9_pv#=`CN{BgU-g*4IXnnhTL4uo>DEsqC42c^hSWheF?dO)6zJP~0 zuw%Z&=Q|T0Z}OZ_cVwQ+y`s!&8)NC!x5^ZLhxPMopJ++dkewFv>1Rf{Y&jR_87`?= zT}$8po!@e9&Wonjx2Xy9g|`WOn0vvwGI!E$?*&eqt~eSxa7G7;-zsoF!sW0do{w>v zoY;X0b8lsDt)7q))ES`icITG!+fFR~@?oQD&O7P6lR?cVx|Mt-*Ke3w_wYcH{_;fq zSq;Z47CD?{mS(%YFZGzSM#Dw}l?LggD%tJvGZrN{v=!C2SlCZ`KS^i7vZKk7o&WwA zmKi%u{-~9umw%-E$GK%fQ&wL(!}ddZQ?}d%ZJ7k2H>T4}tzVsq?b0}FVzyAIzQiEh zv}XR($-fVrOSQ#ndtQ6m4R0(Dez@$w+86r_&VSnWg5yu( z@|_z}Smge`+5M|%l3BLXJi`$7zlrna%$(v?eEjQAsUCLCFDXa19M3+mF6jSi!^F3& zw^yvl%e&|77BcgV!UK+o*Uje2j%JpseSL?d+waI>nt5 zAAd@Fa>i?C?i#zrQM1-EMBXi%{-|ZONWR{wsmtxk_ihr9*rj$NsPnSzwvV%OybnxK zOn(~E!ILuk+{#&}Uq-w>mElyb5qG}ofO2vFT z`0G=+RQ*fIn@b%`LN|Vo%Dp2irIjWmu?U8bJ0RZ~ZQLa3)$)Pi->ubFF25EWc4B(-KPK<`hyM3mu8Q(U{Bk~;-}F>Z zWHdY%^TUbTQo;C_N^i&8IZv*1|6owp%`oX%R$m#Rqh^wpVG#J}iRco~KNG!~E$^rI zJon@_4>Rgb-tE_M;sWp7GgA^)rU>PW%q)wW(wO&1#O2hzb4MTbS{yBnkG}NZv%0Ud zpJR^gF2BT*=Q0mv)$2uEw*0DGb67QI;U~cdDyAV$GIEz&x(>#tF4?HE$HQH1Z`E!m z=5^)iJ9Y(a=@4$&ee&&9Ta#Ox8j3gFNUOZ9`|<%}|H>2nGM7ZAasG7@;C#<)wa)X} zrE|4zcN=O#H%~S_>~dV0<7K;bL~nZXJl>#v`2x$jR1Qzt&o{eUM&tWO_6CoKR#Q15 z6gPWwHXJx*Sk3(Wd{Mkzw5sXW5a!9##P+Tb$T42zo)Y<)iLaz|{lmP5o*y?Y&tHAx zw|k9SlI+s8i#HuMPAL*z?V{b%sLx*z{dJ0*YgZONka)Y~=bbE`0M$uX zwm;HI5Pl?}Qn@Xa!#nHvx~l?02Shm=|1W*=!C7J>!|J@(;b-HPaRtdre>k)3z5B-q z&*Y0YO0{OVu918qmz2MM`R2P__Z~0ZEuC7sCVQsV#ieP2w_XRUFDh%VdaNKEdOwnJ zU(MWkr&*`{ezm7nC;vgzk_}~hPwG`EE#mzVqtedvUGe62os-QU&li3CR-$25sJ~1v zVT<**g?W8R%J&r3sq!k=+{(3OwSDt;Z_MS>f2L)#RwbMCe60IyBlMjmbGh*OMaP9C zBqYBq-qQ2vrdGQ`tu6ZrVa3VoX1?diD`wHyT(FygzqD!Vnmvx2LVxj}*ZCRj7AqVs zvWCHGvh)+FJ3U;=Yi>PJo)$i{TgR|n=1`Gv`B#I&rpV%>@e$j&+orD3)hQR6)-8Y9 zOX=mL)6LeZroRt8d@g6-mHWH>=d#xOCA+M%#8UHS82AO9Sl;Xr{ZxNzS@^1+c0GZM zpXE5hJJ)&EUr$PIPkFW2`Sf?KYtbev!?R2NxVk8LEV1nP{jKP~EedYFn~M?8*Ae_nNLt1b(TVtreNEOL0QOLl)D;lE3W?tVHibEHsq=)8))z zWt4KzN_!rM%Afvqf9HEuA3vw1wn?Q#n|Wr_Z^Q2y{OTgRy5s|+xR(^~`NolzE^a!v z$7zaabIIkjGIfO*Pu*UD#hE_O`xdWYQ_x&|SNN92$u*m6?oP~M7g?#}Jav}K#o#uQ%W91*+r!#eH?mZDTXt-coe}3Q2B1ZYMUH^Oj3H+%Dw`hN%7M}jw z{8Z2S!?ooZ%+DvXyj`~_BIh&1f~;>7HHz*Wba3OGrZ0X)I@>;(^O|aSD`jA{=-~Ch7JG1{wHNItGXRr$@-NZHNaHFBYw-E23x!Y0> z?5{LxaMOFR_fBck;V+z;pSu!2ZWGAg6vsMa&cxK4m#$VS9F@^{oaDFu={tp_XZFs0 zuTu*1I$XJzx$QV`qGW4n=i?M+#yMeJ0;|7Yj(y*_ic`1!#p81?!_0ozB_!TSikvR5 zFMPuKTUtTT?F#*Je$4~_tQyTUN`4jHdFT|__4jcP%emz>=NND9pT7IM+RS@5P2(II z|F7VwH~7UnMf|!}t;l!29uJnwq7I?&ax^a+?3XL94vdZA*4v<~ez&k?yEbFxqJ5|5 zc7$}x&6qB8?xV5and|xP!o~reuZ+r1wPsAu`gP;1j1A*qx3UKcy>d6+yq{j#{)*$> zne|?)RnF&T1W(Lyn0WKy?6FVp6`5ssDEMGN$>&d&sbBSu3%%f| zd$&Mf0t1&oJ)iZ97RT-XZbh(lF}~`wc%*dV#+?g=>buTjSXg}*hb$`3_ocGU++!k@ku2xOEX_v$InfXje z;FDTsgWo3YGdL4eK7L~RbuaEQ+tkKD-BoLsYuijrcamfdk)t!ue!R~jBkI(*%oDvnL9HNym3f+$;bPrTtGSE;HJcz zO!X4oM{fR#R`~iZNkLo4V)>ydIma~3l0#m0q*QpZu&{`KJn?tqy$@Y+FS=v8L;u8l zJUjW$<1RIWKUNM0Sk|2pT*Ue)$$hzg$dsV}E9HKtT8b=L=$~@aeHV)n*O~cqtWJC0 zjlBL%O5^X0#jSDwBlY6CuJ&B9Iicq8^Y4GdZ_6?#Jw7q%?f>0e_Z^P4SKj!4EUN#) z0)>~cZ2SMl@kdTQXu#Lt6#B&D-bbk;mzA{G&+ckZnzY2{6I%oSzkPQs{_GN3a#Hb( z;E@M6mI$@9#74b*mvdVw*=R>ZYudkEcRH5O_Pneems0V+=hl8D#w3P<&ZYO}x*M9! zoxwcsu&l+K-nPnJGw06PXZd7q@4b!3yIdyD^PCwa-6HdO&IGpYm3j%^|6ZSaOM~H( z!jB2IQ`~PcN-s)KU{imn_IvYY-5RCV`6Ze4rk%%Du5T3nVk8mx`R$EWZk3#A@|NqK z3#Rt{nQJ0Z67Vp5a>kRx>sOyL(EqUNg3b|HL6)b@4m>;sb(SV6Kh9US7XA7A`qay! zGg`)JT=)2<=SA&g-nDenylLA6WPWOyDelTMeE#!w=*srf3(sw-?)am=e8b%zAEsrl zRk@P0TV>UOX`P}+>#x-BooUi}Yhl&7$g^D=ZU|qWee$JXqVYQB^C!JF1X?R?Z_S@`zsV(NPLv_bO>M68Y*n~%De2)w<)R`r$t)?H>fKdR92_T%d(Y5`{rk-K_K51WkJSVfyQO&E%Z*0@tlVGAe z&m(2VYEFyZn6u|2dHMt17r&0W_2kEe7u||l4o-6OotxwMa^LAS>OQFG`W(&W+NRzT z+#dW`iR0o5*BIHU%Ou`SdYSF1xm@z7=%>C3uIg^_3pO5_^uSH)uvF~?-M*@o$|d1H zo_|(eU(e91pt8jNXyrZUzX@R%_#3+U&*!b_uMwHsFCpgEdUj9D>E~M{SIyCUs(03G z|C|TkOKhIF-#U1})6FVc;!UsK!@{mD?d4j(S1r@8SfBaw=h-JuADKRO}CmF5{}bf2M55%%G2x6%O6K?QVT*g~?1q(@6$< zo$u`6&rvX8sQbI?v&Rylz^<%bvy9IfAqjC`0xduEUMu^)tn1pUfG54l-`Wma<}G96 zy))75LD82`){2Rt(IShd>Sy>r=_qs5(H zX04pqefN1P^ZCdxwL+T~s_kvK`FBr(nB!T=g8|E1e6KM5PIxWeF!u>}3FF=#KUVIW zN^h&gB6!$?#o5*CM2a8IiQU20Jo~dbbIUZ@L|-n3Q%X9`=Qix9GS`^Mw~T+$y_xY{I9xrQtVSsuhQT7oD$aS-rYNU&MD>5 zkGP1mrK-kD)}2ih`lfqhu8VO~)o!!*4ZbcuuI*m}<;55G$sR9IkI8$W&wiu%<-hmd z6Xlx2X5O9r=x33|dk5=ZyEoY6Tej*MOiazFaMI&@KUZ)^@nW&Q=#+%{3egQ4oVFYO zNx#{3=Tts7=iOPJ_0f7J^3VL9K2ZybkmUc-7B%B&P(2e@&)c8VwtNtcbMHKt6V~Wv z(Ek1R{f+Skmjicg;g;HzXOZ+oa^4547PF5t>Ze#8`qt6-m$_jl+tt9UUMiEzUF-!7 zI90ZDOuH|oV>x%_(tHt^?1v}B@OqrffuuR2pYE`PWB_g&lh_TSGPNBRt2_AQf3NKc+x zTKacO^Rcg~Q$lL%yz_aE7N#U!|CQXB;&qKLcoSC^zZ9eFx|hmLjmk+5(Fatw#S295 z7kSy~P&?(*j7c|_mw(Y*B9St4qZHr!8>^H8C-~0zaDwr#IzQ9ynLRA8J{rW`JDDsq z*XOX(>(6GtD~xYHJGshRAYgr!nSqJ<`qF=I?LQ@IrBRExC$II z-rsCDp1+ev!^Q9BBN;iiz!E3cpg3nnplPgN2S6q|oQ*5-iy&+2Z;s(rdjjeoZ8;?!2S9)1{=wVvK*bSx`Yq3XGrVR zb8?+6bHB8p(|WS+lG3YLogw$XXLyLVXgxl5hmfBuLxzYwXe$lJi$x%qMLx|{nMe?MxTb2w|7 z|NdJk)vFgNOgB~ASvcug<7Agp*Bve&wK20YnIs!hDHc)S9`(j?Rf$os+Mcfx^LotV zlGc3_UAg+n)|Fowb^FDOPNk@DH_bfn^`T?(yjxSEl#c(Z@!fDjPB7fFFha{A=jxYx zu1XVG8RT~sr^cT9=D6{z#Pz9l-Ax@aZ_h+BJm@%fw`=mrT|48w)Ha5=|4|h?B-LIm z%H?rn?uR|MZl;QgUXt^?-!MmD`CLeo*#agMVfEExv!nW z!5(*pSHH8JVnZ`t3F^E&&+9Q`&EGFfzbYPV@o@aL@#~ZN{b~wtJYx1cOxU_>*)ks1 zO$uj}EDuf&51O)NMUrZ^^4;(G4+PSyWhSJ~(6re$S9~s$js9<8k4LhlRnydNy}EWe zR&k&FosF>^xxEvVKTSRM;f{%_jnj{(DjSk`gf~ikx&AOR;Of12FRj;~)g3BS5+x0$ zHa%w)l`@<2x`Q$L_!gZT)BkpOU)wxM@7k6w@o(wN*0bu&X>H>di9Fobd{-w~5`e)8h*wDkY;*=3kdC~G=ZXU#s(laTNy=502!|CcnL^PJw_ ztK17dr$m}mN2KgqV&R=-*sxf451-thSH<&E6HSyShHKYGKfRe7vB&0zi=v-Z3gf92 zo7bJ_eQ@b;p+(42$#su)W526bGSxTBPmMI*I+34gMcl+7hP!WH{=99$H`hP3qhP|p z1xg%p!4VG*e0s%y=tgs9$9i{JZfqYy91=kPX)J1MaW3jGr*;qhYvs zSkQr_r`OY5tbD3Popx@XU$=XDgwpDg2L)-j`HUvKdeoFvexKRn-@C|{H|@5@{a*Rk z_nd|96B!X_moh%~ZZ;o*2ZoIg*4zvJ*ZyqYMp50_yRKa=wRE|$CiZEz!3riW=Fn*F zqwB-2xX(PWdiu00)AUxp&M0VbdH?b6lfJ*6yINN~)>!c-MZPTH;RT^vFI294J)3BF zTxUUFlGMk)PY!KNa67x+CGAO)-1>_nq{hjF#TU%S?4 zue+KuZ^`fd>0Q{h@z{by?(&qAN*uGN?y=c)M&r}3g(sY2C%p~V_)+4z+u(5GhdkAf zI}T01w(AUg-z=Vu4jeDP27UY0o{;RAo8f)^=y%5SgBpk`o`Oudo1BxPjOMt)j|)E&xhm{ z7E5yX2=5WF`dp@DcZKCOb6!@dzK$~Q?u91z-6FhGo%beum9Gr0-SXR;^ZP6H+Wh^G z=9~)Hf1zW?z1TbzHJhm%x3}ai30Wzly1PXB{P|wvQx`ez-Po>Gs}aL-&vf~A-*t>E zePVm-c)uKbvHtO^^?$$aT^fA8B{6epw9?ak@@-3t9&Tea{bJRj@=B4<>ZWd{U7RP2 zaJ#Pi5)Ya4!Xi*L~4~7SO?u9!f zWoB!=&I{AiUVOs;bo2SGUvjTA-f}wb_y6?!ltpZtUWry6 zD&~H`{NwN`RqNHY>^G8Zk}_RX-*7IH7W-nq@FRaKi^dr}+dHdMpM9_|tP{P?Y^I*w zaji5fck>pe-KBg@)kG8b6in%q{qS9S_~vciQIgLNzn@ ztp-Isk+!i{qR)DJb;P}J`f`27`E7?J6PBO3cC9gb+w6b(-I>>4Jhub0F3C);e{X8w@-}?JyB_)QJ@~j*lUMw+KlGfMd!{YSru6nQBvJ0Hw z^6&Efx}I-+?ODW?3I7E33?H2pzQ}N#_ZOGx`*W7_%>-tydwA)$-@LzH7CPqTE19r< zS2Sdp$+GG44!ydqOQtq7>}_a!^YL~BXWg+sc`umWJ1kjJTY6S`wbs9kLtbiYE^Mrl zSb6Go;(XRkZ=SyV&$0CM&yBv9CaABiFtB@k>_Pi6=i;`5AFRq0?mH&AO}6{ezwY_x zQssHe^nUJ|trjFH;L`BBFo+=}!GXEqr`S4$zsiczOKoR--xgDS+pcVz-fHpqi~pDG zUda7lh$YeDv((o>2qdw8}u-TC*2=fqa`iIv*> zPo;M}-pXX!E%N+h4$nJjXS+**cCw1AKQ1v*KG*f|hSiOqHB0BcT5!<9_Jpfn_POd< zD;4EmM_UNw>C5kv-bPbN8Oq6C>R<$Ju5G%;K5( zEpyMgWe@rLihZPIEE#Wnedc)kl&0#VGj*{Z?=0T4Nb+p`ujw$~%|@WL-r|YK!E@f1 zYtr7|%aSYp(XjLNeFo3irj@4@KH63GUp{HA^^x_HLH(}ujSa~wy5>6`-*)cjVx>Fl zPc(Z)eQMjVLwT{>t@Ymyyfs#2>~vhZ`HnJAuG5AitBT)oJa(M9T46zpT%34zd$-|+ zg{rzuFK^teWB!(|;=_35@1!K3vwQ&uH$0m9b63RwRT+VE3k;PSY_7aK+~<_5u4~qQ zq0~@m+vY3bNgM5T1a5fyonG>nWyzfqrO5KmF@=?){{7M+>JvUEbq+_8F_H zTDq6{+jpKzU5%DDId7E+n$Mmt|EG|D!au1A(`~=cn ziEjNb=O5TGi={}e?ed&Ghn)AVnc>KH(md%*RZ;RBJ0{NV6IrS|EdpXC2joV6hHb|_`I(=~A=bZhw+)GZ(ICxI++;@j(PxkY! zJ$>cU#S5;vGf%4gnVT8>y(YCiyU%g&3hptRcC%(uj6VG zJj3-e`)6)p(te8$jgzU1Wdc6le*EmmBkyIgm!`z*u(ME`r*i9p!J5Y>HI=iL{Q0up zR=8(Ng_yQn^P3~}X9Iq`(m2(2e1n2;`k#|$CQkgZ*>&bQgZmEg?83D!cLL1%X0UD% zOWor0erCkpd#dqHQ5PPq-f44g)}Dg~?3bh_bY0y3B_y(Q+oA-$FN)O@G{UCwGa22J zckFw9&gsw&X^H7dX*Yjr{4l&ZWu|MzRslh+)TQ^g2>f1rMmk~EzHKcNj$UTbS;4d^ z-Oor#>Em|e9RB3HUVic0@^8yWGkQP!U34khGPO5W@X42|r&5LDoojU(p10gtU-;GM z$>A_F0jC*1WMms>+i~p{@#dW{@7wCd9B=1%7{^&!J(;${f=RRXc-z6iy*BwNf%$Kx zB?WftFXc_mESkS*(z?k(hq>>azZ%WVz5K&<0STTxx1JrJZ+2y)vrWWL`TR@l3>h25 z-xlm}JH~ldpE3KJhIXdf`PEBnwnYmpYRqNX>s$~lrQXbSZ{1~sUcK5wi5a&A1Z4PD z_1|jgQ%YZz-zEF$j{3XGSIuu~e3(v%d}|b69FjlBc;`}u6qg8l(Kl@m&K$n9^s#1+ zUgHB>S&a+-j(^sCu<7)YhfE)Y1FWpCyf?e-AD{kfj-PZ&p-$3^px7x=FB93T#C$qy z#0B_W*i`RbtJ^Piy2#?Mndzp&kOuZ!>vS)frtCP}^C~^jb6VqqEu95#Yqu`2{<-$2 zi?N7Y?xS~adV15cJ*J=4t$4*c)syXt<6o@zG|+*GU3H~zF%!UFZ{bF zv-6?Nh2rS+#4kmc?07#q&dX|5*m`KY)cJqYgdN&W?B!l@dQWqT){~!&kNd+<_g+)E zXBf2P(_=TWW3uF*(d8*dZlsV^1)j+thRSZ!h_O(e`TPg~hjW zPtKV1!R+GuUA;!$j{8LgeZH)9_r25T_TaJqvwLS1gQl`Ifwm?zMr0+o~(_@2g%URx~?CUGoEH{gbAzgA}P8jK8#^Bow1eEXIsp8R%vs-9)7k1LzCx>Jt8lGi_74*c6F`>W|w znOw5gwY7B-+h3JF*)Ua1q38G%pOl;(N8X4pc@Y!wa&uDk@f7iu*JQT4*uM=Hs9`siU=DiG)O!!?-Q?k zBj7N3@4-eRwxrYVUYiM1$=w+_{W)kbMH9XJ%Ykd$n@l~6BTDjJqhzL(Ed9@W zM&2or|IK%#?yShxYY%ZRxvW_px2pW9JoACefr8=oGK>yaujYPgxVM&PnXh|Y-uGmK zlsPKLGUI$!+%D8=JM71`yYG!-w93VGKMJ!RNHI!AFZ2Fr!I&_&MW^fDN550MSGAP< zxYec9z}Vvc#O>b&y;UbwnP#NLy4h2E_CyKi2gZG5{TsDSA&k#r ziX2OSh4rFPxu~6wcHirY7oB~=`J&vKJd;{9I+g-7X{o76?8yFR&w6QT?ad49Z$J`e`1tL5? zTz@!G^Y+w}S`AGzYsKEb`MtCE@~ob!^(PFrpN&@uZC&zZi`TL#`&C6Qx18|RIQI4D zogKGcZokRJeV=z4pVqe;Z^JYh2g_?s$>wZ{TRj~={E7ekJL~NSze~Q!P3$>sSLS@Z zEn&(1M^-LFF7)RO}#M@uXIBJv-W`CpPFy@?&?SGBD+p2a<{^MMQa}Ca+uHi^fDjE*&d^eeGLc~; z?kU}`8pE)dL%r(v+tWquEH1ykAF(s2D~&rH*mi_t*GJCBishEvjht&H@p#@4?5+h zJzXZ)rz`DMem}na*pbGPiAIOc-;tUS_XJ(yBy@gU;mWPxJA zA8&GM7p~25RpwplFr)DHwE+1kCT>6D<=JHxE%Ps*^k}H0OZBi3*{Kl5*=Y3fV9Wk*$J zoxd(F@cCud#2j^|thF4w0$;tg_TKV$Eld9Gj6`{sRUBzgSS4;h&T3fMcj66Cx8Tnd zg`IawtqSBs=f_QC{dH~b&02=lQ+?}qbvmEFJ88m{sRur8&`)LW(mNy0x{guy=+*K^ zCmPpaXh7Q;KKa*dh4#@1iAtuKo>J7`nP-t!LH7y%nA( zE!K(e3(?=jv25ix%c6tv&yR-ig+JC{y(Ga{7;(6!a^8t&8)tPpyG3#rAAgZuy7ua& zC&BxcGrlz8ma@IZ?AEwTl?? zGpDOB;aQ&+*J!Mnl(`};DD+2+mbLfO@YN~1kNNV1rRARUW$E-!QvGveN1RZU zzzTWco}LeDM3>C8R_|cx&Cc*^SP>yFbMwXp^R^$FrL)5d6mQ<`X!&Z#a#~~WIp)NY zX&TL*eDm#0d=Hu4-YC5yGWw}@Qs$9}pHjvDK7D_B_=-rKG;a%EVnT598~wNwGrDHH z7L%A6=&sh!D#kWp!pD8LEF!EK))}yKvt+Be*D5fFEMf0d@4kB|<)W6?Zo#q>OR7JI z9Q&(y*P7{mhsW{kGGm^^O`#7T7_Hdy;DXC9{?ZG)Ouz5PrF9FOzvuc}(zi^`scrIU z)Ac6yOtZ2--pjuFy-!C*JhfgzA`HPI`QRE8ihYPg^lYB5H$wmT8N8wc=^>$>rW$Q`Srg z&r|N)z){fa-;$KNS4Bko!VgB-Ex$ILUL9FFOE+j`7{l?N)JggIUyatKd-CqBd-_L9 zN^9-xsQceH&N*Sl(vWz^<3(4S@reSVTl1z*NIw+yefhBz)x$p;c#Q9dziu}cePL20 z&$MIjgRMJXt@4vMOrHEvcR_S)>q4Jx3qHNx-YZ;x(#(kOB6C5;XF*YG=D$lV)+_$s zHMwkG<7^A{qgku{ee$`VPf*=$tc;u~Uuw9l_z`q*O!uirt>6XyhEQ(c(?HNDuGZtT`IVtDmJhe2ciMuU>A z1y=+vKR^1)xh|VOS-ip|ry%i=OyO(2cMLfV8^kPD?0c7Do1V=3j#D^c)7L)}4l_+Y z;g@jm-RdLBw@xH9ty{MDM89=r{Z;!NoNL#e4y}u_o}D{I^u|`9k^>PTf~%*#H9joj zTVl$7=J%=8>cs!fCu|q;1+U%n=$>oz#Dk@mIyZ7@zgf4_R%b_-K+3h9@51)U)yH%* z?VE5XEOyyx^@f!ipAQ*byTR{QnDS@Wom-28PSksNwJ^5N<}y1kW4CNp01NxWssfos zmlI}~MrFE+)YMAG%;ebe*u^0@?G3xn{$sH%%b$HxnPI&vbLnbMHjc9kkD7n~_3@yu zui(jcZG&ffYqnaoPOvgch}n_R-MRLJGS|Dy&#%?h=Om@y5N2EB=Ewf`+R|O`{+rBL zcC1-)i_rfKJJLQySg;73{JO2vwJ#(-(mbW^)}pBeL2LaTw5pWqS2LxH9WvkO%=m|S z8s{5>J%8*UCU_~|jLN9oaR2h>zE4NP4|&Ag`7mV)Pv@OU22*Z6KAkh=_ri^4ns%$+ zEzu1w^p~G9ug&+MnTo!*fd2y7V4tsN{;Kl$K0kJAfwz;80q2gp6X!85wc`~|)vx;K zCB43TT@2^qYV%F!87CaNsbI@+_2omauImm<4xCxDlg~73R*Jmx!#d;rGRvPI*6ezH zWIMCL_p(p#a-6zKw-v{fu5aDTwd7=@g1g@Dh-umX4<{x4XAR0yc$D{E>9^Y7$14*j zg~wj%zjj2sC-+fl!|J#EY}Z%(@tUOjsw7n)n&IU>XO=yIe^nYT%6{ngoB6eLXI-AQ zhuD-uTe!BptG=0HcbHGCqM}Zy;m~9&QMRyW-=CiAtCU#8C}iM#_DPuMCx78}T~-$1 zqQ`R%DT{QZCpYKse^>Lvt>n18rs=-T?<3DGIKu6{MWyjfagOVZN12D8YP^pxS9@IQ z_j7|rpkP($p%CZ0j;*=px4yq2*z;3ux6Ym?|NfO8&kGN`l)G)e#N88HY~SpBu~JZ9 za#cK^#KQ?H{q}#aKkZ{rYIK^sq2hAk<{y4Yw_ezWBpJZw;^jmCtH1%d6Yy94&doFdV3OQDM6uTt0{ei9H ztcaVNhPuug?Pjp1LayqImkw^^ZerB=5bE4Oc3U}s)*w&(5k*7p)e zue~sI54!37p;tywa#5Yp!RZ0a$^i%X!Yy5zQ_KEL|-Few=qT4;5|1;XY z^t`uxCBLTJGjn(3#ADgJ9QLWkon(13N%lmq!#4-ZhIA=`m3I>PCVu>0?s`n%2%Dx_ z)Rwu^yH^UBus?tLR_n&f5sRr>M`@OU_nSYADYa?pbd)PR8%OkIsJR$;`>(^Mn zUhZpnjfs29-lHF1mY%IYu~&XW{lXKDs%5{$o-P(>6V%`F-@>Kn!vCuU=f9RdvEM!A z;N&uv2TvAWedJyz;rhf#W5Y3fi%+IP-7%r>u0P&*bn?m#!tsZ58TEEQ;k?l>qlk?m z&*R^oK;f^M<`eu=3!}Ct8l9V*vwTy>1Y4~KXMWx2cq-~5_u92UDVtTJ<=^_I>s;$4 zjCW5yZreU(r`NI=_Q>tC)xR~ltgIHkQ`oM2knzooRb795TMVA~HL_hR7CyOrvK~)FZEWuszO!MH z%u_y??K(F3j@M-;p;=N*DeCulwxzY6IjQpS7ykp%nhu|Rzkfge=lo`x>>J4+7rVSp z?Az<2AIjnMk-c{2liW8o0!N-)GpygMcKmUuyX5%=n?5pD-ic*k$+Ta+ctJb^&sR6* zOU!LYR_=|TTsdLx<&6u1lhsXr&$M25d0*y%BWE^6eEmDMrK-)$#`urKdv%-qWmtJ=AtZzT=Qszx140>P9Axj|*mbo@(0o={b|`w|(p9GDlc-*QkEJy59bK zZKtO5%z~R%HA$teXO?S;JpU5K=)gUh!$~Pi{(BkQ<&7mX`WUC~VOb%=Qf{L-HRTF- zMBDd049bB50X7C|6^avnGd9Z1Ji>6w?aGz}4JQTjWm{EJ`k%%tmMuC}E!}uv>yJ}Y zGu=H3j?P-Zx$o}L7i;wR`Zabd2{!~xvVK@`?8P+)c3bINAu)H3=jUEL*|1dUjv`Zv z@rTVDd{kz%pSAZ}!E;6j4e(JhjGtoS4%7@bd77ewfOA{yWlAOUm=isl^idA!-G0b`6us8Darr8Qso)Jr; z7Hxd3Hz9cmtJs}YB3IJ)-||a0lGCnfDpjsIwd$?a-%orZD?h9M_B-{DRf4fDN&o%q zn|(`D7QJa(eg5X^C3BDY<)u%W&6#leS80fzu zmJ3tP%gjHu zKE1rnPO-GrcW$Cf)!Eh?-e+31o}HP;e>;BNwKGeWFIm2M&S}}xo>>=L`dX(a`L9`J z6#kQ&p{V4R&YWLr0=w>9I=@EwNSQn9{&!+bZ;G1Z`&i`jRHoM6e4gCJv>~?tuHyQD znX_wt&hcxyDLCC?y~DkeGq=?|*diLa@%vRP^&fZns%0{s&aGGH`jXr(^h>O-W{J+( z&3z5a`nbDdf9Zy?{nC*&IG3Ni^0Rmnd-tY37R zt|?tH+9zYI9$+JJE!#x2qUH1gx1!~;76&3vPJ1cc?|0mT!{k`qHs|L*CpSMzS-Rb; zE;{^9c1@3qm=UsXk=e-^Ee^}v{hGF`e_5gL`M~zx?YZlFizmN2|8J*k%=2EZ$)^hU zDXnIY=ymzr#n8A^nZZc;oZAzD?LMUbi z>5WU$7n&Ql-V4vl-%{pOBM`dXMe zF=?7bXy6lmR0y}#*fhuqTJ zLMJqy%<+3s_Ci0y#U_UPn~%B=&$$Yz*$ww+RI0~psO4>4SdwbwlM?XmwDJB0f*a@0 zyBSiU{M>L!*SquQ9ZIK2FJ7Xu-63Fi+CSknQ=a~9yAnKkx@1K1?-vEie|R%Bo+xPD z>bkM5QLs1p%B!17}Vf}RDc+G<86Q@`-PMhB;Ec3h3yY_Zg8(VoVljxM2 zeP>0UImjL7b0j`qxpZRYKTd(7xB)xsanZCU90)UwX+^AoEiKg*Xw6FOdqWZv2xp)}jca&Nn1e5;1^ z#-HDooOdi;<*_eLH{DYxW68DLGYi+7&tMI4lRK*W>)V2bGXt#GJ00!*w7G_jg_Y@3 z|GSzhH+4Z)hWTG=!i1HL|G8x_i0RwxbTs(r|2jo+Gq=A)4*&C#qwDk~B1}Ix%Fk5$ zT;QmJDcau)RJ(S;&}PK zmq$?GkdNX(f#-h#SErLvJ3R%<5DzyI9)3QZ*SWv#s6C8Lz4BU zh^v=={XX9NxjKnmV$;tbiiwAPm;`)h&7ZQmG*)lX(u0>zBrLI+?Z4)<`@?5T>@7J> zgz~O=*7z_=D&4xQQ>kpBwp5*+k!fR9-CoW5jJ2W`?9*2-Q9HjpD8q17NY8TZ-V67p zIF|8AE-@*NyBWQA-qDIZe|t4NWhU)gdMPW}Xv%>leY*Fz|1a~Kar@-b>UQxd#R6Ot z9JP)pU08G7>BTmVHjfowzAxtX+TAJg<(t&h5BsJ+4-@CQsPmZh*9%ke1_2iDS^x5) zCK&Cr`jr`2)hc<|ddY?>mqn5u6fJEID_G*|K8<50d}%Ft5vzNk#gdhN6;O&mcFf9ZIMHvL*xqoeSp zvPz%hSV zoH;7tsyWU56$=M)baC4hY$yW9LRXN(?mVtrd4<4+xE>UV?61$R+T6M#VlO-bAZ?FCO zy2NwK&zO8ofBW-MQ^bjqQ%{ebPTsHg+Wq~KG$Y%G{hOEBJTh^zo9?v4adM#a%u4a^ z&luuQIq^T9w(@s!@{2=kaufgTOA5FZsm%MJXw^H$<&Q1nH#|4)D=y*<+P(Hv*#qt< zD|g?Ay~(yZF&LgL^-3iXP`G2^gVe{`j;>V`v-D<+lSkB@6iIo{=LW>Rsw<9naOkvp|Bk4#>^zcCR-4oKGAOzDRPtT-r4dPA*r4^Wz5B^EcY~v%H&y9i~_q%ptH}A_o&6p!I z)j6WsVq#x_isG6B8{T&L=UJOh-a0|YagWt|mJZ>o0p8-1b$=aStLHT}>5o7rd+%QN zJ1^|5uQ#^mY}x&3_vQk#rwf7)zvwcYv~3AH&*{Sv>yrKMM>u<$yeMvFuUM~^IY+9! z#Y5nP;ZetXT$v3F!2-@z&L{1e9^GUzJ^bT;$g|9OaBPZwl{t*|=W%1m;bTVM;o*#}S-~DEv zn{t3lbK73AbKjR2@oxL}YQ^Ra5?%cW=8R&3fXLQxq>7OqeYch)L%%AanLP-Uatk&@} z1$~C=__NlkY~g17A@54s&t%YHGM)4pZw0%z5)BD z{gqaTpEl!1=cS!f*crwC-QRh1OM9+@>z%H?9ADO+cqhL<>ecCj-}lc= zIjL@B{z}RE0>9&0o7hQ4JGC||HlP1&;H`D`RDh}X-yas-J(cg$Z(o;Hl=fScGb#Mc zoVgi>o!=i!DQet>fsl>|-B@D?r%k`DX3w6$zfQ*9BF|S; z_&{CSmsoc#=OwWwZ!Vvkzc{n`pETd`nt)oBa~5VT2UJaZuk6hAv-Ho3Sg^BIWT)BA zGp~IAzh+YToApHY@^+EvE21~<%u?Rn;c=x!O13>E|&9nZz zf7Mc*$-m+xYmdRr>B80JyFS!^v%C_kKS71njho4N-unfIs`gFYmd)mt-;wzDht+a)FjUZ#gWsJFGj8mO+5Be+4&>SN4HhB$4=cj zZM>i{>cy7_9CGt-9F_Q|YgYb$dgaZ7xe*iJXNA`M@)g_UaU#FwvdeQxx8l8NC50~y zo||saI&$!E$rL;5-Agxk&v0TX|04Uv1-1>D}SlSt`lwFT3)^rP; z+d1)p_yUE{sCM&;Ju(L#H`xhQvfS3n5i!~+9&3_5Yrme7@cv1WMtt`_c{neeYIJ^q zpwI0&4G*oBZ=6}fXnrHaYn?oY7E5vy@7ujSs(s-$d3LEEl`P(iH!gZ3yhC;e$K{7d zTNb>V;}Kx}t@)&@qyCpSA=4g53mu)WFH=`Kt-M-I-6q93!`;?V($*}5N5w36_x5$X za}-amj8Rz1{fkrK$GvB4Y3hDfVI~R>BVCtXQgjdtetGoQz9>skbxBP{_oPpS+rLiP z#vvQLqp)mOr2HI{qQ^0ym9B#!|AqbnAS?1VBS=e zrt{|c+pNb0rXeODJf%0fUDf@(;uMornak|bb*p1S_9K=f3cHrr=*znG*dOZx6fqu)Nur@OuA$i`y6dg~iJF zcwcXH7RkT7V8^*j=O?;v6nWyt;Y84By(8 z4dT~XI;_JJfuTdt$sZdwA ziJi&meY)0ev48v4*Ko0>r%082`^0)b_r#@#&9hDRoq8Unz`68_v@_R1b_TOKOT*4w zQc~C76Ls;j>&@Y)z{~i7RxUe*$A@oYah2vv@VUGx^!;Ji>WQ5 z99jF<6!n}64Qq{=AKm-*@3#}D7+V|99_y-lYHl^D!r-XOl=JfqV*@8l2<%d|{kVB= zkILTpcQZFUw~|sfvnVgSV40lhav^1Y;zx6%6C0YWSG;5V%|6L1Fpgg_m(kbEqi4t0 zZFeHp&gs4OKiyKVVvFRmM^`t-?t3%yK>f%68ohn?z2DMAr(QLSozHE2c#ceULX7Ug z>Vk5|&o4wKiqV|C#N#&dCK%TO-!C)n9?3VdA`tR|I0Cd5?-~n?IMX-h3}R z#cs`U9wW<#2M^D>o7&rRZS{n|Jok@3pT03rV6j5P-^qeGr+?18Q#bb~S6;fol8Z-m zN~Vdtq5wk=2N z_OtAY+S?x^XlAo!EtuiM{`@!a&7 z-1=I3KI>oU!iJU^xlBc(4qT_$^cKD1@B6m(>Wq|*jkj#qU;C6eGvxHj6B7+ysr4xv zZLw_+EIhdK$Im^PJU4@vsdepr(!RA*?QLLc$HBJ!YRlVW$`0?j@T2MQ)Y^6KzI|V< zS2!QN`RU@m#rv#%#T#FEx6FU(-M_7|ZG+TP-*da8Iowwl52!b&gd` ze7pC)n=UkC(OfsSs-*dkOM)!Cmgzn`Nkx8}Xxsco~bP28!a zd6fNE%jw(k=j05FrhTdL4YHUmWbsw>nM}l-z4NY|cRCfrk^S$?&u*XhDjA7xPhb3v z(&B&LX>jgKK(d(m(f2Cs+<*40Ik?lhdU0IGn=TvXIZqZZG|Nod{;yX0K;z+*poJYb z`|mvVdL+0tL*7cMODsu0YM${vyB$^)Irl|$y#lv}FX3fOy`%X#Q7R$L>+!c6ITO_$ z%_#Zy(`9vJZb{Daz$@W=mO0V0&rg~eDx}0zv-tPC%S$dEo~;vmZS|ailzt)tf|RI2LMOU7LBN_CVT|=J^pncXY@6 zIn(#NW{%jyX4z~TYwfO6Zm;=oKAFdHxp>pknR1(6r_Z=-%A(1z=TLCByWa1@<10C? zcRQ(h-#+K#wB2J*^8GvQHBCGwjoO_`d-r>My!!9zpVD^?rPH=qI2>N;;Ovsqt)`^@ z>+9*$;aj9P{X_CA?#Mhnxjdy|)1o|UMe%R5cgG#F{Nup)k$0o+4(}fm z*2}w3{%$QX^_J+q{}M}eLz;8%g>?oVI@Ikn@8{1#uj0om&h`91Y7tOy`(>C?ifDEC z@wooOrz8(380P4@#QQSwE?9WXr+n>^w+CC-?|-YM!Pue9w^jK;Rl$OEqu&Co2Pfs+ zYSxzeAN$?-O8oxZn!mZMn_XKj^%b(zF5zF0YwLVGDL+2yrud(22hMC>aJpc|*LAzj zS)9LP7c4cSQTs=iKA+pfzj`yKZ$GBJnmhBB#G=EKLtIjebUp>V(yEV{*uBp;UQ#nu z-C5w=>o}#L1Nw%l^(WUqeZtYhkdUmt`Sh$E9hN@6lXpB1RJ*ltm;Z~q%@d9*seb#u z*XFs176aE?_2=>I_Y$6M`}>B=oWt^$d&AE=b^1T%e>~;OoL{?yz46_Yf9eLBr9XMn zLgJJZ+g{&#CUQ`4LtxsR{ZIeCK35~_5_=@pC*r|Ui#mpj&v$5?>6V;!kuCD6=UM^J z3swJjZQf&Rs>`pTHrao%gSJQYEXSEaE7r$fmulr{46AaD-@?55)2-_gg}3Ajrrx+1 zu(e{B(6JM2^SAc59$VacS>(UF zPN|rly>?HFV2A&|hOYL;-h#?A7B&kSms?B~pM5%Sj`pkO!{rAwrq}JA{(NqGglm@0 z@BKZhPcocNeG-=tnr~G;KU~Xr{({=eagB8~OP0@G8Rj;rxUOYaxPe{m8{;I2N{^Ev zI}aVvyRdWa`_r-q87>tEdM|XGowrKKLLvHY*PP>ir|a@su6sC1MCYyDUw8Lr1c$=x zb1rJ_7oN{Nz^+-WtbO*?>f2A(?Bbbmdh)D-_x*q7tP2#}E%=VBHEGA43Hg$o&71Dz zJ-^cSaQDW?6D>dNm}8rlrW0Q{<U)jGU zy5F)6?h*BUP~#!HS8)2o84`Qk)HhG;S59h@`gk=yyWU{8(%!TZ|6d;8D);^El=ks+PUp>Dz`}y3)uoahIv~M^e-rg+eDv+4v6zrc@raHmV$BR?`^VciHaZ3DnbRt819J^zrVy-V6L!%CUa6 zcyf_>$0X(x9Qm?6%{Df1mfijWSEZMB)h}}?POv1IktulY z-Ye28mgm-=IP+>=Lc=%qOqTTy3(G|y72IQMAm9X>~n_MOd4$>VWNa}8H|`@14cX{z2)_O-EJm|oj`lF1ER zG9fke^ZH&*(&Np;5Hp*&=9j%rlY>?yPx113j(>;Z?KTht#`pe16jq5JVJW=v1|H|x+(*jS| zuD$l}@`U7t4;@u@WVPS!Jrna*JN48#?UYuPJDZQj?g^jIC@I;lKHt!*J87#`s9^Hh z?@ymS+_`XKOKOLo(f3XDF(Q*iA}#CpOrQMXj<93nmACKZ!@sgl$*=W_*dx1^d2LV>1EuNQ|pMc;wh0e7RhB(7WK3!$!~5 z-j#RHzN=8F3J`h3#J6s;T{Q0@mxS7myK*m3o_Ie9-9Q$@_S9+S{KK-@ctIv4XM`jml&zaooI5*2;>Ze+H2D{UKzVi2v z|Mg1VIG10RXZ6csvw*&{rgt{~Sh?)h&5MH8PTt?0HnDen{Q5-5J>l7XR(J2Zu=VvP z9`l}v;xdx;ODV1|%8K(iZ1hJ&K=QC6)9M>e^UhW+J9Av{Qpnz;1&vp@_^q-gR|&;U z?2wGkvrsvieBQ(VuG-x@m-83<>}~SP4L`?M=amwcR1}oGWc{f*Q&$)L63hMkbJl^y zuU6Ran{+p!P3dpg#O>S*-QKKN^Ld-}&Wer&0_TE5Hu&4v-g@-8fM>fb+m?gBpL6h8 zI0ck!vT)13tmxk#LRf^uc09)Cau>snmEDpkihk86aVQoW?6}-22PO9>+X<0Czl~E z)U%g&+nVh=n8E}tiYxBSU++GD`8n2I0yarYO8WLl>h^31EPHU~R;;8~g$?(N!Z-Rq zr_}XVsnjYsZr%E_N%!rPC&RDJNo@+@dV+L4YM9K zS8j{0wvXjj(#+(W$a~g3*m;U<#HlSdd$ZRbRMua(HaGWc-5Q)fyg%#xp#`XEc=8So;>~9dG+vnrI@(_X+^!y&i!XGcbhOFly%3Ow(v(>`Y!R! zN=kP1*E4NtO=VeWh-_uDogI{9K1WcAf2dQU3ki;pQLNjK4*` zEqr7C?F|#tPnAjS<`dMLzE7GdbX4;G-LB1(nLV{D*E;6BeemxRpSz(}U8?7#HEjLN z1u`|p)_b4*ifDLz^2EXYDf!Zuvm{*NY8$fqo#rjI-MZxRwJ-O3imuy=xq7gcxb0K> z*pPon_o&4FBWHgdn-I|Mr>nX9U)0sjBH_i3%Jy?7hWwv!)YG;s^`OI%U30Iva2_l@ zKGXcC$zCNRHcyx9M)tFgzx>elzX4QGgV=k1+k1XA9^?JDE9_pa zW3>4GvdwR=^%+-|9M(P9!fon%{o{%!rA(@( zJsSm_FGt7Ffc!c;bOzf)qol=P89{OC#BBbk4;8Lwku z+!M;m*ma02*Ztl+56eWRaPRN@3=CcmZ5{tkId(Xvh3Q%KYlmdB>W>+dST{QU^|+Do zKHcX^t){5N+Z(~>T>l*raIcu&`!~Ss+cLT12R>fQd)DP~%Tyr!j7aHf&kfqm8P7L; z{CV5U^S<@t6Zap!FF5n~bJ1pgue>acORcf~rW2Q>UR!e`hQIVbQ=hY0-^@#&Qjeau zSiht@?7)IKwk3Nfm!%gzSgI!a%X$8p=%SeIO-ZZ^Cl!32({c9Uy?u613io_@eO>iT z^qK38T}Nik54ZlD^7d{2l876pgF17*`#1bE{92~8`_O*#AIS!?3H(dgS2kvSuGw*H zT?+Tq8KIXSYAjI_=FM<7Upk}eaYK-GXo~ukP5Ot=@AOSHRePjXeKMouS0J14nyB5H}A%knViYf<9);4vD~tI_PeHSug%u$ ze^bgdPTfsxXnMTNUENQt)ufq$`zWi!k%ChjogIaOYWJ$Vy(9MK5XXYYYrWSmnO3Q; z%la@bvaCof^}srpjim|74;|-h`TJ76{%f_7oy$3|TavYlb(abm&s>}sEvC6!P$8a! zXU-N)yD$}h6W;W6SJ~M4*_ZC^lw6;=Xqp#G=Hg@Vb2n#iDqg#m+xOw-izO?zFGzi& zvOY4W`_4_%BPugRpLFTw9@eg3RrmYZ#-!=$vCZq>^4QJtvCI@pWGlbiVdHS;*1_h_ z%p#Q!Em8x#FCD4dJMrriwhi^h-5=7k^X26t^OpxneW*R<9aZjnPP4DrZ_$UU*fsNI zltbS)bTsz zX}@u;UeNr$g5r3kCrScbQ|sz-7yo_nwMTfbPT}k?%y+q%HC!h>m)mo{|G-qQO~x;r zFMeF$yQs}#@9#M`7T>zF;&JV~Ud`KFX_x$*B6n4&Or5hvmGz2o-RtQ7Q+Cw`FYYMi z$Mf2?yLz`P_dZ~HzGGVbnm-+`k}elk*Ig@9ol{fFx-fGZ>k~2m18Z3|{FHCi{j_pZ zUAWpxv}Ctv^z`+8>a|sh%o8s9?33)Cmwc1m$=)oY#M~~)t^M$9CV9mx?31T=Pd$7z z;n~4!(|#1Uo;wlAE1u$Ey4$68y64=i_01U`{+oQ#SibJvuz69ubMYg=D*GDy zW!u-uFV2{yn6pqbYxjZI(<4`YtrgUC5xUubAUHjB!uk0I4>Nwrn@*41&l6%cfsIM^ zc!j=_`+uSJHYe12{#_1VQ}vZa`k-OrRSg^CfWy3g0nOV#?zzFyo_;KiBcYXXw(PGx zc52lEr!53dFBRL|9olx`!I77{+P>`S{e0!H?h|IlCkls-b6@LHzF2leigWSY+TWLr zuUV^j?zEk>?nc_VWwV_O+tx|F|8Z{p;Uy`rSq+X&v`xHzPhd*H)E(z6<@9FMEcKS( zb9`%-_)}?*gSL-r8bW@?=$gIXvpJaG#Ux_OuNvzs=i?q6V65Z#aC!Ok32VAyCvXdV zOnjTA66#gl9=!khb+KEAPU=S+e&nccR;^opIYlUcW6r@I?$^C*bV7V?oNQY0In-%e zMb%%+y(|UmSkCg@cfQFdG3nB3y??*N_gp_QO;k|e-f9nz0FLSGJFF8;<96r{4a zb@nzMu^D>W-rScwR`XU>&(wP^f8m=!c);%ug1b*kcF+AZ^UdaLKOYBOC;0^vbFR;K zk3T1QoZ)!m9pRgv0Zki{c_vh{_x09VJmlA7t2lYElWq1}Wi^K6GmZM0^Glw7Zu{FK zlpEV)eaxauq5Z`~rxmYH1ZsJm`F!|&RnE(hz6lM-Ube>SR2^sXZBC0}VOj4d*J@ul zePUg-l%?(U$0cp&8~vWeD($>0H|O?I$y~Rx$qJ7)#`FGO)iJqb_PxIoKQFg6GVGji z`fb)#_h(B46kauoZ@m?(Q{?!j+f(c=PyaOgO9$IZK1A2I$cpp}y+84#t#naz51-`4 zxc+R5X%>wN;PpUdpawOzBuaY@h|+d}sJL30zd3d<7C;*JfSH+rJVBW!&P?9tqlLx#=7Z8Q`)AZ&(vlSM%O9m>ODmmZQzr_p$PkFHeBJ(-dx4?VnZvUU1-r6?o>?CMrC!xt^*JM7nd$I5 z&ZR4LzdwC;&0$;nr?to4nl}eYPn~ihCU{?Grswugx8Jet>bd43X1aslpHrbqSIfX6 z{Xff$C9BgNa|-AF_2qqYT)q5kf<>~^rD*v(?FA<}FYT0K4P{afmyi(tdiinOqjdX7 zn{L}(dZqmia(O;3G42Hd8*kY)r=C+^?X3K`?%MV{&-n`s51n4QN&4pV*-CsF4N9Wr z{t?oFd@rtqR;pP!=jXcG?$i_fn(gW@&}tje_fJZh)(;=f?ZTezFz0y5_&)D2$Sno!vdxB=>0Kee+zGeVj+0SuPKEE8iNmv%Y`n%AT;B z%ir7OI)X=A z9;L2-W_6F5F-`IPk_&CWUUQ#VzMW;~yt$8?l@jmV^Hed)Wp;V8qqvsMZQ;3k@fUUf zmj1HoXW-D-c4*#|gGPIN{kEUGwoXFzve#?Vjlx{c34I%mh)=!#)bBIzl&Gmbvz&D0 zW^wD@T5fjU$jsW(ed8R__Tr%OPj7eFWJjG`s4{Wi#i{fDHFC>Ge0Zk1Ov~=UhV9Bs z;_X|m-Jh;~TuuBQ_p5^oIM?sje9-jfVzE~H>6h_4L{)n(ugz;<`FDC&b=)lJA6yCQ zd#jT-WcukFX1?(;xg&7?I_H{5m3Q}-%qvdd;pslr@8}o3_jq)!_U>)dXDshlHe`=_ z+jO9N&WoRBmt~J{7I6OXQX#&7_T>b1&Ljs14hEr;DA7pn)`gE;gg&a(&wV;k#XpPT zRM(W_Y4(eztv&Mo!mmP`cQQWV&2N@#A9+x=bMd7s|9FA61 zr)BL~PU^9*V$}XwbYpW(!bYod#YdTb(z844UhKbg&2RnX~<@uG)hL-%nv>OFzZIyfq+b@*?&@a7I%CtYTA@Pq#4KZE!pOuI(FmTP;W|gWJZuuR? zHP>2V z*1EU4JE&V~PS}>WkIO!7{Ql}^r82Kg+L^}o)SOcW3wn1kUsv3c@O0*%Ii&|4F*=(k zcKW^LG+J=9K5CXCTh!0Er`_rd-8+sX{=cJsu@GYu}Tk5=b>gD|%O_K^ zitG7te9kL{JX~=x@md&-Zn(heab4`C%YPxCu{{Lov1`Mq;j~;t+ zH~x$JH}>S_!{rado3)Nxdd@U_zxrm?r@vVfm3PR_P>8?1TwG=sdq+=8(*l1X&(I?+;3KveR_n+<0t1qI|BdT}s;kh3<>doO6eOtGOKMI}Ie((B& z^R1`&Z8fXjbH~RfrQB|LR`is8jnxl^Q!C$o{2R3G@Y3k+`^+HM<&N?yjMG{! z$G8f8j}x(Uxx;hC<)`7+B%9{XZ?gBRId9(LKPT2GH+|)^zh%p~jBfn&U!2T3siAi7 zv+ZK<_i!6DFMXP|f3>N4NAm)f2wRQKZRP=QRBBpEt_y z#0}D8Q>F*C1?Ro_tq@{5smMm$J$GebVCG*(1>G1+D-J2Ue{Ng_{o1*^c&+|FUenjS z#P2ERvg_BU^`BN*>~%21SbAx5fa1#AWj%-TzuZlm%wU&xkRiP?hjEYUqTu?kQ#XBI z{9$p-m&bOULM38vdPSEcg~rPGzZQvBZu_@r#{8R#EwYar!ap1=*vQFIvre>&i@BZi z(btVpI*ZCU{rTlZZ*An6)$*zKkcdR%+WyHQx*TY{d&x{w#^B~MvcY)c1&KewQp;s``;9O`>vm6f5N&RE52IKbhp;L zb@>_}6RDi1e}m?I%M;3DY%o%1Ykj4!I@9wJ^xg6S2G7l@NHD9k>aOEuL zkDNC3b-|h@QE@C^TlXEmwB&5&b(YOn-0JNuY763z&;GK0_nB`JhyU0 z<;x7l#f3?yuU;(Ax$VewqrtC|+fl){^ohxdQ};r{-z|@AHx;yu={|L=u!&>m(J+_I z*WKhND~7sWJ}l;#aQt`Jyq^v#N)DZCrHonr7rJcrn~@ooU&Zd_w2$d_`?l-ciiZOK z{&{j?jz;^!r7tqGR%awHD>)tS?Bt;JD}X?%;R>`M3+bT`;YxA5Llod{~@7l zzU8fTajm=i7rwnAtZ_f%<;T`D%VTC4CjH3!EPdwu+y15ZR-B%|db7WDo|I7DgmT|C zTui>FE(k|DS8o1xu4u)Q4Z=rWD^$iVTt15>@%j|e;yY=5M~v8{HvVLkf0p%JYZ`Mx z+BGG{E%J6&f$rND-u!R)EHAWdp57FtCpqVJ)AU<-jZ?@vgU3q?yh|3o%ze7xZ~M$iFDkbhd+8=`7O`G-I`XxZ z--bsAcnidjZP;iwW!0kKTSC(D``^mEj1XCFF(qvM(oj$0eW9!Ydfn=^Ul+Sql;+pJg?D;1VkR{hbal0Ub0+ttZFA@Sv(dMvkfrM<{~ zQN;1PSX$%uhp2@+di}~Ktrl~+uuu5+_PLvxJ=nJ%y|>S7>5{c|W>uz4cGiq%^dug& z#D^SN!6Lo>e%YSMJ7z66;tGh~I=8#w0`~_cPKUgQO(qSS>pUjTykGvwXZsblX~w4h z_jmRk;Q0_QbRbnb{!l2b`=~ z@ZP=o;m1t2T2y>Sp>SRSwD zFUGCpKI@k4M45xCf37a+Xy4+xxW`FF#?$-kbDhYdihUoyrEI#^$n~)2>a=&~6L0d* z_>wty$40}44-aKIUAs`D@p`eYz}MHcM^)MoOFbr^KuJ1t-jJD@6OX zo;H#TkQThgx8qBp;M`?dm!9=W_ATw5;qmQUSWSp(Vyqgs+Ro~7xBuADoAJosxvV&3k%pPpLg)SdqPklh}~ znaxQ@XDoR7?^O6q^%myC_l|YlyXbxGrDgG}zrvjpI6J?7_`LE&*v`r37U$I6kGpDL zu3fb9>QVg@yRWuRk-D^F?ZkJhlnyjKQLe6*T6^<(e)jVX>|3d3x zr`X)t=8@}#j5~MEjjN8fsJm@&IOC>a!`CBT&-x^9nO^O`vA}%Bn!iW6ZfaOA|FrAY zOs}(Z6H7NRUHv9xzQT89dqbj0Rn=?LhYUS8_r5wK7$-Nk;M&#){tfH8I!|@pUfSF_ zX_tY}lYQ;lDVvPBj)>aM5BGMrl>ET*i_vqF+J8aO!&~okt+@J4Au99e2a8o!%huQa z)>yRiho08unke7x+bY$9_#bI*EW2l>{&ITBbf4EBBB$P-YqL)^;uCY1NmTRAuPQ8& z!o|tuI(@Zl3{%hj5!>lFlb@Mw@4trgzpLZSB^%D{n_{%XFSu*3(wha7)A!F)V;9h{ z%c(7%`Sp?1#&-J+N7k#V+}L%Z=uxPpT8p3B@;S5bojjI*X(`jQBVX_3Tdn@IJ?(r<-Kc0IR^tzh=1bd0@y1H9_&J#tWr?@ZCJP@HG ze6uz7+pp+}ai)?FuI;ajvd&q$qu=VE%toxar_x$s`57sE`u6i8ilg{vcv*mn_RVNSZ z6}a6S&w5abhjZy0>zEV!rj-d?J?zYUeBRsMHP)$97Kz?4)m9NQ&9^E{^FFnx@Z9HJ zQVAh;+wy}7c2DG)IaM{#_URIX9)WeIy7oMA)-pJ^K`&eM+i%WLht);rVi-*BZ(Qlf zpBeqg`U|6atJ6;#h9!Euk&}e3vpvX~TOhYqV5Z&7u8p(b>Txqy6#M@9T4=D=Ly%q+c}Imit>OI{6o~{XX({HnTfh zORrzo-{{Yw>__dNI29V-l%AUQlqszsP0P38met9#uZ$L?e7kv(A>+N(3mNXCEFGWa z&&+x0nf4-}3}a$Ib*H2>E| z=f#O>D!o>z{gI_sTN8gizy4 z-41i_&N;YbW!GAMPUXKkzfBjK#|s=cJAVA_>baf%p$Z|Tw$b0CPqu0r?G!UzusyER zu>Fn4BkvRESI<42nq{2I5F(>($G1SAE~ z;*P$~PdFvZloK5{^b7;A5`&(I$57@*a-LfWXxI z``;??81N+eHSXT;Z@ER_YVPWdz2C2Xa`f`CKP?xK8aFB2Z-S`$ls?x6L9SP?{vJAT z@~oJg>h0~*|9rg?w#>+_B;|e6G?D+ss~0?*b!TL{?*IB`HH z#N~C++~xa9PcJ@k_xgbexeFhvaL-;fP2~26eUmq-*6>#xzr@Zw@7(I|>L2wsAK_^+ zxonuS;GcH;R|mttEy@cS`_*}OtT}h(uYga@XSR@*=F8v2tJU}3c8Ft&30d%2ci*G( zH(~SQyp|p0dhN7({;55dtQJ#+P2X*3&kprF^~vjpL;cI!pFMZ`Ph)a-I+OhR{`2h@ z{hrMi+VMy=$H(iDOMu8BZih3?)+=AWRZw^vysF{R9eW>+=MM9wM7kfy%e30~<|fL2 zTK{}n-#gLUb`D!oKb0Pz=a5_w${@{QZqFnBzBjYCadCT239dZLYnwf#r()}kC$szyd(51@W824??RN8WHrT5OJ8-gR zFZvL$y?jEL&m-R@44Qq4^O)Hsb!C@$pVx5LGe75ixpAKXGrwf_6jg@rQ$O{DDK2@! zr~azw*l~;EL+g#N+AOb2nx_!cU3=U-_>%TZ6W?dO7u_2~IGo}x&G&p6ZgafyPupI; z6FLt*Jc+Z|cA?Joq~P9{$NBD^N(}wt`iOIVNmH=nNppb>4jivezP!Hk+!A5q8)}kg zElqvys23XQzWZ_fHlKL^RL-fcMhJ-|Q;qOyyGfol-VO^Y@PV`;>1^)|hX4 z`p)FwR87GWk>}dmXH-|Zi8E%gWpUhC{3{~Cbs*#+B^R6~p8wq^ZdG6UZ6_o1hWoCQE~J%D><)9; zbT)JK%a^(CN@o;RTaU*yd^`4W!Qq+HU1jUG9@kPRIM4IUgPo`IhFpjAsUIh?71~&TT07y_21(|M8Mo((eK_B)u`Oeb-6uWY zG=bLr0crM&FGktSxO^<&hT&4P?CIj%71|eEV)FOw_T(skI-z-%#@-D+Wj#6dp6yTP zu6ts5{MlTu#P16nH!Z1@-gc^|Yr1%w+gbh7M|tk+iVMzv$Fe-G;osT0Yn%M#LVfp~ zT=Mf4lg!S#hko(;p7u9{ZX9D+eNp9p5VA?1734Bi`uYB4x zDgR9|-@^G@Wr>TI1i#)7uM1}~nk=~K{pZUf8cUs)smH#z3tPIq&{11{spk>> z>Py-;%-xsCrZa9*u@Udh*nY~us(4Xk^HQJ1-d`>{i2iC}N+~oy9L{X!{6J?qN4v}X zm&Ij|jw-KPv+G^w8TsF@47D$DR{NM_*3H+P?{ZJ<*8kfrhZ#-7t(HtZwCzWNW)~xG zu4L}x#h#p>{_D>zE?w&_cJo;9mW69K3UACQXJ5kjY~%MU`>HZC=Go}BmR*0Zs#f6shnX%!&pPf#e$Yb?|t6}>+){x3m z1>5awxiwaY%~4rodiu=k);Z6U8>ar`5zfqEegDeO$N0s!Tuq+ps-sH2Pi#Dv?qUCR zUF+nDrxhm>g;ixdPYK>P6YOD|r#9=umfO{gu8fQV7sXD>-J5RRFOewcTF0EnxP0b< zHHV*i{fympTO;y_hu{{`sUf%i?7H)ZdtV=~-U7!5K5z3?)$4P%W!$tm613(1#F9@N zN`LNr+Hl`C`JADk=#}yx5B3)O@lRYPR_T73-`;Uvt?81dC#(PO`g~SpxrspVbPkt$ zJmnE{Qj&vwcIy;q$!xpy{jr0<{mDBXXYfdF7qKtC;rm+J(czYIY|*|w(o@PW27vZ{fljycISS5wY*d^#j~*@M?Uy&C%?^9k9x_(&`-M;HYJYpi+bZ{c@9#d5P|P^Ab<5fxdmi3Mv`D_b*IePtrX;bcQ)E@*w-$g|(^p+sjiEBVBABvZ`_}&?)Vei_blO+u~SZq?`A>oLIH)4Xv9F7pYyFqIsr& za`2mFw{2x!t=sVV?)20dXVUG=RkUsXJHDTHom1y>NL|e4_dIj!w#HYBRi}r?$g~Ph zoFBHXGfQ%Yh|-yTpCy~#B~8j-uuXOXQ`UA3Kd#F^*T0^d`TWGuSq;Y9Zrt0~(6DaL zNyYsRsT&raoaFf1q{Dya`PU!Y1LjU&?c7LleeVZ@1|DLx>%bB#+sS78@ZL82V_4!&;Kbd6@>}`qhL?i%*JwRxSiC*Wa!!#`=K{yzic7%~JLFa?#(bXZ z*Hd-e@8Jf~CPnif8vmm|MBVb2zLj;AvBo6xQD|h{`Cg$WzB&V)zPWnN@f&)$Yc^~) zaSqvXBg8c1*yL}Oq3RC}WDoBbWyyM<*=~Aa1M_8Huf^V<4w+V z#0vW#+$$gUFCj)#rThDCz6)_vKC)LcWn6Dzlm3-mQs))q;TNd)NF%RKOCzdEHR|N6 zXa6qgFTVHYK5Mv-Z5NaO+lH_|PrBd9q?yW359X*yn_N;dZBMBA-J(@}tHrIo1Ge#e zTKuBlqv-8Ql@kAZOMRK^%?@nbu>I@LM&qiU<#JO(^2PV9OAWu&FmL||e%W*5k^)XD$8Y2JI)znQNTIqhP09di`AVzs;MRbHNpkI5u~{Y&@E zk6GP*U(8|q#&-qslg|eltH!2#1pm1IH>*g;VF}w8li#niZ09U`XreJ`^Mn&l^-h=A zg#Mqa+ndXMXHlDB5{cTd*sm@IIYZHCY$uG?X##pFp+=t>#K_|d|KKvr;^2UuFlrGdmU@yr#!tpr@6E`=W9w}gM<^Gz)5?> zJR$r4#Z#+R{+N42)b$Qqug`;~_wwacst@^A2yF`5sK12al&Re|ty7Z14{Il6zX@P@ zYFSwP_FhDC|KvuW>-X+3?7>glA_L?Y(xcaJZMe6?@p=D6qiC(e9ri%a-%!eI&bhTnCeeeB2EF7DDk*dCBCE*x`f&%%v| z<(6JbR8Df|lvuideymm3jUBon=1Tjw}>77bS>YOCU0@+=uV+SZnxW;`jpKSs@W{Rz7DnA{J(JT zEz1k91lxA#eOEQ;HuezbJA2%d%U5dG(y|X#>u3I4v8PG6OSR4S#5KW$dkrCr_uH zIlAv5e}h$Uec%yQ@xD)!ZcJW%>E&75Z&y^9JQoE;%CCLvcYWUxVTt`(&zX`VKE)|c za$6leVfphnA5?xTO?h~rv7ztPU$bxaE>Z&JTncV!KW%+er~dik^n2}F)?W7COOy^C z3uZg?seB5PpGw8Hv<;f~WKNf;ek^(5%~!m;R#?XD_v(id`fm$;d?(4($v3GNhMahG zGNsbu_?M=?54xLIKbYLLrXg>2(#EBI$77`SJ@s7VwVB&lAftGR=)J;6@8ecG-MJRz znI(R>#c})nRntGL(4Fk`ILn4({gdfL@F@K^uAFi3 z;6pbdY3`gkQp?vK6Ufb-63)XLGWmV#%*euoD;~<9EpK}+oU6BN1;fgD8hkOYy05yN z%-nFh_P}`^?SmR3zfEkuE()mecj&V#J$J19!ZooAfy*`4$7(`7!_@8@y{-#>x zgs;0}M3MwN=6Choo!ZXx;bBDi9^<>3*PKIa|1`F$e))Q1*}aMDBX2}3ewmXvS@Ljd zU+BjY;q?XI-(C&#SXlegWkTeiphlVLDb|}EG8fM`^qOgXis7eSylw36Eia=c@6%A> zJTvR-+Ns_?kNrZa=Z(p=A`tl-|?l} z;NkNfb}nnPUsW&tA@bo%0iR{^ZwFEKdqt_n<`Z7e*%a6*uKwa%{idu(j#^$HYIpv7 z6&c#eDA~QEcD-t@o9vfEXE-lr9T%&)eYwWe@OIV<#^>3>67ANVE-NwCF(AG%elJoN0@@$ zxwvzu0(P&^EzaI!WcSY}q%+s%ZRy5>9TNO=X0W}=xvgBQEn7Bc!&223t{*tL4+b*! zE@~6;Hy7^<)%)gKoKf#PE5q|rNP6_ems88t9k&(vxTnmRf2p)W`sZGi<%jjPv(yu= zr(J$?E>N+0w{U5^fLMR5>g(6;hs4F3vhr_#E-{>xoS(-m#Iz;l+ljzl4hS=OtUl^wf#1 zaJ*m{cI>Bd_OC_S#;aoX7J4>|r0X2zdc3JUa@jI_h235uU0KREN`8kIM7Xx?P^?-q zCD$}iH#JV^z}@%!Yv;;IMJTm>n{w)O%Z07GnJhSEUUn^>zs#(qYH8imO{E8oRE{8``R4RU9DW2 zPluU^&wP*=;=*mWJpFnT*UvBCl;@wBlknkn|JnsFAN_Q(j-9ymp%<&e!)*y(Z{y|n z_kN4ADxG@q&rNrsH!JRZ>fPkbvG^_f18uiG3lFXgybz$wR$Y|ga6tBLwD9+U%RlR; z?a*cP5!EiKsaX;I)sMZlLp}EQYC$fhFZ^vnYocS-raifGuW!>{2cMLC^^^A+pJm!~ z?qAq1?_{I?+Hfs%p{&5h$*-PVUZJyI^rg?Xpj`*TlatIUvZfo{n{}o5S=LovC7-R+ zSm&oGc+Z_TWoE!OW9bX+c5Bx#x>UdJJpU}wNYK$R!ZrW-i@SDtylFk}0&ZWPdc-O1 zzEZ-6kKVer=gr(=d^sib-~Ew2=5fROw8VrLQ?}i8IOrIjxo7I1H@o}nzc?N=exRy& zp>s)q`pHJIIfruF-nd=#T75Fkd)qz>`QNvHIQN@hl4;)UKI`7M=0(4o?bx= zl|3ofyisE7n~E*lkI667+VfZPq;AqalkFKZmI~)`{*ErIoilZf!38JBAesC3TI$rM zJ6W{XaMfI$eN17WWYMIf_wux~?aWsA`Z!+7UV7xg598a{wPv>XoX9Jg@G8%{Oyl4m z0~fh_>)NFooo;>8j9est%f9bV%-iT_x5=K1R8)SI$j(VPT~SuW0g-h2<=xz#P$yul2 zc`Hmm+sixffPm_8>&CNvt5_#i*G+l)m_InG`XDEN`mU=sGu>7muz1Ow>UiH&_vDdn z9p6u{`F}tt{nu&xjdkk36a+MqCS80On=Cxbh++DKx!dlxzcuI)dDErzZz+@gMCs5i zyh%9|{#))|r4=}bd8_Qhx6hw!IxhXKtt8t2;@55eUQC%RIORuSJfl<2-FFd95YsbYKgVIc0ae@BIo>%%&)6+EHAh!ONOMpU%T+h z8Rc5{Q_*^XrFP-dR9o{aSH_?3u_>H?!Y|n`_*7KG#qD8bz5$04gHM?hGj!f=u(7|o z{y^hCt%)}jlz*umh!5+@KRfr#<5=If6KvxoIn`UbJf9oc&M2KwwBuTM?D`O$1JBPc6El{ z;$o+&pZ6cV)_u5h?)gK3D?c}QPcm1N+^&3dx6s?)QK>s7e_QsbJy_|7t#Z`)wQYxs zh28BR&&>)DHlHMEk9{(i-O{(aNMv`jS9f=xWx&u7}O-1@b|=uAPI#PmzEPi((Y z^g%@Y&GOwWEc~_tMh>;fs?~1#yVgY5iNyM<$FU`HmB!{Xr;4U?-+q<#;iLH#@03K&xHWIWM;h zvo!f0(%M_3qIK$=@m!JCNB`p5UPi=nYCl?2KYLZby-M!ko!v4KEX#`nr4l+iEbTr{ z<$o?~W^_7N)p=8Z+~LS-=kwQm{%pL`@kTNExY8qC-A|V;FZgcu=mP(=16j|0ZVB$S zH;8ns2>Eqf;B32hL_{4Y*W$ineTJ%?H%p_otlD(l{gvjO2gX(>%91KQRvlU(^O0vg zOQ2e=w79Q%Sy9!=KgU-umAQVjFO<_R%X(eOGqI2ddTUk{^v~FQxu!IdJ5ZWa)PUom zgq-+q<}MzsRk9BQe_xG`5$Rs|$ingOj|sEcOeDh?f?hZ6|8?}-L(}F*6Z-6f%+;Gy zFIlK>(R1A@Hl5t9>T z_szR0sc`(atn1#Cj9o`hotPrn*3_gE9ooNKV%54Emw)~{6Cp4B`tf$P^=pF{XQcFP zvVUiy`sL$~9Z{M0X0E?5OJc(nky_KevR=vSarTAu+$Sc9e>y$0; zC2r0*#kec}EZ5D)2YV|7=E`yW*RiWpb)G%V%x~3%SdFatEO`%GGEQu}dwqJ@x=8lT zl5NVZo=cPe&$!^x*Vvu)qj!yfw&=!K+h6DO%if(7+2G!wDa9Ure^z9ZWV%sX_rAXy z#5XYWvMt>?{rIW+xE@O_)+g+(i!OFvHCXv$w^)tH-Sgo)b{T9FVmFxoVd+P9Q^j+B zK39J%`E=^sqV{+gN9KR>De zn3Z0^?;nxOX>~n9mETXVRCJD(|7g3k;>AC$4@FabJS+kQD);}A5vA{!UymXXe~F zkJL?;@6q*RxtVq%DADG|hdakAqBgABFe~uL!gs-6Dtd(qMVV%Ne0zDH-hfhgU!X5@+Fj_xR{*9Nik&uwNW%HlDGPad1?!biqnp@ZgQG- z<9qFq4;t;2*H8W~mH)gj*jH+`t#~89*T;Vfsv$s|EsP1^PKDH(DD64?7^t0+26a5bJJd0`0IVXf%N;9nj7;agVrsga*=kUGvhudV z#ETn++~#iBD}8CA-Gx`jc_riY{}=9RTP;+wcT?iunW?+B%(cv1s5gK2u0^{~+bhMt zsGTtL>6f+y5tUV)&)&4v+;&g9p8nfCCFEOJ`f*V<^#J~=mG6&Q$hk|3tbD?M+dTU3 z1ULBrLnfp5)jRu{ro3TgY2C6e-aE`rH?p^Jy(qf@)2!X^xOZ6GPT!<7v*vf>tvikq z3Wi?&Mf2ms`1bc4mEh#PwQbIyD^mutAI?TXrAAQviV zcRT-Pqqo+q37amx{_9Z2x|Ol1@8-SsyHyc=>uYa{m8?0cnX@lK+|swx_3muni03Q* zwC(8qxHql0Eb5Q4g!GqwkM!@IbD2z&=BqwTa<>o2Vw&z4HSyPa(N7jJha;L5CJFqq z$e%A7>|gDDz$;HBi}jESr^(5!{i|;t&oupCzIl?uhf^(17hV}>-~95STl}Hb99Mpa zvP~=an)>53KF<1gA{_+cHhKRh-4|*xlaQXa-nYv!M)~Du#ofDITgr8;ul&Cl zd}4Rdx=!B{Rg>o@J0H8^e$$?dIp9o5hIkd1YxdM@LI(?Px>fv&zIv*B-?SZROY_9? z)4z&Lwp8={_UU5G*V#82Y&Jejkl`tOU-_z}Z{?H=ANJjmFL0k2#>&_?v$({&-)$>;Eg^Rotfe!i#S_%f7zg#Z%^GpKgDwo%qqp&$H~-y!lE| z)_O8-l?l-wHfYSw4!+4Q!x6CL;i*Z5j~lZhRqGcnukbzh-znAKrLe>F<~HkTJB#>v zE~I^Ju_@q8J+Xe#hY7#t{J5lQb>8TO%0naf%)RDwvw!Mb-&y}=q4cSWPwOSVKK+tY zHE*+n#oC4{#+u!!TO#BRr|vyc@u+e^hg}Z4`)yZ^7jKhlnsrXc&y>3K?Sj%aE0rB5 z8-AFEIA~nn>@I!s@=0qeRUz5;oNwY6t(&Byu;A^i=hh!)eF}YC|0Lt#Ql|hHjs>^3 zNc=u+pAsK!vsNV_W912Lg9#hIo=6BYG%U$=Ac3UlN zr+JUpT_-i~t~BR{KT10L^F1tz>`wNiW$iV-``~kQpwDSpv$t)_UM^eww?XCWidf;y zBzGaMN7GO3=UKQU|IXYO`4bQC`5os`>KU+zGi$T{!oKAxd%0Uaopm&?P=34mnaX=f z6P-!hUd2VKd~i0O*Y0)D?Dv`t)4xo49KE(s>x0T{Hzv;5EAJ%}B|?oXRtq{8r<^15itx10-)uh*V@DtxVRU7o?5 z3xVS2?zF9AD1Ufn(Sb01Aqj_vin$`@( zKi?i*OZ8g+GkfiMhlMlGXL>TY&U7d}X;>R3>`}0UZSvA%riL>b)CKG%p1)nlm0W1q zEbld4bfRxnw)T%p7QdVS_Ex@`v2f0n*^7K7t83X50`|5o#* zpIK$|d$z@fnE_Fc?sqZCUH*K1?oFEvg_Cy}wWduMk<2}>&?oS^_N?^YQ%hQBpFTN7 z{a?wNOVt*UK^hJx{I{@9p5qnHSbia=;OMfwu4mt#`;zm)VZ+B`Up_tF)+GP^_Ej#) zga@1%MpM_mTDDMr{f0O1^3)bCxuES6^`V^kjOufX*%}t>xkD50SA5muIe1X`vdN7J zBIS?6t8Eo;?MREe^ndY-M!w2cCgy^rZN96QYIk)XuB+1Ax9H=k6s4%;ZTI|R&+NQ6 zYs-jBUJXB&={er|6Io9VT8;VX}awHq&A2r3oct?_5q z!(6T_Pdut8tP5K8&NRrao$a>$m48(k%TMx7sh=ShRv+B*+bZ9c|K!|LY<+cJNBTOf zryoqMJGweLGVGkZ**5(Rr$wh6*fu9Y^n3-6UTjS<{s#m0q}a;EA=|*_;;&bACI|^}oHl!SsIT-<~Zg-`l=R%(YH^EfUx1QFipk zO2(d>6F)1>K6~Ed!yopOo8J^TZfIh>b#eORD2eG4(yyo8dBQH1vB*Hu?pXQMm>aJ9 zm(5rfGUd#oiUqPe+0KdgvvAJoFK@XncVgRL$@3dz*L2svSmt=vSw@-Z&tCP(Yk3?_ z&cF3c)A-W1{|N#L(Wj*MR)o2};+&|^m{lvS5zxNS>Qt#IPQ(L_K zOy;ZCor}HIE?r=qBAVzY9($yTsYh?xw%~16v$;C?13Kjo@vYH#yZXGFdfujJu1qbx zXPMV`PFXK4@^)4C50*E&+qn9jET7+svzxv7kd^20^HwR*tDQ2fOzWav>j}?zrJ&;Wb^htyA^)5|cIkVv z9Xzn_rT((DsXv5gx_^Hs+2_J2$UDmg%sk1Lv(`d!6KUxYAN z+>j2pEeKzlc-(B#-XzDZ^0PLHdcVw{*D!Y}U%UAVAGMC;i~zTkwAM!mr8)SbZdn$VSN7r(w?^U8Qb)3tB@TJalmw!J&cIqC4fuP^R?I&*MFeNScn{DNKo+#=WT z-}rLA^mNw3$7TuUtyiPlF7EtoT=61CQ*`;r*OOQJzD)q>iHMFrx{OI zN^Yq?_GOV!eYERd|Nr+i{#fYTn%ThfKAh9~eEOe8u6bYM3!ChcB+3$8Cph10Z@)45 zQ|k8EE8jLY2MHFQ%p2s5#!Qrv2m;?ZSOiB^T>8*-^?N<`&moo zWgy5DsRuiZmOru)y|iiS$(g(y{c{h`&phXG*K3{L>(9=old@fY&0-AQQgZVi)AD&I z|MC@H`IR9(?XT>$+3U{9t-a-VWXs;wFC$9>GvxA8FH7FoXI{P5yU5aVQ%25a;kTJL znwX+8S)z=*bJw%zS3F-H?a7&QU$t@;E9(U7X9>$6ZFrVoZ0^sjXn&Qt=3GU%`sbi| z%;#qwW}35kyQ16ma8C7kCpnhvzy7VdX`ZmF__O)T?*?(qKJ0x{QPS1T%(uE9<@I8LH)nLAF!X`hHg-;}o?X;V} z&;I4x72o$tamy4=s9X4{swn)DsNOGArmjo3#W+6f-gIgAJl4Hl(^az8)R^vBaD#Eh zWXCGIefe>xirb4WvGFq5Y=3pkYj>zbpsIq~ksWnWM+@x_W*cvjTQ6N{Q#W1Pkz;E| zuFCAyOZfVG@_jP@-k5muUWm?2t^?wHyJXo47Ej`u7r8fM_ij1HV$*aPwsW~wnV-C@ z^KYde*U4|adh-!mnz4H2A_ImUhqO-lS*fPo-*&#SCAZ^2U{%$1uKEBie%J0xYdUAY zT6)sv<};1S$K^iUU{us*5jo;iXS?0_5Zl~zm$2&>ul$Yuw})|zRlfVFPN8e7ye8a!xwq_U-HH~8 zr?;hZ(`(aC-*b8pb@|_mTP|APw{rXOO_E7G8~kT$$hXUK>F+t3s_sR<1Hl@i#xvxcZ%gt zfBp5#>jJe?Vu#a=@+Y0ONnJd5&YQgn9GiR@Jv~z^7yT`o5&ZMm{#Cc$#w_&=7g>E| zzur$?hU1U+>(AC=XtDdOc;i!WT)S*Y*!}xc4th>|B{6x?>_%=$iwGr;7SG*MLhfQ` zh1=Udv}|ZzX{)E{xl*1*r(i;%&cdtV8z1I3817H+x$#?5;)B7lKYdnPVju5lN@Pjd zGEwhF=jx9qrl}w6dusAC{9K2ygDm?;QKfJ5S5G{pxOkG}wp`XKr)>duuXsEN?UY;c zZ+-PG|L2nXSy-=hSEk25j&!qpAU@Gc@ybcJ=11$!Z7@pDtbYD*Nw2nXszv+`7N z`wM(A&lfB2o$O=iBXMQkw6Gg};XXcPH)=!Jq-;eb!gt!mpT1bByZ>3t#G{QfMH*7? z9XIP0|Ij2frAoN`;^$4bxQ!BPx~4l`DcG8?{%?g&=8_=Ib!%L-PUuA0@0^(H`X=j& zhlI?h%(mY3-DhjOT1BHwR@=JsAM@Y8;fs~N%G1=l|7WBz_v#<>d3d+Yx7{o!dE2r# zThrRF?wz5)lJ)KKiz)g)_H3#=H1)Wr`5Q$G_RG~d*V0?oJ2hUqQhfE#6oDzt)8D?& zTY5;K%R)TTK2ZHUKf}&PgEmCqh#f_8y%kPu2 z{14w;-S*~Tj)p)|?d`-K7n2mV;2Yl=qiaO1y=0!v`M7oIvCU6pip&hxI$!XUpY7N9 zOwzSr)oqC+3%@mLbDrH|Ht7%9HGkW z2Q4BFihJ}vKD+U$C{^`G5Og=?9hh3Yr@fXSI8rDtpGf)9HiDYKss3CBg}-kIPPNX2fx;ab+=c1>BTAvLyI$O5~FF z%MWnxElGR)b6fLc=CyOypT02rQN6*-=QsXNvDkaCuyM9SvovRHB`-t2GL!X=1>1r* zo?mcEeT$OZ?YB%HAF`#I%>8yWGS`F6sp90FxB5k!;z|r#l}lPSv|E4D7BI@KpE|=< zQqkq>`H%d(xAX7&zuP1FC2@7LpZtl)XL`I3l7!{c|KCu&|98L*usZZ}`|A*oLFV8)H69(ALw zp4Nw&zMW!mvo&`z31#FGT&m2Ssh|1rX1t#br8#Id7|R1TP^RL z_dKfkzst^Vt&7X{m<@?nOG;n31P7-aS|GdSpV-eyzRFXAT5f4?ylVI9SLq9*hFMt| zchc^DNqKVC(K|(&kRK8ZR*~$vl(Ir*|E>Fl(F9 zr^QnoZag#fn%$eAC^_r>n~kTFCixq&1x!1W<6z+{?t4M7Il1xVQ#E!^FTn+K+9YRv zl1{AFk)Ba^FjlhX<)r2RLmAImO_vEbR(=3mYOM6~Q zWXvg=CZD_Ow~Km?7llm{zZ!VDQS==;d?w*qy z_f7tMPU=gK_r$~sRjp)pNlir~qnETrj7%o>k5{xKToeq4U!`ptdvvZZ~m+?E_u+4DklPKs7#_o@ro zOGGWAXXbAVpRs&{_6zSLdo@2?2<7<};;=2`$F{Xqvly=FE5@}H)T``Ey>@H$WP`$%77RP663zst6J$+`7vn_J>+AoqKegC}cuAW|) zZEupvmM|lA=l7j~0nNP&XH1XisMs(k;od8b4UejQ?L?|1nrCg8^T4Yp^XT;_okvqH z^=h4r4bycG%m1};gIL_-+cj1v9k1|vnrZ1KRQq*Lnxfd##k_s4Nz&`5Z_X(0IgwC$ zDg9qq>CIzp+ChsowEAxQZ@w-U_Kl--wP)sJLA(6>EH+cFyD0rv{XF?9i+Qg5=?7II z%YOdYxn#v{RhK6UoIloT6+V`gE#_-`D>C)P_C=qfYX7=QUQx{Dy`msXq?>Mczx?C>vvqdKNeKnc9h?_(an-I_0@~($4ir~m&k@(DO8a(A z-Su?pq`*T~$f2>%4*Y{b+`|QrzdyNt7p2zm&hp#$v_J*2(nM%FIkTQ^QrvrrzEfy{~uY#yfQ@cE#%} zXP+ofv}IuqtGjXKX7Vz(33C@Xd~i2;rKJCKS3z0MJGBo_@1NTBzEiSBM&iZB%~z)W zP*XD8X>#F#sMljICF{b?1&3T?FTamAbF{6!a^z2-KkwZBG8yyvPMtztEaBNFK1*w~ zOCGgXQ4e_jyV2_WBsMNS<`tn1aevK!=5^aFJb1a6OC@_%a?$;)njcLXQLj%fbZ`z` zyY8UgGh6v5`vVnaPBhfo950WHRLbPD@8o-POG&JD>vf?gtdq8M@7z}BqWE0P;O1oe z`@6qvs<^m%>9wr=e0M&+xWf4SFvqnlfwY5lw#VEo7H-JgJ!MvdX-2>G~rNw#}Yk!IN6RoIW8ajW17lQ}id-)k=Fd);m~T zuIRX)aqZ8MPjB0A_Nw#n&Jj6Tbe(^85Z8uD6PD@veysm>yx`W!h-39f{w=A0bA45N zwkVH|Qjkl{@$1amTANII7SuAe%(eew&+){kG$86$c257#GQ)2>=l}WJp1Mlvw`|T7 z?FQpRpLG&~FFa$g`0*$1#V@be;6t6)rfsN;=yNX;$WNG}+-7jl-(3BlbKFS{9$iV% zi_dx4^W67I+XZE8_*=QPXqS{NuR)q@%(+?lyi$uh?y>9suPUAOqh#hbff>$By31D- z?3Q}bF#nfp*O7fb9~_oTcci^xzWU((g-LrWQmUSc2IL=SuM^m$m-hbK+4s_t|N9R< z_y6~6rs2BfeFvM3!#JE&;(OhU)TJhhU#op`$x8k9+1%?Dnm@Rjj=Wo5`|!1boiB@r z`vJB&z1OUT^lSHuOp}|Dk&%d}|7v(&YZJ$n}@9!&&FXh*DX~ghIrM|V#@!p|& za?63rdFzws%$sRzI>jmGb-g^FELhlGMW9CzLOyk%j`~W!jULr(X38U$^41tk8BLUFIBv z2dz)H^@(J9pW2@7cy4QKa)aaB)jq%T9|fc-*-mP^^!QfRBYUH}i$v^Wt0o6GepY{!Yin_P>+Qtr&rWab?{-l8^6K?+S0<*_Ij48bKlMDyXCL!* zeWMF^=1VIz9rg|q(RPg!<^H|=$bbF+$(NVSTXI-LV&Nb09Py1;eacq3^)22s@Bi+v zk3MI<@L}ZYlzQ7S%OcxVEuXQmPviOFc%i9rCC=LJ#|`D)+uvKe-rn~;L#_wwzgoM8 zECG8t`z={iD&RGkj_R zYx-Lvd}B&J&;X=~)lKEdnq9XqqP>((f4Yjb0I z^>+TP?pud9C;UCE*L8yJgT${}=Rc$@n#A72H{If9zQpP;i7onCW~JGD4>!s@pUlv7 zkyT}niluYxPwyKG)IWb-GyQ$m%2@xiuR>Q}IC*N`bb}B7uJHNR+ivwY<<|k3M<+wA89qhJ!4c_$V!y(9&A-8{5ie7% z=RT9Z^Gr^zPa-qK-=0rE`q5H1?t&jTTBa$SS`#v3THmIBWjd*0=^Ni`9rzKq;g;sB z8{#?*7iMNnoUl=;ll!ki=eeRwKh5jRw)us&@lIYMx!}(F)3U#nzlDAJKBp^}NB)R@ zX)K%VOm~sD^~EdLww}In<80Wa?@xbyOmME=FVsG5IroDLaSEpv?LM|~(Ynj}_n6&e zQf_os7wncv`jx!CvyoBXj7@pdx@#-X{$tBozHPH$yr8}6{HuKzc3Q~w7Ydq}+aD{N z^T)JM@{qP!-ZcGd?WMYW%#(v{LZsy18*y&dH7Hyh`0~i_Y0Pgw1mt`A30kau{Wj($ z^PESl3@x6<1&`{d2`|(2`61=LazcJFo9)iZyd@L$`T9#PSr_n5Ei-R@=E8LJ)AQBJ zp^LRA_J$owm){Zl?#GjidyDq;Uyo3(vttgLllflwxuyQjE1_(ut3)=~hpMl={`J_$ zBXe1w9}#EUev{E^!AXhvpZS)CzWdMa#oEZQg!Pi|?TT8C&ly|_vn5(O|He+-Vzq+% z3!}x1BaRB+zW$cj!x70VWqQ2we{FBauZ#Qh)_AOBu3xb>ZT61d&v6aBoj%3CuBZ!~ z7m$0#Q+sej`y04%`cU2iGR-g`^wi>rKF z_~Y%Gs^i>KEbDBSnCRkm0Eb!qQnZZH}6Q{`|9(G7UPrW0xzkrEQRWBU-Z>2S9KD(vS+&g!D zmL+B$m-H&Wqx(0woI}a~{j9uYweJhhZd)H)J*O;Js&~S(U82u(6?rql)t)#o89$j4 z)~fJBm2s`be)qofT#0j@eBz;CY-Ul~TT(lE=bHQr|W z$NW_)Qm)3ozGU8U^_$9~eXL=g>i2L@aXx;Y^Dzl_noB-LSQXBg%yK?^>3PL$NTyKr`AU!4{e+F&cT^GfBHJG}Yyu4Dx*}3O0{2Z5bsZ0Exj-9l47DH{dsB80P(`(-hRW`*vy}-Ub z_C{R4!&CcO3D;n*{nBq+eijrOzxeU1X~Pe3n^(@lQ5I?^-_J?IwcFdc5jIj%-O^!$T|1q ztCf$hUp=5p~=Pn3M0#UgcmmHR34P4Q2quex(7&0NrQ=|jZYACj5#OT|pW zCf@Up`ghnnr6fw?PbaP{rv{D{{CmP3ig@kgim!lBcxxtFw4U@m0`~{qtpoQC){SH zc5U$r)9bwc?)o$NmfH#DsxXe@ud^&9xF=Tr@im*_xFznDPV^(ES^cdlb8a_pt3I$n zXAN)WPu`tUN>4789E-~2h?F>c>cHWBxvSG||J}~Zbny6(Fxw(NA0Lq=GQO{`HamyD zX=T{?swZ`IppmQimFl)7S~Zt;NrZGVF%SDhFCT-}aquhag!c%pXQ*(I-}|6aCVy+9{3 zv^Z*><-KiYw{YR<*5P(=KiqEoyPxf`uRFZF<*>nmw)|pPLAxs7uRgEOL{vl zZ2$1B-a7s8OF5Q&v#G|rS5HmZy+k%Rtm%6Ftb~tsVbPot0n3lOm>qSN7mBi<@nS`W z+W*^K-r@rCHv|=0cb1e1D1BU6l(41un`KV(&mXm`6Za|`pSX4;XpY%E@i3!iljG5kNl%v~$G@Ic$2zz2p~%m)G&mn;rQv=7m$#H%;k1HM?u)SV^8(cK)cygL7P+vS}?pc18TF zGMuH9agXU+px>5kQ#ZNb4Mxsp>oRw&`KI-oJO9F)hou`Q$DMvR*XhpUfcKa03tY5} zoM-gz&ea!>=8M=|4qcyB8K*PPq-;wsE3ZOR(GUH_rD6}h9iDPxUrtfd*8L7ix<3J6^Ywn1*s8H~+`RAZwWe#=a;3x3mtOP8vF=oq`!D(GwW#IF zLW$ZUC7~51;%h{lx0O07EBwxV6S!gOR2CK{>v!+Je_V0Qv+T3l$5UDC)q&STXMKtf z*_>0VTIs!BZ0@~x3doZxOD#0p@P|VmzC;__8s|t z;QGCe6BREWX{sK2Iioj8gY(c$m5njeokRTkee&NdZ|aF)eS0DL2J6PQrR_Y7n+~mX za0qm;5%`@NrFfCG((Y@%@>gd>#4<>t_Ld)v(LPH>Vw#ptzV-pzJGoEui(nI z`;M!9yylp4`2M$eYY@%$_oPj7uEfleJRQa>`X4{OuJG@>E5G`Zke69CcV^*Q{y$df z$>NCt(Vw5&GVYo_`;5lHqnz`+h`Q_}E0Hi@NpP{Vb*SkZ~c0 zva#-&AAgQKkJLE1Vdvy6Q%=NuU2=Ghj!(wAt!t(}w$I|eX0=N3lUw#4Ze5S7HepUD zR7|60%vt~Y#^#b)r$rT~h!To69-ck37PDOo@i6)L&hAD)9#Qmy)j^I?N6}&dty5#2|dtOX#pX2fKX)ovL=6-vlxM>?D62ICknfc{I-+W7l)o#CU{5zLi z#lA36ux0Jhg()x3zI}ft@Al+rtk%<~KYyq-xB6Ms+uXx$#rya0UAEJob)#$Pq^m*o zI(emgzAf2!+b#I>ZG4msbqO_IFHI;(~A zg46+m&91)XdjHtoA3Ml&b;(lO+DAH-4C1HuKI8C>-p|2(=BUvMKy=8S-&%o zR-Kpl<@ctX`M<9pXA>{uIk`vi|JobRGrx!X?m6_Of98QpP78#Y_9;qaR&RQH$R?&+ z#o&_KNxP=b&3ub945b`xv>dzoCrWgy7g$|M{dkkd*L{7$lK+l>0{Kg_zvU$#PnhdH z>+kwWvXhrycMvfaq50}c(znis zbypHAwd*DPc|+s_}PZYXfLey)9KYoEJxWW+l8nPIL`6H@q|J-8$9W%#e# zUDzNt^T3J^;tFrq+|D>IaYgjT?~m`^iLqUJr2T#2x8o_(jJ}!ZsPgdtU{boUgG+u% zsZkr_{fjf-eA8LKr`Y5E!u#vm4!=&g@4UKEBW~`Dhx!~pUCIhCottX(Xi@jVHFhgr zmwvI%Yf3x0u}S5~=7q9reJg6x0~_y!mPpi>>@@ULnjrL{Wu@(G)oodF=kG9BWw>wB zIr5I-zIMX8ILo-FmuEjraX$5@w2!s$*SRBpJG#pRTOLEoB;(fJg3b+2Qn3J%FP4{ogtXum&?3nq~#`x8n zAjt_@Qx4p$xx4CAz*7E`543m0_1Jk{o~Wmj`K2zf&;8wz=wp)d-fl%LD~&`tqn5kJ z*){8L-K+lZ?HR2|_o}<6O7v7t9&6qn@A;@GhN;%YWunZ)%T}+sq*87(v1QCWe&~16 z-<;;g!~B*KI-er+xo%r@vT&&W+O$Kl?Sx0|><7lSd*Y{*h|G`rx@;xyk_k6$%Z;;^ z9tmL=TlM^Hh{I9O7K`4=@$a8*Eb@)?JI^z1!Wkv@$lKx(h09mp-L|AoMBj74e$9rD zzl+>67uJS$#H0&Gu#}@!`i+`*4yrW?7nW6h2!J2z@J-q3uo}ArG67K6h688*ygCT zTYY_3()!}}zq|1v^|H%WZhwh43#U)f`91x@bgoauNBA}TCOo_u+4A;l>CU2eKbqvv zzb%s1+nvzn+rh=TeD2=$g)eVNPf|H?aZX0j->vd*;-e_--mL=?IBCf6i=LRe*NF`$g?;irgXDZx?P`n=WyrH-uBf zQ=j+!>TE~tuK&F<&Mto5HaY$`#h43Y)9Y63+>jS&T%+uzbf{hOa>~J? zi9Sb826P%FK9Q`sbpBD(!=@G2j%RL^v#B|u*K8p5Wll{rri(J99G;Dh3G&rjq( zS!|wqf+gp@$^p~%aJPslvjUF#XU9}KOfxHv(+t)ZyJMkwdilAJE`eq@3&cgaK0RM@ z@xX__#d(`Hahq7bH;=w7_OfQ(RKL822F2Tb#uim(K2z;D9)!#}v9^9&M$1;wvl&5J z4|(*D#oFF=K9RVsH;{4SoNd$osW{87iwTI&&f&V#$|?C&-LPPLw&BUAOaHg2F4=uD z`>4+j>nbN<9=8t5mDW!fm193Htl{GceV=4u_w4-t!dm3^|dhM@x7Zj~>>(6m9iq!xE1deiAm7mf1Vm`K_lIGhBY@T=*uUa1+amhFRAp z9@zh4vW4RYd#~7z-Y0NvQO0AWBkb2o3-}C6+3m~ z-8)Y_xj6Mf_svH#cU^aXdl(gX^EyxUPY>JGvp(}?18=J(aDz*f#mU{%@rZk8IR#hsZrXvgDAO`Yq!f zdp1@bzw!EF$YQbIEFLR`oAr9P+14(TduL(R@jAX33 z99JW+GwWQwdOrS8DE#}SaChgi-wi&!g%v;LZhqSsn6T}n;<`-nrbfSAYF_tlz7LLg zR_uOAY1Y9`rMBcRS=)JPjvNqM5Oj7@?4LCp=F_xo+`n3yS@zF2GM;y55=TTd6Z>)V z3roAVyvQ!US<}m;_jHzB+^5-UZ+YsxFZ@?vN>;j;x^U`&4Th_>y?^pwVrh1c7hhXV z?fXvS#WsD@FIugt?F`xRB(y~Q(n|@Au#&rH{hN6{yoeTeyzo1jA-nvO#{1pNPL~yB zEU^vAzbdNfbd=@z`xi~tOO}26YHD|=Li~>6fdkhH0{&k%ZT3Gnvp^?nW=P&1jjX_9 z8xJUy@jh5Sk>U6|OWW&9=I#AlASSc5^Y-bM%UmJ(KN+f0oOdVbF6-`{F|UYA<#)}N zf_V3elH+PVhu5_qwwt)h{H{u9#{!1-gy-E40$eh3&iJ*9M*e7(pZx3ds-r9N9%VU9 zG~Ls&aJIuU{r??2uIg8POe($=e)#y<`qr)3>WfxO4^F=&D9@`ixu4xSfA)KYX(5rP zH(I4GH8|vbWS4)?U%A|hXrEsXE7)rK_gSrrTa#jLqO+r5ibbyPTPt60jpYX>Cue`` z>p!Su;V&&xXaFKyLUS@l4&gSFd zmzGYO$K&}sn(^+w+Zqv*L^ry&``q!8?>e`zckLUCR&s|4; zC9c_E9sRH?N|b}~Vehi*#@3uCFTN0cn07MbbNaLc|M@SmRu#7S{#(9^|D*9t=4_q^ z=if+N3fNqX%pCW!qkCf@$O?ha97=I0SEFN&irm)q8#DwuHd zFsrttp5Ej2D?fbuShRVmam>VrtQwj%`wu?fDK-DX;{C`)SY_n(vI z&TZXwa@(}2t3-nDyIl=Ql}+M^x1D2rNxVO}GPm^Fw}$@qsu#NzT$BE?HXN8x8r%JN z(%d^5AH3gaJ9immM9X?Eem&n{DYj=3zoc^eG5B=rLex5SV|E4A7Jiid>(erh?QJ>0z z_eXkV-0LIv_a&>($eLha;+!{6y2*R#Wb?%T^^vdoG~Z>M5Kq~)?Zdyqm;8Ot`kaOL zTCs%gpT1KocD7!}+J*1d29(@vNMKVQooDlu@1@2X zWsS3TdVhRRT)1=NSf+?Xm9SR9$CKJ2Ydw1`|9`yP!B_F=gV4?x$Ys zTAo*PJ+11*oLG9>Pr9HnRUl97!%IE;q}Ib8TRFe&+S@bt_!72r@3*C?RIOC}Rno?F z_nhD-lZdSo=FDt(E1MNMebdL%jlpG3?tc#LXrEf^+1(POaBD_bCaP-*|w=im^ORL#|kB%)V<#Abhqua<%^BRos~uwf=+3dYhu^TJ#`{XR4E}lcfPVq zecF$sKjkMx+!mbH-4WW+m&CKa_?TgW!$reAlV>bFzAmzpNui;`XUCIGGAA}nzAUzP z>**u4`)_DQ_Sp1g{V!UZaANU(g~Y7R{DXb-6w8mtILAHIm@X-Q_4=p(?8m*;|M*Y% zb}wtUu3vNDjxzfQ6T^ldiyk!mEwpQ#(bc6c$ zIoVrcOx{>X_Ou&z-7ovI&T;O7Ut5>XDLwUfc4T5t!na{gYX3>AKsR*%VFNLP9ix+>izvPwRCaSB^whq6otn3XHMmR zrSR|bi-$&q88&@^M$dj}HU2Yr{CC60M&{eU?&f7^O!)u8E8UlyP5kJBX>ND@UMTL# zPqp8p7VJ^mQIG~qR2OcWYY`h<{w~CG0}IfDzUbj z?Hdwgq}O)W;WdwOz>&#em*%PIJY!3*XFJR@tCrJmTl$p8_nlAP^8RgNdHCyg2T?EP zuEXCJt7)qKIe6Vuck&0p8@{KwB?7oal^FBa+W0rxSnc}uV&C623cB5D zY*PEz8MB_vc($MA^45)w?NTckV|k7t5c=QX58Z-6OJB%nXO~g2YrO;4 zrl#_X{LaK)29qNmr|r>({A&cV9C;B72BkBHlTE_YcEzrt@NcV)I=45BlrN8eL(~FgccX zGjU?KML~}E+RZlalQq(L4Nk85ln^q%B#d{@rxmA4a=4#(-^^KWYvWbZSNP=j)dnxQ z(CTkq?Y-?lf3!4usiagT7l;Yo|2Og^9n^09PFt=;!|Joz54#&KA zNv^BCbNuFm10UHrGPc59XH$?cEb7gf(}Ur}lL zc_OJ=DYpzUrw}C-r z!Ds%pRx->24`wefKe%|~`R|jb8h2mbxwU-L5AVH3b-KqstLQitoO~k2cbxC{qS><( zSX?fxxf_t|ZIYw4&FSKodHZ$e95ig@TYHN6s^vMqtQMQ3&FN0>C$7rSOA&i7l(Mfb zI=}sXT0VodLDi)hVJi;QPuL={T$yRn{(#%<%?g_Z6a{}sK4UI9clDKLY|F92RbB~q zwfQO+#GVrrk97*(SM{smL4lvy+4YxRGrw?mj7YluVC}NwBG)9FE%P5NZuhpV{pfz% zce!HFw^VHEl^(R?wccB`pH7)IjaK>9|(A(`XjQp^LxrQS<$e+Rj&K&x2SCh6;E59q47xg z=emxa6IXKFiu!x9lcA~mSb<*L)w+z21%|gS)MUrLG`c(Y>9_6q5nmq0uUn#B?L15N zjlkmzrt}3foYShd0ZYAVzO1rL?J=&lpICM>)7bh_&7Wok zbzv*1OR3iqFE1Y@x{p4sdUT^pHd)B0 zL@>wf-Pv~+cP{K+k*v`?#o%u3isjP0h2}3V$IG%z((RnPQGedUFTSxU`X$z)Wk;@t zxQRGxoIl^Y=G%$Rklq->H&NVqk}WPwr{0&aA6@m$*|_`42{#_T=8Ko|_#zgrwp`|x z|L$=*2Uo!2x6IBDZd&<$t+3#EwcO4gmXoSXWHwXtsiY<=B+Fe{UNI%?bcrWyk_IX z#qq9EF@Kj_RC(fBo&W#;i=U3~wbC!`fAK6zYQ>kwLG_^`Prg)eZOVP_##DImRpx%_ zt2g^b zQFgv(sgtK?d-acV_e8fVGv)Ru6rM?DS7`h=gafnK;Ph`p4=J)l~yWK^Ozqlq`Y`k*nWmV^bp!4hdj^6b3 zm)N^4_t3&kzppv0t>0i@$$Qc=M?-nL$`O{ok&|v%m;KrCu;6jEw90>-`?ID-vL@~` zTIkfJ49bTurlrf#sTES4&rq&0FJDm34XP z`=X!rLBZ4*3Q(}v0`pn(_!rgPKmh!k;>1mAFsW4`^S5c9UFX?yla(VjHGcnd(j6rZ6+x@C^+G1f>c80|DsCI)RcD{j4a|6uJafzL zV!zaEk(16jvA1KIzTaUsi_Y<1lBCL?%6X)lr{kk--|j*tms2Zcja4?hm^Eej4x=2E z3rs7dOczEe_bRw^$pm-ISGJiGkUK}qde?C;?(01@XN{*^3t%|E;!E+R`j9I56R(-R zKl~XxKXJR$)sru#uKXN6ed-6J-%PFk`PtXFE(va~?VmJrP39LZ_g613 zc};9;Z8FSKd;E(*Ss94d`jW^ocT{ZET$-b2@t&E^5l4CYR%R9CDG-_CLG{j z6B93Mvi0UFrnRp&wcIV6wRxl3f{yhO{y&P%+$WxJH#nrQe$sS~3vUW5dDljM-Dt;V zu>Jn*HM0)!FPi+~(z9OSt!LNV{5^pqH8wUibt2Pm^{r)RQ}^=D=RaYUxb)@r%{G4F zlhO_)zu3if>LDN7rP&(=J0IVAW;=&5$uph%?<=O3pe98*?>*0#xusso?&y_SQ)!@n z-LWgC{ZpTur$g9AxlOejpKU!o{hC*Fl*?TGNd-@I?@!bIHO<1IVO!gr`61iOc6IM5 z2r6Ez^wrEqW&Y%o0xut~T%+8(Hs*zH!zqsSA9jRU#d6zOEjHpSD{g%`v5~cX)8*+c z>o#ORb~~pm7#1coduC`g_c%o#f0HlN&F%VT&8mw2 z9>cA++8+w!KD!-IY`m%NX_Vc<&LLW_HLcD6%A$LGCUU}i9iNC+Zqs}tKhJq~hTw@@ zMc2cRjvUri^lDgS5xV?%;-;-v=dp-6{6D|qXmP)l)5NzzQmC(wd?T6;YSqPtIc)#bDIIoS)qnjIb=Wdu2Ui?z# zpWF55Hc7UC%#G%!M0szlY;^zbr1$Zwv7=L4;QY(#6Sg1cGtEuVyQX>em{IciQ}cSx zIW1Th`i?b1&fw_jBkiIKEb@1;p(Lgwv+rW z?Dj0rN%6dR&PcByBbrlI#X$LP+WV$MPj*MDOK)pf!*?`T|JrT&W0AgRSN-r@*pr!= z6ez5yy5QA}%_8-`rT;rR?ma90=hMzPm5v!wjqPb1%#}Hri<%aDoX_~fcRrly@UfSI z6Qgt9$CuC1Ufip;aFXl#HGM3bSy|s2J#v2Wtk}7)uVzl*;fvpb?)6Om#AYIzq`ls`t1{X zY;vc$)tTg*HXglvS>gr9>pijt0?o3~$E}WQ^RTeoJ;&qByI>v1iSYjhOrN%UYKbZR zRKKu!&eoT6*fv%<++ph66g7`=mR{f1wq4Jiy<9eR964wwRkY@l?zLE}6D3{^+JUx( z6^wql|JHjx@5?$5Br)8?WS?$16I_K=M;O*k(Yj%0R_ALDHs_c=h^y6cvA2qOf$X;=MW4ym~ zXZ?Zppa~7X((2!=esi2_)x<>E3r1q*bD1??)F+t))k+xWoR+ZPT5~?fbpfwDv+dT? zcUJx2o#S`$!Y+=BcDX7N+jOE&&U~!gE4k~^#r?-_WSK0jy~G$<(0*+9i7h6d&%S^2 zT<+)r7cFPw7inxd>Bff5KfKq7Nd8%$#$U%|^0L|M=Dmu&eV$J9m&7)PX1DDwz8RPO zlXIUaC-3(7X}x>(Iu!TjvkDilpRv+fCFhX3!jnal3;uM}yr}1VEOTQ|XIf}~UZ{#d znbEcj4!@Nxt~V~4yF#PnpQ-&mlP6!?qh#I)Je%CioLMq|%RF(%_lDQ^Y`(nU-@@a8 zQ~%kt-eM}U_$c(T&39K4&X@Mgz;@Go7U+k4=!xjxINUw z<2;Ln^2zlfdHIWF1CDpP1-D9Q21jz-Tdn#opiDC9X;JL);8*s33pkBpGt190$u$(m zsJ>n0@x(}Yp>5b>mbp`BvYG2yMAmGojL$6p*?5(`v`mN3V9~A99O@H!>*w;B7KYY3 z?Rgv#bhAr%aoRrLU;6zbhQHO$zswh8-Z@p2W6tG*98nRb+iRLnM0FpT@*vPKVp)7} z@VcMh9-p#w-gG<8$)cU(tm+rpfQHW<#_Gk@^B?(s3NTuDQn>J~vv2PHpZrA)7bSWO zQnrR37dy}Ke}WtRW;rO>|zrim&^TSY_;-g$i=otEO>-4`~ix5c$^R_FJBKO9Ua*BqPwb(!^KK_jkb z(lW=(x?8Q5*DuOvOxG!hx_6AHO0V%zf>T1o`QSHh9NIY_`e*SieVJ)9Iq(fj+OFyO zMQ<0a*}c`<@axC;7uzpxVN1=m|8RNnzdzglo7Aj*e8+Oxs^nMA_pcgei?)ibsC4`O zwQH+##B4tO)BF$C-g#uq_x!|S!9SZdH>Xy#Xx8Thm(TdYbf>OZH^wCR!pp-|y&vQL zM!fto`55Cg!70;SCkBUoQ`6?m=jXLP5H#N}_}B7c_ttMbEoYkp*L80_aCG0*MI#wEN!;zvWS%092P$zQB)w)nW4J(eD>AK9bpTr`8%45>~=C<`{$~byG7IW_J{ke z*;O09P41dJ@A{?pzuYD%RC$VA>e_X2@~?*S(%i*~Tm0Wno09G;+w|kasu>^RHXlkn zyJ_wcQO(~cS9Q!2cdlaTRunmc&=^^E;B{pINeR~~KIx}|RZqH|pxC4TZQ4tG@bo_+txl=M~Q?zxU#mO6bC z_U@VJ!gkI-d7)g4e<5G&<4E-rX~iA$-tRGtN(=6C&zk@B)8@|Tn{h77YW|q<<-4C` z{P*C{C+5zi)#pyEVU*xnyLSyo!I4*G>$F2eO4y_8YqI`+SZOMI=INb>({tjuPwIwb z24=kd`e}QhYv94Wtu`9wuRaL!Prms~GTeBnPGRj$6-CjE>t0_AYx$RZOiIbQ`RqdI zyQLNd_ZJH+aL!X>p7t>QKkJFHgL_1)tjFa)X`WPu8O;FA7$^-x*w%eKYM)`D4C< zLo;8T2t2j@?wyCXTgA9u+3sA*Xr;!gci>Tl`-%eX{!+1%c_N)&FQY{EeeoA`?rAWt ze`;sHw`;-8Ss%piocy_G>gGQWi#*!bypYV;6wBe3+5BRsV4Za>&sD~I+8iwjb9UeV z@T=6_RWqf1fm3hW9_|SBpSKHIFDReca^;b8oIz!w;p1<=pRUQWc(XV*+o`=e&HlpU zn#Zn>TQ{C8Fk4?crK+zh-RPOe`d3uy9 z&#Lq6S1EBT+jsTh2R$dr^c2AazlW?hSg&oF^dwWMkE7_}_4+(jLGCH5ek6JCnJ=*Z z{o5PLjTR0oV#Fd|6&DM&cu!09DKuiL2u+gr+7)0g&++4NQM${dzq=Tj*cTLkY_SuJ zc&pl8Ci;EKOqGWUzM9LQ-JEAD^t<}clK0)5uDx?pF0vbFmpZ9r6nAk%t&wG+P!IyCksD=&09vMI{?v29FuAd_Uu>E%t1Y>RGfox$T8z;W6!_Gg68t(9d@ zZ}&Z_?6ZBlz4TJp`OYn!YylEC`2$(?*|)`ags*3I_*K`n>9@vpqbs~l7JFy0d_8_M z+TydopQMab>58L{Pm-(WE&7!?)kSb#VbRs8G7C>-1+6LPQ*y8kuN2o_QC}^;*y!T# z&rwfb`?@qvmR!SjV?hRky}6*K#UUj%rJO6P8JIqM1}ILgs*YX#Z2kV#+IMbvS(UEI zRgS*=xvzv{-N}?Ni#<6<7x1dEvy@aCDdk%Jud-@+#>1u>_~J#z=5?+r+V8~X)NRyf zC_Lot#VTe}QE|X9=;vjrNlW$J?gd|xV*OU%v3>Sm1Barmb#XNbv)9bXxtp-wtmkp@ zHp$NQzZxRBMHkL_TX=DLrCy0-jD*SaXM*pam^knWu>ATPDj&*!=0Ioss@QI~sQA)} zDW|dwB|A<_r8_GfShC{ZABlce$@%|(C^A3KZl1H(&F1Mog##;oX1>$*7QN+PW<5%lz-=JnQ_|XfK=y&tFu$rKKGrlJ1k?8S;@TeDJ(b5zS<<{ zb(J2P63}Iyyy}30ti$59FAME0PULXxS(c+p&iQG|2as0OVy*ppeH+M~& zi&y8C@yQDI$F*sn?rD5*wBq2rQth?tHqV-<^0>&F<@oEQ^xmT(wyaxE*ctfW3$#%9 zb9%+MqeTWc{vVc8^)mUr{ass9>>HWK9_pgy5;r+kO9p;Cs#zeY=sc%xqvx?*P4b!L zNB-@&v2%jTHoY%x$x~MTJ@w36;_8Fi15)vhu3wy0!{1K`cyqA#xxO{qq}0^7TiXve zW-iSab28F8xxHiSAua{a0&R`Y1;;0`2+R|=R`+6G!*N1B^2Xt;V~4xuSh0vSZTy?j zd}UYi41vO0yZpx%;s2|+R%*ystcg*Pdggf6VNp-pcRS(bDQznv?2dn)KDS?r=MzUs zTBu)l*ror1Ud#VPul8q5`f)U;GkN~PCF>r3HIoyyU~$y6Slwm3!zIz9h5f$lwPzyX z&TT0^CwN}?q}N=y+$r|6*^qyUy5WWkADg&ES36vqyY5w2-jWrEJM;X-e}?d_@BdYC zu5G!1$h4&U(Q{8O<_+{-p%q%YQ*YX4p{K$Zei+8D|F^UIn1=MfDp3WEpZd;K$FeLv zp2hY4=-^0ny2ZQZ@Otql6^2)oWYQRwGY3qF z*<`mqpydny)HrctCGR7@GZ%*bjr)D$O^UeJ-N$eKcO-0>^nLkxXEPNmwVuuz*Rz7Z zHJU8toz&O9{*&0M{5~Z7O4S>F?&jLe_H}yimCh!Z^|fx+WY}Wy>Cu@C<-V^A8IzVd zuiuqtqp7v_?B%T+@?v+31Rs8q9`O6~i5X%Q`frVSuR1-b3HZge<=dl=I(xVOo+7Et zk}ACWE|>O$Ba9r!HI7_ezG3~s0x7{Q>(BkvkPEERdi7*BOZ(0|v3u*UiN=`!EBrkv zq@cj{*sJjJlj&K@W*QamTz@o7U-q4H?V8Rx^H;`xv}Jp2a#C4>_wE1a%Qm~OhLkx@ znfs;1XRDn5btg{e_x$WZg=?6j6=mx-syTn#y3wK4-N_>`{L$yA<(jHVX-B>|t6kn$ zarVt`-mQ7;LUY^dFP+%))~@VUgsRQ`qrv5+8fvorvXh<)*q)j;A>sGrx3wMJ3f}&1 z$8uMvxgM&KG`{pQig&5V(OGjHr<-(bFkWi3iRsa;FV!9m5l^cOFUwYa(>V1~j>%%u zye-MUgsQcYZ5A=fUp8H1X}%uW{+wo_p@U`Rc1X4T4w1k2rZh*e*N0 zo1NuAS^jsWtLJWiYHIk(U%W@J{F|Q3(c+8qjxpTbvoDFs^_rynOp)c=Uo7~dcwOahd-ZPteH^YKypfg&1!??UAiVB< zZ`*Q<+gT5$6iz!4ZD%9r9k z&w%Zz=^bZL)mxS|1st1%(*!7EG2jkCEVEeYwEu%=Ps+q z39>Y7n^n<1V{+f2eQ#6RT1vJjoRH3P%Ab5^_Py>;H#wU^?|<`XIs1aqen0Ozfv?ix zTc=vS2|DP-b;nF1p{OqQoLRLC|NY}rbf(7MS@-JF{WO2=8~KkfYa}acIckZeUfgQ& zJ64dV?zzX&ZTqd3t2^Dl`Rp1W!^4Ih7gw(MY+B@9)Fj}M(!XSW z*`vhymiJ*o#F|?#^g4OM947Pl^!#4_=fwX-k2Zb@Pma$0ezJ4!#{RdVFYmcet-jYK z>~C`97)Qn`?Ta@Z%Zz#_ry9PsukrDlpfG2)&*b%@hOuFjc5usSX+~VR&>C?jbn=Cr zhr3VQH~i8rxZ!_ewo`z>Vw;pk%Xc#6>HRUM^a(iV*dFBX)hcJE{O z&C}U0+~)Z%vLUw5>)cK|&NZx4-seU8_-4;x%+o$}U3}`!zn31)@h#3eI^hrVHuds; zw*}jM%H-}&pBTIDL{rQLud`b=FV(MKRqLH@&F{C{Lw(oXPj(yIja9G6OH0_|{FV37H3ao%jFK+_Y`#qY{yh6H0~72ljpcW!m68LumJ- z>oM^bMIC3@t(GKIy3|nR$d?~h1(5|&)f|BOCduyzJ zzKtntiEcDb{Oi;$aolf_l7T>0Op0vueVLhNfB3hx{CqW|qyL=vzp1ksBiIGji*(%F zUl0}jWge5}lf>kS85wfnO65o%7*%EVypehap>{JlNW#4 z#;q|vwRW38;>)u6T8DE!Y^aLf{=1=5XkKiST9hQe=+Bwo7^>!-nrfrCTIcQsvnAZ# zm!!T%)hL8=)V(?6y6o!59~x`3ZS+(FrY%+yVw1Gb^<>uT3!NiW$!D1(bd_m&!nOFH z59C(J-#hW=Yi~-sbET_O;E|ip>ikyQEjVVfrCe2q)AL}y^Wv}*f0y^qKOV*>WqmIF z2Y=_A(+78R`9_=E;;rs1DlS#I7Fpu!TC?zXa`MbK?WsZv-bbIdKgvEfm0?A3;T7Yh zK{Bt`a7^rP;s2FjeC7M{*#7xub@5-8L|EBcN@tm_nbZC8T3BjQzTmuHOlJ+R#fPu1 z%DMk7Z(4=ZL^la}spIPVTV;84nOc8DO*Sr(N}IOI2<@%KdQf<e#@{b%JQjaGPBiqAV_Cv@y>eD8fT1|`Wg2_iF(u8aCMvun$N zWvp3NfejL6)!(}}G3H-8z7az1G#65 zITj@)7XO~*V)x=K^SW(^zYDP~Dq3vqwWajZ&o7q^PCl8I!2g6|ku&c}YZre{yMScj{ z{p%hd`SIhg8D9{q15Me=V4M@WMvj?R$1P z{9QAD>)nHL{*9K$f>*73v!UFfS9Z>~!mpQCbaI$H+8=o=w=#t@(a=g(s4!Wa)lR+S z-#)u6JGG($rt2H+vZa3Z{;4o~zr4BQw5r~B-%k6h8jYcOPp__;_}t#JXBST*$E?-s zmA1@z^TO@to_9}g-E8T#;kvYBUE&QF)0bUG#T<_deC|lAsbwho!_{%y()|1Hvsc#J zb-iV3?S2x`EL5g@V#-~gR@P#j(_7rjBt*WfbUUZqH{t)aj|Uw6k9VzDQue+{xnq*M zk;MrUZ7(zXgh_eMC0ZKiuFRL#bpF%)dwL$v!I#Z;d#h6fixn4ThihUR z?FB+>Yn%;TsvA3|w0F-EvXu3D(pT#txm|;^R)FC&>o$I$yK;B>;vRG)7R|Rg`cGqG z;P<)ei5KNW+q8H6Tlvi=*5>dzOFeYRwV zorOx}<0gx>3*(oc>faRR>EnIlJcrL~!~NeI&OEid{d5j<;33EDuTEdE{&!}fqx)Qy z3WdgBo#M=E%C{+3U07_ho3pIRqPlvKJPx{V>~fkJsAvSouiTlud)_2naLr?anhA!5}j(&go z%4S;S%!Z?h=XuP}uxU9h4A{pdxZ>Wta49RHm605i=B}6BD$By39`-h( z)2*@P)`wZeGNt#nIhm?x*CYx^l}U-McfJs|;Ry@J8W)B~+zk7^$gl=@$gUKQm}v2q zk41ND-mdGS{Y|waKYZr}4e?Lu6KaCGc;|bsxL2Oacf679f0n-= z7h}@3hM2Nr%^ypJGM+nhD7wo0)RJhrCd~Zo__pRu*3HXL&vkHe(TWz^_Q{6xOWnMu z;#Vd&7v^l&HPqd>ea|adjy1BS-=0pH<8f@6+M9=^JImgzOg-SXX5*S4uQeKz_@WKV z*ggsD?*C;`937jv-*86vmwk6`9t@c}jr~?%;}ms?;O5h(`$hEE?A~2eoEa6xDVkMd ze`axer`@DCB@_QF+!3-j^T_Mv z!77EsW#|6rRci@-ZCmJa_T%@%Hr3~?Dt@mrxGulMr^)w(R6423$rbL8GhWlbj#A@rX3pG8{Xxsoo1ZN(6#*68~qOk=gsVR^cKdgJ!g7) zi+Qk-_>wqhj(??=`}ltpbZ8##HUGPNcd?SyaX-r3Y;sHbo_`N6XTLhz=IE#;mR${Ds+*sVmP-E!!*pfXX$cO|3!Oe*b!B!N=`=tU^bF7 zG+(-Fj@ymAjFTQ`XJ6VS)0c8PgnOR9*~0Hn``Xgab-bC&>grNt&(|+L7~`Xd=pPK zKNmA(JGtgUY~G4bH%=9Yd~^6YMUS5~o}u%)Oyvi<>7m=2lQ2(T5-}gSPsF-A-w>svosN1DYe>S_vGnO-lKK(Ga z{a+=2lKgoSP&=)9HcQ2A?t?3;=dRryb?V8w+n$Y9c9j+Thq ztxSC_f+mw*zh1UcF2de%!SBgWTvM+$zPxp4^S#GeUkglAT3Ng&)xGNBTjfy2>H1bd zB>CSok=7&GY7-CrzSo!W^JF0NCG|$8?uj-ZyObA+f8E}8vzEJ`mzg>4iNLAf<;r7)D42?<-H#_ZkDrh3I zwSQmA_kxW~7alyQO?mQT-!09BNs~T={8%N@^w!5%>HhkcyF=OhvJdP!VAODLe%piJ zp63onPkJ%sFkkzc(E6jColBOOMjvfz-CY_#%~DnST*oD&e_wZhJ+HpfK_a!^)aTVz zUAfk8MICFV*4&FTy*zi)O=|(}Z~vHr>}@?)dob>~a%KA3S?i^nPpX7;O?J$9t=pK; z^i(9$Tl@T_BXWmk{_V(U-YDAb{32U-;VPGT{vW)v3TI0st`K?J)9>E=rM&ppp8Zcw z2N<0eWtx91rusXJljHryl9OTAoj8B-)V7@Ze&zD-z-{MOmp)zZ-zvB$yC_a^n}O$( z4Y$_qeh?V;O1Gl9b;G^y*+nU)x3zC-l)Xvt?Jwo5nHl<2`}B^3`#(&SsmWS5J;Zc> zexA%d;TvU#c%9gz@+_?1GL-gK_;&c+NVoKnki1!`ZT#(dG^fXBlWkg?)RnKQyWcSV z>hj`*+LfhxF-DeeJZ5&tMp>KgO-uP&V90cMqRoW58(rC-8mtcPa@;*RIDS?LN4?8r zr#Y^t|L0WC?f>(}_`;hUO~>XZTn?3=7+#cUWUp)R<=XXjLQ)2wZGP^x#nWb}ba=?d z&E)v8*4Mi5gt74}qxu&YIJynB7L;!Lx9i5qpjJ)6^*-n3tgXqARl`&nk8}`+hfIyFN?c!V&?8kE@@(Hh=wC zCFfxA1s8)p^Q(1-%q>Kkn9tem_GFkUuHYr4eERp*{^i|_KU`uJr!DFJXyF}tO8yC# z@%r~`lr@<*Oc34uZC`|CEYEMDS-x-ooW1Y%z{N*@ZHx5b=>kvF8!AK>@7=TKP_oSa z%?C~tbj;qcMOmPi^JqYbsFm~d_Dk2?6g%20w!2(E>US)~(J|nElEK=_{l6IIF)VYr zBoHGzOXV-?QduX8Wj{xREsv;H)zd6A1mqW>*En6V=GX8+~AyIZfx2FuBu+Pv3p z%RPR3sW|3UO)j~Df39iV-u0>D#p_)bA_oIzo$x&3>*;^^u6+e(r|-dKED44Eo`Na~ z$JCyw@RwH@cfI=cpChdQ@zGkF-@nx~EPv}NocaD}MSY}{=!TpQ)?#6)mQT!)Qa67-njVo)P?>N zTh%8g8z`*NZ~9Sg!QfnG-S$zz_`$3#yi9+T_qe(6sm<@2n0caU>XRtF@?M$wmn@Hl z9g*2}V}{6I;RSgU_Lv$c7p}ADt=xT6<&uA0pXXC z=6|?h>V*diehNL;8$R0bXUHUGL@WI9xw>}JH@OTZ-}CCbLMsGB(&}{>C3AS!7e2FG zDA=I$|F74bCAS@3)^r_MyE6LiKGp|Kc`wde27JAKwJ+IF%(>4iGVbJ?Nn3g5NG)<_ zsNcS?Vd4GFAEJ{Kt7Ce9{y4cMX}X}?xpgy}&--nRW4dvUCp9^mKd6s!iT974QGZTv zDPnSFXJLFWmrd=@j(p!WHx61XU;ntz=lX{C1)kBGHxIvdoM-=T%{rb>Zq;AsyySYr zz{;qye501E#M{K8ln`r+^Z(8qw-DAn>E*Vt(sO5w?E$$10c^jI`u3f@j~Oq2{*F)0&Z=Q#-umTq*2Guphgz1UxQIBbbp0)L|2idWmY2)M=(Uow zcMC>L=v?g7F}vKR=iK6LHRTQKK3<+AX?@qIS8vkgZxN-P8V97V&ti^cZ!?;@OXU3f zO-tmu6;w`aabPw0<}97$`I~35&pmFlsRvg-uvT}8D8273QRvslmc_WXtibKn?pZFC zrYxPCqwf3XZn-eSFZ5W0{?^2>uUS zXPtAJ`CA7uMM0Gs?bpIDD%6bc#CUF)|9JMqe&L5J0#eV#ZaaIn&UlLWF*zgYqfs_- z9mQqBC)X`|-pAbi^Nhj4H2Im;nh8bnJB~hZo0&ZOqSZ8^G?(KY>x3P7^cR1y5L$G3 z>&64AX?vc^F3|d_$Q${yx2AcsucMLbIcERGD$}itOO-BGY+QX?WRKPItfLz<#m}&G z{EW(+-J_Jd z*daCN{Ng-@S>HmI89Qw`s+QWRGOwxq+M$Sctvj>7=~yyO4LQC0gtc68o06}^whN7W z7$*iz+}3l?cmC_AjtQAl(}m91w0#NLF~3__w*6x~TkV2%%;!zwnTnFMKV3TX!=cf! z$z%2TZNJ@BLk?_8YB@KPBD8v|*`)(aYvz zU!B;Fc05}UoGkOPaAU=?9}74cwv;?I(oI+)ajf|`Ykkoa`9g-t)d_3*)eLO)j!7Gx zyHWIPf5*oc_0#8m%rZA9JjKIy$@{KT%2S3cmXp8a@|JonJfZo)(?U*a?qi1y*UwFK z^pII>BkobIee}WdF0Dd-tmoH>Eg>jGBXM`*vH{pP$-a-rN4jaM9IbuC@qoVFST;B>|zwLN#tr z@=jB&KlmV6ZvTy+HSz&RZ?8|%Rw+{Yo^H7N_?bS%iZ#X#6BnGi_q*>+?X>5~Hp&|^ zPq1fdesKJ4DL0krk@Ug4pNeuj10Bm=9EqLz{PVeU#!5o%UrT1psF-^AQO(?kKU<&G z^@v_%?>67t^8DzhkGV@q-Q&6&jJu=xN@kR#|GwoZ^8TO1$qqJ$#T)i*lj7h1UPnHD z!ivX74s7XStGD8mxbNmRD>?r5`}=NRdiV5qCo0CNFZ>!fzw-^l0g2<6g3p{iEyvJR z@-Ad!6(9RK{%5)>^4D24_sK0jVbQ*cJ=xLCmSx-4AA!x!EOV`AsqgRqRdhV$V!y$< zn;&1NF1A{bw(HD!i@wPv^O9eRTh`n-?D{S6SJ%0%)`t!H8yz&=6!-M)Us>=+H(tae zDq^Q=-P|V(%u@4Xc>DeH?s=)5?=}m$!WAdq;{AK}L&qOhf1Rek;M9H8aC^&)Q#FgP zbH{buTiti^k@#j`(Z_W<=Np-~zS3;D?dOql!{rZK?RodB>cW?12%cRP`gY+ef4|Rb zx2B6|ziR*4YkpYWWB;MPq;I+I^{!LWbMjLjO#XC^b64%stIGdgzvS~eVl~M>ZHppT zy%Rro+`sQKl6x=m@jqGBA{CZtpt?-)!TEO|Pu_X9+Q!{kY!mCO2aRv9XG@)6jxZ`+ z&{xWS_{Ma1vHoRd%666q?!^4v@{l2Po3Q+a`VCA6H{PxPFgN4coe!B-&m=kpH43eq zw{5fQyY=DiKSjmG9!~8{%dKuS81B5ZSz)&R5$%ozOPDQ{s#iC@du{mr8sB%f(;bph ziMuL}g}>ody&Lj_&E(S4H^=t1ZqquXrFDLuP1}TDFAbcwv)(LMyST&Y8?(r=85|W& zDiyy^|IsslDRt^F(`wbdZ=>G6iS{pHPVMNgJv;M_S=YH0Q%$U&-v0m2k2zhfh~<9U z{x?xSpSTK7e(mMvv--!$vO~E?6c}q>HTHffH#JGUv63rg=MS@|!oNxq7;eNJ-7qsP zFgh{!DgOr@?S_`^o-(!d=Yi1t$FxT0T+Y%riBf=x7(Zi`S#dpOQJYK|NYH*CX4s3 z4hjrh`ZX>-xS?BnoTU(H%*w& zf7^r&-3ps;sK{yum%K?V5S0CxsQx}~!Tw7Er?)@P$d9l;x+Ze2gH-P??bC~x9tzE4 zE}pV6_oZRiu`gb8lmAZb^O~%Y|MgeC zxoovtwbo$iHgx z5}&^3GHsWdV@`ZAmMM_#wQ*h|D*XRQ&$>8vw(yqxjO)h1@7di9HN@F|tUkF{D|JE4 zV|l*=49l&LrpHg+`NimH*Mf6!8BE{Aj?Up#&wk*QcTx4khUrI-qqKybsrWzEwD6biJ0?ta&yE? zTdf|MwG&G}@a?VK-l?!!=I7LtQ>$b8wzLIXGd_7VBK{C9UJ(`Vivm*>w(oVRW1 zq*e6-NfTE1^xw=<%vbsROyHx_n&O+L6XNycW>n8L*x+sMH@$FY@QL=r#r>By^xvW=E&Kj^p_M)rFFZ=3*KvI?@|nM&knv*V_UoqW-Y(Lyw(_JhNvQ^cR0&#sYv#@EA3?IxLV>!>9;T6naZSgKU|~S%0An6 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
    Zx&QNLI7foLjQb_8#x! zMX%4goe#@6)S!GPgV|^HzaBGP-TWVFcO#FtPd&0km7n`xQFy?npl_374~E~CyZ`d= zpFb4_y6(+tQb__G*Gyw9r=7eyNyJdF`GUv(jU0S0?JFx5zj26-tqq*CA-&yH?9#Pa z$BtiSIK95SA=cO;Mn$FOsrPFcl}H{I(cYc!-}ZO2B-gug&o@0;y70mJ#Q)NoM_5vJ z&DPPepBBg9r|lgwC3SbwZsxekNGtiiIkKnLME)t>+dqjx zEmE~Z@q=<)--9Fd@81MpGhSXZVRO5C?AiW=IX{Q@1C{p5lhDYoom~@R5FZ*=z`eRFGTj^W$a%)#P`Z3SBFttfVmT^+?fhqdk zYv#W#V{Hf!*!(LpsW|ph$9q*zfyC)@X|}mViX{e;d%nppH@c@$?iwq2`s%%nKg&ZN zS*~ym2r9gNB`R9ZXO;1~M}O~R*Bcy^`?K0J|6vGE{8xL+o31kJ=5va$ifg?-Fk#)- zKOBsKF`w6FCNqaWQLI>}6FSeKC?I0b&7X$N*%kr(CRIraZ$6y4lW7^3))jN?)Ok*Z zv^>{Ynej_DZuFhu_W9SkMXMGk`z?KKUTncNiIEH)Q zYZEozx7)bs?T*Z~p{kr(L5EY-)+9;#m%R>sc|f9LYVz^ems=~el@>G1cyqhQL~~-x z>K>I8|3fopRrm7;C$&Ac+WT2igw@C;==Fqk*Gsuho?GR$%^~*Mo6vymNA^g_^w;gV zo%8)Z?`a30que!m>p$KKSS9^K<-%Nk5y8m}>$ETIl8gV;Cp;;@ z^f{zu`78`4Ih}H0jGFgVJN#T}px;Klx4a2&c=$`V+v=Mox+hD{O^kTDL7*_}K+Q7= z&1)s)i4Si`oD#?@(5hL~bdY!6*$YO?yAM5hBPgD1zjbo`_eP=9yn%eo=6w(Q(HVN4!(#08UA=9El;lFd?NyrsdTbEN=OH&^6AN-`67O&K@Ea^bf*OcnC zkb42@(-zm-E%Kg`_r~eqG{uwrtnwcx)Xw3%?DdOr*OPBHTV~|-+%9oWp3$Q=%PaZv zU!^C{JtS7^wo27jonLljZ~0W6~H{@7ncp`Jw1F&W0z#4ez=!B%U$|q{rwh}=zBzm{IjoUcb@6A8|LVTwp`Q2D1UodpCfhD6 zm|5RAS^OEp3-90iuFhC+Kz>R~_K(DzdM5q0V5X1!?AnQO5u8&SQ!`E(zV!Zi?r_2! z+i^$593;AT(9}$C-utDol7v>KwG%3u*mpw z@9aoT-=`|_-*!07Dl|KH;k2l{@~I%6g06_)@$(Ju?wI-Ee(H}E0p{)Rc74)YUZ+&m z`!#KYm`C&E&V!QTF~?N%+l512%zI|;+Ff(AzG1g~d#~q#lWKQF+4c)Ox7;Vs{(r{T zMSH@}37ffZaf|Cx7CU+BovPR!!^-ShfzzLo5;p$iR6e7f&6>}5BcW@0q~4?emNlAb zlg=>guvYe!eD_VIZ`!Y?{kvHV|EhH;zDaPKXnlM7KZegHei?6mmD!)#wEcYg*BF)6 ze=NE#@385SG`;7xN%>7Q|H+C;k)BJ>tjt_5u&K?eyrTQ-j3pDyO!K7jR%_4Lacg%^ ztVH_Dls2DDF%eeFFFh&v_b6bk`g5zhD||T?U65C>&)6;gcGf$mZ4=yIR+*QnynAb_ z#rLH;{&p45``3a$e2%l9J>Ro#6~~X~8cnlTRo*r1EeM<=sWr|1^Yy?v`uc8xXB0T* z>|eLSxW%>6Z*7g&oR>$Hb(SAunDK1uwZ|oMwm;2iH_$umkX&q4*RWjd+FXWDrLLV> ze21=dJdkR=W3%s(#{W~dBl^!OKA7w9c&^iglG$ZR0z%(k%rfawW9Dd+(zFvcxcK+R z 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%0AwR75~8LJmO?_1{{+RXbyU*Y;o1Fks1hf^ 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�#@s0)9=3*yejUh)P3d2 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≶++k6!mA8OCc^lWhv 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%0A?Lnaj_kHIKKZuW$9du&-EG~oI%=yvonW~T&2A)e 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

    }s3YW`?R)Q+rEity*$&n@IQ@ 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

  2. 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 buIx`(xcQm%KU$v>2AS^Z>gTe~DWM4fRRsN% literal 0 HcmV?d00001 diff --git a/doc/src/JPG/cmake-gui-popup.png b/doc/src/JPG/cmake-gui-popup.png new file mode 100644 index 0000000000000000000000000000000000000000..d623aad30b4be2364a466fdde4af5241a0eb87dc GIT binary patch literal 35224 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 diff --git a/doc/src/Eqs/fix_nh1.tex b/doc/src/Eqs/fix_nh1.tex deleted file mode 100644 index 3e780f2772..0000000000 --- a/doc/src/Eqs/fix_nh1.tex +++ /dev/null @@ -1,36 +0,0 @@ -\documentclass[24pt]{article} - -\pagestyle{empty} -\Huge - -\begin{document} - -\mathchardef\mhyphen="2D - -% The imaginary unit -\providecommand*{\iu}% - {\ensuremath{{\rm i}}} - - -\begin{eqnarray*} -\exp \left(\iu{} L \Delta t \right) &=&Ê -\exp \left(\iu{} L_{\rm T\mhyphen baro} \frac{\Delta t}{2} \right) -\exp \left(\iu{} L_{\rm T\mhyphen part} \frac{\Delta t}{2} \right) -\exp \left(\iu{} L_{\epsilon , 2} \frac{\Delta t}{2} \right) -\exp \left(\iu{} L_{2}^{(2)} \frac{\Delta t}{2} \right) \\ -&&\times \left[ -\exp \left(\iu{} L_{2}^{(1)} \frac{\Delta t}{2n} \right) -\exp \left(\iu{} L_{\epsilon , 1} \frac{\Delta t}{2n} \right) -\exp \left(\iu{} L_1 \frac{\Delta t}{n} \right) -\exp \left(\iu{} L_{\epsilon , 1} \frac{\Delta t}{2n} \right) -\exp \left(\iu{} L_{2}^{(1)} \frac{\Delta t}{2n} \right) -\right]^n \\ -&&\times -\exp \left(\iu{} L_{2}^{(2)} \frac{\Delta t}{2} \right) -\exp \left(\iu{} L_{\epsilon , 2} \frac{\Delta t}{2} \right) -\exp \left(\iu{} L_{\rm T\mhyphen part} \frac{\Delta t}{2} \right) -\exp \left(\iu{} L_{\rm T\mhyphen baro} \frac{\Delta t}{2} \right) \\ -&&+ \mathcal{O} \left(\Delta t^3 \right) -\end{eqnarray*} - -\end{document} diff --git a/doc/src/Eqs/fix_nphug.jpg b/doc/src/Eqs/fix_nphug.jpg deleted file mode 100644 index a3a67e7b7bebc1e987f0cc415288967337770f2e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7506 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 Ye6ywOH(lKKyeKUYWloKXocjMa0X%q#5dZ)H diff --git a/doc/src/Eqs/fix_nphug.tex b/doc/src/Eqs/fix_nphug.tex deleted file mode 100644 index 4e162b69b7..0000000000 --- a/doc/src/Eqs/fix_nphug.tex +++ /dev/null @@ -1,9 +0,0 @@ -\documentstyle[12pt]{article} - -\begin{document} - -$$ -T_t - T = \frac{\left(\frac{1}{2}\left(P + P_0\right)\left(V_0 - V\right) + E_0 - E\right)}{N_{dof} k_B } = Delta -$$ - -\end{document} diff --git a/doc/src/Eqs/fix_orient_fcc.jpg b/doc/src/Eqs/fix_orient_fcc.jpg deleted file mode 100644 index b22e6c9c2056cdc4e7a28d1fb327e867741eec85..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26005 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